diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/acinclude.m4 ./bfd/acinclude.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/acinclude.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/acinclude.m4	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 dnl
-dnl   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+dnl   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 dnl
 dnl This file is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aix386-core.c ./bfd/aix386-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aix386-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/aix386-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,7 +1,7 @@
 /* BFD back-end for AIX on PS/2 core files.
    This was based on trad-core.c, which was written by John Gilmore of
 	Cygnus Support.
-   Copyright (C) 1988-2019 Free Software Foundation, Inc.
+   Copyright (C) 1988-2020 Free Software Foundation, Inc.
    Written by Minh Tran-Le <TRANLE@INTELLICORP.COM>.
    Converted to back end form by Ian Lance Taylor <ian@cygnus.com>.
 
@@ -65,13 +65,13 @@ struct trad_core_struct
   asection *sections[MAX_CORE_SEGS];
 };
 
-static const bfd_target *
+static bfd_cleanup
 aix386_core_file_p (bfd *abfd)
 {
   int i, n;
   unsigned char longbuf[4];	/* Raw bytes of various header fields */
   bfd_size_type core_size = sizeof (struct corehdr);
-  bfd_size_type amt;
+  size_t amt;
   struct corehdr *core;
   struct mergem
   {
@@ -189,7 +189,7 @@ aix386_core_file_p (bfd *abfd)
       n++;
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 static char *
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aix5ppc-core.c ./bfd/aix5ppc-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aix5ppc-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/aix5ppc-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* IBM RS/6000 "XCOFF" back-end for BFD.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
    Written by Tom Rix
    Contributed by Red Hat Inc.
 
@@ -23,7 +23,7 @@
 #include "sysdep.h"
 #include "bfd.h"
 
-const bfd_target *xcoff64_core_p (bfd *);
+bfd_cleanup xcoff64_core_p (bfd *);
 bfd_boolean xcoff64_core_file_matches_executable_p (bfd *, bfd *);
 char *xcoff64_core_file_failing_command (bfd *);
 int xcoff64_core_file_failing_signal (bfd *);
@@ -48,7 +48,7 @@ int xcoff64_core_file_failing_signal (bf
 #define CHECK_FILE_OFFSET(s, v) \
   ((bfd_signed_vma)(v) < 0 || (bfd_signed_vma)(v) > (bfd_signed_vma)(s).st_size)
 
-const bfd_target *
+bfd_cleanup
 xcoff64_core_p (bfd *abfd)
 {
   enum bfd_architecture arch;
@@ -60,7 +60,6 @@ xcoff64_core_p (bfd *abfd)
   bfd_vma ld_offset;
   bfd_size_type i;
   struct vm_infox vminfo;
-  const bfd_target *return_value = NULL;
   flagword flags;
 
   /* Get the header.  */
@@ -109,12 +108,12 @@ xcoff64_core_p (bfd *abfd)
     {
       bfd_set_error (bfd_error_file_truncated);
 
-      return return_value;
+      return NULL;
     }
 
   new_core_hdr = bfd_zalloc (abfd, sizeof (struct core_dumpxx));
   if (NULL == new_core_hdr)
-    return return_value;
+    return NULL;
 
   memcpy (new_core_hdr, &core, sizeof (struct core_dumpxx));
   /* The core_hdr() macro is no longer used here because it would
@@ -126,7 +125,7 @@ xcoff64_core_p (bfd *abfd)
   flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS;
   sec = bfd_make_section_anyway_with_flags (abfd, ".stack", flags);
   if (NULL == sec)
-    return return_value;
+    return NULL;
 
   sec->size = core.c_size;
   sec->vma = core.c_stackorg;
@@ -136,7 +135,7 @@ xcoff64_core_p (bfd *abfd)
   flags = SEC_HAS_CONTENTS | SEC_IN_MEMORY;
   sec = bfd_make_section_anyway_with_flags (abfd, ".reg", flags);
   if (NULL == sec)
-    return return_value;
+    return NULL;
 
   sec->size = sizeof (struct __context64);
   sec->vma = 0;
@@ -150,7 +149,7 @@ xcoff64_core_p (bfd *abfd)
   flags = SEC_HAS_CONTENTS;
   sec = bfd_make_section_anyway_with_flags (abfd, ".ldinfo", flags);
   if (NULL == sec)
-    return return_value;
+    return NULL;
 
   sec->size = core.c_lsize;
   sec->vma = 0;
@@ -164,7 +163,7 @@ xcoff64_core_p (bfd *abfd)
   flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS;
   sec = bfd_make_section_anyway_with_flags (abfd, ".data", flags);
   if (NULL == sec)
-    return return_value;
+    return NULL;
 
   sec->size = core.c_datasize;
   sec->vma = core.c_dataorg;
@@ -176,18 +175,18 @@ xcoff64_core_p (bfd *abfd)
   while (1)
     {
       if (bfd_seek (abfd, ld_offset, SEEK_SET) != 0)
-	return return_value;
+	return NULL;
 
       if (sizeof (struct __ld_info64) !=
 	  bfd_bread (&ldinfo, sizeof (struct __ld_info64), abfd))
-	return return_value;
+	return NULL;
 
       if (ldinfo.ldinfo_core)
 	{
 	  flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS;
 	  sec = bfd_make_section_anyway_with_flags (abfd, ".data", flags);
 	  if (NULL == sec)
-	    return return_value;
+	    return NULL;
 
 	  sec->size = ldinfo.ldinfo_datasize;
 	  sec->vma = ldinfo.ldinfo_dataorg;
@@ -203,19 +202,19 @@ xcoff64_core_p (bfd *abfd)
   if (core.c_vmregions)
     {
       if (bfd_seek (abfd, core.c_vmm, SEEK_SET) != 0)
-	return return_value;
+	return NULL;
 
       for (i = 0; i < core.c_vmregions; i++)
 	if (sizeof (struct vm_infox) !=
 	    bfd_bread (&vminfo, sizeof (struct vm_infox), abfd))
-	  return return_value;
+	  return NULL;
 
       if (vminfo.vminfo_offset)
 	{
 	  flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS;
 	  sec = bfd_make_section_anyway_with_flags (abfd, ".vmdata", flags);
 	  if (NULL == sec)
-	    return return_value;
+	    return NULL;
 
 	  sec->size = vminfo.vminfo_size;
 	  sec->vma = vminfo.vminfo_addr;
@@ -228,13 +227,13 @@ xcoff64_core_p (bfd *abfd)
   mach = DEFAULT_MACHINE;
   bfd_default_set_arch_mach (abfd, arch, mach);
 
-  return_value = (bfd_target *) abfd->xvec;	/* This is garbage for now.  */
+  return _bfd_no_cleanup;
 
  xcoff64_core_p_error:
   if (bfd_get_error () != bfd_error_system_call)
     bfd_set_error (bfd_error_wrong_format);
 
-  return return_value;
+  return NULL;
 }
 
 /* Return `TRUE' if given core is from the given executable.  */
@@ -289,11 +288,11 @@ xcoff64_core_file_matches_executable_p (
     }
 
   str1 = strrchr (path, '/');
-  str2 = strrchr (exec_bfd->filename, '/');
+  str2 = strrchr (bfd_get_filename (exec_bfd), '/');
 
   /* Step over character '/'.  */
   str1 = str1 != NULL ? str1 + 1 : path;
-  str2 = str2 != NULL ? str2 + 1 : exec_bfd->filename;
+  str2 = str2 != NULL ? str2 + 1 : bfd_get_filename (exec_bfd);
 
   if (strcmp (str1, str2) == 0)
     return_value = TRUE;
@@ -329,7 +328,7 @@ xcoff64_core_file_failing_signal (bfd *a
 
 #else /* AIX_5_CORE */
 
-const bfd_target *
+bfd_cleanup
 xcoff64_core_p (bfd *abfd ATTRIBUTE_UNUSED)
 {
   bfd_set_error (bfd_error_wrong_format);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout32.c ./bfd/aout32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/aout32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for 32-bit a.out files.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout64.c ./bfd/aout64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/aout64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for 64-bit a.out files.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -21,12 +21,4 @@
 
 #define ARCH_SIZE 64
 
-/* aoutx.h requires definitions for BMAGIC and QMAGIC.  */
-#ifndef BMAGIC
-#define BMAGIC 0
-#endif
-#ifndef QMAGIC
-#define QMAGIC 0
-#endif
-
 #include "aoutx.h"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout-cris.c ./bfd/aout-cris.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout-cris.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/aout-cris.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD backend for CRIS a.out binaries.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
    Contributed by Axis Communications AB.
    Written by Hans-Peter Nilsson.
 
@@ -56,9 +56,6 @@
 #define TARGET_PAGE_SIZE SEGMENT_SIZE
 #define TARGETNAME "a.out-cris"
 
-/* The definition here seems not used; just provided as a convention.  */
-#define DEFAULT_ARCH bfd_arch_cris
-
 /* Do not "beautify" the CONCAT* macro args.  Traditional C will not
    remove whitespace added here, and thus will fail to concatenate
    the tokens.  */
@@ -92,9 +89,8 @@ static bfd_boolean MY (set_sizes) (bfd *
    through SET_ARCH_MACH.  The default bfd_default_set_arch_mach will
    not call set_sizes.  */
 
-#define MY_set_arch_mach NAME (aout, set_arch_mach)
 #define SET_ARCH_MACH(BFD, EXECP) \
- MY_set_arch_mach (BFD, DEFAULT_ARCH, N_MACHTYPE (EXECP))
+  bfd_set_arch_mach (BFD, bfd_arch_cris, N_MACHTYPE (EXECP))
 
 /* These macros describe the binary layout of the reloc information we
    use in a file.  */
@@ -231,12 +227,14 @@ MY (swap_ext_reloc_in) (bfd *abfd,
   cache_ptr->address = (GET_SWORD (abfd, bytes->r_address));
 
   /* Now the fun stuff.  */
-  r_index =  (bytes->r_index[2] << 16)
-    | (bytes->r_index[1] << 8)
-    |  bytes->r_index[0];
+  r_index =  (((unsigned int) bytes->r_index[2] << 16)
+    | ((unsigned int) bytes->r_index[1] << 8)
+    |  bytes->r_index[0]);
+  
   r_extern = (0 != (bytes->r_type[0] & RELOC_EXT_BITS_EXTERN_LITTLE));
-  r_type = ((bytes->r_type[0]) >> RELOC_EXT_BITS_TYPE_SH_LITTLE)
-    & RELOC_EXT_BITS_TYPE_LITTLE;
+
+  r_type = ((bytes->r_type[0] & RELOC_EXT_BITS_TYPE_LITTLE)
+    >> RELOC_EXT_BITS_TYPE_SH_LITTLE);
 
   if (r_type > 2)
     {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout-ns32k.c ./bfd/aout-ns32k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout-ns32k.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/aout-ns32k.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for ns32k a.out-ish binaries.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Contributed by Ian Dall (idall@eleceng.adelaide.edu.au).
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout-target.h ./bfd/aout-target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout-target.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/aout-target.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Define a target vector and some small routines for a variant of a.out.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -34,7 +34,7 @@ extern reloc_howto_type * NAME (aout, re
    This routine is called from some_aout_object_p just before it returns.  */
 #ifndef MY_callback
 
-static const bfd_target *
+static bfd_cleanup
 MY (callback) (bfd *abfd)
 {
   struct internal_exec *execp = exec_hdr (abfd);
@@ -121,20 +121,20 @@ MY (callback) (bfd *abfd)
   /* Don't set sizes now -- can't be sure until we know arch & mach.
      Sizes get set in set_sizes callback, later.  */
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 #endif
 
 #ifndef MY_object_p
 /* Finish up the reading of an a.out file header.  */
 
-static const bfd_target *
+static bfd_cleanup
 MY (object_p) (bfd *abfd)
 {
   struct external_exec exec_bytes;	/* Raw exec header from file.  */
   struct internal_exec exec;		/* Cleaned-up exec header.  */
-  const bfd_target *target;
-  bfd_size_type amt = EXEC_BYTES_SIZE;
+  bfd_cleanup cleanup;
+  size_t amt = EXEC_BYTES_SIZE;
 
   if (bfd_bread ((void *) &exec_bytes, amt, abfd) != amt)
     {
@@ -164,7 +164,7 @@ MY (object_p) (bfd *abfd)
   exec.a_info = SWAP_MAGIC (exec_bytes.e_info);
 #endif
 
-  target = NAME (aout, some_aout_object_p) (abfd, &exec, MY (callback));
+  cleanup = NAME (aout, some_aout_object_p) (abfd, &exec, MY (callback));
 
 #ifdef ENTRY_CAN_BE_ZERO
   /* The NEWSOS3 entry-point is/was 0, which (amongst other lossage)
@@ -180,12 +180,13 @@ MY (object_p) (bfd *abfd)
 #ifndef S_IXUSR
 #define S_IXUSR 0100	/* Execute by owner.  */
 #endif
-      if (stat (abfd->filename, &buf) == 0 && (buf.st_mode & S_IXUSR))
+      if (stat (bfd_get_filename (abfd), &buf) == 0
+	  && (buf.st_mode & S_IXUSR) != 0)
 	abfd->flags |= EXEC_P;
     }
 #endif /* ENTRY_CAN_BE_ZERO */
 
-  return target;
+  return cleanup;
 }
 #define MY_object_p MY (object_p)
 #endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout-tic30.c ./bfd/aout-tic30.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aout-tic30.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/aout-tic30.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,1173 +0,0 @@
-/* BFD back-end for TMS320C30 a.out binaries.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
-   Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
-
-   This file is part of BFD, the Binary File Descriptor library.
-
-   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, write to the Free Software
-   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#define TARGET_IS_BIG_ENDIAN_P
-#define N_HEADER_IN_TEXT(x)	1
-#define TEXT_START_ADDR		1024
-#define TARGET_PAGE_SIZE	128
-#define SEGMENT_SIZE		TARGET_PAGE_SIZE
-#define DEFAULT_ARCH		bfd_arch_tic30
-#define ARCH_SIZE 32
-
-/* Do not "beautify" the CONCAT* macro args.  Traditional C will not
-   remove whitespace added here, and thus will fail to concatenate
-   the tokens.  */
-#define MY(OP) CONCAT2 (tic30_aout_,OP)
-#define TARGETNAME "a.out-tic30"
-#define NAME(x,y) CONCAT3 (tic30_aout,_32_,y)
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libaout.h"
-#include "aout/aout64.h"
-#include "aout/stab_gnu.h"
-#include "aout/ar.h"
-
-#define MY_reloc_howto(BFD, REL, IN, EX, PC)   tic30_aout_reloc_howto (BFD, REL, & IN, & EX, & PC)
-
-#define MY_final_link_relocate	  tic30_aout_final_link_relocate
-#define MY_object_p		  tic30_aout_object_p
-#define MY_mkobject		  NAME (aout,mkobject)
-#define MY_write_object_contents  tic30_aout_write_object_contents
-#define MY_set_sizes		  tic30_aout_set_sizes
-
-#ifndef MY_exec_hdr_flags
-#define MY_exec_hdr_flags 1
-#endif
-
-#ifndef MY_backend_data
-
-#ifndef MY_zmagic_contiguous
-#define MY_zmagic_contiguous 0
-#endif
-#ifndef MY_text_includes_header
-#define MY_text_includes_header 0
-#endif
-#ifndef MY_entry_is_text_address
-#define MY_entry_is_text_address 0
-#endif
-#ifndef MY_exec_header_not_counted
-#define MY_exec_header_not_counted 1
-#endif
-#ifndef MY_add_dynamic_symbols
-#define MY_add_dynamic_symbols 0
-#endif
-#ifndef MY_add_one_symbol
-#define MY_add_one_symbol 0
-#endif
-#ifndef MY_link_dynamic_object
-#define MY_link_dynamic_object 0
-#endif
-#ifndef MY_write_dynamic_symbol
-#define MY_write_dynamic_symbol 0
-#endif
-#ifndef MY_check_dynamic_reloc
-#define MY_check_dynamic_reloc 0
-#endif
-#ifndef MY_finish_dynamic_link
-#define MY_finish_dynamic_link 0
-#endif
-
-static bfd_boolean
-tic30_aout_set_sizes (bfd *abfd)
-{
-  adata (abfd).page_size = TARGET_PAGE_SIZE;
-
-#ifdef SEGMENT_SIZE
-  adata (abfd).segment_size = SEGMENT_SIZE;
-#else
-  adata (abfd).segment_size = TARGET_PAGE_SIZE;
-#endif
-
-#ifdef ZMAGIC_DISK_BLOCK_SIZE
-  adata (abfd).zmagic_disk_block_size = ZMAGIC_DISK_BLOCK_SIZE;
-#else
-  adata (abfd).zmagic_disk_block_size = TARGET_PAGE_SIZE;
-#endif
-
-  adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
-
-  return TRUE;
-}
-
-static const struct aout_backend_data tic30_aout_backend_data =
-{
-  MY_zmagic_contiguous,
-  MY_text_includes_header,
-  MY_entry_is_text_address,
-  MY_exec_hdr_flags,
-  0,				/* Text vma?  */
-  MY_set_sizes,
-  MY_exec_header_not_counted,
-  MY_add_dynamic_symbols,
-  MY_add_one_symbol,
-  MY_link_dynamic_object,
-  MY_write_dynamic_symbol,
-  MY_check_dynamic_reloc,
-  MY_finish_dynamic_link
-};
-#define MY_backend_data &tic30_aout_backend_data
-#endif
-
-static reloc_howto_type *
-  tic30_aout_reloc_howto (bfd *, struct reloc_std_external *, int *, int *, int *);
-static bfd_reloc_status_type
-  tic30_aout_final_link_relocate
-    (reloc_howto_type *, bfd *, asection *, bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-
-/* FIXME: This is wrong.  aoutx.h should really only be included by
-   aout32.c.  */
-
-#include "aoutx.h"
-
-/* This function is used to work out pc-relative offsets for the
-   TMS320C30.  The data already placed by md_pcrel_from within gas is
-   useless for a relocation, so we just get the offset value and place
-   a version of this within the object code.
-   tic30_aout_final_link_relocate will then calculate the required
-   relocation to add on to the value in the object code.  */
-
-static bfd_reloc_status_type
-tic30_aout_fix_pcrel_16 (bfd *abfd,
-			 arelent *reloc_entry,
-			 asymbol *symbol ATTRIBUTE_UNUSED,
-			 void * data,
-			 asection *input_section ATTRIBUTE_UNUSED,
-			 bfd *output_bfd ATTRIBUTE_UNUSED,
-			 char **error_message ATTRIBUTE_UNUSED)
-{
-  bfd_vma relocation = 1;
-  bfd_byte offset_data = bfd_get_8 (abfd, (bfd_byte *) data + reloc_entry->address - 1);
-
-  /* The byte before the location of the fix contains bits 23-16 of
-     the pcrel instruction.  Bit 21 is set for a delayed instruction
-     which requires on offset of 3 instead of 1.  */
-  if (offset_data & 0x20)
-    relocation -= 3;
-  else
-    relocation -= 1;
-  bfd_put_16 (abfd, relocation, (bfd_byte *) data + reloc_entry->address);
-  return bfd_reloc_ok;
-}
-
-/* This function is used as a callback for 16-bit relocs.  This is
-   required for relocations between segments.  A line in aoutx.h
-   requires that any relocations for the data section should point to
-   the end of the aligned text section, plus an offset.  By default,
-   this does not happen, therefore this function takes care of
-   that.  */
-
-static bfd_reloc_status_type
-tic30_aout_fix_16 (bfd *abfd,
-		   arelent *reloc_entry,
-		   asymbol *symbol,
-		   void * data,
-		   asection *input_section ATTRIBUTE_UNUSED,
-		   bfd *output_bfd,
-		   char **error_message ATTRIBUTE_UNUSED)
-{
-  bfd_vma relocation;
-
-  /* Make sure that the symbol's section is defined.  */
-  if (bfd_is_und_section (symbol->section) && (symbol->flags & BSF_WEAK) == 0)
-    return output_bfd ? bfd_reloc_ok : bfd_reloc_undefined;
-  /* Get the size of the input section and turn it into the TMS320C30
-     32-bit address format.  */
-  relocation = (symbol->section->vma >> 2);
-  relocation += bfd_get_16 (abfd, (bfd_byte *) data + reloc_entry->address);
-  bfd_put_16 (abfd, relocation, (bfd_byte *) data + reloc_entry->address);
-  return bfd_reloc_ok;
-}
-
-/* This function does the same thing as tic30_aout_fix_16 except for 32
-   bit relocations.  */
-
-static bfd_reloc_status_type
-tic30_aout_fix_32 (bfd *abfd,
-		   arelent *reloc_entry,
-		   asymbol *symbol,
-		   void * data,
-		   asection *input_section ATTRIBUTE_UNUSED,
-		   bfd *output_bfd,
-		   char **error_message ATTRIBUTE_UNUSED)
-{
-  bfd_vma relocation;
-
-  /* Make sure that the symbol's section is defined.  */
-  if (bfd_is_und_section (symbol->section) && (symbol->flags & BSF_WEAK) == 0)
-    return output_bfd ? bfd_reloc_ok : bfd_reloc_undefined;
-  /* Get the size of the input section and turn it into the TMS320C30
-     32-bit address format.  */
-  relocation = (symbol->section->vma >> 2);
-  relocation += bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
-  bfd_put_32 (abfd, relocation, (bfd_byte *) data + reloc_entry->address);
-  return bfd_reloc_ok;
-}
-
-/* This table lists the relocation types for the TMS320C30.  There are
-   only a few relocations required, and all must be divided by 4 (>>
-   2) to get the 32-bit addresses in the format the TMS320C30 likes
-   it.  */
-reloc_howto_type tic30_aout_howto_table[] =
-{
-  EMPTY_HOWTO (-1),
-  HOWTO (1, 2, 1, 16, FALSE, 0, 0, tic30_aout_fix_16,
-	 "16", FALSE, 0x0000FFFF, 0x0000FFFF, FALSE),
-  HOWTO (2, 2, 2, 24, FALSE, 0, complain_overflow_bitfield, NULL,
-	 "24", FALSE, 0x00FFFFFF, 0x00FFFFFF, FALSE),
-  HOWTO (3, 18, 3, 24, FALSE, 0, complain_overflow_bitfield, NULL,
-	 "LDP", FALSE, 0x00FF0000, 0x000000FF, FALSE),
-  HOWTO (4, 2, 4, 32, FALSE, 0, complain_overflow_bitfield, tic30_aout_fix_32,
-	 "32", FALSE, 0xFFFFFFFF, 0xFFFFFFFF, FALSE),
-  HOWTO (5, 2, 1, 16, TRUE, 0, complain_overflow_signed,
-	 tic30_aout_fix_pcrel_16, "PCREL", TRUE, 0x0000FFFF, 0x0000FFFF, TRUE),
-  EMPTY_HOWTO (-1),
-  EMPTY_HOWTO (-1),
-  EMPTY_HOWTO (-1),
-  EMPTY_HOWTO (-1),
-  EMPTY_HOWTO (-1)
-};
-
-
-static reloc_howto_type *
-tic30_aout_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-			      bfd_reloc_code_real_type code)
-{
-  switch (code)
-    {
-    case BFD_RELOC_8:
-    case BFD_RELOC_TIC30_LDP:
-      return &tic30_aout_howto_table[3];
-    case BFD_RELOC_16:
-      return &tic30_aout_howto_table[1];
-    case BFD_RELOC_24:
-      return &tic30_aout_howto_table[2];
-    case BFD_RELOC_16_PCREL:
-      return &tic30_aout_howto_table[5];
-    case BFD_RELOC_32:
-      return &tic30_aout_howto_table[4];
-    default:
-      return NULL;
-    }
-}
-
-static reloc_howto_type *
-tic30_aout_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-			      const char *r_name)
-{
-  unsigned int i;
-
-  for (i = 0;
-       i < (sizeof (tic30_aout_howto_table)
-	    / sizeof (tic30_aout_howto_table[0]));
-       i++)
-    if (tic30_aout_howto_table[i].name != NULL
-	&& strcasecmp (tic30_aout_howto_table[i].name, r_name) == 0)
-      return &tic30_aout_howto_table[i];
-
-  return NULL;
-}
-
-static reloc_howto_type *
-tic30_aout_reloc_howto (bfd *abfd,
-			struct reloc_std_external *relocs,
-			int *r_index,
-			int *r_extern,
-			int *r_pcrel)
-{
-  unsigned int r_length;
-  unsigned int r_pcrel_done;
-  int howto_index;
-
-  *r_pcrel = 0;
-  if (bfd_header_big_endian (abfd))
-    {
-      *r_index = ((relocs->r_index[0] << 16) | (relocs->r_index[1] << 8) | relocs->r_index[2]);
-      *r_extern = (0 != (relocs->r_type[0] & RELOC_STD_BITS_EXTERN_BIG));
-      r_pcrel_done = (0 != (relocs->r_type[0] & RELOC_STD_BITS_PCREL_BIG));
-      r_length = ((relocs->r_type[0] & RELOC_STD_BITS_LENGTH_BIG) >> RELOC_STD_BITS_LENGTH_SH_BIG);
-    }
-  else
-    {
-      *r_index = ((relocs->r_index[2] << 16) | (relocs->r_index[1] << 8) | relocs->r_index[0]);
-      *r_extern = (0 != (relocs->r_type[0] & RELOC_STD_BITS_EXTERN_LITTLE));
-      r_pcrel_done = (0 != (relocs->r_type[0] & RELOC_STD_BITS_PCREL_LITTLE));
-      r_length = ((relocs->r_type[0] & RELOC_STD_BITS_LENGTH_LITTLE) >> RELOC_STD_BITS_LENGTH_SH_LITTLE);
-    }
-  howto_index = r_length + 4 * r_pcrel_done;
-  return tic30_aout_howto_table + howto_index;
-}
-
-/* These macros will get 24-bit values from the bfd definition.
-   Big-endian only.  */
-#define bfd_getb_24(BFD,ADDR)			\
- (bfd_get_8 (BFD, ADDR    ) << 16) |		\
- (bfd_get_8 (BFD, ADDR + 1) <<  8) |		\
- (bfd_get_8 (BFD, ADDR + 2)      )
-
-#define bfd_putb_24(BFD,DATA,ADDR)				\
- bfd_put_8 (BFD, (bfd_byte) ((DATA >> 16) & 0xFF), ADDR	   );	\
- bfd_put_8 (BFD, (bfd_byte) ((DATA >>  8) & 0xFF), ADDR + 1);	\
- bfd_put_8 (BFD, (bfd_byte) ( DATA	  & 0xFF), ADDR + 2)
-
-/* Set parameters about this a.out file that are machine-dependent.
-   This routine is called from some_aout_object_p just before it returns.  */
-
-static const bfd_target *
-tic30_aout_callback (bfd *abfd)
-{
-  struct internal_exec *execp = exec_hdr (abfd);
-  unsigned int arch_align_power;
-  unsigned long arch_align;
-
-  /* Calculate the file positions of the parts of a newly read aout header.  */
-  obj_textsec (abfd)->size = N_TXTSIZE (execp);
-
-  /* The virtual memory addresses of the sections.  */
-  obj_textsec (abfd)->vma = N_TXTADDR (execp);
-  obj_datasec (abfd)->vma = N_DATADDR (execp);
-  obj_bsssec (abfd)->vma = N_BSSADDR (execp);
-
-  obj_textsec (abfd)->lma = obj_textsec (abfd)->vma;
-  obj_datasec (abfd)->lma = obj_datasec (abfd)->vma;
-  obj_bsssec (abfd)->lma = obj_bsssec (abfd)->vma;
-
-  /* The file offsets of the sections.  */
-  obj_textsec (abfd)->filepos = N_TXTOFF (execp);
-  obj_datasec (abfd)->filepos = N_DATOFF (execp);
-
-  /* The file offsets of the relocation info.  */
-  obj_textsec (abfd)->rel_filepos = N_TRELOFF (execp);
-  obj_datasec (abfd)->rel_filepos = N_DRELOFF (execp);
-
-  /* The file offsets of the string table and symbol table.  */
-  obj_sym_filepos (abfd) = N_SYMOFF (execp);
-  obj_str_filepos (abfd) = N_STROFF (execp);
-
-  /* Determine the architecture and machine type of the object file.  */
-#ifdef SET_ARCH_MACH
-  SET_ARCH_MACH (abfd, execp);
-#else
-  bfd_default_set_arch_mach (abfd, DEFAULT_ARCH, 0L);
-#endif
-
-  /* Now that we know the architecture, set the alignments of the
-     sections.  This is normally done by NAME (aout,new_section_hook),
-     but when the initial sections were created the architecture had
-     not yet been set.  However, for backward compatibility, we don't
-     set the alignment power any higher than as required by the size
-     of the section.  */
-  arch_align_power = bfd_get_arch_info (abfd)->section_align_power;
-  arch_align = 1 << arch_align_power;
-  if ((BFD_ALIGN (obj_textsec (abfd)->size, arch_align)
-       == obj_textsec (abfd)->size)
-      && (BFD_ALIGN (obj_datasec (abfd)->size, arch_align)
-	  == obj_datasec (abfd)->size)
-      && (BFD_ALIGN (obj_bsssec (abfd)->size, arch_align)
-	  == obj_bsssec (abfd)->size))
-    {
-      obj_textsec (abfd)->alignment_power = arch_align_power;
-      obj_datasec (abfd)->alignment_power = arch_align_power;
-      obj_bsssec (abfd)->alignment_power = arch_align_power;
-    }
-  return abfd->xvec;
-}
-
-static bfd_reloc_status_type
-tic30_aout_relocate_contents (reloc_howto_type *howto,
-			      bfd *input_bfd,
-			      bfd_vma relocation,
-			      bfd_byte *location)
-{
-  bfd_vma x;
-  bfd_boolean overflow;
-
-  if (howto->size < 0)
-    relocation = -relocation;
-
-  switch (howto->size)
-    {
-    default:
-    case 0:
-      abort ();
-      break;
-    case 1:
-      x = bfd_get_16 (input_bfd, location);
-      break;
-    case 2:
-      x = bfd_getb_24 (input_bfd, location);
-      break;
-    case 3:
-      x = bfd_get_8 (input_bfd, location);
-      break;
-    case 4:
-      x = bfd_get_32 (input_bfd, location);
-      break;
-    }
-
-  overflow = FALSE;
-
-  if (howto->complain_on_overflow != complain_overflow_dont)
-    {
-      bfd_vma check;
-      bfd_signed_vma signed_check;
-      bfd_vma add;
-      bfd_signed_vma signed_add;
-
-      if (howto->rightshift == 0)
-	{
-	  check = relocation;
-	  signed_check = (bfd_signed_vma) relocation;
-	}
-      else
-	{
-	  check = relocation >> howto->rightshift;
-	  if ((bfd_signed_vma) relocation >= 0)
-	    signed_check = check;
-	  else
-	    signed_check = (check | ((bfd_vma) - 1 & ~((bfd_vma) - 1 >> howto->rightshift)));
-	}
-      add = x & howto->src_mask;
-      signed_add = add;
-      if ((add & (((~howto->src_mask) >> 1) & howto->src_mask)) != 0)
-	signed_add -= (((~howto->src_mask) >> 1) & howto->src_mask) << 1;
-      if (howto->bitpos == 0)
-	{
-	  check += add;
-	  signed_check += signed_add;
-	}
-      else
-	{
-	  check += add >> howto->bitpos;
-	  if (signed_add >= 0)
-	    signed_check += add >> howto->bitpos;
-	  else
-	    signed_check += ((add >> howto->bitpos) | ((bfd_vma) - 1 & ~((bfd_vma) - 1 >> howto->bitpos)));
-	}
-      switch (howto->complain_on_overflow)
-	{
-	case complain_overflow_signed:
-	  {
-	    bfd_signed_vma reloc_signed_max = (1 << (howto->bitsize - 1)) - 1;
-	    bfd_signed_vma reloc_signed_min = ~reloc_signed_max;
-
-	    if (signed_check > reloc_signed_max || signed_check < reloc_signed_min)
-	      overflow = TRUE;
-	  }
-	  break;
-	case complain_overflow_unsigned:
-	  {
-	    bfd_vma reloc_unsigned_max = (((1 << (howto->bitsize - 1)) - 1) << 1) | 1;
-
-	    if (check > reloc_unsigned_max)
-	      overflow = TRUE;
-	  }
-	  break;
-	case complain_overflow_bitfield:
-	  {
-	    bfd_vma reloc_bits = (((1 << (howto->bitsize - 1)) - 1) << 1) | 1;
-
-	    if ((check & ~reloc_bits) != 0
-		&& (((bfd_vma) signed_check & ~reloc_bits)
-		    != ((bfd_vma) -1 & ~reloc_bits)))
-	      overflow = TRUE;
-	  }
-	  break;
-	default:
-	  abort ();
-	}
-    }
-  relocation >>= (bfd_vma) howto->rightshift;
-  relocation <<= (bfd_vma) howto->bitpos;
-  x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + relocation) & howto->dst_mask));
-  switch (howto->size)
-    {
-    default:
-    case 0:
-      abort ();
-      break;
-    case 1:
-      bfd_put_16 (input_bfd, x, location);
-      break;
-    case 2:
-      bfd_putb_24 (input_bfd, x, location);
-      break;
-    case 3:
-      bfd_put_8 (input_bfd, x, location);
-      break;
-    case 4:
-      bfd_put_32 (input_bfd, x, location);
-      break;
-    }
-  return overflow ? bfd_reloc_overflow : bfd_reloc_ok;
-}
-
-static bfd_reloc_status_type
-tic30_aout_final_link_relocate (reloc_howto_type *howto,
-				bfd *input_bfd,
-				asection *input_section,
-				bfd_byte *contents,
-				bfd_vma address,
-				bfd_vma value,
-				bfd_vma addend)
-{
-  bfd_vma relocation;
-
-  if (address > bfd_get_section_limit (input_bfd, input_section))
-    return bfd_reloc_outofrange;
-
-  relocation = value + addend;
-  if (howto->pc_relative)
-    {
-      relocation -= (input_section->output_section->vma + input_section->output_offset);
-      if (howto->pcrel_offset)
-	relocation -= address;
-    }
-  return tic30_aout_relocate_contents (howto, input_bfd, relocation,
-				       contents + address);
-}
-
-/* Finish up the reading of an a.out file header.  */
-
-static const bfd_target *
-tic30_aout_object_p (bfd *abfd)
-{
-  struct external_exec exec_bytes;	/* Raw exec header from file.  */
-  struct internal_exec exec;		/* Cleaned-up exec header.  */
-  const bfd_target *target;
-  bfd_size_type amt = EXEC_BYTES_SIZE;
-
-  if (bfd_bread (& exec_bytes, amt, abfd) != amt)
-    {
-      if (bfd_get_error () != bfd_error_system_call)
-	bfd_set_error (bfd_error_wrong_format);
-      return 0;
-    }
-
-#ifdef SWAP_MAGIC
-  exec.a_info = SWAP_MAGIC (exec_bytes.e_info);
-#else
-  exec.a_info = H_GET_32 (abfd, exec_bytes.e_info);
-#endif /* SWAP_MAGIC */
-
-  if (N_BADMAG (&exec))
-    return 0;
-#ifdef MACHTYPE_OK
-  if (!(MACHTYPE_OK (N_MACHTYPE (&exec))))
-    return 0;
-#endif
-
-  NAME (aout, swap_exec_header_in) (abfd, &exec_bytes, &exec);
-
-#ifdef SWAP_MAGIC
-  /* Swap_exec_header_in read in a_info with the wrong byte order.  */
-  exec.a_info = SWAP_MAGIC (exec_bytes.e_info);
-#endif
-
-  target = NAME (aout, some_aout_object_p) (abfd, &exec, tic30_aout_callback);
-
-#ifdef ENTRY_CAN_BE_ZERO
-  /* The NEWSOS3 entry-point is/was 0, which (amongst other lossage)
-     means that it isn't obvious if EXEC_P should be set.
-     All of the following must be true for an executable:
-     There must be no relocations, the bfd can be neither an
-     archive nor an archive element, and the file must be executable.  */
-
-  if (exec.a_trsize + exec.a_drsize == 0
-      && bfd_get_format (abfd) == bfd_object && abfd->my_archive == NULL)
-    {
-      struct stat buf;
-#ifndef S_IXUSR
-#define S_IXUSR 0100		/* Execute by owner.  */
-#endif
-      if (stat (abfd->filename, &buf) == 0 && (buf.st_mode & S_IXUSR))
-	abfd->flags |= EXEC_P;
-    }
-#endif
-
-  return target;
-}
-
-/* Copy private section data.  This actually does nothing with the
-   sections.  It copies the subformat field.  We copy it here, because
-   we need to know whether this is a QMAGIC file before we set the
-   section contents, and copy_private_bfd_data is not called until
-   after the section contents have been set.  */
-
-static bfd_boolean
-MY_bfd_copy_private_section_data (bfd *ibfd,
-				  asection *isec ATTRIBUTE_UNUSED,
-				  bfd *obfd,
-				  asection *osec ATTRIBUTE_UNUSED)
-{
-  if (bfd_get_flavour (obfd) == bfd_target_aout_flavour)
-    obj_aout_subformat (obfd) = obj_aout_subformat (ibfd);
-  return TRUE;
-}
-
-/* Write an object file.
-   Section contents have already been written.  We write the
-   file header, symbols, and relocation.  */
-
-static bfd_boolean
-tic30_aout_write_object_contents (bfd *abfd)
-{
-  struct external_exec exec_bytes;
-  struct internal_exec *execp = exec_hdr (abfd);
-
-  obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
-
-  {
-    if (adata (abfd).magic == undecided_magic)
-      NAME (aout, adjust_sizes_and_vmas) (abfd);
-
-    execp->a_syms = bfd_get_symcount (abfd) * EXTERNAL_NLIST_SIZE;
-    execp->a_entry = bfd_get_start_address (abfd);
-
-    execp->a_trsize = ((obj_textsec (abfd)->reloc_count) * obj_reloc_entry_size (abfd));
-    execp->a_drsize = ((obj_datasec (abfd)->reloc_count) * obj_reloc_entry_size (abfd));
-    NAME (aout, swap_exec_header_out) (abfd, execp, &exec_bytes);
-
-    if (adata (abfd).exec_bytes_size > 0)
-      {
-	bfd_size_type amt;
-
-	if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
-	  return FALSE;
-	amt = adata (abfd).exec_bytes_size;
-	if (bfd_bwrite (& exec_bytes, amt, abfd) != amt)
-	  return FALSE;
-      }
-
-    /* Now write out reloc info, followed by syms and strings.  */
-    if (bfd_get_outsymbols (abfd) != (asymbol **) NULL
-	&& bfd_get_symcount (abfd) != 0)
-      {
-	if (bfd_seek (abfd, (file_ptr) (N_SYMOFF (execp)), SEEK_SET) != 0)
-	  return FALSE;
-
-	if (!NAME (aout, write_syms) (abfd))
-	  return FALSE;
-      }
-
-    if (bfd_seek (abfd, (file_ptr) (N_TRELOFF (execp)), SEEK_SET) != 0)
-      return FALSE;
-    if (!NAME (aout, squirt_out_relocs) (abfd, obj_textsec (abfd)))
-      return FALSE;
-
-    if (bfd_seek (abfd, (file_ptr) (N_DRELOFF (execp)), SEEK_SET) != 0)
-      return FALSE;
-    if (!NAME (aout, squirt_out_relocs) (abfd, obj_datasec (abfd)))
-      return FALSE;
-  }
-
-  return TRUE;
-}
-
-#ifndef MY_final_link_callback
-
-/* Callback for the final_link routine to set the section offsets.  */
-
-static void
-MY_final_link_callback (bfd *abfd,
-			file_ptr *ptreloff,
-			file_ptr *pdreloff,
-			file_ptr *psymoff)
-{
-  struct internal_exec *execp = exec_hdr (abfd);
-
-  *ptreloff = obj_datasec (abfd)->filepos + execp->a_data;
-  *pdreloff = *ptreloff + execp->a_trsize;
-  *psymoff = *pdreloff + execp->a_drsize;
-}
-
-#endif
-
-#ifndef MY_bfd_final_link
-
-/* Final link routine.  We need to use a call back to get the correct
-   offsets in the output file.  */
-
-static bfd_boolean
-MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
-{
-  struct internal_exec *execp = exec_hdr (abfd);
-  asection *objsym_section;
-  file_ptr pos;
-  bfd_vma vma = 0;
-
-  /* Set the executable header size to 0, as we don't want one for an
-     output.  FIXME: Really?  tic30_aout_object_p doesn't accept such
-     an executable!  */
-  adata (abfd).exec_bytes_size = 0;
-
-  pos = adata (abfd).exec_bytes_size;
-  /* ??? Why are we looking at create_object_symbols_section?  */
-  objsym_section = info->create_object_symbols_section;
-  if (objsym_section != NULL)
-    vma = objsym_section->vma;
-
-  /* Text.  */
-  if (obj_textsec (abfd) != NULL)
-    {
-      pos += vma;
-      obj_textsec (abfd)->filepos = pos;
-      obj_textsec (abfd)->vma = vma;
-      obj_textsec (abfd)->user_set_vma = 1;
-      execp->a_text = obj_textsec (abfd)->size;
-      pos += obj_textsec (abfd)->size;
-      vma += obj_textsec (abfd)->size;
-    }
-
-  /* Data.  */
-  if (obj_datasec (abfd) != NULL)
-    {
-      if (abfd->flags & D_PAGED)
-	{
-	  if (objsym_section != NULL
-	      && objsym_section->next != NULL
-	      && objsym_section->next->vma != 0)
-	    obj_datasec (abfd)->vma = objsym_section->next->vma;
-	  else
-	    obj_datasec (abfd)->vma = BFD_ALIGN (vma, adata (abfd).segment_size);
-	}
-      else
-	obj_datasec (abfd)->vma = BFD_ALIGN (vma, 4);
-
-      if (obj_datasec (abfd)->vma < vma)
-	obj_datasec (abfd)->vma = BFD_ALIGN (vma, 4);
-
-      pos += obj_datasec (abfd)->vma - vma;
-      obj_datasec (abfd)->filepos = pos;
-      obj_datasec (abfd)->user_set_vma = 1;
-
-      vma = obj_datasec (abfd)->vma;
-      if (obj_textsec (abfd) != NULL)
-	{
-	  execp->a_text = vma - obj_textsec (abfd)->vma;
-	  obj_textsec (abfd)->size = execp->a_text;
-	}
-      execp->a_data = obj_datasec (abfd)->size;
-      vma += obj_datasec (abfd)->size;
-    }
-
-  /* Since BSS follows data immediately, see if it needs alignment.  */
-  if (obj_bsssec (abfd) != NULL)
-    {
-      int pad;
-
-      pad = align_power (vma, obj_bsssec (abfd)->alignment_power) - vma;
-      if (obj_datasec (abfd) != NULL)
-	{
-	  obj_datasec (abfd)->size += pad;
-	  execp->a_data += pad;
-	}
-      else if (obj_textsec (abfd) != NULL)
-	{
-	  obj_textsec (abfd)->size += pad;
-	  execp->a_text += pad;
-	}
-
-      /* BSS.  */
-      vma += pad;
-      obj_bsssec (abfd)->vma = vma;
-      obj_bsssec (abfd)->user_set_vma = 1;
-    }
-
-  /* We are fully resized, so don't readjust in final_link.  */
-  adata (abfd).magic = z_magic;
-
-  return NAME (aout, final_link) (abfd, info, MY_final_link_callback);
-}
-
-#endif
-
-static enum machine_type
-tic30_aout_machine_type (enum bfd_architecture arch,
-			 unsigned long machine ATTRIBUTE_UNUSED,
-			 bfd_boolean *unknown)
-{
-  enum machine_type arch_flags;
-
-  arch_flags = M_UNKNOWN;
-  *unknown = TRUE;
-
-  switch (arch)
-    {
-    case bfd_arch_tic30:
-      *unknown = FALSE;
-      break;
-    default:
-      arch_flags = M_UNKNOWN;
-    }
-  if (arch_flags != M_UNKNOWN)
-    *unknown = FALSE;
-  return arch_flags;
-}
-
-static bfd_boolean
-tic30_aout_set_arch_mach (bfd *abfd,
-			  enum bfd_architecture arch,
-			  unsigned long machine)
-{
-  if (!bfd_default_set_arch_mach (abfd, arch, machine))
-    return FALSE;
-  if (arch != bfd_arch_unknown)
-    {
-      bfd_boolean unknown;
-      tic30_aout_machine_type (arch, machine, &unknown);
-      if (unknown)
-	return FALSE;
-    }
-  obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
-  return (*aout_backend_info (abfd)->set_sizes) (abfd);
-}
-
-/* We assume BFD generic archive files.  */
-#ifndef	MY_openr_next_archived_file
-#define	MY_openr_next_archived_file	bfd_generic_openr_next_archived_file
-#endif
-#ifndef MY_get_elt_at_index
-#define MY_get_elt_at_index		_bfd_generic_get_elt_at_index
-#endif
-#ifndef	MY_generic_stat_arch_elt
-#define	MY_generic_stat_arch_elt	bfd_generic_stat_arch_elt
-#endif
-#ifndef	MY_slurp_armap
-#define	MY_slurp_armap			bfd_slurp_bsd_armap
-#endif
-#ifndef	MY_slurp_extended_name_table
-#define	MY_slurp_extended_name_table	_bfd_slurp_extended_name_table
-#endif
-#ifndef MY_construct_extended_name_table
-#define MY_construct_extended_name_table \
-  _bfd_archive_bsd_construct_extended_name_table
-#endif
-#ifndef	MY_write_armap
-#define	MY_write_armap			_bfd_bsd_write_armap
-#endif
-#ifndef MY_read_ar_hdr
-#define MY_read_ar_hdr			_bfd_generic_read_ar_hdr
-#endif
-#ifndef MY_write_ar_hdr
-#define MY_write_ar_hdr			_bfd_generic_write_ar_hdr
-#endif
-#ifndef	MY_truncate_arname
-#define	MY_truncate_arname		bfd_bsd_truncate_arname
-#endif
-#ifndef MY_update_armap_timestamp
-#define MY_update_armap_timestamp	_bfd_archive_bsd_update_armap_timestamp
-#endif
-
-/* No core file defined here -- configure in trad-core.c separately.  */
-#ifndef	MY_core_file_failing_command
-#define	MY_core_file_failing_command	_bfd_nocore_core_file_failing_command
-#endif
-#ifndef	MY_core_file_failing_signal
-#define	MY_core_file_failing_signal	_bfd_nocore_core_file_failing_signal
-#endif
-#ifndef	MY_core_file_matches_executable_p
-#define	MY_core_file_matches_executable_p	\
-				_bfd_nocore_core_file_matches_executable_p
-#endif
-#ifndef	MY_core_file_pid
-#define	MY_core_file_pid		_bfd_nocore_core_file_pid
-#endif
-#ifndef	MY_core_file_p
-#define	MY_core_file_p			_bfd_dummy_target
-#endif
-
-#ifndef MY_bfd_debug_info_start
-#define MY_bfd_debug_info_start		_bfd_void_bfd
-#endif
-#ifndef MY_bfd_debug_info_end
-#define MY_bfd_debug_info_end		_bfd_void_bfd
-#endif
-#ifndef MY_bfd_debug_info_accumulate
-#define MY_bfd_debug_info_accumulate	_bfd_void_bfd_asection
-#endif
-
-#ifndef MY_core_file_failing_command
-#define MY_core_file_failing_command NAME (aout, core_file_failing_command)
-#endif
-#ifndef MY_core_file_failing_signal
-#define MY_core_file_failing_signal NAME (aout, core_file_failing_signal)
-#endif
-#ifndef MY_core_file_matches_executable_p
-#define MY_core_file_matches_executable_p NAME (aout, core_file_matches_executable_p)
-#endif
-#ifndef MY_set_section_contents
-#define MY_set_section_contents NAME (aout, set_section_contents)
-#endif
-#ifndef MY_get_section_contents
-#define MY_get_section_contents aout_32_get_section_contents
-#endif
-#ifndef MY_get_section_contents_in_window
-#define MY_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
-#endif
-#ifndef MY_new_section_hook
-#define MY_new_section_hook NAME (aout, new_section_hook)
-#endif
-#ifndef MY_get_symtab_upper_bound
-#define MY_get_symtab_upper_bound NAME (aout, get_symtab_upper_bound)
-#endif
-#ifndef MY_canonicalize_symtab
-#define MY_canonicalize_symtab NAME (aout, canonicalize_symtab)
-#endif
-#ifndef MY_get_reloc_upper_bound
-#define MY_get_reloc_upper_bound NAME (aout, get_reloc_upper_bound)
-#endif
-#ifndef MY_canonicalize_reloc
-#define MY_canonicalize_reloc NAME (aout, canonicalize_reloc)
-#endif
-#ifndef MY_set_reloc
-#define MY_set_reloc _bfd_generic_set_reloc
-#endif
-#ifndef MY_make_empty_symbol
-#define MY_make_empty_symbol NAME (aout, make_empty_symbol)
-#endif
-#ifndef MY_print_symbol
-#define MY_print_symbol NAME (aout, print_symbol)
-#endif
-#ifndef MY_get_symbol_info
-#define MY_get_symbol_info NAME (aout, get_symbol_info)
-#endif
-#ifndef MY_get_symbol_version_string
-#define MY_get_symbol_version_string \
-  _bfd_nosymbols_get_symbol_version_string
-#endif
-#ifndef MY_get_lineno
-#define MY_get_lineno NAME (aout, get_lineno)
-#endif
-#ifndef MY_set_arch_mach
-#define MY_set_arch_mach tic30_aout_set_arch_mach
-#endif
-#ifndef MY_find_nearest_line
-#define MY_find_nearest_line NAME (aout, find_nearest_line)
-#endif
-#ifndef MY_find_line
-#define MY_find_line _bfd_nosymbols_find_line
-#endif
-#ifndef MY_find_inliner_info
-#define MY_find_inliner_info _bfd_nosymbols_find_inliner_info
-#endif
-#ifndef MY_sizeof_headers
-#define MY_sizeof_headers NAME (aout, sizeof_headers)
-#endif
-#ifndef MY_bfd_get_relocated_section_contents
-#define MY_bfd_get_relocated_section_contents \
-			bfd_generic_get_relocated_section_contents
-#endif
-#ifndef MY_bfd_relax_section
-#define MY_bfd_relax_section bfd_generic_relax_section
-#endif
-#ifndef MY_bfd_gc_sections
-#define MY_bfd_gc_sections bfd_generic_gc_sections
-#endif
-#ifndef MY_bfd_lookup_section_flags
-#define MY_bfd_lookup_section_flags bfd_generic_lookup_section_flags
-#endif
-#ifndef MY_bfd_merge_sections
-#define MY_bfd_merge_sections bfd_generic_merge_sections
-#endif
-#ifndef MY_bfd_is_group_section
-#define MY_bfd_is_group_section bfd_generic_is_group_section
-#endif
-#ifndef MY_bfd_group_name
-#define MY_bfd_group_name bfd_generic_group_name
-#endif
-#ifndef MY_bfd_discard_group
-#define MY_bfd_discard_group bfd_generic_discard_group
-#endif
-#ifndef MY_section_already_linked
-#define MY_section_already_linked \
-  _bfd_generic_section_already_linked
-#endif
-#ifndef MY_bfd_define_common_symbol
-#define MY_bfd_define_common_symbol bfd_generic_define_common_symbol
-#endif
-#ifndef MY_bfd_link_hide_symbol
-#define MY_bfd_link_hide_symbol _bfd_generic_link_hide_symbol
-#endif
-#ifndef MY_bfd_define_start_stop
-#define MY_bfd_define_start_stop bfd_generic_define_start_stop
-#endif
-#ifndef MY_bfd_reloc_type_lookup
-#define MY_bfd_reloc_type_lookup tic30_aout_reloc_type_lookup
-#endif
-#ifndef MY_bfd_reloc_name_lookup
-#define MY_bfd_reloc_name_lookup tic30_aout_reloc_name_lookup
-#endif
-#ifndef MY_bfd_make_debug_symbol
-#define MY_bfd_make_debug_symbol 0
-#endif
-#ifndef MY_read_minisymbols
-#define MY_read_minisymbols NAME (aout, read_minisymbols)
-#endif
-#ifndef MY_minisymbol_to_symbol
-#define MY_minisymbol_to_symbol NAME (aout, minisymbol_to_symbol)
-#endif
-#ifndef MY_bfd_link_hash_table_create
-#define MY_bfd_link_hash_table_create NAME (aout, link_hash_table_create)
-#endif
-#ifndef MY_bfd_link_add_symbols
-#define MY_bfd_link_add_symbols NAME (aout, link_add_symbols)
-#endif
-#ifndef MY_bfd_link_just_syms
-#define MY_bfd_link_just_syms _bfd_generic_link_just_syms
-#endif
-#ifndef MY_bfd_copy_link_hash_symbol_type
-#define MY_bfd_copy_link_hash_symbol_type \
-  _bfd_generic_copy_link_hash_symbol_type
-#endif
-#ifndef MY_bfd_link_split_section
-#define MY_bfd_link_split_section  _bfd_generic_link_split_section
-#endif
-
-#ifndef MY_bfd_link_check_relocs
-#define MY_bfd_link_check_relocs   _bfd_generic_link_check_relocs
-#endif
-
-#ifndef MY_bfd_copy_private_bfd_data
-#define MY_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data
-#endif
-
-#ifndef MY_bfd_merge_private_bfd_data
-#define MY_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data
-#endif
-
-#ifndef MY_bfd_copy_private_symbol_data
-#define MY_bfd_copy_private_symbol_data _bfd_generic_bfd_copy_private_symbol_data
-#endif
-
-#ifndef MY_bfd_copy_private_header_data
-#define MY_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data
-#endif
-
-#ifndef MY_bfd_print_private_bfd_data
-#define MY_bfd_print_private_bfd_data _bfd_generic_bfd_print_private_bfd_data
-#endif
-
-#ifndef MY_bfd_set_private_flags
-#define MY_bfd_set_private_flags _bfd_generic_bfd_set_private_flags
-#endif
-
-#ifndef MY_bfd_is_local_label_name
-#define MY_bfd_is_local_label_name bfd_generic_is_local_label_name
-#endif
-
-#ifndef MY_bfd_is_target_special_symbol
-#define MY_bfd_is_target_special_symbol _bfd_bool_bfd_asymbol_false
-#endif
-
-#ifndef MY_bfd_free_cached_info
-#define MY_bfd_free_cached_info NAME (aout, bfd_free_cached_info)
-#endif
-
-#ifndef MY_close_and_cleanup
-#define MY_close_and_cleanup MY_bfd_free_cached_info
-#endif
-
-#ifndef MY_get_dynamic_symtab_upper_bound
-#define MY_get_dynamic_symtab_upper_bound \
-  _bfd_nodynamic_get_dynamic_symtab_upper_bound
-#endif
-#ifndef MY_canonicalize_dynamic_symtab
-#define MY_canonicalize_dynamic_symtab \
-  _bfd_nodynamic_canonicalize_dynamic_symtab
-#endif
-#ifndef MY_get_synthetic_symtab
-#define MY_get_synthetic_symtab \
-  _bfd_nodynamic_get_synthetic_symtab
-#endif
-#ifndef MY_get_dynamic_reloc_upper_bound
-#define MY_get_dynamic_reloc_upper_bound \
-  _bfd_nodynamic_get_dynamic_reloc_upper_bound
-#endif
-#ifndef MY_canonicalize_dynamic_reloc
-#define MY_canonicalize_dynamic_reloc \
-  _bfd_nodynamic_canonicalize_dynamic_reloc
-#endif
-
-/* Aout symbols normally have leading underscores.  */
-#ifndef MY_symbol_leading_char
-#define MY_symbol_leading_char '_'
-#endif
-
-/* Aout archives normally use spaces for padding.  */
-#ifndef AR_PAD_CHAR
-#define AR_PAD_CHAR ' '
-#endif
-
-#ifndef MY_BFD_TARGET
-const bfd_target tic30_aout_vec =
-{
-  TARGETNAME,			/* Name.  */
-  bfd_target_aout_flavour,
-  BFD_ENDIAN_BIG,		/* Target byte order (big).  */
-  BFD_ENDIAN_BIG,		/* Target headers byte order (big).  */
-  (HAS_RELOC |			/* Object flags.  */
-   HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC),	/* Section flags.  */
-  MY_symbol_leading_char,
-  AR_PAD_CHAR,			/* AR_pad_char.  */
-  15,				/* AR_max_namelen.  */
-  0,				/* match priority.  */
-  bfd_getb64, bfd_getb_signed_64, bfd_putb64,
-  bfd_getb32, bfd_getb_signed_32, bfd_putb32,
-  bfd_getb16, bfd_getb_signed_16, bfd_putb16,	/* Data.  */
-  bfd_getb64, bfd_getb_signed_64, bfd_putb64,
-  bfd_getb32, bfd_getb_signed_32, bfd_putb32,
-  bfd_getb16, bfd_getb_signed_16, bfd_putb16,	/* Headers.  */
-  {				/* bfd_check_format.  */
-    _bfd_dummy_target,
-    MY_object_p,
-    bfd_generic_archive_p,
-    MY_core_file_p
-  },
-  {				/* bfd_set_format.  */
-    _bfd_bool_bfd_false_error,
-    MY_mkobject,
-    _bfd_generic_mkarchive,
-    _bfd_bool_bfd_false_error
-  },
-  {				/* bfd_write_contents.  */
-    _bfd_bool_bfd_false_error,
-    MY_write_object_contents,
-    _bfd_write_archive_contents,
-    _bfd_bool_bfd_false_error
-  },
-
-  BFD_JUMP_TABLE_GENERIC (MY),
-  BFD_JUMP_TABLE_COPY (MY),
-  BFD_JUMP_TABLE_CORE (MY),
-  BFD_JUMP_TABLE_ARCHIVE (MY),
-  BFD_JUMP_TABLE_SYMBOLS (MY),
-  BFD_JUMP_TABLE_RELOCS (MY),
-  BFD_JUMP_TABLE_WRITE (MY),
-  BFD_JUMP_TABLE_LINK (MY),
-  BFD_JUMP_TABLE_DYNAMIC (MY),
-
-  NULL,
-
-  MY_backend_data
-};
-#endif /* MY_BFD_TARGET */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aoutx.h ./bfd/aoutx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/aoutx.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/aoutx.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD semi-generic back-end for a.out binaries.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -128,6 +128,18 @@ DESCRIPTION
 #include "aout/stab_gnu.h"
 #include "aout/ar.h"
 
+#ifdef BMAGIC
+#define N_IS_BMAGIC(x) (N_MAGIC (x) == BMAGIC)
+#else
+#define N_IS_BMAGIC(x) (0)
+#endif
+
+#ifdef QMAGIC
+#define N_SET_QMAGIC(x) N_SET_MAGIC (x, QMAGIC)
+#else
+#define N_SET_QMAGIC(x) do { /**/ } while (0)
+#endif
+
 /*
 SUBSECTION
 	Relocations
@@ -452,14 +464,14 @@ DESCRIPTION
 	handle any last-minute setup.
 */
 
-const bfd_target *
+bfd_cleanup
 NAME (aout, some_aout_object_p) (bfd *abfd,
 				 struct internal_exec *execp,
-				 const bfd_target *(*callback_to_real_object_p) (bfd *))
+				 bfd_cleanup (*callback_to_real_object_p) (bfd *))
 {
   struct aout_data_struct *rawptr, *oldrawptr;
-  const bfd_target *result;
-  bfd_size_type amt = sizeof (* rawptr);
+  bfd_cleanup result;
+  size_t amt = sizeof (* rawptr);
 
   rawptr = (struct aout_data_struct *) bfd_zalloc (abfd, amt);
   if (rawptr == NULL)
@@ -492,7 +504,7 @@ NAME (aout, some_aout_object_p) (bfd *ab
       abfd->flags |= D_PAGED | WP_TEXT;
       adata (abfd).magic = z_magic;
     }
-  else if (N_MAGIC (execp) == QMAGIC)
+  else if (N_IS_QMAGIC (execp))
     {
       abfd->flags |= D_PAGED | WP_TEXT;
       adata (abfd).magic = z_magic;
@@ -503,8 +515,7 @@ NAME (aout, some_aout_object_p) (bfd *ab
       abfd->flags |= WP_TEXT;
       adata (abfd).magic = n_magic;
     }
-  else if (N_MAGIC (execp) == OMAGIC
-	   || N_MAGIC (execp) == BMAGIC)
+  else if (N_MAGIC (execp) == OMAGIC || N_IS_BMAGIC (execp))
     adata (abfd).magic = o_magic;
   else
     /* Should have been checked with N_BADMAG before this routine
@@ -591,7 +602,7 @@ NAME (aout, some_aout_object_p) (bfd *ab
   adata (abfd)->segment_size = SEGMENT_SIZE;
   adata (abfd)->exec_bytes_size = EXEC_BYTES_SIZE;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup
 
   /* The architecture is encoded in various ways in various a.out variants,
      or is not encoded at all in some of them.  The relocation size depends
@@ -671,7 +682,7 @@ bfd_boolean
 NAME (aout, mkobject) (bfd *abfd)
 {
   struct aout_data_struct *rawptr;
-  bfd_size_type amt = sizeof (* rawptr);
+  size_t amt = sizeof (* rawptr);
 
   bfd_set_error (bfd_error_system_call);
 
@@ -891,57 +902,56 @@ adjust_o_magic (bfd *abfd, struct intern
   file_ptr pos = adata (abfd).exec_bytes_size;
   bfd_vma vma = 0;
   int pad = 0;
+  asection *text = obj_textsec (abfd);
+  asection *data = obj_datasec (abfd);
+  asection *bss = obj_bsssec (abfd);
 
   /* Text.  */
-  obj_textsec (abfd)->filepos = pos;
-  if (!obj_textsec (abfd)->user_set_vma)
-    obj_textsec (abfd)->vma = vma;
+  text->filepos = pos;
+  if (!text->user_set_vma)
+    text->vma = vma;
   else
-    vma = obj_textsec (abfd)->vma;
+    vma = text->vma;
 
-  pos += obj_textsec (abfd)->size;
-  vma += obj_textsec (abfd)->size;
+  pos += execp->a_text;
+  vma += execp->a_text;
 
   /* Data.  */
-  if (!obj_datasec (abfd)->user_set_vma)
+  if (!data->user_set_vma)
     {
-      obj_textsec (abfd)->size += pad;
       pos += pad;
       vma += pad;
-      obj_datasec (abfd)->vma = vma;
+      data->vma = vma;
     }
   else
-    vma = obj_datasec (abfd)->vma;
-  obj_datasec (abfd)->filepos = pos;
-  pos += obj_datasec (abfd)->size;
-  vma += obj_datasec (abfd)->size;
+    vma = data->vma;
+  execp->a_text += pad;
+
+  data->filepos = pos;
+  pos += data->size;
+  vma += data->size;
 
   /* BSS.  */
-  if (!obj_bsssec (abfd)->user_set_vma)
+  if (!bss->user_set_vma)
     {
-      obj_datasec (abfd)->size += pad;
       pos += pad;
       vma += pad;
-      obj_bsssec (abfd)->vma = vma;
+      bss->vma = vma;
     }
   else
     {
       /* The VMA of the .bss section is set by the VMA of the
 	 .data section plus the size of the .data section.  We may
 	 need to add padding bytes to make this true.  */
-      pad = obj_bsssec (abfd)->vma - vma;
-      if (pad > 0)
-	{
-	  obj_datasec (abfd)->size += pad;
-	  pos += pad;
-	}
+      pad = bss->vma - vma;
+      if (pad < 0)
+	pad = 0;
+      pos += pad;
     }
-  obj_bsssec (abfd)->filepos = pos;
+  execp->a_data = data->size + pad;
+  bss->filepos = pos;
+  execp->a_bss = bss->size;
 
-  /* Fix up the exec header.  */
-  execp->a_text = obj_textsec (abfd)->size;
-  execp->a_data = obj_datasec (abfd)->size;
-  execp->a_bss = obj_bsssec (abfd)->size;
   N_SET_MAGIC (execp, OMAGIC);
 }
 
@@ -953,6 +963,9 @@ adjust_z_magic (bfd *abfd, struct intern
   const struct aout_backend_data *abdp;
   /* TRUE if text includes exec header.  */
   bfd_boolean ztih;
+  asection *text = obj_textsec (abfd);
+  asection *data = obj_datasec (abfd);
+  asection *bss = obj_bsssec (abfd);
 
   abdp = aout_backend_info (abfd);
 
@@ -960,18 +973,17 @@ adjust_z_magic (bfd *abfd, struct intern
   ztih = (abdp != NULL
 	  && (abdp->text_includes_header
 	      || obj_aout_subformat (abfd) == q_magic_format));
-  obj_textsec (abfd)->filepos = (ztih
-				 ? adata (abfd).exec_bytes_size
-				 : adata (abfd).zmagic_disk_block_size);
-  if (! obj_textsec (abfd)->user_set_vma)
+  text->filepos = (ztih
+		   ? adata (abfd).exec_bytes_size
+		   : adata (abfd).zmagic_disk_block_size);
+  if (!text->user_set_vma)
     {
       /* ?? Do we really need to check for relocs here?  */
-      obj_textsec (abfd)->vma = ((abfd->flags & HAS_RELOC)
-				 ? 0
-				 : (ztih
-				    ? (abdp->default_text_vma
-				       + adata (abfd).exec_bytes_size)
-				    : abdp->default_text_vma));
+      text->vma = ((abfd->flags & HAS_RELOC)
+		   ? 0
+		   : (ztih
+		      ? abdp->default_text_vma + adata (abfd).exec_bytes_size
+		      : abdp->default_text_vma));
       text_pad = 0;
     }
   else
@@ -980,17 +992,17 @@ adjust_z_magic (bfd *abfd, struct intern
 	 may need to pad it such that the .data section starts at a page
 	 boundary.  */
       if (ztih)
-	text_pad = ((obj_textsec (abfd)->filepos - obj_textsec (abfd)->vma)
+	text_pad = ((text->filepos - text->vma)
 		    & (adata (abfd).page_size - 1));
       else
-	text_pad = ((- obj_textsec (abfd)->vma)
+	text_pad = (-text->vma
 		    & (adata (abfd).page_size - 1));
     }
 
   /* Find start of data.  */
   if (ztih)
     {
-      text_end = obj_textsec (abfd)->filepos + obj_textsec (abfd)->size;
+      text_end = text->filepos + execp->a_text;
       text_pad += BFD_ALIGN (text_end, adata (abfd).page_size) - text_end;
     }
   else
@@ -998,55 +1010,45 @@ adjust_z_magic (bfd *abfd, struct intern
       /* Note that if page_size == zmagic_disk_block_size, then
 	 filepos == page_size, and this case is the same as the ztih
 	 case.  */
-      text_end = obj_textsec (abfd)->size;
+      text_end = execp->a_text;
       text_pad += BFD_ALIGN (text_end, adata (abfd).page_size) - text_end;
-      text_end += obj_textsec (abfd)->filepos;
+      text_end += text->filepos;
     }
-  obj_textsec (abfd)->size += text_pad;
-  text_end += text_pad;
+  execp->a_text += text_pad;
 
   /* Data.  */
-  if (!obj_datasec (abfd)->user_set_vma)
+  if (!data->user_set_vma)
     {
       bfd_vma vma;
-      vma = obj_textsec (abfd)->vma + obj_textsec (abfd)->size;
-      obj_datasec (abfd)->vma = BFD_ALIGN (vma, adata (abfd).segment_size);
+      vma = text->vma + execp->a_text;
+      data->vma = BFD_ALIGN (vma, adata (abfd).segment_size);
     }
   if (abdp && abdp->zmagic_mapped_contiguous)
     {
-      asection * text = obj_textsec (abfd);
-      asection * data = obj_datasec (abfd);
-
-      text_pad = data->vma - (text->vma + text->size);
+      text_pad = data->vma - (text->vma + execp->a_text);
       /* Only pad the text section if the data
 	 section is going to be placed after it.  */
       if (text_pad > 0)
-	text->size += text_pad;
+	execp->a_text += text_pad;
     }
-  obj_datasec (abfd)->filepos = (obj_textsec (abfd)->filepos
-				 + obj_textsec (abfd)->size);
+  data->filepos = text->filepos + execp->a_text;
 
   /* Fix up exec header while we're at it.  */
-  execp->a_text = obj_textsec (abfd)->size;
   if (ztih && (!abdp || (abdp && !abdp->exec_header_not_counted)))
     execp->a_text += adata (abfd).exec_bytes_size;
   if (obj_aout_subformat (abfd) == q_magic_format)
-    N_SET_MAGIC (execp, QMAGIC);
+    N_SET_QMAGIC (execp);
   else
     N_SET_MAGIC (execp, ZMAGIC);
 
   /* Spec says data section should be rounded up to page boundary.  */
-  obj_datasec (abfd)->size
-    = align_power (obj_datasec (abfd)->size,
-		   obj_bsssec (abfd)->alignment_power);
-  execp->a_data = BFD_ALIGN (obj_datasec (abfd)->size,
-			     adata (abfd).page_size);
-  data_pad = execp->a_data - obj_datasec (abfd)->size;
+  execp->a_data = align_power (data->size, bss->alignment_power);
+  execp->a_data = BFD_ALIGN (execp->a_data, adata (abfd).page_size);
+  data_pad = execp->a_data - data->size;
 
   /* BSS.  */
-  if (!obj_bsssec (abfd)->user_set_vma)
-    obj_bsssec (abfd)->vma = (obj_datasec (abfd)->vma
-			      + obj_datasec (abfd)->size);
+  if (!bss->user_set_vma)
+    bss->vma = data->vma + execp->a_data;
   /* If the BSS immediately follows the data section and extra space
      in the page is left after the data section, fudge data
      in the header so that the bss section looks smaller by that
@@ -1054,12 +1056,10 @@ adjust_z_magic (bfd *abfd, struct intern
      (Note that a linker script, as well as the above assignment,
      could have explicitly set the BSS vma to immediately follow
      the data section.)  */
-  if (align_power (obj_bsssec (abfd)->vma, obj_bsssec (abfd)->alignment_power)
-      == obj_datasec (abfd)->vma + obj_datasec (abfd)->size)
-    execp->a_bss = (data_pad > obj_bsssec (abfd)->size
-		    ? 0 : obj_bsssec (abfd)->size - data_pad);
+  if (align_power (bss->vma, bss->alignment_power) == data->vma + execp->a_data)
+    execp->a_bss = data_pad > bss->size ? 0 : bss->size - data_pad;
   else
-    execp->a_bss = obj_bsssec (abfd)->size;
+    execp->a_bss = bss->size;
 }
 
 static void
@@ -1068,38 +1068,39 @@ adjust_n_magic (bfd *abfd, struct intern
   file_ptr pos = adata (abfd).exec_bytes_size;
   bfd_vma vma = 0;
   int pad;
+  asection *text = obj_textsec (abfd);
+  asection *data = obj_datasec (abfd);
+  asection *bss = obj_bsssec (abfd);
 
   /* Text.  */
-  obj_textsec (abfd)->filepos = pos;
-  if (!obj_textsec (abfd)->user_set_vma)
-    obj_textsec (abfd)->vma = vma;
+  text->filepos = pos;
+  if (!text->user_set_vma)
+    text->vma = vma;
   else
-    vma = obj_textsec (abfd)->vma;
-  pos += obj_textsec (abfd)->size;
-  vma += obj_textsec (abfd)->size;
+    vma = text->vma;
+  pos += execp->a_text;
+  vma += execp->a_text;
 
   /* Data.  */
-  obj_datasec (abfd)->filepos = pos;
-  if (!obj_datasec (abfd)->user_set_vma)
-    obj_datasec (abfd)->vma = BFD_ALIGN (vma, adata (abfd).segment_size);
-  vma = obj_datasec (abfd)->vma;
+  data->filepos = pos;
+  if (!data->user_set_vma)
+    data->vma = BFD_ALIGN (vma, adata (abfd).segment_size);
+  vma = data->vma;
 
   /* Since BSS follows data immediately, see if it needs alignment.  */
-  vma += obj_datasec (abfd)->size;
-  pad = align_power (vma, obj_bsssec (abfd)->alignment_power) - vma;
-  obj_datasec (abfd)->size += pad;
-  pos += obj_datasec (abfd)->size;
+  vma += data->size;
+  pad = align_power (vma, bss->alignment_power) - vma;
+  execp->a_data = data->size + pad;
+  pos += execp->a_data;
 
   /* BSS.  */
-  if (!obj_bsssec (abfd)->user_set_vma)
-    obj_bsssec (abfd)->vma = vma;
+  if (!bss->user_set_vma)
+    bss->vma = vma;
   else
-    vma = obj_bsssec (abfd)->vma;
+    vma = bss->vma;
 
   /* Fix up exec header.  */
-  execp->a_text = obj_textsec (abfd)->size;
-  execp->a_data = obj_datasec (abfd)->size;
-  execp->a_bss = obj_bsssec (abfd)->size;
+  execp->a_bss = bss->size;
   N_SET_MAGIC (execp, NMAGIC);
 }
 
@@ -1114,9 +1115,8 @@ NAME (aout, adjust_sizes_and_vmas) (bfd
   if (adata (abfd).magic != undecided_magic)
     return TRUE;
 
-  obj_textsec (abfd)->size =
-    align_power (obj_textsec (abfd)->size,
-		 obj_textsec (abfd)->alignment_power);
+  execp->a_text = align_power (obj_textsec (abfd)->size,
+			       obj_textsec (abfd)->alignment_power);
 
   /* Rule (heuristic) for when to pad to a new page.  Note that there
      are (at least) two ways demand-paged (ZMAGIC) files have been
@@ -1181,11 +1181,11 @@ NAME (aout, adjust_sizes_and_vmas) (bfd
 
 #ifdef BFD_AOUT_DEBUG
   fprintf (stderr, "       text=<%x,%x,%x> data=<%x,%x,%x> bss=<%x,%x>\n",
-	   obj_textsec (abfd)->vma, obj_textsec (abfd)->size,
+	   obj_textsec (abfd)->vma, execp->a_text,
 		obj_textsec (abfd)->filepos,
-	   obj_datasec (abfd)->vma, obj_datasec (abfd)->size,
+	   obj_datasec (abfd)->vma, execp->a_data,
 		obj_datasec (abfd)->filepos,
-	   obj_bsssec (abfd)->vma, obj_bsssec (abfd)->size);
+	   obj_bsssec (abfd)->vma, execp->a_bss);
 #endif
 
   return TRUE;
@@ -1303,16 +1303,11 @@ aout_get_external_symbols (bfd *abfd)
       /* We allocate using malloc to make the values easy to free
 	 later on.  If we put them on the objalloc it might not be
 	 possible to free them.  */
-      syms = (struct external_nlist *) bfd_malloc (amt);
+      if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
+	return FALSE;
+      syms = (struct external_nlist *) _bfd_malloc_and_read (abfd, amt, amt);
       if (syms == NULL)
 	return FALSE;
-
-      if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
-	  || bfd_bread (syms, amt, abfd) != amt)
-	{
-	  free (syms);
-	  return FALSE;
-	}
 #endif
 
       obj_aout_external_syms (abfd) = syms;
@@ -1675,7 +1670,7 @@ translate_to_native_sym_flags (bfd *abfd
 asymbol *
 NAME (aout, make_empty_symbol) (bfd *abfd)
 {
-  bfd_size_type amt = sizeof (aout_symbol_type);
+  size_t amt = sizeof (aout_symbol_type);
 
   aout_symbol_type *new_symbol = (aout_symbol_type *) bfd_zalloc (abfd, amt);
   if (!new_symbol)
@@ -1685,7 +1680,7 @@ NAME (aout, make_empty_symbol) (bfd *abf
   return &new_symbol->symbol;
 }
 
-/* Translate a set of internal symbols into external symbols.  */
+/* Translate a set of external symbols into internal symbols.  */
 
 bfd_boolean
 NAME (aout, translate_symbol_table) (bfd *abfd,
@@ -1852,7 +1847,7 @@ static bfd_boolean
 emit_stringtab (bfd *abfd, struct bfd_strtab_hash *tab)
 {
   bfd_byte buffer[BYTES_IN_WORD];
-  bfd_size_type amt = BYTES_IN_WORD;
+  size_t amt = BYTES_IN_WORD;
 
   /* The string table starts with the size.  */
   PUT_WORD (abfd, _bfd_stringtab_size (tab) + BYTES_IN_WORD, buffer);
@@ -1878,7 +1873,7 @@ NAME (aout, write_syms) (bfd *abfd)
       asymbol *g = generic[count];
       bfd_size_type indx;
       struct external_nlist nsp;
-      bfd_size_type amt;
+      size_t amt;
 
       indx = add_to_stringtab (abfd, strtab, g->name, FALSE);
       if (indx == (bfd_size_type) -1)
@@ -1917,7 +1912,7 @@ NAME (aout, write_syms) (bfd *abfd)
 
   return TRUE;
 
-error_return:
+ error_return:
   _bfd_stringtab_free (strtab);
   return FALSE;
 }
@@ -1961,7 +1956,24 @@ NAME (aout, swap_std_reloc_out) (bfd *ab
   PUT_WORD (abfd, g->address, natptr->r_address);
 
   BFD_ASSERT (g->howto != NULL);
-  r_length = g->howto->size ;	/* Size as a power of two.  */
+
+  switch (bfd_get_reloc_size (g->howto))
+    {
+    default:
+      _bfd_error_handler (_("%pB: unsupported AOUT relocation size: %d"),
+			  abfd, bfd_get_reloc_size (g->howto));
+      bfd_set_error (bfd_error_bad_value);
+      return;
+    case 1:
+    case 2:
+    case 4:
+      r_length = g->howto->size;	/* Size as a power of two.  */
+      break;
+    case 8:
+      r_length = 3;
+      break;
+    }
+
   r_pcrel  = (int) g->howto->pc_relative; /* Relative to PC?  */
   /* XXX This relies on relocs coming from a.out files.  */
   r_baserel = (g->howto->type & 8) != 0;
@@ -2316,34 +2328,22 @@ NAME (aout, slurp_reloc_table) (bfd *abf
       return FALSE;
     }
 
-  if (reloc_size == 0)
-    return TRUE;		/* Nothing to be done.  */
-
-  if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
-    return FALSE;
-
   each_size = obj_reloc_entry_size (abfd);
-
   count = reloc_size / each_size;
   if (count == 0)
     return TRUE;		/* Nothing to be done.  */
 
-  amt = count * sizeof (arelent);
-  reloc_cache = (arelent *) bfd_zmalloc (amt);
-  if (reloc_cache == NULL)
+  if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
     return FALSE;
-
-  relocs = bfd_malloc (reloc_size);
+  relocs = _bfd_malloc_and_read (abfd, reloc_size, reloc_size);
   if (relocs == NULL)
-    {
-      free (reloc_cache);
-      return FALSE;
-    }
+    return FALSE;
 
-  if (bfd_bread (relocs, reloc_size, abfd) != reloc_size)
+  amt = count * sizeof (arelent);
+  reloc_cache = (arelent *) bfd_zmalloc (amt);
+  if (reloc_cache == NULL)
     {
       free (relocs);
-      free (reloc_cache);
       return FALSE;
     }
 
@@ -2409,8 +2409,8 @@ NAME (aout, squirt_out_relocs) (bfd *abf
 	      || (*generic)->sym_ptr_ptr == NULL)
 	    {
 	      bfd_set_error (bfd_error_invalid_operation);
-	      _bfd_error_handler (_("\
-%pB: attempt to write out unknown reloc type"), abfd);
+	      _bfd_error_handler (_("%pB: attempt to write out "
+				    "unknown reloc type"), abfd);
 	      return FALSE;
 	    }
 	  MY_swap_ext_reloc_out (abfd, *generic,
@@ -2427,8 +2427,8 @@ NAME (aout, squirt_out_relocs) (bfd *abf
 	      || (*generic)->sym_ptr_ptr == NULL)
 	    {
 	      bfd_set_error (bfd_error_invalid_operation);
-	      _bfd_error_handler (_("\
-%pB: attempt to write out unknown reloc type"), abfd);
+	      _bfd_error_handler (_("%pB: attempt to write out "
+				    "unknown reloc type"), abfd);
 	      return FALSE;
 	    }
 	  MY_swap_std_reloc_out (abfd, *generic,
@@ -2697,7 +2697,7 @@ NAME (aout, find_nearest_line) (bfd *abf
   bfd_size_type filelen, funclen;
   char *buf;
 
-  *filename_ptr = abfd->filename;
+  *filename_ptr = bfd_get_filename (abfd);
   *functionname_ptr = NULL;
   *line_ptr = 0;
   if (disriminator_ptr)
@@ -2827,8 +2827,7 @@ NAME (aout, find_nearest_line) (bfd *abf
   else
     funclen = strlen (bfd_asymbol_name (func));
 
-  if (adata (abfd).line_buf != NULL)
-    free (adata (abfd).line_buf);
+  free (adata (abfd).line_buf);
 
   if (filelen + funclen == 0)
     adata (abfd).line_buf = buf = NULL;
@@ -2910,7 +2909,7 @@ NAME (aout, bfd_free_cached_info) (bfd *
       || abfd->tdata.aout_data == NULL)
     return TRUE;
 
-#define BFCI_FREE(x) if (x != NULL) { free (x); x = NULL; }
+#define BFCI_FREE(x) do { free (x); x = NULL; } while (0)
   BFCI_FREE (obj_aout_symbols (abfd));
 #ifdef USE_MMAP
   obj_aout_external_syms (abfd) = 0;
@@ -2980,7 +2979,7 @@ struct bfd_link_hash_table *
 NAME (aout, link_hash_table_create) (bfd *abfd)
 {
   struct aout_link_hash_table *ret;
-  bfd_size_type amt = sizeof (* ret);
+  size_t amt = sizeof (* ret);
 
   ret = (struct aout_link_hash_table *) bfd_malloc (amt);
   if (ret == NULL)
@@ -3634,7 +3633,7 @@ aout_link_write_other_symbol (struct bfd
   bfd_vma val;
   struct external_nlist outsym;
   bfd_size_type indx;
-  bfd_size_type amt;
+  size_t amt;
 
   if (h->root.type == bfd_link_hash_warning)
     {
@@ -3759,7 +3758,7 @@ aout_link_reloc_link_order (struct aout_
   struct reloc_std_external srel;
   struct reloc_ext_external erel;
   void * rel_ptr;
-  bfd_size_type amt;
+  size_t amt;
 
   pr = p->u.reloc.p;
 
@@ -3831,13 +3830,16 @@ aout_link_reloc_link_order (struct aout_
 	int r_baserel;
 	int r_jmptable;
 	int r_relative;
-	int r_length;
+	unsigned int r_length;
 
 	r_pcrel = (int) howto->pc_relative;
 	r_baserel = (howto->type & 8) != 0;
 	r_jmptable = (howto->type & 16) != 0;
 	r_relative = (howto->type & 32) != 0;
-	r_length = howto->size;
+	if (bfd_get_reloc_size (howto) != 8)
+	  r_length = howto->size;	/* Size as a power of two.  */
+	else
+	  r_length = 3;
 
 	PUT_WORD (flaginfo->output_bfd, p->offset, srel.r_address);
 	if (bfd_header_big_endian (flaginfo->output_bfd))
@@ -4854,7 +4856,8 @@ aout_link_write_symbols (struct aout_fin
      discarding such symbols.  */
   if (strip != strip_all
       && (strip != strip_some
-	  || bfd_hash_lookup (flaginfo->info->keep_hash, input_bfd->filename,
+	  || bfd_hash_lookup (flaginfo->info->keep_hash,
+			      bfd_get_filename (input_bfd),
 			      FALSE, FALSE) != NULL)
       && discard != discard_all)
     {
@@ -4862,7 +4865,7 @@ aout_link_write_symbols (struct aout_fin
       H_PUT_8 (output_bfd, 0, outsym->e_other);
       H_PUT_16 (output_bfd, 0, outsym->e_desc);
       strtab_index = add_to_stringtab (output_bfd, flaginfo->strtab,
-				       input_bfd->filename, FALSE);
+				       bfd_get_filename (input_bfd), FALSE);
       if (strtab_index == (bfd_size_type) -1)
 	return FALSE;
       PUT_WORD (output_bfd, strtab_index, outsym->e_strx);
@@ -5624,26 +5627,15 @@ NAME (aout, final_link) (bfd *abfd,
 	}
     }
 
-  if (aout_info.contents != NULL)
-    {
-      free (aout_info.contents);
-      aout_info.contents = NULL;
-    }
-  if (aout_info.relocs != NULL)
-    {
-      free (aout_info.relocs);
-      aout_info.relocs = NULL;
-    }
-  if (aout_info.symbol_map != NULL)
-    {
-      free (aout_info.symbol_map);
-      aout_info.symbol_map = NULL;
-    }
-  if (aout_info.output_syms != NULL)
-    {
-      free (aout_info.output_syms);
-      aout_info.output_syms = NULL;
-    }
+  free (aout_info.contents);
+  aout_info.contents = NULL;
+  free (aout_info.relocs);
+  aout_info.relocs = NULL;
+  free (aout_info.symbol_map);
+  aout_info.symbol_map = NULL;
+  free (aout_info.output_syms);
+  aout_info.output_syms = NULL;
+
   if (includes_hash_initialized)
     {
       bfd_hash_table_free (&aout_info.includes.root);
@@ -5686,14 +5678,10 @@ NAME (aout, final_link) (bfd *abfd,
   return TRUE;
 
  error_return:
-  if (aout_info.contents != NULL)
-    free (aout_info.contents);
-  if (aout_info.relocs != NULL)
-    free (aout_info.relocs);
-  if (aout_info.symbol_map != NULL)
-    free (aout_info.symbol_map);
-  if (aout_info.output_syms != NULL)
-    free (aout_info.output_syms);
+  free (aout_info.contents);
+  free (aout_info.relocs);
+  free (aout_info.symbol_map);
+  free (aout_info.output_syms);
   if (includes_hash_initialized)
     bfd_hash_table_free (&aout_info.includes.root);
   return FALSE;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/arc-got.h ./bfd/arc-got.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/arc-got.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/arc-got.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ARC-specific support for 32-bit ELF
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
    Contributed by Cupertino Miranda (cmiranda@synopsys.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -296,7 +296,7 @@ relocate_fix_got_relocs_for_got_info (st
 
       if (h != NULL)
 	{
-	  // TODO: This should not be here.
+	  /* TODO: This should not be here.  */
 	  reloc_data->sym_value = h->root.u.def.value;
 	  reloc_data->sym_section = h->root.u.def.section;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/archive64.c ./bfd/archive64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/archive64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/archive64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for 64-bit archives.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
    Ian Lance Taylor, Cygnus Support
    Linker support added by Mark Mitchell, CodeSourcery, LLC.
    <mark@codesourcery.com>
@@ -47,6 +47,7 @@ _bfd_archive_64_bit_slurp_armap (bfd *ab
   bfd_byte *raw_armap = NULL;
   carsym *carsyms;
   bfd_size_type amt;
+  ufile_ptr filesize;
 
   ardata->symdefs = NULL;
 
@@ -76,6 +77,13 @@ _bfd_archive_64_bit_slurp_armap (bfd *ab
   parsed_size = mapdata->parsed_size;
   free (mapdata);
 
+  filesize = bfd_get_file_size (abfd);
+  if (filesize != 0 && parsed_size > filesize)
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      return FALSE;
+    }
+
   if (bfd_bread (int_buf, 8, abfd) != 8)
     {
       if (bfd_get_error () != bfd_error_system_call)
@@ -102,22 +110,19 @@ _bfd_archive_64_bit_slurp_armap (bfd *ab
       bfd_set_error (bfd_error_malformed_archive);
       return FALSE;
     }
-  ardata->symdefs = (struct carsym *) bfd_zalloc (abfd, amt);
+  ardata->symdefs = (struct carsym *) bfd_alloc (abfd, amt);
   if (ardata->symdefs == NULL)
     return FALSE;
   carsyms = ardata->symdefs;
   stringbase = ((char *) ardata->symdefs) + carsym_size;
 
-  raw_armap = (bfd_byte *) bfd_alloc (abfd, ptrsize);
-  if (raw_armap == NULL)
-    goto release_symdefs;
-
-  if (bfd_bread (raw_armap, ptrsize, abfd) != ptrsize
+  raw_armap = (bfd_byte *) _bfd_alloc_and_read (abfd, ptrsize, ptrsize);
+  if (raw_armap == NULL
       || bfd_bread (stringbase, stringsize, abfd) != stringsize)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_malformed_archive);
-      goto release_raw_armap;
+      goto release_symdefs;
     }
 
   stringend = stringbase + stringsize;
@@ -142,9 +147,7 @@ _bfd_archive_64_bit_slurp_armap (bfd *ab
 
   return TRUE;
 
-release_raw_armap:
-  bfd_release (abfd, raw_armap);
-release_symdefs:
+ release_symdefs:
   bfd_release (abfd, ardata->symdefs);
   return FALSE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/archive.c ./bfd/archive.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/archive.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/archive.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for archive files (libraries).
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.  Mostly Gumby Henkel-Wallace's fault.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -212,7 +212,7 @@ _bfd_ar_sizepad (char *p, size_t n, bfd_
 bfd_boolean
 _bfd_generic_mkarchive (bfd *abfd)
 {
-  bfd_size_type amt = sizeof (struct artdata);
+  size_t amt = sizeof (struct artdata);
 
   abfd->tdata.aout_ar_data = (struct artdata *) bfd_zalloc (abfd, amt);
   if (bfd_ardata (abfd) == NULL)
@@ -403,7 +403,7 @@ find_nested_archive (const char *filenam
   bfd *abfd;
 
   /* PR 15140: Don't allow a nested archive pointing to itself.  */
-  if (filename_cmp (filename, arch_bfd->filename) == 0)
+  if (filename_cmp (filename, bfd_get_filename (arch_bfd)) == 0)
     {
       bfd_set_error (bfd_error_malformed_archive);
       return NULL;
@@ -413,7 +413,7 @@ find_nested_archive (const char *filenam
        abfd != NULL;
        abfd = abfd->archive_next)
     {
-      if (filename_cmp (filename, abfd->filename) == 0)
+      if (filename_cmp (filename, bfd_get_filename (abfd)) == 0)
 	return abfd;
     }
   abfd = open_nested_file (filename, arch_bfd);
@@ -488,6 +488,7 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd,
   bfd_size_type parsed_size;
   struct areltdata *ared;
   char *filename = NULL;
+  ufile_ptr filesize;
   bfd_size_type namelen = 0;
   bfd_size_type allocsize = sizeof (struct areltdata) + sizeof (struct ar_hdr);
   char *allocptr = 0;
@@ -538,11 +539,19 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd,
     {
       /* BSD-4.4 extended name */
       namelen = atoi (&hdr.ar_name[3]);
+      filesize = bfd_get_file_size (abfd);
+      if (namelen > parsed_size
+	  || namelen > -allocsize - 2
+	  || (filesize != 0 && namelen > filesize))
+	{
+	  bfd_set_error (bfd_error_malformed_archive);
+	  return NULL;
+	}
       allocsize += namelen + 1;
       parsed_size -= namelen;
       extra_size = namelen;
 
-      allocptr = (char *) bfd_zmalloc (allocsize);
+      allocptr = (char *) bfd_malloc (allocsize);
       if (allocptr == NULL)
 	return NULL;
       filename = (allocptr
@@ -586,13 +595,13 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd,
 
   if (!allocptr)
     {
-      allocptr = (char *) bfd_zmalloc (allocsize);
+      allocptr = (char *) bfd_malloc (allocsize);
       if (allocptr == NULL)
 	return NULL;
     }
 
+  memset (allocptr, 0, sizeof (struct areltdata));
   ared = (struct areltdata *) allocptr;
-
   ared->arch_header = allocptr + sizeof (struct areltdata);
   memcpy (ared->arch_header, &hdr, sizeof (struct ar_hdr));
   ared->parsed_size = parsed_size;
@@ -619,7 +628,7 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd,
 char *
 _bfd_append_relative_path (bfd *arch, char *elt_name)
 {
-  const char *arch_name = arch->filename;
+  const char *arch_name = bfd_get_filename (arch);
   const char *base_name = lbasename (arch_name);
   size_t prefix_len;
   char *filename;
@@ -728,8 +737,7 @@ _bfd_get_elt_at_filepos (bfd *archive, f
   else
     {
       n_bfd->origin = n_bfd->proxy_origin;
-      n_bfd->filename = bfd_strdup (filename);
-      if (n_bfd->filename == NULL)
+      if (!bfd_set_filename (n_bfd, filename))
 	goto out;
     }
 
@@ -842,12 +850,12 @@ _bfd_noarchive_openr_next_archived_file
   return (bfd *) _bfd_ptr_bfd_null_error (archive);
 }
 
-const bfd_target *
+bfd_cleanup
 bfd_generic_archive_p (bfd *abfd)
 {
   struct artdata *tdata_hold;
   char armag[SARMAG + 1];
-  bfd_size_type amt;
+  size_t amt;
 
   if (bfd_bread (armag, SARMAG, abfd) != SARMAG)
     {
@@ -924,7 +932,7 @@ bfd_generic_archive_p (bfd *abfd)
 	}
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 /* Some constants for a 32 bit BSD archive structure.  We do not
@@ -951,11 +959,12 @@ static bfd_boolean
 do_slurp_bsd_armap (bfd *abfd)
 {
   struct areltdata *mapdata;
-  unsigned int counter;
+  size_t counter;
   bfd_byte *raw_armap, *rbase;
   struct artdata *ardata = bfd_ardata (abfd);
   char *stringbase;
-  bfd_size_type parsed_size, amt;
+  bfd_size_type parsed_size;
+  size_t amt, string_size;
   carsym *set;
 
   mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
@@ -965,45 +974,51 @@ do_slurp_bsd_armap (bfd *abfd)
   free (mapdata);
   /* PR 17512: file: 883ff754.  */
   /* PR 17512: file: 0458885f.  */
-  if (parsed_size < 4)
-    return FALSE;
-
-  raw_armap = (bfd_byte *) bfd_zalloc (abfd, parsed_size);
-  if (raw_armap == NULL)
-    return FALSE;
-
-  if (bfd_bread (raw_armap, parsed_size, abfd) != parsed_size)
+  if (parsed_size < BSD_SYMDEF_COUNT_SIZE + BSD_STRING_COUNT_SIZE)
     {
-      if (bfd_get_error () != bfd_error_system_call)
-	bfd_set_error (bfd_error_malformed_archive);
-    byebye:
-      bfd_release (abfd, raw_armap);
+      bfd_set_error (bfd_error_malformed_archive);
       return FALSE;
     }
 
-  ardata->symdef_count = H_GET_32 (abfd, raw_armap) / BSD_SYMDEF_SIZE;
-  if (ardata->symdef_count * BSD_SYMDEF_SIZE >
-      parsed_size - BSD_SYMDEF_COUNT_SIZE)
+  raw_armap = (bfd_byte *) _bfd_alloc_and_read (abfd, parsed_size, parsed_size);
+  if (raw_armap == NULL)
+    return FALSE;
+
+  parsed_size -= BSD_SYMDEF_COUNT_SIZE + BSD_STRING_COUNT_SIZE;
+  amt = H_GET_32 (abfd, raw_armap);
+  if (amt > parsed_size
+      || amt % BSD_SYMDEF_SIZE != 0)
     {
       /* Probably we're using the wrong byte ordering.  */
       bfd_set_error (bfd_error_wrong_format);
-      goto byebye;
+      goto release_armap;
     }
 
   rbase = raw_armap + BSD_SYMDEF_COUNT_SIZE;
-  stringbase = ((char *) rbase
-		+ ardata->symdef_count * BSD_SYMDEF_SIZE
-		+ BSD_STRING_COUNT_SIZE);
-  amt = ardata->symdef_count * sizeof (carsym);
+  stringbase = (char *) rbase + amt + BSD_STRING_COUNT_SIZE;
+  string_size = parsed_size - amt;
+
+  ardata->symdef_count = amt / BSD_SYMDEF_SIZE;
+  if (_bfd_mul_overflow (ardata->symdef_count, sizeof (carsym), &amt))
+    {
+      bfd_set_error (bfd_error_no_memory);
+      goto release_armap;
+    }
   ardata->symdefs = (struct carsym *) bfd_alloc (abfd, amt);
   if (!ardata->symdefs)
-    return FALSE;
+    goto release_armap;
 
   for (counter = 0, set = ardata->symdefs;
        counter < ardata->symdef_count;
        counter++, set++, rbase += BSD_SYMDEF_SIZE)
     {
-      set->name = H_GET_32 (abfd, rbase) + stringbase;
+      unsigned nameoff = H_GET_32 (abfd, rbase);
+      if (nameoff >= string_size)
+	{
+	  bfd_set_error (bfd_error_malformed_archive);
+	  goto release_armap;
+	}
+      set->name = stringbase + nameoff;
       set->file_offset = H_GET_32 (abfd, rbase + BSD_SYMDEF_OFFSET_SIZE);
     }
 
@@ -1015,6 +1030,12 @@ do_slurp_bsd_armap (bfd *abfd)
      to be allocated on an objalloc anyway...  */
   abfd->has_armap = TRUE;
   return TRUE;
+
+ release_armap:
+  ardata->symdef_count = 0;
+  ardata->symdefs = NULL;
+  bfd_release (abfd, raw_armap);
+  return FALSE;
 }
 
 /* Read a COFF archive symbol table.  Returns FALSE on error, TRUE
@@ -1030,12 +1051,12 @@ do_slurp_coff_armap (bfd *abfd)
   char *stringend;
   bfd_size_type stringsize;
   bfd_size_type parsed_size;
+  ufile_ptr filesize;
+  size_t nsymz, carsym_size, ptrsize, i;
   carsym *carsyms;
-  bfd_size_type nsymz;		/* Number of symbols in armap.  */
   bfd_vma (*swap) (const void *);
-  char int_buf[sizeof (long)];
-  bfd_size_type carsym_size, ptrsize;
-  unsigned int i;
+  char int_buf[4];
+  struct areltdata *tmp;
 
   mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
   if (mapdata == NULL)
@@ -1044,47 +1065,54 @@ do_slurp_coff_armap (bfd *abfd)
   free (mapdata);
 
   if (bfd_bread (int_buf, 4, abfd) != 4)
-    {
-      if (bfd_get_error () != bfd_error_system_call)
-	bfd_set_error (bfd_error_malformed_archive);
-      return FALSE;
-    }
+    return FALSE;
+
   /* It seems that all numeric information in a coff archive is always
-     in big endian format, nomatter the host or target.  */
+     in big endian format, no matter the host or target.  */
   swap = bfd_getb32;
   nsymz = bfd_getb32 (int_buf);
-  stringsize = parsed_size - (4 * nsymz) - 4;
 
   /* The coff armap must be read sequentially.  So we construct a
      bsd-style one in core all at once, for simplicity.  */
 
-  if (nsymz > ~ (bfd_size_type) 0 / sizeof (carsym))
-    return FALSE;
+  if (_bfd_mul_overflow (nsymz, sizeof (carsym), &carsym_size))
+    {
+      bfd_set_error (bfd_error_no_memory);
+      return FALSE;
+    }
+
+  filesize = bfd_get_file_size (abfd);
+  ptrsize = 4 * nsymz;
+  if ((filesize != 0 && parsed_size > filesize)
+      || parsed_size < 4
+      || parsed_size - 4 < ptrsize)
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      return FALSE;
+    }
 
-  carsym_size = (nsymz * sizeof (carsym));
-  ptrsize = (4 * nsymz);
+  stringsize = parsed_size - ptrsize - 4;
 
   if (carsym_size + stringsize + 1 <= carsym_size)
+    {
+      bfd_set_error (bfd_error_no_memory);
+      return FALSE;
+    }
+
+  /* Allocate and read in the raw offsets.  */
+  raw_armap = (int *) _bfd_malloc_and_read (abfd, ptrsize, ptrsize);
+  if (raw_armap == NULL)
     return FALSE;
 
-  ardata->symdefs = (struct carsym *) bfd_zalloc (abfd,
-						  carsym_size + stringsize + 1);
+  ardata->symdefs = (struct carsym *) bfd_alloc (abfd,
+						 carsym_size + stringsize + 1);
   if (ardata->symdefs == NULL)
-    return FALSE;
+    goto free_armap;
   carsyms = ardata->symdefs;
   stringbase = ((char *) ardata->symdefs) + carsym_size;
 
-  /* Allocate and read in the raw offsets.  */
-  raw_armap = (int *) bfd_alloc (abfd, ptrsize);
-  if (raw_armap == NULL)
+  if (bfd_bread (stringbase, stringsize, abfd) != stringsize)
     goto release_symdefs;
-  if (bfd_bread (raw_armap, ptrsize, abfd) != ptrsize
-      || (bfd_bread (stringbase, stringsize, abfd) != stringsize))
-    {
-      if (bfd_get_error () != bfd_error_system_call)
-	bfd_set_error (bfd_error_malformed_archive);
-      goto release_raw_armap;
-    }
 
   /* OK, build the carsyms.  */
   stringend = stringbase + stringsize;
@@ -1104,34 +1132,29 @@ do_slurp_coff_armap (bfd *abfd)
   ardata->first_file_filepos = bfd_tell (abfd);
   /* Pad to an even boundary if you have to.  */
   ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
+  if (bfd_seek (abfd, ardata->first_file_filepos, SEEK_SET) != 0)
+    goto release_symdefs;
 
   abfd->has_armap = TRUE;
-  bfd_release (abfd, raw_armap);
+  free (raw_armap);
 
   /* Check for a second archive header (as used by PE).  */
-  {
-    struct areltdata *tmp;
-
-    bfd_seek (abfd, ardata->first_file_filepos, SEEK_SET);
-    tmp = (struct areltdata *) _bfd_read_ar_hdr (abfd);
-    if (tmp != NULL)
-      {
-	if (tmp->arch_header[0] == '/'
-	    && tmp->arch_header[1] == ' ')
-	  {
-	    ardata->first_file_filepos +=
-	      (tmp->parsed_size + sizeof (struct ar_hdr) + 1) & ~(unsigned) 1;
-	  }
-	free (tmp);
-      }
-  }
+  tmp = (struct areltdata *) _bfd_read_ar_hdr (abfd);
+  if (tmp != NULL)
+    {
+      if (tmp->arch_header[0] == '/'
+	  && tmp->arch_header[1] == ' ')
+	ardata->first_file_filepos
+	  += (tmp->parsed_size + sizeof (struct ar_hdr) + 1) & ~(unsigned) 1;
+      free (tmp);
+    }
 
   return TRUE;
 
-release_raw_armap:
-  bfd_release (abfd, raw_armap);
-release_symdefs:
+ release_symdefs:
   bfd_release (abfd, (ardata)->symdefs);
+ free_armap:
+  free (raw_armap);
   return FALSE;
 }
 
@@ -1208,8 +1231,6 @@ bfd_boolean
 _bfd_slurp_extended_name_table (bfd *abfd)
 {
   char nextname[17];
-  struct areltdata *namedata;
-  bfd_size_type amt;
 
   /* FIXME:  Formatting sucks here, and in case of failure of BFD_READ,
      we probably don't want to return TRUE.  */
@@ -1218,6 +1239,10 @@ _bfd_slurp_extended_name_table (bfd *abf
 
   if (bfd_bread (nextname, 16, abfd) == 16)
     {
+      struct areltdata *namedata;
+      bfd_size_type amt;
+      ufile_ptr filesize;
+
       if (bfd_seek (abfd, (file_ptr) -16, SEEK_CUR) != 0)
 	return FALSE;
 
@@ -1233,12 +1258,16 @@ _bfd_slurp_extended_name_table (bfd *abf
       if (namedata == NULL)
 	return FALSE;
 
+      filesize = bfd_get_file_size (abfd);
       amt = namedata->parsed_size;
-      if (amt + 1 == 0)
-	goto byebye;
+      if (amt + 1 == 0 || (filesize != 0 && amt > filesize))
+	{
+	  bfd_set_error (bfd_error_malformed_archive);
+	  goto byebye;
+	}
 
       bfd_ardata (abfd)->extended_names_size = amt;
-      bfd_ardata (abfd)->extended_names = (char *) bfd_zalloc (abfd, amt + 1);
+      bfd_ardata (abfd)->extended_names = (char *) bfd_alloc (abfd, amt + 1);
       if (bfd_ardata (abfd)->extended_names == NULL)
 	{
 	byebye:
@@ -1256,6 +1285,7 @@ _bfd_slurp_extended_name_table (bfd *abf
 	  bfd_ardata (abfd)->extended_names = NULL;
 	  goto byebye;
 	}
+      bfd_ardata (abfd)->extended_names[amt] = 0;
 
       /* Since the archive is supposed to be printable if it contains
 	 text, the entries in the list are newline-padded, not null
@@ -1438,8 +1468,7 @@ adjust_relative_path (const char * path,
 
   if (len > pathbuf_len)
     {
-      if (pathbuf != NULL)
-	free (pathbuf);
+      free (pathbuf);
       pathbuf_len = 0;
       pathbuf = (char *) bfd_malloc (len);
       if (pathbuf == NULL)
@@ -1533,13 +1562,13 @@ _bfd_construct_extended_name_table (bfd
 
       if (bfd_is_thin_archive (abfd))
 	{
-	  const char *filename = current->filename;
+	  const char *filename = bfd_get_filename (current);
 
 	  /* If the element being added is a member of another archive
 	     (i.e., we are flattening), use the containing archive's name.  */
 	  if (current->my_archive
 	      && ! bfd_is_thin_archive (current->my_archive))
-	    filename = current->my_archive->filename;
+	    filename = bfd_get_filename (current->my_archive);
 
 	  /* If the path is the same as the previous path seen,
 	     reuse it.  This can happen when flattening a thin
@@ -1552,8 +1581,8 @@ _bfd_construct_extended_name_table (bfd
 	  /* If the path is relative, adjust it relative to
 	     the containing archive. */
 	  if (! IS_ABSOLUTE_PATH (filename)
-	      && ! IS_ABSOLUTE_PATH (abfd->filename))
-	    normal = adjust_relative_path (filename, abfd->filename);
+	      && ! IS_ABSOLUTE_PATH (bfd_get_filename (abfd)))
+	    normal = adjust_relative_path (filename, bfd_get_filename (abfd));
 	  else
 	    normal = filename;
 
@@ -1567,7 +1596,7 @@ _bfd_construct_extended_name_table (bfd
 	  continue;
 	}
 
-      normal = normalize (abfd, current->filename);
+      normal = normalize (abfd, bfd_get_filename (current));
       if (normal == NULL)
 	return FALSE;
 
@@ -1607,7 +1636,7 @@ _bfd_construct_extended_name_table (bfd
   if (total_namelen == 0)
     return TRUE;
 
-  *tabloc = (char *) bfd_zalloc (abfd, total_namelen);
+  *tabloc = (char *) bfd_alloc (abfd, total_namelen);
   if (*tabloc == NULL)
     return FALSE;
 
@@ -1624,7 +1653,7 @@ _bfd_construct_extended_name_table (bfd
       const char *normal;
       unsigned int thislen;
       long stroff;
-      const char *filename = current->filename;
+      const char *filename = bfd_get_filename (current);
 
       if (bfd_is_thin_archive (abfd))
 	{
@@ -1632,7 +1661,7 @@ _bfd_construct_extended_name_table (bfd
 	     (i.e., we are flattening), use the containing archive's name.  */
 	  if (current->my_archive
 	      && ! bfd_is_thin_archive (current->my_archive))
-	    filename = current->my_archive->filename;
+	    filename = bfd_get_filename (current->my_archive);
 	  /* If the path is the same as the previous path seen,
 	     reuse it.  This can happen when flattening a thin
 	     archive that contains other archives.
@@ -1641,8 +1670,8 @@ _bfd_construct_extended_name_table (bfd
 	  if (last_filename && filename_cmp (last_filename, filename) == 0)
 	    normal = last_filename;
 	  else if (! IS_ABSOLUTE_PATH (filename)
-		   && ! IS_ABSOLUTE_PATH (abfd->filename))
-	    normal = adjust_relative_path (filename, abfd->filename);
+		   && ! IS_ABSOLUTE_PATH (bfd_get_filename (abfd)))
+	    normal = adjust_relative_path (filename, bfd_get_filename (abfd));
 	  else
 	    normal = filename;
 	}
@@ -1664,16 +1693,14 @@ _bfd_construct_extended_name_table (bfd
 	    stroff = last_stroff;
 	  else
 	    {
-	      strcpy (strptr, normal);
-	      if (! trailing_slash)
-		strptr[thislen] = ARFMAG[1];
-	      else
-		{
-		  strptr[thislen] = '/';
-		  strptr[thislen + 1] = ARFMAG[1];
-		}
+	      last_filename = filename;
 	      stroff = strptr - *tabloc;
 	      last_stroff = stroff;
+	      memcpy (strptr, normal, thislen);
+	      strptr += thislen;
+	      if (trailing_slash)
+		*strptr++ = '/';
+	      *strptr++ = ARFMAG[1];
 	    }
 	  hdr->ar_name[0] = ar_padchar (current);
 	  if (bfd_is_thin_archive (abfd) && current->origin > 0)
@@ -1686,13 +1713,6 @@ _bfd_construct_extended_name_table (bfd
 	    }
 	  else
 	    _bfd_ar_spacepad (hdr->ar_name + 1, maxname - 1, "%-ld", stroff);
-	  if (normal != last_filename)
-	    {
-	      strptr += thislen + 1;
-	      if (trailing_slash)
-		++strptr;
-	      last_filename = filename;
-	    }
 	}
     }
 
@@ -1719,7 +1739,7 @@ _bfd_archive_bsd44_construct_extended_na
        current != NULL;
        current = current->archive_next)
     {
-      const char *normal = normalize (abfd, current->filename);
+      const char *normal = normalize (abfd, bfd_get_filename (current));
       int has_space = 0;
       unsigned int len;
 
@@ -1765,7 +1785,7 @@ _bfd_bsd44_write_ar_hdr (bfd *archive, b
   if (is_bsd44_extended_name (hdr->ar_name))
     {
       /* This is a BSD 4.4 extended name.  */
-      const char *fullname = normalize (abfd, abfd->filename);
+      const char *fullname = normalize (abfd, bfd_get_filename (abfd));
       unsigned int len = strlen (fullname);
       unsigned int padded_len = (len + 3) & ~3;
 
@@ -1841,7 +1861,7 @@ bfd_ar_hdr_from_filesystem (bfd *abfd, c
   struct stat status;
   struct areltdata *ared;
   struct ar_hdr *hdr;
-  bfd_size_type amt;
+  size_t amt;
 
   if (member && (member->flags & BFD_IN_MEMORY) != 0)
     {
@@ -2117,13 +2137,15 @@ _bfd_write_archive_contents (bfd *arch)
       if (!current->arelt_data)
 	{
 	  current->arelt_data =
-	    bfd_ar_hdr_from_filesystem (arch, current->filename, current);
+	    bfd_ar_hdr_from_filesystem (arch, bfd_get_filename (current),
+					current);
 	  if (!current->arelt_data)
 	    goto input_err;
 
 	  /* Put in the file name.  */
 	  BFD_SEND (arch, _bfd_truncate_arname,
-		    (arch, current->filename, (char *) arch_hdr (current)));
+		    (arch, bfd_get_filename (current),
+		     (char *) arch_hdr (current)));
 	}
 
       if (makemap && ! hasobjects)
@@ -2191,17 +2213,13 @@ _bfd_write_archive_contents (bfd *arch)
 
       while (remaining)
 	{
-	  unsigned int amt = DEFAULT_BUFFERSIZE;
+	  size_t amt = DEFAULT_BUFFERSIZE;
 
 	  if (amt > remaining)
 	    amt = remaining;
 	  errno = 0;
 	  if (bfd_bread (buffer, amt, current) != amt)
-	    {
-	      if (bfd_get_error () != bfd_error_system_call)
-		bfd_set_error (bfd_error_file_truncated);
-	      goto input_err;
-	    }
+	    goto input_err;
 	  if (bfd_bwrite (buffer, amt, arch) != amt)
 	    return FALSE;
 	  remaining -= amt;
@@ -2255,7 +2273,7 @@ _bfd_compute_and_write_armap (bfd *arch,
   asymbol **syms = NULL;
   long syms_max = 0;
   bfd_boolean ret;
-  bfd_size_type amt;
+  size_t amt;
   static bfd_boolean report_plugin_err = TRUE;
 
   /* Dunno if this is the best place for this info...  */
@@ -2276,7 +2294,7 @@ _bfd_compute_and_write_armap (bfd *arch,
 
   /* Drop all the files called __.SYMDEF, we're going to make our own.  */
   while (arch->archive_head
-	 && strcmp (arch->archive_head->filename, "__.SYMDEF") == 0)
+	 && strcmp (bfd_get_filename (arch->archive_head), "__.SYMDEF") == 0)
     arch->archive_head = arch->archive_head->archive_next;
 
   /* Map over each element.  */
@@ -2307,8 +2325,7 @@ _bfd_compute_and_write_armap (bfd *arch,
 	    {
 	      if (storage > syms_max)
 		{
-		  if (syms_max > 0)
-		    free (syms);
+		  free (syms);
 		  syms_max = storage;
 		  syms = (asymbol **) bfd_malloc (syms_max);
 		  if (syms == NULL)
@@ -2389,20 +2406,16 @@ _bfd_compute_and_write_armap (bfd *arch,
   ret = BFD_SEND (arch, write_armap,
 		  (arch, elength, map, orl_count, stridx));
 
-  if (syms_max > 0)
-    free (syms);
-  if (map != NULL)
-    free (map);
+  free (syms);
+  free (map);
   if (first_name != NULL)
     bfd_release (arch, first_name);
 
   return ret;
 
  error_return:
-  if (syms_max > 0)
-    free (syms);
-  if (map != NULL)
-    free (map);
+  free (syms);
+  free (map);
   if (first_name != NULL)
     bfd_release (arch, first_name);
 
@@ -2477,7 +2490,7 @@ _bfd_bsd_write_armap (bfd *arch,
     {
       struct stat statbuf;
 
-      if (stat (arch->filename, &statbuf) == 0)
+      if (stat (bfd_get_filename (arch), &statbuf) == 0)
 	bfd_ardata (arch)->armap_timestamp = (statbuf.st_mtime
 					      + ARMAP_TIME_OFFSET);
       uid = getuid();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/archures.c ./bfd/archures.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/archures.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/archures.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for architectures.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Hacked by John Gilmore and Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -211,10 +211,6 @@ DESCRIPTION
 .  bfd_arch_k1om,      {* Intel K1OM.  *}
 .#define bfd_mach_k1om			(1 << 6)
 .#define bfd_mach_k1om_intel_syntax	(bfd_mach_k1om | bfd_mach_i386_intel_syntax)
-.#define bfd_mach_i386_nacl		(1 << 7)
-.#define bfd_mach_i386_i386_nacl	(bfd_mach_i386_i386 | bfd_mach_i386_nacl)
-.#define bfd_mach_x86_64_nacl		(bfd_mach_x86_64 | bfd_mach_i386_nacl)
-.#define bfd_mach_x64_32_nacl		(bfd_mach_x64_32 | bfd_mach_i386_nacl)
 .  bfd_arch_iamcu,     {* Intel MCU.  *}
 .#define bfd_mach_iamcu			(1 << 8)
 .#define bfd_mach_i386_iamcu		(bfd_mach_i386_i386 | bfd_mach_iamcu)
@@ -232,7 +228,6 @@ DESCRIPTION
 .#define bfd_mach_h8300sx	6
 .#define bfd_mach_h8300sxn	7
 .  bfd_arch_pdp11,     {* DEC PDP-11.  *}
-.  bfd_arch_plugin,
 .  bfd_arch_powerpc,   {* PowerPC.  *}
 .#define bfd_mach_ppc		32
 .#define bfd_mach_ppc64		64
@@ -355,7 +350,6 @@ DESCRIPTION
 .#define bfd_mach_tic4x		40
 .  bfd_arch_tic54x,    {* Texas Instruments TMS320C54X.  *}
 .  bfd_arch_tic6x,     {* Texas Instruments TMS320C6X.  *}
-.  bfd_arch_tic80,     {* TI TMS320c80 (MVP).  *}
 .  bfd_arch_v850,      {* NEC V850.  *}
 .  bfd_arch_v850_rh850,{* NEC V850 (using RH850 ABI).  *}
 .#define bfd_mach_v850		1
@@ -417,6 +411,7 @@ DESCRIPTION
 .#define bfd_mach_iq10		2
 .  bfd_arch_bpf,       {* Linux eBPF.  *}
 .#define bfd_mach_bpf		1
+.#define bfd_mach_xbpf		2
 .  bfd_arch_epiphany,  {* Adapteva EPIPHANY.  *}
 .#define bfd_mach_epiphany16	1
 .#define bfd_mach_epiphany32	2
@@ -506,10 +501,25 @@ DESCRIPTION
 .  bfd_arch_xtensa,    {* Tensilica's Xtensa cores.  *}
 .#define bfd_mach_xtensa	1
 .  bfd_arch_z80,
-.#define bfd_mach_z80strict	1 {* No undocumented opcodes.  *}
-.#define bfd_mach_z80		3 {* With ixl, ixh, iyl, and iyh.  *}
-.#define bfd_mach_z80full	7 {* All undocumented instructions.  *}
-.#define bfd_mach_r800		11 {* R800: successor with multiplication.  *}
+.{* Zilog Z80 without undocumented opcodes.  *}
+.#define bfd_mach_z80strict	1
+.{* Zilog Z180: successor with additional instructions, but without
+. halves of ix and iy.  *}
+.#define bfd_mach_z180		2
+.{* Zilog Z80 with ixl, ixh, iyl, and iyh.  *}
+.#define bfd_mach_z80		3
+.{* Zilog eZ80 (successor of Z80 & Z180) in Z80 (16-bit address) mode.  *}
+.#define bfd_mach_ez80_z80	4
+.{* Zilog eZ80 (successor of Z80 & Z180) in ADL (24-bit address) mode.  *}
+.#define bfd_mach_ez80_adl	5
+.{* Z80N *}
+.#define bfd_mach_z80n		6
+.{* Zilog Z80 with all undocumented instructions.  *}
+.#define bfd_mach_z80full	7
+.{* GameBoy Z80 (reduced instruction set).  *}
+.#define bfd_mach_gbz80		8
+.{* ASCII R800: successor with multiplication.  *}
+.#define bfd_mach_r800		11
 .  bfd_arch_lm32,      {* Lattice Mico32.  *}
 .#define bfd_mach_lm32		1
 .  bfd_arch_microblaze,{* Xilinx MicroBlaze.  *}
@@ -520,6 +530,7 @@ DESCRIPTION
 .#define bfd_mach_tilegx32	2
 .  bfd_arch_aarch64,   {* AArch64.  *}
 .#define bfd_mach_aarch64 0
+.#define bfd_mach_aarch64_8R	1
 .#define bfd_mach_aarch64_ilp32	32
 .  bfd_arch_nios2,     {* Nios II.  *}
 .#define bfd_mach_nios2		0
@@ -543,6 +554,7 @@ DESCRIPTION
 .#define bfd_mach_ck803		5
 .#define bfd_mach_ck807		6
 .#define bfd_mach_ck810		7
+.#define bfd_mach_ck860		8
 .  bfd_arch_last
 .  };
 */
@@ -651,7 +663,6 @@ extern const bfd_arch_info_type bfd_ns32
 extern const bfd_arch_info_type bfd_or1k_arch;
 extern const bfd_arch_info_type bfd_pdp11_arch;
 extern const bfd_arch_info_type bfd_pj_arch;
-extern const bfd_arch_info_type bfd_plugin_arch;
 extern const bfd_arch_info_type bfd_powerpc_archs[];
 #define bfd_powerpc_arch bfd_powerpc_archs[0]
 extern const bfd_arch_info_type bfd_pru_arch;
@@ -668,7 +679,6 @@ extern const bfd_arch_info_type bfd_tic3
 extern const bfd_arch_info_type bfd_tic4x_arch;
 extern const bfd_arch_info_type bfd_tic54x_arch;
 extern const bfd_arch_info_type bfd_tic6x_arch;
-extern const bfd_arch_info_type bfd_tic80_arch;
 extern const bfd_arch_info_type bfd_tilegx_arch;
 extern const bfd_arch_info_type bfd_tilepro_arch;
 extern const bfd_arch_info_type bfd_v850_arch;
@@ -756,7 +766,6 @@ static const bfd_arch_info_type * const
     &bfd_tic4x_arch,
     &bfd_tic54x_arch,
     &bfd_tic6x_arch,
-    &bfd_tic80_arch,
     &bfd_tilegx_arch,
     &bfd_tilepro_arch,
     &bfd_v850_arch,
@@ -843,7 +852,7 @@ bfd_arch_list (void)
   const char **name_ptr;
   const char **name_list;
   const bfd_arch_info_type * const *app;
-  bfd_size_type amt;
+  size_t amt;
 
   /* Determine the number of architectures.  */
   vec_length = 0;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/arc-plt.def ./bfd/arc-plt.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/arc-plt.def	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/arc-plt.def	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Arc V2 Related PLT entries.
-   Copyright (C) 2016-2019 Free Software Foundation, Inc.
+   Copyright (C) 2016-2020 Free Software Foundation, Inc.
    Contributed by Cupertino Miranda (cmiranda@synopsys.com).
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/arc-plt.h ./bfd/arc-plt.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/arc-plt.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/arc-plt.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ARC-specific header file for PLT support.
-   Copyright (C) 2016-2019 Free Software Foundation, Inc.
+   Copyright (C) 2016-2020 Free Software Foundation, Inc.
    Contributed by Cupertino Miranda (cmiranda@synopsys.com).
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfd.c ./bfd/bfd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfd.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/bfd.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic BFD library interface and support routines.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -85,12 +85,6 @@ CODE_FRAGMENT
 .  {* A unique identifier of the BFD  *}
 .  unsigned int id;
 .
-.  {* The format which belongs to the BFD. (object, core, etc.)  *}
-.  ENUM_BITFIELD (bfd_format) format : 3;
-.
-.  {* The direction with which the BFD was opened.  *}
-.  ENUM_BITFIELD (bfd_direction) direction : 2;
-.
 .  {* Format_specific flags.  *}
 .  flagword flags;
 .
@@ -194,6 +188,12 @@ CODE_FRAGMENT
 .   | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
 .   | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
 .
+.  {* The format which belongs to the BFD. (object, core, etc.)  *}
+.  ENUM_BITFIELD (bfd_format) format : 3;
+.
+.  {* The direction with which the BFD was opened.  *}
+.  ENUM_BITFIELD (bfd_direction) direction : 2;
+.
 .  {* Is the file descriptor being cached?  That is, can it be closed as
 .     needed, and re-opened when accessed later?  *}
 .  unsigned int cacheable : 1;
@@ -245,13 +245,16 @@ CODE_FRAGMENT
 .  {* Set if this is a slim LTO object not loaded with a compiler plugin.  *}
 .  unsigned int lto_slim_object : 1;
 .
+.  {* Do not attempt to modify this file.  Set when detecting errors
+.     that BFD is not prepared to handle for objcopy/strip.  *}
+.  unsigned int read_only : 1;
+.
 .  {* Set to dummy BFD created when claimed by a compiler plug-in
 .     library.  *}
 .  bfd *plugin_dummy_bfd;
 .
-.  {* Currently my_archive is tested before adding origin to
-.     anything. I believe that this can become always an add of
-.     origin, with origin set to 0 for non archive files.  *}
+.  {* The offset of this bfd in the file, typically 0 if it is not
+.     contained in an archive.  *}
 .  ufile_ptr origin;
 .
 .  {* The origin in the archive of the proxy entry.  This will
@@ -283,7 +286,7 @@ CODE_FRAGMENT
 .
 .  {* Symbol table for output BFD (with symcount entries).
 .     Also used by the linker to cache input BFD symbols.  *}
-.  struct bfd_symbol  **outsymbols;
+.  struct bfd_symbol **outsymbols;
 .
 .  {* Used for input and output.  *}
 .  unsigned int symcount;
@@ -294,6 +297,11 @@ CODE_FRAGMENT
 .  {* Pointer to structure which contains architecture information.  *}
 .  const struct bfd_arch_info *arch_info;
 .
+.  {* Cached length of file for bfd_get_size.  0 until bfd_get_size is
+.     called, 1 if stat returns an error or the file size is too large to
+.     return in ufile_ptr.  Both 0 and 1 should be treated as "unknown".  *}
+.  ufile_ptr size;
+.
 .  {* Stuff only useful for archives.  *}
 .  void *arelt_data;
 .  struct bfd *my_archive;      {* The containing archive BFD.  *}
@@ -783,8 +791,8 @@ bfd_errmsg (bfd_error_type error_tag)
       char *buf;
       const char *msg = bfd_errmsg (input_error);
 
-      if (asprintf (&buf, _(bfd_errmsgs [error_tag]), input_bfd->filename, msg)
-	  != -1)
+      if (asprintf (&buf, _(bfd_errmsgs [error_tag]),
+		    bfd_get_filename (input_bfd), msg) != -1)
 	return buf;
 
       /* Ick, what to do on out of memory?  */
@@ -1110,10 +1118,10 @@ _bfd_doprnt (FILE *stream, const char *f
 		  else if (abfd->my_archive
 			   && !bfd_is_thin_archive (abfd->my_archive))
 		    result = fprintf (stream, "%s(%s)",
-				      abfd->my_archive->filename,
-				      abfd->filename);
+				      bfd_get_filename (abfd->my_archive),
+				      bfd_get_filename (abfd));
 		  else
-		    result = fprintf (stream, "%s", abfd->filename);
+		    result = fprintf (stream, "%s", bfd_get_filename (abfd));
 		}
 	      else
 		PRINT_TYPE (void *, p);
@@ -2058,7 +2066,8 @@ DESCRIPTION
 .	BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
 .
 .#define bfd_stat_arch_elt(abfd, stat) \
-.	BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
+.	BFD_SEND (abfd->my_archive ? abfd->my_archive : abfd, \
+.		  _bfd_stat_arch_elt, (abfd, stat))
 .
 .#define bfd_update_armap_timestamp(abfd) \
 .	BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
@@ -2162,14 +2171,15 @@ bfd_record_phdr (bfd *abfd,
 		 bfd_boolean flags_valid,
 		 flagword flags,
 		 bfd_boolean at_valid,
-		 bfd_vma at,
+		 bfd_vma at,  /* Bytes.  */
 		 bfd_boolean includes_filehdr,
 		 bfd_boolean includes_phdrs,
 		 unsigned int count,
 		 asection **secs)
 {
   struct elf_segment_map *m, **pm;
-  bfd_size_type amt;
+  size_t amt;
+  unsigned int opb = bfd_octets_per_byte (abfd, NULL);
 
   if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
     return TRUE;
@@ -2182,7 +2192,7 @@ bfd_record_phdr (bfd *abfd,
 
   m->p_type = type;
   m->p_flags = flags;
-  m->p_paddr = at;
+  m->p_paddr = at * opb;
   m->p_flags_valid = flags_valid;
   m->p_paddr_valid = at_valid;
   m->includes_filehdr = includes_filehdr;
@@ -2481,8 +2491,7 @@ bfd_demangle (bfd *abfd, const char *nam
 
   res = cplus_demangle (name, options);
 
-  if (alloc != NULL)
-    free (alloc);
+  free (alloc);
 
   if (res == NULL)
     {
@@ -2540,59 +2549,60 @@ void
 bfd_update_compression_header (bfd *abfd, bfd_byte *contents,
 			       asection *sec)
 {
-  if ((abfd->flags & BFD_COMPRESS) != 0)
+  if ((abfd->flags & BFD_COMPRESS) == 0)
+    abort ();
+
+  switch (bfd_get_flavour (abfd))
     {
-      if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+    case bfd_target_elf_flavour:
+      if ((abfd->flags & BFD_COMPRESS_GABI) != 0)
 	{
-	  if ((abfd->flags & BFD_COMPRESS_GABI) != 0)
-	    {
-	      const struct elf_backend_data *bed
-		= get_elf_backend_data (abfd);
+	  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+	  struct bfd_elf_section_data * esd = elf_section_data (sec);
 
-	      /* Set the SHF_COMPRESSED bit.  */
-	      elf_section_flags (sec) |= SHF_COMPRESSED;
+	  /* Set the SHF_COMPRESSED bit.  */
+	  elf_section_flags (sec) |= SHF_COMPRESSED;
 
-	      if (bed->s->elfclass == ELFCLASS32)
-		{
-		  Elf32_External_Chdr *echdr
-		    = (Elf32_External_Chdr *) contents;
-		  bfd_put_32 (abfd, ELFCOMPRESS_ZLIB, &echdr->ch_type);
-		  bfd_put_32 (abfd, sec->size, &echdr->ch_size);
-		  bfd_put_32 (abfd, 1 << sec->alignment_power,
-			      &echdr->ch_addralign);
-		  /* bfd_log2 (alignof (Elf32_Chdr)) */
-		  bfd_set_section_alignment (sec, 2);
-		}
-	      else
-		{
-		  Elf64_External_Chdr *echdr
-		    = (Elf64_External_Chdr *) contents;
-		  bfd_put_32 (abfd, ELFCOMPRESS_ZLIB, &echdr->ch_type);
-		  bfd_put_32 (abfd, 0, &echdr->ch_reserved);
-		  bfd_put_64 (abfd, sec->size, &echdr->ch_size);
-		  bfd_put_64 (abfd, 1 << sec->alignment_power,
-			      &echdr->ch_addralign);
-		  /* bfd_log2 (alignof (Elf64_Chdr)) */
-		  bfd_set_section_alignment (sec, 3);
-		}
+	  if (bed->s->elfclass == ELFCLASS32)
+	    {
+	      Elf32_External_Chdr *echdr = (Elf32_External_Chdr *) contents;
+	      bfd_put_32 (abfd, ELFCOMPRESS_ZLIB, &echdr->ch_type);
+	      bfd_put_32 (abfd, sec->size, &echdr->ch_size);
+	      bfd_put_32 (abfd, 1 << sec->alignment_power,
+			  &echdr->ch_addralign);
+	      /* bfd_log2 (alignof (Elf32_Chdr)) */
+	      bfd_set_section_alignment (sec, 2);
+	      esd->this_hdr.sh_addralign = 4;
 	    }
 	  else
 	    {
-	      /* Clear the SHF_COMPRESSED bit.  */
-	      elf_section_flags (sec) &= ~SHF_COMPRESSED;
-
-	      /* Write the zlib header.  It should be "ZLIB" followed by
-		 the uncompressed section size, 8 bytes in big-endian
-		 order.  */
-	      memcpy (contents, "ZLIB", 4);
-	      bfd_putb64 (sec->size, contents + 4);
-	      /* No way to keep the original alignment, just use 1 always. */
-	      bfd_set_section_alignment (sec, 0);
+	      Elf64_External_Chdr *echdr = (Elf64_External_Chdr *) contents;
+	      bfd_put_32 (abfd, ELFCOMPRESS_ZLIB, &echdr->ch_type);
+	      bfd_put_32 (abfd, 0, &echdr->ch_reserved);
+	      bfd_put_64 (abfd, sec->size, &echdr->ch_size);
+	      bfd_put_64 (abfd, 1 << sec->alignment_power,
+			  &echdr->ch_addralign);
+	      /* bfd_log2 (alignof (Elf64_Chdr)) */
+	      bfd_set_section_alignment (sec, 3);
+	      esd->this_hdr.sh_addralign = 8;
 	    }
+	  break;
 	}
+
+      /* Clear the SHF_COMPRESSED bit.  */
+      elf_section_flags (sec) &= ~SHF_COMPRESSED;
+      /* Fall through.  */
+
+    default:
+      /* Write the zlib header.  It should be "ZLIB" followed by
+	 the uncompressed section size, 8 bytes in big-endian
+	 order.  */
+      memcpy (contents, "ZLIB", 4);
+      bfd_putb64 (sec->size, contents + 4);
+      /* No way to keep the original alignment, just use 1 always. */
+      bfd_set_section_alignment (sec, 0);
+      break;
     }
-  else
-    abort ();
 }
 
 /*
@@ -2770,7 +2780,7 @@ bfd_convert_section_contents (bfd *ibfd,
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
     return TRUE;
 
-  /* Do nothing if ELF classes of input and output are the same. */
+  /* Do nothing if ELF classes of input and output are the same.  */
   if (get_elf_backend_data (ibfd)->s->elfclass
       == get_elf_backend_data (obfd)->s->elfclass)
     return TRUE;
@@ -2784,11 +2794,17 @@ bfd_convert_section_contents (bfd *ibfd,
   if ((ibfd->flags & BFD_DECOMPRESS))
     return TRUE;
 
-  /* Do nothing if the input section isn't a SHF_COMPRESSED section. */
+  /* Do nothing if the input section isn't a SHF_COMPRESSED section.  */
   ihdr_size = bfd_get_compression_header_size (ibfd, isec);
   if (ihdr_size == 0)
     return TRUE;
 
+  /* PR 25221.  Check for corrupt input sections.  */
+  if (ihdr_size > bfd_get_section_limit (ibfd, isec))
+    /* FIXME: Issue a warning about a corrupt
+       compression header size field ?  */
+    return FALSE;
+
   contents = *ptr;
 
   /* Convert the contents of the input SHF_COMPRESSED section to
@@ -2805,6 +2821,12 @@ bfd_convert_section_contents (bfd *ibfd,
 
       use_memmove = FALSE;
     }
+  else if (ihdr_size != sizeof (Elf64_External_Chdr))
+    {
+      /* FIXME: Issue a warning about a corrupt
+	 compression header size field ?  */
+      return FALSE;
+    }
   else
     {
       Elf64_External_Chdr *echdr = (Elf64_External_Chdr *) contents;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfd-in2.h ./bfd/bfd-in2.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfd-in2.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/bfd-in2.h	2021-05-21 01:57:23.000000000 +0000
@@ -7,7 +7,7 @@
 
 /* Main header file for the bfd library -- portable access to object files.
 
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
 
@@ -643,7 +643,7 @@ bfd_boolean bfd_fill_in_gnu_debuglink_se
 
 char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir);
 
-void bfd_set_filename (bfd *abfd, char *filename);
+const char *bfd_set_filename (bfd *abfd, const char *filename);
 
 /* Extracted from libbfd.c.  */
 
@@ -700,7 +700,7 @@ bfd_vma bfd_getl24 (const void *p);
   BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
 
 #define bfd_get(bits, abfd, ptr)                       \
-  ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
+  ((bits) == 8 ? bfd_get_8 (abfd, ptr)                 \
    : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
    : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
    : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
@@ -795,6 +795,10 @@ typedef struct bfd_section
   /* A unique sequence number.  */
   unsigned int id;
 
+  /* A unique section number which can be used by assembler to
+     distinguish different sections with the same section name.  */
+  unsigned int section_id;
+
   /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
   unsigned int index;
 
@@ -928,6 +932,10 @@ typedef struct bfd_section
      else up the line will take care of it later.  */
 #define SEC_LINKER_CREATED           0x100000
 
+  /* This section contains a section ID to distinguish different
+     sections with the same section name.  */
+#define SEC_ASSEMBLER_SECTION_ID     0x100000
+
   /* This section should not be subject to garbage collection.
      Also set to inform the linker that this section should not be
      listed in the link map as discarded.  */
@@ -1177,11 +1185,17 @@ typedef struct bfd_section
   /* Early in the link process, map_head and map_tail are used to build
      a list of input sections attached to an output section.  Later,
      output sections use these fields for a list of bfd_link_order
-     structs.  */
+     structs.  The linked_to_symbol_name field is for ELF assembler
+     internal use.  */
   union {
     struct bfd_link_order *link_order;
     struct bfd_section *s;
+    const char *linked_to_symbol_name;
   } map_head, map_tail;
+ /* Points to the output section this section is already assigned to, if any.
+    This is used when support for non-contiguous memory regions is enabled.  */
+ struct bfd_section *already_assigned;
+
 } asection;
 
 /* Relax table contains information about instructions which can
@@ -1315,7 +1329,9 @@ bfd_is_ind_section (const asection *sec)
 static inline bfd_boolean
 bfd_is_const_section (const asection *sec)
 {
-  return sec >= bfd_abs_section_ptr && sec <= bfd_ind_section_ptr;
+  return (sec >= _bfd_std_section
+          && sec < _bfd_std_section + (sizeof (_bfd_std_section)
+                                       / sizeof (_bfd_std_section[0])));
 }
 
 /* Return TRUE if input section SEC has been discarded.  */
@@ -1329,41 +1345,42 @@ discarded_section (const asection *sec)
 }
 
 #define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS)                   \
-  /* name, id,  index, next, prev, flags, user_set_vma,            */  \
-  {  NAME, IDX, 0,     NULL, NULL, FLAGS, 0,                           \
+  /* name, id,  section_id, index, next, prev, flags, user_set_vma, */ \
+  {  NAME, IDX, 0,          0,     NULL, NULL, FLAGS, 0,               \
                                                                        \
-  /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
+  /* linker_mark, linker_has_input, gc_mark, decompress_status,     */ \
      0,           0,                1,       0,                        \
                                                                        \
-  /* segment_mark, sec_info_type, use_rela_p,                      */  \
+  /* segment_mark, sec_info_type, use_rela_p,                       */ \
      0,            0,             0,                                   \
                                                                        \
-  /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,   */  \
+  /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,    */ \
      0,        0,        0,        0,        0,        0,              \
                                                                        \
-  /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */  \
+  /* vma, lma, size, rawsize, compressed_size, relax, relax_count,  */ \
      0,   0,   0,    0,       0,               0,     0,               \
                                                                        \
-  /* output_offset, output_section, alignment_power,               */  \
+  /* output_offset, output_section, alignment_power,                */ \
      0,             &SEC,           0,                                 \
                                                                        \
-  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
+  /* relocation, orelocation, reloc_count, filepos, rel_filepos,    */ \
      NULL,       NULL,        0,           0,       0,                 \
                                                                        \
-  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
+  /* line_filepos, userdata, contents, lineno, lineno_count,        */ \
      0,            NULL,     NULL,     NULL,   0,                      \
                                                                        \
   /* entsize, kept_section, moving_line_filepos,                    */ \
-     0,       NULL,          0,                                        \
+     0,       NULL,         0,                                         \
                                                                        \
-  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
+  /* target_index, used_by_bfd, constructor_chain, owner,           */ \
      0,            NULL,        NULL,              NULL,               \
                                                                        \
-  /* symbol,                    symbol_ptr_ptr,                    */  \
+  /* symbol,                    symbol_ptr_ptr,                     */ \
      (struct bfd_symbol *) SYM, &SEC.symbol,                           \
                                                                        \
-  /* map_head, map_tail                                            */  \
-     { NULL }, { NULL }                                                \
+  /* map_head, map_tail, already_assigned                           */ \
+     { NULL }, { NULL }, NULL                                          \
+                                                                       \
     }
 
 /* We use a macro to initialize the static asymbol structures because
@@ -1594,10 +1611,6 @@ enum bfd_architecture
   bfd_arch_k1om,      /* Intel K1OM.  */
 #define bfd_mach_k1om                  (1 << 6)
 #define bfd_mach_k1om_intel_syntax     (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
-#define bfd_mach_i386_nacl             (1 << 7)
-#define bfd_mach_i386_i386_nacl        (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
-#define bfd_mach_x86_64_nacl           (bfd_mach_x86_64 | bfd_mach_i386_nacl)
-#define bfd_mach_x64_32_nacl           (bfd_mach_x64_32 | bfd_mach_i386_nacl)
   bfd_arch_iamcu,     /* Intel MCU.  */
 #define bfd_mach_iamcu                 (1 << 8)
 #define bfd_mach_i386_iamcu            (bfd_mach_i386_i386 | bfd_mach_iamcu)
@@ -1615,7 +1628,6 @@ enum bfd_architecture
 #define bfd_mach_h8300sx       6
 #define bfd_mach_h8300sxn      7
   bfd_arch_pdp11,     /* DEC PDP-11.  */
-  bfd_arch_plugin,
   bfd_arch_powerpc,   /* PowerPC.  */
 #define bfd_mach_ppc           32
 #define bfd_mach_ppc64         64
@@ -1738,7 +1750,6 @@ enum bfd_architecture
 #define bfd_mach_tic4x         40
   bfd_arch_tic54x,    /* Texas Instruments TMS320C54X.  */
   bfd_arch_tic6x,     /* Texas Instruments TMS320C6X.  */
-  bfd_arch_tic80,     /* TI TMS320c80 (MVP).  */
   bfd_arch_v850,      /* NEC V850.  */
   bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI).  */
 #define bfd_mach_v850          1
@@ -1800,6 +1811,7 @@ enum bfd_architecture
 #define bfd_mach_iq10          2
   bfd_arch_bpf,       /* Linux eBPF.  */
 #define bfd_mach_bpf           1
+#define bfd_mach_xbpf          2
   bfd_arch_epiphany,  /* Adapteva EPIPHANY.  */
 #define bfd_mach_epiphany16    1
 #define bfd_mach_epiphany32    2
@@ -1889,10 +1901,25 @@ enum bfd_architecture
   bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
 #define bfd_mach_xtensa        1
   bfd_arch_z80,
-#define bfd_mach_z80strict     1 /* No undocumented opcodes.  */
-#define bfd_mach_z80           3 /* With ixl, ixh, iyl, and iyh.  */
-#define bfd_mach_z80full       7 /* All undocumented instructions.  */
-#define bfd_mach_r800          11 /* R800: successor with multiplication.  */
+/* Zilog Z80 without undocumented opcodes.  */
+#define bfd_mach_z80strict     1
+/* Zilog Z180: successor with additional instructions, but without
+ halves of ix and iy.  */
+#define bfd_mach_z180          2
+/* Zilog Z80 with ixl, ixh, iyl, and iyh.  */
+#define bfd_mach_z80           3
+/* Zilog eZ80 (successor of Z80 & Z180) in Z80 (16-bit address) mode.  */
+#define bfd_mach_ez80_z80      4
+/* Zilog eZ80 (successor of Z80 & Z180) in ADL (24-bit address) mode.  */
+#define bfd_mach_ez80_adl      5
+/* Z80N */
+#define bfd_mach_z80n          6
+/* Zilog Z80 with all undocumented instructions.  */
+#define bfd_mach_z80full       7
+/* GameBoy Z80 (reduced instruction set).  */
+#define bfd_mach_gbz80         8
+/* ASCII R800: successor with multiplication.  */
+#define bfd_mach_r800          11
   bfd_arch_lm32,      /* Lattice Mico32.  */
 #define bfd_mach_lm32          1
   bfd_arch_microblaze,/* Xilinx MicroBlaze.  */
@@ -1903,6 +1930,7 @@ enum bfd_architecture
 #define bfd_mach_tilegx32      2
   bfd_arch_aarch64,   /* AArch64.  */
 #define bfd_mach_aarch64 0
+#define bfd_mach_aarch64_8R    1
 #define bfd_mach_aarch64_ilp32 32
   bfd_arch_nios2,     /* Nios II.  */
 #define bfd_mach_nios2         0
@@ -1926,6 +1954,7 @@ enum bfd_architecture
 #define bfd_mach_ck803         5
 #define bfd_mach_ck807         6
 #define bfd_mach_ck810         7
+#define bfd_mach_ck860         8
   bfd_arch_last
   };
 
@@ -3015,10 +3044,10 @@ instruction.  */
   BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
   BFD_RELOC_PPC64_TPREL34,
   BFD_RELOC_PPC64_DTPREL34,
-  BFD_RELOC_PPC64_GOT_TLSGD34,
-  BFD_RELOC_PPC64_GOT_TLSLD34,
-  BFD_RELOC_PPC64_GOT_TPREL34,
-  BFD_RELOC_PPC64_GOT_DTPREL34,
+  BFD_RELOC_PPC64_GOT_TLSGD_PCREL34,
+  BFD_RELOC_PPC64_GOT_TLSLD_PCREL34,
+  BFD_RELOC_PPC64_GOT_TPREL_PCREL34,
+  BFD_RELOC_PPC64_GOT_DTPREL_PCREL34,
   BFD_RELOC_PPC64_TLS_PCREL,
 
 /* IBM 370/390 relocations  */
@@ -5085,6 +5114,8 @@ then it may be truncated to 8 bits.  */
   BFD_RELOC_MSP430_ABS_HI16,
   BFD_RELOC_MSP430_PREL31,
   BFD_RELOC_MSP430_SYM_DIFF,
+  BFD_RELOC_MSP430_SET_ULEB128,
+  BFD_RELOC_MSP430_SUB_ULEB128,
 
 /* Relocations used by the Altera Nios II core.  */
   BFD_RELOC_NIOS2_S16,
@@ -5194,7 +5225,9 @@ to one of its own internal functions or
 PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
   BFD_RELOC_XTENSA_PLT,
 
-/* Xtensa relocations to mark the difference of two local symbols.
+/* Xtensa relocations for backward compatibility.  These have been replaced
+by BFD_RELOC_XTENSA_PDIFF and BFD_RELOC_XTENSA_NDIFF.
+Xtensa relocations to mark the difference of two local symbols.
 These are only needed to support linker relaxation and can be ignored
 when not relaxing.  The field is set to the value of the difference
 assuming no relaxation.  The relocation encodes the position of the
@@ -5268,9 +5301,46 @@ BFD_RELOC_XTENSA_ASM_EXPAND.  */
   BFD_RELOC_XTENSA_TLS_ARG,
   BFD_RELOC_XTENSA_TLS_CALL,
 
+/* Xtensa relocations to mark the difference of two local symbols.
+These are only needed to support linker relaxation and can be ignored
+when not relaxing.  The field is set to the value of the difference
+assuming no relaxation.  The relocation encodes the position of the
+subtracted symbol so the linker can determine whether to adjust the field
+value.  PDIFF relocations are used for positive differences, NDIFF
+relocations are used for negative differences.  The difference value
+is treated as unsigned with these relocation types, giving full
+8/16 value ranges.  */
+  BFD_RELOC_XTENSA_PDIFF8,
+  BFD_RELOC_XTENSA_PDIFF16,
+  BFD_RELOC_XTENSA_PDIFF32,
+  BFD_RELOC_XTENSA_NDIFF8,
+  BFD_RELOC_XTENSA_NDIFF16,
+  BFD_RELOC_XTENSA_NDIFF32,
+
 /* 8 bit signed offset in (ix+d) or (iy+d).  */
   BFD_RELOC_Z80_DISP8,
 
+/* First 8 bits of multibyte (32, 24 or 16 bit) value.  */
+  BFD_RELOC_Z80_BYTE0,
+
+/* Second 8 bits of multibyte (32, 24 or 16 bit) value.  */
+  BFD_RELOC_Z80_BYTE1,
+
+/* Third 8 bits of multibyte (32 or 24 bit) value.  */
+  BFD_RELOC_Z80_BYTE2,
+
+/* Fourth 8 bits of multibyte (32 bit) value.  */
+  BFD_RELOC_Z80_BYTE3,
+
+/* Lowest 16 bits of multibyte (32 or 24 bit) value.  */
+  BFD_RELOC_Z80_WORD0,
+
+/* Highest 16 bits of multibyte (32 or 24 bit) value.  */
+  BFD_RELOC_Z80_WORD1,
+
+/* Like BFD_RELOC_16 but big-endian.  */
+  BFD_RELOC_Z80_16_BE,
+
 /* DJNZ offset.  */
   BFD_RELOC_Z8K_DISP7,
 
@@ -6453,12 +6523,6 @@ struct bfd
   /* A unique identifier of the BFD  */
   unsigned int id;
 
-  /* The format which belongs to the BFD. (object, core, etc.)  */
-  ENUM_BITFIELD (bfd_format) format : 3;
-
-  /* The direction with which the BFD was opened.  */
-  ENUM_BITFIELD (bfd_direction) direction : 2;
-
   /* Format_specific flags.  */
   flagword flags;
 
@@ -6562,6 +6626,12 @@ struct bfd
    | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
    | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
 
+  /* The format which belongs to the BFD. (object, core, etc.)  */
+  ENUM_BITFIELD (bfd_format) format : 3;
+
+  /* The direction with which the BFD was opened.  */
+  ENUM_BITFIELD (bfd_direction) direction : 2;
+
   /* Is the file descriptor being cached?  That is, can it be closed as
      needed, and re-opened when accessed later?  */
   unsigned int cacheable : 1;
@@ -6613,13 +6683,16 @@ struct bfd
   /* Set if this is a slim LTO object not loaded with a compiler plugin.  */
   unsigned int lto_slim_object : 1;
 
+  /* Do not attempt to modify this file.  Set when detecting errors
+     that BFD is not prepared to handle for objcopy/strip.  */
+  unsigned int read_only : 1;
+
   /* Set to dummy BFD created when claimed by a compiler plug-in
      library.  */
   bfd *plugin_dummy_bfd;
 
-  /* Currently my_archive is tested before adding origin to
-     anything. I believe that this can become always an add of
-     origin, with origin set to 0 for non archive files.  */
+  /* The offset of this bfd in the file, typically 0 if it is not
+     contained in an archive.  */
   ufile_ptr origin;
 
   /* The origin in the archive of the proxy entry.  This will
@@ -6651,7 +6724,7 @@ struct bfd
 
   /* Symbol table for output BFD (with symcount entries).
      Also used by the linker to cache input BFD symbols.  */
-  struct bfd_symbol  **outsymbols;
+  struct bfd_symbol **outsymbols;
 
   /* Used for input and output.  */
   unsigned int symcount;
@@ -6662,6 +6735,11 @@ struct bfd
   /* Pointer to structure which contains architecture information.  */
   const struct bfd_arch_info *arch_info;
 
+  /* Cached length of file for bfd_get_size.  0 until bfd_get_size is
+     called, 1 if stat returns an error or the file size is too large to
+     return in ufile_ptr.  Both 0 and 1 should be treated as "unknown".  */
+  ufile_ptr size;
+
   /* Stuff only useful for archives.  */
   void *arelt_data;
   struct bfd *my_archive;      /* The containing archive BFD.  */
@@ -7072,7 +7150,8 @@ bfd_boolean bfd_set_private_flags (bfd *
        BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
 
 #define bfd_stat_arch_elt(abfd, stat) \
-       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
+       BFD_SEND (abfd->my_archive ? abfd->my_archive : abfd, \
+                 _bfd_stat_arch_elt, (abfd, stat))
 
 #define bfd_update_armap_timestamp(abfd) \
        BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
@@ -7245,6 +7324,8 @@ typedef struct bfd_link_info _bfd_link_i
 /* Forward declaration.  */
 typedef struct flag_info flag_info;
 
+typedef void (*bfd_cleanup) (bfd *);
+
 typedef struct bfd_target
 {
   /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
@@ -7309,9 +7390,9 @@ typedef struct bfd_target
   /* Format dependent routines: these are vectors of entry points
      within the target vector structure, one for each format to check.  */
 
-  /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
-  const struct bfd_target *
-              (*_bfd_check_format[bfd_type_end]) (bfd *);
+  /* Check the format of a file being read.  Return a <<bfd_cleanup>> on
+     success or zero on failure.  */
+  bfd_cleanup (*_bfd_check_format[bfd_type_end]) (bfd *);
 
   /* Set the format of a file being written.  */
   bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
@@ -7457,9 +7538,10 @@ typedef struct bfd_target
 #define bfd_get_symbol_info(b,p,e) \
        BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
   const char *(*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *,
+                                                 bfd_boolean,
                                                  bfd_boolean *);
-#define bfd_get_symbol_version_string(b,s,h) \
-       BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))
+#define bfd_get_symbol_version_string(b,s,p,h) \
+       BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,p,h))
   bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
   bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
   alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfd-in.h ./bfd/bfd-in.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfd-in.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/bfd-in.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* Main header file for the bfd library -- portable access to object files.
 
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfdio.c ./bfd/bfdio.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfdio.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/bfdio.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low-level I/O routines for BFDs.
 
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Written by Cygnus Support.
 
@@ -25,6 +25,10 @@
 #include <limits.h>
 #include "bfd.h"
 #include "libbfd.h"
+#include "aout/ar.h"
+#if defined (_WIN32)
+#include <windows.h>
+#endif
 
 #ifndef S_IXUSR
 #define S_IXUSR 0100    /* Execute by owner.  */
@@ -92,12 +96,7 @@ _bfd_real_fopen (const char *filename, c
      In fopen-vms.h, they are separated from the mode with a comma.
      Split here.  */
   vms_attr = strchr (modes, ',');
-  if (vms_attr == NULL)
-    {
-      /* No attributes.  */
-      return close_on_exec (fopen (filename, modes));
-    }
-  else
+  if (vms_attr != NULL)
     {
       /* Attributes found.  Split.  */
       size_t modes_len = strlen (modes) + 1;
@@ -115,13 +114,38 @@ _bfd_real_fopen (const char *filename, c
 	}
       return close_on_exec (fopen (filename, at[0], at[1], at[2]));
     }
-#else /* !VMS */
-#if defined (HAVE_FOPEN64)
+
+#elif defined (_WIN32)
+  size_t filelen = strlen (filename) + 1;
+
+  if (filelen > MAX_PATH - 1)
+    {
+      FILE * file;
+      char * fullpath = (char *) malloc (filelen + 8);
+      int    i;
+
+      /* Add a Microsoft recommended prefix that
+	 will allow the extra-long path to work.  */
+      strcpy (fullpath, "\\\\?\\");
+      strcat (fullpath, filename);
+
+      /* Convert any UNIX style path separators into the DOS form.  */
+      for (i = 0; fullpath[i]; i++)
+        {
+          if (IS_UNIX_DIR_SEPARATOR (fullpath[i]))
+	    fullpath[i] = '\\';
+        }
+
+      file = close_on_exec (fopen (fullpath, modes));
+      free (fullpath);
+      return file;
+    }
+
+#elif defined (HAVE_FOPEN64)
   return close_on_exec (fopen64 (filename, modes));
-#else
-  return close_on_exec (fopen (filename, modes));
 #endif
-#endif /* !VMS */
+
+  return close_on_exec (fopen (filename, modes));
 }
 
 /*
@@ -186,6 +210,7 @@ bfd_bread (void *ptr, bfd_size_type size
       offset += abfd->origin;
       abfd = abfd->my_archive;
     }
+  offset += abfd->origin;
 
   /* If this is an archive element, don't read past the end of
      this element.  */
@@ -255,6 +280,7 @@ bfd_tell (bfd *abfd)
       offset += abfd->origin;
       abfd = abfd->my_archive;
     }
+  offset += abfd->origin;
 
   if (abfd->iovec == NULL)
     return 0;
@@ -315,6 +341,7 @@ bfd_seek (bfd *abfd, file_ptr position,
       offset += abfd->origin;
       abfd = abfd->my_archive;
     }
+  offset += abfd->origin;
 
   if (abfd->iovec == NULL)
     {
@@ -415,17 +442,32 @@ DESCRIPTION
 	of space for the 15 bazillon byte table it is about to read.
 	This function at least allows us to answer the question, "is the
 	size reasonable?".
+
+	A return value of zero indicates the file size is unknown.
 */
 
 ufile_ptr
 bfd_get_size (bfd *abfd)
 {
-  struct stat buf;
-
-  if (bfd_stat (abfd, &buf) != 0)
-    return 0;
-
-  return buf.st_size;
+  /* A size of 0 means we haven't yet called bfd_stat.  A size of 1
+     means we have a cached value of 0, ie. unknown.  */
+  if (abfd->size <= 1 || bfd_write_p (abfd))
+    {
+      struct stat buf;
+
+      if (abfd->size == 1 && !bfd_write_p (abfd))
+	return 0;
+
+      if (bfd_stat (abfd, &buf) != 0
+	  || buf.st_size == 0
+	  || buf.st_size - (ufile_ptr) buf.st_size != 0)
+	{
+	  abfd->size = 1;
+	  return 0;
+	}
+      abfd->size = buf.st_size;
+    }
+  return abfd->size;
 }
 
 /*
@@ -445,11 +487,29 @@ DESCRIPTION
 ufile_ptr
 bfd_get_file_size (bfd *abfd)
 {
+  ufile_ptr file_size, archive_size = (ufile_ptr) -1;
+
   if (abfd->my_archive != NULL
       && !bfd_is_thin_archive (abfd->my_archive))
-    return arelt_size (abfd);
+    {
+      struct areltdata *adata = (struct areltdata *) abfd->arelt_data;
+      if (adata != NULL)
+	{
+	  archive_size = adata->parsed_size;
+	  /* If the archive is compressed we can't compare against
+	     file size.  */
+	  if (adata->arch_header != NULL
+	      && memcmp (((struct ar_hdr *) adata->arch_header)->ar_fmag,
+			 "Z\012", 2) == 0)
+	    return archive_size;
+	  abfd = abfd->my_archive;
+	}
+    }
 
-  return bfd_get_size (abfd);
+  file_size = bfd_get_size (abfd);
+  if (archive_size < file_size)
+    return archive_size;
+  return file_size;
 }
 
 /*
@@ -479,6 +539,7 @@ bfd_mmap (bfd *abfd, void *addr, bfd_siz
       offset += abfd->origin;
       abfd = abfd->my_archive;
     }
+  offset += abfd->origin;
 
   if (abfd->iovec == NULL)
     {
@@ -606,8 +667,7 @@ memory_bclose (struct bfd *abfd)
 {
   struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream;
 
-  if (bim->buffer != NULL)
-    free (bim->buffer);
+  free (bim->buffer);
   free (bim);
   abfd->iostream = NULL;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfd.m4 ./bfd/bfd.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfd.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/bfd.m4	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 dnl This file was derived from acinclude.m4.
 dnl
-dnl   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+dnl   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 dnl
 dnl This file is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
@@ -17,15 +17,20 @@ dnl along with this program; see the fil
 dnl <http://www.gnu.org/licenses/>.
 dnl
 
+dnl Check for sys/procfs.h, enforcing structured /proc on Solaris.
+
+AC_DEFUN([BFD_SYS_PROCFS_H],
+[AC_DEFINE(_STRUCTURED_PROC, 1, [Use structured /proc on Solaris.])
+ AC_CHECK_HEADERS(sys/procfs.h)])
+
 dnl Check for existence of a type $1 in sys/procfs.h
 
 AC_DEFUN([BFD_HAVE_SYS_PROCFS_TYPE],
-[AC_MSG_CHECKING([for $1 in sys/procfs.h])
+[AC_REQUIRE([BFD_SYS_PROCFS_H])
+ AC_MSG_CHECKING([for $1 in sys/procfs.h])
  AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_$1,
    [AC_TRY_COMPILE([
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>],
       [$1 avar],
       bfd_cv_have_sys_procfs_type_$1=yes,
@@ -41,12 +46,11 @@ AC_DEFUN([BFD_HAVE_SYS_PROCFS_TYPE],
 dnl Check for existence of member $2 in type $1 in sys/procfs.h
 
 AC_DEFUN([BFD_HAVE_SYS_PROCFS_TYPE_MEMBER],
-[AC_MSG_CHECKING([for $1.$2 in sys/procfs.h])
+[AC_REQUIRE([BFD_SYS_PROCFS_H])
+ AC_MSG_CHECKING([for $1.$2 in sys/procfs.h])
  AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_member_$1_$2,
    [AC_TRY_COMPILE([
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>],
       [$1 avar; void* aref = (void*) &avar.$2],
       bfd_cv_have_sys_procfs_type_member_$1_$2=yes,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfdwin.c ./bfd/bfdwin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/bfdwin.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/bfdwin.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for memory-mapped windows into a BFD.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -150,6 +150,7 @@ bfd_get_file_window (bfd *abfd,
 	  offset += abfd->origin;
 	  abfd = abfd->my_archive;
 	}
+      offset += abfd->origin;
 
       /* Seek into the file, to ensure it is open if cacheable.  */
       if (abfd->iostream == NULL
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/binary.c ./bfd/binary.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/binary.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/binary.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for binary objects.
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -19,10 +19,10 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
-/* This is a BFD backend which may be used to write binary objects.
-   It may only be used for output, not input.  The intention is that
-   this may be used as an output format for objcopy in order to
-   generate raw binary data.
+/* This is a BFD backend which may be used to read or write binary
+   objects.  Historically, it was used as an output format for objcopy
+   in order to generate raw binary data, but is now used for other
+   purposes as well.
 
    This is very simple.  The only complication is that the real data
    will start at some address X, and in some cases we will not want to
@@ -53,7 +53,7 @@ binary_mkobject (bfd *abfd ATTRIBUTE_UNU
    was not defaulted.  That is, it must be explicitly specified as
    being binary.  */
 
-static const bfd_target *
+static bfd_cleanup
 binary_object_p (bfd *abfd)
 {
   struct stat statbuf;
@@ -86,7 +86,7 @@ binary_object_p (bfd *abfd)
 
   abfd->tdata.any = (void *) sec;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 #define binary_close_and_cleanup     _bfd_generic_close_and_cleanup
@@ -97,12 +97,12 @@ binary_object_p (bfd *abfd)
 
 static bfd_boolean
 binary_get_section_contents (bfd *abfd,
-			     asection *section ATTRIBUTE_UNUSED,
+			     asection *section,
 			     void * location,
 			     file_ptr offset,
 			     bfd_size_type count)
 {
-  if (bfd_seek (abfd, offset, SEEK_SET) != 0
+  if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
       || bfd_bread (location, count, abfd) != count)
     return FALSE;
   return TRUE;
@@ -151,7 +151,7 @@ binary_canonicalize_symtab (bfd *abfd, a
   asection *sec = (asection *) abfd->tdata.any;
   asymbol *syms;
   unsigned int i;
-  bfd_size_type amt = BIN_SYMS * sizeof (asymbol);
+  size_t amt = BIN_SYMS * sizeof (asymbol);
 
   syms = (asymbol *) bfd_alloc (abfd, amt);
   if (syms == NULL)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cache.c ./bfd/cache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cache.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cache.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* BFD library -- caching of file descriptors.
 
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
 
@@ -592,15 +592,17 @@ bfd_open_file (bfd *abfd)
     {
     case read_direction:
     case no_direction:
-      abfd->iostream = _bfd_real_fopen (abfd->filename, FOPEN_RB);
+      abfd->iostream = _bfd_real_fopen (bfd_get_filename (abfd), FOPEN_RB);
       break;
     case both_direction:
     case write_direction:
       if (abfd->opened_once)
 	{
-	  abfd->iostream = _bfd_real_fopen (abfd->filename, FOPEN_RUB);
+	  abfd->iostream = _bfd_real_fopen (bfd_get_filename (abfd),
+					    FOPEN_RUB);
 	  if (abfd->iostream == NULL)
-	    abfd->iostream = _bfd_real_fopen (abfd->filename, FOPEN_WUB);
+	    abfd->iostream = _bfd_real_fopen (bfd_get_filename (abfd),
+					      FOPEN_WUB);
 	}
       else
 	{
@@ -627,10 +629,11 @@ bfd_open_file (bfd *abfd)
 	     the --info option.  */
 	  struct stat s;
 
-	  if (stat (abfd->filename, &s) == 0 && s.st_size != 0)
-	    unlink_if_ordinary (abfd->filename);
+	  if (stat (bfd_get_filename (abfd), &s) == 0 && s.st_size != 0)
+	    unlink_if_ordinary (bfd_get_filename (abfd));
 #endif
-	  abfd->iostream = _bfd_real_fopen (abfd->filename, FOPEN_WUB);
+	  abfd->iostream = _bfd_real_fopen (bfd_get_filename (abfd),
+					    FOPEN_WUB);
 	  abfd->opened_once = TRUE;
 	}
       break;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cf-i386lynx.c ./bfd/cf-i386lynx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cf-i386lynx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cf-i386lynx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Intel 386 COFF LynxOS files.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ChangeLog ./bfd/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ChangeLog	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/ChangeLog	2021-05-21 01:57:23.000000000 +0000
@@ -1,3003 +1,4323 @@
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
+2020-09-13  Joel Brobecker  <brobecker@adacore.com>
 
 	* development.sh (development): Set to false.
 
-2019-12-11  Alan Modra  <amodra@gmail.com>
+2020-09-12  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* elf32-rx.c (elf32_rx_relax_section): Avoid signed overflow.
-	* libaout.h (N_SET_INFO, N_SET_FLAGS): Likewise.
-	* netbsd.h (write_object_contents): Likewise.
-	* elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Likewise.
-	* libhppa.h (HPPA_R_CONSTANT): Don't signed extend with shifts.
-	(stm32l4xx_create_replacing_stub_vldm): Don't truncate high bits
-	with shifts.
-	* elf32-nds32.h (R_NDS32_RELAX_ENTRY_DISABLE_RELAX_FLAG): Define
-	using 1u shifted left.  Ditto for other macros.
-	* mmo.c (LOP): Make unsigned.
+	PR ld/26391
+	* elflink.c (elf_final_link_info): Add local_hash_table.
+	(local_hash_entry): New.
+	(local_hash_newfunc): Likewise.
+	(elf_link_output_symstrtab): Append ".COUNT" to duplicated local
+	symbols.
+	(bfd_elf_final_link): Initialize and free local_hash_table for
+	"-z unique-symbol".
 
-2019-12-11  Alan Modra  <amodra@gmail.com>
+2020-09-10  Siddhesh Poyarekar  <siddesh.poyarekar@arm.com>
 
-	* libbfd.c (bfd_get_8): Return a bfd_vma.
-	(bfd_get_signed_8): Return a bfd_signed_vma.
-	* bfd-in2.h: Regenerate.
+	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Revert
+	changes in 7e05773767820b441b23a16628b55c98cb1aef46.  Set
+	error for undefined symbol in BFD_RELOC_AARCH64_BRANCH19 and
+	BFD_RELOC_AARCH64_TSTBR14 relocations.
 
-2019-12-11  Alan Modra  <amodra@gmail.com>
+2020-09-09  Nick Clifton  <nickc@redhat.com>
 
-	* xtensa-modules.c (Field_* functions): Don't mask using shifts.
-	(Operand_soffsetx4_decode, Operand_simm4_decode),
-	(Operand_simm8_decode, Operand_simm8x256_decode),
-	(Operand_simm12b_decode, Operand_label8_decode),
-	(Operand_label12_decode, Operand_soffset_decode),
-	(Operand_xt_wbr15_label_decode, Operand_xt_wbr18_label_decode): Don't
-	sign extend using shifts.
-	(Operand_immrx4_decode, Operand_uimm16x4_decode): Avoid UB in
-	constant.
-
-2019-12-11  Alan Modra  <amodra@gmail.com>
-
-	* cpu-ia64-opc.c (ext_imms_scaled): Avoid undefined left shift
-	of negative values by using unsigned vars.
-
-2019-12-07  Alan Modra  <amodra@gmail.com>
-
-	PR 25236
-	* elflink.c (_bfd_elf_link_assign_sym_version): Assign versions
-	for ELF_COMMON_DEF_P symbols.
-	(elf_link_output_extsym, _bfd_elf_add_default_symbol): Adjust to
-	suit.
-
-2019-12-05  Sandra Loosemore  <sandra@codesourcery.com>
-
-	Only give FDE encoding warnings if --eh-frame-hdr was specified.
-
-	* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Make
-	FDE encoding warning conditional.
-
-2019-12-05  Nick Clifton  <nickc@redhat.com>
-
-	PR 25029
-	* peXXigen.c (_bfd_XXi_swap_aouthdr_out): Ignore empty sections
-	when computing the sizes stored in the headers.
-
-2019-12-03  Alan Modra  <amodra@gmail.com>
-
-	PR 25230
-	* dwarf2.c (struct dwarf2_debug_file): Add line_table and
-	abbrev_offsets.
-	(struct abbrev_offset_entry): New.
-	(hash_abbrev, eq_abbrev, del_abbrev): New functions.
-	(read_abbrevs): Check whether we have already read abbrevs at
-	given offset, and add new offset/abbrev to hash table.
-	(decode_line_info): Keep line table at offset zero in file struct.
-	Return this for a cu reusing the same dir/file list.
-	(find_abstract_instance): Find cu for DW_FORM_GNU_ref_alt.
-	(_bfd_dwarf2_slurp_debug_info): Create offset/abbrev hash tables.
-	(_bfd_dwarf2_cleanup_debug_info): Adjust deletion of lines and
-	abbrevs.
-
-2019-12-03  Alan Modra  <amodra@gmail.com>
-
-	PR 25230
-	* dwarf2.c (struct dwarf2_debug_file): New struct.
-	(struct dwarf2_debug): Delete fields now in dwarf2_debug_file.
-	Add f, alt fields.
-	(struct comp_unit): Add file field.
-	(read_indirect_string, read_indirect_line_string): Adjust to suit.
-	(read_alt_indirect_string, read_alt_indirect_ref): Likewise.
-	(read_debug_ranges, find_abstract_instance, read_rangelist): Likewise.
-	(_bfd_dwarf2_stash_syms, place_sections): Likewise.
-	(stash_maybe_update_info_hash_tablse): Likewise.
-	(stash_verify_info_hash_table): Likewise.
-	(_bfd_dwarf2_slurp_debug_info): Likewise.
-	(_bfd_dwarf2_find_symbol_bias): Likewise.
-	(_bfd_dwarf2_find_nearest_line): Likewise.
-	(_bfd_dwarf2_cleanup_debug_info): Likewise.
-	(read_abbrevs): Add file param and adjust.  Update calls.
-	(stash_comp_unit): Likewise.
-	(decode_line_info): Delete stash param and adjust.  Update calls.
-	(comp_unit_find_nearest_line): Likewise.
-	(comp_unit_maybe_decode_line_info): Likewise.
-	(comp_unit_find_line): Likewise.
-	(parse_comp_unit): Add file and info_ptr param and adjust.  Update
-	calls.
-
-2019-12-03  Alan Modra  <amodra@gmail.com>
-
-	* dwarf2.c (read_indirect_string): Don't duplicate offset check
-	done in read_section.
-	(read_indirect_line_string): Likewise.
-	(read_alt_indirect_string): Likewise.
-	(read_alt_indirect_ref): Likewise.
-	(read_abbrevs): Likewise.  Free memory on all failure paths.
-	Use correct unsigned type for pointer difference comparison.
-
-2019-12-03  Alan Modra  <amodra@gmail.com>
-
-	* dwarf2.c (struct dwarf2_debug): Update comments.  Remove sec
-	and sec_info_ptr.
-	(_bfd_dwarf2_slurp_debug_info): Don't set sec or sec_info_ptr.
-	(stash_comp_unit): Likewise.
-	(read_alt_indirect_ref): Return NULL not FALSE.
-
-2019-12-03  Alan Modra  <amodra@gmail.com>
-
-	* dwarf2.c (_bfd_dwarf2_find_nearest_line): Correct function comment.
-
-2019-11-27  Alan Modra  <amodra@gmail.com>
-
-	PR 23652
-	* 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.
+	* cofflink.c (coff_link_check_archive_element): Move the check for
+	coff type input to the start of the function.
 
-2019-11-27  Alan Modra  <amodra@gmail.com>
+2020-09-09  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
-	bfd_arch_mach_octets_per_byte.
-	* coff-arm.c (OCTETS_PER_BYTE): Define.
-	(coff_arm_reloc): Introduce new "octets" temp.  Use OCTETS_PER_BYTE
-	with section.  Correct "addr".  Remove ATTRIBUTE_UNUSED.
-	* coff-i386.c (coff_i386_reloc): Similarly.
-	* coff-mips.c (mips_reflo_reloc): Similarly.
-	* coff-x86_64.c (coff_amd64_reloc): Similarly.
-	* elf32-msp430.c (OCTETS_PER_BYTE): Define.
-	(rl78_sym_diff_handler): Use OCTETS_PER_BYTE, with section.
-	* elf32-nds32.c (nds32_elf_get_relocated_section_contents): Similarly.
-	* elf32-ppc.c (ppc_elf_addr16_ha_reloc): Similarly.
-	* elf32-pru.c (pru_elf32_do_ldi32_relocate): Similarly.
-	* elf32-s12z.c (opru18_reloc): Similarly.
-	* elf32-sh.c (sh_elf_reloc): Similarly.
-	* elf32-spu.c (spu_elf_rel9): Similarly.
-	* elf32-xtensa.c (bfd_elf_xtensa_reloc): Similarly.
-	* elf64-ppc.c (ppc64_elf_ha_reloc, ppc64_elf_brtaken_reloc),
-	(ppc64_elf_toc64_reloc): Similarly.
-	* bfd.c (bfd_get_section_limit): Pass section to bfd_octets_per_byte.
-	* cofflink.c (_bfd_coff_link_input_bfd),
-	(_bfd_coff_reloc_link_order): Likewise.
-	* elf.c (_bfd_elf_section_offset): Likewise.
-	* elflink.c (resolve_section, bfd_elf_perform_complex_relocation),
-	(elf_link_input_bfd, elf_reloc_link_order, elf_fixup_link_order),
-	(bfd_elf_final_link): Likewise.
-	* elf.c (_bfd_elf_make_section_from_shdr): Don't strncmp twice
-	to set SEC_ELF_OCTETS.
-	* reloc.c (bfd_perform_relocation): Tidy SEC_ELF_OCTETS special case.
-	(bfd_install_relocation): Likewise.
-	(_bfd_final_link_relocate): Don't recalculate octets.
-	* syms.c (_bfd_stab_section_find_nearest_line): Introduc new
-	"octets" temp.
-	* bfd-in2.h: Regenerate.
+	* libbfd-in.h (_bfd_write_unsigned_leb128): Declare.
+	* libbfd.h: Regenerate.
 
-2019-11-25  Christian Eggers  <ceggers@gmx.de>
+2020-09-08  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+	    Kuan-Lin Chen  <kuanlinchentw@gmail.com>
 
-	* section.c (struct bfd_section): New flag SEC_ELF_OCTETS.
-	* archures.c (bfd_octets_per_byte): New parameter sec.
-	If section is not NULL and SEC_ELF_OCTETS is set, one octet es
-	returned [ELF targets only].
-	* bfd.c (bfd_get_section_limit): Provide section parameter to
-	bfd_octets_per_byte.
-	* bfd-in2.h: regenerate.
-	* binary.c (binary_set_section_contents): Move call to
-	bfd_octets_per_byte into section loop. Provide section parameter
-	to bfd_octets_per_byte.
-	* coff-arm.c (coff_arm_reloc): Provide section parameter
-	to bfd_octets_per_byte.
-	* coff-i386.c (coff_i386_reloc): likewise.
-	* coff-mips.c (mips_reflo_reloc): likewise.
-	* coff-x86_64.c (coff_amd64_reloc): likewise.
-	* cofflink.c (_bfd_coff_link_input_bfd): likewise.
-	(_bfd_coff_reloc_link_order): likewise.
-	* elf.c (_bfd_elf_section_offset): likewise.
-	(_bfd_elf_make_section_from_shdr): likewise.
-	Set SEC_ELF_OCTETS for sections with names .gnu.build.attributes,
-	.debug*, .zdebug* and .note.gnu*.
-	* elf32-msp430.c (rl78_sym_diff_handler): Provide section parameter
-	to bfd_octets_per_byte.
-	* elf32-nds.c (nds32_elf_get_relocated_section_contents): likewise.
-	* elf32-ppc.c (ppc_elf_addr16_ha_reloc): likewise.
-	* elf32-pru.c (pru_elf32_do_ldi32_relocate): likewise.
-	* elf32-s12z.c (opru18_reloc): likewise.
-	* elf32-sh.c (sh_elf_reloc): likewise.
-	* elf32-spu.c (spu_elf_rel9): likewise.
-	* elf32-xtensa.c (bfd_elf_xtensa_reloc): likewise
-	* elf64-ppc.c (ppc64_elf_brtaken_reloc): likewise.
-	(ppc64_elf_addr16_ha_reloc): likewise.
-	(ppc64_elf_toc64_reloc): likewise.
-	* elflink.c (bfd_elf_final_link): likewise.
-	(bfd_elf_perform_complex_relocation): likewise.
-	(elf_fixup_link_order): likewise.
-	(elf_link_input_bfd): likewise.
-	(elf_link_sort_relocs): likewise.
-	(elf_reloc_link_order): likewise.
-	(resolve_section): likewise.
-	* linker.c (_bfd_generic_reloc_link_order): likewise.
-	(bfd_generic_define_common_symbol): likewise.
-	(default_data_link_order): likewise.
-	(default_indirect_link_order): likewise.
-	* srec.c (srec_set_section_contents): likewise.
-	(srec_write_section): likewise.
-	* syms.c (_bfd_stab_section_find_nearest_line): likewise.
-	* reloc.c (_bfd_final_link_relocate): likewise.
-	(bfd_generic_get_relocated_section_contents): likewise.
-	(bfd_install_relocation): likewise.
-	For section which have SEC_ELF_OCTETS set, multiply output_base
-	and output_offset with bfd_octets_per_byte.
-	(bfd_perform_relocation): likewise.
-
-2019-11-21  Alan Modra  <amodra@gmail.com>
-
-	* elf32-arm.c (elf32_arm_size_stubs): Exclude dynamic library
-	BFDs that have not been loaded.
-
-2019-11-19  Alan Modra  <amodra@gmail.com>
-
-	PR 25197
-	* coffgen.c (coff_find_nearest_line_with_names): Check that C_FILE
-	u.syment.n_value does point at another C_FILE sym and not into
-	some auxent that happens to look like a C_FILE.  Properly check
-	for integer overflow and avoid possible pointer wrap-around.
-	Simplify pr17512 checks.
-
-2019-11-19  Alan Modra  <amodra@gmail.com>
-
-	PR 25200
-	* reloc.c (bfd_default_reloc_type_lookup): Don't BFD_FAIL.
-	* elf.c (_bfd_elf_validate_reloc): Don't segfault on NULL howto.
-
-2019-11-18  Alan Modra  <amodra@gmail.com>
-
-	* elf-bfd.h (struct elf_backend_data <elf_backend_init_file_header>):
-	Rename from elf_backend_post_process_headers.
-	(_bfd_elf_post_process_headers): Delete.
-	(_bfd_elf_init_file_header): Declare.
-	* elf.c (_bfd_elf_compute_section_file_positions): Call new function
-	in place of prep_headers and elf_backend_post_process_headers.
-	(_bfd_elf_init_file_header): Renamed from prep_headers with
-	updated args and made global.  Delete dead code.
-	(_bfd_elf_post_process_headers): Delete.
-	* elf32-arm.c (elf32_arm_init_file_header): Rename from
-	elf32_arm_post_process_headers and call _bfd_elf_init_file_header.
-	Return status.
-	(elf_backend_init_file_header): Define.
-	(elf_backend_post_process_headers): Don't define.
-	* elf32-i386.c (elf_i386_fbsd_init_file_header): Similarly.
-	* elf32-m68hc1x.c (elf32_m68hc11_init_file_header): Similarly.
-	* elf32-metag.c (elf_metag_init_file_header): Similarly.
-	* elf32-spu.c (spu_elf_init_file_header
-	* elf32-visium.c (visium_elf_init_file_header
-	* elf64-alpha.c (elf64_alpha_fbsd_init_file_header
-	* elf64-hppa.c (elf64_hppa_init_file_header
-	* elf64-ia64-vms.c (elf64_vms_init_file_header
-	* elfnn-aarch64.c (elfNN_aarch64_init_file_header
-	* elfnn-ia64.c (elfNN_hpux_init_file_header
-	* elfxx-mips.c (_bfd_mips_init_file_header
-	* elfxx-mips.h (_bfd_mips_post_process_headers): Delete.
-	(_bfd_mips_init_file_header): Declare.
-	(elf_backend_post_process_headers): Delete.
-	(elf_backend_init_file_header): Define.
-	* elfxx-target.h (elf_backend_post_process_headers): Delete.
-	(elf_backend_init_file_header): Define and use.
-	* elf32-m68hc12.c (elf_backend_init_file_header): Define.
-	(elf_backend_post_process_headers): Don't define.
-	* elf32-m68hc1x.h (elf32_m68hc11_post_process_headers): Delete.
-	(elf32_m68hc11_init_file_header): Declare.
-	* elf32-ppc.c (elf_backend_post_process_headers): Remove
-	unnecessary undef.
-
-2019-11-18  Alan Modra  <amodra@gmail.com>
-
-	* elf-bfd.h (struct elf_backend_data <elf_backend_modify_headers>):
-	Rename from elf_backend_modify_program_headers.
-	(_bfd_elf_modify_headers): Declare.
-	* elf.c (assign_file_positions_except_relocs): Set
-	elf_program_header_size.  Always call elf_backend_modify_headers.
-	Extract code modifying file header..
-	(_bfd_elf_modify_headers): ..to here.  New function.
-	* elf32-arm.c (elf_backend_modify_headers): Renamed from
-	elf_backend_modify_program_headers.
-	* elf32-i386.c: Similarly.
-	* elf64-x86-64.c: Similarly.
-	* elfxx-target.h: Similarly.  Default elf_backend_modify_headers
-	to _bfd_elf_modify_headers.
-	* elf-nacl.h (nacl_modify_headers): Rename from
-	nacl_modify_program_headers.
-	* elf-nacl.c (nacl_modify_headers): Rename from
-	nacl_modify_program_headers and call _bfd_elf_modify_headers.
-	* elf32-rx.c (elf32_rx_modify_headers): Similarly.
-	* elf32-spu.c (spu_elf_modify_headers): Similarly.
-	* elfnn-ia64.c (elfNN_ia64_modify_headers): Similarly.
-	* elf32-sh.c (elf_backend_modify_program_headers): Don't undef.
-
-2019-11-18  Alan Modra  <amodra@gmail.com>
-
-	PR 25196
-	* bfd.c (bfd_error_type): Add bfd_error_sorry.
-	(bfd_errmsgs): Likewise.
-	* elf.c (rewrite_elf_program_header): Don't abort on confused
-	lma/alignment.  Replace bfd_error_bad_value with bfd_error_sorry.
-	(_bfd_elf_validate_reloc): Use bfd_error_sorry.
-	(_bfd_elf_final_write_processing): Likewise.
-	* bfd-in2.h: Regenerate.
+	* bfd-in2.h (bfd_reloc_code_real): Add
+	BFD_RELOC_MSP430_{SET,SUB}_ULEB128.
+	* elf32-msp430.c (msp430_elf_ignore_reloc): New.
+	(elf_msp430_howto_table): Add R_MSP430{,X}_GNU_{SET,SUB}_ULEB128.
+	(msp430_reloc_map): Add R_MSP430_GNU_{SET,SUB}_ULEB128.
+	(msp430x_reloc_map): Add R_MSP430X_GNU_{SET,SUB}_ULEB128.
+	(write_uleb128): New.
+	(msp430_final_link_relocate): Handle R_MSP430{,X}_GNU_{SET,SUB}_ULEB128.
+	* libbfd.c (_bfd_write_unsigned_leb128): New.
+	* libbfd.h (_bfd_write_unsigned_leb128): New prototype.
+	Add BFD_RELOC_MSP430_{SET,SUB}_ULEB128.
+	* reloc.c: Document BFD_RELOC_MSP430_{SET,SUB}_ULEB128.
+
+2020-09-08  Alex Coplan  <alex.coplan@arm.com>
+
+	* archures.c (bfd_mach_aarch64_8R): New.
+	* bfd-in2.h: Regenerate.
+	* cpu-aarch64.c (bfd_aarch64_arch_v8_r): New.
+	(bfd_aarch64_arch_ilp32): Update tail pointer.
+
+2020-09-08  Alan Modra  <amodra@gmail.com>
+
+	PR 13250
+	PR 26580
+	* elflink.c (_bfd_elf_merge_symbol): Make "override" a bfd**.
+	Return oldbfd in override when old common should override new
+	common.
+	(_bfd_elf_add_default_symbol): Adjust to suit.
+	(elf_link_add_object_symbols): Likewise.  Pass "override" to
+	_bfd_generic_link_add_one_symbol.  Save and restore common u.c.p
+	field for --as-needed shared libraries.  Revert pr13250 changes.
+
+2020-09-08  Nick Clifton  <nickc@redhat.com>
+
+	* plugin.c (bfd_plugin_canonicalize_symtab): Handle the case of an
+	unrecognized symbol type in a weak definition.
+
+2020-09-04  Alan Modra  <amodra@gmail.com>
+
+	PR 26574
+	* elfcode.h (elf_object_p): Sanity check section header offset.
+	* elf.c (_bfd_elf_slurp_secondary_reloc_section): Sanity check
+	sh_entsize.
+
+2020-09-04  Alan Modra  <amodra@gmail.com>
+
+	PR 15146
+	PR 26314
+	PR 26530
+	* elflink.c (elf_link_add_object_symbols): Do set def_regular
+	and ref_regular for IR symbols.  Don't clear dynsym, allowing
+	IR symbols to load --as-needed shared libraries, but prevent
+	IR symbols from becoming dynamic.
+
+2020-09-03  Nick Clifton  <nickc@redhat.com>
+
+	PR 26521
+	* elf.c (_bfd_elf_write_secondary_reloc_section): Check for
+	secondary reloc sections with a zero sh_entsize field.
 
-2019-11-12  Jim Wilson  <jimw@sifive.com>
+2020-09-03  Nelson Chu  <nelson.chu@sifive.com>
 
-	PR 25181
-	* elfnn-riscv.c (_bfd_riscv_relax_call): Always add max_alignment to
-	foff.  If sym_sec->output_section and sec->output_section are the same
-	and not *ABS* then set max_alignment to that section's alignment.
-
-2019-11-07  Alan Modra  <amodra@gmail.com>
-
-	* cpu-cr16c.c: Delete.
-	* elf32-cr16c.c: Delete.
-	* Makefile.am,
-	* archures.c,
-	* config.bfd,
-	* configure.ac,
-	* reloc.c,
-	* targets.c: Remove cr16c support.
-	* Makefile.in,
-	* bfd-in2.h,
-	* configure,
-	* libbfd.h,
-	* po/SRC-POTFILES.in: Regenerate.
+	* elfnn-riscv.c (riscv_i_or_e_p): Minor cleanup for warnings/errors.
+	(riscv_merge_std_ext): Likewise.
+	(riscv_merge_arch_attr_info): Likewise.
+	(riscv_merge_attributes): Likewise and fix comment typos.
 
-2019-11-05  Tim RÃ¼hsen  <tim.ruehsen@gmx.de>
+2020-09-03  Nelson Chu  <nelson.chu@sifive.com>
 
-	* doc/chew.c (add_to_definition): Use correct type when
-	calculating size of array reallocation.
-	(nextword): Always initialise the word return parameter.
-	(compile): Check return value of nextword().
-
-2019-10-30  Keith Seitz  <keiths@redhat.com>
-
-	* elf-bfd.h (elf_backend_data) <elf_backend_core_find_build_id>:
-	New field.
-	(_bfd_elf32_core_find_build_id, _bfd_elf64_core_find_build_id):
-	New functions.
-	(elf_read_notes): Add declaration.
-	* elf.c (elf_read_notes): Move elf-bfd.h.
-	(_bfd_elf_core_find_build_id): New function.
-	(bfd_section_from_phdr): Scan core file PT_LOAD segments for
-	build-id if none is known.
-	(elf_parse_notes): For core files, scan for notes.
-	* elfcore.h (elf_core_file_matches_executable_p): If both
-	BFDs have identical build-ids, then they match.
-	(_bfd_elf_core_find_build_id): New function.
-	* elfxx-target.h (elf_backend_core_find_build_id): Define.
-	(elfNN_bed): Add elf_backend_core_find_build_id.
+	* elfnn-riscv.c (riscv_version_mismatch): Change the return type
+	from void to bfd_boolean.  Report warnings rather than errors
+	when the ISA versions are mis-matched.  Afterwards, remember to
+	update the output ISA versions to the newest ones.
+	(riscv_merge_std_ext): Allow to link objects with different
+	standard ISA versions.  Try to add output ISA versions to
+	merged_subsets first.
+	(riscv_merge_multi_letter_ext): Likewise.  But for standard additional
+	ISA and non-standard ISA versions.
 
-2019-10-29  Andrew Eikum  <aeikum@codeweavers.com>
+2020-09-03  Kito Cheng  <kito.cheng@sifive.com>
 
-	* libcoff-in.h (struct pe_tdata): Add dos_message field.
-	* libcoff.h: Regenerate.
-	* peXXigen.c (_bfd_XXi_only_swap_filehdr_out): Copy the
-	dos_message field rather than initialising it.
-	(_bfd_XX_bfd_copy_private_bfd_data_common): Copy the dos_message
-	field.
-	* peicode.h (pe_mkobject): Initialise the dos_message field.
-	(pe_mkobject_hook): Copy the dos_message field.
-	(pe_bfd_object_p): Copy the dos_message field.
-
-2019-10-25  Alan Modra  <amodra@gmail.com>
-
-	PR 4499
-	* elf-nacl.c (nacl_modify_segment_map): Set no_sort_lma for all
-	PT_LOAD segments.
-	* elf32-spu.c (spu_elf_modify_segment_map): Likewise on overlay
-	PT_LOAD segments.
-	* elf.c (elf_sort_segments): New function.
-	(assign_file_positions_except_relocs): Use shortcuts to elfheader
-	and elf_tdata.  Seek to e_phoff not sizeof_ehdr to write program
-	headers.  Move PT_PHDR check..
-	(assign_file_positions_for_non_load_sections): ..and code setting
-	PT_PHDR p_vaddr and p_paddr, and code setting __ehdr_start value..
-	(assign_file_positions_for_load_sections): ..to here.  Sort
-	PT_LOAD headers.  Delete header_pad code.  Use actual number of
-	headers rather than allocated in calculating size for program
-	headers.  Don't assume program headers follow ELF file header.
-	Simplify pt_load_count code.  Only set "off" for PT_LOAD or
-	PT_NOTE in cores.
-	(rewrite_elf_program_header): Set p_vaddr_offset for segments
-	that include file and program headers.
-	(copy_elf_program_header): Likewise, replacing header_size code.
-
-2019-10-21  Alan Modra  <amodra@gmail.com>
-
-	PR 452
-	* archive.c (normalize): Return file unchanged when
-	BFD_ARCHIVE_FULL_PATH.
-	(_bfd_construct_extended_name_table): Pass abfd, the output
-	bfd, to normalize.
-	(_bfd_archive_bsd44_construct_extended_name_table): Likewise.
-	* bfd.c (struct bfd): Make flags a full flagword.
-	(BFD_ARCHIVE_FULL_PATH): Define.
-	* bfd-in2.h: Regenerate.
+	* elfnn-riscv.c (riscv_merge_std_ext): Fix to report the correct
+	error message when the versions of extension are mis-matched.
+	* elfxx-riscv.c (riscv_parse_subset): Don't issue the error when
+	the string is empty.
 
-2019-10-20  John David Anglin  <danglin@gcc.gnu.org>
+2020-09-03  Alan Modra  <amodra@gmail.com>
 
-	* elf32-hppa.c (elf32_hppa_size_dynamic_sections): Provide 8-byte
-	minimum alignment for .plt section.
+	* xcofflink.c (xcoff_get_archive_info): Allocate xcoff_archive_info
+	on the output bfd objalloc memory.
 
-2019-10-19  John David Anglin  <danglin@gcc.gnu.org>
+2020-09-02  Alan Modra  <amodra@gmail.com>
 
-	* elf32-hppa.c: Revise import stub sequences.
-	(LONG_BRANCH_STUB_SIZE): Define.
-	(LONG_BRANCH_SHARED_STUB_SIZE): Define.
-	(IMPORT_STUB_SIZE): Define.
-	(IMPORT_SHARED_STUB_SIZE): Define.
-	(EXPORT_STUB_SIZE): Define.
-	(plt_stub): Revise to not use register %r22.
-	(LDO_R1_R22): Define.
-	(LDW_R22_R21): Define.
-	(LDW_R22_R19): Define.
-	(hppa_build_one_stub): Update stub generation and use new defines.
-	(hppa_size_one_stub): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_relocate_section): Correct type
+	of constant shifted left.
 
-2019-10-17  Nelson Chu  <nelson.chu@sifive.com>
+2020-09-02  Alan Modra  <amodra@gmail.com>
 
-	* elfnn-riscv.c (riscv_elf_relocate_section): Report the error message
-	that user should recompile their code with `fPIC` when linking non-pic
-	code into shared library.
+	* elf32-pru.c (pru_elf32_do_ldi32_relocate): Use an unsigned
+	type for "relocation".
 
-	* elfnn-riscv.c (riscv_elf_relocate_section): Use asprintf to extend
-	the error message if needed, and then store the result into the
-	`msg_buf`.  Finally, remember to free the unused `msg_buf`.  All error
-	message for the dangerous relocation should be set before we call the
-	callback function.  If we miss the error message since linker runs out
-	of memory, we should set the default error message for the error.
+2020-09-01  Alan Modra  <amodra@gmail.com>
 
-2019-10-16  Alan Modra  <amodra@gmail.com>
+	* reloc.c (N_ONES): Handle N=0.
+	* elf32-arm.c (elf32_arm_howto_table_1): Set complain_overflow_dont
+	for R_ARM_TLS_DESCSEQ and R_ARM_THM_TLS_DESCSEQ.
 
-	PR 13616
-	* cpu-powerpc.c (bfd_arch_ppc_nop_fill): New function, use it
-	for all ppc arch info.
-	* linker.c (default_data_link_order): Pass info->big_endian to
-	arch_info->fill function.
+2020-09-01  Alan Modra  <amodra@gmail.com>
 
-2019-10-15  Alan Modra  <amodra@gmail.com>
+	PR 26429
+	* elf32-arm.c (elf32_arm_allocate_local_sym_info): Allocate arrays
+	in descending order of alignment.
 
-	* elf32-m68hc1x.c (reloc_warning): Add printf attribute.
-	(elf32_m68hc11_relocate_section): Don't use a variable for format
-	strings.  Delete some unnecessary xgettext:c-format comments.
+2020-09-01  Alan Modra  <amodra@gmail.com>
 
-2019-10-15  Alan Modra  <amodra@gmail.com>
+	PR 26423
+	* elf32-arm.c (calculate_group_reloc_mask): Use 3u in shift.
 
-	PR 24955
-	* elf32-arm.c (set_cmse_veneer_addr_from_implib): Use bfd_malloc
-	rather than xmalloc.
-	* elf32-m68hc1x.c (reloc_warning): New function.
-	(elf32_m68hc11_relocate_section): Use it here.  Cast bfd_vma values
-	corresponding to %lx in format strings.
-	* elf32-nds32.c (nds32_insertion_sort): Use a stack temporary.
+2020-08-31  Alan Modra  <amodra@gmail.com>
 
-2019-10-15  Alan Modra  <amodra@gmail.com>
+	PR 26493
+	* elfnn-riscv.c (riscv_make_plt_header): Cast PLT_HEADER_SIZE to
+	unsigned when using with RISCV_ITYPE.
+	(_bfd_riscv_relax_call): Use an unsigned foff.
 
-	PR 25100
-	* elf64-ppc.c (sfpr_define): Delete dead code that triggered a warning.
+2020-08-31  Alan Modra  <amodra@gmail.com>
 
-2019-10-15  Alan Modra  <amodra@gmail.com>
+	PR 26476
+	PR 26477
+	* elfxx-mips.c (CRINFO_CTYPE, CRINFO_RTYPE, CRINFO_DIST2TO),
+	(CRINFO_RELVADDR): Make unsigned.
+	(mips_elf_nullify_got_load): Use unsigned constant when shifting
+	into sign bit.
 
-	* bfd.c (bfd_check_compression_header): Check for powers of two
-	with x == (x & -x).
+2020-08-31  Alan Modra  <amodra@gmail.com>
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+	PR 26466
+	* mep-relocs.pl (emit_apply): Handle HI16S adjustment.  Use "u"
+	variable and rewrite signed overflow check.
+	* elf32-mep.c: Regenerate.
+	(mep_final_link_relocate): Delete "s".
 
-	* syms.c (struct indexentry): Add idx field.
-	(cmpindexentry): Final sort on idx.
-	(_bfd_stab_section_find_nearest_line): Set idx.
+2020-08-31  Alan Modra  <amodra@gmail.com>
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+	PR 26461
+	* elfxx-ia64.c (ia64_elf_install_value): Make expressions unsigned
+	that might shift values into sign bit.
 
-	* dwarf2.c (struct lookup_funcinfo): Add idx field.
-	(compare_lookup_funcinfos): Perform final sort on idx.
-	(build_lookup_funcinfo_table): Set idx.
-	(compare_sequences): Perform final sort on num_lines.
-	(build_line_info_table): Set num_lines and line_info_lookup earlier.
-	(sort_line_sequences): Set num_lines for sort.
+2020-08-31  Alan Modra  <amodra@gmail.com>
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+	PR 26445
+	* elf32-csky.c (csky_relocate_contents): Make relocation a bfd_vma,
+	and similarly for variables dealing with overflow.
 
-	* elflink.c (elf_sort_symbol): Sort on type and name as well.
-	(elf_link_add_object_symbols): Style fix.
+2020-08-31  Alan Modra  <amodra@gmail.com>
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+	PR 26442
+	* elf32-crx.c (crx_elf_final_link_relocate): Calculate reloc_bits
+	without undefined behaviour.  Tidy excess casts.
 
-	* elf.c (_bfd_elf_map_sections_to_segments): Init target_index
-	for sections about to be sorted.
-	(assign_file_positions_for_load_sections): Likewise.
-	(elf_sort_sections): Don't bother optimising both TOEND case.
-	* elflink.c (bfd_elf_final_link): Reset target_index.
+2020-08-31  Alan Modra  <amodra@gmail.com>
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+	* elf-m10300.c (mn10300_elf_relax_delete_bytes): Calculate
+	alignment from reloc addend after reloc type R_MN10300_ALIGN is
+	found.
 
-	* elflink.c (elf_get_linked_section_vma): Delete.
-	(compare_link_order): Use elf_linked_to_section and sort by lma,
-	size, and id.
-	(elf_fixup_link_order): Use size_t variables where appropriate.
-	Make use of elf_linked_to_section.  Formatting.  Properly align
-	sections.
+2020-08-30  Alan Modra  <amodra@gmail.com>
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+	PR 26435
+	PR 26436
+	* elf32-cr16.c (cr16_elf_final_link_relocate): Calculate reloc_bits
+	without undefined behaviour.
 
-	* elf-strtab.c (strrevcmp): Comment.
-	* merge.c (strrevcmp): Likewise.
-	* elf64-ppc.c (compare_symbols): Correct final pointer comparison.
-	Comment on why comparing pointers ensures a stable sort.
-	* elflink.c (struct elf_symbol): Add void* to union.
-	(elf_sort_elf_symbol): Ensure a stable sort with pointer comparison.
-	(elf_sym_name_compare): Likewise.
-	(bfd_elf_match_symbols_in_sections): Style fix.
-	(elf_link_sort_cmp1): Comment.
-
-2019-10-14  Alan Modra  <amodra@gmail.com>
-
-	PR 24955
-	* elflink.c (elf_output_implib): Don't use xmalloc.  Don't ignore
-	return value of bfd_alloc2.
-	* peXXigen.c (_bfd_XXi_write_codeview_record): Don't use xmalloc.
-	* pef.c (bfd_pef_print_symbol): Likewise.  Don't ignore return
-	value of bfd_get_section_contents.
-	* som.c (som_write_space_strings): Don't use xmalloc.
-	(som_write_symbol_strings): Likewise.
-
-2019-10-11  Max Filippov  <jcmvbkbc@gmail.com>
-
-	* dwarf2.c (stash_maybe_enable_info_hash_tables): Only set
-	stash->info_hash_status = STASH_INFO_HASH_ON when
-	stash_maybe_update_info_hash_tables succeeds.
-
-2019-10-09  Alan Modra  <amodra@gmail.com>
-
-	PR 25070
-	* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Catch overflow of
-	total_size calculation.
-
-2019-10-08  Alan Modra  <amodra@gmail.com>
-
-	PR 25078
-	* dwarf2.c (find_abstract_instance): Delete orig_info_ptr, add
-	recur_count.  Error on recur_count reaching 100 rather than
-	info_ptr matching orig_info_ptr.  Adjust calls.
-
-2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
-
-	* elf32-msp430.c (elf32_msp430_merge_mspabi_attributes): Rename to..
-	(elf32_msp430_merge_msp430_attributes): Add support for merging
-	the GNU object attribute for data region.
-
-2019-10-07  Alan Modra  <amodra@gmail.com>
-
-	* elf64-ppc.c (ppc64_elf_size_dynamic_sections): Do allocate
-	space for local got non-tls relocs when PIE.
-
-2019-10-07  Alan Modra  <amodra@gmail.com>
-
-	* elflink.c (elf_fixup_link_order): Don't attempt to find
-	an elf_section for linker created bfd sections.
-
-2019-10-07  Alan Modra  <amodra@gmail.com>
-
-	* elf32-ppc.c (ppc_elf_tls_optimize): Don't process R_PPC_TLSLD
-	with non-local symbol.  Don't double count __tls_get_addr calls
-	with marker relocs.
-	* elf64-ppc.c (ppc64_elf_tls_optimize): Likewise.
-
-2019-10-07  Alan Modra  <amodra@gmail.com>
-
-	* elf32-ppc.c (nomark_tls_get_addr): Rename from has_tls_get_addr_call
-	throughout.
-	* elf64-ppc.c (nomark_tls_get_addr): Likewise.
-
-2019-10-04  Alan Modra  <amodra@gmail.com>
-
-	* elf64-ppc.c (ppc64_elf_check_relocs): Move initialisation of vars.
-	(ppc64_elf_tls_optimize): Correct is_local condition.
-	(allocate_got): Don't reserve dynamic relocations for any of the
-	tls got relocs in PIEs when the symbol is local.
-	(allocate_dynrelocs): Correct validity test for local sym using
-	tlsld_got slot.
-	(ppc64_elf_size_dynamic_sections): Don't reserve dynamic relocations
-	for any of the tls got relocs in PIEs.
-	(ppc64_elf_layout_multitoc): Likewise.
-	(ppc64_elf_relocate_section): Correct validity test for local sym
-	using tlsld_got slot.  Don't emit dynamic relocations for any of
-	the tls got relocs in PIEs when the symbol is local.
-	* elf32-ppc.c (ppc_elf_tls_optimize): Correct is_local condition.
-	(got_relocs_needed): Delete.
-	(allocate_dynrelocs): Correct validity test for local sym using
-	tlsld_got slot.  Don't reserve dynamic relocations for any of the
-	tls got relocs in PIEs when the symbol is local.
-	(ppc_elf_size_dynamic_sections): Don't reserve dynamic relocations
-	for any of the tls got relocs in PIEs.
-	(ppc_elf_relocate_section): Correct validity test for local sym
-	using tlsld_got slot.  Don't emit dynamic relocations for any of
-	the tls got relocs in PIEs when the symbol is local.
-
-2019-10-04  Szabolcs Nagy  <szabolcs.nagy@arm.com>
-
-	PR ld/22263
-	PR ld/25056
-	* elf32-arm.c (elf32_arm_tls_transition): Use bfd_link_dll instead of
-	bfd_link_pic for TLS checks.
-	(elf32_arm_final_link_relocate): Likewise.
-	(allocate_dynrelocs_for_symbol): Likewise.
+2020-08-29  Nick Clifton  <nickc@redhat.com>
 
-2019-10-04  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+	PR 26520
+	* dwarf2.c (scan_unit_for_symbols): Add member entries to the
+	variable table.
 
-	PR ld/25062
-	* elf32-arm.c (elf32_arm_final_link_relocate): Sign extend data.
+2020-08-29  Alan Modra  <amodra@gmail.com>
 
-2019-09-30  Nick Alcock  <nick.alcock@oracle.com>
+	PR 26459
+	* elfnn-ia64.c (get_dyn_sym_info): Don't bsearch or look at last
+	element when count is zero.  bfd_realloc when shrinking.
 
-	* elf-bfd.h (bfd_section_is_ctf): New inline function.
-	* elf.c (special_sections_c): Add ".ctf".
-	(assign_file_positions_for_non_load_sections): Note that
-	compressed debugging sections etc are not assigned here.  Treat
-	CTF sections like SEC_ELF_COMPRESS sections when is_linker_output:
-	sh_offset -1.
-	(assign_file_positions_except_relocs): Likewise.
-	(find_section_in_list): Note that debugging and CTF sections, as
-	well as reloc sections, are assigned later.
-	(_bfd_elf_assign_file_positions_for_non_load): CTF sections get
-	their size and contents updated.
-	(_bfd_elf_set_section_contents): Skip CTF sections: unlike
-	compressed sections, they have no uncompressed content to copy at
-	this stage.
-	* elflink.c (elf_link_swap_symbols_out): Call the examine_strtab
-	callback right before the strtab is written out.
-	(bfd_elf_final_link): Don't cache the section contents of CTF
-	sections: they are not populated yet.  Call the emit_ctf callback
-	right at the end, after all the symbols and strings are flushed
-	out.
-
-2019-07-13  Nick Alcock  <nick.alcock@oracle.com>
-
-	* elf-strtab.c (_bfd_elf_strtab_len): New.
-	(_bfd_elf_strtab_str): Likewise.
-	* bfd-elf.h: Declare them.
-
-2019-07-13  Nick Alcock  <nick.alcock@oracle.com>
-
-	* elf-bfd.h (bfd_elf_get_str_section): Add.
-	* elf.c (bfd_elf_get_str_section): No longer static.
-
-2019-09-26  Alan Modra  <amodra@gmail.com>
-
-	PR 24262
-	* Makefile.am (AM_CPPFLAGS): Add -DLIBDIR.
-	* plugin.c (load_plugin): Search both ${libdir}/bfd-plugins and
-	${bindir}/../lib/bfd-plugins if different.
-	* Makefile.in: Regenerate.
+2020-08-28  Alan Modra  <amodra@gmail.com>
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+	PR 26418
+	* ecofflink.c (bfd_ecoff_write_accumulated_debug): Don't write
+	zero size buffers.
 
-	* elf64-ppc.c (ppc64_elf_check_relocs): Use bfd_link_executable
-	in choosing between different actions for shared library and
-	non-shared library cases.  Delete ELIMINATE_COPY_RELOCS test.
-	(dec_dynrel_count): Likewise.  Account for ifunc special case.
-	(ppc64_elf_adjust_dynamic_symbol): Copy relocs are for executables,
-	not non-pic.
-	(allocate_dynrelocs): Comment fixes.  Delete ELIMINATE_COPY_RELOCS
-	test.
+2020-08-28  Alan Modra  <amodra@gmail.com>
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+	PR 26418
+	* ecofflink.c (WRITE): Really don't write zero size chunks.
 
-	* Makefile.am (SOURCE_HFILES): Add many missing .h files.
-	* Makefile.in: Regenerate.
-	* po/SRC-POTFILES.in: Regenerate.
+2020-08-28  Tuckker  <tuckkern+sourceware@gmail.com>
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+	PR 26543
+	* linker.c (bfd_generic_define_common_symbol): Force the alignment
+	to 1 if the section has now alignment requirement.
 
-	* bfd-in.h (bfd_symbol, bfd_section_already_linked),
-	(bfd_elf_version_tree): Delete forward declarations.
-	Move other forward decls and remaining elf function decl later.
-	(bfd_section_already_linked_table_init),
-	(bfd_section_already_linked_table_free),
-	(_bfd_handle_already_linked, _bfd_nearby_section),
-	(_bfd_fix_excluded_sec_syms): Move to bfdlink.h.
-
-2019-09-23  Alan Modra  <amodra@gmail.com>
-
-	* bfd-in.h: Move ecoff function declarations..
-	* ecoff-bfd.h: ..to here, new file.
-	* ecoff.c: Include ecoff-bfd.h.
-	* ecofflink.c: Likewise.
-	* elf64-alpha.c: Likewise.
-	* elfxx-mips.c: Likewise.
-	* bfd-in2.h: Regenerate.
+2020-08-28  Cooper Qu  <cooper.qu@linux.alibaba.com>
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+	* elf32-csky.c (csky_archs): Fix arch names.
+	(csky_find_arch_with_name): New.
+	(elf32_csky_merge_attributes): New.
+	(csky_elf_merge_private_bfd_data): Add process of merge
+	attribute section.
+	(elf32_csky_obj_attrs_arg_type): New.
+	(elf32_csky_obj_attrs_handle_unknown): New.
+	(elf_backend_obj_attrs_vendor): Define.
+	(elf_backend_obj_attrs_section): Define.
+	(elf_backend_obj_attrs_arg_type): Define.
+	(elf_backend_obj_attrs_section_type): Define.
+
+2020-08-28  Nick Clifton  <nickc@redhat.com>
+
+	PR19011
+	* cofflink.c (_bfd_coff_generic_relocate_section): Provide a value
+	for undefined symbols which will not generate extra warning
+	messages about truncated relocs.
+
+2020-08-28  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_elf_check_relocs): Treat R_RISCV_CALL
+	and R_RISCV_CALL_PLT as the same in the riscv_elf_check_relocs.
+	(riscv_elf_relocate_section): Remove the R_RISCV_CALL for the
+	unresolved reloc checks.
+
+2020-08-27  John David Anglin  <danglin@gcc.gnu.org>
+
+	PR 26356
+	* som.c (som_bfd_copy_private_section_data): Issue error when a
+	subspace is specified without its containing space.
+
+2020-08-27  Alan Modra  <amodra@gmail.com>
+
+	PR 26469
+	* elflink.c: Include limits.h.
+	(CHAR_BIT): Provide fallback define.
+	(set_symbol_value): Correct complex reloc comment.
+	(undefined_reference): Set bfd_error.
+	(BINARY_OP_HEAD, BINARY_OP_TAIL): Split out from..
+	(BINARY_OP): ..this.
+	(eval_symbol): Limit shifts.  Force unsigned for left shift.
+	Catch divide by zero.
+	* configure.ac (AC_CHECK_HEADERS): Combine, sort and add limits.h.
+	* configure: Regenerate.
+	* config.in: Regenerate.
 
-	* bfd-in.h (enum notice_asneeded_action): Move to bfdlink.h.
-	Move most other elf declarations..
-	* elf-bfd.h: ..to here.
-	* bfd-in2.h: Regenerate.
+2020-08-27  Alan Modra  <amodra@gmail.com>
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+	PR 26462
+	* reloc.c (bfd_check_overflow): Return early if zero bitsize.
 
-	* bfd-in.h: Move m68k function declaration..
-	* cpu-m68k.h: ..to here, new file..
-	* elf32-m68k.h: ..and here, new file.
-	* elf32-m68k.c: Include cpu-m68k.h and elf32-m68k.h.
-	* bfd-in2.h: Regenerate.
+2020-08-27  Alan Modra  <amodra@gmail.com>
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+	* elf32-arm.c (elf32_arm_final_link_relocate): Don't segfault
+	on sym_sec not being output.
 
-	* bfd-in.h: Move bfin function declaration..
-	* elf32-bfin.h: ..to here, new file.
-	* elf32-bfin.c: Include elf32-bfin.h.
-	* bfd-in2.h: Regenerate.
+2020-08-27  Alan Modra  <amodra@gmail.com>
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+	PR 26416
+	* elf64-alpha.c (elf64_alpha_relax_tls_get_addr): Correct "dynamic".
 
-	* bfd-in.h: Move cr16 function declaration..
-	* elf32-cr16.h: ..to here, new file.
-	* elf32-cr16.c: Include elf32-cr16.h.
-	* bfd-in2.h: Regenerate.
+2020-08-26  Nick Clifton  <nickc@redhat.com>
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+	PR 26433
+	* elf32-avr.c (avr_final_link_relocate):  Fix undefined shift
+	behaviour.
+	(avr_elf32_load_records_from_section): Use bfd_get_16 and
+	bfd_get_32 to load values from potentially unaligned pointers.
 
-	* bfd-in.h (bfd_sunos_get_needed_list),
-	(bfd_sunos_record_link_assignment),
-	(bfd_sunos_size_dynamic_sections),
-	(bfd_i386linux_size_dynamic_sections),
-	(bfd_sparclinux_size_dynamic_sections): Delete obsolete decls.
-	* bfd-in2.h: Regenerate.
+	PR 26416
+	* elf64-alpha.c (elf64_alpha_relax_tls_get_addr): Test for and
+	ignore local symbols.
+	(elf64_alpha_relax_got_load): Do not check for local dynamic
+	symbols.
+	(OP_LDA, OP_LDAH, OP_LDQ, OP_BR, OP_BSR): Use unsigned constant
+	values.
+	(INSN_A) Cast the A parameter to unsigned.
+	(INSN_AB): Define in terms of INSN_A.
+	(INSN_ABC): Likewise.
+	(INSN_ABO): Likewise.
+	(INSN_AD): Likewise.
+
+	PR 26411
+	* elfnn-aarch64.c (elfNN_aarch64_relocate_section): Use an
+	unsigned long constant when creating a mask to test for alignment
+	issues.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	PR 26507
+	* elf32-xtensa.c (find_removed_literal): Don't bsearch empty map.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	PR 26506
+	* elf32-xtensa.c (elf_xtensa_combine_prop_entries): Return early
+	when section is empty.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	PR 26498
+	* elf32-spu.c (find_function_stack_adjust): Use unsigned vars to
+	avoid UB left shift.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	PR 26484
+	PR 26485
+	PR 26486
+	PR 26487
+	PR 26488
+	PR 26490
+	* elf64-ppc.c (is_tls_get_addr): Avoid UB &h->elf when h is NULL.
+	(ppc64_elf_tls_setup): Likewise.
+	(branch_reloc_hash_match): Likewise.
+	(build_plt_stub): Likewise.
+	(ppc64_elf_relocate_section): Likewise.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-26  Alan Modra  <amodra@gmail.com>
 
-	* bfd-in.h: Move xcoff function declarations..
-	* xcofflink.h: ..to here, new file.
-	* xcofflink.c: Include xcofflink.h.
-	* coff-rs6000.c (bfd_xcoff_ar_archive_set_magic): Delete unused func.
-	* bfd-in2.h: Regenerate.
+	PR 26478
+	* mmo.c (mmo_write_symbols_and_terminator): Don't memcpy empty table.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-26  Alan Modra  <amodra@gmail.com>
 
-	* bfd-in.h: Delete coff forward refs and move coff declaration..
-	* coff-bfd.h: ..to here.
-	* bfd-in2.h: Regenerate.
+	PR 26475
+	* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections): Check
+	sstubs->contents != NULL.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-26  Alan Modra  <amodra@gmail.com>
 
-	* bfd-in.h: Move arm declaraions..
-	* cpu-arm.h: ..to here, new file..
-	* coff-arm.h: ..and here, new file..
-	* elf32-arm.h: ..and here, new file.
-	* cpu-arm.c: Include cpu-arm.h.
-	* coff-arm.c: Include cpu-arm.h and coff-arm.h.
-	* elf32-arm.c: Include cpu-arm.h and elf32-arm.h.
-	* pe-arm.c: Move function rename defines later.
-	* pe-arm-wince.c: Likewise and include sysdep.h and bfd.h early.
-	* bfd-in2.h: Regenerate.
+	PR 26453
+	* som.c (som_prep_for_fixups): Return early when no symbols.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-26  Alan Modra  <amodra@gmail.com>
 
-	* bfd-in.h: Move tic6x function declaration..
-	* elf32-tic6x.h: ..to here.
-	* bfd-in2.h: Regenerate.
+	PR 26418
+	* ecofflink.c (WRITE): Don't write size 0 chunks.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-26  Alan Modra  <amodra@gmail.com>
 
-	* bfd-in.h: Move aarch64 declarations and defines..
-	* cpu-aarch64.h: ..to here, new file..
-	* elfxx-aarch64.h: ..and here.
-	* cpu-aarch64.c: Include cpu-aarch64.h.
-	* elfnn-aarch64.c: Likewise.
-	* bfd-in2.h: Regenerate.
+	* bfdio.c (bfd_get_file_size): Don't segv on NULL adata.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-26  Alan Modra  <amodra@gmail.com>
 
-	* bfd-in.h: Delete ticoff function declarations.
-	* coff-tic54x.c (bfd_ticoff_set_section_load_page),
-	(bfd_ticoff_get_section_load_page): Make static.
-	* bfd-in2.h: Regenerate.
+	PR 26415
+	* vms-misc.c (vms_time_t_to_vms_time): Don't use unsigned short vars.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-26  David Faust  <david.faust@oracle.com>
 
-	* bfd-in.h: Move h8300 function declaration to..
-	* cpu-h8300.h: ..here, new file.
-	* cpu-h8300.c: Include cpu-h8300.h.
-	* elf32-h8300.c: Likewise.
+	* archures.c (bfd_mach_xbpf): Define.
 	* bfd-in2.h: Regenerate.
+	* cpu-bpf.c (bfd_xbpf_arch) New.
+	(bfd_bpf_arch) Update next in list field to point to xbpf arch.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-26  Alan Modra  <amodra@gmail.com>
 
-	* bfd-in.h: Move ia64 function declarations..
-	* elfxx-ia64.h: ..to here.
-	* bfd-in2.h: Regenerate.
+	* archures.c (bfd_mach_ck860): Define.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-25  Mark Wielaard  <mark@klomp.org>
 
-	* bfd-in.h: Move v850 function declarations..
-	* elf32-v850.h: ..to here, new file.
-	* elf32-v850.c: Include elf32-v850.h.
-	* bfd-in2.h: Regenerate.
+	*  dwarf2.c (struct dwarf2_debug_file): Add dwarf_rnglists_buffer
+	and dwarf_rnglists_size fields.
+	(dwarf_debug_sections): Add debug_rnglists.
+	(dwarf_debug_section_enum): Likewise.
+	(read_debug_rnglists): New function.
+	(read_rangelist): New function to call either read_ranges or
+	read_rnglists. Rename original function to...
+	(read_ranges): ...this.
+	(read_rnglists): New function.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* bfd-in.h: Move mips function declaration to..
-	* elfxx-mips.h: ..here.
-	* bfd-in2.h: Regenerate.
+	PR 26505
+	* elf32-xstormy16.c (xstormy16_elf_relax_section): Check
+	is_elf_hash_table before accessing elf fields.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* bfd-in.h: Move csky function declarations to..
-	* elf32-csky.h: ..here, new file.
-	* elf32-csky.c: Include elf32-csky.h.
-	* bfd-in2.h: Regenerate.
+	PR 26482
+	* coff-rs6000.c (_bfd_xcoff_sizeof_headers): Ignore sections that
+	won't be output.
 
-2019-09-20  Nelson Chu <nelson.chu@sifive.com>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* elfnn-riscv.c (riscv_pcgp_hi_reloc): Add new field undefined_weak.
-	(riscv_record_pcgp_hi_reloc): New parameter undefined_weak.
-	Set undefined_weak field from it.
-	(relax_func_t): New parameter undefined_weak.
-	(_bfd_riscv_relax_call): New ignored parameter undefined_weak.
-	(_bfd_riscv_relax_tls_le): Likewise.
-	(_bfd_riscv_relax_align): Likewise.
-	(_bfd_riscv_relax_delete): Likewise.
-	(_bfd_riscv_relax_lui): New parameter undefined_weak.  If true,
-	allow relaxing.  For LO12* relocs, set rs1 to x0 when undefined_weak.
-	(_bfd_riscv_relax_pc): New parameter undefined_weak.  For LO12* relocs,
-	set undefined_weak from hi_reloc.  If true, allow relaxing.  For LO12*
-	relocs, set rs1 to x0 when undefined_weak and change to non-pcrel
-	reloc.
-	(_bfd_riscv_relax_section): New local undefined_weak.  Set for
-	undef weak relocs that can be relaxed.  Pass to relax_func call.
-
-2019-09-20  Alan Modra  <amodra@gmail.com>
-
-	* bfd-in.h (bfd_section_name, bfd_section_size, bfd_section_vma),
-	(bfd_section_lma, bfd_section_alignment, bfd_section_flags),
-	(bfd_section_userdata, bfd_is_com_section, discarded_section),
-	(bfd_get_section_limit_octets, bfd_get_section_limit): Delete macros.
-	* bfd.c (bfd_get_section_limit_octets, bfd_get_section_limit),
-	(bfd_section_list_remove, bfd_section_list_append),
-	(bfd_section_list_prepend, bfd_section_list_insert_after),
-	(bfd_section_list_insert_before, bfd_section_removed_from_list):
-	New inline functions.
-	* section.c (bfd_is_und_section, bfd_is_abs_section),
-	(bfd_is_ind_section, bfd_is_const_section, bfd_section_list_remove),
-	(bfd_section_list_append, bfd_section_list_prepend),
-	(bfd_section_list_insert_after, bfd_section_list_insert_before),
-	(bfd_section_removed_from_list): Delete macros.
-	(bfd_section_name, bfd_section_size, bfd_section_vma),
-	(bfd_section_lma, bfd_section_alignment, bfd_section_flags),
-	(bfd_section_userdata, bfd_is_com_section, bfd_is_und_section),
-	(bfd_is_abs_section, bfd_is_ind_section, bfd_is_const_section),
-	(discarded_section): New inline functions.
-	* bfd-in2.h: Regenerate.
+	PR 26463
+	* elf32-m32c.c (m32c_elf_relax_section): Check is_elf_hash_table
+	before accessing elf fields.
 
-2019-09-20  Alan Modra  <amodra@gmail.com>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* bfd-in.h (bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
-	(bfd_asymbol_bfd, bfd_asymbol_flavour, bfd_set_asymbol_name): Delete.
-	* bfd.c (bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
-	(bfd_asymbol_bfd, bfd_set_asymbol_name): New inline functions.
-	* targets.c (bfd_asymbol_flavour): Likewise.
-	* bfd-in2.h: Regenerate.
+	PR 26452
+	* som.c (som_compute_checksum): XOR 32-bit words in header,
+	not unsigned long sized words.
 
-2019-09-20  Alan Modra  <amodra@gmail.com>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* archive.c (bfd_generic_archive_p): Use bfd_set_thin_archive.
-	* bfd-in.h (bfd_get_filename, bfd_get_cacheable, bfd_get_format),
-	(bfd_get_target, bfd_get_flavour, bfd_family_coff, bfd_big_endian),
-	(bfd_little_endian, bfd_header_big_endian, bfd_header_little_endian),
-	(bfd_get_file_flags, bfd_applicable_file_flags),
-	(bfd_applicable_section_flags, bfd_has_map, bfd_is_thin_archive),
-	(bfd_valid_reloc_types, bfd_usrdata, bfd_get_start_address),
-	(bfd_get_symcount, bfd_get_outsymbols, bfd_count_sections),
-	(bfd_get_dynamic_symcount, bfd_get_symbol_leading_char): Delete.
-	* bfd/bfd.c (bfd_get_filename, bfd_get_cacheable, bfd_get_format),
-	(bfd_get_file_flags, bfd_get_start_address, bfd_get_symcount),
-	(bfd_get_dynamic_symcount, bfd_get_outsymbols, bfd_count_sections),
-	(bfd_has_map, bfd_is_thin_archive, bfd_set_thin_archive),
-	(bfd_usrdata, bfd_set_usrdata): New inline functions.
-	* targets.c (bfd_get_target, bfd_get_flavour),
-	(bfd_applicable_file_flags, bfd_family_coff, bfd_big_endian),
-	(bfd_little_endian, bfd_header_big_endian),
-	(bfd_header_little_endian, bfd_applicable_section_flags),
-	(bfd_get_symbol_leading_char): New inline functions.
-	* bfd-in2.h: Regenerate.
+	PR 26430
+	* elf-nacl.c (nacl_modify_segment_map): Correct alloc size and
+	amount copied for elf_segment_map defined with one element
+	sections array.
 
-2019-09-20  Alan Modra  <amodra@gmail.com>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* elf64-ppc.c (ppc64_glibc_dynamic_reloc): New function.
-	(ppc64_elf_relocate_section): Warn if emitting unsupported dynamic
-	relocations.
-
-2019-09-18  Alan Modra  <amodra@gmail.com>
-
-	* bfd-in.h (bfd_get_section_name, bfd_get_section_vma),
-	(bfd_get_section_lma, bfd_get_section_alignment),
-	(bfd_get_section_size, bfd_get_section_flags),
-	(bfd_get_section_userdata): Delete.
-	(bfd_section_name, bfd_section_size, bfd_section_vma),
-	(bfd_section_lma, bfd_section_alignment): Lose bfd parameter.
-	(bfd_section_flags, bfd_section_userdata): New.
-	(bfd_is_com_section): Rename parameter.
-	* section.c (bfd_set_section_userdata, bfd_set_section_vma),
-	(bfd_set_section_alignment, bfd_set_section_flags, bfd_rename_section),
-	(bfd_set_section_size): Delete bfd parameter, rename section parameter.
-	(bfd_set_section_lma): New.
-	* bfd-in2.h: Regenerate.
-	* mach-o.c (bfd_mach_o_init_section_from_mach_o): Delete bfd param,
-	update callers.
-	* aoutx.h, * bfd.c, * coff-alpha.c, * coff-arm.c, * coff-mips.c,
-	* coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
-	* compress.c, * ecoff.c, * elf-eh-frame.c, * elf-hppa.h,
-	* elf-ifunc.c, * elf-m10200.c, * elf-m10300.c, * elf-properties.c,
-	* elf-s390-common.c, * elf-vxworks.c, * elf.c, * elf32-arc.c,
-	* elf32-arm.c, * elf32-avr.c, * elf32-bfin.c, * elf32-cr16.c,
-	* elf32-cr16c.c, * elf32-cris.c, * elf32-crx.c, * elf32-csky.c,
-	* elf32-d10v.c, * elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c,
-	* elf32-ft32.c, * elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c,
-	* elf32-ip2k.c, * elf32-iq2000.c, * elf32-lm32.c, * elf32-m32c.c,
-	* elf32-m32r.c, * elf32-m68hc1x.c, * elf32-m68k.c, * elf32-mcore.c,
-	* elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c,
-	* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
-	* elf32-nios2.c, * elf32-or1k.c, * elf32-ppc.c, * elf32-pru.c,
-	* elf32-rl78.c, * elf32-rx.c, * elf32-s390.c, * elf32-score.c,
-	* elf32-score7.c, * elf32-sh.c, * elf32-spu.c, * elf32-tic6x.c,
-	* elf32-tilepro.c, * elf32-v850.c, * elf32-vax.c, * elf32-visium.c,
-	* elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
-	* elf64-bpf.c, * elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mmix.c,
-	* elf64-ppc.c, * elf64-s390.c, * elf64-sparc.c, * elf64-x86-64.c,
-	* elflink.c, * elfnn-aarch64.c, * elfnn-ia64.c, * elfnn-riscv.c,
-	* elfxx-aarch64.c, * elfxx-mips.c, * elfxx-sparc.c,
-	* elfxx-tilegx.c, * elfxx-x86.c, * i386msdos.c, * linker.c,
-	* mach-o.c, * mmo.c, * opncls.c, * pdp11.c, * pei-x86_64.c,
-	* peicode.h, * reloc.c, * section.c, * syms.c, * vms-alpha.c,
-	* xcofflink.c: Update throughout for bfd section macro and function
-	changes.
-
-2019-09-18  Alan Modra  <amodra@gmail.com>
-
-	* bfd-in.h (bfd_asymbol_section): Rename from bfd_get_section.
-	(bfd_get_output_section): Delete.
-	(bfd_asymbol_base): Delete.
-	(bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
-	(bfd_asymbol_bfd, bfd_asymbol_flavour): Tidy.
-	(bfd_set_asymbol_name): New macro.
-	* bfd-in2.h: Regenerate.
-	* aout-cris.c: Update throughout to use bfd_asymbol_section.
-	* aoutx.h: Likewise.
-	* cofflink.c: Likewise.
-	* dwarf2.c: Likewise.
-	* ecoff.c: Likewise.
-	* elf.c: Likewise.
-	* elf32-arm.c: Likewise.
-	* elf32-mips.c: Likewise.
-	* elf32-score.c: Likewise.
-	* elf32-score7.c: Likewise.
-	* elfn32-mips.c: Likewise.
-	* elfnn-aarch64.c: Likewise.
-	* elfxx-mips.c: Likewise.
-	* linker.c: Likewise.
-	* pdp11.c: Likewise.
-	* elf64-mmix.c (mmix_elf_reloc): Part expand bfd_get_output_section.
+	PR 26422
+	* elf32-arm.c (elf32_arm_final_link_relocate): Use the appropriate
+	bfd_get_x size function to read addends out of fields.  Apply
+	rightshift adjustment too.  Don't apply the now unnecessary
+	howto->size shift to branch REL addends.  Don't refetch R_ARM_ABS8
+	and R_ARM_ABS16 addends.  Don't refetch thumb branch addends.
+	Correct R_ARM_THM_JUMP6 addend.
 
-2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* Makefile.in: Re-generate.
-	* configure: Re-generate.
-	* doc/Makefile.in: Re-generate.
-
-2019-09-18  Alan Modra  <amodra@gmail.com>
-
-	* aoutx.h (slurp_symbol_table): Don't set symcount using bfd_get
-	macros.
-	* pdp11.c (slurp_symbol_table): Likewise.
-	* som.c (som_slurp_symbol_table): Likewise.
-	* coff-ppc.c (ppc_bfd_coff_final_link): Likewise.
-	* coffcode.h (coff_slurp_symbol_table): Likewise.
-	* cofflink.c (_bfd_coff_final_link): Likewise.
-	* ecoff.c (ecoff_slurp_symbolic_header): Likewise.
-	(_bfd_ecoff_slurp_symbolic_info): Likewise.
-	(_bfd_ecoff_slurp_symbol_table): Likewise.
-	(_bfd_ecoff_bfd_final_link): Likewise.
-	* elf.c (_bfd_elf_canonicalize_symtab): Likewise.
-	* elflink.c (elf_link_output_symstrtab): Likewise.
-	(bfd_elf_final_link): Likewise.
-	* peicode.h (pe_ILF_build_a_bfd): Likewise.
-	* xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise.
-	* aoutx.h (some_aout_object_p, slurp_symbol_table): Don't set
-	start_address or symcount using bfd_get macros.
-	* coffgen.c (coff_real_object_p): Likewise.
-	* pdp11.c (some_aout_object_p, slurp_symbol_table): Likewise.
-	* som.c (som_object_setup, som_slurp_symbol_table): Likewise.
-	* elfcore.h (elf_core_file_p): Don't set start_address using
-	bfd_get macro.
-	* elf.c (_bfd_elf_canonicalize_dynamic_symtab): Don't set dynsymcount
-	using bfd_get macro.
-	* bfd.c (bfd_set_file_flags): Don't set flags using bfd_get macro.
-	* linker.c (bfd_generic_link_read_symbols): Don't set outsymbols
-	or symcount using bfd_get macros.
-	(_bfd_generic_final_link, generic_add_output_symbol): Likewise.
-	* syms.c (bfd_set_symtab): Likewise.
-	* vms-alpha.c (alpha_vms_bfd_final_link): Likewise.
-	* archive.c (do_slurp_bsd_armap): Don't set has_armap using
-	bfd_has_map macro.
-	(do_slurp_coff_armap, bfd_slurp_armap): Likewise.
-	* archive64.c (_bfd_archive_64_bit_slurp_armap): Likewise.
-	* coff-rs6000.c (_bfd_xcoff_slurp_armap): Likewise.
-	* coff64-rs6000.c (xcoff64_slurp_armap): Likewise.
-	* ecoff.c (_bfd_ecoff_slurp_armap): Likewise.
-	* som.c (som_slurp_armap): Likewise.
+	PR 26419
+	* elf-m10300.c (mn10300_elf_relax_section): Don't attempt access
+	before start of section.
 
-2019-09-18  Alan Modra  <amodra@gmail.com>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* archures.c (bfd_get_arch): Make param const.
-	(bfd_get_mach, bfd_arch_bits_per_byte): Likewise.
-	(bfd_arch_bits_per_address, bfd_octets_per_byte): Likewise.
-	* bfd-in2.h: Regenerate.
+	* elf-m10300.c (elf32_mn10300_hash_table): Test is_elf_hash_table
+	before accessing elf_hash_table_id.
+	* elf32-arc.c (elf_arc_hash_table): Likewise.
+	* elf32-arm.c (elf32_arm_hash_table): Likewise.
+	* elf32-avr.c (avr_link_hash_table): Likewise.
+	* elf32-bfin.c (bfinfdpic_hash_table): Likewise.
+	* elf32-cris.c (elf_cris_hash_table): Likewise.
+	* elf32-csky.c (csky_elf_hash_table): Likewise.
+	* elf32-frv.c (frvfdpic_hash_table): Likewise.
+	* elf32-hppa.c (hppa_link_hash_table): Likewise.
+	* elf32-lm32.c (lm32_elf_hash_table): Likewise.
+	* elf32-m32r.c (m32r_elf_hash_table): Likewise.
+	* elf32-m68hc1x.h (m68hc11_elf_hash_table): Likewise.
+	* elf32-m68k.c (elf_m68k_hash_table): Likewise.
+	* elf32-metag.c (metag_link_hash_table): Likewise.
+	* elf32-microblaze.c (elf32_mb_hash_table): Likewise.
+	* elf32-nds32.h (nds32_elf_hash_table): Likewise.
+	* elf32-or1k.c (or1k_elf_hash_table): Likewise.
+	* elf32-s390.c (elf_s390_hash_table): Likewise.
+	* elf32-sh.c (sh_elf_hash_table): Likewise.
+	* elf32-spu.c (spu_hash_table): Likewise.
+	* elf32-tilepro.c (tilepro_elf_hash_table): Likewise.
+	* elf32-xtensa.c (elf_xtensa_hash_table): Likewise.
+	* elf64-alpha.c (alpha_elf_hash_table): Likewise.
+	* elf64-hppa.c (hppa_link_hash_table): Likewise.
+	* elf64-ia64-vms.c (elf64_ia64_hash_table): Likewise.
+	* elf64-s390.c (elf_s390_hash_table): Likewise.
+	* elfnn-ia64.c (elfNN_ia64_hash_table): Likewise.
+	* elfnn-riscv.c (riscv_elf_hash_table): Likewise.
+	* elfxx-mips.c (mips_elf_hash_table): Likewise.
+	* elfxx-sparc.h (_bfd_sparc_elf_hash_table): Likewise.
+	* elfxx-tilegx.c (tilegx_elf_hash_table): Likewise.
 
-2019-09-18  Alan Modra  <amodra@gmail.com>
+2020-08-21  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	* bfd-in.h (carsym.name): Make const.
-	* reloc.c (struct reloc_howto_struct.name): Likewise.
-	* targets.c (bfd_target.name): Likewise.!
-	* bfd.c (bfd_get_sign_extend_vma): Make variable const.
-	* som.c (som_bfd_fill_in_ar_symbols): Use an intermediary variable
-	when setting carsym.name.
-	* bfd-in2.h: Regenerate.
+	* elf.c (elfcore_grok_win32pstatus): Change name_size to unsigned
+	int. Use '%u' format with  _bfd_error_handler to render it.
 
-2019-09-18  Alan Modra  <amodra@gmail.com>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* mach-o.c (bfd_mach_o_fat_member_init): Likewise.  Replace
-	xstrdup and xmalloc with bfd_strdup and bfd_malloc.  Return an
-	error status.  Adjust calls.
-	* vms-lib.c (_bfd_vms_lib_get_module): Test mhd->id earlier.
-	Close bfd on failure.  Replace xstrdup/bfd_alloc use with
-	bfd_malloc.  Use bfd_set_filename.
-
-2019-09-18  Alan Modra  <amodra@gmail.com>
-
-	* elf64-ppc.c (must_be_dyn_reloc): Return 0 for TOC16 relocs.
-	(ppc64_elf_check_relocs): Support dynamic/copy relocs for TOC16.
-	(ppc64_elf_adjust_dynamic_symbol): Don't keep dynamic reloc when
-	needs_copy even if all relocs are in rw sections.
-	(dec_dynrel_count): Handle TOC16 relocs.
-	(ppc64_elf_relocate_section): Support dynamic relocs for TOC16.
-	(ppc64_elf_finish_dynamic_symbol): Adjust to handle needs_copy
-	semantic change.
+	PR 26489
+	* elf64-ppc.c (ppc64_elf_size_stubs): Test code_sec->has_toc_reloc
+	and code_sec->makes_toc_func_call before sec_info[code_sec->id].
 
-2019-09-16  Phil Blundell  <pb@pbcl.net>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* version.m4: Set version to 2.33.50.
-	* Makefile.in, configure, doc/Makefile.in: Regenerated.
+	PR 26492
+	* elf64-ppc.c (ppc_hash_table): Test is_elf_hash_table before
+	accessing elf_hash_table_id.
 
-2019-09-11  Tom Tromey  <tom@tromey.com>
+2020-08-25  Alan Modra  <amodra@gmail.com>
 
-	* opncls.c (bfd_set_filename): New function.
-	* bfd-in2.h: Regenerate.
+	PR 26483
+	* elf32-ppc.c (ppc_elf_hash_table): Test is_elf_hash_table before
+	accessing elf_hash_table_id.
 
-2019-09-11  Alan Modra  <amodra@gmail.com>
+2020-08-24  Mark Wielaard  <mark@klomp.org>
 
-	* targets.c (struct bfd_target): Add _bfd_group_name.
-	(BFD_JUMP_TABLE): Likewise.
-	* coffgen.c (bfd_coff_group_name): New function.
-	* elf.c (bfd_elf_group_name): New function.
-	* linker.c (_bfd_nolink_bfd_group_name): New function.
-	* section.c (bfd_generic_group_name): New function.
-	* elf-bfd.h (bfd_elf_group_name): Declare.
-	* libbfd-in.h (_bfd_nolink_bfd_group_name): Declare.
-	* libcoff-in.h (bfd_coff_group_name): Declare.
-	* aout-target.h (MY_bfd_group_name): Define.
-	* aout-tic30.c (MY_bfd_group_name): Define.
-	* bfd.c (bfd_group_name): Define.
-	* binary.c (binary_bfd_group_name): Define.
-	* coff-alpha.c (_bfd_ecoff_bfd_group_name): Define.
-	* coff-mips.c (_bfd_ecoff_bfd_group_name): Define.
-	* coff-rs6000.c (_bfd_xcoff_bfd_group_name): Define.
-	* coffcode.h (coff_bfd_group_name): Define.
-	* elfxx-target.h (bfd_elfNN_bfd_group_name): Define.
-	* i386msdos.c (msdos_bfd_group_name): Define.
-	* ihex.c (ihex_bfd_group_name): Define.
-	* mach-o-target.c (bfd_mach_o_bfd_group_name): Define.
-	* mmo.c (mmo_bfd_group_name): Define.
-	* pef.c (bfd_pef_bfd_group_name): Define.
-	* plugin.c (bfd_plugin_bfd_group_name): Define.
-	* ppcboot.c (ppcboot_bfd_group_name): Define.
-	* som.c (som_bfd_group_name): Define.
-	* srec.c (srec_bfd_group_name): Define.
-	* tekhex.c (tekhex_bfd_group_name): Define.
-	* verilog.c (verilog_bfd_group_name): Define.
-	* vms-alpha.c (vms_bfd_group_name, alpha_vms_bfd_group_name): Define.
-	* xsym.c (bfd_sym_bfd_group_name): Define.
-	* coff64-rs6000.c (rs6000_xcoff64_vec): Init new field.
-	(rs6000_xcoff64_aix_vec): Likewise.
-	* bfd-in2.h: Regenerate.
-	* libbfd.h: Regenerate.
-	* libcoff.h: Regenerate.
+	* dwarf2.c (read_attribute_value): Handle DW_FORM_data16.
+	(read_formatted_entries): Likewise. And skip zero entry.
 
-2019-09-10  Nick Clifton  <nickc@redhat.com>
+2020-08-24  Cooper Qu  <cooper.qu@linux.alibaba.com>
 
-	PR 24907
-	* archures.c (bfd_arch_info_type): Add max_reloc_offset_into_insn
-	field.
-	(bfd_default_arch_struct): Initialise the new field.
-	* bfd-in2.h: Regenerate.
-	* cpu-aarch64.c: Initialise the new field.
-	* cpu-alpha.c: Likewise.
-	* cpu-arc.c: Likewise.
-	* cpu-arm.c: Likewise.
-	* cpu-avr.c: Likewise.
-	* cpu-bfin.c: Likewise.
-	* cpu-bpf.c: Likewise.
-	* cpu-cr16.c: Likewise.
-	* cpu-cr16c.c: Likewise.
-	* cpu-cris.c: Likewise.
-	* cpu-crx.c: Likewise.
-	* cpu-csky.c: Likewise.
-	* cpu-d10v.c: Likewise.
-	* cpu-d30v.c: Likewise.
-	* cpu-dlx.c: Likewise.
-	* cpu-epiphany.c: Likewise.
-	* cpu-fr30.c: Likewise.
-	* cpu-frv.c: Likewise.
-	* cpu-ft32.c: Likewise.
-	* cpu-h8300.c: Likewise.
-	* cpu-hppa.c: Likewise.
-	* cpu-i386.c: Likewise.
-	* cpu-ia64.c: Likewise.
-	* cpu-iamcu.c: Likewise.
-	* cpu-ip2k.c: Likewise.
-	* cpu-iq2000.c: Likewise.
-	* cpu-k1om.c: Likewise.
-	* cpu-l1om.c: Likewise.
-	* cpu-lm32.c: Likewise.
-	* cpu-m10200.c: Likewise.
-	* cpu-m10300.c: Likewise.
-	* cpu-m32c.c: Likewise.
-	* cpu-m32r.c: Likewise.
-	* cpu-m68hc11.c: Likewise.
-	* cpu-m68hc12.c: Likewise.
-	* cpu-m68k.c: Likewise.
-	* cpu-m9s12x.c: Likewise.
-	* cpu-m9s12xg.c: Likewise.
-	* cpu-mcore.c: Likewise.
-	* cpu-mep.c: Likewise.
-	* cpu-metag.c: Likewise.
-	* cpu-microblaze.c: Likewise.
-	* cpu-mips.c: Likewise.
-	* cpu-mmix.c: Likewise.
-	* cpu-moxie.c: Likewise.
-	* cpu-msp430.c: Likewise.
-	* cpu-mt.c: Likewise.
-	* cpu-nds32.c: Likewise.
-	* cpu-nfp.c: Likewise.
-	* cpu-nios2.c: Likewise.
-	* cpu-ns32k.c: Likewise.
-	* cpu-or1k.c: Likewise.
-	* cpu-pdp11.c: Likewise.
-	* cpu-pj.c: Likewise.
-	* cpu-plugin.c: Likewise.
-	* cpu-powerpc.c: Likewise.
-	* cpu-pru.c: Likewise.
-	* cpu-riscv.c: Likewise.
-	* cpu-rl78.c: Likewise.
-	* cpu-rs6000.c: Likewise.
-	* cpu-rx.c: Likewise.
-	* cpu-s12z.c: Likewise.
-	* cpu-s390.c: Likewise.
-	* cpu-score.c: Likewise.
-	* cpu-sh.c: Likewise.
-	* cpu-sparc.c: Likewise.
-	* cpu-spu.c: Likewise.
-	* cpu-tic30.c: Likewise.
-	* cpu-tic4x.c: Likewise.
-	* cpu-tic54x.c: Likewise.
-	* cpu-tic6x.c: Likewise.
-	* cpu-tic80.c: Likewise.
-	* cpu-tilegx.c: Likewise.
-	* cpu-tilepro.c: Likewise.
-	* cpu-v850.c: Likewise.
-	* cpu-v850_rh850.c: Likewise.
-	* cpu-vax.c: Likewise.
-	* cpu-visium.c: Likewise.
-	* cpu-wasm32.c: Likewise.
-	* cpu-xc16x.c: Likewise.
-	* cpu-xgate.c: Likewise.
-	* cpu-xstormy16.c: Likewise.
-	* cpu-xtensa.c: Likewise.
-	* cpu-z80.c: Likewise.
-	* cpu-z8k.c: Likewise.
+	* bfd-in2.h (bfd_mach_ck860): New.
+	* cpu-csky.c (arch_info_struct): Add item for CK860.
 
-2019-09-09  Phil Blundell  <pb@pbcl.net>
+2020-08-24  Alan Modra  <amodra@gmail.com>
 
-	binutils 2.33 branch created.
+	* elf32-ppc.c (ppc_elf_check_relocs): Set has_tls_reloc for
+	high part tprel16 relocs.
+	(ppc_elf_tls_optimize): Sanity check high part tprel16 relocs.
+	Clear do_tls_opt on odd instructions.
+	(ppc_elf_relocate_section): Move TPREL16_HA/LO optimisation later.
+	Don't sanity check them here.
+	* elf64-ppc.c (ppc64_elf_check_relocs): Set has_tls_reloc for
+	high part tprel16 relocs.
+	(ppc64_elf_tls_optimize): Sanity check high part tprel16 relocs.
+	Clear do_tls_opt on odd instructions.
+	(ppc64_elf_relocate_section): Don't sanity check TPREL16_HA.
 
-2019-09-06  Alan Modra  <amodra@gmail.com>
+2020-08-23  John David Anglin  <danglin@gcc.gnu.org>
 
-	* aout-target.h (object_p): Formatting.
-	* bfd-in.h (bfd_get_filename): Don't cast to char*.
-	* corefile.c (generic_core_file_matches_executable_p): Constify
-	variables and remove cast.
-	* bfd-in2.h: Regenerate.
+	PR binutils/26357
+	* configure.ac: Disable plugins by default on 32-bit hppa*-*-hpux*.
+	* configure: Regenerate.
 
-2019-09-05  Alan Modra  <amodra@gmail.com>
+2020-08-22  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* elf64-ppc.c (ppc64_elf_check_relocs): Interpret an addend in
-	GOT_PCREL and PLT_PCREL relocs as affecting the value stored
-	in the GOT/PLT entry rather than affecting the offset to that
-	GOI/PLT entry.
-	(ppc64_elf_edit_toc, ppc64_elf_relocate_section): Likewise.
+	PR ld/26382
+	* elflink.c (elf_link_output_symstrtab): Keep only one '@' for
+	versioned symbols, which are defined in shared objects, in
+	symbol string table.
+
+2020-08-21  Nick Clifton  <nickc@redhat.com>
+
+	* elfnn-aarch64.c (_bfd_aarch64_erratum_835769_scan): Only sort
+	the data map if there are entries in it.
+	(_bfd_aarch64_erratum_843419_scan): Likewise.
+
+2020-08-21  Jan Beulich  <jbeulich@suse.com>
+
+	* peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Check
+	last byte of debug dir, not first.
+
+2020-08-20  Nick Clifton  <nickc@redhat.com>
+
+	PR 26428
+	* bfd.c (bfd_update_compression_header): Also set the sh_addralign
+	field in the ELF header of the compressed sections.
+
+2020-08-20  Nick Clifton  <nickc@redhat.com>
+
+	PR 26406
+	* elf-bfd.h (struct bfd_elf_section_data): Add
+	has_secondary_relocs field.
+	* elf.c (_bfd_elf_copy_special_section_fields): Set the
+	has_secondary_relocs field for sections which have associated
+	secondary relocs.
+	* elfcode.h (elf_write_relocs): Only call write_secondary_relocs
+	on sections which have associated secondary relocs.
+
+2020-08-15  Alan Modra  <amodra@gmail.com>
+
+	* elf32-frv.c (elf32_frv_add_symbol_hook): Set SEC_SMALL_DATA on
+	small common section.
+	* elf32-m32r.c (m32r_elf_add_symbol_hook): Likewise.
+	* elf32-microblaze.c (microblaze_elf_add_symbol_hook): Likewise.
+	* elf32-nds32.c (nds32_elf_add_symbol_hook): Likewise.
+	* elf32-nios2.c (nios2_elf_add_symbol_hook): Likewise.
+	* elf32-ppc.c (ppc_elf_add_symbol_hook): Likewise.
+	* elf32-score.c (s3_bfd_score_elf_add_symbol_hook): Likewise.
+	* elf32-score7.c (s7_bfd_score_elf_add_symbol_hook): Likewise.
+	* elf32-tic6x.c (elf32_tic6x_add_symbol_hook): Likewise.
+	* elf32-v850.c (v850_elf_check_relocs): Likewise.
+	(v850_elf_add_symbol_hook): Likewise.
+	* elf64-alpha.c (elf64_alpha_add_symbol_hook): Likewise.
+	* elf64-ia64-vms.c (elf64_ia64_add_symbol_hook): Likewise.
+	* elfnn-ia64.c (elfNN_ia64_add_symbol_hook): Likewise.
+	* elfxx-mips.c (_bfd_mips_elf_add_symbol_hook): Likewise.
 
-2019-09-05  Alan Modra  <amodra@gmail.com>
+2020-08-15  Alan Modra  <amodra@gmail.com>
 
-	* elf64-ppc.c (xlate_pcrel_opt): Handle prefix loads and stores
-	in second instruction.
-	(ppc64_elf_relocate_section): Likewise.
+	PR 26389
+	* syms.c (bfd_decode_symclass): Choose 'c' for commons only when
+	SEC_SMALL_DATA.
+	* elf32-m32r.c (_bfd_m32r_elf_symbol_processing): Set SEC_SMALL_DATA
+	on small common section.
+	* elf32-score.c (s3_bfd_score_elf_symbol_processing): Likewise.
+	* elf32-score7.c (s7_bfd_score_elf_symbol_processing): Likewise.
+	* elf32-tic6x.c (elf32_tic6x_symbol_processing): Likewise.
+	* elf32-v850.c (v850_elf_symbol_processing): Likewise.
+	* elfxx-mips.c (_bfd_mips_elf_symbol_processing): Likewise.
+	* ecoff.c (ecoff_set_symbol_info, ecoff_link_add_externals): Likewise.
 
-2019-09-05  Alan Modra  <amodra@gmail.com>
+2020-08-14  Alan Modra  <amodra@gmail.com>
 
-	PR 24955
-	* libbfd-in.h (bfd_strdup): New inline function.
-	* archive.c (_bfd_get_elt_at_filepos): Use bfd_strdup.  Close
-	bfd on error.
-	* elfcode.h (_bfd_elf_bfd_from_remote_memory): Use bfd_strdup.
-	* opncls.c (bfd_fopen): Use bfd_strdup.  Close fd and stream
-	on error.
-	(bfd_openstreamr): Use bfd_strdup.
-	(bfd_openr_iovec, bfd_openw, bfd_create): Likewise.
-	* plugin.c (try_load_plugin): Use bfd_malloc.
-	* libbfd.h: Regenerate.
+	* hash.c (bfd_hash_set_default_size): Use higher_prime_number
+	rather than another copy of primes.  Increase maximum default
+	size allowed.
 
-2019-09-02  Alan Modra  <amodra@gmail.com>
+2020-08-13  Alan Modra  <amodra@gmail.com>
 
-	PR 11983
-	* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Free debug_filename
-	on success.  Tidy.
-	(read_alt_indirect_string): Likewise.
-	(read_alt_indirect_ref): Likewise.
+	* config.bfd: Obsolete arm*-*-symbianelf*, and ia64*-*-*.
 
-2019-08-31  Jim Wilson  <jimw@sifive.com>
+2020-08-13  Alan Modra  <amodra@gmail.com>
 
-	PR 23825
-	* elfnn-riscv.c (riscv_elf_create_dynamic_sections): Add SEC_LOAD,
-	SEC_DATA, and SEC_HAS_CONTENTS to .tdata.dyn section.
+	* elf64-ppc.h (struct ppc64_elf_params): Add no_pcrel_opt.
+	* elf64-ppc.c (ppc64_elf_relocate_section): Disable GOT reloc
+	optimizations when --no-toc-optimize.  Disable R_PPC64_PCREL_OPT
+	optimization when --no-pcrel-optimize.
 
-2019-08-30  Jim Wilson  <jimw@sifive.com>
+2020-08-13  Alan Modra  <amodra@gmail.com>
 
-	* elfnn-riscv.c (riscv_elf_relocate_section): For unresolvable reloc
-	error, call bfd_set_error, set ret to FALSE, and goto out label.
+	PR 26348
+	* bfd.c (struct bfd): Add read_only.
+	* elfcode.h (elf_swap_shdr_in): Test both sh_offset and sh_size.
+	Set read_only on warning.
+	(elf_object_p): Sanity check program header alignment.  Set
+	read_only on warning.
+	* bfd-in2.h: Regenerate.
 
-2019-08-30  H.J. Lu  <hongjiu.lu@intel.com>
+2020-08-12  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	PR ld/24951
-	* archive.c (_bfd_get_elt_at_filepos): Copy BFD_COMPRESS,
-	BFD_DECOMPRESS and BFD_COMPRESS_GABI flags for thin archive.
+	* elf.c (elfcore_grok_win32pstatus): Use unsigned int for
+	win32pstatus note type to avoid signedness comparison warning.
 
-2019-08-29  Alan Modra  <amodra@gmail.com>
+2020-07-21  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	PR 24697
-	* elf32-ppc.c (ppc_elf_check_relocs): Call bad_shared_reloc
-	when !bfd_link_executable for R_PPC_EMB_SDA2I16 and
-	R_PPC_EMB_SDA2REL.  Don't call bad_shared_reloc for any other
-	reloc.
+	* elf.c (elfcore_grok_win32pstatus): Warn on malformed
+	win32pstatus notes, and return TRUE so we continue rather than
+	stopping as if it was an error.
 
-2019-08-29  Alan Modra  <amodra@gmail.com>
+2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	* elf64-ppc.c (xlate_pcrel_opt): Add poff parameter.  Allow offset
-	on second insn, return it in poff.
-	(ppc64_elf_relocate_section): Add offset to paddi addend for
-	PCREL_OPT.
+	* elf.c (elfcore_grok_win32pstatus): Handle NOTE_INFO_MODULE64.
 
-2019-08-28  Jim Wilson  <jimw@sifive.com>
+2020-07-11  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	* elfnn-riscv.c (_bfd_riscv_relax_lui): Add check to exclude abs
-	section when setting max_alignment.  Update comment.
-	(_bfd_riscv_relax_pc): Likewise.
+	* elf.c (elfcore_grok_win32pstatus): Don't apply size constraint
+	for NOTE_INFO_THREAD to all win32pstatus ELF notes, instead apply
+	appropriate size constraint for each win32pstatus note type.
 
-2019-08-29  Alan Modra  <amodra@gmail.com>
+2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	PR 24891
-	* bfd.c (struct bfd): Add no_element_cache.
-	* archive.c (_bfd_get_elt_at_filepos): Don't add element to
-	archive cache when no_element_cache.
-	(bfd_generic_archive_p): Set no_element_cache when opening first
-	element to check format.  Close first element too.
-	(do_slurp_bsd_armap): Don't zero ardata->cache here.
-	* bfd-in2.h: Regenerate.
+	* elf.c (elfcore_grok_win32pstatus): Don't hardcode the size of
+	the Win32 API thread CONTEXT type read from a NOTE_INFO_THREAD
+	win32pstatus note.
 
-2019-08-24  Alan Modra  <amodra@gmail.com>
+2020-07-11  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	* elf64-ppc.c (ppc64_elf_edit_toc): Exclude undefined weak
-	symbols from GOT optimisation.
+	* elf.c (NOTE_INFO{_PROCESS,_THREAD,_MODULE}): Define.
+	(elfcore_grok_win32pstatus): Use.
 
-2019-08-23  Stafford Horne  <shorne@gmail.com>
+2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	* elf32-or1k.c (or1k_elf_finish_dynamic_symbol): Use correct value for
-	PLT GOT entries.
+	* elf.c (elfcore_grok_win32pstatus): Fix the offset used to read
+	the tid from a win32pstatus NOTE_INFO_THREAD ELF note.  Fix
+	offsets used to read NOTE_INFO_PROCESS.
 
-2019-08-23  Nick Clifton  <nickc@redhat.com>
+2020-08-12  Nick Clifton  <nickc@redhat.com>
 
-	PR 24456
-	* elf.c (bfd_section_from_shdr): Issue an informative warning
-	message and continue processing other sections after encountering
-	a reloc section for a section which already has other relocs
-	associated with it.
+	* po/ru.po: Updated Russian translation.
+	* po/sr.po: Updated Serbian translation.
 
-2019-08-23  Alan Modra  <amodra@gmail.com>
+2020-08-07  David Faust  <david.faust@oracle.com>
 
-	PR 24933
-	* elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Don't exit
-	on error without freeing plts[] contents.
+	* elf64-bpf.c (bpf_elf_relocate_section): Ensure signed division for
+	DISP16 and DISP32 relocations.
 
-2019-08-22  Dennis Zhang  <dennis.zhang@arm.com>
+2020-08-05  David Faust  <david.faust@oracle.com>
 
-	* cpu-arm.c: New entries for Cortex-M35P, Cortex-A77, Cortex-A76AE.
+	* elf64-bpf.c (bpf_elf_generic_reloc): New function.
+	(bpf_elf_howto_table): Use it here.
+	(bpf_elf_relocate_section): Use addends recorded in input_bfd for
+	instruction and data relocations.
+
+2020-08-03  Alan Modra  <amodra@gmail.com>
+
+	* vms-lib.c (vms_traverse_index): Sanity check size remaining
+	before accessing vms_idx or vms_elfidx.
+
+2020-08-03  Alan Modra  <amodra@gmail.com>
+
+	PR 26330
+	* elf.c (_bfd_elf_get_symtab_upper_bound): Sanity check symbol table
+	size against file size.  Correct LONG_MAX limit check.
+	(_bfd_elf_get_dynamic_symtab_upper_bound): Likewise.
+	(_bfd_elf_get_reloc_upper_bound): Don't check file size if writing.
+	(_bfd_elf_get_dynamic_reloc_upper_bound): Likewise.
+	* elf64-x86-64-.c (elf_x86_64_get_synthetic_symtab): Use
+	bfd_malloc_and_get_section.
+
+2020-07-31  Alan Modra  <amodra@gmail.com>
+
+	PR 26314
+	* elflink.c (bfd_elf_link_record_dynamic_symbol): Don't allow
+	IR symbols to become dynamic.
+	(elf_link_add_object_symbols): Don't exclude IR symbols when
+	deciding whether an as-needed shared library is needed.
+
+2020-07-30  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	PR ld/26312
+	* elfnn-aarch64.c (elfNN_aarch64_init_small_plt0_entry): Set sh_entsize
+	to 0.
+	(elfNN_aarch64_finish_dynamic_sections): Remove sh_entsize setting.
+
+2020-07-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* bfd.m4 (BFD_SYS_PROCFS_H): New macro.
+	(BFD_HAVE_SYS_PROCFS_TYPE): Require BFD_SYS_PROCFS_H.
+	Don't define _STRUCTURED_PROC.
+	(BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): Likewise.
+	* elf.c [HAVE_SYS_PROCFS_H] (_STRUCTURED_PROC): Don't define.
+	* configure.ac: Use BFD_SYS_PROCFS_H to check for <sys/procfs.h>.
+	* configure, config.in: Regenerate.
+	* Makefile.am (AM_CPPFLAGS): Add LARGEFILE_CPPFLAGS.
+	* Makefile.in, doc/Makefile.in: Regenerate.
+
+2020-07-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf-bfd.h (sym_cache): Moved before elf_link_hash_table.
+	(elf_link_hash_table): Add sym_cache.
+	* elf32-arm.c (elf32_arm_link_hash_table): Remove sym_cache.
+	(elf32_arm_check_relocs): Updated.
+	(elf32_arm_size_dynamic_sections): Likewise.
+	* elf32-bfin.c (bfin_link_hash_table): Removed.
+	(bfin_link_hash_newfunc): Updated.
+	(bfin_hash_table): Removed.
+	* elf32-csky.c (csky_elf_link_hash_table): Remove sym_cache.
+	(csky_elf_check_relocs): Updated.
+	* elf32-hppa.c (elf32_hppa_link_hash_table): Remove sym_cache.
+	(elf32_hppa_check_relocs): Updated.
+	* elf32-i386.c (elf_i386_tls_transition): Updated.
+	(elf_i386_convert_load_reloc): Likewise.
+	(elf_i386_check_relocs): Likewise.
+	* elf32-m32r.c (elf_m32r_link_hash_table): Removed.
+	(m32r_elf_hash_table): Updated.
+	(m32r_elf_link_hash_table_create): Likewise.
+	(m32r_elf_create_dynamic_sections): Likewise.
+	(m32r_elf_adjust_dynamic_symbol): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(m32r_elf_size_dynamic_sections): Likewise.
+	(m32r_elf_relocate_section): Likewise.
+	(m32r_elf_finish_dynamic_symbol): Likewise.
+	(m32r_elf_check_relocs): Likewise.
+	* elf32-m68hc1x.h (m68hc11_elf_link_hash_table): Remove
+	sym_cache.
+	* elf32-m68k.c (elf_m68k_link_hash_table): Likewise.
+	(elf_m68k_check_relocs): Updated.
+	* elf32-metag.c (elf_metag_link_hash_table): Remove sym_cache.
+	(elf_metag_check_relocs): Updated.
+	* elf32-microblaze.c (elf32_mb_link_hash_table): Remove sym_sec.
+	(microblaze_elf_check_relocs): Updated.
+	* elf32-nds32.c (nds32_elf_link_hash_table_create): Likewise.
+	(nds32_elf_create_dynamic_sections): Likewise.
+	(nds32_elf_adjust_dynamic_symbol): Likewise.
+	(nds32_elf_check_relocs): Likewise.
+	* elf32-nds32.h (elf_nds32_link_hash_table): Remove sdynbss,
+	srelbss and aym_cache.
+	* elf32-nios2.c (elf32_nios2_link_hash_table): Remove sym_cache.
+	(nios2_elf32_check_relocs): Updated.
+	* elf32-or1k.c (elf_or1k_link_hash_table): Remove sym_sec.
+	(or1k_elf_check_relocs): Updated.
+	* elf32-ppc.c (ppc_elf_check_relocs): Remove sym_cache.
+	(ppc_elf_check_relocs): Updated.
+	* elf32-s390.c (elf_s390_link_hash_table): Remove sym_cache.
+	(elf_s390_check_relocs): Updated.
+	(elf_s390_finish_dynamic_sections): Likewise.
+	* elf32-sh.c (elf_sh_link_hash_table): Remove sdynbss, srelbss
+	and aym_cache.
+	(sh_elf_create_dynamic_sections): Updated.
+	(sh_elf_adjust_dynamic_symbol): Likewise.
+	(sh_elf_size_dynamic_sections): Likewise.
+	(sh_elf_check_relocs): Likewise.
+	* elf32-tic6x.c (elf32_tic6x_link_hash_table): Remove sym_cache.
+	(elf32_tic6x_check_relocs): Updated.
+	* elf32-tilepro.c (tilepro_elf_link_hash_table): Removed.
+	(tilepro_elf_hash_table): Updated.
+	(tilepro_elf_link_hash_table_create): Likewise.
+	(tilepro_elf_check_relocs): Likewise.
+	(tilepro_elf_adjust_dynamic_symbol): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(tilepro_elf_size_dynamic_sections): Likewise.
+	(tilepro_elf_relocate_section): Likewise.
+	(tilepro_elf_finish_dynamic_symbol): Likewise.
+	(tilepro_finish_dyn): Likewise.
+	(tilepro_elf_finish_dynamic_sections): Likewise.
+	* elf64-ppc.c (ppc_link_hash_table): Remove sym_cache.
+	(ppc64_elf_before_check_relocs): Updated.
+	(ppc64_elf_check_relocs): Likewise.
+	* elf64-s390.c (elf_s390_link_hash_table): Remove sym_cache.
+	(elf_s390_check_relocs): Updated.
+	(elf_s390_relocate_section): Likewise.
+	(elf_s390_finish_dynamic_sections): Likewise.
+	* elf64-x86-64.c (elf_x86_64_tls_transition): Likewise.
+	(elf_x86_64_check_relocs): Likewise.
+	* elfnn-aarch64.c (elf_aarch64_link_hash_table): Remove
+	sym_cache.
+	(elfNN_aarch64_check_relocs): Updated.
+	* elfnn-riscv.c (riscv_elf_link_hash_table): Remove sym_cache.
+	(riscv_elf_check_relocs): Updated.
+	* elfxx-mips.c (mips_elf_link_hash_table): Remove sym_cache.
+	(mips_elf_resolve_got_page_ref): Updated.
+	* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Likewise.
+	* elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Remove
+	sym_cache.
+	* elfxx-tilegx.c (tilegx_elf_link_hash_table): Likewise.
+	(tilegx_elf_check_relocs): Updated.
+	* elfxx-x86.h (elf_x86_link_hash_table): Remove sym_cache.
 
-2019-08-22  Nick Clifton  <nickc@redhat.com>
+2020-07-29  Maciej W. Rozycki  <macro@linux-mips.org>
 
-	PR 24922
-	* pei-x86_64.c (pex64_xdata_print_uwd_codes): Add checks before
-	reading data from extra records.
+	* elflink.c (bfd_elf_final_link): Give local symbols a name if
+	so requested.
+	* elfxx-mips.c (_bfd_mips_elf_name_local_section_symbols): Only
+	return TRUE if making ET_REL output.
 
-2019-08-22  Tamar Christina  <tamar.christina@arm.com>
+2020-07-29  Maciej W. Rozycki  <macro@linux-mips.org>
 
-	PR ld/24601
-	* elfnn-aarch64.c (aarch64_relocate): Handle weak TLS and undefined TLS.
-	Also Pass input_bfd to _bfd_aarch64_elf_resolve_relocation.
-	* elfxx-aarch64.c (_bfd_aarch64_elf_resolve_relocation): Use it.
-	* elfxx-aarch64.h (_bfd_aarch64_elf_resolve_relocation): Emit warning
-	for weak TLS.
+	* elf-bfd.h (elf_backend_data): Add
+	`elf_backend_elfsym_local_is_section' member.
+	* elfxx-target.h (elf_backend_elfsym_local_is_section): New
+	macro.
+	(elfNN_bed): Add `elf_backend_elfsym_local_is_section' member.
+	* elflink.c (bfd_elf_final_link): Use it to determine whether
+	set the `.symtab' section's `sh_info' value to the index of the
+	first non-local or non-section symbol.
+	* elf32-mips.c (mips_elf32_elfsym_local_is_section): New
+	function.
+	(elf_backend_elfsym_local_is_section): New macro.
+	* elfn32-mips.c (mips_elf_n32_elfsym_local_is_section): New
+	function.
+	(elf_backend_elfsym_local_is_section): New macro.
 
-2019-08-22  Alan Modra  <amodra@gmail.com>
+2020-07-29  Alan Modra  <amodra@gmail.com>
 
-	* elf32-arm.c (cmse_scan): Don't use ARM_GET_SYM_CMSE_SPCL,
-	instead recognize CMSE_PREFIX in symbol name.
-	(elf32_arm_gc_mark_extra_sections): Likewise.
-	(elf32_arm_filter_cmse_symbols): Don't test ARM_GET_SYM_CMSE_SPCL.
-	(elf32_arm_swap_symbol_in): Don't invoke ARM_SET_SYM_CMSE_SPCL.
+	* elflink.c (bfd_elf_final_link): Don't segfault on local dynsyms
+	defined in excluded sections.
 
-2019-08-20  Dennis Zhang  <dennis.zhang@arm.com>
+2020-07-28  Alan Modra  <amodra@gmail.com>
 
-	* cpu-aarch64.c: New entries for Cortex-A34, Cortex-A65,
-	 Cortex-A77, cortex-A65AE, and Cortex-A76AE.
+	* elf.c (assign_section_numbers): Comment.  Don't segfault on
+	discarded sections when setting linked-to section for generic
+	ELF linker.
+	* elflink.c (bfd_elf_match_symbols_in_sections): Allow NULL info.
 
-2019-08-20  Tamar Christina  <tamar.christina@arm.com>
+2020-07-27  Alan Modra  <amodra@gmail.com>
 
-	* elf32-arm.c (elf32_thumb2_plt_entry, elf32_arm_plt_thumb_stub,
-	elf32_arm_stub_long_branch_v4t_thumb_thumb,
-	elf32_arm_stub_long_branch_v4t_thumb_arm,
-	elf32_arm_stub_short_branch_v4t_thumb_arm,
-	elf32_arm_stub_long_branch_v4t_thumb_arm_pic,
-	elf32_arm_stub_long_branch_v4t_thumb_thumb_pic,
-	elf32_arm_stub_long_branch_v4t_thumb_tls_pic): Change nop to branch to
-	previous instruction.
+	* xcofflink.c (xcoff_need_ldrel_p): Accept --just-symbols symbols and
+	similar as absolute.
+	(bfd_xcoff_import_symbol): Don't fuss over absolute symbol
+	redefinitions here.
 
-2019-08-19  Tom Tromey  <tromey@adacore.com>
+2020-07-24  Nick Clifton  <nickc@redhat.com>
 
-	* dwarf2.c (_bfd_dwarf2_find_symbol_bias): Create hash table
-	holding symbols.
+	* config.bfd: Move xc16x target to the obsolete list.
 
-2019-08-19  Alan Modra  <amodra@gmail.com>
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
 
-	* elf64-ppc.c (struct ppc64_elf_obj_tdata): Rename has_gotrel
-	to has_optrel.
-	(struct _ppc64_elf_section_data): Likewise.
-	(ppc64_elf_check_relocs): Set has_optrel for more relocs.
-	(ppc64_elf_edit_toc): Do ha/lo insn checks in GOT loop rather
-	than TOC loop.  Check PLT16 insns too.
+	* binary.c (binary_get_section_contents): Seek using offset
+	from section's file position.
 
-2019-08-16  H.J. Lu  <hongjiu.lu@intel.com>
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
 
-	PR ld/24905
-	* elf64-x86-64.c (elf_x86_64_check_relocs): Move PIC check for
-	PC-relative relocations back to ...
-	(elf_x86_64_relocate_section): Here.
+	* elf.c (_bfd_elf_make_section_from_phdr): Remove hack for GDB.
 
-2019-08-16  Martin Liska  <mliska@suse.cz>
+2020-07-22  Max Filippov  <jcmvbkbc@gmail.com>
 
-	PR ld/24912
-	* elflink.c: Report error only for not relocatable.
-	* linker.c (_bfd_generic_link_add_one_symbol): Do not handle
-	here lto_slim_object as it's handled in caller.
+	PR 26246
+	* elf32-xtensa.c (removed_literal_compare): Use correct pointer
+	type for the first function argument. Rename pointers to reflect
+	that they have distinct types.
 
-2019-08-16  Alan Modra  <amodra@gmail.com>
+2020-07-20  Alan Modra  <amodra@gmail.com>
 
-	* elf32-ppc.c (ppc_elf_relocate_section): Optimize unaligned relocs.
+	* elflink.c (_bfd_elf_gc_keep): Use bfd_is_const_section.
 
-2019-08-15  Jim Wilson  <jimw@sifive.com>
+2020-07-19  Alan Modra  <amodra@gmail.com>
 
-	* elfnn-riscv.c (perform_relocation) <R_RISCV_RVC_LUI>: If
-	RISCV_CONST_HIGH_PART (value) is zero, then convert c.lui instruction
-	to c.li instruction, and use ENCODE_RVC_IMM to set value.
+	* elf64-ppc.c (struct ppc_link_hash_table): Add has_power10_relocs.
+	(select_alt_stub): New function.
+	(ppc_get_stub_entry): Use it here.
+	(ppc64_elf_check_relocs): Set had_power10_relocs rather than
+	power10_stubs.
+	(ppc64_elf_size_stubs): Clear power10_stubs here instead.  Don't
+	merge notoc stubs with other varieties when power10_stubs is "auto".
+	Instead dup the stub hash table entry.
+	(plt_stub_size, ppc_build_one_stub, ppc_size_one_stub): Adjust
+	tests of power10_stubs.
 
-2019-08-15  Tom Tromey  <tromey@adacore.com>
+2020-07-15  Alan Modra  <amodra@gmail.com>
 
-	* dwarf2.c (scan_unit_for_symbols): Check for end of CU, not end
-	of section.
+	PR 26239
+	* coffgen.c (_bfd_coff_close_and_cleanup): Free dwarf2 info.
 
-2019-08-14  Alan Modra  <amodra@gmail.com>
+2020-07-15  Nick Clifton  <nickc@redhat.com>
 
-	PR 24623
-	* dwarf2.c (stash_comp_unit): New function, extracted from..
-	(_bfd_dwarf2_find_nearest_line): ..here.
-	(find_abstract_instance): Parse comp units and decode line info
-	as needed.
+	PR26240
+	* coffgen.c (coff_get_normalized_symtab): Fix off-by-one error in
+	check for aux entries that overflow the buufer.
 
-2019-08-14  Alan Modra  <amodra@gmail.com>
+2020-07-15  Hans-Peter Nilsson  <hp@bitrange.com>
 
-	* dwarf2.c (comp_unit_maybe_decode_line_info): Declare.
-	(comp_unit_find_nearest_line): Use it here..
-	(_bfd_dwarf2_find_symbol_bias): ..and here.
+	* elf64-mmix.c (mmix_elf_relax_section): Improve accounting for
+	R_MMIX_PUSHJ_STUBBABLE relocs against undefined symbols.
 
-2019-08-14  Alan Modra  <amodra@gmail.com>
+2020-07-15  Markus BÃ¶ck  <markus.boeck02@gmail.com>
+	    Alan Modra  <amodra@gmail.com>
 
-	* dwarf2.c (_bfd_dwarf2_find_nearest_line): Remove addr_size parameter.
-	* libbfd-in.h  (_bfd_dwarf2_find_nearest_line): Update prototype.
-	* coffgen.c (coff_find_nearest_line_with_names): Adjust
-	_bfd_dwarf2_find_nearest_line calls.
-	* elf.c (_bfd_elf_find_nearest_line, _bfd_elf_find_line): Likewise.
-	* elf32-arm.c (elf32_arm_find_nearest_line): Likewise.
-	* elf64-alpha.c (elf64_alpha_find_nearest_line): Likewise.
-	* elfnn-aarch64.c (elfNN_aarch64_find_nearest_line): Likewise.
-	* elfxx-mips.c (_bfd_mips_elf_find_nearest_line): Likewise.
-	* mach-o.c (bfd_mach_o_find_nearest_line): Likewise.
-	* libbfd.h: Regenerate.
+	PR 26198
+	* coffgen.c (_bfd_coff_section_already_linked): Allow for plugin
+	objects both before and after normal object files.
+	* elflink.c (_bfd_elf_section_already_linked): Likewise.
 
-2019-08-09  Mihailo Stojanovic  <mihailo.stojanovic@rt-rk.com>
+2020-07-10  Alan Modra  <amodra@gmail.com>
 
-	* elf-bfd.h (struct elf_backend_data): New members.
-	* elflink.c (_bfd_elf_link_create_dynamic_sections): Create
-	.gnu.hash section if necessary.
-	(struct collect_gnu_hash_codes): New member.
-	(elf_gnu_hash_process_symidx): New function name.
-	(elf_renumber_gnu_hash_syms): Ignore local and undefined
-	symbols. Record xlat location for every symbol which should have
-	a .MIPS.xhash entry.
-	(bfd_elf_size_dynamic_sections): Add DT_GNU_HASH dynamic tag to
-	dynamic section if necessary.
-	(GNU_HASH_SECTION_NAME): New define.
-	(bfd_elf_size_dynsym_hash_dynstr): Get .MIPS.xhash section.
-	Update the section size info.
-	* elfxx-mips.c (struct mips_elf_hash_sort_data): New members.
-	(struct mips_elf_link_hash_entry): New member.
-	(mips_elf_link_hash_newfunc): Initialize .MIPS.xhash translation
-	table location.
-	(mips_elf_sort_hash_table): Initialize the pointer to the
-	.MIPS.xhash section.
-	(mips_elf_sort_hash_table_f): Populate the .MIPS.xhash
-	translation table entry with the symbol dynindx.
-	(_bfd_mips_elf_section_from_shdr): Add SHT_MIPS_XHASH.
-	(_bfd_mips_elf_fake_sections): Initialize .MIPS.xhash section
-	info.
-	(_bfd_mips_elf_create_dynamic_sections): Create .MIPS.xhash
-	section.
-	(_bfd_mips_elf_size_dynamic_sections): Add DT_MIPS_XHASH tag to
-	dynamic section.
-	(_bfd_mips_elf_finish_synamic_sections): Add DT_MIPS_XHASH.
-	(_bfd_mips_elf_final_write_processing): Set .MIPS.xhash section
-	sh_link info.
-	(_bfd_mips_elf_get_target_dtag): Get DT_MIPS_XHASH tag.
-	(MIPS_LIBC_ABI_XHASH): New ABI version enum value.
-	(_bfd_mips_post_process_headers): Mark the ABI version as
-	MIPS_LIBC_ABI_XHASH if there exists a .MIPS.xhash section,
-	but not a .hash section.
-	(_bfd_mips_elf_record_xhash_symbol): New function. Record a
-	position in the translation table, associated with the hash
-	entry.
-	* elfxx-mips.h (literal_reloc_p): Define
-	elf_backend_record_xhash_symbol backend hook.
-	* elfxx-target.h: Initialize elf_backend_record_xhash_symbol
-	backend hook.
-
-2019-08-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
-
-	* elf64-bpf.c (bpf_elf_relocate_section): New function.
-	(bpf_elf_insn_disp_reloc): Delete function.
-	(elf_backend_relocate_section): Define.
-
-2019-08-07  Alan Modra  <amodra@gmail.com>
-
-	PR 24644
-	* archive64.c (_bfd_archive_64_bit_slurp_armap): Properly check
-	for overflow in expressions involving nsymz.
-
-2019-08-01  Ilia Diachkov  <ilia.diachkov@optimitech.com>
-
-	* elfnn-riscv.c (_bfd_riscv_relax_lui): Set lui relax safety area to
-	two pages in relro presence.
-
-2019-08-01  Max Filippov  <jcmvbkbc@gmail.com>
-
-	* elf32-xtensa.c (insn_num_slots, get_rsr_lend_opcode)
-	(get_wsr_lbeg_opcode): New functions.
-	(check_loop_aligned): Detect relaxed loops and adjust loop_len
-	and insn_len for the first actual instruction of the loop.
+	* elf64-ppc.h (struct ppc64_elf_params): Add power10_stubs.
+	* elf64-ppc.c (struct ppc_link_hash_table): Delete
+	power10_stubs.
+	(ppc64_elf_check_relocs): Adjust setting of power10_stubs.
+	(plt_stub_size, ppc_build_one_stub, ppc_size_one_stub): Adjust
+	uses of power10_stubs.
 
-2019-07-30  Alan Modra  <amodra@gmail.com>
+2020-07-09  Alan Modra  <amodra@gmail.com>
 
-	PR 24768
-	* bfd.c (struct bfd): Add lto_slim_object flag.
-	* bfd-in2.h: Regenerate.
+	* coff-ppc.c: Delete.
+	* pe-ppc.c: Delete.
+	* pei-ppc.c: Delete.
+	* Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Remove PE PPC.
+	* coffcode.h (coff_set_arch_mach_hook, coff_set_flags): Remove
+	PPCMAGIC code.
+	(coff_write_object_contents): Remove PPC_PE code.
+	* config.bfd: Move powerpcle-pe to removed targets.
+	* configure.ac: Remove powerpc PE entries.
+	* libcoff-in.h (ppc_allocate_toc_section): Delete.
+	(ppc_process_before_allocation): Delete.
+	* peXXigen.c: Remove POWERPC_LE_PE code and comments.
+	* targets.c: Remove powerpc PE vectors.
+	* po/SRC-POTFILES.in: Regenerate.
+	* libcoff.h: Regenerate.
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
 
-2019-07-29  Martin Liska  <mliska@suse.cz>
+2020-07-09  Nick Clifton  <nickc@redhat.com>
 
-	PR 24768
-	* archive.c (_bfd_compute_and_write_armap): Come up with
-	report_plugin_err variable.
-	* bfd-in2.h (struct bfd): Add lto_slim_object flag.
-	* elf.c (struct lto_section): New.
-	(_bfd_elf_make_section_from_shdr): Parse content of
-	.gnu_lto_.lto section.
-	* elflink.c: Report error for a missing LTO plugin.
-	* linker.c (_bfd_generic_link_add_one_symbol): Likewise.
-
-2019-07-28  Alan Modra  <amodra@gmail.com>
-
-	PR 24857
-	PR 24339
-	* elflink.c (elf_link_add_object_symbols): Report an informative
-	error on finding local symbols with index equal or greater than
-	symbol table sh_info.  Correct comment.  Allow such symbols in
-	dynamic objects.  Abort on NULL section for symbol.
-
-2019-07-26  Alan Modra  <amodra@gmail.com>
-
-	* elf-bfd.h (struct output_elf_obj_tdata): Delete "linker" field.
-	(elf_linker): Don't define.
-	* elflink.c (bfd_elf_final_link): Don't set elf_linker.
-
-2019-07-25  YunQiang Su  <syq@debian.org>
-
-	PR 24832
-	* elfxx-mips.c (mips_set_isa_flags): Default to MIPS 3 for 64-bit
-	mips inputs.
-
-2019-07-24  Claudiu Zissulescu  <claziss@synopsys.com>
-
-	* elf32-arc.c (bfd_get_32_me): Add a small description, fix
-	formating.
-	(reloc_type_to_name): Fix formating.
-	(arc_elf_object_p): Likewise.
-	(debug_arc_reloc): Likewise.
-	(arc_do_relocation): Likewise.
-
-2019-07-24  Claudiu Zissulescu  <claziss@synopsys.com>
-
-	* elf32-arc.c (bfd_get_32_me): New function.
-	(bfd_put_32_me): Likewise.
-	(arc_elf_relax_section): Likewise.
-	(bfd_elf32_bfd_relax_section): Define.
-
-2019-07-24  Alan Modra  <amodra@gmail.com>
-
-	* elf-bfd.h (struct elf_backend_data): Return bfd_boolean from
-	elf_backend_final_write_processing, don't pass linker arg.
-	(_bfd_elf_final_write_processing): Update prototype.
-	* elf.c (_bfd_elf_write_object_contents): Adjust call.
-	(_bfd_elf_final_write_processing): Return error on incompatible
-	OSABI and has_gnu_osabi.  Remove linker arg.
-	* elf-nacl.h (nacl_final_write_processing): Update prototype.
-	* elf-vxworks.h (elf_vxworks_final_write_processing): Likewise.
-	* elfxx-mips.h (_bfd_mips_final_write_processing): Likewise.
-	(_bfd_mips_elf_final_write_processing): Likewise.
-	* elf-hppa.h (elf_hppa_final_write_processing): Return status
-	and remove linker arg.
-	* elf-m10300.c (_bfd_mn10300_elf_final_write_processing): Likewise.
-	* elf-nacl.c (nacl_final_write_processing): Likewise.
-	* elf-vxworks.c (elf_vxworks_final_write_processing): Likewise.
-	* elf32-arc.c (arc_elf_final_write_processing): Likewise.
-	* elf32-arm.c (arm_final_write_processing): Likewise.
-	(elf32_arm_final_write_processing): Likewise.
-	(elf32_arm_nacl_final_write_processing): Likewise.
-	(elf32_arm_vxworks_final_write_processing): Likewise.
-	* elf32-avr.c (bfd_elf_avr_final_write_processing): Likewise.
-	* elf32-bfin.c (elf32_bfin_final_write_processing): Likewise.
-	* elf32-cr16.c (_bfd_cr16_elf_final_write_processing): Likewise.
-	* elf32-cris.c (cris_elf_final_write_processing): Likewise.
-	* elf32-h8300.c (elf32_h8_final_write_processing): Likewise.
-	* elf32-lm32.c (lm32_elf_final_write_processing): Likewise.
-	* elf32-m32r.c (m32r_elf_final_write_processing): Likewise.
-	* elf32-m68k.c (elf_m68k_final_write_processing): Likewise.
-	* elf32-mips.c (mips_vxworks_final_write_processing): Likewise.
-	* elf32-msp430.c (bfd_elf_msp430_final_write_processing): Likewise.
-	* elf32-nds32.c (nds32_elf_final_write_processing): Likewise.
-	* elf32-or1k.c (or1k_elf_final_write_processing): Likewise.
-	* elf32-pj.c (pj_elf_final_write_processing): Likewise.
-	* elf32-ppc.c (ppc_final_write_processing): Likewise.
-	(ppc_elf_final_write_processing): Likewise.
-	(ppc_elf_vxworks_final_write_processing): Likewise.
-	* elf32-sparc.c (sparc_final_write_processing): Likewise.
-	(elf32_sparc_final_write_processing): Likewise.
-	(elf32_sparc_vxworks_final_write_processing): Likewise.
-	* elf32-v850.c (v850_elf_final_write_processing): Likewise.
-	* elf32-xc16x.c (elf32_xc16x_final_write_processing): Likewise.
-	* elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise.
-	* elf64-ia64-vms.c (elf64_vms_final_write_processing): Likewise.
-	* elfnn-ia64.c (elfNN_ia64_final_write_processing): Likewise.
-	* elfxx-mips.c (_bfd_mips_final_write_processing): Likewise.
-	(_bfd_mips_elf_final_write_processing): Likewise.
-
-2019-07-24  Alan Modra  <amodra@gmail.com>
-
-	* elf-vxworks.c (elf_vxworks_final_write_processing): Don't return
-	early.
-	* elf32-arc.c (arc_elf_final_write_processing): Likewise.
-	* elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise.
-
-2019-07-24  Alan Modra  <amodra@gmail.com>
-
-	* elf32-visium.c (visium_elf_post_process_headers): Don't set
-	EI_OSABI header byte here.
-	(ELF_OSABI): Define.
-
-2019-07-23  Alan Modra  <amodra@gmail.com>
-
-	* elf-bfd.h (enum elf_gnu_osabi): Add elf_gnu_osabi_mbind.
-	* elf.c (_bfd_elf_make_section_from_shdr): Set elf_gnu_osabi_mbind.
-	(get_program_header_size): Formatting.  Only test SH_GNU_MBIND
-	when elf_gnu_osabi_mbind is set.
-	(_bfd_elf_map_sections_to_segments): Likewise.
-	(_bfd_elf_init_private_section_data): Likewise.
-	(_bfd_elf_final_write_processing): Update comment.
-	* elf64-hppa.c (elf64_hppa_special_sections): Move .tbss entry.
-	(elf_backend_special_sections): Define without .tbss for linux.
-
-2019-07-23  Alan Modra  <amodra@gmail.com>
-
-	* elf-bfd.h (enum elf_gnu_osabi): Rename from elf_gnu_symbols.
-	Remove none, any, all enums.
-	(struct elf_obj_tdata): Rename has_gnu_symbols field to has_gnu_osabi.
-	(_bfd_elf_final_write_processing): Declare.
-	* elf.c (_bfd_elf_write_object_contents): Unconditionally call
-	elf_backend_final_write_processing.
-	(_bfd_elf_post_process_headers): Move body of function to..
-	(_bfd_elf_final_write_processing): ..here, but set EI_OSABI byte
-	only when not already set.  Adjust for rename.
-	* elfxx-target.h (elf_backend_final_write_processing): Default to
-	_bfd_elf_final_write_processing.
-	* elf-hppa.h (elf_hppa_final_write_processing): Call
-	_bfd_elf_final_write_processing.
-	* elf-m10300.c (_bfd_mn10300_elf_final_write_processing): Likewise.
-	* elf-nacl.c (nacl_final_write_processing): Likewise.
-	* elf-vxworks.c (elf_vxworks_final_write_processing): Likewise.
-	* elf32-arc.c (arc_elf_final_write_processing): Likewise.
-	* elf32-avr.c (bfd_elf_avr_final_write_processing): Likewise.
-	* elf32-bfin.c (elf32_bfin_final_write_processing): Likewise.
-	* elf32-cr16.c (_bfd_cr16_elf_final_write_processing): Likewise.
-	* elf32-cris.c (cris_elf_final_write_processing): Likewise.
-	* elf32-h8300.c (elf32_h8_final_write_processing): Likewise.
-	* elf32-lm32.c (lm32_elf_final_write_processing): Likewise.
-	* elf32-m32r.c (m32r_elf_final_write_processing): Likewise.
-	* elf32-m68k.c (elf_m68k_final_write_processing): Likewise.
-	* elf32-msp430.c (bfd_elf_msp430_final_write_processing): Likewise.
-	* elf32-nds32.c (nds32_elf_final_write_processing): Likewise.
-	* elf32-or1k.c (or1k_elf_final_write_processing): Likewise.
-	* elf32-pj.c (pj_elf_final_write_processing): Likewise.
-	* elf32-v850.c (v850_elf_final_write_processing): Likewise.
-	* elf32-xc16x.c (elf32_xc16x_final_write_processing): Likewise.
-	* elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise.
-	* elf64-ia64-vms.c (elf64_vms_final_write_processing): Likewise.
-	* elfnn-ia64.c (elfNN_ia64_final_write_processing): Likewise.
-	* elf32-arm.c (arm_final_write_processing): Split out from..
-	(elf32_arm_final_write_processing): ..here.  Call
-	_bfd_elf_final_write_processing.
-	(elf32_arm_nacl_final_write_processing): Adjust.
-	* elfxx-mips.c (_bfd_mips_final_write_processing): Split out from..
-	(_bfd_mips_elf_final_write_processing): ..here.  Call
-	_bfd_elf_final_write_processing.
-	* elfxx-mips.h (_bfd_mips_final_write_processing): Declare.
-	* elf32-mips.c (mips_vxworks_final_write_processing): Adjust.
-	* elf32-ppc.c (ppc_final_write_processing): Split out from..
-	(ppc_elf_final_write_processing): ..here.  Call
-	_bfd_elf_final_write_processing.
-	(ppc_elf_vxworks_final_write_processing): Adjust.
-	* elf32-sparc.c (sparc_final_write_processing): Split out from..
-	(elf32_sparc_final_write_processing): ..here.  Call
-	_bfd_elf_final_write_processing.
-	(elf32_sparc_vxworks_final_write_processing): Adjust.
-	* elf32-d10v.c (elf_backend_final_write_processing): Don't define.
-	* elf32-d30v.c (elf_backend_final_write_processing): Don't define.
-	* elf32-m68hc11.c (elf_backend_final_write_processing): Don't define.
-	* elf32-m68hc12.c (elf_backend_final_write_processing): Don't define.
-	* elf32-s12z.c (elf_backend_final_write_processing): Don't define.
-	* elf32-i386.c (elf_i386_check_relocs): Don't set has_gnu_symbols.
-	* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
-	* elflink.c (elf_link_add_object_symbols): Likewise.
-	(elf_link_output_symstrtab): Set has_gnu_osabi for symbols here
-	instead.
-
-2019-07-23  Omar Majid  <omajid@redhat.com>
-
-	* coffcode.h (coff_set_arch_mach_hook): Handle I386_APPLE_MAGIC,
-	I386_FREEBSD_MAGIC, I386_LINUX_MAGIC, I386_NETBSD_MAGIC,
-	AMD64_APPLE_MAGIC, AMD64_FREEBSD_MAGIC, AMD64_LINUX_MAGIC,
-	AMD64_NETBSD_MAGIC.
-	* peXXigen.c: Add comment about source of .NET magic numbers.
-
-2019-07-19  Alan Modra  <amodra@gmail.com>
-
-	* reloc.c (BFD_RELOC_PPC64_TPREL34, BFD_RELOC_PPC64_DTPREL34),
-	(BFD_RELOC_PPC64_GOT_TLSGD34, BFD_RELOC_PPC64_GOT_TLSLD34),
-	(BFD_RELOC_PPC64_GOT_TPREL34, BFD_RELOC_PPC64_GOT_DTPREL34),
-	(BFD_RELOC_PPC64_TLS_PCREL): New pcrel tls relocs.
-	* elf64-ppc.c (ppc64_elf_howto_raw): Add howtos for pcrel tls relocs.
-	(ppc64_elf_reloc_type_lookup): Translate pcrel tls relocs.
-	(must_be_dyn_reloc, dec_dynrel_count): Add R_PPC64_TPREL64.
-	(ppc64_elf_check_relocs): Support pcrel tls relocs.
-	(ppc64_elf_tls_optimize, ppc64_elf_relocate_section): Likewise.
-	* bfd-in2.h: Regenerate.
-	* libbfd.h: Regenerate.
+	* po/fr.po: Updated French translation.
 
-2019-07-18  Alan Modra  <amodra@gmail.com>
+2020-07-07  Alan Modra  <amodra@gmail.com>
 
-	* elf64-ppc.c (ppc64_elf_relocate_section): Don't bother selecting
-	a TLS section symbol for edited relocs.  Tighten TLS symbol/reloc
-	match test.
+	* xcofflink.c (xcoff_mark): Don't mark const sections.
+	(bfd_xcoff_record_link_assignment): Add FIXME.
+	(_bfd_xcoff_bfd_final_link): Don't segfault on assorted magic
+	sections being discarded by linker script.
 
-2019-07-18  Alan Modra  <amodra@gmail.com>
+2020-07-07  Alan Modra  <amodra@gmail.com>
 
-	* elf64-ppc.c (TLS_EXPLICIT): Define as 256.
-	(ppc64_elf_check_relocs): Don't store TLS_EXPLICIT even if char
-	is more than 8 bits.
-	(ppc64_elf_tls_optimize): Likewise.  Make tls_set, tls_clear, and
-	tls_type vars unsigned int.
-	(ppc64_elf_relocate_section): Use r_type rather than TLS_EXPLICIT
-	to select r_type edit.
+	* coff-rs6000.c (xcoff_write_archive_contents_old): Set default
+	time, uid, gid and mode for deterministic archive.
+	(xcoff_write_archive_contents_big): Likewise.
 
-2019-07-18  Alan Modra  <amodra@gmail.com>
+2020-07-07  Alan Modra  <amodra@gmail.com>
 
-	* elf32-ppc.c (TLS_GDIE): Rename from TLS_TPRELGD throughout file.
-	Correct comment.
-	* elf64-ppc.c (TLS_GDIE): Likewise.
+	* coffcode.h (coff_classify_symbol): Handle C_HIDEXT and
+	C_AIX_WEAKEXT.
 
-2019-07-18  Alan Modra  <amodra@gmail.com>
+2020-07-06  Nick Clifton  <nickc@redhat.com>
 
-	* elf64-ppc.c (ppc64_elf_tls_optimize): Correct test for allowed
-	range of tp-relative offsets.
+	* po/pt.po: Updated Portuguese translation.
+	* po/uk.po: Updated Ukranian translation.
 
-2019-07-15  Alan Modra  <amodra@gmail.com>
+2020-07-04  Nick Clifton  <nickc@redhat.com>
 
-	* elflink.c (_bfd_elf_fix_symbol_flags): If the def for an
-	alias is no longer bfd_link_hash_defined, clear the alias.
+	* version.m4: Set version to 2.35.50.
+	* configure: Regenerate.
+	* po/bbfd.pot: Regenerate.
 
-2019-07-13  Alan Modra  <amodra@gmail.com>
+2020-07-04  Nick Clifton  <nickc@redhat.com>
 
-	* elflink.c (_bfd_elf_omit_section_dynsym_default): Don't keep
-	tls_sec.
-	(_bfd_elf_init_1_index_section): Prefer not using TLS sections.
-	(_bfd_elf_init_2_index_sections): Likewise.
-	* elf64-ppc.c (ppc64_elf_relocate_section): When emitting dynamic
-	relocations for local TLS symbols, use STN_UNDEF as the relocation
-	symbol.
-	* elf32-ppc.c (ppc_elf_relocate_section): Likewise, and don't
-	leave TLS symbol value in the addend.
+	Binutils 2.35 branch created.
 
-2019-07-08  Alan Modra  <amodra@gmail.com>
+2020-07-01  Alan Modra  <amodra@gmail.com>
 
-	PR 24785
-	* elf32-ppc.c (_bfd_elf_ppc_set_arch): Sanity check .PPC.EMB.apuinfo
-	size before reading first word.
+	PR 26188
+	* coffgen.c (coff_find_nearest_line_with_names): Sanity check
+	raw syment index before dereferencing.
+
+2020-07-01  Alan Modra  <amodra@gmail.com>
+
+	* elf32-i386.c (elf_backend_object_p): Undef for vxworks.
+
+2020-07-01  Alan Modra  <amodra@gmail.com>
+
+	* config.bfd: Obsolete xc16x.
+
+2020-06-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* archures.c (bfd_mach_i386_nacl): Removed.
+	(bfd_mach_i386_i386_nacl): Likewise.
+	(bfd_mach_x86_64_nacl): Likewise.
+	(bfd_mach_x64_32_nacl): Likewise.
+	* config.bfd: Remove *-*-nacl* targets.
+	* configure.ac: Remove x86 NaCl target vectors.
+	* cpu-i386.c (bfd_arch_i386_onebyte_nop_fill): Removed.
+	(bfd_x64_32_nacl_arch): Likewise.
+	(bfd_x86_64_nacl_arch): Likewise.
+	(bfd_i386_nacl_arch): Likewise.
+	(bfd_x64_32_arch_intel_syntax): Updated.
+	* elf32-i386.c: Don't include "elf-nacl.h".
+	(elf_i386_nacl_plt): Removed.
+	(elf_i386_nacl_plt0_entry): Likewise.
+	(elf_i386_nacl_plt_entry): Likewise.
+	(elf_i386_nacl_pic_plt0_entry): Likewise.
+	(elf_i386_nacl_pic_plt_entry): Likewise.
+	(elf_i386_nacl_eh_frame_plt): Likewise.
+	(elf_i386_nacl_plt): Likewise.
+	(elf32_i386_nacl_elf_object_p): Likewise.
+	(elf_i386_get_synthetic_symtab): Updated.
+	(elf_i386_link_setup_gnu_properties): Likewise.
+	* elf64-x86-64.c: Don't include "elf-nacl.h".
+	(elf_x86_64_nacl_plt): Removed.
+	(elf64_x86_64_nacl_elf_object_p): Likewise.
+	(elf_x86_64_nacl_plt0_entry): Likewise.
+	(elf_x86_64_nacl_plt_entry): Likewise.
+	(elf_x86_64_nacl_eh_frame_plt): Likewise.
+	(elf_x86_64_nacl_plt): Likewise.
+	(elf32_x86_64_nacl_elf_object_p): Likewise.
+	(elf_x86_64_get_synthetic_symtab): Updated.
+	(elf_x86_64_link_setup_gnu_properties): Likewise.
+	* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Likewise.
+	* targets.c: Remove x86 NaCl target vectors.
+	* bfd-in2.h: Regenerated.
+	* configure: Likewise.
 
-2019-07-02  Nick Clifton  <nickc@redhat.com>
+2020-06-29  H.J. Lu  <hongjiu.lu@intel.com>
 
-	PR 24717
-	* elf.c (is_debuginfo_file): New function.
-	(assign_file_positions_for_non_load_sections): Do not warn about
-	allocated sections outside of loadable segments if they are found
-	in a debuginfo file.
-	* elf-bfd.h (is_debuginfo_file): Prototype.
+	* elf32-tic6x.c (elf32_tic6x_size_dynamic_sections): Call
+	_bfd_elf_add_dynamic_tags.
 
-2019-07-02  Nick Clifton  <nickc@redhat.com>
+2020-06-29  Alan Modra  <amodra@gmail.com>
 
-	PR 24753
-	* compress.c (bfd_get_full_section_contents): Do not complain
-	about linker created sections that are larger than the file size.
+	* peXXigen.c (_bfd_XXi_slurp_codeview_record): Properly check
+	return value of bfd_bread.  Don't read more than requested length.
+	Sanity check length.  Properly terminate file name.
+
+2020-06-29  Alan Modra  <amodra@gmail.com>
+
+	* arc-got.h: Use C style comments.
+	* coff-z80.c: Likewise.
+	* elf32-csky.c: Likewise.
+	* peXXigen.c: Likewise.
+	* elf32-m32c.c (m32c_elf_relax_delete_bytes): Remove commented out
+	code.
+
+2020-06-26  Pat Bernardi  <bernardi@adacore.com>
+
+	* elf32-m68k.c (m68k_elf_merge_obj_attributes): New function.
+	(elf32_m68k_merge_private_bfd_data): Merge GNU attributes.
+
+2020-06-26  Alan Modra  <amodra@gmail.com>
+
+	* elfxx-riscv.c (struct priv_spec_t, priv_specs),
+	(riscv_get_priv_spec_class, riscv_get_priv_spec_class_from_numbers),
+	(riscv_get_priv_spec_name): Move to..
+	* cpu-riscv.c: ..here.
+	(riscv_get_priv_spec_class_from_numbers): Don't xmalloc temp buffer.
+	Use %u to print unsigned numbers.
+
+2020-06-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cpu-riscv.c (riscv_scan): Don't allow shorter matches using the
+	default architecture.
+
+2020-06-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26083
+	* elf32-csky.c (csky_elf_size_dynamic_sections): Call
+	_bfd_elf_add_dynamic_tags.
+
+2020-06-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26083
+	* elf32-cris.c (elf_cris_size_dynamic_sections): Call
+	_bfd_elf_add_dynamic_tags.
+
+2020-06-24  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (_bfd_vms_slurp_etir <ETIR__C_OPR_ASH>): Implement
+	shifts without undefined behaviour.
+
+2020-06-23  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf-bfd.h (elf_link_hash_table): Add dt_pltgot_required and
+	dt_jmprel_required.
+	(_bfd_elf_add_dynamic_tags): New.
+	* elf-m10300.c (_bfd_mn10300_elf_size_dynamic_sections): Call
+	_bfd_elf_add_dynamic_tags.
+	* elf32-arc.c (elf_arc_size_dynamic_sections): Likewise.
+	* elf32-bfin.c (elf32_bfinfdpic_size_dynamic_sections): Likewise.
+	* elf32-cr16.c (_bfd_cr16_elf_size_dynamic_sections): Likewise.
+	* elf32-frv.c (elf32_frvfdpic_size_dynamic_sections): Likewise.
+	* elf32-lm32.c (lm32_elf_size_dynamic_sections): Likewise.
+	* elf32-m32r.c (m32r_elf_size_dynamic_sections): Likewise.
+	* elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
+	* elf32-microblaze.c (microblaze_elf_size_dynamic_sections):
+	Likewise.
+	* elf32-nds32.c (nds32_elf_size_dynamic_sections): Likewise.
+	* elf32-nios2.c (nios2_elf32_size_dynamic_sections): Likewise.
+	* elf32-or1k.c (or1k_elf_size_dynamic_sections): Likewise.
+	* elf32-s390.c (elf_s390_size_dynamic_sections): Likewise.
+	* elf32-tilepro.c (tilepro_elf_size_dynamic_sections): Likewise.
+	* elf32-vax.c (elf_vax_size_dynamic_sections): Likewise.
+	* elf64-alpha.c (elf64_alpha_size_dynamic_sections): Likewise.
+	* elf64-s390.c (elf_s390_size_dynamic_sections): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_size_dynamic_sections):
+	Likewise.
+	* elfnn-riscv.c (riscv_elf_size_dynamic_sections): Likewise.
+	* elfxx-tilegx.c (tilegx_elf_size_dynamic_sections): Likewise.
+	* elf32-arm.c (elf32_arm_size_dynamic_sections): Call
+	_bfd_elf_maybe_vxworks_add_dynamic_tags.
+	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
+	* elfxx-sparc.c (_bfd_sparc_elf_size_dynamic_sections):
+	Likewise.
+	* elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Likewise.
+	(_bfd_x86_elf_size_dynamic_sections): Likewise.
+	* elfxx-x86.h (elf_x86_link_hash_table): Remove dt_reloc,
+	dt_reloc_sz and dt_reloc_ent.
+	* elf-vxworks.c (_bfd_elf_maybe_vxworks_add_dynamic_tags): New.
+	* elf-vxworks.h (_bfd_elf_maybe_vxworks_add_dynamic_tags):
+	Likewise.
+	* elf32-hppa.c (elf32_hppa_link_hash_table_create): Set
+	etab.dt_pltgot_required.
+	(elf32_hppa_size_dynamic_sections): Call
+	_bfd_elf_add_dynamic_tags.
+	* elf32-metag.c (elf_metag_link_hash_table_create): Set
+	etab.dt_pltgot_required.
+	(elf_metag_size_dynamic_sections): Call _bfd_elf_add_dynamic_tags.
+	* elf32-sh.c (sh_elf_link_hash_table_create): Set
+	root.dt_pltgot_required for FDPIC output.
+	(sh_elf_size_dynamic_sections): Call
+	_bfd_elf_maybe_vxworks_add_dynamic_tags.
+	* elf32-xtensa.c (elf_xtensa_link_hash_table_create): Set
+	elf.dt_pltgot_required.
+	(elf_xtensa_size_dynamic_sections): Call
+	_bfd_elf_add_dynamic_tags.
+	* elf64-hppa.c (elf64_hppa_hash_table_create): Set
+	root.dt_pltgot_required.
+	(elf64_hppa_size_dynamic_sections): Call
+	_bfd_elf_add_dynamic_tags.
+	* elfnn-ia64.c (elfNN_ia64_hash_table_create): Set
+	root.dt_pltgot_required.
+	(elfNN_ia64_size_dynamic_sections): Set root.dt_jmprel_required
+	for rel_pltoff_sec.  Call _bfd_elf_add_dynamic_tags.
+	* elflink.c (_bfd_elf_add_dynamic_tags): New.
+
+2020-06-22  Saagar Jha  <saagar@saagarjha.com>
+
+	* mach-o.c: Support the new load commands by reading a linkedit
+	data command for them.
+
+2020-06-22  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c (struct priv_spec_t priv_specs[]): Move them from
+	opcodes/riscv-opc.c to bfd/elfxx-riscv.c, since we need it in linker.
+	(riscv_get_priv_spec_class): Likewise.
+	(riscv_get_priv_spec_name): Likewise.
+	(riscv_get_priv_spec_class_from_numbers): New function, convert
+	the version numbers into string, then call riscv_get_priv_spec_class
+	to get the priv spec class.
+	* elfxx-riscv.h (riscv_get_priv_spec_class): Move forward declaration
+	from include/opcode/riscv.h to bfd/elfxx-riscv.h.
+	(riscv_get_priv_spec_name): Likewise.
+	(riscv_get_priv_spec_class_from_numbers): New forward declaration.
+	(opcode/riscv.h): Include it in the header rather than elfxx-riscv.c.
+	* elfnn-riscv.c (riscv_merge_attributes):  Get the priv spec classes
+	of input and output objects form their priv spec attributes by
+	riscv_get_priv_spec_class_from_numbers.  Report warning rather than
+	errors when linking objects with differnet priv spec versions.  We do
+	know v1.9.1 may have conflicts to other versions, so report the
+	warning, too.  After that, update the output priv spec version to the
+	newest one so far.
+
+2020-06-22  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_merge_attributes): Once we meet one of the
+	priv attributes, we will check the conflicts for all of them (major,
+	minor and revision), and then set the priv_attrs_merged to TRUE to
+	indicate that we have handled all of the priv attributes.  Remove
+	the unused boolean priv_may_conflict, in_priv_zero and out_priv_zero.
+
+2020-06-21  Alan Modra  <amodra@gmail.com>
+
+	PR 26132
+	* configure.ac: Disable plugins by default for some targets.
+	* plugin.c: Comment typo fix.
+	* configure: Regenerate.
 
-2019-07-02  Christophe Lyon  <christophe.lyon@linaro.org>
+2020-06-19  Nick Clifton  <nickc@redhat.com>
 
-	* bfd/elf32-arm.c (CMSE_STUB_NAME): New define.
-	(elf32_arm_get_stub_entry): Do not try to emit long-branch stubs
-	for CMSE stubs.
-	(arm_dedicated_stub_output_section_name): Use CMSE_STUB_NAME.
+	* plugin.c (try_load_plugin): Suppress the error message about
+	being unable to open a plugin if creating a list of viable
+	plugins.
+
+2020-06-16  Alan Modra  <amodra@gmail.com>
+
+	* aout-tic30.c: Delete file.
+	* Makefile.am (BFD32_BACKENDS): Remove aout-tic30.lo.
+	(BFD32_BACKENDS_CFILES): Remove aout-tic30.c.
+	* config.bfd (c30-*-*aout*, tic30-*-*aout*): Remove entry.
+	(xc16x-*-elf): Sort properly.
+	* configure.ac: Remove tic30_aout_vec.
+	* targets.c: Likewise.
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
+	* po/SRC-POTFILES.in: Regenerate.
 
-2019-07-02  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
 
-	* elf32-arm.c (elf32_arm_gc_mark_extra_sections): Mark debug
-	sections when .text section contain secure entry functions
-	is marked.
+	* elf32-xtensa.c (XSHAL_ABI, XTHAL_ABI_UNDEFINED)
+	(XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): New macros.
+	(elf32xtensa_abi): New global variable.
+	(xtensa_abi_choice): New function.
+	(elf_xtensa_create_plt_entry): Use xtensa_abi_choice instead of
+	XSHAL_ABI to select PLT code.
+
+2020-06-15  Roland McGrath  <mcgrathr@google.com>
+
+	* elflink.c (bfd_elf_define_start_stop): Use start_stop_visibility
+	field of bfd_link_info.
+
+2020-06-15  Alan Modra  <amodra@gmail.com>
+
+	* config.bfd: Obsolete powerpcle-*-pe targets.
+
+2020-06-15  Alan Modra  <amodra@gmail.com>
+
+	PR 26103
+	* elflink.c (elf_link_add_archive_symbols): Exclude undefined
+	symbols that were defined in discarded sections.
+	* cofflink.c (coff_link_check_archive_element): Likewise.
+	(coff_link_add_symbols): Set indx to -3 for symbols defined in
+	discarded sections.
+	(_bfd_coff_write_global_sym): Don't emit such symbols.
+	libcoff-in.h (struct coff_link_hash_entry): Update indx comment.
+	libcoff.h: Regenerate.
+
+2020-06-11  Alan Modra  <amodra@gmail.com>
+
+	PR 26107
+	* pdp11.c (is_stab): Replace legacy "index" function with "strchr".
+
+2020-06-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elfnn-ia64.c (elfNN_ia64_link_hash_table): Remove reltext.
+	(allocate_dynrel_entries): Set DF_TEXTREL instead of reltext.
+	(elfNN_ia64_size_dynamic_sections): Check DF_TEXTREL instead
+	of reltext.
+
+2020-06-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26094
+	* elflink.c (bfd_elf_define_start_stop): Handle common symbols.
+	Clear verinfo.verdef.
+
+2020-06-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/18801
+	* elf-bfd.h (elf_link_hash_table): Add ifunc_resolvers.
+	(_bfd_elf_allocate_ifunc_dyn_relocs): Remove the
+	bfd_boolean * argument.  Set ifunc_resolvers if there are IFUNC
+	resolvers.
+	* elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Updated.
+	Set ifunc_resolvers if there are FUNC resolvers.
+	* elf64-ppc.c (ppc_link_hash_table): Remove local_ifunc_resolver.
+	(build_global_entry_stubs_and_plt): Replace local_ifunc_resolver
+	with elf.ifunc_resolvers.
+	(write_plt_relocs_for_local_syms): Likewise.
+	(ppc64_elf_relocate_section): Likewise.
+	(ppc64_elf_finish_dynamic_sections): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_allocate_ifunc_dynrelocs):
+	Updated.
+	* elfxx-x86.c (elf_x86_allocate_dynrelocs): Likewise.
+	(_bfd_x86_elf_size_dynamic_sections): Check elf.ifunc_resolvers
+	instead of readonly_dynrelocs_against_ifunc.
+	* elfxx-x86.h (elf_x86_link_hash_table): Remove
+	readonly_dynrelocs_against_ifunc.
+
+2020-06-09  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (struct ppc_link_hash_table): Delete
+	maybe_local_ifunc_resolver field.
+	(build_global_entry_stubs_and_plt): Set local_ifunc_resolver in
+	cases where maybe_local_ifunc_resolver was set.
+	(ppc64_elf_relocate_section): Likewise.
+	(ppc64_elf_finish_dynamic_sections): Downgrade ifunc with textrel
+	error to a warning.
 
-2019-07-01  Nick Clifton  <nickc@redhat.com>
+2020-06-08  H.J. Lu  <hongjiu.lu@intel.com>
 
-	PR 23839
-	* elf32-arm.c (elf32_arm_update_relocs): Do not include the
-	section VMA in the offset used to update exidx relocs.
+	* elf-bfd.h (elf_link_hash_entry): Add tlsdesc_plt and
+	tlsdesc_got.
+	* elf32-arm.c (elf32_arm_link_hash_table): Remove tlsdesc_plt
+	and dt_tlsdesc_got.
+	(elf32_arm_size_dynamic_sections): Updated.  Clear
+	root.tlsdesc_plt for DF_BIND_NOW.
+	(elf32_arm_finish_dynamic_sections): Updated.
+	(elf32_arm_output_arch_local_syms): Likewise.
+	* elf32-nds32.c (nds32_elf_size_dynamic_sections): Updated.
+	Clear root.tlsdesc_plt for DF_BIND_NOW.
+	(nds32_elf_finish_dynamic_sections): Updated.
+	* elf32-nds32.h (elf_nds32_link_hash_table): Remove
+	dt_tlsdesc_plt and dt_tlsdesc_got.
+	* elf64-x86-64.c (elf_x86_64_finish_dynamic_sections): Updated.
+	* elfnn-aarch64.c (elf_aarch64_link_hash_table): Remove
+	tlsdesc_plt and dt_tlsdesc_got.
+	(elfNN_aarch64_allocate_dynrelocs): Updated.
+	(elfNN_aarch64_finish_dynamic_sections): Likewise.
+	(elfNN_aarch64_size_dynamic_sections): Updated.  Clear
+	root.tlsdesc_plt for DF_BIND_NOW.  Don't check DF_BIND_NOW
+	twice.
+	* elfxx-x86.c (elf_x86_allocate_dynrelocs): Updated.
+	(_bfd_x86_elf_size_dynamic_sections): Likewise.
+	(_bfd_x86_elf_finish_dynamic_sections): Likewise.
+	* elfxx-x86.h (elf_x86_link_hash_table): Remove tlsdesc_plt and
+	tlsdesc_got.
+
+2020-06-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf32-tic6x.c (elf32_bed): Defined the default to
+	elf32_tic6x_bed.
+
+2020-06-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf64-hppa.c (elf64_hppa_link_hash_table): Remove plt_sec and
+	plt_rel_sec.
+	(elf64_hppa_check_relocs): Replace plt_sec/plt_rel_sec with
+	root.splt/root.srelplt.
+	(elf64_hppa_create_dynamic_sections): Likewise.
+	(elf64_hppa_size_dynamic_sections): Likewise.
+	(elf64_hppa_finish_dynamic_symbol): Likewise.
+	(elf_hppa_final_link): Likewise.
+	(elf_hppa_final_link_relocate): Likewise.
 
-2019-06-28  Nick Clifton  <nickc@redhat.com>
+2020-06-06  H.J. Lu  <hongjiu.lu@intel.com>
 
-	PR 24708
-	* elf.c (_bfd_elf_slurp_version_tables): Check for an excessively
-	large version reference section.
-	* compress.c (bfd_get_full_section_contents): Check for an
-	uncompressed section whose size is larger than the file size.
+	* elfxx-sparc.c (_bfd_sparc_elf_size_dynamic_sections): Updated.
+	* elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Remove
+	is_vxworks.
+
+2020-06-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf-bfd.h (elf_target_os): New.
+	(elf_link_hash_table): Add target_os.
+	(elf_backend_data): Add target_os.
+	* elf32-arm.c (elf32_arm_link_hash_table): Remove vxworks_p,
+	symbian_p and nacl_p.
+	(create_got_section): Updated.
+	(elf32_arm_create_dynamic_sections): Likewise.
+	(arm_type_of_stub): Likewise.
+	(elf32_arm_create_or_find_stub_sec): Likewise.
+	(elf32_arm_allocate_plt_entry): Likewise.
+	(elf32_arm_populate_plt_entry): Likewise.
+	(elf32_arm_final_link_relocate): Likewise.
+	(elf32_arm_check_relocs): Likewise.
+	(allocate_dynrelocs_for_symbol): Likewise.
+	(elf32_arm_finish_dynamic_symbol): Likewise.
+	(elf32_arm_finish_dynamic_sections): Likewise.
+	(elf32_arm_output_plt_map_1): Likewise.
+	(elf32_arm_output_arch_local_syms): Likewise.
+	(elf32_arm_add_symbol_hook): Likewise.
+	(elf32_arm_nacl_link_hash_table_create): Likewise.
+	(elf32_arm_vxworks_link_hash_table_create): Likewise.
+	(elf32_arm_symbian_link_hash_table_create): Likewise.
+	(ELF_TARGET_OS): New.
+	* elf32-i386.c (elf_i386_arch_bed): Removed.
+	(elf_backend_arch_data): Likewise.
+	(elf_i386_solaris_arch_bed): Likewise.
+	(elf_i386_nacl_arch_bed): Likewise.
+	(elf_i386_vxworks_arch_bed): Likewise.
+	(elf_i386_relocate_section): Updated.
+	(elf_i386_finish_dynamic_sections): Likewise.
+	(elf_i386_get_synthetic_symtab): Likewise.
+	(elf_i386_link_setup_gnu_properties): Likewise.
+	(ELF_TARGET_OS): New.
+	* elf32-mips.c (ELF_TARGET_OS): New.
+	* elf32-ppc.c (ppc_elf_link_hash_table): Remove is_vxworks.
+	(ppc_elf_create_got): Updated.
+	(ppc_elf_create_dynamic_sections): Likewise.
+	(ppc_elf_check_relocs): Likewise.
+	(ppc_elf_adjust_dynamic_symbol): Likewise.
+	(ppc_elf_size_dynamic_sections): Likewise.
+	(ppc_elf_relocate_section): Likewise.
+	(ppc_elf_finish_dynamic_sections): Likewise.
+	(ppc_elf_vxworks_link_hash_table_create): Likewise.
+	(ELF_TARGET_OS): New.
+	* elf32-sh.c (elf_sh_link_hash_table): Remove vxworks_p.
+	(sh_elf_link_hash_table_create): Updated.
+	(sh_elf_create_dynamic_sections): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(sh_elf_size_dynamic_sections): Likewise.
+	(sh_elf_relocate_section): Likewise.
+	(sh_elf_finish_dynamic_symbol): Likewise.
+	(sh_elf_finish_dynamic_sections): Likewise.
+	(ELF_TARGET_OS): New.
+	* elf32-sparc.c (elf32_sparc_vxworks_link_hash_table_create):
+	Removed.
+	(bfd_elf32_bfd_link_hash_table_create): Likewise.
+	(ELF_TARGET_OS): New.
+	* elf64-x86-64.c (elf_x86_64_arch_bed): Removed.
+	(elf_x86_64_solaris_arch_bed): Likewise.
+	(elf_x86_64_nacl_arch_bed): Likewise.
+	(elf_x86_64_finish_dynamic_sections): Updated.
+	(elf_x86_64_get_synthetic_symtab): Likewise.
+	(elf_x86_64_link_setup_gnu_properties): Likewise.
+	(ELF_TARGET_OS): New.
+	* elflink.c (_bfd_elf_link_hash_table_init): Initialize
+	target_o.
+	* elfxx-mips.c (mips_elf_link_hash_table): Remove is_vxworks.
+	(MIPS_ELF_REL_DYN_NAME): Updated.
+	(ELF_MIPS_GP_OFFSET): Likewise.
+	(mips_elf_create_local_got_entry): Likewise.
+	(mips_elf_allocate_dynamic_relocations): Likewise.
+	(mips_elf_count_got_symbols): Likewise.
+	(is_gott_symbol): Likewise.
+	(mips_elf_calculate_relocation): Likewise.
+	(mips_elf_create_dynamic_relocation): Likewise.
+	(_bfd_mips_elf_check_relocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(_bfd_mips_elf_adjust_dynamic_symbol): Likewise.
+	(mips_elf_lay_out_got): Likewise.
+	(mips_elf_set_plt_sym_value): Likewise.
+	(_bfd_mips_elf_size_dynamic_sections): Likewise.
+	(_bfd_mips_elf_finish_dynamic_symbol): Likewise.
+	(_bfd_mips_elf_finish_dynamic_sections): Likewise.
+	(_bfd_mips_elf_final_link): Likewise.
+	(_bfd_mips_init_file_header): Likewise.
+	* elfxx-sparc.c (_bfd_sparc_elf_create_dynamic_sections):
+	Likewise.
+	(allocate_dynrelocs): Likewise.
+	(_bfd_sparc_elf_size_dynamic_sections): Likewise.
+	(_bfd_sparc_elf_relocate_section): Likewise.
+	(_bfd_sparc_elf_finish_dynamic_symbol): Likewise.
+	(sparc_finish_dyn): Likewise.
+	(_bfd_sparc_elf_finish_dynamic_sections): Likewise.
+	* elfxx-target.h (ELF_TARGET_OS): New.
+	(elfNN_bed): Add ELF_TARGET_OS.
+	* elfxx-x86.c (elf_x86_allocate_dynrelocs): Updated.
+	(_bfd_x86_elf_link_hash_table_create): Likewise.
+	(_bfd_x86_elf_size_dynamic_sections): Likewise.
+	(_bfd_x86_elf_finish_dynamic_sections): Likewise.
+	(_bfd_x86_elf_adjust_dynamic_symbol): Likewise.
+	(_bfd_x86_elf_link_setup_gnu_properties): Likewise.
+	* elfxx-x86.h (elf_x86_target_os): Removed.
+	(elf_x86_backend_data): Likewise.
+	(get_elf_x86_backend_data): Likewise.
+	(elf_x86_link_hash_table): Remove target_os.
+
+2020-06-06  Alan Modra  <amodra@gmail.com>
+
+	* reloc.c: Rename
+	BFD_RELOC_PPC64_GOT_TLSGD34 to BFD_RELOC_PPC64_GOT_TLSGD_PCREL34,
+	BFD_RELOC_PPC64_GOT_TLSLD34 to BFD_RELOC_PPC64_GOT_TLSLD_PCREL34,
+	BFD_RELOC_PPC64_GOT_TPREL34 to BFD_RELOC_PPC64_GOT_TPREL_PCREL34,
+	BFD_RELOC_PPC64_GOT_DTPREL34 to BFD_RELOC_PPC64_GOT_DTPREL_PCREL34.
+	* elf64-ppc.c: Update throughout for reloc renaming.
+	(ppc64_elf_reloc_name_lookup): Handle old reloc names.
+	* libbfd.h: Regenerate.
+	* bfd-in2.h: Regenerate.
 
-2019-06-28  Alan Modra  <amodra@gmail.com>
+2020-06-05  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* format.c (bfd_check_format_matches): Don't match plugin target
-	if another target matches.  Expand comment.
-	* targets.c (_bfd_target_vector): Move plugin_vec after all other
-	non-corefile targets, outside !SELECT_VECS.
-	* config.bfd: Don't handle targ=plugin here.
-	* configure.ac: Don't add plugin to enable_targets or handle in
-	target loop setting selvecs and other target vars.
-	* configure: Regenerate.
+	PR ld/26080
+	* elf32-bfin.c (bfinfdpic_relocate_section): Skip non SEC_ALLOC
+	section.
 
-2019-06-26  Nick Clifton  <nickc@redhat.com>
+2020-06-05  Nick Clifton  <nickc@redhat.com>
 
-	PR 24703
-	* mach-o-arm.c (bfd_mach_o_arm_canonicalize_one_reloc): Add error
-	messages for failures.
-	* mach-o.c (bfd_mach_o_canonicalize_relocs): Set an bfd error code
-	if returning an error value.
+	* pdp11.c (aout_link_add_symbols): Fix use before initialisation
+	bug.
 
-2019-06-25  Jan Beulich  <jbeulich@suse.com>
+2020-06-05  Nelson Chu  <nelson.chu@sifive.com>
 
-	* elf-properties.c (elf_find_and_remove_property): Rename last
-	parameter. Mention it in comment.
+	* elfnn-riscv.c (riscv_merge_attributes): Add new boolean
+	priv_may_conflict, in_priv_zero and out_priv_zero to decide
+	whether the object can be linked according to it's priv
+	attributes.  The object without any priv spec attributes can
+	be linked with others.  If the first input object doesn't contain
+	any priv attributes, then we need to copy the setting from the
+	next input one.  Also report more detailed error messages to user.
+
+2020-06-04  Stephen Casner  <casner@acm.org>
+
+	Extend pdp11-aout symbol table format to accommodate .stab
+	symbols and implement correct handling of them.
+
+	* pdp11.c (pdp11_external_nlist): Repurposed e_unused to e_desc.
+	(N_STAB, is_stab): Needed new function is_stab to disambiguate
+	normal vs. .stab symbol table type values, replacing N_STAB mask.
+	(translate_from_native_sym_flags): Determine correct section for
+	different .stab types.
+	(translate_to_native_sym_flags): Leave .stab types intact.
+	(translate_symbol_table): Error if symbol indicates overlay;
+	store desc field from .stab symbols.
+	(write_syms): Output desc field with symbol.
+	(aout_link_check_ar_symbols): Skip .stab symbols.
+	(aout_link_add_symbols): Correctly distinguish .stab symbols.
+	(aout_link_write_other_symbol): Write 0 for desk and ovly fields.
+	(aout_link_write_symbols): Write 0 for desk and ovly fields;
+	correctly distinguish .stab symbols and select calculate their
+	section and value; and copy desc and ovly fields from input symbol
+	to output symbol.
+
+2020-06-04  Stephen Casner  <casner@acm.org>
+
+	* aoutx.h (translate_symbol_table): Comment had external and
+	internal swapped.
+	* pdp11.c (translate_symbol_table): Likewise.
+
+2020-06-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elfxx-x86.h (elf_x86_link_hash_table): Remove target_id.
+	(is_x86_elf): Check elf.hash_table_id instead of target_id.
+	* elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Updated.
+
+2020-06-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26080
+	* elf-m10300.c (mn10300_elf_relocate_section): Resolve relocation
+	in debug section against symbol defined in shared library to 0.
+	* elf32-i386.c (elf_i386_check_relocs): Remove SEC_ALLOC check.
+	* elf32-lm32.c (lm32_elf_check_relocs): Likewise.
+	* elf32-m32r.c (m32r_elf_check_relocs): Likewise.
+	* elf32-nds32.c (nds32_elf_check_relocs): Likewise.
+	* elf32-nios2.c (nios2_elf32_check_relocs): Likewise.
+	* elf32-or1k.c (or1k_elf_check_relocs): Likewise.
+	* elf32-ppc.c (ppc_elf_check_relocs): Likewise.
+	* elf32-sh.c (sh_elf_check_relocs): Likewise.
+	* elf32-xtensa.c (elf_xtensa_check_relocs): Likewise.
+	* elf64-alpha.c (elf64_alpha_check_relocs): Likewise.
+	* elf64-ppc.c (ppc64_elf_check_relocs): Likewise.
+	* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
+	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Likewise.
+	* elf32-vax.c (elf_vax_check_relocs): Set non_got_ref for non-GOT
+	reference.
+	(elf_vax_adjust_dynamic_symbol): Generate a copy reloc only if
+	there is non-GOT reference.
+	* elflink.c (_bfd_elf_link_check_relocs): Skip non-loaded,
+	non-alloced sections.
+
+2020-06-03  Stephen Casner  <casner@acm.org>
+
+	Copy several years of fixes from bfd/aoutx.h to bfd/pdp11.c.
+
+	* pdp11.c (some_aout_object_p): 4c1534c7a2a - Don't set EXEC_P for
+	files with relocs.
+	(aout_get_external_symbols): 6b8f0fd579d - Return if count is zero.
+	0301ce1486b PR 22306 - Handle stringsize of zero, and error for any
+	other size that doesn't qcover the header word.
+	bf82069dce1 PR 23056 - Allocate an extra byte at the end of the
+	string table, and zero it.
+	(translate_symbol_table): 0d329c0a83a PR 22887 - Print an error
+	message and set bfd_error on finding an invalid name string offset.
+	(add_to_stringtab): INLINE -> inline
+	(pdp11_aout_swap_reloc_in): 116acb2c268 PR 22887 - Correct r_index
+	bound check.
+	(squirt_out_relocs): e2996cc315d PR 20921 - Check for and report
+	any relocs that could not be recognised.
+	92744f05809 PR 20929 - Check for relocs	without an associated symbol.
+	(find_nearest_line):  808346fcfcf PR 23055 - Check that the symbol
+	name exists and is long enough, before attempting to see if it is
+	for a .o file.
+	c3864421222 - Correct case for N_SO being the last symbol.
+	50455f1ab29 PR 20891 - Handle the case where the main file name
+	and the directory name are both empty.
+	e82ab856bb4 PR 20892 - Handle the case where function name is empty.
+	(aout_link_add_symbols): e517df3dbf7 PR 19629 - Check for out of
+	range string table offsets.
+	531336e3a0b PR 20909 - Fix off-by-one error in check for an
+	illegal string offset.
+	(aout_link_includes_newfunc): Add comment.
+	(pdp11_aout_link_input_section): ad756e3f9e6 - Return with an error
+	on unexpected relocation type rather than ASSERT.
+
+2020-06-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26066
+	* elf32-nios2.c (nios2_elf32_size_dynamic_sections): Call
+	_bfd_elf_maybe_set_textrel to set DF_TEXTREL.
+
+2020-06-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26066
+	* elf32-nios2.c (nios2_elf32_check_relocs): Skip non-loaded,
+	non-alloced sections.
+
+2020-06-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf32-frv.c (elf32_frv_relocate_section): Don't generate
+	dynamic relocations for non SEC_ALLOC sections.
+
+2020-06-03  Gunther Nikl  <gnikl@justmail.de>
+
+	* aout64.c (BMAGIC, QMAGIC): Do not define.
+	* aoutx.h (N_IS_BMAGIC, N_SET_QMAGIC): New defines.
+	(NAME (aout, some_aout_object_p)): Use N_IS_QMAGIC and N_IS_BMAGIC
+	to check the file format.
+	(adjust_z_magic): Use N_SET_QMAGIC to set file format.
+	* i386aout.c (NO_WRITE_HEADER_KLUDGE): Delete define.
+	* libaout.h (NO_WRITE_HEADER_KLUDGE): Do not define.
+
+2020-06-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf32-arc.c (elf_arc_relocate_section): Don't generate dynamic
+	relocations for non SEC_ALLOC sections.
+
+2020-06-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf-bfd.h (_bfd_elf_maybe_set_textrel): New
+	* elf32-arm.c (maybe_set_textrel): Removed.
+	(elf32_arm_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-csky.c (maybe_set_textrel): Removed.
+	(csky_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-hppa.c (maybe_set_textrel): Removed.
+	(elf32_hppa_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-lm32.c (maybe_set_textrel): Removed.
+	(lm32_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-m32r.c (maybe_set_textrel): Removed.
+	(m32r_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-metag.c (maybe_set_textrel): Removed.
+	(elf_metag_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-nds32.c (maybe_set_textrel): Removed.
+	(nds32_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-or1k.c (maybe_set_textrel): Removed.
+	(or1k_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-ppc.c (maybe_set_textrel): Removed.
+	(ppc_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-s390.c (maybe_set_textrel): Removed.
+	(elf_s390_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-sh.c (maybe_set_textrel): Removed.
+	(sh_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-tic6x.c (maybe_set_textrel): Removed.
+	(elf32_tic6x_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf32-tilepro.c (maybe_set_textrel): Removed.
+	(tilepro_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf64-ppc.c (maybe_set_textrel): Removed.
+	(ppc64_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elf64-s390.c (maybe_set_textrel): Removed.
+	(elf_s390_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elfnn-aarch64.c (maybe_set_textrel): Removed.
+	(elfNN_aarch64_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elfnn-riscv.c (maybe_set_textrel): Removed.
+	(riscv_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elfxx-sparc.c (maybe_set_textrel): Removed.
+	(_bfd_sparc_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elfxx-tilegx.c (maybe_set_textrel): Removed.
+	(tilegx_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elfxx-x86.c (maybe_set_textrel): Removed.
+	(_bfd_x86_elf_size_dynamic_sections): Replace maybe_set_textrel
+	with _bfd_elf_maybe_set_textrel.
+	* elflink.c (_bfd_elf_maybe_set_textrel): New.
+
+2020-06-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26067
+	* elf32-arm.c (elf32_arm_copy_indirect_symbol): Don't copy
+	dyn_relocs.
+	* elf32-csky.c (csky_elf_copy_indirect_symbol): Likewise.
+	* elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise.
+	* elf32-metag.c (elf_metag_copy_indirect_symbol): Likewise.
+	* elf32-microblaze.c (microblaze_elf_copy_indirect_symbol):
+	Likewise.
+	* elf32-nds32.c (nds32_elf_copy_indirect_symbol): Likewise.
+	* elf32-nios2.c (nios2_elf32_copy_indirect_symbol): Likewise.
+	* elf32-or1k.c (or1k_elf_copy_indirect_symbol): Likewise.
+	* elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise.
+	* elf32-sh.c (sh_elf_copy_indirect_symbol): Likewise.
+	* elf32-tilepro.c (tilepro_elf_copy_indirect_symbol): Likewise.
+	* elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_copy_indirect_symbol): Likewise.
+	* elfnn-riscv.c (riscv_elf_copy_indirect_symbol): Likewise.
+	* elfxx-sparc.c (_bfd_sparc_elf_copy_indirect_symbol): Likewise.
+	* elfxx-tilegx.c (tilegx_elf_copy_indirect_symbol): Likewise.
+	* elfxx-x86.c (_bfd_x86_elf_copy_indirect_symbol): Likewise.
+	* elf32-lm32.c (lm32_elf_copy_indirect_symbol): Removed.
+	(elf_backend_copy_indirect_symbol): Likewise.
+	* elf32-m32r.c (m32r_elf_copy_indirect_symbol): Removed.
+	(elf_backend_copy_indirect_symbol): Likewise.
+	* elflink.c (_bfd_elf_link_hash_copy_indirect): Copy dyn_relocs.
+
+2020-06-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26067
+	* elf-bfd.h (_bfd_elf_readonly_dynrelocs): New.
+	* elf32-arm.c (readonly_dynrelocs): Removed.
+	(maybe_set_textrel): Replace readonly_dynrelocs with
+	_bfd_elf_readonly_dynrelocs.
+	* elf32-csky.c (readonly_dynrelocs): Removed.
+	(maybe_set_textrel): Replace readonly_dynrelocs with
+	_bfd_elf_readonly_dynrelocs.
+	*  elf32-hppa.c(readonly_dynrelocs): Removed.
+	(alias_readonly_dynrelocs): Replace readonly_dynrelocs with
+	_bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elf32-lm32.c (readonly_dynrelocs): Removed.
+	(lm32_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elf32-m32r.c (readonly_dynrelocs): Removed.
+	(m32r_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elf32-metag.c (readonly_dynrelocs): Removed.
+	(elf_metag_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elf32-microblaze.c (readonly_dynrelocs): Removed.
+	(microblaze_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	* elf32-nds32.c (readonly_dynrelocs): Removed.
+	(nds32_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elf32-or1k.c (readonly_dynrelocs): Removed.
+	(or1k_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	* elf32-ppc.c (readonly_dynrelocs): Removed.
+	(alias_readonly_dynrelocs): Replace readonly_dynrelocs with
+	_bfd_elf_readonly_dynrelocs.
+	(ppc_elf_adjust_dynamic_symbol): Likewise.
+	(maybe_set_textrel): Likewise.
+	* elf32-s390.c (readonly_dynrelocs): Removed.
+	(elf_s390_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elf32-sh.c (readonly_dynrelocs): Removed.
+	(sh_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with
+	_bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elf32-tic6x.c (readonly_dynrelocs): Removed.
+	(maybe_set_textrel): Replace readonly_dynrelocs with
+	_bfd_elf_readonly_dynrelocs.
+	* elf32-tilepro.c (readonly_dynrelocs): Removed.
+	(tilepro_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elf64-ppc.c (readonly_dynrelocs): Removed.
+	(alias_readonly_dynrelocs): Replace readonly_dynrelocs with
+	_bfd_elf_readonly_dynrelocs.
+	(ppc64_elf_adjust_dynamic_symbol): Likewise.
+	(maybe_set_textrel): Likewise.
+	* elf64-s390.c (readonly_dynrelocs): Removed.
+	(elf_s390_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elflink.c (_bfd_elf_readonly_dynrelocs): New.
+	* elfnn-aarch64.c (readonly_dynrelocs): Removed.
+	(maybe_set_textrel): Replace readonly_dynrelocs with
+	_bfd_elf_readonly_dynrelocs.
+	* elfnn-riscv.c (readonly_dynrelocs): Removed.
+	(riscv_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elfxx-sparc.c (readonly_dynrelocs): Removed.
+	(_bfd_sparc_elf_adjust_dynamic_symbol): Replace
+	readonly_dynrelocs with _bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elfxx-tilegx.c (readonly_dynrelocs): Removed.
+	(tilegx_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs
+	with _bfd_elf_readonly_dynrelocs.
+	(maybe_set_textrel): Likewise.
+	* elfxx-x86.c (readonly_dynrelocs): Removed.
+	(maybe_set_textrel): Replace readonly_dynrelocs with
+	_bfd_elf_readonly_dynrelocs.
+	(_bfd_x86_elf_adjust_dynamic_symbol): Likewise.
+
+2020-06-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elfxx-x86.h (GENERATE_DYNAMIC_RELOCATION_P): Silence
+	-fsanitize=undefined.
+
+2020-06-03  Alan Modra  <amodra@gmail.com>
+
+	PR 26069
+	PR 18758
+	* peicode.h (pe_ILF_make_a_section): Align data for compilers
+	other than gcc.
+	(pe_ILF_build_a_bfd): Likewise.
+
+2020-06-03  Alan Modra  <amodra@gmail.com>
+
+	PR 26069
+	* elf.c (_bfd_elf_close_and_cleanup): Free elf_shstrtab for
+	core files as well as objects.
+
+2020-06-01  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26067
+	* elf-bfd.h (elf_link_hash_entry): Add dyn_relocs after size.
+	* elf-s390-common.c (s390_elf_allocate_ifunc_dyn_relocs):
+	Updated.
+	* elf32-arc.c (elf_arc_link_hash_entry): Remove dyn_relocs.
+	(elf_arc_link_hash_newfunc): Updated.
+	* elf32-arm.c (elf32_arm_link_hash_entry): Remove dyn_relocs.
+	(elf32_arm_link_hash_newfunc): Updated.
+	(elf32_arm_copy_indirect_symbol): Likewise.
+	(elf32_arm_check_relocs): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs_for_symbol): Likewise.
+	* elf32-csky.c (csky_elf_link_hash_entry): Remove dyn_relocs.
+	(csky_elf_link_hash_newfunc): Updated.
+	(csky_allocate_dynrelocs): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(csky_elf_copy_indirect_symbol): Likewise.
+	* elf32-hppa.c (elf32_hppa_link_hash_entry): Remove dyn_relocs.
+	(hppa_link_hash_newfunc): Updated.
+	(elf32_hppa_copy_indirect_symbol): Likewise.
+	(elf32_hppa_hide_symbol): Likewise.
+	(elf32_hppa_adjust_dynamic_symbol): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(elf32_hppa_relocate_section): Likewise.
+	* elf32-i386.c (elf_i386_check_relocs): Likewise.
+	* elf32-lm32.c (elf_lm32_link_hash_entry): Removed.
+	(lm32_elf_link_hash_newfunc): Likewise.
+	(lm32_elf_link_hash_table_create): Updated.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(lm32_elf_copy_indirect_symbol): Likewise.
+	* elf32-m32r.c (elf_m32r_link_hash_entry): Removed.
+	(m32r_elf_link_hash_newfunc): Likewise.
+	(m32r_elf_link_hash_table_create): Updated.
+	(m32r_elf_copy_indirect_symbol): Likewise.
+	(allocate_dynrelocs): Likewise.
+	* elf32-metag.c (elf_metag_link_hash_entry): Remove dyn_relocs.
+	(metag_link_hash_newfunc): Updated.
+	(elf_metag_copy_indirect_symbol): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	* elf32-microblaze.c (elf32_mb_link_hash_entry): Remove
+	dyn_relocs.
+	(link_hash_newfunc): Updated.
+	(microblaze_elf_check_relocs): Likewise.
+	(microblaze_elf_copy_indirect_symbol): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	* elf32-nds32.c (elf_nds32_link_hash_entry): Remove dyn_relocs.
+	(nds32_elf_link_hash_newfunc): Updated.
+	(nds32_elf_copy_indirect_symbol): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(nds32_elf_check_relocs): Likewise.
+	* elf32-nios2.c (elf32_nios2_link_hash_entry): Remove dyn_relocs.
+	(link_hash_newfunc): Updated.
+	(nios2_elf32_copy_indirect_symbol): Likewise.
+	(nios2_elf32_check_relocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	* elf32-or1k.c (elf_or1k_link_hash_entry): Remove dyn_relocs.
+	(or1k_elf_link_hash_newfunc): Updated.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(or1k_elf_copy_indirect_symbol): Likewise.
+	* elf32-ppc.c (ppc_elf_link_hash_entry): Remove dyn_relocs.
+	(ppc_elf_link_hash_newfunc): Updated.
+	(ppc_elf_copy_indirect_symbol): Likewise.
+	(ppc_elf_check_relocs): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(ppc_elf_adjust_dynamic_symbol): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(ppc_elf_relocate_section): Likewise.
+	* elf32-s390.c (elf_s390_link_hash_entry): Remove dyn_relocs.
+	(link_hash_newfunc): Updated.
+	(elf_s390_copy_indirect_symbol): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(elf_s390_adjust_dynamic_symbol): Likewise.
+	(allocate_dynrelocs): Likewise.
+	* elf32-sh.c (elf_sh_link_hash_entry): Remove dyn_relocs.
+	(sh_elf_link_hash_newfunc): Updated.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(sh_elf_copy_indirect_symbol): Likewise.
+	(sh_elf_check_relocs): Likewise.
+	* elf32-tic6x.c (elf32_tic6x_link_hash_entry): Removed.
+	(elf32_tic6x_link_hash_newfunc): Likewise.
+	(elf32_tic6x_link_hash_table_create): Updated.
+	(readonly_dynrelocs): Likewise.
+	(elf32_tic6x_check_relocs): Likewise.
+	(elf32_tic6x_allocate_dynrelocs): Likewise.
+	* elf32-tilepro.c (tilepro_elf_link_hash_entry): Remove
+	dyn_relocs.
+	(link_hash_newfunc): Updated.
+	(tilepro_elf_copy_indirect_symbol): Likewise.
+	(tilepro_elf_check_relocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	* elf64-ppc.c (ppc_link_hash_entry): Remove dyn_relocs.
+	(ppc64_elf_copy_indirect_symbol): Updated.
+	(ppc64_elf_check_relocs): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(ppc64_elf_adjust_dynamic_symbol): Likewise.
+	(dec_dynrel_count): Likewise.
+	(allocate_dynrelocs): Likewise.
+	(ppc64_elf_relocate_section): Likewise.
+	* elf64-s390.c (elf_s390_link_hash_entry): Remove dyn_relocs.
+	(link_hash_newfunc): Updated.
+	(elf_s390_copy_indirect_symbol): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
+	* elfnn-aarch64.c (elf_aarch64_link_hash_entry): Remove
+	dyn_relocs.
+	(elfNN_aarch64_link_hash_newfunc): Updated.
+	(elfNN_aarch64_copy_indirect_symbol): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(need_copy_relocation_p): Likewise.
+	(elfNN_aarch64_allocate_dynrelocs): Likewise.
+	(elfNN_aarch64_allocate_ifunc_dynrelocs): Likewise.
+	* elfnn-riscv.c (riscv_elf_link_hash_entry): Remove dyn_relocs.
+	(link_hash_newfunc): Updated.
+	(riscv_elf_copy_indirect_symbol): Likewise.
+	(riscv_elf_check_relocs): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	* elfxx-sparc.c (_bfd_sparc_elf_link_hash_entry): Remove
+	dyn_relocs.
+	(link_hash_newfunc): Updated.
+	(_bfd_sparc_elf_copy_indirect_symbol): Likewise.
+	(_bfd_sparc_elf_check_relocs): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	* elfxx-tilegx.c (tilegx_elf_link_hash_entry): Remove dyn_relocs.
+	(link_hash_newfunc): Updated.
+	(tilegx_elf_copy_indirect_symbol): Likewise.
+	(tilegx_elf_check_relocs): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(allocate_dynrelocs): Likewise.
+	* elfxx-x86.c (elf_x86_allocate_dynrelocs): Likewise.
+	(readonly_dynrelocs): Likewise.
+	(_bfd_x86_elf_copy_indirect_symbol): Likewise.
+	* elfxx-x86.h (elf_x86_link_hash_entry): Remove dyn_relocs.
+
+2020-06-01  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (_bfd_vms_slurp_etir): Check bound for the current
+	command against cmd_length, not the end of record.  For
+	ETIR__C_STO_IMMR check size against cmd_length, mask repeat count
+	to 32-bits and break out on zero size.  Add ETIR__C_STC_LP_PSB
+	cmd_length test.
+
+2020-05-28  David Faust  <david.faust@oracle.com>
+
+	* elf64-bpf.c (bpf_elf_relocate_section): Fix handling of
+	R_BPF_INSN_{32,64} relocations.
+
+2020-05-28  Stephen Casner  <casner@acm.org>
+
+	* pdp11.c: Implement BRD_RELOC_32 to relocate the low 16 bits of
+	addreses in .long (used in testsuites) and .stab values.
+
+2020-05-27  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/22909
+	* elflink.c (bfd_elf_final_link): Use bfd_link_textrel_check.
+	Check bfd_link_dll when issue a DT_TEXTREL warning.
+	* elfxx-x86.c (maybe_set_textrel): Likewise.
+	(_bfd_x86_elf_size_dynamic_sections): Likewise.
+
+2020-05-26  Nick Clifton  <nickc@redhat.com>
+
+	* plugin.c (try_load_plugin): Extend error message when a plugin
+	fails to open.
+
+2020-05-23  Alan Modra  <amodra@gmail.com>
+
+	* bfdio.c (bfd_get_file_size): Don't segfault on NULL arch_header.
+
+2020-05-22  Alan Modra  <amodra@gmail.com>
+
+	PR 25882
+	* elf32-ppc.c (_bfd_elf_ppc_merge_fp_attributes): Don't init FP
+	attributes from shared libraries, and do not return an error if
+	they don't match.
+
+2020-05-21  Alan Modra  <amodra@gmail.com>
+
+	PR 25993
+	* opncls.c (_bfd_free_cached_info): Keep a copy of the bfd
+	filename.
+	(_bfd_delete_bfd): Free the copy.
+	(_bfd_new_bfd): Free nbfd->memory on error.
+
+2020-05-21  Alan Modra  <amodra@gmail.com>
+
+	* aoutx.h: Replace "if (x) free (x)" with "free (x)" throughout.
+	* archive.c, * bfd.c, * bfdio.c, * coff-alpha.c, * coff-ppc.c,
+	* coff-sh.c, * coff-stgo32.c, * coffcode.h, * coffgen.c,
+	* cofflink.c, * cpu-arm.c, * doc/chew.c, * dwarf2.c, * ecoff.c,
+	* ecofflink.c, * elf-eh-frame.c, * elf-m10200.c, * elf-m10300.c,
+	* elf-strtab.c, * elf.c, * elf32-arc.c, * elf32-arm.c,
+	* elf32-avr.c, * elf32-bfin.c, * elf32-cr16.c, * elf32-crx.c,
+	* elf32-epiphany.c, * elf32-ft32.c, * elf32-h8300.c,
+	* elf32-ip2k.c, * elf32-m32c.c, * elf32-m68hc11.c,
+	* elf32-m68k.c, * elf32-microblaze.c, * elf32-msp430.c,
+	* elf32-nds32.c, * elf32-nios2.c, * elf32-ppc.c, * elf32-pru.c,
+	* elf32-rl78.c, * elf32-rx.c, * elf32-sh.c, * elf32-spu.c,
+	* elf32-v850.c, * elf32-xtensa.c, * elf64-alpha.c,
+	* elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mips.c
+	* elf64-mmix.c, * elf64-ppc.c, * elf64-sparc.c, * elfcode.h,
+	* elflink.c, * elfnn-ia64.c, * elfnn-riscv.c, * elfxx-mips.c,
+	* elfxx-x86.c, * format.c, * ihex.c, * libbfd.c, * linker.c,
+	* mmo.c, * opncls.c, * pdp11.c, * peXXigen.c, * pef.c,
+	* peicode.h, * simple.c, * som.c, * srec.c, * stabs.c, * syms.c,
+	* targets.c, * vms-lib.c, * xcofflink.c, * xtensa-isa.c: Likewise.
+
+2020-05-20  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.h (riscv_parse_subset_t): Add new callback function
+	get_default_version.  It is used to find the default version for
+	the specific extension.
+	* elfxx-riscv.c (riscv_parsing_subset_version): Remove the parameters
+	default_major_version and default_minor_version.  Add new bfd_boolean
+	parameter *use_default_version.  Set it to TRUE if we need to call
+	the callback rps->get_default_version to find the default version.
+	(riscv_parse_std_ext): Call rps->get_default_version if we fail to find
+	the default version in riscv_parsing_subset_version, and then call
+	riscv_add_subset to add the subset into subset list.
+	(riscv_parse_prefixed_ext): Likewise.
+	(riscv_std_z_ext_strtab): Support Zicsr extensions.
+	* elfnn-riscv.c (riscv_merge_std_ext): Use strcasecmp to compare the
+	strings rather than characters.
+	riscv_merge_arch_attr_info): The callback function get_default_version
+	is only needed for assembler, so set it to NULL int the linker.
+	* elfxx-riscv.c (riscv_estimate_digit): Remove the static.
+	* elfxx-riscv.h: Updated.
+
+2020-05-20  Alan Modra  <amodra@gmail.com>
+
+	PR 25993
+	* archive.c (_bfd_get_elt_at_filepos): Don't strdup filename,
+	use bfd_set_filename.
+	* elfcode.h (_bfd_elf_bfd_from_remote_memory): Likewise.
+	* mach-o.c (bfd_mach_o_fat_member_init): Likewise.
+	* opncls.c (bfd_fopen, bfd_openstreamr, bfd_openr_iovec, bfd_openw),
+	(bfd_create): Likewise.
+	(_bfd_delete_bfd): Don't free filename.
+	(bfd_set_filename): Copy filename param to bfd_alloc'd memory,
+	return pointer to the copy or NULL on alloc fail.
+	* vms-lib.c (_bfd_vms_lib_get_module): Free newname and test
+	result of bfd_set_filename.
+	* bfd-in2.h: Regenerate.
+
+2020-05-20  Alan Modra  <amodra@gmail.com>
+
+	PR 26011
+	* elf.c (_bfd_elf_get_reloc_upper_bound): Sanity check reloc
+	section size against file size.
+	(_bfd_elf_get_dynamic_reloc_upper_bound): Likewise.
+
+2020-05-19  Gunther Nikl  <gnikl@justmail.de>
+
+	PR 26005
+	* elf.c (bfd_section_from_shdr): Replace bfd_zmalloc with bfd_malloc
+	and memset when allocating memory for the sections_being_created
+	array.
+
+2020-05-19  Stafford Horne  <shorne@gmail.com>
+
+	* elf32-or1k.c (or1k_elf_finish_dynamic_symbol): Rename srela
+	to relgot.
+	(or1k_elf_relocate_section): Access srelgot via
+	htab->root.srelgot.  Add assertions for srelgot->contents.
+	Introduce local variable for srelgot to not reuse global
+	sreloc.
+	(or1k_elf_relocate_section): Fixup dynamic symbol detection.
+	(or1k_set_got_and_rela_sizes): New function.
+	(or1k_initial_exec_offset): New function.
+	(TLS_GD, TLS_IE, TLS_LD, TLS_LE): Redefine macros as masks.
+	(or1k_elf_relocate_section): Allow for TLS to handle multiple
+	model access.
+	(or1k_elf_check_relocs): Use OR to set TLS access.
+	(allocate_dynrelocs): Use or1k_set_got_and_rela_sizes to set
+	sizes.
+	(or1k_elf_size_dynamic_sections): Use
+	or1k_set_got_and_rela_sizes to set sizes.
+	(or1k_elf_relocate_section): Fixup PCREL relocation calculation.
+	(TCB_SIZE): New macro.
+	(tpoff): Use TCB_SIZE and alignment to calculate offset.
+	(allocate_dynrelocs, readonly_dynrelocs, or1k_elf_check_relocs)
+	(or1k_elf_size_dynamic_sections): Rename p to sec_relocs.
+	(allocate_dynrelocs): Rename s to splt or sgot based on usage.
+	(tpoff): Add dynamic boolean argument.
+	(or1k_elf_relocate_section): Pass dynamic flag to tpoff.
+
+2020-05-19  Siddhesh Poyarekar  <siddesh.poyarekar@arm.com>
+
+	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Club
+	BFD_RELOC_AARCH64_BRANCH19 and BFD_RELOC_AARCH64_TSTBR14
+	cases with BFD_RELOC_AARCH64_JUMP26.
+	(elfNN_aarch64_check_relocs): Likewise.
+
+2020-05-19  Alan Modra  <amodra@gmail.com>
+
+	* aix5ppc-core.c (xcoff64_core_file_matches_executable_p): Use
+	bfd_get_filename rather than accessing bfd->filename directly.
+	* aout-target.h (MY (object_p)): Likewise.
+	* aoutx.h (aout_find_nearest_line, aout_link_write_symbols): Likewise.
+	* archive.c (find_nested_archive, _bfd_generic_read_ar_hdr_mag),
+	(_bfd_construct_extended_name_table, _bfd_bsd44_write_ar_hdr),
+	(_bfd_archive_bsd44_construct_extended_name_table),
+	(_bfd_write_archive_contents, _bfd_compute_and_write_armap),
+	(_bfd_bsd_write_armap): Likewise.
+	* bfd.c (bfd_errmsg, _bfd_doprnt): Likewise.
+	* cache.c (bfd_open_file): Likewise.
+	* ecoff.c (_bfd_ecoff_write_armap): Likewise.
+	* ecofflink.c (bfd_ecoff_debug_accumulate_other): Likewise.
+	* elf32-bfin.c (bfinfdpic_relocate_section): Likewise.
+	* elf32-frv.c (elf32_frv_relocate_section): Likewise.
+	* elf32-hppa.c (elf32_hppa_final_link): Likewise.
+	* elf32-nds32.c (nds32_elf_output_symbol_hook),
+	(patch_tls_desc_to_ie): Likewise.
+	* elf32-spu.c (sort_bfds, print_one_overlay_section),
+	(spu_elf_auto_overlay): Likewise.
+	* elf64-hppa.c (elf_hppa_final_link): Likewise.
+	* elf64-ia64-vms.c (elf64_ia64_size_dynamic_sections): Likewise.
+	* elfcore.h (elf_core_file_matches_executable_p): Likewise.
+	* elflink.c (bfd_elf_size_dynamic_sections),
+	(elf_link_input_bfd): Likewise.
+	* linker.c (_bfd_generic_link_output_symbols): Likewise.
+	* mach-o.c (bfd_mach_o_follow_dsym),
+	(bfd_mach_o_close_and_cleanup): Likewise.
+	* opncls.c (_bfd_delete_bfd, _maybe_make_executable),
+	(find_separate_debug_file, get_build_id_name): Likewise.
+	* pdp11.c (aout_find_nearest_line, aout_link_write_symbols): Likewise.
+	* plugin.c (bfd_plugin_open_input): Likewise.
+	* rs6000-core.c (rs6000coff_core_file_matches_executable_p): Likewise.
+	* som.c (som_write_armap): Likewise.
+	* srec.c (srec_write_record, srec_write_symbols): Likewise.
+	* vms-lib.c (_bfd_vms_lib_get_imagelib_file),
+	(_bfd_vms_lib_write_archive_contents): Likewise.
+	* xcofflink.c (xcoff_link_add_dynamic_symbols): Likewise.
+
+2020-05-19  Alan Modra  <amodra@gmail.com>
+
+	PR 25713
+	* bfdio.c (_bfd_real_fopen): Typo fix.
+
+2020-05-18  Nick Clifton  <nickc@redhat.com>
+
+	PR 26005
+	* elf.c (bfd_section_from_shdr): Use bfd_malloc to allocate memory
+	for the sections_being_created array.
+
+2020-05-18  Alan Modra  <amodra@gmail.com>
+
+	* ecoff.c (ecoff_slurp_reloc_table): Malloc external_relocs so
+	they can be freed without also freeing internal_relocs.
+
+2020-05-18  Jaydeep Chauhan  <jaydeepchauhan1494@gmail.com>
+
+	PR 25713
+	* bfdio.c (_bfd_real_fopen): Convert UNIX style sirectory
+	separators into DOS style when creating a WIN32 fullpath.
+
+2020-05-14  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (elfNN_riscv_mkobject):  New function.  We need this
+	to initialize RISC-V tdata.
+
+2020-05-12  Gunther Nikl  <gnikl@justmail.de>
+
+	* aoutx.h (NAME (aout, swap_std_reloc_out)): Reject an unsupported
+	relocation size.
+
+2020-05-11  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (xlate_pcrel_opt): Handle lxvp and stxvp.
+
+2020-05-11  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c: Rename powerxx to power10 throughout.
+
+2020-05-11  Alan Modra  <amodra@gmail.com>
+
+	PR 25961
+	* coffgen.c (coff_get_normalized_symtab): Check that buffer
+	contains required number of auxents before processing any auxent.
+	* coffswap.h (coff_swap_aux_in <C_FILE>): Only swap in extended
+	file name from auxents for PE.
+
+2020-05-04  Gunther Nikl  <gnikl@justmail.de>
+
+	* aout-cris.c (DEFAULT_ARCH): Delete define.
+	(MY_set_arch_mach): Likewise.
+	(SET_ARCH_MACH): Use bfd_set_arch_mach with an explicit architecture
+	of bfd_arch_cris.
+	(swap_ext_reloc_in): Add casts to r_index extraction. Mask valid bits
+	of r_type before the shift.
+
+2020-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
+
+	PR ld/25665
+	* elfnn-aarch64.c (group_sections): Copy implementation from
+	elf32-arm.c.
+
+2020-05-01  Alan Modra  <amodra@gmail.com>
+
+	PR 25900
+	* elfnn-riscv.c (_bfd_riscv_relax_section): Check root.type before
+	accessing root.u.def of symbols.  Also check root.u.def.section
+	is non-NULL.  Reverse tests so as to make the logic positive.
+
+2020-05-01  Alan Modra  <amodra@gmail.com>
+
+	PR 25882
+	* elf32-tic6x.c (elf32_tic6x_merge_attributes): Don't transfer
+	Tag_ABI_PIC or Tag_ABI_PID from dynamic objects to the output.
+
+2020-05-01  Alan Modra  <amodra@gmail.com>
+
+	PR 25882
+	* elf32-bfin.c (elf32_bfin_merge_private_bfd_data): Add FIXME.
+	* elf32-frv.c (frv_elf_merge_private_bfd_data): Likewise.
+	* elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Likewise.
+	* elf32-nds32.c (nds32_elf_merge_private_bfd_data): Likewise.
+	* elf32-score.c (s3_elf32_score_merge_private_bfd_data): Likewise.
+	* elf32-score7.c (s7_elf32_score_merge_private_bfd_data): Likewise.
+	* elf32-sh.c (sh_elf_merge_private_data): Likewise.
+	* elf32-tic6x.c (elf32_tic6x_merge_attributes): Likewise.
+	* elf64-ia64-vms.c (elf64_ia64_merge_private_bfd_data): Likewise.
+	* elfnn-ia64.c (elfNN_ia64_merge_private_bfd_data): Likewise.
+
+2020-05-01  Alan Modra  <amodra@gmail.com>
+
+	PR 25882
+	* elf32-ppc.c (ppc_elf_merge_private_bfd_data): Ignore e_flags
+	from shared libraries.
+
+2020-04-29  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* elf32-xtensa.c (relax_section): Don't negate diff_value for
+	XTENSA_NDIFF relocations. Don't add sign bits whe diff_value
+	equals 0. Report overflow when the result has negative sign but
+	all significant bits are zero.
+
+2020-04-29  Gunther Nikl  <gnikl@justmail.de>
+
+	* aoutx.h (swap_std_reloc_out): Special case 64 bit relocations.
+	(aout_link_reloc_link_order): Likewise. Make r_length an unsigned.
+
+2020-04-28  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (_bfd_vms_slurp_etir): Correct divide by zero check.
+	Emit warning message.
+
+2020-04-27  Tamar Christina  <tamar.christina@arm.com>
+
+	* coff-i386.c (COFF_WITH_PE_BIGOBJ): New.
+	* coff-x86_64.c (COFF_WITH_PE_BIGOBJ): New.
+	* config.bfd (targ_selvecs): Rename x86_64_pe_be_vec
+	to x86_64_pe_big_vec as it not a big-endian format.
+	(vec i386_pe_big_vec): New.
+	* configure.ac: Likewise.
+	* targets.c: Likewise.
+	* configure: Regenerate.
+	* pe-i386.c (TARGET_SYM_BIG, TARGET_NAME_BIG,
+	COFF_WITH_PE_BIGOBJ): New.
+	* pe-x86_64.c (TARGET_SYM_BIG, TARGET_NAME_BIG):
+	New.
+	(x86_64_pe_be_vec): Moved.
+
+2020-04-23  Anton Kolesov  <anton.kolesov@synopsys.com>
+
+	* elf-bfd.h (elfcore_write_arc_v2): Add prototype.
+	* elf.c (elfcore_grok_arc_v2): New function.
+	(elfcore_grok_note): Call the new function to handle the corresponding
+	note.
+	(elfcore_write_arc_v2): New function.
+	(elfcore_write_register_note): Call the new function to handle the
+	corresponding pseudo-sections.
 
-2019-06-24  Ilia Diachkov  <ilia.diachkov@optimitech.com>
+2020-04-22  Max Filippov  <jcmvbkbc@gmail.com>
 
-	* elfnn-riscv.c (_bfd_riscv_relax_lui): Delete early exit when
-	SEC_MERGE or SEC_CODE flags are set.
-	(_bfd_riscv_relax_section): New local symtype.  Set sym_sec and
-	symtype consistently.  Don't include sec_addr (sym_sec) in symval.
-	Add check for SEC_INFO_TYPE_MERGE and call _bfd_merged_section_offset.
-	Add sec_addr (sym_sec) after handling merge sections.
+	PR ld/25861
+	* bfd-in2.h: Regenerated.
+	* elf32-xtensa.c (elf_howto_table): New entries for
+	R_XTENSA_PDIFF{8,16,32} and R_XTENSA_NDIFF{8,16,32}.
+	(elf_xtensa_reloc_type_lookup, elf_xtensa_do_reloc)
+	(relax_section): Add cases for R_XTENSA_PDIFF{8,16,32} and
+	R_XTENSA_NDIFF{8,16,32}.
+	* libbfd.h (bfd_reloc_code_real_names): Add names for
+	BFD_RELOC_XTENSA_PDIFF{8,16,32} and
+	BFD_RELOC_XTENSA_NDIFF{8,16,32}.
+	* reloc.c: Add documentation for BFD_RELOC_XTENSA_PDIFF{8,16,32}
+	and BFD_RELOC_XTENSA_NDIFF{8,16,32}.
 
-2019-06-24  H.J. Lu  <hongjiu.lu@intel.com>
+2020-04-21  Tamar Christina  <tamar.christina@arm.com>
 
-	PR ld/24721
-	* elf-properties.c (elf_merge_gnu_property_list): Remove the
-	property after reporting property removal.
+	PR binutils/24753
+	* compress.c (bfd_get_full_section_contents): Exclude sections with no
+	content.
 
-2019-06-23  Alan Modra  <amodra@gmail.com>
+2020-04-21  H.J. Lu  <hongjiu.lu@intel.com>
 
-	PR 24704
-	* elf64-ppc.c (R_PPC64_GOT16_DS): Don't set has_gotrel.
-	(ppc64_elf_edit_toc): Don't remove R_PPC64_GOT16_DS got entries.
-	Reduce range of offsets allowed for other GOT relocs.
+	PR ld/25849
+	* elf-bfd.h (elf_backend_data): Add
+	elf_backend_strip_zero_sized_dynamic_sections.
+	(_bfd_elf_strip_zero_sized_dynamic_sections): New prototype.
+	* elf64-alpha.c (elf_backend_strip_zero_sized_dynamic_sections):
+	New macro.
+	* elflink.c (_bfd_elf_strip_zero_sized_dynamic_sections): New
+	function.
+	* elfxx-target.h (elf_backend_strip_zero_sized_dynamic_sections):
+	New macro.
+	(elfNN_bed): Add elf_backend_strip_zero_sized_dynamic_sections.
 
-2019-06-23  Alan Modra  <amodra@gmail.com>
+2020-04-21  H.J. Lu  <hongjiu.lu@intel.com>
 
-	PR 24689
-	* elfcode.h (elf_object_p): Warning fix.
+	* elf64-alpha.c (alpha_elf_reloc_entry): Replace reltext with
+	sec.
+	(elf64_alpha_check_relocs): Set sec instead of reltext.  Warn
+	DT_TEXTREL with -M.
+	(elf64_alpha_calc_dynrel_sizes): Warn DT_TEXTREL with -M.
 
-2019-06-21  Alan Modra  <amodra@gmail.com>
+2020-04-21  Nick Clifton  <nickc@redhat.com>
 
-	PR 24689
-	* elfcode.h (elf_object_p): Check type of e_shstrndx section.
+	* po/sr.po: Updated Serbian translation.
 
-2019-06-19  Alan Modra  <amodra@gmail.com>
+2020-04-21  Alan Modra  <amodra@gmail.com>
 
-	PR 24697
-	* elf32-ppc.c (ppc_elf_relocate_section): Don't read insn for
-	R_PPC_EMB_RELSDA.  Mask low bit of R_PPC_EMB_SDA21 r_offset.
+	* elf32-sh.c (sh_elf_relocate_section): Remove STO_SH5_ISA32
+	processing.
 
-2019-06-19  Alan Modra  <amodra@gmail.com>
+2020-04-20  Stephen Casner  <casner@acm.org>
 
-	* elf64-ppc.c (ppc64_elf_inline_plt): Correct st_other test for
-	functions that require r2 valid to use local entry.
-	(ppc64_elf_size_stubs, ppc64_elf_relocate_section): Likewise.
+	* pdp11.c (N_STAB): Modify value to avoid conflict with N_EXT
+	causing globals from linker script to be treated as debug symbols.
+	(translate_symbol_table): Don't sign-extend symbol values from 16
+	to 64 bits in nm output.
 
-2019-06-17  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+2020-04-20  Alan Modra  <amodra@gmail.com>
 
-	* elfnn-aarch64.c (elfNN_aarch64_allocate_local_dynrelocs): Remove.
-	(elfNN_aarch64_size_dynamic_sections): Remove loc_hash_table traversal
-	with elfNN_aarch64_allocate_local_dynrelocs.
+	* elf64-ppc.c (ppc64_elf_size_stubs): Strip relbrlt too.
 
-2019-06-14  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+2020-04-18  Alan Modra  <amodra@gmail.com>
 
-	* elfnn-aarch64.c: Enable MOVW_PREL relocs for ELF32.
+	* section.c (bfd_is_const_section): Correct test for special
+	sections.
+	* bfd-in2.h: Regenerate.
 
-2019-06-14  Alan Modra  <amodra@gmail.com>
+2020-04-17  Alan Modra  <amodra@gmail.com>
 
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
+	PR 25842
+	* elf.c (_bfd_elf_get_symbol_version_string): Don't segfault on
+	NULL nodename.
+
+2020-04-16  Nick Clifton  <nickc@redhat.com>
+
+	PR 25803
+	* elfxx-mips.c (_bfd_mips_elf_adjust_dynamic_symbol): Replace an
+	abort with a more helpful error message.
+
+2020-04-16  Alan Modra  <amodra@gmail.com>
+
+	PR 25827
+	* dwarf2.c (scan_unit_for_symbols): Wrap overlong lines.  Don't
+	strdup(0).
+
+2020-04-15  Fangrui Song <maskray@google.com>
+
+	PR binutils/24613
+	* coff-rs6000.c (xcoff_ppc_relocate_section): Change RM_GENERATE_ERROR
+	to RM_DIAGNOSE plus a check of warn_unresolved_syms.
+	* coff64-rs6000.c (xcoff_ppc_relocate_section): Likewise.
+	* elf-bfd.h (_bfd_elf_large_com_section): Likewise.
+	* elf32-m32r.c (m32r_elf_relocate_section): Likewise.
+	* elf32-score.c (s3_bfd_score_elf_relocate_section): Likewise.
+	* elf32-score7.c (s7_bfd_score_elf_relocate_section): Likewise.
+	* elf32-sh.c (sh_elf_relocate_section): Likewise.
+	* elf32-spu.c (spu_elf_relocate_section): Likewise.
+	* elf64-hppa.c (elf64_hppa_relocate_section): Likewise.
+	* elflink.c (elf_link_output_extsym): Likewise.
+	* elfxx-mips.c (mips_elf_calculate_relocation): Likewise.
+
+2020-04-15  Alan Modra  <amodra@gmail.com>
+
+	PR 25823
+	* peXXigen.c (_bfd_XXi_swap_sym_in <C_SECTION>): Don't use a
+	pointer into strings that may be freed for section name, always
+	allocate a new string.
+
+2020-04-14  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+            Jan W. Jagersma  <jwjagersma@gmail.com>
+
+	* coff-go32.c (COFF_GO32, IMAGE_SCN_LNK_NRELOC_OVFL)
+	(coff_SWAP_scnhdr_in, coff_SWAP_scnhdr_out): Define.
+	(_bfd_go32_swap_scnhdr_in, _bfd_go32_swap_scnhdr_out)
+	(_bfd_go32_mkobject): New functions.
+	* coff-stgo32.c (IMAGE_SCN_LNK_NRELOC_OVFL)
+	(coff_SWAP_scnhdr_in, coff_SWAP_scnhdr_out): Define.
+	(go32exe_mkobject): Call _bfd_go32_mkobject.
+	* coffcode.h (COFF_WITH_EXTENDED_RELOC_COUNTER): Define.
+	(coff_set_alignment_hook): Define function for COFF_GO32_EXE
+	and COFF_GO32.
+	(coff_write_relocs): Enable extended reloc counter code if
+	COFF_WITH_EXTENDED_RELOC_COUNTER is defined.  Test for obj_go32.
+	(coff_write_object_contents): Likewise.  Pad section headers
+	for COFF_GO32 and COFF_GO32EXE.  Use bfd_coff_swap_scnhdr_out
+	instead of coff_swap_scnhdr_out.
+	* cofflink.c (_bfd_coff_final_link): Test also for obj_go32 to
+	enable extended reloc counter.
+	* coffswap.h: (coff_swap_scnhdr_in, coff_swap_scnhdr_out):
+	Declare with ATTRIBUTE_UNUSED.
+	* libcoff-in.h: (struct coff_tdata): New field go32.
+	(obj_go32): Define.
+	* libcoff.h: Regenerate.
 
-2019-06-14  Alan Modra  <amodra@gmail.com>
+2020-04-14  Fangrui Song  <maskray@google.com>
 
-	* elf64-ppc.c: Fix comments involving paddi.
+	PR gas/25768
+	* elf.c (assign_section_numbers): Always set .stab sh_entsize to
+	12.
+
+2020-04-14  Stephen Casner  <casner@acm.org>
+
+	PR ld/25677
+	* pdp11.c: Add implementation of --imagic option.
+	(adjust_o_magic): Fix objcopy --extract-symbol test.
+	* libaout.h (enum aout_magic): Add i_magic.
+
+2020-04-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+	    Nick Clifton  <nickc@redhat.com>
+
+	* elf32-sparc.c (sparc_final_write_processing): Fix whitespace.
+	<0>: Ignore.
+	<default>: Error rather than abort.
+
+2020-04-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/25767
+	* elf.c (_bfd_elf_fixup_group_sections): Remove zero-sized
+	relocation section from section group.
+
+2020-04-02  Jan W. Jagersma  <jwjagersma@gmail.com>
+
+	* bfdio.c (bfd_bread, bfd_tell, bfd_seek, bfd_mmap): Always add
+	bfd->origin to file offset.
+	* bfdwin.c (bfd_get_file_window): Likewise.
+	* bfd.c: Clarify the use of the bfd->origin field.
+	* bfd-in2.h: Regenerate.
+	* coff-i386.c: Don't include go32exe.h. Allow overriding
+	coff_write_object_contents via COFF_WRITE_CONTENTS.
+	* coff-stgo32.c (go32exe_cleanup, go32exe_mkobject)
+	(go32exe_write_object_contents): New functions.
+	(go32exe_temp_stub, go32exe_temp_stub_size): New static globals.
+	(COFF_WRITE_CONTENTS, GO32EXE_DEFAULT_STUB_SIZE): Define.
+	(create_go32_stub): Remove check for 2k size limit.  Read stub
+	from go32exe_temp_stub if present.
+	(go32_stubbed_coff_bfd_copy_private_bfd_data): Allocate and
+	copy variable-length stub.
+	(go32_check_format): Read stub to go32exe_temp_stub, set
+	origin, return go32exe_cleanup.
+	(adjust_filehdr_in_post, adjust_filehdr_out_pre)
+	(adjust_filehdr_out_post, adjust_scnhdr_in_post)
+	(adjust_scnhdr_out_pre, adjust_scnhdr_out_post)
+	(adjust_aux_in_post, adjust_aux_out_pre, adjust_aux_out_post):
+	Remove functions and their associated #defines.
+	* coffcode.h (coff_mkobject_hook): Remove stub copying code.
+	* libcoff-in.h: (struct coff_tdata): New field stub_size.
+	Rename field go32stub to stub.
+	* libcoff.h: Regenerate.
+	* coff-stgo32.c (go32_check_format): Rename to...
+	(go32exe_check_format): ...this.
+	(go32_stubbed_coff_bfd_copy_private_bfd_data): Rename to...
+	(go32exe_copy_private_bfd_data): ...this.
+	(stub_bytes): Rename to...
+	(go32exe_default_stub): ...this.
+	(create_go32_stub): Rename to...
+	(go32exe_create_stub): ...this.
+	* coff-stgo32.c (go32exe_copy_private_bfd_data): Avoid realloc
+	when possible.
 
-2019-06-12  Adam Lackorzymski  <adam@os.inf.tu-dresden.de>
+2020-04-01  H.J. Lu  <hongjiu.lu@intel.com>
 
-	PR 24643
-	* elf32-arm.c (arm_elf_find_function): Fail if the symol table is
-	absent, or the bfd is not in the ELF formart.
-	* elfnn-aarch64.c (aarch64_elf_find_function): Likewise.
+	PR ld/25749
+	PR ld/25754
+	* elf32-i386.c (elf_i386_convert_load_reloc): Convert load
+	relocation to R_386_32 for relocation against non-preemptible
+	absolute symbol.
+	(elf_i386_check_relocs): Call _bfd_elf_x86_valid_reloc_p.  Don't
+	allocate dynamic relocation for non-preemptible absolute symbol.
+	(elf_i386_relocate_section): Pass sec to
+	GENERATE_DYNAMIC_RELOCATION_P.
+	* elf64-x86-64.c (R_X86_64_converted_reloc_bit): Moved.
+	(elf_x86_64_convert_load_reloc): Covert load relocation to
+	R_X86_64_32S or R_X86_64_32 for relocation against non-preemptible
+	absolute symbol.  Don't convert to R_X86_64_32S nor R_X86_64_32
+	for non-preemptible absolute symbol if they overflow.
+	(elf_x86_64_check_relocs): Call _bfd_elf_x86_valid_reloc_p.  Set
+	tls_type for GOT slot to GOT_ABS for non-preemptible absolute
+	symbol.  Don't allocate dynamic relocation for non-preemptible
+	absolute symbol.
+	(elf_x86_64_relocate_section): Don't generate relative relocation
+	for GOTPCREL relocations aganst local absolute symbol.  Pass sec
+	to GENERATE_DYNAMIC_RELOCATION_P.
+	* elfxx-x86.c (elf_x86_allocate_dynrelocs): No dynamic relocation
+	against non-preemptible absolute symbol.
+	(_bfd_elf_x86_valid_reloc_p): New function.
+	(_bfd_x86_elf_size_dynamic_sections): No dynamic relocation for
+	GOT_ABS GOT slot.
+	* elfxx-x86.h (GENERATE_DYNAMIC_RELOCATION_P): Add an SEC
+	argument.  Don't generate dynamic relocation against
+	non-preemptible absolute symbol.
+	(ABS_SYMBOL_P): New.
+	(GENERATE_RELATIVE_RELOC_P): Don't generate relative relocation
+	against non-preemptible absolute symbol.
+	(GOT_ABS): New.
+	(R_X86_64_converted_reloc_bit): New.  Moved from elf64-x86-64.c.
+	(_bfd_elf_x86_valid_reloc_p): New.
+
+2020-04-01  Tamar Christina  <tamar.christina@arm.com>
+
+	PR ld/16017
+	* elf32-arm.c (elf32_arm_populate_plt_entry): Set LSB of the PLT0
+	address in the GOT if in thumb only mode.
+
+2020-04-01  Tamar Christina  <tamar.christina@arm.com>
+
+	* elf32-arm.c (elf32_thumb2_plt_entry): Fix PC-rel offset.
+
+2020-04-01  Hans-Peter Nilsson  <hp@bitrange.com>
+
+	* mmo.c (mmo_scan): Create .text section only when needed, not
+	from the start.
+
+2020-03-31  Alan Modra  <amodra@gmail.com>
 
-2019-06-10  Christos Zoulas  <christos@zoulas.com>
+	* coff-alpha.c (alpha_ecoff_get_elt_at_filepos): Correct bfd_bread
+	return value check.
 
-	PR 24650
-	* elf.c (elfcore_make_auxv_note_section): New function.
-	(elfcore_grok_note): Use it.
-	(elfcore_grok_freebsd_note): Likewise.
-	(elfcore_grok_openbsd_note): Likewise.
-	(elfcore_grok_netbsd_note): Likewise.  Plus add support for
-	NT_NETBSDCORE_AUXV notes.
+2020-03-31  Alan Modra  <amodra@gmail.com>
 
-2019-06-06  Sudakshina Das  <sudi.das@arm.com>
+	* vms-alpha.c (image_write): Check bounds for sections without
+	contents too.  Error on non-zero write to section without
+	contents.
+	(_bfd_vms_slurp_etir): Check return of image_write* functions.
 
-	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Set
-	alignment of the new gnu property section.
+2020-03-31  Alan Modra  <amodra@gmail.com>
 
-2019-06-06  Sudakshina Das  <sudi.das@arm.com>
+	* tekhex.c (pass_over): Check is_eof before reading buffer.
 
-	* bfd-in.h: Change comment.
-	* bfd-in2.h: Regenerate.
-	* elfnn-aarch64.c (elfNN_aarch64_merge_gnu_properties): Update warning.
-	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties):
-	Likwise.
+2020-03-30  Nick Clifton  <nickc@redhat.com>
 
-2019-05-28  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+	PR binutils/pr25662
+	* libcoff-in.h (struct pe_tdata): Rename the insert_timestamp
+	field to timestamp and make it an integer.
+	* libcoff.h: Regenerate.
+	* peXXigen.c (_bfd_XXi_only_swap_filehdr_out): Test the timestamp
+	field in the pe_data structure rather than the insert_timestamp
+	field.
 
-	* elfxx-mips.c (mips_elf_calculate_relocation) <R_MIPS_PCHI16>:
-	Remove overflow check.
+2020-03-30  Alan Modra  <amodra@gmail.com>
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+	PR 25745
+	* elf64-ppc.c (ppc64_elf_build_stubs): Use asprintf to form
+	statistics message.
 
-	PR 24596
-	* cofflink.c (coff_link_check_archive_element): Don't assume
-	element is a coff object file after calling add_archive_element.
+2020-03-26  Nick Clifton  <nickc@redhat.com>
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+	* cofflink.c (bfd_coff_get_internal_extra_pe_aouthdr): Delete.
+	* libbfd-in.h (bfd_coff_get_internal_extra_pe_aouthdr): Remove
+	prototype.
+	* libbfd.h: Regenerate.
 
-	PR 24596
-	* elf32-microblaze.c (microblaze_elf_finish_dynamic_sections): Don't
-	attempt to set sh_entsize for excluded PLT section.
+2020-03-26  Alan Modra  <amodra@gmail.com>
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+	* i386msdos.c (msdos_object_p): Catch -1 return from bfd_bread.
 
-	PR 24596
-	* elf64-alpha.c (elf64_alpha_relocate_section): Don't attempt
-	to emit R_ALPHA_GOTTPREL in PIEs, for which no space is
-	allocated in alpha_dynamic_entries_for_reloc.
+2020-03-26  Alan Modra  <amodra@gmail.com>
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+	* vms-alpha.c (dst_define_location): Limit size of dst_ptr_offsets
+	array.
+	(_bfd_vms_slurp_object_records): Rename "err" to "ok".
 
-	PR 24596
-	* elf32-lm32.c (lm32_elf_finish_dynamic_sections): Don't segfault
-	on NULL output_section.
-	* elflink.c (elf_final_link_free): Don't free -1 symshndxbuf.
+2020-03-25  Nick Clifton  <nickc@redhat.com>
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+	* cofflink.c (bfd_coff_get_internal_extra_pe_aouthdr): New
+	function.
+	* libbfd-in.h (bfd_coff_get_internal_extra_pe_aouthdr): Prototype.
+	* libbfd.h: Regenerate.
 
-	PR 24596
-	* elf32-m68k.c (elf_m68k_get_got_entry): Don't create a new
-	entry when MUST_FIND.  Abort when MUST_FIND not found.
-	(elf_m68k_get_bfd2got_entry): Likewise.
-	(elf_m68k_relocate_section): Remove now useless assert.
+2020-03-25  Shahab Vahedi  <shahab@synopsys.com>
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+	* elf32-arc.c (PRINT_DEBUG_RELOC_INFO_BEFORE): Use the
+	correct field name in the output string.
 
-	PR 24596
-	* elf64-hppa.c (elf64_hppa_finalize_dynreloc): Get the output bfd
-	from bfd_link_info, not an output section owner.
-	(elf64_hppa_finish_dynamic_symbol, elf64_hppa_finalize_opd): Likewise.
-	(elf_hppa_final_link_relocate): Likewise.
+2020-03-25  Alan Modra  <amodra@gmail.com>
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+	PR 25662
+	* elf.c (assign_file_positions_for_load_sections): Adjust offset
+	for SHT_NOBITS section if first in segment.
+
+2020-03-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/25708
+	* elf-bfd.h (_bfd_elf_get_symbol_version_name): Renamed to ...
+	(_bfd_elf_get_symbol_version_string): This.
+	* elf.c (_bfd_elf_get_symbol_version_name): Renamed to ...
+	(_bfd_elf_get_symbol_version_string): This.
+	(bfd_elf_print_symbol): Pass TRUE to
+	_bfd_elf_get_symbol_version_string.
+	* libbfd-in.h (_bfd_nosymbols_get_symbol_version_string): Add a
+	bfd_boolean argument.
+	* syms.c (_bfd_nosymbols_get_symbol_version_string): Likewise.
+	* targets.c  (_bfd_get_symbol_version_string): Likewise.
+	(bfd_get_symbol_version_string): Likewise.
+	* bfd-in2.h: Regenerated.
 
-	PR 24596
-	* aout-tic30.c (MY_bfd_final_link): Don't segfault on missing
-	create_object_symbols_section, obj_textsec, obj_datasec or
-	obj_bsssec.  Fix other errors in placement.
-	* config.bfd: Obsolete tic30-aout.
+2020-03-24  Nick Clifton  <nickc@redhat.com>
+	    Jaydeep Chauhan  <jaydeepchauhan1494@gmail.com>
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+	PR 25713
+	* bfdio.c (_bfd_real_fopen): Add code to handle long filenames on
+	Win32 systems.
 
-	PR 24596
-	* dwarf2.c (save_section_vma, section_vma_same): Check for NULL
-	end of section list as well as section_count.
-	* xcofflink.c (xcoff_link_add_symbols): Fix temporarily changed
-	section list before returning error.
+2020-03-24  Nick Clifton  <nickc@redhat.com>
 
-2019-05-27  Alan Modra  <amodra@gmail.com>
+	PR 25681
+	* elf.c (_bfd_elf_map_sections_to_segments): When looking for a
+	segment to use for PT_GNU_RELRO, ignore empty sections in a
+	segment's current list.
 
-	* elf.c (bfd_elf_set_group_contents): Exit on zero size section.
+2020-03-24  H.J. Lu  <hongjiu.lu@intel.com>
 
-2019-05-27  Alan Modra  <amodra@gmail.com>
+	PR binutils/25717
+	* elf-bfd.h (elf_obj_tdata): Change num_group to unsigned int.
 
-	PR 24596
-	* linker.c (_bfd_generic_link_output_symbols): Heed BSF_KEEP.
+2020-03-24  H.J. Lu  <hongjiu.lu@intel.com>
 
-2019-05-24  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+	PR binutils/25708
+	* elf-bfd.h (_bfd_elf_get_symbol_version_name): New.
+	* elf.c (_bfd_elf_get_symbol_version_name): New function.  Based
+	on the previous _bfd_elf_get_symbol_version_string.
+	(_bfd_elf_get_symbol_version_string): Use it.
 
-	* elfnn-aarch64.c (elfNN_aarch64_merge_symbol_attribute): New function.
-	(struct elf_aarch64_link_hash_table): Add variant_pcs member.
-	(elfNN_aarch64_allocate_dynrelocs): Update variant_pcs.
-	(elfNN_aarch64_size_dynamic_sections): Add DT_AARCH64_VARIANT_PCS.
-	(elf_backend_merge_symbol_attribute): Define.
+2020-03-24  Alan Modra  <amodra@gmail.com>
 
-2019-05-24  Alan Modra  <amodra@gmail.com>
+	* archive.c (_bfd_generic_read_ar_hdr_mag): Sanity check extended
+	name size.  Use bfd_malloc rather than bfd_zmalloc, clearing just
+	struct areltdata.
 
-	* po/SRC-POTFILES.in: Regenerate.
+2020-03-23  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
-2019-05-24  Alan Modra  <amodra@gmail.com>
+	* elflink.c (_bfd_elf_tls_setup): Mention .tdata in comment.
 
-	* elf64-ppc.c: Comment on powerxx _notoc stub variants.
-	(LI_R11_0, LIS_R11, ORI_R11_R11_0, SLDI_R11_R11_34): Define.
-	(PADDI_R12_PC, PLD_R12_PC, D34, HA34): Define.
-	(struct ppc_link_hash_table): Add powerxx_stubs.
-	(ppc64_elf_check_relocs): Set powerxx_stubs.
-	(build_powerxx_offset, size_powerxx_offset),
-	(num_relocs_for_powerxx_offset),
-	(emit_relocs_for_powerxx_offset): New functions.
-	(plt_stub_size): Size powerxx stubs.
-	(ppc_build_one_stub): Emit powerxx stubs.
-	(ppc_size_one_stub): Size powerxx stubs.  Omit .eh_frame for
-	powerxx stubs.
-
-2019-05-24  Alan Modra  <amodra@gmail.com>
-
-	* elf64-ppc.c (ppc64_elf_check_relocs): Set has_gotrel for
-	R_PPC64_GOT_PCREL34.
-	(xlate_pcrel_opt): New function.
-	(ppc64_elf_edit_toc): Handle R_PPC64_GOT_PCREL34.
-	(ppc64_elf_relocate_section): Edit GOT indirect to GOT relative
-	for R_PPC64_GOT_PCREL34.  Implement R_PPC64_PCREL_OPT optimisation.
-
-2019-05-24  Alan Modra  <amodra@gmail.com>
-
-	* reloc.c (BFD_RELOC_PPC64_D34, BFD_RELOC_PPC64_D34_LO),
-	(BFD_RELOC_PPC64_D34_HI30, BFD_RELOC_PPC64_D34_HA30),
-	(BFD_RELOC_PPC64_PCREL34, BFD_RELOC_PPC64_GOT_PCREL34),
-	(BFD_RELOC_PPC64_PLT_PCREL34),
-	(BFD_RELOC_PPC64_ADDR16_HIGHER34, BFD_RELOC_PPC64_ADDR16_HIGHERA34),
-	(BFD_RELOC_PPC64_ADDR16_HIGHEST34, BFD_RELOC_PPC64_ADDR16_HIGHESTA34),
-	(BFD_RELOC_PPC64_REL16_HIGHER34, BFD_RELOC_PPC64_REL16_HIGHERA34),
-	(BFD_RELOC_PPC64_REL16_HIGHEST34, BFD_RELOC_PPC64_REL16_HIGHESTA34),
-	(BFD_RELOC_PPC64_D28, BFD_RELOC_PPC64_PCREL28): New reloc enums.
-	* elf64-ppc.c (PNOP): Define.
-	(ppc64_elf_howto_raw): Add reloc howtos for new relocations.
-	(ppc64_elf_reloc_type_lookup): Translate new bfd reloc numbers.
-	(ppc64_elf_ha_reloc): Adjust addend for highera34 and highesta34
-	relocs.
-	(ppc64_elf_prefix_reloc): New function.
-	(struct ppc_link_hash_table): Add notoc_plt.
-	(is_branch_reloc): Add R_PPC64_PLTCALL_NOTOC.
-	(is_plt_seq_reloc): Add R_PPC64_PLT_PCREL34,
-	R_PPC64_PLT_PCREL34_NOTOC, and R_PPC64_PLTSEQ_NOTOC.
-	(ppc64_elf_check_relocs): Handle pcrel got and plt relocs.  Set
-	has_pltcall for section on seeing R_PPC64_PLTCALL_NOTOC.  Handle
-	possible need for dynamic relocs on non-pcrel powerxx relocs.
-	(dec_dynrel_count): Handle non-pcrel powerxx relocs.
-	(ppc64_elf_inline_plt): Handle R_PPC64_PLTCALL_NOTOC.
-	(toc_adjusting_stub_needed): Likewise.
-	(ppc64_elf_tls_optimize): Handle R_PPC64_PLTSEQ_NOTOC.
-	(ppc64_elf_relocate_section): Handle new powerxx relocs.
-	* bfd-in2.h: Regenerate.
-	* libbfd.h: Regenerate.
+2020-03-23  Alan Modra  <amodra@gmail.com>
 
-2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>
+	* ecoff.c (_bfd_ecoff_slurp_armap): Sanity check parsed_size and
+	symbol count.  Allocate an extra byte to ensure name strings
+	are terminated.  Sanity check name offsets.  Release memory on
+	error return.
 
-	* config.bfd (targ_cpu): Process bpf-*-none only if BFD64.
-	* configure.ac: Set target_size=64 for bpf_elf64_le_vec and
-	bpf_elf64_be_vec.
-	* configure: Regenerate.
+2020-03-23  Alan Modra  <amodra@gmail.com>
 
-2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>
+	* i386msdos.c (msdos_object_p): Don't access e_lfanew when that
+	field hasn't been read.  Remove unnecessary casts.
 
-	* configure: Regenerated.
-	* Makefile.am (ALL_MACHINES): Add cpu-bpf.lo.
-	(ALL_MACHINES_CFILES): Add cpu-bpf.c.
-	(BFD64_BACKENDS): Add elf64-bpf.lo.
-	(BFD64_BACKENDS_CFILES): Add elf64-bpf.c.
-	* Makefile.in (SOURCE_HFILES): Regenerate.
-	* config.bfd (targ_cpu): Handle bpf-*-* targets.
-	* cpu-bpf.c: New file.
-	* elf64-bpf.c: Likewise.
-	* targets.c (_bfd_target_vector): Add bpf_elf64_be_vec and
-	bpf_elf64_le_vec.
-	* archures.c: Define architecture bfd_arch_bpf and machine
-	bfd_arch_bpf.
-	* reloc.c: Define BFD relocations used by the BPF target.
-	* bfd-in2.h: Regenerated.
-	* libbfd.h: Likewise.
+2020-03-22  Alan Modra  <amodra@gmail.com>
 
-2019-05-22  Alan Modra  <amodra@gmail.com>
+	* coff64-rs6000.c (xcoff64_slurp_armap): Ensure size is large
+	enough to read number of symbols.
 
-	* elf32-arm.c (arm_allocate_glue_section_space): Clear section
-	contents.
+2020-03-20  H.J. Lu  <hongjiu.lu@intel.com>
 
-2019-05-22  Alan Modra  <amodra@gmail.com>
+	* configure.ac (HAVE_EXECUTABLE_SUFFIX): Removed.
+	(EXECUTABLE_SUFFIX): Likewise.
+	* config.in: Regenerated.
+	* configure: Likewise.
+	* plugin.c (bfd_plugin_close_and_cleanup): Defined as
+	_bfd_generic_close_and_cleanup.
+	(plugin_list_entry): Remove resolution_file, resolution_option,
+	real_bfd, real_nsyms, real_syms, lto_nsyms, lto_syms, gcc,
+	lto_wrapper, gcc_env and initialized,
+	(need_lto_wrapper_p): Removed.
+	(get_lto_wrapper): Likewise.
+	(setup_lto_wrapper_env): Likewise.
+	(register_all_symbols_read): Likewise.
+	(egister_cleanup): Likewise.
+	(get_symbols): Likewise.
+	(add_input_file): Likewise.
+	(bfd_plugin_set_program_name): Remove need_lto_wrapper.
+	(add_symbols): Updated.
+	(try_claim): Likewise.
+	(try_load_plugin): Likewise.
+	(bfd_plugin_canonicalize_symtab): Likewise.
+	* plugin.h (bfd_plugin_set_program_name): Remove int argument.
+	(plugin_data_struct): Remove real_bfd, real_nsyms and real_syms.
+
+2020-03-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/25640
+	* plugin.c (plugin_list_entry): Add has_symbol_type.
+	(add_symbols_v2): New function.
+	(bfd_plugin_open_input): Don't invoke LTO wrapper if LTO plugin
+	provides symbol type.
+	(try_load_plugin): Add LDPT_ADD_SYMBOLS_V2.
+	(bfd_plugin_canonicalize_symtab): Use LTO plugin symbol type if
+	available.
+
+2020-03-20  Alan Modra  <amodra@gmail.com>
+
+	* coff-rs6000.c (_bfd_xcoff_slurp_armap): Ensure size is large
+	enough to read number of symbols.
+
+2020-03-20  Alan Modra  <amodra@gmail.com>
+
+	* elf.c (_bfd_elf_setup_sections): Don't test known non-NULL
+	backend functions for NULL before calling.
+	(copy_special_section_fields, _bfd_elf_copy_private_bfd_data),
+	(bfd_section_from_shdr, assign_section_numbers): Likewise.
+	* elfcode.h (elf_write_relocs, elf_slurp_reloc_table): Likewise.
+	* elfnn-ia64.c (ignore_errors): New function.
+	(elf_backend_link_order_error_handler): Redefine as ignore_errors.
+
+2020-03-19  Nick Clifton  <nickc@redhat.com>
+
+	PR 25676
+	* dwarf2.c (struct varinfo): Add unit_offset field to record the
+	location of the varinfo in the unit's debug info data.  Change the
+	type of the stack field to a boolean.
+	(lookup_var_by_offset): New function.  Returns the varinfo
+	structure for the variable described at the given offset in the
+	unit's debug info.
+	(scan_unit_for_symbols): Add support for variables which have the
+	DW_AT_specification attribute.
+
+2020-03-19  Nick Clifton  <nickc@redhat.com>
+
+	PR 25699
+	* elf.c (bfd_elf_set_group_contents): Replace assertion with an
+	error return.
+
+2020-03-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+
+	* elfxx-riscv.c (riscv_parse_subset): Don't use C99.
+
+2020-03-18  Nick Clifton  <nickc@redhat.com>
+
+	PR 25673
+	* elf.c (_bfd_elf_write_secondary_reloc_section): Fix illegal
+	memory access when processing a corrupt secondary reloc section.
+
+2020-03-18  Christophe Lyon  <christophe.lyon@linaro.org>
+
+	* elf32-arm.c (arm_build_one_stub): Emit a fatal error message
+	instead of calling abort.
+	* elf32-csky.c (csky_build_one_stub): Likewise.
+	* elf32-hppa.c (hppa_build_one_stub): Likewise.
+	* elf32-m68hc11.c (m68hc11_elf_build_one_stub): Likewise.
+	* elf32-m68hc12.c (m68hc12_elf_build_one_stub): Likewise.
+	* elf32-metag.c (metag_build_one_stub): Likewise.
+	* elf32-nios2.c (nios2_build_one_stub): Likewise.
+	* elf64-ppc.c (ppc_build_one_stub): Likewise.
+	(ppc_size_one_stub): Likewise.
+	* elfnn-aarch64.c (aarch64_build_one_stub): Likewise.
+
+2020-03-17  Nick Clifton  <nickc@redhat.com>
+
+	PR 25688
+	* elf.c (_bfd_elf_copy_special_section_fields): Replace assertions
+	with error messages.
+
+2020-03-17  Nick Clifton  <nickc@redhat.com>
+
+	PR 25687
+	* elf.c (_bfd_elf_slurp_secondary_reloc_section): Remove redundant
+	free.  Add free on another failure path.
+
+2020-03-16  Alan Modra  <amodra@gmail.com>
+
+	PR 25675
+	* elf.c (elf_sort_segments): Don't call bfd_octets_per_byte unless
+	we have a non-zero section count.  Do lma comparison in octets.
+
+2020-03-16  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (dst_restore_location): Validate index into
+	dst_ptr_offsets array before accessing.  Return status.
+	(dst_retrieve_location): Similarly, making "loc" parameter a
+	pointer to return value.
+	(_bfd_vms_slurp_etir): Update calls to above functions.
 
-	* vms-alpha.c (_bfd_vms_write_etir): Don't attempt further
-	processing on "size error in section".
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-22  Alan Modra  <amodra@gmail.com>
+	* configure.ac: Include netbsd-core.lo for all NetBSD arm and mips
+	targets.
+	* configure: Regenerated.
 
-	* som.c (som_bfd_free_cached_info): Call
-	_bfd_generic_close_and_cleanup.
+2020-03-14  Alan Modra  <amodra@gmail.com>
 
-2019-05-21  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+	* section.c (BFD_FAKE_SECTIONS): Formatting.
+	* bfd-in2.h: Regenerate.
 
-	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Generate error
-	for TLS_TPREL_HI16(/LO16) relocations in shared library.
+2020-03-13  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-21  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+	* elf.c (elfcore_grok_netbsd_note): Add support for
+	NT_NETBSDCORE_LWPSTATUS notes.
 
-	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Add NULL pointer
-	checks.  Search the RELA table for n64 relocations.
-
-2019-05-21  Matthew Fortune  <matthew.fortune@mips.com>
-	    Faraz Shahbazker  <fshahbazker@wavecomp.com>
-
-	* elfxx-mips.c (LA25_BC): New macro.
-	(mips_elf_link_hash_table)<compact_branches>: New field.
-	(STUB_JALRC): New macro.
-	(mipsr6_o32_exec_plt0_entry_compact): New array.
-	(mipsr6_n32_exec_plt0_entry_compact): Likewise.
-	(mipsr6_n64_exec_plt0_entry_compact): Likewise.
-	(mipsr6_exec_plt_entry_compact): Likewise.
-	(mips_elf_create_la25_stub): Use BC instead of J for stubs
-	when compact_branches is true.
-	(_bfd_mips_elf_finish_dynamic_symbol): Choose the compact
-	PLT for MIPSR6 with compact_branches.  Do not reorder the
-	compact branches PLT.  Switch the lazy stub for MIPSR6
-	with compact_branches to use JALRC.
-	(mips_finish_exec_plt): Choose the compact PLT0 for MIPSR6
-	when compact_branches is true.
-	(_bfd_mips_elf_compact_branches): New function.
-	* elfxx-mips.h (_bfd_mips_elf_compact_branches): New prototype.
-
-2019-05-21  Tamar Christina  <tamar.christina@arm.com>
-
-	PR ld/24373
-	* elfnn-aarch64.c (_bfd_aarch64_erratum_843419_branch_to_stub):
-	Fix print formatter.
-
-2019-05-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
-
-	PR 24460
-	* elf32-arm.c (get_value_helper): Remove.
-	(elf32_arm_final_link_relocate): Fix branch future relocations.
-
-2019-05-21  Tamar Christina  <tamar.christina@arm.com>
-
-	PR ld/24373
-	* bfd-in.h (enum erratum_84319_opts): New
-	(bfd_elf64_aarch64_set_options, bfd_elf32_aarch64_set_options): Change
-	int to enum erratum_84319_opts.
-	* bfd-in2.h: Regenerate.
-	* elfnn-aarch64.c (struct elf_aarch64_link_hash_table): Change
-	fix_erratum_843419 to use new enum, remove fix_erratum_843419_adr.
-	(_bfd_aarch64_add_stub_entry_after): Conditionally create erratum stub.
-	(aarch64_size_one_stub): Conditionally size erratum 843419 stubs.
-	(_bfd_aarch64_resize_stubs): Amend comment.
-	(elfNN_aarch64_size_stubs): Don't generate stubs when no workaround
-	requested.
-	(bfd_elfNN_aarch64_set_options): Use new fix_erratum_843419 enum.
-	(_bfd_aarch64_erratum_843419_branch_to_stub): Implement selection of
-	erratum workaround.
-	(clear_erratum_843419_entry): Update erratum conditional.
-
-2019-05-21  Senthil Kumar Selvaraj  <senthilkumar.selvaraj@microchip.com>
-
-	PR ld/24571
-	* bfd/elf32-avr.c (elf32_avr_relax_section): Adjust range check
-	when computing distance_short_enough.
-
-2019-05-21  Senthil Kumar Selvaraj  <senthilkumar.selvaraj@microchip.com>
-
-	PR ld/24564
-	* bfd/elf32-avr.c (avr_relative_distance_considering_wrap_around):
-	Wrap around even if distance equals avr_pc_wrap_around.
+2020-03-13  Christophe Lyon  <christophe.lyon@linaro.org>
 
-2019-05-20  Nick Clifton  <nickc@redhat.com>
+	* bfd-in2.h: Regenerate.
+	* section.c (asection): Add already_assigned field.
+	(BFD_FAKE_SECTION): Add default initializer for it.
+	* ecoff.c (bfd_debug_section): Initialize already_assigned field.
+	* elf32-arm.c (arm_build_one_stub): Add support for
+	non_contiguous_regions.
+	* elf32-csky.c (csky_build_one_stub): Likewise.
+	* elf32-hppa.c (hppa_build_one_stub): Likewise.
+	* elf32-m68hc11.c (m68hc11_elf_build_one_stub): Likewise.
+	* elf32-m68hc12.c (m68hc12_elf_build_one_stub): Likewise.
+	* elf32-metag.c (metag_build_one_stub): Likewise.
+	* elf32-nios2.c (nios2_build_one_stub): Likewise.
+	* elf64-ppc.c (ppc_build_one_stub): Likewise.
+	(ppc_size_one_stub): Likewise.
+	* elfnn-aarch64.c (aarch64_build_one_stub): Likewise.
+	* elflink.c (elf_link_input_bfd): Likewise.
 
-	* po/fr.po: Updated French translation.
+2020-03-13  H.J. Lu  <hongjiu.lu@intel.com>
 
-2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+	PR ld/24920
+	* elf-linker-x86.h (elf_linker_x86_params): Add
+	static_before_all_inputs and has_dynamic_linker.
+	* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Report
+	dynamic input objects if -static is passed at command-line
+	before all input files without --dynamic-linker unless
+	--no-dynamic-linker is used.
+
+2020-03-13  Kamil Rytarowski  <n54@gmx.com>
+
+	* elf.c (elfcore_grok_netbsd_note): Add support for aarch64.
+
+2020-03-13  Christian Eggers  <ceggers@gmx.de>
+
+	* bfd.c (bfd_record_phdr): New local "opb".  Fix assignment of
+	"p_paddr" from "at".
+	* elfcode.h (bfd_from_remote_memory): Add units to several
+	parameters.  New local "opb".  Fix usage of p_align.  Fix
+	calculation of "localbase" from "ehdr_vma" and "p_vaddr".  Fix
+	call of target_read_memory.
+	* elflink.c (elf_fixup_link_order): Fix scope of "s" local.  Fix
+	calculation of "offset" and "output_offset".
+	(bfd_elf_final_link): New local "opb".  Fix calculation of "size"
+	from "offset" and fix calculation of "end" from "vma+size".  Fix
+	comparison between "sh_addr" and "vma"/"output_offset".
+	(bfd_elf_discard_info): Fix calculation of "eh_alignment".
+	* elf-bfd.h (struct elf_link_hash_table): Add unit to tls_size
+	member.
+	* elf.c (_bfd_elf_map_sections_to_segments): Add unit (bytes/
+	octets) to "wrap_to2 and "phdr_size" locals.  Fix calculation of
+	"wrap_to" value.  Add unit (bytes) to phdr_lma variable.  Fix
+	assignment of p_paddr from phdr_lma.  Fix comparison between
+	"lma+size" and "next->lma".
+	(elf_sort_segments): Fix assignment from p_paddr to lma.
+	(assign_file_positions_for_load_sections): Add unit (bytes) to
+	local "align".  Fix calculation of local "off_adjust".  Fix
+	calculation of local "filehdr_vaddr".
+	(assign_file_positions_for_non_load_sections): New local "opb".
+	Fix calculation of "end" from "p_size". Fix comparison between
+	"vma+SECTION_SIZE" and "start".  Fix calculation of "p_memsz"
+	from "end" and "p_vaddr".
+	(rewrite_elf_program_header): Fix comparison between p_vaddr and
+	vma.  Fix assignment to p_paddr from lma.  Fix comparison between
+	p_paddr and lma.  Fix assignment to p_paddr from lma.
+	* merge.c (sec_merge_emit): New local "opb". Convert
+	"alignment_power" to octets.
+	(_bfd_add_merge_section): New locals "alignment_power" and
+	"opb".  Fix comparison between "alignment_power" and
+	"sizeof(align)".
+	(_bfd_merge_sections): New local "opb".  Divide size by opb
+	before checking align mask.
+
+2020-03-13  Christian Eggers  <ceggers@gmx.de>
+
+	* elf.c (_bfd_elf_make_section_from_shdr): Introduce new temp
+	opb.  Divide Elf_Internal_Shdr::sh_addr by opb when setting
+	section LMA/VMA.
+	(_bfd_elf_make_section_from_phdr): Similarly.
+	(elf_fake_sections): Fix calculation of
+	Elf_Internal_shdr::sh_addr from section VMA.
+	(_bfd_elf_map_sections_to_segments): Fix mixup between octets
+	and bytes.
+	(assign_file_positions_for_load_sections): Fix calculations of
+	Elf_Internal_shdr::p_vaddr and p_paddr from section LMA/VMA.  Fix
+	comparison between program header address and section LMA.
+	(assign_file_positions_for_non_load_sections): Likewise.
+	(rewrite_elf_program_header): Likewise.  Introduce new temp opb.
+	(IS_CONTAINED_BY_VMA): Add parameter opb.
+	(IS_CONTAINED_BY_LMA,IS_SECTION_IN_INPUT_SEGMENT,
+	INCLUDE_SECTION_IN_SEGMENT): Likewise.
+	(copy_elf_program_header): Update call to ELF_SECTION_IN_SEGMENT.
+	Fix calculations of p_addr_valid and p_vaddr_offset.
+	* elflink.c (elf_link_add_object_symbols): Multiply section VMA
+	with octets per byte when comparing against p_vaddr.
+
+2020-03-11  Alan Modra  <amodra@gmail.com>
+
+	* som.c (setup_sections): Sanity check subspace.name.
+
+2020-03-11  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_inline_plt): Do increment rel in for loop.
+
+2020-03-10  Alan Modra  <amodra@gmail.com>
+
+	PR 25648
+	* ihex.c (ihex_write_object_contents): Don't assume ordering of
+	addresses here.
+
+2020-03-09  Alan Modra  <amodra@gmail.com>
+
+	* wasm-module.c (wasm_scan): Sanity check file name length
+	before allocating memory.  Move common section setup code.  Do
+	without bfd_tell to calculate section size.
+
+2020-03-06  Nick Clifton  <nickc@redhat.com>
+
+	* elf.c (_bfd_elf_set_section_contents): Replace call to abort
+	with error messages and failure return values.
+
+2020-03-05  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* elf32-xtensa.c (shrink_dynamic_reloc_sections): Shrink dynamic
+	relocation sections for any removed reference to a dynamic symbol.
+
+2020-03-05  Nick Clifton  <nickc@redhat.com>
+
+	* elf-bfd.h (struct elf_backend_data): Add new fields:
+	init_secondary_reloc_section, slurp_secondary_reloc_section,
+	write_secondary_reloc_section.
+	(_bfd_elf_init_secondary_reloc_section): Prototype.
+	(_bfd_elf_slurp_secondary_reloc_section): Prototype.
+	(_bfd_elf_write_secondary_reloc_section): Prototype.
+	* elf.c ( bfd_section_from_shdr): Invoke the new
+	init_secondary_reloc_section backend function, if defined, when a
+	second reloc section is encountered.
+	(swap_out_syms): Invoke the new symbol_section_index function, if
+	defined, when computing the section index of an OS/PROC specific
+	symbol.
+	(_bfd_elf_init_secondary_reloc_section): New function.
+	(_bfd_elf_slurp_secondary_reloc_section): New function.
+	(_bfd_elf_write_secondary_reloc_section): New function.
+	(_bfd_elf_copy_special_section_fields): New function.
+	* elfcode.h (elf_write_relocs): Invoke the new
+	write_secondary_relocs function, if defined, in order to emit
+	secondary relocs.
+	(elf_slurp_reloc_table): Invoke the new slurp_secondary_relocs
+	function, if defined, in order to read in secondary relocs.
+	* elfxx-target.h (elf_backend_copy_special_section_fields):
+	Provide a non-NULL default definition.
+	(elf_backend_init_secondary_reloc_section): Likewise.
+	(elf_backend_slurp_secondary_reloc_section): Likewise.
+	(elf_backend_write_secondary_reloc_section): Likewise.
+	(struct elf_backend_data elfNN_bed): Add initialisers for the new
+	fields.
+        * configure.ac (score_elf32_[bl]e_vec): Add elf64.lo
+        * configure: Regenerate.
+
+2020-03-05  Alan Modra  <amodra@gmail.com>
+
+	* archive64.c (_bfd_archive_64_bit_slurp_armap): Check parsed_size
+	against file size before allocating memory.  Use bfd_alloc rather
+	than bfd_zalloc for carsym/strings memory.
+
+2020-03-04  Alan Modra  <amodra@gmail.com>
+
+	* elf.c (elf_fake_sections): Ensure sh_addralign is such that
+	sh_addr mod sh_addalign is zero.
+
+2020-03-04  Alan Modra  <amodra@gmail.com>
+
+	* format.c (bfd_check_format_matches): Call cleanup on error exit.
+
+2020-03-03  Alan Modra  <amodra@gmail.com>
+
+	* format.c (struct bfd_preserve): Add cleanup field.
+	(bfd_preserve_save): Add cleanup param and save.
+	(bfd_preserve_restore): Return cleanup.
+	(bfd_preserve_finish): Call the cleanup for the discarded match.
+	(bfd_check_format_matches): Pass cleanup to bfd_preserve_save,
+	and clear when preserving a match.  Restore cleanup too when
+	restoring that match.
+
+2020-03-02  Alan Modra  <amodra@gmail.com>
+
+	* cisco-core.c (cisco_core_file_p): Return bfd_cleanup.
+	* hpux-core.c (hpux_core_core_file_p): Update prototype.
+	* sco5-core.c (sco5_core_file_p): Return bfd_cleanup.
+	(core_sco5_vec): Correct initialisers.
+
+2020-03-02  Alan Modra  <amodra@gmail.com>
+
+	* aix386-core.c (aix386_core_file_p): Return bfd_cleanup.
+	* aix5ppc-core.c (xcoff64_core_p): Likewise.
+	* cisco-core.c (cisco_core_file_validate): Likewise.
+	* hppabsd-core.c (hppabsd_core_core_file_p): Likewise.
+	* hpux-core.c (hpux_core_core_file_p): Likewise.
+	* irix-core.c (irix_core_core_file_p): Likewise.
+	* lynx-core.c (lynx_core_file_p): Likewise.
+	* netbsd-core.c (netbsd_core_file_p): Likewise.
+	* osf-core.c (osf_core_core_file_p): Likewise.
+	* ptrace-core.c (ptrace_unix_core_file_p): Likewise.
+	* sco5-core.c (sco5_core_file_p): Likewise.
+
+2020-03-02  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* trad-core.c (trad_unix_core_file_p): Return bfd_cleanup.
+
+2020-03-02  Alan Modra  <amodra@gmail.com>
+
+	* targets.c (bfd_cleanup): New typedef.
+	(struct bfd <_bfd_check_format>): Return a bfd_cleanup.
+	* libbfd-in.h (_bfd_no_cleanup): Define.
+	* format.c (bfd_reinit): Add cleanup parameter, call it.
+	(bfd_check_format_matches): Set cleanup from _bfd_check_format
+	call and pass to bfd_reinit.  Delete temp, use abfd->xvec instead.
+	* aout-target.h (callback, object_p): Return bfd_cleanup.
+	* aout-tic30.c (tic30_aout_callback, tic30_aout_object_p): Likewise.
+	* archive.c (bfd_generic_archive_p): Likewise.
+	* binary.c (binary_object_p): Likewise.
+	* coff-alpha.c (alpha_ecoff_object_p): Likewise.
+	* coff-ia64.c (ia64coff_object_p): Likewise.
+	* coff-rs6000.c (_bfd_xcoff_archive_p, rs6000coff_core_p): Likewise.
+	* coff-sh.c (coff_small_object_p): Likewise.
+	* coff-stgo32.c (go32_check_format): Likewise.
+	* coff64-rs6000.c (xcoff64_archive_p, rs6000coff_core_p),
+	(xcoff64_core_p): Likewise.
+	* coffgen.c (coff_real_object_p, coff_object_p): Likewise.
+	* elf-bfd.h (bfd_elf32_object_p, bfd_elf32_core_file_p),
+	(bfd_elf64_object_p, bfd_elf64_core_file_p): Likewise.
+	* elfcode.h (elf_object_p): Likewise.
+	* elfcore.h (elf_core_file_p): Likewise.
+	* i386msdos.c (msdos_object_p): Likewise.
+	* ihex.c (ihex_object_p): Likewise.
+	* libaout.h (some_aout_object_p): Likewise.
+	* libbfd-in.h (bfd_generic_archive_p, _bfd_dummy_target),
+	(_bfd_vms_lib_alpha_archive_p, _bfd_vms_lib_ia64_archive_p): Likewise.
+	* libbfd.c (_bfd_dummy_target): Likewise.
+	* libcoff-in.h (coff_object_p): Likewise.
+	* mach-o-aarch64.c (bfd_mach_o_arm64_object_p),
+	(bfd_mach_o_arm64_core_p): Likewise.
+	* mach-o-arm.c (bfd_mach_o_arm_object_p),
+	(bfd_mach_o_arm_core_p): Likewise.
+	* mach-o-i386.c (bfd_mach_o_i386_object_p),
+	(bfd_mach_o_i386_core_p): Likewise.
+	* mach-o-x86-64.c (bfd_mach_o_x86_64_object_p),
+	(bfd_mach_o_x86_64_core_p): Likewise.
+	* mach-o.c (bfd_mach_o_header_p, bfd_mach_o_gen_object_p),
+	(bfd_mach_o_gen_core_p, bfd_mach_o_fat_archive_p): Likewise.
+	* mach-o.h (bfd_mach_o_object_p, bfd_mach_o_core_p),
+	(bfd_mach_o_fat_archive_p, bfd_mach_o_header_p): Likewise.
+	* mmo.c (mmo_object_p): Likewise.
+	* pef.c (bfd_pef_object_p, bfd_pef_xlib_object_p): Likewise.
+	* peicode.h (coff_real_object_p, pe_ILF_object_p),
+	(pe_bfd_object_p): Likewise.
+	* plugin.c (ld_plugin_object_p, bfd_plugin_object_p): Likewise.
+	* ppcboot.c (ppcboot_object_p): Likewise.
+	* rs6000-core.c (rs6000coff_core_p): Likewise.
+	* som.c (som_object_setup, som_object_p): Likewise.
+	* srec.c (srec_object_p, symbolsrec_object_p): Likewise.
+	* tekhex.c (tekhex_object_p): Likewise.
+	* vms-alpha.c (alpha_vms_object_p): Likewise.
+	* vms-lib.c (_bfd_vms_lib_archive_p, _bfd_vms_lib_alpha_archive_p),
+	(_bfd_vms_lib_ia64_archive_p, _bfd_vms_lib_txt_archive_p): Likewise.
+	* wasm-module.c (wasm_object_p): Likewise.
+	* xsym.c (bfd_sym_object_p): Likewise.
+	* xsym.h (bfd_sym_object_p): Likewise.
+	* aoutx.h (some_aout_object_p): Likewise, and callback parameter
+	return type.
+	* pdp11.c (some_aout_object_p): Likewise.
+	* plugin.c (register_ld_plugin_object_p): Update object_p
+	parameter type.
+	* plugin.h (register_ld_plugin_object_p): Likewise.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Regenerate.
+	* libcoff.h: Regenerate.
 
-	* elf32-arm.c (elf32_arm_merge_eabi_attributes): Add case for Tag_MVE_arch.
+2020-03-02  Alan Modra  <amodra@gmail.com>
 
-2019-05-16  Alan Modra  <amodra@gmail.com>
+	* coff-alpha.c (alpha_ecoff_le_vec): Add SEC_SMALL_DATA to
+	applicable section flags.
+	* coff-mips.c (mips_ecoff_le_vec, mips_ecoff_be_vec): Likewise.
+	(mips_ecoff_bele_vec): Likewise.
+	* coffcode.h (sec_to_styp_flags): Set SEC_SMALL_DATA for .sdata
+	and .sbss sections.
+	* ecoff.c (_bfd_ecoff_new_section_hook): Likewise.
+	(_bfd_ecoff_styp_to_sec_flags): Likewise.
+
+2020-03-02  Alan Modra  <amodra@gmail.com>
+
+	* elf32-m32r.c (m32r_elf_section_flags): New function.
+	(elf_backend_section_flags): Define.
+	* elf32-nds32.c (nds32_elf_section_flags): New function.
+	(elf_backend_section_flags): Define.
+	* elf32-ppc.c (ppc_elf_section_from_shdr): Set SEC_SMALL_DATA for
+	.sbss and .sdata sections.
+	* elf32-v850.c (v850_elf_section_from_shdr): Set SEC_SMALL_DATA
+	for SHF_V850_GPREL sections.
+	* elf64-alpha.c (elf64_alpha_section_from_shdr): Delete outdated
+	FIXME.
+	* elf64-hppa.c (elf64_hppa_section_from_shdr): Set SEC_SMALL_DATA
+	for SHF_PARISC_SHORT sections.
+	* elf64-ppc.c (ppc64_elf_section_flags): New function.
+	(elf_backend_section_flags): Define.
+	* elfxx-mips.c (_bfd_mips_elf_section_from_shdr): Set SEC_SMALL_DATA
+	for SHF_MIPS_GPREL sections.  Delete FIXME.
+
+2020-03-02  Alan Modra  <amodra@gmail.com>
+
+	* elf-bfd.h (elf_backend_section_flags): Remove flagword* param.
+	* elf.c (_bfd_elf_make_section_from_shdr): Set section flags before
+	calling elf_backend_section_flags with adjusted params.  Use
+	newsect->flags past that point.
+	(_bfd_elf_new_section_hook): Always set sh_type and sh_flags for
+	special sections.
+	(_bfd_elf_init_private_section_data): Allow normal sh_type sections
+	to have their type overridden, and all sh_flags but processor and
+	os specific.
+	* elf32-arm.c (elf32_arm_section_flags): Adjust for changed params.
+	* elf32-mep.c (mep_elf_section_flags): Likewise.
+	* elf32-nios2.c (nios2_elf32_section_flags): Likewise.
+	* elf64-alpha.c (elf64_alpha_section_flags): Likewise.
+	* elf64-ia64-vms.c (elf64_ia64_section_flags): Likewise.
+	* elfnn-ia64.c (elfNN_ia64_section_flags): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_size_stubs): Exclude the linker
+	stub BFD and non-aarch64 input files when scanning for stubs.
+
+2020-03-02  Alan Modra  <amodra@gmail.com>
+
+	* coff-alpha.c (alpha_ecoff_get_elt_at_filepos): Provide an upper
+	limit to decompressed element size.
+
+2020-03-02  Alan Modra  <amodra@gmail.com>
+
+	* vms-lib.c (vms_traverse_index): Add recur_count param and
+	update calls.  Fail on excessive recursion.
+
+2020-03-02  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (vms_get_remaining_object_record): Use
+	bfd_realloc_or_free rather than bfd_realloc.
+	(add_symbol_entry, vector_grow1, alpha_vms_slurp_relocs): Likewise.
+	(dst_define_location, parse_module): Likewise, and check realloc
+	return status before using memory.  Return status from function
+	adjusting all callers.
+
+2020-02-28  Alan Modra  <amodra@gmail.com>
 
-	* elf32-arm.c (elf32_arm_write_section): Revert last change.
+	* vms-lib.c (_bfd_vms_lib_archive_p): Free memory on error paths.
 
-2019-05-15  Alan Modra  <amodra@gmail.com>
+2020-02-28  Alan Modra  <amodra@gmail.com>
 
-	* elf32-arm.c (elf32_arm_write_section): Don't leave
-	error case of STM32L4XX_ERRATUM_BRANCH_TO_VENEER with
-	unitialised section contents.
+	* vms-alpha.c (alpha_vms_object_p): Use _bfd_malloc_and_read.
+	Remove duplicate undersize check.
 
-2019-05-14  Jamey Hicks  <jamey.hicks@gmail.com>
+2020-02-27  Alan Modra  <amodra@gmail.com>
 
-	PR 19921
-	* verilog.c: (VerilogDataWidth): New variable.
-	(verilog_write_record): Emit bytes in VerilogDataWidth bundles.
+	PR 24511
+	* mmo.c (mmo_scan): Set SEC_DATA for .data.
 
-2019-05-08  Nick Clifton  <nickc@redhat.com>
+2020-02-27  Alan Modra  <amodra@gmail.com>
 
-	PR 24523
-	* elf32-m68k.c (elf32_m68k_merge_private_bfd_data): Return TRUE
-	rather than FALSE if encountering a non-ELF file.
+	PR 24511
+	* syms.c (stt): Trim off all but 'e', 'i' and 'p' entries.
+	(coff_section_type): Adjust comment.
+	(decode_section_type): Likewise.  Call coff_section_type before
+	decode_section_type.
+	(bfd_decode_symclass): Use 'c' for common sections other than
+	the standard one.
+
+2020-02-27  Alan Modra  <amodra@gmail.com>
+
+	* coff-rs6000.c (_bfd_xcoff_read_ar_hdr): Put all data in one
+	malloc'd block.
+
+2020-02-27  Alan Modra  <amodra@gmail.com>
+
+	* bfd.c (bfd_stat_arch_elt): Use vector of containing archive,
+	if file is an archive element.
+	* bfd-in2.h: Regenerate.
+
+2020-02-26  Alan Modra  <amodra@gmail.com>
+
+	* archive.c (do_slurp_bsd_armap): Increase minimum parsed_size, and
+	bfd_set_error on failing test.  Don't bother changing bfd_error on
+	file read error.  Check symdef_count is multiple of BSD_SYMDEF_SIZE.
+	Check sym name is within string buffer.  Use size_t for some vars.
+	(do_slurp_coff_armap): Use size_t for some variables, fix size of
+	int_buf.  Don't change bfd_error on file read error.  Use
+	_bfd_mul_overflow when calculating carsym buffer size.  Reorder
+	calculations to catch overflows before they occur.  malloc and
+	free raw armap rather than using bfd_alloc.  Read raw armap before
+	allocating carsym+strings buffer.
+	(_bfd_slurp_extended_name_table): Localize variables.  Check
+	name size against file size.
+
+2020-02-26  Alan Modra  <amodra@gmail.com>
+
+	* vms-lib.c (vms_lib_read_index): Release correct buffer.
+
+2020-02-26  Alan Modra  <amodra@gmail.com>
+
+	* elf32-rx.c (rx_elf_relocate_section): Use bfd_malloc rather than
+	malloc.  Check for NULL return from bfd_malloc.
+	(rx_table_find, rx_table_map): Likewise.
+	(rx_set_section_contents): Check bfd_alloc return.
+	(rx_dump_symtab): Don't alloc internal_syms or external_syms.
+
+2020-02-26  Alan Modra  <amodra@gmail.com>
+
+	* aoutx.h: Indent labels correctly.  Format error strings.
+	* archive.c: Likewise.
+	* archive64.c: Likewise.
+	* coff-arm.c: Likewise.
+	* coff-rs6000.c: Likewise.
+	* coff-stgo32.c: Likewise.
+	* cpu-arm.c: Likewise.
+	* dwarf2.c: Likewise.
+	* elf-ifunc.c: Likewise.
+	* elf-properties.c: Likewise.
+	* elf-s390-common.c: Likewise.
+	* elf-strtab.c: Likewise.
+	* elf.c: Likewise.
+	* elf32-arm.c: Likewise.
+	* elf32-bfin.c: Likewise.
+	* elf32-cr16.c: Likewise.
+	* elf32-csky.c: Likewise.
+	* elf32-i386.c: Likewise.
+	* elf32-m68k.c: Likewise.
+	* elf32-msp430.c: Likewise.
+	* elf32-nds32.c: Likewise.
+	* elf32-nios2.c: Likewise.
+	* elf32-pru.c: Likewise.
+	* elf32-xtensa.c: Likewise.
+	* elf64-ia64-vms.c: Likewise.
+	* elf64-x86-64.c: Likewise.
+	* elfcode.h: Likewise.
+	* elfcore.h: Likewise.
+	* elflink.c: Likewise.
+	* elfnn-aarch64.c: Likewise.
+	* elfnn-ia64.c: Likewise.
+	* elfnn-riscv.c: Likewise.
+	* elfxx-mips.c: Likewise.
+	* elfxx-sparc.c: Likewise.
+	* elfxx-x86.c: Likewise.
+	* i386lynx.c: Likewise.
+	* merge.c: Likewise.
+	* pdp11.c: Likewise.
+	* plugin.c: Likewise.
+	* reloc.c: Likewise.
 
-2019-05-06  Alan Modra  <amodra@gmail.com>
+2020-02-26  Alan Modra  <amodra@gmail.com>
 
-	* elf32-pj.c (pj_elf_reloc): Don't report undefined weak as an error.
+	PR 25593
+	* elf-bfd.h (struct elf_link_hash_table): Rename "loaded" to
+	"dyn_loaded".
+	(bfd_elf_add_dt_needed_tag): Declare.
+	* elf-strtab.c (_bfd_elf_strtab_restore): Handle NULL buf.
+	* elflink.c (bfd_elf_add_dt_needed_tag): Make global and rename
+	from elf_add_dt_needed_tag.  Remove soname and doit param.
+	(elf_link_add_object_symbols): Don't use elf_add_dt_needed_tag
+	to see whether as-needed lib is already loaded, use dyn_loaded
+	list instead.  When saving and restoring around as-needed lib
+	handle possibility that dynstr has not been initialised.  Don't
+	add DT_NEEDED tags here.  Limit dyn_loaded list to dynamic libs.
+	Mark libs loaded via DT_NEEDED entries of other libs with
+	DYN_NO_NEEDED if they should not be mentioned in DT_NEEDED of
+	the output.
+	(elf_link_check_versioned_symbol): Remove now unneccesary
+	DYNAMIC check when traversing dyn_loaded list.
+
+2020-02-26  Alan Modra  <amodra@gmail.com>
+
+	* bfdio.c (bfd_get_file_size): Ignore bogus archive element sizes.
+
+2020-02-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/25584
+	* plugin.c (need_lto_wrapper_p): New.
+	(bfd_plugin_set_program_name): Add an int argument to set
+	need_lto_wrapper_p.
+	(get_lto_wrapper): Return FALSE if need_lto_wrapper_p isn't
+	set.
+	* plugin.h (bfd_plugin_set_program_name): Add an int argument.
+
+2020-02-24  Alan Modra  <amodra@gmail.com>
+
+	* vms-lib.c (_bfd_vms_lib_archive_p): Correct overflow checks.
+
+2020-02-24  Alan Modra  <amodra@gmail.com>
+
+	* vms-lib.c (struct carsym_mem): Add limit.
+	(vms_add_index): Heed limit.
+	(vms_traverse_index): Catch buffer overflows.  Remove outdated fixme.
+	(vms_lib_read_index): Set up limit.  Catch 32-bit overflow.
+	Always return actual number read.
+	(_bfd_vms_lib_archive_p): Catch buffer overflows.  Replace
+	assertion with error exit.
+
+2020-02-22  Alan Modra  <amodra@gmail.com>
+
+	PR 25585
+	* elf.c (assign_file_positions_for_load_sections): Continue linking
+	on "PHDR segment not covered by LOAD segment" errors.
+
+2020-02-21  Alan Modra  <amodra@gmail.com>
+
+	* mach-o.c (bfd_mach_o_canonicalize_relocs): Fix ineffective
+	overflow check.
+	(bfd_mach_o_canonicalize_reloc): Likewise.
+	(bfd_mach_o_canonicalize_dynamic_reloc): Likewise.  Sanity check
+	counts and offsets against file size.
+	(bfd_mach_o_build_dysymtab): Fix ineffective overflow check.
+	(bfd_mach_o_mangle_sections): Remove unnecessary overflow check.
+	(bfd_mach_o_read_symtab_symbols): Sanity check count and offset
+	against file size.  Delete symbol table error message.
+	(bfd_mach_o_read_dysymtab): Sanity check counts and offsets
+	against file size.
+	(bfd_mach_o_read_symtab): Likewise.
+	(bfd_mach_o_read_command): Pass file size.
+	(bfd_mach_o_scan): Sanity check command count against file size.
+
+2020-02-21  Alan Modra  <amodra@gmail.com>
+
+	PR 25569
+	* aoutx.h (adjust_o_magic, adjust_z_magic, adjust_n_magic): Use
+	"text", "data" and "bss" section pointer vars.  Don't update
+	section size, just exec header sizes.
+	(adjust_sizes_and_vmas): Don't update text section size.  Set
+	initial exec header a_text.  Print exec headers sizes.
+	* pdp11.c (adjust_o_magic, adjust_z_magic, adjust_n_magic),
+	(adjust_sizes_and_vmas): Similarly.  Formatting.
+	(final_link): Correct final file extension.
+
+2020-02-20  Nick Clifton  <nickc@redhat.com>
+
+	* elf-bfd.h (struct elf_backend_data): Add symbol_section_index
+	callback.
+	* elfxx-target.h (elf_backend_symbol_section_index): Provide
+	default definition.
+	(elfNN_bed): Initialise the symbol_section_index field.
+	* elf.c (swap_out_syms): Call symbol_section_index, if defined, on
+	OS and PROC specific section indicies.  Warn if converting other
+	reserved incidies to SHN_ABS.
+
+2020-02-19  Sergey Belyashov  <sergey.belyashov@gmail.com>
+
+	PR 25537
+	* cpu-z80.c: Add machine type compatibility checking.
+
+2020-02-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/25355
+	* plugin.c (plugin_list_entry): Remove handle.
+	(try_load_plugin): Call dlclose before return.
+
+2020-02-19  Alan Modra  <amodra@gmail.com>
+
+	* libbfd-in.h (_bfd_constant_p): Define.
+	(_bfd_alloc_and_read, _bfd_malloc_and_read): Check read size against
+	file size before allocating memory.
+	* coffgen.c (_bfd_coff_get_external_symbols): Remove file size check.
+	* elf.c (bfd_elf_get_str_section): Likewise.
+	(_bfd_elf_slurp_version_tables): Likewise.
+	* libbfd.h: Regenerate.
 
-2019-05-06  Alan Modra  <amodra@gmail.com>
+2020-02-19  Alan Modra  <amodra@gmail.com>
 
-	* reloc.c (BFD_RELOC_PPC64_TPREL16_HIGH, BFD_RELOC_PPC64_TPREL16_HIGHA),
-	(BFD_RELOC_PPC64_DTPREL16_HIGH, BFD_RELOC_PPC64_DTPREL16_HIGHA):
-	Sort before BFD_RELOC_PPC64_DTPREL16_HIGHESTA entry.
+	* libbfd-in.h (_bfd_alloc_and_read, _bfd_malloc_and_read): New.
+	* aoutx.h (aout_get_external_symbols): Replace calls to
+	bfd_[m]alloc and bfd_bread with call to _bfd_[m]alloc_and_read.
+	(slurp_reloc_table): Likewise.
+	* archive.c (do_slurp_bsd_armap): Likewise.
+	(do_slurp_coff_armap): Likewise.
+	* archive64.c (_bfd_archive_64_bit_slurp_armap): Likewise.
+	* coff-rs6000.c (_bfd_xcoff_slurp_armap): Likewise.
+	* coff64-rs6000.c (xcoff64_slurp_armap): Likewise.
+	* coffcode.h (coff_set_arch_mach_hook, buy_and_read): Likewise.
+	* coffgen.c (coff_real_object_p, coff_object_p, build_debug_section),
+	(_bfd_coff_get_external_symbols): Likewise.
+	* ecoff.c (ecoff_slurp_symbolic_header),
+	(_bfd_ecoff_slurp_symbolic_info, ecoff_slurp_reloc_table),
+	(_bfd_ecoff_slurp_armap, ecoff_link_add_object_symbols, READ),
+	(ecoff_indirect_link_order): Likewise.
+	* elf.c (bfd_elf_get_str_section, setup_group, elf_read_notes),
+	(_bfd_elf_slurp_version_tables): Likewise.
+	* elf32-m32c.c (m32c_elf_relax_section): Likewise.
+	* elf32-rl78.c (rl78_elf_relax_section): Likewise.
+	* elf32-rx.c (elf32_rx_relax_section): Likewise.
+	* elf64-alpha.c (READ): Likewise.
+	* elf64-mips.c (mips_elf64_slurp_one_reloc_table): Likewise.
+	* elf64-sparc.c (elf64_sparc_slurp_one_reloc_table): Likewise.
+	* elfcode.h (elf_slurp_symbol_table),
+	(elf_slurp_reloc_table_from_section): Likewise.
+	* elflink.c (elf_link_add_object_symbols),
+	(elf_link_check_versioned_symbol): Likewise.
+	* elfxx-mips.c (READ): Likewise.
+	* i386lynx.c (slurp_reloc_table): Likewise.
+	* lynx-core.c (lynx_core_file_p): Likewise.
+	* mach-o.c (bfd_mach_o_canonicalize_relocs),
+	(bfd_mach_o_read_symtab_strtab, bfd_mach_o_alloc_and_read),
+	(bfd_mach_o_read_prebound_dylib, bfd_mach_o_read_dyld_content
+	* pdp11.c (aout_get_external_symbols, slurp_reloc_table
+	* pef.c (bfd_pef_print_loader_section, bfd_pef_scan_start_address),
+	(bfd_pef_parse_symbols): Likewise.
+	* peicode.h (pe_ILF_object_p, pe_bfd_object_p
+	* som.c (setup_sections, som_slurp_string_table),
+	(som_slurp_reloc_table, som_bfd_count_ar_symbols),
+	(som_bfd_fill_in_ar_symbols): Likewise.
+	* vms-alpha.c (module_find_nearest_line, evax_bfd_print_dst),
+	(evax_bfd_print_image): Likewise.
+	* vms-lib.c (_bfd_vms_lib_archive_p): Likewise.
+	* wasm-module.c (wasm_scan): Likewise.
+	* xcofflink.c (xcoff_link_add_symbols): Likewise.
+	* xsym.c (bfd_sym_read_name_table),
+	(bfd_sym_print_type_information_table_entry): Likewise.
 	* libbfd.h: Regenerate.
-	* bfd-in2.h: Regenerate.
 
-2019-05-04  Alan Modra  <amodra@gmail.com>
+2020-02-19  Alan Modra  <amodra@gmail.com>
 
-	PR 24511
-	* syms.c (coff_section_type): Only allow '.', '$' and numeric
-	following the standard section names.
-	(bfd_decode_symclass): Prioritize section flag tests in
-	decode_section_type before name tests in coff_section_type.
-	* plugin.c (bfd_plugin_canonicalize_symtab): Init fake_section
-	and fake_common_section using BFD_FAKE_SECTION.  Use "fake" as
-	their names and choose standard .text section flags for
-	fake_section.
-
-2019-05-02  Nick Clifton  <nickc@redhat.com>
-
-	PR 24493
-	* coffcode.h (styp_to_sec_flags): Treat .gnu.debuglink and
-	.gnu.debugaltlink sections as debugging sections.
-
-2019-04-30  Alan Modra  <amodra@gmail.com>
-
-	* elf64-ppc.c (struct ppc64_elf_obj_tdata): Add has_gotrel.
-	(struct _ppc64_elf_section_data): Likewise.
-	(ppc64_elf_check_relocs): Set above fields.
-	(ppc64_elf_edit_toc): Add a pass over GOT relocs.
-	(ppc64_elf_relocate_section): Edit GOT indirect to GOT relative
-	when possible.
+	* aoutx.h (slurp_reloc_table): Allocate reloc_cache after
+	reading external relocs.
+	* ecoff.c (ecoff_slurp_reloc_table): Likewise.
+	* archive.c (_bfd_write_archive_contents): Don't twiddle bfd_error
+	after bfd_bread.
+	* archive64.c (_bfd_archive_64_bit_slurp_armap): Remove unnecessary
+	bfd_release.
+	* elf32-m32c.c (m32c_offset_for_reloc): Make shndx_buf a bfd_byte*.
+	(m32c_elf_relax_section): Likewise.
+	* elf32-rl78.c (rl78_offset_for_reloc): Likewise.
+	(rl78_elf_relax_section): Likewise.
+	* elf32-rx.c (rx_offset_for_reloc): Likewise.
+	(elf32_rx_relax_section): Likewise.
+	* mach-o.c (bfd_mach_o_alloc_and_read): Move earlier with better
+	parameter types and use..
+	(bfd_mach_o_read_dylinker, bfd_mach_o_read_dylib),
+	(bfd_mach_o_read_fvmlib, bfd_mach_o_read_str): ..in these functions.
+	* peicode.h (pe_bfd_object_p): Don't zero the part of opthdr
+	being read from file, just the extra.
+	* som.c (som_slurp_symbol_table): Allocate internal symbol buffer
+	after reading external syms.  Free on failure.
+
+2020-02-19  Alan Modra  <amodra@gmail.com>
+
+	* coffcode.h (buy_and_read, coff_slurp_line_table),
+	(coff_slurp_symbol_table, coff_slurp_reloc_table): Replace
+	bfd_[z][m]alloc2 calls with _bfd_mul_overflow followed by the
+	corresponding bfd_alloc call.  Adjust variables to suit.
+	* coffgen.c (_bfd_coff_get_external_symbols): Likewise.
+	* ecoff.c (_bfd_ecoff_slurp_symbolic_info),
+	(_bfd_ecoff_slurp_symbol_table, READ): Likewise.
+	* elf.c (bfd_elf_get_elf_syms, setup_group, bfd_section_from_shdr),
+	(swap_out_syms, _bfd_elf_slurp_version_tables): Likewise.
+	* elf32-m32c.c (m32c_elf_relax_section): Likewise.
+	* elf32-rl78.c (rl78_elf_relax_section): Likewise.
+	* elf32-rx.c (elf32_rx_relax_section): Likewise.
+	* elf64-alpha.c (READ): Likewise.
+	* elfcode.h (elf_object_p, elf_write_relocs, elf_write_shdrs_and_ehdr),
+	(elf_slurp_symbol_table, elf_slurp_reloc_table),
+	(bfd_from_remote_memory): Likewise.
+	* elfcore.h (core_find_build_id): Likewise.
+	* elfxx-mips.c (READ): Likewise.
+	* mach-o.c (bfd_mach_o_mangle_sections),
+	(bfd_mach_o_read_symtab_symbols, bfd_mach_o_read_thread),
+	(bfd_mach_o_read_dysymtab, bfd_mach_o_flatten_sections),
+	(bfd_mach_o_scan, bfd_mach_o_fat_archive_p): Likewise.
+	* som.c (setup_sections, som_prep_for_fixups)
+	(som_build_and_write_symbol_table, som_slurp_symbol_table),
+	(som_slurp_reloc_table, som_bfd_count_ar_symbols),
+	(som_bfd_fill_in_ar_symbols, som_slurp_armap),
+	(som_bfd_ar_write_symbol_stuff): Likewise.
+	* vms-alpha.c (vector_grow1): Likewise.
+	* vms-lib.c (vms_add_index): Likewise.
+	* wasm-module.c (wasm_scan_name_function_section): Likewise.
+	* libbfd.c (bfd_malloc2, bfd_realloc2, bfd_zmalloc2): Delete.
+	* opncls.c (bfd_alloc2, bfd_zalloc2): Delete.
+	* libbfd-in.h (bfd_malloc2, bfd_realloc2, bfd_zmalloc2),
+	(bfd_alloc2, bfd_zalloc2): Delete.
+	(_bfd_mul_overflow): Define.
+	* libbfd.h: Regenerate.
 
-2019-04-26  H.J. Lu  <hongjiu.lu@intel.com>
+2020-02-19  Alan Modra  <amodra@gmail.com>
 
-	PR ld/24486
-	* elflink.c (elf_link_output_extsym): Don't complain undefined
-	weak dynamic reference.
+	* elf.c (bfd_section_from_shdr): Use bfd_zalloc rather than
+	bfd_zalloc2.
+	(assign_section_numbers): Likewise.
+	(elf_map_symbols): Likewise, and bfd_alloc rather than bfd_alloc2.
+	(_bfd_elf_map_sections_to_segments): Use bfd_malloc rather than
+	bfd_malloc2, size_t amt, and unsigned tls_count.
+	(rewrite_elf_program_header): Use bfd_malloc and size_t amt.
+	* elflink.c (elf_create_symbuf): Use bfd_malloc.
+	(elf_output_implib): Use bfd_alloc.
+
+2020-02-19  Alan Modra  <amodra@gmail.com>
+
+	* bfd.c (struct bfd): Move format and direction to other
+	bitfields.  Add "size".
+	* bfdio.c (bfd_get_size): Cache size when not writing file.
+	* opncls.c (bfd_get_debug_link_info_1): Allow for bfd_get_size
+	returning zero, ie. unknown.
+	(bfd_get_alt_debug_link_info): Likewise.
+	* bfd-in2.h: Regenerate.
+
+2020-02-19  Alan Modra  <amodra@gmail.com>
+
+	* coffgen.c (_bfd_coff_get_external_symbols): Don't call
+	bfd_get_file_size twice.
+	(_bfd_coff_read_string_table): Allow for bfd_get_file_size
+	zero, ie. unknown, return.
+	* elf-attrs.c (_bfd_elf_parse_attributes): Likewise.
+	* elfcode.h (elf_swap_shdr_in): Likewise.
+	(elf_object_p): Don't call bfd_get_file_size twice and correct
+	file size check.
+
+2020-02-19  Alan Modra  <amodra@gmail.com>
+
+	* mach-o.c (bfd_mach_o_flatten_sections): Return a bfd_boolean,
+	FALSE if memory alloc fails.  Adjust calls.
+	* som.c (som_prep_for_fixups): Likewise.
+	* vms-alpha.c (alpha_vms_add_fixup_lp, alpha_vms_add_fixup_ca),
+	(alpha_vms_add_fixup_qr, alpha_vms_add_fixup_lr),
+	(alpha_vms_add_lw_reloc, alpha_vms_add_qw_reloc): Likewise.
+	* som.c (som_build_and_write_symbol_table): Return via error_return
+	on seek failure.
+	* vms-alpha.c (VEC_APPEND): Adjust for vector_grow1 changes.
+	(VEC_APPEND_EL): Delete.
+	(vector_grow1): Return pointer to element.  Catch overflow.
+	Return NULL on memory allocation failure.
+	(alpha_vms_add_fixup_lp): Replace VEC_APPEND_EL with VEC_APPEND.
+	(alpha_vms_add_fixup_ca): Likewise.
+	(alpha_vms_link_add_object_symbols): Check VEC_APPEND result
+	before using.
+	* elf.c (bfd_section_from_shdr): Check bfd_zalloc2 result.
+
+2020-02-19  Alan Modra  <amodra@gmail.com>
+
+	* aix386-core.c (aix386_core_file_p): Use size_t for "amt".
+	* aout-target.h (object_p): Likewise.
+	* aout-tic30.c (tic30_aout_object_p): Likewise.
+	* aoutx.h (some_aout_object_p, mkobject, make_empty_symbol),
+	(emit_stringtab, write_syms, link_hash_table_create),
+	(aout_link_write_other_symbol): Likewise.
+	* archive.c (_bfd_generic_mkarchive, bfd_generic_archive_p),
+	(bfd_ar_hdr_from_filesystem, _bfd_write_archive_contents),
+	(_bfd_compute_and_write_armap): Likewise.
+	* archures.c (bfd_arch_list): Likewise.
+	* bfd.c (bfd_record_phdr): Likewise.
+	* binary.c (binary_canonicalize_symtab): Likewise.
+	* cisco-core.c (cisco_core_file_validate): Likewise.
+	* coff-arm.c (coff_arm_link_hash_table_create, find_thumb_glue),
+	(find_arm_glue, record_arm_to_thumb_glue),
+	(record_thumb_to_arm_glue): Likewise.
+	* coff-ppc.c (ppc_coff_link_hash_table_create, record_toc),
+	(ppc_allocate_toc_section): Likewise.
+	* coff-rs6000.c (_bfd_xcoff_mkobject, _bfd_xcoff_archive_p): Likewise.
+	* coff-sh.c (sh_relax_section): Likewise.
+	* coff64-rs6000.c (xcoff64_archive_p): Likewise.
+	* coffcode.h (handle_COMDAT, coff_new_section_hook),
+	(coff_set_alignment_hook, coff_mkobject),
+	(coff_compute_section_file_positions): Likewise.
+	* coffgen.c (coff_make_empty_symbol, coff_bfd_make_debug_symbol),
+	(coff_find_nearest_line_with_names),
+	( bfd_coff_set_symbol_class): Likewise.
+	* cofflink.c (_bfd_coff_link_hash_table_create),
+	(_bfd_coff_link_input_bfd): Likewise.
+	* dwarf1.c (alloc_dwarf1_unit, alloc_dwarf1_func): Likewise.
+	* dwarf2.c (read_abbrevs, read_attribute_value, add_line_info),
+	(build_line_info_table, sort_line_sequences),
+	(line_info_add_include_dir, line_info_add_file_name),
+	(decode_line_info, scan_unit_for_symbols, parse_comp_unit),
+	(place_sections, _bfd_dwarf2_slurp_debug_info): Likewise.
+	* ecoff.c (_bfd_ecoff_mkobject, _bfd_ecoff_make_empty_symbol),
+	(_bfd_ecoff_find_nearest_line),
+	(_bfd_ecoff_bfd_link_hash_table_create): Likewise.
+	* ecofflink.c (bfd_ecoff_debug_init): Likewise.
+	* elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Likewise.
+	* elf-m10300.c (mn10300_elf_relax_section),
+	(elf32_mn10300_link_hash_table_create): Likewise.
+	* elf-strtab.c (_bfd_elf_strtab_init): Likewise.
+	* elf.c (make_mapping, copy_elf_program_header): Likewise.
+	* elf32-arm.c (elf32_arm_link_hash_table_create),
+	(elf32_arm_setup_section_lists, elf32_arm_check_relocs),
+	(elf32_arm_new_section_hook): Likewise.
+	* elf32-avr.c (elf_avr_new_section_hook),
+	(elf32_avr_link_hash_table_create, get_local_syms),
+	(elf32_avr_setup_section_lists): Likewise.
+	* elf32-bfin.c (bfinfdpic_elf_link_hash_table_create),
+	(bfin_link_hash_table_create): Likewise.
+	* elf32-cr16.c (elf32_cr16_link_hash_table_create): Likewise.
+	* elf32-cris.c (elf_cris_link_hash_table_create): Likewise.
+	* elf32-csky.c (csky_elf_link_hash_table_create),
+	(csky_elf_check_relocs, elf32_csky_setup_section_lists): Likewise.
+	* elf32-frv.c (frvfdpic_elf_link_hash_table_create): Likewise.
+	* elf32-hppa.c (elf32_hppa_link_hash_table_create),
+	(elf32_hppa_setup_section_lists, get_local_syms): Likewise.
+	* elf32-i386.c (elf_i386_check_relocs): Likewise.
+	* elf32-lm32.c (lm32_elf_link_hash_table_create): Likewise.
+	* elf32-m32r.c (m32r_elf_link_hash_table_create),
+	(m32r_elf_check_relocs): Likewise.
+	* elf32-m68hc1x.c (m68hc11_elf_hash_table_create),
+	(elf32_m68hc11_setup_section_lists),
+	(elf32_m68hc11_size_stubs): Likewise.
+	* elf32-m68k.c (elf_m68k_link_hash_table_create): Likewise.
+	* elf32-metag.c (elf_metag_link_hash_table_create),
+	(elf_metag_setup_section_lists): Likewise.
+	* elf32-microblaze.c (microblaze_elf_link_hash_table_create),
+	(microblaze_elf_check_relocs): Likewise.
+	* elf32-nds32.c (nds32_elf_link_hash_table_create),
+	(nds32_elf_check_relocs): Likewise.
+	* elf32-nios2.c (nios2_elf32_setup_section_lists),
+	(get_local_syms, nios2_elf32_check_relocs),
+	(nios2_elf32_link_hash_table_create): Likewise.
+	* elf32-or1k.c (or1k_elf_link_hash_table_create),
+	(or1k_elf_check_relocs): Likewise.
+	* elf32-ppc.c (ppc_elf_modify_segment_map, update_plt_info): Likewise.
+	* elf32-pru.c (pru_elf32_link_hash_table_create): Likewise.
+	* elf32-s390.c (elf_s390_link_hash_table_create),
+	(elf_s390_check_relocs): Likewise.
+	* elf32-score.c (score_elf_create_got_section),
+	(s3_elf32_score_new_section_hook),
+	(elf32_score_link_hash_table_create): Likewise.
+	* elf32-score7.c (score_elf_create_got_section),
+	(s7_elf32_score_new_section_hook): Likewise.
+	* elf32-sh.c (sh_elf_link_hash_table_create),
+	(sh_elf_check_relocs): Likewise.
+	* elf32-tic6x.c (elf32_tic6x_link_hash_table_create),
+	(elf32_tic6x_new_section_hook, elf32_tic6x_check_relocs): Likewise.
+	* elf32-tilepro.c (tilepro_elf_link_hash_table_create),
+	(tilepro_elf_check_relocs): Likewise.
+	* elf32-v850.c (remember_hi16s_reloc): Likewise.
+	* elf32-vax.c (elf_vax_link_hash_table_create): Likewise.
+	* elf32-xtensa.c (elf_xtensa_link_hash_table_create),
+	(elf_xtensa_new_section_hook): Likewise.
+	* elf64-alpha.c (elf64_alpha_bfd_link_hash_table_create),
+	(get_got_entry, elf64_alpha_check_relocs): Likewise.
+	* elf64-hppa.c (elf64_hppa_hash_table_create): Likewise.
+	* elf64-ia64-vms.c (elf64_ia64_object_p): Likewise.
+	* elf64-mmix.c (mmix_elf_new_section_hook): Likewise.
+	* elf64-ppc.c (ppc64_elf_new_section_hook),
+	(ppc64_elf_link_hash_table_create, update_local_sym_info),
+	(update_plt_info, ppc64_elf_check_relocs): Likewise.
+	* elf64-s390.c (elf_s390_link_hash_table_create),
+	(elf_s390_check_relocs): Likewise.
+	* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
+	* elflink.c (bfd_elf_link_record_local_dynamic_symbol),
+	(_bfd_elf_link_find_version_dependencies, elf_link_add_object_symbols),
+	(elf_link_add_archive_symbols, compute_bucket_count),
+	(bfd_elf_size_dynsym_hash_dynstr, _bfd_elf_link_hash_table_create),
+	(bfd_elf_get_bfd_needed_list, elf_link_swap_symbols_out),
+	(bfd_elf_final_link): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_link_hash_table_create),
+	(elfNN_aarch64_setup_section_lists, elfNN_aarch64_check_relocs),
+	(elfNN_aarch64_new_section_hook): Likewise.
+	* elfnn-ia64.c (elfNN_ia64_object_p): Likewise.
+	* elfnn-riscv.c (riscv_elf_link_hash_table_create),
+	(riscv_elf_check_relocs): Likewise.
+	* elfxx-mips.c (_bfd_mips_elf_new_section_hook),
+	(_bfd_mips_elf_add_symbol_hook, _bfd_mips_elf_check_relocs),
+	(_bfd_mips_elf_modify_segment_map, _bfd_mips_elf_set_section_contents),
+	(_bfd_mips_elf_link_hash_table_create): Likewise.
+	* elfxx-sparc.c (_bfd_sparc_elf_link_hash_table_create),
+	(_bfd_sparc_elf_check_relocs),
+	(_bfd_sparc_elf_new_section_hook): Likewise.
+	* elfxx-tilegx.c (tilegx_elf_link_hash_table_create),
+	(tilegx_elf_check_relocs): Likewise.
+	* elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Likewise.
+	* format.c (bfd_check_format_matches): Likewise.
+	* hash.c (_bfd_stringtab_init): Likewise.
+	* ihex.c (ihex_scan): Likewise.
+	* irix-core.c (irix_core_core_file_p): Likewise.
+	* linker.c (bfd_wrapped_link_hash_lookup),
+	(_bfd_generic_link_hash_table_create),
+	(_bfd_generic_reloc_link_order): Likewise.
+	* lynx-core.c (lynx_core_file_p): Likewise.
+	* netbsd-core.c (netbsd_core_file_p): Likewise.
+	* osf-core.c (osf_core_core_file_p): Likewise.
+	* pdp11.c (some_aout_object_p, mkobject, make_empty_symbol),
+	(link_hash_table_create, aout_link_write_other_symbol): Likewise.
+	* peXXigen.c (_bfd_XX_bfd_copy_private_section_data): Likewise.
+	* peicode.h (pe_mkobject): Likewise.
+	* ppcboot.c (ppcboot_mkobject, ppcboot_canonicalize_symtab): Likewise.
+	* ptrace-core.c (ptrace_unix_core_file_p): Likewise.
+	* sco5-core.c (read_uarea): Likewise.
+	* som.c (hppa_som_gen_reloc_type, som_object_p, som_prep_headers),
+	(som_write_fixups, som_write_space_strings, som_write_symbol_strings),
+	(som_finish_writing, som_canonicalize_symtab, som_new_section_hook),
+	(som_bfd_copy_private_section_data, bfd_som_set_section_attributes),
+	(bfd_som_attach_aux_hdr, som_write_armap): Likewise.
+	* srec.c (srec_scan): Likewise.
+	* syms.c (_bfd_generic_make_empty_symbol): Likewise.
+	* targets.c (bfd_target_list): Likewise.
+	* tekhex.c (first_phase, tekhex_sizeof_headers): Likewise.
+	* trad-core.c (trad_unix_core_file_p): Likewise.
+	* vms-alpha.c (vms_initialize, alpha_vms_bfd_link_hash_table_create),
+	(vms_new_section_hook): Likewise.
+	* wasm-module.c (wasm_make_empty_symbol): Likewise.
+	* xcofflink.c (xcoff_get_section_contents),
+	(_bfd_xcoff_bfd_link_hash_table_create, xcoff_set_import_path),
+	(xcoff_find_function, bfd_xcoff_link_record_set, xcoff_build_ldsym),
+	(bfd_xcoff_size_dynamic_sections, xcoff_link_input_bfd): Likewise.
+
+2020-02-19  Alan Modra  <amodra@gmail.com>
+
+	* elfxx-riscv.c (riscv_multi_letter_ext_valid_p): Don't use C99.
+
+2020-02-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* plugin.c (try_load_plugin): Make plugin_list_iter an argument
+	and use it if it isn't NULL.  Remove has_plugin_p argument.  Add
+	a build_list_p argument.  Don't search plugin_list.  Short circuit
+	when building the plugin list.
+	(has_plugin): Renamed to has_plugin_list.
+	(bfd_plugin_set_plugin): Don't set has_plugin.
+	(bfd_plugin_specified_p): Check plugin_list instead.
+	(build_plugin_list): New function.
+	(load_plugin): Call build_plugin_list and use plugin_list.
+
+2020-02-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/25355
+	* plugin.c (try_claim): Always clean up for LTO wrapper.
+	(try_load_plugin): Treat each object as independent.  Create a
+	copy for plugin name.
+
+2020-02-11  Nick Clifton  <nickc@redhat.com>
+
+	* elf32-msp430.c (msp430_final_link_relocate): Always use longs
+	for addresses in print statements.
+	(msp430_elf_relax_delete_bytes): Likewise.
+	(msp430_elf_relax_add_words): Likewise.
+	(msp430_elf_relax_section): Likewise.
+
+2020-02-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* plugin.c (add_symbols): Clear plugin_data memory.
+
+2020-02-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/25355
+	* configure.ac (HAVE_EXECUTABLE_SUFFIX): New AC_DEFINE.
+	(EXECUTABLE_SUFFIX): Likewise.
+	* config.in: Regenerated.
+	* configure: Likewise.
+	* plugin.c (bfd_plugin_close_and_cleanup): Removed.
+	(plugin_list_entry): Add all_symbols_read, cleanup_handler,
+	gcc, lto_wrapper, resolution_file, resolution_option, gcc_env,
+	real_bfd, real_nsyms, real_syms, lto_nsyms and lto_syms.
+	(get_lto_wrapper): New.
+	(setup_lto_wrapper_env): Likewise.
+	(current_plugin): Likewise.
+	(register_all_symbols_read): Likewise.
+	(register_cleanup): Likewise.
+	(get_symbols): Likewise.
+	(add_input_file): Likewise.
+	(bfd_plugin_close_and_cleanup): Likewise.
+	(claim_file): Removed.
+	(register_claim_file): Set current_plugin->claim_file.
+	(add_symbols): Make a copy of LTO symbols.  Set lto_nsyms and
+	lto_syms in current_plugin.
+	(try_claim): Use current_plugin->claim_file.  Call LTO plugin
+	all_symbols_read handler.  Copy real symbols to plugin_data.
+	Call LTO plugin cleanup handler.  Clean up for LTO wrapper.
+	(try_load_plugin): Don't reuse the previous plugin for LTO
+	wrapper.  Set up GCC LTO wrapper if possible.  Don't set
+	plugin_list_iter->claim_file.
+	(bfd_plugin_canonicalize_symtab): Use real LTO symbols if
+	possible.
+	* plugin.h (plugin_data_struct): Add real_bfd, real_nsyms and
+	real_syms.
+
+2020-02-10  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* elf32-msp430.c (msp430_elf_relax_section): Before relaxing a branch,
+	check if previous instruction matches a conditional jump inserted
+	earlier. Invert conditional jump and delete branch in this case.
+
+2020-02-10  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* elf32-msp430.c (msp430_elf_relax_add_two_words): Rename to
+	msp430_elf_relax_add_words. Support insertion of either one or two
+	words.
+	(msp430_elf_relax_section): Catch opcode of 0x3c00 when relocation
+	needs to be grown. Handle insertion of branch instruction to replace
+	jump.
+
+2020-02-10  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* elf32-msp430.c (msp430_final_link_relocate): Add printf statements for
+	debugging relocations.
+	(msp430_elf_relax_delete_bytes): Likewise.
+	(msp430_elf_relax_add_two_words): Likewise.
+	(msp430_elf_relax_section): Likewise.
+
+2020-02-10  Alan Modra  <amodra@gmail.com>
+
+	* archures.c: Wrap overlong z80 comments.
+	* bfd-in2.h: Regenerate.
+
+2020-02-07  Sergey Belyashov  <sergey.belyashov@gmail.com>
+
+	PR 25469
+	* archures.c: Add GBZ80 and Z80N machine values.
+	* reloc.c: Add BFD_RELOC_Z80_16_BE.
+	* coff-z80.c: Add support for new reloc.
+	* coffcode.h: Add support for new machine values.
+	* cpu-z80.c: Add support for new machine names.
+	* elf32-z80.c: Add support for new reloc.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Regenerate.
 
-2019-04-25  Sudakshina Das  <sudi.das@arm.com>
+2020-02-07  Nick Clifton  <nickc@redhat.com>
 
-	* elfnn-aarch64.c (PLT_BTI_ENTRY_SIZE): Remove.
-	(PLT_BTI_TLSDESC_ENTRY_SIZE): Remove.
-	(PLT_PAC_ENTRY_SIZE, PLT_BTI_PAC_ENTRY_SIZE): Remove.
-	(PLT_BTI_SMALL_ENTRY_SIZE, PLT_PAC_SMALL_ENTRY_SIZE): Update.
-	(elfNN_aarch64_small_plt0_pac_entry): Remove.
-	(elfNN_aarch64_small_plt0_bti_pac_entry): Remove.
-	(elfNN_aarch64_small_plt0_bti_entry): Update.
-	(elfNN_aarch64_small_plt_bti_entry): Update.
-	(elfNN_aarch64_small_plt_pac_entry): Update.
-	(elfNN_aarch64_tlsdesc_small_plt_bti_entry): Update.
-	(setup_plt_values): Setup new entries.
-	(elfNN_aarch64_finish_dynamic_sections): Remove size change.
-	(elfNN_aarch64_plt_sym_val): Likewise.
+	PR 23932
+	* elf.c (rewrite_elf_program_header): Do not complain if no
+	sections are mapped to a segment.
 
-2019-04-22  Jim Wilson  <jimw@sifive.com>
+2020-02-06  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* elfnn-riscv.c (PRSTATUS_SIZE) [ARCH_SIZE==32]: Change from 0 to 204.
+	PR ld/25490
+	* elflink.c (_bfd_elf_gc_mark_extra_sections): Issue an error
+	for garbage collection on __patchable_function_entries section
+	without linked-to section.
 
-2019-04-19  Alan Modra  <amodra@gmail.com>
+2020-02-06  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* elf32-s12z.c (elf_backend_can_gc_sections): Don't define
+	PR gas/25381
+	* bfd-in2.h: Regenerated.
+	* elflink.c (_bfd_elf_gc_mark_extra_sections): Call mark_hook
+	on section if gc_mark of any of its linked-to sections is set
+	and don't set gc_mark again.
+	* section.c (asection): Add linked_to_symbol_name to map_head
+	union.
 
-2019-04-17  H.J. Lu  <hongjiu.lu@intel.com>
+2020-02-06  Maciej W. Rozycki  <macro@wdc.com>
 
-	* elf64-x86-64.c (elf_x86_64_need_pic): Suggest -fPIE when not
-	building shared object.
-	* elfxx-x86.c (_bfd_x86_elf_size_dynamic_sections): Likewise.
+	* elf32-v850.c (v850_elf_relax_section): Fix the index used for
+	reporting an unrecognized instruction with R_V850_LONGJUMP.
 
-2019-04-17  H.J. Lu  <hongjiu.lu@intel.com>
+2020-02-05  Alan Modra  <amodra@gmail.com>
 
-	PR ld/24458
-	* elfxx-x86.h (SYMBOL_DEFINED_NON_SHARED_P): Also check x86
-	linker_def.
+	* elf64-ppc.c (ppc_stub_plt_branch): Match comment with reality.
 
-2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+2020-02-04  Alan Modra  <amodra@gmail.com>
 
-	* reloc.c (BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM): New internal
-	relocation.
-	* bfd-in2.h: Regenerate.
-	* libbfd.h: Likewise.
+	* elf32-ppc.c (ppc_elf_relocate_section): After applying
+	R_PPC_VLE_ADDR20, goto copy_reloc.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2020-02-02  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* reloc.c (BFD_RELOC_ARM_THUMB_LOOP12): New.
 	* bfd-in2.h: Regenerated.
-	* libbfd.h: Regenerated.
+	* section.c (SEC_ASSEMBLER_SECTION_ID): Fix a typo in comments.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2020-02-02  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* reloc.c (BFD_RELOC_THUMB_PCREL_BFCSEL): New relocation.
+	PR gas/25380
 	* bfd-in2.h: Regenerated.
-	* libbfd.h: Likewise.
+	* ecoff.c (bfd_debug_section): Add section_id.
+	* section.c (bfd_section): Add section_id.
+	(SEC_ASSEMBLER_SECTION_ID): New.
+	(BFD_FAKE_SECTION): Add section_id.
+
+2020-02-01  Nick Clifton  <nickc@redhat.com>
+
+	* config.bfd: Move the c30-aout and tic30-aout targets onto the
+	obsolete list.
+
+2020-01-31  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* elf-eh-frame.c (_bfd_elf_write_section_eh_frame): DW_EH_PE_datarel
+	encodings are relative to the GOT on nios2, too.
+
+2020-01-31  Alan Modra  <amodra@gmail.com>
+
+	* Makefile.am (elf32-target.h, elf64-target.h): Don't use a temp
+	file.  Use $< and $@ in rules.
+	(elf32-aarch64.c, elf64-aarch64.c): Likewise.
+	(elf32-ia64.c, elf64-ia64.c): Likewise.
+	(elf32-riscv.c, elf64-riscv.c): Likewise.
+	(peigen.c, pepigen.c, pex64igen.c): Likewise.
+	(elf32-aarch64.c, elf64-aarch64.c): Don't emit $srcdir on #line.
+	(elf32-riscv.c, elf64-riscv.c): Likewise, and use $(SED).
+	(elf32-ia64.c, elf64-ia64.c): Do emit #line.
+	(peigen.c, pepigen.c, pex64igen.c): Likewise.
+	* Makefile.in: Regenerate.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2020-01-31  Alan Modra  <amodra@gmail.com>
 
-	* reloc.c (BFD_RELOC_ARM_THUMB_BF13): New.
-	* bfd-in2.h: Regenerated.
-	* libbfd.h: Regenerated.
-	* elf32-arm.c (elf32_arm_howto_table_1): New entry for R_ARM_THM_BF13.
-	(elf32_arm_reloc_map elf32_arm_reloc_map): Map BFD_RELOC_ARM_THUMB_BF13
-	and R_ARM_THM_BF12 together.
-	(elf32_arm_final_link_relocate): New switch case for R_ARM_THM_BF13.
+	PR 4110
+	* elf.c (setup_group): Don't clear entire section contents,
+	just the padding after group flags.  Release alloc'd memory
+	after a seek or read failure.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2020-01-16  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	* reloc.c (BFD_RELOC_ARM_THUMB_BF19): New
-	* libbfd.h: Regenerated.
-	* bfd-in2.h: Regenerated.
-	* bfd-elf32-arm.c (elf32_arm_howto_table_1): New entry for R_ARM_THM_BF18.
-	(elf32_arm_reloc_map elf32_arm_reloc_map): Map BFD_RELOC_ARM_THUMB_BF19
-	and R_ARM_THM_BF18 together.
-	(elf32_arm_final_link_relocate): New switch case for R_ARM_THM_BF19.
+	* peXXigen.c (pe_is_repro): New function.
+	(_bfd_XX_print_private_bfd_data_common): Note timestamp is
+	actually a build hash if PE_IMAGE_DEBUG_TYPE_REPRO is present.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2020-01-16  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	* reloc.c (BFD_RELOC_ARM_THUMB_BF17): New enum.
-	* bfd-in2.h: Regenerated.
-	* libbfd.h: Regenerated.
-	* bfd-elf32-arm.c (elf32_arm_howto_table_1): New entry for R_ARM_THM_BF16.
-	(elf32_arm_reloc_map elf32_arm_reloc_map): Map BFD_RELOC_ARM_THUMB_BF17
-	and R_ARM_THM_BF16 together.
-	(get_value_helper): New reloc helper.
-	(elf32_arm_final_link_relocate): New switch case for R_ARM_THM_BF16.
+	* peXXigen.c (debug_type_names): Add names for new debug data type
+	values.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2020-01-16  Jon Turney  <jon.turney@dronecode.org.uk>
 
-	* reloc.c (BFD_RELOC_THUMB_PCREL_BRANCH5): New enum.
-	* bfd-in2.h: Regenerate.
-	* libbfd.h: Regenerate.
+	* peXXigen.c (pe_print_debugdata): Fix the iteration variable for
+	inner loop.  Fix a memory leak.
 
-2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+2020-01-30  Alan Modra  <amodra@gmail.com>
 
-	* archures.c (bfd_mach_arm_8_1M_MAIN): Define.
-	* bfd-in2.h: Regenerate.
-	* cpu-arm.c (arch_info_struct): Add entry for Armv8.1-M Mainline.
-	* elf32-arm.c (using_thumb_only): Return true for Armv8.1-M Mainline
-	and update assert.
-	(using_thumb2): Likewise.
-	(using_thumb2_bl): Update assert.
-	(arch_has_arm_nop): Likewise.
-	(bfd_arm_get_mach_from_attributes): Add case for Armv8.1-M Mainline.
-	(tag_cpu_arch_combine): Add logic for Armv8.1-M Mainline merging.
+	* coffgen.c (coff_real_object_p): Don't clear obj_coff_keep_syms
+	or obj_coff_keep_strings here.
+	(coff_get_normalized_symtab): Free external syms directly.
+	* xcofflink.c (xcoff_link_input_bfd): Restore obj_coff_keep_syms
+	on error exit path.
 
-2019-04-11  H.J. Lu  <hongjiu.lu@intel.com>
+2020-01-27  Jim Wilson  <jimw@sifive.com>
 
-	* elf-linker-x86.h (elf_x86_cet_report): New.
-	(elf_linker_x86_params): Add cet_report.
-	* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Report
-	missing IBT and SHSTK properties if needed.
+	* cpu-riscv.c (riscv_scan): New.
+	(N): Change bfd_default_scan to riscv_scan.
 
-2019-04-11  H.J. Lu  <hongjiu.lu@intel.com>
+2020-01-27  Andreas Schwab  <schwab@suse.de>
 
-	PR ld/24436
-	* elf-m10300.c (mn10300_elf_check_relocs): Remove BFD_ASSERT of
-	"h != NULL".  Don't check "h != NULL" before calling.
-	bfd_elf_gc_record_vtentry.
-	* elf32-arm.c (elf32_arm_check_relocs): Likewise.
-	* elf32-bfin.c (bfin_check_relocs): Likewise.
-	* elf32-cris.c (cris_elf_check_relocs): Likewise.
-	* elf32-csky.c (csky_elf_check_relocs): Likewise.
-	* elf32-d10v.c (elf32_d10v_check_relocs): Likewise.
-	* elf32-dlx.c (elf32_dlx_check_relocs): Likewise.
-	* elf32-fr30.c (fr30_elf_check_relocs): Likewise.
-	* elf32-frv.c (elf32_frv_check_relocs): Likewise.
-	* elf32-hppa.c (elf32_hppa_check_relocs): Likewise.
-	* elf32-i386.c (elf_i386_check_relocs): Likewise.
-	* elf32-iq2000.c (iq2000_elf_check_relocs): Likewise.
-	* elf32-m32r.c (m32r_elf_check_relocs): Likewise.
-	* elf32-m68hc1x.c (elf32_m68hc11_check_relocs): Likewise.
-	* elf32-m68k.c (elf_m68k_check_relocs): Likewise.
-	* elf32-mcore.c (mcore_elf_check_relocs): Likewise.
-	* elf32-metag.c (elf_metag_check_relocs): Likewise.
-	* elf32-or1k.c (or1k_elf_check_relocs): Likewise.
-	* elf32-ppc.c (ppc_elf_check_relocs): Likewise.
-	* elf32-s390.c (elf_s390_check_relocs): Likewise.
-	* elf32-sh.c (sh_elf_check_relocs): Likewise.
-	* elf32-v850.c (v850_elf_check_relocs): Likewise.
-	* elf32-vax.c (elf_vax_check_relocs): Likewise.
-	* elf32-xstormy16.c (xstormy16_elf_check_relocs): Likewise.
-	* elf32-xtensa.c (elf_xtensa_check_relocs): Likewise.
-	* elf64-mmix.c (mmix_elf_check_relocs): Likewise.
-	* elf64-ppc.c (ppc64_elf_check_relocs): Likewise.
-	* elf64-s390.c (elf_s390_check_relocs): Likewise.
-	* elf64-x86-64.c (elf_s390_check_relocs): Likewise.
-	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Likewise.
-	* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Likewise.
-	* elflink.c (bfd_elf_gc_record_vtinherit): Check for corrupt
-	VTENTRY entry.
+	* Makefile.am (ALL_MACHINES): Remove cpu-plugin.lo.
+	(ALL_MACHINES_CFILES): Remove cpu-plugin.c.
+	* Makefile.in: Regenerate.
+	* cpu-plugin.c: Remove.
+	* archures.c (enum bfd_architecture): Remove bfd_arch_plugin.
+	(bfd_plugin_arch): Remove declaration.
+	* bfd-in2.h: Regenerate.
+	* po/SRC-POTFILES.in: Regenerate.
 
-2019-04-11  Alan Modra  <amodra@gmail.com>
+2020-01-27  H.J. Lu  <hongjiu.lu@intel.com>
+	    Alan Modra  <amodra@gmail.com>
 
-	PR 24435
-	* elflink.c (elf_link_add_object_symbols): Don't read partial
-	dynamic entries from fuzzed objects.
+	PR ld/25458
+	* elflink.c (_bfd_elf_gc_mark_rsec): Mark all weak aliases.
 
-2019-04-11  Tamar Christina  <tamar.christina@arm.com>
+2020-01-24  Jim Wilson  <jimw@sifive.com>
 
-	PR ld/24302
-	* elfnn-aarch64.c (elfNN_aarch64_size_dynamic_sections): Don't emit
-	DT_TLSDESC_GOT and DT_TLSDESC_PLT when DF_BIND_NOW.
-	(elfNN_aarch64_finish_dynamic_sections): Don't write PLT if DF_BIND_NOW.
+	* elfxx-riscv.c (riscv_get_prefix_class): Format s case like others.
+	(riscv_parse_prefixed_ext): Fix s extension comment and reword to
+	avoid over long line.
 
-2019-04-10  Michael Forney  <mforney@mforney.org>
+2020-01-24  Nick Clifton  <nickc@redhat.com>
 
-	PR 24427
-	* doc/chew.c (free_words): Correctly free "push_text" strings.
+	PR 25447
+	* coffgen.c (_bfd_coff_close_and_cleanup): Do not clear the keep
+	syms and keep strings flags as these may have been set in order to
+	prevent a bogus call to free.
 
-2019-04-08  H.J. Lu  <hongjiu.lu@intel.com>
+2020-01-23  Nick Clifton  <nickc@redhat.com>
 
-	* config.bfd: Remove i[3-7]86-*-kaos* and i[3-7]86-*-chaos targets.
+	* po/fr.po: Updated French translation.
 
-2019-04-08  Alan Modra  <amodra@gmail.com>
+2020-01-23  Alan Modra  <amodra@gmail.com>
 
-	* configure.ac (elfxx_x86): Define and use.
-	* configure: Regenerate.
+	PR 25444
+	* elf.c (assign_file_positions_for_load_sections): Avoid divide
+	by zero when p_align is zero.
 
-2019-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+2020-01-22  Maxim Blinov  <maxim.blinov@embecosm.com>
 
-	* elf-linker-x86.h: New file.
-	* elf32-i386.c (elf_i386_convert_load_reloc): Use htab->params
-	to get x86-specific linker options.
-	* elf64-x86-64.c (elf_x86_64_convert_load_reloc): Likewise.
-	(elf_x86_64_check_relocs): Likewise.
-	(elf_x86_64_relocate_section): Likewise.
-	(elf_x86_64_link_setup_gnu_properties): Likewise.
-	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Likewise.
-	(_bfd_x86_elf_link_setup_gnu_properties): Likewise.
-	(_bfd_elf_linker_x86_set_options): New function.
-	* elfxx-x86.h: Include "elf-linker-x86.h".
-	(elf_x86_link_hash_table): Add params.
+	* bfd/elfnn-riscv.c (riscv_skip_prefix): New.
+	(riscv_prefix_cmp): Likewise.
+	(riscv_non_std_ext_p): Deleted.
+	(riscv_std_sv_ext_p): Likewise.
+	(riscv_non_std_sv_ext_p): Likewise.
+	(riscv_merge_non_std_and_sv_ext): Rename to...
+	(riscv_merge_multi_letter_ext): and modified to use riscv_prefix_cmp.
+	(riscv_merge_arch_attr_info): Replace 3 calls to
+	riscv_merge_non_std_and_sv_ext with single call to
+	riscv_merge_multi_letter_ext.
+	* bfd/elfxx-riscv.c (riscv_parse_std_ext): Break if we
+	encounter a 'z' prefix.
+	(riscv_get_prefix_class): New function, return prefix class based
+	on first few characters of input string.
+	(riscv_parse_config): New structure to factor out minor differences
+	in extension class parsing behaviour.
+	(riscv_parse_sv_or_non_std_ext): Rename to...
+	(riscv_parse_prefixed_ext): and parameterise with
+	riscv_parse_config.
+	(riscv_std_z_ext_strtab, riscv_std_s_ext_strtab): New.
+	(riscv_multi_letter_ext_valid_p): New.
+	(riscv_ext_x_valid_p, riscv_ext_z_valid_p, riscv_ext_s_valid_p): New.
+	(riscv_parse_subset): Delegate all non-single-letter parsing work
+	to riscv_parse_prefixed_ext.
+	* bfd/elfxx-riscv.h (riscv_isa_ext_class): New type.
+	(riscv_get_prefix_class): Declare.
+
+2020-01-22  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (struct ppc_link_hash_table): Add tga_group.
+	(ppc64_elf_archive_symbol_lookup): Extract __tls_get_addr_opt for
+	__tls_get_addr_desc.
+	(ppc64_elf_size_stubs): Add section for linker generated
+	__tls_get_addr_desc wrapper function.  Loop at least once if
+	generating this function.
+	(emit_tga_desc, emit_tga_desc_eh_frame): New functions.
+	(ppc64_elf_build_stubs): Generate __tls_get_addr_desc.
+
+2020-01-22  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.h (struct ppc64_elf_params): Add no_tls_get_addr_regsave.
+	* elf64-ppc.c (struct ppc_link_hash_table): Add tga_desc and
+	tga_desc_fd.
+	(is_tls_get_addr): Match tga_desc and tga_desc_df too.
+	(STDU_R1_0R1, ADDI_R1_R1): Define.
+	(tls_get_addr_prologue, tls_get_addr_epilogue): New functions.
+	(ppc64_elf_tls_setup): Set up tga_desc and tga_desc_fd.  Indirect
+	tga_desc_fd to opt_fd, and tga_desc to opt.  Set
+	no_tls_get_addr_regsave.
+	(branch_reloc_hash_match): Add hash3 and hash4.
+	(ppc64_elf_tls_optimize): Handle tga_desc_fd and tga_desc too.
+	(ppc64_elf_size_dynamic_sections): Likewise.
+	(ppc64_elf_relocate_section): Likewise.
+	(plt_stub_size, build_plt_stub): Likewise.  Size regsave
+	__tls_get_addr stub.
+	(build_tls_get_addr_stub): Build regsave __tls_get_addr stub and
+	eh_frame.
+	(ppc_size_one_stub): Handle tga_desc_fd and tga_desc too.  Size
+	eh_frame for regsave __tls_get_addr.
 
-2019-04-03  Alan Modra  <amodra@gmail.com>
+2020-01-22  Alan Modra  <amodra@gmail.com>
 
-	* coff-i386.c, * coff-x86_64.c, * coffgen.c, * dwarf2.c,
-	* elf-m10200.c, * elf.c, * elf32-arm.c, * elf32-bfin.c,
-	* elf32-csky.c, * elf32-m32r.c, * elf32-microblaze.c, * elf32-pru.c,
-	* elf32-rx.c, * elf32-xgate.c, * elf64-sparc.c, * elfnn-ia64.c,
-	* elfxx-riscv.c, * elfxx-sparc.c, * linker.c, * mach-o.c,
-	* pe-x86_64.c, * pei-x86_64.c, * plugin.c: Whitespace fixes.
+	* elf64-ppc.c (ppc64_elf_size_stubs): Correct condition under
+	which __tls_get_addr calls will be eliminated.
 
-2019-04-02  Jim Wilson  <jimw@sifive.com>
+2020-01-20  Nick Clifton  <nickc@redhat.com>
 
-	PR 24389
-	* elfnn-riscv.c (_bfd_riscv_elf_merge_private_bfd_data): Move read of
-	ELF header flags to after check for ELF object file.  Loop through
-	sections looking for code sections, if none, then skip ABI checks.
+	* po/pt.po: Updates Portuguese translation.
+	* po/ru.po: Updated Russian translation.
+	* po/uk.po: Updated Ukranian translation.
 
-2019-03-30  Andrew Waterman  <andrew@sifive.com>
+2020-01-20  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* elfnn-riscv.c (_bfd_riscv_relax_call): Only check ARCH_SIZE for
-	rd == X_RA case.
+	PR ld/25416
+	* elf64-x86-64.c (elf_x86_64_check_tls_transition): Support
+	"rex leal x@tlsdesc(%rip), %reg" and "call *x@tlsdesc(%eax)" in
+	X32 mode.
+	(elf_x86_64_relocate_section): In x32 mode, for GDesc -> LE
+	transition, relax "rex leal x@tlsdesc(%rip), %reg" to
+	"rex movl $x@tpoff, %reg", for GDesc -> IE transition, relax
+	"rex leal x@tlsdesc(%rip), %reg" to
+	"rex movl x@gottpoff(%rip), %eax".  For both transitions, relax
+	"call *(%eax)" to "nopl (%rax)".
+
+2020-01-20  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (LD_R11_0R3, CMPDI_R11_0, STD_R11_0R1, LD_R11_0R1),
+	(MTLR_R11): Don't define.
+	(LD_R0_0R3, CMPDI_R0_0): Define.
+	(build_tls_get_addr_stub): Don't use r11 in stub.
 
-2019-03-29  Max Filippov  <jcmvbkbc@gmail.com>
+2020-01-20  Alan Modra  <amodra@gmail.com>
 
-	* elf32-xtensa.c (shrink_dynamic_reloc_sections): Add
-	info->export_dynamic to the conditional.
+	* elf64-ppc.c (ppc_elf_hash_entry): New function, use throughout file.
+	(defined_sym_val, is_tls_get_addr): Likewise.
 
-2019-03-28  Alan Modra  <amodra@gmail.com>
+2020-01-18  Nick Clifton  <nickc@redhat.com>
 
-	PR 24392
-	* configure.ac: Invoke AC_CHECK_SIZEOF(int).
+	* version.m4 (BFD_VERSION): Set to 2.34.50.
 	* configure: Regenerate.
-	* coffgen.c (coff_get_reloc_upper_bound): Replace gcc diagnostic
-	workaround with SIZEOF_LONG vs. SIZEOF_INT check.
-	* elf.c (_bfd_elf_get_reloc_upper_bound): Likewise.
-	* elf64-sparc.c (elf64_sparc_get_reloc_upper_bound): Likewise.
-	* mach-o.c (bfd_mach_o_get_reloc_upper_bound): Likewise.
-
-2019-03-21  Jim Wilson  <jimw@sifive.com>
-
-	PR 24365
-	* elfnn-riscv.c (riscv_elf_relocate_section): For STT_SECTION check,
-	verify sym non-NULL before using.  Add identical check using h.
-
-2019-03-21  Sudakshina Das  <sudi.das@arm.com>
-
-	* elf-bfd.h (struct elf_backend_data): Add argument to
-	merge_gnu_properties.
-	* elf-properties.c (elf_merge_gnu_properties): Add argument to
-	itself and while calling bed->merge_gnu_properties.
-	(elf_merge_gnu_property_list): Update the calls for
-	elf_merge_gnu_properties.
-	* elfnn-aarch64.c (elfNN_aarch64_merge_gnu_properties): Update handling
-	of --force-bti warning and add argument.
-	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Add
-	warning.
-	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Add argument.
-	* elfxx-x86.h (_bfd_x86_elf_merge_gnu_properties): Likewise in
-	declaration.
-
-2019-03-20  Sudakshina Das  <sudi.das@arm.com>
-
-	* elfxx-aarch64.c (_bfd_aarch64_elf_link_fixup_gnu_properties): Define.
-	* elfxx-aarch64.h (_bfd_aarch64_elf_link_fixup_gnu_properties): Declare.
-	(elf_backend_fixup_gnu_properties): Define for AArch64.
-
-2019-03-18  Alan Modra  <amodra@gmail.com>
-
-	PR 24355
-	* elf32-ppc.c (ppc_finish_symbols): Don't call write_glink_stub
-	for local iplt syms with ent->plt.offset == -1.  Remove ineffective
-	attempt at writing glink stubs only once.
-
-2019-03-16  Alan Modra  <amodra@gmail.com>
-
-	PR 24337
-	* elf.c (_bfd_elf_rela_local_sym): Revert last change.
-	(_bfd_elf_rel_local_sym): Likewise.
-	* elflink.c (elf_link_input_bfd): Use bfd_und_section for
-	section of symbols with unrecognized shndx.
+	* po/bfd.pot: Regenerate.
 
-2019-03-15  H.J. Lu  <hongjiu.lu@intel.com>
+2020-01-18  Nick Clifton  <nickc@redhat.com>
 
-	PR ld/24267
-	* coffgen.c (_bfd_coff_section_already_linked): Skip discarded
-	section.
-	* cofflink.c (coff_link_add_symbols): Check for symbols defined
-	in discarded section.
+	Binutils 2.34 branch created.
 
-2019-03-15  Alan Modra  <amodra@gmail.com>
+2020-01-17  Christian Biesinger  <cbiesinger@google.com>
 
-	PR 24339
-	* elflink.c (elf_link_add_object_symbols): Bail out on a local
-	symbol after globals if elf_bad_symtab is not set.
-
-2019-03-15  Alan Modra  <amodra@gmail.com>
-
-	PR 24337
-	* elf.c (_bfd_elf_rela_local_sym): Don't segfault on NULL sec.
-	(_bfd_elf_rel_local_sym): Likewise.
-
-2019-03-15  Alan Modra  <amodra@gmail.com>
-
-	PR 24336
-	* elflink.c (elf_link_read_relocs_from_section): Handle fuzzed
-	object files with sh_size not a multiple of sh_entsize.
-
-2019-03-15  H.J. Lu  <hongjiu.lu@intel.com>
-
-	PR ld/24338
-	* elf64-x86-64.c (elf_x86_64_relocate_section): Check for corrupt
-	input with bad relocation.
-
-22019-03-15  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* elf64-x86-64.c (elf_x86_64_relocate_section): Re-indent.
-
-2019-03-14  Nick Clifton  <nickc@redhat.com>
-
-	PR 24334
-	* dwarf2.c (struct dwarf2_debug): Add sec_vma_count field.
-	(save_section_vma): Initialise field to the number of entries in
-	the sec_vma table.
-	(section_vma_same): Check that the number of entries in the
-	sec_vma table matches the number of sections in the bfd.
-
-2019-03-14  Nick Clifton  <nickc@redhat.com>
-
-	PR 24333
-	* elflink.c (_bfd_elf_add_default_symbol): Add a check for a NULL
-	section owner pointer when adding the default symbol.
-
-2019-03-14  Nick Clifton  <nickc@redhat.com>
-
-	PR 24332
-	* elflink.c (elf_link_add_object_symbols): Add new local variable
-	extversym_end.  Initialise it to point to the end of the version
-	symbol table, if present.  Check it when initialising and updating
-	the ever pointer.
-
-2019-03-13  Sudakshina Das  <sudi.das@arm.com>
-
-	* elfnn-aarch64.c (PLT_PAC_ENTRY_SIZE, PLT_PAC_SMALL_ENTRY_SIZE): New.
-	(PLT_BTI_PAC_ENTRY_SIZE, PLT_BTI_PAC_SMALL_ENTRY_SIZE): New.
-	(setup_plt_values): Account for PAC or PAC and BTI enabled PLTs.
-	(elfNN_aarch64_size_dynamic_sections): Add checks for PLT_BTI_PAC
-	and PLT_PAC_PLT.
-	(elfNN_aarch64_finish_dynamic_sections): Account for PLT_BTI_PAC.
-	(get_plt_type): Add case for DT_AARCH64_PAC_PLT.
-	(elfNN_aarch64_plt_sym_val): Add cases for PLT_BTI_PAC and PLT_PAC.
-
-2019-03-13  Sudakshina Das  <sudi.das@arm.com>
-	    Szabolcs Nagy  <szabolcs.nagy@arm.com>
-
-	* bfd-in.h (aarch64_plt_type, aarch64_enable_bti_type): New.
-	(aarch64_bti_pac_info): New.
-	(bfd_elf64_aarch64_set_options): Add aarch64_bti_pac_info argument.
-	(bfd_elf32_aarch64_set_options): Likewise.
-	* bfd-in2.h: Regenerate
-	* elfnn-aarch64.c (PLT_BTI_ENTRY_SIZE): New.
-	(PLT_BTI_SMALL_ENTRY_SIZE, PLT_BTI_TLSDESC_ENTRY_SIZE): New.
-	(elfNN_aarch64_small_plt0_bti_entry): New.
-	(elfNN_aarch64_small_plt_bti_entry): New.
-	(elfNN_aarch64_tlsdesc_small_plt_bti_entry): New.
-	(elf_aarch64_obj_tdata): Add no_bti_warn and plt_type fields.
-	(elf_aarch64_link_hash_table): Add plt0_entry, plt_entry and
-	tlsdesc_plt_entry_size fields.
-	(elfNN_aarch64_link_hash_table_create): Initialise the new fields.
-	(setup_plt_values): New helper function.
-	(bfd_elfNN_aarch64_set_options): Use new bp_info to set plt sizes and
-	bti enable type.
-	(elfNN_aarch64_allocate_dynrelocs): Use new size members instead of
-	fixed macros.
-	(elfNN_aarch64_size_dynamic_sections): Likewise and add checks.
-	(elfNN_aarch64_create_small_pltn_entry): Use new generic pointers
-	to plt stubs instead of fixed ones and update filling them according
-	to the need for bti.
-	(elfNN_aarch64_init_small_plt0_entry): Likewise.
-	(elfNN_aarch64_finish_dynamic_sections): Likewise.
-	(get_plt_type, elfNN_aarch64_get_synthetic_symtab): New.
-	(elfNN_aarch64_plt_sym_val): Update size accordingly.
-	(elfNN_aarch64_link_setup_gnu_properties): Set up plts if BTI GNU NOTE
-	is set.
-	(bfd_elfNN_get_synthetic_symtab): Define.
-	(elfNN_aarch64_merge_gnu_properties): Give out warning with --force-bti
-	and mising BTI NOTE SECTION.
-
-
-2019-03-13  Sudakshina Das  <sudi.das@arm.com>
-
-	* elf-properties.c (_bfd_elf_link_setup_gnu_properties): Exclude
-	linker created inputs from merge.
-	* elfnn-aarch64.c (struct elf_aarch64_obj_tdata): Add field for
-	GNU_PROPERTY_AARCH64_FEATURE_1_AND properties.
-	(elfNN_aarch64_link_setup_gnu_properties): New.
-	(elfNN_aarch64_merge_gnu_properties): New.
-	(elf_backend_setup_gnu_properties): Define for AArch64.
-	(elf_backend_merge_gnu_properties): Likewise.
-	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Define.
-	(_bfd_aarch64_elf_parse_gnu_properties): Define.
-	(_bfd_aarch64_elf_merge_gnu_properties): Define.
-	* elfxx-aarch64.h (_bfd_aarch64_elf_link_setup_gnu_properties): Declare.
-	(_bfd_aarch64_elf_parse_gnu_properties): Declare.
-	(_bfd_aarch64_elf_merge_gnu_properties): Declare.
-	(elf_backend_parse_gnu_properties): Define for AArch64.
-
-2019-03-13  H.J. Lu  <hongjiu.lu@intel.com>
-
-	PR ld/24322
-	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Properly
-	merge GNU_PROPERTY_X86_FEATURE_1_[IBT|SHSTK].
-
-2019-03-12  Alan Modra  <amodra@gmail.com>
-
-	* coffcode.h (buy_and_read): Delete unnecessary forward decl.  Add
-	nmemb parameter.  Use bfd_alloc2.
-	(coff_slurp_line_table): Use bfd_alloc2.  Update buy_and_read calls.
-	Delete assertion.
-	(coff_slurp_symbol_table): Use bfd_alloc2 and bfd_zalloc2.
-	(coff_slurp_reloc_table): Use bfd_alloc2.  Update buy_and_read calls.
-	* coffgen.c (coff_get_reloc_upper_bound): Ensure size calculation
-	doesn't overflow.
-	* elf.c (bfd_section_from_shdr): Use bfd_zalloc2.  Style fix.
-	(assign_section_numbers): Style fix.
-	(swap_out_syms): Use bfd_malloc2.
-	(_bfd_elf_get_reloc_upper_bound): Ensure size calculation doesn't
-	overflow.
-	(_bfd_elf_make_empty_symbol): Style fix.
-	(elfobj_grok_stapsdt_note_1): Formatting.
-	* elfcode.h (elf_object_p): Use bfd_alloc2.
-	(elf_write_relocs, elf_write_shdrs_and_ehdr): Likewise.
-	(elf_slurp_symbol_table): Use bfd_zalloc2.
-	(elf_slurp_reloc_table): Use bfd_alloc2.
-	(_bfd_elf_bfd_from_remote_memory): Use bfd_malloc2.
-	* elf64-sparc (elf64_sparc_get_reloc_upper_bound): Ensure
-	size calculation doesn't overflow.
-	(elf64_sparc_get_dynamic_reloc_upper_bound): Likewise.
-	* mach-o.c (bfd_mach_o_get_reloc_upper_bound): Likewise.
-	* pdp11.c (get_reloc_upper_bound): Copy aoutx.h version.
-
-2019-03-08  Alan Modra  <amodra@gmail.com>
-
-	PR 24311
-	* merge.c (merge_strings): Return secinfo.  Don't pad section
-	to alignment here.
-	(_bfd_merge_sections): Pad section to alignment here, if input
-	sections contributing to merged output all pad to alignment.
-	Formatting.
-
-2019-03-06  Nick Clifton  <nickc@redhat.com>
-
-	* dwarf2.c (_bfd_dwarf2_find_symbol_bias): Check for a NULL symbol
-	table pointer.
-	* coffgen.c (coff_find_nearest_line_with_names): Do not call
-	_bfd_dwarf2_find_symbol_bias if there is no symbol table available.
-
-2019-03-01  Andreas Krebbel  <krebbel@linux.ibm.com>
-
-	This reverts commit 5a12586d44fa8d5dfc74cbca4f2f36a273a16335.
-	2019-01-14  Maamoun Tarsha  <maamountk@hotmail.com>
-
-	PR 20113
-	* elf32-s390.c (allocate_dynrelocs): Update comment.
-
-2019-02-28  Tamar Christina  <tamar.christina@arm.com>
-
-	* elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Correct CIE parse.
-
-2019-02-28  Nick Clifton  <nickc@redhat.com>
-
-	PR 24273
-	* elf.c (bfd_elf_string_from_elf_section): Check for a string
-	section that is not NUL terminated.
-
-2019-02-27  H.J. Lu  <hongjiu.lu@intel.com>
-
-	PR ld/24276
-	* elf64-x86-64.c (elf_x86_64_check_relocs): Skip symbol defined
-	by linker when checking copy reloc on protected symbol.
-
-2019-02-24  Alan Modra  <amodra@gmail.com>
-
-	PR 24144
-	* pdp11.c (set_section_contents): Revert 2015-02-24 change.
-
-2019-02-20  Eric Tsai  <erictsai@cadence.com>
-
-	* elf32-xtensa.c (is_resolvable_asm_expansion): Scan output
-	sections between the call site and call destination and adjust
-	call distance by the largest alignment.
-
-2019-02-20  Alan Hayward  <alan.hayward@arm.com>
-
-	* elf-bfd.h (elfcore_write_aarch_pauth): Add declaration.
-	* elf.c (elfcore_grok_aarch_pauth): New function.
-	(elfcore_grok_note): Check for NT_ARM_PAC_MASK.
-	(elfcore_write_aarch_pauth): New function.
-	(elfcore_write_register_note): Check for AArch64 pauth section.
-
-2019-02-20  Alan Modra  <amodra@gmail.com>
-
-	PR 24225
-	* elf32-nios2.c (nios2_elf32_relocate_section): Check asprintf
-	return value.
+	* coff-arm.c: Fix spelling error (seperate).
+	* elfxx-riscv.c (riscv_parse_sv_or_non_std_ext): Fix spelling
+	error (seperate).
+	* sysdep.h (strnlen): Fix spelling error (seperate).
 
-2019-02-20  Michael Roitzsch  <reactorcontrol@icloud.com>
+2020-01-15  Lars Brinkhoff  <lars@nocrew.org>
 
-	* configure.ac (SHARED_LIBADD): Add -liberty -lintl for all
-	Darwin hosts, not just or1k.
-	* configure: Regenerate.
+	PR 20694
+	* pdp11.c (TARGET_PAGE_SIZE): Set to 8192.
 
-2019-02-20  Alan Modra  <amodra@gmail.com>
+2020-01-15  Alan Modra  <amodra@gmail.com>
 
-	PR 24236
-	* archive64.c (_bfd_archive_64_bit_slurp_armap): Move code adding
-	sentinel NUL to string buffer nearer to loop where it is used.
-	Don't go past sentinel when scanning strings, and don't write
-	NUL again.
-	* archive.c (do_slurp_coff_armap): Simplify string handling to
-	archive64.c style.
+	PR 25384
+	* elf64-ppc.c (ELIMINATE_COPY_RELOCS): Update comment.
+	(ppc64_elf_adjust_dynamic_symbol): Don't allow .dynbss copies
+	of function symbols unless dot symbols are present.  Do warn
+	whenever one is created, regardles of whether a PLT entry is
+	also emitted for the function symbol.
 
-2019-02-19  Alan Modra  <amodra@gmail.com>
+2020-01-14  Alan Modra  <amodra@gmail.com>
 
-	PR 24235
-	* pei-x86_64.c (pex64_bfd_print_pdata_section): Correct checks
-	attempting to prevent read past end of section.
+	* som.c (som_bfd_count_ar_symbols): Error when file position
+	of symbols on chains is not strictly increasing.
 
-2019-02-18  Alan Modra  <amodra@gmail.com>
+2020-01-14  Alan Modra  <amodra@gmail.com>
 
-	PR 24225
-	* elf32-nios2.c (nios2_elf32_relocate_section): Use asprintf and
-	PRIx64 to generate warning messages.  Print local sym names too.
+	* vms.h (VMS_DEBUG): Define as 0.
+	* vms-alpha.c (image_write): Move debug output after bounds check.
+	Tidy bounds check.
+	(_bfd_vms_slurp_eihd): Warning fix.
+	(_bfd_vms_slurp_etir): Init variables to avoid bogus warnings.
 
-2019-02-09  Vineet Gupta  <vgupta@synopsys.com>
+2020-01-13  Alan Modra  <amodra@gmail.com>
 
-	* elf32-arc (INIT_SYM_STRING): Delete.
-	(FINI_SYM_STRING): Likewise.
-	(init_str): Likewise.
-	(fini_str): Likewise.
+	* vms-alpha.c (_bfd_vms_slurp_egsd): Ensure minimum size even
+	for "ignored" records.
 
-2019-02-08  Alan Modra  <amodra@gmail.com>
+2020-01-13  Alan Modra  <amodra@gmail.com>
 
-	* elf32-ppc.c (ppc_elf_relocate_section): Add %X to "unsupported
-	for bss-plt" warning to make it an error.
+	* wasm-module.c (wasm_scan_name_function_section): Formatting.
+	Delete asect name check.  Move asect NULL check to wasm_object_p.
+	Correct bounds check of sizes against end.  Replace uses of
+	bfd_zalloc with bfd_alloc, zeroing only necessary bytes.  Use
+	just one bfd_release.
+	(wasm_scan): Don't use malloc/strdup for section names,
+	bfd_alloc instead.  Simplify code prefixing section name.
+	Formatting.  Don't attempt to free memory here..
+	(wasm_object_p): ..do so here.
 
-2019-02-07  Eric Botcazou  <ebotcazou@adacore.com>
+2020-01-10  Szabolcs Nagy  <szabolcs.nagy@arm.com>
 
-	PR ld/18841
-	* elf32-sparc.c (elf32_sparc_reloc_type_class): Return
-	reloc_class_ifunc for ifunc symbols.
-	* elf64-sparc.c (elf64_sparc_reloc_type_class): Likewise.
+	PR ld/22269
+	* elf32-arm.c (elf32_arm_final_link_relocate): Use
+	UNDEFWEAK_NO_DYNAMIC_RELOC.
+	(allocate_dynrelocs_for_symbol): Likewise.
 
-2019-02-07  Eric Botcazou  <ebotcazou@adacore.com>
+2020-01-10  Tamar Christina  <tamar.christina@arm.com>
 
-	* elf32-visium.c (visium_elf_howto_parity_reloc): Minor tweak.
-	<R_VISIUM_PC16>: Use explicit range test to detect an overflow.
+	PR 25210
+	* elfnn-aarch64.c (_bfd_aarch64_create_stub_section): Remove elfclass.
 
-2019-02-07  Nick Clifton  <nickc@redhat.com>
+2020-01-10  Alan Modra  <amodra@gmail.com>
 
-	* config.bfd: Move the powerpc-lynxos and powerpc-windiss targets
-	into the definitely obsolete list.
+	* coff-alpha.c (alpha_ecoff_object_p): Calculate size in bfd_size_type.
 
-2019-02-05  H.J. Lu  <hongjiu.lu@intel.com>
+2020-01-09  Nick Clifton  <nickc@redhat.com>
 
-	PR ld/24151
-	* elf64-x86-64.c (elf_x86_64_need_pic): Check
-	SYMBOL_DEFINED_NON_SHARED_P instead of def_regular.
-	(elf_x86_64_relocate_section): Move PIC check for PC-relative
-	relocations to ...
-	(elf_x86_64_check_relocs): Here.
-	(elf_x86_64_finish_dynamic_symbol): Use SYMBOL_DEFINED_NON_SHARED_P
-	to check if a symbol is defined in a non-shared object.
-	* elfxx-x86.h (SYMBOL_DEFINED_NON_SHARED_P): New.
+	PR 25221
+	* bfd.c (bfd_convert_section_contents): Check for a compress
+	header size that is larger than the actual section size.
 
-2019-01-21  Sergio Durigan Junior  <sergiodj@redhat.com>
+2020-01-08  Alan Modra  <amodra@gmail.com>
 
-	* elf32-arm.c (elf32_arm_final_link_relocate): Use 'llabs' instead
-	of 'labs' (and fix GCC warning).
+	PR 25351
+	* elflink.c (bfd_elf_final_link): Call _bfd_fix_excluded_sec_syms
+	after removing sections.
 
-2019-01-25  Nick Clifton  <nickc@redhat.com>
+2020-01-06  Jim Wilson  <jimw@sifive.com>
 
-	* po/ru.po: Updated Russian translation.
+	PR 25205
+	* elfnn-riscv.c (riscv_elf_relocate_section) <R_RISCV_CALL>: Add
+	check for !bfd_link_pic (info).
+	<R_RISCV_CALL_PLT>: Move next to R_RISCV_CALL.
+	<R_RISCV_JAL>: Add comment.
+	(_bfd_riscv_relax_section): For plt.offset check, add check for
+	bfd_link_pic (info).  Add comment.
 
-2019-01-23  Nick Clifton  <nickc@redhat.com>
+2020-01-06  Alan Modra  <amodra@gmail.com>
 
-	* po/fr.po: Updated French translation.
+	* format.c (bfd_check_format_matches): Ignore bfd_error on target
+	match failures.  Don't init to bfd_error_wrong_format before
+	calling _bfd_check_format.
 
-2019-01-21  Nick Clifton  <nickc@redhat.com>
+2020-01-06  Alan Modra  <amodra@gmail.com>
 
-	* po/pt.po: Updated Portuguese translation.
-	* po/uk.po: Updated Ukranian translation.
+	* vms-alpha.c (_bfd_vms_push, _bfd_vms_pop): Return pass/fail
+	status rather than exiting on stack overflow or underflow.
+	(_bfd_vms_slurp_etir): Adjust to suit.
 
-2019-01-21  Yuri Chornoivan  <yurchor@ukr.net>
+2020-01-06  Alan Modra  <amodra@gmail.com>
 
-	PR 24108
-	* elf32-nds32.c (nds32_relocate_section): Add space between words
-	in error message.
-	* elfnn-riscv.c (riscv_version_mismatch): Fix spelling mistake in
-	error message.
-	(riscv_i_or_e_p): Likewise.
-	(riscv_merge_arch_attr_info): Likewise.
+	* som.c (som_bfd_fill_in_ar_symbols): Bounds check som_dict index.
 
-2019-01-19  Nick Clifton  <nickc@redhat.com>
+2020-01-06  Alan Modra  <amodra@gmail.com>
 
-	* version.m4: Reset to 2.32.51
-	* configure: Regenerate.
-	* po/bfd.pot: Regenerate.
+	* mach-o.c (bfd_mach_o_read_dylinker): Don't read past end of
+	command.  Check name offset is within command.
+	(bfd_mach_o_read_dylib, bfd_mach_o_read_prebound_dylib),
+	(bfd_mach_o_read_prebind_cksum, bfd_mach_o_read_twolevel_hints),
+	(bfd_mach_o_read_fvmlib, bfd_mach_o_read_dysymtab),
+	(bfd_mach_o_read_symtab, bfd_mach_o_read_uuid),
+	(bfd_mach_o_read_linkedit, bfd_mach_o_read_str),
+	(bfd_mach_o_read_dyld_info, bfd_mach_o_read_version_min),
+	(bfd_mach_o_read_encryption_info, bfd_mach_o_read_source_version),
+	(bfd_mach_o_read_encryption_info_64, bfd_mach_o_read_main),
+	(bfd_mach_o_read_note, bfd_mach_o_read_build_version),
+	(bfd_mach_o_read_segment): Similarly.
+	(bfd_mach_o_read_thread): Properly bound check thread struct.
+	Don't repeat checks on second loop.
+	(bfd_mach_o_read_command): Fail on invalid command length.
 
-2018-06-24  Nick Clifton  <nickc@redhat.com>
+2020-01-04  Alan Modra  <amodra@gmail.com>
 
-	2.32 branch created.
+	* format.c (bfd_check_format_matches): Add preserve_match.
+	Save initial bfd state in "preserve", matched bfd state in
+	"preserve_match".  Save just the first match.  Release
+	bfd_alloc memory.  Restore and finish preserved state as
+	appropriate on all function exit paths.
 
-2019-01-16  Kito Cheng  <kito@andestech.com>
+2020-01-04  Alan Modra  <amodra@gmail.com>
 
-	* elf-attrs.c (vendor_obj_attr_size): Return 0 if size is 0 even
-	for OBJ_ATTR_PROC.
+	* mmo.c (mmo_mkobject): Allocate tdata with bfd_zalloc.
 
-2019-01-16  Kito Cheng  <kito@andestech.com>
-	    Nelson Chu  <nelson@andestech.com>
+2020-01-04  Alan Modra  <amodra@gmail.com>
 
-	* elfnn-riscv.c (in_subsets): New.
-	(out_subsets): Likewise.
-	(merged_subsets): Likewise.
-	(riscv_std_ext_p): Likewise.
-	(riscv_non_std_ext_p): Likewise.
-	(riscv_std_sv_ext_p): Likewise.
-	(riscv_non_std_sv_ext_p): Likewise.
-	(riscv_version_mismatch): Likewise.
-	(riscv_i_or_e_p): Likewise.
-	(riscv_merge_std_ext): Likewise.
-	(riscv_merge_non_std_and_sv_ext): Likewise.
-	(riscv_merge_arch_attr_info): Likewise.
-	(riscv_merge_attributes): Likewise.
-	(_bfd_riscv_elf_merge_private_bfd_data): Merge attribute.
-
-	* elfnn-riscv.c (riscv_elf_obj_attrs_arg_type): New.
-	(elf_backend_obj_attrs_vendor): Define.
-	(elf_backend_obj_attrs_section_type): Likewise.
-	(elf_backend_obj_attrs_section): Likewise.
-	(elf_backend_obj_attrs_arg_type): Define as
-	riscv_elf_obj_attrs_arg_type.
-	* elfxx-riscv.c (riscv_estimate_digit): New.
-	(riscv_estimate_arch_strlen1): Likewise.
-	(riscv_estimate_arch_strlen): Likewise.
-	(riscv_arch_str1): Likewise.
-	(riscv_arch_str): Likewise.
-	* elfxx-riscv.h (riscv_arch_str): Declare.
-
-2019-01-14  John Darrington <john@darrington.wattle.id.au>
-
-	* bfd-in2.h [BFD_RELOC_S12Z_OPR]: New reloc.
-	* libbfd.h: regen.
-	* elf32-s12z.c (eld_s12z_howto_table): R_S12Z_OPR takes non zero
-	source field.  (md_apply_fix): Apply final fix
-	to BFD_RELOC_S12Z_OPR.
-	* reloc.c[BFD_RELOC_S12Z_OPR]: New reloc.
+	* coffgen.c (coff_real_object_p): Free malloc'd memory on target
+	match too.
 
-2019-01-14  Maamoun Tarsha  <maamountk@hotmail.com>
+2020-01-03  Nick Clifton  <nickc@redhat.com>
 
-	PR 20113
-	* elf32-s390.c (allocate_dynrelocs): Update comment.
+	PR 25307
+	(bfd_pef_parse_function_stubs): Correct the test that ensures that
+	there is enough data remaining in the code buffer before
+	attempting to read a function stub.
 
-2019-01-09  Andrew Paprocki  <andrew@ishiboo.com>
+2020-01-03  Nick Clifton  <nickc@redhat.com>
 
-	* warning.m4: Adjust egrep pattern for non-GNU compilers.
-	* configure: Regenerate.
+	PR 25308
+	* elf-properties.c (_bfd_elf_convert_gnu_properties): Check the
+	return value from bfd_malloc.
+	* elf32-arm.c (bfd_elf32_arm_vfp11_fix_veneer_locations): Likewise.
+	(bfd_elf32_arm_stm32l4xx_fix_veneer_locations): Likewise.
+	(elf32_arm_filter_cmse_symbols): Likewise.
+	(elf32_arm_write_section): Likewise.
+	* mach-o.c (bfd_mach_o_core_fetch_environment): Likewise.
+	(bfd_mach_o_follow_dsym): Likewise.
+	* pef.c (bfd_pef_print_loader_section): Likewise.
+	(bfd_pef_scan_start_address): Likewise.
+	(bfd_pef_parse_function_stubs): Likewise.
+	(bfd_pef_parse_symbols): Likewise.
 
-2019-01-08  Alan Modra  <amodra@gmail.com>
+2020-01-03  Sergei Trofimovich  <siarheit@google.com>
 
-	PR 23699
-	PR 24065
-	* ihex.c (ihex_write_object_contents): Properly check 32-bit
-	address range.
+        * elfnn-ia64.c (elfNN_ia64_merge_private_bfd_data): don't fail
+        on binary inputs ld/PR25316.
+        (is_ia64_elf): new helper to filter on ia64 objects.
 
-2019-01-05  Yoshinori Sato <ysato@users.sourceforge.jp>
+2020-01-03  Jan Beulich  <jbeulich@suse.com>
 
-	* bfd/archures.c: Add bfd_mach_rx_v2 and bfd_mach_rx_v3.
-	* bfd/bfd-in2.h: Regenerate.
-	* bfd/cpu-rx.c (arch_info_struct): Add RXv2 and RXv3 entry.
-	* bfd/elf32-rx.c (elf32_rx_machine): Add RXv2 and RXv3 support.
+	* mach-o.c (cpusubtype, bfd_mach_o_header_p): Insert underscore
+	in parameter names.
+	(bfd_mach_o_scan): Insert underscore in two variable names.
 
-2019-01-04  Lifang Xia  <lifang_xia@c-sky.com>
+2020-01-02  Sergey Belyashov  <sergey.belyashov@gmail.com>
 
-	* config.bfd (csky-*-elf* | csky-*-linux*): Modify the csky
-	default target, little endian target is more suitable.
+	* Makefile.am: Add z80-elf target support.
+	* configure.ac: Likewise.
+	* targets.c: Likewise.
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
+	* config.bfd: Add z80-elf target support and new arches: ez80 and
+	z180.
+	* elf32-z80.c: New file.
+	* archures.c: Add new z80 architectures: eZ80 and Z180.
+	* coffcode.h: Likewise.
+	* cpu-z80.c: Likewise.
+	* coff-z80.c: Add new relocations for Z80 target and local label
+	check.
+	* reloc.c: Add new relocs.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Regenerate.
 
-2019-01-04  Alan Modra  <amodra@gmail.com>
+2020-01-02  Tamar Christina  <tamar.christina@arm.com>
 
-	PR 24061
-	PR 21786
-	* coff-rs6000.c (GET_VALUE_IN_FIELD): Add base parameter and
-	adjust all callers.
-	(EQ_VALUE_IN_FIELD): Likewise.
-	* coff64-rs6000.c (GET_VALUE_IN_FIELD): Likewise.
+	PR 25210
+	PR 24753
+	* elfnn-aarch64.c (_bfd_aarch64_create_stub_section): Set ELF class.
 
-2019-01-01  Alan Modra  <amodra@gmail.com>
+2020-01-01  Alan Modra  <amodra@gmail.com>
 
 	Update year range in copyright notice of all files.
 
-For older changes see ChangeLog-2018
+For older changes see ChangeLog-2019
 
-Copyright (C) 2019 Free Software Foundation, Inc.
+Copyright (C) 2020 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ChangeLog-2019 ./bfd/ChangeLog-2019
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ChangeLog-2019	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/ChangeLog-2019	2021-05-21 01:57:23.000000000 +0000
@@ -0,0 +1,3185 @@
+2019-12-31  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (_bfd_vms_slurp_eisd): Don't overflow when checking
+	offset.  Don't overflow when checking rec_size, and do allow
+	rec_size to the end of the buffer.  Ensure eisd->type can be
+	accessed, not just the first 32 bytes.  Don't call
+	_bfd_vms_save_counted_string with zero length remaining.  Fail
+	on empty string section name.
+	(_bfd_vms_slurp_egsd): Formatting.  Catch more reads past end
+	of record size.  Correct remaining length calculation.  Fail
+	on empty string section name.  Consolidate error paths.
+
+2019-12-30  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (alpha_vms_free_private): New function, extracted..
+	(vms_close_and_cleanup): ..from here.
+	(alpha_vms_object_p): Call alpha_vms_free_private on failure.
+
+2019-12-30  Alan Modra  <amodra@gmail.com>
+
+	* coffgen.c (coff_real_object_p): Free malloc'd memory on failure.
+
+2019-12-30  Alan Modra  <amodra@gmail.com>
+
+	* archive.c (do_slurp_bsd_armap): Use bfd_alloc rather than
+	bfd_zalloc when memory is all written after the call.
+	(do_slurp_coff_armap): Likewise.  Set bfd_error on ridiculously
+	large allocations that overflow bfd_size_type.  Use just one
+	bfd_release on error exit.
+	(_bfd_slurp_extended_name_table): Use bfd_alloc for extended_names,
+	clear last byte rather than the entire array.  Use bfd_alloc for
+	string table.  Rearrange and simplify code copying file names.
+
+2019-12-29  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (_bfd_vms_slurp_egsd): Make base_addr a bfd_vma.
+	Limit alignment power.  Correct and simplify alignment expression.
+	(evax_bfd_print_relocation_records): Avoid signed shift left.
+
+2019-12-29  Alan Modra  <amodra@gmail.com>
+
+	* vms-misc.c (_bfd_vms_save_sized_string): Add abfd param, make
+	size a size_t.  Use bfd_alloc rather than bfd_malloc.
+	(_bfd_vms_save_counted_string): Similarly.
+	* vms.h (_bfd_vms_save_sized_string): Update prototype.
+	(_bfd_vms_save_counted_string): Likewise.
+	* vms-alpha.c (_bfd_vms_slurp_ehdr): Adjust
+	_bfd_vms_save_counted_string and bfd_vms_save_sized_string calls.
+	(_bfd_vms_slurp_egsd, parse_module): Likewise.
+	(_bfd_vms_slurp_eisd): Likewise.  Check return status.
+	(alpha_vms_bfd_link_hash_table_free): New function.
+	(alpha_vms_bfd_link_hash_table_create): Arrange to call it.
+	(vms_close_and_cleanup): Free more memory.  Don't release tdata.
+
+2019-12-29  Alan Modra  <amodra@gmail.com>
+
+	* coffcode.h (coff_close_and_cleanup): Redefine to..
+	* coffgen.c (_bfd_coff_close_and_cleanup): ..this.  New function.
+	* libcoff-in.h (_bfd_coff_close_and_cleanup): Declare.
+	* libcoff.h: Regenerate.
+
+2019-12-29  Hannes Domani  <ssbssa@yahoo.de>
+	    Alan Modra  <amodra@gmail.com>
+
+	PR 15350
+	* bfd.c (bfd_update_compression_header): Write zlib header for
+	formats other than ELF too.
+
+2019-12-26  Alan Modra  <amodra@gmail.com>
+
+	* som.c (setup_sections): Don't overflow space_strings_size.  Use
+	bfd_malloc2 to catch overflow of size calculation.
+	(som_prep_for_fixups): Use bfd_zalloc2 to catch overflow of size
+	calculation.
+	(som_build_and_write_symbol_table): Similarly use bfd_zmalloc2.
+	(som_slurp_symbol_table): Similarly use bfd_zmalloc2, bfd_malloc2,
+	and bfd_zalloc2.
+	(bfd_som_attach_aux_hdr): Use size_t vars for string length.
+	(som_bfd_count_ar_symbols): Use bfd_malloc2 to catch overflow of
+	size calculation.  Use size_t vars for length and catch overflow.
+	(som_slurp_armap): Use bfd_alloc2 to catch overflow of size
+	calculation.
+	(som_bfd_ar_write_symbol_stuff): Similarly use bfd_zmalloc2 and
+	bfd_malloc2.  Perform size calculations in bfd_size_type.
+
+2019-12-26  Hannes Domani  <ssbssa@yahoo.de>
+
+	* peicode.h (pe_bfd_read_buildid): Free data.
+
+2019-12-23  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (add_symbol): Add "max" parameter.  Error on string
+	length larger than max.
+	(_bfd_vms_slurp_egsd): Ensure record is at least large enough to
+	read string length byte, error if not.  Pass size to add_symbol.
+	(_bfd_vms_slurp_etir): Don't read past end of buffer when reading
+	type and length.  Allow read of last byte in buffer.
+
+2019-12-23  Alan Modra  <amodra@gmail.com>
+
+	* wasm-module.c (wasm_read_leb128): Don't allow oversize shifts.
+	Catch value overflow.  Sign extend only on terminating byte.
+
+2019-12-20  Alan Modra  <amodra@gmail.com>
+
+	* xtensa-isa.c (xtensa_insnbuf_from_chars): Avoid signed overflow.
+
+2019-12-20  Alan Modra  <amodra@gmail.com>
+
+	* libhppa.h (hppa_field_adjust, bfd_hppa_insn2fmt): Delete forward
+	declaration.  Move ATTRIBUTE_UNUSED to definition.
+	(sign_extend, low_sign_extend, sign_unext, low_sign_unext),
+	(re_assemble_3, re_assemble_12, re_assemble_14, re_assemble_16),
+	(re_assemble_17, re_assemble_21, re_assemble_22): Likewise.  Make
+	args and return value unsigned.  Use unsigned variables.
+	(hppa_rebuild_insn): Similarly.
+
+2019-12-20  Alan Modra  <amodra@gmail.com>
+
+	* format.c (bfd_check_format_matches): Free matching_vector when
+	not returning matching target strings.
+
+2019-12-20  Alan Modra  <amodra@gmail.com>
+
+	* coff-alpha.c (alpha_ecoff_read_ar_hdr): Free ar_hdr on error return.
+
+2019-12-18  Alan Modra  <amodra@gmail.com>
+
+	* coff-rs6000.c (_bfd_xcoff_slurp_armap): Don't overflow when
+	checking symbol count against section size.  Guard against strlen
+	running off end of buffer by allocating one more byte and zeroing.
+	* coff64-rs6000.c (xcoff64_slurp_armap): Likewise.
+
+2019-12-18  Alan Modra  <amodra@gmail.com>
+
+	* elf32-ppc.c (ppc_elf_get_synthetic_symtab): Use size_t for vars.
+	* elf64-ppc.c (sym_exists_at): Use size_t for lo, hi and mid.
+
+2019-12-18  Alan Modra  <amodra@gmail.com>
+
+	* elf-bfd.h (ELF_LOCAL_SYMBOL_HASH): Avoid signed overflow.
+	* elf32-hppa.c (final_link_relocate): Likewise.
+	* elf32-ppc.c (_bfd_elf_ppc_at_tls_transform): Likewise.
+	(_bfd_elf_ppc_at_tprel_transform, is_insn_ds_form): Likewise.
+	(is_insn_dq_form, ppc_elf_relocate_section): Likewise.
+	* elf64-ppc.c (ok_lo_toc_insn, ppc64_elf_edit_toc): Likewise.
+	(ppc64_elf_relocate_section): Likewise.
+	* elfxx-mips.c (mips_elf_perform_relocation): Likewise.
+	* netbsd.h (N_SET_FLAGS): Likewise.
+
+2019-12-17  Alan Modra  <amodra@gmail.com>
+
+	* coff-tic80.c: Delete file.
+	* cpu-tic80.c: Delete file.
+	* archures.c: Remove tic80 support.
+	* coffcode.h: Likewise.
+	* coffswap.h: Likewise.
+	* targets.c: Likewise.
+	* config.bfd: Likewise.
+	* configure.ac: Likewise.
+	* Makefile.am: Likewise.
+	* Makefile.in: Regenerate.
+	* bfd-in2.h: Regenerate.
+	* configure: Regenerate.
+	* po/SRC-POTFILES.in: Regenerate.
+
+2019-12-13  Alan Modra  <amodra@gmail.com>
+
+	PR 25237
+	* elf.c: (assign_file_positions_for_load_sections): Attempt to
+	keep meaningless p_offset for PT_LOAD segments without file
+	contents within file size.
+
+2019-12-12  Alan Modra  <amodra@gmail.com>
+
+	* libbfd.c (bfd_get): Don't cast result of bfd_get_8.
+	* bfd-in2.h: Regenerate.
+
+2019-12-11  Alan Modra  <amodra@gmail.com>
+
+	* elf32-rx.c (elf32_rx_relax_section): Avoid signed overflow.
+	* libaout.h (N_SET_INFO, N_SET_FLAGS): Likewise.
+	* netbsd.h (write_object_contents): Likewise.
+	* elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Likewise.
+	* libhppa.h (HPPA_R_CONSTANT): Don't signed extend with shifts.
+	(stm32l4xx_create_replacing_stub_vldm): Don't truncate high bits
+	with shifts.
+	* elf32-nds32.h (R_NDS32_RELAX_ENTRY_DISABLE_RELAX_FLAG): Define
+	using 1u shifted left.  Ditto for other macros.
+	* mmo.c (LOP): Make unsigned.
+
+2019-12-11  Alan Modra  <amodra@gmail.com>
+
+	* libbfd.c (bfd_get_8): Return a bfd_vma.
+	(bfd_get_signed_8): Return a bfd_signed_vma.
+	* bfd-in2.h: Regenerate.
+
+2019-12-11  Alan Modra  <amodra@gmail.com>
+
+	* xtensa-modules.c (Field_* functions): Don't mask using shifts.
+	(Operand_soffsetx4_decode, Operand_simm4_decode),
+	(Operand_simm8_decode, Operand_simm8x256_decode),
+	(Operand_simm12b_decode, Operand_label8_decode),
+	(Operand_label12_decode, Operand_soffset_decode),
+	(Operand_xt_wbr15_label_decode, Operand_xt_wbr18_label_decode): Don't
+	sign extend using shifts.
+	(Operand_immrx4_decode, Operand_uimm16x4_decode): Avoid UB in
+	constant.
+
+2019-12-11  Alan Modra  <amodra@gmail.com>
+
+	* cpu-ia64-opc.c (ext_imms_scaled): Avoid undefined left shift
+	of negative values by using unsigned vars.
+
+2019-12-07  Alan Modra  <amodra@gmail.com>
+
+	PR 25236
+	* elflink.c (_bfd_elf_link_assign_sym_version): Assign versions
+	for ELF_COMMON_DEF_P symbols.
+	(elf_link_output_extsym, _bfd_elf_add_default_symbol): Adjust to
+	suit.
+
+2019-12-05  Sandra Loosemore  <sandra@codesourcery.com>
+
+	Only give FDE encoding warnings if --eh-frame-hdr was specified.
+
+	* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Make
+	FDE encoding warning conditional.
+
+2019-12-05  Nick Clifton  <nickc@redhat.com>
+
+	PR 25029
+	* peXXigen.c (_bfd_XXi_swap_aouthdr_out): Ignore empty sections
+	when computing the sizes stored in the headers.
+
+2019-12-03  Alan Modra  <amodra@gmail.com>
+
+	PR 25230
+	* dwarf2.c (struct dwarf2_debug_file): Add line_table and
+	abbrev_offsets.
+	(struct abbrev_offset_entry): New.
+	(hash_abbrev, eq_abbrev, del_abbrev): New functions.
+	(read_abbrevs): Check whether we have already read abbrevs at
+	given offset, and add new offset/abbrev to hash table.
+	(decode_line_info): Keep line table at offset zero in file struct.
+	Return this for a cu reusing the same dir/file list.
+	(find_abstract_instance): Find cu for DW_FORM_GNU_ref_alt.
+	(_bfd_dwarf2_slurp_debug_info): Create offset/abbrev hash tables.
+	(_bfd_dwarf2_cleanup_debug_info): Adjust deletion of lines and
+	abbrevs.
+
+2019-12-03  Alan Modra  <amodra@gmail.com>
+
+	PR 25230
+	* dwarf2.c (struct dwarf2_debug_file): New struct.
+	(struct dwarf2_debug): Delete fields now in dwarf2_debug_file.
+	Add f, alt fields.
+	(struct comp_unit): Add file field.
+	(read_indirect_string, read_indirect_line_string): Adjust to suit.
+	(read_alt_indirect_string, read_alt_indirect_ref): Likewise.
+	(read_debug_ranges, find_abstract_instance, read_rangelist): Likewise.
+	(_bfd_dwarf2_stash_syms, place_sections): Likewise.
+	(stash_maybe_update_info_hash_tablse): Likewise.
+	(stash_verify_info_hash_table): Likewise.
+	(_bfd_dwarf2_slurp_debug_info): Likewise.
+	(_bfd_dwarf2_find_symbol_bias): Likewise.
+	(_bfd_dwarf2_find_nearest_line): Likewise.
+	(_bfd_dwarf2_cleanup_debug_info): Likewise.
+	(read_abbrevs): Add file param and adjust.  Update calls.
+	(stash_comp_unit): Likewise.
+	(decode_line_info): Delete stash param and adjust.  Update calls.
+	(comp_unit_find_nearest_line): Likewise.
+	(comp_unit_maybe_decode_line_info): Likewise.
+	(comp_unit_find_line): Likewise.
+	(parse_comp_unit): Add file and info_ptr param and adjust.  Update
+	calls.
+
+2019-12-03  Alan Modra  <amodra@gmail.com>
+
+	* dwarf2.c (read_indirect_string): Don't duplicate offset check
+	done in read_section.
+	(read_indirect_line_string): Likewise.
+	(read_alt_indirect_string): Likewise.
+	(read_alt_indirect_ref): Likewise.
+	(read_abbrevs): Likewise.  Free memory on all failure paths.
+	Use correct unsigned type for pointer difference comparison.
+
+2019-12-03  Alan Modra  <amodra@gmail.com>
+
+	* dwarf2.c (struct dwarf2_debug): Update comments.  Remove sec
+	and sec_info_ptr.
+	(_bfd_dwarf2_slurp_debug_info): Don't set sec or sec_info_ptr.
+	(stash_comp_unit): Likewise.
+	(read_alt_indirect_ref): Return NULL not FALSE.
+
+2019-12-03  Alan Modra  <amodra@gmail.com>
+
+	* dwarf2.c (_bfd_dwarf2_find_nearest_line): Correct function comment.
+
+2019-11-27  Alan Modra  <amodra@gmail.com>
+
+	PR 23652
+	* 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
+	bfd_arch_mach_octets_per_byte.
+	* coff-arm.c (OCTETS_PER_BYTE): Define.
+	(coff_arm_reloc): Introduce new "octets" temp.  Use OCTETS_PER_BYTE
+	with section.  Correct "addr".  Remove ATTRIBUTE_UNUSED.
+	* coff-i386.c (coff_i386_reloc): Similarly.
+	* coff-mips.c (mips_reflo_reloc): Similarly.
+	* coff-x86_64.c (coff_amd64_reloc): Similarly.
+	* elf32-msp430.c (OCTETS_PER_BYTE): Define.
+	(rl78_sym_diff_handler): Use OCTETS_PER_BYTE, with section.
+	* elf32-nds32.c (nds32_elf_get_relocated_section_contents): Similarly.
+	* elf32-ppc.c (ppc_elf_addr16_ha_reloc): Similarly.
+	* elf32-pru.c (pru_elf32_do_ldi32_relocate): Similarly.
+	* elf32-s12z.c (opru18_reloc): Similarly.
+	* elf32-sh.c (sh_elf_reloc): Similarly.
+	* elf32-spu.c (spu_elf_rel9): Similarly.
+	* elf32-xtensa.c (bfd_elf_xtensa_reloc): Similarly.
+	* elf64-ppc.c (ppc64_elf_ha_reloc, ppc64_elf_brtaken_reloc),
+	(ppc64_elf_toc64_reloc): Similarly.
+	* bfd.c (bfd_get_section_limit): Pass section to bfd_octets_per_byte.
+	* cofflink.c (_bfd_coff_link_input_bfd),
+	(_bfd_coff_reloc_link_order): Likewise.
+	* elf.c (_bfd_elf_section_offset): Likewise.
+	* elflink.c (resolve_section, bfd_elf_perform_complex_relocation),
+	(elf_link_input_bfd, elf_reloc_link_order, elf_fixup_link_order),
+	(bfd_elf_final_link): Likewise.
+	* elf.c (_bfd_elf_make_section_from_shdr): Don't strncmp twice
+	to set SEC_ELF_OCTETS.
+	* reloc.c (bfd_perform_relocation): Tidy SEC_ELF_OCTETS special case.
+	(bfd_install_relocation): Likewise.
+	(_bfd_final_link_relocate): Don't recalculate octets.
+	* syms.c (_bfd_stab_section_find_nearest_line): Introduc new
+	"octets" temp.
+	* bfd-in2.h: Regenerate.
+
+2019-11-25  Christian Eggers  <ceggers@gmx.de>
+
+	* section.c (struct bfd_section): New flag SEC_ELF_OCTETS.
+	* archures.c (bfd_octets_per_byte): New parameter sec.
+	If section is not NULL and SEC_ELF_OCTETS is set, one octet es
+	returned [ELF targets only].
+	* bfd.c (bfd_get_section_limit): Provide section parameter to
+	bfd_octets_per_byte.
+	* bfd-in2.h: regenerate.
+	* binary.c (binary_set_section_contents): Move call to
+	bfd_octets_per_byte into section loop. Provide section parameter
+	to bfd_octets_per_byte.
+	* coff-arm.c (coff_arm_reloc): Provide section parameter
+	to bfd_octets_per_byte.
+	* coff-i386.c (coff_i386_reloc): likewise.
+	* coff-mips.c (mips_reflo_reloc): likewise.
+	* coff-x86_64.c (coff_amd64_reloc): likewise.
+	* cofflink.c (_bfd_coff_link_input_bfd): likewise.
+	(_bfd_coff_reloc_link_order): likewise.
+	* elf.c (_bfd_elf_section_offset): likewise.
+	(_bfd_elf_make_section_from_shdr): likewise.
+	Set SEC_ELF_OCTETS for sections with names .gnu.build.attributes,
+	.debug*, .zdebug* and .note.gnu*.
+	* elf32-msp430.c (rl78_sym_diff_handler): Provide section parameter
+	to bfd_octets_per_byte.
+	* elf32-nds.c (nds32_elf_get_relocated_section_contents): likewise.
+	* elf32-ppc.c (ppc_elf_addr16_ha_reloc): likewise.
+	* elf32-pru.c (pru_elf32_do_ldi32_relocate): likewise.
+	* elf32-s12z.c (opru18_reloc): likewise.
+	* elf32-sh.c (sh_elf_reloc): likewise.
+	* elf32-spu.c (spu_elf_rel9): likewise.
+	* elf32-xtensa.c (bfd_elf_xtensa_reloc): likewise
+	* elf64-ppc.c (ppc64_elf_brtaken_reloc): likewise.
+	(ppc64_elf_addr16_ha_reloc): likewise.
+	(ppc64_elf_toc64_reloc): likewise.
+	* elflink.c (bfd_elf_final_link): likewise.
+	(bfd_elf_perform_complex_relocation): likewise.
+	(elf_fixup_link_order): likewise.
+	(elf_link_input_bfd): likewise.
+	(elf_link_sort_relocs): likewise.
+	(elf_reloc_link_order): likewise.
+	(resolve_section): likewise.
+	* linker.c (_bfd_generic_reloc_link_order): likewise.
+	(bfd_generic_define_common_symbol): likewise.
+	(default_data_link_order): likewise.
+	(default_indirect_link_order): likewise.
+	* srec.c (srec_set_section_contents): likewise.
+	(srec_write_section): likewise.
+	* syms.c (_bfd_stab_section_find_nearest_line): likewise.
+	* reloc.c (_bfd_final_link_relocate): likewise.
+	(bfd_generic_get_relocated_section_contents): likewise.
+	(bfd_install_relocation): likewise.
+	For section which have SEC_ELF_OCTETS set, multiply output_base
+	and output_offset with bfd_octets_per_byte.
+	(bfd_perform_relocation): likewise.
+
+2019-11-21  Alan Modra  <amodra@gmail.com>
+
+	* elf32-arm.c (elf32_arm_size_stubs): Exclude dynamic library
+	BFDs that have not been loaded.
+
+2019-11-19  Alan Modra  <amodra@gmail.com>
+
+	PR 25197
+	* coffgen.c (coff_find_nearest_line_with_names): Check that C_FILE
+	u.syment.n_value does point at another C_FILE sym and not into
+	some auxent that happens to look like a C_FILE.  Properly check
+	for integer overflow and avoid possible pointer wrap-around.
+	Simplify pr17512 checks.
+
+2019-11-19  Alan Modra  <amodra@gmail.com>
+
+	PR 25200
+	* reloc.c (bfd_default_reloc_type_lookup): Don't BFD_FAIL.
+	* elf.c (_bfd_elf_validate_reloc): Don't segfault on NULL howto.
+
+2019-11-18  Alan Modra  <amodra@gmail.com>
+
+	* elf-bfd.h (struct elf_backend_data <elf_backend_init_file_header>):
+	Rename from elf_backend_post_process_headers.
+	(_bfd_elf_post_process_headers): Delete.
+	(_bfd_elf_init_file_header): Declare.
+	* elf.c (_bfd_elf_compute_section_file_positions): Call new function
+	in place of prep_headers and elf_backend_post_process_headers.
+	(_bfd_elf_init_file_header): Renamed from prep_headers with
+	updated args and made global.  Delete dead code.
+	(_bfd_elf_post_process_headers): Delete.
+	* elf32-arm.c (elf32_arm_init_file_header): Rename from
+	elf32_arm_post_process_headers and call _bfd_elf_init_file_header.
+	Return status.
+	(elf_backend_init_file_header): Define.
+	(elf_backend_post_process_headers): Don't define.
+	* elf32-i386.c (elf_i386_fbsd_init_file_header): Similarly.
+	* elf32-m68hc1x.c (elf32_m68hc11_init_file_header): Similarly.
+	* elf32-metag.c (elf_metag_init_file_header): Similarly.
+	* elf32-spu.c (spu_elf_init_file_header
+	* elf32-visium.c (visium_elf_init_file_header
+	* elf64-alpha.c (elf64_alpha_fbsd_init_file_header
+	* elf64-hppa.c (elf64_hppa_init_file_header
+	* elf64-ia64-vms.c (elf64_vms_init_file_header
+	* elfnn-aarch64.c (elfNN_aarch64_init_file_header
+	* elfnn-ia64.c (elfNN_hpux_init_file_header
+	* elfxx-mips.c (_bfd_mips_init_file_header
+	* elfxx-mips.h (_bfd_mips_post_process_headers): Delete.
+	(_bfd_mips_init_file_header): Declare.
+	(elf_backend_post_process_headers): Delete.
+	(elf_backend_init_file_header): Define.
+	* elfxx-target.h (elf_backend_post_process_headers): Delete.
+	(elf_backend_init_file_header): Define and use.
+	* elf32-m68hc12.c (elf_backend_init_file_header): Define.
+	(elf_backend_post_process_headers): Don't define.
+	* elf32-m68hc1x.h (elf32_m68hc11_post_process_headers): Delete.
+	(elf32_m68hc11_init_file_header): Declare.
+	* elf32-ppc.c (elf_backend_post_process_headers): Remove
+	unnecessary undef.
+
+2019-11-18  Alan Modra  <amodra@gmail.com>
+
+	* elf-bfd.h (struct elf_backend_data <elf_backend_modify_headers>):
+	Rename from elf_backend_modify_program_headers.
+	(_bfd_elf_modify_headers): Declare.
+	* elf.c (assign_file_positions_except_relocs): Set
+	elf_program_header_size.  Always call elf_backend_modify_headers.
+	Extract code modifying file header..
+	(_bfd_elf_modify_headers): ..to here.  New function.
+	* elf32-arm.c (elf_backend_modify_headers): Renamed from
+	elf_backend_modify_program_headers.
+	* elf32-i386.c: Similarly.
+	* elf64-x86-64.c: Similarly.
+	* elfxx-target.h: Similarly.  Default elf_backend_modify_headers
+	to _bfd_elf_modify_headers.
+	* elf-nacl.h (nacl_modify_headers): Rename from
+	nacl_modify_program_headers.
+	* elf-nacl.c (nacl_modify_headers): Rename from
+	nacl_modify_program_headers and call _bfd_elf_modify_headers.
+	* elf32-rx.c (elf32_rx_modify_headers): Similarly.
+	* elf32-spu.c (spu_elf_modify_headers): Similarly.
+	* elfnn-ia64.c (elfNN_ia64_modify_headers): Similarly.
+	* elf32-sh.c (elf_backend_modify_program_headers): Don't undef.
+
+2019-11-18  Alan Modra  <amodra@gmail.com>
+
+	PR 25196
+	* bfd.c (bfd_error_type): Add bfd_error_sorry.
+	(bfd_errmsgs): Likewise.
+	* elf.c (rewrite_elf_program_header): Don't abort on confused
+	lma/alignment.  Replace bfd_error_bad_value with bfd_error_sorry.
+	(_bfd_elf_validate_reloc): Use bfd_error_sorry.
+	(_bfd_elf_final_write_processing): Likewise.
+	* bfd-in2.h: Regenerate.
+
+2019-11-12  Jim Wilson  <jimw@sifive.com>
+
+	PR 25181
+	* elfnn-riscv.c (_bfd_riscv_relax_call): Always add max_alignment to
+	foff.  If sym_sec->output_section and sec->output_section are the same
+	and not *ABS* then set max_alignment to that section's alignment.
+
+2019-11-07  Alan Modra  <amodra@gmail.com>
+
+	* cpu-cr16c.c: Delete.
+	* elf32-cr16c.c: Delete.
+	* Makefile.am,
+	* archures.c,
+	* config.bfd,
+	* configure.ac,
+	* reloc.c,
+	* targets.c: Remove cr16c support.
+	* Makefile.in,
+	* bfd-in2.h,
+	* configure,
+	* libbfd.h,
+	* po/SRC-POTFILES.in: Regenerate.
+
+2019-11-05  Tim RÃ¼hsen  <tim.ruehsen@gmx.de>
+
+	* doc/chew.c (add_to_definition): Use correct type when
+	calculating size of array reallocation.
+	(nextword): Always initialise the word return parameter.
+	(compile): Check return value of nextword().
+
+2019-10-30  Keith Seitz  <keiths@redhat.com>
+
+	* elf-bfd.h (elf_backend_data) <elf_backend_core_find_build_id>:
+	New field.
+	(_bfd_elf32_core_find_build_id, _bfd_elf64_core_find_build_id):
+	New functions.
+	(elf_read_notes): Add declaration.
+	* elf.c (elf_read_notes): Move elf-bfd.h.
+	(_bfd_elf_core_find_build_id): New function.
+	(bfd_section_from_phdr): Scan core file PT_LOAD segments for
+	build-id if none is known.
+	(elf_parse_notes): For core files, scan for notes.
+	* elfcore.h (elf_core_file_matches_executable_p): If both
+	BFDs have identical build-ids, then they match.
+	(_bfd_elf_core_find_build_id): New function.
+	* elfxx-target.h (elf_backend_core_find_build_id): Define.
+	(elfNN_bed): Add elf_backend_core_find_build_id.
+
+2019-10-29  Andrew Eikum  <aeikum@codeweavers.com>
+
+	* libcoff-in.h (struct pe_tdata): Add dos_message field.
+	* libcoff.h: Regenerate.
+	* peXXigen.c (_bfd_XXi_only_swap_filehdr_out): Copy the
+	dos_message field rather than initialising it.
+	(_bfd_XX_bfd_copy_private_bfd_data_common): Copy the dos_message
+	field.
+	* peicode.h (pe_mkobject): Initialise the dos_message field.
+	(pe_mkobject_hook): Copy the dos_message field.
+	(pe_bfd_object_p): Copy the dos_message field.
+
+2019-10-25  Alan Modra  <amodra@gmail.com>
+
+	PR 4499
+	* elf-nacl.c (nacl_modify_segment_map): Set no_sort_lma for all
+	PT_LOAD segments.
+	* elf32-spu.c (spu_elf_modify_segment_map): Likewise on overlay
+	PT_LOAD segments.
+	* elf.c (elf_sort_segments): New function.
+	(assign_file_positions_except_relocs): Use shortcuts to elfheader
+	and elf_tdata.  Seek to e_phoff not sizeof_ehdr to write program
+	headers.  Move PT_PHDR check..
+	(assign_file_positions_for_non_load_sections): ..and code setting
+	PT_PHDR p_vaddr and p_paddr, and code setting __ehdr_start value..
+	(assign_file_positions_for_load_sections): ..to here.  Sort
+	PT_LOAD headers.  Delete header_pad code.  Use actual number of
+	headers rather than allocated in calculating size for program
+	headers.  Don't assume program headers follow ELF file header.
+	Simplify pt_load_count code.  Only set "off" for PT_LOAD or
+	PT_NOTE in cores.
+	(rewrite_elf_program_header): Set p_vaddr_offset for segments
+	that include file and program headers.
+	(copy_elf_program_header): Likewise, replacing header_size code.
+
+2019-10-21  Alan Modra  <amodra@gmail.com>
+
+	PR 452
+	* archive.c (normalize): Return file unchanged when
+	BFD_ARCHIVE_FULL_PATH.
+	(_bfd_construct_extended_name_table): Pass abfd, the output
+	bfd, to normalize.
+	(_bfd_archive_bsd44_construct_extended_name_table): Likewise.
+	* bfd.c (struct bfd): Make flags a full flagword.
+	(BFD_ARCHIVE_FULL_PATH): Define.
+	* bfd-in2.h: Regenerate.
+
+2019-10-20  John David Anglin  <danglin@gcc.gnu.org>
+
+	* elf32-hppa.c (elf32_hppa_size_dynamic_sections): Provide 8-byte
+	minimum alignment for .plt section.
+
+2019-10-19  John David Anglin  <danglin@gcc.gnu.org>
+
+	* elf32-hppa.c: Revise import stub sequences.
+	(LONG_BRANCH_STUB_SIZE): Define.
+	(LONG_BRANCH_SHARED_STUB_SIZE): Define.
+	(IMPORT_STUB_SIZE): Define.
+	(IMPORT_SHARED_STUB_SIZE): Define.
+	(EXPORT_STUB_SIZE): Define.
+	(plt_stub): Revise to not use register %r22.
+	(LDO_R1_R22): Define.
+	(LDW_R22_R21): Define.
+	(LDW_R22_R19): Define.
+	(hppa_build_one_stub): Update stub generation and use new defines.
+	(hppa_size_one_stub): Likewise.
+
+2019-10-17  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_elf_relocate_section): Report the error message
+	that user should recompile their code with `fPIC` when linking non-pic
+	code into shared library.
+
+	* elfnn-riscv.c (riscv_elf_relocate_section): Use asprintf to extend
+	the error message if needed, and then store the result into the
+	`msg_buf`.  Finally, remember to free the unused `msg_buf`.  All error
+	message for the dangerous relocation should be set before we call the
+	callback function.  If we miss the error message since linker runs out
+	of memory, we should set the default error message for the error.
+
+2019-10-16  Alan Modra  <amodra@gmail.com>
+
+	PR 13616
+	* cpu-powerpc.c (bfd_arch_ppc_nop_fill): New function, use it
+	for all ppc arch info.
+	* linker.c (default_data_link_order): Pass info->big_endian to
+	arch_info->fill function.
+
+2019-10-15  Alan Modra  <amodra@gmail.com>
+
+	* elf32-m68hc1x.c (reloc_warning): Add printf attribute.
+	(elf32_m68hc11_relocate_section): Don't use a variable for format
+	strings.  Delete some unnecessary xgettext:c-format comments.
+
+2019-10-15  Alan Modra  <amodra@gmail.com>
+
+	PR 24955
+	* elf32-arm.c (set_cmse_veneer_addr_from_implib): Use bfd_malloc
+	rather than xmalloc.
+	* elf32-m68hc1x.c (reloc_warning): New function.
+	(elf32_m68hc11_relocate_section): Use it here.  Cast bfd_vma values
+	corresponding to %lx in format strings.
+	* elf32-nds32.c (nds32_insertion_sort): Use a stack temporary.
+
+2019-10-15  Alan Modra  <amodra@gmail.com>
+
+	PR 25100
+	* elf64-ppc.c (sfpr_define): Delete dead code that triggered a warning.
+
+2019-10-15  Alan Modra  <amodra@gmail.com>
+
+	* bfd.c (bfd_check_compression_header): Check for powers of two
+	with x == (x & -x).
+
+2019-10-14  Alan Modra  <amodra@gmail.com>
+
+	* syms.c (struct indexentry): Add idx field.
+	(cmpindexentry): Final sort on idx.
+	(_bfd_stab_section_find_nearest_line): Set idx.
+
+2019-10-14  Alan Modra  <amodra@gmail.com>
+
+	* dwarf2.c (struct lookup_funcinfo): Add idx field.
+	(compare_lookup_funcinfos): Perform final sort on idx.
+	(build_lookup_funcinfo_table): Set idx.
+	(compare_sequences): Perform final sort on num_lines.
+	(build_line_info_table): Set num_lines and line_info_lookup earlier.
+	(sort_line_sequences): Set num_lines for sort.
+
+2019-10-14  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (elf_sort_symbol): Sort on type and name as well.
+	(elf_link_add_object_symbols): Style fix.
+
+2019-10-14  Alan Modra  <amodra@gmail.com>
+
+	* elf.c (_bfd_elf_map_sections_to_segments): Init target_index
+	for sections about to be sorted.
+	(assign_file_positions_for_load_sections): Likewise.
+	(elf_sort_sections): Don't bother optimising both TOEND case.
+	* elflink.c (bfd_elf_final_link): Reset target_index.
+
+2019-10-14  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (elf_get_linked_section_vma): Delete.
+	(compare_link_order): Use elf_linked_to_section and sort by lma,
+	size, and id.
+	(elf_fixup_link_order): Use size_t variables where appropriate.
+	Make use of elf_linked_to_section.  Formatting.  Properly align
+	sections.
+
+2019-10-14  Alan Modra  <amodra@gmail.com>
+
+	* elf-strtab.c (strrevcmp): Comment.
+	* merge.c (strrevcmp): Likewise.
+	* elf64-ppc.c (compare_symbols): Correct final pointer comparison.
+	Comment on why comparing pointers ensures a stable sort.
+	* elflink.c (struct elf_symbol): Add void* to union.
+	(elf_sort_elf_symbol): Ensure a stable sort with pointer comparison.
+	(elf_sym_name_compare): Likewise.
+	(bfd_elf_match_symbols_in_sections): Style fix.
+	(elf_link_sort_cmp1): Comment.
+
+2019-10-14  Alan Modra  <amodra@gmail.com>
+
+	PR 24955
+	* elflink.c (elf_output_implib): Don't use xmalloc.  Don't ignore
+	return value of bfd_alloc2.
+	* peXXigen.c (_bfd_XXi_write_codeview_record): Don't use xmalloc.
+	* pef.c (bfd_pef_print_symbol): Likewise.  Don't ignore return
+	value of bfd_get_section_contents.
+	* som.c (som_write_space_strings): Don't use xmalloc.
+	(som_write_symbol_strings): Likewise.
+
+2019-10-11  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* dwarf2.c (stash_maybe_enable_info_hash_tables): Only set
+	stash->info_hash_status = STASH_INFO_HASH_ON when
+	stash_maybe_update_info_hash_tables succeeds.
+
+2019-10-09  Alan Modra  <amodra@gmail.com>
+
+	PR 25070
+	* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Catch overflow of
+	total_size calculation.
+
+2019-10-08  Alan Modra  <amodra@gmail.com>
+
+	PR 25078
+	* dwarf2.c (find_abstract_instance): Delete orig_info_ptr, add
+	recur_count.  Error on recur_count reaching 100 rather than
+	info_ptr matching orig_info_ptr.  Adjust calls.
+
+2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* elf32-msp430.c (elf32_msp430_merge_mspabi_attributes): Rename to..
+	(elf32_msp430_merge_msp430_attributes): Add support for merging
+	the GNU object attribute for data region.
+
+2019-10-07  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_size_dynamic_sections): Do allocate
+	space for local got non-tls relocs when PIE.
+
+2019-10-07  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (elf_fixup_link_order): Don't attempt to find
+	an elf_section for linker created bfd sections.
+
+2019-10-07  Alan Modra  <amodra@gmail.com>
+
+	* elf32-ppc.c (ppc_elf_tls_optimize): Don't process R_PPC_TLSLD
+	with non-local symbol.  Don't double count __tls_get_addr calls
+	with marker relocs.
+	* elf64-ppc.c (ppc64_elf_tls_optimize): Likewise.
+
+2019-10-07  Alan Modra  <amodra@gmail.com>
+
+	* elf32-ppc.c (nomark_tls_get_addr): Rename from has_tls_get_addr_call
+	throughout.
+	* elf64-ppc.c (nomark_tls_get_addr): Likewise.
+
+2019-10-04  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_check_relocs): Move initialisation of vars.
+	(ppc64_elf_tls_optimize): Correct is_local condition.
+	(allocate_got): Don't reserve dynamic relocations for any of the
+	tls got relocs in PIEs when the symbol is local.
+	(allocate_dynrelocs): Correct validity test for local sym using
+	tlsld_got slot.
+	(ppc64_elf_size_dynamic_sections): Don't reserve dynamic relocations
+	for any of the tls got relocs in PIEs.
+	(ppc64_elf_layout_multitoc): Likewise.
+	(ppc64_elf_relocate_section): Correct validity test for local sym
+	using tlsld_got slot.  Don't emit dynamic relocations for any of
+	the tls got relocs in PIEs when the symbol is local.
+	* elf32-ppc.c (ppc_elf_tls_optimize): Correct is_local condition.
+	(got_relocs_needed): Delete.
+	(allocate_dynrelocs): Correct validity test for local sym using
+	tlsld_got slot.  Don't reserve dynamic relocations for any of the
+	tls got relocs in PIEs when the symbol is local.
+	(ppc_elf_size_dynamic_sections): Don't reserve dynamic relocations
+	for any of the tls got relocs in PIEs.
+	(ppc_elf_relocate_section): Correct validity test for local sym
+	using tlsld_got slot.  Don't emit dynamic relocations for any of
+	the tls got relocs in PIEs when the symbol is local.
+
+2019-10-04  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	PR ld/22263
+	PR ld/25056
+	* elf32-arm.c (elf32_arm_tls_transition): Use bfd_link_dll instead of
+	bfd_link_pic for TLS checks.
+	(elf32_arm_final_link_relocate): Likewise.
+	(allocate_dynrelocs_for_symbol): Likewise.
+
+2019-10-04  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	PR ld/25062
+	* elf32-arm.c (elf32_arm_final_link_relocate): Sign extend data.
+
+2019-09-30  Nick Alcock  <nick.alcock@oracle.com>
+
+	* elf-bfd.h (bfd_section_is_ctf): New inline function.
+	* elf.c (special_sections_c): Add ".ctf".
+	(assign_file_positions_for_non_load_sections): Note that
+	compressed debugging sections etc are not assigned here.  Treat
+	CTF sections like SEC_ELF_COMPRESS sections when is_linker_output:
+	sh_offset -1.
+	(assign_file_positions_except_relocs): Likewise.
+	(find_section_in_list): Note that debugging and CTF sections, as
+	well as reloc sections, are assigned later.
+	(_bfd_elf_assign_file_positions_for_non_load): CTF sections get
+	their size and contents updated.
+	(_bfd_elf_set_section_contents): Skip CTF sections: unlike
+	compressed sections, they have no uncompressed content to copy at
+	this stage.
+	* elflink.c (elf_link_swap_symbols_out): Call the examine_strtab
+	callback right before the strtab is written out.
+	(bfd_elf_final_link): Don't cache the section contents of CTF
+	sections: they are not populated yet.  Call the emit_ctf callback
+	right at the end, after all the symbols and strings are flushed
+	out.
+
+2019-07-13  Nick Alcock  <nick.alcock@oracle.com>
+
+	* elf-strtab.c (_bfd_elf_strtab_len): New.
+	(_bfd_elf_strtab_str): Likewise.
+	* bfd-elf.h: Declare them.
+
+2019-07-13  Nick Alcock  <nick.alcock@oracle.com>
+
+	* elf-bfd.h (bfd_elf_get_str_section): Add.
+	* elf.c (bfd_elf_get_str_section): No longer static.
+
+2019-09-26  Alan Modra  <amodra@gmail.com>
+
+	PR 24262
+	* Makefile.am (AM_CPPFLAGS): Add -DLIBDIR.
+	* plugin.c (load_plugin): Search both ${libdir}/bfd-plugins and
+	${bindir}/../lib/bfd-plugins if different.
+	* Makefile.in: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_check_relocs): Use bfd_link_executable
+	in choosing between different actions for shared library and
+	non-shared library cases.  Delete ELIMINATE_COPY_RELOCS test.
+	(dec_dynrel_count): Likewise.  Account for ifunc special case.
+	(ppc64_elf_adjust_dynamic_symbol): Copy relocs are for executables,
+	not non-pic.
+	(allocate_dynrelocs): Comment fixes.  Delete ELIMINATE_COPY_RELOCS
+	test.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* Makefile.am (SOURCE_HFILES): Add many missing .h files.
+	* Makefile.in: Regenerate.
+	* po/SRC-POTFILES.in: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_symbol, bfd_section_already_linked),
+	(bfd_elf_version_tree): Delete forward declarations.
+	Move other forward decls and remaining elf function decl later.
+	(bfd_section_already_linked_table_init),
+	(bfd_section_already_linked_table_free),
+	(_bfd_handle_already_linked, _bfd_nearby_section),
+	(_bfd_fix_excluded_sec_syms): Move to bfdlink.h.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move ecoff function declarations..
+	* ecoff-bfd.h: ..to here, new file.
+	* ecoff.c: Include ecoff-bfd.h.
+	* ecofflink.c: Likewise.
+	* elf64-alpha.c: Likewise.
+	* elfxx-mips.c: Likewise.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (enum notice_asneeded_action): Move to bfdlink.h.
+	Move most other elf declarations..
+	* elf-bfd.h: ..to here.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move m68k function declaration..
+	* cpu-m68k.h: ..to here, new file..
+	* elf32-m68k.h: ..and here, new file.
+	* elf32-m68k.c: Include cpu-m68k.h and elf32-m68k.h.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move bfin function declaration..
+	* elf32-bfin.h: ..to here, new file.
+	* elf32-bfin.c: Include elf32-bfin.h.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move cr16 function declaration..
+	* elf32-cr16.h: ..to here, new file.
+	* elf32-cr16.c: Include elf32-cr16.h.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_sunos_get_needed_list),
+	(bfd_sunos_record_link_assignment),
+	(bfd_sunos_size_dynamic_sections),
+	(bfd_i386linux_size_dynamic_sections),
+	(bfd_sparclinux_size_dynamic_sections): Delete obsolete decls.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move xcoff function declarations..
+	* xcofflink.h: ..to here, new file.
+	* xcofflink.c: Include xcofflink.h.
+	* coff-rs6000.c (bfd_xcoff_ar_archive_set_magic): Delete unused func.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Delete coff forward refs and move coff declaration..
+	* coff-bfd.h: ..to here.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move arm declaraions..
+	* cpu-arm.h: ..to here, new file..
+	* coff-arm.h: ..and here, new file..
+	* elf32-arm.h: ..and here, new file.
+	* cpu-arm.c: Include cpu-arm.h.
+	* coff-arm.c: Include cpu-arm.h and coff-arm.h.
+	* elf32-arm.c: Include cpu-arm.h and elf32-arm.h.
+	* pe-arm.c: Move function rename defines later.
+	* pe-arm-wince.c: Likewise and include sysdep.h and bfd.h early.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move tic6x function declaration..
+	* elf32-tic6x.h: ..to here.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move aarch64 declarations and defines..
+	* cpu-aarch64.h: ..to here, new file..
+	* elfxx-aarch64.h: ..and here.
+	* cpu-aarch64.c: Include cpu-aarch64.h.
+	* elfnn-aarch64.c: Likewise.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Delete ticoff function declarations.
+	* coff-tic54x.c (bfd_ticoff_set_section_load_page),
+	(bfd_ticoff_get_section_load_page): Make static.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move h8300 function declaration to..
+	* cpu-h8300.h: ..here, new file.
+	* cpu-h8300.c: Include cpu-h8300.h.
+	* elf32-h8300.c: Likewise.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move ia64 function declarations..
+	* elfxx-ia64.h: ..to here.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move v850 function declarations..
+	* elf32-v850.h: ..to here, new file.
+	* elf32-v850.c: Include elf32-v850.h.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move mips function declaration to..
+	* elfxx-mips.h: ..here.
+	* bfd-in2.h: Regenerate.
+
+2019-09-23  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h: Move csky function declarations to..
+	* elf32-csky.h: ..here, new file.
+	* elf32-csky.c: Include elf32-csky.h.
+	* bfd-in2.h: Regenerate.
+
+2019-09-20  Nelson Chu <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_pcgp_hi_reloc): Add new field undefined_weak.
+	(riscv_record_pcgp_hi_reloc): New parameter undefined_weak.
+	Set undefined_weak field from it.
+	(relax_func_t): New parameter undefined_weak.
+	(_bfd_riscv_relax_call): New ignored parameter undefined_weak.
+	(_bfd_riscv_relax_tls_le): Likewise.
+	(_bfd_riscv_relax_align): Likewise.
+	(_bfd_riscv_relax_delete): Likewise.
+	(_bfd_riscv_relax_lui): New parameter undefined_weak.  If true,
+	allow relaxing.  For LO12* relocs, set rs1 to x0 when undefined_weak.
+	(_bfd_riscv_relax_pc): New parameter undefined_weak.  For LO12* relocs,
+	set undefined_weak from hi_reloc.  If true, allow relaxing.  For LO12*
+	relocs, set rs1 to x0 when undefined_weak and change to non-pcrel
+	reloc.
+	(_bfd_riscv_relax_section): New local undefined_weak.  Set for
+	undef weak relocs that can be relaxed.  Pass to relax_func call.
+
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_section_name, bfd_section_size, bfd_section_vma),
+	(bfd_section_lma, bfd_section_alignment, bfd_section_flags),
+	(bfd_section_userdata, bfd_is_com_section, discarded_section),
+	(bfd_get_section_limit_octets, bfd_get_section_limit): Delete macros.
+	* bfd.c (bfd_get_section_limit_octets, bfd_get_section_limit),
+	(bfd_section_list_remove, bfd_section_list_append),
+	(bfd_section_list_prepend, bfd_section_list_insert_after),
+	(bfd_section_list_insert_before, bfd_section_removed_from_list):
+	New inline functions.
+	* section.c (bfd_is_und_section, bfd_is_abs_section),
+	(bfd_is_ind_section, bfd_is_const_section, bfd_section_list_remove),
+	(bfd_section_list_append, bfd_section_list_prepend),
+	(bfd_section_list_insert_after, bfd_section_list_insert_before),
+	(bfd_section_removed_from_list): Delete macros.
+	(bfd_section_name, bfd_section_size, bfd_section_vma),
+	(bfd_section_lma, bfd_section_alignment, bfd_section_flags),
+	(bfd_section_userdata, bfd_is_com_section, bfd_is_und_section),
+	(bfd_is_abs_section, bfd_is_ind_section, bfd_is_const_section),
+	(discarded_section): New inline functions.
+	* bfd-in2.h: Regenerate.
+
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
+	(bfd_asymbol_bfd, bfd_asymbol_flavour, bfd_set_asymbol_name): Delete.
+	* bfd.c (bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
+	(bfd_asymbol_bfd, bfd_set_asymbol_name): New inline functions.
+	* targets.c (bfd_asymbol_flavour): Likewise.
+	* bfd-in2.h: Regenerate.
+
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* archive.c (bfd_generic_archive_p): Use bfd_set_thin_archive.
+	* bfd-in.h (bfd_get_filename, bfd_get_cacheable, bfd_get_format),
+	(bfd_get_target, bfd_get_flavour, bfd_family_coff, bfd_big_endian),
+	(bfd_little_endian, bfd_header_big_endian, bfd_header_little_endian),
+	(bfd_get_file_flags, bfd_applicable_file_flags),
+	(bfd_applicable_section_flags, bfd_has_map, bfd_is_thin_archive),
+	(bfd_valid_reloc_types, bfd_usrdata, bfd_get_start_address),
+	(bfd_get_symcount, bfd_get_outsymbols, bfd_count_sections),
+	(bfd_get_dynamic_symcount, bfd_get_symbol_leading_char): Delete.
+	* bfd/bfd.c (bfd_get_filename, bfd_get_cacheable, bfd_get_format),
+	(bfd_get_file_flags, bfd_get_start_address, bfd_get_symcount),
+	(bfd_get_dynamic_symcount, bfd_get_outsymbols, bfd_count_sections),
+	(bfd_has_map, bfd_is_thin_archive, bfd_set_thin_archive),
+	(bfd_usrdata, bfd_set_usrdata): New inline functions.
+	* targets.c (bfd_get_target, bfd_get_flavour),
+	(bfd_applicable_file_flags, bfd_family_coff, bfd_big_endian),
+	(bfd_little_endian, bfd_header_big_endian),
+	(bfd_header_little_endian, bfd_applicable_section_flags),
+	(bfd_get_symbol_leading_char): New inline functions.
+	* bfd-in2.h: Regenerate.
+
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_glibc_dynamic_reloc): New function.
+	(ppc64_elf_relocate_section): Warn if emitting unsupported dynamic
+	relocations.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_get_section_name, bfd_get_section_vma),
+	(bfd_get_section_lma, bfd_get_section_alignment),
+	(bfd_get_section_size, bfd_get_section_flags),
+	(bfd_get_section_userdata): Delete.
+	(bfd_section_name, bfd_section_size, bfd_section_vma),
+	(bfd_section_lma, bfd_section_alignment): Lose bfd parameter.
+	(bfd_section_flags, bfd_section_userdata): New.
+	(bfd_is_com_section): Rename parameter.
+	* section.c (bfd_set_section_userdata, bfd_set_section_vma),
+	(bfd_set_section_alignment, bfd_set_section_flags, bfd_rename_section),
+	(bfd_set_section_size): Delete bfd parameter, rename section parameter.
+	(bfd_set_section_lma): New.
+	* bfd-in2.h: Regenerate.
+	* mach-o.c (bfd_mach_o_init_section_from_mach_o): Delete bfd param,
+	update callers.
+	* aoutx.h, * bfd.c, * coff-alpha.c, * coff-arm.c, * coff-mips.c,
+	* coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
+	* compress.c, * ecoff.c, * elf-eh-frame.c, * elf-hppa.h,
+	* elf-ifunc.c, * elf-m10200.c, * elf-m10300.c, * elf-properties.c,
+	* elf-s390-common.c, * elf-vxworks.c, * elf.c, * elf32-arc.c,
+	* elf32-arm.c, * elf32-avr.c, * elf32-bfin.c, * elf32-cr16.c,
+	* elf32-cr16c.c, * elf32-cris.c, * elf32-crx.c, * elf32-csky.c,
+	* elf32-d10v.c, * elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c,
+	* elf32-ft32.c, * elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c,
+	* elf32-ip2k.c, * elf32-iq2000.c, * elf32-lm32.c, * elf32-m32c.c,
+	* elf32-m32r.c, * elf32-m68hc1x.c, * elf32-m68k.c, * elf32-mcore.c,
+	* elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c,
+	* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
+	* elf32-nios2.c, * elf32-or1k.c, * elf32-ppc.c, * elf32-pru.c,
+	* elf32-rl78.c, * elf32-rx.c, * elf32-s390.c, * elf32-score.c,
+	* elf32-score7.c, * elf32-sh.c, * elf32-spu.c, * elf32-tic6x.c,
+	* elf32-tilepro.c, * elf32-v850.c, * elf32-vax.c, * elf32-visium.c,
+	* elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
+	* elf64-bpf.c, * elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mmix.c,
+	* elf64-ppc.c, * elf64-s390.c, * elf64-sparc.c, * elf64-x86-64.c,
+	* elflink.c, * elfnn-aarch64.c, * elfnn-ia64.c, * elfnn-riscv.c,
+	* elfxx-aarch64.c, * elfxx-mips.c, * elfxx-sparc.c,
+	* elfxx-tilegx.c, * elfxx-x86.c, * i386msdos.c, * linker.c,
+	* mach-o.c, * mmo.c, * opncls.c, * pdp11.c, * pei-x86_64.c,
+	* peicode.h, * reloc.c, * section.c, * syms.c, * vms-alpha.c,
+	* xcofflink.c: Update throughout for bfd section macro and function
+	changes.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (bfd_asymbol_section): Rename from bfd_get_section.
+	(bfd_get_output_section): Delete.
+	(bfd_asymbol_base): Delete.
+	(bfd_asymbol_section, bfd_asymbol_value, bfd_asymbol_name),
+	(bfd_asymbol_bfd, bfd_asymbol_flavour): Tidy.
+	(bfd_set_asymbol_name): New macro.
+	* bfd-in2.h: Regenerate.
+	* aout-cris.c: Update throughout to use bfd_asymbol_section.
+	* aoutx.h: Likewise.
+	* cofflink.c: Likewise.
+	* dwarf2.c: Likewise.
+	* ecoff.c: Likewise.
+	* elf.c: Likewise.
+	* elf32-arm.c: Likewise.
+	* elf32-mips.c: Likewise.
+	* elf32-score.c: Likewise.
+	* elf32-score7.c: Likewise.
+	* elfn32-mips.c: Likewise.
+	* elfnn-aarch64.c: Likewise.
+	* elfxx-mips.c: Likewise.
+	* linker.c: Likewise.
+	* pdp11.c: Likewise.
+	* elf64-mmix.c (mmix_elf_reloc): Part expand bfd_get_output_section.
+
+2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Re-generate.
+	* configure: Re-generate.
+	* doc/Makefile.in: Re-generate.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* aoutx.h (slurp_symbol_table): Don't set symcount using bfd_get
+	macros.
+	* pdp11.c (slurp_symbol_table): Likewise.
+	* som.c (som_slurp_symbol_table): Likewise.
+	* coff-ppc.c (ppc_bfd_coff_final_link): Likewise.
+	* coffcode.h (coff_slurp_symbol_table): Likewise.
+	* cofflink.c (_bfd_coff_final_link): Likewise.
+	* ecoff.c (ecoff_slurp_symbolic_header): Likewise.
+	(_bfd_ecoff_slurp_symbolic_info): Likewise.
+	(_bfd_ecoff_slurp_symbol_table): Likewise.
+	(_bfd_ecoff_bfd_final_link): Likewise.
+	* elf.c (_bfd_elf_canonicalize_symtab): Likewise.
+	* elflink.c (elf_link_output_symstrtab): Likewise.
+	(bfd_elf_final_link): Likewise.
+	* peicode.h (pe_ILF_build_a_bfd): Likewise.
+	* xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise.
+	* aoutx.h (some_aout_object_p, slurp_symbol_table): Don't set
+	start_address or symcount using bfd_get macros.
+	* coffgen.c (coff_real_object_p): Likewise.
+	* pdp11.c (some_aout_object_p, slurp_symbol_table): Likewise.
+	* som.c (som_object_setup, som_slurp_symbol_table): Likewise.
+	* elfcore.h (elf_core_file_p): Don't set start_address using
+	bfd_get macro.
+	* elf.c (_bfd_elf_canonicalize_dynamic_symtab): Don't set dynsymcount
+	using bfd_get macro.
+	* bfd.c (bfd_set_file_flags): Don't set flags using bfd_get macro.
+	* linker.c (bfd_generic_link_read_symbols): Don't set outsymbols
+	or symcount using bfd_get macros.
+	(_bfd_generic_final_link, generic_add_output_symbol): Likewise.
+	* syms.c (bfd_set_symtab): Likewise.
+	* vms-alpha.c (alpha_vms_bfd_final_link): Likewise.
+	* archive.c (do_slurp_bsd_armap): Don't set has_armap using
+	bfd_has_map macro.
+	(do_slurp_coff_armap, bfd_slurp_armap): Likewise.
+	* archive64.c (_bfd_archive_64_bit_slurp_armap): Likewise.
+	* coff-rs6000.c (_bfd_xcoff_slurp_armap): Likewise.
+	* coff64-rs6000.c (xcoff64_slurp_armap): Likewise.
+	* ecoff.c (_bfd_ecoff_slurp_armap): Likewise.
+	* som.c (som_slurp_armap): Likewise.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* archures.c (bfd_get_arch): Make param const.
+	(bfd_get_mach, bfd_arch_bits_per_byte): Likewise.
+	(bfd_arch_bits_per_address, bfd_octets_per_byte): Likewise.
+	* bfd-in2.h: Regenerate.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* bfd-in.h (carsym.name): Make const.
+	* reloc.c (struct reloc_howto_struct.name): Likewise.
+	* targets.c (bfd_target.name): Likewise.!
+	* bfd.c (bfd_get_sign_extend_vma): Make variable const.
+	* som.c (som_bfd_fill_in_ar_symbols): Use an intermediary variable
+	when setting carsym.name.
+	* bfd-in2.h: Regenerate.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* mach-o.c (bfd_mach_o_fat_member_init): Likewise.  Replace
+	xstrdup and xmalloc with bfd_strdup and bfd_malloc.  Return an
+	error status.  Adjust calls.
+	* vms-lib.c (_bfd_vms_lib_get_module): Test mhd->id earlier.
+	Close bfd on failure.  Replace xstrdup/bfd_alloc use with
+	bfd_malloc.  Use bfd_set_filename.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (must_be_dyn_reloc): Return 0 for TOC16 relocs.
+	(ppc64_elf_check_relocs): Support dynamic/copy relocs for TOC16.
+	(ppc64_elf_adjust_dynamic_symbol): Don't keep dynamic reloc when
+	needs_copy even if all relocs are in rw sections.
+	(dec_dynrel_count): Handle TOC16 relocs.
+	(ppc64_elf_relocate_section): Support dynamic relocs for TOC16.
+	(ppc64_elf_finish_dynamic_symbol): Adjust to handle needs_copy
+	semantic change.
+
+2019-09-16  Phil Blundell  <pb@pbcl.net>
+
+	* version.m4: Set version to 2.33.50.
+	* Makefile.in, configure, doc/Makefile.in: Regenerated.
+
+2019-09-11  Tom Tromey  <tom@tromey.com>
+
+	* opncls.c (bfd_set_filename): New function.
+	* bfd-in2.h: Regenerate.
+
+2019-09-11  Alan Modra  <amodra@gmail.com>
+
+	* targets.c (struct bfd_target): Add _bfd_group_name.
+	(BFD_JUMP_TABLE): Likewise.
+	* coffgen.c (bfd_coff_group_name): New function.
+	* elf.c (bfd_elf_group_name): New function.
+	* linker.c (_bfd_nolink_bfd_group_name): New function.
+	* section.c (bfd_generic_group_name): New function.
+	* elf-bfd.h (bfd_elf_group_name): Declare.
+	* libbfd-in.h (_bfd_nolink_bfd_group_name): Declare.
+	* libcoff-in.h (bfd_coff_group_name): Declare.
+	* aout-target.h (MY_bfd_group_name): Define.
+	* aout-tic30.c (MY_bfd_group_name): Define.
+	* bfd.c (bfd_group_name): Define.
+	* binary.c (binary_bfd_group_name): Define.
+	* coff-alpha.c (_bfd_ecoff_bfd_group_name): Define.
+	* coff-mips.c (_bfd_ecoff_bfd_group_name): Define.
+	* coff-rs6000.c (_bfd_xcoff_bfd_group_name): Define.
+	* coffcode.h (coff_bfd_group_name): Define.
+	* elfxx-target.h (bfd_elfNN_bfd_group_name): Define.
+	* i386msdos.c (msdos_bfd_group_name): Define.
+	* ihex.c (ihex_bfd_group_name): Define.
+	* mach-o-target.c (bfd_mach_o_bfd_group_name): Define.
+	* mmo.c (mmo_bfd_group_name): Define.
+	* pef.c (bfd_pef_bfd_group_name): Define.
+	* plugin.c (bfd_plugin_bfd_group_name): Define.
+	* ppcboot.c (ppcboot_bfd_group_name): Define.
+	* som.c (som_bfd_group_name): Define.
+	* srec.c (srec_bfd_group_name): Define.
+	* tekhex.c (tekhex_bfd_group_name): Define.
+	* verilog.c (verilog_bfd_group_name): Define.
+	* vms-alpha.c (vms_bfd_group_name, alpha_vms_bfd_group_name): Define.
+	* xsym.c (bfd_sym_bfd_group_name): Define.
+	* coff64-rs6000.c (rs6000_xcoff64_vec): Init new field.
+	(rs6000_xcoff64_aix_vec): Likewise.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Regenerate.
+	* libcoff.h: Regenerate.
+
+2019-09-10  Nick Clifton  <nickc@redhat.com>
+
+	PR 24907
+	* archures.c (bfd_arch_info_type): Add max_reloc_offset_into_insn
+	field.
+	(bfd_default_arch_struct): Initialise the new field.
+	* bfd-in2.h: Regenerate.
+	* cpu-aarch64.c: Initialise the new field.
+	* cpu-alpha.c: Likewise.
+	* cpu-arc.c: Likewise.
+	* cpu-arm.c: Likewise.
+	* cpu-avr.c: Likewise.
+	* cpu-bfin.c: Likewise.
+	* cpu-bpf.c: Likewise.
+	* cpu-cr16.c: Likewise.
+	* cpu-cr16c.c: Likewise.
+	* cpu-cris.c: Likewise.
+	* cpu-crx.c: Likewise.
+	* cpu-csky.c: Likewise.
+	* cpu-d10v.c: Likewise.
+	* cpu-d30v.c: Likewise.
+	* cpu-dlx.c: Likewise.
+	* cpu-epiphany.c: Likewise.
+	* cpu-fr30.c: Likewise.
+	* cpu-frv.c: Likewise.
+	* cpu-ft32.c: Likewise.
+	* cpu-h8300.c: Likewise.
+	* cpu-hppa.c: Likewise.
+	* cpu-i386.c: Likewise.
+	* cpu-ia64.c: Likewise.
+	* cpu-iamcu.c: Likewise.
+	* cpu-ip2k.c: Likewise.
+	* cpu-iq2000.c: Likewise.
+	* cpu-k1om.c: Likewise.
+	* cpu-l1om.c: Likewise.
+	* cpu-lm32.c: Likewise.
+	* cpu-m10200.c: Likewise.
+	* cpu-m10300.c: Likewise.
+	* cpu-m32c.c: Likewise.
+	* cpu-m32r.c: Likewise.
+	* cpu-m68hc11.c: Likewise.
+	* cpu-m68hc12.c: Likewise.
+	* cpu-m68k.c: Likewise.
+	* cpu-m9s12x.c: Likewise.
+	* cpu-m9s12xg.c: Likewise.
+	* cpu-mcore.c: Likewise.
+	* cpu-mep.c: Likewise.
+	* cpu-metag.c: Likewise.
+	* cpu-microblaze.c: Likewise.
+	* cpu-mips.c: Likewise.
+	* cpu-mmix.c: Likewise.
+	* cpu-moxie.c: Likewise.
+	* cpu-msp430.c: Likewise.
+	* cpu-mt.c: Likewise.
+	* cpu-nds32.c: Likewise.
+	* cpu-nfp.c: Likewise.
+	* cpu-nios2.c: Likewise.
+	* cpu-ns32k.c: Likewise.
+	* cpu-or1k.c: Likewise.
+	* cpu-pdp11.c: Likewise.
+	* cpu-pj.c: Likewise.
+	* cpu-plugin.c: Likewise.
+	* cpu-powerpc.c: Likewise.
+	* cpu-pru.c: Likewise.
+	* cpu-riscv.c: Likewise.
+	* cpu-rl78.c: Likewise.
+	* cpu-rs6000.c: Likewise.
+	* cpu-rx.c: Likewise.
+	* cpu-s12z.c: Likewise.
+	* cpu-s390.c: Likewise.
+	* cpu-score.c: Likewise.
+	* cpu-sh.c: Likewise.
+	* cpu-sparc.c: Likewise.
+	* cpu-spu.c: Likewise.
+	* cpu-tic30.c: Likewise.
+	* cpu-tic4x.c: Likewise.
+	* cpu-tic54x.c: Likewise.
+	* cpu-tic6x.c: Likewise.
+	* cpu-tic80.c: Likewise.
+	* cpu-tilegx.c: Likewise.
+	* cpu-tilepro.c: Likewise.
+	* cpu-v850.c: Likewise.
+	* cpu-v850_rh850.c: Likewise.
+	* cpu-vax.c: Likewise.
+	* cpu-visium.c: Likewise.
+	* cpu-wasm32.c: Likewise.
+	* cpu-xc16x.c: Likewise.
+	* cpu-xgate.c: Likewise.
+	* cpu-xstormy16.c: Likewise.
+	* cpu-xtensa.c: Likewise.
+	* cpu-z80.c: Likewise.
+	* cpu-z8k.c: Likewise.
+
+2019-09-09  Phil Blundell  <pb@pbcl.net>
+
+	binutils 2.33 branch created.
+
+2019-09-06  Alan Modra  <amodra@gmail.com>
+
+	* aout-target.h (object_p): Formatting.
+	* bfd-in.h (bfd_get_filename): Don't cast to char*.
+	* corefile.c (generic_core_file_matches_executable_p): Constify
+	variables and remove cast.
+	* bfd-in2.h: Regenerate.
+
+2019-09-05  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_check_relocs): Interpret an addend in
+	GOT_PCREL and PLT_PCREL relocs as affecting the value stored
+	in the GOT/PLT entry rather than affecting the offset to that
+	GOI/PLT entry.
+	(ppc64_elf_edit_toc, ppc64_elf_relocate_section): Likewise.
+
+2019-09-05  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (xlate_pcrel_opt): Handle prefix loads and stores
+	in second instruction.
+	(ppc64_elf_relocate_section): Likewise.
+
+2019-09-05  Alan Modra  <amodra@gmail.com>
+
+	PR 24955
+	* libbfd-in.h (bfd_strdup): New inline function.
+	* archive.c (_bfd_get_elt_at_filepos): Use bfd_strdup.  Close
+	bfd on error.
+	* elfcode.h (_bfd_elf_bfd_from_remote_memory): Use bfd_strdup.
+	* opncls.c (bfd_fopen): Use bfd_strdup.  Close fd and stream
+	on error.
+	(bfd_openstreamr): Use bfd_strdup.
+	(bfd_openr_iovec, bfd_openw, bfd_create): Likewise.
+	* plugin.c (try_load_plugin): Use bfd_malloc.
+	* libbfd.h: Regenerate.
+
+2019-09-02  Alan Modra  <amodra@gmail.com>
+
+	PR 11983
+	* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Free debug_filename
+	on success.  Tidy.
+	(read_alt_indirect_string): Likewise.
+	(read_alt_indirect_ref): Likewise.
+
+2019-08-31  Jim Wilson  <jimw@sifive.com>
+
+	PR 23825
+	* elfnn-riscv.c (riscv_elf_create_dynamic_sections): Add SEC_LOAD,
+	SEC_DATA, and SEC_HAS_CONTENTS to .tdata.dyn section.
+
+2019-08-30  Jim Wilson  <jimw@sifive.com>
+
+	* elfnn-riscv.c (riscv_elf_relocate_section): For unresolvable reloc
+	error, call bfd_set_error, set ret to FALSE, and goto out label.
+
+2019-08-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24951
+	* archive.c (_bfd_get_elt_at_filepos): Copy BFD_COMPRESS,
+	BFD_DECOMPRESS and BFD_COMPRESS_GABI flags for thin archive.
+
+2019-08-29  Alan Modra  <amodra@gmail.com>
+
+	PR 24697
+	* elf32-ppc.c (ppc_elf_check_relocs): Call bad_shared_reloc
+	when !bfd_link_executable for R_PPC_EMB_SDA2I16 and
+	R_PPC_EMB_SDA2REL.  Don't call bad_shared_reloc for any other
+	reloc.
+
+2019-08-29  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (xlate_pcrel_opt): Add poff parameter.  Allow offset
+	on second insn, return it in poff.
+	(ppc64_elf_relocate_section): Add offset to paddi addend for
+	PCREL_OPT.
+
+2019-08-28  Jim Wilson  <jimw@sifive.com>
+
+	* elfnn-riscv.c (_bfd_riscv_relax_lui): Add check to exclude abs
+	section when setting max_alignment.  Update comment.
+	(_bfd_riscv_relax_pc): Likewise.
+
+2019-08-29  Alan Modra  <amodra@gmail.com>
+
+	PR 24891
+	* bfd.c (struct bfd): Add no_element_cache.
+	* archive.c (_bfd_get_elt_at_filepos): Don't add element to
+	archive cache when no_element_cache.
+	(bfd_generic_archive_p): Set no_element_cache when opening first
+	element to check format.  Close first element too.
+	(do_slurp_bsd_armap): Don't zero ardata->cache here.
+	* bfd-in2.h: Regenerate.
+
+2019-08-24  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_edit_toc): Exclude undefined weak
+	symbols from GOT optimisation.
+
+2019-08-23  Stafford Horne  <shorne@gmail.com>
+
+	* elf32-or1k.c (or1k_elf_finish_dynamic_symbol): Use correct value for
+	PLT GOT entries.
+
+2019-08-23  Nick Clifton  <nickc@redhat.com>
+
+	PR 24456
+	* elf.c (bfd_section_from_shdr): Issue an informative warning
+	message and continue processing other sections after encountering
+	a reloc section for a section which already has other relocs
+	associated with it.
+
+2019-08-23  Alan Modra  <amodra@gmail.com>
+
+	PR 24933
+	* elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Don't exit
+	on error without freeing plts[] contents.
+
+2019-08-22  Dennis Zhang  <dennis.zhang@arm.com>
+
+	* cpu-arm.c: New entries for Cortex-M35P, Cortex-A77, Cortex-A76AE.
+
+2019-08-22  Nick Clifton  <nickc@redhat.com>
+
+	PR 24922
+	* pei-x86_64.c (pex64_xdata_print_uwd_codes): Add checks before
+	reading data from extra records.
+
+2019-08-22  Tamar Christina  <tamar.christina@arm.com>
+
+	PR ld/24601
+	* elfnn-aarch64.c (aarch64_relocate): Handle weak TLS and undefined TLS.
+	Also Pass input_bfd to _bfd_aarch64_elf_resolve_relocation.
+	* elfxx-aarch64.c (_bfd_aarch64_elf_resolve_relocation): Use it.
+	* elfxx-aarch64.h (_bfd_aarch64_elf_resolve_relocation): Emit warning
+	for weak TLS.
+
+2019-08-22  Alan Modra  <amodra@gmail.com>
+
+	* elf32-arm.c (cmse_scan): Don't use ARM_GET_SYM_CMSE_SPCL,
+	instead recognize CMSE_PREFIX in symbol name.
+	(elf32_arm_gc_mark_extra_sections): Likewise.
+	(elf32_arm_filter_cmse_symbols): Don't test ARM_GET_SYM_CMSE_SPCL.
+	(elf32_arm_swap_symbol_in): Don't invoke ARM_SET_SYM_CMSE_SPCL.
+
+2019-08-20  Dennis Zhang  <dennis.zhang@arm.com>
+
+	* cpu-aarch64.c: New entries for Cortex-A34, Cortex-A65,
+	 Cortex-A77, cortex-A65AE, and Cortex-A76AE.
+
+2019-08-20  Tamar Christina  <tamar.christina@arm.com>
+
+	* elf32-arm.c (elf32_thumb2_plt_entry, elf32_arm_plt_thumb_stub,
+	elf32_arm_stub_long_branch_v4t_thumb_thumb,
+	elf32_arm_stub_long_branch_v4t_thumb_arm,
+	elf32_arm_stub_short_branch_v4t_thumb_arm,
+	elf32_arm_stub_long_branch_v4t_thumb_arm_pic,
+	elf32_arm_stub_long_branch_v4t_thumb_thumb_pic,
+	elf32_arm_stub_long_branch_v4t_thumb_tls_pic): Change nop to branch to
+	previous instruction.
+
+2019-08-19  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2.c (_bfd_dwarf2_find_symbol_bias): Create hash table
+	holding symbols.
+
+2019-08-19  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (struct ppc64_elf_obj_tdata): Rename has_gotrel
+	to has_optrel.
+	(struct _ppc64_elf_section_data): Likewise.
+	(ppc64_elf_check_relocs): Set has_optrel for more relocs.
+	(ppc64_elf_edit_toc): Do ha/lo insn checks in GOT loop rather
+	than TOC loop.  Check PLT16 insns too.
+
+2019-08-16  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24905
+	* elf64-x86-64.c (elf_x86_64_check_relocs): Move PIC check for
+	PC-relative relocations back to ...
+	(elf_x86_64_relocate_section): Here.
+
+2019-08-16  Martin Liska  <mliska@suse.cz>
+
+	PR ld/24912
+	* elflink.c: Report error only for not relocatable.
+	* linker.c (_bfd_generic_link_add_one_symbol): Do not handle
+	here lto_slim_object as it's handled in caller.
+
+2019-08-16  Alan Modra  <amodra@gmail.com>
+
+	* elf32-ppc.c (ppc_elf_relocate_section): Optimize unaligned relocs.
+
+2019-08-15  Jim Wilson  <jimw@sifive.com>
+
+	* elfnn-riscv.c (perform_relocation) <R_RISCV_RVC_LUI>: If
+	RISCV_CONST_HIGH_PART (value) is zero, then convert c.lui instruction
+	to c.li instruction, and use ENCODE_RVC_IMM to set value.
+
+2019-08-15  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2.c (scan_unit_for_symbols): Check for end of CU, not end
+	of section.
+
+2019-08-14  Alan Modra  <amodra@gmail.com>
+
+	PR 24623
+	* dwarf2.c (stash_comp_unit): New function, extracted from..
+	(_bfd_dwarf2_find_nearest_line): ..here.
+	(find_abstract_instance): Parse comp units and decode line info
+	as needed.
+
+2019-08-14  Alan Modra  <amodra@gmail.com>
+
+	* dwarf2.c (comp_unit_maybe_decode_line_info): Declare.
+	(comp_unit_find_nearest_line): Use it here..
+	(_bfd_dwarf2_find_symbol_bias): ..and here.
+
+2019-08-14  Alan Modra  <amodra@gmail.com>
+
+	* dwarf2.c (_bfd_dwarf2_find_nearest_line): Remove addr_size parameter.
+	* libbfd-in.h  (_bfd_dwarf2_find_nearest_line): Update prototype.
+	* coffgen.c (coff_find_nearest_line_with_names): Adjust
+	_bfd_dwarf2_find_nearest_line calls.
+	* elf.c (_bfd_elf_find_nearest_line, _bfd_elf_find_line): Likewise.
+	* elf32-arm.c (elf32_arm_find_nearest_line): Likewise.
+	* elf64-alpha.c (elf64_alpha_find_nearest_line): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_find_nearest_line): Likewise.
+	* elfxx-mips.c (_bfd_mips_elf_find_nearest_line): Likewise.
+	* mach-o.c (bfd_mach_o_find_nearest_line): Likewise.
+	* libbfd.h: Regenerate.
+
+2019-08-09  Mihailo Stojanovic  <mihailo.stojanovic@rt-rk.com>
+
+	* elf-bfd.h (struct elf_backend_data): New members.
+	* elflink.c (_bfd_elf_link_create_dynamic_sections): Create
+	.gnu.hash section if necessary.
+	(struct collect_gnu_hash_codes): New member.
+	(elf_gnu_hash_process_symidx): New function name.
+	(elf_renumber_gnu_hash_syms): Ignore local and undefined
+	symbols. Record xlat location for every symbol which should have
+	a .MIPS.xhash entry.
+	(bfd_elf_size_dynamic_sections): Add DT_GNU_HASH dynamic tag to
+	dynamic section if necessary.
+	(GNU_HASH_SECTION_NAME): New define.
+	(bfd_elf_size_dynsym_hash_dynstr): Get .MIPS.xhash section.
+	Update the section size info.
+	* elfxx-mips.c (struct mips_elf_hash_sort_data): New members.
+	(struct mips_elf_link_hash_entry): New member.
+	(mips_elf_link_hash_newfunc): Initialize .MIPS.xhash translation
+	table location.
+	(mips_elf_sort_hash_table): Initialize the pointer to the
+	.MIPS.xhash section.
+	(mips_elf_sort_hash_table_f): Populate the .MIPS.xhash
+	translation table entry with the symbol dynindx.
+	(_bfd_mips_elf_section_from_shdr): Add SHT_MIPS_XHASH.
+	(_bfd_mips_elf_fake_sections): Initialize .MIPS.xhash section
+	info.
+	(_bfd_mips_elf_create_dynamic_sections): Create .MIPS.xhash
+	section.
+	(_bfd_mips_elf_size_dynamic_sections): Add DT_MIPS_XHASH tag to
+	dynamic section.
+	(_bfd_mips_elf_finish_synamic_sections): Add DT_MIPS_XHASH.
+	(_bfd_mips_elf_final_write_processing): Set .MIPS.xhash section
+	sh_link info.
+	(_bfd_mips_elf_get_target_dtag): Get DT_MIPS_XHASH tag.
+	(MIPS_LIBC_ABI_XHASH): New ABI version enum value.
+	(_bfd_mips_post_process_headers): Mark the ABI version as
+	MIPS_LIBC_ABI_XHASH if there exists a .MIPS.xhash section,
+	but not a .hash section.
+	(_bfd_mips_elf_record_xhash_symbol): New function. Record a
+	position in the translation table, associated with the hash
+	entry.
+	* elfxx-mips.h (literal_reloc_p): Define
+	elf_backend_record_xhash_symbol backend hook.
+	* elfxx-target.h: Initialize elf_backend_record_xhash_symbol
+	backend hook.
+
+2019-08-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* elf64-bpf.c (bpf_elf_relocate_section): New function.
+	(bpf_elf_insn_disp_reloc): Delete function.
+	(elf_backend_relocate_section): Define.
+
+2019-08-07  Alan Modra  <amodra@gmail.com>
+
+	PR 24644
+	* archive64.c (_bfd_archive_64_bit_slurp_armap): Properly check
+	for overflow in expressions involving nsymz.
+
+2019-08-01  Ilia Diachkov  <ilia.diachkov@optimitech.com>
+
+	* elfnn-riscv.c (_bfd_riscv_relax_lui): Set lui relax safety area to
+	two pages in relro presence.
+
+2019-08-01  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* elf32-xtensa.c (insn_num_slots, get_rsr_lend_opcode)
+	(get_wsr_lbeg_opcode): New functions.
+	(check_loop_aligned): Detect relaxed loops and adjust loop_len
+	and insn_len for the first actual instruction of the loop.
+
+2019-07-30  Alan Modra  <amodra@gmail.com>
+
+	PR 24768
+	* bfd.c (struct bfd): Add lto_slim_object flag.
+	* bfd-in2.h: Regenerate.
+
+2019-07-29  Martin Liska  <mliska@suse.cz>
+
+	PR 24768
+	* archive.c (_bfd_compute_and_write_armap): Come up with
+	report_plugin_err variable.
+	* bfd-in2.h (struct bfd): Add lto_slim_object flag.
+	* elf.c (struct lto_section): New.
+	(_bfd_elf_make_section_from_shdr): Parse content of
+	.gnu_lto_.lto section.
+	* elflink.c: Report error for a missing LTO plugin.
+	* linker.c (_bfd_generic_link_add_one_symbol): Likewise.
+
+2019-07-28  Alan Modra  <amodra@gmail.com>
+
+	PR 24857
+	PR 24339
+	* elflink.c (elf_link_add_object_symbols): Report an informative
+	error on finding local symbols with index equal or greater than
+	symbol table sh_info.  Correct comment.  Allow such symbols in
+	dynamic objects.  Abort on NULL section for symbol.
+
+2019-07-26  Alan Modra  <amodra@gmail.com>
+
+	* elf-bfd.h (struct output_elf_obj_tdata): Delete "linker" field.
+	(elf_linker): Don't define.
+	* elflink.c (bfd_elf_final_link): Don't set elf_linker.
+
+2019-07-25  YunQiang Su  <syq@debian.org>
+
+	PR 24832
+	* elfxx-mips.c (mips_set_isa_flags): Default to MIPS 3 for 64-bit
+	mips inputs.
+
+2019-07-24  Claudiu Zissulescu  <claziss@synopsys.com>
+
+	* elf32-arc.c (bfd_get_32_me): Add a small description, fix
+	formating.
+	(reloc_type_to_name): Fix formating.
+	(arc_elf_object_p): Likewise.
+	(debug_arc_reloc): Likewise.
+	(arc_do_relocation): Likewise.
+
+2019-07-24  Claudiu Zissulescu  <claziss@synopsys.com>
+
+	* elf32-arc.c (bfd_get_32_me): New function.
+	(bfd_put_32_me): Likewise.
+	(arc_elf_relax_section): Likewise.
+	(bfd_elf32_bfd_relax_section): Define.
+
+2019-07-24  Alan Modra  <amodra@gmail.com>
+
+	* elf-bfd.h (struct elf_backend_data): Return bfd_boolean from
+	elf_backend_final_write_processing, don't pass linker arg.
+	(_bfd_elf_final_write_processing): Update prototype.
+	* elf.c (_bfd_elf_write_object_contents): Adjust call.
+	(_bfd_elf_final_write_processing): Return error on incompatible
+	OSABI and has_gnu_osabi.  Remove linker arg.
+	* elf-nacl.h (nacl_final_write_processing): Update prototype.
+	* elf-vxworks.h (elf_vxworks_final_write_processing): Likewise.
+	* elfxx-mips.h (_bfd_mips_final_write_processing): Likewise.
+	(_bfd_mips_elf_final_write_processing): Likewise.
+	* elf-hppa.h (elf_hppa_final_write_processing): Return status
+	and remove linker arg.
+	* elf-m10300.c (_bfd_mn10300_elf_final_write_processing): Likewise.
+	* elf-nacl.c (nacl_final_write_processing): Likewise.
+	* elf-vxworks.c (elf_vxworks_final_write_processing): Likewise.
+	* elf32-arc.c (arc_elf_final_write_processing): Likewise.
+	* elf32-arm.c (arm_final_write_processing): Likewise.
+	(elf32_arm_final_write_processing): Likewise.
+	(elf32_arm_nacl_final_write_processing): Likewise.
+	(elf32_arm_vxworks_final_write_processing): Likewise.
+	* elf32-avr.c (bfd_elf_avr_final_write_processing): Likewise.
+	* elf32-bfin.c (elf32_bfin_final_write_processing): Likewise.
+	* elf32-cr16.c (_bfd_cr16_elf_final_write_processing): Likewise.
+	* elf32-cris.c (cris_elf_final_write_processing): Likewise.
+	* elf32-h8300.c (elf32_h8_final_write_processing): Likewise.
+	* elf32-lm32.c (lm32_elf_final_write_processing): Likewise.
+	* elf32-m32r.c (m32r_elf_final_write_processing): Likewise.
+	* elf32-m68k.c (elf_m68k_final_write_processing): Likewise.
+	* elf32-mips.c (mips_vxworks_final_write_processing): Likewise.
+	* elf32-msp430.c (bfd_elf_msp430_final_write_processing): Likewise.
+	* elf32-nds32.c (nds32_elf_final_write_processing): Likewise.
+	* elf32-or1k.c (or1k_elf_final_write_processing): Likewise.
+	* elf32-pj.c (pj_elf_final_write_processing): Likewise.
+	* elf32-ppc.c (ppc_final_write_processing): Likewise.
+	(ppc_elf_final_write_processing): Likewise.
+	(ppc_elf_vxworks_final_write_processing): Likewise.
+	* elf32-sparc.c (sparc_final_write_processing): Likewise.
+	(elf32_sparc_final_write_processing): Likewise.
+	(elf32_sparc_vxworks_final_write_processing): Likewise.
+	* elf32-v850.c (v850_elf_final_write_processing): Likewise.
+	* elf32-xc16x.c (elf32_xc16x_final_write_processing): Likewise.
+	* elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise.
+	* elf64-ia64-vms.c (elf64_vms_final_write_processing): Likewise.
+	* elfnn-ia64.c (elfNN_ia64_final_write_processing): Likewise.
+	* elfxx-mips.c (_bfd_mips_final_write_processing): Likewise.
+	(_bfd_mips_elf_final_write_processing): Likewise.
+
+2019-07-24  Alan Modra  <amodra@gmail.com>
+
+	* elf-vxworks.c (elf_vxworks_final_write_processing): Don't return
+	early.
+	* elf32-arc.c (arc_elf_final_write_processing): Likewise.
+	* elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise.
+
+2019-07-24  Alan Modra  <amodra@gmail.com>
+
+	* elf32-visium.c (visium_elf_post_process_headers): Don't set
+	EI_OSABI header byte here.
+	(ELF_OSABI): Define.
+
+2019-07-23  Alan Modra  <amodra@gmail.com>
+
+	* elf-bfd.h (enum elf_gnu_osabi): Add elf_gnu_osabi_mbind.
+	* elf.c (_bfd_elf_make_section_from_shdr): Set elf_gnu_osabi_mbind.
+	(get_program_header_size): Formatting.  Only test SH_GNU_MBIND
+	when elf_gnu_osabi_mbind is set.
+	(_bfd_elf_map_sections_to_segments): Likewise.
+	(_bfd_elf_init_private_section_data): Likewise.
+	(_bfd_elf_final_write_processing): Update comment.
+	* elf64-hppa.c (elf64_hppa_special_sections): Move .tbss entry.
+	(elf_backend_special_sections): Define without .tbss for linux.
+
+2019-07-23  Alan Modra  <amodra@gmail.com>
+
+	* elf-bfd.h (enum elf_gnu_osabi): Rename from elf_gnu_symbols.
+	Remove none, any, all enums.
+	(struct elf_obj_tdata): Rename has_gnu_symbols field to has_gnu_osabi.
+	(_bfd_elf_final_write_processing): Declare.
+	* elf.c (_bfd_elf_write_object_contents): Unconditionally call
+	elf_backend_final_write_processing.
+	(_bfd_elf_post_process_headers): Move body of function to..
+	(_bfd_elf_final_write_processing): ..here, but set EI_OSABI byte
+	only when not already set.  Adjust for rename.
+	* elfxx-target.h (elf_backend_final_write_processing): Default to
+	_bfd_elf_final_write_processing.
+	* elf-hppa.h (elf_hppa_final_write_processing): Call
+	_bfd_elf_final_write_processing.
+	* elf-m10300.c (_bfd_mn10300_elf_final_write_processing): Likewise.
+	* elf-nacl.c (nacl_final_write_processing): Likewise.
+	* elf-vxworks.c (elf_vxworks_final_write_processing): Likewise.
+	* elf32-arc.c (arc_elf_final_write_processing): Likewise.
+	* elf32-avr.c (bfd_elf_avr_final_write_processing): Likewise.
+	* elf32-bfin.c (elf32_bfin_final_write_processing): Likewise.
+	* elf32-cr16.c (_bfd_cr16_elf_final_write_processing): Likewise.
+	* elf32-cris.c (cris_elf_final_write_processing): Likewise.
+	* elf32-h8300.c (elf32_h8_final_write_processing): Likewise.
+	* elf32-lm32.c (lm32_elf_final_write_processing): Likewise.
+	* elf32-m32r.c (m32r_elf_final_write_processing): Likewise.
+	* elf32-m68k.c (elf_m68k_final_write_processing): Likewise.
+	* elf32-msp430.c (bfd_elf_msp430_final_write_processing): Likewise.
+	* elf32-nds32.c (nds32_elf_final_write_processing): Likewise.
+	* elf32-or1k.c (or1k_elf_final_write_processing): Likewise.
+	* elf32-pj.c (pj_elf_final_write_processing): Likewise.
+	* elf32-v850.c (v850_elf_final_write_processing): Likewise.
+	* elf32-xc16x.c (elf32_xc16x_final_write_processing): Likewise.
+	* elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise.
+	* elf64-ia64-vms.c (elf64_vms_final_write_processing): Likewise.
+	* elfnn-ia64.c (elfNN_ia64_final_write_processing): Likewise.
+	* elf32-arm.c (arm_final_write_processing): Split out from..
+	(elf32_arm_final_write_processing): ..here.  Call
+	_bfd_elf_final_write_processing.
+	(elf32_arm_nacl_final_write_processing): Adjust.
+	* elfxx-mips.c (_bfd_mips_final_write_processing): Split out from..
+	(_bfd_mips_elf_final_write_processing): ..here.  Call
+	_bfd_elf_final_write_processing.
+	* elfxx-mips.h (_bfd_mips_final_write_processing): Declare.
+	* elf32-mips.c (mips_vxworks_final_write_processing): Adjust.
+	* elf32-ppc.c (ppc_final_write_processing): Split out from..
+	(ppc_elf_final_write_processing): ..here.  Call
+	_bfd_elf_final_write_processing.
+	(ppc_elf_vxworks_final_write_processing): Adjust.
+	* elf32-sparc.c (sparc_final_write_processing): Split out from..
+	(elf32_sparc_final_write_processing): ..here.  Call
+	_bfd_elf_final_write_processing.
+	(elf32_sparc_vxworks_final_write_processing): Adjust.
+	* elf32-d10v.c (elf_backend_final_write_processing): Don't define.
+	* elf32-d30v.c (elf_backend_final_write_processing): Don't define.
+	* elf32-m68hc11.c (elf_backend_final_write_processing): Don't define.
+	* elf32-m68hc12.c (elf_backend_final_write_processing): Don't define.
+	* elf32-s12z.c (elf_backend_final_write_processing): Don't define.
+	* elf32-i386.c (elf_i386_check_relocs): Don't set has_gnu_symbols.
+	* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
+	* elflink.c (elf_link_add_object_symbols): Likewise.
+	(elf_link_output_symstrtab): Set has_gnu_osabi for symbols here
+	instead.
+
+2019-07-23  Omar Majid  <omajid@redhat.com>
+
+	* coffcode.h (coff_set_arch_mach_hook): Handle I386_APPLE_MAGIC,
+	I386_FREEBSD_MAGIC, I386_LINUX_MAGIC, I386_NETBSD_MAGIC,
+	AMD64_APPLE_MAGIC, AMD64_FREEBSD_MAGIC, AMD64_LINUX_MAGIC,
+	AMD64_NETBSD_MAGIC.
+	* peXXigen.c: Add comment about source of .NET magic numbers.
+
+2019-07-19  Alan Modra  <amodra@gmail.com>
+
+	* reloc.c (BFD_RELOC_PPC64_TPREL34, BFD_RELOC_PPC64_DTPREL34),
+	(BFD_RELOC_PPC64_GOT_TLSGD34, BFD_RELOC_PPC64_GOT_TLSLD34),
+	(BFD_RELOC_PPC64_GOT_TPREL34, BFD_RELOC_PPC64_GOT_DTPREL34),
+	(BFD_RELOC_PPC64_TLS_PCREL): New pcrel tls relocs.
+	* elf64-ppc.c (ppc64_elf_howto_raw): Add howtos for pcrel tls relocs.
+	(ppc64_elf_reloc_type_lookup): Translate pcrel tls relocs.
+	(must_be_dyn_reloc, dec_dynrel_count): Add R_PPC64_TPREL64.
+	(ppc64_elf_check_relocs): Support pcrel tls relocs.
+	(ppc64_elf_tls_optimize, ppc64_elf_relocate_section): Likewise.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Regenerate.
+
+2019-07-18  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_relocate_section): Don't bother selecting
+	a TLS section symbol for edited relocs.  Tighten TLS symbol/reloc
+	match test.
+
+2019-07-18  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (TLS_EXPLICIT): Define as 256.
+	(ppc64_elf_check_relocs): Don't store TLS_EXPLICIT even if char
+	is more than 8 bits.
+	(ppc64_elf_tls_optimize): Likewise.  Make tls_set, tls_clear, and
+	tls_type vars unsigned int.
+	(ppc64_elf_relocate_section): Use r_type rather than TLS_EXPLICIT
+	to select r_type edit.
+
+2019-07-18  Alan Modra  <amodra@gmail.com>
+
+	* elf32-ppc.c (TLS_GDIE): Rename from TLS_TPRELGD throughout file.
+	Correct comment.
+	* elf64-ppc.c (TLS_GDIE): Likewise.
+
+2019-07-18  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_tls_optimize): Correct test for allowed
+	range of tp-relative offsets.
+
+2019-07-15  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (_bfd_elf_fix_symbol_flags): If the def for an
+	alias is no longer bfd_link_hash_defined, clear the alias.
+
+2019-07-13  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (_bfd_elf_omit_section_dynsym_default): Don't keep
+	tls_sec.
+	(_bfd_elf_init_1_index_section): Prefer not using TLS sections.
+	(_bfd_elf_init_2_index_sections): Likewise.
+	* elf64-ppc.c (ppc64_elf_relocate_section): When emitting dynamic
+	relocations for local TLS symbols, use STN_UNDEF as the relocation
+	symbol.
+	* elf32-ppc.c (ppc_elf_relocate_section): Likewise, and don't
+	leave TLS symbol value in the addend.
+
+2019-07-08  Alan Modra  <amodra@gmail.com>
+
+	PR 24785
+	* elf32-ppc.c (_bfd_elf_ppc_set_arch): Sanity check .PPC.EMB.apuinfo
+	size before reading first word.
+
+2019-07-02  Nick Clifton  <nickc@redhat.com>
+
+	PR 24717
+	* elf.c (is_debuginfo_file): New function.
+	(assign_file_positions_for_non_load_sections): Do not warn about
+	allocated sections outside of loadable segments if they are found
+	in a debuginfo file.
+	* elf-bfd.h (is_debuginfo_file): Prototype.
+
+2019-07-02  Nick Clifton  <nickc@redhat.com>
+
+	PR 24753
+	* compress.c (bfd_get_full_section_contents): Do not complain
+	about linker created sections that are larger than the file size.
+
+2019-07-02  Christophe Lyon  <christophe.lyon@linaro.org>
+
+	* bfd/elf32-arm.c (CMSE_STUB_NAME): New define.
+	(elf32_arm_get_stub_entry): Do not try to emit long-branch stubs
+	for CMSE stubs.
+	(arm_dedicated_stub_output_section_name): Use CMSE_STUB_NAME.
+
+2019-07-02  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* elf32-arm.c (elf32_arm_gc_mark_extra_sections): Mark debug
+	sections when .text section contain secure entry functions
+	is marked.
+
+2019-07-01  Nick Clifton  <nickc@redhat.com>
+
+	PR 23839
+	* elf32-arm.c (elf32_arm_update_relocs): Do not include the
+	section VMA in the offset used to update exidx relocs.
+
+2019-06-28  Nick Clifton  <nickc@redhat.com>
+
+	PR 24708
+	* elf.c (_bfd_elf_slurp_version_tables): Check for an excessively
+	large version reference section.
+	* compress.c (bfd_get_full_section_contents): Check for an
+	uncompressed section whose size is larger than the file size.
+
+2019-06-28  Alan Modra  <amodra@gmail.com>
+
+	* format.c (bfd_check_format_matches): Don't match plugin target
+	if another target matches.  Expand comment.
+	* targets.c (_bfd_target_vector): Move plugin_vec after all other
+	non-corefile targets, outside !SELECT_VECS.
+	* config.bfd: Don't handle targ=plugin here.
+	* configure.ac: Don't add plugin to enable_targets or handle in
+	target loop setting selvecs and other target vars.
+	* configure: Regenerate.
+
+2019-06-26  Nick Clifton  <nickc@redhat.com>
+
+	PR 24703
+	* mach-o-arm.c (bfd_mach_o_arm_canonicalize_one_reloc): Add error
+	messages for failures.
+	* mach-o.c (bfd_mach_o_canonicalize_relocs): Set an bfd error code
+	if returning an error value.
+
+2019-06-25  Jan Beulich  <jbeulich@suse.com>
+
+	* elf-properties.c (elf_find_and_remove_property): Rename last
+	parameter. Mention it in comment.
+
+2019-06-24  Ilia Diachkov  <ilia.diachkov@optimitech.com>
+
+	* elfnn-riscv.c (_bfd_riscv_relax_lui): Delete early exit when
+	SEC_MERGE or SEC_CODE flags are set.
+	(_bfd_riscv_relax_section): New local symtype.  Set sym_sec and
+	symtype consistently.  Don't include sec_addr (sym_sec) in symval.
+	Add check for SEC_INFO_TYPE_MERGE and call _bfd_merged_section_offset.
+	Add sec_addr (sym_sec) after handling merge sections.
+
+2019-06-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24721
+	* elf-properties.c (elf_merge_gnu_property_list): Remove the
+	property after reporting property removal.
+
+2019-06-23  Alan Modra  <amodra@gmail.com>
+
+	PR 24704
+	* elf64-ppc.c (R_PPC64_GOT16_DS): Don't set has_gotrel.
+	(ppc64_elf_edit_toc): Don't remove R_PPC64_GOT16_DS got entries.
+	Reduce range of offsets allowed for other GOT relocs.
+
+2019-06-23  Alan Modra  <amodra@gmail.com>
+
+	PR 24689
+	* elfcode.h (elf_object_p): Warning fix.
+
+2019-06-21  Alan Modra  <amodra@gmail.com>
+
+	PR 24689
+	* elfcode.h (elf_object_p): Check type of e_shstrndx section.
+
+2019-06-19  Alan Modra  <amodra@gmail.com>
+
+	PR 24697
+	* elf32-ppc.c (ppc_elf_relocate_section): Don't read insn for
+	R_PPC_EMB_RELSDA.  Mask low bit of R_PPC_EMB_SDA21 r_offset.
+
+2019-06-19  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_inline_plt): Correct st_other test for
+	functions that require r2 valid to use local entry.
+	(ppc64_elf_size_stubs, ppc64_elf_relocate_section): Likewise.
+
+2019-06-17  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	* elfnn-aarch64.c (elfNN_aarch64_allocate_local_dynrelocs): Remove.
+	(elfNN_aarch64_size_dynamic_sections): Remove loc_hash_table traversal
+	with elfNN_aarch64_allocate_local_dynrelocs.
+
+2019-06-14  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	* elfnn-aarch64.c: Enable MOVW_PREL relocs for ELF32.
+
+2019-06-14  Alan Modra  <amodra@gmail.com>
+
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
+
+2019-06-14  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c: Fix comments involving paddi.
+
+2019-06-12  Adam Lackorzymski  <adam@os.inf.tu-dresden.de>
+
+	PR 24643
+	* elf32-arm.c (arm_elf_find_function): Fail if the symol table is
+	absent, or the bfd is not in the ELF formart.
+	* elfnn-aarch64.c (aarch64_elf_find_function): Likewise.
+
+2019-06-10  Christos Zoulas  <christos@zoulas.com>
+
+	PR 24650
+	* elf.c (elfcore_make_auxv_note_section): New function.
+	(elfcore_grok_note): Use it.
+	(elfcore_grok_freebsd_note): Likewise.
+	(elfcore_grok_openbsd_note): Likewise.
+	(elfcore_grok_netbsd_note): Likewise.  Plus add support for
+	NT_NETBSDCORE_AUXV notes.
+
+2019-06-06  Sudakshina Das  <sudi.das@arm.com>
+
+	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Set
+	alignment of the new gnu property section.
+
+2019-06-06  Sudakshina Das  <sudi.das@arm.com>
+
+	* bfd-in.h: Change comment.
+	* bfd-in2.h: Regenerate.
+	* elfnn-aarch64.c (elfNN_aarch64_merge_gnu_properties): Update warning.
+	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties):
+	Likwise.
+
+2019-05-28  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+
+	* elfxx-mips.c (mips_elf_calculate_relocation) <R_MIPS_PCHI16>:
+	Remove overflow check.
+
+2019-05-28  Alan Modra  <amodra@gmail.com>
+
+	PR 24596
+	* cofflink.c (coff_link_check_archive_element): Don't assume
+	element is a coff object file after calling add_archive_element.
+
+2019-05-28  Alan Modra  <amodra@gmail.com>
+
+	PR 24596
+	* elf32-microblaze.c (microblaze_elf_finish_dynamic_sections): Don't
+	attempt to set sh_entsize for excluded PLT section.
+
+2019-05-28  Alan Modra  <amodra@gmail.com>
+
+	PR 24596
+	* elf64-alpha.c (elf64_alpha_relocate_section): Don't attempt
+	to emit R_ALPHA_GOTTPREL in PIEs, for which no space is
+	allocated in alpha_dynamic_entries_for_reloc.
+
+2019-05-28  Alan Modra  <amodra@gmail.com>
+
+	PR 24596
+	* elf32-lm32.c (lm32_elf_finish_dynamic_sections): Don't segfault
+	on NULL output_section.
+	* elflink.c (elf_final_link_free): Don't free -1 symshndxbuf.
+
+2019-05-28  Alan Modra  <amodra@gmail.com>
+
+	PR 24596
+	* elf32-m68k.c (elf_m68k_get_got_entry): Don't create a new
+	entry when MUST_FIND.  Abort when MUST_FIND not found.
+	(elf_m68k_get_bfd2got_entry): Likewise.
+	(elf_m68k_relocate_section): Remove now useless assert.
+
+2019-05-28  Alan Modra  <amodra@gmail.com>
+
+	PR 24596
+	* elf64-hppa.c (elf64_hppa_finalize_dynreloc): Get the output bfd
+	from bfd_link_info, not an output section owner.
+	(elf64_hppa_finish_dynamic_symbol, elf64_hppa_finalize_opd): Likewise.
+	(elf_hppa_final_link_relocate): Likewise.
+
+2019-05-28  Alan Modra  <amodra@gmail.com>
+
+	PR 24596
+	* aout-tic30.c (MY_bfd_final_link): Don't segfault on missing
+	create_object_symbols_section, obj_textsec, obj_datasec or
+	obj_bsssec.  Fix other errors in placement.
+	* config.bfd: Obsolete tic30-aout.
+
+2019-05-28  Alan Modra  <amodra@gmail.com>
+
+	PR 24596
+	* dwarf2.c (save_section_vma, section_vma_same): Check for NULL
+	end of section list as well as section_count.
+	* xcofflink.c (xcoff_link_add_symbols): Fix temporarily changed
+	section list before returning error.
+
+2019-05-27  Alan Modra  <amodra@gmail.com>
+
+	* elf.c (bfd_elf_set_group_contents): Exit on zero size section.
+
+2019-05-27  Alan Modra  <amodra@gmail.com>
+
+	PR 24596
+	* linker.c (_bfd_generic_link_output_symbols): Heed BSF_KEEP.
+
+2019-05-24  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	* elfnn-aarch64.c (elfNN_aarch64_merge_symbol_attribute): New function.
+	(struct elf_aarch64_link_hash_table): Add variant_pcs member.
+	(elfNN_aarch64_allocate_dynrelocs): Update variant_pcs.
+	(elfNN_aarch64_size_dynamic_sections): Add DT_AARCH64_VARIANT_PCS.
+	(elf_backend_merge_symbol_attribute): Define.
+
+2019-05-24  Alan Modra  <amodra@gmail.com>
+
+	* po/SRC-POTFILES.in: Regenerate.
+
+2019-05-24  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c: Comment on powerxx _notoc stub variants.
+	(LI_R11_0, LIS_R11, ORI_R11_R11_0, SLDI_R11_R11_34): Define.
+	(PADDI_R12_PC, PLD_R12_PC, D34, HA34): Define.
+	(struct ppc_link_hash_table): Add powerxx_stubs.
+	(ppc64_elf_check_relocs): Set powerxx_stubs.
+	(build_powerxx_offset, size_powerxx_offset),
+	(num_relocs_for_powerxx_offset),
+	(emit_relocs_for_powerxx_offset): New functions.
+	(plt_stub_size): Size powerxx stubs.
+	(ppc_build_one_stub): Emit powerxx stubs.
+	(ppc_size_one_stub): Size powerxx stubs.  Omit .eh_frame for
+	powerxx stubs.
+
+2019-05-24  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_check_relocs): Set has_gotrel for
+	R_PPC64_GOT_PCREL34.
+	(xlate_pcrel_opt): New function.
+	(ppc64_elf_edit_toc): Handle R_PPC64_GOT_PCREL34.
+	(ppc64_elf_relocate_section): Edit GOT indirect to GOT relative
+	for R_PPC64_GOT_PCREL34.  Implement R_PPC64_PCREL_OPT optimisation.
+
+2019-05-24  Alan Modra  <amodra@gmail.com>
+
+	* reloc.c (BFD_RELOC_PPC64_D34, BFD_RELOC_PPC64_D34_LO),
+	(BFD_RELOC_PPC64_D34_HI30, BFD_RELOC_PPC64_D34_HA30),
+	(BFD_RELOC_PPC64_PCREL34, BFD_RELOC_PPC64_GOT_PCREL34),
+	(BFD_RELOC_PPC64_PLT_PCREL34),
+	(BFD_RELOC_PPC64_ADDR16_HIGHER34, BFD_RELOC_PPC64_ADDR16_HIGHERA34),
+	(BFD_RELOC_PPC64_ADDR16_HIGHEST34, BFD_RELOC_PPC64_ADDR16_HIGHESTA34),
+	(BFD_RELOC_PPC64_REL16_HIGHER34, BFD_RELOC_PPC64_REL16_HIGHERA34),
+	(BFD_RELOC_PPC64_REL16_HIGHEST34, BFD_RELOC_PPC64_REL16_HIGHESTA34),
+	(BFD_RELOC_PPC64_D28, BFD_RELOC_PPC64_PCREL28): New reloc enums.
+	* elf64-ppc.c (PNOP): Define.
+	(ppc64_elf_howto_raw): Add reloc howtos for new relocations.
+	(ppc64_elf_reloc_type_lookup): Translate new bfd reloc numbers.
+	(ppc64_elf_ha_reloc): Adjust addend for highera34 and highesta34
+	relocs.
+	(ppc64_elf_prefix_reloc): New function.
+	(struct ppc_link_hash_table): Add notoc_plt.
+	(is_branch_reloc): Add R_PPC64_PLTCALL_NOTOC.
+	(is_plt_seq_reloc): Add R_PPC64_PLT_PCREL34,
+	R_PPC64_PLT_PCREL34_NOTOC, and R_PPC64_PLTSEQ_NOTOC.
+	(ppc64_elf_check_relocs): Handle pcrel got and plt relocs.  Set
+	has_pltcall for section on seeing R_PPC64_PLTCALL_NOTOC.  Handle
+	possible need for dynamic relocs on non-pcrel powerxx relocs.
+	(dec_dynrel_count): Handle non-pcrel powerxx relocs.
+	(ppc64_elf_inline_plt): Handle R_PPC64_PLTCALL_NOTOC.
+	(toc_adjusting_stub_needed): Likewise.
+	(ppc64_elf_tls_optimize): Handle R_PPC64_PLTSEQ_NOTOC.
+	(ppc64_elf_relocate_section): Handle new powerxx relocs.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Regenerate.
+
+2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* config.bfd (targ_cpu): Process bpf-*-none only if BFD64.
+	* configure.ac: Set target_size=64 for bpf_elf64_le_vec and
+	bpf_elf64_be_vec.
+	* configure: Regenerate.
+
+2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* configure: Regenerated.
+	* Makefile.am (ALL_MACHINES): Add cpu-bpf.lo.
+	(ALL_MACHINES_CFILES): Add cpu-bpf.c.
+	(BFD64_BACKENDS): Add elf64-bpf.lo.
+	(BFD64_BACKENDS_CFILES): Add elf64-bpf.c.
+	* Makefile.in (SOURCE_HFILES): Regenerate.
+	* config.bfd (targ_cpu): Handle bpf-*-* targets.
+	* cpu-bpf.c: New file.
+	* elf64-bpf.c: Likewise.
+	* targets.c (_bfd_target_vector): Add bpf_elf64_be_vec and
+	bpf_elf64_le_vec.
+	* archures.c: Define architecture bfd_arch_bpf and machine
+	bfd_arch_bpf.
+	* reloc.c: Define BFD relocations used by the BPF target.
+	* bfd-in2.h: Regenerated.
+	* libbfd.h: Likewise.
+
+2019-05-22  Alan Modra  <amodra@gmail.com>
+
+	* elf32-arm.c (arm_allocate_glue_section_space): Clear section
+	contents.
+
+2019-05-22  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (_bfd_vms_write_etir): Don't attempt further
+	processing on "size error in section".
+
+2019-05-22  Alan Modra  <amodra@gmail.com>
+
+	* som.c (som_bfd_free_cached_info): Call
+	_bfd_generic_close_and_cleanup.
+
+2019-05-21  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+
+	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Generate error
+	for TLS_TPREL_HI16(/LO16) relocations in shared library.
+
+2019-05-21  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+
+	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Add NULL pointer
+	checks.  Search the RELA table for n64 relocations.
+
+2019-05-21  Matthew Fortune  <matthew.fortune@mips.com>
+	    Faraz Shahbazker  <fshahbazker@wavecomp.com>
+
+	* elfxx-mips.c (LA25_BC): New macro.
+	(mips_elf_link_hash_table)<compact_branches>: New field.
+	(STUB_JALRC): New macro.
+	(mipsr6_o32_exec_plt0_entry_compact): New array.
+	(mipsr6_n32_exec_plt0_entry_compact): Likewise.
+	(mipsr6_n64_exec_plt0_entry_compact): Likewise.
+	(mipsr6_exec_plt_entry_compact): Likewise.
+	(mips_elf_create_la25_stub): Use BC instead of J for stubs
+	when compact_branches is true.
+	(_bfd_mips_elf_finish_dynamic_symbol): Choose the compact
+	PLT for MIPSR6 with compact_branches.  Do not reorder the
+	compact branches PLT.  Switch the lazy stub for MIPSR6
+	with compact_branches to use JALRC.
+	(mips_finish_exec_plt): Choose the compact PLT0 for MIPSR6
+	when compact_branches is true.
+	(_bfd_mips_elf_compact_branches): New function.
+	* elfxx-mips.h (_bfd_mips_elf_compact_branches): New prototype.
+
+2019-05-21  Tamar Christina  <tamar.christina@arm.com>
+
+	PR ld/24373
+	* elfnn-aarch64.c (_bfd_aarch64_erratum_843419_branch_to_stub):
+	Fix print formatter.
+
+2019-05-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+	PR 24460
+	* elf32-arm.c (get_value_helper): Remove.
+	(elf32_arm_final_link_relocate): Fix branch future relocations.
+
+2019-05-21  Tamar Christina  <tamar.christina@arm.com>
+
+	PR ld/24373
+	* bfd-in.h (enum erratum_84319_opts): New
+	(bfd_elf64_aarch64_set_options, bfd_elf32_aarch64_set_options): Change
+	int to enum erratum_84319_opts.
+	* bfd-in2.h: Regenerate.
+	* elfnn-aarch64.c (struct elf_aarch64_link_hash_table): Change
+	fix_erratum_843419 to use new enum, remove fix_erratum_843419_adr.
+	(_bfd_aarch64_add_stub_entry_after): Conditionally create erratum stub.
+	(aarch64_size_one_stub): Conditionally size erratum 843419 stubs.
+	(_bfd_aarch64_resize_stubs): Amend comment.
+	(elfNN_aarch64_size_stubs): Don't generate stubs when no workaround
+	requested.
+	(bfd_elfNN_aarch64_set_options): Use new fix_erratum_843419 enum.
+	(_bfd_aarch64_erratum_843419_branch_to_stub): Implement selection of
+	erratum workaround.
+	(clear_erratum_843419_entry): Update erratum conditional.
+
+2019-05-21  Senthil Kumar Selvaraj  <senthilkumar.selvaraj@microchip.com>
+
+	PR ld/24571
+	* bfd/elf32-avr.c (elf32_avr_relax_section): Adjust range check
+	when computing distance_short_enough.
+
+2019-05-21  Senthil Kumar Selvaraj  <senthilkumar.selvaraj@microchip.com>
+
+	PR ld/24564
+	* bfd/elf32-avr.c (avr_relative_distance_considering_wrap_around):
+	Wrap around even if distance equals avr_pc_wrap_around.
+
+2019-05-20  Nick Clifton  <nickc@redhat.com>
+
+	* po/fr.po: Updated French translation.
+
+2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+	* elf32-arm.c (elf32_arm_merge_eabi_attributes): Add case for Tag_MVE_arch.
+
+2019-05-16  Alan Modra  <amodra@gmail.com>
+
+	* elf32-arm.c (elf32_arm_write_section): Revert last change.
+
+2019-05-15  Alan Modra  <amodra@gmail.com>
+
+	* elf32-arm.c (elf32_arm_write_section): Don't leave
+	error case of STM32L4XX_ERRATUM_BRANCH_TO_VENEER with
+	unitialised section contents.
+
+2019-05-14  Jamey Hicks  <jamey.hicks@gmail.com>
+
+	PR 19921
+	* verilog.c: (VerilogDataWidth): New variable.
+	(verilog_write_record): Emit bytes in VerilogDataWidth bundles.
+
+2019-05-08  Nick Clifton  <nickc@redhat.com>
+
+	PR 24523
+	* elf32-m68k.c (elf32_m68k_merge_private_bfd_data): Return TRUE
+	rather than FALSE if encountering a non-ELF file.
+
+2019-05-06  Alan Modra  <amodra@gmail.com>
+
+	* elf32-pj.c (pj_elf_reloc): Don't report undefined weak as an error.
+
+2019-05-06  Alan Modra  <amodra@gmail.com>
+
+	* reloc.c (BFD_RELOC_PPC64_TPREL16_HIGH, BFD_RELOC_PPC64_TPREL16_HIGHA),
+	(BFD_RELOC_PPC64_DTPREL16_HIGH, BFD_RELOC_PPC64_DTPREL16_HIGHA):
+	Sort before BFD_RELOC_PPC64_DTPREL16_HIGHESTA entry.
+	* libbfd.h: Regenerate.
+	* bfd-in2.h: Regenerate.
+
+2019-05-04  Alan Modra  <amodra@gmail.com>
+
+	PR 24511
+	* syms.c (coff_section_type): Only allow '.', '$' and numeric
+	following the standard section names.
+	(bfd_decode_symclass): Prioritize section flag tests in
+	decode_section_type before name tests in coff_section_type.
+	* plugin.c (bfd_plugin_canonicalize_symtab): Init fake_section
+	and fake_common_section using BFD_FAKE_SECTION.  Use "fake" as
+	their names and choose standard .text section flags for
+	fake_section.
+
+2019-05-02  Nick Clifton  <nickc@redhat.com>
+
+	PR 24493
+	* coffcode.h (styp_to_sec_flags): Treat .gnu.debuglink and
+	.gnu.debugaltlink sections as debugging sections.
+
+2019-04-30  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (struct ppc64_elf_obj_tdata): Add has_gotrel.
+	(struct _ppc64_elf_section_data): Likewise.
+	(ppc64_elf_check_relocs): Set above fields.
+	(ppc64_elf_edit_toc): Add a pass over GOT relocs.
+	(ppc64_elf_relocate_section): Edit GOT indirect to GOT relative
+	when possible.
+
+2019-04-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24486
+	* elflink.c (elf_link_output_extsym): Don't complain undefined
+	weak dynamic reference.
+
+2019-04-25  Sudakshina Das  <sudi.das@arm.com>
+
+	* elfnn-aarch64.c (PLT_BTI_ENTRY_SIZE): Remove.
+	(PLT_BTI_TLSDESC_ENTRY_SIZE): Remove.
+	(PLT_PAC_ENTRY_SIZE, PLT_BTI_PAC_ENTRY_SIZE): Remove.
+	(PLT_BTI_SMALL_ENTRY_SIZE, PLT_PAC_SMALL_ENTRY_SIZE): Update.
+	(elfNN_aarch64_small_plt0_pac_entry): Remove.
+	(elfNN_aarch64_small_plt0_bti_pac_entry): Remove.
+	(elfNN_aarch64_small_plt0_bti_entry): Update.
+	(elfNN_aarch64_small_plt_bti_entry): Update.
+	(elfNN_aarch64_small_plt_pac_entry): Update.
+	(elfNN_aarch64_tlsdesc_small_plt_bti_entry): Update.
+	(setup_plt_values): Setup new entries.
+	(elfNN_aarch64_finish_dynamic_sections): Remove size change.
+	(elfNN_aarch64_plt_sym_val): Likewise.
+
+2019-04-22  Jim Wilson  <jimw@sifive.com>
+
+	* elfnn-riscv.c (PRSTATUS_SIZE) [ARCH_SIZE==32]: Change from 0 to 204.
+
+2019-04-19  Alan Modra  <amodra@gmail.com>
+
+	* elf32-s12z.c (elf_backend_can_gc_sections): Don't define
+
+2019-04-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf64-x86-64.c (elf_x86_64_need_pic): Suggest -fPIE when not
+	building shared object.
+	* elfxx-x86.c (_bfd_x86_elf_size_dynamic_sections): Likewise.
+
+2019-04-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24458
+	* elfxx-x86.h (SYMBOL_DEFINED_NON_SHARED_P): Also check x86
+	linker_def.
+
+2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+	* reloc.c (BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM): New internal
+	relocation.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Likewise.
+
+2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+
+	* reloc.c (BFD_RELOC_ARM_THUMB_LOOP12): New.
+	* bfd-in2.h: Regenerated.
+	* libbfd.h: Regenerated.
+
+2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+
+	* reloc.c (BFD_RELOC_THUMB_PCREL_BFCSEL): New relocation.
+	* bfd-in2.h: Regenerated.
+	* libbfd.h: Likewise.
+
+2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+
+	* reloc.c (BFD_RELOC_ARM_THUMB_BF13): New.
+	* bfd-in2.h: Regenerated.
+	* libbfd.h: Regenerated.
+	* elf32-arm.c (elf32_arm_howto_table_1): New entry for R_ARM_THM_BF13.
+	(elf32_arm_reloc_map elf32_arm_reloc_map): Map BFD_RELOC_ARM_THUMB_BF13
+	and R_ARM_THM_BF12 together.
+	(elf32_arm_final_link_relocate): New switch case for R_ARM_THM_BF13.
+
+2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+
+	* reloc.c (BFD_RELOC_ARM_THUMB_BF19): New
+	* libbfd.h: Regenerated.
+	* bfd-in2.h: Regenerated.
+	* bfd-elf32-arm.c (elf32_arm_howto_table_1): New entry for R_ARM_THM_BF18.
+	(elf32_arm_reloc_map elf32_arm_reloc_map): Map BFD_RELOC_ARM_THUMB_BF19
+	and R_ARM_THM_BF18 together.
+	(elf32_arm_final_link_relocate): New switch case for R_ARM_THM_BF19.
+
+2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+
+	* reloc.c (BFD_RELOC_ARM_THUMB_BF17): New enum.
+	* bfd-in2.h: Regenerated.
+	* libbfd.h: Regenerated.
+	* bfd-elf32-arm.c (elf32_arm_howto_table_1): New entry for R_ARM_THM_BF16.
+	(elf32_arm_reloc_map elf32_arm_reloc_map): Map BFD_RELOC_ARM_THUMB_BF17
+	and R_ARM_THM_BF16 together.
+	(get_value_helper): New reloc helper.
+	(elf32_arm_final_link_relocate): New switch case for R_ARM_THM_BF16.
+
+2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+
+	* reloc.c (BFD_RELOC_THUMB_PCREL_BRANCH5): New enum.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Regenerate.
+
+2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+	* archures.c (bfd_mach_arm_8_1M_MAIN): Define.
+	* bfd-in2.h: Regenerate.
+	* cpu-arm.c (arch_info_struct): Add entry for Armv8.1-M Mainline.
+	* elf32-arm.c (using_thumb_only): Return true for Armv8.1-M Mainline
+	and update assert.
+	(using_thumb2): Likewise.
+	(using_thumb2_bl): Update assert.
+	(arch_has_arm_nop): Likewise.
+	(bfd_arm_get_mach_from_attributes): Add case for Armv8.1-M Mainline.
+	(tag_cpu_arch_combine): Add logic for Armv8.1-M Mainline merging.
+
+2019-04-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf-linker-x86.h (elf_x86_cet_report): New.
+	(elf_linker_x86_params): Add cet_report.
+	* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Report
+	missing IBT and SHSTK properties if needed.
+
+2019-04-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24436
+	* elf-m10300.c (mn10300_elf_check_relocs): Remove BFD_ASSERT of
+	"h != NULL".  Don't check "h != NULL" before calling.
+	bfd_elf_gc_record_vtentry.
+	* elf32-arm.c (elf32_arm_check_relocs): Likewise.
+	* elf32-bfin.c (bfin_check_relocs): Likewise.
+	* elf32-cris.c (cris_elf_check_relocs): Likewise.
+	* elf32-csky.c (csky_elf_check_relocs): Likewise.
+	* elf32-d10v.c (elf32_d10v_check_relocs): Likewise.
+	* elf32-dlx.c (elf32_dlx_check_relocs): Likewise.
+	* elf32-fr30.c (fr30_elf_check_relocs): Likewise.
+	* elf32-frv.c (elf32_frv_check_relocs): Likewise.
+	* elf32-hppa.c (elf32_hppa_check_relocs): Likewise.
+	* elf32-i386.c (elf_i386_check_relocs): Likewise.
+	* elf32-iq2000.c (iq2000_elf_check_relocs): Likewise.
+	* elf32-m32r.c (m32r_elf_check_relocs): Likewise.
+	* elf32-m68hc1x.c (elf32_m68hc11_check_relocs): Likewise.
+	* elf32-m68k.c (elf_m68k_check_relocs): Likewise.
+	* elf32-mcore.c (mcore_elf_check_relocs): Likewise.
+	* elf32-metag.c (elf_metag_check_relocs): Likewise.
+	* elf32-or1k.c (or1k_elf_check_relocs): Likewise.
+	* elf32-ppc.c (ppc_elf_check_relocs): Likewise.
+	* elf32-s390.c (elf_s390_check_relocs): Likewise.
+	* elf32-sh.c (sh_elf_check_relocs): Likewise.
+	* elf32-v850.c (v850_elf_check_relocs): Likewise.
+	* elf32-vax.c (elf_vax_check_relocs): Likewise.
+	* elf32-xstormy16.c (xstormy16_elf_check_relocs): Likewise.
+	* elf32-xtensa.c (elf_xtensa_check_relocs): Likewise.
+	* elf64-mmix.c (mmix_elf_check_relocs): Likewise.
+	* elf64-ppc.c (ppc64_elf_check_relocs): Likewise.
+	* elf64-s390.c (elf_s390_check_relocs): Likewise.
+	* elf64-x86-64.c (elf_s390_check_relocs): Likewise.
+	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Likewise.
+	* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Likewise.
+	* elflink.c (bfd_elf_gc_record_vtinherit): Check for corrupt
+	VTENTRY entry.
+
+2019-04-11  Alan Modra  <amodra@gmail.com>
+
+	PR 24435
+	* elflink.c (elf_link_add_object_symbols): Don't read partial
+	dynamic entries from fuzzed objects.
+
+2019-04-11  Tamar Christina  <tamar.christina@arm.com>
+
+	PR ld/24302
+	* elfnn-aarch64.c (elfNN_aarch64_size_dynamic_sections): Don't emit
+	DT_TLSDESC_GOT and DT_TLSDESC_PLT when DF_BIND_NOW.
+	(elfNN_aarch64_finish_dynamic_sections): Don't write PLT if DF_BIND_NOW.
+
+2019-04-10  Michael Forney  <mforney@mforney.org>
+
+	PR 24427
+	* doc/chew.c (free_words): Correctly free "push_text" strings.
+
+2019-04-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config.bfd: Remove i[3-7]86-*-kaos* and i[3-7]86-*-chaos targets.
+
+2019-04-08  Alan Modra  <amodra@gmail.com>
+
+	* configure.ac (elfxx_x86): Define and use.
+	* configure: Regenerate.
+
+2019-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf-linker-x86.h: New file.
+	* elf32-i386.c (elf_i386_convert_load_reloc): Use htab->params
+	to get x86-specific linker options.
+	* elf64-x86-64.c (elf_x86_64_convert_load_reloc): Likewise.
+	(elf_x86_64_check_relocs): Likewise.
+	(elf_x86_64_relocate_section): Likewise.
+	(elf_x86_64_link_setup_gnu_properties): Likewise.
+	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Likewise.
+	(_bfd_x86_elf_link_setup_gnu_properties): Likewise.
+	(_bfd_elf_linker_x86_set_options): New function.
+	* elfxx-x86.h: Include "elf-linker-x86.h".
+	(elf_x86_link_hash_table): Add params.
+
+2019-04-03  Alan Modra  <amodra@gmail.com>
+
+	* coff-i386.c, * coff-x86_64.c, * coffgen.c, * dwarf2.c,
+	* elf-m10200.c, * elf.c, * elf32-arm.c, * elf32-bfin.c,
+	* elf32-csky.c, * elf32-m32r.c, * elf32-microblaze.c, * elf32-pru.c,
+	* elf32-rx.c, * elf32-xgate.c, * elf64-sparc.c, * elfnn-ia64.c,
+	* elfxx-riscv.c, * elfxx-sparc.c, * linker.c, * mach-o.c,
+	* pe-x86_64.c, * pei-x86_64.c, * plugin.c: Whitespace fixes.
+
+2019-04-02  Jim Wilson  <jimw@sifive.com>
+
+	PR 24389
+	* elfnn-riscv.c (_bfd_riscv_elf_merge_private_bfd_data): Move read of
+	ELF header flags to after check for ELF object file.  Loop through
+	sections looking for code sections, if none, then skip ABI checks.
+
+2019-03-30  Andrew Waterman  <andrew@sifive.com>
+
+	* elfnn-riscv.c (_bfd_riscv_relax_call): Only check ARCH_SIZE for
+	rd == X_RA case.
+
+2019-03-29  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* elf32-xtensa.c (shrink_dynamic_reloc_sections): Add
+	info->export_dynamic to the conditional.
+
+2019-03-28  Alan Modra  <amodra@gmail.com>
+
+	PR 24392
+	* configure.ac: Invoke AC_CHECK_SIZEOF(int).
+	* configure: Regenerate.
+	* coffgen.c (coff_get_reloc_upper_bound): Replace gcc diagnostic
+	workaround with SIZEOF_LONG vs. SIZEOF_INT check.
+	* elf.c (_bfd_elf_get_reloc_upper_bound): Likewise.
+	* elf64-sparc.c (elf64_sparc_get_reloc_upper_bound): Likewise.
+	* mach-o.c (bfd_mach_o_get_reloc_upper_bound): Likewise.
+
+2019-03-21  Jim Wilson  <jimw@sifive.com>
+
+	PR 24365
+	* elfnn-riscv.c (riscv_elf_relocate_section): For STT_SECTION check,
+	verify sym non-NULL before using.  Add identical check using h.
+
+2019-03-21  Sudakshina Das  <sudi.das@arm.com>
+
+	* elf-bfd.h (struct elf_backend_data): Add argument to
+	merge_gnu_properties.
+	* elf-properties.c (elf_merge_gnu_properties): Add argument to
+	itself and while calling bed->merge_gnu_properties.
+	(elf_merge_gnu_property_list): Update the calls for
+	elf_merge_gnu_properties.
+	* elfnn-aarch64.c (elfNN_aarch64_merge_gnu_properties): Update handling
+	of --force-bti warning and add argument.
+	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Add
+	warning.
+	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Add argument.
+	* elfxx-x86.h (_bfd_x86_elf_merge_gnu_properties): Likewise in
+	declaration.
+
+2019-03-20  Sudakshina Das  <sudi.das@arm.com>
+
+	* elfxx-aarch64.c (_bfd_aarch64_elf_link_fixup_gnu_properties): Define.
+	* elfxx-aarch64.h (_bfd_aarch64_elf_link_fixup_gnu_properties): Declare.
+	(elf_backend_fixup_gnu_properties): Define for AArch64.
+
+2019-03-18  Alan Modra  <amodra@gmail.com>
+
+	PR 24355
+	* elf32-ppc.c (ppc_finish_symbols): Don't call write_glink_stub
+	for local iplt syms with ent->plt.offset == -1.  Remove ineffective
+	attempt at writing glink stubs only once.
+
+2019-03-16  Alan Modra  <amodra@gmail.com>
+
+	PR 24337
+	* elf.c (_bfd_elf_rela_local_sym): Revert last change.
+	(_bfd_elf_rel_local_sym): Likewise.
+	* elflink.c (elf_link_input_bfd): Use bfd_und_section for
+	section of symbols with unrecognized shndx.
+
+2019-03-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24267
+	* coffgen.c (_bfd_coff_section_already_linked): Skip discarded
+	section.
+	* cofflink.c (coff_link_add_symbols): Check for symbols defined
+	in discarded section.
+
+2019-03-15  Alan Modra  <amodra@gmail.com>
+
+	PR 24339
+	* elflink.c (elf_link_add_object_symbols): Bail out on a local
+	symbol after globals if elf_bad_symtab is not set.
+
+2019-03-15  Alan Modra  <amodra@gmail.com>
+
+	PR 24337
+	* elf.c (_bfd_elf_rela_local_sym): Don't segfault on NULL sec.
+	(_bfd_elf_rel_local_sym): Likewise.
+
+2019-03-15  Alan Modra  <amodra@gmail.com>
+
+	PR 24336
+	* elflink.c (elf_link_read_relocs_from_section): Handle fuzzed
+	object files with sh_size not a multiple of sh_entsize.
+
+2019-03-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24338
+	* elf64-x86-64.c (elf_x86_64_relocate_section): Check for corrupt
+	input with bad relocation.
+
+22019-03-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf64-x86-64.c (elf_x86_64_relocate_section): Re-indent.
+
+2019-03-14  Nick Clifton  <nickc@redhat.com>
+
+	PR 24334
+	* dwarf2.c (struct dwarf2_debug): Add sec_vma_count field.
+	(save_section_vma): Initialise field to the number of entries in
+	the sec_vma table.
+	(section_vma_same): Check that the number of entries in the
+	sec_vma table matches the number of sections in the bfd.
+
+2019-03-14  Nick Clifton  <nickc@redhat.com>
+
+	PR 24333
+	* elflink.c (_bfd_elf_add_default_symbol): Add a check for a NULL
+	section owner pointer when adding the default symbol.
+
+2019-03-14  Nick Clifton  <nickc@redhat.com>
+
+	PR 24332
+	* elflink.c (elf_link_add_object_symbols): Add new local variable
+	extversym_end.  Initialise it to point to the end of the version
+	symbol table, if present.  Check it when initialising and updating
+	the ever pointer.
+
+2019-03-13  Sudakshina Das  <sudi.das@arm.com>
+
+	* elfnn-aarch64.c (PLT_PAC_ENTRY_SIZE, PLT_PAC_SMALL_ENTRY_SIZE): New.
+	(PLT_BTI_PAC_ENTRY_SIZE, PLT_BTI_PAC_SMALL_ENTRY_SIZE): New.
+	(setup_plt_values): Account for PAC or PAC and BTI enabled PLTs.
+	(elfNN_aarch64_size_dynamic_sections): Add checks for PLT_BTI_PAC
+	and PLT_PAC_PLT.
+	(elfNN_aarch64_finish_dynamic_sections): Account for PLT_BTI_PAC.
+	(get_plt_type): Add case for DT_AARCH64_PAC_PLT.
+	(elfNN_aarch64_plt_sym_val): Add cases for PLT_BTI_PAC and PLT_PAC.
+
+2019-03-13  Sudakshina Das  <sudi.das@arm.com>
+	    Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	* bfd-in.h (aarch64_plt_type, aarch64_enable_bti_type): New.
+	(aarch64_bti_pac_info): New.
+	(bfd_elf64_aarch64_set_options): Add aarch64_bti_pac_info argument.
+	(bfd_elf32_aarch64_set_options): Likewise.
+	* bfd-in2.h: Regenerate
+	* elfnn-aarch64.c (PLT_BTI_ENTRY_SIZE): New.
+	(PLT_BTI_SMALL_ENTRY_SIZE, PLT_BTI_TLSDESC_ENTRY_SIZE): New.
+	(elfNN_aarch64_small_plt0_bti_entry): New.
+	(elfNN_aarch64_small_plt_bti_entry): New.
+	(elfNN_aarch64_tlsdesc_small_plt_bti_entry): New.
+	(elf_aarch64_obj_tdata): Add no_bti_warn and plt_type fields.
+	(elf_aarch64_link_hash_table): Add plt0_entry, plt_entry and
+	tlsdesc_plt_entry_size fields.
+	(elfNN_aarch64_link_hash_table_create): Initialise the new fields.
+	(setup_plt_values): New helper function.
+	(bfd_elfNN_aarch64_set_options): Use new bp_info to set plt sizes and
+	bti enable type.
+	(elfNN_aarch64_allocate_dynrelocs): Use new size members instead of
+	fixed macros.
+	(elfNN_aarch64_size_dynamic_sections): Likewise and add checks.
+	(elfNN_aarch64_create_small_pltn_entry): Use new generic pointers
+	to plt stubs instead of fixed ones and update filling them according
+	to the need for bti.
+	(elfNN_aarch64_init_small_plt0_entry): Likewise.
+	(elfNN_aarch64_finish_dynamic_sections): Likewise.
+	(get_plt_type, elfNN_aarch64_get_synthetic_symtab): New.
+	(elfNN_aarch64_plt_sym_val): Update size accordingly.
+	(elfNN_aarch64_link_setup_gnu_properties): Set up plts if BTI GNU NOTE
+	is set.
+	(bfd_elfNN_get_synthetic_symtab): Define.
+	(elfNN_aarch64_merge_gnu_properties): Give out warning with --force-bti
+	and mising BTI NOTE SECTION.
+
+
+2019-03-13  Sudakshina Das  <sudi.das@arm.com>
+
+	* elf-properties.c (_bfd_elf_link_setup_gnu_properties): Exclude
+	linker created inputs from merge.
+	* elfnn-aarch64.c (struct elf_aarch64_obj_tdata): Add field for
+	GNU_PROPERTY_AARCH64_FEATURE_1_AND properties.
+	(elfNN_aarch64_link_setup_gnu_properties): New.
+	(elfNN_aarch64_merge_gnu_properties): New.
+	(elf_backend_setup_gnu_properties): Define for AArch64.
+	(elf_backend_merge_gnu_properties): Likewise.
+	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Define.
+	(_bfd_aarch64_elf_parse_gnu_properties): Define.
+	(_bfd_aarch64_elf_merge_gnu_properties): Define.
+	* elfxx-aarch64.h (_bfd_aarch64_elf_link_setup_gnu_properties): Declare.
+	(_bfd_aarch64_elf_parse_gnu_properties): Declare.
+	(_bfd_aarch64_elf_merge_gnu_properties): Declare.
+	(elf_backend_parse_gnu_properties): Define for AArch64.
+
+2019-03-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24322
+	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Properly
+	merge GNU_PROPERTY_X86_FEATURE_1_[IBT|SHSTK].
+
+2019-03-12  Alan Modra  <amodra@gmail.com>
+
+	* coffcode.h (buy_and_read): Delete unnecessary forward decl.  Add
+	nmemb parameter.  Use bfd_alloc2.
+	(coff_slurp_line_table): Use bfd_alloc2.  Update buy_and_read calls.
+	Delete assertion.
+	(coff_slurp_symbol_table): Use bfd_alloc2 and bfd_zalloc2.
+	(coff_slurp_reloc_table): Use bfd_alloc2.  Update buy_and_read calls.
+	* coffgen.c (coff_get_reloc_upper_bound): Ensure size calculation
+	doesn't overflow.
+	* elf.c (bfd_section_from_shdr): Use bfd_zalloc2.  Style fix.
+	(assign_section_numbers): Style fix.
+	(swap_out_syms): Use bfd_malloc2.
+	(_bfd_elf_get_reloc_upper_bound): Ensure size calculation doesn't
+	overflow.
+	(_bfd_elf_make_empty_symbol): Style fix.
+	(elfobj_grok_stapsdt_note_1): Formatting.
+	* elfcode.h (elf_object_p): Use bfd_alloc2.
+	(elf_write_relocs, elf_write_shdrs_and_ehdr): Likewise.
+	(elf_slurp_symbol_table): Use bfd_zalloc2.
+	(elf_slurp_reloc_table): Use bfd_alloc2.
+	(_bfd_elf_bfd_from_remote_memory): Use bfd_malloc2.
+	* elf64-sparc (elf64_sparc_get_reloc_upper_bound): Ensure
+	size calculation doesn't overflow.
+	(elf64_sparc_get_dynamic_reloc_upper_bound): Likewise.
+	* mach-o.c (bfd_mach_o_get_reloc_upper_bound): Likewise.
+	* pdp11.c (get_reloc_upper_bound): Copy aoutx.h version.
+
+2019-03-08  Alan Modra  <amodra@gmail.com>
+
+	PR 24311
+	* merge.c (merge_strings): Return secinfo.  Don't pad section
+	to alignment here.
+	(_bfd_merge_sections): Pad section to alignment here, if input
+	sections contributing to merged output all pad to alignment.
+	Formatting.
+
+2019-03-06  Nick Clifton  <nickc@redhat.com>
+
+	* dwarf2.c (_bfd_dwarf2_find_symbol_bias): Check for a NULL symbol
+	table pointer.
+	* coffgen.c (coff_find_nearest_line_with_names): Do not call
+	_bfd_dwarf2_find_symbol_bias if there is no symbol table available.
+
+2019-03-01  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+	This reverts commit 5a12586d44fa8d5dfc74cbca4f2f36a273a16335.
+	2019-01-14  Maamoun Tarsha  <maamountk@hotmail.com>
+
+	PR 20113
+	* elf32-s390.c (allocate_dynrelocs): Update comment.
+
+2019-02-28  Tamar Christina  <tamar.christina@arm.com>
+
+	* elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Correct CIE parse.
+
+2019-02-28  Nick Clifton  <nickc@redhat.com>
+
+	PR 24273
+	* elf.c (bfd_elf_string_from_elf_section): Check for a string
+	section that is not NUL terminated.
+
+2019-02-27  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24276
+	* elf64-x86-64.c (elf_x86_64_check_relocs): Skip symbol defined
+	by linker when checking copy reloc on protected symbol.
+
+2019-02-24  Alan Modra  <amodra@gmail.com>
+
+	PR 24144
+	* pdp11.c (set_section_contents): Revert 2015-02-24 change.
+
+2019-02-20  Eric Tsai  <erictsai@cadence.com>
+
+	* elf32-xtensa.c (is_resolvable_asm_expansion): Scan output
+	sections between the call site and call destination and adjust
+	call distance by the largest alignment.
+
+2019-02-20  Alan Hayward  <alan.hayward@arm.com>
+
+	* elf-bfd.h (elfcore_write_aarch_pauth): Add declaration.
+	* elf.c (elfcore_grok_aarch_pauth): New function.
+	(elfcore_grok_note): Check for NT_ARM_PAC_MASK.
+	(elfcore_write_aarch_pauth): New function.
+	(elfcore_write_register_note): Check for AArch64 pauth section.
+
+2019-02-20  Alan Modra  <amodra@gmail.com>
+
+	PR 24225
+	* elf32-nios2.c (nios2_elf32_relocate_section): Check asprintf
+	return value.
+
+2019-02-20  Michael Roitzsch  <reactorcontrol@icloud.com>
+
+	* configure.ac (SHARED_LIBADD): Add -liberty -lintl for all
+	Darwin hosts, not just or1k.
+	* configure: Regenerate.
+
+2019-02-20  Alan Modra  <amodra@gmail.com>
+
+	PR 24236
+	* archive64.c (_bfd_archive_64_bit_slurp_armap): Move code adding
+	sentinel NUL to string buffer nearer to loop where it is used.
+	Don't go past sentinel when scanning strings, and don't write
+	NUL again.
+	* archive.c (do_slurp_coff_armap): Simplify string handling to
+	archive64.c style.
+
+2019-02-19  Alan Modra  <amodra@gmail.com>
+
+	PR 24235
+	* pei-x86_64.c (pex64_bfd_print_pdata_section): Correct checks
+	attempting to prevent read past end of section.
+
+2019-02-18  Alan Modra  <amodra@gmail.com>
+
+	PR 24225
+	* elf32-nios2.c (nios2_elf32_relocate_section): Use asprintf and
+	PRIx64 to generate warning messages.  Print local sym names too.
+
+2019-02-09  Vineet Gupta  <vgupta@synopsys.com>
+
+	* elf32-arc (INIT_SYM_STRING): Delete.
+	(FINI_SYM_STRING): Likewise.
+	(init_str): Likewise.
+	(fini_str): Likewise.
+
+2019-02-08  Alan Modra  <amodra@gmail.com>
+
+	* elf32-ppc.c (ppc_elf_relocate_section): Add %X to "unsupported
+	for bss-plt" warning to make it an error.
+
+2019-02-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+	PR ld/18841
+	* elf32-sparc.c (elf32_sparc_reloc_type_class): Return
+	reloc_class_ifunc for ifunc symbols.
+	* elf64-sparc.c (elf64_sparc_reloc_type_class): Likewise.
+
+2019-02-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* elf32-visium.c (visium_elf_howto_parity_reloc): Minor tweak.
+	<R_VISIUM_PC16>: Use explicit range test to detect an overflow.
+
+2019-02-07  Nick Clifton  <nickc@redhat.com>
+
+	* config.bfd: Move the powerpc-lynxos and powerpc-windiss targets
+	into the definitely obsolete list.
+
+2019-02-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24151
+	* elf64-x86-64.c (elf_x86_64_need_pic): Check
+	SYMBOL_DEFINED_NON_SHARED_P instead of def_regular.
+	(elf_x86_64_relocate_section): Move PIC check for PC-relative
+	relocations to ...
+	(elf_x86_64_check_relocs): Here.
+	(elf_x86_64_finish_dynamic_symbol): Use SYMBOL_DEFINED_NON_SHARED_P
+	to check if a symbol is defined in a non-shared object.
+	* elfxx-x86.h (SYMBOL_DEFINED_NON_SHARED_P): New.
+
+2019-01-21  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* elf32-arm.c (elf32_arm_final_link_relocate): Use 'llabs' instead
+	of 'labs' (and fix GCC warning).
+
+2019-01-25  Nick Clifton  <nickc@redhat.com>
+
+	* po/ru.po: Updated Russian translation.
+
+2019-01-23  Nick Clifton  <nickc@redhat.com>
+
+	* po/fr.po: Updated French translation.
+
+2019-01-21  Nick Clifton  <nickc@redhat.com>
+
+	* po/pt.po: Updated Portuguese translation.
+	* po/uk.po: Updated Ukranian translation.
+
+2019-01-21  Yuri Chornoivan  <yurchor@ukr.net>
+
+	PR 24108
+	* elf32-nds32.c (nds32_relocate_section): Add space between words
+	in error message.
+	* elfnn-riscv.c (riscv_version_mismatch): Fix spelling mistake in
+	error message.
+	(riscv_i_or_e_p): Likewise.
+	(riscv_merge_arch_attr_info): Likewise.
+
+2019-01-19  Nick Clifton  <nickc@redhat.com>
+
+	* version.m4: Reset to 2.32.51
+	* configure: Regenerate.
+	* po/bfd.pot: Regenerate.
+
+2018-06-24  Nick Clifton  <nickc@redhat.com>
+
+	2.32 branch created.
+
+2019-01-16  Kito Cheng  <kito@andestech.com>
+
+	* elf-attrs.c (vendor_obj_attr_size): Return 0 if size is 0 even
+	for OBJ_ATTR_PROC.
+
+2019-01-16  Kito Cheng  <kito@andestech.com>
+	    Nelson Chu  <nelson@andestech.com>
+
+	* elfnn-riscv.c (in_subsets): New.
+	(out_subsets): Likewise.
+	(merged_subsets): Likewise.
+	(riscv_std_ext_p): Likewise.
+	(riscv_non_std_ext_p): Likewise.
+	(riscv_std_sv_ext_p): Likewise.
+	(riscv_non_std_sv_ext_p): Likewise.
+	(riscv_version_mismatch): Likewise.
+	(riscv_i_or_e_p): Likewise.
+	(riscv_merge_std_ext): Likewise.
+	(riscv_merge_non_std_and_sv_ext): Likewise.
+	(riscv_merge_arch_attr_info): Likewise.
+	(riscv_merge_attributes): Likewise.
+	(_bfd_riscv_elf_merge_private_bfd_data): Merge attribute.
+
+	* elfnn-riscv.c (riscv_elf_obj_attrs_arg_type): New.
+	(elf_backend_obj_attrs_vendor): Define.
+	(elf_backend_obj_attrs_section_type): Likewise.
+	(elf_backend_obj_attrs_section): Likewise.
+	(elf_backend_obj_attrs_arg_type): Define as
+	riscv_elf_obj_attrs_arg_type.
+	* elfxx-riscv.c (riscv_estimate_digit): New.
+	(riscv_estimate_arch_strlen1): Likewise.
+	(riscv_estimate_arch_strlen): Likewise.
+	(riscv_arch_str1): Likewise.
+	(riscv_arch_str): Likewise.
+	* elfxx-riscv.h (riscv_arch_str): Declare.
+
+2019-01-14  John Darrington <john@darrington.wattle.id.au>
+
+	* bfd-in2.h [BFD_RELOC_S12Z_OPR]: New reloc.
+	* libbfd.h: regen.
+	* elf32-s12z.c (eld_s12z_howto_table): R_S12Z_OPR takes non zero
+	source field.  (md_apply_fix): Apply final fix
+	to BFD_RELOC_S12Z_OPR.
+	* reloc.c[BFD_RELOC_S12Z_OPR]: New reloc.
+
+2019-01-14  Maamoun Tarsha  <maamountk@hotmail.com>
+
+	PR 20113
+	* elf32-s390.c (allocate_dynrelocs): Update comment.
+
+2019-01-09  Andrew Paprocki  <andrew@ishiboo.com>
+
+	* warning.m4: Adjust egrep pattern for non-GNU compilers.
+	* configure: Regenerate.
+
+2019-01-08  Alan Modra  <amodra@gmail.com>
+
+	PR 23699
+	PR 24065
+	* ihex.c (ihex_write_object_contents): Properly check 32-bit
+	address range.
+
+2019-01-05  Yoshinori Sato <ysato@users.sourceforge.jp>
+
+	* bfd/archures.c: Add bfd_mach_rx_v2 and bfd_mach_rx_v3.
+	* bfd/bfd-in2.h: Regenerate.
+	* bfd/cpu-rx.c (arch_info_struct): Add RXv2 and RXv3 entry.
+	* bfd/elf32-rx.c (elf32_rx_machine): Add RXv2 and RXv3 support.
+
+2019-01-04  Lifang Xia  <lifang_xia@c-sky.com>
+
+	* config.bfd (csky-*-elf* | csky-*-linux*): Modify the csky
+	default target, little endian target is more suitable.
+
+2019-01-04  Alan Modra  <amodra@gmail.com>
+
+	PR 24061
+	PR 21786
+	* coff-rs6000.c (GET_VALUE_IN_FIELD): Add base parameter and
+	adjust all callers.
+	(EQ_VALUE_IN_FIELD): Likewise.
+	* coff64-rs6000.c (GET_VALUE_IN_FIELD): Likewise.
+
+2019-01-01  Alan Modra  <amodra@gmail.com>
+
+	Update year range in copyright notice of all files.
+
+For older changes see ChangeLog-2018
+
+Copyright (C) 2019 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cisco-core.c ./bfd/cisco-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cisco-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cisco-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for CISCO crash dumps.
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -80,7 +80,7 @@ struct cisco_core_struct
 /* Examine the file for a crash info struct at the offset given by
    CRASH_INFO_LOC.  */
 
-static const bfd_target *
+static bfd_cleanup
 cisco_core_file_validate (bfd *abfd, int crash_info_loc)
 {
   char buf[4];
@@ -92,7 +92,7 @@ cisco_core_file_validate (bfd *abfd, int
   unsigned int rambase;
   sec_ptr asect;
   struct stat statbuf;
-  bfd_size_type amt;
+  size_t amt;
   flagword flags;
 
   if (bfd_seek (abfd, (file_ptr) crash_info_loc, SEEK_SET) != 0)
@@ -274,7 +274,7 @@ cisco_core_file_validate (bfd *abfd, int
   nread = statbuf.st_size - asect->filepos;
   asect->size = (nread < 1024) ? nread : 1024;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
   /* Get here if we have already started filling out the BFD
      and there is an error of some kind.  */
@@ -286,19 +286,19 @@ cisco_core_file_validate (bfd *abfd, int
   return NULL;
 }
 
-static const bfd_target *
+static bfd_cleanup
 cisco_core_file_p (bfd *abfd)
 {
   int *crash_info_locp;
-  const bfd_target *target = NULL;
+  bfd_cleanup cleanup = NULL;
 
   for (crash_info_locp = crash_info_locs;
-       *crash_info_locp != -1  &&  target == NULL;
+       *crash_info_locp != -1 && cleanup == NULL;
        crash_info_locp++)
     {
-      target = cisco_core_file_validate (abfd, *crash_info_locp);
+      cleanup = cisco_core_file_validate (abfd, *crash_info_locp);
     }
-  return (target);
+  return cleanup;
 }
 
 static char *
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff64-rs6000.c ./bfd/coff64-rs6000.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff64-rs6000.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff64-rs6000.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for IBM RS/6000 "XCOFF64" files.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
    Written Clinton Popetz.
    Contributed by Cygnus Support.
 
@@ -155,7 +155,7 @@ static bfd_boolean xcoff64_ppc_relocate_
    asection **);
 static bfd_boolean xcoff64_slurp_armap
   (bfd *);
-static const bfd_target *xcoff64_archive_p
+static bfd_cleanup xcoff64_archive_p
   (bfd *);
 static bfd *xcoff64_openr_next_archived_file
   (bfd *, bfd *);
@@ -238,7 +238,7 @@ bfd_boolean (*xcoff64_calculate_relocati
 #define coff_bfd_reloc_type_lookup xcoff64_reloc_type_lookup
 #define coff_bfd_reloc_name_lookup xcoff64_reloc_name_lookup
 #ifdef AIX_CORE
-extern const bfd_target * rs6000coff_core_p
+extern bfd_cleanup rs6000coff_core_p
   (bfd *abfd);
 extern bfd_boolean rs6000coff_core_file_matches_executable_p
   (bfd *cbfd, bfd *ebfd);
@@ -1249,10 +1249,11 @@ xcoff64_ppc_relocate_section (bfd *outpu
 	    {
 	      if (info->unresolved_syms_in_objects != RM_IGNORE
 		  && (h->flags & XCOFF_WAS_UNDEFINED) != 0)
-		(*info->callbacks->undefined_symbol)
+                info->callbacks->undefined_symbol
 		  (info, h->root.root.string, input_bfd, input_section,
 		   rel->r_vaddr - input_section->vma,
-		   info->unresolved_syms_in_objects == RM_GENERATE_ERROR);
+		   info->unresolved_syms_in_objects == RM_DIAGNOSE
+		   && !info->warn_unresolved_syms);
 
 	      if (h->root.type == bfd_link_hash_defined
 		  || h->root.type == bfd_link_hash_defweak)
@@ -1933,18 +1934,25 @@ xcoff64_slurp_armap (bfd *abfd)
     return FALSE;
 
   sz = bfd_scan_vma (hdr.size, (const char **) NULL, 10);
+  if (sz + 1 < 9)
+    {
+      bfd_set_error (bfd_error_bad_value);
+      return FALSE;
+    }
 
   /* Read in the entire symbol table.  */
-  contents = (bfd_byte *) bfd_alloc (abfd, sz);
+  contents = (bfd_byte *) _bfd_alloc_and_read (abfd, sz + 1, sz);
   if (contents == NULL)
     return FALSE;
-  if (bfd_bread (contents, sz, abfd) != sz)
-    return FALSE;
+
+  /* Ensure strings are NULL terminated so we don't wander off the end
+     of the buffer.  */
+  contents[sz] = 0;
 
   /* The symbol table starts with an eight byte count.  */
   c = H_GET_64 (abfd, contents);
 
-  if (c * 8 >= sz)
+  if (c >= sz / 8)
     {
       bfd_set_error (bfd_error_bad_value);
       return FALSE;
@@ -1984,14 +1992,14 @@ xcoff64_slurp_armap (bfd *abfd)
 
 /* See if this is an NEW XCOFF archive.  */
 
-static const bfd_target *
+static bfd_cleanup
 xcoff64_archive_p (bfd *abfd)
 {
   struct artdata *tdata_hold;
   char magic[SXCOFFARMAG];
   /* This is the new format.  */
   struct xcoff_ar_file_hdr_big hdr;
-  bfd_size_type amt = SXCOFFARMAG;
+  size_t amt = SXCOFFARMAG;
 
   if (bfd_bread (magic, amt, abfd) != amt)
     {
@@ -2051,7 +2059,7 @@ xcoff64_archive_p (bfd *abfd)
       return NULL;
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 
@@ -2798,7 +2806,7 @@ const bfd_target rs6000_xcoff64_vec =
     &bfd_xcoff_backend_data,
   };
 
-extern const bfd_target *xcoff64_core_p
+extern bfd_cleanup xcoff64_core_p
   (bfd *);
 extern bfd_boolean xcoff64_core_file_matches_executable_p
   (bfd *, bfd *);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-alpha.c ./bfd/coff-alpha.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-alpha.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-alpha.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for ALPHA Extended-Coff files.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Modified from coff-mips.c by Steve Chamberlain <sac@cygnus.com> and
    Ian Lance Taylor <ian@cygnus.com>.
 
@@ -398,10 +398,10 @@ static reloc_howto_type alpha_howto_tabl
 
 /* Recognize an Alpha ECOFF file.  */
 
-static const bfd_target *
+static bfd_cleanup
 alpha_ecoff_object_p (bfd *abfd)
 {
-  static const bfd_target *ret;
+  bfd_cleanup ret;
 
   ret = coff_object_p (abfd);
 
@@ -423,7 +423,7 @@ alpha_ecoff_object_p (bfd *abfd)
 	{
 	  bfd_size_type size;
 
-	  size = sec->line_filepos * 8;
+	  size = (bfd_size_type) sec->line_filepos * 8;
 	  BFD_ASSERT (size == sec->size
 		      || size + 8 == sec->size);
 	  if (!bfd_set_section_size (sec, size))
@@ -1127,13 +1127,11 @@ alpha_ecoff_get_relocated_section_conten
     abort ();
 
  successful_return:
-  if (reloc_vector != NULL)
-    free (reloc_vector);
+  free (reloc_vector);
   return data;
 
  error_return:
-  if (reloc_vector != NULL)
-    free (reloc_vector);
+  free (reloc_vector);
   return NULL;
 }
 
@@ -2026,7 +2024,10 @@ alpha_ecoff_read_ar_hdr (bfd *abfd)
       if (bfd_seek (abfd, (file_ptr) FILHSZ, SEEK_CUR) != 0
 	  || bfd_bread (ab, (bfd_size_type) 8, abfd) != 8
 	  || bfd_seek (abfd, (file_ptr) (- (FILHSZ + 8)), SEEK_CUR) != 0)
-	return NULL;
+	{
+	  free (ret);
+	  return NULL;
+	}
 
       ret->parsed_size = H_GET_64 (abfd, ab);
     }
@@ -2047,6 +2048,7 @@ alpha_ecoff_get_elt_at_filepos (bfd *arc
   bfd_size_type size;
   bfd_byte *buf, *p;
   struct bfd_in_memory *bim;
+  ufile_ptr filesize;
 
   buf = NULL;
   nbfd = _bfd_get_elt_at_filepos (archive, filepos);
@@ -2080,6 +2082,14 @@ alpha_ecoff_get_elt_at_filepos (bfd *arc
     goto error_return;
   size = H_GET_64 (nbfd, ab);
 
+  /* The decompression algorithm will at most expand by eight times.  */
+  filesize = bfd_get_file_size (archive);
+  if (filesize != 0 && size / 8 > filesize)
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      goto error_return;
+    }
+
   if (size != 0)
     {
       bfd_size_type left;
@@ -2118,7 +2128,7 @@ alpha_ecoff_get_elt_at_filepos (bfd *arc
 		n = dict[h];
 	      else
 		{
-		  if (! bfd_bread (&n, (bfd_size_type) 1, nbfd))
+		  if (bfd_bread (&n, 1, nbfd) != 1)
 		    goto error_return;
 		  dict[h] = n;
 		}
@@ -2159,8 +2169,7 @@ alpha_ecoff_get_elt_at_filepos (bfd *arc
   return nbfd;
 
  error_return:
-  if (buf != NULL)
-    free (buf);
+  free (buf);
   if (nbfd != NULL)
     bfd_close (nbfd);
   return NULL;
@@ -2412,7 +2421,8 @@ const bfd_target alpha_ecoff_le_vec =
    | HAS_LINENO | HAS_DEBUG
    | HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED),
 
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE
+   | SEC_DATA | SEC_SMALL_DATA),
   0,				/* leading underscore */
   ' ',				/* ar_pad_char */
   15,				/* ar_max_namelen */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-arm.c ./bfd/coff-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-arm.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-arm.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for ARM COFF files.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -924,7 +924,7 @@ static struct bfd_link_hash_table *
 coff_arm_link_hash_table_create (bfd * abfd)
 {
   struct coff_arm_link_hash_table * ret;
-  bfd_size_type amt = sizeof (struct coff_arm_link_hash_table);
+  size_t amt = sizeof (struct coff_arm_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -1026,7 +1026,7 @@ find_thumb_glue (struct bfd_link_info *i
 {
   char *tmp_name;
   struct coff_link_hash_entry *myh;
-  bfd_size_type amt = strlen (name) + strlen (THUMB2ARM_GLUE_ENTRY_NAME) + 1;
+  size_t amt = strlen (name) + strlen (THUMB2ARM_GLUE_ENTRY_NAME) + 1;
 
   tmp_name = bfd_malloc (amt);
 
@@ -1055,7 +1055,7 @@ find_arm_glue (struct bfd_link_info *inf
 {
   char *tmp_name;
   struct coff_link_hash_entry * myh;
-  bfd_size_type amt = strlen (name) + strlen (ARM2THUMB_GLUE_ENTRY_NAME) + 1;
+  size_t amt = strlen (name) + strlen (ARM2THUMB_GLUE_ENTRY_NAME) + 1;
 
   tmp_name = bfd_malloc (amt);
 
@@ -1154,7 +1154,7 @@ static const insn32 t2a6_bx_insn    = 0x
 
 /* The standard COFF backend linker does not cope with the special
    Thumb BRANCH23 relocation.  The alternative would be to split the
-   BRANCH23 into seperate HI23 and LO23 relocations. However, it is a
+   BRANCH23 into separate HI23 and LO23 relocations. However, it is a
    bit simpler simply providing our own relocation driver.  */
 
 /* The reloc processing routine for the ARM/Thumb COFF linker.  NOTE:
@@ -1840,7 +1840,7 @@ record_arm_to_thumb_glue (struct bfd_lin
   struct bfd_link_hash_entry *	    bh;
   struct coff_arm_link_hash_table * globals;
   bfd_vma val;
-  bfd_size_type amt;
+  size_t amt;
 
   globals = coff_arm_hash_table (info);
 
@@ -1896,7 +1896,7 @@ record_thumb_to_arm_glue (struct bfd_lin
   struct bfd_link_hash_entry *	     bh;
   struct coff_arm_link_hash_table *  globals;
   bfd_vma val;
-  bfd_size_type amt;
+  size_t amt;
 
   globals = coff_arm_hash_table (info);
 
@@ -2210,7 +2210,8 @@ coff_arm_merge_private_bfd_data (bfd * i
 	    {
 	      _bfd_error_handler
 		/* xgettext: c-format */
-		(_("error: %pB is compiled for APCS-%d, whereas %pB is compiled for APCS-%d"),
+		(_("error: %pB is compiled for APCS-%d, "
+		   "whereas %pB is compiled for APCS-%d"),
 		 ibfd, APCS_26_FLAG (ibfd) ? 26 : 32,
 		 obfd, APCS_26_FLAG (obfd) ? 26 : 32
 		 );
@@ -2223,14 +2224,16 @@ coff_arm_merge_private_bfd_data (bfd * i
 	    {
 	      if (APCS_FLOAT_FLAG (ibfd))
 		/* xgettext: c-format */
-		_bfd_error_handler (_("\
-error: %pB passes floats in float registers, whereas %pB passes them in integer registers"),
-				    ibfd, obfd);
+		_bfd_error_handler
+		  (_("error: %pB passes floats in float registers, "
+		     "whereas %pB passes them in integer registers"),
+		   ibfd, obfd);
 	      else
 		/* xgettext: c-format */
-		_bfd_error_handler (_("\
-error: %pB passes floats in integer registers, whereas %pB passes them in float registers"),
-				    ibfd, obfd);
+		_bfd_error_handler
+		  (_("error: %pB passes floats in integer registers, "
+		     "whereas %pB passes them in float registers"),
+		   ibfd, obfd);
 
 	      bfd_set_error (bfd_error_wrong_format);
 	      return FALSE;
@@ -2240,14 +2243,16 @@ error: %pB passes floats in integer regi
 	    {
 	      if (PIC_FLAG (ibfd))
 		/* xgettext: c-format */
-		_bfd_error_handler (_("\
-error: %pB is compiled as position independent code, whereas target %pB is absolute position"),
-				    ibfd, obfd);
+		_bfd_error_handler
+		  (_("error: %pB is compiled as position independent code, "
+		     "whereas target %pB is absolute position"),
+		   ibfd, obfd);
 	      else
 		/* xgettext: c-format */
-		_bfd_error_handler (_("\
-error: %pB is compiled as absolute position code, whereas target %pB is position independent"),
-				    ibfd, obfd);
+		_bfd_error_handler
+		  (_("error: %pB is compiled as absolute position code, "
+		     "whereas target %pB is position independent"),
+		   ibfd, obfd);
 
 	      bfd_set_error (bfd_error_wrong_format);
 	      return FALSE;
@@ -2272,14 +2277,15 @@ error: %pB is compiled as absolute posit
 	    {
 	      if (INTERWORK_FLAG (ibfd))
 		/* xgettext: c-format */
-		_bfd_error_handler (_("\
-warning: %pB supports interworking, whereas %pB does not"),
+		_bfd_error_handler (_("warning: %pB supports interworking, "
+				      "whereas %pB does not"),
 				    ibfd, obfd);
 	      else
 		/* xgettext: c-format */
-		_bfd_error_handler (_("\
-warning: %pB does not support interworking, whereas %pB does"),
-				    ibfd, obfd);
+		_bfd_error_handler
+		  (_("warning: %pB does not support interworking, "
+		     "whereas %pB does"),
+		   ibfd, obfd);
 	    }
 	}
       else
@@ -2428,9 +2434,11 @@ coff_arm_copy_private_bfd_data (bfd * sr
 	      if (INTERWORK_FLAG (dest))
 		{
 		  /* xgettext:c-format */
-		  _bfd_error_handler (_("\
-warning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"),
-				      dest, src);
+		  _bfd_error_handler
+		    (_("warning: clearing the interworking flag of %pB "
+		       "because non-interworking code in %pB has been "
+		       "linked with it"),
+		     dest, src);
 		}
 
 	      SET_INTERWORK_FLAG (dest, 0);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-arm.h ./bfd/coff-arm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-arm.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-arm.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for ARM COFF files.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-bfd.c ./bfd/coff-bfd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-bfd.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-bfd.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD COFF interfaces used outside of BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-bfd.h ./bfd/coff-bfd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-bfd.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-bfd.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD COFF interfaces used outside of BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coffcode.h ./bfd/coffcode.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coffcode.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coffcode.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for the generic parts of most COFF variants, for BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -364,6 +364,10 @@ CODE_FRAGMENT
 #define GNU_LINKONCE_WT ".gnu.linkonce.wt."
 #define DOT_RELOC	".reloc"
 
+#if defined(COFF_WITH_PE) || defined(COFF_GO32_EXE) || defined(COFF_GO32)
+# define COFF_WITH_EXTENDED_RELOC_COUNTER
+#endif
+
 #if defined (COFF_LONG_SECTION_NAMES)
 /* Needed to expand the inputs to BLANKOR1TOODD.  */
 #define COFFLONGSECTIONCATHELPER(x,y)    x ## y
@@ -717,7 +721,7 @@ sec_to_styp_flags (const char *sec_name,
 #ifndef COFF_WITH_PE
 
 static bfd_boolean
-styp_to_sec_flags (bfd *abfd ATTRIBUTE_UNUSED,
+styp_to_sec_flags (bfd *abfd,
 		   void * hdr,
 		   const char *name,
 		   asection *section ATTRIBUTE_UNUSED,
@@ -850,6 +854,11 @@ styp_to_sec_flags (bfd *abfd ATTRIBUTE_U
     sec_flags = (SEC_LOAD | SEC_ALLOC);
 #endif /* STYP_SDATA */
 
+  if ((bfd_applicable_section_flags (abfd) & SEC_SMALL_DATA) != 0
+      && (CONST_STRNEQ (name, ".sbss")
+	  || CONST_STRNEQ (name, ".sdata")))
+    sec_flags |= SEC_SMALL_DATA;
+
 #if defined (COFF_LONG_SECTION_NAMES) && defined (COFF_SUPPORT_GNU_LINKONCE)
   /* As a GNU extension, if the name begins with .gnu.linkonce, we
      only link a single copy of the section.  This is used to support
@@ -1109,7 +1118,7 @@ handle_COMDAT (bfd * abfd,
 		 drop through from the above).  */
 	      {
 		char *newname;
-		bfd_size_type amt;
+		size_t amt;
 
 		/* This must the second symbol with the
 		   section #.  It is the actual symbol name.
@@ -1312,6 +1321,11 @@ styp_to_sec_flags (bfd *abfd,
 	}
     }
 
+  if ((bfd_applicable_section_flags (abfd) & SEC_SMALL_DATA) != 0
+      && (CONST_STRNEQ (name, ".sbss")
+	  || CONST_STRNEQ (name, ".sdata")))
+    sec_flags |= SEC_SMALL_DATA;
+
 #if defined (COFF_LONG_SECTION_NAMES) && defined (COFF_SUPPORT_GNU_LINKONCE)
   /* As a GNU extension, if the name begins with .gnu.linkonce, we
      only link a single copy of the section.  This is used to support
@@ -1752,7 +1766,7 @@ static bfd_boolean
 coff_new_section_hook (bfd * abfd, asection * section)
 {
   combined_entry_type *native;
-  bfd_size_type amt;
+  size_t amt;
   unsigned char sclass = C_STAT;
 
   section->alignment_power = COFF_DEFAULT_SECTION_ALIGNMENT_POWER;
@@ -1843,7 +1857,7 @@ coff_set_alignment_hook (bfd * abfd ATTR
 			 void * scnhdr)
 {
   struct internal_scnhdr *hdr = (struct internal_scnhdr *) scnhdr;
-  bfd_size_type amt;
+  size_t amt;
   unsigned int alignment_power_const
     = hdr->s_flags & IMAGE_SCN_ALIGN_POWER_BIT_MASK;
 
@@ -1954,6 +1968,39 @@ coff_set_alignment_hook (bfd *abfd, asec
 }
 
 #else /* ! RS6000COFF_C */
+#if defined (COFF_GO32_EXE) || defined (COFF_GO32)
+
+static void
+coff_set_alignment_hook (bfd * abfd, asection * section, void * scnhdr)
+{
+  struct internal_scnhdr *hdr = (struct internal_scnhdr *) scnhdr;
+
+  /* Check for extended relocs.  */
+  if (hdr->s_flags & IMAGE_SCN_LNK_NRELOC_OVFL)
+    {
+      struct external_reloc dst;
+      struct internal_reloc n;
+      const file_ptr oldpos = bfd_tell (abfd);
+      const bfd_size_type relsz = bfd_coff_relsz (abfd);
+
+      if (bfd_seek (abfd, (file_ptr) hdr->s_relptr, 0) != 0)
+	return;
+      if (bfd_bread (& dst, relsz, abfd) != relsz)
+	return;
+
+      coff_swap_reloc_in (abfd, &dst, &n);
+      if (bfd_seek (abfd, oldpos, 0) != 0)
+	return;
+      section->reloc_count = hdr->s_nreloc = n.r_vaddr - 1;
+      section->rel_filepos += relsz;
+    }
+  else if (hdr->s_nreloc == 0xffff)
+    _bfd_error_handler
+      (_("%pB: warning: claims to have 0xffff relocs, without overflow"),
+       abfd);
+}
+
+#else /* ! COFF_GO32_EXE && ! COFF_GO32 */
 
 static void
 coff_set_alignment_hook (bfd *abfd ATTRIBUTE_UNUSED,
@@ -1962,6 +2009,7 @@ coff_set_alignment_hook (bfd *abfd ATTRI
 {
 }
 
+#endif /* ! COFF_GO32_EXE && ! COFF_GO32 */
 #endif /* ! RS6000COFF_C */
 #endif /* ! COFF_WITH_PE */
 #endif /* ! COFF_ALIGN_IN_SECTION_HEADER */
@@ -1972,7 +2020,7 @@ static bfd_boolean
 coff_mkobject (bfd * abfd)
 {
   coff_data_type *coff;
-  bfd_size_type amt = sizeof (coff_data_type);
+  size_t amt = sizeof (coff_data_type);
 
   abfd->tdata.coff_obj_data = bfd_zalloc (abfd, amt);
   if (abfd->tdata.coff_obj_data == NULL)
@@ -2066,15 +2114,6 @@ coff_mkobject_hook (bfd * abfd,
     abfd->flags |= HAS_DEBUG;
 #endif
 
-  if ((internal_f->f_flags & F_GO32STUB) != 0)
-    {
-      coff->go32stub = (char *) bfd_alloc (abfd, (bfd_size_type) GO32_STUBSIZE);
-      if (coff->go32stub == NULL)
-	return NULL;
-    }
-  if (coff->go32stub != NULL)
-    memcpy (coff->go32stub, internal_f->go32stub, GO32_STUBSIZE);
-
   return coff;
 }
 #endif
@@ -2097,11 +2136,6 @@ coff_set_arch_mach_hook (bfd *abfd, void
   machine = 0;
   switch (internal_f->f_magic)
     {
-#ifdef PPCMAGIC
-    case PPCMAGIC:
-      arch = bfd_arch_powerpc;
-      break;
-#endif
 #ifdef I386MAGIC
     case I386MAGIC:
     case I386PTXMAGIC:
@@ -2161,11 +2195,15 @@ coff_set_arch_mach_hook (bfd *abfd, void
       arch = bfd_arch_z80;
       switch (internal_f->f_flags & F_MACHMASK)
 	{
-	case 0:
 	case bfd_mach_z80strict << 12:
 	case bfd_mach_z80 << 12:
+	case bfd_mach_z80n << 12:
 	case bfd_mach_z80full << 12:
 	case bfd_mach_r800 << 12:
+	case bfd_mach_gbz80 << 12:
+	case bfd_mach_z180 << 12:
+	case bfd_mach_ez80_z80 << 12:
+	case bfd_mach_ez80_adl << 12:
 	  machine = ((unsigned)internal_f->f_flags & F_MACHMASK) >> 12;
 	  break;
 	default:
@@ -2218,15 +2256,11 @@ coff_set_arch_mach_hook (bfd *abfd, void
 		struct internal_syment sym;
 		bfd_size_type amt = bfd_coff_symesz (abfd);
 
-		buf = bfd_malloc (amt);
+		if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
+		  return FALSE;
+		buf = _bfd_malloc_and_read (abfd, amt, amt);
 		if (buf == NULL)
 		  return FALSE;
-		if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
-		    || bfd_bread (buf, amt, abfd) != amt)
-		  {
-		    free (buf);
-		    return FALSE;
-		  }
 		bfd_coff_swap_sym_in (abfd, buf, & sym);
 		if (sym.n_sclass == C_FILE)
 		  cputype = sym.n_type & 0xff;
@@ -2330,12 +2364,6 @@ coff_set_arch_mach_hook (bfd *abfd, void
       break;
 #endif
 
-#ifdef TIC80_ARCH_MAGIC
-    case TIC80_ARCH_MAGIC:
-      arch = bfd_arch_tic80;
-      break;
-#endif
-
 #ifdef MCOREMAGIC
     case MCOREMAGIC:
       arch = bfd_arch_mcore;
@@ -2526,8 +2554,8 @@ coff_write_relocs (bfd * abfd, int first
       if (bfd_seek (abfd, s->rel_filepos, SEEK_SET) != 0)
 	return FALSE;
 
-#ifdef COFF_WITH_PE
-      if (obj_pe (abfd) && s->reloc_count >= 0xffff)
+#ifdef COFF_WITH_EXTENDED_RELOC_COUNTER
+      if ((obj_pe (abfd) || obj_go32 (abfd)) && s->reloc_count >= 0xffff)
 	{
 	  /* Encode real count here as first reloc.  */
 	  struct internal_reloc n;
@@ -2633,8 +2661,7 @@ coff_write_relocs (bfd * abfd, int first
 	}
 
 #ifdef TARG_AUX
-      if (p != NULL)
-	free (p);
+      free (p);
 #endif
     }
 
@@ -2656,11 +2683,15 @@ coff_set_flags (bfd * abfd,
       *magicp = Z80MAGIC;
       switch (bfd_get_mach (abfd))
 	{
-	case 0:
 	case bfd_mach_z80strict:
 	case bfd_mach_z80:
+	case bfd_mach_z80n:
 	case bfd_mach_z80full:
 	case bfd_mach_r800:
+	case bfd_mach_gbz80:
+	case bfd_mach_z180:
+	case bfd_mach_ez80_z80:
+	case bfd_mach_ez80_adl:
 	  *flagsp = bfd_get_mach (abfd) << 12;
 	  break;
 	default:
@@ -2715,12 +2746,6 @@ coff_set_flags (bfd * abfd,
       return TRUE;
 #endif
 
-#ifdef TIC80_ARCH_MAGIC
-    case bfd_arch_tic80:
-      *magicp = TIC80_ARCH_MAGIC;
-      return TRUE;
-#endif
-
 #ifdef ARMMAGIC
     case bfd_arch_arm:
 #ifdef ARM_WINCE
@@ -2760,12 +2785,6 @@ coff_set_flags (bfd * abfd,
       return TRUE;
 #endif
 
-#ifdef PPCMAGIC
-    case bfd_arch_powerpc:
-      *magicp = PPCMAGIC;
-      return TRUE;
-#endif
-
 #if defined(I386MAGIC) || defined(AMD64MAGIC)
     case bfd_arch_i386:
 #if defined(I386MAGIC)
@@ -2818,9 +2837,7 @@ coff_set_flags (bfd * abfd,
 
 #ifdef RS6000COFF_C
     case bfd_arch_rs6000:
-#ifndef PPCMAGIC
     case bfd_arch_powerpc:
-#endif
       BFD_ASSERT (bfd_get_flavour (abfd) == bfd_target_xcoff_flavour);
       *magicp = bfd_xcoff_magic_number (abfd);
       return TRUE;
@@ -2883,7 +2900,7 @@ sort_by_secaddr (const void * arg1, cons
 /* Calculate the file position for each section.  */
 
 #define ALIGN_SECTIONS_IN_FILE
-#if defined(TIC80COFF) || defined(TICOFF)
+#ifdef TICOFF
 #undef ALIGN_SECTIONS_IN_FILE
 #endif
 
@@ -3092,7 +3109,7 @@ coff_compute_section_file_positions (bfd
 	 page size too, and remember both sizes.  */
       if (coff_section_data (abfd, current) == NULL)
 	{
-	  bfd_size_type amt = sizeof (struct coff_section_tdata);
+	  size_t amt = sizeof (struct coff_section_tdata);
 
 	  current->used_by_bfd = bfd_zalloc (abfd, amt);
 	  if (current->used_by_bfd == NULL)
@@ -3100,7 +3117,7 @@ coff_compute_section_file_positions (bfd
 	}
       if (pei_section_data (abfd, current) == NULL)
 	{
-	  bfd_size_type amt = sizeof (struct pei_section_tdata);
+	  size_t amt = sizeof (struct pei_section_tdata);
 
 	  coff_section_data (abfd, current)->tdata = bfd_zalloc (abfd, amt);
 	  if (coff_section_data (abfd, current)->tdata == NULL)
@@ -3389,9 +3406,9 @@ coff_write_object_contents (bfd * abfd)
   for (current = abfd->sections; current != NULL; current =
        current->next)
     {
-#ifdef COFF_WITH_PE
+#ifdef COFF_WITH_EXTENDED_RELOC_COUNTER
       /* We store the actual reloc count in the first reloc's addr.  */
-      if (obj_pe (abfd) && current->reloc_count >= 0xffff)
+      if ((obj_pe (abfd) || obj_go32 (abfd)) && current->reloc_count >= 0xffff)
 	reloc_count ++;
 #endif
       reloc_count += current->reloc_count;
@@ -3419,9 +3436,9 @@ coff_write_object_contents (bfd * abfd)
 	{
 	  current->rel_filepos = reloc_base;
 	  reloc_base += current->reloc_count * bfd_coff_relsz (abfd);
-#ifdef COFF_WITH_PE
+#ifdef COFF_WITH_EXTENDED_RELOC_COUNTER
 	  /* Extra reloc to hold real count.  */
-	  if (obj_pe (abfd) && current->reloc_count >= 0xffff)
+	  if ((obj_pe (abfd) || obj_go32 (abfd)) && current->reloc_count >= 0xffff)
 	    reloc_base += bfd_coff_relsz (abfd);
 #endif
 	}
@@ -3622,7 +3639,7 @@ coff_write_object_contents (bfd * abfd)
 	  SCNHDR buff;
 	  bfd_size_type amt = bfd_coff_scnhsz (abfd);
 
-	  if (coff_swap_scnhdr_out (abfd, &section, &buff) == 0
+	  if (bfd_coff_swap_scnhdr_out (abfd, &section, &buff) == 0
 	      || bfd_bwrite (& buff, amt, abfd) != amt)
 	    return FALSE;
 	}
@@ -3748,7 +3765,7 @@ coff_write_object_contents (bfd * abfd)
 	  scnhdr.s_nlnno = current->target_index;
 	  scnhdr.s_flags = STYP_OVRFLO;
 	  amt = bfd_coff_scnhsz (abfd);
-	  if (coff_swap_scnhdr_out (abfd, &scnhdr, &buff) == 0
+	  if (bfd_coff_swap_scnhdr_out (abfd, &scnhdr, &buff) == 0
 	      || bfd_bwrite (& buff, amt, abfd) != amt)
 	    return FALSE;
 	}
@@ -3756,6 +3773,22 @@ coff_write_object_contents (bfd * abfd)
 #endif
 #endif
 
+#if defined (COFF_GO32_EXE) || defined (COFF_GO32)
+  /* Pad section headers.  */
+  if ((abfd->flags & EXEC_P) && abfd->sections != NULL)
+    {
+      file_ptr cur_ptr = scn_base
+			 + abfd->section_count * bfd_coff_scnhsz (abfd);
+      long fill_size = (abfd->sections->filepos - cur_ptr);
+      bfd_byte *b = bfd_zmalloc (fill_size);
+      if (b)
+	{
+	  bfd_bwrite ((PTR)b, fill_size, abfd);
+	  free (b);
+	}
+    }
+#endif
+
   /* OK, now set up the filehdr...  */
 
   /* Don't include the internal abs section in the section count */
@@ -3811,9 +3844,6 @@ coff_write_object_contents (bfd * abfd)
      but it doesn't hurt to set it internally.  */
   internal_f.f_target_id = TI_TARGET_ID;
 #endif
-#ifdef TIC80_TARGET_ID
-  internal_f.f_target_id = TIC80_TARGET_ID;
-#endif
 
   /* FIXME, should do something about the other byte orders and
      architectures.  */
@@ -3841,21 +3871,12 @@ coff_write_object_contents (bfd * abfd)
     internal_a.magic = TICOFF_AOUT_MAGIC;
 #define __A_MAGIC_SET__
 #endif
-#ifdef TIC80COFF
-    internal_a.magic = TIC80_ARCH_MAGIC;
-#define __A_MAGIC_SET__
-#endif /* TIC80 */
 
 #if defined(ARM)
 #define __A_MAGIC_SET__
     internal_a.magic = ZMAGIC;
 #endif
 
-#if defined(PPC_PE)
-#define __A_MAGIC_SET__
-    internal_a.magic = IMAGE_NT_OPTIONAL_HDR_MAGIC;
-#endif
-
 #if defined MCORE_PE
 #define __A_MAGIC_SET__
     internal_a.magic = IMAGE_NT_OPTIONAL_HDR_MAGIC;
@@ -3937,24 +3958,6 @@ coff_write_object_contents (bfd * abfd)
 	return FALSE;
     }
 #endif
-#ifdef COFF_IMAGE_WITH_PE
-#ifdef PPC_PE
-  else if ((abfd->flags & EXEC_P) != 0)
-    {
-      bfd_byte b;
-
-      /* PowerPC PE appears to require that all executable files be
-	 rounded up to the page size.  */
-      b = 0;
-      if (bfd_seek (abfd,
-		    (file_ptr) BFD_ALIGN (sym_base, COFF_PAGE_SIZE) - 1,
-		    SEEK_SET) != 0
-	  || bfd_bwrite (&b, (bfd_size_type) 1, abfd) != 1)
-	return FALSE;
-    }
-#endif
-#endif
-
   /* If bfd_get_symcount (abfd) != 0, then we are not using the COFF
      backend linker, and obj_raw_syment_count is not valid until after
      coff_write_symbols is called.  */
@@ -4211,15 +4214,16 @@ static void *
 buy_and_read (bfd *abfd, file_ptr where,
 	      bfd_size_type nmemb, bfd_size_type size)
 {
-  void *area = bfd_alloc2 (abfd, nmemb, size);
+  size_t amt;
 
-  if (!area)
-    return NULL;
-  size *= nmemb;
-  if (bfd_seek (abfd, where, SEEK_SET) != 0
-      || bfd_bread (area, size, abfd) != size)
+  if (_bfd_mul_overflow (nmemb, size, &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return NULL;
+    }
+  if (bfd_seek (abfd, where, SEEK_SET) != 0)
     return NULL;
-  return area;
+  return _bfd_alloc_and_read (abfd, amt, amt);
 }
 
 /*
@@ -4276,6 +4280,7 @@ coff_slurp_line_table (bfd *abfd, asecti
   LINENO *src;
   bfd_boolean have_func;
   bfd_boolean ret = TRUE;
+  size_t amt;
 
   if (asect->lineno_count == 0)
     return TRUE;
@@ -4290,9 +4295,12 @@ coff_slurp_line_table (bfd *abfd, asecti
       return FALSE;
     }
 
-  lineno_cache = (alent *) bfd_alloc2 (abfd,
-				       (bfd_size_type) asect->lineno_count + 1,
-				       sizeof (alent));
+  if (_bfd_mul_overflow (asect->lineno_count + 1, sizeof (alent), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  lineno_cache = (alent *) bfd_alloc (abfd, amt);
   if (lineno_cache == NULL)
     return FALSE;
 
@@ -4406,8 +4414,12 @@ coff_slurp_line_table (bfd *abfd, asecti
       alent *n_lineno_cache;
 
       /* Create a table of functions.  */
-      func_table = (alent **) bfd_alloc2 (abfd, nbr_func, sizeof (alent *));
-      if (func_table != NULL)
+      if (_bfd_mul_overflow (nbr_func, sizeof (alent *), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  ret = FALSE;
+	}
+      else if ((func_table = (alent **) bfd_alloc (abfd, amt)) != NULL)
 	{
 	  alent **p = func_table;
 	  unsigned int i;
@@ -4422,9 +4434,12 @@ coff_slurp_line_table (bfd *abfd, asecti
 	  qsort (func_table, nbr_func, sizeof (alent *), coff_sort_func_alent);
 
 	  /* Create the new sorted table.  */
-	  n_lineno_cache = (alent *) bfd_alloc2 (abfd, asect->lineno_count,
-						 sizeof (alent));
-	  if (n_lineno_cache != NULL)
+	  if (_bfd_mul_overflow (asect->lineno_count, sizeof (alent), &amt))
+	    {
+	      bfd_set_error (bfd_error_file_too_big);
+	      ret = FALSE;
+	    }
+	  else if ((n_lineno_cache = (alent *) bfd_alloc (abfd, amt)) != NULL)
 	    {
 	      alent *n_cache_ptr = n_lineno_cache;
 
@@ -4470,6 +4485,7 @@ coff_slurp_symbol_table (bfd * abfd)
   unsigned int *table_ptr;
   unsigned int number_of_symbols = 0;
   bfd_boolean ret = TRUE;
+  size_t amt;
 
   if (obj_symbols (abfd))
     return TRUE;
@@ -4479,15 +4495,23 @@ coff_slurp_symbol_table (bfd * abfd)
     return FALSE;
 
   /* Allocate enough room for all the symbols in cached form.  */
-  cached_area = (coff_symbol_type *) bfd_alloc2 (abfd,
-						 obj_raw_syment_count (abfd),
-						 sizeof (coff_symbol_type));
+  if (_bfd_mul_overflow (obj_raw_syment_count (abfd),
+			 sizeof (*cached_area), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  cached_area = (coff_symbol_type *) bfd_alloc (abfd, amt);
   if (cached_area == NULL)
     return FALSE;
 
-  table_ptr = (unsigned int *) bfd_zalloc2 (abfd, obj_raw_syment_count (abfd),
-					    sizeof (unsigned int));
-
+  if (_bfd_mul_overflow (obj_raw_syment_count (abfd),
+			 sizeof (*table_ptr), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  table_ptr = (unsigned int *) bfd_zalloc (abfd, amt);
   if (table_ptr == NULL)
     return FALSE;
   else
@@ -4775,7 +4799,7 @@ coff_slurp_symbol_table (bfd * abfd)
 	    case C_ALIAS:	/* Duplicate tag.  */
 #endif
 	      /* New storage classes for TI COFF.  */
-#if defined(TIC80COFF) || defined(TICOFF)
+#ifdef TICOFF
 	    case C_UEXT:	/* Tentative external definition.  */
 #endif
 	    case C_EXTLAB:	/* External load time label.  */
@@ -4844,6 +4868,12 @@ coff_classify_symbol (bfd *abfd,
     case C_THUMBEXT:
     case C_THUMBEXTFUNC:
 #endif
+#ifdef RS6000COFF_C
+    case C_HIDEXT:
+#if ! defined _AIX52 && ! defined AIX_WEAK_SUPPORT
+    case C_AIX_WEAKEXT:
+#endif
+#endif
 #ifdef C_SYSTEM
     case C_SYSTEM:
 #endif
@@ -4857,6 +4887,10 @@ coff_classify_symbol (bfd *abfd,
 	  else
 	    return COFF_SYMBOL_COMMON;
 	}
+#ifdef RS6000COFF_C
+      if (syment->n_sclass == C_HIDEXT)
+	return COFF_SYMBOL_LOCAL;
+#endif
       return COFF_SYMBOL_GLOBAL;
 
     default:
@@ -4974,6 +5008,7 @@ coff_slurp_reloc_table (bfd * abfd, sec_
   arelent *reloc_cache;
   arelent *cache_ptr;
   unsigned int idx;
+  size_t amt;
 
   if (asect->relocation)
     return TRUE;
@@ -4987,9 +5022,12 @@ coff_slurp_reloc_table (bfd * abfd, sec_
   native_relocs = (RELOC *) buy_and_read (abfd, asect->rel_filepos,
 					  asect->reloc_count,
 					  bfd_coff_relsz (abfd));
-  reloc_cache = (arelent *) bfd_alloc2 (abfd, asect->reloc_count,
-					sizeof (arelent));
-
+  if (_bfd_mul_overflow (asect->reloc_count, sizeof (arelent), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  reloc_cache = (arelent *) bfd_alloc (abfd, amt);
   if (reloc_cache == NULL || native_relocs == NULL)
     return FALSE;
 
@@ -5661,7 +5699,7 @@ static bfd_coff_backend_data bigobj_swap
 #endif /* COFF_WITH_PE_BIGOBJ */
 
 #ifndef coff_close_and_cleanup
-#define coff_close_and_cleanup		    _bfd_generic_close_and_cleanup
+#define coff_close_and_cleanup		    _bfd_coff_close_and_cleanup
 #endif
 
 #ifndef coff_bfd_free_cached_info
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coffgen.c ./bfd/coffgen.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coffgen.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coffgen.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for the generic parts of COFF, for BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -225,12 +225,12 @@ make_a_section_from_file (bfd *abfd,
 
 /* Read in a COFF object and make it into a BFD.  This is used by
    ECOFF as well.  */
-const bfd_target *
+bfd_cleanup
 coff_real_object_p (bfd *,
 		    unsigned,
 		    struct internal_filehdr *,
 		    struct internal_aouthdr *);
-const bfd_target *
+bfd_cleanup
 coff_real_object_p (bfd *abfd,
 		    unsigned nscns,
 		    struct internal_filehdr *internal_f,
@@ -275,13 +275,10 @@ coff_real_object_p (bfd *abfd,
 
   scnhsz = bfd_coff_scnhsz (abfd);
   readsize = (bfd_size_type) nscns * scnhsz;
-  external_sections = (char *) bfd_alloc (abfd, readsize);
+  external_sections = (char *) _bfd_alloc_and_read (abfd, readsize, readsize);
   if (!external_sections)
     goto fail;
 
-  if (bfd_bread ((void *) external_sections, readsize, abfd) != readsize)
-    goto fail;
-
   /* Set the arch/mach *before* swapping in sections; section header swapping
      may depend on arch/mach info.  */
   if (! bfd_coff_set_arch_mach_hook (abfd, (void *) internal_f))
@@ -302,21 +299,23 @@ coff_real_object_p (bfd *abfd,
 	}
     }
 
-  return abfd->xvec;
+  _bfd_coff_free_symbols (abfd);
+  return _bfd_no_cleanup;
 
  fail:
+  _bfd_coff_free_symbols (abfd);
   bfd_release (abfd, tdata);
  fail2:
   abfd->tdata.any = tdata_save;
   abfd->flags = oflags;
   abfd->start_address = ostart;
-  return (const bfd_target *) NULL;
+  return NULL;
 }
 
 /* Turn a COFF file into a BFD, but fail with bfd_error_wrong_format if it is
    not a COFF file.  This is also used by ECOFF.  */
 
-const bfd_target *
+bfd_cleanup
 coff_object_p (bfd *abfd)
 {
   bfd_size_type filhsz;
@@ -330,14 +329,11 @@ coff_object_p (bfd *abfd)
   filhsz = bfd_coff_filhsz (abfd);
   aoutsz = bfd_coff_aoutsz (abfd);
 
-  filehdr = bfd_alloc (abfd, filhsz);
+  filehdr = _bfd_alloc_and_read (abfd, filhsz, filhsz);
   if (filehdr == NULL)
-    return NULL;
-  if (bfd_bread (filehdr, filhsz, abfd) != filhsz)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
-      bfd_release (abfd, filehdr);
       return NULL;
     }
   bfd_coff_swap_filehdr_in (abfd, filehdr, &internal_f);
@@ -363,18 +359,13 @@ coff_object_p (bfd *abfd)
     {
       void * opthdr;
 
-      opthdr = bfd_alloc (abfd, aoutsz);
+      opthdr = _bfd_alloc_and_read (abfd, aoutsz, internal_f.f_opthdr);
       if (opthdr == NULL)
 	return NULL;
-      if (bfd_bread (opthdr, (bfd_size_type) internal_f.f_opthdr, abfd)
-	  != internal_f.f_opthdr)
-	{
-	  bfd_release (abfd, opthdr);
-	  return NULL;
-	}
       /* PR 17512: file: 11056-1136-0.004.  */
       if (internal_f.f_opthdr < aoutsz)
-	memset (((char *) opthdr) + internal_f.f_opthdr, 0, aoutsz - internal_f.f_opthdr);
+	memset (((char *) opthdr) + internal_f.f_opthdr, 0,
+		aoutsz - internal_f.f_opthdr);
 
       bfd_coff_swap_aouthdr_in (abfd, opthdr, (void *) &internal_a);
       bfd_release (abfd, opthdr);
@@ -553,11 +544,8 @@ _bfd_coff_read_internal_relocs (bfd *abf
   for (; erel < erel_end; erel += relsz, irel++)
     bfd_coff_swap_reloc_in (abfd, (void *) erel, (void *) irel);
 
-  if (free_external != NULL)
-    {
-      free (free_external);
-      free_external = NULL;
-    }
+  free (free_external);
+  free_external = NULL;
 
   if (cache && free_internal != NULL)
     {
@@ -575,10 +563,8 @@ _bfd_coff_read_internal_relocs (bfd *abf
   return internal_relocs;
 
  error_return:
-  if (free_external != NULL)
-    free (free_external);
-  if (free_internal != NULL)
-    free (free_internal);
+  free (free_external);
+  free (free_internal);
   return NULL;
 }
 
@@ -1591,19 +1577,20 @@ build_debug_section (bfd *abfd, asection
       return NULL;
     }
 
-  sec_size = sect->size;
-  debug_section = (char *) bfd_alloc (abfd, sec_size);
-  if (debug_section == NULL)
-    return NULL;
-
   /* Seek to the beginning of the `.debug' section and read it.
      Save the current position first; it is needed by our caller.
      Then read debug section and reset the file pointer.  */
 
   position = bfd_tell (abfd);
-  if (bfd_seek (abfd, sect->filepos, SEEK_SET) != 0
-      || bfd_bread (debug_section, sec_size, abfd) != sec_size
-      || bfd_seek (abfd, position, SEEK_SET) != 0)
+  if (bfd_seek (abfd, sect->filepos, SEEK_SET) != 0)
+    return NULL;
+
+  sec_size = sect->size;
+  debug_section = (char *) _bfd_alloc_and_read (abfd, sec_size, sec_size);
+  if (debug_section == NULL)
+    return NULL;
+
+  if (bfd_seek (abfd, position, SEEK_SET) != 0)
     return NULL;
 
   * sect_return = sect;
@@ -1637,50 +1624,28 @@ copy_name (bfd *abfd, char *name, size_t
 bfd_boolean
 _bfd_coff_get_external_symbols (bfd *abfd)
 {
-  bfd_size_type symesz;
-  bfd_size_type size;
+  size_t symesz;
+  size_t size;
   void * syms;
 
   if (obj_coff_external_syms (abfd) != NULL)
     return TRUE;
 
   symesz = bfd_coff_symesz (abfd);
-
-  size = obj_raw_syment_count (abfd) * symesz;
-  if (size == 0)
-    return TRUE;
-  /* Check for integer overflow and for unreasonable symbol counts.  */
-  if (size < obj_raw_syment_count (abfd)
-      || (bfd_get_file_size (abfd) > 0
-	  && size > bfd_get_file_size (abfd)))
-
-    {
-      _bfd_error_handler (_("%pB: corrupt symbol count: %#" PRIx64 ""),
-			  abfd, (uint64_t) obj_raw_syment_count (abfd));
-      return FALSE;
-    }
-
-  syms = bfd_malloc (size);
-  if (syms == NULL)
+  if (_bfd_mul_overflow (obj_raw_syment_count (abfd), symesz, &size))
     {
-      /* PR 21013: Provide an error message when the alloc fails.  */
-      _bfd_error_handler (_("%pB: not enough memory to allocate space "
-			    "for %#" PRIx64 " symbols of size %#" PRIx64),
-			  abfd, (uint64_t) obj_raw_syment_count (abfd),
-			  (uint64_t) symesz);
+      bfd_set_error (bfd_error_file_truncated);
       return FALSE;
     }
 
-  if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
-      || bfd_bread (syms, size, abfd) != size)
-    {
-      if (syms != NULL)
-	free (syms);
-      return FALSE;
-    }
+  if (size == 0)
+    return TRUE;
 
+  if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
+    return FALSE;
+  syms = _bfd_malloc_and_read (abfd, size, size);
   obj_coff_external_syms (abfd) = syms;
-  return TRUE;
+  return syms != NULL;
 }
 
 /* Read in the external strings.  The strings are not loaded until
@@ -1696,6 +1661,7 @@ _bfd_coff_read_string_table (bfd *abfd)
   bfd_size_type strsize;
   char *strings;
   file_ptr pos;
+  ufile_ptr filesize;
 
   if (obj_coff_strings (abfd) != NULL)
     return obj_coff_strings (abfd);
@@ -1729,7 +1695,9 @@ _bfd_coff_read_string_table (bfd *abfd)
 #endif
     }
 
-  if (strsize < STRING_SIZE_SIZE || strsize > bfd_get_file_size (abfd))
+  filesize = bfd_get_file_size (abfd);
+  if (strsize < STRING_SIZE_SIZE
+      || (filesize != 0 && strsize > filesize))
     {
       _bfd_error_handler
 	/* xgettext: c-format */
@@ -1845,6 +1813,13 @@ coff_get_normalized_symtab (bfd *abfd)
       symbol_ptr = internal_ptr;
       internal_ptr->is_sym = TRUE;
 
+      /* PR 17512: Prevent buffer overrun.  */
+      if (symbol_ptr->u.syment.n_numaux > ((raw_end - 1) - raw_src) / symesz)
+	{
+	  bfd_release (abfd, internal);
+	  return NULL;
+	}
+
       for (i = 0;
 	   i < symbol_ptr->u.syment.n_numaux;
 	   i++)
@@ -1852,13 +1827,6 @@ coff_get_normalized_symtab (bfd *abfd)
 	  internal_ptr++;
 	  raw_src += symesz;
 
-	  /* PR 17512: Prevent buffer overrun.  */
-	  if (raw_src >= raw_end || internal_ptr >= internal_end)
-	    {
-	      bfd_release (abfd, internal);
-	      return NULL;
-	    }
-
 	  bfd_coff_swap_aux_in (abfd, (void *) raw_src,
 				symbol_ptr->u.syment.n_type,
 				symbol_ptr->u.syment.n_sclass,
@@ -1871,10 +1839,13 @@ coff_get_normalized_symtab (bfd *abfd)
 	}
     }
 
-  /* Free the raw symbols, but not the strings (if we have them).  */
-  obj_coff_keep_strings (abfd) = TRUE;
-  if (! _bfd_coff_free_symbols (abfd))
-    return NULL;
+  /* Free the raw symbols.  */
+  if (obj_coff_external_syms (abfd) != NULL
+      && ! obj_coff_keep_syms (abfd))
+    {
+      free (obj_coff_external_syms (abfd));
+      obj_coff_external_syms (abfd) = NULL;
+    }
 
   for (internal_ptr = internal; internal_ptr < internal_end;
        internal_ptr++)
@@ -2020,7 +1991,7 @@ coff_get_reloc_upper_bound (bfd *abfd, s
 asymbol *
 coff_make_empty_symbol (bfd *abfd)
 {
-  bfd_size_type amt = sizeof (coff_symbol_type);
+  size_t amt = sizeof (coff_symbol_type);
   coff_symbol_type *new_symbol = (coff_symbol_type *) bfd_zalloc (abfd, amt);
 
   if (new_symbol == NULL)
@@ -2041,7 +2012,7 @@ coff_bfd_make_debug_symbol (bfd *abfd,
 			    void * ptr ATTRIBUTE_UNUSED,
 			    unsigned long sz ATTRIBUTE_UNUSED)
 {
-  bfd_size_type amt = sizeof (coff_symbol_type);
+  size_t amt = sizeof (coff_symbol_type);
   coff_symbol_type *new_symbol = (coff_symbol_type *) bfd_alloc (abfd, amt);
 
   if (new_symbol == NULL)
@@ -2266,7 +2237,7 @@ coff_find_nearest_line_with_names (bfd *
   combined_entry_type *pend;
   alent *l;
   struct coff_section_tdata *sec_data;
-  bfd_size_type amt;
+  size_t amt;
 
   /* Before looking through the symbol table, try to use a .stab
      section to find the information.  */
@@ -2464,11 +2435,15 @@ coff_find_nearest_line_with_names (bfd *
 
 		  /* In XCOFF a debugging symbol can follow the
 		     function symbol.  */
-		  if (s->u.syment.n_scnum == N_DEBUG)
+		  if (((size_t) ((char *) s - (char *) obj_raw_syments (abfd))
+		       < obj_raw_syment_count (abfd) * sizeof (*s))
+		      && s->u.syment.n_scnum == N_DEBUG)
 		    s = s + 1 + s->u.syment.n_numaux;
 
 		  /* S should now point to the .bf of the function.  */
-		  if (s->u.syment.n_numaux)
+		  if (((size_t) ((char *) s - (char *) obj_raw_syments (abfd))
+		       < obj_raw_syment_count (abfd) * sizeof (*s))
+		      && s->u.syment.n_numaux)
 		    {
 		      /* The linenumber is stored in the auxent.  */
 		      union internal_auxent *a = &((s + 1)->u.auxent);
@@ -2589,7 +2564,7 @@ bfd_coff_set_symbol_class (bfd *	 abfd,
 	 coff_write_alien_symbol().  */
 
       combined_entry_type * native;
-      bfd_size_type amt = sizeof (* native);
+      size_t amt = sizeof (* native);
 
       native = (combined_entry_type *) bfd_zalloc (abfd, amt);
       if (native == NULL)
@@ -2687,7 +2662,8 @@ _bfd_coff_section_already_linked (bfd *a
 	 .gnu.linkonce.*.<key>.  */
       if (((s_comdat != NULL) == (l_comdat != NULL)
 	   && strcmp (name, l->sec->name) == 0)
-	  || (l->sec->owner->flags & BFD_PLUGIN) != 0)
+	  || (l->sec->owner->flags & BFD_PLUGIN) != 0
+	  || (sec->owner->flags & BFD_PLUGIN) != 0)
 	{
 	  /* The section has already been linked.  See if we should
 	     issue a warning.  */
@@ -3161,3 +3137,26 @@ bfd_coff_group_name (bfd *abfd, const as
     return ci->name;
   return NULL;
 }
+
+bfd_boolean
+_bfd_coff_close_and_cleanup (bfd *abfd)
+{
+  struct coff_tdata *tdata = coff_data (abfd);
+
+  if (tdata != NULL)
+    {
+      /* PR 25447:
+	 Do not clear the keep_syms and keep_strings flags.
+	 These may have been set by pe_ILF_build_a_bfd() indicating
+	 that the syms and strings pointers are not to be freed.  */
+      if (bfd_get_format (abfd) == bfd_object
+	  && bfd_family_coff (abfd)
+	  && !_bfd_coff_free_symbols (abfd))
+	return FALSE;
+
+      if (bfd_get_format (abfd) == bfd_object
+	  || bfd_get_format (abfd) == bfd_core)
+	_bfd_dwarf2_cleanup_debug_info (abfd, &tdata->dwarf2_find_line_info);
+    }
+  return _bfd_generic_close_and_cleanup (abfd);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-go32.c ./bfd/coff-go32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-go32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-go32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Intel 386 COFF files (DJGPP variant).
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by DJ Delorie.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -22,6 +22,7 @@
 #define TARGET_SYM		i386_coff_go32_vec
 #define TARGET_NAME		"coff-go32"
 #define TARGET_UNDERSCORE	'_'
+#define COFF_GO32
 #define COFF_LONG_SECTION_NAMES
 #define COFF_SUPPORT_GNU_LINKONCE
 #define COFF_LONG_FILENAMES
@@ -42,4 +43,137 @@
 { COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
 
+/* Section contains extended relocations. */
+#define IMAGE_SCN_LNK_NRELOC_OVFL (0x01000000)
+
+#include "sysdep.h"
+#include "bfd.h"
+
+/* The following functions are not static, because they are also
+   used for coff-go32-exe (coff-stgo32.c).  */
+bfd_boolean _bfd_go32_mkobject (bfd *);
+void _bfd_go32_swap_scnhdr_in (bfd *, void *, void *);
+unsigned int _bfd_go32_swap_scnhdr_out (bfd *, void *, void *);
+
+#define coff_mkobject _bfd_go32_mkobject
+#define coff_SWAP_scnhdr_in _bfd_go32_swap_scnhdr_in
+#define coff_SWAP_scnhdr_out _bfd_go32_swap_scnhdr_out
+
 #include "coff-i386.c"
+
+bfd_boolean
+_bfd_go32_mkobject (bfd * abfd)
+{
+  const bfd_size_type amt = sizeof (coff_data_type);
+
+  abfd->tdata.coff_obj_data = bfd_zalloc (abfd, amt);
+  if (abfd->tdata.coff_obj_data == NULL)
+    return FALSE;
+
+  coff_data (abfd)->go32 = TRUE;
+
+  return TRUE;
+}
+
+void
+_bfd_go32_swap_scnhdr_in (bfd * abfd, void * ext, void * in)
+{
+  SCNHDR *scnhdr_ext = (SCNHDR *) ext;
+  struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *) in;
+
+  memcpy (scnhdr_int->s_name, scnhdr_ext->s_name, sizeof (scnhdr_int->s_name));
+
+  scnhdr_int->s_vaddr = GET_SCNHDR_VADDR (abfd, scnhdr_ext->s_vaddr);
+  scnhdr_int->s_paddr = GET_SCNHDR_PADDR (abfd, scnhdr_ext->s_paddr);
+  scnhdr_int->s_size = GET_SCNHDR_SIZE (abfd, scnhdr_ext->s_size);
+
+  scnhdr_int->s_scnptr = GET_SCNHDR_SCNPTR (abfd, scnhdr_ext->s_scnptr);
+  scnhdr_int->s_relptr = GET_SCNHDR_RELPTR (abfd, scnhdr_ext->s_relptr);
+  scnhdr_int->s_lnnoptr = GET_SCNHDR_LNNOPTR (abfd, scnhdr_ext->s_lnnoptr);
+  scnhdr_int->s_flags = GET_SCNHDR_FLAGS (abfd, scnhdr_ext->s_flags);
+  scnhdr_int->s_nreloc = GET_SCNHDR_NRELOC (abfd, scnhdr_ext->s_nreloc);
+  scnhdr_int->s_nlnno = GET_SCNHDR_NLNNO (abfd, scnhdr_ext->s_nlnno);
+
+  /* DJGPP follows the same strategy as PE COFF.
+     Iff the file is an executable then the higher 16 bits
+     of the line number have been stored in the relocation
+     counter field.  */
+  if (abfd->flags & EXEC_P && (strcmp (scnhdr_ext->s_name, ".text") == 0))
+    {
+      scnhdr_int->s_nlnno
+	= (GET_SCNHDR_NRELOC (abfd, scnhdr_ext->s_nreloc) << 16)
+	  + GET_SCNHDR_NLNNO (abfd, scnhdr_ext->s_nlnno);
+      scnhdr_int->s_nreloc = 0;
+    }
+}
+
+unsigned int
+_bfd_go32_swap_scnhdr_out (bfd * abfd, void * in, void * out)
+{
+  struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *) in;
+  SCNHDR *scnhdr_ext = (SCNHDR *) out;
+  unsigned int ret = bfd_coff_scnhsz (abfd);
+
+  memcpy (scnhdr_ext->s_name, scnhdr_int->s_name, sizeof (scnhdr_int->s_name));
+
+  PUT_SCNHDR_VADDR (abfd, scnhdr_int->s_vaddr, scnhdr_ext->s_vaddr);
+  PUT_SCNHDR_PADDR (abfd, scnhdr_int->s_paddr, scnhdr_ext->s_paddr);
+  PUT_SCNHDR_SIZE (abfd, scnhdr_int->s_size, scnhdr_ext->s_size);
+  PUT_SCNHDR_SCNPTR (abfd, scnhdr_int->s_scnptr, scnhdr_ext->s_scnptr);
+  PUT_SCNHDR_RELPTR (abfd, scnhdr_int->s_relptr, scnhdr_ext->s_relptr);
+  PUT_SCNHDR_LNNOPTR (abfd, scnhdr_int->s_lnnoptr, scnhdr_ext->s_lnnoptr);
+  PUT_SCNHDR_FLAGS (abfd, scnhdr_int->s_flags, scnhdr_ext->s_flags);
+
+  if (abfd->flags & EXEC_P && (strcmp (scnhdr_int->s_name, ".text") == 0))
+    {
+      /* DJGPP follows the same strategy as PE COFF.
+	 By inference from looking at MS output, the 32 bit field
+	 which is the combination of the number_of_relocs and
+	 number_of_linenos is used for the line number count in
+	 executables.  A 16-bit field won't do for cc1.  The MS
+	 document says that the number of relocs is zero for
+	 executables, but the 17-th bit has been observed to be there.
+	 Overflow is not an issue: a 4G-line program will overflow a
+	 bunch of other fields long before this!  */
+      PUT_SCNHDR_NLNNO (abfd, (scnhdr_int->s_nlnno & 0xffff),
+			scnhdr_ext->s_nlnno);
+      PUT_SCNHDR_NRELOC (abfd, (scnhdr_int->s_nlnno >> 16),
+			 scnhdr_ext->s_nreloc);
+    }
+  else
+    {
+      /* DJGPP follows the same strategy as PE COFF.  */
+      if (scnhdr_int->s_nlnno <= MAX_SCNHDR_NLNNO)
+	PUT_SCNHDR_NLNNO (abfd, scnhdr_int->s_nlnno, scnhdr_ext->s_nlnno);
+      else
+	{
+	  char buf[sizeof (scnhdr_int->s_name) + 1];
+
+	  memcpy (buf, scnhdr_int->s_name, sizeof (scnhdr_int->s_name));
+	  buf[sizeof (scnhdr_int->s_name)] = '\0';
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB: warning: %s: line number overflow: 0x%lx > 0xffff"),
+	     abfd, buf, scnhdr_int->s_nlnno);
+	  bfd_set_error (bfd_error_file_truncated);
+	  PUT_SCNHDR_NLNNO (abfd, 0xffff, scnhdr_ext->s_nlnno);
+	  ret = 0;
+	}
+
+      /* Although we could encode 0xffff relocs here, we do not, to be
+	 consistent with other parts of bfd.  Also it lets us warn, as
+	 we should never see 0xffff here w/o having the overflow flag
+	 set.  */
+      if (scnhdr_int->s_nreloc < MAX_SCNHDR_NRELOC)
+	PUT_SCNHDR_NRELOC (abfd, scnhdr_int->s_nreloc, scnhdr_ext->s_nreloc);
+      else
+	{
+	  /* DJGPP can deal with large #s of relocs, but not here.  */
+	  PUT_SCNHDR_NRELOC (abfd, 0xffff, scnhdr_ext->s_nreloc);
+	  scnhdr_int->s_flags |= IMAGE_SCN_LNK_NRELOC_OVFL;
+	  PUT_SCNHDR_FLAGS (abfd, scnhdr_int->s_flags, scnhdr_ext->s_flags);
+	}
+    }
+
+  return ret;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-i386.c ./bfd/coff-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-i386.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-i386.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Intel 386 COFF files.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -31,10 +31,6 @@
 #include "coff/pe.h"
 #endif
 
-#ifdef COFF_GO32_EXE
-#include "coff/go32exe.h"
-#endif
-
 #ifndef bfd_pe_print_pdata
 #define bfd_pe_print_pdata	NULL
 #endif
@@ -663,23 +659,92 @@ const bfd_target
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
 
+#ifndef COFF_CHECK_FORMAT
+#define COFF_CHECK_FORMAT coff_object_p
+#endif
+#ifndef COFF_WRITE_CONTENTS
+#define COFF_WRITE_CONTENTS coff_write_object_contents
+#endif
+
 /* Note that we allow an object file to be treated as a core file as well.  */
 
-#ifdef COFF_CHECK_FORMAT
   {				/* bfd_check_format */
     _bfd_dummy_target,
     COFF_CHECK_FORMAT,
     bfd_generic_archive_p,
     COFF_CHECK_FORMAT
   },
+  {				/* bfd_set_format */
+    _bfd_bool_bfd_false_error,
+    coff_mkobject,
+    _bfd_generic_mkarchive,
+    _bfd_bool_bfd_false_error
+  },
+  {				/* bfd_write_contents */
+    _bfd_bool_bfd_false_error,
+    COFF_WRITE_CONTENTS,
+    _bfd_write_archive_contents,
+    _bfd_bool_bfd_false_error
+  },
+
+  BFD_JUMP_TABLE_GENERIC (coff),
+  BFD_JUMP_TABLE_COPY (coff),
+  BFD_JUMP_TABLE_CORE (_bfd_nocore),
+  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
+  BFD_JUMP_TABLE_SYMBOLS (coff),
+  BFD_JUMP_TABLE_RELOCS (coff),
+  BFD_JUMP_TABLE_WRITE (coff),
+  BFD_JUMP_TABLE_LINK (coff),
+  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+
+  NULL,
+
+  COFF_SWAP_TABLE
+};
+
+#ifdef COFF_WITH_PE_BIGOBJ
+const bfd_target
+  TARGET_SYM_BIG =
+{
+  TARGET_NAME_BIG,
+  bfd_target_coff_flavour,
+  BFD_ENDIAN_LITTLE,		/* data byte order is little */
+  BFD_ENDIAN_LITTLE,		/* header byte order is little */
+
+  (HAS_RELOC | EXEC_P |		/* object flags */
+   HAS_LINENO | HAS_DEBUG |
+   HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS ),
+
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* section flags */
+#ifdef COFF_WITH_PE
+   | SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_READONLY | SEC_DEBUGGING
+#endif
+   | SEC_CODE | SEC_DATA | SEC_EXCLUDE ),
+
+#ifdef TARGET_UNDERSCORE
+  TARGET_UNDERSCORE,		/* leading underscore */
 #else
-  {
+  0,				/* leading underscore */
+#endif
+  '/',				/* ar_pad_char */
+  15,				/* ar_max_namelen */
+  0,				/* match priority.  */
+
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
+
+/* Note that we allow an object file to be treated as a core file as well.  */
+
+  {				/* bfd_check_format */
     _bfd_dummy_target,
-    coff_object_p,
+    COFF_CHECK_FORMAT,
     bfd_generic_archive_p,
-    coff_object_p
+    COFF_CHECK_FORMAT
   },
-#endif
   {				/* bfd_set_format */
     _bfd_bool_bfd_false_error,
     coff_mkobject,
@@ -688,7 +753,7 @@ const bfd_target
   },
   {				/* bfd_write_contents */
     _bfd_bool_bfd_false_error,
-    coff_write_object_contents,
+    COFF_WRITE_CONTENTS,
     _bfd_write_archive_contents,
     _bfd_bool_bfd_false_error
   },
@@ -705,5 +770,6 @@ const bfd_target
 
   NULL,
 
-  COFF_SWAP_TABLE
+  &bigobj_swap_table
 };
+#endif
\ No newline at end of file
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-ia64.c ./bfd/coff-ia64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-ia64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-ia64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for HP/Intel IA-64 COFF files.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Contributed by David Mosberger <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -67,7 +67,7 @@ in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED,
 
 #include "coffcode.h"
 
-static const bfd_target *
+static bfd_cleanup
 ia64coff_object_p (bfd *abfd)
 {
 #ifdef COFF_IMAGE_WITH_PE
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cofflink.c ./bfd/cofflink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cofflink.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cofflink.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* COFF specific linker code.
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -109,7 +109,7 @@ struct bfd_link_hash_table *
 _bfd_coff_link_hash_table_create (bfd *abfd)
 {
   struct coff_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct coff_link_hash_table);
+  size_t amt = sizeof (struct coff_link_hash_table);
 
   ret = (struct coff_link_hash_table *) bfd_malloc (amt);
   if (ret == NULL)
@@ -206,14 +206,20 @@ coff_link_check_archive_element (bfd *ab
 {
   *pneeded = FALSE;
 
+  /* PR 22369 - Skip non COFF objects in the archive.  */
+  if (! bfd_family_coff (abfd))
+    return TRUE;
+
   /* We are only interested in symbols that are currently undefined.
      If a symbol is currently known to be common, COFF linkers do not
      bring in an object file which defines it.  */
   if (h->type != bfd_link_hash_undefined)
     return TRUE;
 
-  /* PR 22369 - Skip non COFF objects in the archive.  */
-  if (! bfd_family_coff (abfd))
+  /* If the archive element has already been loaded then one
+     of the symbols defined by that element might have been
+     made undefined due to being in a discarded section.  */
+  if (((struct coff_link_hash_entry *) h)->indx == -3)
     return TRUE;
 
   /* Include this element?  */
@@ -286,6 +292,7 @@ coff_link_add_symbols (bfd *abfd,
 	  asection *section;
 	  bfd_vma value;
 	  bfd_boolean addit;
+	  bfd_boolean discarded = FALSE;
 
 	  /* This symbol is externally visible.  */
 
@@ -311,7 +318,10 @@ coff_link_add_symbols (bfd *abfd,
 	      flags = BSF_EXPORT | BSF_GLOBAL;
 	      section = coff_section_from_bfd_index (abfd, sym.n_scnum);
 	      if (discarded_section (section))
-		section = bfd_und_section_ptr;
+		{
+		  discarded = TRUE;
+		  section = bfd_und_section_ptr;
+		}
 	      else if (! obj_pe (abfd))
 		value -= section->vma;
 	      break;
@@ -408,6 +418,9 @@ coff_link_add_symbols (bfd *abfd,
 		      (const char *) NULL, copy, FALSE,
 		      (struct bfd_link_hash_entry **) sym_hash)))
 		goto error_return;
+
+	      if (discarded)
+		(*sym_hash)->indx = -3;
 	    }
 
 	  if (obj_pe (abfd) && (flags & BSF_SECTION_SYM) != 0)
@@ -689,7 +702,7 @@ _bfd_coff_final_link (bfd *abfd,
 	  rel_filepos += o->reloc_count * relsz;
 	  /* In PE COFF, if there are at least 0xffff relocations an
 	     extra relocation will be written out to encode the count.  */
-	  if (obj_pe (abfd) && o->reloc_count >= 0xffff)
+	  if ((obj_pe (abfd) || obj_go32 (abfd)) && o->reloc_count >= 0xffff)
 	    rel_filepos += relsz;
 	}
 
@@ -993,41 +1006,20 @@ _bfd_coff_final_link (bfd *abfd,
   coff_debug_merge_hash_table_free (&flaginfo.debug_merge);
   debug_merge_allocated = FALSE;
 
-  if (flaginfo.internal_syms != NULL)
-    {
-      free (flaginfo.internal_syms);
-      flaginfo.internal_syms = NULL;
-    }
-  if (flaginfo.sec_ptrs != NULL)
-    {
-      free (flaginfo.sec_ptrs);
-      flaginfo.sec_ptrs = NULL;
-    }
-  if (flaginfo.sym_indices != NULL)
-    {
-      free (flaginfo.sym_indices);
-      flaginfo.sym_indices = NULL;
-    }
-  if (flaginfo.linenos != NULL)
-    {
-      free (flaginfo.linenos);
-      flaginfo.linenos = NULL;
-    }
-  if (flaginfo.contents != NULL)
-    {
-      free (flaginfo.contents);
-      flaginfo.contents = NULL;
-    }
-  if (flaginfo.external_relocs != NULL)
-    {
-      free (flaginfo.external_relocs);
-      flaginfo.external_relocs = NULL;
-    }
-  if (flaginfo.internal_relocs != NULL)
-    {
-      free (flaginfo.internal_relocs);
-      flaginfo.internal_relocs = NULL;
-    }
+  free (flaginfo.internal_syms);
+  flaginfo.internal_syms = NULL;
+  free (flaginfo.sec_ptrs);
+  flaginfo.sec_ptrs = NULL;
+  free (flaginfo.sym_indices);
+  flaginfo.sym_indices = NULL;
+  free (flaginfo.linenos);
+  flaginfo.linenos = NULL;
+  free (flaginfo.contents);
+  flaginfo.contents = NULL;
+  free (flaginfo.external_relocs);
+  flaginfo.external_relocs = NULL;
+  free (flaginfo.internal_relocs);
+  flaginfo.internal_relocs = NULL;
 
   /* The value of the last C_FILE symbol is supposed to be the symbol
      index of the first external symbol.  Write it out again if
@@ -1066,11 +1058,8 @@ _bfd_coff_final_link (bfd *abfd,
     goto error_return;
 
   /* The outsyms buffer is used by _bfd_coff_write_global_sym.  */
-  if (flaginfo.outsyms != NULL)
-    {
-      free (flaginfo.outsyms);
-      flaginfo.outsyms = NULL;
-    }
+  free (flaginfo.outsyms);
+  flaginfo.outsyms = NULL;
 
   if (bfd_link_relocatable (info) && max_output_reloc_count > 0)
     {
@@ -1108,7 +1097,7 @@ _bfd_coff_final_link (bfd *abfd,
 
 	  if (bfd_seek (abfd, o->rel_filepos, SEEK_SET) != 0)
 	    goto error_return;
-	  if (obj_pe (abfd) && o->reloc_count >= 0xffff)
+	  if ((obj_pe (abfd) || obj_go32 (abfd)) && o->reloc_count >= 0xffff)
 	    {
 	      /* In PE COFF, write the count of relocs as the first
 		 reloc.  The header overflow bit will be set
@@ -1141,10 +1130,8 @@ _bfd_coff_final_link (bfd *abfd,
 
       for (i = 0; i < abfd->section_count; i++)
 	{
-	  if (flaginfo.section_info[i].relocs != NULL)
-	    free (flaginfo.section_info[i].relocs);
-	  if (flaginfo.section_info[i].rel_hashes != NULL)
-	    free (flaginfo.section_info[i].rel_hashes);
+	  free (flaginfo.section_info[i].relocs);
+	  free (flaginfo.section_info[i].rel_hashes);
 	}
       free (flaginfo.section_info);
       flaginfo.section_info = NULL;
@@ -1203,31 +1190,20 @@ _bfd_coff_final_link (bfd *abfd,
 
       for (i = 0; i < abfd->section_count; i++)
 	{
-	  if (flaginfo.section_info[i].relocs != NULL)
-	    free (flaginfo.section_info[i].relocs);
-	  if (flaginfo.section_info[i].rel_hashes != NULL)
-	    free (flaginfo.section_info[i].rel_hashes);
+	  free (flaginfo.section_info[i].relocs);
+	  free (flaginfo.section_info[i].rel_hashes);
 	}
       free (flaginfo.section_info);
     }
-  if (flaginfo.internal_syms != NULL)
-    free (flaginfo.internal_syms);
-  if (flaginfo.sec_ptrs != NULL)
-    free (flaginfo.sec_ptrs);
-  if (flaginfo.sym_indices != NULL)
-    free (flaginfo.sym_indices);
-  if (flaginfo.outsyms != NULL)
-    free (flaginfo.outsyms);
-  if (flaginfo.linenos != NULL)
-    free (flaginfo.linenos);
-  if (flaginfo.contents != NULL)
-    free (flaginfo.contents);
-  if (flaginfo.external_relocs != NULL)
-    free (flaginfo.external_relocs);
-  if (flaginfo.internal_relocs != NULL)
-    free (flaginfo.internal_relocs);
-  if (external_relocs != NULL)
-    free (external_relocs);
+  free (flaginfo.internal_syms);
+  free (flaginfo.sec_ptrs);
+  free (flaginfo.sym_indices);
+  free (flaginfo.outsyms);
+  free (flaginfo.linenos);
+  free (flaginfo.contents);
+  free (flaginfo.external_relocs);
+  free (flaginfo.internal_relocs);
+  free (external_relocs);
   return FALSE;
 }
 
@@ -1286,8 +1262,7 @@ process_embedded_commands (bfd *output_b
 
   if (!bfd_malloc_and_get_section (abfd, sec, &copy))
     {
-      if (copy != NULL)
-	free (copy);
+      free (copy);
       return 0;
     }
   e = (char *) copy + sec->size;
@@ -1647,7 +1622,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	  struct coff_debug_merge_element **epp;
 	  bfd_byte *esl, *eslend;
 	  struct internal_syment *islp;
-	  bfd_size_type amt;
+	  size_t amt;
 
 	  name = _bfd_coff_internal_syment_name (input_bfd, &isym, buf);
 	  if (name == NULL)
@@ -2605,6 +2580,9 @@ _bfd_coff_write_global_sym (struct bfd_h
       return FALSE;
 
     case bfd_link_hash_undefined:
+      if (h->indx == -3)
+	return TRUE;
+      /* Fall through.  */
     case bfd_link_hash_undefweak:
       isym.n_scnum = N_UNDEF;
       isym.n_value = 0;
@@ -3075,9 +3053,15 @@ _bfd_coff_generic_relocate_section (bfd
 	    }
 
 	  else if (! bfd_link_relocatable (info))
-	    (*info->callbacks->undefined_symbol)
-	      (info, h->root.root.string, input_bfd, input_section,
-	       rel->r_vaddr - input_section->vma, TRUE);
+	    {
+	      (*info->callbacks->undefined_symbol)
+		(info, h->root.root.string, input_bfd, input_section,
+		 rel->r_vaddr - input_section->vma, TRUE);
+	      /* Stop the linker from issueing errors about truncated relocs
+		 referencing this undefined symbol by giving it an address
+		 that should be in range.  */
+	      val = input_section->output_section->vma;
+	    }
 	}
 
       /* If the input section defining the symbol has been discarded
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-mcore.c ./bfd/coff-mcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-mcore.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-mcore.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Motorola MCore COFF/PE
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-mips.c ./bfd/coff-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-mips.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-mips.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for MIPS Extended-Coff files.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Original version by Per Bothner.
    Full support added by Ian Lance Taylor, ian@cygnus.com.
 
@@ -1440,7 +1440,8 @@ const bfd_target mips_ecoff_le_vec =
    | HAS_LINENO | HAS_DEBUG
    | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
 
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE
+   | SEC_DATA | SEC_SMALL_DATA),
   0,				/* leading underscore */
   ' ',				/* ar_pad_char */
   15,				/* ar_max_namelen */
@@ -1497,7 +1498,8 @@ const bfd_target mips_ecoff_be_vec =
    | HAS_LINENO | HAS_DEBUG
    | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
 
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE
+   | SEC_DATA | SEC_SMALL_DATA),
   0,				/* leading underscore */
   ' ',				/* ar_pad_char */
   15,				/* ar_max_namelen */
@@ -1554,7 +1556,8 @@ const bfd_target mips_ecoff_bele_vec =
    | HAS_LINENO | HAS_DEBUG
    | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
 
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE
+   | SEC_DATA | SEC_SMALL_DATA),
   0,				/* leading underscore */
   ' ',				/* ar_pad_char */
   15,				/* ar_max_namelen */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-ppc.c ./bfd/coff-ppc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-ppc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-ppc.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,2621 +0,0 @@
-/* BFD back-end for PowerPC Microsoft Portable Executable files.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
-
-   Original version pieced together by Kim Knuttila (krk@cygnus.com)
-
-   There is nothing new under the sun. This file draws a lot on other
-   coff files, in particular, those for the rs/6000, alpha, mips, and
-   intel backends, and the PE work for the arm.
-
-   This file is part of BFD, the Binary File Descriptor library.
-
-   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, write to the Free Software
-   Foundation, 51 Franklin Street - Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-/* Current State:
-   - objdump works
-   - relocs generated by gas
-   - ld will link files, but they do not run.
-   - dlltool will not produce correct output in some .reloc cases, and will
-     not produce the right glue code for dll function calls.  */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-
-#include "coff/powerpc.h"
-#include "coff/internal.h"
-
-#include "coff/pe.h"
-
-#ifdef BADMAG
-#undef BADMAG
-#endif
-
-#define BADMAG(x) PPCBADMAG(x)
-
-#include "libcoff.h"
-
-/* This file is compiled more than once, but we only compile the
-   final_link routine once.  */
-extern bfd_boolean ppc_bfd_coff_final_link (bfd *, struct bfd_link_info *);
-extern void dump_toc (void *);
-
-/* The toc is a set of bfd_vma fields. We use the fact that valid
-   addresses are even (i.e. the bit representing "1" is off) to allow
-   us to encode a little extra information in the field
-   - Unallocated addresses are initialized to 1.
-   - Allocated addresses are even numbers.
-   The first time we actually write a reference to the toc in the bfd,
-   we want to record that fact in a fixup file (if it is asked for), so
-   we keep track of whether or not an address has been written by marking
-   the low order bit with a "1" upon writing.  */
-
-#define SET_UNALLOCATED(x)  ((x) = 1)
-#define IS_UNALLOCATED(x)   ((x) == 1)
-
-#define IS_WRITTEN(x)       ((x) & 1)
-#define MARK_AS_WRITTEN(x)  ((x) |= 1)
-#define MAKE_ADDR_AGAIN(x)  ((x) &= ~1)
-
-/* Turn on this check if you suspect something amiss in the hash tables.  */
-#ifdef DEBUG_HASH
-
-/* Need a 7 char string for an eye catcher.  */
-#define EYE "krkjunk"
-
-#define HASH_CHECK_DCL char eye_catcher[8];
-#define HASH_CHECK_INIT(ret)      strcpy(ret->eye_catcher, EYE)
-#define HASH_CHECK(addr) \
- if (strcmp (addr->eye_catcher, EYE) != 0) \
-  { \
-    fprintf (stderr,\
-    /* xgettext: c-format */ \
-    _("File %s, line %d, Hash check failure, bad eye %8s\n"), \
-    __FILE__, __LINE__, addr->eye_catcher); \
-    abort (); \
- }
-
-#else
-
-#define HASH_CHECK_DCL
-#define HASH_CHECK_INIT(ret)
-#define HASH_CHECK(addr)
-
-#endif
-
-/* In order not to add an int to every hash table item for every coff
-   linker, we define our own hash table, derived from the coff one.  */
-
-/* PE linker hash table entries.  */
-
-struct ppc_coff_link_hash_entry
-{
-  struct coff_link_hash_entry root; /* First entry, as required.  */
-
-  /* As we wonder around the relocs, we'll keep the assigned toc_offset
-     here.  */
-  bfd_vma toc_offset;		    /* Our addition, as required.  */
-  int symbol_is_glue;
-  unsigned long int glue_insn;
-
-  HASH_CHECK_DCL
-};
-
-/* PE linker hash table.  */
-
-struct ppc_coff_link_hash_table
-{
-  struct coff_link_hash_table root; /* First entry, as required.  */
-};
-
-/* Routine to create an entry in the link hash table.  */
-
-static struct bfd_hash_entry *
-ppc_coff_link_hash_newfunc (struct bfd_hash_entry * entry,
-			    struct bfd_hash_table * table,
-			    const char * string)
-{
-  struct ppc_coff_link_hash_entry *ret =
-    (struct ppc_coff_link_hash_entry *) entry;
-
-  /* Allocate the structure if it has not already been allocated by a
-     subclass.  */
-  if (ret == (struct ppc_coff_link_hash_entry *) NULL)
-    ret = (struct ppc_coff_link_hash_entry *)
-      bfd_hash_allocate (table,
-			 sizeof (struct ppc_coff_link_hash_entry));
-
-  if (ret == (struct ppc_coff_link_hash_entry *) NULL)
-    return NULL;
-
-  /* Call the allocation method of the superclass.  */
-  ret = ((struct ppc_coff_link_hash_entry *)
-	 _bfd_coff_link_hash_newfunc ((struct bfd_hash_entry *) ret,
-				      table, string));
-
-  if (ret)
-    {
-      /* Initialize the local fields.  */
-      SET_UNALLOCATED (ret->toc_offset);
-      ret->symbol_is_glue = 0;
-      ret->glue_insn = 0;
-
-      HASH_CHECK_INIT (ret);
-    }
-
-  return (struct bfd_hash_entry *) ret;
-}
-
-/* Initialize a PE linker hash table.  */
-
-static bfd_boolean
-ppc_coff_link_hash_table_init (struct ppc_coff_link_hash_table *table,
-			       bfd *abfd,
-			       struct bfd_hash_entry *(*newfunc)
-				 (struct bfd_hash_entry *,
-				  struct bfd_hash_table *,
-				  const char *),
-			       unsigned int entsize)
-{
-  return _bfd_coff_link_hash_table_init (&table->root, abfd, newfunc, entsize);
-}
-
-/* Create a PE linker hash table.  */
-
-static struct bfd_link_hash_table *
-ppc_coff_link_hash_table_create (bfd *abfd)
-{
-  struct ppc_coff_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct ppc_coff_link_hash_table);
-
-  ret = (struct ppc_coff_link_hash_table *) bfd_malloc (amt);
-  if (ret == NULL)
-    return NULL;
-  if (!ppc_coff_link_hash_table_init (ret, abfd,
-				      ppc_coff_link_hash_newfunc,
-				      sizeof (struct ppc_coff_link_hash_entry)))
-    {
-      free (ret);
-      return (struct bfd_link_hash_table *) NULL;
-    }
-  return &ret->root.root;
-}
-
-/* Now, tailor coffcode.h to use our hash stuff.  */
-
-#define coff_bfd_link_hash_table_create ppc_coff_link_hash_table_create
-
-/* The nt loader points the toc register to &toc + 32768, in order to
-   use the complete range of a 16-bit displacement. We have to adjust
-   for this when we fix up loads displaced off the toc reg.  */
-#define TOC_LOAD_ADJUSTMENT (-32768)
-#define TOC_SECTION_NAME ".private.toc"
-
-/* The main body of code is in coffcode.h.  */
-
-#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
-
-/* In case we're on a 32-bit machine, construct a 64-bit "-1" value
-   from smaller values.  Start with zero, widen, *then* decrement.  */
-#define MINUS_ONE	(((bfd_vma)0) - 1)
-
-/* These should definitely go in a header file somewhere...  */
-
-/* NOP */
-#define IMAGE_REL_PPC_ABSOLUTE		0x0000
-
-/* 64-bit address */
-#define IMAGE_REL_PPC_ADDR64		0x0001
-
-/* 32-bit address */
-#define IMAGE_REL_PPC_ADDR32		0x0002
-
-/* 26-bit address, shifted left 2 (branch absolute) */
-#define IMAGE_REL_PPC_ADDR24		0x0003
-
-/* 16-bit address */
-#define IMAGE_REL_PPC_ADDR16		0x0004
-
-/* 16-bit address, shifted left 2 (load doubleword) */
-#define IMAGE_REL_PPC_ADDR14		0x0005
-
-/* 26-bit PC-relative offset, shifted left 2 (branch relative) */
-#define IMAGE_REL_PPC_REL24		0x0006
-
-/* 16-bit PC-relative offset, shifted left 2 (br cond relative) */
-#define IMAGE_REL_PPC_REL14		0x0007
-
-/* 16-bit offset from TOC base */
-#define IMAGE_REL_PPC_TOCREL16		0x0008
-
-/* 16-bit offset from TOC base, shifted left 2 (load doubleword) */
-#define IMAGE_REL_PPC_TOCREL14		0x0009
-
-/* 32-bit addr w/o image base */
-#define IMAGE_REL_PPC_ADDR32NB		0x000A
-
-/* va of containing section (as in an image sectionhdr) */
-#define IMAGE_REL_PPC_SECREL		0x000B
-
-/* sectionheader number */
-#define IMAGE_REL_PPC_SECTION		0x000C
-
-/* substitute TOC restore instruction iff symbol is glue code */
-#define IMAGE_REL_PPC_IFGLUE		0x000D
-
-/* symbol is glue code; virtual address is TOC restore instruction */
-#define IMAGE_REL_PPC_IMGLUE		0x000E
-
-/* va of containing section (limited to 16 bits) */
-#define IMAGE_REL_PPC_SECREL16		0x000F
-
-/* Stuff to handle immediate data when the number of bits in the
-   data is greater than the number of bits in the immediate field
-   We need to do (usually) 32 bit arithmetic on 16 bit chunks.  */
-#define IMAGE_REL_PPC_REFHI		0x0010
-#define IMAGE_REL_PPC_REFLO		0x0011
-#define IMAGE_REL_PPC_PAIR		0x0012
-
-/* This is essentially the same as tocrel16, with TOCDEFN assumed.  */
-#define IMAGE_REL_PPC_TOCREL16_DEFN	0x0013
-
-/* Flag bits in IMAGE_RELOCATION.TYPE.  */
-
-/* Subtract reloc value rather than adding it.  */
-#define IMAGE_REL_PPC_NEG		0x0100
-
-/* Fix branch prediction bit to predict branch taken.  */
-#define IMAGE_REL_PPC_BRTAKEN		0x0200
-
-/* Fix branch prediction bit to predict branch not taken.  */
-#define IMAGE_REL_PPC_BRNTAKEN		0x0400
-
-/* TOC slot defined in file (or, data in toc).  */
-#define IMAGE_REL_PPC_TOCDEFN		0x0800
-
-/* Masks to isolate above values in IMAGE_RELOCATION.Type.  */
-#define IMAGE_REL_PPC_TYPEMASK		0x00FF
-#define IMAGE_REL_PPC_FLAGMASK		0x0F00
-
-#define EXTRACT_TYPE(x)			((x) & IMAGE_REL_PPC_TYPEMASK)
-#define EXTRACT_FLAGS(x) ((x) & IMAGE_REL_PPC_FLAGMASK)
-#define EXTRACT_JUNK(x)	 \
-	   ((x) & ~(IMAGE_REL_PPC_TYPEMASK | IMAGE_REL_PPC_FLAGMASK))
-
-/* Static helper functions to make relocation work.  */
-/* (Work In Progress) */
-
-static bfd_reloc_status_type ppc_refhi_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type ppc_pair_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type ppc_toc16_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type ppc_section_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type ppc_secrel_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type ppc_imglue_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-
-/* FIXME: It'll take a while to get through all of these. I only need a few to
-   get us started, so those I'll make sure work. Those marked FIXME are either
-   completely unverified or have a specific unknown marked in the comment.  */
-
-/* Relocation entries for Windows/NT on PowerPC.
-
-   From the document "" we find the following listed as used relocs:
-
-     ABSOLUTE	    : The noop
-     ADDR[64|32|16] : fields that hold addresses in data fields or the
-		      16 bit displacement field on a load/store.
-     ADDR[24|14]    : fields that hold addresses in branch and cond
-		      branches. These represent [26|16] bit addresses.
-		      The low order 2 bits are preserved.
-     REL[24|14]	    : branches relative to the Instruction Address
-		      register. These represent [26|16] bit addresses,
-		      as before. The instruction field will be zero, and
-		      the address of the SYM will be inserted at link time.
-     TOCREL16	    : 16 bit displacement field referring to a slot in
-		      toc.
-     TOCREL14	    : 16 bit displacement field, similar to REL14 or ADDR14.
-     ADDR32NB	    : 32 bit address relative to the virtual origin.
-		      (On the alpha, this is always a linker generated thunk)
-		      (i.e. 32bit addr relative to the image base)
-     SECREL	    : The value is relative to the start of the section
-		      containing the symbol.
-     SECTION	    : access to the header containing the item. Supports the
-		      codeview debugger.
-
-   In particular, note that the document does not indicate that the
-   relocations listed in the header file are used.  */
-
-
-static reloc_howto_type ppc_coff_howto_table[] =
-{
-  /* IMAGE_REL_PPC_ABSOLUTE 0x0000   NOP */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_ABSOLUTE, /* type */
-	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
-	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_dont, /* dont complain_on_overflow */
-	 0,			/* special_function */
-	 "ABSOLUTE",		/* name */
-	 FALSE,			/* partial_inplace */
-	 0x00,			/* src_mask */
-	 0x00,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_ADDR64 0x0001  64-bit address */
-  /* Unused: */
-  HOWTO(IMAGE_REL_PPC_ADDR64,	/* type */
-	0,			/* rightshift */
-	3,			/* size (0 = byte, 1 = short, 2 = long) */
-	64,			/* bitsize */
-	FALSE,			/* pc_relative */
-	0,			/* bitpos */
-	complain_overflow_bitfield, /* complain_on_overflow */
-	0,			/* special_function */
-	"ADDR64",		/* name */
-	TRUE,			/* partial_inplace */
-	MINUS_ONE,		/* src_mask */
-	MINUS_ONE,		/* dst_mask */
-	FALSE),			/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_ADDR32 0x0002  32-bit address */
-  /* Used: */
-  HOWTO (IMAGE_REL_PPC_ADDR32,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_bitfield, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "ADDR32",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_ADDR24 0x0003  26-bit address, shifted left 2 (branch absolute) */
-  /* the LI field is in bit 6 through bit 29 is 24 bits, + 2 for the shift */
-  /* Of course, That's the IBM approved bit numbering, which is not what */
-  /* anyone else uses.... The li field is in bit 2 thru 25 */
-  /* Used: */
-  HOWTO (IMAGE_REL_PPC_ADDR24,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_bitfield, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "ADDR24",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0x07fffffc,		/* src_mask */
-	 0x07fffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_ADDR16 0x0004  16-bit address */
-  /* Used: */
-  HOWTO (IMAGE_REL_PPC_ADDR16,	/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "ADDR16",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_ADDR14 0x0005 */
-  /*  16-bit address, shifted left 2 (load doubleword) */
-  /* FIXME: the mask is likely wrong, and the bit position may be as well */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_ADDR14,	/* type */
-	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "ADDR16",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_REL24 0x0006 */
-  /*   26-bit PC-relative offset, shifted left 2 (branch relative) */
-  /* Used: */
-  HOWTO (IMAGE_REL_PPC_REL24,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "REL24",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0x3fffffc,		/* src_mask */
-	 0x3fffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_REL14 0x0007 */
-  /*   16-bit PC-relative offset, shifted left 2 (br cond relative) */
-  /* FIXME: the mask is likely wrong, and the bit position may be as well */
-  /* FIXME: how does it know how far to shift? */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_ADDR14,	/* type */
-	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "ADDR16",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_TOCREL16 0x0008 */
-  /*   16-bit offset from TOC base */
-  /* Used: */
-  HOWTO (IMAGE_REL_PPC_TOCREL16,/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_dont, /* complain_on_overflow */
-	 ppc_toc16_reloc,	/* special_function */
-	 "TOCREL16",		/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_TOCREL14 0x0009 */
-  /*   16-bit offset from TOC base, shifted left 2 (load doubleword) */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_TOCREL14,/* type */
-	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "TOCREL14",		/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_ADDR32NB 0x000A */
-  /*   32-bit addr w/ image base */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_ADDR32NB,/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "ADDR32NB",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_SECREL 0x000B */
-  /*   va of containing section (as in an image sectionhdr) */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_SECREL,/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 ppc_secrel_reloc,	/* special_function */
-	 "SECREL",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_SECTION 0x000C */
-  /*   sectionheader number */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_SECTION,/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 ppc_section_reloc,	/* special_function */
-	 "SECTION",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_IFGLUE 0x000D */
-  /*   substitute TOC restore instruction iff symbol is glue code */
-  /* Used: */
-  HOWTO (IMAGE_REL_PPC_IFGLUE,/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "IFGLUE",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_IMGLUE 0x000E */
-  /*   symbol is glue code; virtual address is TOC restore instruction */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_IMGLUE,/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_dont, /* complain_on_overflow */
-	 ppc_imglue_reloc,	/* special_function */
-	 "IMGLUE",		/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_SECREL16 0x000F */
-  /*   va of containing section (limited to 16 bits) */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_SECREL16,/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "SECREL16",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_REFHI	     0x0010 */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_REFHI,	/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 ppc_refhi_reloc,	/* special_function */
-	 "REFHI",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_REFLO	     0x0011 */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_REFLO,	/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 ppc_refhi_reloc,	/* special_function */
-	 "REFLO",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_PAIR		     0x0012 */
-  /* Unused: */
-  HOWTO (IMAGE_REL_PPC_PAIR,	/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 ppc_pair_reloc,	/* special_function */
-	 "PAIR",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* IMAGE_REL_PPC_TOCREL16_DEFN 0x0013 */
-  /*   16-bit offset from TOC base, without causing a definition */
-  /* Used: */
-  HOWTO ( (IMAGE_REL_PPC_TOCREL16 | IMAGE_REL_PPC_TOCDEFN), /* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_dont, /* complain_on_overflow */
-	 0,			/* special_function */
-	 "TOCREL16, TOCDEFN",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-};
-
-/* Some really cheezy macros that can be turned on to test stderr :-)  */
-
-#ifdef DEBUG_RELOC
-#define UN_IMPL(x)					     \
-{							     \
-   static int i;					     \
-   if (i == 0)						     \
-     {							     \
-       i = 1;						     \
-       fprintf (stderr,_("Unimplemented Relocation -- %s\n"),x); \
-     }							     \
-}
-
-#define DUMP_RELOC(n,r)				     \
-{						     \
-   fprintf (stderr,"%s sym %d, addr %d, addend %d\n", \
-	   n, (*(r->sym_ptr_ptr))->name,	     \
-	   r->address, r->addend);		     \
-}
-
-/* Given a reloc name, n, and a pointer to an internal_reloc,
-   dump out interesting information on the contents
-
-#define n_name		_n._n_name
-#define n_zeroes	_n._n_n._n_zeroes
-#define n_offset	_n._n_n._n_offset  */
-
-#define DUMP_RELOC2(n,r)				\
-{							\
-   fprintf (stderr,"%s sym %d, r_vaddr %d %s\n",	\
-	   n, r->r_symndx, r->r_vaddr,			\
-	   (((r->r_type) & IMAGE_REL_PPC_TOCDEFN) == 0) \
-	   ?" ":" TOCDEFN"  );				\
-}
-
-#else
-#define UN_IMPL(x)
-#define DUMP_RELOC(n,r)
-#define DUMP_RELOC2(n,r)
-#endif
-
-/* TOC construction and management routines.  */
-
-/* This file is compiled twice, and these variables are defined in one
-   of the compilations.  FIXME: This is confusing and weird.  Also,
-   BFD should not use global variables.  */
-extern bfd *    bfd_of_toc_owner;
-extern long int global_toc_size;
-extern long int import_table_size;
-extern long int first_thunk_address;
-extern long int thunk_size;
-
-enum toc_type
-{
-  default_toc,
-  toc_32,
-  toc_64
-};
-
-enum ref_category
-{
-  priv,
-  pub,
-  tocdata
-};
-
-struct list_ele
-{
-  struct list_ele *next;
-  bfd_vma addr;
-  enum ref_category cat;
-  int offset;
-  const char *name;
-};
-
-extern struct list_ele *head;
-extern struct list_ele *tail;
-
-static void
-record_toc (asection *toc_section,
-	    bfd_signed_vma our_toc_offset,
-	    enum ref_category cat,
-	    const char *name)
-{
-  /* Add this entry to our toc addr-offset-name list.  */
-  bfd_size_type amt = sizeof (struct list_ele);
-  struct list_ele *t = (struct list_ele *) bfd_malloc (amt);
-
-  if (t == NULL)
-    abort ();
-  t->next = 0;
-  t->offset = our_toc_offset;
-  t->name = name;
-  t->cat = cat;
-  t->addr = toc_section->output_offset + our_toc_offset;
-
-  if (head == 0)
-    {
-      head = t;
-      tail = t;
-    }
-  else
-    {
-      tail->next = t;
-      tail = t;
-    }
-}
-
-#ifdef COFF_IMAGE_WITH_PE
-
-/* Record a toc offset against a symbol.  */
-static bfd_boolean
-ppc_record_toc_entry (bfd *abfd,
-		      struct bfd_link_info *info ATTRIBUTE_UNUSED,
-		      asection *sec ATTRIBUTE_UNUSED,
-		      int sym,
-		      enum toc_type toc_kind ATTRIBUTE_UNUSED)
-{
-  struct ppc_coff_link_hash_entry *h;
-  int *local_syms;
-
-  h = 0;
-
-  h = (struct ppc_coff_link_hash_entry *) (obj_coff_sym_hashes (abfd)[sym]);
-  if (h != 0)
-    {
-      HASH_CHECK(h);
-    }
-
-  if (h == 0)
-    {
-      local_syms = obj_coff_local_toc_table(abfd);
-
-      if (local_syms == 0)
-	{
-	  unsigned int i;
-	  bfd_size_type amt;
-
-	  /* allocate a table */
-	  amt = (bfd_size_type) obj_raw_syment_count (abfd) * sizeof (int);
-	  local_syms = (int *) bfd_zalloc (abfd, amt);
-	  if (local_syms == 0)
-	    return FALSE;
-	  obj_coff_local_toc_table (abfd) = local_syms;
-
-	  for (i = 0; i < obj_raw_syment_count (abfd); ++i)
-	    {
-	      SET_UNALLOCATED (local_syms[i]);
-	    }
-	}
-
-      if (IS_UNALLOCATED(local_syms[sym]))
-	{
-	  local_syms[sym] = global_toc_size;
-	  global_toc_size += 4;
-
-	  /* The size must fit in a 16-bit displacement.  */
-	  if (global_toc_size > 65535)
-	    {
-	      _bfd_error_handler (_("TOC overflow"));
-	      bfd_set_error (bfd_error_file_too_big);
-	      return FALSE;
-	    }
-	}
-    }
-  else
-    {
-      /* Check to see if there's a toc slot allocated. If not, do it
-	 here. It will be used in relocate_section.  */
-      if (IS_UNALLOCATED(h->toc_offset))
-	{
-	  h->toc_offset = global_toc_size;
-	  global_toc_size += 4;
-
-	  /* The size must fit in a 16-bit displacement.  */
-	  if (global_toc_size >= 65535)
-	    {
-	      _bfd_error_handler (_("TOC overflow"));
-	      bfd_set_error (bfd_error_file_too_big);
-	      return FALSE;
-	    }
-	}
-    }
-
-  return TRUE;
-}
-
-/* Record a toc offset against a symbol.  */
-static void
-ppc_mark_symbol_as_glue (bfd *abfd,
-			 int sym,
-			 struct internal_reloc *rel)
-{
-  struct ppc_coff_link_hash_entry *h;
-
-  h = (struct ppc_coff_link_hash_entry *) (obj_coff_sym_hashes (abfd)[sym]);
-
-  HASH_CHECK(h);
-
-  h->symbol_is_glue = 1;
-  h->glue_insn = bfd_get_32 (abfd, (bfd_byte *) &rel->r_vaddr);
-
-  return;
-}
-
-#endif /* COFF_IMAGE_WITH_PE */
-
-/* Return TRUE if this relocation should
-   appear in the output .reloc section.  */
-
-static bfd_boolean
-in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED,
-	    reloc_howto_type *howto)
-{
-  return
-    (! howto->pc_relative)
-      && (howto->type != IMAGE_REL_PPC_ADDR32NB)
-      && (howto->type != IMAGE_REL_PPC_TOCREL16)
-      && (howto->type != IMAGE_REL_PPC_IMGLUE)
-      && (howto->type != IMAGE_REL_PPC_IFGLUE)
-      && (howto->type != IMAGE_REL_PPC_SECREL)
-      && (howto->type != IMAGE_REL_PPC_SECTION)
-      && (howto->type != IMAGE_REL_PPC_SECREL16)
-      && (howto->type != IMAGE_REL_PPC_REFHI)
-      && (howto->type != IMAGE_REL_PPC_REFLO)
-      && (howto->type != IMAGE_REL_PPC_PAIR)
-      && (howto->type != IMAGE_REL_PPC_TOCREL16_DEFN) ;
-}
-
-static bfd_boolean
-write_base_file_entry (bfd *obfd, struct bfd_link_info *info, bfd_vma addr)
-{
-  if (coff_data (obfd)->pe)
-     addr -= pe_data (obfd)->pe_opthdr.ImageBase;
-  if (fwrite (&addr, sizeof (addr), 1, (FILE *) info->base_file) == 1)
-    return TRUE;
-
-  bfd_set_error (bfd_error_system_call);
-  return FALSE;
-}
-
-/* The reloc processing routine for the optimized COFF linker.  */
-
-static bfd_boolean
-coff_ppc_relocate_section (bfd *output_bfd,
-			   struct bfd_link_info *info,
-			   bfd *input_bfd,
-			   asection *input_section,
-			   bfd_byte *contents,
-			   struct internal_reloc *relocs,
-			   struct internal_syment *syms,
-			   asection **sections)
-{
-  struct internal_reloc *rel;
-  struct internal_reloc *relend;
-  asection *toc_section = 0;
-  bfd_vma relocation;
-  reloc_howto_type *howto = 0;
-
-  /* If we are performing a relocatable link, we don't need to do a
-     thing.  The caller will take care of adjusting the reloc
-     addresses and symbol indices.  */
-  if (bfd_link_relocatable (info))
-    return TRUE;
-
-  rel = relocs;
-  relend = rel + input_section->reloc_count;
-  for (; rel < relend; rel++)
-    {
-      long symndx;
-      struct ppc_coff_link_hash_entry *h;
-      struct internal_syment *sym;
-      bfd_vma val;
-
-      asection *sec;
-      bfd_reloc_status_type rstat;
-      bfd_byte *loc;
-
-      unsigned short r_type  = EXTRACT_TYPE (rel->r_type);
-      unsigned short r_flags = EXTRACT_FLAGS(rel->r_type);
-
-      symndx = rel->r_symndx;
-      loc = contents + rel->r_vaddr - input_section->vma;
-
-      /* FIXME: check bounds on r_type */
-      howto = ppc_coff_howto_table + r_type;
-
-      if (symndx == -1)
-	{
-	  h = NULL;
-	  sym = NULL;
-	}
-      else
-	{
-	  h = (struct ppc_coff_link_hash_entry *)
-	    (obj_coff_sym_hashes (input_bfd)[symndx]);
-	  if (h != 0)
-	    {
-	      HASH_CHECK(h);
-	    }
-
-	  sym = syms + symndx;
-	}
-
-      if (r_type == IMAGE_REL_PPC_IMGLUE && h == 0)
-	{
-	  /* An IMGLUE reloc must have a name. Something is very wrong.  */
-	  abort ();
-	}
-
-      sec = NULL;
-      val = 0;
-
-      /* FIXME: PAIR unsupported in the following code.  */
-      if (h == NULL)
-	{
-	  if (symndx == -1)
-	    sec = bfd_abs_section_ptr;
-	  else
-	    {
-	      sec = sections[symndx];
-	      val = (sec->output_section->vma
-		     + sec->output_offset
-		     + sym->n_value);
-	      if (! obj_pe (output_bfd))
-		val -= sec->vma;
-	    }
-	}
-      else
-	{
-	  HASH_CHECK(h);
-
-	  if (h->root.root.type == bfd_link_hash_defined
-	      || h->root.root.type == bfd_link_hash_defweak)
-	    {
-	      sec = h->root.root.u.def.section;
-	      val = (h->root.root.u.def.value
-		     + sec->output_section->vma
-		     + sec->output_offset);
-	    }
-	  else
-	    (*info->callbacks->undefined_symbol)
-	      (info, h->root.root.root.string, input_bfd, input_section,
-	       rel->r_vaddr - input_section->vma, TRUE);
-	}
-
-      rstat = bfd_reloc_ok;
-
-      /* Each case must do its own relocation, setting rstat appropriately.  */
-      switch (r_type)
-	{
-	default:
-	  /* xgettext: c-format */
-	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
-			      input_bfd, r_type);
-	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
-	case IMAGE_REL_PPC_TOCREL16:
-	  {
-	    bfd_signed_vma our_toc_offset;
-	    int fixit;
-
-	    DUMP_RELOC2(howto->name, rel);
-
-	    if (toc_section == 0)
-	      {
-		toc_section = bfd_get_section_by_name (bfd_of_toc_owner,
-						       TOC_SECTION_NAME);
-
-		if ( toc_section == NULL )
-		  {
-		    /* There is no toc section. Something is very wrong.  */
-		    abort ();
-		  }
-	      }
-
-	    /* Amazing bit tricks present. As we may have seen earlier, we
-	       use the 1 bit to tell us whether or not a toc offset has been
-	       allocated. Now that they've all been allocated, we will use
-	       the 1 bit to tell us if we've written this particular toc
-	       entry out.  */
-	    fixit = FALSE;
-	    if (h == 0)
-	      {
-		/* It is a file local symbol.  */
-		int *local_toc_table;
-		char name[SYMNMLEN + 1];
-
-		sym = syms + symndx;
-		strncpy (name, sym->_n._n_name, SYMNMLEN);
-		name[SYMNMLEN] = '\0';
-
-		local_toc_table = obj_coff_local_toc_table(input_bfd);
-		our_toc_offset = local_toc_table[symndx];
-
-		if (IS_WRITTEN(our_toc_offset))
-		  {
-		    /* If it has been written out, it is marked with the
-		       1 bit. Fix up our offset, but do not write it out
-		       again.  */
-		    MAKE_ADDR_AGAIN(our_toc_offset);
-		  }
-		else
-		  {
-		    /* Write out the toc entry.  */
-		    record_toc (toc_section, our_toc_offset, priv,
-				strdup (name));
-
-		    bfd_put_32 (output_bfd, val,
-			       toc_section->contents + our_toc_offset);
-
-		    MARK_AS_WRITTEN(local_toc_table[symndx]);
-		    fixit = TRUE;
-		  }
-	      }
-	    else
-	      {
-		const char *name = h->root.root.root.string;
-		our_toc_offset = h->toc_offset;
-
-		if ((r_flags & IMAGE_REL_PPC_TOCDEFN)
-		    == IMAGE_REL_PPC_TOCDEFN )
-		  {
-		    /* This is unbelievable cheese. Some knowledgable asm
-		       hacker has decided to use r2 as a base for loading
-		       a value. He/She does this by setting the tocdefn bit,
-		       and not supplying a toc definition. The behaviour is
-		       then to use the difference between the value of the
-		       symbol and the actual location of the toc as the toc
-		       index.
-
-		       In fact, what is usually happening is, because the
-		       Import Address Table is mapped immediately following
-		       the toc, some trippy library code trying for speed on
-		       dll linkage, takes advantage of that and considers
-		       the IAT to be part of the toc, thus saving a load.  */
-
-		    our_toc_offset = val - (toc_section->output_section->vma
-					    + toc_section->output_offset);
-
-		    /* The size must still fit in a 16-bit displacement.  */
-		    if ((bfd_vma) our_toc_offset >= 65535)
-		      {
-			_bfd_error_handler
-			  /* xgettext: c-format */
-			  (_("%pB: Relocation for %s of %#" PRIx64 " exceeds "
-			     "Toc size limit"),
-			   input_bfd, name, (uint64_t) our_toc_offset);
-			bfd_set_error (bfd_error_bad_value);
-			return FALSE;
-		      }
-
-		    record_toc (toc_section, our_toc_offset, pub,
-				strdup (name));
-		  }
-		else if (IS_WRITTEN (our_toc_offset))
-		  {
-		    /* If it has been written out, it is marked with the
-		       1 bit. Fix up our offset, but do not write it out
-		       again.  */
-		    MAKE_ADDR_AGAIN(our_toc_offset);
-		  }
-		else
-		  {
-		    record_toc(toc_section, our_toc_offset, pub,
-			       strdup (name));
-
-		    /* Write out the toc entry.  */
-		    bfd_put_32 (output_bfd, val,
-			       toc_section->contents + our_toc_offset);
-
-		    MARK_AS_WRITTEN(h->toc_offset);
-		    /* The tricky part is that this is the address that
-		       needs a .reloc entry for it.  */
-		    fixit = TRUE;
-		  }
-	      }
-
-	    if (fixit && info->base_file)
-	      {
-		/* So if this is non pcrelative, and is referenced
-		   to a section or a common symbol, then it needs a reloc.  */
-
-		/* Relocation to a symbol in a section which
-		   isn't absolute - we output the address here
-		   to a file.  */
-		bfd_vma addr = (toc_section->output_section->vma
-				+ toc_section->output_offset + our_toc_offset);
-
-		if (!write_base_file_entry (output_bfd, info, addr))
-		  return FALSE;
-	      }
-
-	    /* FIXME: this test is conservative.  */
-	    if ((r_flags & IMAGE_REL_PPC_TOCDEFN) != IMAGE_REL_PPC_TOCDEFN
-		&& (bfd_vma) our_toc_offset > toc_section->size)
-	      {
-		_bfd_error_handler
-		  /* xgettext: c-format */
-		  (_("%pB: Relocation exceeds allocated TOC (%#" PRIx64 ")"),
-		   input_bfd, (uint64_t) toc_section->size);
-		bfd_set_error (bfd_error_bad_value);
-		return FALSE;
-	      }
-
-	    /* Now we know the relocation for this toc reference.  */
-	    relocation =  our_toc_offset + TOC_LOAD_ADJUSTMENT;
-	    rstat = _bfd_relocate_contents (howto, input_bfd, relocation, loc);
-	  }
-	  break;
-	case IMAGE_REL_PPC_IFGLUE:
-	  {
-	    /* To solve this, we need to know whether or not the symbol
-	       appearing on the call instruction is a glue function or not.
-	       A glue function must announce itself via a IMGLUE reloc, and
-	       the reloc contains the required toc restore instruction.  */
-	    DUMP_RELOC2 (howto->name, rel);
-
-	    if (h != 0)
-	      {
-		if (h->symbol_is_glue == 1)
-		  {
-		    bfd_put_32 (input_bfd, (bfd_vma) h->glue_insn, loc);
-		  }
-	      }
-	  }
-	  break;
-	case IMAGE_REL_PPC_SECREL:
-	  /* Unimplemented: codeview debugging information.  */
-	  /* For fast access to the header of the section
-	     containing the item.  */
-	  break;
-	case IMAGE_REL_PPC_SECTION:
-	  /* Unimplemented: codeview debugging information.  */
-	  /* Is used to indicate that the value should be relative
-	     to the beginning of the section that contains the
-	     symbol.  */
-	  break;
-	case IMAGE_REL_PPC_ABSOLUTE:
-	  {
-	    const char *my_name;
-	    char buf[SYMNMLEN + 1];
-
-	    if (h == 0)
-	      {
-		strncpy (buf, (syms+symndx)->_n._n_name, SYMNMLEN);
-		buf[SYMNMLEN] = '\0';
-		my_name = buf;
-	      }
-	    else
-	      my_name = h->root.root.root.string;
-
-	    _bfd_error_handler
-	      /* xgettext: c-format */
-	      (_("warning: unsupported reloc %s <file %pB, section %pA>\n"
-		 "sym %ld (%s), r_vaddr %" PRId64 " (%#" PRIx64 ")"),
-	       howto->name, input_bfd, input_section,
-	       rel->r_symndx, my_name,
-	       (int64_t) rel->r_vaddr, (uint64_t) rel->r_vaddr);
-	  }
-	  break;
-	case IMAGE_REL_PPC_IMGLUE:
-	  {
-	    /* There is nothing to do now. This reloc was noted in the first
-	       pass over the relocs, and the glue instruction extracted.  */
-	    const char *my_name;
-
-	    if (h->symbol_is_glue == 1)
-	      break;
-	    my_name = h->root.root.root.string;
-
-	    _bfd_error_handler
-	      /* xgettext: c-format */
-	      (_("%pB: Out of order IMGLUE reloc for %s"), input_bfd, my_name);
-	    bfd_set_error (bfd_error_bad_value);
-	    return FALSE;
-	  }
-
-	case IMAGE_REL_PPC_ADDR32NB:
-	  {
-	    const char *name = 0;
-
-	    DUMP_RELOC2 (howto->name, rel);
-
-	    if (CONST_STRNEQ (input_section->name, ".idata$2") && first_thunk_address == 0)
-	      {
-		/* Set magic values.  */
-		int idata5offset;
-		struct coff_link_hash_entry *myh;
-
-		myh = coff_link_hash_lookup (coff_hash_table (info),
-					     "__idata5_magic__",
-					     FALSE, FALSE, TRUE);
-		first_thunk_address = myh->root.u.def.value +
-		  sec->output_section->vma +
-		    sec->output_offset -
-		      pe_data(output_bfd)->pe_opthdr.ImageBase;
-
-		idata5offset = myh->root.u.def.value;
-		myh = coff_link_hash_lookup (coff_hash_table (info),
-					     "__idata6_magic__",
-					     FALSE, FALSE, TRUE);
-
-		thunk_size = myh->root.u.def.value - idata5offset;
-		myh = coff_link_hash_lookup (coff_hash_table (info),
-					     "__idata4_magic__",
-					     FALSE, FALSE, TRUE);
-		import_table_size = myh->root.u.def.value;
-	      }
-
-	    if (h == 0)
-	      /* It is a file local symbol.  */
-	      sym = syms + symndx;
-	    else
-	      {
-		char *target = 0;
-
-		name = h->root.root.root.string;
-		if (strcmp (".idata$2", name) == 0)
-		  target = "__idata2_magic__";
-		else if (strcmp (".idata$4", name) == 0)
-		  target = "__idata4_magic__";
-		else if (strcmp (".idata$5", name) == 0)
-		  target = "__idata5_magic__";
-
-		if (target != 0)
-		  {
-		    struct coff_link_hash_entry *myh;
-
-		    myh = coff_link_hash_lookup (coff_hash_table (info),
-						 target,
-						 FALSE, FALSE, TRUE);
-		    if (myh == 0)
-		      {
-			/* Missing magic cookies. Something is very wrong.  */
-			abort ();
-		      }
-
-		    val = myh->root.u.def.value +
-		      sec->output_section->vma + sec->output_offset;
-		    if (first_thunk_address == 0)
-		      {
-			int idata5offset;
-			myh = coff_link_hash_lookup (coff_hash_table (info),
-						     "__idata5_magic__",
-						     FALSE, FALSE, TRUE);
-			first_thunk_address = myh->root.u.def.value +
-			  sec->output_section->vma +
-			    sec->output_offset -
-			      pe_data(output_bfd)->pe_opthdr.ImageBase;
-
-			idata5offset = myh->root.u.def.value;
-			myh = coff_link_hash_lookup (coff_hash_table (info),
-						     "__idata6_magic__",
-						     FALSE, FALSE, TRUE);
-
-			thunk_size = myh->root.u.def.value - idata5offset;
-			myh = coff_link_hash_lookup (coff_hash_table (info),
-						     "__idata4_magic__",
-						     FALSE, FALSE, TRUE);
-			import_table_size = myh->root.u.def.value;
-		      }
-		  }
-	      }
-
-	    rstat = _bfd_relocate_contents (howto,
-					    input_bfd,
-					    val -
-					    pe_data (output_bfd)->pe_opthdr.ImageBase,
-					    loc);
-	  }
-	  break;
-
-	case IMAGE_REL_PPC_REL24:
-	  DUMP_RELOC2(howto->name, rel);
-	  val -= (input_section->output_section->vma
-		  + input_section->output_offset);
-
-	  rstat = _bfd_relocate_contents (howto,
-					  input_bfd,
-					  val,
-					  loc);
-	  break;
-	case IMAGE_REL_PPC_ADDR16:
-	case IMAGE_REL_PPC_ADDR24:
-	case IMAGE_REL_PPC_ADDR32:
-	  DUMP_RELOC2(howto->name, rel);
-	  rstat = _bfd_relocate_contents (howto,
-					  input_bfd,
-					  val,
-					  loc);
-	  break;
-	}
-
-      if (info->base_file)
-	{
-	  /* So if this is non pcrelative, and is referenced
-	     to a section or a common symbol, then it needs a reloc.  */
-	  if (sym && pe_data(output_bfd)->in_reloc_p (output_bfd, howto))
-	    {
-	      /* Relocation to a symbol in a section which
-		 isn't absolute - we output the address here
-		 to a file.  */
-	      bfd_vma addr = (rel->r_vaddr
-			      - input_section->vma
-			      + input_section->output_offset
-			      + input_section->output_section->vma);
-
-	      if (!write_base_file_entry (output_bfd, info, addr))
-		return FALSE;
-	    }
-	}
-
-      switch (rstat)
-	{
-	default:
-	  abort ();
-	case bfd_reloc_ok:
-	  break;
-	case bfd_reloc_overflow:
-	  {
-	    const char *name;
-	    char buf[SYMNMLEN + 1];
-
-	    if (symndx == -1)
-	      name = "*ABS*";
-	    else if (h != NULL)
-	      name = NULL;
-	    else if (sym == NULL)
-	      name = "*unknown*";
-	    else if (sym->_n._n_n._n_zeroes == 0
-		     && sym->_n._n_n._n_offset != 0)
-	      name = obj_coff_strings (input_bfd) + sym->_n._n_n._n_offset;
-	    else
-	      {
-		strncpy (buf, sym->_n._n_name, SYMNMLEN);
-		buf[SYMNMLEN] = '\0';
-		name = buf;
-	      }
-
-	    (*info->callbacks->reloc_overflow)
-	      (info, (h ? &h->root.root : NULL), name, howto->name,
-	       (bfd_vma) 0, input_bfd, input_section,
-	       rel->r_vaddr - input_section->vma);
-	  }
-	}
-    }
-
-  return TRUE;
-}
-
-#ifdef COFF_IMAGE_WITH_PE
-
-/* FIXME: BFD should not use global variables.  This file is compiled
-   twice, and these variables are shared.  This is confusing and
-   weird.  */
-
-long int global_toc_size = 4;
-
-bfd* bfd_of_toc_owner = 0;
-
-long int import_table_size;
-long int first_thunk_address;
-long int thunk_size;
-
-struct list_ele *head;
-struct list_ele *tail;
-
-static char *
-h1 = N_("\n\t\t\tTOC MAPPING\n\n");
-static char *
-h2 = N_(" TOC    disassembly  Comments       Name\n");
-static char *
-h3 = N_(" Offset  spelling                   (if present)\n");
-
-void
-dump_toc (void * vfile)
-{
-  FILE *file = (FILE *) vfile;
-  struct list_ele *t;
-
-  fputs (_(h1), file);
-  fputs (_(h2), file);
-  fputs (_(h3), file);
-
-  for (t = head; t != 0; t=t->next)
-    {
-      const char *cat = "";
-
-      if (t->cat == priv)
-	cat = _("private       ");
-      else if (t->cat == pub)
-	cat = _("public        ");
-      else if (t->cat == tocdata)
-	cat = _("data-in-toc   ");
-
-      if (t->offset > global_toc_size)
-	{
-	  if (t->offset <= global_toc_size + thunk_size)
-	    cat = _("IAT reference ");
-	  else
-	    {
-	      fprintf (file,
-		       /* xgettext: c-format */
-		      _("**** global_toc_size %ld(%lx), thunk_size %ld(%lx)\n"),
-		       global_toc_size, (unsigned long) global_toc_size,
-		       thunk_size, (unsigned long) thunk_size);
-	      cat = _("Out of bounds!");
-	    }
-	}
-
-      fprintf (file,
-	      " %04lx    (%d)", (unsigned long) t->offset, t->offset - 32768);
-      fprintf (file,
-	      "    %s %s\n",
-	      cat, t->name);
-
-    }
-
-  fprintf (file, "\n");
-}
-
-bfd_boolean
-ppc_allocate_toc_section (struct bfd_link_info *info ATTRIBUTE_UNUSED)
-{
-  asection *s;
-  bfd_byte *foo;
-  bfd_size_type amt;
-  static char test_char = '1';
-
-  if ( global_toc_size == 0 ) /* FIXME: does this get me in trouble?  */
-    return TRUE;
-
-  if (bfd_of_toc_owner == 0)
-    /* No toc owner? Something is very wrong.  */
-    abort ();
-
-  s = bfd_get_section_by_name ( bfd_of_toc_owner , TOC_SECTION_NAME);
-  if (s == NULL)
-    /* No toc section? Something is very wrong.  */
-    abort ();
-
-  amt = global_toc_size;
-  foo = (bfd_byte *) bfd_alloc (bfd_of_toc_owner, amt);
-  memset(foo, test_char, (size_t) global_toc_size);
-
-  s->size = global_toc_size;
-  s->contents = foo;
-
-  return TRUE;
-}
-
-bfd_boolean
-ppc_process_before_allocation (bfd *abfd,
-			       struct bfd_link_info *info)
-{
-  asection *sec;
-  struct internal_reloc *i, *rel;
-
-  /* Here we have a bfd that is to be included on the link. We have a hook
-     to do reloc rummaging, before section sizes are nailed down.  */
-  _bfd_coff_get_external_symbols (abfd);
-
-  /* Rummage around all the relocs and map the toc.  */
-  sec = abfd->sections;
-
-  if (sec == 0)
-    return TRUE;
-
-  for (; sec != 0; sec = sec->next)
-    {
-      if (sec->reloc_count == 0)
-	continue;
-
-      /* load the relocs */
-      /* FIXME: there may be a storage leak here */
-      i=_bfd_coff_read_internal_relocs(abfd,sec,1,0,0,0);
-
-      if (i == 0)
-	abort ();
-
-      for (rel = i; rel < i + sec->reloc_count; ++rel)
-	{
-	  unsigned short r_type  = EXTRACT_TYPE  (rel->r_type);
-	  unsigned short r_flags = EXTRACT_FLAGS (rel->r_type);
-	  bfd_boolean ok = TRUE;
-
-	  DUMP_RELOC2 (ppc_coff_howto_table[r_type].name, rel);
-
-	  switch(r_type)
-	    {
-	    case IMAGE_REL_PPC_TOCREL16:
-	      /* If TOCDEFN is on, ignore as someone else has allocated the
-		 toc entry.  */
-	      if ((r_flags & IMAGE_REL_PPC_TOCDEFN) != IMAGE_REL_PPC_TOCDEFN)
-		ok = ppc_record_toc_entry(abfd, info, sec,
-					  rel->r_symndx, default_toc);
-	      if (!ok)
-		return FALSE;
-	      break;
-	    case IMAGE_REL_PPC_IMGLUE:
-	      ppc_mark_symbol_as_glue (abfd, rel->r_symndx, rel);
-	      break;
-	    default:
-	      break;
-	    }
-	}
-    }
-
-  return TRUE;
-}
-
-#endif
-
-static bfd_reloc_status_type
-ppc_refhi_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-		 arelent *reloc_entry ATTRIBUTE_UNUSED,
-		 asymbol *symbol ATTRIBUTE_UNUSED,
-		 void * data ATTRIBUTE_UNUSED,
-		 asection *input_section ATTRIBUTE_UNUSED,
-		 bfd *output_bfd,
-		 char **error_message ATTRIBUTE_UNUSED)
-{
-  UN_IMPL("REFHI");
-  DUMP_RELOC("REFHI",reloc_entry);
-
-  if (output_bfd == (bfd *) NULL)
-    return bfd_reloc_continue;
-
-  return bfd_reloc_undefined;
-}
-
-static bfd_reloc_status_type
-ppc_pair_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-		arelent *reloc_entry ATTRIBUTE_UNUSED,
-		asymbol *symbol ATTRIBUTE_UNUSED,
-		void * data ATTRIBUTE_UNUSED,
-		asection *input_section ATTRIBUTE_UNUSED,
-		bfd *output_bfd,
-		char **error_message ATTRIBUTE_UNUSED)
-{
-  UN_IMPL("PAIR");
-  DUMP_RELOC("PAIR",reloc_entry);
-
-  if (output_bfd == (bfd *) NULL)
-    return bfd_reloc_continue;
-
-  return bfd_reloc_undefined;
-}
-
-static bfd_reloc_status_type
-ppc_toc16_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-		 arelent *reloc_entry ATTRIBUTE_UNUSED,
-		 asymbol *symbol ATTRIBUTE_UNUSED,
-		 void * data ATTRIBUTE_UNUSED,
-		 asection *input_section ATTRIBUTE_UNUSED,
-		 bfd *output_bfd,
-		 char **error_message ATTRIBUTE_UNUSED)
-{
-  UN_IMPL ("TOCREL16");
-  DUMP_RELOC ("TOCREL16",reloc_entry);
-
-  if (output_bfd == (bfd *) NULL)
-    return bfd_reloc_continue;
-
-  return bfd_reloc_ok;
-}
-
-static bfd_reloc_status_type
-ppc_secrel_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-		  arelent *reloc_entry ATTRIBUTE_UNUSED,
-		  asymbol *symbol ATTRIBUTE_UNUSED,
-		  void * data ATTRIBUTE_UNUSED,
-		  asection *input_section ATTRIBUTE_UNUSED,
-		  bfd *output_bfd,
-		  char **error_message ATTRIBUTE_UNUSED)
-{
-  UN_IMPL("SECREL");
-  DUMP_RELOC("SECREL",reloc_entry);
-
-  if (output_bfd == (bfd *) NULL)
-    return bfd_reloc_continue;
-
-  return bfd_reloc_ok;
-}
-
-static bfd_reloc_status_type
-ppc_section_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-		   arelent *reloc_entry ATTRIBUTE_UNUSED,
-		   asymbol *symbol ATTRIBUTE_UNUSED,
-		   void * data ATTRIBUTE_UNUSED,
-		   asection *input_section ATTRIBUTE_UNUSED,
-		   bfd *output_bfd,
-		   char **error_message ATTRIBUTE_UNUSED)
-{
-  UN_IMPL("SECTION");
-  DUMP_RELOC("SECTION",reloc_entry);
-
-  if (output_bfd == (bfd *) NULL)
-    return bfd_reloc_continue;
-
-  return bfd_reloc_ok;
-}
-
-static bfd_reloc_status_type
-ppc_imglue_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-		  arelent *reloc_entry ATTRIBUTE_UNUSED,
-		  asymbol *symbol ATTRIBUTE_UNUSED,
-		  void * data ATTRIBUTE_UNUSED,
-		  asection *input_section ATTRIBUTE_UNUSED,
-		  bfd *output_bfd,
-		  char **error_message ATTRIBUTE_UNUSED)
-
-{
-  UN_IMPL("IMGLUE");
-  DUMP_RELOC("IMGLUE",reloc_entry);
-
-  if (output_bfd == (bfd *) NULL)
-    return bfd_reloc_continue;
-
-  return bfd_reloc_ok;
-}
-
-#define MAX_RELOC_INDEX  \
-      (sizeof (ppc_coff_howto_table) / sizeof (ppc_coff_howto_table[0]) - 1)
-
-/* FIXME: There is a possibility that when we read in a reloc from a file,
-	  that there are some bits encoded in the upper portion of the
-	  type field. Not yet implemented.  */
-
-static void
-ppc_coff_rtype2howto (arelent *relent, struct internal_reloc *internal)
-{
-  /* We can encode one of three things in the type field, aside from the
-     type:
-     1. IMAGE_REL_PPC_NEG - indicates the value field is a subtraction
-	value, rather than an addition value
-     2. IMAGE_REL_PPC_BRTAKEN, IMAGE_REL_PPC_BRNTAKEN - indicates that
-	the branch is expected to be taken or not.
-     3. IMAGE_REL_PPC_TOCDEFN - toc slot definition in the file
-     For now, we just strip this stuff to find the type, and ignore it other
-     than that.  */
-  reloc_howto_type *howto;
-  unsigned short r_type  = EXTRACT_TYPE (internal->r_type);
-  unsigned short r_flags = EXTRACT_FLAGS(internal->r_type);
-  unsigned short junk    = EXTRACT_JUNK (internal->r_type);
-
-  /* The masking process only slices off the bottom byte for r_type.  */
-  if ( r_type > MAX_RELOC_INDEX )
-    abort ();
-
-  /* Check for absolute crap.  */
-  if (junk != 0)
-    abort ();
-
-  switch(r_type)
-    {
-    case IMAGE_REL_PPC_ADDR16:
-    case IMAGE_REL_PPC_REL24:
-    case IMAGE_REL_PPC_ADDR24:
-    case IMAGE_REL_PPC_ADDR32:
-    case IMAGE_REL_PPC_IFGLUE:
-    case IMAGE_REL_PPC_ADDR32NB:
-    case IMAGE_REL_PPC_SECTION:
-    case IMAGE_REL_PPC_SECREL:
-      DUMP_RELOC2 (ppc_coff_howto_table[r_type].name, internal);
-      howto = ppc_coff_howto_table + r_type;
-      break;
-    case IMAGE_REL_PPC_IMGLUE:
-      DUMP_RELOC2 (ppc_coff_howto_table[r_type].name, internal);
-      howto = ppc_coff_howto_table + r_type;
-      break;
-    case IMAGE_REL_PPC_TOCREL16:
-      DUMP_RELOC2 (ppc_coff_howto_table[r_type].name, internal);
-      if (r_flags & IMAGE_REL_PPC_TOCDEFN)
-	howto = ppc_coff_howto_table + IMAGE_REL_PPC_TOCREL16_DEFN;
-      else
-	howto = ppc_coff_howto_table + IMAGE_REL_PPC_TOCREL16;
-      break;
-    default:
-      _bfd_error_handler
-	/* xgettext: c-format */
-	(_("warning: unsupported reloc %s [%d] used -- it may not work"),
-	 ppc_coff_howto_table[r_type].name, r_type);
-      howto = ppc_coff_howto_table + r_type;
-      break;
-    }
-
-  relent->howto = howto;
-}
-
-static reloc_howto_type *
-coff_ppc_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
-			 asection *sec,
-			 struct internal_reloc *rel,
-			 struct coff_link_hash_entry *h ATTRIBUTE_UNUSED,
-			 struct internal_syment *sym ATTRIBUTE_UNUSED,
-			 bfd_vma *addendp)
-{
-  reloc_howto_type *howto;
-
-  /* We can encode one of three things in the type field, aside from the
-     type:
-     1. IMAGE_REL_PPC_NEG - indicates the value field is a subtraction
-	value, rather than an addition value
-     2. IMAGE_REL_PPC_BRTAKEN, IMAGE_REL_PPC_BRNTAKEN - indicates that
-	the branch is expected to be taken or not.
-     3. IMAGE_REL_PPC_TOCDEFN - toc slot definition in the file
-     For now, we just strip this stuff to find the type, and ignore it other
-     than that.  */
-
-  unsigned short r_type  = EXTRACT_TYPE  (rel->r_type);
-  unsigned short r_flags = EXTRACT_FLAGS (rel->r_type);
-  unsigned short junk    = EXTRACT_JUNK  (rel->r_type);
-
-  /* The masking process only slices off the bottom byte for r_type.  */
-  if (r_type > MAX_RELOC_INDEX)
-    abort ();
-
-  /* Check for absolute crap.  */
-  if (junk != 0)
-    abort ();
-
-  switch(r_type)
-    {
-    case IMAGE_REL_PPC_ADDR32NB:
-      DUMP_RELOC2(ppc_coff_howto_table[r_type].name, rel);
-      *addendp -= pe_data(sec->output_section->owner)->pe_opthdr.ImageBase;
-      howto = ppc_coff_howto_table + r_type;
-      break;
-    case IMAGE_REL_PPC_TOCREL16:
-      DUMP_RELOC2(ppc_coff_howto_table[r_type].name, rel);
-      if (r_flags & IMAGE_REL_PPC_TOCDEFN)
-	howto = ppc_coff_howto_table + IMAGE_REL_PPC_TOCREL16_DEFN;
-      else
-	howto = ppc_coff_howto_table + IMAGE_REL_PPC_TOCREL16;
-      break;
-    case IMAGE_REL_PPC_ADDR16:
-    case IMAGE_REL_PPC_REL24:
-    case IMAGE_REL_PPC_ADDR24:
-    case IMAGE_REL_PPC_ADDR32:
-    case IMAGE_REL_PPC_IFGLUE:
-    case IMAGE_REL_PPC_SECTION:
-    case IMAGE_REL_PPC_SECREL:
-      DUMP_RELOC2(ppc_coff_howto_table[r_type].name, rel);
-      howto = ppc_coff_howto_table + r_type;
-      break;
-    case IMAGE_REL_PPC_IMGLUE:
-      DUMP_RELOC2(ppc_coff_howto_table[r_type].name, rel);
-      howto = ppc_coff_howto_table + r_type;
-      break;
-    default:
-      _bfd_error_handler
-	/* xgettext: c-format */
-	(_("warning: unsupported reloc %s [%d] used -- it may not work"),
-	 ppc_coff_howto_table[r_type].name, r_type);
-      howto = ppc_coff_howto_table + r_type;
-      break;
-    }
-
-  return howto;
-}
-
-/* A cheesy little macro to make the code a little more readable.  */
-#define HOW2MAP(bfd_rtype,ppc_rtype)  \
- case bfd_rtype: return &ppc_coff_howto_table[ppc_rtype]
-
-static reloc_howto_type *
-ppc_coff_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-			    bfd_reloc_code_real_type code)
-{
-  switch (code)
-    {
-      HOW2MAP(BFD_RELOC_32_GOTOFF,    IMAGE_REL_PPC_IMGLUE);
-      HOW2MAP(BFD_RELOC_16_GOT_PCREL, IMAGE_REL_PPC_IFGLUE);
-      HOW2MAP(BFD_RELOC_16,	      IMAGE_REL_PPC_ADDR16);
-      HOW2MAP(BFD_RELOC_PPC_B26,      IMAGE_REL_PPC_REL24);
-      HOW2MAP(BFD_RELOC_PPC_BA26,     IMAGE_REL_PPC_ADDR24);
-      HOW2MAP(BFD_RELOC_PPC_TOC16,    IMAGE_REL_PPC_TOCREL16);
-      HOW2MAP(BFD_RELOC_16_GOTOFF,    IMAGE_REL_PPC_TOCREL16_DEFN);
-      HOW2MAP(BFD_RELOC_32,	      IMAGE_REL_PPC_ADDR32);
-      HOW2MAP(BFD_RELOC_RVA,	      IMAGE_REL_PPC_ADDR32NB);
-    default:
-      return NULL;
-    }
-}
-#undef HOW2MAP
-
-static reloc_howto_type *
-ppc_coff_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-			    const char *r_name)
-{
-  unsigned int i;
-
-  for (i = 0;
-       i < sizeof (ppc_coff_howto_table) / sizeof (ppc_coff_howto_table[0]);
-       i++)
-    if (ppc_coff_howto_table[i].name != NULL
-	&& strcasecmp (ppc_coff_howto_table[i].name, r_name) == 0)
-      return &ppc_coff_howto_table[i];
-
-  return NULL;
-}
-
-/* Tailor coffcode.h -- macro heaven.  */
-
-#define RTYPE2HOWTO(cache_ptr, dst)  ppc_coff_rtype2howto (cache_ptr, dst)
-
-/* We use the special COFF backend linker, with our own special touch.  */
-
-#define coff_bfd_reloc_type_lookup   ppc_coff_reloc_type_lookup
-#define coff_bfd_reloc_name_lookup ppc_coff_reloc_name_lookup
-#define coff_rtype_to_howto	     coff_ppc_rtype_to_howto
-#define coff_relocate_section	     coff_ppc_relocate_section
-#define coff_bfd_final_link	     ppc_bfd_coff_final_link
-
-#ifndef COFF_IMAGE_WITH_PE
-#endif
-
-#define SELECT_RELOC(internal, howto) {internal.r_type=howto->type;}
-
-#define COFF_PAGE_SIZE			     0x1000
-
-/* FIXME: This controls some code that used to be in peicode.h and is
-   now in peigen.c.  It will not control the code in peigen.c.  If
-   anybody wants to get this working, you will need to fix that.  */
-#define POWERPC_LE_PE
-
-#define COFF_SECTION_ALIGNMENT_ENTRIES \
-{ COFF_SECTION_NAME_EXACT_MATCH (".idata$2"), \
-  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \
-{ COFF_SECTION_NAME_EXACT_MATCH (".idata$3"), \
-  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \
-{ COFF_SECTION_NAME_EXACT_MATCH (".idata$4"), \
-  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
-{ COFF_SECTION_NAME_EXACT_MATCH (".idata$5"), \
-  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
-{ COFF_SECTION_NAME_EXACT_MATCH (".idata$6"), \
-  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 1 }, \
-{ COFF_SECTION_NAME_EXACT_MATCH (".reloc"), \
-  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 1 }
-
-#include "coffcode.h"
-
-#ifndef COFF_IMAGE_WITH_PE
-
-static bfd_boolean
-ppc_do_last (bfd *abfd)
-{
-  if (abfd == bfd_of_toc_owner)
-    return TRUE;
-  else
-    return FALSE;
-}
-
-static bfd *
-ppc_get_last (void)
-{
-  return bfd_of_toc_owner;
-}
-
-/* This piece of machinery exists only to guarantee that the bfd that holds
-   the toc section is written last.
-
-   This does depend on bfd_make_section attaching a new section to the
-   end of the section list for the bfd.
-
-   This is otherwise intended to be functionally the same as
-   cofflink.c:_bfd_coff_final_link(). It is specifically different only
-   where the POWERPC_LE_PE macro modifies the code. It is left in as a
-   precise form of comment. krk@cygnus.com  */
-
-/* Do the final link step.  */
-
-bfd_boolean
-ppc_bfd_coff_final_link (bfd *abfd, struct bfd_link_info *info)
-{
-  bfd_size_type symesz;
-  struct coff_final_link_info flaginfo;
-  bfd_boolean debug_merge_allocated;
-  asection *o;
-  struct bfd_link_order *p;
-  bfd_size_type max_sym_count;
-  bfd_size_type max_lineno_count;
-  bfd_size_type max_reloc_count;
-  bfd_size_type max_output_reloc_count;
-  bfd_size_type max_contents_size;
-  file_ptr rel_filepos;
-  unsigned int relsz;
-  file_ptr line_filepos;
-  unsigned int linesz;
-  bfd *sub;
-  bfd_byte *external_relocs = NULL;
-  char strbuf[STRING_SIZE_SIZE];
-  bfd_size_type amt;
-
-  symesz = bfd_coff_symesz (abfd);
-
-  flaginfo.info = info;
-  flaginfo.output_bfd = abfd;
-  flaginfo.strtab = NULL;
-  flaginfo.section_info = NULL;
-  flaginfo.last_file_index = -1;
-  flaginfo.last_bf_index = -1;
-  flaginfo.internal_syms = NULL;
-  flaginfo.sec_ptrs = NULL;
-  flaginfo.sym_indices = NULL;
-  flaginfo.outsyms = NULL;
-  flaginfo.linenos = NULL;
-  flaginfo.contents = NULL;
-  flaginfo.external_relocs = NULL;
-  flaginfo.internal_relocs = NULL;
-  debug_merge_allocated = FALSE;
-
-  coff_data (abfd)->link_info = info;
-
-  flaginfo.strtab = _bfd_stringtab_init ();
-  if (flaginfo.strtab == NULL)
-    goto error_return;
-
-  if (! coff_debug_merge_hash_table_init (&flaginfo.debug_merge))
-    goto error_return;
-  debug_merge_allocated = TRUE;
-
-  /* Compute the file positions for all the sections.  */
-  if (! abfd->output_has_begun)
-    {
-      if (! bfd_coff_compute_section_file_positions (abfd))
-	return FALSE;
-    }
-
-  /* Count the line numbers and relocation entries required for the
-     output file.  Set the file positions for the relocs.  */
-  rel_filepos = obj_relocbase (abfd);
-  relsz = bfd_coff_relsz (abfd);
-  max_contents_size = 0;
-  max_lineno_count = 0;
-  max_reloc_count = 0;
-
-  for (o = abfd->sections; o != NULL; o = o->next)
-    {
-      o->reloc_count = 0;
-      o->lineno_count = 0;
-
-      for (p = o->map_head.link_order; p != NULL; p = p->next)
-	{
-	  if (p->type == bfd_indirect_link_order)
-	    {
-	      asection *sec;
-
-	      sec = p->u.indirect.section;
-
-	      /* Mark all sections which are to be included in the
-		 link.  This will normally be every section.  We need
-		 to do this so that we can identify any sections which
-		 the linker has decided to not include.  */
-	      sec->linker_mark = TRUE;
-
-	      if (info->strip == strip_none
-		  || info->strip == strip_some)
-		o->lineno_count += sec->lineno_count;
-
-	      if (bfd_link_relocatable (info))
-		o->reloc_count += sec->reloc_count;
-
-	      if (sec->rawsize > max_contents_size)
-		max_contents_size = sec->rawsize;
-	      if (sec->size > max_contents_size)
-		max_contents_size = sec->size;
-	      if (sec->lineno_count > max_lineno_count)
-		max_lineno_count = sec->lineno_count;
-	      if (sec->reloc_count > max_reloc_count)
-		max_reloc_count = sec->reloc_count;
-	    }
-	  else if (bfd_link_relocatable (info)
-		   && (p->type == bfd_section_reloc_link_order
-		       || p->type == bfd_symbol_reloc_link_order))
-	    ++o->reloc_count;
-	}
-      if (o->reloc_count == 0)
-	o->rel_filepos = 0;
-      else
-	{
-	  o->flags |= SEC_RELOC;
-	  o->rel_filepos = rel_filepos;
-	  rel_filepos += o->reloc_count * relsz;
-	}
-    }
-
-  /* If doing a relocatable link, allocate space for the pointers we
-     need to keep.  */
-  if (bfd_link_relocatable (info))
-    {
-      unsigned int i;
-
-      /* We use section_count + 1, rather than section_count, because
-	 the target_index fields are 1 based.  */
-      amt = abfd->section_count + 1;
-      amt *= sizeof (struct coff_link_section_info);
-      flaginfo.section_info = (struct coff_link_section_info *) bfd_malloc (amt);
-
-      if (flaginfo.section_info == NULL)
-	goto error_return;
-
-      for (i = 0; i <= abfd->section_count; i++)
-	{
-	  flaginfo.section_info[i].relocs = NULL;
-	  flaginfo.section_info[i].rel_hashes = NULL;
-	}
-    }
-
-  /* We now know the size of the relocs, so we can determine the file
-     positions of the line numbers.  */
-  line_filepos = rel_filepos;
-  linesz = bfd_coff_linesz (abfd);
-  max_output_reloc_count = 0;
-
-  for (o = abfd->sections; o != NULL; o = o->next)
-    {
-      if (o->lineno_count == 0)
-	o->line_filepos = 0;
-      else
-	{
-	  o->line_filepos = line_filepos;
-	  line_filepos += o->lineno_count * linesz;
-	}
-
-      if (o->reloc_count != 0)
-	{
-	  /* We don't know the indices of global symbols until we have
-	     written out all the local symbols.  For each section in
-	     the output file, we keep an array of pointers to hash
-	     table entries.  Each entry in the array corresponds to a
-	     reloc.  When we find a reloc against a global symbol, we
-	     set the corresponding entry in this array so that we can
-	     fix up the symbol index after we have written out all the
-	     local symbols.
-
-	     Because of this problem, we also keep the relocs in
-	     memory until the end of the link.  This wastes memory,
-	     but only when doing a relocatable link, which is not the
-	     common case.  */
-	  BFD_ASSERT (bfd_link_relocatable (info));
-	  amt = o->reloc_count;
-	  amt *= sizeof (struct internal_reloc);
-	  flaginfo.section_info[o->target_index].relocs =
-	    (struct internal_reloc *) bfd_malloc (amt);
-	  amt = o->reloc_count;
-	  amt *= sizeof (struct coff_link_hash_entry *);
-	  flaginfo.section_info[o->target_index].rel_hashes =
-	    (struct coff_link_hash_entry **) bfd_malloc (amt);
-	  if (flaginfo.section_info[o->target_index].relocs == NULL
-	      || flaginfo.section_info[o->target_index].rel_hashes == NULL)
-	    goto error_return;
-
-	  if (o->reloc_count > max_output_reloc_count)
-	    max_output_reloc_count = o->reloc_count;
-	}
-
-      /* Reset the reloc and lineno counts, so that we can use them to
-	 count the number of entries we have output so far.  */
-      o->reloc_count = 0;
-      o->lineno_count = 0;
-    }
-
-  obj_sym_filepos (abfd) = line_filepos;
-
-  /* Figure out the largest number of symbols in an input BFD.  Take
-     the opportunity to clear the output_has_begun fields of all the
-     input BFD's.  */
-  max_sym_count = 0;
-  for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
-    {
-      bfd_size_type sz;
-
-      sub->output_has_begun = FALSE;
-      sz = obj_raw_syment_count (sub);
-      if (sz > max_sym_count)
-	max_sym_count = sz;
-    }
-
-  /* Allocate some buffers used while linking.  */
-  amt = max_sym_count * sizeof (struct internal_syment);
-  flaginfo.internal_syms = (struct internal_syment *) bfd_malloc (amt);
-  amt = max_sym_count * sizeof (asection *);
-  flaginfo.sec_ptrs = (asection **) bfd_malloc (amt);
-  amt = max_sym_count * sizeof (long);
-  flaginfo.sym_indices = (long *) bfd_malloc (amt);
-  amt = (max_sym_count + 1) * symesz;
-  flaginfo.outsyms = (bfd_byte *) bfd_malloc (amt);
-  amt = max_lineno_count * bfd_coff_linesz (abfd);
-  flaginfo.linenos = (bfd_byte *) bfd_malloc (amt);
-  flaginfo.contents = (bfd_byte *) bfd_malloc (max_contents_size);
-  flaginfo.external_relocs = (bfd_byte *) bfd_malloc (max_reloc_count * relsz);
-  if (! bfd_link_relocatable (info))
-    {
-      amt = max_reloc_count * sizeof (struct internal_reloc);
-      flaginfo.internal_relocs = (struct internal_reloc *) bfd_malloc (amt);
-    }
-  if ((flaginfo.internal_syms == NULL && max_sym_count > 0)
-      || (flaginfo.sec_ptrs == NULL && max_sym_count > 0)
-      || (flaginfo.sym_indices == NULL && max_sym_count > 0)
-      || flaginfo.outsyms == NULL
-      || (flaginfo.linenos == NULL && max_lineno_count > 0)
-      || (flaginfo.contents == NULL && max_contents_size > 0)
-      || (flaginfo.external_relocs == NULL && max_reloc_count > 0)
-      || (! bfd_link_relocatable (info)
-	  && flaginfo.internal_relocs == NULL
-	  && max_reloc_count > 0))
-    goto error_return;
-
-  /* We now know the position of everything in the file, except that
-     we don't know the size of the symbol table and therefore we don't
-     know where the string table starts.  We just build the string
-     table in memory as we go along.  We process all the relocations
-     for a single input file at once.  */
-  obj_raw_syment_count (abfd) = 0;
-
-  if (coff_backend_info (abfd)->_bfd_coff_start_final_link)
-    {
-      if (! bfd_coff_start_final_link (abfd, info))
-	goto error_return;
-    }
-
-  for (o = abfd->sections; o != NULL; o = o->next)
-    {
-      for (p = o->map_head.link_order; p != NULL; p = p->next)
-	{
-	  if (p->type == bfd_indirect_link_order
-	      && (bfd_get_flavour (p->u.indirect.section->owner)
-		  == bfd_target_coff_flavour))
-	    {
-	      sub = p->u.indirect.section->owner;
-#ifdef POWERPC_LE_PE
-	      if (! sub->output_has_begun && !ppc_do_last(sub))
-#else
-	      if (! sub->output_has_begun)
-#endif
-		{
-		  if (! _bfd_coff_link_input_bfd (&flaginfo, sub))
-		    goto error_return;
-		  sub->output_has_begun = TRUE;
-		}
-	    }
-	  else if (p->type == bfd_section_reloc_link_order
-		   || p->type == bfd_symbol_reloc_link_order)
-	    {
-	      if (! _bfd_coff_reloc_link_order (abfd, &flaginfo, o, p))
-		goto error_return;
-	    }
-	  else
-	    {
-	      if (! _bfd_default_link_order (abfd, info, o, p))
-		goto error_return;
-	    }
-	}
-    }
-
-#ifdef POWERPC_LE_PE
-  {
-    bfd* last_one = ppc_get_last();
-    if (last_one)
-      {
-	if (! _bfd_coff_link_input_bfd (&flaginfo, last_one))
-	  goto error_return;
-      }
-    last_one->output_has_begun = TRUE;
-  }
-#endif
-
-  /* Free up the buffers used by _bfd_coff_link_input_bfd.  */
-  coff_debug_merge_hash_table_free (&flaginfo.debug_merge);
-  debug_merge_allocated = FALSE;
-
-  if (flaginfo.internal_syms != NULL)
-    {
-      free (flaginfo.internal_syms);
-      flaginfo.internal_syms = NULL;
-    }
-  if (flaginfo.sec_ptrs != NULL)
-    {
-      free (flaginfo.sec_ptrs);
-      flaginfo.sec_ptrs = NULL;
-    }
-  if (flaginfo.sym_indices != NULL)
-    {
-      free (flaginfo.sym_indices);
-      flaginfo.sym_indices = NULL;
-    }
-  if (flaginfo.linenos != NULL)
-    {
-      free (flaginfo.linenos);
-      flaginfo.linenos = NULL;
-    }
-  if (flaginfo.contents != NULL)
-    {
-      free (flaginfo.contents);
-      flaginfo.contents = NULL;
-    }
-  if (flaginfo.external_relocs != NULL)
-    {
-      free (flaginfo.external_relocs);
-      flaginfo.external_relocs = NULL;
-    }
-  if (flaginfo.internal_relocs != NULL)
-    {
-      free (flaginfo.internal_relocs);
-      flaginfo.internal_relocs = NULL;
-    }
-
-  /* The value of the last C_FILE symbol is supposed to be the symbol
-     index of the first external symbol.  Write it out again if
-     necessary.  */
-  if (flaginfo.last_file_index != -1
-      && (unsigned int) flaginfo.last_file.n_value != obj_raw_syment_count (abfd))
-    {
-      file_ptr pos;
-
-      flaginfo.last_file.n_value = obj_raw_syment_count (abfd);
-      bfd_coff_swap_sym_out (abfd, &flaginfo.last_file,
-			     flaginfo.outsyms);
-      pos = obj_sym_filepos (abfd) + flaginfo.last_file_index * symesz;
-      if (bfd_seek (abfd, pos, SEEK_SET) != 0
-	  || bfd_bwrite (flaginfo.outsyms, symesz, abfd) != symesz)
-	return FALSE;
-    }
-
-  /* Write out the global symbols.  */
-  flaginfo.failed = FALSE;
-  bfd_hash_traverse (&info->hash->table, _bfd_coff_write_global_sym, &flaginfo);
-  if (flaginfo.failed)
-    goto error_return;
-
-  /* The outsyms buffer is used by _bfd_coff_write_global_sym.  */
-  if (flaginfo.outsyms != NULL)
-    {
-      free (flaginfo.outsyms);
-      flaginfo.outsyms = NULL;
-    }
-
-  if (bfd_link_relocatable (info))
-    {
-      /* Now that we have written out all the global symbols, we know
-	 the symbol indices to use for relocs against them, and we can
-	 finally write out the relocs.  */
-      amt = max_output_reloc_count * relsz;
-      external_relocs = (bfd_byte *) bfd_malloc (amt);
-      if (external_relocs == NULL)
-	goto error_return;
-
-      for (o = abfd->sections; o != NULL; o = o->next)
-	{
-	  struct internal_reloc *irel;
-	  struct internal_reloc *irelend;
-	  struct coff_link_hash_entry **rel_hash;
-	  bfd_byte *erel;
-
-	  if (o->reloc_count == 0)
-	    continue;
-
-	  irel = flaginfo.section_info[o->target_index].relocs;
-	  irelend = irel + o->reloc_count;
-	  rel_hash = flaginfo.section_info[o->target_index].rel_hashes;
-	  erel = external_relocs;
-	  for (; irel < irelend; irel++, rel_hash++, erel += relsz)
-	    {
-	      if (*rel_hash != NULL)
-		{
-		  BFD_ASSERT ((*rel_hash)->indx >= 0);
-		  irel->r_symndx = (*rel_hash)->indx;
-		}
-	      bfd_coff_swap_reloc_out (abfd, irel, erel);
-	    }
-
-	  amt = relsz * o->reloc_count;
-	  if (bfd_seek (abfd, o->rel_filepos, SEEK_SET) != 0
-	      || bfd_bwrite (external_relocs, amt, abfd) != amt)
-	    goto error_return;
-	}
-
-      free (external_relocs);
-      external_relocs = NULL;
-    }
-
-  /* Free up the section information.  */
-  if (flaginfo.section_info != NULL)
-    {
-      unsigned int i;
-
-      for (i = 0; i < abfd->section_count; i++)
-	{
-	  if (flaginfo.section_info[i].relocs != NULL)
-	    free (flaginfo.section_info[i].relocs);
-	  if (flaginfo.section_info[i].rel_hashes != NULL)
-	    free (flaginfo.section_info[i].rel_hashes);
-	}
-      free (flaginfo.section_info);
-      flaginfo.section_info = NULL;
-    }
-
-  /* If we have optimized stabs strings, output them.  */
-  if (coff_hash_table (info)->stab_info.stabstr != NULL)
-    {
-      if (! _bfd_write_stab_strings (abfd, &coff_hash_table (info)->stab_info))
-	return FALSE;
-    }
-
-  /* Write out the string table.  */
-  if (obj_raw_syment_count (abfd) != 0)
-    {
-      file_ptr pos;
-
-      pos = obj_sym_filepos (abfd) + obj_raw_syment_count (abfd) * symesz;
-      if (bfd_seek (abfd, pos, SEEK_SET) != 0)
-	return FALSE;
-
-#if STRING_SIZE_SIZE == 4
-      H_PUT_32 (abfd,
-		_bfd_stringtab_size (flaginfo.strtab) + STRING_SIZE_SIZE,
-		strbuf);
-#else
- #error Change H_PUT_32 above
-#endif
-
-      if (bfd_bwrite (strbuf, (bfd_size_type) STRING_SIZE_SIZE, abfd)
-	  != STRING_SIZE_SIZE)
-	return FALSE;
-
-      if (! _bfd_stringtab_emit (abfd, flaginfo.strtab))
-	return FALSE;
-    }
-
-  _bfd_stringtab_free (flaginfo.strtab);
-
-  /* Setting symcount to 0 will cause write_object_contents to
-     not try to write out the symbols.  */
-  abfd->symcount = 0;
-
-  return TRUE;
-
- error_return:
-  if (debug_merge_allocated)
-    coff_debug_merge_hash_table_free (&flaginfo.debug_merge);
-  if (flaginfo.strtab != NULL)
-    _bfd_stringtab_free (flaginfo.strtab);
-  if (flaginfo.section_info != NULL)
-    {
-      unsigned int i;
-
-      for (i = 0; i < abfd->section_count; i++)
-	{
-	  if (flaginfo.section_info[i].relocs != NULL)
-	    free (flaginfo.section_info[i].relocs);
-	  if (flaginfo.section_info[i].rel_hashes != NULL)
-	    free (flaginfo.section_info[i].rel_hashes);
-	}
-      free (flaginfo.section_info);
-    }
-  if (flaginfo.internal_syms != NULL)
-    free (flaginfo.internal_syms);
-  if (flaginfo.sec_ptrs != NULL)
-    free (flaginfo.sec_ptrs);
-  if (flaginfo.sym_indices != NULL)
-    free (flaginfo.sym_indices);
-  if (flaginfo.outsyms != NULL)
-    free (flaginfo.outsyms);
-  if (flaginfo.linenos != NULL)
-    free (flaginfo.linenos);
-  if (flaginfo.contents != NULL)
-    free (flaginfo.contents);
-  if (flaginfo.external_relocs != NULL)
-    free (flaginfo.external_relocs);
-  if (flaginfo.internal_relocs != NULL)
-    free (flaginfo.internal_relocs);
-  if (external_relocs != NULL)
-    free (external_relocs);
-  return FALSE;
-}
-#endif
-
-/* Forward declaration for use by alternative_target field.  */
-#ifdef TARGET_BIG_SYM
-extern const bfd_target TARGET_BIG_SYM;
-#endif
-
-/* The transfer vectors that lead the outside world to all of the above.  */
-
-#ifdef TARGET_LITTLE_SYM
-const bfd_target TARGET_LITTLE_SYM =
-{
-  TARGET_LITTLE_NAME,		/* name or coff-arm-little */
-  bfd_target_coff_flavour,
-  BFD_ENDIAN_LITTLE,		/* data byte order is little */
-  BFD_ENDIAN_LITTLE,		/* header byte order is little */
-
-  (HAS_RELOC | EXEC_P		/* FIXME: object flags */
-   | HAS_LINENO | HAS_DEBUG
-   | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
-
-#ifndef COFF_WITH_PE
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_READONLY
-   | SEC_RELOC),		/* section flags */
-#else
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_READONLY
-   | SEC_RELOC | SEC_LINK_ONCE | SEC_LINK_DUPLICATES),
-#endif
-
-  0,				/* leading char */
-  '/',				/* ar_pad_char */
-  15,				/* ar_max_namelen??? FIXMEmgo */
-  0,				/* match priority.  */
-
-  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
-  bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-  bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
-
-  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
-  bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-  bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
-
-  {				/* bfd_check_format */
-    _bfd_dummy_target,
-    coff_object_p,
-    bfd_generic_archive_p,
-    coff_object_p
-  },
-  {				/* bfd_set_format */
-    _bfd_bool_bfd_false_error,
-    coff_mkobject,
-    _bfd_generic_mkarchive,
-    _bfd_bool_bfd_false_error
-  },
-  {				/* bfd_write_contents */
-    _bfd_bool_bfd_false_error,
-    coff_write_object_contents,
-    _bfd_write_archive_contents,
-    _bfd_bool_bfd_false_error
-  },
-
-  BFD_JUMP_TABLE_GENERIC (coff),
-  BFD_JUMP_TABLE_COPY (coff),
-  BFD_JUMP_TABLE_CORE (_bfd_nocore),
-  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
-  BFD_JUMP_TABLE_SYMBOLS (coff),
-  BFD_JUMP_TABLE_RELOCS (coff),
-  BFD_JUMP_TABLE_WRITE (coff),
-  BFD_JUMP_TABLE_LINK (coff),
-  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
-
-  /* Alternative_target.  */
-#ifdef TARGET_BIG_SYM
-  &TARGET_BIG_SYM,
-#else
-  NULL,
-#endif
-
-  COFF_SWAP_TABLE
-};
-#endif
-
-#ifdef TARGET_BIG_SYM
-const bfd_target TARGET_BIG_SYM =
-{
-  TARGET_BIG_NAME,
-  bfd_target_coff_flavour,
-  BFD_ENDIAN_BIG,		/* data byte order is big */
-  BFD_ENDIAN_BIG,		/* header byte order is big */
-
-  (HAS_RELOC | EXEC_P		/* FIXME: object flags */
-   | HAS_LINENO | HAS_DEBUG
-   | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
-
-#ifndef COFF_WITH_PE
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_READONLY
-   | SEC_RELOC),		/* section flags */
-#else
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_READONLY
-   | SEC_RELOC | SEC_LINK_ONCE | SEC_LINK_DUPLICATES),
-#endif
-
-  0,				/* leading char */
-  '/',				/* ar_pad_char */
-  15,				/* ar_max_namelen??? FIXMEmgo */
-  0,				/* match priority.  */
-
-  bfd_getb64, bfd_getb_signed_64, bfd_putb64,
-  bfd_getb32, bfd_getb_signed_32, bfd_putb32,
-  bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
-
-  bfd_getb64, bfd_getb_signed_64, bfd_putb64,
-  bfd_getb32, bfd_getb_signed_32, bfd_putb32,
-  bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
-
-  {				/* bfd_check_format */
-    _bfd_dummy_target,
-    coff_object_p,
-    bfd_generic_archive_p,
-    coff_object_p
-  },
-  {				/* bfd_set_format */
-    _bfd_bool_bfd_false_error,
-    coff_mkobject,
-    _bfd_generic_mkarchive,
-    _bfd_bool_bfd_false_error
-  },
-  {				/* bfd_write_contents */
-    _bfd_bool_bfd_false_error,
-    coff_write_object_contents,
-    _bfd_write_archive_contents,
-    _bfd_bool_bfd_false_error
-  },
-
-  BFD_JUMP_TABLE_GENERIC (coff),
-  BFD_JUMP_TABLE_COPY (coff),
-  BFD_JUMP_TABLE_CORE (_bfd_nocore),
-  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
-  BFD_JUMP_TABLE_SYMBOLS (coff),
-  BFD_JUMP_TABLE_RELOCS (coff),
-  BFD_JUMP_TABLE_WRITE (coff),
-  BFD_JUMP_TABLE_LINK (coff),
-  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
-
-  /* Alternative_target.  */
-#ifdef TARGET_LITTLE_SYM
-  &TARGET_LITTLE_SYM,
-#else
-  NULL,
-#endif
-
-  COFF_SWAP_TABLE
-};
-
-#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-rs6000.c ./bfd/coff-rs6000.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-rs6000.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-rs6000.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for IBM RS/6000 "XCOFF" files.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Metin G. Ozisik, Mimi Phuong-Thao Vo, and John Gilmore.
    Archive support from Damon A. Permezel.
    Contributed by IBM Corporation and Cygnus Support.
@@ -38,7 +38,7 @@ extern bfd_boolean _bfd_xcoff_is_local_l
 extern reloc_howto_type *_bfd_xcoff_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
 extern bfd_boolean _bfd_xcoff_slurp_armap (bfd *);
-extern const bfd_target *_bfd_xcoff_archive_p (bfd *);
+extern bfd_cleanup _bfd_xcoff_archive_p (bfd *);
 extern void * _bfd_xcoff_read_ar_hdr (bfd *);
 extern bfd *_bfd_xcoff_openr_next_archived_file (bfd *, bfd *);
 extern int _bfd_xcoff_stat_arch_elt (bfd *, struct stat *);
@@ -77,7 +77,7 @@ void xcoff_rtype2howto (arelent *, struc
 #define coff_mkobject _bfd_xcoff_mkobject
 #define coff_bfd_is_local_label_name _bfd_xcoff_is_local_label_name
 #ifdef AIX_CORE
-extern const bfd_target * rs6000coff_core_p (bfd *abfd);
+extern bfd_cleanup rs6000coff_core_p (bfd *abfd);
 extern bfd_boolean rs6000coff_core_file_matches_executable_p
   (bfd *cbfd, bfd *ebfd);
 extern char *rs6000coff_core_file_failing_command (bfd *abfd);
@@ -323,7 +323,7 @@ bfd_boolean
 _bfd_xcoff_mkobject (bfd *abfd)
 {
   coff_data_type *coff;
-  bfd_size_type amt = sizeof (struct xcoff_tdata);
+  size_t amt = sizeof (struct xcoff_tdata);
 
   abfd->tdata.xcoff_obj_data = (struct xcoff_tdata *) bfd_zalloc (abfd, amt);
   if (abfd->tdata.xcoff_obj_data == NULL)
@@ -652,7 +652,7 @@ _bfd_xcoff_swap_aux_out (bfd *abfd, void
 		ext->x_sym.x_misc.x_lnsz.x_size);
     }
 
-end:
+ end:
   return bfd_coff_auxesz (abfd);
 }
 
@@ -1260,18 +1260,25 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
 	return FALSE;
 
       GET_VALUE_IN_FIELD (sz, hdr.size, 10);
+      if (sz + 1 < 5)
+	{
+	  bfd_set_error (bfd_error_bad_value);
+	  return FALSE;
+	}
 
       /* Read in the entire symbol table.  */
-      contents = (bfd_byte *) bfd_alloc (abfd, sz);
+      contents = (bfd_byte *) _bfd_alloc_and_read (abfd, sz + 1, sz);
       if (contents == NULL)
 	return FALSE;
-      if (bfd_bread (contents, sz, abfd) != sz)
-	return FALSE;
+
+      /* Ensure strings are NULL terminated so we don't wander off the
+	 end of the buffer.  */
+      contents[sz] = 0;
 
       /* The symbol table starts with a four byte count.  */
       c = H_GET_32 (abfd, contents);
 
-      if (c * 4 >= sz)
+      if (c >= sz / 4)
 	{
 	  bfd_set_error (bfd_error_bad_value);
 	  return FALSE;
@@ -1315,18 +1322,25 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
 	return FALSE;
 
       GET_VALUE_IN_FIELD (sz, hdr.size, 10);
+      if (sz + 1 < 9)
+	{
+	  bfd_set_error (bfd_error_bad_value);
+	  return FALSE;
+	}
 
       /* Read in the entire symbol table.  */
-      contents = (bfd_byte *) bfd_alloc (abfd, sz);
+      contents = (bfd_byte *) _bfd_alloc_and_read (abfd, sz + 1, sz);
       if (contents == NULL)
 	return FALSE;
-      if (bfd_bread (contents, sz, abfd) != sz)
-	return FALSE;
+
+      /* Ensure strings are NULL terminated so we don't wander off the
+	 end of the buffer.  */
+      contents[sz] = 0;
 
       /* The symbol table starts with an eight byte count.  */
       c = H_GET_64 (abfd, contents);
 
-      if (c * 8 >= sz)
+      if (c >= sz / 8)
 	{
 	  bfd_set_error (bfd_error_bad_value);
 	  return FALSE;
@@ -1366,12 +1380,12 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
 
 /* See if this is an XCOFF archive.  */
 
-const bfd_target *
+bfd_cleanup
 _bfd_xcoff_archive_p (bfd *abfd)
 {
   struct artdata *tdata_hold;
   char magic[SXCOFFARMAG];
-  bfd_size_type amt = SXCOFFARMAG;
+  size_t amt = SXCOFFARMAG;
 
   if (bfd_bread (magic, amt, abfd) != amt)
     {
@@ -1467,7 +1481,7 @@ _bfd_xcoff_archive_p (bfd *abfd)
       return NULL;
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 /* Read the archive header in an XCOFF archive.  */
@@ -1477,32 +1491,23 @@ _bfd_xcoff_read_ar_hdr (bfd *abfd)
 {
   bfd_size_type namlen;
   struct areltdata *ret;
-  bfd_size_type amt = sizeof (struct areltdata);
-
-  ret = (struct areltdata *) bfd_zmalloc (amt);
-  if (ret == NULL)
-    return NULL;
+  bfd_size_type amt;
 
   if (! xcoff_big_format_p (abfd))
     {
       struct xcoff_ar_hdr hdr;
       struct xcoff_ar_hdr *hdrp;
 
-      if (bfd_bread (&hdr, (bfd_size_type) SIZEOF_AR_HDR, abfd)
-	  != SIZEOF_AR_HDR)
-	{
-	  free (ret);
-	  return NULL;
-	}
+      if (bfd_bread (&hdr, SIZEOF_AR_HDR, abfd) != SIZEOF_AR_HDR)
+	return NULL;
 
       GET_VALUE_IN_FIELD (namlen, hdr.namlen, 10);
-      amt = SIZEOF_AR_HDR + namlen + 1;
-      hdrp = (struct xcoff_ar_hdr *) bfd_alloc (abfd, amt);
-      if (hdrp == NULL)
-	{
-	  free (ret);
-	  return NULL;
-	}
+      amt = sizeof (struct areltdata) + SIZEOF_AR_HDR + namlen + 1;
+      ret = (struct areltdata *) bfd_malloc (amt);
+      if (ret == NULL)
+	return ret;
+
+      hdrp = (struct xcoff_ar_hdr *) (ret + 1);
       memcpy (hdrp, &hdr, SIZEOF_AR_HDR);
       if (bfd_bread ((char *) hdrp + SIZEOF_AR_HDR, namlen, abfd) != namlen)
 	{
@@ -1520,21 +1525,16 @@ _bfd_xcoff_read_ar_hdr (bfd *abfd)
       struct xcoff_ar_hdr_big hdr;
       struct xcoff_ar_hdr_big *hdrp;
 
-      if (bfd_bread (&hdr, (bfd_size_type) SIZEOF_AR_HDR_BIG, abfd)
-	  != SIZEOF_AR_HDR_BIG)
-	{
-	  free (ret);
-	  return NULL;
-	}
+      if (bfd_bread (&hdr, SIZEOF_AR_HDR_BIG, abfd) != SIZEOF_AR_HDR_BIG)
+	return NULL;
 
       GET_VALUE_IN_FIELD (namlen, hdr.namlen, 10);
-      amt = SIZEOF_AR_HDR_BIG + namlen + 1;
-      hdrp = (struct xcoff_ar_hdr_big *) bfd_alloc (abfd, amt);
-      if (hdrp == NULL)
-	{
-	  free (ret);
-	  return NULL;
-	}
+      amt = sizeof (struct areltdata) + SIZEOF_AR_HDR_BIG + namlen + 1;
+      ret = (struct areltdata *) bfd_malloc (amt);
+      if (ret == NULL)
+	return ret;
+
+      hdrp = (struct xcoff_ar_hdr_big *) (ret + 1);
       memcpy (hdrp, &hdr, SIZEOF_AR_HDR_BIG);
       if (bfd_bread ((char *) hdrp + SIZEOF_AR_HDR_BIG, namlen, abfd) != namlen)
 	{
@@ -2101,6 +2101,13 @@ xcoff_write_archive_contents_old (bfd *a
 	      bfd_set_error (bfd_error_system_call);
 	      return FALSE;
 	    }
+	  if ((abfd->flags & BFD_DETERMINISTIC_OUTPUT) != 0)
+	    {
+	      s.st_mtime = 0;
+	      s.st_uid = 0;
+	      s.st_gid = 0;
+	      s.st_mode = 0644;
+	    }
 
 	  ahdrp = bfd_zalloc (sub, sizeof (*ahdrp));
 	  if (ahdrp == NULL)
@@ -2321,6 +2328,13 @@ xcoff_write_archive_contents_big (bfd *a
 	      bfd_set_error (bfd_error_system_call);
 	      return FALSE;
 	    }
+	  if ((abfd->flags & BFD_DETERMINISTIC_OUTPUT) != 0)
+	    {
+	      s.st_mtime = 0;
+	      s.st_uid = 0;
+	      s.st_gid = 0;
+	      s.st_mode = 0644;
+	    }
 
 	  ahdrp = bfd_zalloc (current_bfd, sizeof (*ahdrp));
 	  if (ahdrp == NULL)
@@ -2566,11 +2580,13 @@ _bfd_xcoff_sizeof_headers (bfd *abfd,
       /* Sum.  */
       for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
 	for (s = sub->sections; s != NULL; s = s->next)
-	  {
-	    struct nbr_reloc_lineno *e = &n_rl[s->output_section->index];
-	    e->reloc_count += s->reloc_count;
-	    e->lineno_count += s->lineno_count;
-	  }
+	  if (s->output_section->owner == abfd
+	      && !bfd_section_removed_from_list (abfd, s->output_section))
+	    {
+	      struct nbr_reloc_lineno *e = &n_rl[s->output_section->index];
+	      e->reloc_count += s->reloc_count;
+	      e->lineno_count += s->lineno_count;
+	    }
 
       /* Add the size of a section for each section with an overflow.  */
       for (s = abfd->sections; s != NULL; s = s->next)
@@ -3389,7 +3405,8 @@ xcoff_ppc_relocate_section (bfd *output_
 		  (info, h->root.root.string,
 		   input_bfd, input_section,
 		   rel->r_vaddr - input_section->vma,
-		   info->unresolved_syms_in_objects == RM_GENERATE_ERROR);
+		   info->unresolved_syms_in_objects == RM_DIAGNOSE &&
+		       !info->warn_unresolved_syms);
 
 	      if (h->root.type == bfd_link_hash_defined
 		  || h->root.type == bfd_link_hash_defweak)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-sh.c ./bfd/coff-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-sh.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-sh.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Renesas Super-H COFF binaries.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
    Written by Steve Chamberlain, <sac@cygnus.com>.
    Relaxing code written by Ian Lance Taylor, <ian@cygnus.com>.
@@ -722,7 +722,7 @@ sh_relax_section (bfd *abfd,
 
   if (coff_section_data (abfd, sec) == NULL)
     {
-      bfd_size_type amt = sizeof (struct coff_section_tdata);
+      size_t amt = sizeof (struct coff_section_tdata);
       sec->used_by_bfd = bfd_zalloc (abfd, amt);
       if (sec->used_by_bfd == NULL)
 	return FALSE;
@@ -1056,10 +1056,9 @@ sh_relax_section (bfd *abfd,
   return TRUE;
 
  error_return:
-  if (internal_relocs != NULL
-      && internal_relocs != coff_section_data (abfd, sec)->relocs)
+  if (internal_relocs != coff_section_data (abfd, sec)->relocs)
     free (internal_relocs);
-  if (contents != NULL && contents != coff_section_data (abfd, sec)->contents)
+  if (contents != coff_section_data (abfd, sec)->contents)
     free (contents);
   return FALSE;
 }
@@ -2723,8 +2722,7 @@ sh_align_loads (bfd *abfd,
   return TRUE;
 
  error_return:
-  if (labels != NULL)
-    free (labels);
+  free (labels);
   return FALSE;
 }
 
@@ -2995,12 +2993,9 @@ sh_coff_get_relocated_section_contents (
   return data;
 
  error_return:
-  if (internal_relocs != NULL)
-    free (internal_relocs);
-  if (internal_syms != NULL)
-    free (internal_syms);
-  if (sections != NULL)
-    free (sections);
+  free (internal_relocs);
+  free (internal_syms);
+  free (sections);
   return NULL;
 }
 
@@ -3044,7 +3039,7 @@ CREATE_LITTLE_COFF_TARGET_VEC (TARGET_SY
 /* Only recognize the small versions if the target was not defaulted.
    Otherwise we won't recognize the non default endianness.  */
 
-static const bfd_target *
+static bfd_cleanup
 coff_small_object_p (bfd *abfd)
 {
   if (abfd->target_defaulted)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-stgo32.c ./bfd/coff-stgo32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-stgo32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-stgo32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Intel 386 COFF files (DJGPP variant with a stub).
-   Copyright (C) 1997-2019 Free Software Foundation, Inc.
+   Copyright (C) 1997-2020 Free Software Foundation, Inc.
    Written by Robert Hoehne.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -23,17 +23,10 @@
    DOS executable program before the coff image to load it in memory
    and execute it. This is needed, because DOS cannot run coff files.
 
-   All the functions below are called by the corresponding functions
-   from coffswap.h.
-   The only thing what they do is to adjust the information stored in
-   the COFF file which are offset into the file.
-   This is needed, because DJGPP uses a very special way to load and run
-   the coff image. It loads the image in memory and assumes then, that the
-   image had no stub by using the filepointers as pointers in the coff
-   image and NOT in the file.
-
-   To be compatible with any existing executables I have fixed this
-   here and NOT in the DJGPP startup code.  */
+   The COFF image is loaded in memory without the stub attached, so
+   all offsets are relative to the beginning of the image, not the
+   actual file.  We handle this in bfd by setting bfd->origin to where
+   the COFF image starts.  */
 
 #define TARGET_SYM		i386_coff_go32stubbed_vec
 #define TARGET_NAME		"coff-go32-exe"
@@ -53,54 +46,29 @@
 { COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
 
+/* Section contains extended relocations. */
+#define IMAGE_SCN_LNK_NRELOC_OVFL (0x01000000)
+
 #include "sysdep.h"
 #include "bfd.h"
+#include "coff/msdos.h"
 
-/* All that ..._PRE and ...POST functions are called from the corresponding
-   coff_swap... functions. The ...PRE functions are called at the beginning
-   of the function and the ...POST functions at the end of the swap routines.  */
-
-static void
-adjust_filehdr_in_post  (bfd *, void *, void *);
-static void
-adjust_filehdr_out_pre  (bfd *, void *, void *);
-static void
-adjust_filehdr_out_post  (bfd *, void *, void *);
-static void
-adjust_scnhdr_in_post  (bfd *, void *, void *);
-static void
-adjust_scnhdr_out_pre  (bfd *, void *, void *);
-static void
-adjust_scnhdr_out_post (bfd *, void *, void *);
-static void
-adjust_aux_in_post (bfd *, void *, int, int, int, int, void *);
-static void
-adjust_aux_out_pre (bfd *, void *, int, int, int, int, void *);
-static void
-adjust_aux_out_post (bfd *, void *, int, int, int, int, void *);
-static void
-create_go32_stub (bfd *);
-
-#define COFF_ADJUST_FILEHDR_IN_POST adjust_filehdr_in_post
-#define COFF_ADJUST_FILEHDR_OUT_PRE adjust_filehdr_out_pre
-#define COFF_ADJUST_FILEHDR_OUT_POST adjust_filehdr_out_post
-
-#define COFF_ADJUST_SCNHDR_IN_POST adjust_scnhdr_in_post
-#define COFF_ADJUST_SCNHDR_OUT_PRE adjust_scnhdr_out_pre
-#define COFF_ADJUST_SCNHDR_OUT_POST adjust_scnhdr_out_post
-
-#define COFF_ADJUST_AUX_IN_POST adjust_aux_in_post
-#define COFF_ADJUST_AUX_OUT_PRE adjust_aux_out_pre
-#define COFF_ADJUST_AUX_OUT_POST adjust_aux_out_post
-
-static const bfd_target *go32_check_format (bfd *);
-
-#define COFF_CHECK_FORMAT go32_check_format
-
-static bfd_boolean
-  go32_stubbed_coff_bfd_copy_private_bfd_data (bfd *, bfd *);
-
-#define coff_bfd_copy_private_bfd_data go32_stubbed_coff_bfd_copy_private_bfd_data
+static bfd_cleanup go32exe_check_format (bfd *);
+static bfd_boolean go32exe_write_object_contents (bfd *);
+static bfd_boolean go32exe_mkobject (bfd *);
+static bfd_boolean go32exe_copy_private_bfd_data (bfd *, bfd *);
+
+/* Defined in coff-go32.c.  */
+bfd_boolean _bfd_go32_mkobject (bfd *);
+void _bfd_go32_swap_scnhdr_in (bfd *, void *, void *);
+unsigned int _bfd_go32_swap_scnhdr_out (bfd *, void *, void *);
+
+#define COFF_CHECK_FORMAT go32exe_check_format
+#define COFF_WRITE_CONTENTS go32exe_write_object_contents
+#define coff_mkobject go32exe_mkobject
+#define coff_bfd_copy_private_bfd_data go32exe_copy_private_bfd_data
+#define coff_SWAP_scnhdr_in _bfd_go32_swap_scnhdr_in
+#define coff_SWAP_scnhdr_out _bfd_go32_swap_scnhdr_out
 
 #include "coff-i386.c"
 
@@ -110,160 +78,15 @@ static bfd_boolean
 
 /* These bytes are a 2048-byte DOS executable, which loads the COFF
    image into memory and then runs it. It is called 'stub'.  */
-
-static const unsigned char stub_bytes[GO32_STUBSIZE] =
+#define GO32EXE_DEFAULT_STUB_SIZE 2048
+static const unsigned char go32exe_default_stub[GO32EXE_DEFAULT_STUB_SIZE] =
 {
 #include "go32stub.h"
 };
 
-/*
-   I have not commented each swap function below, because the
-   technique is in any function the same. For the ...in function,
-   all the pointers are adjusted by adding GO32_STUBSIZE and for the
-   ...out function, it is subtracted first and after calling the
-   standard swap function it is reset to the old value.  */
-
-/* This macro is used for adjusting the filepointers, which
-   is done only, if the pointer is nonzero.  */
-
-#define ADJUST_VAL(val,diff) \
-  if (val != 0) val += diff
-
-static void
-adjust_filehdr_in_post  (bfd *  abfd ATTRIBUTE_UNUSED,
-			 void * src,
-			 void * dst)
-{
-  FILHDR *filehdr_src = (FILHDR *) src;
-  struct internal_filehdr *filehdr_dst = (struct internal_filehdr *) dst;
-
-  ADJUST_VAL (filehdr_dst->f_symptr, GO32_STUBSIZE);
-
-  /* Save now the stub to be used later.  Put the stub data to FILEHDR_DST
-     first as coff_data (abfd) still does not exist.  It may not even be ever
-     created as we are just checking the file format of ABFD.  */
-  memcpy (filehdr_dst->go32stub, filehdr_src->stub, GO32_STUBSIZE);
-  filehdr_dst->f_flags |= F_GO32STUB;
-}
-
-static void
-adjust_filehdr_out_pre  (bfd * abfd, void * in, void * out)
-{
-  struct internal_filehdr *filehdr_in = (struct internal_filehdr *) in;
-  FILHDR *filehdr_out = (FILHDR *) out;
-
-  /* Generate the stub.  */
-  create_go32_stub (abfd);
-
-  /* Copy the stub to the file header.  */
-  if (coff_data (abfd)->go32stub != NULL)
-    memcpy (filehdr_out->stub, coff_data (abfd)->go32stub, GO32_STUBSIZE);
-  else
-    /* Use the default.  */
-    memcpy (filehdr_out->stub, stub_bytes, GO32_STUBSIZE);
-
-  ADJUST_VAL (filehdr_in->f_symptr, -GO32_STUBSIZE);
-}
-
-static void
-adjust_filehdr_out_post  (bfd *  abfd ATTRIBUTE_UNUSED,
-			  void * in,
-			  void * out ATTRIBUTE_UNUSED)
-{
-  struct internal_filehdr *filehdr_in = (struct internal_filehdr *) in;
-  /* Undo the above change.  */
-  ADJUST_VAL (filehdr_in->f_symptr, GO32_STUBSIZE);
-}
-
-static void
-adjust_scnhdr_in_post  (bfd *  abfd ATTRIBUTE_UNUSED,
-			void * ext ATTRIBUTE_UNUSED,
-			void * in)
-{
-  struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *) in;
-
-  ADJUST_VAL (scnhdr_int->s_scnptr, GO32_STUBSIZE);
-  ADJUST_VAL (scnhdr_int->s_relptr, GO32_STUBSIZE);
-  ADJUST_VAL (scnhdr_int->s_lnnoptr, GO32_STUBSIZE);
-}
-
-static void
-adjust_scnhdr_out_pre  (bfd *  abfd ATTRIBUTE_UNUSED,
-			void * in,
-			void * out ATTRIBUTE_UNUSED)
-{
-  struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *) in;
-
-  ADJUST_VAL (scnhdr_int->s_scnptr, -GO32_STUBSIZE);
-  ADJUST_VAL (scnhdr_int->s_relptr, -GO32_STUBSIZE);
-  ADJUST_VAL (scnhdr_int->s_lnnoptr, -GO32_STUBSIZE);
-}
-
-static void
-adjust_scnhdr_out_post (bfd *  abfd ATTRIBUTE_UNUSED,
-			void * in,
-			void * out ATTRIBUTE_UNUSED)
-{
-  struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *) in;
-
-  ADJUST_VAL (scnhdr_int->s_scnptr, GO32_STUBSIZE);
-  ADJUST_VAL (scnhdr_int->s_relptr, GO32_STUBSIZE);
-  ADJUST_VAL (scnhdr_int->s_lnnoptr, GO32_STUBSIZE);
-}
-
-static void
-adjust_aux_in_post (bfd * abfd ATTRIBUTE_UNUSED,
-		    void * ext1 ATTRIBUTE_UNUSED,
-		    int type,
-		    int in_class,
-		    int indx ATTRIBUTE_UNUSED,
-		    int numaux ATTRIBUTE_UNUSED,
-		    void * in1)
-{
-  union internal_auxent *in = (union internal_auxent *) in1;
-
-  if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type)
-      || ISTAG (in_class))
-    {
-      ADJUST_VAL (in->x_sym.x_fcnary.x_fcn.x_lnnoptr, GO32_STUBSIZE);
-    }
-}
-
-static void
-adjust_aux_out_pre (bfd *abfd ATTRIBUTE_UNUSED,
-		    void * inp,
-		    int type,
-		    int in_class,
-		    int indx ATTRIBUTE_UNUSED,
-		    int numaux ATTRIBUTE_UNUSED,
-		    void * extp ATTRIBUTE_UNUSED)
-{
-  union internal_auxent *in = (union internal_auxent *) inp;
-
-  if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type)
-      || ISTAG (in_class))
-    {
-      ADJUST_VAL (in->x_sym.x_fcnary.x_fcn.x_lnnoptr, -GO32_STUBSIZE);
-    }
-}
-
-static void
-adjust_aux_out_post (bfd *abfd ATTRIBUTE_UNUSED,
-		     void * inp,
-		     int type,
-		     int in_class,
-		     int indx ATTRIBUTE_UNUSED,
-		     int numaux ATTRIBUTE_UNUSED,
-		     void * extp ATTRIBUTE_UNUSED)
-{
-  union internal_auxent *in = (union internal_auxent *) inp;
-
-  if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type)
-      || ISTAG (in_class))
-    {
-      ADJUST_VAL (in->x_sym.x_fcnary.x_fcn.x_lnnoptr, GO32_STUBSIZE);
-    }
-}
+/* Temporary location for stub read from input file.  */
+static char * go32exe_temp_stub = NULL;
+static bfd_size_type go32exe_temp_stub_size = 0;
 
 /* That's the function, which creates the stub. There are
    different cases from where the stub is taken.
@@ -275,13 +98,16 @@ adjust_aux_out_post (bfd *abfd ATTRIBUTE
    file.
 
    If there was any error, the standard stub (compiled in this file)
-   is taken.  */
+   is taken.
+
+   Ideally this function should exec '$(TARGET)-stubify' to generate
+   a stub, like gcc does.  */
 
 static void
-create_go32_stub (bfd *abfd)
+go32exe_create_stub (bfd *abfd)
 {
   /* Do it only once.  */
-  if (coff_data (abfd)->go32stub == NULL)
+  if (coff_data (abfd)->stub == NULL)
     {
       char *stub;
       struct stat st;
@@ -291,6 +117,22 @@ create_go32_stub (bfd *abfd)
       unsigned long coff_start;
       long exe_start;
 
+      /* If we read a stub from an input file, use that one.  */
+      if (go32exe_temp_stub != NULL)
+	{
+	  coff_data (abfd)->stub = bfd_alloc (abfd,
+						  go32exe_temp_stub_size);
+	  if (coff_data (abfd)->stub == NULL)
+	    return;
+	  memcpy (coff_data (abfd)->stub, go32exe_temp_stub,
+		  go32exe_temp_stub_size);
+	  coff_data (abfd)->stub_size = go32exe_temp_stub_size;
+	  free (go32exe_temp_stub);
+	  go32exe_temp_stub = NULL;
+	  go32exe_temp_stub_size = 0;
+	  return;
+	}
+
       /* Check at first the environment variable $(GO32STUB).  */
       stub = getenv ("GO32STUB");
       /* Now check the environment variable $(STUB).  */
@@ -323,13 +165,6 @@ create_go32_stub (bfd *abfd)
       if (_H (1))
 	coff_start += (long) _H (1) - 512L;
 
-      /* Currently there is only a fixed stub size of 2048 bytes
-	 supported.  */
-      if (coff_start != 2048)
-	{
-	  close (f);
-	  goto stub_end;
-	}
       exe_start = _H (4) * 16;
       if ((long) lseek (f, exe_start, SEEK_SET) != exe_start)
 	{
@@ -347,31 +182,35 @@ create_go32_stub (bfd *abfd)
 	  goto stub_end;
 	}
       /* Now we found a correct stub (hopefully).  */
-      coff_data (abfd)->go32stub = bfd_alloc (abfd, (bfd_size_type) coff_start);
-      if (coff_data (abfd)->go32stub == NULL)
+      coff_data (abfd)->stub = bfd_alloc (abfd, (bfd_size_type) coff_start);
+      if (coff_data (abfd)->stub == NULL)
 	{
 	  close (f);
 	  return;
 	}
       lseek (f, 0L, SEEK_SET);
-      if ((unsigned long) read (f, coff_data (abfd)->go32stub, coff_start)
+      if ((unsigned long) read (f, coff_data (abfd)->stub, coff_start)
 	  != coff_start)
 	{
-	  bfd_release (abfd, coff_data (abfd)->go32stub);
-	  coff_data (abfd)->go32stub = NULL;
+	  bfd_release (abfd, coff_data (abfd)->stub);
+	  coff_data (abfd)->stub = NULL;
 	}
+      else
+	coff_data (abfd)->stub_size = coff_start;
       close (f);
     }
-stub_end:
+ stub_end:
   /* There was something wrong above, so use now the standard builtin
      stub.  */
-  if (coff_data (abfd)->go32stub == NULL)
+  if (coff_data (abfd)->stub == NULL)
     {
-      coff_data (abfd)->go32stub
-	= bfd_alloc (abfd, (bfd_size_type) GO32_STUBSIZE);
-      if (coff_data (abfd)->go32stub == NULL)
+      coff_data (abfd)->stub
+	= bfd_alloc (abfd, (bfd_size_type) GO32EXE_DEFAULT_STUB_SIZE);
+      if (coff_data (abfd)->stub == NULL)
 	return;
-      memcpy (coff_data (abfd)->go32stub, stub_bytes, GO32_STUBSIZE);
+      memcpy (coff_data (abfd)->stub, go32exe_default_stub,
+	      GO32EXE_DEFAULT_STUB_SIZE);
+      coff_data (abfd)->stub_size = GO32EXE_DEFAULT_STUB_SIZE;
     }
 }
 
@@ -379,46 +218,163 @@ stub_end:
    to the new obfd.  */
 
 static bfd_boolean
-go32_stubbed_coff_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
+go32exe_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   /* Check if both are the same targets.  */
   if (ibfd->xvec != obfd->xvec)
     return TRUE;
 
-  /* Check if we have a source stub.  */
-  if (coff_data (ibfd)->go32stub == NULL)
-    return TRUE;
+  /* Make sure we have a source stub.  */
+  BFD_ASSERT (coff_data (ibfd)->stub != NULL);
 
-  /* As adjust_filehdr_out_pre may get called only after this function,
-     optionally allocate the output stub.  */
-  if (coff_data (obfd)->go32stub == NULL)
-    coff_data (obfd)->go32stub = bfd_alloc (obfd,
-					  (bfd_size_type) GO32_STUBSIZE);
+  /* Reallocate the output stub if necessary.  */
+  if (coff_data (ibfd)->stub_size > coff_data (obfd)->stub_size)
+    coff_data (obfd)->stub = bfd_alloc (obfd, coff_data (ibfd)->stub_size);
+  if (coff_data (obfd)->stub == NULL)
+    return FALSE;
 
   /* Now copy the stub.  */
-  if (coff_data (obfd)->go32stub != NULL)
-    memcpy (coff_data (obfd)->go32stub, coff_data (ibfd)->go32stub,
-	    GO32_STUBSIZE);
+  memcpy (coff_data (obfd)->stub, coff_data (ibfd)->stub,
+	  coff_data (ibfd)->stub_size);
+  coff_data (obfd)->stub_size = coff_data (ibfd)->stub_size;
+  obfd->origin = coff_data (obfd)->stub_size;
 
   return TRUE;
 }
 
-/* coff_object_p only checks 2 bytes F_MAGIC at GO32_STUBSIZE inside the file
-   which is too fragile.  */
+/* Cleanup function, returned from check_format hook.  */
 
-static const bfd_target *
-go32_check_format (bfd *abfd)
+static void
+go32exe_cleanup (bfd *abfd)
 {
-  char mz[2];
+  abfd->origin = 0;
+
+  free (go32exe_temp_stub);
+  go32exe_temp_stub = NULL;
+  go32exe_temp_stub_size = 0;
+}
 
-  if (bfd_bread (mz, 2, abfd) != 2 || mz[0] != 'M' || mz[1] != 'Z')
+/* Check that there is a GO32 stub and read it to go32exe_temp_stub.
+   Then set abfd->origin so that the COFF image is read at the correct
+   file offset.  */
+
+static bfd_cleanup
+go32exe_check_format (bfd *abfd)
+{
+  struct external_DOS_hdr filehdr_dos;
+  uint16_t num_pages;
+  uint16_t last_page_size;
+  uint32_t header_end;
+  bfd_size_type stubsize;
+
+  /* This format can not appear in an archive.  */
+  if (abfd->origin != 0)
     {
       bfd_set_error (bfd_error_wrong_format);
       return NULL;
     }
 
+  bfd_set_error (bfd_error_system_call);
+
+  /* Read in the stub file header, which is a DOS MZ executable.  */
+  if (bfd_bread (&filehdr_dos, DOS_HDR_SIZE, abfd) != DOS_HDR_SIZE)
+    goto fail;
+
+  /* Make sure that this is an MZ executable.  */
+  if (H_GET_16 (abfd, filehdr_dos.e_magic) != IMAGE_DOS_SIGNATURE)
+    goto fail_format;
+
+  /* Determine the size of the stub  */
+  num_pages = H_GET_16 (abfd, filehdr_dos.e_cp);
+  last_page_size = H_GET_16 (abfd, filehdr_dos.e_cblp);
+  stubsize = num_pages * 512;
+  if (last_page_size != 0)
+    stubsize += last_page_size - 512;
+
+  /* Save now the stub to be used later.  Put the stub data to a temporary
+     location first as tdata still does not exist.  It may not even
+     be ever created if we are just checking the file format of ABFD.  */
+  bfd_seek (abfd, 0, SEEK_SET);
+  go32exe_temp_stub = bfd_malloc (stubsize);
+  if (go32exe_temp_stub == NULL)
+    goto fail;
+  if (bfd_bread (go32exe_temp_stub, stubsize, abfd) != stubsize)
+    goto fail;
+  go32exe_temp_stub_size = stubsize;
+
+  /* Confirm that this is a go32stub.  */
+  header_end = H_GET_16 (abfd, filehdr_dos.e_cparhdr) * 16UL;
+  if (! CONST_STRNEQ (go32exe_temp_stub + header_end, "go32stub"))
+    goto fail_format;
+
+  /* Set origin to where the COFF header starts and seek there.  */
+  abfd->origin = stubsize;
   if (bfd_seek (abfd, 0, SEEK_SET) != 0)
-    return NULL;
+    goto fail;
+
+  /* Call coff_object_p to read the COFF image.  If this fails then the file
+     must be just a stub with no COFF data attached.  */
+  bfd_cleanup cleanup = coff_object_p (abfd);
+  if (cleanup == NULL)
+    goto fail;
+  BFD_ASSERT (cleanup == _bfd_no_cleanup);
+
+  return go32exe_cleanup;
+
+ fail_format:
+  bfd_set_error (bfd_error_wrong_format);
+ fail:
+  go32exe_cleanup (abfd);
+  return NULL;
+}
+
+/* Write the stub to the output file, then call coff_write_object_contents.  */
+
+static bfd_boolean
+go32exe_write_object_contents (bfd *abfd)
+{
+  const bfd_size_type pos = bfd_tell (abfd);
+  const bfd_size_type stubsize = coff_data (abfd)->stub_size;
+
+  BFD_ASSERT (stubsize != 0);
+
+  bfd_set_error (bfd_error_system_call);
 
-  return coff_object_p (abfd);
+  /* Write the stub.  */
+  abfd->origin = 0;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+    return FALSE;
+  if (bfd_bwrite (coff_data (abfd)->stub, stubsize, abfd) != stubsize)
+    return FALSE;
+
+  /* Seek back to where we were.  */
+  abfd->origin = stubsize;
+  if (bfd_seek (abfd, pos, SEEK_SET) != 0)
+    return FALSE;
+
+  return coff_write_object_contents (abfd);
+}
+
+/* mkobject hook.  Called directly through bfd_set_format or via
+   coff_mkobject_hook etc from bfd_check_format.  */
+
+static bfd_boolean
+go32exe_mkobject (bfd *abfd)
+{
+  /* Don't output to an archive.  */
+  if (abfd->my_archive != NULL)
+    return FALSE;
+
+  if (!_bfd_go32_mkobject (abfd))
+    return FALSE;
+
+  go32exe_create_stub (abfd);
+  if (coff_data (abfd)->stub == NULL)
+    {
+      bfd_release (abfd, coff_data (abfd));
+      return FALSE;
+    }
+  abfd->origin = coff_data (abfd)->stub_size;
+
+  return TRUE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coffswap.h ./bfd/coffswap.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coffswap.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coffswap.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic COFF swapping routines, for BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -264,9 +264,6 @@ coff_swap_filehdr_in (bfd * abfd, void *
   filehdr_dst->f_nsyms  = H_GET_32 (abfd, filehdr_src->f_nsyms);
   filehdr_dst->f_opthdr = H_GET_16 (abfd, filehdr_src->f_opthdr);
   filehdr_dst->f_flags  = H_GET_16 (abfd, filehdr_src->f_flags);
-#ifdef TIC80_TARGET_ID
-  filehdr_dst->f_target_id = H_GET_16 (abfd, filehdr_src->f_target_id);
-#endif
 
 #ifdef COFF_ADJUST_FILEHDR_IN_POST
   COFF_ADJUST_FILEHDR_IN_POST (abfd, src, dst);
@@ -289,9 +286,6 @@ coff_swap_filehdr_out (bfd *abfd, void *
   H_PUT_32 (abfd, filehdr_in->f_nsyms, filehdr_out->f_nsyms);
   H_PUT_16 (abfd, filehdr_in->f_opthdr, filehdr_out->f_opthdr);
   H_PUT_16 (abfd, filehdr_in->f_flags, filehdr_out->f_flags);
-#ifdef TIC80_TARGET_ID
-  H_PUT_16 (abfd, filehdr_in->f_target_id, filehdr_out->f_target_id);
-#endif
 
 #ifdef COFF_ADJUST_FILEHDR_OUT_POST
   COFF_ADJUST_FILEHDR_OUT_POST (abfd, in, out);
@@ -405,7 +399,7 @@ coff_swap_aux_in (bfd *abfd,
 #if FILNMLEN != E_FILNMLEN
 #error we need to cope with truncating or extending FILNMLEN
 #else
-	  if (numaux > 1)
+	  if (numaux > 1 && coff_data (abfd)->pe)
 	    {
 	      if (indx == 0)
 		memcpy (in->x_file.x_fname, ext->x_file.x_fname,
@@ -731,6 +725,7 @@ coff_swap_aouthdr_out (bfd * abfd, void
   return AOUTSZ;
 }
 
+ATTRIBUTE_UNUSED
 static void
 coff_swap_scnhdr_in (bfd * abfd, void * ext, void * in)
 {
@@ -757,6 +752,7 @@ coff_swap_scnhdr_in (bfd * abfd, void *
 #endif
 }
 
+ATTRIBUTE_UNUSED
 static unsigned int
 coff_swap_scnhdr_out (bfd * abfd, void * in, void * out)
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-tic30.c ./bfd/coff-tic30.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-tic30.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-tic30.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for TMS320C30 coff binaries.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
    Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-tic4x.c ./bfd/coff-tic4x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-tic4x.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-tic4x.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for TMS320C4X coff binaries.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-tic54x.c ./bfd/coff-tic54x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-tic54x.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-tic54x.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for TMS320C54X coff binaries.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Contributed by Timothy Wall (twall@cygnus.com)
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-tic80.c ./bfd/coff-tic80.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-tic80.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-tic80.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,711 +0,0 @@
-/* BFD back-end for Texas Instruments TMS320C80 Multimedia Video Processor (MVP).
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
-
-   Written by Fred Fish (fnf@cygnus.com)
-
-   There is nothing new under the sun. This file draws a lot on other
-   coff files.
-
-   This file is part of BFD, the Binary File Descriptor library.
-
-   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, write to the Free Software
-   Foundation, 51 Franklin Street - Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "bfdlink.h"
-#include "libbfd.h"
-#ifdef _CONST
-/* Newlib-based hosts define _CONST as a STDC-safe alias for const,
-  but to the tic80 toolchain it means something altogether different.
-  Since sysdep.h will have pulled in stdio.h and hence _ansi.h which
-  contains this definition, we must undef it before including the
-  tic80-specific definition. */
-#undef _CONST
-#endif /* _CONST */
-#include "coff/tic80.h"
-#include "coff/internal.h"
-#include "libcoff.h"
-
-#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
-#define COFF_ALIGN_IN_SECTION_HEADER 1
-#define COFF_ALIGN_IN_SFLAGS 1
-#define COFF_ENCODE_ALIGNMENT(S,X) ((S).s_flags |= (((unsigned)(X) & 0xf) << 8))
-#define COFF_DECODE_ALIGNMENT(X) (((X) >> 8) & 0xf)
-
-#define GET_SCNHDR_FLAGS H_GET_16
-#define PUT_SCNHDR_FLAGS H_PUT_16
-
-static bfd_reloc_status_type ppbase_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type glob15_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type glob16_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type local16_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-
-
-static reloc_howto_type tic80_howto_table[] =
-{
-
-  HOWTO (R_RELLONG,			/* type */
-	 0,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_bitfield,	/* complain_on_overflow */
-	 NULL,				/* special_function */
-	 "RELLONG",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0xffffffff,			/* src_mask */
-	 0xffffffff,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_MPPCR,			/* type */
-	 2,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 32,				/* bitsize */
-	 TRUE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_signed,	/* complain_on_overflow */
-	 NULL,				/* special_function */
-	 "MPPCR",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0xffffffff,			/* src_mask */
-	 0xffffffff,			/* dst_mask */
-	 TRUE),				/* pcrel_offset */
-
-  HOWTO (R_ABS,				/* type */
-	 0,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_bitfield,	/* complain_on_overflow */
-	 NULL,				/* special_function */
-	 "ABS",				/* name */
-	 TRUE,				/* partial_inplace */
-	 0xffffffff,			/* src_mask */
-	 0xffffffff,			/* dst_mask */
-	 FALSE),				/* pcrel_offset */
-
-  HOWTO (R_PPBASE,			/* type */
-	 0,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 ppbase_reloc,			/* special_function */
-	 "PPBASE",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0xffffffff,			/* src_mask */
-	 0xffffffff,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPLBASE,			/* type */
-	 0,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 ppbase_reloc,			/* special_function */
-	 "PPLBASE",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0xffffffff,			/* src_mask */
-	 0xffffffff,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PP15,			/* type */
-	 0,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 6,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 glob15_reloc,			/* special_function */
-	 "PP15",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x1ffc0,			/* src_mask */
-	 0x1ffc0,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PP15W,			/* type */
-	 2,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 6,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 glob15_reloc,			/* special_function */
-	 "PP15W",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x1ffc0,			/* src_mask */
-	 0x1ffc0,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PP15H,			/* type */
-	 1,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 6,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 glob15_reloc,			/* special_function */
-	 "PP15H",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x1ffc0,			/* src_mask */
-	 0x1ffc0,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PP16B,			/* type */
-	 0,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 16,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 6,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 glob16_reloc,			/* special_function */
-	 "PP16B",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x3ffc0,			/* src_mask */
-	 0x3ffc0,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPL15,			/* type */
-	 0,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 NULL,				/* special_function */
-	 "PPL15",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x7fff,			/* src_mask */
-	 0x7fff,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPL15W,			/* type */
-	 2,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 NULL,				/* special_function */
-	 "PPL15W",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x7fff,			/* src_mask */
-	 0x7fff,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPL15H,			/* type */
-	 1,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 NULL,				/* special_function */
-	 "PPL15H",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x7fff,			/* src_mask */
-	 0x7fff,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPL16B,			/* type */
-	 0,				/* rightshift */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 16,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 local16_reloc,			/* special_function */
-	 "PPL16B",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0xffff,			/* src_mask */
-	 0xffff,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPN15,			/* type */
-	 0,				/* rightshift */
-	 -2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 6,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 glob15_reloc,			/* special_function */
-	 "PPN15",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x1ffc0,			/* src_mask */
-	 0x1ffc0,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPN15W,			/* type */
-	 2,				/* rightshift */
-	 -2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 6,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 glob15_reloc,			/* special_function */
-	 "PPN15W",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x1ffc0,			/* src_mask */
-	 0x1ffc0,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPN15H,			/* type */
-	 1,				/* rightshift */
-	 -2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 6,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 glob15_reloc,			/* special_function */
-	 "PPN15H",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x1ffc0,			/* src_mask */
-	 0x1ffc0,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPN16B,			/* type */
-	 0,				/* rightshift */
-	 -2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 16,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 6,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 glob16_reloc,			/* special_function */
-	 "PPN16B",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x3ffc0,			/* src_mask */
-	 0x3ffc0,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPLN15,			/* type */
-	 0,				/* rightshift */
-	 -2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 NULL,				/* special_function */
-	 "PPLN15",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x7fff,			/* src_mask */
-	 0x7fff,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPLN15W,			/* type */
-	 2,				/* rightshift */
-	 -2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 NULL,				/* special_function */
-	 "PPLN15W",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x7fff,			/* src_mask */
-	 0x7fff,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPLN15H,			/* type */
-	 1,				/* rightshift */
-	 -2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 NULL,				/* special_function */
-	 "PPLN15H",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0x7fff,			/* src_mask */
-	 0x7fff,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  HOWTO (R_PPLN16B,			/* type */
-	 0,				/* rightshift */
-	 -2,				/* size (0 = byte, 1 = short, 2 = long) */
-	 15,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 local16_reloc,			/* special_function */
-	 "PPLN16B",			/* name */
-	 TRUE,				/* partial_inplace */
-	 0xffff,			/* src_mask */
-	 0xffff,			/* dst_mask */
-	 FALSE)				/* pcrel_offset */
-};
-
-/* Special relocation functions, used when the output file is not
-   itself a COFF TIc80 file.  */
-
-/* This special function is used for the base address type
-   relocations.  */
-
-static bfd_reloc_status_type
-ppbase_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-	      arelent *reloc_entry ATTRIBUTE_UNUSED,
-	      asymbol *symbol_in ATTRIBUTE_UNUSED,
-	      void * data ATTRIBUTE_UNUSED,
-	      asection *input_section ATTRIBUTE_UNUSED,
-	      bfd *output_bfd ATTRIBUTE_UNUSED,
-	      char **error_message ATTRIBUTE_UNUSED)
-{
-  /* FIXME.  */
-  abort ();
-}
-
-/* This special function is used for the global 15 bit relocations.  */
-
-static bfd_reloc_status_type
-glob15_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-	      arelent *reloc_entry ATTRIBUTE_UNUSED,
-	      asymbol *symbol_in ATTRIBUTE_UNUSED,
-	      void * data ATTRIBUTE_UNUSED,
-	      asection *input_section ATTRIBUTE_UNUSED,
-	      bfd *output_bfd ATTRIBUTE_UNUSED,
-	      char **error_message ATTRIBUTE_UNUSED)
-{
-  /* FIXME.  */
-  abort ();
-}
-
-/* This special function is used for the global 16 bit relocations.  */
-
-static bfd_reloc_status_type
-glob16_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-	      arelent *reloc_entry ATTRIBUTE_UNUSED,
-	      asymbol *symbol_in ATTRIBUTE_UNUSED,
-	      void * data ATTRIBUTE_UNUSED,
-	      asection *input_section ATTRIBUTE_UNUSED,
-	      bfd *output_bfd ATTRIBUTE_UNUSED,
-	      char **error_message ATTRIBUTE_UNUSED)
-{
-  /* FIXME.  */
-  abort ();
-}
-
-/* This special function is used for the local 16 bit relocations.  */
-
-static bfd_reloc_status_type
-local16_reloc (bfd *abfd ATTRIBUTE_UNUSED,
-	       arelent *reloc_entry ATTRIBUTE_UNUSED,
-	       asymbol *symbol_in ATTRIBUTE_UNUSED,
-	       void * data ATTRIBUTE_UNUSED,
-	       asection *input_section ATTRIBUTE_UNUSED,
-	       bfd *output_bfd ATTRIBUTE_UNUSED,
-	       char **error_message ATTRIBUTE_UNUSED)
-{
-  /* FIXME.  */
-  abort ();
-}
-
-/* Code to turn an external r_type into a pointer to an entry in the howto_table.
-   If passed an r_type we don't recognize the abort rather than silently failing
-   to generate an output file.  */
-
-static void
-rtype2howto (arelent *cache_ptr, struct internal_reloc *dst)
-{
-  unsigned int i;
-
-  for (i = 0; i < sizeof tic80_howto_table / sizeof tic80_howto_table[0]; i++)
-    {
-      if (tic80_howto_table[i].type == dst->r_type)
-	{
-	  cache_ptr->howto = tic80_howto_table + i;
-	  return;
-	}
-    }
-
-  _bfd_error_handler (_("unsupported relocation type %#x"),
-		      (unsigned int) dst->r_type);
-  cache_ptr->howto = tic80_howto_table + 0;
-}
-
-#define RTYPE2HOWTO(cache_ptr, dst) rtype2howto (cache_ptr, dst)
-#define coff_rtype_to_howto coff_tic80_rtype_to_howto
-
-static reloc_howto_type *
-coff_tic80_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
-			   asection *sec,
-			   struct internal_reloc *rel,
-			   struct coff_link_hash_entry *h ATTRIBUTE_UNUSED,
-			   struct internal_syment *sym ATTRIBUTE_UNUSED,
-			   bfd_vma *addendp)
-{
-  arelent genrel;
-
-  if (rel -> r_symndx == -1 && addendp != NULL)
-    {
-      /* This is a TI "internal relocation", which means that the relocation
-	 amount is the amount by which the current section is being relocated
-	 in the output section.  */
-      *addendp = (sec -> output_section -> vma + sec -> output_offset) - sec -> vma;
-    }
-  RTYPE2HOWTO (&genrel, rel);
-  return genrel.howto;
-}
-
-#ifndef BADMAG
-#define BADMAG(x) TIC80BADMAG(x)
-#endif
-
-#define coff_relocate_section coff_tic80_relocate_section
-
-/* We need a special relocation routine to handle the PP relocs.  Most
-   of this is a copy of _bfd_coff_generic_relocate_section.  */
-
-static bfd_boolean
-coff_tic80_relocate_section (bfd *output_bfd,
-			     struct bfd_link_info *info,
-			     bfd *input_bfd,
-			     asection *input_section,
-			     bfd_byte *contents,
-			     struct internal_reloc *relocs,
-			     struct internal_syment *syms,
-			     asection **sections)
-{
-  struct internal_reloc *rel;
-  struct internal_reloc *relend;
-
-  rel = relocs;
-  relend = rel + input_section->reloc_count;
-  for (; rel < relend; rel++)
-    {
-      long symndx;
-      struct coff_link_hash_entry *h;
-      struct internal_syment *sym;
-      bfd_vma addend;
-      bfd_vma val;
-      reloc_howto_type *howto;
-      bfd_reloc_status_type rstat;
-      bfd_vma addr;
-
-      symndx = rel->r_symndx;
-
-      if (symndx == -1)
-	{
-	  h = NULL;
-	  sym = NULL;
-	}
-      else
-	{
-	  h = obj_coff_sym_hashes (input_bfd)[symndx];
-	  sym = syms + symndx;
-	}
-
-      /* COFF treats common symbols in one of two ways.  Either the
-	 size of the symbol is included in the section contents, or it
-	 is not.  We assume that the size is not included, and force
-	 the rtype_to_howto function to adjust the addend as needed.  */
-
-      if (sym != NULL && sym->n_scnum != 0)
-	addend = - sym->n_value;
-      else
-	addend = 0;
-
-      howto = bfd_coff_rtype_to_howto (input_bfd, input_section, rel, h,
-				       sym, &addend);
-      if (howto == NULL)
-	return FALSE;
-
-      val = 0;
-
-      if (h == NULL)
-	{
-	  asection *sec;
-
-	  if (symndx == -1)
-	    {
-	      sec = bfd_abs_section_ptr;
-	      val = 0;
-	    }
-	  else
-	    {
-	      sec = sections[symndx];
-	      val = (sec->output_section->vma
-		     + sec->output_offset
-		     + sym->n_value);
-	      if (! obj_pe (output_bfd))
-		val -= sec->vma;
-	    }
-	}
-      else
-	{
-	  if (h->root.type == bfd_link_hash_defined
-	      || h->root.type == bfd_link_hash_defweak)
-	    {
-	      asection *sec;
-
-	      sec = h->root.u.def.section;
-	      val = (h->root.u.def.value
-		     + sec->output_section->vma
-		     + sec->output_offset);
-	      }
-
-	  else if (! bfd_link_relocatable (info))
-	    (*info->callbacks->undefined_symbol)
-	      (info, h->root.root.string, input_bfd, input_section,
-	       rel->r_vaddr - input_section->vma, TRUE);
-	}
-
-      addr = rel->r_vaddr - input_section->vma;
-
-      /* FIXME: This code assumes little endian, but the PP can
-	 apparently be bi-endian.  I don't know if the bi-endianness
-	 applies to the instruction set or just to the data.  */
-      switch (howto->type)
-	{
-	default:
-	case R_ABS:
-	case R_RELLONGX:
-	case R_PPL15:
-	case R_PPL15W:
-	case R_PPL15H:
-	case R_PPLN15:
-	case R_PPLN15W:
-	case R_PPLN15H:
-	  rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
-					    contents, addr, val, addend);
-	  break;
-
-	case R_PP15:
-	case R_PP15W:
-	case R_PP15H:
-	case R_PPN15:
-	case R_PPN15W:
-	case R_PPN15H:
-	  /* Offset the address so that we can use 4 byte relocations.  */
-	  rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
-					    contents + 2, addr, val, addend);
-	  break;
-
-	case R_PP16B:
-	case R_PPN16B:
-	  {
-	    /* The most significant bit is stored in bit 6.  */
-	    bfd_byte hold;
-
-	    hold = contents[addr + 4];
-	    contents[addr + 4] &=~ 0x20;
-	    contents[addr + 4] |= (contents[addr] >> 1) & 0x20;
-	    rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
-					      contents + 2, addr,
-					      val, addend);
-	    contents[addr] &=~ 0x40;
-	    contents[addr] |= (contents[addr + 4] << 1) & 0x40;
-	    contents[addr + 4] &=~ 0x20;
-	    contents[addr + 4] |= hold & 0x20;
-	    break;
-	  }
-
-	case R_PPL16B:
-	case R_PPLN16B:
-	  {
-	    /* The most significant bit is stored in bit 28.  */
-	    bfd_byte hold;
-
-	    hold = contents[addr + 1];
-	    contents[addr + 1] &=~ 0x80;
-	    contents[addr + 1] |= (contents[addr + 3] << 3) & 0x80;
-	    rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
-					      contents, addr,
-					      val, addend);
-	    contents[addr + 3] &= ~0x10;
-	    contents[addr + 3] |= (contents[addr + 1] >> 3) & 0x10;
-	    contents[addr + 1] &=~ 0x80;
-	    contents[addr + 1] |= hold & 0x80;
-	    break;
-	  }
-
-	case R_PPBASE:
-	  /* Parameter RAM is from 0x1000000 to 0x1000800.  */
-	  contents[addr] &=~ 0x3;
-	  if (val >= 0x1000000 && val < 0x1000800)
-	    contents[addr] |= 0x3;
-	  else
-	    contents[addr] |= 0x2;
-	  rstat = bfd_reloc_ok;
-	  break;
-
-	case R_PPLBASE:
-	  /* Parameter RAM is from 0x1000000 to 0x1000800.  */
-	  contents[addr + 2] &= ~0xc0;
-	  if (val >= 0x1000000 && val < 0x1000800)
-	    contents[addr + 2] |= 0xc0;
-	  else
-	    contents[addr + 2] |= 0x80;
-	  rstat = bfd_reloc_ok;
-	  break;
-	}
-
-      switch (rstat)
-	{
-	default:
-	  abort ();
-	case bfd_reloc_ok:
-	  break;
-	case bfd_reloc_outofrange:
-	  _bfd_error_handler
-	    /* xgettext: c-format */
-	    (_("%pB: bad reloc address %#" PRIx64 " in section `%pA'"),
-	     input_bfd, (uint64_t) rel->r_vaddr, input_section);
-	  return FALSE;
-	case bfd_reloc_overflow:
-	  {
-	    const char *name;
-	    char buf[SYMNMLEN + 1];
-
-	    if (symndx == -1)
-	      name = "*ABS*";
-	    else if (h != NULL)
-	      name = NULL;
-	    else
-	      {
-		name = _bfd_coff_internal_syment_name (input_bfd, sym, buf);
-		if (name == NULL)
-		  return FALSE;
-	      }
-
-	    (*info->callbacks->reloc_overflow)
-	      (info, (h ? &h->root : NULL), name, howto->name,
-	       (bfd_vma) 0, input_bfd, input_section,
-	       rel->r_vaddr - input_section->vma);
-	  }
-	}
-    }
-  return TRUE;
-}
-
-#define TIC80COFF 1		/* Customize coffcode.h */
-#undef C_AUTOARG		/* Clashes with TIc80's C_UEXT */
-#undef C_LASTENT		/* Clashes with TIc80's C_STATLAB */
-
-#ifndef bfd_pe_print_pdata
-#define bfd_pe_print_pdata	NULL
-#endif
-
-#include "coffcode.h"
-
-CREATE_LITTLE_COFF_TARGET_VEC (tic80_coff_vec, "coff-tic80", D_PAGED, 0, '_', NULL, COFF_SWAP_TABLE)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-x86_64.c ./bfd/coff-x86_64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-x86_64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-x86_64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for AMD 64 COFF files.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -824,3 +824,76 @@ const bfd_target
 
   COFF_SWAP_TABLE
 };
+
+/* Entry for big object files.  */
+
+#ifdef COFF_WITH_PE_BIGOBJ
+const bfd_target
+  TARGET_SYM_BIG =
+{
+  TARGET_NAME_BIG,
+  bfd_target_coff_flavour,
+  BFD_ENDIAN_LITTLE,		/* Data byte order is little.  */
+  BFD_ENDIAN_LITTLE,		/* Header byte order is little.  */
+
+  (HAS_RELOC | EXEC_P		/* Object flags.  */
+   | HAS_LINENO | HAS_DEBUG
+   | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS),
+
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* Section flags.  */
+#if defined(COFF_WITH_PE)
+   | SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_READONLY | SEC_DEBUGGING
+#endif
+   | SEC_CODE | SEC_DATA | SEC_EXCLUDE ),
+
+#ifdef TARGET_UNDERSCORE
+  TARGET_UNDERSCORE,		/* Leading underscore.  */
+#else
+  0,				/* Leading underscore.  */
+#endif
+  '/',				/* Ar_pad_char.  */
+  15,				/* Ar_max_namelen.  */
+  0,				/* match priority.  */
+
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data.  */
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Hdrs.  */
+
+  /* Note that we allow an object file to be treated as a core file as well.  */
+  {				/* bfd_check_format.  */
+    _bfd_dummy_target,
+    amd64coff_object_p,
+    bfd_generic_archive_p,
+    amd64coff_object_p
+  },
+  {				/* bfd_set_format.  */
+    _bfd_bool_bfd_false_error,
+    coff_mkobject,
+    _bfd_generic_mkarchive,
+    _bfd_bool_bfd_false_error
+  },
+  {				/* bfd_write_contents.  */
+    _bfd_bool_bfd_false_error,
+    coff_write_object_contents,
+    _bfd_write_archive_contents,
+    _bfd_bool_bfd_false_error
+  },
+
+  BFD_JUMP_TABLE_GENERIC (coff),
+  BFD_JUMP_TABLE_COPY (coff),
+  BFD_JUMP_TABLE_CORE (_bfd_nocore),
+  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
+  BFD_JUMP_TABLE_SYMBOLS (coff),
+  BFD_JUMP_TABLE_RELOCS (coff),
+  BFD_JUMP_TABLE_WRITE (coff),
+  BFD_JUMP_TABLE_LINK (coff),
+  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+
+  NULL,
+
+  &bigobj_swap_table
+};
+#endif
\ No newline at end of file
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-z80.c ./bfd/coff-z80.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-z80.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-z80.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Zilog Z80 COFF binaries.
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
    Contributed by Arnold Metselaar <arnold_m@operamail.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -26,39 +26,219 @@
 #include "coff/z80.h"
 #include "coff/internal.h"
 #include "libcoff.h"
+#include "libiberty.h"
 
 #define COFF_DEFAULT_SECTION_ALIGNMENT_POWER 0
 
-static reloc_howto_type r_imm32 =
-HOWTO (R_IMM32, 0, 2, 32, FALSE, 0,
-       complain_overflow_dont, 0, "r_imm32", TRUE, 0xffffffff, 0xffffffff,
-       FALSE);
-
-static reloc_howto_type r_imm24 =
-HOWTO (R_IMM24, 0, 1, 24, FALSE, 0,
-       complain_overflow_dont, 0, "r_imm24", TRUE, 0x00ffffff, 0x00ffffff,
-       FALSE);
-
-static reloc_howto_type r_imm16 =
-HOWTO (R_IMM16, 0, 1, 16, FALSE, 0,
-       complain_overflow_dont, 0, "r_imm16", TRUE, 0x0000ffff, 0x0000ffff,
-       FALSE);
-
-static reloc_howto_type r_imm8 =
-HOWTO (R_IMM8, 0, 0, 8, FALSE, 0,
-       complain_overflow_bitfield, 0, "r_imm8", TRUE, 0x000000ff, 0x000000ff,
-       FALSE);
-
-static reloc_howto_type r_jr =
-HOWTO (R_JR, 0, 0, 8, TRUE, 0,
-       complain_overflow_signed, 0, "r_jr", FALSE, 0, 0xFF,
-       FALSE);
-
-static reloc_howto_type r_off8 =
-HOWTO (R_OFF8, 0, 0, 8, FALSE, 0,
-       complain_overflow_signed, 0,"r_off8", FALSE, 0, 0xff,
-       FALSE);
+typedef struct {
+  bfd_reloc_code_real_type r_type;
+  reloc_howto_type howto;
+} bfd_howto_type;
 
+#define BFD_EMPTY_HOWTO(rt,x) {rt, EMPTY_HOWTO(x)}
+#define BFD_HOWTO(rt,a,b,c,d,e,f,g,h,i,j,k,l,m) {rt, HOWTO(a,b,c,d,e,f,g,h,i,j,k,l,m)}
+
+static bfd_howto_type howto_table[] =
+{
+  BFD_EMPTY_HOWTO (BFD_RELOC_NONE, 0),
+
+  BFD_HOWTO (BFD_RELOC_32,
+     R_IMM32,		/* type */
+     0,			/* rightshift */
+     2,			/* size (0 = byte, 1 = short, 2 = long) */
+     32,		/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_bitfield, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_imm32",		/* name */
+     FALSE,		/* partial_inplace */
+     0xffffffff,	/* src_mask */
+     0xffffffff,	/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_24,
+     R_IMM24,		/* type */
+     0,			/* rightshift */
+     1,			/* size (0 = byte, 1 = short, 2 = long) */
+     24,		/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_bitfield, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_imm24",		/* name */
+     FALSE,		/* partial_inplace */
+     0x00ffffff,	/* src_mask */
+     0x00ffffff,	/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_16,
+     R_IMM16,		/* type */
+     0,			/* rightshift */
+     1,			/* size (0 = byte, 1 = short, 2 = long) */
+     16,		/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_bitfield, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_imm16",		/* name */
+     FALSE,		/* partial_inplace */
+     0x0000ffff,	/* src_mask */
+     0x0000ffff,	/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_8,
+     R_IMM8,		/* type */
+     0,			/* rightshift */
+     0,			/* size (0 = byte, 1 = short, 2 = long) */
+     8,			/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_bitfield, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_imm8",		/* name */
+     FALSE,		/* partial_inplace */
+     0x000000ff,	/* src_mask */
+     0x000000ff,	/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_8_PCREL,
+     R_JR,		/* type */
+     0,			/* rightshift */
+     0,			/* size (0 = byte, 1 = short, 2 = long) */
+     8,			/* bitsize */
+     TRUE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_signed, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_jr",		/* name */
+     FALSE,		/* partial_inplace */
+     0,			/* src_mask */
+     0xFF,		/* dst_mask */
+     TRUE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_Z80_DISP8,
+     R_OFF8,		/* type */
+     0,			/* rightshift */
+     0,			/* size (0 = byte, 1 = short, 2 = long) */
+     8,			/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_signed, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_off8",		/* name */
+     FALSE,		/* partial_inplace */
+     0,			/* src_mask */
+     0xff,		/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_Z80_BYTE0,
+     R_BYTE0,		/* type */
+     0,			/* rightshift */
+     0,			/* size (0 = byte, 1 = short, 2 = long) */
+     8,			/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_dont, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_byte0",		/* name */
+     FALSE,		/* partial_inplace */
+     0,			/* src_mask */
+     0xff,		/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_Z80_BYTE1,
+     R_BYTE1,		/* type */
+     8,			/* rightshift */
+     0,			/* size (0 = byte, 1 = short, 2 = long) */
+     8,			/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_dont, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_byte1",		/* name */
+     FALSE,		/* partial_inplace */
+     0,			/* src_mask */
+     0xff,		/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_Z80_BYTE2,
+     R_BYTE2,		/* type */
+     16,		/* rightshift */
+     0,			/* size (0 = byte, 1 = short, 2 = long) */
+     8,			/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_dont, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_byte2",		/* name */
+     FALSE,		/* partial_inplace */
+     0,			/* src_mask */
+     0xff,		/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_Z80_BYTE3,
+     R_BYTE3,		/* type */
+     24,		/* rightshift */
+     0,			/* size (0 = byte, 1 = short, 2 = long) */
+     8,			/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_dont, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_byte3",		/* name */
+     FALSE,		/* partial_inplace */
+     0,			/* src_mask */
+     0xff,		/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_Z80_WORD0,
+     R_WORD0,		/* type */
+     0,			/* rightshift */
+     0,			/* size (0 = byte, 1 = short, 2 = long) */
+     16,		/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_dont, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_word0",		/* name */
+     FALSE,		/* partial_inplace */
+     0,			/* src_mask */
+     0xffff,		/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_Z80_WORD1,
+     R_WORD1,		/* type */
+     16,		/* rightshift */
+     0,			/* size (0 = byte, 1 = short, 2 = long) */
+     16,		/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_dont, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_word1",		/* name */
+     FALSE,		/* partial_inplace */
+     0,			/* src_mask */
+     0xffff,		/* dst_mask */
+     FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_Z80_16_BE,
+     R_IMM16BE,		/* type */
+     0,			/* rightshift */
+     1,			/* size (0 = byte, 1 = short, 2 = long) */
+     16,		/* bitsize */
+     FALSE,		/* pc_relative */
+     0,			/* bitpos */
+     complain_overflow_bitfield, /* complain_on_overflow */
+     0,			/* special_function */
+     "r_imm16be",	/* name */
+     FALSE,		/* partial_inplace */
+     0x0000ffff,	/* src_mask */
+     0x0000ffff,	/* dst_mask */
+     FALSE),		/* pcrel_offset */
+};
+
+#define NUM_HOWTOS ARRAY_SIZE (howto_table)
 
 #define BADMAG(x) Z80BADMAG(x)
 #define Z80 1			/* Customize coffcode.h.  */
@@ -74,34 +254,19 @@ HOWTO (R_OFF8, 0, 0, 8, FALSE, 0,
   dst->r_stuff[1] = 'C';
 
 /* Code to turn a r_type into a howto ptr, uses the above howto table.  */
-
 static void
 rtype2howto (arelent *internal, struct internal_reloc *dst)
 {
-  switch (dst->r_type)
+  unsigned i;
+  for (i = 0; i < NUM_HOWTOS; i++)
     {
-    default:
-      internal->howto = NULL;
-      break;
-    case R_IMM8:
-      internal->howto = &r_imm8;
-      break;
-    case R_IMM16:
-      internal->howto = &r_imm16;
-      break;
-    case R_IMM24:
-      internal->howto = &r_imm24;
-      break;
-    case R_IMM32:
-      internal->howto = &r_imm32;
-      break;
-    case R_JR:
-      internal->howto = &r_jr;
-      break;
-    case R_OFF8:
-      internal->howto = &r_off8;
-      break;
+      if (howto_table[i].howto.type == dst->r_type)
+        {
+          internal->howto = &howto_table[i].howto;
+          return;
+        }
     }
+  internal->howto = NULL;
 }
 
 #define RTYPE2HOWTO(internal, relocentry) rtype2howto (internal, relocentry)
@@ -110,35 +275,23 @@ static reloc_howto_type *
 coff_z80_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
 			    bfd_reloc_code_real_type code)
 {
-  switch (code)
-    {
-    case BFD_RELOC_8:		return & r_imm8;
-    case BFD_RELOC_16:		return & r_imm16;
-    case BFD_RELOC_24:		return & r_imm24;
-    case BFD_RELOC_32:		return & r_imm32;
-    case BFD_RELOC_8_PCREL:	return & r_jr;
-    case BFD_RELOC_Z80_DISP8:	return & r_off8;
-    default:			BFD_FAIL ();
-      return NULL;
-    }
+  unsigned i;
+  for (i = 0; i < NUM_HOWTOS; i++)
+    if (howto_table[i].r_type == code)
+      return &howto_table[i].howto;
+
+  BFD_FAIL ();
+  return NULL;
 }
 
 static reloc_howto_type *
 coff_z80_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
 			    const char *r_name)
 {
-  if (strcasecmp (r_imm8.name, r_name) == 0)
-    return &r_imm8;
-  if (strcasecmp (r_imm16.name, r_name) == 0)
-    return &r_imm16;
-  if (strcasecmp (r_imm24.name, r_name) == 0)
-    return &r_imm24;
-  if (strcasecmp (r_imm32.name, r_name) == 0)
-    return &r_imm32;
-  if (strcasecmp (r_jr.name, r_name) == 0)
-    return &r_jr;
-  if (strcasecmp (r_off8.name, r_name) == 0)
-    return &r_off8;
+  unsigned i;
+  for (i = 0; i < NUM_HOWTOS; i++)
+    if (strcasecmp(howto_table[i].howto.name, r_name) == 0)
+      return &howto_table[i].howto;
 
   return NULL;
 }
@@ -180,14 +333,15 @@ extra_case (bfd *in_abfd,
 	    unsigned int *dst_ptr)
 {
   asection * input_section = link_order->u.indirect.section;
-  int val;
+  int val = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
 
   switch (reloc->howto->type)
     {
     case R_OFF8:
-	val = bfd_coff_reloc16_get_value (reloc, link_info,
-					   input_section);
-	if (val>127 || val<-128) /* Test for overflow.  */
+      if (reloc->howto->partial_inplace)
+        val += (signed char)(bfd_get_8 ( in_abfd, data+*src_ptr)
+                             & reloc->howto->src_mask);
+      if (val>127 || val<-128) /* Test for overflow.  */
 	  (*link_info->callbacks->reloc_overflow)
 	    (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
 	     reloc->howto->name, reloc->addend, input_section->owner,
@@ -198,26 +352,55 @@ extra_case (bfd *in_abfd,
 	(*src_ptr) += 1;
       break;
 
+    case R_BYTE3:
+      bfd_put_8 (in_abfd, val >> 24, data + *dst_ptr);
+      (*dst_ptr) += 1;
+      (*src_ptr) += 1;
+      break;
+
+    case R_BYTE2:
+      bfd_put_8 (in_abfd, val >> 16, data + *dst_ptr);
+      (*dst_ptr) += 1;
+      (*src_ptr) += 1;
+      break;
+
+    case R_BYTE1:
+      bfd_put_8 (in_abfd, val >> 8, data + *dst_ptr);
+      (*dst_ptr) += 1;
+      (*src_ptr) += 1;
+      break;
+
     case R_IMM8:
-      val = bfd_get_8 ( in_abfd, data+*src_ptr)
-	+ bfd_coff_reloc16_get_value (reloc, link_info, input_section);
+      if (reloc->howto->partial_inplace)
+        val += bfd_get_8 ( in_abfd, data+*src_ptr) & reloc->howto->src_mask;
+      /* Fall through.  */
+    case R_BYTE0:
       bfd_put_8 (in_abfd, val, data + *dst_ptr);
       (*dst_ptr) += 1;
       (*src_ptr) += 1;
       break;
 
+    case R_WORD1:
+      bfd_put_16 (in_abfd, val >> 16, data + *dst_ptr);
+      (*dst_ptr) += 2;
+      (*src_ptr) += 2;
+      break;
+
     case R_IMM16:
-      val = bfd_get_16 ( in_abfd, data+*src_ptr)
-	+ bfd_coff_reloc16_get_value (reloc, link_info, input_section);
+      if (reloc->howto->partial_inplace)
+        val += bfd_get_16 ( in_abfd, data+*src_ptr) & reloc->howto->src_mask;
+      /* Fall through.  */
+    case R_WORD0:
       bfd_put_16 (in_abfd, val, data + *dst_ptr);
       (*dst_ptr) += 2;
       (*src_ptr) += 2;
       break;
 
     case R_IMM24:
-      val = bfd_get_16 ( in_abfd, data+*src_ptr)
-	+ (bfd_get_8 ( in_abfd, data+*src_ptr+2) << 16)
-	+ bfd_coff_reloc16_get_value (reloc, link_info, input_section);
+      if (reloc->howto->partial_inplace)
+        val += (bfd_get_16 ( in_abfd, data+*src_ptr)
+            + (bfd_get_8 ( in_abfd, data+*src_ptr+2) << 16))
+            & reloc->howto->src_mask;
       bfd_put_16 (in_abfd, val, data + *dst_ptr);
       bfd_put_8 (in_abfd, val >> 16, data + *dst_ptr+2);
       (*dst_ptr) += 3;
@@ -225,8 +408,8 @@ extra_case (bfd *in_abfd,
       break;
 
     case R_IMM32:
-      val = bfd_get_32 ( in_abfd, data+*src_ptr)
-	+ bfd_coff_reloc16_get_value (reloc, link_info, input_section);
+      if (reloc->howto->partial_inplace)
+        val += bfd_get_32 ( in_abfd, data+*src_ptr) & reloc->howto->src_mask;
       bfd_put_32 (in_abfd, val, data + *dst_ptr);
       (*dst_ptr) += 4;
       (*src_ptr) += 4;
@@ -234,15 +417,13 @@ extra_case (bfd *in_abfd,
 
     case R_JR:
       {
-	bfd_vma dst = bfd_coff_reloc16_get_value (reloc, link_info,
-						  input_section);
+        if (reloc->howto->partial_inplace)
+          val += (signed char)(bfd_get_8 ( in_abfd, data+*src_ptr) 
+                               & reloc->howto->src_mask);
 	bfd_vma dot = (*dst_ptr
 		       + input_section->output_offset
 		       + input_section->output_section->vma);
-	int gap = dst - dot - 1;  /* -1, Since the offset is relative
-				     to the value of PC after reading
-				     the offset.  */
-
+	int gap = val - dot;
 	if (gap >= 128 || gap < -128)
 	  (*link_info->callbacks->reloc_overflow)
 	    (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
@@ -255,11 +436,32 @@ extra_case (bfd *in_abfd,
 	break;
       }
 
+    case R_IMM16BE:
+      if (reloc->howto->partial_inplace)
+	val += (bfd_get_8 ( in_abfd, data+*src_ptr+0) * 0x100 +
+		bfd_get_8 ( in_abfd, data+*src_ptr+1)) & reloc->howto->src_mask;
+      
+      bfd_put_8 (in_abfd, val >> 8, data + *dst_ptr+0);
+      bfd_put_8 (in_abfd, val, data + *dst_ptr+1);
+      (*dst_ptr) += 2;
+      (*src_ptr) += 2;
+      break;
+
     default:
       abort ();
     }
 }
 
+static int
+z80_is_local_label_name (bfd *        abfd ATTRIBUTE_UNUSED,
+                         const char * name)
+{
+  return (name[0] == '.' && name[1] == 'L') ||
+         _bfd_coff_is_local_label_name (abfd, name);
+}
+
+#define coff_bfd_is_local_label_name z80_is_local_label_name
+
 #define coff_reloc16_extra_cases    extra_case
 #define coff_bfd_reloc_type_lookup  coff_z80_reloc_type_lookup
 #define coff_bfd_reloc_name_lookup coff_z80_reloc_name_lookup
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-z8k.c ./bfd/coff-z8k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/coff-z8k.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/coff-z8k.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Zilog Z800n COFF binaries.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
    Written by Steve Chamberlain, <sac@cygnus.com>.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/compress.c ./bfd/compress.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/compress.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/compress.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Compressed section support (intended for debug sections).
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -255,6 +255,9 @@ bfd_get_full_section_contents (bfd *abfd
 	      /* PR 24753: Linker created sections can be larger than
 		 the file size, eg if they are being used to hold stubs.  */
 	      && (bfd_section_flags (sec) & SEC_LINKER_CREATED) == 0
+	      /* PR 24753: Sections which have no content should also be
+		 excluded as they contain no size on disk.  */
+	      && (bfd_section_flags (sec) & SEC_HAS_CONTENTS) != 0
 	      /* The MMO file format supports its own special compression
 		 technique, but it uses COMPRESS_SECTION_NONE when loading
 		 a section's contents.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/config.bfd ./bfd/config.bfd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/config.bfd	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/config.bfd	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 # config.bfd
 #
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -53,7 +53,8 @@ case $targ in
     echo "*** Use or1k-*-elf or or1k-*-linux as the target instead" >&2
     exit 1
     ;;
- c30-*-*aout* | tic30-*-*aout* | \
+ arm*-*-symbianelf* | \
+ ia64*-*-* | \
  null)
     if test "x$enable_obsolete" != xyes; then
       echo "*** Configuration $targ is obsolete." >&2
@@ -85,6 +86,7 @@ case $targ in
  arm-*-oabi | \
  arm-*-riscix* | \
  arm-epoc-pe* | \
+ c30-*-*aout* | tic30-*-*aout* | \
  cr16c-*-* | \
  h8300*-*-coff | \
  h8500*-*-coff | \
@@ -141,6 +143,7 @@ case $targ in
  mips*-sgi-* | \
  mips*el-*-rtems* | \
  powerpc-*-lynxos* | powerpc-*-windiss* | \
+ powerpcle-*-pe | powerpcle-*-winnt* | powerpcle-*-cygwin* | \
  sh*-*-symbianelf* | sh5*-*-* | sh64*-*-* | \
  sparc*-*-*aout* | \
  sparc*-*-chorus* | \
@@ -151,6 +154,7 @@ case $targ in
  vax-*-bsd* | vax-*-ultrix* | vax-*-vms* | \
  w65-*-* | \
  we32k-*-* | \
+ xc16x-*-* | \
  null)
     echo "*** Configuration $targ is obsolete." >&2
     echo "*** Support has been REMOVED." >&2
@@ -207,7 +211,7 @@ wasm32)		 targ_archs=bfd_wasm32_arch ;;
 x86_64*)	 targ_archs=bfd_i386_arch ;;
 xtensa*)	 targ_archs=bfd_xtensa_arch ;;
 xgate)		 targ_archs=bfd_xgate_arch ;;
-z80|r800)	 targ_archs=bfd_z80_arch ;;
+z80*|r800|z180|gbz80|ez80*)	 targ_archs=bfd_z80_arch ;;
 z8k*)		 targ_archs=bfd_z8k_arch ;;
 *)		 targ_archs=bfd_${targ_cpu}_arch ;;
 esac
@@ -338,15 +342,11 @@ case "${targ}" in
     ;;
   arm-*-nacl*)
     targ_defvec=arm_elf32_nacl_le_vec
-    targ_selvecs="arm_elf32_nacl_be_vec i386_elf32_nacl_vec"
-    targ64_selvecs="x86_64_elf32_nacl_vec x86_64_elf64_nacl_vec"
-    targ_archs="$targ_archs bfd_i386_arch"
+    targ_selvecs="arm_elf32_nacl_be_vec"
     ;;
   armeb-*-nacl*)
     targ_defvec=arm_elf32_nacl_be_vec
-    targ_selvecs="arm_elf32_nacl_le_vec i386_elf32_nacl_vec"
-    targ64_selvecs="x86_64_elf32_nacl_vec x86_64_elf64_nacl_vec"
-    targ_archs="$targ_archs bfd_i386_arch"
+    targ_selvecs="arm_elf32_nacl_le_vec"
     ;;
   armeb-*-netbsdelf*)
     targ_defvec=arm_elf32_be_vec
@@ -413,9 +413,6 @@ case "${targ}" in
     targ_underscore=yes
     ;;
 
-  c30-*-*aout* | tic30-*-*aout*)
-    targ_defvec=tic30_aout_vec
-    ;;
   c30-*-*coff* | tic30-*-*coff*)
     targ_defvec=tic30_coff_vec
     ;;
@@ -637,12 +634,6 @@ case "${targ}" in
     targ_selvecs="iamcu_elf32_vec i386_pei_vec"
     targ64_selvecs="x86_64_elf64_vec x86_64_elf32_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
     ;;
-  i[3-7]86-*-nacl*)
-    targ_defvec=i386_elf32_nacl_vec
-    targ_selvecs="arm_elf32_nacl_be_vec arm_elf32_nacl_le_vec"
-    targ64_selvecs="x86_64_elf64_nacl_vec x86_64_elf32_nacl_vec"
-    targ_archs="$targ_archs bfd_arm_arch"
-    ;;
   i[3-7]86-*-redox*)
     targ_defvec=i386_elf32_vec
     targ_selvecs=
@@ -693,15 +684,9 @@ case "${targ}" in
     targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
     want64=true
     ;;
-  x86_64-*-nacl*)
-    targ_defvec=x86_64_elf32_nacl_vec
-    targ_selvecs="i386_elf32_nacl_vec x86_64_elf64_nacl_vec arm_elf32_nacl_be_vec arm_elf32_nacl_le_vec"
-    targ_archs="$targ_archs bfd_arm_arch"
-    want64=true
-    ;;
   x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin)
     targ_defvec=x86_64_pe_vec
-    targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_be_vec x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
+    targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_big_vec x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
     want64=true
     targ_underscore=no
     ;;
@@ -751,7 +736,7 @@ case "${targ}" in
     ;;
   i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe)
     targ_defvec=i386_pe_vec
-    targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
+    targ_selvecs="i386_pe_vec i386_pe_big_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
     targ_underscore=yes
     ;;
   i[3-7]86-*-vxworks*)
@@ -1162,10 +1147,6 @@ case "${targ}" in
     targ_selvecs="rs6000_xcoff_vec powerpc_elf32_vec powerpc_boot_vec"
     targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
     ;;
-  powerpcle-*-pe | powerpcle-*-winnt* | powerpcle-*-cygwin*)
-    targ_defvec=powerpc_pe_le_vec
-    targ_selvecs="powerpc_pei_le_vec powerpc_pei_vec powerpc_pe_le_vec powerpc_pe_vec"
-    ;;
 
   pru-*-*)
     targ_defvec=pru_elf32_vec
@@ -1333,11 +1314,6 @@ case "${targ}" in
     targ_selvecs="tic6x_elf32_linux_be_vec tic6x_elf32_le_vec tic6x_elf32_be_vec"
     ;;
 
-  tic80*-*-*)
-    targ_defvec=tic80_coff_vec
-    targ_underscore=yes
-    ;;
-
 #ifdef BFD64
   tilegx-*-*)
     targ_defvec=tilegx_elf64_le_vec
@@ -1392,6 +1368,10 @@ case "${targ}" in
     targ_selvecs="wasm_vec"
     ;;
 
+  xc16x-*-elf)
+    targ_defvec=xc16x_elf32_vec
+    ;;
+
   xgate-*-*)
     targ_defvec=xgate_elf32_vec
     targ_selvecs="xgate_elf32_vec"
@@ -1405,15 +1385,17 @@ case "${targ}" in
     targ_defvec=xtensa_elf32_le_vec
     targ_selvecs=xtensa_elf32_be_vec
     ;;
- xc16x-*-elf)
-    targ_defvec=xc16x_elf32_vec
-    ;;
 
-  z80-*-*)
+  z80-*-coff)
     targ_defvec=z80_coff_vec
     targ_underscore=no
     ;;
 
+  z80-*-elf)
+    targ_defvec=z80_elf32_vec
+    targ_underscore=no
+    ;;
+
   z8k*-*-*)
     targ_defvec=z8k_coff_vec
     targ_underscore=yes
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/config.in ./bfd/config.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/config.in	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/config.in	2021-05-21 01:57:23.000000000 +0000
@@ -143,6 +143,9 @@
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
 /* Define to 1 if the system has the type `long double'. */
 #undef HAVE_LONG_DOUBLE
 
@@ -416,3 +419,6 @@
 
 /* Define to 1 if you need to in order for `stat' and other things to work. */
 #undef _POSIX_SOURCE
+
+/* Use structured /proc on Solaris. */
+#undef _STRUCTURED_PROC
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/configure ./bfd/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/configure	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/configure	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for bfd 2.33.50.
+# Generated by GNU Autoconf 2.69 for bfd 2.35.50.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='bfd'
 PACKAGE_TARNAME='bfd'
-PACKAGE_VERSION='2.33.50'
-PACKAGE_STRING='bfd 2.33.50'
+PACKAGE_VERSION='2.35.50'
+PACKAGE_STRING='bfd 2.35.50'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -699,6 +699,7 @@ PKGVERSION
 DEBUGDIR
 PLUGINS_FALSE
 PLUGINS_TRUE
+LARGEFILE_CPPFLAGS
 OTOOL64
 OTOOL
 LIPO
@@ -1391,7 +1392,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures bfd 2.33.50 to adapt to many kinds of systems.
+\`configure' configures bfd 2.35.50 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1462,7 +1463,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of bfd 2.33.50:";;
+     short | recursive ) echo "Configuration of bfd 2.35.50:";;
    esac
   cat <<\_ACEOF
 
@@ -1589,7 +1590,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-bfd configure 2.33.50
+bfd configure 2.35.50
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2237,7 +2238,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by bfd $as_me 2.33.50, which was
+It was created by bfd $as_me 2.35.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -4187,7 +4188,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='bfd'
- VERSION='2.33.50'
+ VERSION='2.35.50'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -11728,7 +11729,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11731 "configure"
+#line 11732 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11834,7 +11835,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11837 "configure"
+#line 11838 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12186,15 +12187,56 @@ fi
 
 
 case "${host}" in
-  sparc-*-solaris*|i[3-7]86-*-solaris*)
-    # On native 32bit sparc and ia32 solaris, large-file and procfs support
-    # are mutually exclusive; and without procfs support, the bfd/ elf module
-    # cannot provide certain routines such as elfcore_write_prpsinfo
-    # or elfcore_write_prstatus.  So unless the user explicitly requested
-    # large-file support through the --enable-largefile switch, disable
-    # large-file support in favor of procfs support.
-    test "${target}" = "${host}" -a "x$plugins" = xno \
-      && : ${enable_largefile="no"}
+  sparc-*-solaris*|i?86-*-solaris*)
+    # On native 32-bit Solaris/SPARC and x86, large-file and procfs support
+    # were mutually exclusive until Solaris 11.3.  Without procfs support,
+    # the bfd/ elf module cannot provide certain routines such as
+    # elfcore_write_prpsinfo or elfcore_write_prstatus.  So unless the user
+    # explicitly requested large-file support through the
+    # --enable-largefile switch, disable large-file support in favor of
+    # procfs support.
+    #
+    # Check if <sys/procfs.h> is incompatible with large-file support.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#define _STRUCTURED_PROC 1
+#include <sys/procfs.h>
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  acx_cv_procfs_lfs=yes
+else
+  acx_cv_procfs_lfs=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    #
+    # Forcefully disable large-file support only if necessary, gdb is in
+    # tree and enabled.
+    if test "${target}" = "${host}" -a "$acx_cv_procfs_lfs" = no \
+         -a -d $srcdir/../gdb -a "$enable_gdb" != no; then
+      : ${enable_largefile="no"}
+      if test "$plugins" = yes; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+plugin support disabled; require large-file support which is incompatible with GDB." >&5
+$as_echo "$as_me: WARNING:
+plugin support disabled; require large-file support which is incompatible with GDB." >&2;}
+	plugins=no
+      fi
+    fi
+    #
+    # Explicitly undef _FILE_OFFSET_BITS if enable_largefile=no for the
+    # benefit of g++ 9+ which predefines it on Solaris.
+    if test "$enable_largefile" = no; then
+      LARGEFILE_CPPFLAGS="-U_FILE_OFFSET_BITS"
+
+    fi
     ;;
 esac
 
@@ -12400,6 +12442,30 @@ fi
 
 
 
+case "${target}" in
+    hppa*64*-*-* | vax-*-netbsdelf*) ;;
+    *-*-*aout* | i[3-7]86-*-bsd* | i[3-7]86-*-msdos* | ns32k-*-* | \
+    pdp11-*-* | vax-*-*bsd*)
+	if test "$plugins" = "yes"; then
+	    if test "${enable_plugins+set}" = set; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Enabling plugins for AOUT is experimental" >&5
+$as_echo "$as_me: WARNING: Enabling plugins for AOUT is experimental" >&2;}
+	    else
+		plugins=no
+	    fi
+	fi ;;
+    hppa*-*-hpux* | *-*-*vms* | \
+    powerpc*-*-aix* | powerpc-*-beos* | powerpc-*-macos* | rs6000-*-*)
+	if test "$plugins" = "yes"; then
+	    if test "${enable_plugins+set}" = set; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Enabling plugins may result in ar creating non-standard archives for ${target}" >&5
+$as_echo "$as_me: WARNING: Enabling plugins may result in ar creating non-standard archives for ${target}" >&2;}
+	    else
+		plugins=no
+	    fi
+	fi ;;
+esac
+
  if test "$plugins" = "yes"; then
   PLUGINS_TRUE=
   PLUGINS_FALSE='#'
@@ -13465,20 +13531,9 @@ fi
 fi
 
 
-for ac_header in alloca.h stddef.h string.h strings.h stdlib.h time.h unistd.h wchar.h wctype.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-for ac_header in fcntl.h sys/file.h sys/time.h sys/stat.h sys/resource.h
+for ac_header in alloca.h fcntl.h limits.h stddef.h stdlib.h string.h \
+		 strings.h sys/file.h sys/resource.h sys/stat.h sys/time.h \
+		 time.h unistd.h wchar.h wctype.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -14673,7 +14728,7 @@ coff="cofflink.lo $coffgen"
 ecoff="ecofflink.lo $coffgen"
 xcoff="xcofflink.lo $coffgen"
 
-elfxx_x86="elfxx-x86.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo"
+elfxx_x86="elfxx-x86.lo elf-ifunc.lo elf-vxworks.lo"
 for vec in $selvecs
 do
     target_size=32
@@ -14758,12 +14813,12 @@ do
     i386_coff_lynx_vec)		 tb="$tb cf-i386lynx.lo lynx-core.lo $coff" ;;
     i386_elf32_vec)		 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     i386_elf32_fbsd_vec)	 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
-    i386_elf32_nacl_vec)	 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     i386_elf32_sol2_vec)	 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     i386_elf32_vxworks_vec)	 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     i386_mach_o_vec)		 tb="$tb mach-o-i386.lo" ;;
     i386_msdos_vec)		 tb="$tb i386msdos.lo" ;;
     i386_pe_vec)		 tb="$tb pe-i386.lo peigen.lo $coff" ;;
+    i386_pe_big_vec)		 tb="$tb pe-i386.lo peigen.lo $coff" ;;
     i386_pei_vec)		 tb="$tb pei-i386.lo peigen.lo $coff" ;;
     iamcu_elf32_vec)		 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     ia64_elf32_be_vec)		 tb="$tb elf32-ia64.lo elfxx-ia64.lo elf32.lo $elf" ;;
@@ -14775,10 +14830,10 @@ do
     ia64_pei_vec)		 tb="$tb pei-ia64.lo pepigen.lo $coff"; target_size=64 ;;
     ip2k_elf32_vec)		 tb="$tb elf32-ip2k.lo elf32.lo $elf" ;;
     iq2000_elf32_vec)		 tb="$tb elf32-iq2000.lo elf32.lo $elf" ;;
-    k1om_elf64_vec)		 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
-    k1om_elf64_fbsd_vec)	 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
-    l1om_elf64_vec)		 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
-    l1om_elf64_fbsd_vec)	 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    k1om_elf64_vec)		 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
+    k1om_elf64_fbsd_vec)	 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
+    l1om_elf64_vec)		 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
+    l1om_elf64_fbsd_vec)	 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     lm32_elf32_vec)		 tb="$tb elf32-lm32.lo elf32.lo $elf" ;;
     lm32_elf32_fdpic_vec)	 tb="$tb elf32-lm32.lo elf32.lo $elf" ;;
     m32c_elf32_vec)		 tb="$tb elf32-m32c.lo elf32.lo $elf" ;;
@@ -14859,10 +14914,6 @@ do
     powerpc_elf64_vec)		 tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
     powerpc_elf64_le_vec)	 tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
     powerpc_elf64_fbsd_vec)	 tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
-    powerpc_pe_vec)		 tb="$tb pe-ppc.lo peigen.lo $coff" ;;
-    powerpc_pe_le_vec)		 tb="$tb pe-ppc.lo peigen.lo $coff" ;;
-    powerpc_pei_vec)		 tb="$tb pei-ppc.lo peigen.lo $coff" ;;
-    powerpc_pei_le_vec)		 tb="$tb pei-ppc.lo peigen.lo $coff" ;;
     powerpc_xcoff_vec)		 tb="$tb coff-rs6000.lo $xcoff" ;;
     pru_elf32_vec)		 tb="$tb elf32-pru.lo elf32.lo $elf" ;;
     riscv_elf32_vec)		 tb="$tb elf32-riscv.lo elfxx-riscv.lo elf32.lo $elf" ;;
@@ -14877,8 +14928,8 @@ do
     rx_elf32_linux_le_vec)	 tb="$tb elf32-rx.lo elf32.lo $elf" ;;
     s390_elf32_vec)		 tb="$tb elf32-s390.lo elf32.lo $elf" ;;
     s390_elf64_vec)		 tb="$tb elf64-s390.lo elf64.lo $elf"; target_size=64 ;;
-    score_elf32_be_vec)		 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64 ;;
-    score_elf32_le_vec)		 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64 ;;
+    score_elf32_be_vec)		 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo elf64.lo $elf"; want64=true; target_size=64 ;;
+    score_elf32_le_vec)		 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo elf64.lo $elf"; want64=true; target_size=64 ;;
     sh_coff_vec)		 tb="$tb coff-sh.lo $coff" ;;
     sh_coff_le_vec)		 tb="$tb coff-sh.lo $coff" ;;
     sh_coff_small_vec)		 tb="$tb coff-sh.lo $coff" ;;
@@ -14903,7 +14954,6 @@ do
     sparc_elf64_sol2_vec)	 tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
     spu_elf32_vec)		 tb="$tb elf32-spu.lo elf32.lo $elf" ;;
     sym_vec)			 tb="$tb xsym.lo" ;;
-    tic30_aout_vec)		 tb="$tb aout-tic30.lo" ;;
     tic30_coff_vec)		 tb="$tb coff-tic30.lo $coffgen" ;;
     tic4x_coff0_vec)		 tb="$tb coff-tic4x.lo $coffgen" ;;
     tic4x_coff0_beh_vec)	 tb="$tb coff-tic4x.lo $coffgen" ;;
@@ -14923,7 +14973,6 @@ do
     tic6x_elf32_c6000_le_vec)	 tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_linux_be_vec)	 tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_linux_le_vec)	 tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
-    tic80_coff_vec)		 tb="$tb coff-tic80.lo $coff" ;;
     tilegx_elf32_be_vec)	 tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;;
     tilegx_elf32_le_vec)	 tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;;
     tilegx_elf64_be_vec)	 tb="$tb elf64-tilegx.lo elfxx-tilegx.lo elf64.lo $elf" ; target_size=64 ;;
@@ -14940,15 +14989,13 @@ do
     wasm32_elf32_vec)            tb="$tb elf32-wasm32.lo elf32.lo $elf" ;;
     x86_64_coff_vec)		 tb="$tb coff-x86_64.lo $coff"; target_size=64 ;;
     x86_64_elf32_vec)		 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo elf32.lo $elf"; target_size=64 ;;
-    x86_64_elf32_nacl_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo elf32.lo $elf"; target_size=64 ;;
     x86_64_elf64_vec)		 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
     x86_64_elf64_cloudabi_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
     x86_64_elf64_fbsd_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
-    x86_64_elf64_nacl_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
     x86_64_elf64_sol2_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
     x86_64_mach_o_vec)		 tb="$tb mach-o-x86-64.lo" ;;
     x86_64_pe_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
-    x86_64_pe_be_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
+    x86_64_pe_big_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
     x86_64_pei_vec)		 tb="$tb pei-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
     xc16x_elf32_vec)		 tb="$tb elf32-xc16x.lo elf32.lo $elf" ;;
     xgate_elf32_vec)		 tb="$tb elf32-xgate.lo elf32.lo $elf" ;;
@@ -14956,6 +15003,7 @@ do
     xtensa_elf32_be_vec)	 tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
     xtensa_elf32_le_vec)	 tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
     z80_coff_vec)		 tb="$tb coff-z80.lo reloc16.lo $coffgen" ;;
+    z80_elf32_vec)		 tb="$tb elf32-z80.lo elf32.lo $elf" ;;
     z8k_coff_vec)		 tb="$tb coff-z8k.lo reloc16.lo $coff" ;;
 
     # These appear out of order in targets.c
@@ -15115,7 +15163,7 @@ if test "${target}" = "${host}"; then
 	;;
   arm-*-freebsd* | arm-*-kfreebsd*-gnu)
 	COREFILE='' ;;
-  arm-*-netbsd* | arm-*-openbsd*)
+  arm*-*-netbsd* | arm-*-openbsd*)
 	COREFILE=netbsd-core.lo
 	;;
   arm-*-riscix)		COREFILE=trad-core.lo ;;
@@ -15176,7 +15224,7 @@ if test "${target}" = "${host}"; then
 	;;
   i[3-7]86-*-isc*)	COREFILE=trad-core.lo ;;
   i[3-7]86-*-aix*)	COREFILE=aix386-core.lo ;;
-  mips-*-netbsd* | mips*-*-openbsd*)
+  mips*-*-netbsd* | mips*-*-openbsd*)
 	COREFILE=netbsd-core.lo
 	;;
   mips-sgi-irix4*)	COREFILE=irix-core.lo ;;
@@ -15293,7 +15341,10 @@ rm -f core conftest.err conftest.$ac_obj
 
   # ELF corefile support has several flavors, but all of
   # them use something called <sys/procfs.h>
-  for ac_header in sys/procfs.h
+
+$as_echo "#define _STRUCTURED_PROC 1" >>confdefs.h
+
+ for ac_header in sys/procfs.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "sys/procfs.h" "ac_cv_header_sys_procfs_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_procfs_h" = xyes; then :
@@ -15306,7 +15357,8 @@ fi
 done
 
   if test "$ac_cv_header_sys_procfs_h" = yes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prstatus_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prstatus_t in sys/procfs.h" >&5
 $as_echo_n "checking for prstatus_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_prstatus_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15315,8 +15367,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15343,7 +15393,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prstatus_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_prstatus_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prstatus32_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prstatus32_t in sys/procfs.h" >&5
 $as_echo_n "checking for prstatus32_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_prstatus32_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15352,8 +15403,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15380,7 +15429,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prstatus32_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_prstatus32_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prstatus_t.pr_who in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prstatus_t.pr_who in sys/procfs.h" >&5
 $as_echo_n "checking for prstatus_t.pr_who in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15389,8 +15439,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15417,7 +15465,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prstatus32_t.pr_who in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prstatus32_t.pr_who in sys/procfs.h" >&5
 $as_echo_n "checking for prstatus32_t.pr_who in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15426,8 +15475,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15454,7 +15501,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pstatus_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pstatus_t in sys/procfs.h" >&5
 $as_echo_n "checking for pstatus_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_pstatus_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15463,8 +15511,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15491,7 +15537,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_pstatus_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_pstatus_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pxstatus_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pxstatus_t in sys/procfs.h" >&5
 $as_echo_n "checking for pxstatus_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_pxstatus_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15500,8 +15547,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15528,7 +15573,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_pxstatus_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_pxstatus_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pstatus32_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pstatus32_t in sys/procfs.h" >&5
 $as_echo_n "checking for pstatus32_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_pstatus32_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15537,8 +15583,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15565,7 +15609,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_pstatus32_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_pstatus32_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prpsinfo_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prpsinfo_t in sys/procfs.h" >&5
 $as_echo_n "checking for prpsinfo_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_prpsinfo_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15574,8 +15619,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15602,7 +15645,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prpsinfo_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_prpsinfo_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prpsinfo_t.pr_pid in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prpsinfo_t.pr_pid in sys/procfs.h" >&5
 $as_echo_n "checking for prpsinfo_t.pr_pid in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_member_prpsinfo_t_pr_pid+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15611,8 +15655,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15639,7 +15681,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_prpsinfo_t_pr_pid" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_member_prpsinfo_t_pr_pid" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prpsinfo32_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prpsinfo32_t in sys/procfs.h" >&5
 $as_echo_n "checking for prpsinfo32_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_prpsinfo32_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15648,8 +15691,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15676,7 +15717,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prpsinfo32_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_prpsinfo32_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prpsinfo32_t.pr_pid in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prpsinfo32_t.pr_pid in sys/procfs.h" >&5
 $as_echo_n "checking for prpsinfo32_t.pr_pid in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_member_prpsinfo32_t_pr_pid+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15685,8 +15727,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15713,7 +15753,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_prpsinfo32_t_pr_pid" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_member_prpsinfo32_t_pr_pid" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psinfo_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psinfo_t in sys/procfs.h" >&5
 $as_echo_n "checking for psinfo_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_psinfo_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15722,8 +15763,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15750,7 +15789,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_psinfo_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_psinfo_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psinfo_t.pr_pid in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psinfo_t.pr_pid in sys/procfs.h" >&5
 $as_echo_n "checking for psinfo_t.pr_pid in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_member_psinfo_t_pr_pid+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15759,8 +15799,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15787,7 +15825,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_psinfo_t_pr_pid" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_member_psinfo_t_pr_pid" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psinfo32_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psinfo32_t in sys/procfs.h" >&5
 $as_echo_n "checking for psinfo32_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_psinfo32_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15796,8 +15835,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15824,7 +15861,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_psinfo32_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_psinfo32_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psinfo32_t.pr_pid in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psinfo32_t.pr_pid in sys/procfs.h" >&5
 $as_echo_n "checking for psinfo32_t.pr_pid in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_member_psinfo32_t_pr_pid+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15833,8 +15871,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15861,7 +15897,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_psinfo32_t_pr_pid" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_member_psinfo32_t_pr_pid" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpstatus_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpstatus_t in sys/procfs.h" >&5
 $as_echo_n "checking for lwpstatus_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_lwpstatus_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15870,8 +15907,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15898,7 +15933,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_lwpstatus_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_lwpstatus_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpxstatus_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpxstatus_t in sys/procfs.h" >&5
 $as_echo_n "checking for lwpxstatus_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_lwpxstatus_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15907,8 +15943,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15935,7 +15969,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_lwpxstatus_t" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_lwpxstatus_t" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5
 $as_echo_n "checking for lwpstatus_t.pr_context in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15944,8 +15979,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -15972,7 +16005,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5
 $as_echo_n "checking for lwpstatus_t.pr_reg in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15981,8 +16015,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -16009,7 +16041,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpstatus_t.pr_fpreg in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpstatus_t.pr_fpreg in sys/procfs.h" >&5
 $as_echo_n "checking for lwpstatus_t.pr_fpreg in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -16018,8 +16051,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -16046,7 +16077,8 @@ fi
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg" >&5
 $as_echo "$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for win32_pstatus_t in sys/procfs.h" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for win32_pstatus_t in sys/procfs.h" >&5
 $as_echo_n "checking for win32_pstatus_t in sys/procfs.h... " >&6; }
  if ${bfd_cv_have_sys_procfs_type_win32_pstatus_t+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -16055,8 +16087,6 @@ else
 /* end confdefs.h.  */
 
 #define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
 #include <sys/procfs.h>
 int
 main ()
@@ -16953,7 +16983,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by bfd $as_me 2.33.50, which was
+This file was extended by bfd $as_me 2.35.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17019,7 +17049,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-bfd config.status 2.33.50
+bfd config.status 2.35.50
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/configure.ac ./bfd/configure.ac
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/configure.ac	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/configure.ac	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 dnl
-dnl   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+dnl   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 dnl
 dnl This file is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
@@ -44,6 +44,30 @@ LT_INIT([dlopen])
 # AC_PLUGINS setting $plugins is called by ACX_LARGEFILE.
 ACX_LARGEFILE
 
+changequote(,)dnl
+case "${target}" in
+    hppa*64*-*-* | vax-*-netbsdelf*) ;;
+    *-*-*aout* | i[3-7]86-*-bsd* | i[3-7]86-*-msdos* | ns32k-*-* | \
+    pdp11-*-* | vax-*-*bsd*)
+changequote([,])dnl
+	if test "$plugins" = "yes"; then
+	    if test "${enable_plugins+set}" = set; then
+		AC_MSG_WARN(Enabling plugins for AOUT is experimental)
+	    else
+		plugins=no
+	    fi
+	fi ;;
+    hppa*-*-hpux* | *-*-*vms* | \
+    powerpc*-*-aix* | powerpc-*-beos* | powerpc-*-macos* | rs6000-*-*)
+	if test "$plugins" = "yes"; then
+	    if test "${enable_plugins+set}" = set; then
+		AC_MSG_WARN(Enabling plugins may result in ar creating non-standard archives for ${target})
+	    else
+		plugins=no
+	    fi
+	fi ;;
+esac
+
 AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
 
 AC_ARG_ENABLE(64-bit-bfd,
@@ -219,8 +243,9 @@ AC_SUBST(BFD_HOSTPTR_T)
 
 BFD_CC_FOR_BUILD
 
-AC_CHECK_HEADERS(alloca.h stddef.h string.h strings.h stdlib.h time.h unistd.h wchar.h wctype.h)
-AC_CHECK_HEADERS(fcntl.h sys/file.h sys/time.h sys/stat.h sys/resource.h)
+AC_CHECK_HEADERS(alloca.h fcntl.h limits.h stddef.h stdlib.h string.h \
+		 strings.h sys/file.h sys/resource.h sys/stat.h sys/time.h \
+		 time.h unistd.h wchar.h wctype.h)
 GCC_HEADER_STDINT(bfd_stdint.h)
 AC_HEADER_TIME
 AC_HEADER_DIRENT
@@ -409,7 +434,7 @@ coff="cofflink.lo $coffgen"
 ecoff="ecofflink.lo $coffgen"
 xcoff="xcofflink.lo $coffgen"
 
-elfxx_x86="elfxx-x86.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo"
+elfxx_x86="elfxx-x86.lo elf-ifunc.lo elf-vxworks.lo"
 for vec in $selvecs
 do
     target_size=32
@@ -494,12 +519,12 @@ do
     i386_coff_lynx_vec)		 tb="$tb cf-i386lynx.lo lynx-core.lo $coff" ;;
     i386_elf32_vec)		 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     i386_elf32_fbsd_vec)	 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
-    i386_elf32_nacl_vec)	 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     i386_elf32_sol2_vec)	 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     i386_elf32_vxworks_vec)	 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     i386_mach_o_vec)		 tb="$tb mach-o-i386.lo" ;;
     i386_msdos_vec)		 tb="$tb i386msdos.lo" ;;
     i386_pe_vec)		 tb="$tb pe-i386.lo peigen.lo $coff" ;;
+    i386_pe_big_vec)		 tb="$tb pe-i386.lo peigen.lo $coff" ;;
     i386_pei_vec)		 tb="$tb pei-i386.lo peigen.lo $coff" ;;
     iamcu_elf32_vec)		 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     ia64_elf32_be_vec)		 tb="$tb elf32-ia64.lo elfxx-ia64.lo elf32.lo $elf" ;;
@@ -511,10 +536,10 @@ do
     ia64_pei_vec)		 tb="$tb pei-ia64.lo pepigen.lo $coff"; target_size=64 ;;
     ip2k_elf32_vec)		 tb="$tb elf32-ip2k.lo elf32.lo $elf" ;;
     iq2000_elf32_vec)		 tb="$tb elf32-iq2000.lo elf32.lo $elf" ;;
-    k1om_elf64_vec)		 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
-    k1om_elf64_fbsd_vec)	 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
-    l1om_elf64_vec)		 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
-    l1om_elf64_fbsd_vec)	 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
+    k1om_elf64_vec)		 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
+    k1om_elf64_fbsd_vec)	 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
+    l1om_elf64_vec)		 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
+    l1om_elf64_fbsd_vec)	 tb="$tb elf64-x86-64.lo elfxx-x86.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     lm32_elf32_vec)		 tb="$tb elf32-lm32.lo elf32.lo $elf" ;;
     lm32_elf32_fdpic_vec)	 tb="$tb elf32-lm32.lo elf32.lo $elf" ;;
     m32c_elf32_vec)		 tb="$tb elf32-m32c.lo elf32.lo $elf" ;;
@@ -595,10 +620,6 @@ do
     powerpc_elf64_vec)		 tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
     powerpc_elf64_le_vec)	 tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
     powerpc_elf64_fbsd_vec)	 tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
-    powerpc_pe_vec)		 tb="$tb pe-ppc.lo peigen.lo $coff" ;;
-    powerpc_pe_le_vec)		 tb="$tb pe-ppc.lo peigen.lo $coff" ;;
-    powerpc_pei_vec)		 tb="$tb pei-ppc.lo peigen.lo $coff" ;;
-    powerpc_pei_le_vec)		 tb="$tb pei-ppc.lo peigen.lo $coff" ;;
     powerpc_xcoff_vec)		 tb="$tb coff-rs6000.lo $xcoff" ;;
     pru_elf32_vec)		 tb="$tb elf32-pru.lo elf32.lo $elf" ;;
     riscv_elf32_vec)		 tb="$tb elf32-riscv.lo elfxx-riscv.lo elf32.lo $elf" ;;
@@ -613,8 +634,8 @@ do
     rx_elf32_linux_le_vec)	 tb="$tb elf32-rx.lo elf32.lo $elf" ;;
     s390_elf32_vec)		 tb="$tb elf32-s390.lo elf32.lo $elf" ;;
     s390_elf64_vec)		 tb="$tb elf64-s390.lo elf64.lo $elf"; target_size=64 ;;
-    score_elf32_be_vec)		 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64 ;;
-    score_elf32_le_vec)		 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64 ;;
+    score_elf32_be_vec)		 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo elf64.lo $elf"; want64=true; target_size=64 ;;
+    score_elf32_le_vec)		 tb="$tb elf32-score.lo elf32-score7.lo elf32.lo elf64.lo $elf"; want64=true; target_size=64 ;;
     sh_coff_vec)		 tb="$tb coff-sh.lo $coff" ;;
     sh_coff_le_vec)		 tb="$tb coff-sh.lo $coff" ;;
     sh_coff_small_vec)		 tb="$tb coff-sh.lo $coff" ;;
@@ -639,7 +660,6 @@ do
     sparc_elf64_sol2_vec)	 tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
     spu_elf32_vec)		 tb="$tb elf32-spu.lo elf32.lo $elf" ;;
     sym_vec)			 tb="$tb xsym.lo" ;;
-    tic30_aout_vec)		 tb="$tb aout-tic30.lo" ;;
     tic30_coff_vec)		 tb="$tb coff-tic30.lo $coffgen" ;;
     tic4x_coff0_vec)		 tb="$tb coff-tic4x.lo $coffgen" ;;
     tic4x_coff0_beh_vec)	 tb="$tb coff-tic4x.lo $coffgen" ;;
@@ -659,7 +679,6 @@ do
     tic6x_elf32_c6000_le_vec)	 tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_linux_be_vec)	 tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     tic6x_elf32_linux_le_vec)	 tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
-    tic80_coff_vec)		 tb="$tb coff-tic80.lo $coff" ;;
     tilegx_elf32_be_vec)	 tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;;
     tilegx_elf32_le_vec)	 tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;;
     tilegx_elf64_be_vec)	 tb="$tb elf64-tilegx.lo elfxx-tilegx.lo elf64.lo $elf" ; target_size=64 ;;
@@ -676,15 +695,13 @@ do
     wasm32_elf32_vec)            tb="$tb elf32-wasm32.lo elf32.lo $elf" ;;
     x86_64_coff_vec)		 tb="$tb coff-x86_64.lo $coff"; target_size=64 ;;
     x86_64_elf32_vec)		 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo elf32.lo $elf"; target_size=64 ;;
-    x86_64_elf32_nacl_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo elf32.lo $elf"; target_size=64 ;;
     x86_64_elf64_vec)		 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
     x86_64_elf64_cloudabi_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
     x86_64_elf64_fbsd_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
-    x86_64_elf64_nacl_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
     x86_64_elf64_sol2_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
     x86_64_mach_o_vec)		 tb="$tb mach-o-x86-64.lo" ;;
     x86_64_pe_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
-    x86_64_pe_be_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
+    x86_64_pe_big_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
     x86_64_pei_vec)		 tb="$tb pei-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
     xc16x_elf32_vec)		 tb="$tb elf32-xc16x.lo elf32.lo $elf" ;;
     xgate_elf32_vec)		 tb="$tb elf32-xgate.lo elf32.lo $elf" ;;
@@ -692,6 +709,7 @@ do
     xtensa_elf32_be_vec)	 tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
     xtensa_elf32_le_vec)	 tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
     z80_coff_vec)		 tb="$tb coff-z80.lo reloc16.lo $coffgen" ;;
+    z80_elf32_vec)		 tb="$tb elf32-z80.lo elf32.lo $elf" ;;
     z8k_coff_vec)		 tb="$tb coff-z8k.lo reloc16.lo $coff" ;;
 
     # These appear out of order in targets.c
@@ -836,7 +854,7 @@ if test "${target}" = "${host}"; then
 	;;
   arm-*-freebsd* | arm-*-kfreebsd*-gnu)
 	COREFILE='' ;;
-  arm-*-netbsd* | arm-*-openbsd*)
+  arm*-*-netbsd* | arm-*-openbsd*)
 	COREFILE=netbsd-core.lo
 	;;
   arm-*-riscix)		COREFILE=trad-core.lo ;;
@@ -921,7 +939,7 @@ changequote(,)dnl
   i[3-7]86-*-isc*)	COREFILE=trad-core.lo ;;
   i[3-7]86-*-aix*)	COREFILE=aix386-core.lo ;;
 changequote([,])dnl
-  mips-*-netbsd* | mips*-*-openbsd*)
+  mips*-*-netbsd* | mips*-*-openbsd*)
 	COREFILE=netbsd-core.lo
 	;;
   mips-sgi-irix4*)	COREFILE=irix-core.lo ;;
@@ -1022,7 +1040,7 @@ changequote([,])dnl
 
   # ELF corefile support has several flavors, but all of
   # them use something called <sys/procfs.h>
-  AC_CHECK_HEADERS(sys/procfs.h)
+  BFD_SYS_PROCFS_H
   if test "$ac_cv_header_sys_procfs_h" = yes; then
     BFD_HAVE_SYS_PROCFS_TYPE(prstatus_t)
     BFD_HAVE_SYS_PROCFS_TYPE(prstatus32_t)
@@ -1087,7 +1105,6 @@ AC_MSG_RESULT($bfd_file_ptr)
 AC_SUBST(bfd_file_ptr)
 AC_SUBST(bfd_ufile_ptr)
 
-dnl AC_CHECK_HEADERS(sys/mman.h)
 AC_FUNC_MMAP
 AC_CHECK_FUNCS(madvise mprotect)
 case ${want_mmap}+${ac_cv_func_mmap_fixed_mapped} in
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/configure.com ./bfd/configure.com
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/configure.com	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/configure.com	2021-05-21 01:57:23.000000000 +0000
@@ -7,7 +7,7 @@
 $! Written by Klaus K"ampf (kkaempf@rmi.de)
 $! Rewritten by Tristan Gingold (gingold@adacore.com)
 $!
-$!   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+$!   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 $!
 $! This file is free software; you can redistribute it and/or modify
 $! it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/configure.host ./bfd/configure.host
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/configure.host	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/configure.host	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 #
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/corefile.c ./bfd/corefile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/corefile.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/corefile.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Core file generic interface routines for BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-aarch64.c ./bfd/cpu-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-aarch64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-aarch64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for AArch64.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -107,8 +107,12 @@ scan (const struct bfd_arch_info *info,
     "aarch64", PRINT, 4, DEFAULT, compatible, scan,		\
       bfd_arch_default_fill, NEXT, 0 }
 
+static const bfd_arch_info_type bfd_aarch64_arch_v8_r =
+  N (bfd_mach_aarch64_8R, "aarch64:armv8-r", 64, FALSE, NULL);
+
 static const bfd_arch_info_type bfd_aarch64_arch_ilp32 =
-  N (bfd_mach_aarch64_ilp32, "aarch64:ilp32", 32, FALSE, NULL);
+  N (bfd_mach_aarch64_ilp32, "aarch64:ilp32", 32, FALSE,
+     &bfd_aarch64_arch_v8_r);
 
 const bfd_arch_info_type bfd_aarch64_arch =
   N (0, "aarch64", 64, TRUE, &bfd_aarch64_arch_ilp32);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-aarch64.h ./bfd/cpu-aarch64.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-aarch64.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-aarch64.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF AArch64 mapping symbol support
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-alpha.c ./bfd/cpu-alpha.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-alpha.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-alpha.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Alpha architecture.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-arc.c ./bfd/cpu-arc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-arc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-arc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ARC processor
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
    Contributed by Doug Evans (dje@cygnus.com).
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-arm.c ./bfd/cpu-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-arm.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-arm.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ARM processor
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
    Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -300,8 +300,8 @@ bfd_arm_merge_machines (bfd *ibfd, bfd *
 	       || out == bfd_mach_arm_iWMMXt2))
     {
       /* xgettext: c-format */
-      _bfd_error_handler (_("\
-error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"),
+      _bfd_error_handler (_("error: %pB is compiled for the EP9312, "
+			    "whereas %pB is compiled for XScale"),
 			  ibfd, obfd);
       bfd_set_error (bfd_error_wrong_format);
       return FALSE;
@@ -312,8 +312,8 @@ error: %pB is compiled for the EP9312, w
 	       || in == bfd_mach_arm_iWMMXt2))
     {
       /* xgettext: c-format */
-      _bfd_error_handler (_("\
-error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"),
+      _bfd_error_handler (_("error: %pB is compiled for the EP9312, "
+			    "whereas %pB is compiled for XScale"),
 			  obfd, ibfd);
       bfd_set_error (bfd_error_wrong_format);
       return FALSE;
@@ -458,8 +458,7 @@ bfd_arm_update_notes (bfd *abfd, const c
   return TRUE;
 
  FAIL:
-  if (buffer != NULL)
-    free (buffer);
+  free (buffer);
   return FALSE;
 }
 
@@ -528,8 +527,7 @@ bfd_arm_get_mach_from_notes (bfd *abfd,
       }
 
  FAIL:
-  if (buffer != NULL)
-    free (buffer);
+  free (buffer);
   return bfd_mach_arm_unknown;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-arm.h ./bfd/cpu-arm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-arm.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-arm.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ARM processor
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-avr.c ./bfd/cpu-avr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-avr.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-avr.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for the AVR architecture.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Contributed by Denis Chertykov <denisc@overta.ru>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-bfin.c ./bfd/cpu-bfin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-bfin.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-bfin.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* BFD Support for the ADI Blackfin processor.
 
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-bpf.c ./bfd/cpu-bpf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-bpf.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-bpf.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the BPF processor.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
    Contributed by Oracle Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -23,6 +23,26 @@
 #include "bfd.h"
 #include "libbfd.h"
 
+
+static const bfd_arch_info_type bfd_xbpf_arch =
+{
+  64,				/* Bits per word.  */
+  64,				/* Bits per address.  */
+  8,				/* Bits per byte.  */
+  bfd_arch_bpf,			/* Architecture.  */
+  bfd_mach_xbpf,		/* Machine.  */
+  "bpf",			/* Architecture name.  */
+  "xbpf",			/* Machine name.  */
+  3,				/* Section align power.  */
+  FALSE,			/* The default ?  */
+  bfd_default_compatible,	/* Architecture comparison fn.  */
+  bfd_default_scan,		/* String to architecture convert fn.  */
+  bfd_arch_default_fill,	/* Default fill.  */
+  NULL,				/* Next in list.  */
+  0 /* Maximum offset of a reloc from the start of an insn.  */
+};
+
+
 const bfd_arch_info_type bfd_bpf_arch =
 {
   64,				/* Bits per word.  */
@@ -37,6 +57,6 @@ const bfd_arch_info_type bfd_bpf_arch =
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
-  NULL,				/* Next in list.  */
+  &bfd_xbpf_arch,		/* Next in list.  */
   0 /* Maximum offset of a reloc from the start of an insn.  */
 };
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-cr16.c ./bfd/cpu-cr16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-cr16.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-cr16.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the CR16 processor.
-   Copyright (C) 2007-2019 Free Software Foundation, Inc.
+   Copyright (C) 2007-2020 Free Software Foundation, Inc.
    Written by M R Swami Reddy
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-cris.c ./bfd/cpu-cris.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-cris.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-cris.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Axis CRIS architecture.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
    Contributed by Axis Communications AB.
    Written by Hans-Peter Nilsson.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-crx.c ./bfd/cpu-crx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-crx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-crx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the CRX processor.
-   Copyright (C) 2004-2019 Free Software Foundation, Inc.
+   Copyright (C) 2004-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-csky.c ./bfd/cpu-csky.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-csky.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-csky.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for C-SKY processors.
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
    Contributed by C-SKY Microsystems and Mentor Graphics.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -53,6 +53,7 @@ static const bfd_arch_info_type arch_inf
   N (bfd_mach_ck803,   "csky:ck803",    FALSE, & arch_info_struct[5]),
   N (bfd_mach_ck807,   "csky:ck807",    FALSE, & arch_info_struct[6]),
   N (bfd_mach_ck810,   "csky:ck810",    FALSE, & arch_info_struct[7]),
+  N (bfd_mach_ck860,   "csky:ck860",    FALSE, & arch_info_struct[8]),
   N (bfd_mach_ck_unknown, "csky:any",   FALSE, NULL)
 };
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-d10v.c ./bfd/cpu-d10v.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-d10v.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-d10v.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the D10V processor
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
    Contributed by Martin Hunt (hunt@cygnus.com).
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-d30v.c ./bfd/cpu-d30v.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-d30v.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-d30v.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Mitsubishi D30V processor
-   Copyright (C) 1997-2019 Free Software Foundation, Inc.
+   Copyright (C) 1997-2020 Free Software Foundation, Inc.
    Contributed by Martin Hunt (hunt@cygnus.com).
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-dlx.c ./bfd/cpu-dlx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-dlx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-dlx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the DLX Microprocessor architecture.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
    Hacked by Kuang Hwa Lin <kuang@sbcglobal.net>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-epiphany.c ./bfd/cpu-epiphany.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-epiphany.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-epiphany.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Adapteva EPIPHANY processor.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
    Contributed by Embecosm on behalf of Adapteva, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-fr30.c ./bfd/cpu-fr30.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-fr30.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-fr30.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the FR30 processor.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-frv.c ./bfd/cpu-frv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-frv.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-frv.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the FRV processor.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-ft32.c ./bfd/cpu-ft32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-ft32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-ft32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ft32 processor.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2020 Free Software Foundation, Inc.
    Written by FTDI (support@ftdichip.com)
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-h8300.c ./bfd/cpu-h8300.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-h8300.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-h8300.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for the Renesas H8/300 architecture.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-h8300.h ./bfd/cpu-h8300.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-h8300.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-h8300.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* H8/300 functions.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-hppa.c ./bfd/cpu-hppa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-hppa.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-hppa.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the HP Precision Architecture architecture.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-i386.c ./bfd/cpu-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-i386.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-i386.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Intel 386 architecture.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -117,19 +117,6 @@ bfd_arch_i386_long_nop_fill (bfd_size_ty
   return bfd_arch_i386_fill (count, code, TRUE);
 }
 
-/* Fill the buffer with zero, or one-byte nop instructions if CODE is TRUE.  */
-
-static void *
-bfd_arch_i386_onebyte_nop_fill (bfd_size_type count,
-				bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
-				bfd_boolean code)
-{
-  void *fill = bfd_malloc (count);
-  if (fill != NULL)
-    memset (fill, code ? 0x90 : 0, count);
-  return fill;
-}
-
 #define N(BITS, MACH, NAME, PRINT, DEF, FILL, NEXT)	\
   { BITS, /* Bits in a word.  */		\
     BITS, /* Bits in an address.  */		\
@@ -148,22 +135,9 @@ bfd_arch_i386_onebyte_nop_fill (bfd_size
   }
 
 
-static const bfd_arch_info_type bfd_x64_32_nacl_arch =
-  N (64, bfd_mach_x64_32_nacl, "i386", "i386:x64-32:nacl",
-     FALSE, bfd_arch_i386_onebyte_nop_fill, NULL);
-
-static const bfd_arch_info_type bfd_x86_64_nacl_arch =
-  N (64, bfd_mach_x86_64_nacl, "i386", "i386:x86-64:nacl",
-     FALSE, bfd_arch_i386_onebyte_nop_fill, &bfd_x64_32_nacl_arch);
-
-const bfd_arch_info_type bfd_i386_nacl_arch =
-  N (32, bfd_mach_i386_i386_nacl, "i386", "i386:nacl",
-     TRUE, bfd_arch_i386_onebyte_nop_fill, &bfd_x86_64_nacl_arch);
-
-
 static const bfd_arch_info_type bfd_x64_32_arch_intel_syntax =
   N (64, bfd_mach_x64_32_intel_syntax, "i386:intel", "i386:x64-32:intel",
-     FALSE, bfd_arch_i386_long_nop_fill, &bfd_i386_nacl_arch);
+     FALSE, bfd_arch_i386_long_nop_fill, NULL);
 
 static const bfd_arch_info_type bfd_x86_64_arch_intel_syntax =
   N (64, bfd_mach_x86_64_intel_syntax, "i386:intel", "i386:x86-64:intel",
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-ia64.c ./bfd/cpu-ia64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-ia64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-ia64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ia64 architecture.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-ia64-opc.c ./bfd/cpu-ia64-opc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-ia64-opc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-ia64-opc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2019 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2020 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-iamcu.c ./bfd/cpu-iamcu.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-iamcu.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-iamcu.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Intel MCU architecture.
-   Copyright (C) 2015-2019 Free Software Foundation, Inc.
+   Copyright (C) 2015-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-ip2k.c ./bfd/cpu-ip2k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-ip2k.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-ip2k.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Scenix IP2xxx processor.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-iq2000.c ./bfd/cpu-iq2000.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-iq2000.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-iq2000.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Vitesse IQ2000 processor.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-k1om.c ./bfd/cpu-k1om.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-k1om.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-k1om.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Intel K1OM architecture.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-l1om.c ./bfd/cpu-l1om.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-l1om.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-l1om.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Intel L1OM architecture.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-lm32.c ./bfd/cpu-lm32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-lm32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-lm32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Lattice Mico32 architecture.
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2020 Free Software Foundation, Inc.
    Contributed by Jon Beniston <jon@beniston.com>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m10200.c ./bfd/cpu-m10200.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m10200.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-m10200.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Matsushita 10200 processor
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m10300.c ./bfd/cpu-m10300.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m10300.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-m10300.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Matsushita 10300 processor
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m32c.c ./bfd/cpu-m32c.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m32c.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-m32c.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the M16C/M32C processors.
-   Copyright (C) 2004-2019 Free Software Foundation, Inc.
+   Copyright (C) 2004-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m32r.c ./bfd/cpu-m32r.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m32r.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-m32r.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the M32R processor.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m68hc11.c ./bfd/cpu-m68hc11.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m68hc11.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-m68hc11.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Motorola 68HC11 processor
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m68hc12.c ./bfd/cpu-m68hc12.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m68hc12.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-m68hc12.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Motorola 68HC12 processor
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m68k.c ./bfd/cpu-m68k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m68k.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-m68k.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for architectures.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m68k.h ./bfd/cpu-m68k.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m68k.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-m68k.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m9s12x.c ./bfd/cpu-m9s12x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m9s12x.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-m9s12x.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Freescale 9S12X processor
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m9s12xg.c ./bfd/cpu-m9s12xg.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-m9s12xg.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-m9s12xg.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Freescale 9S12-XGATE co-processor
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-mcore.c ./bfd/cpu-mcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-mcore.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-mcore.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for Motorola's MCore architecture
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-mep.c ./bfd/cpu-mep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-mep.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-mep.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Toshiba Media Engine Processor.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-metag.c ./bfd/cpu-metag.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-metag.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-metag.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Imagination Technologies Meta processor.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2020 Free Software Foundation, Inc.
    Contributed by Imagination Technologies Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-microblaze.c ./bfd/cpu-microblaze.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-microblaze.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-microblaze.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* BFD Xilinx MicroBlaze architecture definition
 
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-mips.c ./bfd/cpu-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-mips.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-mips.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* bfd back-end for mips support
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-mmix.c ./bfd/cpu-mmix.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-mmix.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-mmix.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for MMIX.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
    Contributed by Hans-Peter Nilsson (hp@bitrange.com)
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-moxie.c ./bfd/cpu-moxie.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-moxie.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-moxie.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the moxie processor.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
    Written by Anthony Green
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-msp430.c ./bfd/cpu-msp430.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-msp430.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-msp430.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for the MSP architecture.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
    Contributed by Dmitry Diky <diwil@mail.ru>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-mt.c ./bfd/cpu-mt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-mt.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-mt.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Morpho Technologies MT processor.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-nds32.c ./bfd/cpu-nds32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-nds32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-nds32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the NDS32 processor
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2020 Free Software Foundation, Inc.
    Contributed by Andes Technology Corporation.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-nfp.c ./bfd/cpu-nfp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-nfp.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-nfp.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for the NFP.
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
    Contributed by Francois H. Theron <francois.theron@netronome.com>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-nios2.c ./bfd/cpu-nios2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-nios2.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-nios2.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Altera Nios II processor.
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2020 Free Software Foundation, Inc.
    Contributed by Nigel Gray (ngray@altera.com).
    Contributed by Mentor Graphics, Inc.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-ns32k.c ./bfd/cpu-ns32k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-ns32k.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-ns32k.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ns32k architecture.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Almost totally rewritten by Ian Dall from initial work
    by Andrew Cagney.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-or1k.c ./bfd/cpu-or1k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-or1k.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-or1k.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the OpenRISC 1000 architecture.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
    Contributed for OR32 by Ivan Guzvinec  <ivang@opencores.org>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-pdp11.c ./bfd/cpu-pdp11.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-pdp11.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-pdp11.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for PDP-11 support.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-pj.c ./bfd/cpu-pj.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-pj.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-pj.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for the Pico Java architecture.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Transmeta. sac@pobox.com
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-plugin.c ./bfd/cpu-plugin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-plugin.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-plugin.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,41 +0,0 @@
-/* BFD support for plugins.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
-
-   This file is part of BFD, the Binary File Descriptor library.
-
-   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, write to the Free Software
-   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
-   MA 02110-1301, USA.  */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-
-const bfd_arch_info_type bfd_plugin_arch =
-{
-  32,	/* Bits in a word.  */
-  32,	/* Bits in an address.  */
-  8,	/* Bits in a byte.  */
-  bfd_arch_plugin,
-  0,	/* Only 1 machine.  */
-  "plugin",
-  "plugin",
-  3,
-  TRUE,
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  NULL,
-  0 /* Maximum offset of a reloc from the start of an insn.  */
-};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-powerpc.c ./bfd/cpu-powerpc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-powerpc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-powerpc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD PowerPC CPU definition
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
    Contributed by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-pru.c ./bfd/cpu-pru.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-pru.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-pru.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the TI PRU microprocessor.
-   Copyright (C) 2014-2019 Free Software Foundation, Inc.
+   Copyright (C) 2014-2020 Free Software Foundation, Inc.
    Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-riscv.c ./bfd/cpu-riscv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-riscv.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-riscv.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD backend for RISC-V
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    Contributed by Andrew Waterman (andrew@sifive.com).
    Based on MIPS target.
@@ -23,6 +23,86 @@
 #include "sysdep.h"
 #include "bfd.h"
 #include "libbfd.h"
+#include "elfxx-riscv.h"
+
+/* Record the priv spec version string and the corresponding class.  */
+
+struct priv_spec_t
+{
+  const char *name;
+  enum riscv_priv_spec_class class;
+};
+
+/* List for all supported privilege versions.  */
+
+static const struct priv_spec_t priv_specs[] =
+{
+  {"1.9.1", PRIV_SPEC_CLASS_1P9P1},
+  {"1.10",  PRIV_SPEC_CLASS_1P10},
+  {"1.11",  PRIV_SPEC_CLASS_1P11},
+
+/* Terminate the list.  */
+  {NULL, 0}
+};
+
+/* Get the corresponding CSR version class by giving a privilege
+   version string.  */
+
+int
+riscv_get_priv_spec_class (const char *s,
+			   enum riscv_priv_spec_class *class)
+{
+  const struct priv_spec_t *version;
+
+  if (s == NULL)
+    return 0;
+
+  for (version = &priv_specs[0]; version->name != NULL; ++version)
+    if (strcmp (version->name, s) == 0)
+      {
+	*class = version->class;
+	return 1;
+      }
+
+  /* Can not find the supported privilege version.  */
+  return 0;
+}
+
+/* Get the corresponding CSR version class by giving privilege
+   version numbers.  It is usually used to convert the priv
+   attribute numbers into the corresponding class.  */
+
+int
+riscv_get_priv_spec_class_from_numbers (unsigned int major,
+					unsigned int minor,
+					unsigned int revision,
+					enum riscv_priv_spec_class *class)
+{
+  char buf[36];
+
+  if (major == 0 && minor == 0 && revision == 0)
+    {
+      *class = PRIV_SPEC_CLASS_NONE;
+      return 1;
+    }
+
+  if (revision != 0)
+    snprintf (buf, sizeof (buf), "%u.%u.%u", major, minor, revision);
+  else
+    snprintf (buf, sizeof (buf), "%u.%u", major, minor);
+
+  return riscv_get_priv_spec_class (buf, class);
+}
+
+/* Get the corresponding privilege version string by giving a CSR
+   version class.  */
+
+const char *
+riscv_get_priv_spec_name (enum riscv_priv_spec_class class)
+{
+  /* The first enum is PRIV_SPEC_CLASS_NONE.  */
+  return priv_specs[class - 1].name;
+}
 
 /* This routine is provided two arch_infos and returns an arch_info
    that is compatible with both, or NULL if none exists.  */
@@ -39,6 +119,33 @@ riscv_compatible (const bfd_arch_info_ty
   return a;
 }
 
+/* Return TRUE if STRING matches the architecture described by INFO.  */
+
+static bfd_boolean
+riscv_scan (const struct bfd_arch_info *info, const char *string)
+{
+  if (bfd_default_scan (info, string))
+    return TRUE;
+
+  /* The incoming STRING might take the form of riscv:rvXXzzz, where XX is
+     32 or 64, and zzz are one or more extension characters.  As we
+     currently only have 3 architectures defined, 'riscv', 'riscv:rv32',
+     and 'riscv:rv64', we would like to ignore the zzz for the purpose of
+     matching here.
+
+     However, we don't want the default 'riscv' to match over a more
+     specific 'riscv:rv32' or 'riscv:rv64', so in the case of the default
+     architecture (with the shorter 'riscv' name) we don't allow any
+     special matching, but for the 'riscv:rvXX' cases, we allow a match
+     with any additional trailing characters being ignored.  */
+  if (!info->the_default
+      && strncasecmp (string, info->printable_name,
+                      strlen (info->printable_name)) == 0)
+    return TRUE;
+
+  return FALSE;
+}
+
 #define N(BITS, NUMBER, PRINT, DEFAULT, NEXT)			\
   {								\
     BITS,      /* Bits in a word.  */				\
@@ -51,7 +158,7 @@ riscv_compatible (const bfd_arch_info_ty
     3,								\
     DEFAULT,							\
     riscv_compatible,						\
-    bfd_default_scan,						\
+    riscv_scan,							\
     bfd_arch_default_fill,					\
     NEXT,							\
     0 /* Maximum offset of a reloc from the start of an insn.  */\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-rl78.c ./bfd/cpu-rl78.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-rl78.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-rl78.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the RL78 processor.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-rs6000.c ./bfd/cpu-rs6000.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-rs6000.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-rs6000.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for rs6000 support
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Mimi Phuong-Thao Vo of IBM
    and John Gilmore of Cygnus Support.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-rx.c ./bfd/cpu-rx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-rx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-rx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the RX processor.
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-s12z.c ./bfd/cpu-s12z.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-s12z.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-s12z.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Freescale 9S12Z processor
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-s390.c ./bfd/cpu-s390.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-s390.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-s390.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the s390 processor.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
    Contributed by Carl B. Pedersen and Martin Schwidefsky.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-score.c ./bfd/cpu-score.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-score.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-score.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the score processor
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
    Contributed by
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-sh.c ./bfd/cpu-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-sh.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-sh.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for the Renesas / SuperH SH architecture.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-sparc.c ./bfd/cpu-sparc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-sparc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-sparc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the SPARC architecture.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-spu.c ./bfd/cpu-spu.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-spu.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-spu.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tic30.c ./bfd/cpu-tic30.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tic30.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-tic30.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Texas Instruments TMS320C30 architecture.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tic4x.c ./bfd/cpu-tic4x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tic4x.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-tic4x.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* bfd back-end for TMS320C[34]x support
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tic54x.c ./bfd/cpu-tic54x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tic54x.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-tic54x.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Texas Instruments TMS320C54X architecture.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tic6x.c ./bfd/cpu-tic6x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tic6x.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-tic6x.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the TI C6X processor.
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tic80.c ./bfd/cpu-tic80.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tic80.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-tic80.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,42 +0,0 @@
-/* bfd back-end for TI TMS320C80 (MVP) support
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
-   Written by Fred Fish at Cygnus support (fnf@cygnus.com)
-
-   This file is part of BFD, the Binary File Descriptor library.
-
-   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, write to the Free Software
-   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
-   MA 02110-1301, USA.  */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-
-const bfd_arch_info_type bfd_tic80_arch =
-{
-  32,				/* Bits in a word.  */
-  32,				/* Bits in an address.  */
-  8,				/* Bits in a byte.  */
-  bfd_arch_tic80,		/* Architecture number.  */
-  0,				/* Only 1 machine.  */
-  "tic80",			/* Architecture name.  */
-  "tic80",			/* Printable name.  */
-  2,				/* Section alignment power.  */
-  TRUE,				/* Default machine.  */
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  NULL,				/* Pointer to next in chain.  */
-  0 /* Maximum offset of a reloc from the start of an insn.  */
-};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tilegx.c ./bfd/cpu-tilegx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tilegx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-tilegx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the TILE-Gx processor.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tilepro.c ./bfd/cpu-tilepro.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-tilepro.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-tilepro.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the TILEPro processor.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-v850.c ./bfd/cpu-v850.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-v850.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-v850.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the NEC V850 processor
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-v850_rh850.c ./bfd/cpu-v850_rh850.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-v850_rh850.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-v850_rh850.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the NEC V850 processor with the RH850 ABI.
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-vax.c ./bfd/cpu-vax.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-vax.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-vax.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* bfd back-end for vax support
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-visium.c ./bfd/cpu-visium.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-visium.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-visium.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* BFD support for the Visium processor.
 
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-wasm32.c ./bfd/cpu-wasm32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-wasm32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-wasm32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the WebAssembly target
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-xc16x.c ./bfd/cpu-xc16x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-xc16x.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-xc16x.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Infineon XC16X Microcontroller.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
    Contributed by KPIT Cummins Infosystems
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-xgate.c ./bfd/cpu-xgate.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-xgate.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-xgate.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Freescale XGATE processor
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-xstormy16.c ./bfd/cpu-xstormy16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-xstormy16.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-xstormy16.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the XSTORMY16 processor.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-xtensa.c ./bfd/cpu-xtensa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-xtensa.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-xtensa.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Xtensa processor.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-z80.c ./bfd/cpu-z80.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-z80.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-z80.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for the Z80 architecture.
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
    Contributed by Arnold Metselaar <arnold_m@operamail.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -31,27 +31,91 @@ const bfd_arch_info_type bfd_z80_arch;
 static const bfd_arch_info_type *
 compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
 {
-  if (a->arch != b->arch)
+  if (a->arch != b->arch || a->arch != bfd_arch_z80)
     return NULL;
 
   if (a->mach == b->mach)
     return a;
+  switch (a->mach)
+    {
+    case bfd_mach_z80:
+    case bfd_mach_z80full:
+    case bfd_mach_z80strict:
+      switch (b->mach)
+	{
+	case bfd_mach_z80:
+	case bfd_mach_z80full:
+	case bfd_mach_z80strict:
+	  return & bfd_z80_arch;
+	case bfd_mach_z180:
+	case bfd_mach_ez80_z80:
+	case bfd_mach_ez80_adl:
+	case bfd_mach_z80n:
+	case bfd_mach_r800:
+	  return b;
+	}
+      break;
+    case bfd_mach_z80n:
+    case bfd_mach_r800:
+      switch (b->mach)
+	{
+	case bfd_mach_z80:
+	case bfd_mach_z80full:
+	case bfd_mach_z80strict:
+	  return a;
+	}
+      break;
+    case bfd_mach_z180:
+      switch (b->mach)
+	{
+	case bfd_mach_z80:
+	case bfd_mach_z80full:
+	case bfd_mach_z80strict:
+	  return a;
+	case bfd_mach_ez80_z80:
+	case bfd_mach_ez80_adl:
+	  return b;
+	}
+      break;
+    case bfd_mach_ez80_z80:
+    case bfd_mach_ez80_adl:
+      switch (b->mach)
+	{
+	case bfd_mach_z80:
+	case bfd_mach_z80full:
+	case bfd_mach_z80strict:
+	case bfd_mach_z180:
+	case bfd_mach_ez80_z80:
+	  return a;
+	case bfd_mach_ez80_adl:
+	  return b;
+	}
+      break;
+    case bfd_mach_gbz80:
+       return NULL;
+    }
 
-  return (a->arch == bfd_arch_z80) ? & bfd_z80_arch : NULL;
+  return NULL;
 }
 
-#define N(name,print,default,next)  \
- { 16, 16, 8, bfd_arch_z80, name, "z80", print, 0, default, \
+#define N(name,print,bits,default,next)  \
+ { 16, bits, 8, bfd_arch_z80, name, "z80", print, 0, default, \
    compatible, bfd_default_scan, bfd_arch_default_fill, next, 0 }
 
 #define M(n) &arch_info_struct[n]
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (bfd_mach_z80strict, "z80-strict", FALSE, M(1)),
-  N (bfd_mach_z80,	 "z80",	       FALSE, M(2)),
-  N (bfd_mach_z80full,	 "z80-full",   FALSE, M(3)),
-  N (bfd_mach_r800,	 "r800",       FALSE, NULL)
+  N (bfd_mach_z80,	 "z80",        16, TRUE,  M(1)),
+  N (bfd_mach_z80strict, "z80-strict", 16, FALSE, M(2)),
+  N (bfd_mach_z80full,	 "z80-full",   16, FALSE, M(3)),
+  N (bfd_mach_r800,	 "r800",       16, FALSE, M(4)),
+  N (bfd_mach_gbz80,	 "gbz80",      16, FALSE, M(5)),
+  N (bfd_mach_z180,	 "z180",       16, FALSE, M(6)),
+  N (bfd_mach_z80n,	 "z80n",       16, FALSE, M(7)),
+  N (bfd_mach_ez80_z80,	 "ez80-z80",   16, FALSE, M(8)),
+  N (bfd_mach_ez80_adl,	 "ez80-adl",   24, FALSE, NULL)
 };
 
-const bfd_arch_info_type bfd_z80_arch = N (0, "z80-any", TRUE, M(0));
+const bfd_arch_info_type bfd_z80_arch =
+  N (bfd_mach_z80,   "z80",   16, TRUE,  M(1));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-z8k.c ./bfd/cpu-z8k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/cpu-z8k.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/cpu-z8k.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for the Z800n architecture.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/development.sh ./bfd/development.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/development.sh	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/development.sh	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 Free Software Foundation, Inc.
+# Copyright (C) 2012-2020 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/archures.texi ./bfd/doc/archures.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/archures.texi	2020-03-07 02:09:48.000000000 +0000
+++ ./bfd/doc/archures.texi	2021-05-21 01:59:10.000000000 +0000
@@ -178,10 +178,6 @@ enum bfd_architecture
   bfd_arch_k1om,      /* Intel K1OM.  */
 #define bfd_mach_k1om                  (1 << 6)
 #define bfd_mach_k1om_intel_syntax     (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
-#define bfd_mach_i386_nacl             (1 << 7)
-#define bfd_mach_i386_i386_nacl        (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
-#define bfd_mach_x86_64_nacl           (bfd_mach_x86_64 | bfd_mach_i386_nacl)
-#define bfd_mach_x64_32_nacl           (bfd_mach_x64_32 | bfd_mach_i386_nacl)
   bfd_arch_iamcu,     /* Intel MCU.  */
 #define bfd_mach_iamcu                 (1 << 8)
 #define bfd_mach_i386_iamcu            (bfd_mach_i386_i386 | bfd_mach_iamcu)
@@ -199,7 +195,6 @@ enum bfd_architecture
 #define bfd_mach_h8300sx       6
 #define bfd_mach_h8300sxn      7
   bfd_arch_pdp11,     /* DEC PDP-11.  */
-  bfd_arch_plugin,
   bfd_arch_powerpc,   /* PowerPC.  */
 #define bfd_mach_ppc           32
 #define bfd_mach_ppc64         64
@@ -322,7 +317,6 @@ enum bfd_architecture
 #define bfd_mach_tic4x         40
   bfd_arch_tic54x,    /* Texas Instruments TMS320C54X.  */
   bfd_arch_tic6x,     /* Texas Instruments TMS320C6X.  */
-  bfd_arch_tic80,     /* TI TMS320c80 (MVP).  */
   bfd_arch_v850,      /* NEC V850.  */
   bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI).  */
 #define bfd_mach_v850          1
@@ -384,6 +378,7 @@ enum bfd_architecture
 #define bfd_mach_iq10          2
   bfd_arch_bpf,       /* Linux eBPF.  */
 #define bfd_mach_bpf           1
+#define bfd_mach_xbpf          2
   bfd_arch_epiphany,  /* Adapteva EPIPHANY.  */
 #define bfd_mach_epiphany16    1
 #define bfd_mach_epiphany32    2
@@ -473,10 +468,25 @@ enum bfd_architecture
   bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
 #define bfd_mach_xtensa        1
   bfd_arch_z80,
-#define bfd_mach_z80strict     1 /* No undocumented opcodes.  */
-#define bfd_mach_z80           3 /* With ixl, ixh, iyl, and iyh.  */
-#define bfd_mach_z80full       7 /* All undocumented instructions.  */
-#define bfd_mach_r800          11 /* R800: successor with multiplication.  */
+/* Zilog Z80 without undocumented opcodes.  */
+#define bfd_mach_z80strict     1
+/* Zilog Z180: successor with additional instructions, but without
+ halves of ix and iy.  */
+#define bfd_mach_z180          2
+/* Zilog Z80 with ixl, ixh, iyl, and iyh.  */
+#define bfd_mach_z80           3
+/* Zilog eZ80 (successor of Z80 & Z180) in Z80 (16-bit address) mode.  */
+#define bfd_mach_ez80_z80      4
+/* Zilog eZ80 (successor of Z80 & Z180) in ADL (24-bit address) mode.  */
+#define bfd_mach_ez80_adl      5
+/* Z80N */
+#define bfd_mach_z80n          6
+/* Zilog Z80 with all undocumented instructions.  */
+#define bfd_mach_z80full       7
+/* GameBoy Z80 (reduced instruction set).  */
+#define bfd_mach_gbz80         8
+/* ASCII R800: successor with multiplication.  */
+#define bfd_mach_r800          11
   bfd_arch_lm32,      /* Lattice Mico32.  */
 #define bfd_mach_lm32          1
   bfd_arch_microblaze,/* Xilinx MicroBlaze.  */
@@ -487,6 +497,7 @@ enum bfd_architecture
 #define bfd_mach_tilegx32      2
   bfd_arch_aarch64,   /* AArch64.  */
 #define bfd_mach_aarch64 0
+#define bfd_mach_aarch64_8R    1
 #define bfd_mach_aarch64_ilp32 32
   bfd_arch_nios2,     /* Nios II.  */
 #define bfd_mach_nios2         0
@@ -510,6 +521,7 @@ enum bfd_architecture
 #define bfd_mach_ck803         5
 #define bfd_mach_ck807         6
 #define bfd_mach_ck810         7
+#define bfd_mach_ck860         8
   bfd_arch_last
   @};
 @end example
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfd.info ./bfd/doc/bfd.info
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfd.info	2020-03-07 02:09:56.000000000 +0000
+++ ./bfd/doc/bfd.info	2021-05-21 01:59:14.000000000 +0000
@@ -1,8 +1,8 @@
-This is bfd.info, produced by makeinfo version 6.3 from bfd.texi.
+This is bfd.info, produced by makeinfo version 6.5 from bfd.texi.
 
 This file documents the BFD library.
 
-   Copyright (C) 1991-2019 Free Software Foundation, Inc.
+   Copyright (C) 1991-2020 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -378,12 +378,6 @@ major data about the file and pointers t
        /* A unique identifier of the BFD  */
        unsigned int id;
 
-       /* The format which belongs to the BFD. (object, core, etc.)  */
-       ENUM_BITFIELD (bfd_format) format : 3;
-
-       /* The direction with which the BFD was opened.  */
-       ENUM_BITFIELD (bfd_direction) direction : 2;
-
        /* Format_specific flags.  */
        flagword flags;
 
@@ -487,6 +481,12 @@ major data about the file and pointers t
         | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
         | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
 
+       /* The format which belongs to the BFD. (object, core, etc.)  */
+       ENUM_BITFIELD (bfd_format) format : 3;
+
+       /* The direction with which the BFD was opened.  */
+       ENUM_BITFIELD (bfd_direction) direction : 2;
+
        /* Is the file descriptor being cached?  That is, can it be closed as
           needed, and re-opened when accessed later?  */
        unsigned int cacheable : 1;
@@ -538,13 +538,16 @@ major data about the file and pointers t
        /* Set if this is a slim LTO object not loaded with a compiler plugin.  */
        unsigned int lto_slim_object : 1;
 
+       /* Do not attempt to modify this file.  Set when detecting errors
+          that BFD is not prepared to handle for objcopy/strip.  */
+       unsigned int read_only : 1;
+
        /* Set to dummy BFD created when claimed by a compiler plug-in
           library.  */
        bfd *plugin_dummy_bfd;
 
-       /* Currently my_archive is tested before adding origin to
-          anything. I believe that this can become always an add of
-          origin, with origin set to 0 for non archive files.  */
+       /* The offset of this bfd in the file, typically 0 if it is not
+          contained in an archive.  */
        ufile_ptr origin;
 
        /* The origin in the archive of the proxy entry.  This will
@@ -576,7 +579,7 @@ major data about the file and pointers t
 
        /* Symbol table for output BFD (with symcount entries).
           Also used by the linker to cache input BFD symbols.  */
-       struct bfd_symbol  **outsymbols;
+       struct bfd_symbol **outsymbols;
 
        /* Used for input and output.  */
        unsigned int symcount;
@@ -587,6 +590,11 @@ major data about the file and pointers t
        /* Pointer to structure which contains architecture information.  */
        const struct bfd_arch_info *arch_info;
 
+       /* Cached length of file for bfd_get_size.  0 until bfd_get_size is
+          called, 1 if stat returns an error or the file size is too large to
+          return in ufile_ptr.  Both 0 and 1 should be treated as "unknown".  */
+       ufile_ptr size;
+
        /* Stuff only useful for archives.  */
        void *arelt_data;
        struct bfd *my_archive;      /* The containing archive BFD.  */
@@ -1270,7 +1278,8 @@ The following functions exist but have n
             BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
 
      #define bfd_stat_arch_elt(abfd, stat) \
-            BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
+            BFD_SEND (abfd->my_archive ? abfd->my_archive : abfd, \
+                      _bfd_stat_arch_elt, (abfd, stat))
 
      #define bfd_update_armap_timestamp(abfd) \
             BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
@@ -1537,6 +1546,8 @@ memory exhausted" error when it tries to
 space for the 15 bazillon byte table it is about to read.  This function
 at least allows us to answer the question, "is the size reasonable?".
 
+   A return value of zero indicates the file size is unknown.
+
 2.3.1.29 'bfd_get_file_size'
 ............................
 
@@ -1734,6 +1745,10 @@ Here is the section structure:
        /* A unique sequence number.  */
        unsigned int id;
 
+       /* A unique section number which can be used by assembler to
+          distinguish different sections with the same section name.  */
+       unsigned int section_id;
+
        /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
        unsigned int index;
 
@@ -1867,6 +1882,10 @@ Here is the section structure:
           else up the line will take care of it later.  */
      #define SEC_LINKER_CREATED           0x100000
 
+       /* This section contains a section ID to distinguish different
+          sections with the same section name.  */
+     #define SEC_ASSEMBLER_SECTION_ID     0x100000
+
        /* This section should not be subject to garbage collection.
           Also set to inform the linker that this section should not be
           listed in the link map as discarded.  */
@@ -2116,11 +2135,17 @@ Here is the section structure:
        /* Early in the link process, map_head and map_tail are used to build
           a list of input sections attached to an output section.  Later,
           output sections use these fields for a list of bfd_link_order
-          structs.  */
+          structs.  The linked_to_symbol_name field is for ELF assembler
+          internal use.  */
        union {
          struct bfd_link_order *link_order;
          struct bfd_section *s;
+         const char *linked_to_symbol_name;
        } map_head, map_tail;
+      /* Points to the output section this section is already assigned to, if any.
+         This is used when support for non-contiguous memory regions is enabled.  */
+      struct bfd_section *already_assigned;
+
      } asection;
 
      /* Relax table contains information about instructions which can
@@ -2254,7 +2279,9 @@ Here is the section structure:
      static inline bfd_boolean
      bfd_is_const_section (const asection *sec)
      {
-       return sec >= bfd_abs_section_ptr && sec <= bfd_ind_section_ptr;
+       return (sec >= _bfd_std_section
+               && sec < _bfd_std_section + (sizeof (_bfd_std_section)
+                                            / sizeof (_bfd_std_section[0])));
      }
 
      /* Return TRUE if input section SEC has been discarded.  */
@@ -2268,41 +2295,42 @@ Here is the section structure:
      }
 
      #define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS)                   \
-       /* name, id,  index, next, prev, flags, user_set_vma,            */  \
-       {  NAME, IDX, 0,     NULL, NULL, FLAGS, 0,                           \
+       /* name, id,  section_id, index, next, prev, flags, user_set_vma, */ \
+       {  NAME, IDX, 0,          0,     NULL, NULL, FLAGS, 0,               \
                                                                             \
-       /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
+       /* linker_mark, linker_has_input, gc_mark, decompress_status,     */ \
           0,           0,                1,       0,                        \
                                                                             \
-       /* segment_mark, sec_info_type, use_rela_p,                      */  \
+       /* segment_mark, sec_info_type, use_rela_p,                       */ \
           0,            0,             0,                                   \
                                                                             \
-       /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,   */  \
+       /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,    */ \
           0,        0,        0,        0,        0,        0,              \
                                                                             \
-       /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */  \
+       /* vma, lma, size, rawsize, compressed_size, relax, relax_count,  */ \
           0,   0,   0,    0,       0,               0,     0,               \
                                                                             \
-       /* output_offset, output_section, alignment_power,               */  \
+       /* output_offset, output_section, alignment_power,                */ \
           0,             &SEC,           0,                                 \
                                                                             \
-       /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
+       /* relocation, orelocation, reloc_count, filepos, rel_filepos,    */ \
           NULL,       NULL,        0,           0,       0,                 \
                                                                             \
-       /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
+       /* line_filepos, userdata, contents, lineno, lineno_count,        */ \
           0,            NULL,     NULL,     NULL,   0,                      \
                                                                             \
        /* entsize, kept_section, moving_line_filepos,                    */ \
-          0,       NULL,          0,                                        \
+          0,       NULL,         0,                                         \
                                                                             \
-       /* target_index, used_by_bfd, constructor_chain, owner,          */  \
+       /* target_index, used_by_bfd, constructor_chain, owner,           */ \
           0,            NULL,        NULL,              NULL,               \
                                                                             \
-       /* symbol,                    symbol_ptr_ptr,                    */  \
+       /* symbol,                    symbol_ptr_ptr,                     */ \
           (struct bfd_symbol *) SYM, &SEC.symbol,                           \
                                                                             \
-       /* map_head, map_tail                                            */  \
-          { NULL }, { NULL }                                                \
+       /* map_head, map_tail, already_assigned                           */ \
+          { NULL }, { NULL }, NULL                                          \
+                                                                            \
          }
 
      /* We use a macro to initialize the static asymbol structures because
@@ -4459,10 +4487,10 @@ attributes.
  -- : BFD_RELOC_PPC64_DTPREL16_HIGHESTA
  -- : BFD_RELOC_PPC64_TPREL34
  -- : BFD_RELOC_PPC64_DTPREL34
- -- : BFD_RELOC_PPC64_GOT_TLSGD34
- -- : BFD_RELOC_PPC64_GOT_TLSLD34
- -- : BFD_RELOC_PPC64_GOT_TPREL34
- -- : BFD_RELOC_PPC64_GOT_DTPREL34
+ -- : BFD_RELOC_PPC64_GOT_TLSGD_PCREL34
+ -- : BFD_RELOC_PPC64_GOT_TLSLD_PCREL34
+ -- : BFD_RELOC_PPC64_GOT_TPREL_PCREL34
+ -- : BFD_RELOC_PPC64_GOT_DTPREL_PCREL34
  -- : BFD_RELOC_PPC64_TLS_PCREL
      PowerPC and PowerPC64 thread-local storage relocations.
  -- : BFD_RELOC_I370_D12
@@ -6169,6 +6197,8 @@ attributes.
  -- : BFD_RELOC_MSP430_ABS_HI16
  -- : BFD_RELOC_MSP430_PREL31
  -- : BFD_RELOC_MSP430_SYM_DIFF
+ -- : BFD_RELOC_MSP430_SET_ULEB128
+ -- : BFD_RELOC_MSP430_SUB_ULEB128
      msp430 specific relocation codes
  -- : BFD_RELOC_NIOS2_S16
  -- : BFD_RELOC_NIOS2_U16
@@ -6270,6 +6300,8 @@ attributes.
  -- : BFD_RELOC_XTENSA_DIFF8
  -- : BFD_RELOC_XTENSA_DIFF16
  -- : BFD_RELOC_XTENSA_DIFF32
+     Xtensa relocations for backward compatibility.  These have been
+     replaced by BFD_RELOC_XTENSA_PDIFF and BFD_RELOC_XTENSA_NDIFF.
      Xtensa relocations to mark the difference of two local symbols.
      These are only needed to support linker relaxation and can be
      ignored when not relaxing.  The field is set to the value of the
@@ -6333,8 +6365,37 @@ attributes.
  -- : BFD_RELOC_XTENSA_TLS_ARG
  -- : BFD_RELOC_XTENSA_TLS_CALL
      Xtensa TLS relocations.
+ -- : BFD_RELOC_XTENSA_PDIFF8
+ -- : BFD_RELOC_XTENSA_PDIFF16
+ -- : BFD_RELOC_XTENSA_PDIFF32
+ -- : BFD_RELOC_XTENSA_NDIFF8
+ -- : BFD_RELOC_XTENSA_NDIFF16
+ -- : BFD_RELOC_XTENSA_NDIFF32
+     Xtensa relocations to mark the difference of two local symbols.
+     These are only needed to support linker relaxation and can be
+     ignored when not relaxing.  The field is set to the value of the
+     difference assuming no relaxation.  The relocation encodes the
+     position of the subtracted symbol so the linker can determine
+     whether to adjust the field value.  PDIFF relocations are used for
+     positive differences, NDIFF relocations are used for negative
+     differences.  The difference value is treated as unsigned with
+     these relocation types, giving full 8/16 value ranges.
  -- : BFD_RELOC_Z80_DISP8
      8 bit signed offset in (ix+d) or (iy+d).
+ -- : BFD_RELOC_Z80_BYTE0
+     First 8 bits of multibyte (32, 24 or 16 bit) value.
+ -- : BFD_RELOC_Z80_BYTE1
+     Second 8 bits of multibyte (32, 24 or 16 bit) value.
+ -- : BFD_RELOC_Z80_BYTE2
+     Third 8 bits of multibyte (32 or 24 bit) value.
+ -- : BFD_RELOC_Z80_BYTE3
+     Fourth 8 bits of multibyte (32 bit) value.
+ -- : BFD_RELOC_Z80_WORD0
+     Lowest 16 bits of multibyte (32 or 24 bit) value.
+ -- : BFD_RELOC_Z80_WORD1
+     Highest 16 bits of multibyte (32 or 24 bit) value.
+ -- : BFD_RELOC_Z80_16_BE
+     Like BFD_RELOC_16 but big-endian.
  -- : BFD_RELOC_Z8K_DISP7
      DJNZ offset.
  -- : BFD_RELOC_Z8K_CALLR
@@ -7429,6 +7490,8 @@ both!
      /* Forward declaration.  */
      typedef struct flag_info flag_info;
 
+     typedef void (*bfd_cleanup) (bfd *);
+
      typedef struct bfd_target
      {
        /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
@@ -7493,9 +7556,9 @@ both!
        /* Format dependent routines: these are vectors of entry points
           within the target vector structure, one for each format to check.  */
 
-       /* Check the format of a file being read.  Return a bfd_target * or zero.  */
-       const struct bfd_target *
-                   (*_bfd_check_format[bfd_type_end]) (bfd *);
+       /* Check the format of a file being read.  Return a bfd_cleanup on
+          success or zero on failure.  */
+       bfd_cleanup (*_bfd_check_format[bfd_type_end]) (bfd *);
 
        /* Set the format of a file being written.  */
        bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
@@ -7643,9 +7706,10 @@ BFD_JUMP_TABLE macros.
      #define bfd_get_symbol_info(b,p,e) \
             BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
        const char *(*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *,
+                                                      bfd_boolean,
                                                       bfd_boolean *);
-     #define bfd_get_symbol_version_string(b,s,h) \
-            BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))
+     #define bfd_get_symbol_version_string(b,s,p,h) \
+            BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,p,h))
        bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
        bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
        alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
@@ -8166,10 +8230,6 @@ architecture, containing, for example, 6
        bfd_arch_k1om,      /* Intel K1OM.  */
      #define bfd_mach_k1om                  (1 << 6)
      #define bfd_mach_k1om_intel_syntax     (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
-     #define bfd_mach_i386_nacl             (1 << 7)
-     #define bfd_mach_i386_i386_nacl        (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
-     #define bfd_mach_x86_64_nacl           (bfd_mach_x86_64 | bfd_mach_i386_nacl)
-     #define bfd_mach_x64_32_nacl           (bfd_mach_x64_32 | bfd_mach_i386_nacl)
        bfd_arch_iamcu,     /* Intel MCU.  */
      #define bfd_mach_iamcu                 (1 << 8)
      #define bfd_mach_i386_iamcu            (bfd_mach_i386_i386 | bfd_mach_iamcu)
@@ -8187,7 +8247,6 @@ architecture, containing, for example, 6
      #define bfd_mach_h8300sx       6
      #define bfd_mach_h8300sxn      7
        bfd_arch_pdp11,     /* DEC PDP-11.  */
-       bfd_arch_plugin,
        bfd_arch_powerpc,   /* PowerPC.  */
      #define bfd_mach_ppc           32
      #define bfd_mach_ppc64         64
@@ -8310,7 +8369,6 @@ architecture, containing, for example, 6
      #define bfd_mach_tic4x         40
        bfd_arch_tic54x,    /* Texas Instruments TMS320C54X.  */
        bfd_arch_tic6x,     /* Texas Instruments TMS320C6X.  */
-       bfd_arch_tic80,     /* TI TMS320c80 (MVP).  */
        bfd_arch_v850,      /* NEC V850.  */
        bfd_arch_v850_rh850,/* NEC V850 (using RH850 ABI).  */
      #define bfd_mach_v850          1
@@ -8372,6 +8430,7 @@ architecture, containing, for example, 6
      #define bfd_mach_iq10          2
        bfd_arch_bpf,       /* Linux eBPF.  */
      #define bfd_mach_bpf           1
+     #define bfd_mach_xbpf          2
        bfd_arch_epiphany,  /* Adapteva EPIPHANY.  */
      #define bfd_mach_epiphany16    1
      #define bfd_mach_epiphany32    2
@@ -8461,10 +8520,25 @@ architecture, containing, for example, 6
        bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
      #define bfd_mach_xtensa        1
        bfd_arch_z80,
-     #define bfd_mach_z80strict     1 /* No undocumented opcodes.  */
-     #define bfd_mach_z80           3 /* With ixl, ixh, iyl, and iyh.  */
-     #define bfd_mach_z80full       7 /* All undocumented instructions.  */
-     #define bfd_mach_r800          11 /* R800: successor with multiplication.  */
+     /* Zilog Z80 without undocumented opcodes.  */
+     #define bfd_mach_z80strict     1
+     /* Zilog Z180: successor with additional instructions, but without
+      halves of ix and iy.  */
+     #define bfd_mach_z180          2
+     /* Zilog Z80 with ixl, ixh, iyl, and iyh.  */
+     #define bfd_mach_z80           3
+     /* Zilog eZ80 (successor of Z80 & Z180) in Z80 (16-bit address) mode.  */
+     #define bfd_mach_ez80_z80      4
+     /* Zilog eZ80 (successor of Z80 & Z180) in ADL (24-bit address) mode.  */
+     #define bfd_mach_ez80_adl      5
+     /* Z80N */
+     #define bfd_mach_z80n          6
+     /* Zilog Z80 with all undocumented instructions.  */
+     #define bfd_mach_z80full       7
+     /* GameBoy Z80 (reduced instruction set).  */
+     #define bfd_mach_gbz80         8
+     /* ASCII R800: successor with multiplication.  */
+     #define bfd_mach_r800          11
        bfd_arch_lm32,      /* Lattice Mico32.  */
      #define bfd_mach_lm32          1
        bfd_arch_microblaze,/* Xilinx MicroBlaze.  */
@@ -8475,6 +8549,7 @@ architecture, containing, for example, 6
      #define bfd_mach_tilegx32      2
        bfd_arch_aarch64,   /* AArch64.  */
      #define bfd_mach_aarch64 0
+     #define bfd_mach_aarch64_8R    1
      #define bfd_mach_aarch64_ilp32 32
        bfd_arch_nios2,     /* Nios II.  */
      #define bfd_mach_nios2         0
@@ -8498,6 +8573,7 @@ architecture, containing, for example, 6
      #define bfd_mach_ck803         5
      #define bfd_mach_ck807         6
      #define bfd_mach_ck810         7
+     #define bfd_mach_ck860         8
        bfd_arch_last
        };
 
@@ -8983,16 +9059,7 @@ direction.
 Allocate a block of WANTED bytes of memory attached to 'abfd' and return
 a pointer to it.
 
-2.14.1.13 'bfd_alloc2'
-......................
-
-*Synopsis*
-     void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
-   *Description*
-Allocate a block of NMEMB elements of SIZE bytes each of memory attached
-to 'abfd' and return a pointer to it.
-
-2.14.1.14 'bfd_zalloc'
+2.14.1.13 'bfd_zalloc'
 ......................
 
 *Synopsis*
@@ -9001,16 +9068,7 @@ to 'abfd' and return a pointer to it.
 Allocate a block of WANTED bytes of zeroed memory attached to 'abfd' and
 return a pointer to it.
 
-2.14.1.15 'bfd_zalloc2'
-.......................
-
-*Synopsis*
-     void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
-   *Description*
-Allocate a block of NMEMB elements of SIZE bytes each of zeroed memory
-attached to 'abfd' and return a pointer to it.
-
-2.14.1.16 'bfd_calc_gnu_debuglink_crc32'
+2.14.1.14 'bfd_calc_gnu_debuglink_crc32'
 ........................................
 
 *Synopsis*
@@ -9024,7 +9082,7 @@ for LEN bytes of BUF.
    *Returns*
 Return the updated CRC32 value.
 
-2.14.1.17 'bfd_get_debug_link_info_1'
+2.14.1.15 'bfd_get_debug_link_info_1'
 .....................................
 
 *Synopsis*
@@ -9046,7 +9104,7 @@ file.
    The returned filename is allocated with 'malloc'; freeing it is the
 responsibility of the caller.
 
-2.14.1.18 'bfd_get_debug_link_info'
+2.14.1.16 'bfd_get_debug_link_info'
 ...................................
 
 *Synopsis*
@@ -9064,7 +9122,7 @@ file.
    The returned filename is allocated with 'malloc'; freeing it is the
 responsibility of the caller.
 
-2.14.1.19 'bfd_get_alt_debug_link_info'
+2.14.1.17 'bfd_get_alt_debug_link_info'
 .......................................
 
 *Synopsis*
@@ -9078,7 +9136,7 @@ return filename and update BUILDID_LEN a
 filename and build_id are allocated with 'malloc'; freeing them is the
 responsibility of the caller.
 
-2.14.1.20 'separate_debug_file_exists'
+2.14.1.18 'separate_debug_file_exists'
 ......................................
 
 *Synopsis*
@@ -9091,7 +9149,7 @@ is a pointer to an 'unsigned long' conta
    The CRC32_P parameter is an untyped pointer because this routine is
 used as a 'check_func_type' function.
 
-2.14.1.21 'separate_alt_debug_file_exists'
+2.14.1.19 'separate_alt_debug_file_exists'
 ..........................................
 
 *Synopsis*
@@ -9100,7 +9158,7 @@ used as a 'check_func_type' function.
    *Description*
 Checks to see if NAME is a file.
 
-2.14.1.22 'find_separate_debug_file'
+2.14.1.20 'find_separate_debug_file'
 ....................................
 
 *Synopsis*
@@ -9125,7 +9183,7 @@ Returns the filename of the first file t
 result from the CHECK function.  Returns NULL if no valid file could be
 found.
 
-2.14.1.23 'bfd_follow_gnu_debuglink'
+2.14.1.21 'bfd_follow_gnu_debuglink'
 ....................................
 
 *Synopsis*
@@ -9146,7 +9204,7 @@ directory.
 pointer to a heap-allocated string containing the filename.  The caller
 is responsible for freeing this string.
 
-2.14.1.24 'bfd_follow_gnu_debugaltlink'
+2.14.1.22 'bfd_follow_gnu_debugaltlink'
 .......................................
 
 *Synopsis*
@@ -9166,7 +9224,7 @@ directory.
 pointer to a heap-allocated string containing the filename.  The caller
 is responsible for freeing this string.
 
-2.14.1.25 'bfd_create_gnu_debuglink_section'
+2.14.1.23 'bfd_create_gnu_debuglink_section'
 ............................................
 
 *Synopsis*
@@ -9180,7 +9238,7 @@ sized to be big enough to contain a link
 A pointer to the new section is returned if all is ok.  Otherwise 'NULL'
 is returned and bfd_error is set.
 
-2.14.1.26 'bfd_fill_in_gnu_debuglink_section'
+2.14.1.24 'bfd_fill_in_gnu_debuglink_section'
 .............................................
 
 *Synopsis*
@@ -9195,7 +9253,7 @@ The filename should be relative to the c
 'TRUE' is returned if all is ok.  Otherwise 'FALSE' is returned and
 bfd_error is set.
 
-2.14.1.27 'get_build_id'
+2.14.1.25 'get_build_id'
 ........................
 
 *Synopsis*
@@ -9209,7 +9267,7 @@ memory allocated to ABFD, and this is th
 Returns a pointer to the build-id structure if a build-id could be
 found.  If no build-id is found NULL is returned and error code is set.
 
-2.14.1.28 'get_build_id_name'
+2.14.1.26 'get_build_id_name'
 .............................
 
 *Synopsis*
@@ -9226,7 +9284,7 @@ filename is returned then the BUILD_ID_O
 a 'struct bfd_build_id' pointer) is set to a pointer to the build_id
 structure.
 
-2.14.1.29 'check_build_id_file'
+2.14.1.27 'check_build_id_file'
 ...............................
 
 *Synopsis*
@@ -9240,7 +9298,7 @@ Returns TRUE if the file exists, is read
 which matches the build-id pointed at by BUILD_ID_P (which is really a
 'struct bfd_build_id **').
 
-2.14.1.30 'bfd_follow_build_id_debuglink'
+2.14.1.28 'bfd_follow_build_id_debuglink'
 .........................................
 
 *Synopsis*
@@ -9264,14 +9322,15 @@ directory.
 pointer to a heap-allocated string containing the filename.  The caller
 is responsible for freeing this string.
 
-2.14.1.31 'bfd_set_filename'
+2.14.1.29 'bfd_set_filename'
 ............................
 
 *Synopsis*
-     void bfd_set_filename (bfd *abfd, char *filename);
+     const char *bfd_set_filename (bfd *abfd, const char *filename);
    *Description*
-Set the filename of ABFD.  The old filename, if any, is freed.  FILENAME
-must be allocated using 'xmalloc'.  After this call, it is owned ABFD.
+Set the filename of ABFD, copying the FILENAME parameter to bfd_alloc'd
+memory owned by ABFD.  Returns a pointer the newly allocated name, or
+NULL if the allocation failed.
 
 
 File: bfd.info,  Node: Internal,  Next: File Caching,  Prev: Opening and Closing,  Up: BFD front end
@@ -9371,7 +9430,7 @@ less than a 'bfd_vma', use 'gcc -Wconver
        BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
 
      #define bfd_get(bits, abfd, ptr)                       \
-       ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
+       ((bits) == 8 ? bfd_get_8 (abfd, ptr)                 \
         : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
         : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
         : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
@@ -11986,7 +12045,7 @@ BFD Index
                                                              (line   83)
 * _bfd_generic_make_empty_symbol:        symbol handling functions.
                                                              (line   96)
-* _bfd_generic_set_reloc:                howto manager.      (line 3496)
+* _bfd_generic_set_reloc:                howto manager.      (line 3529)
 * _bfd_generic_verify_endian_match:      Writing the symbol table.
                                                              (line  172)
 * _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table.
@@ -11997,7 +12056,7 @@ BFD Index
                                                              (line    6)
 * _bfd_relocate_contents:                Relocating the section contents.
                                                              (line   22)
-* _bfd_unrecognized_reloc:               howto manager.      (line 3508)
+* _bfd_unrecognized_reloc:               howto manager.      (line 3541)
 * aout_SIZE_machine_type:                aout.               (line  145)
 * aout_SIZE_mkobject:                    aout.               (line  137)
 * aout_SIZE_new_section_hook:            aout.               (line  175)
@@ -12010,15 +12069,13 @@ BFD Index
 * BFD canonical format:                  Canonical format.   (line   11)
 * bfd_alloc:                             Opening and Closing.
                                                              (line  239)
-* bfd_alloc2:                            Opening and Closing.
-                                                             (line  248)
-* bfd_alt_mach_code:                     Miscellaneous.      (line  291)
-* bfd_arch_bits_per_address:             Architectures.      (line  655)
-* bfd_arch_bits_per_byte:                Architectures.      (line  647)
-* bfd_arch_default_fill:                 Architectures.      (line  737)
-* bfd_arch_get_compatible:               Architectures.      (line  590)
-* bfd_arch_list:                         Architectures.      (line  581)
-* bfd_arch_mach_octets_per_byte:         Architectures.      (line  725)
+* bfd_alt_mach_code:                     Miscellaneous.      (line  292)
+* bfd_arch_bits_per_address:             Architectures.      (line  667)
+* bfd_arch_bits_per_byte:                Architectures.      (line  659)
+* bfd_arch_default_fill:                 Architectures.      (line  749)
+* bfd_arch_get_compatible:               Architectures.      (line  602)
+* bfd_arch_list:                         Architectures.      (line  593)
+* bfd_arch_mach_octets_per_byte:         Architectures.      (line  737)
 * BFD_ARELOC_BFIN_ADD:                   howto manager.      (line 1144)
 * BFD_ARELOC_BFIN_ADDR:                  howto manager.      (line 1178)
 * BFD_ARELOC_BFIN_AND:                   howto manager.      (line 1158)
@@ -12043,11 +12100,11 @@ BFD Index
 * bfd_cache_close_all:                   File Caching.       (line   38)
 * bfd_cache_init:                        File Caching.       (line   17)
 * bfd_calc_gnu_debuglink_crc32:          Opening and Closing.
-                                                             (line  275)
+                                                             (line  257)
 * bfd_canonicalize_reloc:                Miscellaneous.      (line   18)
 * bfd_canonicalize_symtab:               symbol handling functions.
                                                              (line   52)
-* bfd_check_compression_header:          Miscellaneous.      (line  363)
+* bfd_check_compression_header:          Miscellaneous.      (line  364)
 * bfd_check_format:                      Formats.            (line   20)
 * bfd_check_format_matches:              Formats.            (line   51)
 * bfd_check_overflow:                    typedef arelent.    (line  328)
@@ -12056,8 +12113,8 @@ BFD Index
 * bfd_close_all_done:                    Opening and Closing.
                                                              (line  179)
 * bfd_coff_backend_data:                 coff.               (line  296)
-* bfd_convert_section_contents:          Miscellaneous.      (line  401)
-* bfd_convert_section_size:              Miscellaneous.      (line  391)
+* bfd_convert_section_contents:          Miscellaneous.      (line  402)
+* bfd_convert_section_size:              Miscellaneous.      (line  392)
 * bfd_copy_private_bfd_data:             Miscellaneous.      (line  159)
 * bfd_copy_private_header_data:          Miscellaneous.      (line  142)
 * bfd_copy_private_section_data:         section prototypes. (line  279)
@@ -12069,34 +12126,34 @@ BFD Index
 * bfd_create:                            Opening and Closing.
                                                              (line  198)
 * bfd_create_gnu_debuglink_section:      Opening and Closing.
-                                                             (line  431)
+                                                             (line  413)
 * bfd_decode_symclass:                   symbol handling functions.
                                                              (line  116)
-* bfd_default_arch_struct:               Architectures.      (line  602)
-* bfd_default_compatible:                Architectures.      (line  664)
-* bfd_default_reloc_type_lookup:         howto manager.      (line 3420)
-* bfd_default_scan:                      Architectures.      (line  673)
-* bfd_default_set_arch_mach:             Architectures.      (line  620)
-* bfd_demangle:                          Miscellaneous.      (line  342)
-* bfd_emul_get_commonpagesize:           Miscellaneous.      (line  322)
-* bfd_emul_get_maxpagesize:              Miscellaneous.      (line  302)
-* bfd_emul_set_commonpagesize:           Miscellaneous.      (line  333)
-* bfd_emul_set_maxpagesize:              Miscellaneous.      (line  313)
+* bfd_default_arch_struct:               Architectures.      (line  614)
+* bfd_default_compatible:                Architectures.      (line  676)
+* bfd_default_reloc_type_lookup:         howto manager.      (line 3453)
+* bfd_default_scan:                      Architectures.      (line  685)
+* bfd_default_set_arch_mach:             Architectures.      (line  632)
+* bfd_demangle:                          Miscellaneous.      (line  343)
+* bfd_emul_get_commonpagesize:           Miscellaneous.      (line  323)
+* bfd_emul_get_maxpagesize:              Miscellaneous.      (line  303)
+* bfd_emul_set_commonpagesize:           Miscellaneous.      (line  334)
+* bfd_emul_set_maxpagesize:              Miscellaneous.      (line  314)
 * bfd_errmsg:                            Error reporting.    (line   79)
 * bfd_fdopenr:                           Opening and Closing.
                                                              (line   56)
 * bfd_fill_in_gnu_debuglink_section:     Opening and Closing.
-                                                             (line  445)
-* bfd_find_target:                       bfd_target.         (line  567)
+                                                             (line  427)
+* bfd_find_target:                       bfd_target.         (line  570)
 * bfd_find_version_for_sym:              Writing the symbol table.
                                                              (line  111)
-* bfd_flavour_name:                      bfd_target.         (line  630)
+* bfd_flavour_name:                      bfd_target.         (line  633)
 * bfd_follow_build_id_debuglink:         Opening and Closing.
-                                                             (line  505)
+                                                             (line  487)
 * bfd_follow_gnu_debugaltlink:           Opening and Closing.
-                                                             (line  411)
+                                                             (line  393)
 * bfd_follow_gnu_debuglink:              Opening and Closing.
-                                                             (line  390)
+                                                             (line  372)
 * bfd_fopen:                             Opening and Closing.
                                                              (line   11)
 * bfd_format_string:                     Formats.            (line   78)
@@ -12105,43 +12162,43 @@ BFD Index
 * bfd_generic_define_start_stop:         Writing the symbol table.
                                                              (line   97)
 * bfd_generic_discard_group:             section prototypes. (line  312)
-* bfd_generic_gc_sections:               howto manager.      (line 3451)
-* bfd_generic_get_relocated_section_contents: howto manager. (line 3481)
+* bfd_generic_gc_sections:               howto manager.      (line 3484)
+* bfd_generic_get_relocated_section_contents: howto manager. (line 3514)
 * bfd_generic_group_name:                section prototypes. (line  304)
 * bfd_generic_is_group_section:          section prototypes. (line  296)
-* bfd_generic_lookup_section_flags:      howto manager.      (line 3461)
-* bfd_generic_merge_sections:            howto manager.      (line 3471)
-* bfd_generic_relax_section:             howto manager.      (line 3438)
+* bfd_generic_lookup_section_flags:      howto manager.      (line 3494)
+* bfd_generic_merge_sections:            howto manager.      (line 3504)
+* bfd_generic_relax_section:             howto manager.      (line 3471)
 * bfd_get_alt_debug_link_info:           Opening and Closing.
-                                                             (line  329)
-* bfd_get_arch:                          Architectures.      (line  631)
-* bfd_get_arch_info:                     Architectures.      (line  683)
+                                                             (line  311)
+* bfd_get_arch:                          Architectures.      (line  643)
+* bfd_get_arch_info:                     Architectures.      (line  695)
 * bfd_get_arch_size:                     Miscellaneous.      (line   63)
-* bfd_get_compression_header_size:       Miscellaneous.      (line  380)
+* bfd_get_compression_header_size:       Miscellaneous.      (line  381)
 * bfd_get_debug_link_info:               Opening and Closing.
-                                                             (line  311)
+                                                             (line  293)
 * bfd_get_debug_link_info_1:             Opening and Closing.
-                                                             (line  289)
+                                                             (line  271)
 * bfd_get_error:                         Error reporting.    (line   49)
-* bfd_get_file_size:                     Miscellaneous.      (line  490)
+* bfd_get_file_size:                     Miscellaneous.      (line  493)
 * bfd_get_gp_size:                       Miscellaneous.      (line  106)
 * bfd_get_linker_section:                section prototypes. (line   37)
-* bfd_get_mach:                          Architectures.      (line  639)
-* bfd_get_mtime:                         Miscellaneous.      (line  453)
+* bfd_get_mach:                          Architectures.      (line  651)
+* bfd_get_mtime:                         Miscellaneous.      (line  454)
 * bfd_get_next_mapent:                   Archives.           (line   57)
 * bfd_get_next_section_by_name:          section prototypes. (line   25)
-* bfd_get_reloc_code_name:               howto manager.      (line 3429)
+* bfd_get_reloc_code_name:               howto manager.      (line 3462)
 * bfd_get_reloc_size:                    typedef arelent.    (line  306)
 * bfd_get_reloc_upper_bound:             Miscellaneous.      (line    8)
 * bfd_get_section_by_name:               section prototypes. (line   16)
 * bfd_get_section_by_name_if:            section prototypes. (line   46)
 * bfd_get_section_contents:              section prototypes. (line  252)
 * bfd_get_sign_extend_vma:               Miscellaneous.      (line   78)
-* bfd_get_size:                          Miscellaneous.      (line  462)
+* bfd_get_size:                          Miscellaneous.      (line  463)
 * bfd_get_size <1>:                      Internal.           (line   24)
 * bfd_get_symtab_upper_bound:            symbol handling functions.
                                                              (line    5)
-* bfd_get_target_info:                   bfd_target.         (line  583)
+* bfd_get_target_info:                   bfd_target.         (line  586)
 * bfd_get_unique_section_name:           section prototypes. (line   65)
 * bfd_hash_allocate:                     Creating and Freeing a Hash Table.
                                                              (line   17)
@@ -12172,13 +12229,13 @@ BFD Index
                                                              (line   39)
 * bfd_is_undefined_symclass:             symbol handling functions.
                                                              (line  125)
-* bfd_iterate_over_targets:              bfd_target.         (line  618)
+* bfd_iterate_over_targets:              bfd_target.         (line  621)
 * bfd_link_check_relocs:                 Writing the symbol table.
                                                              (line  133)
 * bfd_link_split_section:                Writing the symbol table.
                                                              (line   43)
 * bfd_log2:                              Internal.           (line  180)
-* bfd_lookup_arch:                       Architectures.      (line  691)
+* bfd_lookup_arch:                       Architectures.      (line  703)
 * bfd_make_debug_symbol:                 symbol handling functions.
                                                              (line  106)
 * bfd_make_empty_symbol:                 symbol handling functions.
@@ -12196,8 +12253,8 @@ BFD Index
 * bfd_map_over_sections:                 section prototypes. (line  176)
 * bfd_merge_private_bfd_data:            Writing the symbol table.
                                                              (line  155)
-* bfd_mmap:                              Miscellaneous.      (line  499)
-* bfd_octets_per_byte:                   Architectures.      (line  714)
+* bfd_mmap:                              Miscellaneous.      (line  502)
+* bfd_octets_per_byte:                   Architectures.      (line  726)
 * bfd_openr:                             Opening and Closing.
                                                              (line   37)
 * bfd_openr_iovec:                       Opening and Closing.
@@ -12210,8 +12267,8 @@ BFD Index
 * bfd_open_file:                         File Caching.       (line   51)
 * bfd_perform_relocation:                typedef arelent.    (line  357)
 * bfd_perror:                            Error reporting.    (line   88)
-* bfd_printable_arch_mach:               Architectures.      (line  702)
-* bfd_printable_name:                    Architectures.      (line  562)
+* bfd_printable_arch_mach:               Architectures.      (line  714)
+* bfd_printable_name:                    Architectures.      (line  574)
 * bfd_print_symbol_vandf:                symbol handling functions.
                                                              (line   73)
 * bfd_put_size:                          Internal.           (line   21)
@@ -12349,145 +12406,145 @@ BFD Index
 * BFD_RELOC_8_PCREL:                     howto manager.      (line   38)
 * BFD_RELOC_8_PLTOFF:                    howto manager.      (line   65)
 * BFD_RELOC_8_PLT_PCREL:                 howto manager.      (line   58)
-* BFD_RELOC_AARCH64_16:                  howto manager.      (line 2761)
-* BFD_RELOC_AARCH64_16_PCREL:            howto manager.      (line 2767)
-* BFD_RELOC_AARCH64_32:                  howto manager.      (line 2760)
-* BFD_RELOC_AARCH64_32_PCREL:            howto manager.      (line 2766)
-* BFD_RELOC_AARCH64_64:                  howto manager.      (line 2759)
-* BFD_RELOC_AARCH64_64_PCREL:            howto manager.      (line 2765)
-* BFD_RELOC_AARCH64_ADD_LO12:            howto manager.      (line 2840)
-* BFD_RELOC_AARCH64_ADR_GOT_PAGE:        howto manager.      (line 2886)
-* BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL:   howto manager.      (line 2836)
-* BFD_RELOC_AARCH64_ADR_HI21_PCREL:      howto manager.      (line 2833)
-* BFD_RELOC_AARCH64_ADR_LO21_PCREL:      howto manager.      (line 2830)
-* BFD_RELOC_AARCH64_BRANCH19:            howto manager.      (line 2852)
-* BFD_RELOC_AARCH64_CALL26:              howto manager.      (line 2860)
-* BFD_RELOC_AARCH64_COPY:                howto manager.      (line 3053)
-* BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP:  howto manager.      (line 3077)
-* BFD_RELOC_AARCH64_GLOB_DAT:            howto manager.      (line 3055)
-* BFD_RELOC_AARCH64_GOT_LD_PREL19:       howto manager.      (line 2880)
-* BFD_RELOC_AARCH64_IRELATIVE:           howto manager.      (line 3069)
-* BFD_RELOC_AARCH64_JUMP26:              howto manager.      (line 2856)
-* BFD_RELOC_AARCH64_JUMP_SLOT:           howto manager.      (line 3057)
-* BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14:   howto manager.      (line 2907)
-* BFD_RELOC_AARCH64_LD32_GOT_LO12_NC:    howto manager.      (line 2894)
-* BFD_RELOC_AARCH64_LD64_GOTOFF_LO15:    howto manager.      (line 2904)
-* BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15:   howto manager.      (line 2910)
-* BFD_RELOC_AARCH64_LD64_GOT_LO12_NC:    howto manager.      (line 2890)
-* BFD_RELOC_AARCH64_LDST128_LO12:        howto manager.      (line 2876)
-* BFD_RELOC_AARCH64_LDST16_LO12:         howto manager.      (line 2864)
-* BFD_RELOC_AARCH64_LDST32_LO12:         howto manager.      (line 2868)
-* BFD_RELOC_AARCH64_LDST64_LO12:         howto manager.      (line 2872)
-* BFD_RELOC_AARCH64_LDST8_LO12:          howto manager.      (line 2844)
-* BFD_RELOC_AARCH64_LDST_LO12:           howto manager.      (line 3080)
-* BFD_RELOC_AARCH64_LD_GOT_LO12_NC:      howto manager.      (line 3098)
-* BFD_RELOC_AARCH64_LD_LO19_PCREL:       howto manager.      (line 2826)
-* BFD_RELOC_AARCH64_MOVW_G0:             howto manager.      (line 2770)
-* BFD_RELOC_AARCH64_MOVW_G0_NC:          howto manager.      (line 2773)
-* BFD_RELOC_AARCH64_MOVW_G0_S:           howto manager.      (line 2791)
-* BFD_RELOC_AARCH64_MOVW_G1:             howto manager.      (line 2776)
-* BFD_RELOC_AARCH64_MOVW_G1_NC:          howto manager.      (line 2779)
-* BFD_RELOC_AARCH64_MOVW_G1_S:           howto manager.      (line 2795)
-* BFD_RELOC_AARCH64_MOVW_G2:             howto manager.      (line 2782)
-* BFD_RELOC_AARCH64_MOVW_G2_NC:          howto manager.      (line 2785)
-* BFD_RELOC_AARCH64_MOVW_G2_S:           howto manager.      (line 2799)
-* BFD_RELOC_AARCH64_MOVW_G3:             howto manager.      (line 2788)
-* BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC:   howto manager.      (line 2898)
-* BFD_RELOC_AARCH64_MOVW_GOTOFF_G1:      howto manager.      (line 2901)
-* BFD_RELOC_AARCH64_MOVW_PREL_G0:        howto manager.      (line 2803)
-* BFD_RELOC_AARCH64_MOVW_PREL_G0_NC:     howto manager.      (line 2807)
-* BFD_RELOC_AARCH64_MOVW_PREL_G1:        howto manager.      (line 2811)
-* BFD_RELOC_AARCH64_MOVW_PREL_G1_NC:     howto manager.      (line 2814)
-* BFD_RELOC_AARCH64_MOVW_PREL_G2:        howto manager.      (line 2817)
-* BFD_RELOC_AARCH64_MOVW_PREL_G2_NC:     howto manager.      (line 2820)
-* BFD_RELOC_AARCH64_MOVW_PREL_G3:        howto manager.      (line 2823)
-* BFD_RELOC_AARCH64_NONE:                howto manager.      (line 2757)
-* BFD_RELOC_AARCH64_NULL:                howto manager.      (line 2755)
-* BFD_RELOC_AARCH64_RELATIVE:            howto manager.      (line 3059)
-* BFD_RELOC_AARCH64_RELOC_END:           howto manager.      (line 3071)
-* BFD_RELOC_AARCH64_RELOC_START:         howto manager.      (line 2750)
-* BFD_RELOC_AARCH64_TLSDESC:             howto manager.      (line 3067)
-* BFD_RELOC_AARCH64_TLSDESC_ADD:         howto manager.      (line 3049)
-* BFD_RELOC_AARCH64_TLSDESC_ADD_LO12:    howto manager.      (line 3041)
-* BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:  howto manager.      (line 3035)
-* BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:  howto manager.      (line 3033)
-* BFD_RELOC_AARCH64_TLSDESC_CALL:        howto manager.      (line 3051)
-* BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC: howto manager.     (line 3039)
-* BFD_RELOC_AARCH64_TLSDESC_LD64_LO12:   howto manager.      (line 3037)
-* BFD_RELOC_AARCH64_TLSDESC_LDR:         howto manager.      (line 3047)
-* BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC:  howto manager.      (line 3104)
-* BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:   howto manager.      (line 3031)
-* BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:   howto manager.      (line 3045)
-* BFD_RELOC_AARCH64_TLSDESC_OFF_G1:      howto manager.      (line 3043)
-* BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:   howto manager.      (line 2920)
-* BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:    howto manager.      (line 2913)
-* BFD_RELOC_AARCH64_TLSGD_ADR_PREL21:    howto manager.      (line 2918)
-* BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:    howto manager.      (line 2924)
-* BFD_RELOC_AARCH64_TLSGD_MOVW_G1:       howto manager.      (line 2926)
+* BFD_RELOC_AARCH64_16:                  howto manager.      (line 2794)
+* BFD_RELOC_AARCH64_16_PCREL:            howto manager.      (line 2800)
+* BFD_RELOC_AARCH64_32:                  howto manager.      (line 2793)
+* BFD_RELOC_AARCH64_32_PCREL:            howto manager.      (line 2799)
+* BFD_RELOC_AARCH64_64:                  howto manager.      (line 2792)
+* BFD_RELOC_AARCH64_64_PCREL:            howto manager.      (line 2798)
+* BFD_RELOC_AARCH64_ADD_LO12:            howto manager.      (line 2873)
+* BFD_RELOC_AARCH64_ADR_GOT_PAGE:        howto manager.      (line 2919)
+* BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL:   howto manager.      (line 2869)
+* BFD_RELOC_AARCH64_ADR_HI21_PCREL:      howto manager.      (line 2866)
+* BFD_RELOC_AARCH64_ADR_LO21_PCREL:      howto manager.      (line 2863)
+* BFD_RELOC_AARCH64_BRANCH19:            howto manager.      (line 2885)
+* BFD_RELOC_AARCH64_CALL26:              howto manager.      (line 2893)
+* BFD_RELOC_AARCH64_COPY:                howto manager.      (line 3086)
+* BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP:  howto manager.      (line 3110)
+* BFD_RELOC_AARCH64_GLOB_DAT:            howto manager.      (line 3088)
+* BFD_RELOC_AARCH64_GOT_LD_PREL19:       howto manager.      (line 2913)
+* BFD_RELOC_AARCH64_IRELATIVE:           howto manager.      (line 3102)
+* BFD_RELOC_AARCH64_JUMP26:              howto manager.      (line 2889)
+* BFD_RELOC_AARCH64_JUMP_SLOT:           howto manager.      (line 3090)
+* BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14:   howto manager.      (line 2940)
+* BFD_RELOC_AARCH64_LD32_GOT_LO12_NC:    howto manager.      (line 2927)
+* BFD_RELOC_AARCH64_LD64_GOTOFF_LO15:    howto manager.      (line 2937)
+* BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15:   howto manager.      (line 2943)
+* BFD_RELOC_AARCH64_LD64_GOT_LO12_NC:    howto manager.      (line 2923)
+* BFD_RELOC_AARCH64_LDST128_LO12:        howto manager.      (line 2909)
+* BFD_RELOC_AARCH64_LDST16_LO12:         howto manager.      (line 2897)
+* BFD_RELOC_AARCH64_LDST32_LO12:         howto manager.      (line 2901)
+* BFD_RELOC_AARCH64_LDST64_LO12:         howto manager.      (line 2905)
+* BFD_RELOC_AARCH64_LDST8_LO12:          howto manager.      (line 2877)
+* BFD_RELOC_AARCH64_LDST_LO12:           howto manager.      (line 3113)
+* BFD_RELOC_AARCH64_LD_GOT_LO12_NC:      howto manager.      (line 3131)
+* BFD_RELOC_AARCH64_LD_LO19_PCREL:       howto manager.      (line 2859)
+* BFD_RELOC_AARCH64_MOVW_G0:             howto manager.      (line 2803)
+* BFD_RELOC_AARCH64_MOVW_G0_NC:          howto manager.      (line 2806)
+* BFD_RELOC_AARCH64_MOVW_G0_S:           howto manager.      (line 2824)
+* BFD_RELOC_AARCH64_MOVW_G1:             howto manager.      (line 2809)
+* BFD_RELOC_AARCH64_MOVW_G1_NC:          howto manager.      (line 2812)
+* BFD_RELOC_AARCH64_MOVW_G1_S:           howto manager.      (line 2828)
+* BFD_RELOC_AARCH64_MOVW_G2:             howto manager.      (line 2815)
+* BFD_RELOC_AARCH64_MOVW_G2_NC:          howto manager.      (line 2818)
+* BFD_RELOC_AARCH64_MOVW_G2_S:           howto manager.      (line 2832)
+* BFD_RELOC_AARCH64_MOVW_G3:             howto manager.      (line 2821)
+* BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC:   howto manager.      (line 2931)
+* BFD_RELOC_AARCH64_MOVW_GOTOFF_G1:      howto manager.      (line 2934)
+* BFD_RELOC_AARCH64_MOVW_PREL_G0:        howto manager.      (line 2836)
+* BFD_RELOC_AARCH64_MOVW_PREL_G0_NC:     howto manager.      (line 2840)
+* BFD_RELOC_AARCH64_MOVW_PREL_G1:        howto manager.      (line 2844)
+* BFD_RELOC_AARCH64_MOVW_PREL_G1_NC:     howto manager.      (line 2847)
+* BFD_RELOC_AARCH64_MOVW_PREL_G2:        howto manager.      (line 2850)
+* BFD_RELOC_AARCH64_MOVW_PREL_G2_NC:     howto manager.      (line 2853)
+* BFD_RELOC_AARCH64_MOVW_PREL_G3:        howto manager.      (line 2856)
+* BFD_RELOC_AARCH64_NONE:                howto manager.      (line 2790)
+* BFD_RELOC_AARCH64_NULL:                howto manager.      (line 2788)
+* BFD_RELOC_AARCH64_RELATIVE:            howto manager.      (line 3092)
+* BFD_RELOC_AARCH64_RELOC_END:           howto manager.      (line 3104)
+* BFD_RELOC_AARCH64_RELOC_START:         howto manager.      (line 2783)
+* BFD_RELOC_AARCH64_TLSDESC:             howto manager.      (line 3100)
+* BFD_RELOC_AARCH64_TLSDESC_ADD:         howto manager.      (line 3082)
+* BFD_RELOC_AARCH64_TLSDESC_ADD_LO12:    howto manager.      (line 3074)
+* BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:  howto manager.      (line 3068)
+* BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:  howto manager.      (line 3066)
+* BFD_RELOC_AARCH64_TLSDESC_CALL:        howto manager.      (line 3084)
+* BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC: howto manager.     (line 3072)
+* BFD_RELOC_AARCH64_TLSDESC_LD64_LO12:   howto manager.      (line 3070)
+* BFD_RELOC_AARCH64_TLSDESC_LDR:         howto manager.      (line 3080)
+* BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC:  howto manager.      (line 3137)
+* BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:   howto manager.      (line 3064)
+* BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:   howto manager.      (line 3078)
+* BFD_RELOC_AARCH64_TLSDESC_OFF_G1:      howto manager.      (line 3076)
+* BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:   howto manager.      (line 2953)
+* BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:    howto manager.      (line 2946)
+* BFD_RELOC_AARCH64_TLSGD_ADR_PREL21:    howto manager.      (line 2951)
+* BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:    howto manager.      (line 2957)
+* BFD_RELOC_AARCH64_TLSGD_MOVW_G1:       howto manager.      (line 2959)
 * BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: howto manager.
-                                                             (line 2928)
+                                                             (line 2961)
 * BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC: howto manager.
-                                                             (line 2932)
+                                                             (line 2965)
 * BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: howto manager.
-                                                             (line 2930)
+                                                             (line 2963)
 * BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC: howto manager.
-                                                             (line 3101)
-* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 2934)
+                                                             (line 3134)
+* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 2967)
 * BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC: howto manager.
-                                                             (line 2936)
-* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1: howto manager.   (line 2938)
-* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12: howto manager.    (line 2940)
-* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12: howto manager.    (line 2942)
-* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC: howto manager. (line 2944)
-* BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC:   howto manager.      (line 2947)
-* BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21:    howto manager.      (line 2951)
-* BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:    howto manager.      (line 2954)
-* BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12: howto manager. (line 2957)
+                                                             (line 2969)
+* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1: howto manager.   (line 2971)
+* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12: howto manager.    (line 2973)
+* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12: howto manager.    (line 2975)
+* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC: howto manager. (line 2977)
+* BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC:   howto manager.      (line 2980)
+* BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21:    howto manager.      (line 2984)
+* BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:    howto manager.      (line 2987)
+* BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12: howto manager. (line 2990)
 * BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC: howto manager.
-                                                             (line 2960)
-* BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12: howto manager. (line 2963)
+                                                             (line 2993)
+* BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12: howto manager. (line 2996)
 * BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC: howto manager.
-                                                             (line 2966)
-* BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12: howto manager. (line 2969)
+                                                             (line 2999)
+* BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12: howto manager. (line 3002)
 * BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC: howto manager.
-                                                             (line 2972)
-* BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12: howto manager.  (line 2975)
+                                                             (line 3005)
+* BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12: howto manager.  (line 3008)
 * BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC: howto manager.
-                                                             (line 2978)
-* BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12: howto manager.   (line 3084)
+                                                             (line 3011)
+* BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12: howto manager.   (line 3117)
 * BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC: howto manager.
-                                                             (line 3088)
-* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0: howto manager.     (line 2981)
-* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC: howto manager.  (line 2983)
-* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1: howto manager.     (line 2985)
-* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC: howto manager.  (line 2987)
-* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2: howto manager.     (line 2989)
-* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: howto manager.     (line 3001)
-* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: howto manager.     (line 3003)
-* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: howto manager.  (line 3005)
-* BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12: howto manager.  (line 3007)
+                                                             (line 3121)
+* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0: howto manager.     (line 3014)
+* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC: howto manager.  (line 3016)
+* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1: howto manager.     (line 3018)
+* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC: howto manager.  (line 3020)
+* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2: howto manager.     (line 3022)
+* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: howto manager.     (line 3034)
+* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: howto manager.     (line 3036)
+* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: howto manager.  (line 3038)
+* BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12: howto manager.  (line 3040)
 * BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC: howto manager.
-                                                             (line 3010)
-* BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12: howto manager.  (line 3013)
+                                                             (line 3043)
+* BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12: howto manager.  (line 3046)
 * BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC: howto manager.
-                                                             (line 3016)
-* BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12: howto manager.  (line 3019)
+                                                             (line 3049)
+* BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12: howto manager.  (line 3052)
 * BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC: howto manager.
-                                                             (line 3022)
-* BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12: howto manager.   (line 3025)
+                                                             (line 3055)
+* BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12: howto manager.   (line 3058)
 * BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC: howto manager.
-                                                             (line 3028)
-* BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12: howto manager.    (line 3091)
-* BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC: howto manager. (line 3095)
-* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: howto manager.      (line 2997)
-* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: howto manager.   (line 2999)
-* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: howto manager.      (line 2993)
-* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: howto manager.   (line 2995)
-* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: howto manager.      (line 2991)
-* BFD_RELOC_AARCH64_TLS_DTPMOD:          howto manager.      (line 3061)
-* BFD_RELOC_AARCH64_TLS_DTPREL:          howto manager.      (line 3063)
-* BFD_RELOC_AARCH64_TLS_TPREL:           howto manager.      (line 3065)
-* BFD_RELOC_AARCH64_TSTBR14:             howto manager.      (line 2848)
+                                                             (line 3061)
+* BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12: howto manager.    (line 3124)
+* BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC: howto manager. (line 3128)
+* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: howto manager.      (line 3030)
+* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: howto manager.   (line 3032)
+* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: howto manager.      (line 3026)
+* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: howto manager.   (line 3028)
+* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: howto manager.      (line 3024)
+* BFD_RELOC_AARCH64_TLS_DTPMOD:          howto manager.      (line 3094)
+* BFD_RELOC_AARCH64_TLS_DTPREL:          howto manager.      (line 3096)
+* BFD_RELOC_AARCH64_TLS_TPREL:           howto manager.      (line 3098)
+* BFD_RELOC_AARCH64_TSTBR14:             howto manager.      (line 2881)
 * BFD_RELOC_AC_SECTOFF_S9:               howto manager.      (line 1062)
 * BFD_RELOC_AC_SECTOFF_S9_1:             howto manager.      (line 1063)
 * BFD_RELOC_AC_SECTOFF_S9_2:             howto manager.      (line 1064)
@@ -12758,11 +12815,11 @@ BFD Index
 * BFD_RELOC_BFIN_GOTOFFHI:               howto manager.      (line 1133)
 * BFD_RELOC_BFIN_GOTOFFLO:               howto manager.      (line 1134)
 * BFD_RELOC_BFIN_PLTPC:                  howto manager.      (line 1138)
-* BFD_RELOC_BPF_16:                      howto manager.      (line 3299)
-* BFD_RELOC_BPF_32:                      howto manager.      (line 3298)
-* BFD_RELOC_BPF_64:                      howto manager.      (line 3297)
-* BFD_RELOC_BPF_DISP16:                  howto manager.      (line 3300)
-* BFD_RELOC_BPF_DISP32:                  howto manager.      (line 3301)
+* BFD_RELOC_BPF_16:                      howto manager.      (line 3332)
+* BFD_RELOC_BPF_32:                      howto manager.      (line 3331)
+* BFD_RELOC_BPF_64:                      howto manager.      (line 3330)
+* BFD_RELOC_BPF_DISP16:                  howto manager.      (line 3333)
+* BFD_RELOC_BPF_DISP32:                  howto manager.      (line 3334)
 * BFD_RELOC_C6000_ABS_H16:               howto manager.      (line 1576)
 * BFD_RELOC_C6000_ABS_L16:               howto manager.      (line 1575)
 * BFD_RELOC_C6000_ABS_S16:               howto manager.      (line 1574)
@@ -12793,71 +12850,71 @@ BFD Index
 * BFD_RELOC_C6000_SBR_U15_B:             howto manager.      (line 1577)
 * BFD_RELOC_C6000_SBR_U15_H:             howto manager.      (line 1578)
 * BFD_RELOC_C6000_SBR_U15_W:             howto manager.      (line 1579)
-* BFD_RELOC_CKCORE_ADDR32:               howto manager.      (line 3338)
-* BFD_RELOC_CKCORE_ADDRGOT:              howto manager.      (line 3354)
-* BFD_RELOC_CKCORE_ADDRGOT_HI16:         howto manager.      (line 3373)
-* BFD_RELOC_CKCORE_ADDRGOT_LO16:         howto manager.      (line 3374)
-* BFD_RELOC_CKCORE_ADDRPLT:              howto manager.      (line 3355)
-* BFD_RELOC_CKCORE_ADDRPLT_HI16:         howto manager.      (line 3375)
-* BFD_RELOC_CKCORE_ADDRPLT_LO16:         howto manager.      (line 3376)
-* BFD_RELOC_CKCORE_ADDR_HI16:            howto manager.      (line 3361)
-* BFD_RELOC_CKCORE_ADDR_LO16:            howto manager.      (line 3362)
-* BFD_RELOC_CKCORE_CALLGRAPH:            howto manager.      (line 3398)
-* BFD_RELOC_CKCORE_COPY:                 howto manager.      (line 3347)
-* BFD_RELOC_CKCORE_DOFFSET_IMM18:        howto manager.      (line 3381)
-* BFD_RELOC_CKCORE_DOFFSET_IMM18BY2:     howto manager.      (line 3382)
-* BFD_RELOC_CKCORE_DOFFSET_IMM18BY4:     howto manager.      (line 3383)
-* BFD_RELOC_CKCORE_DOFFSET_LO16:         howto manager.      (line 3379)
-* BFD_RELOC_CKCORE_GLOB_DAT:             howto manager.      (line 3348)
-* BFD_RELOC_CKCORE_GNU_VTENTRY:          howto manager.      (line 3345)
-* BFD_RELOC_CKCORE_GNU_VTINHERIT:        howto manager.      (line 3344)
-* BFD_RELOC_CKCORE_GOT12:                howto manager.      (line 3367)
-* BFD_RELOC_CKCORE_GOT32:                howto manager.      (line 3352)
-* BFD_RELOC_CKCORE_GOTOFF:               howto manager.      (line 3350)
-* BFD_RELOC_CKCORE_GOTOFF_HI16:          howto manager.      (line 3365)
-* BFD_RELOC_CKCORE_GOTOFF_IMM18:         howto manager.      (line 3384)
-* BFD_RELOC_CKCORE_GOTOFF_LO16:          howto manager.      (line 3366)
-* BFD_RELOC_CKCORE_GOTPC:                howto manager.      (line 3351)
-* BFD_RELOC_CKCORE_GOTPC_HI16:           howto manager.      (line 3363)
-* BFD_RELOC_CKCORE_GOTPC_LO16:           howto manager.      (line 3364)
-* BFD_RELOC_CKCORE_GOT_HI16:             howto manager.      (line 3368)
-* BFD_RELOC_CKCORE_GOT_IMM18BY4:         howto manager.      (line 3385)
-* BFD_RELOC_CKCORE_GOT_LO16:             howto manager.      (line 3369)
-* BFD_RELOC_CKCORE_IRELATIVE:            howto manager.      (line 3399)
-* BFD_RELOC_CKCORE_JUMP_SLOT:            howto manager.      (line 3349)
-* BFD_RELOC_CKCORE_NOJSRI:               howto manager.      (line 3397)
-* BFD_RELOC_CKCORE_NONE:                 howto manager.      (line 3337)
-* BFD_RELOC_CKCORE_PCREL32:              howto manager.      (line 3342)
-* BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4: howto manager.      (line 3401)
-* BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4:  howto manager.      (line 3400)
-* BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4:   howto manager.      (line 3396)
-* BFD_RELOC_CKCORE_PCREL_IMM10BY2:       howto manager.      (line 3359)
-* BFD_RELOC_CKCORE_PCREL_IMM10BY4:       howto manager.      (line 3360)
-* BFD_RELOC_CKCORE_PCREL_IMM11BY2:       howto manager.      (line 3340)
-* BFD_RELOC_CKCORE_PCREL_IMM16BY2:       howto manager.      (line 3357)
-* BFD_RELOC_CKCORE_PCREL_IMM16BY4:       howto manager.      (line 3358)
-* BFD_RELOC_CKCORE_PCREL_IMM18BY2:       howto manager.      (line 3380)
-* BFD_RELOC_CKCORE_PCREL_IMM26BY2:       howto manager.      (line 3356)
-* BFD_RELOC_CKCORE_PCREL_IMM4BY2:        howto manager.      (line 3341)
-* BFD_RELOC_CKCORE_PCREL_IMM7BY4:        howto manager.      (line 3387)
-* BFD_RELOC_CKCORE_PCREL_IMM8BY4:        howto manager.      (line 3339)
-* BFD_RELOC_CKCORE_PCREL_JSR_IMM11BY2:   howto manager.      (line 3343)
-* BFD_RELOC_CKCORE_PCREL_JSR_IMM26BY2:   howto manager.      (line 3377)
-* BFD_RELOC_CKCORE_PLT12:                howto manager.      (line 3370)
-* BFD_RELOC_CKCORE_PLT32:                howto manager.      (line 3353)
-* BFD_RELOC_CKCORE_PLT_HI16:             howto manager.      (line 3371)
-* BFD_RELOC_CKCORE_PLT_IMM18BY4:         howto manager.      (line 3386)
-* BFD_RELOC_CKCORE_PLT_LO16:             howto manager.      (line 3372)
-* BFD_RELOC_CKCORE_RELATIVE:             howto manager.      (line 3346)
-* BFD_RELOC_CKCORE_TLS_DTPMOD32:         howto manager.      (line 3393)
-* BFD_RELOC_CKCORE_TLS_DTPOFF32:         howto manager.      (line 3394)
-* BFD_RELOC_CKCORE_TLS_GD32:             howto manager.      (line 3390)
-* BFD_RELOC_CKCORE_TLS_IE32:             howto manager.      (line 3389)
-* BFD_RELOC_CKCORE_TLS_LDM32:            howto manager.      (line 3391)
-* BFD_RELOC_CKCORE_TLS_LDO32:            howto manager.      (line 3392)
-* BFD_RELOC_CKCORE_TLS_LE32:             howto manager.      (line 3388)
-* BFD_RELOC_CKCORE_TLS_TPOFF32:          howto manager.      (line 3395)
-* BFD_RELOC_CKCORE_TOFFSET_LO16:         howto manager.      (line 3378)
+* BFD_RELOC_CKCORE_ADDR32:               howto manager.      (line 3371)
+* BFD_RELOC_CKCORE_ADDRGOT:              howto manager.      (line 3387)
+* BFD_RELOC_CKCORE_ADDRGOT_HI16:         howto manager.      (line 3406)
+* BFD_RELOC_CKCORE_ADDRGOT_LO16:         howto manager.      (line 3407)
+* BFD_RELOC_CKCORE_ADDRPLT:              howto manager.      (line 3388)
+* BFD_RELOC_CKCORE_ADDRPLT_HI16:         howto manager.      (line 3408)
+* BFD_RELOC_CKCORE_ADDRPLT_LO16:         howto manager.      (line 3409)
+* BFD_RELOC_CKCORE_ADDR_HI16:            howto manager.      (line 3394)
+* BFD_RELOC_CKCORE_ADDR_LO16:            howto manager.      (line 3395)
+* BFD_RELOC_CKCORE_CALLGRAPH:            howto manager.      (line 3431)
+* BFD_RELOC_CKCORE_COPY:                 howto manager.      (line 3380)
+* BFD_RELOC_CKCORE_DOFFSET_IMM18:        howto manager.      (line 3414)
+* BFD_RELOC_CKCORE_DOFFSET_IMM18BY2:     howto manager.      (line 3415)
+* BFD_RELOC_CKCORE_DOFFSET_IMM18BY4:     howto manager.      (line 3416)
+* BFD_RELOC_CKCORE_DOFFSET_LO16:         howto manager.      (line 3412)
+* BFD_RELOC_CKCORE_GLOB_DAT:             howto manager.      (line 3381)
+* BFD_RELOC_CKCORE_GNU_VTENTRY:          howto manager.      (line 3378)
+* BFD_RELOC_CKCORE_GNU_VTINHERIT:        howto manager.      (line 3377)
+* BFD_RELOC_CKCORE_GOT12:                howto manager.      (line 3400)
+* BFD_RELOC_CKCORE_GOT32:                howto manager.      (line 3385)
+* BFD_RELOC_CKCORE_GOTOFF:               howto manager.      (line 3383)
+* BFD_RELOC_CKCORE_GOTOFF_HI16:          howto manager.      (line 3398)
+* BFD_RELOC_CKCORE_GOTOFF_IMM18:         howto manager.      (line 3417)
+* BFD_RELOC_CKCORE_GOTOFF_LO16:          howto manager.      (line 3399)
+* BFD_RELOC_CKCORE_GOTPC:                howto manager.      (line 3384)
+* BFD_RELOC_CKCORE_GOTPC_HI16:           howto manager.      (line 3396)
+* BFD_RELOC_CKCORE_GOTPC_LO16:           howto manager.      (line 3397)
+* BFD_RELOC_CKCORE_GOT_HI16:             howto manager.      (line 3401)
+* BFD_RELOC_CKCORE_GOT_IMM18BY4:         howto manager.      (line 3418)
+* BFD_RELOC_CKCORE_GOT_LO16:             howto manager.      (line 3402)
+* BFD_RELOC_CKCORE_IRELATIVE:            howto manager.      (line 3432)
+* BFD_RELOC_CKCORE_JUMP_SLOT:            howto manager.      (line 3382)
+* BFD_RELOC_CKCORE_NOJSRI:               howto manager.      (line 3430)
+* BFD_RELOC_CKCORE_NONE:                 howto manager.      (line 3370)
+* BFD_RELOC_CKCORE_PCREL32:              howto manager.      (line 3375)
+* BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4: howto manager.      (line 3434)
+* BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4:  howto manager.      (line 3433)
+* BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4:   howto manager.      (line 3429)
+* BFD_RELOC_CKCORE_PCREL_IMM10BY2:       howto manager.      (line 3392)
+* BFD_RELOC_CKCORE_PCREL_IMM10BY4:       howto manager.      (line 3393)
+* BFD_RELOC_CKCORE_PCREL_IMM11BY2:       howto manager.      (line 3373)
+* BFD_RELOC_CKCORE_PCREL_IMM16BY2:       howto manager.      (line 3390)
+* BFD_RELOC_CKCORE_PCREL_IMM16BY4:       howto manager.      (line 3391)
+* BFD_RELOC_CKCORE_PCREL_IMM18BY2:       howto manager.      (line 3413)
+* BFD_RELOC_CKCORE_PCREL_IMM26BY2:       howto manager.      (line 3389)
+* BFD_RELOC_CKCORE_PCREL_IMM4BY2:        howto manager.      (line 3374)
+* BFD_RELOC_CKCORE_PCREL_IMM7BY4:        howto manager.      (line 3420)
+* BFD_RELOC_CKCORE_PCREL_IMM8BY4:        howto manager.      (line 3372)
+* BFD_RELOC_CKCORE_PCREL_JSR_IMM11BY2:   howto manager.      (line 3376)
+* BFD_RELOC_CKCORE_PCREL_JSR_IMM26BY2:   howto manager.      (line 3410)
+* BFD_RELOC_CKCORE_PLT12:                howto manager.      (line 3403)
+* BFD_RELOC_CKCORE_PLT32:                howto manager.      (line 3386)
+* BFD_RELOC_CKCORE_PLT_HI16:             howto manager.      (line 3404)
+* BFD_RELOC_CKCORE_PLT_IMM18BY4:         howto manager.      (line 3419)
+* BFD_RELOC_CKCORE_PLT_LO16:             howto manager.      (line 3405)
+* BFD_RELOC_CKCORE_RELATIVE:             howto manager.      (line 3379)
+* BFD_RELOC_CKCORE_TLS_DTPMOD32:         howto manager.      (line 3426)
+* BFD_RELOC_CKCORE_TLS_DTPOFF32:         howto manager.      (line 3427)
+* BFD_RELOC_CKCORE_TLS_GD32:             howto manager.      (line 3423)
+* BFD_RELOC_CKCORE_TLS_IE32:             howto manager.      (line 3422)
+* BFD_RELOC_CKCORE_TLS_LDM32:            howto manager.      (line 3424)
+* BFD_RELOC_CKCORE_TLS_LDO32:            howto manager.      (line 3425)
+* BFD_RELOC_CKCORE_TLS_LE32:             howto manager.      (line 3421)
+* BFD_RELOC_CKCORE_TLS_TPOFF32:          howto manager.      (line 3428)
+* BFD_RELOC_CKCORE_TOFFSET_LO16:         howto manager.      (line 3411)
 * bfd_reloc_code_type:                   howto manager.      (line    9)
 * BFD_RELOC_CR16_ABS20:                  howto manager.      (line 2276)
 * BFD_RELOC_CR16_ABS24:                  howto manager.      (line 2277)
@@ -12964,13 +13021,13 @@ BFD Index
 * BFD_RELOC_DLX_HI16_S:                  howto manager.      (line 1224)
 * BFD_RELOC_DLX_JMP26:                   howto manager.      (line 1228)
 * BFD_RELOC_DLX_LO16:                    howto manager.      (line 1226)
-* BFD_RELOC_EPIPHANY_HIGH:               howto manager.      (line 3307)
-* BFD_RELOC_EPIPHANY_IMM11:              howto manager.      (line 3313)
-* BFD_RELOC_EPIPHANY_IMM8:               howto manager.      (line 3316)
-* BFD_RELOC_EPIPHANY_LOW:                howto manager.      (line 3309)
-* BFD_RELOC_EPIPHANY_SIMM11:             howto manager.      (line 3311)
-* BFD_RELOC_EPIPHANY_SIMM24:             howto manager.      (line 3305)
-* BFD_RELOC_EPIPHANY_SIMM8:              howto manager.      (line 3303)
+* BFD_RELOC_EPIPHANY_HIGH:               howto manager.      (line 3340)
+* BFD_RELOC_EPIPHANY_IMM11:              howto manager.      (line 3346)
+* BFD_RELOC_EPIPHANY_IMM8:               howto manager.      (line 3349)
+* BFD_RELOC_EPIPHANY_LOW:                howto manager.      (line 3342)
+* BFD_RELOC_EPIPHANY_SIMM11:             howto manager.      (line 3344)
+* BFD_RELOC_EPIPHANY_SIMM24:             howto manager.      (line 3338)
+* BFD_RELOC_EPIPHANY_SIMM8:              howto manager.      (line 3336)
 * BFD_RELOC_FR30_10_IN_8:                howto manager.      (line 1615)
 * BFD_RELOC_FR30_12_PCREL:               howto manager.      (line 1621)
 * BFD_RELOC_FR30_20:                     howto manager.      (line 1603)
@@ -13138,18 +13195,18 @@ BFD Index
 * BFD_RELOC_IP2K_PAGE3:                  howto manager.      (line 2066)
 * BFD_RELOC_IP2K_PC_SKIP:                howto manager.      (line 2075)
 * BFD_RELOC_IP2K_TEXT:                   howto manager.      (line 2077)
-* BFD_RELOC_IQ2000_OFFSET_16:            howto manager.      (line 2543)
-* BFD_RELOC_IQ2000_OFFSET_21:            howto manager.      (line 2544)
-* BFD_RELOC_IQ2000_UHI16:                howto manager.      (line 2545)
-* BFD_RELOC_LM32_16_GOT:                 howto manager.      (line 2635)
-* BFD_RELOC_LM32_BRANCH:                 howto manager.      (line 2634)
-* BFD_RELOC_LM32_CALL:                   howto manager.      (line 2633)
-* BFD_RELOC_LM32_COPY:                   howto manager.      (line 2638)
-* BFD_RELOC_LM32_GLOB_DAT:               howto manager.      (line 2639)
-* BFD_RELOC_LM32_GOTOFF_HI16:            howto manager.      (line 2636)
-* BFD_RELOC_LM32_GOTOFF_LO16:            howto manager.      (line 2637)
-* BFD_RELOC_LM32_JMP_SLOT:               howto manager.      (line 2640)
-* BFD_RELOC_LM32_RELATIVE:               howto manager.      (line 2641)
+* BFD_RELOC_IQ2000_OFFSET_16:            howto manager.      (line 2545)
+* BFD_RELOC_IQ2000_OFFSET_21:            howto manager.      (line 2546)
+* BFD_RELOC_IQ2000_UHI16:                howto manager.      (line 2547)
+* BFD_RELOC_LM32_16_GOT:                 howto manager.      (line 2668)
+* BFD_RELOC_LM32_BRANCH:                 howto manager.      (line 2667)
+* BFD_RELOC_LM32_CALL:                   howto manager.      (line 2666)
+* BFD_RELOC_LM32_COPY:                   howto manager.      (line 2671)
+* BFD_RELOC_LM32_GLOB_DAT:               howto manager.      (line 2672)
+* BFD_RELOC_LM32_GOTOFF_HI16:            howto manager.      (line 2669)
+* BFD_RELOC_LM32_GOTOFF_LO16:            howto manager.      (line 2670)
+* BFD_RELOC_LM32_JMP_SLOT:               howto manager.      (line 2673)
+* BFD_RELOC_LM32_RELATIVE:               howto manager.      (line 2674)
 * BFD_RELOC_LO10:                        howto manager.      (line  109)
 * BFD_RELOC_LO16:                        howto manager.      (line  319)
 * BFD_RELOC_LO16_BASEREL:                howto manager.      (line   91)
@@ -13200,23 +13257,23 @@ BFD Index
 * BFD_RELOC_M68HC12_9_PCREL:             howto manager.      (line 2250)
 * BFD_RELOC_M68HC12_HI8XG:               howto manager.      (line 2257)
 * BFD_RELOC_M68HC12_LO8XG:               howto manager.      (line 2254)
-* BFD_RELOC_MACH_O_ARM64_ADDEND:         howto manager.      (line 2671)
-* BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21: howto manager.     (line 2673)
-* BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12: howto manager.  (line 2675)
-* BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT: howto manager.      (line 2677)
-* BFD_RELOC_MACH_O_LOCAL_SECTDIFF:       howto manager.      (line 2646)
-* BFD_RELOC_MACH_O_PAIR:                 howto manager.      (line 2648)
-* BFD_RELOC_MACH_O_SECTDIFF:             howto manager.      (line 2643)
-* BFD_RELOC_MACH_O_SUBTRACTOR32:         howto manager.      (line 2650)
-* BFD_RELOC_MACH_O_SUBTRACTOR64:         howto manager.      (line 2652)
-* BFD_RELOC_MACH_O_X86_64_BRANCH32:      howto manager.      (line 2654)
-* BFD_RELOC_MACH_O_X86_64_BRANCH8:       howto manager.      (line 2655)
-* BFD_RELOC_MACH_O_X86_64_GOT:           howto manager.      (line 2658)
-* BFD_RELOC_MACH_O_X86_64_GOT_LOAD:      howto manager.      (line 2660)
-* BFD_RELOC_MACH_O_X86_64_PCREL32_1:     howto manager.      (line 2663)
-* BFD_RELOC_MACH_O_X86_64_PCREL32_2:     howto manager.      (line 2665)
-* BFD_RELOC_MACH_O_X86_64_PCREL32_4:     howto manager.      (line 2667)
-* BFD_RELOC_MACH_O_X86_64_TLV:           howto manager.      (line 2669)
+* BFD_RELOC_MACH_O_ARM64_ADDEND:         howto manager.      (line 2704)
+* BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21: howto manager.     (line 2706)
+* BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12: howto manager.  (line 2708)
+* BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT: howto manager.      (line 2710)
+* BFD_RELOC_MACH_O_LOCAL_SECTDIFF:       howto manager.      (line 2679)
+* BFD_RELOC_MACH_O_PAIR:                 howto manager.      (line 2681)
+* BFD_RELOC_MACH_O_SECTDIFF:             howto manager.      (line 2676)
+* BFD_RELOC_MACH_O_SUBTRACTOR32:         howto manager.      (line 2683)
+* BFD_RELOC_MACH_O_SUBTRACTOR64:         howto manager.      (line 2685)
+* BFD_RELOC_MACH_O_X86_64_BRANCH32:      howto manager.      (line 2687)
+* BFD_RELOC_MACH_O_X86_64_BRANCH8:       howto manager.      (line 2688)
+* BFD_RELOC_MACH_O_X86_64_GOT:           howto manager.      (line 2691)
+* BFD_RELOC_MACH_O_X86_64_GOT_LOAD:      howto manager.      (line 2693)
+* BFD_RELOC_MACH_O_X86_64_PCREL32_1:     howto manager.      (line 2696)
+* BFD_RELOC_MACH_O_X86_64_PCREL32_2:     howto manager.      (line 2698)
+* BFD_RELOC_MACH_O_X86_64_PCREL32_4:     howto manager.      (line 2700)
+* BFD_RELOC_MACH_O_X86_64_TLV:           howto manager.      (line 2702)
 * BFD_RELOC_MCORE_PCREL_32:              howto manager.      (line 1627)
 * BFD_RELOC_MCORE_PCREL_IMM11BY2:        howto manager.      (line 1625)
 * BFD_RELOC_MCORE_PCREL_IMM4BY2:         howto manager.      (line 1626)
@@ -13281,28 +13338,28 @@ BFD Index
 * BFD_RELOC_METAG_TLS_LE_HI16:           howto manager.      (line 1688)
 * BFD_RELOC_METAG_TLS_LE_LO16:           howto manager.      (line 1689)
 * BFD_RELOC_METAG_TLS_TPOFF:             howto manager.      (line 1684)
-* BFD_RELOC_MICROBLAZE_32_GOTOFF:        howto manager.      (line 2713)
-* BFD_RELOC_MICROBLAZE_32_LO:            howto manager.      (line 2679)
-* BFD_RELOC_MICROBLAZE_32_LO_PCREL:      howto manager.      (line 2682)
-* BFD_RELOC_MICROBLAZE_32_ROSDA:         howto manager.      (line 2685)
-* BFD_RELOC_MICROBLAZE_32_RWSDA:         howto manager.      (line 2688)
-* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM:    howto manager.      (line 2691)
-* BFD_RELOC_MICROBLAZE_32_TLSDTPMOD:     howto manager.      (line 2729)
-* BFD_RELOC_MICROBLAZE_32_TLSDTPREL:     howto manager.      (line 2731)
-* BFD_RELOC_MICROBLAZE_64_GOT:           howto manager.      (line 2702)
-* BFD_RELOC_MICROBLAZE_64_GOTOFF:        howto manager.      (line 2709)
-* BFD_RELOC_MICROBLAZE_64_GOTPC:         howto manager.      (line 2698)
-* BFD_RELOC_MICROBLAZE_64_NONE:          howto manager.      (line 2694)
-* BFD_RELOC_MICROBLAZE_64_PLT:           howto manager.      (line 2705)
-* BFD_RELOC_MICROBLAZE_64_TEXTPCREL:     howto manager.      (line 2742)
-* BFD_RELOC_MICROBLAZE_64_TEXTREL:       howto manager.      (line 2746)
-* BFD_RELOC_MICROBLAZE_64_TLS:           howto manager.      (line 2719)
-* BFD_RELOC_MICROBLAZE_64_TLSDTPREL:     howto manager.      (line 2733)
-* BFD_RELOC_MICROBLAZE_64_TLSGD:         howto manager.      (line 2721)
-* BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL:   howto manager.      (line 2736)
-* BFD_RELOC_MICROBLAZE_64_TLSLD:         howto manager.      (line 2725)
-* BFD_RELOC_MICROBLAZE_64_TLSTPREL:      howto manager.      (line 2739)
-* BFD_RELOC_MICROBLAZE_COPY:             howto manager.      (line 2716)
+* BFD_RELOC_MICROBLAZE_32_GOTOFF:        howto manager.      (line 2746)
+* BFD_RELOC_MICROBLAZE_32_LO:            howto manager.      (line 2712)
+* BFD_RELOC_MICROBLAZE_32_LO_PCREL:      howto manager.      (line 2715)
+* BFD_RELOC_MICROBLAZE_32_ROSDA:         howto manager.      (line 2718)
+* BFD_RELOC_MICROBLAZE_32_RWSDA:         howto manager.      (line 2721)
+* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM:    howto manager.      (line 2724)
+* BFD_RELOC_MICROBLAZE_32_TLSDTPMOD:     howto manager.      (line 2762)
+* BFD_RELOC_MICROBLAZE_32_TLSDTPREL:     howto manager.      (line 2764)
+* BFD_RELOC_MICROBLAZE_64_GOT:           howto manager.      (line 2735)
+* BFD_RELOC_MICROBLAZE_64_GOTOFF:        howto manager.      (line 2742)
+* BFD_RELOC_MICROBLAZE_64_GOTPC:         howto manager.      (line 2731)
+* BFD_RELOC_MICROBLAZE_64_NONE:          howto manager.      (line 2727)
+* BFD_RELOC_MICROBLAZE_64_PLT:           howto manager.      (line 2738)
+* BFD_RELOC_MICROBLAZE_64_TEXTPCREL:     howto manager.      (line 2775)
+* BFD_RELOC_MICROBLAZE_64_TEXTREL:       howto manager.      (line 2779)
+* BFD_RELOC_MICROBLAZE_64_TLS:           howto manager.      (line 2752)
+* BFD_RELOC_MICROBLAZE_64_TLSDTPREL:     howto manager.      (line 2766)
+* BFD_RELOC_MICROBLAZE_64_TLSGD:         howto manager.      (line 2754)
+* BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL:   howto manager.      (line 2769)
+* BFD_RELOC_MICROBLAZE_64_TLSLD:         howto manager.      (line 2758)
+* BFD_RELOC_MICROBLAZE_64_TLSTPREL:      howto manager.      (line 2772)
+* BFD_RELOC_MICROBLAZE_COPY:             howto manager.      (line 2749)
 * BFD_RELOC_MICROMIPS_10_PCREL_S1:       howto manager.      (line  352)
 * BFD_RELOC_MICROMIPS_16_PCREL_S1:       howto manager.      (line  353)
 * BFD_RELOC_MICROMIPS_7_PCREL_S1:        howto manager.      (line  351)
@@ -13458,6 +13515,8 @@ BFD Index
 * BFD_RELOC_MSP430_ABS_HI16:             howto manager.      (line 2458)
 * BFD_RELOC_MSP430_PREL31:               howto manager.      (line 2459)
 * BFD_RELOC_MSP430_RL_PCREL:             howto manager.      (line 2445)
+* BFD_RELOC_MSP430_SET_ULEB128:          howto manager.      (line 2461)
+* BFD_RELOC_MSP430_SUB_ULEB128:          howto manager.      (line 2462)
 * BFD_RELOC_MSP430_SYM_DIFF:             howto manager.      (line 2460)
 * BFD_RELOC_MT_GNU_VTENTRY:              howto manager.      (line 2435)
 * BFD_RELOC_MT_GNU_VTINHERIT:            howto manager.      (line 2433)
@@ -13596,58 +13655,58 @@ BFD Index
 * BFD_RELOC_NDS32_TRAN:                  howto manager.      (line 1422)
 * BFD_RELOC_NDS32_UPDATE_TA:             howto manager.      (line 1381)
 * BFD_RELOC_NDS32_WORD_9_PCREL:          howto manager.      (line 1279)
-* BFD_RELOC_NIOS2_ALIGN:                 howto manager.      (line 2476)
-* BFD_RELOC_NIOS2_CACHE_OPX:             howto manager.      (line 2466)
-* BFD_RELOC_NIOS2_CALL16:                howto manager.      (line 2478)
-* BFD_RELOC_NIOS2_CALL26:                howto manager.      (line 2464)
-* BFD_RELOC_NIOS2_CALL26_NOAT:           howto manager.      (line 2496)
-* BFD_RELOC_NIOS2_CALLR:                 howto manager.      (line 2475)
-* BFD_RELOC_NIOS2_CALL_HA:               howto manager.      (line 2500)
-* BFD_RELOC_NIOS2_CALL_LO:               howto manager.      (line 2499)
-* BFD_RELOC_NIOS2_CJMP:                  howto manager.      (line 2474)
-* BFD_RELOC_NIOS2_COPY:                  howto manager.      (line 2491)
-* BFD_RELOC_NIOS2_GLOB_DAT:              howto manager.      (line 2492)
-* BFD_RELOC_NIOS2_GOT16:                 howto manager.      (line 2477)
-* BFD_RELOC_NIOS2_GOTOFF:                howto manager.      (line 2495)
-* BFD_RELOC_NIOS2_GOTOFF_HA:             howto manager.      (line 2480)
-* BFD_RELOC_NIOS2_GOTOFF_LO:             howto manager.      (line 2479)
-* BFD_RELOC_NIOS2_GOT_HA:                howto manager.      (line 2498)
-* BFD_RELOC_NIOS2_GOT_LO:                howto manager.      (line 2497)
-* BFD_RELOC_NIOS2_GPREL:                 howto manager.      (line 2472)
-* BFD_RELOC_NIOS2_HI16:                  howto manager.      (line 2469)
-* BFD_RELOC_NIOS2_HIADJ16:               howto manager.      (line 2471)
-* BFD_RELOC_NIOS2_IMM5:                  howto manager.      (line 2465)
-* BFD_RELOC_NIOS2_IMM6:                  howto manager.      (line 2467)
-* BFD_RELOC_NIOS2_IMM8:                  howto manager.      (line 2468)
-* BFD_RELOC_NIOS2_JUMP_SLOT:             howto manager.      (line 2493)
-* BFD_RELOC_NIOS2_LO16:                  howto manager.      (line 2470)
-* BFD_RELOC_NIOS2_PCREL_HA:              howto manager.      (line 2482)
-* BFD_RELOC_NIOS2_PCREL_LO:              howto manager.      (line 2481)
-* BFD_RELOC_NIOS2_R2_F1I5_2:             howto manager.      (line 2510)
-* BFD_RELOC_NIOS2_R2_I10_1_PCREL:        howto manager.      (line 2502)
-* BFD_RELOC_NIOS2_R2_L5I4X1:             howto manager.      (line 2511)
-* BFD_RELOC_NIOS2_R2_S12:                howto manager.      (line 2501)
-* BFD_RELOC_NIOS2_R2_T1I7_1_PCREL:       howto manager.      (line 2503)
-* BFD_RELOC_NIOS2_R2_T1I7_2:             howto manager.      (line 2504)
-* BFD_RELOC_NIOS2_R2_T1X1I6:             howto manager.      (line 2512)
-* BFD_RELOC_NIOS2_R2_T1X1I6_2:           howto manager.      (line 2513)
-* BFD_RELOC_NIOS2_R2_T2I4:               howto manager.      (line 2505)
-* BFD_RELOC_NIOS2_R2_T2I4_1:             howto manager.      (line 2506)
-* BFD_RELOC_NIOS2_R2_T2I4_2:             howto manager.      (line 2507)
-* BFD_RELOC_NIOS2_R2_X1I7_2:             howto manager.      (line 2508)
-* BFD_RELOC_NIOS2_R2_X2L5:               howto manager.      (line 2509)
-* BFD_RELOC_NIOS2_RELATIVE:              howto manager.      (line 2494)
-* BFD_RELOC_NIOS2_S16:                   howto manager.      (line 2462)
-* BFD_RELOC_NIOS2_TLS_DTPMOD:            howto manager.      (line 2488)
-* BFD_RELOC_NIOS2_TLS_DTPREL:            howto manager.      (line 2489)
-* BFD_RELOC_NIOS2_TLS_GD16:              howto manager.      (line 2483)
-* BFD_RELOC_NIOS2_TLS_IE16:              howto manager.      (line 2486)
-* BFD_RELOC_NIOS2_TLS_LDM16:             howto manager.      (line 2484)
-* BFD_RELOC_NIOS2_TLS_LDO16:             howto manager.      (line 2485)
-* BFD_RELOC_NIOS2_TLS_LE16:              howto manager.      (line 2487)
-* BFD_RELOC_NIOS2_TLS_TPREL:             howto manager.      (line 2490)
-* BFD_RELOC_NIOS2_U16:                   howto manager.      (line 2463)
-* BFD_RELOC_NIOS2_UJMP:                  howto manager.      (line 2473)
+* BFD_RELOC_NIOS2_ALIGN:                 howto manager.      (line 2478)
+* BFD_RELOC_NIOS2_CACHE_OPX:             howto manager.      (line 2468)
+* BFD_RELOC_NIOS2_CALL16:                howto manager.      (line 2480)
+* BFD_RELOC_NIOS2_CALL26:                howto manager.      (line 2466)
+* BFD_RELOC_NIOS2_CALL26_NOAT:           howto manager.      (line 2498)
+* BFD_RELOC_NIOS2_CALLR:                 howto manager.      (line 2477)
+* BFD_RELOC_NIOS2_CALL_HA:               howto manager.      (line 2502)
+* BFD_RELOC_NIOS2_CALL_LO:               howto manager.      (line 2501)
+* BFD_RELOC_NIOS2_CJMP:                  howto manager.      (line 2476)
+* BFD_RELOC_NIOS2_COPY:                  howto manager.      (line 2493)
+* BFD_RELOC_NIOS2_GLOB_DAT:              howto manager.      (line 2494)
+* BFD_RELOC_NIOS2_GOT16:                 howto manager.      (line 2479)
+* BFD_RELOC_NIOS2_GOTOFF:                howto manager.      (line 2497)
+* BFD_RELOC_NIOS2_GOTOFF_HA:             howto manager.      (line 2482)
+* BFD_RELOC_NIOS2_GOTOFF_LO:             howto manager.      (line 2481)
+* BFD_RELOC_NIOS2_GOT_HA:                howto manager.      (line 2500)
+* BFD_RELOC_NIOS2_GOT_LO:                howto manager.      (line 2499)
+* BFD_RELOC_NIOS2_GPREL:                 howto manager.      (line 2474)
+* BFD_RELOC_NIOS2_HI16:                  howto manager.      (line 2471)
+* BFD_RELOC_NIOS2_HIADJ16:               howto manager.      (line 2473)
+* BFD_RELOC_NIOS2_IMM5:                  howto manager.      (line 2467)
+* BFD_RELOC_NIOS2_IMM6:                  howto manager.      (line 2469)
+* BFD_RELOC_NIOS2_IMM8:                  howto manager.      (line 2470)
+* BFD_RELOC_NIOS2_JUMP_SLOT:             howto manager.      (line 2495)
+* BFD_RELOC_NIOS2_LO16:                  howto manager.      (line 2472)
+* BFD_RELOC_NIOS2_PCREL_HA:              howto manager.      (line 2484)
+* BFD_RELOC_NIOS2_PCREL_LO:              howto manager.      (line 2483)
+* BFD_RELOC_NIOS2_R2_F1I5_2:             howto manager.      (line 2512)
+* BFD_RELOC_NIOS2_R2_I10_1_PCREL:        howto manager.      (line 2504)
+* BFD_RELOC_NIOS2_R2_L5I4X1:             howto manager.      (line 2513)
+* BFD_RELOC_NIOS2_R2_S12:                howto manager.      (line 2503)
+* BFD_RELOC_NIOS2_R2_T1I7_1_PCREL:       howto manager.      (line 2505)
+* BFD_RELOC_NIOS2_R2_T1I7_2:             howto manager.      (line 2506)
+* BFD_RELOC_NIOS2_R2_T1X1I6:             howto manager.      (line 2514)
+* BFD_RELOC_NIOS2_R2_T1X1I6_2:           howto manager.      (line 2515)
+* BFD_RELOC_NIOS2_R2_T2I4:               howto manager.      (line 2507)
+* BFD_RELOC_NIOS2_R2_T2I4_1:             howto manager.      (line 2508)
+* BFD_RELOC_NIOS2_R2_T2I4_2:             howto manager.      (line 2509)
+* BFD_RELOC_NIOS2_R2_X1I7_2:             howto manager.      (line 2510)
+* BFD_RELOC_NIOS2_R2_X2L5:               howto manager.      (line 2511)
+* BFD_RELOC_NIOS2_RELATIVE:              howto manager.      (line 2496)
+* BFD_RELOC_NIOS2_S16:                   howto manager.      (line 2464)
+* BFD_RELOC_NIOS2_TLS_DTPMOD:            howto manager.      (line 2490)
+* BFD_RELOC_NIOS2_TLS_DTPREL:            howto manager.      (line 2491)
+* BFD_RELOC_NIOS2_TLS_GD16:              howto manager.      (line 2485)
+* BFD_RELOC_NIOS2_TLS_IE16:              howto manager.      (line 2488)
+* BFD_RELOC_NIOS2_TLS_LDM16:             howto manager.      (line 2486)
+* BFD_RELOC_NIOS2_TLS_LDO16:             howto manager.      (line 2487)
+* BFD_RELOC_NIOS2_TLS_LE16:              howto manager.      (line 2489)
+* BFD_RELOC_NIOS2_TLS_TPREL:             howto manager.      (line 2492)
+* BFD_RELOC_NIOS2_U16:                   howto manager.      (line 2465)
+* BFD_RELOC_NIOS2_UJMP:                  howto manager.      (line 2475)
 * BFD_RELOC_NONE:                        howto manager.      (line  118)
 * BFD_RELOC_NS32K_DISP_16:               howto manager.      (line  586)
 * BFD_RELOC_NS32K_DISP_16_PCREL:         howto manager.      (line  589)
@@ -13735,11 +13794,11 @@ BFD Index
 * BFD_RELOC_PPC64_ENTRY:                 howto manager.      (line  683)
 * BFD_RELOC_PPC64_GOT16_DS:              howto manager.      (line  665)
 * BFD_RELOC_PPC64_GOT16_LO_DS:           howto manager.      (line  666)
-* BFD_RELOC_PPC64_GOT_DTPREL34:          howto manager.      (line  754)
+* BFD_RELOC_PPC64_GOT_DTPREL_PCREL34:    howto manager.      (line  754)
 * BFD_RELOC_PPC64_GOT_PCREL34:           howto manager.      (line  690)
-* BFD_RELOC_PPC64_GOT_TLSGD34:           howto manager.      (line  751)
-* BFD_RELOC_PPC64_GOT_TLSLD34:           howto manager.      (line  752)
-* BFD_RELOC_PPC64_GOT_TPREL34:           howto manager.      (line  753)
+* BFD_RELOC_PPC64_GOT_TLSGD_PCREL34:     howto manager.      (line  751)
+* BFD_RELOC_PPC64_GOT_TLSLD_PCREL34:     howto manager.      (line  752)
+* BFD_RELOC_PPC64_GOT_TPREL_PCREL34:     howto manager.      (line  753)
 * BFD_RELOC_PPC64_HIGHER:                howto manager.      (line  651)
 * BFD_RELOC_PPC64_HIGHER_S:              howto manager.      (line  652)
 * BFD_RELOC_PPC64_HIGHEST:               howto manager.      (line  653)
@@ -13862,18 +13921,18 @@ BFD Index
 * BFD_RELOC_PPC_VLE_SDAREL_HI16D:        howto manager.      (line  646)
 * BFD_RELOC_PPC_VLE_SDAREL_LO16A:        howto manager.      (line  643)
 * BFD_RELOC_PPC_VLE_SDAREL_LO16D:        howto manager.      (line  644)
-* BFD_RELOC_PRU_16_PMEM:                 howto manager.      (line 2528)
-* BFD_RELOC_PRU_32_PMEM:                 howto manager.      (line 2527)
-* BFD_RELOC_PRU_GNU_DIFF16:              howto manager.      (line 2532)
-* BFD_RELOC_PRU_GNU_DIFF16_PMEM:         howto manager.      (line 2534)
-* BFD_RELOC_PRU_GNU_DIFF32:              howto manager.      (line 2533)
-* BFD_RELOC_PRU_GNU_DIFF32_PMEM:         howto manager.      (line 2535)
-* BFD_RELOC_PRU_GNU_DIFF8:               howto manager.      (line 2531)
-* BFD_RELOC_PRU_LDI32:                   howto manager.      (line 2519)
-* BFD_RELOC_PRU_S10_PCREL:               howto manager.      (line 2523)
-* BFD_RELOC_PRU_U16:                     howto manager.      (line 2515)
-* BFD_RELOC_PRU_U16_PMEMIMM:             howto manager.      (line 2517)
-* BFD_RELOC_PRU_U8_PCREL:                howto manager.      (line 2525)
+* BFD_RELOC_PRU_16_PMEM:                 howto manager.      (line 2530)
+* BFD_RELOC_PRU_32_PMEM:                 howto manager.      (line 2529)
+* BFD_RELOC_PRU_GNU_DIFF16:              howto manager.      (line 2534)
+* BFD_RELOC_PRU_GNU_DIFF16_PMEM:         howto manager.      (line 2536)
+* BFD_RELOC_PRU_GNU_DIFF32:              howto manager.      (line 2535)
+* BFD_RELOC_PRU_GNU_DIFF32_PMEM:         howto manager.      (line 2537)
+* BFD_RELOC_PRU_GNU_DIFF8:               howto manager.      (line 2533)
+* BFD_RELOC_PRU_LDI32:                   howto manager.      (line 2521)
+* BFD_RELOC_PRU_S10_PCREL:               howto manager.      (line 2525)
+* BFD_RELOC_PRU_U16:                     howto manager.      (line 2517)
+* BFD_RELOC_PRU_U16_PMEMIMM:             howto manager.      (line 2519)
+* BFD_RELOC_PRU_U8_PCREL:                howto manager.      (line 2527)
 * BFD_RELOC_RELC:                        howto manager.      (line 2416)
 * BFD_RELOC_RISCV_32_PCREL:              howto manager.      (line 1885)
 * BFD_RELOC_RISCV_ADD16:                 howto manager.      (line 1853)
@@ -13986,7 +14045,7 @@ BFD Index
 * BFD_RELOC_RX_RELAX:                    howto manager.      (line 1948)
 * BFD_RELOC_RX_SYM:                      howto manager.      (line 1937)
 * BFD_RELOC_S12Z_15_PCREL:               howto manager.      (line 2260)
-* BFD_RELOC_S12Z_OPR:                    howto manager.      (line 3403)
+* BFD_RELOC_S12Z_OPR:                    howto manager.      (line 3436)
 * BFD_RELOC_SCORE16_BRANCH:              howto manager.      (line 2051)
 * BFD_RELOC_SCORE16_JMP:                 howto manager.      (line 2049)
 * BFD_RELOC_SCORE_BCMP:                  howto manager.      (line 2053)
@@ -14207,201 +14266,201 @@ BFD Index
 * BFD_RELOC_TIC54X_MS7_OF_23:            howto manager.      (line 1567)
 * BFD_RELOC_TIC54X_PARTLS7:              howto manager.      (line 1553)
 * BFD_RELOC_TIC54X_PARTMS9:              howto manager.      (line 1557)
-* BFD_RELOC_TILEGX_BROFF_X1:             howto manager.      (line 3198)
-* BFD_RELOC_TILEGX_COPY:                 howto manager.      (line 3194)
-* BFD_RELOC_TILEGX_DEST_IMM8_X1:         howto manager.      (line 3205)
-* BFD_RELOC_TILEGX_GLOB_DAT:             howto manager.      (line 3195)
-* BFD_RELOC_TILEGX_HW0:                  howto manager.      (line 3187)
-* BFD_RELOC_TILEGX_HW0_LAST:             howto manager.      (line 3191)
-* BFD_RELOC_TILEGX_HW1:                  howto manager.      (line 3188)
-* BFD_RELOC_TILEGX_HW1_LAST:             howto manager.      (line 3192)
-* BFD_RELOC_TILEGX_HW2:                  howto manager.      (line 3189)
-* BFD_RELOC_TILEGX_HW2_LAST:             howto manager.      (line 3193)
-* BFD_RELOC_TILEGX_HW3:                  howto manager.      (line 3190)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0:         howto manager.      (line 3214)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT:     howto manager.      (line 3242)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST:    howto manager.      (line 3222)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT: howto manager.     (line 3250)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL: howto manager.   (line 3236)
+* BFD_RELOC_TILEGX_BROFF_X1:             howto manager.      (line 3231)
+* BFD_RELOC_TILEGX_COPY:                 howto manager.      (line 3227)
+* BFD_RELOC_TILEGX_DEST_IMM8_X1:         howto manager.      (line 3238)
+* BFD_RELOC_TILEGX_GLOB_DAT:             howto manager.      (line 3228)
+* BFD_RELOC_TILEGX_HW0:                  howto manager.      (line 3220)
+* BFD_RELOC_TILEGX_HW0_LAST:             howto manager.      (line 3224)
+* BFD_RELOC_TILEGX_HW1:                  howto manager.      (line 3221)
+* BFD_RELOC_TILEGX_HW1_LAST:             howto manager.      (line 3225)
+* BFD_RELOC_TILEGX_HW2:                  howto manager.      (line 3222)
+* BFD_RELOC_TILEGX_HW2_LAST:             howto manager.      (line 3226)
+* BFD_RELOC_TILEGX_HW3:                  howto manager.      (line 3223)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0:         howto manager.      (line 3247)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT:     howto manager.      (line 3275)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST:    howto manager.      (line 3255)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT: howto manager.     (line 3283)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL: howto manager.   (line 3269)
 * BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL: howto manager.
-                                                             (line 3270)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: howto manager.  (line 3264)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: howto manager.  (line 3276)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: howto manager.  (line 3260)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL:   howto manager.      (line 3228)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL: howto manager.    (line 3244)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD:  howto manager.      (line 3256)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE:  howto manager.      (line 3268)
-* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE:  howto manager.      (line 3258)
-* BFD_RELOC_TILEGX_IMM16_X0_HW1:         howto manager.      (line 3216)
-* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST:    howto manager.      (line 3224)
-* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT: howto manager.     (line 3252)
-* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL: howto manager.   (line 3238)
+                                                             (line 3303)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: howto manager.  (line 3297)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: howto manager.  (line 3309)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: howto manager.  (line 3293)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL:   howto manager.      (line 3261)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL: howto manager.    (line 3277)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD:  howto manager.      (line 3289)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE:  howto manager.      (line 3301)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE:  howto manager.      (line 3291)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1:         howto manager.      (line 3249)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST:    howto manager.      (line 3257)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT: howto manager.     (line 3285)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL: howto manager.   (line 3271)
 * BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL: howto manager.
-                                                             (line 3272)
-* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: howto manager.  (line 3266)
-* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: howto manager.  (line 3278)
-* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: howto manager.  (line 3262)
-* BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL:   howto manager.      (line 3230)
-* BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL: howto manager.    (line 3246)
-* BFD_RELOC_TILEGX_IMM16_X0_HW2:         howto manager.      (line 3218)
-* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST:    howto manager.      (line 3226)
-* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL: howto manager.   (line 3240)
+                                                             (line 3305)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: howto manager.  (line 3299)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: howto manager.  (line 3311)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: howto manager.  (line 3295)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL:   howto manager.      (line 3263)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL: howto manager.    (line 3279)
+* BFD_RELOC_TILEGX_IMM16_X0_HW2:         howto manager.      (line 3251)
+* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST:    howto manager.      (line 3259)
+* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL: howto manager.   (line 3273)
 * BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL: howto manager.
-                                                             (line 3274)
-* BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL:   howto manager.      (line 3232)
-* BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL: howto manager.    (line 3248)
-* BFD_RELOC_TILEGX_IMM16_X0_HW3:         howto manager.      (line 3220)
-* BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL:   howto manager.      (line 3234)
-* BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL: howto manager.    (line 3254)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0:         howto manager.      (line 3215)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT:     howto manager.      (line 3243)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST:    howto manager.      (line 3223)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT: howto manager.     (line 3251)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL: howto manager.   (line 3237)
+                                                             (line 3307)
+* BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL:   howto manager.      (line 3265)
+* BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL: howto manager.    (line 3281)
+* BFD_RELOC_TILEGX_IMM16_X0_HW3:         howto manager.      (line 3253)
+* BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL:   howto manager.      (line 3267)
+* BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL: howto manager.    (line 3287)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0:         howto manager.      (line 3248)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT:     howto manager.      (line 3276)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST:    howto manager.      (line 3256)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT: howto manager.     (line 3284)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL: howto manager.   (line 3270)
 * BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL: howto manager.
-                                                             (line 3271)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: howto manager.  (line 3265)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: howto manager.  (line 3277)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: howto manager.  (line 3261)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL:   howto manager.      (line 3229)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL: howto manager.    (line 3245)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD:  howto manager.      (line 3257)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE:  howto manager.      (line 3269)
-* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE:  howto manager.      (line 3259)
-* BFD_RELOC_TILEGX_IMM16_X1_HW1:         howto manager.      (line 3217)
-* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST:    howto manager.      (line 3225)
-* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT: howto manager.     (line 3253)
-* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL: howto manager.   (line 3239)
+                                                             (line 3304)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: howto manager.  (line 3298)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: howto manager.  (line 3310)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: howto manager.  (line 3294)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL:   howto manager.      (line 3262)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL: howto manager.    (line 3278)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD:  howto manager.      (line 3290)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE:  howto manager.      (line 3302)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE:  howto manager.      (line 3292)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1:         howto manager.      (line 3250)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST:    howto manager.      (line 3258)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT: howto manager.     (line 3286)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL: howto manager.   (line 3272)
 * BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL: howto manager.
-                                                             (line 3273)
-* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: howto manager.  (line 3267)
-* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: howto manager.  (line 3279)
-* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: howto manager.  (line 3263)
-* BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL:   howto manager.      (line 3231)
-* BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL: howto manager.    (line 3247)
-* BFD_RELOC_TILEGX_IMM16_X1_HW2:         howto manager.      (line 3219)
-* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST:    howto manager.      (line 3227)
-* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL: howto manager.   (line 3241)
+                                                             (line 3306)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: howto manager.  (line 3300)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: howto manager.  (line 3312)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: howto manager.  (line 3296)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL:   howto manager.      (line 3264)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL: howto manager.    (line 3280)
+* BFD_RELOC_TILEGX_IMM16_X1_HW2:         howto manager.      (line 3252)
+* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST:    howto manager.      (line 3260)
+* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL: howto manager.   (line 3274)
 * BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL: howto manager.
-                                                             (line 3275)
-* BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL:   howto manager.      (line 3233)
-* BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL: howto manager.    (line 3249)
-* BFD_RELOC_TILEGX_IMM16_X1_HW3:         howto manager.      (line 3221)
-* BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL:   howto manager.      (line 3235)
-* BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL: howto manager.    (line 3255)
-* BFD_RELOC_TILEGX_IMM8_X0:              howto manager.      (line 3201)
-* BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD:      howto manager.      (line 3292)
-* BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD:   howto manager.      (line 3287)
-* BFD_RELOC_TILEGX_IMM8_X1:              howto manager.      (line 3203)
-* BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD:      howto manager.      (line 3293)
-* BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD:   howto manager.      (line 3288)
-* BFD_RELOC_TILEGX_IMM8_Y0:              howto manager.      (line 3202)
-* BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD:      howto manager.      (line 3294)
-* BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD:   howto manager.      (line 3289)
-* BFD_RELOC_TILEGX_IMM8_Y1:              howto manager.      (line 3204)
-* BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD:      howto manager.      (line 3295)
-* BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD:   howto manager.      (line 3290)
-* BFD_RELOC_TILEGX_JMP_SLOT:             howto manager.      (line 3196)
-* BFD_RELOC_TILEGX_JUMPOFF_X1:           howto manager.      (line 3199)
-* BFD_RELOC_TILEGX_JUMPOFF_X1_PLT:       howto manager.      (line 3200)
-* BFD_RELOC_TILEGX_MF_IMM14_X1:          howto manager.      (line 3207)
-* BFD_RELOC_TILEGX_MMEND_X0:             howto manager.      (line 3209)
-* BFD_RELOC_TILEGX_MMSTART_X0:           howto manager.      (line 3208)
-* BFD_RELOC_TILEGX_MT_IMM14_X1:          howto manager.      (line 3206)
-* BFD_RELOC_TILEGX_RELATIVE:             howto manager.      (line 3197)
-* BFD_RELOC_TILEGX_SHAMT_X0:             howto manager.      (line 3210)
-* BFD_RELOC_TILEGX_SHAMT_X1:             howto manager.      (line 3211)
-* BFD_RELOC_TILEGX_SHAMT_Y0:             howto manager.      (line 3212)
-* BFD_RELOC_TILEGX_SHAMT_Y1:             howto manager.      (line 3213)
-* BFD_RELOC_TILEGX_TLS_DTPMOD32:         howto manager.      (line 3283)
-* BFD_RELOC_TILEGX_TLS_DTPMOD64:         howto manager.      (line 3280)
-* BFD_RELOC_TILEGX_TLS_DTPOFF32:         howto manager.      (line 3284)
-* BFD_RELOC_TILEGX_TLS_DTPOFF64:         howto manager.      (line 3281)
-* BFD_RELOC_TILEGX_TLS_GD_CALL:          howto manager.      (line 3286)
-* BFD_RELOC_TILEGX_TLS_IE_LOAD:          howto manager.      (line 3291)
-* BFD_RELOC_TILEGX_TLS_TPOFF32:          howto manager.      (line 3285)
-* BFD_RELOC_TILEGX_TLS_TPOFF64:          howto manager.      (line 3282)
-* BFD_RELOC_TILEPRO_BROFF_X1:            howto manager.      (line 3111)
-* BFD_RELOC_TILEPRO_COPY:                howto manager.      (line 3107)
-* BFD_RELOC_TILEPRO_DEST_IMM8_X1:        howto manager.      (line 3118)
-* BFD_RELOC_TILEPRO_GLOB_DAT:            howto manager.      (line 3108)
-* BFD_RELOC_TILEPRO_IMM16_X0:            howto manager.      (line 3121)
-* BFD_RELOC_TILEPRO_IMM16_X0_GOT:        howto manager.      (line 3137)
-* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA:     howto manager.      (line 3143)
-* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI:     howto manager.      (line 3141)
-* BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO:     howto manager.      (line 3139)
-* BFD_RELOC_TILEPRO_IMM16_X0_HA:         howto manager.      (line 3127)
-* BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL:   howto manager.      (line 3135)
-* BFD_RELOC_TILEPRO_IMM16_X0_HI:         howto manager.      (line 3125)
-* BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL:   howto manager.      (line 3133)
-* BFD_RELOC_TILEPRO_IMM16_X0_LO:         howto manager.      (line 3123)
-* BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL:   howto manager.      (line 3131)
-* BFD_RELOC_TILEPRO_IMM16_X0_PCREL:      howto manager.      (line 3129)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD:     howto manager.      (line 3159)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA:  howto manager.      (line 3165)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI:  howto manager.      (line 3163)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO:  howto manager.      (line 3161)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE:     howto manager.      (line 3167)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA:  howto manager.      (line 3173)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI:  howto manager.      (line 3171)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO:  howto manager.      (line 3169)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE:     howto manager.      (line 3178)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA:  howto manager.      (line 3184)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI:  howto manager.      (line 3182)
-* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO:  howto manager.      (line 3180)
-* BFD_RELOC_TILEPRO_IMM16_X1:            howto manager.      (line 3122)
-* BFD_RELOC_TILEPRO_IMM16_X1_GOT:        howto manager.      (line 3138)
-* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA:     howto manager.      (line 3144)
-* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI:     howto manager.      (line 3142)
-* BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO:     howto manager.      (line 3140)
-* BFD_RELOC_TILEPRO_IMM16_X1_HA:         howto manager.      (line 3128)
-* BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL:   howto manager.      (line 3136)
-* BFD_RELOC_TILEPRO_IMM16_X1_HI:         howto manager.      (line 3126)
-* BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL:   howto manager.      (line 3134)
-* BFD_RELOC_TILEPRO_IMM16_X1_LO:         howto manager.      (line 3124)
-* BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL:   howto manager.      (line 3132)
-* BFD_RELOC_TILEPRO_IMM16_X1_PCREL:      howto manager.      (line 3130)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD:     howto manager.      (line 3160)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA:  howto manager.      (line 3166)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI:  howto manager.      (line 3164)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO:  howto manager.      (line 3162)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE:     howto manager.      (line 3168)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA:  howto manager.      (line 3174)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI:  howto manager.      (line 3172)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO:  howto manager.      (line 3170)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE:     howto manager.      (line 3179)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA:  howto manager.      (line 3185)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI:  howto manager.      (line 3183)
-* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO:  howto manager.      (line 3181)
-* BFD_RELOC_TILEPRO_IMM8_X0:             howto manager.      (line 3114)
-* BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD:  howto manager.      (line 3154)
-* BFD_RELOC_TILEPRO_IMM8_X1:             howto manager.      (line 3116)
-* BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD:  howto manager.      (line 3155)
-* BFD_RELOC_TILEPRO_IMM8_Y0:             howto manager.      (line 3115)
-* BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD:  howto manager.      (line 3156)
-* BFD_RELOC_TILEPRO_IMM8_Y1:             howto manager.      (line 3117)
-* BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD:  howto manager.      (line 3157)
-* BFD_RELOC_TILEPRO_JMP_SLOT:            howto manager.      (line 3109)
-* BFD_RELOC_TILEPRO_JOFFLONG_X1:         howto manager.      (line 3112)
-* BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT:     howto manager.      (line 3113)
-* BFD_RELOC_TILEPRO_MF_IMM15_X1:         howto manager.      (line 3120)
-* BFD_RELOC_TILEPRO_MMEND_X0:            howto manager.      (line 3146)
-* BFD_RELOC_TILEPRO_MMEND_X1:            howto manager.      (line 3148)
-* BFD_RELOC_TILEPRO_MMSTART_X0:          howto manager.      (line 3145)
-* BFD_RELOC_TILEPRO_MMSTART_X1:          howto manager.      (line 3147)
-* BFD_RELOC_TILEPRO_MT_IMM15_X1:         howto manager.      (line 3119)
-* BFD_RELOC_TILEPRO_RELATIVE:            howto manager.      (line 3110)
-* BFD_RELOC_TILEPRO_SHAMT_X0:            howto manager.      (line 3149)
-* BFD_RELOC_TILEPRO_SHAMT_X1:            howto manager.      (line 3150)
-* BFD_RELOC_TILEPRO_SHAMT_Y0:            howto manager.      (line 3151)
-* BFD_RELOC_TILEPRO_SHAMT_Y1:            howto manager.      (line 3152)
-* BFD_RELOC_TILEPRO_TLS_DTPMOD32:        howto manager.      (line 3175)
-* BFD_RELOC_TILEPRO_TLS_DTPOFF32:        howto manager.      (line 3176)
-* BFD_RELOC_TILEPRO_TLS_GD_CALL:         howto manager.      (line 3153)
-* BFD_RELOC_TILEPRO_TLS_IE_LOAD:         howto manager.      (line 3158)
-* BFD_RELOC_TILEPRO_TLS_TPOFF32:         howto manager.      (line 3177)
-* bfd_reloc_type_lookup:                 howto manager.      (line 3407)
+                                                             (line 3308)
+* BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL:   howto manager.      (line 3266)
+* BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL: howto manager.    (line 3282)
+* BFD_RELOC_TILEGX_IMM16_X1_HW3:         howto manager.      (line 3254)
+* BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL:   howto manager.      (line 3268)
+* BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL: howto manager.    (line 3288)
+* BFD_RELOC_TILEGX_IMM8_X0:              howto manager.      (line 3234)
+* BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD:      howto manager.      (line 3325)
+* BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD:   howto manager.      (line 3320)
+* BFD_RELOC_TILEGX_IMM8_X1:              howto manager.      (line 3236)
+* BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD:      howto manager.      (line 3326)
+* BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD:   howto manager.      (line 3321)
+* BFD_RELOC_TILEGX_IMM8_Y0:              howto manager.      (line 3235)
+* BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD:      howto manager.      (line 3327)
+* BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD:   howto manager.      (line 3322)
+* BFD_RELOC_TILEGX_IMM8_Y1:              howto manager.      (line 3237)
+* BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD:      howto manager.      (line 3328)
+* BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD:   howto manager.      (line 3323)
+* BFD_RELOC_TILEGX_JMP_SLOT:             howto manager.      (line 3229)
+* BFD_RELOC_TILEGX_JUMPOFF_X1:           howto manager.      (line 3232)
+* BFD_RELOC_TILEGX_JUMPOFF_X1_PLT:       howto manager.      (line 3233)
+* BFD_RELOC_TILEGX_MF_IMM14_X1:          howto manager.      (line 3240)
+* BFD_RELOC_TILEGX_MMEND_X0:             howto manager.      (line 3242)
+* BFD_RELOC_TILEGX_MMSTART_X0:           howto manager.      (line 3241)
+* BFD_RELOC_TILEGX_MT_IMM14_X1:          howto manager.      (line 3239)
+* BFD_RELOC_TILEGX_RELATIVE:             howto manager.      (line 3230)
+* BFD_RELOC_TILEGX_SHAMT_X0:             howto manager.      (line 3243)
+* BFD_RELOC_TILEGX_SHAMT_X1:             howto manager.      (line 3244)
+* BFD_RELOC_TILEGX_SHAMT_Y0:             howto manager.      (line 3245)
+* BFD_RELOC_TILEGX_SHAMT_Y1:             howto manager.      (line 3246)
+* BFD_RELOC_TILEGX_TLS_DTPMOD32:         howto manager.      (line 3316)
+* BFD_RELOC_TILEGX_TLS_DTPMOD64:         howto manager.      (line 3313)
+* BFD_RELOC_TILEGX_TLS_DTPOFF32:         howto manager.      (line 3317)
+* BFD_RELOC_TILEGX_TLS_DTPOFF64:         howto manager.      (line 3314)
+* BFD_RELOC_TILEGX_TLS_GD_CALL:          howto manager.      (line 3319)
+* BFD_RELOC_TILEGX_TLS_IE_LOAD:          howto manager.      (line 3324)
+* BFD_RELOC_TILEGX_TLS_TPOFF32:          howto manager.      (line 3318)
+* BFD_RELOC_TILEGX_TLS_TPOFF64:          howto manager.      (line 3315)
+* BFD_RELOC_TILEPRO_BROFF_X1:            howto manager.      (line 3144)
+* BFD_RELOC_TILEPRO_COPY:                howto manager.      (line 3140)
+* BFD_RELOC_TILEPRO_DEST_IMM8_X1:        howto manager.      (line 3151)
+* BFD_RELOC_TILEPRO_GLOB_DAT:            howto manager.      (line 3141)
+* BFD_RELOC_TILEPRO_IMM16_X0:            howto manager.      (line 3154)
+* BFD_RELOC_TILEPRO_IMM16_X0_GOT:        howto manager.      (line 3170)
+* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA:     howto manager.      (line 3176)
+* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI:     howto manager.      (line 3174)
+* BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO:     howto manager.      (line 3172)
+* BFD_RELOC_TILEPRO_IMM16_X0_HA:         howto manager.      (line 3160)
+* BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL:   howto manager.      (line 3168)
+* BFD_RELOC_TILEPRO_IMM16_X0_HI:         howto manager.      (line 3158)
+* BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL:   howto manager.      (line 3166)
+* BFD_RELOC_TILEPRO_IMM16_X0_LO:         howto manager.      (line 3156)
+* BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL:   howto manager.      (line 3164)
+* BFD_RELOC_TILEPRO_IMM16_X0_PCREL:      howto manager.      (line 3162)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD:     howto manager.      (line 3192)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA:  howto manager.      (line 3198)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI:  howto manager.      (line 3196)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO:  howto manager.      (line 3194)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE:     howto manager.      (line 3200)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA:  howto manager.      (line 3206)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI:  howto manager.      (line 3204)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO:  howto manager.      (line 3202)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE:     howto manager.      (line 3211)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA:  howto manager.      (line 3217)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI:  howto manager.      (line 3215)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO:  howto manager.      (line 3213)
+* BFD_RELOC_TILEPRO_IMM16_X1:            howto manager.      (line 3155)
+* BFD_RELOC_TILEPRO_IMM16_X1_GOT:        howto manager.      (line 3171)
+* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA:     howto manager.      (line 3177)
+* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI:     howto manager.      (line 3175)
+* BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO:     howto manager.      (line 3173)
+* BFD_RELOC_TILEPRO_IMM16_X1_HA:         howto manager.      (line 3161)
+* BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL:   howto manager.      (line 3169)
+* BFD_RELOC_TILEPRO_IMM16_X1_HI:         howto manager.      (line 3159)
+* BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL:   howto manager.      (line 3167)
+* BFD_RELOC_TILEPRO_IMM16_X1_LO:         howto manager.      (line 3157)
+* BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL:   howto manager.      (line 3165)
+* BFD_RELOC_TILEPRO_IMM16_X1_PCREL:      howto manager.      (line 3163)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD:     howto manager.      (line 3193)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA:  howto manager.      (line 3199)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI:  howto manager.      (line 3197)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO:  howto manager.      (line 3195)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE:     howto manager.      (line 3201)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA:  howto manager.      (line 3207)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI:  howto manager.      (line 3205)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO:  howto manager.      (line 3203)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE:     howto manager.      (line 3212)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA:  howto manager.      (line 3218)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI:  howto manager.      (line 3216)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO:  howto manager.      (line 3214)
+* BFD_RELOC_TILEPRO_IMM8_X0:             howto manager.      (line 3147)
+* BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD:  howto manager.      (line 3187)
+* BFD_RELOC_TILEPRO_IMM8_X1:             howto manager.      (line 3149)
+* BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD:  howto manager.      (line 3188)
+* BFD_RELOC_TILEPRO_IMM8_Y0:             howto manager.      (line 3148)
+* BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD:  howto manager.      (line 3189)
+* BFD_RELOC_TILEPRO_IMM8_Y1:             howto manager.      (line 3150)
+* BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD:  howto manager.      (line 3190)
+* BFD_RELOC_TILEPRO_JMP_SLOT:            howto manager.      (line 3142)
+* BFD_RELOC_TILEPRO_JOFFLONG_X1:         howto manager.      (line 3145)
+* BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT:     howto manager.      (line 3146)
+* BFD_RELOC_TILEPRO_MF_IMM15_X1:         howto manager.      (line 3153)
+* BFD_RELOC_TILEPRO_MMEND_X0:            howto manager.      (line 3179)
+* BFD_RELOC_TILEPRO_MMEND_X1:            howto manager.      (line 3181)
+* BFD_RELOC_TILEPRO_MMSTART_X0:          howto manager.      (line 3178)
+* BFD_RELOC_TILEPRO_MMSTART_X1:          howto manager.      (line 3180)
+* BFD_RELOC_TILEPRO_MT_IMM15_X1:         howto manager.      (line 3152)
+* BFD_RELOC_TILEPRO_RELATIVE:            howto manager.      (line 3143)
+* BFD_RELOC_TILEPRO_SHAMT_X0:            howto manager.      (line 3182)
+* BFD_RELOC_TILEPRO_SHAMT_X1:            howto manager.      (line 3183)
+* BFD_RELOC_TILEPRO_SHAMT_Y0:            howto manager.      (line 3184)
+* BFD_RELOC_TILEPRO_SHAMT_Y1:            howto manager.      (line 3185)
+* BFD_RELOC_TILEPRO_TLS_DTPMOD32:        howto manager.      (line 3208)
+* BFD_RELOC_TILEPRO_TLS_DTPOFF32:        howto manager.      (line 3209)
+* BFD_RELOC_TILEPRO_TLS_GD_CALL:         howto manager.      (line 3186)
+* BFD_RELOC_TILEPRO_TLS_IE_LOAD:         howto manager.      (line 3191)
+* BFD_RELOC_TILEPRO_TLS_TPOFF32:         howto manager.      (line 3210)
+* bfd_reloc_type_lookup:                 howto manager.      (line 3440)
 * BFD_RELOC_V850_16_GOT:                 howto manager.      (line 1525)
 * BFD_RELOC_V850_16_GOTOFF:              howto manager.      (line 1541)
 * BFD_RELOC_V850_16_PCREL:               howto manager.      (line 1505)
@@ -14447,27 +14506,27 @@ BFD Index
 * BFD_RELOC_VAX_GLOB_DAT:                howto manager.      (line 2423)
 * BFD_RELOC_VAX_JMP_SLOT:                howto manager.      (line 2424)
 * BFD_RELOC_VAX_RELATIVE:                howto manager.      (line 2425)
-* BFD_RELOC_VISIUM_HI16:                 howto manager.      (line 3318)
-* BFD_RELOC_VISIUM_HI16_PCREL:           howto manager.      (line 3322)
-* BFD_RELOC_VISIUM_IM16:                 howto manager.      (line 3320)
-* BFD_RELOC_VISIUM_IM16_PCREL:           howto manager.      (line 3324)
-* BFD_RELOC_VISIUM_LO16:                 howto manager.      (line 3319)
-* BFD_RELOC_VISIUM_LO16_PCREL:           howto manager.      (line 3323)
-* BFD_RELOC_VISIUM_REL16:                howto manager.      (line 3321)
+* BFD_RELOC_VISIUM_HI16:                 howto manager.      (line 3351)
+* BFD_RELOC_VISIUM_HI16_PCREL:           howto manager.      (line 3355)
+* BFD_RELOC_VISIUM_IM16:                 howto manager.      (line 3353)
+* BFD_RELOC_VISIUM_IM16_PCREL:           howto manager.      (line 3357)
+* BFD_RELOC_VISIUM_LO16:                 howto manager.      (line 3352)
+* BFD_RELOC_VISIUM_LO16_PCREL:           howto manager.      (line 3356)
+* BFD_RELOC_VISIUM_REL16:                howto manager.      (line 3354)
 * BFD_RELOC_VPE4KMATH_DATA:              howto manager.      (line 2081)
 * BFD_RELOC_VPE4KMATH_INSN:              howto manager.      (line 2082)
 * BFD_RELOC_VTABLE_ENTRY:                howto manager.      (line 2085)
 * BFD_RELOC_VTABLE_INHERIT:              howto manager.      (line 2084)
-* BFD_RELOC_WASM32_ABS32_CODE:           howto manager.      (line 3331)
-* BFD_RELOC_WASM32_CODE_POINTER:         howto manager.      (line 3333)
-* BFD_RELOC_WASM32_COPY:                 howto manager.      (line 3332)
-* BFD_RELOC_WASM32_INDEX:                howto manager.      (line 3334)
-* BFD_RELOC_WASM32_LEB128:               howto manager.      (line 3326)
-* BFD_RELOC_WASM32_LEB128_GOT:           howto manager.      (line 3327)
-* BFD_RELOC_WASM32_LEB128_GOT_CODE:      howto manager.      (line 3328)
-* BFD_RELOC_WASM32_LEB128_PLT:           howto manager.      (line 3329)
-* BFD_RELOC_WASM32_PLT_INDEX:            howto manager.      (line 3330)
-* BFD_RELOC_WASM32_PLT_SIG:              howto manager.      (line 3335)
+* BFD_RELOC_WASM32_ABS32_CODE:           howto manager.      (line 3364)
+* BFD_RELOC_WASM32_CODE_POINTER:         howto manager.      (line 3366)
+* BFD_RELOC_WASM32_COPY:                 howto manager.      (line 3365)
+* BFD_RELOC_WASM32_INDEX:                howto manager.      (line 3367)
+* BFD_RELOC_WASM32_LEB128:               howto manager.      (line 3359)
+* BFD_RELOC_WASM32_LEB128_GOT:           howto manager.      (line 3360)
+* BFD_RELOC_WASM32_LEB128_GOT_CODE:      howto manager.      (line 3361)
+* BFD_RELOC_WASM32_LEB128_PLT:           howto manager.      (line 3362)
+* BFD_RELOC_WASM32_PLT_INDEX:            howto manager.      (line 3363)
+* BFD_RELOC_WASM32_PLT_SIG:              howto manager.      (line 3368)
 * BFD_RELOC_X86_64_32S:                  howto manager.      (line  554)
 * BFD_RELOC_X86_64_COPY:                 howto manager.      (line  549)
 * BFD_RELOC_X86_64_DTPMOD64:             howto manager.      (line  555)
@@ -14519,76 +14578,89 @@ BFD Index
 * BFD_RELOC_XSTORMY16_24:                howto manager.      (line 2413)
 * BFD_RELOC_XSTORMY16_FPTR16:            howto manager.      (line 2414)
 * BFD_RELOC_XSTORMY16_REL_12:            howto manager.      (line 2411)
-* BFD_RELOC_XTENSA_ASM_EXPAND:           howto manager.      (line 2609)
-* BFD_RELOC_XTENSA_ASM_SIMPLIFY:         howto manager.      (line 2613)
-* BFD_RELOC_XTENSA_DIFF16:               howto manager.      (line 2560)
-* BFD_RELOC_XTENSA_DIFF32:               howto manager.      (line 2561)
-* BFD_RELOC_XTENSA_DIFF8:                howto manager.      (line 2559)
-* BFD_RELOC_XTENSA_GLOB_DAT:             howto manager.      (line 2551)
-* BFD_RELOC_XTENSA_JMP_SLOT:             howto manager.      (line 2552)
-* BFD_RELOC_XTENSA_OP0:                  howto manager.      (line 2604)
-* BFD_RELOC_XTENSA_OP1:                  howto manager.      (line 2605)
-* BFD_RELOC_XTENSA_OP2:                  howto manager.      (line 2606)
-* BFD_RELOC_XTENSA_PLT:                  howto manager.      (line 2555)
-* BFD_RELOC_XTENSA_RELATIVE:             howto manager.      (line 2553)
-* BFD_RELOC_XTENSA_RTLD:                 howto manager.      (line 2547)
-* BFD_RELOC_XTENSA_SLOT0_ALT:            howto manager.      (line 2587)
-* BFD_RELOC_XTENSA_SLOT0_OP:             howto manager.      (line 2568)
-* BFD_RELOC_XTENSA_SLOT10_ALT:           howto manager.      (line 2597)
-* BFD_RELOC_XTENSA_SLOT10_OP:            howto manager.      (line 2578)
-* BFD_RELOC_XTENSA_SLOT11_ALT:           howto manager.      (line 2598)
-* BFD_RELOC_XTENSA_SLOT11_OP:            howto manager.      (line 2579)
-* BFD_RELOC_XTENSA_SLOT12_ALT:           howto manager.      (line 2599)
-* BFD_RELOC_XTENSA_SLOT12_OP:            howto manager.      (line 2580)
-* BFD_RELOC_XTENSA_SLOT13_ALT:           howto manager.      (line 2600)
-* BFD_RELOC_XTENSA_SLOT13_OP:            howto manager.      (line 2581)
-* BFD_RELOC_XTENSA_SLOT14_ALT:           howto manager.      (line 2601)
-* BFD_RELOC_XTENSA_SLOT14_OP:            howto manager.      (line 2582)
-* BFD_RELOC_XTENSA_SLOT1_ALT:            howto manager.      (line 2588)
-* BFD_RELOC_XTENSA_SLOT1_OP:             howto manager.      (line 2569)
-* BFD_RELOC_XTENSA_SLOT2_ALT:            howto manager.      (line 2589)
-* BFD_RELOC_XTENSA_SLOT2_OP:             howto manager.      (line 2570)
-* BFD_RELOC_XTENSA_SLOT3_ALT:            howto manager.      (line 2590)
-* BFD_RELOC_XTENSA_SLOT3_OP:             howto manager.      (line 2571)
-* BFD_RELOC_XTENSA_SLOT4_ALT:            howto manager.      (line 2591)
-* BFD_RELOC_XTENSA_SLOT4_OP:             howto manager.      (line 2572)
-* BFD_RELOC_XTENSA_SLOT5_ALT:            howto manager.      (line 2592)
-* BFD_RELOC_XTENSA_SLOT5_OP:             howto manager.      (line 2573)
-* BFD_RELOC_XTENSA_SLOT6_ALT:            howto manager.      (line 2593)
-* BFD_RELOC_XTENSA_SLOT6_OP:             howto manager.      (line 2574)
-* BFD_RELOC_XTENSA_SLOT7_ALT:            howto manager.      (line 2594)
-* BFD_RELOC_XTENSA_SLOT7_OP:             howto manager.      (line 2575)
-* BFD_RELOC_XTENSA_SLOT8_ALT:            howto manager.      (line 2595)
-* BFD_RELOC_XTENSA_SLOT8_OP:             howto manager.      (line 2576)
-* BFD_RELOC_XTENSA_SLOT9_ALT:            howto manager.      (line 2596)
-* BFD_RELOC_XTENSA_SLOT9_OP:             howto manager.      (line 2577)
-* BFD_RELOC_XTENSA_TLSDESC_ARG:          howto manager.      (line 2618)
-* BFD_RELOC_XTENSA_TLSDESC_FN:           howto manager.      (line 2617)
-* BFD_RELOC_XTENSA_TLS_ARG:              howto manager.      (line 2622)
-* BFD_RELOC_XTENSA_TLS_CALL:             howto manager.      (line 2623)
-* BFD_RELOC_XTENSA_TLS_DTPOFF:           howto manager.      (line 2619)
-* BFD_RELOC_XTENSA_TLS_FUNC:             howto manager.      (line 2621)
-* BFD_RELOC_XTENSA_TLS_TPOFF:            howto manager.      (line 2620)
-* BFD_RELOC_Z80_DISP8:                   howto manager.      (line 2625)
-* BFD_RELOC_Z8K_CALLR:                   howto manager.      (line 2629)
-* BFD_RELOC_Z8K_DISP7:                   howto manager.      (line 2627)
-* BFD_RELOC_Z8K_IMM4L:                   howto manager.      (line 2631)
+* BFD_RELOC_XTENSA_ASM_EXPAND:           howto manager.      (line 2613)
+* BFD_RELOC_XTENSA_ASM_SIMPLIFY:         howto manager.      (line 2617)
+* BFD_RELOC_XTENSA_DIFF16:               howto manager.      (line 2562)
+* BFD_RELOC_XTENSA_DIFF32:               howto manager.      (line 2563)
+* BFD_RELOC_XTENSA_DIFF8:                howto manager.      (line 2561)
+* BFD_RELOC_XTENSA_GLOB_DAT:             howto manager.      (line 2553)
+* BFD_RELOC_XTENSA_JMP_SLOT:             howto manager.      (line 2554)
+* BFD_RELOC_XTENSA_NDIFF16:              howto manager.      (line 2633)
+* BFD_RELOC_XTENSA_NDIFF32:              howto manager.      (line 2634)
+* BFD_RELOC_XTENSA_NDIFF8:               howto manager.      (line 2632)
+* BFD_RELOC_XTENSA_OP0:                  howto manager.      (line 2608)
+* BFD_RELOC_XTENSA_OP1:                  howto manager.      (line 2609)
+* BFD_RELOC_XTENSA_OP2:                  howto manager.      (line 2610)
+* BFD_RELOC_XTENSA_PDIFF16:              howto manager.      (line 2630)
+* BFD_RELOC_XTENSA_PDIFF32:              howto manager.      (line 2631)
+* BFD_RELOC_XTENSA_PDIFF8:               howto manager.      (line 2629)
+* BFD_RELOC_XTENSA_PLT:                  howto manager.      (line 2557)
+* BFD_RELOC_XTENSA_RELATIVE:             howto manager.      (line 2555)
+* BFD_RELOC_XTENSA_RTLD:                 howto manager.      (line 2549)
+* BFD_RELOC_XTENSA_SLOT0_ALT:            howto manager.      (line 2591)
+* BFD_RELOC_XTENSA_SLOT0_OP:             howto manager.      (line 2572)
+* BFD_RELOC_XTENSA_SLOT10_ALT:           howto manager.      (line 2601)
+* BFD_RELOC_XTENSA_SLOT10_OP:            howto manager.      (line 2582)
+* BFD_RELOC_XTENSA_SLOT11_ALT:           howto manager.      (line 2602)
+* BFD_RELOC_XTENSA_SLOT11_OP:            howto manager.      (line 2583)
+* BFD_RELOC_XTENSA_SLOT12_ALT:           howto manager.      (line 2603)
+* BFD_RELOC_XTENSA_SLOT12_OP:            howto manager.      (line 2584)
+* BFD_RELOC_XTENSA_SLOT13_ALT:           howto manager.      (line 2604)
+* BFD_RELOC_XTENSA_SLOT13_OP:            howto manager.      (line 2585)
+* BFD_RELOC_XTENSA_SLOT14_ALT:           howto manager.      (line 2605)
+* BFD_RELOC_XTENSA_SLOT14_OP:            howto manager.      (line 2586)
+* BFD_RELOC_XTENSA_SLOT1_ALT:            howto manager.      (line 2592)
+* BFD_RELOC_XTENSA_SLOT1_OP:             howto manager.      (line 2573)
+* BFD_RELOC_XTENSA_SLOT2_ALT:            howto manager.      (line 2593)
+* BFD_RELOC_XTENSA_SLOT2_OP:             howto manager.      (line 2574)
+* BFD_RELOC_XTENSA_SLOT3_ALT:            howto manager.      (line 2594)
+* BFD_RELOC_XTENSA_SLOT3_OP:             howto manager.      (line 2575)
+* BFD_RELOC_XTENSA_SLOT4_ALT:            howto manager.      (line 2595)
+* BFD_RELOC_XTENSA_SLOT4_OP:             howto manager.      (line 2576)
+* BFD_RELOC_XTENSA_SLOT5_ALT:            howto manager.      (line 2596)
+* BFD_RELOC_XTENSA_SLOT5_OP:             howto manager.      (line 2577)
+* BFD_RELOC_XTENSA_SLOT6_ALT:            howto manager.      (line 2597)
+* BFD_RELOC_XTENSA_SLOT6_OP:             howto manager.      (line 2578)
+* BFD_RELOC_XTENSA_SLOT7_ALT:            howto manager.      (line 2598)
+* BFD_RELOC_XTENSA_SLOT7_OP:             howto manager.      (line 2579)
+* BFD_RELOC_XTENSA_SLOT8_ALT:            howto manager.      (line 2599)
+* BFD_RELOC_XTENSA_SLOT8_OP:             howto manager.      (line 2580)
+* BFD_RELOC_XTENSA_SLOT9_ALT:            howto manager.      (line 2600)
+* BFD_RELOC_XTENSA_SLOT9_OP:             howto manager.      (line 2581)
+* BFD_RELOC_XTENSA_TLSDESC_ARG:          howto manager.      (line 2622)
+* BFD_RELOC_XTENSA_TLSDESC_FN:           howto manager.      (line 2621)
+* BFD_RELOC_XTENSA_TLS_ARG:              howto manager.      (line 2626)
+* BFD_RELOC_XTENSA_TLS_CALL:             howto manager.      (line 2627)
+* BFD_RELOC_XTENSA_TLS_DTPOFF:           howto manager.      (line 2623)
+* BFD_RELOC_XTENSA_TLS_FUNC:             howto manager.      (line 2625)
+* BFD_RELOC_XTENSA_TLS_TPOFF:            howto manager.      (line 2624)
+* BFD_RELOC_Z80_16_BE:                   howto manager.      (line 2658)
+* BFD_RELOC_Z80_BYTE0:                   howto manager.      (line 2646)
+* BFD_RELOC_Z80_BYTE1:                   howto manager.      (line 2648)
+* BFD_RELOC_Z80_BYTE2:                   howto manager.      (line 2650)
+* BFD_RELOC_Z80_BYTE3:                   howto manager.      (line 2652)
+* BFD_RELOC_Z80_DISP8:                   howto manager.      (line 2644)
+* BFD_RELOC_Z80_WORD0:                   howto manager.      (line 2654)
+* BFD_RELOC_Z80_WORD1:                   howto manager.      (line 2656)
+* BFD_RELOC_Z8K_CALLR:                   howto manager.      (line 2662)
+* BFD_RELOC_Z8K_DISP7:                   howto manager.      (line 2660)
+* BFD_RELOC_Z8K_IMM4L:                   howto manager.      (line 2664)
 * bfd_rename_section:                    section prototypes. (line  167)
-* bfd_scan_arch:                         Architectures.      (line  571)
+* bfd_scan_arch:                         Architectures.      (line  583)
 * bfd_scan_vma:                          Miscellaneous.      (line  126)
 * bfd_sections_find_if:                  section prototypes. (line  197)
 * bfd_section_already_linked:            Writing the symbol table.
                                                              (line   55)
 * bfd_section_list_clear:                section prototypes. (line    7)
 * bfd_set_archive_head:                  Archives.           (line   74)
-* bfd_set_arch_info:                     Architectures.      (line  612)
+* bfd_set_arch_info:                     Architectures.      (line  624)
 * bfd_set_assert_handler:                Error reporting.    (line  162)
-* bfd_set_default_target:                bfd_target.         (line  557)
+* bfd_set_default_target:                bfd_target.         (line  560)
 * bfd_set_error:                         Error reporting.    (line   58)
 * bfd_set_error_handler:                 Error reporting.    (line  128)
 * bfd_set_error_program_name:            Error reporting.    (line  136)
 * bfd_set_filename:                      Opening and Closing.
-                                                             (line  529)
+                                                             (line  511)
 * bfd_set_file_flags:                    Miscellaneous.      (line   45)
 * bfd_set_format:                        Formats.            (line   67)
 * bfd_set_gp_size:                       Miscellaneous.      (line  116)
@@ -14603,33 +14675,31 @@ BFD Index
                                                              (line   63)
 * bfd_symbol_info:                       symbol handling functions.
                                                              (line  135)
-* bfd_target_list:                       bfd_target.         (line  609)
-* bfd_update_compression_header:         Miscellaneous.      (line  353)
+* bfd_target_list:                       bfd_target.         (line  612)
+* bfd_update_compression_header:         Miscellaneous.      (line  354)
 * bfd_write_bigendian_4byte_int:         Internal.           (line   12)
 * bfd_zalloc:                            Opening and Closing.
-                                                             (line  257)
-* bfd_zalloc2:                           Opening and Closing.
-                                                             (line  266)
+                                                             (line  248)
 * check_build_id_file:                   Opening and Closing.
-                                                             (line  491)
+                                                             (line  473)
 * coff_symbol_type:                      coff.               (line  233)
 * core_file_matches_executable_p:        Core Files.         (line   38)
 * find_separate_debug_file:              Opening and Closing.
-                                                             (line  365)
+                                                             (line  347)
 * generic_core_file_matches_executable_p: Core Files.        (line   48)
 * get_build_id:                          Opening and Closing.
-                                                             (line  460)
+                                                             (line  442)
 * get_build_id_name:                     Opening and Closing.
-                                                             (line  474)
+                                                             (line  456)
 * Hash tables:                           Hash Tables.        (line    6)
 * internal object-file format:           Canonical format.   (line   11)
 * Linker:                                Linker Functions.   (line    6)
 * Other functions:                       Miscellaneous.      (line  188)
 * separate_alt_debug_file_exists:        Opening and Closing.
-                                                             (line  356)
+                                                             (line  338)
 * separate_debug_file_exists:            Opening and Closing.
-                                                             (line  343)
-* struct bfd_iovec:                      Miscellaneous.      (line  414)
+                                                             (line  325)
+* struct bfd_iovec:                      Miscellaneous.      (line  415)
 * target vector (_bfd_final_link):       Performing the Final Link.
                                                              (line    6)
 * target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table.
@@ -14651,61 +14721,61 @@ Node: BFD information loss6244
 Node: Canonical format8785
 Node: BFD front end13128
 Node: typedef bfd13552
-Node: Error reporting31009
-Node: Miscellaneous36260
-Node: Memory Usage55374
-Node: Initialization56605
-Node: Sections57281
-Node: Section Input57764
-Node: Section Output58958
-Node: typedef asection61445
-Node: section prototypes85488
-Node: Symbols96232
-Node: Reading Symbols97835
-Node: Writing Symbols98943
-Node: Mini Symbols100687
-Node: typedef asymbol101661
-Node: symbol handling functions107746
-Node: Archives113121
-Node: Formats117258
-Node: Relocations120209
-Node: typedef arelent120936
-Node: howto manager135854
-Node: Core Files267925
-Node: Targets269963
-Node: bfd_target271938
-Node: Architectures299273
-Node: Opening and Closing330730
-Node: Internal349193
-Node: File Caching356025
-Node: Linker Functions357943
-Node: Creating a Linker Hash Table359617
-Node: Adding Symbols to the Hash Table361356
-Node: Differing file formats362256
-Node: Adding symbols from an object file363981
-Node: Adding symbols from an archive366131
-Node: Performing the Final Link368477
-Node: Information provided by the linker369718
-Node: Relocating the section contents370872
-Node: Writing the symbol table372624
-Node: Hash Tables379778
-Node: Creating and Freeing a Hash Table380976
-Node: Looking Up or Entering a String382226
-Node: Traversing a Hash Table383479
-Node: Deriving a New Hash Table Type384268
-Node: Define the Derived Structures385334
-Node: Write the Derived Creation Routine386415
-Node: Write Other Derived Routines389040
-Node: BFD back ends390355
-Node: What to Put Where390625
-Node: aout390805
-Node: coff397087
-Node: elf425238
-Node: mmo425639
-Node: File layout426509
-Node: Symbol-table432422
-Node: mmo section mapping436185
-Node: GNU Free Documentation License439839
-Node: BFD Index464903
+Node: Error reporting31354
+Node: Miscellaneous36605
+Node: Memory Usage55845
+Node: Initialization57076
+Node: Sections57752
+Node: Section Input58235
+Node: Section Output59429
+Node: typedef asection61916
+Node: section prototypes86834
+Node: Symbols97578
+Node: Reading Symbols99181
+Node: Writing Symbols100289
+Node: Mini Symbols102033
+Node: typedef asymbol103007
+Node: symbol handling functions109092
+Node: Archives114467
+Node: Formats118604
+Node: Relocations121555
+Node: typedef arelent122282
+Node: howto manager137200
+Node: Core Files270842
+Node: Targets272880
+Node: bfd_target274855
+Node: Architectures302302
+Node: Opening and Closing334074
+Node: Internal352043
+Node: File Caching358875
+Node: Linker Functions360793
+Node: Creating a Linker Hash Table362467
+Node: Adding Symbols to the Hash Table364206
+Node: Differing file formats365106
+Node: Adding symbols from an object file366831
+Node: Adding symbols from an archive368981
+Node: Performing the Final Link371327
+Node: Information provided by the linker372568
+Node: Relocating the section contents373722
+Node: Writing the symbol table375474
+Node: Hash Tables382628
+Node: Creating and Freeing a Hash Table383826
+Node: Looking Up or Entering a String385076
+Node: Traversing a Hash Table386329
+Node: Deriving a New Hash Table Type387118
+Node: Define the Derived Structures388184
+Node: Write the Derived Creation Routine389265
+Node: Write Other Derived Routines391890
+Node: BFD back ends393205
+Node: What to Put Where393475
+Node: aout393655
+Node: coff399937
+Node: elf428088
+Node: mmo428489
+Node: File layout429359
+Node: Symbol-table435272
+Node: mmo section mapping439035
+Node: GNU Free Documentation License442689
+Node: BFD Index467753
 
 End Tag Table
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfdint.texi ./bfd/doc/bfdint.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfdint.texi	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/doc/bfdint.texi	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 \input texinfo
-@c Copyright (C) 1988-2019 Free Software Foundation, Inc.
+@c Copyright (C) 1988-2020 Free Software Foundation, Inc.
 @setfilename bfdint.info
 
 @settitle BFD Internals
@@ -14,7 +14,7 @@
 @copying
 This file documents the internals of the BFD library.
 
-Copyright @copyright{} 1988-2019 Free Software Foundation, Inc.
+Copyright @copyright{} 1988-2020 Free Software Foundation, Inc.
 Contributed by Cygnus Support.
 
 Permission is granted to copy, distribute and/or modify this document
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfdio.texi ./bfd/doc/bfdio.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfdio.texi	2020-03-07 02:09:48.000000000 +0000
+++ ./bfd/doc/bfdio.texi	2021-05-21 01:59:10.000000000 +0000
@@ -80,6 +80,8 @@ of space for the 15 bazillon byte table
 This function at least allows us to answer the question, "is the
 size reasonable?".
 
+A return value of zero indicates the file size is unknown.
+
 @findex bfd_get_file_size
 @subsubsection @code{bfd_get_file_size}
 @strong{Synopsis}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfdsumm.texi ./bfd/doc/bfdsumm.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfdsumm.texi	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/doc/bfdsumm.texi	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 @c This summary of BFD is shared by the BFD and LD docs.
-@c Copyright (C) 2012-2019 Free Software Foundation, Inc.
+@c Copyright (C) 2012-2020 Free Software Foundation, Inc.
 
 When an object file is opened, BFD subroutines automatically determine
 the format of the input object file.  They then build a descriptor in
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfd.texi ./bfd/doc/bfd.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfd.texi	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/doc/bfd.texi	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 \input texinfo.tex
 @setfilename bfd.info
-@c Copyright (C) 1988-2019 Free Software Foundation, Inc.
+@c Copyright (C) 1988-2020 Free Software Foundation, Inc.
 @c 
 @synindex fn cp
 
@@ -14,7 +14,7 @@
 @copying
 This file documents the BFD library.
 
-Copyright @copyright{} 1991-2019 Free Software Foundation, Inc.
+Copyright @copyright{} 1991-2020 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -62,7 +62,7 @@ included in the section entitled ``GNU F
 @end tex
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1991-2019 Free Software Foundation, Inc.
+Copyright @copyright{} 1991-2020 Free Software Foundation, Inc.
 
       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.3
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfdt.texi ./bfd/doc/bfdt.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfdt.texi	2020-03-07 02:09:48.000000000 +0000
+++ ./bfd/doc/bfdt.texi	2021-05-21 01:59:10.000000000 +0000
@@ -60,12 +60,6 @@ struct bfd
   /* A unique identifier of the BFD  */
   unsigned int id;
 
-  /* The format which belongs to the BFD. (object, core, etc.)  */
-  ENUM_BITFIELD (bfd_format) format : 3;
-
-  /* The direction with which the BFD was opened.  */
-  ENUM_BITFIELD (bfd_direction) direction : 2;
-
   /* Format_specific flags.  */
   flagword flags;
 
@@ -169,6 +163,12 @@ struct bfd
    | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
    | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
 
+  /* The format which belongs to the BFD. (object, core, etc.)  */
+  ENUM_BITFIELD (bfd_format) format : 3;
+
+  /* The direction with which the BFD was opened.  */
+  ENUM_BITFIELD (bfd_direction) direction : 2;
+
   /* Is the file descriptor being cached?  That is, can it be closed as
      needed, and re-opened when accessed later?  */
   unsigned int cacheable : 1;
@@ -220,13 +220,16 @@ struct bfd
   /* Set if this is a slim LTO object not loaded with a compiler plugin.  */
   unsigned int lto_slim_object : 1;
 
+  /* Do not attempt to modify this file.  Set when detecting errors
+     that BFD is not prepared to handle for objcopy/strip.  */
+  unsigned int read_only : 1;
+
   /* Set to dummy BFD created when claimed by a compiler plug-in
      library.  */
   bfd *plugin_dummy_bfd;
 
-  /* Currently my_archive is tested before adding origin to
-     anything. I believe that this can become always an add of
-     origin, with origin set to 0 for non archive files.  */
+  /* The offset of this bfd in the file, typically 0 if it is not
+     contained in an archive.  */
   ufile_ptr origin;
 
   /* The origin in the archive of the proxy entry.  This will
@@ -258,7 +261,7 @@ struct bfd
 
   /* Symbol table for output BFD (with symcount entries).
      Also used by the linker to cache input BFD symbols.  */
-  struct bfd_symbol  **outsymbols;
+  struct bfd_symbol **outsymbols;
 
   /* Used for input and output.  */
   unsigned int symcount;
@@ -269,6 +272,11 @@ struct bfd
   /* Pointer to structure which contains architecture information.  */
   const struct bfd_arch_info *arch_info;
 
+  /* Cached length of file for bfd_get_size.  0 until bfd_get_size is
+     called, 1 if stat returns an error or the file size is too large to
+     return in ufile_ptr.  Both 0 and 1 should be treated as "unknown".  */
+  ufile_ptr size;
+
   /* Stuff only useful for archives.  */
   void *arelt_data;
   struct bfd *my_archive;      /* The containing archive BFD.  */
@@ -1009,7 +1017,8 @@ The following functions exist but have n
        BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
 
 #define bfd_stat_arch_elt(abfd, stat) \
-       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
+       BFD_SEND (abfd->my_archive ? abfd->my_archive : abfd, \
+                 _bfd_stat_arch_elt, (abfd, stat))
 
 #define bfd_update_armap_timestamp(abfd) \
        BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfdver.texi ./bfd/doc/bfdver.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/bfdver.texi	2020-03-07 02:09:49.000000000 +0000
+++ ./bfd/doc/bfdver.texi	2021-05-21 01:59:10.000000000 +0000
@@ -1,4 +1,4 @@
-@set VERSION 2.33.50
+@set VERSION 2.35.50
 @set VERSION_PACKAGE (GNU Binutils) 
-@set UPDATED March 2020
+@set UPDATED May 2021
 @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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/chew.c ./bfd/doc/chew.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/chew.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/doc/chew.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* chew
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Contributed by steve chamberlain @cygnus
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -170,8 +170,7 @@ static void
 delete_string (buffer)
      string_type *buffer;
 {
-  if (buffer->ptr)
-    free (buffer->ptr);
+  free (buffer->ptr);
   buffer->ptr = NULL;
 }
 
@@ -1258,8 +1257,7 @@ free_words (void)
     {
       dict_type *next;
 
-      if (ptr->word)
-	free (ptr->word);
+      free (ptr->word);
       if (ptr->code)
 	{
 	  int i;
@@ -1443,8 +1441,7 @@ compile (string)
 	  fprintf (stderr, "syntax error at %s\n", string - 1);
 	}
     }
-  if (word)
-    free (word);
+  free (word);
 }
 
 static void
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/libbfd.texi ./bfd/doc/libbfd.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/libbfd.texi	2020-03-07 02:09:48.000000000 +0000
+++ ./bfd/doc/libbfd.texi	2021-05-21 01:59:10.000000000 +0000
@@ -96,7 +96,7 @@ bfd_vma bfd_getl24 (const void *p);
   BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
 
 #define bfd_get(bits, abfd, ptr)                       \
-  ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
+  ((bits) == 8 ? bfd_get_8 (abfd, ptr)                 \
    : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
    : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
    : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/Makefile.am ./bfd/doc/Makefile.am
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/Makefile.am	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/doc/Makefile.am	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 ## Process this file with automake to generate Makefile.in
 #
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/Makefile.in ./bfd/doc/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/Makefile.in	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/doc/Makefile.in	2021-05-21 01:57:23.000000000 +0000
@@ -15,7 +15,7 @@
 @SET_MAKE@
 
 #
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -272,6 +272,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INSTOBJEXT = @INSTOBJEXT@
+LARGEFILE_CPPFLAGS = @LARGEFILE_CPPFLAGS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBINTL = @LIBINTL@
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/makefile.vms ./bfd/doc/makefile.vms
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/makefile.vms	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/doc/makefile.vms	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/opncls.texi ./bfd/doc/opncls.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/opncls.texi	2020-03-07 02:09:48.000000000 +0000
+++ ./bfd/doc/opncls.texi	2021-05-21 01:59:10.000000000 +0000
@@ -265,16 +265,6 @@ void *bfd_alloc (bfd *abfd, bfd_size_typ
 Allocate a block of @var{wanted} bytes of memory attached to
 @code{abfd} and return a pointer to it.
 
-@findex bfd_alloc2
-@subsubsection @code{bfd_alloc2}
-@strong{Synopsis}
-@example
-void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
-@end example
-@strong{Description}@*
-Allocate a block of @var{nmemb} elements of @var{size} bytes each
-of memory attached to @code{abfd} and return a pointer to it.
-
 @findex bfd_zalloc
 @subsubsection @code{bfd_zalloc}
 @strong{Synopsis}
@@ -285,16 +275,6 @@ void *bfd_zalloc (bfd *abfd, bfd_size_ty
 Allocate a block of @var{wanted} bytes of zeroed memory
 attached to @code{abfd} and return a pointer to it.
 
-@findex bfd_zalloc2
-@subsubsection @code{bfd_zalloc2}
-@strong{Synopsis}
-@example
-void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
-@end example
-@strong{Description}@*
-Allocate a block of @var{nmemb} elements of @var{size} bytes each
-of zeroed memory attached to @code{abfd} and return a pointer to it.
-
 @findex bfd_calc_gnu_debuglink_crc32
 @subsubsection @code{bfd_calc_gnu_debuglink_crc32}
 @strong{Synopsis}
@@ -578,10 +558,10 @@ filename.  The caller is responsible for
 @subsubsection @code{bfd_set_filename}
 @strong{Synopsis}
 @example
-void bfd_set_filename (bfd *abfd, char *filename);
+const char *bfd_set_filename (bfd *abfd, const char *filename);
 @end example
 @strong{Description}@*
-Set the filename of @var{abfd}.  The old filename, if any, is freed.
-@var{filename} must be allocated using @code{xmalloc}.  After
-this call, it is owned @var{abfd}.
+Set the filename of @var{abfd}, copying the FILENAME parameter to
+bfd_alloc'd memory owned by @var{abfd}.  Returns a pointer the
+newly allocated name, or NULL if the allocation failed.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/reloc.texi ./bfd/doc/reloc.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/reloc.texi	2020-03-07 02:09:49.000000000 +0000
+++ ./bfd/doc/reloc.texi	2021-05-21 01:59:10.000000000 +0000
@@ -1288,10 +1288,10 @@ Power(rs6000) and PowerPC relocations.
 @deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHESTA
 @deffnx {} BFD_RELOC_PPC64_TPREL34
 @deffnx {} BFD_RELOC_PPC64_DTPREL34
-@deffnx {} BFD_RELOC_PPC64_GOT_TLSGD34
-@deffnx {} BFD_RELOC_PPC64_GOT_TLSLD34
-@deffnx {} BFD_RELOC_PPC64_GOT_TPREL34
-@deffnx {} BFD_RELOC_PPC64_GOT_DTPREL34
+@deffnx {} BFD_RELOC_PPC64_GOT_TLSGD_PCREL34
+@deffnx {} BFD_RELOC_PPC64_GOT_TLSLD_PCREL34
+@deffnx {} BFD_RELOC_PPC64_GOT_TPREL_PCREL34
+@deffnx {} BFD_RELOC_PPC64_GOT_DTPREL_PCREL34
 @deffnx {} BFD_RELOC_PPC64_TLS_PCREL
 PowerPC and PowerPC64 thread-local storage relocations.
 @end deffn
@@ -3356,6 +3356,8 @@ Morpho MT - 8 bit immediate relocation.
 @deffnx {} BFD_RELOC_MSP430_ABS_HI16
 @deffnx {} BFD_RELOC_MSP430_PREL31
 @deffnx {} BFD_RELOC_MSP430_SYM_DIFF
+@deffnx {} BFD_RELOC_MSP430_SET_ULEB128
+@deffnx {} BFD_RELOC_MSP430_SUB_ULEB128
 msp430 specific relocation codes
 @end deffn
 @deffn {} BFD_RELOC_NIOS2_S16
@@ -3469,6 +3471,8 @@ PLT entries.  Otherwise, this is just a
 @deffn {} BFD_RELOC_XTENSA_DIFF8
 @deffnx {} BFD_RELOC_XTENSA_DIFF16
 @deffnx {} BFD_RELOC_XTENSA_DIFF32
+Xtensa relocations for backward compatibility.  These have been replaced
+by BFD_RELOC_XTENSA_PDIFF and BFD_RELOC_XTENSA_NDIFF.
 Xtensa relocations to mark the difference of two local symbols.
 These are only needed to support linker relaxation and can be ignored
 when not relaxing.  The field is set to the value of the difference
@@ -3540,9 +3544,46 @@ BFD_RELOC_XTENSA_ASM_EXPAND.
 @deffnx {} BFD_RELOC_XTENSA_TLS_CALL
 Xtensa TLS relocations.
 @end deffn
+@deffn {} BFD_RELOC_XTENSA_PDIFF8
+@deffnx {} BFD_RELOC_XTENSA_PDIFF16
+@deffnx {} BFD_RELOC_XTENSA_PDIFF32
+@deffnx {} BFD_RELOC_XTENSA_NDIFF8
+@deffnx {} BFD_RELOC_XTENSA_NDIFF16
+@deffnx {} BFD_RELOC_XTENSA_NDIFF32
+Xtensa relocations to mark the difference of two local symbols.
+These are only needed to support linker relaxation and can be ignored
+when not relaxing.  The field is set to the value of the difference
+assuming no relaxation.  The relocation encodes the position of the
+subtracted symbol so the linker can determine whether to adjust the field
+value.  PDIFF relocations are used for positive differences, NDIFF
+relocations are used for negative differences.  The difference value
+is treated as unsigned with these relocation types, giving full
+8/16 value ranges.
+@end deffn
 @deffn {} BFD_RELOC_Z80_DISP8
 8 bit signed offset in (ix+d) or (iy+d).
 @end deffn
+@deffn {} BFD_RELOC_Z80_BYTE0
+First 8 bits of multibyte (32, 24 or 16 bit) value.
+@end deffn
+@deffn {} BFD_RELOC_Z80_BYTE1
+Second 8 bits of multibyte (32, 24 or 16 bit) value.
+@end deffn
+@deffn {} BFD_RELOC_Z80_BYTE2
+Third 8 bits of multibyte (32 or 24 bit) value.
+@end deffn
+@deffn {} BFD_RELOC_Z80_BYTE3
+Fourth 8 bits of multibyte (32 bit) value.
+@end deffn
+@deffn {} BFD_RELOC_Z80_WORD0
+Lowest 16 bits of multibyte (32 or 24 bit) value.
+@end deffn
+@deffn {} BFD_RELOC_Z80_WORD1
+Highest 16 bits of multibyte (32 or 24 bit) value.
+@end deffn
+@deffn {} BFD_RELOC_Z80_16_BE
+Like BFD_RELOC_16 but big-endian.
+@end deffn
 @deffn {} BFD_RELOC_Z8K_DISP7
 DJNZ offset.
 @end deffn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/section.texi ./bfd/doc/section.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/section.texi	2020-03-07 02:09:49.000000000 +0000
+++ ./bfd/doc/section.texi	2021-05-21 01:59:10.000000000 +0000
@@ -113,6 +113,10 @@ typedef struct bfd_section
   /* A unique sequence number.  */
   unsigned int id;
 
+  /* A unique section number which can be used by assembler to
+     distinguish different sections with the same section name.  */
+  unsigned int section_id;
+
   /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
   unsigned int index;
 
@@ -246,6 +250,10 @@ typedef struct bfd_section
      else up the line will take care of it later.  */
 #define SEC_LINKER_CREATED           0x100000
 
+  /* This section contains a section ID to distinguish different
+     sections with the same section name.  */
+#define SEC_ASSEMBLER_SECTION_ID     0x100000
+
   /* This section should not be subject to garbage collection.
      Also set to inform the linker that this section should not be
      listed in the link map as discarded.  */
@@ -495,11 +503,17 @@ typedef struct bfd_section
   /* Early in the link process, map_head and map_tail are used to build
      a list of input sections attached to an output section.  Later,
      output sections use these fields for a list of bfd_link_order
-     structs.  */
+     structs.  The linked_to_symbol_name field is for ELF assembler
+     internal use.  */
   union @{
     struct bfd_link_order *link_order;
     struct bfd_section *s;
+    const char *linked_to_symbol_name;
   @} map_head, map_tail;
+ /* Points to the output section this section is already assigned to, if any.
+    This is used when support for non-contiguous memory regions is enabled.  */
+ struct bfd_section *already_assigned;
+
 @} asection;
 
 /* Relax table contains information about instructions which can
@@ -633,7 +647,9 @@ bfd_is_ind_section (const asection *sec)
 static inline bfd_boolean
 bfd_is_const_section (const asection *sec)
 @{
-  return sec >= bfd_abs_section_ptr && sec <= bfd_ind_section_ptr;
+  return (sec >= _bfd_std_section
+          && sec < _bfd_std_section + (sizeof (_bfd_std_section)
+                                       / sizeof (_bfd_std_section[0])));
 @}
 
 /* Return TRUE if input section SEC has been discarded.  */
@@ -647,41 +663,42 @@ discarded_section (const asection *sec)
 @}
 
 #define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS)                   \
-  /* name, id,  index, next, prev, flags, user_set_vma,            */  \
-  @{  NAME, IDX, 0,     NULL, NULL, FLAGS, 0,                           \
+  /* name, id,  section_id, index, next, prev, flags, user_set_vma, */ \
+  @{  NAME, IDX, 0,          0,     NULL, NULL, FLAGS, 0,               \
                                                                        \
-  /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
+  /* linker_mark, linker_has_input, gc_mark, decompress_status,     */ \
      0,           0,                1,       0,                        \
                                                                        \
-  /* segment_mark, sec_info_type, use_rela_p,                      */  \
+  /* segment_mark, sec_info_type, use_rela_p,                       */ \
      0,            0,             0,                                   \
                                                                        \
-  /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,   */  \
+  /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,    */ \
      0,        0,        0,        0,        0,        0,              \
                                                                        \
-  /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */  \
+  /* vma, lma, size, rawsize, compressed_size, relax, relax_count,  */ \
      0,   0,   0,    0,       0,               0,     0,               \
                                                                        \
-  /* output_offset, output_section, alignment_power,               */  \
+  /* output_offset, output_section, alignment_power,                */ \
      0,             &SEC,           0,                                 \
                                                                        \
-  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
+  /* relocation, orelocation, reloc_count, filepos, rel_filepos,    */ \
      NULL,       NULL,        0,           0,       0,                 \
                                                                        \
-  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
+  /* line_filepos, userdata, contents, lineno, lineno_count,        */ \
      0,            NULL,     NULL,     NULL,   0,                      \
                                                                        \
   /* entsize, kept_section, moving_line_filepos,                    */ \
-     0,       NULL,          0,                                        \
+     0,       NULL,         0,                                         \
                                                                        \
-  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
+  /* target_index, used_by_bfd, constructor_chain, owner,           */ \
      0,            NULL,        NULL,              NULL,               \
                                                                        \
-  /* symbol,                    symbol_ptr_ptr,                    */  \
+  /* symbol,                    symbol_ptr_ptr,                     */ \
      (struct bfd_symbol *) SYM, &SEC.symbol,                           \
                                                                        \
-  /* map_head, map_tail                                            */  \
-     @{ NULL @}, @{ NULL @}                                                \
+  /* map_head, map_tail, already_assigned                           */ \
+     @{ NULL @}, @{ NULL @}, NULL                                          \
+                                                                       \
     @}
 
 /* We use a macro to initialize the static asymbol structures because
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/targets.texi ./bfd/doc/targets.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/doc/targets.texi	2020-03-07 02:09:49.000000000 +0000
+++ ./bfd/doc/targets.texi	2021-05-21 01:59:10.000000000 +0000
@@ -146,6 +146,8 @@ typedef struct bfd_link_info _bfd_link_i
 /* Forward declaration.  */
 typedef struct flag_info flag_info;
 
+typedef void (*bfd_cleanup) (bfd *);
+
 typedef struct bfd_target
 @{
   /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
@@ -210,9 +212,9 @@ typedef struct bfd_target
   /* Format dependent routines: these are vectors of entry points
      within the target vector structure, one for each format to check.  */
 
-  /* Check the format of a file being read.  Return a @code{bfd_target *} or zero.  */
-  const struct bfd_target *
-              (*_bfd_check_format[bfd_type_end]) (bfd *);
+  /* Check the format of a file being read.  Return a @code{bfd_cleanup} on
+     success or zero on failure.  */
+  bfd_cleanup (*_bfd_check_format[bfd_type_end]) (bfd *);
 
   /* Set the format of a file being written.  */
   bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
@@ -362,9 +364,10 @@ BFD_JUMP_TABLE macros.
 #define bfd_get_symbol_info(b,p,e) \
        BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
   const char *(*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *,
+                                                 bfd_boolean,
                                                  bfd_boolean *);
-#define bfd_get_symbol_version_string(b,s,h) \
-       BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))
+#define bfd_get_symbol_version_string(b,s,p,h) \
+       BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,p,h))
   bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
   bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
   alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/dwarf1.c ./bfd/dwarf1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/dwarf1.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/dwarf1.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* DWARF 1 find nearest line (_bfd_dwarf1_find_nearest_line).
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
 
    Written by Gavin Romig-Koch of Cygnus Solutions (gavin@cygnus.com).
 
@@ -140,7 +140,7 @@ struct linenumber
 static struct dwarf1_unit*
 alloc_dwarf1_unit (struct dwarf1_debug* stash)
 {
-  bfd_size_type amt = sizeof (struct dwarf1_unit);
+  size_t amt = sizeof (struct dwarf1_unit);
 
   struct dwarf1_unit* x = (struct dwarf1_unit *) bfd_zalloc (stash->abfd, amt);
   if (x)
@@ -158,7 +158,7 @@ alloc_dwarf1_unit (struct dwarf1_debug*
 static struct dwarf1_func *
 alloc_dwarf1_func (struct dwarf1_debug* stash, struct dwarf1_unit* aUnit)
 {
-  bfd_size_type amt = sizeof (struct dwarf1_func);
+  size_t amt = sizeof (struct dwarf1_func);
 
   struct dwarf1_func* x = (struct dwarf1_func *) bfd_zalloc (stash->abfd, amt);
   if (x)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/dwarf2.c ./bfd/dwarf2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/dwarf2.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/dwarf2.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* DWARF 2 support.
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
    Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions
    (gavin@cygnus.com).
@@ -130,6 +130,12 @@ struct dwarf2_debug_file
   /* Length of the loaded .debug_ranges section.  */
   bfd_size_type dwarf_ranges_size;
 
+  /* Pointer to the .debug_rnglists section loaded into memory.  */
+  bfd_byte *dwarf_rnglists_buffer;
+
+  /* Length of the loaded .debug_rnglists section.  */
+  bfd_size_type dwarf_rnglists_size;
+
   /* A list of all previously read comp_units.  */
   struct comp_unit *all_comp_units;
 
@@ -295,12 +301,12 @@ struct comp_unit
 /* This data structure holds the information of an abbrev.  */
 struct abbrev_info
 {
-  unsigned int number;		/* Number identifying abbrev.  */
-  enum dwarf_tag tag;		/* DWARF tag.  */
-  int has_children;		/* Boolean.  */
-  unsigned int num_attrs;	/* Number of attributes.  */
-  struct attr_abbrev *attrs;	/* An array of attribute descriptions.  */
-  struct abbrev_info *next;	/* Next in chain.  */
+  unsigned int         number;		/* Number identifying abbrev.  */
+  enum dwarf_tag       tag;		/* DWARF tag.  */
+  bfd_boolean          has_children;	/* TRUE if the abbrev has children.  */
+  unsigned int         num_attrs;	/* Number of attributes.  */
+  struct attr_abbrev * attrs;		/* An array of attribute descriptions.  */
+  struct abbrev_info * next;		/* Next in chain.  */
 };
 
 struct attr_abbrev
@@ -327,6 +333,7 @@ const struct dwarf_debug_section dwarf_d
   { ".debug_pubnames",		".zdebug_pubnames" },
   { ".debug_pubtypes",		".zdebug_pubtypes" },
   { ".debug_ranges",		".zdebug_ranges" },
+  { ".debug_rnglists",		".zdebug_rnglist" },
   { ".debug_static_func",	".zdebug_static_func" },
   { ".debug_static_vars",	".zdebug_static_vars" },
   { ".debug_str",		".zdebug_str", },
@@ -360,6 +367,7 @@ enum dwarf_debug_section_enum
   debug_pubnames,
   debug_pubtypes,
   debug_ranges,
+  debug_rnglists,
   debug_static_func,
   debug_static_vars,
   debug_str,
@@ -995,7 +1003,7 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
   struct abbrev_info *cur_abbrev;
   unsigned int abbrev_number, bytes_read, abbrev_name;
   unsigned int abbrev_form, hash_number;
-  bfd_size_type amt;
+  size_t amt;
   void **slot;
   struct abbrev_offset_entry ent = { offset, NULL };
 
@@ -1158,7 +1166,7 @@ read_attribute_value (struct attribute *
   bfd *abfd = unit->abfd;
   unsigned int bytes_read;
   struct dwarf_block *blk;
-  bfd_size_type amt;
+  size_t amt;
 
   if (info_ptr >= info_ptr_end && form != DW_FORM_flag_present)
     {
@@ -1329,6 +1337,17 @@ read_attribute_value (struct attribute *
       attr->form = DW_FORM_sdata;
       attr->u.sval = implicit_const;
       break;
+    case DW_FORM_data16:
+      /* This is really a "constant", but there is no way to store that
+         so pretend it is a 16 byte block instead.  */
+      amt = sizeof (struct dwarf_block);
+      blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
+      if (blk == NULL)
+	return NULL;
+      blk->size = 16;
+      info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk);
+      attr->u.blk = blk;
+      break;
     default:
       _bfd_error_handler (_("DWARF error: invalid or unhandled FORM value: %#x"),
 			  form);
@@ -1472,19 +1491,24 @@ struct lookup_funcinfo
 
 struct varinfo
 {
-  /* Pointer to previous variable in list of all variables */
+  /* Pointer to previous variable in list of all variables.  */
   struct varinfo *prev_var;
-  /* Source location file name */
+  /* The offset of the varinfo from the start of the unit.  */
+  bfd_uint64_t unit_offset;
+  /* Source location file name.  */
   char *file;
-  /* Source location line number */
+  /* Source location line number.  */
   int line;
+  /* The type of this variable.  */
   int tag;
+  /* The name of the variable, if it has one.  */
   char *name;
+  /* The address of the variable.  */
   bfd_vma addr;
-  /* Where the symbol is defined */
+  /* Where the symbol is defined.  */
   asection *sec;
-  /* Is this a stack variable? */
-  unsigned int stack: 1;
+  /* Is this a stack variable?  */
+  bfd_boolean stack;
 };
 
 /* Return TRUE if NEW_LINE should sort after LINE.  */
@@ -1513,7 +1537,7 @@ add_line_info (struct line_info_table *t
 	       unsigned int discriminator,
 	       int end_sequence)
 {
-  bfd_size_type amt = sizeof (struct line_info);
+  size_t amt = sizeof (struct line_info);
   struct line_sequence* seq = table->sequences;
   struct line_info* info = (struct line_info *) bfd_alloc (table->abfd, amt);
 
@@ -1782,11 +1806,11 @@ static bfd_boolean
 build_line_info_table (struct line_info_table *  table,
 		       struct line_sequence *    seq)
 {
-  bfd_size_type      amt;
-  struct line_info** line_info_lookup;
-  struct line_info*  each_line;
-  unsigned int       num_lines;
-  unsigned int       line_index;
+  size_t amt;
+  struct line_info **line_info_lookup;
+  struct line_info *each_line;
+  unsigned int num_lines;
+  unsigned int line_index;
 
   if (seq->line_info_lookup != NULL)
     return TRUE;
@@ -1824,12 +1848,12 @@ build_line_info_table (struct line_info_
 static bfd_boolean
 sort_line_sequences (struct line_info_table* table)
 {
-  bfd_size_type		 amt;
-  struct line_sequence*	 sequences;
-  struct line_sequence*	 seq;
-  unsigned int		 n = 0;
-  unsigned int		 num_sequences = table->num_sequences;
-  bfd_vma		 last_high_pc;
+  size_t amt;
+  struct line_sequence *sequences;
+  struct line_sequence *seq;
+  unsigned int n = 0;
+  unsigned int num_sequences = table->num_sequences;
+  bfd_vma last_high_pc;
 
   if (num_sequences == 0)
     return TRUE;
@@ -1897,7 +1921,7 @@ line_info_add_include_dir (struct line_i
   if ((table->num_dirs % DIR_ALLOC_CHUNK) == 0)
     {
       char **tmp;
-      bfd_size_type amt;
+      size_t amt;
 
       amt = table->num_dirs + DIR_ALLOC_CHUNK;
       amt *= sizeof (char *);
@@ -1931,7 +1955,7 @@ line_info_add_file_name (struct line_inf
   if ((table->num_files % FILE_ALLOC_CHUNK) == 0)
     {
       struct fileinfo *tmp;
-      bfd_size_type amt;
+      size_t amt;
 
       amt = table->num_files + FILE_ALLOC_CHUNK;
       amt *= sizeof (struct fileinfo);
@@ -2064,11 +2088,17 @@ read_formatted_entries (struct comp_unit
 	    case DW_FORM_udata:
 	      *uintp = attr.u.val;
 	      break;
+
+	    case DW_FORM_data16:
+	      /* MD5 data is in the attr.blk, but we are ignoring those.  */
+	      break;
 	    }
 	}
 
-      if (!callback (table, fe.name, fe.dir, fe.time, fe.size))
-	return FALSE;
+      /* Skip the first "zero entry", which is the compilation dir/file.  */
+      if (datai != 0)
+	if (!callback (table, fe.name, fe.dir, fe.time, fe.size))
+	  return FALSE;
     }
 
   *bufp = buf;
@@ -2091,7 +2121,7 @@ decode_line_info (struct comp_unit *unit
   char *cur_file, *cur_dir;
   unsigned char op_code, extended_op, adj_opcode;
   unsigned int exop_len;
-  bfd_size_type amt;
+  size_t amt;
 
   if (unit->line_offset == 0 && file->line_table)
     return file->line_table;
@@ -2415,8 +2445,7 @@ decode_line_info (struct comp_unit *unit
 		    (_("DWARF error: mangled line number section"));
 		  bfd_set_error (bfd_error_bad_value);
 		line_fail:
-		  if (filename != NULL)
-		    free (filename);
+		  free (filename);
 		  goto fail;
 		}
 	      break;
@@ -2461,8 +2490,7 @@ decode_line_info (struct comp_unit *unit
 		filenum = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
 						 FALSE, line_end);
 		line_ptr += bytes_read;
-		if (filename)
-		  free (filename);
+		free (filename);
 		filename = concat_filename (table, filenum);
 		break;
 	      }
@@ -2508,8 +2536,7 @@ decode_line_info (struct comp_unit *unit
 	    }
 	}
 
-      if (filename)
-	free (filename);
+      free (filename);
     }
 
   if (unit->line_offset == 0)
@@ -2524,10 +2551,8 @@ decode_line_info (struct comp_unit *unit
       table->sequences = table->sequences->prev_sequence;
       free (seq);
     }
-  if (table->files != NULL)
-    free (table->files);
-  if (table->dirs != NULL)
-    free (table->dirs);
+  free (table->files);
+  free (table->dirs);
   return NULL;
 }
 
@@ -2599,7 +2624,7 @@ lookup_address_in_line_info_table (struc
       return seq->last_line->address - seq->low_pc;
     }
 
-fail:
+ fail:
   *filename_ptr = NULL;
   return 0;
 }
@@ -2617,6 +2642,19 @@ read_debug_ranges (struct comp_unit * un
 		       &file->dwarf_ranges_buffer, &file->dwarf_ranges_size);
 }
 
+/* Read in the .debug_rnglists section for future reference.  */
+
+static bfd_boolean
+read_debug_rnglists (struct comp_unit * unit)
+{
+  struct dwarf2_debug *stash = unit->stash;
+  struct dwarf2_debug_file *file = unit->file;
+
+  return read_section (unit->abfd, &stash->debug_sections[debug_rnglists],
+		       file->syms, 0,
+		       &file->dwarf_rnglists_buffer, &file->dwarf_rnglists_size);
+}
+
 /* Function table functions.  */
 
 static int
@@ -2858,7 +2896,7 @@ lookup_symbol_in_variable_table (struct
   struct varinfo* each;
 
   for (each = unit->variable_table; each; each = each->prev_var)
-    if (each->stack == 0
+    if (! each->stack
 	&& each->file != NULL
 	&& each->name != NULL
 	&& each->addr == addr
@@ -3107,8 +3145,8 @@ find_abstract_instance (struct comp_unit
 }
 
 static bfd_boolean
-read_rangelist (struct comp_unit *unit, struct arange *arange,
-		bfd_uint64_t offset)
+read_ranges (struct comp_unit *unit, struct arange *arange,
+	     bfd_uint64_t offset)
 {
   bfd_byte *ranges_ptr;
   bfd_byte *ranges_end;
@@ -3153,6 +3191,121 @@ read_rangelist (struct comp_unit *unit,
   return TRUE;
 }
 
+static bfd_boolean
+read_rnglists (struct comp_unit *unit, struct arange *arange,
+	       bfd_uint64_t offset)
+{
+  bfd_byte *rngs_ptr;
+  bfd_byte *rngs_end;
+  bfd_vma base_address = unit->base_address;
+  bfd_vma low_pc;
+  bfd_vma high_pc;
+  bfd *abfd = unit->abfd;
+
+  if (! unit->file->dwarf_rnglists_buffer)
+    {
+      if (! read_debug_rnglists (unit))
+	return FALSE;
+    }
+
+  rngs_ptr = unit->file->dwarf_rnglists_buffer + offset;
+  if (rngs_ptr < unit->file->dwarf_rnglists_buffer)
+    return FALSE;
+  rngs_end = unit->file->dwarf_rnglists_buffer;
+  rngs_end +=  unit->file->dwarf_rnglists_size;
+
+  for (;;)
+    {
+      enum dwarf_range_list_entry rlet;
+      unsigned int bytes_read;
+
+      if (rngs_ptr + 1 > rngs_end)
+	return FALSE;
+
+      rlet = read_1_byte (abfd, rngs_ptr, rngs_end);
+      rngs_ptr++;
+
+      switch (rlet)
+	{
+	case DW_RLE_end_of_list:
+	  return TRUE;
+
+	case DW_RLE_base_address:
+	  if (rngs_ptr + unit->addr_size > rngs_end)
+	    return FALSE;
+	  base_address = read_address (unit, rngs_ptr, rngs_end);
+	  rngs_ptr += unit->addr_size;
+	  continue;
+
+	case DW_RLE_start_length:
+	  if (rngs_ptr + unit->addr_size > rngs_end)
+	    return FALSE;
+	  low_pc = read_address (unit, rngs_ptr, rngs_end);
+	  rngs_ptr += unit->addr_size;
+	  high_pc = low_pc;
+	  high_pc += _bfd_safe_read_leb128 (abfd, rngs_ptr, &bytes_read,
+					    FALSE, rngs_end);
+	  rngs_ptr += bytes_read;
+	  break;
+
+	case DW_RLE_offset_pair:
+	  low_pc = base_address;
+	  low_pc += _bfd_safe_read_leb128 (abfd, rngs_ptr, &bytes_read,
+					   FALSE, rngs_end);
+	  high_pc = base_address;
+	  high_pc += _bfd_safe_read_leb128 (abfd, rngs_ptr, &bytes_read,
+					    FALSE, rngs_end);
+	  break;
+
+	case DW_RLE_start_end:
+	  if (rngs_ptr + 2 * unit->addr_size > rngs_end)
+	    return FALSE;
+	  low_pc = read_address (unit, rngs_ptr, rngs_end);
+	  rngs_ptr += unit->addr_size;
+	  high_pc = read_address (unit, rngs_ptr, rngs_end);
+	  rngs_ptr += unit->addr_size;
+	  break;
+
+	/* TODO x-variants need .debug_addr support used for split-dwarf.  */
+	case DW_RLE_base_addressx:
+	case DW_RLE_startx_endx:
+	case DW_RLE_startx_length:
+	default:
+	  return FALSE;
+	}
+
+      if ((low_pc == 0 && high_pc == 0) || low_pc == high_pc)
+	return FALSE;
+
+      if (!arange_add (unit, arange, low_pc, high_pc))
+	return FALSE;
+    }
+}
+
+static bfd_boolean
+read_rangelist (struct comp_unit *unit, struct arange *arange,
+		bfd_uint64_t offset)
+{
+  if (unit->version <= 4)
+    return read_ranges (unit, arange, offset);
+  else
+    return read_rnglists (unit, arange, offset);
+}
+
+static struct varinfo *
+lookup_var_by_offset (bfd_uint64_t offset, struct varinfo * table)
+{
+  while (table)
+    {
+      if (table->unit_offset == offset)
+	return table;
+      table = table->prev_var;
+    }
+
+  return NULL;
+}
+
+
 /* DWARF2 Compilation unit functions.  */
 
 /* Scan over each die in a comp. unit looking for functions to add
@@ -3189,11 +3342,13 @@ scan_unit_for_symbols (struct comp_unit
       bfd_vma low_pc = 0;
       bfd_vma high_pc = 0;
       bfd_boolean high_pc_relative = FALSE;
+      bfd_uint64_t current_offset;
 
       /* PR 17512: file: 9f405d9d.  */
       if (info_ptr >= info_ptr_end)
 	goto fail;
 
+      current_offset = info_ptr - unit->info_ptr_unit;
       abbrev_number = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
 					     FALSE, info_ptr_end);
       info_ptr += bytes_read;
@@ -3221,12 +3376,13 @@ scan_unit_for_symbols (struct comp_unit
 	  goto fail;
 	}
 
-      var = NULL;
       if (abbrev->tag == DW_TAG_subprogram
 	  || abbrev->tag == DW_TAG_entry_point
 	  || abbrev->tag == DW_TAG_inlined_subroutine)
 	{
-	  bfd_size_type amt = sizeof (struct funcinfo);
+	  size_t amt = sizeof (struct funcinfo);
+
+	  var = NULL;
 	  func = (struct funcinfo *) bfd_zalloc (abfd, amt);
 	  if (func == NULL)
 	    goto fail;
@@ -3248,19 +3404,23 @@ scan_unit_for_symbols (struct comp_unit
       else
 	{
 	  func = NULL;
-	  if (abbrev->tag == DW_TAG_variable)
+	  if (abbrev->tag == DW_TAG_variable
+	      || abbrev->tag == DW_TAG_member)
 	    {
-	      bfd_size_type amt = sizeof (struct varinfo);
+	      size_t amt = sizeof (struct varinfo);
 	      var = (struct varinfo *) bfd_zalloc (abfd, amt);
 	      if (var == NULL)
 		goto fail;
 	      var->tag = abbrev->tag;
-	      var->stack = 1;
+	      var->stack = TRUE;
 	      var->prev_var = unit->variable_table;
 	      unit->variable_table = var;
+	      var->unit_offset = current_offset;
 	      /* PR 18205: Missing debug information can cause this
 		 var to be attached to an already cached unit.  */
 	    }
+	  else
+	    var = NULL;
 
 	  /* No inline function in scope at this nesting level.  */
 	  nested_funcs[nesting_level].func = 0;
@@ -3349,6 +3509,33 @@ scan_unit_for_symbols (struct comp_unit
 	    {
 	      switch (attr.name)
 		{
+		case DW_AT_specification:
+		  if (attr.u.val)
+		    {
+		      struct varinfo * spec_var;
+
+		      spec_var = lookup_var_by_offset (attr.u.val,
+						       unit->variable_table);
+		      if (spec_var == NULL)
+			{
+			  _bfd_error_handler (_("DWARF error: could not find "
+						"variable specification "
+						"at offset %lx"),
+					      (unsigned long) attr.u.val);
+			  break;
+			}
+
+		      if (var->name == NULL)
+			var->name = spec_var->name;
+		      if (var->file == NULL && spec_var->file != NULL)
+			var->file = strdup (spec_var->file);
+		      if (var->line == 0)
+			var->line = spec_var->line;
+		      if (var->sec == NULL)
+			var->sec = spec_var->sec;
+		    }
+		  break;
+
 		case DW_AT_name:
 		  if (is_str_attr (attr.form))
 		    var->name = attr.u.str;
@@ -3365,7 +3552,7 @@ scan_unit_for_symbols (struct comp_unit
 
 		case DW_AT_external:
 		  if (attr.u.val != 0)
-		    var->stack = 0;
+		    var->stack = FALSE;
 		  break;
 
 		case DW_AT_location:
@@ -3379,7 +3566,7 @@ scan_unit_for_symbols (struct comp_unit
 		      if (attr.u.blk->data != NULL
 			  && *attr.u.blk->data == DW_OP_addr)
 			{
-			  var->stack = 0;
+			  var->stack = FALSE;
 
 			  /* Verify that DW_OP_addr is the only opcode in the
 			     location, in which case the block size will be 1
@@ -3469,7 +3656,7 @@ parse_comp_unit (struct dwarf2_debug *st
   struct abbrev_info *abbrev;
   struct attribute attr;
   bfd_byte *end_ptr = info_ptr + unit_length;
-  bfd_size_type amt;
+  size_t amt;
   bfd_vma low_pc = 0;
   bfd_vma high_pc = 0;
   bfd *abfd = file->bfd_ptr;
@@ -3875,7 +4062,7 @@ comp_unit_hash_info (struct dwarf2_debug
        each_var = each_var->prev_var)
     {
       /* Skip stack vars and vars with no files or names.  */
-      if (each_var->stack == 0
+      if (! each_var->stack
 	  && each_var->file != NULL
 	  && each_var->name != NULL)
 	/* There is no need to copy name string into hash table as
@@ -4084,7 +4271,7 @@ place_sections (bfd *orig_bfd, struct dw
   else
     {
       bfd_vma last_vma = 0, last_dwarf = 0;
-      bfd_size_type amt = i * sizeof (struct adjusted_section);
+      size_t amt = i * sizeof (struct adjusted_section);
 
       p = (struct adjusted_section *) bfd_malloc (amt);
       if (p == NULL)
@@ -4452,7 +4639,7 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
 			      void **pinfo,
 			      bfd_boolean do_place)
 {
-  bfd_size_type amt = sizeof (struct dwarf2_debug);
+  size_t amt = sizeof (struct dwarf2_debug);
   bfd_size_type total_size;
   asection *msec;
   struct dwarf2_debug *stash = (struct dwarf2_debug *) *pinfo;
@@ -5094,34 +5281,22 @@ _bfd_dwarf2_cleanup_debug_info (bfd *abf
 	      free (each->line_table->dirs);
 	    }
 
-	  if (each->lookup_funcinfo_table)
-	    {
-	      free (each->lookup_funcinfo_table);
-	      each->lookup_funcinfo_table = NULL;
-	    }
+	  free (each->lookup_funcinfo_table);
+	  each->lookup_funcinfo_table = NULL;
 
 	  while (function_table)
 	    {
-	      if (function_table->file)
-		{
-		  free (function_table->file);
-		  function_table->file = NULL;
-		}
-	      if (function_table->caller_file)
-		{
-		  free (function_table->caller_file);
-		  function_table->caller_file = NULL;
-		}
+	      free (function_table->file);
+	      function_table->file = NULL;
+	      free (function_table->caller_file);
+	      function_table->caller_file = NULL;
 	      function_table = function_table->prev_func;
 	    }
 
 	  while (variable_table)
 	    {
-	      if (variable_table->file)
-		{
-		  free (variable_table->file);
-		  variable_table->file = NULL;
-		}
+	      free (variable_table->file);
+	      variable_table->file = NULL;
 	      variable_table = variable_table->prev_var;
 	    }
 	}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ecoff-bfd.h ./bfd/ecoff-bfd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ecoff-bfd.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/ecoff-bfd.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Externally visible ECOFF routines.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ecoff.c ./bfd/ecoff.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ecoff.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/ecoff.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic ECOFF (Extended-COFF) routines.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Original version by Per Bothner.
    Full support added by Ian Lance Taylor, ian@cygnus.com.
 
@@ -52,8 +52,10 @@
 /* This stuff is somewhat copied from coffcode.h.  */
 static asection bfd_debug_section =
 {
-  /* name,	id,  index, next, prev, flags, user_set_vma,	   */
-     "*DEBUG*", 0,   0,	    NULL, NULL, 0,     0,
+  /* name,	id,  section_id, index, next, prev, flags,	  */
+     "*DEBUG*", 0,   0,		 0,	NULL, NULL, 0,
+  /* user_set_vma,	   */
+     0,
   /* linker_mark, linker_has_input, gc_mark, compress_status,	   */
      0,		  0,		    1,	     0,
   /* segment_mark, sec_info_type, use_rela_p,			   */
@@ -76,8 +78,10 @@ static asection bfd_debug_section =
      NULL,
   /* symbol_ptr_ptr,						   */
      NULL,
-  /* map_head, map_tail						   */
-     { NULL }, { NULL }
+  /* map_head, map_tail,					   */
+     { NULL }, { NULL },
+  /* already_assigned 						   */
+     NULL,
 };
 
 /* Create an ECOFF object.  */
@@ -85,7 +89,7 @@ static asection bfd_debug_section =
 bfd_boolean
 _bfd_ecoff_mkobject (bfd *abfd)
 {
-  bfd_size_type amt = sizeof (ecoff_data_type);
+  size_t amt = sizeof (ecoff_data_type);
 
   abfd->tdata.ecoff_obj_data = (struct ecoff_tdata *) bfd_zalloc (abfd, amt);
   if (abfd->tdata.ecoff_obj_data == NULL)
@@ -154,14 +158,14 @@ _bfd_ecoff_new_section_hook (bfd *abfd,
     { _INIT,   SEC_ALLOC | SEC_CODE | SEC_LOAD },
     { _FINI,   SEC_ALLOC | SEC_CODE | SEC_LOAD },
     { _DATA,   SEC_ALLOC | SEC_DATA | SEC_LOAD },
-    { _SDATA,  SEC_ALLOC | SEC_DATA | SEC_LOAD },
+    { _SDATA,  SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_SMALL_DATA },
     { _RDATA,  SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY},
-    { _LIT8,   SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY},
-    { _LIT4,   SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY},
+    { _LIT8,   SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY | SEC_SMALL_DATA},
+    { _LIT4,   SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY | SEC_SMALL_DATA},
     { _RCONST, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY},
     { _PDATA,  SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY},
     { _BSS,    SEC_ALLOC},
-    { _SBSS,   SEC_ALLOC},
+    { _SBSS,   SEC_ALLOC | SEC_SMALL_DATA},
     /* An Irix 4 shared libary.  */
     { _LIB,    SEC_COFF_SHARED_LIBRARY}
   };
@@ -410,16 +414,19 @@ _bfd_ecoff_styp_to_sec_flags (bfd *abfd
 	  || styp_flags == STYP_PDATA
 	  || styp_flags == STYP_RCONST)
 	sec_flags |= SEC_READONLY;
+      if (styp_flags & STYP_SDATA)
+	sec_flags |= SEC_SMALL_DATA;
     }
-  else if ((styp_flags & STYP_BSS)
-	   || (styp_flags & STYP_SBSS))
+  else if (styp_flags & STYP_SBSS)
+    sec_flags |= SEC_ALLOC | SEC_SMALL_DATA;
+  else if (styp_flags & STYP_BSS)
     sec_flags |= SEC_ALLOC;
   else if ((styp_flags & STYP_INFO) || styp_flags == STYP_COMMENT)
     sec_flags |= SEC_NEVER_LOAD;
   else if ((styp_flags & STYP_LITA)
 	   || (styp_flags & STYP_LIT8)
 	   || (styp_flags & STYP_LIT4))
-    sec_flags |= SEC_DATA | SEC_LOAD | SEC_ALLOC | SEC_READONLY;
+    sec_flags |= SEC_DATA |SEC_SMALL_DATA | SEC_LOAD | SEC_ALLOC | SEC_READONLY;
   else if (styp_flags & STYP_ECOFF_LIB)
     sec_flags |= SEC_COFF_SHARED_LIBRARY;
   else
@@ -463,13 +470,12 @@ ecoff_slurp_symbolic_header (bfd *abfd)
     }
 
   /* Read the symbolic information header.  */
-  raw = bfd_malloc (external_hdr_size);
+  if (bfd_seek (abfd, ecoff_data (abfd)->sym_filepos, SEEK_SET) != 0)
+    goto error_return;
+  raw = _bfd_malloc_and_read (abfd, external_hdr_size, external_hdr_size);
   if (raw == NULL)
     goto error_return;
 
-  if (bfd_seek (abfd, ecoff_data (abfd)->sym_filepos, SEEK_SET) != 0
-      || bfd_bread (raw, external_hdr_size, abfd) != external_hdr_size)
-    goto error_return;
   internal_symhdr = &ecoff_data (abfd)->debug_info.symbolic_header;
   (*backend->debug_swap.swap_hdr_in) (abfd, raw, internal_symhdr);
 
@@ -482,12 +488,10 @@ ecoff_slurp_symbolic_header (bfd *abfd)
   /* Now we can get the correct number of symbols.  */
   abfd->symcount = internal_symhdr->isymMax + internal_symhdr->iextMax;
 
-  if (raw != NULL)
-    free (raw);
+  free (raw);
   return TRUE;
  error_return:
-  if (raw != NULL)
-    free (raw);
+  free (raw);
   return FALSE;
 }
 
@@ -512,6 +516,7 @@ _bfd_ecoff_slurp_symbolic_info (bfd *abf
   bfd_size_type raw_end;
   bfd_size_type cb_end;
   file_ptr pos;
+  size_t amt;
 
   BFD_ASSERT (debug == &ecoff_data (abfd)->debug_info);
 
@@ -568,18 +573,13 @@ _bfd_ecoff_slurp_symbolic_info (bfd *abf
       ecoff_data (abfd)->sym_filepos = 0;
       return TRUE;
     }
-  raw = bfd_alloc (abfd, raw_size);
-  if (raw == NULL)
-    return FALSE;
-
   pos = ecoff_data (abfd)->sym_filepos;
   pos += backend->debug_swap.external_hdr_size;
-  if (bfd_seek (abfd, pos, SEEK_SET) != 0
-      || bfd_bread (raw, raw_size, abfd) != raw_size)
-    {
-      bfd_release (abfd, raw);
-      return FALSE;
-    }
+  if (bfd_seek (abfd, pos, SEEK_SET) != 0)
+    return FALSE;
+  raw = _bfd_alloc_and_read (abfd, raw_size, raw_size);
+  if (raw == NULL)
+    return FALSE;
 
   ecoff_data (abfd)->raw_syments = raw;
 
@@ -613,8 +613,13 @@ _bfd_ecoff_slurp_symbolic_info (bfd *abf
 
      We need to look at the fdr to deal with a lot of information in
      the symbols, so we swap them here.  */
-  debug->fdr = (FDR *) bfd_alloc2 (abfd, internal_symhdr->ifdMax,
-				   sizeof (struct fdr));
+  if (_bfd_mul_overflow ((unsigned long) internal_symhdr->ifdMax,
+			 sizeof (struct fdr), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  debug->fdr = (FDR *) bfd_alloc (abfd, amt);
   if (debug->fdr == NULL)
     return FALSE;
   external_fdr_size = backend->debug_swap.external_fdr_size;
@@ -648,7 +653,7 @@ asymbol *
 _bfd_ecoff_make_empty_symbol (bfd *abfd)
 {
   ecoff_symbol_type *new_symbol;
-  bfd_size_type amt = sizeof (ecoff_symbol_type);
+  size_t amt = sizeof (ecoff_symbol_type);
 
   new_symbol = (ecoff_symbol_type *) bfd_zalloc (abfd, amt);
   if (new_symbol == NULL)
@@ -786,7 +791,7 @@ ecoff_set_symbol_info (bfd *abfd,
 	{
 	  /* Initialize the small common section.  */
 	  ecoff_scom_section.name = SCOMMON;
-	  ecoff_scom_section.flags = SEC_IS_COMMON;
+	  ecoff_scom_section.flags = SEC_IS_COMMON | SEC_SMALL_DATA;
 	  ecoff_scom_section.output_section = &ecoff_scom_section;
 	  ecoff_scom_section.symbol = &ecoff_scom_symbol;
 	  ecoff_scom_section.symbol_ptr_ptr = &ecoff_scom_symbol_ptr;
@@ -870,6 +875,7 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd
   char *eraw_end;
   FDR *fdr_ptr;
   FDR *fdr_end;
+  size_t amt;
 
   /* If we've already read in the symbol table, do nothing.  */
   if (ecoff_data (abfd)->canonical_symbols != NULL)
@@ -882,8 +888,13 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd
   if (bfd_get_symcount (abfd) == 0)
     return TRUE;
 
-  internal = (ecoff_symbol_type *) bfd_alloc2 (abfd, bfd_get_symcount (abfd),
-					       sizeof (ecoff_symbol_type));
+  if (_bfd_mul_overflow (bfd_get_symcount (abfd),
+			 sizeof (ecoff_symbol_type), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  internal = (ecoff_symbol_type *) bfd_alloc (abfd, amt);
   if (internal == NULL)
     return FALSE;
 
@@ -1597,7 +1608,7 @@ ecoff_slurp_reloc_table (bfd *abfd,
   arelent *internal_relocs;
   bfd_size_type external_reloc_size;
   bfd_size_type amt;
-  char *external_relocs;
+  bfd_byte *external_relocs;
   arelent *rptr;
   unsigned int i;
 
@@ -1609,20 +1620,23 @@ ecoff_slurp_reloc_table (bfd *abfd,
   if (! _bfd_ecoff_slurp_symbol_table (abfd))
     return FALSE;
 
-  amt = section->reloc_count;
-  amt *= sizeof (arelent);
-  internal_relocs = (arelent *) bfd_alloc (abfd, amt);
-
   external_reloc_size = backend->external_reloc_size;
   amt = external_reloc_size * section->reloc_count;
-  external_relocs = (char *) bfd_alloc (abfd, amt);
-  if (internal_relocs == NULL || external_relocs == NULL)
-    return FALSE;
   if (bfd_seek (abfd, section->rel_filepos, SEEK_SET) != 0)
     return FALSE;
-  if (bfd_bread (external_relocs, amt, abfd) != amt)
+  external_relocs = _bfd_malloc_and_read (abfd, amt, amt);
+  if (external_relocs == NULL)
     return FALSE;
 
+  amt = section->reloc_count;
+  amt *= sizeof (arelent);
+  internal_relocs = (arelent *) bfd_alloc (abfd, amt);
+  if (internal_relocs == NULL)
+    {
+      free (external_relocs);
+      return FALSE;
+    }
+
   for (i = 0, rptr = internal_relocs; i < section->reloc_count; i++, rptr++)
     {
       struct internal_reloc intern;
@@ -1687,7 +1701,7 @@ ecoff_slurp_reloc_table (bfd *abfd,
       (*backend->adjust_reloc_in) (abfd, &intern, rptr);
     }
 
-  bfd_release (abfd, external_relocs);
+  free (external_relocs);
 
   section->relocation = internal_relocs;
 
@@ -1760,7 +1774,7 @@ _bfd_ecoff_find_nearest_line (bfd *abfd,
 
   if (ecoff_data (abfd)->find_line_info == NULL)
     {
-      bfd_size_type amt = sizeof (struct ecoff_find_line);
+      size_t amt = sizeof (struct ecoff_find_line);
 
       ecoff_data (abfd)->find_line_info =
 	  (struct ecoff_find_line *) bfd_zalloc (abfd, amt);
@@ -2781,14 +2795,12 @@ _bfd_ecoff_write_object_contents (bfd *a
 
   if (reloc_buff != NULL)
     bfd_release (abfd, reloc_buff);
-  if (buff != NULL)
-    free (buff);
+  free (buff);
   return TRUE;
  error_return:
   if (reloc_buff != NULL)
     bfd_release (abfd, reloc_buff);
-  if (buff != NULL)
-    free (buff);
+  free (buff);
   return FALSE;
 }
 
@@ -2867,7 +2879,7 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
   char nextname[17];
   unsigned int i;
   struct areltdata *mapdata;
-  bfd_size_type parsed_size;
+  bfd_size_type parsed_size, stringsize;
   char *raw_armap;
   struct artdata *ardata;
   unsigned int count;
@@ -2879,9 +2891,9 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
   /* Get the name of the first element.  */
   i = bfd_bread ((void *) nextname, (bfd_size_type) 16, abfd);
   if (i == 0)
-      return TRUE;
+    return TRUE;
   if (i != 16)
-      return FALSE;
+    return FALSE;
 
   if (bfd_seek (abfd, (file_ptr) -16, SEEK_CUR) != 0)
     return FALSE;
@@ -2926,21 +2938,22 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
   parsed_size = mapdata->parsed_size;
   free (mapdata);
 
-  raw_armap = (char *) bfd_alloc (abfd, parsed_size);
-  if (raw_armap == NULL)
-    return FALSE;
-
-  if (bfd_bread ((void *) raw_armap, parsed_size, abfd) != parsed_size)
+  if (parsed_size + 1 < 9)
     {
-      if (bfd_get_error () != bfd_error_system_call)
-	bfd_set_error (bfd_error_malformed_archive);
-      bfd_release (abfd, (void *) raw_armap);
+      bfd_set_error (bfd_error_malformed_archive);
       return FALSE;
     }
 
+  raw_armap = (char *) _bfd_alloc_and_read (abfd, parsed_size + 1, parsed_size);
+  if (raw_armap == NULL)
+    return FALSE;
+  raw_armap[parsed_size] = 0;
+
   ardata->tdata = (void *) raw_armap;
 
   count = H_GET_32 (abfd, raw_armap);
+  if ((parsed_size - 8) / 8 < count)
+    goto error_malformed;
 
   ardata->symdef_count = 0;
   ardata->cache = NULL;
@@ -2948,6 +2961,7 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
   /* This code used to overlay the symdefs over the raw archive data,
      but that doesn't work on a 64 bit host.  */
   stringbase = raw_armap + count * 8 + 8;
+  stringsize = parsed_size - (count * 8 + 8);
 
 #ifdef CHECK_ARMAP_HASH
   {
@@ -2995,7 +3009,7 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
   amt *= sizeof (carsym);
   symdef_ptr = (carsym *) bfd_alloc (abfd, amt);
   if (!symdef_ptr)
-    return FALSE;
+    goto error_exit;
 
   ardata->symdefs = symdef_ptr;
 
@@ -3008,6 +3022,8 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
       if (file_offset == 0)
 	continue;
       name_offset = H_GET_32 (abfd, raw_ptr);
+      if (name_offset > stringsize)
+	goto error_malformed;
       symdef_ptr->name = stringbase + name_offset;
       symdef_ptr->file_offset = file_offset;
       ++symdef_ptr;
@@ -3016,10 +3032,17 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
   ardata->first_file_filepos = bfd_tell (abfd);
   /* Pad to an even boundary.  */
   ardata->first_file_filepos += ardata->first_file_filepos % 2;
-
   abfd->has_armap = TRUE;
-
   return TRUE;
+
+ error_malformed:
+  bfd_set_error (bfd_error_malformed_archive);
+ error_exit:
+  ardata->symdef_count = 0;
+  ardata->symdefs = NULL;
+  ardata->tdata = NULL;
+  bfd_release (abfd, raw_armap);
+  return FALSE;
 }
 
 /* Write out an armap.  */
@@ -3079,7 +3102,7 @@ _bfd_ecoff_write_armap (bfd *abfd,
      complain that the index is out of date.  Actually, the Ultrix
      linker just checks the archive name; the GNU linker may check the
      date.  */
-  stat (abfd->filename, &statbuf);
+  stat (bfd_get_filename (abfd), &statbuf);
   _bfd_ar_spacepad (hdr.ar_date, sizeof (hdr.ar_date), "%ld",
 		    (long) (statbuf.st_mtime + 60));
 
@@ -3228,7 +3251,7 @@ struct bfd_link_hash_table *
 _bfd_ecoff_bfd_link_hash_table_create (bfd *abfd)
 {
   struct ecoff_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct ecoff_link_hash_table);
+  size_t amt = sizeof (struct ecoff_link_hash_table);
 
   ret = (struct ecoff_link_hash_table *) bfd_malloc (amt);
   if (ret == NULL)
@@ -3381,7 +3404,7 @@ ecoff_link_add_externals (bfd *abfd,
 	    {
 	      /* Initialize the small common section.  */
 	      ecoff_scom_section.name = SCOMMON;
-	      ecoff_scom_section.flags = SEC_IS_COMMON;
+	      ecoff_scom_section.flags = SEC_IS_COMMON | SEC_SMALL_DATA;
 	      ecoff_scom_section.output_section = &ecoff_scom_section;
 	      ecoff_scom_section.symbol = &ecoff_scom_symbol;
 	      ecoff_scom_section.symbol_ptr_ptr = &ecoff_scom_symbol_ptr;
@@ -3484,38 +3507,30 @@ ecoff_link_add_object_symbols (bfd *abfd
   symhdr = &ecoff_data (abfd)->debug_info.symbolic_header;
 
   /* Read in the external symbols and external strings.  */
+  if (bfd_seek (abfd, symhdr->cbExtOffset, SEEK_SET) != 0)
+    return FALSE;
   external_ext_size = ecoff_backend (abfd)->debug_swap.external_ext_size;
   esize = symhdr->iextMax * external_ext_size;
-  external_ext = bfd_malloc (esize);
+  external_ext = _bfd_malloc_and_read (abfd, esize, esize);
   if (external_ext == NULL && esize != 0)
     goto error_return;
 
-  if (bfd_seek (abfd, (file_ptr) symhdr->cbExtOffset, SEEK_SET) != 0
-      || bfd_bread (external_ext, esize, abfd) != esize)
+  if (bfd_seek (abfd, symhdr->cbSsExtOffset, SEEK_SET) != 0)
     goto error_return;
-
-  ssext = (char *) bfd_malloc ((bfd_size_type) symhdr->issExtMax);
+  ssext = (char *) _bfd_malloc_and_read (abfd, symhdr->issExtMax,
+					 symhdr->issExtMax);
   if (ssext == NULL && symhdr->issExtMax != 0)
     goto error_return;
 
-  if (bfd_seek (abfd, (file_ptr) symhdr->cbSsExtOffset, SEEK_SET) != 0
-      || (bfd_bread (ssext, (bfd_size_type) symhdr->issExtMax, abfd)
-	  != (bfd_size_type) symhdr->issExtMax))
-    goto error_return;
-
   result = ecoff_link_add_externals (abfd, info, external_ext, ssext);
 
-  if (ssext != NULL)
-    free (ssext);
-  if (external_ext != NULL)
-    free (external_ext);
+  free (ssext);
+  free (external_ext);
   return result;
 
  error_return:
-  if (ssext != NULL)
-    free (ssext);
-  if (external_ext != NULL)
-    free (external_ext);
+  free (ssext);
+  free (external_ext);
   return FALSE;
 }
 
@@ -3743,25 +3758,31 @@ ecoff_final_link_debug_accumulate (bfd *
   HDRR *symhdr = &debug->symbolic_header;
   bfd_boolean ret;
 
-#define READ(ptr, offset, count, size, type)				 \
-  if (symhdr->count == 0)						 \
-    debug->ptr = NULL;							 \
-  else									 \
-    {									 \
-      bfd_size_type amt = (bfd_size_type) size * symhdr->count;		 \
-      debug->ptr = (type) bfd_malloc (amt);				 \
-      if (debug->ptr == NULL)						 \
-	{								 \
-	  ret = FALSE;							 \
-	  goto return_something;					 \
-	}								 \
-      if (bfd_seek (input_bfd, (file_ptr) symhdr->offset, SEEK_SET) != 0 \
-	  || bfd_bread (debug->ptr, amt, input_bfd) != amt)		 \
-	{								 \
-	  ret = FALSE;							 \
-	  goto return_something;					 \
-	}								 \
-    }
+#define READ(ptr, offset, count, size, type)				\
+  do									\
+    {									\
+      size_t amt;							\
+      debug->ptr = NULL;						\
+      if (symhdr->count == 0)						\
+	break;								\
+      if (_bfd_mul_overflow (size, symhdr->count, &amt))		\
+	{								\
+	  bfd_set_error (bfd_error_file_too_big);			\
+	  ret = FALSE;							\
+	  goto return_something;					\
+	}								\
+      if (bfd_seek (input_bfd, symhdr->offset, SEEK_SET) != 0)		\
+	{								\
+	  ret = FALSE;							\
+	  goto return_something;					\
+	}								\
+      debug->ptr = (type) _bfd_malloc_and_read (input_bfd, amt, amt);	\
+      if (debug->ptr == NULL)						\
+	{								\
+	  ret = FALSE;							\
+	  goto return_something;					\
+	}								\
+    } while (0)
 
   /* If raw_syments is not NULL, then the data was already by read by
      _bfd_ecoff_slurp_symbolic_info.  */
@@ -3791,24 +3812,15 @@ ecoff_final_link_debug_accumulate (bfd *
  return_something:
   if (ecoff_data (input_bfd)->raw_syments == NULL)
     {
-      if (debug->line != NULL)
-	free (debug->line);
-      if (debug->external_dnr != NULL)
-	free (debug->external_dnr);
-      if (debug->external_pdr != NULL)
-	free (debug->external_pdr);
-      if (debug->external_sym != NULL)
-	free (debug->external_sym);
-      if (debug->external_opt != NULL)
-	free (debug->external_opt);
-      if (debug->external_aux != NULL)
-	free (debug->external_aux);
-      if (debug->ss != NULL)
-	free (debug->ss);
-      if (debug->external_fdr != NULL)
-	free (debug->external_fdr);
-      if (debug->external_rfd != NULL)
-	free (debug->external_rfd);
+      free (debug->line);
+      free (debug->external_dnr);
+      free (debug->external_pdr);
+      free (debug->external_sym);
+      free (debug->external_opt);
+      free (debug->external_aux);
+      free (debug->ss);
+      free (debug->external_fdr);
+      free (debug->external_rfd);
 
       /* Make sure we don't accidentally follow one of these pointers
 	 into freed memory.  */
@@ -3861,13 +3873,11 @@ ecoff_indirect_link_order (bfd *output_b
   external_reloc_size = ecoff_backend (input_bfd)->external_reloc_size;
   external_relocs_size = external_reloc_size * input_section->reloc_count;
 
-  external_relocs = bfd_malloc (external_relocs_size);
-  if (external_relocs == NULL && external_relocs_size != 0)
+  if (bfd_seek (input_bfd, input_section->rel_filepos, SEEK_SET) != 0)
     goto error_return;
-
-  if (bfd_seek (input_bfd, input_section->rel_filepos, SEEK_SET) != 0
-      || (bfd_bread (external_relocs, external_relocs_size, input_bfd)
-	  != external_relocs_size))
+  external_relocs = _bfd_malloc_and_read (input_bfd, external_relocs_size,
+					  external_relocs_size);
+  if (external_relocs == NULL && external_relocs_size != 0)
     goto error_return;
 
   /* Relocate the section contents.  */
@@ -3899,17 +3909,13 @@ ecoff_indirect_link_order (bfd *output_b
       output_section->reloc_count += input_section->reloc_count;
     }
 
-  if (contents != NULL)
-    free (contents);
-  if (external_relocs != NULL)
-    free (external_relocs);
+  free (contents);
+  free (external_relocs);
   return TRUE;
 
  error_return:
-  if (contents != NULL)
-    free (contents);
-  if (external_relocs != NULL)
-    free (external_relocs);
+  free (contents);
+  free (external_relocs);
   return FALSE;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ecofflink.c ./bfd/ecofflink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ecofflink.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/ecofflink.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Routines to link ECOFF debugging information.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -467,7 +467,7 @@ bfd_ecoff_debug_init (bfd *output_bfd AT
 		      struct bfd_link_info *info)
 {
   struct accumulate *ainfo;
-  bfd_size_type amt = sizeof (struct accumulate);
+  size_t amt = sizeof (struct accumulate);
 
   ainfo = (struct accumulate *) bfd_malloc (amt);
   if (!ainfo)
@@ -1112,7 +1112,7 @@ bfd_ecoff_debug_accumulate_other (void *
   fdr.issBase = output_symhdr->issMax;
   fdr.cbSs = 0;
   fdr.rss = ecoff_add_string (ainfo, info, output_debug, &fdr,
-			      input_bfd->filename);
+			      bfd_get_filename (input_bfd));
   if (fdr.rss == -1)
     return FALSE;
   fdr.isymBase = output_symhdr->isymMax;
@@ -1464,12 +1464,10 @@ ecoff_write_symhdr (bfd *abfd,
       != swap->external_hdr_size)
     goto error_return;
 
-  if (buff != NULL)
-    free (buff);
+  free (buff);
   return TRUE;
  error_return:
-  if (buff != NULL)
-    free (buff);
+  free (buff);
   return FALSE;
 }
 
@@ -1491,10 +1489,12 @@ bfd_ecoff_write_debug (bfd *abfd,
     return FALSE;
 
 #define WRITE(ptr, count, size, offset) \
-  BFD_ASSERT (symhdr->offset == 0 \
-	      || (bfd_vma) bfd_tell (abfd) == symhdr->offset); \
-  if (bfd_bwrite (debug->ptr, (bfd_size_type) size * symhdr->count, abfd)\
-      != size * symhdr->count) \
+  BFD_ASSERT (symhdr->offset == 0				\
+	      || (bfd_vma) bfd_tell (abfd) == symhdr->offset);	\
+  if (symhdr->count != 0					\
+      && bfd_bwrite (debug->ptr,				\
+		     (bfd_size_type) size * symhdr->count,	\
+		     abfd) != size * symhdr->count)		\
     return FALSE;
 
   WRITE (line, cbLine, sizeof (unsigned char), cbLineOffset);
@@ -1652,7 +1652,7 @@ bfd_ecoff_write_accumulated_debug (void
   /* The external strings and symbol are not converted over to using
      shuffles.  FIXME: They probably should be.  */
   amt = debug->symbolic_header.issExtMax;
-  if (bfd_bwrite (debug->ssext, amt, abfd) != amt)
+  if (amt != 0 && bfd_bwrite (debug->ssext, amt, abfd) != amt)
     goto error_return;
   if ((debug->symbolic_header.issExtMax & (swap->debug_align - 1)) != 0)
     {
@@ -1682,16 +1682,14 @@ bfd_ecoff_write_accumulated_debug (void
 		  == (bfd_vma) bfd_tell (abfd)));
 
   amt = debug->symbolic_header.iextMax * swap->external_ext_size;
-  if (bfd_bwrite (debug->external_ext, amt, abfd) != amt)
+  if (amt != 0 && bfd_bwrite (debug->external_ext, amt, abfd) != amt)
     goto error_return;
 
-  if (space != NULL)
-    free (space);
+  free (space);
   return TRUE;
 
  error_return:
-  if (space != NULL)
-    free (space);
+  free (space);
   return FALSE;
 }
 
@@ -2320,12 +2318,11 @@ lookup_line (bfd *abfd,
 
       if (len != 0)
 	{
-	  if (line_info->find_buffer != NULL)
-	    free (line_info->find_buffer);
+	  free (line_info->find_buffer);
 	  buffer = (char *) bfd_malloc ((bfd_size_type) len);
+	  line_info->find_buffer = buffer;
 	  if (buffer == NULL)
 	    return FALSE;
-	  line_info->find_buffer = buffer;
 	}
 
       if (function_name != NULL)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ecoffswap.h ./bfd/ecoffswap.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ecoffswap.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/ecoffswap.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic ECOFF swapping routines, for BFD.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-am33lin.c ./bfd/elf32-am33lin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-am33lin.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-am33lin.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Matsushita AM33/2.0 support for 32-bit GNU/Linux ELF
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-arc.c ./bfd/elf32-arc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-arc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-arc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ARC-specific support for 32-bit ELF
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
    Contributed by Cupertino Miranda (cmiranda@synopsys.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -184,9 +184,6 @@ struct elf_arc_link_hash_entry
 {
   struct elf_link_hash_entry root;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   struct got_entry *got_ents;
 };
 
@@ -340,7 +337,6 @@ elf_arc_link_hash_newfunc (struct bfd_ha
 				     table, string));
   if (ret != NULL)
     {
-      ret->dyn_relocs = NULL;
       ret->got_ents = NULL;
     }
 
@@ -1255,11 +1251,11 @@ arc_special_overflow_checks (const struc
       else								\
 	ARC_DEBUG ("symbol_section->vma = NULL\n");			\
       if (input_section->output_section != NULL)			\
-	ARC_DEBUG ("symbol_section->vma = %#lx\n",			\
+	ARC_DEBUG ("input_section->vma = %#lx\n",			\
 		   input_section->output_section->vma			\
 		   + input_section->output_offset);			\
       else								\
-	ARC_DEBUG ("symbol_section->vma = NULL\n");			\
+	ARC_DEBUG ("input_section->vma = NULL\n");			\
       ARC_DEBUG ("PCL = %#lx\n", P);					\
       ARC_DEBUG ("P = %#lx\n", P);					\
       ARC_DEBUG ("G = %#lx\n", G);					\
@@ -1786,6 +1782,7 @@ elf_arc_relocate_section (bfd *			  outp
 	  case R_ARC_PC32:
 	  case R_ARC_32_PCREL:
 	    if (bfd_link_pic (info)
+		&& (input_section->flags & SEC_ALLOC) != 0
 		&& (!IS_ARC_PCREL_TYPE (r_type)
 		    || (h != NULL
 			&& h->dynindx != -1
@@ -1942,8 +1939,9 @@ elf_arc_relocate_section (bfd *			  outp
 }
 
 #define elf_arc_hash_table(p) \
-    (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == ARC_ELF_DATA ? ((struct elf_arc_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == ARC_ELF_DATA)		\
+   ? (struct elf_arc_link_hash_table *) (p)->hash : NULL)
 
 static bfd_boolean
 elf_arc_check_relocs (bfd *			 abfd,
@@ -2710,7 +2708,6 @@ elf_arc_size_dynamic_sections (bfd *outp
   bfd *dynobj;
   asection *s;
   bfd_boolean relocs_exist = FALSE;
-  bfd_boolean reltext_exist = FALSE;
   struct elf_link_hash_table *htab = elf_hash_table (info);
 
   dynobj = htab->dynobj;
@@ -2765,29 +2762,7 @@ elf_arc_size_dynamic_sections (bfd *outp
       else if (strncmp (s->name, ".rela", 5) == 0)
 	{
 	  if (s->size != 0 && s != htab->srelplt)
-	    {
-	      if (!reltext_exist)
-		{
-		  const char *name = s->name + 5;
-		  bfd *ibfd;
-		  for (ibfd = info->input_bfds; ibfd; ibfd = ibfd->link.next)
-		    if (bfd_get_flavour (ibfd) == bfd_target_elf_flavour
-			&& ibfd->flags & DYNAMIC)
-		      {
-			asection *target = bfd_get_section_by_name (ibfd, name);
-			if (target != NULL
-			    && elf_section_data (target)->sreloc == s
-			    && ((target->output_section->flags
-				 & (SEC_READONLY | SEC_ALLOC))
-				== (SEC_READONLY | SEC_ALLOC)))
-			  {
-			    reltext_exist = TRUE;
-			    break;
-			  }
-		      }
-		}
-	      relocs_exist = TRUE;
-	    }
+	    relocs_exist = TRUE;
 
 	  /* We use the reloc_count field as a counter if we need to
 	     copy relocs into the output file.  */
@@ -2814,33 +2789,7 @@ elf_arc_size_dynamic_sections (bfd *outp
 	return FALSE;
     }
 
-  if (htab->dynamic_sections_created)
-    {
-      /* TODO: Check if this is needed.  */
-      if (!bfd_link_pic (info))
-	if (!_bfd_elf_add_dynamic_entry (info, DT_DEBUG, 0))
-		return FALSE;
-
-      if (htab->splt && (htab->splt->flags & SEC_EXCLUDE) == 0)
-	if (!_bfd_elf_add_dynamic_entry (info, DT_PLTGOT, 0)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_PLTRELSZ, 0)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_PLTREL, DT_RELA)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_JMPREL, 0))
-	  return FALSE;
-
-      if (relocs_exist)
-	if (!_bfd_elf_add_dynamic_entry (info, DT_RELA, 0)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_RELASZ, 0)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_RELAENT,
-					    sizeof (Elf32_External_Rela)))
-	  return FALSE;
-
-      if (reltext_exist)
-	if (!_bfd_elf_add_dynamic_entry (info, DT_TEXTREL, 0))
-	  return FALSE;
-    }
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs_exist);
 }
 
 
@@ -3128,21 +3077,17 @@ arc_elf_relax_section (bfd *abfd, asecti
        elf_section_data (sec)->this_hdr.contents = contents;
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-arm.c ./bfd/elf32-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-arm.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-arm.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for ARM
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -1391,7 +1391,7 @@ static reloc_howto_type elf32_arm_howto_
 	 0,			/* bitsize */
 	 FALSE,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_bitfield,/* complain_on_overflow */
+	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TLS_DESCSEQ",	/* name */
 	 FALSE,			/* partial_inplace */
@@ -1683,7 +1683,7 @@ static reloc_howto_type elf32_arm_howto_
 	 0,			/* bitsize */
 	 FALSE,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_bitfield,/* complain_on_overflow */
+	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_TLS_DESCSEQ",/* name */
 	 FALSE,			/* partial_inplace */
@@ -2453,8 +2453,8 @@ static const bfd_vma elf32_thumb2_plt_en
   0x0c00f240,		/* movw	   ip, #0xNNNN	  */
   0x0c00f2c0,		/* movt	   ip, #0xNNNN	  */
   0xf8dc44fc,		/* add	   ip, pc	  */
-  0xe7fdf000		/* ldr.w   pc, [ip]	  */
-			/* b      .-2		  */
+  0xe7fcf000		/* ldr.w   pc, [ip]	  */
+			/* b      .-4		  */
 };
 
 /* The format of the first entry in the procedure linkage table
@@ -3215,9 +3215,6 @@ struct elf32_arm_link_hash_entry
 {
   struct elf_link_hash_entry root;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   /* ARM-specific PLT information.  */
   struct arm_plt_info plt;
 
@@ -3258,9 +3255,10 @@ struct elf32_arm_link_hash_entry
     (info)))
 
 /* Get the ARM elf linker hash table from a link_info structure.  */
-#define elf32_arm_hash_table(info) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((info)->hash)) \
-  == ARM_ELF_DATA ? ((struct elf32_arm_link_hash_table *) ((info)->hash)) : NULL)
+#define elf32_arm_hash_table(p) \
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == ARM_ELF_DATA)		\
+   ? (struct elf32_arm_link_hash_table *) (p)->hash : NULL)
 
 #define arm_stub_hash_lookup(table, string, create, copy) \
   ((struct elf32_arm_stub_hash_entry *) \
@@ -3363,15 +3361,6 @@ struct elf32_arm_link_hash_table
   /* The number of bytes in the subsequent PLT etries.  */
   bfd_size_type plt_entry_size;
 
-  /* True if the target system is VxWorks.  */
-  int vxworks_p;
-
-  /* True if the target system is Symbian OS.  */
-  int symbian_p;
-
-  /* True if the target system is Native Client.  */
-  int nacl_p;
-
   /* True if the target uses REL relocations.  */
   bfd_boolean use_rel;
 
@@ -3392,16 +3381,6 @@ struct elf32_arm_link_hash_table
   /* The (unloaded but important) VxWorks .rela.plt.unloaded section.  */
   asection *srelplt2;
 
-  /* The offset into splt of the PLT entry for the TLS descriptor
-     resolver.  Special values are 0, if not necessary (or not found
-     to be necessary yet), and -1 if needed but not determined
-     yet.  */
-  bfd_vma dt_tlsdesc_plt;
-
-  /* The offset into sgot of the GOT entry used by the PLT entry
-     above.  */
-  bfd_vma dt_tlsdesc_got;
-
   /* Offset in .plt section of tls_arm_trampoline.  */
   bfd_vma tls_trampoline;
 
@@ -3412,9 +3391,6 @@ struct elf32_arm_link_hash_table
     bfd_vma offset;
   } tls_ldm_got;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* For convenience in allocate_dynrelocs.  */
   bfd * obfd;
 
@@ -3582,7 +3558,6 @@ elf32_arm_link_hash_newfunc (struct bfd_
 				     table, string));
   if (ret != NULL)
     {
-      ret->dyn_relocs = NULL;
       ret->tls_type = GOT_UNKNOWN;
       ret->tlsdesc_got = (bfd_vma) -1;
       ret->plt.thumb_refcount = 0;
@@ -3618,27 +3593,40 @@ elf32_arm_allocate_local_sym_info (bfd *
 
       num_syms = elf_tdata (abfd)->symtab_hdr.sh_info;
       size = num_syms * (sizeof (bfd_signed_vma)
-			 + sizeof (struct arm_local_iplt_info *)
 			 + sizeof (bfd_vma)
-			 + sizeof (char)
-			 + sizeof (struct fdpic_local));
+			 + sizeof (struct arm_local_iplt_info *)
+			 + sizeof (struct fdpic_local)
+			 + sizeof (char));
       data = bfd_zalloc (abfd, size);
       if (data == NULL)
 	return FALSE;
 
-      elf32_arm_local_fdpic_cnts (abfd) = (struct fdpic_local *) data;
-      data += num_syms * sizeof (struct fdpic_local);
-
+      /* It is important that these all be allocated in descending
+	 order of required alignment, so that arrays allocated later
+	 will be sufficiently aligned.  */
       elf_local_got_refcounts (abfd) = (bfd_signed_vma *) data;
       data += num_syms * sizeof (bfd_signed_vma);
 
+      elf32_arm_local_tlsdesc_gotent (abfd) = (bfd_vma *) data;
+      data += num_syms * sizeof (bfd_vma);
+
       elf32_arm_local_iplt (abfd) = (struct arm_local_iplt_info **) data;
       data += num_syms * sizeof (struct arm_local_iplt_info *);
 
-      elf32_arm_local_tlsdesc_gotent (abfd) = (bfd_vma *) data;
-      data += num_syms * sizeof (bfd_vma);
+      elf32_arm_local_fdpic_cnts (abfd) = (struct fdpic_local *) data;
+      data += num_syms * sizeof (struct fdpic_local);
 
       elf32_arm_local_got_tls_type (abfd) = data;
+#if GCC_VERSION >= 3000
+      BFD_ASSERT (__alignof__ (*elf32_arm_local_tlsdesc_gotent (abfd))
+		  <= __alignof__ (*elf_local_got_refcounts (abfd)));
+      BFD_ASSERT (__alignof__ (*elf32_arm_local_iplt (abfd))
+		  <= __alignof__ (*elf32_arm_local_tlsdesc_gotent (abfd)));
+      BFD_ASSERT (__alignof__ (*elf32_arm_local_fdpic_cnts (abfd))
+		  <= __alignof__ (*elf32_arm_local_iplt (abfd)));
+      BFD_ASSERT (__alignof__ (*elf32_arm_local_got_tls_type (abfd))
+		  <= __alignof__ (*elf32_arm_local_fdpic_cnts (abfd)));
+#endif
     }
   return TRUE;
 }
@@ -3807,7 +3795,7 @@ create_got_section (bfd *dynobj, struct
     return FALSE;
 
   /* BPABI objects never have a GOT, or associated sections.  */
-  if (htab->symbian_p)
+  if (htab->root.target_os == is_symbian)
     return TRUE;
 
   if (! _bfd_elf_create_got_section (dynobj, info))
@@ -3964,7 +3952,7 @@ elf32_arm_create_dynamic_sections (bfd *
   if (!_bfd_elf_create_dynamic_sections (dynobj, info))
     return FALSE;
 
-  if (htab->vxworks_p)
+  if (htab->root.target_os == is_vxworks)
     {
       if (!elf_vxworks_create_dynamic_sections (dynobj, info, &htab->srelplt2))
 	return FALSE;
@@ -4032,37 +4020,6 @@ elf32_arm_copy_indirect_symbol (struct b
   edir = (struct elf32_arm_link_hash_entry *) dir;
   eind = (struct elf32_arm_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect)
     {
       /* Copy over PLT info.  */
@@ -4110,7 +4067,7 @@ static struct bfd_link_hash_table *
 elf32_arm_link_hash_table_create (bfd *abfd)
 {
   struct elf32_arm_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf32_arm_link_hash_table);
+  size_t amt = sizeof (struct elf32_arm_link_hash_table);
 
   ret = (struct elf32_arm_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -4518,11 +4475,11 @@ arm_type_of_stub (struct bfd_link_info *
 		? (r_type == R_ARM_TLS_CALL
 		   /* TLS PIC Stub.  */
 		   ? arm_stub_long_branch_any_tls_pic
-		   : (globals->nacl_p
+		   : (globals->root.target_os == is_nacl
 		      ? arm_stub_long_branch_arm_nacl_pic
 		      : arm_stub_long_branch_any_arm_pic))
 		/* non-PIC stubs.  */
-		: (globals->nacl_p
+		: (globals->root.target_os == is_nacl
 		   ? arm_stub_long_branch_arm_nacl
 		   : arm_stub_long_branch_any_any);
 	    }
@@ -4787,7 +4744,7 @@ elf32_arm_create_or_find_stub_sec (asect
 	stub_sec_p = &htab->stub_group[link_sec->id].stub_sec;
       stub_sec_prefix = link_sec->name;
       out_sec = link_sec->output_section;
-      align = htab->nacl_p ? 4 : 3;
+      align = htab->root.target_os == is_nacl ? 4 : 3;
     }
 
   if (*stub_sec_p == NULL)
@@ -5064,6 +5021,14 @@ arm_build_one_stub (struct bfd_hash_entr
   stub_entry = (struct elf32_arm_stub_hash_entry *) gen_entry;
   info = (struct bfd_link_info *) in_arg;
 
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (stub_entry->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    stub_entry->target_section);
+
   globals = elf32_arm_hash_table (info);
   if (globals == NULL)
     return FALSE;
@@ -5304,7 +5269,7 @@ elf32_arm_setup_section_lists (bfd *outp
   unsigned int top_id, top_index;
   asection *section;
   asection **input_list, **list;
-  bfd_size_type amt;
+  size_t amt;
   struct elf32_arm_link_hash_table *htab = elf32_arm_hash_table (info);
 
   if (htab == NULL)
@@ -6415,7 +6380,7 @@ set_cmse_veneer_addr_from_implib (struct
       ret = FALSE;
     }
 
-free_sym_buf:
+ free_sym_buf:
   free (sympp);
   return ret;
 }
@@ -6609,9 +6574,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
 			free (internal_relocs);
 		    /* Fall through.  */
 		    error_ret_free_local:
-		      if (local_syms != NULL
-			  && (symtab_hdr->contents
-			      != (unsigned char *) local_syms))
+		      if (symtab_hdr->contents != (unsigned char *) local_syms)
 			free (local_syms);
 		      return FALSE;
 		    }
@@ -7148,7 +7111,6 @@ find_arm_glue (struct bfd_link_info *lin
 
   tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen (name)
 				  + strlen (ARM2THUMB_GLUE_ENTRY_NAME) + 1);
-
   BFD_ASSERT (tmp_name);
 
   sprintf (tmp_name, ARM2THUMB_GLUE_ENTRY_NAME, name);
@@ -7323,7 +7285,6 @@ record_arm_to_thumb_glue (struct bfd_lin
 
   tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen (name)
 				  + strlen (ARM2THUMB_GLUE_ENTRY_NAME) + 1);
-
   BFD_ASSERT (tmp_name);
 
   sprintf (tmp_name, ARM2THUMB_GLUE_ENTRY_NAME, name);
@@ -7401,7 +7362,6 @@ record_arm_bx_glue (struct bfd_link_info
   /* Add symbol for veneer.  */
   tmp_name = (char *)
       bfd_malloc ((bfd_size_type) strlen (ARM_BX_GLUE_ENTRY_NAME) + 1);
-
   BFD_ASSERT (tmp_name);
 
   sprintf (tmp_name, ARM_BX_GLUE_ENTRY_NAME, reg);
@@ -7493,7 +7453,6 @@ record_vfp11_erratum_veneer (struct bfd_
 
   tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen
 				  (VFP11_ERRATUM_VENEER_ENTRY_NAME) + 10);
-
   BFD_ASSERT (tmp_name);
 
   sprintf (tmp_name, VFP11_ERRATUM_VENEER_ENTRY_NAME,
@@ -7613,7 +7572,6 @@ record_stm32l4xx_erratum_veneer (struct
 
   tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen
 				  (STM32L4XX_ERRATUM_VENEER_ENTRY_NAME) + 10);
-
   BFD_ASSERT (tmp_name);
 
   sprintf (tmp_name, STM32L4XX_ERRATUM_VENEER_ENTRY_NAME,
@@ -7983,25 +7941,21 @@ bfd_elf32_arm_process_before_allocation
 	    }
 	}
 
-      if (contents != NULL
-	  && elf_section_data (sec)->this_hdr.contents != contents)
+      if (elf_section_data (sec)->this_hdr.contents != contents)
 	free (contents);
       contents = NULL;
 
-      if (internal_relocs != NULL
-	  && elf_section_data (sec)->relocs != internal_relocs)
+      if (elf_section_data (sec)->relocs != internal_relocs)
 	free (internal_relocs);
       internal_relocs = NULL;
     }
 
   return TRUE;
 
-error_return:
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+ error_return:
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
@@ -8604,17 +8558,15 @@ bfd_elf32_arm_vfp11_erratum_scan (bfd *a
 	    }
 	}
 
-      if (contents != NULL
-	  && elf_section_data (sec)->this_hdr.contents != contents)
+      if (elf_section_data (sec)->this_hdr.contents != contents)
 	free (contents);
       contents = NULL;
     }
 
   return TRUE;
 
-error_return:
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+ error_return:
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
 
   return FALSE;
@@ -8644,6 +8596,7 @@ bfd_elf32_arm_vfp11_fix_veneer_locations
 
   tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen
 				  (VFP11_ERRATUM_VENEER_ENTRY_NAME) + 10);
+  BFD_ASSERT (tmp_name);
 
   for (sec = abfd->sections; sec != NULL; sec = sec->next)
     {
@@ -8731,6 +8684,7 @@ bfd_elf32_arm_stm32l4xx_fix_veneer_locat
 
   tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen
 				  (STM32L4XX_ERRATUM_VENEER_ENTRY_NAME) + 10);
+  BFD_ASSERT (tmp_name);
 
   for (sec = abfd->sections; sec != NULL; sec = sec->next)
     {
@@ -9039,17 +8993,15 @@ bfd_elf32_arm_stm32l4xx_erratum_scan (bf
 	    }
 	}
 
-      if (contents != NULL
-	  && elf_section_data (sec)->this_hdr.contents != contents)
+      if (elf_section_data (sec)->this_hdr.contents != contents)
 	free (contents);
       contents = NULL;
     }
 
   return TRUE;
 
-error_return:
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+ error_return:
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
 
   return FALSE;
@@ -9564,7 +9516,7 @@ elf32_arm_allocate_plt_entry (struct bfd
       sgotplt = htab->root.igotplt;
 
       /* NaCl uses a special first entry in .iplt too.  */
-      if (htab->nacl_p && splt->size == 0)
+      if (htab->root.target_os == is_nacl && splt->size == 0)
 	splt->size += htab->plt_header_size;
 
       /* Allocate room for an R_ARM_IRELATIVE relocation in .rel.iplt.  */
@@ -9606,7 +9558,7 @@ elf32_arm_allocate_plt_entry (struct bfd
   root_plt->offset = splt->size;
   splt->size += htab->plt_entry_size;
 
-  if (!htab->symbian_p)
+  if (htab->root.target_os != is_symbian)
     {
       /* We also need to make an entry in the .got.plt section, which
 	 will be placed in the .got section by the linker script.  */
@@ -9687,7 +9639,7 @@ elf32_arm_populate_plt_entry (bfd *outpu
   BFD_ASSERT (splt != NULL && srel != NULL);
 
   /* Fill in the entry in the procedure linkage table.  */
-  if (htab->symbian_p)
+  if (htab->root.target_os == is_symbian)
     {
       BFD_ASSERT (dynindx >= 0);
       put_arm_insn (htab, output_bfd,
@@ -9744,7 +9696,7 @@ elf32_arm_populate_plt_entry (bfd *outpu
 		     + root_plt->offset);
 
       ptr = splt->contents + root_plt->offset;
-      if (htab->vxworks_p && bfd_link_pic (info))
+      if (htab->root.target_os == is_vxworks && bfd_link_pic (info))
 	{
 	  unsigned int i;
 	  bfd_vma val;
@@ -9762,7 +9714,7 @@ elf32_arm_populate_plt_entry (bfd *outpu
 		put_arm_insn (htab, output_bfd, val, ptr);
 	    }
 	}
-      else if (htab->vxworks_p)
+      else if (htab->root.target_os == is_vxworks)
 	{
 	  unsigned int i;
 	  bfd_vma val;
@@ -9800,7 +9752,7 @@ elf32_arm_populate_plt_entry (bfd *outpu
 	  rel.r_addend = 0;
 	  SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
 	}
-      else if (htab->nacl_p)
+      else if (htab->root.target_os == is_nacl)
 	{
 	  /* Calculate the displacement between the PLT slot and the
 	     common tail that's part of the special initial PLT slot.  */
@@ -9996,6 +9948,12 @@ elf32_arm_populate_plt_entry (bfd *outpu
 	      rel.r_info = ELF32_R_INFO (dynindx, R_ARM_JUMP_SLOT);
 	      initial_got_entry = (splt->output_section->vma
 				   + splt->output_offset);
+
+	      /* PR ld/16017
+		 When thumb only we need to set the LSB for any address that
+		 will be used with an interworking branch instruction.  */
+	      if (using_thumb_only (htab))
+		initial_got_entry |= 1;
 	    }
 	}
 
@@ -10289,7 +10247,7 @@ calculate_group_reloc_mask (bfd_vma valu
 	  /* Determine the most significant bit in the residual and
 	     align the resulting value to a 2-bit boundary.  */
 	  for (msb = 30; msb >= 0; msb -= 2)
-	    if (residual & (3 << msb))
+	    if (residual & (3u << msb))
 	      break;
 
 	  /* The desired shift is now (msb - 6), or zero, whichever
@@ -10403,16 +10361,22 @@ elf32_arm_final_link_relocate (reloc_how
 
   if (globals->use_rel)
     {
-      addend = bfd_get_32 (input_bfd, hit_data) & howto->src_mask;
+      bfd_vma sign;
 
-      if (addend & ((howto->src_mask + 1) >> 1))
+      switch (howto->size)
 	{
-	  signed_addend = -1;
-	  signed_addend &= ~ howto->src_mask;
-	  signed_addend |= addend;
-	}
-      else
-	signed_addend = addend;
+	case 0: addend = bfd_get_8 (input_bfd, hit_data); break;
+	case 1: addend = bfd_get_16 (input_bfd, hit_data); break;
+	case 2: addend = bfd_get_32 (input_bfd, hit_data); break;
+	default: addend = 0; break;
+	}
+      /* Note: the addend and signed_addend calculated here are
+	 incorrect for any split field.  */
+      addend &= howto->src_mask;
+      sign = howto->src_mask & ~(howto->src_mask >> 1);
+      signed_addend = (addend ^ sign) - sign;
+      signed_addend = (bfd_vma) signed_addend << howto->rightshift;
+      addend <<= howto->rightshift;
     }
   else
     addend = signed_addend = rel->r_addend;
@@ -10499,7 +10463,7 @@ elf32_arm_final_link_relocate (reloc_how
       return bfd_reloc_ok;
 
     case R_ARM_ABS12:
-      if (!globals->vxworks_p)
+      if (globals->root.target_os != is_vxworks)
 	return elf32_arm_abs12_reloc (input_bfd, hit_data, value + addend);
       /* Fall through.  */
 
@@ -10547,7 +10511,7 @@ elf32_arm_final_link_relocate (reloc_how
 	   || globals->root.is_relocatable_executable
 	   || globals->fdpic_p)
 	  && (input_section->flags & SEC_ALLOC)
-	  && !(globals->vxworks_p
+	  && !(globals->root.target_os == is_vxworks
 	       && strcmp (input_section->output_section->name,
 			  ".tls_vars") == 0)
 	  && ((r_type != R_ARM_REL32 && r_type != R_ARM_REL32_NOI)
@@ -10624,7 +10588,7 @@ elf32_arm_final_link_relocate (reloc_how
 	      /* This symbol is local, or marked to become local.  */
 	      BFD_ASSERT (r_type == R_ARM_ABS32 || r_type == R_ARM_ABS32_NOI
 			  || (globals->fdpic_p && !bfd_link_pic(info)));
-	      if (globals->symbian_p)
+	      if (globals->root.target_os == is_symbian)
 		{
 		  asection *osec;
 
@@ -10644,7 +10608,9 @@ elf32_arm_final_link_relocate (reloc_how
 		    osec = sym_sec->output_section;
 		  else
 		    osec = input_section->output_section;
-		  symbol = elf_section_data (osec)->dynindx;
+		  symbol = 0;
+		  if (osec && elf_section_data (osec))
+		    symbol = elf_section_data (osec)->dynindx;
 		  if (symbol == 0)
 		    {
 		      struct elf_link_hash_table *htab = elf_hash_table (info);
@@ -10807,11 +10773,7 @@ elf32_arm_final_link_relocate (reloc_how
 	  value -= (input_section->output_section->vma
 		    + input_section->output_offset);
 	  value -= rel->r_offset;
-	  if (globals->use_rel)
-	    value += (signed_addend << howto->size);
-	  else
-	    /* RELA addends do not have to be adjusted by howto->size.  */
-	    value += signed_addend;
+	  value += signed_addend;
 
 	  signed_addend = value;
 	  signed_addend >>= howto->rightshift;
@@ -10915,9 +10877,6 @@ elf32_arm_final_link_relocate (reloc_how
       return bfd_reloc_ok;
 
     case R_ARM_ABS8:
-      /* PR 16202: Refectch the addend using the correct size.  */
-      if (globals->use_rel)
-	addend = bfd_get_8 (input_bfd, hit_data);
       value += addend;
 
       /* There is no way to tell whether the user intended to use a signed or
@@ -10930,9 +10889,6 @@ elf32_arm_final_link_relocate (reloc_how
       return bfd_reloc_ok;
 
     case R_ARM_ABS16:
-      /* PR 16202: Refectch the addend using the correct size.  */
-      if (globals->use_rel)
-	addend = bfd_get_16 (input_bfd, hit_data);
       value += addend;
 
       /* See comment for R_ARM_ABS8.  */
@@ -11411,25 +11367,12 @@ elf32_arm_final_link_relocate (reloc_how
 
 	/* CZB cannot jump backward.  */
 	if (r_type == R_ARM_THM_JUMP6)
-	  reloc_signed_min = 0;
-
-	if (globals->use_rel)
 	  {
-	    /* Need to refetch addend.  */
-	    addend = bfd_get_16 (input_bfd, hit_data) & howto->src_mask;
-	    if (addend & ((howto->src_mask + 1) >> 1))
-	      {
-		signed_addend = -1;
-		signed_addend &= ~ howto->src_mask;
-		signed_addend |= addend;
-	      }
-	    else
-	      signed_addend = addend;
-	    /* The value in the insn has been right shifted.  We need to
-	       undo this, so that we can perform the address calculation
-	       in terms of bytes.  */
-	    signed_addend <<= howto->rightshift;
+	    reloc_signed_min = 0;
+	    if (globals->use_rel)
+	      signed_addend = ((addend & 0x200) >> 3) | ((addend & 0xf8) >> 2);
 	  }
+
 	relocation = value + signed_addend;
 
 	relocation -= (input_section->output_section->vma
@@ -11581,8 +11524,7 @@ elf32_arm_final_link_relocate (reloc_how
 		  if (dynreloc_st_type == STT_GNU_IFUNC)
 		    outrel.r_info = ELF32_R_INFO (0, R_ARM_IRELATIVE);
 		  else if (bfd_link_pic (info)
-			   && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-			       || h->root.type != bfd_link_hash_undefweak))
+			   && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
 		    outrel.r_info = ELF32_R_INFO (0, R_ARM_RELATIVE);
 		  else
 		    {
@@ -15370,7 +15312,7 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	  if (r_symndx < symtab_hdr->sh_info)
 	    {
 	      /* A local symbol.  */
-	      isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	      isym = bfd_sym_from_r_symndx (&htab->root.sym_cache,
 					    abfd, r_symndx);
 	      if (isym == NULL)
 		return FALSE;
@@ -15548,7 +15490,7 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	  case R_ARM_ABS12:
 	    /* VxWorks uses dynamic R_ARM_ABS12 relocations for
 	       ldr __GOTT_INDEX__ offsets.  */
-	    if (!htab->vxworks_p)
+	    if (htab->root.target_os != is_vxworks)
 	      {
 		may_need_local_target_p = TRUE;
 		break;
@@ -15701,7 +15643,7 @@ elf32_arm_check_relocs (bfd *abfd, struc
 		return FALSE;
 
 	      /* BPABI objects never have dynamic relocations mapped.  */
-	      if (htab->symbian_p)
+	      if (htab->root.target_os == is_symbian)
 		{
 		  flagword flags;
 
@@ -15714,7 +15656,7 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	  /* If this is a global symbol, count the number of
 	     relocations we need for this symbol.  */
 	  if (h != NULL)
-	    head = &((struct elf32_arm_link_hash_entry *) h)->dyn_relocs;
+	    head = &h->dyn_relocs;
 	  else
 	    {
 	      head = elf32_arm_get_local_dynreloc_list (abfd, r_symndx, isym);
@@ -15725,7 +15667,7 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	  p = *head;
 	  if (p == NULL || p->sec != sec)
 	    {
-	      bfd_size_type amt = sizeof *p;
+	      size_t amt = sizeof *p;
 
 	      p = (struct elf_dyn_relocs *) bfd_alloc (htab->root.dynobj, amt);
 	      if (p == NULL)
@@ -16093,23 +16035,6 @@ elf32_arm_find_inliner_info (bfd *	    a
   return found;
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = elf32_arm_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -16322,7 +16247,7 @@ allocate_dynrelocs_for_symbol (struct el
 	  /* VxWorks executables have a second set of relocations for
 	     each PLT entry.  They go in a separate relocation section,
 	     which is processed by the kernel loader.  */
-	  if (htab->vxworks_p && !bfd_link_pic (info))
+	  if (htab->root.target_os == is_vxworks && !bfd_link_pic (info))
 	    {
 	      /* There is a relocation for the initial PLT entry:
 		 an R_ARM_32 relocation for _GLOBAL_OFFSET_TABLE_.  */
@@ -16366,7 +16291,7 @@ allocate_dynrelocs_for_symbol (struct el
 	    return FALSE;
 	}
 
-      if (!htab->symbian_p)
+      if (htab->root.target_os != is_symbian)
 	{
 	  s = htab->root.sgot;
 	  h->got.offset = s->size;
@@ -16455,8 +16380,7 @@ allocate_dynrelocs_for_symbol (struct el
 	       GOT entry's R_ARM_IRELATIVE relocation.  */
 	    elf32_arm_allocate_irelocs (info, htab->root.srelgot, 1);
 	  else if (bfd_link_pic (info)
-		   && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-		       || h->root.type != bfd_link_hash_undefweak))
+		   && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
 	    /* Reserve room for the GOT entry's R_ARM_RELATIVE relocation.  */
 	    elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
 	  else if (htab->fdpic_p && tls_type == GOT_NORMAL)
@@ -16596,7 +16520,7 @@ allocate_dynrelocs_for_symbol (struct el
       h->root.u.def.value = th->root.u.def.value & ~1;
     }
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -16617,7 +16541,7 @@ allocate_dynrelocs_for_symbol (struct el
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -16628,11 +16552,11 @@ allocate_dynrelocs_for_symbol (struct el
 	    }
 	}
 
-      if (htab->vxworks_p)
+      if (htab->root.target_os == is_vxworks)
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      if (strcmp (p->sec->output_section->name, ".tls_vars") == 0)
 		*pp = p->next;
@@ -16643,12 +16567,12 @@ allocate_dynrelocs_for_symbol (struct el
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -16699,13 +16623,13 @@ allocate_dynrelocs_for_symbol (struct el
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
 
@@ -16724,34 +16648,6 @@ allocate_dynrelocs_for_symbol (struct el
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-
-  return TRUE;
-}
-
 void
 bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *info,
 				 int byteswap_code)
@@ -16773,7 +16669,6 @@ elf32_arm_size_dynamic_sections (bfd * o
 {
   bfd * dynobj;
   asection * s;
-  bfd_boolean plt;
   bfd_boolean relocs;
   bfd *ibfd;
   struct elf32_arm_link_hash_table *htab;
@@ -16810,7 +16705,6 @@ elf32_arm_size_dynamic_sections (bfd * o
       bfd_size_type locsymcount;
       Elf_Internal_Shdr *symtab_hdr;
       asection *srel;
-      bfd_boolean is_vxworks = htab->vxworks_p;
       unsigned int symndx;
       struct fdpic_local *local_fdpic_cnts;
 
@@ -16832,7 +16726,7 @@ elf32_arm_size_dynamic_sections (bfd * o
 		     linker script /DISCARD/, so we'll be discarding
 		     the relocs too.  */
 		}
-	      else if (is_vxworks
+	      else if (htab->root.target_os == is_vxworks
 		       && strcmp (p->sec->output_section->name,
 				  ".tls_vars") == 0)
 		{
@@ -16973,7 +16867,8 @@ elf32_arm_size_dynamic_sections (bfd * o
 		  s->size += 4;
 		}
 
-	      isym = bfd_sym_from_r_symndx (&htab->sym_cache, ibfd, symndx);
+	      isym = bfd_sym_from_r_symndx (&htab->root.sym_cache, ibfd,
+					    symndx);
 	      if (isym == NULL)
 		return FALSE;
 
@@ -17062,12 +16957,14 @@ elf32_arm_size_dynamic_sections (bfd * o
 
       /* If we're not using lazy TLS relocations, don't generate the
 	 PLT and GOT entries they require.  */
-      if (!(info->flags & DF_BIND_NOW))
+      if ((info->flags & DF_BIND_NOW))
+	htab->root.tlsdesc_plt = 0;
+      else
 	{
-	  htab->dt_tlsdesc_got = htab->root.sgot->size;
+	  htab->root.tlsdesc_got = htab->root.sgot->size;
 	  htab->root.sgot->size += 4;
 
-	  htab->dt_tlsdesc_plt = htab->root.splt->size;
+	  htab->root.tlsdesc_plt = htab->root.splt->size;
 	  htab->root.splt->size += 4 * ARRAY_SIZE (dl_tlsdesc_lazy_trampoline);
 	}
     }
@@ -17075,7 +16972,6 @@ elf32_arm_size_dynamic_sections (bfd * o
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  plt = FALSE;
   relocs = FALSE;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
@@ -17091,7 +16987,7 @@ elf32_arm_size_dynamic_sections (bfd * o
       if (s == htab->root.splt)
 	{
 	  /* Remember whether there is a PLT.  */
-	  plt = s->size != 0;
+	  ;
 	}
       else if (CONST_STRNEQ (name, ".rel"))
 	{
@@ -17143,72 +17039,8 @@ elf32_arm_size_dynamic_sections (bfd * o
 	return FALSE;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in elf32_arm_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-     if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (plt)
-	{
-	  if (   !add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL,
-				     htab->use_rel ? DT_REL : DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-
-	  if (htab->dt_tlsdesc_plt
-	      && (!add_dynamic_entry (DT_TLSDESC_PLT,0)
-		  || !add_dynamic_entry (DT_TLSDESC_GOT,0)))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (htab->use_rel)
-	    {
-	      if (!add_dynamic_entry (DT_REL, 0)
-		  || !add_dynamic_entry (DT_RELSZ, 0)
-		  || !add_dynamic_entry (DT_RELENT, RELOC_SIZE (htab)))
-		return FALSE;
-	    }
-	  else
-	    {
-	      if (!add_dynamic_entry (DT_RELA, 0)
-		  || !add_dynamic_entry (DT_RELASZ, 0)
-		  || !add_dynamic_entry (DT_RELAENT, RELOC_SIZE (htab)))
-		return FALSE;
-	    }
-	}
-
-      /* If any dynamic relocs apply to a read-only section,
-	 then we need a DT_TEXTREL entry.  */
-      if ((info->flags & DF_TEXTREL) == 0)
-	elf_link_hash_traverse (&htab->root, maybe_set_textrel, info);
-
-      if ((info->flags & DF_TEXTREL) != 0)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-      if (htab->vxworks_p
-	  && !elf_vxworks_add_dynamic_entries (output_bfd, info))
-	return FALSE;
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_maybe_vxworks_add_dynamic_tags (output_bfd, info,
+						  relocs);
 }
 
 /* Size sections even though they're not dynamic.  We use it to setup
@@ -17347,7 +17179,9 @@ elf32_arm_finish_dynamic_symbol (bfd * o
      and for FDPIC, the _GLOBAL_OFFSET_TABLE_ symbol is not absolute:
      it is relative to the ".got" section.  */
   if (h == htab->root.hdynamic
-      || (!htab->fdpic_p && !htab->vxworks_p && h == htab->root.hgot))
+      || (!htab->fdpic_p
+	  && htab->root.target_os != is_vxworks
+	  && h == htab->root.hgot))
     sym->st_shndx = SHN_ABS;
 
   return TRUE;
@@ -17433,7 +17267,7 @@ elf32_arm_finish_dynamic_sections (bfd *
 
       splt = htab->root.splt;
       BFD_ASSERT (splt != NULL && sdyn != NULL);
-      BFD_ASSERT (htab->symbian_p || sgot != NULL);
+      BFD_ASSERT (htab->root.target_os == is_symbian || sgot != NULL);
 
       dyncon = (Elf32_External_Dyn *) sdyn->contents;
       dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size);
@@ -17451,7 +17285,7 @@ elf32_arm_finish_dynamic_sections (bfd *
 	      unsigned int type;
 
 	    default:
-	      if (htab->vxworks_p
+	      if (htab->root.target_os == is_vxworks
 		  && elf_vxworks_finish_dynamic_entry (output_bfd, &dyn))
 		bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
@@ -17476,7 +17310,8 @@ elf32_arm_finish_dynamic_sections (bfd *
 	      goto get_vma_if_bpabi;
 
 	    case DT_PLTGOT:
-	      name = htab->symbian_p ? ".got" : ".got.plt";
+	      name = (htab->root.target_os == is_symbian
+		      ? ".got" : ".got.plt");
 	      goto get_vma;
 	    case DT_JMPREL:
 	      name = RELOC_SECTION (htab, ".plt");
@@ -17489,7 +17324,7 @@ elf32_arm_finish_dynamic_sections (bfd *
 		  bfd_set_error (bfd_error_invalid_operation);
 		  return FALSE;
 		}
-	      if (!htab->symbian_p)
+	      if (htab->root.target_os != is_symbian)
 		dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
 	      else
 		/* In the BPABI, tags in the PT_DYNAMIC section point
@@ -17500,7 +17335,7 @@ elf32_arm_finish_dynamic_sections (bfd *
 	      break;
 
 	    get_vma_if_bpabi:
-	      if (htab->symbian_p)
+	      if (htab->root.target_os == is_symbian)
 		goto get_vma;
 	      break;
 
@@ -17522,7 +17357,7 @@ elf32_arm_finish_dynamic_sections (bfd *
 		 relocation section, since relocation sections are
 		 never allocated under the BPABI.  PLT relocs are also
 		 included.  */
-	      if (htab->symbian_p)
+	      if (htab->root.target_os == is_symbian)
 		{
 		  unsigned int i;
 		  type = ((dyn.d_tag == DT_REL || dyn.d_tag == DT_RELSZ)
@@ -17549,14 +17384,14 @@ elf32_arm_finish_dynamic_sections (bfd *
 	    case DT_TLSDESC_PLT:
 	      s = htab->root.splt;
 	      dyn.d_un.d_ptr = (s->output_section->vma + s->output_offset
-				+ htab->dt_tlsdesc_plt);
+				+ htab->root.tlsdesc_plt);
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
 
 	    case DT_TLSDESC_GOT:
 	      s = htab->root.sgot;
 	      dyn.d_un.d_ptr = (s->output_section->vma + s->output_offset
-				+ htab->dt_tlsdesc_got);
+				+ htab->root.tlsdesc_got);
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
 
@@ -17598,7 +17433,7 @@ elf32_arm_finish_dynamic_sections (bfd *
 	  got_address = sgot->output_section->vma + sgot->output_offset;
 	  plt_address = splt->output_section->vma + splt->output_offset;
 
-	  if (htab->vxworks_p)
+	  if (htab->root.target_os == is_vxworks)
 	    {
 	      /* The VxWorks GOT is relocated by the dynamic linker.
 		 Therefore, we must emit relocations rather than simply
@@ -17621,7 +17456,7 @@ elf32_arm_finish_dynamic_sections (bfd *
 	      SWAP_RELOC_OUT (htab) (output_bfd, &rel,
 				     htab->srelplt2->contents);
 	    }
-	  else if (htab->nacl_p)
+	  else if (htab->root.target_os == is_nacl)
 	    arm_nacl_put_plt0 (htab, output_bfd, splt,
 			       got_address + 8 - (plt_address + 16));
 	  else if (using_thumb_only (htab))
@@ -17667,7 +17502,7 @@ elf32_arm_finish_dynamic_sections (bfd *
       if (splt->output_section->owner == output_bfd)
 	elf_section_data (splt->output_section)->this_hdr.sh_entsize = 4;
 
-      if (htab->dt_tlsdesc_plt)
+      if (htab->root.tlsdesc_plt)
 	{
 	  bfd_vma got_address
 	    = sgot->output_section->vma + sgot->output_offset;
@@ -17677,18 +17512,18 @@ elf32_arm_finish_dynamic_sections (bfd *
 	    = splt->output_section->vma + splt->output_offset;
 
 	  arm_put_trampoline (htab, output_bfd,
-			      splt->contents + htab->dt_tlsdesc_plt,
+			      splt->contents + htab->root.tlsdesc_plt,
 			      dl_tlsdesc_lazy_trampoline, 6);
 
 	  bfd_put_32 (output_bfd,
-		      gotplt_address + htab->dt_tlsdesc_got
-		      - (plt_address + htab->dt_tlsdesc_plt)
+		      gotplt_address + htab->root.tlsdesc_got
+		      - (plt_address + htab->root.tlsdesc_plt)
 		      - dl_tlsdesc_lazy_trampoline[6],
-		      splt->contents + htab->dt_tlsdesc_plt + 24);
+		      splt->contents + htab->root.tlsdesc_plt + 24);
 	  bfd_put_32 (output_bfd,
-		      got_address - (plt_address + htab->dt_tlsdesc_plt)
+		      got_address - (plt_address + htab->root.tlsdesc_plt)
 		      - dl_tlsdesc_lazy_trampoline[7],
-		      splt->contents + htab->dt_tlsdesc_plt + 24 + 4);
+		      splt->contents + htab->root.tlsdesc_plt + 24 + 4);
 	}
 
       if (htab->tls_trampoline)
@@ -17702,7 +17537,7 @@ elf32_arm_finish_dynamic_sections (bfd *
 #endif
 	}
 
-      if (htab->vxworks_p
+      if (htab->root.target_os == is_vxworks
 	  && !bfd_link_pic (info)
 	  && htab->root.splt->size > 0)
 	{
@@ -17732,7 +17567,9 @@ elf32_arm_finish_dynamic_sections (bfd *
 	}
     }
 
-  if (htab->nacl_p && htab->root.iplt != NULL && htab->root.iplt->size > 0)
+  if (htab->root.target_os == is_nacl
+      && htab->root.iplt != NULL
+      && htab->root.iplt->size > 0)
     /* NaCl uses a special first entry in .iplt too.  */
     arm_nacl_put_plt0 (htab, output_bfd, htab->root.iplt, 0);
 
@@ -18009,14 +17846,14 @@ elf32_arm_output_plt_map_1 (output_arch_
 		    (osi->info->output_bfd, osi->sec->output_section));
 
   addr = root_plt->offset & -2;
-  if (htab->symbian_p)
+  if (htab->root.target_os == is_symbian)
     {
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
 	return FALSE;
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 4))
 	return FALSE;
     }
-  else if (htab->vxworks_p)
+  else if (htab->root.target_os == is_vxworks)
     {
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
 	return FALSE;
@@ -18027,7 +17864,7 @@ elf32_arm_output_plt_map_1 (output_arch_
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 20))
 	return FALSE;
     }
-  else if (htab->nacl_p)
+  else if (htab->root.target_os == is_nacl)
     {
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
 	return FALSE;
@@ -18389,7 +18226,7 @@ elf32_arm_output_arch_local_syms (bfd *o
 
       /* Output mapping symbols for the plt header.  SymbianOS does not have a
 	 plt header.  */
-      if (htab->vxworks_p)
+      if (htab->root.target_os == is_vxworks)
 	{
 	  /* VxWorks shared libraries have no PLT header.  */
 	  if (!bfd_link_pic (info))
@@ -18400,7 +18237,7 @@ elf32_arm_output_arch_local_syms (bfd *o
 		return FALSE;
 	    }
 	}
-      else if (htab->nacl_p)
+      else if (htab->root.target_os == is_nacl)
 	{
 	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
 	    return FALSE;
@@ -18414,7 +18251,7 @@ elf32_arm_output_arch_local_syms (bfd *o
 	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_THUMB, 16))
 	    return FALSE;
 	}
-      else if (!htab->symbian_p && !htab->fdpic_p)
+      else if (htab->root.target_os != is_symbian && !htab->fdpic_p)
 	{
 	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
 	    return FALSE;
@@ -18424,7 +18261,9 @@ elf32_arm_output_arch_local_syms (bfd *o
 #endif
 	}
     }
-  if (htab->nacl_p && htab->root.iplt && htab->root.iplt->size > 0)
+  if (htab->root.target_os == is_nacl
+      && htab->root.iplt
+      && htab->root.iplt->size > 0)
     {
       /* NaCl uses a special first entry in .iplt too.  */
       osi.sec = htab->root.iplt;
@@ -18457,14 +18296,15 @@ elf32_arm_output_arch_local_syms (bfd *o
 	    }
 	}
     }
-  if (htab->dt_tlsdesc_plt != 0)
+  if (htab->root.tlsdesc_plt != 0)
     {
       /* Mapping symbols for the lazy tls trampoline.  */
-      if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, htab->dt_tlsdesc_plt))
+      if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM,
+				     htab->root.tlsdesc_plt))
 	return FALSE;
 
       if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA,
-				     htab->dt_tlsdesc_plt + 24))
+				     htab->root.tlsdesc_plt + 24))
 	return FALSE;
     }
   if (htab->tls_trampoline != 0)
@@ -18505,6 +18345,8 @@ elf32_arm_filter_cmse_symbols (bfd *abfd
 
   maxnamelen = 128;
   cmse_name = (char *) bfd_malloc (maxnamelen);
+  BFD_ASSERT (cmse_name);
+
   for (src_count = 0; src_count < symcount; src_count++)
     {
       struct elf32_arm_link_hash_entry *cmse_hash;
@@ -18580,7 +18422,7 @@ elf32_arm_new_section_hook (bfd *abfd, a
   if (!sec->used_by_bfd)
     {
       _arm_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+      size_t amt = sizeof (*sdata);
 
       sdata = (_arm_elf_section_data *) bfd_zalloc (abfd, amt);
       if (sdata == NULL)
@@ -19700,6 +19542,8 @@ elf32_arm_write_section (bfd *output_bfd
       unsigned int in_index, out_index;
       bfd_vma add_to_offsets = 0;
 
+      if (edited_contents == NULL)
+	return FALSE;
       for (in_index = 0, out_index = 0; in_index * 8 < input_size || edit_node;)
 	{
 	  if (edit_node)
@@ -19992,7 +19836,7 @@ elf32_arm_add_symbol_hook (bfd *abfd, st
   if (elf32_arm_hash_table (info) == NULL)
     return FALSE;
 
-  if (elf32_arm_hash_table (info)->vxworks_p
+  if (elf32_arm_hash_table (info)->root.target_os == is_vxworks
       && !elf_vxworks_add_symbol_hook (abfd, info, sym, namep,
 				       flagsp, secp, valp))
     return FALSE;
@@ -20231,10 +20075,10 @@ elf32_arm_get_synthetic_symtab (bfd *abf
 }
 
 static bfd_boolean
-elf32_arm_section_flags (flagword *flags, const Elf_Internal_Shdr * hdr)
+elf32_arm_section_flags (const Elf_Internal_Shdr *hdr)
 {
   if (hdr->sh_flags & SHF_ARM_PURECODE)
-    *flags |= SEC_ELF_PURECODE;
+    hdr->bfd_section->flags |= SEC_ELF_PURECODE;
   return TRUE;
 }
 
@@ -20504,8 +20348,6 @@ elf32_arm_nacl_link_hash_table_create (b
       struct elf32_arm_link_hash_table *htab
 	= (struct elf32_arm_link_hash_table *) ret;
 
-      htab->nacl_p = 1;
-
       htab->plt_header_size = 4 * ARRAY_SIZE (elf32_arm_nacl_plt0_entry);
       htab->plt_entry_size = 4 * ARRAY_SIZE (elf32_arm_nacl_plt_entry);
     }
@@ -20560,6 +20402,8 @@ elf32_arm_nacl_plt_sym_val (bfd_vma i, c
 #undef	ELF_MINPAGESIZE
 #undef	ELF_COMMONPAGESIZE
 
+#undef ELF_TARGET_OS
+#define ELF_TARGET_OS				is_nacl
 
 #include "elf32-target.h"
 
@@ -20642,6 +20486,8 @@ elf32_arm_fdpic_omit_section_dynsym (bfd
 #undef elf_backend_omit_section_dynsym
 #define elf_backend_omit_section_dynsym		elf32_arm_fdpic_omit_section_dynsym
 
+#undef ELF_TARGET_OS
+
 #include "elf32-target.h"
 
 #undef elf_match_priority
@@ -20673,7 +20519,6 @@ elf32_arm_vxworks_link_hash_table_create
       struct elf32_arm_link_hash_table *htab
 	= (struct elf32_arm_link_hash_table *) ret;
       htab->use_rel = 0;
-      htab->vxworks_p = 1;
     }
   return ret;
 }
@@ -20705,6 +20550,8 @@ elf32_arm_vxworks_final_write_processing
 #define elf_backend_want_plt_sym	1
 #undef  ELF_MAXPAGESIZE
 #define ELF_MAXPAGESIZE			0x1000
+#undef ELF_TARGET_OS
+#define ELF_TARGET_OS			is_vxworks
 
 #include "elf32-target.h"
 
@@ -20961,7 +20808,6 @@ elf32_arm_symbian_link_hash_table_create
       htab->plt_header_size = 0;
       /* The PLT entries are each one instruction and one word.  */
       htab->plt_entry_size = 4 * ARRAY_SIZE (elf32_arm_symbian_plt_entry);
-      htab->symbian_p = 1;
       /* Symbian uses armv5t or above, so use_blx is always true.  */
       htab->use_blx = 1;
       htab->root.is_relocatable_executable = 1;
@@ -21092,5 +20938,7 @@ elf32_arm_symbian_plt_sym_val (bfd_vma i
 #define elf_backend_dtrel_excludes_plt	0
 #undef  ELF_MAXPAGESIZE
 #define ELF_MAXPAGESIZE			0x8000
+#undef ELF_TARGET_OS
+#define ELF_TARGET_OS			is_symbian
 
 #include "elf32-target.h"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-arm.h ./bfd/elf32-arm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-arm.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-arm.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for ARM
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-avr.c ./bfd/elf32-avr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-avr.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-avr.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* AVR-specific support for 32-bit ELF
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Contributed by Denis Chertykov <denisc@overta.ru>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -106,9 +106,9 @@ struct elf32_avr_link_hash_table
 
 /* Various hash macros and functions.  */
 #define avr_link_hash_table(p) \
-  /* PR 3874: Check that we have an AVR style hash table before using it.  */\
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == AVR_ELF_DATA ? ((struct elf32_avr_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == AVR_ELF_DATA)		\
+   ? (struct elf32_avr_link_hash_table *) (p)->hash : NULL)
 
 #define avr_stub_hash_entry(ent) \
   ((struct elf32_avr_stub_hash_entry *)(ent))
@@ -767,7 +767,7 @@ elf_avr_new_section_hook (bfd *abfd, ase
   if (!sec->used_by_bfd)
     {
       struct elf_avr_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+      size_t amt = sizeof (*sdata);
 
       sdata = bfd_zalloc (abfd, amt);
       if (sdata == NULL)
@@ -858,10 +858,8 @@ elf32_avr_link_hash_table_free (bfd *obf
     = (struct elf32_avr_link_hash_table *) obfd->link.hash;
 
   /* Free the address mapping table.  */
-  if (htab->amt_stub_offsets != NULL)
-    free (htab->amt_stub_offsets);
-  if (htab->amt_destination_addr != NULL)
-    free (htab->amt_destination_addr);
+  free (htab->amt_stub_offsets);
+  free (htab->amt_destination_addr);
 
   bfd_hash_table_free (&htab->bstab);
   _bfd_elf_link_hash_table_free (obfd);
@@ -875,7 +873,7 @@ static struct bfd_link_hash_table *
 elf32_avr_link_hash_table_create (bfd *abfd)
 {
   struct elf32_avr_link_hash_table *htab;
-  bfd_size_type amt = sizeof (*htab);
+  size_t amt = sizeof (*htab);
 
   htab = bfd_zmalloc (amt);
   if (htab == NULL)
@@ -1054,7 +1052,7 @@ avr_final_link_relocate (reloc_howto_typ
       if (srel > ((1 << 7) - 1) || (srel < - (1 << 7)))
 	return bfd_reloc_overflow;
       x = bfd_get_16 (input_bfd, contents);
-      x = (x & 0xfc07) | (((srel >> 1) << 3) & 0x3f8);
+      x = (x & 0xfc07) | (((srel >> 1) * 8) & 0x3f8);
       bfd_put_16 (input_bfd, x, contents);
       break;
 
@@ -3166,21 +3164,17 @@ elf32_avr_relax_section (bfd *abfd,
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
@@ -3273,10 +3267,8 @@ elf32_avr_get_relocated_section_contents
 					isymbuf, sections))
 	goto error_return;
 
-      if (sections != NULL)
-	free (sections);
-      if (isymbuf != NULL
-	  && symtab_hdr->contents != (unsigned char *) isymbuf)
+      free (sections);
+      if (symtab_hdr->contents != (unsigned char *) isymbuf)
 	free (isymbuf);
       if (elf_section_data (input_section)->relocs != internal_relocs)
 	free (internal_relocs);
@@ -3285,13 +3277,10 @@ elf32_avr_get_relocated_section_contents
   return data;
 
  error_return:
-  if (sections != NULL)
-    free (sections);
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  free (sections);
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (input_section)->relocs != internal_relocs)
+  if (elf_section_data (input_section)->relocs != internal_relocs)
     free (internal_relocs);
   return NULL;
 }
@@ -3494,7 +3483,7 @@ elf32_avr_setup_section_lists (bfd *outp
   unsigned int top_id, top_index;
   asection *section;
   asection **input_list, **list;
-  bfd_size_type amt;
+  size_t amt;
   struct elf32_avr_link_hash_table *htab = avr_link_hash_table (info);
 
   if (htab == NULL || htab->no_stubs)
@@ -3558,7 +3547,7 @@ get_local_syms (bfd *input_bfd, struct b
   unsigned int bfd_indx;
   Elf_Internal_Sym *local_syms, **all_local_syms;
   struct elf32_avr_link_hash_table *htab = avr_link_hash_table (info);
-  bfd_size_type amt;
+  size_t amt;
 
   if (htab == NULL)
     return -1;
@@ -4050,7 +4039,7 @@ avr_elf32_load_records_from_section (bfd
   ptr++;
   flags = *((bfd_byte *) ptr);
   ptr++;
-  record_count = *((uint16_t *) ptr);
+  record_count = bfd_get_16 (abfd, ptr);
   ptr+=2;
   BFD_ASSERT (ptr - contents == AVR_PROPERTY_SECTION_HEADER_SIZE);
 
@@ -4117,7 +4106,7 @@ avr_elf32_load_records_from_section (bfd
 	    }
 	}
 
-      address = *((uint32_t *) ptr);
+      address = bfd_get_32 (abfd, ptr);
       ptr += 4;
       size -= 4;
 
@@ -4159,7 +4148,7 @@ avr_elf32_load_records_from_section (bfd
 	  /* Just a 4-byte fill to load.  */
 	  if (size < 4)
 	    goto load_failed;
-	  r_list->records [i].data.org.fill = *((uint32_t *) ptr);
+	  r_list->records [i].data.org.fill = bfd_get_32 (abfd, ptr);
 	  ptr += 4;
 	  size -= 4;
 	  break;
@@ -4167,7 +4156,7 @@ avr_elf32_load_records_from_section (bfd
 	  /* Just a 4-byte alignment to load.  */
 	  if (size < 4)
 	    goto load_failed;
-	  r_list->records [i].data.align.bytes = *((uint32_t *) ptr);
+	  r_list->records [i].data.align.bytes = bfd_get_32 (abfd, ptr);
 	  ptr += 4;
 	  size -= 4;
 	  /* Just initialise PRECEDING_DELETED field, this field is
@@ -4178,9 +4167,9 @@ avr_elf32_load_records_from_section (bfd
 	  /* A 4-byte alignment, and a 4-byte fill to load.  */
 	  if (size < 8)
 	    goto load_failed;
-	  r_list->records [i].data.align.bytes = *((uint32_t *) ptr);
+	  r_list->records [i].data.align.bytes = bfd_get_32 (abfd, ptr);
 	  ptr += 4;
-	  r_list->records [i].data.align.fill = *((uint32_t *) ptr);
+	  r_list->records [i].data.align.fill = bfd_get_32 (abfd, ptr);
 	  ptr += 4;
 	  size -= 8;
 	  /* Just initialise PRECEDING_DELETED field, this field is
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-avr.h ./bfd/elf32-avr.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-avr.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-avr.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* AVR-specific support for 32-bit ELF.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
    Written by Bjoern Haase <bjoern.m.haase@web.de>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-bfin.c ./bfd/elf32-bfin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-bfin.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-bfin.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ADI Blackfin BFD support for 32-bit ELF.
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -1668,9 +1668,10 @@ struct bfinfdpic_elf_link_hash_table
 
 /* Get the Blackfin ELF linker hash table from a link_info structure.  */
 
-#define bfinfdpic_hash_table(info) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((info)->hash)) \
-  == BFIN_ELF_DATA ? ((struct bfinfdpic_elf_link_hash_table *) ((info)->hash)) : NULL)
+#define bfinfdpic_hash_table(p) \
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == BFIN_ELF_DATA)		\
+   ? (struct bfinfdpic_elf_link_hash_table *) (p)->hash : NULL)
 
 #define bfinfdpic_got_section(info) \
   (bfinfdpic_hash_table (info)->elf.sgot)
@@ -1728,7 +1729,7 @@ static struct bfd_link_hash_table *
 bfinfdpic_elf_link_hash_table_create (bfd *abfd)
 {
   struct bfinfdpic_elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct bfinfdpic_elf_link_hash_table);
+  size_t amt = sizeof (struct bfinfdpic_elf_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -2552,6 +2553,7 @@ bfinfdpic_relocate_section (bfd * output
       h      = NULL;
       sym    = NULL;
       sec    = NULL;
+      picrel = NULL;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -2614,6 +2616,9 @@ bfinfdpic_relocate_section (bfd * output
 	case R_BFIN_FUNCDESC_GOTOFFLO:
 	case R_BFIN_FUNCDESC:
 	case R_BFIN_FUNCDESC_VALUE:
+	  if ((input_section->flags & SEC_ALLOC) == 0)
+	    break;
+
 	  if (h != NULL)
 	    picrel = bfinfdpic_relocs_info_for_global (bfinfdpic_relocs_info
 						       (info), input_bfd, h,
@@ -3015,11 +3020,11 @@ bfinfdpic_relocate_section (bfd * output
 	     input file basename is crt0.o only once.  */
 	  if (silence_segment_error == 1)
 	    silence_segment_error =
-	      (strlen (input_bfd->filename) == 6
-	       && filename_cmp (input_bfd->filename, "crt0.o") == 0)
-	      || (strlen (input_bfd->filename) > 6
-		  && filename_cmp (input_bfd->filename
-				   + strlen (input_bfd->filename) - 7,
+	      (strlen (bfd_get_filename (input_bfd)) == 6
+	       && filename_cmp (bfd_get_filename (input_bfd), "crt0.o") == 0)
+	      || (strlen (bfd_get_filename (input_bfd)) > 6
+		  && filename_cmp (bfd_get_filename (input_bfd)
+				   + strlen (bfd_get_filename (input_bfd)) - 7,
 			     "/crt0.o") == 0)
 	      ? -1 : 0;
 #endif
@@ -4063,26 +4068,6 @@ elf32_bfinfdpic_size_dynamic_sections (b
   if (!_bfinfdpic_size_got_plt (output_bfd, &gpinfo))
       return FALSE;
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      if (bfinfdpic_got_section (info)->size)
-	if (!_bfd_elf_add_dynamic_entry (info, DT_PLTGOT, 0))
-	  return FALSE;
-
-      if (bfinfdpic_pltrel_section (info)->size)
-	if (!_bfd_elf_add_dynamic_entry (info, DT_PLTRELSZ, 0)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_PLTREL, DT_REL)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_JMPREL, 0))
-	  return FALSE;
-
-      if (bfinfdpic_gotrel_section (info)->size)
-	if (!_bfd_elf_add_dynamic_entry (info, DT_REL, 0)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_RELSZ, 0)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_RELENT,
-					    sizeof (Elf32_External_Rel)))
-	  return FALSE;
-    }
-
   s = bfd_get_linker_section (dynobj, ".dynbss");
   if (s && s->size == 0)
     s->flags |= SEC_EXCLUDE;
@@ -4091,7 +4076,7 @@ elf32_bfinfdpic_size_dynamic_sections (b
   if (s && s->size == 0)
     s->flags |= SEC_EXCLUDE;
 
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, TRUE);
 }
 
 static bfd_boolean
@@ -4755,6 +4740,10 @@ elf32_bfin_merge_private_bfd_data (bfd *
   flagword old_flags, new_flags;
   bfd_boolean error = FALSE;
 
+  /* FIXME: What should be checked when linking shared libraries?  */
+  if ((ibfd->flags & DYNAMIC) != 0)
+    return TRUE;
+
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
 
@@ -4803,16 +4792,6 @@ struct bfin_link_hash_entry
   struct bfin_pcrel_relocs_copied *pcrel_relocs_copied;
 };
 
-/* bfin ELF linker hash table.  */
-
-struct bfin_link_hash_table
-{
-  struct elf_link_hash_table root;
-
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-};
-
 #define bfin_hash_entry(ent) ((struct bfin_link_hash_entry *) (ent))
 
 static struct bfd_hash_entry *
@@ -4841,15 +4820,14 @@ bfin_link_hash_newfunc (struct bfd_hash_
 static struct bfd_link_hash_table *
 bfin_link_hash_table_create (bfd * abfd)
 {
-  struct bfin_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct bfin_link_hash_table);
+  struct elf_link_hash_table *ret;
+  size_t amt = sizeof (struct elf_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
     return NULL;
 
-  if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
-				      bfin_link_hash_newfunc,
+  if (!_bfd_elf_link_hash_table_init (ret, abfd, bfin_link_hash_newfunc,
 				      sizeof (struct elf_link_hash_entry),
 				      BFIN_ELF_DATA))
     {
@@ -4857,9 +4835,7 @@ bfin_link_hash_table_create (bfd * abfd)
       return NULL;
     }
 
-  ret->sym_cache.abfd = NULL;
-
-  return &ret->root.root;
+  return &ret->root;
 }
 
 /* The size in bytes of an entry in the procedure linkage table.  */
@@ -5391,18 +5367,16 @@ bfd_bfin_elf32_create_embedded_relocs (b
 	strncpy ((char *) p + 4, targetsec->output_section->name, 8);
     }
 
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (datasec)->relocs != internal_relocs)
+  if (elf_section_data (datasec)->relocs != internal_relocs)
     free (internal_relocs);
   return TRUE;
 
-error_return:
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+ error_return:
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (datasec)->relocs != internal_relocs)
+  if (elf_section_data (datasec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
@@ -5432,10 +5406,6 @@ struct bfd_elf_special_section const elf
 
 #define bfd_elf32_bfd_is_local_label_name \
 					bfin_is_local_label_name
-#define bfin_hash_table(p) \
-  ((struct bfin_link_hash_table *) (p)->hash)
-
-
 
 #define elf_backend_create_dynamic_sections \
 					_bfd_elf_create_dynamic_sections
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-bfin.h ./bfd/elf32-bfin.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-bfin.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-bfin.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ADI Blackfin BFD support for 32-bit ELF.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32.c ./bfd/elf32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF 32-bit executable support for BFD.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-cr16.c ./bfd/elf32-cr16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-cr16.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-cr16.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for National Semiconductor's CR16 ELF
-   Copyright (C) 2007-2019 Free Software Foundation, Inc.
+   Copyright (C) 2007-2020 Free Software Foundation, Inc.
    Written by M R Swami Reddy.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -824,10 +824,9 @@ cr16_elf_check_relocs (bfd *abfd, struct
 	}
     }
 
-   result = TRUE;
-  fail:
-    if (isymbuf != NULL)
-      free (isymbuf);
+  result = TRUE;
+ fail:
+  free (isymbuf);
 
   return result;
 }
@@ -923,10 +922,7 @@ cr16_elf_final_link_relocate (reloc_howt
      as signed or unsigned.  */
   check = Rvalue >> howto->rightshift;
 
-  /* Assumes two's complement.  This expression avoids
-     overflow if howto->bitsize is the number of bits in
-     bfd_vma.  */
-  reloc_bits = (((1 << (howto->bitsize - 1)) - 1) << 1) | 1;
+  reloc_bits = ((bfd_vma) 1 << (howto->bitsize - 1) << 1) - 1;
 
   /* For GOT and GOTC relocs no boundary checks applied.  */
   if (!((r_type == R_CR16_GOT_REGREL20)
@@ -1572,10 +1568,8 @@ elf32_cr16_get_relocated_section_content
 				     isymbuf, sections))
 	goto error_return;
 
-      if (sections != NULL)
-	free (sections);
-      if (isymbuf != NULL
-	  && symtab_hdr->contents != (unsigned char *) isymbuf)
+      free (sections);
+      if (symtab_hdr->contents != (unsigned char *) isymbuf)
 	free (isymbuf);
       if (elf_section_data (input_section)->relocs != internal_relocs)
 	free (internal_relocs);
@@ -1584,13 +1578,10 @@ elf32_cr16_get_relocated_section_content
   return data;
 
  error_return:
-  if (sections != NULL)
-    free (sections);
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  free (sections);
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (input_section)->relocs != internal_relocs)
+  if (elf_section_data (input_section)->relocs != internal_relocs)
     free (internal_relocs);
   return NULL;
 }
@@ -1641,7 +1632,7 @@ static struct bfd_link_hash_table *
 elf32_cr16_link_hash_table_create (bfd *abfd)
 {
   struct elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_link_hash_table);
+  size_t amt = sizeof (struct elf_link_hash_table);
 
   ret = (struct elf_link_hash_table *) bfd_zmalloc (amt);
   if (ret == (struct elf_link_hash_table *) NULL)
@@ -2174,21 +2165,17 @@ elf32_cr16_relax_section (bfd *abfd, ase
 
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
@@ -2417,9 +2404,7 @@ _bfd_cr16_elf_size_dynamic_sections (bfd
 {
   bfd * dynobj;
   asection * s;
-  bfd_boolean plt;
   bfd_boolean relocs;
-  bfd_boolean reltext;
 
   dynobj = elf_hash_table (info)->dynobj;
   BFD_ASSERT (dynobj != NULL);
@@ -2452,9 +2437,7 @@ _bfd_cr16_elf_size_dynamic_sections (bfd
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  plt = FALSE;
   relocs = FALSE;
-  reltext = FALSE;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char * name;
@@ -2469,34 +2452,16 @@ _bfd_cr16_elf_size_dynamic_sections (bfd
       if (strcmp (name, ".plt") == 0)
 	{
 	  /* Remember whether there is a PLT.  */
-	  plt = s->size != 0;
+	  ;
 	}
       else if (CONST_STRNEQ (name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
-	      asection * target;
-
 	      /* Remember whether there are any reloc sections other
 		 than .rela.plt.  */
 	      if (strcmp (name, ".rela.plt") != 0)
-		{
-		  const char * outname;
-
-		  relocs = TRUE;
-
-		  /* If this relocation section applies to a read only
-		     section, then we probably need a DT_TEXTREL
-		     entry.  The entries in the .rela.plt section
-		     really apply to the .got section, which we
-		     created ourselves and so know is not readonly.  */
-		  outname = bfd_section_name (s->output_section);
-		  target = bfd_get_section_by_name (output_bfd, outname + 5);
-		  if (target != NULL
-		      && (target->flags & SEC_READONLY) != 0
-		      && (target->flags & SEC_ALLOC) != 0)
-		    reltext = TRUE;
-		}
+		relocs = TRUE;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -2536,45 +2501,7 @@ _bfd_cr16_elf_size_dynamic_sections (bfd
 	return FALSE;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in _bfd_cr16_elf_finish_dynamic_sections,
-	 but we must add the entries now so that we get the correct
-	 size for the .dynamic section.  The DT_DEBUG entry is filled
-	 in by the dynamic linker and used by the debugger.  */
-      if (! bfd_link_executable (info))
-	{
-	  if (!_bfd_elf_add_dynamic_entry (info, DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (plt)
-	{
-	  if (!_bfd_elf_add_dynamic_entry (info, DT_PLTGOT, 0)
-	      || !_bfd_elf_add_dynamic_entry (info, DT_PLTRELSZ, 0)
-	      || !_bfd_elf_add_dynamic_entry (info, DT_PLTREL, DT_RELA)
-	      || !_bfd_elf_add_dynamic_entry (info, DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!_bfd_elf_add_dynamic_entry (info, DT_RELA, 0)
-	      || !_bfd_elf_add_dynamic_entry (info, DT_RELASZ, 0)
-	      || !_bfd_elf_add_dynamic_entry (info, DT_RELAENT,
-					      sizeof (Elf32_External_Rela)))
-	    return FALSE;
-	}
-
-      if (reltext)
-	{
-	  if (!_bfd_elf_add_dynamic_entry (info, DT_TEXTREL, 0))
-	    return FALSE;
-	}
-    }
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
@@ -2847,18 +2774,16 @@ bfd_cr16_elf32_create_embedded_relocs (b
 	 strncpy ((char *) p + 4, targetsec->output_section->name, 4);
     }
 
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (datasec)->relocs != internal_relocs)
+  if (elf_section_data (datasec)->relocs != internal_relocs)
     free (internal_relocs);
   return TRUE;
 
-error_return:
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+ error_return:
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (datasec)->relocs != internal_relocs)
+  if (elf_section_data (datasec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-cr16.h ./bfd/elf32-cr16.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-cr16.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-cr16.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for National Semiconductor's CR16 ELF
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-cris.c ./bfd/elf32-cris.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-cris.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-cris.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* CRIS-specific support for 32-bit ELF.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
    Contributed by Axis Communications AB.
    Written by Hans-Peter Nilsson, based on elf32-fr30.c
    PIC and shlib bits based primarily on elf32-m68k.c and elf32-i386.c.
@@ -837,8 +837,9 @@ struct elf_cris_link_hash_table
 /* Get the CRIS ELF linker hash table from a link_info structure.  */
 
 #define elf_cris_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == CRIS_ELF_DATA ? ((struct elf_cris_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == CRIS_ELF_DATA)		\
+   ? (struct elf_cris_link_hash_table *) (p)->hash : NULL)
 
 /* Get the CRIS ELF linker hash entry from a regular hash entry (the
    "parent class").  The .root reference is just a simple type
@@ -889,7 +890,7 @@ static struct bfd_link_hash_table *
 elf_cris_link_hash_table_create (bfd *abfd)
 {
   struct elf_cris_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_cris_link_hash_table);
+  size_t amt = sizeof (struct elf_cris_link_hash_table);
 
   ret = ((struct elf_cris_link_hash_table *) bfd_zmalloc (amt));
   if (ret == (struct elf_cris_link_hash_table *) NULL)
@@ -3513,7 +3514,6 @@ elf_cris_size_dynamic_sections (bfd *out
   struct elf_cris_link_hash_table * htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean plt;
   bfd_boolean relocs;
 
   htab = elf_cris_hash_table (info);
@@ -3569,7 +3569,6 @@ elf_cris_size_dynamic_sections (bfd *out
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  plt = FALSE;
   relocs = FALSE;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
@@ -3584,8 +3583,7 @@ elf_cris_size_dynamic_sections (bfd *out
 
       if (strcmp (name, ".plt") == 0)
 	{
-	  /* Remember whether there is a PLT.  */
-	  plt = s->size != 0;
+	  ;
 	}
       else if (strcmp (name, ".got.plt") == 0)
 	{
@@ -3650,49 +3648,7 @@ elf_cris_size_dynamic_sections (bfd *out
 	return FALSE;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in elf_cris_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (!bfd_link_pic (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (plt)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	    return FALSE;
-	}
-
-      if ((info->flags & DF_TEXTREL) != 0)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	  info->flags |= DF_TEXTREL;
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* This function is called via elf_cris_link_hash_traverse if we are
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-crx.c ./bfd/elf32-crx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-crx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-crx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for National Semiconductor's CRX ELF
-   Copyright (C) 2004-2019 Free Software Foundation, Inc.
+   Copyright (C) 2004-2020 Free Software Foundation, Inc.
    Written by Tomer Levi, NSC, Israel.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -506,25 +506,18 @@ crx_elf_final_link_relocate (reloc_howto
      as signed or unsigned.  */
   check = Rvalue >> howto->rightshift;
 
-  /* Assumes two's complement.  This expression avoids
-     overflow if howto->bitsize is the number of bits in
-     bfd_vma.  */
-  reloc_bits = (((1 << (howto->bitsize - 1)) - 1) << 1) | 1;
-
-  if (((bfd_vma) check & ~reloc_bits) != 0
-      && (((bfd_vma) check & ~reloc_bits)
-	  != (-(bfd_vma) 1 & ~reloc_bits)))
+  reloc_bits = ((bfd_vma) 1 << (howto->bitsize - 1) << 1) - 1;
+
+  if ((check & ~reloc_bits) != 0
+      && (check & ~reloc_bits) != ((bfd_vma) -1 & ~reloc_bits))
     {
       /* The above right shift is incorrect for a signed
 	 value.  See if turning on the upper bits fixes the
 	 overflow.  */
       if (howto->rightshift && (bfd_signed_vma) Rvalue < 0)
 	{
-	  check |= ((bfd_vma) - 1
-		    & ~((bfd_vma) - 1
-			>> howto->rightshift));
-	  if (((bfd_vma) check & ~reloc_bits)
-	      != (-(bfd_vma) 1 & ~reloc_bits))
+	  check |= (bfd_vma) -1 & ~((bfd_vma) -1 >> howto->rightshift);
+	  if ((check & ~reloc_bits) != ((bfd_vma) -1 & ~reloc_bits))
 	    return bfd_reloc_overflow;
 	}
       else
@@ -532,7 +525,7 @@ crx_elf_final_link_relocate (reloc_howto
     }
 
   /* Drop unwanted bits from the value we are relocating to.  */
-  Rvalue >>= (bfd_vma) howto->rightshift;
+  Rvalue >>= howto->rightshift;
 
   /* Apply dst_mask to select only relocatable part of the insn.  */
   Rvalue &= howto->dst_mask;
@@ -805,10 +798,8 @@ elf32_crx_get_relocated_section_contents
 				     isymbuf, sections))
 	goto error_return;
 
-      if (sections != NULL)
-	free (sections);
-      if (isymbuf != NULL
-	  && symtab_hdr->contents != (unsigned char *) isymbuf)
+      free (sections);
+      if (symtab_hdr->contents != (unsigned char *) isymbuf)
 	free (isymbuf);
       if (elf_section_data (input_section)->relocs != internal_relocs)
 	free (internal_relocs);
@@ -817,13 +808,10 @@ elf32_crx_get_relocated_section_contents
   return data;
 
  error_return:
-  if (sections != NULL)
-    free (sections);
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  free (sections);
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (input_section)->relocs != internal_relocs)
+  if (elf_section_data (input_section)->relocs != internal_relocs)
     free (internal_relocs);
   return NULL;
 }
@@ -1289,21 +1277,17 @@ elf32_crx_relax_section (bfd *abfd, asec
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-csky.c ./bfd/elf32-csky.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-csky.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-csky.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for C-SKY.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
    Contributed by C-SKY Microsystems and Mentor Graphics.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -56,14 +56,15 @@ typedef struct csky_arch_for_merge
 static struct csky_arch_for_merge csky_archs[] =
 {
   /* 510 and 610 merge to 610 without warning.  */
-  { "510",  CSKY_ARCH_510,  CSKY_V1,  0, 0},
-  { "610",  CSKY_ARCH_610,  CSKY_V1,  1, 0},
+  { "ck510",  CSKY_ARCH_510,  CSKY_V1,  0, 0},
+  { "ck610",  CSKY_ARCH_610,  CSKY_V1,  1, 0},
   /* 801, 802, 803, 807, 810 merge to largest one.  */
-  { "801",  CSKY_ARCH_801,  CSKY_V2,  0, 1},
-  { "802",  CSKY_ARCH_802,  CSKY_V2,  1, 1},
-  { "803",  CSKY_ARCH_803,  CSKY_V2,  2, 1},
-  { "807",  CSKY_ARCH_807,  CSKY_V2,  3, 1},
-  { "810",  CSKY_ARCH_810,  CSKY_V2,  4, 1},
+  { "ck801",  CSKY_ARCH_801,  CSKY_V2,  0, 1},
+  { "ck802",  CSKY_ARCH_802,  CSKY_V2,  1, 1},
+  { "ck803",  CSKY_ARCH_803,  CSKY_V2,  2, 1},
+  { "ck807",  CSKY_ARCH_807,  CSKY_V2,  3, 1},
+  { "ck810",  CSKY_ARCH_810,  CSKY_V2,  4, 1},
+  { "ck860",  CSKY_ARCH_860,  CSKY_V2,  5, 1},
   { NULL, 0, 0, 0, 0}
 };
 
@@ -1163,8 +1164,6 @@ struct csky_elf_link_hash_entry
   int plt_refcount;
   /* For sub jsri2bsr relocs count.  */
   int jsri2bsr_refcount;
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
 
 #define GOT_UNKNOWN     0
 #define GOT_NORMAL      1
@@ -1186,11 +1185,10 @@ struct csky_elf_link_hash_entry
     (info)))
 
 /* Get the C-SKY ELF linker hash table from a link_info structure.  */
-#define csky_elf_hash_table(info) \
-  ((elf_hash_table_id  ((struct elf_link_hash_table *) ((info)->hash))	\
-    == CSKY_ELF_DATA)							\
-   ? ((struct csky_elf_link_hash_table *) ((info)->hash))		\
-   : NULL)
+#define csky_elf_hash_table(p) \
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == CSKY_ELF_DATA)		\
+   ? (struct csky_elf_link_hash_table *) (p)->hash : NULL)
 
 #define csky_elf_hash_entry(ent)  ((struct csky_elf_link_hash_entry*)(ent))
 
@@ -1210,9 +1208,6 @@ struct csky_elf_link_hash_table
 {
   struct elf_link_hash_table elf;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* Data for R_CKCORE_TLS_LDM32 relocations.  */
   union
   {
@@ -1429,7 +1424,6 @@ csky_elf_link_hash_newfunc (struct bfd_h
       struct csky_elf_link_hash_entry *eh;
 
       eh = (struct csky_elf_link_hash_entry *) ret;
-      eh->dyn_relocs = NULL;
       eh->plt_refcount = 0;
       eh->jsri2bsr_refcount = 0;
       eh->tls_type = GOT_NORMAL;
@@ -1500,7 +1494,7 @@ static struct bfd_link_hash_table *
 csky_elf_link_hash_table_create (bfd *abfd)
 {
   struct csky_elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct csky_elf_link_hash_table);
+  size_t amt = sizeof (struct csky_elf_link_hash_table);
 
   ret = (struct csky_elf_link_hash_table*) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -1804,7 +1798,7 @@ csky_allocate_dynrelocs (struct elf_link
     h->got.offset = (bfd_vma) -1;
 
   eh = (struct csky_elf_link_hash_entry *) h;
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -1819,7 +1813,7 @@ csky_allocate_dynrelocs (struct elf_link
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -1832,17 +1826,17 @@ csky_allocate_dynrelocs (struct elf_link
 
       if (eh->jsri2bsr_refcount
 	  && h->root.type == bfd_link_hash_defined
-	  && eh->dyn_relocs != NULL)
-	eh->dyn_relocs->count -= eh->jsri2bsr_refcount;
+	  && h->dyn_relocs != NULL)
+	h->dyn_relocs->count -= eh->jsri2bsr_refcount;
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -1881,13 +1875,13 @@ csky_allocate_dynrelocs (struct elf_link
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
       keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *srelgot = htab->elf.srelgot;
       srelgot->size += p->count * sizeof (Elf32_External_Rela);
@@ -1896,48 +1890,6 @@ csky_allocate_dynrelocs (struct elf_link
   return TRUE;
 }
 
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = csky_elf_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -2138,48 +2090,8 @@ csky_elf_size_dynamic_sections (bfd *out
     }
 
   if (htab->elf.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in csky_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info) && !add_dynamic_entry (DT_DEBUG, 0))
-	return FALSE;
-
-      if (htab->elf.sgot->size != 0 || htab->elf.splt->size)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT,
-				     sizeof (Elf32_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->elf, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0
-	      && !add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+    htab->elf.dt_pltgot_required = htab->elf.sgot->size != 0;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
@@ -2465,35 +2377,6 @@ csky_elf_copy_indirect_symbol (struct bf
   edir = (struct csky_elf_link_hash_entry *) dir;
   eind = (struct csky_elf_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
   if (ind->root.type == bfd_link_hash_indirect
       && dir->got.refcount <= 0)
     {
@@ -2591,7 +2474,7 @@ csky_elf_check_relocs (bfd * abfd,
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  /* A local symbol.  */
-	  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 					abfd, r_symndx);
 	  if (isym == NULL)
 	    return FALSE;
@@ -2687,7 +2570,7 @@ csky_elf_check_relocs (bfd * abfd,
 		      || (ELF32_R_TYPE (rel->r_info)
 			  == R_CKCORE_PCREL_JSR_IMM11BY2))
 		    eh->jsri2bsr_refcount += 1;
-		  head = &eh->dyn_relocs;
+		  head = &h->dyn_relocs;
 		}
 	      else
 		{
@@ -2698,7 +2581,7 @@ csky_elf_check_relocs (bfd * abfd,
 		  asection *s;
 		  Elf_Internal_Sym *loc_isym;
 
-		  loc_isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  loc_isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 						    abfd, r_symndx);
 		  if (loc_isym == NULL)
 		    return FALSE;
@@ -2712,7 +2595,7 @@ csky_elf_check_relocs (bfd * abfd,
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 		  p = ((struct elf_dyn_relocs *)
 		       bfd_alloc (htab->elf.dynobj, amt));
 		  if (p == NULL)
@@ -2920,6 +2803,199 @@ csky_find_arch_with_eflag (const unsigne
   return csky_arch;
 }
 
+static csky_arch_for_merge *
+csky_find_arch_with_name (const char *name)
+{
+  csky_arch_for_merge *csky_arch = NULL;
+  const char *msg;
+
+  if (name == NULL)
+    return NULL;
+
+  for (csky_arch = csky_archs; csky_arch->name != NULL; csky_arch++)
+    {
+      if (strncmp (csky_arch->name, name, strlen (csky_arch->name)) == 0)
+	break;
+    }
+  if (csky_arch == NULL)
+    {
+      msg = _("warning: unrecognised arch name '%#x'");
+      (*_bfd_error_handler) (msg, name);
+      bfd_set_error (bfd_error_wrong_format);
+    }
+  return csky_arch;
+}
+
+static bfd_boolean
+elf32_csky_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
+{
+  bfd *obfd = info->output_bfd;
+  obj_attribute *in_attr;
+  obj_attribute *out_attr;
+  obj_attribute tattr;
+  csky_arch_for_merge *old_arch = NULL;
+  csky_arch_for_merge *new_arch = NULL;
+  int i;
+  bfd_boolean result = TRUE;
+  const char *msg = NULL;
+
+  const char *sec_name = get_elf_backend_data (ibfd)->obj_attrs_section;
+
+  /* Skip the linker stubs file.  This preserves previous behavior
+     of accepting unknown attributes in the first input file - but
+     is that a bug?  */
+  if (ibfd->flags & BFD_LINKER_CREATED)
+    return TRUE;
+
+  /* Skip any input that hasn't attribute section.
+     This enables to link object files without attribute section with
+     any others.  */
+  if (bfd_get_section_by_name (ibfd, sec_name) == NULL)
+    {
+      return TRUE;
+    }
+
+  if (!elf_known_obj_attributes_proc (obfd)[0].i)
+    {
+      /* This is the first object.  Copy the attributes.  */
+      out_attr = elf_known_obj_attributes_proc (obfd);
+
+      /* If Tag_CSKY_CPU_NAME is already set, save it.  */
+      memcpy (&tattr, &out_attr[Tag_CSKY_ARCH_NAME], sizeof (tattr));
+
+      _bfd_elf_copy_obj_attributes (ibfd, obfd);
+
+      out_attr = elf_known_obj_attributes_proc (obfd);
+
+      /* Restore Tag_CSKY_CPU_NAME.  */
+      memcpy (&out_attr[Tag_CSKY_ARCH_NAME], &tattr, sizeof (tattr));
+
+      /* Use the Tag_null value to indicate the attributes have been
+	 initialized.  */
+      out_attr[0].i = 1;
+    }
+
+  in_attr = elf_known_obj_attributes_proc (ibfd);
+  out_attr = elf_known_obj_attributes_proc (obfd);
+
+  for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
+    {
+      /* Merge this attribute with existing attributes.  */
+      switch (i)
+        {
+	case Tag_CSKY_CPU_NAME:
+	case Tag_CSKY_ARCH_NAME:
+	  /* Do arch merge.  */
+	  new_arch = csky_find_arch_with_name (in_attr[Tag_CSKY_ARCH_NAME].s);
+	  old_arch = csky_find_arch_with_name (out_attr[Tag_CSKY_ARCH_NAME].s);
+
+	  if (new_arch != NULL && old_arch != NULL)
+	    {
+	      if (new_arch->class != old_arch->class)
+		{
+		  msg = _("%pB: machine flag conflict with target");
+		  (*_bfd_error_handler) (msg, ibfd);
+		  bfd_set_error (bfd_error_wrong_format);
+		  return FALSE;
+		}
+	      else if (new_arch->class_level != old_arch->class_level)
+		{
+		  csky_arch_for_merge *newest_arch =
+		    ((new_arch->class_level > old_arch->class_level) ?
+		  new_arch : old_arch);
+
+		  if (new_arch->do_warning || old_arch->do_warning)
+		    {
+		      msg = _("warning: file %pB's arch flag %s conflict "
+			      "with target %s,set target arch flag to %s");
+		      (*_bfd_error_handler) (msg, ibfd,  new_arch->name,
+					     old_arch->name,
+					     (newest_arch->name));
+		      bfd_set_error (bfd_error_wrong_format);
+                    }
+
+		  if (out_attr[Tag_CSKY_ARCH_NAME].s != NULL)
+		    bfd_release (obfd, out_attr[Tag_CSKY_ARCH_NAME].s);
+
+		  out_attr[Tag_CSKY_ARCH_NAME].s =
+		    _bfd_elf_attr_strdup (obfd, newest_arch->name);
+		}
+	    }
+
+	  break;
+
+	case Tag_CSKY_ISA_FLAGS:
+	case Tag_CSKY_ISA_EXT_FLAGS:
+	  /* Do ISA merge.  */
+	  break;
+
+	case Tag_CSKY_VDSP_VERSION:
+	  if (out_attr[i].i == 0)
+	    out_attr[i].i = in_attr[i].i;
+	  else if (out_attr[i].i != in_attr[i].i)
+	    {
+	      _bfd_error_handler
+		(_("Error: %pB and %pB has different VDSP version"), ibfd, obfd);
+	      result = FALSE;
+	    }
+	  break;
+
+	case Tag_CSKY_FPU_VERSION:
+	  if (out_attr[i].i <= in_attr[i].i
+	      && out_attr[i].i == 0)
+	    out_attr[i].i = in_attr[i].i;
+	  break;
+
+	case Tag_CSKY_DSP_VERSION:
+	  if (out_attr[i].i == 0)
+	    out_attr[i].i = in_attr[i].i;
+	  else if (out_attr[i].i != in_attr[i].i)
+	    {
+	      _bfd_error_handler
+		(_("Error: %pB and %pB has different DSP version"), ibfd, obfd);
+	      result = FALSE;
+	    }
+	  break;
+
+	case Tag_CSKY_FPU_ABI:
+	  if (out_attr[i].i != in_attr[i].i
+	      && (out_attr[i].i == 0
+		  || (out_attr[i].i == VAL_CSKY_FPU_ABI_SOFT
+		      && in_attr[i].i == VAL_CSKY_FPU_ABI_SOFTFP)))
+	    {
+	      out_attr[i].i = in_attr[i].i;
+	    }
+	  else if (out_attr[i].i == VAL_CSKY_FPU_ABI_HARD
+		   && (out_attr[i].i != in_attr[i].i
+		       && in_attr[i].i != 0))
+	    {
+	      _bfd_error_handler
+	       (_("Error: %pB and %pB has different FPU ABI"), ibfd, obfd);
+	       result = FALSE;
+	    }
+	  break;
+
+	default:
+	  result =
+	    result && _bfd_elf_merge_unknown_attribute_low (ibfd, obfd, i);
+	  break;
+	}
+
+      /* If out_attr was copied from in_attr then it won't have a type yet.  */
+      if (in_attr[i].type && !out_attr[i].type)
+	out_attr[i].type = in_attr[i].type;
+    }
+
+  /* Merge Tag_compatibility attributes and any common GNU ones.  */
+  if (!_bfd_elf_merge_object_attributes (ibfd, info))
+    return FALSE;
+
+  /* Check for any attributes not known on CSKY.  */
+  result &= _bfd_elf_merge_unknown_attribute_list (ibfd, obfd);
+
+  return result;
+}
+
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
@@ -2931,6 +3007,9 @@ csky_elf_merge_private_bfd_data (bfd *ib
   flagword new_flags;
   csky_arch_for_merge *old_arch = NULL;
   csky_arch_for_merge *new_arch = NULL;
+  flagword newest_flag = 0;
+  const char *sec_name;
+  obj_attribute *out_attr;
 
   /* Check if we have the same endianness.  */
   if (! _bfd_generic_verify_endian_match (ibfd, info))
@@ -2940,76 +3019,79 @@ csky_elf_merge_private_bfd_data (bfd *ib
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
     return TRUE;
 
-  new_flags = elf_elfheader (ibfd)->e_flags;
-  old_flags = elf_elfheader (obfd)->e_flags;
+  /* Merge ".csky.attribute" section.  */
+  if (!elf32_csky_merge_attributes (ibfd, info))
+    return FALSE;
 
   if (! elf_flags_init (obfd))
     {
       /* First call, no flags set.  */
       elf_flags_init (obfd) = TRUE;
-      elf_elfheader (obfd)->e_flags = new_flags;
     }
-  else if (new_flags == old_flags)
-    /* Do nothing.  */
-    ;
-  else if (new_flags == 0 || old_flags == 0)
-    /* When one flag is 0, assign the other one's flag.  */
-      elf_elfheader (obfd)->e_flags = new_flags | old_flags;
-  else
+
+  /* Try to merge e_flag.  */
+  new_flags = elf_elfheader (ibfd)->e_flags;
+  old_flags = elf_elfheader (obfd)->e_flags;
+  out_attr = elf_known_obj_attributes_proc (obfd);
+
+  /* the flags like"e , f ,g ..." , we take collection.  */
+  newest_flag = (old_flags & (~CSKY_ARCH_MASK))
+   | (new_flags & (~CSKY_ARCH_MASK));
+
+  sec_name = get_elf_backend_data (ibfd)->obj_attrs_section;
+  if (bfd_get_section_by_name (ibfd, sec_name) == NULL)
     {
-      flagword newest_flag = 0;
+      /* Input BFDs have no ".csky.attribute" section.  */
+      new_arch = csky_find_arch_with_eflag (new_flags & CSKY_ARCH_MASK);
+      old_arch = csky_find_arch_with_name (out_attr[Tag_CSKY_ARCH_NAME].s);
 
-      if ((new_flags & CSKY_ARCH_MASK) != 0
-	  && (old_flags & CSKY_ARCH_MASK) != 0)
+      if (new_arch != NULL && old_arch != NULL)
 	{
-	  new_arch = csky_find_arch_with_eflag (new_flags & CSKY_ARCH_MASK);
-	  old_arch = csky_find_arch_with_eflag (old_flags & CSKY_ARCH_MASK);
-	  /* Collect flags like e, f, g.  */
-	  newest_flag = (old_flags & (~CSKY_ARCH_MASK))
-			 | (new_flags & (~CSKY_ARCH_MASK));
-	  if (new_arch != NULL && old_arch != NULL)
+	  if (new_arch->class != old_arch->class)
 	    {
-	      if (new_arch->class != old_arch->class)
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB: machine flag conflict with target"), ibfd);
+	      bfd_set_error (bfd_error_wrong_format);
+	      return FALSE;
+	    }
+	  else if (new_arch->class_level != old_arch->class_level)
+	    {
+	      csky_arch_for_merge *newest_arch =
+		(new_arch->class_level > old_arch->class_level
+		 ? new_arch : old_arch);
+
+	      if (new_arch->do_warning || old_arch->do_warning)
 		{
 		  _bfd_error_handler
 		    /* xgettext:c-format */
-		    (_("%pB: machine flag conflict with target"), ibfd);
+		    (_("warning: file %pB's arch flag %s conflicts with "
+		       "target ck%s, using %s"),
+		     ibfd, new_arch->name, old_arch->name,
+		     newest_arch->name);
 		  bfd_set_error (bfd_error_wrong_format);
-		  return FALSE;
 		}
-	      else if (new_arch->class_level != old_arch->class_level)
-		{
-		  csky_arch_for_merge *newest_arch
-		    = (new_arch->class_level > old_arch->class_level
-		       ? new_arch : old_arch);
-		  if (new_arch->do_warning || old_arch->do_warning)
-		    {
-		      _bfd_error_handler
-			/* xgettext:c-format */
-			(_("warning: file %pB's arch flag ck%s conflicts with "
-			   "target ck%s, using ck%s"),
-			 ibfd, new_arch->name, old_arch->name,
-			 newest_arch->name);
-		       bfd_set_error (bfd_error_wrong_format);
-		    }
 
-		  newest_flag |= newest_arch->arch_eflag;
-		}
-	      else
-		newest_flag |= ((new_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK))
-				| (old_flags
-				   & (CSKY_ARCH_MASK | CSKY_ABI_MASK)));
+	      if (out_attr[Tag_CSKY_ARCH_NAME].s != NULL)
+		bfd_release (obfd, out_attr[Tag_CSKY_ARCH_NAME].s);
+
+	      out_attr[Tag_CSKY_ARCH_NAME].s =
+		_bfd_elf_attr_strdup (obfd, newest_arch->name);
 	    }
 	  else
 	    newest_flag |= ((new_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK))
 			    | (old_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK)));
 	}
       else
-	newest_flag |= ((new_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK))
-			| (old_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK)));
-
-      elf_elfheader (obfd)->e_flags = newest_flag;
+	{
+	  if (new_arch && new_arch->name != NULL)
+	    out_attr[Tag_CSKY_ARCH_NAME].s =
+	  _bfd_elf_attr_strdup (obfd, new_arch->name);
+	}
     }
+
+  elf_elfheader (obfd)->e_flags = newest_flag;
+
   return TRUE;
 }
 
@@ -3413,7 +3495,7 @@ elf32_csky_size_stubs (bfd *output_bfd,
 		  if (r_type >= (unsigned int) R_CKCORE_MAX)
 		    {
 		      bfd_set_error (bfd_error_bad_value);
-error_ret_free_internal:
+		    error_ret_free_internal:
 		      if (elf_section_data (section)->relocs == NULL)
 			free (internal_relocs);
 		      goto error_ret_free_local;
@@ -3592,7 +3674,7 @@ error_ret_free_internal:
     }
 
   return TRUE;
-error_ret_free_local:
+ error_ret_free_local:
   return FALSE;
 }
 
@@ -3621,6 +3703,14 @@ csky_build_one_stub (struct bfd_hash_ent
   stub_entry = (struct elf32_csky_stub_hash_entry *)gen_entry;
   info = (struct bfd_link_info *) in_arg;
 
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (stub_entry->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    stub_entry->target_section);
+
   globals = csky_elf_hash_table (info);
   if (globals == NULL)
     return FALSE;
@@ -3770,7 +3860,7 @@ elf32_csky_setup_section_lists (bfd *out
   unsigned int top_id, top_index;
   asection *section;
   asection **input_list, **list;
-  bfd_size_type amt;
+  size_t amt;
   struct csky_elf_link_hash_table *htab = csky_elf_hash_table (info);
 
   if (!htab)
@@ -3828,7 +3918,7 @@ elf32_csky_setup_section_lists (bfd *out
 static bfd_reloc_status_type
 csky_relocate_contents (reloc_howto_type *howto,
 			bfd *input_bfd,
-			long relocation,
+			bfd_vma relocation,
 			bfd_byte *location)
 {
   int size;
@@ -3844,8 +3934,8 @@ csky_relocate_contents (reloc_howto_type
 
   /* FIXME: these macros should be defined at file head or head file head.  */
 #define CSKY_INSN_ADDI_TO_SUBI        0x04000000
-#define CSKY_INSN_MOV_RTB             0xc41d4820   // mov32 rx, r29, 0
-#define CSKY_INSN_MOV_RDB             0xc41c4820   // mov32 rx, r28, 0
+#define CSKY_INSN_MOV_RTB             0xc41d4820   /* mov32 rx, r29, 0 */
+#define CSKY_INSN_MOV_RDB             0xc41c4820   /* mov32 rx, r28, 0 */
 #define CSKY_INSN_GET_ADDI_RZ(x)      (((x) & 0x03e00000) >> 21)
 #define CSKY_INSN_SET_MOV_RZ(x)       ((x) & 0x0000001f)
 #define CSKY_INSN_JSRI_TO_LRW         0xea9a0000
@@ -3871,7 +3961,7 @@ csky_relocate_contents (reloc_howto_type
 
 	  if (R_CKCORE_DOFFSET_LO16 == howto->type)
 	    {
-	      if ((signed) relocation < 0)
+	      if ((bfd_signed_vma) relocation < 0)
 		{
 		  x |= CSKY_INSN_ADDI_TO_SUBI;
 		  relocation = -relocation;
@@ -3882,7 +3972,7 @@ csky_relocate_contents (reloc_howto_type
 	    }
 	  else if (R_CKCORE_TOFFSET_LO16 == howto->type)
 	    {
-	      if ((signed) relocation < 0)
+	      if ((bfd_signed_vma) relocation < 0)
 		{
 		  x |= CSKY_INSN_ADDI_TO_SUBI;
 		  relocation = -relocation;
@@ -3903,13 +3993,13 @@ csky_relocate_contents (reloc_howto_type
   flag = bfd_reloc_ok;
   if (howto->complain_on_overflow != complain_overflow_dont)
     {
-      int addrmask;
-      int fieldmask;
-      int signmask;
-      int ss;
-      int a;
-      int b;
-      int sum;
+      bfd_vma addrmask;
+      bfd_vma fieldmask;
+      bfd_vma signmask;
+      bfd_vma ss;
+      bfd_vma a;
+      bfd_vma b;
+      bfd_vma sum;
       /* Get the values to be added together.  For signed and unsigned
 	 relocations, we assume that all values should be truncated to
 	 the size of an address.  For bitfields, all the bits matter.
@@ -3995,7 +4085,7 @@ csky_relocate_contents (reloc_howto_type
 
     }
   /* Put RELOCATION in the right bits.  */
-  relocation >>= (bfd_vma) rightshift;
+  relocation >>= rightshift;
 
   if ((howto->type == R_CKCORE_DOFFSET_LO16
        || howto->type == R_CKCORE_TOFFSET_LO16)
@@ -4022,7 +4112,7 @@ csky_relocate_contents (reloc_howto_type
 	  csky_put_insn_32 (input_bfd, CSKY_INSN_JSR_R26, location + 4);
 	}
 
-      relocation <<= (bfd_vma) bitpos;
+      relocation <<= bitpos;
       /* Add RELOCATION to the right bits of X.  */
       x = ((x & ~howto->dst_mask)
 	   | (((x & howto->src_mask) + relocation) & howto->dst_mask));
@@ -5145,6 +5235,47 @@ csky_elf_grok_psinfo (bfd *abfd, Elf_Int
   return TRUE;
 }
 
+/* Determine whether an object attribute tag takes an integer, a
+   string or both.  */
+
+static int
+elf32_csky_obj_attrs_arg_type (int tag)
+{
+  switch (tag)
+    {
+    case Tag_compatibility:
+      return ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL;
+    case Tag_CSKY_ARCH_NAME:
+    case Tag_CSKY_CPU_NAME:
+    case Tag_CSKY_FPU_NUMBER_MODULE:
+      return ATTR_TYPE_FLAG_STR_VAL;
+    case Tag_CSKY_ISA_FLAGS:
+    case Tag_CSKY_ISA_EXT_FLAGS:
+    case Tag_CSKY_DSP_VERSION:
+    case Tag_CSKY_VDSP_VERSION:
+    case Tag_CSKY_FPU_VERSION:
+    case Tag_CSKY_FPU_ABI:
+    case Tag_CSKY_FPU_ROUNDING:
+    case Tag_CSKY_FPU_HARDFP:
+    case Tag_CSKY_FPU_Exception:
+    case Tag_CSKY_FPU_DENORMAL:
+      return ATTR_TYPE_FLAG_INT_VAL;
+    default:
+      break;
+    }
+
+  return (tag & 1) != 0 ? ATTR_TYPE_FLAG_STR_VAL : ATTR_TYPE_FLAG_INT_VAL;
+}
+
+/* Attribute numbers >=64 (mod 128) can be safely ignored.  */
+
+static bfd_boolean
+elf32_csky_obj_attrs_handle_unknown (bfd *abfd ATTRIBUTE_UNUSED,
+				     int tag ATTRIBUTE_UNUSED)
+{
+  return TRUE;
+}
+
 /* End of external entry points for sizing and building linker stubs.  */
 
 /* CPU-related basic API.  */
@@ -5198,4 +5329,15 @@ csky_elf_grok_psinfo (bfd *abfd, Elf_Int
 #define elf_backend_grok_prstatus             csky_elf_grok_prstatus
 #define elf_backend_grok_psinfo               csky_elf_grok_psinfo
 
+/* Attribute sections.  */
+#undef  elf_backend_obj_attrs_vendor
+#define elf_backend_obj_attrs_vendor          "csky"
+#undef  elf_backend_obj_attrs_section
+#define elf_backend_obj_attrs_section         ".csky.attributes"
+#undef  elf_backend_obj_attrs_arg_type
+#define elf_backend_obj_attrs_arg_type        elf32_csky_obj_attrs_arg_type
+#undef  elf_backend_obj_attrs_section_type
+#define elf_backend_obj_attrs_section_type    SHT_CSKY_ATTRIBUTES
+#define elf_backend_obj_attrs_handle_unknown  elf32_csky_obj_attrs_handle_unknown
+
 #include "elf32-target.h"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-csky.h ./bfd/elf32-csky.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-csky.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-csky.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for C-SKY.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-d10v.c ./bfd/elf32-d10v.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-d10v.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-d10v.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* D10V-specific support for 32-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
    Contributed by Martin Hunt (hunt@cygnus.com).
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-d30v.c ./bfd/elf32-d30v.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-d30v.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-d30v.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* D30V-specific support for 32-bit ELF
-   Copyright (C) 1997-2019 Free Software Foundation, Inc.
+   Copyright (C) 1997-2020 Free Software Foundation, Inc.
    Contributed by Martin Hunt (hunt@cygnus.com).
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-dlx.c ./bfd/elf32-dlx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-dlx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-dlx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* DLX specific support for 32-bit ELF
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-dlx.h ./bfd/elf32-dlx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-dlx.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-dlx.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* DLX specific support for 32-bit ELF
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-epiphany.c ./bfd/elf32-epiphany.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-epiphany.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-epiphany.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Adapteva epiphany specific support for 32-bit ELF
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
    Contributed by Embecosm on behalf of Adapteva, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -341,21 +341,17 @@ epiphany_elf_relax_section (bfd *abfd, a
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-fr30.c ./bfd/elf32-fr30.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-fr30.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-fr30.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* FR30-specific support for 32-bit ELF.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-frv.c ./bfd/elf32-frv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-frv.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-frv.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* FRV-specific support for 32-bit ELF.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -826,8 +826,9 @@ struct frvfdpic_elf_link_hash_table
 /* Get the FRV ELF linker hash table from a link_info structure.  */
 
 #define frvfdpic_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == FRV_ELF_DATA ? ((struct frvfdpic_elf_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == FRV_ELF_DATA)		\
+   ? (struct frvfdpic_elf_link_hash_table *) (p)->hash : NULL)
 
 #define frvfdpic_got_section(info) \
   (frvfdpic_hash_table (info)->elf.sgot)
@@ -942,7 +943,7 @@ static struct bfd_link_hash_table *
 frvfdpic_elf_link_hash_table_create (bfd *abfd)
 {
   struct frvfdpic_elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct frvfdpic_elf_link_hash_table);
+  size_t amt = sizeof (struct frvfdpic_elf_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -2712,7 +2713,7 @@ elf32_frv_relocate_section (bfd *output_
       const char *name;
       int r_type;
       asection *osec;
-      struct frvfdpic_relocs_info *picrel;
+      struct frvfdpic_relocs_info *picrel = NULL;
       bfd_vma orig_addend = rel->r_addend;
 
       r_type = ELF32_R_TYPE (rel->r_info);
@@ -2806,6 +2807,9 @@ elf32_frv_relocate_section (bfd *output_
 	case R_FRV_GETTLSOFF_RELAX:
 	case R_FRV_TLSOFF_RELAX:
 	case R_FRV_TLSMOFF:
+	  if ((input_section->flags & SEC_ALLOC) == 0)
+	    break;
+
 	  if (h != NULL)
 	    picrel = frvfdpic_relocs_info_for_global (frvfdpic_relocs_info
 						      (info), input_bfd, h,
@@ -3896,11 +3900,11 @@ elf32_frv_relocate_section (bfd *output_
 	     input file basename is crt0.o only once.  */
 	  if (silence_segment_error == 1)
 	    silence_segment_error =
-	      (strlen (input_bfd->filename) == 6
-	       && filename_cmp (input_bfd->filename, "crt0.o") == 0)
-	      || (strlen (input_bfd->filename) > 6
-		  && filename_cmp (input_bfd->filename
-				   + strlen (input_bfd->filename) - 7,
+	      (strlen (bfd_get_filename (input_bfd)) == 6
+	       && filename_cmp (bfd_get_filename (input_bfd), "crt0.o") == 0)
+	      || (strlen (bfd_get_filename (input_bfd)) > 6
+		  && filename_cmp (bfd_get_filename (input_bfd)
+				   + strlen (bfd_get_filename (input_bfd)) - 7,
 			     "/crt0.o") == 0)
 	      ? -1 : 0;
 	  if (!silence_segment_error
@@ -4119,6 +4123,7 @@ elf32_frv_add_symbol_hook (bfd *abfd,
 	  scomm = bfd_make_section_with_flags (abfd, ".scommon",
 					       (SEC_ALLOC
 						| SEC_IS_COMMON
+						| SEC_SMALL_DATA
 						| SEC_LINKER_CREATED));
 	  if (scomm == NULL)
 	    return FALSE;
@@ -5463,27 +5468,7 @@ elf32_frvfdpic_size_dynamic_sections (bf
   if (!_frvfdpic_size_got_plt (output_bfd, &gpinfo))
     return FALSE;
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      if (frvfdpic_got_section (info)->size)
-	if (!_bfd_elf_add_dynamic_entry (info, DT_PLTGOT, 0))
-	  return FALSE;
-
-      if (frvfdpic_pltrel_section (info)->size)
-	if (!_bfd_elf_add_dynamic_entry (info, DT_PLTRELSZ, 0)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_PLTREL, DT_REL)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_JMPREL, 0))
-	  return FALSE;
-
-      if (frvfdpic_gotrel_section (info)->size)
-	if (!_bfd_elf_add_dynamic_entry (info, DT_REL, 0)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_RELSZ, 0)
-	    || !_bfd_elf_add_dynamic_entry (info, DT_RELENT,
-					    sizeof (Elf32_External_Rel)))
-	  return FALSE;
-    }
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, TRUE);
 }
 
 static bfd_boolean
@@ -6344,6 +6329,10 @@ frv_elf_merge_private_bfd_data (bfd *ibf
   char new_opt[80];
   char old_opt[80];
 
+  /* FIXME: What should be checked when linking shared libraries?  */
+  if ((ibfd->flags & DYNAMIC) != 0)
+    return TRUE;
+
   new_opt[0] = old_opt[0] = '\0';
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-ft32.c ./bfd/elf32-ft32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-ft32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-ft32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,8 +1,8 @@
 /* ft32-specific support for 32-bit ELF.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2020 Free Software Foundation, Inc.
 
    Copied from elf32-moxie.c which is..
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
    Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -1230,15 +1230,13 @@ ft32_elf_relax_section
 
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (free_relocs != NULL)
-    free (free_relocs);
+  free (free_relocs);
 
   return TRUE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-gen.c ./bfd/elf32-gen.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-gen.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-gen.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-h8300.c ./bfd/elf32-h8300.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-h8300.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-h8300.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Renesas H8/300 ELF binaries.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -1465,21 +1465,17 @@ elf32_h8_relax_section (bfd *abfd, asect
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
@@ -1682,10 +1678,8 @@ elf32_h8_get_relocated_section_contents
 				       isymbuf, sections))
 	goto error_return;
 
-      if (sections != NULL)
-	free (sections);
-      if (isymbuf != NULL
-	  && symtab_hdr->contents != (unsigned char *) isymbuf)
+      free (sections);
+      if (symtab_hdr->contents != (unsigned char *) isymbuf)
 	free (isymbuf);
       if (elf_section_data (input_section)->relocs != internal_relocs)
 	free (internal_relocs);
@@ -1694,13 +1688,10 @@ elf32_h8_get_relocated_section_contents
   return data;
 
  error_return:
-  if (sections != NULL)
-    free (sections);
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  free (sections);
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (input_section)->relocs != internal_relocs)
+  if (elf_section_data (input_section)->relocs != internal_relocs)
     free (internal_relocs);
   return NULL;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-hppa.c ./bfd/elf32-hppa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-hppa.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-hppa.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for HP PA-RISC ELF files.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Original code by
 	Center for Software Science
@@ -231,10 +231,6 @@ struct elf32_hppa_link_hash_entry
      symbol.  */
   struct elf32_hppa_stub_hash_entry *hsh_cache;
 
-  /* Used to count relocations for delayed sizing of relocation
-     sections.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   ENUM_BITFIELD (_tls_type) tls_type : 8;
 
   /* Set if this symbol is used by a plabel reloc.  */
@@ -290,9 +286,6 @@ struct elf32_hppa_link_hash_table
   /* Set if we need a .plt stub to support lazy dynamic linking.  */
   unsigned int need_plt_stub:1;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* Data for LDM relocations.  */
   union
   {
@@ -303,8 +296,9 @@ struct elf32_hppa_link_hash_table
 
 /* Various hash macros and functions.  */
 #define hppa_link_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == HPPA32_ELF_DATA ? ((struct elf32_hppa_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == HPPA32_ELF_DATA)	\
+   ? (struct elf32_hppa_link_hash_table *) (p)->hash : NULL)
 
 #define hppa_elf_hash_entry(ent) \
   ((struct elf32_hppa_link_hash_entry *)(ent))
@@ -390,7 +384,6 @@ hppa_link_hash_newfunc (struct bfd_hash_
       /* Initialize the local fields.  */
       hh = hppa_elf_hash_entry (entry);
       hh->hsh_cache = NULL;
-      hh->dyn_relocs = NULL;
       hh->plabel = 0;
       hh->tls_type = GOT_UNKNOWN;
     }
@@ -418,7 +411,7 @@ static struct bfd_link_hash_table *
 elf32_hppa_link_hash_table_create (bfd *abfd)
 {
   struct elf32_hppa_link_hash_table *htab;
-  bfd_size_type amt = sizeof (*htab);
+  size_t amt = sizeof (*htab);
 
   htab = bfd_zmalloc (amt);
   if (htab == NULL)
@@ -440,6 +433,7 @@ elf32_hppa_link_hash_table_create (bfd *
       return NULL;
     }
   htab->etab.root.hash_table_free = elf32_hppa_link_hash_table_free;
+  htab->etab.dt_pltgot_required = TRUE;
 
   htab->text_segment_base = (bfd_vma) -1;
   htab->data_segment_base = (bfd_vma) -1;
@@ -731,6 +725,15 @@ hppa_build_one_stub (struct bfd_hash_ent
   switch (hsh->stub_type)
     {
     case hppa_stub_long_branch:
+      /* Fail if the target section could not be assigned to an output
+	 section.  The user should fix his linker script.  */
+      if (hsh->target_section->output_section == NULL
+	  && info->non_contiguous_regions)
+	info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output "
+				  "section. Retry without "
+				  "--enable-non-contiguous-regions.\n"),
+				hsh->target_section);
+
       /* Create the long branch.  A long branch is formed with "ldil"
 	 loading the upper bits of the target address into a register,
 	 then branching with "be" which adds in the lower bits.
@@ -751,6 +754,15 @@ hppa_build_one_stub (struct bfd_hash_ent
       break;
 
     case hppa_stub_long_branch_shared:
+      /* Fail if the target section could not be assigned to an output
+	 section.  The user should fix his linker script.  */
+      if (hsh->target_section->output_section == NULL
+	  && info->non_contiguous_regions)
+	info->callbacks->einfo (_("%F%P: Could not assign %pA to an output "
+				  "section. Retry without "
+				  "--enable-non-contiguous-regions.\n"),
+				hsh->target_section);
+
       /* Branches are relative.  This is where we are going to.  */
       sym_value = (hsh->target_value
 		   + hsh->target_section->output_offset
@@ -823,6 +835,15 @@ hppa_build_one_stub (struct bfd_hash_ent
       break;
 
     case hppa_stub_export:
+      /* Fail if the target section could not be assigned to an output
+	 section.  The user should fix his linker script.  */
+      if (hsh->target_section->output_section == NULL
+	  && info->non_contiguous_regions)
+	info->callbacks->einfo (_("%F%P: Could not assign %pA to an output "
+				  "section. Retry without "
+				  "--enable-non-contiguous-regions.\n"),
+				hsh->target_section);
+
       /* Branches are relative.  This is where we are going to.  */
       sym_value = (hsh->target_value
 		   + hsh->target_section->output_offset
@@ -1018,42 +1039,6 @@ elf32_hppa_copy_indirect_symbol (struct
   hh_dir = hppa_elf_hash_entry (eh_dir);
   hh_ind = hppa_elf_hash_entry (eh_ind);
 
-  if (hh_ind->dyn_relocs != NULL
-      && eh_ind->root.type == bfd_link_hash_indirect)
-    {
-      if (hh_dir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **hdh_pp;
-	  struct elf_dyn_relocs *hdh_p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (hdh_pp = &hh_ind->dyn_relocs; (hdh_p = *hdh_pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *hdh_q;
-
-	      for (hdh_q = hh_dir->dyn_relocs;
-		   hdh_q != NULL;
-		   hdh_q = hdh_q->next)
-		if (hdh_q->sec == hdh_p->sec)
-		  {
-#if RELATIVE_DYNRELOCS
-		    hdh_q->pc_count += hdh_p->pc_count;
-#endif
-		    hdh_q->count += hdh_p->count;
-		    *hdh_pp = hdh_p->next;
-		    break;
-		  }
-	      if (hdh_q == NULL)
-		hdh_pp = &hdh_p->next;
-	    }
-	  *hdh_pp = hh_dir->dyn_relocs;
-	}
-
-      hh_dir->dyn_relocs = hh_ind->dyn_relocs;
-      hh_ind->dyn_relocs = NULL;
-    }
-
   if (eh_ind->root.type == bfd_link_hash_indirect)
     {
       hh_dir->plabel |= hh_ind->plabel;
@@ -1467,7 +1452,7 @@ elf32_hppa_check_relocs (bfd *abfd,
 		 relocations we need for this symbol.  */
 	      if (hh != NULL)
 		{
-		  hdh_head = &hh->dyn_relocs;
+		  hdh_head = &hh->eh.dyn_relocs;
 		}
 	      else
 		{
@@ -1478,7 +1463,7 @@ elf32_hppa_check_relocs (bfd *abfd,
 		  void *vpp;
 		  Elf_Internal_Sym *isym;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->etab.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    return FALSE;
@@ -1632,25 +1617,6 @@ elf32_hppa_hide_symbol (struct bfd_link_
     }
 }
 
-/* Find any dynamic relocs that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *eh)
-{
-  struct elf32_hppa_link_hash_entry *hh;
-  struct elf_dyn_relocs *hdh_p;
-
-  hh = hppa_elf_hash_entry (eh);
-  for (hdh_p = hh->dyn_relocs; hdh_p != NULL; hdh_p = hdh_p->next)
-    {
-      asection *sec = hdh_p->sec->output_section;
-
-      if (sec != NULL && (sec->flags & SEC_READONLY) != 0)
-	return hdh_p->sec;
-    }
-  return NULL;
-}
-
 /* Return true if we have dynamic relocs against H or any of its weak
    aliases, that apply to read-only sections.  Cannot be used after
    size_dynamic_sections.  */
@@ -1661,7 +1627,7 @@ alias_readonly_dynrelocs (struct elf_lin
   struct elf32_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh);
   do
     {
-      if (readonly_dynrelocs (&hh->eh))
+      if (_bfd_elf_readonly_dynrelocs (&hh->eh))
 	return TRUE;
       hh = hppa_elf_hash_entry (hh->eh.u.alias);
     } while (hh != NULL && &hh->eh != eh);
@@ -1692,7 +1658,7 @@ elf32_hppa_adjust_dynamic_symbol (struct
       /* Discard dyn_relocs when non-pic if we've decided that a
 	 function symbol is local.  */
       if (!bfd_link_pic (info) && local)
-	hppa_elf_hash_entry (eh)->dyn_relocs = NULL;
+	eh->dyn_relocs = NULL;
 
       /* If the symbol is used by a plabel, we must allocate a PLT slot.
 	 The refcounts are not reliable when it has been hidden since
@@ -1742,7 +1708,7 @@ elf32_hppa_adjust_dynamic_symbol (struct
       eh->root.u.def.value = def->root.u.def.value;
       if (def->root.u.def.section == htab->etab.sdynbss
 	  || def->root.u.def.section == htab->etab.sdynrelro)
-	hppa_elf_hash_entry (eh)->dyn_relocs = NULL;
+	eh->dyn_relocs = NULL;
       return TRUE;
     }
 
@@ -1800,7 +1766,7 @@ elf32_hppa_adjust_dynamic_symbol (struct
     }
 
   /* We no longer want dyn_relocs.  */
-  hppa_elf_hash_entry (eh)->dyn_relocs = NULL;
+  eh->dyn_relocs = NULL;
   return _bfd_elf_adjust_dynamic_copy (info, eh, sec);
 }
 
@@ -1985,15 +1951,15 @@ allocate_dynrelocs (struct elf_link_hash
 
   /* If no dynamic sections we can't have dynamic relocs.  */
   if (!htab->etab.dynamic_sections_created)
-    hh->dyn_relocs = NULL;
+    eh->dyn_relocs = NULL;
 
   /* Discard relocs on undefined syms with non-default visibility.  */
   else if ((eh->root.type == bfd_link_hash_undefined
 	    && ELF_ST_VISIBILITY (eh->other) != STV_DEFAULT)
 	   || UNDEFWEAK_NO_DYNAMIC_RELOC (info, eh))
-    hh->dyn_relocs = NULL;
+    eh->dyn_relocs = NULL;
 
-  if (hh->dyn_relocs == NULL)
+  if (eh->dyn_relocs == NULL)
     return TRUE;
 
   /* If this is a -Bsymbolic shared link, then we need to discard all
@@ -2008,7 +1974,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **hdh_pp;
 
-	  for (hdh_pp = &hh->dyn_relocs; (hdh_p = *hdh_pp) != NULL; )
+	  for (hdh_pp = &eh->dyn_relocs; (hdh_p = *hdh_pp) != NULL; )
 	    {
 	      hdh_p->count -= hdh_p->pc_count;
 	      hdh_p->pc_count = 0;
@@ -2020,7 +1986,7 @@ allocate_dynrelocs (struct elf_link_hash
 	}
 #endif
 
-      if (hh->dyn_relocs != NULL)
+      if (eh->dyn_relocs != NULL)
 	{
 	  if (!ensure_undef_dynamic (info, eh))
 	    return FALSE;
@@ -2040,14 +2006,14 @@ allocate_dynrelocs (struct elf_link_hash
 	    return FALSE;
 
 	  if (eh->dynindx == -1)
-	    hh->dyn_relocs = NULL;
+	    eh->dyn_relocs = NULL;
 	}
       else
-	hh->dyn_relocs = NULL;
+	eh->dyn_relocs = NULL;
     }
 
   /* Finally, allocate space.  */
-  for (hdh_p = hh->dyn_relocs; hdh_p != NULL; hdh_p = hdh_p->next)
+  for (hdh_p = eh->dyn_relocs; hdh_p != NULL; hdh_p = hdh_p->next)
     {
       asection *sreloc = elf_section_data (hdh_p->sec)->sreloc;
       sreloc->size += hdh_p->count * sizeof (Elf32_External_Rela);
@@ -2075,33 +2041,6 @@ clobber_millicode_symbols (struct elf_li
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *eh, void *inf)
-{
-  asection *sec;
-
-  if (eh->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (eh);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) inf;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, eh->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -2338,59 +2277,7 @@ elf32_hppa_size_dynamic_sections (bfd *o
 	return FALSE;
     }
 
-  if (htab->etab.dynamic_sections_created)
-    {
-      /* Like IA-64 and HPPA64, always create a DT_PLTGOT.  It
-	 actually has nothing to do with the PLT, it is how we
-	 communicate the LTP value of a load module to the dynamic
-	 linker.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (!add_dynamic_entry (DT_PLTGOT, 0))
-	return FALSE;
-
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in elf32_hppa_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->etab.srelplt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->etab, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* External entry points for sizing and building linker stubs.  */
@@ -2407,7 +2294,7 @@ elf32_hppa_setup_section_lists (bfd *out
   unsigned int top_id, top_index;
   asection *section;
   asection **input_list, **list;
-  bfd_size_type amt;
+  size_t amt;
   struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info);
 
   if (htab == NULL)
@@ -2596,7 +2483,7 @@ get_local_syms (bfd *output_bfd, bfd *in
   /* We want to read in symbol extension records only once.  To do this
      we need to read in the local symbols in parallel and save them for
      later use; so hold pointers to the local symbols in an array.  */
-  bfd_size_type amt = sizeof (Elf_Internal_Sym *) * htab->bfd_count;
+  size_t amt = sizeof (Elf_Internal_Sym *) * htab->bfd_count;
   all_local_syms = bfd_zmalloc (amt);
   htab->all_local_syms = all_local_syms;
   if (all_local_syms == NULL)
@@ -3169,7 +3056,7 @@ elf32_hppa_final_link (bfd *abfd, struct
   /* Do not attempt to sort non-regular files.  This is here
      especially for configure scripts and kernel builds which run
      tests with "ld [...] -o /dev/null".  */
-  if (stat (abfd->filename, &buf) != 0
+  if (stat (bfd_get_filename (abfd), &buf) != 0
       || !S_ISREG(buf.st_mode))
     return TRUE;
 
@@ -3221,7 +3108,7 @@ final_link_relocate (asection *input_sec
 		     struct elf32_hppa_link_hash_entry *hh,
 		     struct bfd_link_info *info)
 {
-  int insn;
+  unsigned int insn;
   unsigned int r_type = ELF32_R_TYPE (rela->r_info);
   unsigned int orig_r_type = r_type;
   reloc_howto_type *howto = elf_hppa_howto_table + r_type;
@@ -3340,7 +3227,7 @@ final_link_relocate (asection *input_sec
 	      /* GCC sometimes uses a register other than r19 for the
 		 operation, so we must convert any addil instruction
 		 that uses this relocation.  */
-	      if ((insn & 0xfc000000) == ((int) OP_ADDIL << 26))
+	      if ((insn & 0xfc000000) == OP_ADDIL << 26)
 		insn = ADDIL_DP;
 	      else
 		/* We must have a ldil instruction.  It's too hard to find
@@ -3374,8 +3261,8 @@ final_link_relocate (asection *input_sec
 	 instance: "extern int foo" with foo defined as "const int foo".  */
       if (sym_sec == NULL || (sym_sec->flags & SEC_CODE) != 0)
 	{
-	  if ((insn & ((0x3f << 26) | (0x1f << 21)))
-	      == (((int) OP_ADDIL << 26) | (27 << 21)))
+	  if ((insn & ((0x3fu << 26) | (0x1f << 21)))
+	      == ((OP_ADDIL << 26) | (27 << 21)))
 	    {
 	      insn &= ~ (0x1f << 21);
 	    }
@@ -3882,11 +3769,11 @@ elf32_hppa_relocate_section (bfd *output
 
 	  if (bfd_link_pic (info)
 	      ? ((hh == NULL
-		  || hh->dyn_relocs != NULL)
+		  || hh->eh.dyn_relocs != NULL)
 		 && ((hh != NULL && pc_dynrelocs (hh))
 		     || IS_ABSOLUTE_RELOC (r_type)))
 	      : (hh != NULL
-		 && hh->dyn_relocs != NULL))
+		 && hh->eh.dyn_relocs != NULL))
 	    {
 	      Elf_Internal_Rela outrel;
 	      bfd_boolean skip;
@@ -4149,7 +4036,7 @@ elf32_hppa_relocate_section (bfd *output
 		else
 		  {
 		    Elf_Internal_Sym *isym
-		      = bfd_sym_from_r_symndx (&htab->sym_cache,
+		      = bfd_sym_from_r_symndx (&htab->etab.sym_cache,
 					       input_bfd, r_symndx);
 		    if (isym == NULL)
 		      return FALSE;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-hppa.h ./bfd/elf32-hppa.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-hppa.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-hppa.h	2021-05-21 01:57:23.000000000 +0000
@@ -4,7 +4,7 @@
    in the Stratus FTX/Golf Object File Format (SED-1762) dated
    February 1994.
 
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Written by:
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-i386.c ./bfd/elf32-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-i386.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-i386.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Intel 80386/80486-specific support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -19,7 +19,6 @@
    MA 02110-1301, USA.  */
 
 #include "elfxx-x86.h"
-#include "elf-nacl.h"
 #include "elf-vxworks.h"
 #include "dwarf2.h"
 #include "opcode/i386.h"
@@ -843,14 +842,6 @@ static const struct elf_x86_non_lazy_plt
 #define PLTRESOLVE_RELOCS 2
 #define PLT_NON_JUMP_SLOT_RELOCS 2
 
-/* These are the standard parameters.  */
-static const struct elf_x86_backend_data elf_i386_arch_bed =
-  {
-    is_normal				/* os */
-  };
-
-#define	elf_backend_arch_data	&elf_i386_arch_bed
-
 /* Return TRUE if the TLS access code sequence support transition
    from R_TYPE.  */
 
@@ -1167,7 +1158,7 @@ elf_i386_tls_transition (struct bfd_link
 	    {
 	      Elf_Internal_Sym *isym;
 
-	      isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	      isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 					    abfd, r_symndx);
 	      name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL);
 	    }
@@ -1226,6 +1217,7 @@ elf_i386_convert_load_reloc (bfd *abfd,
   bfd_vma nop_offset;
   bfd_boolean is_pic;
   bfd_boolean to_reloc_32;
+  bfd_boolean abs_symbol;
   unsigned int r_type;
   unsigned int r_symndx;
   bfd_vma roff = irel->r_offset;
@@ -1249,6 +1241,21 @@ elf_i386_convert_load_reloc (bfd *abfd,
   modrm = bfd_get_8 (abfd, contents + roff - 1);
   baseless = (modrm & 0xc7) == 0x5;
 
+  if (h)
+    {
+      /* NB: Also set linker_def via SYMBOL_REFERENCES_LOCAL_P.  */
+      local_ref = SYMBOL_REFERENCES_LOCAL_P (link_info, h);
+      isym = NULL;
+      abs_symbol = ABS_SYMBOL_P (h);
+    }
+  else
+    {
+      local_ref = TRUE;
+      isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, abfd,
+				    r_symndx);
+      abs_symbol = isym->st_shndx == SHN_ABS;
+    }
+
   if (baseless && is_pic)
     {
       /* For PIC, disallow R_386_GOT32X without a base register
@@ -1256,11 +1263,7 @@ elf_i386_convert_load_reloc (bfd *abfd,
       const char *name;
 
       if (h == NULL)
-	{
-	  isym = bfd_sym_from_r_symndx (&htab->sym_cache, abfd,
-					r_symndx);
-	  name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL);
-	}
+	name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL);
       else
 	name = h->root.root.string;
 
@@ -1294,9 +1297,6 @@ elf_i386_convert_load_reloc (bfd *abfd,
 	goto convert_load;
     }
 
-  /* NB: Also set linker_def via SYMBOL_REFERENCES_LOCAL_P.  */
-  local_ref = SYMBOL_REFERENCES_LOCAL_P (link_info, h);
-
   /* Undefined weak symbol is only bound locally in executable
      and its reference is resolved as 0.  */
   if (h->root.type == bfd_link_hash_undefweak
@@ -1327,7 +1327,7 @@ elf_i386_convert_load_reloc (bfd *abfd,
 	  && local_ref)
 	{
 	  /* The function is locally defined.   */
-convert_branch:
+	convert_branch:
 	  /* Convert R_386_GOT32X to R_386_PC32.  */
 	  if (modrm == 0x15 || (modrm & 0xf8) == 0x90)
 	    {
@@ -1393,9 +1393,12 @@ convert_branch:
 	       || h->root.type == bfd_link_hash_defweak)
 	      && local_ref))
 	{
-convert_load:
+	convert_load:
 	  if (opcode == 0x8b)
 	    {
+	      if (abs_symbol && local_ref)
+		to_reloc_32 = TRUE;
+
 	      if (to_reloc_32)
 		{
 		  /* Convert "mov foo@GOT[(%reg1)], %reg2" to
@@ -1475,15 +1478,6 @@ elf_i386_check_relocs (bfd *abfd,
   if (bfd_link_relocatable (info))
     return TRUE;
 
-  /* Don't do anything special with non-loaded, non-alloced sections.
-     In particular, any relocs in such sections should not affect GOT
-     and PLT reference counting (ie. we don't allow them to create GOT
-     or PLT entries), there's no possibility or desire to optimize TLS
-     relocs, and there's not much point in propagating relocs to shared
-     libs that the dynamic linker won't relocate.  */
-  if ((sec->flags & SEC_ALLOC) == 0)
-    return TRUE;
-
   htab = elf_x86_hash_table (info, I386_ELF_DATA);
   if (htab == NULL)
     {
@@ -1519,6 +1513,7 @@ elf_i386_check_relocs (bfd *abfd,
       Elf_Internal_Sym *isym;
       const char *name;
       bfd_boolean size_reloc;
+      bfd_boolean no_dynreloc;
 
       r_symndx = ELF32_R_SYM (rel->r_info);
       r_type = ELF32_R_TYPE (rel->r_info);
@@ -1534,7 +1529,7 @@ elf_i386_check_relocs (bfd *abfd,
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  /* A local symbol.  */
-	  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 					abfd, r_symndx);
 	  if (isym == NULL)
 	    goto error_return;
@@ -1587,6 +1582,10 @@ elf_i386_check_relocs (bfd *abfd,
 	    goto error_return;
 	}
 
+      if (!_bfd_elf_x86_valid_reloc_p (sec, info, htab, rel, h, isym,
+				       symtab_hdr, &no_dynreloc))
+	return FALSE;
+
       if (! elf_i386_tls_transition (info, abfd, sec, contents,
 				     symtab_hdr, sym_hashes,
 				     &r_type, GOT_UNKNOWN,
@@ -1739,7 +1738,7 @@ elf_i386_check_relocs (bfd *abfd,
 
 	case R_386_GOTOFF:
 	case R_386_GOTPC:
-create_got:
+	create_got:
 	  if (r_type != R_386_TLS_IE)
 	    {
 	      if (eh != NULL)
@@ -1769,7 +1768,7 @@ create_got:
 	case R_386_PC32:
 	  if (eh != NULL && (sec->flags & SEC_CODE) != 0)
 	    eh->zero_undefweak |= 0x2;
-do_relocation:
+	do_relocation:
 	  /* We are called after all symbols have been resolved.  Only
 	     relocation against STT_GNU_IFUNC symbol must go through
 	     PLT.  */
@@ -1826,9 +1825,10 @@ do_relocation:
 	    }
 
 	  size_reloc = FALSE;
-do_size:
-	  if (NEED_DYNAMIC_RELOCATION_P (info, FALSE, h, sec, r_type,
-					 R_386_32))
+	do_size:
+	  if (!no_dynreloc
+	      && NEED_DYNAMIC_RELOCATION_P (info, FALSE, h, sec, r_type,
+					    R_386_32))
 	    {
 	      struct elf_dyn_relocs *p;
 	      struct elf_dyn_relocs **head;
@@ -1849,7 +1849,7 @@ do_size:
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
 		{
-		  head = &eh->dyn_relocs;
+		  head = &h->dyn_relocs;
 		}
 	      else
 		{
@@ -1859,7 +1859,7 @@ do_size:
 		  void **vpp;
 		  asection *s;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    goto error_return;
@@ -1875,7 +1875,7 @@ do_size:
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 		  p = (struct elf_dyn_relocs *) bfd_alloc (htab->elf.dynobj,
 							   amt);
 		  if (p == NULL)
@@ -1931,7 +1931,7 @@ do_size:
 
   return TRUE;
 
-error_return:
+ error_return:
   if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
   sec->check_relocs_failed = 1;
@@ -2034,7 +2034,7 @@ elf_i386_relocate_section (bfd *output_b
   local_tlsdesc_gotents = elf_x86_local_tlsdesc_gotent (input_bfd);
   /* We have to handle relocations in vxworks .tls_vars sections
      specially, because the dynamic loader is 'weird'.  */
-  is_vxworks_tls = (htab->target_os == is_vxworks
+  is_vxworks_tls = (htab->elf.target_os == is_vxworks
 		    && bfd_link_pic (info)
 		    && !strcmp (input_section->output_section->name,
 				".tls_vars"));
@@ -2362,7 +2362,7 @@ elf_i386_relocate_section (bfd *output_b
 	  switch (r_type)
 	    {
 	    default:
-bad_ifunc_reloc:
+	    bad_ifunc_reloc:
 	      if (h->root.root.string)
 		name = h->root.root.string;
 	      else
@@ -2386,7 +2386,7 @@ bad_ifunc_reloc:
 		  asection *sreloc;
 		  bfd_vma offset;
 
-do_ifunc_pointer:
+		do_ifunc_pointer:
 		  /* Need a dynamic relocation to get the real function
 		     adddress.  */
 		  offset = _bfd_elf_section_offset (output_bfd,
@@ -2449,7 +2449,7 @@ do_ifunc_pointer:
 	    }
 	}
 
-skip_ifunc:
+    skip_ifunc:
       resolved_to_zero = (eh != NULL
 			  && UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh));
 
@@ -2551,7 +2551,7 @@ skip_ifunc:
 		     we don't know what the GOT base is.  */
 		  const char *name;
 
-disallow_got32:
+		disallow_got32:
 		  if (h == NULL || h->root.root.string == NULL)
 		    name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
 					     NULL);
@@ -2704,7 +2704,7 @@ disallow_got32:
 	      || is_vxworks_tls)
 	    break;
 
-	  if (GENERATE_DYNAMIC_RELOCATION_P (info, eh, r_type,
+	  if (GENERATE_DYNAMIC_RELOCATION_P (info, eh, r_type, sec,
 					     FALSE, resolved_to_zero,
 					     (r_type == R_386_PC32)))
 	    {
@@ -3409,12 +3409,12 @@ disallow_got32:
 	  return FALSE;
 	}
 
-do_relocation:
+    do_relocation:
       r = _bfd_final_link_relocate (howto, input_bfd, input_section,
 				    contents, rel->r_offset,
 				    relocation, 0);
 
-check_relocation_error:
+    check_relocation_error:
       if (r != bfd_reloc_ok)
 	{
 	  const char *name;
@@ -3588,7 +3588,7 @@ elf_i386_finish_dynamic_symbol (bfd *out
 		      resolved_plt->contents + plt_offset
 		      + htab->plt.plt_got_offset);
 
-	  if (htab->target_os == is_vxworks)
+	  if (htab->elf.target_os == is_vxworks)
 	    {
 	      int s, k, reloc_index;
 
@@ -3848,7 +3848,7 @@ elf_i386_finish_dynamic_symbol (bfd *out
       else
 	{
 	  BFD_ASSERT((h->got.offset & 1) == 0);
-do_glob_dat:
+	do_glob_dat:
 	  bfd_put_32 (output_bfd, (bfd_vma) 0,
 		      htab->elf.sgot->contents + h->got.offset);
 	  rel.r_info = ELF32_R_INFO (h->dynindx, R_386_GLOB_DAT);
@@ -4006,7 +4006,7 @@ elf_i386_finish_dynamic_sections (bfd *o
 			  htab->elf.splt->contents
 			  + htab->lazy_plt->plt0_got2_offset);
 
-	      if (htab->target_os == is_vxworks)
+	      if (htab->elf.target_os == is_vxworks)
 		{
 		  Elf_Internal_Rela rel;
 		  int num_plts = (htab->elf.splt->size
@@ -4097,9 +4097,6 @@ elf_i386_output_arch_local_syms
   return TRUE;
 }
 
-/* Forward declaration.  */
-static const struct elf_x86_lazy_plt_layout elf_i386_nacl_plt;
-
 /* Similar to _bfd_elf_get_synthetic_symtab.  Support PLTs with all
    dynamic relocations.   */
 
@@ -4147,7 +4144,7 @@ elf_i386_get_synthetic_symtab (bfd *abfd
   lazy_plt = NULL;
   non_lazy_ibt_plt = NULL;
   lazy_ibt_plt = NULL;
-  switch (get_elf_x86_backend_data (abfd)->target_os)
+  switch (get_elf_backend_data (abfd)->target_os)
     {
     case is_normal:
     case is_solaris:
@@ -4158,9 +4155,8 @@ elf_i386_get_synthetic_symtab (bfd *abfd
     case is_vxworks:
       lazy_plt = &elf_i386_lazy_plt;
       break;
-    case is_nacl:
-      lazy_plt = &elf_i386_nacl_plt;
-      break;
+    default:
+      abort ();
     }
 
   got_addr = 0;
@@ -4307,7 +4303,7 @@ elf_i386_link_setup_gnu_properties (stru
 {
   struct elf_x86_init_table init_table;
 
-  switch (get_elf_x86_backend_data (info->output_bfd)->target_os)
+  switch (get_elf_backend_data (info->output_bfd)->target_os)
     {
     case is_normal:
     case is_solaris:
@@ -4324,13 +4320,8 @@ elf_i386_link_setup_gnu_properties (stru
       init_table.lazy_ibt_plt = NULL;
       init_table.non_lazy_ibt_plt = NULL;
       break;
-    case is_nacl:
-      init_table.plt0_pad_byte = 0x90;
-      init_table.lazy_plt = &elf_i386_nacl_plt;
-      init_table.non_lazy_plt = NULL;
-      init_table.lazy_ibt_plt = NULL;
-      init_table.non_lazy_ibt_plt = NULL;
-      break;
+    default:
+      abort ();
     }
 
   init_table.r_info = elf32_r_info;
@@ -4434,13 +4425,8 @@ elf_i386_fbsd_init_file_header (bfd *abf
 #undef	TARGET_LITTLE_NAME
 #define	TARGET_LITTLE_NAME		"elf32-i386-sol2"
 
-static const struct elf_x86_backend_data elf_i386_solaris_arch_bed =
-  {
-    is_solaris				/* os */
-  };
-
-#undef	elf_backend_arch_data
-#define	elf_backend_arch_data		&elf_i386_solaris_arch_bed
+#undef	ELF_TARGET_OS
+#define	ELF_TARGET_OS			is_solaris
 
 /* Restore default: we cannot use ELFOSABI_SOLARIS, otherwise ELFOSABI_NONE
    objects won't be recognized.  */
@@ -4566,9 +4552,7 @@ elf32_iamcu_elf_object_p (bfd *abfd)
 #undef	ELF_MACHINE_CODE
 #define	ELF_MACHINE_CODE		EM_IAMCU
 
-#undef	elf_backend_arch_data
-#define	elf_backend_arch_data		&elf_i386_arch_bed
-
+#undef	ELF_TARGET_OS
 #undef	ELF_OSABI
 
 #undef  elf32_bed
@@ -4592,201 +4576,7 @@ elf32_iamcu_elf_object_p (bfd *abfd)
 #define ELF_ARCH			bfd_arch_i386
 #undef	ELF_MACHINE_CODE
 #define ELF_MACHINE_CODE		EM_386
-
-/* Native Client support.  */
-
-#undef	TARGET_LITTLE_SYM
-#define	TARGET_LITTLE_SYM		i386_elf32_nacl_vec
-#undef	TARGET_LITTLE_NAME
-#define	TARGET_LITTLE_NAME		"elf32-i386-nacl"
-#undef	elf32_bed
-#define	elf32_bed			elf32_i386_nacl_bed
-
-#undef	ELF_MAXPAGESIZE
-#define	ELF_MAXPAGESIZE			0x10000
-
-/* Restore defaults.  */
-#undef	ELF_OSABI
-#undef	elf_backend_want_plt_sym
-#define elf_backend_want_plt_sym	0
-#undef	elf_backend_static_tls_alignment
-
-/* NaCl uses substantially different PLT entries for the same effects.  */
-
-#undef	elf_backend_plt_alignment
-#define elf_backend_plt_alignment	5
-#define NACL_PLT_ENTRY_SIZE		64
-#define	NACLMASK			0xe0 /* 32-byte alignment mask.  */
-
-static const bfd_byte elf_i386_nacl_plt0_entry[] =
-  {
-    0xff, 0x35,			  /* pushl contents of address */
-    0, 0, 0, 0,			  /* replaced with address of .got + 4.  */
-    0x8b, 0x0d,			  /* movl contents of address, %ecx */
-    0, 0, 0, 0,			  /* replaced with address of .got + 8.  */
-    0x83, 0xe1, NACLMASK,	  /* andl $NACLMASK, %ecx */
-    0xff, 0xe1			  /* jmp *%ecx */
-  };
-
-static const bfd_byte elf_i386_nacl_plt_entry[NACL_PLT_ENTRY_SIZE] =
-  {
-    0x8b, 0x0d,				/* movl contents of address, %ecx */
-    0, 0, 0, 0,				/* replaced with GOT slot address.  */
-    0x83, 0xe1, NACLMASK,		/* andl $NACLMASK, %ecx */
-    0xff, 0xe1,				/* jmp *%ecx */
-
-    /* Pad to the next 32-byte boundary with nop instructions.  */
-    0x90,
-    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-
-    /* Lazy GOT entries point here (32-byte aligned).  */
-    0x68,			       /* pushl immediate */
-    0, 0, 0, 0,			       /* replaced with reloc offset.  */
-    0xe9,			       /* jmp relative */
-    0, 0, 0, 0,			       /* replaced with offset to .plt.  */
-
-    /* Pad to the next 32-byte boundary with nop instructions.  */
-    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-    0x90, 0x90
-  };
-
-static const bfd_byte
-elf_i386_nacl_pic_plt0_entry[sizeof (elf_i386_nacl_plt0_entry)] =
-  {
-    0xff, 0x73, 0x04,		/* pushl 4(%ebx) */
-    0x8b, 0x4b, 0x08,		/* mov 0x8(%ebx), %ecx */
-    0x83, 0xe1, 0xe0,		/* and $NACLMASK, %ecx */
-    0xff, 0xe1,			/* jmp *%ecx */
-
-    /* This is expected to be the same size as elf_i386_nacl_plt0_entry,
-       so pad to that size with nop instructions.  */
-    0x90, 0x90, 0x90, 0x90, 0x90, 0x90
-  };
-
-static const bfd_byte elf_i386_nacl_pic_plt_entry[NACL_PLT_ENTRY_SIZE] =
-  {
-    0x8b, 0x8b,		 /* movl offset(%ebx), %ecx */
-    0, 0, 0, 0,		 /* replaced with offset of this symbol in .got.  */
-    0x83, 0xe1, 0xe0,	 /* andl $NACLMASK, %ecx */
-    0xff, 0xe1,		 /* jmp *%ecx */
-
-    /* Pad to the next 32-byte boundary with nop instructions.  */
-    0x90,
-    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-
-    /* Lazy GOT entries point here (32-byte aligned).  */
-    0x68,		 /* pushl immediate */
-    0, 0, 0, 0,		 /* replaced with offset into relocation table.  */
-    0xe9,		 /* jmp relative */
-    0, 0, 0, 0,		 /* replaced with offset to start of .plt.  */
-
-    /* Pad to the next 32-byte boundary with nop instructions.  */
-    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
-    0x90, 0x90
-  };
-
-static const bfd_byte elf_i386_nacl_eh_frame_plt[] =
-  {
-#if (PLT_CIE_LENGTH != 20				\
-     || PLT_FDE_LENGTH != 36				\
-     || PLT_FDE_START_OFFSET != 4 + PLT_CIE_LENGTH + 8	\
-     || PLT_FDE_LEN_OFFSET != 4 + PLT_CIE_LENGTH + 12)
-# error "Need elf_x86_backend_data parameters for eh_frame_plt offsets!"
-#endif
-    PLT_CIE_LENGTH, 0, 0, 0,		/* CIE length */
-    0, 0, 0, 0,				/* CIE ID */
-    1,					/* CIE version */
-    'z', 'R', 0,			/* Augmentation string */
-    1,					/* Code alignment factor */
-    0x7c,				/* Data alignment factor: -4 */
-    8,					/* Return address column */
-    1,					/* Augmentation size */
-    DW_EH_PE_pcrel | DW_EH_PE_sdata4,	/* FDE encoding */
-    DW_CFA_def_cfa, 4, 4,		/* DW_CFA_def_cfa: r4 (esp) ofs 4 */
-    DW_CFA_offset + 8, 1,		/* DW_CFA_offset: r8 (eip) at cfa-4 */
-    DW_CFA_nop, DW_CFA_nop,
-
-    PLT_FDE_LENGTH, 0, 0, 0,	 /* FDE length */
-    PLT_CIE_LENGTH + 8, 0, 0, 0, /* CIE pointer */
-    0, 0, 0, 0,			 /* R_386_PC32 .plt goes here */
-    0, 0, 0, 0,			 /* .plt size goes here */
-    0,				 /* Augmentation size */
-    DW_CFA_def_cfa_offset, 8,	 /* DW_CFA_def_cfa_offset: 8 */
-    DW_CFA_advance_loc + 6,	 /* DW_CFA_advance_loc: 6 to __PLT__+6 */
-    DW_CFA_def_cfa_offset, 12,	 /* DW_CFA_def_cfa_offset: 12 */
-    DW_CFA_advance_loc + 58,	 /* DW_CFA_advance_loc: 58 to __PLT__+64 */
-    DW_CFA_def_cfa_expression,	 /* DW_CFA_def_cfa_expression */
-    13,				 /* Block length */
-    DW_OP_breg4, 4,		 /* DW_OP_breg4 (esp): 4 */
-    DW_OP_breg8, 0,		 /* DW_OP_breg8 (eip): 0 */
-    DW_OP_const1u, 63, DW_OP_and, DW_OP_const1u, 37, DW_OP_ge,
-    DW_OP_lit2, DW_OP_shl, DW_OP_plus,
-    DW_CFA_nop, DW_CFA_nop
-  };
-
-static const struct elf_x86_lazy_plt_layout elf_i386_nacl_plt =
-  {
-    elf_i386_nacl_plt0_entry,		/* plt0_entry */
-    sizeof (elf_i386_nacl_plt0_entry),	/* plt0_entry_size */
-    elf_i386_nacl_plt_entry,		/* plt_entry */
-    NACL_PLT_ENTRY_SIZE,		/* plt_entry_size */
-    NULL,				/* plt_tlsdesc_entry */
-    0,					/* plt_tlsdesc_entry_size*/
-    0,					/* plt_tlsdesc_got1_offset */
-    0,					/* plt_tlsdesc_got2_offset */
-    0,					/* plt_tlsdesc_got1_insn_end */
-    0,					/* plt_tlsdesc_got2_insn_end */
-    2,					/* plt0_got1_offset */
-    8,					/* plt0_got2_offset */
-    0,					/* plt0_got2_insn_end */
-    2,					/* plt_got_offset */
-    33,					/* plt_reloc_offset */
-    38,					/* plt_plt_offset */
-    0,					/* plt_got_insn_size */
-    0,					/* plt_plt_insn_end */
-    32,					/* plt_lazy_offset */
-    elf_i386_nacl_pic_plt0_entry,	/* pic_plt0_entry */
-    elf_i386_nacl_pic_plt_entry,	/* pic_plt_entry */
-    elf_i386_nacl_eh_frame_plt,		/* eh_frame_plt */
-    sizeof (elf_i386_nacl_eh_frame_plt) /* eh_frame_plt_size */
-  };
-
-static const struct elf_x86_backend_data elf_i386_nacl_arch_bed =
-  {
-    is_nacl				/* os */
-  };
-
-static bfd_boolean
-elf32_i386_nacl_elf_object_p (bfd *abfd)
-{
-  /* Set the right machine number for a NaCl i386 ELF32 file.  */
-  bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_i386_i386_nacl);
-  return TRUE;
-}
-
-#undef	elf_backend_arch_data
-#define elf_backend_arch_data	&elf_i386_nacl_arch_bed
-
-#undef	elf_backend_object_p
-#define elf_backend_object_p			elf32_i386_nacl_elf_object_p
-#undef	elf_backend_modify_segment_map
-#define	elf_backend_modify_segment_map		nacl_modify_segment_map
-#undef	elf_backend_modify_headers
-#define	elf_backend_modify_headers		nacl_modify_headers
-#undef	elf_backend_final_write_processing
-#define elf_backend_final_write_processing	nacl_final_write_processing
-
-#include "elf32-target.h"
-
-/* Restore defaults.  */
 #undef	elf_backend_object_p
-#undef	elf_backend_modify_segment_map
-#undef	elf_backend_modify_headers
-#undef	elf_backend_final_write_processing
 
 /* VxWorks support.  */
 
@@ -4800,13 +4590,8 @@ elf32_i386_nacl_elf_object_p (bfd *abfd)
 #undef	elf_backend_plt_alignment
 #define elf_backend_plt_alignment	4
 
-static const struct elf_x86_backend_data elf_i386_vxworks_arch_bed =
-  {
-    is_vxworks				/* os */
-  };
-
-#undef	elf_backend_arch_data
-#define	elf_backend_arch_data	&elf_i386_vxworks_arch_bed
+#undef	ELF_TARGET_OS
+#define ELF_TARGET_OS		is_vxworks
 
 #undef elf_backend_relocs_compatible
 #undef elf_backend_add_symbol_hook
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-ip2k.c ./bfd/elf32-ip2k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-ip2k.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-ip2k.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Ubicom IP2xxx specific support for 32-bit ELF
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -638,8 +638,7 @@ adjust_all_relocations (bfd *abfd,
 	{
 	  if (!bfd_malloc_and_get_section (abfd, stab, &stabcontents))
 	    {
-	      if (stabcontents != NULL)
-		free (stabcontents);
+	      free (stabcontents);
 	      return;
 	    }
 
@@ -1210,21 +1209,17 @@ ip2k_elf_relax_section (bfd *abfd,
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-iq2000.c ./bfd/elf32-iq2000.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-iq2000.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-iq2000.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* IQ2000-specific support for 32-bit ELF.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-lm32.c ./bfd/elf32-lm32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-lm32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-lm32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Lattice Mico32-specific support for 32-bit ELF
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2020 Free Software Foundation, Inc.
    Contributed by Jon Beniston <jon@beniston.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -50,16 +50,6 @@ extern const bfd_target lm32_elf32_fdpic
 static bfd_reloc_status_type lm32_elf_gprel_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 
-/* lm32 ELF linker hash entry.  */
-
-struct elf_lm32_link_hash_entry
-{
-  struct elf_link_hash_entry root;
-
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-};
-
 /* lm32 ELF linker hash table.  */
 
 struct elf_lm32_link_hash_table
@@ -77,8 +67,9 @@ struct elf_lm32_link_hash_table
 /* Get the lm32 ELF linker hash table from a link_info structure.  */
 
 #define lm32_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == LM32_ELF_DATA ? ((struct elf_lm32_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == LM32_ELF_DATA)		\
+   ? (struct elf_lm32_link_hash_table *) (p)->hash : NULL)
 
 #define lm32fdpic_got_section(info) \
   (lm32_elf_hash_table (info)->root.sgot)
@@ -93,54 +84,21 @@ struct weak_symbol_list
   struct weak_symbol_list *next;
 };
 
-/* Create an entry in an lm32 ELF linker hash table.  */
-
-static struct bfd_hash_entry *
-lm32_elf_link_hash_newfunc (struct bfd_hash_entry *entry,
-			    struct bfd_hash_table *table,
-			    const char *string)
-{
-  struct elf_lm32_link_hash_entry *ret =
-    (struct elf_lm32_link_hash_entry *) entry;
-
-  /* Allocate the structure if it has not already been allocated by a
-     subclass.  */
-  if (ret == NULL)
-    ret = bfd_hash_allocate (table,
-			     sizeof (struct elf_lm32_link_hash_entry));
-  if (ret == NULL)
-    return NULL;
-
-  /* Call the allocation method of the superclass.  */
-  ret = ((struct elf_lm32_link_hash_entry *)
-	 _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
-				     table, string));
-  if (ret != NULL)
-    {
-      struct elf_lm32_link_hash_entry *eh;
-
-      eh = (struct elf_lm32_link_hash_entry *) ret;
-      eh->dyn_relocs = NULL;
-    }
-
-  return (struct bfd_hash_entry *) ret;
-}
-
 /* Create an lm32 ELF linker hash table.  */
 
 static struct bfd_link_hash_table *
 lm32_elf_link_hash_table_create (bfd *abfd)
 {
   struct elf_lm32_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_lm32_link_hash_table);
+  size_t amt = sizeof (struct elf_lm32_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
     return NULL;
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
-				      lm32_elf_link_hash_newfunc,
-				      sizeof (struct elf_lm32_link_hash_entry),
+				      _bfd_elf_link_hash_newfunc,
+				      sizeof (struct elf_link_hash_entry),
 				      LM32_ELF_DATA))
     {
       free (ret);
@@ -1171,15 +1129,6 @@ lm32_elf_check_relocs (bfd *abfd,
   if (bfd_link_relocatable (info))
     return TRUE;
 
-  /* Don't do anything special with non-loaded, non-alloced sections.
-     In particular, any relocs in such sections should not affect GOT
-     and PLT reference counting (ie. we don't allow them to create GOT
-     or PLT entries), there's no possibility or desire to optimize TLS
-     relocs, and there's not much point in propagating relocs to shared
-     libs that the dynamic linker won't relocate.  */
-  if ((sec->flags & SEC_ALLOC) == 0)
-    return TRUE;
-
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
   sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof (Elf32_External_Sym);
@@ -1642,24 +1591,6 @@ lm32_elf_reloc_type_class (const struct
     }
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-  struct elf_lm32_link_hash_entry *eh = (struct elf_lm32_link_hash_entry *) h;
-
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -1746,7 +1677,7 @@ lm32_elf_adjust_dynamic_symbol (struct b
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (0 && !readonly_dynrelocs (h))
+  if (0 && !_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -1794,7 +1725,6 @@ allocate_dynrelocs (struct elf_link_hash
 {
   struct bfd_link_info *info;
   struct elf_lm32_link_hash_table *htab;
-  struct elf_lm32_link_hash_entry *eh;
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
@@ -1805,8 +1735,6 @@ allocate_dynrelocs (struct elf_link_hash
   if (htab == NULL)
     return FALSE;
 
-  eh = (struct elf_lm32_link_hash_entry *) h;
-
   if (htab->root.dynamic_sections_created
       && h->plt.refcount > 0)
     {
@@ -1889,7 +1817,7 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -1906,7 +1834,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL;)
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL;)
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -1919,11 +1847,11 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -1963,13 +1891,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * sizeof (Elf32_External_Rela);
@@ -1978,33 +1906,6 @@ allocate_dynrelocs (struct elf_link_hash
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -2160,52 +2061,8 @@ lm32_elf_size_dynamic_sections (bfd *out
 	return FALSE;
     }
 
-  if (htab->root.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in lm32_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-     if (bfd_link_executable (info))
-	{
-	  if (! add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->root.splt->size != 0)
-	{
-	  if (! add_dynamic_entry (DT_PLTGOT, 0)
-	      || ! add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || ! add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || ! add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (! add_dynamic_entry (DT_RELA, 0)
-	      || ! add_dynamic_entry (DT_RELASZ, 0)
-	      || ! add_dynamic_entry (DT_RELAENT,
-				      sizeof (Elf32_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->root, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (! add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
-    }
-#undef add_dynamic_entry
+  if (!_bfd_elf_add_dynamic_tags (output_bfd, info, relocs))
+    return FALSE;
 
   /* Allocate .rofixup section.  */
   if (IS_FDPIC (output_bfd))
@@ -2454,53 +2311,6 @@ lm32_elf_create_dynamic_sections (bfd *a
   return TRUE;
 }
 
-/* Copy the extra info we tack onto an elf_link_hash_entry.  */
-
-static void
-lm32_elf_copy_indirect_symbol (struct bfd_link_info *info,
-			       struct elf_link_hash_entry *dir,
-			       struct elf_link_hash_entry *ind)
-{
-  struct elf_lm32_link_hash_entry * edir;
-  struct elf_lm32_link_hash_entry * eind;
-
-  edir = (struct elf_lm32_link_hash_entry *) dir;
-  eind = (struct elf_lm32_link_hash_entry *) ind;
-
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL;)
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
-  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
-}
-
 static bfd_boolean
 lm32_elf_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
@@ -2588,7 +2398,6 @@ lm32_elf_fdpic_copy_private_bfd_data (bf
 #define bfd_elf32_bfd_link_hash_table_create	lm32_elf_link_hash_table_create
 #define elf_backend_check_relocs		lm32_elf_check_relocs
 #define elf_backend_reloc_type_class		lm32_elf_reloc_type_class
-#define elf_backend_copy_indirect_symbol	lm32_elf_copy_indirect_symbol
 #define elf_backend_size_dynamic_sections	lm32_elf_size_dynamic_sections
 #define elf_backend_omit_section_dynsym		_bfd_elf_omit_section_dynsym_all
 #define elf_backend_create_dynamic_sections	lm32_elf_create_dynamic_sections
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m32c.c ./bfd/elf32-m32c.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m32c.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-m32c.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* M16C/M32C specific support for 32-bit ELF.
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -1284,7 +1284,7 @@ static bfd_vma
 m32c_offset_for_reloc (bfd *abfd,
 		       Elf_Internal_Rela *rel,
 		       Elf_Internal_Shdr *symtab_hdr,
-		       Elf_External_Sym_Shndx *shndx_buf ATTRIBUTE_UNUSED,
+		       bfd_byte *shndx_buf ATTRIBUTE_UNUSED,
 		       Elf_Internal_Sym *intsyms)
 {
   bfd_vma symval;
@@ -1442,10 +1442,11 @@ m32c_elf_relax_section
   bfd_byte * free_contents = NULL;
   Elf_Internal_Sym *intsyms = NULL;
   Elf_Internal_Sym *free_intsyms = NULL;
-  Elf_External_Sym_Shndx *shndx_buf = NULL;
+  bfd_byte *shndx_buf = NULL;
   int machine;
 
-  if (abfd == elf_hash_table (link_info)->dynobj
+  if (is_elf_hash_table (link_info->hash)
+      && abfd == elf_hash_table (link_info)->dynobj
       && (sec->flags & SEC_LINKER_CREATED) != 0
       && strcmp (sec->name, ".plt") == 0)
     return m32c_elf_relax_plt_section (sec, link_info, again);
@@ -1491,17 +1492,20 @@ m32c_elf_relax_section
 
   if (shndx_hdr && shndx_hdr->sh_size != 0)
     {
-      bfd_size_type amt;
+      size_t amt;
 
-      amt = symtab_hdr->sh_info;
-      amt *= sizeof (Elf_External_Sym_Shndx);
-      shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt);
-      if (shndx_buf == NULL)
+      if (_bfd_mul_overflow (symtab_hdr->sh_info,
+			     sizeof (Elf_External_Sym_Shndx), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  goto error_return;
+	}
+      if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0)
 	goto error_return;
-      if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0
-	  || bfd_bread (shndx_buf, amt, abfd) != amt)
+      shndx_buf = _bfd_malloc_and_read (abfd, amt, amt);
+      if (shndx_buf == NULL)
 	goto error_return;
-      shndx_hdr->contents = (bfd_byte *) shndx_buf;
+      shndx_hdr->contents = shndx_buf;
     }
 
   /* Get a copy of the native relocations.  */
@@ -1898,11 +1902,8 @@ m32c_elf_relax_section
 
     } /* next relocation */
 
-  if (free_relocs != NULL)
-    {
-      free (free_relocs);
-      free_relocs = NULL;
-    }
+  free (free_relocs);
+  free_relocs = NULL;
 
   if (free_contents != NULL)
     {
@@ -1928,7 +1929,7 @@ m32c_elf_relax_section
       /* Cache the symbols for elf_link_input_bfd.  */
       else
 	{
-	symtab_hdr->contents = NULL /* (unsigned char *) intsyms*/;
+	  symtab_hdr->contents = NULL /* (unsigned char *) intsyms*/;
 	}
 
       free_intsyms = NULL;
@@ -1937,17 +1938,14 @@ m32c_elf_relax_section
   return TRUE;
 
  error_return:
-  if (free_relocs != NULL)
-    free (free_relocs);
-  if (free_contents != NULL)
-    free (free_contents);
+  free (free_relocs);
+  free (free_contents);
   if (shndx_buf != NULL)
     {
       shndx_hdr->contents = NULL;
       free (shndx_buf);
     }
-  if (free_intsyms != NULL)
-    free (free_intsyms);
+  free (free_intsyms);
   return FALSE;
 }
 
@@ -2075,7 +2073,6 @@ m32c_elf_relax_delete_bytes
   symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)
 	      - symtab_hdr->sh_info);
   sym_hashes = elf_sym_hashes (abfd);
-  //  sym_hashes += symtab_hdr->sh_info;
   end_hashes = sym_hashes + symcount;
 
   for (; sym_hashes < end_hashes; sym_hashes ++)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m32r.c ./bfd/elf32-m32r.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m32r.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-m32r.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* M32R-specific support for 32-bit ELF.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -1354,7 +1354,7 @@ _bfd_m32r_elf_symbol_processing (bfd *ab
 	{
 	  /* Initialize the small common section.  */
 	  m32r_elf_scom_section.name = ".scommon";
-	  m32r_elf_scom_section.flags = SEC_IS_COMMON;
+	  m32r_elf_scom_section.flags = SEC_IS_COMMON | SEC_SMALL_DATA;
 	  m32r_elf_scom_section.output_section = &m32r_elf_scom_section;
 	  m32r_elf_scom_section.symbol = &m32r_elf_scom_symbol;
 	  m32r_elf_scom_section.symbol_ptr_ptr = &m32r_elf_scom_symbol_ptr;
@@ -1434,7 +1434,7 @@ m32r_elf_add_symbol_hook (bfd *abfd,
     {
     case SHN_M32R_SCOMMON:
       *secp = bfd_make_section_old_way (abfd, ".scommon");
-      (*secp)->flags |= SEC_IS_COMMON;
+      (*secp)->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
       *valp = sym->st_size;
       break;
     }
@@ -1498,30 +1498,6 @@ struct elf_m32r_pcrel_relocs_copied
   bfd_size_type count;
 };
 
-/* m32r ELF linker hash entry.  */
-
-struct elf_m32r_link_hash_entry
-{
-  struct elf_link_hash_entry root;
-
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-};
-
-/* m32r ELF linker hash table.  */
-
-struct elf_m32r_link_hash_table
-{
-  struct elf_link_hash_table root;
-
-  /* Short-cuts to get to dynamic linker sections.  */
-  asection *sdynbss;
-  asection *srelbss;
-
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-};
-
 /* Traverse an m32r ELF linker hash table.  */
 
 #define m32r_elf_link_hash_traverse(table, func, info)			\
@@ -1533,64 +1509,32 @@ struct elf_m32r_link_hash_table
 /* Get the m32r ELF linker hash table from a link_info structure.  */
 
 #define m32r_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == M32R_ELF_DATA ? ((struct elf_m32r_link_hash_table *) ((p)->hash)) : NULL)
-
-/* Create an entry in an m32r ELF linker hash table.  */
-
-static struct bfd_hash_entry *
-m32r_elf_link_hash_newfunc (struct bfd_hash_entry *entry,
-			    struct bfd_hash_table *table,
-			    const char *string)
-{
-  struct elf_m32r_link_hash_entry *ret =
-    (struct elf_m32r_link_hash_entry *) entry;
-
-  /* Allocate the structure if it has not already been allocated by a
-     subclass.  */
-  if (ret == NULL)
-    ret = bfd_hash_allocate (table,
-			     sizeof (struct elf_m32r_link_hash_entry));
-  if (ret == NULL)
-    return NULL;
-
-  /* Call the allocation method of the superclass.  */
-  ret = ((struct elf_m32r_link_hash_entry *)
-	 _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
-				     table, string));
-  if (ret != NULL)
-    {
-      struct elf_m32r_link_hash_entry *eh;
-
-      eh = (struct elf_m32r_link_hash_entry *) ret;
-      eh->dyn_relocs = NULL;
-    }
-
-  return (struct bfd_hash_entry *) ret;
-}
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == M32R_ELF_DATA)		\
+   ? (struct elf_link_hash_table *) (p)->hash : NULL)
 
 /* Create an m32r ELF linker hash table.  */
 
 static struct bfd_link_hash_table *
 m32r_elf_link_hash_table_create (bfd *abfd)
 {
-  struct elf_m32r_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_m32r_link_hash_table);
+  struct elf_link_hash_table *ret;
+  size_t amt = sizeof (struct elf_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
     return NULL;
 
-  if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
-				      m32r_elf_link_hash_newfunc,
-				      sizeof (struct elf_m32r_link_hash_entry),
+  if (!_bfd_elf_link_hash_table_init (ret, abfd,
+				      _bfd_elf_link_hash_newfunc,
+				      sizeof (struct elf_link_hash_entry),
 				      M32R_ELF_DATA))
     {
       free (ret);
       return NULL;
     }
 
-  return &ret->root.root;
+  return &ret->root;
 }
 
 /* Create dynamic sections when linking against a dynamic object.  */
@@ -1598,7 +1542,7 @@ m32r_elf_link_hash_table_create (bfd *ab
 static bfd_boolean
 m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
-  struct elf_m32r_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   flagword flags, pltflags;
   asection *s;
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
@@ -1621,7 +1565,7 @@ m32r_elf_create_dynamic_sections (bfd *a
     pltflags |= SEC_READONLY;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
-  htab->root.splt = s;
+  htab->splt = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->plt_alignment))
     return FALSE;
@@ -1641,7 +1585,7 @@ m32r_elf_create_dynamic_sections (bfd *a
       h = (struct elf_link_hash_entry *) bh;
       h->def_regular = 1;
       h->type = STT_OBJECT;
-      htab->root.hplt = h;
+      htab->hplt = h;
 
       if (bfd_link_pic (info)
 	  && ! bfd_elf_link_record_dynamic_symbol (info, h))
@@ -1652,12 +1596,12 @@ m32r_elf_create_dynamic_sections (bfd *a
 					  bed->default_use_rela_p
 					  ? ".rela.plt" : ".rel.plt",
 					  flags | SEC_READONLY);
-  htab->root.srelplt = s;
+  htab->srelplt = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, ptralign))
     return FALSE;
 
-  if (htab->root.sgot == NULL
+  if (htab->sgot == NULL
       && !_bfd_elf_create_got_section (abfd, info))
     return FALSE;
 
@@ -1701,72 +1645,7 @@ m32r_elf_create_dynamic_sections (bfd *a
   return TRUE;
 }
 
-/* Copy the extra info we tack onto an elf_link_hash_entry.  */
-
-static void
-m32r_elf_copy_indirect_symbol (struct bfd_link_info *info,
-			       struct elf_link_hash_entry *dir,
-			       struct elf_link_hash_entry *ind)
-{
-  struct elf_m32r_link_hash_entry * edir;
-  struct elf_m32r_link_hash_entry * eind;
-
-  edir = (struct elf_m32r_link_hash_entry *) dir;
-  eind = (struct elf_m32r_link_hash_entry *) ind;
-
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL;)
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
-  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
-}
-
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-  struct elf_m32r_link_hash_entry *eh = (struct elf_m32r_link_hash_entry *) h;
-
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -1777,7 +1656,7 @@ static bfd_boolean
 m32r_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				struct elf_link_hash_entry *h)
 {
-  struct elf_m32r_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
 
@@ -1857,7 +1736,7 @@ m32r_elf_adjust_dynamic_symbol (struct b
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (0 && !readonly_dynrelocs (h))
+  if (0 && !_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -1904,8 +1783,7 @@ static bfd_boolean
 allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
 {
   struct bfd_link_info *info;
-  struct elf_m32r_link_hash_table *htab;
-  struct elf_m32r_link_hash_entry *eh;
+  struct elf_link_hash_table *htab;
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
@@ -1916,9 +1794,7 @@ allocate_dynrelocs (struct elf_link_hash
   if (htab == NULL)
     return FALSE;
 
-  eh = (struct elf_m32r_link_hash_entry *) h;
-
-  if (htab->root.dynamic_sections_created
+  if (htab->dynamic_sections_created
       && h->plt.refcount > 0)
     {
       /* Make sure this symbol is output as a dynamic symbol.
@@ -1932,7 +1808,7 @@ allocate_dynrelocs (struct elf_link_hash
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
 	{
-	  asection *s = htab->root.splt;
+	  asection *s = htab->splt;
 
 	  /* If this is the first .plt entry, make room for the special
 	     first entry.  */
@@ -1958,10 +1834,10 @@ allocate_dynrelocs (struct elf_link_hash
 
 	  /* We also need to make an entry in the .got.plt section, which
 	     will be placed in the .got section by the linker script.  */
-	  htab->root.sgotplt->size += 4;
+	  htab->sgotplt->size += 4;
 
 	  /* We also need to make an entry in the .rel.plt section.  */
-	  htab->root.srelplt->size += sizeof (Elf32_External_Rela);
+	  htab->srelplt->size += sizeof (Elf32_External_Rela);
 	}
       else
 	{
@@ -1989,18 +1865,18 @@ allocate_dynrelocs (struct elf_link_hash
 	    return FALSE;
 	}
 
-      s = htab->root.sgot;
+      s = htab->sgot;
 
       h->got.offset = s->size;
       s->size += 4;
-      dyn = htab->root.dynamic_sections_created;
+      dyn = htab->dynamic_sections_created;
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h))
-	htab->root.srelgot->size += sizeof (Elf32_External_Rela);
+	htab->srelgot->size += sizeof (Elf32_External_Rela);
     }
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -2017,7 +1893,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL;)
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL;)
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -2030,11 +1906,11 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -2055,7 +1931,7 @@ allocate_dynrelocs (struct elf_link_hash
       if (!h->non_got_ref
 	  && ((h->def_dynamic
 	       && !h->def_regular)
-	      || (htab->root.dynamic_sections_created
+	      || (htab->dynamic_sections_created
 		  && (h->root.type == bfd_link_hash_undefweak
 		      || h->root.type == bfd_link_hash_undefined))))
 	{
@@ -2074,13 +1950,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * sizeof (Elf32_External_Rela);
@@ -2089,40 +1965,13 @@ allocate_dynrelocs (struct elf_link_hash
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
 m32r_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 				struct bfd_link_info *info)
 {
-  struct elf_m32r_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
   bfd_boolean relocs;
@@ -2136,10 +1985,10 @@ m32r_elf_size_dynamic_sections (bfd *out
   if (htab == NULL)
     return FALSE;
 
-  dynobj = htab->root.dynobj;
+  dynobj = htab->dynobj;
   BFD_ASSERT (dynobj != NULL);
 
-  if (htab->root.dynamic_sections_created)
+  if (htab->dynamic_sections_created)
     {
       /* Set the contents of the .interp section to the interpreter.  */
       if (bfd_link_executable (info) && !info->nointerp)
@@ -2198,8 +2047,8 @@ m32r_elf_size_dynamic_sections (bfd *out
       symtab_hdr = &elf_tdata (ibfd)->symtab_hdr;
       locsymcount = symtab_hdr->sh_info;
       end_local_got = local_got + locsymcount;
-      s = htab->root.sgot;
-      srel = htab->root.srelgot;
+      s = htab->sgot;
+      srel = htab->srelgot;
       for (; local_got < end_local_got; ++local_got)
 	{
 	  if (*local_got > 0)
@@ -2216,7 +2065,7 @@ m32r_elf_size_dynamic_sections (bfd *out
 
   /* Allocate global sym .plt and .got entries, and space for global
      sym dynamic relocs.  */
-  elf_link_hash_traverse (&htab->root, allocate_dynrelocs, info);
+  elf_link_hash_traverse (htab, allocate_dynrelocs, info);
 
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
@@ -2226,9 +2075,9 @@ m32r_elf_size_dynamic_sections (bfd *out
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
 
-      if (s == htab->root.splt
-	  || s == htab->root.sgot
-	  || s == htab->root.sgotplt
+      if (s == htab->splt
+	  || s == htab->sgot
+	  || s == htab->sgotplt
 	  || s == htab->sdynbss)
 	{
 	  /* Strip this section if we don't need it; see the
@@ -2236,7 +2085,7 @@ m32r_elf_size_dynamic_sections (bfd *out
 	}
       else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
 	{
-	  if (s->size != 0 && s != htab->root.srelplt)
+	  if (s->size != 0 && s != htab->srelplt)
 	    relocs = TRUE;
 
 	  /* We use the reloc_count field as a counter if we need
@@ -2275,54 +2124,7 @@ m32r_elf_size_dynamic_sections (bfd *out
 	return FALSE;
     }
 
-  if (htab->root.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in m32r_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-     if (bfd_link_executable (info))
-	{
-	  if (! add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->root.splt->size != 0)
-	{
-	  if (! add_dynamic_entry (DT_PLTGOT, 0)
-	      || ! add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || ! add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || ! add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (! add_dynamic_entry (DT_RELA, 0)
-	      || ! add_dynamic_entry (DT_RELASZ, 0)
-	      || ! add_dynamic_entry (DT_RELAENT,
-				      sizeof (Elf32_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->root, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (! add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Relocate an M32R/D ELF section.
@@ -2373,7 +2175,7 @@ m32r_elf_relocate_section (bfd *output_b
   Elf_Internal_Rela *rel, *relend;
   /* Assume success.  */
   bfd_boolean ret = TRUE;
-  struct elf_m32r_link_hash_table *htab = m32r_elf_hash_table (info);
+  struct elf_link_hash_table *htab = m32r_elf_hash_table (info);
   bfd_vma *local_got_offsets;
   asection *sgot, *splt, *sreloc;
   bfd_vma high_address = bfd_get_section_limit (input_bfd, input_section);
@@ -2383,8 +2185,8 @@ m32r_elf_relocate_section (bfd *output_b
 
   local_got_offsets = elf_local_got_offsets (input_bfd);
 
-  sgot = htab->root.sgot;
-  splt = htab->root.splt;
+  sgot = htab->sgot;
+  splt = htab->splt;
   sreloc = NULL;
 
   rel = relocs;
@@ -2480,7 +2282,7 @@ m32r_elf_relocate_section (bfd *output_b
 	      bfd_boolean dyn;
 	      sec = h->root.u.def.section;
 
-	      dyn = htab->root.dynamic_sections_created;
+	      dyn = htab->dynamic_sections_created;
 	      sec = h->root.u.def.section;
 	      if (r_type == R_M32R_GOTPC24
 		  || (r_type == R_M32R_GOTPC_HI_ULO
@@ -2551,12 +2353,12 @@ m32r_elf_relocate_section (bfd *output_b
 		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
 	    ;
 	  else if (!bfd_link_relocatable (info))
-	    (*info->callbacks->undefined_symbol)
-	      (info, h->root.root.string, input_bfd,
-	       input_section, offset,
-	       (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
-		|| ELF_ST_VISIBILITY (h->other)));
-	}
+            info->callbacks->undefined_symbol
+	      (info, h->root.root.string, input_bfd, input_section, offset,
+	       (info->unresolved_syms_in_objects == RM_DIAGNOSE
+		&& !info->warn_unresolved_syms)
+	       || ELF_ST_VISIBILITY (h->other));
+        }
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
@@ -2701,7 +2503,7 @@ m32r_elf_relocate_section (bfd *output_b
 		  off = h->got.offset;
 		  BFD_ASSERT (off != (bfd_vma) -1);
 
-		  dyn = htab->root.dynamic_sections_created;
+		  dyn = htab->dynamic_sections_created;
 		  if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
 							 bfd_link_pic (info),
 							 h)
@@ -2761,7 +2563,7 @@ m32r_elf_relocate_section (bfd *output_b
 
 			  /* We need to generate a R_M32R_RELATIVE reloc
 			     for the dynamic linker.  */
-			  srelgot = htab->root.srelgot;
+			  srelgot = htab->srelgot;
 			  BFD_ASSERT (srelgot != NULL);
 
 			  outrel.r_offset = (sgot->output_section->vma
@@ -3077,7 +2879,7 @@ m32r_elf_finish_dynamic_symbol (bfd *out
 				struct elf_link_hash_entry *h,
 				Elf_Internal_Sym *sym)
 {
-  struct elf_m32r_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   bfd_byte *loc;
 
 #ifdef DEBUG_PIC
@@ -3103,9 +2905,9 @@ m32r_elf_finish_dynamic_symbol (bfd *out
 
       BFD_ASSERT (h->dynindx != -1);
 
-      splt = htab->root.splt;
-      sgot = htab->root.sgotplt;
-      srela = htab->root.srelplt;
+      splt = htab->splt;
+      sgot = htab->sgotplt;
+      srela = htab->srelplt;
       BFD_ASSERT (splt != NULL && sgot != NULL && srela != NULL);
 
       /* Get the index in the procedure linkage table which
@@ -3199,8 +3001,8 @@ m32r_elf_finish_dynamic_symbol (bfd *out
       /* This symbol has an entry in the global offset table.  Set it
 	 up.  */
 
-      sgot = htab->root.sgot;
-      srela = htab->root.srelgot;
+      sgot = htab->sgot;
+      srela = htab->srelgot;
       BFD_ASSERT (sgot != NULL && srela != NULL);
 
       rela.r_offset = (sgot->output_section->vma
@@ -3248,7 +3050,7 @@ m32r_elf_finish_dynamic_symbol (bfd *out
 		  && (h->root.type == bfd_link_hash_defined
 		      || h->root.type == bfd_link_hash_defweak));
 
-      s = bfd_get_linker_section (htab->root.dynobj, ".rela.bss");
+      s = bfd_get_linker_section (htab->dynobj, ".rela.bss");
       BFD_ASSERT (s != NULL);
 
       rela.r_offset = (h->root.u.def.value
@@ -3263,7 +3065,7 @@ m32r_elf_finish_dynamic_symbol (bfd *out
     }
 
   /* Mark some specially defined symbols as absolute.  */
-  if (h == htab->root.hdynamic || h == htab->root.hgot)
+  if (h == htab->hdynamic || h == htab->hgot)
     sym->st_shndx = SHN_ABS;
 
   return TRUE;
@@ -3276,7 +3078,7 @@ static bfd_boolean
 m32r_elf_finish_dynamic_sections (bfd *output_bfd,
 				  struct bfd_link_info *info)
 {
-  struct elf_m32r_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   bfd *dynobj;
   asection *sdyn;
   asection *sgot;
@@ -3289,12 +3091,12 @@ m32r_elf_finish_dynamic_sections (bfd *o
   if (htab == NULL)
     return FALSE;
 
-  dynobj = htab->root.dynobj;
+  dynobj = htab->dynobj;
 
-  sgot = htab->root.sgotplt;
+  sgot = htab->sgotplt;
   sdyn = bfd_get_linker_section (dynobj, ".dynamic");
 
-  if (htab->root.dynamic_sections_created)
+  if (htab->dynamic_sections_created)
     {
       asection *splt;
       Elf32_External_Dyn *dyncon, *dynconend;
@@ -3317,17 +3119,17 @@ m32r_elf_finish_dynamic_sections (bfd *o
 	      break;
 
 	    case DT_PLTGOT:
-	      s = htab->root.sgotplt;
+	      s = htab->sgotplt;
 	      goto get_vma;
 	    case DT_JMPREL:
-	      s = htab->root.srelplt;
+	      s = htab->srelplt;
 	    get_vma:
 	      dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
 
 	    case DT_PLTRELSZ:
-	      s = htab->root.srelplt;
+	      s = htab->srelplt;
 	      dyn.d_un.d_val = s->size;
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
@@ -3335,7 +3137,7 @@ m32r_elf_finish_dynamic_sections (bfd *o
 	}
 
       /* Fill in the first entry in the procedure linkage table.  */
-      splt = htab->root.splt;
+      splt = htab->splt;
       if (splt && splt->size > 0)
 	{
 	  if (bfd_link_pic (info))
@@ -3554,22 +3356,13 @@ m32r_elf_check_relocs (bfd *abfd,
   struct elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel;
   const Elf_Internal_Rela *rel_end;
-  struct elf_m32r_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   bfd *dynobj;
   asection *sreloc;
 
   if (bfd_link_relocatable (info))
     return TRUE;
 
-  /* Don't do anything special with non-loaded, non-alloced sections.
-     In particular, any relocs in such sections should not affect GOT
-     and PLT reference counting (ie. we don't allow them to create GOT
-     or PLT entries), there's no possibility or desire to optimize TLS
-     relocs, and there's not much point in propagating relocs to shared
-     libs that the dynamic linker won't relocate.  */
-  if ((sec->flags & SEC_ALLOC) == 0)
-    return TRUE;
-
   sreloc = NULL;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -3578,7 +3371,7 @@ m32r_elf_check_relocs (bfd *abfd,
   if (htab == NULL)
     return FALSE;
 
-  dynobj = htab->root.dynobj;
+  dynobj = htab->dynobj;
 
   rel_end = relocs + sec->reloc_count;
   for (rel = relocs; rel < rel_end; rel++)
@@ -3600,7 +3393,7 @@ m32r_elf_check_relocs (bfd *abfd,
 	}
 
       /* Some relocs require a global offset table.  */
-      if (htab->root.sgot == NULL)
+      if (htab->sgot == NULL)
 	{
 	  switch (r_type)
 	    {
@@ -3617,7 +3410,7 @@ m32r_elf_check_relocs (bfd *abfd,
 	    case R_M32R_GOTPC_LO:
 	    case R_M32R_GOT24:
 	      if (dynobj == NULL)
-		htab->root.dynobj = dynobj = abfd;
+		htab->dynobj = dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (dynobj, info))
 		return FALSE;
 	      break;
@@ -3734,7 +3527,7 @@ m32r_elf_check_relocs (bfd *abfd,
 	      struct elf_dyn_relocs **head;
 
 	      if (dynobj == NULL)
-		htab->root.dynobj = dynobj = abfd;
+		htab->dynobj = dynobj = abfd;
 
 	      /* When creating a shared object, we must copy these
 		 relocs into the output file.  We create a reloc
@@ -3751,7 +3544,7 @@ m32r_elf_check_relocs (bfd *abfd,
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
-		head = &((struct elf_m32r_link_hash_entry *) h)->dyn_relocs;
+		head = &h->dyn_relocs;
 	      else
 		{
 		  /* Track dynamic relocs needed for local syms too.  */
@@ -3775,7 +3568,7 @@ m32r_elf_check_relocs (bfd *abfd,
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof (*p);
+		  size_t amt = sizeof (*p);
 
 		  p = bfd_alloc (dynobj, amt);
 		  if (p == NULL)
@@ -3827,6 +3620,18 @@ static const struct bfd_elf_special_sect
   { NULL,		      0,  0, 0,		   0 }
 };
 
+static bfd_boolean
+m32r_elf_section_flags (const Elf_Internal_Shdr *hdr)
+{
+  const char *name = hdr->bfd_section->name;
+
+  if (strncmp (name, ".sbss", 5) == 0
+      || strncmp (name, ".sdata", 6) == 0)
+    hdr->bfd_section->flags |= SEC_SMALL_DATA;
+
+  return TRUE;
+}
+
 static enum elf_reloc_type_class
 m32r_elf_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			   const asection *rel_sec ATTRIBUTE_UNUSED,
@@ -3869,7 +3674,6 @@ m32r_elf_reloc_type_class (const struct
 #define elf_backend_adjust_dynamic_symbol	m32r_elf_adjust_dynamic_symbol
 #define elf_backend_finish_dynamic_symbol	m32r_elf_finish_dynamic_symbol
 #define elf_backend_reloc_type_class		m32r_elf_reloc_type_class
-#define elf_backend_copy_indirect_symbol	m32r_elf_copy_indirect_symbol
 
 #define elf_backend_can_gc_sections		1
 /*#if !USE_REL
@@ -3897,6 +3701,7 @@ m32r_elf_reloc_type_class (const struct
 #define bfd_elf32_bfd_set_private_flags		m32r_elf_set_private_flags
 #define bfd_elf32_bfd_print_private_bfd_data	m32r_elf_print_private_bfd_data
 #define elf_backend_special_sections		m32r_elf_special_sections
+#define elf_backend_section_flags		m32r_elf_section_flags
 
 #define elf_backend_linux_prpsinfo32_ugid16	TRUE
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68hc11.c ./bfd/elf32-m68hc11.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68hc11.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-m68hc11.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Motorola 68HC11-specific support for 32-bit ELF
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Contributed by Stephane Carrez (stcarrez@nerim.fr)
    (Heavily copied from the D10V port by Martin Hunt (hunt@cygnus.com))
 
@@ -415,6 +415,14 @@ m68hc11_elf_build_one_stub (struct bfd_h
   stub_entry = (struct elf32_m68hc11_stub_hash_entry *) gen_entry;
   info = (struct bfd_link_info *) in_arg;
 
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (stub_entry->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    stub_entry->target_section);
+
   htab = m68hc11_elf_hash_table (info);
   if (htab == NULL)
     return FALSE;
@@ -1074,11 +1082,8 @@ m68hc11_elf_relax_section (bfd *abfd, as
       prev_insn_group = 0;
     }
 
-  if (free_relocs != NULL)
-    {
-      free (free_relocs);
-      free_relocs = NULL;
-    }
+  free (free_relocs);
+  free_relocs = NULL;
 
   if (free_contents != NULL)
     {
@@ -1107,12 +1112,9 @@ m68hc11_elf_relax_section (bfd *abfd, as
   return TRUE;
 
  error_return:
-  if (free_relocs != NULL)
-    free (free_relocs);
-  if (free_contents != NULL)
-    free (free_contents);
-  if (free_extsyms != NULL)
-    free (free_extsyms);
+  free (free_relocs);
+  free (free_contents);
+  free (free_extsyms);
   return FALSE;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68hc12.c ./bfd/elf32-m68hc12.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68hc12.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-m68hc12.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Motorola 68HC12-specific support for 32-bit ELF
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Contributed by Stephane Carrez (stcarrez@nerim.fr)
    (Heavily copied from the D10V port by Martin Hunt (hunt@cygnus.com))
 
@@ -535,6 +535,14 @@ m68hc12_elf_build_one_stub (struct bfd_h
   stub_entry = (struct elf32_m68hc11_stub_hash_entry *) gen_entry;
   info = (struct bfd_link_info *) in_arg;
 
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (stub_entry->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    stub_entry->target_section);
+
   htab = m68hc11_elf_hash_table (info);
 
   stub_sec = stub_entry->stub_sec;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68hc1x.c ./bfd/elf32-m68hc1x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68hc1x.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-m68hc1x.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Motorola 68HC11/HC12-specific support for 32-bit ELF
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Contributed by Stephane Carrez (stcarrez@nerim.fr)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -77,7 +77,7 @@ struct m68hc11_elf_link_hash_table*
 m68hc11_elf_hash_table_create (bfd *abfd)
 {
   struct m68hc11_elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct m68hc11_elf_link_hash_table);
+  size_t amt = sizeof (struct m68hc11_elf_link_hash_table);
 
   ret = (struct m68hc11_elf_link_hash_table *) bfd_zmalloc (amt);
   if (ret == (struct m68hc11_elf_link_hash_table *) NULL)
@@ -241,7 +241,7 @@ elf32_m68hc11_setup_section_lists (bfd *
   unsigned int top_id, top_index;
   asection *section;
   asection **input_list, **list;
-  bfd_size_type amt;
+  size_t amt;
   asection *text_section;
   struct m68hc11_elf_link_hash_table *htab;
 
@@ -334,7 +334,7 @@ elf32_m68hc11_size_stubs (bfd *output_bf
   asection *section;
   Elf_Internal_Sym *local_syms, **all_local_syms;
   unsigned int bfd_indx, bfd_count;
-  bfd_size_type amt;
+  size_t amt;
   asection *stub_sec;
   struct m68hc11_elf_link_hash_table *htab = m68hc11_elf_hash_table (info);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68hc1x.h ./bfd/elf32-m68hc1x.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68hc1x.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-m68hc1x.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Motorola 68HC11/68HC12-specific support for 32-bit ELF
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
    Contributed by Stephane Carrez (stcarrez@nerim.fr)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -120,9 +120,6 @@ struct m68hc11_elf_link_hash_table
   int top_index;
   asection **input_list;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   bfd_boolean (* size_one_stub)  (struct bfd_hash_entry*, void*);
   bfd_boolean (* build_one_stub) (struct bfd_hash_entry*, void*);
 };
@@ -130,8 +127,9 @@ struct m68hc11_elf_link_hash_table
 /* Get the Sparc64 ELF linker hash table from a link_info structure.  */
 
 #define m68hc11_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == M68HC11_ELF_DATA ? ((struct m68hc11_elf_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == M68HC11_ELF_DATA)	\
+   ? (struct m68hc11_elf_link_hash_table *) (p)->hash : NULL)
 
 /* Create a 68HC11/68HC12 ELF linker hash table.  */
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68k.c ./bfd/elf32-m68k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68k.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-m68k.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Motorola 68k series support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -889,9 +889,6 @@ struct elf_m68k_link_hash_table
 {
   struct elf_link_hash_table root;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* The PLT format used by this link, or NULL if the format has not
      yet been chosen.  */
   const struct elf_m68k_plt_info *plt_info;
@@ -913,8 +910,9 @@ struct elf_m68k_link_hash_table
 /* Get the m68k ELF linker hash table from a link_info structure.  */
 
 #define elf_m68k_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == M68K_ELF_DATA ? ((struct elf_m68k_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == M68K_ELF_DATA)		\
+   ? (struct elf_m68k_link_hash_table *) (p)->hash : NULL)
 
 /* Shortcut to multi-GOT data.  */
 #define elf_m68k_multi_got(INFO) (&elf_m68k_hash_table (INFO)->multi_got_)
@@ -971,7 +969,7 @@ static struct bfd_link_hash_table *
 elf_m68k_link_hash_table_create (bfd *abfd)
 {
   struct elf_m68k_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_m68k_link_hash_table);
+  size_t amt = sizeof (struct elf_m68k_link_hash_table);
 
   ret = (struct elf_m68k_link_hash_table *) bfd_zmalloc (amt);
   if (ret == (struct elf_m68k_link_hash_table *) NULL)
@@ -1122,6 +1120,65 @@ elf32_m68k_set_private_flags (bfd *abfd,
   return TRUE;
 }
 
+/* Merge object attributes from IBFD into OBFD.  Warn if
+   there are conflicting attributes. */
+static bfd_boolean
+m68k_elf_merge_obj_attributes (bfd *ibfd, struct bfd_link_info *info)
+{
+  bfd *obfd = info->output_bfd;
+  obj_attribute *in_attr, *in_attrs;
+  obj_attribute *out_attr, *out_attrs;
+  bfd_boolean ret = TRUE;
+
+  in_attrs = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
+  out_attrs = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU];
+
+  in_attr = &in_attrs[Tag_GNU_M68K_ABI_FP];
+  out_attr = &out_attrs[Tag_GNU_M68K_ABI_FP];
+
+  if (in_attr->i != out_attr->i)
+    {
+      int in_fp = in_attr->i & 3;
+      int out_fp = out_attr->i & 3;
+      static bfd *last_fp;
+
+      if (in_fp == 0)
+	;
+      else if (out_fp == 0)
+	{
+	  out_attr->type = ATTR_TYPE_FLAG_INT_VAL;
+	  out_attr->i ^= in_fp;
+	  last_fp = ibfd;
+	}
+      else if (out_fp == 1 && in_fp == 2)
+	{
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB uses hard float, %pB uses soft float"),
+	     last_fp, ibfd);
+	  ret = FALSE;
+	}
+      else if (out_fp == 2 && in_fp == 1)
+	{
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB uses hard float, %pB uses soft float"),
+	     ibfd, last_fp);
+	  ret = FALSE;
+	}
+    }
+
+  if (!ret)
+    {
+      out_attr->type = ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_ERROR;
+      bfd_set_error (bfd_error_bad_value);
+      return FALSE;
+    }
+
+  /* Merge Tag_compatibility attributes and any common GNU ones.  */
+  return _bfd_elf_merge_object_attributes (ibfd, info);
+}
+
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 static bfd_boolean
@@ -1149,6 +1206,9 @@ elf32_m68k_merge_private_bfd_data (bfd *
 
   bfd_set_arch_mach (obfd, bfd_arch_m68k, arch_info->mach);
 
+  if (!m68k_elf_merge_obj_attributes (ibfd, info))
+    return FALSE;
+
   in_flags = elf_elfheader (ibfd)->e_flags;
   if (!elf_flags_init (obfd))
     {
@@ -2774,7 +2834,7 @@ elf_m68k_check_relocs (bfd *abfd,
 		      void *vpp;
 		      Elf_Internal_Sym *isym;
 
-		      isym = bfd_sym_from_r_symndx (&elf_m68k_hash_table (info)->sym_cache,
+		      isym = bfd_sym_from_r_symndx (&elf_m68k_hash_table (info)->root.sym_cache,
 						    abfd, r_symndx);
 		      if (isym == NULL)
 			return FALSE;
@@ -3052,7 +3112,6 @@ elf_m68k_size_dynamic_sections (bfd *out
 {
   bfd *dynobj;
   asection *s;
-  bfd_boolean plt;
   bfd_boolean relocs;
 
   dynobj = elf_hash_table (info)->dynobj;
@@ -3095,7 +3154,6 @@ elf_m68k_size_dynamic_sections (bfd *out
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  plt = FALSE;
   relocs = FALSE;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
@@ -3111,7 +3169,7 @@ elf_m68k_size_dynamic_sections (bfd *out
       if (strcmp (name, ".plt") == 0)
 	{
 	  /* Remember whether there is a PLT.  */
-	  plt = s->size != 0;
+	  ;
 	}
       else if (CONST_STRNEQ (name, ".rela"))
 	{
@@ -3160,48 +3218,7 @@ elf_m68k_size_dynamic_sections (bfd *out
 	return FALSE;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in elf_m68k_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (plt)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	    return FALSE;
-	}
-
-      if ((info->flags & DF_TEXTREL) != 0)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* This function is called via elf_link_hash_traverse if we are
@@ -4448,18 +4465,16 @@ bfd_m68k_elf32_create_embedded_relocs (b
 	strncpy ((char *) p + 4, targetsec->output_section->name, 8);
     }
 
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (datasec)->relocs != internal_relocs)
+  if (elf_section_data (datasec)->relocs != internal_relocs)
     free (internal_relocs);
   return TRUE;
 
-error_return:
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+ error_return:
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (datasec)->relocs != internal_relocs)
+  if (elf_section_data (datasec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68k.h ./bfd/elf32-m68k.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-m68k.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-m68k.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Motorola 68k series support for 32-bit ELF
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-mcore.c ./bfd/elf32-mcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-mcore.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-mcore.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Motorola MCore specific support for 32-bit ELF
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-mep.c ./bfd/elf32-mep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-mep.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-mep.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* MeP-specific support for 32-bit ELF.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -43,26 +43,26 @@ static reloc_howto_type mep_elf_howto_ta
   MEPREL (R_RELC,	  0,  0, 0, 0, 0, N, 0),
   /* MEPRELOC:HOWTO */
     /* This section generated from bfd/mep-relocs.pl from include/elf/mep.h.  */
-  MEPREL (R_MEP_8,	  0,  8, 0, 0, 0, U, 0xff),
-  MEPREL (R_MEP_16,	  1, 16, 0, 0, 0, U, 0xffff),
-  MEPREL (R_MEP_32,	  2, 32, 0, 0, 0, U, 0xffffffff),
+  MEPREL (R_MEP_8,        0,  8, 0, 0, 0, U, 0xff),
+  MEPREL (R_MEP_16,       1, 16, 0, 0, 0, U, 0xffff),
+  MEPREL (R_MEP_32,       2, 32, 0, 0, 0, U, 0xffffffff),
   MEPREL (R_MEP_PCREL8A2, 1,  8, 1, 1, 1, S, 0x00fe),
   MEPREL (R_MEP_PCREL12A2,1, 12, 1, 1, 1, S, 0x0ffe),
   MEPREL (R_MEP_PCREL17A2,2, 17, 0, 1, 1, S, 0x0000ffff),
   MEPREL (R_MEP_PCREL24A2,2, 24, 0, 1, 1, S, 0x07f0ffff),
   MEPREL (R_MEP_PCABS24A2,2, 24, 0, 1, 0, U, 0x07f0ffff),
-  MEPREL (R_MEP_LOW16,	  2, 16, 0, 0, 0, N, 0x0000ffff),
-  MEPREL (R_MEP_HI16U,	  2, 32, 0,16, 0, N, 0x0000ffff),
-  MEPREL (R_MEP_HI16S,	  2, 32, 0,16, 0, N, 0x0000ffff),
-  MEPREL (R_MEP_GPREL,	  2, 16, 0, 0, 0, S, 0x0000ffff),
-  MEPREL (R_MEP_TPREL,	  2, 16, 0, 0, 0, S, 0x0000ffff),
-  MEPREL (R_MEP_TPREL7,	  1,  7, 0, 0, 0, U, 0x007f),
+  MEPREL (R_MEP_LOW16,    2, 16, 0, 0, 0, N, 0x0000ffff),
+  MEPREL (R_MEP_HI16U,    2, 32, 0,16, 0, N, 0x0000ffff),
+  MEPREL (R_MEP_HI16S,    2, 32, 0,16, 0, N, 0x0000ffff),
+  MEPREL (R_MEP_GPREL,    2, 16, 0, 0, 0, S, 0x0000ffff),
+  MEPREL (R_MEP_TPREL,    2, 16, 0, 0, 0, S, 0x0000ffff),
+  MEPREL (R_MEP_TPREL7,   1,  7, 0, 0, 0, U, 0x007f),
   MEPREL (R_MEP_TPREL7A2, 1,  7, 1, 1, 0, U, 0x007e),
   MEPREL (R_MEP_TPREL7A4, 1,  7, 2, 2, 0, U, 0x007c),
-  MEPREL (R_MEP_UIMM24,	  2, 24, 0, 0, 0, U, 0x00ffffff),
+  MEPREL (R_MEP_UIMM24,   2, 24, 0, 0, 0, U, 0x00ffffff),
   MEPREL (R_MEP_ADDR24A4, 2, 24, 0, 2, 0, U, 0x00fcffff),
   MEPREL (R_MEP_GNU_VTINHERIT,1,  0,16,32, 0, N, 0x0000),
-  MEPREL (R_MEP_GNU_VTENTRY,1,	0,16,32, 0, N, 0x0000),
+  MEPREL (R_MEP_GNU_VTENTRY,1,  0,16,32, 0, N, 0x0000),
   /* MEPRELOC:END */
 };
 
@@ -221,7 +221,6 @@ mep_final_link_relocate
      bfd_vma		 relocation)
 {
   unsigned long u;
-  long s;
   unsigned char *byte;
   bfd_vma pc;
   bfd_reloc_status_type r = bfd_reloc_ok;
@@ -242,12 +241,12 @@ mep_final_link_relocate
 	+ input_section->output_offset
 	+ rel->r_offset);
 
-  s = relocation + rel->r_addend;
+  u = relocation + rel->r_addend;
 
   byte = (unsigned char *)contents + rel->r_offset;
 
   if (howto->type == R_MEP_PCREL24A2
-      && s == 0
+      && u == 0
       && pc >= 0x800000)
     {
       /* This is an unreachable branch to an undefined weak function.
@@ -257,9 +256,7 @@ mep_final_link_relocate
     }
 
   if (howto->pc_relative)
-    s -= pc;
-
-  u = (unsigned long) s;
+    u -= pc;
 
   switch (howto->type)
     {
@@ -281,25 +278,25 @@ mep_final_link_relocate
       byte[3^e4] = (u & 0xff);
       break;
     case R_MEP_PCREL8A2: /* --------7654321- */
-      if (-128 > s || s > 127) r = bfd_reloc_overflow;
-      byte[1^e2] = (byte[1^e2] & 0x01) | (s & 0xfe);
+      if (u + 128 > 255) r = bfd_reloc_overflow;
+      byte[1^e2] = (byte[1^e2] & 0x01) | (u & 0xfe);
       break;
     case R_MEP_PCREL12A2: /* ----ba987654321- */
-      if (-2048 > s || s > 2047) r = bfd_reloc_overflow;
-      byte[0^e2] = (byte[0^e2] & 0xf0) | ((s >> 8) & 0x0f);
-      byte[1^e2] = (byte[1^e2] & 0x01) | (s & 0xfe);
+      if (u + 2048 > 4095) r = bfd_reloc_overflow;
+      byte[0^e2] = (byte[0^e2] & 0xf0) | ((u >> 8) & 0x0f);
+      byte[1^e2] = (byte[1^e2] & 0x01) | (u & 0xfe);
       break;
     case R_MEP_PCREL17A2: /* ----------------gfedcba987654321 */
-      if (-65536 > s || s > 65535) r = bfd_reloc_overflow;
-      byte[2^e2] = ((s >> 9) & 0xff);
-      byte[3^e2] = ((s >> 1) & 0xff);
+      if (u + 65536 > 131071) r = bfd_reloc_overflow;
+      byte[2^e2] = ((u >> 9) & 0xff);
+      byte[3^e2] = ((u >> 1) & 0xff);
       break;
     case R_MEP_PCREL24A2: /* -----7654321----nmlkjihgfedcba98 */
-      if (-8388608 > s || s > 8388607) r = bfd_reloc_overflow;
-      byte[0^e2] = (byte[0^e2] & 0xf8) | ((s >> 5) & 0x07);
-      byte[1^e2] = (byte[1^e2] & 0x0f) | ((s << 3) & 0xf0);
-      byte[2^e2] = ((s >> 16) & 0xff);
-      byte[3^e2] = ((s >> 8) & 0xff);
+      if (u + 8388608 > 16777215) r = bfd_reloc_overflow;
+      byte[0^e2] = (byte[0^e2] & 0xf8) | ((u >> 5) & 0x07);
+      byte[1^e2] = (byte[1^e2] & 0x0f) | ((u << 3) & 0xf0);
+      byte[2^e2] = ((u >> 16) & 0xff);
+      byte[3^e2] = ((u >> 8) & 0xff);
       break;
     case R_MEP_PCABS24A2: /* -----7654321----nmlkjihgfedcba98 */
       if (u > 16777215) r = bfd_reloc_overflow;
@@ -317,22 +314,21 @@ mep_final_link_relocate
       byte[3^e2] = ((u >> 16) & 0xff);
       break;
     case R_MEP_HI16S: /* ----------------vutsrqponmlkjihg */
-      if (s & 0x8000)
-	s += 0x10000;
-      byte[2^e2] = ((s >> 24) & 0xff);
-      byte[3^e2] = ((s >> 16) & 0xff);
+      u += 0x8000;
+      byte[2^e2] = ((u >> 24) & 0xff);
+      byte[3^e2] = ((u >> 16) & 0xff);
       break;
     case R_MEP_GPREL: /* ----------------fedcba9876543210 */
-      s -= mep_sdaoff_base(rel->r_offset);
-      if (-32768 > s || s > 32767) r = bfd_reloc_overflow;
-      byte[2^e2] = ((s >> 8) & 0xff);
-      byte[3^e2] = (s & 0xff);
+      u -= mep_sdaoff_base(rel->r_offset);
+      if (u + 32768 > 65535) r = bfd_reloc_overflow;
+      byte[2^e2] = ((u >> 8) & 0xff);
+      byte[3^e2] = (u & 0xff);
       break;
     case R_MEP_TPREL: /* ----------------fedcba9876543210 */
-      s -= mep_tpoff_base(rel->r_offset);
-      if (-32768 > s || s > 32767) r = bfd_reloc_overflow;
-      byte[2^e2] = ((s >> 8) & 0xff);
-      byte[3^e2] = (s & 0xff);
+      u -= mep_tpoff_base(rel->r_offset);
+      if (u + 32768 > 65535) r = bfd_reloc_overflow;
+      byte[2^e2] = ((u >> 8) & 0xff);
+      byte[3^e2] = (u & 0xff);
       break;
     case R_MEP_TPREL7: /* ---------6543210 */
       u -= mep_tpoff_base(rel->r_offset);
@@ -717,10 +713,10 @@ mep_elf_object_p (bfd * abfd)
 }
 
 static bfd_boolean
-mep_elf_section_flags (flagword * flags, const Elf_Internal_Shdr * hdr)
+mep_elf_section_flags (const Elf_Internal_Shdr *hdr)
 {
   if (hdr->sh_flags & SHF_MEP_VLIW)
-    * flags |= SEC_MEP_VLIW;
+    hdr->bfd_section->flags |= SEC_MEP_VLIW;
   return TRUE;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-metag.c ./bfd/elf32-metag.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-metag.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-metag.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Meta support for 32-bit ELF
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2020 Free Software Foundation, Inc.
    Contributed by Imagination Technologies Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -785,10 +785,6 @@ struct elf_metag_link_hash_entry
      symbol.  */
   struct elf_metag_stub_hash_entry *hsh_cache;
 
-  /* Used to count relocations for delayed sizing of relocation
-     sections.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   enum
     {
       GOT_UNKNOWN = 0, GOT_NORMAL = 1, GOT_TLS_IE = 2, GOT_TLS_LDM = 4, GOT_TLS_GD = 8
@@ -827,9 +823,6 @@ struct elf_metag_link_hash_table
   asection **input_list;
   Elf_Internal_Sym **all_local_syms;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* Data for LDM relocations.  */
   union
   {
@@ -913,8 +906,9 @@ metag_reloc_name_lookup (bfd *abfd ATTRI
 
 /* Various hash macros and functions.  */
 #define metag_link_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == METAG_ELF_DATA ? ((struct elf_metag_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == METAG_ELF_DATA)	\
+   ? (struct elf_metag_link_hash_table *) (p)->hash : NULL)
 
 #define metag_elf_hash_entry(ent) \
   ((struct elf_metag_link_hash_entry *)(ent))
@@ -994,7 +988,6 @@ metag_link_hash_newfunc (struct bfd_hash
       /* Initialize the local fields.  */
       hh = (struct elf_metag_link_hash_entry *) entry;
       hh->hsh_cache = NULL;
-      hh->dyn_relocs = NULL;
       hh->tls_type = GOT_UNKNOWN;
     }
 
@@ -1021,7 +1014,7 @@ static struct bfd_link_hash_table *
 elf_metag_link_hash_table_create (bfd *abfd)
 {
   struct elf_metag_link_hash_table *htab;
-  bfd_size_type amt = sizeof (*htab);
+  size_t amt = sizeof (*htab);
 
   htab = bfd_zmalloc (amt);
   if (htab == NULL)
@@ -1044,6 +1037,7 @@ elf_metag_link_hash_table_create (bfd *a
       return NULL;
     }
   htab->etab.root.hash_table_free = elf_metag_link_hash_table_free;
+  htab->etab.dt_pltgot_required = TRUE;
 
   return &htab->etab.root;
 }
@@ -2102,7 +2096,7 @@ elf_metag_check_relocs (bfd *abfd,
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  /* A local symbol.  */
-	  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	  isym = bfd_sym_from_r_symndx (&htab->etab.sym_cache,
 					abfd, r_symndx);
 	  if (isym == NULL)
 	    return FALSE;
@@ -2328,7 +2322,7 @@ elf_metag_check_relocs (bfd *abfd,
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (hh != NULL)
-		hdh_head = &((struct elf_metag_link_hash_entry *) hh)->dyn_relocs;
+		hdh_head = &hh->eh.dyn_relocs;
 	      else
 		{
 		  /* Track dynamic relocs needed for local syms too.  */
@@ -2395,41 +2389,6 @@ elf_metag_copy_indirect_symbol (struct b
   hh_dir = metag_elf_hash_entry (eh_dir);
   hh_ind = metag_elf_hash_entry (eh_ind);
 
-  if (hh_ind->dyn_relocs != NULL)
-    {
-      if (hh_dir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **hdh_pp;
-	  struct elf_dyn_relocs *hdh_p;
-
-	  if (eh_ind->root.type == bfd_link_hash_indirect)
-	    abort ();
-
-	  /* Add reloc counts against the weak sym to the strong sym
-	     list.  Merge any entries against the same section.  */
-	  for (hdh_pp = &hh_ind->dyn_relocs; (hdh_p = *hdh_pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *hdh_q;
-
-	      for (hdh_q = hh_dir->dyn_relocs; hdh_q != NULL;
-		   hdh_q = hdh_q->next)
-		if (hdh_q->sec == hdh_p->sec)
-		  {
-		    hdh_q->pc_count += hdh_p->pc_count;
-		    hdh_q->count += hdh_p->count;
-		    *hdh_pp = hdh_p->next;
-		    break;
-		  }
-	      if (hdh_q == NULL)
-		hdh_pp = &hdh_p->next;
-	    }
-	  *hdh_pp = hh_dir->dyn_relocs;
-	}
-
-      hh_dir->dyn_relocs = hh_ind->dyn_relocs;
-      hh_ind->dyn_relocs = NULL;
-    }
-
   if (eh_ind->root.type == bfd_link_hash_indirect
       && eh_dir->got.refcount <= 0)
     {
@@ -2440,23 +2399,6 @@ elf_metag_copy_indirect_symbol (struct b
   _bfd_elf_link_hash_copy_indirect (info, eh_dir, eh_ind);
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = metag_elf_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -2532,7 +2474,7 @@ elf_metag_adjust_dynamic_symbol (struct
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (!readonly_dynrelocs (eh))
+  if (!_bfd_elf_readonly_dynrelocs (eh))
     {
       eh->non_got_ref = 0;
       return TRUE;
@@ -2580,7 +2522,6 @@ allocate_dynrelocs (struct elf_link_hash
 {
   struct bfd_link_info *info;
   struct elf_metag_link_hash_table *htab;
-  struct elf_metag_link_hash_entry *hh;
   struct elf_dyn_relocs *hdh_p;
 
   if (eh->root.type == bfd_link_hash_indirect)
@@ -2687,8 +2628,7 @@ allocate_dynrelocs (struct elf_link_hash
   else
     eh->got.offset = (bfd_vma) -1;
 
-  hh = (struct elf_metag_link_hash_entry *) eh;
-  if (hh->dyn_relocs == NULL)
+  if (eh->dyn_relocs == NULL)
     return TRUE;
 
   /* If this is a -Bsymbolic shared link, then we need to discard all
@@ -2702,7 +2642,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **hdh_pp;
 
-	  for (hdh_pp = &hh->dyn_relocs; (hdh_p = *hdh_pp) != NULL; )
+	  for (hdh_pp = &eh->dyn_relocs; (hdh_p = *hdh_pp) != NULL; )
 	    {
 	      hdh_p->count -= hdh_p->pc_count;
 	      hdh_p->pc_count = 0;
@@ -2715,11 +2655,11 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (hh->dyn_relocs != NULL
+      if (eh->dyn_relocs != NULL
 	  && eh->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (eh->other) != STV_DEFAULT)
-	    hh->dyn_relocs = NULL;
+	    eh->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -2758,14 +2698,14 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      hh->dyn_relocs = NULL;
+      eh->dyn_relocs = NULL;
       return TRUE;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (hdh_p = hh->dyn_relocs; hdh_p != NULL; hdh_p = hdh_p->next)
+  for (hdh_p = eh->dyn_relocs; hdh_p != NULL; hdh_p = hdh_p->next)
     {
       asection *sreloc = elf_section_data (hdh_p->sec)->sreloc;
       sreloc->size += hdh_p->count * sizeof (Elf32_External_Rela);
@@ -2774,33 +2714,6 @@ allocate_dynrelocs (struct elf_link_hash
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -2988,55 +2901,7 @@ elf_metag_size_dynamic_sections (bfd *ou
 	}
     }
 
-  if (htab->etab.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in elf_metag_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (!add_dynamic_entry (DT_PLTGOT, 0))
-	return FALSE;
-
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->etab.srelplt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->etab, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
@@ -3459,7 +3324,7 @@ metag_type_of_stub (asection *input_sec,
 #define MOV_PC_A0_3	0xa3180ca0
 
 static bfd_boolean
-metag_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_UNUSED)
+metag_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
 {
   struct elf_metag_stub_hash_entry *hsh;
   asection *stub_sec;
@@ -3467,9 +3332,19 @@ metag_build_one_stub (struct bfd_hash_en
   bfd_byte *loc;
   bfd_vma sym_value;
   int size;
+  struct bfd_link_info *info;
 
   /* Massage our args to the form they really have.  */
   hsh = (struct elf_metag_stub_hash_entry *) gen_entry;
+  info = (struct bfd_link_info *) in_arg;
+
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (hsh->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    hsh->target_section);
 
   stub_sec = hsh->stub_sec;
 
@@ -3562,7 +3437,7 @@ elf_metag_setup_section_lists (bfd *outp
   unsigned int top_id, top_index;
   asection *section;
   asection **input_list, **list;
-  bfd_size_type amt;
+  size_t amt;
   struct elf_metag_link_hash_table *htab = metag_link_hash_table (info);
 
   /* Count the number of input BFDs and find the top input section id.  */
@@ -3741,7 +3616,7 @@ get_local_syms (bfd *output_bfd ATTRIBUT
   /* We want to read in symbol extension records only once.  To do this
      we need to read in the local symbols in parallel and save them for
      later use; so hold pointers to the local symbols in an array.  */
-  bfd_size_type amt = sizeof (Elf_Internal_Sym *) * htab->bfd_count;
+  size_t amt = sizeof (Elf_Internal_Sym *) * htab->bfd_count;
   all_local_syms = bfd_zmalloc (amt);
   htab->all_local_syms = all_local_syms;
   if (all_local_syms == NULL)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-metag.h ./bfd/elf32-metag.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-metag.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-metag.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Meta support for 32-bit ELF
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2020 Free Software Foundation, Inc.
    Contributed by Imagination Technologies Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-microblaze.c ./bfd/elf32-microblaze.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-microblaze.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-microblaze.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* Xilinx MicroBlaze-specific support for 32-bit ELF
 
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -721,9 +721,6 @@ struct elf32_mb_link_hash_entry
 {
   struct elf_link_hash_entry elf;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   /* TLS Reference Types for the symbol; Updated by check_relocs */
 #define TLS_GD     1  /* GD reloc. */
 #define TLS_LD     2  /* LD reloc. */
@@ -747,9 +744,6 @@ struct elf32_mb_link_hash_table
 {
   struct elf_link_hash_table elf;
 
-  /* Small local sym to section mapping cache.  */
-  struct sym_cache sym_sec;
-
   /* TLS Local Dynamic GOT Entry */
   union {
     bfd_signed_vma refcount;
@@ -762,9 +756,10 @@ struct elf32_mb_link_hash_table
 
 /* Get the ELF linker hash table from a link_info structure.  */
 
-#define elf32_mb_hash_table(p)				\
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == MICROBLAZE_ELF_DATA ? ((struct elf32_mb_link_hash_table *) ((p)->hash)) : NULL)
+#define elf32_mb_hash_table(p) \
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == MICROBLAZE_ELF_DATA)	\
+   ? (struct elf32_mb_link_hash_table *) (p)->hash : NULL)
 
 /* Create an entry in a microblaze ELF linker hash table.  */
 
@@ -790,7 +785,6 @@ link_hash_newfunc (struct bfd_hash_entry
       struct elf32_mb_link_hash_entry *eh;
 
       eh = (struct elf32_mb_link_hash_entry *) entry;
-      eh->dyn_relocs = NULL;
       eh->tls_mask = 0;
     }
 
@@ -803,7 +797,7 @@ static struct bfd_link_hash_table *
 microblaze_elf_link_hash_table_create (bfd *abfd)
 {
   struct elf32_mb_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf32_mb_link_hash_table);
+  size_t amt = sizeof (struct elf32_mb_link_hash_table);
 
   ret = (struct elf32_mb_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -2234,11 +2228,8 @@ microblaze_elf_relax_section (bfd *abfd,
       symtab_hdr->contents = (bfd_byte *) isymbuf;
     }
 
-  if (free_relocs != NULL)
-    {
-      free (free_relocs);
-      free_relocs = NULL;
-    }
+  free (free_relocs);
+  free_relocs = NULL;
 
   if (free_contents != NULL)
     {
@@ -2261,16 +2252,11 @@ microblaze_elf_relax_section (bfd *abfd,
   return TRUE;
 
  error_return:
-  if (free_relocs != NULL)
-    free (free_relocs);
-  if (free_contents != NULL)
-    free (free_contents);
-  if (sec->relax != NULL)
-    {
-      free (sec->relax);
-      sec->relax = NULL;
-      sec->relax_count = 0;
-    }
+  free (free_relocs);
+  free (free_contents);
+  free (sec->relax);
+  sec->relax = NULL;
+  sec->relax_count = 0;
   return FALSE;
 }
 
@@ -2524,7 +2510,7 @@ microblaze_elf_check_relocs (bfd * abfd,
 		/* If this is a global symbol, we count the number of
 		   relocations we need for this symbol.  */
 		if (h != NULL)
-		  head = &((struct elf32_mb_link_hash_entry *) h)->dyn_relocs;
+		  head = &h->dyn_relocs;
 		else
 		  {
 		    /* Track dynamic relocs needed for local syms too.
@@ -2535,7 +2521,7 @@ microblaze_elf_check_relocs (bfd * abfd,
 		    Elf_Internal_Sym *isym;
 		    void *vpp;
 
-		    isym = bfd_sym_from_r_symndx (&htab->sym_sec,
+		    isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 						  abfd, r_symndx);
 		    if (isym == NULL)
 		      return FALSE;
@@ -2551,7 +2537,7 @@ microblaze_elf_check_relocs (bfd * abfd,
 		p = *head;
 		if (p == NULL || p->sec != sec)
 		  {
-		    bfd_size_type amt = sizeof *p;
+		    size_t amt = sizeof *p;
 		    p = ((struct elf_dyn_relocs *)
 			 bfd_alloc (htab->elf.dynobj, amt));
 		    if (p == NULL)
@@ -2587,62 +2573,11 @@ microblaze_elf_copy_indirect_symbol (str
   edir = (struct elf32_mb_link_hash_entry *) dir;
   eind = (struct elf32_mb_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  if (ind->root.type == bfd_link_hash_indirect)
-	    abort ();
-
-	  /* Add reloc counts against the weak sym to the strong sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   edir->tls_mask |= eind->tls_mask;
 
   _bfd_elf_link_hash_copy_indirect (info, dir, ind);
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = elf32_mb_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 static bfd_boolean
 microblaze_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				      struct elf_link_hash_entry *h)
@@ -2721,7 +2656,7 @@ microblaze_elf_adjust_dynamic_symbol (st
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (!readonly_dynrelocs (h))
+  if (!_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -2906,7 +2841,7 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -2923,7 +2858,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -2934,7 +2869,7 @@ allocate_dynrelocs (struct elf_link_hash
 	    }
 	}
       else if (UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	eh->dyn_relocs = NULL;
+	h->dyn_relocs = NULL;
     }
   else
     {
@@ -2964,13 +2899,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * sizeof (Elf32_External_Rela);
@@ -3166,45 +3101,9 @@ microblaze_elf_size_dynamic_sections (bf
 	return FALSE;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in microblaze_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL)			\
-      _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (!add_dynamic_entry (DT_RELA, 0)
-	  || !add_dynamic_entry (DT_RELASZ, 0)
-	  || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	return FALSE;
-
-      if (htab->elf.splt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0)
-	      || !add_dynamic_entry (DT_BIND_NOW, 1))
-	    return FALSE;
-	}
-
-      if (info->flags & DF_TEXTREL)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-    }
-#undef add_dynamic_entry
-  return TRUE;
+  /* ??? Force DF_BIND_NOW?  */
+  info->flags |= DF_BIND_NOW;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, TRUE);
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
@@ -3501,7 +3400,7 @@ microblaze_elf_add_symbol_hook (bfd *abf
 	 put into .sbss.  */
       *secp = bfd_make_section_old_way (abfd, ".sbss");
       if (*secp == NULL
-	  || !bfd_set_section_flags (*secp, SEC_IS_COMMON))
+	  || !bfd_set_section_flags (*secp, SEC_IS_COMMON | SEC_SMALL_DATA))
 	return FALSE;
 
       *valp = sym->st_size;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-mips.c ./bfd/elf32-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-mips.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-mips.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* MIPS-specific support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    Most of the information added by Ian Lance Taylor, Cygnus Support,
    <ian@cygnus.com>.
@@ -63,6 +63,8 @@ static bfd_boolean mips_info_to_howto_re
   (bfd *, arelent *, Elf_Internal_Rela *);
 static bfd_boolean mips_elf_sym_is_global
   (bfd *, asymbol *);
+static bfd_boolean mips_elf32_elfsym_local_is_section
+  (bfd *);
 static bfd_boolean mips_elf32_object_p
   (bfd *);
 static bfd_boolean mips_elf_is_local_label_name
@@ -2284,6 +2286,14 @@ mips_elf_sym_is_global (bfd *abfd ATTRIB
 	    || bfd_is_und_section (bfd_asymbol_section (sym))
 	    || bfd_is_com_section (bfd_asymbol_section (sym)));
 }
+
+/* Likewise, return TRUE if the symbol table split overall must be
+   between section symbols and all other symbols.  */
+static bfd_boolean
+mips_elf32_elfsym_local_is_section (bfd *abfd)
+{
+  return SGI_COMPAT (abfd);
+}
 
 /* Set the right machine number for a MIPS ELF file.  */
 
@@ -2552,6 +2562,8 @@ static const struct ecoff_debug_swap mip
 #define elf_backend_ignore_discarded_relocs \
 					_bfd_mips_elf_ignore_discarded_relocs
 #define elf_backend_write_section	_bfd_mips_elf_write_section
+#define elf_backend_elfsym_local_is_section \
+					mips_elf32_elfsym_local_is_section
 #define elf_backend_mips_irix_compat	elf32_mips_irix_compat
 #define elf_backend_mips_rtype_to_howto	mips_elf32_rtype_to_howto
 #define elf_backend_sort_relocs_p	_bfd_mips_elf_sort_relocs_p
@@ -2670,6 +2682,9 @@ mips_vxworks_final_write_processing (bfd
 #define ELF_MAXPAGESIZE			0x1000
 #define ELF_COMMONPAGESIZE		0x1000
 
+#undef ELF_TARGET_OS
+#define ELF_TARGET_OS			is_vxworks
+
 #undef elf_backend_want_got_plt
 #define elf_backend_want_got_plt		1
 #undef elf_backend_want_plt_sym
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-moxie.c ./bfd/elf32-moxie.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-moxie.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-moxie.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,8 +1,8 @@
 /* moxie-specific support for 32-bit ELF.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    Copied from elf32-fr30.c which is..
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-msp430.c ./bfd/elf32-msp430.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-msp430.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-msp430.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /*  MSP430-specific support for 32-bit ELF
-    Copyright (C) 2002-2019 Free Software Foundation, Inc.
+    Copyright (C) 2002-2020 Free Software Foundation, Inc.
     Contributed by Dmitry Diky <diwil@mail.ru>
 
     This file is part of BFD, the Binary File Descriptor library.
@@ -26,6 +26,8 @@
 #include "elf-bfd.h"
 #include "elf/msp430.h"
 
+static bfd_boolean debug_relocs = 0;
+
 /* All users of this file have bfd_octets_per_byte (abfd, sec) == 1.  */
 #define OCTETS_PER_BYTE(ABFD, SEC) 1
 
@@ -54,6 +56,20 @@ rl78_sym_diff_handler (bfd * abfd,
   return bfd_reloc_continue;
 }
 
+/* Special handler for relocations which don't have to be relocated.
+   This function just simply returns bfd_reloc_ok.  */
+static bfd_reloc_status_type
+msp430_elf_ignore_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
+			asymbol *symbol ATTRIBUTE_UNUSED,
+			void *data ATTRIBUTE_UNUSED, asection *input_section,
+			bfd *output_bfd, char **error_message ATTRIBUTE_UNUSED)
+{
+  if (output_bfd != NULL)
+    reloc_entry->address += input_section->output_offset;
+
+  return bfd_reloc_ok;
+}
+
 static reloc_howto_type elf_msp430_howto_table[] =
 {
   HOWTO (R_MSP430_NONE,		/* type */
@@ -218,7 +234,40 @@ static reloc_howto_type elf_msp430_howto
 	 FALSE,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE)			/* pcrel_offset */
+	 FALSE),		/* pcrel_offset */
+
+  /* The length of unsigned-leb128 is variable, just assume the
+     size is one byte here.  */
+  HOWTO (R_MSP430_GNU_SET_ULEB128,	/* type */
+	 0,				/* rightshift */
+	 0,				/* size */
+	 0,				/* bitsize */
+	 FALSE,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 msp430_elf_ignore_reloc,	/* special handler.  */
+	 "R_MSP430_GNU_SET_ULEB128",	/* name */
+	 FALSE,				/* partial_inplace */
+	 0,				/* src_mask */
+	 0,				/* dst_mask */
+	 FALSE),			/* pcrel_offset */
+
+  /* The length of unsigned-leb128 is variable, just assume the
+     size is one byte here.  */
+  HOWTO (R_MSP430_GNU_SUB_ULEB128,	/* type */
+	 0,				/* rightshift */
+	 0,				/* size */
+	 0,				/* bitsize */
+	 FALSE,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 msp430_elf_ignore_reloc,	/* special handler.  */
+	 "R_MSP430_GNU_SUB_ULEB128",	/* name */
+	 FALSE,				/* partial_inplace */
+	 0,				/* src_mask */
+	 0,				/* dst_mask */
+	 FALSE),			/* pcrel_offset */
+
 };
 
 static reloc_howto_type elf_msp430x_howto_table[] =
@@ -521,7 +570,40 @@ static reloc_howto_type elf_msp430x_howt
 	 FALSE,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE)			/* pcrel_offset */
+	 FALSE),		/* pcrel_offset */
+
+  /* The length of unsigned-leb128 is variable, just assume the
+     size is one byte here.  */
+  HOWTO (R_MSP430X_GNU_SET_ULEB128,	/* type */
+	 0,				/* rightshift */
+	 0,				/* size */
+	 0,				/* bitsize */
+	 FALSE,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 msp430_elf_ignore_reloc,	/* special handler.  */
+	 "R_MSP430X_GNU_SET_ULEB128",	/* name */
+	 FALSE,				/* partial_inplace */
+	 0,				/* src_mask */
+	 0,				/* dst_mask */
+	 FALSE),			/* pcrel_offset */
+
+  /* The length of unsigned-leb128 is variable, just assume the
+     size is one byte here.  */
+  HOWTO (R_MSP430X_GNU_SUB_ULEB128,	/* type */
+	 0,				/* rightshift */
+	 0,				/* size */
+	 0,				/* bitsize */
+	 FALSE,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 msp430_elf_ignore_reloc,	/* special handler.  */
+	 "R_MSP430X_GNU_SUB_ULEB128",	/* name */
+	 FALSE,				/* partial_inplace */
+	 0,				/* src_mask */
+	 0,				/* dst_mask */
+	 FALSE),			/* pcrel_offset */
+
 };
 
 /* Map BFD reloc types to MSP430 ELF reloc types.  */
@@ -545,7 +627,9 @@ static const struct msp430_reloc_map msp
   {BFD_RELOC_MSP430_2X_PCREL,	   R_MSP430_2X_PCREL},
   {BFD_RELOC_MSP430_RL_PCREL,	   R_MSP430_RL_PCREL},
   {BFD_RELOC_8,			   R_MSP430_8},
-  {BFD_RELOC_MSP430_SYM_DIFF,	   R_MSP430_SYM_DIFF}
+  {BFD_RELOC_MSP430_SYM_DIFF,	   R_MSP430_SYM_DIFF},
+  {BFD_RELOC_MSP430_SET_ULEB128,   R_MSP430_GNU_SET_ULEB128 },
+  {BFD_RELOC_MSP430_SUB_ULEB128,   R_MSP430_GNU_SUB_ULEB128 }
 };
 
 static const struct msp430_reloc_map msp430x_reloc_map[] =
@@ -571,7 +655,9 @@ static const struct msp430_reloc_map msp
   {BFD_RELOC_MSP430_10_PCREL,	      R_MSP430X_10_PCREL},
   {BFD_RELOC_MSP430_2X_PCREL,	      R_MSP430X_2X_PCREL},
   {BFD_RELOC_MSP430_RL_PCREL,	      R_MSP430X_PCR16},
-  {BFD_RELOC_MSP430_SYM_DIFF,	      R_MSP430X_SYM_DIFF}
+  {BFD_RELOC_MSP430_SYM_DIFF,	      R_MSP430X_SYM_DIFF},
+  {BFD_RELOC_MSP430_SET_ULEB128,      R_MSP430X_GNU_SET_ULEB128 },
+  {BFD_RELOC_MSP430_SUB_ULEB128,      R_MSP430X_GNU_SUB_ULEB128 }
 };
 
 static inline bfd_boolean
@@ -742,6 +828,10 @@ msp430_final_link_relocate (reloc_howto_
       BFD_ASSERT (! is_rel_reloc || rel->r_addend == 0);
     }
 
+  if (debug_relocs)
+    printf ("writing relocation (%p) at 0x%lx type: %d\n", rel,
+	    (long) (input_section->output_section->vma + input_section->output_offset
+		    + rel->r_offset), howto->type);
   if (sym_diff_section != NULL)
     {
       BFD_ASSERT (sym_diff_section == input_section);
@@ -749,6 +839,9 @@ msp430_final_link_relocate (reloc_howto_
      if (uses_msp430x_relocs (input_bfd))
        switch (howto->type)
 	 {
+	 case R_MSP430X_GNU_SET_ULEB128:
+	   relocation += (!is_rel_reloc ? rel->r_addend : 0);
+	   /* Fall through.  */
 	 case R_MSP430_ABS32:
 	  /* If we are computing a 32-bit value for the location lists
 	     and the result is 0 then we add one to the value.  A zero
@@ -774,6 +867,9 @@ msp430_final_link_relocate (reloc_howto_
      else
        switch (howto->type)
 	 {
+	 case R_MSP430_GNU_SET_ULEB128:
+	   relocation += (!is_rel_reloc ? rel->r_addend : 0);
+	   /* Fall through.  */
 	 case R_MSP430_32:
 	 case R_MSP430_16:
 	 case R_MSP430_16_BYTE:
@@ -788,16 +884,63 @@ msp430_final_link_relocate (reloc_howto_
       sym_diff_section = NULL;
     }
 
-  if (uses_msp430x_relocs (input_bfd))
+  if ((uses_msp430x_relocs (input_bfd)
+       && howto->type == R_MSP430X_GNU_SET_ULEB128)
+      || (!uses_msp430x_relocs (input_bfd)
+	  && howto->type == R_MSP430_GNU_SET_ULEB128))
+    {
+      unsigned int len, new_len = 0;
+      bfd_byte *endp, *p;
+      unsigned int val = relocation;
+
+      _bfd_read_unsigned_leb128 (input_bfd, contents + rel->r_offset, &len);
+
+      /* Clean the contents value to zero.  Do not reduce the length.  */
+      p = contents + rel->r_offset;
+      endp = (p + len) - 1;
+      memset (p, 0x80, len - 1);
+      *(endp) = 0;
+
+      /* Get the length of the new uleb128 value.  */
+      do
+	{
+	  new_len++;
+	  val >>= 7;
+	} while (val);
+
+      if (new_len > len)
+	{
+	  _bfd_error_handler
+	    (_("error: final size of uleb128 value at offset 0x%lx in %pA "
+	       "from %pB exceeds available space"),
+	     (long) rel->r_offset, input_section, input_bfd);
+	}
+      else
+	{
+	  /* If the number of bytes required to store the new value has
+	     decreased, "right align" the new value within the available space,
+	     so the MSB side is padded with uleb128 zeros (0x80).  */
+	  p = _bfd_write_unsigned_leb128 (p + (len - new_len), endp,
+					  relocation);
+	  /* We checked there is enough space for the new value above, so this
+	     should never be NULL.  */
+	  BFD_ASSERT (p);
+	}
+
+      return bfd_reloc_ok;
+    }
+  else if (uses_msp430x_relocs (input_bfd))
     switch (howto->type)
       {
       case R_MSP430X_SYM_DIFF:
+      case R_MSP430X_GNU_SUB_ULEB128:
 	/* Cache the input section and value.
 	   The offset is unreliable, since relaxation may
 	   have reduced the following reloc's offset.  */
 	BFD_ASSERT (! is_rel_reloc);
 	sym_diff_section = input_section;
-	sym_diff_value = relocation;
+	sym_diff_value = relocation + (howto->type == R_MSP430X_GNU_SUB_ULEB128
+				       ? rel->r_addend : 0);
 	return bfd_reloc_ok;
 
       case R_MSP430_ABS16:
@@ -1248,11 +1391,13 @@ msp430_final_link_relocate (reloc_howto_
       break;
 
     case R_MSP430_SYM_DIFF:
+    case R_MSP430_GNU_SUB_ULEB128:
       /* Cache the input section and value.
 	 The offset is unreliable, since relaxation may
 	 have reduced the following reloc's offset.  */
       sym_diff_section = input_section;
-      sym_diff_value = relocation;
+      sym_diff_value = relocation + (howto->type == R_MSP430_GNU_SUB_ULEB128
+				     ? rel->r_addend : 0);
       return bfd_reloc_ok;
 
       default:
@@ -1663,6 +1808,9 @@ msp430_elf_relax_delete_bytes (bfd * abf
   contents = elf_section_data (sec)->this_hdr.contents;
 
   toaddr = sec->size;
+  if (debug_relocs)
+    printf ("      deleting %d bytes between 0x%lx to 0x%lx\n",
+	    count, (long) addr, (long) toaddr);
 
   irel = elf_section_data (sec)->relocs;
   irelend = irel + sec->reloc_count;
@@ -1710,10 +1858,15 @@ msp430_elf_relax_delete_bytes (bfd * abf
 		  && (CONST_STRNEQ (name, ".Letext")
 		      || CONST_STRNEQ (name, ".LFE")))))
 	{
+	  if (debug_relocs)
+	    printf ("      adjusting value of local symbol %s from 0x%lx ",
+		    name, (long) isym->st_value);
 	  if (isym->st_value < addr + count)
 	    isym->st_value = addr;
 	  else
 	    isym->st_value -= count;
+	  if (debug_relocs)
+	    printf ("to 0x%lx\n", (long) isym->st_value);
 	}
       /* Adjust the function symbol's size as well.  */
       else if (ELF_ST_TYPE (isym->st_info) == STT_FUNC
@@ -1754,11 +1907,11 @@ msp430_elf_relax_delete_bytes (bfd * abf
   return TRUE;
 }
 
-/* Insert two words into a section whilst relaxing.  */
+/* Insert one or two words into a section whilst relaxing.  */
 
 static bfd_byte *
-msp430_elf_relax_add_two_words (bfd * abfd, asection * sec, bfd_vma addr,
-				int word1, int word2)
+msp430_elf_relax_add_words (bfd * abfd, asection * sec, bfd_vma addr,
+			    int num_words, int word1, int word2)
 {
   Elf_Internal_Shdr *symtab_hdr;
   unsigned int sec_shndx;
@@ -1772,20 +1925,25 @@ msp430_elf_relax_add_two_words (bfd * ab
   unsigned int symcount;
   bfd_vma sec_end;
   asection *p;
+  if (debug_relocs)
+    printf ("      adding %d words at 0x%lx\n", num_words,
+	    (long) (sec->output_section->vma + sec->output_offset + addr));
 
   contents = elf_section_data (sec)->this_hdr.contents;
   sec_end = sec->size;
+  int num_bytes = num_words * 2;
 
   /* Make space for the new words.  */
-  contents = bfd_realloc (contents, sec_end + 4);
-  memmove (contents + addr + 4, contents + addr, sec_end - addr);
+  contents = bfd_realloc (contents, sec_end + num_bytes);
+  memmove (contents + addr + num_bytes, contents + addr, sec_end - addr);
 
   /* Insert the new words.  */
   bfd_put_16 (abfd, word1, contents + addr);
-  bfd_put_16 (abfd, word2, contents + addr + 2);
+  if (num_words == 2)
+    bfd_put_16 (abfd, word2, contents + addr + 2);
 
   /* Update the section information.  */
-  sec->size += 4;
+  sec->size += num_bytes;
   elf_section_data (sec)->this_hdr.contents = contents;
 
   /* Adjust all the relocs.  */
@@ -1794,12 +1952,12 @@ msp430_elf_relax_add_two_words (bfd * ab
 
   for (; irel < irelend; irel++)
     if ((irel->r_offset >= addr && irel->r_offset < sec_end))
-      irel->r_offset += 4;
+      irel->r_offset += num_bytes;
 
   /* Adjust the local symbols defined in this section.  */
   sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
   for (p = abfd->sections; p != NULL; p = p->next)
-    msp430_elf_relax_adjust_locals (abfd, p, addr, -4,
+    msp430_elf_relax_adjust_locals (abfd, p, addr, -num_bytes,
 				    sec_shndx, sec_end);
 
   /* Adjust the global symbols affected by the move.  */
@@ -1808,7 +1966,14 @@ msp430_elf_relax_add_two_words (bfd * ab
   for (isymend = isym + symtab_hdr->sh_info; isym < isymend; isym++)
     if (isym->st_shndx == sec_shndx
 	&& isym->st_value >= addr && isym->st_value < sec_end)
-      isym->st_value += 4;
+      {
+	if (debug_relocs)
+	  printf ("      adjusting value of local symbol %s from 0x%lx to "
+		  "0x%lx\n", bfd_elf_string_from_elf_section
+		  (abfd, symtab_hdr->sh_link, isym->st_name),
+		  (long) isym->st_value, (long)(isym->st_value + num_bytes));
+	isym->st_value += num_bytes;
+      }
 
   /* Now adjust the global symbols defined in this section.  */
   symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)
@@ -1824,7 +1989,7 @@ msp430_elf_relax_add_two_words (bfd * ab
 	  && sym_hash->root.u.def.section == sec
 	  && sym_hash->root.u.def.value >= addr
 	  && sym_hash->root.u.def.value < sec_end)
-	sym_hash->root.u.def.value += 4;
+	sym_hash->root.u.def.value += num_bytes;
     }
 
   return contents;
@@ -1853,6 +2018,10 @@ msp430_elf_relax_section (bfd * abfd, as
     || sec->reloc_count == 0 || (sec->flags & SEC_CODE) == 0)
     return TRUE;
 
+  if (debug_relocs)
+    printf ("Relaxing %s (%p), output_offset: 0x%lx sec size: 0x%lx\n",
+	    sec->name, sec, (long) sec->output_offset, (long) sec->size);
+
   symtab_hdr = & elf_tdata (abfd)->symtab_hdr;
 
   /* Get a copy of the native relocations.  */
@@ -1864,6 +2033,8 @@ msp430_elf_relax_section (bfd * abfd, as
   /* Walk through them looking for relaxing opportunities.  */
   irelend = internal_relocs + sec->reloc_count;
 
+  if (debug_relocs)
+    printf ("  trying code size growing relocs\n");
   /* Do code size growing relocs first.  */
   for (irel = internal_relocs; irel < irelend; irel++)
     {
@@ -1920,6 +2091,15 @@ msp430_elf_relax_section (bfd * abfd, as
 	    sym_sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
 	  symval = (isym->st_value
 		    + sym_sec->output_section->vma + sym_sec->output_offset);
+
+	  if (debug_relocs)
+	    printf ("    processing reloc at 0x%lx for local sym: %s "
+		    "st_value: 0x%lx adj value: 0x%lx\n",
+		    (long) (sec->output_offset + sec->output_section->vma
+			    + irel->r_offset),
+		    bfd_elf_string_from_elf_section (abfd, symtab_hdr->sh_link,
+						     isym->st_name),
+		    (long) isym->st_value, (long) symval);
 	}
       else
 	{
@@ -1941,6 +2121,13 @@ msp430_elf_relax_section (bfd * abfd, as
 	  symval = (h->root.u.def.value
 		    + h->root.u.def.section->output_section->vma
 		    + h->root.u.def.section->output_offset);
+	  if (debug_relocs)
+	    printf ("    processing reloc at 0x%lx for global sym: %s "
+		    "st_value: 0x%lx adj value: 0x%lx\n",
+		    (long) (sec->output_offset + sec->output_section->vma
+		    + irel->r_offset),
+	      h->root.root.string, (long) h->root.u.def.value,
+	      (long) symval);
 	}
 
       /* For simplicity of coding, we are going to modify the section
@@ -1960,6 +2147,7 @@ msp430_elf_relax_section (bfd * abfd, as
       value -= (sec->output_section->vma + sec->output_offset);
       value -= irel->r_offset;
       value -= 2;
+
       /* Scale.  */
       value >>= 1;
 
@@ -1971,8 +2159,12 @@ msp430_elf_relax_section (bfd * abfd, as
       opcode = bfd_get_16 (abfd, contents + irel->r_offset);
 
       /* Compute the new opcode.  We are going to convert:
+	 JMP label
+	   into:
+	 BR[A] label
+	   or
 	 J<cond> label
-	 into:
+	   into:
 	 J<inv-cond> 1f
 	 BR[A] #label
 	 1:			*/
@@ -1992,8 +2184,14 @@ msp430_elf_relax_section (bfd * abfd, as
 	     1: br label
 	     2:		       */
 	  continue;
+	case 0x3c00:
+	  if (uses_msp430x_relocs (abfd))
+	    opcode = 0x0080;	/* JMP -> BRA  */
+	  else
+	    opcode = 0x4030;	/* JMP -> BR  */
+	  break;
 	default:
-	  /* Not a conditional branch instruction.  */
+	  /* Unhandled branch instruction.  */
 	  /* fprintf (stderr, "unrecog: %x\n", opcode); */
 	  continue;
 	}
@@ -2009,27 +2207,58 @@ msp430_elf_relax_section (bfd * abfd, as
       /* Insert the new branch instruction.  */
       if (uses_msp430x_relocs (abfd))
 	{
-	  /* Insert an absolute branch (aka MOVA) instruction.  */
-	  contents = msp430_elf_relax_add_two_words
-	    (abfd, sec, irel->r_offset + 2, 0x0080, 0x0000);
-
-	  /* Update the relocation to point to the inserted branch
-	     instruction.  Note - we are changing a PC-relative reloc
-	     into an absolute reloc, but this is OK because we have
-	     arranged with the assembler to have the reloc's value be
-	     a (local) symbol, not a section+offset value.  */
-	  irel->r_offset += 2;
+	  if (debug_relocs)
+	    printf ("      R_MSP430X_10_PCREL -> R_MSP430X_ABS20_ADR_SRC "
+		    "(growing with new opcode 0x%x)\n", opcode);
+
+	  /* Insert an absolute branch (aka MOVA) instruction.
+	     Note that bits 19:16 of the address are stored in the first word
+	     of the insn, so this is where r_offset will point to.  */
+	  if (opcode == 0x0080)
+	    {
+	      /* If we're inserting a BRA because we are converting from a JMP,
+		 then only add one word for destination address; the BRA opcode
+		 has already been written.  */
+	      contents = msp430_elf_relax_add_words
+		(abfd, sec, irel->r_offset + 2, 1, 0x0000, 0);
+	    }
+	  else
+	    {
+	      contents = msp430_elf_relax_add_words
+		(abfd, sec, irel->r_offset + 2, 2, 0x0080, 0x0000);
+	      /* Update the relocation to point to the inserted branch
+		 instruction.  Note - we are changing a PC-relative reloc
+		 into an absolute reloc, but this is OK because we have
+		 arranged with the assembler to have the reloc's value be
+		 a (local) symbol, not a section+offset value.  */
+	      irel->r_offset += 2;
+	    }
+
 	  irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
 				       R_MSP430X_ABS20_ADR_SRC);
 	}
       else
 	{
-	  contents = msp430_elf_relax_add_two_words
-	    (abfd, sec, irel->r_offset + 2, 0x4030, 0x0000);
-
-	  /* See comment above about converting a 10-bit PC-rel
-	     relocation into a 16-bit absolute relocation.  */
-	  irel->r_offset += 4;
+	  if (debug_relocs)
+	    printf ("      R_MSP430_10_PCREL -> R_MSP430_16 "
+		    "(growing with new opcode 0x%x)\n", opcode);
+	  if (opcode == 0x4030)
+	    {
+	      /* If we're inserting a BR because we are converting from a JMP,
+		 then only add one word for destination address; the BR opcode
+		 has already been written.  */
+	      contents = msp430_elf_relax_add_words
+		(abfd, sec, irel->r_offset + 2, 1, 0x0000, 0);
+	      irel->r_offset += 2;
+	    }
+	  else
+	    {
+	      contents = msp430_elf_relax_add_words
+		(abfd, sec, irel->r_offset + 2, 2, 0x4030, 0x0000);
+	      /* See comment above about converting a 10-bit PC-rel
+		 relocation into a 16-bit absolute relocation.  */
+	      irel->r_offset += 4;
+	    }
 	  irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
 				       R_MSP430_16);
 	}
@@ -2039,6 +2268,9 @@ msp430_elf_relax_section (bfd * abfd, as
       *again = TRUE;
     }
 
+    if (debug_relocs)
+      printf ("  trying code size shrinking relocs\n");
+
     for (irel = internal_relocs; irel < irelend; irel++)
       {
 	bfd_vma symval;
@@ -2083,6 +2315,15 @@ msp430_elf_relax_section (bfd * abfd, as
 	      sym_sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
 	    symval = (isym->st_value
 		      + sym_sec->output_section->vma + sym_sec->output_offset);
+
+	    if (debug_relocs)
+	      printf ("    processing reloc at 0x%lx for local sym: %s "
+		      "st_value: 0x%lx adj value: 0x%lx\n",
+		      (long) (sec->output_offset + sec->output_section->vma
+			      + irel->r_offset),
+		      bfd_elf_string_from_elf_section
+		      (abfd, symtab_hdr->sh_link, isym->st_name),
+		      (long) isym->st_value, (long) symval);
 	  }
 	else
 	  {
@@ -2104,6 +2345,13 @@ msp430_elf_relax_section (bfd * abfd, as
 	    symval = (h->root.u.def.value
 		      + h->root.u.def.section->output_section->vma
 		      + h->root.u.def.section->output_offset);
+	    if (debug_relocs)
+	      printf ("    processing reloc at 0x%lx for global sym: %s "
+		      "st_value: 0x%lx adj value: 0x%lx\n", (long)
+		      (sec->output_offset + sec->output_section->vma
+		       + irel->r_offset),
+		      h->root.root.string, (long) h->root.u.def.value,
+		      (long) symval);
 	  }
 
 	/* For simplicity of coding, we are going to modify the section
@@ -2187,6 +2435,8 @@ msp430_elf_relax_section (bfd * abfd, as
 		elf_section_data (sec)->this_hdr.contents = contents;
 		symtab_hdr->contents = (unsigned char *) isymbuf;
 
+		if (debug_relocs)
+		  printf ("      R_MSP430_RL_PCREL -> ");
 		/* Fix the relocation's type.  */
 		if (uses_msp430x_relocs (abfd))
 		  {
@@ -2200,11 +2450,21 @@ msp430_elf_relax_section (bfd * abfd, as
 		else
 		  {
 		    if (rx->labels == 3)	/* Handle special cases.  */
-		      irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
-						   R_MSP430_2X_PCREL);
+		      {
+			irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
+						     R_MSP430_2X_PCREL);
+			if (debug_relocs)
+			  printf ("R_MSP430_2X_PCREL (shrinking with new opcode"
+				  " 0x%x)\n", rx->t0);
+		      }
 		    else
-		      irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
-						   R_MSP430_10_PCREL);
+		      {
+			irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
+						     R_MSP430_10_PCREL);
+			if (debug_relocs)
+			  printf ("R_MSP430_10_PCREL (shrinking with new opcode"
+				  " 0x%x)\n", rx->t0);
+		      }
 		  }
 
 		/* Fix the opcode right way.  */
@@ -2247,11 +2507,11 @@ msp430_elf_relax_section (bfd * abfd, as
 	       able to relax.  */
 	    if ((long) value < 1016 && (long) value > -1016)
 	      {
-		int code2;
+		int code1, code2, opcode;
 
 		/* Get the opcode.  */
 		code2 = bfd_get_16 (abfd, contents + irel->r_offset - 2);
-		if (code2 != 0x4030)
+		if (code2 != 0x4030) /* BR -> JMP */
 		  continue;
 		/* FIXME: check r4 and r3 ? */
 		/* FIXME: Handle 0x4010 as well ?  */
@@ -2266,21 +2526,75 @@ msp430_elf_relax_section (bfd * abfd, as
 		  {
 		    irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
 						 R_MSP430X_10_PCREL);
+		    if (debug_relocs)
+		      printf ("      R_MSP430X_16 -> R_MSP430X_10_PCREL ");
 		  }
 		else
 		  {
 		    irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
 						 R_MSP430_10_PCREL);
+		    if (debug_relocs)
+		      printf ("      R_MSP430_16 -> R_MSP430_10_PCREL ");
 		  }
+		/* If we're trying to shrink a BR[A] after previously having
+		   grown a JMP for this reloc, then we have a sequence like
+		   this:
+		     J<cond> 1f
+		     BR[A]
+		     1:
+		   The opcode for J<cond> has the target hard-coded as 2 words
+		   ahead of the insn, instead of using a reloc.
+		   This means we cannot rely on any of the helper functions to
+		   update this hard-coded jump destination if we remove the
+		   BR[A] insn, so we must explicitly update it here.
+		   This does mean that we can remove the entire branch
+		   instruction, and invert the conditional jump, saving us 4
+		   bytes rather than only 2 if we detected this in the normal
+		   way.  */
+		code1 = bfd_get_16 (abfd, contents + irel->r_offset - 4);
+		switch (code1)
+		  {
+		    case 0x3802: opcode = 0x3401; break; /* Jl  +2 -> Jge +1 */
+		    case 0x3402: opcode = 0x3801; break; /* Jge +2 -> Jl  +1 */
+		    case 0x2c02: opcode = 0x2801; break; /* Jhs +2 -> Jlo +1 */
+		    case 0x2802: opcode = 0x2c01; break; /* Jlo +2 -> Jhs +1 */
+		    case 0x2402: opcode = 0x2001; break; /* Jeq +2 -> Jne +1 */
+		    case 0x2002: opcode = 0x2401; break; /* jne +2 -> Jeq +1 */
+		    case 0x3002: /* jn +2   */
+		      /* FIXME: There is no direct inverse of the Jn insn.  */
+		      continue;
+		    default:
+		      /* The previous opcode does not have a hard-coded jump
+			 that we added when previously relaxing, so relax the
+			 current branch as normal.  */
+		      opcode = 0x3c00;
+		      break;
+		    }
+		if (debug_relocs)
+		  printf ("(shrinking with new opcode 0x%x)\n", opcode);
 
-		/* Fix the opcode right way.  */
-		bfd_put_16 (abfd, 0x3c00, contents + irel->r_offset - 2);
-		irel->r_offset -= 2;
-
-		/* Delete bytes.  */
-		if (!msp430_elf_relax_delete_bytes (abfd, sec,
-						    irel->r_offset + 2, 2))
-		  goto error_return;
+		if (opcode != 0x3c00)
+		  {
+		    /* Invert the opcode of the conditional jump.  */
+		    bfd_put_16 (abfd, opcode, contents + irel->r_offset - 4);
+		    irel->r_offset -= 4;
+
+		    /* Delete 4 bytes - the full BR insn.  */
+		    if (!msp430_elf_relax_delete_bytes (abfd, sec,
+							irel->r_offset + 2, 4))
+		      goto error_return;
+		  }
+		else
+		  {
+		    /* Fix the opcode right way.  */
+		    bfd_put_16 (abfd, opcode, contents + irel->r_offset - 2);
+		    irel->r_offset -= 2;
+
+		    /* Delete bytes.  */
+		    if (!msp430_elf_relax_delete_bytes (abfd, sec,
+							irel->r_offset + 2, 2))
+		      goto error_return;
+		  }
 
 		/* That will change things, so, we should relax again.
 		   Note that this is not required, and it may be slow.  */
@@ -2312,20 +2626,17 @@ msp430_elf_relax_section (bfd * abfd, as
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
-error_return:
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+ error_return:
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-mt.c ./bfd/elf32-mt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-mt.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-mt.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Morpho Technologies MT specific support for 32-bit ELF
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-nds32.c ./bfd/elf32-nds32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-nds32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-nds32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* NDS32-specific support for 32-bit ELF.
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2020 Free Software Foundation, Inc.
    Contributed by Andes Technology Corporation.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -199,9 +199,6 @@ struct elf_nds32_link_hash_entry
 {
   struct elf_link_hash_entry root;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   /* For checking relocation type.  */
   enum elf_nds32_tls_type tls_type;
 
@@ -3371,7 +3368,7 @@ nds32_elf_add_symbol_hook (bfd *abfd,
 	  || ELF_ST_TYPE (sym->st_info) == STT_TLS)
 	break;
 
-      /* st_value is the alignemnt constraint.
+      /* st_value is the alignment constraint.
 	 That might be its actual size if it is an array or structure.  */
       switch (sym->st_value)
 	{
@@ -3391,7 +3388,7 @@ nds32_elf_add_symbol_hook (bfd *abfd,
 	  return TRUE;
 	}
 
-      (*secp)->flags |= SEC_IS_COMMON;
+      (*secp)->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
       *valp = sym->st_size;
       break;
     }
@@ -3669,7 +3666,6 @@ nds32_elf_link_hash_newfunc (struct bfd_
       struct elf_nds32_link_hash_entry *eh;
 
       eh = (struct elf_nds32_link_hash_entry *) ret;
-      eh->dyn_relocs = NULL;
       eh->tls_type = GOT_UNKNOWN;
       eh->offset_to_gp = 0;
     }
@@ -3684,7 +3680,7 @@ nds32_elf_link_hash_table_create (bfd *a
 {
   struct elf_nds32_link_hash_table *ret;
 
-  bfd_size_type amt = sizeof (struct elf_nds32_link_hash_table);
+  size_t amt = sizeof (struct elf_nds32_link_hash_table);
 
   ret = (struct elf_nds32_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -3700,8 +3696,6 @@ nds32_elf_link_hash_table_create (bfd *a
       return NULL;
     }
 
-  ret->sdynbss = NULL;
-  ret->srelbss = NULL;
   ret->sym_ld_script = NULL;
 
   return &ret->root.root;
@@ -3837,7 +3831,7 @@ nds32_elf_create_dynamic_sections (bfd *
 	 initialize them at run time.  The linker script puts the .dynbss
 	 section into the .bss section of the final image.  */
       s = bfd_make_section (abfd, ".dynbss");
-      htab->sdynbss = s;
+      htab->root.sdynbss = s;
       if (s == NULL
 	  || !bfd_set_section_flags (s, SEC_ALLOC | SEC_LINKER_CREATED))
 	return FALSE;
@@ -3856,7 +3850,7 @@ nds32_elf_create_dynamic_sections (bfd *
 	{
 	  s = bfd_make_section (abfd, (bed->default_use_rela_p
 				       ? ".rela.bss" : ".rel.bss"));
-	  htab->srelbss = s;
+	  htab->root.srelbss = s;
 	  if (s == NULL
 	      || !bfd_set_section_flags (s, flags | SEC_READONLY)
 	      || !bfd_set_section_alignment (s, ptralign))
@@ -3878,40 +3872,6 @@ nds32_elf_copy_indirect_symbol (struct b
   edir = (struct elf_nds32_link_hash_entry *) dir;
   eind = (struct elf_nds32_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  if (ind->root.type == bfd_link_hash_indirect)
-	    abort ();
-
-	  /* Add reloc counts against the weak sym to the strong sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL;)
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect)
     {
       if (dir->got.refcount <= 0)
@@ -3924,24 +3884,6 @@ nds32_elf_copy_indirect_symbol (struct b
   _bfd_elf_link_hash_copy_indirect (info, dir, ind);
 }
 
-
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = elf32_nds32_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -4027,7 +3969,7 @@ nds32_elf_adjust_dynamic_symbol (struct
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (!readonly_dynrelocs (h))
+  if (!_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -4044,7 +3986,7 @@ nds32_elf_adjust_dynamic_symbol (struct
      same memory location for the variable.  */
 
   htab = nds32_elf_hash_table (info);
-  s = htab->sdynbss;
+  s = htab->root.sdynbss;
   BFD_ASSERT (s != NULL);
 
   /* We must generate a R_NDS32_COPY reloc to tell the dynamic linker
@@ -4055,7 +3997,7 @@ nds32_elf_adjust_dynamic_symbol (struct
     {
       asection *srel;
 
-      srel = htab->srelbss;
+      srel = htab->root.srelbss;
       BFD_ASSERT (srel != NULL);
       srel->size += sizeof (Elf32_External_Rela);
       h->needs_copy = 1;
@@ -4094,7 +4036,6 @@ allocate_dynrelocs (struct elf_link_hash
   struct bfd_link_info *info;
   struct elf_link_hash_table *ehtab;
   struct elf_nds32_link_hash_table *htab;
-  struct elf_nds32_link_hash_entry *eh;
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
@@ -4106,16 +4047,12 @@ allocate_dynrelocs (struct elf_link_hash
   if (h->root.type == bfd_link_hash_warning)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-  eh = (struct elf_nds32_link_hash_entry *) h;
-
   info = (struct bfd_link_info *) inf;
   ehtab = elf_hash_table (info);
   htab = nds32_elf_hash_table (info);
   if (htab == NULL)
     return FALSE;
 
-  eh = (struct elf_nds32_link_hash_entry *) h;
-
   if ((htab->root.dynamic_sections_created || h->type == STT_GNU_IFUNC)
       && h->plt.refcount > 0
       && !(bfd_link_pie (info) && h->def_regular))
@@ -4227,7 +4164,7 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma)-1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -4242,7 +4179,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL;)
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL;)
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -4279,13 +4216,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
-keep:;
+    keep:;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * sizeof (Elf32_External_Rela);
@@ -4313,33 +4250,6 @@ elf32_nds32_add_dynreloc (bfd *output_bf
   bfd_elf32_swap_reloca_out (output_bfd, rel, loc);
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -4350,7 +4260,6 @@ nds32_elf_size_dynamic_sections (bfd *ou
   bfd *dynobj;
   asection *s;
   bfd_boolean relocs;
-  bfd_boolean plt;
   bfd *ibfd;
 
   htab = nds32_elf_hash_table (info);
@@ -4493,12 +4402,14 @@ nds32_elf_size_dynamic_sections (bfd *ou
 
       /* If we're not using lazy TLS relocations, don't generate the
 	 PLT and GOT entries they require.  */
-      if (!(info->flags & DF_BIND_NOW))
+      if ((info->flags & DF_BIND_NOW))
+	htab->root.tlsdesc_plt = 0;
+      else
 	{
-	  htab->dt_tlsdesc_got = htab->root.sgot->size;
+	  htab->root.tlsdesc_got = htab->root.sgot->size;
 	  htab->root.sgot->size += 4;
 
-	  htab->dt_tlsdesc_plt = htab->root.splt->size;
+	  htab->root.tlsdesc_plt = htab->root.splt->size;
 	  htab->root.splt->size += 4 * ARRAY_SIZE (dl_tlsdesc_lazy_trampoline);
 	}
     }
@@ -4508,7 +4419,6 @@ nds32_elf_size_dynamic_sections (bfd *ou
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  plt = FALSE;
   relocs = FALSE;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
@@ -4519,7 +4429,7 @@ nds32_elf_size_dynamic_sections (bfd *ou
 	{
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
-	  plt = s->size != 0;
+	  ;
 	}
       else if (s == elf_hash_table (info)->sgot)
 	{
@@ -4569,63 +4479,7 @@ nds32_elf_size_dynamic_sections (bfd *ou
 	return FALSE;
     }
 
-
-  if (htab->root.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in nds32_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (elf_hash_table (info)->splt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (htab->tls_desc_trampoline && plt)
-	{
-	  if (htab->dt_tlsdesc_plt
-	      && (!add_dynamic_entry (DT_TLSDESC_PLT, 0)
-		  || !add_dynamic_entry (DT_TLSDESC_GOT, 0)))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->root, maybe_set_textrel,
-				    (void *) info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 static bfd_reloc_status_type
@@ -4862,7 +4716,7 @@ nds32_elf_output_symbol_hook (struct bfd
       if (bfd_is_const_section (input_sec))
 	source = input_sec->name;
       else
-	source = input_sec->owner->filename;
+	source = bfd_get_filename (input_sec->owner);
 
       fprintf (sym_ld_script, "\t%s = 0x%08lx;\t /* %s */\n",
 	       h->root.root.string,
@@ -5047,7 +4901,7 @@ patch_tls_desc_to_ie (bfd_byte *contents
 
   if (!rz)
     {
-      printf ("%s: %s @ 0x%08x\n", __func__, ibfd->filename,
+      printf ("%s: %s @ 0x%08x\n", __func__, bfd_get_filename (ibfd),
 	      (int) rel->r_offset);
       BFD_ASSERT(0); /* Unsupported pattern.  */
     }
@@ -5827,7 +5681,7 @@ nds32_elf_relocate_section (bfd *		   ou
 	case R_NDS32_SDA15S0_RELA:
 	case R_NDS32_SDA15S0:
 	  align = 0x0;
-handle_sda:
+	handle_sda:
 	  BFD_ASSERT (sec != NULL);
 
 	  /* If the symbol is in the abs section, the out_bfd will be null.
@@ -6155,7 +6009,7 @@ handle_sda:
 	  break;
 	}
 
-check_reloc:
+    check_reloc:
 
       if (r != bfd_reloc_ok)
 	{
@@ -6204,7 +6058,7 @@ check_reloc:
 	      errmsg = _("internal error: unknown error");
 	      /* Fall through.  */
 
-common_error:
+	    common_error:
 	      (*info->callbacks->warning) (info, errmsg, name, input_bfd,
 					   input_section, offset);
 	      break;
@@ -6488,7 +6342,7 @@ nds32_elf_finish_dynamic_sections (bfd *
 	      goto get_vma;
 	    case DT_JMPREL:
 	      s = ehtab->srelplt->output_section;
-get_vma:
+	    get_vma:
 	      BFD_ASSERT (s != NULL);
 	      dyn.d_un.d_ptr = s->vma;
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
@@ -6522,14 +6376,14 @@ get_vma:
 	    case DT_TLSDESC_PLT:
 	      s = htab->root.splt;
 	      dyn.d_un.d_ptr = (s->output_section->vma + s->output_offset
-				+ htab->dt_tlsdesc_plt);
+				+ htab->root.tlsdesc_plt);
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
 
 	    case DT_TLSDESC_GOT:
 	      s = htab->root.sgot;
 	      dyn.d_un.d_ptr = (s->output_section->vma + s->output_offset
-				+ htab->dt_tlsdesc_got);
+				+ htab->root.tlsdesc_got);
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
 	    }
@@ -6592,14 +6446,14 @@ get_vma:
 	    PLT_ENTRY_SIZE;
 	}
 
-      if (htab->dt_tlsdesc_plt)
+      if (htab->root.tlsdesc_plt)
 	{
 	  /* Calculate addresses.  */
 	  asection *sgot = sgot = ehtab->sgot;
 	  bfd_vma pltgot = sgotplt->output_section->vma
 	    + sgotplt->output_offset;
 	  bfd_vma tlsdesc_got = sgot->output_section->vma + sgot->output_offset
-	    + htab->dt_tlsdesc_got;
+	    + htab->root.tlsdesc_got;
 
 	  /* Get GP offset.  */
 	  pltgot -= elf_gp (output_bfd) - 4; /* PLTGOT[1]  */
@@ -6612,7 +6466,7 @@ get_vma:
 	  dl_tlsdesc_lazy_trampoline[5] +=  0xfff & pltgot;
 
 	  /* Insert .plt.  */
-	  nds32_put_trampoline (splt->contents + htab->dt_tlsdesc_plt,
+	  nds32_put_trampoline (splt->contents + htab->root.tlsdesc_plt,
 				dl_tlsdesc_lazy_trampoline,
 				ARRAY_SIZE (dl_tlsdesc_lazy_trampoline));
 	}
@@ -6817,6 +6671,10 @@ nds32_elf_merge_private_bfd_data (bfd *i
   flagword out_fpu_config;
   flagword in_fpu_config;
 
+  /* FIXME: What should be checked when linking shared libraries?  */
+  if ((ibfd->flags & DYNAMIC) != 0)
+    return TRUE;
+
   /* TODO: Revise to use object-attributes instead.  */
   if (!nds32_check_vec_size (ibfd))
     return FALSE;
@@ -7138,15 +6996,6 @@ nds32_elf_check_relocs (bfd *abfd, struc
       return TRUE;
     }
 
-  /* Don't do anything special with non-loaded, non-alloced sections.
-     In particular, any relocs in such sections should not affect GOT
-     and PLT reference counting (ie. we don't allow them to create GOT
-     or PLT entries), there's no possibility or desire to optimize TLS
-     relocs, and there's not much point in propagating relocs to shared
-     libs that the dynamic linker won't relocate.  */
-  if ((sec->flags & SEC_ALLOC) == 0)
-    return TRUE;
-
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
   sym_hashes_end =
@@ -7419,14 +7268,15 @@ nds32_elf_check_relocs (bfd *abfd, struc
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
-		head = &((struct elf_nds32_link_hash_entry *) h)->dyn_relocs;
+		head = &h->dyn_relocs;
 	      else
 		{
 		  asection *s;
 		  void *vpp;
 
 		  Elf_Internal_Sym *isym;
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache, abfd, r_symndx);
+		  isym = bfd_sym_from_r_symndx (&htab->root.sym_cache,
+						abfd, r_symndx);
 		  if (isym == NULL)
 		    return FALSE;
 
@@ -7442,7 +7292,7 @@ nds32_elf_check_relocs (bfd *abfd, struc
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof (*p);
+		  size_t amt = sizeof (*p);
 		  p = (struct elf_dyn_relocs *) bfd_alloc (dynobj, amt);
 		  if (p == NULL)
 		    return FALSE;
@@ -8281,7 +8131,7 @@ nds32_convert_32_to_16 (bfd *abfd, uint3
       goto done;
     }
 
-done:
+ done:
   /* Bit-15 of insn16 should be set for a valid instruction.  */
   if ((insn16 & 0x8000) == 0)
     return 0;
@@ -8603,7 +8453,7 @@ nds32_convert_16_to_32 (bfd *abfd, uint1
       goto done;
     }
 
-done:
+ done:
   if (insn & 0x80000000)
     return 0;
 
@@ -9448,7 +9298,7 @@ nds32_elf_relax_delete_blanks (bfd *abfd
 	      if (p < endp)
 		*p |= 0x80;
 	    }
-done_adjust_diff:
+	done_adjust_diff:
 
 	  if (sec == sect)
 	    {
@@ -12567,21 +12417,19 @@ nds32_elf_relax_section (bfd *abfd, asec
       clean_nds32_elf_blank ();
     }
 
-finish:
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+ finish:
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
 
-  if (isymbuf != NULL && symtab_hdr->contents != (bfd_byte *) isymbuf)
+  if (symtab_hdr->contents != (bfd_byte *) isymbuf)
     free (isymbuf);
 
   return result;
 
-error_return:
+ error_return:
   result = FALSE;
   goto finish;
 }
@@ -12594,6 +12442,18 @@ static struct bfd_elf_special_section co
 };
 
 static bfd_boolean
+nds32_elf_section_flags (const Elf_Internal_Shdr *hdr)
+{
+  const char *name = hdr->bfd_section->name;
+
+  if (strncmp (name, ".sbss", 5) == 0
+      || strncmp (name, ".sdata", 6) == 0)
+    hdr->bfd_section->flags |= SEC_SMALL_DATA;
+
+  return TRUE;
+}
+
+static bfd_boolean
 nds32_elf_output_arch_syms (bfd *output_bfd ATTRIBUTE_UNUSED,
 			    struct bfd_link_info *info,
 			    void *finfo ATTRIBUTE_UNUSED,
@@ -13152,7 +13012,7 @@ nds32_fag_remove_unused_fpbase (bfd *abf
 	goto error_return;
     }
 
-finish:
+ finish:
   if (relax_blank_list)
     {
       nds32_elf_relax_delete_blanks (abfd, sec, relax_blank_list);
@@ -13160,7 +13020,7 @@ finish:
     }
   return result;
 
-error_return:
+ error_return:
   result = FALSE;
   goto finish;
 }
@@ -13291,7 +13151,7 @@ nds32_elf_get_relocated_section_contents
   free (reloc_vector);
   return data;
 
-error_return:
+ error_return:
   free (reloc_vector);
   return NULL;
 }
@@ -13457,7 +13317,7 @@ elf32_nds32_check_relax_group (bfd *abfd
     }
   while (FALSE);
 
-  if ((relocs != NULL) && (elf_section_data (asec)->relocs != relocs))
+  if (elf_section_data (asec)->relocs != relocs)
     free (relocs);
 
   if ((min_id != relax_group_ptr->min_id)
@@ -13596,7 +13456,7 @@ elf32_nds32_unify_relax_group (bfd *abfd
     }
   while (FALSE);
 
-  if (relocs != NULL && elf_section_data (asec)->relocs != relocs)
+  if (elf_section_data (asec)->relocs != relocs)
     free (relocs);
 
   return result;
@@ -14018,19 +13878,17 @@ nds32_elf_unify_tls_model (bfd *inbfd, a
 #endif
     }
 
-finish:
+ finish:
   if (incontents)
     contents = NULL;
 
-  if (internal_relocs != NULL
-      && elf_section_data (insec)->relocs != internal_relocs)
+  if (elf_section_data (insec)->relocs != internal_relocs)
     free (internal_relocs);
 
-  if (contents != NULL
-      && elf_section_data (insec)->this_hdr.contents != contents)
+  if (elf_section_data (insec)->this_hdr.contents != contents)
     free (contents);
 
-  if (local_syms != NULL && symtab_hdr->contents != (bfd_byte *) local_syms)
+  if (symtab_hdr->contents != (bfd_byte *) local_syms)
     free (local_syms);
 
   if (chain.next)
@@ -14047,7 +13905,7 @@ finish:
 
   return result;
 
-error_return:
+ error_return:
   result = FALSE;
   goto finish;
 }
@@ -14093,6 +13951,7 @@ error_return:
 #define elf_backend_object_p			nds32_elf_object_p
 #define elf_backend_final_write_processing	nds32_elf_final_write_processing
 #define elf_backend_special_sections		nds32_elf_special_sections
+#define elf_backend_section_flags		nds32_elf_section_flags
 #define bfd_elf32_bfd_get_relocated_section_contents \
 				nds32_elf_get_relocated_section_contents
 #define bfd_elf32_bfd_is_target_special_symbol	nds32_elf_is_target_special_symbol
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-nds32.h ./bfd/elf32-nds32.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-nds32.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-nds32.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* NDS32-specific support for 32-bit ELF.
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2020 Free Software Foundation, Inc.
    Contributed by Andes Technology Corporation.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -104,10 +104,10 @@ extern void	   bfd_elf32_nds32_set_targe
 						      int, int, FILE *,
 						      int, int, int);
 
-#define nds32_elf_hash_table(info) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((info)->hash)) \
-   == NDS32_ELF_DATA ? \
-   ((struct elf_nds32_link_hash_table *) ((info)->hash)) : NULL)
+#define nds32_elf_hash_table(p) \
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == NDS32_ELF_DATA)	\
+   ? (struct elf_nds32_link_hash_table *) (p)->hash : NULL)
 
 #define elf32_nds32_compute_jump_table_size(htab) \
   ((htab)->next_tls_desc_index * 4)
@@ -122,13 +122,6 @@ struct elf_nds32_link_hash_table
 {
   struct elf_link_hash_table root;
 
-  /* Short-cuts to get to dynamic linker sections.  */
-  asection *sdynbss;
-  asection *srelbss;
-
-  /* Small local sym to section mapping cache.  */
-  struct sym_cache sym_cache;
-
   /* Target dependent options.  */
   int relax_fp_as_gp;		/* --mrelax-omit-fp.  */
   int eliminate_gc_relocs;	/* --meliminate-gc-relocs.  */
@@ -138,16 +131,6 @@ struct elf_nds32_link_hash_table
   /* Disable if linking a dynamically linked executable.  */
   int load_store_relax;
 
-  /* The offset into splt of the PLT entry for the TLS descriptor
-     resolver.  Special values are 0, if not necessary (or not found
-     to be necessary yet), and -1 if needed but not determined
-     yet.  */
-  bfd_vma dt_tlsdesc_plt;
-
-  /* The offset into sgot of the GOT entry used by the PLT entry
-     above.  */
-  bfd_vma dt_tlsdesc_got;
-
   /* Offset in .plt section of tls_nds32_trampoline.  */
   bfd_vma tls_trampoline;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-nios2.c ./bfd/elf32-nios2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-nios2.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-nios2.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for Nios II.
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2020 Free Software Foundation, Inc.
    Contributed by Nigel Gray (ngray@altera.com).
    Contributed by Mentor Graphics, Inc.
 
@@ -1737,9 +1737,6 @@ struct elf32_nios2_link_hash_entry
      symbol.  */
   struct elf32_nios2_stub_hash_entry *hsh_cache;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
 #define GOT_UNKNOWN	0
 #define GOT_NORMAL	1
 #define GOT_TLS_GD	2
@@ -1811,9 +1808,6 @@ struct elf32_nios2_link_hash_table
       bfd_vma offset;
     } tls_ldm_got;
 
-    /* Small local sym cache.  */
-    struct sym_cache sym_cache;
-
     bfd_vma res_n_size;
   };
 
@@ -2039,7 +2033,6 @@ link_hash_newfunc (struct bfd_hash_entry
 
       eh = (struct elf32_nios2_link_hash_entry *) entry;
       eh->hsh_cache = NULL;
-      eh->dyn_relocs = NULL;
       eh->tls_type = GOT_UNKNOWN;
       eh->got_types_used = 0;
     }
@@ -2228,7 +2221,7 @@ nios2_elf32_setup_section_lists (bfd *ou
   unsigned int top_id, top_index;
   asection *section;
   asection **input_list, **list;
-  bfd_size_type amt;
+  size_t amt;
   struct elf32_nios2_link_hash_table *htab = elf32_nios2_hash_table (info);
 
   /* Count the number of input BFDs and find the top input section id.  */
@@ -2490,6 +2483,17 @@ nios2_build_one_stub (struct bfd_hash_en
     = (struct elf32_nios2_stub_hash_entry *) gen_entry;
   asection *stub_sec = hsh->stub_sec;
   bfd_vma sym_value;
+  struct bfd_link_info *info;
+
+  info = (struct bfd_link_info *) in_arg;
+
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (hsh->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    hsh->target_section);
 
   /* Make a note of the offset within the stubs for this entry.  */
   hsh->stub_offset = stub_sec->size;
@@ -2560,7 +2564,7 @@ get_local_syms (bfd *output_bfd ATTRIBUT
   /* We want to read in symbol extension records only once.  To do this
      we need to read in the local symbols in parallel and save them for
      later use; so hold pointers to the local symbols in an array.  */
-  bfd_size_type amt = sizeof (Elf_Internal_Sym *) * htab->bfd_count;
+  size_t amt = sizeof (Elf_Internal_Sym *) * htab->bfd_count;
   all_local_syms = bfd_zmalloc (amt);
   htab->all_local_syms = all_local_syms;
   if (all_local_syms == NULL)
@@ -3062,7 +3066,7 @@ nios2_elf_assign_gp (bfd *output_bfd, bf
 
   h = bfd_hash_lookup (&info->hash->table, "_gp", FALSE, FALSE);
   lh = (struct bfd_link_hash_entry *) h;
-lookup:
+ lookup:
   if (lh)
     {
       switch (lh->type)
@@ -4527,8 +4531,7 @@ nios2_elf32_relocate_section (bfd *outpu
 	    {
 	      (*info->callbacks->warning) (info, msg, name, input_bfd,
 					   input_section, rel->r_offset);
-	      if (msgbuf)
-		free (msgbuf);
+	      free (msgbuf);
 	      return FALSE;
 	    }
 	}
@@ -4539,10 +4542,10 @@ nios2_elf32_relocate_section (bfd *outpu
 /* Implement elf-backend_section_flags:
    Convert NIOS2 specific section flags to bfd internal section flags.  */
 static bfd_boolean
-nios2_elf32_section_flags (flagword *flags, const Elf_Internal_Shdr *hdr)
+nios2_elf32_section_flags (const Elf_Internal_Shdr *hdr)
 {
   if (hdr->sh_flags & SHF_NIOS2_GPREL)
-    *flags |= SEC_SMALL_DATA;
+    hdr->bfd_section->flags |= SEC_SMALL_DATA;
 
   return TRUE;
 }
@@ -4631,37 +4634,6 @@ nios2_elf32_copy_indirect_symbol (struct
   edir = (struct elf32_nios2_link_hash_entry *) dir;
   eind = (struct elf32_nios2_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect
       && dir->got.refcount <= 0)
     {
@@ -4916,7 +4888,7 @@ nios2_elf32_check_relocs (bfd *abfd, str
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
-		head = &((struct elf32_nios2_link_hash_entry *) h)->dyn_relocs;
+		head = &h->dyn_relocs;
 	      else
 		{
 		  /* Track dynamic relocs needed for local syms too.
@@ -4927,7 +4899,7 @@ nios2_elf32_check_relocs (bfd *abfd, str
 		  void *vpp;
 		  Elf_Internal_Sym *isym;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->root.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    return FALSE;
@@ -4943,7 +4915,7 @@ nios2_elf32_check_relocs (bfd *abfd, str
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 		  p = ((struct elf_dyn_relocs *)
 		       bfd_alloc (htab->root.dynobj, amt));
 		  if (p == NULL)
@@ -5621,7 +5593,7 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -5637,7 +5609,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -5650,12 +5622,12 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -5690,13 +5662,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * sizeof (Elf32_External_Rela);
@@ -5777,8 +5749,6 @@ nios2_elf32_size_dynamic_sections (bfd *
 		{
 		  srel = elf_section_data (p->sec)->sreloc;
 		  srel->size += p->count * sizeof (Elf32_External_Rela);
-		  if ((p->sec->output_section->flags & SEC_READONLY) != 0)
-		    info->flags |= DF_TEXTREL;
 		}
 	    }
 	}
@@ -5904,45 +5874,7 @@ nios2_elf32_size_dynamic_sections (bfd *
   if (htab->res_n_size)
     elf_link_hash_traverse (& htab->root, adjust_dynrelocs, info);
 
-  if (htab->root.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in elf_nios2_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (!bfd_link_pic (info) && !add_dynamic_entry (DT_DEBUG, 0))
-	return FALSE;
-
-      if (htab->root.sgotplt->size != 0
-	  && !add_dynamic_entry (DT_PLTGOT, 0))
-	return FALSE;
-
-      if (htab->root.splt->size != 0
-	  && (!add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0)))
-	return FALSE;
-
-      if (relocs
-	  && (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela))))
-	return FALSE;
-
-      if (!bfd_link_pic (info) && !add_dynamic_entry (DT_NIOS2_GP, 0))
-	return FALSE;
-
-      if ((info->flags & DF_TEXTREL) != 0
-	  && !add_dynamic_entry (DT_TEXTREL, 0))
-	return FALSE;
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Free the derived linker hash table.  */
@@ -5961,7 +5893,7 @@ static struct bfd_link_hash_table *
 nios2_elf32_link_hash_table_create (bfd *abfd)
 {
   struct elf32_nios2_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf32_nios2_link_hash_table);
+  size_t amt = sizeof (struct elf32_nios2_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -6040,7 +5972,7 @@ nios2_elf_add_symbol_hook (bfd *abfd,
       htab = elf32_nios2_hash_table (info);
       if (htab->sbss == NULL)
 	{
-	  flagword flags = SEC_IS_COMMON | SEC_LINKER_CREATED;
+	  flagword flags = SEC_IS_COMMON | SEC_SMALL_DATA | SEC_LINKER_CREATED;
 
 	  if (htab->root.dynobj == NULL)
 	    htab->root.dynobj = abfd;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-nios2.h ./bfd/elf32-nios2.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-nios2.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-nios2.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Nios II support for 32-bit ELF
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2020 Free Software Foundation, Inc.
    Contributed by Mentor Graphics
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-or1k.c ./bfd/elf32-or1k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-or1k.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-or1k.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Or1k-specific support for 32-bit ELF.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
    Contributed for OR32 by Johan Rydberg, jrydberg@opencores.org
 
    PIC parts added by Stefan Kristiansson, stefan.kristiansson@saunalahti.fi,
@@ -873,21 +873,25 @@ static const struct or1k_reloc_map or1k_
   { BFD_RELOC_OR1K_PLTA26,	R_OR1K_PLTA26 },
 };
 
+/* tls_type is a mask used to track how each symbol is accessed,
+   it may be accessed via multiple types of TLS access methods.
+   We track this for sizing (allocating got + relocation section space) and
+   for how to process relocations.  */
 #define TLS_UNKNOWN    0
 #define TLS_NONE       1
 #define TLS_GD	       2
-#define TLS_LD	       3
-#define TLS_IE	       4
-#define TLS_LE	       5
+#define TLS_LD	       4
+#define TLS_IE	       8
+#define TLS_LE	      16
+
+/* The size of the TLS thread control block, used to offset LE access.  */
+#define TCB_SIZE      16
 
 /* ELF linker hash entry.  */
 struct elf_or1k_link_hash_entry
 {
   struct elf_link_hash_entry root;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   /* Track type of TLS access.  */
   unsigned char tls_type;
 };
@@ -912,16 +916,14 @@ struct elf_or1k_link_hash_table
 {
   struct elf_link_hash_table root;
 
-  /* Small local sym to section mapping cache.  */
-  struct sym_cache sym_sec;
-
   bfd_boolean saw_plta;
 };
 
 /* Get the ELF linker hash table from a link_info structure.  */
 #define or1k_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-   == OR1K_ELF_DATA ? ((struct elf_or1k_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == OR1K_ELF_DATA)		\
+   ? (struct elf_or1k_link_hash_table *) (p)->hash : NULL)
 
 static bfd_boolean
 elf_or1k_mkobject (bfd *abfd)
@@ -957,7 +959,6 @@ or1k_elf_link_hash_newfunc (struct bfd_h
       struct elf_or1k_link_hash_entry *eh;
 
       eh = (struct elf_or1k_link_hash_entry *) ret;
-      eh->dyn_relocs = NULL;
       eh->tls_type = TLS_UNKNOWN;
     }
 
@@ -970,7 +971,7 @@ static struct bfd_link_hash_table *
 or1k_elf_link_hash_table_create (bfd *abfd)
 {
   struct elf_or1k_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_or1k_link_hash_table);
+  size_t amt = sizeof (struct elf_or1k_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -1043,19 +1044,49 @@ or1k_info_to_howto_rela (bfd * abfd,
   return TRUE;
 }
 
-
 /* Return the relocation value for @tpoff relocations..  */
 static bfd_vma
-tpoff (struct bfd_link_info *info, bfd_vma address)
+tpoff (struct bfd_link_info *info, bfd_vma address, bfd_boolean dynamic)
 {
+  struct elf_link_hash_table *htab = elf_hash_table (info);
+  bfd_vma base;
+
   /* If tls_sec is NULL, we should have signalled an error already.  */
-  if (elf_hash_table (info)->tls_sec == NULL)
+  if (htab->tls_sec == NULL)
     return 0;
 
-  /* The thread pointer on or1k stores the address after the TCB where
-     the data is, just compute the difference. No need to compensate
-     for the size of TCB.  */
-  return (address - elf_hash_table (info)->tls_sec->vma);
+  if (dynamic)
+    return address - htab->tls_sec->vma;
+  else
+    {
+      /* On or1k, the tp points to just after the tcb, if we have an alignment
+	 greater than the tcb size we need to offset by the alignment difference.  */
+      base = align_power ((bfd_vma) TCB_SIZE, htab->tls_sec->alignment_power)
+	     - TCB_SIZE;
+
+      /* The thread pointer on or1k stores the address after the TCB where
+	 the data is, just compute the difference. No need to compensate
+	 for the size of TCB.  */
+      return address - htab->tls_sec->vma + base;
+    }
+}
+
+/* If we have both IE and GD accesses to a symbol the IE relocations should be
+   offset by 8 bytes because the got contains both GD and IE entries.  */
+static bfd_vma
+or1k_initial_exec_offset (reloc_howto_type *howto, unsigned char tls_type_mask)
+{
+   switch (howto->type)
+     {
+     case R_OR1K_TLS_IE_HI16:
+     case R_OR1K_TLS_IE_LO16:
+     case R_OR1K_TLS_IE_PG21:
+     case R_OR1K_TLS_IE_LO13:
+     case R_OR1K_TLS_IE_AHI16:
+       return (tls_type_mask & TLS_GD) != 0 ? 8 : 0;
+     default:
+       return 0;
+     }
 }
 
 /* Like _bfd_final_link_relocate, but handles non-contiguous fields.  */
@@ -1226,7 +1257,6 @@ or1k_elf_relocate_section (bfd *output_b
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
   struct elf_or1k_link_hash_table *htab = or1k_elf_hash_table (info);
-  bfd *dynobj;
   asection *sreloc;
   bfd_vma *local_got_offsets;
   asection *sgot, *splt;
@@ -1236,7 +1266,6 @@ or1k_elf_relocate_section (bfd *output_b
   if (htab == NULL)
     return FALSE;
 
-  dynobj = htab->root.dynobj;
   local_got_offsets = elf_local_got_offsets (input_bfd);
 
   sreloc = elf_section_data (input_section)->sreloc;
@@ -1254,7 +1283,7 @@ or1k_elf_relocate_section (bfd *output_b
       got_sym_value = (hgot->root.u.def.value
 		       + hgot->root.u.def.section->output_section->vma
 		       + hgot->root.u.def.section->output_offset);
-    got_base = sgot->output_section->vma + sgot->output_offset;
+      got_base = sgot->output_section->vma + sgot->output_offset;
     }
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
@@ -1416,16 +1445,16 @@ or1k_elf_relocate_section (bfd *output_b
 
 		      /* We need to generate a R_OR1K_RELATIVE reloc
 			 for the dynamic linker.  */
-			srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
+		      srelgot = htab->root.srelgot;
 		      BFD_ASSERT (srelgot != NULL);
 
 		      outrel.r_offset = got_base + off;
 		      outrel.r_info = ELF32_R_INFO (0, R_OR1K_RELATIVE);
 		      outrel.r_addend = relocation;
 		      loc = srelgot->contents;
-			loc += (srelgot->reloc_count
-				* sizeof (Elf32_External_Rela));
-		      bfd_elf32_swap_reloca_out (output_bfd, &outrel,loc);
+		      loc += (srelgot->reloc_count
+			      * sizeof (Elf32_External_Rela));
+		      bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
 		      ++srelgot->reloc_count;
 		    }
 		  local_got_offsets[r_symndx] |= 1;
@@ -1591,54 +1620,80 @@ or1k_elf_relocate_section (bfd *output_b
 	  {
 	    bfd_vma gotoff;
 	    Elf_Internal_Rela rela;
+	    asection *srelgot;
 	    bfd_byte *loc;
-	    int dynamic;
+	    bfd_boolean dynamic;
+	    int indx = 0;
+	    unsigned char tls_type;
 
-	    sreloc = bfd_get_section_by_name (dynobj, ".rela.got");
+	    srelgot = htab->root.srelgot;
 
 	    /* Mark as TLS related GOT entry by setting
-	       bit 2 as well as bit 1.  */
+	       bit 2 to indcate TLS and bit 1 to indicate GOT.  */
 	    if (h != NULL)
 	      {
 		gotoff = h->got.offset;
+		tls_type = ((struct elf_or1k_link_hash_entry *) h)->tls_type;
 		h->got.offset |= 3;
 	      }
 	    else
 	      {
+		unsigned char *local_tls_type;
+
 		gotoff = local_got_offsets[r_symndx];
+		local_tls_type = (unsigned char *) elf_or1k_local_tls_type (input_bfd);
+		tls_type = local_tls_type == NULL ? TLS_NONE
+						  : local_tls_type[r_symndx];
 		local_got_offsets[r_symndx] |= 3;
 	      }
 
 	    /* Only process the relocation once.  */
-	    if (gotoff & 1)
+	    if ((gotoff & 1) != 0)
 	      {
-		relocation = sgot->output_offset + (gotoff  & ~3);
+		gotoff += or1k_initial_exec_offset (howto, tls_type);
+
+		/* The PG21 and LO13 relocs are pc-relative, while the
+		   rest are GOT relative.  */
+		relocation = got_base + (gotoff & ~3);
+		if (!(r_type == R_OR1K_TLS_GD_PG21
+		    || r_type == R_OR1K_TLS_GD_LO13
+		    || r_type == R_OR1K_TLS_IE_PG21
+		    || r_type == R_OR1K_TLS_IE_LO13))
+		  relocation -= got_sym_value;
 		break;
 	      }
 
 	    BFD_ASSERT (elf_hash_table (info)->hgot == NULL
 			|| elf_hash_table (info)->hgot->root.u.def.value == 0);
 
-	    /* Dynamic entries will require relocations. if we do not need
+	    if (h != NULL)
+	      {
+		bfd_boolean dyn = htab->root.dynamic_sections_created;
+		bfd_boolean pic = bfd_link_pic (info);
+
+		if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, pic, h)
+		    && (!pic || !SYMBOL_REFERENCES_LOCAL (info, h)))
+		  indx = h->dynindx;
+	      }
+
+	    /* Dynamic entries will require relocations.  If we do not need
 	       them we will just use the default R_OR1K_NONE and
 	       not set anything.  */
-	    dynamic = bfd_link_pic (info)
-	      || (sec && (sec->flags & SEC_ALLOC) != 0
-		  && h != NULL
-		  && (h->root.type == bfd_link_hash_defweak || !h->def_regular));
+	    dynamic = (bfd_link_pic (info) || indx != 0)
+		       && (h == NULL
+			   || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+			   || h->root.type != bfd_link_hash_undefweak);
 
 	    /* Shared GD.  */
-	    if (dynamic
-		&& (howto->type == R_OR1K_TLS_GD_HI16
-		    || howto->type == R_OR1K_TLS_GD_LO16
-		    || howto->type == R_OR1K_TLS_GD_PG21
-		    || howto->type == R_OR1K_TLS_GD_LO13))
+	    if (dynamic && ((tls_type & TLS_GD) != 0))
 	      {
 		int i;
 
 		/* Add DTPMOD and DTPOFF GOT and rela entries.  */
 		for (i = 0; i < 2; ++i)
 		  {
+		    BFD_ASSERT (srelgot->contents != NULL);
+
 		    rela.r_offset = got_base + gotoff + i*4;
 		    if (h != NULL && h->dynindx != -1)
 		      {
@@ -1650,30 +1705,33 @@ or1k_elf_relocate_section (bfd *output_b
 		      {
 			rela.r_info = ELF32_R_INFO (0,
 			    (i == 0 ? R_OR1K_TLS_DTPMOD : R_OR1K_TLS_DTPOFF));
-			rela.r_addend = tpoff (info, relocation);
+			rela.r_addend =
+			    (i == 0 ? 0 : tpoff (info, relocation, dynamic));
 		      }
 
-		    loc = sreloc->contents;
-		    loc += sreloc->reloc_count++ *
-		      sizeof (Elf32_External_Rela);
+		    loc = srelgot->contents;
+		    loc += (srelgot->reloc_count++
+			    * sizeof (Elf32_External_Rela));
 
 		    bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
 		    bfd_put_32 (output_bfd, 0, sgot->contents + gotoff + i*4);
 		  }
 	      }
 	    /* Static GD.  */
-	    else if (howto->type == R_OR1K_TLS_GD_HI16
-		     || howto->type == R_OR1K_TLS_GD_LO16
-		     || howto->type == R_OR1K_TLS_GD_PG21
-		     || howto->type == R_OR1K_TLS_GD_LO13)
+	    else if ((tls_type & TLS_GD) != 0)
 	      {
 		bfd_put_32 (output_bfd, 1, sgot->contents + gotoff);
-		bfd_put_32 (output_bfd, tpoff (info, relocation),
+		bfd_put_32 (output_bfd, tpoff (info, relocation, dynamic),
 		    sgot->contents + gotoff + 4);
 	      }
+
+	    gotoff += or1k_initial_exec_offset (howto, tls_type);
+
 	    /* Shared IE.  */
-	    else if (dynamic)
+	    if (dynamic && ((tls_type & TLS_IE) != 0))
 	      {
+		BFD_ASSERT (srelgot->contents != NULL);
+
 		/* Add TPOFF GOT and rela entries.  */
 		rela.r_offset = got_base + gotoff;
 		if (h != NULL && h->dynindx != -1)
@@ -1684,21 +1742,19 @@ or1k_elf_relocate_section (bfd *output_b
 		else
 		  {
 		    rela.r_info = ELF32_R_INFO (0, R_OR1K_TLS_TPOFF);
-		    rela.r_addend = tpoff (info, relocation);
+		    rela.r_addend = tpoff (info, relocation, dynamic);
 		  }
 
-		loc = sreloc->contents;
-		loc += sreloc->reloc_count++ * sizeof (Elf32_External_Rela);
+		loc = srelgot->contents;
+		loc += srelgot->reloc_count++ * sizeof (Elf32_External_Rela);
 
 		bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
 		bfd_put_32 (output_bfd, 0, sgot->contents + gotoff);
 	      }
 	    /* Static IE.  */
-	    else
-	      {
-		bfd_put_32 (output_bfd, tpoff (info, relocation),
-			    sgot->contents + gotoff);
-	      }
+	    else if ((tls_type & TLS_IE) != 0)
+	      bfd_put_32 (output_bfd, tpoff (info, relocation, dynamic),
+			  sgot->contents + gotoff);
 
 	    /* The PG21 and LO13 relocs are pc-relative, while the
 	       rest are GOT relative.  */
@@ -1716,7 +1772,7 @@ or1k_elf_relocate_section (bfd *output_b
 	case R_OR1K_TLS_LE_AHI16:
 	case R_OR1K_TLS_LE_SLO16:
 	  /* Relocation is offset from TP.  */
-	  relocation = tpoff (info, relocation);
+	  relocation = tpoff (info, relocation, 0);
 	  break;
 
 	case R_OR1K_TLS_DTPMOD:
@@ -1822,15 +1878,6 @@ or1k_elf_check_relocs (bfd *abfd,
   if (bfd_link_relocatable (info))
     return TRUE;
 
-  /* Don't do anything special with non-loaded, non-alloced sections.
-     In particular, any relocs in such sections should not affect GOT
-     and PLT reference counting (ie. we don't allow them to create GOT
-     or PLT entries), there's no possibility or desire to optimize TLS
-     relocs, and there's not much point in propagating relocs to shared
-     libs that the dynamic linker won't relocate.  */
-  if ((sec->flags & SEC_ALLOC) == 0)
-    return TRUE;
-
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
 
@@ -1895,7 +1942,7 @@ or1k_elf_check_relocs (bfd *abfd,
 
       /* Record TLS type.  */
       if (h != NULL)
-	  ((struct elf_or1k_link_hash_entry *) h)->tls_type = tls_type;
+	  ((struct elf_or1k_link_hash_entry *) h)->tls_type |= tls_type;
       else
 	{
 	  unsigned char *local_tls_type;
@@ -1912,7 +1959,7 @@ or1k_elf_check_relocs (bfd *abfd,
 		return FALSE;
 	      elf_or1k_local_tls_type (abfd) = local_tls_type;
 	    }
-	  local_tls_type[r_symndx] = tls_type;
+	  local_tls_type[r_symndx] |= tls_type;
 	}
 
       switch (r_type)
@@ -2047,7 +2094,7 @@ or1k_elf_check_relocs (bfd *abfd,
 		    && (h->root.type == bfd_link_hash_defweak
 			|| !h->def_regular)))
 	      {
-		struct elf_dyn_relocs *p;
+		struct elf_dyn_relocs *sec_relocs;
 		struct elf_dyn_relocs **head;
 
 		/* When creating a shared object, we must copy these
@@ -2091,7 +2138,7 @@ or1k_elf_check_relocs (bfd *abfd,
 		/* If this is a global symbol, we count the number of
 		   relocations we need for this symbol.  */
 		if (h != NULL)
-		  head = &((struct elf_or1k_link_hash_entry *) h)->dyn_relocs;
+		  head = &h->dyn_relocs;
 		else
 		  {
 		    /* Track dynamic relocs needed for local syms too.
@@ -2102,7 +2149,7 @@ or1k_elf_check_relocs (bfd *abfd,
 		    Elf_Internal_Sym *isym;
 		    void *vpp;
 
-		    isym = bfd_sym_from_r_symndx (&htab->sym_sec,
+		    isym = bfd_sym_from_r_symndx (&htab->root.sym_cache,
 						  abfd, r_symndx);
 		    if (isym == NULL)
 		      return FALSE;
@@ -2115,24 +2162,26 @@ or1k_elf_check_relocs (bfd *abfd,
 		    head = (struct elf_dyn_relocs **) vpp;
 		  }
 
-		p = *head;
-		if (p == NULL || p->sec != sec)
+		sec_relocs = *head;
+		/* Allocate this sections dynamic reolcations structure if this
+		   is a new section.  */
+		if (sec_relocs == NULL || sec_relocs->sec != sec)
 		  {
-		    bfd_size_type amt = sizeof *p;
-		    p = ((struct elf_dyn_relocs *)
-			 bfd_alloc (htab->root.dynobj, amt));
-		    if (p == NULL)
+		    size_t amt = sizeof *sec_relocs;
+		    sec_relocs = ((struct elf_dyn_relocs *)
+				  bfd_alloc (htab->root.dynobj, amt));
+		    if (sec_relocs == NULL)
 		      return FALSE;
-		    p->next = *head;
-		    *head = p;
-		    p->sec = sec;
-		    p->count = 0;
-		    p->pc_count = 0;
+		    sec_relocs->next = *head;
+		    *head = sec_relocs;
+		    sec_relocs->sec = sec;
+		    sec_relocs->count = 0;
+		    sec_relocs->pc_count = 0;
 		  }
 
-		p->count += 1;
+		sec_relocs->count += 1;
 		if (r_type == R_OR1K_INSN_REL_26)
-		  p->pc_count += 1;
+		  sec_relocs->pc_count += 1;
 	      }
 	  }
 	  break;
@@ -2402,14 +2451,14 @@ or1k_elf_finish_dynamic_symbol (bfd *out
       && (h->got.offset & 2) == 0) /* Homemade TLS check.  */
     {
       asection *sgot;
-      asection *srela;
+      asection *srelgot;
       Elf_Internal_Rela rela;
 
       /* This symbol has an entry in the global offset table.  Set it
 	 up.  */
       sgot = htab->root.sgot;
-      srela = htab->root.srelgot;
-      BFD_ASSERT (sgot != NULL && srela != NULL);
+      srelgot = htab->root.srelgot;
+      BFD_ASSERT (sgot != NULL && srelgot != NULL);
 
       rela.r_offset = (sgot->output_section->vma
 		       + sgot->output_offset
@@ -2435,10 +2484,10 @@ or1k_elf_finish_dynamic_symbol (bfd *out
 	  rela.r_addend = 0;
 	}
 
-      loc = srela->contents;
-      loc += srela->reloc_count * sizeof (Elf32_External_Rela);
+      loc = srelgot->contents;
+      loc += srelgot->reloc_count * sizeof (Elf32_External_Rela);
       bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
-      ++srela->reloc_count;
+      ++srelgot->reloc_count;
     }
 
   if (h->needs_copy)
@@ -2487,24 +2536,6 @@ or1k_elf_reloc_type_class (const struct
     }
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-  struct elf_or1k_link_hash_entry *eh = (struct elf_or1k_link_hash_entry *) h;
-
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -2591,7 +2622,7 @@ or1k_elf_adjust_dynamic_symbol (struct b
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (!readonly_dynrelocs (h))
+  if (!_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -2634,6 +2665,56 @@ or1k_elf_adjust_dynamic_symbol (struct b
   return _bfd_elf_adjust_dynamic_copy (info, h, s);
 }
 
+/* Caclulate an update the sizes required for a symbol in the GOT and
+   RELA relocation section based on the TLS_TYPE and whether or not the symbol
+   is DYNAMIC.
+
+   Symbols with TLS_GD access require 8 bytes in the GOT and, if dynamic,
+   require two relocation entries.  Symbols with TLS_IE access require 4 bytes
+   in the GOT and, if dynamic, require one relocation entry.  Symbols may have
+   both TLS_GD and TLS_IE access to be accounted for.
+
+   Other symbols require 4 bytes in the GOT table and, if dynamic, require one
+   relocation entry.  */
+
+static void
+or1k_set_got_and_rela_sizes (const unsigned char tls_type,
+			     const bfd_boolean dynamic,
+			     bfd_vma *got_size,
+			     bfd_vma *rela_size)
+{
+  bfd_boolean is_tls_entry = FALSE;
+
+  /* TLS GD requires two GOT entries and two relocs.  */
+  if ((tls_type & TLS_GD) != 0)
+    {
+      *got_size += 8;
+      is_tls_entry = TRUE;
+    }
+
+  if ((tls_type & TLS_IE) != 0)
+    {
+      *got_size += 4;
+      is_tls_entry = TRUE;
+    }
+
+  if (is_tls_entry == FALSE)
+    *got_size += 4;
+
+  if (dynamic)
+    {
+      if ((tls_type & TLS_GD) != 0)
+	*rela_size += 2 * sizeof (Elf32_External_Rela);
+
+      if ((tls_type & TLS_IE) != 0)
+	*rela_size += sizeof (Elf32_External_Rela);
+
+      if (is_tls_entry == FALSE)
+	*rela_size += sizeof (Elf32_External_Rela);
+    }
+}
+
+
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
@@ -2642,8 +2723,7 @@ allocate_dynrelocs (struct elf_link_hash
 {
   struct bfd_link_info *info;
   struct elf_or1k_link_hash_table *htab;
-  struct elf_or1k_link_hash_entry *eh;
-  struct elf_dyn_relocs *p;
+  struct elf_dyn_relocs *sec_relocs;
 
   if (h->root.type == bfd_link_hash_indirect)
     return TRUE;
@@ -2653,8 +2733,6 @@ allocate_dynrelocs (struct elf_link_hash
   if (htab == NULL)
     return FALSE;
 
-  eh = (struct elf_or1k_link_hash_entry *) h;
-
   if (htab->root.dynamic_sections_created
       && h->plt.refcount > 0)
     {
@@ -2669,14 +2747,14 @@ allocate_dynrelocs (struct elf_link_hash
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
 	{
-	  asection *s = htab->root.splt;
+	  asection *splt = htab->root.splt;
 
 	  /* If this is the first .plt entry, make room for the special
 	     first entry.  */
-	  if (s->size == 0)
-	    s->size = PLT_ENTRY_SIZE;
+	  if (splt->size == 0)
+	    splt->size = PLT_ENTRY_SIZE;
 
-	  h->plt.offset = s->size;
+	  h->plt.offset = splt->size;
 
 	  /* If this symbol is not defined in a regular file, and we are
 	     not generating a shared library, then set the symbol to this
@@ -2686,12 +2764,12 @@ allocate_dynrelocs (struct elf_link_hash
 	  if (! bfd_link_pic (info)
 	      && !h->def_regular)
 	    {
-	      h->root.u.def.section = s;
+	      h->root.u.def.section = splt;
 	      h->root.u.def.value = h->plt.offset;
 	    }
 
 	  /* Make room for this entry.  */
-	  s->size += PLT_ENTRY_SIZE;
+	  splt->size += PLT_ENTRY_SIZE;
 
 	  /* We also need to make an entry in the .got.plt section, which
 	     will be placed in the .got section by the linker script.  */
@@ -2714,7 +2792,7 @@ allocate_dynrelocs (struct elf_link_hash
 
   if (h->got.refcount > 0)
     {
-      asection *s;
+      asection *sgot;
       bfd_boolean dyn;
       unsigned char tls_type;
 
@@ -2727,30 +2805,21 @@ allocate_dynrelocs (struct elf_link_hash
 	    return FALSE;
 	}
 
-      s = htab->root.sgot;
+      sgot = htab->root.sgot;
 
-      h->got.offset = s->size;
+      h->got.offset = sgot->size;
 
       tls_type = ((struct elf_or1k_link_hash_entry *) h)->tls_type;
 
-      /* TLS GD requires two GOT and two relocs.  */
-      if (tls_type == TLS_GD)
-	s->size += 8;
-      else
-	s->size += 4;
       dyn = htab->root.dynamic_sections_created;
-      if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h))
-	{
-	  if (tls_type == TLS_GD)
-	    htab->root.srelgot->size += 2 * sizeof (Elf32_External_Rela);
-	  else
-	    htab->root.srelgot->size += sizeof (Elf32_External_Rela);
-	}
+      dyn = WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h);
+      or1k_set_got_and_rela_sizes (tls_type, dyn,
+				   &sgot->size, &htab->root.srelgot->size);
     }
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -2765,24 +2834,24 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL;)
+	  for (pp = &h->dyn_relocs; (sec_relocs = *pp) != NULL;)
 	    {
-	      p->count -= p->pc_count;
-	      p->pc_count = 0;
-	      if (p->count == 0)
-		*pp = p->next;
+	      sec_relocs->count -= sec_relocs->pc_count;
+	      sec_relocs->pc_count = 0;
+	      if (sec_relocs->count == 0)
+		*pp = sec_relocs->next;
 	      else
-		pp = &p->next;
+		pp = &sec_relocs->next;
 	    }
 	}
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -2822,48 +2891,23 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (sec_relocs = h->dyn_relocs;
+       sec_relocs != NULL;
+       sec_relocs = sec_relocs->next)
     {
-      asection *sreloc = elf_section_data (p->sec)->sreloc;
-      sreloc->size += p->count * sizeof (Elf32_External_Rela);
+      asection *sreloc = elf_section_data (sec_relocs->sec)->sreloc;
+      sreloc->size += sec_relocs->count * sizeof (Elf32_External_Rela);
     }
 
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -2911,26 +2955,28 @@ or1k_elf_size_dynamic_sections (bfd *out
 
       for (s = ibfd->sections; s != NULL; s = s->next)
 	{
-	  struct elf_dyn_relocs *p;
+	  struct elf_dyn_relocs *sec_relocs;
 
-	  for (p = ((struct elf_dyn_relocs *)
-		    elf_section_data (s)->local_dynrel);
-	       p != NULL;
-	       p = p->next)
+	  for (sec_relocs = ((struct elf_dyn_relocs *)
+			     elf_section_data (s)->local_dynrel);
+	       sec_relocs != NULL;
+	       sec_relocs = sec_relocs->next)
 	    {
-	      if (! bfd_is_abs_section (p->sec)
-		  && bfd_is_abs_section (p->sec->output_section))
+	      if (! bfd_is_abs_section (sec_relocs->sec)
+		  && bfd_is_abs_section (sec_relocs->sec->output_section))
 		{
 		  /* Input section has been discarded, either because
 		     it is a copy of a linkonce section or due to
 		     linker script /DISCARD/, so we'll be discarding
 		     the relocs too.  */
 		}
-	      else if (p->count != 0)
+	      else if (sec_relocs->count != 0)
 		{
-		  srel = elf_section_data (p->sec)->sreloc;
-		  srel->size += p->count * sizeof (Elf32_External_Rela);
-		  if ((p->sec->output_section->flags & SEC_READONLY) != 0)
+		  srel = elf_section_data (sec_relocs->sec)->sreloc;
+		  srel->size += sec_relocs->count
+				* sizeof (Elf32_External_Rela);
+		  if ((sec_relocs->sec->output_section->flags & SEC_READONLY)
+		      != 0)
 		    info->flags |= DF_TEXTREL;
 		}
 	    }
@@ -2950,20 +2996,13 @@ or1k_elf_size_dynamic_sections (bfd *out
 	{
 	  if (*local_got > 0)
 	    {
-	      *local_got = s->size;
+	      unsigned char tls_type = (local_tls_type == NULL)
+					? TLS_UNKNOWN
+					: *local_tls_type;
 
-	      /* TLS GD requires two GOT and two relocs.  */
-	      if (local_tls_type != NULL && *local_tls_type == TLS_GD)
-		s->size += 8;
-	      else
-		s->size += 4;
-	      if (bfd_link_pic (info))
-		{
-		  if (local_tls_type != NULL && *local_tls_type == TLS_GD)
-		    srel->size += 2 * sizeof (Elf32_External_Rela);
-		  else
-		    srel->size += sizeof (Elf32_External_Rela);
-		}
+	      *local_got = s->size;
+	      or1k_set_got_and_rela_sizes (tls_type, bfd_link_pic (info),
+					   &s->size, &srel->size);
 	    }
 	  else
 
@@ -3037,54 +3076,7 @@ or1k_elf_size_dynamic_sections (bfd *out
 	return FALSE;
     }
 
-  if (htab->root.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in or1k_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-     if (bfd_link_executable (info))
-       {
-	 if (! add_dynamic_entry (DT_DEBUG, 0))
-	   return FALSE;
-       }
-
-     if (htab->root.splt->size != 0)
-       {
-	 if (! add_dynamic_entry (DT_PLTGOT, 0)
-	     || ! add_dynamic_entry (DT_PLTRELSZ, 0)
-	     || ! add_dynamic_entry (DT_PLTREL, DT_RELA)
-	     || ! add_dynamic_entry (DT_JMPREL, 0))
-	   return FALSE;
-	}
-
-     if (relocs)
-       {
-	 if (! add_dynamic_entry (DT_RELA, 0)
-	     || ! add_dynamic_entry (DT_RELASZ, 0)
-	     || ! add_dynamic_entry (DT_RELAENT,
-				     sizeof (Elf32_External_Rela)))
-	   return FALSE;
-
-	 /* If any dynamic relocs apply to a read-only section,
-	    then we need a DT_TEXTREL entry.  */
-	 if ((info->flags & DF_TEXTREL) == 0)
-	   elf_link_hash_traverse (&htab->root, maybe_set_textrel, info);
-
-	 if ((info->flags & DF_TEXTREL) != 0)
-	   {
-	     if (! add_dynamic_entry (DT_TEXTREL, 0))
-	       return FALSE;
-	   }
-       }
-    }
-
-#undef add_dynamic_entry
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
@@ -3100,37 +3092,6 @@ or1k_elf_copy_indirect_symbol (struct bf
   edir = (struct elf_or1k_link_hash_entry *) dir;
   eind = (struct elf_or1k_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL;)
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect)
     {
       if (dir->got.refcount <= 0)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-pj.c ./bfd/elf32-pj.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-pj.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-pj.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* picoJava specific support for 32-bit ELF
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Contributed by Steve Chamberlan of Transmeta (sac@pobox.com).
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-ppc.c ./bfd/elf32-ppc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-ppc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-ppc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* PowerPC-specific support for 32-bit ELF
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2020 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -1332,15 +1332,21 @@ ppc_elf_section_from_shdr (bfd *abfd,
     return FALSE;
 
   newsect = hdr->bfd_section;
-  flags = bfd_section_flags (newsect);
+  flags = 0;
   if (hdr->sh_flags & SHF_EXCLUDE)
     flags |= SEC_EXCLUDE;
 
   if (hdr->sh_type == SHT_ORDERED)
     flags |= SEC_SORT_ENTRIES;
 
-  bfd_set_section_flags (newsect, flags);
-  return TRUE;
+  if (strncmp (name, ".PPC.EMB", 8) == 0)
+    name += 8;
+  if (strncmp (name, ".sbss", 5) == 0
+      || strncmp (name, ".sdata", 6) == 0)
+    flags |= SEC_SMALL_DATA;
+
+  return (flags == 0
+	  || bfd_set_section_flags (newsect, newsect->flags | flags));
 }
 
 /* Set up any other section flags and such that may be necessary.  */
@@ -1394,7 +1400,7 @@ ppc_elf_modify_segment_map (bfd *abfd,
   for (m = elf_seg_map (abfd); m != NULL; m = m->next)
     {
       struct elf_segment_map *n;
-      bfd_size_type amt;
+      size_t amt;
       unsigned int j, k;
       unsigned int p_flags;
 
@@ -1627,8 +1633,7 @@ ppc_elf_begin_write_processing (bfd *abf
       apuinfo_set = TRUE;
       if (largest_input_size < asec->size)
 	{
-	  if (buffer)
-	    free (buffer);
+	  free (buffer);
 	  largest_input_size = asec->size;
 	  buffer = bfd_malloc (largest_input_size);
 	  if (!buffer)
@@ -1686,8 +1691,7 @@ ppc_elf_begin_write_processing (bfd *abf
     }
 
  fail:
-  if (buffer)
-    free (buffer);
+  free (buffer);
 
   if (error_message)
     _bfd_error_handler (error_message, APUINFO_SECTION_NAME, ibfd);
@@ -1802,7 +1806,7 @@ ppc_elf_get_synthetic_symtab (bfd *abfd,
   bfd_vma stub_off;
   asymbol *s;
   arelent *p;
-  long count, i, stub_delta;
+  size_t count, i, stub_delta;
   size_t size;
   char *names;
   bfd_byte buf[4];
@@ -2112,9 +2116,6 @@ struct ppc_elf_link_hash_entry
      from the beginning of the section.  */
   elf_linker_section_pointers_t *linker_section_pointer;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   /* Contexts in which symbol is used in the GOT.
      Bits are or'd into the mask as the corresponding relocs are
      encountered during check_relocs, with TLS_TLS being set when any
@@ -2194,9 +2195,6 @@ struct ppc_elf_link_hash_table
   /* The type of PLT we have chosen to use.  */
   enum ppc_elf_plt_type plt_type;
 
-  /* True if the target system is VxWorks.  */
-  unsigned int is_vxworks:1;
-
   /* Whether there exist local gnu indirect function resolvers,
      referenced by dynamic relocations.  */
   unsigned int local_ifunc_resolver:1;
@@ -2214,9 +2212,6 @@ struct ppc_elf_link_hash_table
   int plt_slot_size;
   /* The size of the first PLT entry.  */
   int plt_initial_entry_size;
-
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
 };
 
 /* Rename some of the generic section flags to better document how they
@@ -2235,8 +2230,9 @@ struct ppc_elf_link_hash_table
 /* Get the PPC ELF linker hash table from a link_info structure.  */
 
 #define ppc_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == PPC32_ELF_DATA ? ((struct ppc_elf_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == PPC32_ELF_DATA)	\
+   ? (struct ppc_elf_link_hash_table *) (p)->hash : NULL)
 
 /* Create an entry in a PPC ELF linker hash table.  */
 
@@ -2260,7 +2256,6 @@ ppc_elf_link_hash_newfunc (struct bfd_ha
   if (entry != NULL)
     {
       ppc_elf_hash_entry (entry)->linker_section_pointer = NULL;
-      ppc_elf_hash_entry (entry)->dyn_relocs = NULL;
       ppc_elf_hash_entry (entry)->tls_mask = 0;
       ppc_elf_hash_entry (entry)->has_sda_refs = 0;
     }
@@ -2335,7 +2330,7 @@ ppc_elf_create_got (bfd *abfd, struct bf
     return FALSE;
 
   htab = ppc_elf_hash_table (info);
-  if (!htab->is_vxworks)
+  if (htab->elf.target_os != is_vxworks)
     {
       /* The powerpc .got has a blrl instruction in it.  Mark it
 	 executable.  */
@@ -2495,7 +2490,7 @@ ppc_elf_create_dynamic_sections (bfd *ab
 	return FALSE;
     }
 
-  if (htab->is_vxworks
+  if (htab->elf.target_os == is_vxworks
       && !elf_vxworks_create_dynamic_sections (abfd, info, &htab->srelplt2))
     return FALSE;
 
@@ -2534,20 +2529,20 @@ ppc_elf_copy_indirect_symbol (struct bfd
   if (eind->elf.root.type != bfd_link_hash_indirect)
     return;
 
-  if (eind->dyn_relocs != NULL)
+  if (ind->dyn_relocs != NULL)
     {
-      if (edir->dyn_relocs != NULL)
+      if (dir->dyn_relocs != NULL)
 	{
 	  struct elf_dyn_relocs **pp;
 	  struct elf_dyn_relocs *p;
 
 	  /* Add reloc counts against the indirect sym to the direct sym
 	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &ind->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      struct elf_dyn_relocs *q;
 
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
+	      for (q = dir->dyn_relocs; q != NULL; q = q->next)
 		if (q->sec == p->sec)
 		  {
 		    q->pc_count += p->pc_count;
@@ -2558,11 +2553,11 @@ ppc_elf_copy_indirect_symbol (struct bfd
 	      if (q == NULL)
 		pp = &p->next;
 	    }
-	  *pp = edir->dyn_relocs;
+	  *pp = dir->dyn_relocs;
 	}
 
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
+      dir->dyn_relocs = ind->dyn_relocs;
+      ind->dyn_relocs = NULL;
     }
 
   /* Copy over the GOT refcount entries that we may have already seen to
@@ -2635,7 +2630,7 @@ ppc_elf_add_symbol_hook (bfd *abfd,
       htab = ppc_elf_hash_table (info);
       if (htab->sbss == NULL)
 	{
-	  flagword flags = SEC_IS_COMMON | SEC_LINKER_CREATED;
+	  flagword flags = SEC_IS_COMMON | SEC_SMALL_DATA | SEC_LINKER_CREATED;
 
 	  if (!htab->elf.dynobj)
 	    htab->elf.dynobj = abfd;
@@ -2802,7 +2797,7 @@ update_plt_info (bfd *abfd, struct plt_e
       break;
   if (ent == NULL)
     {
-      bfd_size_type amt = sizeof (*ent);
+      size_t amt = sizeof (*ent);
       ent = bfd_alloc (abfd, amt);
       if (ent == NULL)
 	return FALSE;
@@ -2888,15 +2883,6 @@ ppc_elf_check_relocs (bfd *abfd,
   if (bfd_link_relocatable (info))
     return TRUE;
 
-  /* Don't do anything special with non-loaded, non-alloced sections.
-     In particular, any relocs in such sections should not affect GOT
-     and PLT reference counting (ie. we don't allow them to create GOT
-     or PLT entries), there's no possibility or desire to optimize TLS
-     relocs, and there's not much point in propagating relocs to shared
-     libs that the dynamic linker won't relocate.  */
-  if ((sec->flags & SEC_ALLOC) == 0)
-    return TRUE;
-
 #ifdef DEBUG
   _bfd_error_handler ("ppc_elf_check_relocs called for section %pA in %pB",
 		      sec, abfd);
@@ -2962,9 +2948,9 @@ ppc_elf_check_relocs (bfd *abfd,
       tls_type = 0;
       r_type = ELF32_R_TYPE (rel->r_info);
       ifunc = NULL;
-      if (h == NULL && !htab->is_vxworks)
+      if (h == NULL && htab->elf.target_os != is_vxworks)
 	{
-	  Elf_Internal_Sym *isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	  Elf_Internal_Sym *isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 							  abfd, r_symndx);
 	  if (isym == NULL)
 	    return FALSE;
@@ -3001,7 +2987,7 @@ ppc_elf_check_relocs (bfd *abfd,
 	    }
 	}
 
-      if (!htab->is_vxworks
+      if (htab->elf.target_os != is_vxworks
 	  && is_branch_reloc (r_type)
 	  && h != NULL
 	  && h == tga)
@@ -3316,12 +3302,14 @@ ppc_elf_check_relocs (bfd *abfd,
 	    return FALSE;
 	  break;
 
+	case R_PPC_TPREL16_HI:
+	case R_PPC_TPREL16_HA:
+	  sec->has_tls_reloc = 1;
+	  /* Fall through.  */
 	  /* We shouldn't really be seeing TPREL32.  */
 	case R_PPC_TPREL32:
 	case R_PPC_TPREL16:
 	case R_PPC_TPREL16_LO:
-	case R_PPC_TPREL16_HI:
-	case R_PPC_TPREL16_HA:
 	  if (bfd_link_dll (info))
 	    info->flags |= DF_STATIC_TLS;
 	  goto dodyn;
@@ -3347,7 +3335,7 @@ ppc_elf_check_relocs (bfd *abfd,
 	      asection *s;
 	      Elf_Internal_Sym *isym;
 
-	      isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	      isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 					    abfd, r_symndx);
 	      if (isym == NULL)
 		return FALSE;
@@ -3478,7 +3466,7 @@ ppc_elf_check_relocs (bfd *abfd,
 		  struct elf_dyn_relocs *p;
 		  struct elf_dyn_relocs **rel_head;
 
-		  rel_head = &ppc_elf_hash_entry (h)->dyn_relocs;
+		  rel_head = &h->dyn_relocs;
 		  p = *rel_head;
 		  if (p == NULL || p->sec != sec)
 		    {
@@ -3507,7 +3495,7 @@ ppc_elf_check_relocs (bfd *abfd,
 		  void *vpp;
 		  Elf_Internal_Sym *isym;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    return FALSE;
@@ -3553,6 +3541,17 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
   obj_attribute *in_attr, *in_attrs;
   obj_attribute *out_attr, *out_attrs;
   bfd_boolean ret = TRUE;
+  bfd_boolean warn_only;
+
+  /* We only warn about shared library mismatches, because common
+     libraries advertise support for a particular long double variant
+     but actually support more than one variant.  For example, glibc
+     typically supports 128-bit IBM long double in the shared library
+     but has a compatibility static archive for 64-bit long double.
+     The linker doesn't have the smarts to see that an app using
+     object files marked as 64-bit long double call the compatibility
+     layer objects and only from there call into the shared library.  */
+  warn_only = (ibfd->flags & DYNAMIC) != 0;
 
   in_attrs = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
   out_attrs = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU];
@@ -3570,9 +3569,12 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 	;
       else if (out_fp == 0)
 	{
-	  out_attr->type = ATTR_TYPE_FLAG_INT_VAL;
-	  out_attr->i ^= in_fp;
-	  last_fp = ibfd;
+	  if (!warn_only)
+	    {
+	      out_attr->type = ATTR_TYPE_FLAG_INT_VAL;
+	      out_attr->i ^= in_fp;
+	      last_fp = ibfd;
+	    }
 	}
       else if (out_fp != 2 && in_fp == 2)
 	{
@@ -3580,7 +3582,7 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 	    /* xgettext:c-format */
 	    (_("%pB uses hard float, %pB uses soft float"),
 	     last_fp, ibfd);
-	  ret = FALSE;
+	  ret = warn_only;
 	}
       else if (out_fp == 2 && in_fp != 2)
 	{
@@ -3588,7 +3590,7 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 	    /* xgettext:c-format */
 	    (_("%pB uses hard float, %pB uses soft float"),
 	     ibfd, last_fp);
-	  ret = FALSE;
+	  ret = warn_only;
 	}
       else if (out_fp == 1 && in_fp == 3)
 	{
@@ -3596,7 +3598,7 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 	    /* xgettext:c-format */
 	    (_("%pB uses double-precision hard float, "
 	       "%pB uses single-precision hard float"), last_fp, ibfd);
-	  ret = FALSE;
+	  ret = warn_only;
 	}
       else if (out_fp == 3 && in_fp == 1)
 	{
@@ -3604,7 +3606,7 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 	    /* xgettext:c-format */
 	    (_("%pB uses double-precision hard float, "
 	       "%pB uses single-precision hard float"), ibfd, last_fp);
-	  ret = FALSE;
+	  ret = warn_only;
 	}
 
       in_fp = in_attr->i & 0xc;
@@ -3613,9 +3615,12 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 	;
       else if (out_fp == 0)
 	{
-	  out_attr->type = ATTR_TYPE_FLAG_INT_VAL;
-	  out_attr->i ^= in_fp;
-	  last_ld = ibfd;
+	  if (!warn_only)
+	    {
+	      out_attr->type = ATTR_TYPE_FLAG_INT_VAL;
+	      out_attr->i ^= in_fp;
+	      last_ld = ibfd;
+	    }
 	}
       else if (out_fp != 2 * 4 && in_fp == 2 * 4)
 	{
@@ -3623,7 +3628,7 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 	    /* xgettext:c-format */
 	    (_("%pB uses 64-bit long double, "
 	       "%pB uses 128-bit long double"), ibfd, last_ld);
-	  ret = FALSE;
+	  ret = warn_only;
 	}
       else if (in_fp != 2 * 4 && out_fp == 2 * 4)
 	{
@@ -3631,7 +3636,7 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 	    /* xgettext:c-format */
 	    (_("%pB uses 64-bit long double, "
 	       "%pB uses 128-bit long double"), last_ld, ibfd);
-	  ret = FALSE;
+	  ret = warn_only;
 	}
       else if (out_fp == 1 * 4 && in_fp == 3 * 4)
 	{
@@ -3639,7 +3644,7 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 	    /* xgettext:c-format */
 	    (_("%pB uses IBM long double, "
 	       "%pB uses IEEE long double"), last_ld, ibfd);
-	  ret = FALSE;
+	  ret = warn_only;
 	}
       else if (out_fp == 3 * 4 && in_fp == 1 * 4)
 	{
@@ -3647,7 +3652,7 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 	    /* xgettext:c-format */
 	    (_("%pB uses IBM long double, "
 	       "%pB uses IEEE long double"), ibfd, last_ld);
-	  ret = FALSE;
+	  ret = warn_only;
 	}
     }
 
@@ -3796,6 +3801,9 @@ ppc_elf_merge_private_bfd_data (bfd *ibf
   if (!ppc_elf_merge_obj_attributes (ibfd, info))
     return FALSE;
 
+  if ((ibfd->flags & DYNAMIC) != 0)
+    return TRUE;
+
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
   if (!elf_flags_init (obfd))
@@ -4254,8 +4262,7 @@ ppc_elf_inline_plt (struct bfd_link_info
 		  {
 		    if (elf_section_data (sec)->relocs != relstart)
 		      free (relstart);
-		    if (local_syms != NULL
-			&& symtab_hdr->contents != (unsigned char *) local_syms)
+		    if (symtab_hdr->contents != (unsigned char *) local_syms)
 		      free (local_syms);
 		    return FALSE;
 		  }
@@ -4412,6 +4419,8 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT
   if (htab == NULL)
     return FALSE;
 
+  htab->do_tls_opt = 1;
+
   /* Make two passes through the relocs.  First time check that tls
      relocs involved in setting up a tls_get_addr call are indeed
      followed by such a call.  If they are not, don't do any tls
@@ -4577,6 +4586,37 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT
 		      tls_clear = 0;
 		      break;
 
+		    case R_PPC_TPREL16_HA:
+		      if (pass == 0)
+			{
+			  unsigned char buf[4];
+			  unsigned int insn;
+			  bfd_vma off = rel->r_offset & ~3;
+			  if (!bfd_get_section_contents (ibfd, sec, buf,
+							 off, 4))
+			    {
+			      if (elf_section_data (sec)->relocs != relstart)
+				free (relstart);
+			      return FALSE;
+			    }
+			  insn = bfd_get_32 (ibfd, buf);
+			  /* addis rt,2,imm */
+			  if ((insn & ((0x3fu << 26) | 0x1f << 16))
+			      != ((15u << 26) | (2 << 16)))
+			    {
+			      /* xgettext:c-format */
+			      info->callbacks->minfo
+				(_("%H: warning: %s unexpected insn %#x.\n"),
+				 ibfd, sec, off, "R_PPC_TPREL16_HA", insn);
+			      htab->do_tls_opt = 0;
+			    }
+			}
+		      continue;
+
+		    case R_PPC_TPREL16_HI:
+		      htab->do_tls_opt = 0;
+		      continue;
+
 		    default:
 		      continue;
 		    }
@@ -4671,27 +4711,9 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT
 		free (relstart);
 	    }
       }
-  htab->do_tls_opt = 1;
   return TRUE;
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = ppc_elf_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Return true if we have dynamic relocs against H or any of its weak
    aliases, that apply to read-only sections.  Cannot be used after
    size_dynamic_sections.  */
@@ -4702,7 +4724,7 @@ alias_readonly_dynrelocs (struct elf_lin
   struct ppc_elf_link_hash_entry *eh = ppc_elf_hash_entry (h);
   do
     {
-      if (readonly_dynrelocs (&eh->elf))
+      if (_bfd_elf_readonly_dynrelocs (&eh->elf))
 	return TRUE;
       eh = ppc_elf_hash_entry (eh->elf.u.alias);
     } while (eh != NULL && &eh->elf != h);
@@ -4717,7 +4739,7 @@ pc_dynrelocs (struct elf_link_hash_entry
 {
   struct elf_dyn_relocs *p;
 
-  for (p = ppc_elf_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     if (p->pc_count != 0)
       return TRUE;
   return FALSE;
@@ -4761,7 +4783,7 @@ ppc_elf_adjust_dynamic_symbol (struct bf
       /* Discard dyn_relocs when non-pic if we've decided that a
 	 function symbol is local.  */
       if (!bfd_link_pic (info) && local)
-	ppc_elf_hash_entry (h)->dyn_relocs = NULL;
+	h->dyn_relocs = NULL;
 
       /* Clear procedure linkage table information for any symbol that
 	 won't need a .plt entry.  */
@@ -4805,9 +4827,9 @@ ppc_elf_adjust_dynamic_symbol (struct bf
 	       || (h->non_got_ref
 		   && !h->ref_regular_nonweak
 		   && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h)))
-	      && !htab->is_vxworks
+	      && htab->elf.target_os != is_vxworks
 	      && !ppc_elf_hash_entry (h)->has_sda_refs
-	      && !readonly_dynrelocs (h))
+	      && !_bfd_elf_readonly_dynrelocs (h))
 	    {
 	      h->pointer_equality_needed = 0;
 	      /* If we haven't seen a branch reloc and the symbol
@@ -4818,7 +4840,7 @@ ppc_elf_adjust_dynamic_symbol (struct bf
 	  else if (!bfd_link_pic (info))
 	    /* We are going to be defining the function symbol on the
 	       plt stub, so no dyn_relocs needed when non-pic.  */
-	    ppc_elf_hash_entry (h)->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 	}
       h->protected_def = 0;
       /* Function symbols can't have copy relocs.  */
@@ -4839,7 +4861,7 @@ ppc_elf_adjust_dynamic_symbol (struct bf
       if (def->root.u.def.section == htab->elf.sdynbss
 	  || def->root.u.def.section == htab->elf.sdynrelro
 	  || def->root.u.def.section == htab->dynsbss)
-	ppc_elf_hash_entry (h)->dyn_relocs = NULL;
+	h->dyn_relocs = NULL;
       return TRUE;
     }
 
@@ -4891,7 +4913,7 @@ ppc_elf_adjust_dynamic_symbol (struct bf
       executable.  */
   if (ELIMINATE_COPY_RELOCS
       && !ppc_elf_hash_entry (h)->has_sda_refs
-      && !htab->is_vxworks
+      && htab->elf.target_os != is_vxworks
       && !h->def_regular
       && !alias_readonly_dynrelocs (h))
     return TRUE;
@@ -4935,7 +4957,7 @@ ppc_elf_adjust_dynamic_symbol (struct bf
     }
 
   /* We no longer want dyn_relocs.  */
-  ppc_elf_hash_entry (h)->dyn_relocs = NULL;
+  h->dyn_relocs = NULL;
   return _bfd_elf_adjust_dynamic_copy (info, h, s);
 }
 
@@ -5145,19 +5167,19 @@ allocate_dynrelocs (struct elf_link_hash
      IFUNCs which are handled even in static executables.  */
   if (!htab->elf.dynamic_sections_created
       && h->type != STT_GNU_IFUNC)
-    eh->dyn_relocs = NULL;
+    h->dyn_relocs = NULL;
 
   /* Discard relocs on undefined symbols that must be local.  */
   else if (h->root.type == bfd_link_hash_undefined
 	   && ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
-    eh->dyn_relocs = NULL;
+    h->dyn_relocs = NULL;
 
   /* Also discard relocs on undefined weak syms with non-default
      visibility, or when dynamic_undefined_weak says so.  */
   else if (UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-    eh->dyn_relocs = NULL;
+    h->dyn_relocs = NULL;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     ;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -5177,7 +5199,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -5188,11 +5210,11 @@ allocate_dynrelocs (struct elf_link_hash
 	    }
 	}
 
-      if (htab->is_vxworks)
+      if (htab->elf.target_os == is_vxworks)
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      if (strcmp (p->sec->output_section->name, ".tls_vars") == 0)
 		*pp = p->next;
@@ -5201,7 +5223,7 @@ allocate_dynrelocs (struct elf_link_hash
 	    }
 	}
 
-      if (eh->dyn_relocs != NULL)
+      if (h->dyn_relocs != NULL)
 	{
 	  /* Make sure this symbol is output as a dynamic symbol.  */
 	  if (!ensure_undef_dynamic (info, h))
@@ -5226,14 +5248,14 @@ allocate_dynrelocs (struct elf_link_hash
 	    return FALSE;
 
 	  if (h->dynindx == -1)
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 	}
       else
-	eh->dyn_relocs = NULL;
+	h->dyn_relocs = NULL;
     }
 
   /* Allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       if (eh->elf.type == STT_GNU_IFUNC)
@@ -5421,33 +5443,6 @@ allocate_dynrelocs (struct elf_link_hash
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 static const unsigned char glink_eh_frame_cie[] =
 {
   0, 0, 0, 16,				/* length.  */
@@ -5529,7 +5524,7 @@ ppc_elf_size_dynamic_sections (bfd *outp
 		     linker script /DISCARD/, so we'll be discarding
 		     the relocs too.  */
 		}
-	      else if (htab->is_vxworks
+	      else if (htab->elf.target_os == is_vxworks
 		       && strcmp (p->sec->output_section->name,
 				  ".tls_vars") == 0)
 		{
@@ -5594,7 +5589,7 @@ ppc_elf_size_dynamic_sections (bfd *outp
 	else
 	  *local_got = (bfd_vma) -1;
 
-      if (htab->is_vxworks)
+      if (htab->elf.target_os == is_vxworks)
 	continue;
 
       /* Allocate space for calls to local STT_GNU_IFUNC syms in .iplt.  */
@@ -5859,20 +5854,9 @@ ppc_elf_size_dynamic_sections (bfd *outp
 #define add_dynamic_entry(TAG, VAL) \
   _bfd_elf_add_dynamic_entry (info, TAG, VAL)
 
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->elf.splt != NULL && htab->elf.splt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
+      if (!_bfd_elf_maybe_vxworks_add_dynamic_tags (output_bfd, info,
+						    relocs))
+	return FALSE;
 
       if (htab->plt_type == PLT_NEW
 	  && htab->glink != NULL
@@ -5886,29 +5870,6 @@ ppc_elf_size_dynamic_sections (bfd *outp
 	      && !add_dynamic_entry (DT_PPC_OPT, PPC_OPT_TLS))
 	    return FALSE;
 	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	    return FALSE;
-	}
-
-      /* If any dynamic relocs apply to a read-only section, then we
-	 need a DT_TEXTREL entry.  */
-      if ((info->flags & DF_TEXTREL) == 0)
-	elf_link_hash_traverse (elf_hash_table (info), maybe_set_textrel,
-				info);
-
-      if ((info->flags & DF_TEXTREL) != 0)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-      if (htab->is_vxworks
-	  && !elf_vxworks_add_dynamic_entries (output_bfd, info))
-	return FALSE;
    }
 #undef add_dynamic_entry
 
@@ -6642,8 +6603,7 @@ ppc_elf_relax_section (bfd *abfd,
       rel_hdr = _bfd_elf_single_rel_hdr (isec);
       rel_hdr->sh_size += changes * rel_hdr->sh_entsize;
     }
-  else if (internal_relocs != NULL
-	   && elf_section_data (isec)->relocs != internal_relocs)
+  else if (elf_section_data (isec)->relocs != internal_relocs)
     free (internal_relocs);
 
   *again = changes != 0 || workaround_change;
@@ -6656,13 +6616,11 @@ ppc_elf_relax_section (bfd *abfd,
       branch_fixups = branch_fixups->next;
       free (f);
     }
-  if (isymbuf != NULL && (unsigned char *) isymbuf != symtab_hdr->contents)
+  if ((unsigned char *) isymbuf != symtab_hdr->contents)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (isec)->this_hdr.contents != contents)
+  if (elf_section_data (isec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (isec)->relocs != internal_relocs)
+  if (elf_section_data (isec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
@@ -6843,7 +6801,7 @@ _bfd_elf_ppc_at_tls_transform (unsigned
 {
   unsigned int rtra;
 
-  if ((insn & (0x3f << 26)) != 31 << 26)
+  if ((insn & (0x3fu << 26)) != 31 << 26)
     return 0;
 
   if (reg == 0 || ((insn >> 11) & 0x1f) == reg)
@@ -6861,13 +6819,13 @@ _bfd_elf_ppc_at_tls_transform (unsigned
 	       || ((insn & (0x1f << 6)) >= 16 << 6
 		   && (insn & (0x1f << 6)) < 24 << 6)))
     /* load and store indexed -> dform.  */
-    insn = (32 | ((insn >> 6) & 0x1f)) << 26;
+    insn = (32u | ((insn >> 6) & 0x1f)) << 26;
   else if ((insn & (((0x1a << 5) | 0x1f) << 1)) == 21 << 1)
     /* ldx, ldux, stdx, stdux -> ld, ldu, std, stdu.  */
-    insn = ((58 | ((insn >> 6) & 4)) << 26) | ((insn >> 6) & 1);
+    insn = ((58u | ((insn >> 6) & 4)) << 26) | ((insn >> 6) & 1);
   else if ((insn & (((0x1f << 5) | 0x1f) << 1)) == 341 << 1)
     /* lwax -> lwa.  */
-    insn = (58 << 26) | 2;
+    insn = (58u << 26) | 2;
   else
     return 0;
   insn |= rtra;
@@ -6882,36 +6840,36 @@ unsigned int
 _bfd_elf_ppc_at_tprel_transform (unsigned int insn, unsigned int reg)
 {
   if ((insn & (0x1f << 16)) == reg << 16
-      && ((insn & (0x3f << 26)) == 14u << 26 /* addi */
-	  || (insn & (0x3f << 26)) == 15u << 26 /* addis */
-	  || (insn & (0x3f << 26)) == 32u << 26 /* lwz */
-	  || (insn & (0x3f << 26)) == 34u << 26 /* lbz */
-	  || (insn & (0x3f << 26)) == 36u << 26 /* stw */
-	  || (insn & (0x3f << 26)) == 38u << 26 /* stb */
-	  || (insn & (0x3f << 26)) == 40u << 26 /* lhz */
-	  || (insn & (0x3f << 26)) == 42u << 26 /* lha */
-	  || (insn & (0x3f << 26)) == 44u << 26 /* sth */
-	  || (insn & (0x3f << 26)) == 46u << 26 /* lmw */
-	  || (insn & (0x3f << 26)) == 47u << 26 /* stmw */
-	  || (insn & (0x3f << 26)) == 48u << 26 /* lfs */
-	  || (insn & (0x3f << 26)) == 50u << 26 /* lfd */
-	  || (insn & (0x3f << 26)) == 52u << 26 /* stfs */
-	  || (insn & (0x3f << 26)) == 54u << 26 /* stfd */
-	  || ((insn & (0x3f << 26)) == 58u << 26 /* lwa,ld,lmd */
+      && ((insn & (0x3fu << 26)) == 14u << 26 /* addi */
+	  || (insn & (0x3fu << 26)) == 15u << 26 /* addis */
+	  || (insn & (0x3fu << 26)) == 32u << 26 /* lwz */
+	  || (insn & (0x3fu << 26)) == 34u << 26 /* lbz */
+	  || (insn & (0x3fu << 26)) == 36u << 26 /* stw */
+	  || (insn & (0x3fu << 26)) == 38u << 26 /* stb */
+	  || (insn & (0x3fu << 26)) == 40u << 26 /* lhz */
+	  || (insn & (0x3fu << 26)) == 42u << 26 /* lha */
+	  || (insn & (0x3fu << 26)) == 44u << 26 /* sth */
+	  || (insn & (0x3fu << 26)) == 46u << 26 /* lmw */
+	  || (insn & (0x3fu << 26)) == 47u << 26 /* stmw */
+	  || (insn & (0x3fu << 26)) == 48u << 26 /* lfs */
+	  || (insn & (0x3fu << 26)) == 50u << 26 /* lfd */
+	  || (insn & (0x3fu << 26)) == 52u << 26 /* stfs */
+	  || (insn & (0x3fu << 26)) == 54u << 26 /* stfd */
+	  || ((insn & (0x3fu << 26)) == 58u << 26 /* lwa,ld,lmd */
 	      && (insn & 3) != 1)
-	  || ((insn & (0x3f << 26)) == 62u << 26 /* std, stmd */
+	  || ((insn & (0x3fu << 26)) == 62u << 26 /* std, stmd */
 	      && ((insn & 3) == 0 || (insn & 3) == 3))))
     {
       insn &= ~(0x1f << 16);
     }
   else if ((insn & (0x1f << 21)) == reg << 21
-	   && ((insn & (0x3e << 26)) == 24u << 26 /* ori, oris */
-	       || (insn & (0x3e << 26)) == 26u << 26 /* xori,xoris */
-	       || (insn & (0x3e << 26)) == 28u << 26 /* andi,andis */))
+	   && ((insn & (0x3eu << 26)) == 24u << 26 /* ori, oris */
+	       || (insn & (0x3eu << 26)) == 26u << 26 /* xori,xoris */
+	       || (insn & (0x3eu << 26)) == 28u << 26 /* andi,andis */))
     {
       insn &= ~(0x1f << 21);
       insn |= (insn & (0x1f << 16)) << 5;
-      if ((insn & (0x3e << 26)) == 26 << 26 /* xori,xoris */)
+      if ((insn & (0x3eu << 26)) == 26u << 26 /* xori,xoris */)
 	insn -= 2 >> 26;  /* convert to ori,oris */
     }
   else
@@ -6922,17 +6880,17 @@ _bfd_elf_ppc_at_tprel_transform (unsigne
 static bfd_boolean
 is_insn_ds_form (unsigned int insn)
 {
-  return ((insn & (0x3f << 26)) == 58u << 26 /* ld,ldu,lwa */
-	  || (insn & (0x3f << 26)) == 62u << 26 /* std,stdu,stq */
-	  || (insn & (0x3f << 26)) == 57u << 26 /* lfdp */
-	  || (insn & (0x3f << 26)) == 61u << 26 /* stfdp */);
+  return ((insn & (0x3fu << 26)) == 58u << 26 /* ld,ldu,lwa */
+	  || (insn & (0x3fu << 26)) == 62u << 26 /* std,stdu,stq */
+	  || (insn & (0x3fu << 26)) == 57u << 26 /* lfdp */
+	  || (insn & (0x3fu << 26)) == 61u << 26 /* stfdp */);
 }
 
 static bfd_boolean
 is_insn_dq_form (unsigned int insn)
 {
-  return ((insn & (0x3f << 26)) == 56u << 26 /* lq */
-	  || ((insn & (0x3f << 26)) == (61u << 26) /* lxv, stxv */
+  return ((insn & (0x3fu << 26)) == 56u << 26 /* lq */
+	  || ((insn & (0x3fu << 26)) == (61u << 26) /* lxv, stxv */
 	      && (insn & 3) == 1));
 }
 
@@ -7016,7 +6974,7 @@ ppc_elf_relocate_section (bfd *output_bf
   sym_hashes = elf_sym_hashes (input_bfd);
   /* We have to handle relocations in vxworks .tls_vars sections
      specially, because the dynamic loader is 'weird'.  */
-  is_vxworks_tls = (htab->is_vxworks && bfd_link_pic (info)
+  is_vxworks_tls = (htab->elf.target_os == is_vxworks && bfd_link_pic (info)
 		    && !strcmp (input_section->output_section->name,
 				".tls_vars"));
   if (input_section->sec_info_type == SEC_INFO_TYPE_TARGET)
@@ -7245,7 +7203,7 @@ ppc_elf_relocate_section (bfd *output_bf
 		{
 		  /* IE */
 		  insn1 &= (0x1f << 21) | (0x1f << 16);
-		  insn1 |= 32 << 26;	/* lwz */
+		  insn1 |= 32u << 26;	/* lwz */
 		  if (offset != (bfd_vma) -1)
 		    {
 		      rel[1].r_info = ELF32_R_INFO (STN_UNDEF, R_PPC_NONE);
@@ -7414,7 +7372,7 @@ ppc_elf_relocate_section (bfd *output_bf
 
 	    insn = bfd_get_32 (input_bfd,
 			       contents + rel->r_offset - d_offset);
-	    if ((insn & (0x3f << 26)) == 15u << 26
+	    if ((insn & (0x3fu << 26)) == 15u << 26
 		&& (insn & (0x1f << 16)) != 0)
 	      {
 		if (!bfd_link_pic (info))
@@ -7450,7 +7408,7 @@ ppc_elf_relocate_section (bfd *output_bf
 	    {
 	      insn = bfd_get_32 (input_bfd,
 				 contents + rel->r_offset - d_offset);
-	      if ((insn & (0x3f << 26)) == (15u << 26)
+	      if ((insn & (0x3fu << 26)) == (15u << 26)
 		  && (insn & (0x1f << 16)) == 0 /* lis */)
 		{
 		  bfd_byte *p;
@@ -7513,23 +7471,23 @@ ppc_elf_relocate_section (bfd *output_bf
 	    {
 	      insn = bfd_get_32 (input_bfd,
 				 contents + rel->r_offset - d_offset);
-	      if ((insn & (0x3f << 26)) == 14u << 26    /* addi */
-		  || (insn & (0x3f << 26)) == 32u << 26 /* lwz */
-		  || (insn & (0x3f << 26)) == 34u << 26 /* lbz */
-		  || (insn & (0x3f << 26)) == 36u << 26 /* stw */
-		  || (insn & (0x3f << 26)) == 38u << 26 /* stb */
-		  || (insn & (0x3f << 26)) == 40u << 26 /* lhz */
-		  || (insn & (0x3f << 26)) == 42u << 26 /* lha */
-		  || (insn & (0x3f << 26)) == 44u << 26 /* sth */
-		  || (insn & (0x3f << 26)) == 46u << 26 /* lmw */
-		  || (insn & (0x3f << 26)) == 47u << 26 /* stmw */
-		  || (insn & (0x3f << 26)) == 48u << 26 /* lfs */
-		  || (insn & (0x3f << 26)) == 50u << 26 /* lfd */
-		  || (insn & (0x3f << 26)) == 52u << 26 /* stfs */
-		  || (insn & (0x3f << 26)) == 54u << 26 /* stfd */
-		  || ((insn & (0x3f << 26)) == 58u << 26 /* lwa,ld,lmd */
+	      if ((insn & (0x3fu << 26)) == 14u << 26    /* addi */
+		  || (insn & (0x3fu << 26)) == 32u << 26 /* lwz */
+		  || (insn & (0x3fu << 26)) == 34u << 26 /* lbz */
+		  || (insn & (0x3fu << 26)) == 36u << 26 /* stw */
+		  || (insn & (0x3fu << 26)) == 38u << 26 /* stb */
+		  || (insn & (0x3fu << 26)) == 40u << 26 /* lhz */
+		  || (insn & (0x3fu << 26)) == 42u << 26 /* lha */
+		  || (insn & (0x3fu << 26)) == 44u << 26 /* sth */
+		  || (insn & (0x3fu << 26)) == 46u << 26 /* lmw */
+		  || (insn & (0x3fu << 26)) == 47u << 26 /* stmw */
+		  || (insn & (0x3fu << 26)) == 48u << 26 /* lfs */
+		  || (insn & (0x3fu << 26)) == 50u << 26 /* lfd */
+		  || (insn & (0x3fu << 26)) == 52u << 26 /* stfs */
+		  || (insn & (0x3fu << 26)) == 54u << 26 /* stfd */
+		  || ((insn & (0x3fu << 26)) == 58u << 26 /* lwa,ld,lmd */
 		      && (insn & 3) != 1)
-		  || ((insn & (0x3f << 26)) == 62u << 26 /* std, stmd */
+		  || ((insn & (0x3fu << 26)) == 62u << 26 /* std, stmd */
 		      && ((insn & 3) == 0 || (insn & 3) == 3)))
 		{
 		  /* Arrange to apply the reloc addend, if any.  */
@@ -7548,7 +7506,7 @@ ppc_elf_relocate_section (bfd *output_bf
 	}
 
       ifunc = NULL;
-      if (!htab->is_vxworks)
+      if (htab->elf.target_os != is_vxworks)
 	{
 	  struct plt_entry *ent;
 
@@ -7629,39 +7587,6 @@ ppc_elf_relocate_section (bfd *output_bf
       if (r_type < R_PPC_max)
 	howto = ppc_elf_howto_table[r_type];
 
-      switch (r_type)
-	{
-	default:
-	  break;
-
-	case R_PPC_TPREL16_HA:
-	  if (htab->do_tls_opt && relocation + addend + 0x8000 < 0x10000)
-	    {
-	      bfd_byte *p = contents + (rel->r_offset & ~3);
-	      unsigned int insn = bfd_get_32 (input_bfd, p);
-	      if ((insn & ((0x3f << 26) | 0x1f << 16))
-		  != ((15u << 26) | (2 << 16)) /* addis rt,2,imm */)
-		/* xgettext:c-format */
-		info->callbacks->minfo
-		  (_("%H: warning: %s unexpected insn %#x.\n"),
-		   input_bfd, input_section, rel->r_offset, howto->name, insn);
-	      else
-		bfd_put_32 (input_bfd, NOP, p);
-	    }
-	  break;
-
-	case R_PPC_TPREL16_LO:
-	  if (htab->do_tls_opt && relocation + addend + 0x8000 < 0x10000)
-	    {
-	      bfd_byte *p = contents + (rel->r_offset & ~3);
-	      unsigned int insn = bfd_get_32 (input_bfd, p);
-	      insn &= ~(0x1f << 16);
-	      insn |= 2 << 16;
-	      bfd_put_32 (input_bfd, insn, p);
-	    }
-	  break;
-	}
-
       tls_type = 0;
       switch (r_type)
 	{
@@ -8091,11 +8016,11 @@ ppc_elf_relocate_section (bfd *output_bf
 
 	  if (bfd_link_pic (info)
 	      ? ((h == NULL
-		  || ppc_elf_hash_entry (h)->dyn_relocs != NULL)
+		  || h->dyn_relocs != NULL)
 		 && ((h != NULL && pc_dynrelocs (h))
 		     || must_be_dyn_reloc (info, r_type)))
 	      : (h != NULL
-		 && ppc_elf_hash_entry (h)->dyn_relocs != NULL))
+		 && h->dyn_relocs != NULL))
 	    {
 	      int skip;
 	      bfd_byte *loc;
@@ -8780,7 +8705,7 @@ ppc_elf_relocate_section (bfd *output_bf
 
 	case R_PPC_VLE_ADDR20:
 	  ppc_elf_vle_split20 (output_bfd, contents + rel->r_offset, relocation);
-	  continue;
+	  goto copy_reloc;
 
 	  /* Relocate against the beginning of the section.  */
 	case R_PPC_SECTOFF:
@@ -8831,6 +8756,31 @@ ppc_elf_relocate_section (bfd *output_bf
 	default:
 	  break;
 
+	case R_PPC_TPREL16_HA:
+	  if (htab->do_tls_opt && relocation + addend + 0x8000 < 0x10000)
+	    {
+	      bfd_byte *p = contents + (rel->r_offset & ~3);
+	      bfd_put_32 (input_bfd, NOP, p);
+	    }
+	  break;
+
+	case R_PPC_TPREL16_LO:
+	  if (htab->do_tls_opt && relocation + addend + 0x8000 < 0x10000)
+	    {
+	      bfd_byte *p = contents + (rel->r_offset & ~3);
+	      unsigned int insn = bfd_get_32 (input_bfd, p);
+	      insn &= ~(0x1f << 16);
+	      insn |= 2 << 16;
+	      bfd_put_32 (input_bfd, insn, p);
+	    }
+	  break;
+	}
+
+      switch (r_type)
+	{
+	default:
+	  break;
+
 	case R_PPC_PLTCALL:
 	  if (unresolved_reloc)
 	    {
@@ -8993,11 +8943,11 @@ ppc_elf_relocate_section (bfd *output_bf
 	      unsigned int insn;
 
 	      insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
-	      if ((insn & (0x3f << 26)) == 10u << 26 /* cmpli */)
+	      if ((insn & (0x3fu << 26)) == 10u << 26 /* cmpli */)
 		complain = complain_overflow_bitfield;
-	      else if ((insn & (0x3f << 26)) == 28u << 26 /* andi */
-		       || (insn & (0x3f << 26)) == 24u << 26 /* ori */
-		       || (insn & (0x3f << 26)) == 26u << 26 /* xori */)
+	      else if ((insn & (0x3fu << 26)) == 28u << 26 /* andi */
+		       || (insn & (0x3fu << 26)) == 24u << 26 /* ori */
+		       || (insn & (0x3fu << 26)) == 26u << 26 /* xori */)
 		complain = complain_overflow_unsigned;
 	    }
 	  if (howto->complain_on_overflow != complain)
@@ -9221,10 +9171,10 @@ ppc_elf_relocate_section (bfd *output_bf
 	     . new_page:		new_page:
 	     .  */
 	  insn = bfd_get_32 (input_bfd, contents + offset);
-	  if ((insn & (0x3f << 26)) == (18u << 26)	    /* b,bl,ba,bla */
-	      || ((insn & (0x3f << 26)) == (16u << 26)	    /* bc,bcl,bca,bcla*/
+	  if ((insn & (0x3fu << 26)) == (18u << 26)	    /* b,bl,ba,bla */
+	      || ((insn & (0x3fu << 26)) == (16u << 26)	    /* bc,bcl,bca,bcla*/
 		  && (insn & (0x14 << 21)) == (0x14 << 21)) /*	 with BO=0x14 */
-	      || ((insn & (0x3f << 26)) == (19u << 26)
+	      || ((insn & (0x3fu << 26)) == (19u << 26)
 		  && (insn & (0x3ff << 1)) == (16u << 1)    /* bclr,bclrl */
 		  && (insn & (0x14 << 21)) == (0x14 << 21)))/*	 with BO=0x14 */
 	    continue;
@@ -9308,7 +9258,7 @@ ppc_elf_relocate_section (bfd *output_bf
 	  else
 	    rel = NULL;
 
-	  if ((insn & (0x3f << 26)) == (16u << 26) /* bc */
+	  if ((insn & (0x3fu << 26)) == (16u << 26) /* bc */
 	      && (insn & 2) == 0 /* relative */)
 	    {
 	      bfd_vma delta = ((insn & 0xfffc) ^ 0x8000) - 0x8000;
@@ -9701,8 +9651,7 @@ ppc_finish_symbols (struct bfd_link_info
 		if (!get_sym_h (NULL, &sym, &sym_sec, NULL, &local_syms,
 				lplt - local_plt, ibfd))
 		  {
-		    if (local_syms != NULL
-			&& symtab_hdr->contents != (unsigned char *) local_syms)
+		    if (symtab_hdr->contents != (unsigned char *) local_syms)
 		      free (local_syms);
 		    return FALSE;
 		  }
@@ -9921,7 +9870,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou
 	  switch (dyn.d_tag)
 	    {
 	    case DT_PLTGOT:
-	      if (htab->is_vxworks)
+	      if (htab->elf.target_os == is_vxworks)
 		s = htab->elf.sgotplt;
 	      else
 		s = htab->elf.splt;
@@ -9953,7 +9902,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou
 	      continue;
 
 	    default:
-	      if (htab->is_vxworks
+	      if (htab->elf.target_os == is_vxworks
 		  && elf_vxworks_finish_dynamic_entry (output_bfd, &dyn))
 		break;
 	      continue;
@@ -10005,7 +9954,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou
     }
 
   /* Fill in the first entry in the VxWorks procedure linkage table.  */
-  if (htab->is_vxworks
+  if (htab->elf.target_os == is_vxworks
       && htab->elf.splt != NULL
       && htab->elf.splt->size != 0
       && htab->elf.splt->output_section != bfd_abs_section_ptr)
@@ -10414,6 +10363,9 @@ ppc_elf_finish_dynamic_sections (bfd *ou
 
 #undef  ELF_OSABI
 
+#undef ELF_TARGET_OS
+#define ELF_TARGET_OS		is_vxworks
+
 /* VxWorks uses the elf default section flags for .plt.  */
 static const struct bfd_elf_special_section *
 ppc_elf_vxworks_get_sec_type_attr (bfd *abfd, asection *sec)
@@ -10439,7 +10391,6 @@ ppc_elf_vxworks_link_hash_table_create (
     {
       struct ppc_elf_link_hash_table *htab
 	= (struct ppc_elf_link_hash_table *)ret;
-      htab->is_vxworks = 1;
       htab->plt_type = PLT_VXWORKS;
       htab->plt_entry_size = VXWORKS_PLT_ENTRY_SIZE;
       htab->plt_slot_size = VXWORKS_PLT_ENTRY_SIZE;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-ppc.h ./bfd/elf32-ppc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-ppc.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-ppc.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* PowerPC-specific support for 64-bit ELF.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-pru.c ./bfd/elf32-pru.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-pru.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-pru.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for TI PRU.
-   Copyright (C) 2014-2019 Free Software Foundation, Inc.
+   Copyright (C) 2014-2020 Free Software Foundation, Inc.
    Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
    Based on elf32-nios2.c
 
@@ -539,7 +539,7 @@ pru_elf32_do_ldi32_relocate (bfd *abfd,
 			     bfd_byte *data, bfd_vma offset,
 			     bfd_vma symbol_value, bfd_vma addend)
 {
-  bfd_signed_vma relocation;
+  bfd_vma relocation;
   bfd_size_type octets = offset * OCTETS_PER_BYTE (abfd, input_section);
   bfd_byte *location;
   unsigned long in1, in2;
@@ -1523,20 +1523,17 @@ pru_elf32_relax_section (bfd * abfd, ase
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
-error_return:
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+ error_return:
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
@@ -1554,7 +1551,7 @@ static struct bfd_link_hash_table *
 pru_elf32_link_hash_table_create (bfd *abfd)
 {
   struct elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_link_hash_table);
+  size_t amt = sizeof (struct elf_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-rl78.c ./bfd/elf32-rl78.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-rl78.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-rl78.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Renesas RL78 specific support for 32-bit ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -1822,7 +1822,7 @@ static bfd_vma
 rl78_offset_for_reloc (bfd *			abfd,
 		       Elf_Internal_Rela *	rel,
 		       Elf_Internal_Shdr *	symtab_hdr,
-		       Elf_External_Sym_Shndx * shndx_buf ATTRIBUTE_UNUSED,
+		       bfd_byte *		shndx_buf ATTRIBUTE_UNUSED,
 		       Elf_Internal_Sym *	intsyms,
 		       Elf_Internal_Rela **	lrel,
 		       bfd *			input_bfd,
@@ -2068,7 +2068,7 @@ rl78_elf_relax_section
   bfd_byte *	      free_contents = NULL;
   Elf_Internal_Sym *  intsyms = NULL;
   Elf_Internal_Sym *  free_intsyms = NULL;
-  Elf_External_Sym_Shndx * shndx_buf = NULL;
+  bfd_byte *	      shndx_buf = NULL;
   bfd_vma pc;
   bfd_vma symval ATTRIBUTE_UNUSED = 0;
   int pcrel ATTRIBUTE_UNUSED = 0;
@@ -2121,17 +2121,20 @@ rl78_elf_relax_section
 
   if (shndx_hdr && shndx_hdr->sh_size != 0)
     {
-      bfd_size_type amt;
+      size_t amt;
 
-      amt = symtab_hdr->sh_info;
-      amt *= sizeof (Elf_External_Sym_Shndx);
-      shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt);
-      if (shndx_buf == NULL)
+      if (_bfd_mul_overflow (symtab_hdr->sh_info,
+			     sizeof (Elf_External_Sym_Shndx), &amt))
+	{
+	  bfd_set_error (bfd_error_no_memory);
+	  goto error_return;
+	}
+      if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0)
 	goto error_return;
-      if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0
-	  || bfd_bread (shndx_buf, amt, abfd) != amt)
+      shndx_buf = _bfd_malloc_and_read (abfd, amt, amt);
+      if (shndx_buf == NULL)
 	goto error_return;
-      shndx_hdr->contents = (bfd_byte *) shndx_buf;
+      shndx_hdr->contents = shndx_buf;
     }
 
   /* Get a copy of the native relocations.  */
@@ -2549,11 +2552,8 @@ rl78_elf_relax_section
   return TRUE;
 
  error_return:
-  if (free_relocs != NULL)
-    free (free_relocs);
-
-  if (free_contents != NULL)
-    free (free_contents);
+  free (free_relocs);
+  free (free_contents);
 
   if (shndx_buf != NULL)
     {
@@ -2561,8 +2561,7 @@ rl78_elf_relax_section
       free (shndx_buf);
     }
 
-  if (free_intsyms != NULL)
-    free (free_intsyms);
+  free (free_intsyms);
 
   return TRUE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-rx.c ./bfd/elf32-rx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-rx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-rx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Renesas RX specific support for 32-bit ELF.
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -576,7 +576,9 @@ rx_elf_relocate_section
 
 	      /* We have already done error checking in rx_table_find().  */
 
-	      buf = (char *) malloc (13 + strlen (name + 20));
+	      buf = (char *) bfd_malloc (13 + strlen (name + 20));
+	      if (buf == NULL)
+		return FALSE;
 
 	      sprintf (buf, "$tablestart$%s", name + 20);
 	      table_start_cache = get_symbol_value (buf,
@@ -618,7 +620,10 @@ rx_elf_relocate_section
 	      idx = (int) (entry_vma - table_start_cache) / 4;
 
 	      /* This will look like $tableentry$<N>$<name> */
-	      buf = (char *) malloc (12 + 20 + strlen (name + 20));
+	      buf = (char *) bfd_malloc (12 + 20 + strlen (name + 20));
+	      if (buf == NULL)
+		return FALSE;
+
 	      sprintf (buf, "$tableentry$%d$%s", idx, name + 20);
 
 	      h = (struct elf_link_hash_entry *) bfd_link_hash_lookup (info->hash, buf, FALSE, FALSE, TRUE);
@@ -1738,7 +1743,7 @@ static bfd_vma
 rx_offset_for_reloc (bfd *		      abfd,
 		     Elf_Internal_Rela *      rel,
 		     Elf_Internal_Shdr *      symtab_hdr,
-		     Elf_External_Sym_Shndx * shndx_buf ATTRIBUTE_UNUSED,
+		     bfd_byte *		      shndx_buf ATTRIBUTE_UNUSED,
 		     Elf_Internal_Sym *	      intsyms,
 		     Elf_Internal_Rela **     lrel,
 		     bfd *		      input_bfd,
@@ -2005,7 +2010,7 @@ elf32_rx_relax_section (bfd *		       ab
   bfd_byte *	      free_contents = NULL;
   Elf_Internal_Sym *  intsyms = NULL;
   Elf_Internal_Sym *  free_intsyms = NULL;
-  Elf_External_Sym_Shndx * shndx_buf = NULL;
+  bfd_byte *	      shndx_buf = NULL;
   bfd_vma pc;
   bfd_vma sec_start;
   bfd_vma symval = 0;
@@ -2058,17 +2063,20 @@ elf32_rx_relax_section (bfd *		       ab
 
   if (shndx_hdr && shndx_hdr->sh_size != 0)
     {
-      bfd_size_type amt;
+      size_t amt;
 
-      amt = symtab_hdr->sh_info;
-      amt *= sizeof (Elf_External_Sym_Shndx);
-      shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt);
-      if (shndx_buf == NULL)
+      if (_bfd_mul_overflow (symtab_hdr->sh_info,
+			     sizeof (Elf_External_Sym_Shndx), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  goto error_return;
+	}
+      if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0)
 	goto error_return;
-      if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0
-	  || bfd_bread (shndx_buf, amt, abfd) != amt)
+      shndx_buf = _bfd_malloc_and_read (abfd, amt, amt);
+      if (shndx_buf == NULL)
 	goto error_return;
-      shndx_hdr->contents = (bfd_byte *) shndx_buf;
+      shndx_hdr->contents = shndx_buf;
     }
 
   /* Get a copy of the native relocations.  */
@@ -3029,8 +3037,7 @@ elf32_rx_relax_section (bfd *		       ab
   return TRUE;
 
  error_return:
-  if (free_contents != NULL)
-    free (free_contents);
+  free (free_contents);
 
   if (shndx_buf != NULL)
     {
@@ -3038,8 +3045,7 @@ elf32_rx_relax_section (bfd *		       ab
       free (shndx_buf);
     }
 
-  if (free_intsyms != NULL)
-    free (free_intsyms);
+  free (free_intsyms);
 
   return FALSE;
 }
@@ -3332,26 +3338,14 @@ rx_dump_symtab (bfd * abfd, void * inter
   Elf_Internal_Sym * isymend;
   Elf_Internal_Sym * isym;
   Elf_Internal_Shdr * symtab_hdr;
-  bfd_boolean free_internal = FALSE, free_external = FALSE;
   char * st_info_str;
   char * st_info_stb_str;
   char * st_other_str;
   char * st_shndx_str;
 
-  if (! internal_syms)
-    {
-      internal_syms = bfd_malloc (1000);
-      free_internal = 1;
-    }
-  if (! external_syms)
-    {
-      external_syms = bfd_malloc (1000);
-      free_external = 1;
-    }
-
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   locsymcount = symtab_hdr->sh_size / get_elf_backend_data (abfd)->s->sizeof_sym;
-  if (free_internal)
+  if (!internal_syms)
     isymbuf = bfd_elf_get_elf_syms (abfd, symtab_hdr,
 				    symtab_hdr->sh_info, 0,
 				    internal_syms, external_syms, NULL);
@@ -3403,10 +3397,6 @@ rx_dump_symtab (bfd * abfd, void * inter
 	      isym->st_other, st_other_str,
 	      isym->st_shndx, st_shndx_str);
     }
-  if (free_internal)
-    free (internal_syms);
-  if (free_external)
-    free (external_syms);
 }
 
 char *
@@ -3615,6 +3605,8 @@ rx_set_section_contents (bfd *	       ab
       char * cloc = (char *) location;
 
       swapped_data = (char *) bfd_alloc (abfd, count);
+      if (swapped_data == NULL)
+	return FALSE;
 
       for (i = 0; i < count; i += 4)
 	{
@@ -3779,7 +3771,9 @@ rx_table_find (struct bfd_hash_entry *ve
      find all the related symbols and mark their sections as SEC_KEEP
      so we don't garbage collect them.  */
 
-  buf = (char *) malloc (12 + 10 + strlen (tname));
+  buf = (char *) bfd_malloc (12 + 10 + strlen (tname));
+  if (buf == NULL)
+    return FALSE;
 
   sprintf (buf, "$tableend$%s", tname);
   h = bfd_link_hash_lookup (info->info->hash, buf, FALSE, FALSE, TRUE);
@@ -3908,7 +3902,9 @@ rx_table_map (struct bfd_hash_entry *ven
 		+ ent->u.def.section->output_section->vma
 		+ ent->u.def.section->output_offset);
 
-  buf = (char *) malloc (12 + 10 + strlen (tname));
+  buf = (char *) bfd_malloc (12 + 10 + strlen (tname));
+  if (buf == NULL)
+    return FALSE;
 
   sprintf (buf, "$tableend$%s", tname);
   end_addr = get_symbol_value_maybe (buf, info->info);
@@ -3928,8 +3924,21 @@ rx_table_map (struct bfd_hash_entry *ven
 
   info->table_start = start_addr;
   info->table_size = (int) (end_addr - start_addr) / 4;
-  info->table_handlers = (bfd_vma *) malloc (info->table_size * sizeof (bfd_vma));
-  info->table_entries = (struct bfd_link_hash_entry **) malloc (info->table_size * sizeof (struct bfd_link_hash_entry));
+  info->table_handlers = (bfd_vma *)
+    bfd_malloc (info->table_size * sizeof (bfd_vma));
+  if (info->table_handlers == NULL)
+    {
+      free (buf);
+      return FALSE;
+    }
+  info->table_entries = (struct bfd_link_hash_entry **)
+    bfd_malloc (info->table_size * sizeof (struct bfd_link_hash_entry));
+  if (info->table_entries == NULL)
+    {
+      free (info->table_handlers);
+      free (buf);
+      return FALSE;
+    }
 
   for (idx = 0; idx < (int) (end_addr - start_addr) / 4; idx ++)
     {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-rx.h ./bfd/elf32-rx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-rx.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-rx.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Renesas RX specific support for 32-bit ELF.
-   Copyright (C) 2014-2019 Free Software Foundation, Inc.
+   Copyright (C) 2014-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-s12z.c ./bfd/elf32-s12z.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-s12z.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-s12z.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Freescale S12Z-specific support for 32-bit ELF
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    (Heavily copied from the D10V port by Martin Hunt (hunt@cygnus.com))
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-s390.c ./bfd/elf32-s390.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-s390.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-s390.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* IBM S/390-specific support for 32-bit ELF
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
    Contributed by Carl B. Pedersen and Martin Schwidefsky.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -654,9 +654,6 @@ struct elf_s390_link_hash_entry
 {
   struct elf_link_hash_entry elf;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   /* Number of GOTPLT references for a function.  */
   bfd_signed_vma gotplt_refcount;
 
@@ -749,16 +746,14 @@ struct elf_s390_link_hash_table
     bfd_signed_vma refcount;
     bfd_vma offset;
   } tls_ldm_got;
-
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
 };
 
 /* Get the s390 ELF linker hash table from a link_info structure.  */
 
 #define elf_s390_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == S390_ELF_DATA ? ((struct elf_s390_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == S390_ELF_DATA)		\
+   ? (struct elf_s390_link_hash_table *) (p)->hash : NULL)
 
 #undef ELF64
 #include "elf-s390-common.c"
@@ -787,7 +782,6 @@ link_hash_newfunc (struct bfd_hash_entry
       struct elf_s390_link_hash_entry *eh;
 
       eh = (struct elf_s390_link_hash_entry *) entry;
-      eh->dyn_relocs = NULL;
       eh->gotplt_refcount = 0;
       eh->tls_type = GOT_UNKNOWN;
       eh->ifunc_resolver_address = 0;
@@ -803,7 +797,7 @@ static struct bfd_link_hash_table *
 elf_s390_link_hash_table_create (bfd *abfd)
 {
   struct elf_s390_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_s390_link_hash_table);
+  size_t amt = sizeof (struct elf_s390_link_hash_table);
 
   ret = (struct elf_s390_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -832,37 +826,6 @@ elf_s390_copy_indirect_symbol (struct bf
   edir = (struct elf_s390_link_hash_entry *) dir;
   eind = (struct elf_s390_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect
       && dir->got.refcount <= 0)
     {
@@ -965,7 +928,7 @@ elf_s390_check_relocs (bfd *abfd,
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  /* A local symbol.  */
-	  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 					abfd, r_symndx);
 	  if (isym == NULL)
 	    return FALSE;
@@ -1306,7 +1269,7 @@ elf_s390_check_relocs (bfd *abfd,
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
 		{
-		  head = &((struct elf_s390_link_hash_entry *) h)->dyn_relocs;
+		  head = &h->dyn_relocs;
 		}
 	      else
 		{
@@ -1316,7 +1279,7 @@ elf_s390_check_relocs (bfd *abfd,
 		  asection *s;
 		  void *vpp;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    return FALSE;
@@ -1332,7 +1295,7 @@ elf_s390_check_relocs (bfd *abfd,
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 
 		  p = ((struct elf_dyn_relocs *)
 		       bfd_alloc (htab->elf.dynobj, amt));
@@ -1421,23 +1384,6 @@ elf_s390_adjust_gotplt (struct elf_s390_
   h->gotplt_refcount = -1;
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = elf_s390_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -1460,11 +1406,9 @@ elf_s390_adjust_dynamic_symbol (struct b
 	{
 	  bfd_size_type pc_count = 0, count = 0;
 	  struct elf_dyn_relocs **pp;
-	  struct elf_s390_link_hash_entry *eh;
 	  struct elf_dyn_relocs *p;
 
-	  eh = (struct elf_s390_link_hash_entry *) h;
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      pc_count += p->pc_count;
 	      p->count -= p->pc_count;
@@ -1564,7 +1508,7 @@ elf_s390_adjust_dynamic_symbol (struct b
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (ELIMINATE_COPY_RELOCS && !readonly_dynrelocs (h))
+  if (ELIMINATE_COPY_RELOCS && !_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -1612,7 +1556,6 @@ allocate_dynrelocs (struct elf_link_hash
 {
   struct bfd_link_info *info;
   struct elf_s390_link_hash_table *htab;
-  struct elf_s390_link_hash_entry *eh = (struct elf_s390_link_hash_entry *)h;
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
@@ -1743,7 +1686,7 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -1758,7 +1701,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -1771,12 +1714,12 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -1816,13 +1759,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
 
@@ -1832,33 +1775,6 @@ allocate_dynrelocs (struct elf_link_hash
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -2047,53 +1963,7 @@ elf_s390_size_dynamic_sections (bfd *out
 	return FALSE;
     }
 
-  if (htab->elf.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in elf_s390_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->elf.splt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->elf, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Return the base VMA address which should be subtracted from real addresses
@@ -3850,7 +3720,7 @@ elf_s390_finish_dynamic_sections (bfd *o
 	    if (local_plt[i].plt.offset != (bfd_vma) -1)
 	      {
 		asection *sec = local_plt[i].sec;
-		isym = bfd_sym_from_r_symndx (&htab->sym_cache, ibfd, i);
+		isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, ibfd, i);
 		if (isym == NULL)
 		  return FALSE;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-score7.c ./bfd/elf32-score7.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-score7.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-score7.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for S+core.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
    Contributed by
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
@@ -1268,7 +1268,7 @@ score_elf_create_got_section (bfd *abfd,
   struct elf_link_hash_entry *h;
   struct bfd_link_hash_entry *bh;
   struct score_got_info *g;
-  bfd_size_type amt;
+  size_t amt;
 
   /* This function may be called more than once.  */
   s = score_elf_got_section (abfd, TRUE);
@@ -2443,12 +2443,13 @@ s7_bfd_score_elf_relocate_section (bfd *
 	    }
 	  else if (!bfd_link_relocatable (info))
 	    {
-	      (*info->callbacks->undefined_symbol)
-		(info, h->root.root.root.string, input_bfd,
-		 input_section, rel->r_offset,
-		 (info->unresolved_syms_in_objects == RM_GENERATE_ERROR)
+              info->callbacks->undefined_symbol
+		(info, h->root.root.root.string, input_bfd, input_section,
+		 rel->r_offset,
+		 (info->unresolved_syms_in_objects == RM_DIAGNOSE
+		  && !info->warn_unresolved_syms)
 		 || ELF_ST_VISIBILITY (h->root.other));
-	      relocation = 0;
+              relocation = 0;
 	    }
 	}
 
@@ -2814,7 +2815,7 @@ s7_bfd_score_elf_add_symbol_hook (bfd *a
       /* Fall through.  */
     case SHN_SCORE_SCOMMON:
       *secp = bfd_make_section_old_way (abfd, ".scommon");
-      (*secp)->flags |= SEC_IS_COMMON;
+      (*secp)->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
       *valp = sym->st_size;
       break;
     }
@@ -2839,7 +2840,7 @@ s7_bfd_score_elf_symbol_processing (bfd
 	{
 	  /* Initialize the small common section.  */
 	  score_elf_scom_section.name = ".scommon";
-	  score_elf_scom_section.flags = SEC_IS_COMMON;
+	  score_elf_scom_section.flags = SEC_IS_COMMON | SEC_SMALL_DATA;
 	  score_elf_scom_section.output_section = &score_elf_scom_section;
 	  score_elf_scom_section.symbol = &score_elf_scom_symbol;
 	  score_elf_scom_section.symbol_ptr_ptr = &score_elf_scom_symbol_ptr;
@@ -3825,6 +3826,10 @@ s7_elf32_score_merge_private_bfd_data (b
   if (!_bfd_generic_verify_endian_match (ibfd, info))
     return FALSE;
 
+  /* FIXME: What should be checked when linking shared libraries?  */
+  if ((ibfd->flags & DYNAMIC) != 0)
+    return TRUE;
+
   in_flags  = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
 
@@ -3862,7 +3867,7 @@ bfd_boolean
 s7_elf32_score_new_section_hook (bfd *abfd, asection *sec)
 {
   struct _score_elf_section_data *sdata;
-  bfd_size_type amt = sizeof (*sdata);
+  size_t amt = sizeof (*sdata);
 
   sdata = bfd_zalloc (abfd, amt);
   if (sdata == NULL)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-score.c ./bfd/elf32-score.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-score.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-score.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for S+core.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
    Contributed by
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
@@ -1410,7 +1410,7 @@ score_elf_create_got_section (bfd *abfd,
   struct elf_link_hash_entry *h;
   struct bfd_link_hash_entry *bh;
   struct score_got_info *g;
-  bfd_size_type amt;
+  size_t amt;
 
   /* This function may be called more than once.  */
   s = score_elf_got_section (abfd, TRUE);
@@ -2669,13 +2669,14 @@ s3_bfd_score_elf_relocate_section (bfd *
 	    }
 	  else if (!bfd_link_relocatable (info))
 	    {
-	      (*info->callbacks->undefined_symbol)
-		(info, h->root.root.root.string, input_bfd,
-		 input_section, rel->r_offset,
-		 (info->unresolved_syms_in_objects == RM_GENERATE_ERROR)
+              info->callbacks->undefined_symbol
+		(info, h->root.root.root.string, input_bfd, input_section,
+		 rel->r_offset,
+		 (info->unresolved_syms_in_objects == RM_DIAGNOSE
+		  && !info->warn_unresolved_syms)
 		 || ELF_ST_VISIBILITY (h->root.other));
-	      relocation = 0;
-	    }
+              relocation = 0;
+            }
 	}
 
       if (sec != NULL && discarded_section (sec))
@@ -3009,7 +3010,7 @@ s3_bfd_score_elf_add_symbol_hook (bfd *a
       /* Fall through.  */
     case SHN_SCORE_SCOMMON:
       *secp = bfd_make_section_old_way (abfd, ".scommon");
-      (*secp)->flags |= SEC_IS_COMMON;
+      (*secp)->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
       *valp = sym->st_size;
       break;
     }
@@ -3034,7 +3035,7 @@ s3_bfd_score_elf_symbol_processing (bfd
 	{
 	  /* Initialize the small common section.  */
 	  score_elf_scom_section.name = ".scommon";
-	  score_elf_scom_section.flags = SEC_IS_COMMON;
+	  score_elf_scom_section.flags = SEC_IS_COMMON | SEC_SMALL_DATA;
 	  score_elf_scom_section.output_section = &score_elf_scom_section;
 	  score_elf_scom_section.symbol = &score_elf_scom_symbol;
 	  score_elf_scom_section.symbol_ptr_ptr = &score_elf_scom_symbol_ptr;
@@ -4020,6 +4021,10 @@ s3_elf32_score_merge_private_bfd_data (b
   if (!_bfd_generic_verify_endian_match (ibfd, info))
     return FALSE;
 
+  /* FIXME: What should be checked when linking shared libraries?  */
+  if ((ibfd->flags & DYNAMIC) != 0)
+    return TRUE;
+
   in_flags  = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
 
@@ -4057,7 +4062,7 @@ static bfd_boolean
 s3_elf32_score_new_section_hook (bfd *abfd, asection *sec)
 {
   struct _score_elf_section_data *sdata;
-  bfd_size_type amt = sizeof (*sdata);
+  size_t amt = sizeof (*sdata);
 
   sdata = bfd_zalloc (abfd, amt);
   if (sdata == NULL)
@@ -4359,7 +4364,7 @@ static struct bfd_link_hash_table *
 elf32_score_link_hash_table_create (bfd *abfd)
 {
   struct elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_link_hash_table);
+  size_t amt = sizeof (struct elf_link_hash_table);
 
   ret = (struct elf_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-score.h ./bfd/elf32-score.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-score.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-score.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for S+core.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
    Contributed by
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-sh.c ./bfd/elf32-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-sh.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-sh.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Renesas / SuperH SH specific support for 32-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
    Contributed by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -167,8 +167,7 @@ sh_elf_reloc_loop (int r_type ATTRIBUTE_
 	  if (!bfd_malloc_and_get_section (input_bfd, symbol_section,
 					   &contents))
 	    {
-	      if (contents != NULL)
-		free (contents);
+	      free (contents);
 	      return bfd_reloc_outofrange;
 	    }
 	}
@@ -203,8 +202,7 @@ sh_elf_reloc_loop (int r_type ATTRIBUTE_
       end = start0;
     }
 
-  if (contents != NULL
-      && elf_section_data (symbol_section)->this_hdr.contents != contents)
+  if (elf_section_data (symbol_section)->this_hdr.contents != contents)
     free (contents);
 
   insn = bfd_get_16 (input_bfd, contents + addr);
@@ -811,21 +809,17 @@ sh_elf_relax_section (bfd *abfd, asectio
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
@@ -1195,8 +1189,7 @@ sh_elf_relax_delete_bytes (bfd *abfd, as
 			 when we leave sh_coff_relax_section.  */
 		      if (!bfd_malloc_and_get_section (abfd, o, &ocontents))
 			{
-			  if (ocontents != NULL)
-			    free (ocontents);
+			  free (ocontents);
 			  return FALSE;
 			}
 
@@ -1253,8 +1246,7 @@ sh_elf_relax_delete_bytes (bfd *abfd, as
 			 when we leave sh_coff_relax_section.  */
 		      if (!bfd_malloc_and_get_section (abfd, o, &ocontents))
 			{
-			  if (ocontents != NULL)
-			    free (ocontents);
+			  free (ocontents);
 			  return FALSE;
 			}
 
@@ -1387,8 +1379,7 @@ sh_elf_align_loads (bfd *abfd ATTRIBUTE_
   return TRUE;
 
  error_return:
-  if (labels != NULL)
-    free (labels);
+  free (labels);
   return FALSE;
 }
 
@@ -2104,9 +2095,6 @@ struct elf_sh_link_hash_entry
 {
   struct elf_link_hash_entry root;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   bfd_signed_vma gotplt_refcount;
 
   /* A local function descriptor, for FDPIC.  The refcount counts
@@ -2172,8 +2160,6 @@ struct elf_sh_link_hash_table
   struct elf_link_hash_table root;
 
   /* Short-cuts to get to dynamic linker sections.  */
-  asection *sdynbss;
-  asection *srelbss;
   asection *sfuncdesc;
   asection *srelfuncdesc;
   asection *srofixup;
@@ -2181,9 +2167,6 @@ struct elf_sh_link_hash_table
   /* The (unloaded but important) VxWorks .rela.plt.unloaded section.  */
   asection *srelplt2;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* A counter or offset to track a TLS got entry.  */
   union
     {
@@ -2194,9 +2177,6 @@ struct elf_sh_link_hash_table
   /* The type of PLT to use.  */
   const struct elf_sh_plt_info *plt_info;
 
-  /* True if the target system is VxWorks.  */
-  bfd_boolean vxworks_p;
-
   /* True if the target system uses FDPIC.  */
   bfd_boolean fdpic_p;
 };
@@ -2212,8 +2192,9 @@ struct elf_sh_link_hash_table
 /* Get the sh ELF linker hash table from a link_info structure.  */
 
 #define sh_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == SH_ELF_DATA ? ((struct elf_sh_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == SH_ELF_DATA)		\
+   ? (struct elf_sh_link_hash_table *) (p)->hash : NULL)
 
 /* Create an entry in an sh ELF linker hash table.  */
 
@@ -2240,7 +2221,6 @@ sh_elf_link_hash_newfunc (struct bfd_has
 				     table, string));
   if (ret != (struct elf_sh_link_hash_entry *) NULL)
     {
-      ret->dyn_relocs = NULL;
       ret->gotplt_refcount = 0;
       ret->funcdesc.refcount = 0;
       ret->abs_funcdesc_refcount = 0;
@@ -2256,7 +2236,7 @@ static struct bfd_link_hash_table *
 sh_elf_link_hash_table_create (bfd *abfd)
 {
   struct elf_sh_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_sh_link_hash_table);
+  size_t amt = sizeof (struct elf_sh_link_hash_table);
 
   ret = (struct elf_sh_link_hash_table *) bfd_zmalloc (amt);
   if (ret == (struct elf_sh_link_hash_table *) NULL)
@@ -2271,8 +2251,11 @@ sh_elf_link_hash_table_create (bfd *abfd
       return NULL;
     }
 
-  ret->vxworks_p = vxworks_object_p (abfd);
-  ret->fdpic_p = fdpic_object_p (abfd);
+  if (fdpic_object_p (abfd))
+    {
+      ret->root.dt_pltgot_required = TRUE;
+      ret->fdpic_p = TRUE;
+    }
 
   return &ret->root.root;
 }
@@ -2452,7 +2435,7 @@ sh_elf_create_dynamic_sections (bfd *abf
 	 section into the .bss section of the final image.  */
       s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
 					      SEC_ALLOC | SEC_LINKER_CREATED);
-      htab->sdynbss = s;
+      htab->root.sdynbss = s;
       if (s == NULL)
 	return FALSE;
 
@@ -2473,14 +2456,14 @@ sh_elf_create_dynamic_sections (bfd *abf
 						  (bed->default_use_rela_p
 						   ? ".rela.bss" : ".rel.bss"),
 						  flags | SEC_READONLY);
-	  htab->srelbss = s;
+	  htab->root.srelbss = s;
 	  if (s == NULL
 	      || !bfd_set_section_alignment (s, ptralign))
 	    return FALSE;
 	}
     }
 
-  if (htab->vxworks_p)
+  if (htab->root.target_os == is_vxworks)
     {
       if (!elf_vxworks_create_dynamic_sections (abfd, info, &htab->srelplt2))
 	return FALSE;
@@ -2489,23 +2472,6 @@ sh_elf_create_dynamic_sections (bfd *abf
   return TRUE;
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = sh_elf_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -2594,7 +2560,7 @@ sh_elf_adjust_dynamic_symbol (struct bfd
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (0 && !readonly_dynrelocs (h))
+  if (0 && !_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -2610,7 +2576,7 @@ sh_elf_adjust_dynamic_symbol (struct bfd
      both the dynamic object and the regular object will refer to the
      same memory location for the variable.  */
 
-  s = htab->sdynbss;
+  s = htab->root.sdynbss;
   BFD_ASSERT (s != NULL);
 
   /* We must generate a R_SH_COPY reloc to tell the dynamic linker to
@@ -2621,7 +2587,7 @@ sh_elf_adjust_dynamic_symbol (struct bfd
     {
       asection *srel;
 
-      srel = htab->srelbss;
+      srel = htab->root.srelbss;
       BFD_ASSERT (srel != NULL);
       srel->size += sizeof (Elf32_External_Rela);
       h->needs_copy = 1;
@@ -2718,7 +2684,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  /* We also need to make an entry in the .rel.plt section.  */
 	  htab->root.srelplt->size += sizeof (Elf32_External_Rela);
 
-	  if (htab->vxworks_p && !bfd_link_pic (info))
+	  if (htab->root.target_os == is_vxworks && !bfd_link_pic (info))
 	    {
 	      /* VxWorks executables have a second set of relocations
 		 for each PLT entry.  They go in a separate relocation
@@ -2851,7 +2817,7 @@ allocate_dynrelocs (struct elf_link_hash
 	htab->srelfuncdesc->size += sizeof (Elf32_External_Rela);
     }
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -2866,7 +2832,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -2877,11 +2843,11 @@ allocate_dynrelocs (struct elf_link_hash
 	    }
 	}
 
-      if (htab->vxworks_p)
+      if (htab->root.target_os == is_vxworks)
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      if (strcmp (p->sec->output_section->name, ".tls_vars") == 0)
 		*pp = p->next;
@@ -2892,12 +2858,12 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -2937,13 +2903,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * sizeof (Elf32_External_Rela);
@@ -2956,33 +2922,6 @@ allocate_dynrelocs (struct elf_link_hash
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* This function is called after all the input files have been read,
    and the input sections have been assigned to output sections.
    It's a convenient place to determine the PLT style.  */
@@ -3063,7 +3002,7 @@ sh_elf_size_dynamic_sections (bfd *outpu
 		     linker script /DISCARD/, so we'll be discarding
 		     the relocs too.  */
 		}
-	      else if (htab->vxworks_p
+	      else if (htab->root.target_os == is_vxworks
 		       && strcmp (p->sec->output_section->name,
 				  ".tls_vars") == 0)
 		{
@@ -3208,7 +3147,7 @@ sh_elf_size_dynamic_sections (bfd *outpu
 	  || s == htab->root.sgotplt
 	  || s == htab->sfuncdesc
 	  || s == htab->srofixup
-	  || s == htab->sdynbss)
+	  || s == htab->root.sdynbss)
 	{
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
@@ -3257,62 +3196,8 @@ sh_elf_size_dynamic_sections (bfd *outpu
 	return FALSE;
     }
 
-  if (htab->root.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in sh_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-	{
-	  if (! add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->root.splt->size != 0)
-	{
-	  if (! add_dynamic_entry (DT_PLTGOT, 0)
-	      || ! add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || ! add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || ! add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-      else if ((elf_elfheader (output_bfd)->e_flags & EF_SH_FDPIC))
-	{
-	  if (! add_dynamic_entry (DT_PLTGOT, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (! add_dynamic_entry (DT_RELA, 0)
-	      || ! add_dynamic_entry (DT_RELASZ, 0)
-	      || ! add_dynamic_entry (DT_RELAENT,
-				      sizeof (Elf32_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->root, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (! add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
-      if (htab->vxworks_p
-	  && !elf_vxworks_add_dynamic_entries (output_bfd, info))
-	return FALSE;
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_maybe_vxworks_add_dynamic_tags (output_bfd, info,
+						  relocs);
 }
 
 /* Add a dynamic relocation to the SRELOC section.  */
@@ -3546,7 +3431,7 @@ sh_elf_relocate_section (bfd *output_bfd
 
   /* We have to handle relocations in vxworks .tls_vars sections
      specially, because the dynamic loader is 'weird'.  */
-  is_vxworks_tls = (htab && htab->vxworks_p && bfd_link_pic (info)
+  is_vxworks_tls = (htab && htab->root.target_os == is_vxworks && bfd_link_pic (info)
 		    && !strcmp (input_section->output_section->name,
 				".tls_vars"));
 
@@ -3563,7 +3448,6 @@ sh_elf_relocate_section (bfd *output_bfd
       bfd_vma relocation;
       bfd_vma addend = (bfd_vma) 0;
       bfd_reloc_status_type r;
-      int seen_stt_datalabel = 0;
       bfd_vma off;
       enum got_type got_type;
       const char *symname = NULL;
@@ -3626,14 +3510,6 @@ sh_elf_relocate_section (bfd *output_bfd
 	  relocation = (sec->output_section->vma
 			+ sec->output_offset
 			+ sym->st_value);
-	  /* A local symbol never has STO_SH5_ISA32, so we don't need
-	     datalabel processing here.  Make sure this does not change
-	     without notice.  */
-	  if ((sym->st_other & STO_SH5_ISA32) != 0)
-	    (*info->callbacks->reloc_dangerous)
-	      (info,
-	       _("unexpected STO_SH5_ISA32 on local symbol is not handled"),
-	       input_bfd, input_section, rel->r_offset);
 
 	  if (sec != NULL && discarded_section (sec))
 	    /* Handled below.  */
@@ -3783,14 +3659,9 @@ sh_elf_relocate_section (bfd *output_bfd
 			  || sh_elf_hash_entry (h)->got_type == GOT_TLS_GD)))
 		;
 	      else if (sec->output_section != NULL)
-		relocation = ((h->root.u.def.value
+		relocation = (h->root.u.def.value
 			      + sec->output_section->vma
-			      + sec->output_offset)
-			      /* A STO_SH5_ISA32 causes a "bitor 1" to the
-				 symbol value, unless we've seen
-				 STT_DATALABEL on the way to it.  */
-			      | ((h->other & STO_SH5_ISA32) != 0
-				 && ! seen_stt_datalabel));
+			      + sec->output_offset);
 	      else if (!bfd_link_relocatable (info)
 		       && (_bfd_elf_section_offset (output_bfd, info,
 						    input_section,
@@ -3815,12 +3686,13 @@ sh_elf_relocate_section (bfd *output_bfd
 		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
 	    ;
 	  else if (!bfd_link_relocatable (info))
-	    (*info->callbacks->undefined_symbol)
-	      (info, h->root.root.string, input_bfd,
-	       input_section, rel->r_offset,
-	       (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
-		|| ELF_ST_VISIBILITY (h->other)));
-	}
+            info->callbacks->undefined_symbol
+	      (info, h->root.root.string, input_bfd, input_section,
+	       rel->r_offset,
+	       (info->unresolved_syms_in_objects == RM_DIAGNOSE
+		&& !info->warn_unresolved_syms)
+	       || ELF_ST_VISIBILITY (h->other));
+        }
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
@@ -5270,10 +5142,8 @@ sh_elf_get_relocated_section_contents (b
 				     isymbuf, sections))
 	goto error_return;
 
-      if (sections != NULL)
-	free (sections);
-      if (isymbuf != NULL
-	  && symtab_hdr->contents != (unsigned char *) isymbuf)
+      free (sections);
+      if (symtab_hdr->contents != (unsigned char *) isymbuf)
 	free (isymbuf);
       if (elf_section_data (input_section)->relocs != internal_relocs)
 	free (internal_relocs);
@@ -5282,13 +5152,10 @@ sh_elf_get_relocated_section_contents (b
   return data;
 
  error_return:
-  if (sections != NULL)
-    free (sections);
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  free (sections);
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (input_section)->relocs != internal_relocs)
+  if (elf_section_data (input_section)->relocs != internal_relocs)
     free (internal_relocs);
   return NULL;
 }
@@ -5351,36 +5218,6 @@ sh_elf_copy_indirect_symbol (struct bfd_
   edir = (struct elf_sh_link_hash_entry *) dir;
   eind = (struct elf_sh_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
   edir->gotplt_refcount = eind->gotplt_refcount;
   eind->gotplt_refcount = 0;
   edir->funcdesc.refcount += eind->funcdesc.refcount;
@@ -5454,15 +5291,6 @@ sh_elf_check_relocs (bfd *abfd, struct b
   if (bfd_link_relocatable (info))
     return TRUE;
 
-  /* Don't do anything special with non-loaded, non-alloced sections.
-     In particular, any relocs in such sections should not affect GOT
-     and PLT reference counting (ie. we don't allow them to create GOT
-     or PLT entries), there's no possibility or desire to optimize TLS
-     relocs, and there's not much point in propagating relocs to shared
-     libs that the dynamic linker won't relocate.  */
-  if ((sec->flags & SEC_ALLOC) == 0)
-    return TRUE;
-
   BFD_ASSERT (is_sh_elf (abfd));
 
   symtab_hdr = &elf_symtab_hdr (abfd);
@@ -5839,7 +5667,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
-		head = &((struct elf_sh_link_hash_entry *) h)->dyn_relocs;
+		head = &h->dyn_relocs;
 	      else
 		{
 		  /* Track dynamic relocs needed for local syms too.  */
@@ -5847,7 +5675,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
 		  void *vpp;
 		  Elf_Internal_Sym *isym;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->root.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    return FALSE;
@@ -5863,7 +5691,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof (*p);
+		  size_t amt = sizeof (*p);
 		  p = bfd_alloc (htab->root.dynobj, amt);
 		  if (p == NULL)
 		    return FALSE;
@@ -6041,6 +5869,10 @@ sh_elf_merge_private_data (bfd *ibfd, st
 {
   bfd *obfd = info->output_bfd;
 
+  /* FIXME: What should be checked when linking shared libraries?  */
+  if ((ibfd->flags & DYNAMIC) != 0)
+    return TRUE;
+
   if (! is_sh_elf (ibfd) || ! is_sh_elf (obfd))
     return TRUE;
 
@@ -6189,7 +6021,7 @@ sh_elf_finish_dynamic_symbol (bfd *outpu
 			     (splt->contents
 			      + h->plt.offset
 			      + plt_info->symbol_fields.got_entry));
-	  if (htab->vxworks_p)
+	  if (htab->root.target_os == is_vxworks)
 	    {
 	      unsigned int reachable_plts, plts_per_4k;
 	      int distance;
@@ -6270,7 +6102,7 @@ sh_elf_finish_dynamic_symbol (bfd *outpu
       loc = srelplt->contents + plt_index * sizeof (Elf32_External_Rela);
       bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
 
-      if (htab->vxworks_p && !bfd_link_pic (info))
+      if (htab->root.target_os == is_vxworks && !bfd_link_pic (info))
 	{
 	  /* Create the .rela.plt.unloaded relocations for this PLT entry.
 	     Begin by pointing LOC to the first such relocation.  */
@@ -6393,7 +6225,7 @@ sh_elf_finish_dynamic_symbol (bfd *outpu
      _GLOBAL_OFFSET_TABLE_ is not absolute: it is relative to the
      ".got" section.  */
   if (h == htab->root.hdynamic
-      || (!htab->vxworks_p && h == htab->root.hgot))
+      || (htab->root.target_os != is_vxworks && h == htab->root.hgot))
     sym->st_shndx = SHN_ABS;
 
   return TRUE;
@@ -6434,7 +6266,7 @@ sh_elf_finish_dynamic_sections (bfd *out
 	  switch (dyn.d_tag)
 	    {
 	    default:
-	      if (htab->vxworks_p
+	      if (htab->root.target_os == is_vxworks
 		  && elf_vxworks_finish_dynamic_entry (output_bfd, &dyn))
 		bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
@@ -6481,7 +6313,7 @@ sh_elf_finish_dynamic_sections (bfd *out
 				 (splt->contents
 				  + htab->plt_info->plt0_got_fields[i]));
 
-	  if (htab->vxworks_p)
+	  if (htab->root.target_os == is_vxworks)
 	    {
 	      /* Finalize the .rela.plt.unloaded contents.  */
 	      Elf_Internal_Rela rel;
@@ -6882,6 +6714,9 @@ sh_elf_encode_eh_address (bfd *abfd,
 #define	ELF_MAXPAGESIZE			0x1000
 #undef	ELF_COMMONPAGESIZE
 
+#undef	ELF_TARGET_OS
+#define	ELF_TARGET_OS			is_vxworks
+
 #include "elf32-target.h"
 
 #endif /* not SH_TARGET_ALREADY_DEFINED */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-sh-relocs.h ./bfd/elf32-sh-relocs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-sh-relocs.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-sh-relocs.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-sparc.c ./bfd/elf32-sparc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-sparc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-sparc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* SPARC-specific support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -121,37 +121,41 @@ sparc_final_write_processing (bfd *abfd)
 {
   switch (bfd_get_mach (abfd))
     {
-    case bfd_mach_sparc :
-    case bfd_mach_sparc_sparclet :
-    case bfd_mach_sparc_sparclite :
+    case bfd_mach_sparc:
+    case bfd_mach_sparc_sparclet:
+    case bfd_mach_sparc_sparclite:
       break; /* nothing to do */
-    case bfd_mach_sparc_v8plus :
+    case bfd_mach_sparc_v8plus:
       elf_elfheader (abfd)->e_machine = EM_SPARC32PLUS;
       elf_elfheader (abfd)->e_flags &=~ EF_SPARC_32PLUS_MASK;
       elf_elfheader (abfd)->e_flags |= EF_SPARC_32PLUS;
       break;
-    case bfd_mach_sparc_v8plusa :
+    case bfd_mach_sparc_v8plusa:
       elf_elfheader (abfd)->e_machine = EM_SPARC32PLUS;
       elf_elfheader (abfd)->e_flags &=~ EF_SPARC_32PLUS_MASK;
       elf_elfheader (abfd)->e_flags |= EF_SPARC_32PLUS | EF_SPARC_SUN_US1;
       break;
-    case bfd_mach_sparc_v8plusb :
-    case bfd_mach_sparc_v8plusc :
-    case bfd_mach_sparc_v8plusd :
-    case bfd_mach_sparc_v8pluse :
-    case bfd_mach_sparc_v8plusv :
-    case bfd_mach_sparc_v8plusm :
-    case bfd_mach_sparc_v8plusm8 :
+    case bfd_mach_sparc_v8plusb:
+    case bfd_mach_sparc_v8plusc:
+    case bfd_mach_sparc_v8plusd:
+    case bfd_mach_sparc_v8pluse:
+    case bfd_mach_sparc_v8plusv:
+    case bfd_mach_sparc_v8plusm:
+    case bfd_mach_sparc_v8plusm8:
       elf_elfheader (abfd)->e_machine = EM_SPARC32PLUS;
       elf_elfheader (abfd)->e_flags &=~ EF_SPARC_32PLUS_MASK;
       elf_elfheader (abfd)->e_flags |= EF_SPARC_32PLUS | EF_SPARC_SUN_US1
 				       | EF_SPARC_SUN_US3;
       break;
-    case bfd_mach_sparc_sparclite_le :
+    case bfd_mach_sparc_sparclite_le:
       elf_elfheader (abfd)->e_flags |= EF_SPARC_LEDATA;
       break;
-    default :
-      abort ();
+    case 0: /* A non-sparc architecture - ignore.  */
+      break;
+    default:
+      _bfd_error_handler
+	(_("%pB: unhandled sparc machine value '%lu' detected during write processing"),
+	 abfd, (long) bfd_get_mach (abfd));
       break;
     }
 }
@@ -305,25 +309,6 @@ elf32_sparc_copy_solaris_special_section
 
 #include "elf32-target.h"
 
-/* A wrapper around _bfd_sparc_elf_link_hash_table_create that identifies
-   the target system as VxWorks.  */
-
-static struct bfd_link_hash_table *
-elf32_sparc_vxworks_link_hash_table_create (bfd *abfd)
-{
-  struct bfd_link_hash_table *ret;
-
-  ret = _bfd_sparc_elf_link_hash_table_create (abfd);
-  if (ret)
-    {
-      struct _bfd_sparc_elf_link_hash_table *htab;
-
-      htab = (struct _bfd_sparc_elf_link_hash_table *) ret;
-      htab->is_vxworks = 1;
-    }
-  return ret;
-}
-
 /* A final_write_processing hook that does both the SPARC- and VxWorks-
    specific handling.  */
 
@@ -342,9 +327,8 @@ elf32_sparc_vxworks_final_write_processi
 #undef  ELF_MINPAGESIZE
 #define ELF_MINPAGESIZE	0x1000
 
-#undef bfd_elf32_bfd_link_hash_table_create
-#define bfd_elf32_bfd_link_hash_table_create \
-  elf32_sparc_vxworks_link_hash_table_create
+#undef	ELF_TARGET_OS
+#define	ELF_TARGET_OS	is_vxworks
 
 #undef  elf_backend_want_got_plt
 #define elf_backend_want_got_plt		1
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-spu.c ./bfd/elf32-spu.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-spu.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-spu.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* SPU specific support for 32-bit ELF
 
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -371,8 +371,9 @@ struct got_entry
 };
 
 #define spu_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == SPU_ELF_DATA ? ((struct spu_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == SPU_ELF_DATA)		\
+   ? (struct spu_link_hash_table *) (p)->hash : NULL)
 
 struct call_info
 {
@@ -1598,9 +1599,7 @@ process_stubs (struct bfd_link_info *inf
 		  if (elf_section_data (isec)->relocs != internal_relocs)
 		    free (internal_relocs);
 		error_ret_free_local:
-		  if (local_syms != NULL
-		      && (symtab_hdr->contents
-			  != (unsigned char *) local_syms))
+		  if (symtab_hdr->contents != (unsigned char *) local_syms)
 		    free (local_syms);
 		  return FALSE;
 		}
@@ -2210,14 +2209,14 @@ find_function_stack_adjust (asection *se
 			    bfd_vma *lr_store,
 			    bfd_vma *sp_adjust)
 {
-  int reg[128];
+  int32_t reg[128];
 
   memset (reg, 0, sizeof (reg));
   for ( ; offset + 4 <= sec->size; offset += 4)
     {
       unsigned char buf[4];
       int rt, ra;
-      int imm;
+      uint32_t imm;
 
       /* Assume no relocs on stack adjusing insns.  */
       if (!bfd_get_section_contents (sec->owner, sec, buf, offset, 4))
@@ -3013,13 +3012,10 @@ discover_functions (struct bfd_link_info
 	  continue;
 	}
 
-      if (symtab_hdr->contents != NULL)
-	{
-	  /* Don't use cached symbols since the generic ELF linker
-	     code only reads local symbols, and we need globals too.  */
-	  free (symtab_hdr->contents);
-	  symtab_hdr->contents = NULL;
-	}
+      /* Don't use cached symbols since the generic ELF linker
+	 code only reads local symbols, and we need globals too.  */
+      free (symtab_hdr->contents);
+      symtab_hdr->contents = NULL;
       syms = bfd_elf_get_elf_syms (ibfd, symtab_hdr, symcount, 0,
 				   NULL, NULL, NULL);
       symtab_hdr->contents = (void *) syms;
@@ -4103,7 +4099,7 @@ sort_bfds (const void *a, const void *b)
   bfd *const *abfd1 = a;
   bfd *const *abfd2 = b;
 
-  return filename_cmp ((*abfd1)->filename, (*abfd2)->filename);
+  return filename_cmp (bfd_get_filename (*abfd1), bfd_get_filename (*abfd2));
 }
 
 static unsigned int
@@ -4123,9 +4119,9 @@ print_one_overlay_section (FILE *script,
 
       if (fprintf (script, "   %s%c%s (%s)\n",
 		   (sec->owner->my_archive != NULL
-		    ? sec->owner->my_archive->filename : ""),
+		    ? bfd_get_filename (sec->owner->my_archive) : ""),
 		   info->path_separator,
-		   sec->owner->filename,
+		   bfd_get_filename (sec->owner),
 		   sec->name) <= 0)
 	return -1;
       if (sec->segment_mark)
@@ -4137,9 +4133,9 @@ print_one_overlay_section (FILE *script,
 	      sec = call_fun->sec;
 	      if (fprintf (script, "   %s%c%s (%s)\n",
 			   (sec->owner->my_archive != NULL
-			    ? sec->owner->my_archive->filename : ""),
+			    ? bfd_get_filename (sec->owner->my_archive) : ""),
 			   info->path_separator,
-			   sec->owner->filename,
+			   bfd_get_filename (sec->owner),
 			   sec->name) <= 0)
 		return -1;
 	      for (call = call_fun->call_list; call; call = call->next)
@@ -4155,9 +4151,9 @@ print_one_overlay_section (FILE *script,
       if (sec != NULL
 	  && fprintf (script, "   %s%c%s (%s)\n",
 		      (sec->owner->my_archive != NULL
-		       ? sec->owner->my_archive->filename : ""),
+		       ? bfd_get_filename (sec->owner->my_archive) : ""),
 		      info->path_separator,
-		      sec->owner->filename,
+		      bfd_get_filename (sec->owner),
 		      sec->name) <= 0)
 	return -1;
 
@@ -4172,9 +4168,9 @@ print_one_overlay_section (FILE *script,
 	      if (sec != NULL
 		  && fprintf (script, "   %s%c%s (%s)\n",
 			      (sec->owner->my_archive != NULL
-			       ? sec->owner->my_archive->filename : ""),
+			       ? bfd_get_filename (sec->owner->my_archive) : ""),
 			      info->path_separator,
-			      sec->owner->filename,
+			      bfd_get_filename (sec->owner),
 			      sec->name) <= 0)
 		return -1;
 	      for (call = call_fun->call_list; call; call = call->next)
@@ -4335,18 +4331,19 @@ spu_elf_auto_overlay (struct bfd_link_in
 
       qsort (bfd_arr, bfd_count, sizeof (*bfd_arr), sort_bfds);
       for (i = 1; i < bfd_count; ++i)
-	if (filename_cmp (bfd_arr[i - 1]->filename, bfd_arr[i]->filename) == 0)
+	if (filename_cmp (bfd_get_filename (bfd_arr[i - 1]),
+			  bfd_get_filename (bfd_arr[i])) == 0)
 	  {
 	    if (bfd_arr[i - 1]->my_archive == bfd_arr[i]->my_archive)
 	      {
 		if (bfd_arr[i - 1]->my_archive && bfd_arr[i]->my_archive)
 		  /* xgettext:c-format */
 		  info->callbacks->einfo (_("%s duplicated in %s\n"),
-					  bfd_arr[i]->filename,
-					  bfd_arr[i]->my_archive->filename);
+					  bfd_get_filename (bfd_arr[i]),
+					  bfd_get_filename (bfd_arr[i]->my_archive));
 		else
 		  info->callbacks->einfo (_("%s duplicated\n"),
-					  bfd_arr[i]->filename);
+					  bfd_get_filename (bfd_arr[i]));
 		ok = FALSE;
 	      }
 	  }
@@ -4927,13 +4924,14 @@ spu_elf_relocate_section (bfd *output_bf
 		   && !(r_type == R_SPU_PPU32 || r_type == R_SPU_PPU64))
 	    {
 	      bfd_boolean err;
-	      err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
-		     || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT);
-	      (*info->callbacks->undefined_symbol) (info,
-						    h->root.root.string,
-						    input_bfd,
-						    input_section,
-						    rel->r_offset, err);
+
+	      err = (info->unresolved_syms_in_objects == RM_DIAGNOSE
+		     && !info->warn_unresolved_syms)
+		|| ELF_ST_VISIBILITY (h->other) != STV_DEFAULT;
+
+	      info->callbacks->undefined_symbol
+		(info, h->root.root.string, input_bfd,
+		 input_section, rel->r_offset, err);
 	    }
 	  sym_name = h->root.root.string;
 	}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-spu.h ./bfd/elf32-spu.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-spu.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-spu.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* SPU specific support for 32-bit ELF.
 
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tic6x.c ./bfd/elf32-tic6x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tic6x.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-tic6x.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for TI C6X
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2020 Free Software Foundation, Inc.
    Contributed by Joseph Myers <joseph@codesourcery.com>
 		  Bernd Schmidt  <bernds@codesourcery.com>
 
@@ -46,9 +46,6 @@ struct elf32_tic6x_link_hash_table
   /* C6X specific command line arguments.  */
   struct elf32_tic6x_params params;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* The output BFD, for convenience.  */
   bfd *obfd;
 
@@ -61,16 +58,6 @@ struct elf32_tic6x_link_hash_table
 #define elf32_tic6x_hash_table(p) \
   ((struct elf32_tic6x_link_hash_table *) ((p)->hash))
 
-/* TI C6X ELF linker hash entry.  */
-
-struct elf32_tic6x_link_hash_entry
-{
-  struct elf_link_hash_entry elf;
-
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-};
-
 typedef enum
 {
   DELETE_EXIDX_ENTRY,
@@ -1559,51 +1546,21 @@ elf32_tic6x_set_use_rela_p (bfd *abfd, b
   elf32_tic6x_tdata (abfd)->use_rela_p = use_rela_p;
 }
 
-/* Create an entry in a C6X ELF linker hash table.  */
-
-static struct bfd_hash_entry *
-elf32_tic6x_link_hash_newfunc (struct bfd_hash_entry *entry,
-			    struct bfd_hash_table *table,
-			    const char *string)
-{
-  /* Allocate the structure if it has not already been allocated by a
-     subclass.  */
-  if (entry == NULL)
-    {
-      entry = bfd_hash_allocate (table,
-				 sizeof (struct elf32_tic6x_link_hash_entry));
-      if (entry == NULL)
-	return entry;
-    }
-
-  /* Call the allocation method of the superclass.  */
-  entry = _bfd_elf_link_hash_newfunc (entry, table, string);
-  if (entry != NULL)
-    {
-      struct elf32_tic6x_link_hash_entry *eh;
-
-      eh = (struct elf32_tic6x_link_hash_entry *) entry;
-      eh->dyn_relocs = NULL;
-    }
-
-  return entry;
-}
-
 /* Create a C6X ELF linker hash table.  */
 
 static struct bfd_link_hash_table *
 elf32_tic6x_link_hash_table_create (bfd *abfd)
 {
   struct elf32_tic6x_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf32_tic6x_link_hash_table);
+  size_t amt = sizeof (struct elf32_tic6x_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
     return NULL;
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
-				      elf32_tic6x_link_hash_newfunc,
-				      sizeof (struct elf32_tic6x_link_hash_entry),
+				      _bfd_elf_link_hash_newfunc,
+				      sizeof (struct elf_link_hash_entry),
 				      TIC6X_ELF_DATA))
     {
       free (ret);
@@ -2003,25 +1960,6 @@ elf32_tic6x_fake_sections (bfd *abfd ATT
   return TRUE;
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-  struct elf32_tic6x_link_hash_entry *eh
-    = (struct elf32_tic6x_link_hash_entry *) h;
-
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -2147,7 +2085,7 @@ elf32_tic6x_new_section_hook (bfd *abfd,
   if (!sec->used_by_bfd)
     {
       _tic6x_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+      size_t amt = sizeof (*sdata);
 
       sdata = (_tic6x_elf_section_data *) bfd_zalloc (abfd, amt);
       if (sdata == NULL)
@@ -2788,7 +2726,7 @@ elf32_tic6x_check_relocs (bfd *abfd, str
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  /* A local symbol.  */
-	  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 					abfd, r_symndx);
 	  if (isym == NULL)
 	    return FALSE;
@@ -2924,7 +2862,7 @@ elf32_tic6x_check_relocs (bfd *abfd, str
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
 		{
-		  head = &((struct elf32_tic6x_link_hash_entry *) h)->dyn_relocs;
+		  head = &h->dyn_relocs;
 		}
 	      else
 		{
@@ -2945,7 +2883,7 @@ elf32_tic6x_check_relocs (bfd *abfd, str
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 		  p = bfd_alloc (htab->elf.dynobj, amt);
 		  if (p == NULL)
 		    return FALSE;
@@ -3014,7 +2952,7 @@ elf32_tic6x_add_symbol_hook (bfd *abfd,
     {
     case SHN_TIC6X_SCOMMON:
       *secp = bfd_make_section_old_way (abfd, ".scommon");
-      (*secp)->flags |= SEC_IS_COMMON;
+      (*secp)->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
       *valp = sym->st_size;
       bfd_set_section_alignment (*secp, bfd_log2 (sym->st_value));
       break;
@@ -3036,7 +2974,7 @@ elf32_tic6x_symbol_processing (bfd *abfd
 	{
 	  /* Initialize the small common section.  */
 	  tic6x_elf_scom_section.name = ".scommon";
-	  tic6x_elf_scom_section.flags = SEC_IS_COMMON;
+	  tic6x_elf_scom_section.flags = SEC_IS_COMMON | SEC_SMALL_DATA;
 	  tic6x_elf_scom_section.output_section = &tic6x_elf_scom_section;
 	  tic6x_elf_scom_section.symbol = &tic6x_elf_scom_symbol;
 	  tic6x_elf_scom_section.symbol_ptr_ptr = &tic6x_elf_scom_symbol_ptr;
@@ -3089,13 +3027,11 @@ elf32_tic6x_allocate_dynrelocs (struct e
 {
   struct bfd_link_info *info;
   struct elf32_tic6x_link_hash_table *htab;
-  struct elf32_tic6x_link_hash_entry *eh;
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
     return TRUE;
 
-  eh = (struct elf32_tic6x_link_hash_entry *) h;
   info = (struct bfd_link_info *) inf;
   htab = elf32_tic6x_hash_table (info);
 
@@ -3176,7 +3112,7 @@ elf32_tic6x_allocate_dynrelocs (struct e
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* Discard relocs on undefined weak syms with non-default
@@ -3189,7 +3125,7 @@ elf32_tic6x_allocate_dynrelocs (struct e
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -3200,11 +3136,11 @@ elf32_tic6x_allocate_dynrelocs (struct e
 	    }
 	}
 
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -3218,7 +3154,7 @@ elf32_tic6x_allocate_dynrelocs (struct e
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc;
 
@@ -3231,33 +3167,6 @@ elf32_tic6x_allocate_dynrelocs (struct e
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -3440,11 +3349,8 @@ elf32_tic6x_size_dynamic_sections (bfd *
 #define add_dynamic_entry(TAG, VAL) \
   _bfd_elf_add_dynamic_entry (info, TAG, VAL)
 
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
+      if (!_bfd_elf_add_dynamic_tags (output_bfd, info, relocs))
+	return FALSE;
 
       if (!add_dynamic_entry (DT_C6000_DSBT_BASE, 0)
 	  || !add_dynamic_entry (DT_C6000_DSBT_SIZE, htab->params.dsbt_size)
@@ -3452,33 +3358,6 @@ elf32_tic6x_size_dynamic_sections (bfd *
 				 htab->params.dsbt_index))
 	return FALSE;
 
-      if (htab->elf.splt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->elf, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
     }
 #undef add_dynamic_entry
 
@@ -3724,6 +3603,10 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
   int i;
   int array_align_in, array_align_out, array_expect_in, array_expect_out;
 
+  /* FIXME: What should be checked when linking shared libraries?  */
+  if ((ibfd->flags & DYNAMIC) != 0)
+    return TRUE;
+
   if (!elf_known_obj_attributes_proc (obfd)[0].i)
     {
       /* This is the first object.  Copy the attributes.  */
@@ -3862,6 +3745,9 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
 
 	case Tag_ABI_PIC:
 	case Tag_ABI_PID:
+	  /* Don't transfer these tags from dynamic objects.  */
+	  if ((ibfd->flags & DYNAMIC) != 0)
+	    continue;
 	  if (out_attr[i].i > in_attr[i].i)
 	    out_attr[i].i = in_attr[i].i;
 	  break;
@@ -4334,6 +4220,8 @@ elf32_tic6x_write_section (bfd *output_b
   return TRUE;
 }
 
+#define	elf32_bed		elf32_tic6x_bed
+
 #define TARGET_LITTLE_SYM	tic6x_elf32_le_vec
 #define TARGET_LITTLE_NAME	"elf32-tic6x-le"
 #define TARGET_BIG_SYM		tic6x_elf32_be_vec
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tic6x.h ./bfd/elf32-tic6x.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tic6x.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-tic6x.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for TI C6X
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tilegx.c ./bfd/elf32-tilegx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tilegx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-tilegx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILE-Gx-specific support for 32-bit ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tilegx.h ./bfd/elf32-tilegx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tilegx.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-tilegx.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILE-Gx-specific support for 32-bit ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tilepro.c ./bfd/elf32-tilepro.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tilepro.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-tilepro.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILEPro-specific support for 32-bit ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -685,9 +685,6 @@ struct tilepro_elf_link_hash_entry
 {
   struct elf_link_hash_entry elf;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
 #define GOT_UNKNOWN     0
 #define GOT_NORMAL      1
 #define GOT_TLS_GD      2
@@ -730,19 +727,11 @@ tilepro_elf_mkobject (bfd *abfd)
 #include "elf/common.h"
 #include "elf/internal.h"
 
-struct tilepro_elf_link_hash_table
-{
-  struct elf_link_hash_table elf;
-
-  /* Small local sym to section mapping cache.  */
-  struct sym_cache sym_cache;
-};
-
 /* Get the Tilepro ELF linker hash table from a link_info structure.  */
 #define tilepro_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == TILEPRO_ELF_DATA \
-  ? ((struct tilepro_elf_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == TILEPRO_ELF_DATA)	\
+   ? (struct elf_link_hash_table *) (p)->hash : NULL)
 
 static reloc_howto_type *
 tilepro_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
@@ -1176,7 +1165,6 @@ link_hash_newfunc (struct bfd_hash_entry
       struct tilepro_elf_link_hash_entry *eh;
 
       eh = (struct tilepro_elf_link_hash_entry *) entry;
-      eh->dyn_relocs = NULL;
       eh->tls_type = GOT_UNKNOWN;
     }
 
@@ -1188,14 +1176,14 @@ link_hash_newfunc (struct bfd_hash_entry
 static struct bfd_link_hash_table *
 tilepro_elf_link_hash_table_create (bfd *abfd)
 {
-  struct tilepro_elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct tilepro_elf_link_hash_table);
+  struct elf_link_hash_table *ret;
+  size_t amt = sizeof (struct elf_link_hash_table);
 
-  ret = (struct tilepro_elf_link_hash_table *) bfd_zmalloc (amt);
+  ret = (struct elf_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
     return NULL;
 
-  if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
+  if (!_bfd_elf_link_hash_table_init (ret, abfd, link_hash_newfunc,
 				      sizeof (struct tilepro_elf_link_hash_entry),
 				      TILEPRO_ELF_DATA))
     {
@@ -1203,7 +1191,7 @@ tilepro_elf_link_hash_table_create (bfd
       return NULL;
     }
 
-  return &ret->elf.root;
+  return &ret->root;
 }
 
 /* Create the .got section.  */
@@ -1296,37 +1284,6 @@ tilepro_elf_copy_indirect_symbol (struct
   edir = (struct tilepro_elf_link_hash_entry *) dir;
   eind = (struct tilepro_elf_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect
       && dir->got.refcount <= 0)
     {
@@ -1437,7 +1394,7 @@ static bfd_boolean
 tilepro_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			  asection *sec, const Elf_Internal_Rela *relocs)
 {
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel;
@@ -1458,8 +1415,8 @@ tilepro_elf_check_relocs (bfd *abfd, str
 
   BFD_ASSERT (is_tilepro_elf (abfd) || num_relocs == 0);
 
-  if (htab->elf.dynobj == NULL)
-    htab->elf.dynobj = abfd;
+  if (htab->dynobj == NULL)
+    htab->dynobj = abfd;
 
   rel_end = relocs + num_relocs;
   for (rel = relocs; rel < rel_end; rel++)
@@ -1604,9 +1561,9 @@ tilepro_elf_check_relocs (bfd *abfd, str
 	      }
 	  }
 
-	  if (htab->elf.sgot == NULL)
+	  if (htab->sgot == NULL)
 	    {
-	      if (!tilepro_elf_create_got_section (htab->elf.dynobj, info))
+	      if (!tilepro_elf_create_got_section (htab->dynobj, info))
 		return FALSE;
 	    }
 	  break;
@@ -1751,7 +1708,7 @@ tilepro_elf_check_relocs (bfd *abfd, str
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->elf.dynobj, 2, abfd, /*rela?*/ TRUE);
+		    (sec, htab->dynobj, 2, abfd, /*rela?*/ TRUE);
 
 		  if (sreloc == NULL)
 		    return FALSE;
@@ -1760,8 +1717,7 @@ tilepro_elf_check_relocs (bfd *abfd, str
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
-		head =
-		  &((struct tilepro_elf_link_hash_entry *) h)->dyn_relocs;
+		head = &h->dyn_relocs;
 	      else
 		{
 		  /* Track dynamic relocs needed for local syms too.
@@ -1788,9 +1744,9 @@ tilepro_elf_check_relocs (bfd *abfd, str
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 		  p = ((struct elf_dyn_relocs *)
-		       bfd_alloc (htab->elf.dynobj, amt));
+		       bfd_alloc (htab->dynobj, amt));
 		  if (p == NULL)
 		    return FALSE;
 		  p->next = *head;
@@ -1876,23 +1832,6 @@ tilepro_elf_gc_mark_hook (asection *sec,
   return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = tilepro_elf_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -1903,14 +1842,14 @@ static bfd_boolean
 tilepro_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				   struct elf_link_hash_entry *h)
 {
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   asection *s, *srel;
 
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
 
   /* Make sure we know what is going on here.  */
-  BFD_ASSERT (htab->elf.dynobj != NULL
+  BFD_ASSERT (htab->dynobj != NULL
 	      && (h->needs_plt
 		  || h->is_weakalias
 		  || (h->def_dynamic
@@ -1978,7 +1917,7 @@ tilepro_elf_adjust_dynamic_symbol (struc
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (!readonly_dynrelocs (h))
+  if (!_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -2000,13 +1939,13 @@ tilepro_elf_adjust_dynamic_symbol (struc
      .rel.bss section we are going to use.  */
   if ((h->root.u.def.section->flags & SEC_READONLY) != 0)
     {
-      s = htab->elf.sdynrelro;
-      srel = htab->elf.sreldynrelro;
+      s = htab->sdynrelro;
+      srel = htab->sreldynrelro;
     }
   else
     {
-      s = htab->elf.sdynbss;
-      srel = htab->elf.srelbss;
+      s = htab->sdynbss;
+      srel = htab->srelbss;
     }
   if ((h->root.u.def.section->flags & SEC_ALLOC) != 0 && h->size != 0)
     {
@@ -2024,8 +1963,7 @@ static bfd_boolean
 allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info;
-  struct tilepro_elf_link_hash_table *htab;
-  struct tilepro_elf_link_hash_entry *eh;
+  struct elf_link_hash_table *htab;
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
@@ -2035,7 +1973,7 @@ allocate_dynrelocs (struct elf_link_hash
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
 
-  if (htab->elf.dynamic_sections_created
+  if (htab->dynamic_sections_created
       && h->plt.refcount > 0)
     {
       /* Make sure this symbol is output as a dynamic symbol.
@@ -2049,7 +1987,7 @@ allocate_dynrelocs (struct elf_link_hash
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
 	{
-	  asection *s = htab->elf.splt;
+	  asection *s = htab->splt;
 
 	  /* Allocate room for the header.  */
 	  if (s->size == 0)
@@ -2075,10 +2013,10 @@ allocate_dynrelocs (struct elf_link_hash
 	  s->size += PLT_ENTRY_SIZE;
 
 	  /* We also need to make an entry in the .got.plt section.  */
-	  htab->elf.sgotplt->size += GOT_ENTRY_SIZE;
+	  htab->sgotplt->size += GOT_ENTRY_SIZE;
 
 	  /* We also need to make an entry in the .rela.plt section.  */
-	  htab->elf.srelplt->size += TILEPRO_ELF_RELA_BYTES;
+	  htab->srelplt->size += TILEPRO_ELF_RELA_BYTES;
 	}
       else
 	{
@@ -2114,28 +2052,27 @@ allocate_dynrelocs (struct elf_link_hash
 	    return FALSE;
 	}
 
-      s = htab->elf.sgot;
+      s = htab->sgot;
       h->got.offset = s->size;
       s->size += TILEPRO_BYTES_PER_WORD;
       /* R_TILEPRO_IMM16_Xn_TLS_GD entries need 2 consecutive GOT slots. */
       if (tls_type == GOT_TLS_GD)
 	s->size += TILEPRO_BYTES_PER_WORD;
-      dyn = htab->elf.dynamic_sections_created;
+      dyn = htab->dynamic_sections_created;
       /* R_TILEPRO_IMM16_Xn_TLS_IE_xxx needs one dynamic relocation,
 	 R_TILEPRO_IMM16_Xn_TLS_GD_xxx needs two if local symbol and two if
 	 global.  */
       if (tls_type == GOT_TLS_GD || tls_type == GOT_TLS_IE)
-	htab->elf.srelgot->size += 2 * TILEPRO_ELF_RELA_BYTES;
+	htab->srelgot->size += 2 * TILEPRO_ELF_RELA_BYTES;
       else if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
 						bfd_link_pic (info),
 						h))
-	htab->elf.srelgot->size += TILEPRO_ELF_RELA_BYTES;
+	htab->srelgot->size += TILEPRO_ELF_RELA_BYTES;
     }
   else
     h->got.offset = (bfd_vma) -1;
 
-  eh = (struct tilepro_elf_link_hash_entry *) h;
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -2150,7 +2087,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -2163,12 +2100,12 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -2189,7 +2126,7 @@ allocate_dynrelocs (struct elf_link_hash
       if (!h->non_got_ref
 	  && ((h->def_dynamic
 	       && !h->def_regular)
-	      || (htab->elf.dynamic_sections_created
+	      || (htab->dynamic_sections_created
 		  && (h->root.type == bfd_link_hash_undefweak
 		      || h->root.type == bfd_link_hash_undefined))))
 	{
@@ -2208,13 +2145,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * TILEPRO_ELF_RELA_BYTES;
@@ -2223,33 +2160,6 @@ allocate_dynrelocs (struct elf_link_hash
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Return true if the dynamic symbol for a given section should be
    omitted when creating a shared library.  */
 
@@ -2277,14 +2187,14 @@ tilepro_elf_size_dynamic_sections (bfd *
 {
   (void)output_bfd;
 
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
   bfd *ibfd;
 
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
-  dynobj = htab->elf.dynobj;
+  dynobj = htab->dynobj;
   BFD_ASSERT (dynobj != NULL);
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -2350,8 +2260,8 @@ tilepro_elf_size_dynamic_sections (bfd *
       locsymcount = symtab_hdr->sh_info;
       end_local_got = local_got + locsymcount;
       local_tls_type = _bfd_tilepro_elf_local_got_tls_type (ibfd);
-      s = htab->elf.sgot;
-      srel = htab->elf.srelgot;
+      s = htab->sgot;
+      srel = htab->srelgot;
       for (; local_got < end_local_got; ++local_got, ++local_tls_type)
 	{
 	  if (*local_got > 0)
@@ -2372,19 +2282,19 @@ tilepro_elf_size_dynamic_sections (bfd *
 
   /* Allocate global sym .plt and .got entries, and space for global
      sym dynamic relocs.  */
-  elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, info);
+  elf_link_hash_traverse (htab, allocate_dynrelocs, info);
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       /* If the .got section is more than 0x8000 bytes, we add
 	 0x8000 to the value of _GLOBAL_OFFSET_TABLE_, so that 16
 	 bit relocations have a greater chance of working. */
-      if (htab->elf.sgot->size >= 0x8000
+      if (htab->sgot->size >= 0x8000
 	  && elf_hash_table (info)->hgot->root.u.def.value == 0)
 	elf_hash_table (info)->hgot->root.u.def.value = 0x8000;
     }
 
-  if (htab->elf.sgotplt)
+  if (htab->sgotplt)
     {
       struct elf_link_hash_entry *got;
       got = elf_link_hash_lookup (elf_hash_table (info),
@@ -2395,14 +2305,14 @@ tilepro_elf_size_dynamic_sections (bfd *
 	 entries and there is no refeence to _GLOBAL_OFFSET_TABLE_.  */
       if ((got == NULL
 	   || !got->ref_regular_nonweak)
-	  && (htab->elf.sgotplt->size
+	  && (htab->sgotplt->size
 	      == GOTPLT_HEADER_SIZE)
-	  && (htab->elf.splt == NULL
-	      || htab->elf.splt->size == 0)
-	  && (htab->elf.sgot == NULL
-	      || (htab->elf.sgot->size
+	  && (htab->splt == NULL
+	      || htab->splt->size == 0)
+	  && (htab->sgot == NULL
+	      || (htab->sgot->size
 		  == get_elf_backend_data (output_bfd)->got_header_size)))
-	htab->elf.sgotplt->size = 0;
+	htab->sgotplt->size = 0;
     }
 
   /* The check_relocs and adjust_dynamic_symbol entry points have
@@ -2413,11 +2323,11 @@ tilepro_elf_size_dynamic_sections (bfd *
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
 
-      if (s == htab->elf.splt
-	  || s == htab->elf.sgot
-	  || s == htab->elf.sgotplt
-	  || s == htab->elf.sdynbss
-	  || s == htab->elf.sdynrelro)
+      if (s == htab->splt
+	  || s == htab->sgot
+	  || s == htab->sgotplt
+	  || s == htab->sdynbss
+	  || s == htab->sdynrelro)
 	{
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
@@ -2463,50 +2373,7 @@ tilepro_elf_size_dynamic_sections (bfd *
 	return FALSE;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in tilepro_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->elf.srelplt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (!add_dynamic_entry (DT_RELA, 0)
-	  || !add_dynamic_entry (DT_RELASZ, 0)
-	  || !add_dynamic_entry (DT_RELAENT, TILEPRO_ELF_RELA_BYTES))
-	return FALSE;
-
-      /* If any dynamic relocs apply to a read-only section,
-	 then we need a DT_TEXTREL entry.  */
-      if ((info->flags & DF_TEXTREL) == 0)
-	elf_link_hash_traverse (&htab->elf, maybe_set_textrel, info);
-
-      if (info->flags & DF_TEXTREL)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, TRUE);
 }
 
 /* Return the base VMA address which should be subtracted from real addresses
@@ -2652,7 +2519,7 @@ tilepro_elf_relocate_section (bfd *outpu
 			      Elf_Internal_Sym *local_syms,
 			      asection **local_sections)
 {
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
   bfd_vma *local_got_offsets;
@@ -2883,7 +2750,7 @@ tilepro_elf_relocate_section (bfd *outpu
 	case R_TILEPRO_IMM16_X1_GOT_HA:
 	  /* Relocation is to the entry for this symbol in the global
 	     offset table.  */
-	  if (htab->elf.sgot == NULL)
+	  if (htab->sgot == NULL)
 	    abort ();
 
 	  if (h != NULL)
@@ -2917,7 +2784,7 @@ tilepro_elf_relocate_section (bfd *outpu
 		  else
 		    {
 		      bfd_put_32 (output_bfd, relocation,
-					  htab->elf.sgot->contents + off);
+					  htab->sgot->contents + off);
 		      h->got.offset |= 1;
 		    }
 		}
@@ -2945,11 +2812,11 @@ tilepro_elf_relocate_section (bfd *outpu
 
 		      /* We need to generate a R_TILEPRO_RELATIVE reloc
 			 for the dynamic linker.  */
-		      s = htab->elf.srelgot;
+		      s = htab->srelgot;
 		      BFD_ASSERT (s != NULL);
 
-		      outrel.r_offset = (htab->elf.sgot->output_section->vma
-					 + htab->elf.sgot->output_offset
+		      outrel.r_offset = (htab->sgot->output_section->vma
+					 + htab->sgot->output_offset
 					 + off);
 		      outrel.r_info = ELF32_R_INFO (0, R_TILEPRO_RELATIVE);
 		      outrel.r_addend = relocation;
@@ -2958,7 +2825,7 @@ tilepro_elf_relocate_section (bfd *outpu
 		    }
 
 		  bfd_put_32 (output_bfd, relocation,
-				      htab->elf.sgot->contents + off);
+				      htab->sgot->contents + off);
 		  local_got_offsets[r_symndx] |= 1;
 		}
 	    }
@@ -2970,7 +2837,7 @@ tilepro_elf_relocate_section (bfd *outpu
 	     procedure linkage table.  */
 	  BFD_ASSERT (h != NULL);
 
-	  if (h->plt.offset == (bfd_vma) -1 || htab->elf.splt == NULL)
+	  if (h->plt.offset == (bfd_vma) -1 || htab->splt == NULL)
 	    {
 	      /* We didn't make a PLT entry for this symbol.  This
 		 happens when statically linking PIC code, or when
@@ -2978,8 +2845,8 @@ tilepro_elf_relocate_section (bfd *outpu
 	      break;
 	    }
 
-	  relocation = (htab->elf.splt->output_section->vma
-			+ htab->elf.splt->output_offset
+	  relocation = (htab->splt->output_section->vma
+			+ htab->splt->output_offset
 			+ h->plt.offset);
 	  unresolved_reloc = FALSE;
 	  break;
@@ -3118,7 +2985,7 @@ tilepro_elf_relocate_section (bfd *outpu
 		      outrel.r_addend = relocation + rel->r_addend;
 
 		      if (is_plt)
-			sec = htab->elf.splt;
+			sec = htab->splt;
 
 		      if (bfd_is_abs_section (sec))
 			indx = 0;
@@ -3141,7 +3008,7 @@ tilepro_elf_relocate_section (bfd *outpu
 
 			  if (indx == 0)
 			    {
-			      osec = htab->elf.text_index_section;
+			      osec = htab->text_index_section;
 			      indx = elf_section_data (osec)->dynindx;
 			    }
 
@@ -3267,7 +3134,7 @@ tilepro_elf_relocate_section (bfd *outpu
 	      local_got_offsets[r_symndx] |= 1;
 	    }
 
-	  if (htab->elf.sgot == NULL)
+	  if (htab->sgot == NULL)
 	    abort ();
 
 	  if ((off & 1) != 0)
@@ -3278,13 +3145,13 @@ tilepro_elf_relocate_section (bfd *outpu
 	      int indx = 0;
 	      bfd_boolean need_relocs = FALSE;
 
-	      if (htab->elf.srelgot == NULL)
+	      if (htab->srelgot == NULL)
 		abort ();
 
 	      if (h != NULL)
 	      {
 		bfd_boolean dyn;
-		dyn = htab->elf.dynamic_sections_created;
+		dyn = htab->dynamic_sections_created;
 
 		if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
 						     bfd_link_pic (info),
@@ -3315,18 +3182,18 @@ tilepro_elf_relocate_section (bfd *outpu
 		  case R_TILEPRO_IMM16_X0_TLS_IE_HA:
 		  case R_TILEPRO_IMM16_X1_TLS_IE_HA:
 		    if (need_relocs) {
-		      bfd_put_32 (output_bfd, 0, htab->elf.sgot->contents + off);
-		      outrel.r_offset = (htab->elf.sgot->output_section->vma
-				       + htab->elf.sgot->output_offset + off);
+		      bfd_put_32 (output_bfd, 0, htab->sgot->contents + off);
+		      outrel.r_offset = (htab->sgot->output_section->vma
+				       + htab->sgot->output_offset + off);
 		      outrel.r_addend = 0;
 		      if (indx == 0)
 			outrel.r_addend = relocation - dtpoff_base (info);
 		      outrel.r_info = ELF32_R_INFO (indx, R_TILEPRO_TLS_TPOFF32);
-		      tilepro_elf_append_rela_32 (output_bfd, htab->elf.srelgot,
+		      tilepro_elf_append_rela_32 (output_bfd, htab->srelgot,
 						  &outrel);
 		    } else {
 		      bfd_put_32 (output_bfd, tpoff (info, relocation),
-				  htab->elf.sgot->contents + off);
+				  htab->sgot->contents + off);
 		    }
 		    break;
 
@@ -3339,31 +3206,31 @@ tilepro_elf_relocate_section (bfd *outpu
 		  case R_TILEPRO_IMM16_X0_TLS_GD_HA:
 		  case R_TILEPRO_IMM16_X1_TLS_GD_HA:
 		    if (need_relocs) {
-		      outrel.r_offset = (htab->elf.sgot->output_section->vma
-				       + htab->elf.sgot->output_offset + off);
+		      outrel.r_offset = (htab->sgot->output_section->vma
+				       + htab->sgot->output_offset + off);
 		      outrel.r_addend = 0;
 		      outrel.r_info = ELF32_R_INFO (indx, R_TILEPRO_TLS_DTPMOD32);
-		      bfd_put_32 (output_bfd, 0, htab->elf.sgot->contents + off);
-		      tilepro_elf_append_rela_32 (output_bfd, htab->elf.srelgot,
+		      bfd_put_32 (output_bfd, 0, htab->sgot->contents + off);
+		      tilepro_elf_append_rela_32 (output_bfd, htab->srelgot,
 						  &outrel);
 		      if (indx == 0)
 			{
 			  BFD_ASSERT (! unresolved_reloc);
 			  bfd_put_32 (output_bfd,
 				      relocation - dtpoff_base (info),
-				      (htab->elf.sgot->contents + off +
+				      (htab->sgot->contents + off +
 				       TILEPRO_BYTES_PER_WORD));
 			}
 		      else
 			{
 			  bfd_put_32 (output_bfd, 0,
-				      (htab->elf.sgot->contents + off +
+				      (htab->sgot->contents + off +
 				       TILEPRO_BYTES_PER_WORD));
 			  outrel.r_info = ELF32_R_INFO (indx,
 							R_TILEPRO_TLS_DTPOFF32);
 			  outrel.r_offset += TILEPRO_BYTES_PER_WORD;
 			  tilepro_elf_append_rela_32 (output_bfd,
-						      htab->elf.srelgot, &outrel);
+						      htab->srelgot, &outrel);
 			}
 		    }
 
@@ -3374,9 +3241,9 @@ tilepro_elf_relocate_section (bfd *outpu
 			 symbol binding locally.  Mark it as belonging
 			 to module 1, the executable.  */
 		      bfd_put_32 (output_bfd, 1,
-				  htab->elf.sgot->contents + off );
+				  htab->sgot->contents + off );
 		      bfd_put_32 (output_bfd, relocation - dtpoff_base (info),
-				  htab->elf.sgot->contents + off +
+				  htab->sgot->contents + off +
 				  TILEPRO_BYTES_PER_WORD);
 		   }
 		   break;
@@ -3536,7 +3403,7 @@ tilepro_elf_finish_dynamic_symbol (bfd *
 				   struct elf_link_hash_entry *h,
 				   Elf_Internal_Sym *sym)
 {
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
 
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
@@ -3556,9 +3423,9 @@ tilepro_elf_finish_dynamic_symbol (bfd *
 
       BFD_ASSERT (h->dynindx != -1);
 
-      splt = htab->elf.splt;
-      srela = htab->elf.srelplt;
-      sgotplt = htab->elf.sgotplt;
+      splt = htab->splt;
+      srela = htab->srelplt;
+      sgotplt = htab->sgotplt;
 
       if (splt == NULL || srela == NULL)
        abort ();
@@ -3606,8 +3473,8 @@ tilepro_elf_finish_dynamic_symbol (bfd *
 
       /* This symbol has an entry in the GOT.  Set it up.  */
 
-      sgot = htab->elf.sgot;
-      srela = htab->elf.srelgot;
+      sgot = htab->sgot;
+      srela = htab->srelgot;
       BFD_ASSERT (sgot != NULL && srela != NULL);
 
       rela.r_offset = (sgot->output_section->vma
@@ -3653,16 +3520,16 @@ tilepro_elf_finish_dynamic_symbol (bfd *
 		       + h->root.u.def.section->output_offset);
       rela.r_info = ELF32_R_INFO (h->dynindx, R_TILEPRO_COPY);
       rela.r_addend = 0;
-      if (h->root.u.def.section == htab->elf.sdynrelro)
-	s = htab->elf.sreldynrelro;
+      if (h->root.u.def.section == htab->sdynrelro)
+	s = htab->sreldynrelro;
       else
-	s = htab->elf.srelbss;
+	s = htab->srelbss;
       tilepro_elf_append_rela_32 (output_bfd, s, &rela);
     }
 
   /* Mark some specially defined symbols as absolute. */
-  if (h == htab->elf.hdynamic
-      || (h == htab->elf.hgot || h == htab->elf.hplt))
+  if (h == htab->hdynamic
+      || (h == htab->hgot || h == htab->hplt))
     sym->st_shndx = SHN_ABS;
 
   return TRUE;
@@ -3676,7 +3543,7 @@ tilepro_finish_dyn (bfd *output_bfd, str
 		    asection *splt ATTRIBUTE_UNUSED)
 {
   Elf32_External_Dyn *dyncon, *dynconend;
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
 
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
@@ -3692,15 +3559,15 @@ tilepro_finish_dyn (bfd *output_bfd, str
       switch (dyn.d_tag)
 	{
 	case DT_PLTGOT:
-	  s = htab->elf.sgotplt;
+	  s = htab->sgotplt;
 	  dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
 	  break;
 	case DT_JMPREL:
-	  s = htab->elf.srelplt;
+	  s = htab->srelplt;
 	  dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
 	  break;
 	case DT_PLTRELSZ:
-	  s = htab->elf.srelplt;
+	  s = htab->srelplt;
 	  dyn.d_un.d_val = s->size;
 	  break;
 	default:
@@ -3718,11 +3585,11 @@ tilepro_elf_finish_dynamic_sections (bfd
 {
   bfd *dynobj;
   asection *sdyn;
-  struct tilepro_elf_link_hash_table *htab;
+  struct elf_link_hash_table *htab;
 
   htab = tilepro_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
-  dynobj = htab->elf.dynobj;
+  dynobj = htab->dynobj;
 
   sdyn = bfd_get_linker_section (dynobj, ".dynamic");
 
@@ -3731,7 +3598,7 @@ tilepro_elf_finish_dynamic_sections (bfd
       asection *splt;
       bfd_boolean ret;
 
-      splt = htab->elf.splt;
+      splt = htab->splt;
       BFD_ASSERT (splt != NULL && sdyn != NULL);
 
       ret = tilepro_finish_dyn (output_bfd, info, dynobj, sdyn, splt);
@@ -3752,42 +3619,42 @@ tilepro_elf_finish_dynamic_sections (bfd
 	  = PLT_ENTRY_SIZE;
     }
 
-  if (htab->elf.sgotplt)
+  if (htab->sgotplt)
     {
-      if (bfd_is_abs_section (htab->elf.sgotplt->output_section))
+      if (bfd_is_abs_section (htab->sgotplt->output_section))
 	{
 	  _bfd_error_handler
-	    (_("discarded output section: `%pA'"), htab->elf.sgotplt);
+	    (_("discarded output section: `%pA'"), htab->sgotplt);
 	  return FALSE;
 	}
 
-      if (htab->elf.sgotplt->size > 0)
+      if (htab->sgotplt->size > 0)
 	{
 	  /* Write the first two entries in .got.plt, needed for the dynamic
 	     linker.  */
 	  bfd_put_32 (output_bfd, (bfd_vma) -1,
-		      htab->elf.sgotplt->contents);
+		      htab->sgotplt->contents);
 	  bfd_put_32 (output_bfd, (bfd_vma) 0,
-		      htab->elf.sgotplt->contents + GOT_ENTRY_SIZE);
+		      htab->sgotplt->contents + GOT_ENTRY_SIZE);
 	}
 
-      elf_section_data (htab->elf.sgotplt->output_section)->this_hdr.sh_entsize
+      elf_section_data (htab->sgotplt->output_section)->this_hdr.sh_entsize
 	= GOT_ENTRY_SIZE;
     }
 
-  if (htab->elf.sgot)
+  if (htab->sgot)
     {
-      if (htab->elf.sgot->size > 0)
+      if (htab->sgot->size > 0)
 	{
 	  /* Set the first entry in the global offset table to the address of
 	     the dynamic section.  */
 	  bfd_vma val = (sdyn ?
 			 sdyn->output_section->vma + sdyn->output_offset :
 			 0);
-	  bfd_put_32 (output_bfd, val, htab->elf.sgot->contents);
+	  bfd_put_32 (output_bfd, val, htab->sgot->contents);
 	}
 
-      elf_section_data (htab->elf.sgot->output_section)->this_hdr.sh_entsize
+      elf_section_data (htab->sgot->output_section)->this_hdr.sh_entsize
 	= GOT_ENTRY_SIZE;
     }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tilepro.h ./bfd/elf32-tilepro.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-tilepro.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-tilepro.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILEPro-specific support for 32-bit ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-v850.c ./bfd/elf32-v850.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-v850.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-v850.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* V850-specific support for 32-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -183,7 +183,7 @@ v850_elf_check_relocs (bfd *abfd,
 	      asection * section;
 
 	      section = h->root.u.c.p->section = bfd_make_section_old_way (abfd, common);
-	      section->flags |= SEC_IS_COMMON;
+	      section->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
 	    }
 
 #ifdef DEBUG
@@ -230,7 +230,7 @@ static void
 remember_hi16s_reloc (bfd *abfd, bfd_vma addend, bfd_byte *address)
 {
   hi16s_location * entry = NULL;
-  bfd_size_type amt = sizeof (* free_hi16s);
+  size_t amt = sizeof (* free_hi16s);
 
   /* Find a free structure.  */
   if (free_hi16s == NULL)
@@ -3001,7 +3001,8 @@ v850_elf_symbol_processing (bfd *abfd, a
 	{
 	  /* Initialize the small common section.  */
 	  v850_elf_scom_section.name	       = ".scommon";
-	  v850_elf_scom_section.flags	       = SEC_IS_COMMON | SEC_ALLOC | SEC_DATA;
+	  v850_elf_scom_section.flags
+	    = SEC_IS_COMMON | SEC_SMALL_DATA | SEC_ALLOC | SEC_DATA;
 	  v850_elf_scom_section.output_section = & v850_elf_scom_section;
 	  v850_elf_scom_section.symbol	       = & v850_elf_scom_symbol;
 	  v850_elf_scom_section.symbol_ptr_ptr = & v850_elf_scom_symbol_ptr;
@@ -3019,7 +3020,7 @@ v850_elf_symbol_processing (bfd *abfd, a
 	{
 	  /* Initialize the tcommon section.  */
 	  v850_elf_tcom_section.name	       = ".tcommon";
-	  v850_elf_tcom_section.flags	       = SEC_IS_COMMON;
+	  v850_elf_tcom_section.flags	       = SEC_IS_COMMON | SEC_SMALL_DATA;
 	  v850_elf_tcom_section.output_section = & v850_elf_tcom_section;
 	  v850_elf_tcom_section.symbol	       = & v850_elf_tcom_symbol;
 	  v850_elf_tcom_section.symbol_ptr_ptr = & v850_elf_tcom_symbol_ptr;
@@ -3037,7 +3038,7 @@ v850_elf_symbol_processing (bfd *abfd, a
 	{
 	  /* Initialize the zcommon section.  */
 	  v850_elf_zcom_section.name	       = ".zcommon";
-	  v850_elf_zcom_section.flags	       = SEC_IS_COMMON;
+	  v850_elf_zcom_section.flags	       = SEC_IS_COMMON | SEC_SMALL_DATA;
 	  v850_elf_zcom_section.output_section = & v850_elf_zcom_section;
 	  v850_elf_zcom_section.symbol	       = & v850_elf_zcom_symbol;
 	  v850_elf_zcom_section.symbol_ptr_ptr = & v850_elf_zcom_symbol_ptr;
@@ -3095,19 +3096,19 @@ v850_elf_add_symbol_hook (bfd *abfd,
     {
     case SHN_V850_SCOMMON:
       *secp = bfd_make_section_old_way (abfd, ".scommon");
-      (*secp)->flags |= SEC_IS_COMMON;
+      (*secp)->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
       *valp = sym->st_size;
       break;
 
     case SHN_V850_TCOMMON:
       *secp = bfd_make_section_old_way (abfd, ".tcommon");
-      (*secp)->flags |= SEC_IS_COMMON;
+      (*secp)->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
       *valp = sym->st_size;
       break;
 
     case SHN_V850_ZCOMMON:
       *secp = bfd_make_section_old_way (abfd, ".zcommon");
-      (*secp)->flags |= SEC_IS_COMMON;
+      (*secp)->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
       *valp = sym->st_size;
       break;
     }
@@ -3151,6 +3152,8 @@ v850_elf_section_from_shdr (bfd *abfd,
 			    const char *name,
 			    int shindex)
 {
+  flagword flags;
+
   /* There ought to be a place to keep ELF backend specific flags, but
      at the moment there isn't one.  We just keep track of the
      sections by their name, instead.  */
@@ -3158,18 +3161,21 @@ v850_elf_section_from_shdr (bfd *abfd,
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
     return FALSE;
 
+  flags = 0;
   switch (hdr->sh_type)
     {
     case SHT_V850_SCOMMON:
     case SHT_V850_TCOMMON:
     case SHT_V850_ZCOMMON:
-      if (!bfd_set_section_flags (hdr->bfd_section,
-				  (bfd_section_flags (hdr->bfd_section)
-				   | SEC_IS_COMMON)))
-	return FALSE;
+      flags = SEC_IS_COMMON;
     }
 
-  return TRUE;
+  if ((hdr->sh_flags & SHF_V850_GPREL) != 0)
+    flags |= SEC_SMALL_DATA;
+
+  return (flags == 0
+	  || bfd_set_section_flags (hdr->bfd_section,
+				    hdr->bfd_section->flags | flags));
 }
 
 /* Set the correct type for a V850 ELF section.  We do this
@@ -3837,7 +3843,7 @@ v850_elf_relax_section (bfd *abfd,
 		  if (no_match < 0
 		      && ((insn[2] & JMP_R_MASK) != JMP_R
 			   || MOVEA_R2 (insn[1]) != JMP_R1 (insn[2])))
-		    no_match = 4;
+		    no_match = 2;
 		}
 	      else
 		{
@@ -4088,16 +4094,13 @@ v850_elf_relax_section (bfd *abfd,
     }
 
  finish:
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != (unsigned char *) contents)
+  if (elf_section_data (sec)->this_hdr.contents != (unsigned char *) contents)
     free (contents);
 
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (bfd_byte *) isymbuf)
+  if (symtab_hdr->contents != (bfd_byte *) isymbuf)
     free (isymbuf);
 
   return result;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-v850.h ./bfd/elf32-v850.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-v850.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-v850.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* V850 Note manipulation routines.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-vax.c ./bfd/elf32-vax.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-vax.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-vax.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* VAX series support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Contributed by Matt Thomas <matt@3am-software.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -470,7 +470,7 @@ static struct bfd_link_hash_table *
 elf_vax_link_hash_table_create (bfd *abfd)
 {
   struct elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_link_hash_table);
+  size_t amt = sizeof (struct elf_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -712,6 +712,11 @@ elf_vax_check_relocs (bfd *abfd, struct
 		h->plt.refcount++;
 	    }
 
+	  /* Non-GOT reference may need a copy reloc in executable or
+	     a dynamic reloc in shared library.  */
+	  if (h != NULL)
+	    h->non_got_ref = 1;
+
 	  /* If we are creating a shared library, we need to copy the
 	     reloc into the shared library.  */
 	  if (bfd_link_pic (info)
@@ -929,6 +934,11 @@ elf_vax_adjust_dynamic_symbol (struct bf
   if (bfd_link_pic (info))
     return TRUE;
 
+  /* If there are no references to this symbol that do not use the
+     GOT relocation, we don't need to generate a copy reloc.  */
+  if (!h->non_got_ref)
+    return TRUE;
+
   /* We must allocate the symbol in our .dynbss section, which will
      become part of the .bss section of the executable.  There will be
      an entry for this symbol in the .dynsym section.  The dynamic
@@ -1019,9 +1029,7 @@ elf_vax_size_dynamic_sections (bfd *outp
 {
   bfd *dynobj;
   asection *s;
-  bfd_boolean plt;
   bfd_boolean relocs;
-  bfd_boolean reltext;
 
   dynobj = elf_hash_table (info)->dynobj;
   BFD_ASSERT (dynobj != NULL);
@@ -1057,9 +1065,7 @@ elf_vax_size_dynamic_sections (bfd *outp
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  plt = FALSE;
   relocs = FALSE;
-  reltext = FALSE;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
@@ -1074,33 +1080,14 @@ elf_vax_size_dynamic_sections (bfd *outp
       if (strcmp (name, ".plt") == 0)
 	{
 	  /* Remember whether there is a PLT.  */
-	  plt = s->size != 0;
+	  ;
 	}
       else if (CONST_STRNEQ (name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
-	      asection *target;
-
-	      /* Remember whether there are any reloc sections other
-		 than .rela.plt.  */
 	      if (strcmp (name, ".rela.plt") != 0)
-		{
-		  const char *outname;
-
-		  relocs = TRUE;
-
-		  /* If this relocation section applies to a read only
-		     section, then we probably need a DT_TEXTREL
-		     entry.  .rela.plt is actually associated with
-		     .got.plt, which is never readonly.  */
-		  outname = bfd_section_name (s->output_section);
-		  target = bfd_get_section_by_name (output_bfd, outname + 5);
-		  if (target != NULL
-		      && (target->flags & SEC_READONLY) != 0
-		      && (target->flags & SEC_ALLOC) != 0)
-		    reltext = TRUE;
-		}
+		relocs = TRUE;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -1138,48 +1125,7 @@ elf_vax_size_dynamic_sections (bfd *outp
 	return FALSE;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in elf_vax_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (!bfd_link_pic (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (plt)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	    return FALSE;
-	}
-
-      if (reltext || (info->flags & DF_TEXTREL) != 0)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* This function is called via elf_vax_link_hash_traverse if we are
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-visium.c ./bfd/elf32-visium.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-visium.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-visium.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* Visium-specific support for 32-bit ELF.
 
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-wasm32.c ./bfd/elf32-wasm32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-wasm32.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-wasm32.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF for the WebAssembly target
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-xc16x.c ./bfd/elf32-xc16x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-xc16x.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-xc16x.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Infineon XC16X-specific support for 16-bit ELF.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
    Contributed by KPIT Cummins Infosystems
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-xgate.c ./bfd/elf32-xgate.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-xgate.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-xgate.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Freescale XGATE-specific support for 32-bit ELF
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2020 Free Software Foundation, Inc.
    Contributed by Sean Keys(skeys@ipdatasys.com)
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-xstormy16.c ./bfd/elf32-xstormy16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-xstormy16.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-xstormy16.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Xstormy16-specific support for 32-bit ELF.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -588,7 +588,8 @@ xstormy16_elf_relax_section (bfd *dynobj
   /* Assume nothing changes.  */
   *again = FALSE;
 
-  if (bfd_link_relocatable (info))
+  if (bfd_link_relocatable (info)
+      || !is_elf_hash_table (info->hash))
     return TRUE;
 
   /* We only relax the .plt section at the moment.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-xtensa.c ./bfd/elf32-xtensa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-xtensa.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf32-xtensa.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Xtensa-specific support for 32-bit ELF.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -37,6 +37,22 @@
 
 #define XTENSA_NO_NOP_REMOVAL 0
 
+#ifndef XSHAL_ABI
+#define XSHAL_ABI 0
+#endif
+
+#ifndef XTHAL_ABI_UNDEFINED
+#define XTHAL_ABI_UNDEFINED -1
+#endif
+
+#ifndef XTHAL_ABI_WINDOWED
+#define XTHAL_ABI_WINDOWED 0
+#endif
+
+#ifndef XTHAL_ABI_CALL0
+#define XTHAL_ABI_CALL0 1
+#endif
+
 /* Local helper functions.  */
 
 static bfd_boolean add_extra_plt_sections (struct bfd_link_info *, int);
@@ -164,6 +180,10 @@ int elf32xtensa_no_literal_movement = 1;
 
 bfd_boolean elf32xtensa_separate_props = FALSE;
 
+/* Xtensa ABI.  It affects PLT entry code.  */
+
+int elf32xtensa_abi = XTHAL_ABI_UNDEFINED;
+
 /* Rename one of the generic section flags to better document how it
    is used here.  */
 /* Whether relocations have been processed.  */
@@ -325,6 +345,20 @@ static reloc_howto_type elf_howto_table[
   HOWTO (R_XTENSA_TLS_CALL, 0, 0, 0, FALSE, 0, complain_overflow_dont,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_TLS_CALL",
 	 FALSE, 0, 0, FALSE),
+
+  HOWTO (R_XTENSA_PDIFF8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_PDIFF8", FALSE, 0, 0xff, FALSE),
+  HOWTO (R_XTENSA_PDIFF16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_PDIFF16", FALSE, 0, 0xffff, FALSE),
+  HOWTO (R_XTENSA_PDIFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_PDIFF32", FALSE, 0, 0xffffffff, FALSE),
+
+  HOWTO (R_XTENSA_NDIFF8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_NDIFF8", FALSE, 0, 0xff, FALSE),
+  HOWTO (R_XTENSA_NDIFF16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_NDIFF16", FALSE, 0, 0xffff, FALSE),
+  HOWTO (R_XTENSA_NDIFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_NDIFF32", FALSE, 0, 0xffffffff, FALSE),
 };
 
 #if DEBUG_GEN_RELOC
@@ -364,6 +398,30 @@ elf_xtensa_reloc_type_lookup (bfd *abfd
       TRACE ("BFD_RELOC_XTENSA_DIFF32");
       return &elf_howto_table[(unsigned) R_XTENSA_DIFF32 ];
 
+    case BFD_RELOC_XTENSA_PDIFF8:
+      TRACE ("BFD_RELOC_XTENSA_PDIFF8");
+      return &elf_howto_table[(unsigned) R_XTENSA_PDIFF8 ];
+
+    case BFD_RELOC_XTENSA_PDIFF16:
+      TRACE ("BFD_RELOC_XTENSA_PDIFF16");
+      return &elf_howto_table[(unsigned) R_XTENSA_PDIFF16 ];
+
+    case BFD_RELOC_XTENSA_PDIFF32:
+      TRACE ("BFD_RELOC_XTENSA_PDIFF32");
+      return &elf_howto_table[(unsigned) R_XTENSA_PDIFF32 ];
+
+    case BFD_RELOC_XTENSA_NDIFF8:
+      TRACE ("BFD_RELOC_XTENSA_NDIFF8");
+      return &elf_howto_table[(unsigned) R_XTENSA_NDIFF8 ];
+
+    case BFD_RELOC_XTENSA_NDIFF16:
+      TRACE ("BFD_RELOC_XTENSA_NDIFF16");
+      return &elf_howto_table[(unsigned) R_XTENSA_NDIFF16 ];
+
+    case BFD_RELOC_XTENSA_NDIFF32:
+      TRACE ("BFD_RELOC_XTENSA_NDIFF32");
+      return &elf_howto_table[(unsigned) R_XTENSA_NDIFF32 ];
+
     case BFD_RELOC_XTENSA_RTLD:
       TRACE ("BFD_RELOC_XTENSA_RTLD");
       return &elf_howto_table[(unsigned) R_XTENSA_RTLD ];
@@ -647,8 +705,9 @@ struct elf_xtensa_link_hash_table
 /* Get the Xtensa ELF linker hash table from a link_info structure.  */
 
 #define elf_xtensa_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == XTENSA_ELF_DATA ? ((struct elf_xtensa_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == XTENSA_ELF_DATA)	\
+   ? (struct elf_xtensa_link_hash_table *) (p)->hash : NULL)
 
 /* Create an entry in an Xtensa ELF linker hash table.  */
 
@@ -686,7 +745,7 @@ elf_xtensa_link_hash_table_create (bfd *
 {
   struct elf_link_hash_entry *tlsbase;
   struct elf_xtensa_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_xtensa_link_hash_table);
+  size_t amt = sizeof (struct elf_xtensa_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -708,6 +767,7 @@ elf_xtensa_link_hash_table_create (bfd *
   tlsbase->root.type = bfd_link_hash_new;
   tlsbase->root.u.undef.abfd = NULL;
   tlsbase->non_elf = 0;
+  ret->elf.dt_pltgot_required = TRUE;
   ret->tlsbase = elf_xtensa_hash_entry (tlsbase);
   ret->tlsbase->tls_type = GOT_UNKNOWN;
 
@@ -1001,7 +1061,7 @@ elf_xtensa_check_relocs (bfd *abfd,
   const Elf_Internal_Rela *rel;
   const Elf_Internal_Rela *rel_end;
 
-  if (bfd_link_relocatable (info) || (sec->flags & SEC_ALLOC) == 0)
+  if (bfd_link_relocatable (info))
     return TRUE;
 
   BFD_ASSERT (is_xtensa_elf (abfd));
@@ -1709,30 +1769,11 @@ elf_xtensa_size_dynamic_sections (bfd *o
 #define add_dynamic_entry(TAG, VAL) \
   _bfd_elf_add_dynamic_entry (info, TAG, VAL)
 
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (relplt)
-	{
-	  if (!add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relgot)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela)))
-	    return FALSE;
-	}
+      if (!_bfd_elf_add_dynamic_tags (output_bfd, info,
+				      relplt || relgot))
+	return FALSE;
 
-      if (!add_dynamic_entry (DT_PLTGOT, 0)
-	  || !add_dynamic_entry (DT_XTENSA_GOT_LOC_OFF, 0)
+      if (!add_dynamic_entry (DT_XTENSA_GOT_LOC_OFF, 0)
 	  || !add_dynamic_entry (DT_XTENSA_GOT_LOC_SZ, 0))
 	return FALSE;
     }
@@ -1851,6 +1892,12 @@ elf_xtensa_do_reloc (reloc_howto_type *h
     case R_XTENSA_DIFF8:
     case R_XTENSA_DIFF16:
     case R_XTENSA_DIFF32:
+    case R_XTENSA_PDIFF8:
+    case R_XTENSA_PDIFF16:
+    case R_XTENSA_PDIFF32:
+    case R_XTENSA_NDIFF8:
+    case R_XTENSA_NDIFF16:
+    case R_XTENSA_NDIFF32:
     case R_XTENSA_TLS_FUNC:
     case R_XTENSA_TLS_ARG:
     case R_XTENSA_TLS_CALL:
@@ -2203,6 +2250,13 @@ bfd_elf_xtensa_reloc (bfd *abfd,
   return flag;
 }
 
+int xtensa_abi_choice (void)
+{
+  if (elf32xtensa_abi == XTHAL_ABI_UNDEFINED)
+    return XSHAL_ABI;
+  else
+    return elf32xtensa_abi;
+}
 
 /* Set up an entry in the procedure linkage table.  */
 
@@ -2215,6 +2269,7 @@ elf_xtensa_create_plt_entry (struct bfd_
   bfd_vma plt_base, got_base;
   bfd_vma code_offset, lit_offset, abi_offset;
   int chunk;
+  int abi = xtensa_abi_choice ();
 
   chunk = reloc_index / PLT_ENTRIES_PER_CHUNK;
   splt = elf_xtensa_get_plt_section (info, chunk);
@@ -2235,10 +2290,10 @@ elf_xtensa_create_plt_entry (struct bfd_
   /* Fill in the entry in the procedure linkage table.  */
   memcpy (splt->contents + code_offset,
 	  (bfd_big_endian (output_bfd)
-	   ? elf_xtensa_be_plt_entry[XSHAL_ABI != XTHAL_ABI_WINDOWED]
-	   : elf_xtensa_le_plt_entry[XSHAL_ABI != XTHAL_ABI_WINDOWED]),
+	   ? elf_xtensa_be_plt_entry[abi != XTHAL_ABI_WINDOWED]
+	   : elf_xtensa_le_plt_entry[abi != XTHAL_ABI_WINDOWED]),
 	  PLT_ENTRY_SIZE);
-  abi_offset = XSHAL_ABI == XTHAL_ABI_WINDOWED ? 3 : 0;
+  abi_offset = abi == XTHAL_ABI_WINDOWED ? 3 : 0;
   bfd_put_16 (output_bfd, l32r_offset (got_base + 0,
 				       plt_base + code_offset + abi_offset),
 	      splt->contents + code_offset + abi_offset + 1);
@@ -3004,9 +3059,7 @@ elf_xtensa_relocate_section (bfd *output
 	}
     }
 
-  if (lit_table)
-    free (lit_table);
-
+  free (lit_table);
   input_section->reloc_done = TRUE;
 
   return TRUE;
@@ -3064,6 +3117,9 @@ elf_xtensa_combine_prop_entries (bfd *ou
   int n, m, num;
 
   section_size = sxtlit->size;
+  if (section_size == 0)
+    return 0;
+
   BFD_ASSERT (section_size % 8 == 0);
   num = section_size / 8;
 
@@ -3086,8 +3142,7 @@ elf_xtensa_combine_prop_entries (bfd *ou
 
   if (!bfd_malloc_and_get_section (output_bfd, sxtlit, &contents))
     {
-      if (contents != 0)
-	free (contents);
+      free (contents);
       free (table);
       return -1;
     }
@@ -5938,13 +5993,13 @@ map_removed_literal (removed_literal_lis
 static int
 removed_literal_compare (const void *a, const void *b)
 {
-  const removed_literal_map_entry *pa = a;
-  const removed_literal_map_entry *pb = b;
+  const bfd_vma *key = a;
+  const removed_literal_map_entry *memb = b;
 
-  if (pa->addr == pb->addr)
+  if (*key == memb->addr)
     return 0;
   else
-    return pa->addr < pb->addr ? -1 : 1;
+    return *key < memb->addr ? -1 : 1;
 }
 
 /* Check if the list of removed literals contains an entry for the
@@ -5959,13 +6014,16 @@ find_removed_literal (removed_literal_li
   if (removed_list->map == NULL)
     map_removed_literal (removed_list);
 
-  p = bsearch (&addr, removed_list->map, removed_list->n_map,
-	       sizeof (*removed_list->map), removed_literal_compare);
-  if (p)
-    {
-      while (p != removed_list->map && (p - 1)->addr == addr)
-	--p;
-      r = p->literal;
+  if (removed_list->map != NULL)
+    {
+      p = bsearch (&addr, removed_list->map, removed_list->n_map,
+		   sizeof (*removed_list->map), removed_literal_compare);
+      if (p)
+	{
+	  while (p != removed_list->map && (p - 1)->addr == addr)
+	    --p;
+	  r = p->literal;
+	}
     }
   return r;
 }
@@ -6039,7 +6097,7 @@ elf_xtensa_new_section_hook (bfd *abfd,
   if (!sec->used_by_bfd)
     {
       struct elf_xtensa_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+      size_t amt = sizeof (*sdata);
 
       sdata = bfd_zalloc (abfd, amt);
       if (sdata == NULL)
@@ -6251,8 +6309,7 @@ free_section_cache (section_cache_t *sec
     {
       release_contents (sec_cache->sec, sec_cache->contents);
       release_internal_relocs (sec_cache->sec, sec_cache->relocs);
-      if (sec_cache->ptbl)
-	free (sec_cache->ptbl);
+      free (sec_cache->ptbl);
     }
 }
 
@@ -6309,8 +6366,7 @@ section_cache_section (section_cache_t *
  err:
   release_contents (sec, contents);
   release_internal_relocs (sec, internal_relocs);
-  if (prop_table)
-    free (prop_table);
+  free (prop_table);
   return FALSE;
 }
 
@@ -6429,8 +6485,7 @@ init_ebb_constraint (ebb_constraint *c)
 static void
 free_ebb_constraint (ebb_constraint *c)
 {
-  if (c->actions)
-    free (c->actions);
+  free (c->actions);
 }
 
 
@@ -6664,8 +6719,7 @@ ebb_propose_action (ebb_constraint *c,
 
       for (i = 0; i < c->action_count; i++)
 	new_actions[i] = c->actions[i];
-      if (c->actions)
-	free (c->actions);
+      free (c->actions);
       c->actions = new_actions;
       c->action_allocated = new_allocated;
     }
@@ -6717,8 +6771,7 @@ pin_internal_relocs (asection *sec, Elf_
 static void
 release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
 {
-  if (internal_relocs
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 }
 
@@ -6736,8 +6789,7 @@ retrieve_contents (bfd *abfd, asection *
     {
       if (!bfd_malloc_and_get_section (abfd, sec, &contents))
 	{
-	  if (contents)
-	    free (contents);
+	  free (contents);
 	  return NULL;
 	}
       if (keep_memory)
@@ -6757,7 +6809,7 @@ pin_contents (asection *sec, bfd_byte *c
 static void
 release_contents (asection *sec, bfd_byte *contents)
 {
-  if (contents && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
 }
 
@@ -7839,13 +7891,11 @@ compute_text_actions (bfd *abfd,
     print_action_list (stderr, &relax_info->action_list);
 #endif
 
-error_return:
+ error_return:
   release_contents (sec, contents);
   release_internal_relocs (sec, internal_relocs);
-  if (prop_table)
-    free (prop_table);
-  if (reloc_opcodes)
-    free (reloc_opcodes);
+  free (prop_table);
+  free (reloc_opcodes);
 
   return ok;
 }
@@ -8445,10 +8495,11 @@ build_xlate_map (asection *sec, xtensa_r
 static void
 free_xlate_map (xlate_map_t *map)
 {
-  if (map && map->entry)
-    free (map->entry);
   if (map)
-    free (map);
+    {
+      free (map->entry);
+      free (map);
+    }
 }
 
 
@@ -8632,8 +8683,7 @@ check_section_ebb_pcrels_fit (bfd *abfd,
 	}
     }
 
-  if (xmap)
-    free_xlate_map (xmap);
+  free_xlate_map (xmap);
 
   return ok;
 }
@@ -8844,9 +8894,8 @@ compute_removed_literals (bfd *abfd,
   print_action_list (stderr, &relax_info->action_list);
 #endif /* DEBUG */
 
-error_return:
-  if (prop_table)
-    free (prop_table);
+ error_return:
+  free (prop_table);
   free_section_cache (&target_sec_cache);
 
   release_contents (sec, contents);
@@ -9604,7 +9653,13 @@ relax_section (bfd *abfd, asection *sec,
 
 	      if (r_type == R_XTENSA_DIFF8
 		  || r_type == R_XTENSA_DIFF16
-		  || r_type == R_XTENSA_DIFF32)
+		  || r_type == R_XTENSA_DIFF32
+		  || r_type == R_XTENSA_PDIFF8
+		  || r_type == R_XTENSA_PDIFF16
+		  || r_type == R_XTENSA_PDIFF32
+		  || r_type == R_XTENSA_NDIFF8
+		  || r_type == R_XTENSA_NDIFF16
+		  || r_type == R_XTENSA_NDIFF32)
 		{
 		  bfd_signed_vma diff_value = 0;
 		  bfd_vma new_end_offset, diff_mask = 0;
@@ -9620,19 +9675,45 @@ relax_section (bfd *abfd, asection *sec,
 		  switch (r_type)
 		    {
 		    case R_XTENSA_DIFF8:
+		      diff_mask = 0x7f;
 		      diff_value =
 			bfd_get_signed_8 (abfd, &contents[old_source_offset]);
 		      break;
 		    case R_XTENSA_DIFF16:
+		      diff_mask = 0x7fff;
 		      diff_value =
 			bfd_get_signed_16 (abfd, &contents[old_source_offset]);
 		      break;
 		    case R_XTENSA_DIFF32:
+		      diff_mask = 0x7fffffff;
 		      diff_value =
 			bfd_get_signed_32 (abfd, &contents[old_source_offset]);
 		      break;
+		    case R_XTENSA_PDIFF8:
+		    case R_XTENSA_NDIFF8:
+		      diff_mask = 0xff;
+		      diff_value =
+			bfd_get_8 (abfd, &contents[old_source_offset]);
+		      break;
+		    case R_XTENSA_PDIFF16:
+		    case R_XTENSA_NDIFF16:
+		      diff_mask = 0xffff;
+		      diff_value =
+			bfd_get_16 (abfd, &contents[old_source_offset]);
+		      break;
+		    case R_XTENSA_PDIFF32:
+		    case R_XTENSA_NDIFF32:
+		      diff_mask = 0xffffffff;
+		      diff_value =
+			bfd_get_32 (abfd, &contents[old_source_offset]);
+		      break;
 		    }
 
+		  if (r_type >= R_XTENSA_NDIFF8
+		      && r_type <= R_XTENSA_NDIFF32
+		      && diff_value)
+		    diff_value |= ~diff_mask;
+
 		  new_end_offset = offset_with_removed_text_map
 		    (&target_relax_info->action_list,
 		     r_rel.target_offset + diff_value);
@@ -9641,25 +9722,40 @@ relax_section (bfd *abfd, asection *sec,
 		  switch (r_type)
 		    {
 		    case R_XTENSA_DIFF8:
-		      diff_mask = 0x7f;
 		      bfd_put_signed_8 (abfd, diff_value,
 				 &contents[old_source_offset]);
 		      break;
 		    case R_XTENSA_DIFF16:
-		      diff_mask = 0x7fff;
 		      bfd_put_signed_16 (abfd, diff_value,
 				  &contents[old_source_offset]);
 		      break;
 		    case R_XTENSA_DIFF32:
-		      diff_mask = 0x7fffffff;
 		      bfd_put_signed_32 (abfd, diff_value,
 				  &contents[old_source_offset]);
 		      break;
+		    case R_XTENSA_PDIFF8:
+		    case R_XTENSA_NDIFF8:
+		      bfd_put_8 (abfd, diff_value,
+				 &contents[old_source_offset]);
+		      break;
+		    case R_XTENSA_PDIFF16:
+		    case R_XTENSA_NDIFF16:
+		      bfd_put_16 (abfd, diff_value,
+				  &contents[old_source_offset]);
+		      break;
+		    case R_XTENSA_PDIFF32:
+		    case R_XTENSA_NDIFF32:
+		      bfd_put_32 (abfd, diff_value,
+				  &contents[old_source_offset]);
+		      break;
 		    }
 
-		  /* Check for overflow. Sign bits must be all zeroes or all ones */
-		  if ((diff_value & ~diff_mask) != 0 &&
-		      (diff_value & ~diff_mask) != (-1 & ~diff_mask))
+		  /* Check for overflow. Sign bits must be all zeroes or
+		     all ones.  When sign bits are all ones diff_value
+		     may not be zero.  */
+		  if (((diff_value & ~diff_mask) != 0
+		       && (diff_value & ~diff_mask) != ~diff_mask)
+		      || (diff_value && (bfd_vma) diff_value == ~diff_mask))
 		    {
 		      (*link_info->callbacks->reloc_dangerous)
 			(link_info, _("overflow after relaxation"),
@@ -10148,10 +10244,9 @@ shrink_dynamic_reloc_sections (struct bf
 
   if ((r_type == R_XTENSA_32 || r_type == R_XTENSA_PLT)
       && (input_section->flags & SEC_ALLOC) != 0
-      && (dynamic_symbol || bfd_link_pic (info))
-      && (!h || h->root.type != bfd_link_hash_undefweak
-	  || (dynamic_symbol
-	      && (bfd_link_dll (info) || info->export_dynamic))))
+      && (dynamic_symbol
+	  || (bfd_link_pic (info)
+	      && (!h || h->root.type != bfd_link_hash_undefweak))))
     {
       asection *srel;
       bfd_boolean is_plt = FALSE;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-z80.c ./bfd/elf32-z80.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf32-z80.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elf32-z80.c	2021-05-21 01:57:23.000000000 +0000
@@ -0,0 +1,632 @@
+/* Zilog (e)Z80-specific support for 32-bit ELF
+   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   (Heavily copied from the S12Z port by Sergey Belyashov (sergey.belyashov@gmail.com))
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   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, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bfdlink.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+
+#include "elf/z80.h"
+
+/* All users of this file have bfd_octets_per_byte (abfd, sec) == 1.  */
+#define OCTETS_PER_BYTE(ABFD, SEC) 1
+
+typedef struct {
+  bfd_reloc_code_real_type r_type;
+  reloc_howto_type howto;
+} bfd_howto_type;
+
+#define BFD_EMPTY_HOWTO(rt,x) {rt, EMPTY_HOWTO(x)}
+#define BFD_HOWTO(rt,a,b,c,d,e,f,g,h,i,j,k,l,m) {rt, HOWTO(a,b,c,d,e,f,g,h,i,j,k,l,m)}
+
+static bfd_reloc_status_type
+z80_elf_16_be_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+		     void *data, asection *input_section, bfd *output_bfd,
+		     char **error_message);
+
+static const
+bfd_howto_type elf_z80_howto_table[] =
+{
+  /* This reloc does nothing.  */
+  BFD_HOWTO (BFD_RELOC_NONE,
+	 R_Z80_NONE,		/* type */
+	 0,			/* rightshift */
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "R_NONE",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0,			/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* A 8 bit relocation */
+  BFD_HOWTO (BFD_RELOC_8,
+	 R_Z80_8,		/* type */
+	 0,			/* rightshift */
+	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_imm8",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0x00,			/* src_mask */
+	 0xff,			/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* A 8 bit index register displacement relocation */
+  BFD_HOWTO (BFD_RELOC_Z80_DISP8,
+	 R_Z80_8_DIS,		/* type */
+	 0,			/* rightshift */
+	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_off",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0x00,			/* src_mask */
+	 0xff,			/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* A 8 bit PC-rel relocation */
+  BFD_HOWTO (BFD_RELOC_8_PCREL,
+	 R_Z80_8_PCREL,		/* type */
+	 0,			/* rightshift */
+	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* bitsize */
+	 TRUE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_jr",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0x00,			/* src_mask */
+	 0xff,			/* dst_mask */
+	 TRUE),			/* pcrel_offset */
+
+  /* An 16 bit absolute relocation */
+  BFD_HOWTO (BFD_RELOC_16,
+	 R_Z80_16,		/* type */
+	 0,			/* rightshift */
+	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_imm16",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0x00000000,		/* src_mask */
+	 0x0000ffff,		/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* A 24 bit absolute relocation emitted by ADL mode operands */
+  BFD_HOWTO (BFD_RELOC_24,
+	 R_Z80_24,		/* type */
+	 0,			/* rightshift */
+	 5,			/* size (0 = byte, 1 = short, 2 = long) */
+	 24,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_imm24",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0x00000000,		/* src_mask */
+	 0x00ffffff,		/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  BFD_HOWTO (BFD_RELOC_32,
+	 R_Z80_32,		/* type */
+	 0,			/* rightshift */
+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_imm32",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0x00000000,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* First (lowest) 8 bits of multibyte relocation */
+  BFD_HOWTO (BFD_RELOC_Z80_BYTE0,
+	 R_Z80_BYTE0,		/* type */
+	 0,			/* rightshift */
+	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_byte0",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xff,			/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* Second 8 bits of multibyte relocation */
+  BFD_HOWTO (BFD_RELOC_Z80_BYTE1,
+	 R_Z80_BYTE1,		/* type */
+	 8,			/* rightshift */
+	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_byte1",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xff,			/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* Third 8 bits of multibyte relocation */
+  BFD_HOWTO (BFD_RELOC_Z80_BYTE2,
+	 R_Z80_BYTE2,		/* type */
+	 16,			/* rightshift */
+	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_byte2",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xff,			/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* Fourth (highest) 8 bits of multibyte relocation */
+  BFD_HOWTO (BFD_RELOC_Z80_BYTE3,
+	 R_Z80_BYTE3,		/* type */
+	 24,			/* rightshift */
+	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_byte3",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xff,			/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* An 16 bit absolute relocation of lower word of multibyte value */
+  BFD_HOWTO (BFD_RELOC_Z80_WORD0,
+	 R_Z80_WORD0,		/* type */
+	 0,			/* rightshift */
+	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_word0",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xffff,		/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* An 16 bit absolute relocation of higher word of multibyte value */
+  BFD_HOWTO (BFD_RELOC_Z80_WORD1,
+	 R_Z80_WORD1,		/* type */
+	 16,			/* rightshift */
+	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont,/* complain_on_overflow */
+	 bfd_elf_generic_reloc,	/* special_function */
+	 "r_word1",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xffff,		/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+
+  /* An 16 bit big endian absolute relocation */
+  BFD_HOWTO (BFD_RELOC_Z80_16_BE,
+	 R_Z80_16_BE,		/* type */
+	 0,			/* rightshift */
+	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* bitsize */
+	 FALSE,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 z80_elf_16_be_reloc,	/* special_function */
+	 "r_imm16be",		/* name */
+	 FALSE,			/* partial_inplace */
+	 0x00000000,		/* src_mask */
+	 0x0000ffff,		/* dst_mask */
+	 FALSE),		/* pcrel_offset */
+};
+
+static reloc_howto_type *
+z80_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+		       bfd_reloc_code_real_type code)
+{
+  enum
+    {
+      table_size = sizeof (elf_z80_howto_table) / sizeof (elf_z80_howto_table[0])
+    };
+  unsigned int i;
+
+  for (i = 0; i < table_size; i++)
+    {
+      if (elf_z80_howto_table[i].r_type == code)
+	  return &elf_z80_howto_table[i].howto;
+    }
+
+  printf ("%s:%d Not found BFD reloc type %d\n", __FILE__, __LINE__, code);
+
+  return NULL;
+}
+
+static reloc_howto_type *
+z80_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, const char *r_name)
+{
+  enum
+    {
+      table_size = sizeof (elf_z80_howto_table) / sizeof (elf_z80_howto_table[0])
+    };
+  unsigned int i;
+
+  for (i = 0; i < table_size; i++)
+    {
+      if (elf_z80_howto_table[i].howto.name != NULL
+	  && strcasecmp (elf_z80_howto_table[i].howto.name, r_name) == 0)
+	return &elf_z80_howto_table[i].howto;
+    }
+
+  printf ("%s:%d Not found ELF reloc name `%s'\n", __FILE__, __LINE__, r_name);
+
+  return NULL;
+}
+
+static reloc_howto_type *
+z80_rtype_to_howto (bfd *abfd, unsigned r_type)
+{
+  enum
+    {
+      table_size = sizeof (elf_z80_howto_table) / sizeof (elf_z80_howto_table[0])
+    };
+  unsigned int i;
+
+  for (i = 0; i < table_size; i++)
+    {
+      if (elf_z80_howto_table[i].howto.type == r_type)
+	  return &elf_z80_howto_table[i].howto;
+    }
+
+  /* xgettext:c-format */
+  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+		      abfd, r_type);
+  return NULL;
+} 
+
+/* Set the howto pointer for an z80 ELF reloc.  */
+
+static bfd_boolean
+z80_info_to_howto_rela (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst)
+{
+  unsigned int  r_type = ELF32_R_TYPE (dst->r_info);
+  reloc_howto_type *howto = z80_rtype_to_howto (abfd, r_type);
+  if (howto != NULL)
+    {
+      cache_ptr->howto = howto;
+      return TRUE;
+    }
+  bfd_set_error (bfd_error_bad_value);
+  return FALSE;
+}
+
+static bfd_reloc_status_type
+z80_elf_final_link_relocate (unsigned long r_type,
+			     bfd *input_bfd,
+			     bfd *output_bfd ATTRIBUTE_UNUSED,
+			     asection *input_section ATTRIBUTE_UNUSED,
+			     bfd_byte *contents,
+			     bfd_vma offset,
+			     bfd_vma value,
+			     bfd_vma addend,
+			     struct bfd_link_info *info ATTRIBUTE_UNUSED,
+			     asection *sym_sec ATTRIBUTE_UNUSED,
+			     int is_local ATTRIBUTE_UNUSED)
+{
+  bfd_boolean r;
+  reloc_howto_type *howto;
+
+  switch (r_type)
+    {
+    case R_Z80_16_BE:
+      value += addend;
+      bfd_put_8 (input_bfd, value >> 8, contents + offset + 0);
+      bfd_put_8 (input_bfd, value >> 0, contents + offset + 1);
+      return bfd_reloc_ok;
+    }
+
+  howto = z80_rtype_to_howto (input_bfd, r_type);
+  if (howto == NULL)
+    return bfd_reloc_notsupported;
+
+  r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents,
+				offset, value, addend);
+  return r ? bfd_reloc_ok : bfd_reloc_notsupported;
+}
+
+static bfd_boolean
+z80_elf_relocate_section (bfd *output_bfd,
+			  struct bfd_link_info *info,
+			  bfd *input_bfd,
+			  asection *input_section,
+			  bfd_byte *contents,
+			  Elf_Internal_Rela *relocs,
+			  Elf_Internal_Sym *local_syms,
+			  asection **local_sections)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  Elf_Internal_Rela *rel, *relend;
+
+  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
+  sym_hashes = elf_sym_hashes (input_bfd);
+
+  rel = relocs;
+  relend = relocs + input_section->reloc_count;
+  for (; rel < relend; rel++)
+    {
+      unsigned int r_type;
+      unsigned long r_symndx;
+      Elf_Internal_Sym *sym;
+      asection *sec;
+      struct elf_link_hash_entry *h;
+      bfd_vma relocation;
+
+      /* This is a final link.  */
+      r_symndx = ELF32_R_SYM (rel->r_info);
+      r_type = ELF32_R_TYPE (rel->r_info);
+      h = NULL;
+      sym = NULL;
+      sec = NULL;
+      if (r_symndx < symtab_hdr->sh_info)
+	{
+	  sym = local_syms + r_symndx;
+	  sec = local_sections[r_symndx];
+	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
+	}
+      else
+	{
+	  bfd_boolean unresolved_reloc, warned, ignored;
+
+	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
+				   r_symndx, symtab_hdr, sym_hashes,
+				   h, sec, relocation,
+				   unresolved_reloc, warned, ignored);
+	}
+
+      if (sec != NULL && discarded_section (sec))
+	{
+	  /* For relocs against symbols from removed linkonce sections,
+	     or sections discarded by a linker script, we just want the
+	     section contents cleared.  Avoid any special processing.  */
+	  reloc_howto_type *howto;
+	  howto = z80_rtype_to_howto (input_bfd, r_type);
+	  RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
+					   rel, 1, relend, howto, 0, contents);
+	}
+
+      if (bfd_link_relocatable (info))
+	continue;
+
+
+      z80_elf_final_link_relocate (r_type, input_bfd, output_bfd,
+				   input_section,
+				   contents, rel->r_offset,
+				   relocation, rel->r_addend,
+				   info, sec, h == NULL);
+    }
+
+  return TRUE;
+}
+
+/* The final processing done just before writing out a Z80 ELF object
+   file.  This gets the Z80 architecture right based on the machine
+   number.  */
+
+static bfd_boolean
+z80_elf_final_write_processing (bfd *abfd)
+{
+  unsigned long val = bfd_get_mach (abfd);
+
+  switch (val)
+    {
+    default:
+      _bfd_error_handler (_("%pB: unsupported bfd mach %#lx"),
+			  abfd, val);
+      /* fall through */
+    case bfd_mach_z80:
+    case bfd_mach_z80full:
+    case bfd_mach_z80strict:
+      val = EF_Z80_MACH_Z80;
+      break;
+    case bfd_mach_gbz80:
+      val = EF_Z80_MACH_GBZ80;
+      break;
+    case bfd_mach_z80n:
+      val = EF_Z80_MACH_Z80N;
+      break;
+    case bfd_mach_z180:
+      val = EF_Z80_MACH_Z180;
+      break;
+    case bfd_mach_ez80_z80:
+      val = EF_Z80_MACH_EZ80_Z80;
+      break;
+    case bfd_mach_ez80_adl:
+      val = EF_Z80_MACH_EZ80_ADL;
+      break;
+    case bfd_mach_r800:
+      val = EF_Z80_MACH_R800;
+      break;
+    }
+  elf_elfheader (abfd)->e_machine = EM_Z80;
+  elf_elfheader (abfd)->e_flags &= ~EF_Z80_MACH_MSK;
+  elf_elfheader (abfd)->e_flags |= val;
+  return _bfd_elf_final_write_processing (abfd);
+}
+
+/* Set the right machine number.  */
+static bfd_boolean
+z80_elf_object_p (bfd *abfd)
+{
+  unsigned int mach;
+
+  if (elf_elfheader (abfd)->e_machine == EM_Z80)
+    {
+      int e_mach = elf_elfheader (abfd)->e_flags & EF_Z80_MACH_MSK;
+      switch (e_mach)
+	{
+	default:
+	  _bfd_error_handler (_("%pB: unsupported mach %#x"),
+			      abfd, e_mach);
+	  /* fall through */
+	case EF_Z80_MACH_Z80:
+	  mach = bfd_mach_z80;
+	  break;
+	case EF_Z80_MACH_GBZ80:
+	  mach = bfd_mach_gbz80;
+	  break;
+	case EF_Z80_MACH_Z180:
+	  mach = bfd_mach_z180;
+	  break;
+	case EF_Z80_MACH_EZ80_Z80:
+	  mach = bfd_mach_ez80_z80;
+	  break;
+	case EF_Z80_MACH_EZ80_ADL:
+	  mach = bfd_mach_ez80_adl;
+	  break;
+	case EF_Z80_MACH_R800:
+	  mach = bfd_mach_r800;
+	  break;
+	case EF_Z80_MACH_Z80N:
+	  mach = bfd_mach_z80n;
+	  break;
+	}
+    }
+  else
+    {
+      _bfd_error_handler (_("%pB: unsupported arch %#x"),
+			  abfd, elf_elfheader (abfd)->e_machine);
+      mach = bfd_mach_z80;
+    }
+  return bfd_default_set_arch_mach (abfd, bfd_arch_z80, mach);
+}
+
+static int
+z80_is_local_label_name (bfd *	abfd ATTRIBUTE_UNUSED,
+			 const char * name)
+{
+  return (name[0] == '.' && name[1] == 'L') ||
+	 _bfd_elf_is_local_label_name (abfd, name);
+}
+
+static bfd_reloc_status_type
+z80_elf_16_be_reloc (bfd *abfd,
+		     arelent *reloc_entry,
+		     asymbol *symbol,
+		     void *data,
+		     asection *input_section,
+		     bfd *output_bfd,
+		     char **error_message)
+{
+  bfd_vma val;
+  long x;
+  bfd_size_type octets = (reloc_entry->address
+			  * OCTETS_PER_BYTE (abfd, input_section));
+
+  /* If this is a relocatable link (output_bfd test tells us), just
+     call the generic function.  Any adjustment will be done at final
+     link time.  */
+  if (output_bfd != NULL)
+    return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
+				  input_section, output_bfd, error_message);
+
+  /* Get symbol value.  */
+  val = 0;
+  if (!bfd_is_com_section (symbol->section))
+    val = symbol->value;
+  val += symbol->section->output_offset + input_section->output_offset;
+  if (symbol->section->output_section)
+    val += symbol->section->output_section->vma;
+
+  val += reloc_entry->addend;
+  if (reloc_entry->howto->partial_inplace)
+    {
+      x = bfd_get_8 (abfd, (bfd_byte *) data + octets + 0) * 0x100;
+      x += bfd_get_8 (abfd, (bfd_byte *) data + octets + 1);
+      x &= ~reloc_entry->howto->src_mask;
+    }
+  else
+    x = 0;
+
+  x |= val & reloc_entry->howto->dst_mask;
+  if (x < -0x8000 || x >= 0x10000)
+    return bfd_reloc_outofrange;
+
+  bfd_put_8 (abfd, x >> 8, (bfd_byte *) data + octets + 0);
+  bfd_put_8 (abfd, x >> 0, (bfd_byte *) data + octets + 1);
+  return bfd_reloc_ok;
+}
+
+#define ELF_ARCH		bfd_arch_z80
+#define ELF_MACHINE_CODE	EM_Z80
+#define ELF_MAXPAGESIZE		0x10000
+
+#define TARGET_LITTLE_SYM		z80_elf32_vec
+#define TARGET_LITTLE_NAME		"elf32-z80"
+
+#define elf_backend_can_refcount		1
+#define elf_backend_can_gc_sections		1
+#define elf_backend_stack_align			1
+#define elf_backend_rela_normal			1
+
+#define elf_info_to_howto			z80_info_to_howto_rela
+#define elf_info_to_howto_rel			z80_info_to_howto_rela
+
+#define elf_backend_final_write_processing	z80_elf_final_write_processing
+#define elf_backend_object_p			z80_elf_object_p
+#define elf_backend_relocate_section		z80_elf_relocate_section
+
+#define bfd_elf32_bfd_reloc_type_lookup		z80_reloc_type_lookup
+#define bfd_elf32_bfd_reloc_name_lookup		z80_reloc_name_lookup
+#define bfd_elf32_bfd_is_local_label_name	z80_is_local_label_name
+
+#include "elf32-target.h"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-alpha.c ./bfd/elf64-alpha.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-alpha.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-alpha.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Alpha specific support for 64-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
    Contributed by Richard Henderson <rth@tamu.edu>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -52,11 +52,11 @@
 
 /* Instruction data for plt generation and relaxation.  */
 
-#define OP_LDA		0x08
-#define OP_LDAH		0x09
-#define OP_LDQ		0x29
-#define OP_BR		0x30
-#define OP_BSR		0x34
+#define OP_LDA		0x08U
+#define OP_LDAH		0x09U
+#define OP_LDQ		0x29U
+#define OP_BR		0x30U
+#define OP_BSR		0x34U
 
 #define INSN_LDA	(OP_LDA << 26)
 #define INSN_LDAH	(OP_LDAH << 26)
@@ -73,11 +73,11 @@
 #define INSN_JMP	0x68000000
 #define INSN_JSR_MASK	0xfc00c000
 
-#define INSN_A(I,A)		(I | (A << 21))
-#define INSN_AB(I,A,B)		(I | (A << 21) | (B << 16))
-#define INSN_ABC(I,A,B,C)	(I | (A << 21) | (B << 16) | C)
-#define INSN_ABO(I,A,B,O)	(I | (A << 21) | (B << 16) | ((O) & 0xffff))
-#define INSN_AD(I,A,D)		(I | (A << 21) | (((D) >> 2) & 0x1fffff))
+#define INSN_A(I,A)		(I | ((unsigned) A << 21))
+#define INSN_AB(I,A,B)		(INSN_A (I, A) | (B << 16))
+#define INSN_ABC(I,A,B,C)	(INSN_A (I, A) | (B << 16) | C)
+#define INSN_ABO(I,A,B,O)	(INSN_A (I, A) | (B << 16) | ((O) & 0xffff))
+#define INSN_AD(I,A,D)		(INSN_A (I, A) | (((D) >> 2) & 0x1fffff))
 
 /* PLT/GOT Stuff */
 
@@ -144,14 +144,14 @@ struct alpha_elf_reloc_entry
   /* Which .reloc section? */
   asection *srel;
 
-  /* What kind of relocation? */
-  unsigned int rtype;
-
-  /* Is this against read-only section? */
-  unsigned int reltext : 1;
+  /* Which section this relocation is against? */
+  asection *sec;
 
   /* How many did we find?  */
   unsigned long count;
+
+  /* What kind of relocation? */
+  unsigned int rtype;
 };
 
 struct alpha_elf_link_hash_entry
@@ -216,8 +216,9 @@ struct alpha_elf_link_hash_table
 /* Get the Alpha ELF linker hash table from a link_info structure.  */
 
 #define alpha_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == ALPHA_ELF_DATA ? ((struct alpha_elf_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == ALPHA_ELF_DATA)	\
+   ? (struct alpha_elf_link_hash_table *) (p)->hash : NULL)
 
 /* Get the object's symbols as our own entry type.  */
 
@@ -280,7 +281,7 @@ static struct bfd_link_hash_table *
 elf64_alpha_bfd_link_hash_table_create (bfd *abfd)
 {
   struct alpha_elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct alpha_elf_link_hash_table);
+  size_t amt = sizeof (struct alpha_elf_link_hash_table);
 
   ret = (struct alpha_elf_link_hash_table *) bfd_zmalloc (amt);
   if (ret == (struct alpha_elf_link_hash_table *) NULL)
@@ -1136,9 +1137,7 @@ elf64_alpha_info_to_howto (bfd *abfd, ar
 
 /* Handle an Alpha specific section when reading an object file.  This
    is called when bfd_section_from_shdr finds a section with an unknown
-   type.
-   FIXME: We need to handle the SHF_ALPHA_GPREL flag, but I'm not sure
-   how to.  */
+   type.  */
 
 static bfd_boolean
 elf64_alpha_section_from_shdr (bfd *abfd,
@@ -1180,10 +1179,10 @@ elf64_alpha_section_from_shdr (bfd *abfd
 /* Convert Alpha specific section flags to bfd internal section flags.  */
 
 static bfd_boolean
-elf64_alpha_section_flags (flagword *flags, const Elf_Internal_Shdr *hdr)
+elf64_alpha_section_flags (const Elf_Internal_Shdr *hdr)
 {
   if (hdr->sh_flags & SHF_ALPHA_GPREL)
-    *flags |= SEC_SMALL_DATA;
+    hdr->bfd_section->flags |= SEC_SMALL_DATA;
 
   return TRUE;
 }
@@ -1242,6 +1241,7 @@ elf64_alpha_add_symbol_hook (bfd *abfd,
 	  scomm = bfd_make_section_with_flags (abfd, ".scommon",
 					       (SEC_ALLOC
 						| SEC_IS_COMMON
+						| SEC_SMALL_DATA
 						| SEC_LINKER_CREATED));
 	  if (scomm == NULL)
 	    return FALSE;
@@ -1387,18 +1387,23 @@ elf64_alpha_read_ecoff_info (bfd *abfd,
   /* The symbolic header contains absolute file offsets and sizes to
      read.  */
 #define READ(ptr, offset, count, size, type)				\
-  if (symhdr->count == 0)						\
-    debug->ptr = NULL;							\
-  else									\
+  do									\
     {									\
-      bfd_size_type amt = (bfd_size_type) size * symhdr->count;		\
-      debug->ptr = (type) bfd_malloc (amt);				\
-      if (debug->ptr == NULL)						\
+      size_t amt;							\
+      debug->ptr = NULL;						\
+      if (symhdr->count == 0)						\
+	break;								\
+      if (_bfd_mul_overflow (size, symhdr->count, &amt))		\
+	{								\
+	  bfd_set_error (bfd_error_file_too_big);			\
+	  goto error_return;						\
+	}								\
+      if (bfd_seek (abfd, symhdr->offset, SEEK_SET) != 0)		\
 	goto error_return;						\
-      if (bfd_seek (abfd, (file_ptr) symhdr->offset, SEEK_SET) != 0	\
-	  || bfd_bread (debug->ptr, amt, abfd) != amt)			\
+      debug->ptr = (type) _bfd_malloc_and_read (abfd, amt, amt);	\
+      if (debug->ptr == NULL)						\
 	goto error_return;						\
-    }
+    } while (0)
 
   READ (line, cbLineOffset, cbLine, sizeof (unsigned char), unsigned char *);
   READ (external_dnr, cbDnOffset, idnMax, swap->external_dnr_size, void *);
@@ -1419,30 +1424,18 @@ elf64_alpha_read_ecoff_info (bfd *abfd,
   return TRUE;
 
  error_return:
-  if (ext_hdr != NULL)
-    free (ext_hdr);
-  if (debug->line != NULL)
-    free (debug->line);
-  if (debug->external_dnr != NULL)
-    free (debug->external_dnr);
-  if (debug->external_pdr != NULL)
-    free (debug->external_pdr);
-  if (debug->external_sym != NULL)
-    free (debug->external_sym);
-  if (debug->external_opt != NULL)
-    free (debug->external_opt);
-  if (debug->external_aux != NULL)
-    free (debug->external_aux);
-  if (debug->ss != NULL)
-    free (debug->ss);
-  if (debug->ssext != NULL)
-    free (debug->ssext);
-  if (debug->external_fdr != NULL)
-    free (debug->external_fdr);
-  if (debug->external_rfd != NULL)
-    free (debug->external_rfd);
-  if (debug->external_ext != NULL)
-    free (debug->external_ext);
+  free (ext_hdr);
+  free (debug->line);
+  free (debug->external_dnr);
+  free (debug->external_pdr);
+  free (debug->external_sym);
+  free (debug->external_opt);
+  free (debug->external_aux);
+  free (debug->ss);
+  free (debug->ssext);
+  free (debug->external_fdr);
+  free (debug->external_rfd);
+  free (debug->external_ext);
   return FALSE;
 }
 
@@ -1724,7 +1717,7 @@ get_got_entry (bfd *abfd, struct alpha_e
   if (!gotent)
     {
       int entry_size;
-      bfd_size_type amt;
+      size_t amt;
 
       amt = sizeof (struct alpha_elf_got_entry);
       gotent = (struct alpha_elf_got_entry *) bfd_alloc (abfd, amt);
@@ -1787,20 +1780,10 @@ elf64_alpha_check_relocs (bfd *abfd, str
   Elf_Internal_Shdr *symtab_hdr;
   struct alpha_elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel, *relend;
-  bfd_size_type amt;
 
   if (bfd_link_relocatable (info))
     return TRUE;
 
-  /* Don't do anything special with non-loaded, non-alloced sections.
-     In particular, any relocs in such sections should not affect GOT
-     and PLT reference counting (ie. we don't allow them to create GOT
-     or PLT entries), there's no possibility or desire to optimize TLS
-     relocs, and there's not much point in propagating relocs to shared
-     libs that the dynamic linker won't relocate.  */
-  if ((sec->flags & SEC_ALLOC) == 0)
-    return TRUE;
-
   BFD_ASSERT (is_alpha_elf (abfd));
 
   dynobj = elf_hash_table (info)->dynobj;
@@ -1990,15 +1973,15 @@ elf64_alpha_check_relocs (bfd *abfd, str
 
 	      if (!rent)
 		{
-		  amt = sizeof (struct alpha_elf_reloc_entry);
+		  size_t amt = sizeof (struct alpha_elf_reloc_entry);
 		  rent = (struct alpha_elf_reloc_entry *) bfd_alloc (abfd, amt);
 		  if (!rent)
 		    return FALSE;
 
 		  rent->srel = sreloc;
+		  rent->sec = sec;
 		  rent->rtype = r_type;
 		  rent->count = 1;
-		  rent->reltext = (sec->flags & SEC_READONLY) != 0;
 
 		  rent->next = h->reloc_entries;
 		  h->reloc_entries = rent;
@@ -2012,7 +1995,13 @@ elf64_alpha_check_relocs (bfd *abfd, str
 		 loaded into memory, we need a RELATIVE reloc.  */
 	      sreloc->size += sizeof (Elf64_External_Rela);
 	      if (sec->flags & SEC_READONLY)
-		info->flags |= DF_TEXTREL;
+		{
+		  info->flags |= DF_TEXTREL;
+		  info->callbacks->minfo
+		    (_("%pB: dynamic relocation against `%pT' in "
+		       "read-only section `%pA'\n"),
+		     sec->owner, h->root.root.root.string, sec);
+		}
 	    }
 	}
     }
@@ -2697,10 +2686,17 @@ elf64_alpha_calc_dynrel_sizes (struct al
 						 bfd_link_pie (info));
       if (entries)
 	{
+	  asection *sec = relent->sec;
 	  relent->srel->size +=
 	    entries * sizeof (Elf64_External_Rela) * relent->count;
-	  if (relent->reltext)
-	    info->flags |= DT_TEXTREL;
+	  if ((sec->flags & SEC_READONLY) != 0)
+	    {
+	      info->flags |= DT_TEXTREL;
+	      info->callbacks->minfo
+		(_("%pB: dynamic relocation against `%pT' in "
+		   "read-only section `%pA'\n"),
+		 sec->owner, h->root.root.root.string, sec);
+	    }
 	}
     }
 
@@ -2916,38 +2912,14 @@ elf64_alpha_size_dynamic_sections (bfd *
 #define add_dynamic_entry(TAG, VAL) \
   _bfd_elf_add_dynamic_entry (info, TAG, VAL)
 
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (relplt)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-
-	  if (elf64_alpha_use_secureplt
-	      && !add_dynamic_entry (DT_ALPHA_PLTRO, 1))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf64_External_Rela)))
-	    return FALSE;
+      if (!_bfd_elf_add_dynamic_tags (output_bfd, info,
+				      relocs || relplt))
+	return FALSE;
 
-	  if (info->flags & DF_TEXTREL)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
+      if (relplt
+	  && elf64_alpha_use_secureplt
+	  && !add_dynamic_entry (DT_ALPHA_PLTRO, 1))
+	return FALSE;
     }
 #undef add_dynamic_entry
 
@@ -3023,7 +2995,8 @@ elf64_alpha_relax_got_load (struct alpha
     }
 
   /* Can't relax dynamic symbols.  */
-  if (alpha_elf_dynamic_symbol_p (&info->h->root, info->link_info))
+  if (info->h != NULL
+      && alpha_elf_dynamic_symbol_p (&info->h->root, info->link_info))
     return TRUE;
 
   /* Can't use local-exec relocations in shared libraries.  */
@@ -3171,12 +3144,10 @@ elf64_alpha_relax_opt_call (struct alpha
 
       if (!gpdisp || gpdisp->r_addend != 4)
 	{
-	  if (tsec_free)
-	    free (tsec_free);
+	  free (tsec_free);
 	  return 0;
 	}
-      if (tsec_free)
-	free (tsec_free);
+      free (tsec_free);
     }
 
   /* We've now determined that we can skip an initial gp load.  Verify
@@ -3493,7 +3464,8 @@ elf64_alpha_relax_tls_get_addr (struct a
   bfd_boolean dynamic, use_gottprel;
   unsigned long new_symndx;
 
-  dynamic = alpha_elf_dynamic_symbol_p (&info->h->root, info->link_info);
+  dynamic = (info->h != NULL
+	     && alpha_elf_dynamic_symbol_p (&info->h->root, info->link_info));
 
   /* If a TLS symbol is accessed using IE at least once, there is no point
      to use dynamic model for it.  */
@@ -4022,14 +3994,11 @@ elf64_alpha_relax_section (bfd *abfd, as
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (info.contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != info.contents)
+  if (elf_section_data (sec)->this_hdr.contents != info.contents)
     free (info.contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
@@ -5523,6 +5492,9 @@ static const struct elf_size_info alpha_
 #define elf_backend_special_sections \
   elf64_alpha_special_sections
 
+#define elf_backend_strip_zero_sized_dynamic_sections \
+  _bfd_elf_strip_zero_sized_dynamic_sections
+
 /* A few constants that determine how the .plt section is set up.  */
 #define elf_backend_want_got_plt 0
 #define elf_backend_plt_readonly 0
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-bpf.c ./bfd/elf64-bpf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-bpf.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-bpf.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Linux bpf specific support for 64-bit ELF
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
    Contributed by Oracle Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -31,6 +31,9 @@
 
 #define BASEADDR(SEC)	((SEC)->output_section->vma + (SEC)->output_offset)
 
+static bfd_reloc_status_type bpf_elf_generic_reloc
+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
+
 /* Relocation tables.  */
 static reloc_howto_type bpf_elf_howto_table [] =
 {
@@ -42,7 +45,7 @@ static reloc_howto_type bpf_elf_howto_ta
 	 FALSE,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_NONE",		/* name */
 	 FALSE,			/* partial_inplace */
 	 0,			/* src_mask */
@@ -55,27 +58,27 @@ static reloc_howto_type bpf_elf_howto_ta
 	 4,			/* size (0 = byte, 1 = short, 2 = long) */
 	 64,			/* bitsize */
 	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
+	 32,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_INSN_64",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
+	 TRUE,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
 	 TRUE),			/* pcrel_offset */
 
-  /* 32-immediate in LDDW instruction.  */
+  /* 32-immediate in many instructions.  */
   HOWTO (R_BPF_INSN_32,		/* type */
 	 0,			/* rightshift */
 	 2,			/* size (0 = byte, 1 = short, 2 = long) */
 	 32,			/* bitsize */
 	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
+	 32,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_INSN_32",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
+	 TRUE,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 TRUE),			/* pcrel_offset */
 
@@ -85,12 +88,12 @@ static reloc_howto_type bpf_elf_howto_ta
 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
 	 16,			/* bitsize */
 	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
+	 16,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_INSN_16",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
+	 TRUE,			/* partial_inplace */
+	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
 	 TRUE),			/* pcrel_offset */
 
@@ -100,11 +103,11 @@ static reloc_howto_type bpf_elf_howto_ta
 	 1,			/* size (0 = byte, 1 = short, 2 = long) */
 	 16,			/* bitsize */
 	 TRUE,			/* pc_relative */
-	 32,			/* bitpos */
+	 16,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_INSN_DISP16",   /* name */
-	 FALSE,			/* partial_inplace */
+	 TRUE,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
 	 TRUE),			/* pcrel_offset */
@@ -116,10 +119,10 @@ static reloc_howto_type bpf_elf_howto_ta
 	 TRUE,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_8_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
+	 TRUE,			/* partial_inplace */
+	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
 	 TRUE),			/* pcrel_offset */
 
@@ -130,10 +133,10 @@ static reloc_howto_type bpf_elf_howto_ta
 	 TRUE,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_16_PCREL",	/* name */
 	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
+	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
 	 TRUE),			/* pcrel_offset */
 
@@ -144,10 +147,10 @@ static reloc_howto_type bpf_elf_howto_ta
 	 TRUE,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_32_PCREL",	/* name */
 	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
+	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 TRUE),			/* pcrel_offset */
 
@@ -158,10 +161,10 @@ static reloc_howto_type bpf_elf_howto_ta
 	 FALSE,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_DATA_8",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
+	 TRUE,			/* partial_inplace */
+	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
 	 FALSE),		/* pcrel_offset */
 
@@ -172,10 +175,10 @@ static reloc_howto_type bpf_elf_howto_ta
 	 FALSE,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_DATA_16",	/* name */
 	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
+	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
 	 FALSE),		/* pcrel_offset */
 
@@ -185,11 +188,11 @@ static reloc_howto_type bpf_elf_howto_ta
 	 2,			/* size (0 = byte, 1 = short, 2 = long) */
 	 32,			/* bitsize */
 	 TRUE,			/* pc_relative */
-	 0,			/* bitpos */
+	 32,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_INSN_DISP32",   /* name */
-	 FALSE,			/* partial_inplace */
+	 TRUE,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 TRUE),			/* pcrel_offset */
@@ -202,10 +205,10 @@ static reloc_howto_type bpf_elf_howto_ta
 	 FALSE,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_DATA_32",	/* name */
 	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
+	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 TRUE),			/* pcrel_offset */
 
@@ -217,7 +220,7 @@ static reloc_howto_type bpf_elf_howto_ta
 	 FALSE,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_DATA_64",	/* name */
 	 FALSE,			/* partial_inplace */
 	 0,			/* src_mask */
@@ -231,10 +234,10 @@ static reloc_howto_type bpf_elf_howto_ta
 	 TRUE,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 bpf_elf_generic_reloc, /* special_function */
 	 "R_BPF_64_PCREL",	/* name */
 	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
+	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
 	 TRUE),			/* pcrel_offset */
 };
@@ -391,6 +394,8 @@ bpf_elf_relocate_section (bfd *output_bf
       bfd_reloc_status_type	   r;
       const char *		   name = NULL;
       int			   r_type ATTRIBUTE_UNUSED;
+      bfd_signed_vma               addend;
+      bfd_byte                   * where;
 
       r_type = ELF64_R_TYPE (rel->r_info);
       r_symndx = ELF64_R_SYM (rel->r_info);
@@ -398,6 +403,7 @@ bpf_elf_relocate_section (bfd *output_bf
       h      = NULL;
       sym    = NULL;
       sec    = NULL;
+      where  = contents + rel->r_offset;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -435,13 +441,12 @@ bpf_elf_relocate_section (bfd *output_bf
         case R_BPF_INSN_DISP16:
         case R_BPF_INSN_DISP32:
           {
-            bfd_signed_vma addend;
-            
             /* Make the relocation PC-relative, and change its unit to
-               64-bit words.  */
-            relocation -= sec_addr (input_section) + rel->r_offset;
-            /* Make it 64-bit words.  */
-            relocation = relocation / 8;
+               64-bit words.  Note we need *signed* arithmetic
+               here.  */
+            relocation = ((bfd_signed_vma) relocation
+			  - (sec_addr (input_section) + rel->r_offset));
+            relocation = (bfd_signed_vma) relocation / 8;
             
             /* Get the addend from the instruction and apply it.  */
             addend = bfd_get (howto->bitsize, input_bfd,
@@ -460,12 +465,72 @@ bpf_elf_relocate_section (bfd *output_bf
             r = bfd_reloc_ok;
             break;
           }
+	case R_BPF_DATA_8:
+	case R_BPF_DATA_16:
+	case R_BPF_DATA_32:
+	case R_BPF_DATA_64:
+	  {
+	    addend = bfd_get (howto->bitsize, input_bfd, where);
+	    relocation += addend;
+	    bfd_put (howto->bitsize, input_bfd, relocation, where);
+
+	    r = bfd_reloc_ok;
+	    break;
+	  }
+	case R_BPF_INSN_16:
+	  {
+
+	    addend = bfd_get_16 (input_bfd, where + 2);
+	    relocation += addend;
+	    bfd_put_16 (input_bfd, relocation, where + 2);
+
+	    r = bfd_reloc_ok;
+	    break;
+	  }
+        case R_BPF_INSN_32:
+          {
+            /*  Write relocated value */
+
+	    addend = bfd_get_32 (input_bfd, where + 4);
+	    relocation += addend;
+            bfd_put_32 (input_bfd, relocation, where + 4);
+
+            r = bfd_reloc_ok;
+            break;
+          }
+        case R_BPF_INSN_64:
+          {
+            /*
+                LDDW instructions are 128 bits long, with a 64-bit immediate.
+                The lower 32 bits of the immediate are in the same position
+                as the imm32 field of other instructions.
+                The upper 32 bits of the immediate are stored at the end of
+                the instruction.
+             */
+
+
+            /* Get the addend. The upper and lower 32 bits are split.
+               'where' is the beginning of the 16-byte instruction. */
+            addend = bfd_get_32 (input_bfd, where + 4);
+            addend |= (bfd_get_32 (input_bfd, where + 12) << 32);
+
+            relocation += addend;
+
+            bfd_put_32 (input_bfd, (relocation & 0xFFFFFFFF), where + 4);
+            bfd_put_32 (input_bfd, (relocation >> 32), where + 12);
+            r = bfd_reloc_ok;
+            break;
+          }
         default:
-          r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-                                        contents, rel->r_offset, relocation,
-                                        rel->r_addend);
+	  r = bfd_reloc_notsupported;
         }
 
+      if (r == bfd_reloc_ok)
+	  r = bfd_check_overflow (howto->complain_on_overflow,
+				  howto->bitsize,
+				  howto->rightshift,
+				  64, relocation);
+
       if (r != bfd_reloc_ok)
 	{
 	  const char * msg = NULL;
@@ -523,6 +588,77 @@ elf64_bpf_merge_private_bfd_data (bfd *i
   return TRUE;
 }
 
+/* A generic howto special function for installing BPF relocations.
+   This function will be called by the assembler (via bfd_install_relocation).
+   At link time, bpf_elf_relocate_section will resolve the final relocations.
+
+   BPF instructions are always big endian, and this approach avoids problems in
+   bfd_install_relocation.  */
+
+static bfd_reloc_status_type
+bpf_elf_generic_reloc (bfd * abfd, arelent *reloc_entry, asymbol *symbol,
+		       void *data, asection *input_section,
+		       bfd *output_bfd,
+		       char **error_message ATTRIBUTE_UNUSED)
+{
+
+  bfd_signed_vma relocation;
+  bfd_reloc_status_type status;
+  bfd_byte *where;
+
+  /* Sanity check that the address is in range.  */
+  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+    return bfd_reloc_outofrange;
+
+  /*  Get the symbol value.  */
+  if (bfd_is_com_section (symbol->section))
+    relocation = 0;
+  else
+    relocation = symbol->value;
+
+  if (symbol->flags & BSF_SECTION_SYM)
+    /* Relocation against a section symbol: add in the section base address.  */
+    relocation += BASEADDR (symbol->section);
+
+  relocation += reloc_entry->addend;
+
+  where = (bfd_byte *) data + reloc_entry->address;
+
+  status = bfd_check_overflow (reloc_entry->howto->complain_on_overflow,
+			       reloc_entry->howto->bitsize,
+			       reloc_entry->howto->rightshift, 64, relocation);
+
+  if (status != bfd_reloc_ok)
+    return status;
+
+  /* Now finally install the relocation.  */
+  if (reloc_entry->howto->type == R_BPF_INSN_64)
+    {
+      /* lddw is a 128-bit (!) instruction that allows loading a 64-bit
+	 immediate into a register. the immediate is split in half, with the
+	 lower 32 bits in the same position as the imm32 field of other
+	 instructions, and the upper 32 bits placed at the very end of the
+	 instruction. that is, there are 32 unused bits between them. */
+
+      bfd_put_32 (output_bfd, (relocation & 0xFFFFFFFF), where + 4);
+      bfd_put_32 (output_bfd, (relocation >> 32), where + 12);
+    }
+  else
+    {
+      /* For other kinds of relocations, the relocated value simply goes
+	 BITPOS bits from the start of the entry. This is always a multiple
+	 of 8, i.e. whole bytes.  */
+      bfd_put (reloc_entry->howto->bitsize, output_bfd, relocation,
+	       where + reloc_entry->howto->bitpos / 8);
+    }
+
+  reloc_entry->addend = relocation;
+  reloc_entry->address += input_section->output_offset;
+
+  return bfd_reloc_ok;
+}
+
+
 /* The macros below configure the architecture.  */
 
 #define TARGET_LITTLE_SYM bpf_elf64_le_vec
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64.c ./bfd/elf64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF 64-bit executable support for BFD.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-gen.c ./bfd/elf64-gen.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-gen.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-gen.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic support for 64-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-hppa.c ./bfd/elf64-hppa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-hppa.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-hppa.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for HPPA 64-bit ELF
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -117,8 +117,6 @@ struct elf64_hppa_link_hash_table
   /* Shortcuts to get to the various linker defined sections.  */
   asection *dlt_sec;
   asection *dlt_rel_sec;
-  asection *plt_sec;
-  asection *plt_rel_sec;
   asection *opd_sec;
   asection *opd_rel_sec;
   asection *other_rel_sec;
@@ -147,8 +145,9 @@ struct elf64_hppa_link_hash_table
 };
 
 #define hppa_link_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == HPPA64_ELF_DATA ? ((struct elf64_hppa_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == HPPA64_ELF_DATA)	\
+   ? (struct elf64_hppa_link_hash_table *) (p)->hash : NULL)
 
 #define hppa_elf_hash_entry(ent) \
   ((struct elf64_hppa_link_hash_entry *)(ent))
@@ -289,7 +288,7 @@ static struct bfd_link_hash_table*
 elf64_hppa_hash_table_create (bfd *abfd)
 {
   struct elf64_hppa_link_hash_table *htab;
-  bfd_size_type amt = sizeof (*htab);
+  size_t amt = sizeof (*htab);
 
   htab = bfd_zmalloc (amt);
   if (htab == NULL)
@@ -304,6 +303,7 @@ elf64_hppa_hash_table_create (bfd *abfd)
       return NULL;
     }
 
+  htab->root.dt_pltgot_required = TRUE;
   htab->text_segment_base = (bfd_vma) -1;
   htab->data_segment_base = (bfd_vma) -1;
 
@@ -383,7 +383,9 @@ elf64_hppa_section_from_shdr (bfd *abfd,
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
     return FALSE;
 
-  return TRUE;
+  return ((hdr->sh_flags & SHF_PARISC_SHORT) == 0
+	  || bfd_set_section_flags (hdr->bfd_section,
+				    hdr->bfd_section->flags | SEC_SMALL_DATA));
 }
 
 /* SEC is a section containing relocs for an input BFD when linking; return
@@ -532,8 +534,7 @@ elf64_hppa_check_relocs (bfd *abfd,
 
 	 ?!? Note we leak the last section_syms array.  Presumably we
 	 could free it in one of the later routines in this file.  */
-      if (hppa_info->section_syms)
-	free (hppa_info->section_syms);
+      free (hppa_info->section_syms);
 
       /* Read this BFD's local symbols.  */
       if (symtab_hdr->sh_info != 0)
@@ -801,7 +802,7 @@ elf64_hppa_check_relocs (bfd *abfd,
 
       if (need_entry & NEED_PLT)
 	{
-	  if (! hppa_info->plt_sec
+	  if (! hppa_info->root.splt
 	      && ! get_plt (abfd, info, hppa_info))
 	    goto err_out;
 
@@ -1180,7 +1181,7 @@ get_plt (bfd *abfd,
   asection *plt;
   bfd *dynobj;
 
-  plt = hppa_info->plt_sec;
+  plt = hppa_info->root.splt;
   if (!plt)
     {
       dynobj = hppa_info->root.dynobj;
@@ -1200,7 +1201,7 @@ get_plt (bfd *abfd,
 	  return FALSE;
 	}
 
-      hppa_info->plt_sec = plt;
+      hppa_info->root.splt = plt;
     }
 
   return TRUE;
@@ -1359,7 +1360,7 @@ elf64_hppa_create_dynamic_sections (bfd
   if (s == NULL
       || !bfd_set_section_alignment (s, 3))
     return FALSE;
-  hppa_info->plt_rel_sec = s;
+  hppa_info->root.srelplt = s;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".rela.data",
 					  (SEC_ALLOC | SEC_LOAD
@@ -1453,7 +1454,7 @@ allocate_dynrel_entries (struct elf_link
       else if (shared)
 	t = 2 * sizeof (Elf64_External_Rela);
 
-      hppa_info->plt_rel_sec->size += t;
+      hppa_info->root.srelplt->size += t;
     }
 
   return TRUE;
@@ -1527,9 +1528,7 @@ elf64_hppa_size_dynamic_sections (bfd *o
   bfd *dynobj;
   bfd *ibfd;
   asection *sec;
-  bfd_boolean plt;
   bfd_boolean relocs;
-  bfd_boolean reltext;
 
   hppa_info = hppa_link_hash_table (info);
   if (hppa_info == NULL)
@@ -1652,8 +1651,8 @@ elf64_hppa_size_dynamic_sections (bfd *o
 	}
       else
 	{
-	  sec = hppa_info->plt_sec;
-	  srel = hppa_info->plt_rel_sec;
+	  sec = hppa_info->root.splt;
+	  srel = hppa_info->root.srelplt;
 	  for (; local_plt < end_local_plt; ++local_plt)
 	    {
 	      if (*local_plt > 0)
@@ -1706,12 +1705,12 @@ elf64_hppa_size_dynamic_sections (bfd *o
       hppa_info->dlt_sec->size = data.ofs;
     }
 
-  if (hppa_info->plt_sec)
+  if (hppa_info->root.splt)
     {
-      data.ofs = hppa_info->plt_sec->size;
+      data.ofs = hppa_info->root.splt->size;
       elf_link_hash_traverse (&hppa_info->root,
 			      allocate_global_data_plt, &data);
-      hppa_info->plt_sec->size = data.ofs;
+      hppa_info->root.splt->size = data.ofs;
     }
 
   if (hppa_info->stub_sec)
@@ -1737,9 +1736,7 @@ elf64_hppa_size_dynamic_sections (bfd *o
 			    allocate_dynrel_entries, &data);
 
   /* The sizes of all the sections are set.  Allocate memory for them.  */
-  plt = FALSE;
   relocs = FALSE;
-  reltext = FALSE;
   for (sec = dynobj->sections; sec != NULL; sec = sec->next)
     {
       const char *name;
@@ -1754,7 +1751,7 @@ elf64_hppa_size_dynamic_sections (bfd *o
       if (strcmp (name, ".plt") == 0)
 	{
 	  /* Remember whether there is a PLT.  */
-	  plt = sec->size != 0;
+	  ;
 	}
       else if (strcmp (name, ".opd") == 0
 	       || CONST_STRNEQ (name, ".dlt")
@@ -1767,28 +1764,10 @@ elf64_hppa_size_dynamic_sections (bfd *o
 	{
 	  if (sec->size != 0)
 	    {
-	      asection *target;
-
 	      /* Remember whether there are any reloc sections other
 		 than .rela.plt.  */
 	      if (strcmp (name, ".rela.plt") != 0)
-		{
-		  const char *outname;
-
-		  relocs = TRUE;
-
-		  /* If this relocation section applies to a read only
-		     section, then we probably need a DT_TEXTREL
-		     entry.  The entries in the .rela.plt section
-		     really apply to the .got section, which we
-		     created ourselves and so know is not readonly.  */
-		  outname = bfd_section_name (sec->output_section);
-		  target = bfd_get_section_by_name (output_bfd, outname + 4);
-		  if (target != NULL
-		      && (target->flags & SEC_READONLY) != 0
-		      && (target->flags & SEC_ALLOC) != 0)
-		    reltext = TRUE;
-		}
+		relocs = TRUE;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -1841,8 +1820,7 @@ elf64_hppa_size_dynamic_sections (bfd *o
 #define add_dynamic_entry(TAG, VAL) \
   _bfd_elf_add_dynamic_entry (info, TAG, VAL)
 
-      if (!add_dynamic_entry (DT_HP_DLD_FLAGS, 0)
-	  || !add_dynamic_entry (DT_PLTGOT, 0))
+      if (!add_dynamic_entry (DT_HP_DLD_FLAGS, 0))
 	return FALSE;
 
       /* Add some entries to the .dynamic section.  We fill in the
@@ -1852,8 +1830,7 @@ elf64_hppa_size_dynamic_sections (bfd *o
 	 dynamic linker and used by the debugger.  */
       if (! bfd_link_pic (info))
 	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0)
-	      || !add_dynamic_entry (DT_HP_DLD_HOOK, 0)
+	  if (!add_dynamic_entry (DT_HP_DLD_HOOK, 0)
 	      || !add_dynamic_entry (DT_HP_LOAD_MAP, 0))
 	    return FALSE;
 	}
@@ -1862,33 +1839,10 @@ elf64_hppa_size_dynamic_sections (bfd *o
 	 Required by HPUX 11.00 patch PHSS_26559.  */
       if (!add_dynamic_entry (DT_FLAGS, (info)->flags))
 	return FALSE;
-
-      if (plt)
-	{
-	  if (!add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf64_External_Rela)))
-	    return FALSE;
-	}
-
-      if (reltext)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	  info->flags |= DF_TEXTREL;
-	}
     }
 #undef add_dynamic_entry
 
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Called after we have output the symbol into the dynamic symbol
@@ -1949,9 +1903,9 @@ elf64_hppa_finish_dynamic_symbol (bfd *o
     return FALSE;
 
   stub = hppa_info->stub_sec;
-  splt = hppa_info->plt_sec;
+  splt = hppa_info->root.splt;
   sopd = hppa_info->opd_sec;
-  spltrel = hppa_info->plt_rel_sec;
+  spltrel = hppa_info->root.srelplt;
 
   /* Incredible.  It is actually necessary to NOT use the symbol's real
      value when building the dynamic symbol table for a shared library.
@@ -2531,13 +2485,13 @@ elf64_hppa_finish_dynamic_sections (bfd
 	      break;
 
 	    case DT_JMPREL:
-	      s = hppa_info->plt_rel_sec;
+	      s = hppa_info->root.srelplt;
 	      dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
 	      bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
 
 	    case DT_PLTRELSZ:
-	      s = hppa_info->plt_rel_sec;
+	      s = hppa_info->root.srelplt;
 	      dyn.d_un.d_val = s->size;
 	      bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
@@ -2562,7 +2516,7 @@ elf64_hppa_finish_dynamic_sections (bfd
 	      /* There is some question about whether or not the size of
 		 the PLT relocs should be included here.  HP's tools do
 		 it, so we'll emulate them.  */
-	      s = hppa_info->plt_rel_sec;
+	      s = hppa_info->root.srelplt;
 	      dyn.d_un.d_val += s->size;
 	      bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
@@ -2980,7 +2934,7 @@ elf_hppa_final_link (bfd *abfd, struct b
 	     that order) and set __gp to the base address of whichever
 	     section is found first.  */
 
-	  sec = hppa_info->plt_sec;
+	  sec = hppa_info->root.splt;
 	  if (sec && ! (sec->flags & SEC_EXCLUDE))
 	    gp_val = (sec->output_offset
 		      + sec->output_section->vma
@@ -3038,7 +2992,7 @@ elf_hppa_final_link (bfd *abfd, struct b
   /* Do not attempt to sort non-regular files.  This is here
      especially for configure scripts and kernel builds which run
      tests with "ld [...] -o /dev/null".  */
-  if (stat (abfd->filename, &buf) != 0
+  if (stat (bfd_get_filename (abfd), &buf) != 0
       || !S_ISREG(buf.st_mode))
     return TRUE;
 
@@ -3529,8 +3483,8 @@ elf_hppa_final_link_relocate (Elf_Intern
 	   to the start of the DLT, so we have to compute the absolute
 	   address, then subtract out the value of __gp.  */
 	value = (hh->plt_offset
-		 + hppa_info->plt_sec->output_offset
-		 + hppa_info->plt_sec->output_section->vma);
+		 + hppa_info->root.splt->output_offset
+		 + hppa_info->root.splt->output_section->vma);
 	value -= _bfd_get_gp_value (output_bfd);
 
 	/* All PLTOFF relocations are basically the same at this point,
@@ -3880,13 +3834,14 @@ elf64_hppa_relocate_section (bfd *output
 	  else if (!bfd_link_relocatable (info))
 	    {
 	      bfd_boolean err;
-	      err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
-		     || ELF_ST_VISIBILITY (eh->other) != STV_DEFAULT);
-	      (*info->callbacks->undefined_symbol) (info,
-						    eh->root.root.string,
-						    input_bfd,
-						    input_section,
-						    rel->r_offset, err);
+
+	      err = (info->unresolved_syms_in_objects == RM_DIAGNOSE
+		     && !info->warn_unresolved_syms)
+		|| ELF_ST_VISIBILITY (eh->other) != STV_DEFAULT;
+
+	      info->callbacks->undefined_symbol
+		(info, eh->root.root.string, input_bfd,
+		 input_section, rel->r_offset, err);
 	    }
 
 	  if (!bfd_link_relocatable (info)
@@ -3898,7 +3853,7 @@ elf64_hppa_relocate_section (bfd *output
 	      if (info->unresolved_syms_in_objects == RM_IGNORE
 		  && ELF_ST_VISIBILITY (eh->other) == STV_DEFAULT
 		  && eh->type == STT_PARISC_MILLI)
-		(*info->callbacks->undefined_symbol)
+		info->callbacks->undefined_symbol
 		  (info, eh_name (eh), input_bfd,
 		   input_section, rel->r_offset, FALSE);
 	    }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-hppa.h ./bfd/elf64-hppa.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-hppa.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-hppa.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* ELF64/HPPA support
 
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-ia64-vms.c ./bfd/elf64-ia64-vms.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-ia64-vms.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-ia64-vms.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* IA-64 support for OpenVMS
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -170,8 +170,9 @@ struct elf64_ia64_allocate_data
 };
 
 #define elf64_ia64_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == IA64_ELF_DATA ? ((struct elf64_ia64_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == IA64_ELF_DATA)		\
+   ? (struct elf64_ia64_link_hash_table *) (p)->hash : NULL)
 
 struct elf64_ia64_vms_obj_tdata
 {
@@ -792,13 +793,11 @@ elf64_ia64_relax_section (bfd *abfd, ase
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL && (unsigned char *) isymbuf != symtab_hdr->contents)
+  if ((unsigned char *) isymbuf != symtab_hdr->contents)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
@@ -822,11 +821,10 @@ is_unwind_section_name (bfd *abfd ATTRIB
    flag.  */
 
 static bfd_boolean
-elf64_ia64_section_flags (flagword *flags,
-			  const Elf_Internal_Shdr *hdr)
+elf64_ia64_section_flags (const Elf_Internal_Shdr *hdr)
 {
   if (hdr->sh_flags & SHF_IA_64_SHORT)
-    *flags |= SEC_SMALL_DATA;
+    hdr->bfd_section->flags |= SEC_SMALL_DATA;
 
   return TRUE;
 }
@@ -884,6 +882,7 @@ elf64_ia64_add_symbol_hook (bfd *abfd,
 	  scomm = bfd_make_section_with_flags (abfd, ".scommon",
 					       (SEC_ALLOC
 						| SEC_IS_COMMON
+						| SEC_SMALL_DATA
 						| SEC_LINKER_CREATED));
 	  if (scomm == NULL)
 	    return FALSE;
@@ -1000,14 +999,11 @@ elf64_ia64_global_dyn_info_free (void **
   if (entry->root.root.type == bfd_link_hash_warning)
     entry = (struct elf64_ia64_link_hash_entry *) entry->root.root.u.i.link;
 
-  if (entry->info)
-    {
-      free (entry->info);
-      entry->info = NULL;
-      entry->count = 0;
-      entry->sorted_count = 0;
-      entry->size = 0;
-    }
+  free (entry->info);
+  entry->info = NULL;
+  entry->count = 0;
+  entry->sorted_count = 0;
+  entry->size = 0;
 
   return TRUE;
 }
@@ -1021,14 +1017,11 @@ elf64_ia64_local_dyn_info_free (void **s
   struct elf64_ia64_local_hash_entry *entry
     = (struct elf64_ia64_local_hash_entry *) *slot;
 
-  if (entry->info)
-    {
-      free (entry->info);
-      entry->info = NULL;
-      entry->count = 0;
-      entry->sorted_count = 0;
-      entry->size = 0;
-    }
+  free (entry->info);
+  entry->info = NULL;
+  entry->count = 0;
+  entry->sorted_count = 0;
+  entry->size = 0;
 
   return TRUE;
 }
@@ -1674,7 +1667,7 @@ get_dyn_sym_info (struct elf64_ia64_link
       *size_p = size;
       *info_p = info;
 
-has_space:
+    has_space:
       /* Append the new one to the array.  */
       dyn_i = info + count;
       memset (dyn_i, 0, sizeof (*dyn_i));
@@ -2845,7 +2838,7 @@ elf64_ia64_size_dynamic_sections (bfd *o
 					   elf_ia64_vms_ident (abfd)))
 	    return FALSE;
 
-	  soname = vms_get_module_name (abfd->filename, TRUE);
+	  soname = vms_get_module_name (bfd_get_filename (abfd), TRUE);
 	  if (soname == NULL)
 	    return FALSE;
 	  strindex = dynstrsec->size;
@@ -3284,7 +3277,7 @@ elf64_ia64_choose_gp (bfd *abfd, struct
     {
       if (max_short_vma - min_short_vma >= 0x400000)
 	{
-overflow:
+	overflow:
 	  _bfd_error_handler
 	    /* xgettext:c-format */
 	    (_("%pB: short data segment overflowed (%#" PRIx64 " >= 0x400000)"),
@@ -4234,6 +4227,10 @@ elf64_ia64_merge_private_bfd_data (bfd *
   flagword in_flags;
   bfd_boolean ok = TRUE;
 
+  /* FIXME: What should be checked when linking shared libraries?  */
+  if ((ibfd->flags & DYNAMIC) != 0)
+    return TRUE;
+
   /* Don't even pretend to support mixed-format linking.  */
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
@@ -4374,7 +4371,7 @@ elf64_ia64_object_p (bfd *abfd)
   flagword flags;
   const char *name;
   char *unwi_name, *unw_name;
-  bfd_size_type amt;
+  size_t amt;
 
   if (abfd->flags & DYNAMIC)
     return TRUE;
@@ -4848,7 +4845,7 @@ elf64_vms_link_add_object_symbols (bfd *
       /* Extract IDENT.  */
       if (!bfd_malloc_and_get_section (abfd, s, &dynbuf))
 	{
-error_free_dyn:
+	error_free_dyn:
 	  free (dynbuf);
 	  goto error_return;
 	}
@@ -5239,11 +5236,8 @@ error_free_dyn:
 	}
     }
 
-  if (isymbuf != NULL)
-    {
-      free (isymbuf);
-      isymbuf = NULL;
-    }
+  free (isymbuf);
+  isymbuf = NULL;
 
   /* If this object is the same format as the output object, and it is
      not a shared library, then let the backend look through the
@@ -5300,8 +5294,7 @@ error_free_dyn:
 
  error_free_vers:
  error_free_sym:
-  if (isymbuf != NULL)
-    free (isymbuf);
+  free (isymbuf);
  error_return:
   return FALSE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-mips.c ./bfd/elf64-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-mips.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-mips.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* MIPS-specific support for 64-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
    Ian Lance Taylor, Cygnus Support
    Linker support added by Mark Mitchell, CodeSourcery, LLC.
    <mark@codesourcery.com>
@@ -4010,15 +4010,12 @@ mips_elf64_slurp_one_reloc_table (bfd *a
   int entsize;
   bfd_boolean rela_p;
 
-  allocated = bfd_malloc (rel_hdr->sh_size);
+  if (bfd_seek (abfd, rel_hdr->sh_offset, SEEK_SET) != 0)
+    return FALSE;
+  allocated = _bfd_malloc_and_read (abfd, rel_hdr->sh_size, rel_hdr->sh_size);
   if (allocated == NULL)
     return FALSE;
 
-  if (bfd_seek (abfd, rel_hdr->sh_offset, SEEK_SET) != 0
-      || (bfd_bread (allocated, rel_hdr->sh_size, abfd)
-	  != rel_hdr->sh_size))
-    goto error_return;
-
   native_relocs = allocated;
 
   entsize = rel_hdr->sh_entsize;
@@ -4165,14 +4162,11 @@ mips_elf64_slurp_one_reloc_table (bfd *a
 	}
     }
 
-  if (allocated != NULL)
-    free (allocated);
-
+  free (allocated);
   return TRUE;
 
  error_return:
-  if (allocated != NULL)
-    free (allocated);
+  free (allocated);
   return FALSE;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-mmix.c ./bfd/elf64-mmix.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-mmix.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-mmix.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* MMIX-specific support for 64-bit ELF.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
    Contributed by Hans-Peter Nilsson <hp@bitrange.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -831,7 +831,7 @@ mmix_elf_new_section_hook (bfd *abfd, as
   if (!sec->used_by_bfd)
     {
       struct _mmix_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+      size_t amt = sizeof (*sdata);
 
       sdata = bfd_zalloc (abfd, amt);
       if (sdata == NULL)
@@ -2538,6 +2538,7 @@ mmix_elf_relax_section (bfd *abfd,
      spot a missing actual initialization.  */
   size_t bpono = (size_t) -1;
   size_t pjsno = 0;
+  size_t pjsno_undefs = 0;
   Elf_Internal_Sym *isymbuf = NULL;
   bfd_size_type size = sec->rawsize ? sec->rawsize : sec->size;
 
@@ -2703,6 +2704,11 @@ mmix_elf_relax_section (bfd *abfd,
 		  gregdata->n_remaining_bpo_relocs_this_relaxation_round--;
 		  bpono++;
 		}
+
+	      /* Similarly, keep accounting consistent for PUSHJ
+		 referring to an undefined symbol.  */
+	      if (ELF64_R_TYPE (irel->r_info) == R_MMIX_PUSHJ_STUBBABLE)
+		pjsno_undefs++;
 	      continue;
 	    }
 	}
@@ -2842,10 +2848,10 @@ mmix_elf_relax_section (bfd *abfd,
 	}
     }
 
-  BFD_ASSERT(pjsno == mmix_elf_section_data (sec)->pjs.n_pushj_relocs);
+  BFD_ASSERT(pjsno + pjsno_undefs
+	     == mmix_elf_section_data (sec)->pjs.n_pushj_relocs);
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   if (sec->size < size + mmix_elf_section_data (sec)->pjs.stubs_size_sum)
@@ -2860,10 +2866,9 @@ mmix_elf_relax_section (bfd *abfd,
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL && (unsigned char *) isymbuf != symtab_hdr->contents)
+  if ((unsigned char *) isymbuf != symtab_hdr->contents)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-nfp.c ./bfd/elf64-nfp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-nfp.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-nfp.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* NFP-specific support for 64-bit ELF
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
    Contributed by Francois H. Theron <francois.theron@netronome.com>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-ppc.c ./bfd/elf64-ppc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-ppc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-ppc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* PowerPC64-specific support for 64-bit ELF.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Written by Linus Nordberg, Swox AB <info@swox.com>,
    based on elf32-ppc.c by Ian Lance Taylor.
    Largely rewritten by Alan Modra.
@@ -125,6 +125,7 @@ static bfd_vma opd_entry_value
 #define elf_backend_finish_dynamic_sections   ppc64_elf_finish_dynamic_sections
 #define elf_backend_link_output_symbol_hook   ppc64_elf_output_symbol_hook
 #define elf_backend_special_sections	      ppc64_elf_special_sections
+#define elf_backend_section_flags	      ppc64_elf_section_flags
 #define elf_backend_merge_symbol_attribute    ppc64_elf_merge_symbol_attribute
 #define elf_backend_merge_symbol	      ppc64_elf_merge_symbol
 #define elf_backend_get_reloc_section	      bfd_get_section_by_name
@@ -929,16 +930,16 @@ static reloc_howto_type ppc64_elf_howto_
   HOW (R_PPC64_DTPREL34, 4, 34, 0x3ffff0000ffffULL, 0, FALSE, signed,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_GOT_TLSGD34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
+  HOW (R_PPC64_GOT_TLSGD_PCREL34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_GOT_TLSLD34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
+  HOW (R_PPC64_GOT_TLSLD_PCREL34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_GOT_TPREL34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
+  HOW (R_PPC64_GOT_TPREL_PCREL34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_GOT_DTPREL34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
+  HOW (R_PPC64_GOT_DTPREL_PCREL34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
        ppc64_elf_unhandled_reloc),
 
   HOW (R_PPC64_ADDR16_HIGHER34, 1, 16, 0xffff, 34, FALSE, dont,
@@ -998,8 +999,7 @@ ppc_howto_init (void)
 }
 
 static reloc_howto_type *
-ppc64_elf_reloc_type_lookup (bfd *abfd,
-			     bfd_reloc_code_real_type code)
+ppc64_elf_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
 {
   enum elf_ppc64_reloc_type r = R_PPC64_NONE;
 
@@ -1279,13 +1279,13 @@ ppc64_elf_reloc_type_lookup (bfd *abfd,
       break;
     case BFD_RELOC_PPC64_DTPREL34:		r = R_PPC64_DTPREL34;
       break;
-    case BFD_RELOC_PPC64_GOT_TLSGD34:		r = R_PPC64_GOT_TLSGD34;
+    case BFD_RELOC_PPC64_GOT_TLSGD_PCREL34:	r = R_PPC64_GOT_TLSGD_PCREL34;
       break;
-    case BFD_RELOC_PPC64_GOT_TLSLD34:		r = R_PPC64_GOT_TLSLD34;
+    case BFD_RELOC_PPC64_GOT_TLSLD_PCREL34:	r = R_PPC64_GOT_TLSLD_PCREL34;
       break;
-    case BFD_RELOC_PPC64_GOT_TPREL34:		r = R_PPC64_GOT_TPREL34;
+    case BFD_RELOC_PPC64_GOT_TPREL_PCREL34:	r = R_PPC64_GOT_TPREL_PCREL34;
       break;
-    case BFD_RELOC_PPC64_GOT_DTPREL34:		r = R_PPC64_GOT_DTPREL34;
+    case BFD_RELOC_PPC64_GOT_DTPREL_PCREL34:	r = R_PPC64_GOT_DTPREL_PCREL34;
       break;
     case BFD_RELOC_PPC64_ADDR16_HIGHER34:	r = R_PPC64_ADDR16_HIGHER34;
       break;
@@ -1317,16 +1317,33 @@ ppc64_elf_reloc_type_lookup (bfd *abfd,
 };
 
 static reloc_howto_type *
-ppc64_elf_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-			     const char *r_name)
+ppc64_elf_reloc_name_lookup (bfd *abfd, const char *r_name)
 {
   unsigned int i;
+  static char *compat_map[][2] = {
+    { "R_PPC64_GOT_TLSGD34", "R_PPC64_GOT_TLSGD_PCREL34" },
+    { "R_PPC64_GOT_TLSLD34", "R_PPC64_GOT_TLSLD_PCREL34" },
+    { "R_PPC64_GOT_TPREL34", "R_PPC64_GOT_TPREL_PCREL34" },
+    { "R_PPC64_GOT_DTPREL34", "R_PPC64_GOT_DTPREL_PCREL34" }
+  };
 
   for (i = 0; i < ARRAY_SIZE (ppc64_elf_howto_raw); i++)
     if (ppc64_elf_howto_raw[i].name != NULL
 	&& strcasecmp (ppc64_elf_howto_raw[i].name, r_name) == 0)
       return &ppc64_elf_howto_raw[i];
 
+  /* Handle old names of relocations in case they were used by
+     .reloc directives.
+     FIXME: Remove this soon.  Mapping the reloc names is very likely
+     completely unnecessary.  */
+  for (i = 0; i < ARRAY_SIZE (compat_map); i++)
+    if (strcasecmp (compat_map[i][0], r_name) == 0)
+      {
+	_bfd_error_handler (_("warning: %s should be used rather than %s"),
+			    compat_map[i][1], compat_map[i][0]);
+	return ppc64_elf_reloc_name_lookup (abfd, compat_map[i][1]);
+      }
+
   return NULL;
 }
 
@@ -2000,7 +2017,7 @@ ppc64_elf_new_section_hook (bfd *abfd, a
   if (!sec->used_by_bfd)
     {
       struct _ppc64_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+      size_t amt = sizeof (*sdata);
 
       sdata = bfd_zalloc (abfd, amt);
       if (sdata == NULL)
@@ -2011,6 +2028,18 @@ ppc64_elf_new_section_hook (bfd *abfd, a
   return _bfd_elf_new_section_hook (abfd, sec);
 }
 
+static bfd_boolean
+ppc64_elf_section_flags (const Elf_Internal_Shdr *hdr)
+{
+  const char *name = hdr->bfd_section->name;
+
+  if (strncmp (name, ".sbss", 5) == 0
+      || strncmp (name, ".sdata", 6) == 0)
+    hdr->bfd_section->flags |= SEC_SMALL_DATA;
+
+  return TRUE;
+}
+
 static struct _opd_sec_data *
 get_opd_info (asection * sec)
 {
@@ -2120,9 +2149,10 @@ compare_symbols (const void *ap, const v
 /* Search SYMS for a symbol of the given VALUE.  */
 
 static asymbol *
-sym_exists_at (asymbol **syms, long lo, long hi, unsigned int id, bfd_vma value)
+sym_exists_at (asymbol **syms, size_t lo, size_t hi, unsigned int id,
+	       bfd_vma value)
 {
-  long mid;
+  size_t mid;
 
   if (id == (unsigned) -1)
     {
@@ -2408,8 +2438,7 @@ ppc64_elf_get_synthetic_symtab (bfd *abf
 	free_contents_and_exit_err:
 	  count = -1;
 	free_contents_and_exit:
-	  if (contents)
-	    free (contents);
+	  free (contents);
 	  goto done;
 	}
 
@@ -2787,20 +2816,20 @@ must_be_dyn_reloc (struct bfd_link_info
 }
 
 /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
-   copying dynamic variables from a shared lib into an app's dynbss
+   copying dynamic variables from a shared lib into an app's .dynbss
    section, and instead use a dynamic relocation to point into the
-   shared lib.  With code that gcc generates, it's vital that this be
-   enabled;  In the PowerPC64 ABI, the address of a function is actually
-   the address of a function descriptor, which resides in the .opd
-   section.  gcc uses the descriptor directly rather than going via the
-   GOT as some other ABI's do, which means that initialized function
-   pointers must reference the descriptor.  Thus, a function pointer
-   initialized to the address of a function in a shared library will
-   either require a copy reloc, or a dynamic reloc.  Using a copy reloc
-   redefines the function descriptor symbol to point to the copy.  This
-   presents a problem as a plt entry for that function is also
-   initialized from the function descriptor symbol and the copy reloc
-   may not be initialized first.  */
+   shared lib.  With code that gcc generates it is vital that this be
+   enabled;  In the PowerPC64 ELFv1 ABI the address of a function is
+   actually the address of a function descriptor which resides in the
+   .opd section.  gcc uses the descriptor directly rather than going
+   via the GOT as some other ABIs do, which means that initialized
+   function pointers reference the descriptor.  Thus, a function
+   pointer initialized to the address of a function in a shared
+   library will either require a .dynbss copy and a copy reloc, or a
+   dynamic reloc.  Using a .dynbss copy redefines the function
+   descriptor symbol to point to the copy.  This presents a problem as
+   a PLT entry for that function is also initialized from the function
+   descriptor symbol and the copy may not be initialized first.  */
 #define ELIMINATE_COPY_RELOCS 1
 
 /* Section name for stubs is the associated section name plus this
@@ -2816,8 +2845,8 @@ must_be_dyn_reloc (struct bfd_link_info
    ppc_stub_plt_branch:
    Similar to the above, but a 24 bit branch in the stub section won't
    reach its destination.
-   .	addis	%r11,%r2,xxx@toc@ha
-   .	ld	%r12,xxx@toc@l(%r11)
+   .	addis	%r12,%r2,xxx@toc@ha
+   .	ld	%r12,xxx@toc@l(%r12)
    .	mtctr	%r12
    .	bctr
 
@@ -2843,8 +2872,8 @@ must_be_dyn_reloc (struct bfd_link_info
 
    A ppc_stub_plt_branch with an r2 offset looks like:
    .	std	%r2,40(%r1)
-   .	addis	%r11,%r2,xxx@toc@ha
-   .	ld	%r12,xxx@toc@l(%r11)
+   .	addis	%r12,%r2,xxx@toc@ha
+   .	ld	%r12,xxx@toc@l(%r12)
    .	addis	%r2,%r2,off@ha
    .	addi	%r2,%r2,off@l
    .	mtctr	%r12
@@ -2900,7 +2929,7 @@ must_be_dyn_reloc (struct bfd_link_info
    .	mtctr	%r12
    .	bctr
 
-   There are also ELFv1 powerxx variants of these stubs.
+   There are also ELFv1 power10 variants of these stubs.
    ppc_stub_long_branch_notoc:
    .	pla	%r12,dest@pcrel
    .	b	dest
@@ -2923,7 +2952,7 @@ must_be_dyn_reloc (struct bfd_link_info
 
    In cases where the high instructions would add zero, they are
    omitted and following instructions modified in some cases.
-   For example, a powerxx ppc_stub_plt_call_notoc might simplify down
+   For example, a power10 ppc_stub_plt_call_notoc might simplify down
    to
    .	pld	%r12,xxx@pcrel
    .	mtctr	%r12
@@ -3062,9 +3091,6 @@ struct ppc_link_hash_entry
     struct ppc_link_hash_entry *next_dot_sym;
   } u;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   /* Link between function code and descriptor symbols.  */
   struct ppc_link_hash_entry *oh;
 
@@ -3111,6 +3137,12 @@ struct ppc_link_hash_entry
 #define NON_GOT        256	/* local symbol plt, not stored.  */
 };
 
+static inline struct ppc_link_hash_entry *
+ppc_elf_hash_entry (struct elf_link_hash_entry *ent)
+{
+  return (struct ppc_link_hash_entry *) ent;
+}
+
 /* ppc64 ELF linker hash table.  */
 
 struct ppc_link_hash_table
@@ -3173,6 +3205,9 @@ struct ppc_link_hash_table
   /* Shortcut to .__tls_get_addr and __tls_get_addr.  */
   struct ppc_link_hash_entry *tls_get_addr;
   struct ppc_link_hash_entry *tls_get_addr_fd;
+  struct ppc_link_hash_entry *tga_desc;
+  struct ppc_link_hash_entry *tga_desc_fd;
+  struct map_stub *tga_group;
 
   /* The size of reliplt used by got entry relocs.  */
   bfd_size_type got_reli_size;
@@ -3204,25 +3239,17 @@ struct ppc_link_hash_table
   /* Whether func_desc_adjust needs to be run over symbols.  */
   unsigned int need_func_desc_adj:1;
 
-  /* Whether there exist local gnu indirect function resolvers,
-     referenced by dynamic relocations.  */
-  unsigned int local_ifunc_resolver:1;
-  unsigned int maybe_local_ifunc_resolver:1;
-
   /* Whether plt calls for ELFv2 localentry:0 funcs have been optimized.  */
   unsigned int has_plt_localentry0:1;
 
   /* Whether calls are made via the PLT from NOTOC functions.  */
   unsigned int notoc_plt:1;
 
-  /* Whether to use powerxx instructions in linkage stubs.  */
-  unsigned int powerxx_stubs:1;
+  /* Whether any code linked seems to be Power10.  */
+  unsigned int has_power10_relocs:1;
 
   /* Incremented every time we size stubs.  */
   unsigned int stub_iteration;
-
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
 };
 
 /* Rename some of the generic section flags to better document how they
@@ -3249,8 +3276,9 @@ struct ppc_link_hash_table
 /* Get the ppc64 ELF linker hash table from a link_info structure.  */
 
 #define ppc_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == PPC64_ELF_DATA ? ((struct ppc_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == PPC64_ELF_DATA)	\
+   ? (struct ppc_link_hash_table *) (p)->hash : NULL)
 
 #define ppc_stub_hash_lookup(table, string, create, copy) \
   ((struct ppc_stub_hash_entry *) \
@@ -3425,7 +3453,7 @@ static struct bfd_link_hash_table *
 ppc64_elf_link_hash_table_create (bfd *abfd)
 {
   struct ppc_link_hash_table *htab;
-  bfd_size_type amt = sizeof (struct ppc_link_hash_table);
+  size_t amt = sizeof (struct ppc_link_hash_table);
 
   htab = bfd_zmalloc (amt);
   if (htab == NULL)
@@ -3652,6 +3680,37 @@ ppc_stub_name (const asection *input_sec
   return stub_name;
 }
 
+/* If mixing power10 with non-power10 code and --power10-stubs is not
+   specified (or is auto) then calls using @notoc relocations that
+   need a stub will utilize power10 instructions in the stub, and
+   calls without @notoc relocations will not use power10 instructions.
+   The two classes of stubs are stored in separate stub_hash_table
+   entries having the same key string.  The two entries will always be
+   adjacent on entry->root.next chain, even if hash table resizing
+   occurs.  This function selects the correct entry to use.  */
+
+static struct ppc_stub_hash_entry *
+select_alt_stub (struct ppc_stub_hash_entry *entry, bfd_boolean notoc)
+{
+  bfd_boolean have_notoc;
+
+  have_notoc = (entry->stub_type == ppc_stub_plt_call_notoc
+		|| entry->stub_type == ppc_stub_plt_branch_notoc
+		|| entry->stub_type == ppc_stub_long_branch_notoc);
+
+  if (have_notoc != notoc)
+    {
+      const char *stub_name = entry->root.string;
+
+      entry = (struct ppc_stub_hash_entry *) entry->root.next;
+      if (entry != NULL
+	  && entry->root.string != stub_name)
+	entry = NULL;
+    }
+
+  return entry;
+}
+
 /* Look up an entry in the stub hash.  Stub entries are cached because
    creating the stub name takes a bit of time.  */
 
@@ -3696,6 +3755,13 @@ ppc_get_stub_entry (const asection *inpu
       free (stub_name);
     }
 
+  if (stub_entry != NULL && htab->params->power10_stubs == -1)
+    {
+      bfd_boolean notoc = ELF64_R_TYPE (rel->r_info) == R_PPC64_REL24_NOTOC;
+
+      stub_entry = select_alt_stub (stub_entry, notoc);
+    }
+
   return stub_entry;
 }
 
@@ -3810,7 +3876,7 @@ elf_follow_link (struct elf_link_hash_en
 static inline struct ppc_link_hash_entry *
 ppc_follow_link (struct ppc_link_hash_entry *h)
 {
-  return (struct ppc_link_hash_entry *) follow_link (&h->elf.root);
+  return ppc_elf_hash_entry (elf_follow_link (&h->elf));
 }
 
 /* Merge PLT info on FROM with that on TO.  */
@@ -3857,8 +3923,8 @@ ppc64_elf_copy_indirect_symbol (struct b
 {
   struct ppc_link_hash_entry *edir, *eind;
 
-  edir = (struct ppc_link_hash_entry *) dir;
-  eind = (struct ppc_link_hash_entry *) ind;
+  edir = ppc_elf_hash_entry (dir);
+  eind = ppc_elf_hash_entry (ind);
 
   edir->is_func |= eind->is_func;
   edir->is_func_descriptor |= eind->is_func_descriptor;
@@ -3884,20 +3950,20 @@ ppc64_elf_copy_indirect_symbol (struct b
     return;
 
   /* Copy over any dynamic relocs we may have on the indirect sym.  */
-  if (eind->dyn_relocs != NULL)
+  if (ind->dyn_relocs != NULL)
     {
-      if (edir->dyn_relocs != NULL)
+      if (dir->dyn_relocs != NULL)
 	{
 	  struct elf_dyn_relocs **pp;
 	  struct elf_dyn_relocs *p;
 
 	  /* Add reloc counts against the indirect sym to the direct sym
 	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &ind->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      struct elf_dyn_relocs *q;
 
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
+	      for (q = dir->dyn_relocs; q != NULL; q = q->next)
 		if (q->sec == p->sec)
 		  {
 		    q->pc_count += p->pc_count;
@@ -3908,11 +3974,11 @@ ppc64_elf_copy_indirect_symbol (struct b
 	      if (q == NULL)
 		pp = &p->next;
 	    }
-	  *pp = edir->dyn_relocs;
+	  *pp = dir->dyn_relocs;
 	}
 
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
+      dir->dyn_relocs = ind->dyn_relocs;
+      ind->dyn_relocs = NULL;
     }
 
   /* Copy over got entries that we may have already seen to the
@@ -3974,8 +4040,8 @@ lookup_fdh (struct ppc_link_hash_entry *
     {
       const char *fd_name = fh->elf.root.root.string + 1;
 
-      fdh = (struct ppc_link_hash_entry *)
-	elf_link_hash_lookup (&htab->elf, fd_name, FALSE, FALSE, FALSE);
+      fdh = ppc_elf_hash_entry (elf_link_hash_lookup (&htab->elf, fd_name,
+						      FALSE, FALSE, FALSE));
       if (fdh == NULL)
 	return fdh;
 
@@ -4103,9 +4169,9 @@ ppc64_elf_merge_symbol (struct elf_link_
 			bfd *oldbfd ATTRIBUTE_UNUSED,
 			const asection *oldsec ATTRIBUTE_UNUSED)
 {
-  ((struct ppc_link_hash_entry *) h)->fake = 0;
+  ppc_elf_hash_entry (h)->fake = 0;
   if ((STO_PPC64_LOCAL_MASK & isym->st_other) != 0)
-    ((struct ppc_link_hash_entry *) h)->non_zero_localentry = 1;
+    ppc_elf_hash_entry (h)->non_zero_localentry = 1;
   return TRUE;
 }
 
@@ -4127,7 +4193,7 @@ ppc64_elf_archive_symbol_lookup (bfd *ab
   if (h != NULL
       /* Don't return this sym if it is a fake function descriptor
 	 created by add_symbol_adjust.  */
-      && !((struct ppc_link_hash_entry *) h)->fake)
+      && !ppc_elf_hash_entry (h)->fake)
     return h;
 
   if (name[0] == '.')
@@ -4141,6 +4207,11 @@ ppc64_elf_archive_symbol_lookup (bfd *ab
   memcpy (dot_name + 1, name, len + 1);
   h = _bfd_elf_archive_symbol_lookup (abfd, info, dot_name);
   bfd_release (abfd, dot_name);
+  if (h != NULL)
+    return h;
+
+  if (strcmp (name, "__tls_get_addr_opt") == 0)
+    h = _bfd_elf_archive_symbol_lookup (abfd, info, "__tls_get_addr_desc");
   return h;
 }
 
@@ -4310,7 +4381,8 @@ ppc64_elf_before_check_relocs (bfd *ibfd
 	      Elf_Internal_Sym *isym;
 	      asection *s;
 
-	      isym = bfd_sym_from_r_symndx (&htab->sym_cache, ibfd, r_symndx);
+	      isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, ibfd,
+					    r_symndx);
 	      if (isym == NULL)
 		{
 		  if (elf_section_data (opd)->relocs != relocs)
@@ -4416,7 +4488,7 @@ update_local_sym_info (bfd *abfd, Elf_In
 	  break;
       if (ent == NULL)
 	{
-	  bfd_size_type amt = sizeof (*ent);
+	  size_t amt = sizeof (*ent);
 	  ent = bfd_alloc (abfd, amt);
 	  if (ent == NULL)
 	    return FALSE;
@@ -4448,7 +4520,7 @@ update_plt_info (bfd *abfd, struct plt_e
       break;
   if (ent == NULL)
     {
-      bfd_size_type amt = sizeof (*ent);
+      size_t amt = sizeof (*ent);
       ent = bfd_alloc (abfd, amt);
       if (ent == NULL)
 	return FALSE;
@@ -4512,15 +4584,6 @@ ppc64_elf_check_relocs (bfd *abfd, struc
   if (bfd_link_relocatable (info))
     return TRUE;
 
-  /* Don't do anything special with non-loaded, non-alloced sections.
-     In particular, any relocs in such sections should not affect GOT
-     and PLT reference counting (ie. we don't allow them to create GOT
-     or PLT entries), there's no possibility or desire to optimize TLS
-     relocs, and there's not much point in propagating relocs to shared
-     libs that the dynamic linker won't relocate.  */
-  if ((sec->flags & SEC_ALLOC) == 0)
-    return TRUE;
-
   BFD_ASSERT (is_ppc64_elf (abfd));
 
   htab = ppc_hash_table (info);
@@ -4569,14 +4632,14 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	case R_PPC64_DTPREL34:
 	case R_PPC64_PCREL34:
 	case R_PPC64_GOT_PCREL34:
-	case R_PPC64_GOT_TLSGD34:
-	case R_PPC64_GOT_TLSLD34:
-	case R_PPC64_GOT_TPREL34:
-	case R_PPC64_GOT_DTPREL34:
+	case R_PPC64_GOT_TLSGD_PCREL34:
+	case R_PPC64_GOT_TLSLD_PCREL34:
+	case R_PPC64_GOT_TPREL_PCREL34:
+	case R_PPC64_GOT_DTPREL_PCREL34:
 	case R_PPC64_PLT_PCREL34:
 	case R_PPC64_PLT_PCREL34_NOTOC:
 	case R_PPC64_PCREL28:
-	  htab->powerxx_stubs = 1;
+	  htab->has_power10_relocs = 1;
 	  break;
 	default:
 	  break;
@@ -4620,7 +4683,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	}
       else
 	{
-	  Elf_Internal_Sym *isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	  Elf_Internal_Sym *isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 							  abfd, r_symndx);
 	  if (isym == NULL)
 	    return FALSE;
@@ -4643,7 +4706,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	  /* These special tls relocs tie a call to __tls_get_addr with
 	     its parameter symbol.  */
 	  if (h != NULL)
-	    ((struct ppc_link_hash_entry *) h)->tls_mask |= TLS_TLS | TLS_MARK;
+	    ppc_elf_hash_entry (h)->tls_mask |= TLS_TLS | TLS_MARK;
 	  else
 	    if (!update_local_sym_info (abfd, symtab_hdr, r_symndx,
 					rel->r_addend,
@@ -4656,7 +4719,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	case R_PPC64_GOT_TLSLD16_LO:
 	case R_PPC64_GOT_TLSLD16_HI:
 	case R_PPC64_GOT_TLSLD16_HA:
-	case R_PPC64_GOT_TLSLD34:
+	case R_PPC64_GOT_TLSLD_PCREL34:
 	  tls_type = TLS_TLS | TLS_LD;
 	  goto dogottls;
 
@@ -4664,7 +4727,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	case R_PPC64_GOT_TLSGD16_LO:
 	case R_PPC64_GOT_TLSGD16_HI:
 	case R_PPC64_GOT_TLSGD16_HA:
-	case R_PPC64_GOT_TLSGD34:
+	case R_PPC64_GOT_TLSGD_PCREL34:
 	  tls_type = TLS_TLS | TLS_GD;
 	  goto dogottls;
 
@@ -4672,7 +4735,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	case R_PPC64_GOT_TPREL16_LO_DS:
 	case R_PPC64_GOT_TPREL16_HI:
 	case R_PPC64_GOT_TPREL16_HA:
-	case R_PPC64_GOT_TPREL34:
+	case R_PPC64_GOT_TPREL_PCREL34:
 	  if (bfd_link_dll (info))
 	    info->flags |= DF_STATIC_TLS;
 	  tls_type = TLS_TLS | TLS_TPREL;
@@ -4682,7 +4745,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	case R_PPC64_GOT_DTPREL16_LO_DS:
 	case R_PPC64_GOT_DTPREL16_HI:
 	case R_PPC64_GOT_DTPREL16_HA:
-	case R_PPC64_GOT_DTPREL34:
+	case R_PPC64_GOT_DTPREL_PCREL34:
 	  tls_type = TLS_TLS | TLS_DTPREL;
 	dogottls:
 	  sec->has_tls_reloc = 1;
@@ -4718,7 +4781,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	      struct ppc_link_hash_entry *eh;
 	      struct got_entry *ent;
 
-	      eh = (struct ppc_link_hash_entry *) h;
+	      eh = ppc_elf_hash_entry (h);
 	      for (ent = eh->elf.got.glist; ent != NULL; ent = ent->next)
 		if (ent->addend == rel->r_addend
 		    && ent->owner == abfd
@@ -4726,7 +4789,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 		  break;
 	      if (ent == NULL)
 		{
-		  bfd_size_type amt = sizeof (*ent);
+		  size_t amt = sizeof (*ent);
 		  ent = bfd_alloc (abfd, amt);
 		  if (ent == NULL)
 		    return FALSE;
@@ -4746,14 +4809,6 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	    if (!update_local_sym_info (abfd, symtab_hdr, r_symndx,
 					rel->r_addend, tls_type))
 	      return FALSE;
-
-	  /* We may also need a plt entry if the symbol turns out to be
-	     an ifunc.  */
-	  if (h != NULL && !bfd_link_pic (info) && abiversion (abfd) != 1)
-	    {
-	      if (!update_plt_info (abfd, &h->plt.plist, rel->r_addend))
-		return FALSE;
-	    }
 	  break;
 
 	case R_PPC64_PLT16_HA:
@@ -4771,8 +4826,8 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	      h->needs_plt = 1;
 	      if (h->root.root.string[0] == '.'
 		  && h->root.root.string[1] != '\0')
-		((struct ppc_link_hash_entry *) h)->is_func = 1;
-	      ((struct ppc_link_hash_entry *) h)->tls_mask |= PLT_KEEP;
+		ppc_elf_hash_entry (h)->is_func = 1;
+	      ppc_elf_hash_entry (h)->tls_mask |= PLT_KEEP;
 	      plt_list = &h->plt.plist;
 	    }
 	  if (plt_list == NULL)
@@ -4899,7 +4954,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	      {
 		Elf_Internal_Sym *isym;
 
-		isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 					      abfd, r_symndx);
 		if (isym == NULL)
 		  return FALSE;
@@ -4926,7 +4981,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	      h->needs_plt = 1;
 	      if (h->root.root.string[0] == '.'
 		  && h->root.root.string[1] != '\0')
-		((struct ppc_link_hash_entry *) h)->is_func = 1;
+		ppc_elf_hash_entry (h)->is_func = 1;
 
 	      if (h == tga || h == dottga)
 		{
@@ -4984,11 +5039,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	dotlstoc:
 	  sec->has_tls_reloc = 1;
 	  if (h != NULL)
-	    {
-	      struct ppc_link_hash_entry *eh;
-	      eh = (struct ppc_link_hash_entry *) h;
-	      eh->tls_mask |= tls_type & 0xff;
-	    }
+	    ppc_elf_hash_entry (h)->tls_mask |= tls_type & 0xff;
 	  else
 	    if (!update_local_sym_info (abfd, symtab_hdr, r_symndx,
 					rel->r_addend, tls_type))
@@ -5023,19 +5074,21 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	    ppc64_sec->u.toc.symndx[rel->r_offset / 8 + 1] = -2;
 	  goto dodyn;
 
-	case R_PPC64_TPREL16:
-	case R_PPC64_TPREL16_LO:
 	case R_PPC64_TPREL16_HI:
 	case R_PPC64_TPREL16_HA:
-	case R_PPC64_TPREL16_DS:
-	case R_PPC64_TPREL16_LO_DS:
 	case R_PPC64_TPREL16_HIGH:
 	case R_PPC64_TPREL16_HIGHA:
 	case R_PPC64_TPREL16_HIGHER:
 	case R_PPC64_TPREL16_HIGHERA:
 	case R_PPC64_TPREL16_HIGHEST:
 	case R_PPC64_TPREL16_HIGHESTA:
+	  sec->has_tls_reloc = 1;
+	  /* Fall through.  */
 	case R_PPC64_TPREL34:
+	case R_PPC64_TPREL16:
+	case R_PPC64_TPREL16_DS:
+	case R_PPC64_TPREL16_LO:
+	case R_PPC64_TPREL16_LO_DS:
 	  if (bfd_link_dll (info))
 	    info->flags |= DF_STATIC_TLS;
 	  goto dodyn;
@@ -5046,7 +5099,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	      && ELF64_R_TYPE ((rel + 1)->r_info) == R_PPC64_TOC)
 	    {
 	      if (h != NULL)
-		((struct ppc_link_hash_entry *) h)->is_func = 1;
+		ppc_elf_hash_entry (h)->is_func = 1;
 	    }
 	  /* Fall through.  */
 
@@ -5150,7 +5203,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 		  struct elf_dyn_relocs *p;
 		  struct elf_dyn_relocs **head;
 
-		  head = &((struct ppc_link_hash_entry *) h)->dyn_relocs;
+		  head = &h->dyn_relocs;
 		  p = *head;
 		  if (p == NULL || p->sec != sec)
 		    {
@@ -5179,7 +5232,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 		  void *vpp;
 		  Elf_Internal_Sym *isym;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    return FALSE;
@@ -5531,7 +5584,7 @@ is_elfv2_localentry0 (struct elf_link_ha
 	  && h->type == STT_FUNC
 	  && h->root.type == bfd_link_hash_defined
 	  && (STO_PPC64_LOCAL_MASK & h->other) == 0
-	  && !((struct ppc_link_hash_entry *) h)->non_zero_localentry
+	  && !ppc_elf_hash_entry (h)->non_zero_localentry
 	  && is_ppc64_elf (h->root.u.def.section->owner)
 	  && abiversion (h->root.u.def.section->owner) >= 2);
 }
@@ -5580,6 +5633,29 @@ defined_func_desc (struct ppc_link_hash_
   return NULL;
 }
 
+/* Given H is a symbol that satisfies is_static_defined, return the
+   value in the output file.  */
+
+static bfd_vma
+defined_sym_val (struct elf_link_hash_entry *h)
+{
+  return (h->root.u.def.section->output_section->vma
+	  + h->root.u.def.section->output_offset
+	  + h->root.u.def.value);
+}
+
+/* Return true if H matches __tls_get_addr or one of its variants.  */
+
+static bfd_boolean
+is_tls_get_addr (struct elf_link_hash_entry *h,
+		 struct ppc_link_hash_table *htab)
+{
+  return (h == (struct elf_link_hash_entry *) htab->tls_get_addr_fd
+	  || h == (struct elf_link_hash_entry *) htab->tga_desc_fd
+	  || h == (struct elf_link_hash_entry *) htab->tls_get_addr
+	  || h == (struct elf_link_hash_entry *) htab->tga_desc);
+}
+
 static bfd_boolean func_desc_adjust (struct elf_link_hash_entry *, void *);
 
 /* Garbage collect sections, after first dealing with dot-symbols.  */
@@ -5613,8 +5689,8 @@ ppc64_elf_gc_keep (struct bfd_link_info
       struct ppc_link_hash_entry *eh, *fh;
       asection *sec;
 
-      eh = (struct ppc_link_hash_entry *)
-	elf_link_hash_lookup (&htab->elf, sym->name, FALSE, FALSE, TRUE);
+      eh = ppc_elf_hash_entry (elf_link_hash_lookup (&htab->elf, sym->name,
+						     FALSE, FALSE, TRUE));
       if (eh == NULL)
 	continue;
       if (eh->elf.root.type != bfd_link_hash_defined
@@ -5646,7 +5722,7 @@ static bfd_boolean
 ppc64_elf_gc_mark_dynamic_ref (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info = (struct bfd_link_info *) inf;
-  struct ppc_link_hash_entry *eh = (struct ppc_link_hash_entry *) h;
+  struct ppc_link_hash_entry *eh = ppc_elf_hash_entry (h);
   struct ppc_link_hash_entry *fdh;
   struct bfd_elf_dynamic_list *d = info->dynamic_list;
 
@@ -5730,7 +5806,7 @@ ppc64_elf_gc_mark_hook (asection *sec,
 	    {
 	    case bfd_link_hash_defined:
 	    case bfd_link_hash_defweak:
-	      eh = (struct ppc_link_hash_entry *) h;
+	      eh = ppc_elf_hash_entry (h);
 	      fdh = defined_func_desc (eh);
 	      if (fdh != NULL)
 		{
@@ -5826,8 +5902,8 @@ sfpr_define (struct bfd_link_info *info,
 
       sym[len + 0] = i / 10 + '0';
       sym[len + 1] = i % 10 + '0';
-      h = (struct ppc_link_hash_entry *)
-	elf_link_hash_lookup (&htab->elf, sym, writing, TRUE, TRUE);
+      h = ppc_elf_hash_entry (elf_link_hash_lookup (&htab->elf, sym,
+						    writing, TRUE, TRUE));
       if (stub_sec != NULL)
 	{
 	  if (h != NULL
@@ -6054,6 +6130,84 @@ restvr_tail (bfd *abfd, bfd_byte *p, int
   return p + 4;
 }
 
+#define STDU_R1_0R1	0xf8210001
+#define ADDI_R1_R1	0x38210000
+
+/* Emit prologue of wrapper preserving regs around a call to
+   __tls_get_addr_opt.  */
+
+static bfd_byte *
+tls_get_addr_prologue (bfd *obfd, bfd_byte *p, struct ppc_link_hash_table *htab)
+{
+  unsigned int i;
+
+  bfd_put_32 (obfd, MFLR_R0, p);
+  p += 4;
+  bfd_put_32 (obfd, STD_R0_0R1 + 16, p);
+  p += 4;
+
+  if (htab->opd_abi)
+    {
+      for (i = 4; i < 12; i++)
+	{
+	  bfd_put_32 (obfd,
+		      STD_R0_0R1 | i << 21 | (-(13 - i) * 8 & 0xffff), p);
+	  p += 4;
+	}
+      bfd_put_32 (obfd, STDU_R1_0R1 | (-128 & 0xffff), p);
+      p += 4;
+    }
+  else
+    {
+      for (i = 4; i < 12; i++)
+	{
+	  bfd_put_32 (obfd,
+		      STD_R0_0R1 | i << 21 | (-(12 - i) * 8 & 0xffff), p);
+	  p += 4;
+	}
+      bfd_put_32 (obfd, STDU_R1_0R1 | (-96 & 0xffff), p);
+      p += 4;
+    }
+  return p;
+}
+
+/* Emit epilogue of wrapper preserving regs around a call to
+   __tls_get_addr_opt.  */
+
+static bfd_byte *
+tls_get_addr_epilogue (bfd *obfd, bfd_byte *p, struct ppc_link_hash_table *htab)
+{
+  unsigned int i;
+
+  if (htab->opd_abi)
+    {
+      for (i = 4; i < 12; i++)
+	{
+	  bfd_put_32 (obfd, LD_R0_0R1 | i << 21 | (128 - (13 - i) * 8), p);
+	  p += 4;
+	}
+      bfd_put_32 (obfd, ADDI_R1_R1 | 128, p);
+      p += 4;
+    }
+  else
+    {
+      for (i = 4; i < 12; i++)
+	{
+	  bfd_put_32 (obfd, LD_R0_0R1 | i << 21 | (96 - (12 - i) * 8), p);
+	  p += 4;
+	}
+      bfd_put_32 (obfd, ADDI_R1_R1 | 96, p);
+      p += 4;
+    }
+  bfd_put_32 (obfd, LD_R0_0R1 | 16, p);
+  p += 4;
+  bfd_put_32 (obfd, MTLR_R0, p);
+  p += 4;
+  bfd_put_32 (obfd, BLR, p);
+  p += 4;
+  return p;
+}
+
 /* Called via elf_link_hash_traverse to transfer dynamic linking
    information on function code symbol entries to their corresponding
    function descriptor symbol entries.  */
@@ -6067,7 +6221,7 @@ func_desc_adjust (struct elf_link_hash_e
   struct ppc_link_hash_entry *fdh;
   bfd_boolean force_local;
 
-  fh = (struct ppc_link_hash_entry *) h;
+  fh = ppc_elf_hash_entry (h);
   if (fh->elf.root.type == bfd_link_hash_indirect)
     return TRUE;
 
@@ -6245,25 +6399,6 @@ ppc64_elf_func_desc_adjust (bfd *obfd AT
   return TRUE;
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct ppc_link_hash_entry *eh;
-  struct elf_dyn_relocs *p;
-
-  eh = (struct ppc_link_hash_entry *) h;
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Return true if we have dynamic relocs against H or any of its weak
    aliases, that apply to read-only sections.  Cannot be used after
    size_dynamic_sections.  */
@@ -6271,14 +6406,12 @@ readonly_dynrelocs (struct elf_link_hash
 static bfd_boolean
 alias_readonly_dynrelocs (struct elf_link_hash_entry *h)
 {
-  struct ppc_link_hash_entry *eh;
-
-  eh = (struct ppc_link_hash_entry *) h;
+  struct ppc_link_hash_entry *eh = ppc_elf_hash_entry (h);
   do
     {
-      if (readonly_dynrelocs (&eh->elf))
+      if (_bfd_elf_readonly_dynrelocs (&eh->elf))
 	return TRUE;
-      eh = (struct ppc_link_hash_entry *) eh->elf.u.alias;
+      eh = ppc_elf_hash_entry (eh->elf.u.alias);
     }
   while (eh != NULL && &eh->elf != h);
 
@@ -6292,7 +6425,7 @@ pc_dynrelocs (struct ppc_link_hash_entry
 {
   struct elf_dyn_relocs *p;
 
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = eh->elf.dyn_relocs; p != NULL; p = p->next)
     if (p->pc_count != 0)
       return TRUE;
   return FALSE;
@@ -6340,7 +6473,7 @@ ppc64_elf_adjust_dynamic_symbol (struct
       || h->type == STT_GNU_IFUNC
       || h->needs_plt)
     {
-      bfd_boolean local = (((struct ppc_link_hash_entry *) h)->save_res
+      bfd_boolean local = (ppc_elf_hash_entry (h)->save_res
 			   || SYMBOL_CALLS_LOCAL (info, h)
 			   || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
       /* Discard dyn_relocs when non-pic if we've decided that a
@@ -6355,7 +6488,7 @@ ppc64_elf_adjust_dynamic_symbol (struct
       if (!bfd_link_pic (info)
 	  && h->type != STT_GNU_IFUNC
 	  && local)
-	((struct ppc_link_hash_entry *) h)->dyn_relocs = NULL;
+	h->dyn_relocs = NULL;
 
       /* Clear procedure linkage table information for any symbol that
 	 won't need a .plt entry.  */
@@ -6367,7 +6500,7 @@ ppc64_elf_adjust_dynamic_symbol (struct
 	  || (h->type != STT_GNU_IFUNC
 	      && local
 	      && (htab->can_convert_all_inline_plt
-		  || (((struct ppc_link_hash_entry *) h)->tls_mask
+		  || (ppc_elf_hash_entry (h)->tls_mask
 		      & (TLS_TLS | PLT_KEEP)) != PLT_KEEP)))
 	{
 	  h->plt.plist = NULL;
@@ -6385,7 +6518,7 @@ ppc64_elf_adjust_dynamic_symbol (struct
 	     extra work in ld.so when resolving these symbols.  */
 	  if (global_entry_stub (h))
 	    {
-	      if (!readonly_dynrelocs (h))
+	      if (!_bfd_elf_readonly_dynrelocs (h))
 		{
 		  h->pointer_equality_needed = 0;
 		  /* If we haven't seen a branch reloc and the symbol
@@ -6396,14 +6529,14 @@ ppc64_elf_adjust_dynamic_symbol (struct
 	      else if (!bfd_link_pic (info))
 		/* We are going to be defining the function symbol on the
 		   plt stub, so no dyn_relocs needed when non-pic.  */
-		((struct ppc_link_hash_entry *) h)->dyn_relocs = NULL;
+		h->dyn_relocs = NULL;
 	    }
 
 	  /* ELFv2 function symbols can't have copy relocs.  */
 	  return TRUE;
 	}
       else if (!h->needs_plt
-	       && !readonly_dynrelocs (h))
+	       && !_bfd_elf_readonly_dynrelocs (h))
 	{
 	  /* If we haven't seen a branch reloc and the symbol isn't an
 	     ifunc then we don't need a plt entry.  */
@@ -6426,7 +6559,7 @@ ppc64_elf_adjust_dynamic_symbol (struct
       h->root.u.def.value = def->root.u.def.value;
       if (def->root.u.def.section == htab->elf.sdynbss
 	  || def->root.u.def.section == htab->elf.sdynrelro)
-	((struct ppc_link_hash_entry *) h)->dyn_relocs = NULL;
+	h->dyn_relocs = NULL;
       return TRUE;
     }
 
@@ -6461,13 +6594,23 @@ ppc64_elf_adjust_dynamic_symbol (struct
       || h->protected_def)
     return TRUE;
 
-  if (h->plt.plist != NULL)
+  if (h->type == STT_FUNC
+      || h->type == STT_GNU_IFUNC)
     {
-      /* We should never get here, but unfortunately there are versions
-	 of gcc out there that improperly (for this ABI) put initialized
-	 function pointers, vtable refs and suchlike in read-only
-	 sections.  Allow them to proceed, but warn that this might
-	 break at runtime.  */
+      /* .dynbss copies of function symbols only work if we have
+	 ELFv1 dot-symbols.  ELFv1 compilers since 2004 default to not
+	 use dot-symbols and set the function symbol size to the text
+	 size of the function rather than the size of the descriptor.
+	 That's wrong for copying a descriptor.  */
+      if (ppc_elf_hash_entry (h)->oh == NULL
+	  || !(h->size == 24 || h->size == 16))
+	return TRUE;
+
+      /* We should never get here, but unfortunately there are old
+	 versions of gcc (circa gcc-3.2) that improperly for the
+	 ELFv1 ABI put initialized function pointers, vtable refs and
+	 suchlike in read-only sections.  Allow them to proceed, but
+	 warn that this might break at runtime.  */
       info->callbacks->einfo
 	(_("%P: copy reloc against `%pT' requires lazy plt linking; "
 	   "avoid setting LD_BIND_NOW=1 or upgrade gcc\n"),
@@ -6506,7 +6649,7 @@ ppc64_elf_adjust_dynamic_symbol (struct
     }
 
   /* We no longer want dyn_relocs.  */
-  ((struct ppc_link_hash_entry *) h)->dyn_relocs = NULL;
+  h->dyn_relocs = NULL;
   return _bfd_elf_adjust_dynamic_copy (info, h, s);
 }
 
@@ -6523,7 +6666,7 @@ ppc64_elf_hide_symbol (struct bfd_link_i
   if (ppc_hash_table (info) == NULL)
     return;
 
-  eh = (struct ppc_link_hash_entry *) h;
+  eh = ppc_elf_hash_entry (h);
   if (eh->is_func_descriptor)
     {
       struct ppc_link_hash_entry *fh = eh->oh;
@@ -6546,8 +6689,8 @@ ppc64_elf_hide_symbol (struct bfd_link_i
 	  p = eh->elf.root.root.string - 1;
 	  save = *p;
 	  *(char *) p = '.';
-	  fh = (struct ppc_link_hash_entry *)
-	    elf_link_hash_lookup (htab, p, FALSE, FALSE, FALSE);
+	  fh = ppc_elf_hash_entry (elf_link_hash_lookup (htab, p, FALSE,
+							 FALSE, FALSE));
 	  *(char *) p = save;
 
 	  /* Unfortunately, if it so happens that the string we were
@@ -6560,8 +6703,8 @@ ppc64_elf_hide_symbol (struct bfd_link_i
 	      while (q >= eh->elf.root.root.string && *q == *p)
 		--q, --p;
 	      if (q < eh->elf.root.root.string && *p == '.')
-		fh = (struct ppc_link_hash_entry *)
-		  elf_link_hash_lookup (htab, p, FALSE, FALSE, FALSE);
+		fh = ppc_elf_hash_entry (elf_link_hash_lookup (htab, p, FALSE,
+							       FALSE, FALSE));
 	    }
 	  if (fh != NULL)
 	    {
@@ -6609,12 +6752,7 @@ get_sym_h (struct elf_link_hash_entry **
 	}
 
       if (tls_maskp != NULL)
-	{
-	  struct ppc_link_hash_entry *eh;
-
-	  eh = (struct ppc_link_hash_entry *) h;
-	  *tls_maskp = &eh->tls_mask;
-	}
+	*tls_maskp = &ppc_elf_hash_entry (h)->tls_mask;
     }
   else
     {
@@ -6785,7 +6923,7 @@ adjust_opd_syms (struct elf_link_hash_en
       && h->root.type != bfd_link_hash_defweak)
     return TRUE;
 
-  eh = (struct ppc_link_hash_entry *) h;
+  eh = ppc_elf_hash_entry (h);
   if (eh->adjust_done)
     return TRUE;
 
@@ -6933,7 +7071,7 @@ dec_dynrel_count (bfd_vma r_info,
     {
       struct elf_dyn_relocs *p;
       struct elf_dyn_relocs **pp;
-      pp = &((struct ppc_link_hash_entry *) h)->dyn_relocs;
+      pp = &h->dyn_relocs;
 
       /* elf_gc_sweep may have already removed all dyn relocs associated
 	 with local syms for a given section.  Also, symbol flags are
@@ -7186,11 +7324,9 @@ ppc64_elf_edit_opd (struct bfd_link_info
 	      bfd_byte *loc;
 	      if (!bfd_malloc_and_get_section (ibfd, sec, &loc))
 		{
-		  if (loc != NULL)
-		    free (loc);
+		  free (loc);
 		error_ret:
-		  if (local_syms != NULL
-		      && symtab_hdr->contents != (unsigned char *) local_syms)
+		  if (symtab_hdr->contents != (unsigned char *) local_syms)
 		    free (local_syms);
 		  if (elf_section_data (sec)->relocs != relstart)
 		    free (relstart);
@@ -7250,7 +7386,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 	      if (h != NULL
 		  && h->root.root.string[0] == '.')
 		{
-		  fdh = ((struct ppc_link_hash_entry *) h)->oh;
+		  fdh = ppc_elf_hash_entry (h)->oh;
 		  if (fdh != NULL)
 		    {
 		      fdh = ppc_follow_link (fdh);
@@ -7496,7 +7632,7 @@ ppc64_elf_inline_plt (struct bfd_link_in
 	      return FALSE;
 
 	    relend = relstart + sec->reloc_count;
-	    for (rel = relstart; rel < relend; )
+	    for (rel = relstart; rel < relend; rel++)
 	      {
 		enum elf_ppc64_reloc_type r_type;
 		unsigned long r_symndx;
@@ -7516,8 +7652,7 @@ ppc64_elf_inline_plt (struct bfd_link_in
 		  {
 		    if (elf_section_data (sec)->relocs != relstart)
 		      free (relstart);
-		    if (local_syms != NULL
-			&& symtab_hdr->contents != (bfd_byte *) local_syms)
+		    if (symtab_hdr->contents != (bfd_byte *) local_syms)
 		      free (local_syms);
 		    return FALSE;
 		  }
@@ -7566,6 +7701,7 @@ asection *
 ppc64_elf_tls_setup (struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab;
+  struct elf_link_hash_entry *tga, *tga_fd, *desc, *desc_fd;
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
@@ -7602,18 +7738,29 @@ ppc64_elf_tls_setup (struct bfd_link_inf
       (_("warning: --plt-localentry is especially dangerous without "
 	 "ld.so support to detect ABI violations"));
 
-  htab->tls_get_addr = ((struct ppc_link_hash_entry *)
-			elf_link_hash_lookup (&htab->elf, ".__tls_get_addr",
-					      FALSE, FALSE, TRUE));
+  tga = elf_link_hash_lookup (&htab->elf, ".__tls_get_addr",
+			      FALSE, FALSE, TRUE);
+  htab->tls_get_addr = ppc_elf_hash_entry (tga);
+
   /* Move dynamic linking info to the function descriptor sym.  */
-  if (htab->tls_get_addr != NULL)
-    func_desc_adjust (&htab->tls_get_addr->elf, info);
-  htab->tls_get_addr_fd = ((struct ppc_link_hash_entry *)
-			   elf_link_hash_lookup (&htab->elf, "__tls_get_addr",
-						 FALSE, FALSE, TRUE));
+  if (tga != NULL)
+    func_desc_adjust (tga, info);
+  tga_fd = elf_link_hash_lookup (&htab->elf, "__tls_get_addr",
+				 FALSE, FALSE, TRUE);
+  htab->tls_get_addr_fd = ppc_elf_hash_entry (tga_fd);
+
+  desc = elf_link_hash_lookup (&htab->elf, ".__tls_get_addr_desc",
+			       FALSE, FALSE, TRUE);
+  htab->tga_desc = ppc_elf_hash_entry (desc);
+  if (desc != NULL)
+    func_desc_adjust (desc, info);
+  desc_fd = elf_link_hash_lookup (&htab->elf, "__tls_get_addr_desc",
+				  FALSE, FALSE, TRUE);
+  htab->tga_desc_fd = ppc_elf_hash_entry (desc_fd);
+
   if (htab->params->tls_get_addr_opt)
     {
-      struct elf_link_hash_entry *opt, *opt_fd, *tga, *tga_fd;
+      struct elf_link_hash_entry *opt, *opt_fd;
 
       opt = elf_link_hash_lookup (&htab->elf, ".__tls_get_addr_opt",
 				  FALSE, FALSE, TRUE);
@@ -7629,24 +7776,49 @@ ppc64_elf_tls_setup (struct bfd_link_inf
 	     signalled by the presence of __tls_get_addr_opt, and we'll
 	     be calling __tls_get_addr via a plt call stub, then
 	     make __tls_get_addr point to __tls_get_addr_opt.  */
-	  tga_fd = &htab->tls_get_addr_fd->elf;
-	  if (htab->elf.dynamic_sections_created
-	      && tga_fd != NULL
-	      && (tga_fd->type == STT_FUNC
-		  || tga_fd->needs_plt)
-	      && !(SYMBOL_CALLS_LOCAL (info, tga_fd)
-		   || UNDEFWEAK_NO_DYNAMIC_RELOC (info, tga_fd)))
-	    {
-	      struct plt_entry *ent;
-
-	      for (ent = tga_fd->plt.plist; ent != NULL; ent = ent->next)
-		if (ent->plt.refcount > 0)
-		  break;
+	  if (!(htab->elf.dynamic_sections_created
+		&& tga_fd != NULL
+		&& (tga_fd->type == STT_FUNC
+		    || tga_fd->needs_plt)
+		&& !(SYMBOL_CALLS_LOCAL (info, tga_fd)
+		     || UNDEFWEAK_NO_DYNAMIC_RELOC (info, tga_fd))))
+	    tga_fd = NULL;
+	  if (!(htab->elf.dynamic_sections_created
+		&& desc_fd != NULL
+		&& (desc_fd->type == STT_FUNC
+		    || desc_fd->needs_plt)
+		&& !(SYMBOL_CALLS_LOCAL (info, desc_fd)
+		     || UNDEFWEAK_NO_DYNAMIC_RELOC (info, desc_fd))))
+	    desc_fd = NULL;
+
+	  if (tga_fd != NULL || desc_fd != NULL)
+	    {
+	      struct plt_entry *ent = NULL;
+
+	      if (tga_fd != NULL)
+		for (ent = tga_fd->plt.plist; ent != NULL; ent = ent->next)
+		  if (ent->plt.refcount > 0)
+		    break;
+	      if (ent == NULL && desc_fd != NULL)
+		for (ent = desc_fd->plt.plist; ent != NULL; ent = ent->next)
+		  if (ent->plt.refcount > 0)
+		    break;
 	      if (ent != NULL)
 		{
-		  tga_fd->root.type = bfd_link_hash_indirect;
-		  tga_fd->root.u.i.link = &opt_fd->root;
-		  ppc64_elf_copy_indirect_symbol (info, opt_fd, tga_fd);
+		  if (tga_fd != NULL)
+		    {
+		      tga_fd->root.type = bfd_link_hash_indirect;
+		      tga_fd->root.u.i.link = &opt_fd->root;
+		      tga_fd->root.u.i.warning = NULL;
+		      ppc64_elf_copy_indirect_symbol (info, opt_fd, tga_fd);
+		    }
+		  if (desc_fd != NULL)
+		    {
+		      desc_fd->root.type = bfd_link_hash_indirect;
+		      desc_fd->root.u.i.link = &opt_fd->root;
+		      desc_fd->root.u.i.warning = NULL;
+		      ppc64_elf_copy_indirect_symbol (info, opt_fd, desc_fd);
+		    }
 		  opt_fd->mark = 1;
 		  if (opt_fd->dynindx != -1)
 		    {
@@ -7657,25 +7829,50 @@ ppc64_elf_tls_setup (struct bfd_link_inf
 		      if (!bfd_elf_link_record_dynamic_symbol (info, opt_fd))
 			return NULL;
 		    }
-		  htab->tls_get_addr_fd
-		    = (struct ppc_link_hash_entry *) opt_fd;
-		  tga = &htab->tls_get_addr->elf;
-		  if (opt != NULL && tga != NULL)
+		  if (tga_fd != NULL)
 		    {
-		      tga->root.type = bfd_link_hash_indirect;
-		      tga->root.u.i.link = &opt->root;
-		      ppc64_elf_copy_indirect_symbol (info, opt, tga);
-		      opt->mark = 1;
-		      _bfd_elf_link_hash_hide_symbol (info, opt,
-						      tga->forced_local);
-		      htab->tls_get_addr = (struct ppc_link_hash_entry *) opt;
+		      htab->tls_get_addr_fd = ppc_elf_hash_entry (opt_fd);
+		      tga = (struct elf_link_hash_entry *) htab->tls_get_addr;
+		      if (opt != NULL && tga != NULL)
+			{
+			  tga->root.type = bfd_link_hash_indirect;
+			  tga->root.u.i.link = &opt->root;
+			  tga->root.u.i.warning = NULL;
+			  ppc64_elf_copy_indirect_symbol (info, opt, tga);
+			  opt->mark = 1;
+			  _bfd_elf_link_hash_hide_symbol (info, opt,
+							  tga->forced_local);
+			  htab->tls_get_addr = ppc_elf_hash_entry (opt);
+			}
+		      htab->tls_get_addr_fd->oh = htab->tls_get_addr;
+		      htab->tls_get_addr_fd->is_func_descriptor = 1;
+		      if (htab->tls_get_addr != NULL)
+			{
+			  htab->tls_get_addr->oh = htab->tls_get_addr_fd;
+			  htab->tls_get_addr->is_func = 1;
+			}
 		    }
-		  htab->tls_get_addr_fd->oh = htab->tls_get_addr;
-		  htab->tls_get_addr_fd->is_func_descriptor = 1;
-		  if (htab->tls_get_addr != NULL)
+		  if (desc_fd != NULL)
 		    {
-		      htab->tls_get_addr->oh = htab->tls_get_addr_fd;
-		      htab->tls_get_addr->is_func = 1;
+		      htab->tga_desc_fd = ppc_elf_hash_entry (opt_fd);
+		      if (opt != NULL && desc != NULL)
+			{
+			  desc->root.type = bfd_link_hash_indirect;
+			  desc->root.u.i.link = &opt->root;
+			  desc->root.u.i.warning = NULL;
+			  ppc64_elf_copy_indirect_symbol (info, opt, desc);
+			  opt->mark = 1;
+			  _bfd_elf_link_hash_hide_symbol (info, opt,
+							  desc->forced_local);
+			  htab->tga_desc = ppc_elf_hash_entry (opt);
+			}
+		      htab->tga_desc_fd->oh = htab->tga_desc;
+		      htab->tga_desc_fd->is_func_descriptor = 1;
+		      if (htab->tga_desc != NULL)
+			{
+			  htab->tga_desc->oh = htab->tga_desc_fd;
+			  htab->tga_desc->is_func = 1;
+			}
 		    }
 		}
 	    }
@@ -7683,17 +7880,25 @@ ppc64_elf_tls_setup (struct bfd_link_inf
       else if (htab->params->tls_get_addr_opt < 0)
 	htab->params->tls_get_addr_opt = 0;
     }
+
+  if (htab->tga_desc_fd != NULL
+      && htab->params->tls_get_addr_opt
+      && htab->params->no_tls_get_addr_regsave == -1)
+    htab->params->no_tls_get_addr_regsave = 0;
+
   return _bfd_elf_tls_setup (info->output_bfd, info);
 }
 
 /* Return TRUE iff REL is a branch reloc with a global symbol matching
-   HASH1 or HASH2.  */
+   any of HASH1, HASH2, HASH3, or HASH4.  */
 
 static bfd_boolean
 branch_reloc_hash_match (const bfd *ibfd,
 			 const Elf_Internal_Rela *rel,
 			 const struct ppc_link_hash_entry *hash1,
-			 const struct ppc_link_hash_entry *hash2)
+			 const struct ppc_link_hash_entry *hash2,
+			 const struct ppc_link_hash_entry *hash3,
+			 const struct ppc_link_hash_entry *hash4)
 {
   Elf_Internal_Shdr *symtab_hdr = &elf_symtab_hdr (ibfd);
   enum elf_ppc64_reloc_type r_type = ELF64_R_TYPE (rel->r_info);
@@ -7706,7 +7911,10 @@ branch_reloc_hash_match (const bfd *ibfd
 
       h = sym_hashes[r_symndx - symtab_hdr->sh_info];
       h = elf_follow_link (h);
-      if (h == &hash1->elf || h == &hash2->elf)
+      if (h == (struct elf_link_hash_entry *) hash1
+	  || h == (struct elf_link_hash_entry *) hash2
+	  || h == (struct elf_link_hash_entry *) hash3
+	  || h == (struct elf_link_hash_entry *) hash4)
 	return TRUE;
     }
   return FALSE;
@@ -7735,6 +7943,8 @@ ppc64_elf_tls_optimize (struct bfd_link_
   if (htab == NULL)
     return FALSE;
 
+  htab->do_tls_opt = 1;
+
   /* Make two passes over the relocs.  On the first pass, mark toc
      entries involved with tls relocs, and check that tls relocs
      involved in setting up a tls_get_addr call are indeed followed by
@@ -7787,11 +7997,9 @@ ppc64_elf_tls_optimize (struct bfd_link_
 		    err_free_rel:
 		      if (elf_section_data (sec)->relocs != relstart)
 			free (relstart);
-		      if (toc_ref != NULL)
-			free (toc_ref);
-		      if (locsyms != NULL
-			  && (elf_symtab_hdr (ibfd).contents
-			      != (unsigned char *) locsyms))
+		      free (toc_ref);
+		      if (elf_symtab_hdr (ibfd).contents
+			  != (unsigned char *) locsyms)
 			free (locsyms);
 		      return ret;
 		    }
@@ -7847,8 +8055,7 @@ ppc64_elf_tls_optimize (struct bfd_link_
 		  if (pass == 0
 		      && sec->nomark_tls_get_addr
 		      && h != NULL
-		      && (h == &htab->tls_get_addr->elf
-			  || h == &htab->tls_get_addr_fd->elf)
+		      && is_tls_get_addr (h, htab)
 		      && !found_tls_get_addr_arg
 		      && is_branch_reloc (r_type))
 		    {
@@ -7864,7 +8071,7 @@ ppc64_elf_tls_optimize (struct bfd_link_
 		    {
 		    case R_PPC64_GOT_TLSLD16:
 		    case R_PPC64_GOT_TLSLD16_LO:
-		    case R_PPC64_GOT_TLSLD34:
+		    case R_PPC64_GOT_TLSLD_PCREL34:
 		      expecting_tls_get_addr = 1;
 		      found_tls_get_addr_arg = 1;
 		      /* Fall through.  */
@@ -7885,7 +8092,7 @@ ppc64_elf_tls_optimize (struct bfd_link_
 
 		    case R_PPC64_GOT_TLSGD16:
 		    case R_PPC64_GOT_TLSGD16_LO:
-		    case R_PPC64_GOT_TLSGD34:
+		    case R_PPC64_GOT_TLSGD_PCREL34:
 		      expecting_tls_get_addr = 1;
 		      found_tls_get_addr_arg = 1;
 		      /* Fall through. */
@@ -7902,7 +8109,7 @@ ppc64_elf_tls_optimize (struct bfd_link_
 		      tls_type = TLS_TLS | TLS_GD;
 		      break;
 
-		    case R_PPC64_GOT_TPREL34:
+		    case R_PPC64_GOT_TPREL_PCREL34:
 		    case R_PPC64_GOT_TPREL16_DS:
 		    case R_PPC64_GOT_TPREL16_LO_DS:
 		    case R_PPC64_GOT_TPREL16_HI:
@@ -8042,6 +8249,42 @@ ppc64_elf_tls_optimize (struct bfd_link_
 			}
 		      break;
 
+		    case R_PPC64_TPREL16_HA:
+		      if (pass == 0)
+			{
+			  unsigned char buf[4];
+			  unsigned int insn;
+			  bfd_vma off = rel->r_offset & ~3;
+			  if (!bfd_get_section_contents (ibfd, sec, buf,
+							 off, 4))
+			    goto err_free_rel;
+			  insn = bfd_get_32 (ibfd, buf);
+			  /* addis rt,13,imm */
+			  if ((insn & ((0x3fu << 26) | 0x1f << 16))
+			      != ((15u << 26) | (13 << 16)))
+			    {
+			      /* xgettext:c-format */
+			      info->callbacks->minfo
+				(_("%H: warning: %s unexpected insn %#x.\n"),
+				 ibfd, sec, off, "R_PPC64_TPREL16_HA", insn);
+			      htab->do_tls_opt = 0;
+			    }
+			}
+		      continue;
+
+		    case R_PPC64_TPREL16_HI:
+		    case R_PPC64_TPREL16_HIGH:
+		    case R_PPC64_TPREL16_HIGHA:
+		    case R_PPC64_TPREL16_HIGHER:
+		    case R_PPC64_TPREL16_HIGHERA:
+		    case R_PPC64_TPREL16_HIGHEST:
+		    case R_PPC64_TPREL16_HIGHESTA:
+		      /* These can all be used in sequences along with
+			 TPREL16_LO or TPREL16_LO_DS in ways we aren't
+			 able to verify easily.  */
+		      htab->do_tls_opt = 0;
+		      continue;
+
 		    default:
 		      continue;
 		    }
@@ -8054,8 +8297,10 @@ ppc64_elf_tls_optimize (struct bfd_link_
 
 		      if (rel + 1 < relend
 			  && branch_reloc_hash_match (ibfd, rel + 1,
+						      htab->tls_get_addr_fd,
+						      htab->tga_desc_fd,
 						      htab->tls_get_addr,
-						      htab->tls_get_addr_fd))
+						      htab->tga_desc))
 			{
 			  if (expecting_tls_get_addr == 2)
 			    {
@@ -8110,15 +8355,29 @@ ppc64_elf_tls_optimize (struct bfd_link_
 		    {
 		      struct plt_entry *ent = NULL;
 
-		      if (htab->tls_get_addr != NULL)
+		      if (htab->tls_get_addr_fd != NULL)
+			for (ent = htab->tls_get_addr_fd->elf.plt.plist;
+			     ent != NULL;
+			     ent = ent->next)
+			  if (ent->addend == 0)
+			    break;
+
+		      if (ent == NULL && htab->tga_desc_fd != NULL)
+			for (ent = htab->tga_desc_fd->elf.plt.plist;
+			     ent != NULL;
+			     ent = ent->next)
+			  if (ent->addend == 0)
+			    break;
+
+		      if (ent == NULL && htab->tls_get_addr != NULL)
 			for (ent = htab->tls_get_addr->elf.plt.plist;
 			     ent != NULL;
 			     ent = ent->next)
 			  if (ent->addend == 0)
 			    break;
 
-		      if (ent == NULL && htab->tls_get_addr_fd != NULL)
-			for (ent = htab->tls_get_addr_fd->elf.plt.plist;
+		      if (ent == NULL && htab->tga_desc != NULL)
+			for (ent = htab->tga_desc->elf.plt.plist;
 			     ent != NULL;
 			     ent = ent->next)
 			  if (ent->addend == 0)
@@ -8191,9 +8450,7 @@ ppc64_elf_tls_optimize (struct bfd_link_
 	  }
       }
 
-  if (toc_ref != NULL)
-    free (toc_ref);
-  htab->do_tls_opt = 1;
+  free (toc_ref);
   return TRUE;
 }
 
@@ -8223,7 +8480,7 @@ adjust_toc_syms (struct elf_link_hash_en
       && h->root.type != bfd_link_hash_defweak)
     return TRUE;
 
-  eh = (struct ppc_link_hash_entry *) h;
+  eh = ppc_elf_hash_entry (h);
   if (eh->adjust_done)
     return TRUE;
 
@@ -8259,34 +8516,34 @@ adjust_toc_syms (struct elf_link_hash_en
 static bfd_boolean
 ok_lo_toc_insn (unsigned int insn, enum elf_ppc64_reloc_type r_type)
 {
-  return ((insn & (0x3f << 26)) == 12u << 26 /* addic */
-	  || (insn & (0x3f << 26)) == 14u << 26 /* addi */
-	  || (insn & (0x3f << 26)) == 32u << 26 /* lwz */
-	  || (insn & (0x3f << 26)) == 34u << 26 /* lbz */
-	  || (insn & (0x3f << 26)) == 36u << 26 /* stw */
-	  || (insn & (0x3f << 26)) == 38u << 26 /* stb */
-	  || (insn & (0x3f << 26)) == 40u << 26 /* lhz */
-	  || (insn & (0x3f << 26)) == 42u << 26 /* lha */
-	  || (insn & (0x3f << 26)) == 44u << 26 /* sth */
-	  || (insn & (0x3f << 26)) == 46u << 26 /* lmw */
-	  || (insn & (0x3f << 26)) == 47u << 26 /* stmw */
-	  || (insn & (0x3f << 26)) == 48u << 26 /* lfs */
-	  || (insn & (0x3f << 26)) == 50u << 26 /* lfd */
-	  || (insn & (0x3f << 26)) == 52u << 26 /* stfs */
-	  || (insn & (0x3f << 26)) == 54u << 26 /* stfd */
-	  || (insn & (0x3f << 26)) == 56u << 26 /* lq,lfq */
-	  || ((insn & (0x3f << 26)) == 57u << 26 /* lxsd,lxssp,lfdp */
+  return ((insn & (0x3fu << 26)) == 12u << 26 /* addic */
+	  || (insn & (0x3fu << 26)) == 14u << 26 /* addi */
+	  || (insn & (0x3fu << 26)) == 32u << 26 /* lwz */
+	  || (insn & (0x3fu << 26)) == 34u << 26 /* lbz */
+	  || (insn & (0x3fu << 26)) == 36u << 26 /* stw */
+	  || (insn & (0x3fu << 26)) == 38u << 26 /* stb */
+	  || (insn & (0x3fu << 26)) == 40u << 26 /* lhz */
+	  || (insn & (0x3fu << 26)) == 42u << 26 /* lha */
+	  || (insn & (0x3fu << 26)) == 44u << 26 /* sth */
+	  || (insn & (0x3fu << 26)) == 46u << 26 /* lmw */
+	  || (insn & (0x3fu << 26)) == 47u << 26 /* stmw */
+	  || (insn & (0x3fu << 26)) == 48u << 26 /* lfs */
+	  || (insn & (0x3fu << 26)) == 50u << 26 /* lfd */
+	  || (insn & (0x3fu << 26)) == 52u << 26 /* stfs */
+	  || (insn & (0x3fu << 26)) == 54u << 26 /* stfd */
+	  || (insn & (0x3fu << 26)) == 56u << 26 /* lq,lfq */
+	  || ((insn & (0x3fu << 26)) == 57u << 26 /* lxsd,lxssp,lfdp */
 	      /* Exclude lfqu by testing reloc.  If relocs are ever
 		 defined for the reduced D field in psq_lu then those
 		 will need testing too.  */
 	      && r_type != R_PPC64_TOC16_LO && r_type != R_PPC64_GOT16_LO)
-	  || ((insn & (0x3f << 26)) == 58u << 26 /* ld,lwa */
+	  || ((insn & (0x3fu << 26)) == 58u << 26 /* ld,lwa */
 	      && (insn & 1) == 0)
-	  || (insn & (0x3f << 26)) == 60u << 26 /* stfq */
-	  || ((insn & (0x3f << 26)) == 61u << 26 /* lxv,stx{v,sd,ssp},stfdp */
+	  || (insn & (0x3fu << 26)) == 60u << 26 /* stfq */
+	  || ((insn & (0x3fu << 26)) == 61u << 26 /* lxv,stx{v,sd,ssp},stfdp */
 	      /* Exclude stfqu.  psq_stu as above for psq_lu.  */
 	      && r_type != R_PPC64_TOC16_LO && r_type != R_PPC64_GOT16_LO)
-	  || ((insn & (0x3f << 26)) == 62u << 26 /* std,stq */
+	  || ((insn & (0x3fu << 26)) == 62u << 26 /* std,stq */
 	      && (insn & 1) == 0));
 }
 
@@ -8402,6 +8659,15 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint6
       off = insn2 & 0xffff;
       break;
 
+    case 6: /* lxvp, stxvp */
+      if ((insn2 & 0xe) != 0)
+	return FALSE;
+      insn1 = ((1ULL << 58) | (1ULL << 52)
+	       | ((insn2 & 1) == 0 ? 58ULL << 26 : 62ULL << 26)
+	       | (insn2 & (31ULL << 21)));
+      off = insn2 & 0xfff0;
+      break;
+
     case 62: /* std, stq */
       if ((insn2 & 1) != 0)
 	return FALSE;
@@ -8623,18 +8889,14 @@ ppc64_elf_edit_toc (struct bfd_link_info
       if (used == NULL)
 	{
 	error_ret:
-	  if (local_syms != NULL
-	      && symtab_hdr->contents != (unsigned char *) local_syms)
+	  if (symtab_hdr->contents != (unsigned char *) local_syms)
 	    free (local_syms);
 	  if (sec != NULL
-	      && relstart != NULL
 	      && elf_section_data (sec)->relocs != relstart)
 	    free (relstart);
-	  if (toc_relocs != NULL
-	      && elf_section_data (toc)->relocs != toc_relocs)
+	  if (elf_section_data (toc)->relocs != toc_relocs)
 	    free (toc_relocs);
-	  if (skip != NULL)
-	    free (skip);
+	  free (skip);
 	  return FALSE;
 	}
 
@@ -9001,8 +9263,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
 	      rel_hdr->sh_size = toc->reloc_count * sz;
 	    }
 	}
-      else if (toc_relocs != NULL
-	       && elf_section_data (toc)->relocs != toc_relocs)
+      else if (elf_section_data (toc)->relocs != toc_relocs)
 	free (toc_relocs);
 
       if (local_syms != NULL
@@ -9053,11 +9314,9 @@ ppc64_elf_edit_toc (struct bfd_link_info
 	  if (relstart == NULL)
 	    {
 	    got_error_ret:
-	      if (local_syms != NULL
-		  && symtab_hdr->contents != (unsigned char *) local_syms)
+	      if (symtab_hdr->contents != (unsigned char *) local_syms)
 		free (local_syms);
 	      if (sec != NULL
-		  && relstart != NULL
 		  && elf_section_data (sec)->relocs != relstart)
 		free (relstart);
 	      return FALSE;
@@ -9117,7 +9376,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
 		  insn = bfd_get_32 (ibfd, buf);
 		  if (insn_check == check_lo
 		      ? !ok_lo_toc_insn (insn, r_type)
-		      : ((insn & ((0x3f << 26) | 0x1f << 16))
+		      : ((insn & ((0x3fu << 26) | 0x1f << 16))
 			 != ((15u << 26) | (2 << 16)) /* addis rt,2,imm */))
 		    {
 		      char str[12];
@@ -9160,6 +9419,9 @@ ppc64_elf_edit_toc (struct bfd_link_info
 		  || discarded_section (sym_sec))
 		continue;
 
+	      if ((h ? h->type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
+		continue;
+
 	      if (!SYMBOL_REFERENCES_LOCAL (info, h))
 		continue;
 
@@ -9188,7 +9450,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
 						 rel->r_offset & ~3, 4))
 		    goto got_error_ret;
 		  insn = bfd_get_32 (ibfd, buf);
-		  if (((insn & ((0x3f << 26) | 0x1f << 16))
+		  if (((insn & ((0x3fu << 26) | 0x1f << 16))
 		       != ((15u << 26) | (2 << 16)) /* addis rt,2,imm */))
 		    continue;
 		  break;
@@ -9201,7 +9463,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
 						 rel->r_offset & ~3, 4))
 		    goto got_error_ret;
 		  insn = bfd_get_32 (ibfd, buf);
-		  if ((insn & (0x3f << 26 | 0x3)) != 58u << 26 /* ld */)
+		  if ((insn & (0x3fu << 26 | 0x3)) != 58u << 26 /* ld */)
 		    continue;
 		  break;
 
@@ -9218,7 +9480,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
 		  if ((insn & (-1u << 18)) != ((1u << 26) | (1u << 20)))
 		    continue;
 		  insn = bfd_get_32 (ibfd, buf + 4);
-		  if ((insn & (0x3f << 26)) != 57u << 26)
+		  if ((insn & (0x3fu << 26)) != 57u << 26)
 		    continue;
 		  break;
 		}
@@ -9275,7 +9537,7 @@ allocate_got (struct elf_link_hash_entry
 	      struct got_entry *gent)
 {
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
-  struct ppc_link_hash_entry *eh = (struct ppc_link_hash_entry *) h;
+  struct ppc_link_hash_entry *eh = ppc_elf_hash_entry (h);
   int entsize = (gent->tls_type & eh->tls_mask & (TLS_GD | TLS_LD)
 		 ? 16 : 8);
   int rentsize = (gent->tls_type & eh->tls_mask & TLS_GD
@@ -9363,7 +9625,7 @@ allocate_dynrelocs (struct elf_link_hash
   if (htab == NULL)
     return FALSE;
 
-  eh = (struct ppc_link_hash_entry *) h;
+  eh = ppc_elf_hash_entry (h);
   /* Run through the TLS GD got entries first if we're changing them
      to TPREL.  */
   if ((eh->tls_mask & (TLS_TLS | TLS_GDIE)) == (TLS_TLS | TLS_GDIE))
@@ -9429,19 +9691,19 @@ allocate_dynrelocs (struct elf_link_hash
      IFUNCs which are handled even in static executables.  */
   if (!htab->elf.dynamic_sections_created
       && h->type != STT_GNU_IFUNC)
-    eh->dyn_relocs = NULL;
+    h->dyn_relocs = NULL;
 
   /* Discard relocs on undefined symbols that must be local.  */
   else if (h->root.type == bfd_link_hash_undefined
 	   && ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
-    eh->dyn_relocs = NULL;
+    h->dyn_relocs = NULL;
 
   /* Also discard relocs on undefined weak syms with non-default
      visibility, or when dynamic_undefined_weak says so.  */
   else if (UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-    eh->dyn_relocs = NULL;
+    h->dyn_relocs = NULL;
 
-  if (eh->dyn_relocs != NULL)
+  if (h->dyn_relocs != NULL)
     {
       struct elf_dyn_relocs *p, **pp;
 
@@ -9461,7 +9723,7 @@ allocate_dynrelocs (struct elf_link_hash
 	     avoid writing weird assembly.  */
 	  if (SYMBOL_CALLS_LOCAL (info, h))
 	    {
-	      for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	      for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 		{
 		  p->count -= p->pc_count;
 		  p->pc_count = 0;
@@ -9472,7 +9734,7 @@ allocate_dynrelocs (struct elf_link_hash
 		}
 	    }
 
-	  if (eh->dyn_relocs != NULL)
+	  if (h->dyn_relocs != NULL)
 	    {
 	      /* Ensure we catch all the cases where this symbol
 		 should be made dynamic.  */
@@ -9496,14 +9758,14 @@ allocate_dynrelocs (struct elf_link_hash
 
 	      /* But if that didn't work out, discard dynamic relocs.  */
 	      if (h->dynindx == -1)
-		eh->dyn_relocs = NULL;
+		h->dyn_relocs = NULL;
 	    }
 	  else
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 	}
 
       /* Finally, allocate space.  */
-      for (p = eh->dyn_relocs; p != NULL; p = p->next)
+      for (p = h->dyn_relocs; p != NULL; p = p->next)
 	{
 	  asection *sreloc = elf_section_data (p->sec)->sreloc;
 	  if (eh->elf.type == STT_GNU_IFUNC)
@@ -9524,7 +9786,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && h->def_regular
 	  && !htab->elf.dynamic_sections_created
 	  && !htab->can_convert_all_inline_plt
-	  && (((struct ppc_link_hash_entry *) h)->tls_mask
+	  && (ppc_elf_hash_entry (h)->tls_mask
 	      & (TLS_TLS | PLT_KEEP)) == PLT_KEEP))
     {
       struct plt_entry *pent;
@@ -9682,33 +9944,6 @@ size_global_entry_stubs (struct elf_link
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *inf)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) inf;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo (_("%pB: dynamic relocation against `%pT'"
-				" in read-only section `%pA'\n"),
-			      sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -10064,8 +10299,10 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	}
 
       tls_opt = (htab->params->tls_get_addr_opt
-		 && htab->tls_get_addr_fd != NULL
-		 && htab->tls_get_addr_fd->elf.plt.plist != NULL);
+		 && ((htab->tls_get_addr_fd != NULL
+		      && htab->tls_get_addr_fd->elf.plt.plist != NULL)
+		     || (htab->tga_desc_fd != NULL
+			 && htab->tga_desc_fd->elf.plt.plist != NULL)));
       if (tls_opt || !htab->opd_abi)
 	{
 	  if (!add_dynamic_entry (DT_PPC64_OPT, tls_opt ? PPC64_OPT_TLS : 0))
@@ -10082,7 +10319,8 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	  /* If any dynamic relocs apply to a read-only section,
 	     then we need a DT_TEXTREL entry.  */
 	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->elf, maybe_set_textrel, info);
+	    elf_link_hash_traverse (&htab->elf,
+				    _bfd_elf_maybe_set_textrel, info);
 
 	  if ((info->flags & DF_TEXTREL) != 0)
 	    {
@@ -10389,7 +10627,7 @@ emit_relocs_for_offset (struct bfd_link_
 }
 
 static bfd_byte *
-build_powerxx_offset (bfd *abfd, bfd_byte *p, bfd_vma off, int odd,
+build_power10_offset (bfd *abfd, bfd_byte *p, bfd_vma off, int odd,
 		      bfd_boolean load)
 {
   uint64_t insn;
@@ -10471,7 +10709,7 @@ build_powerxx_offset (bfd *abfd, bfd_byt
 }
 
 static unsigned int
-size_powerxx_offset (bfd_vma off, int odd)
+size_power10_offset (bfd_vma off, int odd)
 {
   if (off - odd + (1ULL << 33) < 1ULL << 34)
     return odd + 8;
@@ -10482,7 +10720,7 @@ size_powerxx_offset (bfd_vma off, int od
 }
 
 static unsigned int
-num_relocs_for_powerxx_offset (bfd_vma off, int odd)
+num_relocs_for_power10_offset (bfd_vma off, int odd)
 {
   if (off - odd + (1ULL << 33) < 1ULL << 34)
     return 1;
@@ -10493,7 +10731,7 @@ num_relocs_for_powerxx_offset (bfd_vma o
 }
 
 static Elf_Internal_Rela *
-emit_relocs_for_powerxx_offset (struct bfd_link_info *info,
+emit_relocs_for_power10_offset (struct bfd_link_info *info,
 				Elf_Internal_Rela *r, bfd_vma roff,
 				bfd_vma targ, bfd_vma off, int odd)
 {
@@ -10605,14 +10843,14 @@ plt_stub_size (struct ppc_link_hash_tabl
 
   if (stub_entry->stub_type >= ppc_stub_plt_call_notoc)
     {
-      if (htab->powerxx_stubs)
+      if (htab->params->power10_stubs != 0)
 	{
 	  bfd_vma start = (stub_entry->stub_offset
 			   + stub_entry->group->stub_sec->output_offset
 			   + stub_entry->group->stub_sec->output_section->vma);
 	  if (stub_entry->stub_type > ppc_stub_plt_call_notoc)
 	    start += 4;
-	  size = 8 + size_powerxx_offset (off, start & 4);
+	  size = 8 + size_power10_offset (off, start & 4);
 	}
       else
 	size = 8 + size_offset (off - 8);
@@ -10641,13 +10879,21 @@ plt_stub_size (struct ppc_link_hash_tabl
 	size += 4;
     }
   if (stub_entry->h != NULL
-      && (stub_entry->h == htab->tls_get_addr_fd
-	  || stub_entry->h == htab->tls_get_addr)
+      && is_tls_get_addr (&stub_entry->h->elf, htab)
       && htab->params->tls_get_addr_opt)
     {
-      size += 7 * 4;
-      if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
-	size += 6 * 4;
+      if (htab->params->no_tls_get_addr_regsave)
+	{
+	  size += 7 * 4;
+	  if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
+	    size += 6 * 4;
+	}
+      else
+	{
+	  size += 30 * 4;
+	  if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
+	    size += 4;
+	}
     }
   return size;
 }
@@ -10703,8 +10949,8 @@ build_plt_stub (struct ppc_link_hash_tab
   if (!ALWAYS_USE_FAKE_DEP
       && plt_load_toc
       && plt_thread_safe
-      && !((stub_entry->h == htab->tls_get_addr_fd
-	    || stub_entry->h == htab->tls_get_addr)
+      && !(stub_entry->h != NULL
+	   && is_tls_get_addr (&stub_entry->h->elf, htab)
 	   && htab->params->tls_get_addr_opt))
     {
       bfd_vma pltoff = stub_entry->plt_ent->plt.offset & ~1;
@@ -10863,17 +11109,14 @@ build_plt_stub (struct ppc_link_hash_tab
 
 /* Build a special .plt call stub for __tls_get_addr.  */
 
-#define LD_R11_0R3	0xe9630000
+#define LD_R0_0R3	0xe8030000
 #define LD_R12_0R3	0xe9830000
 #define MR_R0_R3	0x7c601b78
-#define CMPDI_R11_0	0x2c2b0000
+#define CMPDI_R0_0	0x2c200000
 #define ADD_R3_R12_R13	0x7c6c6a14
 #define BEQLR		0x4d820020
 #define MR_R3_R0	0x7c030378
-#define STD_R11_0R1	0xf9610000
 #define BCTRL		0x4e800421
-#define LD_R11_0R1	0xe9610000
-#define MTLR_R11	0x7d6803a6
 
 static inline bfd_byte *
 build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
@@ -10882,48 +11125,121 @@ build_tls_get_addr_stub (struct ppc_link
 {
   bfd *obfd = htab->params->stub_bfd;
   bfd_byte *loc = p;
+  unsigned int i;
 
-  bfd_put_32 (obfd, LD_R11_0R3 + 0, p),		p += 4;
+  bfd_put_32 (obfd, LD_R0_0R3 + 0, p),		p += 4;
   bfd_put_32 (obfd, LD_R12_0R3 + 8, p),		p += 4;
+  bfd_put_32 (obfd, CMPDI_R0_0, p),		p += 4;
   bfd_put_32 (obfd, MR_R0_R3, p),		p += 4;
-  bfd_put_32 (obfd, CMPDI_R11_0, p),		p += 4;
   bfd_put_32 (obfd, ADD_R3_R12_R13, p),		p += 4;
   bfd_put_32 (obfd, BEQLR, p),			p += 4;
   bfd_put_32 (obfd, MR_R3_R0, p),		p += 4;
-  if (r != NULL)
-    r[0].r_offset += 7 * 4;
-  if (stub_entry->stub_type != ppc_stub_plt_call_r2save)
-    return build_plt_stub (htab, stub_entry, p, offset, r);
-
-  bfd_put_32 (obfd, MFLR_R11, p),		p += 4;
-  bfd_put_32 (obfd, STD_R11_0R1 + STK_LINKER (htab), p), p += 4;
-
-  if (r != NULL)
-    r[0].r_offset += 2 * 4;
-  p = build_plt_stub (htab, stub_entry, p, offset, r);
-  bfd_put_32 (obfd, BCTRL, p - 4);
-
-  bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p),	p += 4;
-  bfd_put_32 (obfd, LD_R11_0R1 + STK_LINKER (htab), p),	p += 4;
-  bfd_put_32 (obfd, MTLR_R11, p),		p += 4;
-  bfd_put_32 (obfd, BLR, p),			p += 4;
+  if (htab->params->no_tls_get_addr_regsave)
+    {
+      if (r != NULL)
+	r[0].r_offset += 7 * 4;
+      if (stub_entry->stub_type != ppc_stub_plt_call_r2save)
+	return build_plt_stub (htab, stub_entry, p, offset, r);
+
+      bfd_put_32 (obfd, MFLR_R0, p);
+      p += 4;
+      bfd_put_32 (obfd, STD_R0_0R1 + STK_LINKER (htab), p);
+      p += 4;
+
+      if (r != NULL)
+	r[0].r_offset += 2 * 4;
+      p = build_plt_stub (htab, stub_entry, p, offset, r);
+      bfd_put_32 (obfd, BCTRL, p - 4);
+
+      bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
+      p += 4;
+      bfd_put_32 (obfd, LD_R0_0R1 + STK_LINKER (htab), p);
+      p += 4;
+      bfd_put_32 (obfd, MTLR_R0, p);
+      p += 4;
+      bfd_put_32 (obfd, BLR, p);
+      p += 4;
+    }
+  else
+    {
+      p = tls_get_addr_prologue (obfd, p, htab);
+
+      if (r != NULL)
+	r[0].r_offset += 18 * 4;
+
+      p = build_plt_stub (htab, stub_entry, p, offset, r);
+      bfd_put_32 (obfd, BCTRL, p - 4);
+
+      if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
+	{
+	  bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
+	  p += 4;
+	}
+
+      p = tls_get_addr_epilogue (obfd, p, htab);
+    }
 
   if (htab->glink_eh_frame != NULL
       && htab->glink_eh_frame->size != 0)
     {
       bfd_byte *base, *eh;
-      unsigned int lr_used, delta;
 
       base = htab->glink_eh_frame->contents + stub_entry->group->eh_base + 17;
       eh = base + stub_entry->group->eh_size;
-      lr_used = stub_entry->stub_offset + (p - 20 - loc);
-      delta = lr_used - stub_entry->group->lr_restore;
-      stub_entry->group->lr_restore = lr_used + 16;
-      eh = eh_advance (htab->elf.dynobj, eh, delta);
-      *eh++ = DW_CFA_offset_extended_sf;
-      *eh++ = 65;
-      *eh++ = -(STK_LINKER (htab) / 8) & 0x7f;
-      *eh++ = DW_CFA_advance_loc + 4;
+      if (htab->params->no_tls_get_addr_regsave)
+	{
+	  unsigned int lr_used, delta;
+	  lr_used = stub_entry->stub_offset + (p - 20 - loc);
+	  delta = lr_used - stub_entry->group->lr_restore;
+	  stub_entry->group->lr_restore = lr_used + 16;
+	  eh = eh_advance (htab->elf.dynobj, eh, delta);
+	  *eh++ = DW_CFA_offset_extended_sf;
+	  *eh++ = 65;
+	  *eh++ = -(STK_LINKER (htab) / 8) & 0x7f;
+	  *eh++ = DW_CFA_advance_loc + 4;
+	}
+      else
+	{
+	  unsigned int cfa_updt, delta;
+	  /* After the bctrl, lr has been modified so we need to emit
+	     .eh_frame info saying the return address is on the stack.  In
+	     fact we must put the EH info at or before the call rather
+	     than after it, because the EH info for a call needs to be
+	     specified by that point.
+	     See libgcc/unwind-dw2.c execute_cfa_program.
+	     Any stack pointer update must be described immediately after
+	     the instruction making the change, and since the stdu occurs
+	     after saving regs we put all the reg saves and the cfa
+	     change there.  */
+	  cfa_updt = stub_entry->stub_offset + 18 * 4;
+	  delta = cfa_updt - stub_entry->group->lr_restore;
+	  stub_entry->group->lr_restore
+	    = stub_entry->stub_offset + (p - loc) - 4;
+	  eh = eh_advance (htab->elf.dynobj, eh, delta);
+	  *eh++ = DW_CFA_def_cfa_offset;
+	  if (htab->opd_abi)
+	    {
+	      *eh++ = 128;
+	      *eh++ = 1;
+	    }
+	  else
+	    *eh++ = 96;
+	  *eh++ = DW_CFA_offset_extended_sf;
+	  *eh++ = 65;
+	  *eh++ = (-16 / 8) & 0x7f;
+	  for (i = 4; i < 12; i++)
+	    {
+	      *eh++ = DW_CFA_offset + i;
+	      *eh++ = (htab->opd_abi ? 13 : 12) - i;
+	    }
+	  *eh++ = (DW_CFA_advance_loc
+		   + (stub_entry->group->lr_restore - 8 - cfa_updt) / 4);
+	  *eh++ = DW_CFA_def_cfa_offset;
+	  *eh++ = 0;
+	  for (i = 4; i < 12; i++)
+	    *eh++ = DW_CFA_restore + i;
+	  *eh++ = DW_CFA_advance_loc + 2;
+	}
       *eh++ = DW_CFA_restore_extended;
       *eh++ = 65;
       stub_entry->group->eh_size = eh - base;
@@ -11000,9 +11316,7 @@ use_global_in_relocs (struct ppc_link_ha
     h = ppc_follow_link (h->oh);
   BFD_ASSERT (h->elf.root.type == bfd_link_hash_defined
 	      || h->elf.root.type == bfd_link_hash_defweak);
-  symval = (h->elf.root.u.def.value
-	    + h->elf.root.u.def.section->output_offset
-	    + h->elf.root.u.def.section->output_section->vma);
+  symval = defined_sym_val (&h->elf);
   while (num_rel-- != 0)
     {
       r->r_info = ELF64_R_INFO (symndx, ELF64_R_TYPE (r->r_info));
@@ -11074,6 +11388,25 @@ ppc_build_one_stub (struct bfd_hash_entr
   stub_entry = (struct ppc_stub_hash_entry *) gen_entry;
   info = in_arg;
 
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (stub_entry->target_section != NULL
+      && stub_entry->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    stub_entry->target_section);
+
+  /* Same for the group.  */
+  if (stub_entry->group->stub_sec != NULL
+      && stub_entry->group->stub_sec->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign group %pA target %pA to an "
+			      "output section. Retry without "
+			      "--enable-non-contiguous-regions.\n"),
+			    stub_entry->group->stub_sec,
+			    stub_entry->target_section);
+
   htab = ppc_hash_table (info);
   if (htab == NULL)
     return FALSE;
@@ -11352,10 +11685,10 @@ ppc_build_one_stub (struct bfd_hash_entr
 
       relp = p;
       num_rel = 0;
-      if (htab->powerxx_stubs)
+      if (htab->params->power10_stubs != 0)
 	{
 	  bfd_boolean load = stub_entry->stub_type >= ppc_stub_plt_call_notoc;
-	  p = build_powerxx_offset (htab->params->stub_bfd, p, off, odd, load);
+	  p = build_power10_offset (htab->params->stub_bfd, p, off, odd, load);
 	}
       else
 	{
@@ -11391,8 +11724,8 @@ ppc_build_one_stub (struct bfd_hash_entr
       if (info->emitrelocations)
 	{
 	  bfd_vma roff = relp - stub_entry->group->stub_sec->contents;
-	  if (htab->powerxx_stubs)
-	    num_rel += num_relocs_for_powerxx_offset (off, odd);
+	  if (htab->params->power10_stubs != 0)
+	    num_rel += num_relocs_for_power10_offset (off, odd);
 	  else
 	    {
 	      num_rel += num_relocs_for_offset (off);
@@ -11401,8 +11734,8 @@ ppc_build_one_stub (struct bfd_hash_entr
 	  r = get_relocs (stub_entry->group->stub_sec, num_rel);
 	  if (r == NULL)
 	    return FALSE;
-	  if (htab->powerxx_stubs)
-	    r = emit_relocs_for_powerxx_offset (info, r, roff, targ, off, odd);
+	  if (htab->params->power10_stubs != 0)
+	    r = emit_relocs_for_power10_offset (info, r, roff, targ, off, odd);
 	  else
 	    r = emit_relocs_for_offset (info, r, roff, targ, off);
 	  if (stub_entry->stub_type == ppc_stub_long_branch_notoc
@@ -11419,7 +11752,7 @@ ppc_build_one_stub (struct bfd_hash_entr
 	    }
 	}
 
-      if (!htab->powerxx_stubs
+      if (htab->params->power10_stubs == 0
 	  && htab->glink_eh_frame != NULL
 	  && htab->glink_eh_frame->size != 0)
 	{
@@ -11514,8 +11847,7 @@ ppc_build_one_stub (struct bfd_hash_entr
 	  r[0].r_addend = targ;
 	}
       if (stub_entry->h != NULL
-	  && (stub_entry->h == htab->tls_get_addr_fd
-	      || stub_entry->h == htab->tls_get_addr)
+	  && is_tls_get_addr (&stub_entry->h->elf, htab)
 	  && htab->params->tls_get_addr_opt)
 	p = build_tls_get_addr_stub (htab, stub_entry, loc, off, r);
       else
@@ -11600,6 +11932,25 @@ ppc_size_one_stub (struct bfd_hash_entry
   if (htab == NULL)
     return FALSE;
 
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (stub_entry->target_section != NULL
+      && stub_entry->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign %pA to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    stub_entry->target_section);
+
+  /* Same for the group.  */
+  if (stub_entry->group->stub_sec != NULL
+      && stub_entry->group->stub_sec->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign group %pA target %pA to an "
+			      "output section. Retry without "
+			      "--enable-non-contiguous-regions.\n"),
+			    stub_entry->group->stub_sec,
+			    stub_entry->target_section);
+
   /* Make a note of the offset within the stubs for this entry.  */
   stub_entry->stub_offset = stub_entry->group->stub_sec->size;
 
@@ -11749,16 +12100,16 @@ ppc_size_one_stub (struct bfd_hash_entry
       if (info->emitrelocations)
 	{
 	  unsigned int num_rel;
-	  if (htab->powerxx_stubs)
-	    num_rel = num_relocs_for_powerxx_offset (off, odd);
+	  if (htab->params->power10_stubs != 0)
+	    num_rel = num_relocs_for_power10_offset (off, odd);
 	  else
 	    num_rel = num_relocs_for_offset (off - 8);
 	  stub_entry->group->stub_sec->reloc_count += num_rel;
 	  stub_entry->group->stub_sec->flags |= SEC_RELOC;
 	}
 
-      if (htab->powerxx_stubs)
-	extra = size_powerxx_offset (off, odd);
+      if (htab->params->power10_stubs != 0)
+	extra = size_power10_offset (off, odd);
       else
 	extra = size_offset (off - 8);
       /* Include branch insn plus those in the offset sequence.  */
@@ -11768,7 +12119,7 @@ ppc_size_one_stub (struct bfd_hash_entry
 	 calculated.  */
       off -= extra;
 
-      if (!htab->powerxx_stubs)
+      if (htab->params->power10_stubs == 0)
 	{
 	  /* After the bcl, lr has been modified so we need to emit
 	     .eh_frame info saying the return address is in r12.  */
@@ -11831,8 +12182,8 @@ ppc_size_one_stub (struct bfd_hash_entry
       if (info->emitrelocations)
 	{
 	  unsigned int num_rel;
-	  if (htab->powerxx_stubs)
-	    num_rel = num_relocs_for_powerxx_offset (off, odd);
+	  if (htab->params->power10_stubs != 0)
+	    num_rel = num_relocs_for_power10_offset (off, odd);
 	  else
 	    num_rel = num_relocs_for_offset (off - 8);
 	  stub_entry->group->stub_sec->reloc_count += num_rel;
@@ -11841,7 +12192,7 @@ ppc_size_one_stub (struct bfd_hash_entry
 
       size = plt_stub_size (htab, stub_entry, off);
 
-      if (!htab->powerxx_stubs)
+      if (htab->params->power10_stubs == 0)
 	{
 	  /* After the bcl, lr has been modified so we need to emit
 	     .eh_frame info saying the return address is in r12.  */
@@ -11900,24 +12251,27 @@ ppc_size_one_stub (struct bfd_hash_entry
       size = plt_stub_size (htab, stub_entry, off);
 
       if (stub_entry->h != NULL
-	  && (stub_entry->h == htab->tls_get_addr_fd
-	      || stub_entry->h == htab->tls_get_addr)
+	  && is_tls_get_addr (&stub_entry->h->elf, htab)
 	  && htab->params->tls_get_addr_opt
 	  && stub_entry->stub_type == ppc_stub_plt_call_r2save)
 	{
-	  /* After the bctrl, lr has been modified so we need to
-	     emit .eh_frame info saying the return address is
-	     on the stack.  In fact we put the EH info specifying
-	     that the return address is on the stack *at* the
-	     call rather than after it, because the EH info for a
-	     call needs to be specified by that point.
-	     See libgcc/unwind-dw2.c execute_cfa_program.  */
-	  lr_used = stub_entry->stub_offset + size - 20;
-	  /* The eh_frame info will consist of a DW_CFA_advance_loc
-	     or variant, DW_CFA_offset_externed_sf, 65, -stackoff,
-	     DW_CFA_advance_loc+4, DW_CFA_restore_extended, 65.  */
-	  delta = lr_used - stub_entry->group->lr_restore;
-	  stub_entry->group->eh_size += eh_advance_size (delta) + 6;
+	  if (htab->params->no_tls_get_addr_regsave)
+	    {
+	      lr_used = stub_entry->stub_offset + size - 20;
+	      /* The eh_frame info will consist of a DW_CFA_advance_loc
+		 or variant, DW_CFA_offset_externed_sf, 65, -stackoff,
+		 DW_CFA_advance_loc+4, DW_CFA_restore_extended, 65.  */
+	      delta = lr_used - stub_entry->group->lr_restore;
+	      stub_entry->group->eh_size += eh_advance_size (delta) + 6;
+	    }
+	  else
+	    {
+	      /* Adjustments to r1 need to be described.  */
+	      unsigned int cfa_updt = stub_entry->stub_offset + 18 * 4;
+	      delta = cfa_updt - stub_entry->group->lr_restore;
+	      stub_entry->group->eh_size += eh_advance_size (delta);
+	      stub_entry->group->eh_size += htab->opd_abi ? 36 : 35;
+	    }
 	  stub_entry->group->lr_restore = size - 4;
 	}
       break;
@@ -11939,7 +12293,7 @@ int
 ppc64_elf_setup_section_lists (struct bfd_link_info *info)
 {
   unsigned int id;
-  bfd_size_type amt;
+  size_t amt;
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
 
   if (htab == NULL)
@@ -12349,7 +12703,7 @@ toc_adjusting_stub_needed (struct bfd_li
 
 	  /* Calls to dynamic lib functions go through a plt call stub
 	     that uses r2.  */
-	  eh = (struct ppc_link_hash_entry *) h;
+	  eh = ppc_elf_hash_entry (h);
 	  if (eh != NULL
 	      && (eh->elf.plt.plist != NULL
 		  || (eh->oh != NULL
@@ -12460,9 +12814,8 @@ toc_adjusting_stub_needed (struct bfd_li
 	    }
 	}
 
-      if (local_syms != NULL
-	  && (elf_symtab_hdr (isec->owner).contents
-	      != (unsigned char *) local_syms))
+      if (elf_symtab_hdr (isec->owner).contents
+	  != (unsigned char *) local_syms)
 	free (local_syms);
       if (elf_section_data (isec)->relocs != relstart)
 	free (relstart);
@@ -12764,6 +13117,9 @@ ppc64_elf_size_stubs (struct bfd_link_in
   if (htab == NULL)
     return FALSE;
 
+  if (htab->params->power10_stubs == -1 && !htab->has_power10_relocs)
+    htab->params->power10_stubs = 0;
+
   if (htab->params->plt_thread_safe == -1 && !bfd_link_executable (info))
     htab->params->plt_thread_safe = 1;
   if (!htab->opd_abi)
@@ -12817,6 +13173,40 @@ ppc64_elf_size_stubs (struct bfd_link_in
   if (!group_sections (info, stub_group_size, stubs_always_before_branch))
     return FALSE;
 
+  htab->tga_group = NULL;
+  if (!htab->params->no_tls_get_addr_regsave
+      && htab->tga_desc_fd != NULL
+      && (htab->tga_desc_fd->elf.root.type == bfd_link_hash_undefined
+	  || htab->tga_desc_fd->elf.root.type == bfd_link_hash_undefweak)
+      && htab->tls_get_addr_fd != NULL
+      && is_static_defined (&htab->tls_get_addr_fd->elf))
+    {
+      asection *sym_sec, *code_sec, *stub_sec;
+      bfd_vma sym_value;
+      struct _opd_sec_data *opd;
+
+      sym_sec = htab->tls_get_addr_fd->elf.root.u.def.section;
+      sym_value = defined_sym_val (&htab->tls_get_addr_fd->elf);
+      code_sec = sym_sec;
+      opd = get_opd_info (sym_sec);
+      if (opd != NULL)
+	opd_entry_value (sym_sec, sym_value, &code_sec, NULL, FALSE);
+      htab->tga_group = htab->sec_info[code_sec->id].u.group;
+      stub_sec = (*htab->params->add_stub_section) (".tga_desc.stub",
+						    htab->tga_group->link_sec);
+      if (stub_sec == NULL)
+	return FALSE;
+      htab->tga_group->stub_sec = stub_sec;
+
+      htab->tga_desc_fd->elf.root.type = bfd_link_hash_defined;
+      htab->tga_desc_fd->elf.root.u.def.section = stub_sec;
+      htab->tga_desc_fd->elf.root.u.def.value = 0;
+      htab->tga_desc_fd->elf.type = STT_FUNC;
+      htab->tga_desc_fd->elf.def_regular = 1;
+      htab->tga_desc_fd->elf.non_elf = 0;
+      _bfd_elf_link_hash_hide_symbol (info, &htab->tga_desc_fd->elf, TRUE);
+    }
+
 #define STUB_SHRINK_ITER 20
   /* Loop until no stubs added.  After iteration 20 of this loop we may
      exit on a stub section shrinking.  This is to break out of a
@@ -12922,7 +13312,7 @@ ppc64_elf_size_stubs (struct bfd_link_in
 		  if (!get_sym_h (&h, &sym, &sym_sec, NULL, &local_syms,
 				  r_indx, input_bfd))
 		    goto error_ret_free_internal;
-		  hash = (struct ppc_link_hash_entry *) h;
+		  hash = ppc_elf_hash_entry (h);
 
 		  ok_dest = FALSE;
 		  fdh = NULL;
@@ -13041,10 +13431,10 @@ ppc64_elf_size_stubs (struct bfd_link_in
 			 fact a call needing a TOC adjustment.  */
 		      if ((code_sec != NULL
 			   && code_sec->output_section != NULL
-			   && (htab->sec_info[code_sec->id].toc_off
-			       != htab->sec_info[section->id].toc_off)
 			   && (code_sec->has_toc_reloc
-			       || code_sec->makes_toc_func_call))
+			       || code_sec->makes_toc_func_call)
+			   && (htab->sec_info[code_sec->id].toc_off
+			       != htab->sec_info[section->id].toc_off))
 			  || (((hash ? hash->elf.other : sym->st_other)
 			       & STO_PPC64_LOCAL_MASK)
 			      == 1 << STO_PPC64_LOCAL_BIT))
@@ -13058,8 +13448,7 @@ ppc64_elf_size_stubs (struct bfd_link_in
 		  if (stub_type != ppc_stub_plt_call
 		      && stub_type != ppc_stub_plt_call_notoc
 		      && hash != NULL
-		      && (hash == htab->tls_get_addr
-			  || hash == htab->tls_get_addr_fd)
+		      && is_tls_get_addr (&hash->elf, htab)
 		      && section->has_tls_reloc
 		      && irela != internal_relocs)
 		    {
@@ -13069,7 +13458,8 @@ ppc64_elf_size_stubs (struct bfd_link_in
 		      if (!get_tls_mask (&tls_mask, NULL, NULL, &local_syms,
 					 irela - 1, input_bfd))
 			goto error_ret_free_internal;
-		      if ((*tls_mask & TLS_TLS) != 0)
+		      if ((*tls_mask & TLS_TLS) != 0
+			  && (*tls_mask & (TLS_GD | TLS_LD)) == 0)
 			continue;
 		    }
 
@@ -13105,6 +13495,7 @@ ppc64_elf_size_stubs (struct bfd_link_in
 		  if (stub_entry != NULL)
 		    {
 		      enum ppc_stub_type old_type;
+
 		      /* A stub has already been created, but it may
 			 not be the required type.  We shouldn't be
 			 transitioning from plt_call to long_branch
@@ -13112,6 +13503,39 @@ ppc64_elf_size_stubs (struct bfd_link_in
 			 upgrading from plt_call to plt_call_r2save or
 			 from long_branch to long_branch_r2off.  */
 		      free (stub_name);
+		      if (htab->params->power10_stubs == -1)
+			{
+			  /* For --power10-stubs=auto, don't merge _notoc
+			     and other varieties of stubs.  (The _both
+			     variety won't be created.)  */
+			  bfd_boolean notoc = r_type == R_PPC64_REL24_NOTOC;
+			  struct ppc_stub_hash_entry *alt_stub
+			    = select_alt_stub (stub_entry, notoc);
+
+			  if (alt_stub == NULL)
+			    {
+			      alt_stub = (struct ppc_stub_hash_entry *)
+				stub_hash_newfunc (NULL,
+						   &htab->stub_hash_table,
+						   stub_entry->root.string);
+			      if (alt_stub == NULL)
+				{
+				  /* xgettext:c-format */
+				  _bfd_error_handler
+				    (_("%pB: cannot create stub entry %s"),
+				     section->owner, stub_entry->root.string);
+				  goto error_ret_free_internal;
+				}
+			      *alt_stub = *stub_entry;
+			      stub_entry->root.next = &alt_stub->root;
+			      if (notoc)
+				/* Sort notoc stubs first, for no good
+				   reason.  */
+				alt_stub = stub_entry;
+			      alt_stub->stub_type = stub_type;
+			    }
+			  stub_entry = alt_stub;
+			}
 		      old_type = stub_entry->stub_type;
 		      switch (old_type)
 			{
@@ -13181,9 +13605,8 @@ ppc64_elf_size_stubs (struct bfd_link_in
 		      if (elf_section_data (section)->relocs == NULL)
 			free (internal_relocs);
 		    error_ret_free_local:
-		      if (local_syms != NULL
-			  && (symtab_hdr->contents
-			      != (unsigned char *) local_syms))
+		      if (symtab_hdr->contents
+			  != (unsigned char *) local_syms)
 			free (local_syms);
 		      return FALSE;
 		    }
@@ -13246,6 +13669,14 @@ ppc64_elf_size_stubs (struct bfd_link_in
 	      stub_sec->flags &= ~SEC_RELOC;
 	    }
 	}
+      if (htab->tga_group != NULL)
+	{
+	  /* See emit_tga_desc and emit_tga_desc_eh_frame.  */
+	  htab->tga_group->eh_size
+	    = 1 + 2 + (htab->opd_abi != 0) + 3 + 8 * 2 + 3 + 8 + 3;
+	  htab->tga_group->lr_restore = 23 * 4;
+	  htab->tga_group->stub_sec->size = 24 * 4;
+	}
 
       if (htab->stub_iteration <= STUB_SHRINK_ITER
 	  || htab->brlt->rawsize < htab->brlt->size)
@@ -13309,7 +13740,9 @@ ppc64_elf_size_stubs (struct bfd_link_in
 	      || (htab->stub_iteration > STUB_SHRINK_ITER
 		  && htab->brlt->rawsize > htab->brlt->size))
 	  && (htab->glink_eh_frame == NULL
-	      || htab->glink_eh_frame->rawsize == htab->glink_eh_frame->size))
+	      || htab->glink_eh_frame->rawsize == htab->glink_eh_frame->size)
+	  && (htab->tga_group == NULL
+	      || htab->stub_iteration > 1))
 	break;
 
       /* Ask the linker to do its stuff.  */
@@ -13405,6 +13838,8 @@ ppc64_elf_size_stubs (struct bfd_link_in
     }
 
   maybe_strip_output (info, htab->brlt);
+  if (htab->relbrlt != NULL)
+    maybe_strip_output (info, htab->relbrlt);
   if (htab->glink_eh_frame != NULL)
     maybe_strip_output (info, htab->glink_eh_frame);
 
@@ -13440,9 +13875,7 @@ ppc64_elf_set_toc (struct bfd_link_info
 	  && (!is_elf_hash_table (htab)
 	      || h->def_regular))
 	{
-	  TOCstart = (h->root.u.def.value - TOC_BASE_OFF
-		      + h->root.u.def.section->output_offset
-		      + h->root.u.def.section->output_section->vma);
+	  TOCstart = defined_sym_val (h) - TOC_BASE_OFF;
 	  _bfd_set_gp_value (obfd, TOCstart);
 	  return TOCstart;
 	}
@@ -13561,7 +13994,7 @@ build_global_entry_stubs_and_plt (struct
 	      {
 		plt = htab->elf.iplt;
 		relplt = htab->elf.irelplt;
-		htab->local_ifunc_resolver = 1;
+		htab->elf.ifunc_resolvers = TRUE;
 		if (htab->opd_abi)
 		  rela.r_info = ELF64_R_INFO (0, R_PPC64_JMP_IREL);
 		else
@@ -13581,10 +14014,7 @@ build_global_entry_stubs_and_plt (struct
 		else
 		  relplt = NULL;
 	      }
-	    rela.r_addend = (h->root.u.def.value
-			     + h->root.u.def.section->output_offset
-			     + h->root.u.def.section->output_section->vma
-			     + ent->addend);
+	    rela.r_addend = defined_sym_val (h) + ent->addend;
 
 	    if (relplt == NULL)
 	      {
@@ -13618,7 +14048,7 @@ build_global_entry_stubs_and_plt (struct
 		   + ((ent->plt.offset - PLT_INITIAL_ENTRY_SIZE (htab))
 		      / PLT_ENTRY_SIZE (htab) * sizeof (Elf64_External_Rela)));
 	    if (h->type == STT_GNU_IFUNC && is_static_defined (h))
-	      htab->maybe_local_ifunc_resolver = 1;
+	      htab->elf.ifunc_resolvers = TRUE;
 	    bfd_elf64_swap_reloca_out (info->output_bfd, &rela, loc);
 	  }
       }
@@ -13747,8 +14177,7 @@ write_plt_relocs_for_local_syms (struct
 	      if (!get_sym_h (NULL, &sym, &sym_sec, NULL, &local_syms,
 			      lplt - local_plt, ibfd))
 		{
-		  if (local_syms != NULL
-		      && symtab_hdr->contents != (unsigned char *) local_syms)
+		  if (symtab_hdr->contents != (unsigned char *) local_syms)
 		    free (local_syms);
 		  return FALSE;
 		}
@@ -13761,7 +14190,7 @@ write_plt_relocs_for_local_syms (struct
 
 	      if (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
 		{
-		  htab->local_ifunc_resolver = 1;
+		  htab->elf.ifunc_resolvers = TRUE;
 		  plt = htab->elf.iplt;
 		  relplt = htab->elf.irelplt;
 		}
@@ -13820,6 +14249,74 @@ write_plt_relocs_for_local_syms (struct
   return TRUE;
 }
 
+/* Emit the static wrapper function preserving registers around a
+   __tls_get_addr_opt call.  */
+
+static bfd_boolean
+emit_tga_desc (struct ppc_link_hash_table *htab)
+{
+  asection *stub_sec = htab->tga_group->stub_sec;
+  unsigned int cfa_updt = 11 * 4;
+  bfd_byte *p;
+  bfd_vma to, from, delta;
+
+  BFD_ASSERT (htab->tga_desc_fd->elf.root.type == bfd_link_hash_defined
+	      && htab->tga_desc_fd->elf.root.u.def.section == stub_sec
+	      && htab->tga_desc_fd->elf.root.u.def.value == 0);
+  to = defined_sym_val (&htab->tls_get_addr_fd->elf);
+  from = defined_sym_val (&htab->tga_desc_fd->elf) + cfa_updt;
+  delta = to - from;
+  if (delta + (1 << 25) >= 1 << 26)
+    {
+      _bfd_error_handler (_("__tls_get_addr call offset overflow"));
+      htab->stub_error = TRUE;
+      return FALSE;
+    }
+
+  p = stub_sec->contents;
+  p = tls_get_addr_prologue (htab->elf.dynobj, p, htab);
+  bfd_put_32 (stub_sec->owner, B_DOT | 1 | (delta & 0x3fffffc), p);
+  p += 4;
+  p = tls_get_addr_epilogue (htab->elf.dynobj, p, htab);
+  return stub_sec->size == (bfd_size_type) (p - stub_sec->contents);
+}
+
+/* Emit eh_frame describing the static wrapper function.  */
+
+static bfd_byte *
+emit_tga_desc_eh_frame (struct ppc_link_hash_table *htab, bfd_byte *p)
+{
+  unsigned int cfa_updt = 11 * 4;
+  unsigned int i;
+
+  *p++ = DW_CFA_advance_loc + cfa_updt / 4;
+  *p++ = DW_CFA_def_cfa_offset;
+  if (htab->opd_abi)
+    {
+      *p++ = 128;
+      *p++ = 1;
+    }
+  else
+    *p++ = 96;
+  *p++ = DW_CFA_offset_extended_sf;
+  *p++ = 65;
+  *p++ = (-16 / 8) & 0x7f;
+  for (i = 4; i < 12; i++)
+    {
+      *p++ = DW_CFA_offset + i;
+      *p++ = (htab->opd_abi ? 13 : 12) - i;
+    }
+  *p++ = DW_CFA_advance_loc + 10;
+  *p++ = DW_CFA_def_cfa_offset;
+  *p++ = 0;
+  for (i = 4; i < 12; i++)
+    *p++ = DW_CFA_restore + i;
+  *p++ = DW_CFA_advance_loc + 2;
+  *p++ = DW_CFA_restore_extended;
+  *p++ = 65;
+  return p;
+}
+
 /* Build all the stubs associated with the current output file.
    The stubs are kept in a hash table attached to the main linker
    hash table.  This function is called via gldelf64ppc_finish.  */
@@ -13979,6 +14476,24 @@ ppc64_elf_build_stubs (struct bfd_link_i
 	}
     }
 
+  if (htab->tga_group != NULL)
+    {
+      htab->tga_group->lr_restore = 23 * 4;
+      htab->tga_group->stub_sec->size = 24 * 4;
+      if (!emit_tga_desc (htab))
+	return FALSE;
+      if (htab->glink_eh_frame != NULL
+	  && htab->glink_eh_frame->size != 0)
+	{
+	  size_t align = 4;
+
+	  p = htab->glink_eh_frame->contents;
+	  p += (sizeof (glink_eh_frame_cie) + align - 1) & -align;
+	  p += 17;
+	  htab->tga_group->eh_size = emit_tga_desc_eh_frame (htab, p) - p;
+	}
+    }
+
   /* Build .glink global entry stubs, and PLT relocs for globals.  */
   elf_link_hash_traverse (&htab->elf, build_global_entry_stubs_and_plt, info);
 
@@ -14104,42 +14619,46 @@ ppc64_elf_build_stubs (struct bfd_link_i
 
   if (stats != NULL)
     {
-      size_t len;
-      *stats = bfd_malloc (500);
-      if (*stats == NULL)
-	return FALSE;
-
-      len = sprintf (*stats,
-		     ngettext ("linker stubs in %u group\n",
-			       "linker stubs in %u groups\n",
-			       stub_sec_count),
-		     stub_sec_count);
-      sprintf (*stats + len, _("  branch         %lu\n"
-			       "  branch toc adj %lu\n"
-			       "  branch notoc   %lu\n"
-			       "  branch both    %lu\n"
-			       "  long branch    %lu\n"
-			       "  long toc adj   %lu\n"
-			       "  long notoc     %lu\n"
-			       "  long both      %lu\n"
-			       "  plt call       %lu\n"
-			       "  plt call save  %lu\n"
-			       "  plt call notoc %lu\n"
-			       "  plt call both  %lu\n"
-			       "  global entry   %lu"),
-	       htab->stub_count[ppc_stub_long_branch - 1],
-	       htab->stub_count[ppc_stub_long_branch_r2off - 1],
-	       htab->stub_count[ppc_stub_long_branch_notoc - 1],
-	       htab->stub_count[ppc_stub_long_branch_both - 1],
-	       htab->stub_count[ppc_stub_plt_branch - 1],
-	       htab->stub_count[ppc_stub_plt_branch_r2off - 1],
-	       htab->stub_count[ppc_stub_plt_branch_notoc - 1],
-	       htab->stub_count[ppc_stub_plt_branch_both - 1],
-	       htab->stub_count[ppc_stub_plt_call - 1],
-	       htab->stub_count[ppc_stub_plt_call_r2save - 1],
-	       htab->stub_count[ppc_stub_plt_call_notoc - 1],
-	       htab->stub_count[ppc_stub_plt_call_both - 1],
-	       htab->stub_count[ppc_stub_global_entry - 1]);
+      char *groupmsg;
+      if (asprintf (&groupmsg,
+		    ngettext ("linker stubs in %u group\n",
+			      "linker stubs in %u groups\n",
+			      stub_sec_count),
+		    stub_sec_count) < 0)
+	*stats = NULL;
+      else
+	{
+	  if (asprintf (stats, _("%s"
+				 "  branch         %lu\n"
+				 "  branch toc adj %lu\n"
+				 "  branch notoc   %lu\n"
+				 "  branch both    %lu\n"
+				 "  long branch    %lu\n"
+				 "  long toc adj   %lu\n"
+				 "  long notoc     %lu\n"
+				 "  long both      %lu\n"
+				 "  plt call       %lu\n"
+				 "  plt call save  %lu\n"
+				 "  plt call notoc %lu\n"
+				 "  plt call both  %lu\n"
+				 "  global entry   %lu"),
+			groupmsg,
+			htab->stub_count[ppc_stub_long_branch - 1],
+			htab->stub_count[ppc_stub_long_branch_r2off - 1],
+			htab->stub_count[ppc_stub_long_branch_notoc - 1],
+			htab->stub_count[ppc_stub_long_branch_both - 1],
+			htab->stub_count[ppc_stub_plt_branch - 1],
+			htab->stub_count[ppc_stub_plt_branch_r2off - 1],
+			htab->stub_count[ppc_stub_plt_branch_notoc - 1],
+			htab->stub_count[ppc_stub_plt_branch_both - 1],
+			htab->stub_count[ppc_stub_plt_call - 1],
+			htab->stub_count[ppc_stub_plt_call_r2save - 1],
+			htab->stub_count[ppc_stub_plt_call_notoc - 1],
+			htab->stub_count[ppc_stub_plt_call_both - 1],
+			htab->stub_count[ppc_stub_global_entry - 1]) < 0)
+	    *stats = NULL;
+	  free (groupmsg);
+	}
     }
   return TRUE;
 }
@@ -14425,7 +14944,7 @@ ppc64_elf_relocate_section (bfd *output_
 		  }
 	    }
 	}
-      h = (struct ppc_link_hash_entry *) h_elf;
+      h = ppc_elf_hash_entry (h_elf);
 
       if (sec != NULL && discarded_section (sec))
 	{
@@ -14537,7 +15056,7 @@ ppc64_elf_relocate_section (bfd *output_
 
 	case R_PPC64_LO_DS_OPT:
 	  insn = bfd_get_32 (input_bfd, contents + rel->r_offset - d_offset);
-	  if ((insn & (0x3f << 26)) != 58u << 26)
+	  if ((insn & (0x3fu << 26)) != 58u << 26)
 	    abort ();
 	  insn += (14u << 26) - (58u << 26);
 	  bfd_put_32 (input_bfd, insn, contents + rel->r_offset - d_offset);
@@ -14629,7 +15148,7 @@ ppc64_elf_relocate_section (bfd *output_
 	    }
 	  break;
 
-	case R_PPC64_GOT_TPREL34:
+	case R_PPC64_GOT_TPREL_PCREL34:
 	  if ((tls_mask & TLS_TLS) != 0
 	      && (tls_mask & TLS_TPREL) == 0)
 	    {
@@ -14679,7 +15198,7 @@ ppc64_elf_relocate_section (bfd *output_
 		  /* For pcrel IE to LE we already have the full
 		     offset and thus don't need an addi here.  A nop
 		     or mr will do.  */
-		  if ((insn & (0x3f << 26)) == 14 << 26)
+		  if ((insn & (0x3fu << 26)) == 14 << 26)
 		    {
 		      /* Extract regs from addi rt,ra,si.  */
 		      unsigned int rt = (insn >> 21) & 0x1f;
@@ -14746,8 +15265,10 @@ ppc64_elf_relocate_section (bfd *output_
 	      if (input_section->nomark_tls_get_addr
 		  && rel + 1 < relend
 		  && branch_reloc_hash_match (input_bfd, rel + 1,
+					      htab->tls_get_addr_fd,
+					      htab->tga_desc_fd,
 					      htab->tls_get_addr,
-					      htab->tls_get_addr_fd))
+					      htab->tga_desc))
 		offset = rel[1].r_offset;
 	      /* We read the low GOT_TLS (or TOC16) insn because we
 		 need to keep the destination reg.  It may be
@@ -14759,7 +15280,7 @@ ppc64_elf_relocate_section (bfd *output_
 		{
 		  /* IE */
 		  insn1 &= (0x1f << 21) | (0x1f << 16);
-		  insn1 |= 58 << 26;	/* ld */
+		  insn1 |= 58u << 26;	/* ld */
 		  insn2 = 0x7c636a14;	/* add 3,3,13 */
 		  if (offset != (bfd_vma) -1)
 		    rel[1].r_info = ELF64_R_INFO (STN_UNDEF, R_PPC64_NONE);
@@ -14820,7 +15341,7 @@ ppc64_elf_relocate_section (bfd *output_
 	    }
 	  break;
 
-	case R_PPC64_GOT_TLSGD34:
+	case R_PPC64_GOT_TLSGD_PCREL34:
 	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0)
 	    {
 	      pinsn = bfd_get_32 (input_bfd, contents + rel->r_offset);
@@ -14830,7 +15351,7 @@ ppc64_elf_relocate_section (bfd *output_
 		{
 		  /* IE, pla -> pld  */
 		  pinsn += (-2ULL << 56) + (57ULL << 26) - (14ULL << 26);
-		  r_type = R_PPC64_GOT_TPREL34;
+		  r_type = R_PPC64_GOT_TPREL_PCREL34;
 		}
 	      else
 		{
@@ -14846,7 +15367,7 @@ ppc64_elf_relocate_section (bfd *output_
 	    }
 	  break;
 
-	case R_PPC64_GOT_TLSLD34:
+	case R_PPC64_GOT_TLSLD_PCREL34:
 	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0)
 	    {
 	      pinsn = bfd_get_32 (input_bfd, contents + rel->r_offset);
@@ -15170,6 +15691,7 @@ ppc64_elf_relocate_section (bfd *output_
 	      if (stub_entry->stub_type == ppc_stub_plt_call
 		  && !htab->opd_abi
 		  && htab->params->plt_localentry0 != 0
+		  && h != NULL
 		  && is_elfv2_localentry0 (&h->elf))
 		{
 		  /* The function doesn't use or change r2.  */
@@ -15203,8 +15725,7 @@ ppc64_elf_relocate_section (bfd *output_
 			       || nop == CROR_313131)
 			{
 			  if (h != NULL
-			      && (h == htab->tls_get_addr_fd
-				  || h == htab->tls_get_addr)
+			      && is_tls_get_addr (&h->elf, htab)
 			      && htab->params->tls_get_addr_opt)
 			    {
 			      /* Special stub used, leave nop alone.  */
@@ -15369,8 +15890,7 @@ ppc64_elf_relocate_section (bfd *output_
 		   || stub_entry->stub_type == ppc_stub_plt_call_r2save
 		   || stub_entry->stub_type == ppc_stub_plt_call_both)
 		  && !(h != NULL
-		       && (h == htab->tls_get_addr_fd
-			   || h == htab->tls_get_addr)
+		       && is_tls_get_addr (&h->elf, htab)
 		       && htab->params->tls_get_addr_opt)
 		  && rel + 1 < relend
 		  && rel[1].r_offset == rel->r_offset + 4
@@ -15429,12 +15949,15 @@ ppc64_elf_relocate_section (bfd *output_
 	  break;
 
 	case R_PPC64_GOT16_DS:
+	  if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
+	      || !htab->do_toc_opt)
+	    break;
 	  from = TOCstart + htab->sec_info[input_section->id].toc_off;
 	  if (relocation + addend - from + 0x8000 < 0x10000
-	      && SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+	      && (h == NULL || SYMBOL_REFERENCES_LOCAL (info, &h->elf)))
 	    {
 	      insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
-	      if ((insn & (0x3f << 26 | 0x3)) == 58u << 26 /* ld */)
+	      if ((insn & (0x3fu << 26 | 0x3)) == 58u << 26 /* ld */)
 		{
 		  insn += (14u << 26) - (58u << 26);
 		  bfd_put_32 (input_bfd, insn, contents + (rel->r_offset & ~3));
@@ -15446,19 +15969,22 @@ ppc64_elf_relocate_section (bfd *output_
 
 	case R_PPC64_GOT16_LO_DS:
 	case R_PPC64_GOT16_HA:
+	  if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
+	      || !htab->do_toc_opt)
+	    break;
 	  from = TOCstart + htab->sec_info[input_section->id].toc_off;
 	  if (relocation + addend - from + 0x80008000ULL < 0x100000000ULL
-	      && SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+	      && (h == NULL || SYMBOL_REFERENCES_LOCAL (info, &h->elf)))
 	    {
 	      insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
-	      if ((insn & (0x3f << 26 | 0x3)) == 58u << 26 /* ld */)
+	      if ((insn & (0x3fu << 26 | 0x3)) == 58u << 26 /* ld */)
 		{
 		  insn += (14u << 26) - (58u << 26);
 		  bfd_put_32 (input_bfd, insn, contents + (rel->r_offset & ~3));
 		  r_type = R_PPC64_TOC16_LO;
 		  rel->r_info = ELF64_R_INFO (r_symndx, r_type);
 		}
-	      else if ((insn & (0x3f << 26)) == 15u << 26 /* addis */)
+	      else if ((insn & (0x3fu << 26)) == 15u << 26 /* addis */)
 		{
 		  r_type = R_PPC64_TOC16_HA;
 		  rel->r_info = ELF64_R_INFO (r_symndx, r_type);
@@ -15467,32 +15993,38 @@ ppc64_elf_relocate_section (bfd *output_
 	  break;
 
 	case R_PPC64_GOT_PCREL34:
+	  if ((h ? h->elf.type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC
+	      || !htab->do_toc_opt)
+	    break;
 	  from = (rel->r_offset
 		  + input_section->output_section->vma
 		  + input_section->output_offset);
-	  if (relocation - from + (1ULL << 33) < 1ULL << 34
-	      && SYMBOL_REFERENCES_LOCAL (info, &h->elf))
-	    {
-	      offset = rel->r_offset;
-	      pinsn = bfd_get_32 (input_bfd, contents + offset);
-	      pinsn <<= 32;
-	      pinsn |= bfd_get_32 (input_bfd, contents + offset + 4);
-	      if ((pinsn & ((-1ULL << 50) | (63ULL << 26)))
-		   == ((1ULL << 58) | (1ULL << 52) | (57ULL << 26) /* pld */))
-		{
-		  /* Replace with paddi.  */
-		  pinsn += (2ULL << 56) + (14ULL << 26) - (57ULL << 26);
-		  r_type = R_PPC64_PCREL34;
-		  rel->r_info = ELF64_R_INFO (r_symndx, r_type);
-		  bfd_put_32 (input_bfd, pinsn >> 32, contents + offset);
-		  bfd_put_32 (input_bfd, pinsn, contents + offset + 4);
-		  goto pcrelopt;
-		}
-	    }
-	  break;
+	  if (!(relocation - from + (1ULL << 33) < 1ULL << 34
+		&& (h == NULL || SYMBOL_REFERENCES_LOCAL (info, &h->elf))))
+	    break;
+
+	  offset = rel->r_offset;
+	  pinsn = bfd_get_32 (input_bfd, contents + offset);
+	  pinsn <<= 32;
+	  pinsn |= bfd_get_32 (input_bfd, contents + offset + 4);
+	  if ((pinsn & ((-1ULL << 50) | (63ULL << 26)))
+	      != ((1ULL << 58) | (1ULL << 52) | (57ULL << 26) /* pld */))
+	    break;
+
+	  /* Replace with paddi.  */
+	  pinsn += (2ULL << 56) + (14ULL << 26) - (57ULL << 26);
+	  r_type = R_PPC64_PCREL34;
+	  rel->r_info = ELF64_R_INFO (r_symndx, r_type);
+	  bfd_put_32 (input_bfd, pinsn >> 32, contents + offset);
+	  bfd_put_32 (input_bfd, pinsn, contents + offset + 4);
+	  /* Fall through.  */
 
 	case R_PPC64_PCREL34:
-	  if (SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+	  if (!htab->params->no_pcrel_opt
+	      && rel + 1 < relend
+	      && rel[1].r_offset == rel->r_offset
+	      && rel[1].r_info == ELF64_R_INFO (0, R_PPC64_PCREL_OPT)
+	      && (h == NULL || SYMBOL_REFERENCES_LOCAL (info, &h->elf)))
 	    {
 	      offset = rel->r_offset;
 	      pinsn = bfd_get_32 (input_bfd, contents + offset);
@@ -15502,43 +16034,37 @@ ppc64_elf_relocate_section (bfd *output_
 		   == ((1ULL << 58) | (2ULL << 56) | (1ULL << 52)
 		       | (14ULL << 26) /* paddi */))
 		{
-		pcrelopt:
-		  if (rel + 1 < relend
-		      && rel[1].r_offset == offset
-		      && rel[1].r_info == ELF64_R_INFO (0, R_PPC64_PCREL_OPT))
+		  bfd_vma off2 = rel[1].r_addend;
+		  if (off2 == 0)
+		    /* zero means next insn.  */
+		    off2 = 8;
+		  off2 += offset;
+		  if (off2 + 4 <= input_section->size)
 		    {
-		      bfd_vma off2 = rel[1].r_addend;
-		      if (off2 == 0)
-			/* zero means next insn.  */
-			off2 = 8;
-		      off2 += offset;
-		      if (off2 + 4 <= input_section->size)
+		      uint64_t pinsn2;
+		      bfd_signed_vma addend_off;
+		      pinsn2 = bfd_get_32 (input_bfd, contents + off2);
+		      pinsn2 <<= 32;
+		      if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
+			{
+			  if (off2 + 8 > input_section->size)
+			    break;
+			  pinsn2 |= bfd_get_32 (input_bfd,
+						contents + off2 + 4);
+			}
+		      if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off))
 			{
-			  uint64_t pinsn2;
-			  bfd_signed_vma addend_off;
-			  pinsn2 = bfd_get_32 (input_bfd, contents + off2);
-			  pinsn2 <<= 32;
+			  addend += addend_off;
+			  rel->r_addend = addend;
+			  bfd_put_32 (input_bfd, pinsn >> 32,
+				      contents + offset);
+			  bfd_put_32 (input_bfd, pinsn,
+				      contents + offset + 4);
+			  bfd_put_32 (input_bfd, pinsn2 >> 32,
+				      contents + off2);
 			  if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
-			    {
-			      if (off2 + 8 > input_section->size)
-				break;
-			      pinsn2 |= bfd_get_32 (input_bfd,
-						    contents + off2 + 4);
-			    }
-			  if (xlate_pcrel_opt (&pinsn, &pinsn2, &addend_off))
-			    {
-			      addend += addend_off;
-			      rel->r_addend = addend;
-			      bfd_put_32 (input_bfd, pinsn >> 32,
-					  contents + offset);
-			      bfd_put_32 (input_bfd, pinsn,
-					  contents + offset + 4);
-			      bfd_put_32 (input_bfd, pinsn2 >> 32,
-					  contents + off2);
-			      if ((pinsn2 & (63ULL << 58)) == 1ULL << 58)
-				bfd_put_32 (input_bfd, pinsn2,
-					    contents + off2 + 4);
-			    }
+			    bfd_put_32 (input_bfd, pinsn2,
+					contents + off2 + 4);
 			}
 		    }
 		}
@@ -15578,7 +16104,7 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_GOT_TLSGD16_LO:
 	case R_PPC64_GOT_TLSGD16_HI:
 	case R_PPC64_GOT_TLSGD16_HA:
-	case R_PPC64_GOT_TLSGD34:
+	case R_PPC64_GOT_TLSGD_PCREL34:
 	  tls_type = TLS_TLS | TLS_GD;
 	  goto dogot;
 
@@ -15586,7 +16112,7 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_GOT_TLSLD16_LO:
 	case R_PPC64_GOT_TLSLD16_HI:
 	case R_PPC64_GOT_TLSLD16_HA:
-	case R_PPC64_GOT_TLSLD34:
+	case R_PPC64_GOT_TLSLD_PCREL34:
 	  tls_type = TLS_TLS | TLS_LD;
 	  goto dogot;
 
@@ -15594,7 +16120,7 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_GOT_TPREL16_LO_DS:
 	case R_PPC64_GOT_TPREL16_HI:
 	case R_PPC64_GOT_TPREL16_HA:
-	case R_PPC64_GOT_TPREL34:
+	case R_PPC64_GOT_TPREL_PCREL34:
 	  tls_type = TLS_TLS | TLS_TPREL;
 	  goto dogot;
 
@@ -15602,7 +16128,7 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_GOT_DTPREL16_LO_DS:
 	case R_PPC64_GOT_DTPREL16_HI:
 	case R_PPC64_GOT_DTPREL16_HA:
-	case R_PPC64_GOT_DTPREL34:
+	case R_PPC64_GOT_DTPREL_PCREL34:
 	  tls_type = TLS_TLS | TLS_DTPREL;
 	  goto dogot;
 
@@ -15624,7 +16150,7 @@ ppc64_elf_relocate_section (bfd *output_
 	    struct got_entry *ent;
 
 	    if (tls_type == (TLS_TLS | TLS_LD)
-		&& SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+		&& (h == NULL || SYMBOL_REFERENCES_LOCAL (info, &h->elf)))
 	      ent = ppc64_tlsld_got (input_bfd);
 	    else
 	      {
@@ -15691,10 +16217,8 @@ ppc64_elf_relocate_section (bfd *output_
 		if (ifunc)
 		  {
 		    relgot = htab->elf.irelplt;
-		    if (indx == 0)
-		      htab->local_ifunc_resolver = 1;
-		    else if (is_static_defined (&h->elf))
-		      htab->maybe_local_ifunc_resolver = 1;
+		    if (indx == 0 || is_static_defined (&h->elf))
+		      htab->elf.ifunc_resolvers = TRUE;
 		  }
 		else if (indx != 0
 			 || (bfd_link_pic (info)
@@ -15702,7 +16226,9 @@ ppc64_elf_relocate_section (bfd *output_
 				 || !UNDEFWEAK_NO_DYNAMIC_RELOC (info, &h->elf))
 			     && !(tls_type != 0
 				  && bfd_link_executable (info)
-				  && SYMBOL_REFERENCES_LOCAL (info, &h->elf))))
+				  && (h == NULL
+				      || SYMBOL_REFERENCES_LOCAL (info,
+								  &h->elf)))))
 		  relgot = ppc64_elf_tdata (ent->owner)->relgot;
 		if (relgot != NULL)
 		  {
@@ -15801,10 +16327,10 @@ ppc64_elf_relocate_section (bfd *output_
 	    relocation = got->output_section->vma + got->output_offset + off;
 	    addend = 0;
 	    if (!(r_type == R_PPC64_GOT_PCREL34
-		  || r_type == R_PPC64_GOT_TLSGD34
-		  || r_type == R_PPC64_GOT_TLSLD34
-		  || r_type == R_PPC64_GOT_TPREL34
-		  || r_type == R_PPC64_GOT_DTPREL34))
+		  || r_type == R_PPC64_GOT_TLSGD_PCREL34
+		  || r_type == R_PPC64_GOT_TLSLD_PCREL34
+		  || r_type == R_PPC64_GOT_TPREL_PCREL34
+		  || r_type == R_PPC64_GOT_DTPREL_PCREL34))
 	      addend = -(TOCstart + htab->sec_info[input_section->id].toc_off);
 	  }
 	  break;
@@ -16058,11 +16584,11 @@ ppc64_elf_relocate_section (bfd *output_
 
 	  if (bfd_link_pic (info)
 	      ? ((h == NULL
-		  || h->dyn_relocs != NULL)
+		  || h->elf.dyn_relocs != NULL)
 		 && ((h != NULL && pc_dynrelocs (h))
 		     || must_be_dyn_reloc (info, r_type)))
 	      : (h != NULL
-		 ? h->dyn_relocs != NULL
+		 ? h->elf.dyn_relocs != NULL
 		 : ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC))
 	    {
 	      bfd_boolean skip, relocate;
@@ -16101,7 +16627,8 @@ ppc64_elf_relocate_section (bfd *output_
 
 	      if (skip)
 		memset (&outrel, 0, sizeof outrel);
-	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
+	      else if (h != NULL
+		       && !SYMBOL_REFERENCES_LOCAL (info, &h->elf)
 		       && !is_opd
 		       && r_type != R_PPC64_TOC)
 		{
@@ -16223,10 +16750,8 @@ ppc64_elf_relocate_section (bfd *output_
 		  : ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
 		{
 		  sreloc = htab->elf.irelplt;
-		  if (indx == 0)
-		    htab->local_ifunc_resolver = 1;
-		  else if (is_static_defined (&h->elf))
-		    htab->maybe_local_ifunc_resolver = 1;
+		  if (indx == 0 || is_static_defined (&h->elf))
+		    htab->elf.ifunc_resolvers = TRUE;
 		}
 	      if (sreloc == NULL)
 		abort ();
@@ -16418,10 +16943,10 @@ ppc64_elf_relocate_section (bfd *output_
 	    {
 	      bfd_byte *p = contents + (rel->r_offset & ~3);
 	      insn = bfd_get_32 (input_bfd, p);
-	      if ((insn & (0x3f << 26)) == 12u << 26 /* addic */)
+	      if ((insn & (0x3fu << 26)) == 12u << 26 /* addic */)
 		{
 		  /* Transform addic to addi when we change reg.  */
-		  insn &= ~((0x3f << 26) | (0x1f << 16));
+		  insn &= ~((0x3fu << 26) | (0x1f << 16));
 		  insn |= (14u << 26) | (2 << 16);
 		}
 	      else
@@ -16437,19 +16962,8 @@ ppc64_elf_relocate_section (bfd *output_
 	  if (htab->do_tls_opt && relocation + addend + 0x8000 < 0x10000)
 	    {
 	      bfd_byte *p = contents + (rel->r_offset & ~3);
-	      insn = bfd_get_32 (input_bfd, p);
-	      if ((insn & ((0x3f << 26) | 0x1f << 16))
-		  != ((15u << 26) | (13 << 16)) /* addis rt,13,imm */)
-		/* xgettext:c-format */
-		info->callbacks->minfo
-		  (_("%H: warning: %s unexpected insn %#x.\n"),
-		   input_bfd, input_section, rel->r_offset,
-		   ppc64_elf_howto_table[r_type]->name, insn);
-	      else
-		{
-		  bfd_put_32 (input_bfd, NOP, p);
-		  goto copy_reloc;
-		}
+	      bfd_put_32 (input_bfd, NOP, p);
+	      goto copy_reloc;
 	    }
 	  break;
 
@@ -16547,8 +17061,8 @@ ppc64_elf_relocate_section (bfd *output_
 	     forms of all the _DS relocs bloats all reloc switches in
 	     this file.  It doesn't make much sense to use these
 	     relocs in data, so testing the insn should be safe.  */
-	  if ((insn & (0x3f << 26)) == (56u << 26)
-	      || ((insn & (0x3f << 26)) == (61u << 26) && (insn & 3) == 1))
+	  if ((insn & (0x3fu << 26)) == (56u << 26)
+	      || ((insn & (0x3fu << 26)) == (61u << 26) && (insn & 3) == 1))
 	    mask = 15;
 	  relocation += addend;
 	  addend = insn & (mask ^ 3);
@@ -16597,15 +17111,15 @@ ppc64_elf_relocate_section (bfd *output_
 	  enum complain_overflow complain = complain_overflow_signed;
 
 	  insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
-	  if ((insn & (0x3f << 26)) == 10u << 26 /* cmpli */)
+	  if ((insn & (0x3fu << 26)) == 10u << 26 /* cmpli */)
 	    complain = complain_overflow_bitfield;
 	  else if (howto->rightshift == 0
-		   ? ((insn & (0x3f << 26)) == 28u << 26 /* andi */
-		      || (insn & (0x3f << 26)) == 24u << 26 /* ori */
-		      || (insn & (0x3f << 26)) == 26u << 26 /* xori */)
-		   : ((insn & (0x3f << 26)) == 29u << 26 /* andis */
-		      || (insn & (0x3f << 26)) == 25u << 26 /* oris */
-		      || (insn & (0x3f << 26)) == 27u << 26 /* xoris */))
+		   ? ((insn & (0x3fu << 26)) == 28u << 26 /* andi */
+		      || (insn & (0x3fu << 26)) == 24u << 26 /* ori */
+		      || (insn & (0x3fu << 26)) == 26u << 26 /* xori */)
+		   : ((insn & (0x3fu << 26)) == 29u << 26 /* andis */
+		      || (insn & (0x3fu << 26)) == 25u << 26 /* oris */
+		      || (insn & (0x3fu << 26)) == 27u << 26 /* xoris */))
 	    complain = complain_overflow_unsigned;
 	  if (howto->complain_on_overflow != complain)
 	    {
@@ -16626,10 +17140,10 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_GOT_PCREL34:
 	case R_PPC64_TPREL34:
 	case R_PPC64_DTPREL34:
-	case R_PPC64_GOT_TLSGD34:
-	case R_PPC64_GOT_TLSLD34:
-	case R_PPC64_GOT_TPREL34:
-	case R_PPC64_GOT_DTPREL34:
+	case R_PPC64_GOT_TLSGD_PCREL34:
+	case R_PPC64_GOT_TLSLD_PCREL34:
+	case R_PPC64_GOT_TPREL_PCREL34:
+	case R_PPC64_GOT_DTPREL_PCREL34:
 	case R_PPC64_PLT_PCREL34:
 	case R_PPC64_PLT_PCREL34_NOTOC:
 	case R_PPC64_D28:
@@ -16715,11 +17229,10 @@ ppc64_elf_relocate_section (bfd *output_
 			   && (h->elf.root.type == bfd_link_hash_undefweak
 			       || h->elf.root.type == bfd_link_hash_undefined)
 			   && is_branch_reloc (r_type))))
-		info->callbacks->reloc_overflow (info, &h->elf.root,
-						 sym_name, reloc_name,
-						 orig_rel.r_addend,
-						 input_bfd, input_section,
-						 rel->r_offset);
+		info->callbacks->reloc_overflow
+		  (info, (struct bfd_link_hash_entry *) h, sym_name,
+		   reloc_name, orig_rel.r_addend, input_bfd, input_section,
+		   rel->r_offset);
 	    }
 	  else
 	    {
@@ -16730,8 +17243,7 @@ ppc64_elf_relocate_section (bfd *output_
 		 reloc_name, sym_name, (int) r);
 	      ret = FALSE;
 	    }
-	  if (more_info != NULL)
-	    free (more_info);
+	  free (more_info);
 	}
     copy_reloc:
       if (wrel != rel)
@@ -16863,9 +17375,7 @@ ppc64_elf_finish_dynamic_symbol (bfd *ou
       if (h->dynindx == -1)
 	abort ();
 
-      rela.r_offset = (h->root.u.def.value
-		       + h->root.u.def.section->output_section->vma
-		       + h->root.u.def.section->output_offset);
+      rela.r_offset = defined_sym_val (h);
       rela.r_info = ELF64_R_INFO (h->dynindx, R_PPC64_COPY);
       rela.r_addend = 0;
       if (h->root.u.def.section == htab->elf.sdynrelro)
@@ -16993,11 +17503,7 @@ ppc64_elf_finish_dynamic_sections (bfd *
 	      break;
 
 	    case DT_TEXTREL:
-	      if (htab->local_ifunc_resolver)
-		info->callbacks->einfo
-		  (_("%X%P: text relocations and GNU indirect "
-		     "functions will result in a segfault at runtime\n"));
-	      else if (htab->maybe_local_ifunc_resolver)
+	      if (htab->elf.ifunc_resolvers)
 		info->callbacks->einfo
 		  (_("%P: warning: text relocations and GNU indirect "
 		     "functions may result in a segfault at runtime\n"));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-ppc.h ./bfd/elf64-ppc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-ppc.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-ppc.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* PowerPC64-specific support for 64-bit ELF.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -36,6 +36,9 @@ struct ppc64_elf_params
   /* Whether to use a special call stub for __tls_get_addr.  */
   int tls_get_addr_opt;
 
+  /* Whether the special call stub should save r4..r12.  */
+  int no_tls_get_addr_regsave;
+
   /* Whether to allow multiple toc sections.  */
   int no_multi_toc;
 
@@ -51,6 +54,12 @@ struct ppc64_elf_params
   /* Set if PLT call stubs for localentry:0 functions should omit r2 save.  */
   int plt_localentry0;
 
+  /* Whether to use power10 instructions in linkage stubs.  */
+  int power10_stubs;
+
+  /* Whether R_PPC64_PCREL_OPT should be ignored.  */
+  int no_pcrel_opt;
+
   /* Whether to canonicalize .opd so that there are no overlapping
      .opd entries.  */
   int non_overlapping_opd;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-s390.c ./bfd/elf64-s390.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-s390.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-s390.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* IBM S/390-specific support for 64-bit ELF
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
    Contributed Martin Schwidefsky (schwidefsky@de.ibm.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -571,9 +571,6 @@ struct elf_s390_link_hash_entry
 {
   struct elf_link_hash_entry elf;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   /* Number of GOTPLT references for a function.  */
   bfd_signed_vma gotplt_refcount;
 
@@ -666,9 +663,6 @@ struct elf_s390_link_hash_table
     bfd_vma offset;
   } tls_ldm_got;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* Options passed from the linker.  */
   struct s390_elf_params *params;
 };
@@ -676,8 +670,9 @@ struct elf_s390_link_hash_table
 /* Get the s390 ELF linker hash table from a link_info structure.  */
 
 #define elf_s390_hash_table(p)						\
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash))	\
-   == S390_ELF_DATA ? ((struct elf_s390_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == S390_ELF_DATA)		\
+   ? (struct elf_s390_link_hash_table *) (p)->hash : NULL)
 
 #define ELF64 1
 #include "elf-s390-common.c"
@@ -706,7 +701,6 @@ link_hash_newfunc (struct bfd_hash_entry
       struct elf_s390_link_hash_entry *eh;
 
       eh = (struct elf_s390_link_hash_entry *) entry;
-      eh->dyn_relocs = NULL;
       eh->gotplt_refcount = 0;
       eh->tls_type = GOT_UNKNOWN;
       eh->ifunc_resolver_address = 0;
@@ -722,7 +716,7 @@ static struct bfd_link_hash_table *
 elf_s390_link_hash_table_create (bfd *abfd)
 {
   struct elf_s390_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_s390_link_hash_table);
+  size_t amt = sizeof (struct elf_s390_link_hash_table);
 
   ret = (struct elf_s390_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -751,37 +745,6 @@ elf_s390_copy_indirect_symbol (struct bf
   edir = (struct elf_s390_link_hash_entry *) dir;
   eind = (struct elf_s390_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect
       && dir->got.refcount <= 0)
     {
@@ -887,7 +850,7 @@ elf_s390_check_relocs (bfd *abfd,
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  /* A local symbol.  */
-	  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 					abfd, r_symndx);
 	  if (isym == NULL)
 	    return FALSE;
@@ -1241,7 +1204,7 @@ elf_s390_check_relocs (bfd *abfd,
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
 		{
-		  head = &((struct elf_s390_link_hash_entry *) h)->dyn_relocs;
+		  head = &h->dyn_relocs;
 		}
 	      else
 		{
@@ -1251,7 +1214,7 @@ elf_s390_check_relocs (bfd *abfd,
 		  asection *s;
 		  void *vpp;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    return FALSE;
@@ -1267,7 +1230,7 @@ elf_s390_check_relocs (bfd *abfd,
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 		  p = ((struct elf_dyn_relocs *)
 		       bfd_alloc (htab->elf.dynobj, amt));
 		  if (p == NULL)
@@ -1356,23 +1319,6 @@ elf_s390_adjust_gotplt (struct elf_s390_
   h->gotplt_refcount = -1;
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = elf_s390_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -1395,11 +1341,9 @@ elf_s390_adjust_dynamic_symbol (struct b
 	{
 	  bfd_size_type pc_count = 0, count = 0;
 	  struct elf_dyn_relocs **pp;
-	  struct elf_s390_link_hash_entry *eh;
 	  struct elf_dyn_relocs *p;
 
-	  eh = (struct elf_s390_link_hash_entry *) h;
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      pc_count += p->pc_count;
 	      p->count -= p->pc_count;
@@ -1498,7 +1442,7 @@ elf_s390_adjust_dynamic_symbol (struct b
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (ELIMINATE_COPY_RELOCS && !readonly_dynrelocs (h))
+  if (ELIMINATE_COPY_RELOCS && !_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -1549,7 +1493,6 @@ allocate_dynrelocs (struct elf_link_hash
 {
   struct bfd_link_info *info;
   struct elf_s390_link_hash_table *htab;
-  struct elf_s390_link_hash_entry *eh = (struct elf_s390_link_hash_entry *)h;
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
@@ -1680,7 +1623,7 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -1695,7 +1638,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -1708,12 +1651,12 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -1753,13 +1696,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * sizeof (Elf64_External_Rela);
@@ -1768,33 +1711,6 @@ allocate_dynrelocs (struct elf_link_hash
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -2001,53 +1917,7 @@ elf_s390_size_dynamic_sections (bfd *out
 	return FALSE;
     }
 
-  if (htab->elf.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in elf_s390_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->elf.splt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf64_External_Rela)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->elf, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Return the base VMA address which should be subtracted from real addresses
@@ -2386,7 +2256,7 @@ elf_s390_relocate_section (bfd *output_b
 				  & 0xff00f000) == 0xe300c000
 			      && bfd_get_8 (input_bfd,
 					    contents + rel->r_offset + 3) == 0x04))
-		      && (isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		      && (isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 							input_bfd, r_symndx))
 		      && isym->st_shndx != SHN_ABS
 		      && h != htab->elf.hdynamic
@@ -3700,7 +3570,7 @@ elf_s390_finish_dynamic_sections (bfd *o
 	    if (local_plt[i].plt.offset != (bfd_vma) -1)
 	      {
 		asection *sec = local_plt[i].sec;
-		isym = bfd_sym_from_r_symndx (&htab->sym_cache, ibfd, i);
+		isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, ibfd, i);
 		if (isym == NULL)
 		  return FALSE;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-sparc.c ./bfd/elf64-sparc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-sparc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-sparc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* SPARC-specific support for 64-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -79,13 +79,11 @@ elf64_sparc_slurp_one_reloc_table (bfd *
   bfd_size_type count;
   arelent *relents;
 
-  allocated = bfd_malloc (rel_hdr->sh_size);
+  if (bfd_seek (abfd, rel_hdr->sh_offset, SEEK_SET) != 0)
+    return FALSE;
+  allocated = _bfd_malloc_and_read (abfd, rel_hdr->sh_size, rel_hdr->sh_size);
   if (allocated == NULL)
-    goto error_return;
-
-  if (bfd_seek (abfd, rel_hdr->sh_offset, SEEK_SET) != 0
-      || bfd_bread (allocated, rel_hdr->sh_size, abfd) != rel_hdr->sh_size)
-    goto error_return;
+    return FALSE;
 
   native_relocs = (bfd_byte *) allocated;
 
@@ -163,14 +161,11 @@ elf64_sparc_slurp_one_reloc_table (bfd *
 
   canon_reloc_count (asect) += relent - relents;
 
-  if (allocated != NULL)
-    free (allocated);
-
+  free (allocated);
   return TRUE;
 
  error_return:
-  if (allocated != NULL)
-    free (allocated);
+  free (allocated);
   return FALSE;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-tilegx.c ./bfd/elf64-tilegx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-tilegx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-tilegx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILE-Gx-specific support for 64-bit ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-tilegx.h ./bfd/elf64-tilegx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-tilegx.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-tilegx.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILE-Gx-specific support for 64-bit ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-x86-64.c ./bfd/elf64-x86-64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf64-x86-64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf64-x86-64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* X86-64 specific support for ELF
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
    Contributed by Jan Hubicka <jh@suse.cz>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -20,7 +20,6 @@
    MA 02110-1301, USA.  */
 
 #include "elfxx-x86.h"
-#include "elf-nacl.h"
 #include "dwarf2.h"
 #include "libiberty.h"
 
@@ -196,9 +195,6 @@ static reloc_howto_type x86_64_elf_howto
 	FALSE)
 };
 
-/* Set if a relocation is converted from a GOTPCREL relocation.  */
-#define R_X86_64_converted_reloc_bit (1 << 7)
-
 #define X86_PCREL_TYPE_P(TYPE)		\
   (   ((TYPE) == R_X86_64_PC8)		\
    || ((TYPE) == R_X86_64_PC16)		\
@@ -988,12 +984,6 @@ static const struct elf_x86_non_lazy_plt
     sizeof (elf_x86_64_eh_frame_non_lazy_plt) /* eh_frame_plt_size */
   };
 
-static const struct elf_x86_backend_data elf_x86_64_arch_bed =
-  {
-    is_normal				 /* os */
-  };
-
-#define	elf_backend_arch_data	&elf_x86_64_arch_bed
 
 static bfd_boolean
 elf64_x86_64_elf_object_p (bfd *abfd)
@@ -1223,7 +1213,8 @@ elf_x86_64_check_tls_transition (bfd *ab
 
     case R_X86_64_GOTPC32_TLSDESC:
       /* Check transition from GDesc access model:
-		leaq x@tlsdesc(%rip), %rax
+		leaq x@tlsdesc(%rip), %rax <--- LP64 mode.
+		rex leal x@tlsdesc(%rip), %eax <--- X32 mode.
 
 	 Make sure it's a leaq adding rip to a 32-bit offset
 	 into any register, although it's probably almost always
@@ -1233,7 +1224,8 @@ elf_x86_64_check_tls_transition (bfd *ab
 	return FALSE;
 
       val = bfd_get_8 (abfd, contents + offset - 3);
-      if ((val & 0xfb) != 0x48)
+      val &= 0xfb;
+      if (val != 0x48 && (ABI_64_P (abfd) || val != 0x40))
 	return FALSE;
 
       if (bfd_get_8 (abfd, contents + offset - 2) != 0x8d)
@@ -1244,13 +1236,26 @@ elf_x86_64_check_tls_transition (bfd *ab
 
     case R_X86_64_TLSDESC_CALL:
       /* Check transition from GDesc access model:
-		call *x@tlsdesc(%rax)
+		call *x@tlsdesc(%rax) <--- LP64 mode.
+		call *x@tlsdesc(%eax) <--- X32 mode.
        */
       if (offset + 2 <= sec->size)
 	{
-	  /* Make sure that it's a call *x@tlsdesc(%rax).  */
+	  unsigned int prefix;
 	  call = contents + offset;
-	  return call[0] == 0xff && call[1] == 0x10;
+	  prefix = 0;
+	  if (!ABI_64_P (abfd))
+	    {
+	      /* Check for call *x@tlsdesc(%eax).  */
+	      if (call[0] == 0x67)
+		{
+		  prefix = 1;
+		  if (offset + 3 > sec->size)
+		    return FALSE;
+		}
+	    }
+	  /* Make sure that it's a call *x@tlsdesc(%rax).  */
+	  return call[prefix] == 0xff && call[1 + prefix] == 0x10;
 	}
 
       return FALSE;
@@ -1366,7 +1371,7 @@ elf_x86_64_tls_transition (struct bfd_li
 	    {
 	      Elf_Internal_Sym *isym;
 
-	      isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	      isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 					    abfd, r_symndx);
 	      name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL);
 	    }
@@ -1494,6 +1499,8 @@ elf_x86_64_convert_load_reloc (bfd *abfd
   bfd_boolean no_overflow;
   bfd_boolean relocx;
   bfd_boolean to_reloc_pc32;
+  bfd_boolean abs_symbol;
+  bfd_boolean local_ref;
   asection *tsec;
   bfd_signed_vma raddend;
   unsigned int opcode;
@@ -1501,6 +1508,7 @@ elf_x86_64_convert_load_reloc (bfd *abfd
   unsigned int r_type = *r_type_p;
   unsigned int r_symndx;
   bfd_vma roff = irel->r_offset;
+  bfd_vma abs_relocation;
 
   if (roff < (r_type == R_X86_64_REX_GOTPCRELX ? 3 : 2))
     return TRUE;
@@ -1544,18 +1552,26 @@ elf_x86_64_convert_load_reloc (bfd *abfd
 		   || no_overflow
 		   || is_pic);
 
+  abs_symbol = FALSE;
+  abs_relocation = 0;
+
   /* Get the symbol referred to by the reloc.  */
   if (h == NULL)
     {
       Elf_Internal_Sym *isym
-	= bfd_sym_from_r_symndx (&htab->sym_cache, abfd, r_symndx);
+	= bfd_sym_from_r_symndx (&htab->elf.sym_cache, abfd, r_symndx);
 
       /* Skip relocation against undefined symbols.  */
       if (isym->st_shndx == SHN_UNDEF)
 	return TRUE;
 
+      local_ref = TRUE;
       if (isym->st_shndx == SHN_ABS)
-	tsec = bfd_abs_section_ptr;
+	{
+	  tsec = bfd_abs_section_ptr;
+	  abs_symbol = TRUE;
+	  abs_relocation = isym->st_value;
+	}
       else if (isym->st_shndx == SHN_COMMON)
 	tsec = bfd_com_section_ptr;
       else if (isym->st_shndx == SHN_X86_64_LCOMMON)
@@ -1571,9 +1587,11 @@ elf_x86_64_convert_load_reloc (bfd *abfd
 	 GOTPCRELX relocations since we need to modify REX byte.
 	 It is OK convert mov with R_X86_64_GOTPCREL to
 	 R_X86_64_PC32.  */
-      bfd_boolean local_ref;
       struct elf_x86_link_hash_entry *eh = elf_x86_hash_entry (h);
 
+      abs_symbol = ABS_SYMBOL_P (h);
+      abs_relocation = h->root.u.def.value;
+
       /* NB: Also set linker_def via SYMBOL_REFERENCES_LOCAL_P.  */
       local_ref = SYMBOL_REFERENCES_LOCAL_P (link_info, h);
       if ((relocx || opcode == 0x8b)
@@ -1647,7 +1665,7 @@ elf_x86_64_convert_load_reloc (bfd *abfd
   if (no_overflow)
     return TRUE;
 
-convert:
+ convert:
   if (opcode == 0xff)
     {
       /* We have "call/jmp *foo@GOTPCREL(%rip)".  */
@@ -1713,6 +1731,9 @@ convert:
 
       if (opcode == 0x8b)
 	{
+	  if (abs_symbol && local_ref)
+	    to_reloc_pc32 = FALSE;
+
 	  if (to_reloc_pc32)
 	    {
 	      /* Convert "mov foo@GOTPCREL(%rip), %reg" to
@@ -1772,7 +1793,22 @@ convert:
 	     overflow when sign-extending imm32 to imm64.  */
 	  r_type = (rex & REX_W) != 0 ? R_X86_64_32S : R_X86_64_32;
 
-rewrite_modrm_rex:
+	rewrite_modrm_rex:
+	  if (abs_relocation)
+	    {
+	      /* Check if R_X86_64_32S/R_X86_64_32 fits.  */
+	      if (r_type == R_X86_64_32S)
+		{
+		  if ((abs_relocation + 0x80000000) > 0xffffffff)
+		    return TRUE;
+		}
+	      else
+		{
+		  if (abs_relocation > 0xffffffff)
+		    return TRUE;
+		}
+	    }
+
 	  bfd_put_8 (abfd, modrm, contents + roff - 1);
 
 	  if (rex)
@@ -1819,15 +1855,6 @@ elf_x86_64_check_relocs (bfd *abfd, stru
   if (bfd_link_relocatable (info))
     return TRUE;
 
-  /* Don't do anything special with non-loaded, non-alloced sections.
-     In particular, any relocs in such sections should not affect GOT
-     and PLT reference counting (ie. we don't allow them to create GOT
-     or PLT entries), there's no possibility or desire to optimize TLS
-     relocs, and there's not much point in propagating relocs to shared
-     libs that the dynamic linker won't relocate.  */
-  if ((sec->flags & SEC_ALLOC) == 0)
-    return TRUE;
-
   htab = elf_x86_hash_table (info, X86_64_ELF_DATA);
   if (htab == NULL)
     {
@@ -1864,6 +1891,7 @@ elf_x86_64_check_relocs (bfd *abfd, stru
       const char *name;
       bfd_boolean size_reloc;
       bfd_boolean converted_reloc;
+      bfd_boolean no_dynreloc;
 
       r_symndx = htab->r_sym (rel->r_info);
       r_type = ELF32_R_TYPE (rel->r_info);
@@ -1879,7 +1907,7 @@ elf_x86_64_check_relocs (bfd *abfd, stru
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  /* A local symbol.  */
-	  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 					abfd, r_symndx);
 	  if (isym == NULL)
 	    goto error_return;
@@ -1968,6 +1996,10 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 	    converted = TRUE;
 	}
 
+      if (!_bfd_elf_x86_valid_reloc_p (sec, info, htab, rel, h, isym,
+				       symtab_hdr, &no_dynreloc))
+	return FALSE;
+
       if (! elf_x86_64_tls_transition (info, abfd, sec, contents,
 				       symtab_hdr, sym_hashes,
 				       &r_type, GOT_UNKNOWN,
@@ -2014,12 +2046,26 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 
 	    switch (r_type)
 	      {
-	      default: tls_type = GOT_NORMAL; break;
-	      case R_X86_64_TLSGD: tls_type = GOT_TLS_GD; break;
-	      case R_X86_64_GOTTPOFF: tls_type = GOT_TLS_IE; break;
+	      default:
+		tls_type = GOT_NORMAL;
+		if (h)
+		  {
+		    if (ABS_SYMBOL_P (h))
+		      tls_type = GOT_ABS;
+		  }
+		else if (isym->st_shndx == SHN_ABS)
+		  tls_type = GOT_ABS;
+		break;
+	      case R_X86_64_TLSGD:
+		tls_type = GOT_TLS_GD;
+		break;
+	      case R_X86_64_GOTTPOFF:
+		tls_type = GOT_TLS_IE;
+		break;
 	      case R_X86_64_GOTPC32_TLSDESC:
 	      case R_X86_64_TLSDESC_CALL:
-		tls_type = GOT_TLS_GDESC; break;
+		tls_type = GOT_TLS_GDESC;
+		break;
 	      }
 
 	    if (h != NULL)
@@ -2164,7 +2210,7 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 	case R_X86_64_PC32_BND:
 	case R_X86_64_PC64:
 	case R_X86_64_64:
-pointer:
+	pointer:
 	  if (eh != NULL && (sec->flags & SEC_CODE) != 0)
 	    eh->zero_undefweak |= 0x2;
 	  /* We are called after all symbols have been resolved.  Only
@@ -2229,9 +2275,10 @@ pointer:
 	    }
 
 	  size_reloc = FALSE;
-do_size:
-	  if (NEED_DYNAMIC_RELOCATION_P (info, TRUE, h, sec, r_type,
-					 htab->pointer_r_type))
+	do_size:
+	  if (!no_dynreloc
+	      && NEED_DYNAMIC_RELOCATION_P (info, TRUE, h, sec, r_type,
+					    htab->pointer_r_type))
 	    {
 	      struct elf_dyn_relocs *p;
 	      struct elf_dyn_relocs **head;
@@ -2252,7 +2299,7 @@ do_size:
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
-		head = &eh->dyn_relocs;
+		head = &h->dyn_relocs;
 	      else
 		{
 		  /* Track dynamic relocs needed for local syms too.
@@ -2261,7 +2308,7 @@ do_size:
 		  asection *s;
 		  void **vpp;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    goto error_return;
@@ -2279,7 +2326,7 @@ do_size:
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 
 		  p = ((struct elf_dyn_relocs *)
 		       bfd_alloc (htab->elf.dynobj, amt));
@@ -2336,7 +2383,7 @@ do_size:
 
   return TRUE;
 
-error_return:
+ error_return:
   if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
   sec->check_relocs_failed = 1;
@@ -2663,7 +2710,7 @@ elf_x86_64_relocate_section (bfd *output
 	  switch (r_type)
 	    {
 	    default:
-bad_ifunc_reloc:
+	    bad_ifunc_reloc:
 	      if (h->root.root.string)
 		name = h->root.root.string;
 	      else
@@ -2687,7 +2734,7 @@ bad_ifunc_reloc:
 		goto do_relocation;
 	      /* FALLTHROUGH */
 	    case R_X86_64_64:
-do_ifunc_pointer:
+	    do_ifunc_pointer:
 	      if (rel->r_addend != 0)
 		{
 		  if (h->root.root.string)
@@ -2773,7 +2820,7 @@ do_ifunc_pointer:
 	    }
 	}
 
-skip_ifunc:
+    skip_ifunc:
       resolved_to_zero = (eh != NULL
 			  && UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh));
 
@@ -2865,7 +2912,14 @@ skip_ifunc:
 			      base_got->contents + off);
 		  local_got_offsets[r_symndx] |= 1;
 
-		  if (bfd_link_pic (info))
+		  /* NB: GOTPCREL relocations against local absolute
+		     symbol store relocation value in the GOT slot
+		     without relative relocation.  */
+		  if (bfd_link_pic (info)
+		      && !(sym->st_shndx == SHN_ABS
+			   && (r_type == R_X86_64_GOTPCREL
+			       || r_type == R_X86_64_GOTPCRELX
+			       || r_type == R_X86_64_REX_GOTPCRELX)))
 		    relative_reloc = TRUE;
 		}
 	    }
@@ -3032,7 +3086,7 @@ skip_ifunc:
 	      break;
 	    }
 
-use_plt:
+	use_plt:
 	  if (h->plt.offset != (bfd_vma) -1)
 	    {
 	      if (htab->plt_second != NULL)
@@ -3147,7 +3201,7 @@ use_plt:
 	  /* FIXME: The ABI says the linker should make sure the value is
 	     the same when it's zeroextended to 64 bit.	 */
 
-direct:
+	direct:
 	  if ((input_section->flags & SEC_ALLOC) == 0)
 	    break;
 
@@ -3160,7 +3214,7 @@ direct:
 				    && (X86_PCREL_TYPE_P (r_type)
 					|| X86_SIZE_TYPE_P (r_type)));
 
-	  if (GENERATE_DYNAMIC_RELOCATION_P (info, eh, r_type,
+	  if (GENERATE_DYNAMIC_RELOCATION_P (info, eh, r_type, sec,
 					     need_copy_reloc_in_pie,
 					     resolved_to_zero, FALSE))
 	    {
@@ -3358,7 +3412,7 @@ direct:
 			  if (roff < 3
 			      || (roff - 3 + 22) > input_section->size)
 			    {
-corrupt_input:
+			    corrupt_input:
 			      info->callbacks->einfo
 				(_("%F%P: corrupt input: %pB\n"),
 				 input_bfd);
@@ -3401,10 +3455,13 @@ corrupt_input:
 		{
 		  /* GDesc -> LE transition.
 		     It's originally something like:
-		     leaq x@tlsdesc(%rip), %rax
+		     leaq x@tlsdesc(%rip), %rax <--- LP64 mode.
+		     rex leal x@tlsdesc(%rip), %eax <--- X32 mode.
 
 		     Change it to:
-		     movl $x@tpoff, %rax.  */
+		     movq $x@tpoff, %rax <--- LP64 mode.
+		     rex movl $x@tpoff, %eax <--- X32 mode.
+		   */
 
 		  unsigned int val, type;
 
@@ -3412,7 +3469,8 @@ corrupt_input:
 		    goto corrupt_input;
 		  type = bfd_get_8 (input_bfd, contents + roff - 3);
 		  val = bfd_get_8 (input_bfd, contents + roff - 1);
-		  bfd_put_8 (output_bfd, 0x48 | ((type >> 2) & 1),
+		  bfd_put_8 (output_bfd,
+			     (type & 0x48) | ((type >> 2) & 1),
 			     contents + roff - 3);
 		  bfd_put_8 (output_bfd, 0xc7, contents + roff - 2);
 		  bfd_put_8 (output_bfd, 0xc0 | ((val >> 3) & 7),
@@ -3426,11 +3484,30 @@ corrupt_input:
 		{
 		  /* GDesc -> LE transition.
 		     It's originally:
-		     call *(%rax)
+		     call *(%rax) <--- LP64 mode.
+		     call *(%eax) <--- X32 mode.
 		     Turn it into:
-		     xchg %ax,%ax.  */
-		  bfd_put_8 (output_bfd, 0x66, contents + roff);
-		  bfd_put_8 (output_bfd, 0x90, contents + roff + 1);
+		     xchg %ax,%ax <-- LP64 mode.
+		     nopl (%rax)  <-- X32 mode.
+		   */
+		  unsigned int prefix = 0;
+		  if (!ABI_64_P (input_bfd))
+		    {
+		      /* Check for call *x@tlsdesc(%eax).  */
+		      if (contents[roff] == 0x67)
+			prefix = 1;
+		    }
+		  if (prefix)
+		    {
+		      bfd_put_8 (output_bfd, 0x0f, contents + roff);
+		      bfd_put_8 (output_bfd, 0x1f, contents + roff + 1);
+		      bfd_put_8 (output_bfd, 0x00, contents + roff + 2);
+		    }
+		  else
+		    {
+		      bfd_put_8 (output_bfd, 0x66, contents + roff);
+		      bfd_put_8 (output_bfd, 0x90, contents + roff + 1);
+		    }
 		  continue;
 		}
 	      else if (r_type == R_X86_64_GOTTPOFF)
@@ -3741,13 +3818,18 @@ corrupt_input:
 		{
 		  /* GDesc -> IE transition.
 		     It's originally something like:
-		     leaq x@tlsdesc(%rip), %rax
+		     leaq x@tlsdesc(%rip), %rax <--- LP64 mode.
+		     rex leal x@tlsdesc(%rip), %eax <--- X32 mode.
 
 		     Change it to:
-		     movq x@gottpoff(%rip), %rax # before xchg %ax,%ax.  */
+		     # before xchg %ax,%ax in LP64 mode.
+		     movq x@gottpoff(%rip), %rax
+		     # before nopl (%rax) in X32 mode.
+		     rex movl x@gottpoff(%rip), %eax
+		  */
 
 		  /* Now modify the instruction as appropriate. To
-		     turn a leaq into a movq in the form we use it, it
+		     turn a lea into a mov in the form we use it, it
 		     suffices to change the second byte from 0x8d to
 		     0x8b.  */
 		  if (roff < 2)
@@ -3768,13 +3850,32 @@ corrupt_input:
 		{
 		  /* GDesc -> IE transition.
 		     It's originally:
-		     call *(%rax)
+		     call *(%rax) <--- LP64 mode.
+		     call *(%eax) <--- X32 mode.
 
 		     Change it to:
-		     xchg %ax, %ax.  */
+		     xchg %ax, %ax <-- LP64 mode.
+		     nopl (%rax)  <-- X32 mode.
+		   */
 
-		  bfd_put_8 (output_bfd, 0x66, contents + roff);
-		  bfd_put_8 (output_bfd, 0x90, contents + roff + 1);
+		  unsigned int prefix = 0;
+		  if (!ABI_64_P (input_bfd))
+		    {
+		      /* Check for call *x@tlsdesc(%eax).  */
+		      if (contents[roff] == 0x67)
+			prefix = 1;
+		    }
+		  if (prefix)
+		    {
+		      bfd_put_8 (output_bfd, 0x0f, contents + roff);
+		      bfd_put_8 (output_bfd, 0x1f, contents + roff + 1);
+		      bfd_put_8 (output_bfd, 0x00, contents + roff + 2);
+		    }
+		  else
+		    {
+		      bfd_put_8 (output_bfd, 0x66, contents + roff);
+		      bfd_put_8 (output_bfd, 0x90, contents + roff + 1);
+		    }
 		  continue;
 		}
 	      else
@@ -3969,12 +4070,12 @@ corrupt_input:
 	    }
 	}
 
-do_relocation:
+    do_relocation:
       r = _bfd_final_link_relocate (howto, input_bfd, input_section,
 				    contents, rel->r_offset,
 				    relocation, rel->r_addend);
 
-check_relocation_error:
+    check_relocation_error:
       if (r != bfd_reloc_ok)
 	{
 	  const char *name;
@@ -4397,7 +4498,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
       else
 	{
 	  BFD_ASSERT((h->got.offset & 1) == 0);
-do_glob_dat:
+	do_glob_dat:
 	  bfd_put_64 (output_bfd, (bfd_vma) 0,
 		      htab->elf.sgot->contents + h->got.offset);
 	  rela.r_info = htab->r_info (h->dynindx, R_X86_64_GLOB_DAT);
@@ -4565,12 +4666,12 @@ elf_x86_64_finish_dynamic_sections (bfd
 		       + htab->lazy_plt->plt0_got2_offset));
 	}
 
-      if (htab->tlsdesc_plt)
+      if (htab->elf.tlsdesc_plt)
 	{
 	  bfd_put_64 (output_bfd, (bfd_vma) 0,
-		      htab->elf.sgot->contents + htab->tlsdesc_got);
+		      htab->elf.sgot->contents + htab->elf.tlsdesc_got);
 
-	  memcpy (htab->elf.splt->contents + htab->tlsdesc_plt,
+	  memcpy (htab->elf.splt->contents + htab->elf.tlsdesc_plt,
 		  htab->lazy_plt->plt_tlsdesc_entry,
 		  htab->lazy_plt->plt_tlsdesc_entry_size);
 
@@ -4583,10 +4684,10 @@ elf_x86_64_finish_dynamic_sections (bfd
 		       + 8
 		       - htab->elf.splt->output_section->vma
 		       - htab->elf.splt->output_offset
-		       - htab->tlsdesc_plt
+		       - htab->elf.tlsdesc_plt
 		       - htab->lazy_plt->plt_tlsdesc_got1_insn_end),
 		      (htab->elf.splt->contents
-		       + htab->tlsdesc_plt
+		       + htab->elf.tlsdesc_plt
 		       + htab->lazy_plt->plt_tlsdesc_got1_offset));
 	  /* Add offset for indirect branch via GOT+TDG, where TDG
 	     stands for htab->tlsdesc_got, subtracting the offset
@@ -4594,13 +4695,13 @@ elf_x86_64_finish_dynamic_sections (bfd
 	  bfd_put_32 (output_bfd,
 		      (htab->elf.sgot->output_section->vma
 		       + htab->elf.sgot->output_offset
-		       + htab->tlsdesc_got
+		       + htab->elf.tlsdesc_got
 		       - htab->elf.splt->output_section->vma
 		       - htab->elf.splt->output_offset
-		       - htab->tlsdesc_plt
+		       - htab->elf.tlsdesc_plt
 		       - htab->lazy_plt->plt_tlsdesc_got2_insn_end),
 		      (htab->elf.splt->contents
-		       + htab->tlsdesc_plt
+		       + htab->elf.tlsdesc_plt
 		       + htab->lazy_plt->plt_tlsdesc_got2_offset));
 	}
     }
@@ -4642,9 +4743,6 @@ elf_x86_64_output_arch_local_syms
   return TRUE;
 }
 
-/* Forward declaration.  */
-static const struct elf_x86_lazy_plt_layout elf_x86_64_nacl_plt;
-
 /* Similar to _bfd_elf_get_synthetic_symtab.  Support PLTs with all
    dynamic relocations.   */
 
@@ -4689,31 +4787,19 @@ elf_x86_64_get_synthetic_symtab (bfd *ab
   if (relsize <= 0)
     return -1;
 
-  if (get_elf_x86_backend_data (abfd)->target_os != is_nacl)
+  lazy_plt = &elf_x86_64_lazy_plt;
+  non_lazy_plt = &elf_x86_64_non_lazy_plt;
+  lazy_bnd_plt = &elf_x86_64_lazy_bnd_plt;
+  non_lazy_bnd_plt = &elf_x86_64_non_lazy_bnd_plt;
+  if (ABI_64_P (abfd))
     {
-      lazy_plt = &elf_x86_64_lazy_plt;
-      non_lazy_plt = &elf_x86_64_non_lazy_plt;
-      lazy_bnd_plt = &elf_x86_64_lazy_bnd_plt;
-      non_lazy_bnd_plt = &elf_x86_64_non_lazy_bnd_plt;
-      if (ABI_64_P (abfd))
-	{
-	  lazy_ibt_plt = &elf_x86_64_lazy_ibt_plt;
-	  non_lazy_ibt_plt = &elf_x86_64_non_lazy_ibt_plt;
-	}
-      else
-	{
-	  lazy_ibt_plt = &elf_x32_lazy_ibt_plt;
-	  non_lazy_ibt_plt = &elf_x32_non_lazy_ibt_plt;
-	}
+      lazy_ibt_plt = &elf_x86_64_lazy_ibt_plt;
+      non_lazy_ibt_plt = &elf_x86_64_non_lazy_ibt_plt;
     }
   else
     {
-      lazy_plt = &elf_x86_64_nacl_plt;
-      non_lazy_plt = NULL;
-      lazy_bnd_plt = NULL;
-      non_lazy_bnd_plt = NULL;
-      lazy_ibt_plt = NULL;
-      non_lazy_ibt_plt = NULL;
+      lazy_ibt_plt = &elf_x32_lazy_ibt_plt;
+      non_lazy_ibt_plt = &elf_x32_non_lazy_ibt_plt;
     }
 
   count = 0;
@@ -4724,15 +4810,8 @@ elf_x86_64_get_synthetic_symtab (bfd *ab
 	continue;
 
       /* Get the PLT section contents.  */
-      plt_contents = (bfd_byte *) bfd_malloc (plt->size);
-      if (plt_contents == NULL)
+      if (!bfd_malloc_and_get_section (abfd, plt, &plt_contents))
 	break;
-      if (!bfd_get_section_contents (abfd, (asection *) plt,
-				     plt_contents, 0, plt->size))
-	{
-	  free (plt_contents);
-	  break;
-	}
 
       /* Check what kind of PLT it is.  */
       plt_type = plt_unknown;
@@ -5028,6 +5107,8 @@ static bfd *
 elf_x86_64_link_setup_gnu_properties (struct bfd_link_info *info)
 {
   struct elf_x86_init_table init_table;
+  const struct elf_backend_data *bed;
+  struct elf_x86_link_hash_table *htab;
 
   if ((int) R_X86_64_standard >= (int) R_X86_64_converted_reloc_bit
       || (int) R_X86_64_max <= (int) R_X86_64_converted_reloc_bit
@@ -5040,42 +5121,30 @@ elf_x86_64_link_setup_gnu_properties (st
   /* This is unused for x86-64.  */
   init_table.plt0_pad_byte = 0x90;
 
-  if (get_elf_x86_backend_data (info->output_bfd)->target_os != is_nacl)
+  bed = get_elf_backend_data (info->output_bfd);
+  htab = elf_x86_hash_table (info, bed->target_id);
+  if (!htab)
+    abort ();
+  if (htab->params->bndplt)
     {
-      const struct elf_backend_data *bed
-	= get_elf_backend_data (info->output_bfd);
-      struct elf_x86_link_hash_table *htab
-	= elf_x86_hash_table (info, bed->target_id);
-      if (!htab)
-	abort ();
-      if (htab->params->bndplt)
-	{
-	  init_table.lazy_plt = &elf_x86_64_lazy_bnd_plt;
-	  init_table.non_lazy_plt = &elf_x86_64_non_lazy_bnd_plt;
-	}
-      else
-	{
-	  init_table.lazy_plt = &elf_x86_64_lazy_plt;
-	  init_table.non_lazy_plt = &elf_x86_64_non_lazy_plt;
-	}
+      init_table.lazy_plt = &elf_x86_64_lazy_bnd_plt;
+      init_table.non_lazy_plt = &elf_x86_64_non_lazy_bnd_plt;
+    }
+  else
+    {
+      init_table.lazy_plt = &elf_x86_64_lazy_plt;
+      init_table.non_lazy_plt = &elf_x86_64_non_lazy_plt;
+    }
 
-      if (ABI_64_P (info->output_bfd))
-	{
-	  init_table.lazy_ibt_plt = &elf_x86_64_lazy_ibt_plt;
-	  init_table.non_lazy_ibt_plt = &elf_x86_64_non_lazy_ibt_plt;
-	}
-      else
-	{
-	  init_table.lazy_ibt_plt = &elf_x32_lazy_ibt_plt;
-	  init_table.non_lazy_ibt_plt = &elf_x32_non_lazy_ibt_plt;
-	}
+  if (ABI_64_P (info->output_bfd))
+    {
+      init_table.lazy_ibt_plt = &elf_x86_64_lazy_ibt_plt;
+      init_table.non_lazy_ibt_plt = &elf_x86_64_non_lazy_ibt_plt;
     }
   else
     {
-      init_table.lazy_plt = &elf_x86_64_nacl_plt;
-      init_table.non_lazy_plt = NULL;
-      init_table.lazy_ibt_plt = NULL;
-      init_table.non_lazy_ibt_plt = NULL;
+      init_table.lazy_ibt_plt = &elf_x32_lazy_ibt_plt;
+      init_table.non_lazy_ibt_plt = &elf_x32_non_lazy_ibt_plt;
     }
 
   if (ABI_64_P (info->output_bfd))
@@ -5221,13 +5290,8 @@ elf_x86_64_special_sections[]=
 #undef  TARGET_LITTLE_NAME
 #define TARGET_LITTLE_NAME		    "elf64-x86-64-sol2"
 
-static const struct elf_x86_backend_data elf_x86_64_solaris_arch_bed =
-  {
-    is_solaris				    /* os */
-  };
-
-#undef	elf_backend_arch_data
-#define	elf_backend_arch_data		    &elf_x86_64_solaris_arch_bed
+#undef ELF_TARGET_OS
+#define	ELF_TARGET_OS			    is_solaris
 
 /* Restore default: we cannot use ELFOSABI_SOLARIS, otherwise ELFOSABI_NONE
    objects won't be recognized.  */
@@ -5267,30 +5331,6 @@ elf64_x86_64_copy_solaris_special_sectio
 
 #include "elf64-target.h"
 
-/* Native Client support.  */
-
-static bfd_boolean
-elf64_x86_64_nacl_elf_object_p (bfd *abfd)
-{
-  /* Set the right machine number for a NaCl x86-64 ELF64 file.  */
-  bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_x86_64_nacl);
-  return TRUE;
-}
-
-#undef	TARGET_LITTLE_SYM
-#define	TARGET_LITTLE_SYM		x86_64_elf64_nacl_vec
-#undef	TARGET_LITTLE_NAME
-#define	TARGET_LITTLE_NAME		"elf64-x86-64-nacl"
-#undef	elf64_bed
-#define	elf64_bed			elf64_x86_64_nacl_bed
-
-#undef	ELF_MAXPAGESIZE
-#undef	ELF_MINPAGESIZE
-#undef	ELF_COMMONPAGESIZE
-#define ELF_MAXPAGESIZE			0x10000
-#define ELF_MINPAGESIZE			0x10000
-#define ELF_COMMONPAGESIZE		0x10000
-
 /* Restore defaults.  */
 #undef	ELF_OSABI
 #undef	elf_backend_static_tls_alignment
@@ -5299,193 +5339,6 @@ elf64_x86_64_nacl_elf_object_p (bfd *abf
 #undef  elf_backend_strtab_flags
 #undef  elf_backend_copy_special_section_fields
 
-/* NaCl uses substantially different PLT entries for the same effects.  */
-
-#undef	elf_backend_plt_alignment
-#define elf_backend_plt_alignment	5
-#define NACL_PLT_ENTRY_SIZE		64
-#define	NACLMASK			0xe0 /* 32-byte alignment mask.  */
-
-static const bfd_byte elf_x86_64_nacl_plt0_entry[NACL_PLT_ENTRY_SIZE] =
-  {
-    0xff, 0x35, 8, 0, 0, 0,		/* pushq GOT+8(%rip)		*/
-    0x4c, 0x8b, 0x1d, 16, 0, 0, 0,	/* mov GOT+16(%rip), %r11	*/
-    0x41, 0x83, 0xe3, NACLMASK,		/* and $-32, %r11d		*/
-    0x4d, 0x01, 0xfb,			/* add %r15, %r11		*/
-    0x41, 0xff, 0xe3,			/* jmpq *%r11			*/
-
-    /* 9-byte nop sequence to pad out to the next 32-byte boundary.  */
-    0x66, 0x0f, 0x1f, 0x84, 0, 0, 0, 0, 0, /* nopw 0x0(%rax,%rax,1)	*/
-
-    /* 32 bytes of nop to pad out to the standard size.  */
-    0x66, 0x66, 0x66, 0x66, 0x66, 0x66,    /* excess data16 prefixes	*/
-    0x2e, 0x0f, 0x1f, 0x84, 0, 0, 0, 0, 0, /* nopw %cs:0x0(%rax,%rax,1)	*/
-    0x66, 0x66, 0x66, 0x66, 0x66, 0x66,    /* excess data16 prefixes	*/
-    0x2e, 0x0f, 0x1f, 0x84, 0, 0, 0, 0, 0, /* nopw %cs:0x0(%rax,%rax,1)	*/
-    0x66,				   /* excess data16 prefix	*/
-    0x90				   /* nop */
-  };
-
-static const bfd_byte elf_x86_64_nacl_plt_entry[NACL_PLT_ENTRY_SIZE] =
-  {
-    0x4c, 0x8b, 0x1d, 0, 0, 0, 0,	/* mov name@GOTPCREL(%rip),%r11	*/
-    0x41, 0x83, 0xe3, NACLMASK,		/* and $-32, %r11d		*/
-    0x4d, 0x01, 0xfb,			/* add %r15, %r11		*/
-    0x41, 0xff, 0xe3,			/* jmpq *%r11			*/
-
-    /* 15-byte nop sequence to pad out to the next 32-byte boundary.  */
-    0x66, 0x66, 0x66, 0x66, 0x66, 0x66,    /* excess data16 prefixes	*/
-    0x2e, 0x0f, 0x1f, 0x84, 0, 0, 0, 0, 0, /* nopw %cs:0x0(%rax,%rax,1)	*/
-
-    /* Lazy GOT entries point here (32-byte aligned).  */
-    0x68,		  /* pushq immediate */
-    0, 0, 0, 0,		  /* replaced with index into relocation table.	 */
-    0xe9,		  /* jmp relative */
-    0, 0, 0, 0,		  /* replaced with offset to start of .plt0.  */
-
-    /* 22 bytes of nop to pad out to the standard size.	 */
-    0x66, 0x66, 0x66, 0x66, 0x66, 0x66,    /* excess data16 prefixes	*/
-    0x2e, 0x0f, 0x1f, 0x84, 0, 0, 0, 0, 0, /* nopw %cs:0x0(%rax,%rax,1)	*/
-    0x0f, 0x1f, 0x80, 0, 0, 0, 0,	   /* nopl 0x0(%rax)		*/
-  };
-
-/* .eh_frame covering the .plt section.  */
-
-static const bfd_byte elf_x86_64_nacl_eh_frame_plt[] =
-  {
-#if (PLT_CIE_LENGTH != 20				\
-     || PLT_FDE_LENGTH != 36				\
-     || PLT_FDE_START_OFFSET != 4 + PLT_CIE_LENGTH + 8	\
-     || PLT_FDE_LEN_OFFSET != 4 + PLT_CIE_LENGTH + 12)
-# error "Need elf_x86_backend_data parameters for eh_frame_plt offsets!"
-#endif
-    PLT_CIE_LENGTH, 0, 0, 0,	/* CIE length */
-    0, 0, 0, 0,			/* CIE ID */
-    1,				/* CIE version */
-    'z', 'R', 0,		/* Augmentation string */
-    1,				/* Code alignment factor */
-    0x78,			/* Data alignment factor */
-    16,				/* Return address column */
-    1,				/* Augmentation size */
-    DW_EH_PE_pcrel | DW_EH_PE_sdata4, /* FDE encoding */
-    DW_CFA_def_cfa, 7, 8,	/* DW_CFA_def_cfa: r7 (rsp) ofs 8 */
-    DW_CFA_offset + 16, 1,	/* DW_CFA_offset: r16 (rip) at cfa-8 */
-    DW_CFA_nop, DW_CFA_nop,
-
-    PLT_FDE_LENGTH, 0, 0, 0,	/* FDE length */
-    PLT_CIE_LENGTH + 8, 0, 0, 0,/* CIE pointer */
-    0, 0, 0, 0,			/* R_X86_64_PC32 .plt goes here */
-    0, 0, 0, 0,			/* .plt size goes here */
-    0,				/* Augmentation size */
-    DW_CFA_def_cfa_offset, 16,	/* DW_CFA_def_cfa_offset: 16 */
-    DW_CFA_advance_loc + 6,	/* DW_CFA_advance_loc: 6 to __PLT__+6 */
-    DW_CFA_def_cfa_offset, 24,	/* DW_CFA_def_cfa_offset: 24 */
-    DW_CFA_advance_loc + 58,	/* DW_CFA_advance_loc: 58 to __PLT__+64 */
-    DW_CFA_def_cfa_expression,	/* DW_CFA_def_cfa_expression */
-    13,				/* Block length */
-    DW_OP_breg7, 8,		/* DW_OP_breg7 (rsp): 8 */
-    DW_OP_breg16, 0,		/* DW_OP_breg16 (rip): 0 */
-    DW_OP_const1u, 63, DW_OP_and, DW_OP_const1u, 37, DW_OP_ge,
-    DW_OP_lit3, DW_OP_shl, DW_OP_plus,
-    DW_CFA_nop, DW_CFA_nop
-  };
-
-static const struct elf_x86_lazy_plt_layout elf_x86_64_nacl_plt =
-  {
-    elf_x86_64_nacl_plt0_entry,		     /* plt0_entry */
-    NACL_PLT_ENTRY_SIZE,		     /* plt0_entry_size */
-    elf_x86_64_nacl_plt_entry,		     /* plt_entry */
-    NACL_PLT_ENTRY_SIZE,		     /* plt_entry_size */
-    elf_x86_64_nacl_plt0_entry,		     /* plt_tlsdesc_entry */
-    NACL_PLT_ENTRY_SIZE,		     /* plt_tlsdesc_entry_size */
-    2,					     /* plt_tlsdesc_got1_offset */
-    9,					     /* plt_tlsdesc_got2_offset */
-    6,					     /* plt_tlsdesc_got1_insn_end */
-    13,					     /* plt_tlsdesc_got2_insn_end */
-    2,					     /* plt0_got1_offset */
-    9,					     /* plt0_got2_offset */
-    13,					     /* plt0_got2_insn_end */
-    3,					     /* plt_got_offset */
-    33,					     /* plt_reloc_offset */
-    38,					     /* plt_plt_offset */
-    7,					     /* plt_got_insn_size */
-    42,					     /* plt_plt_insn_end */
-    32,					     /* plt_lazy_offset */
-    elf_x86_64_nacl_plt0_entry,		     /* pic_plt0_entry */
-    elf_x86_64_nacl_plt_entry,		     /* pic_plt_entry */
-    elf_x86_64_nacl_eh_frame_plt,	     /* eh_frame_plt */
-    sizeof (elf_x86_64_nacl_eh_frame_plt)    /* eh_frame_plt_size */
-  };
-
-static const struct elf_x86_backend_data elf_x86_64_nacl_arch_bed =
-  {
-    is_nacl				     /* os */
-  };
-
-#undef	elf_backend_arch_data
-#define	elf_backend_arch_data	&elf_x86_64_nacl_arch_bed
-
-#undef	elf_backend_object_p
-#define elf_backend_object_p			elf64_x86_64_nacl_elf_object_p
-#undef	elf_backend_modify_segment_map
-#define	elf_backend_modify_segment_map		nacl_modify_segment_map
-#undef	elf_backend_modify_headers
-#define	elf_backend_modify_headers		nacl_modify_headers
-#undef	elf_backend_final_write_processing
-#define elf_backend_final_write_processing	nacl_final_write_processing
-
-#include "elf64-target.h"
-
-/* Native Client x32 support.  */
-
-static bfd_boolean
-elf32_x86_64_nacl_elf_object_p (bfd *abfd)
-{
-  /* Set the right machine number for a NaCl x86-64 ELF32 file.  */
-  bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_x64_32_nacl);
-  return TRUE;
-}
-
-#undef	TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM		x86_64_elf32_nacl_vec
-#undef	TARGET_LITTLE_NAME
-#define TARGET_LITTLE_NAME		"elf32-x86-64-nacl"
-#undef	elf32_bed
-#define	elf32_bed			elf32_x86_64_nacl_bed
-
-#define bfd_elf32_bfd_reloc_type_lookup	\
-  elf_x86_64_reloc_type_lookup
-#define bfd_elf32_bfd_reloc_name_lookup \
-  elf_x86_64_reloc_name_lookup
-#define bfd_elf32_get_synthetic_symtab \
-  elf_x86_64_get_synthetic_symtab
-
-#undef elf_backend_object_p
-#define elf_backend_object_p \
-  elf32_x86_64_nacl_elf_object_p
-
-#undef elf_backend_bfd_from_remote_memory
-#define elf_backend_bfd_from_remote_memory \
-  _bfd_elf32_bfd_from_remote_memory
-
-#undef elf_backend_size_info
-#define elf_backend_size_info \
-  _bfd_elf32_size_info
-
-#undef	elf32_bed
-#define	elf32_bed			elf32_x86_64_bed
-
-#include "elf32-target.h"
-
-/* Restore defaults.  */
-#undef	elf_backend_object_p
-#define elf_backend_object_p		    elf64_x86_64_elf_object_p
-#undef	elf_backend_bfd_from_remote_memory
-#undef	elf_backend_size_info
-#undef	elf_backend_modify_segment_map
-#undef	elf_backend_modify_headers
-#undef	elf_backend_final_write_processing
-
 /* Intel L1OM support.  */
 
 static bfd_boolean
@@ -5527,8 +5380,7 @@ elf64_l1om_elf_object_p (bfd *abfd)
 #define ELF_COMMONPAGESIZE		0x1000
 #undef	elf_backend_plt_alignment
 #define elf_backend_plt_alignment	4
-#undef	elf_backend_arch_data
-#define	elf_backend_arch_data	&elf_x86_64_arch_bed
+#undef ELF_TARGET_OS
 
 #include "elf64-target.h"
 
@@ -5575,11 +5427,6 @@ elf64_k1om_elf_object_p (bfd *abfd)
 #undef elf_backend_object_p
 #define elf_backend_object_p		    elf64_k1om_elf_object_p
 
-#undef  elf_backend_static_tls_alignment
-
-#undef elf_backend_want_plt_sym
-#define elf_backend_want_plt_sym	    0
-
 #include "elf64-target.h"
 
 /* FreeBSD K1OM support.  */
@@ -5604,6 +5451,7 @@ elf64_k1om_elf_object_p (bfd *abfd)
 #undef  TARGET_LITTLE_NAME
 #define TARGET_LITTLE_NAME		    "elf32-x86-64"
 #undef	elf32_bed
+#define	elf32_bed			    elf32_x86_64_bed
 
 #undef ELF_ARCH
 #define ELF_ARCH			    bfd_arch_i386
@@ -5613,6 +5461,13 @@ elf64_k1om_elf_object_p (bfd *abfd)
 
 #undef	ELF_OSABI
 
+#define bfd_elf32_bfd_reloc_type_lookup	\
+  elf_x86_64_reloc_type_lookup
+#define bfd_elf32_bfd_reloc_name_lookup \
+  elf_x86_64_reloc_name_lookup
+#define bfd_elf32_get_synthetic_symtab \
+  elf_x86_64_get_synthetic_symtab
+
 #undef elf_backend_object_p
 #define elf_backend_object_p \
   elf32_x86_64_elf_object_p
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-attrs.c ./bfd/elf-attrs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-attrs.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-attrs.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF attributes support (based on ARM EABI attributes).
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -436,11 +436,14 @@ _bfd_elf_parse_attributes (bfd *abfd, El
   bfd_byte *p_end;
   bfd_vma len;
   const char *std_sec;
+  ufile_ptr filesize;
 
   /* PR 17512: file: 2844a11d.  */
   if (hdr->sh_size == 0)
     return;
-  if (hdr->sh_size > bfd_get_file_size (abfd))
+
+  filesize = bfd_get_file_size (abfd);
+  if (filesize != 0 && hdr->sh_size > filesize)
     {
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: error: attribute section '%pA' too big: %#llx"),
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-bfd.h ./bfd/elf-bfd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-bfd.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-bfd.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end data structures for ELF files.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -156,9 +156,13 @@ struct elf_link_hash_entry
   /* Same, but tracks a procedure linkage table entry.  */
   union gotplt_union plt;
 
-  /* Symbol size.  */
+  /* Symbol size.  NB: All fields starting from here are cleared by
+    _bfd_elf_link_hash_newfunc.  */
   bfd_size_type size;
 
+  /* Track dynamic relocs copied for this symbol.  */
+  struct elf_dyn_relocs *dyn_relocs;
+
   /* Symbol type (STT_NOTYPE, STT_OBJECT, etc.).  */
   unsigned int type : 8;
 
@@ -536,6 +540,25 @@ struct bfd_link_needed_list
   const char *name;
 };
 
+enum elf_target_os
+{
+  is_normal,
+  is_symbian,	/* Symbian OS.  */
+  is_solaris,	/* Solaris.  */
+  is_vxworks,	/* VxWorks.  */
+  is_nacl	/* Native Client.  */
+};
+
+/* Used by bfd_sym_from_r_symndx to cache a small number of local
+   symbols.  */
+#define LOCAL_SYM_CACHE_SIZE 32
+struct sym_cache
+{
+  bfd *abfd;
+  unsigned long indx[LOCAL_SYM_CACHE_SIZE];
+  Elf_Internal_Sym sym[LOCAL_SYM_CACHE_SIZE];
+};
+
 /* ELF linker hash table.  */
 
 struct elf_link_hash_table
@@ -557,6 +580,15 @@ struct elf_link_hash_table
      section symbols.  */
   bfd_boolean is_relocatable_executable;
 
+  /* TRUE if there are IFUNC resolvers.  */
+  bfd_boolean ifunc_resolvers;
+
+  /* TRUE if DT_PLTGOT is a required dynamic tag.  */
+  bfd_boolean dt_pltgot_required;
+
+  /* TRUE if DT_JMPREL is a required dynamic tag.  */
+  bfd_boolean dt_jmprel_required;
+
   /* The BFD used to hold special sections created by the linker.
      This will be the first BFD found which requires these sections to
      be created.  */
@@ -635,10 +667,27 @@ struct elf_link_hash_table
 
   /* Cached first output tls section and size of PT_TLS segment.  */
   asection *tls_sec;
-  bfd_size_type tls_size;
+  bfd_size_type tls_size;  /* Bytes.  */
+
+  /* The offset into splt of the PLT entry for the TLS descriptor
+     resolver.  Special values are 0, if not necessary (or not found
+     to be necessary yet), and -1 if needed but not determined
+     yet.  */
+  bfd_vma tlsdesc_plt;
+
+  /* The GOT offset for the lazy trampoline.  Communicated to the
+     loader via DT_TLSDESC_GOT.  The magic value (bfd_vma) -1
+     indicates an offset is not allocated.  */
+  bfd_vma tlsdesc_got;
 
-  /* A linked list of BFD's loaded in the link.  */
-  struct elf_link_loaded_list *loaded;
+  /* Target OS for linker output.  */
+  enum elf_target_os target_os;
+
+  /* A linked list of dynamic BFD's loaded in the link.  */
+  struct elf_link_loaded_list *dyn_loaded;
+
+  /* Small local sym cache.  */
+  struct sym_cache sym_cache;
 
   /* Short-cuts to get to dynamic linker sections.  */
   asection *sgot;
@@ -681,16 +730,6 @@ struct elf_link_hash_table
 /* Returns TRUE if the hash table is a struct elf_link_hash_table.  */
 #define is_elf_hash_table(htab)						\
   (((struct bfd_link_hash_table *) (htab))->type == bfd_link_elf_hash_table)
-
-/* Used by bfd_sym_from_r_symndx to cache a small number of local
-   symbols.  */
-#define LOCAL_SYM_CACHE_SIZE 32
-struct sym_cache
-{
-  bfd *abfd;
-  unsigned long indx[LOCAL_SYM_CACHE_SIZE];
-  Elf_Internal_Sym sym[LOCAL_SYM_CACHE_SIZE];
-};
 
 /* Constant information held for an ELF backend.  */
 
@@ -857,6 +896,9 @@ struct elf_backend_data
      extensions to elf_obj_tdata and elf_link_hash_table structures.  */
   enum elf_target_id target_id;
 
+  /* Target OS.  */
+  enum elf_target_os target_os;
+
   /* The ELF machine code (EM_xxxx) for this backend.  */
   int elf_machine_code;
 
@@ -955,7 +997,7 @@ struct elf_backend_data
   /* A function to convert machine dependent ELF section header flags to
      BFD internal section header flags.  */
   bfd_boolean (*elf_backend_section_flags)
-    (flagword *, const Elf_Internal_Shdr *);
+    (const Elf_Internal_Shdr *);
 
   /* A function that returns a struct containing ELF section flags and
      type for the given BFD section.   */
@@ -1083,6 +1125,12 @@ struct elf_backend_data
   bfd_boolean (*elf_backend_size_dynamic_sections)
     (bfd *output_bfd, struct bfd_link_info *info);
 
+  /* The STRIP_ZERO_SIZED_DYNAMIC_SECTIONS function is called by the
+     ELF backend linker to strip zero-sized dynamic sections after
+     the section sizes have been set.  */
+  bfd_boolean (*elf_backend_strip_zero_sized_dynamic_sections)
+    (struct bfd_link_info *info);
+
   /* Set TEXT_INDEX_SECTION and DATA_INDEX_SECTION, the output sections
      we keep to use as a base for relocs and symbols.  */
   void (*elf_backend_init_index_section)
@@ -1357,6 +1405,14 @@ struct elf_backend_data
   bfd_boolean (*elf_backend_write_section)
     (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
 
+  /* This function, if defined, returns TRUE if it is section symbols
+     only that are considered local for the purpose of partitioning the
+     symbol table into local and global symbols.  This should be NULL
+     for most targets, in which case the correct thing will be done.
+     MIPS ELF, at least on the Irix 5, has special requirements.  */
+  bfd_boolean (*elf_backend_elfsym_local_is_section)
+    (bfd *);
+
   /* The level of IRIX compatibility we're striving for.
      MIPS ELF specific function.  */
   irix_compat_t (*elf_backend_mips_irix_compat)
@@ -1503,6 +1559,22 @@ struct elf_backend_data
   /* Opcode representing no unwind.  */
   int (*cant_unwind_opcode) (struct bfd_link_info *);
 
+  /* Called when emitting an ELF symbol whoes input version had an
+     ST_SHNDX field set to a value in the range SHN_LOPROC..SHN_HIOS.
+     Returns the value to be installed in the ST_SHNDX field of the
+     emitted symbol.  If not defined, the value is left unchanged.  */
+  unsigned int (*symbol_section_index) (bfd *, elf_symbol_type *);
+  
+  /* Called when a section has extra reloc sections.  */
+  bfd_boolean (*init_secondary_reloc_section) (bfd *, Elf_Internal_Shdr *,
+					       const char *, unsigned int);
+
+  /* Called when after loading the normal relocs for a section.  */
+  bfd_boolean (*slurp_secondary_relocs) (bfd *, asection *, asymbol **);
+
+  /* Called after writing the normal relocs for a section.  */
+  bfd_boolean (*write_secondary_relocs) (bfd *, asection *);
+
   /* This is non-zero if static TLS segments require a special alignment.  */
   unsigned static_tls_alignment;
 
@@ -1684,6 +1756,11 @@ struct bfd_elf_section_data
   /* Link from a text section to its .eh_frame_entry section.  */
   asection *eh_frame_entry;
 
+  /* TRUE if the section has secondary reloc sections associated with it.
+     FIXME: In the future it might be better to change this into a list
+     of secondary reloc sections, making lookup easier and faster.  */
+  bfd_boolean has_secondary_relocs;
+
   /* A pointer used for various section optimizations.  */
   void *sec_info;
 };
@@ -1937,7 +2014,7 @@ struct elf_obj_tdata
   struct sdt_note *sdt_note_head;
 
   Elf_Internal_Shdr **group_sect_ptr;
-  int num_group;
+  unsigned int num_group;
 
   /* Index into group_sect_ptr, updated by setup_group when finding a
      section's group.  Used to optimize subsequent group searches.  */
@@ -2061,7 +2138,7 @@ extern bfd_boolean _bfd_elf_copy_private
 extern bfd_boolean _bfd_elf_print_private_bfd_data
   (bfd *, void *);
 const char * _bfd_elf_get_symbol_version_string
-  (bfd *, asymbol *, bfd_boolean *);
+  (bfd *, asymbol *, bfd_boolean, bfd_boolean *);
 extern void bfd_elf_print_symbol
   (bfd *, void *, asymbol *, bfd_print_symbol_type);
 
@@ -2394,9 +2471,9 @@ extern bfd_boolean _bfd_elf_init_file_he
 
 extern bfd_boolean _bfd_elf_final_write_processing (bfd *);
 
-extern const bfd_target *bfd_elf32_object_p
+extern bfd_cleanup bfd_elf32_object_p
   (bfd *);
-extern const bfd_target *bfd_elf32_core_file_p
+extern bfd_cleanup bfd_elf32_core_file_p
   (bfd *);
 extern char *bfd_elf32_core_file_failing_command
   (bfd *);
@@ -2442,9 +2519,9 @@ extern void bfd_elf32_write_relocs
 extern bfd_boolean bfd_elf32_slurp_reloc_table
   (bfd *, asection *, asymbol **, bfd_boolean);
 
-extern const bfd_target *bfd_elf64_object_p
+extern bfd_cleanup bfd_elf64_object_p
   (bfd *);
-extern const bfd_target *bfd_elf64_core_file_p
+extern bfd_cleanup bfd_elf64_core_file_p
   (bfd *);
 extern char *bfd_elf64_core_file_failing_command
   (bfd *);
@@ -2504,6 +2581,10 @@ extern bfd_boolean bfd_elf_link_add_symb
   (bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_elf_add_dynamic_entry
   (struct bfd_link_info *, bfd_vma, bfd_vma);
+extern bfd_boolean _bfd_elf_strip_zero_sized_dynamic_sections
+  (struct bfd_link_info *);
+extern int bfd_elf_add_dt_needed_tag
+  (bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_elf_link_check_relocs
   (bfd *, struct bfd_link_info *);
 
@@ -2712,6 +2793,8 @@ extern char *elfcore_write_aarch_sve
   (bfd *, char *, int *, const void *, int);
 extern char *elfcore_write_aarch_pauth
   (bfd *, char *, int *, const void *, int);
+extern char *elfcore_write_arc_v2
+  (bfd *, char *, int *, const void *, int);
 extern char *elfcore_write_lwpstatus
   (bfd *, char *, int *, long, int, const void *);
 extern char *elfcore_write_register_note
@@ -2817,8 +2900,8 @@ extern bfd_boolean _bfd_elf_create_ifunc
   (bfd *, struct bfd_link_info *);
 extern bfd_boolean _bfd_elf_allocate_ifunc_dyn_relocs
   (struct bfd_link_info *, struct elf_link_hash_entry *,
-   struct elf_dyn_relocs **, bfd_boolean *, unsigned int,
-   unsigned int, unsigned int, bfd_boolean);
+   struct elf_dyn_relocs **, unsigned int, unsigned int,
+   unsigned int, bfd_boolean);
 
 extern void elf_append_rela (bfd *, asection *, Elf_Internal_Rela *);
 extern void elf_append_rel (bfd *, asection *, Elf_Internal_Rela *);
@@ -2830,14 +2913,34 @@ extern bfd_vma elf32_r_sym (bfd_vma);
 
 extern bfd_boolean is_debuginfo_file (bfd *);
 
+
+extern bfd_boolean _bfd_elf_init_secondary_reloc_section
+  (bfd *, Elf_Internal_Shdr *, const char *, unsigned int);
+extern bfd_boolean _bfd_elf_slurp_secondary_reloc_section
+  (bfd *, asection *, asymbol **);
+extern bfd_boolean _bfd_elf_copy_special_section_fields
+  (const bfd *, bfd *, const Elf_Internal_Shdr *, Elf_Internal_Shdr *);
+extern bfd_boolean _bfd_elf_write_secondary_reloc_section
+  (bfd *, asection *);
+extern unsigned int _bfd_elf_symbol_section_index
+  (bfd *, elf_symbol_type *);
+
+extern asection *_bfd_elf_readonly_dynrelocs
+  (struct elf_link_hash_entry *);
+extern bfd_boolean _bfd_elf_maybe_set_textrel
+  (struct elf_link_hash_entry *, void *);
+
+extern bfd_boolean _bfd_elf_add_dynamic_tags
+  (bfd *, struct bfd_link_info *, bfd_boolean);
+
 /* Large common section.  */
 extern asection _bfd_elf_large_com_section;
 
 /* Hash for local symbol with the first section id, ID, in the input
    file and the local symbol index, SYM.  */
 #define ELF_LOCAL_SYMBOL_HASH(ID, SYM) \
-  (((((ID) & 0xff) << 24) | (((ID) & 0xff00) << 8)) \
-   ^ (SYM) ^ ((ID) >> 16))
+  (((((ID) & 0xffU) << 24) | (((ID) & 0xff00) << 8)) \
+   ^ (SYM) ^ (((ID) & 0xffff0000U) >> 16))
 
 /* This is the condition under which finish_dynamic_symbol will be called.
    If our finish_dynamic_symbol isn't called, we'll need to do something
@@ -2899,8 +3002,9 @@ extern asection _bfd_elf_large_com_secti
       else if (!bfd_link_relocatable (info))				\
 	{								\
 	  bfd_boolean err;						\
-	  err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR	\
-		 || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT);	\
+	  err = (info->unresolved_syms_in_objects == RM_DIAGNOSE &&	\
+		 !info->warn_unresolved_syms)				\
+		 || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT;	\
 	  (*info->callbacks->undefined_symbol) (info,			\
 						h->root.root.string,	\
 						input_bfd,		\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf.c ./bfd/elf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* ELF executable support for BFD.
 
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -296,16 +296,10 @@ bfd_elf_get_str_section (bfd *abfd, unsi
       /* Allocate and clear an extra byte at the end, to prevent crashes
 	 in case the string table is not terminated.  */
       if (shstrtabsize + 1 <= 1
-	  || shstrtabsize > bfd_get_file_size (abfd)
 	  || bfd_seek (abfd, offset, SEEK_SET) != 0
-	  || (shstrtab = (bfd_byte *) bfd_alloc (abfd, shstrtabsize + 1)) == NULL)
-	shstrtab = NULL;
-      else if (bfd_bread (shstrtab, shstrtabsize, abfd) != shstrtabsize)
+	  || (shstrtab = _bfd_alloc_and_read (abfd, shstrtabsize + 1,
+					      shstrtabsize)) == NULL)
 	{
-	  if (bfd_get_error () != bfd_error_system_call)
-	    bfd_set_error (bfd_error_file_truncated);
-	  bfd_release (abfd, shstrtab);
-	  shstrtab = NULL;
 	  /* Once we've failed to read it, make sure we don't keep
 	     trying.  Otherwise, we'll keep allocating space for
 	     the string table over and over.  */
@@ -402,7 +396,7 @@ bfd_elf_get_elf_syms (bfd *ibfd,
   Elf_Internal_Sym *isymend;
   const struct elf_backend_data *bed;
   size_t extsym_size;
-  bfd_size_type amt;
+  size_t amt;
   file_ptr pos;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
@@ -448,11 +442,16 @@ bfd_elf_get_elf_syms (bfd *ibfd,
   alloc_intsym = NULL;
   bed = get_elf_backend_data (ibfd);
   extsym_size = bed->s->sizeof_sym;
-  amt = (bfd_size_type) symcount * extsym_size;
+  if (_bfd_mul_overflow (symcount, extsym_size, &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      intsym_buf = NULL;
+      goto out;
+    }
   pos = symtab_hdr->sh_offset + symoffset * extsym_size;
   if (extsym_buf == NULL)
     {
-      alloc_ext = bfd_malloc2 (symcount, extsym_size);
+      alloc_ext = bfd_malloc (amt);
       extsym_buf = alloc_ext;
     }
   if (extsym_buf == NULL
@@ -467,12 +466,16 @@ bfd_elf_get_elf_syms (bfd *ibfd,
     extshndx_buf = NULL;
   else
     {
-      amt = (bfd_size_type) symcount * sizeof (Elf_External_Sym_Shndx);
+      if (_bfd_mul_overflow (symcount, sizeof (Elf_External_Sym_Shndx), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  intsym_buf = NULL;
+	  goto out;
+	}
       pos = shndx_hdr->sh_offset + symoffset * sizeof (Elf_External_Sym_Shndx);
       if (extshndx_buf == NULL)
 	{
-	  alloc_extshndx = (Elf_External_Sym_Shndx *)
-	      bfd_malloc2 (symcount, sizeof (Elf_External_Sym_Shndx));
+	  alloc_extshndx = (Elf_External_Sym_Shndx *) bfd_malloc (amt);
 	  extshndx_buf = alloc_extshndx;
 	}
       if (extshndx_buf == NULL
@@ -486,8 +489,12 @@ bfd_elf_get_elf_syms (bfd *ibfd,
 
   if (intsym_buf == NULL)
     {
-      alloc_intsym = (Elf_Internal_Sym *)
-	  bfd_malloc2 (symcount, sizeof (Elf_Internal_Sym));
+      if (_bfd_mul_overflow (symcount, sizeof (Elf_Internal_Sym), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  goto out;
+	}
+      alloc_intsym = (Elf_Internal_Sym *) bfd_malloc (amt);
       intsym_buf = alloc_intsym;
       if (intsym_buf == NULL)
 	goto out;
@@ -506,17 +513,14 @@ bfd_elf_get_elf_syms (bfd *ibfd,
 	_bfd_error_handler (_("%pB symbol number %lu references"
 			      " nonexistent SHT_SYMTAB_SHNDX section"),
 			    ibfd, (unsigned long) symoffset);
-	if (alloc_intsym != NULL)
-	  free (alloc_intsym);
+	free (alloc_intsym);
 	intsym_buf = NULL;
 	goto out;
       }
 
  out:
-  if (alloc_ext != NULL)
-    free (alloc_ext);
-  if (alloc_extshndx != NULL)
-    free (alloc_extshndx);
+  free (alloc_ext);
+  free (alloc_extshndx);
 
   return intsym_buf;
 }
@@ -629,15 +633,14 @@ setup_group (bfd *abfd, Elf_Internal_Shd
 	{
 	  /* We keep a list of elf section headers for group sections,
 	     so we can find them quickly.  */
-	  bfd_size_type amt;
+	  size_t amt;
 
 	  elf_tdata (abfd)->num_group = num_group;
-	  elf_tdata (abfd)->group_sect_ptr = (Elf_Internal_Shdr **)
-	      bfd_alloc2 (abfd, num_group, sizeof (Elf_Internal_Shdr *));
+	  amt = num_group * sizeof (Elf_Internal_Shdr *);
+	  elf_tdata (abfd)->group_sect_ptr
+	    = (Elf_Internal_Shdr **) bfd_zalloc (abfd, amt);
 	  if (elf_tdata (abfd)->group_sect_ptr == NULL)
 	    return FALSE;
-	  memset (elf_tdata (abfd)->group_sect_ptr, 0,
-		  num_group * sizeof (Elf_Internal_Shdr *));
 	  num_group = 0;
 
 	  for (i = 0; i < shnum; i++)
@@ -659,28 +662,13 @@ setup_group (bfd *abfd, Elf_Internal_Shd
 		  num_group += 1;
 
 		  /* Read the raw contents.  */
-		  BFD_ASSERT (sizeof (*dest) >= 4);
-		  amt = shdr->sh_size * sizeof (*dest) / 4;
-		  shdr->contents = (unsigned char *)
-		    bfd_alloc2 (abfd, shdr->sh_size, sizeof (*dest) / 4);
-		  /* PR binutils/4110: Handle corrupt group headers.  */
-		  if (shdr->contents == NULL)
-		    {
-		      _bfd_error_handler
-			/* xgettext:c-format */
-			(_("%pB: corrupt size field in group section"
-			   " header: %#" PRIx64),
-			 abfd, (uint64_t) shdr->sh_size);
-		      bfd_set_error (bfd_error_bad_value);
-		      -- num_group;
-		      continue;
-		    }
-
-		  memset (shdr->contents, 0, amt);
-
-		  if (bfd_seek (abfd, shdr->sh_offset, SEEK_SET) != 0
-		      || (bfd_bread (shdr->contents, shdr->sh_size, abfd)
-			  != shdr->sh_size))
+		  BFD_ASSERT (sizeof (*dest) >= 4 && sizeof (*dest) % 4 == 0);
+		  shdr->contents = NULL;
+		  if (_bfd_mul_overflow (shdr->sh_size,
+					 sizeof (*dest) / 4, &amt)
+		      || bfd_seek (abfd, shdr->sh_offset, SEEK_SET) != 0
+		      || !(shdr->contents
+			   = _bfd_alloc_and_read (abfd, amt, shdr->sh_size)))
 		    {
 		      _bfd_error_handler
 			/* xgettext:c-format */
@@ -689,10 +677,6 @@ setup_group (bfd *abfd, Elf_Internal_Shd
 			 abfd, (uint64_t) shdr->sh_size);
 		      bfd_set_error (bfd_error_bad_value);
 		      -- num_group;
-		      /* PR 17510: If the group contents are even
-			 partially corrupt, do not allow any of the
-			 contents to be used.  */
-		      memset (shdr->contents, 0, amt);
 		      continue;
 		    }
 
@@ -712,6 +696,7 @@ setup_group (bfd *abfd, Elf_Internal_Shd
 		      idx = H_GET_32 (abfd, src);
 		      if (src == shdr->contents)
 			{
+			  dest->shdr = NULL;
 			  dest->flags = idx;
 			  if (shdr->bfd_section != NULL && (idx & GRP_COMDAT))
 			    shdr->bfd_section->flags
@@ -869,11 +854,10 @@ _bfd_elf_setup_sections (bfd *abfd)
 	  if (elfsec == 0)
 	    {
 	      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
-	      if (bed->link_order_error_handler)
-		bed->link_order_error_handler
-		  /* xgettext:c-format */
-		  (_("%pB: warning: sh_link not set for section `%pA'"),
-		   abfd, s);
+	      bed->link_order_error_handler
+		/* xgettext:c-format */
+		(_("%pB: warning: sh_link not set for section `%pA'"),
+		 abfd, s);
 	    }
 	  else
 	    {
@@ -1028,6 +1012,7 @@ _bfd_elf_make_section_from_shdr (bfd *ab
   asection *newsect;
   flagword flags;
   const struct elf_backend_data *bed;
+  unsigned int opb = bfd_octets_per_byte (abfd, NULL);
 
   if (hdr->bfd_section != NULL)
     return TRUE;
@@ -1046,11 +1031,6 @@ _bfd_elf_make_section_from_shdr (bfd *ab
 
   newsect->filepos = hdr->sh_offset;
 
-  if (!bfd_set_section_vma (newsect, hdr->sh_addr)
-      || !bfd_set_section_size (newsect, hdr->sh_size)
-      || !bfd_set_section_alignment (newsect, bfd_log2 (hdr->sh_addralign)))
-    return FALSE;
-
   flags = SEC_NO_FLAGS;
   if (hdr->sh_type != SHT_NOBITS)
     flags |= SEC_HAS_CONTENTS;
@@ -1108,7 +1088,10 @@ _bfd_elf_make_section_from_shdr (bfd *ab
 	    flags |= SEC_DEBUGGING | SEC_ELF_OCTETS;
 	  else if (strncmp (name, GNU_BUILD_ATTRS_SECTION_NAME, 21) == 0
 		   || strncmp (name, ".note.gnu", 9) == 0)
-	    flags |= SEC_ELF_OCTETS;
+	    {
+	      flags |= SEC_ELF_OCTETS;
+	      opb = 1;
+	    }
 	  else if (strncmp (name, ".line", 5) == 0
 		   || strncmp (name, ".stab", 5) == 0
 		   || strcmp (name, ".gdb_index") == 0)
@@ -1116,6 +1099,11 @@ _bfd_elf_make_section_from_shdr (bfd *ab
 	}
     }
 
+  if (!bfd_set_section_vma (newsect, hdr->sh_addr / opb)
+      || !bfd_set_section_size (newsect, hdr->sh_size)
+      || !bfd_set_section_alignment (newsect, bfd_log2 (hdr->sh_addralign)))
+    return FALSE;
+
   /* As a GNU extension, if the name begins with .gnu.linkonce, we
      only link a single copy of the section.  This is used to support
      g++.  g++ will emit each template expansion in its own section.
@@ -1126,14 +1114,14 @@ _bfd_elf_make_section_from_shdr (bfd *ab
       && elf_next_in_group (newsect) == NULL)
     flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD;
 
+  if (!bfd_set_section_flags (newsect, flags))
+    return FALSE;
+
   bed = get_elf_backend_data (abfd);
   if (bed->elf_backend_section_flags)
-    if (! bed->elf_backend_section_flags (&flags, hdr))
+    if (!bed->elf_backend_section_flags (hdr))
       return FALSE;
 
-  if (!bfd_set_section_flags (newsect, flags))
-    return FALSE;
-
   /* We do not parse the PT_NOTE segments as we are interested even in the
      separate debug info files which may have the segments offsets corrupted.
      PT_NOTEs from the core files are currently not parsed using BFD.  */
@@ -1149,7 +1137,7 @@ _bfd_elf_make_section_from_shdr (bfd *ab
       free (contents);
     }
 
-  if ((flags & SEC_ALLOC) != 0)
+  if ((newsect->flags & SEC_ALLOC) != 0)
     {
       Elf_Internal_Phdr *phdr;
       unsigned int i, nload;
@@ -1175,9 +1163,9 @@ _bfd_elf_make_section_from_shdr (bfd *ab
 	       || phdr->p_type == PT_TLS)
 	      && ELF_SECTION_IN_SEGMENT (hdr, phdr))
 	    {
-	      if ((flags & SEC_LOAD) == 0)
+	      if ((newsect->flags & SEC_LOAD) == 0)
 		newsect->lma = (phdr->p_paddr
-				+ hdr->sh_addr - phdr->p_vaddr);
+				+ hdr->sh_addr - phdr->p_vaddr) / opb;
 	      else
 		/* We used to use the same adjustment for SEC_LOAD
 		   sections, but that doesn't work if the segment
@@ -1187,7 +1175,7 @@ _bfd_elf_make_section_from_shdr (bfd *ab
 		   segment will contain sections with contiguous
 		   LMAs, even if the VMAs are not.  */
 		newsect->lma = (phdr->p_paddr
-				+ hdr->sh_offset - phdr->p_offset);
+				+ hdr->sh_offset - phdr->p_offset) / opb;
 
 	      /* With contiguous segments, we can't tell from file
 		 offsets whether a section with zero size should
@@ -1203,7 +1191,7 @@ _bfd_elf_make_section_from_shdr (bfd *ab
 
   /* Compress/decompress DWARF debug sections with names: .debug_* and
      .zdebug_*, after the section flags is set.  */
-  if ((flags & SEC_DEBUGGING)
+  if ((newsect->flags & SEC_DEBUGGING)
       && ((name[1] == 'd' && name[6] == '_')
 	  || (name[1] == 'z' && name[7] == '_')))
     {
@@ -1432,9 +1420,8 @@ copy_special_section_fields (const bfd *
     }
 
   /* Allow the target a chance to decide how these fields should be set.  */
-  if (bed->elf_backend_copy_special_section_fields != NULL
-      && bed->elf_backend_copy_special_section_fields
-      (ibfd, obfd, iheader, oheader))
+  if (bed->elf_backend_copy_special_section_fields (ibfd, obfd,
+						    iheader, oheader))
     return TRUE;
 
   /* We have an iheader which might match oheader, and which has non-zero
@@ -1618,8 +1605,8 @@ _bfd_elf_copy_private_bfd_data (bfd *ibf
 	{
 	  /* Final attempt.  Call the backend copy function
 	     with a NULL input section.  */
-	  if (bed->elf_backend_copy_special_section_fields != NULL)
-	    bed->elf_backend_copy_special_section_fields (ibfd, obfd, NULL, oheader);
+	  (void) bed->elf_backend_copy_special_section_fields (ibfd, obfd,
+							       NULL, oheader);
 	}
     }
 
@@ -1888,15 +1875,16 @@ _bfd_elf_print_private_bfd_data (bfd *ab
   return TRUE;
 
  error_return:
-  if (dynbuf != NULL)
-    free (dynbuf);
+  free (dynbuf);
   return FALSE;
 }
 
-/* Get version string.  */
+/* Get version name.  If BASE_P is TRUE, return "Base" for VER_FLG_BASE
+   and return symbol version for symbol version itself.   */
 
 const char *
 _bfd_elf_get_symbol_version_string (bfd *abfd, asymbol *symbol,
+				    bfd_boolean base_p,
 				    bfd_boolean *hidden)
 {
   const char *version_string = NULL;
@@ -1914,10 +1902,18 @@ _bfd_elf_get_symbol_version_string (bfd
 	       && (vernum > elf_tdata (abfd)->cverdefs
 		   || (elf_tdata (abfd)->verdef[0].vd_flags
 		       == VER_FLG_BASE)))
-	version_string = "Base";
+	version_string = base_p ? "Base" : "";
       else if (vernum <= elf_tdata (abfd)->cverdefs)
-	version_string =
-	  elf_tdata (abfd)->verdef[vernum - 1].vd_nodename;
+	{
+	  const char *nodename
+	    = elf_tdata (abfd)->verdef[vernum - 1].vd_nodename;
+	  version_string = "";
+	  if (base_p
+	      || nodename == NULL
+	      || symbol->name == NULL
+	      || strcmp (symbol->name, nodename) != 0)
+	    version_string = nodename;
+	}
       else
 	{
 	  Elf_Internal_Verneed *t;
@@ -1998,6 +1994,7 @@ bfd_elf_print_symbol (bfd *abfd,
 	/* If we have version information, print it.  */
 	version_string = _bfd_elf_get_symbol_version_string (abfd,
 							     symbol,
+							     TRUE,
 							     &hidden);
 	if (version_string)
 	  {
@@ -2069,8 +2066,14 @@ bfd_section_from_shdr (bfd *abfd, unsign
 	sections_being_created = NULL;
       if (sections_being_created == NULL)
 	{
-	  sections_being_created = (bfd_boolean *)
-	    bfd_zalloc2 (abfd, elf_numsections (abfd), sizeof (bfd_boolean));
+	  size_t amt = elf_numsections (abfd) * sizeof (bfd_boolean);
+
+	  /* PR 26005: Do not use bfd_zalloc here as the memory might
+	     be released before the bfd has been fully scanned.  */
+	  sections_being_created = (bfd_boolean *) bfd_malloc (amt);
+	  if (sections_being_created == NULL)
+	    return FALSE;
+	  memset (sections_being_created, FALSE, amt);
 	  sections_being_created_abfd = abfd;
 	}
       if (sections_being_created [shindex])
@@ -2468,13 +2471,17 @@ bfd_section_from_shdr (bfd *abfd, unsign
 	   sections.  */
 	if (*p_hdr != NULL)
 	  {
-	    _bfd_error_handler
-	      /* xgettext:c-format */
-	      (_("%pB: warning: multiple relocation sections for section %pA \
-found - ignoring all but the first"),
-	       abfd, target_sect);
+	    if (!bed->init_secondary_reloc_section (abfd, hdr, name, shindex))
+	      {
+		_bfd_error_handler
+		  /* xgettext:c-format */
+		  (_("%pB: warning: secondary relocation section '%s' "
+		     "for section %pA found - ignoring"),
+		   abfd, name, target_sect);
+	      }
 	    goto success;
 	  }
+
 	hdr2 = (Elf_Internal_Shdr *) bfd_alloc (abfd, sizeof (*hdr2));
 	if (hdr2 == NULL)
 	  goto fail;
@@ -2604,8 +2611,9 @@ found - ignoring all but the first"),
     sections_being_created [shindex] = FALSE;
   if (-- nesting == 0)
     {
+      free (sections_being_created);
       sections_being_created = NULL;
-      sections_being_created_abfd = abfd;
+      sections_being_created_abfd = NULL;
     }
   return ret;
 }
@@ -2910,28 +2918,13 @@ _bfd_elf_new_section_hook (bfd *abfd, as
   bed = get_elf_backend_data (abfd);
   sec->use_rela_p = bed->default_use_rela_p;
 
-  /* When we read a file, we don't need to set ELF section type and
-     flags.  They will be overridden in _bfd_elf_make_section_from_shdr
-     anyway.  We will set ELF section type and flags for all linker
-     created sections.  If user specifies BFD section flags, we will
-     set ELF section type and flags based on BFD section flags in
-     elf_fake_sections.  Special handling for .init_array/.fini_array
-     output sections since they may contain .ctors/.dtors input
-     sections.  We don't want _bfd_elf_init_private_section_data to
-     copy ELF section type from .ctors/.dtors input sections.  */
-  if (abfd->direction != read_direction
-      || (sec->flags & SEC_LINKER_CREATED) != 0)
-    {
-      ssect = (*bed->get_sec_type_attr) (abfd, sec);
-      if (ssect != NULL
-	  && (!sec->flags
-	      || (sec->flags & SEC_LINKER_CREATED) != 0
-	      || ssect->type == SHT_INIT_ARRAY
-	      || ssect->type == SHT_FINI_ARRAY))
-	{
-	  elf_section_type (sec) = ssect->type;
-	  elf_section_flags (sec) = ssect->attr;
-	}
+  /* Set up ELF section type and flags for newly created sections, if
+     there is an ABI mandated section.  */
+  ssect = (*bed->get_sec_type_attr) (abfd, sec);
+  if (ssect != NULL)
+    {
+      elf_section_type (sec) = ssect->type;
+      elf_section_flags (sec) = ssect->attr;
     }
 
   return _bfd_generic_new_section_hook (abfd, sec);
@@ -2970,6 +2963,7 @@ _bfd_elf_make_section_from_phdr (bfd *ab
   char namebuf[64];
   size_t len;
   int split;
+  unsigned int opb = bfd_octets_per_byte (abfd, NULL);
 
   split = ((hdr->p_memsz > 0)
 	    && (hdr->p_filesz > 0)
@@ -2986,8 +2980,8 @@ _bfd_elf_make_section_from_phdr (bfd *ab
       newsect = bfd_make_section (abfd, name);
       if (newsect == NULL)
 	return FALSE;
-      newsect->vma = hdr->p_vaddr;
-      newsect->lma = hdr->p_paddr;
+      newsect->vma = hdr->p_vaddr / opb;
+      newsect->lma = hdr->p_paddr / opb;
       newsect->size = hdr->p_filesz;
       newsect->filepos = hdr->p_offset;
       newsect->flags |= SEC_HAS_CONTENTS;
@@ -3022,8 +3016,8 @@ _bfd_elf_make_section_from_phdr (bfd *ab
       newsect = bfd_make_section (abfd, name);
       if (newsect == NULL)
 	return FALSE;
-      newsect->vma = hdr->p_vaddr + hdr->p_filesz;
-      newsect->lma = hdr->p_paddr + hdr->p_filesz;
+      newsect->vma = (hdr->p_vaddr + hdr->p_filesz) / opb;
+      newsect->lma = (hdr->p_paddr + hdr->p_filesz) / opb;
       newsect->size = hdr->p_memsz - hdr->p_filesz;
       newsect->filepos = hdr->p_offset + hdr->p_filesz;
       align = newsect->vma & -newsect->vma;
@@ -3032,14 +3026,6 @@ _bfd_elf_make_section_from_phdr (bfd *ab
       newsect->alignment_power = bfd_log2 (align);
       if (hdr->p_type == PT_LOAD)
 	{
-	  /* Hack for gdb.  Segments that have not been modified do
-	     not have their contents written to a core file, on the
-	     assumption that a debugger can find the contents in the
-	     executable.  We flag this case by setting the fake
-	     section size to zero.  Note that "real" bss sections will
-	     always have their contents dumped to the core file.  */
-	  if (bfd_get_format (abfd) == bfd_core)
-	    newsect->size = 0;
 	  newsect->flags |= SEC_ALLOC;
 	  if (hdr->p_flags & PF_X)
 	    newsect->flags |= SEC_CODE;
@@ -3217,6 +3203,7 @@ elf_fake_sections (bfd *abfd, asection *
   unsigned int sh_type;
   const char *name = asect->name;
   bfd_boolean delay_st_name_p = FALSE;
+  bfd_vma mask;
 
   if (arg->failed)
     {
@@ -3238,7 +3225,6 @@ elf_fake_sections (bfd *abfd, asection *
 	  /* Set SEC_ELF_COMPRESS to indicate this section should be
 	     compressed.  */
 	  asect->flags |= SEC_ELF_COMPRESS;
-
 	  /* If this section will be compressed, delay adding section
 	     name to section name section after it is compressed in
 	     _bfd_elf_assign_file_positions_for_non_load.  */
@@ -3299,7 +3285,7 @@ elf_fake_sections (bfd *abfd, asection *
 
   if ((asect->flags & SEC_ALLOC) != 0
       || asect->user_set_vma)
-    this_hdr->sh_addr = asect->vma;
+    this_hdr->sh_addr = asect->vma * bfd_octets_per_byte (abfd, asect);
   else
     this_hdr->sh_addr = 0;
 
@@ -3316,7 +3302,10 @@ elf_fake_sections (bfd *abfd, asection *
       arg->failed = TRUE;
       return;
     }
-  this_hdr->sh_addralign = (bfd_vma) 1 << asect->alignment_power;
+  /* Set sh_addralign to the highest power of two given by alignment
+     consistent with the section VMA.  Linker scripts can force VMA.  */
+  mask = ((bfd_vma) 1 << asect->alignment_power) | this_hdr->sh_addr;
+  this_hdr->sh_addralign = mask & -mask;
   /* The sh_entsize and sh_info fields may have been set already by
      copy_private_section_data.  */
 
@@ -3546,8 +3535,13 @@ bfd_elf_set_group_contents (bfd *abfd, a
       if (symindx == 0)
 	{
 	  /* If called from the assembler, swap_out_syms will have set up
-	     elf_section_syms.  */
-	  BFD_ASSERT (elf_section_syms (abfd) != NULL);
+	     elf_section_syms.
+	     PR 25699: A corrupt input file could contain bogus group info.  */
+	  if (elf_section_syms (abfd) == NULL)
+	    {
+	      *failedptr = TRUE;
+	      return;
+	    }
 	  symindx = elf_section_syms (abfd)[sec->index]->udata.i;
 	}
       elf_section_data (sec)->this_hdr.sh_info = symindx;
@@ -3710,7 +3704,8 @@ elf_get_reloc_section (asection *reloc_s
 
 /* Assign all ELF section numbers.  The dummy first section is handled here
    too.  The link/info pointers for the standard section types are filled
-   in here too, while we're at it.  */
+   in here too, while we're at it.  LINK_INFO will be 0 when arriving
+   here for objcopy, and when using the generic ELF linker.  */
 
 static bfd_boolean
 assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info)
@@ -3721,6 +3716,7 @@ assign_section_numbers (bfd *abfd, struc
   Elf_Internal_Shdr **i_shdrp;
   struct bfd_elf_section_data *d;
   bfd_boolean need_symtab;
+  size_t amt;
 
   section_number = 1;
 
@@ -3828,8 +3824,8 @@ assign_section_numbers (bfd *abfd, struc
 
   /* Set up the list of section header pointers, in agreement with the
      indices.  */
-  i_shdrp = (Elf_Internal_Shdr **) bfd_zalloc2 (abfd, section_number,
-						sizeof (Elf_Internal_Shdr *));
+  amt = section_number * sizeof (Elf_Internal_Shdr *);
+  i_shdrp = (Elf_Internal_Shdr **) bfd_zalloc (abfd, amt);
   if (i_shdrp == NULL)
     return FALSE;
 
@@ -3894,48 +3890,37 @@ assign_section_numbers (bfd *abfd, struc
 	  s = elf_linked_to_section (sec);
 	  if (s)
 	    {
-	      /* elf_linked_to_section points to the input section.  */
-	      if (link_info != NULL)
-		{
-		  /* Check discarded linkonce section.  */
-		  if (discarded_section (s))
-		    {
-		      asection *kept;
-		      _bfd_error_handler
-			/* xgettext:c-format */
-			(_("%pB: sh_link of section `%pA' points to"
-			   " discarded section `%pA' of `%pB'"),
-			 abfd, d->this_hdr.bfd_section,
-			 s, s->owner);
-		      /* Point to the kept section if it has the same
-			 size as the discarded one.  */
-		      kept = _bfd_elf_check_kept_section (s, link_info);
-		      if (kept == NULL)
-			{
-			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
-			}
-		      s = kept;
-		    }
-
-		  s = s->output_section;
-		  BFD_ASSERT (s != NULL);
-		}
-	      else
+	      /* Check discarded linkonce section.  */
+	      if (discarded_section (s))
 		{
-		  /* Handle objcopy. */
-		  if (s->output_section == NULL)
+		  asection *kept;
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB: sh_link of section `%pA' points to"
+		       " discarded section `%pA' of `%pB'"),
+		     abfd, d->this_hdr.bfd_section, s, s->owner);
+		  /* Point to the kept section if it has the same
+		     size as the discarded one.  */
+		  kept = _bfd_elf_check_kept_section (s, link_info);
+		  if (kept == NULL)
 		    {
-		      _bfd_error_handler
-			/* xgettext:c-format */
-			(_("%pB: sh_link of section `%pA' points to"
-			   " removed section `%pA' of `%pB'"),
-			 abfd, d->this_hdr.bfd_section, s, s->owner);
 		      bfd_set_error (bfd_error_bad_value);
 		      return FALSE;
 		    }
-		  s = s->output_section;
+		  s = kept;
+		}
+	      /* Handle objcopy. */
+	      else if (s->output_section == NULL)
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB: sh_link of section `%pA' points to"
+		       " removed section `%pA' of `%pB'"),
+		     abfd, d->this_hdr.bfd_section, s, s->owner);
+		  bfd_set_error (bfd_error_bad_value);
+		  return FALSE;
 		}
+	      s = s->output_section;
 	      d->this_hdr.sh_link = elf_section_data (s)->this_idx;
 	    }
 	  else
@@ -3947,11 +3932,10 @@ assign_section_numbers (bfd *abfd, struc
 		 where s is NULL.  */
 	      const struct elf_backend_data *bed
 		= get_elf_backend_data (abfd);
-	      if (bed->link_order_error_handler)
-		bed->link_order_error_handler
-		  /* xgettext:c-format */
-		  (_("%pB: warning: sh_link not set for section `%pA'"),
-		   abfd, sec);
+	      bed->link_order_error_handler
+		/* xgettext:c-format */
+		(_("%pB: warning: sh_link not set for section `%pA'"),
+		 abfd, sec);
 	    }
 	}
 
@@ -4001,9 +3985,7 @@ assign_section_numbers (bfd *abfd, struc
 		  elf_section_data (s)->this_hdr.sh_link = d->this_idx;
 
 		  /* This is a .stab section.  */
-		  if (elf_section_data (s)->this_hdr.sh_entsize == 0)
-		    elf_section_data (s)->this_hdr.sh_entsize
-		      = 4 + 2 * bfd_get_arch_size (abfd) / 8;
+		  elf_section_data (s)->this_hdr.sh_entsize = 12;
 		}
 	    }
 	  break;
@@ -4148,6 +4130,7 @@ elf_map_symbols (bfd *abfd, unsigned int
   unsigned int idx;
   asection *asect;
   asymbol **new_syms;
+  size_t amt;
 
 #ifdef DEBUG
   fprintf (stderr, "elf_map_symbols\n");
@@ -4161,7 +4144,8 @@ elf_map_symbols (bfd *abfd, unsigned int
     }
 
   max_index++;
-  sect_syms = (asymbol **) bfd_zalloc2 (abfd, max_index, sizeof (asymbol *));
+  amt = max_index * sizeof (asymbol *);
+  sect_syms = (asymbol **) bfd_zalloc (abfd, amt);
   if (sect_syms == NULL)
     return FALSE;
   elf_section_syms (abfd) = sect_syms;
@@ -4212,9 +4196,8 @@ elf_map_symbols (bfd *abfd, unsigned int
     }
 
   /* Now sort the symbols so the local symbols are first.  */
-  new_syms = (asymbol **) bfd_alloc2 (abfd, num_locals + num_globals,
-				      sizeof (asymbol *));
-
+  amt = (num_locals + num_globals) * sizeof (asymbol *);
+  new_syms = (asymbol **) bfd_alloc (abfd, amt);
   if (new_syms == NULL)
     return FALSE;
 
@@ -4551,7 +4534,7 @@ make_mapping (bfd *abfd,
   struct elf_segment_map *m;
   unsigned int i;
   asection **hdrpp;
-  bfd_size_type amt;
+  size_t amt;
 
   amt = sizeof (struct elf_segment_map) - sizeof (asection *);
   amt += (to - from) * sizeof (asection *);
@@ -4678,18 +4661,19 @@ _bfd_elf_map_sections_to_segments (bfd *
       bfd_boolean phdr_in_segment;
       bfd_boolean writable;
       bfd_boolean executable;
-      int tls_count = 0;
+      unsigned int tls_count = 0;
       asection *first_tls = NULL;
       asection *first_mbind = NULL;
       asection *dynsec, *eh_frame_hdr;
-      bfd_size_type amt;
-      bfd_vma addr_mask, wrap_to = 0;
-      bfd_size_type phdr_size;
+      size_t amt;
+      bfd_vma addr_mask, wrap_to = 0;  /* Bytes.  */
+      bfd_size_type phdr_size;  /* Octets/bytes.  */
+      unsigned int opb = bfd_octets_per_byte (abfd, NULL);
 
       /* Select the allocated sections, and sort them.  */
 
-      sections = (asection **) bfd_malloc2 (bfd_count_sections (abfd),
-					    sizeof (asection *));
+      amt = bfd_count_sections (abfd) * sizeof (asection *);
+      sections = (asection **) bfd_malloc (amt);
       if (sections == NULL)
 	goto error_return;
 
@@ -4711,8 +4695,8 @@ _bfd_elf_map_sections_to_segments (bfd *
 	      sections[i] = s;
 	      ++i;
 	      /* A wrapping section potentially clashes with header.  */
-	      if (((s->lma + s->size) & addr_mask) < (s->lma & addr_mask))
-		wrap_to = (s->lma + s->size) & addr_mask;
+	      if (((s->lma + s->size / opb) & addr_mask) < (s->lma & addr_mask))
+		wrap_to = (s->lma + s->size / opb) & addr_mask;
 	    }
 	}
       BFD_ASSERT (i <= bfd_count_sections (abfd));
@@ -4724,6 +4708,8 @@ _bfd_elf_map_sections_to_segments (bfd *
       if (phdr_size == (bfd_size_type) -1)
 	phdr_size = get_program_header_size (abfd, info);
       phdr_size += bed->s->sizeof_ehdr;
+      /* phdr_size is compared to LMA values which are in bytes.  */
+      phdr_size /= opb;
       maxpagesize = bed->maxpagesize;
       if (maxpagesize == 0)
 	maxpagesize = 1;
@@ -4794,7 +4780,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 	 program headers we will need.  */
       if (phdr_in_segment && count > 0)
 	{
-	  bfd_vma phdr_lma;
+	  bfd_vma phdr_lma;  /* Bytes.  */
 	  bfd_boolean separate_phdr = FALSE;
 
 	  phdr_lma = (sections[0]->lma - phdr_size) & addr_mask & -maxpagesize;
@@ -4834,7 +4820,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 	      m = make_mapping (abfd, sections, 0, 0, phdr_in_segment);
 	      if (m == NULL)
 		goto error_return;
-	      m->p_paddr = phdr_lma;
+	      m->p_paddr = phdr_lma * opb;
 	      m->p_vaddr_offset
 		= (sections[0]->vma - phdr_size) & addr_mask & -maxpagesize;
 	      m->p_paddr_valid = 1;
@@ -4948,7 +4934,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 		executable = TRUE;
 	      last_hdr = hdr;
 	      /* .tbss sections effectively have zero size.  */
-	      last_size = !IS_TBSS (hdr) ? hdr->size : 0;
+	      last_size = (!IS_TBSS (hdr) ? hdr->size : 0) / opb;
 	      continue;
 	    }
 
@@ -4974,7 +4960,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 
 	  last_hdr = hdr;
 	  /* .tbss sections effectively have zero size.  */
-	  last_size = !IS_TBSS (hdr) ? hdr->size : 0;
+	  last_size = (!IS_TBSS (hdr) ? hdr->size : 0) / opb;
 	  hdr_index = i;
 	  phdr_in_segment = FALSE;
 	}
@@ -5022,7 +5008,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 		  if (s2->next->alignment_power == alignment_power
 		      && (s2->next->flags & SEC_LOAD) != 0
 		      && elf_section_type (s2->next) == SHT_NOTE
-		      && align_power (s2->lma + s2->size,
+		      && align_power (s2->lma + s2->size / opb,
 				      alignment_power)
 		      == s2->next->lma)
 		    count++;
@@ -5074,7 +5060,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 	  m->p_flags = PF_R;
 	  m->p_flags_valid = 1;
 	  s = first_tls;
-	  for (i = 0; i < (unsigned int) tls_count; ++i)
+	  for (i = 0; i < tls_count; ++i)
 	    {
 	      if ((s->flags & SEC_THREAD_LOCAL) == 0)
 		{
@@ -5082,7 +5068,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 		    (_("%pB: TLS sections are not adjacent:"), abfd);
 		  s = first_tls;
 		  i = 0;
-		  while (i < (unsigned int) tls_count)
+		  while (i < tls_count)
 		    {
 		      if ((s->flags & SEC_THREAD_LOCAL) != 0)
 			{
@@ -5204,9 +5190,12 @@ _bfd_elf_map_sections_to_segments (bfd *
 		{
 		  i = m->count;
 		  while (--i != (unsigned) -1)
-		    if ((m->sections[i]->flags & (SEC_LOAD | SEC_HAS_CONTENTS))
-			== (SEC_LOAD | SEC_HAS_CONTENTS))
-		      break;
+		    {
+		      if (m->sections[i]->size > 0
+			  && (m->sections[i]->flags & (SEC_LOAD | SEC_HAS_CONTENTS))
+			  == (SEC_LOAD | SEC_HAS_CONTENTS))
+			break;
+		    }
 
 		  if (i != (unsigned) -1)
 		    break;
@@ -5241,8 +5230,7 @@ _bfd_elf_map_sections_to_segments (bfd *
   return TRUE;
 
  error_return:
-  if (sections != NULL)
-    free (sections);
+  free (sections);
   return FALSE;
 }
 
@@ -5320,17 +5308,25 @@ elf_sort_segments (const void *arg1, con
     return m1->no_sort_lma ? -1 : 1;
   if (m1->p_type == PT_LOAD && !m1->no_sort_lma)
     {
-      bfd_vma lma1, lma2;
+      bfd_vma lma1, lma2;  /* Octets.  */
       lma1 = 0;
       if (m1->p_paddr_valid)
 	lma1 = m1->p_paddr;
       else if (m1->count != 0)
-	lma1 = m1->sections[0]->lma + m1->p_vaddr_offset;
+	{
+	  unsigned int opb = bfd_octets_per_byte (m1->sections[0]->owner,
+						  m1->sections[0]);
+	  lma1 = (m1->sections[0]->lma + m1->p_vaddr_offset) * opb;
+	}
       lma2 = 0;
       if (m2->p_paddr_valid)
 	lma2 = m2->p_paddr;
       else if (m2->count != 0)
-	lma2 = m2->sections[0]->lma + m2->p_vaddr_offset;
+	{
+	  unsigned int opb = bfd_octets_per_byte (m2->sections[0]->owner,
+						  m2->sections[0]);
+	  lma2 = (m2->sections[0]->lma + m2->p_vaddr_offset) * opb;
+	}
       if (lma1 != lma2)
 	return lma1 < lma2 ? -1 : 1;
     }
@@ -5428,11 +5424,12 @@ assign_file_positions_for_load_sections
   struct elf_segment_map *phdr_load_seg;
   Elf_Internal_Phdr *phdrs;
   Elf_Internal_Phdr *p;
-  file_ptr off;
+  file_ptr off;  /* Octets.  */
   bfd_size_type maxpagesize;
   unsigned int alloc, actual;
   unsigned int i, j;
   struct elf_segment_map **sorted_seg_map;
+  unsigned int opb = bfd_octets_per_byte (abfd, NULL);
 
   if (link_info == NULL
       && !_bfd_elf_map_sections_to_segments (abfd, link_info))
@@ -5540,7 +5537,7 @@ assign_file_positions_for_load_sections
   for (j = 0; j < alloc; j++)
     {
       asection **secpp;
-      bfd_vma off_adjust;
+      bfd_vma off_adjust;  /* Octets.  */
       bfd_boolean no_contents;
 
       /* An ELF segment (described by Elf_Internal_Phdr) may contain a
@@ -5554,16 +5551,16 @@ assign_file_positions_for_load_sections
       p->p_flags = m->p_flags;
 
       if (m->count == 0)
-	p->p_vaddr = m->p_vaddr_offset;
+	p->p_vaddr = m->p_vaddr_offset * opb;
       else
-	p->p_vaddr = m->sections[0]->vma + m->p_vaddr_offset;
+	p->p_vaddr = (m->sections[0]->vma + m->p_vaddr_offset) * opb;
 
       if (m->p_paddr_valid)
 	p->p_paddr = m->p_paddr;
       else if (m->count == 0)
 	p->p_paddr = 0;
       else
-	p->p_paddr = m->sections[0]->lma + m->p_vaddr_offset;
+	p->p_paddr = (m->sections[0]->lma + m->p_vaddr_offset) * opb;
 
       if (p->p_type == PT_LOAD
 	  && (abfd->flags & D_PAGED) != 0)
@@ -5598,7 +5595,7 @@ assign_file_positions_for_load_sections
       if (p->p_type == PT_LOAD
 	  && m->count > 0)
 	{
-	  bfd_size_type align;
+	  bfd_size_type align;  /* Bytes.  */
 	  unsigned int align_power = 0;
 
 	  if (m->p_align_valid)
@@ -5635,7 +5632,7 @@ assign_file_positions_for_load_sections
 		break;
 	      }
 
-	  off_adjust = vma_page_aligned_bias (p->p_vaddr, off, align);
+	  off_adjust = vma_page_aligned_bias (p->p_vaddr, off, align * opb);
 
 	  /* Broken hardware and/or kernel require that files do not
 	     map the same page with different permissions on some hppa
@@ -5644,7 +5641,8 @@ assign_file_positions_for_load_sections
 	      && (abfd->flags & D_PAGED) != 0
 	      && bed->no_page_alias
 	      && (off & (maxpagesize - 1)) != 0
-	      && (off & -maxpagesize) == ((off + off_adjust) & -maxpagesize))
+	      && ((off & -maxpagesize)
+		  == ((off + off_adjust) & -maxpagesize)))
 	    off_adjust += maxpagesize;
 	  off += off_adjust;
 	  if (no_contents)
@@ -5735,7 +5733,7 @@ assign_file_positions_for_load_sections
 	      else if (phdr_load_seg != NULL)
 		{
 		  Elf_Internal_Phdr *phdr = phdrs + phdr_load_seg->idx;
-		  bfd_vma phdr_off = 0;
+		  bfd_vma phdr_off = 0;  /* Octets.  */
 		  if (phdr_load_seg->includes_filehdr)
 		    phdr_off = bed->s->sizeof_ehdr;
 		  p->p_vaddr = phdr->p_vaddr + phdr_off;
@@ -5752,10 +5750,24 @@ assign_file_positions_for_load_sections
 	  || (p->p_type == PT_NOTE && bfd_get_format (abfd) == bfd_core))
 	{
 	  if (!m->includes_filehdr && !m->includes_phdrs)
-	    p->p_offset = off;
+	    {
+	      p->p_offset = off;
+	      if (no_contents)
+		{
+		  /* Put meaningless p_offset for PT_LOAD segments
+		     without file contents somewhere within the first
+		     page, in an attempt to not point past EOF.  */
+		  bfd_size_type align = maxpagesize;
+		  if (align < p->p_align)
+		    align = p->p_align;
+		  if (align < 1)
+		    align = 1;
+		  p->p_offset = off % align;
+		}
+	    }
 	  else
 	    {
-	      file_ptr adjust;
+	      file_ptr adjust;  /* Octets.  */
 
 	      adjust = off - (p->p_offset + p->p_filesz);
 	      if (!no_contents)
@@ -5786,10 +5798,10 @@ assign_file_positions_for_load_sections
 		      && ((this_hdr->sh_flags & SHF_TLS) == 0
 			  || p->p_type == PT_TLS))))
 	    {
-	      bfd_vma p_start = p->p_paddr;
-	      bfd_vma p_end = p_start + p->p_memsz;
-	      bfd_vma s_start = sec->lma;
-	      bfd_vma adjust = s_start - p_end;
+	      bfd_vma p_start = p->p_paddr;                /* Octets.  */
+	      bfd_vma p_end = p_start + p->p_memsz;        /* Octets.  */
+	      bfd_vma s_start = sec->lma * opb;            /* Octets.  */
+	      bfd_vma adjust = s_start - p_end;            /* Octets.  */
 
 	      if (adjust != 0
 		  && (s_start < p_end
@@ -5798,16 +5810,18 @@ assign_file_positions_for_load_sections
 		  _bfd_error_handler
 		    /* xgettext:c-format */
 		    (_("%pB: section %pA lma %#" PRIx64 " adjusted to %#" PRIx64),
-		     abfd, sec, (uint64_t) s_start, (uint64_t) p_end);
+		     abfd, sec, (uint64_t) s_start / opb,
+		     (uint64_t) p_end / opb);
 		  adjust = 0;
-		  sec->lma = p_end;
+		  sec->lma = p_end / opb;
 		}
 	      p->p_memsz += adjust;
 
-	      if (this_hdr->sh_type != SHT_NOBITS)
+	      if (p->p_type == PT_LOAD)
 		{
-		  if (p->p_type == PT_LOAD)
+		  if (this_hdr->sh_type != SHT_NOBITS)
 		    {
+		      off_adjust = 0;
 		      if (p->p_filesz + adjust < p->p_memsz)
 			{
 			  /* We have a PROGBITS section following NOBITS ones.
@@ -5817,10 +5831,25 @@ assign_file_positions_for_load_sections
 			  if (!write_zeros (abfd, off, adjust))
 			    return FALSE;
 			}
+		    }
+		  /* We only adjust sh_offset in SHT_NOBITS sections
+		     as would seem proper for their address when the
+		     section is first in the segment.  sh_offset
+		     doesn't really have any significance for
+		     SHT_NOBITS anyway, apart from a notional position
+		     relative to other sections.  Historically we
+		     didn't bother with adjusting sh_offset and some
+		     programs depend on it not being adjusted.  See
+		     pr12921 and pr25662.  */
+		  if (this_hdr->sh_type != SHT_NOBITS || i == 0)
+		    {
 		      off += adjust;
+		      if (this_hdr->sh_type == SHT_NOBITS)
+			off_adjust += adjust;
 		    }
-		  p->p_filesz += adjust;
 		}
+	      if (this_hdr->sh_type != SHT_NOBITS)
+		p->p_filesz += adjust;
 	    }
 
 	  if (p->p_type == PT_NOTE && bfd_get_format (abfd) == bfd_core)
@@ -5920,7 +5949,11 @@ assign_file_positions_for_load_sections
 	  _bfd_error_handler (_("%pB: error: PHDR segment not covered"
 				" by LOAD segment"),
 			      abfd);
-	  return FALSE;
+	  if (link_info == NULL)
+	    return FALSE;
+	  /* Arrange for the linker to exit with an error, deleting
+	     the output file unless --noinhibit-exec is given.  */
+	  link_info->callbacks->info ("%X");
 	}
 
       /* Check that all sections are in a PT_LOAD segment.
@@ -5982,7 +6015,7 @@ assign_file_positions_for_load_sections
 	      || hash->root.type == bfd_link_hash_common))
 	{
 	  asection *s = NULL;
-	  bfd_vma filehdr_vaddr = phdrs[phdr_load_seg->idx].p_vaddr;
+	  bfd_vma filehdr_vaddr = phdrs[phdr_load_seg->idx].p_vaddr / opb;
 
 	  if (phdr_load_seg->count != 0)
 	    /* The segment contains sections, so use the first one.  */
@@ -6059,6 +6092,7 @@ assign_file_positions_for_non_load_secti
   Elf_Internal_Phdr *p;
   struct elf_segment_map *m;
   file_ptr off;
+  unsigned int opb = bfd_octets_per_byte (abfd, NULL);
 
   i_shdrpp = elf_elfsections (abfd);
   end_hdrpp = i_shdrpp + elf_numsections (abfd);
@@ -6125,7 +6159,7 @@ assign_file_positions_for_non_load_secti
     {
       if (p->p_type == PT_GNU_RELRO)
 	{
-	  bfd_vma start, end;
+	  bfd_vma start, end;  /* Bytes.  */
 	  bfd_boolean ok;
 
 	  if (link_info != NULL)
@@ -6141,7 +6175,7 @@ assign_file_positions_for_non_load_secti
 	      if (!m->p_size_valid)
 		abort ();
 	      start = m->sections[0]->vma;
-	      end = start + m->p_size;
+	      end = start + m->p_size / opb;
 	    }
 	  else
 	    {
@@ -6166,7 +6200,7 @@ assign_file_positions_for_non_load_secti
 		      && lm->count != 0
 		      && (lm->sections[lm->count - 1]->vma
 			  + (!IS_TBSS (lm->sections[lm->count - 1])
-			     ? lm->sections[lm->count - 1]->size
+			     ? lm->sections[lm->count - 1]->size / opb
 			     : 0)) > start
 		      && lm->sections[0]->vma < end)
 		    break;
@@ -6186,10 +6220,10 @@ assign_file_positions_for_non_load_secti
 
 		  if (i < lm->count)
 		    {
-		      p->p_vaddr = lm->sections[i]->vma;
-		      p->p_paddr = lm->sections[i]->lma;
+		      p->p_vaddr = lm->sections[i]->vma * opb;
+		      p->p_paddr = lm->sections[i]->lma * opb;
 		      p->p_offset = lm->sections[i]->filepos;
-		      p->p_memsz = end - p->p_vaddr;
+		      p->p_memsz = end * opb - p->p_vaddr;
 		      p->p_filesz = p->p_memsz;
 
 		      /* The RELRO segment typically ends a few bytes
@@ -6786,6 +6820,7 @@ rewrite_elf_program_header (bfd *ibfd, b
   struct elf_segment_map *phdr_adjust_seg = NULL;
   unsigned int phdr_adjust_num = 0;
   const struct elf_backend_data *bed;
+  unsigned int opb = bfd_octets_per_byte (ibfd, NULL);
 
   bed = get_elf_backend_data (ibfd);
   iehdr = elf_elfheader (ibfd);
@@ -6808,17 +6843,17 @@ rewrite_elf_program_header (bfd *ibfd, b
 
   /* Returns TRUE if the given section is contained within
      the given segment.  VMA addresses are compared.  */
-#define IS_CONTAINED_BY_VMA(section, segment)				\
-  (section->vma >= segment->p_vaddr					\
-   && (section->vma + SECTION_SIZE (section, segment)			\
+#define IS_CONTAINED_BY_VMA(section, segment, opb)			\
+  (section->vma * (opb) >= segment->p_vaddr				\
+   && (section->vma * (opb) + SECTION_SIZE (section, segment)		\
        <= (SEGMENT_END (segment, segment->p_vaddr))))
 
   /* Returns TRUE if the given section is contained within
      the given segment.  LMA addresses are compared.  */
-#define IS_CONTAINED_BY_LMA(section, segment, base)			\
-  (section->lma >= base							\
-   && (section->lma + SECTION_SIZE (section, segment) >= section->lma)	\
-   && (section->lma + SECTION_SIZE (section, segment)			\
+#define IS_CONTAINED_BY_LMA(section, segment, base, opb)		\
+  (section->lma * (opb) >= base						\
+   && (section->lma + SECTION_SIZE (section, segment) / (opb) >= section->lma) \
+   && (section->lma * (opb) + SECTION_SIZE (section, segment)		\
        <= SEGMENT_END (segment, base)))
 
   /* Handle PT_NOTE segment.  */
@@ -6864,10 +6899,10 @@ rewrite_elf_program_header (bfd *ibfd, b
        7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
        8. PT_DYNAMIC should not contain empty sections at the beginning
 	  (with the possible exception of .dynamic).  */
-#define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed)		\
+#define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed, opb)		\
   ((((segment->p_paddr							\
-      ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr)	\
-      : IS_CONTAINED_BY_VMA (section, segment))				\
+      ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr, opb)	\
+      : IS_CONTAINED_BY_VMA (section, segment, opb))			\
      && (section->flags & SEC_ALLOC) != 0)				\
     || IS_NOTE (segment, section))					\
    && segment->p_type != PT_GNU_STACK					\
@@ -6879,15 +6914,15 @@ rewrite_elf_program_header (bfd *ibfd, b
    && (segment->p_type != PT_DYNAMIC					\
        || SECTION_SIZE (section, segment) > 0				\
        || (segment->p_paddr						\
-	   ? segment->p_paddr != section->lma				\
-	   : segment->p_vaddr != section->vma)				\
+	   ? segment->p_paddr != section->lma * (opb)			\
+	   : segment->p_vaddr != section->vma * (opb))			\
        || (strcmp (bfd_section_name (section), ".dynamic") == 0))	\
    && (segment->p_type != PT_LOAD || !section->segment_mark))
 
 /* If the output section of a section in the input segment is NULL,
    it is removed from the corresponding output segment.   */
-#define INCLUDE_SECTION_IN_SEGMENT(section, segment, bed)		\
-  (IS_SECTION_IN_INPUT_SEGMENT (section, segment, bed)		\
+#define INCLUDE_SECTION_IN_SEGMENT(section, segment, bed, opb)		\
+  (IS_SECTION_IN_INPUT_SEGMENT (section, segment, bed, opb)		\
    && section->output_section != NULL)
 
   /* Returns TRUE iff seg1 starts after the end of seg2.  */
@@ -6941,7 +6976,7 @@ rewrite_elf_program_header (bfd *ibfd, b
 	    {
 	      /* Mininal change so that the normal section to segment
 		 assignment code will work.  */
-	      segment->p_vaddr = section->vma;
+	      segment->p_vaddr = section->vma * opb;
 	      break;
 	    }
 
@@ -7013,7 +7048,7 @@ rewrite_elf_program_header (bfd *ibfd, b
       asection *matching_lma;
       asection *suggested_lma;
       unsigned int j;
-      bfd_size_type amt;
+      size_t amt;
       asection *first_section;
 
       if (segment->p_type == PT_NULL)
@@ -7027,7 +7062,7 @@ rewrite_elf_program_header (bfd *ibfd, b
 	{
 	  /* Find the first section in the input segment, which may be
 	     removed from the corresponding output segment.   */
-	  if (IS_SECTION_IN_INPUT_SEGMENT (section, segment, bed))
+	  if (IS_SECTION_IN_INPUT_SEGMENT (section, segment, bed, opb))
 	    {
 	      if (first_section == NULL)
 		first_section = section;
@@ -7039,7 +7074,7 @@ rewrite_elf_program_header (bfd *ibfd, b
       /* Allocate a segment map big enough to contain
 	 all of the sections we have selected.  */
       amt = sizeof (struct elf_segment_map) - sizeof (asection *);
-      amt += (bfd_size_type) section_count * sizeof (asection *);
+      amt += section_count * sizeof (asection *);
       map = (struct elf_segment_map *) bfd_zalloc (obfd, amt);
       if (map == NULL)
 	return FALSE;
@@ -7095,7 +7130,7 @@ rewrite_elf_program_header (bfd *ibfd, b
 		 " at vaddr=%#" PRIx64 ", is this intentional?"),
 	       ibfd, (uint64_t) segment->p_vaddr);
 
-	  map->p_vaddr_offset = segment->p_vaddr;
+	  map->p_vaddr_offset = segment->p_vaddr / opb;
 	  map->count = 0;
 	  *pointer_to_map = map;
 	  pointer_to_map = &map->next;
@@ -7131,7 +7166,8 @@ rewrite_elf_program_header (bfd *ibfd, b
 	 pointers that we are interested in.  As these sections get assigned
 	 to a segment, they are removed from this array.  */
 
-      sections = (asection **) bfd_malloc2 (section_count, sizeof (asection *));
+      amt = section_count * sizeof (asection *);
+      sections = (asection **) bfd_malloc (amt);
       if (sections == NULL)
 	return FALSE;
 
@@ -7149,7 +7185,7 @@ rewrite_elf_program_header (bfd *ibfd, b
 	   section != NULL;
 	   section = section->next)
 	{
-	  if (INCLUDE_SECTION_IN_SEGMENT (section, segment, bed))
+	  if (INCLUDE_SECTION_IN_SEGMENT (section, segment, bed, opb))
 	    {
 	      output_section = section->output_section;
 
@@ -7170,16 +7206,17 @@ rewrite_elf_program_header (bfd *ibfd, b
 				   + (map->includes_phdrs
 				      ? iehdr->e_phnum * iehdr->e_phentsize
 				      : 0),
-				   output_section->alignment_power)
-		      == output_section->vma))
+				   output_section->alignment_power * opb)
+		      == (output_section->vma * opb)))
 		map->p_paddr = segment->p_vaddr;
 
 	      /* Match up the physical address of the segment with the
 		 LMA address of the output section.  */
-	      if (IS_CONTAINED_BY_LMA (output_section, segment, map->p_paddr)
+	      if (IS_CONTAINED_BY_LMA (output_section, segment, map->p_paddr,
+				       opb)
 		  || IS_COREFILE_NOTE (segment, section)
 		  || (bed->want_p_paddr_set_to_zero
-		      && IS_CONTAINED_BY_VMA (output_section, segment)))
+		      && IS_CONTAINED_BY_VMA (output_section, segment, opb)))
 		{
 		  if (matching_lma == NULL
 		      || output_section->lma < matching_lma->lma)
@@ -7223,7 +7260,8 @@ rewrite_elf_program_header (bfd *ibfd, b
 
 	      /* Account for padding before the first section in the
 		 segment.  */
-	      map->p_vaddr_offset = map->p_paddr + hdr_size - matching_lma->lma;
+	      map->p_vaddr_offset = ((map->p_paddr + hdr_size) / opb
+				     - matching_lma->lma);
 	    }
 
 	  free (sections);
@@ -7237,7 +7275,7 @@ rewrite_elf_program_header (bfd *ibfd, b
 	  if (matching_lma == NULL)
 	    matching_lma = suggested_lma;
 
-	  map->p_paddr = matching_lma->lma;
+	  map->p_paddr = matching_lma->lma * opb;
 
 	  /* Offset the segment physical address from the lma
 	     to allow for space taken up by elf headers.  */
@@ -7265,7 +7303,7 @@ rewrite_elf_program_header (bfd *ibfd, b
 		 the same alignment.  */
 	      if (segment->p_align != 0 && segment->p_align < align)
 		align = segment->p_align;
-	      map->p_paddr &= -align;
+	      map->p_paddr &= -(align * opb);
 	    }
 	}
 
@@ -7294,7 +7332,8 @@ rewrite_elf_program_header (bfd *ibfd, b
 
 	      BFD_ASSERT (output_section != NULL);
 
-	      if (IS_CONTAINED_BY_LMA (output_section, segment, map->p_paddr)
+	      if (IS_CONTAINED_BY_LMA (output_section, segment, map->p_paddr,
+				       opb)
 		  || IS_COREFILE_NOTE (segment, section))
 		{
 		  if (map->count == 0)
@@ -7308,8 +7347,8 @@ rewrite_elf_program_header (bfd *ibfd, b
 				       + (map->includes_phdrs
 					  ? iehdr->e_phnum * iehdr->e_phentsize
 					  : 0),
-				       output_section->alignment_power)
-			  != output_section->lma)
+				       output_section->alignment_power * opb)
+			  != output_section->lma * opb)
 			goto sorry;
 		    }
 		  else
@@ -7346,14 +7385,9 @@ rewrite_elf_program_header (bfd *ibfd, b
 
 	  /* PR 23932.  A corrupt input file may contain sections that cannot
 	     be assigned to any segment - because for example they have a
-	     negative size - or segments that do not contain any sections.  */
-	  if (map->count == 0)
-	    {
-	    sorry:
-	      bfd_set_error (bfd_error_sorry);
-	      free (sections);
-	      return FALSE;
-	    }
+	     negative size - or segments that do not contain any sections.
+	     But there are also valid reasons why a segment can be empty.
+	     So allow a count of zero.  */
 
 	  /* Add the current segment to the list of built segments.  */
 	  *pointer_to_map = map;
@@ -7365,7 +7399,7 @@ rewrite_elf_program_header (bfd *ibfd, b
 		 segments.  Create a new segment here, initialise it
 		 and carry on looping.  */
 	      amt = sizeof (struct elf_segment_map) - sizeof (asection *);
-	      amt += (bfd_size_type) section_count * sizeof (asection *);
+	      amt += section_count * sizeof (asection *);
 	      map = (struct elf_segment_map *) bfd_zalloc (obfd, amt);
 	      if (map == NULL)
 		{
@@ -7380,11 +7414,17 @@ rewrite_elf_program_header (bfd *ibfd, b
 	      map->p_type = segment->p_type;
 	      map->p_flags = segment->p_flags;
 	      map->p_flags_valid = 1;
-	      map->p_paddr = suggested_lma->lma;
+	      map->p_paddr = suggested_lma->lma * opb;
 	      map->p_paddr_valid = p_paddr_valid;
 	      map->includes_filehdr = 0;
 	      map->includes_phdrs = 0;
 	    }
+
+	  continue;
+	sorry:
+	  bfd_set_error (bfd_error_sorry);
+	  free (sections);
+	  return FALSE;
 	}
       while (isec < section_count);
 
@@ -7445,6 +7485,7 @@ copy_elf_program_header (bfd *ibfd, bfd
   unsigned int num_segments;
   bfd_boolean phdr_included = FALSE;
   bfd_boolean p_paddr_valid;
+  unsigned int opb = bfd_octets_per_byte (ibfd, NULL);
 
   iehdr = elf_elfheader (ibfd);
 
@@ -7470,7 +7511,7 @@ copy_elf_program_header (bfd *ibfd, bfd
     {
       asection *section;
       unsigned int section_count;
-      bfd_size_type amt;
+      size_t amt;
       Elf_Internal_Shdr *this_hdr;
       asection *first_section = NULL;
       asection *lowest_section;
@@ -7492,7 +7533,7 @@ copy_elf_program_header (bfd *ibfd, bfd
       /* Allocate a segment map big enough to contain
 	 all of the sections we have selected.  */
       amt = sizeof (struct elf_segment_map) - sizeof (asection *);
-      amt += (bfd_size_type) section_count * sizeof (asection *);
+      amt += section_count * sizeof (asection *);
       map = (struct elf_segment_map *) bfd_zalloc (obfd, amt);
       if (map == NULL)
 	return FALSE;
@@ -7570,7 +7611,7 @@ copy_elf_program_header (bfd *ibfd, bfd
 			seg_off = this_hdr->sh_offset - segment->p_offset;
 		      else
 			seg_off = this_hdr->sh_addr - segment->p_vaddr;
-		      if (section->lma - segment->p_paddr != seg_off)
+		      if (section->lma * opb - segment->p_paddr != seg_off)
 			map->p_paddr_valid = FALSE;
 		    }
 		  if (isec == section_count)
@@ -7580,7 +7621,7 @@ copy_elf_program_header (bfd *ibfd, bfd
 	}
 
       if (section_count == 0)
-	map->p_vaddr_offset = segment->p_vaddr;
+	map->p_vaddr_offset = segment->p_vaddr / opb;
       else if (map->p_paddr_valid)
 	{
 	  /* Account for padding before the first section in the segment.  */
@@ -7590,7 +7631,7 @@ copy_elf_program_header (bfd *ibfd, bfd
 	  if (map->includes_phdrs)
 	    hdr_size += iehdr->e_phnum * iehdr->e_phentsize;
 
-	  map->p_vaddr_offset = (map->p_paddr + hdr_size
+	  map->p_vaddr_offset = ((map->p_paddr + hdr_size) / opb
 				 - (lowest_section ? lowest_section->lma : 0));
 	}
 
@@ -7692,7 +7733,7 @@ copy_private_bfd_data (bfd *ibfd, bfd *o
       return copy_elf_program_header (ibfd, obfd);
     }
 
-rewrite:
+ rewrite:
   if (ibfd->xvec == obfd->xvec)
     {
       /* When rewriting program header, set the output maxpagesize to
@@ -7745,10 +7786,19 @@ _bfd_elf_init_private_section_data (bfd
 
   BFD_ASSERT (elf_section_data (osec) != NULL);
 
-  /* For objcopy and relocatable link, don't copy the output ELF
-     section type from input if the output BFD section flags have been
-     set to something different.  For a final link allow some flags
-     that the linker clears to differ.  */
+  /* If this is a known ABI section, ELF section type and flags may
+     have been set up when OSEC was created.  For normal sections we
+     allow the user to override the type and flags other than
+     SHF_MASKOS and SHF_MASKPROC.  */
+  if (elf_section_type (osec) == SHT_PROGBITS
+      || elf_section_type (osec) == SHT_NOTE
+      || elf_section_type (osec) == SHT_NOBITS)
+    elf_section_type (osec) = SHT_NULL;
+  /* For objcopy and relocatable link, copy the ELF section type from
+     the input file if the BFD section flags are the same.  (If they
+     are different the user may be doing something like
+     "objcopy --set-section-flags .text=alloc,data".)  For a final
+     link allow some flags that the linker clears to differ.  */
   if (elf_section_type (osec) == SHT_NULL
       && (osec->flags == isec->flags
 	  || (final_link
@@ -7757,8 +7807,8 @@ _bfd_elf_init_private_section_data (bfd
     elf_section_type (osec) = elf_section_type (isec);
 
   /* FIXME: Is this correct for all OS/PROC specific flags?  */
-  elf_section_flags (osec) |= (elf_section_flags (isec)
-			       & (SHF_MASKOS | SHF_MASKPROC));
+  elf_section_flags (osec) = (elf_section_flags (isec)
+			      & (SHF_MASKOS | SHF_MASKPROC));
 
   /* Copy sh_info from input for mbind section.  */
   if ((elf_tdata (ibfd)->has_gnu_osabi & elf_gnu_osabi_mbind) != 0
@@ -7863,19 +7913,34 @@ _bfd_elf_fixup_group_sections (bfd *ibfd
 		elf_section_flags (s->output_section) &= ~SHF_GROUP;
 		elf_group_name (s->output_section) = NULL;
 	      }
-	    /* Conversely, if the member section is not being output
-	       but the SHT_GROUP section is, then adjust its size.  */
-	    else if (s->output_section == discarded
-		     && isec->output_section != discarded)
+	    else
 	      {
 		struct bfd_elf_section_data *elf_sec = elf_section_data (s);
-		removed += 4;
-		if (elf_sec->rel.hdr != NULL
-		    && (elf_sec->rel.hdr->sh_flags & SHF_GROUP) != 0)
-		  removed += 4;
-		if (elf_sec->rela.hdr != NULL
-		    && (elf_sec->rela.hdr->sh_flags & SHF_GROUP) != 0)
-		  removed += 4;
+		if (s->output_section == discarded
+		    && isec->output_section != discarded)
+		  {
+		    /* Conversely, if the member section is not being
+		       output but the SHT_GROUP section is, then adjust
+		       its size.  */
+		    removed += 4;
+		    if (elf_sec->rel.hdr != NULL
+			&& (elf_sec->rel.hdr->sh_flags & SHF_GROUP) != 0)
+		      removed += 4;
+		    if (elf_sec->rela.hdr != NULL
+			&& (elf_sec->rela.hdr->sh_flags & SHF_GROUP) != 0)
+		      removed += 4;
+		  }
+		else
+		  {
+		    /* Also adjust for zero-sized relocation member
+		       section.  */
+		    if (elf_sec->rel.hdr != NULL
+			&& elf_sec->rel.hdr->sh_size == 0)
+		      removed += 4;
+		    if (elf_sec->rela.hdr != NULL
+			&& elf_sec->rela.hdr->sh_size == 0)
+		      removed += 4;
+		  }
 	      }
 	    s = elf_next_in_group (s);
 	    if (s == first)
@@ -7995,7 +8060,7 @@ swap_out_syms (bfd *abfd,
 	       int relocatable_p)
 {
   const struct elf_backend_data *bed;
-  int symcount;
+  unsigned int symcount;
   asymbol **syms;
   struct elf_strtab_hash *stt;
   Elf_Internal_Shdr *symtab_hdr;
@@ -8006,9 +8071,9 @@ swap_out_syms (bfd *abfd,
   bfd_byte *outbound_shndx;
   unsigned long outbound_syms_index;
   unsigned long outbound_shndx_index;
-  int idx;
+  unsigned int idx;
   unsigned int num_locals;
-  bfd_size_type amt;
+  size_t amt;
   bfd_boolean name_local_sections;
 
   if (!elf_map_symbols (abfd, &num_locals))
@@ -8032,21 +8097,22 @@ swap_out_syms (bfd *abfd,
   symstrtab_hdr->sh_type = SHT_STRTAB;
 
   /* Allocate buffer to swap out the .strtab section.  */
-  symstrtab = (struct elf_sym_strtab *) bfd_malloc2 (symcount + 1,
-						     sizeof (*symstrtab));
-  if (symstrtab == NULL)
+  if (_bfd_mul_overflow (symcount + 1, sizeof (*symstrtab), &amt)
+      || (symstrtab = (struct elf_sym_strtab *) bfd_malloc (amt)) == NULL)
     {
+      bfd_set_error (bfd_error_no_memory);
       _bfd_elf_strtab_free (stt);
       return FALSE;
     }
 
-  outbound_syms = (bfd_byte *) bfd_alloc2 (abfd, 1 + symcount,
-					   bed->s->sizeof_sym);
-  if (outbound_syms == NULL)
+  if (_bfd_mul_overflow (symcount + 1, bed->s->sizeof_sym, &amt)
+      || (outbound_syms = (bfd_byte *) bfd_alloc (abfd, amt)) == NULL)
     {
-error_return:
-      _bfd_elf_strtab_free (stt);
+    error_no_mem:
+      bfd_set_error (bfd_error_no_memory);
+    error_return:
       free (symstrtab);
+      _bfd_elf_strtab_free (stt);
       return FALSE;
     }
   symtab_hdr->contents = outbound_syms;
@@ -8060,9 +8126,10 @@ error_return:
       symtab_shndx_hdr = & elf_symtab_shndx_list (abfd)->hdr;
       if (symtab_shndx_hdr->sh_name != 0)
 	{
-	  amt = (bfd_size_type) (1 + symcount) * sizeof (Elf_External_Sym_Shndx);
-	  outbound_shndx =  (bfd_byte *)
-	    bfd_zalloc2 (abfd, 1 + symcount, sizeof (Elf_External_Sym_Shndx));
+	  if (_bfd_mul_overflow (symcount + 1,
+				 sizeof (Elf_External_Sym_Shndx), &amt))
+	    goto error_no_mem;
+	  outbound_shndx =  (bfd_byte *) bfd_zalloc (abfd, amt);
 	  if (outbound_shndx == NULL)
 	    goto error_return;
 
@@ -8184,9 +8251,26 @@ error_return:
 		  if (elf_symtab_shndx_list (abfd))
 		    shndx = elf_symtab_shndx_list (abfd)->ndx;
 		  break;
-		default:
+		case SHN_COMMON:
+		case SHN_ABS:
 		  shndx = SHN_ABS;
 		  break;
+		default:
+		  if (shndx >= SHN_LOPROC && shndx <= SHN_HIOS)
+		    {
+		      if (bed->symbol_section_index)
+			shndx = bed->symbol_section_index (abfd, type_ptr);
+		      /* Otherwise just leave the index alone.  */
+		    }
+		  else
+		    {
+		      if (shndx > SHN_HIOS && shndx < SHN_HIRESERVE)
+			_bfd_error_handler (_("%pB: \
+Unable to handle section index %x in ELF symbol.  Using ABS instead."),
+					  abfd, shndx);
+		      shndx = SHN_ABS;
+		    }
+		  break;
 		}
 	    }
 	  else
@@ -8362,14 +8446,24 @@ _bfd_elf_get_symtab_upper_bound (bfd *ab
   Elf_Internal_Shdr *hdr = &elf_tdata (abfd)->symtab_hdr;
 
   symcount = hdr->sh_size / get_elf_backend_data (abfd)->s->sizeof_sym;
-  if (symcount >= LONG_MAX / sizeof (asymbol *))
+  if (symcount > LONG_MAX / sizeof (asymbol *))
     {
       bfd_set_error (bfd_error_file_too_big);
       return -1;
     }
-  symtab_size = (symcount + 1) * (sizeof (asymbol *));
-  if (symcount > 0)
-    symtab_size -= sizeof (asymbol *);
+  symtab_size = symcount * (sizeof (asymbol *));
+  if (symcount == 0)
+    symtab_size = sizeof (asymbol *);
+  else if (!bfd_write_p (abfd))
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+
+      if (filesize != 0 && (unsigned long) symtab_size > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return -1;
+	}
+    }
 
   return symtab_size;
 }
@@ -8388,22 +8482,46 @@ _bfd_elf_get_dynamic_symtab_upper_bound
     }
 
   symcount = hdr->sh_size / get_elf_backend_data (abfd)->s->sizeof_sym;
-  if (symcount >= LONG_MAX / sizeof (asymbol *))
+  if (symcount > LONG_MAX / sizeof (asymbol *))
     {
       bfd_set_error (bfd_error_file_too_big);
       return -1;
     }
-  symtab_size = (symcount + 1) * (sizeof (asymbol *));
-  if (symcount > 0)
-    symtab_size -= sizeof (asymbol *);
+  symtab_size = symcount * (sizeof (asymbol *));
+  if (symcount == 0)
+    symtab_size = sizeof (asymbol *);
+  else if (!bfd_write_p (abfd))
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+
+      if (filesize != 0 && (unsigned long) symtab_size > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return -1;
+	}
+    }
 
   return symtab_size;
 }
 
 long
-_bfd_elf_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED,
-				sec_ptr asect)
+_bfd_elf_get_reloc_upper_bound (bfd *abfd, sec_ptr asect)
 {
+  if (asect->reloc_count != 0 && !bfd_write_p (abfd))
+    {
+      /* Sanity check reloc section size.  */
+      struct bfd_elf_section_data *d = elf_section_data (asect);
+      Elf_Internal_Shdr *rel_hdr = &d->this_hdr;
+      bfd_size_type ext_rel_size = rel_hdr->sh_size;
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+
+      if (filesize != 0 && ext_rel_size > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return -1;
+	}
+    }
+
 #if SIZEOF_LONG == SIZEOF_INT
   if (asect->reloc_count >= LONG_MAX / sizeof (arelent *))
     {
@@ -8469,7 +8587,7 @@ _bfd_elf_canonicalize_dynamic_symtab (bf
 long
 _bfd_elf_get_dynamic_reloc_upper_bound (bfd *abfd)
 {
-  bfd_size_type count;
+  bfd_size_type count, ext_rel_size;
   asection *s;
 
   if (elf_dynsymtab (abfd) == 0)
@@ -8479,11 +8597,18 @@ _bfd_elf_get_dynamic_reloc_upper_bound (
     }
 
   count = 1;
+  ext_rel_size = 0;
   for (s = abfd->sections; s != NULL; s = s->next)
     if (elf_section_data (s)->this_hdr.sh_link == elf_dynsymtab (abfd)
 	&& (elf_section_data (s)->this_hdr.sh_type == SHT_REL
 	    || elf_section_data (s)->this_hdr.sh_type == SHT_RELA))
       {
+	ext_rel_size += s->size;
+	if (ext_rel_size < s->size)
+	  {
+	    bfd_set_error (bfd_error_file_truncated);
+	    return -1;
+	  }
 	count += s->size / elf_section_data (s)->this_hdr.sh_entsize;
 	if (count > LONG_MAX / sizeof (arelent *))
 	  {
@@ -8491,6 +8616,16 @@ _bfd_elf_get_dynamic_reloc_upper_bound (
 	    return -1;
 	  }
       }
+  if (count > 1 && !bfd_write_p (abfd))
+    {
+      /* Sanity check reloc section sizes.  */
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      if (filesize != 0 && ext_rel_size > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return -1;
+	}
+    }
   return count * sizeof (arelent *);
 }
 
@@ -8550,6 +8685,7 @@ _bfd_elf_slurp_version_tables (bfd *abfd
 {
   bfd_byte *contents = NULL;
   unsigned int freeidx = 0;
+  size_t amt;
 
   if (elf_dynverref (abfd) != 0)
     {
@@ -8564,39 +8700,28 @@ _bfd_elf_slurp_version_tables (bfd *abfd
       if (hdr->sh_info == 0
 	  || hdr->sh_info > hdr->sh_size / sizeof (Elf_External_Verneed))
 	{
-error_return_bad_verref:
+	error_return_bad_verref:
 	  _bfd_error_handler
 	    (_("%pB: .gnu.version_r invalid entry"), abfd);
 	  bfd_set_error (bfd_error_bad_value);
-error_return_verref:
+	error_return_verref:
 	  elf_tdata (abfd)->verref = NULL;
 	  elf_tdata (abfd)->cverrefs = 0;
 	  goto error_return;
 	}
 
-      ufile_ptr filesize = bfd_get_file_size (abfd);
-      if (filesize > 0 && filesize < hdr->sh_size)
-	{
-	  /* PR 24708: Avoid attempts to allocate a ridiculous amount
-	     of memory.  */
-	  bfd_set_error (bfd_error_no_memory);
-	  _bfd_error_handler
-	    /* xgettext:c-format */
-	    (_("error: %pB version reference section is too large (%#" PRIx64 " bytes)"),
-	     abfd, (uint64_t) hdr->sh_size);
-	  goto error_return_verref;
-	}
-      contents = (bfd_byte *) bfd_malloc (hdr->sh_size);
-      if (contents == NULL)
+      if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0)
 	goto error_return_verref;
-
-      if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0
-	  || bfd_bread (contents, hdr->sh_size, abfd) != hdr->sh_size)
+      contents = _bfd_malloc_and_read (abfd, hdr->sh_size, hdr->sh_size);
+      if (contents == NULL)
 	goto error_return_verref;
 
-      elf_tdata (abfd)->verref = (Elf_Internal_Verneed *)
-	bfd_alloc2 (abfd, hdr->sh_info, sizeof (Elf_Internal_Verneed));
-
+      if (_bfd_mul_overflow (hdr->sh_info, sizeof (Elf_Internal_Verneed), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  goto error_return_verref;
+	}
+      elf_tdata (abfd)->verref = (Elf_Internal_Verneed *) bfd_alloc (abfd, amt);
       if (elf_tdata (abfd)->verref == NULL)
 	goto error_return_verref;
 
@@ -8625,9 +8750,14 @@ error_return_verref:
 	    iverneed->vn_auxptr = NULL;
 	  else
 	    {
+	      if (_bfd_mul_overflow (iverneed->vn_cnt,
+				     sizeof (Elf_Internal_Vernaux), &amt))
+		{
+		  bfd_set_error (bfd_error_file_too_big);
+		  goto error_return_verref;
+		}
 	      iverneed->vn_auxptr = (struct elf_internal_vernaux *)
-		  bfd_alloc2 (abfd, iverneed->vn_cnt,
-			      sizeof (Elf_Internal_Vernaux));
+		bfd_alloc (abfd, amt);
 	      if (iverneed->vn_auxptr == NULL)
 		goto error_return_verref;
 	    }
@@ -8713,11 +8843,10 @@ error_return_verref:
 	  goto error_return;
 	}
 
-      contents = (bfd_byte *) bfd_malloc (hdr->sh_size);
-      if (contents == NULL)
+      if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0)
 	goto error_return_verdef;
-      if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0
-	  || bfd_bread (contents, hdr->sh_size, abfd) != hdr->sh_size)
+      contents = _bfd_malloc_and_read (abfd, hdr->sh_size, hdr->sh_size);
+      if (contents == NULL)
 	goto error_return_verdef;
 
       BFD_ASSERT (sizeof (Elf_External_Verdef)
@@ -8759,9 +8888,12 @@ error_return_verref:
 	  else
 	    freeidx = ++maxidx;
 	}
-
-      elf_tdata (abfd)->verdef = (Elf_Internal_Verdef *)
-	bfd_zalloc2 (abfd, maxidx, sizeof (Elf_Internal_Verdef));
+      if (_bfd_mul_overflow (maxidx, sizeof (Elf_Internal_Verdef), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  goto error_return_verdef;
+	}
+      elf_tdata (abfd)->verdef = (Elf_Internal_Verdef *) bfd_zalloc (abfd, amt);
       if (elf_tdata (abfd)->verdef == NULL)
 	goto error_return_verdef;
 
@@ -8789,9 +8921,14 @@ error_return_verref:
 	    iverdef->vd_auxptr = NULL;
 	  else
 	    {
+	      if (_bfd_mul_overflow (iverdef->vd_cnt,
+				     sizeof (Elf_Internal_Verdaux), &amt))
+		{
+		  bfd_set_error (bfd_error_file_too_big);
+		  goto error_return_verdef;
+		}
 	      iverdef->vd_auxptr = (struct elf_internal_verdaux *)
-		  bfd_alloc2 (abfd, iverdef->vd_cnt,
-			      sizeof (Elf_Internal_Verdaux));
+		bfd_alloc (abfd, amt);
 	      if (iverdef->vd_auxptr == NULL)
 		goto error_return_verdef;
 	    }
@@ -8854,8 +8991,12 @@ error_return_verref:
       else
 	freeidx++;
 
-      elf_tdata (abfd)->verdef = (Elf_Internal_Verdef *)
-	  bfd_zalloc2 (abfd, freeidx, sizeof (Elf_Internal_Verdef));
+      if (_bfd_mul_overflow (freeidx, sizeof (Elf_Internal_Verdef), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  goto error_return;
+	}
+      elf_tdata (abfd)->verdef = (Elf_Internal_Verdef *) bfd_zalloc (abfd, amt);
       if (elf_tdata (abfd)->verdef == NULL)
 	goto error_return;
 
@@ -8893,8 +9034,7 @@ error_return_verref:
   return TRUE;
 
  error_return:
-  if (contents != NULL)
-    free (contents);
+  free (contents);
   return FALSE;
 }
 
@@ -9142,20 +9282,47 @@ _bfd_elf_set_section_contents (bfd *abfd
   hdr = &elf_section_data (section)->this_hdr;
   if (hdr->sh_offset == (file_ptr) -1)
     {
+      unsigned char *contents;
+
       if (bfd_section_is_ctf (section))
 	/* Nothing to do with this section: the contents are generated
 	   later.  */
 	return TRUE;
 
-      /* We must compress this section.  Write output to the buffer.  */
-      unsigned char *contents = hdr->contents;
-      if ((offset + count) > hdr->sh_size
-	  || (section->flags & SEC_ELF_COMPRESS) == 0
-	  || contents == NULL)
-	abort ();
+      if ((section->flags & SEC_ELF_COMPRESS) == 0)
+	{
+	  _bfd_error_handler
+	    (_("%pB:%pA: error: attempting to write into an unallocated compressed section"),
+	     abfd, section);
+	  bfd_set_error (bfd_error_invalid_operation);
+	  return FALSE;
+	}
+      
+      if ((offset + count) > hdr->sh_size)
+	{
+	  _bfd_error_handler
+	    (_("%pB:%pA: error: attempting to write over the end of the section"),
+	     abfd, section);
+
+	  bfd_set_error (bfd_error_invalid_operation);
+	  return FALSE;
+	}
+
+      contents = hdr->contents;
+      if (contents == NULL)
+	{
+	  _bfd_error_handler
+	    (_("%pB:%pA: error: attempting to write section into an empty buffer"),
+	     abfd, section);
+
+	  bfd_set_error (bfd_error_invalid_operation);
+	  return FALSE;
+	}
+
       memcpy (contents + offset, location, count);
       return TRUE;
     }
+
   pos = hdr->sh_offset + offset;
   if (bfd_seek (abfd, pos, SEEK_SET) != 0
       || bfd_bwrite (location, count, abfd) != count)
@@ -9273,7 +9440,9 @@ bfd_boolean
 _bfd_elf_close_and_cleanup (bfd *abfd)
 {
   struct elf_obj_tdata *tdata = elf_tdata (abfd);
-  if (bfd_get_format (abfd) == bfd_object && tdata != NULL)
+  if (tdata != NULL
+      && (bfd_get_format (abfd) == bfd_object
+	  || bfd_get_format (abfd) == bfd_core))
     {
       if (elf_tdata (abfd)->o != NULL && elf_shstrtab (abfd) != NULL)
 	_bfd_elf_strtab_free (elf_shstrtab (abfd));
@@ -9304,8 +9473,6 @@ _bfd_elf_rel_vtable_reloc_fn
    out details about the corefile.  */
 
 #ifdef HAVE_SYS_PROCFS_H
-/* Needed for new procfs interface on sparc-solaris.  */
-# define _STRUCTURED_PROC 1
 # include <sys/procfs.h>
 #endif
 
@@ -9730,6 +9897,12 @@ elfcore_grok_aarch_pauth (bfd *abfd, Elf
   return elfcore_make_note_pseudosection (abfd, ".reg-aarch-pauth", note);
 }
 
+static bfd_boolean
+elfcore_grok_arc_v2 (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, ".reg-arc-v2", note);
+}
+
 #if defined (HAVE_PRPSINFO_T)
 typedef prpsinfo_t   elfcore_psinfo_t;
 #if defined (HAVE_PRPSINFO32_T)		/* Sparc64 cross Sparc32 */
@@ -9954,18 +10127,26 @@ elfcore_grok_lwpstatus (bfd *abfd, Elf_I
 }
 #endif /* defined (HAVE_LWPSTATUS_T) */
 
+/* These constants, and the structure offsets used below, are defined by
+   Cygwin's core_dump.h */
+#define NOTE_INFO_PROCESS  1
+#define NOTE_INFO_THREAD   2
+#define NOTE_INFO_MODULE   3
+#define NOTE_INFO_MODULE64 4
+
 static bfd_boolean
 elfcore_grok_win32pstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   char buf[30];
   char *name;
   size_t len;
+  unsigned int name_size;
   asection *sect;
-  int type;
+  unsigned int type;
   int is_active_thread;
   bfd_vma base_addr;
 
-  if (note->descsz < 728)
+  if (note->descsz < 4)
     return TRUE;
 
   if (! CONST_STRNEQ (note->namedata, "win32"))
@@ -9973,20 +10154,40 @@ elfcore_grok_win32pstatus (bfd *abfd, El
 
   type = bfd_get_32 (abfd, note->descdata);
 
+  struct {
+    const char *type_name;
+    unsigned long min_size;
+  } size_check[] =
+      {
+       { "NOTE_INFO_PROCESS", 12 },
+       { "NOTE_INFO_THREAD", 12 },
+       { "NOTE_INFO_MODULE", 12 },
+       { "NOTE_INFO_MODULE64", 16 },
+      };
+
+  if (type > (sizeof(size_check)/sizeof(size_check[0])))
+      return TRUE;
+
+  if (note->descsz < size_check[type - 1].min_size)
+    {
+      _bfd_error_handler (_("%pB: warning: win32pstatus %s of size %lu bytes is too small"),
+                          abfd, size_check[type - 1].type_name, note->descsz);
+      return TRUE;
+    }
+
   switch (type)
     {
-    case 1 /* NOTE_INFO_PROCESS */:
+    case NOTE_INFO_PROCESS:
       /* FIXME: need to add ->core->command.  */
-      /* process_info.pid */
-      elf_tdata (abfd)->core->pid = bfd_get_32 (abfd, note->descdata + 8);
-      /* process_info.signal */
-      elf_tdata (abfd)->core->signal = bfd_get_32 (abfd, note->descdata + 12);
+      elf_tdata (abfd)->core->pid = bfd_get_32 (abfd, note->descdata + 4);
+      elf_tdata (abfd)->core->signal = bfd_get_32 (abfd, note->descdata + 8);
       break;
 
-    case 2 /* NOTE_INFO_THREAD */:
-      /* Make a ".reg/999" section.  */
+    case NOTE_INFO_THREAD:
+      /* Make a ".reg/<tid>" section containing the Win32 API thread CONTEXT
+         structure. */
       /* thread_info.tid */
-      sprintf (buf, ".reg/%ld", (long) bfd_get_32 (abfd, note->descdata + 8));
+      sprintf (buf, ".reg/%ld", (long) bfd_get_32 (abfd, note->descdata + 4));
 
       len = strlen (buf) + 1;
       name = (char *) bfd_alloc (abfd, len);
@@ -10000,7 +10201,7 @@ elfcore_grok_win32pstatus (bfd *abfd, El
 	return FALSE;
 
       /* sizeof (thread_info.thread_context) */
-      sect->size = 716;
+      sect->size = note->descsz - 12;
       /* offsetof (thread_info.thread_context) */
       sect->filepos = note->descpos + 12;
       sect->alignment_power = 2;
@@ -10013,11 +10214,25 @@ elfcore_grok_win32pstatus (bfd *abfd, El
 	  return FALSE;
       break;
 
-    case 3 /* NOTE_INFO_MODULE */:
+    case NOTE_INFO_MODULE:
+    case NOTE_INFO_MODULE64:
       /* Make a ".module/xxxxxxxx" section.  */
-      /* module_info.base_address */
-      base_addr = bfd_get_32 (abfd, note->descdata + 4);
-      sprintf (buf, ".module/%08lx", (unsigned long) base_addr);
+      if (type == NOTE_INFO_MODULE)
+        {
+          /* module_info.base_address */
+          base_addr = bfd_get_32 (abfd, note->descdata + 4);
+          sprintf (buf, ".module/%08lx", (unsigned long) base_addr);
+          /* module_info.module_name_size */
+          name_size = bfd_get_32 (abfd, note->descdata + 8);
+        }
+      else /* NOTE_INFO_MODULE64 */
+        {
+          /* module_info.base_address */
+          base_addr = bfd_get_64 (abfd, note->descdata + 4);
+          sprintf (buf, ".module/%016lx", (unsigned long) base_addr);
+          /* module_info.module_name_size */
+          name_size = bfd_get_32 (abfd, note->descdata + 12);
+        }
 
       len = strlen (buf) + 1;
       name = (char *) bfd_alloc (abfd, len);
@@ -10031,6 +10246,13 @@ elfcore_grok_win32pstatus (bfd *abfd, El
       if (sect == NULL)
 	return FALSE;
 
+      if (note->descsz < 12 + name_size)
+        {
+          _bfd_error_handler (_("%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u"),
+                              abfd, note->descsz, name_size);
+          return TRUE;
+        }
+
       sect->size = note->descsz;
       sect->filepos = note->descpos;
       sect->alignment_power = 2;
@@ -10289,6 +10511,13 @@ elfcore_grok_note (bfd *abfd, Elf_Intern
       else
 	return TRUE;
 
+    case NT_ARC_V2:
+      if (note->namesz == 6
+	  && strcmp (note->namedata, "LINUX") == 0)
+	return elfcore_grok_arc_v2 (abfd, note);
+      else
+	return TRUE;
+
     case NT_ARM_VFP:
       if (note->namesz == 6
 	  && strcmp (note->namedata, "LINUX") == 0)
@@ -10666,11 +10895,17 @@ elfcore_grok_netbsd_note (bfd *abfd, Elf
       /* NetBSD-specific Elf Auxiliary Vector data. */
       return elfcore_make_auxv_note_section (abfd, note, 4);
 #endif
+#ifdef NT_NETBSDCORE_LWPSTATUS
+    case NT_NETBSDCORE_LWPSTATUS:
+      return elfcore_make_note_pseudosection (abfd,
+					      ".note.netbsdcore.lwpstatus",
+					      note);
+#endif
     default:
       break;
     }
 
-  /* As of March 2017 there are no other machine-independent notes
+  /* As of March 2020 there are no other machine-independent notes
      defined for NetBSD core files.  If the note type is less
      than the start of the machine-dependent note types, we don't
      understand it.  */
@@ -10684,6 +10919,7 @@ elfcore_grok_netbsd_note (bfd *abfd, Elf
       /* On the Alpha, SPARC (32-bit and 64-bit), PT_GETREGS == mach+0 and
 	 PT_GETFPREGS == mach+2.  */
 
+    case bfd_arch_aarch64:
     case bfd_arch_alpha:
     case bfd_arch_sparc:
       switch (note->type)
@@ -11694,6 +11930,18 @@ elfcore_write_aarch_pauth (bfd *abfd,
 }
 
 char *
+elfcore_write_arc_v2 (bfd *abfd,
+		      char *buf,
+		      int *bufsiz,
+		      const void *arc_v2,
+		      int size)
+{
+  char *note_name = "LINUX";
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     note_name, NT_ARC_V2, arc_v2, size);
+}
+
+char *
 elfcore_write_register_note (bfd *abfd,
 			     char *buf,
 			     int *bufsiz,
@@ -11775,6 +12023,8 @@ elfcore_write_register_note (bfd *abfd,
     return elfcore_write_aarch_sve (abfd, buf, bufsiz, data, size);
   if (strcmp (section, ".reg-aarch-pauth") == 0)
     return elfcore_write_aarch_pauth (abfd, buf, bufsiz, data, size);
+  if (strcmp (section, ".reg-arc-v2") == 0)
+    return elfcore_write_arc_v2 (abfd, buf, bufsiz, data, size);
   return NULL;
 }
 
@@ -11891,7 +12141,7 @@ elf_read_notes (bfd *abfd, file_ptr offs
   if (bfd_seek (abfd, offset, SEEK_SET) != 0)
     return FALSE;
 
-  buf = (char *) bfd_malloc (size + 1);
+  buf = (char *) _bfd_malloc_and_read (abfd, size + 1, size);
   if (buf == NULL)
     return FALSE;
 
@@ -11899,8 +12149,7 @@ elf_read_notes (bfd *abfd, file_ptr offs
      0-termintate the buffer so that string searches will not overflow.  */
   buf[size] = 0;
 
-  if (bfd_bread (buf, size, abfd) != size
-      || !elf_parse_notes (abfd, buf, size, offset, align))
+  if (!elf_parse_notes (abfd, buf, size, offset, align))
     {
       free (buf);
       return FALSE;
@@ -12274,3 +12523,458 @@ _bfd_elf_maybe_function_sym (const asymb
     size = 1;
   return size;
 }
+
+/* Set to non-zero to enable some debug messages.  */
+#define DEBUG_SECONDARY_RELOCS	 0
+
+/* An internal-to-the-bfd-library only section type
+   used to indicate a cached secondary reloc section.  */
+#define SHT_SECONDARY_RELOC	 (SHT_LOOS + SHT_RELA)
+
+/* Create a BFD section to hold a secondary reloc section.  */
+
+bfd_boolean
+_bfd_elf_init_secondary_reloc_section (bfd * abfd,
+				       Elf_Internal_Shdr *hdr,
+				       const char * name,
+				       unsigned int shindex)
+{
+  /* We only support RELA secondary relocs.  */
+  if (hdr->sh_type != SHT_RELA)
+    return FALSE;
+
+#if DEBUG_SECONDARY_RELOCS
+  fprintf (stderr, "secondary reloc section %s encountered\n", name);
+#endif
+  hdr->sh_type = SHT_SECONDARY_RELOC;
+  return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
+}
+
+/* Read in any secondary relocs associated with SEC.  */
+
+bfd_boolean
+_bfd_elf_slurp_secondary_reloc_section (bfd *      abfd,
+					asection * sec,
+					asymbol ** symbols)
+{
+  const struct elf_backend_data * const ebd = get_elf_backend_data (abfd);
+  asection * relsec;
+  bfd_boolean result = TRUE;
+  bfd_vma (*r_sym) (bfd_vma);
+
+#if BFD_DEFAULT_TARGET_SIZE > 32
+  if (bfd_arch_bits_per_address (abfd) != 32)
+    r_sym = elf64_r_sym;
+  else
+#endif
+    r_sym = elf32_r_sym;
+  
+  /* Discover if there are any secondary reloc sections
+     associated with SEC.  */
+  for (relsec = abfd->sections; relsec != NULL; relsec = relsec->next)
+    {
+      Elf_Internal_Shdr * hdr = & elf_section_data (relsec)->this_hdr;
+
+      if (hdr->sh_type == SHT_SECONDARY_RELOC
+	  && hdr->sh_info == (unsigned) elf_section_data (sec)->this_idx
+	  && (hdr->sh_entsize == ebd->s->sizeof_rel
+	      || hdr->sh_entsize == ebd->s->sizeof_rela))
+	{
+	  bfd_byte * native_relocs;
+	  bfd_byte * native_reloc;
+	  arelent * internal_relocs;
+	  arelent * internal_reloc;
+	  unsigned int i;
+	  unsigned int entsize;
+	  unsigned int symcount;
+	  unsigned int reloc_count;
+	  size_t amt;
+
+	  if (ebd->elf_info_to_howto == NULL)
+	    return FALSE;
+
+#if DEBUG_SECONDARY_RELOCS
+	  fprintf (stderr, "read secondary relocs for %s from %s\n",
+		   sec->name, relsec->name);
+#endif
+	  entsize = hdr->sh_entsize;
+
+	  native_relocs = bfd_malloc (hdr->sh_size);
+	  if (native_relocs == NULL)
+	    {
+	      result = FALSE;
+	      continue;
+	    }
+
+	  reloc_count = NUM_SHDR_ENTRIES (hdr);
+	  if (_bfd_mul_overflow (reloc_count, sizeof (arelent), & amt))
+	    {
+	      free (native_relocs);
+	      bfd_set_error (bfd_error_file_too_big);
+	      result = FALSE;
+	      continue;
+	    }
+
+	  internal_relocs = (arelent *) bfd_alloc (abfd, amt);
+	  if (internal_relocs == NULL)
+	    {
+	      free (native_relocs);
+	      result = FALSE;
+	      continue;
+	    }
+
+	  if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0
+	      || (bfd_bread (native_relocs, hdr->sh_size, abfd)
+		  != hdr->sh_size))
+	    {
+	      free (native_relocs);
+	      /* The internal_relocs will be freed when
+		 the memory for the bfd is released.  */
+	      result = FALSE;
+	      continue;
+	    }
+
+	  symcount = bfd_get_symcount (abfd);
+
+	  for (i = 0, internal_reloc = internal_relocs,
+		 native_reloc = native_relocs;
+	       i < reloc_count;
+	       i++, internal_reloc++, native_reloc += entsize)
+	    {
+	      bfd_boolean res;
+	      Elf_Internal_Rela rela;
+
+	      ebd->s->swap_reloca_in (abfd, native_reloc, & rela);
+
+	      /* The address of an ELF reloc is section relative for an object
+		 file, and absolute for an executable file or shared library.
+		 The address of a normal BFD reloc is always section relative,
+		 and the address of a dynamic reloc is absolute..  */
+	      if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0)
+		internal_reloc->address = rela.r_offset;
+	      else
+		internal_reloc->address = rela.r_offset - sec->vma;
+
+	      if (r_sym (rela.r_info) == STN_UNDEF)
+		{
+		  /* FIXME: This and the error case below mean that we
+		     have a symbol on relocs that is not elf_symbol_type.  */
+		  internal_reloc->sym_ptr_ptr =
+		    bfd_abs_section_ptr->symbol_ptr_ptr;
+		}
+	      else if (r_sym (rela.r_info) > symcount)
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB(%pA): relocation %d has invalid symbol index %ld"),
+		     abfd, sec, i, (long) r_sym (rela.r_info));
+		  bfd_set_error (bfd_error_bad_value);
+		  internal_reloc->sym_ptr_ptr =
+		    bfd_abs_section_ptr->symbol_ptr_ptr;
+		  result = FALSE;
+		}
+	      else
+		{
+		  asymbol **ps;
+
+		  ps = symbols + r_sym (rela.r_info) - 1;
+
+		  internal_reloc->sym_ptr_ptr = ps;
+		  /* Make sure that this symbol is not removed by strip.  */
+		  (*ps)->flags |= BSF_KEEP;
+		}
+
+	      internal_reloc->addend = rela.r_addend;
+
+	      res = ebd->elf_info_to_howto (abfd, internal_reloc, & rela);
+	      if (! res || internal_reloc->howto == NULL)
+		{
+#if DEBUG_SECONDARY_RELOCS
+		  fprintf (stderr, "there is no howto associated with reloc %lx\n",
+			   rela.r_info);
+#endif
+		  result = FALSE;
+		}
+	    }
+
+	  free (native_relocs);
+	  /* Store the internal relocs.  */
+	  elf_section_data (relsec)->sec_info = internal_relocs;
+	}
+    }
+
+  return result;
+}
+
+/* Set the ELF section header fields of an output secondary reloc section.  */
+
+bfd_boolean
+_bfd_elf_copy_special_section_fields (const bfd *   ibfd ATTRIBUTE_UNUSED,
+				      bfd *         obfd ATTRIBUTE_UNUSED,
+				      const Elf_Internal_Shdr * isection,
+				      Elf_Internal_Shdr *       osection)
+{
+  asection * isec;
+  asection * osec;
+  struct bfd_elf_section_data * esd;
+
+  if (isection == NULL)
+    return FALSE;
+
+  if (isection->sh_type != SHT_SECONDARY_RELOC)
+    return TRUE;
+
+  isec = isection->bfd_section;
+  if (isec == NULL)
+    return FALSE;
+
+  osec = osection->bfd_section;
+  if (osec == NULL)
+    return FALSE;
+
+  esd = elf_section_data (osec);
+  BFD_ASSERT (esd->sec_info == NULL);
+  esd->sec_info = elf_section_data (isec)->sec_info;
+  osection->sh_type = SHT_RELA;
+  osection->sh_link = elf_onesymtab (obfd);
+  if (osection->sh_link == 0)
+    {
+      /* There is no symbol table - we are hosed...  */
+      _bfd_error_handler
+	/* xgettext:c-format */
+	(_("%pB(%pA): link section cannot be set because the output file does not have a symbol table"),
+	obfd, osec);
+      bfd_set_error (bfd_error_bad_value);
+      return FALSE;
+    }
+
+  /* Find the output section that corresponds to the isection's sh_info link.  */
+  if (isection->sh_info == 0
+      || isection->sh_info >= elf_numsections (ibfd))
+    {
+      _bfd_error_handler
+	/* xgettext:c-format */
+	(_("%pB(%pA): info section index is invalid"),
+	obfd, osec);
+      bfd_set_error (bfd_error_bad_value);
+      return FALSE;
+    }
+
+  isection = elf_elfsections (ibfd)[isection->sh_info];
+
+  if (isection == NULL
+      || isection->bfd_section == NULL
+      || isection->bfd_section->output_section == NULL)
+    {
+      _bfd_error_handler
+	/* xgettext:c-format */
+	(_("%pB(%pA): info section index cannot be set because the section is not in the output"),
+	obfd, osec);
+      bfd_set_error (bfd_error_bad_value);
+      return FALSE;
+    }
+
+  esd = elf_section_data (isection->bfd_section->output_section);
+  BFD_ASSERT (esd != NULL);
+  osection->sh_info = esd->this_idx;
+  esd->has_secondary_relocs = TRUE;
+#if DEBUG_SECONDARY_RELOCS
+  fprintf (stderr, "update header of %s, sh_link = %u, sh_info = %u\n",
+	   osec->name, osection->sh_link, osection->sh_info);
+  fprintf (stderr, "mark section %s as having secondary relocs\n",
+	   bfd_section_name (isection->bfd_section->output_section));
+#endif
+
+  return TRUE;
+}
+
+/* Write out a secondary reloc section.
+
+   FIXME: Currently this function can result in a serious performance penalty
+   for files with secondary relocs and lots of sections.  The proper way to
+   fix this is for _bfd_elf_copy_special_section_fields() to chain secondary
+   relocs together and then to have this function just walk that chain.  */
+
+bfd_boolean
+_bfd_elf_write_secondary_reloc_section (bfd *abfd, asection *sec)
+{
+  const struct elf_backend_data * const ebd = get_elf_backend_data (abfd);
+  bfd_vma addr_offset;
+  asection * relsec;
+  bfd_vma (*r_info) (bfd_vma, bfd_vma);
+  bfd_boolean result = TRUE;
+
+  if (sec == NULL)
+    return FALSE;
+
+#if BFD_DEFAULT_TARGET_SIZE > 32
+  if (bfd_arch_bits_per_address (abfd) != 32)
+    r_info = elf64_r_info;
+  else
+#endif
+    r_info = elf32_r_info;
+
+  /* The address of an ELF reloc is section relative for an object
+     file, and absolute for an executable file or shared library.
+     The address of a BFD reloc is always section relative.  */
+  addr_offset = 0;
+  if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0)
+    addr_offset = sec->vma;
+
+  /* Discover if there are any secondary reloc sections
+     associated with SEC.  */
+  for (relsec = abfd->sections; relsec != NULL; relsec = relsec->next)
+    {
+      const struct bfd_elf_section_data * const esd = elf_section_data (relsec);
+      Elf_Internal_Shdr * const hdr = (Elf_Internal_Shdr *) & esd->this_hdr;
+
+      if (hdr->sh_type == SHT_RELA
+	  && hdr->sh_info == (unsigned) elf_section_data (sec)->this_idx)
+	{
+	  asymbol *    last_sym;
+	  int          last_sym_idx;
+	  unsigned int reloc_count;
+	  unsigned int idx;
+	  arelent *    src_irel;
+	  bfd_byte *   dst_rela;
+
+	  if (hdr->contents != NULL)
+	    {
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB(%pA): error: secondary reloc section processed twice"),
+		 abfd, relsec);
+	      bfd_set_error (bfd_error_bad_value);
+	      result = FALSE;
+	      continue;
+	    }
+
+	  if (hdr->sh_entsize == 0)
+	    {
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB(%pA): error: secondary reloc section has zero sized entries"),
+		 abfd, relsec);
+	      bfd_set_error (bfd_error_bad_value);
+	      result = FALSE;
+	      continue;
+	    }
+
+	  reloc_count = hdr->sh_size / hdr->sh_entsize;
+	  if (reloc_count <= 0)
+	    {
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB(%pA): error: secondary reloc section is empty!"),
+		 abfd, relsec);
+	      bfd_set_error (bfd_error_bad_value);
+	      result = FALSE;
+	      continue;
+	    }
+
+	  hdr->contents = bfd_alloc (abfd, hdr->sh_size);
+	  if (hdr->contents == NULL)
+	    continue;
+
+#if DEBUG_SECONDARY_RELOCS
+	  fprintf (stderr, "write %u secondary relocs for %s from %s\n",
+		   reloc_count, sec->name, relsec->name);
+#endif
+	  last_sym = NULL;
+	  last_sym_idx = 0;
+	  dst_rela = hdr->contents;
+	  src_irel = (arelent *) esd->sec_info;
+	  if (src_irel == NULL)
+	    {
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB(%pA): error: internal relocs missing for secondary reloc section"),
+		 abfd, relsec);
+	      bfd_set_error (bfd_error_bad_value);
+	      result = FALSE;
+	      continue;
+	    }
+
+	  for (idx = 0; idx < reloc_count; idx++, dst_rela += hdr->sh_entsize)
+	    {
+	      Elf_Internal_Rela src_rela;
+	      arelent *ptr;
+	      asymbol *sym;
+	      int n;
+
+	      ptr = src_irel + idx;
+	      if (ptr == NULL)
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB(%pA): error: reloc table entry %u is empty"),
+		     abfd, relsec, idx);
+		  bfd_set_error (bfd_error_bad_value);
+		  result = FALSE;
+		  break;
+		}
+
+	      if (ptr->sym_ptr_ptr == NULL)
+		{
+		  /* FIXME: Is this an error ? */
+		  n = 0;
+		}
+	      else
+		{
+		  sym = *ptr->sym_ptr_ptr;
+
+		  if (sym == last_sym)
+		    n = last_sym_idx;
+		  else
+		    {
+		      n = _bfd_elf_symbol_from_bfd_symbol (abfd, & sym);
+		      if (n < 0)
+			{
+			  _bfd_error_handler
+			    /* xgettext:c-format */
+			    (_("%pB(%pA): error: secondary reloc %u references a missing symbol"),
+			     abfd, relsec, idx);
+			  bfd_set_error (bfd_error_bad_value);
+			  result = FALSE;
+			  n = 0;
+			}
+
+		      last_sym = sym;
+		      last_sym_idx = n;
+		    }
+
+		  if (sym->the_bfd != NULL
+		      && sym->the_bfd->xvec != abfd->xvec
+		      && ! _bfd_elf_validate_reloc (abfd, ptr))
+		    {
+		      _bfd_error_handler
+			/* xgettext:c-format */
+			(_("%pB(%pA): error: secondary reloc %u references a deleted symbol"),
+			 abfd, relsec, idx);
+		      bfd_set_error (bfd_error_bad_value);
+		      result = FALSE;
+		      n = 0;
+		    }
+		}
+
+	      src_rela.r_offset = ptr->address + addr_offset;
+	      if (ptr->howto == NULL)
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB(%pA): error: secondary reloc %u is of an unknown type"),
+		     abfd, relsec, idx);
+		  bfd_set_error (bfd_error_bad_value);
+		  result = FALSE;
+		  src_rela.r_info = r_info (0, 0);
+		}
+	      else
+		src_rela.r_info = r_info (n, ptr->howto->type);
+	      src_rela.r_addend = ptr->addend;
+	      ebd->s->swap_reloca_out (abfd, &src_rela, dst_rela);
+	    }
+	}
+    }
+
+  return result;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfcode.h ./bfd/elfcode.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfcode.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfcode.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF executable support for BFD.
-   Copyright (C) 1991-2019 Free Software Foundation, Inc.
+   Copyright (C) 1991-2020 Free Software Foundation, Inc.
 
    Written by Fred Fish @ Cygnus Support, from information published
    in "UNIX System V Release 4, Programmers Guide: ANSI C and
@@ -317,11 +317,19 @@ elf_swap_shdr_in (bfd *abfd,
   /* PR 23657.  Check for invalid section size, in sections with contents.
      Note - we do not set an error value here because the contents
      of this particular section might not be needed by the consumer.  */
-  if (dst->sh_type != SHT_NOBITS
-      && dst->sh_size > bfd_get_file_size (abfd))
-    _bfd_error_handler
-      (_("warning: %pB has a corrupt section with a size (%" BFD_VMA_FMT "x) larger than the file size"),
-       abfd, dst->sh_size);
+  if (dst->sh_type != SHT_NOBITS)
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+
+      if (filesize != 0
+	  && ((ufile_ptr) dst->sh_offset > filesize
+	      || dst->sh_size > filesize - dst->sh_offset))
+	{
+	  abfd->read_only = 1;
+	  _bfd_error_handler (_("warning: %pB has a section "
+				"extending past end of file"), abfd);
+	}
+    }
   dst->sh_link = H_GET_32 (abfd, src->sh_link);
   dst->sh_info = H_GET_32 (abfd, src->sh_info);
   dst->sh_addralign = H_GET_WORD (abfd, src->sh_addralign);
@@ -492,7 +500,7 @@ elf_file_p (Elf_External_Ehdr *x_ehdrp)
    any side effects in ABFD, or any data it points to (like tdata), if the
    file does not match the target vector.  */
 
-const bfd_target *
+bfd_cleanup
 elf_object_p (bfd *abfd)
 {
   Elf_External_Ehdr x_ehdr;	/* Elf file header, external form */
@@ -563,7 +571,7 @@ elf_object_p (bfd *abfd)
 
   /* If this is a relocatable file and there is no section header
      table, then we're hosed.  */
-  if (i_ehdrp->e_shoff == 0 && i_ehdrp->e_type == ET_REL)
+  if (i_ehdrp->e_shoff < sizeof (x_ehdr) && i_ehdrp->e_type == ET_REL)
     goto got_wrong_format_error;
 
   /* As a simple sanity check, verify that what BFD thinks is the
@@ -573,7 +581,7 @@ elf_object_p (bfd *abfd)
     goto got_wrong_format_error;
 
   /* Further sanity check.  */
-  if (i_ehdrp->e_shoff == 0 && i_ehdrp->e_shnum != 0)
+  if (i_ehdrp->e_shoff < sizeof (x_ehdr) && i_ehdrp->e_shnum != 0)
     goto got_wrong_format_error;
 
   ebd = get_elf_backend_data (abfd);
@@ -610,7 +618,7 @@ elf_object_p (bfd *abfd)
       && ebd->elf_osabi != ELFOSABI_NONE)
     goto got_wrong_format_error;
 
-  if (i_ehdrp->e_shoff != 0)
+  if (i_ehdrp->e_shoff >= sizeof (x_ehdr))
     {
       file_ptr where = (file_ptr) i_ehdrp->e_shoff;
 
@@ -682,19 +690,18 @@ elf_object_p (bfd *abfd)
     {
       Elf_Internal_Shdr *shdrp;
       unsigned int num_sec;
+      size_t amt;
 
-#ifndef BFD64
-      if (i_ehdrp->e_shnum > ((bfd_size_type) -1) / sizeof (*i_shdrp))
+      if (_bfd_mul_overflow (i_ehdrp->e_shnum, sizeof (*i_shdrp), &amt))
 	goto got_wrong_format_error;
-#endif
-      i_shdrp = (Elf_Internal_Shdr *) bfd_alloc2 (abfd, i_ehdrp->e_shnum,
-						  sizeof (*i_shdrp));
+      i_shdrp = (Elf_Internal_Shdr *) bfd_alloc (abfd, amt);
       if (!i_shdrp)
 	goto got_no_match;
       num_sec = i_ehdrp->e_shnum;
       elf_numsections (abfd) = num_sec;
-      elf_elfsections (abfd)
-	= (Elf_Internal_Shdr **) bfd_alloc2 (abfd, num_sec, sizeof (i_shdrp));
+      if (_bfd_mul_overflow (num_sec, sizeof (i_shdrp), &amt))
+	goto got_wrong_format_error;
+      elf_elfsections (abfd) = (Elf_Internal_Shdr **) bfd_alloc (abfd, amt);
       if (!elf_elfsections (abfd))
 	goto got_no_match;
 
@@ -760,6 +767,7 @@ elf_object_p (bfd *abfd)
 	     So we are kind, and reset the string index value to 0
 	     so that at least some processing can be done.  */
 	  i_ehdrp->e_shstrndx = SHN_UNDEF;
+	  abfd->read_only = 1;
 	  _bfd_error_handler
 	    (_("warning: %pB has a corrupt string table index - ignoring"),
 	     abfd);
@@ -775,19 +783,19 @@ elf_object_p (bfd *abfd)
     {
       Elf_Internal_Phdr *i_phdr;
       unsigned int i;
+      ufile_ptr filesize;
+      size_t amt;
 
-#ifndef BFD64
-      if (i_ehdrp->e_phnum > ((bfd_size_type) -1) / sizeof (*i_phdr))
-	goto got_wrong_format_error;
-#endif
       /* Check for a corrupt input file with an impossibly large number
 	 of program headers.  */
-      if (bfd_get_file_size (abfd) > 0
-	  && i_ehdrp->e_phnum > bfd_get_file_size (abfd))
-	goto got_no_match;
+      filesize = bfd_get_file_size (abfd);
+      if (filesize != 0
+	  && i_ehdrp->e_phnum > filesize / sizeof (Elf_External_Phdr))
+	goto got_wrong_format_error;
+      if (_bfd_mul_overflow (i_ehdrp->e_phnum, sizeof (*i_phdr), &amt))
+	goto got_wrong_format_error;
       elf_tdata (abfd)->phdr
-	= (Elf_Internal_Phdr *) bfd_alloc2 (abfd, i_ehdrp->e_phnum,
-					    sizeof (*i_phdr));
+	= (Elf_Internal_Phdr *) bfd_alloc (abfd, amt);
       if (elf_tdata (abfd)->phdr == NULL)
 	goto got_no_match;
       if (bfd_seek (abfd, (file_ptr) i_ehdrp->e_phoff, SEEK_SET) != 0)
@@ -800,10 +808,18 @@ elf_object_p (bfd *abfd)
 	  if (bfd_bread (&x_phdr, sizeof x_phdr, abfd) != sizeof x_phdr)
 	    goto got_no_match;
 	  elf_swap_phdr_in (abfd, &x_phdr, i_phdr);
+	  /* Too much code in BFD relies on alignment being a power of
+	     two, as required by the ELF spec.  */
+	  if (i_phdr->p_align != (i_phdr->p_align & -i_phdr->p_align))
+	    {
+	      abfd->read_only = 1;
+	      _bfd_error_handler (_("warning: %pB has a program header "
+				    "with invalid alignment"), abfd);
+	    }
 	}
     }
 
-  if (i_ehdrp->e_shstrndx != 0 && i_ehdrp->e_shoff != 0)
+  if (i_ehdrp->e_shstrndx != 0 && i_ehdrp->e_shoff >= sizeof (x_ehdr))
     {
       unsigned int num_sec;
 
@@ -849,7 +865,7 @@ elf_object_p (bfd *abfd)
 	    s->flags |= SEC_DEBUGGING;
 	}
     }
-  return target;
+  return _bfd_no_cleanup;
 
  got_wrong_format_error:
   bfd_set_error (bfd_error_wrong_format);
@@ -865,6 +881,7 @@ elf_object_p (bfd *abfd)
 void
 elf_write_relocs (bfd *abfd, asection *sec, void *data)
 {
+  const struct elf_backend_data * const bed = get_elf_backend_data (abfd);
   bfd_boolean *failedp = (bfd_boolean *) data;
   Elf_Internal_Shdr *rela_hdr;
   bfd_vma addr_offset;
@@ -874,6 +891,7 @@ elf_write_relocs (bfd *abfd, asection *s
   unsigned int idx;
   asymbol *last_sym;
   int last_sym_idx;
+  size_t amt;
 
   /* If we have already failed, don't do anything.  */
   if (*failedp)
@@ -900,10 +918,10 @@ elf_write_relocs (bfd *abfd, asection *s
     rela_hdr = elf_section_data (sec)->rel.hdr;
 
   rela_hdr->sh_size = rela_hdr->sh_entsize * sec->reloc_count;
-  rela_hdr->contents = (unsigned char *) bfd_alloc2 (abfd, sec->reloc_count,
-						     rela_hdr->sh_entsize);
-  if (rela_hdr->contents == NULL)
+  if (_bfd_mul_overflow (sec->reloc_count, rela_hdr->sh_entsize, &amt)
+      || (rela_hdr->contents = bfd_alloc (abfd, amt)) == NULL)
     {
+      bfd_set_error (bfd_error_no_memory);
       *failedp = TRUE;
       return;
     }
@@ -980,6 +998,13 @@ elf_write_relocs (bfd *abfd, asection *s
       src_rela.r_addend = ptr->addend;
       (*swap_out) (abfd, &src_rela, dst_rela);
     }
+
+  if (elf_section_data (sec)->has_secondary_relocs
+      && !bed->write_secondary_relocs (abfd, sec))
+    {
+      *failedp = TRUE;
+      return;
+    }
 }
 
 /* Write out the program headers.  */
@@ -1012,7 +1037,7 @@ elf_write_shdrs_and_ehdr (bfd *abfd)
   Elf_External_Shdr *x_shdrp;	/* Section header table, external form */
   Elf_Internal_Shdr **i_shdrp;	/* Section header table, internal form */
   unsigned int count;
-  bfd_size_type amt;
+  size_t amt;
 
   i_ehdrp = elf_elfheader (abfd);
   i_shdrp = elf_elfsections (abfd);
@@ -1038,8 +1063,12 @@ elf_write_shdrs_and_ehdr (bfd *abfd)
     i_shdrp[0]->sh_link = i_ehdrp->e_shstrndx;
 
   /* at this point we've concocted all the ELF sections...  */
-  x_shdrp = (Elf_External_Shdr *) bfd_alloc2 (abfd, i_ehdrp->e_shnum,
-					      sizeof (*x_shdrp));
+  if (_bfd_mul_overflow (i_ehdrp->e_shnum, sizeof (*x_shdrp), &amt))
+    {
+      bfd_set_error (bfd_error_no_memory);
+      return FALSE;
+    }
+  x_shdrp = (Elf_External_Shdr *) bfd_alloc (abfd, amt);
   if (!x_shdrp)
     return FALSE;
 
@@ -1128,8 +1157,7 @@ elf_checksum_contents (bfd *abfd,
       if (contents != NULL)
 	{
 	  (*process) (contents, i_shdr.sh_size, arg);
-	  if (free_contents != NULL)
-	    free (free_contents);
+	  free (free_contents);
 	}
     }
 
@@ -1150,6 +1178,7 @@ elf_slurp_symbol_table (bfd *abfd, asymb
   Elf_External_Versym *xver;
   Elf_External_Versym *xverbuf = NULL;
   const struct elf_backend_data *ebd;
+  size_t amt;
 
   /* Read each raw ELF symbol, converting from external ELF form to
      internal ELF form, and then using the information to create a
@@ -1194,8 +1223,12 @@ elf_slurp_symbol_table (bfd *abfd, asymb
       if (isymbuf == NULL)
 	return -1;
 
-      symbase = (elf_symbol_type *) bfd_zalloc2 (abfd, symcount,
-						 sizeof (elf_symbol_type));
+      if (_bfd_mul_overflow (symcount, sizeof (elf_symbol_type), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  goto error_return;
+	}
+      symbase = (elf_symbol_type *) bfd_zalloc (abfd, amt);
       if (symbase == (elf_symbol_type *) NULL)
 	goto error_return;
 
@@ -1220,13 +1253,10 @@ elf_slurp_symbol_table (bfd *abfd, asymb
 	{
 	  if (bfd_seek (abfd, verhdr->sh_offset, SEEK_SET) != 0)
 	    goto error_return;
-
-	  xverbuf = (Elf_External_Versym *) bfd_malloc (verhdr->sh_size);
+	  xverbuf = (Elf_External_Versym *)
+	    _bfd_malloc_and_read (abfd, verhdr->sh_size, verhdr->sh_size);
 	  if (xverbuf == NULL && verhdr->sh_size != 0)
 	    goto error_return;
-
-	  if (bfd_bread (xverbuf, verhdr->sh_size, abfd) != verhdr->sh_size)
-	    goto error_return;
 	}
 
       /* Skip first symbol, which is a null dummy.  */
@@ -1281,7 +1311,10 @@ elf_slurp_symbol_table (bfd *abfd, asymb
 		{
 		  /* This symbol is in a section for which we did not
 		     create a BFD section.  Just use bfd_abs_section,
-		     although it is wrong.  FIXME.  */
+		     although it is wrong.  FIXME.  Note - there is
+		     code in elf.c:swap_out_syms that calls
+		     symbol_section_index() in the elf backend for
+		     cases like this.  */
 		  sym->symbol.section = bfd_abs_section_ptr;
 		}
 	    }
@@ -1381,16 +1414,14 @@ elf_slurp_symbol_table (bfd *abfd, asymb
       *symptrs = 0;		/* Final null pointer */
     }
 
-  if (xverbuf != NULL)
-    free (xverbuf);
-  if (isymbuf != NULL && hdr->contents != (unsigned char *) isymbuf)
+  free (xverbuf);
+  if (hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
   return symcount;
 
-error_return:
-  if (xverbuf != NULL)
-    free (xverbuf);
-  if (isymbuf != NULL && hdr->contents != (unsigned char *) isymbuf)
+ error_return:
+  free (xverbuf);
+  if (hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
   return -1;
 }
@@ -1415,14 +1446,11 @@ elf_slurp_reloc_table_from_section (bfd
   int entsize;
   unsigned int symcount;
 
-  allocated = bfd_malloc (rel_hdr->sh_size);
+  if (bfd_seek (abfd, rel_hdr->sh_offset, SEEK_SET) != 0)
+    return FALSE;
+  allocated = _bfd_malloc_and_read (abfd, rel_hdr->sh_size, rel_hdr->sh_size);
   if (allocated == NULL)
-    goto error_return;
-
-  if (bfd_seek (abfd, rel_hdr->sh_offset, SEEK_SET) != 0
-      || (bfd_bread (allocated, rel_hdr->sh_size, abfd)
-	  != rel_hdr->sh_size))
-    goto error_return;
+    return FALSE;
 
   native_relocs = (bfd_byte *) allocated;
 
@@ -1491,13 +1519,11 @@ elf_slurp_reloc_table_from_section (bfd
 	goto error_return;
     }
 
-  if (allocated != NULL)
-    free (allocated);
+  free (allocated);
   return TRUE;
 
  error_return:
-  if (allocated != NULL)
-    free (allocated);
+  free (allocated);
   return FALSE;
 }
 
@@ -1509,12 +1535,14 @@ elf_slurp_reloc_table (bfd *abfd,
 		       asymbol **symbols,
 		       bfd_boolean dynamic)
 {
+  const struct elf_backend_data * const bed = get_elf_backend_data (abfd);
   struct bfd_elf_section_data * const d = elf_section_data (asect);
   Elf_Internal_Shdr *rel_hdr;
   Elf_Internal_Shdr *rel_hdr2;
   bfd_size_type reloc_count;
   bfd_size_type reloc_count2;
   arelent *relents;
+  size_t amt;
 
   if (asect->relocation != NULL)
     return TRUE;
@@ -1552,8 +1580,12 @@ elf_slurp_reloc_table (bfd *abfd,
       reloc_count2 = 0;
     }
 
-  relents = (arelent *) bfd_alloc2 (abfd, reloc_count + reloc_count2,
-				    sizeof (arelent));
+  if (_bfd_mul_overflow (reloc_count + reloc_count2, sizeof (arelent), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  relents = (arelent *) bfd_alloc (abfd, amt);
   if (relents == NULL)
     return FALSE;
 
@@ -1571,6 +1603,9 @@ elf_slurp_reloc_table (bfd *abfd,
 					      symbols, dynamic))
     return FALSE;
 
+  if (!bed->slurp_secondary_relocs (abfd, asect, symbols))
+    return FALSE;
+
   asect->relocation = relents;
   return TRUE;
 }
@@ -1635,10 +1670,11 @@ elf_debug_file (Elf_Internal_Ehdr *ehdrp
 bfd *
 NAME(_bfd_elf,bfd_from_remote_memory)
   (bfd *templ,
-   bfd_vma ehdr_vma,
-   bfd_size_type size,
-   bfd_vma *loadbasep,
+   bfd_vma ehdr_vma    /* Bytes.  */,
+   bfd_size_type size  /* Octets.  */,
+   bfd_vma *loadbasep  /* Bytes.  */,
    int (*target_read_memory) (bfd_vma, bfd_byte *, bfd_size_type))
+                          /* (Bytes  ,           , octets       ).  */
 {
   Elf_External_Ehdr x_ehdr;	/* Elf file header, external form */
   Elf_Internal_Ehdr i_ehdr;	/* Elf file header, internal form */
@@ -1651,8 +1687,9 @@ NAME(_bfd_elf,bfd_from_remote_memory)
   unsigned int i;
   bfd_vma high_offset;
   bfd_vma shdr_end;
-  bfd_vma loadbase;
-  char *filename;
+  bfd_vma loadbase;  /* Bytes.  */
+  size_t amt;
+  unsigned int opb = bfd_octets_per_byte (templ, NULL);
 
   /* Read in the ELF header in external format.  */
   err = target_read_memory (ehdr_vma, (bfd_byte *) &x_ehdr, sizeof x_ehdr);
@@ -1709,9 +1746,13 @@ NAME(_bfd_elf,bfd_from_remote_memory)
       return NULL;
     }
 
-  x_phdrs
-    = (Elf_External_Phdr *) bfd_malloc2 (i_ehdr.e_phnum,
-					 sizeof (*x_phdrs) + sizeof (*i_phdrs));
+  if (_bfd_mul_overflow (i_ehdr.e_phnum,
+			 sizeof (*x_phdrs) + sizeof (*i_phdrs), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return NULL;
+    }
+  x_phdrs = (Elf_External_Phdr *) bfd_malloc (amt);
   if (x_phdrs == NULL)
     return NULL;
   err = target_read_memory (ehdr_vma + i_ehdr.e_phoff, (bfd_byte *) x_phdrs,
@@ -1746,17 +1787,17 @@ NAME(_bfd_elf,bfd_from_remote_memory)
 	     header sits, then we can figure out the loadbase.  */
 	  if (first_phdr == NULL)
 	    {
-	      bfd_vma p_offset = i_phdrs[i].p_offset;
-	      bfd_vma p_vaddr = i_phdrs[i].p_vaddr;
+	      bfd_vma p_offset = i_phdrs[i].p_offset;  /* Octets.  */
+	      bfd_vma p_vaddr = i_phdrs[i].p_vaddr;    /* Octets.  */
 
 	      if (i_phdrs[i].p_align > 1)
 		{
-		  p_offset &= -i_phdrs[i].p_align;
-		  p_vaddr &= -i_phdrs[i].p_align;
+		  p_offset &= -(i_phdrs[i].p_align * opb);
+		  p_vaddr &= -(i_phdrs[i].p_align * opb);
 		}
 	      if (p_offset == 0)
 		{
-		  loadbase = ehdr_vma - p_vaddr;
+		  loadbase = ehdr_vma - p_vaddr / opb;
 		  first_phdr = &i_phdrs[i];
 		}
 	    }
@@ -1812,9 +1853,9 @@ NAME(_bfd_elf,bfd_from_remote_memory)
   for (i = 0; i < i_ehdr.e_phnum; ++i)
     if (i_phdrs[i].p_type == PT_LOAD)
       {
-	bfd_vma start = i_phdrs[i].p_offset;
-	bfd_vma end = start + i_phdrs[i].p_filesz;
-	bfd_vma vaddr = i_phdrs[i].p_vaddr;
+	bfd_vma start = i_phdrs[i].p_offset;         /* Octets.  */
+	bfd_vma end = start + i_phdrs[i].p_filesz;   /* Octets.  */
+	bfd_vma vaddr = i_phdrs[i].p_vaddr;          /* Octets.  */
 
 	/* Extend the beginning of the first pt_load to cover file
 	   header and program headers, if we proved earlier that its
@@ -1827,7 +1868,7 @@ NAME(_bfd_elf,bfd_from_remote_memory)
 	/* Extend the end of the last pt_load to cover section headers.  */
 	if (last_phdr == &i_phdrs[i])
 	  end = high_offset;
-	err = target_read_memory (loadbase + vaddr,
+	err = target_read_memory (loadbase + vaddr / opb,
 				  contents + start, end - start);
 	if (err)
 	  {
@@ -1860,22 +1901,14 @@ NAME(_bfd_elf,bfd_from_remote_memory)
       free (contents);
       return NULL;
     }
-  filename = bfd_strdup ("<in-memory>");
-  if (filename == NULL)
-    {
-      free (bim);
-      free (contents);
-      return NULL;
-    }
   nbfd = _bfd_new_bfd ();
-  if (nbfd == NULL)
+  if (nbfd == NULL
+      || !bfd_set_filename (nbfd, "<in-memory>"))
     {
-      free (filename);
       free (bim);
       free (contents);
       return NULL;
     }
-  nbfd->filename = filename;
   nbfd->xvec = templ->xvec;
   bim->size = high_offset;
   bim->buffer = contents;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfcore.h ./bfd/elfcore.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfcore.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfcore.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF core file support for BFD.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -61,9 +61,9 @@ elf_core_file_matches_executable_p (bfd
   corename = elf_tdata (core_bfd)->core->program;
   if (corename != NULL)
     {
-      const char* execname = strrchr (exec_bfd->filename, '/');
+      const char* execname = strrchr (bfd_get_filename (exec_bfd), '/');
 
-      execname = execname ? execname + 1 : exec_bfd->filename;
+      execname = execname ? execname + 1 : bfd_get_filename (exec_bfd);
 
       if (strcmp (execname, corename) != 0)
 	return FALSE;
@@ -83,7 +83,7 @@ elf_core_file_matches_executable_p (bfd
     that allow standard bfd access to the general registers (.reg) and the
     floating point registers (.reg2).  */
 
-const bfd_target *
+bfd_cleanup
 elf_core_file_p (bfd *abfd)
 {
   Elf_External_Ehdr x_ehdr;	/* Elf file header, external form.  */
@@ -314,11 +314,11 @@ elf_core_file_p (bfd *abfd)
 
   /* Save the entry point from the ELF header.  */
   abfd->start_address = i_ehdrp->e_entry;
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
-wrong:
+ wrong:
   bfd_set_error (bfd_error_wrong_format);
-fail:
+ fail:
   return NULL;
 }
 
@@ -335,6 +335,7 @@ NAME(_bfd_elf, core_find_build_id)
   Elf_Internal_Ehdr i_ehdr;	/* Elf file header, internal form.   */
   Elf_Internal_Phdr *i_phdr;
   unsigned int i;
+  size_t amt;
 
   /* Seek to the position of the segment at OFFSET.  */
   if (bfd_seek (abfd, offset, SEEK_SET) != 0)
@@ -384,8 +385,12 @@ NAME(_bfd_elf, core_find_build_id)
     goto fail;
 
   /* Read in program headers.  */
-  i_phdr = (Elf_Internal_Phdr *) bfd_alloc2 (abfd, i_ehdr.e_phnum,
-					     sizeof (*i_phdr));
+  if (_bfd_mul_overflow (i_ehdr.e_phnum, sizeof (*i_phdr), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      goto fail;
+    }
+  i_phdr = (Elf_Internal_Phdr *) bfd_alloc (abfd, amt);
   if (i_phdr == NULL)
     goto fail;
 
@@ -414,8 +419,8 @@ NAME(_bfd_elf, core_find_build_id)
      build-id was found.  */
   goto fail;
 
-wrong:
+ wrong:
   bfd_set_error (bfd_error_wrong_format);
-fail:
+ fail:
   return FALSE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-eh-frame.c ./bfd/elf-eh-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-eh-frame.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-eh-frame.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* .eh_frame section optimization.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
    Written by Jakub Jelinek <jakub@redhat.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -1049,13 +1049,10 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
     (_("error in %pB(%pA); no .eh_frame_hdr table will be created"),
      abfd, sec);
   hdr_info->u.dwarf.table = FALSE;
-  if (sec_info)
-    free (sec_info);
+  free (sec_info);
  success:
-  if (ehbuf)
-    free (ehbuf);
-  if (local_cies)
-    free (local_cies);
+  free (ehbuf);
+  free (local_cies);
 #undef REQUIRE
 }
 
@@ -1558,11 +1555,8 @@ _bfd_elf_discard_section_eh_frame
 	  }
       }
 
-  if (sec_info->cies)
-    {
-      free (sec_info->cies);
-      sec_info->cies = NULL;
-    }
+  free (sec_info->cies);
+  sec_info->cies = NULL;
 
   /* It may be that some .eh_frame input section has greater alignment
      than other .eh_frame sections.  In that case we run the risk of
@@ -2149,6 +2143,7 @@ _bfd_elf_write_section_eh_frame (bfd *ab
 			/* Fall thru */
 		      case bfd_arch_frv:
 		      case bfd_arch_i386:
+		      case bfd_arch_nios2:
 			BFD_ASSERT (htab->hgot != NULL
 				    && ((htab->hgot->root.type
 					 == bfd_link_hash_defined)
@@ -2510,8 +2505,7 @@ write_dwarf_eh_frame_hdr (bfd *abfd, str
     retval = FALSE;
   free (contents);
 
-  if (hdr_info->u.dwarf.array != NULL)
-    free (hdr_info->u.dwarf.array);
+  free (hdr_info->u.dwarf.array);
   return retval;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-hppa.h ./bfd/elf-hppa.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-hppa.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-hppa.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Common code for PA ELF implementations.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -754,7 +754,7 @@ _bfd_elf_hppa_gen_reloc_type (bfd *abfd,
 {
   elf_hppa_reloc_type *finaltype;
   elf_hppa_reloc_type **final_types;
-  bfd_size_type amt = sizeof (elf_hppa_reloc_type *) * 2;
+  size_t amt = sizeof (elf_hppa_reloc_type *) * 2;
 
   /* Allocate slots for the BFD relocation.  */
   final_types = bfd_alloc (abfd, amt);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-ifunc.c ./bfd/elf-ifunc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-ifunc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-ifunc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF STT_GNU_IFUNC support.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -107,7 +107,6 @@ bfd_boolean
 _bfd_elf_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
 				    struct elf_link_hash_entry *h,
 				    struct elf_dyn_relocs **head,
-				    bfd_boolean *readonly_dynrelocs_against_ifunc_p,
 				    unsigned int plt_entry_size,
 				    unsigned int plt_header_size,
 				    unsigned int got_entry_size,
@@ -118,7 +117,6 @@ _bfd_elf_allocate_ifunc_dyn_relocs (stru
   unsigned int sizeof_reloc;
   const struct elf_backend_data *bed;
   struct elf_link_hash_table *htab;
-  bfd_boolean readonly_dynrelocs_against_ifunc;
   /* If AVOID_PLT is TRUE, don't use PLT if possible.  */
   bfd_boolean use_plt = !avoid_plt || h->plt.refcount > 0;
   bfd_boolean need_dynreloc = !use_plt || bfd_link_pic (info);
@@ -201,7 +199,7 @@ _bfd_elf_allocate_ifunc_dyn_relocs (stru
       return TRUE;
     }
 
-keep:
+ keep:
   bed = get_elf_backend_data (info->output_bfd);
   if (bed->rela_plts_and_copies_p)
     sizeof_reloc = bed->s->sizeof_rela;
@@ -255,8 +253,6 @@ keep:
   if (!need_dynreloc || !h->non_got_ref)
     *head = NULL;
 
-  readonly_dynrelocs_against_ifunc = FALSE;
-
   /* Finally, allocate space.  */
   p = *head;
   if (p != NULL)
@@ -264,17 +260,13 @@ keep:
       bfd_size_type count = 0;
       do
 	{
-	  if (!readonly_dynrelocs_against_ifunc)
-	    {
-	      asection *s = p->sec->output_section;
-	      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-		readonly_dynrelocs_against_ifunc = TRUE;
-	    }
 	  count += p->count;
 	  p = p->next;
 	}
       while (p != NULL);
 
+      htab->ifunc_resolvers = count != 0;
+
       /* Dynamic relocations are stored in
 	 1. .rel[a].ifunc section in PIC object.
 	 2. .rel[a].got section in dynamic executable.
@@ -290,9 +282,6 @@ keep:
 	}
     }
 
-  if (readonly_dynrelocs_against_ifunc_p)
-    *readonly_dynrelocs_against_ifunc_p = readonly_dynrelocs_against_ifunc;
-
   /* For STT_GNU_IFUNC symbol, .got.plt has the real function address
      and .got has the PLT entry adddress.  We will load the GOT entry
      with the PLT entry in finish_dynamic_symbol if it is used.  For
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elflink.c ./bfd/elflink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elflink.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elflink.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF linking support for BFD.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,6 +32,13 @@
 #include "plugin.h"
 #endif
 
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+#ifndef CHAR_BIT
+#define CHAR_BIT 8
+#endif
+
 /* This struct is used to pass information to routines called via
    elf_link_hash_traverse which must return failure.  */
 
@@ -505,6 +512,16 @@ bfd_elf_link_record_dynamic_symbol (stru
       const char *name;
       size_t indx;
 
+      if (h->root.type == bfd_link_hash_defined
+	  || h->root.type == bfd_link_hash_defweak)
+	{
+	  /* An IR symbol should not be made dynamic.  */
+	  if (h->root.u.def.section != NULL
+	      && h->root.u.def.section->owner != NULL
+	      && (h->root.u.def.section->owner->flags & BFD_PLUGIN) != 0)
+	    return TRUE;
+	}
+
       /* XXX: The ABI draft says the linker must turn hidden and
 	 internal symbols into STB_LOCAL symbols when producing the
 	 DSO. However, if ld.so honors st_other in the dynamic table,
@@ -747,7 +764,7 @@ bfd_elf_link_record_local_dynamic_symbol
 					  bfd *input_bfd,
 					  long input_indx)
 {
-  bfd_size_type amt;
+  size_t amt;
   struct elf_link_local_dynamic_entry *entry;
   struct elf_link_hash_table *eht;
   struct elf_strtab_hash *dynstr;
@@ -1041,7 +1058,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 		       bfd_boolean *pold_weak,
 		       unsigned int *pold_alignment,
 		       bfd_boolean *skip,
-		       bfd_boolean *override,
+		       bfd **override,
 		       bfd_boolean *type_change_ok,
 		       bfd_boolean *size_change_ok,
 		       bfd_boolean *matched)
@@ -1059,7 +1076,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
   bfd_boolean default_sym = *matched;
 
   *skip = FALSE;
-  *override = FALSE;
+  *override = NULL;
 
   sec = *psec;
   bind = ELF_ST_BIND (sym->st_info);
@@ -1635,7 +1652,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 	  || (h->root.type == bfd_link_hash_common
 	      && (newweak || newfunc))))
     {
-      *override = TRUE;
+      *override = abfd;
       newdef = FALSE;
       newdyncommon = FALSE;
 
@@ -1661,7 +1678,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
   if (newdyncommon
       && h->root.type == bfd_link_hash_common)
     {
-      *override = TRUE;
+      *override = oldbfd;
       newdef = FALSE;
       newdyncommon = FALSE;
       *pvalue = sym->st_size;
@@ -1837,7 +1854,7 @@ _bfd_elf_add_default_symbol (bfd *abfd,
   const struct elf_backend_data *bed;
   bfd_boolean collect;
   bfd_boolean dynamic;
-  bfd_boolean override;
+  bfd *override;
   char *p;
   size_t len, shortlen;
   asection *tmp_sec;
@@ -2039,7 +2056,7 @@ _bfd_elf_add_default_symbol (bfd *abfd,
   /* We also need to define an indirection from the nondefault version
      of the symbol.  */
 
-nondefault:
+ nondefault:
   len = strlen (name);
   shortname = (char *) bfd_hash_allocate (&info->hash->table, len);
   if (shortname == NULL)
@@ -2155,7 +2172,7 @@ _bfd_elf_link_find_version_dependencies
   struct elf_find_verdep_info *rinfo = (struct elf_find_verdep_info *) data;
   Elf_Internal_Verneed *t;
   Elf_Internal_Vernaux *a;
-  bfd_size_type amt;
+  size_t amt;
 
   /* We only care about symbols defined in shared objects with version
      information.  */
@@ -2643,8 +2660,7 @@ _bfd_elf_link_read_relocs (bfd *abfd,
   if (keep_memory)
     esdo->relocs = internal_relocs;
 
-  if (alloc1 != NULL)
-    free (alloc1);
+  free (alloc1);
 
   /* Don't free alloc2, since if it was allocated we are passing it
      back (under the name of internal_relocs).  */
@@ -2652,8 +2668,7 @@ _bfd_elf_link_read_relocs (bfd *abfd,
   return internal_relocs;
 
  error_return:
-  if (alloc1 != NULL)
-    free (alloc1);
+  free (alloc1);
   if (alloc2 != NULL)
     {
       if (keep_memory)
@@ -3323,8 +3338,8 @@ _bfd_elf_tls_setup (bfd *obfd, struct bf
 
   elf_hash_table (info)->tls_sec = tls;
 
-  /* Ensure the alignment of the first section is the largest alignment,
-     so that the tls segment starts aligned.  */
+  /* Ensure the alignment of the first section (usually .tdata) is the largest
+     alignment, so that the tls segment starts aligned.  */
   if (tls != NULL)
     tls->alignment_power = align;
 
@@ -3501,23 +3516,119 @@ _bfd_elf_add_dynamic_entry (struct bfd_l
   return TRUE;
 }
 
-/* Add a DT_NEEDED entry for this dynamic object if DO_IT is true,
-   otherwise just check whether one already exists.  Returns -1 on error,
+/* Strip zero-sized dynamic sections.  */
+
+bfd_boolean
+_bfd_elf_strip_zero_sized_dynamic_sections (struct bfd_link_info *info)
+{
+  struct elf_link_hash_table *hash_table;
+  const struct elf_backend_data *bed;
+  asection *s, *sdynamic, **pp;
+  asection *rela_dyn, *rel_dyn;
+  Elf_Internal_Dyn dyn;
+  bfd_byte *extdyn, *next;
+  void (*swap_dyn_in) (bfd *, const void *, Elf_Internal_Dyn *);
+  bfd_boolean strip_zero_sized;
+  bfd_boolean strip_zero_sized_plt;
+
+  if (bfd_link_relocatable (info))
+    return TRUE;
+
+  hash_table = elf_hash_table (info);
+  if (!is_elf_hash_table (hash_table))
+    return FALSE;
+
+  if (!hash_table->dynobj)
+    return TRUE;
+
+  sdynamic= bfd_get_linker_section (hash_table->dynobj, ".dynamic");
+  if (!sdynamic)
+    return TRUE;
+
+  bed = get_elf_backend_data (hash_table->dynobj);
+  swap_dyn_in = bed->s->swap_dyn_in;
+
+  strip_zero_sized = FALSE;
+  strip_zero_sized_plt = FALSE;
+
+  /* Strip zero-sized dynamic sections.  */
+  rela_dyn = bfd_get_section_by_name (info->output_bfd, ".rela.dyn");
+  rel_dyn = bfd_get_section_by_name (info->output_bfd, ".rel.dyn");
+  for (pp = &info->output_bfd->sections; (s = *pp) != NULL;)
+    if (s->size == 0
+	&& (s == rela_dyn
+	    || s == rel_dyn
+	    || s == hash_table->srelplt->output_section
+	    || s == hash_table->splt->output_section))
+      {
+	*pp = s->next;
+	info->output_bfd->section_count--;
+	strip_zero_sized = TRUE;
+	if (s == rela_dyn)
+	  s = rela_dyn;
+	if (s == rel_dyn)
+	  s = rel_dyn;
+	else if (s == hash_table->splt->output_section)
+	  {
+	    s = hash_table->splt;
+	    strip_zero_sized_plt = TRUE;
+	  }
+	else
+	  s = hash_table->srelplt;
+	s->flags |= SEC_EXCLUDE;
+	s->output_section = bfd_abs_section_ptr;
+      }
+    else
+      pp = &s->next;
+
+  if (strip_zero_sized_plt)
+    for (extdyn = sdynamic->contents;
+	 extdyn < sdynamic->contents + sdynamic->size;
+	 extdyn = next)
+      {
+	next = extdyn + bed->s->sizeof_dyn;
+	swap_dyn_in (hash_table->dynobj, extdyn, &dyn);
+	switch (dyn.d_tag)
+	  {
+	  default:
+	    break;
+	  case DT_JMPREL:
+	  case DT_PLTRELSZ:
+	  case DT_PLTREL:
+	    /* Strip DT_PLTRELSZ, DT_JMPREL and DT_PLTREL entries if
+	       the procedure linkage table (the .plt section) has been
+	       removed.  */
+	    memmove (extdyn, next,
+		     sdynamic->size - (next - sdynamic->contents));
+	    next = extdyn;
+	  }
+      }
+
+  if (strip_zero_sized)
+    {
+      /* Regenerate program headers.  */
+      elf_seg_map (info->output_bfd) = NULL;
+      return _bfd_elf_map_sections_to_segments (info->output_bfd, info);
+    }
+
+  return TRUE;
+}
+
+/* Add a DT_NEEDED entry for this dynamic object.  Returns -1 on error,
    1 if a DT_NEEDED tag already exists, and 0 on success.  */
 
-static int
-elf_add_dt_needed_tag (bfd *abfd,
-		       struct bfd_link_info *info,
-		       const char *soname,
-		       bfd_boolean do_it)
+int
+bfd_elf_add_dt_needed_tag (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_table *hash_table;
   size_t strindex;
+  const char *soname;
 
   if (!_bfd_elf_link_create_dynstrtab (abfd, info))
     return -1;
 
   hash_table = elf_hash_table (info);
+  soname = elf_dt_name (abfd);
   strindex = _bfd_elf_strtab_add (hash_table->dynstr, soname, FALSE);
   if (strindex == (size_t) -1)
     return -1;
@@ -3547,17 +3658,11 @@ elf_add_dt_needed_tag (bfd *abfd,
 	  }
     }
 
-  if (do_it)
-    {
-      if (!_bfd_elf_link_create_dynamic_sections (hash_table->dynobj, info))
-	return -1;
+  if (!_bfd_elf_link_create_dynamic_sections (hash_table->dynobj, info))
+    return -1;
 
-      if (!_bfd_elf_add_dynamic_entry (info, DT_NEEDED, strindex))
-	return -1;
-    }
-  else
-    /* We were just checking for existence of the tag.  */
-    _bfd_elf_strtab_delref (hash_table->dynstr, strindex);
+  if (!_bfd_elf_add_dynamic_entry (info, DT_NEEDED, strindex))
+    return -1;
 
   return 0;
 }
@@ -3868,8 +3973,16 @@ _bfd_elf_link_check_relocs (bfd *abfd, s
 	  Elf_Internal_Rela *internal_relocs;
 	  bfd_boolean ok;
 
-	  /* Don't check relocations in excluded sections.  */
-	  if ((o->flags & SEC_RELOC) == 0
+	  /* Don't check relocations in excluded sections.  Don't do
+	     anything special with non-loaded, non-alloced sections.
+	     In particular, any relocs in such sections should not
+	     affect GOT and PLT reference counting (ie.  we don't
+	     allow them to create GOT or PLT entries), there's no
+	     possibility or desire to optimize TLS relocs, and
+	     there's not much point in propagating relocs to shared
+	     libs that the dynamic linker won't relocate.  */
+	  if ((o->flags & SEC_ALLOC) == 0
+	      || (o->flags & SEC_RELOC) == 0
 	      || (o->flags & SEC_EXCLUDE) != 0
 	      || o->reloc_count == 0
 	      || ((info->strip == strip_all || info->strip == strip_debugger)
@@ -3919,7 +4032,6 @@ elf_link_add_object_symbols (bfd *abfd,
   const struct elf_backend_data *bed;
   bfd_boolean add_needed;
   struct elf_link_hash_table *htab;
-  bfd_size_type amt;
   void *alloc_mark = NULL;
   struct bfd_hash_entry **old_table = NULL;
   unsigned int old_size = 0;
@@ -4070,7 +4182,7 @@ elf_link_add_object_symbols (bfd *abfd,
       char *audit = NULL;
       struct bfd_link_needed_list *rpath = NULL, *runpath = NULL;
       const Elf_Internal_Phdr *phdr;
-      int ret;
+      struct elf_link_loaded_list *loaded_lib;
 
       /* ld --just-symbols and dynamic objects don't mix very well.
 	 ld shouldn't allow it.  */
@@ -4098,7 +4210,7 @@ elf_link_add_object_symbols (bfd *abfd,
 
 	  if (!bfd_malloc_and_get_section (abfd, s, &dynbuf))
 	    {
-error_free_dyn:
+	    error_free_dyn:
 	      free (dynbuf);
 	      goto error_return;
 	    }
@@ -4127,8 +4239,8 @@ error_free_dyn:
 		  struct bfd_link_needed_list *n, **pn;
 		  char *fnm, *anm;
 		  unsigned int tagv = dyn.d_un.d_val;
+		  size_t amt = sizeof (struct bfd_link_needed_list);
 
-		  amt = sizeof (struct bfd_link_needed_list);
 		  n = (struct bfd_link_needed_list *) bfd_alloc (abfd, amt);
 		  fnm = bfd_elf_string_from_elf_section (abfd, shlink, tagv);
 		  if (n == NULL || fnm == NULL)
@@ -4150,8 +4262,8 @@ error_free_dyn:
 		  struct bfd_link_needed_list *n, **pn;
 		  char *fnm, *anm;
 		  unsigned int tagv = dyn.d_un.d_val;
+		  size_t amt = sizeof (struct bfd_link_needed_list);
 
-		  amt = sizeof (struct bfd_link_needed_list);
 		  n = (struct bfd_link_needed_list *) bfd_alloc (abfd, amt);
 		  fnm = bfd_elf_string_from_elf_section (abfd, shlink, tagv);
 		  if (n == NULL || fnm == NULL)
@@ -4176,8 +4288,8 @@ error_free_dyn:
 		  struct bfd_link_needed_list *n, **pn;
 		  char *fnm, *anm;
 		  unsigned int tagv = dyn.d_un.d_val;
+		  size_t amt = sizeof (struct bfd_link_needed_list);
 
-		  amt = sizeof (struct bfd_link_needed_list);
 		  n = (struct bfd_link_needed_list *) bfd_alloc (abfd, amt);
 		  fnm = bfd_elf_string_from_elf_section (abfd, shlink, tagv);
 		  if (n == NULL || fnm == NULL)
@@ -4227,10 +4339,14 @@ error_free_dyn:
 	if (phdr->p_type == PT_GNU_RELRO)
 	  {
 	    for (s = abfd->sections; s != NULL; s = s->next)
-	      if ((s->flags & SEC_ALLOC) != 0
-		  && s->vma >= phdr->p_vaddr
-		  && s->vma + s->size <= phdr->p_vaddr + phdr->p_memsz)
-		s->flags |= SEC_READONLY;
+	      {
+		unsigned int opb = bfd_octets_per_byte (abfd, s);
+
+		if ((s->flags & SEC_ALLOC) != 0
+		    && s->vma * opb >= phdr->p_vaddr
+		    && s->vma * opb + s->size <= phdr->p_vaddr + phdr->p_memsz)
+		  s->flags |= SEC_READONLY;
+	      }
 	    break;
 	  }
 
@@ -4259,15 +4375,22 @@ error_free_dyn:
 	 will need to know it.  */
       elf_dt_name (abfd) = soname;
 
-      ret = elf_add_dt_needed_tag (abfd, info, soname, add_needed);
-      if (ret < 0)
-	goto error_return;
-
       /* If we have already included this dynamic object in the
 	 link, just ignore it.  There is no reason to include a
 	 particular dynamic object more than once.  */
-      if (ret > 0)
-	return TRUE;
+      for (loaded_lib = htab->dyn_loaded;
+	   loaded_lib != NULL;
+	   loaded_lib = loaded_lib->next)
+	{
+	  if (strcmp (elf_dt_name (loaded_lib->abfd), soname) == 0)
+	    return TRUE;
+	}
+
+      /* Create dynamic sections for backends that require that be done
+	 before setup_gnu_properties.  */
+      if (add_needed
+	  && !_bfd_elf_link_create_dynamic_sections (abfd, info))
+	return FALSE;
 
       /* Save the DT_AUDIT entry for the linker emulation code. */
       elf_dt_audit (abfd) = audit;
@@ -4311,8 +4434,7 @@ error_free_dyn:
 	{
 	  /* We store a pointer to the hash table entry for each
 	     external symbol.  */
-	  amt = extsymcount;
-	  amt *= sizeof (struct elf_link_hash_entry *);
+	  size_t amt = extsymcount * sizeof (struct elf_link_hash_entry *);
 	  sym_hash = (struct elf_link_hash_entry **) bfd_zalloc (abfd, amt);
 	  if (sym_hash == NULL)
 	    goto error_free_sym;
@@ -4331,17 +4453,16 @@ error_free_dyn:
 	 to internal format.  */
       if (elf_dynversym (abfd) != 0)
 	{
-	  Elf_Internal_Shdr *versymhdr;
+	  Elf_Internal_Shdr *versymhdr = &elf_tdata (abfd)->dynversym_hdr;
+	  bfd_size_type amt = versymhdr->sh_size;
 
-	  versymhdr = &elf_tdata (abfd)->dynversym_hdr;
-	  amt = versymhdr->sh_size;
-	  extversym = (Elf_External_Versym *) bfd_malloc (amt);
+	  if (bfd_seek (abfd, versymhdr->sh_offset, SEEK_SET) != 0)
+	    goto error_free_sym;
+	  extversym = (Elf_External_Versym *)
+	    _bfd_malloc_and_read (abfd, amt, amt);
 	  if (extversym == NULL)
 	    goto error_free_sym;
-	  if (bfd_seek (abfd, versymhdr->sh_offset, SEEK_SET) != 0
-	      || bfd_bread (extversym, amt, abfd) != amt)
-	    goto error_free_vers;
-	  extversym_end = extversym + (amt / sizeof (* extversym));
+	  extversym_end = extversym + amt / sizeof (*extversym);
 	}
     }
 
@@ -4363,7 +4484,12 @@ error_free_dyn:
 	      h = (struct elf_link_hash_entry *) p;
 	      entsize += htab->root.table.entsize;
 	      if (h->root.type == bfd_link_hash_warning)
-		entsize += htab->root.table.entsize;
+		{
+		  entsize += htab->root.table.entsize;
+		  h = (struct elf_link_hash_entry *) h->root.u.i.link;
+		}
+	      if (h->root.type == bfd_link_hash_common)
+		entsize += sizeof (*h->root.u.c.p);
 	    }
 	}
 
@@ -4392,9 +4518,13 @@ error_free_dyn:
       old_table = htab->root.table.table;
       old_size = htab->root.table.size;
       old_count = htab->root.table.count;
-      old_strtab = _bfd_elf_strtab_save (htab->dynstr);
-      if (old_strtab == NULL)
-	goto error_free_vers;
+      old_strtab = NULL;
+      if (htab->dynstr != NULL)
+	{
+	  old_strtab = _bfd_elf_strtab_save (htab->dynstr);
+	  if (old_strtab == NULL)
+	    goto error_free_vers;
+	}
 
       for (i = 0; i < htab->root.table.size; i++)
 	{
@@ -4403,14 +4533,20 @@ error_free_dyn:
 
 	  for (p = htab->root.table.table[i]; p != NULL; p = p->next)
 	    {
-	      memcpy (old_ent, p, htab->root.table.entsize);
-	      old_ent = (char *) old_ent + htab->root.table.entsize;
 	      h = (struct elf_link_hash_entry *) p;
+	      memcpy (old_ent, h, htab->root.table.entsize);
+	      old_ent = (char *) old_ent + htab->root.table.entsize;
 	      if (h->root.type == bfd_link_hash_warning)
 		{
-		  memcpy (old_ent, h->root.u.i.link, htab->root.table.entsize);
+		  h = (struct elf_link_hash_entry *) h->root.u.i.link;
+		  memcpy (old_ent, h, htab->root.table.entsize);
 		  old_ent = (char *) old_ent + htab->root.table.entsize;
 		}
+	      if (h->root.type == bfd_link_hash_common)
+		{
+		  memcpy (old_ent, h->root.u.c.p, sizeof (*h->root.u.c.p));
+		  old_ent = (char *) old_ent + sizeof (*h->root.u.c.p);
+		}
 	    }
 	}
     }
@@ -4453,7 +4589,7 @@ error_free_dyn:
       bfd_boolean type_change_ok;
       bfd_boolean new_weak;
       bfd_boolean old_weak;
-      bfd_boolean override;
+      bfd *override;
       bfd_boolean common;
       bfd_boolean discarded;
       unsigned int old_alignment;
@@ -4461,7 +4597,7 @@ error_free_dyn:
       bfd *old_bfd;
       bfd_boolean matched;
 
-      override = FALSE;
+      override = NULL;
 
       flags = BSF_NO_FLAGS;
       sec = NULL;
@@ -4781,7 +4917,8 @@ error_free_dyn:
 	}
 
       if (! (_bfd_generic_link_add_one_symbol
-	     (info, abfd, name, flags, sec, value, NULL, FALSE, bed->collect,
+	     (info, override ? override : abfd, name, flags, sec, value,
+	      NULL, FALSE, bed->collect,
 	      (struct bfd_link_hash_entry **) sym_hash)))
 	goto error_free_vers;
 
@@ -4852,11 +4989,7 @@ error_free_dyn:
 	     object and a shared object.  */
 	  bfd_boolean dynsym = FALSE;
 
-	  /* Plugin symbols aren't normal.  Don't set def_regular or
-	     ref_regular for them, or make them dynamic.  */
-	  if ((abfd->flags & BFD_PLUGIN) != 0)
-	    ;
-	  else if (! dynamic)
+	  if (! dynamic)
 	    {
 	      if (! definition)
 		{
@@ -5037,10 +5170,6 @@ error_free_dyn:
 	      && !bfd_link_relocatable (info))
 	    dynsym = FALSE;
 
-	  /* Nor should we make plugin symbols dynamic.  */
-	  if ((abfd->flags & BFD_PLUGIN) != 0)
-	    dynsym = FALSE;
-
 	  if (definition)
 	    {
 	      h->target_internal = isym->st_target_internal;
@@ -5056,8 +5185,8 @@ error_free_dyn:
 		     aliases can be checked.  */
 		  if (!nondeflt_vers)
 		    {
-		      amt = ((isymend - isym + 1)
-			     * sizeof (struct elf_link_hash_entry *));
+		      size_t amt = ((isymend - isym + 1)
+				    * sizeof (struct elf_link_hash_entry *));
 		      nondeflt_vers
 			= (struct elf_link_hash_entry **) bfd_malloc (amt);
 		      if (!nondeflt_vers)
@@ -5067,7 +5196,7 @@ error_free_dyn:
 		}
 	    }
 
-	  if (dynsym && h->dynindx == -1)
+	  if (dynsym && (abfd->flags & BFD_PLUGIN) == 0 && h->dynindx == -1)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
 		goto error_free_vers;
@@ -5091,21 +5220,16 @@ error_free_dyn:
 		break;
 	      }
 
-	  /* Don't add DT_NEEDED for references from the dummy bfd nor
-	     for unmatched symbol.  */
 	  if (!add_needed
 	      && matched
 	      && definition
 	      && ((dynsym
-		   && h->ref_regular_nonweak
-		   && (old_bfd == NULL
-		       || (old_bfd->flags & BFD_PLUGIN) == 0))
+		   && h->ref_regular_nonweak)
 		  || (h->ref_dynamic_nonweak
 		      && (elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0
 		      && !on_needed_list (elf_dt_name (abfd),
 					  htab->needed, NULL))))
 	    {
-	      int ret;
 	      const char *soname = elf_dt_name (abfd);
 
 	      info->callbacks->minfo ("%!", soname, old_bfd,
@@ -5130,12 +5254,11 @@ error_free_dyn:
 	      elf_dyn_lib_class (abfd) = (enum dynamic_lib_link_class)
 		(elf_dyn_lib_class (abfd) & ~DYN_AS_NEEDED);
 
+	      /* Create dynamic sections for backends that require
+		 that be done before setup_gnu_properties.  */
+	      if (!_bfd_elf_link_create_dynamic_sections (abfd, info))
+		return FALSE;
 	      add_needed = TRUE;
-	      ret = elf_add_dt_needed_tag (abfd, info, soname, add_needed);
-	      if (ret < 0)
-		goto error_free_vers;
-
-	      BFD_ASSERT (ret == 0);
 	    }
 	}
     }
@@ -5199,17 +5322,10 @@ error_free_dyn:
 	}
     }
 
-  if (extversym != NULL)
-    {
-      free (extversym);
-      extversym = NULL;
-    }
-
-  if (isymbuf != NULL)
-    {
-      free (isymbuf);
-      isymbuf = NULL;
-    }
+  free (extversym);
+  extversym = NULL;
+  free (isymbuf);
+  isymbuf = NULL;
 
   if ((elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0)
     {
@@ -5225,56 +5341,39 @@ error_free_dyn:
       memcpy (htab->root.table.table, old_tab, tabsize);
       htab->root.undefs = old_undefs;
       htab->root.undefs_tail = old_undefs_tail;
-      _bfd_elf_strtab_restore (htab->dynstr, old_strtab);
+      if (htab->dynstr != NULL)
+	_bfd_elf_strtab_restore (htab->dynstr, old_strtab);
       free (old_strtab);
       old_strtab = NULL;
       for (i = 0; i < htab->root.table.size; i++)
 	{
 	  struct bfd_hash_entry *p;
 	  struct elf_link_hash_entry *h;
-	  bfd_size_type size;
-	  unsigned int alignment_power;
 	  unsigned int non_ir_ref_dynamic;
 
 	  for (p = htab->root.table.table[i]; p != NULL; p = p->next)
 	    {
-	      h = (struct elf_link_hash_entry *) p;
-	      if (h->root.type == bfd_link_hash_warning)
-		h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
-	      /* Preserve the maximum alignment and size for common
-		 symbols even if this dynamic lib isn't on DT_NEEDED
-		 since it can still be loaded at run time by another
-		 dynamic lib.  */
-	      if (h->root.type == bfd_link_hash_common)
-		{
-		  size = h->root.u.c.size;
-		  alignment_power = h->root.u.c.p->alignment_power;
-		}
-	      else
-		{
-		  size = 0;
-		  alignment_power = 0;
-		}
 	      /* Preserve non_ir_ref_dynamic so that this symbol
 		 will be exported when the dynamic lib becomes needed
 		 in the second pass.  */
+	      h = (struct elf_link_hash_entry *) p;
+	      if (h->root.type == bfd_link_hash_warning)
+		h = (struct elf_link_hash_entry *) h->root.u.i.link;
 	      non_ir_ref_dynamic = h->root.non_ir_ref_dynamic;
-	      memcpy (p, old_ent, htab->root.table.entsize);
-	      old_ent = (char *) old_ent + htab->root.table.entsize;
+
 	      h = (struct elf_link_hash_entry *) p;
+	      memcpy (h, old_ent, htab->root.table.entsize);
+	      old_ent = (char *) old_ent + htab->root.table.entsize;
 	      if (h->root.type == bfd_link_hash_warning)
 		{
-		  memcpy (h->root.u.i.link, old_ent, htab->root.table.entsize);
-		  old_ent = (char *) old_ent + htab->root.table.entsize;
 		  h = (struct elf_link_hash_entry *) h->root.u.i.link;
+		  memcpy (h, old_ent, htab->root.table.entsize);
+		  old_ent = (char *) old_ent + htab->root.table.entsize;
 		}
 	      if (h->root.type == bfd_link_hash_common)
 		{
-		  if (size > h->root.u.c.size)
-		    h->root.u.c.size = size;
-		  if (alignment_power > h->root.u.c.p->alignment_power)
-		    h->root.u.c.p->alignment_power = alignment_power;
+		  memcpy (h->root.u.c.p, old_ent, sizeof (*h->root.u.c.p));
+		  old_ent = (char *) old_ent + sizeof (*h->root.u.c.p);
 		}
 	      h->root.non_ir_ref_dynamic = non_ir_ref_dynamic;
 	    }
@@ -5288,8 +5387,7 @@ error_free_dyn:
       free (old_tab);
       objalloc_free_block ((struct objalloc *) htab->root.table.memory,
 			   alloc_mark);
-      if (nondeflt_vers != NULL)
-	free (nondeflt_vers);
+      free (nondeflt_vers);
       return TRUE;
     }
 
@@ -5312,6 +5410,7 @@ error_free_dyn:
 	{
 	  struct elf_link_hash_entry *h = nondeflt_vers[cnt], *hi;
 	  char *shortname, *p;
+	  size_t amt;
 
 	  p = strchr (h->root.root.string, ELF_VER_CHR);
 	  if (p == NULL
@@ -5372,13 +5471,12 @@ error_free_dyn:
       struct elf_link_hash_entry **hppend;
       struct elf_link_hash_entry **sorted_sym_hash;
       struct elf_link_hash_entry *h;
-      size_t sym_count;
+      size_t sym_count, amt;
 
       /* Since we have to search the whole symbol list for each weak
 	 defined symbol, search time for N weak defined symbols will be
 	 O(N^2). Binary search will cut it down to O(NlogN).  */
-      amt = extsymcount;
-      amt *= sizeof (*sorted_sym_hash);
+      amt = extsymcount * sizeof (*sorted_sym_hash);
       sorted_sym_hash = bfd_malloc (amt);
       if (sorted_sym_hash == NULL)
 	goto error_return;
@@ -5553,7 +5651,7 @@ error_free_dyn:
 	}
     }
 
-  if (is_elf_hash_table (htab) && add_needed)
+  if (dynamic && add_needed)
     {
       /* Add this bfd to the loaded list.  */
       struct elf_link_loaded_list *n;
@@ -5562,24 +5660,22 @@ error_free_dyn:
       if (n == NULL)
 	goto error_return;
       n->abfd = abfd;
-      n->next = htab->loaded;
-      htab->loaded = n;
+      n->next = htab->dyn_loaded;
+      htab->dyn_loaded = n;
     }
+  if (dynamic && !add_needed
+      && (elf_dyn_lib_class (abfd) & DYN_DT_NEEDED) != 0)
+    elf_dyn_lib_class (abfd) |= DYN_NO_NEEDED;
 
   return TRUE;
 
  error_free_vers:
-  if (old_tab != NULL)
-    free (old_tab);
-  if (old_strtab != NULL)
-    free (old_strtab);
-  if (nondeflt_vers != NULL)
-    free (nondeflt_vers);
-  if (extversym != NULL)
-    free (extversym);
+  free (old_tab);
+  free (old_strtab);
+  free (nondeflt_vers);
+  free (extversym);
  error_free_sym:
-  if (isymbuf != NULL)
-    free (isymbuf);
+  free (isymbuf);
  error_return:
   return FALSE;
 }
@@ -5653,7 +5749,7 @@ elf_link_add_archive_symbols (bfd *abfd,
   unsigned char *included = NULL;
   carsym *symdefs;
   bfd_boolean loop;
-  bfd_size_type amt;
+  size_t amt;
   const struct elf_backend_data *bed;
   struct elf_link_hash_entry * (*archive_symbol_lookup)
     (bfd *, struct bfd_link_info *, const char *);
@@ -5673,8 +5769,7 @@ elf_link_add_archive_symbols (bfd *abfd,
   c = bfd_ardata (abfd)->symdef_count;
   if (c == 0)
     return TRUE;
-  amt = c;
-  amt *= sizeof (*included);
+  amt = c * sizeof (*included);
   included = (unsigned char *) bfd_zmalloc (amt);
   if (included == NULL)
     return FALSE;
@@ -5717,7 +5812,15 @@ elf_link_add_archive_symbols (bfd *abfd,
 	  if (h == NULL)
 	    continue;
 
-	  if (h->root.type == bfd_link_hash_common)
+	  if (h->root.type == bfd_link_hash_undefined)
+	    {
+	      /* If the archive element has already been loaded then one
+		 of the symbols defined by that element might have been
+		 made undefined due to being in a discarded section.  */
+	      if (h->indx == -3)
+		continue;
+	    }
+	  else if (h->root.type == bfd_link_hash_common)
 	    {
 	      /* We currently have a common symbol.  The archive map contains
 		 a reference to this symbol, so we may want to include it.  We
@@ -5734,7 +5837,7 @@ elf_link_add_archive_symbols (bfd *abfd,
 	      if (! elf_link_is_defined_archive_symbol (abfd, symdef))
 		continue;
 	    }
-	  else if (h->root.type != bfd_link_hash_undefined)
+	  else
 	    {
 	      if (h->root.type != bfd_link_hash_undefweak)
 		/* Symbol must be defined.  Don't check it again.  */
@@ -5788,12 +5891,10 @@ elf_link_add_archive_symbols (bfd *abfd,
   while (loop);
 
   free (included);
-
   return TRUE;
 
  error_return:
-  if (included != NULL)
-    free (included);
+  free (included);
   return FALSE;
 }
 
@@ -5864,9 +5965,7 @@ elf_collect_hash_codes (struct elf_link_
      later.  */
   h->u.elf_hash_value = ha;
 
-  if (alc != NULL)
-    free (alc);
-
+  free (alc);
   return TRUE;
 }
 
@@ -5940,9 +6039,7 @@ elf_collect_gnu_hash_codes (struct elf_l
   if (s->min_dynindx < 0 || s->min_dynindx > h->dynindx)
     s->min_dynindx = h->dynindx;
 
-  if (alc != NULL)
-    free (alc);
-
+  free (alc);
   return TRUE;
 }
 
@@ -6520,7 +6617,7 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	    {
 	      size_t indx;
 
-	      name = lbasename (output_bfd->filename);
+	      name = lbasename (bfd_get_filename (output_bfd));
 	      def.vd_hash = bfd_elf_hash (name);
 	      indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
 					  name, FALSE);
@@ -6747,7 +6844,8 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	      indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
 					  elf_dt_name (vn->vn_bfd) != NULL
 					  ? elf_dt_name (vn->vn_bfd)
-					  : lbasename (vn->vn_bfd->filename),
+					  : lbasename (bfd_get_filename
+						       (vn->vn_bfd)),
 					  FALSE);
 	      if (indx == (size_t) -1)
 		return FALSE;
@@ -7567,6 +7665,37 @@ _bfd_elf_link_hash_copy_indirect (struct
 {
   struct elf_link_hash_table *htab;
 
+  if (ind->dyn_relocs != NULL)
+    {
+      if (dir->dyn_relocs != NULL)
+	{
+	  struct elf_dyn_relocs **pp;
+	  struct elf_dyn_relocs *p;
+
+	  /* Add reloc counts against the indirect sym to the direct sym
+	     list.  Merge any entries against the same section.  */
+	  for (pp = &ind->dyn_relocs; (p = *pp) != NULL; )
+	    {
+	      struct elf_dyn_relocs *q;
+
+	      for (q = dir->dyn_relocs; q != NULL; q = q->next)
+		if (q->sec == p->sec)
+		  {
+		    q->pc_count += p->pc_count;
+		    q->count += p->count;
+		    *pp = p->next;
+		    break;
+		  }
+	      if (q == NULL)
+		pp = &p->next;
+	    }
+	  *pp = dir->dyn_relocs;
+	}
+
+      dir->dyn_relocs = ind->dyn_relocs;
+      ind->dyn_relocs = NULL;
+    }
+
   /* Copy down any references that we may have already seen to the
      symbol which just became indirect.  */
 
@@ -7682,6 +7811,7 @@ _bfd_elf_link_hash_table_init
 
   table->root.type = bfd_link_elf_hash_table;
   table->hash_table_id = target_id;
+  table->target_os = get_elf_backend_data (abfd)->target_os;
 
   return ret;
 }
@@ -7692,7 +7822,7 @@ struct bfd_link_hash_table *
 _bfd_elf_link_hash_table_create (bfd *abfd)
 {
   struct elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_link_hash_table);
+  size_t amt = sizeof (struct elf_link_hash_table);
 
   ret = (struct elf_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -7846,7 +7976,7 @@ bfd_elf_get_bfd_needed_list (bfd *abfd,
 	  const char *string;
 	  struct bfd_link_needed_list *l;
 	  unsigned int tagv = dyn.d_un.d_val;
-	  bfd_size_type amt;
+	  size_t amt;
 
 	  string = bfd_elf_string_from_elf_section (abfd, shlink, tagv);
 	  if (string == NULL)
@@ -7869,8 +7999,7 @@ bfd_elf_get_bfd_needed_list (bfd *abfd,
   return TRUE;
 
  error_return:
-  if (dynbuf != NULL)
-    free (dynbuf);
+  free (dynbuf);
   return FALSE;
 }
 
@@ -7935,9 +8064,10 @@ elf_create_symbuf (size_t symcount, Elf_
   Elf_Internal_Sym **ind, **indbufend, **indbuf;
   struct elf_symbuf_symbol *ssym;
   struct elf_symbuf_head *ssymbuf, *ssymhead;
-  size_t i, shndx_count, total_size;
+  size_t i, shndx_count, total_size, amt;
 
-  indbuf = (Elf_Internal_Sym **) bfd_malloc2 (symcount, sizeof (*indbuf));
+  amt = symcount * sizeof (*indbuf);
+  indbuf = (Elf_Internal_Sym **) bfd_malloc (amt);
   if (indbuf == NULL)
     return NULL;
 
@@ -8048,7 +8178,7 @@ bfd_elf_match_symbols_in_sections (asect
       if (isymbuf1 == NULL)
 	goto done;
 
-      if (!info->reduce_memory_overheads)
+      if (info != NULL && !info->reduce_memory_overheads)
 	{
 	  ssymbuf1 = elf_create_symbuf (symcount1, isymbuf1);
 	  elf_tdata (bfd1)->symbuf = ssymbuf1;
@@ -8062,7 +8192,7 @@ bfd_elf_match_symbols_in_sections (asect
       if (isymbuf2 == NULL)
 	goto done;
 
-      if (ssymbuf1 != NULL && !info->reduce_memory_overheads)
+      if (ssymbuf1 != NULL && info != NULL && !info->reduce_memory_overheads)
 	{
 	  ssymbuf2 = elf_create_symbuf (symcount2, isymbuf2);
 	  elf_tdata (bfd2)->symbuf = ssymbuf2;
@@ -8207,15 +8337,11 @@ bfd_elf_match_symbols_in_sections (asect
 
   result = TRUE;
 
-done:
-  if (symtable1)
-    free (symtable1);
-  if (symtable2)
-    free (symtable2);
-  if (isymbuf1)
-    free (isymbuf1);
-  if (isymbuf2)
-    free (isymbuf2);
+ done:
+  free (symtable1);
+  free (symtable2);
+  free (isymbuf1);
+  free (isymbuf2);
 
   return result;
 }
@@ -8275,8 +8401,49 @@ struct elf_final_link_info
   Elf_External_Sym_Shndx *symshndxbuf;
   /* Number of STT_FILE syms seen.  */
   size_t filesym_count;
+  /* Local symbol hash table.  */
+  struct bfd_hash_table local_hash_table;
 };
 
+struct local_hash_entry
+{
+  /* Base hash table entry structure.  */
+  struct bfd_hash_entry root;
+  /* Size of the local symbol name.  */
+  size_t size;
+  /* Number of the duplicated local symbol names.  */
+  long count;
+};
+
+/* Create an entry in the local symbol hash table.  */
+
+static struct bfd_hash_entry *
+local_hash_newfunc (struct bfd_hash_entry *entry,
+		    struct bfd_hash_table *table,
+		    const char *string)
+{
+
+  /* Allocate the structure if it has not already been allocated by a
+     subclass.  */
+  if (entry == NULL)
+    {
+      entry = bfd_hash_allocate (table,
+				 sizeof (struct local_hash_entry));
+      if (entry == NULL)
+        return entry;
+    }
+
+  /* Call the allocation method of the superclass.  */
+  entry = bfd_hash_newfunc (entry, table, string);
+  if (entry != NULL)
+    {
+      ((struct local_hash_entry *) entry)->count = 0;
+      ((struct local_hash_entry *) entry)->size = 0;
+    }
+
+  return entry;
+}
+
 /* This struct is used to pass information to elf_link_output_extsym.  */
 
 struct elf_outext_info
@@ -8294,12 +8461,12 @@ struct elf_outext_info
    implementation of them consists of two parts: complex symbols, and the
    relocations themselves.
 
-   The relocations are use a reserved elf-wide relocation type code (R_RELC
+   The relocations use a reserved elf-wide relocation type code (R_RELC
    external / BFD_RELOC_RELC internal) and an encoding of relocation field
    information (start bit, end bit, word width, etc) into the addend.  This
    information is extracted from CGEN-generated operand tables within gas.
 
-   Complex symbols are mangled symbols (BSF_RELC external / STT_RELC
+   Complex symbols are mangled symbols (STT_RELC external / BSF_RELC
    internal) representing prefix-notation expressions, including but not
    limited to those sorts of expressions normally encoded as addends in the
    addend field.  The symbol mangling format is:
@@ -8474,6 +8641,7 @@ undefined_reference (const char *reftype
   /* xgettext:c-format */
   _bfd_error_handler (_("undefined %s reference in complex symbol: %s"),
 		      reftype, name);
+  bfd_set_error (bfd_error_bad_value);
 }
 
 static bfd_boolean
@@ -8582,7 +8750,7 @@ eval_symbol (bfd_vma *result,
       return TRUE;						\
     }
 
-#define BINARY_OP(op)						\
+#define BINARY_OP_HEAD(op)					\
   if (strncmp (sym, #op, strlen (#op)) == 0)			\
     {								\
       sym += strlen (#op);					\
@@ -8595,18 +8763,33 @@ eval_symbol (bfd_vma *result,
       ++*symp;							\
       if (!eval_symbol (&b, symp, input_bfd, flinfo, dot,	\
 			isymbuf, locsymcount, signed_p))	\
-	return FALSE;						\
+	return FALSE;
+#define BINARY_OP_TAIL(op)					\
       if (signed_p)						\
 	*result = ((bfd_signed_vma) a) op ((bfd_signed_vma) b);	\
       else							\
 	*result = a op b;					\
       return TRUE;						\
     }
+#define BINARY_OP(op) BINARY_OP_HEAD(op) BINARY_OP_TAIL(op)
 
     default:
       UNARY_OP  (0-);
-      BINARY_OP (<<);
-      BINARY_OP (>>);
+      BINARY_OP_HEAD (<<);
+      if (b >= sizeof (a) * CHAR_BIT)
+	{
+	  *result = 0;
+	  return TRUE;
+	}
+      signed_p = 0;
+      BINARY_OP_TAIL (<<);
+      BINARY_OP_HEAD (>>);
+      if (b >= sizeof (a) * CHAR_BIT)
+	{
+	  *result = signed_p && (bfd_signed_vma) a < 0 ? -1 : 0;
+	  return TRUE;
+	}
+      BINARY_OP_TAIL (>>);
       BINARY_OP (==);
       BINARY_OP (!=);
       BINARY_OP (<=);
@@ -8616,8 +8799,22 @@ eval_symbol (bfd_vma *result,
       UNARY_OP  (~);
       UNARY_OP  (!);
       BINARY_OP (*);
-      BINARY_OP (/);
-      BINARY_OP (%);
+      BINARY_OP_HEAD (/);
+      if (b == 0)
+	{
+	  _bfd_error_handler (_("division by zero"));
+	  bfd_set_error (bfd_error_bad_value);
+	  return FALSE;
+	}
+      BINARY_OP_TAIL (/);
+      BINARY_OP_HEAD (%);
+      if (b == 0)
+	{
+	  _bfd_error_handler (_("division by zero"));
+	  bfd_set_error (bfd_error_bad_value);
+	  return FALSE;
+	}
+      BINARY_OP_TAIL (%);
       BINARY_OP (^);
       BINARY_OP (|);
       BINARY_OP (&);
@@ -9509,9 +9706,72 @@ elf_link_output_symstrtab (struct elf_fi
     {
       /* Call _bfd_elf_strtab_offset after _bfd_elf_strtab_finalize
 	 to get the final offset for st_name.  */
+      char *versioned_name = (char *) name;
+      if (h != NULL)
+	{
+	  if (h->versioned == versioned && h->def_dynamic)
+	    {
+	      /* Keep only one '@' for versioned symbols defined in
+	         shared objects.  */
+	      char *version = strrchr (name, ELF_VER_CHR);
+	      char *base_end = strchr (name, ELF_VER_CHR);
+	      if (version != base_end)
+		{
+		  size_t base_len;
+		  size_t len = strlen (name);
+		  versioned_name = bfd_alloc (flinfo->output_bfd, len);
+		  if (versioned_name == NULL)
+		    return 0;
+		  base_len = base_end - name;
+		  memcpy (versioned_name, name, base_len);
+		  memcpy (versioned_name + base_len, version,
+			  len - base_len);
+		}
+	    }
+	}
+      else if (flinfo->info->unique_symbol
+	       && ELF_ST_BIND (elfsym->st_info) == STB_LOCAL)
+	{
+	  struct local_hash_entry *lh;
+	  switch (ELF_ST_TYPE (elfsym->st_info))
+	    {
+	    case STT_FILE:
+	    case STT_SECTION:
+	      break;
+	    default:
+	      lh = (struct local_hash_entry *) bfd_hash_lookup
+		     (&flinfo->local_hash_table, name, TRUE, FALSE);
+	      if (lh == NULL)
+		return 0;
+	      if (lh->count)
+		{
+		  /* Append ".COUNT" to duplicated local symbols.  */
+		  size_t count_len;
+		  size_t base_len = lh->size;
+		  char buf[30];
+		  sprintf (buf, "%lx", lh->count);
+		  if (!base_len)
+		    {
+		      base_len = strlen (name);
+		      lh->size = base_len;
+		    }
+		  count_len = strlen (buf);
+		  versioned_name = bfd_alloc (flinfo->output_bfd,
+					      base_len + count_len + 2);
+		  if (versioned_name == NULL)
+		    return 0;
+		  memcpy (versioned_name, name, base_len);
+		  versioned_name[base_len] = '.';
+		  memcpy (versioned_name + base_len + 1, buf,
+			  count_len + 1);
+		}
+	      lh->count++;
+	      break;
+	    }
+	}
       elfsym->st_name
 	= (unsigned long) _bfd_elf_strtab_add (flinfo->symstrtab,
-					       name, FALSE);
+					       versioned_name, FALSE);
       if (elfsym->st_name == (unsigned long) -1)
 	return 0;
     }
@@ -9548,7 +9808,7 @@ static bfd_boolean
 elf_link_swap_symbols_out (struct elf_final_link_info *flinfo)
 {
   struct elf_link_hash_table *hash_table = elf_hash_table (flinfo->info);
-  bfd_size_type amt;
+  size_t amt;
   size_t i;
   const struct elf_backend_data *bed;
   bfd_byte *symbuf;
@@ -9692,7 +9952,7 @@ elf_link_check_versioned_symbol (struct
     }
   BFD_ASSERT (abfd != NULL);
 
-  for (loaded = elf_hash_table (info)->loaded;
+  for (loaded = elf_hash_table (info)->dyn_loaded;
        loaded != NULL;
        loaded = loaded->next)
     {
@@ -9712,7 +9972,6 @@ elf_link_check_versioned_symbol (struct
 
       /* We check each DSO for a possible hidden versioned definition.  */
       if (input == abfd
-	  || (input->flags & DYNAMIC) == 0
 	  || elf_dynversym (input) == 0)
 	continue;
 
@@ -9740,16 +9999,11 @@ elf_link_check_versioned_symbol (struct
 
       /* Read in any version definitions.  */
       versymhdr = &elf_tdata (input)->dynversym_hdr;
-      extversym = (Elf_External_Versym *) bfd_malloc (versymhdr->sh_size);
-      if (extversym == NULL)
-	goto error_ret;
-
       if (bfd_seek (input, versymhdr->sh_offset, SEEK_SET) != 0
-	  || (bfd_bread (extversym, versymhdr->sh_size, input)
-	      != versymhdr->sh_size))
+	  || (extversym = (Elf_External_Versym *)
+	      _bfd_malloc_and_read (input, versymhdr->sh_size,
+				    versymhdr->sh_size)) == NULL)
 	{
-	  free (extversym);
-	error_ret:
 	  free (isymbuf);
 	  return FALSE;
 	}
@@ -9886,11 +10140,13 @@ elf_link_output_extsym (struct bfd_hash_
 	  && (!h->ref_regular || flinfo->info->gc_sections)
 	  && !elf_link_check_versioned_symbol (flinfo->info, bed, h)
 	  && flinfo->info->unresolved_syms_in_shared_libs != RM_IGNORE)
-	(*flinfo->info->callbacks->undefined_symbol)
-	  (flinfo->info, h->root.root.string,
-	   h->ref_regular ? NULL : h->root.u.undef.abfd,
-	   NULL, 0,
-	   flinfo->info->unresolved_syms_in_shared_libs == RM_GENERATE_ERROR);
+	{
+	  flinfo->info->callbacks->undefined_symbol
+	    (flinfo->info, h->root.root.string,
+	     h->ref_regular ? NULL : h->root.u.undef.abfd, NULL, 0,
+	     flinfo->info->unresolved_syms_in_shared_libs == RM_DIAGNOSE
+	     && !flinfo->info->warn_unresolved_syms);
+	}
 
       /* Strip a global symbol defined in a discarded section.  */
       if (h->indx == -3)
@@ -10569,6 +10825,18 @@ elf_link_input_bfd (struct elf_final_lin
 	 discarding, we don't need to keep it.  */
       if (isym->st_shndx != SHN_UNDEF
 	  && isym->st_shndx < SHN_LORESERVE
+	  && isec->output_section == NULL
+	  && flinfo->info->non_contiguous_regions
+	  && flinfo->info->non_contiguous_regions_warnings)
+	{
+	  _bfd_error_handler (_("warning: --enable-non-contiguous-regions "
+				"discards section `%s' from '%s'\n"),
+			      isec->name, bfd_get_filename (isec->owner));
+	  continue;
+	}
+
+      if (isym->st_shndx != SHN_UNDEF
+	  && isym->st_shndx < SHN_LORESERVE
 	  && bfd_section_removed_from_list (output_bfd,
 					    isec->output_section))
 	continue;
@@ -10614,7 +10882,7 @@ elf_link_input_bfd (struct elf_final_lin
 	  osym.st_shndx = SHN_ABS;
 	  if (!elf_link_output_symstrtab (flinfo,
 					  (input_bfd->lto_output ? NULL
-					   : input_bfd->filename),
+					   : bfd_get_filename (input_bfd)),
 					  &osym, bfd_abs_section_ptr,
 					  NULL))
 	    return FALSE;
@@ -10916,7 +11184,7 @@ elf_link_input_bfd (struct elf_final_lin
 #ifdef DEBUG
 		  printf ("Encountered a complex symbol!");
 		  printf (" (input_bfd %s, section %s, reloc %ld\n",
-			  input_bfd->filename, o->name,
+			  bfd_get_filename (input_bfd), o->name,
 			  (long) (rel - internal_relocs));
 		  printf (" symbol: idx  %8.8lx, name %s\n",
 			  r_symndx, sym_name);
@@ -11566,8 +11834,8 @@ elf_fixup_link_order (bfd *abfd, asectio
   struct bfd_link_order *p;
   bfd *sub;
   struct bfd_link_order **sections;
-  asection *s, *other_sec, *linkorder_sec;
-  bfd_vma offset;
+  asection *other_sec, *linkorder_sec;
+  bfd_vma offset;  /* Octets.  */
 
   other_sec = NULL;
   linkorder_sec = NULL;
@@ -11577,7 +11845,7 @@ elf_fixup_link_order (bfd *abfd, asectio
     {
       if (p->type == bfd_indirect_link_order)
 	{
-	  s = p->u.indirect.section;
+	  asection *s = p->u.indirect.section;
 	  sub = s->owner;
 	  if ((s->flags & SEC_LINKER_CREATED) == 0
 	      && bfd_get_flavour (sub) == bfd_target_elf_flavour
@@ -11632,11 +11900,12 @@ elf_fixup_link_order (bfd *abfd, asectio
   for (n = 0; n < seen_linkorder; n++)
     {
       bfd_vma mask;
-      s = sections[n]->u.indirect.section;
-      mask = ~(bfd_vma) 0 << s->alignment_power;
+      asection *s = sections[n]->u.indirect.section;
+      unsigned int opb = bfd_octets_per_byte (abfd, s);
+
+      mask = ~(bfd_vma) 0 << s->alignment_power * opb;
       offset = (offset + ~mask) & mask;
-      s->output_offset = offset / bfd_octets_per_byte (abfd, s);
-      sections[n]->offset = offset;
+      sections[n]->offset = s->output_offset = offset / opb;
       offset += sections[n]->size;
     }
 
@@ -11661,6 +11930,7 @@ elf_output_implib (bfd *abfd, struct bfd
   long symcount;
   long src_count;
   elf_symbol_type *osymbuf;
+  size_t amt;
 
   implib_bfd = info->out_implib_bfd;
   bed = get_elf_backend_data (abfd);
@@ -11718,8 +11988,8 @@ elf_output_implib (bfd *abfd, struct bfd
 
 
   /* Make symbols absolute.  */
-  osymbuf = (elf_symbol_type *) bfd_alloc2 (implib_bfd, symcount,
-					    sizeof (*osymbuf));
+  amt = symcount * sizeof (*osymbuf);
+  osymbuf = (elf_symbol_type *) bfd_alloc (implib_bfd, amt);
   if (osymbuf == NULL)
     goto free_sym_buf;
 
@@ -11748,7 +12018,7 @@ elf_output_implib (bfd *abfd, struct bfd
 
   ret = TRUE;
 
-free_sym_buf:
+ free_sym_buf:
   free (sympp);
   return ret;
 }
@@ -11760,32 +12030,21 @@ elf_final_link_free (bfd *obfd, struct e
 
   if (flinfo->symstrtab != NULL)
     _bfd_elf_strtab_free (flinfo->symstrtab);
-  if (flinfo->contents != NULL)
-    free (flinfo->contents);
-  if (flinfo->external_relocs != NULL)
-    free (flinfo->external_relocs);
-  if (flinfo->internal_relocs != NULL)
-    free (flinfo->internal_relocs);
-  if (flinfo->external_syms != NULL)
-    free (flinfo->external_syms);
-  if (flinfo->locsym_shndx != NULL)
-    free (flinfo->locsym_shndx);
-  if (flinfo->internal_syms != NULL)
-    free (flinfo->internal_syms);
-  if (flinfo->indices != NULL)
-    free (flinfo->indices);
-  if (flinfo->sections != NULL)
-    free (flinfo->sections);
-  if (flinfo->symshndxbuf != NULL
-      && flinfo->symshndxbuf != (Elf_External_Sym_Shndx *) -1)
+  free (flinfo->contents);
+  free (flinfo->external_relocs);
+  free (flinfo->internal_relocs);
+  free (flinfo->external_syms);
+  free (flinfo->locsym_shndx);
+  free (flinfo->internal_syms);
+  free (flinfo->indices);
+  free (flinfo->sections);
+  if (flinfo->symshndxbuf != (Elf_External_Sym_Shndx *) -1)
     free (flinfo->symshndxbuf);
   for (o = obfd->sections; o != NULL; o = o->next)
     {
       struct bfd_elf_section_data *esdo = elf_section_data (o);
-      if ((o->flags & SEC_RELOC) != 0 && esdo->rel.hashes != NULL)
-	free (esdo->rel.hashes);
-      if ((o->flags & SEC_RELOC) != 0 && esdo->rela.hashes != NULL)
-	free (esdo->rela.hashes);
+      free (esdo->rel.hashes);
+      free (esdo->rela.hashes);
     }
 }
 
@@ -11820,6 +12079,8 @@ bfd_elf_final_link (bfd *abfd, struct bf
   bfd_vma attr_size = 0;
   const char *std_attrs_section;
   struct elf_link_hash_table *htab = elf_hash_table (info);
+  bfd_boolean sections_removed;
+  bfd_boolean ret;
 
   if (!is_elf_hash_table (htab))
     return FALSE;
@@ -11833,6 +12094,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
   emit_relocs = (bfd_link_relocatable (info)
 		 || info->emitrelocations);
 
+  memset (&flinfo, 0, sizeof (flinfo));
   flinfo.info = info;
   flinfo.output_bfd = abfd;
   flinfo.symstrtab = _bfd_elf_strtab_init ();
@@ -11852,20 +12114,16 @@ bfd_elf_final_link (bfd *abfd, struct bf
       /* Note that it is OK if symver_sec is NULL.  */
     }
 
-  flinfo.contents = NULL;
-  flinfo.external_relocs = NULL;
-  flinfo.internal_relocs = NULL;
-  flinfo.external_syms = NULL;
-  flinfo.locsym_shndx = NULL;
-  flinfo.internal_syms = NULL;
-  flinfo.indices = NULL;
-  flinfo.sections = NULL;
-  flinfo.symshndxbuf = NULL;
-  flinfo.filesym_count = 0;
+  if (info->unique_symbol
+      && !bfd_hash_table_init (&flinfo.local_hash_table,
+			       local_hash_newfunc,
+			       sizeof (struct local_hash_entry)))
+    return FALSE;
 
   /* The object attributes have been merged.  Remove the input
      sections from the link, and set the contents of the output
      section.  */
+  sections_removed = FALSE;
   std_attrs_section = get_elf_backend_data (abfd)->obj_attrs_section;
   for (o = abfd->sections; o != NULL; o = o->next)
     {
@@ -11905,8 +12163,11 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	  o->flags |= SEC_EXCLUDE;
 	  bfd_section_list_remove (abfd, o);
 	  abfd->section_count--;
+	  sections_removed = TRUE;
 	}
     }
+  if (sections_removed)
+    _bfd_fix_excluded_sec_syms (abfd, info);
 
   /* Count up the number of relocations we will output for each output
      section, so that we know the sizes of the reloc sections.  We
@@ -12137,6 +12398,9 @@ bfd_elf_final_link (bfd *abfd, struct bf
 
   if (info->strip != strip_all || emit_relocs)
     {
+      bfd_boolean name_local_sections;
+      const char *name;
+
       file_ptr off = elf_next_file_pos (abfd);
 
       _bfd_elf_assign_file_position_for_section (symtab_hdr, off, TRUE);
@@ -12159,10 +12423,15 @@ bfd_elf_final_link (bfd *abfd, struct bf
 
       /* Output a symbol for each section.  We output these even if we are
 	 discarding local symbols, since they are used for relocs.  These
-	 symbols have no names.  We store the index of each one in the
-	 index field of the section, so that we can find it again when
+	 symbols usually have no names.  We store the index of each one in
+	 the index field of the section, so that we can find it again when
 	 outputting relocs.  */
 
+      name_local_sections
+	= (bed->elf_backend_name_local_section_symbols
+	   && bed->elf_backend_name_local_section_symbols (abfd));
+
+      name = NULL;
       elfsym.st_size = 0;
       elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
       elfsym.st_other = 0;
@@ -12177,13 +12446,22 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	      elfsym.st_shndx = i;
 	      if (!bfd_link_relocatable (info))
 		elfsym.st_value = o->vma;
-	      if (elf_link_output_symstrtab (&flinfo, NULL, &elfsym, o,
+	      if (name_local_sections)
+		name = o->name;
+	      if (elf_link_output_symstrtab (&flinfo, name, &elfsym, o,
 					     NULL) != 1)
 		goto error_return;
 	    }
 	}
     }
 
+  /* On some targets like Irix 5 the symbol split between local and global
+     ones recorded in the sh_info field needs to be done between section
+     and all other symbols.  */
+  if (bed->elf_backend_elfsym_local_is_section
+      && bed->elf_backend_elfsym_local_is_section (abfd))
+    symtab_hdr->sh_info = bfd_get_symcount (abfd);
+
   /* Allocate some memory to hold information read in from the input
      files.  */
   if (max_contents_size != 0)
@@ -12241,7 +12519,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
 
   if (htab->tls_sec)
     {
-      bfd_vma base, end = 0;
+      bfd_vma base, end = 0;  /* Both bytes.  */
       asection *sec;
 
       for (sec = htab->tls_sec;
@@ -12249,6 +12527,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	   sec = sec->next)
 	{
 	  bfd_size_type size = sec->size;
+	  unsigned int opb = bfd_octets_per_byte (abfd, sec);
 
 	  if (size == 0
 	      && (sec->flags & SEC_HAS_CONTENTS) == 0)
@@ -12256,9 +12535,9 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	      struct bfd_link_order *ord = sec->map_tail.link_order;
 
 	      if (ord != NULL)
-		size = ord->offset + ord->size;
+		size = ord->offset * opb + ord->size;
 	    }
-	  end = sec->vma + size;
+	  end = sec->vma + size / opb;
 	}
       base = htab->tls_sec->vma;
       /* Only align end of TLS section if static TLS doesn't have special
@@ -12367,14 +12646,15 @@ bfd_elf_final_link (bfd *abfd, struct bf
   if (!info->reduce_memory_overheads)
     {
       for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
-	if (bfd_get_flavour (sub) == bfd_target_elf_flavour
-	    && elf_tdata (sub)->symbuf)
+	if (bfd_get_flavour (sub) == bfd_target_elf_flavour)
 	  {
 	    free (elf_tdata (sub)->symbuf);
 	    elf_tdata (sub)->symbuf = NULL;
 	  }
     }
 
+  ret = TRUE;
+
   /* Output any global symbols that got converted to local in a
      version script or due to symbol visibility.  We do this in a
      separate step since ELF requires all local symbols to appear
@@ -12387,7 +12667,10 @@ bfd_elf_final_link (bfd *abfd, struct bf
   eoinfo.file_sym_done = FALSE;
   bfd_hash_traverse (&info->hash->table, elf_link_output_extsym, &eoinfo);
   if (eoinfo.failed)
-    return FALSE;
+    {
+      ret = FALSE;
+      goto return_local_hash_table;
+    }
 
   /* If backend needs to output some local symbols not present in the hash
      table, do it now.  */
@@ -12401,7 +12684,10 @@ bfd_elf_final_link (bfd *abfd, struct bf
       if (! ((*bed->elf_backend_output_arch_local_syms)
 	     (abfd, info, &flinfo,
 	      (out_sym_func) elf_link_output_symstrtab)))
-	return FALSE;
+	{
+	  ret = FALSE;
+	  goto return_local_hash_table;
+	}
     }
 
   /* That wrote out all the local symbols.  Finish up the symbol table
@@ -12410,7 +12696,8 @@ bfd_elf_final_link (bfd *abfd, struct bf
      converted to local in a version script.  */
 
   /* The sh_info field records the index of the first non local symbol.  */
-  symtab_hdr->sh_info = bfd_get_symcount (abfd);
+  if (!symtab_hdr->sh_info)
+    symtab_hdr->sh_info = bfd_get_symcount (abfd);
 
   if (dynamic
       && htab->dynsym != NULL
@@ -12447,7 +12734,10 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	      BFD_ASSERT (indx > 0);
 	      sym.st_shndx = indx;
 	      if (! check_dynsym (abfd, &sym))
-		return FALSE;
+		{
+		  ret = FALSE;
+		  goto return_local_hash_table;
+		}
 	      sym.st_value = s->vma;
 	      dest = dynsym + dynindx * bed->s->sizeof_sym;
 	      bed->s->swap_symbol_out (abfd, &sym, dest, 0);
@@ -12468,15 +12758,21 @@ bfd_elf_final_link (bfd *abfd, struct bf
 		 the original st_name with the dynstr_index.  */
 	      sym = e->isym;
 	      sym.st_other &= ~ELF_ST_VISIBILITY (-1);
+	      sym.st_shndx = SHN_UNDEF;
 
 	      s = bfd_section_from_elf_index (e->input_bfd,
 					      e->isym.st_shndx);
-	      if (s != NULL)
+	      if (s != NULL
+		  && s->output_section != NULL
+		  && elf_section_data (s->output_section) != NULL)
 		{
 		  sym.st_shndx =
 		    elf_section_data (s->output_section)->this_idx;
 		  if (! check_dynsym (abfd, &sym))
-		    return FALSE;
+		    {
+		      ret = FALSE;
+		      goto return_local_hash_table;
+		    }
 		  sym.st_value = (s->output_section->vma
 				  + s->output_offset
 				  + e->isym.st_value);
@@ -12494,7 +12790,10 @@ bfd_elf_final_link (bfd *abfd, struct bf
   eoinfo.flinfo = &flinfo;
   bfd_hash_traverse (&info->hash->table, elf_link_output_extsym, &eoinfo);
   if (eoinfo.failed)
-    return FALSE;
+    {
+      ret = FALSE;
+      goto return_local_hash_table;
+    }
 
   /* If backend needs to output some symbols not present in the hash
      table, do it now.  */
@@ -12508,7 +12807,10 @@ bfd_elf_final_link (bfd *abfd, struct bf
       if (! ((*bed->elf_backend_output_arch_syms)
 	     (abfd, info, &flinfo,
 	      (out_sym_func) elf_link_output_symstrtab)))
-	return FALSE;
+	{
+	  ret = FALSE;
+	  goto return_local_hash_table;
+	}
     }
 
   /* Finalize the .strtab section.  */
@@ -12516,7 +12818,10 @@ bfd_elf_final_link (bfd *abfd, struct bf
 
   /* Swap out the .strtab section. */
   if (!elf_link_swap_symbols_out (&flinfo))
-    return FALSE;
+    {
+      ret = FALSE;
+      goto return_local_hash_table;
+    }
 
   /* Now we know the size of the symtab section.  */
   if (bfd_get_symcount (abfd) > 0)
@@ -12543,7 +12848,10 @@ bfd_elf_final_link (bfd *abfd, struct bf
 
 	      if (bfd_seek (abfd, symtab_shndx_hdr->sh_offset, SEEK_SET) != 0
 		  || (bfd_bwrite (flinfo.symshndxbuf, amt, abfd) != amt))
-		return FALSE;
+		{
+		  ret = FALSE;
+		  goto return_local_hash_table;
+		}
 	    }
 	}
 
@@ -12565,14 +12873,18 @@ bfd_elf_final_link (bfd *abfd, struct bf
 
       if (bfd_seek (abfd, symstrtab_hdr->sh_offset, SEEK_SET) != 0
 	  || ! _bfd_elf_strtab_emit (abfd, flinfo.symstrtab))
-	return FALSE;
+	{
+	  ret = FALSE;
+	  goto return_local_hash_table;
+	}
     }
 
   if (info->out_implib_bfd && !elf_output_implib (abfd, info))
     {
       _bfd_error_handler (_("%pB: failed to generate import library"),
 			  info->out_implib_bfd);
-      return FALSE;
+      ret = FALSE;
+      goto return_local_hash_table;
     }
 
   /* Adjust the relocs to have the correct symbol indices.  */
@@ -12587,10 +12899,16 @@ bfd_elf_final_link (bfd *abfd, struct bf
       sort = bed->sort_relocs_p == NULL || (*bed->sort_relocs_p) (o);
       if (esdo->rel.hdr != NULL
 	  && !elf_link_adjust_relocs (abfd, o, &esdo->rel, sort, info))
-	return FALSE;
+	{
+	  ret = FALSE;
+	  goto return_local_hash_table;
+	}
       if (esdo->rela.hdr != NULL
 	  && !elf_link_adjust_relocs (abfd, o, &esdo->rela, sort, info))
-	return FALSE;
+	{
+	  ret = FALSE;
+	  goto return_local_hash_table;
+	}
 
       /* Set the reloc_count field to 0 to prevent write_relocs from
 	 trying to swap the relocs out itself.  */
@@ -12771,6 +13089,8 @@ bfd_elf_final_link (bfd *abfd, struct bf
 
 	      if (bed->dtrel_excludes_plt && htab->srelplt != NULL)
 		{
+		  unsigned int opb = bfd_octets_per_byte (abfd, o);
+
 		  /* Don't count procedure linkage table relocs in the
 		     overall reloc count.  */
 		  sh_size -= htab->srelplt->size;
@@ -12790,7 +13110,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
 		  /* If .rela.plt is the first .rela section, exclude
 		     it from DT_RELA.  */
 		  else if (sh_addr == (htab->srelplt->output_section->vma
-				       + htab->srelplt->output_offset))
+				       + htab->srelplt->output_offset) * opb)
 		    sh_addr += htab->srelplt->size;
 		}
 
@@ -12811,8 +13131,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	goto error_return;
 
       /* Check for DT_TEXTREL (late, in case the backend removes it).  */
-      if (((info->warn_shared_textrel && bfd_link_pic (info))
-	   || info->error_textrel)
+      if (bfd_link_textrel_check (info)
 	  && (o = bfd_get_linker_section (dynobj, ".dynamic")) != NULL)
 	{
 	  bfd_byte *dyncon, *dynconend;
@@ -12827,12 +13146,15 @@ bfd_elf_final_link (bfd *abfd, struct bf
 
 	      if (dyn.d_tag == DT_TEXTREL)
 		{
-		  if (info->error_textrel)
+		  if (info->textrel_check == textrel_check_error)
 		    info->callbacks->einfo
 		      (_("%P%X: read-only segment has dynamic relocations\n"));
+		  else if (bfd_link_dll (info))
+		    info->callbacks->einfo
+		      (_("%P: warning: creating DT_TEXTREL in a shared object\n"));
 		  else
 		    info->callbacks->einfo
-		      (_("%P: warning: creating a DT_TEXTREL in a shared object\n"));
+		      (_("%P: warning: creating DT_TEXTREL in a PIE\n"));
 		  break;
 		}
 	    }
@@ -12905,17 +13227,25 @@ bfd_elf_final_link (bfd *abfd, struct bf
     {
       bfd_byte *contents = (bfd_byte *) bfd_malloc (attr_size);
       if (contents == NULL)
-	return FALSE;	/* Bail out and fail.  */
+	{
+	  /* Bail out and fail.  */
+	  ret = FALSE;
+	  goto return_local_hash_table;
+	}
       bfd_elf_set_obj_attr_contents (abfd, contents, attr_size);
       bfd_set_section_contents (abfd, attr_section, contents, 0, attr_size);
       free (contents);
     }
 
-  return TRUE;
+ return_local_hash_table:
+  if (info->unique_symbol)
+    bfd_hash_table_free (&flinfo.local_hash_table);
+  return ret;
 
  error_return:
   elf_final_link_free (abfd, &flinfo);
-  return FALSE;
+  ret = FALSE;
+  goto return_local_hash_table;
 }
 
 /* Initialize COOKIE for input bfd ABFD.  */
@@ -12974,8 +13304,7 @@ fini_reloc_cookie (struct elf_reloc_cook
   Elf_Internal_Shdr *symtab_hdr;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-  if (cookie->locsyms != NULL
-      && symtab_hdr->contents != (unsigned char *) cookie->locsyms)
+  if (symtab_hdr->contents != (unsigned char *) cookie->locsyms)
     free (cookie->locsyms);
 }
 
@@ -13012,7 +13341,7 @@ static void
 fini_reloc_cookie_rels (struct elf_reloc_cookie *cookie,
 			asection *sec)
 {
-  if (cookie->rels && elf_section_data (sec)->relocs != cookie->rels)
+  if (elf_section_data (sec)->relocs != cookie->rels)
     free (cookie->rels);
 }
 
@@ -13118,7 +13447,7 @@ _bfd_elf_gc_mark_rsec (struct bfd_link_i
 		       bfd_boolean *start_stop)
 {
   unsigned long r_symndx;
-  struct elf_link_hash_entry *h;
+  struct elf_link_hash_entry *h, *hw;
 
   r_symndx = cookie->rel->r_info >> cookie->r_sym_shift;
   if (r_symndx == STN_UNDEF)
@@ -13138,12 +13467,16 @@ _bfd_elf_gc_mark_rsec (struct bfd_link_i
 	     || h->root.type == bfd_link_hash_warning)
 	h = (struct elf_link_hash_entry *) h->root.u.i.link;
       h->mark = 1;
-      /* If this symbol is weak and there is a non-weak definition, we
-	 keep the non-weak definition because many backends put
-	 dynamic reloc info on the non-weak definition for code
-	 handling copy relocs.  */
-      if (h->is_weakalias)
-	weakdef (h)->mark = 1;
+      /* Keep all aliases of the symbol too.  If an object symbol
+	 needs to be copied into .dynbss then all of its aliases
+	 should be present as dynamic symbols, not just the one used
+	 on the copy relocation.  */
+      hw = h;
+      while (hw->is_weakalias)
+	{
+	  hw = hw->u.alias;
+	  hw->mark = 1;
+	}
 
       if (start_stop != NULL)
 	{
@@ -13307,7 +13640,7 @@ _bfd_elf_gc_mark_debug_special_section_g
 
 bfd_boolean
 _bfd_elf_gc_mark_extra_sections (struct bfd_link_info *info,
-				 elf_gc_mark_hook_fn mark_hook ATTRIBUTE_UNUSED)
+				 elf_gc_mark_hook_fn mark_hook)
 {
   bfd *ibfd;
 
@@ -13336,11 +13669,33 @@ _bfd_elf_gc_mark_extra_sections (struct
 		   && (isec->flags & SEC_ALLOC) != 0
 		   && elf_section_type (isec) != SHT_NOTE)
 	    some_kept = TRUE;
+	  else
+	    {
+	      /* Since all sections, except for backend specific ones,
+		 have been garbage collected, call mark_hook on this
+		 section if any of its linked-to sections is marked.  */
+	      asection *linked_to_sec = elf_linked_to_section (isec);
+	      for (; linked_to_sec != NULL;
+		   linked_to_sec = elf_linked_to_section (linked_to_sec))
+		if (linked_to_sec->gc_mark)
+		  {
+		    if (!_bfd_elf_gc_mark (info, isec, mark_hook))
+		      return FALSE;
+		    break;
+		  }
+	    }
 
 	  if (!debug_frag_seen
 	      && (isec->flags & SEC_DEBUGGING)
 	      && CONST_STRNEQ (isec->name, ".debug_line."))
 	    debug_frag_seen = TRUE;
+	  else if (strcmp (bfd_section_name (isec),
+			   "__patchable_function_entries") == 0
+		   && elf_linked_to_section (isec) == NULL)
+	      info->callbacks->einfo (_("%F%P: %pB(%pA): error: "
+					"need linked-to section "
+					"for --gc-sections\n"),
+				      isec->owner, isec);
 	}
 
       /* If no non-note alloc section in this file will be kept, then
@@ -13350,14 +13705,16 @@ _bfd_elf_gc_mark_extra_sections (struct
 
       /* Keep debug and special sections like .comment when they are
 	 not part of a group.  Also keep section groups that contain
-	 just debug sections or special sections.  */
+	 just debug sections or special sections.  NB: Sections with
+	 linked-to section has been handled above.  */
       for (isec = ibfd->sections; isec != NULL; isec = isec->next)
 	{
 	  if ((isec->flags & SEC_GROUP) != 0)
 	    _bfd_elf_gc_mark_debug_special_section_group (isec);
 	  else if (((isec->flags & SEC_DEBUGGING) != 0
 		    || (isec->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)
-		   && elf_next_in_group (isec) == NULL)
+		   && elf_next_in_group (isec) == NULL
+		   && elf_linked_to_section (isec) == NULL)
 	    isec->gc_mark = 1;
 	  if (isec->gc_mark && (isec->flags & SEC_DEBUGGING) != 0)
 	    has_kept_debug_info = TRUE;
@@ -13617,8 +13974,7 @@ _bfd_elf_gc_keep (struct bfd_link_info *
       if (h != NULL
 	  && (h->root.type == bfd_link_hash_defined
 	      || h->root.type == bfd_link_hash_defweak)
-	  && !bfd_is_abs_section (h->root.u.def.section)
-	  && !bfd_is_und_section (h->root.u.def.section))
+	  && !bfd_is_const_section (h->root.u.def.section))
 	h->root.u.def.section->flags |= SEC_KEEP;
     }
 }
@@ -14217,7 +14573,7 @@ bfd_elf_discard_info (bfd *output_bfd, s
     {
       asection *i;
       int eh_changed = 0;
-      unsigned int eh_alignment;
+      unsigned int eh_alignment;  /* Octets.  */
 
       for (i = o->map_head.s; i != NULL; i = i->map_head.s)
 	{
@@ -14244,7 +14600,8 @@ bfd_elf_discard_info (bfd *output_bfd, s
 	  fini_reloc_cookie_for_section (&cookie, i);
 	}
 
-      eh_alignment = 1 << o->alignment_power;
+      eh_alignment = ((1 << o->alignment_power)
+		      * bfd_octets_per_byte (output_bfd, o));
       /* Skip over zero terminator, and prevent empty sections from
 	 adding alignment padding at the end.  */
       for (i = o->map_tail.s; i != NULL; i = i->map_tail.s)
@@ -14371,7 +14728,8 @@ _bfd_elf_section_already_linked (bfd *ab
       if (((flags & SEC_GROUP) == (l->sec->flags & SEC_GROUP)
 	   && ((flags & SEC_GROUP) != 0
 	       || strcmp (name, l->sec->name) == 0))
-	  || (l->sec->owner->flags & BFD_PLUGIN) != 0)
+	  || (l->sec->owner->flags & BFD_PLUGIN) != 0
+	  || (sec->owner->flags & BFD_PLUGIN) != 0)
 	{
 	  /* The section has already been linked.  See if we should
 	     issue a warning.  */
@@ -14647,12 +15005,16 @@ bfd_elf_define_start_stop (struct bfd_li
 
   h = elf_link_hash_lookup (elf_hash_table (info), symbol,
 			    FALSE, FALSE, TRUE);
+  /* NB: Common symbols will be turned into definition later.  */
   if (h != NULL
       && (h->root.type == bfd_link_hash_undefined
 	  || h->root.type == bfd_link_hash_undefweak
-	  || ((h->ref_regular || h->def_dynamic) && !h->def_regular)))
+	  || ((h->ref_regular || h->def_dynamic)
+	      && !h->def_regular
+	      && h->root.type != bfd_link_hash_common)))
     {
       bfd_boolean was_dynamic = h->ref_dynamic || h->def_dynamic;
+      h->verinfo.verdef = NULL;
       h->root.type = bfd_link_hash_defined;
       h->root.u.def.section = sec;
       h->root.u.def.value = 0;
@@ -14670,7 +15032,8 @@ bfd_elf_define_start_stop (struct bfd_li
       else
 	{
 	  if (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
-	    h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_PROTECTED;
+	    h->other = ((h->other & ~ELF_ST_VISIBILITY (-1))
+			| info->start_stop_visibility);
 	  if (was_dynamic)
 	    bfd_elf_link_record_dynamic_symbol (info, h);
 	}
@@ -14678,3 +15041,147 @@ bfd_elf_define_start_stop (struct bfd_li
     }
   return NULL;
 }
+
+/* Find dynamic relocs for H that apply to read-only sections.  */
+
+asection *
+_bfd_elf_readonly_dynrelocs (struct elf_link_hash_entry *h)
+{
+  struct elf_dyn_relocs *p;
+
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
+    {
+      asection *s = p->sec->output_section;
+
+      if (s != NULL && (s->flags & SEC_READONLY) != 0)
+	return p->sec;
+    }
+  return NULL;
+}
+
+/* Set DF_TEXTREL if we find any dynamic relocs that apply to
+   read-only sections.  */
+
+bfd_boolean
+_bfd_elf_maybe_set_textrel (struct elf_link_hash_entry *h, void *inf)
+{
+  asection *sec;
+
+  if (h->root.type == bfd_link_hash_indirect)
+    return TRUE;
+
+  sec = _bfd_elf_readonly_dynrelocs (h);
+  if (sec != NULL)
+    {
+      struct bfd_link_info *info = (struct bfd_link_info *) inf;
+
+      info->flags |= DF_TEXTREL;
+      /* xgettext:c-format */
+      info->callbacks->minfo (_("%pB: dynamic relocation against `%pT' "
+				"in read-only section `%pA'\n"),
+			      sec->owner, h->root.root.string, sec);
+
+      if (bfd_link_textrel_check (info))
+	/* xgettext:c-format */
+	info->callbacks->einfo (_("%P: %pB: warning: relocation against `%s' "
+				  "in read-only section `%pA'\n"),
+				sec->owner, h->root.root.string, sec);
+
+      /* Not an error, just cut short the traversal.  */
+      return FALSE;
+    }
+  return TRUE;
+}
+
+/* Add dynamic tags.  */
+
+bfd_boolean
+_bfd_elf_add_dynamic_tags (bfd *output_bfd, struct bfd_link_info *info,
+			   bfd_boolean need_dynamic_reloc)
+{
+  struct elf_link_hash_table *htab = elf_hash_table (info);
+
+  if (htab->dynamic_sections_created)
+    {
+      /* Add some entries to the .dynamic section.  We fill in the
+	 values later, in finish_dynamic_sections, but we must add
+	 the entries now so that we get the correct size for the
+	 .dynamic section.  The DT_DEBUG entry is filled in by the
+	 dynamic linker and used by the debugger.  */
+#define add_dynamic_entry(TAG, VAL) \
+  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
+
+      const struct elf_backend_data *bed
+	= get_elf_backend_data (output_bfd);
+
+      if (bfd_link_executable (info))
+	{
+	  if (!add_dynamic_entry (DT_DEBUG, 0))
+	    return FALSE;
+	}
+
+      if (htab->dt_pltgot_required || htab->splt->size != 0)
+	{
+	  /* DT_PLTGOT is used by prelink even if there is no PLT
+	     relocation.  */
+	  if (!add_dynamic_entry (DT_PLTGOT, 0))
+	    return FALSE;
+	}
+
+      if (htab->dt_jmprel_required || htab->srelplt->size != 0)
+	{
+	  if (!add_dynamic_entry (DT_PLTRELSZ, 0)
+	      || !add_dynamic_entry (DT_PLTREL,
+				     (bed->rela_plts_and_copies_p
+				      ? DT_RELA : DT_REL))
+	      || !add_dynamic_entry (DT_JMPREL, 0))
+	    return FALSE;
+	}
+
+      if (htab->tlsdesc_plt
+	  && (!add_dynamic_entry (DT_TLSDESC_PLT, 0)
+	      || !add_dynamic_entry (DT_TLSDESC_GOT, 0)))
+	return FALSE;
+
+      if (need_dynamic_reloc)
+	{
+	  if (bed->rela_plts_and_copies_p)
+	    {
+	      if (!add_dynamic_entry (DT_RELA, 0)
+		  || !add_dynamic_entry (DT_RELASZ, 0)
+		  || !add_dynamic_entry (DT_RELAENT,
+					 bed->s->sizeof_rela))
+		return FALSE;
+	    }
+	  else
+	    {
+	      if (!add_dynamic_entry (DT_REL, 0)
+		  || !add_dynamic_entry (DT_RELSZ, 0)
+		  || !add_dynamic_entry (DT_RELENT,
+					 bed->s->sizeof_rel))
+		return FALSE;
+	    }
+
+	  /* If any dynamic relocs apply to a read-only section,
+	     then we need a DT_TEXTREL entry.  */
+	  if ((info->flags & DF_TEXTREL) == 0)
+	    elf_link_hash_traverse (htab, _bfd_elf_maybe_set_textrel,
+				    info);
+
+	  if ((info->flags & DF_TEXTREL) != 0)
+	    {
+	      if (htab->ifunc_resolvers)
+		info->callbacks->einfo
+		  (_("%P: warning: GNU indirect functions with DT_TEXTREL "
+		     "may result in a segfault at runtime; recompile with %s\n"),
+		   bfd_link_dll (info) ? "-fPIC" : "-fPIE");
+
+	      if (!add_dynamic_entry (DT_TEXTREL, 0))
+		return FALSE;
+	    }
+	}
+    }
+#undef add_dynamic_entry
+
+  return TRUE;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-linker-x86.h ./bfd/elf-linker-x86.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-linker-x86.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-linker-x86.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* x86-specific ELF linker support between ld and bfd.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -49,6 +49,12 @@ struct elf_linker_x86_params
   /* TRUE if generate a 1-byte NOP as suffix for x86 call instruction.  */
   unsigned int call_nop_as_suffix : 1;
 
+  /* TRUE if -static is passed at command-line before all input files.  */
+  unsigned int static_before_all_inputs : 1;
+
+  /* TRUE if --dynamic-linker is passed at command-line.  */
+  unsigned int has_dynamic_linker : 1;
+
   /* Report missing IBT and SHSTK properties.  */
   enum elf_x86_cet_report cet_report;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-linux-core.h ./bfd/elf-linux-core.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-linux-core.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-linux-core.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Definitions for PRPSINFO structures under ELF on GNU/Linux.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-m10200.c ./bfd/elf-m10200.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-m10200.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-m10200.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Matsushita 10200 specific support for 32-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -1207,21 +1207,17 @@ mn10200_elf_relax_section (bfd *abfd,
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
@@ -1355,10 +1351,8 @@ mn10200_elf_get_relocated_section_conten
 				     isymbuf, sections))
 	goto error_return;
 
-      if (sections != NULL)
-	free (sections);
-      if (isymbuf != NULL
-	  && symtab_hdr->contents != (unsigned char *) isymbuf)
+      free (sections);
+      if (symtab_hdr->contents != (unsigned char *) isymbuf)
 	free (isymbuf);
       if (elf_section_data (input_section)->relocs != internal_relocs)
 	free (internal_relocs);
@@ -1367,13 +1361,10 @@ mn10200_elf_get_relocated_section_conten
   return data;
 
  error_return:
-  if (sections != NULL)
-    free (sections);
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  free (sections);
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && elf_section_data (input_section)->relocs != internal_relocs)
+  if (elf_section_data (input_section)->relocs != internal_relocs)
     free (internal_relocs);
   return NULL;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-m10300.c ./bfd/elf-m10300.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-m10300.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-m10300.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Matsushita 10300 specific support for 32-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -128,8 +128,9 @@ struct elf_mn10300_obj_tdata
 /* Get the MN10300 ELF linker hash table from a link_info structure.  */
 
 #define elf32_mn10300_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == MN10300_ELF_DATA ? ((struct elf32_mn10300_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == MN10300_ELF_DATA)	\
+   ? (struct elf32_mn10300_link_hash_table *) (p)->hash : NULL)
 
 #define elf32_mn10300_link_hash_traverse(table, func, info)		\
   (elf_link_hash_traverse						\
@@ -1372,7 +1373,7 @@ mn10300_elf_check_relocs (bfd *abfd,
 
   result = TRUE;
  fail:
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
 
   return result;
@@ -2066,12 +2067,12 @@ mn10300_elf_relocate_section (bfd *outpu
 		      && elf_hash_table (info)->dynamic_sections_created
 		      && !SYMBOL_REFERENCES_LOCAL (info, hh))
 		  || (r_type == R_MN10300_32
+		      && !SYMBOL_REFERENCES_LOCAL (info, hh)
 		      /* _32 relocs in executables force _COPY relocs,
 			 such that the address of the symbol ends up
 			 being local.  */
-		      && !bfd_link_executable (info)
-		      && !SYMBOL_REFERENCES_LOCAL (info, hh)
-		      && ((input_section->flags & SEC_ALLOC) != 0
+		      && (((input_section->flags & SEC_ALLOC) != 0
+			   && !bfd_link_executable (info))
 			  /* DWARF will emit R_MN10300_32 relocations
 			     in its sections against symbols defined
 			     externally in shared libraries.  We can't
@@ -2417,17 +2418,19 @@ mn10300_elf_relax_delete_bytes (bfd *abf
 	 are deleting.  */
       for (; irel < irelend; irel++)
 	{
-	  int alignment = 1 << irel->r_addend;
-
 	  if (ELF32_R_TYPE (irel->r_info) == (int) R_MN10300_ALIGN
 	      && irel->r_offset > addr
-	      && irel->r_offset < toaddr
-	      && (count < alignment
-		  || alignment % count != 0))
+	      && irel->r_offset < toaddr)
 	    {
-	      irelalign = irel;
-	      toaddr = irel->r_offset;
-	      break;
+	      int alignment = 1 << irel->r_addend;
+
+	      if (count < alignment
+		  || alignment % count != 0)
+		{
+		  irelalign = irel;
+		  toaddr = irel->r_offset;
+		  break;
+		}
 	    }
 	}
     }
@@ -2743,7 +2746,7 @@ mn10300_elf_relax_section (bfd *abfd,
 			  /* A local symbol.  */
 			  Elf_Internal_Sym *isym;
 			  struct elf_link_hash_table *elftab;
-			  bfd_size_type amt;
+			  size_t amt;
 
 			  isym = isymbuf + r_index;
 			  if (isym->st_shndx == SHN_UNDEF)
@@ -2844,7 +2847,7 @@ mn10300_elf_relax_section (bfd *abfd,
 			  && ELF_ST_TYPE (isym->st_info) == STT_FUNC)
 			{
 			  struct elf_link_hash_table *elftab;
-			  bfd_size_type amt;
+			  size_t amt;
 			  struct elf_link_hash_entry **lhashes = hashes;
 
 			  /* Skip a local symbol if it aliases a
@@ -2912,8 +2915,7 @@ mn10300_elf_relax_section (bfd *abfd,
 		}
 
 	      /* Cache or free any memory we allocated for the relocs.  */
-	      if (internal_relocs != NULL
-		  && elf_section_data (section)->relocs != internal_relocs)
+	      if (elf_section_data (section)->relocs != internal_relocs)
 		free (internal_relocs);
 	      internal_relocs = NULL;
 
@@ -3069,7 +3071,7 @@ mn10300_elf_relax_section (bfd *abfd,
 		  const char *sym_name;
 		  char *new_name;
 		  struct elf_link_hash_table *elftab;
-		  bfd_size_type amt;
+		  size_t amt;
 
 		  if (isym->st_shndx != sec_shndx)
 		    continue;
@@ -3222,8 +3224,7 @@ mn10300_elf_relax_section (bfd *abfd,
 		}
 
 	      /* Cache or free any memory we allocated for the relocs.  */
-	      if (internal_relocs != NULL
-		  && elf_section_data (section)->relocs != internal_relocs)
+	      if (elf_section_data (section)->relocs != internal_relocs)
 		free (internal_relocs);
 	      internal_relocs = NULL;
 
@@ -3933,7 +3934,7 @@ mn10300_elf_relax_section (bfd *abfd,
 	  /* See if the value will fit in 24 bits.
 	     We allow any 16bit match here.  We prune those we can't
 	     handle below.  */
-	  if ((long) value < 0x7fffff && (long) value > -0x800000)
+	  if (value + 0x800000 < 0x1000000 && irel->r_offset >= 3)
 	    {
 	      unsigned char code;
 
@@ -4004,7 +4005,7 @@ mn10300_elf_relax_section (bfd *abfd,
 	  /* See if the value will fit in 16 bits.
 	     We allow any 16bit match here.  We prune those we can't
 	     handle below.  */
-	  if ((long) value < 0x7fff && (long) value > -0x8000)
+	  if (value + 0x8000 < 0x10000 && irel->r_offset >= 2)
 	    {
 	      unsigned char code;
 
@@ -4391,21 +4392,17 @@ mn10300_elf_relax_section (bfd *abfd,
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (section)->this_hdr.contents != contents)
+  if (elf_section_data (section)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (section)->relocs != internal_relocs)
+  if (elf_section_data (section)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
@@ -4494,9 +4491,8 @@ mn10300_elf_get_relocated_section_conten
 					  isymbuf, sections))
 	goto error_return;
 
-      if (sections != NULL)
-	free (sections);
-      if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+      free (sections);
+      if (symtab_hdr->contents != (unsigned char *) isymbuf)
 	free (isymbuf);
       if (internal_relocs != elf_section_data (input_section)->relocs)
 	free (internal_relocs);
@@ -4505,12 +4501,10 @@ mn10300_elf_get_relocated_section_conten
   return data;
 
  error_return:
-  if (sections != NULL)
-    free (sections);
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+  free (sections);
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (internal_relocs != NULL
-      && internal_relocs != elf_section_data (input_section)->relocs)
+  if (internal_relocs != elf_section_data (input_section)->relocs)
     free (internal_relocs);
   return NULL;
 }
@@ -4602,7 +4596,7 @@ static struct bfd_link_hash_table *
 elf32_mn10300_link_hash_table_create (bfd *abfd)
 {
   struct elf32_mn10300_link_hash_table *ret;
-  bfd_size_type amt = sizeof (* ret);
+  size_t amt = sizeof (* ret);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -5021,9 +5015,7 @@ _bfd_mn10300_elf_size_dynamic_sections (
   struct elf32_mn10300_link_hash_table *htab = elf32_mn10300_hash_table (info);
   bfd * dynobj;
   asection * s;
-  bfd_boolean plt;
   bfd_boolean relocs;
-  bfd_boolean reltext;
 
   dynobj = htab->root.dynobj;
   BFD_ASSERT (dynobj != NULL);
@@ -5061,9 +5053,7 @@ _bfd_mn10300_elf_size_dynamic_sections (
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  plt = FALSE;
   relocs = FALSE;
-  reltext = FALSE;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char * name;
@@ -5078,34 +5068,16 @@ _bfd_mn10300_elf_size_dynamic_sections (
       if (streq (name, ".plt"))
 	{
 	  /* Remember whether there is a PLT.  */
-	  plt = s->size != 0;
+	  ;
 	}
       else if (CONST_STRNEQ (name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
-	      asection * target;
-
 	      /* Remember whether there are any reloc sections other
 		 than .rela.plt.  */
 	      if (! streq (name, ".rela.plt"))
-		{
-		  const char * outname;
-
-		  relocs = TRUE;
-
-		  /* If this relocation section applies to a read only
-		     section, then we probably need a DT_TEXTREL
-		     entry.  The entries in the .rela.plt section
-		     really apply to the .got section, which we
-		     created ourselves and so know is not readonly.  */
-		  outname = bfd_section_name (s->output_section);
-		  target = bfd_get_section_by_name (output_bfd, outname + 5);
-		  if (target != NULL
-		      && (target->flags & SEC_READONLY) != 0
-		      && (target->flags & SEC_ALLOC) != 0)
-		    reltext = TRUE;
-		}
+		relocs = TRUE;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -5145,45 +5117,7 @@ _bfd_mn10300_elf_size_dynamic_sections (
 	return FALSE;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in _bfd_mn10300_elf_finish_dynamic_sections,
-	 but we must add the entries now so that we get the correct
-	 size for the .dynamic section.  The DT_DEBUG entry is filled
-	 in by the dynamic linker and used by the debugger.  */
-      if (! bfd_link_pic (info))
-	{
-	  if (!_bfd_elf_add_dynamic_entry (info, DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (plt)
-	{
-	  if (!_bfd_elf_add_dynamic_entry (info, DT_PLTGOT, 0)
-	      || !_bfd_elf_add_dynamic_entry (info, DT_PLTRELSZ, 0)
-	      || !_bfd_elf_add_dynamic_entry (info, DT_PLTREL, DT_RELA)
-	      || !_bfd_elf_add_dynamic_entry (info, DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (relocs)
-	{
-	  if (!_bfd_elf_add_dynamic_entry (info, DT_RELA, 0)
-	      || !_bfd_elf_add_dynamic_entry (info, DT_RELASZ, 0)
-	      || !_bfd_elf_add_dynamic_entry (info, DT_RELAENT,
-					      sizeof (Elf32_External_Rela)))
-	    return FALSE;
-	}
-
-      if (reltext)
-	{
-	  if (!_bfd_elf_add_dynamic_entry (info, DT_TEXTREL, 0))
-	    return FALSE;
-	}
-    }
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfn32-mips.c ./bfd/elfn32-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfn32-mips.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfn32-mips.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* MIPS-specific support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    Most of the information added by Ian Lance Taylor, Cygnus Support,
    <ian@cygnus.com>.
@@ -72,6 +72,8 @@ static bfd_boolean mips_info_to_howto_re
   (bfd *, arelent *, Elf_Internal_Rela *);
 static bfd_boolean mips_elf_sym_is_global
   (bfd *, asymbol *);
+static bfd_boolean mips_elf_n32_elfsym_local_is_section
+  (bfd *);
 static bfd_boolean mips_elf_n32_object_p
   (bfd *);
 static bfd_boolean elf32_mips_grok_prstatus
@@ -3844,6 +3846,14 @@ mips_elf_sym_is_global (bfd *abfd ATTRIB
 	    || bfd_is_und_section (bfd_asymbol_section (sym))
 	    || bfd_is_com_section (bfd_asymbol_section (sym)));
 }
+
+/* Likewise, return TRUE if the symbol table split overall must be
+   between section symbols and all other symbols.  */
+static bfd_boolean
+mips_elf_n32_elfsym_local_is_section (bfd *abfd)
+{
+  return SGI_COMPAT (abfd);
+}
 
 /* Set the right machine number for a MIPS ELF file.  */
 
@@ -4160,6 +4170,8 @@ static const struct ecoff_debug_swap mip
 #define elf_backend_ignore_discarded_relocs \
 					_bfd_mips_elf_ignore_discarded_relocs
 #define elf_backend_write_section	_bfd_mips_elf_write_section
+#define elf_backend_elfsym_local_is_section \
+					mips_elf_n32_elfsym_local_is_section
 #define elf_backend_mips_irix_compat	elf_n32_mips_irix_compat
 #define elf_backend_mips_rtype_to_howto	mips_elf_n32_rtype_to_howto
 #define bfd_elf32_bfd_is_target_special_symbol \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-nacl.c ./bfd/elf-nacl.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-nacl.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-nacl.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Native Client support for ELF
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -156,13 +156,13 @@ nacl_modify_segment_map (bfd *abfd, stru
 		  secdata->this_hdr.sh_addr = sec->vma;
 		  secdata->this_hdr.sh_size = sec->size;
 
-		  newseg = bfd_alloc (abfd,
-				      sizeof *newseg + ((seg->count + 1)
-							* sizeof (asection *)));
+		  newseg
+		    = bfd_alloc (abfd, (sizeof (*newseg)
+					+ seg->count * sizeof (asection *)));
 		  if (newseg == NULL)
 		    return FALSE;
-		  memcpy (newseg, seg,
-			  sizeof *newseg + (seg->count * sizeof (asection *)));
+		  memcpy (newseg, seg, (sizeof (*newseg) - sizeof (asection *)
+					+ seg->count * sizeof (asection *)));
 		  newseg->sections[newseg->count++] = sec;
 		  *m = seg = newseg;
 		}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-nacl.h ./bfd/elf-nacl.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-nacl.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-nacl.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Native Client support for ELF
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfnn-aarch64.c ./bfd/elfnn-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfnn-aarch64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfnn-aarch64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* AArch64-specific support for NN-bit ELF.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -2570,9 +2570,6 @@ struct elf_aarch64_link_hash_entry
 {
   struct elf_link_hash_entry root;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   /* Since PLT entries have variable size, we need to record the
      index into .got.plt instead of recomputing it from the PLT
      offset.  */
@@ -2646,9 +2643,6 @@ struct elf_aarch64_link_hash_table
   /* The bytes of the subsequent PLT entry.  */
   const bfd_byte *plt_entry;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* For convenience in allocate_dynrelocs.  */
   bfd *obfd;
 
@@ -2685,20 +2679,9 @@ struct elf_aarch64_link_hash_table
   /* JUMP_SLOT relocs for variant PCS symbols may be present.  */
   int variant_pcs;
 
-  /* The offset into splt of the PLT entry for the TLS descriptor
-     resolver.  Special values are 0, if not necessary (or not found
-     to be necessary yet), and -1 if needed but not determined
-     yet.  */
-  bfd_vma tlsdesc_plt;
-
   /* The number of bytes in the PLT enty for the TLS descriptor.  */
   bfd_size_type tlsdesc_plt_entry_size;
 
-  /* The GOT offset for the lazy trampoline.  Communicated to the
-     loader via DT_TLSDESC_GOT.  The magic value (bfd_vma) -1
-     indicates an offset is not allocated.  */
-  bfd_vma dt_tlsdesc_got;
-
   /* Used by local STT_GNU_IFUNC symbols.  */
   htab_t loc_hash_table;
   void * loc_hash_memory;
@@ -2728,7 +2711,6 @@ elfNN_aarch64_link_hash_newfunc (struct
 				     table, string));
   if (ret != NULL)
     {
-      ret->dyn_relocs = NULL;
       ret->got_type = GOT_UNKNOWN;
       ret->plt_got_offset = (bfd_vma) - 1;
       ret->stub_cache = NULL;
@@ -2855,37 +2837,6 @@ elfNN_aarch64_copy_indirect_symbol (stru
   edir = (struct elf_aarch64_link_hash_entry *) dir;
   eind = (struct elf_aarch64_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL;)
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect)
     {
       /* Copy over PLT info.  */
@@ -2947,7 +2898,7 @@ static struct bfd_link_hash_table *
 elfNN_aarch64_link_hash_table_create (bfd *abfd)
 {
   struct elf_aarch64_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct elf_aarch64_link_hash_table);
+  size_t amt = sizeof (struct elf_aarch64_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -2967,7 +2918,7 @@ elfNN_aarch64_link_hash_table_create (bf
   ret->plt_entry = elfNN_aarch64_small_plt_entry;
   ret->tlsdesc_plt_entry_size = PLT_TLSDESC_ENTRY_SIZE;
   ret->obfd = abfd;
-  ret->dt_tlsdesc_got = (bfd_vma) - 1;
+  ret->root.tlsdesc_got = (bfd_vma) - 1;
 
   if (!bfd_hash_table_init (&ret->stub_hash_table, stub_hash_newfunc,
 			    sizeof (struct elf_aarch64_stub_hash_entry)))
@@ -3278,7 +3229,7 @@ _bfd_aarch64_add_stub_entry_after (const
 
 static bfd_boolean
 aarch64_build_one_stub (struct bfd_hash_entry *gen_entry,
-			void *in_arg ATTRIBUTE_UNUSED)
+			void *in_arg)
 {
   struct elf_aarch64_stub_hash_entry *stub_entry;
   asection *stub_sec;
@@ -3291,10 +3242,22 @@ aarch64_build_one_stub (struct bfd_hash_
   unsigned int template_size;
   const uint32_t *template;
   unsigned int i;
+  struct bfd_link_info *info;
 
   /* Massage our args to the form they really have.  */
   stub_entry = (struct elf_aarch64_stub_hash_entry *) gen_entry;
 
+  info = (struct bfd_link_info *) in_arg;
+
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (stub_entry->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+			      "Retry without "
+			      "--enable-non-contiguous-regions.\n"),
+			    stub_entry->target_section);
+
   stub_sec = stub_entry->stub_sec;
 
   /* Make a note of the offset within the stubs for this entry.  */
@@ -3456,7 +3419,7 @@ elfNN_aarch64_setup_section_lists (bfd *
   unsigned int top_id, top_index;
   asection *section;
   asection **input_list, **list;
-  bfd_size_type amt;
+  size_t amt;
   struct elf_aarch64_link_hash_table *htab =
     elf_aarch64_hash_table (info);
 
@@ -3534,7 +3497,7 @@ elfNN_aarch64_next_input_section (struct
     {
       asection **list = htab->input_list + isec->output_section->index;
 
-      if (*list != bfd_abs_section_ptr)
+      if (*list != bfd_abs_section_ptr && (isec->flags & SEC_CODE) != 0)
 	{
 	  /* Steal the link_sec pointer for our list.  */
 	  /* This happens to make the list in reverse order,
@@ -3555,68 +3518,97 @@ elfNN_aarch64_next_input_section (struct
 static void
 group_sections (struct elf_aarch64_link_hash_table *htab,
 		bfd_size_type stub_group_size,
-		bfd_boolean stubs_always_before_branch)
+		bfd_boolean stubs_always_after_branch)
 {
-  asection **list = htab->input_list + htab->top_index;
+  asection **list = htab->input_list;
 
   do
     {
       asection *tail = *list;
+      asection *head;
 
       if (tail == bfd_abs_section_ptr)
 	continue;
 
+      /* Reverse the list: we must avoid placing stubs at the
+	 beginning of the section because the beginning of the text
+	 section may be required for an interrupt vector in bare metal
+	 code.  */
+#define NEXT_SEC PREV_SEC
+      head = NULL;
       while (tail != NULL)
 	{
-	  asection *curr;
-	  asection *prev;
-	  bfd_size_type total;
+	  /* Pop from tail.  */
+	  asection *item = tail;
+	  tail = PREV_SEC (item);
 
-	  curr = tail;
-	  total = tail->size;
-	  while ((prev = PREV_SEC (curr)) != NULL
-		 && ((total += curr->output_offset - prev->output_offset)
-		     < stub_group_size))
-	    curr = prev;
+	  /* Push on head.  */
+	  NEXT_SEC (item) = head;
+	  head = item;
+	}
 
-	  /* OK, the size from the start of CURR to the end is less
+      while (head != NULL)
+	{
+	  asection *curr;
+	  asection *next;
+	  bfd_vma stub_group_start = head->output_offset;
+	  bfd_vma end_of_next;
+
+	  curr = head;
+	  while (NEXT_SEC (curr) != NULL)
+	    {
+	      next = NEXT_SEC (curr);
+	      end_of_next = next->output_offset + next->size;
+	      if (end_of_next - stub_group_start >= stub_group_size)
+		/* End of NEXT is too far from start, so stop.  */
+		break;
+	      /* Add NEXT to the group.  */
+	      curr = next;
+	    }
+
+	  /* OK, the size from the start to the start of CURR is less
 	     than stub_group_size and thus can be handled by one stub
-	     section.  (Or the tail section is itself larger than
+	     section.  (Or the head section is itself larger than
 	     stub_group_size, in which case we may be toast.)
 	     We should really be keeping track of the total size of
 	     stubs added here, as stubs contribute to the final output
 	     section size.  */
 	  do
 	    {
-	      prev = PREV_SEC (tail);
+	      next = NEXT_SEC (head);
 	      /* Set up this stub group.  */
-	      htab->stub_group[tail->id].link_sec = curr;
+	      htab->stub_group[head->id].link_sec = curr;
 	    }
-	  while (tail != curr && (tail = prev) != NULL);
+	  while (head != curr && (head = next) != NULL);
 
 	  /* But wait, there's more!  Input sections up to stub_group_size
-	     bytes before the stub section can be handled by it too.  */
-	  if (!stubs_always_before_branch)
+	     bytes after the stub section can be handled by it too.  */
+	  if (!stubs_always_after_branch)
 	    {
-	      total = 0;
-	      while (prev != NULL
-		     && ((total += tail->output_offset - prev->output_offset)
-			 < stub_group_size))
+	      stub_group_start = curr->output_offset + curr->size;
+
+	      while (next != NULL)
 		{
-		  tail = prev;
-		  prev = PREV_SEC (tail);
-		  htab->stub_group[tail->id].link_sec = curr;
+		  end_of_next = next->output_offset + next->size;
+		  if (end_of_next - stub_group_start >= stub_group_size)
+		    /* End of NEXT is too far from stubs, so stop.  */
+		    break;
+		  /* Add NEXT to the stub group.  */
+		  head = next;
+		  next = NEXT_SEC (head);
+		  htab->stub_group[head->id].link_sec = curr;
 		}
 	    }
-	  tail = prev;
+	  head = next;
 	}
     }
-  while (list-- != htab->input_list);
+  while (list++ != htab->input_list + htab->top_index);
 
   free (htab->input_list);
 }
 
 #undef PREV_SEC
+#undef PREV_SEC
 
 #define AARCH64_BITS(x, pos, n) (((x) >> (pos)) & ((1 << (n)) - 1))
 
@@ -3933,8 +3925,9 @@ _bfd_aarch64_erratum_835769_scan (bfd *i
 
       sec_data = elf_aarch64_section_data (section);
 
-      qsort (sec_data->map, sec_data->mapcount,
-	     sizeof (elf_aarch64_section_map), elf_aarch64_compare_mapping);
+      if (sec_data->mapcount)
+	qsort (sec_data->map, sec_data->mapcount,
+	       sizeof (elf_aarch64_section_map), elf_aarch64_compare_mapping);
 
       for (span = 0; span < sec_data->mapcount; span++)
 	{
@@ -4217,8 +4210,9 @@ _bfd_aarch64_erratum_843419_scan (bfd *i
 
       sec_data = elf_aarch64_section_data (section);
 
-      qsort (sec_data->map, sec_data->mapcount,
-	     sizeof (elf_aarch64_section_map), elf_aarch64_compare_mapping);
+      if (sec_data->mapcount)
+	qsort (sec_data->map, sec_data->mapcount,
+	       sizeof (elf_aarch64_section_map), elf_aarch64_compare_mapping);
 
       for (span = 0; span < sec_data->mapcount; span++)
 	{
@@ -4313,9 +4307,15 @@ elfNN_aarch64_size_stubs (bfd *output_bf
 
       for (input_bfd = info->input_bfds;
 	   input_bfd != NULL; input_bfd = input_bfd->link.next)
-	if (!_bfd_aarch64_erratum_835769_scan (input_bfd, info,
-					       &num_erratum_835769_fixes))
-	  return FALSE;
+	{
+	  if (!is_aarch64_elf (input_bfd)
+	      || (input_bfd->flags & BFD_LINKER_CREATED) != 0)
+	    continue;
+
+	  if (!_bfd_aarch64_erratum_835769_scan (input_bfd, info,
+						 &num_erratum_835769_fixes))
+	    return FALSE;
+	}
 
       _bfd_aarch64_resize_stubs (htab);
       (*htab->layout_sections_again) ();
@@ -4331,6 +4331,10 @@ elfNN_aarch64_size_stubs (bfd *output_bf
 	{
 	  asection *section;
 
+	  if (!is_aarch64_elf (input_bfd)
+	      || (input_bfd->flags & BFD_LINKER_CREATED) != 0)
+	    continue;
+
 	  for (section = input_bfd->sections;
 	       section != NULL;
 	       section = section->next)
@@ -4353,6 +4357,10 @@ elfNN_aarch64_size_stubs (bfd *output_bf
 	  asection *section;
 	  Elf_Internal_Sym *local_syms = NULL;
 
+	  if (!is_aarch64_elf (input_bfd)
+	      || (input_bfd->flags & BFD_LINKER_CREATED) != 0)
+	    continue;
+
 	  /* We'll need the symbol table in a second.  */
 	  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
 	  if (symtab_hdr->sh_info == 0)
@@ -4615,7 +4623,7 @@ elfNN_aarch64_size_stubs (bfd *output_bf
 
   return TRUE;
 
-error_ret_free_local:
+ error_ret_free_local:
   return FALSE;
 }
 
@@ -5507,7 +5515,7 @@ elfNN_aarch64_final_link_relocate (reloc
       switch (bfd_r_type)
 	{
 	default:
-bad_ifunc_reloc:
+	bad_ifunc_reloc:
 	  if (h->root.root.string)
 	    name = h->root.root.string;
 	  else
@@ -5881,6 +5889,23 @@ bad_ifunc_reloc:
 	  bfd_set_error (bfd_error_bad_value);
 	  return bfd_reloc_notsupported;
 	}
+      value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
+						   place, value,
+						   signed_addend,
+						   weak_undef_p);
+      break;
+
+    case BFD_RELOC_AARCH64_BRANCH19:
+    case BFD_RELOC_AARCH64_TSTBR14:
+      if (h && h->root.type == bfd_link_hash_undefined)
+	{
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB: conditional branch to undefined symbol `%s' "
+	       "not allowed"), input_bfd, h->root.root.string);
+	  bfd_set_error (bfd_error_bad_value);
+	  return bfd_reloc_notsupported;
+	}
       /* Fall through.  */
 
     case BFD_RELOC_AARCH64_16:
@@ -5888,7 +5913,6 @@ bad_ifunc_reloc:
     case BFD_RELOC_AARCH64_32:
 #endif
     case BFD_RELOC_AARCH64_ADD_LO12:
-    case BFD_RELOC_AARCH64_BRANCH19:
     case BFD_RELOC_AARCH64_LDST128_LO12:
     case BFD_RELOC_AARCH64_LDST16_LO12:
     case BFD_RELOC_AARCH64_LDST32_LO12:
@@ -5904,7 +5928,6 @@ bad_ifunc_reloc:
     case BFD_RELOC_AARCH64_MOVW_G2_NC:
     case BFD_RELOC_AARCH64_MOVW_G2_S:
     case BFD_RELOC_AARCH64_MOVW_G3:
-    case BFD_RELOC_AARCH64_TSTBR14:
       value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
 						   place, value,
 						   signed_addend, weak_undef_p);
@@ -7119,7 +7142,7 @@ elfNN_aarch64_relocate_section (bfd *out
 
 		 Try to catch this situation here and provide a more helpful
 		 error message to the user.  */
-	      if (addend & ((1 << howto->rightshift) - 1)
+	      if (addend & (((bfd_vma) 1 << howto->rightshift) - 1)
 		  /* FIXME: Are we testing all of the appropriate reloc
 		     types here ?  */
 		  && (real_r_type == BFD_RELOC_AARCH64_LD_LO19_PCREL
@@ -7318,23 +7341,6 @@ elfNN_aarch64_print_private_bfd_data (bf
   return TRUE;
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = elf_aarch64_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Return true if we need copy relocation against EH.  */
 
 static bfd_boolean
@@ -7343,7 +7349,7 @@ need_copy_relocation_p (struct elf_aarch
   struct elf_dyn_relocs *p;
   asection *s;
 
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = eh->root.dyn_relocs; p != NULL; p = p->next)
     {
       /* If there is any pc-relative reference, we need to keep copy relocation
 	 to avoid propagating the relocation into runtime that current glibc
@@ -7606,7 +7612,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  /* A local symbol.  */
-	  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+	  isym = bfd_sym_from_r_symndx (&htab->root.sym_cache,
 					abfd, r_symndx);
 	  if (isym == NULL)
 	    return FALSE;
@@ -7822,9 +7828,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 	       relocations we need for this symbol.  */
 	    if (h != NULL)
 	      {
-		struct elf_aarch64_link_hash_entry *eh;
-		eh = (struct elf_aarch64_link_hash_entry *) h;
-		head = &eh->dyn_relocs;
+		head = &h->dyn_relocs;
 	      }
 	    else
 	      {
@@ -7835,7 +7839,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 		asection *s;
 		void **vpp;
 
-		isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		isym = bfd_sym_from_r_symndx (&htab->root.sym_cache,
 					      abfd, r_symndx);
 		if (isym == NULL)
 		  return FALSE;
@@ -7853,7 +7857,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 	    p = *head;
 	    if (p == NULL || p->sec != sec)
 	      {
-		bfd_size_type amt = sizeof *p;
+		size_t amt = sizeof *p;
 		p = ((struct elf_dyn_relocs *)
 		     bfd_zalloc (htab->root.dynobj, amt));
 		if (p == NULL)
@@ -8419,7 +8423,7 @@ elfNN_aarch64_new_section_hook (bfd *abf
   if (!sec->used_by_bfd)
     {
       _aarch64_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+      size_t amt = sizeof (*sdata);
 
       sdata = bfd_zalloc (abfd, amt);
       if (sdata == NULL)
@@ -8667,7 +8671,7 @@ elfNN_aarch64_allocate_dynrelocs (struct
 		     type.  */
 
 		  /* TLSDESC PLT is now needed, but not yet determined.  */
-		  htab->tlsdesc_plt = (bfd_vma) - 1;
+		  htab->root.tlsdesc_plt = (bfd_vma) - 1;
 		}
 
 	      if (got_type & GOT_TLS_GD)
@@ -8683,7 +8687,7 @@ elfNN_aarch64_allocate_dynrelocs (struct
       h->got.offset = (bfd_vma) - 1;
     }
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -8704,7 +8708,7 @@ elfNN_aarch64_allocate_dynrelocs (struct
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL;)
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL;)
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -8717,11 +8721,11 @@ elfNN_aarch64_allocate_dynrelocs (struct
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak)
+      if (h->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -8760,13 +8764,13 @@ elfNN_aarch64_allocate_dynrelocs (struct
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep:;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc;
 
@@ -8789,7 +8793,6 @@ elfNN_aarch64_allocate_ifunc_dynrelocs (
 {
   struct bfd_link_info *info;
   struct elf_aarch64_link_hash_table *htab;
-  struct elf_aarch64_link_hash_entry *eh;
 
   /* An example of a bfd_link_hash_indirect symbol is versioned
      symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect)
@@ -8809,15 +8812,12 @@ elfNN_aarch64_allocate_ifunc_dynrelocs (
   info = (struct bfd_link_info *) inf;
   htab = elf_aarch64_hash_table (info);
 
-  eh = (struct elf_aarch64_link_hash_entry *) h;
-
   /* Since STT_GNU_IFUNC symbol must go through PLT, we handle it
      here if it is defined and referenced in a non-shared object.  */
   if (h->type == STT_GNU_IFUNC
       && h->def_regular)
     return _bfd_elf_allocate_ifunc_dyn_relocs (info, h,
-					       &eh->dyn_relocs,
-					       NULL,
+					       &h->dyn_relocs,
 					       htab->plt_entry_size,
 					       htab->plt_header_size,
 					       GOT_ENTRY_SIZE,
@@ -8844,33 +8844,6 @@ elfNN_aarch64_allocate_local_ifunc_dynre
   return elfNN_aarch64_allocate_ifunc_dynrelocs (h, inf);
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* This is the most important function of all . Innocuosly named
    though !  */
 
@@ -8983,7 +8956,7 @@ elfNN_aarch64_size_dynamic_sections (bfd
 		    {
 		      htab->root.srelplt->size += RELOC_SIZE (htab);
 		      /* Note RELOC_COUNT not incremented here! */
-		      htab->tlsdesc_plt = (bfd_vma) - 1;
+		      htab->root.tlsdesc_plt = (bfd_vma) - 1;
 		    }
 
 		  if (got_type & GOT_TLS_GD)
@@ -9026,19 +8999,21 @@ elfNN_aarch64_size_dynamic_sections (bfd
   if (htab->root.srelplt)
     htab->sgotplt_jump_table_size = aarch64_compute_jump_table_size (htab);
 
-  if (htab->tlsdesc_plt)
+  if (htab->root.tlsdesc_plt)
     {
       if (htab->root.splt->size == 0)
 	htab->root.splt->size += htab->plt_header_size;
 
       /* If we're not using lazy TLS relocations, don't generate the
 	 GOT and PLT entry required.  */
-      if (!(info->flags & DF_BIND_NOW))
+      if ((info->flags & DF_BIND_NOW))
+	htab->root.tlsdesc_plt = 0;
+      else
 	{
-	  htab->tlsdesc_plt = htab->root.splt->size;
+	  htab->root.tlsdesc_plt = htab->root.splt->size;
 	  htab->root.splt->size += htab->tlsdesc_plt_entry_size;
 
-	  htab->dt_tlsdesc_got = htab->root.sgot->size;
+	  htab->root.tlsdesc_got = htab->root.sgot->size;
 	  htab->root.sgot->size += GOT_ENTRY_SIZE;
 	}
     }
@@ -9126,30 +9101,15 @@ elfNN_aarch64_size_dynamic_sections (bfd
 #define add_dynamic_entry(TAG, VAL)			\
       _bfd_elf_add_dynamic_entry (info, TAG, VAL)
 
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
+      if (!_bfd_elf_add_dynamic_tags (output_bfd, info, relocs))
+	return FALSE;
 
       if (htab->root.splt->size != 0)
 	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-
 	  if (htab->variant_pcs
 	      && !add_dynamic_entry (DT_AARCH64_VARIANT_PCS, 0))
 	    return FALSE;
 
-	  if (htab->tlsdesc_plt
-	      && !(info->flags & DF_BIND_NOW)
-	      && (!add_dynamic_entry (DT_TLSDESC_PLT, 0)
-		  || !add_dynamic_entry (DT_TLSDESC_GOT, 0)))
-	    return FALSE;
-
 	  if ((elf_aarch64_tdata (output_bfd)->plt_type == PLT_BTI_PAC)
 	      && (!add_dynamic_entry (DT_AARCH64_BTI_PLT, 0)
 		  || !add_dynamic_entry (DT_AARCH64_PAC_PLT, 0)))
@@ -9163,25 +9123,6 @@ elfNN_aarch64_size_dynamic_sections (bfd
 		   && !add_dynamic_entry (DT_AARCH64_PAC_PLT, 0))
 	    return FALSE;
 	}
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (DT_RELA, 0)
-	      || !add_dynamic_entry (DT_RELASZ, 0)
-	      || !add_dynamic_entry (DT_RELAENT, RELOC_SIZE (htab)))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->root, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
     }
 #undef add_dynamic_entry
 
@@ -9482,7 +9423,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd
 	}
       else
 	{
-do_glob_dat:
+	do_glob_dat:
 	  BFD_ASSERT ((h->got.offset & 1) == 0);
 	  bfd_put_NN (output_bfd, (bfd_vma) 0,
 		      htab->root.sgot->contents + h->got.offset);
@@ -9571,8 +9512,11 @@ elfNN_aarch64_init_small_plt0_entry (bfd
 
   memcpy (htab->root.splt->contents, htab->plt0_entry,
 	  htab->plt_header_size);
-  elf_section_data (htab->root.splt->output_section)->this_hdr.sh_entsize =
-    htab->plt_header_size;
+
+  /* PR 26312: Explicitly set the sh_entsize to 0 so that
+     consumers do not think that the section contains fixed
+     sized objects.  */
+  elf_section_data (htab->root.splt->output_section)->this_hdr.sh_entsize = 0;
 
   plt_got_2nd_ent = (htab->root.sgotplt->output_section->vma
 		  + htab->root.sgotplt->output_offset
@@ -9653,14 +9597,14 @@ elfNN_aarch64_finish_dynamic_sections (b
 	    case DT_TLSDESC_PLT:
 	      s = htab->root.splt;
 	      dyn.d_un.d_ptr = s->output_section->vma + s->output_offset
-		+ htab->tlsdesc_plt;
+		+ htab->root.tlsdesc_plt;
 	      break;
 
 	    case DT_TLSDESC_GOT:
 	      s = htab->root.sgot;
-	      BFD_ASSERT (htab->dt_tlsdesc_got != (bfd_vma)-1);
+	      BFD_ASSERT (htab->root.tlsdesc_got != (bfd_vma)-1);
 	      dyn.d_un.d_ptr = s->output_section->vma + s->output_offset
-		+ htab->dt_tlsdesc_got;
+		+ htab->root.tlsdesc_got;
 	      break;
 	    }
 
@@ -9674,15 +9618,11 @@ elfNN_aarch64_finish_dynamic_sections (b
     {
       elfNN_aarch64_init_small_plt0_entry (output_bfd, htab);
 
-      elf_section_data (htab->root.splt->output_section)->
-	this_hdr.sh_entsize = htab->plt_entry_size;
-
-
-      if (htab->tlsdesc_plt && !(info->flags & DF_BIND_NOW))
+      if (htab->root.tlsdesc_plt && !(info->flags & DF_BIND_NOW))
 	{
-	  BFD_ASSERT (htab->dt_tlsdesc_got != (bfd_vma)-1);
+	  BFD_ASSERT (htab->root.tlsdesc_got != (bfd_vma)-1);
 	  bfd_put_NN (output_bfd, (bfd_vma) 0,
-		      htab->root.sgot->contents + htab->dt_tlsdesc_got);
+		      htab->root.sgot->contents + htab->root.tlsdesc_got);
 
 	  const bfd_byte *entry = elfNN_aarch64_tlsdesc_small_plt_entry;
 	  htab->tlsdesc_plt_entry_size = PLT_TLSDESC_ENTRY_SIZE;
@@ -9693,13 +9633,14 @@ elfNN_aarch64_finish_dynamic_sections (b
 	      entry = elfNN_aarch64_tlsdesc_small_plt_bti_entry;
 	    }
 
-	  memcpy (htab->root.splt->contents + htab->tlsdesc_plt,
+	  memcpy (htab->root.splt->contents + htab->root.tlsdesc_plt,
 		  entry, htab->tlsdesc_plt_entry_size);
 
 	  {
 	    bfd_vma adrp1_addr =
 	      htab->root.splt->output_section->vma
-	      + htab->root.splt->output_offset + htab->tlsdesc_plt + 4;
+	      + htab->root.splt->output_offset
+	      + htab->root.tlsdesc_plt + 4;
 
 	    bfd_vma adrp2_addr = adrp1_addr + 4;
 
@@ -9711,10 +9652,10 @@ elfNN_aarch64_finish_dynamic_sections (b
 	      htab->root.sgotplt->output_section->vma
 	      + htab->root.sgotplt->output_offset;
 
-	    bfd_vma dt_tlsdesc_got = got_addr + htab->dt_tlsdesc_got;
+	    bfd_vma dt_tlsdesc_got = got_addr + htab->root.tlsdesc_got;
 
 	    bfd_byte *plt_entry =
-	      htab->root.splt->contents + htab->tlsdesc_plt;
+	      htab->root.splt->contents + htab->root.tlsdesc_plt;
 
 	   /* First instruction in BTI enabled PLT stub is a BTI
 	      instruction so skip it.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfnn-ia64.c ./bfd/elfnn-ia64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfnn-ia64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfnn-ia64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* IA-64 support for 64-bit ELF
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -39,6 +39,10 @@
 #define	LOG_SECTION_ALIGN	2
 #endif
 
+#define is_ia64_elf(bfd)			   \
+  (bfd_get_flavour (bfd) == bfd_target_elf_flavour \
+   && elf_object_id (bfd) == IA64_ELF_DATA)
+
 typedef struct bfd_hash_entry *(*new_hash_entry_func)
   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
 
@@ -139,7 +143,6 @@ struct elfNN_ia64_link_hash_table
   asection *rel_pltoff_sec;	/* Dynamic relocation section for same.  */
 
   bfd_size_type minplt_entries;	/* Number of minplt entries.  */
-  unsigned reltext : 1;		/* Are there relocs against readonly sections?  */
   unsigned self_dtpmod_done : 1;/* Has self DTPMOD entry been finished?  */
   bfd_vma self_dtpmod_offset;	/* .got offset to self DTPMOD entry.  */
   /* There are maybe R_IA64_GPREL22 relocations, including those
@@ -163,8 +166,9 @@ struct elfNN_ia64_allocate_data
 };
 
 #define elfNN_ia64_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == IA64_ELF_DATA ? ((struct elfNN_ia64_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == IA64_ELF_DATA)		\
+   ? (struct elfNN_ia64_link_hash_table *) (p)->hash : NULL)
 
 static struct elfNN_ia64_dyn_sym_info * get_dyn_sym_info
   (struct elfNN_ia64_link_hash_table *ia64_info,
@@ -869,13 +873,11 @@ elfNN_ia64_relax_section (bfd *abfd, ase
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL && (unsigned char *) isymbuf != symtab_hdr->contents)
+  if ((unsigned char *) isymbuf != symtab_hdr->contents)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
   return FALSE;
 }
@@ -938,11 +940,10 @@ elfNN_ia64_section_from_shdr (bfd *abfd,
    flag.  */
 
 static bfd_boolean
-elfNN_ia64_section_flags (flagword *flags,
-			  const Elf_Internal_Shdr *hdr)
+elfNN_ia64_section_flags (const Elf_Internal_Shdr *hdr)
 {
   if (hdr->sh_flags & SHF_IA_64_SHORT)
-    *flags |= SEC_SMALL_DATA;
+    hdr->bfd_section->flags |= SEC_SMALL_DATA;
 
   return TRUE;
 }
@@ -1064,6 +1065,7 @@ elfNN_ia64_add_symbol_hook (bfd *abfd,
 	  scomm = bfd_make_section_with_flags (abfd, ".scommon",
 					       (SEC_ALLOC
 						| SEC_IS_COMMON
+						| SEC_SMALL_DATA
 						| SEC_LINKER_CREATED));
 	  if (scomm == NULL)
 	    return FALSE;
@@ -1307,8 +1309,7 @@ elfNN_ia64_hash_copy_indirect (struct bf
       struct elfNN_ia64_dyn_sym_info *dyn_i;
       unsigned int count;
 
-      if (dir->info)
-	free (dir->info);
+      free (dir->info);
 
       dir->info = ind->info;
       dir->count = ind->count;
@@ -1396,14 +1397,11 @@ elfNN_ia64_global_dyn_info_free (void **
   struct elfNN_ia64_link_hash_entry *entry
     = (struct elfNN_ia64_link_hash_entry *) xentry;
 
-  if (entry->info)
-    {
-      free (entry->info);
-      entry->info = NULL;
-      entry->count = 0;
-      entry->sorted_count = 0;
-      entry->size = 0;
-    }
+  free (entry->info);
+  entry->info = NULL;
+  entry->count = 0;
+  entry->sorted_count = 0;
+  entry->size = 0;
 
   return TRUE;
 }
@@ -1417,14 +1415,11 @@ elfNN_ia64_local_dyn_info_free (void **s
   struct elfNN_ia64_local_hash_entry *entry
     = (struct elfNN_ia64_local_hash_entry *) *slot;
 
-  if (entry->info)
-    {
-      free (entry->info);
-      entry->info = NULL;
-      entry->count = 0;
-      entry->sorted_count = 0;
-      entry->size = 0;
-    }
+  free (entry->info);
+  entry->info = NULL;
+  entry->count = 0;
+  entry->sorted_count = 0;
+  entry->size = 0;
 
   return TRUE;
 }
@@ -1480,6 +1475,7 @@ elfNN_ia64_hash_table_create (bfd *abfd)
       return NULL;
     }
   ret->root.root.hash_table_free = elfNN_ia64_link_hash_table_free;
+  ret->root.dt_pltgot_required = TRUE;
 
   return &ret->root.root;
 }
@@ -1871,18 +1867,16 @@ get_dyn_sym_info (struct elfNN_ia64_link
 	      key.addend = addend;
 	      dyn_i = bsearch (&key, info, sorted_count,
 			       sizeof (*info), addend_compare);
-
 	      if (dyn_i)
-		{
-		  return dyn_i;
-		}
+		return dyn_i;
 	    }
 
-	  /* Do a quick check for the last inserted entry.  */
-	  dyn_i = info + count - 1;
-	  if (dyn_i->addend == addend)
+	  if (count != 0)
 	    {
-	      return dyn_i;
+	      /* Do a quick check for the last inserted entry.  */
+	      dyn_i = info + count - 1;
+	      if (dyn_i->addend == addend)
+		return dyn_i;
 	    }
 	}
 
@@ -1910,7 +1904,7 @@ get_dyn_sym_info (struct elfNN_ia64_link
       *size_p = size;
       *info_p = info;
 
-has_space:
+    has_space:
       /* Append the new one to the array.  */
       dyn_i = info + count;
       memset (dyn_i, 0, sizeof (*dyn_i));
@@ -1936,19 +1930,23 @@ has_space:
       if (size != count)
 	{
 	  amt = count * sizeof (*info);
-	  info = bfd_malloc (amt);
-	  if (info != NULL)
-	    {
-	      memcpy (info, *info_p, amt);
-	      free (*info_p);
-	      *size_p = count;
-	      *info_p = info;
-	    }
+	  info = bfd_realloc (info, amt);
+	  *size_p = count;
+	  if (info == NULL && count != 0)
+	    /* realloc should never fail since we are reducing size here,
+	       but if it does use the old array.  */
+	    info = *info_p;
+	  else
+	    *info_p = info;
 	}
 
-      key.addend = addend;
-      dyn_i = bsearch (&key, info, count,
-		       sizeof (*info), addend_compare);
+      if (count == 0)
+	dyn_i = NULL;
+      else
+	{
+	  key.addend = addend;
+	  dyn_i = bsearch (&key, info, count, sizeof (*info), addend_compare);
+	}
     }
 
   return dyn_i;
@@ -2957,7 +2955,7 @@ allocate_dynrel_entries (struct elfNN_ia
 	  abort ();
 	}
       if (rent->reltext)
-	ia64_info->reltext = 1;
+	x->info->flags |= DF_TEXTREL;
       rent->srel->size += sizeof (ElfNN_External_Rela) * count;
     }
 
@@ -3001,7 +2999,6 @@ elfNN_ia64_size_dynamic_sections (bfd *o
   struct elfNN_ia64_link_hash_table *ia64_info;
   asection *sec;
   bfd *dynobj;
-  bfd_boolean relplt = FALSE;
 
   ia64_info = elfNN_ia64_hash_table (info);
   if (ia64_info == NULL)
@@ -3155,7 +3152,7 @@ elfNN_ia64_size_dynamic_sections (bfd *o
 	    ia64_info->rel_pltoff_sec = NULL;
 	  else
 	    {
-	      relplt = TRUE;
+	      ia64_info->root.dt_jmprel_required = TRUE;
 	      /* We use the reloc_count field as a counter if we need to
 		 copy relocs into the output file.  */
 	      sec->reloc_count = 0;
@@ -3201,41 +3198,14 @@ elfNN_ia64_size_dynamic_sections (bfd *o
 	 later (in finish_dynamic_sections) but we must add the entries now
 	 so that we get the correct size for the .dynamic section.  */
 
-      if (bfd_link_executable (info))
-	{
-	  /* The DT_DEBUG entry is filled in by the dynamic linker and used
-	     by the debugger.  */
 #define add_dynamic_entry(TAG, VAL) \
   _bfd_elf_add_dynamic_entry (info, TAG, VAL)
 
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (!add_dynamic_entry (DT_IA_64_PLT_RESERVE, 0))
-	return FALSE;
-      if (!add_dynamic_entry (DT_PLTGOT, 0))
+      if (!_bfd_elf_add_dynamic_tags (output_bfd, info, TRUE))
 	return FALSE;
 
-      if (relplt)
-	{
-	  if (!add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (!add_dynamic_entry (DT_RELA, 0)
-	  || !add_dynamic_entry (DT_RELASZ, 0)
-	  || !add_dynamic_entry (DT_RELAENT, sizeof (ElfNN_External_Rela)))
+      if (!add_dynamic_entry (DT_IA_64_PLT_RESERVE, 0))
 	return FALSE;
-
-      if (ia64_info->reltext)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	  info->flags |= DF_TEXTREL;
-	}
     }
 
   /* ??? Perhaps force __gp local.  */
@@ -3702,7 +3672,7 @@ elfNN_ia64_choose_gp (bfd *abfd, struct
     {
       if (max_short_vma - min_short_vma >= 0x400000)
 	{
-overflow:
+	overflow:
 	  _bfd_error_handler
 	    /* xgettext:c-format */
 	    (_("%pB: short data segment overflowed (%#" PRIx64 " >= 0x400000)"),
@@ -4472,7 +4442,7 @@ elfNN_ia64_relocate_section (bfd *output
 	case bfd_reloc_outofrange:
 	case bfd_reloc_overflow:
 	default:
-missing_tls_sec:
+	missing_tls_sec:
 	  {
 	    const char *name;
 
@@ -4732,6 +4702,7 @@ elfNN_ia64_set_private_flags (bfd *abfd,
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
+
 static bfd_boolean
 elfNN_ia64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
@@ -4740,10 +4711,12 @@ elfNN_ia64_merge_private_bfd_data (bfd *
   flagword in_flags;
   bfd_boolean ok = TRUE;
 
-  /* Don't even pretend to support mixed-format linking.  */
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return FALSE;
+  /* FIXME: What should be checked when linking shared libraries?  */
+  if ((ibfd->flags & DYNAMIC) != 0)
+    return TRUE;
+
+  if (!is_ia64_elf (ibfd) || !is_ia64_elf (obfd))
+    return TRUE;
 
   in_flags  = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
@@ -4880,7 +4853,7 @@ elfNN_ia64_object_p (bfd *abfd)
   flagword flags;
   const char *name;
   char *unwi_name, *unw_name;
-  bfd_size_type amt;
+  size_t amt;
 
   if (abfd->flags & DYNAMIC)
     return TRUE;
@@ -5013,6 +4986,11 @@ elfNN_hpux_backend_symbol_processing (bf
       break;
     }
 }
+
+static void
+ignore_errors (const char *fmt ATTRIBUTE_UNUSED, ...)
+{
+}
 
 #define TARGET_LITTLE_SYM		ia64_elfNN_le_vec
 #define TARGET_LITTLE_NAME		"elfNN-ia64-little"
@@ -5110,7 +5088,7 @@ elfNN_hpux_backend_symbol_processing (bf
    We don't want to flood users with so many error messages. We turn
    off the warning for now. It will be turned on later when the Intel
    compiler is fixed.   */
-#define elf_backend_link_order_error_handler NULL
+#define elf_backend_link_order_error_handler ignore_errors
 
 #include "elfNN-target.h"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfnn-riscv.c ./bfd/elfnn-riscv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfnn-riscv.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfnn-riscv.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* RISC-V-specific support for NN-bit ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    Contributed by Andrew Waterman (andrew@sifive.com).
    Based on TILE-Gx and MIPS targets.
@@ -61,9 +61,6 @@ struct riscv_elf_link_hash_entry
 {
   struct elf_link_hash_entry elf;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
 #define GOT_UNKNOWN     0
 #define GOT_NORMAL      1
 #define GOT_TLS_GD      2
@@ -98,6 +95,14 @@ struct _bfd_riscv_elf_obj_tdata
    && elf_tdata (bfd) != NULL				\
    && elf_object_id (bfd) == RISCV_ELF_DATA)
 
+static bfd_boolean
+elfNN_riscv_mkobject (bfd *abfd)
+{
+  return bfd_elf_allocate_object (abfd,
+				  sizeof (struct _bfd_riscv_elf_obj_tdata),
+				  RISCV_ELF_DATA);
+}
+
 #include "elf/common.h"
 #include "elf/internal.h"
 
@@ -108,9 +113,6 @@ struct riscv_elf_link_hash_table
   /* Short-cuts to get to dynamic linker sections.  */
   asection *sdyntdata;
 
-  /* Small local sym to section mapping cache.  */
-  struct sym_cache sym_cache;
-
   /* The max alignment of output sections.  */
   bfd_vma max_alignment;
 };
@@ -118,8 +120,9 @@ struct riscv_elf_link_hash_table
 
 /* Get the RISC-V ELF linker hash table from a link_info structure.  */
 #define riscv_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == RISCV_ELF_DATA ? ((struct riscv_elf_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == RISCV_ELF_DATA)	\
+   ? (struct riscv_elf_link_hash_table *) (p)->hash : NULL)
 
 static bfd_boolean
 riscv_info_to_howto_rela (bfd *abfd,
@@ -196,7 +199,7 @@ riscv_make_plt_header (bfd *output_bfd,
   entry[0] = RISCV_UTYPE (AUIPC, X_T2, gotplt_offset_high);
   entry[1] = RISCV_RTYPE (SUB, X_T1, X_T1, X_T3);
   entry[2] = RISCV_ITYPE (LREG, X_T3, X_T2, gotplt_offset_low);
-  entry[3] = RISCV_ITYPE (ADDI, X_T1, X_T1, -(PLT_HEADER_SIZE + 12));
+  entry[3] = RISCV_ITYPE (ADDI, X_T1, X_T1, (uint32_t) -(PLT_HEADER_SIZE + 12));
   entry[4] = RISCV_ITYPE (ADDI, X_T0, X_T2, gotplt_offset_low);
   entry[5] = RISCV_ITYPE (SRLI, X_T1, X_T1, 4 - RISCV_ELF_LOG_WORD_BYTES);
   entry[6] = RISCV_ITYPE (LREG, X_T0, X_T0, RISCV_ELF_WORD_BYTES);
@@ -256,7 +259,6 @@ link_hash_newfunc (struct bfd_hash_entry
       struct riscv_elf_link_hash_entry *eh;
 
       eh = (struct riscv_elf_link_hash_entry *) entry;
-      eh->dyn_relocs = NULL;
       eh->tls_type = GOT_UNKNOWN;
     }
 
@@ -269,7 +271,7 @@ static struct bfd_link_hash_table *
 riscv_elf_link_hash_table_create (bfd *abfd)
 {
   struct riscv_elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct riscv_elf_link_hash_table);
+  size_t amt = sizeof (struct riscv_elf_link_hash_table);
 
   ret = (struct riscv_elf_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -411,37 +413,6 @@ riscv_elf_copy_indirect_symbol (struct b
   edir = (struct riscv_elf_link_hash_entry *) dir;
   eind = (struct riscv_elf_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect
       && dir->got.refcount <= 0)
     {
@@ -586,21 +557,23 @@ riscv_elf_check_relocs (bfd *abfd, struc
 	    return FALSE;
 	  break;
 
+	case R_RISCV_CALL:
 	case R_RISCV_CALL_PLT:
-	  /* This symbol requires a procedure linkage table entry.  We
+	  /* These symbol requires a procedure linkage table entry.  We
 	     actually build the entry in adjust_dynamic_symbol,
-	     because this might be a case of linking PIC code without
+	     because these might be a case of linking PIC code without
 	     linking in any dynamic objects, in which case we don't
 	     need to generate a procedure linkage table after all.  */
 
-	  if (h != NULL)
-	    {
-	      h->needs_plt = 1;
-	      h->plt.refcount += 1;
-	    }
+	  /* If it is a local symbol, then we resolve it directly
+	     without creating a PLT entry.  */
+	  if (h == NULL)
+	    continue;
+
+	  h->needs_plt = 1;
+	  h->plt.refcount += 1;
 	  break;
 
-	case R_RISCV_CALL:
 	case R_RISCV_JAL:
 	case R_RISCV_BRANCH:
 	case R_RISCV_RVC_BRANCH:
@@ -697,7 +670,7 @@ riscv_elf_check_relocs (bfd *abfd, struc
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
-		head = &((struct riscv_elf_link_hash_entry *) h)->dyn_relocs;
+		head = &h->dyn_relocs;
 	      else
 		{
 		  /* Track dynamic relocs needed for local syms too.
@@ -708,7 +681,7 @@ riscv_elf_check_relocs (bfd *abfd, struc
 		  void *vpp;
 		  Elf_Internal_Sym *isym;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    return FALSE;
@@ -724,7 +697,7 @@ riscv_elf_check_relocs (bfd *abfd, struc
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 		  p = ((struct elf_dyn_relocs *)
 		       bfd_alloc (htab->elf.dynobj, amt));
 		  if (p == NULL)
@@ -778,23 +751,6 @@ riscv_elf_gc_mark_hook (asection *sec,
   return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = riscv_elf_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -883,7 +839,7 @@ riscv_elf_adjust_dynamic_symbol (struct
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (!readonly_dynrelocs (h))
+  if (!_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -936,7 +892,6 @@ allocate_dynrelocs (struct elf_link_hash
 {
   struct bfd_link_info *info;
   struct riscv_elf_link_hash_table *htab;
-  struct riscv_elf_link_hash_entry *eh;
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
@@ -1045,8 +1000,7 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  eh = (struct riscv_elf_link_hash_entry *) h;
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -1061,7 +1015,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -1074,12 +1028,12 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -1119,13 +1073,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * sizeof (ElfNN_External_Rela);
@@ -1134,33 +1088,6 @@ allocate_dynrelocs (struct elf_link_hash
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 static bfd_boolean
 riscv_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
@@ -1334,50 +1261,7 @@ riscv_elf_size_dynamic_sections (bfd *ou
 	return FALSE;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in riscv_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->elf.srelplt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (!add_dynamic_entry (DT_RELA, 0)
-	  || !add_dynamic_entry (DT_RELASZ, 0)
-	  || !add_dynamic_entry (DT_RELAENT, sizeof (ElfNN_External_Rela)))
-	return FALSE;
-
-      /* If any dynamic relocs apply to a read-only section,
-	 then we need a DT_TEXTREL entry.  */
-      if ((info->flags & DF_TEXTREL) == 0)
-	elf_link_hash_traverse (&htab->elf, maybe_set_textrel, info);
-
-      if (info->flags & DF_TEXTREL)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, TRUE);
 }
 
 #define TP_OFFSET 0
@@ -1987,10 +1871,11 @@ riscv_elf_relocate_section (bfd *output_
 	  break;
 
 	case R_RISCV_CALL:
+	case R_RISCV_CALL_PLT:
 	  /* Handle a call to an undefined weak function.  This won't be
 	     relaxed, so we have to handle it here.  */
 	  if (h != NULL && h->root.type == bfd_link_hash_undefweak
-	      && h->plt.offset == MINUS_ONE)
+	      && (!bfd_link_pic (info) || h->plt.offset == MINUS_ONE))
 	    {
 	      /* We can use x0 as the base register.  */
 	      bfd_vma insn = bfd_get_32 (input_bfd,
@@ -2003,9 +1888,9 @@ riscv_elf_relocate_section (bfd *output_
 	    }
 	  /* Fall through.  */
 
-	case R_RISCV_CALL_PLT:
 	case R_RISCV_JAL:
 	case R_RISCV_RVC_JUMP:
+	  /* This line has to match the check in _bfd_riscv_relax_section.  */
 	  if (bfd_link_pic (info) && h != NULL && h->plt.offset != MINUS_ONE)
 	    {
 	      /* Refer to the PLT entry.  */
@@ -2306,7 +2191,6 @@ riscv_elf_relocate_section (bfd *output_
 	{
 	  switch (r_type)
 	    {
-	    case R_RISCV_CALL:
 	    case R_RISCV_JAL:
 	    case R_RISCV_RVC_JUMP:
 	      if (asprintf (&msg_buf,
@@ -2384,9 +2268,8 @@ riscv_elf_relocate_section (bfd *output_
       if (msg && r != bfd_reloc_dangerous)
 	info->callbacks->einfo (msg);
 
-      /* Free the unused `msg_buf` if needed.  */
-      if (msg_buf)
-	free (msg_buf);
+      /* Free the unused `msg_buf`.  */
+      free (msg_buf);
 
       /* We already reported the error via a callback, so don't try to report
 	 it again by returning false.  That leads to spurious errors.  */
@@ -2395,7 +2278,7 @@ riscv_elf_relocate_section (bfd *output_
     }
 
   ret = riscv_resolve_pcrel_lo_relocs (&pcrel_relocs);
-out:
+ out:
   riscv_free_pcrel_relocs (&pcrel_relocs);
   return ret;
 }
@@ -2735,43 +2618,42 @@ riscv_std_ext_p (const char *name)
   return (strlen (name) == 1) && (name[0] != 'x') && (name[0] != 's');
 }
 
-/* Predicator for non-standard extension.  */
-
-static bfd_boolean
-riscv_non_std_ext_p (const char *name)
-{
-  return (strlen (name) >= 2) && (name[0] == 'x');
-}
-
-/* Predicator for standard supervisor extension.  */
-
-static bfd_boolean
-riscv_std_sv_ext_p (const char *name)
-{
-  return (strlen (name) >= 2) && (name[0] == 's') && (name[1] != 'x');
-}
-
-/* Predicator for non-standard supervisor extension.  */
+/* Check if the versions are compatible.  */
 
 static bfd_boolean
-riscv_non_std_sv_ext_p (const char *name)
-{
-  return (strlen (name) >= 3) && (name[0] == 's') && (name[1] == 'x');
-}
-
-/* Error handler when version mis-match.  */
-
-static void
 riscv_version_mismatch (bfd *ibfd,
 			struct riscv_subset_t *in,
 			struct riscv_subset_t *out)
 {
-  _bfd_error_handler
-    (_("error: %pB: Mis-matched ISA version for '%s' extension. "
-       "%d.%d vs %d.%d"),
-       ibfd, in->name,
-       in->major_version, in->minor_version,
-       out->major_version, out->minor_version);
+  if (in == NULL || out == NULL)
+    return TRUE;
+
+  /* Since there are no version conflicts for now, we just report
+     warning when the versions are mis-matched.  */
+  if (in->major_version != out->major_version
+      || in->minor_version != out->minor_version)
+    {
+      _bfd_error_handler
+	(_("warning: %pB: mis-matched ISA version %d.%d for '%s' "
+	   "extension, the output version is %d.%d"),
+	 ibfd,
+	 in->major_version,
+	 in->minor_version,
+	 in->name,
+	 out->major_version,
+	 out->minor_version);
+
+      /* Update the output ISA versions to the newest ones.  */
+      if ((in->major_version > out->major_version)
+	  || (in->major_version == out->major_version
+	      && in->minor_version > out->minor_version))
+	{
+	  out->major_version = in->major_version;
+	  out->minor_version = in->minor_version;
+	}
+    }
+
+  return TRUE;
 }
 
 /* Return true if subset is 'i' or 'e'.  */
@@ -2785,8 +2667,8 @@ riscv_i_or_e_p (bfd *ibfd,
       && (strcasecmp (subset->name, "i") != 0))
     {
       _bfd_error_handler
-	(_("error: %pB: corrupted ISA string '%s'. "
-	   "First letter should be 'i' or 'e' but got '%s'."),
+	(_("error: %pB: corrupted ISA string '%s'.  "
+	   "First letter should be 'i' or 'e' but got '%s'"),
 	   ibfd, arch, subset->name);
       return FALSE;
     }
@@ -2825,24 +2707,19 @@ riscv_merge_std_ext (bfd *ibfd,
   if (!riscv_i_or_e_p (ibfd, out_arch, out))
     return FALSE;
 
-  if (in->name[0] != out->name[0])
+  if (strcasecmp (in->name, out->name) != 0)
     {
       /* TODO: We might allow merge 'i' with 'e'.  */
       _bfd_error_handler
-	(_("error: %pB: Mis-matched ISA string to merge '%s' and '%s'."),
+	(_("error: %pB: mis-matched ISA string to merge '%s' and '%s'"),
 	 ibfd, in->name, out->name);
       return FALSE;
     }
-  else if ((in->major_version != out->major_version) ||
-	   (in->minor_version != out->minor_version))
-    {
-      /* TODO: Allow different merge policy.  */
-      riscv_version_mismatch (ibfd, in, out);
-      return FALSE;
-    }
+  else if (!riscv_version_mismatch (ibfd, in, out))
+    return FALSE;
   else
     riscv_add_subset (&merged_subsets,
-		      in->name, in->major_version, in->minor_version);
+		      out->name, out->major_version, out->minor_version);
 
   in = in->next;
   out = out->next;
@@ -2859,17 +2736,10 @@ riscv_merge_std_ext (bfd *ibfd,
       if (find_in == NULL && find_out == NULL)
 	continue;
 
-      /* Check version is same or not.  */
-      /* TODO: Allow different merge policy.  */
-      if ((find_in != NULL && find_out != NULL)
-	  && ((find_in->major_version != find_out->major_version)
-	      || (find_in->minor_version != find_out->minor_version)))
-	{
-	  riscv_version_mismatch (ibfd, in, out);
-	  return FALSE;
-	}
+      if (!riscv_version_mismatch (ibfd, find_in, find_out))
+	return FALSE;
 
-      struct riscv_subset_t *merged = find_in ? find_in : find_out;
+      struct riscv_subset_t *merged = find_out ? find_out : find_in;
       riscv_add_subset (&merged_subsets, merged->name,
 			merged->major_version, merged->minor_version);
     }
@@ -2884,53 +2754,98 @@ riscv_merge_std_ext (bfd *ibfd,
   return TRUE;
 }
 
-/* Merge non-standard and supervisor extensions.
-   Return Value:
-     Return FALSE if failed to merge.
+/* If C is a prefix class, then return the EXT string without the prefix.
+   Otherwise return the entire EXT string.  */
 
-   Arguments:
-     `bfd`: bfd handler.
-     `in_arch`: Raw arch string for input object.
-     `out_arch`: Raw arch string for output object.
-     `pin`: subset list for input object, and it'll skip all merged subset after
-            merge.
-     `pout`: Like `pin`, but for output object. */
+static const char *
+riscv_skip_prefix (const char *ext, riscv_isa_ext_class_t c)
+{
+  switch (c)
+    {
+    case RV_ISA_CLASS_X: return &ext[1];
+    case RV_ISA_CLASS_S: return &ext[1];
+    case RV_ISA_CLASS_Z: return &ext[1];
+    default: return ext;
+    }
+}
+
+/* Compare prefixed extension names canonically.  */
+
+static int
+riscv_prefix_cmp (const char *a, const char *b)
+{
+  riscv_isa_ext_class_t ca = riscv_get_prefix_class (a);
+  riscv_isa_ext_class_t cb = riscv_get_prefix_class (b);
+
+  /* Extension name without prefix  */
+  const char *anp = riscv_skip_prefix (a, ca);
+  const char *bnp = riscv_skip_prefix (b, cb);
+
+  if (ca == cb)
+    return strcasecmp (anp, bnp);
+
+  return (int)ca - (int)cb;
+}
+
+/* Merge multi letter extensions.  PIN is a pointer to the head of the input
+   object subset list.  Likewise for POUT and the output object.  Return TRUE
+   on success and FALSE when a conflict is found.  */
 
 static bfd_boolean
-riscv_merge_non_std_and_sv_ext (bfd *ibfd,
-				riscv_subset_t **pin,
-				riscv_subset_t **pout,
-				bfd_boolean (*predicate_func) (const char *))
+riscv_merge_multi_letter_ext (bfd *ibfd,
+			      riscv_subset_t **pin,
+			      riscv_subset_t **pout)
 {
   riscv_subset_t *in = *pin;
   riscv_subset_t *out = *pout;
+  riscv_subset_t *tail;
 
-  for (in = *pin; in != NULL && predicate_func (in->name); in = in->next)
-    riscv_add_subset (&merged_subsets, in->name, in->major_version,
-		      in->minor_version);
-
-  for (out = *pout; out != NULL && predicate_func (out->name); out = out->next)
-    {
-      riscv_subset_t *find_ext =
-	riscv_lookup_subset (&merged_subsets, out->name);
-      if (find_ext != NULL)
-	{
-	  /* Check version is same or not. */
-	  /* TODO: Allow different merge policy.  */
-	  if ((find_ext->major_version != out->major_version)
-	      || (find_ext->minor_version != out->minor_version))
-	    {
-	      riscv_version_mismatch (ibfd, find_ext, out);
-	      return FALSE;
-	    }
+  int cmp;
+
+  while (in && out)
+    {
+      cmp = riscv_prefix_cmp (in->name, out->name);
+
+      if (cmp < 0)
+	{
+	  /* `in' comes before `out', append `in' and increment.  */
+	  riscv_add_subset (&merged_subsets, in->name, in->major_version,
+			    in->minor_version);
+	  in = in->next;
+	}
+      else if (cmp > 0)
+	{
+	  /* `out' comes before `in', append `out' and increment.  */
+	  riscv_add_subset (&merged_subsets, out->name, out->major_version,
+			    out->minor_version);
+	  out = out->next;
 	}
       else
-	riscv_add_subset (&merged_subsets, out->name,
-			  out->major_version, out->minor_version);
+	{
+	  /* Both present, check version and increment both.  */
+	  if (!riscv_version_mismatch (ibfd, in, out))
+	    return FALSE;
+
+	  riscv_add_subset (&merged_subsets, out->name, out->major_version,
+			    out->minor_version);
+	  out = out->next;
+	  in = in->next;
+	}
     }
 
-  *pin = in;
-  *pout = out;
+  if (in || out) {
+    /* If we're here, either `in' or `out' is running longer than
+       the other. So, we need to append the corresponding tail.  */
+    tail = in ? in : out;
+
+    while (tail)
+      {
+	riscv_add_subset (&merged_subsets, tail->name, tail->major_version,
+			  tail->minor_version);
+	tail = tail->next;
+      }
+  }
+
   return TRUE;
 }
 
@@ -2949,13 +2864,17 @@ riscv_merge_arch_attr_info (bfd *ibfd, c
   riscv_parse_subset_t rpe_in;
   riscv_parse_subset_t rpe_out;
 
+  /* Only assembler needs to check the default version of ISA, so just set
+     the rpe_in.get_default_version and rpe_out.get_default_version to NULL.  */
   rpe_in.subset_list = &in_subsets;
   rpe_in.error_handler = _bfd_error_handler;
   rpe_in.xlen = &xlen_in;
+  rpe_in.get_default_version = NULL;
 
   rpe_out.subset_list = &out_subsets;
   rpe_out.error_handler = _bfd_error_handler;
   rpe_out.xlen = &xlen_out;
+  rpe_out.get_default_version = NULL;
 
   if (in_arch == NULL && out_arch == NULL)
     return NULL;
@@ -2978,7 +2897,7 @@ riscv_merge_arch_attr_info (bfd *ibfd, c
     {
       _bfd_error_handler
 	(_("error: %pB: ISA string of input (%s) doesn't match "
-	   "output (%s)."), ibfd, in_arch, out_arch);
+	   "output (%s)"), ibfd, in_arch, out_arch);
       return NULL;
     }
 
@@ -2989,29 +2908,24 @@ riscv_merge_arch_attr_info (bfd *ibfd, c
   /* Merge standard extension.  */
   if (!riscv_merge_std_ext (ibfd, in_arch, out_arch, &in, &out))
     return NULL;
-  /* Merge non-standard extension.  */
-  if (!riscv_merge_non_std_and_sv_ext (ibfd, &in, &out, riscv_non_std_ext_p))
-    return NULL;
-  /* Merge standard supervisor extension.  */
-  if (!riscv_merge_non_std_and_sv_ext (ibfd, &in, &out, riscv_std_sv_ext_p))
-    return NULL;
-  /* Merge non-standard supervisor extension.  */
-  if (!riscv_merge_non_std_and_sv_ext (ibfd, &in, &out, riscv_non_std_sv_ext_p))
+
+  /* Merge all non-single letter extensions with single call.  */
+  if (!riscv_merge_multi_letter_ext (ibfd, &in, &out))
     return NULL;
 
   if (xlen_in != xlen_out)
     {
       _bfd_error_handler
 	(_("error: %pB: XLEN of input (%u) doesn't match "
-	   "output (%u)."), ibfd, xlen_in, xlen_out);
+	   "output (%u)"), ibfd, xlen_in, xlen_out);
       return NULL;
     }
 
   if (xlen_in != ARCH_SIZE)
     {
       _bfd_error_handler
-	(_("error: %pB: Unsupported XLEN (%u), you might be "
-	   "using wrong emulation."), ibfd, xlen_in);
+	(_("error: %pB: unsupported XLEN (%u), you might be "
+	   "using wrong emulation"), ibfd, xlen_in);
       return NULL;
     }
 
@@ -3035,6 +2949,7 @@ riscv_merge_attributes (bfd *ibfd, struc
   obj_attribute *in_attr;
   obj_attribute *out_attr;
   bfd_boolean result = TRUE;
+  bfd_boolean priv_attrs_merged = FALSE;
   const char *sec_name = get_elf_backend_data (ibfd)->obj_attrs_section;
   unsigned int i;
 
@@ -3089,20 +3004,78 @@ riscv_merge_attributes (bfd *ibfd, struc
 	      out_attr[Tag_RISCV_arch].s = merged_arch;
 	  }
 	break;
+
       case Tag_RISCV_priv_spec:
       case Tag_RISCV_priv_spec_minor:
       case Tag_RISCV_priv_spec_revision:
-	if (out_attr[i].i != in_attr[i].i)
+	/* If we have handled the priv attributes, then skip it.  */
+	if (!priv_attrs_merged)
 	  {
-	    _bfd_error_handler
-	      (_("error: %pB: conflicting priv spec version "
-		 "(major/minor/revision)."), ibfd);
-	    result = FALSE;
+	    unsigned int Tag_a = Tag_RISCV_priv_spec;
+	    unsigned int Tag_b = Tag_RISCV_priv_spec_minor;
+	    unsigned int Tag_c = Tag_RISCV_priv_spec_revision;
+	    enum riscv_priv_spec_class in_priv_spec;
+	    enum riscv_priv_spec_class out_priv_spec;
+
+	    /* Get the priv spec class from elf attribute numbers.  */
+	    riscv_get_priv_spec_class_from_numbers (in_attr[Tag_a].i,
+						    in_attr[Tag_b].i,
+						    in_attr[Tag_c].i,
+						    &in_priv_spec);
+	    riscv_get_priv_spec_class_from_numbers (out_attr[Tag_a].i,
+						    out_attr[Tag_b].i,
+						    out_attr[Tag_c].i,
+						    &out_priv_spec);
+
+	    /* Allow to link the object without the priv specs.  */
+	    if (out_priv_spec == PRIV_SPEC_CLASS_NONE)
+	      {
+		out_attr[Tag_a].i = in_attr[Tag_a].i;
+		out_attr[Tag_b].i = in_attr[Tag_b].i;
+		out_attr[Tag_c].i = in_attr[Tag_c].i;
+	      }
+	    else if (in_priv_spec != PRIV_SPEC_CLASS_NONE
+		     && in_priv_spec != out_priv_spec)
+	      {
+		_bfd_error_handler
+		  (_("warning: %pB use privilege spec version %u.%u.%u but "
+		     "the output use version %u.%u.%u"),
+		   ibfd,
+		   in_attr[Tag_a].i,
+		   in_attr[Tag_b].i,
+		   in_attr[Tag_c].i,
+		   out_attr[Tag_a].i,
+		   out_attr[Tag_b].i,
+		   out_attr[Tag_c].i);
+
+		/* The priv spec v1.9.1 can not be linked with other spec
+		   versions since the conflicts.  We plan to drop the
+		   v1.9.1 in a year or two, so this confict should be
+		   removed in the future.  */
+		if (in_priv_spec == PRIV_SPEC_CLASS_1P9P1
+		    || out_priv_spec == PRIV_SPEC_CLASS_1P9P1)
+		  {
+		    _bfd_error_handler
+		      (_("warning: privilege spec version 1.9.1 can not be "
+			 "linked with other spec versions"));
+		  }
+
+		/* Update the output priv spec to the newest one.  */
+		if (in_priv_spec > out_priv_spec)
+		  {
+		    out_attr[Tag_a].i = in_attr[Tag_a].i;
+		    out_attr[Tag_b].i = in_attr[Tag_b].i;
+		    out_attr[Tag_c].i = in_attr[Tag_c].i;
+		  }
+	      }
+	    priv_attrs_merged = TRUE;
 	  }
 	break;
+
       case Tag_RISCV_unaligned_access:
 	out_attr[i].i |= in_attr[i].i;
 	break;
+
       case Tag_RISCV_stack_align:
 	if (out_attr[i].i == 0)
 	  out_attr[i].i = in_attr[i].i;
@@ -3112,11 +3085,12 @@ riscv_merge_attributes (bfd *ibfd, struc
 	  {
 	    _bfd_error_handler
 	      (_("error: %pB use %u-byte stack aligned but the output "
-		 "use %u-byte stack aligned."),
+		 "use %u-byte stack aligned"),
 	       ibfd, in_attr[i].i, out_attr[i].i);
 	    result = FALSE;
 	  }
 	break;
+
       default:
 	result &= _bfd_elf_merge_unknown_attribute_low (ibfd, obfd, i);
       }
@@ -3224,7 +3198,7 @@ _bfd_riscv_elf_merge_private_bfd_data (b
 
   return TRUE;
 
-fail:
+ fail:
   bfd_set_error (bfd_error_bad_value);
   return FALSE;
 }
@@ -3488,7 +3462,7 @@ _bfd_riscv_relax_call (bfd *abfd, asecti
 		       bfd_boolean undefined_weak ATTRIBUTE_UNUSED)
 {
   bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
-  bfd_signed_vma foff = symval - (sec_addr (sec) + rel->r_offset);
+  bfd_vma foff = symval - (sec_addr (sec) + rel->r_offset);
   bfd_boolean near_zero = (symval + RISCV_IMM_REACH/2) < RISCV_IMM_REACH;
   bfd_vma auipc, jalr;
   int rd, r_type, len = 4, rvc = elf_elfheader (abfd)->e_flags & EF_RISCV_RVC;
@@ -3502,7 +3476,7 @@ _bfd_riscv_relax_call (bfd *abfd, asecti
       if (sym_sec->output_section == sec->output_section
 	  && sym_sec->output_section != bfd_abs_section_ptr)
 	max_alignment = (bfd_vma) 1 << sym_sec->output_section->alignment_power;
-      foff += (foff < 0 ? -max_alignment : max_alignment);
+      foff += ((bfd_signed_vma) foff < 0 ? -max_alignment : max_alignment);
     }
 
   /* See if this function call can be shortened.  */
@@ -4128,7 +4102,9 @@ _bfd_riscv_relax_section (bfd *abfd, ase
 	      undefined_weak = TRUE;
 	    }
 
-	  if (h->plt.offset != MINUS_ONE)
+	  /* This line has to match the check in riscv_elf_relocate_section
+	     in the R_RISCV_CALL[_PLT] case.  */
+	  if (bfd_link_pic (info) && h->plt.offset != MINUS_ONE)
 	    {
 	      sym_sec = htab->elf.splt;
 	      symval = h->plt.offset;
@@ -4138,15 +4114,16 @@ _bfd_riscv_relax_section (bfd *abfd, ase
 	      symval = 0;
 	      sym_sec = bfd_und_section_ptr;
 	    }
-	  else if (h->root.u.def.section->output_section == NULL
-		   || (h->root.type != bfd_link_hash_defined
-		       && h->root.type != bfd_link_hash_defweak))
-	    continue;
-	  else
+	  else if ((h->root.type == bfd_link_hash_defined
+		    || h->root.type == bfd_link_hash_defweak)
+		   && h->root.u.def.section != NULL
+		   && h->root.u.def.section->output_section != NULL)
 	    {
 	      symval = h->root.u.def.value;
 	      sym_sec = h->root.u.def.section;
 	    }
+	  else
+	    continue;
 
 	  if (h->type != STT_FUNC)
 	    reserve_size =
@@ -4196,7 +4173,7 @@ _bfd_riscv_relax_section (bfd *abfd, ase
 
   ret = TRUE;
 
-fail:
+ fail:
   if (relocs != data->relocs)
     free (relocs);
   riscv_free_pcgp_relocs(&pcgp_relocs, abfd, sec);
@@ -4339,6 +4316,7 @@ riscv_elf_obj_attrs_arg_type (int tag)
 #define elf_info_to_howto_rel		     NULL
 #define elf_info_to_howto		     riscv_info_to_howto_rela
 #define bfd_elfNN_bfd_relax_section	     _bfd_riscv_relax_section
+#define bfd_elfNN_mkobject		     elfNN_riscv_mkobject
 
 #define elf_backend_init_index_section	     _bfd_elf_init_1_index_section
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-properties.c ./bfd/elf-properties.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-properties.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-properties.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF program property support.
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -86,7 +86,7 @@ _bfd_elf_parse_gnu_properties (bfd *abfd
 
   if (note->descsz < 8 || (note->descsz % align_size) != 0)
     {
-bad_size:
+    bad_size:
       _bfd_error_handler
 	(_("warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"),
 	 abfd, note->type, note->descsz);
@@ -186,7 +186,7 @@ bad_size:
 	(_("warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"),
 	 abfd, note->type, type);
 
-next:
+    next:
       ptr += (datasz + (align_size - 1)) & ~ (align_size - 1);
     }
 
@@ -703,6 +703,8 @@ _bfd_elf_convert_gnu_properties (bfd *ib
   if (size > bfd_section_size (isec))
     {
       contents = (bfd_byte *) bfd_malloc (size);
+      if (contents == NULL)
+	return FALSE;
       free (*ptr);
       *ptr = contents;
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-s390-common.c ./bfd/elf-s390-common.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-s390-common.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-s390-common.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* IBM S/390-specific support for ELF 32 and 64 bit functions
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
    Contributed by Andreas Krebbel.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -170,7 +170,7 @@ s390_elf_allocate_ifunc_dyn_relocs (stru
   struct elf_dyn_relocs *p;
   struct elf_link_hash_table *htab;
   struct elf_s390_link_hash_entry *eh = (struct elf_s390_link_hash_entry*)h;
-  struct elf_dyn_relocs **head = &eh->dyn_relocs;
+  struct elf_dyn_relocs **head = &h->dyn_relocs;
 
   htab = elf_hash_table (info);
   eh->ifunc_resolver_address = h->root.u.def.value;
@@ -212,7 +212,7 @@ s390_elf_allocate_ifunc_dyn_relocs (stru
       return TRUE;
     }
 
-keep:
+ keep:
   /* Without checking h->plt.refcount here we allocate a PLT slot.
      When setting plt.refcount in check_relocs it might not have been
      known that this will be an IFUNC symol.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-s390.h ./bfd/elf-s390.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-s390.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-s390.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* S/390-specific support for ELF.
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-strtab.c ./bfd/elf-strtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-strtab.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-strtab.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF strtab with GC and suffix merging support.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
    Written by Jakub Jelinek <jakub@redhat.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -95,7 +95,7 @@ struct elf_strtab_hash *
 _bfd_elf_strtab_init (void)
 {
   struct elf_strtab_hash *table;
-  bfd_size_type amt = sizeof (struct elf_strtab_hash);
+  size_t amt = sizeof (struct elf_strtab_hash);
 
   table = (struct elf_strtab_hash *) bfd_malloc (amt);
   if (table == NULL)
@@ -245,13 +245,16 @@ _bfd_elf_strtab_save (struct elf_strtab_
 void
 _bfd_elf_strtab_restore (struct elf_strtab_hash *tab, void *buf)
 {
-  size_t idx, curr_size = tab->size;
+  size_t idx, curr_size = tab->size, save_size;
   struct strtab_save *save = (struct strtab_save *) buf;
 
   BFD_ASSERT (tab->sec_size == 0);
-  BFD_ASSERT (save->size <= curr_size);
-  tab->size = save->size;
-  for (idx = 1; idx < save->size; ++idx)
+  save_size = 1;
+  if (save != NULL)
+    save_size = save->size;
+  BFD_ASSERT (save_size <= curr_size);
+  tab->size = save_size;
+  for (idx = 1; idx < save_size; ++idx)
     tab->array[idx]->refcount = save->refcount[idx];
 
   for (; idx < curr_size; ++idx)
@@ -439,9 +442,8 @@ _bfd_elf_strtab_finalize (struct elf_str
 	}
     }
 
-alloc_failure:
-  if (array)
-    free (array);
+ alloc_failure:
+  free (array);
 
   /* Assign positions to the strings we want to keep.  */
   sec_size = 1;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-vxworks.c ./bfd/elf-vxworks.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-vxworks.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-vxworks.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* VxWorks support for ELF
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -295,4 +295,17 @@ elf_vxworks_finish_dynamic_entry (bfd *o
   return TRUE;
 }
 
+/* Add dynamic tags.  */
 
+bfd_boolean
+_bfd_elf_maybe_vxworks_add_dynamic_tags (bfd *output_bfd,
+					 struct bfd_link_info *info,
+					 bfd_boolean need_dynamic_reloc)
+{
+  struct elf_link_hash_table *htab = elf_hash_table (info);
+  return (_bfd_elf_add_dynamic_tags (output_bfd, info,
+				     need_dynamic_reloc)
+	  && (!htab->dynamic_sections_created
+	      || htab->target_os != is_vxworks
+	      || elf_vxworks_add_dynamic_entries (output_bfd, info)));
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-vxworks.h ./bfd/elf-vxworks.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elf-vxworks.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elf-vxworks.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* VxWorks support for ELF
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -33,4 +33,5 @@ bfd_boolean elf_vxworks_create_dynamic_s
   (bfd *, struct bfd_link_info *, asection **);
 bfd_boolean elf_vxworks_add_dynamic_entries (bfd *, struct bfd_link_info *);
 bfd_boolean elf_vxworks_finish_dynamic_entry (bfd *, Elf_Internal_Dyn *);
-
+bfd_boolean _bfd_elf_maybe_vxworks_add_dynamic_tags
+  (bfd *, struct bfd_link_info *, bfd_boolean);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-aarch64.c ./bfd/elfxx-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-aarch64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-aarch64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* AArch64-specific support for ELF.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-aarch64.h ./bfd/elfxx-aarch64.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-aarch64.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-aarch64.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* AArch64-specific backend routines.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-ia64.c ./bfd/elfxx-ia64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-ia64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-ia64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* IA-64 support for 64-bit ELF
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -685,7 +685,7 @@ ia64_elf_install_value (bfd_byte *hit_ad
 	 slot 2: bits 23..63 in t1 */
 
       /* First, clear the bits that form the 64 bit constant.  */
-      t0 &= ~(0x3ffffLL << 46);
+      t0 &= ~(0x3ffffULL << 46);
       t1 &= ~(0x7fffffLL
 	      | ((  (0x07fLL << 13) | (0x1ffLL << 27)
 		    | (0x01fLL << 22) | (0x001LL << 21)
@@ -714,7 +714,7 @@ ia64_elf_install_value (bfd_byte *hit_ad
 	 slot 2: bits 23..63 in t1 */
 
       /* First, clear the bits that form the 64 bit constant.  */
-      t0 &= ~(0x3ffffLL << 46);
+      t0 &= ~(0x3ffffULL << 46);
       t1 &= ~(0x7fffffLL
 	      | ((1LL << 36 | 0xfffffLL << 13) << 23));
 
@@ -744,7 +744,7 @@ ia64_elf_install_value (bfd_byte *hit_ad
       if (err)
 	return bfd_reloc_overflow;
 
-      dword &= ~(0x1ffffffffffLL << shift);
+      dword &= ~(0x1ffffffffffULL << shift);
       dword |= (insn << shift);
       bfd_putl64 (dword, hit_addr);
       break;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-ia64.h ./bfd/elfxx-ia64.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-ia64.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-ia64.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* IA-64 support for 64-bit ELF
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-mips.c ./bfd/elfxx-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-mips.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-mips.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* MIPS-specific support for ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    Most of the information added by Ian Lance Taylor, Cygnus Support,
    <ian@cygnus.com>.
@@ -462,9 +462,6 @@ struct mips_elf_link_hash_table
   /* True if we are targetting R6 compact branches.  */
   bfd_boolean compact_branches;
 
-  /* True if we're generating code for VxWorks.  */
-  bfd_boolean is_vxworks;
-
   /* True if we already reported the small-data section overflow.  */
   bfd_boolean small_data_overflow_reported;
 
@@ -530,9 +527,6 @@ struct mips_elf_link_hash_table
      returns null.  */
   asection *(*add_stub_section) (const char *, asection *, asection *);
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* Is the PLT header compressed?  */
   unsigned int plt_header_is_comp : 1;
 };
@@ -540,8 +534,9 @@ struct mips_elf_link_hash_table
 /* Get the MIPS ELF linker hash table from a link_info structure.  */
 
 #define mips_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == MIPS_ELF_DATA ? ((struct mips_elf_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == MIPS_ELF_DATA)		\
+   ? (struct mips_elf_link_hash_table *) (p)->hash : NULL)
 
 /* A structure used to communicate with htab_traverse callbacks.  */
 struct mips_htab_traverse_info
@@ -703,13 +698,13 @@ typedef struct
 
 /* These are the constants used to swap the bitfields in a crinfo.  */
 
-#define CRINFO_CTYPE (0x1)
+#define CRINFO_CTYPE (0x1U)
 #define CRINFO_CTYPE_SH (31)
-#define CRINFO_RTYPE (0xf)
+#define CRINFO_RTYPE (0xfU)
 #define CRINFO_RTYPE_SH (27)
-#define CRINFO_DIST2TO (0xff)
+#define CRINFO_DIST2TO (0xffU)
 #define CRINFO_DIST2TO_SH (19)
-#define CRINFO_RELVADDR (0x7ffff)
+#define CRINFO_RELVADDR (0x7ffffU)
 #define CRINFO_RELVADDR_SH (0)
 
 /* A compact relocation info has long (3 words) or short (2 words)
@@ -904,7 +899,8 @@ static bfd *reldyn_sorting_bfd;
 
 /* The name of the dynamic relocation section.  */
 #define MIPS_ELF_REL_DYN_NAME(INFO) \
-  (mips_elf_hash_table (INFO)->is_vxworks ? ".rela.dyn" : ".rel.dyn")
+  (mips_elf_hash_table (INFO)->root.target_os == is_vxworks \
+   ? ".rela.dyn" : ".rel.dyn")
 
 /* In case we're on a 32-bit machine, construct a 64-bit "-1" value
    from smaller values.  Start with zero, widen, *then* decrement.  */
@@ -919,7 +915,8 @@ static bfd *reldyn_sorting_bfd;
 
 /* The offset of $gp from the beginning of the .got section.  */
 #define ELF_MIPS_GP_OFFSET(INFO) \
-  (mips_elf_hash_table (INFO)->is_vxworks ? 0x0 : 0x7ff0)
+  (mips_elf_hash_table (INFO)->root.target_os == is_vxworks \
+   ? 0x0 : 0x7ff0)
 
 /* The maximum size of the GOT for it to be addressable using 16-bit
    offsets from $gp.  */
@@ -1374,7 +1371,7 @@ _bfd_mips_elf_new_section_hook (bfd *abf
   if (!sec->used_by_bfd)
     {
       struct _mips_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+      size_t amt = sizeof (*sdata);
 
       sdata = bfd_zalloc (abfd, amt);
       if (sdata == NULL)
@@ -1413,18 +1410,23 @@ _bfd_mips_elf_read_ecoff_info (bfd *abfd
   /* The symbolic header contains absolute file offsets and sizes to
      read.  */
 #define READ(ptr, offset, count, size, type)				\
-  if (symhdr->count == 0)						\
-    debug->ptr = NULL;							\
-  else									\
+  do									\
     {									\
-      bfd_size_type amt = (bfd_size_type) size * symhdr->count;		\
-      debug->ptr = bfd_malloc (amt);					\
-      if (debug->ptr == NULL)						\
+      size_t amt;							\
+      debug->ptr = NULL;						\
+      if (symhdr->count == 0)						\
+	break;								\
+      if (_bfd_mul_overflow (size, symhdr->count, &amt))		\
+	{								\
+	  bfd_set_error (bfd_error_file_too_big);			\
+	  goto error_return;						\
+	}								\
+      if (bfd_seek (abfd, symhdr->offset, SEEK_SET) != 0)		\
 	goto error_return;						\
-      if (bfd_seek (abfd, symhdr->offset, SEEK_SET) != 0		\
-	  || bfd_bread (debug->ptr, amt, abfd) != amt)			\
+      debug->ptr = (type) _bfd_malloc_and_read (abfd, amt, amt);	\
+      if (debug->ptr == NULL)						\
 	goto error_return;						\
-    }
+    } while (0)
 
   READ (line, cbLineOffset, cbLine, sizeof (unsigned char), unsigned char *);
   READ (external_dnr, cbDnOffset, idnMax, swap->external_dnr_size, void *);
@@ -1445,30 +1447,18 @@ _bfd_mips_elf_read_ecoff_info (bfd *abfd
   return TRUE;
 
  error_return:
-  if (ext_hdr != NULL)
-    free (ext_hdr);
-  if (debug->line != NULL)
-    free (debug->line);
-  if (debug->external_dnr != NULL)
-    free (debug->external_dnr);
-  if (debug->external_pdr != NULL)
-    free (debug->external_pdr);
-  if (debug->external_sym != NULL)
-    free (debug->external_sym);
-  if (debug->external_opt != NULL)
-    free (debug->external_opt);
-  if (debug->external_aux != NULL)
-    free (debug->external_aux);
-  if (debug->ss != NULL)
-    free (debug->ss);
-  if (debug->ssext != NULL)
-    free (debug->ssext);
-  if (debug->external_fdr != NULL)
-    free (debug->external_fdr);
-  if (debug->external_rfd != NULL)
-    free (debug->external_rfd);
-  if (debug->external_ext != NULL)
-    free (debug->external_ext);
+  free (ext_hdr);
+  free (debug->line);
+  free (debug->external_dnr);
+  free (debug->external_pdr);
+  free (debug->external_sym);
+  free (debug->external_opt);
+  free (debug->external_aux);
+  free (debug->ss);
+  free (debug->ssext);
+  free (debug->external_fdr);
+  free (debug->external_rfd);
+  free (debug->external_ext);
   return FALSE;
 }
 
@@ -1613,30 +1603,19 @@ mips_elf_create_procedure_table (void *h
      matters, but someday it might).  */
   s->map_head.link_order = NULL;
 
-  if (epdr != NULL)
-    free (epdr);
-  if (rpdr != NULL)
-    free (rpdr);
-  if (esym != NULL)
-    free (esym);
-  if (ss != NULL)
-    free (ss);
-  if (sv != NULL)
-    free (sv);
-
+  free (epdr);
+  free (rpdr);
+  free (esym);
+  free (ss);
+  free (sv);
   return TRUE;
 
  error_return:
-  if (epdr != NULL)
-    free (epdr);
-  if (rpdr != NULL)
-    free (rpdr);
-  if (esym != NULL)
-    free (esym);
-  if (ss != NULL)
-    free (ss);
-  if (sv != NULL)
-    free (sv);
+  free (epdr);
+  free (rpdr);
+  free (esym);
+  free (ss);
+  free (sv);
   return FALSE;
 }
 
@@ -3839,7 +3818,7 @@ mips_elf_create_local_got_entry (bfd *ab
   MIPS_ELF_PUT_WORD (abfd, value, htab->root.sgot->contents + entry->gotidx);
 
   /* These GOT entries need a dynamic relocation on VxWorks.  */
-  if (htab->is_vxworks)
+  if (htab->root.target_os == is_vxworks)
     {
       Elf_Internal_Rela outrel;
       asection *s;
@@ -4184,7 +4163,7 @@ mips_elf_allocate_dynamic_relocations (b
   s = mips_elf_rel_dyn_section (info, FALSE);
   BFD_ASSERT (s != NULL);
 
-  if (htab->is_vxworks)
+  if (htab->root.target_os == is_vxworks)
     s->size += n * MIPS_ELF_RELA_SIZE (abfd);
   else
     {
@@ -4420,7 +4399,7 @@ mips_elf_resolve_got_page_ref (void **re
       Elf_Internal_Sym *isym;
 
       /* Read in the symbol.  */
-      isym = bfd_sym_from_r_symndx (&htab->sym_cache, ref->u.abfd,
+      isym = bfd_sym_from_r_symndx (&htab->root.sym_cache, ref->u.abfd,
 				    ref->symndx);
       if (isym == NULL)
 	{
@@ -4570,7 +4549,7 @@ mips_elf_count_got_symbols (struct mips_
 	   entry if it was only used for relocations; those relocations
 	   will be against the null or section symbol instead of H.  */
 	h->global_got_area = GGA_NONE;
-      else if (htab->is_vxworks
+      else if (htab->root.target_os == is_vxworks
 	       && h->got_only_for_calls
 	       && h->root.plt.plist->mips_offset != MINUS_ONE)
 	/* On VxWorks, calls can refer directly to the .got.plt entry;
@@ -5284,7 +5263,7 @@ mips_elf_create_got_section (bfd *abfd,
 static bfd_boolean
 is_gott_symbol (struct bfd_link_info *info, struct elf_link_hash_entry *h)
 {
-  return (mips_elf_hash_table (info)->is_vxworks
+  return (mips_elf_hash_table (info)->root.target_os == is_vxworks
 	  && bfd_link_pic (info)
 	  && (strcmp (h->root.root.string, "__GOTT_BASE__") == 0
 	      || strcmp (h->root.root.string, "__GOTT_INDEX__") == 0));
@@ -5388,7 +5367,7 @@ mips_elf_nullify_got_load (bfd *input_bf
   if (mips16_reloc_p (r_type)
       && (((x >> 22) & 0x3ff) == 0x3d3				/* LW */
 	  || ((x >> 22) & 0x3ff) == 0x3c7))			/* LD */
-    x = (0x3cd << 22) | (x & (7 << 16)) << 3;			/* LI */
+    x = (0x3cdU << 22) | (x & (7 << 16)) << 3;			/* LI */
   else if (micromips_reloc_p (r_type)
 	   && ((x >> 26) & 0x37) == 0x37)			/* LW/LD */
     x = (0xc << 26) | (x & (0x1f << 21));			/* ADDIU */
@@ -5644,11 +5623,12 @@ mips_elf_calculate_relocation (bfd *abfd
 	}
       else
 	{
-	  bfd_boolean reject_undefined
-	    = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
-	       || ELF_ST_VISIBILITY (h->root.other) != STV_DEFAULT);
+          bfd_boolean reject_undefined
+	    = (info->unresolved_syms_in_objects == RM_DIAGNOSE
+	       && !info->warn_unresolved_syms)
+	    || ELF_ST_VISIBILITY (h->root.other) != STV_DEFAULT;
 
-	  (*info->callbacks->undefined_symbol)
+	  info->callbacks->undefined_symbol
 	    (info, h->root.root.root.string, input_bfd,
 	     input_section, relocation->r_offset, reject_undefined);
 
@@ -5921,7 +5901,7 @@ mips_elf_calculate_relocation (bfd *abfd
 	{
 	  /* On VxWorks, CALL relocations should refer to the .got.plt
 	     entry, which is initialized to point at the PLT stub.  */
-	  if (htab->is_vxworks
+	  if (htab->root.target_os == is_vxworks
 	      && (call_hi16_reloc_p (r_type)
 		  || call_lo16_reloc_p (r_type)
 		  || call16_reloc_p (r_type)))
@@ -5941,7 +5921,7 @@ mips_elf_calculate_relocation (bfd *abfd
 		MIPS_ELF_PUT_WORD (dynobj, symbol, htab->root.sgot->contents + g);
 	    }
 	}
-      else if (!htab->is_vxworks
+      else if (htab->root.target_os != is_vxworks
 	       && (call16_reloc_p (r_type) || got16_reloc_p (r_type)))
 	/* The calculation below does not involve "g".  */
 	break;
@@ -6223,7 +6203,7 @@ mips_elf_calculate_relocation (bfd *abfd
     case R_MICROMIPS_CALL16:
       /* VxWorks does not have separate local and global semantics for
 	 R_MIPS*_GOT16; every relocation evaluates to "G".  */
-      if (!htab->is_vxworks && local_p)
+      if (htab->root.target_os != is_vxworks && local_p)
 	{
 	  value = mips_elf_got16_entry (abfd, input_bfd, info,
 					symbol + addend, !was_local_p);
@@ -6602,7 +6582,7 @@ mips_elf_perform_relocation (struct bfd_
 	}
 
       /* Make this the JALX opcode.  */
-      x = (x & ~(0x3f << 26)) | (jalx_opcode << 26);
+      x = (x & ~(0x3fu << 26)) | (jalx_opcode << 26);
     }
   else if (cross_mode_jump_p && b_reloc_p (r_type))
     {
@@ -6762,7 +6742,8 @@ mips_elf_create_dynamic_relocation (bfd
      in the relocation.  */
   if (h != NULL && ! SYMBOL_REFERENCES_LOCAL (info, &h->root))
     {
-      BFD_ASSERT (htab->is_vxworks || h->global_got_area != GGA_NONE);
+      BFD_ASSERT (htab->root.target_os == is_vxworks
+		  || h->global_got_area != GGA_NONE);
       indx = h->root.dynindx;
       if (SGI_COMPAT (output_bfd))
 	defined_p = h->root.def_regular;
@@ -6821,7 +6802,7 @@ mips_elf_create_dynamic_relocation (bfd
   if (defined_p && r_type != R_MIPS_REL32)
     *addendp += symbol;
 
-  if (htab->is_vxworks)
+  if (htab->root.target_os == is_vxworks)
     /* VxWorks uses non-relative relocations for this.  */
     outrel[0].r_info = ELF32_R_INFO (indx, R_MIPS_32);
   else
@@ -6867,7 +6848,7 @@ mips_elf_create_dynamic_relocation (bfd
 	 (sreloc->contents
 	  + sreloc->reloc_count * sizeof (Elf64_Mips_External_Rel)));
     }
-  else if (htab->is_vxworks)
+  else if (htab->root.target_os == is_vxworks)
     {
       /* VxWorks uses RELA rather than REL dynamic relocations.  */
       outrel[0].r_addend = *addendp;
@@ -7133,7 +7114,7 @@ _bfd_mips_elf_symbol_processing (bfd *ab
 	{
 	  /* Initialize the small common section.  */
 	  mips_elf_scom_section.name = ".scommon";
-	  mips_elf_scom_section.flags = SEC_IS_COMMON;
+	  mips_elf_scom_section.flags = SEC_IS_COMMON | SEC_SMALL_DATA;
 	  mips_elf_scom_section.output_section = &mips_elf_scom_section;
 	  mips_elf_scom_section.symbol = &mips_elf_scom_symbol;
 	  mips_elf_scom_section.symbol_ptr_ptr = &mips_elf_scom_symbol_ptr;
@@ -7279,7 +7260,7 @@ _bfd_mips_elf_eh_frame_address_size (bfd
 bfd_boolean
 _bfd_mips_elf_name_local_section_symbols (bfd *abfd)
 {
-  return SGI_COMPAT (abfd);
+  return elf_elfheader (abfd)->e_type == ET_REL && SGI_COMPAT (abfd);
 }
 
 /* Work over a section just before writing it out.  This routine is
@@ -7420,10 +7401,7 @@ _bfd_mips_elf_section_processing (bfd *a
 
 /* Handle a MIPS specific section when reading an object file.  This
    is called when elfcode.h finds a section with an unknown type.
-   This routine supports both the 32-bit and 64-bit ELF ABI.
-
-   FIXME: We need to handle the SHF_MIPS_GPREL flag, but I'm not sure
-   how to.  */
+   This routine supports both the 32-bit and 64-bit ELF ABI.  */
 
 bfd_boolean
 _bfd_mips_elf_section_from_shdr (bfd *abfd,
@@ -7512,6 +7490,9 @@ _bfd_mips_elf_section_from_shdr (bfd *ab
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
     return FALSE;
 
+  if (hdr->sh_flags & SHF_MIPS_GPREL)
+    flags |= SEC_SMALL_DATA;
+
   if (flags)
     {
       if (!bfd_set_section_flags (hdr->bfd_section,
@@ -7820,7 +7801,7 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd
       /* Fall through.  */
     case SHN_MIPS_SCOMMON:
       *secp = bfd_make_section_old_way (abfd, ".scommon");
-      (*secp)->flags |= SEC_IS_COMMON;
+      (*secp)->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
       *valp = sym->st_size;
       break;
 
@@ -7830,7 +7811,7 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd
 	{
 	  asymbol *elf_text_symbol;
 	  asection *elf_text_section;
-	  bfd_size_type amt = sizeof (asection);
+	  size_t amt = sizeof (asection);
 
 	  elf_text_section = bfd_zalloc (abfd, amt);
 	  if (elf_text_section == NULL)
@@ -7871,7 +7852,7 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd
 	{
 	  asymbol *elf_data_symbol;
 	  asection *elf_data_section;
-	  bfd_size_type amt = sizeof (asection);
+	  size_t amt = sizeof (asection);
 
 	  elf_data_section = bfd_zalloc (abfd, amt);
 	  if (elf_data_section == NULL)
@@ -7990,7 +7971,7 @@ _bfd_mips_elf_create_dynamic_sections (b
 
   /* The psABI requires a read-only .dynamic section, but the VxWorks
      EABI doesn't.  */
-  if (!htab->is_vxworks)
+  if (htab->root.target_os != is_vxworks)
     {
       s = bfd_get_linker_section (abfd, ".dynamic");
       if (s != NULL)
@@ -8138,7 +8119,7 @@ _bfd_mips_elf_create_dynamic_sections (b
     return FALSE;
 
   /* Do the usual VxWorks handling.  */
-  if (htab->is_vxworks
+  if (htab->root.target_os == is_vxworks
       && !elf_vxworks_create_dynamic_sections (abfd, info, &htab->srelplt2))
     return FALSE;
 
@@ -8671,10 +8652,8 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
       call_reloc_p = FALSE;
 
       /* Set CONSTRAIN_SYMBOL_P if we need to take the relocation
-	 into account when deciding how to define the symbol.
-	 Relocations in nonallocatable sections such as .pdr and
-	 .debug* should have no effect.  */
-      constrain_symbol_p = ((sec->flags & SEC_ALLOC) != 0);
+	 into account when deciding how to define the symbol.  */
+      constrain_symbol_p = TRUE;
 
       switch (r_type)
 	{
@@ -8742,7 +8721,8 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	    elf_hash_table (info)->dynobj = dynobj = abfd;
 	  if (!mips_elf_create_got_section (dynobj, info))
 	    return FALSE;
-	  if (htab->is_vxworks && !bfd_link_pic (info))
+	  if (htab->root.target_os == is_vxworks
+	      && !bfd_link_pic (info))
 	    {
 	      _bfd_error_handler
 		/* xgettext:c-format */
@@ -8788,7 +8768,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	     against a read-only section.  */
 	  if ((bfd_link_pic (info)
 	       || (h != NULL
-		   && !htab->is_vxworks
+		   && htab->root.target_os != is_vxworks
 		   && strcmp (h->root.root.string, "__gnu_local_gp") != 0
 		   && !(!info->nocopyreloc
 			&& !PIC_OBJECT_P (abfd)
@@ -8830,7 +8810,8 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 		 relocations related to taking the function's address.
 		 This doesn't apply to VxWorks, where CALL relocs refer
 		 to a .got.plt entry instead of a normal .got entry.  */
-	      if (!htab->is_vxworks && (!can_make_dynamic_p || !call_reloc_p))
+	      if (htab->root.target_os != is_vxworks
+		  && (!can_make_dynamic_p || !call_reloc_p))
 		((struct mips_elf_link_hash_entry *) h)->no_fn_stub = TRUE;
 	    }
 
@@ -8855,7 +8836,8 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
       else if (call_lo16_reloc_p (r_type)
 	       || got_lo16_reloc_p (r_type)
 	       || got_disp_reloc_p (r_type)
-	       || (got16_reloc_p (r_type) && htab->is_vxworks))
+	       || (got16_reloc_p (r_type)
+		   && htab->root.target_os == is_vxworks))
 	{
 	  /* We may need a local GOT entry for this relocation.  We
 	     don't count R_MIPS_GOT_PAGE because we can estimate the
@@ -9219,7 +9201,7 @@ allocate_dynrelocs (struct elf_link_hash
 
   /* VxWorks executables are handled elsewhere; we only need to
      allocate relocations in shared objects.  */
-  if (htab->is_vxworks && !bfd_link_pic (info))
+  if (htab->root.target_os == is_vxworks && !bfd_link_pic (info))
     return TRUE;
 
   /* Ignore indirect symbols.  All relocations against such symbols
@@ -9264,7 +9246,7 @@ allocate_dynrelocs (struct elf_link_hash
 	     VxWorks does not enforce the same mapping between the GOT
 	     and the symbol table, so the same requirement does not
 	     apply there.  */
-	  if (!htab->is_vxworks)
+	  if (htab->root.target_os != is_vxworks)
 	    {
 	      if (hmips->global_got_area > GGA_RELOC_ONLY)
 		hmips->global_got_area = GGA_RELOC_ONLY;
@@ -9305,12 +9287,21 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
   hmips = (struct mips_elf_link_hash_entry *) h;
 
   /* Make sure we know what is going on here.  */
-  BFD_ASSERT (dynobj != NULL
-	      && (h->needs_plt
-		  || h->is_weakalias
-		  || (h->def_dynamic
-		      && h->ref_regular
-		      && !h->def_regular)));
+  if (dynobj == NULL
+      || (! h->needs_plt
+	  && ! h->is_weakalias
+	  && (! h->def_dynamic
+	      || ! h->ref_regular
+	      || h->def_regular)))
+    {
+      if (h->type == STT_GNU_IFUNC)
+	_bfd_error_handler (_("IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"),
+			    h->root.root.string);
+      else
+	_bfd_error_handler (_("non-dynamic symbol %s in dynamic symbol table"),
+			    h->root.root.string);
+      return TRUE;
+    }
 
   hmips = (struct mips_elf_link_hash_entry *) h;
 
@@ -9322,7 +9313,9 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
 
      Traditional stubs are only available on SVR4 psABI-based systems;
      VxWorks always uses PLTs instead.  */
-  if (!htab->is_vxworks && h->needs_plt && !hmips->no_fn_stub)
+  if (htab->root.target_os != is_vxworks
+      && h->needs_plt
+      && !hmips->no_fn_stub)
     {
       if (! elf_hash_table (info)->dynamic_sections_created)
 	return TRUE;
@@ -9371,7 +9364,7 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
 	     entry is 16 bytes and the PLT0 entry is 32 bytes.
 	     Encourage better cache usage by aligning.  We do this
 	     lazily to avoid pessimizing traditional objects.  */
-	  if (!htab->is_vxworks
+	  if (htab->root.target_os != is_vxworks
 	      && !bfd_set_section_alignment (htab->root.splt, 5))
 	    return FALSE;
 
@@ -9383,21 +9376,23 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
 
 	  /* On non-VxWorks targets, the first two entries in .got.plt
 	     are reserved.  */
-	  if (!htab->is_vxworks)
+	  if (htab->root.target_os != is_vxworks)
 	    htab->plt_got_index
 	      += (get_elf_backend_data (dynobj)->got_header_size
 		  / MIPS_ELF_GOT_SIZE (dynobj));
 
 	  /* On VxWorks, also allocate room for the header's
 	     .rela.plt.unloaded entries.  */
-	  if (htab->is_vxworks && !bfd_link_pic (info))
+	  if (htab->root.target_os == is_vxworks
+	      && !bfd_link_pic (info))
 	    htab->srelplt2->size += 2 * sizeof (Elf32_External_Rela);
 
 	  /* Now work out the sizes of individual PLT entries.  */
-	  if (htab->is_vxworks && bfd_link_pic (info))
+	  if (htab->root.target_os == is_vxworks
+	      && bfd_link_pic (info))
 	    htab->plt_mips_entry_size
 	      = 4 * ARRAY_SIZE (mips_vxworks_shared_plt_entry);
-	  else if (htab->is_vxworks)
+	  else if (htab->root.target_os == is_vxworks)
 	    htab->plt_mips_entry_size
 	      = 4 * ARRAY_SIZE (mips_vxworks_exec_plt_entry);
 	  else if (newabi_p)
@@ -9440,7 +9435,7 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
 	 standard entry actually has to be used as the stub ends with a J
 	 instruction.  */
       if (newabi_p
-	  || htab->is_vxworks
+	  || htab->root.target_os == is_vxworks
 	  || hmips->call_stub
 	  || hmips->call_fp_stub)
 	{
@@ -9482,12 +9477,12 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
 	hmips->use_plt_entry = TRUE;
 
       /* Make room for the R_MIPS_JUMP_SLOT relocation.  */
-      htab->root.srelplt->size += (htab->is_vxworks
+      htab->root.srelplt->size += (htab->root.target_os == is_vxworks
 				   ? MIPS_ELF_RELA_SIZE (dynobj)
 				   : MIPS_ELF_REL_SIZE (dynobj));
 
       /* Make room for the .rela.plt.unloaded relocations.  */
-      if (htab->is_vxworks && !bfd_link_pic (info))
+      if (htab->root.target_os == is_vxworks && !bfd_link_pic (info))
 	htab->srelplt2->size += 3 * sizeof (Elf32_External_Rela);
 
       /* All relocations against this symbol that could have been made
@@ -9552,7 +9547,7 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
     }
   if ((h->root.u.def.section->flags & SEC_ALLOC) != 0)
     {
-      if (htab->is_vxworks)
+      if (htab->root.target_os == is_vxworks)
 	srel->size += sizeof (Elf32_External_Rela);
       else
 	mips_elf_allocate_dynamic_relocations (dynobj, info, 1);
@@ -9635,7 +9630,7 @@ mips_elf_lay_out_got (bfd *output_bfd, s
   /* Allocate room for the reserved entries.  VxWorks always reserves
      3 entries; other objects only reserve 2 entries.  */
   BFD_ASSERT (g->assigned_low_gotno == 0);
-  if (htab->is_vxworks)
+  if (htab->root.target_os == is_vxworks)
     htab->reserved_gotno = 3;
   else
     htab->reserved_gotno = 2;
@@ -9667,7 +9662,7 @@ mips_elf_lay_out_got (bfd *output_bfd, s
 	}
     }
 
-  if (htab->is_vxworks)
+  if (htab->root.target_os == is_vxworks)
     /* There's no need to allocate page entries for VxWorks; R_MIPS*_GOT16
        relocations against local symbols evaluate to "G", and the EABI does
        not include R_MIPS_GOT_PAGE.  */
@@ -9692,7 +9687,8 @@ mips_elf_lay_out_got (bfd *output_bfd, s
   /* VxWorks does not support multiple GOTs.  It initializes $gp to
      __GOTT_BASE__[__GOTT_INDEX__], the value of which is set by the
      dynamic loader.  */
-  if (!htab->is_vxworks && s->size > MIPS_ELF_GOT_MAX_SIZE (info))
+  if (htab->root.target_os != is_vxworks
+      && s->size > MIPS_ELF_GOT_MAX_SIZE (info))
     {
       if (!mips_elf_multi_got (output_bfd, info, s, page_gotno))
 	return FALSE;
@@ -9718,7 +9714,7 @@ mips_elf_lay_out_got (bfd *output_bfd, s
 		  == g->global_gotno + g->local_gotno + g->tls_gotno);
 
       /* Each VxWorks GOT entry needs an explicit relocation.  */
-      if (htab->is_vxworks && bfd_link_pic (info))
+      if (htab->root.target_os == is_vxworks && bfd_link_pic (info))
 	g->relocs += g->global_gotno + g->local_gotno - htab->reserved_gotno;
 
       /* Allocate room for the TLS relocations.  */
@@ -9900,7 +9896,7 @@ mips_elf_set_plt_sym_value (struct mips_
       /* For VxWorks, point at the PLT load stub rather than the lazy
 	 resolution stub; this stub will become the canonical function
 	 address.  */
-      if (htab->is_vxworks)
+      if (htab->root.target_os == is_vxworks)
 	val += 8;
 
       h->root.root.u.def.section = htab->root.splt;
@@ -9965,9 +9961,9 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	  BFD_ASSERT (htab->root.sgotplt->size == 0);
 	  BFD_ASSERT (htab->root.splt->size == 0);
 
-	  if (htab->is_vxworks && bfd_link_pic (info))
+	  if (htab->root.target_os == is_vxworks && bfd_link_pic (info))
 	    size = 4 * ARRAY_SIZE (mips_vxworks_shared_plt0_entry);
-	  else if (htab->is_vxworks)
+	  else if (htab->root.target_os == is_vxworks)
 	    size = 4 * ARRAY_SIZE (mips_vxworks_exec_plt0_entry);
 	  else if (ABI_64_P (output_bfd))
 	    size = 4 * ARRAY_SIZE (mips_n64_exec_plt0_entry);
@@ -10083,7 +10079,8 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	     room for an extra nop to fill the delay slot.  This is
 	     for CPUs without load interlocking.  */
 	  if (! LOAD_INTERLOCKS_P (output_bfd)
-	      && ! htab->is_vxworks && s->size > 0)
+	      && htab->root.target_os != is_vxworks
+	      && s->size > 0)
 	    s->size += 4;
 	}
       else if (! CONST_STRNEQ (name, ".init")
@@ -10141,7 +10138,9 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	  && !MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_DEBUG, 0))
 	return FALSE;
 
-      if (reltext && (SGI_COMPAT (output_bfd) || htab->is_vxworks))
+      if (reltext
+	  && (SGI_COMPAT (output_bfd)
+	      || htab->root.target_os == is_vxworks))
 	info->flags |= DF_TEXTREL;
 
       if ((info->flags & DF_TEXTREL) != 0)
@@ -10160,7 +10159,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	return FALSE;
 
       sreldyn = mips_elf_rel_dyn_section (info, FALSE);
-      if (htab->is_vxworks)
+      if (htab->root.target_os == is_vxworks)
 	{
 	  /* VxWorks uses .rela.dyn instead of .rel.dyn.  It does not
 	     use any of the DT_MIPS_* tags.  */
@@ -10240,7 +10239,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_PLTGOT, 0))
 	    return FALSE;
 	}
-      if (htab->is_vxworks
+      if (htab->root.target_os == is_vxworks
 	  && !elf_vxworks_add_dynamic_entries (output_bfd, info))
 	return FALSE;
     }
@@ -10882,7 +10881,7 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd
   dynobj = elf_hash_table (info)->dynobj;
   hmips = (struct mips_elf_link_hash_entry *) h;
 
-  BFD_ASSERT (!htab->is_vxworks);
+  BFD_ASSERT (htab->root.target_os != is_vxworks);
 
   if (h->plt.plist != NULL
       && (h->plt.plist->mips_offset != MINUS_ONE
@@ -11818,7 +11817,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 	      break;
 
 	    case DT_RELAENT:
-	      BFD_ASSERT (htab->is_vxworks);
+	      BFD_ASSERT (htab->root.target_os == is_vxworks);
 	      dyn.d_un.d_val = MIPS_ELF_RELA_SIZE (dynobj);
 	      break;
 
@@ -11957,7 +11956,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 
 	    case DT_PLTREL:
 	      BFD_ASSERT (htab->use_plts_and_copy_relocs);
-	      if (htab->is_vxworks)
+	      if (htab->root.target_os == is_vxworks)
 		dyn.d_un.d_val = DT_RELA;
 	      else
 		dyn.d_un.d_val = DT_REL;
@@ -12001,7 +12000,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 
 	    default:
 	      swap_out_p = FALSE;
-	      if (htab->is_vxworks
+	      if (htab->root.target_os == is_vxworks
 		  && elf_vxworks_finish_dynamic_entry (output_bfd, &dyn))
 		swap_out_p = TRUE;
 	      break;
@@ -12026,7 +12025,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
   if (sgot != NULL && sgot->size > 0
       && !bfd_is_abs_section (sgot->output_section))
     {
-      if (htab->is_vxworks)
+      if (htab->root.target_os == is_vxworks)
 	{
 	  /* The first entry of the global offset table points to the
 	     ".dynamic" section.  The second is initialized by the
@@ -12173,7 +12172,8 @@ _bfd_mips_elf_finish_dynamic_sections (b
 					     s->contents));
 
 	    /* Clean up a dummy stub function entry in .text.  */
-	    if (htab->sstubs != NULL)
+	    if (htab->sstubs != NULL
+		&& htab->sstubs->contents != NULL)
 	      {
 		file_ptr dummy_offset;
 
@@ -12189,7 +12189,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
        increasing order of r_symndx.  The VxWorks EABI doesn't require
        this, and because the code below handles REL rather than RELA
        relocations, using it for VxWorks would be outright harmful.  */
-    if (!htab->is_vxworks)
+    if (htab->root.target_os != is_vxworks)
       {
 	s = mips_elf_rel_dyn_section (info, FALSE);
 	if (s != NULL
@@ -12211,7 +12211,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 
   if (htab->root.splt && htab->root.splt->size > 0)
     {
-      if (htab->is_vxworks)
+      if (htab->root.target_os == is_vxworks)
 	{
 	  if (bfd_link_pic (info))
 	    mips_vxworks_finish_shared_plt (output_bfd, info);
@@ -12549,7 +12549,7 @@ _bfd_mips_elf_modify_segment_map (bfd *a
 {
   asection *s;
   struct elf_segment_map *m, **pm;
-  bfd_size_type amt;
+  size_t amt;
 
   /* If there is a .reginfo section, we need a PT_MIPS_REGINFO
      segment.  */
@@ -12752,7 +12752,7 @@ _bfd_mips_elf_modify_segment_map (bfd *a
 		&& s->vma + s->size <= high)
 	      ++c;
 
-	  amt = sizeof *n + (bfd_size_type) (c - 1) * sizeof (asection *);
+	  amt = sizeof *n - sizeof (asection *) + c * sizeof (asection *);
 	  n = bfd_zalloc (abfd, amt);
 	  if (n == NULL)
 	    return FALSE;
@@ -13203,7 +13203,7 @@ _bfd_mips_elf_set_section_contents (bfd
 
       if (elf_section_data (section) == NULL)
 	{
-	  bfd_size_type amt = sizeof (struct bfd_elf_section_data);
+	  size_t amt = sizeof (struct bfd_elf_section_data);
 	  section->used_by_bfd = bfd_zalloc (abfd, amt);
 	  if (elf_section_data (section) == NULL)
 	    return FALSE;
@@ -13376,13 +13376,11 @@ _bfd_elf_mips_get_relocated_section_cont
 	    }
 	}
     }
-  if (reloc_vector != NULL)
-    free (reloc_vector);
+  free (reloc_vector);
   return data;
 
-error_return:
-  if (reloc_vector != NULL)
-    free (reloc_vector);
+ error_return:
+  free (reloc_vector);
   return NULL;
 }
 
@@ -14259,21 +14257,17 @@ _bfd_mips_elf_relax_section (bfd *abfd,
 	}
     }
 
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return TRUE;
 
  error_return:
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
-  if (contents != NULL
-      && elf_section_data (sec)->this_hdr.contents != contents)
+  if (elf_section_data (sec)->this_hdr.contents != contents)
     free (contents);
-  if (internal_relocs != NULL
-      && elf_section_data (sec)->relocs != internal_relocs)
+  if (elf_section_data (sec)->relocs != internal_relocs)
     free (internal_relocs);
 
   return FALSE;
@@ -14285,7 +14279,7 @@ struct bfd_link_hash_table *
 _bfd_mips_elf_link_hash_table_create (bfd *abfd)
 {
   struct mips_elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct mips_elf_link_hash_table);
+  size_t amt = sizeof (struct mips_elf_link_hash_table);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -14319,7 +14313,6 @@ _bfd_mips_vxworks_link_hash_table_create
 
       htab = (struct mips_elf_link_hash_table *) ret;
       htab->use_plts_and_copy_relocs = TRUE;
-      htab->is_vxworks = TRUE;
     }
   return ret;
 }
@@ -14698,7 +14691,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 	elf_gp (abfd) = (h->u.def.value
 			 + h->u.def.section->output_section->vma
 			 + h->u.def.section->output_offset);
-      else if (htab->is_vxworks
+      else if (htab->root.target_os == is_vxworks
 	       && (h = bfd_link_hash_lookup (info->hash,
 					     "_GLOBAL_OFFSET_TABLE_",
 					     FALSE, FALSE, TRUE))
@@ -15752,6 +15745,7 @@ _bfd_mips_elf_merge_private_bfd_data (bf
   /* Check to see if the input BFD actually contains any sections.  If not,
      then it has no attributes, and its flags may not have been initialized
      either, but it cannot actually cause any incompatibility.  */
+  /* FIXME: This excludes any input shared library from consideration.  */
   for (sec = ibfd->sections; sec != NULL; sec = sec->next)
     {
       /* Ignore synthetic sections and empty .text, .data and .bss sections
@@ -16652,7 +16646,9 @@ _bfd_mips_init_file_header (bfd *abfd, s
       BFD_ASSERT (htab != NULL);
     }
 
-  if (htab != NULL && htab->use_plts_and_copy_relocs && !htab->is_vxworks)
+  if (htab != NULL
+      && htab->use_plts_and_copy_relocs
+      && htab->root.target_os != is_vxworks)
     i_ehdrp->e_ident[EI_ABIVERSION] = MIPS_LIBC_ABI_MIPS_PLT;
 
   if (mips_elf_tdata (abfd)->abiflags.fp_abi == Val_GNU_MIPS_ABI_FP_64
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-mips.h ./bfd/elfxx-mips.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-mips.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-mips.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* MIPS ELF specific backend routines.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-riscv.c ./bfd/elfxx-riscv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-riscv.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-riscv.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* RISC-V-specific support for ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    Contributed by Andrew Waterman (andrew@sifive.com).
    Based on TILE-Gx and MIPS targets.
@@ -25,7 +25,6 @@
 #include "libbfd.h"
 #include "elf-bfd.h"
 #include "elf/riscv.h"
-#include "opcode/riscv.h"
 #include "libiberty.h"
 #include "elfxx-riscv.h"
 #include "safe-ctype.h"
@@ -1025,9 +1024,8 @@ riscv_elf_add_sub_reloc (bfd *abfd,
      `minor_version`: Parsing result of minor version, set to 0 if version is
      not present in arch string, but set to `default_minor_version` if
      `major_version` using default_major_version.
-     `default_major_version`: Default major version.
-     `default_minor_version`: Default minor version.
-     `std_ext_p`: True if parsing std extension.  */
+     `std_ext_p`: True if parsing std extension.
+     `use_default_version`: Set it to True if we need the default version.  */
 
 static const char *
 riscv_parsing_subset_version (riscv_parse_subset_t *rps,
@@ -1035,17 +1033,16 @@ riscv_parsing_subset_version (riscv_pars
 			      const char *p,
 			      unsigned *major_version,
 			      unsigned *minor_version,
-			      unsigned default_major_version,
-			      unsigned default_minor_version,
-			      bfd_boolean std_ext_p)
+			      bfd_boolean std_ext_p,
+			      bfd_boolean *use_default_version)
 {
   bfd_boolean major_p = TRUE;
   unsigned version = 0;
-  unsigned major = 0;
-  unsigned minor = 0;
   char np;
 
-  for (;*p; ++p)
+  *major_version = 0;
+  *minor_version = 0;
+  for (; *p; ++p)
     {
       if (*p == 'p')
 	{
@@ -1062,13 +1059,14 @@ riscv_parsing_subset_version (riscv_pars
 		}
 	      else
 		{
-		  rps->error_handler ("-march=%s: Expect number after `%dp'.",
-				      march, version);
+		  rps->error_handler
+		    (_("-march=%s: Expect number after `%dp'."),
+		     march, version);
 		  return NULL;
 		}
 	    }
 
-	  major = version;
+	  *major_version = version;
 	  major_p = FALSE;
 	  version = 0;
 	}
@@ -1079,21 +1077,15 @@ riscv_parsing_subset_version (riscv_pars
     }
 
   if (major_p)
-    major = version;
+    *major_version = version;
   else
-    minor = version;
+    *minor_version = version;
 
-  if (major == 0 && minor == 0)
-    {
-      /* We don't found any version string, use default version.  */
-      *major_version = default_major_version;
-      *minor_version = default_minor_version;
-    }
-  else
-    {
-      *major_version = major;
-      *minor_version = minor;
-    }
+  /* We can not find any version in string, need to parse default version.  */
+  if (use_default_version != NULL
+      && *major_version == 0
+      && *minor_version == 0)
+    *use_default_version = TRUE;
   return p;
 }
 
@@ -1118,82 +1110,118 @@ riscv_supported_std_ext (void)
 
 static const char *
 riscv_parse_std_ext (riscv_parse_subset_t *rps,
-		     const char *march, const char *p)
+		     const char *march,
+		     const char *p)
 {
   const char *all_std_exts = riscv_supported_std_ext ();
   const char *std_exts = all_std_exts;
-
   unsigned major_version = 0;
   unsigned minor_version = 0;
   char std_ext = '\0';
+  bfd_boolean use_default_version = FALSE;
 
   /* First letter must start with i, e or g.  */
   switch (*p)
     {
       case 'i':
-	p++;
-	p = riscv_parsing_subset_version (
-	      rps,
-	      march,
-	      p, &major_version, &minor_version,
-	      /* default_major_version= */ 2,
-	      /* default_minor_version= */ 0,
-	      /* std_ext_p= */TRUE);
-	riscv_add_subset (rps->subset_list, "i", major_version, minor_version);
+	p = riscv_parsing_subset_version (rps,
+					  march,
+					  ++p,
+					  &major_version,
+					  &minor_version,
+					  /* std_ext_p= */TRUE,
+					  &use_default_version);
+
+	/* Find the default version if needed.  */
+	if (use_default_version
+	    && rps->get_default_version != NULL)
+	  rps->get_default_version ("i",
+				    &major_version,
+				    &minor_version);
+	riscv_add_subset (rps->subset_list, "i",
+			  major_version, minor_version);
 	break;
 
       case 'e':
-	p++;
-	p = riscv_parsing_subset_version (
-	      rps,
-	      march,
-	      p, &major_version, &minor_version,
-	      /* default_major_version= */ 1,
-	      /* default_minor_version= */ 9,
-	      /* std_ext_p= */TRUE);
-
-	riscv_add_subset (rps->subset_list, "e", major_version, minor_version);
-	riscv_add_subset (rps->subset_list, "i", 2, 0);
+	p = riscv_parsing_subset_version (rps,
+					  march,
+					  ++p,
+					  &major_version,
+					  &minor_version,
+					  /* std_ext_p= */TRUE,
+					  &use_default_version);
+
+	/* Find the default version if needed.  */
+	if (use_default_version
+	    && rps->get_default_version != NULL)
+	  rps->get_default_version ("e",
+				    &major_version,
+				    &minor_version);
+	riscv_add_subset (rps->subset_list, "e",
+			  major_version, minor_version);
+
+	/* i-ext must be enabled.  */
+	if (rps->get_default_version != NULL)
+	  rps->get_default_version ("i",
+				    &major_version,
+				    &minor_version);
+	riscv_add_subset (rps->subset_list, "i",
+			  major_version, minor_version);
 
 	if (*rps->xlen > 32)
 	  {
-	    rps->error_handler ("-march=%s: rv%de is not a valid base ISA",
-				march, *rps->xlen);
+	    rps->error_handler
+	      (_("-march=%s: rv%de is not a valid base ISA"),
+	       march, *rps->xlen);
 	    return NULL;
 	  }
-
 	break;
 
       case 'g':
-	p++;
-	p = riscv_parsing_subset_version (
-	      rps,
-	      march,
-	      p, &major_version, &minor_version,
-	      /* default_major_version= */ 2,
-	      /* default_minor_version= */ 0,
-	      /* std_ext_p= */TRUE);
-	riscv_add_subset (rps->subset_list, "i", major_version, minor_version);
+	/* The g-ext shouldn't has the version, so we just
+	   skip the setting if user set a version to it.  */
+	p = riscv_parsing_subset_version (rps,
+					  march,
+					  ++p,
+					  &major_version,
+					  &minor_version,
+					  TRUE,
+					  &use_default_version);
+
+	/* i-ext must be enabled.  */
+	if (rps->get_default_version != NULL)
+	  rps->get_default_version ("i",
+				    &major_version,
+				    &minor_version);
+	riscv_add_subset (rps->subset_list, "i",
+			  major_version, minor_version);
 
 	for ( ; *std_exts != 'q'; std_exts++)
 	  {
 	    const char subset[] = {*std_exts, '\0'};
-	    riscv_add_subset (
-	      rps->subset_list, subset, major_version, minor_version);
+
+	    if (rps->get_default_version != NULL)
+	      rps->get_default_version (subset,
+					&major_version,
+					&minor_version);
+	    riscv_add_subset (rps->subset_list, subset,
+			      major_version, minor_version);
 	  }
 	break;
 
       default:
-	rps->error_handler (
-	  "-march=%s: first ISA subset must be `e', `i' or `g'", march);
+	rps->error_handler
+	  (_("-march=%s: first ISA subset must be `e', `i' or `g'"), march);
 	return NULL;
     }
 
-  while (*p)
+  /* The riscv_parsing_subset_version may set `p` to NULL, so I think we should
+     skip parsing the string if `p` is NULL or value of `p` is `\0`.  */
+  while (p != NULL && *p != '\0')
     {
       char subset[2] = {0, 0};
 
-      if (*p == 'x' || *p == 's')
+      if (*p == 'x' || *p == 's' || *p == 'z')
 	break;
 
       if (*p == '_')
@@ -1210,55 +1238,91 @@ riscv_parse_std_ext (riscv_parse_subset_
       if (std_ext != *std_exts)
 	{
 	  if (strchr (all_std_exts, std_ext) == NULL)
-	    rps->error_handler (
-	      "-march=%s: unsupported ISA subset `%c'", march, *p);
+	    rps->error_handler
+	      (_("-march=%s: unsupported ISA subset `%c'"), march, *p);
 	  else
-	    rps->error_handler (
-	      "-march=%s: ISA string is not in canonical order. `%c'",
-	      march, *p);
+	    rps->error_handler
+	      (_("-march=%s: ISA string is not in canonical order. `%c'"),
+	       march, *p);
 	  return NULL;
 	}
 
       std_exts++;
 
-      p++;
-      p = riscv_parsing_subset_version (
-	    rps,
-	    march,
-	    p, &major_version, &minor_version,
-	    /* default_major_version= */ 2,
-	    /* default_minor_version= */ 0,
-	    /* std_ext_p= */TRUE);
-
+      use_default_version = FALSE;
       subset[0] = std_ext;
-
-      riscv_add_subset (rps->subset_list, subset, major_version, minor_version);
+      p = riscv_parsing_subset_version (rps,
+					march,
+					++p,
+					&major_version,
+					&minor_version,
+					TRUE,
+					&use_default_version);
+
+      /* Find the default version if needed.  */
+      if (use_default_version
+	  && rps->get_default_version != NULL)
+	rps->get_default_version (subset,
+				  &major_version,
+				  &minor_version);
+      riscv_add_subset (rps->subset_list, subset,
+			major_version, minor_version);
     }
   return p;
 }
 
-/* Parsing function for non-standard and supervisor extensions.
+/* Classify the argument 'arch' into one of riscv_isa_ext_class_t.  */
 
-   Return Value:
-     Points to the end of extensions.
+riscv_isa_ext_class_t
+riscv_get_prefix_class (const char *arch)
+{
+  switch (*arch)
+    {
+    case 's': return RV_ISA_CLASS_S;
+    case 'x': return RV_ISA_CLASS_X;
+    case 'z': return RV_ISA_CLASS_Z;
+    default: return RV_ISA_CLASS_UNKNOWN;
+    }
+}
 
-   Arguments:
-     `rps`: Hooks and status for parsing subset.
-     `march`: Full arch string.
-     `p`: Curent parsing position.
-     `ext_type`: What kind of extensions, 'x', 's' or 'sx'.
-     `ext_type_str`: Full name for kind of extension.  */
+/* Structure describing parameters to use when parsing a particular
+   riscv_isa_ext_class_t. One of these should be provided for each
+   possible class, except RV_ISA_CLASS_UNKNOWN.  */
+
+typedef struct riscv_parse_config
+{
+  /* Class of the extension. */
+  riscv_isa_ext_class_t class;
+
+  /* Lower-case prefix string for error printing
+     and internal parser usage, e.g. "z", "x".  */
+  const char *prefix;
+
+  /* Predicate which is used for checking whether
+     this is a "known" extension. For 'x',
+     it always returns true (since they are by
+     definition non-standard and cannot be known.  */
+  bfd_boolean (*ext_valid_p) (const char *);
+} riscv_parse_config_t;
+
+/* Parse a generic prefixed extension.
+   `rps`: Hooks and status for parsing subset.
+   `march`: The full architecture string as passed in by "-march=...".
+   `p`: Point from which to start parsing the -march string.
+   `config`: What class of extensions to parse, predicate funcs,
+   and strings to use in error reporting.  */
 
 static const char *
-riscv_parse_sv_or_non_std_ext (riscv_parse_subset_t *rps,
-			       const char *march,
-			       const char *p,
-			       const char *ext_type,
-			       const char *ext_type_str)
+riscv_parse_prefixed_ext (riscv_parse_subset_t *rps,
+			  const char *march,
+			  const char *p,
+			  const riscv_parse_config_t *config)
 {
   unsigned major_version = 0;
   unsigned minor_version = 0;
-  size_t ext_type_len = strlen (ext_type);
+  const char *last_name;
+  riscv_isa_ext_class_t class;
+  bfd_boolean use_default_version;
 
   while (*p)
     {
@@ -1268,12 +1332,10 @@ riscv_parse_sv_or_non_std_ext (riscv_par
 	  continue;
 	}
 
-      if (strncmp (p, ext_type, ext_type_len) != 0)
-	break;
-
-      /* It's non-standard supervisor extension if it prefix with sx.  */
-      if ((ext_type[0] == 's') && (ext_type_len == 1)
-	  && (*(p + 1) == 'x'))
+      /* Assert that the current extension specifier matches our parsing
+	 class.  */
+      class = riscv_get_prefix_class (p);
+      if (class != config->class)
 	break;
 
       char *subset = xstrdup (p);
@@ -1283,25 +1345,67 @@ riscv_parse_sv_or_non_std_ext (riscv_par
       while (*++q != '\0' && *q != '_' && !ISDIGIT (*q))
 	;
 
+      use_default_version = FALSE;
       end_of_version =
-	riscv_parsing_subset_version (
-	  rps,
-	  march,
-	  q, &major_version, &minor_version,
-	  /* default_major_version= */ 2,
-	  /* default_minor_version= */ 0,
-	  /* std_ext_p= */FALSE);
-
+	riscv_parsing_subset_version (rps, march, q, &major_version,
+				      &minor_version, FALSE,
+				      &use_default_version);
       *q = '\0';
 
-      riscv_add_subset (rps->subset_list, subset, major_version, minor_version);
+      /* Check that the name is valid.
+	 For 'x', anything goes but it cannot simply be 'x'.
+	 For 's', it must be known from a list and cannot simply be 's'.
+	 For 'z', it must be known from a list and cannot simply be 'z'.  */
+
+      /* Check that the extension name is well-formed.  */
+      if (!config->ext_valid_p (subset))
+	{
+	  rps->error_handler
+	    (_("-march=%s: Invalid or unknown %s ISA extension: '%s'"),
+	     march, config->prefix, subset);
+	  free (subset);
+	  return NULL;
+	}
+
+      /* Check that the last item is not the same as this.  */
+      last_name = rps->subset_list->tail->name;
+      if (!strcasecmp (last_name, subset))
+	{
+	  rps->error_handler
+	    (_("-march=%s: Duplicate %s ISA extension: \'%s\'"),
+	     march, config->prefix, subset);
+	  free (subset);
+	  return NULL;
+	}
+
+      /* Check that we are in alphabetical order within the subset.  */
+      if (!strncasecmp (last_name, config->prefix, 1)
+	  && strcasecmp (last_name, subset) > 0)
+	{
+	  rps->error_handler
+	    (_("\
+-march=%s: %s ISA extension not in alphabetical order: \'%s\' must come before \'%s\'."),
+	     march, config->prefix, subset, last_name);
+	  free (subset);
+	  return NULL;
+	}
+
+      /* Find the default version if needed.  */
+      if (use_default_version
+         && rps->get_default_version != NULL)
+       rps->get_default_version (subset,
+                                 &major_version,
+                                 &minor_version);
+      riscv_add_subset (rps->subset_list, subset,
+                       major_version, minor_version);
+
       free (subset);
       p += end_of_version - subset;
 
       if (*p != '\0' && *p != '_')
 	{
-	  rps->error_handler ("-march=%s: %s must seperate with _",
-			      march, ext_type_str);
+	  rps->error_handler (_("-march=%s: %s must separate with _"),
+			      march, config->prefix);
 	  return NULL;
 	}
     }
@@ -1309,6 +1413,84 @@ riscv_parse_sv_or_non_std_ext (riscv_par
   return p;
 }
 
+/* List of Z-class extensions that binutils should know about.
+   Whether or not a particular entry is in this list will
+   dictate if gas/ld will accept its presence in the -march
+   string.
+
+   Example: To add an extension called "Zbb" (bitmanip base extension),
+   add "zbb" string to the list (all lowercase).
+
+   Keep this list alphabetically ordered.  */
+
+static const char * const riscv_std_z_ext_strtab[] =
+  {
+    "zicsr", NULL
+  };
+
+/* Same as `riscv_std_z_ext_strtab', but for S-class extensions.  */
+
+static const char * const riscv_std_s_ext_strtab[] =
+  {
+    NULL
+  };
+
+/* For the extension EXT, search through the list of known extensions
+   KNOWN_EXTS for a match, and return TRUE if found.  */
+
+static bfd_boolean
+riscv_multi_letter_ext_valid_p (const char *ext,
+				const char *const *known_exts)
+{
+  size_t i;
+
+  for (i = 0; known_exts[i]; ++i)
+    if (!strcmp (ext, known_exts[i]))
+      return TRUE;
+
+  return FALSE;
+}
+
+/* Predicator function for x-prefixed extensions.
+   Anything goes, except the literal 'x'.  */
+
+static bfd_boolean
+riscv_ext_x_valid_p (const char *arg)
+{
+  if (!strcasecmp (arg, "x"))
+    return FALSE;
+
+  return TRUE;
+}
+
+/* Predicator functions for z-prefixed extensions.
+   Only known z-extensions are permitted.  */
+
+static bfd_boolean
+riscv_ext_z_valid_p (const char *arg)
+{
+  return riscv_multi_letter_ext_valid_p (arg, riscv_std_z_ext_strtab);
+}
+
+/* Predicator function for 's' prefixed extensions.
+   Must be either literal 's', or a known s-prefixed extension.  */
+
+static bfd_boolean
+riscv_ext_s_valid_p (const char *arg)
+{
+  return riscv_multi_letter_ext_valid_p (arg, riscv_std_s_ext_strtab);
+}
+
+/* Parsing order that is specified by the ISA manual.  */
+
+static const riscv_parse_config_t parse_config[] =
+{
+   {RV_ISA_CLASS_S, "s", riscv_ext_s_valid_p},
+   {RV_ISA_CLASS_Z, "z", riscv_ext_z_valid_p},
+   {RV_ISA_CLASS_X, "x", riscv_ext_x_valid_p},
+   {RV_ISA_CLASS_UNKNOWN, NULL, NULL}
+};
+
 /* Function for parsing arch string.
 
    Return Value:
@@ -1323,6 +1505,7 @@ riscv_parse_subset (riscv_parse_subset_t
 		    const char *arch)
 {
   const char *p = arch;
+  size_t i;
 
   if (strncmp (p, "rv32", 4) == 0)
     {
@@ -1336,8 +1519,15 @@ riscv_parse_subset (riscv_parse_subset_t
     }
   else
     {
-      rps->error_handler ("-march=%s: ISA string must begin with rv32 or rv64",
-			  arch);
+      /* Arch string shouldn't be NULL or empty here.  However,
+	 it might be empty only when we failed to merge the arch
+	 string in the riscv_merge_attributes.  We have already
+	 issued the correct error message in another side, so do
+	 not issue this error when the arch string is empty.  */
+      if (strlen (arch))
+	rps->error_handler (
+	  _("-march=%s: ISA string must begin with rv32 or rv64"),
+	  arch);
       return FALSE;
     }
 
@@ -1347,30 +1537,17 @@ riscv_parse_subset (riscv_parse_subset_t
   if (p == NULL)
     return FALSE;
 
-  /* Parsing non-standard extension.  */
-  p = riscv_parse_sv_or_non_std_ext (
-	rps, arch, p, "x", "non-standard extension");
+  /* Parse the different classes of extensions in the specified order.  */
+  for (i = 0; i < ARRAY_SIZE (parse_config); ++i) {
+    p = riscv_parse_prefixed_ext (rps, arch, p, &parse_config[i]);
 
-  if (p == NULL)
-    return FALSE;
-
-  /* Parsing supervisor extension.  */
-  p = riscv_parse_sv_or_non_std_ext (
-	rps, arch, p, "s", "supervisor extension");
-
-  if (p == NULL)
-    return FALSE;
-
-  /* Parsing non-standard supervisor extension.  */
-  p = riscv_parse_sv_or_non_std_ext (
-	rps, arch, p, "sx", "non-standard supervisor extension");
-
-  if (p == NULL)
-    return FALSE;
+    if (p == NULL)
+      return FALSE;
+  }
 
   if (*p != '\0')
     {
-      rps->error_handler ("-march=%s: unexpected ISA string at end: %s",
+      rps->error_handler (_("-march=%s: unexpected ISA string at end: %s"),
 			  arch, p);
       return FALSE;
     }
@@ -1378,31 +1555,35 @@ riscv_parse_subset (riscv_parse_subset_t
   if (riscv_lookup_subset (rps->subset_list, "e")
       && riscv_lookup_subset (rps->subset_list, "f"))
     {
-      rps->error_handler ("-march=%s: rv32e does not support the `f' extension",
-			  arch);
+      rps->error_handler
+	(_("-march=%s: rv32e does not support the `f' extension"),
+	 arch);
       return FALSE;
     }
 
   if (riscv_lookup_subset (rps->subset_list, "d")
       && !riscv_lookup_subset (rps->subset_list, "f"))
     {
-      rps->error_handler ("-march=%s: `d' extension requires `f' extension",
-			  arch);
+      rps->error_handler
+	(_("-march=%s: `d' extension requires `f' extension"),
+	 arch);
       return FALSE;
     }
 
   if (riscv_lookup_subset (rps->subset_list, "q")
       && !riscv_lookup_subset (rps->subset_list, "d"))
     {
-      rps->error_handler ("-march=%s: `q' extension requires `d' extension",
-			  arch);
+      rps->error_handler
+	(_("-march=%s: `q' extension requires `d' extension"),
+	 arch);
       return FALSE;
     }
 
   if (riscv_lookup_subset (rps->subset_list, "q") && *rps->xlen < 64)
     {
-      rps->error_handler ("-march=%s: rv32 does not support the `q' extension",
-			  arch);
+      rps->error_handler
+	(_("-march=%s: rv32 does not support the `q' extension"),
+	 arch);
       return FALSE;
     }
   return TRUE;
@@ -1413,7 +1594,8 @@ riscv_parse_subset (riscv_parse_subset_t
 void
 riscv_add_subset (riscv_subset_list_t *subset_list,
 		  const char *subset,
-		  int major, int minor)
+		  int major,
+		  int minor)
 {
   riscv_subset_t *s = xmalloc (sizeof *s);
 
@@ -1437,10 +1619,10 @@ riscv_subset_t *
 riscv_lookup_subset (const riscv_subset_list_t *subset_list,
 		     const char *subset)
 {
-  return riscv_lookup_subset_version (
-	   subset_list, subset,
-	   RISCV_DONT_CARE_VERSION,
-	   RISCV_DONT_CARE_VERSION);
+  return riscv_lookup_subset_version
+    (subset_list, subset,
+     RISCV_DONT_CARE_VERSION,
+     RISCV_DONT_CARE_VERSION);
 }
 
 /* Find subset in list with version checking, return NULL if not found.  */
@@ -1487,7 +1669,7 @@ riscv_release_subset_list (riscv_subset_
 
 /* Return the number of digits for the input.  */
 
-static size_t
+size_t
 riscv_estimate_digit (unsigned num)
 {
   size_t digit = 0;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-riscv.h ./bfd/elfxx-riscv.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-riscv.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-riscv.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* RISC-V ELF specific backend routines.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    Contributed by Andrew Waterman (andrew@sifive.com).
    Based on MIPS target.
@@ -22,6 +22,7 @@
 
 #include "elf/common.h"
 #include "elf/internal.h"
+#include "opcode/riscv.h"
 
 extern reloc_howto_type *
 riscv_reloc_name_lookup (bfd *, const char *);
@@ -72,6 +73,9 @@ typedef struct {
   void (*error_handler) (const char *,
 			 ...) ATTRIBUTE_PRINTF_1;
   unsigned *xlen;
+  void (*get_default_version) (const char *,
+                              unsigned int *,
+                              unsigned int *);
 } riscv_parse_subset_t;
 
 extern bfd_boolean
@@ -86,3 +90,35 @@ riscv_release_subset_list (riscv_subset_
 
 extern char *
 riscv_arch_str (unsigned, const riscv_subset_list_t *);
+
+extern size_t
+riscv_estimate_digit (unsigned);
+
+/* ISA extension name class. E.g. "zbb" corresponds to RV_ISA_CLASS_Z,
+   "xargs" corresponds to RV_ISA_CLASS_X, etc.  Order is important
+   here.  */
+
+typedef enum riscv_isa_ext_class
+  {
+   RV_ISA_CLASS_S,
+   RV_ISA_CLASS_Z,
+   RV_ISA_CLASS_X,
+   RV_ISA_CLASS_UNKNOWN
+  } riscv_isa_ext_class_t;
+
+/* Classify the argument 'ext' into one of riscv_isa_ext_class_t.  */
+
+riscv_isa_ext_class_t
+riscv_get_prefix_class (const char *);
+
+extern int
+riscv_get_priv_spec_class (const char *, enum riscv_priv_spec_class *);
+
+extern int
+riscv_get_priv_spec_class_from_numbers (unsigned int,
+					unsigned int,
+					unsigned int,
+					enum riscv_priv_spec_class *);
+
+extern const char *
+riscv_get_priv_spec_name (enum riscv_priv_spec_class);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-sparc.c ./bfd/elfxx-sparc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-sparc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-sparc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* SPARC-specific support for ELF
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -690,9 +690,6 @@ struct _bfd_sparc_elf_link_hash_entry
 {
   struct elf_link_hash_entry elf;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
 #define GOT_UNKNOWN     0
 #define GOT_NORMAL      1
 #define GOT_TLS_GD      2
@@ -1028,7 +1025,6 @@ link_hash_newfunc (struct bfd_hash_entry
       struct _bfd_sparc_elf_link_hash_entry *eh;
 
       eh = (struct _bfd_sparc_elf_link_hash_entry *) entry;
-      eh->dyn_relocs = NULL;
       eh->tls_type = GOT_UNKNOWN;
       eh->has_got_reloc = 0;
       eh->has_non_got_reloc = 0;
@@ -1136,7 +1132,7 @@ struct bfd_link_hash_table *
 _bfd_sparc_elf_link_hash_table_create (bfd *abfd)
 {
   struct _bfd_sparc_elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct _bfd_sparc_elf_link_hash_table);
+  size_t amt = sizeof (struct _bfd_sparc_elf_link_hash_table);
 
   ret = (struct _bfd_sparc_elf_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -1220,7 +1216,7 @@ _bfd_sparc_elf_create_dynamic_sections (
   if (!_bfd_elf_create_dynamic_sections (dynobj, info))
     return FALSE;
 
-  if (htab->is_vxworks)
+  if (htab->elf.target_os == is_vxworks)
     {
       if (!elf_vxworks_create_dynamic_sections (dynobj, info, &htab->srelplt2))
 	return FALSE;
@@ -1289,37 +1285,6 @@ _bfd_sparc_elf_copy_indirect_symbol (str
   edir = (struct _bfd_sparc_elf_link_hash_entry *) dir;
   eind = (struct _bfd_sparc_elf_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect && dir->got.refcount <= 0)
     {
       edir->tls_type = eind->tls_type;
@@ -1426,7 +1391,8 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  /* A local symbol.  */
-	  isym = bfd_sym_from_r_symndx (&htab->sym_cache, abfd, r_symndx);
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, abfd,
+					r_symndx);
 	  if (isym == NULL)
 	    return FALSE;
 
@@ -1790,7 +1756,7 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
-		head = &((struct _bfd_sparc_elf_link_hash_entry *) h)->dyn_relocs;
+		head = &h->dyn_relocs;
 	      else
 		{
 		  /* Track dynamic relocs needed for local syms too.
@@ -1811,7 +1777,7 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 		  p = ((struct elf_dyn_relocs *)
 		       bfd_alloc (htab->elf.dynobj, amt));
 		  if (p == NULL)
@@ -1923,23 +1889,6 @@ _bfd_sparc_elf_fixup_symbol (struct bfd_
   return TRUE;
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = _bfd_sparc_elf_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -2036,7 +1985,7 @@ _bfd_sparc_elf_adjust_dynamic_symbol (st
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (!readonly_dynrelocs (h))
+  if (!_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -2128,7 +2077,8 @@ allocate_dynrelocs (struct elf_link_hash
 	      s->size = htab->plt_header_size;
 
 	      /* Allocate space for the .rela.plt.unloaded relocations.  */
-	      if (htab->is_vxworks && !bfd_link_pic (info))
+	      if (htab->elf.target_os == is_vxworks
+		  && !bfd_link_pic (info))
 		htab->srelplt2->size = sizeof (Elf32_External_Rela) * 2;
 	    }
 
@@ -2180,7 +2130,7 @@ allocate_dynrelocs (struct elf_link_hash
 		htab->elf.irelplt->size += SPARC_ELF_RELA_BYTES (htab);
 	    }
 
-	  if (htab->is_vxworks)
+	  if (htab->elf.target_os == is_vxworks)
 	    {
 	      /* Allocate space for the .got.plt entry.  */
 	      htab->elf.sgotplt->size += 4;
@@ -2257,7 +2207,7 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -2272,7 +2222,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -2283,11 +2233,11 @@ allocate_dynrelocs (struct elf_link_hash
 	    }
 	}
 
-      if (htab->is_vxworks)
+      if (htab->elf.target_os == is_vxworks)
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      if (strcmp (p->sec->output_section->name, ".tls_vars") == 0)
 		*pp = p->next;
@@ -2298,7 +2248,7 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility or in PIE.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  /* An undefined weak symbol is never
@@ -2313,7 +2263,7 @@ allocate_dynrelocs (struct elf_link_hash
 		     can branch to 0 without PLT.  */
 		  struct elf_dyn_relocs **pp;
 
-		  for (pp = &eh->dyn_relocs; (p = *pp) != NULL;)
+		  for (pp = &h->dyn_relocs; (p = *pp) != NULL;)
 		    if (p->pc_count == 0)
 		      *pp = p->next;
 		    else
@@ -2323,7 +2273,7 @@ allocate_dynrelocs (struct elf_link_hash
 			pp = &p->next;
 		      }
 
-		  if (eh->dyn_relocs != NULL)
+		  if (h->dyn_relocs != NULL)
 		    {
 		      /* Make sure undefined weak symbols are output
 			 as dynamic symbols in PIEs for dynamic non-GOT
@@ -2333,7 +2283,7 @@ allocate_dynrelocs (struct elf_link_hash
 		    }
 		}
 	      else
-		eh->dyn_relocs = NULL;
+		h->dyn_relocs = NULL;
 	    }
 
 	  /* Make sure undefined weak symbols are output as a dynamic
@@ -2377,13 +2327,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * SPARC_ELF_RELA_BYTES (htab);
@@ -2411,33 +2361,6 @@ allocate_local_dynrelocs (void **slot, v
   return allocate_dynrelocs (h, inf);
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Return true if the dynamic symbol for a given section should be
    omitted when creating a shared library.  */
 
@@ -2512,7 +2435,7 @@ _bfd_sparc_elf_size_dynamic_sections (bf
 		     linker script /DISCARD/, so we'll be discarding
 		     the relocs too.  */
 		}
-	      else if (htab->is_vxworks
+	      else if (htab->elf.target_os == is_vxworks
 		       && strcmp (p->sec->output_section->name,
 				  ".tls_vars") == 0)
 		{
@@ -2582,7 +2505,7 @@ _bfd_sparc_elf_size_dynamic_sections (bf
   htab_traverse (htab->loc_hash_table, allocate_local_dynrelocs, info);
 
   if (! ABI_64_P (output_bfd)
-      && !htab->is_vxworks
+      && htab->elf.target_os != is_vxworks
       && elf_hash_table (info)->dynamic_sections_created)
     {
       /* Make space for the trailing nop in .plt.  */
@@ -2668,38 +2591,10 @@ _bfd_sparc_elf_size_dynamic_sections (bf
 #define add_dynamic_entry(TAG, VAL) \
   _bfd_elf_add_dynamic_entry (info, TAG, VAL)
 
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->elf.srelplt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (!add_dynamic_entry (DT_RELA, 0)
-	  || !add_dynamic_entry (DT_RELASZ, 0)
-	  || !add_dynamic_entry (DT_RELAENT,
-				 SPARC_ELF_RELA_BYTES (htab)))
+      if (!_bfd_elf_maybe_vxworks_add_dynamic_tags (output_bfd, info,
+						    TRUE))
 	return FALSE;
 
-      /* If any dynamic relocs apply to a read-only section,
-	 then we need a DT_TEXTREL entry.  */
-      if ((info->flags & DF_TEXTREL) == 0)
-	elf_link_hash_traverse (&htab->elf, maybe_set_textrel, info);
-
-      if (info->flags & DF_TEXTREL)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-
       if (ABI_64_P (output_bfd))
 	{
 	  int reg;
@@ -2755,9 +2650,6 @@ _bfd_sparc_elf_size_dynamic_sections (bf
 		eht->dynsymcount++;
 	      }
 	}
-      if (htab->is_vxworks
-	  && !elf_vxworks_add_dynamic_entries (output_bfd, info))
-	return FALSE;
     }
 #undef add_dynamic_entry
 
@@ -2770,7 +2662,7 @@ _bfd_sparc_elf_new_section_hook (bfd *ab
   if (!sec->used_by_bfd)
     {
       struct _bfd_sparc_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+      size_t amt = sizeof (*sdata);
 
       sdata = bfd_zalloc (abfd, amt);
       if (sdata == NULL)
@@ -2907,7 +2799,8 @@ _bfd_sparc_elf_relocate_section (bfd *ou
   sreloc = elf_section_data (input_section)->sreloc;
   /* We have to handle relocations in vxworks .tls_vars sections
      specially, because the dynamic loader is 'weird'.  */
-  is_vxworks_tls = (htab->is_vxworks && bfd_link_pic (info)
+  is_vxworks_tls = (htab->elf.target_os == is_vxworks
+		    && bfd_link_pic (info)
 		    && !strcmp (input_section->output_section->name,
 				".tls_vars"));
 
@@ -4139,7 +4032,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 
       if (r == bfd_reloc_continue)
 	{
-do_relocation:
+	do_relocation:
 	  r = _bfd_final_link_relocate (howto, input_bfd, input_section,
 					contents, rel->r_offset,
 					relocation, rel->r_addend);
@@ -4350,7 +4243,7 @@ _bfd_sparc_elf_finish_dynamic_symbol (bf
 	abort ();
 
       /* Fill in the entry in the .rela.plt section.  */
-      if (htab->is_vxworks)
+      if (htab->elf.target_os == is_vxworks)
 	{
 	  /* Work out the index of this PLT entry.  */
 	  rela_index = ((h->plt.offset - htab->plt_header_size)
@@ -4552,7 +4445,7 @@ _bfd_sparc_elf_finish_dynamic_symbol (bf
      ".got" section.  Likewise _PROCEDURE_LINKAGE_TABLE_ and ".plt".  */
   if (sym != NULL
       && (h == htab->elf.hdynamic
-	  || (!htab->is_vxworks
+	  || (htab->elf.target_os != is_vxworks
 	      && (h == htab->elf.hgot || h == htab->elf.hplt))))
     sym->st_shndx = SHN_ABS;
 
@@ -4586,7 +4479,7 @@ sparc_finish_dyn (bfd *output_bfd, struc
 
       bed->s->swap_dyn_in (dynobj, dyncon, &dyn);
 
-      if (htab->is_vxworks && dyn.d_tag == DT_PLTGOT)
+      if (htab->elf.target_os == is_vxworks && dyn.d_tag == DT_PLTGOT)
 	{
 	  /* On VxWorks, DT_PLTGOT should point to the start of the GOT,
 	     not to the start of the PLT.  */
@@ -4597,7 +4490,7 @@ sparc_finish_dyn (bfd *output_bfd, struc
 	      bed->s->swap_dyn_out (output_bfd, &dyn, dyncon);
 	    }
 	}
-      else if (htab->is_vxworks
+      else if (htab->elf.target_os == is_vxworks
 	       && elf_vxworks_finish_dynamic_entry (output_bfd, &dyn))
 	bed->s->swap_dyn_out (output_bfd, &dyn, dyncon);
       else if (abi_64_p && dyn.d_tag == DT_SPARC_REGISTER)
@@ -4822,7 +4715,7 @@ _bfd_sparc_elf_finish_dynamic_sections (
       /* Initialize the contents of the .plt section.  */
       if (splt->size > 0)
 	{
-	  if (htab->is_vxworks)
+	  if (htab->elf.target_os == is_vxworks)
 	    {
 	      if (bfd_link_pic (info))
 		sparc_vxworks_finish_shared_plt (output_bfd, info);
@@ -4840,7 +4733,8 @@ _bfd_sparc_elf_finish_dynamic_sections (
 
       if (elf_section_data (splt->output_section) != NULL)
 	elf_section_data (splt->output_section)->this_hdr.sh_entsize
-	  = ((htab->is_vxworks || !ABI_64_P (output_bfd))
+	  = ((htab->elf.target_os == is_vxworks
+	      || !ABI_64_P (output_bfd))
 	     ? 0 : htab->plt_entry_size);
     }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-sparc.h ./bfd/elfxx-sparc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-sparc.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-sparc.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* SPARC ELF specific backend routines.
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -55,16 +55,10 @@ struct _bfd_sparc_elf_link_hash_table
     bfd_vma offset;
   } tls_ldm_got;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* Used by local STT_GNU_IFUNC symbols.  */
   htab_t loc_hash_table;
   void *loc_hash_memory;
 
-  /* True if the target system is VxWorks.  */
-  int is_vxworks;
-
   /* The (unloaded but important) .rela.plt.unloaded section, for VxWorks.  */
   asection *srelplt2;
 
@@ -90,8 +84,9 @@ struct _bfd_sparc_elf_link_hash_table
 /* Get the SPARC ELF linker hash table from a link_info structure.  */
 
 #define _bfd_sparc_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == SPARC_ELF_DATA ? ((struct _bfd_sparc_elf_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == SPARC_ELF_DATA)	\
+   ? (struct _bfd_sparc_elf_link_hash_table *) (p)->hash : NULL)
 
 extern reloc_howto_type *_bfd_sparc_elf_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-target.h ./bfd/elfxx-target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-target.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-target.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target definitions for NN-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -362,6 +362,10 @@
 #define ELF_TARGET_ID	GENERIC_ELF_DATA
 #endif
 
+#ifndef ELF_TARGET_OS
+#define ELF_TARGET_OS	is_normal
+#endif
+
 #ifndef ELF_OSABI
 #define ELF_OSABI ELFOSABI_NONE
 #endif
@@ -485,6 +489,9 @@
 #ifndef elf_backend_size_dynamic_sections
 #define elf_backend_size_dynamic_sections 0
 #endif
+#ifndef elf_backend_strip_zero_sized_dynamic_sections
+#define elf_backend_strip_zero_sized_dynamic_sections 0
+#endif
 #ifndef elf_backend_init_index_section
 #define elf_backend_init_index_section _bfd_void_bfd_link
 #endif
@@ -653,6 +660,9 @@
 #ifndef elf_backend_write_section
 #define elf_backend_write_section		NULL
 #endif
+#ifndef elf_backend_elfsym_local_is_section
+#define elf_backend_elfsym_local_is_section	NULL
+#endif
 #ifndef elf_backend_mips_irix_compat
 #define elf_backend_mips_irix_compat		NULL
 #endif
@@ -758,7 +768,7 @@
 #endif
 
 #ifndef elf_backend_copy_special_section_fields
-#define elf_backend_copy_special_section_fields NULL
+#define elf_backend_copy_special_section_fields _bfd_elf_copy_special_section_fields
 #endif
 
 #ifndef elf_backend_compact_eh_encoding
@@ -766,9 +776,25 @@
 #endif
 
 #ifndef elf_backend_cant_unwind_opcode
-#define elf_backend_cant_unwind_opcode 0
+#define elf_backend_cant_unwind_opcode NULL
+#endif
+
+#ifndef elf_backend_init_secondary_reloc_section
+#define elf_backend_init_secondary_reloc_section _bfd_elf_init_secondary_reloc_section
 #endif
 
+#ifndef elf_backend_slurp_secondary_reloc_section
+#define elf_backend_slurp_secondary_reloc_section _bfd_elf_slurp_secondary_reloc_section
+#endif
+
+#ifndef elf_backend_write_secondary_reloc_section
+#define elf_backend_write_secondary_reloc_section _bfd_elf_write_secondary_reloc_section
+#endif
+
+#ifndef elf_backend_symbol_section_index
+#define elf_backend_symbol_section_index NULL
+#endif
+ 
 #ifndef elf_match_priority
 #define elf_match_priority \
   (ELF_ARCH == bfd_arch_unknown ? 2 : ELF_OSABI == ELFOSABI_NONE ? 1 : 0)
@@ -780,6 +806,7 @@ static struct elf_backend_data elfNN_bed
 {
   ELF_ARCH,			/* arch */
   ELF_TARGET_ID,		/* target_id */
+  ELF_TARGET_OS,		/* target_os */
   ELF_MACHINE_CODE,		/* elf_machine_code */
   ELF_OSABI,			/* elf_osabi  */
   ELF_MAXPAGESIZE,		/* maxpagesize */
@@ -815,6 +842,7 @@ static struct elf_backend_data elfNN_bed
   elf_backend_adjust_dynamic_symbol,
   elf_backend_always_size_sections,
   elf_backend_size_dynamic_sections,
+  elf_backend_strip_zero_sized_dynamic_sections,
   elf_backend_init_index_section,
   elf_backend_relocate_section,
   elf_backend_finish_dynamic_symbol,
@@ -859,6 +887,7 @@ static struct elf_backend_data elfNN_bed
   elf_backend_can_make_lsda_relative_eh_frame,
   elf_backend_encode_eh_address,
   elf_backend_write_section,
+  elf_backend_elfsym_local_is_section,
   elf_backend_mips_irix_compat,
   elf_backend_mips_rtype_to_howto,
   elf_backend_ecoff_debug_swap,
@@ -895,6 +924,10 @@ static struct elf_backend_data elfNN_bed
   elf_backend_fixup_gnu_properties,
   elf_backend_compact_eh_encoding,
   elf_backend_cant_unwind_opcode,
+  elf_backend_symbol_section_index,
+  elf_backend_init_secondary_reloc_section,
+  elf_backend_slurp_secondary_reloc_section,
+  elf_backend_write_secondary_reloc_section,
   elf_backend_static_tls_alignment,
   elf_backend_stack_align,
   elf_backend_strtab_flags,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-tilegx.c ./bfd/elfxx-tilegx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-tilegx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-tilegx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILE-Gx-specific support for ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -785,9 +785,6 @@ struct tilegx_elf_link_hash_entry
 {
   struct elf_link_hash_entry elf;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
 #define GOT_UNKNOWN     0
 #define GOT_NORMAL      1
 #define GOT_TLS_GD      2
@@ -838,16 +835,14 @@ struct tilegx_elf_link_hash_table
   /* Whether LE transition has been disabled for some of the
      sections.  */
   bfd_boolean disable_le_transition;
-
-  /* Small local sym to section mapping cache.  */
-  struct sym_cache sym_cache;
 };
 
 
 /* Get the Tile ELF linker hash table from a link_info structure.  */
 #define tilegx_elf_hash_table(p) \
-  (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \
-  == TILEGX_ELF_DATA ? ((struct tilegx_elf_link_hash_table *) ((p)->hash)) : NULL)
+  ((is_elf_hash_table ((p)->hash)					\
+    && elf_hash_table_id (elf_hash_table (p)) == TILEGX_ELF_DATA)	\
+   ? (struct tilegx_elf_link_hash_table *) (p)->hash : NULL)
 
 #ifdef BFD64
 static bfd_vma
@@ -1356,7 +1351,6 @@ link_hash_newfunc (struct bfd_hash_entry
       struct tilegx_elf_link_hash_entry *eh;
 
       eh = (struct tilegx_elf_link_hash_entry *) entry;
-      eh->dyn_relocs = NULL;
       eh->tls_type = GOT_UNKNOWN;
     }
 
@@ -1369,7 +1363,7 @@ struct bfd_link_hash_table *
 tilegx_elf_link_hash_table_create (bfd *abfd)
 {
   struct tilegx_elf_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct tilegx_elf_link_hash_table);
+  size_t amt = sizeof (struct tilegx_elf_link_hash_table);
 
   ret = (struct tilegx_elf_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -1505,37 +1499,6 @@ tilegx_elf_copy_indirect_symbol (struct
   edir = (struct tilegx_elf_link_hash_entry *) dir;
   eind = (struct tilegx_elf_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect
       && dir->got.refcount <= 0)
     {
@@ -2003,8 +1966,7 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
-		head =
-		  &((struct tilegx_elf_link_hash_entry *) h)->dyn_relocs;
+		head = &h->dyn_relocs;
 	      else
 		{
 		  /* Track dynamic relocs needed for local syms too.
@@ -2015,7 +1977,7 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 		  void *vpp;
 		  Elf_Internal_Sym *isym;
 
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+		  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
 		    return FALSE;
@@ -2031,7 +1993,7 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 	      p = *head;
 	      if (p == NULL || p->sec != sec)
 		{
-		  bfd_size_type amt = sizeof *p;
+		  size_t amt = sizeof *p;
 		  p = ((struct elf_dyn_relocs *)
 		       bfd_alloc (htab->elf.dynobj, amt));
 		  if (p == NULL)
@@ -2119,23 +2081,6 @@ tilegx_elf_gc_mark_hook (asection *sec,
   return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = tilegx_elf_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
    dynamic object, but we're not including those sections.  We have to
@@ -2224,7 +2169,7 @@ tilegx_elf_adjust_dynamic_symbol (struct
 
   /* If we don't find any dynamic relocs in read-only sections, then
      we'll be keeping the dynamic relocs and avoiding the copy reloc.  */
-  if (!readonly_dynrelocs (h))
+  if (!_bfd_elf_readonly_dynrelocs (h))
     {
       h->non_got_ref = 0;
       return TRUE;
@@ -2271,7 +2216,6 @@ allocate_dynrelocs (struct elf_link_hash
 {
   struct bfd_link_info *info;
   struct tilegx_elf_link_hash_table *htab;
-  struct tilegx_elf_link_hash_entry *eh;
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
@@ -2380,8 +2324,7 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  eh = (struct tilegx_elf_link_hash_entry *) h;
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -2396,7 +2339,7 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -2409,12 +2352,12 @@ allocate_dynrelocs (struct elf_link_hash
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility.  */
-      if (eh->dyn_relocs != NULL
+      if (h->dyn_relocs != NULL
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    eh->dyn_relocs = NULL;
+	    h->dyn_relocs = NULL;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
@@ -2454,13 +2397,13 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * TILEGX_ELF_RELA_BYTES (htab);
@@ -2469,33 +2412,6 @@ allocate_dynrelocs (struct elf_link_hash
   return TRUE;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
-
-      info->flags |= DF_TEXTREL;
-      info->callbacks->minfo
-	(_("%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"),
-	 sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Return true if the dynamic symbol for a given section should be
    omitted when creating a shared library.  */
 
@@ -2703,50 +2619,7 @@ tilegx_elf_size_dynamic_sections (bfd *o
 	return FALSE;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in tilegx_elf_finish_dynamic_sections, but we
-	 must add the entries now so that we get the correct size for
-	 the .dynamic section.  The DT_DEBUG entry is filled in by the
-	 dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->elf.srelplt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTGOT, 0)
-	      || !add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (!add_dynamic_entry (DT_RELA, 0)
-	  || !add_dynamic_entry (DT_RELASZ, 0)
-	  || !add_dynamic_entry (DT_RELAENT, TILEGX_ELF_RELA_BYTES (htab)))
-	return FALSE;
-
-      /* If any dynamic relocs apply to a read-only section,
-	 then we need a DT_TEXTREL entry.  */
-      if ((info->flags & DF_TEXTREL) == 0)
-	elf_link_hash_traverse (&htab->elf, maybe_set_textrel, info);
-
-      if (info->flags & DF_TEXTREL)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	}
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, TRUE);
 }
 
 /* Return the base VMA address which should be subtracted from real addresses
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-tilegx.h ./bfd/elfxx-tilegx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-tilegx.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-tilegx.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILE-Gx ELF specific backend routines.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-x86.c ./bfd/elfxx-x86.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-x86.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-x86.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* x86 specific support for ELF
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -131,8 +131,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
   if (h->type == STT_GNU_IFUNC
       && h->def_regular)
     {
-      if (_bfd_elf_allocate_ifunc_dyn_relocs (info, h, &eh->dyn_relocs,
-					      &htab->readonly_dynrelocs_against_ifunc,
+      if (_bfd_elf_allocate_ifunc_dyn_relocs (info, h, &h->dyn_relocs,
 					      plt_entry_size,
 					      (htab->plt.has_plt0
 					       * plt_entry_size),
@@ -260,7 +259,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 		}
 	    }
 
-	  if (htab->target_os == is_vxworks && !bfd_link_pic (info))
+	  if (htab->elf.target_os == is_vxworks && !bfd_link_pic (info))
 	    {
 	      /* VxWorks has a second set of relocations for each PLT entry
 		 in executables.  They go in a separate relocation section,
@@ -347,7 +346,8 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	 (but if both R_386_TLS_IE_32 and R_386_TLS_IE is present, we
 	 need two), R_386_TLS_GD and R_X86_64_TLSGD need one if local
 	 symbol and two if global.  No dynamic relocation against
-	 resolved undefined weak symbol in executable.  */
+	 resolved undefined weak symbol in executable.  No dynamic
+	 relocation against non-preemptible absolute symbol.  */
       if (tls_type == GOT_TLS_IE_BOTH)
 	htab->elf.srelgot->size += 2 * htab->sizeof_reloc;
       else if ((GOT_TLS_GD_P (tls_type) && h->dynindx == -1)
@@ -359,20 +359,22 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	       && ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
 		    && !resolved_to_zero)
 		   || h->root.type != bfd_link_hash_undefweak)
-	       && (bfd_link_pic (info)
+	       && ((bfd_link_pic (info)
+		    && !(h->dynindx == -1
+			 && ABS_SYMBOL_P (h)))
 		   || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
 	htab->elf.srelgot->size += htab->sizeof_reloc;
       if (GOT_TLS_GDESC_P (tls_type))
 	{
 	  htab->elf.srelplt->size += htab->sizeof_reloc;
 	  if (bed->target_id == X86_64_ELF_DATA)
-	    htab->tlsdesc_plt = (bfd_vma) -1;
+	    htab->elf.tlsdesc_plt = (bfd_vma) -1;
 	}
     }
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
+  if (h->dyn_relocs == NULL)
     return TRUE;
 
   /* In the shared -Bsymbolic case, discard space allocated for
@@ -393,7 +395,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	{
 	  struct elf_dyn_relocs **pp;
 
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      p->count -= p->pc_count;
 	      p->pc_count = 0;
@@ -404,10 +406,10 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	    }
 	}
 
-      if (htab->target_os == is_vxworks)
+      if (htab->elf.target_os == is_vxworks)
 	{
 	  struct elf_dyn_relocs **pp;
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      if (strcmp (p->sec->output_section->name, ".tls_vars") == 0)
 		*pp = p->next;
@@ -418,7 +420,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 
       /* Also discard relocs on undefined weak syms with non-default
 	 visibility or in PIE.  */
-      if (eh->dyn_relocs != NULL)
+      if (h->dyn_relocs != NULL)
 	{
 	  if (h->root.type == bfd_link_hash_undefweak)
 	    {
@@ -434,7 +436,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 			 that we can branch to 0 without PLT.  */
 		      struct elf_dyn_relocs **pp;
 
-		      for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+		      for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 			if (p->pc_count == 0)
 			  *pp = p->next;
 			else
@@ -447,12 +449,12 @@ elf_x86_allocate_dynrelocs (struct elf_l
 		      /* Make sure undefined weak symbols are output
 			 as dynamic symbols in PIEs for dynamic non-GOT
 			 non-PLT reloations.  */
-		      if (eh->dyn_relocs != NULL
+		      if (h->dyn_relocs != NULL
 			  && !bfd_elf_link_record_dynamic_symbol (info, h))
 			return FALSE;
 		    }
 		  else
-		    eh->dyn_relocs = NULL;
+		    h->dyn_relocs = NULL;
 		}
 	      else if (h->dynindx == -1
 		       && !h->forced_local
@@ -469,7 +471,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 		 which turn out to need copy relocs.  */
 	      struct elf_dyn_relocs **pp;
 
-	      for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	      for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 		{
 		  if (p->pc_count != 0)
 		    *pp = p->next;
@@ -510,13 +512,13 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	    goto keep;
 	}
 
-      eh->dyn_relocs = NULL;
+      h->dyn_relocs = NULL;
 
     keep: ;
     }
 
   /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     {
       asection *sreloc;
 
@@ -529,62 +531,6 @@ elf_x86_allocate_dynrelocs (struct elf_l
   return TRUE;
 }
 
-/* Find dynamic relocs for H that apply to read-only sections.  */
-
-static asection *
-readonly_dynrelocs (struct elf_link_hash_entry *h)
-{
-  struct elf_dyn_relocs *p;
-
-  for (p = elf_x86_hash_entry (h)->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *s = p->sec->output_section;
-
-      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return p->sec;
-    }
-  return NULL;
-}
-
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
-
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *inf)
-{
-  asection *sec;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  /* Skip local IFUNC symbols. */
-  if (h->forced_local && h->type == STT_GNU_IFUNC)
-    return TRUE;
-
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) inf;
-
-      info->flags |= DF_TEXTREL;
-      /* xgettext:c-format */
-      info->callbacks->minfo (_("%pB: dynamic relocation against `%pT' "
-				"in read-only section `%pA'\n"),
-			      sec->owner, h->root.root.string, sec);
-
-      if ((info->warn_shared_textrel && bfd_link_pic (info))
-	  || info->error_textrel)
-	/* xgettext:c-format */
-	info->callbacks->einfo (_("%P: %pB: warning: relocation against `%s' "
-				  "in read-only section `%pA'\n"),
-				sec->owner, h->root.root.string, sec);
-
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
-}
-
 /* Allocate space in .plt, .got and associated reloc sections for
    local dynamic relocs.  */
 
@@ -756,7 +702,7 @@ _bfd_x86_elf_link_hash_table_create (bfd
 {
   struct elf_x86_link_hash_table *ret;
   const struct elf_backend_data *bed;
-  bfd_size_type amt = sizeof (struct elf_x86_link_hash_table);
+  size_t amt = sizeof (struct elf_x86_link_hash_table);
 
   ret = (struct elf_x86_link_hash_table *) bfd_zmalloc (amt);
   if (ret == NULL)
@@ -775,9 +721,6 @@ _bfd_x86_elf_link_hash_table_create (bfd
   if (bed->target_id == X86_64_ELF_DATA)
     {
       ret->is_reloc_section = elf_x86_64_is_reloc_section;
-      ret->dt_reloc = DT_RELA;
-      ret->dt_reloc_sz = DT_RELASZ;
-      ret->dt_reloc_ent = DT_RELAENT;
       ret->got_entry_size = 8;
       ret->pcrel_plt = TRUE;
       ret->tls_get_addr = "__tls_get_addr";
@@ -802,9 +745,6 @@ _bfd_x86_elf_link_hash_table_create (bfd
       else
 	{
 	  ret->is_reloc_section = elf_i386_is_reloc_section;
-	  ret->dt_reloc = DT_REL;
-	  ret->dt_reloc_sz = DT_RELSZ;
-	  ret->dt_reloc_ent = DT_RELENT;
 	  ret->sizeof_reloc = sizeof (Elf32_External_Rel);
 	  ret->got_entry_size = 4;
 	  ret->pcrel_plt = FALSE;
@@ -815,8 +755,6 @@ _bfd_x86_elf_link_hash_table_create (bfd
 	  ret->tls_get_addr = "___tls_get_addr";
 	}
     }
-  ret->target_id = bed->target_id;
-  ret->target_os = get_elf_x86_backend_data (abfd)->target_os;
 
   ret->loc_hash_table = htab_try_create (1024,
 					 _bfd_x86_elf_local_htab_hash,
@@ -952,6 +890,100 @@ _bfd_x86_elf_link_check_relocs (bfd *abf
   return _bfd_elf_link_check_relocs (abfd, info);
 }
 
+bfd_boolean
+_bfd_elf_x86_valid_reloc_p (asection *input_section,
+			    struct bfd_link_info *info,
+			    struct elf_x86_link_hash_table *htab,
+			    const Elf_Internal_Rela *rel,
+			    struct elf_link_hash_entry *h,
+			    Elf_Internal_Sym *sym,
+			    Elf_Internal_Shdr *symtab_hdr,
+			    bfd_boolean *no_dynreloc_p)
+{
+  bfd_boolean valid_p = TRUE;
+
+  *no_dynreloc_p = FALSE;
+
+  /* Check If relocation against non-preemptible absolute symbol is
+     valid in PIC.  FIXME: Can't use SYMBOL_REFERENCES_LOCAL_P since
+     it may call _bfd_elf_link_hide_sym_by_version and result in
+     ld-elfvers/ vers21 test failure.  */
+  if (bfd_link_pic (info)
+      && (h == NULL || SYMBOL_REFERENCES_LOCAL (info, h)))
+    {
+      const struct elf_backend_data *bed;
+      unsigned int r_type;
+      Elf_Internal_Rela irel;
+
+      /* Skip non-absolute symbol.  */
+      if (h)
+	{
+	  if (!ABS_SYMBOL_P (h))
+	    return valid_p;
+	}
+      else if (sym->st_shndx != SHN_ABS)
+	return valid_p;
+
+      bed = get_elf_backend_data (input_section->owner);
+      r_type = ELF32_R_TYPE (rel->r_info);
+      irel = *rel;
+
+      /* Only allow relocations against absolute symbol, which can be
+	 resolved as absolute value + addend.  GOTPCREL relocations
+	 are allowed since absolute value + addend is stored in the
+	 GOT slot.  */
+      if (bed->target_id == X86_64_ELF_DATA)
+	{
+	  r_type &= ~R_X86_64_converted_reloc_bit;
+	  valid_p = (r_type == R_X86_64_64
+		     || r_type == R_X86_64_32
+		     || r_type == R_X86_64_32S
+		     || r_type == R_X86_64_16
+		     || r_type == R_X86_64_8
+		     || r_type == R_X86_64_GOTPCREL
+		     || r_type == R_X86_64_GOTPCRELX
+		     || r_type == R_X86_64_REX_GOTPCRELX);
+	  if (!valid_p)
+	    {
+	      unsigned int r_symndx = htab->r_sym (rel->r_info);
+	      irel.r_info = htab->r_info (r_symndx, r_type);
+	    }
+	}
+      else
+	valid_p = (r_type == R_386_32
+		   || r_type == R_386_16
+		   || r_type == R_386_8);
+
+      if (valid_p)
+	*no_dynreloc_p = TRUE;
+      else
+	{
+	  const char *name;
+	  arelent internal_reloc;
+
+	  if (!bed->elf_info_to_howto (input_section->owner,
+				       &internal_reloc, &irel)
+	      || internal_reloc.howto == NULL)
+	    abort ();
+
+	  if (h)
+	    name = h->root.root.string;
+	  else
+	    name = bfd_elf_sym_name (input_section->owner, symtab_hdr,
+				     sym, NULL);
+	  info->callbacks->einfo
+	    /* xgettext:c-format */
+	    (_("%F%P: %pB: relocation %s against absolute symbol "
+	       "`%s' in section `%pA' is disallowed\n"),
+	     input_section->owner, internal_reloc.howto->name, name,
+	     input_section);
+	  bfd_set_error (bfd_error_bad_value);
+	}
+    }
+
+  return valid_p;
+}
+
 /* Set the sizes of the dynamic sections.  */
 
 bfd_boolean
@@ -1005,7 +1037,7 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 		     linker script /DISCARD/, so we'll be discarding
 		     the relocs too.  */
 		}
-	      else if (htab->target_os == is_vxworks
+	      else if (htab->elf.target_os == is_vxworks
 		       && strcmp (p->sec->output_section->name,
 				  ".tls_vars") == 0)
 		{
@@ -1020,8 +1052,7 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 		      && (info->flags & DF_TEXTREL) == 0)
 		    {
 		      info->flags |= DF_TEXTREL;
-		      if ((info->warn_shared_textrel && bfd_link_pic (info))
-			  || info->error_textrel)
+		      if (bfd_link_textrel_check (info))
 			/* xgettext:c-format */
 			info->callbacks->einfo
 			  (_("%P: %pB: warning: relocation "
@@ -1065,7 +1096,7 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 		      || *local_tls_type == GOT_TLS_IE_BOTH)
 		    s->size += htab->got_entry_size;
 		}
-	      if (bfd_link_pic (info)
+	      if ((bfd_link_pic (info) && *local_tls_type != GOT_ABS)
 		  || GOT_TLS_GD_ANY_P (*local_tls_type)
 		  || (*local_tls_type & GOT_TLS_IE))
 		{
@@ -1078,7 +1109,7 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 		    {
 		      htab->elf.srelplt->size += htab->sizeof_reloc;
 		      if (bed->target_id == X86_64_ELF_DATA)
-			htab->tlsdesc_plt = (bfd_vma) -1;
+			htab->elf.tlsdesc_plt = (bfd_vma) -1;
 		    }
 		}
 	    }
@@ -1125,22 +1156,22 @@ _bfd_x86_elf_size_dynamic_sections (bfd
   else if (htab->elf.irelplt)
     htab->next_irelative_index = htab->elf.irelplt->reloc_count - 1;
 
-  if (htab->tlsdesc_plt)
+  if (htab->elf.tlsdesc_plt)
     {
       /* NB: tlsdesc_plt is set only for x86-64.  If we're not using
 	 lazy TLS relocations, don't generate the PLT and GOT entries
 	 they require.  */
       if ((info->flags & DF_BIND_NOW))
-	htab->tlsdesc_plt = 0;
+	htab->elf.tlsdesc_plt = 0;
       else
 	{
-	  htab->tlsdesc_got = htab->elf.sgot->size;
+	  htab->elf.tlsdesc_got = htab->elf.sgot->size;
 	  htab->elf.sgot->size += htab->got_entry_size;
 	  /* Reserve room for the initial entry.
 	     FIXME: we could probably do away with it in this case.  */
 	  if (htab->elf.splt->size == 0)
 	    htab->elf.splt->size = htab->plt.plt_entry_size;
-	  htab->tlsdesc_plt = htab->elf.splt->size;
+	  htab->elf.tlsdesc_plt = htab->elf.splt->size;
 	  htab->elf.splt->size += htab->plt.plt_entry_size;
 	}
     }
@@ -1164,7 +1195,8 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 	  htab->elf.sgotplt->size = 0;
 	  /* Solaris requires to keep _GLOBAL_OFFSET_TABLE_ even if it
 	     isn't used.  */
-	  if (htab->elf.hgot != NULL && htab->target_os != is_solaris)
+	  if (htab->elf.hgot != NULL
+	      && htab->elf.target_os != is_solaris)
 	    {
 	      /* Remove the unused _GLOBAL_OFFSET_TABLE_ from symbol
 		 table. */
@@ -1324,79 +1356,8 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 		   + PLT_FDE_LEN_OFFSET));
     }
 
-  if (htab->elf.dynamic_sections_created)
-    {
-      /* Add some entries to the .dynamic section.  We fill in the
-	 values later, in elf_{i386,x86_64}_finish_dynamic_sections,
-	 but we must add the entries now so that we get the correct
-	 size for the .dynamic section.  The DT_DEBUG entry is filled
-	 in by the dynamic linker and used by the debugger.  */
-#define add_dynamic_entry(TAG, VAL) \
-  _bfd_elf_add_dynamic_entry (info, TAG, VAL)
-
-      if (bfd_link_executable (info))
-	{
-	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
-	}
-
-      if (htab->elf.splt->size != 0)
-	{
-	  /* DT_PLTGOT is used by prelink even if there is no PLT
-	     relocation.  */
-	  if (!add_dynamic_entry (DT_PLTGOT, 0))
-	    return FALSE;
-	}
-
-      if (htab->elf.srelplt->size != 0)
-	{
-	  if (!add_dynamic_entry (DT_PLTRELSZ, 0)
-	      || !add_dynamic_entry (DT_PLTREL, htab->dt_reloc)
-	      || !add_dynamic_entry (DT_JMPREL, 0))
-	    return FALSE;
-	}
-
-      if (htab->tlsdesc_plt
-	  && (!add_dynamic_entry (DT_TLSDESC_PLT, 0)
-	      || !add_dynamic_entry (DT_TLSDESC_GOT, 0)))
-	return FALSE;
-
-      if (relocs)
-	{
-	  if (!add_dynamic_entry (htab->dt_reloc, 0)
-	      || !add_dynamic_entry (htab->dt_reloc_sz, 0)
-	      || !add_dynamic_entry (htab->dt_reloc_ent,
-				     htab->sizeof_reloc))
-	    return FALSE;
-
-	  /* If any dynamic relocs apply to a read-only section,
-	     then we need a DT_TEXTREL entry.  */
-	  if ((info->flags & DF_TEXTREL) == 0)
-	    elf_link_hash_traverse (&htab->elf, maybe_set_textrel, info);
-
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (htab->readonly_dynrelocs_against_ifunc)
-		{
-		  info->callbacks->einfo
-		    (_("%P%X: read-only segment has dynamic IFUNC relocations;"
-		       " recompile with %s\n"),
-		     bfd_link_dll (info) ? "-fPIC" : "-fPIE");
-		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
-		}
-
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
-      if (htab->target_os == is_vxworks
-	  && !elf_vxworks_add_dynamic_entries (output_bfd, info))
-	return FALSE;
-    }
-#undef add_dynamic_entry
-
-  return TRUE;
+  return _bfd_elf_maybe_vxworks_add_dynamic_tags (output_bfd, info,
+						  relocs);
 }
 
 /* Finish up the x86 dynamic sections.  */
@@ -1482,7 +1443,7 @@ _bfd_x86_elf_finish_dynamic_sections (bf
       switch (dyn.d_tag)
 	{
 	default:
-	  if (htab->target_os == is_vxworks
+	  if (htab->elf.target_os == is_vxworks
 	      && elf_vxworks_finish_dynamic_entry (output_bfd, &dyn))
 	    break;
 	  continue;
@@ -1504,13 +1465,13 @@ _bfd_x86_elf_finish_dynamic_sections (bf
 	case DT_TLSDESC_PLT:
 	  s = htab->elf.splt;
 	  dyn.d_un.d_ptr = s->output_section->vma + s->output_offset
-	    + htab->tlsdesc_plt;
+	    + htab->elf.tlsdesc_plt;
 	  break;
 
 	case DT_TLSDESC_GOT:
 	  s = htab->elf.sgot;
 	  dyn.d_un.d_ptr = s->output_section->vma + s->output_offset
-	    + htab->tlsdesc_got;
+	    + htab->elf.tlsdesc_got;
 	  break;
 	}
 
@@ -1688,37 +1649,6 @@ _bfd_x86_elf_copy_indirect_symbol (struc
   edir = (struct elf_x86_link_hash_entry *) dir;
   eind = (struct elf_x86_link_hash_entry *) ind;
 
-  if (eind->dyn_relocs != NULL)
-    {
-      if (edir->dyn_relocs != NULL)
-	{
-	  struct elf_dyn_relocs **pp;
-	  struct elf_dyn_relocs *p;
-
-	  /* Add reloc counts against the indirect sym to the direct sym
-	     list.  Merge any entries against the same section.  */
-	  for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      struct elf_dyn_relocs *q;
-
-	      for (q = edir->dyn_relocs; q != NULL; q = q->next)
-		if (q->sec == p->sec)
-		  {
-		    q->pc_count += p->pc_count;
-		    q->count += p->count;
-		    *pp = p->next;
-		    break;
-		  }
-	      if (q == NULL)
-		pp = &p->next;
-	    }
-	  *pp = edir->dyn_relocs;
-	}
-
-      edir->dyn_relocs = eind->dyn_relocs;
-      eind->dyn_relocs = NULL;
-    }
-
   if (ind->root.type == bfd_link_hash_indirect
       && dir->got.refcount <= 0)
     {
@@ -1855,7 +1785,7 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
 	  struct elf_dyn_relocs **pp;
 
 	  eh = (struct elf_x86_link_hash_entry *) h;
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL; )
 	    {
 	      pc_count += p->pc_count;
 	      p->count -= p->pc_count;
@@ -1978,12 +1908,12 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
   if (ELIMINATE_COPY_RELOCS
       && (bed->target_id == X86_64_ELF_DATA
 	  || (!eh->gotoff_ref
-	      && htab->target_os != is_vxworks)))
+	      && htab->elf.target_os != is_vxworks)))
     {
       /* If we don't find any dynamic relocs in read-only sections,
 	 then we'll be keeping the dynamic relocs and avoiding the copy
 	 reloc.  */
-      if (!readonly_dynrelocs (h))
+      if (!_bfd_elf_readonly_dynrelocs (h))
 	{
 	  h->non_got_ref = 0;
 	  return TRUE;
@@ -2347,15 +2277,14 @@ _bfd_x86_elf_get_synthetic_symtab (bfd *
   /* PLT entries with R_386_TLS_DESC relocations are skipped.  */
   if (n == 0)
     {
-bad_return:
+    bad_return:
       count = -1;
     }
   else
     count = n;
 
   for (j = 0; plts[j].name != NULL; j++)
-    if (plts[j].contents != NULL)
-      free (plts[j].contents);
+    free (plts[j].contents);
 
   free (dynrelbuf);
 
@@ -2626,7 +2555,7 @@ _bfd_x86_elf_link_setup_gnu_properties
 
 	  if (!bfd_set_section_alignment (sec, class_align))
 	    {
-error_alignment:
+	    error_alignment:
 	      info->callbacks->einfo (_("%F%pA: failed to align section\n"),
 				      sec);
 	    }
@@ -2754,7 +2683,7 @@ error_alignment:
      still be used with LD_AUDIT or LD_PROFILE if PLT entry is used for
      canonical function address.  */
   htab->plt.has_plt0 = 1;
-  normal_target = htab->target_os == is_normal;
+  normal_target = htab->elf.target_os == is_normal;
 
   if (normal_target)
     {
@@ -2817,7 +2746,7 @@ error_alignment:
       htab->plt.eh_frame_plt = htab->lazy_plt->eh_frame_plt;
     }
 
-  if (htab->target_os == is_vxworks
+  if (htab->elf.target_os == is_vxworks
       && !elf_vxworks_create_dynamic_sections (dynobj, info,
 					       &htab->srelplt2))
     {
@@ -2866,9 +2795,6 @@ error_alignment:
 	  htab->interp = s;
 	}
 
-      /* Don't change PLT section alignment for NaCl since it uses
-	 64-byte PLT entry and sets PLT section alignment to 32
-	 bytes.  Don't create additional PLT sections for NaCl.  */
       if (normal_target)
 	{
 	  flagword pltflags = (bed->dynamic_sec_flags
@@ -2902,8 +2828,7 @@ error_alignment:
 	      if (use_ibt_plt)
 		{
 		  /* Create the second PLT for Intel IBT support.  IBT
-		     PLT is supported only for non-NaCl target and is
-		     is needed only for lazy binding.  */
+		     PLT is needed only for lazy binding.  */
 		  sec = bfd_make_section_anyway_with_flags (dynobj,
 							    ".plt.sec",
 							    pltflags);
@@ -2916,8 +2841,8 @@ error_alignment:
 	      else if (htab->params->bndplt && ABI_64_P (dynobj))
 		{
 		  /* Create the second PLT for Intel MPX support.  MPX
-		     PLT is supported only for non-NaCl target in 64-bit
-		     mode and is needed only for lazy binding.  */
+		     PLT is supported only in 64-bit mode and is needed
+		     only for lazy binding.  */
 		  sec = bfd_make_section_anyway_with_flags (dynobj,
 							    ".plt.sec",
 							    pltflags);
@@ -2998,6 +2923,23 @@ error_alignment:
 				  : bed->plt_alignment);
     }
 
+  if (bfd_link_executable (info)
+      && !info->nointerp
+      && !htab->params->has_dynamic_linker
+      && htab->params->static_before_all_inputs)
+    {
+      /* Report error for dynamic input objects if -static is passed at
+	 command-line before all input files without --dynamic-linker
+	 unless --no-dynamic-linker is used.  */
+      bfd *abfd;
+
+      for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link.next)
+	if ((abfd->flags & DYNAMIC))
+	  info->callbacks->einfo
+	    (_("%X%P: attempted static link of dynamic object `%pB'\n"),
+	     abfd);
+    }
+
   return pbfd;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-x86.h ./bfd/elfxx-x86.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/elfxx-x86.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/elfxx-x86.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* x86 specific support for ELF
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -119,19 +119,23 @@
    Copy dynamic function pointer relocations.  Don't generate dynamic
    relocations against resolved undefined weak symbols in PIE, except
    when PC32_RELOC is TRUE.  Undefined weak symbol is bound locally
-   when PIC is false.  */
-#define GENERATE_DYNAMIC_RELOCATION_P(INFO, EH, R_TYPE, \
+   when PIC is false.  Don't generate dynamic relocations against
+   non-preemptible absolute symbol.  */
+#define GENERATE_DYNAMIC_RELOCATION_P(INFO, EH, R_TYPE, SEC, \
 				      NEED_COPY_RELOC_IN_PIE, \
 				      RESOLVED_TO_ZERO, PC32_RELOC) \
   ((bfd_link_pic (INFO) \
+    && !(bfd_is_abs_section (SEC) \
+	 && ((EH) == NULL \
+	     || SYMBOL_REFERENCES_LOCAL (INFO, &(EH)->elf))) \
     && !(NEED_COPY_RELOC_IN_PIE) \
     && ((EH) == NULL \
 	|| ((ELF_ST_VISIBILITY ((EH)->elf.other) == STV_DEFAULT \
 	     && (!(RESOLVED_TO_ZERO) || PC32_RELOC)) \
 	    || (EH)->elf.root.type != bfd_link_hash_undefweak)) \
-    && ((!X86_PCREL_TYPE_P (R_TYPE) \
-	 && !X86_SIZE_TYPE_P (R_TYPE)) \
-	 || ! SYMBOL_CALLS_LOCAL ((INFO), &(EH)->elf))) \
+    && ((!X86_PCREL_TYPE_P (R_TYPE) && !X86_SIZE_TYPE_P (R_TYPE)) \
+	|| ! SYMBOL_CALLS_LOCAL ((INFO), \
+				 (struct elf_link_hash_entry *) (EH)))) \
    || (ELIMINATE_COPY_RELOCS \
        && !bfd_link_pic (INFO) \
        && (EH) != NULL \
@@ -170,17 +174,25 @@
    || ((struct elf_x86_link_hash_entry *) (H))->linker_def \
    || ELF_COMMON_DEF_P (H))
 
+/* Return TRUE if the symbol described by a linker hash entry H is
+   going to be absolute.  Similar to bfd_is_abs_symbol, but excluding
+   all linker-script defined symbols.  */
+#define ABS_SYMBOL_P(H) \
+  (bfd_is_abs_symbol (&(H)->root) && !(H)->root.ldscript_def)
+
 /* TRUE if relative relocation should be generated.  GOT reference to
    global symbol in PIC will lead to dynamic symbol.  It becomes a
    problem when "time" or "times" is defined as a variable in an
    executable, clashing with functions of the same name in libc.  If a
    symbol isn't undefined weak symbol, don't make it dynamic in PIC and
-   generate relative relocation.  */
+   generate relative relocation.   Don't generate relative relocation
+   against non-preemptible absolute symbol.  */
 #define GENERATE_RELATIVE_RELOC_P(INFO, H) \
   ((H)->dynindx == -1 \
    && !(H)->forced_local \
    && (H)->root.type != bfd_link_hash_undefweak \
-   && bfd_link_pic (INFO))
+   && bfd_link_pic (INFO) \
+   && !ABS_SYMBOL_P (H))
 
 /* TRUE if this is a pointer reference to a local IFUNC.  */
 #define POINTER_LOCAL_IFUNC_P(INFO, H) \
@@ -238,9 +250,6 @@ struct elf_x86_link_hash_entry
 {
   struct elf_link_hash_entry elf;
 
-  /* Track dynamic relocs copied for this symbol.  */
-  struct elf_dyn_relocs *dyn_relocs;
-
   unsigned char tls_type;
 
   /* Bit 0: Symbol has no GOT nor PLT relocations.
@@ -414,6 +423,7 @@ struct elf_x86_plt_layout
 #define GOT_TLS_IE_NEG	6
 #define GOT_TLS_IE_BOTH 7
 #define GOT_TLS_GDESC	8
+#define GOT_ABS		9
 #define GOT_TLS_GD_BOTH_P(type)	\
   ((type) == (GOT_TLS_GD | GOT_TLS_GDESC))
 #define GOT_TLS_GD_P(type) \
@@ -426,14 +436,6 @@ struct elf_x86_plt_layout
 #define elf_x86_hash_entry(ent) \
   ((struct elf_x86_link_hash_entry *)(ent))
 
-enum elf_x86_target_os
-{
-  is_normal,
-  is_solaris,
-  is_vxworks,
-  is_nacl
-};
-
 /* x86 ELF linker hash table.  */
 
 struct elf_x86_link_hash_table
@@ -466,9 +468,6 @@ struct elf_x86_link_hash_table
   /* The amount of space used by the jump slots in the GOT.  */
   bfd_vma sgotplt_jump_table_size;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
-
   /* _TLS_MODULE_BASE_ symbol.  */
   struct bfd_link_hash_entry *tls_module_base;
 
@@ -476,19 +475,11 @@ struct elf_x86_link_hash_table
   htab_t loc_hash_table;
   void * loc_hash_memory;
 
-  /* The offset into sgot of the GOT entry used by the PLT entry
-     above.  */
-  bfd_vma tlsdesc_got;
-
   /* The index of the next R_X86_64_JUMP_SLOT entry in .rela.plt.  */
   bfd_vma next_jump_slot_index;
   /* The index of the next R_X86_64_IRELATIVE entry in .rela.plt.  */
   bfd_vma next_irelative_index;
 
-  /* TRUE if there are dynamic relocs against IFUNC symbols that apply
-     to read-only sections.  */
-  bfd_boolean readonly_dynrelocs_against_ifunc;
-
   /* The (unloaded but important) .rel.plt.unloaded section on VxWorks.
      This is used for i386 only.  */
   asection *srelplt2;
@@ -497,12 +488,6 @@ struct elf_x86_link_hash_table
      is only used for i386.  */
   bfd_vma next_tls_desc_index;
 
-  /* The offset into splt of the PLT entry for the TLS descriptor
-     resolver.  Special values are 0, if not necessary (or not found
-     to be necessary yet), and -1 if needed but not determined
-     yet.  This is only used for x86-64.  */
-  bfd_vma tlsdesc_plt;
-
    /* Value used to fill the unused bytes of the first PLT entry.  This
       is only used for i386.  */
   bfd_byte plt0_pad_byte;
@@ -521,12 +506,7 @@ struct elf_x86_link_hash_table
   bfd_vma (*r_info) (bfd_vma, bfd_vma);
   bfd_vma (*r_sym) (bfd_vma);
   bfd_boolean (*is_reloc_section) (const char *);
-  enum elf_target_id target_id;
-  enum elf_x86_target_os target_os;
   unsigned int sizeof_reloc;
-  unsigned int dt_reloc;
-  unsigned int dt_reloc_sz;
-  unsigned int dt_reloc_ent;
   unsigned int got_entry_size;
   unsigned int pointer_r_type;
   int dynamic_interpreter_size;
@@ -537,18 +517,6 @@ struct elf_x86_link_hash_table
   struct elf_linker_x86_params *params;
 };
 
-/* Architecture-specific backend data for x86.  */
-
-struct elf_x86_backend_data
-{
-  /* Target system.  */
-  enum elf_x86_target_os target_os;
-};
-
-#define get_elf_x86_backend_data(abfd) \
-  ((const struct elf_x86_backend_data *) \
-   get_elf_backend_data (abfd)->arch_data)
-
 struct elf_x86_init_table
 {
   /* The lazy PLT layout.  */
@@ -601,6 +569,9 @@ struct elf_x86_plt
   long count;
 };
 
+/* Set if a relocation is converted from a GOTPCREL relocation.  */
+#define R_X86_64_converted_reloc_bit (1 << 7)
+
 #define elf_x86_tdata(abfd) \
   ((struct elf_x86_obj_tdata *) (abfd)->tdata.any)
 
@@ -616,7 +587,7 @@ struct elf_x86_plt
 #define is_x86_elf(bfd, htab)				\
   (bfd_get_flavour (bfd) == bfd_target_elf_flavour	\
    && elf_tdata (bfd) != NULL				\
-   && elf_object_id (bfd) == (htab)->target_id)
+   && elf_object_id (bfd) == (htab)->elf.hash_table_id)
 
 extern bfd_boolean _bfd_x86_elf_mkobject
   (bfd *);
@@ -652,6 +623,11 @@ extern int _bfd_x86_elf_compare_relocs
 extern bfd_boolean _bfd_x86_elf_link_check_relocs
   (bfd *, struct bfd_link_info *);
 
+extern bfd_boolean _bfd_elf_x86_valid_reloc_p
+  (asection *, struct bfd_link_info *, struct elf_x86_link_hash_table *,
+   const Elf_Internal_Rela *, struct elf_link_hash_entry *,
+   Elf_Internal_Sym *, Elf_Internal_Shdr *, bfd_boolean *);
+
 extern bfd_boolean _bfd_x86_elf_size_dynamic_sections
   (bfd *, struct bfd_link_info *);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/format.c ./bfd/format.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/format.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/format.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic BFD support for file formats.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -106,6 +106,7 @@ struct bfd_preserve
   unsigned int section_id;
   struct bfd_hash_table section_htab;
   const struct bfd_build_id *build_id;
+  bfd_cleanup cleanup;
 };
 
 /* When testing an object for compatibility with a particular target
@@ -118,7 +119,8 @@ struct bfd_preserve
    the subset.  */
 
 static bfd_boolean
-bfd_preserve_save (bfd *abfd, struct bfd_preserve *preserve)
+bfd_preserve_save (bfd *abfd, struct bfd_preserve *preserve,
+		   bfd_cleanup cleanup)
 {
   preserve->tdata = abfd->tdata.any;
   preserve->arch_info = abfd->arch_info;
@@ -130,6 +132,7 @@ bfd_preserve_save (bfd *abfd, struct bfd
   preserve->section_htab = abfd->section_htab;
   preserve->marker = bfd_alloc (abfd, 1);
   preserve->build_id = abfd->build_id;
+  preserve->cleanup = cleanup;
   if (preserve->marker == NULL)
     return FALSE;
 
@@ -140,18 +143,20 @@ bfd_preserve_save (bfd *abfd, struct bfd
 /* Clear out a subset of BFD state.  */
 
 static void
-bfd_reinit (bfd *abfd, unsigned int section_id)
+bfd_reinit (bfd *abfd, unsigned int section_id, bfd_cleanup cleanup)
 {
+  _bfd_section_id = section_id;
+  if (cleanup)
+    cleanup (abfd);
   abfd->tdata.any = NULL;
   abfd->arch_info = &bfd_default_arch_struct;
   abfd->flags &= BFD_FLAGS_SAVED;
   bfd_section_list_clear (abfd);
-  _bfd_section_id = section_id;
 }
 
 /* Restores bfd state saved by bfd_preserve_save.  */
 
-static void
+static bfd_cleanup
 bfd_preserve_restore (bfd *abfd, struct bfd_preserve *preserve)
 {
   bfd_hash_table_free (&abfd->section_htab);
@@ -170,6 +175,7 @@ bfd_preserve_restore (bfd *abfd, struct
      its arg, as well as its arg.  */
   bfd_release (abfd, preserve->marker);
   preserve->marker = NULL;
+  return preserve->cleanup;
 }
 
 /* Called when the bfd state saved by bfd_preserve_save is no longer
@@ -178,6 +184,15 @@ bfd_preserve_restore (bfd *abfd, struct
 static void
 bfd_preserve_finish (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_preserve *preserve)
 {
+  if (preserve->cleanup)
+    {
+      /* Run the cleanup, assuming that all it will need is the
+	 tdata at the time the cleanup was returned.  */
+      void *tdata = abfd->tdata.any;
+      abfd->tdata.any = preserve->tdata;
+      preserve->cleanup (abfd);
+      abfd->tdata.any = tdata;
+    }
   /* It would be nice to be able to free more memory here, eg. old
      tdata, but that's not possible since these blocks are sitting
      inside bfd_alloc'd memory.  The section hash is on a separate
@@ -219,7 +234,8 @@ bfd_check_format_matches (bfd *abfd, bfd
   int match_count, best_count, best_match;
   int ar_match_index;
   unsigned int initial_section_id = _bfd_section_id;
-  struct bfd_preserve preserve;
+  struct bfd_preserve preserve, preserve_match;
+  bfd_cleanup cleanup = NULL;
 
   if (matching != NULL)
     *matching = NULL;
@@ -236,7 +252,7 @@ bfd_check_format_matches (bfd *abfd, bfd
 
   if (matching != NULL || *bfd_associated_vector != NULL)
     {
-      bfd_size_type amt;
+      size_t amt;
 
       amt = sizeof (*matching_vector) * 2 * _bfd_target_vector_entries;
       matching_vector = (const bfd_target **) bfd_malloc (amt);
@@ -247,7 +263,10 @@ bfd_check_format_matches (bfd *abfd, bfd
   /* Presume the answer is yes.  */
   abfd->format = format;
   save_targ = abfd->xvec;
-  preserve.marker = NULL;
+
+  preserve_match.marker = NULL;
+  if (!bfd_preserve_save (abfd, &preserve, NULL))
+    goto err_ret;
 
   /* If the target type was explicitly specified, just check that target.  */
   if (!abfd->target_defaulted)
@@ -255,9 +274,9 @@ bfd_check_format_matches (bfd *abfd, bfd
       if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)	/* rewind! */
 	goto err_ret;
 
-      right_targ = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
+      cleanup = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
 
-      if (right_targ)
+      if (cleanup)
 	goto ok_ret;
 
       /* For a long time the code has dropped through to check all
@@ -288,7 +307,7 @@ bfd_check_format_matches (bfd *abfd, bfd
 
   for (target = bfd_target_vector; *target != NULL; target++)
     {
-      const bfd_target *temp;
+      void **high_water;
 
       /* The binary target matches anything, so don't return it when
 	 searching.  Don't match the plugin target if we have another
@@ -305,7 +324,15 @@ bfd_check_format_matches (bfd *abfd, bfd
       /* If we already tried a match, the bfd is modified and may
 	 have sections attached, which will confuse the next
 	 _bfd_check_format call.  */
-      bfd_reinit (abfd, initial_section_id);
+      bfd_reinit (abfd, initial_section_id, cleanup);
+      /* Free bfd_alloc memory too.  If we have matched and preserved
+	 a target then the high water mark is that much higher.  */
+      if (preserve_match.marker)
+	high_water = &preserve_match.marker;
+      else
+	high_water = &preserve.marker;
+      bfd_release (abfd, *high_water);
+      *high_water = bfd_alloc (abfd, 1);
 
       /* Change BFD's target temporarily.  */
       abfd->xvec = *target;
@@ -313,16 +340,10 @@ bfd_check_format_matches (bfd *abfd, bfd
       if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
 	goto err_ret;
 
-      /* If _bfd_check_format neglects to set bfd_error, assume
-	 bfd_error_wrong_format.  We didn't used to even pay any
-	 attention to bfd_error, so I suspect that some
-	 _bfd_check_format might have this problem.  */
-      bfd_set_error (bfd_error_wrong_format);
-
-      temp = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
-      if (temp)
+      cleanup = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
+      if (cleanup)
 	{
-	  int match_priority = temp->match_priority;
+	  int match_priority = abfd->xvec->match_priority;
 #if BFD_SUPPORTS_PLUGINS
 	  /* If this object can be handled by a plugin, give that the
 	     lowest priority; objects both handled by a plugin and
@@ -332,10 +353,6 @@ bfd_check_format_matches (bfd *abfd, bfd
 	    match_priority = (*target)->match_priority;
 #endif
 
-	  match_targ = temp;
-	  if (preserve.marker != NULL)
-	    bfd_preserve_finish (abfd, &preserve);
-
 	  if (abfd->format != bfd_archive
 	      || (bfd_has_map (abfd)
 		  && bfd_get_error () != bfd_error_wrong_object_format))
@@ -343,11 +360,11 @@ bfd_check_format_matches (bfd *abfd, bfd
 	      /* If this is the default target, accept it, even if
 		 other targets might match.  People who want those
 		 other targets have to set the GNUTARGET variable.  */
-	      if (temp == bfd_default_vector[0])
+	      if (abfd->xvec == bfd_default_vector[0])
 		goto ok_ret;
 
 	      if (matching_vector)
-		matching_vector[match_count] = temp;
+		matching_vector[match_count] = abfd->xvec;
 	      match_count++;
 
 	      if (match_priority < best_match)
@@ -358,7 +375,7 @@ bfd_check_format_matches (bfd *abfd, bfd
 	      if (match_priority <= best_match)
 		{
 		  /* This format checks out as ok!  */
-		  right_targ = temp;
+		  right_targ = abfd->xvec;
 		  best_count++;
 		}
 	    }
@@ -374,11 +391,14 @@ bfd_check_format_matches (bfd *abfd, bfd
 	      ar_match_index++;
 	    }
 
-	  if (!bfd_preserve_save (abfd, &preserve))
-	    goto err_ret;
+	  if (preserve_match.marker == NULL)
+	    {
+	      match_targ = abfd->xvec;
+	      if (!bfd_preserve_save (abfd, &preserve_match, cleanup))
+		goto err_ret;
+	      cleanup = NULL;
+	    }
 	}
-      else if (bfd_get_error () != bfd_error_wrong_format)
-	goto err_ret;
     }
 
   if (best_count == 1)
@@ -448,22 +468,27 @@ bfd_check_format_matches (bfd *abfd, bfd
      really shouldn't iterate on live bfd's.  Note that saving the
      whole bfd and restoring it would be even worse; the first thing
      you notice is that the cached bfd file position gets out of sync.  */
-  if (preserve.marker != NULL)
-    bfd_preserve_restore (abfd, &preserve);
+  if (preserve_match.marker != NULL)
+    cleanup = bfd_preserve_restore (abfd, &preserve_match);
 
   if (match_count == 1)
     {
       abfd->xvec = right_targ;
       /* If we come out of the loop knowing that the last target that
 	 matched is the one we want, then ABFD should still be in a usable
-	 state (except possibly for XVEC).  */
+	 state (except possibly for XVEC).  This is not just an
+	 optimisation.  In the case of plugins a match against the
+	 plugin target can result in the bfd being changed such that
+	 it no longer matches the plugin target, nor will it match
+	 RIGHT_TARG again.  */
       if (match_targ != right_targ)
 	{
-	  bfd_reinit (abfd, initial_section_id);
+	  bfd_reinit (abfd, initial_section_id, cleanup);
+	  bfd_release (abfd, preserve.marker);
 	  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
 	    goto err_ret;
-	  match_targ = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
-	  BFD_ASSERT (match_targ != NULL);
+	  cleanup = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
+	  BFD_ASSERT (cleanup != NULL);
 	}
 
     ok_ret:
@@ -475,8 +500,10 @@ bfd_check_format_matches (bfd *abfd, bfd
       if (abfd->direction == both_direction)
 	abfd->output_has_begun = TRUE;
 
-      if (matching_vector)
-	free (matching_vector);
+      free (matching_vector);
+      if (preserve_match.marker != NULL)
+	bfd_preserve_finish (abfd, &preserve_match);
+      bfd_preserve_finish (abfd, &preserve);
 
       /* File position has moved, BTW.  */
       return TRUE;
@@ -487,12 +514,14 @@ bfd_check_format_matches (bfd *abfd, bfd
     err_unrecog:
       bfd_set_error (bfd_error_file_not_recognized);
     err_ret:
+      if (cleanup)
+	cleanup (abfd);
       abfd->xvec = save_targ;
       abfd->format = bfd_unknown;
-      if (matching_vector)
-	free (matching_vector);
-      if (preserve.marker != NULL)
-	bfd_preserve_restore (abfd, &preserve);
+      free (matching_vector);
+      if (preserve_match.marker != NULL)
+	bfd_preserve_finish (abfd, &preserve_match);
+      bfd_preserve_restore (abfd, &preserve);
       return FALSE;
     }
 
@@ -513,6 +542,13 @@ bfd_check_format_matches (bfd *abfd, bfd
 	  *(const char **) &matching_vector[match_count] = name;
 	}
     }
+  else
+    free (matching_vector);
+  if (cleanup)
+    cleanup (abfd);
+  if (preserve_match.marker != NULL)
+    bfd_preserve_finish (abfd, &preserve_match);
+  bfd_preserve_restore (abfd, &preserve);
   return FALSE;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/gen-aout.c ./bfd/gen-aout.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/gen-aout.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/gen-aout.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generate parameters for an a.out system.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/genlink.h ./bfd/genlink.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/genlink.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/genlink.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* genlink.h -- interface to the BFD generic linker
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hash.c ./bfd/hash.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hash.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hash.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* hash.c -- hash table routines for BFD
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Written by Steve Chamberlain <sac@cygnus.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -664,19 +664,18 @@ bfd_hash_traverse (struct bfd_hash_table
 unsigned long
 bfd_hash_set_default_size (unsigned long hash_size)
 {
-  /* Extend this prime list if you want more granularity of hash table size.  */
-  static const unsigned long hash_size_primes[] =
-    {
-      31, 61, 127, 251, 509, 1021, 2039, 4091, 8191, 16381, 32749, 65537
-    };
-  unsigned int _index;
-
-  /* Work out best prime number near the hash_size.  */
-  for (_index = 0; _index < ARRAY_SIZE (hash_size_primes) - 1; ++_index)
-    if (hash_size <= hash_size_primes[_index])
-      break;
-
-  bfd_default_hash_table_size = hash_size_primes[_index];
+  /* These silly_size values result in around 1G and 32M of memory
+     being allocated for the table of pointers.  Note that the number
+     of elements allocated will be almost twice the size of any power
+     of two chosen here.  */
+  unsigned long silly_size = sizeof (size_t) > 4 ? 0x4000000 : 0x400000;
+  if (hash_size > silly_size)
+    hash_size = silly_size;
+  else if (hash_size != 0)
+    hash_size--;
+  hash_size = higher_prime_number (hash_size);
+  BFD_ASSERT (hash_size != 0);
+  bfd_default_hash_table_size = hash_size;
   return bfd_default_hash_table_size;
 }
 
@@ -762,7 +761,7 @@ struct bfd_strtab_hash *
 _bfd_stringtab_init (void)
 {
   struct bfd_strtab_hash *table;
-  bfd_size_type amt = sizeof (* table);
+  size_t amt = sizeof (* table);
 
   table = (struct bfd_strtab_hash *) bfd_malloc (amt);
   if (table == NULL)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/host-aout.c ./bfd/host-aout.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/host-aout.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/host-aout.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD backend for local host's a.out binaries
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.  Probably John Gilmore's fault.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/alphalinux.h ./bfd/hosts/alphalinux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/alphalinux.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/alphalinux.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/alphavms.h ./bfd/hosts/alphavms.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/alphavms.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/alphavms.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* alphavms.h -- BFD definitions for an openVMS host
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
    Written by Klaus Kämpf (kkaempf@progis.de)
    of proGIS Softwareentwicklung, Aachen, Germany
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/decstation.h ./bfd/hosts/decstation.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/decstation.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/decstation.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/dpx2.h ./bfd/hosts/dpx2.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/dpx2.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/dpx2.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/i386bsd.h ./bfd/hosts/i386bsd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/i386bsd.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/i386bsd.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/i386linux.h ./bfd/hosts/i386linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/i386linux.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/i386linux.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/i386mach3.h ./bfd/hosts/i386mach3.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/i386mach3.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/i386mach3.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/i386sco.h ./bfd/hosts/i386sco.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/i386sco.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/i386sco.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/m68klinux.h ./bfd/hosts/m68klinux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/m68klinux.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/m68klinux.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/mipsbsd.h ./bfd/hosts/mipsbsd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/mipsbsd.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/mipsbsd.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/mipsmach3.h ./bfd/hosts/mipsmach3.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/mipsmach3.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/mipsmach3.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/news-mips.h ./bfd/hosts/news-mips.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/news-mips.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/news-mips.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/pc532mach.h ./bfd/hosts/pc532mach.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/pc532mach.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/pc532mach.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/riscos.h ./bfd/hosts/riscos.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/riscos.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/riscos.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/symmetry.h ./bfd/hosts/symmetry.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/symmetry.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/symmetry.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/vaxbsd.h ./bfd/hosts/vaxbsd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/vaxbsd.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/vaxbsd.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/vaxlinux.h ./bfd/hosts/vaxlinux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/vaxlinux.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/vaxlinux.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/vaxult2.h ./bfd/hosts/vaxult2.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/vaxult2.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/vaxult2.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/vaxult.h ./bfd/hosts/vaxult.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/vaxult.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/vaxult.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/x86-64linux.h ./bfd/hosts/x86-64linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hosts/x86-64linux.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hosts/x86-64linux.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hppabsd-core.c ./bfd/hppabsd-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hppabsd-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hppabsd-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for HPPA BSD core files.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -90,7 +90,7 @@ make_bfd_asection (bfd *abfd,
   return asect;
 }
 
-static const bfd_target *
+static bfd_cleanup
 hppabsd_core_core_file_p (bfd *abfd)
 {
   int val;
@@ -181,7 +181,7 @@ hppabsd_core_core_file_p (bfd *abfd)
 
   strncpy (core_command (abfd), u.u_comm, MAXCOMLEN + 1);
   core_signal (abfd) = u.u_code;
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  fail:
   bfd_release (abfd, abfd->tdata.any);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hpux-core.c ./bfd/hpux-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/hpux-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/hpux-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for HP/UX core files.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Written by Stu Grossman, Cygnus Support.
    Converted to back-end form by Ian Lance Taylor, Cygnus SUpport
 
@@ -106,7 +106,7 @@ struct hpux_core_struct
 
 static asection *make_bfd_asection (bfd *, const char *, flagword,
 				    bfd_size_type, bfd_vma, unsigned int);
-static const bfd_target *hpux_core_core_file_p (bfd *);
+static bfd_cleanup hpux_core_core_file_p (bfd *);
 static char *hpux_core_core_file_failing_command (bfd *);
 static int hpux_core_core_file_failing_signal (bfd *);
 static void swap_abort (void);
@@ -157,7 +157,7 @@ thread_section_p (bfd *abfd ATTRIBUTE_UN
    in which the core file is generated by some non-hpux application.
    (I am just guessing here!)
 */
-static const bfd_target *
+static bfd_cleanup
 hpux_core_core_file_p (bfd *abfd)
 {
   int  good_sections = 0;
@@ -342,7 +342,7 @@ hpux_core_core_file_p (bfd *abfd)
        "  As a result, some information may be unavailable.\n",
        abfd);
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  fail:
   bfd_release (abfd, core_hdr (abfd));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/i386aout.c ./bfd/i386aout.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/i386aout.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/i386aout.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for i386 a.out binaries.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -38,7 +38,6 @@
    the tokens.  */
 #define MY(OP) CONCAT2 (i386_aout_,OP)
 #define TARGETNAME "a.out-i386"
-#define NO_WRITE_HEADER_KLUDGE 1
 
 #include "sysdep.h"
 #include "bfd.h"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/i386bsd.c ./bfd/i386bsd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/i386bsd.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/i386bsd.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for i386 a.out binaries under BSD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/i386lynx.c ./bfd/i386lynx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/i386lynx.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/i386lynx.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for i386 a.out binaries under LynxOS.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -399,7 +399,7 @@ NAME(lynx,slurp_reloc_table) (bfd *abfd,
   bfd_set_error (bfd_error_invalid_operation);
   return FALSE;
 
-doit:
+ doit:
   if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
     return FALSE;
   each_size = obj_reloc_entry_size (abfd);
@@ -411,19 +411,12 @@ doit:
   if (!reloc_cache && count != 0)
     return FALSE;
 
-  relocs = bfd_alloc (abfd, reloc_size);
+  relocs = _bfd_alloc_and_read (abfd, reloc_size, reloc_size);
   if (!relocs && reloc_size != 0)
     {
       free (reloc_cache);
       return FALSE;
     }
-
-  if (bfd_bread (relocs, reloc_size, abfd) != reloc_size)
-    {
-      bfd_release (abfd, relocs);
-      free (reloc_cache);
-      return FALSE;
-    }
 
   if (each_size == RELOC_EXT_SIZE)
     {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/i386msdos.c ./bfd/i386msdos.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/i386msdos.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/i386msdos.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for MS-DOS executables.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Bryan Ford of the University of Utah.
 
    Contributed by the Center for Software Science at the
@@ -41,16 +41,16 @@ msdos_mkobject (bfd *abfd)
   return aout_32_mkobject (abfd);
 }
 
-static const bfd_target *
+static bfd_cleanup
 msdos_object_p (bfd *abfd)
 {
   struct external_DOS_hdr hdr;
   bfd_byte buffer[2];
   asection *section;
-  unsigned int size;
+  bfd_size_type size;
 
   if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || bfd_bread (&hdr, (bfd_size_type) sizeof (hdr), abfd) < DOS_HDR_SIZE)
+      || (size = bfd_bread (&hdr, sizeof (hdr), abfd)) + 1 < DOS_HDR_SIZE + 1)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -67,9 +67,11 @@ msdos_object_p (bfd *abfd)
      e_lfanew field will be valid and point to a header beginning with one of
      the relevant signatures.  If not, e_lfanew might point to anything, so
      don't bail if we can't read there.  */
-  if (H_GET_16 (abfd, hdr.e_cparhdr) < 4
-      || bfd_seek (abfd, (file_ptr) H_GET_32 (abfd, hdr.e_lfanew), SEEK_SET) != 0
-      || bfd_bread (buffer, (bfd_size_type) 2, abfd) != 2)
+  if (size < offsetof (struct external_DOS_hdr, e_lfanew) + 4
+      || H_GET_16 (abfd, hdr.e_cparhdr) < 4)
+    ;
+  else if (bfd_seek (abfd, H_GET_32 (abfd, hdr.e_lfanew), SEEK_SET) != 0
+	   || bfd_bread (buffer, (bfd_size_type) 2, abfd) != 2)
     {
       if (bfd_get_error () == bfd_error_system_call)
 	return NULL;
@@ -102,7 +104,7 @@ msdos_object_p (bfd *abfd)
   size += H_GET_16 (abfd, hdr.e_cblp);
 
   /* Check that the size is valid.  */
-  if (bfd_seek (abfd, (file_ptr) (section->filepos + size), SEEK_SET) != 0)
+  if (bfd_seek (abfd, section->filepos + size, SEEK_SET) != 0)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -112,7 +114,7 @@ msdos_object_p (bfd *abfd)
   bfd_set_section_size (section, size);
   section->alignment_power = 4;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 static int
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ihex.c ./bfd/ihex.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ihex.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/ihex.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Intel Hex objects.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
    Written by Ian Lance Taylor of Cygnus Support <ian@cygnus.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -357,7 +357,7 @@ ihex_scan (bfd *abfd)
 		{
 		  char secbuf[20];
 		  char *secname;
-		  bfd_size_type amt;
+		  size_t amt;
 		  flagword flags;
 
 		  sprintf (secbuf, ".sec%d", bfd_count_sections (abfd) + 1);
@@ -381,8 +381,7 @@ ihex_scan (bfd *abfd)
 	      /* An end record.  */
 	      if (abfd->start_address == 0)
 		abfd->start_address = addr;
-	      if (buf != NULL)
-		free (buf);
+	      free (buf);
 	      return TRUE;
 
 	    case 2:
@@ -474,20 +473,17 @@ ihex_scan (bfd *abfd)
   if (error)
     goto error_return;
 
-  if (buf != NULL)
-    free (buf);
-
+  free (buf);
   return TRUE;
 
  error_return:
-  if (buf != NULL)
-    free (buf);
+  free (buf);
   return FALSE;
 }
 
 /* Try to recognize an Intel Hex file.  */
 
-static const bfd_target *
+static bfd_cleanup
 ihex_object_p (bfd *abfd)
 {
   void * tdata_save;
@@ -538,7 +534,7 @@ ihex_object_p (bfd *abfd)
       return NULL;
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 /* Read the contents of a section in an Intel Hex file.  */
@@ -603,8 +599,7 @@ ihex_read_section (bfd *abfd, asection *
       if ((bfd_size_type) (p - contents) >= section->size)
 	{
 	  /* We've read everything in the section.  */
-	  if (buf != NULL)
-	    free (buf);
+	  free (buf);
 	  return TRUE;
 	}
 
@@ -621,14 +616,11 @@ ihex_read_section (bfd *abfd, asection *
       goto error_return;
     }
 
-  if (buf != NULL)
-    free (buf);
-
+  free (buf);
   return TRUE;
 
  error_return:
-  if (buf != NULL)
-    free (buf);
+  free (buf);
   return FALSE;
 }
 
@@ -811,16 +803,15 @@ ihex_write_object_contents (bfd *abfd)
 	  if (count > CHUNK)
 	    now = CHUNK;
 
-	  if (where > segbase + extbase + 0xffff)
+	  if (where < extbase
+	      || where - extbase < segbase
+	      || where - extbase - segbase > 0xffff)
 	    {
 	      bfd_byte addr[2];
 
 	      /* We need a new base address.  */
-	      if (where <= 0xfffff)
+	      if (extbase == 0 && where <= 0xfffff)
 		{
-		  /* The addresses should be sorted.  */
-		  BFD_ASSERT (extbase == 0);
-
 		  segbase = where & 0xf0000;
 		  addr[0] = (bfd_byte)(segbase >> 12) & 0xff;
 		  addr[1] = (bfd_byte)(segbase >> 4) & 0xff;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/init.c ./bfd/init.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/init.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/init.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* bfd initialization stuff
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/irix-core.c ./bfd/irix-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/irix-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/irix-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Irix core files.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Written by Stu Grossman, Cygnus Support.
    Converted to back-end form by Ian Lance Taylor, Cygnus Support
 
@@ -166,13 +166,13 @@ make_bfd_asection (bfd *abfd,
   return asect;
 }
 
-static const bfd_target *
+static bfd_cleanup
 irix_core_core_file_p (bfd *abfd)
 {
   int val;
   struct coreout coreout;
   struct idesc *idg, *idf, *ids;
-  bfd_size_type amt;
+  size_t amt;
 
   val = bfd_bread (&coreout, (bfd_size_type) sizeof coreout, abfd);
   if (val != sizeof coreout)
@@ -244,7 +244,7 @@ irix_core_core_file_p (bfd *abfd)
   /* OK, we believe you.  You're a core file (sure, sure).  */
   bfd_default_set_arch_mach (abfd, bfd_arch_mips, 0);
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  fail:
   bfd_release (abfd, core_hdr (abfd));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libaout.h ./bfd/libaout.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libaout.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/libaout.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end data structures for a.out (and similar) files.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -359,7 +359,8 @@ enum aout_magic {
   undecided_magic = 0,
   z_magic,
   o_magic,
-  n_magic
+  n_magic,
+  i_magic
 };
 
 struct aoutdata
@@ -475,8 +476,8 @@ extern bfd_boolean NAME (aout, squirt_ou
 extern bfd_boolean NAME (aout, make_sections)
   (bfd *);
 
-extern const bfd_target * NAME (aout, some_aout_object_p)
-  (bfd *, struct internal_exec *, const bfd_target *(*) (bfd *));
+extern bfd_cleanup NAME (aout, some_aout_object_p)
+  (bfd *, struct internal_exec *, bfd_cleanup (*) (bfd *));
 
 extern bfd_boolean NAME (aout, mkobject)
   (bfd *);
@@ -608,9 +609,6 @@ extern bfd_boolean NAME (aout, bfd_free_
 #define	aout_32_get_section_contents	_bfd_generic_get_section_contents
 
 #define	aout_64_get_section_contents	_bfd_generic_get_section_contents
-#ifndef NO_WRITE_HEADER_KLUDGE
-#define NO_WRITE_HEADER_KLUDGE 0
-#endif
 
 #ifndef aout_32_bfd_is_local_label_name
 #define aout_32_bfd_is_local_label_name bfd_generic_is_local_label_name
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libbfd.c ./bfd/libbfd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libbfd.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/libbfd.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Assorted BFD support routines, only used internally.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -245,7 +245,7 @@ _bfd_nocore_core_file_pid (bfd *ignore_a
   return 0;
 }
 
-const bfd_target *
+bfd_cleanup
 _bfd_dummy_target (bfd *ignore_abfd ATTRIBUTE_UNUSED)
 {
   bfd_set_error (bfd_error_wrong_format);
@@ -279,24 +279,6 @@ bfd_malloc (bfd_size_type size)
   return ptr;
 }
 
-/* Allocate memory using malloc, nmemb * size with overflow checking.  */
-
-void *
-bfd_malloc2 (bfd_size_type nmemb, bfd_size_type size)
-{
-  if ((nmemb | size) >= HALF_BFD_SIZE_TYPE
-      && size != 0
-      && nmemb > ~(bfd_size_type) 0 / size)
-    {
-      bfd_set_error (bfd_error_no_memory);
-      return NULL;
-    }
-
-  return bfd_malloc (size * nmemb);
-}
-
-/* Reallocate memory using realloc.  */
-
 void *
 bfd_realloc (void *ptr, bfd_size_type size)
 {
@@ -322,22 +304,6 @@ bfd_realloc (void *ptr, bfd_size_type si
   return ret;
 }
 
-/* Reallocate memory using realloc, nmemb * size with overflow checking.  */
-
-void *
-bfd_realloc2 (void *ptr, bfd_size_type nmemb, bfd_size_type size)
-{
-  if ((nmemb | size) >= HALF_BFD_SIZE_TYPE
-      && size != 0
-      && nmemb > ~(bfd_size_type) 0 / size)
-    {
-      bfd_set_error (bfd_error_no_memory);
-      return NULL;
-    }
-
-  return bfd_realloc (ptr, size * nmemb);
-}
-
 /* Reallocate memory using realloc.
    If this fails the pointer is freed before returning.  */
 
@@ -346,7 +312,7 @@ bfd_realloc_or_free (void *ptr, bfd_size
 {
   void *ret = bfd_realloc (ptr, size);
 
-  if (ret == NULL && ptr != NULL)
+  if (ret == NULL)
     free (ptr);
 
   return ret;
@@ -365,25 +331,6 @@ bfd_zmalloc (bfd_size_type size)
   return ptr;
 }
 
-/* Allocate memory using malloc (nmemb * size) with overflow checking
-   and clear it.  */
-
-void *
-bfd_zmalloc2 (bfd_size_type nmemb, bfd_size_type size)
-{
-  void *ptr = bfd_malloc2 (nmemb, size);
-
-  if (ptr != NULL)
-    {
-      size_t sz = nmemb * size;
-
-      if (sz > 0)
-	memset (ptr, 0, sz);
-    }
-
-  return ptr;
-}
-
 /*
 INTERNAL_FUNCTION
 	bfd_write_bigendian_4byte_int
@@ -495,7 +442,7 @@ DESCRIPTION
 .  BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
 .
 .#define bfd_get(bits, abfd, ptr)			\
-.  ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)	\
+.  ((bits) == 8 ? bfd_get_8 (abfd, ptr)			\
 .   : (bits) == 16 ? bfd_get_16 (abfd, ptr)		\
 .   : (bits) == 32 ? bfd_get_32 (abfd, ptr)		\
 .   : (bits) == 64 ? bfd_get_64 (abfd, ptr)		\
@@ -1204,6 +1151,30 @@ _bfd_read_signed_leb128 (bfd *abfd ATTRI
   return result;
 }
 
+/* Write VAL in uleb128 format to P.
+   END indicates the last byte of allocated space for the uleb128 value to fit
+   in.
+   Return a pointer to the byte following the last byte that was written, or
+   NULL if the uleb128 value does not fit in the allocated space between P and
+   END.  */
+bfd_byte *
+_bfd_write_unsigned_leb128 (bfd_byte *p, bfd_byte *end, bfd_vma val)
+{
+  bfd_byte c;
+  do
+    {
+      if (p > end)
+	return NULL;
+      c = val & 0x7f;
+      val >>= 7;
+      if (val)
+	c |= 0x80;
+      *(p++) = c;
+    }
+  while (val);
+  return p;
+}
+
 bfd_boolean
 _bfd_generic_init_private_section_data (bfd *ibfd ATTRIBUTE_UNUSED,
 					asection *isec ATTRIBUTE_UNUSED,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libbfd.h ./bfd/libbfd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libbfd.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/libbfd.h	2021-05-21 01:57:23.000000000 +0000
@@ -6,7 +6,7 @@
 /* libbfd.h -- Declarations used by bfd library *implementation*.
    (This include file is not for users of the library.)
 
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Written by Cygnus Support.
 
@@ -121,12 +121,6 @@ extern void *bfd_realloc_or_free
   (void *, bfd_size_type) ATTRIBUTE_HIDDEN;
 extern void *bfd_zmalloc
   (bfd_size_type) ATTRIBUTE_HIDDEN;
-extern void *bfd_malloc2
-  (bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
-extern void *bfd_realloc2
-  (void *, bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
-extern void *bfd_zmalloc2
-  (bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
 
 static inline char *
 bfd_strdup (const char *str)
@@ -139,10 +133,6 @@ bfd_strdup (const char *str)
 }
 /* These routines allocate and free things on the BFD's objalloc.  */
 
-extern void *bfd_alloc2
-  (bfd *, bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
-extern void *bfd_zalloc2
-  (bfd *, bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
 extern void bfd_release
   (bfd *, void *) ATTRIBUTE_HIDDEN;
 
@@ -156,7 +146,7 @@ extern bfd_boolean _bfd_generic_mkarchiv
   (bfd *) ATTRIBUTE_HIDDEN;
 extern char *_bfd_append_relative_path
   (bfd *, char *) ATTRIBUTE_HIDDEN;
-extern const bfd_target *bfd_generic_archive_p
+extern bfd_cleanup bfd_generic_archive_p
   (bfd *) ATTRIBUTE_HIDDEN;
 extern bfd_boolean bfd_slurp_armap
   (bfd *) ATTRIBUTE_HIDDEN;
@@ -242,8 +232,9 @@ extern void _bfd_void_bfd_asection
 
 extern bfd *_bfd_new_bfd_contained_in
   (bfd *) ATTRIBUTE_HIDDEN;
-extern const bfd_target *_bfd_dummy_target
+extern bfd_cleanup _bfd_dummy_target
   (bfd *) ATTRIBUTE_HIDDEN;
+#define _bfd_no_cleanup _bfd_void_bfd
 
 extern void bfd_dont_truncate_arname
   (bfd *, const char *, char *) ATTRIBUTE_HIDDEN;
@@ -440,9 +431,9 @@ extern symindex _bfd_vms_lib_find_symbol
   (bfd *, const char *) ATTRIBUTE_HIDDEN;
 extern bfd *_bfd_vms_lib_get_imagelib_file
   (bfd *) ATTRIBUTE_HIDDEN;
-extern const bfd_target *_bfd_vms_lib_alpha_archive_p
+extern bfd_cleanup _bfd_vms_lib_alpha_archive_p
   (bfd *) ATTRIBUTE_HIDDEN;
-extern const bfd_target *_bfd_vms_lib_ia64_archive_p
+extern bfd_cleanup _bfd_vms_lib_ia64_archive_p
   (bfd *) ATTRIBUTE_HIDDEN;
 extern bfd_boolean _bfd_vms_lib_alpha_mkarchive
   (bfd *) ATTRIBUTE_HIDDEN;
@@ -461,7 +452,7 @@ extern void _bfd_nosymbols_print_symbol
 extern void _bfd_nosymbols_get_symbol_info
   (bfd *, asymbol *, symbol_info *) ATTRIBUTE_HIDDEN;
 extern const char * _bfd_nosymbols_get_symbol_version_string
-  (bfd *, asymbol *, bfd_boolean *) ATTRIBUTE_HIDDEN;
+  (bfd *, asymbol *, bfd_boolean, bfd_boolean *) ATTRIBUTE_HIDDEN;
 extern bfd_boolean _bfd_nosymbols_bfd_is_local_label_name
   (bfd *, const char *) ATTRIBUTE_HIDDEN;
 #define _bfd_nosymbols_bfd_is_target_special_symbol _bfd_bool_bfd_asymbol_false
@@ -910,6 +901,68 @@ extern bfd_signed_vma _bfd_read_signed_l
 extern bfd_vma _bfd_safe_read_leb128
   (bfd *, bfd_byte *, unsigned int *, bfd_boolean, const bfd_byte * const)
   ATTRIBUTE_HIDDEN;
+extern bfd_byte * _bfd_write_unsigned_leb128
+  (bfd_byte *, bfd_byte *, bfd_vma) ATTRIBUTE_HIDDEN;
+
+#if GCC_VERSION >= 7000
+#define _bfd_mul_overflow(a, b, res) __builtin_mul_overflow (a, b, res)
+#else
+/* Assumes unsigned values.  Careful!  Args evaluated multiple times.  */
+#define _bfd_mul_overflow(a, b, res) \
+  ((*res) = (a), (*res) *= (b), (b) != 0 && (*res) / (b) != (a))
+#endif
+
+#ifdef __GNUC__
+#define _bfd_constant_p(v) __builtin_constant_p (v)
+#else
+#define _bfd_constant_p(v) 0
+#endif
+
+static inline bfd_byte *
+_bfd_alloc_and_read (bfd *abfd, bfd_size_type asize, bfd_size_type rsize)
+{
+  bfd_byte *mem;
+  if (!_bfd_constant_p (rsize))
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      if (filesize != 0 && rsize > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return NULL;
+	}
+    }
+  mem = bfd_alloc (abfd, asize);
+  if (mem != NULL)
+    {
+      if (bfd_bread (mem, rsize, abfd) == rsize)
+	return mem;
+      bfd_release (abfd, mem);
+    }
+  return NULL;
+}
+
+static inline bfd_byte *
+_bfd_malloc_and_read (bfd *abfd, bfd_size_type asize, bfd_size_type rsize)
+{
+  bfd_byte *mem;
+  if (!_bfd_constant_p (rsize))
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      if (filesize != 0 && rsize > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return NULL;
+	}
+    }
+  mem = bfd_malloc (asize);
+  if (mem != NULL)
+    {
+      if (bfd_bread (mem, rsize, abfd) == rsize)
+	return mem;
+      free (mem);
+    }
+  return NULL;
+}
 /* Extracted from libbfd.c.  */
 bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
 
@@ -1552,10 +1605,10 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_PPC64_DTPREL16_HIGHESTA",
   "BFD_RELOC_PPC64_TPREL34",
   "BFD_RELOC_PPC64_DTPREL34",
-  "BFD_RELOC_PPC64_GOT_TLSGD34",
-  "BFD_RELOC_PPC64_GOT_TLSLD34",
-  "BFD_RELOC_PPC64_GOT_TPREL34",
-  "BFD_RELOC_PPC64_GOT_DTPREL34",
+  "BFD_RELOC_PPC64_GOT_TLSGD_PCREL34",
+  "BFD_RELOC_PPC64_GOT_TLSLD_PCREL34",
+  "BFD_RELOC_PPC64_GOT_TPREL_PCREL34",
+  "BFD_RELOC_PPC64_GOT_DTPREL_PCREL34",
   "BFD_RELOC_PPC64_TLS_PCREL",
   "BFD_RELOC_I370_D12",
   "BFD_RELOC_CTOR",
@@ -2751,6 +2804,8 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_MSP430_ABS_HI16",
   "BFD_RELOC_MSP430_PREL31",
   "BFD_RELOC_MSP430_SYM_DIFF",
+  "BFD_RELOC_MSP430_SET_ULEB128",
+  "BFD_RELOC_MSP430_SUB_ULEB128",
   "BFD_RELOC_NIOS2_S16",
   "BFD_RELOC_NIOS2_U16",
   "BFD_RELOC_NIOS2_CALL26",
@@ -2868,7 +2923,20 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_XTENSA_TLS_FUNC",
   "BFD_RELOC_XTENSA_TLS_ARG",
   "BFD_RELOC_XTENSA_TLS_CALL",
+  "BFD_RELOC_XTENSA_PDIFF8",
+  "BFD_RELOC_XTENSA_PDIFF16",
+  "BFD_RELOC_XTENSA_PDIFF32",
+  "BFD_RELOC_XTENSA_NDIFF8",
+  "BFD_RELOC_XTENSA_NDIFF16",
+  "BFD_RELOC_XTENSA_NDIFF32",
   "BFD_RELOC_Z80_DISP8",
+  "BFD_RELOC_Z80_BYTE0",
+  "BFD_RELOC_Z80_BYTE1",
+  "BFD_RELOC_Z80_BYTE2",
+  "BFD_RELOC_Z80_BYTE3",
+  "BFD_RELOC_Z80_WORD0",
+  "BFD_RELOC_Z80_WORD1",
+  "BFD_RELOC_Z80_16_BE",
   "BFD_RELOC_Z8K_DISP7",
   "BFD_RELOC_Z8K_CALLR",
   "BFD_RELOC_Z8K_IMM4L",
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libbfd-in.h ./bfd/libbfd-in.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libbfd-in.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/libbfd-in.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,7 +1,7 @@
 /* libbfd.h -- Declarations used by bfd library *implementation*.
    (This include file is not for users of the library.)
 
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Written by Cygnus Support.
 
@@ -116,12 +116,6 @@ extern void *bfd_realloc_or_free
   (void *, bfd_size_type) ATTRIBUTE_HIDDEN;
 extern void *bfd_zmalloc
   (bfd_size_type) ATTRIBUTE_HIDDEN;
-extern void *bfd_malloc2
-  (bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
-extern void *bfd_realloc2
-  (void *, bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
-extern void *bfd_zmalloc2
-  (bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
 
 static inline char *
 bfd_strdup (const char *str)
@@ -134,10 +128,6 @@ bfd_strdup (const char *str)
 }
 /* These routines allocate and free things on the BFD's objalloc.  */
 
-extern void *bfd_alloc2
-  (bfd *, bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
-extern void *bfd_zalloc2
-  (bfd *, bfd_size_type, bfd_size_type) ATTRIBUTE_HIDDEN;
 extern void bfd_release
   (bfd *, void *) ATTRIBUTE_HIDDEN;
 
@@ -151,7 +141,7 @@ extern bfd_boolean _bfd_generic_mkarchiv
   (bfd *) ATTRIBUTE_HIDDEN;
 extern char *_bfd_append_relative_path
   (bfd *, char *) ATTRIBUTE_HIDDEN;
-extern const bfd_target *bfd_generic_archive_p
+extern bfd_cleanup bfd_generic_archive_p
   (bfd *) ATTRIBUTE_HIDDEN;
 extern bfd_boolean bfd_slurp_armap
   (bfd *) ATTRIBUTE_HIDDEN;
@@ -237,8 +227,9 @@ extern void _bfd_void_bfd_asection
 
 extern bfd *_bfd_new_bfd_contained_in
   (bfd *) ATTRIBUTE_HIDDEN;
-extern const bfd_target *_bfd_dummy_target
+extern bfd_cleanup _bfd_dummy_target
   (bfd *) ATTRIBUTE_HIDDEN;
+#define _bfd_no_cleanup _bfd_void_bfd
 
 extern void bfd_dont_truncate_arname
   (bfd *, const char *, char *) ATTRIBUTE_HIDDEN;
@@ -435,9 +426,9 @@ extern symindex _bfd_vms_lib_find_symbol
   (bfd *, const char *) ATTRIBUTE_HIDDEN;
 extern bfd *_bfd_vms_lib_get_imagelib_file
   (bfd *) ATTRIBUTE_HIDDEN;
-extern const bfd_target *_bfd_vms_lib_alpha_archive_p
+extern bfd_cleanup _bfd_vms_lib_alpha_archive_p
   (bfd *) ATTRIBUTE_HIDDEN;
-extern const bfd_target *_bfd_vms_lib_ia64_archive_p
+extern bfd_cleanup _bfd_vms_lib_ia64_archive_p
   (bfd *) ATTRIBUTE_HIDDEN;
 extern bfd_boolean _bfd_vms_lib_alpha_mkarchive
   (bfd *) ATTRIBUTE_HIDDEN;
@@ -456,7 +447,7 @@ extern void _bfd_nosymbols_print_symbol
 extern void _bfd_nosymbols_get_symbol_info
   (bfd *, asymbol *, symbol_info *) ATTRIBUTE_HIDDEN;
 extern const char * _bfd_nosymbols_get_symbol_version_string
-  (bfd *, asymbol *, bfd_boolean *) ATTRIBUTE_HIDDEN;
+  (bfd *, asymbol *, bfd_boolean, bfd_boolean *) ATTRIBUTE_HIDDEN;
 extern bfd_boolean _bfd_nosymbols_bfd_is_local_label_name
   (bfd *, const char *) ATTRIBUTE_HIDDEN;
 #define _bfd_nosymbols_bfd_is_target_special_symbol _bfd_bool_bfd_asymbol_false
@@ -905,3 +896,65 @@ extern bfd_signed_vma _bfd_read_signed_l
 extern bfd_vma _bfd_safe_read_leb128
   (bfd *, bfd_byte *, unsigned int *, bfd_boolean, const bfd_byte * const)
   ATTRIBUTE_HIDDEN;
+extern bfd_byte * _bfd_write_unsigned_leb128
+  (bfd_byte *, bfd_byte *, bfd_vma) ATTRIBUTE_HIDDEN;
+
+#if GCC_VERSION >= 7000
+#define _bfd_mul_overflow(a, b, res) __builtin_mul_overflow (a, b, res)
+#else
+/* Assumes unsigned values.  Careful!  Args evaluated multiple times.  */
+#define _bfd_mul_overflow(a, b, res) \
+  ((*res) = (a), (*res) *= (b), (b) != 0 && (*res) / (b) != (a))
+#endif
+
+#ifdef __GNUC__
+#define _bfd_constant_p(v) __builtin_constant_p (v)
+#else
+#define _bfd_constant_p(v) 0
+#endif
+
+static inline bfd_byte *
+_bfd_alloc_and_read (bfd *abfd, bfd_size_type asize, bfd_size_type rsize)
+{
+  bfd_byte *mem;
+  if (!_bfd_constant_p (rsize))
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      if (filesize != 0 && rsize > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return NULL;
+	}
+    }
+  mem = bfd_alloc (abfd, asize);
+  if (mem != NULL)
+    {
+      if (bfd_bread (mem, rsize, abfd) == rsize)
+	return mem;
+      bfd_release (abfd, mem);
+    }
+  return NULL;
+}
+
+static inline bfd_byte *
+_bfd_malloc_and_read (bfd *abfd, bfd_size_type asize, bfd_size_type rsize)
+{
+  bfd_byte *mem;
+  if (!_bfd_constant_p (rsize))
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      if (filesize != 0 && rsize > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return NULL;
+	}
+    }
+  mem = bfd_malloc (asize);
+  if (mem != NULL)
+    {
+      if (bfd_bread (mem, rsize, abfd) == rsize)
+	return mem;
+      free (mem);
+    }
+  return NULL;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libcoff.h ./bfd/libcoff.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libcoff.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/libcoff.h	2021-05-21 01:57:23.000000000 +0000
@@ -3,7 +3,7 @@
    Run "make headers" in your build bfd/ to regenerate.  */
 
 /* BFD COFF object file private structure.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -37,8 +37,9 @@ extern "C" {
 
 #define coff_data(bfd)		      ((bfd)->tdata.coff_obj_data)
 #define obj_pe(bfd)		      (coff_data (bfd)->pe)
+#define obj_go32(bfd)		      (coff_data (bfd)->go32)
 #define obj_symbols(bfd)	      (coff_data (bfd)->symbols)
-#define	obj_sym_filepos(bfd)	      (coff_data (bfd)->sym_filepos)
+#define obj_sym_filepos(bfd)	      (coff_data (bfd)->sym_filepos)
 #define obj_relocbase(bfd)	      (coff_data (bfd)->relocbase)
 #define obj_raw_syments(bfd)	      (coff_data (bfd)->raw_syments)
 #define obj_raw_syment_count(bfd)     (coff_data (bfd)->raw_syment_count)
@@ -118,9 +119,14 @@ typedef struct coff_tdata
      used by ARM code.  */
   flagword flags;
 
-  /* coff-stgo32 EXE stub header after BFD tdata has been allocated.  Its data
-     is kept in internal_filehdr.go32stub beforehand.  */
-  char *go32stub;
+  /* Is this a GO32 coff file?  */
+  bfd_boolean go32;
+
+  /* A stub (extra data prepended before the COFF image) and its size.
+     Used by coff-go32-exe, it contains executable data that loads the
+     COFF object into memory.  */
+  char * stub;
+  bfd_size_type stub_size;
 } coff_data_type;
 
 /* Tdata for pe image files.  */
@@ -132,7 +138,9 @@ typedef struct pe_tdata
   int has_reloc_section;
   int dont_strip_reloc;
   int dos_message[16];
-  bfd_boolean insert_timestamp;
+  /* The timestamp to insert into the output file.
+     If the timestamp is -1 then the current time is used.  */
+  int timestamp;
   bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
   flagword real_flags;
 
@@ -239,8 +247,9 @@ struct coff_link_hash_entry
 {
   struct bfd_link_hash_entry root;
 
-  /* Symbol index in output file.  Set to -1 initially.  Set to -2 if
-     there is a reloc against this symbol.  */
+  /* Symbol index in output file.  This is initialized to -1.  It is
+     set to -2 if the symbol is used by a reloc.  It is set to -3 if
+     this symbol is defined in a discarded section.  */
   long indx;
 
   /* Symbol type.  */
@@ -303,7 +312,7 @@ struct coff_reloc_cookie
 #define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
 
 /* Functions in coffgen.c.  */
-extern const bfd_target *coff_object_p
+extern bfd_cleanup coff_object_p
   (bfd *);
 extern struct bfd_section *coff_section_from_bfd_index
   (bfd *, int);
@@ -371,6 +380,8 @@ extern bfd_vma bfd_coff_reloc16_get_valu
   (arelent *, struct bfd_link_info *, asection *);
 extern void bfd_perform_slip
   (bfd *, unsigned int, asection *, bfd_vma);
+extern bfd_boolean _bfd_coff_close_and_cleanup
+  (bfd *);
 
 /* Functions and types in cofflink.c.  */
 
@@ -609,14 +620,6 @@ extern bfd_boolean _bfd_xcoff_define_com
 extern bfd_boolean _bfd_ppc_xcoff_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    struct internal_reloc *, struct internal_syment *, asection **);
-
-/* Functions in coff-ppc.c.  FIXME: These are called by pe.em in the
-   linker, and so should start with bfd and be declared in bfd.h.  */
-
-extern bfd_boolean ppc_allocate_toc_section
-  (struct bfd_link_info *);
-extern bfd_boolean ppc_process_before_allocation
-  (bfd *, struct bfd_link_info *);
 /* Extracted from coffcode.h.  */
 
 typedef struct coff_ptr_struct
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libcoff-in.h ./bfd/libcoff-in.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libcoff-in.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/libcoff-in.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD COFF object file private structure.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,8 +33,9 @@ extern "C" {
 
 #define coff_data(bfd)		      ((bfd)->tdata.coff_obj_data)
 #define obj_pe(bfd)		      (coff_data (bfd)->pe)
+#define obj_go32(bfd)		      (coff_data (bfd)->go32)
 #define obj_symbols(bfd)	      (coff_data (bfd)->symbols)
-#define	obj_sym_filepos(bfd)	      (coff_data (bfd)->sym_filepos)
+#define obj_sym_filepos(bfd)	      (coff_data (bfd)->sym_filepos)
 #define obj_relocbase(bfd)	      (coff_data (bfd)->relocbase)
 #define obj_raw_syments(bfd)	      (coff_data (bfd)->raw_syments)
 #define obj_raw_syment_count(bfd)     (coff_data (bfd)->raw_syment_count)
@@ -114,9 +115,14 @@ typedef struct coff_tdata
      used by ARM code.  */
   flagword flags;
 
-  /* coff-stgo32 EXE stub header after BFD tdata has been allocated.  Its data
-     is kept in internal_filehdr.go32stub beforehand.  */
-  char *go32stub;
+  /* Is this a GO32 coff file?  */
+  bfd_boolean go32;
+
+  /* A stub (extra data prepended before the COFF image) and its size.
+     Used by coff-go32-exe, it contains executable data that loads the
+     COFF object into memory.  */
+  char * stub;
+  bfd_size_type stub_size;
 } coff_data_type;
 
 /* Tdata for pe image files.  */
@@ -128,7 +134,9 @@ typedef struct pe_tdata
   int has_reloc_section;
   int dont_strip_reloc;
   int dos_message[16];
-  bfd_boolean insert_timestamp;
+  /* The timestamp to insert into the output file.
+     If the timestamp is -1 then the current time is used.  */
+  int timestamp;
   bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
   flagword real_flags;
 
@@ -235,8 +243,9 @@ struct coff_link_hash_entry
 {
   struct bfd_link_hash_entry root;
 
-  /* Symbol index in output file.  Set to -1 initially.  Set to -2 if
-     there is a reloc against this symbol.  */
+  /* Symbol index in output file.  This is initialized to -1.  It is
+     set to -2 if the symbol is used by a reloc.  It is set to -3 if
+     this symbol is defined in a discarded section.  */
   long indx;
 
   /* Symbol type.  */
@@ -299,7 +308,7 @@ struct coff_reloc_cookie
 #define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
 
 /* Functions in coffgen.c.  */
-extern const bfd_target *coff_object_p
+extern bfd_cleanup coff_object_p
   (bfd *);
 extern struct bfd_section *coff_section_from_bfd_index
   (bfd *, int);
@@ -367,6 +376,8 @@ extern bfd_vma bfd_coff_reloc16_get_valu
   (arelent *, struct bfd_link_info *, asection *);
 extern void bfd_perform_slip
   (bfd *, unsigned int, asection *, bfd_vma);
+extern bfd_boolean _bfd_coff_close_and_cleanup
+  (bfd *);
 
 /* Functions and types in cofflink.c.  */
 
@@ -605,11 +616,3 @@ extern bfd_boolean _bfd_xcoff_define_com
 extern bfd_boolean _bfd_ppc_xcoff_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    struct internal_reloc *, struct internal_syment *, asection **);
-
-/* Functions in coff-ppc.c.  FIXME: These are called by pe.em in the
-   linker, and so should start with bfd and be declared in bfd.h.  */
-
-extern bfd_boolean ppc_allocate_toc_section
-  (struct bfd_link_info *);
-extern bfd_boolean ppc_process_before_allocation
-  (bfd *, struct bfd_link_info *);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libecoff.h ./bfd/libecoff.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libecoff.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/libecoff.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD ECOFF object file private structure.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libhppa.h ./bfd/libhppa.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libhppa.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/libhppa.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* HP PA-RISC SOM object file format:  definitions internal to BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Contributed by the Center for Software Science at the
    University of Utah (pa-gdb-bugs@cs.utah.edu).
@@ -155,39 +155,20 @@ enum hppa_reloc_expr_type_alt
 
 /* Some functions to manipulate PA instructions.  */
 
-/* Declare the functions with the unused attribute to avoid warnings.  */
-static inline int sign_extend (int, int) ATTRIBUTE_UNUSED;
-static inline int low_sign_extend (int, int) ATTRIBUTE_UNUSED;
-static inline int sign_unext (int, int) ATTRIBUTE_UNUSED;
-static inline int low_sign_unext (int, int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_3 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_12 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_14 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_16 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_17 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_21 (int) ATTRIBUTE_UNUSED;
-static inline int re_assemble_22 (int) ATTRIBUTE_UNUSED;
-static inline bfd_signed_vma hppa_field_adjust
-  (bfd_vma, bfd_signed_vma, enum hppa_reloc_field_selector_type_alt)
-  ATTRIBUTE_UNUSED;
-static inline int bfd_hppa_insn2fmt (bfd *, int) ATTRIBUTE_UNUSED;
-static inline int hppa_rebuild_insn (int, int, int) ATTRIBUTE_UNUSED;
-
-
 /* The *sign_extend functions are used to assemble various bitfields
    taken from an instruction and return the resulting immediate
    value.  */
 
-static inline int
-sign_extend (int x, int len)
+static inline unsigned ATTRIBUTE_UNUSED
+sign_extend (unsigned x, unsigned len)
 {
-  int signbit = (1 << (len - 1));
-  int mask = (signbit << 1) - 1;
+  unsigned signbit = (1 << (len - 1));
+  unsigned mask = (signbit << 1) - 1;
   return ((x & mask) ^ signbit) - signbit;
 }
 
-static inline int
-low_sign_extend (int x, int len)
+static inline unsigned ATTRIBUTE_UNUSED
+low_sign_extend (unsigned x, unsigned len)
 {
   return (x >> 1) - ((x & 1) << (len - 1));
 }
@@ -197,21 +178,21 @@ low_sign_extend (int x, int len)
    insertion into an opcode. pa-risc uses all sorts of weird bitfields
    in the instruction to hold the value.  */
 
-static inline int
-sign_unext (int x, int len)
+static inline unsigned ATTRIBUTE_UNUSED
+sign_unext (unsigned x, unsigned len)
 {
-  int len_ones;
+  unsigned len_ones;
 
   len_ones = (1 << len) - 1;
 
   return x & len_ones;
 }
 
-static inline int
-low_sign_unext (int x, int len)
+static inline unsigned ATTRIBUTE_UNUSED
+low_sign_unext (unsigned x, unsigned len)
 {
-  int temp;
-  int sign;
+  unsigned temp;
+  unsigned sign;
 
   sign = (x >> (len-1)) & 1;
 
@@ -220,32 +201,32 @@ low_sign_unext (int x, int len)
   return (temp << 1) | sign;
 }
 
-static inline int
-re_assemble_3 (int as3)
+static inline unsigned ATTRIBUTE_UNUSED
+re_assemble_3 (unsigned as3)
 {
   return ((  (as3 & 4) << (13-2))
 	  | ((as3 & 3) << (13+1)));
 }
 
-static inline int
-re_assemble_12 (int as12)
+static inline unsigned ATTRIBUTE_UNUSED
+re_assemble_12 (unsigned as12)
 {
   return ((  (as12 & 0x800) >> 11)
 	  | ((as12 & 0x400) >> (10 - 2))
 	  | ((as12 & 0x3ff) << (1 + 2)));
 }
 
-static inline int
-re_assemble_14 (int as14)
+static inline unsigned ATTRIBUTE_UNUSED
+re_assemble_14 (unsigned as14)
 {
   return ((  (as14 & 0x1fff) << 1)
 	  | ((as14 & 0x2000) >> 13));
 }
 
-static inline int
-re_assemble_16 (int as16)
+static inline unsigned ATTRIBUTE_UNUSED
+re_assemble_16 (unsigned as16)
 {
-  int s, t;
+  unsigned s, t;
 
   /* Unusual 16-bit encoding, for wide mode only.  */
   t = (as16 << 1) & 0xffff;
@@ -253,8 +234,8 @@ re_assemble_16 (int as16)
   return (t ^ s ^ (s >> 1)) | (s >> 15);
 }
 
-static inline int
-re_assemble_17 (int as17)
+static inline unsigned ATTRIBUTE_UNUSED
+re_assemble_17 (unsigned as17)
 {
   return ((  (as17 & 0x10000) >> 16)
 	  | ((as17 & 0x0f800) << (16 - 11))
@@ -262,8 +243,8 @@ re_assemble_17 (int as17)
 	  | ((as17 & 0x003ff) << (1 + 2)));
 }
 
-static inline int
-re_assemble_21 (int as21)
+static inline unsigned ATTRIBUTE_UNUSED
+re_assemble_21 (unsigned as21)
 {
   return ((  (as21 & 0x100000) >> 20)
 	  | ((as21 & 0x0ffe00) >> 8)
@@ -272,8 +253,8 @@ re_assemble_21 (int as21)
 	  | ((as21 & 0x000003) << 12));
 }
 
-static inline int
-re_assemble_22 (int as22)
+static inline unsigned ATTRIBUTE_UNUSED
+re_assemble_22 (unsigned as22)
 {
   return ((  (as22 & 0x200000) >> 21)
 	  | ((as22 & 0x1f0000) << (21 - 16))
@@ -293,7 +274,7 @@ re_assemble_22 (int as22)
    This function returns sign extended values in all cases.
 */
 
-static inline bfd_signed_vma
+static inline bfd_signed_vma ATTRIBUTE_UNUSED
 hppa_field_adjust (bfd_vma sym_val,
 		   bfd_signed_vma addend,
 		   enum hppa_reloc_field_selector_type_alt r_field)
@@ -459,8 +440,8 @@ enum hppa_opcode_type
 
 /* Given a machine instruction, return its format.  */
 
-static inline int
-bfd_hppa_insn2fmt (bfd *abfd, int insn)
+static inline unsigned ATTRIBUTE_UNUSED
+bfd_hppa_insn2fmt (bfd *abfd, unsigned insn)
 {
   enum hppa_opcode_type op = (enum hppa_opcode_type) get_opcode (insn);
 
@@ -541,8 +522,8 @@ bfd_hppa_insn2fmt (bfd *abfd, int insn)
 /* Insert VALUE into INSN using R_FORMAT to determine exactly what
    bits to change.  */
 
-static inline int
-hppa_rebuild_insn (int insn, int value, int r_format)
+static inline unsigned ATTRIBUTE_UNUSED
+hppa_rebuild_insn (unsigned insn, unsigned value, int r_format)
 {
   switch (r_format)
     {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libpei.h ./bfd/libpei.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libpei.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/libpei.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for the generic parts of PE/PEI; common header information.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
    Written by Cygnus Solutions.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libxcoff.h ./bfd/libxcoff.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/libxcoff.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/libxcoff.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD XCOFF object file private structure.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
    Written by Tom Rix, Redhat.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/linker.c ./bfd/linker.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/linker.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/linker.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* linker.c -- BFD linker routines
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -536,7 +536,7 @@ bfd_wrapped_link_hash_lookup (bfd *abfd,
 			      bfd_boolean copy,
 			      bfd_boolean follow)
 {
-  bfd_size_type amt;
+  size_t amt;
 
   if (info->wrap_hash != NULL)
     {
@@ -764,7 +764,7 @@ struct bfd_link_hash_table *
 _bfd_generic_link_hash_table_create (bfd *abfd)
 {
   struct generic_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct generic_link_hash_table);
+  size_t amt = sizeof (struct generic_link_hash_table);
 
   ret = (struct generic_link_hash_table *) bfd_malloc (amt);
   if (ret == NULL)
@@ -1995,7 +1995,7 @@ _bfd_generic_link_output_symbols (bfd *o
 	      newsym = bfd_make_empty_symbol (input_bfd);
 	      if (!newsym)
 		return FALSE;
-	      newsym->name = input_bfd->filename;
+	      newsym->name = bfd_get_filename (input_bfd);
 	      newsym->value = 0;
 	      newsym->flags = BSF_LOCAL | BSF_FILE;
 	      newsym->section = sec;
@@ -2422,7 +2422,7 @@ _bfd_generic_reloc_link_order (bfd *abfd
 struct bfd_link_order *
 bfd_new_link_order (bfd *abfd, asection *section)
 {
-  bfd_size_type amt = sizeof (struct bfd_link_order);
+  size_t amt = sizeof (struct bfd_link_order);
   struct bfd_link_order *new_lo;
 
   new_lo = (struct bfd_link_order *) bfd_zalloc (abfd, amt);
@@ -2661,13 +2661,11 @@ default_indirect_link_order (bfd *output
 				  new_contents, loc, input_section->size))
     goto error_return;
 
-  if (contents != NULL)
-    free (contents);
+  free (contents);
   return TRUE;
 
  error_return:
-  if (contents != NULL)
-    free (contents);
+  free (contents);
   return FALSE;
 }
 
@@ -2894,10 +2892,8 @@ _bfd_handle_already_linked (asection *se
 	      (_("%pB: duplicate section `%pA' has different contents\n"),
 	       sec->owner, sec);
 
-	  if (sec_contents)
-	    free (sec_contents);
-	  if (l_sec_contents)
-	    free (l_sec_contents);
+	  free (sec_contents);
+	  free (l_sec_contents);
 	}
       break;
     }
@@ -3099,8 +3095,13 @@ bfd_generic_define_common_symbol (bfd *o
   section = h->u.c.p->section;
 
   /* Increase the size of the section to align the common symbol.
-     The alignment must be a power of two.  */
-  alignment = bfd_octets_per_byte (output_bfd, section) << power_of_two;
+     The alignment must be a power of two.  But if the section does
+     not have any alignment requirement then do not increase the
+     alignment unnecessarily.  */
+  if (power_of_two)
+    alignment = bfd_octets_per_byte (output_bfd, section) << power_of_two;
+  else
+    alignment = 1;
   BFD_ASSERT (alignment != 0 && (alignment & -alignment) == alignment);
   section->size += alignment - 1;
   section->size &= -alignment;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/lynx-core.c ./bfd/lynx-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/lynx-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/lynx-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back end for Lynx core files
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    Written by Stu Grossman of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -85,7 +85,7 @@ make_bfd_asection (bfd *abfd,
   return asect;
 }
 
-const bfd_target *
+bfd_cleanup
 lynx_core_file_p (bfd *abfd)
 {
   int secnum;
@@ -94,7 +94,7 @@ lynx_core_file_p (bfd *abfd)
   core_st_t *threadp;
   int pagesize;
   asection *newsect;
-  bfd_size_type amt;
+  size_t amt;
 
   pagesize = getpagesize ();	/* Serious cross-target issue here...  This
 				   really needs to come from a system-specific
@@ -126,24 +126,13 @@ lynx_core_file_p (bfd *abfd)
 
   tcontext_size = pss.threadcnt * sizeof (core_st_t);
 
-  /* Allocate space for the thread contexts */
-
-  threadp = (core_st_t *) bfd_alloc (abfd, tcontext_size);
-  if (!threadp)
-    goto fail;
-
   /* Save thread contexts */
-
-  if (bfd_seek (abfd, (file_ptr) pagesize, SEEK_SET) != 0)
+  if (bfd_seek (abfd, pagesize, SEEK_SET) != 0)
+    goto fail;
+  threadp = (core_st_t *) _bfd_alloc_and_read (abfd, tcontext_size,
+					       tcontext_size);
+  if (!threadp)
     goto fail;
-
-  if (bfd_bread ((void *) threadp, tcontext_size, abfd) != tcontext_size)
-    {
-      /* Probably too small to be a core file */
-      if (bfd_get_error () != bfd_error_system_call)
-	bfd_set_error (bfd_error_wrong_format);
-      goto fail;
-    }
 
   core_signal (abfd) = threadp->currsig;
 
@@ -202,7 +191,7 @@ lynx_core_file_p (bfd *abfd)
 	goto fail;
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  fail:
   bfd_release (abfd, core_hdr (abfd));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o-aarch64.c ./bfd/mach-o-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o-aarch64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/mach-o-aarch64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* AArch-64 Mach-O support for BFD.
-   Copyright (C) 2015-2019 Free Software Foundation, Inc.
+   Copyright (C) 2015-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -40,13 +40,13 @@
 #define bfd_mach_o_tgt_seg_table NULL
 #define bfd_mach_o_section_type_valid_for_tgt NULL
 
-static const bfd_target *
+static bfd_cleanup
 bfd_mach_o_arm64_object_p (bfd *abfd)
 {
   return bfd_mach_o_header_p (abfd, 0, 0, BFD_MACH_O_CPU_TYPE_ARM64);
 }
 
-static const bfd_target *
+static bfd_cleanup
 bfd_mach_o_arm64_core_p (bfd *abfd)
 {
   return bfd_mach_o_header_p (abfd, 0,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o-arm.c ./bfd/mach-o-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o-arm.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/mach-o-arm.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* ARM Mach-O support for BFD.
-   Copyright (C) 2015-2019 Free Software Foundation, Inc.
+   Copyright (C) 2015-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -38,13 +38,13 @@
 #define bfd_mach_o_tgt_seg_table NULL
 #define bfd_mach_o_section_type_valid_for_tgt NULL
 
-static const bfd_target *
+static bfd_cleanup
 bfd_mach_o_arm_object_p (bfd *abfd)
 {
   return bfd_mach_o_header_p (abfd, 0, 0, BFD_MACH_O_CPU_TYPE_ARM);
 }
 
-static const bfd_target *
+static bfd_cleanup
 bfd_mach_o_arm_core_p (bfd *abfd)
 {
   return bfd_mach_o_header_p (abfd, 0,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o.c ./bfd/mach-o.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/mach-o.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Mach-O support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -618,12 +618,12 @@ cputype (unsigned long value)
 }
 
 static const char *
-cpusubtype (unsigned long cputype, unsigned long cpusubtype)
+cpusubtype (unsigned long cpu_type, unsigned long cpu_subtype)
 {
   static char buffer[128];
 
   buffer[0] = 0;
-  switch (cpusubtype & BFD_MACH_O_CPU_SUBTYPE_MASK)
+  switch (cpu_subtype & BFD_MACH_O_CPU_SUBTYPE_MASK)
     {
     case 0:
       break;
@@ -633,13 +633,13 @@ cpusubtype (unsigned long cputype, unsig
       sprintf (buffer, _("<unknown mask flags>")); break;
     }
 
-  cpusubtype &= ~ BFD_MACH_O_CPU_SUBTYPE_MASK;
+  cpu_subtype &= ~ BFD_MACH_O_CPU_SUBTYPE_MASK;
 
-  switch (cputype)
+  switch (cpu_type)
     {
     case BFD_MACH_O_CPU_TYPE_X86_64:
     case BFD_MACH_O_CPU_TYPE_I386:
-      switch (cpusubtype)
+      switch (cpu_subtype)
 	{
 	case BFD_MACH_O_CPU_SUBTYPE_X86_ALL:
 	  return strcat (buffer, " (X86_ALL)");
@@ -649,7 +649,7 @@ cpusubtype (unsigned long cputype, unsig
       break;
 
     case BFD_MACH_O_CPU_TYPE_ARM:
-      switch (cpusubtype)
+      switch (cpu_subtype)
 	{
 	case BFD_MACH_O_CPU_SUBTYPE_ARM_ALL:
 	  return strcat (buffer, " (ARM_ALL)");
@@ -669,7 +669,7 @@ cpusubtype (unsigned long cputype, unsig
       break;
 
     case BFD_MACH_O_CPU_TYPE_ARM64:
-      switch (cpusubtype)
+      switch (cpu_subtype)
 	{
 	case BFD_MACH_O_CPU_SUBTYPE_ARM64_ALL:
 	  return strcat (buffer, " (ARM64_ALL)");
@@ -684,7 +684,7 @@ cpusubtype (unsigned long cputype, unsig
       break;
     }
 
-  if (cpusubtype != 0)
+  if (cpu_subtype != 0)
     return strcat (buffer, _(" (<unknown>)"));
 
   return buffer;
@@ -1614,24 +1614,20 @@ bfd_mach_o_canonicalize_relocs (bfd *abf
   bfd_mach_o_backend_data *bed = bfd_mach_o_get_backend_data (abfd);
   unsigned long i;
   struct mach_o_reloc_info_external *native_relocs = NULL;
-  bfd_size_type native_size;
+  size_t native_size;
 
   /* Allocate and read relocs.  */
-  native_size = count * BFD_MACH_O_RELENT_SIZE;
-
-  /* PR 17512: file: 09477b57.  */
-  if (native_size < count)
+  if (_bfd_mul_overflow (count, BFD_MACH_O_RELENT_SIZE, &native_size))
+    /* PR 17512: file: 09477b57.  */
     goto err;
 
-  native_relocs =
-    (struct mach_o_reloc_info_external *) bfd_malloc (native_size);
+  if (bfd_seek (abfd, filepos, SEEK_SET) != 0)
+    return -1;
+  native_relocs = (struct mach_o_reloc_info_external *)
+    _bfd_malloc_and_read (abfd, native_size, native_size);
   if (native_relocs == NULL)
     return -1;
 
-  if (bfd_seek (abfd, filepos, SEEK_SET) != 0
-      || bfd_bread (native_relocs, native_size, abfd) != native_size)
-    goto err;
-
   for (i = 0; i < count; i++)
     {
       if (!(*bed->_bfd_mach_o_canonicalize_one_reloc)(abfd, &native_relocs[i],
@@ -1665,9 +1661,11 @@ bfd_mach_o_canonicalize_reloc (bfd *abfd
 
   if (asect->relocation == NULL)
     {
-      if (asect->reloc_count * sizeof (arelent) < asect->reloc_count)
+      size_t amt;
+
+      if (_bfd_mul_overflow (asect->reloc_count, sizeof (arelent), &amt))
 	return -1;
-      res = bfd_malloc (asect->reloc_count * sizeof (arelent));
+      res = bfd_malloc (amt);
       if (res == NULL)
 	return -1;
 
@@ -1720,12 +1718,30 @@ bfd_mach_o_canonicalize_dynamic_reloc (b
 
   if (mdata->dyn_reloc_cache == NULL)
     {
-      if ((dysymtab->nextrel + dysymtab->nlocrel) * sizeof (arelent)
-	  < (dysymtab->nextrel + dysymtab->nlocrel))
-	return -1;
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      size_t amt;
+
+      if (filesize != 0)
+	{
+	  if (dysymtab->extreloff > filesize
+	      || dysymtab->nextrel > ((filesize - dysymtab->extreloff)
+				      / BFD_MACH_O_RELENT_SIZE)
+	      || dysymtab->locreloff > filesize
+	      || dysymtab->nlocrel > ((filesize - dysymtab->locreloff)
+				      / BFD_MACH_O_RELENT_SIZE))
+	    {
+	      bfd_set_error (bfd_error_file_truncated);
+	      return -1;
+	    }
+	}
+      if (_bfd_mul_overflow (dysymtab->nextrel + dysymtab->nlocrel,
+			     sizeof (arelent), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  return -1;
+	}
 
-      res = bfd_malloc ((dysymtab->nextrel + dysymtab->nlocrel)
-			* sizeof (arelent));
+      res = bfd_malloc (amt);
       if (res == NULL)
 	return -1;
 
@@ -2167,14 +2183,15 @@ bfd_mach_o_build_dysymtab (bfd *abfd, bf
     {
       unsigned i;
       unsigned n;
+      size_t amt;
 
       mdata->filelen = FILE_ALIGN (mdata->filelen, 2);
       cmd->indirectsymoff = mdata->filelen;
-      mdata->filelen += cmd->nindirectsyms * 4;
-
-      if (cmd->nindirectsyms * 4 < cmd->nindirectsyms)
+      if (_bfd_mul_overflow (cmd->nindirectsyms, 4, &amt))
 	return FALSE;
-      cmd->indirect_syms = bfd_zalloc (abfd, cmd->nindirectsyms * 4);
+      mdata->filelen += amt;
+
+      cmd->indirect_syms = bfd_zalloc (abfd, amt);
       if (cmd->indirect_syms == NULL)
 	return FALSE;
 
@@ -2554,6 +2571,7 @@ bfd_mach_o_mangle_sections (bfd *abfd, b
   asection *sec;
   unsigned target_index;
   unsigned nsect;
+  size_t amt;
 
   nsect = bfd_count_sections (abfd);
 
@@ -2572,8 +2590,8 @@ bfd_mach_o_mangle_sections (bfd *abfd, b
     }
 
   mdata->nsects = nsect;
-  mdata->sections = bfd_alloc2 (abfd,
-				mdata->nsects, sizeof (bfd_mach_o_section *));
+  amt = mdata->nsects * sizeof (bfd_mach_o_section *);
+  mdata->sections = bfd_alloc (abfd, amt);
   if (mdata->sections == NULL)
     return FALSE;
 
@@ -3897,19 +3915,13 @@ bfd_mach_o_read_symtab_strtab (bfd *abfd
       /* See PR 21840 for a reproducer.  */
       if ((sym->strsize + 1) == 0)
 	return FALSE;
-      sym->strtab = bfd_alloc (abfd, sym->strsize + 1);
+      if (bfd_seek (abfd, sym->stroff, SEEK_SET) != 0)
+	return FALSE;
+      sym->strtab = (char *) _bfd_alloc_and_read (abfd, sym->strsize + 1,
+						  sym->strsize);
       if (sym->strtab == NULL)
 	return FALSE;
 
-      if (bfd_seek (abfd, sym->stroff, SEEK_SET) != 0
-	  || bfd_bread (sym->strtab, sym->strsize, abfd) != sym->strsize)
-	{
-	  /* PR 17512: file: 10888-1609-0.004.  */
-	  bfd_release (abfd, sym->strtab);
-	  sym->strtab = NULL;
-	  bfd_set_error (bfd_error_file_truncated);
-	  return FALSE;
-	}
       /* Zero terminate the string table.  */
       sym->strtab[sym->strsize] = 0;
     }
@@ -3923,16 +3935,32 @@ bfd_mach_o_read_symtab_symbols (bfd *abf
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
   bfd_mach_o_symtab_command *sym = mdata->symtab;
   unsigned long i;
+  size_t amt;
+  ufile_ptr filesize;
 
-  if (sym == NULL || sym->symbols)
+  if (sym == NULL || sym->nsyms == 0 || sym->symbols)
     /* Return now if there are no symbols or if already loaded.  */
     return TRUE;
 
-  sym->symbols = bfd_alloc2 (abfd, sym->nsyms, sizeof (bfd_mach_o_asymbol));
-  if (sym->symbols == NULL)
+  filesize = bfd_get_file_size (abfd);
+  if (filesize != 0)
+    {
+      unsigned int wide = mach_o_wide_p (&mdata->header);
+      unsigned int symwidth
+	= wide ? BFD_MACH_O_NLIST_64_SIZE : BFD_MACH_O_NLIST_SIZE;
+
+      if (sym->symoff > filesize
+	  || sym->nsyms > (filesize - sym->symoff) / symwidth)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  sym->nsyms = 0;
+	  return FALSE;
+	}
+    }
+  if (_bfd_mul_overflow (sym->nsyms, sizeof (bfd_mach_o_asymbol), &amt)
+      || (sym->symbols = bfd_alloc (abfd, amt)) == NULL)
     {
-      _bfd_error_handler (_("bfd_mach_o_read_symtab_symbols: "
-			    "unable to allocate memory for symbols"));
+      bfd_set_error (bfd_error_no_memory);
       sym->nsyms = 0;
       return FALSE;
     }
@@ -3990,6 +4018,14 @@ bfd_mach_o_ppc_flavour_string (unsigned
     }
 }
 
+static unsigned char *
+bfd_mach_o_alloc_and_read (bfd *abfd, file_ptr filepos, size_t size)
+{
+  if (bfd_seek (abfd, filepos, SEEK_SET) != 0)
+    return NULL;
+  return _bfd_alloc_and_read (abfd, size, size);
+}
+
 static bfd_boolean
 bfd_mach_o_read_dylinker (bfd *abfd, bfd_mach_o_load_command *command)
 {
@@ -3998,21 +4034,20 @@ bfd_mach_o_read_dylinker (bfd *abfd, bfd
   unsigned int nameoff;
   unsigned int namelen;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
   nameoff = bfd_h_get_32 (abfd, raw.str);
+  if (nameoff > command->len)
+    return FALSE;
 
   cmd->name_offset = nameoff;
   namelen = command->len - nameoff;
   nameoff += command->offset;
-  cmd->name_str = bfd_alloc (abfd, namelen);
-  if (cmd->name_str == NULL)
-    return FALSE;
-  if (bfd_seek (abfd, nameoff, SEEK_SET) != 0
-      || bfd_bread (cmd->name_str, namelen, abfd) != namelen)
-    return FALSE;
-  return TRUE;
+  cmd->name_str = (char *) bfd_mach_o_alloc_and_read (abfd, nameoff, namelen);
+  return cmd->name_str != NULL;
 }
 
 static bfd_boolean
@@ -4023,7 +4058,10 @@ bfd_mach_o_read_dylib (bfd *abfd, bfd_ma
   struct mach_o_dylib_command_external raw;
   unsigned int nameoff;
   unsigned int namelen;
+  file_ptr pos;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   switch (command->type)
     {
     case BFD_MACH_O_LC_LOAD_DYLIB:
@@ -4042,19 +4080,17 @@ bfd_mach_o_read_dylib (bfd *abfd, bfd_ma
     return FALSE;
 
   nameoff = bfd_h_get_32 (abfd, raw.name);
+  if (nameoff > command->len)
+    return FALSE;
   cmd->timestamp = bfd_h_get_32 (abfd, raw.timestamp);
   cmd->current_version = bfd_h_get_32 (abfd, raw.current_version);
   cmd->compatibility_version = bfd_h_get_32 (abfd, raw.compatibility_version);
 
   cmd->name_offset = command->offset + nameoff;
   namelen = command->len - nameoff;
-  cmd->name_str = bfd_alloc (abfd, namelen);
-  if (cmd->name_str == NULL)
-    return FALSE;
-  if (bfd_seek (abfd, mdata->hdr_offset + cmd->name_offset, SEEK_SET) != 0
-      || bfd_bread (cmd->name_str, namelen, abfd) != namelen)
-    return FALSE;
-  return TRUE;
+  pos = mdata->hdr_offset + cmd->name_offset;
+  cmd->name_str = (char *) bfd_mach_o_alloc_and_read (abfd, pos, namelen);
+  return cmd->name_str != NULL;
 }
 
 static bfd_boolean
@@ -4068,6 +4104,8 @@ bfd_mach_o_read_prebound_dylib (bfd *abf
   unsigned int str_len;
   unsigned char *str;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4077,11 +4115,9 @@ bfd_mach_o_read_prebound_dylib (bfd *abf
     return FALSE;
 
   str_len = command->len - sizeof (raw);
-  str = bfd_alloc (abfd, str_len);
+  str = _bfd_alloc_and_read (abfd, str_len, str_len);
   if (str == NULL)
     return FALSE;
-  if (bfd_bread (str, str_len, abfd) != str_len)
-    return FALSE;
 
   cmd->name_offset = command->offset + nameoff;
   cmd->nmodules = bfd_h_get_32 (abfd, raw.nmodules);
@@ -4099,6 +4135,8 @@ bfd_mach_o_read_prebind_cksum (bfd *abfd
   bfd_mach_o_prebind_cksum_command *cmd = &command->command.prebind_cksum;
   struct mach_o_prebind_cksum_command_external raw;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4113,6 +4151,8 @@ bfd_mach_o_read_twolevel_hints (bfd *abf
   bfd_mach_o_twolevel_hints_command *cmd = &command->command.twolevel_hints;
   struct mach_o_twolevel_hints_command_external raw;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4129,22 +4169,22 @@ bfd_mach_o_read_fvmlib (bfd *abfd, bfd_m
   unsigned int nameoff;
   unsigned int namelen;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
   nameoff = bfd_h_get_32 (abfd, raw.name);
+  if (nameoff > command->len)
+    return FALSE;
   fvm->minor_version = bfd_h_get_32 (abfd, raw.minor_version);
   fvm->header_addr = bfd_h_get_32 (abfd, raw.header_addr);
 
   fvm->name_offset = command->offset + nameoff;
   namelen = command->len - nameoff;
-  fvm->name_str = bfd_alloc (abfd, namelen);
-  if (fvm->name_str == NULL)
-    return FALSE;
-  if (bfd_seek (abfd, fvm->name_offset, SEEK_SET) != 0
-      || bfd_bread (fvm->name_str, namelen, abfd) != namelen)
-    return FALSE;
-  return TRUE;
+  fvm->name_str = (char *) bfd_mach_o_alloc_and_read (abfd, fvm->name_offset,
+						      namelen);
+  return fvm->name_str != NULL;
 }
 
 static bfd_boolean
@@ -4155,6 +4195,8 @@ bfd_mach_o_read_thread (bfd *abfd, bfd_m
   unsigned int offset;
   unsigned int nflavours;
   unsigned int i;
+  struct mach_o_thread_command_external raw;
+  size_t amt;
 
   BFD_ASSERT ((command->type == BFD_MACH_O_LC_THREAD)
 	      || (command->type == BFD_MACH_O_LC_UNIXTHREAD));
@@ -4162,24 +4204,31 @@ bfd_mach_o_read_thread (bfd *abfd, bfd_m
   /* Count the number of threads.  */
   offset = 8;
   nflavours = 0;
-  while (offset != command->len)
+  while (offset + sizeof (raw) <= command->len)
     {
-      struct mach_o_thread_command_external raw;
-
-      if (offset >= command->len)
-	return FALSE;
+      unsigned int count;
 
       if (bfd_seek (abfd, command->offset + offset, SEEK_SET) != 0
 	  || bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
 	return FALSE;
 
-      offset += sizeof (raw) + bfd_h_get_32 (abfd, raw.count) * 4;
+      count = bfd_h_get_32 (abfd, raw.count);
+      if (count > (unsigned) -1 / 4
+	  || command->len - (offset + sizeof (raw)) < count * 4)
+	return FALSE;
+      offset += sizeof (raw) + count * 4;
       nflavours++;
     }
+  if (nflavours == 0 || offset != command->len)
+    return FALSE;
 
   /* Allocate threads.  */
-  cmd->flavours = bfd_alloc2
-    (abfd, nflavours, sizeof (bfd_mach_o_thread_flavour));
+  if (_bfd_mul_overflow (nflavours, sizeof (bfd_mach_o_thread_flavour), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  cmd->flavours = bfd_alloc (abfd, amt);
   if (cmd->flavours == NULL)
     return FALSE;
   cmd->nflavours = nflavours;
@@ -4188,14 +4237,6 @@ bfd_mach_o_read_thread (bfd *abfd, bfd_m
   nflavours = 0;
   while (offset != command->len)
     {
-      struct mach_o_thread_command_external raw;
-
-      if (offset >= command->len)
-	return FALSE;
-
-      if (nflavours >= cmd->nflavours)
-	return FALSE;
-
       if (bfd_seek (abfd, command->offset + offset, SEEK_SET) != 0
 	  || bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
 	return FALSE;
@@ -4261,7 +4302,8 @@ bfd_mach_o_read_thread (bfd *abfd, bfd_m
 }
 
 static bfd_boolean
-bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
+bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command,
+			  ufile_ptr filesize)
 {
   bfd_mach_o_dysymtab_command *cmd = &command->command.dysymtab;
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -4271,6 +4313,8 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd
   {
     struct mach_o_dysymtab_command_external raw;
 
+    if (command->len < sizeof (raw) + 8)
+      return FALSE;
     if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
       return FALSE;
 
@@ -4299,9 +4343,21 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd
       unsigned int i;
       int wide = bfd_mach_o_wide_p (abfd);
       unsigned int module_len = wide ? 56 : 52;
+      size_t amt;
 
-      cmd->dylib_module =
-	bfd_alloc2 (abfd, cmd->nmodtab, sizeof (bfd_mach_o_dylib_module));
+      if (cmd->modtaboff > filesize
+	  || cmd->nmodtab > (filesize - cmd->modtaboff) / module_len)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return FALSE;
+	}
+      if (_bfd_mul_overflow (cmd->nmodtab,
+			     sizeof (bfd_mach_o_dylib_module), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  return FALSE;
+	}
+      cmd->dylib_module = bfd_alloc (abfd, amt);
       if (cmd->dylib_module == NULL)
 	return FALSE;
 
@@ -4348,9 +4404,22 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd
   if (cmd->ntoc != 0)
     {
       unsigned long i;
+      size_t amt;
+      struct mach_o_dylib_table_of_contents_external raw;
 
-      cmd->dylib_toc = bfd_alloc2
-	(abfd, cmd->ntoc, sizeof (bfd_mach_o_dylib_table_of_content));
+      if (cmd->tocoff > filesize
+	  || cmd->ntoc > (filesize - cmd->tocoff) / sizeof (raw))
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return FALSE;
+	}
+      if (_bfd_mul_overflow (cmd->ntoc,
+			     sizeof (bfd_mach_o_dylib_table_of_content), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  return FALSE;
+	}
+      cmd->dylib_toc = bfd_alloc (abfd, amt);
       if (cmd->dylib_toc == NULL)
 	return FALSE;
 
@@ -4359,7 +4428,6 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd
 
       for (i = 0; i < cmd->ntoc; i++)
 	{
-	  struct mach_o_dylib_table_of_contents_external raw;
 	  bfd_mach_o_dylib_table_of_content *toc = &cmd->dylib_toc[i];
 
 	  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
@@ -4373,9 +4441,20 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd
   if (cmd->nindirectsyms != 0)
     {
       unsigned int i;
+      size_t amt;
 
-      cmd->indirect_syms = bfd_alloc2
-	(abfd, cmd->nindirectsyms, sizeof (unsigned int));
+      if (cmd->indirectsymoff > filesize
+	  || cmd->nindirectsyms > (filesize - cmd->indirectsymoff) / 4)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return FALSE;
+	}
+      if (_bfd_mul_overflow (cmd->nindirectsyms, sizeof (unsigned int), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  return FALSE;
+	}
+      cmd->indirect_syms = bfd_alloc (abfd, amt);
       if (cmd->indirect_syms == NULL)
 	return FALSE;
 
@@ -4398,9 +4477,21 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd
     {
       unsigned long v;
       unsigned int i;
+      size_t amt;
 
-      cmd->ext_refs = bfd_alloc2
-	(abfd, cmd->nextrefsyms, sizeof (bfd_mach_o_dylib_reference));
+      if (cmd->extrefsymoff > filesize
+	  || cmd->nextrefsyms > (filesize - cmd->extrefsymoff) / 4)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return FALSE;
+	}
+      if (_bfd_mul_overflow (cmd->nextrefsyms,
+			     sizeof (bfd_mach_o_dylib_reference), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  return FALSE;
+	}
+      cmd->ext_refs = bfd_alloc (abfd, amt);
       if (cmd->ext_refs == NULL)
 	return FALSE;
 
@@ -4439,7 +4530,8 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd
 }
 
 static bfd_boolean
-bfd_mach_o_read_symtab (bfd *abfd, bfd_mach_o_load_command *command)
+bfd_mach_o_read_symtab (bfd *abfd, bfd_mach_o_load_command *command,
+			ufile_ptr filesize)
 {
   bfd_mach_o_symtab_command *symtab = &command->command.symtab;
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -4447,6 +4539,8 @@ bfd_mach_o_read_symtab (bfd *abfd, bfd_m
 
   BFD_ASSERT (command->type == BFD_MACH_O_LC_SYMTAB);
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4457,6 +4551,15 @@ bfd_mach_o_read_symtab (bfd *abfd, bfd_m
   symtab->symbols = NULL;
   symtab->strtab = NULL;
 
+  if (symtab->symoff > filesize
+      || symtab->nsyms > (filesize - symtab->symoff) / BFD_MACH_O_NLIST_SIZE
+      || symtab->stroff > filesize
+      || symtab->strsize > filesize - symtab->stroff)
+    {
+      bfd_set_error (bfd_error_file_truncated);
+      return FALSE;
+    }
+
   if (symtab->nsyms != 0)
     abfd->flags |= HAS_SYMS;
 
@@ -4473,6 +4576,8 @@ bfd_mach_o_read_uuid (bfd *abfd, bfd_mac
 
   BFD_ASSERT (command->type == BFD_MACH_O_LC_UUID);
 
+  if (command->len < 16 + 8)
+    return FALSE;
   if (bfd_bread (cmd->uuid, 16, abfd) != 16)
     return FALSE;
 
@@ -4485,6 +4590,8 @@ bfd_mach_o_read_linkedit (bfd *abfd, bfd
   bfd_mach_o_linkedit_command *cmd = &command->command.linkedit;
   struct mach_o_linkedit_data_command_external raw;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4500,33 +4607,20 @@ bfd_mach_o_read_str (bfd *abfd, bfd_mach
   struct mach_o_str_command_external raw;
   unsigned long off;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
   off = bfd_get_32 (abfd, raw.str);
-  cmd->stroff = command->offset + off;
-  cmd->str_len = command->len - off;
-  cmd->str = bfd_alloc (abfd, cmd->str_len);
-  if (cmd->str == NULL)
+  if (off > command->len)
     return FALSE;
-  if (bfd_seek (abfd, cmd->stroff, SEEK_SET) != 0
-      || bfd_bread ((void *) cmd->str, cmd->str_len, abfd) != cmd->str_len)
-    return FALSE;
-  return TRUE;
-}
 
-static unsigned char *
-bfd_mach_o_alloc_and_read (bfd *abfd, unsigned int off, unsigned int size)
-{
-  unsigned char *buf;
-
-  buf = bfd_alloc (abfd, size);
-  if (buf == NULL)
-    return NULL;
-  if (bfd_seek (abfd, off, SEEK_SET) != 0
-      || bfd_bread (buf, size, abfd) != size)
-    return NULL;
-  return buf;
+  cmd->stroff = command->offset + off;
+  cmd->str_len = command->len - off;
+  cmd->str = (char *) bfd_mach_o_alloc_and_read (abfd, cmd->stroff,
+						 cmd->str_len);
+  return cmd->str != NULL;
 }
 
 static bfd_boolean
@@ -4535,8 +4629,8 @@ bfd_mach_o_read_dyld_content (bfd *abfd,
   /* Read rebase content.  */
   if (cmd->rebase_content == NULL && cmd->rebase_size != 0)
     {
-      cmd->rebase_content =
-	bfd_mach_o_alloc_and_read (abfd, cmd->rebase_off, cmd->rebase_size);
+      cmd->rebase_content
+	= bfd_mach_o_alloc_and_read (abfd, cmd->rebase_off, cmd->rebase_size);
       if (cmd->rebase_content == NULL)
 	return FALSE;
     }
@@ -4544,8 +4638,8 @@ bfd_mach_o_read_dyld_content (bfd *abfd,
   /* Read bind content.  */
   if (cmd->bind_content == NULL && cmd->bind_size != 0)
     {
-      cmd->bind_content =
-	bfd_mach_o_alloc_and_read (abfd, cmd->bind_off, cmd->bind_size);
+      cmd->bind_content
+	= bfd_mach_o_alloc_and_read (abfd, cmd->bind_off, cmd->bind_size);
       if (cmd->bind_content == NULL)
 	return FALSE;
     }
@@ -4586,6 +4680,8 @@ bfd_mach_o_read_dyld_info (bfd *abfd, bf
   bfd_mach_o_dyld_info_command *cmd = &command->command.dyld_info;
   struct mach_o_dyld_info_command_external raw;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4613,6 +4709,8 @@ bfd_mach_o_read_version_min (bfd *abfd,
   bfd_mach_o_version_min_command *cmd = &command->command.version_min;
   struct mach_o_version_min_command_external raw;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4627,6 +4725,8 @@ bfd_mach_o_read_encryption_info (bfd *ab
   bfd_mach_o_encryption_info_command *cmd = &command->command.encryption_info;
   struct mach_o_encryption_info_command_external raw;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4642,6 +4742,8 @@ bfd_mach_o_read_encryption_info_64 (bfd
   bfd_mach_o_encryption_info_command *cmd = &command->command.encryption_info;
   struct mach_o_encryption_info_64_command_external raw;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4657,6 +4759,8 @@ bfd_mach_o_read_main (bfd *abfd, bfd_mac
   bfd_mach_o_main_command *cmd = &command->command.main;
   struct mach_o_entry_point_command_external raw;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4672,6 +4776,8 @@ bfd_mach_o_read_source_version (bfd *abf
   struct mach_o_source_version_command_external raw;
   bfd_uint64_t ver;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4697,6 +4803,8 @@ bfd_mach_o_read_note (bfd *abfd, bfd_mac
   bfd_mach_o_note_command *cmd = &command->command.note;
   struct mach_o_note_command_external raw;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4712,6 +4820,8 @@ bfd_mach_o_read_build_version (bfd *abfd
   bfd_mach_o_build_version_command *cmd = &command->command.build_version;
   struct mach_o_build_version_command_external raw;
 
+  if (command->len < sizeof (raw) + 8)
+    return FALSE;
   if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
     return FALSE;
 
@@ -4736,6 +4846,8 @@ bfd_mach_o_read_segment (bfd *abfd,
 
       BFD_ASSERT (command->type == BFD_MACH_O_LC_SEGMENT_64);
 
+      if (command->len < sizeof (raw) + 8)
+	return FALSE;
       if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
 	return FALSE;
 
@@ -4757,6 +4869,8 @@ bfd_mach_o_read_segment (bfd *abfd,
 
       BFD_ASSERT (command->type == BFD_MACH_O_LC_SEGMENT);
 
+      if (command->len < sizeof (raw) + 8)
+	return FALSE;
       if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
 	return FALSE;
 
@@ -4803,7 +4917,8 @@ bfd_mach_o_read_segment_64 (bfd *abfd, b
 }
 
 static bfd_boolean
-bfd_mach_o_read_command (bfd *abfd, bfd_mach_o_load_command *command)
+bfd_mach_o_read_command (bfd *abfd, bfd_mach_o_load_command *command,
+			 ufile_ptr filesize)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
   struct mach_o_load_command_external raw;
@@ -4815,9 +4930,11 @@ bfd_mach_o_read_command (bfd *abfd, bfd_
     return FALSE;
 
   cmd = bfd_h_get_32 (abfd, raw.cmd);
-  command->type =  cmd & ~BFD_MACH_O_LC_REQ_DYLD;
+  command->type = cmd & ~BFD_MACH_O_LC_REQ_DYLD;
   command->type_required = cmd & BFD_MACH_O_LC_REQ_DYLD ? TRUE : FALSE;
   command->len = bfd_h_get_32 (abfd, raw.cmdsize);
+  if (command->len < 8 || command->len % 4 != 0)
+    return FALSE;
 
   switch (command->type)
     {
@@ -4830,7 +4947,7 @@ bfd_mach_o_read_command (bfd *abfd, bfd_
 	return FALSE;
       break;
     case BFD_MACH_O_LC_SYMTAB:
-      if (!bfd_mach_o_read_symtab (abfd, command))
+      if (!bfd_mach_o_read_symtab (abfd, command, filesize))
 	return FALSE;
       break;
     case BFD_MACH_O_LC_SYMSEG:
@@ -4879,7 +4996,7 @@ bfd_mach_o_read_command (bfd *abfd, bfd_
 	return FALSE;
       break;
     case BFD_MACH_O_LC_DYSYMTAB:
-      if (!bfd_mach_o_read_dysymtab (abfd, command))
+      if (!bfd_mach_o_read_dysymtab (abfd, command, filesize))
 	return FALSE;
       break;
     case BFD_MACH_O_LC_PREBIND_CKSUM:
@@ -4900,6 +5017,8 @@ bfd_mach_o_read_command (bfd *abfd, bfd_
     case BFD_MACH_O_LC_DATA_IN_CODE:
     case BFD_MACH_O_LC_DYLIB_CODE_SIGN_DRS:
     case BFD_MACH_O_LC_LINKER_OPTIMIZATION_HINT:
+    case BFD_MACH_O_LC_DYLD_EXPORTS_TRIE:
+    case BFD_MACH_O_LC_DYLD_CHAINED_FIXUPS:
       if (!bfd_mach_o_read_linkedit (abfd, command))
 	return FALSE;
       break;
@@ -4950,12 +5069,13 @@ bfd_mach_o_read_command (bfd *abfd, bfd_
   return TRUE;
 }
 
-static void
+static bfd_boolean
 bfd_mach_o_flatten_sections (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
   bfd_mach_o_load_command *cmd;
   long csect = 0;
+  size_t amt;
 
   /* Count total number of sections.  */
   mdata->nsects = 0;
@@ -4972,8 +5092,14 @@ bfd_mach_o_flatten_sections (bfd *abfd)
     }
 
   /* Allocate sections array.  */
-  mdata->sections = bfd_alloc2 (abfd,
-				mdata->nsects, sizeof (bfd_mach_o_section *));
+  if (_bfd_mul_overflow (mdata->nsects, sizeof (bfd_mach_o_section *), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  mdata->sections = bfd_alloc (abfd, amt);
+  if (mdata->sections == NULL && mdata->nsects != 0)
+    return FALSE;
 
   /* Fill the array.  */
   csect = 0;
@@ -4992,6 +5118,7 @@ bfd_mach_o_flatten_sections (bfd *abfd)
 	    mdata->sections[csect++] = sec;
 	}
     }
+  return TRUE;
 }
 
 static bfd_boolean
@@ -5101,8 +5228,8 @@ bfd_mach_o_scan (bfd *abfd,
 		 bfd_mach_o_data_struct *mdata)
 {
   unsigned int i;
-  enum bfd_architecture cputype;
-  unsigned long cpusubtype;
+  enum bfd_architecture cpu_type;
+  unsigned long cpu_subtype;
   unsigned int hdrsize;
 
   hdrsize = mach_o_wide_p (header) ?
@@ -5128,8 +5255,8 @@ bfd_mach_o_scan (bfd *abfd,
   abfd->tdata.mach_o_data = mdata;
 
   bfd_mach_o_convert_architecture (header->cputype, header->cpusubtype,
-				   &cputype, &cpusubtype);
-  if (cputype == bfd_arch_unknown)
+				   &cpu_type, &cpu_subtype);
+  if (cpu_type == bfd_arch_unknown)
     {
       _bfd_error_handler
 	/* xgettext:c-format */
@@ -5138,16 +5265,32 @@ bfd_mach_o_scan (bfd *abfd,
       return FALSE;
     }
 
-  bfd_set_arch_mach (abfd, cputype, cpusubtype);
+  bfd_set_arch_mach (abfd, cpu_type, cpu_subtype);
 
   if (header->ncmds != 0)
     {
       bfd_mach_o_load_command *cmd;
+      size_t amt;
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+
+      if (filesize == 0)
+	filesize = (ufile_ptr) -1;
 
       mdata->first_command = NULL;
       mdata->last_command = NULL;
 
-      cmd = bfd_alloc2 (abfd, header->ncmds, sizeof (bfd_mach_o_load_command));
+      if (header->ncmds > (filesize - hdrsize) / BFD_MACH_O_LC_SIZE)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return FALSE;
+	}
+      if (_bfd_mul_overflow (header->ncmds,
+			     sizeof (bfd_mach_o_load_command), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  return FALSE;
+	}
+      cmd = bfd_alloc (abfd, amt);
       if (cmd == NULL)
 	return FALSE;
 
@@ -5165,13 +5308,14 @@ bfd_mach_o_scan (bfd *abfd,
 	      cur->offset = prev->offset + prev->len;
 	    }
 
-	  if (!bfd_mach_o_read_command (abfd, cur))
+	  if (!bfd_mach_o_read_command (abfd, cur, filesize))
 	    return FALSE;
 	}
     }
 
   /* Sections should be flatten before scanning start address.  */
-  bfd_mach_o_flatten_sections (abfd);
+  if (!bfd_mach_o_flatten_sections (abfd))
+    return FALSE;
   if (!bfd_mach_o_scan_start_address (abfd))
     return FALSE;
 
@@ -5223,11 +5367,11 @@ bfd_mach_o_gen_mkobject (bfd *abfd)
   return TRUE;
 }
 
-const bfd_target *
+bfd_cleanup
 bfd_mach_o_header_p (bfd *abfd,
 		     file_ptr hdr_off,
-		     bfd_mach_o_filetype filetype,
-		     bfd_mach_o_cpu_type cputype)
+		     bfd_mach_o_filetype file_type,
+		     bfd_mach_o_cpu_type cpu_type)
 {
   bfd_mach_o_header header;
   bfd_mach_o_data_struct *mdata;
@@ -5254,9 +5398,9 @@ bfd_mach_o_header_p (bfd *abfd,
   /* Check cputype and filetype.
      In case of wildcard, do not accept magics that are handled by existing
      targets.  */
-  if (cputype)
+  if (cpu_type)
     {
-      if (header.cputype != cputype)
+      if (header.cputype != cpu_type)
 	goto wrong;
     }
   else
@@ -5269,9 +5413,9 @@ bfd_mach_o_header_p (bfd *abfd,
 #endif
     }
 
-  if (filetype)
+  if (file_type)
     {
-      if (header.filetype != filetype)
+      if (header.filetype != file_type)
 	goto wrong;
     }
   else
@@ -5294,7 +5438,7 @@ bfd_mach_o_header_p (bfd *abfd,
   if (!bfd_mach_o_scan (abfd, &header, mdata))
     goto wrong;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  wrong:
   bfd_set_error (bfd_error_wrong_format);
@@ -5303,13 +5447,13 @@ bfd_mach_o_header_p (bfd *abfd,
   return NULL;
 }
 
-static const bfd_target *
+static bfd_cleanup
 bfd_mach_o_gen_object_p (bfd *abfd)
 {
   return bfd_mach_o_header_p (abfd, 0, 0, 0);
 }
 
-static const bfd_target *
+static bfd_cleanup
 bfd_mach_o_gen_core_p (bfd *abfd)
 {
   return bfd_mach_o_header_p (abfd, 0, BFD_MACH_O_MH_CORE, 0);
@@ -5359,12 +5503,13 @@ typedef struct mach_o_fat_data_struct
   mach_o_fat_archentry *archentries;
 } mach_o_fat_data_struct;
 
-const bfd_target *
+bfd_cleanup
 bfd_mach_o_fat_archive_p (bfd *abfd)
 {
   mach_o_fat_data_struct *adata = NULL;
   struct mach_o_fat_header_external hdr;
   unsigned long i;
+  size_t amt;
 
   if (bfd_seek (abfd, 0, SEEK_SET) != 0
       || bfd_bread (&hdr, sizeof (hdr), abfd) != sizeof (hdr))
@@ -5384,8 +5529,13 @@ bfd_mach_o_fat_archive_p (bfd *abfd)
   if (adata->nfat_arch > 30)
     goto error;
 
-  adata->archentries =
-    bfd_alloc2 (abfd, adata->nfat_arch, sizeof (mach_o_fat_archentry));
+  if (_bfd_mul_overflow (adata->nfat_arch,
+			 sizeof (mach_o_fat_archentry), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      goto error;
+    }
+  adata->archentries = bfd_alloc (abfd, amt);
   if (adata->archentries == NULL)
     goto error;
 
@@ -5403,7 +5553,7 @@ bfd_mach_o_fat_archive_p (bfd *abfd)
 
   abfd->tdata.mach_o_fat_data = adata;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  error:
   if (adata != NULL)
@@ -5425,26 +5575,23 @@ bfd_mach_o_fat_member_init (bfd *abfd,
   struct areltdata *areltdata;
   /* Create the member filename. Use ARCH_NAME.  */
   const bfd_arch_info_type *ap = bfd_lookup_arch (arch_type, arch_subtype);
-  char *filename;
+  const char *filename;
 
   if (ap)
     {
       /* Use the architecture name if known.  */
-      filename = bfd_strdup (ap->printable_name);
-      if (filename == NULL)
-	return FALSE;
+      filename = bfd_set_filename (abfd, ap->printable_name);
     }
   else
     {
       /* Forge a uniq id.  */
-      const size_t namelen = 2 + 8 + 1 + 2 + 8 + 1;
-      filename = bfd_malloc (namelen);
-      if (filename == NULL)
-	return FALSE;
-      snprintf (filename, namelen, "0x%lx-0x%lx",
+      char buf[2 + 8 + 1 + 2 + 8 + 1];
+      snprintf (buf, sizeof (buf), "0x%lx-0x%lx",
 		entry->cputype, entry->cpusubtype);
+      filename = bfd_set_filename (abfd, buf);
     }
-  bfd_set_filename (abfd, filename);
+  if (!filename)
+    return FALSE;
 
   areltdata = bfd_zmalloc (sizeof (struct areltdata));
   if (areltdata == NULL)
@@ -5752,6 +5899,8 @@ bfd_mach_o_core_fetch_environment (bfd *
 	  unsigned char *buf = bfd_malloc (1024);
 	  unsigned long size = 1024;
 
+	  if (buf == NULL)
+	    return -1;
 	  for (;;)
 	    {
 	      bfd_size_type nread = 0;
@@ -5797,6 +5946,8 @@ bfd_mach_o_core_fetch_environment (bfd *
 		      bottom = seg->fileoff + seg->filesize - offset;
 		      top = seg->fileoff + seg->filesize - 4;
 		      *rbuf = bfd_malloc (top - bottom);
+		      if (*rbuf == NULL)
+			return -1;
 		      *rlen = top - bottom;
 
 		      memcpy (*rbuf, buf + size - *rlen, *rlen);
@@ -5923,12 +6074,12 @@ bfd_mach_o_follow_dsym (bfd *abfd)
   if (abfd->my_archive && !bfd_is_thin_archive (abfd->my_archive))
     base_bfd = abfd->my_archive;
   /* BFD may have been opened from a stream. */
-  if (base_bfd->filename == NULL)
+  if (bfd_get_filename (base_bfd) == NULL)
     {
       bfd_set_error (bfd_error_invalid_operation);
       return NULL;
     }
-  base_basename = lbasename (base_bfd->filename);
+  base_basename = lbasename (bfd_get_filename (base_bfd));
 
   uuid_cmd = bfd_mach_o_lookup_uuid_command (abfd);
   if (uuid_cmd == NULL)
@@ -5938,11 +6089,14 @@ bfd_mach_o_follow_dsym (bfd *abfd)
      It seems apple's GDB checks all files in the dSYM bundle directory.
      http://opensource.apple.com/source/gdb/gdb-1708/src/gdb/macosx/macosx-tdep.c
   */
-  dsym_filename = (char *)bfd_malloc (strlen (base_bfd->filename)
+  dsym_filename = (char *)bfd_malloc (strlen (bfd_get_filename (base_bfd))
 				       + strlen (dsym_subdir) + 1
 				       + strlen (base_basename) + 1);
+  if (dsym_filename == NULL)
+    return NULL;
+
   sprintf (dsym_filename, "%s%s/%s",
-	   base_bfd->filename, dsym_subdir, base_basename);
+	   bfd_get_filename (base_bfd), dsym_subdir, base_basename);
 
   dsym_bfd = bfd_mach_o_find_dsym (dsym_filename, uuid_cmd,
 				   bfd_get_arch_info (abfd));
@@ -6020,8 +6174,8 @@ bfd_mach_o_close_and_cleanup (bfd *abfd)
 	     but it is small, and happens when we are closing down, so it
 	     should not matter too much.  */
 	  char *dsym_filename = (char *)(fat_bfd
-					 ? fat_bfd->filename
-					 : mdata->dsym_bfd->filename);
+					 ? bfd_get_filename (fat_bfd)
+					 : bfd_get_filename (mdata->dsym_bfd));
 #endif
 	  bfd_close (mdata->dsym_bfd);
 	  mdata->dsym_bfd = NULL;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o.h ./bfd/mach-o.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/mach-o.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Mach-O support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -679,9 +679,9 @@ bfd_mach_o_xlat_name;
 
 bfd_boolean bfd_mach_o_valid (bfd *);
 bfd_boolean bfd_mach_o_mkobject_init (bfd *);
-const bfd_target *bfd_mach_o_object_p (bfd *);
-const bfd_target *bfd_mach_o_core_p (bfd *);
-const bfd_target *bfd_mach_o_fat_archive_p (bfd *);
+bfd_cleanup bfd_mach_o_object_p (bfd *);
+bfd_cleanup bfd_mach_o_core_p (bfd *);
+bfd_cleanup bfd_mach_o_fat_archive_p (bfd *);
 bfd *bfd_mach_o_fat_openr_next_archived_file (bfd *, bfd *);
 bfd_boolean bfd_mach_o_set_arch_mach (bfd *, enum bfd_architecture,
 				      unsigned long);
@@ -713,8 +713,8 @@ char *bfd_mach_o_core_file_failing_comma
 int bfd_mach_o_core_file_failing_signal (bfd *);
 bfd_boolean bfd_mach_o_core_file_matches_executable_p (bfd *, bfd *);
 bfd *bfd_mach_o_fat_extract (bfd *, bfd_format , const bfd_arch_info_type *);
-const bfd_target *bfd_mach_o_header_p (bfd *, file_ptr, bfd_mach_o_filetype,
-				       bfd_mach_o_cpu_type);
+bfd_cleanup bfd_mach_o_header_p (bfd *, file_ptr, bfd_mach_o_filetype,
+				 bfd_mach_o_cpu_type);
 bfd_boolean bfd_mach_o_build_commands (bfd *);
 bfd_boolean bfd_mach_o_set_section_contents (bfd *, asection *, const void *,
 					     file_ptr, bfd_size_type);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o-i386.c ./bfd/mach-o-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o-i386.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/mach-o-i386.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Intel i386 Mach-O support for BFD.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,13 +29,13 @@
 #define bfd_mach_o_core_p bfd_mach_o_i386_core_p
 #define bfd_mach_o_mkobject bfd_mach_o_i386_mkobject
 
-static const bfd_target *
+static bfd_cleanup
 bfd_mach_o_i386_object_p (bfd *abfd)
 {
   return bfd_mach_o_header_p (abfd, 0, 0, BFD_MACH_O_CPU_TYPE_I386);
 }
 
-static const bfd_target *
+static bfd_cleanup
 bfd_mach_o_i386_core_p (bfd *abfd)
 {
   return bfd_mach_o_header_p (abfd, 0,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o-target.c ./bfd/mach-o-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o-target.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/mach-o-target.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Mach-O support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o-x86-64.c ./bfd/mach-o-x86-64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mach-o-x86-64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/mach-o-x86-64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Intel x86-64 Mach-O support for BFD.
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,13 +29,13 @@
 #define bfd_mach_o_core_p bfd_mach_o_x86_64_core_p
 #define bfd_mach_o_mkobject bfd_mach_o_x86_64_mkobject
 
-static const bfd_target *
+static bfd_cleanup
 bfd_mach_o_x86_64_object_p (bfd *abfd)
 {
   return bfd_mach_o_header_p (abfd, 0, 0, BFD_MACH_O_CPU_TYPE_X86_64);
 }
 
-static const bfd_target *
+static bfd_cleanup
 bfd_mach_o_x86_64_core_p (bfd *abfd)
 {
   return bfd_mach_o_header_p (abfd, 0,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/MAINTAINERS ./bfd/MAINTAINERS
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/MAINTAINERS	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/MAINTAINERS	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 See ../binutils/MAINTAINERS
 
-Copyright (C) 2012-2019 Free Software Foundation, Inc.
+Copyright (C) 2012-2020 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/Makefile.am ./bfd/Makefile.am
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/Makefile.am	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/Makefile.am	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 ## Process this file with automake to generate Makefile.in
 #
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -53,7 +53,7 @@ ZLIBINC = @zlibinc@
 WARN_CFLAGS = @WARN_CFLAGS@
 NO_WERROR = @NO_WERROR@
 AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC)
-AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DLIBDIR='"$(libdir)"'
+AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DLIBDIR='"$(libdir)"' @LARGEFILE_CPPFLAGS@
 if PLUGINS
 bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
 LIBDL = @lt_cv_dlopen_libs@
@@ -144,7 +144,6 @@ ALL_MACHINES = \
 	cpu-or1k.lo \
 	cpu-pdp11.lo \
 	cpu-pj.lo \
-	cpu-plugin.lo \
 	cpu-powerpc.lo \
 	cpu-pru.lo \
 	cpu-rs6000.lo \
@@ -160,7 +159,6 @@ ALL_MACHINES = \
 	cpu-tic4x.lo \
 	cpu-tic54x.lo \
 	cpu-tic6x.lo \
-	cpu-tic80.lo \
 	cpu-tilegx.lo \
 	cpu-tilepro.lo \
 	cpu-v850.lo \
@@ -230,7 +228,6 @@ ALL_MACHINES_CFILES = \
 	cpu-or1k.c \
 	cpu-pdp11.c \
 	cpu-pj.c \
-	cpu-plugin.c \
 	cpu-powerpc.c \
 	cpu-pru.c \
 	cpu-rs6000.c \
@@ -246,7 +243,6 @@ ALL_MACHINES_CFILES = \
 	cpu-tic4x.c \
 	cpu-tic54x.c \
 	cpu-tic6x.c \
-	cpu-tic80.c \
 	cpu-tilegx.c \
 	cpu-tilepro.c \
 	cpu-v850.c \
@@ -266,7 +262,6 @@ ALL_MACHINES_CFILES = \
 BFD32_BACKENDS = \
 	aout-cris.lo \
 	aout-ns32k.lo \
-	aout-tic30.lo \
 	aout32.lo \
 	cf-i386lynx.lo \
 	coff-go32.lo \
@@ -278,7 +273,6 @@ BFD32_BACKENDS = \
 	coff-tic30.lo \
 	coff-tic4x.lo \
 	coff-tic54x.lo \
-	coff-tic80.lo \
 	coff-z80.lo \
 	coff-z8k.lo \
 	coffgen.lo \
@@ -357,6 +351,7 @@ BFD32_BACKENDS = \
 	elf32-xgate.lo \
 	elf32-xstormy16.lo \
 	elf32-xtensa.lo \
+	elf32-z80.lo \
 	elf32.lo \
 	elflink.lo \
 	elfxx-sparc.lo \
@@ -375,14 +370,12 @@ BFD32_BACKENDS = \
 	pe-arm.lo \
 	pe-i386.lo \
 	pe-mcore.lo \
-	pe-ppc.lo \
 	pe-sh.lo \
 	pef.lo \
 	pei-arm-wince.lo \
 	pei-arm.lo \
 	pei-i386.lo \
 	pei-mcore.lo \
-	pei-ppc.lo \
 	pei-sh.lo \
 	peigen.lo \
 	plugin.lo \
@@ -402,7 +395,6 @@ BFD32_BACKENDS = \
 BFD32_BACKENDS_CFILES = \
 	aout-cris.c \
 	aout-ns32k.c \
-	aout-tic30.c \
 	aout32.c \
 	cf-i386lynx.c \
 	coff-go32.c \
@@ -414,7 +406,6 @@ BFD32_BACKENDS_CFILES = \
 	coff-tic30.c \
 	coff-tic4x.c \
 	coff-tic54x.c \
-	coff-tic80.c \
 	coff-z80.c \
 	coff-z8k.c \
 	coffgen.c \
@@ -493,6 +484,7 @@ BFD32_BACKENDS_CFILES = \
 	elf32-xgate.c \
 	elf32-xstormy16.c \
 	elf32-xtensa.c \
+	elf32-z80.c \
 	elf32.c \
 	elflink.c \
 	elfxx-sparc.c \
@@ -511,14 +503,12 @@ BFD32_BACKENDS_CFILES = \
 	pe-arm.c \
 	pe-i386.c \
 	pe-mcore.c \
-	pe-ppc.c \
 	pe-sh.c \
 	pef.c \
 	pei-arm-wince.c \
 	pei-arm.c \
 	pei-i386.c \
 	pei-mcore.c \
-	pei-ppc.c \
 	pei-sh.c \
 	plugin.c \
 	ppcboot.c \
@@ -831,63 +821,46 @@ endif
 endif
 
 elf32-target.h : elfxx-target.h
-	rm -f elf32-target.h
-	$(SED) -e s/NN/32/g < $(srcdir)/elfxx-target.h > elf32-target.new
-	mv -f elf32-target.new elf32-target.h
+	$(SED) -e s/NN/32/g < $< > $@
 
 elf64-target.h : elfxx-target.h
-	rm -f elf64-target.h
-	$(SED) -e s/NN/64/g < $(srcdir)/elfxx-target.h > elf64-target.new
-	mv -f elf64-target.new elf64-target.h
+	$(SED) -e s/NN/64/g < $< > $@
 
 elf32-aarch64.c : elfnn-aarch64.c
-	rm -f elf32-aarch64.c
-	echo "#line 1 \"$(srcdir)/elfnn-aarch64.c\"" > elf32-aarch64.new
-	$(SED) -e s/NN/32/g < $(srcdir)/elfnn-aarch64.c >> elf32-aarch64.new
-	mv -f elf32-aarch64.new elf32-aarch64.c
+	echo "#line 1 \"elfnn-aarch64.c\"" > $@
+	$(SED) -e s/NN/32/g < $< >> $@
 
 elf64-aarch64.c : elfnn-aarch64.c
-	rm -f elf64-aarch64.c
-	echo "#line 1 \"$(srcdir)/elfnn-aarch64.c\"" > elf64-aarch64.new
-	$(SED) -e s/NN/64/g < $(srcdir)/elfnn-aarch64.c >> elf64-aarch64.new
-	mv -f elf64-aarch64.new elf64-aarch64.c
+	echo "#line 1 \"elfnn-aarch64.c\"" > $@
+	$(SED) -e s/NN/64/g < $< >> $@
 
 elf32-ia64.c : elfnn-ia64.c
-	rm -f elf32-ia64.c
-	$(SED) -e s/NN/32/g < $(srcdir)/elfnn-ia64.c > elf32-ia64.new
-	mv -f elf32-ia64.new elf32-ia64.c
+	echo "#line 1 \"elfnn-ia64.c\"" > $@
+	$(SED) -e s/NN/32/g < $< >> $@
 
 elf64-ia64.c : elfnn-ia64.c
-	rm -f elf64-ia64.c
-	$(SED) -e s/NN/64/g < $(srcdir)/elfnn-ia64.c > elf64-ia64.new
-	mv -f elf64-ia64.new elf64-ia64.c
+	echo "#line 1 \"elfnn-ia64.c\"" > $@
+	$(SED) -e s/NN/64/g < $< >> $@
 
 elf32-riscv.c : elfnn-riscv.c
-	rm -f elf32-riscv.c
-	echo "#line 1 \"$(srcdir)/elfnn-riscv.c\"" > elf32-riscv.new
-	sed -e s/NN/32/g < $(srcdir)/elfnn-riscv.c >> elf32-riscv.new
-	mv -f elf32-riscv.new elf32-riscv.c
+	echo "#line 1 \"elfnn-riscv.c\"" > $@
+	$(SED) -e s/NN/32/g < $< >> $@
 
 elf64-riscv.c : elfnn-riscv.c
-	rm -f elf64-riscv.c
-	echo "#line 1 \"$(srcdir)/elfnn-riscv.c\"" > elf64-riscv.new
-	sed -e s/NN/64/g < $(srcdir)/elfnn-riscv.c >> elf64-riscv.new
-	mv -f elf64-riscv.new elf64-riscv.c
+	echo "#line 1 \"elfnn-riscv.c\"" > $@
+	$(SED) -e s/NN/64/g < $< >> $@
 
 peigen.c : peXXigen.c
-	rm -f peigen.c
-	$(SED) -e s/XX/pe/g < $(srcdir)/peXXigen.c > peigen.new
-	mv -f peigen.new peigen.c
+	echo "#line 1 \"peXXigen.c\"" > $@
+	$(SED) -e s/XX/pe/g < $< >> $@
 
 pepigen.c : peXXigen.c
-	rm -f pepigen.c
-	$(SED) -e s/XX/pep/g < $(srcdir)/peXXigen.c > pepigen.new
-	mv -f pepigen.new pepigen.c
+	echo "#line 1 \"peXXigen.c\"" > $@
+	$(SED) -e s/XX/pep/g < $< >> $@
 
 pex64igen.c: peXXigen.c
-	rm -f pex64igen.c
-	$(SED) -e s/XX/pex64/g < $(srcdir)/peXXigen.c > pex64igen.new
-	mv -f pex64igen.new pex64igen.c
+	echo "#line 1 \"peXXigen.c\"" > $@
+	$(SED) -e s/XX/pex64/g < $< >> $@
 
 BFD_H_DEPS= $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h
 LOCAL_H_DEPS= libbfd.h sysdep.h config.h bfd_stdint.h
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/Makefile.in ./bfd/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/Makefile.in	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/Makefile.in	2021-05-21 01:57:23.000000000 +0000
@@ -15,7 +15,7 @@
 @SET_MAKE@
 
 #
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -330,6 +330,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INSTOBJEXT = @INSTOBJEXT@
+LARGEFILE_CPPFLAGS = @LARGEFILE_CPPFLAGS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBINTL = @LIBINTL@
@@ -479,9 +480,9 @@ libbfd_la_LDFLAGS = $(am__append_1) -rel
 ZLIB = @zlibdir@ -lz
 ZLIBINC = @zlibinc@
 AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC)
-AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DLIBDIR='"$(libdir)"' @HDEFINES@ \
-	@COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) $(HAVEVECS) \
-	@INCINTL@ $(am__empty)
+AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DLIBDIR='"$(libdir)"' \
+	@LARGEFILE_CPPFLAGS@ @HDEFINES@ @COREFLAG@ @TDEFINES@ \
+	$(CSEARCH) $(CSWITCHES) $(HAVEVECS) @INCINTL@
 @PLUGINS_TRUE@LIBDL = @lt_cv_dlopen_libs@
 
 # bfd.h goes here, for now
@@ -568,7 +569,6 @@ ALL_MACHINES = \
 	cpu-or1k.lo \
 	cpu-pdp11.lo \
 	cpu-pj.lo \
-	cpu-plugin.lo \
 	cpu-powerpc.lo \
 	cpu-pru.lo \
 	cpu-rs6000.lo \
@@ -584,7 +584,6 @@ ALL_MACHINES = \
 	cpu-tic4x.lo \
 	cpu-tic54x.lo \
 	cpu-tic6x.lo \
-	cpu-tic80.lo \
 	cpu-tilegx.lo \
 	cpu-tilepro.lo \
 	cpu-v850.lo \
@@ -654,7 +653,6 @@ ALL_MACHINES_CFILES = \
 	cpu-or1k.c \
 	cpu-pdp11.c \
 	cpu-pj.c \
-	cpu-plugin.c \
 	cpu-powerpc.c \
 	cpu-pru.c \
 	cpu-rs6000.c \
@@ -670,7 +668,6 @@ ALL_MACHINES_CFILES = \
 	cpu-tic4x.c \
 	cpu-tic54x.c \
 	cpu-tic6x.c \
-	cpu-tic80.c \
 	cpu-tilegx.c \
 	cpu-tilepro.c \
 	cpu-v850.c \
@@ -691,7 +688,6 @@ ALL_MACHINES_CFILES = \
 BFD32_BACKENDS = \
 	aout-cris.lo \
 	aout-ns32k.lo \
-	aout-tic30.lo \
 	aout32.lo \
 	cf-i386lynx.lo \
 	coff-go32.lo \
@@ -703,7 +699,6 @@ BFD32_BACKENDS = \
 	coff-tic30.lo \
 	coff-tic4x.lo \
 	coff-tic54x.lo \
-	coff-tic80.lo \
 	coff-z80.lo \
 	coff-z8k.lo \
 	coffgen.lo \
@@ -782,6 +777,7 @@ BFD32_BACKENDS = \
 	elf32-xgate.lo \
 	elf32-xstormy16.lo \
 	elf32-xtensa.lo \
+	elf32-z80.lo \
 	elf32.lo \
 	elflink.lo \
 	elfxx-sparc.lo \
@@ -800,14 +796,12 @@ BFD32_BACKENDS = \
 	pe-arm.lo \
 	pe-i386.lo \
 	pe-mcore.lo \
-	pe-ppc.lo \
 	pe-sh.lo \
 	pef.lo \
 	pei-arm-wince.lo \
 	pei-arm.lo \
 	pei-i386.lo \
 	pei-mcore.lo \
-	pei-ppc.lo \
 	pei-sh.lo \
 	peigen.lo \
 	plugin.lo \
@@ -827,7 +821,6 @@ BFD32_BACKENDS = \
 BFD32_BACKENDS_CFILES = \
 	aout-cris.c \
 	aout-ns32k.c \
-	aout-tic30.c \
 	aout32.c \
 	cf-i386lynx.c \
 	coff-go32.c \
@@ -839,7 +832,6 @@ BFD32_BACKENDS_CFILES = \
 	coff-tic30.c \
 	coff-tic4x.c \
 	coff-tic54x.c \
-	coff-tic80.c \
 	coff-z80.c \
 	coff-z8k.c \
 	coffgen.c \
@@ -918,6 +910,7 @@ BFD32_BACKENDS_CFILES = \
 	elf32-xgate.c \
 	elf32-xstormy16.c \
 	elf32-xtensa.c \
+	elf32-z80.c \
 	elf32.c \
 	elflink.c \
 	elfxx-sparc.c \
@@ -936,14 +929,12 @@ BFD32_BACKENDS_CFILES = \
 	pe-arm.c \
 	pe-i386.c \
 	pe-mcore.c \
-	pe-ppc.c \
 	pe-sh.c \
 	pef.c \
 	pei-arm-wince.c \
 	pei-arm.c \
 	pei-i386.c \
 	pei-mcore.c \
-	pei-ppc.c \
 	pei-sh.c \
 	plugin.c \
 	ppcboot.c \
@@ -1299,7 +1290,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aix5ppc-core.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-cris.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-ns32k.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-tic30.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout32.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/archive.Plo@am__quote@
@@ -1323,7 +1313,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic30.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic4x.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic54x.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic80.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-x86_64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-z80.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-z8k.Plo@am__quote@
@@ -1385,7 +1374,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-or1k.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-pdp11.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-pj.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-plugin.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-powerpc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-pru.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-riscv.Plo@am__quote@
@@ -1402,7 +1390,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic4x.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic54x.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic6x.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic80.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tilegx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tilepro.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-v850.Plo@am__quote@
@@ -1496,6 +1483,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-xgate.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-xstormy16.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-xtensa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-z80.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-aarch64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-alpha.Plo@am__quote@
@@ -1553,7 +1541,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-arm.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-i386.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-mcore.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-ppc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-sh.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-x86_64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pef.Plo@am__quote@
@@ -1562,7 +1549,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-i386.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-ia64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-mcore.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-ppc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-sh.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-x86_64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peigen.Plo@am__quote@
@@ -1965,63 +1951,46 @@ dwarf2.lo: dwarf2.c Makefile
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ -DDEBUGDIR=\"$(DEBUGDIR)\" $(srcdir)/dwarf2.c
 
 elf32-target.h : elfxx-target.h
-	rm -f elf32-target.h
-	$(SED) -e s/NN/32/g < $(srcdir)/elfxx-target.h > elf32-target.new
-	mv -f elf32-target.new elf32-target.h
+	$(SED) -e s/NN/32/g < $< > $@
 
 elf64-target.h : elfxx-target.h
-	rm -f elf64-target.h
-	$(SED) -e s/NN/64/g < $(srcdir)/elfxx-target.h > elf64-target.new
-	mv -f elf64-target.new elf64-target.h
+	$(SED) -e s/NN/64/g < $< > $@
 
 elf32-aarch64.c : elfnn-aarch64.c
-	rm -f elf32-aarch64.c
-	echo "#line 1 \"$(srcdir)/elfnn-aarch64.c\"" > elf32-aarch64.new
-	$(SED) -e s/NN/32/g < $(srcdir)/elfnn-aarch64.c >> elf32-aarch64.new
-	mv -f elf32-aarch64.new elf32-aarch64.c
+	echo "#line 1 \"elfnn-aarch64.c\"" > $@
+	$(SED) -e s/NN/32/g < $< >> $@
 
 elf64-aarch64.c : elfnn-aarch64.c
-	rm -f elf64-aarch64.c
-	echo "#line 1 \"$(srcdir)/elfnn-aarch64.c\"" > elf64-aarch64.new
-	$(SED) -e s/NN/64/g < $(srcdir)/elfnn-aarch64.c >> elf64-aarch64.new
-	mv -f elf64-aarch64.new elf64-aarch64.c
+	echo "#line 1 \"elfnn-aarch64.c\"" > $@
+	$(SED) -e s/NN/64/g < $< >> $@
 
 elf32-ia64.c : elfnn-ia64.c
-	rm -f elf32-ia64.c
-	$(SED) -e s/NN/32/g < $(srcdir)/elfnn-ia64.c > elf32-ia64.new
-	mv -f elf32-ia64.new elf32-ia64.c
+	echo "#line 1 \"elfnn-ia64.c\"" > $@
+	$(SED) -e s/NN/32/g < $< >> $@
 
 elf64-ia64.c : elfnn-ia64.c
-	rm -f elf64-ia64.c
-	$(SED) -e s/NN/64/g < $(srcdir)/elfnn-ia64.c > elf64-ia64.new
-	mv -f elf64-ia64.new elf64-ia64.c
+	echo "#line 1 \"elfnn-ia64.c\"" > $@
+	$(SED) -e s/NN/64/g < $< >> $@
 
 elf32-riscv.c : elfnn-riscv.c
-	rm -f elf32-riscv.c
-	echo "#line 1 \"$(srcdir)/elfnn-riscv.c\"" > elf32-riscv.new
-	sed -e s/NN/32/g < $(srcdir)/elfnn-riscv.c >> elf32-riscv.new
-	mv -f elf32-riscv.new elf32-riscv.c
+	echo "#line 1 \"elfnn-riscv.c\"" > $@
+	$(SED) -e s/NN/32/g < $< >> $@
 
 elf64-riscv.c : elfnn-riscv.c
-	rm -f elf64-riscv.c
-	echo "#line 1 \"$(srcdir)/elfnn-riscv.c\"" > elf64-riscv.new
-	sed -e s/NN/64/g < $(srcdir)/elfnn-riscv.c >> elf64-riscv.new
-	mv -f elf64-riscv.new elf64-riscv.c
+	echo "#line 1 \"elfnn-riscv.c\"" > $@
+	$(SED) -e s/NN/64/g < $< >> $@
 
 peigen.c : peXXigen.c
-	rm -f peigen.c
-	$(SED) -e s/XX/pe/g < $(srcdir)/peXXigen.c > peigen.new
-	mv -f peigen.new peigen.c
+	echo "#line 1 \"peXXigen.c\"" > $@
+	$(SED) -e s/XX/pe/g < $< >> $@
 
 pepigen.c : peXXigen.c
-	rm -f pepigen.c
-	$(SED) -e s/XX/pep/g < $(srcdir)/peXXigen.c > pepigen.new
-	mv -f pepigen.new pepigen.c
+	echo "#line 1 \"peXXigen.c\"" > $@
+	$(SED) -e s/XX/pep/g < $< >> $@
 
 pex64igen.c: peXXigen.c
-	rm -f pex64igen.c
-	$(SED) -e s/XX/pex64/g < $(srcdir)/peXXigen.c > pex64igen.new
-	mv -f pex64igen.new pex64igen.c
+	echo "#line 1 \"peXXigen.c\"" > $@
+	$(SED) -e s/XX/pex64/g < $< >> $@
 $(BFD32_LIBS) \
  $(BFD64_LIBS) \
  $(ALL_MACHINES) \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/makefile.vms ./bfd/makefile.vms
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/makefile.vms	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/makefile.vms	2021-05-21 01:57:23.000000000 +0000
@@ -5,7 +5,7 @@
 #
 # Created by Klaus K"ampf, kkaempf@rmi.de
 #
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mep-relocs.pl ./bfd/mep-relocs.pl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mep-relocs.pl	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/mep-relocs.pl	2021-05-21 01:57:23.000000000 +0000
@@ -2,7 +2,7 @@
 # -*- perl -*-
 #
 # Toshiba MeP Media Engine Relocation Generator
-# Copyright (C) 2001-2019 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 # This file is part of BFD.
 # Originally written by DJ Delorie <dj@redhat.com>
 #
@@ -156,20 +156,23 @@ sub emit_apply {
 	    $e = '^e4' # endian swap for data
 	}
 	print NEW "    case R_MEP_$relocs[$i]: /* $pattern[$i] */\n";
+	if ($relocs[$i] =~ /HI16S/) {
+	    print NEW "      u += 0x8000;\n"
+	}
 	if ($attrs[$i] =~ /tp-rel/i) {
-	    print NEW "      $v -= mep_tpoff_base(rel->r_offset);\n";
+	    print NEW "      u -= mep_tpoff_base(rel->r_offset);\n";
 	}
 	if ($attrs[$i] =~ /gp-rel/i) {
-	    print NEW "      $v -= mep_sdaoff_base(rel->r_offset);\n";
+	    print NEW "      u -= mep_sdaoff_base(rel->r_offset);\n";
 	}
 	if ($attrs[$i] !~ /no-overflow/ && $bits[$i] < 32) {
 	    if ($v eq "u") {
 		$max = (1 << $bits[$i]) - 1;
 		print NEW "      if (u > $max) r = bfd_reloc_overflow;\n";
 	    } else {
-		$min = -(1 << ($bits[$i]-1));
-		$max = (1 << ($bits[$i]-1)) - 1;
-		print NEW "      if ($min > s || s > $max) r = bfd_reloc_overflow;\n";
+		$min = (1 << ($bits[$i]-1));
+		$max = (1 << ($bits[$i])) - 1;
+		print NEW "      if (u + $min > $max) r = bfd_reloc_overflow;\n";
 	    }
 	}
 	for ($b=0; $b<length($pattern[$i]); $b += 8) {
@@ -183,11 +186,11 @@ sub emit_apply {
 		print NEW "      byte[$bb$e] = ";
 		print NEW "(byte[$bb$e] & 0x$rmask) | " if $rmask ne "00";
 		if ($left) {
-		    print NEW "(($v << $left) & 0x$mask)";
+		    print NEW "((u << $left) & 0x$mask)";
 		} elsif ($right) {
-		    print NEW "(($v >> $right) & 0x$mask)";
+		    print NEW "((u >> $right) & 0x$mask)";
 		} else {
-		    print NEW "($v & 0x$mask)";
+		    print NEW "(u & 0x$mask)";
 		}
 		print NEW ";\n";
 	    }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/merge.c ./bfd/merge.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/merge.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/merge.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* SEC_MERGE support.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
    Written by Jakub Jelinek <jakub@redhat.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -292,8 +292,9 @@ sec_merge_emit (bfd *abfd, struct sec_me
   asection *sec = secinfo->sec;
   char *pad = NULL;
   bfd_size_type off = 0;
-  int alignment_power = sec->output_section->alignment_power;
-  bfd_size_type pad_len;
+  unsigned int opb = bfd_octets_per_byte (abfd, sec);
+  int alignment_power = sec->output_section->alignment_power * opb;
+  bfd_size_type pad_len;  /* Octets.  */
 
   /* FIXME: If alignment_power is 0 then really we should scan the
      entry list for the largest required alignment and use that.  */
@@ -364,9 +365,11 @@ _bfd_add_merge_section (bfd *abfd, void
 {
   struct sec_merge_info *sinfo;
   struct sec_merge_sec_info *secinfo;
-  unsigned int align;
+  unsigned int alignment_power;  /* Octets.  */
+  unsigned int align;            /* Octets.  */
   bfd_size_type amt;
   bfd_byte *contents;
+  unsigned int opb = bfd_octets_per_byte (abfd, sec);
 
   if ((abfd->flags & DYNAMIC) != 0
       || (sec->flags & SEC_MERGE) == 0)
@@ -389,10 +392,11 @@ _bfd_add_merge_section (bfd *abfd, void
 #ifndef CHAR_BIT
 #define CHAR_BIT 8
 #endif
-  if (sec->alignment_power >= sizeof (align) * CHAR_BIT)
+  alignment_power = sec->alignment_power * opb;
+  if (alignment_power >= sizeof (align) * CHAR_BIT)
     return TRUE;
 
-  align = 1u << sec->alignment_power;
+  align = 1u << alignment_power;
   if ((sec->entsize < align
        && ((sec->entsize & (sec->entsize - 1))
 	   || !(sec->flags & SEC_STRINGS)))
@@ -549,7 +553,7 @@ record_section (struct sec_merge_info *s
 
   return TRUE;
 
-error_return:
+ error_return:
   for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
     *secinfo->psecinfo = NULL;
   return FALSE;
@@ -739,7 +743,7 @@ _bfd_merge_sections (bfd *abfd,
   for (sinfo = (struct sec_merge_info *) xsinfo; sinfo; sinfo = sinfo->next)
     {
       struct sec_merge_sec_info *secinfo;
-      bfd_size_type align;
+      bfd_size_type align;  /* Bytes.  */
 
       if (! sinfo->chain)
 	continue;
@@ -764,8 +768,10 @@ _bfd_merge_sections (bfd *abfd,
 	      return FALSE;
 	    if (align)
 	      {
+		unsigned int opb = bfd_octets_per_byte (abfd, secinfo->sec);
+
 		align = (bfd_size_type) 1 << secinfo->sec->alignment_power;
-		if ((secinfo->sec->size & (align - 1)) != 0)
+		if (((secinfo->sec->size / opb) & (align - 1)) != 0)
 		  align = 0;
 	      }
 	  }
@@ -782,7 +788,7 @@ _bfd_merge_sections (bfd *abfd,
       else
 	{
 	  struct sec_merge_hash_entry *e;
-	  bfd_size_type size = 0;
+	  bfd_size_type size = 0;  /* Octets.  */
 
 	  /* Things are much simpler for non-strings.
 	     Just assign them slots in the section.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mmo.c ./bfd/mmo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/mmo.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/mmo.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for mmo objects (MMIX-specific object-format).
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
    Written by Hans-Peter Nilsson (hp@bitrange.com).
    Infrastructure and other bits originally copied from srec.c and
    binary.c.
@@ -386,7 +386,7 @@ static INLINE bfd_byte *mmo_get_loc (ase
 static void mmo_xore_64 (asection *, bfd_vma vma, bfd_vma value);
 static void mmo_xore_32 (asection *, bfd_vma vma, unsigned int);
 static void mmo_xore_16 (asection *, bfd_vma vma, unsigned int);
-static const bfd_target *mmo_object_p (bfd *);
+static bfd_cleanup mmo_object_p (bfd *);
 static void mmo_map_set_sizes (bfd *, asection *, void *);
 static bfd_boolean mmo_get_symbols (bfd *);
 static bfd_boolean mmo_create_symbol (bfd *, const char *, bfd_vma,
@@ -500,7 +500,7 @@ mmo_init (void)
 
 /* Check whether an existing file is an mmo file.  */
 
-static const bfd_target *
+static bfd_cleanup
 mmo_object_p (bfd *abfd)
 {
   struct stat statbuf;
@@ -556,7 +556,7 @@ mmo_object_p (bfd *abfd)
   if (! bfd_default_set_arch_mach (abfd, bfd_arch_mmix, 0))
     goto bad_format_free;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  bad_format_free:
   free (abfd->tdata.mmo_data->lop_stab_symbol);
@@ -579,7 +579,7 @@ mmo_mkobject (bfd *abfd)
 
       /* All fields are zero-initialized, so we don't have to explicitly
 	 initialize most.  */
-      tdata_type *tdata = (tdata_type *) bfd_zmalloc (sizeof (tdata_type));
+      tdata_type *tdata = (tdata_type *) bfd_zalloc (abfd, sizeof (tdata_type));
       if (tdata == NULL)
 	return FALSE;
 
@@ -1588,7 +1588,7 @@ mmo_scan (bfd *abfd)
   unsigned int lineno = 1;
   bfd_boolean error = FALSE;
   bfd_vma vma = 0;
-  asection *sec = bfd_make_section_old_way (abfd, MMO_TEXT_SECTION_NAME);
+  asection *sec = NULL;
   asection *non_spec_sec = NULL;
   bfd_vma non_spec_vma = 0;
   bfd_size_type nbytes_read = 0;
@@ -1646,6 +1646,8 @@ mmo_scan (bfd *abfd)
 		goto error_return;
 
 	      vma &= ~3;
+	      if (sec == NULL)
+		sec = bfd_make_section_old_way (abfd, MMO_TEXT_SECTION_NAME);
 	      mmo_xore_32 (sec, vma, bfd_get_32 (abfd, buf));
 	      vma += 4;
 	      lineno++;
@@ -2038,6 +2040,8 @@ mmo_scan (bfd *abfd)
       else
 	{
 	  /* This wasn't a lopcode, so store it in the current section.  */
+	  if (sec == NULL)
+	    sec = bfd_make_section_old_way (abfd, MMO_TEXT_SECTION_NAME);
 	  mmo_xore_32 (sec, vma & ~3, bfd_get_32 (abfd, buf));
 	  vma += 4;
 	  vma &= ~3;
@@ -2074,13 +2078,12 @@ mmo_scan (bfd *abfd)
   if (sec != NULL
       && (bfd_section_flags (sec) & SEC_HAS_CONTENTS)
       && !bfd_set_section_flags (sec, (bfd_section_flags (sec)
-				       | SEC_ALLOC | SEC_LOAD)))
+				       | SEC_ALLOC | SEC_LOAD | SEC_DATA)))
     error = TRUE;
 
   /* Free whatever resources we took.  */
   for (i = 0; i < sizeof (file_names) / sizeof (file_names[0]); i++)
-    if (file_names[i])
-      free (file_names[i]);
+    free (file_names[i]);
   return ! error;
 }
 
@@ -2935,7 +2938,8 @@ mmo_write_symbols_and_terminator (bfd *a
   if (table == NULL)
     return FALSE;
 
-  memcpy (table, orig_table, count * sizeof (asymbol *));
+  if (count != 0)
+    memcpy (table, orig_table, count * sizeof (asymbol *));
 
   /* Move :Main (if there is one) to the first position.  This is
      necessary to get the same layout of the trie-tree when linking as
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/netbsd-core.c ./bfd/netbsd-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/netbsd-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/netbsd-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back end for NetBSD style core files
-   Copyright (C) 1988-2019 Free Software Foundation, Inc.
+   Copyright (C) 1988-2020 Free Software Foundation, Inc.
    Written by Paul Kranenburg, EUR
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -51,7 +51,7 @@ struct netbsd_core_struct
 
 /* Handle NetBSD-style core dump file.  */
 
-static const bfd_target *
+static bfd_cleanup
 netbsd_core_file_p (bfd *abfd)
 {
   int val;
@@ -60,7 +60,7 @@ netbsd_core_file_p (bfd *abfd)
   asection *asect;
   struct core core;
   struct coreseg coreseg;
-  bfd_size_type amt = sizeof core;
+  size_t amt = sizeof core;
 
   val = bfd_bread (&core, amt, abfd);
   if (val != sizeof core)
@@ -222,7 +222,7 @@ netbsd_core_file_p (bfd *abfd)
     }
 
   /* OK, we believe you.  You're a core file (sure, sure).  */
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  punt:
   bfd_release (abfd, abfd->tdata.any);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/netbsd.h ./bfd/netbsd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/netbsd.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/netbsd.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end definitions used by all NetBSD targets.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -48,7 +48,7 @@
 	 ((execp)->a_info & 0xfb00ffff) | ((((int) (machtype)) & 0x3ff) << 16))
 #define N_SET_FLAGS(execp, flags) \
 	((execp)->a_info = \
-	 ((execp)->a_info & 0x03ffffff) | ((flags & 0x03f) << 26))
+	 ((execp)->a_info & 0x03ffffff) | ((flags & 0x3fu) << 26))
 
 #include "sysdep.h"
 #include "bfd.h"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ns32k.h ./bfd/ns32k.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ns32k.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/ns32k.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header file for ns32k routines.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ns32knetbsd.c ./bfd/ns32knetbsd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ns32knetbsd.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/ns32knetbsd.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for NetBSD/ns32k a.out-ish binaries.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/opncls.c ./bfd/opncls.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/opncls.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/opncls.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* opncls.c -- open and close a BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Written by Cygnus Support.
 
@@ -84,6 +84,7 @@ _bfd_new_bfd (void)
   if (!bfd_hash_table_init_n (& nbfd->section_htab, bfd_section_hash_newfunc,
 			      sizeof (struct section_hash_entry), 13))
     {
+      objalloc_free ((struct objalloc *) nbfd->memory);
       free (nbfd);
       return NULL;
     }
@@ -125,9 +126,9 @@ _bfd_delete_bfd (bfd *abfd)
       bfd_hash_table_free (&abfd->section_htab);
       objalloc_free ((struct objalloc *) abfd->memory);
     }
+  else
+    free ((char *) bfd_get_filename (abfd));
 
-  if (abfd->filename)
-    free ((char *) abfd->filename);
   free (abfd->arelt_data);
   free (abfd);
 }
@@ -139,6 +140,29 @@ _bfd_free_cached_info (bfd *abfd)
 {
   if (abfd->memory)
     {
+      const char *filename = bfd_get_filename (abfd);
+      if (filename)
+	{
+	  /* We can't afford to lose the bfd filename when freeing
+	     abfd->memory, because that would kill the cache.c scheme
+	     of closing and reopening files in order to limit the
+	     number of open files.  To reopen, you need the filename.
+	     And indeed _bfd_compute_and_write_armap calls
+	     _bfd_free_cached_info to free up space used by symbols
+	     and by check_format_matches.  Which we want to continue
+	     doing to handle very large archives.  Later the archive
+	     elements are copied, which might require reopening files.
+	     We also want to keep using objalloc memory for the
+	     filename since that allows the name to be updated
+	     without either leaking memory or implementing some sort
+	     of reference counted string for copies of the filename.  */
+	  size_t len = strlen (filename) + 1;
+	  char *copy = bfd_malloc (len);
+	  if (copy == NULL)
+	    return FALSE;
+	  memcpy (copy, filename, len);
+	  abfd->filename = copy;
+	}
       bfd_hash_table_free (&abfd->section_htab);
       objalloc_free ((struct objalloc *) abfd->memory);
 
@@ -233,8 +257,7 @@ bfd_fopen (const char *filename, const c
 
   /* PR 11983: Do not cache the original filename, but
      rather make a copy - the original might go away.  */
-  nbfd->filename = bfd_strdup (filename);
-  if (nbfd->filename == NULL)
+  if (!bfd_set_filename (nbfd, filename))
     {
       fclose (nbfd->iostream);
       _bfd_delete_bfd (nbfd);
@@ -407,8 +430,7 @@ bfd_openstreamr (const char *filename, c
   nbfd->iostream = stream;
   /* PR 11983: Do not cache the original filename, but
      rather make a copy - the original might go away.  */
-  nbfd->filename = bfd_strdup (filename);
-  if (nbfd->filename == NULL)
+  if (!bfd_set_filename (nbfd, filename))
     {
       _bfd_delete_bfd (nbfd);
       return NULL;
@@ -608,8 +630,7 @@ bfd_openr_iovec (const char *filename, c
 
   /* PR 11983: Do not cache the original filename, but
      rather make a copy - the original might go away.  */
-  nbfd->filename = bfd_strdup (filename);
-  if (nbfd->filename == NULL)
+  if (!bfd_set_filename (nbfd, filename))
     {
       _bfd_delete_bfd (nbfd);
       return NULL;
@@ -680,8 +701,7 @@ bfd_openw (const char *filename, const c
 
   /* PR 11983: Do not cache the original filename, but
      rather make a copy - the original might go away.  */
-  nbfd->filename = bfd_strdup (filename);
-  if (nbfd->filename == NULL)
+  if (!bfd_set_filename (nbfd, filename))
     {
       _bfd_delete_bfd (nbfd);
       return NULL;
@@ -709,7 +729,7 @@ _maybe_make_executable (bfd * abfd)
     {
       struct stat buf;
 
-      if (stat (abfd->filename, &buf) == 0
+      if (stat (bfd_get_filename (abfd), &buf) == 0
 	  /* Do not attempt to change non-regular files.  This is
 	     here especially for configure scripts and kernel builds
 	     which run tests with "ld [...] -o /dev/null".  */
@@ -718,7 +738,7 @@ _maybe_make_executable (bfd * abfd)
 	  unsigned int mask = umask (0);
 
 	  umask (mask);
-	  chmod (abfd->filename,
+	  chmod (bfd_get_filename (abfd),
 		 (0777
 		  & (buf.st_mode | ((S_IXUSR | S_IXGRP | S_IXOTH) &~ mask))));
 	}
@@ -825,8 +845,7 @@ bfd_create (const char *filename, bfd *t
     return NULL;
   /* PR 11983: Do not cache the original filename, but
      rather make a copy - the original might go away.  */
-  nbfd->filename = bfd_strdup (filename);
-  if (nbfd->filename == NULL)
+  if (!bfd_set_filename (nbfd, filename))
     {
       _bfd_delete_bfd (nbfd);
       return NULL;
@@ -982,32 +1001,6 @@ bfd_alloc (bfd *abfd, bfd_size_type size
 }
 
 /*
-INTERNAL_FUNCTION
-	bfd_alloc2
-
-SYNOPSIS
-	void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
-
-DESCRIPTION
-	Allocate a block of @var{nmemb} elements of @var{size} bytes each
-	of memory attached to <<abfd>> and return a pointer to it.
-*/
-
-void *
-bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size)
-{
-  if ((nmemb | size) >= HALF_BFD_SIZE_TYPE
-      && size != 0
-      && nmemb > ~(bfd_size_type) 0 / size)
-    {
-      bfd_set_error (bfd_error_no_memory);
-      return NULL;
-    }
-
-  return bfd_alloc (abfd, size * nmemb);
-}
-
-/*
 FUNCTION
 	bfd_zalloc
 
@@ -1030,39 +1023,6 @@ bfd_zalloc (bfd *abfd, bfd_size_type siz
   return res;
 }
 
-/*
-INTERNAL_FUNCTION
-	bfd_zalloc2
-
-SYNOPSIS
-	void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
-
-DESCRIPTION
-	Allocate a block of @var{nmemb} elements of @var{size} bytes each
-	of zeroed memory attached to <<abfd>> and return a pointer to it.
-*/
-
-void *
-bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size)
-{
-  void *res;
-
-  if ((nmemb | size) >= HALF_BFD_SIZE_TYPE
-      && size != 0
-      && nmemb > ~(bfd_size_type) 0 / size)
-    {
-      bfd_set_error (bfd_error_no_memory);
-      return NULL;
-    }
-
-  size *= nmemb;
-
-  res = bfd_alloc (abfd, size);
-  if (res)
-    memset (res, 0, (size_t) size);
-  return res;
-}
-
 /* Free a block allocated for a BFD.
    Note:  Also frees all more recently allocated blocks!  */
 
@@ -1209,6 +1169,7 @@ bfd_get_debug_link_info_1 (bfd *abfd, vo
   unsigned int crc_offset;
   char *name;
   bfd_size_type size;
+  ufile_ptr file_size;
 
   BFD_ASSERT (abfd);
   BFD_ASSERT (crc32_out);
@@ -1219,15 +1180,15 @@ bfd_get_debug_link_info_1 (bfd *abfd, vo
     return NULL;
 
   size = bfd_section_size (sect);
+  file_size = bfd_get_size (abfd);
 
   /* PR 22794: Make sure that the section has a reasonable size.  */
-  if (size < 8 || size >= bfd_get_size (abfd))
+  if (size < 8 || (file_size != 0 && size >= file_size))
     return NULL;
 
   if (!bfd_malloc_and_get_section (abfd, sect, &contents))
     {
-      if (contents != NULL)
-	free (contents);
+      free (contents);
       return NULL;
     }
 
@@ -1298,6 +1259,7 @@ bfd_get_alt_debug_link_info (bfd * abfd,
   unsigned int buildid_offset;
   char *name;
   bfd_size_type size;
+  ufile_ptr file_size;
 
   BFD_ASSERT (abfd);
   BFD_ASSERT (buildid_len);
@@ -1309,13 +1271,13 @@ bfd_get_alt_debug_link_info (bfd * abfd,
     return NULL;
 
   size = bfd_section_size (sect);
-  if (size < 8 || size >= bfd_get_size (abfd))
+  file_size = bfd_get_size (abfd);
+  if (size < 8 || (file_size != 0 && size >= file_size))
     return NULL;
 
   if (!bfd_malloc_and_get_section (abfd, sect, & contents))
     {
-      if (contents != NULL)
-	free (contents);
+      free (contents);
       return NULL;
     }
 
@@ -1455,7 +1417,7 @@ find_separate_debug_file (bfd *		  abfd,
     debug_file_directory = ".";
 
   /* BFD may have been opened from a stream.  */
-  if (abfd->filename == NULL)
+  if (bfd_get_filename (abfd) == NULL)
     {
       bfd_set_error (bfd_error_invalid_operation);
       return NULL;
@@ -1475,8 +1437,9 @@ find_separate_debug_file (bfd *		  abfd,
 
   if (include_dirs)
     {
-      for (dirlen = strlen (abfd->filename); dirlen > 0; dirlen--)
-	if (IS_DIR_SEPARATOR (abfd->filename[dirlen - 1]))
+      const char *fname = bfd_get_filename (abfd);
+      for (dirlen = strlen (fname); dirlen > 0; dirlen--)
+	if (IS_DIR_SEPARATOR (fname[dirlen - 1]))
 	  break;
 
       dir = (char *) bfd_malloc (dirlen + 1);
@@ -1485,7 +1448,7 @@ find_separate_debug_file (bfd *		  abfd,
 	  free (base);
 	  return NULL;
 	}
-      memcpy (dir, abfd->filename, dirlen);
+      memcpy (dir, fname, dirlen);
       dir[dirlen] = '\0';
     }
   else
@@ -1497,7 +1460,7 @@ find_separate_debug_file (bfd *		  abfd,
 
   /* Compute the canonical name of the bfd object with all symbolic links
      resolved, for use in the global debugfile directory.  */
-  canon_dir = lrealpath (abfd->filename);
+  canon_dir = lrealpath (bfd_get_filename (abfd));
   for (canon_dirlen = strlen (canon_dir); canon_dirlen > 0; canon_dirlen--)
     if (IS_DIR_SEPARATOR (canon_dir[canon_dirlen - 1]))
       break;
@@ -1882,8 +1845,7 @@ get_build_id (bfd *abfd)
 
   if (!bfd_malloc_and_get_section (abfd, sect, & contents))
     {
-      if (contents != NULL)
-	free (contents);
+      free (contents);
       return NULL;
     }
 
@@ -1964,7 +1926,7 @@ get_build_id_name (bfd *abfd, void *buil
   bfd_size_type s;
   bfd_byte *d;
 
-  if (abfd == NULL || abfd->filename == NULL || build_id_out == NULL)
+  if (abfd == NULL || bfd_get_filename (abfd) == NULL || build_id_out == NULL)
     {
       bfd_set_error (bfd_error_invalid_operation);
       return NULL;
@@ -2095,17 +2057,23 @@ FUNCTION
 	bfd_set_filename
 
 SYNOPSIS
-	void bfd_set_filename (bfd *abfd, char *filename);
+	const char *bfd_set_filename (bfd *abfd, const char *filename);
 
 DESCRIPTION
-	Set the filename of @var{abfd}.  The old filename, if any, is freed.
-	@var{filename} must be allocated using @code{xmalloc}.  After
-	this call, it is owned @var{abfd}.
+	Set the filename of @var{abfd}, copying the FILENAME parameter to
+	bfd_alloc'd memory owned by @var{abfd}.  Returns a pointer the
+	newly allocated name, or NULL if the allocation failed.
 */
 
-void
-bfd_set_filename (bfd *abfd, char *filename)
+const char *
+bfd_set_filename (bfd *abfd, const char *filename)
 {
-  free ((char *) abfd->filename);
-  abfd->filename = filename;
+  size_t len = strlen (filename) + 1;
+  char *n = bfd_alloc (abfd, len);
+  if (n)
+    {
+      memcpy (n, filename, len);
+      abfd->filename = n;
+    }
+  return n;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/osf-core.c ./bfd/osf-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/osf-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/osf-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for OSF/1 core files.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -70,14 +70,14 @@ make_bfd_asection (bfd *abfd,
   return asect;
 }
 
-static const bfd_target *
+static bfd_cleanup
 osf_core_core_file_p (bfd *abfd)
 {
   int val;
   int i;
   char *secname;
   struct core_filehdr core_header;
-  bfd_size_type amt;
+  size_t amt;
 
   amt = sizeof core_header;
   val = bfd_bread (& core_header, amt, abfd);
@@ -138,7 +138,7 @@ osf_core_core_file_p (bfd *abfd)
 
   /* OK, we believe you.  You're a core file (sure, sure).  */
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  fail:
   bfd_release (abfd, core_hdr (abfd));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pc532-mach.c ./bfd/pc532-mach.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pc532-mach.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pc532-mach.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Mach3/532 a.out-ish binaries.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pdp11.c ./bfd/pdp11.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pdp11.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pdp11.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for PDP-11 a.out binaries.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -22,7 +22,9 @@
 /* BFD backend for PDP-11, running 2.11BSD in particular.
 
    This file was hacked up by looking hard at the existing vaxnetbsd
-   back end and the header files in 2.11BSD.
+   back end and the header files in 2.11BSD.  The symbol table format
+   of 2.11BSD has been extended to accommodate .stab symbols.  See
+   struct pdp11_external_nlist below for details.
 
    TODO
    * support for V7 file formats
@@ -37,7 +39,7 @@
 #define ARCH_SIZE	16
 #undef TARGET_IS_BIG_ENDIAN_P
 
-#define	TARGET_PAGE_SIZE	256
+#define	TARGET_PAGE_SIZE	8192
 #define	SEGMENT__SIZE	TARGET_PAGE_SIZE
 
 #define	DEFAULT_ARCH	bfd_arch_pdp11
@@ -63,6 +65,7 @@
 #define N_SET_FLAGS(execp, flags) do { } while (0)
 #define N_BADMAG(x) (N_MAGIC(x) != OMAGIC	\
 		     && N_MAGIC(x) != NMAGIC	\
+		     && N_MAGIC(x) != IMAGIC	\
 		     && N_MAGIC(x) != ZMAGIC)
 
 #include "sysdep.h"
@@ -90,7 +93,8 @@ struct pdp11_external_exec
 #define	A_MAGIC2	NMAGIC
 #define NMAGIC		0410	/* Pure executable.  */
 #define ZMAGIC		0413	/* Demand-paged executable.  */
-#define	A_MAGIC3	0411	/* Separated I&D.  */
+#define	IMAGIC		0411	/* Separated I&D.  */
+#define	A_MAGIC3	IMAGIC
 #define	A_MAGIC4	0405	/* Overlay.  */
 #define	A_MAGIC5	0430	/* Auto-overlay (nonseparate).  */
 #define	A_MAGIC6	0431	/* Auto-overlay (separate).  */
@@ -99,10 +103,23 @@ struct pdp11_external_exec
 
 #define A_FLAG_RELOC_STRIPPED	0x0001
 
+/* The following struct defines the format of an entry in the object file
+   symbol table.  In the original 2.11BSD struct the index into the string
+   table is stored as a long, but the PDP11 C convention for storing a long in
+   memory placed the most significant word first even though the bytes within a
+   word are stored least significant first.  So here the string table index is
+   considered to be just 16 bits and the first two bytes of the struct were
+   previously named e_unused.  To extend the symbol table format to accommodate
+   .stab symbols, the e_unused bytes are renamed e_desc to store the desc field
+   of the .stab symbol.  The GDP Project's STABS document says that the "other"
+   field is almost always unused and can be set to zero; the only nonzero cases
+   identified were for stabs in their own sections, which does not apply for
+   pdp11 a.out format, and for a special case of GNU Modula2 which is not
+   supported for the PDP11.  */
 #define external_nlist pdp11_external_nlist
 struct pdp11_external_nlist
 {
-  bfd_byte e_unused[2];		/* Unused.  */
+  bfd_byte e_desc[2];		/* The desc field for .stab symbols, else 0.  */
   bfd_byte e_strx[2];		/* Index into string table of name.  */
   bfd_byte e_type[1];		/* Type of symbol.  */
   bfd_byte e_ovly[1];		/* Overlay number.  */
@@ -149,6 +166,13 @@ static bfd_boolean MY(write_object_conte
 #include "aout/stab_gnu.h"
 #include "aout/ar.h"
 
+/* The symbol type numbers for the 16-bit a.out format from 2.11BSD differ from
+   those defined in aout64.h so we must redefine them here.  N_EXT changes from
+   0x01 to 0x20 which creates a conflict with some .stab values, in particular
+   between undefined externals (N_UNDF+N_EXT) vs. global variables (N_GYSM) and
+   between external bss symbols (N_BSS+N_EXT) vs. function names (N_FUN).  We
+   disambiguate those conflicts with a hack in is_stab() to look for the ':' in
+   the global variable or function name string.  */
 #undef N_TYPE
 #undef N_UNDF
 #undef N_ABS
@@ -158,6 +182,7 @@ static bfd_boolean MY(write_object_conte
 #undef N_REG
 #undef N_FN
 #undef N_EXT
+#undef N_STAB
 #define N_TYPE		0x1f	/* Type mask.  */
 #define N_UNDF		0x00	/* Undefined.  */
 #define N_ABS		0x01	/* Absolute.  */
@@ -167,6 +192,12 @@ static bfd_boolean MY(write_object_conte
 #define N_REG		0x14	/* Register symbol.  */
 #define N_FN		0x1f	/* File name.  */
 #define N_EXT		0x20	/* External flag.  */
+/* Type numbers from .stab entries that could conflict:
+	N_GSYM		0x20	   Global variable [conflict with external undef]
+	N_FNAME		0x22	   Function name (for BSD Fortran) [ignored]
+	N_FUN		0x24	   Function name [conflict with external BSS]
+	N_NOMAP		0x34	   No DST map for sym. [ext. reg. doesn't exist]
+*/
 
 #define RELOC_SIZE 2
 
@@ -242,11 +273,16 @@ struct aout_final_link_info
   struct external_nlist *output_syms;
 };
 
+/* Copy of the link_info.separate_code boolean to select the output format with
+   separate instruction and data spaces selected by --imagic */
+static bfd_boolean separate_i_d = FALSE;
+
 reloc_howto_type howto_table_pdp11[] =
 {
   /* type	       rs size bsz  pcrel bitpos ovrf			  sf name     part_inpl readmask  setmask    pcdone */
 HOWTO( 0,	       0,  1,  16,  FALSE, 0, complain_overflow_signed,0,"16",	TRUE, 0x0000ffff,0x0000ffff, FALSE),
 HOWTO( 1,	       0,  1,  16,  TRUE,  0, complain_overflow_signed,0,"DISP16",	TRUE, 0x0000ffff,0x0000ffff, FALSE),
+HOWTO( 2,	       0,  2,  32,  FALSE, 0, complain_overflow_signed,0,"32",	TRUE, 0x0000ffff,0x0000ffff, FALSE),
 };
 
 #define TABLE_SIZE(TABLE)	(sizeof(TABLE)/sizeof(TABLE[0]))
@@ -268,6 +304,8 @@ NAME (aout, reloc_type_lookup) (bfd * ab
       return &howto_table_pdp11[0];
     case BFD_RELOC_16_PCREL:
       return &howto_table_pdp11[1];
+    case BFD_RELOC_32:
+      return &howto_table_pdp11[2];
     default:
       return NULL;
     }
@@ -289,6 +327,19 @@ NAME (aout, reloc_name_lookup) (bfd *abf
   return NULL;
 }
 
+/* Disambiguate conflicts between normal symbol types and .stab symbol types
+   (undefined externals N_UNDF+N_EXT vs. global variables N_GYSM and external
+   bss symbols N_BSS+N_EXT vs. function names N_FUN) with a hack to look for
+   the ':' in the global variable or function name string.  */
+
+static int
+is_stab (int type, const char *name)
+{
+  if (type == N_GSYM || type == N_FUN)
+    return strchr (name, ':') != NULL;
+  return type > N_FUN;
+}
+
 static int
 pdp11_aout_write_headers (bfd *abfd, struct internal_exec *execp)
 {
@@ -452,14 +503,14 @@ NAME (aout, make_sections) (bfd *abfd)
    environment's "finish up" function just before returning, to
    handle any last-minute setup.  */
 
-const bfd_target *
+bfd_cleanup
 NAME (aout, some_aout_object_p) (bfd *abfd,
 				 struct internal_exec *execp,
-				 const bfd_target *(*callback_to_real_object_p) (bfd *))
+				 bfd_cleanup (*callback_to_real_object_p) (bfd *))
 {
   struct aout_data_struct *rawptr, *oldrawptr;
-  const bfd_target *result;
-  bfd_size_type amt = sizeof (struct aout_data_struct);
+  bfd_cleanup cleanup;
+  size_t amt = sizeof (struct aout_data_struct);
 
   rawptr = bfd_zalloc (abfd, amt);
   if (rawptr == NULL)
@@ -498,6 +549,8 @@ NAME (aout, some_aout_object_p) (bfd *ab
     }
   else if (N_MAGIC (execp) == OMAGIC)
     adata (abfd).magic = o_magic;
+  else if (N_MAGIC (execp) == IMAGIC)
+    adata (abfd).magic = i_magic;
   else
     {
       /* Should have been checked with N_BADMAG before this routine
@@ -580,7 +633,7 @@ NAME (aout, some_aout_object_p) (bfd *ab
   adata(abfd)->segment_size = SEGMENT_SIZE;
   adata(abfd)->exec_bytes_size = EXEC_BYTES_SIZE;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
   /* The architecture is encoded in various ways in various a.out variants,
      or is not encoded at all in some of them.  The relocation size depends
@@ -592,7 +645,7 @@ NAME (aout, some_aout_object_p) (bfd *ab
      header, should cope with them in this callback as well.  */
 #endif	/* DOCUMENTATION */
 
-  result = (*callback_to_real_object_p)(abfd);
+  cleanup = (*callback_to_real_object_p)(abfd);
 
   /* Now that the segment addresses have been worked out, take a better
      guess at whether the file is executable.  If the entry point
@@ -610,8 +663,11 @@ NAME (aout, some_aout_object_p) (bfd *ab
      sets the entry point, and that is likely to be non-zero for most systems. */
 
   if (execp->a_entry != 0
-      || (execp->a_entry >= obj_textsec(abfd)->vma
-	  && execp->a_entry < obj_textsec(abfd)->vma + obj_textsec(abfd)->size))
+      || (execp->a_entry >= obj_textsec (abfd)->vma
+	  && execp->a_entry < (obj_textsec (abfd)->vma
+			       + obj_textsec (abfd)->size)
+	  && execp->a_trsize == 0
+	  && execp->a_drsize == 0))
     abfd->flags |= EXEC_P;
 #ifdef STAT_FOR_EXEC
   else
@@ -633,12 +689,12 @@ NAME (aout, some_aout_object_p) (bfd *ab
     }
 #endif /* STAT_FOR_EXEC */
 
-  if (!result)
+  if (!cleanup)
     {
       free (rawptr);
       abfd->tdata.aout_data = oldrawptr;
     }
-  return result;
+  return cleanup;
 }
 
 /* Initialize ABFD for use with a.out files.  */
@@ -647,7 +703,7 @@ bfd_boolean
 NAME (aout, mkobject) (bfd *abfd)
 {
   struct aout_data_struct  *rawptr;
-  bfd_size_type amt = sizeof (struct aout_data_struct);
+  size_t amt = sizeof (struct aout_data_struct);
 
   bfd_set_error (bfd_error_system_call);
 
@@ -789,57 +845,56 @@ adjust_o_magic (bfd *abfd, struct intern
   file_ptr pos = adata (abfd).exec_bytes_size;
   bfd_vma vma = 0;
   int pad = 0;
+  asection *text = obj_textsec (abfd);
+  asection *data = obj_datasec (abfd);
+  asection *bss = obj_bsssec (abfd);
 
   /* Text.  */
-  obj_textsec (abfd)->filepos = pos;
-  if (! obj_textsec (abfd)->user_set_vma)
-    obj_textsec (abfd)->vma = vma;
+  text->filepos = pos;
+  if (!text->user_set_vma)
+    text->vma = vma;
   else
-    vma = obj_textsec (abfd)->vma;
+    vma = text->vma;
 
-  pos += obj_textsec (abfd)->size;
-  vma += obj_textsec (abfd)->size;
+  pos += execp->a_text;
+  vma += execp->a_text;
 
   /* Data.  */
-  if (!obj_datasec (abfd)->user_set_vma)
+  if (!data->user_set_vma)
     {
-      obj_textsec (abfd)->size += pad;
       pos += pad;
       vma += pad;
-      obj_datasec (abfd)->vma = vma;
+      data->vma = vma;
     }
   else
-    vma = obj_datasec (abfd)->vma;
-  obj_datasec (abfd)->filepos = pos;
-  pos += obj_datasec (abfd)->size;
-  vma += obj_datasec (abfd)->size;
+    vma = data->vma;
+  execp->a_text += pad;
+
+  data->filepos = pos;
+  pos += data->size;
+  vma += data->size;
 
   /* BSS.  */
-  if (! obj_bsssec (abfd)->user_set_vma)
+  if (!bss->user_set_vma)
     {
-      obj_datasec (abfd)->size += pad;
       pos += pad;
       vma += pad;
-      obj_bsssec (abfd)->vma = vma;
+      bss->vma = vma;
     }
-  else
+  else if (data->size > 0 || bss->size > 0) /* PR25677: for objcopy --extract-symbol */
     {
       /* The VMA of the .bss section is set by the VMA of the
 	 .data section plus the size of the .data section.  We may
 	 need to add padding bytes to make this true.  */
-      pad = obj_bsssec (abfd)->vma - vma;
-      if (pad > 0)
-	{
-	  obj_datasec (abfd)->size += pad;
-	  pos += pad;
-	}
+      pad = bss->vma - vma;
+      if (pad < 0)
+	pad = 0;
+      pos += pad;
     }
-  obj_bsssec (abfd)->filepos = pos;
+  execp->a_data = data->size + pad;
+  bss->filepos = pos;
+  execp->a_bss = bss->size;
 
-  /* Fix up the exec header.  */
-  execp->a_text = obj_textsec (abfd)->size;
-  execp->a_data = obj_datasec (abfd)->size;
-  execp->a_bss  = obj_bsssec (abfd)->size;
   N_SET_MAGIC (execp, OMAGIC);
 }
 
@@ -849,7 +904,11 @@ adjust_z_magic (bfd *abfd, struct intern
   bfd_size_type data_pad, text_pad;
   file_ptr text_end;
   const struct aout_backend_data *abdp;
-  int ztih;			/* Nonzero if text includes exec header.  */
+  /* TRUE if text includes exec header.  */
+  bfd_boolean ztih;
+  asection *text = obj_textsec (abfd);
+  asection *data = obj_datasec (abfd);
+  asection *bss = obj_bsssec (abfd);
 
   abdp = aout_backend_info (abfd);
 
@@ -857,18 +916,17 @@ adjust_z_magic (bfd *abfd, struct intern
   ztih = (abdp != NULL
 	  && (abdp->text_includes_header
 	      || obj_aout_subformat (abfd) == q_magic_format));
-  obj_textsec(abfd)->filepos = (ztih
-				? adata(abfd).exec_bytes_size
-				: adata(abfd).zmagic_disk_block_size);
-  if (! obj_textsec(abfd)->user_set_vma)
+  text->filepos = (ztih
+		   ? adata (abfd).exec_bytes_size
+		   : adata (abfd).zmagic_disk_block_size);
+  if (!text->user_set_vma)
     {
       /* ?? Do we really need to check for relocs here?  */
-      obj_textsec(abfd)->vma = ((abfd->flags & HAS_RELOC)
-				? 0
-				: (ztih
-				   ? (abdp->default_text_vma
-				      + adata (abfd).exec_bytes_size)
-				   : abdp->default_text_vma));
+      text->vma = ((abfd->flags & HAS_RELOC)
+		   ? 0
+		   : (ztih
+		      ? abdp->default_text_vma + adata (abfd).exec_bytes_size
+		      : abdp->default_text_vma));
       text_pad = 0;
     }
   else
@@ -877,17 +935,17 @@ adjust_z_magic (bfd *abfd, struct intern
 	 may need to pad it such that the .data section starts at a page
 	 boundary.  */
       if (ztih)
-	text_pad = ((obj_textsec (abfd)->filepos - obj_textsec (abfd)->vma)
+	text_pad = ((text->filepos - text->vma)
 		    & (adata (abfd).page_size - 1));
       else
-	text_pad = ((- obj_textsec (abfd)->vma)
+	text_pad = (-text->vma
 		    & (adata (abfd).page_size - 1));
     }
 
   /* Find start of data.  */
   if (ztih)
     {
-      text_end = obj_textsec (abfd)->filepos + obj_textsec (abfd)->size;
+      text_end = text->filepos + execp->a_text;
       text_pad += BFD_ALIGN (text_end, adata (abfd).page_size) - text_end;
     }
   else
@@ -895,49 +953,42 @@ adjust_z_magic (bfd *abfd, struct intern
       /* Note that if page_size == zmagic_disk_block_size, then
 	 filepos == page_size, and this case is the same as the ztih
 	 case.  */
-      text_end = obj_textsec (abfd)->size;
+      text_end = execp->a_text;
       text_pad += BFD_ALIGN (text_end, adata (abfd).page_size) - text_end;
-      text_end += obj_textsec (abfd)->filepos;
+      text_end += text->filepos;
     }
-
-  obj_textsec (abfd)->size += text_pad;
-  text_end += text_pad;
+  execp->a_text += text_pad;
 
   /* Data.  */
-  if (!obj_datasec(abfd)->user_set_vma)
+  if (!data->user_set_vma)
     {
       bfd_vma vma;
-      vma = obj_textsec(abfd)->vma + obj_textsec(abfd)->size;
-      obj_datasec(abfd)->vma = BFD_ALIGN (vma, adata(abfd).segment_size);
+      vma = text->vma + execp->a_text;
+      data->vma = BFD_ALIGN (vma, adata (abfd).segment_size);
     }
   if (abdp && abdp->zmagic_mapped_contiguous)
     {
-      text_pad = (obj_datasec(abfd)->vma
-		  - obj_textsec(abfd)->vma
-		  - obj_textsec(abfd)->size);
-      obj_textsec(abfd)->size += text_pad;
+      text_pad = data->vma - (text->vma + execp->a_text);
+      /* Only pad the text section if the data
+	 section is going to be placed after it.  */
+      if (text_pad > 0)
+	execp->a_text += text_pad;
     }
-  obj_datasec (abfd)->filepos = (obj_textsec (abfd)->filepos
-				+ obj_textsec (abfd)->size);
+  data->filepos = text->filepos + execp->a_text;
 
   /* Fix up exec header while we're at it.  */
-  execp->a_text = obj_textsec(abfd)->size;
   if (ztih && (!abdp || (abdp && !abdp->exec_header_not_counted)))
-    execp->a_text += adata(abfd).exec_bytes_size;
+    execp->a_text += adata (abfd).exec_bytes_size;
   N_SET_MAGIC (execp, ZMAGIC);
 
   /* Spec says data section should be rounded up to page boundary.  */
-  obj_datasec(abfd)->size
-    = align_power (obj_datasec(abfd)->size,
-		   obj_bsssec(abfd)->alignment_power);
-  execp->a_data = BFD_ALIGN (obj_datasec(abfd)->size,
-			     adata(abfd).page_size);
-  data_pad = execp->a_data - obj_datasec(abfd)->size;
+  execp->a_data = align_power (data->size, bss->alignment_power);
+  execp->a_data = BFD_ALIGN (execp->a_data, adata (abfd).page_size);
+  data_pad = execp->a_data - data->size;
 
   /* BSS.  */
-  if (!obj_bsssec(abfd)->user_set_vma)
-    obj_bsssec(abfd)->vma = (obj_datasec(abfd)->vma
-			     + obj_datasec(abfd)->size);
+  if (!bss->user_set_vma)
+    bss->vma = data->vma + execp->a_data;
   /* If the BSS immediately follows the data section and extra space
      in the page is left after the data section, fudge data
      in the header so that the bss section looks smaller by that
@@ -945,55 +996,95 @@ adjust_z_magic (bfd *abfd, struct intern
      (Note that a linker script, as well as the above assignment,
      could have explicitly set the BSS vma to immediately follow
      the data section.)  */
-  if (align_power (obj_bsssec(abfd)->vma, obj_bsssec(abfd)->alignment_power)
-      == obj_datasec(abfd)->vma + obj_datasec(abfd)->size)
-    execp->a_bss = (data_pad > obj_bsssec(abfd)->size) ? 0 :
-      obj_bsssec(abfd)->size - data_pad;
+  if (align_power (bss->vma, bss->alignment_power) == data->vma + execp->a_data)
+    execp->a_bss = data_pad > bss->size ? 0 : bss->size - data_pad;
   else
-    execp->a_bss = obj_bsssec(abfd)->size;
+    execp->a_bss = bss->size;
 }
 
 static void
 adjust_n_magic (bfd *abfd, struct internal_exec *execp)
 {
-  file_ptr pos = adata(abfd).exec_bytes_size;
+  file_ptr pos = adata (abfd).exec_bytes_size;
   bfd_vma vma = 0;
   int pad;
+  asection *text = obj_textsec (abfd);
+  asection *data = obj_datasec (abfd);
+  asection *bss = obj_bsssec (abfd);
 
   /* Text.  */
-  obj_textsec(abfd)->filepos = pos;
-  if (!obj_textsec(abfd)->user_set_vma)
-    obj_textsec(abfd)->vma = vma;
+  text->filepos = pos;
+  if (!text->user_set_vma)
+    text->vma = vma;
   else
-    vma = obj_textsec(abfd)->vma;
-  pos += obj_textsec(abfd)->size;
-  vma += obj_textsec(abfd)->size;
+    vma = text->vma;
+  pos += execp->a_text;
+  vma += execp->a_text;
 
   /* Data.  */
-  obj_datasec(abfd)->filepos = pos;
-  if (!obj_datasec(abfd)->user_set_vma)
-    obj_datasec(abfd)->vma = BFD_ALIGN (vma, adata(abfd).segment_size);
-  vma = obj_datasec(abfd)->vma;
+  data->filepos = pos;
+  if (!data->user_set_vma)
+    data->vma = BFD_ALIGN (vma, adata (abfd).segment_size);
+  vma = data->vma;
 
   /* Since BSS follows data immediately, see if it needs alignment.  */
-  vma += obj_datasec(abfd)->size;
-  pad = align_power (vma, obj_bsssec(abfd)->alignment_power) - vma;
-  obj_datasec(abfd)->size += pad;
-  pos += obj_datasec(abfd)->size;
+  vma += data->size;
+  pad = align_power (vma, bss->alignment_power) - vma;
+  execp->a_data = data->size + pad;
+  pos += execp->a_data;
 
   /* BSS.  */
-  if (!obj_bsssec(abfd)->user_set_vma)
-    obj_bsssec(abfd)->vma = vma;
+  if (!bss->user_set_vma)
+    bss->vma = vma;
   else
-    vma = obj_bsssec(abfd)->vma;
+    vma = bss->vma;
 
   /* Fix up exec header.  */
-  execp->a_text = obj_textsec(abfd)->size;
-  execp->a_data = obj_datasec(abfd)->size;
-  execp->a_bss = obj_bsssec(abfd)->size;
+  execp->a_bss = bss->size;
   N_SET_MAGIC (execp, NMAGIC);
 }
 
+static void
+adjust_i_magic (bfd *abfd, struct internal_exec *execp)
+{
+  file_ptr pos = adata (abfd).exec_bytes_size;
+  bfd_vma vma = 0;
+  int pad;
+  asection *text = obj_textsec (abfd);
+  asection *data = obj_datasec (abfd);
+  asection *bss = obj_bsssec (abfd);
+
+  /* Text.  */
+  text->filepos = pos;
+  if (!text->user_set_vma)
+    text->vma = vma;
+  else
+    vma = text->vma;
+  pos += execp->a_text;
+
+  /* Data.  */
+  data->filepos = pos;
+  if (!data->user_set_vma)
+    data->vma = 0;
+  vma = data->vma;
+
+  /* Since BSS follows data immediately, see if it needs alignment.  */
+  vma += data->size;
+  pad = align_power (vma, bss->alignment_power) - vma;
+  execp->a_data = data->size + pad;
+  pos += execp->a_data;
+
+  /* BSS.  */
+  if (!bss->user_set_vma)
+    bss->vma = vma;
+  else
+    vma = bss->vma;
+
+  /* Fix up exec header.  */
+  execp->a_bss = bss->size;
+  N_SET_MAGIC (execp, IMAGIC);
+}
+
 bfd_boolean
 NAME (aout, adjust_sizes_and_vmas) (bfd *abfd)
 {
@@ -1002,12 +1093,11 @@ NAME (aout, adjust_sizes_and_vmas) (bfd
   if (! NAME (aout, make_sections) (abfd))
     return FALSE;
 
-  if (adata(abfd).magic != undecided_magic)
+  if (adata (abfd).magic != undecided_magic)
     return TRUE;
 
-  obj_textsec(abfd)->size =
-    align_power(obj_textsec(abfd)->size,
-		obj_textsec(abfd)->alignment_power);
+  execp->a_text = align_power (obj_textsec (abfd)->size,
+			       obj_textsec (abfd)->alignment_power);
 
   /* Rule (heuristic) for when to pad to a new page.  Note that there
      are (at least) two ways demand-paged (ZMAGIC) files have been
@@ -1015,7 +1105,7 @@ NAME (aout, adjust_sizes_and_vmas) (bfd
      (TARGET_PAGE_SIZE).  However, newer versions of SUNOS start the text
      segment right after the exec header; the latter is counted in the
      text segment size, and is paged in by the kernel with the rest of
-     the text. */
+     the text.  */
 
   /* This perhaps isn't the right way to do this, but made it simpler for me
      to understand enough to implement it.  Better would probably be to go
@@ -1025,33 +1115,37 @@ NAME (aout, adjust_sizes_and_vmas) (bfd
      I understand it better now, but I haven't time to do the cleanup this
      minute.  */
 
-  if (abfd->flags & WP_TEXT)
-    adata(abfd).magic = n_magic;
+  if (separate_i_d)
+    adata (abfd).magic = i_magic;
+  else if (abfd->flags & WP_TEXT)
+    adata (abfd).magic = n_magic;
   else
-    adata(abfd).magic = o_magic;
+    adata (abfd).magic = o_magic;
 
 #ifdef BFD_AOUT_DEBUG /* requires gcc2 */
 #if __GNUC__ >= 2
   fprintf (stderr, "%s text=<%x,%x,%x> data=<%x,%x,%x> bss=<%x,%x,%x>\n",
 	   ({ char *str;
-	      switch (adata(abfd).magic) {
-	      case n_magic: str = "NMAGIC"; break;
-	      case o_magic: str = "OMAGIC"; break;
-	      case z_magic: str = "ZMAGIC"; break;
-	      default: abort ();
-	      }
+	      switch (adata (abfd).magic)
+		{
+		case n_magic: str = "NMAGIC"; break;
+		case o_magic: str = "OMAGIC"; break;
+		case i_magic: str = "IMAGIC"; break;
+		case z_magic: str = "ZMAGIC"; break;
+		default: abort ();
+		}
 	      str;
 	    }),
-	   obj_textsec(abfd)->vma, obj_textsec(abfd)->size,
-		obj_textsec(abfd)->alignment_power,
-	   obj_datasec(abfd)->vma, obj_datasec(abfd)->size,
-		obj_datasec(abfd)->alignment_power,
-	   obj_bsssec(abfd)->vma, obj_bsssec(abfd)->size,
-		obj_bsssec(abfd)->alignment_power);
+	   obj_textsec (abfd)->vma, obj_textsec (abfd)->size,
+		obj_textsec (abfd)->alignment_power,
+	   obj_datasec (abfd)->vma, obj_datasec (abfd)->size,
+		obj_datasec (abfd)->alignment_power,
+	   obj_bsssec (abfd)->vma, obj_bsssec (abfd)->size,
+		obj_bsssec (abfd)->alignment_power);
 #endif
 #endif
 
-  switch (adata(abfd).magic)
+  switch (adata (abfd).magic)
     {
     case o_magic:
       adjust_o_magic (abfd, execp);
@@ -1062,17 +1156,20 @@ NAME (aout, adjust_sizes_and_vmas) (bfd
     case n_magic:
       adjust_n_magic (abfd, execp);
       break;
+    case i_magic:
+      adjust_i_magic (abfd, execp);
+      break;
     default:
       abort ();
     }
 
 #ifdef BFD_AOUT_DEBUG
   fprintf (stderr, "       text=<%x,%x,%x> data=<%x,%x,%x> bss=<%x,%x>\n",
-	   obj_textsec(abfd)->vma, obj_textsec(abfd)->size,
-		obj_textsec(abfd)->filepos,
-	   obj_datasec(abfd)->vma, obj_datasec(abfd)->size,
-		obj_datasec(abfd)->filepos,
-	   obj_bsssec(abfd)->vma, obj_bsssec(abfd)->size);
+	   obj_textsec (abfd)->vma, execp->a_text,
+		obj_textsec (abfd)->filepos,
+	   obj_datasec (abfd)->vma, execp->a_data,
+		obj_datasec (abfd)->filepos,
+	   obj_bsssec (abfd)->vma, execp->a_bss);
 #endif
 
   return TRUE;
@@ -1182,17 +1279,13 @@ aout_get_external_symbols (bfd *abfd)
       /* We allocate using malloc to make the values easy to free
 	 later on.  If we put them on the objalloc it might not be
 	 possible to free them.  */
-      syms = bfd_malloc (count * EXTERNAL_NLIST_SIZE);
-      if (syms == NULL && count != 0)
+      if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
+	return FALSE;
+      syms = (struct external_nlist *)
+	_bfd_malloc_and_read (abfd, count * EXTERNAL_NLIST_SIZE,
+			      count * EXTERNAL_NLIST_SIZE);
+      if (syms == NULL)
 	return FALSE;
-
-      if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
-	  || (bfd_bread (syms, exec_hdr (abfd)->a_syms, abfd)
-	      != exec_hdr (abfd)->a_syms))
-	{
-	  free (syms);
-	  return FALSE;
-	}
 #endif
 
       obj_aout_external_syms (abfd) = syms;
@@ -1205,36 +1298,54 @@ aout_get_external_symbols (bfd *abfd)
       unsigned char string_chars[BYTES_IN_LONG];
       bfd_size_type stringsize;
       char *strings;
+      bfd_size_type amt = BYTES_IN_LONG;
 
       /* Get the size of the strings.  */
       if (bfd_seek (abfd, obj_str_filepos (abfd), SEEK_SET) != 0
-	  || (bfd_bread ((void *) string_chars, (bfd_size_type) BYTES_IN_LONG,
-			abfd) != BYTES_IN_LONG))
+	  || bfd_bread ((void *) string_chars, amt, abfd) != amt)
 	return FALSE;
       stringsize = H_GET_32 (abfd, string_chars);
+      if (stringsize == 0)
+	stringsize = 1;
+      else if (stringsize < BYTES_IN_LONG
+	       || (size_t) stringsize != stringsize)
+	{
+	  bfd_set_error (bfd_error_bad_value);
+	  return FALSE;
+	}
 
 #ifdef USE_MMAP
-      if (! bfd_get_file_window (abfd, obj_str_filepos (abfd), stringsize,
-				 &obj_aout_string_window (abfd), TRUE))
-	return FALSE;
-      strings = (char *) obj_aout_string_window (abfd).data;
-#else
-      strings = bfd_malloc (stringsize + 1);
-      if (strings == NULL)
-	return FALSE;
-
-      /* Skip space for the string count in the buffer for convenience
-	 when using indexes.  */
-      if (bfd_bread (strings + 4, stringsize - 4, abfd) != stringsize - 4)
+      if (stringsize >= BYTES_IN_LONG)
 	{
-	  free (strings);
-	  return FALSE;
+	  if (! bfd_get_file_window (abfd, obj_str_filepos (abfd), stringsize + 1,
+				     &obj_aout_string_window (abfd), TRUE))
+	    return FALSE;
+	  strings = (char *) obj_aout_string_window (abfd).data;
 	}
+      else
 #endif
+	{
+	  strings = (char *) bfd_malloc (stringsize + 1);
+	  if (strings == NULL)
+	    return FALSE;
+
+	  if (stringsize >= BYTES_IN_LONG)
+	    {
+	      /* Keep the string count in the buffer for convenience
+		 when indexing with e_strx.  */
+	      amt = stringsize - BYTES_IN_LONG;
+	      if (bfd_bread (strings + BYTES_IN_LONG, amt, abfd) != amt)
+		{
+		  free (strings);
+		  return FALSE;
+		}
+	    }
+	}
       /* Ensure that a zero index yields an empty string.  */
       strings[0] = '\0';
 
-      strings[stringsize - 1] = 0;
+      /* Ensure that the string buffer is NUL terminated.  */
+      strings[stringsize] = 0;
 
       obj_aout_external_strings (abfd) = strings;
       obj_aout_external_string_size (abfd) = stringsize;
@@ -1254,7 +1365,7 @@ translate_from_native_sym_flags (bfd *ab
 {
   flagword visible;
 
-  if (cache_ptr->type == N_FN)
+  if (is_stab (cache_ptr->type, cache_ptr->symbol.name))
     {
       asection *sec;
 
@@ -1262,20 +1373,25 @@ translate_from_native_sym_flags (bfd *ab
       cache_ptr->symbol.flags = BSF_DEBUGGING;
 
       /* Work out the symbol section.  */
-      switch (cache_ptr->type & N_TYPE)
+      switch (cache_ptr->type)
 	{
-	case N_TEXT:
+	case N_SO:
+	case N_SOL:
+	case N_FUN:
+	case N_ENTRY:
+	case N_SLINE:
 	case N_FN:
 	  sec = obj_textsec (abfd);
 	  break;
-	case N_DATA:
+	case N_STSYM:
+	case N_DSLINE:
 	  sec = obj_datasec (abfd);
 	  break;
-	case N_BSS:
+	case N_LCSYM:
+	case N_BSLINE:
 	  sec = obj_bsssec (abfd);
 	  break;
 	default:
-	case N_ABS:
 	  sec = bfd_abs_section_ptr;
 	  break;
 	}
@@ -1347,10 +1463,12 @@ translate_to_native_sym_flags (bfd *abfd
   bfd_vma value = cache_ptr->value;
   asection *sec;
   bfd_vma off;
+  const char *name = cache_ptr->name != NULL ? cache_ptr->name : "*unknown*";
 
   /* Mask out any existing type bits in case copying from one section
      to another.  */
-  sym_pointer->e_type[0] &= ~N_TYPE;
+  if (!is_stab (sym_pointer->e_type[0], name))
+    sym_pointer->e_type[0] &= ~N_TYPE;
 
   sec = bfd_asymbol_section (cache_ptr);
   off = 0;
@@ -1362,7 +1480,7 @@ translate_to_native_sym_flags (bfd *abfd
       _bfd_error_handler
 	/* xgettext:c-format */
 	(_("%pB: can not represent section for symbol `%s' in a.out object file format"),
-	 abfd, cache_ptr->name != NULL ? cache_ptr->name : "*unknown*");
+	 abfd, name);
       bfd_set_error (bfd_error_nonrepresentable_section);
       return FALSE;
     }
@@ -1413,7 +1531,7 @@ translate_to_native_sym_flags (bfd *abfd
 asymbol *
 NAME (aout, make_empty_symbol) (bfd *abfd)
 {
-  bfd_size_type amt = sizeof (aout_symbol_type);
+  size_t amt = sizeof (aout_symbol_type);
   aout_symbol_type *new_symbol_type = bfd_zalloc (abfd, amt);
 
   if (!new_symbol_type)
@@ -1423,7 +1541,7 @@ NAME (aout, make_empty_symbol) (bfd *abf
   return &new_symbol_type->symbol;
 }
 
-/* Translate a set of internal symbols into external symbols.  */
+/* Translate a set of external symbols into internal symbols.  */
 
 bfd_boolean
 NAME (aout, translate_symbol_table) (bfd *abfd,
@@ -1440,6 +1558,7 @@ NAME (aout, translate_symbol_table) (bfd
   for (; ext < ext_end; ext++, in++)
     {
       bfd_vma x;
+      int ovly;
 
       x = GET_WORD (abfd, ext->e_strx);
       in->symbol.the_bfd = abfd;
@@ -1454,11 +1573,27 @@ NAME (aout, translate_symbol_table) (bfd
       else if (x < strsize)
 	in->symbol.name = str + x;
       else
-	return FALSE;
+	{
+	  _bfd_error_handler
+	    (_("%pB: invalid string offset %" PRIu64 " >= %" PRIu64),
+	     abfd, (uint64_t) x, (uint64_t) strsize);
+	  bfd_set_error (bfd_error_bad_value);
+	  return FALSE;
+	}
 
-      in->symbol.value = GET_SWORD (abfd,  ext->e_value);
-      /* TODO: is 0 a safe value here?  */
-      in->desc = 0;
+      ovly = H_GET_8 (abfd, ext->e_ovly);
+      if (ovly != 0)
+	{
+	  _bfd_error_handler
+	    (_("%pB: symbol indicates overlay (not supported)"), abfd);
+	  bfd_set_error (bfd_error_bad_value);
+	  return FALSE;
+	}
+
+      in->symbol.value = GET_WORD (abfd,  ext->e_value);
+      /* e_desc is zero for normal symbols but for .stab symbols it
+	 carries the desc field in our extended 2.11BSD format. */
+      in->desc = H_GET_16 (abfd, ext->e_desc);
       in->other = 0;
       in->type = H_GET_8 (abfd,  ext->e_type);
       in->symbol.udata.p = NULL;
@@ -1546,7 +1681,7 @@ NAME (aout, slurp_symbol_table) (bfd *ab
 /* Get the index of a string in a strtab, adding it if it is not
    already present.  */
 
-static INLINE bfd_size_type
+static inline bfd_size_type
 add_to_stringtab (bfd *abfd,
 		  struct bfd_strtab_hash *tab,
 		  const char *str,
@@ -1609,23 +1744,27 @@ NAME (aout, write_syms) (bfd *abfd)
       bfd_size_type indx;
       struct external_nlist nsp;
 
-      PUT_WORD (abfd, 0, nsp.e_unused);
-
       indx = add_to_stringtab (abfd, strtab, g->name, FALSE);
       if (indx == (bfd_size_type) -1)
 	goto error_return;
       PUT_WORD (abfd, indx, nsp.e_strx);
 
       if (bfd_asymbol_flavour(g) == abfd->xvec->flavour)
-	H_PUT_8 (abfd, aout_symbol(g)->type,  nsp.e_type);
+	{
+	  H_PUT_16 (abfd, aout_symbol (g)->desc,  nsp.e_desc);
+	  H_PUT_8 (abfd, 0, nsp.e_ovly);
+	  H_PUT_8 (abfd, aout_symbol (g)->type,  nsp.e_type);
+	}
       else
-	H_PUT_8 (abfd, 0, nsp.e_type);
+	{
+	  H_PUT_16 (abfd, 0, nsp.e_desc);
+	  H_PUT_8 (abfd, 0, nsp.e_ovly);
+	  H_PUT_8 (abfd, 0, nsp.e_type);
+	}
 
       if (! translate_to_native_sym_flags (abfd, g, &nsp))
 	goto error_return;
 
-      H_PUT_8 (abfd, 0, nsp.e_ovly);
-
       if (bfd_bwrite ((void *)&nsp, (bfd_size_type) EXTERNAL_NLIST_SIZE, abfd)
 	  != EXTERNAL_NLIST_SIZE)
 	goto error_return;
@@ -1642,7 +1781,7 @@ NAME (aout, write_syms) (bfd *abfd)
 
   return TRUE;
 
-error_return:
+ error_return:
   _bfd_stringtab_free (strtab);
   return FALSE;
 }
@@ -1784,10 +1923,12 @@ pdp11_aout_swap_reloc_in (bfd *		 abfd,
      local or global.  */
   r_extern = (reloc_entry & RTYPE) == REXT;
 
-  if (r_extern && r_index > symcount)
+  if (r_extern && r_index >= symcount)
     {
       /* We could arrange to return an error, but it might be useful
-	 to see the file even if it is bad.  */
+	 to see the file even if it is bad.  FIXME: Of course this
+	 means that objdump -r *doesn't* see the actual reloc, and
+	 objcopy silently writes a different reloc.  */
       r_extern = 0;
       r_index = N_ABS;
     }
@@ -1829,19 +1970,11 @@ NAME (aout, slurp_reloc_table) (bfd *abf
 
   if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
     return FALSE;
-
-  each_size = obj_reloc_entry_size (abfd);
-
-  relocs = bfd_malloc (reloc_size);
+  relocs = _bfd_malloc_and_read (abfd, reloc_size, reloc_size);
   if (relocs == NULL && reloc_size != 0)
     return FALSE;
 
-  if (bfd_bread (relocs, reloc_size, abfd) != reloc_size)
-    {
-      free (relocs);
-      return FALSE;
-    }
-
+  each_size = obj_reloc_entry_size (abfd);
   count = reloc_size / each_size;
 
   /* Count the number of NON-ZERO relocs, this is the count we want.  */
@@ -1918,6 +2051,15 @@ NAME (aout, squirt_out_relocs) (bfd *abf
 	{
 	  bfd_byte *r;
 
+	  if ((*generic)->howto == NULL
+	      || (*generic)->sym_ptr_ptr == NULL)
+	    {
+	      bfd_set_error (bfd_error_invalid_operation);
+	      _bfd_error_handler (_("%pB: attempt to write out "
+				    "unknown reloc type"), abfd);
+	      bfd_release (abfd, native);
+	      return FALSE;
+	    }
 	  r = native + (*generic)->address;
 	  pdp11_aout_swap_reloc_out (abfd, *generic, r);
 	  count--;
@@ -2186,8 +2328,8 @@ NAME (aout, find_nearest_line) (bfd *abf
   size_t filelen, funclen;
   char *buf;
 
-  *filename_ptr = abfd->filename;
-  *functionname_ptr = 0;
+  *filename_ptr = bfd_get_filename (abfd);
+  *functionname_ptr = NULL;
   *line_ptr = 0;
   if (discriminator_ptr)
     *discriminator_ptr = 0;
@@ -2215,7 +2357,10 @@ NAME (aout, find_nearest_line) (bfd *abf
 		  const char * symname;
 
 		  symname = q->symbol.name;
-		  if (strcmp (symname + strlen (symname) - 2, ".o") == 0)
+
+		  if (symname != NULL
+		      && strlen (symname) > 2
+		      && strcmp (symname + strlen (symname) - 2, ".o") == 0)
 		    {
 		      if (q->symbol.value > low_line_vma)
 			{
@@ -2247,7 +2392,7 @@ NAME (aout, find_nearest_line) (bfd *abf
 	      /* Look ahead to next symbol to check if that too is an N_SO.  */
 	      p++;
 	      if (*p == NULL)
-		break;
+		goto done;
 	      q = (aout_symbol_type *)(*p);
 	      if (q->type != (int) N_SO)
 		goto next;
@@ -2308,8 +2453,7 @@ NAME (aout, find_nearest_line) (bfd *abf
   else
     funclen = strlen (bfd_asymbol_name (func));
 
-  if (adata (abfd).line_buf != NULL)
-    free (adata (abfd).line_buf);
+  free (adata (abfd).line_buf);
   if (filelen + funclen == 0)
     adata (abfd).line_buf = buf = NULL;
   else
@@ -2326,9 +2470,17 @@ NAME (aout, find_nearest_line) (bfd *abf
 	*filename_ptr = main_file_name;
       else
 	{
-	  sprintf (buf, "%s%s", directory_name, main_file_name);
-	  *filename_ptr = buf;
-	  buf += filelen + 1;
+	  if (buf == NULL)
+	    /* PR binutils/20891: In a corrupt input file both
+	       main_file_name and directory_name can be empty...  */
+	    * filename_ptr = NULL;
+	  else
+	    {
+	      snprintf (buf, filelen + 1, "%s%s", directory_name,
+			main_file_name);
+	      *filename_ptr = buf;
+	      buf += filelen + 1;
+	    }
 	}
     }
 
@@ -2337,6 +2489,12 @@ NAME (aout, find_nearest_line) (bfd *abf
       const char *function = func->name;
       char *colon;
 
+      if (buf == NULL)
+	{
+	  /* PR binutils/20892: In a corrupt input file func can be empty.  */
+	  * functionname_ptr = NULL;
+	  return TRUE;
+	}
       /* The caller expects a symbol name.  We actually have a
 	 function name, without the leading underscore.  Put the
 	 underscore back in, so that the caller gets a symbol name.  */
@@ -2376,7 +2534,7 @@ NAME (aout, bfd_free_cached_info) (bfd *
   if (bfd_get_format (abfd) != bfd_object)
     return TRUE;
 
-#define BFCI_FREE(x) if (x != NULL) { free (x); x = NULL; }
+#define BFCI_FREE(x) do { free (x); x = NULL; } while (0)
   BFCI_FREE (obj_aout_symbols (abfd));
 
 #ifdef USE_MMAP
@@ -2443,7 +2601,7 @@ struct bfd_link_hash_table *
 NAME (aout, link_hash_table_create) (bfd *abfd)
 {
   struct aout_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct aout_link_hash_table);
+  size_t amt = sizeof (struct aout_link_hash_table);
 
   ret = bfd_malloc (amt);
   if (ret == NULL)
@@ -2547,17 +2705,17 @@ aout_link_check_ar_symbols (bfd *abfd,
   for (; p < pend; p++)
     {
       int type = H_GET_8 (abfd, p->e_type);
-      const char *name;
+      const char *name = strings + GET_WORD (abfd, p->e_strx);
       struct bfd_link_hash_entry *h;
 
       /* Ignore symbols that are not externally visible.  This is an
 	 optimization only, as we check the type more thoroughly
 	 below.  */
       if ((type & N_EXT) == 0
+	  || is_stab(type, name)
 	  || type == N_FN)
 	continue;
 
-      name = strings + GET_WORD (abfd, p->e_strx);
       h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
 
       /* We are only interested in symbols that are currently
@@ -2767,15 +2925,23 @@ aout_link_add_symbols (bfd *abfd, struct
 
       type = H_GET_8 (abfd, p->e_type);
 
+      /* PR 19629: Corrupt binaries can contain illegal string offsets.  */
+      if (GET_WORD (abfd, p->e_strx) >= obj_aout_external_string_size (abfd))
+	return FALSE;
       name = strings + GET_WORD (abfd, p->e_strx);
+
+      /* Ignore debugging symbols.  */
+      if (is_stab (type, name))
+	continue;
+
       value = GET_WORD (abfd, p->e_value);
       flags = BSF_GLOBAL;
       string = NULL;
       switch (type)
 	{
 	default:
-	  /* Anything else should be a debugging symbol.  */
-	  BFD_ASSERT ((type & N_STAB) != 0);
+	  /* Shouldn't be any types not covered.  */
+	  BFD_ASSERT (0);
 	  continue;
 
 	case N_UNDF:
@@ -2879,6 +3045,9 @@ aout_link_includes_newfunc (struct bfd_h
   return (struct bfd_hash_entry *) ret;
 }
 
+/* Write out a symbol that was not associated with an a.out input
+   object.  */
+
 static bfd_boolean
 aout_link_write_other_symbol (struct bfd_hash_entry *bh, void *data)
 {
@@ -2889,7 +3058,7 @@ aout_link_write_other_symbol (struct bfd
   bfd_vma val;
   struct external_nlist outsym;
   bfd_size_type indx;
-  bfd_size_type amt;
+  size_t amt;
 
   if (h->root.type == bfd_link_hash_warning)
     {
@@ -2975,12 +3144,14 @@ aout_link_write_other_symbol (struct bfd
     }
 
   H_PUT_8 (output_bfd, type, outsym.e_type);
+  H_PUT_8 (output_bfd, 0, outsym.e_ovly);
   indx = add_to_stringtab (output_bfd, flaginfo->strtab, h->root.root.string,
 			   FALSE);
   if (indx == (bfd_size_type) -1)
     /* FIXME: No way to handle errors.  */
     abort ();
 
+  PUT_WORD (output_bfd, 0, outsym.e_desc);
   PUT_WORD (output_bfd, indx, outsym.e_strx);
   PUT_WORD (output_bfd, val, outsym.e_value);
 
@@ -3263,8 +3434,15 @@ pdp11_aout_link_input_section (struct ao
 	r_extern = (r_type == REXT);
 
 	howto_idx = r_pcrel;
-	BFD_ASSERT (howto_idx < TABLE_SIZE (howto_table_pdp11));
-	howto = howto_table_pdp11 + howto_idx;
+	if (howto_idx < TABLE_SIZE (howto_table_pdp11))
+	  howto = howto_table_pdp11 + howto_idx;
+	else
+	  {
+	    _bfd_error_handler (_("%pB: unsupported relocation type"),
+				input_bfd);
+	    bfd_set_error (bfd_error_bad_value);
+	    return FALSE;
+	  }
       }
 
       if (relocatable)
@@ -3642,6 +3820,7 @@ NAME (aout, final_link) (bfd *abfd,
   if (bfd_link_pic (info))
     abfd->flags |= DYNAMIC;
 
+  separate_i_d = info->separate_code;
   aout_info.info = info;
   aout_info.output_bfd = abfd;
   aout_info.contents = NULL;
@@ -3874,26 +4053,14 @@ NAME (aout, final_link) (bfd *abfd,
 	}
     }
 
-  if (aout_info.contents != NULL)
-    {
-      free (aout_info.contents);
-      aout_info.contents = NULL;
-    }
-  if (aout_info.relocs != NULL)
-    {
-      free (aout_info.relocs);
-      aout_info.relocs = NULL;
-    }
-  if (aout_info.symbol_map != NULL)
-    {
-      free (aout_info.symbol_map);
-      aout_info.symbol_map = NULL;
-    }
-  if (aout_info.output_syms != NULL)
-    {
-      free (aout_info.output_syms);
-      aout_info.output_syms = NULL;
-    }
+  free (aout_info.contents);
+  aout_info.contents = NULL;
+  free (aout_info.relocs);
+  aout_info.relocs = NULL;
+  free (aout_info.symbol_map);
+  aout_info.symbol_map = NULL;
+  free (aout_info.output_syms);
+  aout_info.output_syms = NULL;
   if (includes_hash_initialized)
     {
       bfd_hash_table_free (&aout_info.includes.root);
@@ -3926,29 +4093,37 @@ NAME (aout, final_link) (bfd *abfd,
   else if (obj_textsec (abfd)->reloc_count == 0
 	   && obj_datasec (abfd)->reloc_count == 0)
     {
-      bfd_byte b;
-
-      b = 0;
-      if (bfd_seek (abfd,
-		    (file_ptr) (obj_datasec (abfd)->filepos
-				+ exec_hdr (abfd)->a_data
-				- 1),
-		    SEEK_SET) != 0
-	  || bfd_bwrite (&b, (bfd_size_type) 1, abfd) != 1)
-	goto error_return;
+      /* The layout of a typical a.out file is header, text, data,
+	 relocs, symbols, string table.  When there are no relocs,
+	 symbols or string table, the last thing in the file is data
+	 and a_data may be rounded up.  However we may have a smaller
+	 sized .data section and thus not written final padding.  The
+	 same thing can happen with text if there is no data.  Write
+	 final padding here to extend the file.  */
+      file_ptr pos = 0;
+
+      if (exec_hdr (abfd)->a_data > obj_datasec (abfd)->size)
+	pos = obj_datasec (abfd)->filepos + exec_hdr (abfd)->a_data;
+      else if (obj_datasec (abfd)->size == 0
+	       && exec_hdr (abfd)->a_text > obj_textsec (abfd)->size)
+	pos = obj_textsec (abfd)->filepos + exec_hdr (abfd)->a_text;
+      if (pos != 0)
+	{
+	  bfd_byte b = 0;
+
+	  if (bfd_seek (abfd, pos - 1, SEEK_SET) != 0
+	      || bfd_bwrite (&b, (bfd_size_type) 1, abfd) != 1)
+	    goto error_return;
+	}
     }
 
   return TRUE;
 
  error_return:
-  if (aout_info.contents != NULL)
-    free (aout_info.contents);
-  if (aout_info.relocs != NULL)
-    free (aout_info.relocs);
-  if (aout_info.symbol_map != NULL)
-    free (aout_info.symbol_map);
-  if (aout_info.output_syms != NULL)
-    free (aout_info.output_syms);
+  free (aout_info.contents);
+  free (aout_info.relocs);
+  free (aout_info.symbol_map);
+  free (aout_info.output_syms);
   if (includes_hash_initialized)
     bfd_hash_table_free (&aout_info.includes.root);
   return FALSE;
@@ -3985,13 +4160,16 @@ aout_link_write_symbols (struct aout_fin
      discarding such symbols.  */
   if (strip != strip_all
       && (strip != strip_some
-	  || bfd_hash_lookup (flaginfo->info->keep_hash, input_bfd->filename,
+	  || bfd_hash_lookup (flaginfo->info->keep_hash,
+			      bfd_get_filename (input_bfd),
 			      FALSE, FALSE) != NULL)
       && discard != discard_all)
     {
       H_PUT_8 (output_bfd, N_TEXT, outsym->e_type);
+      H_PUT_8 (output_bfd, 0, outsym->e_ovly);
+      H_PUT_16 (output_bfd, 0, outsym->e_desc);
       strtab_index = add_to_stringtab (output_bfd, flaginfo->strtab,
-				       input_bfd->filename, FALSE);
+				       bfd_get_filename (input_bfd), FALSE);
       if (strtab_index == (bfd_size_type) -1)
 	return FALSE;
       PUT_WORD (output_bfd, strtab_index, outsym->e_strx);
@@ -4103,7 +4281,7 @@ aout_link_write_symbols (struct aout_fin
 	    case strip_none:
 	      break;
 	    case strip_debugger:
-	      if ((type & N_STAB) != 0)
+	      if (is_stab (type, name))
 		skip = TRUE;
 	      break;
 	    case strip_some:
@@ -4123,7 +4301,33 @@ aout_link_write_symbols (struct aout_fin
 	    }
 
 	  /* Get the value of the symbol.  */
-	  if ((type & N_TYPE) == N_TEXT
+	  if (is_stab (type, name))
+	    {
+	      switch (type)
+		{
+		default:
+		  symsec = bfd_abs_section_ptr;
+		  break;
+		case N_SO:
+		case N_SOL:
+		case N_FUN:
+		case N_ENTRY:
+		case N_SLINE:
+		case N_FN:
+		  symsec = obj_textsec (input_bfd);
+		  break;
+		case N_STSYM:
+		case N_DSLINE:
+		  symsec = obj_datasec (input_bfd);
+		  break;
+		case N_LCSYM:
+		case N_BSLINE:
+		  symsec = obj_bsssec (input_bfd);
+		  break;
+		}
+	      val = GET_WORD (input_bfd, sym->e_value);
+	    }
+	  else if ((type & N_TYPE) == N_TEXT
 	      || type == N_WEAKT)
 	    symsec = obj_textsec (input_bfd);
 	  else if ((type & N_TYPE) == N_DATA
@@ -4151,11 +4355,6 @@ aout_link_write_symbols (struct aout_fin
 	      val = GET_WORD (input_bfd, sym->e_value);
 	      symsec = NULL;
 	    }
-	  else if ((type & N_STAB) != 0)
-	    {
-	      val = GET_WORD (input_bfd, sym->e_value);
-	      symsec = NULL;
-	    }
 	  else
 	    {
 	      /* If we get here with an indirect symbol, it means that
@@ -4269,7 +4468,7 @@ aout_link_write_symbols (struct aout_fin
 		case discard_sec_merge:
 		  break;
 		case discard_l:
-		  if ((type & N_STAB) == 0
+		  if (!is_stab (type, name)
 		      && bfd_is_local_label_name (input_bfd, name))
 		    skip = TRUE;
 		  break;
@@ -4393,6 +4592,8 @@ aout_link_write_symbols (struct aout_fin
       /* Copy this symbol into the list of symbols we are going to
 	 write out.  */
       H_PUT_8 (output_bfd, type, outsym->e_type);
+      H_PUT_8 (output_bfd, H_GET_8 (input_bfd, sym->e_ovly), outsym->e_ovly);
+      H_PUT_16 (output_bfd, H_GET_16 (input_bfd, sym->e_desc), outsym->e_desc);
       copy = FALSE;
       if (! flaginfo->info->keep_memory)
 	{
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-arm.c ./bfd/pe-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-arm.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pe-arm.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for ARM PECOFF files.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-arm-wince.c ./bfd/pe-arm-wince.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-arm-wince.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pe-arm-wince.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for ARM WINCE PE files.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pef.c ./bfd/pef.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pef.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pef.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* PEF support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -446,12 +446,15 @@ bfd_pef_print_loader_section (bfd *abfd,
     return -1;
 
   loaderlen = loadersec->size;
-  loaderbuf = bfd_malloc (loaderlen);
+  if (loaderlen < 56)
+    return -1;
+  if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) != 0)
+    return -1;
+  loaderbuf = _bfd_malloc_and_read (abfd, loaderlen, loaderlen);
+  if (loaderbuf == NULL)
+    return -1;
 
-  if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) < 0
-      || bfd_bread ((void *) loaderbuf, loaderlen, abfd) != loaderlen
-      || loaderlen < 56
-      || bfd_pef_parse_loader_header (abfd, loaderbuf, 56, &header) < 0)
+  if (bfd_pef_parse_loader_header (abfd, loaderbuf, 56, &header) < 0)
     {
       free (loaderbuf);
       return -1;
@@ -477,14 +480,14 @@ bfd_pef_scan_start_address (bfd *abfd)
     goto end;
 
   loaderlen = loadersec->size;
-  loaderbuf = bfd_malloc (loaderlen);
-  if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) < 0)
+  if (loaderlen < 56)
     goto error;
-  if (bfd_bread ((void *) loaderbuf, loaderlen, abfd) != loaderlen)
+  if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) != 0)
     goto error;
-
-  if (loaderlen < 56)
+  loaderbuf = _bfd_malloc_and_read (abfd, loaderlen, loaderlen);
+  if (loaderbuf == NULL)
     goto error;
+
   ret = bfd_pef_parse_loader_header (abfd, loaderbuf, 56, &header);
   if (ret < 0)
     goto error;
@@ -502,13 +505,11 @@ bfd_pef_scan_start_address (bfd *abfd)
   abfd->start_address = section->vma + header.main_offset;
 
  end:
-  if (loaderbuf != NULL)
-    free (loaderbuf);
+  free (loaderbuf);
   return 0;
 
  error:
-  if (loaderbuf != NULL)
-    free (loaderbuf);
+  free (loaderbuf);
   return -1;
 }
 
@@ -586,7 +587,7 @@ bfd_pef_read_header (bfd *abfd, bfd_pef_
   return 0;
 }
 
-static const bfd_target *
+static bfd_cleanup
 bfd_pef_object_p (bfd *abfd)
 {
   bfd_pef_header header;
@@ -605,7 +606,7 @@ bfd_pef_object_p (bfd *abfd)
   if (bfd_pef_scan (abfd, &header, mdata))
     goto wrong;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  wrong:
   bfd_set_error (bfd_error_wrong_format);
@@ -753,6 +754,8 @@ bfd_pef_parse_function_stubs (bfd *abfd,
     (header.imported_library_count * sizeof (bfd_pef_imported_library));
   imports = bfd_malloc
     (header.total_imported_symbol_count * sizeof (bfd_pef_imported_symbol));
+  if (libraries == NULL || imports == NULL)
+    goto error;
 
   if (loaderlen < (56 + (header.imported_library_count * 24)))
     goto error;
@@ -799,7 +802,7 @@ bfd_pef_parse_function_stubs (bfd *abfd,
 	  codepos += 4;
 	}
 
-      if ((codepos + 4) > codelen)
+      if ((codepos + 24) > codelen)
 	break;
 
       ret = bfd_pef_parse_function_stub (abfd, codebuf + codepos, 24, &sym_index);
@@ -863,18 +866,14 @@ bfd_pef_parse_function_stubs (bfd *abfd,
   goto end;
 
  end:
-  if (libraries != NULL)
-    free (libraries);
-  if (imports != NULL)
-    free (imports);
+  free (libraries);
+  free (imports);
   *nsym = count;
   return 0;
 
  error:
-  if (libraries != NULL)
-    free (libraries);
-  if (imports != NULL)
-    free (imports);
+  free (libraries);
+  free (imports);
   *nsym = count;
   return -1;
 }
@@ -896,10 +895,10 @@ bfd_pef_parse_symbols (bfd *abfd, asymbo
   if (codesec != NULL)
     {
       codelen = codesec->size;
-      codebuf = bfd_malloc (codelen);
-      if (bfd_seek (abfd, codesec->filepos, SEEK_SET) < 0)
+      if (bfd_seek (abfd, codesec->filepos, SEEK_SET) != 0)
 	goto end;
-      if (bfd_bread ((void *) codebuf, codelen, abfd) != codelen)
+      codebuf = _bfd_malloc_and_read (abfd, codelen, codelen);
+      if (codebuf == NULL)
 	goto end;
     }
 
@@ -907,10 +906,10 @@ bfd_pef_parse_symbols (bfd *abfd, asymbo
   if (loadersec != NULL)
     {
       loaderlen = loadersec->size;
-      loaderbuf = bfd_malloc (loaderlen);
-      if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) < 0)
+      if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) != 0)
 	goto end;
-      if (bfd_bread ((void *) loaderbuf, loaderlen, abfd) != loaderlen)
+      loaderbuf = _bfd_malloc_and_read (abfd, loaderlen, loaderlen);
+      if (loaderbuf == NULL)
 	goto end;
     }
 
@@ -936,12 +935,8 @@ bfd_pef_parse_symbols (bfd *abfd, asymbo
     csym[count] = NULL;
 
  end:
-  if (codebuf != NULL)
-    free (codebuf);
-
-  if (loaderbuf != NULL)
-    free (loaderbuf);
-
+  free (codebuf);
+  free (loaderbuf);
   return count;
 }
 
@@ -1121,7 +1116,7 @@ bfd_pef_xlib_scan (bfd *abfd, bfd_pef_xl
   return 0;
 }
 
-static const bfd_target *
+static bfd_cleanup
 bfd_pef_xlib_object_p (bfd *abfd)
 {
   bfd_pef_xlib_header header;
@@ -1146,7 +1141,7 @@ bfd_pef_xlib_object_p (bfd *abfd)
       return NULL;
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 const bfd_target pef_xlib_vec =
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pef.h ./bfd/pef.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pef.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pef.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* PEF support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pef-traceback.h ./bfd/pef-traceback.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pef-traceback.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pef-traceback.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* PowerPC traceback table support for BFD.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-i386.c ./bfd/pe-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-i386.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pe-i386.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Intel 386 PECOFF files.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -23,7 +23,10 @@
 
 #define TARGET_SYM		i386_pe_vec
 #define TARGET_NAME		"pe-i386"
+#define TARGET_SYM_BIG		i386_pe_big_vec
+#define TARGET_NAME_BIG		"pe-bigobj-i386"
 #define COFF_WITH_PE
+#define COFF_WITH_PE_BIGOBJ
 #define PCRELOFFSET		TRUE
 #define TARGET_UNDERSCORE	'_'
 #define COFF_LONG_SECTION_NAMES
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-arm.c ./bfd/pei-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-arm.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pei-arm.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for arm PE IMAGE COFF files.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-arm-wince.c ./bfd/pei-arm-wince.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-arm-wince.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pei-arm-wince.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for ARM WINCE PE IMAGE COFF files.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/peicode.h ./bfd/peicode.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/peicode.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/peicode.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for the generic parts of PE/PEI, for BFD.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
    Written by Cygnus Solutions.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -122,7 +122,7 @@ typedef struct
 pe_ILF_vars;
 #endif /* COFF_IMAGE_WITH_PE */
 
-const bfd_target *coff_real_object_p
+bfd_cleanup coff_real_object_p
   (bfd *, unsigned, struct internal_filehdr *, struct internal_aouthdr *);
 
 #ifndef NO_COFF_RELOCS
@@ -257,7 +257,7 @@ static bfd_boolean
 pe_mkobject (bfd * abfd)
 {
   pe_data_type *pe;
-  bfd_size_type amt = sizeof (pe_data_type);
+  size_t amt = sizeof (pe_data_type);
 
   abfd->tdata.pe_obj_data = (struct pe_tdata *) bfd_zalloc (abfd, amt);
 
@@ -622,6 +622,7 @@ pe_ILF_make_a_section (pe_ILF_vars * var
 {
   asection_ptr sec;
   flagword     flags;
+  intptr_t alignment;
 
   sec = bfd_make_section_old_way (vars->abfd, name);
   if (sec == NULL)
@@ -652,20 +653,18 @@ pe_ILF_make_a_section (pe_ILF_vars * var
   if (size & 1)
     vars->data --;
 
-# if (GCC_VERSION >= 3000)
   /* PR 18758: See note in pe_ILF_buid_a_bfd.  We must make sure that we
-     preserve host alignment requirements.  We test 'size' rather than
-     vars.data as we cannot perform binary arithmetic on pointers.  We assume
-     that vars.data was sufficiently aligned upon entry to this function.
-     The BFD_ASSERTs in this functions will warn us if we run out of room,
-     but we should already have enough padding built in to ILF_DATA_SIZE.  */
-  {
-    unsigned int alignment = __alignof__ (struct coff_section_tdata);
-
-    if (size & (alignment - 1))
-      vars->data += alignment - (size & (alignment - 1));
-  }
+     preserve host alignment requirements.  The BFD_ASSERTs in this
+     functions will warn us if we run out of room, but we should
+     already have enough padding built in to ILF_DATA_SIZE.  */
+#if GCC_VERSION >= 3000
+  alignment = __alignof__ (struct coff_section_tdata);
+#else
+  alignment = 8;
 #endif
+  vars->data
+    = (bfd_byte *) (((intptr_t) vars->data + alignment - 1) & -alignment);
+
   /* Create a coff_section_tdata structure for our use.  */
   sec->used_by_bfd = (struct coff_section_tdata *) vars->data;
   vars->data += sizeof (struct coff_section_tdata);
@@ -779,6 +778,7 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
   asection_ptr		   id4, id5, id6 = NULL, text = NULL;
   coff_symbol_type **	   imp_sym;
   unsigned int		   imp_index;
+  intptr_t alignment;
 
   /* Decode and verify the types field of the ILF structure.  */
   import_type = types & 0x3;
@@ -874,23 +874,17 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
 
   /* The remaining space in bim->buffer is used
      by the pe_ILF_make_a_section() function.  */
-# if (GCC_VERSION >= 3000)
+
   /* PR 18758: Make sure that the data area is sufficiently aligned for
-     pointers on the host.  __alignof__ is a gcc extension, hence the test
-     above.  For other compilers we will have to assume that the alignment is
-     unimportant, or else extra code can be added here and in
-     pe_ILF_make_a_section.
-
-     Note - we cannot test 'ptr' directly as it is illegal to perform binary
-     arithmetic on pointers, but we know that the strings section is the only
-     one that might end on an unaligned boundary.  */
-  {
-    unsigned int alignment = __alignof__ (char *);
-
-    if (SIZEOF_ILF_STRINGS & (alignment - 1))
-      ptr += alignment - (SIZEOF_ILF_STRINGS & (alignment - 1));
-  }
+     struct coff_section_tdata.  __alignof__ is a gcc extension, hence
+     the test of GCC_VERSION.  For other compilers we assume 8 byte
+     alignment.  */
+#if GCC_VERSION >= 3000
+  alignment = __alignof__ (struct coff_section_tdata);
+#else
+  alignment = 8;
 #endif
+  ptr = (bfd_byte *) (((intptr_t) ptr + alignment - 1) & -alignment);
 
   vars.data = ptr;
   vars.abfd = abfd;
@@ -1133,8 +1127,7 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
   return TRUE;
 
  error_return:
-  if (vars.bim->buffer != NULL)
-    free (vars.bim->buffer);
+  free (vars.bim->buffer);
   free (vars.bim);
   return FALSE;
 }
@@ -1142,7 +1135,7 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
 /* We have detected a Image Library Format archive element.
    Decode the element and return the appropriate target.  */
 
-static const bfd_target *
+static bfd_cleanup
 pe_ILF_object_p (bfd * abfd)
 {
   bfd_byte	  buffer[14];
@@ -1273,16 +1266,10 @@ pe_ILF_object_p (bfd * abfd)
   /* ptr += 2; */
 
   /* Now read in the two strings that follow.  */
-  ptr = (bfd_byte *) bfd_alloc (abfd, size);
+  ptr = (bfd_byte *) _bfd_alloc_and_read (abfd, size, size);
   if (ptr == NULL)
     return NULL;
 
-  if (bfd_bread (ptr, size, abfd) != size)
-    {
-      bfd_release (abfd, ptr);
-      return NULL;
-    }
-
   symbol_name = (char *) ptr;
   /* See PR 20905 for an example of where the strnlen is necessary.  */
   source_dll  = symbol_name + strnlen (symbol_name, size - 1) + 1;
@@ -1306,7 +1293,7 @@ pe_ILF_object_p (bfd * abfd)
       return NULL;
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 static void
@@ -1356,8 +1343,7 @@ pe_bfd_read_buildid (bfd *abfd)
   /* Read the whole section. */
   if (!bfd_malloc_and_get_section (abfd, section, &data))
     {
-      if (data != NULL)
-	free (data);
+      free (data);
       return;
     }
 
@@ -1396,9 +1382,11 @@ pe_bfd_read_buildid (bfd *abfd)
 	  break;
 	}
     }
+
+  free (data);
 }
 
-static const bfd_target *
+static bfd_cleanup
 pe_bfd_object_p (bfd * abfd)
 {
   bfd_byte buffer[6];
@@ -1406,9 +1394,9 @@ pe_bfd_object_p (bfd * abfd)
   struct external_PEI_IMAGE_hdr image_hdr;
   struct internal_filehdr internal_f;
   struct internal_aouthdr internal_a;
-  file_ptr opt_hdr_size;
+  bfd_size_type opt_hdr_size;
   file_ptr offset;
-  const bfd_target *result;
+  bfd_cleanup result;
 
   /* Detect if this a Microsoft Import Library Format element.  */
   /* First read the beginning of the header.  */
@@ -1492,12 +1480,11 @@ pe_bfd_object_p (bfd * abfd)
       if (amt < sizeof (PEAOUTHDR))
 	amt = sizeof (PEAOUTHDR);
 
-      opthdr = bfd_zalloc (abfd, amt);
+      opthdr = _bfd_alloc_and_read (abfd, amt, opt_hdr_size);
       if (opthdr == NULL)
 	return NULL;
-      if (bfd_bread (opthdr, opt_hdr_size, abfd)
-	  != (bfd_size_type) opt_hdr_size)
-	return NULL;
+      if (amt > opt_hdr_size)
+	memset (opthdr + opt_hdr_size, 0, amt - opt_hdr_size);
 
       bfd_set_error (bfd_error_no_error);
       bfd_coff_swap_aouthdr_in (abfd, opthdr, & internal_a);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-i386.c ./bfd/pei-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-i386.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pei-i386.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Intel 386 PE IMAGE COFF files.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-ia64.c ./bfd/pei-ia64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-ia64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pei-ia64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for HP/Intel IA-64 PE IMAGE COFF files.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
    Contributed by David Mosberger <davidm@hpl.hp.com>
 
    This implementation only supports objcopy to ouput IA-64 PE IMAGE COFF
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-mcore.c ./bfd/pei-mcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-mcore.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pei-mcore.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for MCore PECOFF files.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-ppc.c ./bfd/pei-ppc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-ppc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pei-ppc.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,50 +0,0 @@
-/* BFD back-end for PowerPC PE IMAGE COFF files.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
-
-   This file is part of BFD, the Binary File Descriptor library.
-
-   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, write to the Free Software
-   Foundation, 51 Franklin Street - Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "sysdep.h"
-#include "bfd.h"
-
-/* setting up for a PE environment stolen directly from the i386 structure */
-#define E_FILNMLEN	18	/* # characters in a file name		*/
-
-#define PPC_PE
-
-#define TARGET_LITTLE_SYM   powerpc_pei_le_vec
-#define TARGET_LITTLE_NAME "pei-powerpcle"
-
-#define TARGET_BIG_SYM      powerpc_pei_vec
-#define TARGET_BIG_NAME    "pei-powerpc"
-
-#define COFF_IMAGE_WITH_PE
-#define COFF_WITH_PE
-
-/* Long section names not allowed in executable images, only object files.  */
-#define COFF_LONG_SECTION_NAMES 0
-
-/* FIXME: Verify PCRELOFFSET is always false */
-
-/* FIXME: This target no longer works.  Search for POWERPC_LE_PE in
-   coff-ppc.c and peigen.c.  */
-
-#ifndef bfd_pe_print_pdata
-#define bfd_pe_print_pdata	NULL
-#endif
-
-#include "coff-ppc.c"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-sh.c ./bfd/pei-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-sh.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pei-sh.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for SH PE IMAGE COFF files.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-x86_64.c ./bfd/pei-x86_64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pei-x86_64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pei-x86_64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Intel 386 PE IMAGE COFF files.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-mcore.c ./bfd/pe-mcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-mcore.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pe-mcore.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for MCore PECOFF files.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-ppc.c ./bfd/pe-ppc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-ppc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pe-ppc.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,47 +0,0 @@
-/* BFD back-end for PowerPC PECOFF files.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
-
-   This file is part of BFD, the Binary File Descriptor library.
-
-   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, write to the Free Software
-   Foundation, 51 Franklin Street - Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-#include "sysdep.h"
-#include "bfd.h"
-
-#define E_FILENMLEN     18
-
-#define PPC_PE
-
-#define TARGET_LITTLE_SYM   powerpc_pe_le_vec
-#define TARGET_LITTLE_NAME "pe-powerpcle"
-
-#define TARGET_BIG_SYM      powerpc_pe_vec
-#define TARGET_BIG_NAME    "pe-powerpc"
-
-#define COFF_WITH_PE
-
-#define COFF_LONG_SECTION_NAMES
-
-/* FIXME: verify PCRELOFFSET is always false */
-
-/* FIXME: This target no longer works.  Search for POWERPC_LE_PE in
-   coff-ppc.c and peigen.c.  */
-
-#ifndef bfd_pe_print_pdata
-#define bfd_pe_print_pdata	NULL
-#endif
-
-#include "coff-ppc.c"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-sh.c ./bfd/pe-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-sh.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pe-sh.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for SH PECOFF files.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-x86_64.c ./bfd/pe-x86_64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/pe-x86_64.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/pe-x86_64.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Intel/AMD x86_64 PECOFF files.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -25,6 +25,8 @@
 
 #define TARGET_SYM		x86_64_pe_vec
 #define TARGET_NAME		"pe-x86-64"
+#define TARGET_SYM_BIG		x86_64_pe_big_vec
+#define TARGET_NAME_BIG		"pe-bigobj-x86-64"
 #define COFF_WITH_PE
 #define COFF_WITH_pex64
 #define COFF_WITH_PE_BIGOBJ
@@ -66,67 +68,3 @@ extern bfd_boolean pex64_bfd_print_pdata
 
 #include "coff-x86_64.c"
 
-/* Entry for big object files.  */
-
-const bfd_target
-x86_64_pe_be_vec =
-{
-  "pe-bigobj-x86-64",			/* Name.  */
-  bfd_target_coff_flavour,
-  BFD_ENDIAN_LITTLE,		/* Data byte order is little.  */
-  BFD_ENDIAN_LITTLE,		/* Header byte order is little.  */
-
-  (HAS_RELOC | EXEC_P		/* Object flags.  */
-   | HAS_LINENO | HAS_DEBUG
-   | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS),
-
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* Section flags.  */
-   | SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_READONLY | SEC_DEBUGGING
-   | SEC_CODE | SEC_DATA | SEC_EXCLUDE ),
-
-  TARGET_UNDERSCORE,		/* Leading underscore.  */
-  '/',				/* Ar_pad_char.  */
-  15,				/* Ar_max_namelen.  */
-  0,				/* match priority.  */
-
-  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
-     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data.  */
-  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
-     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Hdrs.  */
-
-  /* Note that we allow an object file to be treated as a core file as well.  */
-  {				/* bfd_check_format.  */
-    _bfd_dummy_target,
-    amd64coff_object_p,
-    bfd_generic_archive_p,
-    amd64coff_object_p
-  },
-  {				/* bfd_set_format.  */
-    _bfd_bool_bfd_false_error,
-    coff_mkobject,
-    _bfd_generic_mkarchive,
-    _bfd_bool_bfd_false_error
-  },
-  {				/* bfd_write_contents.  */
-    _bfd_bool_bfd_false_error,
-    coff_write_object_contents,
-    _bfd_write_archive_contents,
-    _bfd_bool_bfd_false_error
-  },
-
-  BFD_JUMP_TABLE_GENERIC (coff),
-  BFD_JUMP_TABLE_COPY (coff),
-  BFD_JUMP_TABLE_CORE (_bfd_nocore),
-  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
-  BFD_JUMP_TABLE_SYMBOLS (coff),
-  BFD_JUMP_TABLE_RELOCS (coff),
-  BFD_JUMP_TABLE_WRITE (coff),
-  BFD_JUMP_TABLE_LINK (coff),
-  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
-
-  NULL,
-
-  &bigobj_swap_table
-};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/peXXigen.c ./bfd/peXXigen.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/peXXigen.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/peXXigen.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for the generic parts of PE/PEI; the common executable parts.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
    Written by Cygnus Solutions.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -105,12 +105,6 @@
 #define HighBitSet(val)      ((val) & 0x80000000)
 #define SetHighBit(val)      ((val) | 0x80000000)
 #define WithoutHighBit(val)  ((val) & 0x7fffffff)
-
-/* FIXME: This file has various tests of POWERPC_LE_PE.  Those tests
-   worked when the code was in peicode.h, but no longer work now that
-   the code is in peigen.c.  PowerPC NT is said to be dead.  If
-   anybody wants to revive the code, you will have to figure out how
-   to handle those issues.  */
 
 void
 _bfd_XXi_swap_sym_in (bfd * abfd, void * ext1, void * in1)
@@ -177,25 +171,25 @@ _bfd_XXi_swap_sym_in (bfd * abfd, void *
 	  int unused_section_number = 0;
 	  asection *sec;
 	  flagword flags;
+	  size_t name_len;
+	  char *sec_name;
 
 	  for (sec = abfd->sections; sec; sec = sec->next)
 	    if (unused_section_number <= sec->target_index)
 	      unused_section_number = sec->target_index + 1;
 
-	  if (name == namebuf)
+	  name_len = strlen (name) + 1;
+	  sec_name = bfd_alloc (abfd, name_len);
+	  if (sec_name == NULL)
 	    {
-	      name = (const char *) bfd_alloc (abfd, strlen (namebuf) + 1);
-	      if (name == NULL)
-		{
-		  _bfd_error_handler (_("%pB: out of memory creating name for empty section"),
-				      abfd);
-		  return;
-		}
-	      strcpy ((char *) name, namebuf);
+	      _bfd_error_handler (_("%pB: out of memory creating name "
+				    "for empty section"), abfd);
+	      return;
 	    }
+	  memcpy (sec_name, name, name_len);
 
 	  flags = SEC_HAS_CONTENTS | SEC_ALLOC | SEC_DATA | SEC_LOAD;
-	  sec = bfd_make_section_anyway_with_flags (abfd, name, flags);
+	  sec = bfd_make_section_anyway_with_flags (abfd, sec_name, flags);
 	  if (sec == NULL)
 	    {
 	      _bfd_error_handler (_("%pB: unable to create fake empty section"),
@@ -222,12 +216,6 @@ _bfd_XXi_swap_sym_in (bfd * abfd, void *
       in->n_sclass = C_STAT;
     }
 #endif
-
-#ifdef coff_swap_sym_in_hook
-  /* This won't work in peigen.c, but since it's for PPC PE, it's not
-     worth fixing.  */
-  coff_swap_sym_in_hook (abfd, ext1, in1);
-#endif
 }
 
 static bfd_boolean
@@ -592,15 +580,6 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd,
       aouthdr_int->data_start &= 0xffffffff;
     }
 #endif
-
-#ifdef POWERPC_LE_PE
-  /* These three fields are normally set up by ppc_relocate_section.
-     In the case of reading a file in, we can pick them up from the
-     DataDirectory.  */
-  first_thunk_address = a->DataDirectory[PE_IMPORT_ADDRESS_TABLE].VirtualAddress;
-  thunk_size = a->DataDirectory[PE_IMPORT_ADDRESS_TABLE].Size;
-  import_table_size = a->DataDirectory[PE_IMPORT_TABLE].Size;
-#endif
 }
 
 /* A support function for below.  */
@@ -876,10 +855,10 @@ _bfd_XXi_only_swap_filehdr_out (bfd * ab
 
   /* Use a real timestamp by default, unless the no-insert-timestamp
      option was chosen.  */
-  if ((pe_data (abfd)->insert_timestamp))
+  if ((pe_data (abfd)->timestamp) == -1)
     H_PUT_32 (abfd, time (0), filehdr_out->f_timdat);
   else
-    H_PUT_32 (abfd, 0, filehdr_out->f_timdat);
+    H_PUT_32 (abfd, pe_data (abfd)->timestamp, filehdr_out->f_timdat);
 
   PUT_FILEHDR_SYMPTR (abfd, filehdr_in->f_symptr,
 		      filehdr_out->f_symptr);
@@ -1010,7 +989,7 @@ _bfd_XXi_swap_scnhdr_out (bfd * abfd, vo
        (0x02000000).  Also, the resource data should also be read and
        writable.  */
 
-    /* FIXME: Alignment is also encoded in this field, at least on PPC and
+    /* FIXME: Alignment is also encoded in this field, at least on
        ARM-WINCE.  Although - how do we get the original alignment field
        back ?  */
 
@@ -1147,15 +1126,21 @@ CODEVIEW_INFO *
 _bfd_XXi_slurp_codeview_record (bfd * abfd, file_ptr where, unsigned long length, CODEVIEW_INFO *cvinfo)
 {
   char buffer[256+1];
+  bfd_size_type nread;
 
   if (bfd_seek (abfd, where, SEEK_SET) != 0)
     return NULL;
 
-  if (bfd_bread (buffer, 256, abfd) < 4)
+  if (length <= sizeof (CV_INFO_PDB70) && length <= sizeof (CV_INFO_PDB20))
+    return NULL;
+  if (length > 256)
+    length = 256;
+  nread = bfd_bread (buffer, length, abfd);
+  if (length != nread)
     return NULL;
 
   /* Ensure null termination of filename.  */
-  buffer[256] = '\0';
+  memset (buffer + nread, 0, sizeof (buffer) - nread);
 
   cvinfo->CVSignature = H_GET_32 (abfd, buffer);
   cvinfo->Age = 0;
@@ -1176,7 +1161,7 @@ _bfd_XXi_slurp_codeview_record (bfd * ab
       memcpy (&(cvinfo->Signature[8]), &(cvinfo70->Signature[8]), 8);
 
       cvinfo->SignatureLength = CV_INFO_SIGNATURE_LENGTH;
-      // cvinfo->PdbFileName = cvinfo70->PdbFileName;
+      /* cvinfo->PdbFileName = cvinfo70->PdbFileName;  */
 
       return cvinfo;
     }
@@ -1187,7 +1172,7 @@ _bfd_XXi_slurp_codeview_record (bfd * ab
       cvinfo->Age = H_GET_32(abfd, cvinfo20->Age);
       memcpy (cvinfo->Signature, cvinfo20->Signature, 4);
       cvinfo->SignatureLength = 4;
-      // cvinfo->PdbFileName = cvinfo20->PdbFileName;
+      /* cvinfo->PdbFileName = cvinfo20->PdbFileName;  */
 
       return cvinfo;
     }
@@ -1250,14 +1235,6 @@ static char * dir_names[IMAGE_NUMBEROF_D
   N_("Reserved")
 };
 
-#ifdef POWERPC_LE_PE
-/* The code for the PPC really falls in the "architecture dependent"
-   category.  However, it's not clear that anyone will ever care, so
-   we're ignoring the issue for now; if/when PPC matters, some of this
-   may need to go into peicode.h, or arguments passed to enable the
-   PPC- specific code.  */
-#endif
-
 static bfd_boolean
 pe_print_idata (bfd * abfd, void * vfile)
 {
@@ -1265,11 +1242,6 @@ pe_print_idata (bfd * abfd, void * vfile
   bfd_byte *data;
   asection *section;
   bfd_signed_vma adj;
-
-#ifdef POWERPC_LE_PE
-  asection *rel_section = bfd_get_section_by_name (abfd, ".reldata");
-#endif
-
   bfd_size_type datasize = 0;
   bfd_size_type dataoff;
   bfd_size_type i;
@@ -1325,59 +1297,6 @@ pe_print_idata (bfd * abfd, void * vfile
 
   dataoff = addr - section->vma;
 
-#ifdef POWERPC_LE_PE
-  if (rel_section != 0 && rel_section->size != 0)
-    {
-      /* The toc address can be found by taking the starting address,
-	 which on the PPC locates a function descriptor. The
-	 descriptor consists of the function code starting address
-	 followed by the address of the toc. The starting address we
-	 get from the bfd, and the descriptor is supposed to be in the
-	 .reldata section.  */
-
-      bfd_vma loadable_toc_address;
-      bfd_vma toc_address;
-      bfd_vma start_address;
-      bfd_byte *data;
-      bfd_vma offset;
-
-      if (!bfd_malloc_and_get_section (abfd, rel_section, &data))
-	{
-	  if (data != NULL)
-	    free (data);
-	  return FALSE;
-	}
-
-      offset = abfd->start_address - rel_section->vma;
-
-      if (offset >= rel_section->size || offset + 8 > rel_section->size)
-	{
-	  if (data != NULL)
-	    free (data);
-	  return FALSE;
-	}
-
-      start_address = bfd_get_32 (abfd, data + offset);
-      loadable_toc_address = bfd_get_32 (abfd, data + offset + 4);
-      toc_address = loadable_toc_address - 32768;
-
-      fprintf (file,
-	       _("\nFunction descriptor located at the start address: %04lx\n"),
-	       (unsigned long int) (abfd->start_address));
-      fprintf (file,
-	       /* xgettext:c-format */
-	       _("\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"),
-	       start_address, loadable_toc_address, toc_address);
-      if (data != NULL)
-	free (data);
-    }
-  else
-    {
-      fprintf (file,
-	       _("\nNo reldata section! Function descriptor not decoded.\n"));
-    }
-#endif
-
   fprintf (file,
 	   _("\nThe Import Tables (interpreted %s section contents)\n"),
 	   section->name);
@@ -1389,8 +1308,7 @@ pe_print_idata (bfd * abfd, void * vfile
   /* Read the whole section.  Some of the fields might be before dataoff.  */
   if (!bfd_malloc_and_get_section (abfd, section, &data))
     {
-      if (data != NULL)
-	free (data);
+      free (data);
       return FALSE;
     }
 
@@ -1935,8 +1853,7 @@ pe_print_pdata (bfd * abfd, void * vfile
 
   if (! bfd_malloc_and_get_section (abfd, section, &data))
     {
-      if (data != NULL)
-	free (data);
+      free (data);
       return FALSE;
     }
 
@@ -1984,33 +1901,6 @@ pe_print_pdata (bfd * abfd, void * vfile
       bfd_fprintf_vma (abfd, file, prolog_end_addr);
       fprintf (file, "   %x", em_data);
 #endif
-
-#ifdef POWERPC_LE_PE
-      if (eh_handler == 0 && eh_data != 0)
-	{
-	  /* Special bits here, although the meaning may be a little
-	     mysterious. The only one I know for sure is 0x03
-	     Code Significance
-	     0x00 None
-	     0x01 Register Save Millicode
-	     0x02 Register Restore Millicode
-	     0x03 Glue Code Sequence.  */
-	  switch (eh_data)
-	    {
-	    case 0x01:
-	      fprintf (file, _(" Register save millicode"));
-	      break;
-	    case 0x02:
-	      fprintf (file, _(" Register restore millicode"));
-	      break;
-	    case 0x03:
-	      fprintf (file, _(" Glue code sequence"));
-	      break;
-	    default:
-	      break;
-	    }
-	}
-#endif
       fprintf (file, "\n");
     }
 
@@ -2119,8 +2009,7 @@ _bfd_XX_print_ce_compressed_pdata (bfd *
 
   if (! bfd_malloc_and_get_section (abfd, section, &data))
     {
-      if (data != NULL)
-	free (data);
+      free (data);
       return FALSE;
     }
 
@@ -2235,8 +2124,7 @@ pe_print_reloc (bfd * abfd, void * vfile
 
   if (! bfd_malloc_and_get_section (abfd, section, &data))
     {
-      if (data != NULL)
-	free (data);
+      free (data);
       return FALSE;
     }
 
@@ -2543,8 +2431,7 @@ rsrc_print_section (bfd * abfd, void * v
 
   if (! bfd_malloc_and_get_section (abfd, section, & data))
     {
-      if (data != NULL)
-	free (data);
+      free (data);
       return FALSE;
     }
 
@@ -2603,7 +2490,7 @@ rsrc_print_section (bfd * abfd, void * v
   return TRUE;
 }
 
-#define IMAGE_NUMBEROF_DEBUG_TYPES 12
+#define IMAGE_NUMBEROF_DEBUG_TYPES 17
 
 static char * debug_type_names[IMAGE_NUMBEROF_DEBUG_TYPES] =
 {
@@ -2619,6 +2506,11 @@ static char * debug_type_names[IMAGE_NUM
   "Borland",
   "Reserved",
   "CLSID",
+  "Feature",
+  "CoffGrp",
+  "ILTCG",
+  "MPX",
+  "Repro",
 };
 
 static bfd_boolean
@@ -2630,7 +2522,7 @@ pe_print_debugdata (bfd * abfd, void * v
   asection *section;
   bfd_byte *data = 0;
   bfd_size_type dataoff;
-  unsigned int i;
+  unsigned int i, j;
 
   bfd_vma addr = extra->DataDirectory[PE_DEBUG_DATA].VirtualAddress;
   bfd_size_type size = extra->DataDirectory[PE_DEBUG_DATA].Size;
@@ -2683,8 +2575,7 @@ pe_print_debugdata (bfd * abfd, void * v
   /* Read the whole section.  */
   if (!bfd_malloc_and_get_section (abfd, section, &data))
     {
-      if (data != NULL)
-	free (data);
+      free (data);
       return FALSE;
     }
 
@@ -2722,8 +2613,8 @@ pe_print_debugdata (bfd * abfd, void * v
 					       idd.SizeOfData, cvinfo))
 	    continue;
 
-	  for (i = 0; i < cvinfo->SignatureLength; i++)
-	    sprintf (&signature[i*2], "%02x", cvinfo->Signature[i] & 0xff);
+	  for (j = 0; j < cvinfo->SignatureLength; j++)
+	    sprintf (&signature[j*2], "%02x", cvinfo->Signature[j] & 0xff);
 
 	  /* xgettext:c-format */
 	  fprintf (file, _("(format %c%c%c%c signature %s age %ld)\n"),
@@ -2732,6 +2623,8 @@ pe_print_debugdata (bfd * abfd, void * v
 	}
     }
 
+  free(data);
+
   if (size % sizeof (struct external_IMAGE_DEBUG_DIRECTORY) != 0)
     fprintf (file,
 	    _("The debug directory size is not a multiple of the debug directory entry size\n"));
@@ -2739,6 +2632,70 @@ pe_print_debugdata (bfd * abfd, void * v
   return TRUE;
 }
 
+static bfd_boolean
+pe_is_repro (bfd * abfd)
+{
+  pe_data_type *pe = pe_data (abfd);
+  struct internal_extra_pe_aouthdr *extra = &pe->pe_opthdr;
+  asection *section;
+  bfd_byte *data = 0;
+  bfd_size_type dataoff;
+  unsigned int i;
+  bfd_boolean res = FALSE;
+
+  bfd_vma addr = extra->DataDirectory[PE_DEBUG_DATA].VirtualAddress;
+  bfd_size_type size = extra->DataDirectory[PE_DEBUG_DATA].Size;
+
+  if (size == 0)
+    return FALSE;
+
+  addr += extra->ImageBase;
+  for (section = abfd->sections; section != NULL; section = section->next)
+    {
+      if ((addr >= section->vma) && (addr < (section->vma + section->size)))
+	break;
+    }
+
+  if ((section == NULL)
+      || (!(section->flags & SEC_HAS_CONTENTS))
+      || (section->size < size))
+    {
+      return FALSE;
+    }
+
+  dataoff = addr - section->vma;
+
+  if (size > (section->size - dataoff))
+    {
+      return FALSE;
+    }
+
+  if (!bfd_malloc_and_get_section (abfd, section, &data))
+    {
+      free (data);
+      return FALSE;
+    }
+
+  for (i = 0; i < size / sizeof (struct external_IMAGE_DEBUG_DIRECTORY); i++)
+    {
+      struct external_IMAGE_DEBUG_DIRECTORY *ext
+	= &((struct external_IMAGE_DEBUG_DIRECTORY *)(data + dataoff))[i];
+      struct internal_IMAGE_DEBUG_DIRECTORY idd;
+
+      _bfd_XXi_swap_debugdir_in (abfd, ext, &idd);
+
+      if (idd.Type == PE_IMAGE_DEBUG_TYPE_REPRO)
+        {
+          res = TRUE;
+          break;
+        }
+    }
+
+  free(data);
+
+  return res;
+}
+
 /* Print out the program headers.  */
 
 bfd_boolean
@@ -2770,11 +2727,21 @@ _bfd_XX_print_private_bfd_data_common (b
   PF (IMAGE_FILE_BYTES_REVERSED_HI, "big endian");
 #undef PF
 
-  /* ctime implies '\n'.  */
-  {
-    time_t t = pe->coff.timestamp;
-    fprintf (file, "\nTime/Date\t\t%s", ctime (&t));
-  }
+  /*
+    If a PE_IMAGE_DEBUG_TYPE_REPRO entry is present in the debug directory, the
+    timestamp is to be interpreted as the hash of a reproducible build.
+  */
+  if (pe_is_repro (abfd))
+    {
+      fprintf (file, "\nTime/Date\t\t%08lx", pe->coff.timestamp);
+      fprintf (file, "\t(This is a reproducible build file hash, not a timestamp)\n");
+    }
+  else
+    {
+      /* ctime implies '\n'.  */
+      time_t t = pe->coff.timestamp;
+      fprintf (file, "\nTime/Date\t\t%s", ctime (&t));
+    }
 
 #ifndef IMAGE_NT_OPTIONAL_HDR_MAGIC
 # define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
@@ -2857,7 +2824,7 @@ _bfd_XX_print_private_bfd_data_common (b
     case IMAGE_SUBSYSTEM_WINDOWS_CE_GUI:
       subsystem_name = "Wince CUI";
       break;
-    // These are from UEFI Platform Initialization Specification 1.1.
+    /* These are from UEFI Platform Initialization Specification 1.1.  */
     case IMAGE_SUBSYSTEM_EFI_APPLICATION:
       subsystem_name = "EFI application";
       break;
@@ -2870,11 +2837,11 @@ _bfd_XX_print_private_bfd_data_common (b
     case IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER:
       subsystem_name = "SAL runtime driver";
       break;
-    // This is from revision 8.0 of the MS PE/COFF spec
+    /* This is from revision 8.0 of the MS PE/COFF spec  */
     case IMAGE_SUBSYSTEM_XBOX:
       subsystem_name = "XBOX";
       break;
-    // Added default case for clarity - subsystem_name is NULL anyway.
+    /* Added default case for clarity - subsystem_name is NULL anyway.  */
     default:
       subsystem_name = NULL;
     }
@@ -2976,29 +2943,33 @@ _bfd_XX_bfd_copy_private_bfd_data_common
     {
       bfd_vma addr = ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].VirtualAddress
 	+ ope->pe_opthdr.ImageBase;
-      asection *section = find_section_by_vma (obfd, addr);
+      /* In particular a .buildid section may overlap (in VA space) with
+	 whatever section comes ahead of it (largely because of section->size
+	 representing s_size, not virt_size).  Therefore don't look for the
+	 section containing the first byte, but for that covering the last
+	 one.  */
+      bfd_vma last = addr + ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size - 1;
+      asection *section = find_section_by_vma (obfd, last);
       bfd_byte *data;
 
+      /* PR 17512: file: 0f15796a.  */
+      if (section && addr < section->vma)
+	{
+	  /* xgettext:c-format */
+	  _bfd_error_handler
+	    (_("%pB: Data Directory (%lx bytes at %" PRIx64 ") "
+	       "extends across section boundary at %" PRIx64),
+	     obfd, ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size,
+	     (uint64_t) addr, (uint64_t) section->vma);
+	  return FALSE;
+	}
+
       if (section && bfd_malloc_and_get_section (obfd, section, &data))
 	{
 	  unsigned int i;
 	  struct external_IMAGE_DEBUG_DIRECTORY *dd =
 	    (struct external_IMAGE_DEBUG_DIRECTORY *)(data + (addr - section->vma));
 
-	  /* PR 17512: file: 0f15796a.  */
-	  if ((unsigned long) ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size
-	      > section->size - (addr - section->vma))
-	    {
-	      /* xgettext:c-format */
-	      _bfd_error_handler
-		(_("%pB: Data Directory size (%lx) "
-		   "exceeds space left in section (%" PRIx64 ")"),
-		 obfd, ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size,
-		 (uint64_t) (section->size - (addr - section->vma)));
-	      free (data);
-	      return FALSE;
-	    }
-
 	  for (i = 0; i < ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size
 		 / sizeof (struct external_IMAGE_DEBUG_DIRECTORY); i++)
 	    {
@@ -3056,7 +3027,7 @@ _bfd_XX_bfd_copy_private_section_data (b
     {
       if (coff_section_data (obfd, osec) == NULL)
 	{
-	  bfd_size_type amt = sizeof (struct coff_section_tdata);
+	  size_t amt = sizeof (struct coff_section_tdata);
 	  osec->used_by_bfd = bfd_zalloc (obfd, amt);
 	  if (osec->used_by_bfd == NULL)
 	    return FALSE;
@@ -3064,7 +3035,7 @@ _bfd_XX_bfd_copy_private_section_data (b
 
       if (pei_section_data (obfd, osec) == NULL)
 	{
-	  bfd_size_type amt = sizeof (struct pei_section_tdata);
+	  size_t amt = sizeof (struct pei_section_tdata);
 	  coff_section_data (obfd, osec)->tdata = bfd_zalloc (obfd, amt);
 	  if (coff_section_data (obfd, osec)->tdata == NULL)
 	    return FALSE;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/plugin.c ./bfd/plugin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/plugin.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/plugin.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Plugin support for BFD.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -124,13 +124,37 @@ message (int level ATTRIBUTE_UNUSED,
   return LDPS_OK;
 }
 
+struct plugin_list_entry
+{
+  /* These must be initialized for each IR object with LTO wrapper.  */
+  ld_plugin_claim_file_handler claim_file;
+  ld_plugin_all_symbols_read_handler all_symbols_read;
+  ld_plugin_all_symbols_read_handler cleanup_handler;
+  bfd_boolean has_symbol_type;
+
+  struct plugin_list_entry *next;
+
+  /* These can be reused for all IR objects.  */
+  const char *plugin_name;
+};
+
+static const char *plugin_program_name;
+
+void
+bfd_plugin_set_program_name (const char *program_name)
+{
+  plugin_program_name = program_name;
+}
+
+static struct plugin_list_entry *plugin_list = NULL;
+static struct plugin_list_entry *current_plugin = NULL;
+
 /* Register a claim-file handler. */
-static ld_plugin_claim_file_handler claim_file = NULL;
 
 static enum ld_plugin_status
 register_claim_file (ld_plugin_claim_file_handler handler)
 {
-  claim_file = handler;
+  current_plugin->claim_file = handler;
   return LDPS_OK;
 }
 
@@ -143,6 +167,9 @@ add_symbols (void * handle,
   struct plugin_data_struct *plugin_data =
     bfd_alloc (abfd, sizeof (plugin_data_struct));
 
+  if (!plugin_data)
+    return LDPS_ERR;
+
   plugin_data->nsyms = nsyms;
   plugin_data->syms = syms;
 
@@ -153,12 +180,12 @@ add_symbols (void * handle,
   return LDPS_OK;
 }
 
-static const char *plugin_program_name;
-
-void
-bfd_plugin_set_program_name (const char *program_name)
+static enum ld_plugin_status
+add_symbols_v2 (void *handle, int nsyms,
+		const struct ld_plugin_symbol *syms)
 {
-  plugin_program_name = program_name;
+  current_plugin->has_symbol_type = TRUE;
+  return add_symbols (handle, nsyms, syms);
 }
 
 int
@@ -170,7 +197,7 @@ bfd_plugin_open_input (bfd *ibfd, struct
   while (iobfd->my_archive
 	 && !bfd_is_thin_archive (iobfd->my_archive))
     iobfd = iobfd->my_archive;
-  file->name = iobfd->filename;
+  file->name = bfd_get_filename (iobfd);
 
   if (!iobfd->iostream && !bfd_open_file (iobfd))
     return 0;
@@ -212,68 +239,79 @@ try_claim (bfd *abfd)
   struct ld_plugin_input_file file;
 
   file.handle = abfd;
-  if (!bfd_plugin_open_input (abfd, &file))
-    return 0;
-  if (claim_file)
-    claim_file (&file, &claimed);
-  close (file.fd);
+  if (bfd_plugin_open_input (abfd, &file)
+      && current_plugin->claim_file)
+    {
+      current_plugin->claim_file (&file, &claimed);
+      close (file.fd);
+    }
+
   return claimed;
 }
 
-struct plugin_list_entry
-{
-  void *                        handle;
-  ld_plugin_claim_file_handler  claim_file;
-  struct plugin_list_entry *    next;
-};
-
-static struct plugin_list_entry * plugin_list = NULL;
-
-static int
-try_load_plugin (const char *pname, bfd *abfd, int *has_plugin_p)
+static bfd_boolean
+try_load_plugin (const char *                pname,
+		 struct plugin_list_entry *  plugin_list_iter,
+		 bfd *                       abfd,
+		 bfd_boolean                 build_list_p)
 {
-  void *plugin_handle = NULL;
-  struct ld_plugin_tv tv[4];
+  void *plugin_handle;
+  struct ld_plugin_tv tv[5];
   int i;
   ld_plugin_onload onload;
   enum ld_plugin_status status;
-  struct plugin_list_entry *plugin_list_iter;
+  bfd_boolean result = FALSE;
+
+  /* NB: Each object is independent.  Reuse the previous plugin from
+     the last run will lead to wrong result.  */
+  if (current_plugin)
+    memset (current_plugin, 0,
+	    offsetof (struct plugin_list_entry, next));
 
-  *has_plugin_p = 0;
+  if (plugin_list_iter)
+    pname = plugin_list_iter->plugin_name;
 
   plugin_handle = dlopen (pname, RTLD_NOW);
   if (!plugin_handle)
     {
-      _bfd_error_handler ("%s\n", dlerror ());
-      return 0;
+      /* If we are building a list of viable plugins, then
+	 we do not bother the user with the details of any
+	 plugins that cannot be loaded.  */
+      if (! build_list_p)
+	_bfd_error_handler ("Failed to load plugin '%s', reason: %s\n",
+			    pname, dlerror ());
+      return FALSE;
     }
 
-  for (plugin_list_iter = plugin_list;
-       plugin_list_iter;
-       plugin_list_iter = plugin_list_iter->next)
+  if (plugin_list_iter == NULL)
     {
-      if (plugin_handle == plugin_list_iter->handle)
-	{
-	  dlclose (plugin_handle);
-	  if (!plugin_list_iter->claim_file)
-	    return 0;
+      size_t length_plugin_name = strlen (pname) + 1;
+      char *plugin_name = bfd_malloc (length_plugin_name);
 
-	  register_claim_file (plugin_list_iter->claim_file);
-	  goto have_claim_file;
+      if (plugin_name == NULL)
+	goto short_circuit;
+      plugin_list_iter = bfd_malloc (sizeof *plugin_list_iter);
+      if (plugin_list_iter == NULL)
+	{
+	  free (plugin_name);
+	  goto short_circuit;
 	}
+      /* Make a copy of PNAME since PNAME from load_plugin () will be
+	 freed.  */
+      memcpy (plugin_name, pname, length_plugin_name);
+      memset (plugin_list_iter, 0, sizeof (*plugin_list_iter));
+      plugin_list_iter->plugin_name = plugin_name;
+      plugin_list_iter->next = plugin_list;
+      plugin_list = plugin_list_iter;
     }
 
-  plugin_list_iter = bfd_malloc (sizeof *plugin_list_iter);
-  if (plugin_list_iter == NULL)
-    return 0;
-  plugin_list_iter->handle = plugin_handle;
-  plugin_list_iter->claim_file = NULL;
-  plugin_list_iter->next = plugin_list;
-  plugin_list = plugin_list_iter;
+  current_plugin = plugin_list_iter;
+  if (build_list_p)
+    goto short_circuit;
 
   onload = dlsym (plugin_handle, "onload");
   if (!onload)
-    return 0;
+    goto short_circuit;
 
   i = 0;
   tv[i].tv_tag = LDPT_MESSAGE;
@@ -288,36 +326,39 @@ try_load_plugin (const char *pname, bfd
   tv[i].tv_u.tv_add_symbols = add_symbols;
 
   ++i;
+  tv[i].tv_tag = LDPT_ADD_SYMBOLS_V2;
+  tv[i].tv_u.tv_add_symbols = add_symbols_v2;
+
+  ++i;
   tv[i].tv_tag = LDPT_NULL;
   tv[i].tv_u.tv_val = 0;
 
+  /* LTO plugin will call handler hooks to set up plugin handlers.  */
   status = (*onload)(tv);
 
   if (status != LDPS_OK)
-    return 0;
-
-  plugin_list_iter->claim_file = claim_file;
-
-have_claim_file:
-  *has_plugin_p = 1;
+    goto short_circuit;
 
   abfd->plugin_format = bfd_plugin_no;
 
-  if (!claim_file)
-    return 0;
+  if (!current_plugin->claim_file)
+    goto short_circuit;
 
   if (!try_claim (abfd))
-    return 0;
+    goto short_circuit;
 
   abfd->plugin_format = bfd_plugin_yes;
-  return 1;
+  result = TRUE;
+
+ short_circuit:
+  dlclose (plugin_handle);
+  return result;
 }
 
 /* There may be plugin libraries in lib/bfd-plugins.  */
+static int has_plugin_list = -1;
 
-static int has_plugin = -1;
-
-static const bfd_target *(*ld_plugin_object_p) (bfd *);
+static bfd_cleanup (*ld_plugin_object_p) (bfd *);
 
 static const char *plugin_name;
 
@@ -325,7 +366,6 @@ void
 bfd_plugin_set_plugin (const char *p)
 {
   plugin_name = p;
-  has_plugin = p != NULL;
 }
 
 /* Return TRUE if a plugin library is used.  */
@@ -333,7 +373,7 @@ bfd_plugin_set_plugin (const char *p)
 bfd_boolean
 bfd_plugin_specified_p (void)
 {
-  return has_plugin > 0;
+  return plugin_list != NULL;
 }
 
 /* Return TRUE if ABFD can be claimed by linker LTO plugin.  */
@@ -359,13 +399,13 @@ bfd_plugin_target_p (const bfd_target *t
 /* Register OBJECT_P to be used by bfd_plugin_object_p.  */
 
 void
-register_ld_plugin_object_p (const bfd_target *(*object_p) (bfd *))
+register_ld_plugin_object_p (bfd_cleanup (*object_p) (bfd *))
 {
   ld_plugin_object_p = object_p;
 }
 
-static int
-load_plugin (bfd *abfd)
+static void
+build_plugin_list (bfd *abfd)
 {
   /* The intent was to search ${libdir}/bfd-plugins for plugins, but
      unfortunately the original implementation wasn't precisely that
@@ -374,17 +414,10 @@ load_plugin (bfd *abfd)
   static const char *path[]
     = { LIBDIR "/bfd-plugins", BINDIR "/../lib/bfd-plugins" };
   struct stat last_st;
-  int found = 0;
   unsigned int i;
 
-  if (!has_plugin)
-    return found;
-
-  if (plugin_name)
-    return try_load_plugin (plugin_name, abfd, &has_plugin);
-
-  if (plugin_program_name == NULL)
-    return found;
+  if (has_plugin_list >= 0)
+    return;
 
   /* Try not to search the same dir twice, by looking at st_dev and
      st_ino for the dir.  If we are on a file system that always sets
@@ -419,30 +452,42 @@ load_plugin (bfd *abfd)
 
 		  full_name = concat (plugin_dir, "/", ent->d_name, NULL);
 		  if (stat (full_name, &st) == 0 && S_ISREG (st.st_mode))
-		    {
-		      int valid_plugin;
-
-		      found = try_load_plugin (full_name, abfd, &valid_plugin);
-		      if (has_plugin <= 0)
-			has_plugin = valid_plugin;
-		    }
+		    (void) try_load_plugin (full_name, NULL, abfd, TRUE);
 		  free (full_name);
-		  if (found)
-		    break;
 		}
 	      closedir (d);
 	    }
 	  free (plugin_dir);
 	}
-      if (found)
-	break;
     }
 
-  return found;
+  has_plugin_list = plugin_list != NULL;
+}
+
+static bfd_boolean
+load_plugin (bfd *abfd)
+{
+  struct plugin_list_entry *plugin_list_iter;
+
+  if (plugin_name)
+    return try_load_plugin (plugin_name, plugin_list, abfd, FALSE);
+
+  if (plugin_program_name == NULL)
+    return FALSE;
+
+  build_plugin_list (abfd);
+
+  for (plugin_list_iter = plugin_list;
+       plugin_list_iter;
+       plugin_list_iter = plugin_list_iter->next)
+    if (try_load_plugin (NULL, plugin_list_iter, abfd,FALSE))
+      return TRUE;
+
+  return FALSE;
 }
 
 
-static const bfd_target *
+static bfd_cleanup
 bfd_plugin_object_p (bfd *abfd)
 {
   if (ld_plugin_object_p)
@@ -451,7 +496,7 @@ bfd_plugin_object_p (bfd *abfd)
   if (abfd->plugin_format == bfd_plugin_unknown && !load_plugin (abfd))
     return NULL;
 
-  return abfd->plugin_format == bfd_plugin_yes ? abfd->xvec : NULL;
+  return abfd->plugin_format == bfd_plugin_yes ? _bfd_no_cleanup : NULL;
 }
 
 /* Copy any private info we understand from the input bfd
@@ -557,9 +602,15 @@ bfd_plugin_canonicalize_symtab (bfd *abf
   struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
   long nsyms = plugin_data->nsyms;
   const struct ld_plugin_symbol *syms = plugin_data->syms;
-  static asection fake_section
-    = BFD_FAKE_SECTION (fake_section, NULL, "plug", 0,
+  static asection fake_text_section
+    = BFD_FAKE_SECTION (fake_text_section, NULL, "plug", 0,
 			SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS);
+  static asection fake_data_section
+    = BFD_FAKE_SECTION (fake_data_section, NULL, "plug", 0,
+			SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS);
+  static asection fake_bss_section
+    = BFD_FAKE_SECTION (fake_bss_section, NULL, "plug", 0,
+			SEC_ALLOC);
   static asection fake_common_section
     = BFD_FAKE_SECTION (fake_common_section, NULL, "plug", 0, SEC_IS_COMMON);
   int i;
@@ -586,7 +637,25 @@ bfd_plugin_canonicalize_symtab (bfd *abf
 	  break;
 	case LDPK_DEF:
 	case LDPK_WEAKDEF:
-	  s->section = &fake_section;
+	  if (current_plugin->has_symbol_type)
+	    switch (syms[i].symbol_type)
+	      {
+	      default:
+		/* FIXME: Should we issue an error here ?  */
+	      case LDST_UNKNOWN:
+		/* What is the best fake section for LDST_UNKNOWN?  */
+	      case LDST_FUNCTION:
+		s->section = &fake_text_section;
+		break;
+	      case LDST_VARIABLE:
+		if (syms[i].section_kind == LDSSK_BSS)
+		  s->section = &fake_bss_section;
+		else
+		  s->section = &fake_data_section;
+		break;
+	      }
+	  else
+	    s->section = &fake_text_section;
 	  break;
 	default:
 	  BFD_ASSERT (0);
@@ -695,4 +764,4 @@ const bfd_target plugin_vec =
 
   NULL				/* backend_data.  */
 };
-#endif /* BFD_SUPPORTS_PLUGIN */
+#endif /* BFD_SUPPORTS_PLUGINS */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/plugin.h ./bfd/plugin.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/plugin.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/plugin.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Plugin support for BFD.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -27,7 +27,7 @@ void bfd_plugin_set_plugin (const char *
 bfd_boolean bfd_plugin_target_p (const bfd_target *);
 bfd_boolean bfd_plugin_specified_p (void);
 bfd_boolean bfd_link_plugin_object_p (bfd *);
-void register_ld_plugin_object_p (const bfd_target *(*object_p) (bfd *));
+void register_ld_plugin_object_p (bfd_cleanup (*object_p) (bfd *));
 
 typedef struct plugin_data_struct
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/bfd.pot ./bfd/po/bfd.pot
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/bfd.pot	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/po/bfd.pot	2021-05-21 01:57:23.000000000 +0000
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2019-01-19 16:33+0000\n"
+"POT-Creation-Date: 2020-07-04 10:24+0100\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"
@@ -18,223 +18,236 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: aout-cris.c:200
+#: aout-cris.c:196
 #, c-format
 msgid "%pB: unsupported relocation type exported: %#x"
 msgstr ""
 
-#: aout-cris.c:244
+#: aout-cris.c:242
 #, c-format
 msgid "%pB: unsupported relocation type imported: %#x"
 msgstr ""
 
-#: aout-cris.c:256
+#: aout-cris.c:254
 #, c-format
 msgid "%pB: bad relocation record imported: %d"
 msgstr ""
 
-#: aoutx.h:1265 aoutx.h:1618 pdp11.c:1138 pdp11.c:1399
+#: aoutx.h:1265 aoutx.h:1613 pdp11.c:1236 pdp11.c:1510
 #, c-format
 msgid "%pB: can not represent section `%pA' in a.out object file format"
 msgstr ""
 
-#: aoutx.h:1582 pdp11.c:1371
+#: aoutx.h:1577 pdp11.c:1482
 #, c-format
 msgid ""
 "%pB: can not represent section for symbol `%s' in a.out object file format"
 msgstr ""
 
-#: aoutx.h:1585 vms-alpha.c:7860
+#: aoutx.h:1580 vms-alpha.c:8040
 msgid "*unknown*"
 msgstr ""
 
-#: aoutx.h:1721
+#: aoutx.h:1716 pdp11.c:1578
 #, c-format
 msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
 msgstr ""
 
-#: aoutx.h:2412 aoutx.h:2430
+#: aoutx.h:1963
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr ""
+
+#: aoutx.h:2412 aoutx.h:2430 pdp11.c:2058
 #, c-format
 msgid "%pB: attempt to write out unknown reloc type"
 msgstr ""
 
-#: aoutx.h:4086
+#: aoutx.h:4087 pdp11.c:3441
 #, c-format
 msgid "%pB: unsupported relocation type"
 msgstr ""
 
 #. Unknown relocation.
-#: aoutx.h:4407 coff-alpha.c:601 coff-alpha.c:1514 coff-rs6000.c:2772
+#: aoutx.h:4408 coff-alpha.c:601 coff-alpha.c:1512 coff-rs6000.c:2758
 #: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:279 elf-hppa.h:798
-#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:517
-#: elf32-arm.c:1943 elf32-avr.c:964 elf32-bfin.c:1061 elf32-bfin.c:4698
-#: elf32-cr16.c:653 elf32-cr16.c:683 elf32-cr16c.c:186 elf32-cris.c:467
-#: elf32-crx.c:429 elf32-csky.c:989 elf32-d10v.c:234 elf32-d30v.c:522
-#: elf32-d30v.c:544 elf32-dlx.c:548 elf32-epiphany.c:376 elf32-fr30.c:381
-#: elf32-frv.c:2558 elf32-frv.c:6262 elf32-ft32.c:306 elf32-h8300.c:302
-#: elf32-i386.c:401 elf32-ip2k.c:1245 elf32-iq2000.c:442 elf32-lm32.c:539
-#: elf32-m32c.c:305 elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2417
-#: elf32-m68hc11.c:390 elf32-m68hc12.c:510 elf32-m68k.c:352 elf32-mcore.c:354
-#: elf32-mcore.c:440 elf32-mep.c:389 elf32-metag.c:878 elf32-microblaze.c:692
-#: elf32-microblaze.c:969 elf32-mips.c:2229 elf32-moxie.c:137
-#: elf32-msp430.c:648 elf32-msp430.c:658 elf32-mt.c:241 elf32-nds32.c:3236
-#: elf32-nds32.c:3262 elf32-nds32.c:5173 elf32-nios2.c:3015 elf32-or1k.c:1037
-#: elf32-pj.c:325 elf32-ppc.c:898 elf32-ppc.c:911 elf32-pru.c:420
-#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:292
-#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:160 elf32-tic6x.c:1508
-#: elf32-tic6x.c:1518 elf32-tic6x.c:1537 elf32-tic6x.c:1547 elf32-tic6x.c:2642
-#: elf32-tilepro.c:803 elf32-v850.c:1899 elf32-v850.c:1921 elf32-v850.c:4270
-#: elf32-vax.c:290 elf32-visium.c:482 elf32-wasm32.c:105 elf32-xc16x.c:250
-#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:459
-#: elf32-xtensa.c:493 elf64-alpha.c:1112 elf64-alpha.c:4101 elf64-alpha.c:4249
-#: elf64-ia64-vms.c:254 elf64-ia64-vms.c:3440 elf64-mips.c:3958
-#: elf64-mips.c:3974 elf64-mmix.c:1264 elf64-nfp.c:238 elf64-ppc.c:921
-#: elf64-ppc.c:1209 elf64-ppc.c:1218 elf64-s390.c:328 elf64-s390.c:378
-#: elf64-x86-64.c:285 elfn32-mips.c:3786 elfxx-ia64.c:324 elfxx-riscv.c:955
-#: elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:912 elfxx-tilegx.c:952
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:2125
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:2223 elf32-ia64.c:210
-#: elf32-ia64.c:3862 elf64-ia64.c:210 elf64-ia64.c:3862
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:532
+#: elf32-arm.c:1985 elf32-avr.c:962 elf32-bfin.c:1062 elf32-bfin.c:4677
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:990 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:372 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6239 elf32-ft32.c:306 elf32-h8300.c:302 elf32-i386.c:400
+#: elf32-ip2k.c:1240 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2232 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:389 elf32-metag.c:874 elf32-microblaze.c:692
+#: elf32-microblaze.c:965 elf32-mips.c:2229 elf32-moxie.c:137
+#: elf32-msp430.c:653 elf32-msp430.c:663 elf32-mt.c:241 elf32-nds32.c:3237
+#: elf32-nds32.c:3263 elf32-nds32.c:5033 elf32-nios2.c:3022 elf32-or1k.c:1040
+#: elf32-pj.c:326 elf32-ppc.c:901 elf32-ppc.c:914 elf32-pru.c:423
+#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:296
+#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:163 elf32-tic6x.c:1498
+#: elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537 elf32-tic6x.c:2583
+#: elf32-tilepro.c:800 elf32-v850.c:1898 elf32-v850.c:1920 elf32-v850.c:4270
+#: elf32-vax.c:290 elf32-visium.c:481 elf32-wasm32.c:105 elf32-xc16x.c:250
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:522
+#: elf32-xtensa.c:556 elf32-z80.c:331 elf64-alpha.c:1113 elf64-alpha.c:4067
+#: elf64-alpha.c:4215 elf64-bpf.c:322 elf64-ia64-vms.c:254
+#: elf64-ia64-vms.c:3429 elf64-mips.c:3958 elf64-mips.c:3974 elf64-mmix.c:1264
+#: elf64-nfp.c:238 elf64-ppc.c:1014 elf64-ppc.c:1366 elf64-ppc.c:1375
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:281 elfn32-mips.c:3786
+#: elfxx-ia64.c:324 elfxx-riscv.c:954 elfxx-sparc.c:589 elfxx-sparc.c:639
+#: elfxx-tilegx.c:909 elfxx-tilegx.c:949 elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2313 elfnn-ia64.c:213 elfnn-ia64.c:3824
 #, c-format
 msgid "%pB: unsupported relocation type %#x"
 msgstr ""
 
-#: aoutx.h:5434 pdp11.c:3694
+#: aoutx.h:5435 pdp11.c:3864
 #, c-format
 msgid "%pB: relocatable link from %s to %s not supported"
 msgstr ""
 
-#: archive.c:2214
+#: arc-got.h:69
+#, c-format
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr ""
+
+#: archive.c:2249
 msgid "warning: writing archive was slow: rewriting timestamp"
 msgstr ""
 
-#: archive.c:2330 linker.c:1429
+#: archive.c:2316 archive.c:2376 elflink.c:4545 linker.c:1428
 #, c-format
 msgid "%pB: plugin needed to handle lto object"
 msgstr ""
 
-#: archive.c:2559
+#: archive.c:2602
 msgid "Reading archive file mod timestamp"
 msgstr ""
 
-#: archive.c:2583
+#: archive.c:2626
 msgid "Writing updated armap timestamp"
 msgstr ""
 
-#: bfd.c:449
+#: bfd.c:677
 msgid "no error"
 msgstr ""
 
-#: bfd.c:450
+#: bfd.c:678
 msgid "system call error"
 msgstr ""
 
-#: bfd.c:451
+#: bfd.c:679
 msgid "invalid bfd target"
 msgstr ""
 
-#: bfd.c:452
+#: bfd.c:680
 msgid "file in wrong format"
 msgstr ""
 
-#: bfd.c:453
+#: bfd.c:681
 msgid "archive object file in wrong format"
 msgstr ""
 
-#: bfd.c:454
+#: bfd.c:682
 msgid "invalid operation"
 msgstr ""
 
-#: bfd.c:455
+#: bfd.c:683
 msgid "memory exhausted"
 msgstr ""
 
-#: bfd.c:456
+#: bfd.c:684
 msgid "no symbols"
 msgstr ""
 
-#: bfd.c:457
+#: bfd.c:685
 msgid "archive has no index; run ranlib to add one"
 msgstr ""
 
-#: bfd.c:458
+#: bfd.c:686
 msgid "no more archived files"
 msgstr ""
 
-#: bfd.c:459
+#: bfd.c:687
 msgid "malformed archive"
 msgstr ""
 
-#: bfd.c:460
+#: bfd.c:688
 msgid "DSO missing from command line"
 msgstr ""
 
-#: bfd.c:461
+#: bfd.c:689
 msgid "file format not recognized"
 msgstr ""
 
-#: bfd.c:462
+#: bfd.c:690
 msgid "file format is ambiguous"
 msgstr ""
 
-#: bfd.c:463
+#: bfd.c:691
 msgid "section has no contents"
 msgstr ""
 
-#: bfd.c:464
+#: bfd.c:692
 msgid "nonrepresentable section on output"
 msgstr ""
 
-#: bfd.c:465
+#: bfd.c:693
 msgid "symbol needs debug section which does not exist"
 msgstr ""
 
-#: bfd.c:466
+#: bfd.c:694
 msgid "bad value"
 msgstr ""
 
-#: bfd.c:467
+#: bfd.c:695
 msgid "file truncated"
 msgstr ""
 
-#: bfd.c:468
+#: bfd.c:696
 msgid "file too big"
 msgstr ""
 
-#: bfd.c:469
+#: bfd.c:697
+msgid "sorry, cannot handle this file"
+msgstr ""
+
+#: bfd.c:698
 #, c-format
 msgid "error reading %s: %s"
 msgstr ""
 
-#: bfd.c:470
+#: bfd.c:699
 msgid "#<invalid error code>"
 msgstr ""
 
-#: bfd.c:1429
+#: bfd.c:1658
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr ""
 
-#: bfd.c:1442
+#: bfd.c:1671
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d in %s\n"
 msgstr ""
 
-#: bfd.c:1447
+#: bfd.c:1676
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d\n"
 msgstr ""
 
-#: bfd.c:1449
+#: bfd.c:1678
 msgid "Please report this bug.\n"
 msgstr ""
 
-#: bfdwin.c:206
+#: bfdwin.c:207
 #, c-format
 msgid "not mapping: data=%lx mapped=%d\n"
 msgstr ""
 
-#: bfdwin.c:209
+#: bfdwin.c:210
 #, c-format
 msgid "not mapping: env var not set\n"
 msgstr ""
@@ -256,118 +269,113 @@ msgid ""
 "to generate uncompressed binaries"
 msgstr ""
 
-#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1957 coff-mips.c:950
+#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1954 coff-mips.c:953
 msgid "GP relative relocation used when GP not defined"
 msgstr ""
 
-#: coff-alpha.c:1443
+#: coff-alpha.c:1441
 msgid "using multiple gp values"
 msgstr ""
 
-#: coff-alpha.c:1501 coff-alpha.c:1507 elf.c:9100 elf32-mcore.c:100
-#: elf32-mcore.c:455 elf32-ppc.c:7697 elf32-ppc.c:8829 elf64-ppc.c:14411
+#: coff-alpha.c:1499 coff-alpha.c:1505 elf.c:9431 elf32-mcore.c:100
+#: elf32-mcore.c:455 elf32-ppc.c:7596 elf32-ppc.c:8747 elf64-ppc.c:15962
 #, c-format
 msgid "%pB: %s unsupported"
 msgstr ""
 
-#: coff-mips.c:640 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
+#: coff-go32.c:156 coffswap.h:785
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr ""
+
+#: coff-mips.c:643 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
 #: elf64-mips.c:3451 elfn32-mips.c:3276
 msgid "GP relative relocation when _gp not defined"
 msgstr ""
 
-#: coff-rs6000.c:2858
+#: coff-rs6000.c:2844
 #, c-format
 msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
 msgstr ""
 
-#: coff-rs6000.c:3620 coff64-rs6000.c:2145
+#: coff-rs6000.c:3607 coff64-rs6000.c:2153
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized smclas %d"
 msgstr ""
 
-#: coff-sh.c:780 elf32-sh.c:521
+#: coff-sh.c:778 elf32-sh.c:521
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
 msgstr ""
 
-#: coff-sh.c:791
+#: coff-sh.c:789
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
 msgstr ""
 
-#: coff-sh.c:809 elf32-sh.c:552
+#: coff-sh.c:807 elf32-sh.c:552
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
 msgstr ""
 
-#: coff-sh.c:834 elf32-sh.c:568
+#: coff-sh.c:832 elf32-sh.c:568
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
 msgstr ""
 
-#: coff-sh.c:851 elf32-sh.c:597
+#: coff-sh.c:849 elf32-sh.c:597
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
 msgstr ""
 
-#: coff-sh.c:977 elf32-sh.c:727
+#: coff-sh.c:975 elf32-sh.c:727
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
 msgstr ""
 
-#: coff-sh.c:987 elf32-sh.c:738
+#: coff-sh.c:985 elf32-sh.c:738
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad count"
 msgstr ""
 
-#: coff-sh.c:1359 coff-sh.c:2647 elf32-sh.c:1142 elf32-sh.c:1512
+#: coff-sh.c:1356 coff-sh.c:2644 elf32-sh.c:1138 elf32-sh.c:1505
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
 msgstr ""
 
-#: coff-sh.c:1454
+#: coff-sh.c:1451
 #, c-format
 msgid "%pB: fatal: generic symbols retrieved before relaxing"
 msgstr ""
 
-#: coff-sh.c:2785 cofflink.c:2965
+#: coff-sh.c:2781 cofflink.c:2948
 #, c-format
 msgid "%pB: illegal symbol index %ld in relocs"
 msgstr ""
 
-#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5010
+#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5085
 #, c-format
 msgid "%pB: warning: illegal symbol index %ld in relocs"
 msgstr ""
 
-#: coff-tic80.c:441
-#, c-format
-msgid "unsupported relocation type %#x"
-msgstr ""
-
-#: coff-tic80.c:672 cofflink.c:3127
-#, c-format
-msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
-msgstr ""
-
-#: coffcode.h:954
+#: coffcode.h:961
 #, c-format
 msgid "%pB: unable to load COMDAT section name"
 msgstr ""
 
 #. Malformed input files can trigger this test.
 #. cf PR 21781.
-#: coffcode.h:989
+#: coffcode.h:996
 #, c-format
 msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
 msgstr ""
 
-#: coffcode.h:1001
+#: coffcode.h:1008
 #, c-format
 msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
 msgstr ""
 
-#: coffcode.h:1011
+#: coffcode.h:1018
 #, c-format
 msgid "%pB: warning: no symbol for section '%s' found"
 msgstr ""
@@ -375,397 +383,401 @@ msgstr ""
 #. Generate a warning message rather using the 'unhandled'
 #. variable as this will allow some .sys files generate by
 #. other toolchains to be processed.  See bugzilla issue 196.
-#: coffcode.h:1237
+#: coffcode.h:1249
 #, c-format
 msgid "%pB: warning: ignoring section flag %s in section %s"
 msgstr ""
 
-#: coffcode.h:1306
+#: coffcode.h:1318
 #, c-format
 msgid "%pB (%s): section flag %s (%#lx) ignored"
 msgstr ""
 
-#: coffcode.h:1917
+#: coffcode.h:1934 coffcode.h:1999
 #, c-format
 msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
 msgstr ""
 
-#: coffcode.h:2315
+#: coffcode.h:2365
 #, c-format
 msgid "unrecognized TI COFF target id '0x%x'"
 msgstr ""
 
-#: coffcode.h:2599
+#: coffcode.h:2643
 #, c-format
 msgid "%pB: reloc against a non-existent symbol index: %ld"
 msgstr ""
 
-#: coffcode.h:2910
+#: coffcode.h:2951
 #, c-format
 msgid "%pB: page size is too large (0x%x)"
 msgstr ""
 
-#: coffcode.h:3070
+#: coffcode.h:3111
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr ""
 
-#: coffcode.h:3489
+#: coffcode.h:3530
 #, c-format
 msgid "%pB: section %pA: string table overflow at offset %ld"
 msgstr ""
 
-#: coffcode.h:3589
+#: coffcode.h:3630
 #, c-format
 msgid "%pB:%s section %s: alignment 2**%u not representable"
 msgstr ""
 
-#: coffcode.h:4276
+#: coffcode.h:4329
 #, c-format
 msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
 msgstr ""
 
-#: coffcode.h:4291
+#: coffcode.h:4349
 #, c-format
 msgid "%pB: warning: line number table read failed"
 msgstr ""
 
-#: coffcode.h:4325 coffcode.h:4339
+#: coffcode.h:4383 coffcode.h:4397
 #, c-format
 msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
 msgstr ""
 
-#: coffcode.h:4353
+#: coffcode.h:4411
 #, c-format
 msgid "%pB: warning: illegal symbol in line number entry %d"
 msgstr ""
 
-#: coffcode.h:4366
+#: coffcode.h:4424
 #, c-format
 msgid "%pB: warning: duplicate line number information for `%s'"
 msgstr ""
 
-#: coffcode.h:4774
+#: coffcode.h:4845
 #, c-format
 msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
 msgstr ""
 
-#: coffcode.h:4904
+#: coffcode.h:4975
 #, c-format
 msgid "warning: %pB: local symbol `%s' has no section"
 msgstr ""
 
-#: coffcode.h:5050
+#: coffcode.h:5125
 #, c-format
 msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
 msgstr ""
 
-#: coffgen.c:178 elf.c:1216
+#: coffgen.c:179 elf.c:1236
 #, c-format
 msgid "%pB: unable to initialize compress status for section %s"
 msgstr ""
 
-#: coffgen.c:202 elf.c:1227
+#: coffgen.c:203 elf.c:1247
 #, c-format
 msgid "%pB: unable to initialize decompress status for section %s"
 msgstr ""
 
-#: coffgen.c:1657
-#, c-format
-msgid "%pB: corrupt symbol count: %#<PRIx64>"
-msgstr ""
-
-#. PR 21013: Provide an error message when the alloc fails.
-#: coffgen.c:1666
-#, c-format
-msgid ""
-"%pB: not enough memory to allocate space for %#<PRIx64> symbols of size "
-"%#<PRIx64>"
-msgstr ""
-
-#: coffgen.c:1735
+#: coffgen.c:1704
 #, c-format
 msgid "%pB: bad string table size %<PRIu64>"
 msgstr ""
 
-#: coffgen.c:1912 coffgen.c:1972 coffgen.c:1990 cofflink.c:2045 elf.c:1882
-#: xcofflink.c:4505
+#: coffgen.c:1876 coffgen.c:1936 coffgen.c:1954 cofflink.c:2024 elf.c:1921
+#: xcofflink.c:4500
 msgid "<corrupt>"
 msgstr ""
 
-#: coffgen.c:2114
+#: coffgen.c:2085
 #, c-format
 msgid "<corrupt info> %s"
 msgstr ""
 
-#: coffgen.c:2693 elflink.c:14322 linker.c:2959
+#: coffgen.c:2675 elflink.c:14624 linker.c:2956
 msgid "%F%P: already_linked_table: %E\n"
 msgstr ""
 
-#: coffgen.c:3034 elflink.c:13324
+#: coffgen.c:3016 elflink.c:13617
 #, c-format
 msgid "removing unused section '%pA' in file '%pB'"
 msgstr ""
 
-#: coffgen.c:3111 elflink.c:13542
+#: coffgen.c:3093 elflink.c:13835
 msgid "warning: gc-sections option ignored"
 msgstr ""
 
-#: cofflink.c:352
+#: cofflink.c:366
 #, c-format
 msgid "warning: symbol `%s' is both section and non-section"
 msgstr ""
 
-#: cofflink.c:454 elf64-ia64-vms.c:5203 elflink.c:4953
+#: cofflink.c:471 elf64-ia64-vms.c:5200 elflink.c:5131
 #, c-format
 msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
 msgstr ""
 
-#: cofflink.c:2373
+#: cofflink.c:2352
 #, c-format
 msgid "%pB: relocs in section `%pA', but it has no contents"
 msgstr ""
 
-#: cofflink.c:2436 elflink.c:10810
+#: cofflink.c:2415 elflink.c:11082
 #, c-format
 msgid ""
 "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `"
 "%pA' of %pB\n"
 msgstr ""
 
-#: cofflink.c:2734
+#: cofflink.c:2717
 #, c-format
 msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
 msgstr ""
 
-#: cofflink.c:2742
+#: cofflink.c:2725
 #, c-format
 msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
 msgstr ""
 
-#: coffswap.h:789
+#: cofflink.c:3110
 #, c-format
-msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
 msgstr ""
 
-#: coffswap.h:803
+#: coffswap.h:799
 #, c-format
 msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr ""
 
-#: compress.c:260
+#: compress.c:271
+#, c-format
+msgid ""
+"error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size "
+"(%#<PRIx64> bytes)"
+msgstr ""
+
+#: compress.c:282
 #, c-format
 msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
 msgstr ""
 
-#: cpu-arm.c:298 cpu-arm.c:310
+#: cpu-arm.c:303 cpu-arm.c:315
 #, c-format
 msgid ""
 "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
 msgstr ""
 
-#: cpu-arm.c:446
+#: cpu-arm.c:451
 #, c-format
 msgid "warning: unable to update contents of %s section in %pB"
 msgstr ""
 
-#: dwarf2.c:544
+#: dwarf2.c:543
 #, c-format
 msgid "DWARF error: can't find %s section."
 msgstr ""
 
-#: dwarf2.c:579
+#: dwarf2.c:578
 #, c-format
 msgid ""
 "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
 msgstr ""
 
-#: dwarf2.c:1107
+#: dwarf2.c:1165
 msgid "DWARF error: info pointer extends beyond end of attributes"
 msgstr ""
 
-#: dwarf2.c:1275
+#: dwarf2.c:1333
 #, c-format
 msgid "DWARF error: invalid or unhandled FORM value: %#x"
 msgstr ""
 
-#: dwarf2.c:1581
+#: dwarf2.c:1646
 msgid "DWARF error: mangled line number section (bad file number)"
 msgstr ""
 
-#: dwarf2.c:1926
+#: dwarf2.c:1994
 msgid "DWARF error: zero format count"
 msgstr ""
 
-#: dwarf2.c:1936
+#: dwarf2.c:2004
 #, c-format
 msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
 msgstr ""
 
-#: dwarf2.c:1977
+#: dwarf2.c:2045
 #, c-format
 msgid "DWARF error: unknown format content type %<PRIu64>"
 msgstr ""
 
-#: dwarf2.c:2057
+#: dwarf2.c:2112
 #, c-format
 msgid "DWARF error: line info section is too small (%<PRId64>)"
 msgstr ""
 
-#: dwarf2.c:2087
+#: dwarf2.c:2142
 #, c-format
 msgid ""
 "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining "
 "in the section (%#lx)"
 msgstr ""
 
-#: dwarf2.c:2100
+#: dwarf2.c:2155
 #, c-format
 msgid "DWARF error: unhandled .debug_line version %d"
 msgstr ""
 
-#: dwarf2.c:2110
+#: dwarf2.c:2165
 msgid "DWARF error: ran out of room reading prologue"
 msgstr ""
 
-#: dwarf2.c:2128
+#: dwarf2.c:2183
 #, c-format
 msgid "DWARF error: line info unsupported segment selector size %u"
 msgstr ""
 
-#: dwarf2.c:2155
+#: dwarf2.c:2210
 msgid "DWARF error: invalid maximum operations per instruction"
 msgstr ""
 
-#: dwarf2.c:2174
+#: dwarf2.c:2229
 msgid "DWARF error: ran out of room reading opcodes"
 msgstr ""
 
-#: dwarf2.c:2347
+#: dwarf2.c:2420
 msgid "DWARF error: mangled line number section"
 msgstr ""
 
-#: dwarf2.c:2852 dwarf2.c:2913
+#: dwarf2.c:2905
+msgid "DWARF error: abstract instance recursion detected"
+msgstr ""
+
+#: dwarf2.c:2939 dwarf2.c:3033
 msgid "DWARF error: invalid abstract instance DIE ref"
 msgstr ""
 
-#: dwarf2.c:2889
+#: dwarf2.c:2955
 #, c-format
 msgid "DWARF error: unable to read alt ref %<PRIu64>"
 msgstr ""
 
-#: dwarf2.c:2930 dwarf2.c:3103 dwarf2.c:3457
+#: dwarf2.c:3011
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr ""
+
+#: dwarf2.c:3050 dwarf2.c:3232 dwarf2.c:3618
 #, c-format
 msgid "DWARF error: could not find abbrev number %u"
 msgstr ""
 
-#: dwarf2.c:2947
-msgid "DWARF error: abstract instance recursion detected"
+#: dwarf2.c:3381
+#, c-format
+msgid "DWARF error: could not find variable specification at offset %lx"
 msgstr ""
 
-#: dwarf2.c:3376
+#: dwarf2.c:3537
 #, c-format
 msgid ""
 "DWARF error: found dwarf version '%u', this reader only handles version 2, "
 "3, 4 and 5 information"
 msgstr ""
 
-#: dwarf2.c:3420
+#: dwarf2.c:3581
 #, c-format
 msgid ""
 "DWARF error: found address size '%u', this reader can not handle sizes "
 "greater than '%u'"
 msgstr ""
 
-#: dwarf2.c:3523
+#: dwarf2.c:3685
 msgid ""
 "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
 msgstr ""
 
-#: ecoff.c:971
+#: ecoff.c:982
 #, c-format
 msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
 msgstr ""
 
-#: ecoff.c:1268
+#: ecoff.c:1279
 #, c-format
 msgid "unknown basic type %d"
 msgstr ""
 
-#: ecoff.c:1525
+#: ecoff.c:1536
 #, c-format
 msgid ""
 "\n"
 "      End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1543 ecoff.c:1546
 #, c-format
 msgid ""
 "\n"
 "      First symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1548
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
 "      End+1 symbol: %-7ld   Type:  %s"
 msgstr ""
 
-#: ecoff.c:1555
+#: ecoff.c:1566
 #, c-format
 msgid ""
 "\n"
 "      Local symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1563
+#: ecoff.c:1574
 #, c-format
 msgid ""
 "\n"
 "      struct; End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1568
+#: ecoff.c:1579
 #, c-format
 msgid ""
 "\n"
 "      union; End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1573
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
 "      enum; End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1579
+#: ecoff.c:1590
 #, c-format
 msgid ""
 "\n"
 "      Type: %s"
 msgstr ""
 
-#: elf-attrs.c:446
+#: elf-attrs.c:449
 #, c-format
 msgid "%pB: error: attribute section '%pA' too big: %#llx"
 msgstr ""
 
-#: elf-attrs.c:487
+#: elf-attrs.c:490
 #, c-format
 msgid "%pB: error: attribute section length too small: %<PRId64>"
 msgstr ""
 
-#: elf-attrs.c:615
+#: elf-attrs.c:618
 #, c-format
 msgid ""
 "error: %pB: object has vendor-specific contents that must be processed by "
 "the '%s' toolchain"
 msgstr ""
 
-#: elf-attrs.c:625
+#: elf-attrs.c:628
 #, c-format
 msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
 msgstr ""
@@ -791,44 +803,44 @@ msgid ""
 "dropped"
 msgstr ""
 
-#: elf-eh-frame.c:1868
+#: elf-eh-frame.c:1866
 #, c-format
 msgid "%pB: %pA not in order"
 msgstr ""
 
-#: elf-eh-frame.c:1882
+#: elf-eh-frame.c:1880
 #, c-format
 msgid "%pB: %pA invalid input section size"
 msgstr ""
 
-#: elf-eh-frame.c:1890
+#: elf-eh-frame.c:1888
 #, c-format
 msgid "%pB: %pA points past end of text section"
 msgstr ""
 
-#: elf-eh-frame.c:2139
+#: elf-eh-frame.c:2141
 msgid "DW_EH_PE_datarel unspecified for this architecture"
 msgstr ""
 
-#: elf-eh-frame.c:2309
+#: elf-eh-frame.c:2312
 #, c-format
 msgid "invalid output section for .eh_frame_entry: %pA"
 msgstr ""
 
-#: elf-eh-frame.c:2332
+#: elf-eh-frame.c:2335
 #, c-format
 msgid "invalid contents in %pA section"
 msgstr ""
 
-#: elf-eh-frame.c:2488
+#: elf-eh-frame.c:2491
 msgid ".eh_frame_hdr entry overflow"
 msgstr ""
 
-#: elf-eh-frame.c:2490
+#: elf-eh-frame.c:2493
 msgid ".eh_frame_hdr refers to overlapping FDEs"
 msgstr ""
 
-#: elf-ifunc.c:149
+#: elf-ifunc.c:144
 #, c-format
 msgid ""
 "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%pB' can "
@@ -836,49 +848,48 @@ msgid ""
 "pie\n"
 msgstr ""
 
-#: elf-m10200.c:434 elf-m10300.c:2147 elf32-avr.c:1510 elf32-bfin.c:3127
-#: elf32-cr16.c:1464 elf32-cr16c.c:783 elf32-cris.c:2033 elf32-crx.c:925
-#: elf32-d10v.c:512 elf32-epiphany.c:566 elf32-fr30.c:594 elf32-frv.c:4049
-#: elf32-ft32.c:494 elf32-h8300.c:523 elf32-ip2k.c:1482 elf32-iq2000.c:693
-#: elf32-lm32.c:1112 elf32-m32c.c:624 elf32-m32r.c:3045 elf32-m68hc1x.c:1266
-#: elf32-mep.c:526 elf32-metag.c:1990 elf32-microblaze.c:1631 elf32-moxie.c:288
-#: elf32-mt.c:402 elf32-nds32.c:6189 elf32-or1k.c:1759 elf32-score.c:2733
-#: elf32-score7.c:2542 elf32-spu.c:5083 elf32-tilepro.c:3506 elf32-v850.c:2291
-#: elf32-visium.c:681 elf32-xstormy16.c:931 elf64-mmix.c:1541
-#: elfxx-tilegx.c:3870
+#: elf-m10200.c:434 elf-m10300.c:2145 elf32-avr.c:1508 elf32-bfin.c:3126
+#: elf32-cr16.c:1464 elf32-cris.c:2033 elf32-crx.c:920 elf32-d10v.c:510
+#: elf32-epiphany.c:562 elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:494
+#: elf32-h8300.c:523 elf32-ip2k.c:1477 elf32-iq2000.c:691 elf32-lm32.c:1069
+#: elf32-m32c.c:624 elf32-m32r.c:2860 elf32-m68hc1x.c:1272 elf32-mep.c:526
+#: elf32-metag.c:1986 elf32-microblaze.c:1627 elf32-moxie.c:288 elf32-mt.c:402
+#: elf32-nds32.c:6048 elf32-or1k.c:1817 elf32-score.c:2734 elf32-score7.c:2543
+#: elf32-spu.c:5083 elf32-tilepro.c:3380 elf32-v850.c:2290 elf32-visium.c:680
+#: elf32-xstormy16.c:929 elf64-bpf.c:512 elf64-mmix.c:1541 elfxx-tilegx.c:3744
 msgid "internal error: out of range error"
 msgstr ""
 
-#: elf-m10200.c:438 elf-m10300.c:2151 elf32-avr.c:1514 elf32-bfin.c:3131
-#: elf32-cr16.c:1468 elf32-cr16c.c:787 elf32-cris.c:2037 elf32-crx.c:929
-#: elf32-d10v.c:516 elf32-fr30.c:598 elf32-frv.c:4053 elf32-ft32.c:498
-#: elf32-h8300.c:527 elf32-iq2000.c:697 elf32-lm32.c:1116 elf32-m32c.c:628
-#: elf32-m32r.c:3049 elf32-m68hc1x.c:1270 elf32-mep.c:530 elf32-metag.c:1994
-#: elf32-microblaze.c:1635 elf32-moxie.c:292 elf32-msp430.c:1362
-#: elf32-nds32.c:6193 elf32-or1k.c:1763 elf32-score.c:2737 elf32-score7.c:2546
-#: elf32-spu.c:5087 elf32-tilepro.c:3510 elf32-v850.c:2295 elf32-visium.c:685
-#: elf32-xstormy16.c:935 elf64-mmix.c:1545 elfxx-mips.c:10469
-#: elfxx-tilegx.c:3874
+#: elf-m10200.c:438 elf-m10300.c:2149 elf32-avr.c:1512 elf32-bfin.c:3130
+#: elf32-cr16.c:1468 elf32-cris.c:2037 elf32-crx.c:924 elf32-d10v.c:514
+#: elf32-fr30.c:598 elf32-frv.c:4052 elf32-ft32.c:498 elf32-h8300.c:527
+#: elf32-iq2000.c:695 elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2864
+#: elf32-m68hc1x.c:1276 elf32-mep.c:530 elf32-metag.c:1990
+#: elf32-microblaze.c:1631 elf32-moxie.c:292 elf32-msp430.c:1371
+#: elf32-nds32.c:6052 elf32-or1k.c:1821 elf32-score.c:2738 elf32-score7.c:2547
+#: elf32-spu.c:5087 elf32-tilepro.c:3384 elf32-v850.c:2294 elf32-visium.c:684
+#: elf32-xstormy16.c:933 elf64-mmix.c:1545 elfxx-mips.c:10576
+#: elfxx-tilegx.c:3748
 msgid "internal error: unsupported relocation error"
 msgstr ""
 
-#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-cr16c.c:791 elf32-crx.c:933
-#: elf32-d10v.c:520 elf32-h8300.c:531 elf32-lm32.c:1120 elf32-m32r.c:3053
-#: elf32-m68hc1x.c:1274 elf32-microblaze.c:1639 elf32-nds32.c:6197
-#: elf32-score.c:2741 elf32-score7.c:2550 elf32-spu.c:5091
+#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-crx.c:928 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2868 elf32-m68hc1x.c:1280
+#: elf32-microblaze.c:1635 elf32-nds32.c:6056 elf32-score.c:2742
+#: elf32-score7.c:2551 elf32-spu.c:5091
 msgid "internal error: dangerous error"
 msgstr ""
 
-#: elf-m10200.c:446 elf-m10300.c:2168 elf32-avr.c:1522 elf32-bfin.c:3139
-#: elf32-cr16.c:1476 elf32-cr16c.c:795 elf32-cris.c:2045 elf32-crx.c:937
-#: elf32-d10v.c:524 elf32-epiphany.c:581 elf32-fr30.c:606 elf32-frv.c:4061
-#: elf32-ft32.c:506 elf32-h8300.c:535 elf32-ip2k.c:1497 elf32-iq2000.c:705
-#: elf32-lm32.c:1124 elf32-m32c.c:636 elf32-m32r.c:3057 elf32-m68hc1x.c:1278
-#: elf32-mep.c:538 elf32-metag.c:2002 elf32-microblaze.c:1643 elf32-moxie.c:300
-#: elf32-msp430.c:1370 elf32-mt.c:410 elf32-nds32.c:6201 elf32-or1k.c:1771
-#: elf32-score.c:2750 elf32-score7.c:2554 elf32-spu.c:5095 elf32-tilepro.c:3518
-#: elf32-v850.c:2315 elf32-visium.c:693 elf32-xstormy16.c:943 elf64-mmix.c:1553
-#: elfxx-tilegx.c:3882
+#: elf-m10200.c:446 elf-m10300.c:2166 elf32-avr.c:1520 elf32-bfin.c:3138
+#: elf32-cr16.c:1476 elf32-cris.c:2045 elf32-crx.c:932 elf32-d10v.c:522
+#: elf32-epiphany.c:577 elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:506
+#: elf32-h8300.c:535 elf32-ip2k.c:1492 elf32-iq2000.c:703 elf32-lm32.c:1081
+#: elf32-m32c.c:636 elf32-m32r.c:2872 elf32-m68hc1x.c:1284 elf32-mep.c:538
+#: elf32-metag.c:1998 elf32-microblaze.c:1639 elf32-moxie.c:300
+#: elf32-msp430.c:1379 elf32-mt.c:410 elf32-nds32.c:6060 elf32-or1k.c:1829
+#: elf32-score.c:2751 elf32-score7.c:2555 elf32-spu.c:5095 elf32-tilepro.c:3392
+#: elf32-v850.c:2314 elf32-visium.c:692 elf32-xstormy16.c:941 elf64-bpf.c:525
+#: elf64-mmix.c:1553 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr ""
 
@@ -887,41 +898,38 @@ msgstr ""
 msgid "%pB: unsupported transition from %s to %s"
 msgstr ""
 
-#: elf-m10300.c:1198
+#: elf-m10300.c:1196
 #, c-format
 msgid "%pB: %s' accessed both as normal and thread local symbol"
 msgstr ""
 
-#: elf-m10300.c:2094 elf32-arm.c:13246 elf32-i386.c:3409 elf32-m32r.c:2539
-#: elf32-m68k.c:3899 elf32-s390.c:3211 elf32-sh.c:3800 elf32-tilepro.c:3409
-#: elf32-xtensa.c:2965 elf64-s390.c:3161 elf64-x86-64.c:3846 elfxx-sparc.c:3906
-#: elfxx-tilegx.c:3793 /work/sources/binutils/current/bfd/elfnn-aarch64.c:5261
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6807
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2279
+#: elf-m10300.c:2092 elf32-arm.c:13400 elf32-i386.c:3403 elf32-m32r.c:2354
+#: elf32-m68k.c:3931 elf32-s390.c:3082 elf32-sh.c:3677 elf32-tilepro.c:3283
+#: elf32-xtensa.c:3023 elf64-s390.c:3031 elf64-x86-64.c:4062 elfxx-sparc.c:3795
+#: elfxx-tilegx.c:3667 elfnn-aarch64.c:5505 elfnn-aarch64.c:7102
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr ""
 
-#: elf-m10300.c:2156
+#: elf-m10300.c:2154
 msgid ""
 "error: inappropriate relocation type for shared library (did you forget -"
 "fpic?)"
 msgstr ""
 
-#: elf-m10300.c:2160
+#: elf-m10300.c:2158
 #, c-format
 msgid ""
 "%pB: taking the address of protected function '%s' cannot be done when "
 "making a shared library"
 msgstr ""
 
-#: elf-m10300.c:2163
+#: elf-m10300.c:2161
 msgid "internal error: suspicious relocation type used in shared library"
 msgstr ""
 
-#: elf-m10300.c:2649 elf32-avr.c:2492 elf32-frv.c:5641 elf64-ia64-vms.c:364
-#: elfxx-sparc.c:2795 reloc.c:8185 reloc16.c:155 elf32-ia64.c:361
-#: elf64-ia64.c:361
+#: elf-m10300.c:2647 elf32-avr.c:2489 elf32-frv.c:5620 elf64-ia64-vms.c:364
+#: elfxx-sparc.c:2683 reloc.c:8244 reloc16.c:155 elfnn-ia64.c:364
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr ""
 
@@ -963,7 +971,7 @@ msgstr ""
 msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
 msgstr ""
 
-#: elf-properties.c:316 elf-properties.c:396
+#: elf-properties.c:316 elf-properties.c:394
 msgid "Removed property %W to merge %pB and %pB\n"
 msgstr ""
 
@@ -971,421 +979,515 @@ msgstr ""
 msgid "Removed property %W to merge %pB and %pB (not found)\n"
 msgstr ""
 
-#: elf-properties.c:339
+#: elf-properties.c:337
 msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
 msgstr ""
 
-#: elf-properties.c:348
+#: elf-properties.c:346
 msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
 msgstr ""
 
-#: elf-properties.c:390
+#: elf-properties.c:388
 msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
 msgstr ""
 
 #. Merge .note.gnu.property sections.
-#: elf-properties.c:552 elf-properties.c:554
+#: elf-properties.c:550 elf-properties.c:552
 msgid "\n"
 msgstr ""
 
-#: elf-properties.c:553
+#: elf-properties.c:551
 msgid "Merging program properties\n"
 msgstr ""
 
 #. PR 17512: file: f057ec89.
-#: elf.c:345
+#: elf.c:336
 #, c-format
 msgid "%pB: attempt to load strings from a non-string section (number %d)"
 msgstr ""
 
-#: elf.c:360
+#: elf.c:361
 #, c-format
 msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
 msgstr ""
 
-#: elf.c:499 /work/sources/binutils/current/bfd/elfnn-aarch64.c:7891
+#: elf.c:513 elfnn-aarch64.c:8096
 #, c-format
 msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
 msgstr ""
 
-#: elf.c:664
-#, c-format
-msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
-msgstr ""
-
-#: elf.c:680
+#: elf.c:675
 #, c-format
 msgid "%pB: invalid size field in group section header: %#<PRIx64>"
 msgstr ""
 
-#: elf.c:728
+#: elf.c:720
 #, c-format
 msgid "%pB: invalid entry in SHT_GROUP section [%u]"
 msgstr ""
 
-#: elf.c:747
+#: elf.c:739
 #, c-format
 msgid "%pB: no valid group sections found"
 msgstr ""
 
 #. See PR 21957 for a reproducer.
-#: elf.c:776
+#: elf.c:768
 #, c-format
 msgid "%pB: group section '%pA' has no contents"
 msgstr ""
 
-#: elf.c:837
+#: elf.c:829
 #, c-format
 msgid "%pB: no group info for section '%pA'"
 msgstr ""
 
-#: elf.c:868 elf.c:3886 elflink.c:11403
+#: elf.c:859 elf.c:3955
 #, c-format
 msgid "%pB: warning: sh_link not set for section `%pA'"
 msgstr ""
 
-#: elf.c:888
+#: elf.c:879
 #, c-format
 msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
 msgstr ""
 
-#: elf.c:901
+#: elf.c:892
 #, c-format
 msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
 msgstr ""
 
-#: elf.c:922
+#: elf.c:913
 #, c-format
 msgid "%pB: section group entry number %u is corrupt"
 msgstr ""
 
-#: elf.c:945
+#: elf.c:936
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
 msgstr ""
 
-#: elf.c:1408
+#: elf.c:1438
 #, c-format
 msgid "%pB: invalid sh_link field (%d) in section number %d"
 msgstr ""
 
-#: elf.c:1424
+#: elf.c:1454
 #, c-format
 msgid "%pB: failed to find link section for section %d"
 msgstr ""
 
-#: elf.c:1451
+#: elf.c:1481
 #, c-format
 msgid "%pB: failed to find info section for section %d"
 msgstr ""
 
-#: elf.c:1623
+#: elf.c:1653
 #, c-format
 msgid ""
 "\n"
 "Program Header:\n"
 msgstr ""
 
-#: elf.c:1665
+#: elf.c:1695
 #, c-format
 msgid ""
 "\n"
 "Dynamic Section:\n"
 msgstr ""
 
-#: elf.c:1806
+#: elf.c:1836
 #, c-format
 msgid ""
 "\n"
 "Version definitions:\n"
 msgstr ""
 
-#: elf.c:1831
+#: elf.c:1861
 #, c-format
 msgid ""
 "\n"
 "Version References:\n"
 msgstr ""
 
-#: elf.c:1836
+#: elf.c:1866
 #, c-format
 msgid "  required from %s:\n"
 msgstr ""
 
-#: elf.c:2037
+#: elf.c:2082
 #, c-format
 msgid "%pB: warning: loop in section dependencies detected"
 msgstr ""
 
-#: elf.c:2145
+#: elf.c:2190
 #, c-format
 msgid ""
 "%pB: warning: multiple symbol tables detected - ignoring the table in "
 "section %u"
 msgstr ""
 
-#: elf.c:2229
+#: elf.c:2274
 #, c-format
 msgid ""
 "%pB: warning: multiple dynamic symbol tables detected - ignoring the table "
 "in section %u"
 msgstr ""
 
-#: elf.c:2342
+#: elf.c:2387
 #, c-format
 msgid "%pB: invalid link %u for reloc section %s (index %u)"
 msgstr ""
 
-#: elf.c:2504 elf.c:2519 elf.c:2530 elf.c:2543
+#: elf.c:2478
+#, c-format
+msgid ""
+"%pB: warning: secondary relocation section '%s' for section %pA found - "
+"ignoring"
+msgstr ""
+
+#: elf.c:2562 elf.c:2577 elf.c:2588 elf.c:2601
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr ""
 
-#: elf.c:3248
+#: elf.c:3308
 #, c-format
 msgid "%pB: error: alignment power %d of section `%pA' is too big"
 msgstr ""
 
-#: elf.c:3278
+#: elf.c:3341
 #, c-format
 msgid "warning: section `%pA' type changed to PROGBITS"
 msgstr ""
 
-#: elf.c:3754
+#: elf.c:3824
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr ""
 
-#: elf.c:3839
+#: elf.c:3909
 #, c-format
 msgid ""
 "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
 msgstr ""
 
-#: elf.c:3864
+#: elf.c:3934
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
 msgstr ""
 
-#: elf.c:4430
+#: elf.c:4495
 #, c-format
-msgid "%pB: GNU_MBIN section `%pA' has invalid sh_info field: %d"
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
 msgstr ""
 
-#: elf.c:5013
+#: elf.c:5086
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr ""
 
-#: elf.c:5020
+#: elf.c:5093
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr ""
 
-#: elf.c:5024
+#: elf.c:5097
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr ""
 
-#: elf.c:5538
+#: elf.c:5687
 #, c-format
 msgid ""
 "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
 msgstr ""
 
-#: elf.c:5566
+#: elf.c:5713
 #, c-format
 msgid "%pB: not enough room for program headers, try linking with -N"
 msgstr ""
 
-#: elf.c:5654
+#: elf.c:5830
 #, c-format
 msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
 msgstr ""
 
-#: elf.c:5791
+#. The fix for this error is usually to edit the linker script being
+#. used and set up the program headers manually.  Either that or
+#. leave room for the headers at the start of the SECTIONS.
+#: elf.c:5967
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr ""
+
+#: elf.c:6007
 #, c-format
 msgid "%pB: section `%pA' can't be allocated in segment %d"
 msgstr ""
 
-#: elf.c:5839
+#: elf.c:6139
 #, c-format
 msgid "%pB: warning: allocated section `%s' not in segment"
 msgstr ""
 
-#: elf.c:6072
+#: elf.c:6300
 #, c-format
 msgid ""
 "%pB: error: non-load segment %d includes file header and/or program header"
 msgstr ""
 
-#. The fix for this error is usually to edit the linker script being
-#. used and set up the program headers manually.  Either that or
-#. leave room for the headers at the start of the SECTIONS.
-#: elf.c:6249
-#, c-format
-msgid "%pB: error: PHDR segment not covered by LOAD segment"
-msgstr ""
-
-#: elf.c:6606
+#: elf.c:6804
 #, c-format
 msgid "%pB: symbol `%s' required but not present"
 msgstr ""
 
-#: elf.c:6949
+#: elf.c:7147
 #, c-format
 msgid ""
 "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this "
 "intentional?"
 msgstr ""
 
-#: elf.c:7574
+#: elf.c:7773
 #, c-format
 msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
 msgstr ""
 
-#: elf.c:8073
+#: elf.c:8286
+#, c-format
+msgid ""
+"%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr ""
+
+#: elf.c:8316
 #, c-format
 msgid ""
 "unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr ""
 
-#: elf.c:8421
+#: elf.c:8703
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr ""
 
-#: elf.c:8548
+#: elf.c:8836
 #, c-format
 msgid "%pB: .gnu.version_d invalid entry"
 msgstr ""
 
-#: elf32-arc.c:440 elf32-frv.c:6630 elf32-iq2000.c:870 elf32-m32c.c:914
-#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3199 elf32-visium.c:841
-#: elf64-ppc.c:4950
+#: elf.c:9293
+#, c-format
+msgid ""
+"%pB:%pA: error: attempting to write into an unallocated compressed section"
+msgstr ""
+
+#: elf.c:9302
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr ""
+
+#: elf.c:9313
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr ""
+
+#: elf.c:12430
+msgid "GNU_MBIND section is unsupported"
+msgstr ""
+
+#: elf.c:12432
+msgid "symbol type STT_GNU_IFUNC is unsupported"
+msgstr ""
+
+#: elf.c:12434
+msgid "symbol binding STB_GNU_UNIQUE is unsupported"
+msgstr ""
+
+#: elf.c:12618 elf64-sparc.c:123 elfcode.h:1482
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr ""
+
+#: elf.c:12692
+#, c-format
+msgid ""
+"%pB(%pA): link section cannot be set because the output file does not have a "
+"symbol table"
+msgstr ""
+
+#: elf.c:12704
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr ""
+
+#: elf.c:12718
+#, c-format
+msgid ""
+"%pB(%pA): info section index cannot be set because the section is not in the "
+"output"
+msgstr ""
+
+#: elf.c:12784
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr ""
+
+#: elf.c:12796
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr ""
+
+#: elf.c:12819
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr ""
+
+#: elf.c:12838
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %u is empty"
+msgstr ""
+
+#: elf.c:12863
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a missing symbol"
+msgstr ""
+
+#: elf.c:12880
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a deleted symbol"
+msgstr ""
+
+#: elf.c:12893
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u is of an unknown type"
+msgstr ""
+
+#: elf32-arc.c:455 elf32-frv.c:6611 elf32-iq2000.c:868 elf32-m32c.c:914
+#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3205 elf32-visium.c:844
+#: elf64-ppc.c:5291
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr ""
 
-#: elf32-arc.c:627
+#: elf32-arc.c:642
 #, c-format
 msgid "warning: %pB: conflicting platform configuration %s with %s"
 msgstr ""
 
-#: elf32-arc.c:646
+#: elf32-arc.c:661
 #, c-format
 msgid "error: %pB: unable to merge CPU base attributes %s with %s"
 msgstr ""
 
-#: elf32-arc.c:683
+#: elf32-arc.c:698
 #, c-format
 msgid "error: %pB: unable to merge ISA extension attributes %s"
 msgstr ""
 
-#: elf32-arc.c:707
+#: elf32-arc.c:722
 #, c-format
 msgid "error: %pB: conflicting ISA extension attributes %s with %s"
 msgstr ""
 
-#: elf32-arc.c:747
+#: elf32-arc.c:762
 #, c-format
 msgid "error: %pB: cannot mix rf16 with full register set %pB"
 msgstr ""
 
-#: elf32-arc.c:775
+#: elf32-arc.c:790
 #, c-format
 msgid "error: %pB: conflicting attributes %s: %s with %s"
 msgstr ""
 
-#: elf32-arc.c:802
+#: elf32-arc.c:817
 #, c-format
 msgid "error: %pB: conflicting attributes %s"
 msgstr ""
 
-#: elf32-arc.c:907
+#: elf32-arc.c:922
 #, c-format
 msgid ""
 "error: attempting to link %pB with a binary %pB of different architecture"
 msgstr ""
 
-#: elf32-arc.c:923 elf32-iq2000.c:846 elf32-m32c.c:889 elf32-m68hc1x.c:1385
-#: elf32-ppc.c:3865 elf64-sparc.c:711 elfxx-mips.c:15354
+#: elf32-arc.c:938 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1391
+#: elf32-ppc.c:3867 elf64-sparc.c:722 elfxx-mips.c:15513
 #, c-format
 msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
 msgstr ""
 
-#: elf32-arc.c:1012
+#: elf32-arc.c:1027
 msgid "error: the ARC4 architecture is no longer supported"
 msgstr ""
 
-#: elf32-arc.c:1018
+#: elf32-arc.c:1033
 msgid "warning: unset or old architecture flags; use default machine"
 msgstr ""
 
-#: elf32-arc.c:1151
+#: elf32-arc.c:1159
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s' is invalid, 16 MSB should be "
 "%#x (value is %#<PRIx64>)"
 msgstr ""
 
-#: elf32-arc.c:1162
+#: elf32-arc.c:1170
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s+%#<PRIx64>' is invalid, 16 MSB "
 "should be %#x (value is %#<PRIx64>)"
 msgstr ""
 
-#: elf32-arc.c:1876
+#: elf32-arc.c:1885
 msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
 msgstr ""
 
-#: elf32-arc.c:1900 elf32-rl78.c:1098 elf32-rx.c:1470
+#: elf32-arc.c:1909 elf32-rl78.c:1098 elf32-rx.c:1475
 #, c-format
 msgid ""
 "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
 msgstr ""
 
-#: elf32-arc.c:1905 elf32-rl78.c:1103 elf32-rx.c:1475
+#: elf32-arc.c:1914 elf32-rl78.c:1103 elf32-rx.c:1480
 #, c-format
 msgid "%pB(%pA): internal error: out of range error"
 msgstr ""
 
-#: elf32-arc.c:1910 elf32-rl78.c:1108 elf32-rx.c:1480
+#: elf32-arc.c:1919 elf32-rl78.c:1108 elf32-rx.c:1485
 #, c-format
 msgid "%pB(%pA): internal error: unsupported relocation error"
 msgstr ""
 
-#: elf32-arc.c:1915 elf32-rl78.c:1113 elf32-rx.c:1485
+#: elf32-arc.c:1924 elf32-rl78.c:1113 elf32-rx.c:1490
 #, c-format
 msgid "%pB(%pA): internal error: dangerous relocation"
 msgstr ""
 
-#: elf32-arc.c:1920 elf32-rl78.c:1118 elf32-rx.c:1490
+#: elf32-arc.c:1929 elf32-rl78.c:1118 elf32-rx.c:1495
 #, c-format
 msgid "%pB(%pA): internal error: unknown error"
 msgstr ""
 
-#: elf32-arc.c:2013 elf32-arc.c:2081 elf32-arm.c:15323 elf32-metag.c:2257
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7462
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:497
+#: elf32-arc.c:2022 elf32-arc.c:2090 elf32-arm.c:15513 elf32-metag.c:2253
+#: elf32-nds32.c:5498 elfnn-aarch64.c:7739 elfnn-riscv.c:483
 #, c-format
 msgid ""
 "%pB: relocation %s against `%s' can not be used when making a shared object; "
 "recompile with -fPIC"
 msgstr ""
 
-#: elf32-arc.c:2949
+#: elf32-arc.c:2909
 #, c-format
 msgid "%pB: unknown mandatory ARC object attribute %d"
 msgstr ""
 
-#: elf32-arc.c:2957
+#: elf32-arc.c:2917
 #, c-format
 msgid "warning: %pB: unknown ARC object attribute %d"
 msgstr ""
 
-#: elf32-arm.c:4304 elf32-arm.c:4338 elf32-arm.c:4357 elf32-arm.c:4409
+#: elf32-arm.c:4307 elf32-arm.c:4341 elf32-arm.c:4360 elf32-arm.c:4412
 #, c-format
 msgid ""
 "%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE "
@@ -1393,141 +1495,156 @@ msgid ""
 "movw instruction"
 msgstr ""
 
-#: elf32-arm.c:4369 elf32-arm.c:4423 elf32-arm.c:9093 elf32-arm.c:9183
+#: elf32-arm.c:4372 elf32-arm.c:4426 elf32-arm.c:9116 elf32-arm.c:9206
 #, c-format
 msgid ""
 "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call "
 "to %s"
 msgstr ""
 
-#: elf32-arm.c:4697
+#: elf32-arm.c:4552
+#, c-format
+msgid ""
+"ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination "
+"(%#<PRIx64>)"
+msgstr ""
+
+#: elf32-arm.c:4721
 #, c-format
 msgid "no address assigned to the veneers output section %s"
 msgstr ""
 
-#: elf32-arm.c:4772 elf32-arm.c:6909 elf32-csky.c:3287 elf32-hppa.c:579
-#: elf32-m68hc1x.c:165 elf32-metag.c:1186 elf32-nios2.c:2208 elf64-ppc.c:3501
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:3098
+#: elf32-arm.c:4796 elf32-arm.c:6943 elf32-csky.c:3172 elf32-hppa.c:584
+#: elf32-m68hc1x.c:165 elf32-metag.c:1182 elf32-nios2.c:2204 elf64-ppc.c:3775
+#: elfnn-aarch64.c:3190
 #, c-format
 msgid "%pB: cannot create stub entry %s"
 msgstr ""
 
-#: elf32-arm.c:5957
+#: elf32-arm.c:5017 elf32-csky.c:3514 elf32-hppa.c:734 elf32-m68hc11.c:422
+#: elf32-m68hc12.c:542 elf32-metag.c:3347 elf32-nios2.c:2497 elf64-ppc.c:11315
+#: elfnn-aarch64.c:3259
+msgid ""
+"%F%P: Could not assign '%pA' to an output section. Retry without --enable-"
+"non-contiguous-regions.\n"
+msgstr ""
+
+#: elf32-arm.c:5987
 #, c-format
 msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
 msgstr ""
 
-#: elf32-arm.c:5966
+#: elf32-arm.c:5996
 #, c-format
 msgid ""
 "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
 msgstr ""
 
-#: elf32-arm.c:6005
+#: elf32-arm.c:6035
 #, c-format
 msgid ""
 "%pB: invalid standard symbol `%s'; it must be a global or weak function "
 "symbol"
 msgstr ""
 
-#: elf32-arm.c:6011
+#: elf32-arm.c:6041
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr ""
 
-#: elf32-arm.c:6023
+#: elf32-arm.c:6053
 #, c-format
 msgid "%pB: `%s' and its special symbol are in different sections"
 msgstr ""
 
-#: elf32-arm.c:6035
+#: elf32-arm.c:6065
 #, c-format
 msgid "%pB: entry function `%s' not output"
 msgstr ""
 
-#: elf32-arm.c:6042
+#: elf32-arm.c:6072
 #, c-format
 msgid "%pB: entry function `%s' is empty"
 msgstr ""
 
-#: elf32-arm.c:6171
+#: elf32-arm.c:6201
 #, c-format
 msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
 msgstr ""
 
-#: elf32-arm.c:6217
+#: elf32-arm.c:6250
 #, c-format
 msgid ""
 "%pB: invalid import library entry: `%s'; symbol should be absolute, global "
 "and refer to Thumb functions"
 msgstr ""
 
-#: elf32-arm.c:6239
+#: elf32-arm.c:6272
 #, c-format
 msgid "entry function `%s' disappeared from secure code"
 msgstr ""
 
-#: elf32-arm.c:6263
+#: elf32-arm.c:6296
 #, c-format
 msgid "`%s' refers to a non entry function"
 msgstr ""
 
-#: elf32-arm.c:6278
+#: elf32-arm.c:6311
 #, c-format
 msgid "%pB: visibility of symbol `%s' has changed"
 msgstr ""
 
-#: elf32-arm.c:6287
+#: elf32-arm.c:6320
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr ""
 
-#: elf32-arm.c:6306
+#: elf32-arm.c:6339
 #, c-format
 msgid "offset of veneer for entry function `%s' not a multiple of its size"
 msgstr ""
 
-#: elf32-arm.c:6326
+#: elf32-arm.c:6359
 msgid ""
 "new entry function(s) introduced but no output import library specified:"
 msgstr ""
 
-#: elf32-arm.c:6334
+#: elf32-arm.c:6367
 #, c-format
 msgid "start address of `%s' is different from previous link"
 msgstr ""
 
-#: elf32-arm.c:7042 elf32-arm.c:7078
+#: elf32-arm.c:7076 elf32-arm.c:7111
 #, c-format
 msgid "unable to find %s glue '%s' for '%s'"
 msgstr ""
 
-#: elf32-arm.c:7793
+#: elf32-arm.c:7822
 #, c-format
 msgid "%pB: BE8 images only valid in big-endian mode"
 msgstr ""
 
 #. Give a warning, but do as the user requests anyway.
-#: elf32-arm.c:8024
+#: elf32-arm.c:8049
 #, c-format
 msgid ""
 "%pB: warning: selected VFP11 erratum workaround is not necessary for target "
 "architecture"
 msgstr ""
 
-#: elf32-arm.c:8051
+#: elf32-arm.c:8076
 #, c-format
 msgid ""
 "%pB: warning: selected STM32L4XX erratum workaround is not necessary for "
 "target architecture"
 msgstr ""
 
-#: elf32-arm.c:8588 elf32-arm.c:8608 elf32-arm.c:8674 elf32-arm.c:8693
+#: elf32-arm.c:8612 elf32-arm.c:8632 elf32-arm.c:8699 elf32-arm.c:8718
 #, c-format
 msgid "%pB: unable to find %s veneer `%s'"
 msgstr ""
 
-#: elf32-arm.c:8900
+#: elf32-arm.c:8925
 #, c-format
 msgid ""
 "%pB(%pA+%#x): error: multiple load detected in non-last IT block "
@@ -1535,202 +1652,199 @@ msgid ""
 "it to generate only one instruction per IT block"
 msgstr ""
 
-#: elf32-arm.c:9000
+#: elf32-arm.c:9023
 #, c-format
 msgid "invalid TARGET2 relocation type '%s'"
 msgstr ""
 
 #. FIXME: We ought to be able to generate thumb-1 PLT
 #. instructions...
-#: elf32-arm.c:9802
+#: elf32-arm.c:9825
 #, c-format
 msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
 msgstr ""
 
-#: elf32-arm.c:10106 elf32-arm.c:10148
+#: elf32-arm.c:10135 elf32-arm.c:10177
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
 msgstr ""
 
-#: elf32-arm.c:10492
+#: elf32-arm.c:10521
 msgid "shared object"
 msgstr ""
 
-#: elf32-arm.c:10495
+#: elf32-arm.c:10524
 msgid "PIE executable"
 msgstr ""
 
-#: elf32-arm.c:10498
+#: elf32-arm.c:10527
 #, c-format
 msgid ""
 "%pB: relocation %s against external or undefined symbol `%s' can not be used "
 "when making a %s; recompile with -fPIC"
 msgstr ""
 
-#: elf32-arm.c:10635 elf32-arm.c:11062
+#: elf32-arm.c:10664 elf32-arm.c:11091
 #, c-format
 msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
 msgstr ""
 
-#: elf32-arm.c:11975 elf32-arm.c:12001
+#: elf32-arm.c:12003 elf32-arm.c:12029
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by "
 "TLS_GOTDESC"
 msgstr ""
 
-#: elf32-arm.c:12047 elf32-csky.c:4853 elf32-m68k.c:3703 elf32-metag.c:1919
-#: elf32-nios2.c:4366
+#: elf32-arm.c:12075 elf32-csky.c:4746 elf32-m68k.c:3735 elf32-metag.c:1915
+#: elf32-nios2.c:4385
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
 msgstr ""
 
-#: elf32-arm.c:12261
+#: elf32-arm.c:12289
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group "
 "relocations"
 msgstr ""
 
-#: elf32-arm.c:12302 elf32-arm.c:12394 elf32-arm.c:12482 elf32-arm.c:12572
+#: elf32-arm.c:12330 elf32-arm.c:12422 elf32-arm.c:12510 elf32-arm.c:12600
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group "
 "relocation %s"
 msgstr ""
 
-#: elf32-arm.c:13078 elf32-sh.c:3689
+#: elf32-arm.c:13232 elf32-sh.c:3571
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
 msgstr ""
 
-#: elf32-arm.c:13191 elf32-m68k.c:3936 elf32-xtensa.c:2703
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6534
+#: elf32-arm.c:13345 elf32-m68k.c:3968 elf32-xtensa.c:2761 elfnn-aarch64.c:6829
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
 msgstr ""
 
-#: elf32-arm.c:13193 elf32-m68k.c:3938 elf32-xtensa.c:2705
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6536
+#: elf32-arm.c:13347 elf32-m68k.c:3970 elf32-xtensa.c:2763 elfnn-aarch64.c:6831
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
 msgstr ""
 
-#: elf32-arm.c:13276 elf32-tic6x.c:2708
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6871
+#: elf32-arm.c:13430 elf32-tic6x.c:2649 elfnn-aarch64.c:7166
 msgid "out of range"
 msgstr ""
 
-#: elf32-arm.c:13280 elf32-nios2.c:4500 elf32-pru.c:933 elf32-tic6x.c:2712
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6875
+#: elf32-arm.c:13434 elf32-nios2.c:4519 elf32-pru.c:936 elf32-tic6x.c:2653
+#: elfnn-aarch64.c:7170
 msgid "unsupported relocation"
 msgstr ""
 
-#: elf32-arm.c:13288 elf32-nios2.c:4510 elf32-pru.c:943 elf32-tic6x.c:2720
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6883
+#: elf32-arm.c:13442 elf32-nios2.c:4529 elf32-pru.c:946 elf32-tic6x.c:2661
+#: elfnn-aarch64.c:7178
 msgid "unknown error"
 msgstr ""
 
-#: elf32-arm.c:13764
+#: elf32-arm.c:13920
 #, c-format
 msgid ""
 "warning: not setting interworking flag of %pB since it has already been "
 "specified as non-interworking"
 msgstr ""
 
-#: elf32-arm.c:13768
+#: elf32-arm.c:13924
 #, c-format
 msgid "warning: clearing the interworking flag of %pB due to outside request"
 msgstr ""
 
-#: elf32-arm.c:13813
+#: elf32-arm.c:13969
 #, c-format
 msgid ""
 "warning: clearing the interworking flag of %pB because non-interworking code "
 "in %pB has been linked with it"
 msgstr ""
 
-#: elf32-arm.c:13900
+#: elf32-arm.c:14056
 #, c-format
 msgid "%pB: unknown mandatory EABI object attribute %d"
 msgstr ""
 
-#: elf32-arm.c:13908
+#: elf32-arm.c:14064
 #, c-format
 msgid "warning: %pB: unknown EABI object attribute %d"
 msgstr ""
 
-#: elf32-arm.c:14175
+#: elf32-arm.c:14364
 #, c-format
 msgid "error: %pB: unknown CPU architecture"
 msgstr ""
 
-#: elf32-arm.c:14213 elf32-nios2.c:2946
+#: elf32-arm.c:14402 elf32-nios2.c:2953
 #, c-format
 msgid "error: %pB: conflicting CPU architectures %d/%d"
 msgstr ""
 
-#: elf32-arm.c:14310
+#: elf32-arm.c:14499
 #, c-format
 msgid ""
 "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr ""
 
-#: elf32-arm.c:14339
+#: elf32-arm.c:14528
 #, c-format
 msgid "error: %pB uses VFP register arguments, %pB does not"
 msgstr ""
 
-#: elf32-arm.c:14497
+#: elf32-arm.c:14687
 #, c-format
 msgid "error: %pB: unable to merge virtualization attributes with %pB"
 msgstr ""
 
-#: elf32-arm.c:14523
+#: elf32-arm.c:14713
 #, c-format
 msgid "error: %pB: conflicting architecture profiles %c/%c"
 msgstr ""
 
-#: elf32-arm.c:14662
+#: elf32-arm.c:14852
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
 msgstr ""
 
-#: elf32-arm.c:14671
+#: elf32-arm.c:14861
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr ""
 
-#: elf32-arm.c:14683
+#: elf32-arm.c:14873
 #, c-format
 msgid "error: %pB: SB relative addressing conflicts with use of R9"
 msgstr ""
 
-#: elf32-arm.c:14696
+#: elf32-arm.c:14886
 #, c-format
 msgid ""
 "warning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; "
 "use of wchar_t values across objects may fail"
 msgstr ""
 
-#: elf32-arm.c:14727
+#: elf32-arm.c:14917
 #, c-format
 msgid ""
 "warning: %pB uses %s enums yet the output is to use %s enums; use of enum "
 "values across objects may fail"
 msgstr ""
 
-#: elf32-arm.c:14739
+#: elf32-arm.c:14929
 #, c-format
 msgid "error: %pB uses iWMMXt register arguments, %pB does not"
 msgstr ""
 
-#: elf32-arm.c:14756
+#: elf32-arm.c:14946
 #, c-format
 msgid "error: fp16 format mismatch between %pB and %pB"
 msgstr ""
 
-#: elf32-arm.c:14792
+#: elf32-arm.c:14982
 #, c-format
 msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr ""
@@ -1740,355 +1854,342 @@ msgstr ""
 #. Ignore init flag - it may not be set, despite the flags field containing valid data.
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
-#: elf32-arm.c:14879 elf32-bfin.c:4740 elf32-cris.c:3908 elf32-m68hc1x.c:1410
-#: elf32-m68k.c:1201 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
-#: elf32-xgate.c:494 elfxx-mips.c:16037
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7037
+#: elf32-arm.c:15069 elf32-bfin.c:4719 elf32-cris.c:3861 elf32-m68hc1x.c:1416
+#: elf32-m68k.c:1267 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
+#: elf32-xgate.c:494 elfxx-mips.c:16199 elfnn-aarch64.c:7332
 #, c-format
 msgid "private flags = %lx:"
 msgstr ""
 
-#: elf32-arm.c:14888
+#: elf32-arm.c:15078
 #, c-format
 msgid " [interworking enabled]"
 msgstr ""
 
-#: elf32-arm.c:14896
+#: elf32-arm.c:15086
 #, c-format
 msgid " [VFP float format]"
 msgstr ""
 
-#: elf32-arm.c:14898
+#: elf32-arm.c:15088
 #, c-format
 msgid " [Maverick float format]"
 msgstr ""
 
-#: elf32-arm.c:14900
+#: elf32-arm.c:15090
 #, c-format
 msgid " [FPA float format]"
 msgstr ""
 
-#: elf32-arm.c:14903
+#: elf32-arm.c:15093
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr ""
 
-#: elf32-arm.c:14906 elf32-arm.c:14992
+#: elf32-arm.c:15096 elf32-arm.c:15182
 #, c-format
 msgid " [position independent]"
 msgstr ""
 
-#: elf32-arm.c:14909
+#: elf32-arm.c:15099
 #, c-format
 msgid " [new ABI]"
 msgstr ""
 
-#: elf32-arm.c:14912
+#: elf32-arm.c:15102
 #, c-format
 msgid " [old ABI]"
 msgstr ""
 
-#: elf32-arm.c:14915
+#: elf32-arm.c:15105
 #, c-format
 msgid " [software FP]"
 msgstr ""
 
-#: elf32-arm.c:14924
+#: elf32-arm.c:15114
 #, c-format
 msgid " [Version1 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14927 elf32-arm.c:14938
+#: elf32-arm.c:15117 elf32-arm.c:15128
 #, c-format
 msgid " [sorted symbol table]"
 msgstr ""
 
-#: elf32-arm.c:14929 elf32-arm.c:14940
+#: elf32-arm.c:15119 elf32-arm.c:15130
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr ""
 
-#: elf32-arm.c:14935
+#: elf32-arm.c:15125
 #, c-format
 msgid " [Version2 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14943
+#: elf32-arm.c:15133
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr ""
 
-#: elf32-arm.c:14946
+#: elf32-arm.c:15136
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr ""
 
-#: elf32-arm.c:14953
+#: elf32-arm.c:15143
 #, c-format
 msgid " [Version3 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14957
+#: elf32-arm.c:15147
 #, c-format
 msgid " [Version4 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14961
+#: elf32-arm.c:15151
 #, c-format
 msgid " [Version5 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14964
+#: elf32-arm.c:15154
 #, c-format
 msgid " [soft-float ABI]"
 msgstr ""
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:15157
 #, c-format
 msgid " [hard-float ABI]"
 msgstr ""
 
-#: elf32-arm.c:14973
+#: elf32-arm.c:15163
 #, c-format
 msgid " [BE8]"
 msgstr ""
 
-#: elf32-arm.c:14976
+#: elf32-arm.c:15166
 #, c-format
 msgid " [LE8]"
 msgstr ""
 
-#: elf32-arm.c:14982
+#: elf32-arm.c:15172
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr ""
 
-#: elf32-arm.c:14989
+#: elf32-arm.c:15179
 #, c-format
 msgid " [relocatable executable]"
 msgstr ""
 
-#: elf32-arm.c:14995
+#: elf32-arm.c:15185
 #, c-format
 msgid " [FDPIC ABI supplement]"
 msgstr ""
 
-#: elf32-arm.c:15000 /work/sources/binutils/current/bfd/elfnn-aarch64.c:7040
+#: elf32-arm.c:15190 elfnn-aarch64.c:7335
 #, c-format
 msgid "<Unrecognised flag bits set>"
 msgstr ""
 
-#: elf32-arm.c:15117 elf32-i386.c:1529 elf32-s390.c:960 elf32-tic6x.c:2783
-#: elf32-tilepro.c:1479 elf32-xtensa.c:1029 elf64-s390.c:882
-#: elf64-x86-64.c:1865 elfxx-sparc.c:1422 elfxx-tilegx.c:1700
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7329
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:539
+#: elf32-arm.c:15307 elf32-i386.c:1524 elf32-s390.c:925 elf32-tic6x.c:2724
+#: elf32-tilepro.c:1443 elf32-xtensa.c:1093 elf64-s390.c:847
+#: elf64-x86-64.c:1902 elfxx-sparc.c:1386 elfxx-tilegx.c:1664
+#: elfnn-aarch64.c:7606 elfnn-riscv.c:525
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr ""
 
-#: elf32-arm.c:15508
+#: elf32-arm.c:15696
 #, c-format
 msgid ""
 "FDPIC does not yet support %s relocation to become dynamic for executable"
 msgstr ""
 
-#: elf32-arm.c:16558 elf32-csky.c:1931 elf32-hppa.c:2090 elf32-lm32.c:1998
-#: elf32-m32r.c:2110 elf32-metag.c:2797 elf32-nds32.c:4330 elf32-or1k.c:2858
-#: elf32-ppc.c:5469 elf32-s390.c:1854 elf32-sh.c:2975 elf32-tic6x.c:3252
-#: elf32-tilepro.c:2245 elf64-ppc.c:9023 elf64-s390.c:1791 elfxx-sparc.c:2435
-#: elfxx-tilegx.c:2491 elfxx-x86.c:571
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:8677
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:1142
-#, c-format
-msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
-msgstr ""
-
-#: elf32-arm.c:16854
+#: elf32-arm.c:16939
 #, c-format
 msgid "errors encountered processing file %pB"
 msgstr ""
 
-#: elf32-arm.c:17301 elflink.c:12556 elflink.c:12603
+#: elf32-arm.c:17326 elflink.c:12818 elflink.c:12865
 #, c-format
 msgid "could not find section %s"
 msgstr ""
 
-#: elf32-arm.c:18512
+#: elf32-arm.c:18550
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub is allocated in unsafe location"
 msgstr ""
 
 #. There's not much we can do apart from complain if this
 #. happens.
-#: elf32-arm.c:18539
+#: elf32-arm.c:18577
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
 msgstr ""
 
-#: elf32-arm.c:19366 elf32-arm.c:19388
+#: elf32-arm.c:19404 elf32-arm.c:19426
 #, c-format
 msgid "%pB: error: VFP11 veneer out of range"
 msgstr ""
 
-#: elf32-arm.c:19439
+#: elf32-arm.c:19477
 #, c-format
 msgid ""
 "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range by "
 "%<PRId64> bytes; cannot encode branch instruction"
 msgstr ""
 
-#: elf32-arm.c:19478
+#: elf32-arm.c:19516
 #, c-format
 msgid "%pB: error: cannot create STM32L4XX veneer"
 msgstr ""
 
-#: elf32-arm.c:20567
+#: elf32-arm.c:20600
 #, c-format
 msgid "error: %pB is already in final BE8 format"
 msgstr ""
 
-#: elf32-arm.c:20643
+#: elf32-arm.c:20676
 #, c-format
 msgid ""
 "error: source object %pB has EABI version %d, but target %pB has EABI "
 "version %d"
 msgstr ""
 
-#: elf32-arm.c:20658
+#: elf32-arm.c:20691
 #, c-format
 msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
 msgstr ""
 
-#: elf32-arm.c:20668
+#: elf32-arm.c:20701
 #, c-format
 msgid ""
 "error: %pB passes floats in float registers, whereas %pB passes them in "
 "integer registers"
 msgstr ""
 
-#: elf32-arm.c:20672
+#: elf32-arm.c:20705
 #, c-format
 msgid ""
 "error: %pB passes floats in integer registers, whereas %pB passes them in "
 "float registers"
 msgstr ""
 
-#: elf32-arm.c:20682 elf32-arm.c:20686 elf32-arm.c:20696
+#: elf32-arm.c:20715 elf32-arm.c:20719 elf32-arm.c:20729
 #, c-format
 msgid "error: %pB uses %s instructions, whereas %pB does not"
 msgstr ""
 
-#: elf32-arm.c:20700
+#: elf32-arm.c:20733
 #, c-format
 msgid "error: %pB does not use %s instructions, whereas %pB does"
 msgstr ""
 
-#: elf32-arm.c:20719
+#: elf32-arm.c:20752
 #, c-format
 msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
 msgstr ""
 
-#: elf32-arm.c:20723
+#: elf32-arm.c:20756
 #, c-format
 msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
 msgstr ""
 
-#: elf32-arm.c:20737
+#: elf32-arm.c:20770
 #, c-format
 msgid "warning: %pB supports interworking, whereas %pB does not"
 msgstr ""
 
-#: elf32-arm.c:20743
+#: elf32-arm.c:20776
 #, c-format
 msgid "warning: %pB does not support interworking, whereas %pB does"
 msgstr ""
 
-#: elf32-avr.c:1518 elf32-bfin.c:3135 elf32-cris.c:2041 elf32-epiphany.c:577
-#: elf32-fr30.c:602 elf32-frv.c:4057 elf32-ft32.c:502 elf32-ip2k.c:1493
-#: elf32-iq2000.c:701 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1998
-#: elf32-moxie.c:296 elf32-msp430.c:1366 elf32-mt.c:406 elf32-or1k.c:1767
-#: elf32-tilepro.c:3514 elf32-v850.c:2299 elf32-visium.c:689
-#: elf32-xstormy16.c:939 elf64-mmix.c:1549 elfxx-tilegx.c:3878
+#: elf32-avr.c:1516 elf32-bfin.c:3134 elf32-cris.c:2041 elf32-epiphany.c:573
+#: elf32-fr30.c:602 elf32-frv.c:4056 elf32-ft32.c:502 elf32-ip2k.c:1488
+#: elf32-iq2000.c:699 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1994
+#: elf32-moxie.c:296 elf32-msp430.c:1375 elf32-mt.c:406 elf32-or1k.c:1825
+#: elf32-tilepro.c:3388 elf32-v850.c:2298 elf32-visium.c:688
+#: elf32-xstormy16.c:937 elf64-bpf.c:521 elf64-mmix.c:1549 elfxx-tilegx.c:3752
 msgid "internal error: dangerous relocation"
 msgstr ""
 
-#: elf32-avr.c:3327 /work/sources/binutils/current/bfd/elfnn-aarch64.c:3126
+#: elf32-avr.c:3327 elfnn-aarch64.c:3221
 #, c-format
 msgid "cannot create stub entry %s"
 msgstr ""
 
-#: elf32-bfin.c:106 elf32-bfin.c:362
+#: elf32-bfin.c:107 elf32-bfin.c:363
 msgid "relocation should be even number"
 msgstr ""
 
-#: elf32-bfin.c:1585
+#: elf32-bfin.c:1584
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
 msgstr ""
 
-#: elf32-bfin.c:1617 elf32-i386.c:3449 elf32-m68k.c:3976 elf32-s390.c:3269
-#: elf64-s390.c:3219 elf64-x86-64.c:3896
+#: elf32-bfin.c:1616 elf32-i386.c:3443 elf32-m68k.c:4008 elf32-s390.c:3140
+#: elf64-s390.c:3089 elf64-x86-64.c:4112
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
 msgstr ""
 
-#: elf32-bfin.c:2638
+#: elf32-bfin.c:2641
 #, c-format
 msgid ""
 "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero "
 "addend"
 msgstr ""
 
-#: elf32-bfin.c:2655
+#: elf32-bfin.c:2658
 msgid "relocation references symbol not defined in the module"
 msgstr ""
 
-#: elf32-bfin.c:2752
+#: elf32-bfin.c:2755
 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
 msgstr ""
 
-#: elf32-bfin.c:2793 elf32-bfin.c:2916
+#: elf32-bfin.c:2795 elf32-bfin.c:2916
 msgid "cannot emit fixups in read-only section"
 msgstr ""
 
-#: elf32-bfin.c:2824 elf32-bfin.c:2954 elf32-lm32.c:1049 elf32-sh.c:4511
+#: elf32-bfin.c:2825 elf32-bfin.c:2953 elf32-lm32.c:1006 elf32-sh.c:4389
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr ""
 
-#: elf32-bfin.c:2874
+#: elf32-bfin.c:2875
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
 msgstr ""
 
-#: elf32-bfin.c:3039
+#: elf32-bfin.c:3038
 msgid "relocations between different segments are not supported"
 msgstr ""
 
-#: elf32-bfin.c:3040
+#: elf32-bfin.c:3039
 msgid "warning: relocation references a different segment"
 msgstr ""
 
-#: elf32-bfin.c:4787 elf32-frv.c:6603
+#: elf32-bfin.c:4770 elf32-frv.c:6584
 #, c-format
 msgid "%pB: cannot link non-fdpic object file into fdpic executable"
 msgstr ""
 
-#: elf32-bfin.c:4791 elf32-frv.c:6607
+#: elf32-bfin.c:4774 elf32-frv.c:6588
 #, c-format
 msgid "%pB: cannot link fdpic object file into non-fdpic executable"
 msgstr ""
 
-#: elf32-bfin.c:4941
+#: elf32-bfin.c:4924
 #, c-format
 msgid "*** check this relocation %s"
 msgstr ""
 
-#: elf32-bfin.c:5057
+#: elf32-bfin.c:5040
 msgid ""
 "the bfin target does not currently support the generation of copy relocations"
 msgstr ""
 
-#: elf32-bfin.c:5351 elf32-cr16.c:2803 elf32-m68k.c:4390
+#: elf32-bfin.c:5334 elf32-cr16.c:2731 elf32-m68k.c:4422
 msgid "unsupported relocation type"
 msgstr ""
 
@@ -2108,18 +2209,18 @@ msgid "%pB, section %pA: no PLT for relo
 msgstr ""
 
 #: elf32-cris.c:1193 elf32-cris.c:1326 elf32-cris.c:1591 elf32-cris.c:1674
-#: elf32-cris.c:1827 elf32-tic6x.c:2619
+#: elf32-cris.c:1827 elf32-tic6x.c:2560
 msgid "[whose name is lost]"
 msgstr ""
 
-#: elf32-cris.c:1311 elf32-tic6x.c:2603
+#: elf32-cris.c:1311 elf32-tic6x.c:2544
 #, c-format
 msgid ""
 "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against local "
 "symbol"
 msgstr ""
 
-#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2612
+#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2553
 #, c-format
 msgid ""
 "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against "
@@ -2189,76 +2290,76 @@ msgid ""
 "recompile with -fPIC"
 msgstr ""
 
-#: elf32-cris.c:3747
+#: elf32-cris.c:3700
 #, c-format
 msgid ""
 "%pB, section `%pA', to symbol `%s': relocation %s should not be used in a "
 "shared object; recompile with -fPIC"
 msgstr ""
 
-#: elf32-cris.c:3860
+#: elf32-cris.c:3812
 msgid "unexpected machine number"
 msgstr ""
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3864
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr ""
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3867
 #, c-format
 msgid " [v10 and v32]"
 msgstr ""
 
-#: elf32-cris.c:3917
+#: elf32-cris.c:3870
 #, c-format
 msgid " [v32]"
 msgstr ""
 
-#: elf32-cris.c:3961
+#: elf32-cris.c:3914
 #, c-format
 msgid ""
 "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
 msgstr ""
 
-#: elf32-cris.c:3962
+#: elf32-cris.c:3915
 #, c-format
 msgid ""
 "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
 msgstr ""
 
-#: elf32-cris.c:3981
+#: elf32-cris.c:3934
 #, c-format
 msgid "%pB contains CRIS v32 code, incompatible with previous objects"
 msgstr ""
 
-#: elf32-cris.c:3983
+#: elf32-cris.c:3936
 #, c-format
 msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
 msgstr ""
 
-#: elf32-csky.c:2066
+#: elf32-csky.c:2022
 msgid "GOT table size out of range"
 msgstr ""
 
-#: elf32-csky.c:2917
+#: elf32-csky.c:2802
 #, c-format
 msgid "warning: unrecognized arch eflag '%#lx'"
 msgstr ""
 
-#: elf32-csky.c:2977
+#: elf32-csky.c:2862
 #, c-format
 msgid "%pB: machine flag conflict with target"
 msgstr ""
 
-#: elf32-csky.c:2990
+#: elf32-csky.c:2875
 #, c-format
 msgid ""
 "warning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%s"
 msgstr ""
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4225 elf32-i386.c:351
+#: elf32-csky.c:4118 elf32-i386.c:350
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr ""
@@ -2274,7 +2375,7 @@ msgid "jump (PC rel26) to section (%s) n
 msgstr ""
 
 #. Only if it's not an unresolved symbol.
-#: elf32-epiphany.c:573 elf32-ip2k.c:1489
+#: elf32-epiphany.c:569 elf32-ip2k.c:1484
 msgid "unsupported relocation between data/insn address spaces"
 msgstr ""
 
@@ -2282,97 +2383,97 @@ msgstr ""
 msgid "relocation requires zero addend"
 msgstr ""
 
-#: elf32-frv.c:2829
+#: elf32-frv.c:2832
 #, c-format
 msgid "%H: relocation to `%s+%v' may have caused the error above\n"
 msgstr ""
 
-#: elf32-frv.c:2846
+#: elf32-frv.c:2849
 msgid "%H: relocation references symbol not defined in the module\n"
 msgstr ""
 
-#: elf32-frv.c:2922
+#: elf32-frv.c:2925
 msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
 msgstr ""
 
-#: elf32-frv.c:2963
+#: elf32-frv.c:2966
 msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3034
+#: elf32-frv.c:3037
 msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3071
+#: elf32-frv.c:3074
 msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3118
+#: elf32-frv.c:3121
 msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3202
+#: elf32-frv.c:3205
 msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3256
+#: elf32-frv.c:3259
 msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3286
+#: elf32-frv.c:3289
 msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3315
+#: elf32-frv.c:3318
 msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3345
+#: elf32-frv.c:3348
 msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3390
+#: elf32-frv.c:3393
 msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3417
+#: elf32-frv.c:3420
 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
 msgstr ""
 
-#: elf32-frv.c:3538 elf32-frv.c:3660
+#: elf32-frv.c:3541 elf32-frv.c:3661
 msgid "%H: %s references dynamic symbol with nonzero addend\n"
 msgstr ""
 
-#: elf32-frv.c:3580 elf32-frv.c:3703
+#: elf32-frv.c:3582 elf32-frv.c:3703
 msgid "%H: cannot emit fixups in read-only section\n"
 msgstr ""
 
-#: elf32-frv.c:3611 elf32-frv.c:3746
+#: elf32-frv.c:3612 elf32-frv.c:3745
 msgid "%H: cannot emit dynamic relocations in read-only section\n"
 msgstr ""
 
-#: elf32-frv.c:3918
+#: elf32-frv.c:3917
 #, c-format
 msgid "%H: reloc against `%s' references a different segment\n"
 msgstr ""
 
-#: elf32-frv.c:4069
+#: elf32-frv.c:4068
 #, c-format
 msgid "%H: reloc against `%s': %s\n"
 msgstr ""
 
-#: elf32-frv.c:6514
+#: elf32-frv.c:6495
 #, c-format
 msgid ""
 "%pB: compiled with %s and linked with modules that use non-pic relocations"
 msgstr ""
 
-#: elf32-frv.c:6568 elf32-iq2000.c:832 elf32-m32c.c:876
+#: elf32-frv.c:6549 elf32-iq2000.c:830 elf32-m32c.c:876
 #, c-format
 msgid "%pB: compiled with %s and linked with modules compiled with %s"
 msgstr ""
 
-#: elf32-frv.c:6581
+#: elf32-frv.c:6562
 #, c-format
 msgid ""
 "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
@@ -2383,153 +2484,159 @@ msgstr ""
 msgid "%pB: relocations in generic ELF (EM: %d)"
 msgstr ""
 
-#: elf32-hppa.c:834 elf32-hppa.c:3511
+#: elf32-hppa.c:763 elf32-hppa.c:844 elf64-ppc.c:11859
+msgid ""
+"%F%P: Could not assign %pA to an output section. Retry without --enable-non-"
+"contiguous-regions.\n"
+msgstr ""
+
+#: elf32-hppa.c:865 elf32-hppa.c:3407
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
 msgstr ""
 
-#: elf32-hppa.c:1248
+#: elf32-hppa.c:1243
 #, c-format
 msgid ""
 "%pB: relocation %s can not be used when making a shared object; recompile "
 "with -fPIC"
 msgstr ""
 
-#: elf32-hppa.c:2688
+#: elf32-hppa.c:2584
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr ""
 
-#: elf32-hppa.c:3344
+#: elf32-hppa.c:3240
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared "
 "link"
 msgstr ""
 
-#: elf32-hppa.c:4140
+#: elf32-hppa.c:4036
 #, c-format
 msgid "%s has both normal and TLS relocs"
 msgstr ""
 
-#: elf32-hppa.c:4158
+#: elf32-hppa.c:4054
 #, c-format
 msgid "%pB:%s has both normal and TLS relocs"
 msgstr ""
 
-#: elf32-hppa.c:4217
+#: elf32-hppa.c:4113
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
 msgstr ""
 
-#: elf32-hppa.c:4521
+#: elf32-hppa.c:4417
 msgid ".got section not immediately after .plt section"
 msgstr ""
 
-#: elf32-i386.c:1178 elf64-x86-64.c:1377
+#: elf32-i386.c:1169 elf64-x86-64.c:1382
 #, c-format
 msgid ""
 "%pB: TLS transition from %s to %s against `%s' at %#<PRIx64> in section `"
 "%pA' failed"
 msgstr ""
 
-#: elf32-i386.c:1269
+#: elf32-i386.c:1272
 #, c-format
 msgid ""
 "%pB: direct GOT relocation R_386_GOT32X against `%s' without base register "
 "can not be used when making a shared object"
 msgstr ""
 
-#: elf32-i386.c:1726 elf32-s390.c:1188 elf32-sh.c:5662 elf32-tilepro.c:1592
-#: elf32-xtensa.c:1203 elf64-s390.c:1120 elfxx-sparc.c:1591 elfxx-tilegx.c:1805
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:451
+#: elf32-i386.c:1721 elf32-s390.c:1153 elf32-sh.c:5494 elf32-tilepro.c:1556
+#: elf32-xtensa.c:1265 elf64-s390.c:1085 elfxx-sparc.c:1555 elfxx-tilegx.c:1769
+#: elfnn-riscv.c:437
 #, c-format
 msgid "%pB: `%s' accessed both as normal and thread local symbol"
 msgstr ""
 
-#: elf32-i386.c:1798
+#: elf32-i386.c:1793
 #, c-format
 msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
 msgstr ""
 
-#: elf32-i386.c:2379 elf64-x86-64.c:2670
+#: elf32-i386.c:2373 elf64-x86-64.c:2721
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
 msgstr ""
 
-#: elf32-i386.c:2412 elf32-i386.c:3660 elf32-i386.c:3801 elf64-x86-64.c:2727
-#: elf64-x86-64.c:4069 elf64-x86-64.c:4225
+#: elf32-i386.c:2406 elf32-i386.c:3654 elf32-i386.c:3795 elf64-x86-64.c:2778
+#: elf64-x86-64.c:4285 elf64-x86-64.c:4441
 #, c-format
 msgid "Local IFUNC function `%s' in %pB\n"
 msgstr ""
 
-#: elf32-i386.c:2569
+#: elf32-i386.c:2563
 #, c-format
 msgid ""
 "%pB: direct GOT relocation %s against `%s' without base register can not be "
 "used when making a shared object"
 msgstr ""
 
-#: elf32-i386.c:2604 elf64-x86-64.c:2919
+#: elf32-i386.c:2598 elf64-x86-64.c:2977
 msgid "hidden symbol"
 msgstr ""
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2922
+#: elf32-i386.c:2601 elf64-x86-64.c:2980
 msgid "internal symbol"
 msgstr ""
 
-#: elf32-i386.c:2610 elf64-x86-64.c:2925
+#: elf32-i386.c:2604 elf64-x86-64.c:2983
 msgid "protected symbol"
 msgstr ""
 
-#: elf32-i386.c:2613 elf64-x86-64.c:2928
+#: elf32-i386.c:2607 elf64-x86-64.c:2986
 msgid "symbol"
 msgstr ""
 
-#: elf32-i386.c:2619
+#: elf32-i386.c:2613
 #, c-format
 msgid ""
 "%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when "
 "making a shared object"
 msgstr ""
 
-#: elf32-i386.c:2632
+#: elf32-i386.c:2626
 #, c-format
 msgid ""
 "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when "
 "making a shared object"
 msgstr ""
 
-#: elf32-ip2k.c:856 elf32-ip2k.c:862 elf32-ip2k.c:929 elf32-ip2k.c:935
+#: elf32-ip2k.c:855 elf32-ip2k.c:861 elf32-ip2k.c:928 elf32-ip2k.c:934
 msgid ""
 "ip2k relaxer: switch table without complete matching relocation information."
 msgstr ""
 
-#: elf32-ip2k.c:879 elf32-ip2k.c:962
+#: elf32-ip2k.c:878 elf32-ip2k.c:961
 msgid "ip2k relaxer: switch table header corrupt."
 msgstr ""
 
-#: elf32-ip2k.c:1302
+#: elf32-ip2k.c:1297
 #, c-format
 msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr ""
 
-#: elf32-ip2k.c:1321
+#: elf32-ip2k.c:1316
 #, c-format
 msgid ""
 "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr ""
 
-#: elf32-lm32.c:651 elf32-nios2.c:3141
+#: elf32-lm32.c:608 elf32-nios2.c:3148
 msgid "global pointer relative relocation when _gp not defined"
 msgstr ""
 
-#: elf32-lm32.c:706 elf32-nios2.c:3578
+#: elf32-lm32.c:663 elf32-nios2.c:3585
 msgid "global pointer relative address out of range"
 msgstr ""
 
-#: elf32-lm32.c:1002
+#: elf32-lm32.c:959
 #, c-format
 msgid "internal error: addend should be zero for %s"
 msgstr ""
@@ -2538,150 +2645,155 @@ msgstr ""
 msgid "SDA relocation when _SDA_BASE_ not defined"
 msgstr ""
 
-#: elf32-m32r.c:2984 elf32-microblaze.c:1101 elf32-microblaze.c:1149
+#: elf32-m32r.c:2799 elf32-microblaze.c:1097 elf32-microblaze.c:1145
 #, c-format
 msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)"
 msgstr ""
 
-#: elf32-m32r.c:3487
+#: elf32-m32r.c:3302
 #, c-format
 msgid "%pB: instruction set mismatch with previous modules"
 msgstr ""
 
-#: elf32-m32r.c:3508 elf32-nds32.c:6992
+#: elf32-m32r.c:3323 elf32-nds32.c:6855
 #, c-format
 msgid "private flags = %lx"
 msgstr ""
 
-#: elf32-m32r.c:3513
+#: elf32-m32r.c:3328
 #, c-format
 msgid ": m32r instructions"
 msgstr ""
 
-#: elf32-m32r.c:3514
+#: elf32-m32r.c:3329
 #, c-format
 msgid ": m32rx instructions"
 msgstr ""
 
-#: elf32-m32r.c:3515
+#: elf32-m32r.c:3330
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ""
 
-#: elf32-m68hc1x.c:1116
+#: elf32-m68hc1x.c:1136
 #, c-format
 msgid ""
 "reference to the far symbol `%s' using a wrong relocation may result in "
 "incorrect execution"
 msgstr ""
 
-#: elf32-m68hc1x.c:1150
+#: elf32-m68hc1x.c:1167
 #, c-format
 msgid ""
 "XGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you "
 "must manually offset the address, and possibly manage the page, in your code."
 msgstr ""
 
-#: elf32-m68hc1x.c:1168
+#: elf32-m68hc1x.c:1183
 #, c-format
 msgid ""
 "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked "
 "address [%lx:%04lx] (%lx)"
 msgstr ""
 
-#: elf32-m68hc1x.c:1184
+#: elf32-m68hc1x.c:1198
 #, c-format
 msgid ""
 "reference to a banked address [%lx:%04lx] in the normal address space at "
 "%04lx"
 msgstr ""
 
-#: elf32-m68hc1x.c:1225
+#: elf32-m68hc1x.c:1234
 #, c-format
 msgid ""
 "S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you "
 "must manually offset the address in your code"
 msgstr ""
 
-#: elf32-m68hc1x.c:1352
+#: elf32-m68hc1x.c:1358
 #, c-format
 msgid ""
 "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-"
 "bit integers"
 msgstr ""
 
-#: elf32-m68hc1x.c:1359
+#: elf32-m68hc1x.c:1365
 #, c-format
 msgid ""
 "%pB: linking files compiled for 32-bit double (-fshort-double) and others "
 "for 64-bit double"
 msgstr ""
 
-#: elf32-m68hc1x.c:1368
+#: elf32-m68hc1x.c:1374
 #, c-format
 msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
 msgstr ""
 
-#: elf32-m68hc1x.c:1413 elf32-xgate.c:497
+#: elf32-m68hc1x.c:1419 elf32-xgate.c:497
 #, c-format
 msgid "[abi=32-bit int, "
 msgstr ""
 
-#: elf32-m68hc1x.c:1415 elf32-xgate.c:499
+#: elf32-m68hc1x.c:1421 elf32-xgate.c:499
 #, c-format
 msgid "[abi=16-bit int, "
 msgstr ""
 
-#: elf32-m68hc1x.c:1418 elf32-xgate.c:502
+#: elf32-m68hc1x.c:1424 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
 msgstr ""
 
-#: elf32-m68hc1x.c:1420 elf32-xgate.c:504
+#: elf32-m68hc1x.c:1426 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr ""
 
-#: elf32-m68hc1x.c:1423
+#: elf32-m68hc1x.c:1429
 #, c-format
 msgid "cpu=HC11]"
 msgstr ""
 
-#: elf32-m68hc1x.c:1425
+#: elf32-m68hc1x.c:1431
 #, c-format
 msgid "cpu=HCS12]"
 msgstr ""
 
-#: elf32-m68hc1x.c:1427
+#: elf32-m68hc1x.c:1433
 #, c-format
 msgid "cpu=HC12]"
 msgstr ""
 
-#: elf32-m68hc1x.c:1430
+#: elf32-m68hc1x.c:1436
 #, c-format
 msgid " [memory=bank-model]"
 msgstr ""
 
-#: elf32-m68hc1x.c:1432
+#: elf32-m68hc1x.c:1438
 #, c-format
 msgid " [memory=flat]"
 msgstr ""
 
-#: elf32-m68hc1x.c:1435
+#: elf32-m68hc1x.c:1441
 #, c-format
 msgid " [XGATE RAM offsetting]"
 msgstr ""
 
-#: elf32-m68k.c:1216 elf32-m68k.c:1217 vms-alpha.c:7484 vms-alpha.c:7500
+#: elf32-m68k.c:1159 elf32-m68k.c:1167 elf32-ppc.c:3583 elf32-ppc.c:3591
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr ""
+
+#: elf32-m68k.c:1282 elf32-m68k.c:1283 vms-alpha.c:7664 vms-alpha.c:7680
 msgid "unknown"
 msgstr ""
 
-#: elf32-m68k.c:1660
+#: elf32-m68k.c:1733
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
 msgstr ""
 
-#: elf32-m68k.c:1667
+#: elf32-m68k.c:1740
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
 msgstr ""
@@ -2712,20 +2824,20 @@ msgstr ""
 msgid "private flags = 0x%lx"
 msgstr ""
 
-#: elf32-metag.c:1863
+#: elf32-metag.c:1859
 #, c-format
 msgid "%pB(%pA): multiple TLS models are not supported"
 msgstr ""
 
-#: elf32-metag.c:1866
+#: elf32-metag.c:1862
 #, c-format
 msgid ""
 "%pB(%pA): shared library symbol %s encountered whilst performing a static "
 "link"
 msgstr ""
 
-#: elf32-microblaze.c:1544 elf32-tilepro.c:3155 elfxx-sparc.c:3538
-#: elfxx-tilegx.c:3543
+#: elf32-microblaze.c:1540 elf32-tilepro.c:3029 elfxx-sparc.c:3427
+#: elfxx-tilegx.c:3417
 #, c-format
 msgid "%pB: probably compiled without -fPIC?"
 msgstr ""
@@ -2739,332 +2851,328 @@ msgstr ""
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr ""
 
-#: elf32-msp430.c:837 elf32-msp430.c:1151
+#: elf32-msp430.c:846 elf32-msp430.c:1160
 msgid "try enabling relaxation to avoid relocation truncations"
 msgstr ""
 
-#: elf32-msp430.c:1358
+#: elf32-msp430.c:1367
 msgid "internal error: branch/jump to an odd address detected"
 msgstr ""
 
-#: elf32-msp430.c:2357
+#: elf32-msp430.c:2532
 #, c-format
 msgid "warning: %pB: unknown MSPABI object attribute %d"
 msgstr ""
 
-#: elf32-msp430.c:2456
+#: elf32-msp430.c:2633
 #, c-format
 msgid "error: %pB uses %s instructions but %pB uses %s"
 msgstr ""
 
-#: elf32-msp430.c:2468
+#: elf32-msp430.c:2645
 #, c-format
 msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
 msgstr ""
 
-#: elf32-msp430.c:2480
+#: elf32-msp430.c:2658
 #, c-format
 msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
 msgstr ""
 
-#: elf32-msp430.c:2491
+#: elf32-msp430.c:2669
 #, c-format
 msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
 msgstr ""
 
-#: elf32-msp430.c:2503
+#: elf32-msp430.c:2682
 #, c-format
 msgid "error: %pB uses the small code model but %pB uses the %s data model"
 msgstr ""
 
-#: elf32-msp430.c:2515
+#: elf32-msp430.c:2694
 #, c-format
 msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
 msgstr ""
 
-#: elf32-nds32.c:3624
+#: elf32-msp430.c:2719
 #, c-format
-msgid "error: can't find symbol: %s"
+msgid ""
+"error: %pB can use the upper region for data, but %pB assumes data is "
+"exclusively in lower memory"
 msgstr ""
 
-#: elf32-nds32.c:5639
+#: elf32-nds32.c:3625
 #, c-format
-msgid ""
-"%pB: relocation %s against `%s' can not be used whenmaking a shared object; "
-"recompile with -fPIC"
+msgid "error: can't find symbol: %s"
 msgstr ""
 
-#: elf32-nds32.c:5669
+#: elf32-nds32.c:5528
 #, c-format
 msgid "%pB: warning: %s unsupported in shared mode"
 msgstr ""
 
-#: elf32-nds32.c:5795
+#: elf32-nds32.c:5654
 #, c-format
 msgid "%pB: warning: unaligned access to GOT entry"
 msgstr ""
 
-#: elf32-nds32.c:5836
+#: elf32-nds32.c:5695
 #, c-format
 msgid "%pB: warning: relocate SDA_BASE failed"
 msgstr ""
 
-#: elf32-nds32.c:5858
+#: elf32-nds32.c:5717
 #, c-format
 msgid "%pB(%pA): warning: unaligned small data access of type %d"
 msgstr ""
 
-#: elf32-nds32.c:6784
+#: elf32-nds32.c:6643
 #, c-format
 msgid ""
 "%pB: ISR vector size mismatch with previous modules, previous %u-byte, "
 "current %u-byte"
 msgstr ""
 
-#: elf32-nds32.c:6828
+#: elf32-nds32.c:6691
 #, c-format
 msgid "%pB: warning: endian mismatch with previous modules"
 msgstr ""
 
-#: elf32-nds32.c:6842
+#: elf32-nds32.c:6705
 #, c-format
 msgid ""
 "%pB: warning: older version of object file encountered, please recompile "
 "with current tool chain"
 msgstr ""
 
-#: elf32-nds32.c:6930
+#: elf32-nds32.c:6793
 #, c-format
 msgid "%pB: error: ABI mismatch with previous modules"
 msgstr ""
 
-#: elf32-nds32.c:6940
+#: elf32-nds32.c:6803
 #, c-format
 msgid "%pB: error: instruction set mismatch with previous modules"
 msgstr ""
 
-#: elf32-nds32.c:6967
+#: elf32-nds32.c:6830
 #, c-format
 msgid "%pB: warning: incompatible elf-versions %s and %s"
 msgstr ""
 
-#: elf32-nds32.c:6998
+#: elf32-nds32.c:6861
 #, c-format
 msgid ": n1 instructions"
 msgstr ""
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:6864
 #, c-format
 msgid ": n1h instructions"
 msgstr ""
 
-#: elf32-nds32.c:9462
+#: elf32-nds32.c:9316
 #, c-format
 msgid "%pB: error: search_nds32_elf_blank reports wrong node"
 msgstr ""
 
-#: elf32-nds32.c:9722
+#: elf32-nds32.c:9576
 #, c-format
 msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
 msgstr ""
 
-#: elf32-nds32.c:12975
+#: elf32-nds32.c:12839
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
 msgstr ""
 
-#: elf32-nds32.c:12994
+#: elf32-nds32.c:12858
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
 msgstr ""
 
-#: elf32-nds32.c:13275 reloc.c:8410
+#: elf32-nds32.c:13140 reloc.c:8470
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
 msgstr ""
 
-#: elf32-nios2.c:2930
+#: elf32-nios2.c:2937
 #, c-format
 msgid "error: %pB: big-endian R2 is not supported"
 msgstr ""
 
-#: elf32-nios2.c:3822
+#: elf32-nios2.c:3829
 #, c-format
 msgid ""
-"global pointer relative relocation at address 0x%08x when _gp not defined\n"
+"global pointer relative relocation at address %#<PRIx64> when _gp not "
+"defined\n"
 msgstr ""
 
-#: elf32-nios2.c:3842
+#: elf32-nios2.c:3859
 #, c-format
 msgid ""
-"unable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because "
-"the offset (%d) is out of the allowed range, -32678 to 32767\n"
+"unable to reach %s (at %#<PRIx64>) from the global pointer (at %#<PRIx64>) "
+"because the offset (%<PRId64>) is out of the allowed range, -32678 to 32767\n"
 msgstr ""
 
-#: elf32-nios2.c:4495 elf32-pru.c:928
+#: elf32-nios2.c:4514 elf32-pru.c:931
 msgid "relocation out of range"
 msgstr ""
 
-#: elf32-nios2.c:4505 elf32-pru.c:938 elf32-tic6x.c:2716
+#: elf32-nios2.c:4524 elf32-pru.c:941 elf32-tic6x.c:2657
 msgid "dangerous relocation"
 msgstr ""
 
-#: elf32-nios2.c:5378
+#: elf32-nios2.c:5367
 #, c-format
 msgid "dynamic variable `%s' is zero size"
 msgstr ""
 
-#: elf32-or1k.c:1177
+#: elf32-or1k.c:1210
 #, c-format
 msgid "%pB: Cannot handle relocation value size of %d"
 msgstr ""
 
-#: elf32-or1k.c:1286
+#: elf32-or1k.c:1317
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr ""
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1371
 #, c-format
 msgid "%pB: addend should be zero for plt relocations"
 msgstr ""
 
-#: elf32-or1k.c:1445
+#: elf32-or1k.c:1476
 #, c-format
 msgid "%pB: addend should be zero for got relocations"
 msgstr ""
 
-#: elf32-or1k.c:1462
+#: elf32-or1k.c:1493
 #, c-format
 msgid "%pB: gotoff relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf32-or1k.c:1479 elf64-alpha.c:4455 elf64-alpha.c:4599
+#: elf32-or1k.c:1510 elf64-alpha.c:4421 elf64-alpha.c:4565
 #, c-format
 msgid "%pB: pc-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf32-or1k.c:1493
+#: elf32-or1k.c:1524
 #, c-format
 msgid "%pB: non-pic relocation against symbol %s"
 msgstr ""
 
-#: elf32-or1k.c:1577
+#: elf32-or1k.c:1608
 #, c-format
 msgid "%pB: support for local dynamic not implemented"
 msgstr ""
 
-#: elf32-or1k.c:1729
+#: elf32-or1k.c:1787
 #, c-format
 msgid "%pB: will not resolve runtime TLS relocation"
 msgstr ""
 
-#: elf32-or1k.c:2074
+#: elf32-or1k.c:2120
 #, c-format
 msgid "%pB: bad relocation section name `%s'"
 msgstr ""
 
-#: elf32-or1k.c:3218
+#: elf32-or1k.c:3181
 #, c-format
 msgid "%pB: %s flag mismatch with previous modules"
 msgstr ""
 
-#: elf32-ppc.c:986
+#: elf32-ppc.c:989
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr ""
 
-#: elf32-ppc.c:1617
+#: elf32-ppc.c:1628
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr ""
 
-#: elf32-ppc.c:1637
+#: elf32-ppc.c:1647
 #, c-format
 msgid "unable to read in %s section from %pB"
 msgstr ""
 
-#: elf32-ppc.c:1679
+#: elf32-ppc.c:1689
 #, c-format
 msgid "warning: unable to set size of %s section in %pB"
 msgstr ""
 
-#: elf32-ppc.c:1729
+#: elf32-ppc.c:1738
 msgid "failed to allocate space for new APUinfo section"
 msgstr ""
 
-#: elf32-ppc.c:1748
+#: elf32-ppc.c:1757
 msgid "failed to compute new APUinfo section"
 msgstr ""
 
-#: elf32-ppc.c:1751
+#: elf32-ppc.c:1760
 msgid "failed to install new APUinfo section"
 msgstr ""
 
-#: elf32-ppc.c:2853
+#: elf32-ppc.c:2861
 #, c-format
 msgid "%pB: relocation %s cannot be used when making a shared object"
 msgstr ""
 
-#: elf32-ppc.c:3587 elf32-ppc.c:3595
-#, c-format
-msgid "%pB uses hard float, %pB uses soft float"
-msgstr ""
-
-#: elf32-ppc.c:3603 elf32-ppc.c:3611
+#: elf32-ppc.c:3599 elf32-ppc.c:3607
 #, c-format
 msgid ""
 "%pB uses double-precision hard float, %pB uses single-precision hard float"
 msgstr ""
 
-#: elf32-ppc.c:3630 elf32-ppc.c:3638
+#: elf32-ppc.c:3629 elf32-ppc.c:3637
 #, c-format
 msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
 msgstr ""
 
-#: elf32-ppc.c:3646 elf32-ppc.c:3654
+#: elf32-ppc.c:3645 elf32-ppc.c:3653
 #, c-format
 msgid "%pB uses IBM long double, %pB uses IEEE long double"
 msgstr ""
 
-#: elf32-ppc.c:3721 elf32-ppc.c:3730
+#: elf32-ppc.c:3720 elf32-ppc.c:3729
 #, c-format
 msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
 msgstr ""
 
-#: elf32-ppc.c:3759 elf32-ppc.c:3768
+#: elf32-ppc.c:3758 elf32-ppc.c:3767
 #, c-format
 msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
 msgstr ""
 
-#: elf32-ppc.c:3829
+#: elf32-ppc.c:3831
 #, c-format
 msgid ""
 "%pB: compiled with -mrelocatable and linked with modules compiled normally"
 msgstr ""
 
-#: elf32-ppc.c:3837
+#: elf32-ppc.c:3839
 #, c-format
 msgid ""
 "%pB: compiled normally and linked with modules compiled with -mrelocatable"
 msgstr ""
 
-#: elf32-ppc.c:3906
+#: elf32-ppc.c:3908
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
 msgstr ""
 
-#: elf32-ppc.c:3925
+#: elf32-ppc.c:3927
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
 msgstr ""
 
-#: elf32-ppc.c:4028
+#: elf32-ppc.c:4030
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr ""
 
-#: elf32-ppc.c:4030
+#: elf32-ppc.c:4032
 msgid "bss-plt forced by profiling"
 msgstr ""
 
@@ -3072,40 +3180,40 @@ msgstr ""
 #. could just mark this symbol to exclude it
 #. from tls optimization but it's safer to skip
 #. the entire optimization.
-#: elf32-ppc.c:4606 elf64-ppc.c:7724
+#: elf32-ppc.c:4606 elf64-ppc.c:8252
 #, c-format
 msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
 msgstr ""
 
-#: elf32-ppc.c:5577 elf32-sh.c:3078 elf32-tilepro.c:2339 elfxx-sparc.c:2534
-#: elfxx-tilegx.c:2579
+#: elf32-ppc.c:5513 elf32-sh.c:3023 elf32-tilepro.c:2256 elfxx-sparc.c:2453
+#: elfxx-tilegx.c:2496
 #, c-format
 msgid "%pB: dynamic relocation in read-only section `%pA'\n"
 msgstr ""
 
-#: elf32-ppc.c:7457
+#: elf32-ppc.c:7356
 msgid "%P: %H: error: %s with unexpected instruction %x\n"
 msgstr ""
 
-#: elf32-ppc.c:7494
+#: elf32-ppc.c:7393
 msgid "%H: fixup branch overflow\n"
 msgstr ""
 
-#: elf32-ppc.c:7534 elf32-ppc.c:7570
+#: elf32-ppc.c:7433 elf32-ppc.c:7469
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr ""
 
-#: elf32-ppc.c:7634
+#: elf32-ppc.c:7533
 #, c-format
 msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
 msgstr ""
 
-#: elf32-ppc.c:7673 elf64-ppc.c:15220
+#: elf32-ppc.c:7572 elf64-ppc.c:16848
 msgid "%H: warning: %s unexpected insn %#x.\n"
 msgstr ""
 
-#: elf32-ppc.c:7985
+#: elf32-ppc.c:7881
 #, c-format
 msgid "%H: non-zero addend on %s reloc against `%s'\n"
 msgstr ""
@@ -3118,59 +3226,59 @@ msgstr ""
 #. local won't have the +32k reloc addend trick marking
 #. -fPIC code, so the linker won't know whether r30 is
 #. _GLOBAL_OFFSET_TABLE_ or pointing into a .got2 section.
-#: elf32-ppc.c:8017
+#: elf32-ppc.c:7913
 #, c-format
 msgid "%X%H: @local call to ifunc %s\n"
 msgstr ""
 
-#: elf32-ppc.c:8187
+#: elf32-ppc.c:8091
 #, c-format
 msgid "%H: relocation %s for indirect function %s unsupported\n"
 msgstr ""
 
-#: elf32-ppc.c:8515 elf32-ppc.c:8546 elf32-ppc.c:8637 elf32-ppc.c:8725
+#: elf32-ppc.c:8425 elf32-ppc.c:8456 elf32-ppc.c:8547 elf32-ppc.c:8643
 #, c-format
 msgid ""
 "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
 msgstr ""
 
-#: elf32-ppc.c:8855 elf32-ppc.c:8873
-msgid "%P: %H: %s relocation unsupported for bss-plt\n"
+#: elf32-ppc.c:8773 elf32-ppc.c:8791
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
 msgstr ""
 
-#: elf32-ppc.c:8954
+#: elf32-ppc.c:8872
 #, c-format
 msgid "%H: error: %s against `%s' not a multiple of %u\n"
 msgstr ""
 
-#: elf32-ppc.c:8983
+#: elf32-ppc.c:8901
 #, c-format
 msgid "%H: unresolvable %s relocation against symbol `%s'\n"
 msgstr ""
 
-#: elf32-ppc.c:9064
+#: elf32-ppc.c:8982
 #, c-format
 msgid "%H: %s reloc against `%s': error %d\n"
 msgstr ""
 
-#: elf32-ppc.c:9959 elf64-ppc.c:15715
+#: elf32-ppc.c:9872
 msgid ""
 "%X%P: text relocations and GNU indirect functions will result in a segfault "
 "at runtime\n"
 msgstr ""
 
-#: elf32-ppc.c:9963 elf64-ppc.c:15719
+#: elf32-ppc.c:9876 elf64-ppc.c:17398
 msgid ""
 "%P: warning: text relocations and GNU indirect functions may result in a "
 "segfault at runtime\n"
 msgstr ""
 
-#: elf32-ppc.c:10008
+#: elf32-ppc.c:9921
 #, c-format
 msgid "%s not defined in linker created %pA"
 msgstr ""
 
-#: elf32-pru.c:579 elf32-pru.c:1472
+#: elf32-pru.c:582 elf32-pru.c:1475
 #, c-format
 msgid "error: %pB: old incompatible object file detected"
 msgstr ""
@@ -3187,7 +3295,7 @@ msgstr ""
 msgid "warning: RL78_SYM reloc with an unknown symbol"
 msgstr ""
 
-#: elf32-rl78.c:1084 elf32-rx.c:1456
+#: elf32-rl78.c:1084 elf32-rx.c:1461
 #, c-format
 msgid "%pB(%pA): error: call to undefined function '%s'"
 msgstr ""
@@ -3216,17 +3324,17 @@ msgstr ""
 msgid " [64-bit doubles]"
 msgstr ""
 
-#: elf32-rx.c:605
+#: elf32-rx.c:607
 #, c-format
 msgid "%pB:%pA: table entry %s outside table"
 msgstr ""
 
-#: elf32-rx.c:612
+#: elf32-rx.c:614
 #, c-format
 msgid "%pB:%pA: table entry %s not word-aligned within table"
 msgstr ""
 
-#: elf32-rx.c:684
+#: elf32-rx.c:689
 #, c-format
 msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
 msgstr ""
@@ -3235,59 +3343,59 @@ msgstr ""
 #. an absolute address is being computed.  There are special cases
 #. for relocs against symbols that are known to be referenced in
 #. crt0.o before the PID base address register has been initialised.
-#: elf32-rx.c:704
+#: elf32-rx.c:709
 #, c-format
 msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
 msgstr ""
 
-#: elf32-rx.c:1288
+#: elf32-rx.c:1293
 msgid "warning: RX_SYM reloc with an unknown symbol"
 msgstr ""
 
-#: elf32-rx.c:3167
+#: elf32-rx.c:3173
 #, c-format
 msgid "there is a conflict merging the ELF header flags from %pB"
 msgstr ""
 
-#: elf32-rx.c:3170
+#: elf32-rx.c:3176
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr ""
 
-#: elf32-rx.c:3172
+#: elf32-rx.c:3178
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr ""
 
-#: elf32-rx.c:3792
+#: elf32-rx.c:3784
 #, c-format
 msgid "%pB:%pA: table %s missing corresponding %s"
 msgstr ""
 
-#: elf32-rx.c:3800
+#: elf32-rx.c:3792
 #, c-format
 msgid "%pB:%pA: %s and %s must be in the same input section"
 msgstr ""
 
-#: elf32-s390.c:2140 elf64-s390.c:2095
+#: elf32-s390.c:2011 elf64-s390.c:1965
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
 msgstr ""
 
-#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3754
+#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3800
 msgid "not enough GOT space for local GOT entries"
 msgstr ""
 
-#: elf32-score.c:2746
+#: elf32-score.c:2747
 msgid "address not word aligned"
 msgstr ""
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2828 elf32-score7.c:2633
 #, c-format
 msgid "%pB: malformed reloc detected for section %pA"
 msgstr ""
 
-#: elf32-score.c:2881 elf32-score7.c:2686
+#: elf32-score.c:2882 elf32-score7.c:2687
 #, c-format
 msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
 msgstr ""
@@ -3302,7 +3410,7 @@ msgstr ""
 msgid " [fix dep]"
 msgstr ""
 
-#: elf32-score.c:4050 elf32-score7.c:3855
+#: elf32-score.c:4054 elf32-score7.c:3859
 #, c-format
 msgid "%pB: warning: linking PIC files with non-PIC files"
 msgstr ""
@@ -3312,44 +3420,40 @@ msgstr ""
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
 msgstr ""
 
-#: elf32-sh.c:3633
-msgid "unexpected STO_SH5_ISA32 on local symbol is not handled"
-msgstr ""
-
-#: elf32-sh.c:3880
+#: elf32-sh.c:3758
 #, c-format
 msgid ""
 "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
 msgstr ""
 
-#: elf32-sh.c:3910 elf32-sh.c:3926
+#: elf32-sh.c:3788 elf32-sh.c:3804
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:3942
+#: elf32-sh.c:3820
 #, c-format
 msgid ""
 "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
 msgstr ""
 
-#: elf32-sh.c:3958
+#: elf32-sh.c:3836
 #, c-format
 msgid ""
 "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
 msgstr ""
 
-#: elf32-sh.c:4088 elf32-sh.c:4483
+#: elf32-sh.c:3966 elf32-sh.c:4361
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
 msgstr ""
 
-#: elf32-sh.c:4586
+#: elf32-sh.c:4464
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
 msgstr ""
 
-#: elf32-sh.c:4705
+#: elf32-sh.c:4583
 #, c-format
 msgid ""
 "%pB(%pA): offset in relocation for GD->LE translation is too small: "
@@ -3357,125 +3461,125 @@ msgid ""
 msgstr ""
 
 #. The backslash is to prevent bogus trigraph detection.
-#: elf32-sh.c:4723
+#: elf32-sh.c:4601
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
 msgstr ""
 
-#: elf32-sh.c:4731
+#: elf32-sh.c:4609
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
 msgstr ""
 
-#: elf32-sh.c:4738
+#: elf32-sh.c:4616
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
 msgstr ""
 
-#: elf32-sh.c:4745
+#: elf32-sh.c:4623
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
 msgstr ""
 
-#: elf32-sh.c:4752
+#: elf32-sh.c:4630
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
 msgstr ""
 
-#: elf32-sh.c:4759
+#: elf32-sh.c:4637
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
 msgstr ""
 
-#: elf32-sh.c:4794
+#: elf32-sh.c:4672
 #, c-format
 msgid ""
 "%pB(%pA): offset in relocation for IE->LE translation is too small: "
 "%#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:4812
+#: elf32-sh.c:4690
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
 msgstr ""
 
-#: elf32-sh.c:4821
+#: elf32-sh.c:4699
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
 msgstr ""
 
-#: elf32-sh.c:4828
+#: elf32-sh.c:4706
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
 msgstr ""
 
-#: elf32-sh.c:4943
+#: elf32-sh.c:4821
 #, c-format
 msgid ""
 "%pB(%pA): offset in relocation for GD->IE translation is too small: "
 "%#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:5011
+#: elf32-sh.c:4889
 #, c-format
 msgid ""
 "%pB(%pA): offset in relocation for LD->LE translation is too small: "
 "%#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:5139
+#: elf32-sh.c:5017
 #, c-format
 msgid "%X%C: relocation to \"%s\" references a different segment\n"
 msgstr ""
 
-#: elf32-sh.c:5146
+#: elf32-sh.c:5024
 #, c-format
 msgid "%C: warning: relocation to \"%s\" references a different segment\n"
 msgstr ""
 
-#: elf32-sh.c:5651 elf32-sh.c:5733
+#: elf32-sh.c:5483 elf32-sh.c:5565
 #, c-format
 msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
 msgstr ""
 
-#: elf32-sh.c:5657 elf32-sh.c:5738
+#: elf32-sh.c:5489 elf32-sh.c:5570
 #, c-format
 msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
 msgstr ""
 
-#: elf32-sh.c:5688
+#: elf32-sh.c:5520
 #, c-format
 msgid "%pB: Function descriptor relocation with non-zero addend"
 msgstr ""
 
-#: elf32-sh.c:5895 elf64-alpha.c:4691
+#: elf32-sh.c:5727 elf64-alpha.c:4657
 #, c-format
 msgid "%pB: TLS local exec code cannot be linked into shared objects"
 msgstr ""
 
-#: elf32-sh.c:6010
+#: elf32-sh.c:5842
 #, c-format
 msgid "%pB: uses %s instructions while previous modules use %s instructions"
 msgstr ""
 
-#: elf32-sh.c:6022
+#: elf32-sh.c:5854
 #, c-format
 msgid ""
 "internal error: merge of architecture '%s' with architecture '%s' produced "
 "unknown architecture"
 msgstr ""
 
-#: elf32-sh.c:6059
+#: elf32-sh.c:5895
 #, c-format
 msgid ""
 "%pB: uses instructions which are incompatible with instructions used in "
 "previous modules"
 msgstr ""
 
-#: elf32-sh.c:6072
+#: elf32-sh.c:5908
 #, c-format
 msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
 msgstr ""
@@ -3490,138 +3594,144 @@ msgstr ""
 msgid "%pB: linking little endian files with big endian files"
 msgstr ""
 
-#: elf32-spu.c:732
+#: elf32-sparc.c:157
+#, c-format
+msgid ""
+"%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr ""
+
+#: elf32-spu.c:735
 msgid "%X%P: overlay section %pA does not start on a cache line\n"
 msgstr ""
 
-#: elf32-spu.c:740
+#: elf32-spu.c:743
 msgid "%X%P: overlay section %pA is larger than a cache line\n"
 msgstr ""
 
-#: elf32-spu.c:760
+#: elf32-spu.c:763
 msgid "%X%P: overlay section %pA is not in cache area\n"
 msgstr ""
 
-#: elf32-spu.c:801
+#: elf32-spu.c:804
 #, c-format
 msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n"
 msgstr ""
 
-#: elf32-spu.c:1027
+#: elf32-spu.c:1030
 #, c-format
 msgid "warning: call to non-function symbol %s defined in %pB"
 msgstr ""
 
-#: elf32-spu.c:1377
+#: elf32-spu.c:1380
 #, c-format
 msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
 msgstr ""
 
-#: elf32-spu.c:1909
+#: elf32-spu.c:1910
 #, c-format
 msgid "%pB is not allowed to define %s"
 msgstr ""
 
-#: elf32-spu.c:1917
+#: elf32-spu.c:1918
 #, c-format
 msgid "you are not allowed to define %s in a script"
 msgstr ""
 
-#: elf32-spu.c:1951
+#: elf32-spu.c:1952
 #, c-format
 msgid "%s in overlay section"
 msgstr ""
 
-#: elf32-spu.c:1980
+#: elf32-spu.c:1981
 msgid "overlay stub relocation overflow"
 msgstr ""
 
-#: elf32-spu.c:1989 elf64-ppc.c:13230
+#: elf32-spu.c:1990 elf64-ppc.c:14496
 msgid "stubs don't match calculated size"
 msgstr ""
 
-#: elf32-spu.c:2572
+#: elf32-spu.c:2573
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr ""
 
-#: elf32-spu.c:2588
+#: elf32-spu.c:2589
 #, c-format
 msgid "warning: %s exceeds section size\n"
 msgstr ""
 
-#: elf32-spu.c:2620
+#: elf32-spu.c:2621
 #, c-format
 msgid "%pA:0x%v not found in function table\n"
 msgstr ""
 
-#: elf32-spu.c:2761
+#: elf32-spu.c:2762
 #, c-format
 msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
 msgstr ""
 
-#: elf32-spu.c:3330
+#: elf32-spu.c:3328
 #, c-format
 msgid "stack analysis will ignore the call from %s to %s\n"
 msgstr ""
 
-#: elf32-spu.c:4027
+#: elf32-spu.c:4025
 msgid "  calls:\n"
 msgstr ""
 
-#: elf32-spu.c:4341
+#: elf32-spu.c:4340
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr ""
 
-#: elf32-spu.c:4345
+#: elf32-spu.c:4344
 #, c-format
 msgid "%s duplicated\n"
 msgstr ""
 
-#: elf32-spu.c:4352
+#: elf32-spu.c:4351
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr ""
 
-#: elf32-spu.c:4394
+#: elf32-spu.c:4393
 #, c-format
 msgid ""
 "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local "
 "store\n"
 msgstr ""
 
-#: elf32-spu.c:4550
+#: elf32-spu.c:4549
 #, c-format
 msgid "%pB:%pA%s exceeds overlay size\n"
 msgstr ""
 
-#: elf32-spu.c:4691
+#: elf32-spu.c:4690
 msgid "%F%P: auto overlay error: %E\n"
 msgstr ""
 
-#: elf32-spu.c:4712
+#: elf32-spu.c:4711
 msgid "Stack size for call graph root nodes.\n"
 msgstr ""
 
-#: elf32-spu.c:4713
+#: elf32-spu.c:4712
 msgid ""
 "\n"
 "Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
 msgstr ""
 
-#: elf32-spu.c:4723
+#: elf32-spu.c:4722
 msgid "Maximum stack required is 0x%v\n"
 msgstr ""
 
-#: elf32-spu.c:4742
+#: elf32-spu.c:4741
 msgid "%X%P: stack/lrlive analysis error: %E\n"
 msgstr ""
 
-#: elf32-spu.c:4745
+#: elf32-spu.c:4744
 msgid "%F%P: can not build overlay stubs: %E\n"
 msgstr ""
 
-#: elf32-spu.c:4814
+#: elf32-spu.c:4813
 msgid "fatal error while creating .fixup"
 msgstr ""
 
@@ -3630,279 +3740,278 @@ msgstr ""
 msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr ""
 
-#: elf32-tic6x.c:1628
+#: elf32-tic6x.c:1588
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr ""
 
-#: elf32-tic6x.c:1633
+#: elf32-tic6x.c:1593
 msgid "warning: generating a shared library containing non-PID code"
 msgstr ""
 
-#: elf32-tic6x.c:2493
+#: elf32-tic6x.c:2434
 #, c-format
 msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
 msgstr ""
 
-#: elf32-tic6x.c:3629
+#: elf32-tic6x.c:3511
 #, c-format
 msgid "%pB: error: unknown mandatory EABI object attribute %d"
 msgstr ""
 
-#: elf32-tic6x.c:3638
+#: elf32-tic6x.c:3520
 #, c-format
 msgid "%pB: warning: unknown EABI object attribute %d"
 msgstr ""
 
-#: elf32-tic6x.c:3752 elf32-tic6x.c:3761
+#: elf32-tic6x.c:3638 elf32-tic6x.c:3647
 #, c-format
 msgid "error: %pB requires more stack alignment than %pB preserves"
 msgstr ""
 
-#: elf32-tic6x.c:3771 elf32-tic6x.c:3780
+#: elf32-tic6x.c:3657 elf32-tic6x.c:3666
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
 msgstr ""
 
-#: elf32-tic6x.c:3789 elf32-tic6x.c:3798
+#: elf32-tic6x.c:3675 elf32-tic6x.c:3684
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
 msgstr ""
 
-#: elf32-tic6x.c:3807 elf32-tic6x.c:3815
+#: elf32-tic6x.c:3693 elf32-tic6x.c:3701
 #, c-format
 msgid "error: %pB requires more array alignment than %pB preserves"
 msgstr ""
 
-#: elf32-tic6x.c:3838
+#: elf32-tic6x.c:3724
 #, c-format
 msgid "warning: %pB and %pB differ in wchar_t size"
 msgstr ""
 
-#: elf32-tic6x.c:3857
+#: elf32-tic6x.c:3743
 #, c-format
 msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
 msgstr ""
 
-#: elf32-tilepro.c:3761 elfxx-tilegx.c:4145 elfxx-x86.c:1432
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:9530
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2579
+#: elf32-tilepro.c:3635 elfxx-tilegx.c:4019 elfxx-x86.c:1393
+#: elfnn-aarch64.c:9704 elfnn-riscv.c:2522
 #, c-format
 msgid "discarded output section: `%pA'"
 msgstr ""
 
-#: elf32-v850.c:153
+#: elf32-v850.c:152
 #, c-format
 msgid "variable `%s' cannot occupy in multiple small data regions"
 msgstr ""
 
-#: elf32-v850.c:156
+#: elf32-v850.c:155
 #, c-format
 msgid ""
 "variable `%s' can only be in one of the small, zero, and tiny data regions"
 msgstr ""
 
-#: elf32-v850.c:159
+#: elf32-v850.c:158
 #, c-format
 msgid ""
 "variable `%s' cannot be in both small and zero data regions simultaneously"
 msgstr ""
 
-#: elf32-v850.c:162
+#: elf32-v850.c:161
 #, c-format
 msgid ""
 "variable `%s' cannot be in both small and tiny data regions simultaneously"
 msgstr ""
 
-#: elf32-v850.c:165
+#: elf32-v850.c:164
 #, c-format
 msgid ""
 "variable `%s' cannot be in both zero and tiny data regions simultaneously"
 msgstr ""
 
-#: elf32-v850.c:463
+#: elf32-v850.c:462
 msgid "failed to find previous HI16 reloc"
 msgstr ""
 
-#: elf32-v850.c:2303
+#: elf32-v850.c:2302
 msgid "could not locate special linker symbol __gp"
 msgstr ""
 
-#: elf32-v850.c:2307
+#: elf32-v850.c:2306
 msgid "could not locate special linker symbol __ep"
 msgstr ""
 
-#: elf32-v850.c:2311
+#: elf32-v850.c:2310
 msgid "could not locate special linker symbol __ctbp"
 msgstr ""
 
-#: elf32-v850.c:2532
+#: elf32-v850.c:2531
 #, c-format
 msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"
 msgstr ""
 
-#: elf32-v850.c:2548
+#: elf32-v850.c:2547
 #, c-format
 msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
 msgstr ""
 
-#: elf32-v850.c:2563
+#: elf32-v850.c:2562
 #, c-format
 msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
 msgstr ""
 
-#: elf32-v850.c:2595
+#: elf32-v850.c:2594
 #, c-format
 msgid " alignment of 8-byte entities: "
 msgstr ""
 
-#: elf32-v850.c:2598
+#: elf32-v850.c:2597
 #, c-format
 msgid "4-byte"
 msgstr ""
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2598
 #, c-format
 msgid "8-byte"
 msgstr ""
 
-#: elf32-v850.c:2600 elf32-v850.c:2612
+#: elf32-v850.c:2599 elf32-v850.c:2611
 #, c-format
 msgid "not set"
 msgstr ""
 
-#: elf32-v850.c:2601 elf32-v850.c:2613 elf32-v850.c:2625 elf32-v850.c:2636
-#: elf32-v850.c:2647 elf32-v850.c:2658
+#: elf32-v850.c:2600 elf32-v850.c:2612 elf32-v850.c:2624 elf32-v850.c:2635
+#: elf32-v850.c:2646 elf32-v850.c:2657
 #, c-format
 msgid "unknown: %x"
 msgstr ""
 
-#: elf32-v850.c:2607
+#: elf32-v850.c:2606
 #, c-format
 msgid " size of doubles: "
 msgstr ""
 
-#: elf32-v850.c:2610
+#: elf32-v850.c:2609
 #, c-format
 msgid "4-bytes"
 msgstr ""
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2610
 #, c-format
 msgid "8-bytes"
 msgstr ""
 
-#: elf32-v850.c:2619
+#: elf32-v850.c:2618
 #, c-format
 msgid " FPU support required: "
 msgstr ""
 
-#: elf32-v850.c:2622
+#: elf32-v850.c:2621
 #, c-format
 msgid "FPU-2.0"
 msgstr ""
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2622
 #, c-format
 msgid "FPU-3.0"
 msgstr ""
 
-#: elf32-v850.c:2624
+#: elf32-v850.c:2623
 #, c-format
 msgid "none"
 msgstr ""
 
-#: elf32-v850.c:2631
+#: elf32-v850.c:2630
 #, c-format
 msgid "SIMD use: "
 msgstr ""
 
-#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#: elf32-v850.c:2633 elf32-v850.c:2644 elf32-v850.c:2655
 #, c-format
 msgid "yes"
 msgstr ""
 
-#: elf32-v850.c:2635 elf32-v850.c:2646 elf32-v850.c:2657
+#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
 #, c-format
 msgid "no"
 msgstr ""
 
-#: elf32-v850.c:2642
+#: elf32-v850.c:2641
 #, c-format
 msgid "CACHE use: "
 msgstr ""
 
-#: elf32-v850.c:2653
+#: elf32-v850.c:2652
 #, c-format
 msgid "MMU use: "
 msgstr ""
 
-#: elf32-v850.c:2820 elf32-v850.c:2876
+#: elf32-v850.c:2819 elf32-v850.c:2875
 #, c-format
 msgid "%pB: architecture mismatch with previous modules"
 msgstr ""
 
 #. xgettext:c-format.
-#: elf32-v850.c:2894
+#: elf32-v850.c:2893
 #, c-format
 msgid "private flags = %lx: "
 msgstr ""
 
-#: elf32-v850.c:2899
+#: elf32-v850.c:2898
 #, c-format
 msgid "unknown v850 architecture"
 msgstr ""
 
-#: elf32-v850.c:2901
+#: elf32-v850.c:2900
 #, c-format
 msgid "v850 E3 architecture"
 msgstr ""
 
-#: elf32-v850.c:2903 elf32-v850.c:2910
+#: elf32-v850.c:2902 elf32-v850.c:2909
 #, c-format
 msgid "v850 architecture"
 msgstr ""
 
-#: elf32-v850.c:2911
+#: elf32-v850.c:2910
 #, c-format
 msgid "v850e architecture"
 msgstr ""
 
-#: elf32-v850.c:2912
+#: elf32-v850.c:2911
 #, c-format
 msgid "v850e1 architecture"
 msgstr ""
 
-#: elf32-v850.c:2913
+#: elf32-v850.c:2912
 #, c-format
 msgid "v850e2 architecture"
 msgstr ""
 
-#: elf32-v850.c:2914
+#: elf32-v850.c:2913
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr ""
 
-#: elf32-v850.c:2915
+#: elf32-v850.c:2914
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr ""
 
-#: elf32-v850.c:3609 elf32-v850.c:3848
+#: elf32-v850.c:3612 elf32-v850.c:3851
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
 msgstr ""
 
-#: elf32-v850.c:3619 elf32-v850.c:3858
+#: elf32-v850.c:3622 elf32-v850.c:3861
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
 msgstr ""
 
-#: elf32-v850.c:3665 elf32-v850.c:3893
+#: elf32-v850.c:3668 elf32-v850.c:3896
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
 msgstr ""
 
-#: elf32-v850.c:3705
+#: elf32-v850.c:3708
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
 msgstr ""
@@ -3929,22 +4038,22 @@ msgid ""
 "addend of %<PRId64>"
 msgstr ""
 
-#: elf32-vax.c:1446
+#: elf32-vax.c:1389
 #, c-format
 msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored"
 msgstr ""
 
-#: elf32-vax.c:1572
+#: elf32-vax.c:1515
 #, c-format
 msgid "%pB: warning: %s relocation against symbol `%s' from %pA section"
 msgstr ""
 
-#: elf32-vax.c:1579
+#: elf32-vax.c:1522
 #, c-format
 msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section"
 msgstr ""
 
-#: elf32-visium.c:821
+#: elf32-visium.c:824
 #, c-format
 msgid ""
 "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
@@ -3960,252 +4069,275 @@ msgstr ""
 msgid "error reading cpu type from elf private data"
 msgstr ""
 
-#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2085 elf32-ia64.c:2353
-#: elf64-ia64.c:2353
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2074 elfnn-ia64.c:2343
 msgid "non-zero addend in @fptr reloc"
 msgstr ""
 
-#: elf32-xtensa.c:937
+#: elf32-xtensa.c:1001
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr ""
 
-#: elf32-xtensa.c:2675
+#: elf32-xtensa.c:2733
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
 msgstr ""
 
-#: elf32-xtensa.c:2758 elf32-xtensa.c:2881
+#: elf32-xtensa.c:2816 elf32-xtensa.c:2939
 msgid "dynamic relocation in read-only section"
 msgstr ""
 
-#: elf32-xtensa.c:2858
+#: elf32-xtensa.c:2916
 msgid "TLS relocation invalid without dynamic sections"
 msgstr ""
 
-#: elf32-xtensa.c:3070
+#: elf32-xtensa.c:3126
 msgid "internal inconsistency in size of .got.loc section"
 msgstr ""
 
-#: elf32-xtensa.c:3377
+#: elf32-xtensa.c:3432
 #, c-format
 msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
 msgstr ""
 
-#: elf32-xtensa.c:4608 elf32-xtensa.c:4616
+#: elf32-xtensa.c:4726 elf32-xtensa.c:4734
 msgid "attempt to convert L32R/CALLX to CALL failed"
 msgstr ""
 
-#: elf32-xtensa.c:6444 elf32-xtensa.c:6523 elf32-xtensa.c:7899
+#: elf32-xtensa.c:6559 elf32-xtensa.c:6638 elf32-xtensa.c:8064
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration "
 "mismatch"
 msgstr ""
 
-#: elf32-xtensa.c:7638
+#: elf32-xtensa.c:7805
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY "
 "relocation; possible configuration mismatch"
 msgstr ""
 
-#: elf32-xtensa.c:9493
+#: elf32-xtensa.c:9663
 msgid "invalid relocation address"
 msgstr ""
 
-#: elf32-xtensa.c:9543
+#: elf32-xtensa.c:9754
 msgid "overflow after relaxation"
 msgstr ""
 
-#: elf32-xtensa.c:10689
+#: elf32-xtensa.c:10900
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
 msgstr ""
 
-#: elf64-alpha.c:472
+#: elf32-z80.c:473
+#, c-format
+msgid "%pB: unsupported bfd mach %#lx"
+msgstr ""
+
+#: elf32-z80.c:518
+#, c-format
+msgid "%pB: unsupported mach %#x"
+msgstr ""
+
+#: elf32-z80.c:546
+#, c-format
+msgid "%pB: unsupported arch %#x"
+msgstr ""
+
+#: elf64-alpha.c:473
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr ""
 
-#: elf64-alpha.c:2463
+#: elf64-alpha.c:1999 elf64-alpha.c:2694 elflink.c:14885
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr ""
+
+#: elf64-alpha.c:2451
 #, c-format
 msgid "%pB: .got subsegment exceeds 64K (size %d)"
 msgstr ""
 
-#: elf64-alpha.c:3018 elf64-alpha.c:3214
+#: elf64-alpha.c:2989 elf64-alpha.c:3183
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
 msgstr ""
 
-#: elf64-alpha.c:4415 elf64-alpha.c:4428
+#: elf64-alpha.c:4381 elf64-alpha.c:4394
 #, c-format
 msgid "%pB: gp-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4484
+#: elf64-alpha.c:4450
 #, c-format
 msgid "%pB: change in gp: BRSGP %s"
 msgstr ""
 
-#: elf64-alpha.c:4509 mach-o.c:615
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:499
+#: elf64-alpha.c:4475 mach-o.c:616 elfnn-riscv.c:485
 msgid "<unknown>"
 msgstr ""
 
-#: elf64-alpha.c:4515
+#: elf64-alpha.c:4481
 #, c-format
 msgid "%pB: !samegp reloc against symbol without .prologue: %s"
 msgstr ""
 
-#: elf64-alpha.c:4573
+#: elf64-alpha.c:4539
 #, c-format
 msgid "%pB: unhandled dynamic relocation against %s"
 msgstr ""
 
-#: elf64-alpha.c:4608
+#: elf64-alpha.c:4574
 #, c-format
 msgid "%pB: pc-relative relocation against undefined weak symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4674
+#: elf64-alpha.c:4640
 #, c-format
 msgid "%pB: dtp-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4699
+#: elf64-alpha.c:4665
 #, c-format
 msgid "%pB: tp-relative relocation against dynamic symbol %s"
 msgstr ""
 
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:517
+msgid "internal error: relocation not supported"
+msgstr ""
+
 #: elf64-gen.c:71
 #, c-format
 msgid "%pB: Relocations in generic ELF (EM: %d)"
 msgstr ""
 
-#: elf64-hppa.c:2081
+#: elf64-hppa.c:2032
 #, c-format
 msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
 msgstr ""
 
-#: elf64-hppa.c:3286
+#: elf64-hppa.c:3236
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:598 elf32-ia64.c:636 elf64-ia64.c:636
+#: elf64-ia64-vms.c:598 elfnn-ia64.c:639
 #, c-format
 msgid ""
 "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or "
 "indirect branch"
 msgstr ""
 
-#: elf64-ia64-vms.c:2040 elf32-ia64.c:2301 elf64-ia64.c:2301
+#: elf64-ia64-vms.c:2029 elfnn-ia64.c:2291
 msgid "@pltoff reloc against local symbol"
 msgstr ""
 
-#: elf64-ia64-vms.c:3292 elf32-ia64.c:3712 elf64-ia64.c:3712
+#: elf64-ia64-vms.c:3281 elfnn-ia64.c:3674
 #, c-format
 msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
 msgstr ""
 
-#: elf64-ia64-vms.c:3302 elf32-ia64.c:3722 elf64-ia64.c:3722
+#: elf64-ia64-vms.c:3291 elfnn-ia64.c:3684
 #, c-format
 msgid "%pB: __gp does not cover short data segment"
 msgstr ""
 
-#: elf64-ia64-vms.c:3572 elf32-ia64.c:3996 elf64-ia64.c:3996
+#: elf64-ia64-vms.c:3561 elfnn-ia64.c:3958
 #, c-format
 msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
 msgstr ""
 
-#: elf64-ia64-vms.c:3636 elf32-ia64.c:4064 elf64-ia64.c:4064
+#: elf64-ia64-vms.c:3625 elfnn-ia64.c:4026
 #, c-format
 msgid "%pB: @gprel relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3695 elf32-ia64.c:4127 elf64-ia64.c:4127
+#: elf64-ia64-vms.c:3684 elfnn-ia64.c:4089
 #, c-format
 msgid "%pB: linking non-pic code in a position independent executable"
 msgstr ""
 
-#: elf64-ia64-vms.c:3797 elf32-ia64.c:4265 elf64-ia64.c:4265
+#: elf64-ia64-vms.c:3786 elfnn-ia64.c:4227
 #, c-format
 msgid "%pB: @internal branch to dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3800 elf32-ia64.c:4268 elf64-ia64.c:4268
+#: elf64-ia64-vms.c:3789 elfnn-ia64.c:4230
 #, c-format
 msgid "%pB: speculation fixup to dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3803 elf32-ia64.c:4271 elf64-ia64.c:4271
+#: elf64-ia64-vms.c:3792 elfnn-ia64.c:4233
 #, c-format
 msgid "%pB: @pcrel relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-ia64-vms.c:3927 elf32-ia64.c:4468 elf64-ia64.c:4468
+#: elf64-ia64-vms.c:3916 elfnn-ia64.c:4430
 msgid "unsupported reloc"
 msgstr ""
 
-#: elf64-ia64-vms.c:3964 elf32-ia64.c:4506 elf64-ia64.c:4506
+#: elf64-ia64-vms.c:3953 elfnn-ia64.c:4468
 #, c-format
 msgid ""
 "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in "
 "section `%pA'."
 msgstr ""
 
-#: elf64-ia64-vms.c:3981 elf32-ia64.c:4523 elf64-ia64.c:4523
+#: elf64-ia64-vms.c:3970 elfnn-ia64.c:4485
 #, c-format
 msgid ""
 "%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size "
 "%#<PRIx64> (> 0x1000000)."
 msgstr ""
 
-#: elf64-ia64-vms.c:4273 elf32-ia64.c:4781 elf64-ia64.c:4781
+#: elf64-ia64-vms.c:4266 elfnn-ia64.c:4746
 #, c-format
 msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4282 elf32-ia64.c:4790 elf64-ia64.c:4790
+#: elf64-ia64-vms.c:4275 elfnn-ia64.c:4755
 #, c-format
 msgid "%pB: linking big-endian files with little-endian files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4291 elf32-ia64.c:4799 elf64-ia64.c:4799
+#: elf64-ia64-vms.c:4284 elfnn-ia64.c:4764
 #, c-format
 msgid "%pB: linking 64-bit files with 32-bit files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4300 elf32-ia64.c:4808 elf64-ia64.c:4808
+#: elf64-ia64-vms.c:4293 elfnn-ia64.c:4773
 #, c-format
 msgid "%pB: linking constant-gp files with non-constant-gp files"
 msgstr ""
 
-#: elf64-ia64-vms.c:4310 elf32-ia64.c:4818 elf64-ia64.c:4818
+#: elf64-ia64-vms.c:4303 elfnn-ia64.c:4783
 #, c-format
 msgid "%pB: linking auto-pic files with non-auto-pic files"
 msgstr ""
 
-#: elf64-ia64-vms.c:5153 elflink.c:4894
+#: elf64-ia64-vms.c:5150 elflink.c:5072
 #, c-format
 msgid ""
 "warning: alignment %u of common symbol `%s' in %pB is greater than the "
 "alignment (%u) of its section %pA"
 msgstr ""
 
-#: elf64-ia64-vms.c:5160 elflink.c:4901
+#: elf64-ia64-vms.c:5157 elflink.c:5079
 #, c-format
 msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
 msgstr ""
 
-#: elf64-ia64-vms.c:5176 elflink.c:4918
+#: elf64-ia64-vms.c:5173 elflink.c:5096
 #, c-format
 msgid ""
 "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in "
 "%pB"
 msgstr ""
 
-#: elf64-mips.c:4098
+#: elf64-mips.c:4095
 #, c-format
 msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
 msgstr ""
@@ -4257,166 +4389,181 @@ msgstr ""
 msgid "%pB: directive LOCAL valid only with a register or absolute value"
 msgstr ""
 
-#: elf64-mmix.c:1744
+#: elf64-mmix.c:1742
 #, c-format
 msgid ""
 "%pB: LOCAL directive: register $%<PRId64> is not a local register; first "
 "global register is $%<PRId64>"
 msgstr ""
 
-#: elf64-mmix.c:2173
+#: elf64-mmix.c:2167
 #, c-format
 msgid ""
 "%pB: error: multiple definition of `%s'; start of %s is set in a earlier "
 "linked file"
 msgstr ""
 
-#: elf64-mmix.c:2228
+#: elf64-mmix.c:2222
 msgid "register section has contents\n"
 msgstr ""
 
-#: elf64-mmix.c:2418
+#: elf64-mmix.c:2412
 #, c-format
 msgid ""
 "internal inconsistency: remaining %lu != max %lu; please report this bug"
 msgstr ""
 
-#: elf64-ppc.c:3827
+#: elf64-ppc.c:1342
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr ""
+
+#: elf64-ppc.c:4101
 #, c-format
 msgid "symbol '%s' has invalid st_other for ABI version 1"
 msgstr ""
 
-#: elf64-ppc.c:4002
+#: elf64-ppc.c:4281
 #, c-format
 msgid "%pB .opd not allowed in ABI version %d"
 msgstr ""
 
-#: elf64-ppc.c:4523
+#: elf64-ppc.c:4852
 #, c-format
 msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
 msgstr ""
 
-#: elf64-ppc.c:4919
+#: elf64-ppc.c:5260
 #, c-format
 msgid "%pB uses unknown e_flags 0x%lx"
 msgstr ""
 
-#: elf64-ppc.c:4927
+#: elf64-ppc.c:5268
 #, c-format
 msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
 msgstr ""
 
-#: elf64-ppc.c:4954
+#: elf64-ppc.c:5295
 #, c-format
 msgid " [abiv%ld]"
 msgstr ""
 
-#: elf64-ppc.c:6145
+#: elf64-ppc.c:6574
 msgid ""
 "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting "
 "LD_BIND_NOW=1 or upgrade gcc\n"
 msgstr ""
 
-#: elf64-ppc.c:6417
+#: elf64-ppc.c:6841
 #, c-format
 msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
 msgstr ""
 
-#: elf64-ppc.c:6644
+#: elf64-ppc.c:7089
 #, c-format
 msgid "dynreloc miscount for %pB, section %pA"
 msgstr ""
 
-#: elf64-ppc.c:6733
+#: elf64-ppc.c:7178
 #, c-format
 msgid "%pB: .opd is not a regular array of opd entries"
 msgstr ""
 
-#: elf64-ppc.c:6743
+#: elf64-ppc.c:7188
 #, c-format
 msgid "%pB: unexpected reloc type %u in .opd section"
 msgstr ""
 
-#: elf64-ppc.c:6765
+#: elf64-ppc.c:7210
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr ""
 
-#: elf64-ppc.c:7249
+#: elf64-ppc.c:7697
 msgid ""
 "warning: --plt-localentry is especially dangerous without ld.so support to "
 "detect ABI violations"
 msgstr ""
 
-#: elf64-ppc.c:7499
+#: elf64-ppc.c:8017
 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
 msgstr ""
 
-#: elf64-ppc.c:7876 elf64-ppc.c:8513
+#: elf64-ppc.c:8417 elf64-ppc.c:9130
 #, c-format
 msgid "%s defined on removed toc entry"
 msgstr ""
 
-#: elf64-ppc.c:8241
+#: elf64-ppc.c:9087
 #, c-format
-msgid "%H: toc optimization is not supported for %s instruction\n"
+msgid "%H: %s references optimized away TOC entry\n"
 msgstr ""
 
-#: elf64-ppc.c:8470
+#: elf64-ppc.c:9308
 #, c-format
-msgid "%H: %s references optimized away TOC entry\n"
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
 msgstr ""
 
-#: elf64-ppc.c:9301
+#: elf64-ppc.c:10135
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr ""
 
-#: elf64-ppc.c:10215
+#: elf64-ppc.c:11277
 msgid "%P: cannot find opd entry toc for `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:10303
+#: elf64-ppc.c:11323 elf64-ppc.c:11867
+msgid ""
+"%F%P: Could not assign group %pA target %pA to an output section. Retry "
+"without --enable-non-contiguous-regions.\n"
+msgstr ""
+
+#: elf64-ppc.c:11385
 #, c-format
 msgid "long branch stub `%s' offset overflow"
 msgstr ""
 
-#: elf64-ppc.c:10330
+#: elf64-ppc.c:11412
 #, c-format
 msgid "can't find branch stub `%s'"
 msgstr ""
 
-#: elf64-ppc.c:10394 elf64-ppc.c:10642 elf64-ppc.c:12791
+#: elf64-ppc.c:11476 elf64-ppc.c:11743 elf64-ppc.c:13972
 #, c-format
 msgid "%P: linkage table error against `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:10820
+#: elf64-ppc.c:11939
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr ""
 
-#: elf64-ppc.c:11779
+#: elf64-ppc.c:12920
 #, c-format
 msgid "%pB section %pA exceeds stub group size"
 msgstr ""
 
-#: elf64-ppc.c:13189 elf64-ppc.c:13208
+#: elf64-ppc.c:14153
+msgid "__tls_get_addr call offset overflow"
+msgstr ""
+
+#: elf64-ppc.c:14455 elf64-ppc.c:14474
 #, c-format
 msgid "%s offset too large for .eh_frame sdata4 encoding"
 msgstr ""
 
-#: elf64-ppc.c:13244
+#: elf64-ppc.c:14506
 #, c-format
 msgid "linker stubs in %u group\n"
 msgid_plural "linker stubs in %u groups\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: elf64-ppc.c:13248
+#: elf64-ppc.c:14513
 #, c-format
 msgid ""
-"  branch         %lu\n"
+"%s  branch         %lu\n"
 "  branch toc adj %lu\n"
 "  branch notoc   %lu\n"
 "  branch both    %lu\n"
@@ -4431,188 +4578,197 @@ msgid ""
 "  global entry   %lu"
 msgstr ""
 
-#: elf64-ppc.c:13583
+#: elf64-ppc.c:14913
 #, c-format
 msgid "%H: %s used with TLS symbol `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:13585
+#: elf64-ppc.c:14915
 #, c-format
 msgid "%H: %s used with non-TLS symbol `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:14245
+#: elf64-ppc.c:15670
 #, c-format
 msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
 msgstr ""
 
-#: elf64-ppc.c:14251
+#: elf64-ppc.c:15676
 #, c-format
 msgid ""
 "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
 msgstr ""
 
-#: elf64-ppc.c:14985
+#: elf64-ppc.c:16564
 #, c-format
 msgid "%H: %s for indirect function `%pT' unsupported\n"
 msgstr ""
 
-#: elf64-ppc.c:15097
+#: elf64-ppc.c:16649
+#, c-format
+msgid ""
+"%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr ""
+
+#: elf64-ppc.c:16704
 #, c-format
 msgid "%P: %pB: %s is not supported for `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:15326
+#: elf64-ppc.c:16963
 #, c-format
 msgid "%H: error: %s not a multiple of %u\n"
 msgstr ""
 
-#: elf64-ppc.c:15349
+#: elf64-ppc.c:16986
 #, c-format
 msgid "%H: unresolvable %s against `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:15446
+#: elf64-ppc.c:17131
 #, c-format
 msgid "%H: %s against `%pT': error %d\n"
 msgstr ""
 
-#: elf64-s390.c:2576
+#: elf64-s390.c:2446
 #, c-format
 msgid ""
 "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed "
 "from executable (rebuild file with -fPIC ?)"
 msgstr ""
 
-#: elf64-sparc.c:109 elfcode.h:1471
-#, c-format
-msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
-msgstr ""
-
-#: elf64-sparc.c:467
+#: elf64-sparc.c:478
 #, c-format
 msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
 msgstr ""
 
-#: elf64-sparc.c:488
+#: elf64-sparc.c:499
 #, c-format
 msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
 msgstr ""
 
-#: elf64-sparc.c:512
+#: elf64-sparc.c:523
 #, c-format
 msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
 msgstr ""
 
-#: elf64-sparc.c:559
+#: elf64-sparc.c:570
 #, c-format
 msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
 msgstr ""
 
-#: elf64-sparc.c:691
+#: elf64-sparc.c:702
 #, c-format
 msgid "%pB: linking UltraSPARC specific with HAL specific code"
 msgstr ""
 
-#: elf64-x86-64.c:1412
+#: elf64-x86-64.c:1417
 msgid "hidden symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1420
 msgid "internal symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1423 elf64-x86-64.c:1427
 msgid "protected symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1429
 msgid "symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1425 elf64-x86-64.c:1435
-msgid "; recompile with -fPIC"
-msgstr ""
-
-#: elf64-x86-64.c:1430
+#: elf64-x86-64.c:1435
 msgid "undefined "
 msgstr ""
 
-#: elf64-x86-64.c:1439
+#: elf64-x86-64.c:1445
 msgid "a shared object"
 msgstr ""
 
-#: elf64-x86-64.c:1441
+#: elf64-x86-64.c:1447
+msgid "; recompile with -fPIC"
+msgstr ""
+
+#: elf64-x86-64.c:1452
 msgid "a PIE object"
 msgstr ""
 
-#: elf64-x86-64.c:1443
+#: elf64-x86-64.c:1454
 msgid "a PDE object"
 msgstr ""
 
-#: elf64-x86-64.c:1446
+#: elf64-x86-64.c:1456
+msgid "; recompile with -fPIE"
+msgstr ""
+
+#: elf64-x86-64.c:1460
 #, c-format
 msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
 msgstr ""
 
-#: elf64-x86-64.c:1931
+#: elf64-x86-64.c:1968
 #, c-format
 msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
 msgstr ""
 
-#: elf64-x86-64.c:2073
+#: elf64-x86-64.c:2124
 #, c-format
 msgid "%pB: '%s' accessed both as normal and thread local symbol"
 msgstr ""
 
-#: elf64-x86-64.c:2696 /work/sources/binutils/current/bfd/elfnn-aarch64.c:5302
+#: elf64-x86-64.c:2747 elfnn-aarch64.c:5546
 #, c-format
 msgid ""
 "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: "
 "%<PRId64>"
 msgstr ""
 
-#: elf64-x86-64.c:2934
+#: elf64-x86-64.c:2992
 #, c-format
 msgid ""
 "%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used "
 "when making a shared object"
 msgstr ""
 
-#: elf64-x86-64.c:2948
+#: elf64-x86-64.c:3006
 #, c-format
 msgid ""
 "%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used "
 "when making a shared object"
 msgstr ""
 
-#: elf64-x86-64.c:3208
+#: elf64-x86-64.c:3283
 #, c-format
 msgid ""
 "%pB: addend %s%#x in relocation %s against symbol `%s' at %#<PRIx64> in "
 "section `%pA' is out of range"
 msgstr ""
 
-#: elf64-x86-64.c:3885
+#: elf64-x86-64.c:3417 elflink.c:13267
+msgid "%F%P: corrupt input: %pB\n"
+msgstr ""
+
+#: elf64-x86-64.c:4101
 msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
 msgstr ""
 
-#: elf64-x86-64.c:4043
+#: elf64-x86-64.c:4259
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
 msgstr ""
 
-#: elf64-x86-64.c:4106
+#: elf64-x86-64.c:4322
 #, c-format
 msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
 msgstr ""
 
-#: elf64-x86-64.c:4159
+#: elf64-x86-64.c:4375
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
 msgstr ""
 
-#: elfcode.h:323
+#: elfcode.h:326
 msgid "warning: %pB has a corrupt section with a size (%"
 msgstr ""
 
@@ -4621,696 +4777,863 @@ msgstr ""
 msgid "warning: %pB has a corrupt string table index - ignoring"
 msgstr ""
 
-#: elfcode.h:1212
+#: elfcode.h:1228
 #, c-format
 msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
 msgstr ""
 
-#: elfcore.h:300
+#: elfcore.h:308
 #, c-format
 msgid ""
 "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: "
 "%<PRIu64>"
 msgstr ""
 
-#: elflink.c:1367
+#: elflink.c:1362
 #, c-format
 msgid ""
 "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB "
 "section %pA"
 msgstr ""
 
-#: elflink.c:1373
+#: elflink.c:1368
 #, c-format
 msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
 msgstr ""
 
-#: elflink.c:1379
+#: elflink.c:1374
 #, c-format
 msgid ""
 "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
 msgstr ""
 
-#: elflink.c:1385
+#: elflink.c:1380
 #, c-format
 msgid ""
 "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
 msgstr ""
 
-#: elflink.c:2075
+#: elflink.c:2071
 #, c-format
 msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr ""
 
-#: elflink.c:2452
+#: elflink.c:2448
 #, c-format
 msgid "%pB: version node not found for symbol %s"
 msgstr ""
 
-#: elflink.c:2541
+#: elflink.c:2539
 #, c-format
 msgid ""
 "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in "
 "section `%pA'"
 msgstr ""
 
-#: elflink.c:2553
+#: elflink.c:2551
 #, c-format
 msgid ""
 "%pB: non-zero symbol index (%#<PRIx64>) for offset %#<PRIx64> in section `"
 "%pA' when the object file has no symbol table"
 msgstr ""
 
-#: elflink.c:2744
+#: elflink.c:2740
 #, c-format
 msgid "%pB: relocation size mismatch in %pB section %pA"
 msgstr ""
 
-#: elflink.c:3066
+#: elflink.c:3069
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr ""
 
-#: elflink.c:3128
+#: elflink.c:3129
 msgid "%P: copy reloc against protected `%pT' is dangerous\n"
 msgstr ""
 
-#: elflink.c:3932
+#: elflink.c:4064
 #, c-format
 msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
 msgstr ""
 
-#: elflink.c:4598
+#: elflink.c:4534
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr ""
+
+#: elflink.c:4602
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr ""
+
+#: elflink.c:4750
+#, c-format
+msgid "%pB: not enough version information"
+msgstr ""
+
+#: elflink.c:4788
 #, c-format
 msgid "%pB: %s: invalid version %u (max %d)"
 msgstr ""
 
-#: elflink.c:4635
+#: elflink.c:4825
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr ""
 
-#: elflink.c:5054
+#: elflink.c:5231
 #, c-format
 msgid "%pB: undefined reference to symbol '%s'"
 msgstr ""
 
-#: elflink.c:6130
+#: elflink.c:6315
 #, c-format
 msgid "%pB: stack size specified and %s set"
 msgstr ""
 
-#: elflink.c:6134
+#: elflink.c:6319
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr ""
 
-#: elflink.c:6331
+#: elflink.c:6516
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr ""
 
-#: elflink.c:6902
+#: elflink.c:7088
 #, c-format
 msgid "%pB: .preinit_array section is not allowed in DSO"
 msgstr ""
 
-#: elflink.c:8359
+#: elflink.c:8602
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr ""
 
-#: elflink.c:8514
+#: elflink.c:8757
 #, c-format
 msgid "unknown operator '%c' in complex symbol"
 msgstr ""
 
 #. PR 21524: Let the user know if a symbol was removed by garbage collection.
-#: elflink.c:8852
+#: elflink.c:9095
 #, c-format
 msgid ""
 "%pB:%pA: error: relocation references symbol %s which was removed by garbage "
 "collection"
 msgstr ""
 
-#: elflink.c:8855
+#: elflink.c:9098
 #, c-format
 msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
 msgstr ""
 
-#: elflink.c:9091 elflink.c:9109 elflink.c:9148 elflink.c:9166
+#: elflink.c:9343 elflink.c:9361 elflink.c:9400 elflink.c:9418
 #, c-format
 msgid "%pB: unable to sort relocs - they are in more than one size"
 msgstr ""
 
 #. The section size is not divisible by either -
 #. something is wrong.
-#: elflink.c:9125 elflink.c:9182
+#: elflink.c:9377 elflink.c:9434
 #, c-format
 msgid "%pB: unable to sort relocs - they are of an unknown size"
 msgstr ""
 
-#: elflink.c:9234
+#: elflink.c:9486
 msgid "not enough memory to sort relocations"
 msgstr ""
 
-#: elflink.c:9502
+#: elflink.c:9767
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr ""
 
-#: elflink.c:9782
+#: elflink.c:10043
 #, c-format
 msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9785
+#: elflink.c:10046
 #, c-format
 msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9788
+#: elflink.c:10049
 #, c-format
 msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9874
+#: elflink.c:10135
 #, c-format
 msgid "%pB: could not find output section %pA for input section %pA"
 msgstr ""
 
-#: elflink.c:10028
+#: elflink.c:10289
 #, c-format
 msgid "%pB: protected symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:10031
+#: elflink.c:10292
 #, c-format
 msgid "%pB: internal symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:10034
+#: elflink.c:10295
 #, c-format
 msgid "%pB: hidden symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:10066
+#: elflink.c:10327
 #, c-format
 msgid "%pB: no symbol version section for versioned symbol `%s'"
 msgstr ""
 
-#: elflink.c:10679
+#: elflink.c:10699
+#, c-format
+msgid ""
+"warning: --enable-non-contiguous-regions discards section `%s' from '%s'\n"
+msgstr ""
+
+#: elflink.c:10951
 #, c-format
 msgid "error: %pB: size of section %pA is not multiple of address size"
 msgstr ""
 
-#: elflink.c:10724
+#: elflink.c:10996
 #, c-format
 msgid ""
 "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a "
 "non-existent global symbol"
 msgstr ""
 
-#: elflink.c:11484
+#: elflink.c:11739
 #, c-format
 msgid ""
 "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
 msgstr ""
 
-#: elflink.c:11490
+#: elflink.c:11745
 #, c-format
 msgid "%pA has both ordered and unordered sections"
 msgstr ""
 
-#: elflink.c:11592
+#: elflink.c:11851
 #, c-format
 msgid "%pB: no symbol found for import library"
 msgstr ""
 
-#: elflink.c:12225
+#: elflink.c:12488
 #, c-format
 msgid "%pB: file class %s incompatible with %s"
 msgstr ""
 
-#: elflink.c:12442
+#: elflink.c:12704
 #, c-format
 msgid "%pB: failed to generate import library"
 msgstr ""
 
-#: elflink.c:12561
+#: elflink.c:12823
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr ""
 
-#: elflink.c:12609
+#: elflink.c:12871
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr ""
 
-#: elflink.c:12701
+#: elflink.c:12964
 msgid "%P%X: read-only segment has dynamic relocations\n"
 msgstr ""
 
-#: elflink.c:12704
-msgid "%P: warning: creating a DT_TEXTREL in a shared object\n"
+#: elflink.c:12967
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
+msgstr ""
+
+#: elflink.c:12970
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
 msgstr ""
 
-#: elflink.c:12829
+#: elflink.c:13095
 msgid "%P%X: can not read symbols: %E\n"
 msgstr ""
 
-#: elflink.c:13002
-msgid "%F%P: corrupt input: %pB\n"
+#: elflink.c:13500
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
 msgstr ""
 
-#: elflink.c:13668
+#: elflink.c:13961
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
 msgstr ""
 
-#: elflink.c:13844
+#: elflink.c:14002
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr ""
+
+#: elflink.c:14145
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr ""
 
-#: elfxx-mips.c:1450
+#: elflink.c:14891
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr ""
+
+#: elflink.c:14980
+msgid ""
+"%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault "
+"at runtime; recompile with %s\n"
+msgstr ""
+
+#: elfxx-aarch64.c:477
+#, c-format
+msgid ""
+"%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr ""
+
+#: elfxx-aarch64.c:738 elfnn-aarch64.c:9902 elfnn-aarch64.c:9909
+#, c-format
+msgid ""
+"%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI "
+"in NOTE section."
+msgstr ""
+
+#: elfxx-aarch64.c:758 elfxx-x86.c:2554
+msgid "%F%P: failed to create GNU property section\n"
+msgstr ""
+
+#: elfxx-aarch64.c:762 elfxx-x86.c:2559
+#, c-format
+msgid "%F%pA: failed to align section\n"
+msgstr ""
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr ""
+
+#: elfxx-mips.c:1507
 msgid "static procedure (no name)"
 msgstr ""
 
-#: elfxx-mips.c:5718
+#: elfxx-mips.c:5782
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr ""
 
-#: elfxx-mips.c:6485
+#: elfxx-mips.c:6547
 msgid "%X%H: unsupported JALX to the same ISA mode\n"
 msgstr ""
 
-#: elfxx-mips.c:6518
+#: elfxx-mips.c:6580
 msgid ""
 "%X%H: unsupported jump between ISA modes; consider recompiling with "
 "interlinking enabled\n"
 msgstr ""
 
-#: elfxx-mips.c:6563
+#: elfxx-mips.c:6625
 msgid ""
 "%X%H: cannot convert branch between ISA modes to JALX: relocation out of "
 "range\n"
 msgstr ""
 
-#: elfxx-mips.c:6575
+#: elfxx-mips.c:6637
 msgid "%X%H: unsupported branch between ISA modes\n"
 msgstr ""
 
-#: elfxx-mips.c:7223
+#: elfxx-mips.c:7286
 #, c-format
 msgid ""
 "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
 msgstr ""
 
-#: elfxx-mips.c:7267 elfxx-mips.c:7502
+#: elfxx-mips.c:7330 elfxx-mips.c:7567
 #, c-format
 msgid "%pB: warning: bad `%s' option size %u smaller than its header"
 msgstr ""
 
-#: elfxx-mips.c:8300 elfxx-mips.c:8426
+#: elfxx-mips.c:8374 elfxx-mips.c:8500
 #, c-format
 msgid ""
 "%pB: warning: cannot determine the target function for stub section `%s'"
 msgstr ""
 
-#: elfxx-mips.c:8558
+#: elfxx-mips.c:8632
 #, c-format
 msgid "%pB: malformed reloc detected for section %s"
 msgstr ""
 
-#: elfxx-mips.c:8658
+#: elfxx-mips.c:8731
 #, c-format
 msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
 msgstr ""
 
-#: elfxx-mips.c:8796
+#: elfxx-mips.c:8871
 #, c-format
 msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
 msgstr ""
 
-#: elfxx-mips.c:9086
+#: elfxx-mips.c:9174
 #, c-format
 msgid ""
 "%X%H: relocation %s against `%s' cannot be used when making a shared object; "
 "recompile with -fPIC\n"
 msgstr ""
 
-#: elfxx-mips.c:9422
+#: elfxx-mips.c:9300
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr ""
+
+#: elfxx-mips.c:9303
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr ""
+
+#: elfxx-mips.c:9523
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr ""
 
-#: elfxx-mips.c:10350
+#: elfxx-mips.c:10457
 #, c-format
 msgid ""
 "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in "
 "section `%pA'"
 msgstr ""
 
-#: elfxx-mips.c:10490
+#: elfxx-mips.c:10597
 msgid ""
 "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
 msgstr ""
 
-#: elfxx-mips.c:10509
+#: elfxx-mips.c:10616
 msgid "cannot convert a jump to JALX for a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10512
+#: elfxx-mips.c:10619
 msgid "jump to a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10513
+#: elfxx-mips.c:10620
 msgid "jump to a non-instruction-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10516
+#: elfxx-mips.c:10623
 msgid "cannot convert a branch to JALX for a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10518
+#: elfxx-mips.c:10625
 msgid "branch to a non-instruction-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10520
+#: elfxx-mips.c:10627
 msgid "PC-relative load from unaligned address"
 msgstr ""
 
-#: elfxx-mips.c:10798
+#: elfxx-mips.c:10927
 #, c-format
 msgid ""
 "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; "
 "consider using `-Ttext-segment=...'"
 msgstr ""
 
-#: elfxx-mips.c:10911 elfxx-mips.c:11484
+#: elfxx-mips.c:11042 elfxx-mips.c:11629
 #, c-format
 msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
 msgstr ""
 
-#: elfxx-mips.c:11456
+#: elfxx-mips.c:11601
 #, c-format
 msgid ""
 "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; "
 "consider using `-Ttext-segment=...'"
 msgstr ""
 
-#: elfxx-mips.c:14397
+#: elfxx-mips.c:14556
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr ""
 
-#: elfxx-mips.c:14931
+#: elfxx-mips.c:15090
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr ""
 
-#: elfxx-mips.c:15208
+#: elfxx-mips.c:15367
 #, c-format
 msgid "%pB: warning: linking abicalls files with non-abicalls files"
 msgstr ""
 
-#: elfxx-mips.c:15225
+#: elfxx-mips.c:15384
 #, c-format
 msgid "%pB: linking 32-bit code with 64-bit code"
 msgstr ""
 
-#: elfxx-mips.c:15257 elfxx-mips.c:15323 elfxx-mips.c:15338
+#: elfxx-mips.c:15416 elfxx-mips.c:15482 elfxx-mips.c:15497
 #, c-format
 msgid "%pB: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15281
+#: elfxx-mips.c:15440
 #, c-format
 msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15306
+#: elfxx-mips.c:15465
 #, c-format
 msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15440
+#: elfxx-mips.c:15599
 #, c-format
 msgid ""
 "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses "
 "unknown floating point ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15446
+#: elfxx-mips.c:15605
 #, c-format
 msgid ""
 "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15452
+#: elfxx-mips.c:15611
 #, c-format
 msgid ""
 "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15466
+#: elfxx-mips.c:15625
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15485
+#: elfxx-mips.c:15644
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15497
+#: elfxx-mips.c:15656
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15506
+#: elfxx-mips.c:15665
 #, c-format
 msgid ""
 "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI "
 "%d"
 msgstr ""
 
-#: elfxx-mips.c:15568
+#: elfxx-mips.c:15727
 #, c-format
 msgid "%pB: endianness incompatible with that of the selected emulation"
 msgstr ""
 
-#: elfxx-mips.c:15582
+#: elfxx-mips.c:15741
 #, c-format
 msgid "%pB: ABI is incompatible with that of the selected emulation"
 msgstr ""
 
-#: elfxx-mips.c:15634
+#: elfxx-mips.c:15794
 #, c-format
 msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15639
+#: elfxx-mips.c:15799
 #, c-format
 msgid ""
 "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15643
+#: elfxx-mips.c:15803
 #, c-format
 msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15650
+#: elfxx-mips.c:15810
 #, c-format
 msgid ""
 "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15654
+#: elfxx-mips.c:15814
 #, c-format
 msgid ""
 "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
 msgstr ""
 
-#: elfxx-mips.c:15843
+#: elfxx-mips.c:16005
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr ""
 
-#: elfxx-mips.c:15905 elfxx-mips.c:15916
+#: elfxx-mips.c:16067 elfxx-mips.c:16078
 msgid "None"
 msgstr ""
 
-#: elfxx-mips.c:15907 elfxx-mips.c:15976
+#: elfxx-mips.c:16069 elfxx-mips.c:16138
 msgid "Unknown"
 msgstr ""
 
-#: elfxx-mips.c:15987
+#: elfxx-mips.c:16149
 #, c-format
 msgid "Hard or soft float\n"
 msgstr ""
 
-#: elfxx-mips.c:15990
+#: elfxx-mips.c:16152
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr ""
 
-#: elfxx-mips.c:15993
+#: elfxx-mips.c:16155
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr ""
 
-#: elfxx-mips.c:15996
+#: elfxx-mips.c:16158
 #, c-format
 msgid "Soft float\n"
 msgstr ""
 
-#: elfxx-mips.c:15999
+#: elfxx-mips.c:16161
 #, c-format
 msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
 msgstr ""
 
-#: elfxx-mips.c:16002
+#: elfxx-mips.c:16164
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:16005
+#: elfxx-mips.c:16167
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:16008
+#: elfxx-mips.c:16170
 #, c-format
 msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:16040
+#: elfxx-mips.c:16202
 #, c-format
 msgid " [abi=O32]"
 msgstr ""
 
-#: elfxx-mips.c:16042
+#: elfxx-mips.c:16204
 #, c-format
 msgid " [abi=O64]"
 msgstr ""
 
-#: elfxx-mips.c:16044
+#: elfxx-mips.c:16206
 #, c-format
 msgid " [abi=EABI32]"
 msgstr ""
 
-#: elfxx-mips.c:16046
+#: elfxx-mips.c:16208
 #, c-format
 msgid " [abi=EABI64]"
 msgstr ""
 
-#: elfxx-mips.c:16048
+#: elfxx-mips.c:16210
 #, c-format
 msgid " [abi unknown]"
 msgstr ""
 
-#: elfxx-mips.c:16050
+#: elfxx-mips.c:16212
 #, c-format
 msgid " [abi=N32]"
 msgstr ""
 
-#: elfxx-mips.c:16052
+#: elfxx-mips.c:16214
 #, c-format
 msgid " [abi=64]"
 msgstr ""
 
-#: elfxx-mips.c:16054
+#: elfxx-mips.c:16216
 #, c-format
 msgid " [no abi set]"
 msgstr ""
 
-#: elfxx-mips.c:16079
+#: elfxx-mips.c:16241
 #, c-format
 msgid " [unknown ISA]"
 msgstr ""
 
-#: elfxx-mips.c:16099
+#: elfxx-mips.c:16261
 #, c-format
 msgid " [not 32bitmode]"
 msgstr ""
 
-#: elfxx-sparc.c:3113 /work/sources/binutils/current/bfd/elfnn-aarch64.c:5286
+#: elfxx-riscv.c:1063
+#, c-format
+msgid "-march=%s: Expect number after `%dp'."
+msgstr ""
+
+#: elfxx-riscv.c:1174
+#, c-format
+msgid "-march=%s: rv%de is not a valid base ISA"
+msgstr ""
+
+#: elfxx-riscv.c:1214
+#, c-format
+msgid "-march=%s: first ISA subset must be `e', `i' or `g'"
+msgstr ""
+
+#: elfxx-riscv.c:1242
+#, c-format
+msgid "-march=%s: unsupported ISA subset `%c'"
+msgstr ""
+
+#: elfxx-riscv.c:1245
+#, c-format
+msgid "-march=%s: ISA string is not in canonical order. `%c'"
+msgstr ""
+
+#: elfxx-riscv.c:1364
+#, c-format
+msgid "-march=%s: Invalid or unknown %s ISA extension: '%s'"
+msgstr ""
+
+#: elfxx-riscv.c:1375
+#, c-format
+msgid "-march=%s: Duplicate %s ISA extension: '%s'"
+msgstr ""
+
+#: elfxx-riscv.c:1386
 #, c-format
 msgid ""
-"%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
+"-march=%s: %s ISA extension not in alphabetical order: '%s' must come before "
+"'%s'."
 msgstr ""
 
-#: elfxx-tilegx.c:4254
+#: elfxx-riscv.c:1407
 #, c-format
-msgid "%pB: cannot link together %s and %s objects"
+msgid "-march=%s: %s must separate with _"
 msgstr ""
 
-#: elfxx-x86.c:578
+#: elfxx-riscv.c:1523
 #, c-format
-msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgid "-march=%s: ISA string must begin with rv32 or rv64"
 msgstr ""
 
-#: elfxx-x86.c:1027
-msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
+#: elfxx-riscv.c:1544
+#, c-format
+msgid "-march=%s: unexpected ISA string at end: %s"
+msgstr ""
+
+#: elfxx-riscv.c:1553
+#, c-format
+msgid "-march=%s: rv32e does not support the `f' extension"
 msgstr ""
 
-#: elfxx-x86.c:1383
+#: elfxx-riscv.c:1562
+#, c-format
+msgid "-march=%s: `d' extension requires `f' extension"
+msgstr ""
+
+#: elfxx-riscv.c:1571
+#, c-format
+msgid "-march=%s: `q' extension requires `d' extension"
+msgstr ""
+
+#: elfxx-riscv.c:1579
+#, c-format
+msgid "-march=%s: rv32 does not support the `q' extension"
+msgstr ""
+
+#: elfxx-sparc.c:3002 elfnn-aarch64.c:5530
+#, c-format
 msgid ""
-"%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC\n"
+"%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
 msgstr ""
 
-#: elfxx-x86.c:2384
+#: elfxx-tilegx.c:4128
 #, c-format
-msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
+msgid "%pB: cannot link together %s and %s objects"
 msgstr ""
 
-#: elfxx-x86.c:2609
-msgid "%F%P: failed to create GNU property section\n"
+#: elfxx-x86.c:976
+#, c-format
+msgid ""
+"%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is "
+"disallowed\n"
 msgstr ""
 
-#: elfxx-x86.c:2614
+#: elfxx-x86.c:1058
+msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
+msgstr ""
+
+#: elfxx-x86.c:2314
 #, c-format
-msgid "%F%pA: failed to align section\n"
+msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
+msgstr ""
+
+#: elfxx-x86.c:2580
+msgid "%P: %pB: warning: missing %s\n"
+msgstr ""
+
+#: elfxx-x86.c:2582
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr ""
+
+#: elfxx-x86.c:2605
+msgid "IBT and SHSTK properties"
+msgstr ""
+
+#: elfxx-x86.c:2607
+msgid "IBT property"
 msgstr ""
 
-#: elfxx-x86.c:2760
+#: elfxx-x86.c:2609
+msgid "SHSTK property"
+msgstr ""
+
+#: elfxx-x86.c:2753
 msgid "%F%P: failed to create VxWorks dynamic sections\n"
 msgstr ""
 
-#: elfxx-x86.c:2769
+#: elfxx-x86.c:2762
 msgid "%F%P: failed to create GOT sections\n"
 msgstr ""
 
-#: elfxx-x86.c:2787
+#: elfxx-x86.c:2780
 msgid "%F%P: failed to create ifunc sections\n"
 msgstr ""
 
-#: elfxx-x86.c:2828
+#: elfxx-x86.c:2817
 msgid "%F%P: failed to create GOT PLT section\n"
 msgstr ""
 
-#: elfxx-x86.c:2849
+#: elfxx-x86.c:2836
 msgid "%F%P: failed to create IBT-enabled PLT section\n"
 msgstr ""
 
-#: elfxx-x86.c:2864
+#: elfxx-x86.c:2850
 msgid "%F%P: failed to create BND PLT section\n"
 msgstr ""
 
-#: elfxx-x86.c:2885
+#: elfxx-x86.c:2870
 msgid "%F%P: failed to create PLT .eh_frame section\n"
 msgstr ""
 
-#: elfxx-x86.c:2898
+#: elfxx-x86.c:2883
 msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
 msgstr ""
 
-#: elfxx-x86.c:2912
+#: elfxx-x86.c:2897
 msgid "%F%P: failed to create the second PLT .eh_frame section\n"
 msgstr ""
 
+#: elfxx-x86.c:2939
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr ""
+
 #: ihex.c:230
 #, c-format
 msgid "%pB:%d: unexpected character `%s' in Intel Hex file"
@@ -5321,67 +5644,67 @@ msgstr ""
 msgid "%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"
 msgstr ""
 
-#: ihex.c:394
+#: ihex.c:393
 #, c-format
 msgid "%pB:%u: bad extended address record length in Intel Hex file"
 msgstr ""
 
-#: ihex.c:412
+#: ihex.c:411
 #, c-format
 msgid "%pB:%u: bad extended start address length in Intel Hex file"
 msgstr ""
 
-#: ihex.c:430
+#: ihex.c:429
 #, c-format
 msgid "%pB:%u: bad extended linear address record length in Intel Hex file"
 msgstr ""
 
-#: ihex.c:448
+#: ihex.c:447
 #, c-format
 msgid "%pB:%u: bad extended linear start address length in Intel Hex file"
 msgstr ""
 
-#: ihex.c:466
+#: ihex.c:465
 #, c-format
 msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
 msgstr ""
 
-#: ihex.c:585
+#: ihex.c:581
 #, c-format
 msgid "%pB: internal error in ihex_read_section"
 msgstr ""
 
-#: ihex.c:619
+#: ihex.c:614
 #, c-format
 msgid "%pB: bad section length in ihex_read_section"
 msgstr ""
 
-#: ihex.c:793
+#: ihex.c:785
 #, c-format
 msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
 msgstr ""
 
-#: ihex.c:852
+#: ihex.c:843
 #, c-format
 msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
 msgstr ""
 
-#: libbfd.c:937
+#: libbfd.c:884
 #, c-format
 msgid "%pB: unable to get decompressed section %pA"
 msgstr ""
 
-#: libbfd.c:1101
+#: libbfd.c:1048
 #, c-format
 msgid "Deprecated %s called at %s line %d in %s\n"
 msgstr ""
 
-#: libbfd.c:1104
+#: libbfd.c:1051
 #, c-format
 msgid "Deprecated %s called\n"
 msgstr ""
 
-#: linker.c:1697
+#: linker.c:1696
 #, c-format
 msgid "%pB: indirect symbol `%s' to `%s' is a loop"
 msgstr ""
@@ -5391,187 +5714,222 @@ msgstr ""
 msgid "attempt to do relocatable link with %s input and %s output"
 msgstr ""
 
-#: linker.c:2853
+#: linker.c:2852
 #, c-format
 msgid "%pB: ignoring duplicate section `%pA'\n"
 msgstr ""
 
-#: linker.c:2863 linker.c:2873
+#: linker.c:2862 linker.c:2872
 #, c-format
 msgid "%pB: duplicate section `%pA' has different size\n"
 msgstr ""
 
-#: linker.c:2882 linker.c:2888
+#: linker.c:2881 linker.c:2887
 #, c-format
 msgid "%pB: could not read contents of section `%pA'\n"
 msgstr ""
 
-#: linker.c:2893
+#: linker.c:2892
 #, c-format
 msgid "%pB: duplicate section `%pA' has different contents\n"
 msgstr ""
 
-#: linker.c:3407
+#: linker.c:3404
 #, c-format
 msgid "%pB: compiled for a big endian system and target is little endian"
 msgstr ""
 
-#: linker.c:3410
+#: linker.c:3407
 #, c-format
 msgid "%pB: compiled for a little endian system and target is big endian"
 msgstr ""
 
-#: mach-o.c:632
+#: mach-o-arm.c:172
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr ""
+
+#: mach-o-arm.c:188
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:203
+#, c-format
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:218
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:233
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:265
+#, c-format
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr ""
+
+#: mach-o-arm.c:329
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr ""
+
+#: mach-o.c:633
 #, c-format
 msgid "<unknown mask flags>"
 msgstr ""
 
-#: mach-o.c:687
+#: mach-o.c:688
 msgid " (<unknown>)"
 msgstr ""
 
-#: mach-o.c:698
+#: mach-o.c:699
 #, c-format
 msgid " MACH-O header:\n"
 msgstr ""
 
-#: mach-o.c:699
+#: mach-o.c:700
 #, c-format
 msgid "   magic:      %#lx\n"
 msgstr ""
 
-#: mach-o.c:700
+#: mach-o.c:701
 #, c-format
 msgid "   cputype:    %#lx (%s)\n"
 msgstr ""
 
-#: mach-o.c:702
+#: mach-o.c:703
 #, c-format
 msgid "   cpusubtype: %#lx%s\n"
 msgstr ""
 
-#: mach-o.c:704
+#: mach-o.c:705
 #, c-format
 msgid "   filetype:   %#lx\n"
 msgstr ""
 
-#: mach-o.c:705
+#: mach-o.c:706
 #, c-format
 msgid "   ncmds:      %#lx\n"
 msgstr ""
 
-#: mach-o.c:706
+#: mach-o.c:707
 #, c-format
 msgid "   sizeocmds:  %#lx\n"
 msgstr ""
 
-#: mach-o.c:707
+#: mach-o.c:708
 #, c-format
 msgid "   flags:      %#lx\n"
 msgstr ""
 
-#: mach-o.c:708
+#: mach-o.c:709
 #, c-format
 msgid "   version:    %x\n"
 msgstr ""
 
 #. Urg - what has happened ?
-#: mach-o.c:743
+#: mach-o.c:744
 #, c-format
 msgid "incompatible cputypes in mach-o files: %ld vs %ld"
 msgstr ""
 
-#: mach-o.c:912
+#: mach-o.c:913
 msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
 msgstr ""
 
-#: mach-o.c:2108
+#: mach-o.c:1505
+msgid ""
+"malformed mach-o reloc: section index is greater than the number of sections"
+msgstr ""
+
+#: mach-o.c:2139
 msgid ""
 "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab "
 "commands."
 msgstr ""
 
-#: mach-o.c:2554
+#: mach-o.c:2587
 #, c-format
 msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
 msgstr ""
 
-#: mach-o.c:2661
+#: mach-o.c:2694
 #, c-format
 msgid "unable to allocate data for load command %#x"
 msgstr ""
 
-#: mach-o.c:2766
+#: mach-o.c:2799
 #, c-format
 msgid "unable to write unknown load command %#x"
 msgstr ""
 
-#: mach-o.c:2950
+#: mach-o.c:2983
 #, c-format
 msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
 msgstr ""
 
-#: mach-o.c:3092
+#: mach-o.c:3125
 #, c-format
 msgid "unable to layout unknown load command %#x"
 msgstr ""
 
-#: mach-o.c:3628
+#: mach-o.c:3660
 #, c-format
 msgid ""
 "bfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 instead"
 msgstr ""
 
-#: mach-o.c:3671
+#: mach-o.c:3703
 #, c-format
 msgid ""
 "bfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 instead"
 msgstr ""
 
-#: mach-o.c:3722
+#: mach-o.c:3754
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
 msgstr ""
 
-#: mach-o.c:3741
+#: mach-o.c:3773
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
 msgstr ""
 
-#: mach-o.c:3824
+#: mach-o.c:3856
 #, c-format
 msgid ""
 "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d "
 "(max %lu): setting to undefined"
 msgstr ""
 
-#: mach-o.c:3843
+#: mach-o.c:3875
 #, c-format
 msgid ""
 "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x"
 "%x: setting to undefined"
 msgstr ""
 
-#: mach-o.c:3920
-msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
-msgstr ""
-
-#: mach-o.c:4931
+#: mach-o.c:5064
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr ""
 
-#: mach-o.c:5122
+#: mach-o.c:5263
 #, c-format
 msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
 msgstr ""
 
-#: mach-o.c:5227
+#: mach-o.c:5385
 #, c-format
 msgid "unknown header byte-order value %#x"
 msgstr ""
 
-#: merge.c:878
+#: merge.c:895
 #, c-format
 msgid "%pB: access beyond end of merged section (%<PRId64>)"
 msgstr ""
@@ -5586,138 +5944,138 @@ msgstr ""
 msgid "%pB: no core to allocate a symbol %d bytes long"
 msgstr ""
 
-#: mmo.c:955
+#: mmo.c:952
 #, c-format
 msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
 msgstr ""
 
-#: mmo.c:1252
+#: mmo.c:1248
 #, c-format
 msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
 msgstr ""
 
-#: mmo.c:1399
+#: mmo.c:1395
 #, c-format
 msgid ""
 "%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name "
 "starting with `%s'\n"
 msgstr ""
 
-#: mmo.c:1633
+#: mmo.c:1628
 #, c-format
 msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
 msgstr ""
 
-#: mmo.c:1644
+#: mmo.c:1639
 #, c-format
 msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
 msgstr ""
 
-#: mmo.c:1682
+#: mmo.c:1679
 #, c-format
 msgid ""
 "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
 msgstr ""
 
-#: mmo.c:1733
+#: mmo.c:1730
 #, c-format
 msgid ""
 "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
 msgstr ""
 
-#: mmo.c:1774
+#: mmo.c:1771
 #, c-format
 msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
 msgstr ""
 
-#: mmo.c:1785
+#: mmo.c:1782
 #, c-format
 msgid ""
 "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
 msgstr ""
 
-#: mmo.c:1810
+#: mmo.c:1807
 #, c-format
 msgid ""
 "%pB: invalid mmo file: leading byte of operand word must be 0 or 1, got %d "
 "for lop_fixrx\n"
 msgstr ""
 
-#: mmo.c:1835
+#: mmo.c:1832
 #, c-format
 msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
 msgstr ""
 
-#: mmo.c:1857
+#: mmo.c:1854
 #, c-format
 msgid ""
 "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
 msgstr ""
 
-#: mmo.c:1871
+#: mmo.c:1868
 #, c-format
 msgid ""
 "%pB: invalid mmo file: file name for number %d was not specified before use\n"
 msgstr ""
 
-#: mmo.c:1978
+#: mmo.c:1975
 #, c-format
 msgid ""
 "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
 msgstr ""
 
-#: mmo.c:2015
+#: mmo.c:2012
 #, c-format
 msgid "%pB: invalid mmo file: lop_end not last item in file\n"
 msgstr ""
 
-#: mmo.c:2029
+#: mmo.c:2026
 #, c-format
 msgid ""
 "%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras "
 "to the preceding lop_stab (%ld)\n"
 msgstr ""
 
-#: mmo.c:2740
+#: mmo.c:2735
 #, c-format
 msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
 msgstr ""
 
-#: mmo.c:2983
+#: mmo.c:2978
 #, c-format
 msgid ""
 "%pB: bad symbol definition: `Main' set to %s rather than the start address "
 "%s\n"
 msgstr ""
 
-#: mmo.c:3082
+#: mmo.c:3077
 #, c-format
 msgid ""
 "%pB: warning: symbol table too large for mmo, larger than 65535 32-bit "
 "words: %d.  Only `Main' will be emitted.\n"
 msgstr ""
 
-#: mmo.c:3128
+#: mmo.c:3123
 #, c-format
 msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
 msgstr ""
 
-#: mmo.c:3181
+#: mmo.c:3176
 #, c-format
 msgid "%pB: internal error, internal register section %pA had contents\n"
 msgstr ""
 
-#: mmo.c:3232
+#: mmo.c:3227
 #, c-format
 msgid "%pB: no initialized registers; section length 0\n"
 msgstr ""
 
-#: mmo.c:3239
+#: mmo.c:3234
 #, c-format
 msgid "%pB: too many initialized registers; section length %<PRId64>"
 msgstr ""
 
-#: mmo.c:3244
+#: mmo.c:3239
 #, c-format
 msgid ""
 "%pB: invalid start address for initialized registers of length %<PRId64>: "
@@ -5729,60 +6087,67 @@ msgstr ""
 msgid "unhandled OSF/1 core file section type %d"
 msgstr ""
 
-#: pef.c:527
+#: pdp11.c:1588
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr ""
+
+#: pef.c:530
 #, c-format
 msgid "bfd_pef_scan: unknown architecture 0x%lx"
 msgstr ""
 
-#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220
+#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220 pei-x86_64.c:243
+#: pei-x86_64.c:253 pei-x86_64.c:278 pei-x86_64.c:290 pei-x86_64.c:304
+#: pei-x86_64.c:322 pei-x86_64.c:334 pei-x86_64.c:346
 #, c-format
 msgid "warning: corrupt unwind data\n"
 msgstr ""
 
 #. PR 17512: file: 2245-7442-0.004.
-#: pei-x86_64.c:315
+#: pei-x86_64.c:367
 #, c-format
 msgid "Unknown: %x"
 msgstr ""
 
-#: pei-x86_64.c:365 pei-x86_64.c:375 pei-x86_64.c:384
+#: pei-x86_64.c:418 pei-x86_64.c:428 pei-x86_64.c:437
 #, c-format
 msgid "warning: xdata section corrupt\n"
 msgstr ""
 
-#: pei-x86_64.c:439
+#: pei-x86_64.c:492
 #, c-format
 msgid "Too many unwind codes (%ld)\n"
 msgstr ""
 
-#: pei-x86_64.c:529
+#: pei-x86_64.c:582
 #, c-format
 msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
 msgstr ""
 
-#: pei-x86_64.c:536
+#: pei-x86_64.c:589
 #, c-format
 msgid "Warning: %s section size is zero\n"
 msgstr ""
 
-#: pei-x86_64.c:551
+#: pei-x86_64.c:604
 #, c-format
 msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"
 msgstr ""
 
-#: pei-x86_64.c:560
+#: pei-x86_64.c:613
 #, c-format
 msgid ""
 "\n"
 "The Function Table (interpreted %s section contents)\n"
 msgstr ""
 
-#: pei-x86_64.c:563
+#: pei-x86_64.c:616
 #, c-format
 msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
 msgstr ""
 
-#: pei-x86_64.c:692
+#: pei-x86_64.c:745
 #, c-format
 msgid ""
 "\n"
@@ -5790,44 +6155,44 @@ msgid ""
 msgstr ""
 
 #. XXX code yet to be written.
-#: peicode.h:775
+#: peicode.h:796
 #, c-format
 msgid "%pB: unhandled import type; %x"
 msgstr ""
 
-#: peicode.h:781
+#: peicode.h:802
 #, c-format
 msgid "%pB: unrecognized import type; %x"
 msgstr ""
 
-#: peicode.h:796
+#: peicode.h:817
 #, c-format
 msgid "%pB: unrecognized import name type; %x"
 msgstr ""
 
-#: peicode.h:1211
+#: peicode.h:1225
 #, c-format
 msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
 msgstr ""
 
-#: peicode.h:1224
+#: peicode.h:1238
 #, c-format
 msgid ""
 "%pB: recognised but unhandled machine type (0x%x) in Import Library Format "
 "archive"
 msgstr ""
 
-#: peicode.h:1242
+#: peicode.h:1256
 #, c-format
 msgid "%pB: size field is zero in Import Library Format header"
 msgstr ""
 
-#: peicode.h:1274
+#: peicode.h:1282
 #, c-format
 msgid "%pB: string not null terminated in ILF object file"
 msgstr ""
 
-#: peicode.h:1330
+#: peicode.h:1338
 #, c-format
 msgid "%pB: error: debug data ends beyond end of debug directory"
 msgstr ""
@@ -5881,32 +6246,32 @@ msgstr ""
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr ""
 
-#: reloc.c:8232
+#: reloc.c:8291
 msgid "INPUT_SECTION_FLAGS are not supported"
 msgstr ""
 
-#: reloc.c:8333
+#: reloc.c:8392
 #, c-format
 msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
 msgstr ""
 
-#: reloc.c:8420
+#: reloc.c:8480
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
 msgstr ""
 
-#: reloc.c:8429
+#: reloc.c:8489
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
 msgstr ""
 
-#: reloc.c:8491
+#: reloc.c:8551
 #, c-format
 msgid "%pB: unrecognized relocation type %#x in section `%pA'"
 msgstr ""
 
 #. PR 21803: Suggest the most likely cause of this error.
-#: reloc.c:8495
+#: reloc.c:8555
 #, c-format
 msgid "is this version of the linker - %s - out of date ?"
 msgstr ""
@@ -5916,14 +6281,14 @@ msgstr ""
 msgid "%pB: warning core file truncated"
 msgstr ""
 
-#: som.c:5478
+#: som.c:5497
 #, c-format
 msgid ""
 "\n"
 "Exec Auxiliary Header\n"
 msgstr ""
 
-#: som.c:5787
+#: som.c:5806
 msgid "som_sizeof_headers unimplemented"
 msgstr ""
 
@@ -5937,7 +6302,7 @@ msgstr ""
 msgid "%pB:%d: byte count %d too small"
 msgstr ""
 
-#: srec.c:581 srec.c:615
+#: srec.c:580 srec.c:614
 #, c-format
 msgid "%pB:%d: bad checksum in S-record file"
 msgstr ""
@@ -5947,73 +6312,83 @@ msgstr ""
 msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
 msgstr ""
 
-#: syms.c:1091
+#: syms.c:1085
 msgid "unsupported .stab relocation"
 msgstr ""
 
-#: vms-alpha.c:479
+#: vms-alpha.c:480
 msgid "corrupt EIHD record - size is too small"
 msgstr ""
 
-#: vms-alpha.c:660
+#: vms-alpha.c:666
 #, c-format
 msgid "unable to read EIHS record at offset %#x"
 msgstr ""
 
-#: vms-alpha.c:1173
+#: vms-alpha.c:1158
+msgid "record is too small for symbol name length"
+msgstr ""
+
+#: vms-alpha.c:1191
 #, c-format
 msgid "corrupt EGSD record: its size (%#x) is too small"
 msgstr ""
 
-#: vms-alpha.c:1197
+#: vms-alpha.c:1215
 #, c-format
-msgid "corrupt EGSD record: size (%#x) is larger than remaining space (%#x)"
+msgid ""
+"corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
 msgstr ""
 
-#: vms-alpha.c:1205
+#: vms-alpha.c:1225
 #, c-format
-msgid "corrupt EGSD record: size (%#x) is too small"
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
 msgstr ""
 
-#: vms-alpha.c:1334 vms-alpha.c:1350 vms-alpha.c:1390
+#: vms-alpha.c:1367
 #, c-format
 msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
 msgstr ""
 
-#: vms-alpha.c:1419
+#: vms-alpha.c:1443
 #, c-format
 msgid "unknown EGSD subtype %d"
 msgstr ""
 
-#: vms-alpha.c:1452
+#: vms-alpha.c:1476
 #, c-format
 msgid "stack overflow (%d) in _bfd_vms_push"
 msgstr ""
 
-#: vms-alpha.c:1465
+#: vms-alpha.c:1490
 msgid "stack underflow in _bfd_vms_pop"
 msgstr ""
 
+#: vms-alpha.c:1564
+#, c-format
+msgid "dst_define_location %u too large"
+msgstr ""
+
 #. These names have not yet been added to this switch statement.
-#: vms-alpha.c:1707
+#: vms-alpha.c:1765
 #, c-format
 msgid "unknown ETIR command %d"
 msgstr ""
 
-#: vms-alpha.c:1738
+#: vms-alpha.c:1796
 msgid "corrupt vms value"
 msgstr ""
 
-#: vms-alpha.c:1866
+#: vms-alpha.c:1927
 msgid "corrupt ETIR record encountered"
 msgstr ""
 
-#: vms-alpha.c:1923
+#: vms-alpha.c:1989
 #, c-format
 msgid "bad section index in %s"
 msgstr ""
 
-#: vms-alpha.c:1936
+#: vms-alpha.c:2003
 #, c-format
 msgid "unsupported STA cmd %s"
 msgstr ""
@@ -6023,1944 +6398,1956 @@ msgstr ""
 #. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-alpha.c:2116 vms-alpha.c:2147 vms-alpha.c:2238 vms-alpha.c:2396
+#: vms-alpha.c:2211 vms-alpha.c:2242 vms-alpha.c:2337 vms-alpha.c:2557
 #, c-format
 msgid "%s: not supported"
 msgstr ""
 
-#: vms-alpha.c:2122
+#: vms-alpha.c:2217
 #, c-format
 msgid "%s: not implemented"
 msgstr ""
 
-#: vms-alpha.c:2380
+#: vms-alpha.c:2382 vms-alpha.c:2397
+#, c-format
+msgid "invalid %s"
+msgstr ""
+
+#. Divide by zero is supposed to give a result of zero,
+#. and a non-fatal warning message.
+#: vms-alpha.c:2457
+#, c-format
+msgid "%s divide by zero"
+msgstr ""
+
+#: vms-alpha.c:2523
 #, c-format
 msgid "invalid use of %s with contexts"
 msgstr ""
 
-#: vms-alpha.c:2414
+#: vms-alpha.c:2581
 #, c-format
 msgid "reserved cmd %d"
 msgstr ""
 
-#: vms-alpha.c:2498
+#: vms-alpha.c:2665
 msgid "corrupt EEOM record - size is too small"
 msgstr ""
 
-#: vms-alpha.c:2507
+#: vms-alpha.c:2674
 msgid "object module not error-free !"
 msgstr ""
 
-#: vms-alpha.c:3831
+#: vms-alpha.c:4001
 #, c-format
 msgid "SEC_RELOC with no relocs in section %pA"
 msgstr ""
 
-#: vms-alpha.c:3883 vms-alpha.c:4097
+#: vms-alpha.c:4053 vms-alpha.c:4268
 #, c-format
 msgid "size error in section %pA"
 msgstr ""
 
-#: vms-alpha.c:4043
+#: vms-alpha.c:4213
 msgid "spurious ALPHA_R_BSR reloc"
 msgstr ""
 
-#: vms-alpha.c:4084
+#: vms-alpha.c:4254
 #, c-format
 msgid "unhandled relocation %s"
 msgstr ""
 
-#: vms-alpha.c:4377
+#: vms-alpha.c:4551
 #, c-format
 msgid "unknown source command %d"
 msgstr ""
 
-#: vms-alpha.c:4438 vms-alpha.c:4444 vms-alpha.c:4450 vms-alpha.c:4456
-#: vms-alpha.c:4462 vms-alpha.c:4489 vms-alpha.c:4495 vms-alpha.c:4501
-#: vms-alpha.c:4507
+#: vms-alpha.c:4612 vms-alpha.c:4618 vms-alpha.c:4624 vms-alpha.c:4630
+#: vms-alpha.c:4636 vms-alpha.c:4663 vms-alpha.c:4669 vms-alpha.c:4675
+#: vms-alpha.c:4681
 #, c-format
 msgid "%s not implemented"
 msgstr ""
 
-#: vms-alpha.c:4550
+#: vms-alpha.c:4724
 #, c-format
 msgid "unknown line command %d"
 msgstr ""
 
-#: vms-alpha.c:5010 vms-alpha.c:5028 vms-alpha.c:5043 vms-alpha.c:5059
-#: vms-alpha.c:5072 vms-alpha.c:5084 vms-alpha.c:5097
+#: vms-alpha.c:5188 vms-alpha.c:5206 vms-alpha.c:5221 vms-alpha.c:5237
+#: vms-alpha.c:5250 vms-alpha.c:5262 vms-alpha.c:5275
 #, c-format
 msgid "unknown reloc %s + %s"
 msgstr ""
 
-#: vms-alpha.c:5152
+#: vms-alpha.c:5330
 #, c-format
 msgid "unknown reloc %s"
 msgstr ""
 
-#: vms-alpha.c:5166
+#: vms-alpha.c:5344
 msgid "invalid section index in ETIR"
 msgstr ""
 
-#: vms-alpha.c:5175
+#: vms-alpha.c:5353
 msgid "relocation for non-REL psect"
 msgstr ""
 
-#: vms-alpha.c:5222
+#: vms-alpha.c:5402
 #, c-format
 msgid "unknown symbol in command %s"
 msgstr ""
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:5816
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr ""
 
-#: vms-alpha.c:5752
+#: vms-alpha.c:5932
 #, c-format
 msgid "  EMH %u (len=%u): "
 msgstr ""
 
-#: vms-alpha.c:5757
+#: vms-alpha.c:5937
 #, c-format
 msgid "   Error: The length is less than the length of an EMH record\n"
 msgstr ""
 
-#: vms-alpha.c:5774
+#: vms-alpha.c:5954
 #, c-format
 msgid ""
 "   Error: The record length is less than the size of an EMH_MHD record\n"
 msgstr ""
 
-#: vms-alpha.c:5777
+#: vms-alpha.c:5957
 #, c-format
 msgid "Module header\n"
 msgstr ""
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:5958
 #, c-format
 msgid "   structure level: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5779
+#: vms-alpha.c:5959
 #, c-format
 msgid "   max record size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5785
+#: vms-alpha.c:5965
 #, c-format
 msgid "   Error: The module name is missing\n"
 msgstr ""
 
-#: vms-alpha.c:5791
+#: vms-alpha.c:5971
 #, c-format
 msgid "   Error: The module name is too long\n"
 msgstr ""
 
-#: vms-alpha.c:5794
+#: vms-alpha.c:5974
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5798
+#: vms-alpha.c:5978
 #, c-format
 msgid "   Error: The module version is missing\n"
 msgstr ""
 
-#: vms-alpha.c:5804
+#: vms-alpha.c:5984
 #, c-format
 msgid "   Error: The module version is too long\n"
 msgstr ""
 
-#: vms-alpha.c:5807
+#: vms-alpha.c:5987
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:5990
 #, c-format
 msgid "   Error: The compile date is truncated\n"
 msgstr ""
 
-#: vms-alpha.c:5812
+#: vms-alpha.c:5992
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr ""
 
-#: vms-alpha.c:5817
+#: vms-alpha.c:5997
 #, c-format
 msgid "Language Processor Name\n"
 msgstr ""
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:5998
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5822
+#: vms-alpha.c:6002
 #, c-format
 msgid "Source Files Header\n"
 msgstr ""
 
-#: vms-alpha.c:5823
+#: vms-alpha.c:6003
 #, c-format
 msgid "   file: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5827
+#: vms-alpha.c:6007
 #, c-format
 msgid "Title Text Header\n"
 msgstr ""
 
-#: vms-alpha.c:5828
+#: vms-alpha.c:6008
 #, c-format
 msgid "   title: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6012
 #, c-format
 msgid "Copyright Header\n"
 msgstr ""
 
-#: vms-alpha.c:5833
+#: vms-alpha.c:6013
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5837
+#: vms-alpha.c:6017
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr ""
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6027
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr ""
 
-#: vms-alpha.c:5852
+#: vms-alpha.c:6032
 #, c-format
 msgid "   Error: The length is less than the length of an EEOM record\n"
 msgstr ""
 
-#: vms-alpha.c:5856
+#: vms-alpha.c:6036
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5858
+#: vms-alpha.c:6038
 #, c-format
 msgid "   completion code: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5862
+#: vms-alpha.c:6042
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr ""
 
-#: vms-alpha.c:5863
+#: vms-alpha.c:6043
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5865
+#: vms-alpha.c:6045
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:6054
 msgid " WEAK"
 msgstr ""
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:6056
 msgid " DEF"
 msgstr ""
 
-#: vms-alpha.c:5878
+#: vms-alpha.c:6058
 msgid " UNI"
 msgstr ""
 
-#: vms-alpha.c:5880 vms-alpha.c:5901
+#: vms-alpha.c:6060 vms-alpha.c:6081
 msgid " REL"
 msgstr ""
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:6062
 msgid " COMM"
 msgstr ""
 
-#: vms-alpha.c:5884
+#: vms-alpha.c:6064
 msgid " VECEP"
 msgstr ""
 
-#: vms-alpha.c:5886
+#: vms-alpha.c:6066
 msgid " NORM"
 msgstr ""
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6068
 msgid " QVAL"
 msgstr ""
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:6075
 msgid " PIC"
 msgstr ""
 
-#: vms-alpha.c:5897
+#: vms-alpha.c:6077
 msgid " LIB"
 msgstr ""
 
-#: vms-alpha.c:5899
+#: vms-alpha.c:6079
 msgid " OVR"
 msgstr ""
 
-#: vms-alpha.c:5903
+#: vms-alpha.c:6083
 msgid " GBL"
 msgstr ""
 
-#: vms-alpha.c:5905
+#: vms-alpha.c:6085
 msgid " SHR"
 msgstr ""
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:6087
 msgid " EXE"
 msgstr ""
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:6089
 msgid " RD"
 msgstr ""
 
-#: vms-alpha.c:5911
+#: vms-alpha.c:6091
 msgid " WRT"
 msgstr ""
 
-#: vms-alpha.c:5913
+#: vms-alpha.c:6093
 msgid " VEC"
 msgstr ""
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6095
 msgid " NOMOD"
 msgstr ""
 
-#: vms-alpha.c:5917
+#: vms-alpha.c:6097
 msgid " COM"
 msgstr ""
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:6099
 msgid " 64B"
 msgstr ""
 
-#: vms-alpha.c:5928
+#: vms-alpha.c:6108
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr ""
 
-#: vms-alpha.c:5941
+#: vms-alpha.c:6121
 #, c-format
 msgid "  EGSD entry %2u (type: %u, len: %u): "
 msgstr ""
 
-#: vms-alpha.c:5947 vms-alpha.c:6198
+#: vms-alpha.c:6127 vms-alpha.c:6378
 #, c-format
 msgid "   Error: length larger than remaining space in record\n"
 msgstr ""
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6139
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr ""
 
-#: vms-alpha.c:5960 vms-alpha.c:5977
+#: vms-alpha.c:6140 vms-alpha.c:6157
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr ""
 
-#: vms-alpha.c:5961 vms-alpha.c:5978
+#: vms-alpha.c:6141 vms-alpha.c:6158
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6145
 #, c-format
 msgid "   alloc (len): %u (0x%08x)\n"
 msgstr ""
 
-#: vms-alpha.c:5966 vms-alpha.c:6023 vms-alpha.c:6072
+#: vms-alpha.c:6146 vms-alpha.c:6203 vms-alpha.c:6252
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6156
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr ""
 
-#: vms-alpha.c:5982
+#: vms-alpha.c:6162
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr ""
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6163
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6165
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6167
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6180
 #, c-format
 msgid "SYM - Global symbol definition\n"
 msgstr ""
 
-#: vms-alpha.c:6001 vms-alpha.c:6061 vms-alpha.c:6082 vms-alpha.c:6101
+#: vms-alpha.c:6181 vms-alpha.c:6241 vms-alpha.c:6262 vms-alpha.c:6281
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6184
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6188
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6190
 #, c-format
 msgid "   psect index for entry point : %u\n"
 msgstr ""
 
-#: vms-alpha.c:6013 vms-alpha.c:6089 vms-alpha.c:6108
+#: vms-alpha.c:6193 vms-alpha.c:6269 vms-alpha.c:6288
 #, c-format
 msgid "   psect index : %u\n"
 msgstr ""
 
-#: vms-alpha.c:6015 vms-alpha.c:6091 vms-alpha.c:6110
+#: vms-alpha.c:6195 vms-alpha.c:6271 vms-alpha.c:6290
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6022
+#: vms-alpha.c:6202
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr ""
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6214
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr ""
 
-#: vms-alpha.c:6035
+#: vms-alpha.c:6215
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr ""
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6219
 #, c-format
 msgid "   id match      : %x\n"
 msgstr ""
 
-#: vms-alpha.c:6041
+#: vms-alpha.c:6221
 #, c-format
 msgid "   error severity: %x\n"
 msgstr ""
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6224
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6046
+#: vms-alpha.c:6226
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6049
+#: vms-alpha.c:6229
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6052
+#: vms-alpha.c:6232
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6240
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr ""
 
-#: vms-alpha.c:6064
+#: vms-alpha.c:6244
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6246
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6068
+#: vms-alpha.c:6248
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6070
+#: vms-alpha.c:6250
 #, c-format
 msgid "   psect index: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6261
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr ""
 
-#: vms-alpha.c:6085
+#: vms-alpha.c:6265
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6087 vms-alpha.c:6106
+#: vms-alpha.c:6267 vms-alpha.c:6286
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6100
+#: vms-alpha.c:6280
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr ""
 
-#: vms-alpha.c:6104
+#: vms-alpha.c:6284
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6115
+#: vms-alpha.c:6295
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr ""
 
-#: vms-alpha.c:6150
+#: vms-alpha.c:6330
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6154
+#: vms-alpha.c:6334
 #, c-format
 msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6159
+#: vms-alpha.c:6339
 #, c-format
 msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6165
+#: vms-alpha.c:6345
 #, c-format
 msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6170
+#: vms-alpha.c:6350
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6181
+#: vms-alpha.c:6361
 #, c-format
 msgid "  %s (len=%u+%u):\n"
 msgstr ""
 
-#: vms-alpha.c:6203
+#: vms-alpha.c:6383
 #, c-format
 msgid "   (type: %3u, size: 4+%3u): "
 msgstr ""
 
-#: vms-alpha.c:6207
+#: vms-alpha.c:6387
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6211
+#: vms-alpha.c:6391
 #, c-format
 msgid "STA_LW (stack longword) 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6395
 #, c-format
 msgid "STA_QW (stack quadword) 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6220
+#: vms-alpha.c:6400
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6222
+#: vms-alpha.c:6402
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6228
+#: vms-alpha.c:6408
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr ""
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6411
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr ""
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6414
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr ""
 
-#: vms-alpha.c:6238
+#: vms-alpha.c:6418
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr ""
 
-#: vms-alpha.c:6241
+#: vms-alpha.c:6421
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr ""
 
-#: vms-alpha.c:6244
+#: vms-alpha.c:6424
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr ""
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6427
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr ""
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6433
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr ""
 
-#: vms-alpha.c:6260
+#: vms-alpha.c:6440
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6444
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6268
+#: vms-alpha.c:6448
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr ""
 
-#: vms-alpha.c:6271
+#: vms-alpha.c:6451
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr ""
 
-#: vms-alpha.c:6274
+#: vms-alpha.c:6454
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr ""
 
-#: vms-alpha.c:6280
+#: vms-alpha.c:6460
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr ""
 
-#: vms-alpha.c:6287
+#: vms-alpha.c:6467
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6291
+#: vms-alpha.c:6471
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr ""
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6474
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr ""
 
-#: vms-alpha.c:6297
+#: vms-alpha.c:6477
 #, c-format
 msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
 msgstr ""
 
-#: vms-alpha.c:6301
+#: vms-alpha.c:6481
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr ""
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6484
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr ""
 
-#: vms-alpha.c:6307
+#: vms-alpha.c:6487
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr ""
 
-#: vms-alpha.c:6310
+#: vms-alpha.c:6490
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr ""
 
-#: vms-alpha.c:6313
+#: vms-alpha.c:6493
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr ""
 
-#: vms-alpha.c:6316
+#: vms-alpha.c:6496
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr ""
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6499
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr ""
 
-#: vms-alpha.c:6322
+#: vms-alpha.c:6502
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr ""
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6505
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr ""
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6508
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr ""
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6511
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr ""
 
-#: vms-alpha.c:6334
+#: vms-alpha.c:6514
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr ""
 
-#: vms-alpha.c:6337
+#: vms-alpha.c:6517
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr ""
 
-#: vms-alpha.c:6340
+#: vms-alpha.c:6520
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr ""
 
-#: vms-alpha.c:6343
+#: vms-alpha.c:6523
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr ""
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6526
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr ""
 
-#: vms-alpha.c:6349
+#: vms-alpha.c:6529
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr ""
 
-#: vms-alpha.c:6353
+#: vms-alpha.c:6533
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr ""
 
-#: vms-alpha.c:6357
+#: vms-alpha.c:6537
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr ""
 
-#: vms-alpha.c:6359
+#: vms-alpha.c:6539
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6362
+#: vms-alpha.c:6542
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6545
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr ""
 
-#: vms-alpha.c:6367
+#: vms-alpha.c:6547
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6371
+#: vms-alpha.c:6551
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr ""
 
-#: vms-alpha.c:6373
+#: vms-alpha.c:6553
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6377
+#: vms-alpha.c:6557
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6380
+#: vms-alpha.c:6560
 #, c-format
 msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6387
+#: vms-alpha.c:6567
 #, c-format
 msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6391
+#: vms-alpha.c:6571
 #, c-format
 msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6395
+#: vms-alpha.c:6575
 #, c-format
 msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6399
+#: vms-alpha.c:6579
 #, c-format
 msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6403
+#: vms-alpha.c:6583
 #, c-format
 msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6407
+#: vms-alpha.c:6587
 #, c-format
 msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6411
+#: vms-alpha.c:6591
 #, c-format
 msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6415
+#: vms-alpha.c:6595
 #, c-format
 msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6420
+#: vms-alpha.c:6600
 #, c-format
 msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6424
+#: vms-alpha.c:6604
 #, c-format
 msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6428
+#: vms-alpha.c:6608
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr ""
 
-#: vms-alpha.c:6434
+#: vms-alpha.c:6614
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr ""
 
-#: vms-alpha.c:6438
+#: vms-alpha.c:6618
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr ""
 
-#: vms-alpha.c:6441
+#: vms-alpha.c:6621
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr ""
 
-#: vms-alpha.c:6444
+#: vms-alpha.c:6624
 #, c-format
 msgid "CTL_STKDL (stack defined location)\n"
 msgstr ""
 
-#: vms-alpha.c:6447 vms-alpha.c:6871 vms-alpha.c:6997
+#: vms-alpha.c:6627 vms-alpha.c:7051 vms-alpha.c:7177
 #, c-format
 msgid "*unhandled*\n"
 msgstr ""
 
-#: vms-alpha.c:6477 vms-alpha.c:6516
+#: vms-alpha.c:6657 vms-alpha.c:6696
 #, c-format
 msgid "cannot read GST record length\n"
 msgstr ""
 
 #. Ill-formed.
-#: vms-alpha.c:6498
+#: vms-alpha.c:6678
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr ""
 
-#: vms-alpha.c:6524
+#: vms-alpha.c:6704
 #, c-format
 msgid "cannot read GST record header\n"
 msgstr ""
 
-#: vms-alpha.c:6537
+#: vms-alpha.c:6717
 #, c-format
 msgid " corrupted GST\n"
 msgstr ""
 
-#: vms-alpha.c:6545
+#: vms-alpha.c:6725
 #, c-format
 msgid "cannot read GST record\n"
 msgstr ""
 
-#: vms-alpha.c:6574
+#: vms-alpha.c:6754
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr ""
 
-#: vms-alpha.c:6598
+#: vms-alpha.c:6778
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6612
+#: vms-alpha.c:6792
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr ""
 
-#: vms-alpha.c:6619
+#: vms-alpha.c:6799
 #, c-format
 msgid " %08x"
 msgstr ""
 
-#: vms-alpha.c:6645
+#: vms-alpha.c:6825
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr ""
 
-#: vms-alpha.c:6651
+#: vms-alpha.c:6831
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6673
+#: vms-alpha.c:6853
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr ""
 
-#: vms-alpha.c:6680
+#: vms-alpha.c:6860
 #, c-format
 msgid " 0x%08x"
 msgstr ""
 
 #. 64 bits.
-#: vms-alpha.c:6802
+#: vms-alpha.c:6982
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr ""
 
-#: vms-alpha.c:6807
+#: vms-alpha.c:6987
 #, c-format
 msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6818
+#: vms-alpha.c:6998
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr ""
 
-#: vms-alpha.c:6823
+#: vms-alpha.c:7003
 #, c-format
 msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6828
+#: vms-alpha.c:7008
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6832
+#: vms-alpha.c:7012
 #, c-format
 msgid "Strides:\n"
 msgstr ""
 
-#: vms-alpha.c:6842
+#: vms-alpha.c:7022
 #, c-format
 msgid "Bounds:\n"
 msgstr ""
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7028
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6860
+#: vms-alpha.c:7040
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr ""
 
-#: vms-alpha.c:6865
+#: vms-alpha.c:7045
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6886
+#: vms-alpha.c:7066
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr ""
 
-#: vms-alpha.c:6892
+#: vms-alpha.c:7072
 #, c-format
 msgid "(no value)\n"
 msgstr ""
 
-#: vms-alpha.c:6895
+#: vms-alpha.c:7075
 #, c-format
 msgid "(not active)\n"
 msgstr ""
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7078
 #, c-format
 msgid "(not allocated)\n"
 msgstr ""
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7081
 #, c-format
 msgid "(descriptor)\n"
 msgstr ""
 
-#: vms-alpha.c:6905
+#: vms-alpha.c:7085
 #, c-format
 msgid "(trailing value)\n"
 msgstr ""
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7088
 #, c-format
 msgid "(value spec follows)\n"
 msgstr ""
 
-#: vms-alpha.c:6911
+#: vms-alpha.c:7091
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr ""
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7095
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr ""
 
-#: vms-alpha.c:6922
+#: vms-alpha.c:7102
 msgid "literal"
 msgstr ""
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7105
 msgid "address"
 msgstr ""
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7108
 msgid "desc"
 msgstr ""
 
-#: vms-alpha.c:6931
+#: vms-alpha.c:7111
 msgid "reg"
 msgstr ""
 
-#: vms-alpha.c:6948
+#: vms-alpha.c:7128
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr ""
 
-#: vms-alpha.c:6954
+#: vms-alpha.c:7134
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr ""
 
-#: vms-alpha.c:6958
+#: vms-alpha.c:7138
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7142
 #, c-format
 msgid "typed pointer\n"
 msgstr ""
 
-#: vms-alpha.c:6966
+#: vms-alpha.c:7146
 #, c-format
 msgid "pointer\n"
 msgstr ""
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7154
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr ""
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7161
 #, c-format
 msgid "array descriptor:\n"
 msgstr ""
 
-#: vms-alpha.c:6988
+#: vms-alpha.c:7168
 #, c-format
 msgid "type spec for element:\n"
 msgstr ""
 
-#: vms-alpha.c:6990
+#: vms-alpha.c:7170
 #, c-format
 msgid "type spec for subscript %u:\n"
 msgstr ""
 
-#: vms-alpha.c:7008
+#: vms-alpha.c:7188
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr ""
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7199
 #, c-format
 msgid "cannot read DST header\n"
 msgstr ""
 
-#: vms-alpha.c:7025
+#: vms-alpha.c:7205
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr ""
 
-#: vms-alpha.c:7039
+#: vms-alpha.c:7219
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr ""
 
-#: vms-alpha.c:7082
+#: vms-alpha.c:7262
 #, c-format
 msgid "standard data: %s\n"
 msgstr ""
 
-#: vms-alpha.c:7085 vms-alpha.c:7173
+#: vms-alpha.c:7265 vms-alpha.c:7353
 #, c-format
 msgid "    name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7092
+#: vms-alpha.c:7272
 #, c-format
 msgid "modbeg\n"
 msgstr ""
 
-#: vms-alpha.c:7094
+#: vms-alpha.c:7274
 #, c-format
 msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7100 vms-alpha.c:7374
+#: vms-alpha.c:7280 vms-alpha.c:7554
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7103
+#: vms-alpha.c:7283
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7288
 #, c-format
 msgid "modend\n"
 msgstr ""
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7295
 msgid "rtnbeg\n"
 msgstr ""
 
-#: vms-alpha.c:7117
+#: vms-alpha.c:7297
 #, c-format
 msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7122
+#: vms-alpha.c:7302
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7130
+#: vms-alpha.c:7310
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7138
+#: vms-alpha.c:7318
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7147
+#: vms-alpha.c:7327
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7157
+#: vms-alpha.c:7337
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7166
+#: vms-alpha.c:7346
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7352
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7359
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7368
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7370
 #, c-format
 msgid "    len: %u bits\n"
 msgstr ""
 
-#: vms-alpha.c:7195
+#: vms-alpha.c:7375
 #, c-format
 msgid "recend\n"
 msgstr ""
 
-#: vms-alpha.c:7199
+#: vms-alpha.c:7379
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7203
+#: vms-alpha.c:7383
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7387
 #, c-format
 msgid "enumend\n"
 msgstr ""
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7392
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7394
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7224
+#: vms-alpha.c:7404
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7407
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7417
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7434
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr ""
 
-#: vms-alpha.c:7261
+#: vms-alpha.c:7441
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr ""
 
-#: vms-alpha.c:7267
+#: vms-alpha.c:7447
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr ""
 
-#: vms-alpha.c:7273
+#: vms-alpha.c:7453
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr ""
 
-#: vms-alpha.c:7279
+#: vms-alpha.c:7459
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr ""
 
-#: vms-alpha.c:7284
+#: vms-alpha.c:7464
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr ""
 
-#: vms-alpha.c:7289
+#: vms-alpha.c:7469
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr ""
 
-#: vms-alpha.c:7294
+#: vms-alpha.c:7474
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7478
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7483
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr ""
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7485
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7310
+#: vms-alpha.c:7490
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:7312
+#: vms-alpha.c:7492
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7318
+#: vms-alpha.c:7498
 #, c-format
 msgid "delta pc +%-4d"
 msgstr ""
 
-#: vms-alpha.c:7322
+#: vms-alpha.c:7502
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7507
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr ""
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7522
 #, c-format
 msgid "source (len: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7537
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7362
+#: vms-alpha.c:7542
 #, c-format
 msgid "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7371
+#: vms-alpha.c:7551
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7380
+#: vms-alpha.c:7560
 #, c-format
 msgid "   setfile %u\n"
 msgstr ""
 
-#: vms-alpha.c:7385 vms-alpha.c:7390
+#: vms-alpha.c:7565 vms-alpha.c:7570
 #, c-format
 msgid "   setrec %u\n"
 msgstr ""
 
-#: vms-alpha.c:7395 vms-alpha.c:7400
+#: vms-alpha.c:7575 vms-alpha.c:7580
 #, c-format
 msgid "   setlnum %u\n"
 msgstr ""
 
-#: vms-alpha.c:7405 vms-alpha.c:7410
+#: vms-alpha.c:7585 vms-alpha.c:7590
 #, c-format
 msgid "   deflines %u\n"
 msgstr ""
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:7594
 #, c-format
 msgid "   formfeed\n"
 msgstr ""
 
-#: vms-alpha.c:7418
+#: vms-alpha.c:7598
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr ""
 
-#: vms-alpha.c:7430
+#: vms-alpha.c:7610
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr ""
 
-#: vms-alpha.c:7462
+#: vms-alpha.c:7642
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr ""
 
-#: vms-alpha.c:7466
+#: vms-alpha.c:7646
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7470
+#: vms-alpha.c:7650
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7478
+#: vms-alpha.c:7658
 msgid "executable"
 msgstr ""
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:7661
 msgid "linkable image"
 msgstr ""
 
-#: vms-alpha.c:7488
+#: vms-alpha.c:7668
 #, c-format
 msgid " image type: %u (%s)"
 msgstr ""
 
-#: vms-alpha.c:7494
+#: vms-alpha.c:7674
 msgid "native"
 msgstr ""
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:7677
 msgid "CLI"
 msgstr ""
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:7684
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ""
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:7691
 #, c-format
 msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7515
+#: vms-alpha.c:7695
 #, c-format
 msgid " fixup info rva: "
 msgstr ""
 
-#: vms-alpha.c:7517
+#: vms-alpha.c:7697
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ""
 
-#: vms-alpha.c:7520
+#: vms-alpha.c:7700
 #, c-format
 msgid ""
 "\n"
 " version array off: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7525
+#: vms-alpha.c:7705
 #, c-format
 msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7531
+#: vms-alpha.c:7711
 #, c-format
 msgid " linker flags: %08x:"
 msgstr ""
 
-#: vms-alpha.c:7562
+#: vms-alpha.c:7742
 #, c-format
 msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7568
+#: vms-alpha.c:7748
 #, c-format
 msgid " BPAGE: %u"
 msgstr ""
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:7755
 #, c-format
 msgid ", ext fixup offset: %u, no_opt psect off: %u"
 msgstr ""
 
-#: vms-alpha.c:7578
+#: vms-alpha.c:7758
 #, c-format
 msgid ", alias: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7586
+#: vms-alpha.c:7766
 #, c-format
 msgid "system version array information:\n"
 msgstr ""
 
-#: vms-alpha.c:7590
+#: vms-alpha.c:7770
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr ""
 
-#: vms-alpha.c:7600
+#: vms-alpha.c:7780
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr ""
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:7783
 #, c-format
 msgid "   %02u "
 msgstr ""
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:7787
 msgid "BASE_IMAGE       "
 msgstr ""
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:7790
 msgid "MEMORY_MANAGEMENT"
 msgstr ""
 
-#: vms-alpha.c:7613
+#: vms-alpha.c:7793
 msgid "IO               "
 msgstr ""
 
-#: vms-alpha.c:7616
+#: vms-alpha.c:7796
 msgid "FILES_VOLUMES    "
 msgstr ""
 
-#: vms-alpha.c:7619
+#: vms-alpha.c:7799
 msgid "PROCESS_SCHED    "
 msgstr ""
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:7802
 msgid "SYSGEN           "
 msgstr ""
 
-#: vms-alpha.c:7625
+#: vms-alpha.c:7805
 msgid "CLUSTERS_LOCKMGR "
 msgstr ""
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:7808
 msgid "LOGICAL_NAMES    "
 msgstr ""
 
-#: vms-alpha.c:7631
+#: vms-alpha.c:7811
 msgid "SECURITY         "
 msgstr ""
 
-#: vms-alpha.c:7634
+#: vms-alpha.c:7814
 msgid "IMAGE_ACTIVATOR  "
 msgstr ""
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:7817
 msgid "NETWORKS         "
 msgstr ""
 
-#: vms-alpha.c:7640
+#: vms-alpha.c:7820
 msgid "COUNTERS         "
 msgstr ""
 
-#: vms-alpha.c:7643
+#: vms-alpha.c:7823
 msgid "STABLE           "
 msgstr ""
 
-#: vms-alpha.c:7646
+#: vms-alpha.c:7826
 msgid "MISC             "
 msgstr ""
 
-#: vms-alpha.c:7649
+#: vms-alpha.c:7829
 msgid "CPU              "
 msgstr ""
 
-#: vms-alpha.c:7652
+#: vms-alpha.c:7832
 msgid "VOLATILE         "
 msgstr ""
 
-#: vms-alpha.c:7655
+#: vms-alpha.c:7835
 msgid "SHELL            "
 msgstr ""
 
-#: vms-alpha.c:7658
+#: vms-alpha.c:7838
 msgid "POSIX            "
 msgstr ""
 
-#: vms-alpha.c:7661
+#: vms-alpha.c:7841
 msgid "MULTI_PROCESSING "
 msgstr ""
 
-#: vms-alpha.c:7664
+#: vms-alpha.c:7844
 msgid "GALAXY           "
 msgstr ""
 
-#: vms-alpha.c:7667
+#: vms-alpha.c:7847
 msgid "*unknown*        "
 msgstr ""
 
-#: vms-alpha.c:7683 vms-alpha.c:7958
+#: vms-alpha.c:7863 vms-alpha.c:8137
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr ""
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:7866
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr ""
 
-#: vms-alpha.c:7689
+#: vms-alpha.c:7869
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7693
+#: vms-alpha.c:7873
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7697
+#: vms-alpha.c:7877
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7701
+#: vms-alpha.c:7881
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7705
+#: vms-alpha.c:7885
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7716
+#: vms-alpha.c:7896
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr ""
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:7900
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7723
+#: vms-alpha.c:7903
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:7905
 #, c-format
 msgid " link time        : %s\n"
 msgstr ""
 
-#: vms-alpha.c:7727
+#: vms-alpha.c:7907
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7729
+#: vms-alpha.c:7909
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:7911
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7741
+#: vms-alpha.c:7921
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr ""
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:7925
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7751
+#: vms-alpha.c:7931
 #, c-format
 msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
 msgstr ""
 
-#: vms-alpha.c:7756
+#: vms-alpha.c:7936
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7761
+#: vms-alpha.c:7941
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7774
+#: vms-alpha.c:7954
 #, c-format
 msgid "cannot read EISD\n"
 msgstr ""
 
-#: vms-alpha.c:7785
+#: vms-alpha.c:7965
 #, c-format
 msgid ""
 "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7793
+#: vms-alpha.c:7973
 #, c-format
 msgid " section: base: 0x%08x%08x size: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7798
+#: vms-alpha.c:7978
 #, c-format
 msgid " flags: 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:7836
+#: vms-alpha.c:8016
 #, c-format
 msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 msgstr ""
 
-#: vms-alpha.c:7842
+#: vms-alpha.c:8022
 msgid "NORMAL"
 msgstr ""
 
-#: vms-alpha.c:7845
+#: vms-alpha.c:8025
 msgid "SHRFXD"
 msgstr ""
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:8028
 msgid "PRVFXD"
 msgstr ""
 
-#: vms-alpha.c:7851
+#: vms-alpha.c:8031
 msgid "SHRPIC"
 msgstr ""
 
-#: vms-alpha.c:7854
+#: vms-alpha.c:8034
 msgid "PRVPIC"
 msgstr ""
 
-#: vms-alpha.c:7857
+#: vms-alpha.c:8037
 msgid "USRSTACK"
 msgstr ""
 
-#: vms-alpha.c:7863
+#: vms-alpha.c:8043
 msgid ")\n"
 msgstr ""
 
-#: vms-alpha.c:7866
+#: vms-alpha.c:8046
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7876
+#: vms-alpha.c:8056
 #, c-format
 msgid "cannot read DMT\n"
 msgstr ""
 
-#: vms-alpha.c:7880
+#: vms-alpha.c:8060
 #, c-format
 msgid "Debug module table:\n"
 msgstr ""
 
-#: vms-alpha.c:7889
+#: vms-alpha.c:8069
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr ""
 
-#: vms-alpha.c:7895
+#: vms-alpha.c:8075
 #, c-format
 msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
 msgstr ""
 
-#: vms-alpha.c:7905
+#: vms-alpha.c:8085
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr ""
 
-#: vms-alpha.c:7909
+#: vms-alpha.c:8089
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7922
+#: vms-alpha.c:8102
 #, c-format
 msgid "cannot read DST\n"
 msgstr ""
 
-#: vms-alpha.c:7932
+#: vms-alpha.c:8112
 #, c-format
 msgid "cannot read GST\n"
 msgstr ""
 
-#: vms-alpha.c:7936
+#: vms-alpha.c:8116
 #, c-format
 msgid "Global symbol table:\n"
 msgstr ""
 
-#: vms-alpha.c:7965
+#: vms-alpha.c:8143
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7969
+#: vms-alpha.c:8147
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8151
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8154
 #, c-format
 msgid "  size : %u\n"
 msgstr ""
 
-#: vms-alpha.c:7978
+#: vms-alpha.c:8156
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7983
+#: vms-alpha.c:8161
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:7988
+#: vms-alpha.c:8166
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8171
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8174
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8000
+#: vms-alpha.c:8178
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8003
+#: vms-alpha.c:8181
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8184
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:8008
+#: vms-alpha.c:8186
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8016
+#: vms-alpha.c:8194
 #, c-format
 msgid " Shareable images:\n"
 msgstr ""
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8199
 #, c-format
 msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:8028
+#: vms-alpha.c:8206
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8211
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8038
+#: vms-alpha.c:8216
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8043
+#: vms-alpha.c:8221
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8048
+#: vms-alpha.c:8226
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8053
+#: vms-alpha.c:8231
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8062
+#: vms-alpha.c:8240
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr ""
 
-#: vms-alpha.c:8068
+#: vms-alpha.c:8246
 #, c-format
 msgid "  base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "
 msgstr ""
 
 #. FIXME: we do not yet support relocatable link.  It is not obvious
 #. how to do it for debug infos.
-#: vms-alpha.c:8908
+#: vms-alpha.c:9123
 msgid "%P: relocatable link is not supported\n"
 msgstr ""
 
-#: vms-alpha.c:8979
+#: vms-alpha.c:9194
 #, c-format
 msgid "%P: multiple entry points: in modules %pB and %pB\n"
 msgstr ""
 
-#: vms-lib.c:1445
+#: vms-lib.c:1525
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr ""
 
-#: vms-misc.c:361
+#: vms-misc.c:367
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr ""
 
-#: vms-misc.c:366
+#: vms-misc.c:372
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr ""
 
@@ -7974,412 +8361,454 @@ msgstr ""
 msgid "%pB: dynamic object with no .loader section"
 msgstr ""
 
-#: xcofflink.c:1413
+#: xcofflink.c:1417
 #, c-format
 msgid "%pB: `%s' has line numbers but no enclosing section"
 msgstr ""
 
-#: xcofflink.c:1466
+#: xcofflink.c:1470
 #, c-format
 msgid "%pB: class %d symbol `%s' has no aux entries"
 msgstr ""
 
-#: xcofflink.c:1489
+#: xcofflink.c:1493
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized csect type %d"
 msgstr ""
 
-#: xcofflink.c:1502
+#: xcofflink.c:1506
 #, c-format
 msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
 msgstr ""
 
-#: xcofflink.c:1533
+#: xcofflink.c:1537
 #, c-format
 msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
 msgstr ""
 
-#: xcofflink.c:1680
+#: xcofflink.c:1684
 #, c-format
 msgid "%pB: csect `%s' not in enclosing section"
 msgstr ""
 
-#: xcofflink.c:1788
+#: xcofflink.c:1792
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr ""
 
-#: xcofflink.c:2109
+#: xcofflink.c:2113
 #, c-format
 msgid "%pB: reloc %s:%<PRId64> not in csect"
 msgstr ""
 
-#: xcofflink.c:3196
+#: xcofflink.c:3193
 #, c-format
 msgid "%s: no such symbol"
 msgstr ""
 
-#: xcofflink.c:3301
+#: xcofflink.c:3298
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr ""
 
-#: xcofflink.c:3680
+#: xcofflink.c:3677
 msgid "error: undefined symbol __rtinit"
 msgstr ""
 
-#: xcofflink.c:4060
+#: xcofflink.c:4055
 #, c-format
 msgid "%pB: loader reloc in unrecognized section `%s'"
 msgstr ""
 
-#: xcofflink.c:4072
+#: xcofflink.c:4067
 #, c-format
 msgid "%pB: `%s' in loader reloc but not loader sym"
 msgstr ""
 
-#: xcofflink.c:4089
+#: xcofflink.c:4084
 #, c-format
 msgid "%pB: loader reloc in read-only section %pA"
 msgstr ""
 
-#: xcofflink.c:5113
+#: xcofflink.c:5112
 #, c-format
 msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5031
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2872
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr ""
+
+#: elfnn-aarch64.c:5246
 #, c-format
 msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5112
+#: elfnn-aarch64.c:5338
 #, c-format
 msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5641
+#: elfnn-aarch64.c:5351
+msgid "%pB: error: erratum 843419 immediate 0x%"
+msgstr ""
+
+#: elfnn-aarch64.c:5899
 #, c-format
 msgid ""
 "%pB: relocation %s against symbol `%s' which may bind externally can not be "
 "used when making a shared object; recompile with -fPIC"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5732
+#: elfnn-aarch64.c:5990
 #, c-format
 msgid ""
 "%pB: local symbol descriptor table be NULL when applying relocation %s "
 "against local symbol"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6830
+#: elfnn-aarch64.c:6103 elfnn-aarch64.c:6140
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr ""
+
+#: elfnn-aarch64.c:7125
 msgid "too many GOT entries for -fpic, please recompile with -fPIC"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6858
+#: elfnn-aarch64.c:7153
 msgid ""
 "one possible cause of this error is that the symbol is being referenced in "
 "the indicated code as if it had a larger alignment than was declared where "
 "it was defined"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:7443
+#: elfnn-aarch64.c:7720
 #, c-format
 msgid ""
 "%pB: relocation %s against `%s' can not be used when making a shared object"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:182
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:217
+#: elfnn-riscv.c:187 elfnn-riscv.c:222
 #, c-format
 msgid "%pB: warning: RVE PLT generation not supported"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2311
+#: elfnn-riscv.c:1977
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr ""
+
+#: elfnn-riscv.c:2198
+#, c-format
+msgid ""
+"%%X%%P: relocation %s against `%s' can not be used when making a shared "
+"object; recompile with -fPIC\n"
+msgstr ""
+
+#: elfnn-riscv.c:2208
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr ""
+
+#: elfnn-riscv.c:2247
 msgid "%X%P: internal error: out of range error\n"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2315
+#: elfnn-riscv.c:2252
 msgid "%X%P: internal error: unsupported relocation error\n"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2325
+#: elfnn-riscv.c:2258
+msgid "dangerous relocation error"
+msgstr ""
+
+#: elfnn-riscv.c:2264
 msgid "%X%P: internal error: unknown error\n"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2711
+#: elfnn-riscv.c:2630
 #, c-format
-msgid "error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%d"
+msgid "error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%d"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2729
+#: elfnn-riscv.c:2648
 #, c-format
 msgid ""
-"error: %pB: corrupted ISA string '%s'.first letter should be 'i' or 'e' but "
+"error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but "
 "got '%s'."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2773
+#: elfnn-riscv.c:2692
 #, c-format
 msgid "error: %pB: Mis-matched ISA string to merge '%s' and '%s'."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2921
+#: elfnn-riscv.c:2893
 #, c-format
 msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2946
+#: elfnn-riscv.c:2913
 #, c-format
 msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2954
+#: elfnn-riscv.c:2921
 #, c-format
-msgid "error: %pB: Unspported XLEN (%u), you mightusing wrong emulation."
+msgid "error: %pB: Unsupported XLEN (%u), you might be using wrong emulation."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3039
+#: elfnn-riscv.c:3035
 #, c-format
-msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
+msgid ""
+"warning: %pB use privilege spec version %u.%u.%u but the output use version "
+"%u.%u.%u."
+msgstr ""
+
+#: elfnn-riscv.c:3053
+msgid ""
+"warning: privilege spec version 1.9.1 can not be linked with other spec "
+"versions."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3055
+#: elfnn-riscv.c:3081
 #, c-format
 msgid ""
 "error: %pB use %u-byte stack aligned but the output use %u-byte stack "
 "aligned."
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3096
+#: elfnn-riscv.c:3122
 #, c-format
 msgid ""
 "%pB: ABI is incompatible with that of the selected emulation:\n"
 "  target emulation `%s' does not match `%s'"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3119
+#: elfnn-riscv.c:3176
 #, c-format
 msgid "%pB: can't link %s modules with %s modules"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3129
+#: elfnn-riscv.c:3186
 #, c-format
 msgid "%pB: can't link RVE with other target"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3630
+#: elfnn-riscv.c:3724
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-"
 "byte boundary, but only %<PRId64> present"
 msgstr ""
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
+#: peXXigen.c:164
 #, c-format
 msgid "%pB: unable to find name for empty section"
 msgstr ""
 
-#: peigen.c:183 pepigen.c:183 pex64igen.c:183
+#: peXXigen.c:191
 #, c-format
 msgid "%pB: out of memory creating name for empty section"
 msgstr ""
 
-#: peigen.c:194 pepigen.c:194 pex64igen.c:194
+#: peXXigen.c:201
 #, c-format
 msgid "%pB: unable to create fake empty section"
 msgstr ""
 
-#: peigen.c:532 pepigen.c:532 pex64igen.c:532
+#: peXXigen.c:539
 #, c-format
 msgid ""
-"%pB: aout header specifies an invalid number of data-directory entries: %ld"
+"%pB: aout header specifies an invalid number of data-directory entries: %u"
 msgstr ""
 
-#: peigen.c:1091 pepigen.c:1091 pex64igen.c:1091
+#: peXXigen.c:1088
 #, c-format
 msgid "%pB: line number overflow: 0x%lx > 0xffff"
 msgstr ""
 
-#: peigen.c:1235 pepigen.c:1235 pex64igen.c:1235
+#: peXXigen.c:1241
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr ""
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1242
 msgid "Import Directory [parts of .idata]"
 msgstr ""
 
-#: peigen.c:1237 pepigen.c:1237 pex64igen.c:1237
+#: peXXigen.c:1243
 msgid "Resource Directory [.rsrc]"
 msgstr ""
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1244
 msgid "Exception Directory [.pdata]"
 msgstr ""
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1245
 msgid "Security Directory"
 msgstr ""
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1246
 msgid "Base Relocation Directory [.reloc]"
 msgstr ""
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1247
 msgid "Debug Directory"
 msgstr ""
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1248
 msgid "Description Directory"
 msgstr ""
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1249
 msgid "Special Directory"
 msgstr ""
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1250
 msgid "Thread Storage Directory [.tls]"
 msgstr ""
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1251
 msgid "Load Configuration Directory"
 msgstr ""
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1252
 msgid "Bound Import Directory"
 msgstr ""
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1253
 msgid "Import Address Table Directory"
 msgstr ""
 
-#: peigen.c:1248 pepigen.c:1248 pex64igen.c:1248
+#: peXXigen.c:1254
 msgid "Delay Import Directory"
 msgstr ""
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1255
 msgid "CLR Runtime Header"
 msgstr ""
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1256
 msgid "Reserved"
 msgstr ""
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1316
 #, c-format
 msgid ""
 "\n"
 "There is an import table, but the section containing it could not be found\n"
 msgstr ""
 
-#: peigen.c:1316 pepigen.c:1316 pex64igen.c:1316
+#: peXXigen.c:1322
 #, c-format
 msgid ""
 "\n"
 "There is an import table in %s, but that section has no contents\n"
 msgstr ""
 
-#: peigen.c:1323 pepigen.c:1323 pex64igen.c:1323
+#: peXXigen.c:1329
 #, c-format
 msgid ""
 "\n"
 "There is an import table in %s at 0x%lx\n"
 msgstr ""
 
-#: peigen.c:1365 pepigen.c:1365 pex64igen.c:1365
+#: peXXigen.c:1369
 #, c-format
 msgid ""
 "\n"
 "Function descriptor located at the start address: %04lx\n"
 msgstr ""
 
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
+#: peXXigen.c:1373
 #, c-format
 msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
 msgstr ""
 
-#: peigen.c:1377 pepigen.c:1377 pex64igen.c:1377
+#: peXXigen.c:1380
 #, c-format
 msgid ""
 "\n"
 "No reldata section! Function descriptor not decoded.\n"
 msgstr ""
 
-#: peigen.c:1382 pepigen.c:1382 pex64igen.c:1382
+#: peXXigen.c:1385
 #, c-format
 msgid ""
 "\n"
 "The Import Tables (interpreted %s section contents)\n"
 msgstr ""
 
-#: peigen.c:1385 pepigen.c:1385 pex64igen.c:1385
+#: peXXigen.c:1388
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
 "                 Table   Stamp     Chain    Name      Thunk\n"
 msgstr ""
 
-#: peigen.c:1435 pepigen.c:1435 pex64igen.c:1435
+#: peXXigen.c:1437
 #, c-format
 msgid ""
 "\n"
 "\tDLL Name: %.*s\n"
 msgstr ""
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1453
 #, c-format
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
 msgstr ""
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1478
 #, c-format
 msgid ""
 "\n"
 "There is a first thunk, but the section containing it could not be found\n"
 msgstr ""
 
-#: peigen.c:1520 peigen.c:1559 pepigen.c:1520 pepigen.c:1559 pex64igen.c:1520
-#: pex64igen.c:1559
+#: peXXigen.c:1522 peXXigen.c:1561
 #, c-format
 msgid "\t<corrupt: 0x%04lx>"
 msgstr ""
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1654
 #, c-format
 msgid ""
 "\n"
 "There is an export table, but the section containing it could not be found\n"
 msgstr ""
 
-#: peigen.c:1658 pepigen.c:1658 pex64igen.c:1658
+#: peXXigen.c:1660
 #, c-format
 msgid ""
 "\n"
 "There is an export table in %s, but that section has no contents\n"
 msgstr ""
 
-#: peigen.c:1669 pepigen.c:1669 pex64igen.c:1669
+#: peXXigen.c:1671
 #, c-format
 msgid ""
 "\n"
 "There is an export table in %s, but it does not fit into that section\n"
 msgstr ""
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1682
 #, c-format
 msgid ""
 "\n"
 "There is an export table in %s, but it is too small (%d)\n"
 msgstr ""
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1688
 #, c-format
 msgid ""
 "\n"
 "There is an export table in %s at 0x%lx\n"
 msgstr ""
 
-#: peigen.c:1714 pepigen.c:1714 pex64igen.c:1714
+#: peXXigen.c:1716
 #, c-format
 msgid ""
 "\n"
@@ -8387,162 +8816,160 @@ msgid ""
 "\n"
 msgstr ""
 
-#: peigen.c:1718 pepigen.c:1718 pex64igen.c:1718
+#: peXXigen.c:1720
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
 msgstr ""
 
-#: peigen.c:1721 pepigen.c:1721 pex64igen.c:1721
+#: peXXigen.c:1723
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
 msgstr ""
 
-#: peigen.c:1725 pepigen.c:1725 pex64igen.c:1725
+#: peXXigen.c:1727
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr ""
 
-#: peigen.c:1728 pepigen.c:1728 pex64igen.c:1728
+#: peXXigen.c:1730
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr ""
 
-#: peigen.c:1739 pepigen.c:1739 pex64igen.c:1739
+#: peXXigen.c:1741
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr ""
 
-#: peigen.c:1742 pepigen.c:1742 pex64igen.c:1742
+#: peXXigen.c:1744
 #, c-format
 msgid "Number in:\n"
 msgstr ""
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1747
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
 msgstr ""
 
-#: peigen.c:1749 pepigen.c:1749 pex64igen.c:1749
+#: peXXigen.c:1751
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
 msgstr ""
 
-#: peigen.c:1752 pepigen.c:1752 pex64igen.c:1752
+#: peXXigen.c:1754
 #, c-format
 msgid "Table Addresses\n"
 msgstr ""
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1757
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr ""
 
-#: peigen.c:1760 pepigen.c:1760 pex64igen.c:1760
+#: peXXigen.c:1762
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr ""
 
-#: peigen.c:1765 pepigen.c:1765 pex64igen.c:1765
+#: peXXigen.c:1767
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr ""
 
-#: peigen.c:1779 pepigen.c:1779 pex64igen.c:1779
+#: peXXigen.c:1781
 #, c-format
 msgid ""
 "\n"
 "Export Address Table -- Ordinal Base %ld\n"
 msgstr ""
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1790
 #, c-format
 msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr ""
 
-#: peigen.c:1807 pepigen.c:1807 pex64igen.c:1807
+#: peXXigen.c:1809
 msgid "Forwarder RVA"
 msgstr ""
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1821
 msgid "Export RVA"
 msgstr ""
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1828
 #, c-format
 msgid ""
 "\n"
 "[Ordinal/Name Pointer] Table\n"
 msgstr ""
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1836
 #, c-format
 msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr ""
 
-#: peigen.c:1841 pepigen.c:1841 pex64igen.c:1841
+#: peXXigen.c:1843
 #, c-format
 msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr ""
 
-#: peigen.c:1855 pepigen.c:1855 pex64igen.c:1855
+#: peXXigen.c:1857
 #, c-format
 msgid "\t[%4ld] <corrupt offset: %lx>\n"
 msgstr ""
 
-#: peigen.c:1909 peigen.c:2106 pepigen.c:1909 pepigen.c:2106 pex64igen.c:1909
-#: pex64igen.c:2106
+#: peXXigen.c:1911 peXXigen.c:2107
 #, c-format
 msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
 msgstr ""
 
-#: peigen.c:1913 peigen.c:2110 pepigen.c:1913 pepigen.c:2110 pex64igen.c:1913
-#: pex64igen.c:2110
+#: peXXigen.c:1915 peXXigen.c:2111
 #, c-format
 msgid ""
 "\n"
 "The Function Table (interpreted .pdata section contents)\n"
 msgstr ""
 
-#: peigen.c:1916 pepigen.c:1916 pex64igen.c:1916
+#: peXXigen.c:1918
 #, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
 msgstr ""
 
-#: peigen.c:1918 pepigen.c:1918 pex64igen.c:1918
+#: peXXigen.c:1920
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
 "     \t\tAddress  Address  Handler  Data     Address    Mask\n"
 msgstr ""
 
-#: peigen.c:1931 pepigen.c:1931 pex64igen.c:1931
+#: peXXigen.c:1933
 #, c-format
 msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
 msgstr ""
 
-#: peigen.c:2001 pepigen.c:2001 pex64igen.c:2001
+#: peXXigen.c:2002
 #, c-format
 msgid " Register save millicode"
 msgstr ""
 
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
+#: peXXigen.c:2005
 #, c-format
 msgid " Register restore millicode"
 msgstr ""
 
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
+#: peXXigen.c:2008
 #, c-format
 msgid " Glue code sequence"
 msgstr ""
 
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2113
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
 "     \t\tAddress  Length   Length   32b exc  Handler   Data\n"
 msgstr ""
 
-#: peigen.c:2234 pepigen.c:2234 pex64igen.c:2234
+#: peXXigen.c:2234
 #, c-format
 msgid ""
 "\n"
@@ -8550,86 +8977,86 @@ msgid ""
 "PE File Base Relocations (interpreted .reloc section contents)\n"
 msgstr ""
 
-#: peigen.c:2264 pepigen.c:2264 pex64igen.c:2264
+#: peXXigen.c:2263
 #, c-format
 msgid ""
 "\n"
 "Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"
 msgstr ""
 
-#: peigen.c:2282 pepigen.c:2282 pex64igen.c:2282
+#: peXXigen.c:2281
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr ""
 
-#: peigen.c:2343 pepigen.c:2343 pex64igen.c:2343
+#: peXXigen.c:2342
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr ""
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2366
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr ""
 
-#: peigen.c:2387 pepigen.c:2387 pex64igen.c:2387
+#: peXXigen.c:2386
 #, c-format
 msgid "<corrupt string length: %#x>\n"
 msgstr ""
 
-#: peigen.c:2397 pepigen.c:2397 pex64igen.c:2397
+#: peXXigen.c:2396
 #, c-format
 msgid "<corrupt string offset: %#lx>\n"
 msgstr ""
 
-#: peigen.c:2402 pepigen.c:2402 pex64igen.c:2402
+#: peXXigen.c:2401
 #, c-format
 msgid "ID: %#08lx"
 msgstr ""
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2404
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ""
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2426
 #, c-format
 msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
 msgstr ""
 
-#: peigen.c:2469 pepigen.c:2469 pex64igen.c:2469
+#: peXXigen.c:2468
 #, c-format
 msgid "<unknown directory type: %d>\n"
 msgstr ""
 
-#: peigen.c:2477 pepigen.c:2477 pex64igen.c:2477
+#: peXXigen.c:2476
 #, c-format
 msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
 msgstr ""
 
-#: peigen.c:2566 pepigen.c:2566 pex64igen.c:2566
+#: peXXigen.c:2564
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr ""
 
-#: peigen.c:2590 pepigen.c:2590 pex64igen.c:2590
+#: peXXigen.c:2588
 #, c-format
 msgid ""
 "\n"
 "WARNING: Extra data in .rsrc section - it will be ignored by Windows:\n"
 msgstr ""
 
-#: peigen.c:2596 pepigen.c:2596 pex64igen.c:2596
+#: peXXigen.c:2594
 #, c-format
 msgid " String table starts at offset: %#03x\n"
 msgstr ""
 
-#: peigen.c:2599 pepigen.c:2599 pex64igen.c:2599
+#: peXXigen.c:2597
 #, c-format
 msgid " Resources start at offset: %#03x\n"
 msgstr ""
 
-#: peigen.c:2651 pepigen.c:2651 pex64igen.c:2651
+#: peXXigen.c:2654
 #, c-format
 msgid ""
 "\n"
@@ -8637,14 +9064,14 @@ msgid ""
 "found\n"
 msgstr ""
 
-#: peigen.c:2657 pepigen.c:2657 pex64igen.c:2657
+#: peXXigen.c:2660
 #, c-format
 msgid ""
 "\n"
 "There is a debug directory in %s, but that section has no contents\n"
 msgstr ""
 
-#: peigen.c:2664 pepigen.c:2664 pex64igen.c:2664
+#: peXXigen.c:2667
 #, c-format
 msgid ""
 "\n"
@@ -8652,7 +9079,7 @@ msgid ""
 "small\n"
 msgstr ""
 
-#: peigen.c:2669 pepigen.c:2669 pex64igen.c:2669
+#: peXXigen.c:2672
 #, c-format
 msgid ""
 "\n"
@@ -8660,23 +9087,23 @@ msgid ""
 "\n"
 msgstr ""
 
-#: peigen.c:2676 pepigen.c:2676 pex64igen.c:2676
+#: peXXigen.c:2679
 #, c-format
 msgid ""
 "The debug data size field in the data directory is too big for the section"
 msgstr ""
 
-#: peigen.c:2681 pepigen.c:2681 pex64igen.c:2681
+#: peXXigen.c:2684
 #, c-format
 msgid "Type                Size     Rva      Offset\n"
 msgstr ""
 
-#: peigen.c:2729 pepigen.c:2729 pex64igen.c:2729
+#: peXXigen.c:2731
 #, c-format
 msgid "(format %c%c%c%c signature %s age %ld)\n"
 msgstr ""
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2741
 #, c-format
 msgid ""
 "The debug directory size is not a multiple of the debug directory entry "
@@ -8686,99 +9113,99 @@ msgstr ""
 #. The MS dumpbin program reportedly ands with 0xff0f before
 #. printing the characteristics field.  Not sure why.  No reason to
 #. emulate it here.
-#: peigen.c:2757 pepigen.c:2757 pex64igen.c:2757
+#: peXXigen.c:2825
 #, c-format
 msgid ""
 "\n"
 "Characteristics 0x%x\n"
 msgstr ""
 
-#: peigen.c:2993 pepigen.c:2993 pex64igen.c:2993
+#: peXXigen.c:3072
 #, c-format
 msgid ""
 "%pB: Data Directory size (%lx) exceeds space left in section (%<PRIx64>)"
 msgstr ""
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
+#: peXXigen.c:3104
 msgid "failed to update file offsets in debug directory"
 msgstr ""
 
-#: peigen.c:3033 pepigen.c:3033 pex64igen.c:3033
+#: peXXigen.c:3112
 #, c-format
 msgid "%pB: failed to read debug data section"
 msgstr ""
 
-#: peigen.c:3849 pepigen.c:3849 pex64igen.c:3849
+#: peXXigen.c:3928
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
 msgstr ""
 
-#: peigen.c:3984 pepigen.c:3984 pex64igen.c:3984
+#: peXXigen.c:4063
 msgid ".rsrc merge failure: multiple non-default manifests"
 msgstr ""
 
-#: peigen.c:4002 pepigen.c:4002 pex64igen.c:4002
+#: peXXigen.c:4081
 msgid ".rsrc merge failure: a directory matches a leaf"
 msgstr ""
 
-#: peigen.c:4044 pepigen.c:4044 pex64igen.c:4044
+#: peXXigen.c:4123
 msgid ".rsrc merge failure: duplicate leaf"
 msgstr ""
 
-#: peigen.c:4046 pepigen.c:4046 pex64igen.c:4046
+#: peXXigen.c:4125
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
 msgstr ""
 
-#: peigen.c:4112 pepigen.c:4112 pex64igen.c:4112
+#: peXXigen.c:4191
 msgid ".rsrc merge failure: dirs with differing characteristics"
 msgstr ""
 
-#: peigen.c:4119 pepigen.c:4119 pex64igen.c:4119
+#: peXXigen.c:4198
 msgid ".rsrc merge failure: differing directory versions"
 msgstr ""
 
 #. Corrupted .rsrc section - cannot merge.
-#: peigen.c:4236 pepigen.c:4236 pex64igen.c:4236
+#: peXXigen.c:4315
 #, c-format
 msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
 msgstr ""
 
-#: peigen.c:4244 pepigen.c:4244 pex64igen.c:4244
+#: peXXigen.c:4323
 #, c-format
 msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
 msgstr ""
 
-#: peigen.c:4383 pepigen.c:4383 pex64igen.c:4383
+#: peXXigen.c:4462
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
 msgstr ""
 
-#: peigen.c:4403 pepigen.c:4403 pex64igen.c:4403
+#: peXXigen.c:4482
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
 msgstr ""
 
-#: peigen.c:4424 pepigen.c:4424 pex64igen.c:4424
+#: peXXigen.c:4503
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
 msgstr ""
 
-#: peigen.c:4444 pepigen.c:4444 pex64igen.c:4444
+#: peXXigen.c:4523
 #, c-format
 msgid ""
 "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because ."
 "idata$6 is missing"
 msgstr ""
 
-#: peigen.c:4486 pepigen.c:4486 pex64igen.c:4486
+#: peXXigen.c:4565
 #, c-format
 msgid ""
 "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because ."
 "idata$6 is missing"
 msgstr ""
 
-#: peigen.c:4511 pepigen.c:4511 pex64igen.c:4511
+#: peXXigen.c:4590
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
 msgstr ""
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/fr.gmo ./bfd/po/fr.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/fr.gmo	2020-03-07 02:11:48.000000000 +0000
+++ ./bfd/po/fr.gmo	2021-05-21 02:00:24.000000000 +0000
@@ -1,143 +1,141 @@
-Þ•01Ûbl…€„…„‡dŸ
eŸsŸ‡Ÿ ŸA¿Ÿ? :A | “ ¦ $Å 3ê 
¡,¡%L¡r¡t¡A†¡&È¡ï¡¢!¢:¢J¢ i¢Š¢ª¢Ã¢Ú¢ç¢Pú¢K£*c£9Ž£6È£;ÿ£;¤FM¤6”¤6Ë¤:¥5=¥,s¥D ¥Nå¥J4¦)¦G©¦:ñ¦B,§Lo§)¼§Bæ§L)¨v¨Œ¨D£¨Gè¨0©O©a©u©�©¢©3Á©õ©ª0ªOª_ªoª+‰ª+µª+áª#
«1«I«R«p«(‡«?°«>ð«%/¬&U¬(|¬)¥¬GÏ¬7­O­f­†­£­¼­×­÷­®+®A®Y®m®„®,ž®Ë®Û®ô®¯#¯2¯H¯]¯w¯Ž¯1£¯Õ¯æ¯ó¯
-°%°#=°+a°&�°5´°ê°ÿ°±1±G±a±z±‘±§±$¼±á±ú±²2²$G²l²€²•²<®²ë²ú²
	³³+³@³ X³y³”³¤³Ä³à³´´2´E´*X´ƒ´•´&§´Î´0â´µ"'µJµ	[¶e¶#x¶œ¶µ¶Æ¶ß¶"ø¶·"/·#R·#v·š·#¯·#Ó·÷·¸"¸@¸F¸S¸[¸`¸
-}¸ˆ¸�¸!“¸ µ¸Ö¸Û¸à¸ø¸¹8¹=¹Q¹!V¹x¹‰¹�¹–¹›¹ ¹¦¹ª¹¯¹Ë¹"ä¹ºº,º@º&`ºB‡ºÊºêºïºôºûº»»»»7»K»R»k»»�»¡»²»Ã»Ô»ì»	û»
¼
¼
-!¼
-,¼
-7¼
-B¼
-M¼$X¼
-}¼#ˆ¼
-¬¼·¼É¼!á¼½½
-'½
2½	@½J½
-[½f½m½…½Ÿ½±½À½×½ò½¾¾)¾0¾P¾(`¾/‰¾¹¾Ë¾+Ú¾¿A"¿d¿~¿˜¿²¿8Ç¿ÀÀ-À&GÀnÀ�À2¨À?ÛÀ&ÁBÁ(aÁŠÁ"�ÁÀÁ*àÁ6Â{BÂr¾Âx1ÃªÃ:ÀÃûÃ?
ÄMÄmÄ&‹Ä²ÄœÌÄDiÅ'®Å,ÖÅ1Æ'5Æ$]Æ/‚Æ-²Æ0àÆ&Ç88ÇqÇ=‘Ç9ÏÇ:	È6DÈ6{È²È/ÒÈ5É+8É$dÉ6‰É"ÀÉ&ãÉ6
-Ê=AÊ:Ê:ºÊDõÊ8:Ë9sËC­Ë:ñË7,Ì8dÌ@�ÌGÞÌ9&Í,`Í0�Í#¾ÍâÍ-ýÍ6+ÎbÎ7~Î;¶Î:òÎ9-Ï"gÏ3ŠÏ%¾Ï.äÏÐL3Ð0€Ð.±Ð1àÐ'ÑE:Ñ8€Ñ(¹ÑcâÑ4FÒ&{Ò2¢Ò&ÕÒ6üÒ]3Ó8‘ÓÊÓOéÓb9Ô,œÔ+ÉÔ)õÔYÕ=yÕ3·Õ2ëÕBÖ)aÖ$‹Ö3°Ö9äÖ6×/U×D…×&Ê×Wñ×UIØIŸØ+éØ8Ù%NÙ(tÙ&�Ù,ÄÙ#ñÙ>ÚBTÚB—ÚÚÚ'úÚE"Û9hÛ4¢Û3×ÛJÜ(VÜ;Ü»Ü0ÚÜ.Ý,:Ý'gÝ6�Ý ÆÝ/çÝ4ÞNLÞª›ÞIFß9�ß3Êß¾þß<½à<úàF7áP~áoÏá>?âF~â`Åâ~&ãF¥ã‚ìã[oä3Ëä@ÿäM@åmŽå7üå#4æXæ(næ&—æ+¾æêæÿæ8ç"Lç$oç'”ç9¼çCöç!:è!\è*~è/©è1Ùè/é/;é0ké*œé0Çé<øéi5ê=ŸêBÝê= ë-^ë.Œë8»ë9ôëF.ì?uìVµì(í>5í;tí=°í#îíLî8_î+˜î8Äî2ýî90ï:jï3¥ï,Ùïuð |ð.�ð.ÌðKûð0GñBxñ/»ñ,ëñ'ò%@ò,fòN“òâòCüòJ@ó@‹óJÌó*ô%Bô<hô ¥ôlÆô<3õ<põ+­õÙõ,õõH"ö6köA¢öAäöJ&÷>q÷J°÷Jû÷<Fø.ƒø(²ølÛøvHùA¿ù6ú8ú4Vú0‹ú+¼úAèú3*û@^û!Ÿû#Áû.åûBüFWü4žü%Óü:ùü24ý*gý9’ýCÌýCþ:TþT�þJäþ5/ÿ4eÿ6šÿ/Ñÿ/&1&X5'µ0Ý5(D3m%¡&Çî'=6#t+˜3Ä(ø@!Cb5¦'Ü,g14™mÎA<@~H¿GKPIœLæH3C|YÀ50P4�M¶N	1S	)…	/¯	)ß	+	
-75
-3m
-6¡
-9Ø
-X[kCÇ6>B=�*¿.ê2
[L
&¨
-Ï
,ý
*E/`(�$¹0Þ'87"pA“)Õ=ÿ@=2~+±"Ý5<6's%›(ÁRê?=F}3Ä1øD*HoD¸KýaI`«sB€‚ÃTF=›bÙb<gŸg0o( 4É5þ34-h/–HÆF7VGŽ+Ö$2'.Z/‰+¹)å^KnFº"@5[(‘EºDDEFŠ_Ñ^1"�*³+Þ8
- :C '~ ;¦ 8â '!'C!3k!>Ÿ!-Þ!,"9"X"u".“"/Â"ò"$#37#k#F‰#&Ð#!÷#6$5P$+†$ ²$$Ó$.ø$.'%%V%)|%\¦%D&HH&D‘&LÖ&X#'H|')Å'*ï' (5;(9q(@«(+ì(6)AO).‘)3À)=ô)H2*<{*8¸*3ñ*4%+4Z+0�+@À+1,B3,Lv,AÃ,L-8R-B‹-+Î-2ú-<-.3j.Xž.P÷..H/`w/&Ø/\ÿ/X\0/µ0på0AV1+˜1KÄ1.2,?2%l2’23²22æ23493Wn3=Æ3*45/4%e4B‹4%Î44ô4>)5<h5C¥5Bé5;,63h6œ6¼6Ë6!à67$7=71P7V‚7IÙ7I#8<m8ª8½8Ñ8ã8ý8
9'9G9
S9a9%r9\˜9;õ91:C:Y:\:y:†:	Ÿ:©:»:Ì:,Ù:;;0;"L;o;(Œ;/µ;/å;1<8G<#€<'¤<2Ì<3ÿ<3=;C==†=Ž=£=³=º=Â=Ö=ë=>>%><>Y>k>‰>	¨>²>Ð>	å>"ï>?$?)@?/j?"š?½?Ô?Ý?é?í?@@$@'6@^@ {@#œ@À@Ú@ ì@
AH+A1tA#¦A,ÊAX÷AaPB:²B.íB7C1TC;†C(ÂC:ëC,&D-SD-�D¯D2ÎDEE&E;ERE)hE’E!¨E$ÊEIïE9F5VFŒF
-¡FC¬FIðF:GLGTG\G
zGˆGAšGÜG/øG+(H8TH�H$£H!ÈH1êHI;I+ZI†I
-šI¥IÄI%ÖIüIJ.,J-[JG‰J3ÑJK"$KGKYK$rK—K!´KÖK5èKL	0L:LLLbL‚LœL¸LÇLÙL	àLêLïLûL
-M!M=MSMeM…MžM¾MÒMäMüM-NHNZNlN€NšN'¯N×NæNøN
-OO!O:O:VO%‘O%·OÝOAöO;8PCtP=¸PCöP=:Q"xQ7›Q<ÓQ<R)MR5wR­R¶RvÑR*HSsS'…S­S¿SÆS
-ÍS(ØST'T;TXTpT�T#¨T$ÌT,ñT.U,MU.zU©U"ÆU,éU.V!EV1gV0™V2ÊV,ýV.*W#YW}W�W(±W/ÚW!
-X,X(IX#rX+–XÂX,ÛX Y)YBYbYvY–Y#µY-ÙY"Z*Z<ZOZ[ZpZ&‚Z	©ZF³Z/úZ*[J;[M†[Ô[ô[\\-;\i\r\z\A†\>È\]A]7[]B“]!Ö]ø]˜^±^Í^ß^ñ^2_.9_#h_Œ_™_¦_¶_¾_:×_+`#>`b`u`Ž`¦`,¾`:ë`&a	>adHa­a6ÀaM÷aMEb<“bgÐbb8c<›cEØc1d(Pd$ydžd/´d+äde,eFece>e<¾eûe4f'Lf$tf™fªfÂfÙfêfgg,g>gPgbg|g—g©gºgÒgñg2hCh']h7…h0½hDîh,3i'`iˆi¨iºi-Ôi+j+.j*Zj	…j	�j
-™j
-¤j¯jÄjÓjèj÷j1üj.k/Nk~k'�k"Åk&èk0l@l^lsl|l9šlÔl,él9m)PmCzmI¾mEnYNnY¨n;o;>oNzo/Éo5ùo:/p5jp4 p9Õp7q9GqD�qGÆqDrESrC™r4Ýr?s:RsG�s;ÕsAt9St*�t6¸t/ït;u3[u%�u1µuAçu!)vUKv\¡vAþv1@w?rw:²w7íw>%x$dxI‰xÓx/ðxO yPpy3Áy õy?z:Vz&‘z
-¸z0Ãz%ôz"{%={0c{!”{¶{Ï{ê{ÿ{|O|k|,Š|J·|7}
:}H}1W}‰}�}°}Ã})à}*
-~,5~6b~™~$¹~_Þ~">Aa£,Á2îH!€j€z€$‹€°€Ã€¼ã€¹ �Z‚/l‚œ‚·‚Õ‚*õ‚L ƒ2mƒ- ƒ)Îƒ"øƒ„.„C„X„4g„œ„0¤„%Õ„9û„5…G…X…r…z…‚…ž…H¥…î…4ñ…&†/†
-F†Q†2m†O †ð†‡"‡*7‡%b‡ ˆ‡©‡Ç‡Ï‡Cî‡¤2ˆ×ˆäˆ þˆ‰(‰<‰Q‰g‰}‰”‰±‰Â‰Ô‰è‰Nð‰[?Š›ŠAŸŠáŠ‹‹5‹6M‹„‹ ¤‹8Å‹+þ‹*Œ=ŒMŒUŒjŒ‚Œ–ŒªŒ¾ŒÑŒ
äŒòŒL� Y�Dz�P¿�Ž"Ž2=Ž$pŽ•ŽµŽ5ÈŽþŽ!�;�B�2J�F}�/Ä�ô�"�)�9�MH�9–�;Ð�7‘D‘\‘y‘ˆ‘,›‘$È‘Jí‘)8’ˆb’(ë’%“(:“c“
-“,Š“7·“ï“)	”3”Q”k”ƒ”‹”£”»”
Ñ”#ß”•'•C•T•j•„•¡•»•#Ç•%ë•–.–E–W–7n–¦–Â–â–û–—"—5—I—]—s—J‰—JÔ—J˜Ij˜:´˜ï˜-™;<™+x™@¤™<å™1"š8Tš8�š.Æš>õšI4›h~›yç›>aœN œIïœd9�0ž�;Ï�8žFDž5‹ž&Áž.èž-Ÿ.EŸ0tŸ<¥Ÿ!âŸ ! `? .  ,Ï hü Ee¡0«¡6Ü¡k¢E¢Å¢&ã¢I
-£#T£<x£<µ£eò£2X¤/‹¤/»¤4ë¤= ¥9^¥0˜¥7É¥'¦=)¦6g¦@ž¦ß¦ÿ¦,§Ð0§
©©!$©(F©wo©lç©_Tª´ªÔªìª+«C8«
|«)Š«!´«Ö«Ø«Ué«+?¬k¬‰¬¥¬¿¬"Ï¬!ò¬$­9­W­p­€­i•­ÿ­>®B^®?¡®>á® ¯b9¯Dœ¯Eá¯I'°Cq°5µ°Së°\?±Wœ±1ô±Q&²Hx²OÁ²U³1g³O™³Vé³@´[´Sx´[Ì´!(µJµ_µsµ�µ ¢µ5Ãµùµ¶= ¶^¶m¶}¶,˜¶,Å¶,ò¶"·B·Z·c·ƒ·0œ·PÍ·O¸)n¸*˜¸.Ã¸0ò¸d#¹Kˆ¹Ô¹ë¹º(ºAº,\º‰º¢ºÂºÚºöº
-»!»3;»o»»™»µ»Ò»ä»ú»¼)¼@¼5U¼‹¼ž¼«¼Æ¼á¼$û¼+ ½'L½5t½ª½#¿½ã½¾¾9¾R¾i¾¾)”¾¾¾×¾÷¾¿($¿M¿a¿v¿<�¿Ì¿Û¿
ê¿ø¿À!À"=À`À{À&‹À²ÀÍÀíÀÁ$Á7Á-KÁyÁŒÁ)ŸÁÉÁ2ÞÁÂ+%ÂlQÂ
-¾ÃÉÃ#ÜÃÄÄ2ÄLÄ#fÄŠÄ%žÄ#ÄÄ#èÄÅ#Å#AÅeÅ&tÅ&›ÅÂÅÈÅÔÅÜÅáÅ
-þÅ	ÆÆ)Æ3>ÆrÆwÆ|Æ#•Æ#¹ÆÝÆâÆÿÆ4Ç9ÇKÇRÇXÇ]ÇbÇhÇlÇ"qÇ#”Ç/¸ÇèÇ#íÇÈ#(È4LÈ@�È#ÂÈæÈëÈðÈ÷ÈÿÈÉÉ!É:ÉQÉXÉtÉ‹ÉœÉ­É¾ÉÏÉàÉ÷É	Ê
Ê
Ê
-,Ê
-7Ê
-BÊ
-MÊ
-XÊ4cÊ
-˜Ê[£Ê
-ÿÊ
-ËË,;ËhË}Ë
ŒËšË	«ËµË
ËËÙËàËúËÌ)ÌGÌ+dÌ�Ì ŸÌ
ÀÌÎÌ#ÕÌùÌ1Í::ÍuÍ‹Í:œÍ×ÍGòÍ :Î[ÎvÎ‘Î;¦ÎâÎûÎÏ:,Ï,gÏ”Ï7³ÏHëÏ94Ð+nÐ*šÐÅÐ#ÛÐ-ÿÐ*-Ñ7XÑ�ÑwÒ{ˆÒÓ?Ó^ÓVrÓÉÓ%éÓ;ÔKÔÐiÔe:Õ8 ÕEÙÕBÖ8bÖ3›ÖFÏÖ>×BU×5˜×>Î×1
ØV?ØR–ØVéØD@ÙD…Ù#ÊÙ<îÙJ+ÚIvÚ/ÀÚYðÚ0JÛ4{Û=°ÛAîÛ=0Ü>nÜH­Ü;öÜ=2ÝGpÝ=¸Ý;öÝ;2ÞgnÞ~ÖÞXUßL®ßEûß+Aà.màGœàMäà$2á@WáN˜áNçáB6â8yâD²â'÷âBã(bã^‹ã>êã<)ä4fä<›ä]ØäN6å7…å†½åIDæ3Žæ<Âæ%ÿæ@%ç|fçPãç4èdTè‡¹è6Aé0xé+©é^ÕéO4êB„ê@ÇêPë-Yë&‡ë<®ëLëëJ8ìFƒìQÊì*íkGíu³íj)î<”îDÑî1ï-Hï/vï4¦ï+ÛïGðKOðE›ðáð7ýðW5ñJ�ñHØñ?!ò~aòYàòQ:ó$Œó>±ó0ðó%!ô)Gô4qô'¦ôEÎô<õhQõÝºõ_˜öHøöDA÷†÷C’øCÖøQùdlùŠÑùJ\úT§ú…üúª‚û[-ü©‰üp3ý-¤ýGÒýUþ”pþ<ÿ-Bÿpÿ6Šÿ4Áÿ:öÿ1GZ]$¸%Ý5Q9U‹$á$1+7]6•:Ì=5E7{5³DéŒ.X»PXe=¾DüBAD„TÉNsm5áIAaF£-êR	Dk	4°	Xå	O>
-ZŽ
-Né
-M8U†¤Ü'�?©?é\)
A†
SÈ
98V8�6È8ÿh8¡KÀRS_b³S@jP«.ü—+FÃF
-.Q!€>¢JáD,sqsåbY@¼TýbRLµ;=>Œ| 	Lª=÷(5?^Bž)áYJe]°..=ClV°]9e%ŸUÅ>FZ\¡ZþZYP´oZu=Ð@ @O F� C× @!F\!@£!.ä!5"<I"8†"@¿"0#11#(c#6Œ#DÃ#1$?:$Ez$*À$Lë$K8%A„%1Æ%4ø%•-&DÃ&q'Hz'GÃ'O(N[(Rª(Ký(\I)f¦)T
*lb*QÏ*<!+;^+`š+`û+>\,5›,DÑ,;-AR-P”-Gå-k-.M™.kç.rS/SÆ/l0J‡0NÒ0C!1Fe1?¬1xì1,e2<’2;Ï2!3 -3BN33‘36Å38ü3>54Qt4.Æ4Qõ46G5S~5cÒ5B665y6-¯6<Ý6E7'`7(ˆ73±7nå7GT8Nœ8Dë8909Sj9W¾9S:_j:…Ê:…P;”Ö;Qk<²½<np=Tß=ƒ4>‹¸>ˆD?�Í?@^@5Ÿ@;Õ@FAIXA4¢A?×AgBfBWæBk>C<ªC-çCGD9]D6—D;ÎD*
-Ev5ES¬EHFIF!dF†F< F2ÝFGGFXGFŸGHæGa/H`‘HCòH76I7nIG¦IJîI39JKmJE¹J2ÿJ62K:iKT¤K;ùK/5L(eLŽL(¬L6ÕL7M$DM2iMBœM"ßM\N._N'ŽN;¶NBòN65O'lO+”O4ÀO5õO,+P*XPsƒPb÷PcZQP¾QTRsdR^ØR57S3mS*¡SOÌSBTL_T1¬TPÞT[/U?‹UEËUSV]eVFÃVK
-WWVWA®WIðWA:XW|X5ÔX@
-YMKYA™YLÛY=(Z_fZKÆZL[V_[C¶[zú[eu\AÛ\y]0—]dÈ]`-^EŽ^ƒÔ^NX_5§_OÝ_0-`<^`<›`%Ø`Jþ`@Ia-Ša?¸aiøaQbb0´bMåb;3cIoc6¹c>ðc^/dcŽdmòdc`eYÄeCf*bf
�f›f2±f#äf6g?g8SgiŒgYög]PhQ®hii,i>i[iti'ƒi«i
¼iÊi$Úiiÿi>ij¨j&¿jæj éj
-k k	:kDkVkhk7uk­kÃk#Ýk"l'$l<Ll6‰lFÀlCmOKm0›m1Ìm>þmB=n€nA”nÖnßnènooo'o;oPodovo‰o¡oÀo(Ôo'ýo
-%p"0pSp	pp*zp¥p!·p(Ùp0q,3q&`q	‡q‘q¥q©qÂqÔqæq0øq)r)Hr+rržrºr,Ñr&þrK%s<qs-®s5ÜsutvˆtDÿt4Du:yu<´u_ñu1QvJƒvCÎvLw8_w%˜w7¾wöwx'x%Exkx6�x¸x"Óx&öxMy#kyB�yÒyïyJÿyVJz¡z³z»zÃz
ázïzc{#e{?‰{4É{Dþ{C|>`|;Ÿ|:Û|'}'>}Mf}´}
-Ô}2ß}~"$~G~$Y~@~~1¿~Qñ~<C/€4°å÷$€*:€*e€�€H¢€ë€ý€�!�9�X�%v�œ�­�¿�Æ�Ï�Õ�ä�õ�!‚-‚D‚X‚w‚“‚²‚Ì‚á‚!ü‚9ƒXƒlƒ�ƒ™ƒ¹ƒ8Øƒ„!„3„E„L„*S„!~„= „-Þ„,…#9…O]…[­…R	†R\†X¯†A‡:J‡@…‡HÆ‡Hˆ2XˆA‹ˆ	Íˆ!×ˆ™ùˆ7“‰Ë‰0Ý‰Š Š'Š.Š8AŠzŠ3ŒŠÀŠÝŠõŠ‹"+‹#N‹3r‹/¦‹3Ö‹/
-Œ:Œ#YŒ3}Œ/±Œ%áŒ5�==�9{�3µ�/é�$Ž >Ž_Ž+uŽ1¡Ž!ÓŽõŽ)�$>�3c�—�7±�!é��!%�G�#[�$�(¤�3Í�&‘(‘:‘W‘j‘‰‘6ž‘Õ‘\Û‘28’k’k}’sé’(]“†“Ÿ“#»“0ß“””!”O-”I}”Ç”[Ù”H5•Z~•0Ù•1
-–»<–'ø– —2—D—2\—=�—QÍ—˜,˜9˜K˜S˜As˜>µ˜.ô˜#™<™W™o™6‰™KÀ™!š.šu>š´šBÇšY
-›Yd›;¾›tú›ooœAßœR!�2t�)§�'Ñ�ù�=ž=PžŽž®ž7Íž5ŸY;ŸR•Ÿ&èŸS Gc @« ì þ ¡6¡"H¡k¡ˆ¡›¡®¡Á¡Ô¡ó¡¢%¢"7¢6Z¢7‘¢6É¢£3£DR£=—£XÕ£=.¤:l¤'§¤Ï¤ä¤>¥<B¥<¥<¼¥	ù¥	¦
-
¦
-¦#¦:¦I¦^¦m¦4r¦'§¦>Ï¦§8+§3d§C˜§7Ü§*¨$?¨d¨#w¨@›¨#Ü¨G©GH©*�©H»©KªfPª|·ª|4«S±«P¬qV¬@È¬H	­QR­<¤­Sá­p5®N¦®põ®Uf¯f¼¯]#°Z�°\Ü°I9±Pƒ±QÔ±T&²K{²fÇ²H.³1w³T©³3þ³<2´6o´&¦´2Í´Gµ,Hµ…uµuûµ\q¶8Î¶^·If·H°·Lù·&F¸Pm¸,¾¸2ë¸b¹Y�¹1Û¹$
ºD2º?wº9·ºñº>ýº3<»4p»4¥»YÚ»,4¼a¼z¼˜¼·¼É¼tÚ¼&O½0v½Y§½D¾F¾U¾;e¾¡¾µ¾È¾Û¾=ø¾H6¿5¿Cµ¿!ù¿&ÀyBÀ¼ÀRØÀ+Á5KÁ:�ÁN¼ÁÂÂ0,Â]Â$pÂé•ÂÝÃ]Ä4qÄ"¦Ä$ÉÄ/îÄ9Å_XÅC¸Å6üÅ63Æ-jÆ˜Æ¯ÆÅÆÜÆbéÆ	LÇ9VÇE�Ç9ÖÇÈ$È(7È`ÈoÈ{È—Èo�È
ÉMÉ_ÉlÉ
ŠÉ˜ÉE³ÉmùÉ(gÊ�Ê(–Ê;¿Ê2ûÊ@.ËFoË¶Ë%ÂËpèËÁYÌÍ'Í:GÍ	‚ÍŒÍ¢Í¸ÍÐÍèÍÎ Î2ÎEÎ\ÎYeÎs¿Î3ÏX7Ï�Ï"®ÏÑÏñÏI
-Ð&TÐ-{ÐC©ÐMíÐ;ÑTÑkÑwÑ�Ñ¤Ñ·ÑËÑßÑòÑÒ$Ò�9Ò#»ÒSßÒa3Ó•Ó"¨Ó2ËÓ/þÓ+.ÔZÔ_rÔÒÔ=òÔ0Õ8ÕGAÕ\‰Õ?æÕ&Ö+>ÖjÖzÖS‰ÖBÝÖ5 ×HV×Ÿ×½×Ý×í×DØ<FØWƒØ=ÛØ”Ù8®Ù5çÙ;Ú"YÚ|Ú8‰Ú>ÂÚÛ4Û%SÛ$yÛžÛºÛÂÛÜÛöÛÜ;ÜZÜ6xÜ¯ÜÇÜäÜ#Ý$Ý?Ý"KÝ8nÝ#§ÝËÝêÝÞA!Þ"cÞ&†Þ#­ÞÑÞæÞøÞßß3ßIß`_ß]ÀßYà\xàMÕà#á2CáIvá<ÀáOýáHMâ9–âAÐâAãCTãN˜ã\çãŒDäžÑäOpåbÀå]#æ~�æ9çA:çA|çT¾çFè/Zè;Šè/Æè6öè2-é@`é/¡éÑé(ìé{ê8‘ê6ÊêuëVwëFÎëJìz`ì^Ûì/:í-jín˜í0îI8îI‚îÌîALï1Žï=ÀïNþïNMðGœðFäðK+ñ2wñ^ªñV	òj`ò#Ëòïò-óòßÎ¿Ciq¯ž$Š¨6¸ŒÔ9õ¹í¹Ä"Àg!f5Ý”­;›Î¬¾×Æ
-ƒTW­0§y2!'(ê�)Ý
-ªE69	Ç`Z‹—EÄÖê{8¦J5„÷”�ž‡I£r€dŠÊ<ÆxkUámÜ‚x´¡[×ºå§û8ÇR)Ä»°q�¿õÿU³�Û³÷ëÃ"D}sÖ/WòF[šƒ|y0Vôë,ëµäÕ²$².ÿ;Y}_Îó„¼Ê!Hø×<\Œð¤´Àsˆh¡…fæˆ«ÁÄÏÜ,*‘wØºúa:ë©Î„' ðí~Mà‚báZó
Èc:Q3(;ÿ÷4G&ÉCN±µÞ&"PL%‹Cç?æ‰
-æýµ”Õ‡r±Ê¡Y†`�”¥Uôa›BÉUÙðlñe/—lwÝæ6î“Ÿ¥õh›>Lþ�:’’øõ¢“#VÔ¸Ÿ¿pxŠÍ~­a·ÃxC•QSt#Ú<â¡ÒïÈé@»ã�eûPÔ—jˆËñ%‰	S~LÃ°ãXOù$,3{)ã@šnÅcËAŸ�5Œ3§‚åb×À3µÅ-ÈXŠuZ=©zRí0[FÔD:wºËaÞ›Õ=ú¨
¦®N9®ä �ñ¿5šÜ­Kn8¶¾ŸKäÊ½	.l2ÜŠBAtø?�öãm®ƒÆÖLëz !x–gW˜ùÖ¶ÉÌVÄøIZ¸4O™¶:»«þžŽ€Iåÿ=©ÝþÌc‰•N¡þí�ªù[‡V¥v¬xÆòñ‘³Y$Ž‡Ž˜D Ê…•J®Íg+†û²Ð¨·ÒèØ3é�ozŸÝeo2ŽV•Ñïn(·êi0¬#+°]Õèû`|iFeî�åªo<Mq6î*>Tà&§ìÎÀ6Ç‹€"o¸Eæ¶NY’½Žð7vKø{£Óë8‡@–ªÂý*„*?	1GAù 5uç‡_>úÂÐ#ìž«Kü™å9«ð¥Ï`…^B£7Ù¢ï£1žè2â>ÆþÅÐ¬¶ví–9'Å¹Ñz|ÜÛÁõµ¢ï-OÒÌh²ÂvW€U‘ÏËà+òA%Ç&œ´%z«S2#—¤Nsî¾d“?pÕ0ãbÍÈ³ãR¦H£“(—ÏÑAž¤	]r¢¹âjI:â�81GXÚ§-ô±
-‘wÈå^}°h¹4ù¥�—íPÂn¼è8pÌ1êf<ká]RX2[Ï#¼½vrÔª¹ß™,Ùü_mƒ¨Ãh�ôw@]¼‰	JÛO·Ê vQ¼†Ð”˜/g¥ƒç^œ©ÉÁÒWd^¤)Úi!üÞ–JmI;'¿ê ÿüÅ$
Ú•{;š
.5qÉy /öÓw¸qX�ûNö™†ÛE>k�Ëà=øþB©ÿ¸�´–ªuÖ-‰óÓsGŒÈý^4iâ¡ôùÐºY-Û/•�ç¦Bf%Üîõ,e»è	fE]|T½®FöfÌìkÇ´ý4ÙÝÑÏBtóÞ?éÍœ~ØF¯ÁSpQé ÓŸ�ì“(ˆÛT²Øèæ|³=÷k¯z·ö¨Ž_9W²mP_J¼Ó­Øáô &C/MDºJß](CÖÍK†sjE¿…lc\‹ä�@˜17ð}Éé F[OÓaÔ+òÐ»PºZX™ctM¢â„SŒj
-çKìo{p
-7œýÌHU+áYj‹³Ã¬äßMïÙR_.ns˜‚)$
?îG×�=.cœM´'ouk†L@±�yöÒ^T›Ú}�\*Á1¦¯0tšò÷yH±Ò…tg÷ý¤­‹‘4>…ÞbÑl¨u-ú‚g&óm°«A–{¾q §SR×”ï’›OQà¾‘ÃVD3Z¢6àeúPdÑç½"Daê~·7ÆÎj+Š£‰dn½b
Ú!»’‚Hñó\r
À¦üœ�Ë’ÇÍhyÂˆµ¤H\Áìr7~uˆL®€l™˜.Þñû�iéIÙá€ü)
-òÂ|šß¾Ä±“b„À\%�*TƒQ¶¬p�¯©d`}`;<ä�G¯úØÅ',°ÕŒ"ß!ó(ó/ó„‰ ‰´‰È‰Ü‰ð‰ŠŠ,Š@ŠTŠhŠ|Š�Š¬ŠÀŠÔŠðŠ‹‹,‹@‹T‹h‹|‹�‹¤‹¸‹Ô‹è‹ü‹Œ<ŒPŒdŒxŒŒŒ¨Œ¼ŒÐŒäŒ��(�<�P�d�x�Œ� �´�Ð�ì�ŽŽ(Ž<ŽPŽdŽxŽ”Ž°ŽÌŽàŽôŽ��0�D�X�l�€�”�¨�¼�Ð�ä�ø�� �4�H�d�€�”�¨�Ä�Ø�ì�‘‘(‘<‘P‘d‘x‘”‘°‘Ä‘à‘ü‘’$’8’T’p’Œ’ ’´’Ð’ä’ø’“ “4“H“\“p“Œ“ “´“È“ä“ø“” ”4”`”t”�”¤”¸”Ì”à”ô”••0•D•X•l•€•œ•°•Ä•à•ô•––0–D–X–l–€–”–¨–Ä–Ø–ì–—,—@—T—h—|—˜—¬—À—Ô—ð—˜˜,˜@˜T˜h˜|˜�˜¤˜À˜Ü˜ð˜™™,™@™T™h™„™ ™¼™Ð™ä™ø™š š4šHš\špš„š˜š¬šÀšÔšèšüš›$›8›T›p›„›˜›´›È›Ü›ð›œœ,œ@œTœhœ„œ œ´œÐœìœ��(�D�`�|���¤�À�Ô�è�ü�ž$ž8žLž`ž|ž�ž¤ž¸žÔžèžüžŸ$ŸPŸ6óÿÿÿÿXó"ÿÿÿÿŽó ÿÿÿÿµó5ÿÿÿÿñó%ÿÿÿÿô)ÿÿÿÿMô(ÿÿÿÿ|ô/ÿÿÿÿ²ôÿÿÿÿÎô'ÿÿÿÿüôÿÿÿÿ'õ-ÿÿÿÿUõÿÿÿÿsõ/ÿÿÿÿ¶õÿÿÿÿÓõ ÿÿÿÿûõ%ÿÿÿÿ8öÿÿÿÿlö*ÿÿÿÿ—ö.ÿÿÿÿÇö)1ÿÿÿÿ!÷%ÿÿÿÿG÷1ÿÿÿÿy÷
-2ÿÿÿÿµ÷"ÿÿÿÿé÷3ÿÿÿÿø3ÿÿÿÿQøÿÿÿÿxø9ÿÿÿÿÈø%ÿÿÿÿûø
-HÿÿÿÿOù
-/ÿÿÿÿ¦ù
-6ÿÿÿÿæù
->ÿÿÿÿ.ú
-0ÿÿÿÿhú
-Fÿÿÿÿ¸ú
-ÿÿÿÿúú
-+ÿÿÿÿ/û
-ÿÿÿÿWû
-"ÿÿÿÿƒû@)ÿÿÿÿòû
-/ÿÿÿÿ+ü
- ÿÿÿÿUü-ÿÿÿÿœü6ÿÿÿÿèü6ÿÿÿÿ3ý
-7ÿÿÿÿtý
-?ÿÿÿÿ½ý
-ÿÿÿÿâý4ÿÿÿÿ/þ+ÿÿÿÿgþ-ÿÿÿÿ¡þ3ÿÿÿÿÕþ
--ÿÿÿÿÿ(ÿÿÿÿHÿ
--ÿÿÿÿÿÿÿÿÿ±ÿ6ÿÿÿÿîÿ>ÿÿÿÿ3#ÿÿÿÿ^ÿÿÿÿšÿÿÿÿÖ
-2ÿÿÿÿ
-.ÿÿÿÿJFÿÿÿÿ‘
-2ÿÿÿÿÍ
-2ÿÿÿÿ	
-2ÿÿÿÿE
-2ÿÿÿÿ�
-2ÿÿÿÿ½
-2ÿÿÿÿùFÿÿÿÿ@
-9ÿÿÿÿƒ
-7ÿÿÿÿÄ
-9ÿÿÿÿFÿÿÿÿNFÿÿÿÿ•	2ÿÿÿÿÐ+ÿÿÿÿ.ÿÿÿÿ7+ÿÿÿÿi-ÿÿÿÿž0ÿÿÿÿì"ÿÿÿÿ+!ÿÿÿÿ^
-*ÿÿÿÿ”
-Aÿÿÿÿß
-dÿÿÿÿM
-$ÿÿÿÿ{1ÿÿÿÿ·1ÿÿÿÿé
-ÿÿÿÿ5ÿÿÿÿT&ÿÿÿÿˆ=ÿÿÿÿØ&ÿÿÿÿ,	+ÿÿÿÿk	ÿÿÿÿŸ	]ÿÿÿÿ
-!5ÿÿÿÿc
-Kÿÿÿÿ¯
-<"ÿÿÿÿ
$ÿÿÿÿF7
-ÿÿÿÿˆÿÿÿÿÐ;ÿÿÿÿ8?ÿÿÿÿ–ÿÿÿÿ¿2ÿÿÿÿùÿÿÿÿ*
ÿÿÿÿ\
=ÿÿÿÿ«
Iÿÿÿÿ(ÿÿÿÿLIÿÿÿÿ¯!ÿÿÿÿå!ÿÿÿÿÿÿÿÿF+ÿÿÿÿs=ÿÿÿÿ±5ÿÿÿÿç@ÿÿÿÿ,7ÿÿÿÿd-ÿÿÿÿ’ÿÿÿÿ¯-ÿÿÿÿì
-"	ÿÿÿÿ??ÿÿÿÿ€$ÿÿÿÿª30ÿÿÿÿ
.ÿÿÿÿB6ÿÿÿÿ7ÿÿÿÿ½6ÿÿÿÿú1ÿÿÿÿ2Cÿÿÿÿ|ÿÿÿÿ¢Aÿÿÿÿê(ÿÿÿÿ/5ÿÿÿÿe&ÿÿÿÿŒ8ÿÿÿÿÛ/ÿÿÿÿ#	ÿÿÿÿ7+ÿÿÿÿ~&%ÿÿÿÿÉ)	ÿÿÿÿûFÿÿÿÿCK.ÿÿÿÿ¼-ÿÿÿÿê;ÿÿÿÿ&
-<ÿÿÿÿl*ÿÿÿÿ²FÿÿÿÿùFÿÿÿÿ@ÿÿÿÿl=ÿÿÿÿÂ.ÿÿÿÿ
-`ÿÿÿÿl
-&<ÿÿÿÿÚ
-@ÿÿÿÿ$
-Bÿÿÿÿp
-5ÿÿÿÿ¯
-Eÿÿÿÿþ
-#ÿÿÿÿI
-.ÿÿÿÿ�
-&ÿÿÿÿ±
-*ÿÿÿÿå`;ÿÿÿÿ†
-9ÿÿÿÿÉ
-*ÿÿÿÿýFÿÿÿÿb@ÿÿÿÿ¸@ÿÿÿÿ
-=ÿÿÿÿZ
-Mÿÿÿÿ±
-"ÿÿÿÿÝCÿÿÿÿ=;ÿÿÿÿ†<ÿÿÿÿÑ@ÿÿÿÿ 
-0ÿÿÿÿL +ÿÿÿÿ‰ 
-4ÿÿÿÿÇ '+ÿÿÿÿ!8ÿÿÿÿX!Vÿÿÿÿµ!'ÿÿÿÿä!!ÿÿÿÿ+"!%ÿÿÿÿx"
-YÿÿÿÿÛ"
-6ÿÿÿÿ#Vÿÿÿÿr#
-2ÿÿÿÿ®#
-2ÿÿÿÿê#
-2ÿÿÿÿ&$
-2ÿÿÿÿb$
-2ÿÿÿÿž$
-2ÿÿÿÿÚ$Xÿÿÿÿ3%
-9ÿÿÿÿv%
-7ÿÿÿÿ·%
-8ÿÿÿÿù%XÿÿÿÿR&Xÿÿÿÿ«&	<ÿÿÿÿð&,ÿÿÿÿ#'0ÿÿÿÿZ'8ÿÿÿÿ™'=ÿÿÿÿÞ'@ÿÿÿÿ=('!ÿÿÿÿ…('ÿÿÿÿ¿(
-3ÿÿÿÿþ(
-Wÿÿÿÿ_)
-€ÿÿÿÿé)
-1ÿÿÿÿ$*8ÿÿÿÿg*Fÿÿÿÿ®*
-ÿÿÿÿÐ*Pÿÿÿÿ?+2ÿÿÿÿ+Hÿÿÿÿå+7.ÿÿÿÿZ,6
-ÿÿÿÿ¨,$ÿÿÿÿä,mÿÿÿÿc-!<ÿÿÿÿÁ-Yÿÿÿÿ.O-ÿÿÿÿ—.4ÿÿÿÿæ.Eÿÿÿÿ7/1ÿÿÿÿ�/!Oÿÿÿÿ0(Kÿÿÿÿ’0&ÿÿÿÿÃ05ÿÿÿÿ1#ÿÿÿÿI1!!ÿÿÿÿ‹1Rÿÿÿÿø1$_ÿÿÿÿ{25ÿÿÿÿÌ2$_ÿÿÿÿO30ÿÿÿÿ˜30ÿÿÿÿ×3$ÿÿÿÿ4:ÿÿÿÿO46 ÿÿÿÿ¥4:ÿÿÿÿà4Nÿÿÿÿ35Cÿÿÿÿw58ÿÿÿÿ°5ÿÿÿÿß5)=ÿÿÿÿE63ÿÿÿÿ®6[ÿÿÿÿ	    TLS: %pA	<corrupt: 0x%04lx>	Export Address Table 			Export Address Table 		%08lx
+Þ•q0¸3I	@gdŒ‚|Œ„Žì¦
í¦û¦§(§AG§?‰§:É§¨¨.¨$M¨3r¨
¦¨´¨%Ô¨ú¨ü¨A©&P©w©�©©©Â©Ò© ñ©ª2ªKªbªoªP‚ªÓª*ëª9«6P«;‡«Ã«FÕ«6¬6S¬:Š¬5Å¬,û¬D(­Nm­J¼­)®G1®:y®B´®L÷®)D¯Bn¯L±¯þ¯°D+°Gp°¸°×°é°ý°±*±3I±}±”±0¦±×±ç±÷±+²+=²+i²#•²¹²Ñ²Ú²ø²(³?8³>x³%·³&Ý³(´)-´GW´7Ÿ´×´î´µ+µDµ_µµ˜µ³µÉµáµõµ¶,&¶S¶c¶|¶”¶«¶º¶Ð¶å¶ÿ¶·1+·]·n·{·’·­·#Å·+é·&¸5<¸r¸‡¸Ÿ¸¹¸Ï¸é¸¹¹/¹$D¹i¹‚¹¢¹º¹$Ï¹ô¹ºº<6ºsº‚º
‘ºŸº³ºÈº àº»»,»L»h»ˆ»¡»º»Í»*à»¼¼&/¼V¼0j¼›¼"¯¼	Ò¼Ü¼#ï¼½,½=½V½"o½’½"¦½#É½#í½¾#&¾#J¾n¾{¾™¾·¾½¾Ê¾Ò¾×¾
+ô¾ÿ¾¿!
+¿ ,¿M¿R¿W¿o¿�¿¯¿´¿È¿!Í¿ï¿ÀÀ
ÀÀÀÀ!À&ÀBÀ"[À~ÀƒÀ£À·À&×ÀBþÀAÁaÁfÁkÁrÁxÁ}Á�Á–Á®ÁÂÁÉÁâÁöÁÂÂ)Â:ÂKÂcÂ	rÂ
|Â
ŠÂ
+˜Â
+£Â
+®Â
+¹Â
+ÄÂ$ÏÂ
+ôÂ#ÿÂ
+#Ã.Ã@Ã!XÃzÃ�Ã
+žÃ
©Ã	·ÃÁÃ
+ÒÃÝÃäÃüÃÄ(Ä7ÄNÄiÄxÄ‘Ä Ä§ÄÇÄ(×Ä/Å0ÅBÅ+QÅ}ÅA™ÅÛÅõÅÆ)Æ8>ÆwÆ�Æ¤Æ&¾ÆåÆÇ2Ç?RÇ&’Ç¹Ç(ØÇÈ"È7È*WÈ6‚È{¹Èr5Éx¨É!Êe7Ê7�Ê:ÕÊË?"Ë@bËU£Ë`ùËbZÌq½Ì/ÍOÍ&mÍ”Íœ®ÍDKÎ'�Î,¸Î1åÎ'Ï$?Ï/dÏ-”Ï0ÂÏ&óÏ8ÐSÐ=sÐ9±Ð:ëÐ6&Ñ6]Ñ”Ñ/´Ñ5äÑ+Ò$FÒ6kÒ"¢Ò&ÅÒ6ìÒ=#Ó:aÓ:œÓD×Ó8Ô9UÔC�Ô:ÓÔ7Õ8FÕ@ÕGÀÕ9Ö,BÖ0oÖ# ÖÄÖ=ßÖ-×6K×‚×7ž×;Ö×:Ø"MØ3pØ%¤Ø.ÊØùØ0Ù1JÙ'|Ù¤ÙEÂÙ8Ú(AÚcjÚ4ÎÚ&Û2*Û&]Ûk„Û*ðÛ4Ü]PÜ8®ÜçÜOÝbVÝ,¹Ý+æÝ)ÞY<Þ0–Þ=ÇÞ3ß29ßBlßL¯ßüß4à)Oà$yà3žà9Òà6á/CáDsá&¸áWßáU7âI�â+×â8ã%<ã(bã&‹ã,²ã#ßã>äBBäB…äÈä'èäEå9Vå4�å3ÅåJùå(Dæ;mæ©æ0ÈæDùæ.>ç9mç?§ç?çç2'è8ZèS“è'çè.é,>é'ké6“é ÊéYëé/Eê4uêNªêªùêI¤ë9îë3(ì¾\ì<í<XíF•íPÜío-î>�îFÜî`#ï~„ïFð‚Jð[Íð3)ñ@]ñMžñmìñ7Zò#’ò¶ò(Ìò&õò+ó5Hó~ó“ó8§ó"àó$ô'(ô9PôCŠô!Îô!ðô*õ/=õ1mõ/Ÿõ/Ïõ0ÿõ*0ö0[ö<ŒöiÉö=3÷Bq÷=´÷-ò÷. ø8Oø:ˆøFÃø?
+ùVJù(¡ù>Êù;	ú=Eú4ƒú#¸úLÜúI)û8sû+¬û8Øû2ü9Dü:~ü3¹ü,íüuý �ý.±ý.àýJþ0ZþB‹þ/Îþ,þþ'+ÿ%Sÿ,yÿN¦ÿõÿCJS@žJß**%U<{1¸ êl<x<µ+ò,:Hg6°AçA)Jk>¶JõJ@<‹.È(÷l v�A6F}4›0Ð+A-3o@£!ä#	.*	BY	Fœ	4ã	%
+:>
+2y
+*¬
+9×
+C(UC~:ÂTýJR5�4Ó6
/?
/o
&Ÿ
&Æ
5í
'#0K5|(²3Û%&5\'|=¤#â+32(f@�CÐ5'J,rgŸ4m<Aª@ìH-GvK¾I
+LTH¡CêY.5ˆ0¾4ïM$Nr1Á)ó)/G)w+¡7Í3699pXª[C_6£>Ú=*W.‚2±[ä&@-g,•ÂÝ/ø(($Q0v'§8Ï"A+)m=—#Õ@ù2:+m"™5¼<ò'/%W(}R¦?ùF9 3€ 1´ Dæ H+!Dt!K¹!a"sg"BÛ"‚#T¡#=ö#b4$b—$gú$gb%0Ê%(û%4$&5Y&)�&3¹&-í&/'HK'F”'7Û'G(+[($‡(2¬(.ß(/)+>))j)-”)^Â)K!*Fm*´*"Ð*ó*5+(D+Em+D³+Dø+F=,_„,^ä,"C-*f-+‘-8½-:ö-'1.;Y.8•.'Î.'ö.3/>R/-‘/,¿/ì/I0U0r0.�0/¿0ï0$1341h1F†1&Í1!ô1625M2)ƒ2­2Ç2æ2+3 ,3$M3.r3.¡3%Ð3)ö3\ 4D}4HÂ4D5LP5X�5Hö5)?6*i6 ”65µ69ë6@%7+f76’7\É7A&8.h8M—83å8=9HW9< 98Ý93:4J:4:0´:@å:1&;BX;L›;Aè;L*<8w<B°<+ó<2=<R=3�=XÃ=P>.m>`œ>&ý>P$?\u?XÒ?/+@p[@AÌ@+AK:A.†A,µA%âAB3(B2\B�B4¯BJäB?/C@oCW°C=D*FD5qD%§DBÍD%E46E>kE<ªECçEB+F;nF3ªF'ÞFGH9HKHZH!oH‘H$§HÌH1ßHVIIhII²I<üI9JLJ`JrJŒJ
 J'®JÖJ
âJðJ%K\'K;„KÀKÒKèKëKLL	.L8LJL[L,hL•L©L¿LRÛL".M+QM%}M5£M2ÙM4N/AN/qN3¡N(ÕN2þN31O+eO&‘O"¸OÛO(øO/!P/QP1�P8³P#ìP'Q28Q3kQŸQ;¯QëQòQúQRR&R.RBRWRlR~R‘R¨R¿RÜRîRS	+S5SSS	hS"rS•S§S)ÃS/íS"T@TWT`TlTpTƒT•T§T'¹TáT þT#UCU]U oU�UH®U1÷U#)V,MV@zVX»VaW:vW.±W7àW1X;JX(†X:¯X,êX-Y-EYsY2’YÅYÕYêYÿYZ),ZVZ!lZ$ŽZI³ZýZ5[P[
+e[Cp[I´[þ[\\ \
>\L\ ^\A\Á\/Ý\+
]89]r]$ˆ]!­]1Ï]^ ^+?^k^^˜^
+¥^°^BÏ^_%$_J_\_.z_-©_G×_3`S`"r`•`§`$À`å`!a$a56ala	~aˆaša°aÐaêabb'b	.b8b=bIbXbob‹b¡b³bÓbìbc c2cJc-hc–c¨cºcÎcèc'ýc%d4dFdXd_d!fdˆd:¤d%ßd%e+eADe;†eCÂe=fCDf=ˆf"Æf7éf<!g<^g)›g5Ågûghvh*–hÁh'Óhûh
iii
+*i(5i^i'pi˜iµiÍiíi#j$)j,Nj.{j,ªj.×jk"#k,Fk.sk!¢k1Äk0ök2'l,Zl.‡l#¶lÚlúl(m/7m!gm‰m(¦m#Ïm+ómn,8n en†nŸn¿nÓnón#o-6o"do‡o™o¬o¸oÍo&ßo	pFp/Wp‡pJ˜pMãp1qQqhq{q-˜qÆqÏq×qAãq>%rdrAvr7¸rBðr!3sUs˜ust*t<tNt#ct2‡t.ºt#ét
uu'u7u?u:Xu+“u#¿uãuöuv'v,?v:lv§v	¿vdÉv.w6AwMxwMÆw<xgQxb¹x<y1Yy(‹y$´yÙy/ïy+zKzgz�zžz>ºz<ùz6{4R{'‡{$¯{Ô{å{ý{|%|=|U|g|y|‹|�|·|Ò|ä|õ|
},}2K}~}'˜}LÀ}4
~7B~0z~'«~Ó~ó~-+M+y*¥	Ð	Ú
+ä
+ïú€*€9€N€]€1b€”€/´€ä€ �'$�"L�&o�0–�Ç�å�ú�‚9!‚[‚,p‚a�‚9ÿ‚)9ƒCcƒI§ƒEñƒY7„Y‘„;ë„;'…Nc…/²…5â…:†5S†4‰†9¾†7ø†90‡Dj‡G¯‡D÷‡E<ˆC‚ˆ-Æˆ4ôˆ?)‰:i‰F¤‰;ë‰F'Š9nŠ*¨Š6ÓŠ/
+‹;:‹3v‹%ª‹1Ð‹!ŒV$Œ\{ŒAØŒ1�?L�:Œ�7Ç�>ÿ�$>ŽIcŽ­Ž/ÊŽOúŽPJ�3›� Ï�?ð�:0�&k�
+’�0��%Î�"ô�%‘0=‘!n‘�‘©‘Ä‘Ù‘æ‘Oõ‘E’,d’7‘’
É’×’1æ’“,“?“R“)o“*™“,Ä“6ñ“(”$H”_m”"Í”(ð”A•[•,y•2¦•HÙ•"–2–
+C–$N–s–†–¼¦–¹c—˜//˜_˜z˜˜˜*¸˜Lã˜20™-c™)‘™"»™Þ™ñ™šš4*š_š0gš%˜š9¾šøš<
+›=G›3…›5¹›2ï›7"œBZœL�œêœûœ��%�A�HH�‘�4”�É�Ò�
+é�ô�2ž-CžOqžÁžàž"åž*Ÿ%3Ÿ YŸzŸ˜Ÿ ŸC¿Ÿ¤ ¨ µ  Ï ð ù 
¡"¡8¡N¡e¡‚¡“¡¥¡¹¡*Á¡Nì¡[;¢—¢A›¢Ý¢ü¢£1£6I£€£  £8Á£+ú£&¤9¤I¤Q¤f¤~¤’¤¦¤º¤Í¤
à¤î¤L¥ U¥v¥D•¥PÚ¥+¦=¦2X¦$‹¦°¦Ð¦5ã¦§!4§V§]§2e§F˜§,ß§/¨(<¨e¨"w¨š¨ª¨M¹¨9©;A©7}©µ©Í©ê©ù©,ª$9ªJ^ª)©ª(Óª%üª("«K«
+g«,r«Ÿ«)¹«ã«¬¬3¬;¬S¬)k¬•¬
«¬#¹¬Ý¬'õ¬­.­D­^­{­•­#¡­%Å­ë­®®1®7H®€®œ®µ®Ê®Ü®ï®¯¯-¯JC¯JŽ¯JÙ¯I$°:n°©°-È°;ö°+2±@^±<Ÿ±1Ü±8²8G²U€².Ö²>³ID³hŽ³y÷³>q´N°´Iÿ´dIµ0®µ;ßµ8¶FT¶5›¶&Ñ¶.ø¶-'·.U·0„·<µ·!ò·¸!-¸)O¸Iy¸`Ã¸.$¹,S¹h€¹Eé¹0/º6`ºk—ºE»I»&g»IŽ»#Ø»<ü»<9¼ev¼QÜ¼2.½/a½/‘½4Á½=ö½94¾0n¾7Ÿ¾'×¾=ÿ¾6=¿@t¿µ¿Õ¿,Ù¿ÐÀ
×ÁåÁ!úÁ(ÂwEÂl½Â_*ÃŠÃªÃÂÃ+âÃCÄ
RÄ)`Ä!ŠÄ¬Ä®ÄU¿Ä+ÅAÅ_Å{Å•Å"¥Å!ÈÅ$êÅÆ-ÆFÆVÆikÆÕÆ>õÆB4Ç?wÇ>·ÇöÇbÈDrÈE·ÈIýÈCGÉ5‹ÉSÁÉ\ÊWrÊ1ÊÊQüÊHNËO—ËUçË1=ÌOoÌV¿ÌÍ1ÍSNÍ[¢Í!þÍ Î5ÎIÎcÎ xÎ5™ÎÏÎäÎ=öÎ4ÏCÏSÏ,nÏ,›Ï,ÈÏ"õÏÐ0Ð9ÐYÐ0rÐP£ÐOôÐ)DÑ*nÑ.™Ñ0ÈÑdùÑK^ÒªÒÁÒáÒþÒÓ,2Ó_ÓxÓ˜Ó°ÓÌÓàÓ÷Ó3ÔEÔUÔoÔ‹Ô¨ÔºÔÐÔåÔÿÔÕ5+ÕaÕtÕ�ÕœÕ·Õ$ÑÕ+öÕ'"Ö5JÖ€Ö#•Ö¹ÖØÖðÖ×(×?×U×)j×”×­×Í×å×(ú×#Ø7ØLØ<eØ¢Ø±Ø
ÀØÎØâØ÷Ø"Ù6ÙQÙ&aÙˆÙ£ÙÃÙÜÙúÙ
Ú-!ÚOÚbÚ)uÚŸÚ2´ÚçÚ+ûÚ
+'Û2Û#EÛiÛˆÛ›ÛµÛ#ÏÛóÛ%Ü#-Ü#QÜuÜ#†Ü#ªÜÎÜ&ÝÜ&Ý+Ý1Ý=ÝEÝJÝ
+gÝrÝwÝ)}Ý3§ÝÛÝàÝåÝ#þÝ#"ÞFÞKÞhÞ4mÞ¢Þ´Þ»ÞÁÞÆÞËÞÑÞÕÞ"ÚÞ#ýÞ/!ßQß#Vßzß#‘ß4µß@êß#+àOàTàYà`àhàmàƒàŠà£àºàÁàÝàôàáá'á8áIá`á	oá
yá
‡á
+•á
+ á
+«á
+¶á
+Áá4Ìá
+â[â
+hâsâ…â,¤âÑâæâ
õâã	ãã
4ãBãIãcã€ã’ã°ã+Íãùã ä
)ä7ä#>äbä1qä:£äÞäôä:å@åG[å £åÄåßåúå;æKædæzæ:•æ,Ðæýæ7çHTç9�ç+×ç*è.è#Dè-hè*–è7Áèùèwyé{ñémê‰‡êHë?ZëšëV®ëMìsSìkÇìs3í…§í-î%Mî;sî¯îÐÍîežï8ðE=ðBƒð8Æð3ÿðF3ñ>zñB¹ñ5üñ>2ò1qòV£òRúòVMóD¤óDéó#.ô<RôJ�ôIÚô/$õYTõ0®õ4ßõ=öARö=”ö>ÒöH÷;Z÷=–÷GÔ÷=ø;Zø;–øgÒø~:ùX¹ùLúE_ú+¥ú.ÑúFûGGûM�û$Ýû@üNCüN’ü8áüDý'_ýB‡ý(Êý>óý42þ<gþ$¤þ]ÉþN'ÿ7vÿ†®ÿI53<³%ð„3›>Ï|P‹Üdü‡a6é0 +Q^}>ÜOBk@®Pï[@œJ¼-&5<\L™JæF1Qx*Êkõua	j×	<B
+D
+1Ä
+-ö
+/$4T+‰GµKýEI�7«WãJ;
H†
?Ï
~YŽQè$:>_]žBüE?X…WÞC6QzoÌ:<0w%¨)Î4ø'-pUEÆ<hIÝ²_�HðD9~CŠCÎQddŠÉJTTŸ…ôªz[%©�p+-œGÊU”h<ý-:h6‚4¹:î9)cyZ�$ê% 55 Qk U½ $!$8!1]!7�!6Ç!:þ!=9"5w"7­"5å"D#Œ`#Xí#PF$X—$=ð$D.%Bs%E¶%Tü%NQ&s &5'IJ'A”'FÖ'<(-Z(Rˆ(eÛ(DA)4†)X»)O*Zd*N¿*M+U\+¤²+'W,?,?¿,[ÿ,A[-S�-9ñ-8+.8d.6�.8Ô.h
/v/K•/Rá/S40bˆ0Së0@?1P€1CÑ1.2—D2FÜ2F#3.j3!™3>»3Jú3DE4sŠ4sþ4br5@Õ5T6bk6LÎ6;7=W7Œ•7 "8LÃ8=9(N9?w9B·9)ú9Y$:J~:]É:.';.V;C…;VÉ;] <9~<%¸<UÞ<>4=Fs=\º=Z>)r>Zœ>P÷>oH?Z¸?=@@Q@@’@FÓ@CA@^AFŸA@æA.'B5VB<ŒB8ÉB@C0CC1tC(¦C6ÏCDD1KD?}DE½D*EL.EK{EAÇE1	F4;F•pFDGqKGH½GGHONHNžHRíHK@I\ŒIféITPJl¥JQK<dK;¡K`ÝK`>L>ŸL0ÞL5MDEM;ŠMAÆMPNGYNk¡NM
Ok[OrÇOS:PlŽPJûPNFQC•QFÙQ? Rx`R,ÙR<S;CS!S ¡SBÂS3T69T8pT>©TQèT.:UQiU6»USòU(FVcoVBÓV5W-LW<zWE·W'ýW(%X3NXn‚XGñXN9YDˆY9ÍYSZW[ZS³Z_[…g[”í[Q‚\²Ô\n‡]Tö]ƒK^‹Ï^ˆ[_�ä_@u`5¶`;ì`F(a3oaI£a4ía?"bgbbfÊbW1ck‰c<õc-2dG`d9¨d6âd;e*Ue7€ev¸eS/fHƒfÌf!çf	g<#g2`gG“gFÛgF"hHiha²h`iCui7¹i7ñiG)jJqj3¼jKðjE<k2‚k6µk:ìkT'l;|l/¸l(èlcmum(“m6¼m7óm$+n2PnBƒn"Æn\én.Fo'uo;�oBÙo5p$Rp+wp&£p6Êp'q+)q4Uq5Šq,Àq*íqsrbŒrcïrPSsT¤ssùs^mt5Ìt3u*6uOauB±uLôu1AvPsvrÄv[7w?“wpÓwEDxSŠx]ÞxF<yKƒyWÏyA'zIizA³zWõz5M{@ƒ{MÄ{A|LT|=¡|_ß|K?}L‹}VØ}C/~zs~eî~ATy–0€{A€d½€`"�Eƒ�ƒÉ�NM‚5œ‚OÒ‚0"ƒ<Sƒ<�ƒ%ÍƒJóƒ@>„-„?­„Ní„E<…C‚…iÆ…Q0†0‚†M³†;‡I=‡6‡‡>¾‡^ý‡c\ˆmÀˆc.‰Y’‰Cì‰.0Šn_Š*Î‹ù‹

ŒŒ21Œ#dŒ6ˆŒ¿Œ8ÓŒi�Yv�]Ð�Q.Ž€Ž—Ž¬Ž¾ŽÛŽôŽ'�+�
<�J�$Z�i�>é�(�&?�f� i�Š� �	º�Ä�Ö�è�7õ�-‘C‘#]‘k�‘"í‘4’-E’Fs’9º’>ô’?3“?s“T³“/”58”6n”1¥”5×”"
•'0•<X•6••FÌ•C–OW–0§–1Ø–>
+—BI—Œ—A —â—ë—ô—
˜!˜*˜3˜G˜\˜p˜‚˜•˜­˜Å˜ä˜(ø˜'!™
+I™"T™w™	”™*ž™É™!Û™(ý™0&š,Wš&„š	«šµšÉšÍšæšøš
+›0›M›)l›+–›Â›Þ›,õ›&"œKIœ<•œ-Òœ5�M6�u„�vú�Dqž4¶ž:ëž<&Ÿ_cŸ1ÃŸJõŸC@ L„ 8Ñ %
+¡70¡h¡~¡™¡%·¡Ý¡6ó¡*¢"E¢&h¢M�¢#Ý¢B£D£a£Jq£V¼£¤%¤-¤5¤
S¤a¤)s¤c�¤#¥?%¥4e¥Dš¥ß¥>ü¥;;¦:w¦'²¦'Ú¦M§P§p§Š§
+š§2¥§TØ§-¨"?¨b¨$t¨@™¨1Ú¨Q©<^©/›©4Ë©ªª$0ª*Uª*€ª«ªH½ª««*«<«T«s«%‘«·«È«Ú«á«ê«ð«ÿ«¬!&¬H¬_¬s¬’¬®¬Í¬ç¬ü¬!­99­s­‡­œ­´­Ô­8ó­,®<®N®`®g®*n®!™®=»®-ù®,'¯#T¯Ox¯[È¯R$°Rw°XÊ°A#±:e±@ ±Há±H*²2s²A¦²	è²!ò²™³7®³æ³0ø³)´;´B´I´[´8n´§´3¹´í´
+µ"µAµ"Xµ#{µ3Ÿµ/Óµ3¶/7¶g¶#†¶3ª¶/Þ¶%·54·=j·9¨·3â·/¸$F¸ k¸Œ¸+¢¸1Î¸!¹"¹)A¹$k¹3�¹Ä¹7Þ¹!º8º!Rºtº#ˆº$¬º(Ñº3úº&.»U»g»„»—»¶»6Ë»¼\¼2e¼˜¼kª¼s½(Š½³½Ì½#è½0¾=¾F¾N¾OZ¾Iª¾ô¾[¿Hb¿Z«¿0À17À»iÀ'%ÁMÁ_ÁqÁ5‰Á2¿Á=òÁQ0Â‚Â�ÂœÂ®Â¶ÂAÖÂ>Ã.WÃ†ÃŸÃºÃÒÃ6ìÃK#Ä!oÄ‘Äu¡ÄÅB*ÅYmÅYÇÅ;!Æt]ÆoÒÆABÇ2„Ç)·Ç'áÇ	È="È=`ÈžÈ¾È7ÝÈ5ÉYKÉR¥É&øÉSÊGsÊ@»ÊüÊË+ËFË"XË{Ë˜Ë«Ë¾ËÑËäËÌ"Ì5Ì"GÌ6jÌ7¡Ì6ÙÌÍ3.ÍbbÍGÅÍD
Î=RÎ:�Î'ËÎóÎÏ>'Ï<fÏ<£Ï<àÏ	Ð	'Ð
+1Ð
+<ÐGÐ ^ÐÐŽÐ£Ð²Ð4·Ð'ìÐ>ÑSÑ!pÑ8’Ñ3ËÑCÿÑ7CÒ*{Ò$¦ÒËÒ#ÞÒ@Ó#CÓGgÓƒ¯ÓG3Ô*{ÔH¦ÔKïÔf;Õ|¢Õ|ÖSœÖPðÖqA×@³×Hô×Q=Ø<�ØSÌØp ÙN‘ÙpàÙUQÚf§Ú]ÛZlÛ\ÇÛB$ÜIgÜP±ÜQÝTTÝK©ÝfõÝH\Þ1¥ÞT×Þ3,ß<`ß6�ß&Ôß2ûß,.à…[àuáà\Wá8´á^íáILâH–âLßâ&,ãPSã,¤ã2ÑãbäYgä1Áä$óäDå?]å9�å×å>ãå3"æ4Væ4‹æYÀæ,çGç`ç~ç�ç¯çtÀç&5è0\èD�èÒèáè;ñè-éAéTégé=„éHÂé5êCAê!…ê&§êyÎêHë*dëR�ëâë5ì:8ìNsìÂìÒìãì0ïì í$3íéXíÝBî ï44ï"iï$Œï/±ï9áï_ðC{ð6¿ð6öð--ñ[ñrñˆñŸñb¬ñ	ò9òESò9™òÓò@çòL(óGuó[½óHôFbôS©ô]ýô[õ(nõ—õ¦õ²õÎõoÔõDöMHö–ö£ö
ÁöÏöEêö>0÷mo÷(Ý÷ø(ø;5ø2qø@¤øFåø,ù%8ùp^ùÁÏù‘ú�ú:½ú	øúûû.ûFû^ûwû–û¨û»ûÒûBÛûYüsxüìüXðüIý"gýŠýªýIÃý&
þ-4þCbþM¦þôþ
ÿ$ÿ0ÿHÿ]ÿpÿ„ÿ˜ÿ«ÿ¾ÿ$Íÿ�òÿ#t*˜SÃay"Œ2¯/â+>_V¶=ÖG%\m9Ê?4Dy+‘½ÍSÜB05sH©ò0@DT<™WÖ=.8l5¥;Û":8G€4�%Ò$ø	9	A	[	5u	«	Ã	;Ó	
+6-
+d
+|
+™
+#µ
+Ù
+ô
+"8##\€Ÿ»AÖ"#;_t†™­Á×`í]N
Y¬
\Mc±2ÑI<NO‹HÛ9$A^A mâCPN”\ãŒ@žÍOlb¼]~}9üA6AxTºF/V;†/Â6ò2)@\/�Í(è2YD{ž86SuŠVFWJžzé^d/Ã-ón!0�IÁIUfÕA<1~=°NîN=GŒFÔK 2g ^š Vù jP!#»!ß!-ã!ðÄþ˜×až)¸¬Ñµa-š‹ð±Â¥¹ß™þ=Šˆ[aá][îW˜)Õ��»ÒôyWÚ.êàÒ4°¥š´B[ÒEN�zŸ—ûß0Ô¿
Øï3æ…~çÖ®àZCÑØö®’6þNtó„þ°ý±ïºæ¯[iKƒìuÝÉìá›Å®!�V¯z1Aúañmó.RÜâRüG¢?�c8ƒííñu
+ÂaL€Z“`#qËï c0NË®`³Î&Fx„—\ÿ‹j¼èÕf‹=Ú;p„)KÉVmòƒûý¿KùQ>FAµ(ÍÂ/ƒ5–·<
+ü_-…‰&@èíØ¾Ç·‡hÎkk¶Ï]w£ K§Iîßéäk�Kä� sDzç1‡Y×dëZ“ÚCyÌÐZž…qVÚ+{ÄŽÙ$T¬ð1q@›Â©e¬ðîeñõ”Wg²–Å”–0³	¯¬‘“ƒgÿ¤ÃýJûi±@€0*!�qÿí'Üá	•Š÷FxC<ÂnAÐKcd•%gLpÉ˜r3NÛê$â°Ú
+Ô¡Hùµ@jÅ2nœX8‡{ÝÏcÈ™Y¹Ä¥âYüQWÛ–�eB'=ÀÐÖ”vï£é­…ŽPh¯DÌQ»ÀL3u‡/Ýbý×Ï¼n«²nk}¾‰ H¥ø;/êB9q;ÉIRa(Í”
+ðÇêôVý°½¦I¦¿Óe7T½ÛeófÉþÓD¼Mc,ÁÓ¼Œ]§º#6ort"$1àãO
+/%ŸOXÖ'_§ooú\¹ÓTo3Dö]ò�<÷yd.9{p9¨×?Pˆ^m¶=ÊŒ.q7|î+¸¥Ì¸#@HbCÙ�ÕF)\çšáv-�Ù•Ô*†Äá»“È“¾c#¤Mì&«‰!X>f€ƒõs’OEyç†‰ÊlçmŸ�æ¦â]ôánB»¨2�ŒIà;Êçäå	’>Þåû"¤¦|?7ílì‹}ZœU:E�Tq?�|ä»0ljk•F,Ó':œ‹Uy-Oìñ^|VÎã¢*”{E½éõÂ�SyÔÇÆ0Ž°MwI§ÆrI^Q44ªÖöX]Æf”&'<�’c;x¢¶<¾ÙÃ4‰/~R3±N7Ð‘OÕÁÃÆÔò52òØù³OoV%îòÆ5ü)s+€Q¥ûfRõsŒö, (ˆ§8è‚˜,U 2`Ãž�YËL:ÞJó¸€ÇH3$}d¨�ÉD´ãå6VÄ-™%£±ÜŸ·X£ÑÒ¬Ã÷ÀÛÌˆã*"÷i>¹/ØI¨ŠÌ~£(ÏwP[$?(~×¸èÏ¦U«:Szv%bm³_ó•~Y¼CšSôSë•Ê{ŒS«Mg¹‹H†Ä½pv›åºü&*âò`4iXµ.x¤1×tô¶ñ07—Åx�l»ˆ÷W&
+ÞnÑª¡¾$eB-55¡ÍRAj9¡UCÎå1´~ö¸,uB€\oŸ™^__, AÎZ£}†HrÑ²U—„› ;F�ìÐ%ŠÛ*4N#˜lG·ª_Ÿ,‘:
ÀüÌÍd}LãD{hEªhÛëÞÿœÀW&nù9­¶­ÚAêXv68*LhJrRèg]œ1.øÆ‘ïý¢ºG�þ`œ"� :mTÞ„éðÁ;p�Å)Ùt…–Ü|bºû�Î¢˜ÿ$hlzŽxÜ­Ò6ø´ÀÇ6sîJ=ñ‚µózèZrP95SØújõ¯`CÍw\Š_›—ˆd(‘U¢‚½mpÍâWÿ³¨t‚³8²­>å[�g<ÐÊ^MSäj.äö­’µbšFÁGÖùø°NP=w+í¶92!¿«(Gæ‚±^k?ž Êé#¡ïÞ™/	©‚bß7!õŠQvº¾i‘†?h©+·«†Å
<AË"4™“uP"kGã
OÔ´!|8éfÙMÝ:ú¿YÝªÈßžMfŽ'›@@Ë ž[JD!²\à>`wª²Ó uæ¨¦…o	®�´ŒÈ¿KŽ\e^#J"ëløH}¤7Çëad
§’–š¤ù3¹æBTÁ+Õ�—E¼-‡stÕYP÷Ü©Ã¡Q)5‰b½‡ê©ß6·Á	%È'©
8„ôJÒ=+>
 Lg¯Ý®úëúÏÈpÑË�Ti2
+2Ö	Gøijà¬E"""Œ�¨�¼�Ð�ä�ø�‘ ‘4‘H‘\‘p‘„‘˜‘´‘È‘ä‘ø‘’ ’4’H’\’p’„’˜’¬’È’Ü’ð’“0“L“`“t“ˆ“œ“¸“Ì“à“ô“”$”8”L”`”t”ˆ”œ”°”Ä”à”ü”•$•H•\•p•„•˜•¬•À•Ü•ø•–(–<–P–d–x–Œ– –´–È–Ü–ð–——,—@—T—h—|—�—¬—È—Ü—ð—˜ ˜4˜H˜\˜p˜„˜˜˜¬˜À˜Ü˜ø˜™(™D™X™l™€™œ™¸™Ô™è™ü™š,š@šTšhš|š�š¤š¸šÔšèšüš›,›@›T›h›|›¨›¼›Ø›ì›œœ(œ<œPœdœxœŒœ œ´œÈœäœøœ�(�<�P�d�x�Œ� �´�È�Ü�ø�ž ž<ž`ž|ž�ž¤ž¸žÌžèžüžŸ$Ÿ@ŸTŸhŸ|Ÿ�Ÿ¤Ÿ¸ŸÌŸàŸôŸ , @ T x Œ   ´ È Ü ð ¡(¡D¡X¡l¡€¡”¡¨¡¼¡Ð¡ä¡ø¡¢ ¢4¢H¢\¢p¢„¢˜¢¬¢À¢Ü¢ø¢£ £<£P£d£x£Œ£ £´£È£Ü£ð£¤(¤<¤X¤t¤ˆ¤œ¤°¤Ì¤è¤¥¥,¥H¥\¥p¥„¥˜¥¬¥À¥Ô¥è¥¦¦,¦@¦\¦p¦„¦˜¦¬¦Ø¦&"ÿÿÿÿH""ÿÿÿÿ~" ÿÿÿÿ¥"5ÿÿÿÿá"%ÿÿÿÿ
#)ÿÿÿÿ=#(ÿÿÿÿl#/ÿÿÿÿ¢#ÿÿÿÿ¾#'ÿÿÿÿì#-ÿÿÿÿ$ÿÿÿÿ7$ÿÿÿÿb$ $ÿÿÿÿ®$ ÿÿÿÿÖ$%ÿÿÿÿ%ÿÿÿÿG%*ÿÿÿÿr%.ÿÿÿÿ¢%)1ÿÿÿÿü%%ÿÿÿÿ"&9ÿÿÿÿ\&1ÿÿÿÿŽ&
+2ÿÿÿÿÊ&"ÿÿÿÿþ&3ÿÿÿÿ2'ÿÿÿÿY'9ÿÿÿÿ©'%ÿÿÿÿÜ'
+Hÿÿÿÿ0(
+/ÿÿÿÿ‡()ÿÿÿÿÈ(
+6ÿÿÿÿ)
+>ÿÿÿÿP)
+0ÿÿÿÿŠ)
+FÿÿÿÿÚ)
+ÿÿÿÿ*
++ÿÿÿÿQ*
+ÿÿÿÿy*
+"ÿÿÿÿ¥*@)ÿÿÿÿ+
+/ÿÿÿÿM+
+ ÿÿÿÿw+-ÿÿÿÿ¾+6ÿÿÿÿ
+,6ÿÿÿÿU,
+7ÿÿÿÿ–,
+?ÿÿÿÿß,
+ÿÿÿÿ-4ÿÿÿÿQ-+ÿÿÿÿ‰--ÿÿÿÿÃ-3ÿÿÿÿ÷-0ÿÿÿÿ>. 0ÿÿÿÿ¾.
+-ÿÿÿÿõ.(ÿÿÿÿ1/
+-ÿÿÿÿh/ÿÿÿÿš/6ÿÿÿÿ×/>ÿÿÿÿ0#ÿÿÿÿG0ÿÿÿÿƒ0ÿÿÿÿ¿0
+2ÿÿÿÿû0
+.ÿÿÿÿ31Fÿÿÿÿz1
+2ÿÿÿÿ¶1
+2ÿÿÿÿò1
+2ÿÿÿÿ.2
+2ÿÿÿÿj2
+2ÿÿÿÿ¦2
+2ÿÿÿÿâ2Fÿÿÿÿ)3
+9ÿÿÿÿl3
+7ÿÿÿÿ­3
+9ÿÿÿÿð3Fÿÿÿÿ74Fÿÿÿÿ~4	2ÿÿÿÿ¹4+ÿÿÿÿë4.ÿÿÿÿ 5+ÿÿÿÿR5-ÿÿÿÿ‡50ÿÿÿÿÕ5"ÿÿÿÿ6!ÿÿÿÿG6
+*ÿÿÿÿ}6
+AÿÿÿÿÈ6
+dÿÿÿÿ67
+$ÿÿÿÿd71ÿÿÿÿ 71ÿÿÿÿÒ7
+ÿÿÿÿï75ÿÿÿÿ=8&ÿÿÿÿq8=ÿÿÿÿÁ8&ÿÿÿÿ9+ÿÿÿÿT9ÿÿÿÿˆ9]ÿÿÿÿõ9!5ÿÿÿÿL:Kÿÿÿÿ˜:<"ÿÿÿÿö:$ÿÿÿÿ/;7
+ÿÿÿÿq;ÿÿÿÿ¹;;ÿÿÿÿ!<?ÿÿÿÿ<ÿÿÿÿ¨<2ÿÿÿÿâ<ÿÿÿÿ=ÿÿÿÿE==ÿÿÿÿ”=Iÿÿÿÿ÷=(ÿÿÿÿ5>Iÿÿÿÿ˜>!ÿÿÿÿÎ>!ÿÿÿÿþ>ÿÿÿÿ/?+ÿÿÿÿ\?=ÿÿÿÿš?5ÿÿÿÿÐ?@ÿÿÿÿ@7ÿÿÿÿM@-ÿÿÿÿ{@ÿÿÿÿ˜@-ÿÿÿÿÕ@
+"	ÿÿÿÿ(A?ÿÿÿÿiA$ÿÿÿÿ“A30ÿÿÿÿöA.ÿÿÿÿ+B6ÿÿÿÿhB7ÿÿÿÿ¦B6ÿÿÿÿãB1ÿÿÿÿCCÿÿÿÿeCÿÿÿÿ‹CAÿÿÿÿÓC5ÿÿÿÿ	D/ÿÿÿÿ9D(ÿÿÿÿ~D,5	ÿÿÿÿèD#	ÿÿÿÿE+ÿÿÿÿ[E&%ÿÿÿÿ¦E)	ÿÿÿÿØEFÿÿÿÿ FK.ÿÿÿÿ™F-ÿÿÿÿÇFKÿÿÿÿG;ÿÿÿÿOG
+<ÿÿÿÿ•G*ÿÿÿÿÛGFÿÿÿÿ"HÿÿÿÿNH=ÿÿÿÿ¤H.ÿÿÿÿâH
+`ÿÿÿÿNI
+&<ÿÿÿÿ¼I6ÿÿÿÿJ
+@ÿÿÿÿUJ
+Bÿÿÿÿ¡J
+5ÿÿÿÿàJ
+Eÿÿÿÿ/K
+#ÿÿÿÿzK
+.ÿÿÿÿ²K
+&ÿÿÿÿâK
+*ÿÿÿÿL`;ÿÿÿÿ·L
+9ÿÿÿÿúL
+*ÿÿÿÿ.MFÿÿÿÿ“M@ÿÿÿÿéM@ÿÿÿÿDN
+=ÿÿÿÿ‹N
+MÿÿÿÿâN
+"ÿÿÿÿOCÿÿÿÿnO;ÿÿÿÿ·O<ÿÿÿÿP@ÿÿÿÿCP7ÿÿÿÿ™P "9ÿÿÿÿ%Q
+0ÿÿÿÿ_Q+ÿÿÿÿœQ
+4ÿÿÿÿÚQ'+ÿÿÿÿ,R8ÿÿÿÿkRVÿÿÿÿÈR'ÿÿÿÿ÷R!ÿÿÿÿ>S!%ÿÿÿÿ‹S
+YÿÿÿÿîS
+6ÿÿÿÿ.TVÿÿÿÿ…T
+2ÿÿÿÿÁT
+2ÿÿÿÿýT
+2ÿÿÿÿ9U
+2ÿÿÿÿuU
+2ÿÿÿÿ±U
+2ÿÿÿÿíUXÿÿÿÿFV
+9ÿÿÿÿ‰V
+7ÿÿÿÿÊV
+8ÿÿÿÿWXÿÿÿÿeWXÿÿÿÿ¾W	<ÿÿÿÿX,ÿÿÿÿ6X0ÿÿÿÿmX8ÿÿÿÿ¬X=ÿÿÿÿñX@ÿÿÿÿPY'!ÿÿÿÿ˜Y'ÿÿÿÿÒY
+3ÿÿÿÿZ
+WÿÿÿÿrZ
+€ÿÿÿÿüZ
+1ÿÿÿÿ7[8ÿÿÿÿz[FÿÿÿÿÁ[
+ÿÿÿÿã[PÿÿÿÿR\2ÿÿÿÿ’\Hÿÿÿÿø\7.ÿÿÿÿm]6
+ÿÿÿÿ»]$ÿÿÿÿ÷]mÿÿÿÿv^!<ÿÿÿÿÔ^Yÿÿÿÿ._O-ÿÿÿÿª_4ÿÿÿÿù_EÿÿÿÿJ`1ÿÿÿÿ°`!Oÿÿÿÿ2a(Kÿÿÿÿ¥a&ÿÿÿÿÖa5ÿÿÿÿb#ÿÿÿÿ\b!!ÿÿÿÿžbRÿÿÿÿc$_ÿÿÿÿŽc5ÿÿÿÿßc$_ÿÿÿÿbd0ÿÿÿÿ«d0ÿÿÿÿêd$ÿÿÿÿ&e:ÿÿÿÿbe6 ÿÿÿÿ¸e:ÿÿÿÿóeNÿÿÿÿFfCÿÿÿÿŠf8ÿÿÿÿÃfÿÿÿÿòf)=ÿÿÿÿXg3ÿÿÿÿÁg[ÿÿÿÿ	    TLS: %pA	<corrupt: 0x%04lx>	Export Address Table 			Export Address Table 		%08lx
 	Invalid Export Address Table rva (0x%lx) or entry count (0x%lx)
 	Invalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)
 	Invalid Ordinal Table rva (0x%lx) or entry count (0x%lx)
@@ -326,19 +324,7 @@ ppcboot header:
   EGSD (len=%u):
   EGSD entry %2u (type: %u, len: %u):   EMH %u (len=%u):   base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x   base_va : 0x%08x
   bitcount: %u, base addr: 0x%08x
-  branch         %lu
-  branch toc adj %lu
-  branch notoc   %lu
-  branch both    %lu
-  long branch    %lu
-  long toc adj   %lu
-  long notoc     %lu
-  long both      %lu
-  plt call       %lu
-  plt call save  %lu
-  plt call notoc %lu
-  plt call both  %lu
-  global entry   %lu  calls:
+  calls:
   chgprtoff : %5u
   codeadroff: %5u, lpfixoff  : %5u
   fixuplnk: 0x%08x %08x
@@ -395,8 +381,15 @@ ppcboot header:
      		Address  Length   Length   32b exc  Handler   Data
  vma:            Hint    Time      Forward  DLL       First
                  Table   Stamp     Chain    Name      Thunk
-#<invalid error code>%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d
+#<invalid error code>%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC
+%%X%%P: unresolvable %s relocation against symbol `%s'
+%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d
 %03x %*.s Entry: %C: warning: relocation to "%s" references a different segment
+%F%P: %pB(%pA): error: need linked-to section for --gc-sections
+%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.
+%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%F%P: Could not assign group %pA target %pA to an output section. Retry without --enable-non-contiguous-regions.
 %F%P: already_linked_table: %E
 %F%P: auto overlay error: %E
 %F%P: can not build overlay stubs: %E
@@ -445,23 +438,22 @@ ppcboot header:
 %H: error: %s against `%s' not a multiple of %u
 %H: error: %s not a multiple of %u
 %H: fixup branch overflow
+%H: got/toc optimization is not supported for %s instruction
 %H: non-zero addend on %s reloc against `%s'
 %H: reloc against `%s' references a different segment
 %H: reloc against `%s': %s
 %H: relocation %s for indirect function %s unsupported
 %H: relocation references symbol not defined in the module
 %H: relocation to `%s+%v' may have caused the error above
-%H: toc optimization is not supported for %s instruction
 %H: unresolvable %s against `%pT'
 %H: unresolvable %s relocation against symbol `%s'
 %H: warning: %s unexpected insn %#x.
 %P%F: --relax and -r may not be used together
 %P%X: can not read symbols: %E
-%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC
 %P%X: read-only segment has dynamic relocations
-%P: %H: %s relocation unsupported for bss-plt
 %P: %H: error: %s with unexpected instruction %x
 %P: %pB: %s is not supported for `%pT'
+%P: %pB: warning: missing %s
 %P: %pB: warning: relocation against `%s' in read-only section `%pA'
 %P: %pB: warning: relocation in read-only section `%pA'
 %P: cannot find opd entry toc for `%pT'
@@ -470,7 +462,9 @@ ppcboot header:
 %P: linkage table error against `%pT'
 %P: multiple entry points: in modules %pB and %pB
 %P: relocatable link is not supported
-%P: warning: creating a DT_TEXTREL in a shared object
+%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s
+%P: warning: creating DT_TEXTREL in a PIE
+%P: warning: creating DT_TEXTREL in a shared object
 %P: warning: text relocations and GNU indirect functions may result in a segfault at runtime
 %X%C: relocation to "%s" references a different segment
 %X%H: @local call to ifunc %s
@@ -480,10 +474,14 @@ ppcboot header:
 %X%H: unsupported branch between ISA modes
 %X%H: unsupported bss-plt -fPIC ifunc %s
 %X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled
+%X%P: %H: %s relocation unsupported for bss-plt
 %X%P: %pB(%pA): error: relocation for offset %V has no value
 %X%P: %pB(%pA): relocation "%pR" goes out of range
 %X%P: %pB(%pA): relocation "%pR" is not supported
 %X%P: %pB(%pA): relocation "%pR" returns an unrecognized value %x
+%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation
+%X%P: %pB: error: missing %s
+%X%P: attempted static link of dynamic object `%pB'
 %X%P: internal error: out of range error
 %X%P: internal error: unknown error
 %X%P: internal error: unsupported relocation error
@@ -496,17 +494,17 @@ ppcboot header:
 %X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB
 %pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections%pA has both ordered and unordered sections%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)
 %pA:0x%v not found in function table
-%pB (%s): section flag %s (%#lx) ignored%pB .opd not allowed in ABI version %d%pB and %pB are for different configurations%pB and %pB are for different cores%pB contains CRIS v32 code, incompatible with previous objects%pB contains non-CRIS-v32 code, incompatible with previous objects%pB has both the current and legacy Tag_MPextension_use attributes%pB is not allowed to define %s%pB section %pA exceeds stub group size%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section%pB uses 64-bit long double, %pB uses 128-bit long double%pB uses AltiVec vector ABI, %pB uses SPE vector ABI%pB uses IBM long double, %pB uses IEEE long double%pB uses double-precision hard float, %pB uses single-precision hard float%pB uses hard float, %pB uses soft float%pB uses r3/r4 for small structure returns, %pB uses memory%pB uses unknown e_flags 0x%lx%pB(%pA): error: call to undefined function '%s'%pB(%pA): internal error: dangerous relocation%pB(%pA): internal error: out of range error%pB(%pA): internal error: unknown error%pB(%pA): internal error: unsupported relocation error%pB(%pA): invalid property table%pB(%pA): multiple TLS models are not supported%pB(%pA): relocation %d has invalid symbol index %ld%pB(%pA): shared library symbol %s encountered whilst performing a static link%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction%pB(%pA): warning: unaligned access to symbol '%s' in the small data area%pB(%pA): warning: unaligned small data access of type %d%pB(%pA+%#lx): stabs entry has invalid string index%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete
+%pB (%s): section flag %s (%#lx) ignored%pB .opd not allowed in ABI version %d%pB and %pB are for different configurations%pB and %pB are for different cores%pB contains CRIS v32 code, incompatible with previous objects%pB contains non-CRIS-v32 code, incompatible with previous objects%pB has both the current and legacy Tag_MPextension_use attributes%pB is not allowed to define %s%pB section %pA exceeds stub group size%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section%pB uses 64-bit long double, %pB uses 128-bit long double%pB uses AltiVec vector ABI, %pB uses SPE vector ABI%pB uses IBM long double, %pB uses IEEE long double%pB uses double-precision hard float, %pB uses single-precision hard float%pB uses hard float, %pB uses soft float%pB uses r3/r4 for small structure returns, %pB uses memory%pB uses unknown e_flags 0x%lx%pB(%pA): error: call to undefined function '%s'%pB(%pA): error: internal relocs missing for secondary reloc section%pB(%pA): error: reloc table entry %u is empty%pB(%pA): error: secondary reloc %u is of an unknown type%pB(%pA): error: secondary reloc %u references a deleted symbol%pB(%pA): error: secondary reloc %u references a missing symbol%pB(%pA): error: secondary reloc section is empty!%pB(%pA): error: secondary reloc section processed twice%pB(%pA): info section index cannot be set because the section is not in the output%pB(%pA): info section index is invalid%pB(%pA): internal error: dangerous relocation%pB(%pA): internal error: out of range error%pB(%pA): internal error: unknown error%pB(%pA): internal error: unsupported relocation error%pB(%pA): invalid property table%pB(%pA): link section cannot be set because the output file does not have a symbol table%pB(%pA): multiple TLS models are not supported%pB(%pA): relocation %d has invalid symbol index %ld%pB(%pA): shared library symbol %s encountered whilst performing a static link%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction%pB(%pA): warning: unaligned access to symbol '%s' in the small data area%pB(%pA): warning: unaligned small data access of type %d%pB(%pA+%#lx): stabs entry has invalid string index%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete
 %pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s%pB, section %pA:
-  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC%pB, section %pA: no PLT for relocation %s against symbol `%s'%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for global symbol: `%s'%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC%pB, section %pA: relocation %s with no GOT created%pB, section %pA: unresolvable relocation %s against symbol `%s'%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC%pB: !samegp reloc against symbol without .prologue: %s%pB: %pA invalid input section size%pB: %pA not in order%pB: %pA points past end of text section%pB: %pA: reloc overflow: %#x > 0xffff%pB: %s flag mismatch with previous modules%pB: %s not absolute%pB: %s unsupported%pB: %s' accessed both as normal and thread local symbol%pB: %s: invalid needed version %d%pB: %s: invalid version %u (max %d)%pB: %s: reloc overflow: 0x%lx > 0xffff%pB: '%s' accessed both as normal and thread local symbol%pB: --in-implib only supported for Secure Gateway import libraries%pB: .gnu.version_d invalid entry%pB: .gnu.version_r invalid entry%pB: .got subsegment exceeds 64K (size %d)%pB: .opd is not a regular array of opd entries%pB: .preinit_array section is not allowed in DSO%pB: .rsrc merge failure: corrupt .rsrc section%pB: .rsrc merge failure: unexpected .rsrc size%pB: @gprel relocation against dynamic symbol %s%pB: @internal branch to dynamic symbol %s%pB: @pcrel relocation against dynamic symbol %s%pB: ABI is incompatible with that of the selected emulation%pB: ABI is incompatible with that of the selected emulation:
-  target emulation `%s' does not match `%s'%pB: ABI mismatch: linking %s module with previous %s modules%pB: ABI version %ld is not compatible with ABI version %ld output%pB: ASE mismatch: linking %s module with previous %s modules%pB: BE8 images only valid in big-endian mode%pB: Cannot handle relocation value size of %d%pB: Function descriptor relocation with non-zero addend%pB: GNU_MBIN section `%pA' has invalid sh_info field: %d%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d%pB: GOT overflow: number of relocations with 8-bit offset > %d%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections%pB: TLS local exec code cannot be linked into shared objects%pB: TLS sections are not adjacent:%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: XCOFF shared object when not producing XCOFF output%pB: __gp does not cover short data segment%pB: `%s' accessed both as FDPIC and thread local symbol%pB: `%s' accessed both as normal and FDPIC symbol%pB: `%s' accessed both as normal and thread local symbol%pB: `%s' and its special symbol are in different sections%pB: `%s' has line numbers but no enclosing section%pB: `%s' in loader reloc but not loader sym%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)%pB: absent standard symbol `%s'%pB: addend should be zero for got relocations%pB: addend should be zero for plt relocations%pB: aout header specifies an invalid number of data-directory entries: %ld%pB: architecture mismatch with previous modules%pB: attempt to load strings from a non-string section (number %d)%pB: attempt to mix FDPIC and non-FDPIC objects%pB: attempt to write out unknown reloc type%pB: bad relocation record imported: %d%pB: bad relocation section name `%s'%pB: bad section length in ihex_read_section%pB: bad symbol definition: `Main' set to %s rather than the start address %s
+  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC%pB, section %pA: no PLT for relocation %s against symbol `%s'%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for global symbol: `%s'%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC%pB, section %pA: relocation %s with no GOT created%pB, section %pA: unresolvable relocation %s against symbol `%s'%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC%pB: !samegp reloc against symbol without .prologue: %s%pB: %pA invalid input section size%pB: %pA not in order%pB: %pA points past end of text section%pB: %pA: reloc overflow: %#x > 0xffff%pB: %s flag mismatch with previous modules%pB: %s local symbol at index %lu (>= sh_info of %lu)%pB: %s not absolute%pB: %s unsupported%pB: %s' accessed both as normal and thread local symbol%pB: %s: invalid needed version %d%pB: %s: invalid version %u (max %d)%pB: %s: reloc overflow: 0x%lx > 0xffff%pB: '%s' accessed both as normal and thread local symbol%pB: --in-implib only supported for Secure Gateway import libraries%pB: .gnu.version_d invalid entry%pB: .gnu.version_r invalid entry%pB: .got subsegment exceeds 64K (size %d)%pB: .opd is not a regular array of opd entries%pB: .preinit_array section is not allowed in DSO%pB: .rsrc merge failure: corrupt .rsrc section%pB: .rsrc merge failure: unexpected .rsrc size%pB: @gprel relocation against dynamic symbol %s%pB: @internal branch to dynamic symbol %s%pB: @pcrel relocation against dynamic symbol %s%pB: ABI is incompatible with that of the selected emulation%pB: ABI is incompatible with that of the selected emulation:
+  target emulation `%s' does not match `%s'%pB: ABI mismatch: linking %s module with previous %s modules%pB: ABI version %ld is not compatible with ABI version %ld output%pB: ASE mismatch: linking %s module with previous %s modules%pB: BE8 images only valid in big-endian mode%pB: Cannot handle relocation value size of %d%pB: Function descriptor relocation with non-zero addend%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d%pB: GOT overflow: number of relocations with 8-bit offset > %d%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections%pB: TLS local exec code cannot be linked into shared objects%pB: TLS relocation %s against undefined symbol `%s'%pB: TLS sections are not adjacent:%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead.%pB: XCOFF shared object when not producing XCOFF output%pB: __gp does not cover short data segment%pB: `%s' accessed both as FDPIC and thread local symbol%pB: `%s' accessed both as normal and FDPIC symbol%pB: `%s' accessed both as normal and thread local symbol%pB: `%s' and its special symbol are in different sections%pB: `%s' has line numbers but no enclosing section%pB: `%s' in loader reloc but not loader sym%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)%pB: absent standard symbol `%s'%pB: addend should be zero for got relocations%pB: addend should be zero for plt relocations%pB: aout header specifies an invalid number of data-directory entries: %u%pB: architecture mismatch with previous modules%pB: attempt to load strings from a non-string section (number %d)%pB: attempt to mix FDPIC and non-FDPIC objects%pB: attempt to write out unknown reloc type%pB: bad relocation record imported: %d%pB: bad relocation section name `%s'%pB: bad section length in ihex_read_section%pB: bad symbol definition: `Main' set to %s rather than the start address %s
 %pB: bad symbol index: %d%pB: base-plus-offset relocation against register symbol: %s in %pA%pB: base-plus-offset relocation against register symbol: (unknown) in %pA%pB: can not represent section `%pA' in a.out object file format%pB: can not represent section for symbol `%s' in a.out object file format%pB: can't link %s modules with %s modules%pB: can't link RVE with other target%pB: cannot allocate file name for file number %d, %d bytes
-%pB: cannot create stub entry %s%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot link fdpic object file into non-fdpic executable%pB: cannot link non-fdpic object file into fdpic executable%pB: cannot link together %s and %s objects%pB: change in gp: BRSGP %s%pB: class %d symbol `%s' has no aux entries%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s%pB: compiled for a 64 bit system and target is 32 bit%pB: compiled for a big endian system and target is little endian%pB: compiled for a little endian system and target is big endian%pB: compiled normally and linked with modules compiled with -mrelocatable%pB: compiled with %s and linked with modules compiled with %s%pB: compiled with %s and linked with modules that use non-pic relocations%pB: compiled with -mrelocatable and linked with modules compiled normally%pB: could not find output section %pA for input section %pA%pB: could not read contents of section `%pA'
+%pB: cannot allocate memory for local GOT entries%pB: cannot create stub entry %s%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot link fdpic object file into non-fdpic executable%pB: cannot link non-fdpic object file into fdpic executable%pB: cannot link together %s and %s objects%pB: change in gp: BRSGP %s%pB: class %d symbol `%s' has no aux entries%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s%pB: compiled for a 64 bit system and target is 32 bit%pB: compiled for a big endian system and target is little endian%pB: compiled for a little endian system and target is big endian%pB: compiled normally and linked with modules compiled with -mrelocatable%pB: compiled with %s and linked with modules compiled with %s%pB: compiled with %s and linked with modules that use non-pic relocations%pB: compiled with -mrelocatable and linked with modules compiled normally%pB: could not find output section %pA for input section %pA%pB: could not read contents of section `%pA'
 %pB: csect `%s' not in enclosing section%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object%pB: directive LOCAL valid only with a register or absolute value%pB: dtp-relative relocation against dynamic symbol %s%pB: duplicate export stub %s%pB: duplicate section `%pA' has different contents
 %pB: duplicate section `%pA' has different size
 %pB: dynamic object with no .loader section%pB: dynamic relocation against `%pT' in read-only section `%pA'
 %pB: dynamic relocation in read-only section `%pA'
-%pB: endianness incompatible with that of the selected emulation%pB: entry function `%s' is empty%pB: entry function `%s' not output%pB: error: ABI mismatch with previous modules%pB: error: Cortex-A8 erratum stub is allocated in unsafe location%pB: error: Cortex-A8 erratum stub out of range (input file too large)%pB: error: PHDR segment not covered by LOAD segment%pB: error: VFP11 veneer out of range%pB: error: alignment power %d of section `%pA' is too big%pB: error: attribute section '%pA' too big: %#llx%pB: error: cannot create STM32L4XX veneer%pB: error: debug data ends beyond end of debug directory%pB: error: erratum 835769 stub out of range (input file too large)%pB: error: erratum 843419 stub out of range (input file too large)%pB: error: instruction set mismatch with previous modules%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file%pB: error: non-load segment %d includes file header and/or program header%pB: error: search_nds32_elf_blank reports wrong node%pB: error: unexpected symbol '%s' in COMDAT section%pB: error: unknown mandatory EABI object attribute %d%pB: failed to find info section for section %d%pB: failed to find link section for section %d%pB: failed to generate import library%pB: failed to read debug data section%pB: fatal: generic symbols retrieved before relaxing%pB: file class %s incompatible with %s%pB: gotoff relocation against dynamic symbol %s%pB: gp-relative relocation against dynamic symbol %s%pB: group section '%pA' has no contents%pB: hidden symbol `%s' in %pB is referenced by DSO%pB: hidden symbol `%s' isn't defined%pB: ignoring duplicate section `%pA'
+%pB: endianness incompatible with that of the selected emulation%pB: entry function `%s' is empty%pB: entry function `%s' not output%pB: error: ABI mismatch with previous modules%pB: error: Cortex-A8 erratum stub is allocated in unsafe location%pB: error: Cortex-A8 erratum stub out of range (input file too large)%pB: error: PHDR segment not covered by LOAD segment%pB: error: VFP11 veneer out of range%pB: error: alignment power %d of section `%pA' is too big%pB: error: attribute section '%pA' too big: %#llx%pB: error: cannot create STM32L4XX veneer%pB: error: debug data ends beyond end of debug directory%pB: error: erratum 835769 stub out of range (input file too large)%pB: error: erratum 843419 immediate 0x%%pB: error: erratum 843419 stub out of range (input file too large)%pB: error: instruction set mismatch with previous modules%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file%pB: error: non-load segment %d includes file header and/or program header%pB: error: search_nds32_elf_blank reports wrong node%pB: error: unexpected symbol '%s' in COMDAT section%pB: error: unknown mandatory EABI object attribute %d%pB: failed to find info section for section %d%pB: failed to find link section for section %d%pB: failed to generate import library%pB: failed to read debug data section%pB: fatal: generic symbols retrieved before relaxing%pB: file class %s incompatible with %s%pB: gotoff relocation against dynamic symbol %s%pB: gp-relative relocation against dynamic symbol %s%pB: group section '%pA' has no contents%pB: hidden symbol `%s' in %pB is referenced by DSO%pB: hidden symbol `%s' isn't defined%pB: ignoring duplicate section `%pA'
 %pB: illegal section name `%pA'%pB: illegal symbol index %ld in relocs%pB: incompatible machine type; output is 0x%x; input is 0x%x%pB: incorrect size for symbol `%s'%pB: indirect symbol `%s' to `%s' is a loop%pB: instruction set mismatch with previous modules%pB: internal error in ihex_read_section%pB: internal error, internal register section %pA had contents
 %pB: internal error, symbol table changed size from %d to %d words
 %pB: internal symbol `%s' in %pB is referenced by DSO%pB: internal symbol `%s' isn't defined%pB: invalid entry in SHT_GROUP section [%u]%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions%pB: invalid link %u for reloc section %s (index %u)%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)
@@ -523,11 +521,23 @@ ppcboot header:
 %pB: invalid mmo file: lop_end not last item in file
 %pB: invalid mmo file: unsupported lopcode `%d'
 %pB: invalid sh_link field (%d) in section number %d%pB: invalid special symbol `%s'; it must be a global or weak function symbol%pB: invalid standard symbol `%s'; it must be a global or weak function symbol%pB: invalid symbol table: duplicate symbol `%s'
-%pB: line number overflow: 0x%lx > 0xffff%pB: linking %s module with previous %s modules%pB: linking 32-bit code with 64-bit code%pB: linking 64-bit files with 32-bit files%pB: linking UltraSPARC specific with HAL specific code%pB: linking auto-pic files with non-auto-pic files%pB: linking big-endian files with little-endian files%pB: linking constant-gp files with non-constant-gp files%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%pB: linking files compiled for HCS12 with others compiled for HC12%pB: linking little endian files with big endian files%pB: linking non-pic code in a position independent executable%pB: linking trap-on-NULL-dereference with non-trapping files%pB: loader reloc in read-only section %pA%pB: loader reloc in unrecognized section `%s'%pB: local symbol `%s' in %pB is referenced by DSO%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol%pB: machine flag conflict with target%pB: malformed reloc detected for section %pA%pB: malformed reloc detected for section %s%pB: misplaced XTY_LD `%s'%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no core to allocate section name %s%pB: no group info for section '%pA'%pB: no initialized registers; section length 0
-%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: no valid group sections found%pB: non-pic code with imm relocation against dynamic symbol `%s'%pB: non-pic relocation against symbol %s%pB: not enough room for program headers, try linking with -N%pB: only registers %%g[2367] can be declared using STT_REGISTER%pB: out of memory creating name for empty section%pB: out of memory in _bfd_elf_get_property%pB: page size is too large (0x%x)%pB: pc-relative relocation against dynamic symbol %s%pB: pc-relative relocation against undefined weak symbol %s%pB: plugin needed to handle lto object%pB: probably compiled without -fPIC?%pB: protected symbol `%s' isn't defined%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive%pB: register relocation against non-register symbol: %s in %pA%pB: register relocation against non-register symbol: (unknown) in %pA%pB: reloc against a non-existent symbol index: %ld%pB: relocatable link from %s to %s not supported%pB: relocation %s against %s%s`%s' can not be used when making %s%s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported%pB: relocation %s against `%s' can not be used when making a shared object%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against symbol `%s' isn't supported in x32 mode%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC%pB: relocation %s can not be used when making a shared object; recompile with -fPIC%pB: relocation %s cannot be used when making a shared object%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object%pB: relocation size mismatch in %pB section %pA%pB: relocations in generic ELF (EM: %d)%pB: relocs in section `%pA', but it has no contents%pB: section %pA: string table overflow at offset %ld%pB: section `%pA' can't be allocated in segment %d%pB: section group entry number %u is corrupt%pB: sh_link [%d] in section `%pA' is incorrect%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'%pB: size field is zero in Import Library Format header%pB: special symbol `%s' only allowed for ARMv8-M architecture or later%pB: speculation fixup to dynamic symbol %s%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: support for local dynamic not implemented%pB: symbol `%s' has unrecognized csect type %d%pB: symbol `%s' has unrecognized smclas %d%pB: symbol `%s' required but not present%pB: taking the address of protected function '%s' cannot be done when making a shared library%pB: the target (%s) of a %s relocation is in the wrong output section (%s)%pB: the target (%s) of an %s relocation is in the wrong section (%pA)%pB: too many sections (%d)%pB: too many sections: %d (>= %d)%pB: too many sections: %u%pB: tp-relative relocation against dynamic symbol %s%pB: unable to create fake empty section%pB: unable to fill in DataDictionary[12] because .idata$5 is missing%pB: unable to fill in DataDictionary[1] because .idata$2 is missing%pB: unable to fill in DataDictionary[1] because .idata$4 is missing%pB: unable to fill in DataDictionary[9] because __tls_used is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing%pB: unable to find %s veneer `%s'%pB: unable to find name for empty section%pB: unable to get decompressed section %pA%pB: unable to initialize compress status for section %s%pB: unable to initialize decompress status for section %s%pB: unable to load COMDAT section name%pB: unable to sort relocs - they are in more than one size%pB: unable to sort relocs - they are of an unknown size%pB: undefined reference to symbol '%s'%pB: undefined sym `%s' in .opd section%pB: undefined symbol on R_PPC64_TOCSAVE relocation%pB: unexpected redefinition of indirect versioned symbol `%s'%pB: unexpected reloc type %u in .opd section%pB: unhandled dynamic relocation against %s%pB: unhandled import type; %x%pB: unknown architecture %s%pB: unknown load command %#x%pB: unknown mandatory ARC object attribute %d%pB: unknown mandatory EABI object attribute %d%pB: unknown relocation type %d%pB: unknown type [%#x] section `%s'%pB: unknown type [%#x] section `%s' in group [%pA]%pB: unmatched OMIT_FP in %pA%pB: unrecognised machine type (0x%x) in Import Library Format archive%pB: unrecognized import name type; %x%pB: unrecognized import type; %x%pB: unrecognized relocation type %#x in section `%pA'%pB: unrecognized storage class %d for %s symbol `%s'%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported transition from %s to %s%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
-%pB: uses %s instructions while previous modules use %s instructions%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols%pB: uses different e_flags (%#x) fields than previous modules (%#x)%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)%pB: uses instructions which are incompatible with instructions used in previous modules%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols%pB: version node not found for symbol %s%pB: visibility of symbol `%s' has changed%pB: warning core file truncated%pB: warning: %pA: line number overflow: %#x > 0xffff%pB: warning: %s BLX instruction targets %s function '%s'%pB: warning: %s relocation against symbol `%s' from %pA section%pB: warning: %s unsupported in shared mode%pB: warning: %s: line number overflow: 0x%lx > 0xffff%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: RVE PLT generation not supported%pB: warning: allocated section `%s' not in segment%pB: warning: bad `%s' option size %u smaller than its header%pB: warning: cannot determine the target function for stub section `%s'%pB: warning: claims to have 0xffff relocs, without overflow%pB: warning: duplicate line number information for `%s'%pB: warning: endian mismatch with previous modules%pB: warning: ignoring section flag %s in section %s%pB: warning: illegal symbol in line number entry %d%pB: warning: illegal symbol index %ld in relocs%pB: warning: illegal symbol index 0x%lx in line number entry %d%pB: warning: incompatible elf-versions %s and %s%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)%pB: warning: line number count (%#lx) exceeds section size (%#lx)%pB: warning: line number table read failed%pB: warning: linking PIC files with non-PIC files%pB: warning: linking abicalls files with non-abicalls files%pB: warning: loop in section dependencies detected%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u%pB: warning: multiple symbol tables detected - ignoring the table in section %u%pB: warning: no symbol for section '%s' found%pB: warning: older version of object file encountered, please recompile with current tool chain%pB: warning: relocate SDA_BASE failed%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture%pB: warning: sh_link not set for section `%pA'%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
+%pB: invalid version offset %lx (max %lx)%pB: line number overflow: 0x%lx > 0xffff%pB: linking %s module with previous %s modules%pB: linking 32-bit code with 64-bit code%pB: linking 64-bit files with 32-bit files%pB: linking UltraSPARC specific with HAL specific code%pB: linking auto-pic files with non-auto-pic files%pB: linking big-endian files with little-endian files%pB: linking constant-gp files with non-constant-gp files%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%pB: linking files compiled for HCS12 with others compiled for HC12%pB: linking little endian files with big endian files%pB: linking non-pic code in a position independent executable%pB: linking trap-on-NULL-dereference with non-trapping files%pB: loader reloc in read-only section %pA%pB: loader reloc in unrecognized section `%s'%pB: local symbol `%s' in %pB is referenced by DSO%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol%pB: machine flag conflict with target%pB: malformed reloc detected for section %pA%pB: malformed reloc detected for section %s%pB: misplaced XTY_LD `%s'%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no core to allocate section name %s%pB: no group info for section '%pA'%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: no valid group sections found%pB: non-pic code with imm relocation against dynamic symbol `%s'%pB: non-pic relocation against symbol %s%pB: not enough room for program headers, try linking with -N%pB: not enough version information%pB: only registers %%g[2367] can be declared using STT_REGISTER%pB: out of memory creating name for empty section%pB: out of memory in _bfd_elf_get_property%pB: page size is too large (0x%x)%pB: pc-relative relocation against dynamic symbol %s%pB: pc-relative relocation against undefined weak symbol %s%pB: plugin needed to handle lto object%pB: probably compiled without -fPIC?%pB: protected symbol `%s' isn't defined%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive%pB: register relocation against non-register symbol: %s in %pA%pB: register relocation against non-register symbol: (unknown) in %pA%pB: reloc against a non-existent symbol index: %ld%pB: relocatable link from %s to %s not supported%pB: relocation %s against %s%s`%s' can not be used when making %s%s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported%pB: relocation %s against `%s' can not be used when making a shared object%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against symbol `%s' isn't supported in x32 mode%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC%pB: relocation %s can not be used when making a shared object; recompile with -fPIC%pB: relocation %s cannot be used when making a shared object%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object%pB: relocation size mismatch in %pB section %pA%pB: relocations in generic ELF (EM: %d)%pB: relocs in section `%pA', but it has no contents%pB: section %pA: string table overflow at offset %ld%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %d%pB: section group entry number %u is corrupt%pB: sh_link [%d] in section `%pA' is incorrect%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'%pB: size field is zero in Import Library Format header%pB: special symbol `%s' only allowed for ARMv8-M architecture or later%pB: speculation fixup to dynamic symbol %s%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: support for local dynamic not implemented%pB: symbol `%s' has unrecognized csect type %d%pB: symbol `%s' has unrecognized smclas %d%pB: symbol `%s' required but not present%pB: symbol indicates overlay (not supported)%pB: taking the address of protected function '%s' cannot be done when making a shared library%pB: the target (%s) of a %s relocation is in the wrong output section (%s)%pB: the target (%s) of an %s relocation is in the wrong section (%pA)%pB: too many sections (%d)%pB: too many sections: %d (>= %d)%pB: too many sections: %u%pB: tp-relative relocation against dynamic symbol %s%pB: unable to create fake empty section%pB: unable to fill in DataDictionary[12] because .idata$5 is missing%pB: unable to fill in DataDictionary[1] because .idata$2 is missing%pB: unable to fill in DataDictionary[1] because .idata$4 is missing%pB: unable to fill in DataDictionary[9] because __tls_used is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing%pB: unable to find %s veneer `%s'%pB: unable to find name for empty section%pB: unable to get decompressed section %pA%pB: unable to initialize compress status for section %s%pB: unable to initialize decompress status for section %s%pB: unable to load COMDAT section name%pB: unable to sort relocs - they are in more than one size%pB: unable to sort relocs - they are of an unknown size%pB: undefined reference to symbol '%s'%pB: undefined sym `%s' in .opd section%pB: undefined symbol on R_PPC64_TOCSAVE relocation%pB: unexpected redefinition of indirect versioned symbol `%s'%pB: unexpected reloc type %u in .opd section%pB: unhandled dynamic relocation against %s%pB: unhandled import type; %x%pB: unhandled sparc machine value '%lu' detected during write processing%pB: unknown architecture %s%pB: unknown load command %#x%pB: unknown mandatory ARC object attribute %d%pB: unknown mandatory EABI object attribute %d%pB: unknown relocation type %d%pB: unknown type [%#x] section `%s'%pB: unknown type [%#x] section `%s' in group [%pA]%pB: unmatched OMIT_FP in %pA%pB: unrecognised machine type (0x%x) in Import Library Format archive%pB: unrecognized import name type; %x%pB: unrecognized import type; %x%pB: unrecognized relocation type %#x in section `%pA'%pB: unrecognized storage class %d for %s symbol `%s'%pB: unsupported AOUT relocation size: %d%pB: unsupported arch %#x%pB: unsupported bfd mach %#lx%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported transition from %s to %s%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
+%pB: uses %s instructions while previous modules use %s instructions%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols%pB: uses different e_flags (%#x) fields than previous modules (%#x)%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)%pB: uses instructions which are incompatible with instructions used in previous modules%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols%pB: version node not found for symbol %s%pB: visibility of symbol `%s' has changed%pB: warning core file truncated%pB: warning: %pA: line number overflow: %#x > 0xffff%pB: warning: %s BLX instruction targets %s function '%s'%pB: warning: %s relocation against symbol `%s' from %pA section%pB: warning: %s unsupported in shared mode%pB: warning: %s: line number overflow: 0x%lx > 0xffff%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section.%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: RVE PLT generation not supported%pB: warning: Weak TLS is implementation defined and may not work as expected%pB: warning: allocated section `%s' not in segment%pB: warning: bad `%s' option size %u smaller than its header%pB: warning: cannot determine the target function for stub section `%s'%pB: warning: claims to have 0xffff relocs, without overflow%pB: warning: duplicate line number information for `%s'%pB: warning: endian mismatch with previous modules%pB: warning: ignoring section flag %s in section %s%pB: warning: illegal symbol in line number entry %d%pB: warning: illegal symbol index %ld in relocs%pB: warning: illegal symbol index 0x%lx in line number entry %d%pB: warning: incompatible elf-versions %s and %s%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)%pB: warning: line number count (%#lx) exceeds section size (%#lx)%pB: warning: line number table read failed%pB: warning: linking PIC files with non-PIC files%pB: warning: linking abicalls files with non-abicalls files%pB: warning: loop in section dependencies detected%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u%pB: warning: multiple symbol tables detected - ignoring the table in section %u%pB: warning: no symbol for section '%s' found%pB: warning: older version of object file encountered, please recompile with current tool chain%pB: warning: relocate SDA_BASE failed%pB: warning: secondary relocation section '%s' for section %pA found - ignoring%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture%pB: warning: sh_link not set for section `%pA'%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
 %pB: warning: thumb-1 mode PLT generation not currently supported%pB: warning: unaligned access to GOT entry%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)%pB: warning: unknown EABI object attribute %d%pB: will not resolve runtime TLS relocation%pB:%d: bad checksum in S-record file%pB:%d: byte count %d too small%pB:%d: unexpected character `%s' in Intel Hex file%pB:%d: unexpected character `%s' in S-record file%pB:%pA%s exceeds overlay size
-%pB:%pA: %s and %s must be in the same input section%pB:%pA: error: relocation references symbol %s which was removed by garbage collection%pB:%pA: error: try relinking with --gc-keep-exported enabled%pB:%pA: table %s missing corresponding %s%pB:%pA: table entry %s not word-aligned within table%pB:%pA: table entry %s outside table%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s%pB:%s has both normal and TLS relocs%pB:%s section %s: alignment 2**%u not representable%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)%pB:%u: bad extended address record length in Intel Hex file%pB:%u: bad extended linear address record length in Intel Hex file%pB:%u: bad extended linear start address length in Intel Hex file%pB:%u: bad extended start address length in Intel Hex file%pB:%u: unrecognized ihex type %u in Intel Hex file%s defined on removed toc entry%s duplicated
+%pB:%pA: %s and %s must be in the same input section%pB:%pA: error: attempting to write into an unallocated compressed section%pB:%pA: error: attempting to write over the end of the section%pB:%pA: error: attempting to write section into an empty buffer%pB:%pA: error: relocation references symbol %s which was removed by garbage collection%pB:%pA: error: try relinking with --gc-keep-exported enabled%pB:%pA: table %s missing corresponding %s%pB:%pA: table entry %s not word-aligned within table%pB:%pA: table entry %s outside table%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s%pB:%s has both normal and TLS relocs%pB:%s section %s: alignment 2**%u not representable%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)%pB:%u: bad extended address record length in Intel Hex file%pB:%u: bad extended linear address record length in Intel Hex file%pB:%u: bad extended linear start address length in Intel Hex file%pB:%u: bad extended start address length in Intel Hex file%pB:%u: unrecognized ihex type %u in Intel Hex file%pcrel_lo section symbol with an addend%s  branch         %lu
+  branch toc adj %lu
+  branch notoc   %lu
+  branch both    %lu
+  long branch    %lu
+  long toc adj   %lu
+  long notoc     %lu
+  long both      %lu
+  plt call       %lu
+  plt call save  %lu
+  plt call notoc %lu
+  plt call both  %lu
+  global entry   %lu%s defined on removed toc entry%s divide by zero%s duplicated
 %s duplicated in %s
 %s has both normal and TLS relocs%s in overlay section%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA%s: TLS reference in %pB mismatches non-TLS reference in %pB%s: no such symbol%s: not implemented%s: not supported%s: undefined version: %s(at bit offset %u)
 (descriptor)
@@ -543,8 +553,8 @@ ppcboot header:
 *unknown**unknown*        , Value: %#08lx
 , alias: %u
 , ext fixup offset: %u, no_opt psect off: %u, subtype: %u (%s)
-, symbol vector rva: - %pB is 64-bit, %pB is not-mips32r2 -mfp64 (12 callee-saved).eh_frame_hdr entry overflow.eh_frame_hdr refers to overlapping FDEs.got section not immediately after .plt section.rsrc merge failure: a directory matches a leaf.rsrc merge failure: differing directory versions.rsrc merge failure: dirs with differing characteristics.rsrc merge failure: duplicate leaf.rsrc merge failure: duplicate leaf: %s.rsrc merge failure: duplicate string resource: %d.rsrc merge failure: multiple non-default manifests32-bit double, 32bits gp relative relocation occurs for an external symbol4-byte4-bytes64 bits *unhandled*
-64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC<Unrecognised flag bits set><corrupt info> %s<corrupt string length: %#x>
+, symbol vector rva: - %pB is 64-bit, %pB is not-march=%s: %s ISA extension not in alphabetical order: '%s' must come before '%s'.-march=%s: %s must separate with _-march=%s: Duplicate %s ISA extension: '%s'-march=%s: Expect number after `%dp'.-march=%s: ISA string is not in canonical order. `%c'-march=%s: ISA string must begin with rv32 or rv64-march=%s: Invalid or unknown %s ISA extension: '%s'-march=%s: `d' extension requires `f' extension-march=%s: `q' extension requires `d' extension-march=%s: first ISA subset must be `e', `i' or `g'-march=%s: rv%de is not a valid base ISA-march=%s: rv32 does not support the `q' extension-march=%s: rv32e does not support the `f' extension-march=%s: unexpected ISA string at end: %s-march=%s: unsupported ISA subset `%c'-mips32r2 -mfp64 (12 callee-saved).eh_frame_hdr entry overflow.eh_frame_hdr refers to overlapping FDEs.got section not immediately after .plt section.rsrc merge failure: a directory matches a leaf.rsrc merge failure: differing directory versions.rsrc merge failure: dirs with differing characteristics.rsrc merge failure: duplicate leaf.rsrc merge failure: duplicate leaf: %s.rsrc merge failure: duplicate string resource: %d.rsrc merge failure: multiple non-default manifests32-bit double, 32bits gp relative relocation occurs for an external symbol4-byte4-bytes64 bits *unhandled*
+64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC; recompile with -fPIE<Unrecognised flag bits set><corrupt info> %s<corrupt string length: %#x>
 <corrupt string offset: %#lx>
 <corrupt><unknown directory type: %d>
 <unknown mask flags><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBFD %s internal error, aborting at %s:%d
@@ -557,7 +567,7 @@ ppcboot header:
 CTL_STLOC (set location)
 Copyright Header
 Corrupt .rsrc section detected!
-DSO missing from command lineDWARF error: DW_AT_comp_dir attribute encountered with a non-string formDWARF error: abstract instance recursion detectedDWARF error: can't find %s section.DWARF error: could not find abbrev number %uDWARF error: found address size '%u', this reader can not handle sizes greater than '%u'DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 informationDWARF error: info pointer extends beyond end of attributesDWARF error: invalid abstract instance DIE refDWARF error: invalid maximum operations per instructionDWARF error: invalid or unhandled FORM value: %#xDWARF error: line info unsupported segment selector size %uDWARF error: mangled line number sectionDWARF error: mangled line number section (bad file number)DWARF error: ran out of room reading opcodesDWARF error: ran out of room reading prologueDWARF error: unhandled .debug_line version %dDWARF error: zero format countDW_EH_PE_datarel unspecified for this architectureDebug DirectoryDebug module table:
+DSO missing from command lineDWARF error: DW_AT_comp_dir attribute encountered with a non-string formDWARF error: abstract instance recursion detectedDWARF error: can't find %s section.DWARF error: could not find abbrev number %uDWARF error: could not find variable specification at offset %lxDWARF error: found address size '%u', this reader can not handle sizes greater than '%u'DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 informationDWARF error: info pointer extends beyond end of attributesDWARF error: invalid abstract instance DIE refDWARF error: invalid maximum operations per instructionDWARF error: invalid or unhandled FORM value: %#xDWARF error: line info unsupported segment selector size %uDWARF error: mangled line number sectionDWARF error: mangled line number section (bad file number)DWARF error: ran out of room reading opcodesDWARF error: ran out of room reading prologueDWARF error: unhandled .debug_line version %dDWARF error: zero format countDW_EH_PE_datarel unspecified for this architectureDebug DirectoryDebug module table:
 Debug symbol table:
 Delay Import DirectoryDeprecated %s called
 Deprecated %s called at %s line %d in %s
@@ -565,7 +575,7 @@ ppcboot header:
 Entry offset        = 0x%.8lx (%ld)
 Error: %pB has both the current and legacy Tag_MPextension_use attributesException Directory [.pdata]Export Directory [.edata (or where ever we found it)]Export Flags 			%lx
 Export RVAFDE encoding in %pB(%pA) prevents .eh_frame_hdr table being createdFDPIC does not yet support %s relocation to become dynamic for executableFILES_VOLUMES    FPU-2.0FPU-3.0Flag field          = 0x%.2x
-Forwarder RVAGALAXY           GOT and PLT relocations cannot be fixed with a non dynamic linkerGOT table size out of rangeGP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
+Forwarder RVAGALAXY           GNU_MBIND section is unsupportedGOT and PLT relocations cannot be fixed with a non dynamic linkerGOT table size out of rangeGP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
 Hard float (32-bit CPU, 64-bit FPU)
 Hard float (32-bit CPU, Any FPU)
 Hard float (MIPS32r2 64-bit FPU 12 callee-saved)
@@ -573,8 +583,8 @@ ppcboot header:
 Hard float (single precision)
 Hard float compat (32-bit CPU, 64-bit FPU)
 Hard or soft float
-ID: %#08lxIDC - Ident Consistency check
-IMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supportedIO               Image activation:  (size=%u)
+IBT and SHSTK propertiesIBT propertyID: %#08lxIDC - Ident Consistency check
+IFUNC symbol %s in dynamic symbol table - IFUNCS are not supportedIMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supportedIO               Image activation:  (size=%u)
 Image activator fixup: (major: %u, minor: %u)
 Image identification: (major: %u, minor: %u)
 Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)
@@ -617,7 +627,7 @@ ppcboot header:
 Removed property %W to merge %pB (not found) and %pB (0x%v)
 Removed property %W to merge %pB and %pB
 Removed property %W to merge %pB and %pB (not found)
-ReservedResource Directory [.rsrc]S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your codeSDA relocation when _SDA_BASE_ not definedSECURITY         SEC_RELOC with no relocs in section %pASHELL            SHRFXDSHRPICSIMD use: SPSC - Shared Image Program section def
+ReservedResource Directory [.rsrc]S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your codeSDA relocation when _SDA_BASE_ not definedSECURITY         SEC_RELOC with no relocs in section %pASHELL            SHRFXDSHRPICSHSTK propertySIMD use: SPSC - Shared Image Program section def
 STABLE           STA_CKARG (compare procedure argument)
 STA_GBL (stack global) %.*s
 STA_LI (stack literal)
@@ -677,11 +687,11 @@ ppcboot header:
 Warning: %s section size (%ld) is smaller than virtual size (%ld)
 Warning: %s section size is zero
 Writing updated armap timestampXGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code.[%u]: Lower: %u, upper: %u
-[abi=16-bit int, [abi=32-bit int, [whose name is lost]_bfd_vms_output_counted called with too many bytes_bfd_vms_output_counted called with zero bytes`%s' refers to a non entry functiona PDE objecta PIE objecta shared objectaddressaddress not word alignedalternate ELF machine code found (%d) in %pB, expecting %darchive has no index; run ranlib to add onearchive object file in wrong formatarray descriptor:
+[abi=16-bit int, [abi=32-bit int, [whose name is lost]__tls_get_addr call offset overflow_bfd_vms_output_counted called with too many bytes_bfd_vms_output_counted called with zero bytes`%s' refers to a non entry functiona PDE objecta PIE objecta shared objectaddressaddress not word alignedalternate ELF machine code found (%d) in %pB, expecting %darchive has no index; run ranlib to add onearchive object file in wrong formatarray descriptor:
 array, dim: %u, bitmap: arsize: %u, a0: 0x%08x
 atomic, type=0x%02x %s
 attempt to convert L32R/CALLX to CALL failedattempt to do relocatable link with %s input and %s outputbad section index in %sbad valuebanked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)base: %u, pos: %u
-bfd_mach_o_canonicalize_symtab: unable to load symbolsbfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)bfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid section %d (max %lu): setting to undefinedbfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid type field 0x%x: setting to undefinedbfd_mach_o_read_symtab_symbol: unable to read %d bytes at %ubfd_mach_o_read_symtab_symbols: unable to allocate memory for symbolsbfd_mach_o_scan: unknown architecture 0x%lx/0x%lxbfd_pef_scan: unknown architecture 0x%lxblkbeg: address: 0x%08x, name: %.*s
+bfd_mach_o_canonicalize_symtab: unable to load symbolsbfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)bfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid section %d (max %lu): setting to undefinedbfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid type field 0x%x: setting to undefinedbfd_mach_o_read_symtab_symbol: unable to read %d bytes at %ubfd_mach_o_scan: unknown architecture 0x%lx/0x%lxbfd_pef_scan: unknown architecture 0x%lxblkbeg: address: 0x%08x, name: %.*s
 blkend: size: 0x%08x
 branch (PC rel16) to section (%s) not supportedbranch to a non-instruction-aligned addressbss-plt forced by profilingbss-plt forced due to %pBcan't build branch stub `%s'can't find branch stub `%s'cannot convert a branch to JALX for a non-word-aligned addresscannot convert a jump to JALX for a non-word-aligned addresscannot create stub entry %scannot emit dynamic relocations in read-only sectioncannot emit fixups in read-only sectioncannot find EMH in first GST record
 cannot read DMT
@@ -702,36 +712,35 @@ ppcboot header:
 cannot read GST record header
 cannot read GST record length
 class: %u, dtype: %u, length: %u, pointer: 0x%08x
-corrupt %s section in %pBcorrupt EEOM record - size is too smallcorrupt EGSD record: its psindx field is too big (%#lx)corrupt EGSD record: its size (%#x) is too smallcorrupt EGSD record: size (%#x) is larger than remaining space (%#x)corrupt EGSD record: size (%#x) is too smallcorrupt EIHD record - size is too smallcorrupt ETIR record encounteredcorrupt vms valuecould not find section %scould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcould not open shared image '%s' from '%s'cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dangerous relocationdelta pc +%-4ddelta_pc_l: +0x%08x
+corrupt %s section in %pBcorrupt EEOM record - size is too smallcorrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)corrupt EGSD record type %d: size (%#x) is too smallcorrupt EGSD record: its psindx field is too big (%#lx)corrupt EGSD record: its size (%#x) is too smallcorrupt EIHD record - size is too smallcorrupt ETIR record encounteredcorrupt vms valuecould not find section %scould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcould not open shared image '%s' from '%s'cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dangerous relocationdangerous relocation errordelta pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
 descdimct: %u, aflags: 0x%02x, digits: %u, scale: %u
 discarded output section: `%pA'discarding zero address range FDE in %pB(%pA).
 discontiguous range (nbr: %u)
-dynamic relocation in read-only sectiondynamic variable `%s' is zero sizedynreloc miscount for %pB, section %pAentry function `%s' disappeared from secure codeenumbeg, len: %u, name: %.*s
+dst_define_location %u too largedynamic relocation in read-only sectiondynamic variable `%s' is zero sizedynreloc miscount for %pB, section %pAentry function `%s' disappeared from secure codeenumbeg, len: %u, name: %.*s
 enumelt, name: %.*s
 enumend
 epilog: flags: %u, count: %u
-error in %pB(%pA); no .eh_frame_hdr table will be createderror reading %s: %serror reading cpu type from elf private dataerror: %pB does not use %s instructions, whereas %pB doeserror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %pB is compiled for the EP9312, whereas %pB is compiled for XScaleerror: %pB needs 8-byte alignment but %pB is set for 4-byte alignmenterror: %pB passes floats in float registers, whereas %pB passes them in integer registerserror: %pB passes floats in integer registers, whereas %pB passes them in float registerserror: %pB requires more array alignment than %pB preserveserror: %pB requires more stack alignment than %pB preserveserror: %pB use %u-byte stack aligned but the output use %u-byte stack aligned.error: %pB uses %s instructions but %pB uses %serror: %pB uses %s instructions, whereas %pB does noterror: %pB uses 64-bit doubles but %pB uses 32-bit doubleserror: %pB uses FPU-3.0 but %pB only supports FPU-2.0error: %pB uses VFP register arguments, %pB does noterror: %pB uses hardware FP, whereas %pB uses software FPerror: %pB uses iWMMXt register arguments, %pB does noterror: %pB uses software FP, whereas %pB uses hardware FPerror: %pB uses the %s code model whereas %pB uses the %s code modelerror: %pB uses the %s data model but %pB only uses MSP430 instructionserror: %pB uses the %s data model whereas %pB uses the %s data modelerror: %pB uses the large code model but %pB uses MSP430 instructionserror: %pB uses the small code model but %pB uses the %s data modelerror: %pB: <corrupt x86 property (0x%x) size: 0x%x>error: %pB: ISA string of input (%s) doesn't match output (%s).error: %pB: Mis-matched ISA string to merge '%s' and '%s'.error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%derror: %pB: SB relative addressing conflicts with use of R9error: %pB: Unspported XLEN (%u), you mightusing wrong emulation.error: %pB: XLEN of input (%u) doesn't match output (%u).error: %pB: big-endian R2 is not supportederror: %pB: cannot mix rf16 with full register set %pBerror: %pB: conflicting CPU architectures %d/%derror: %pB: conflicting ISA extension attributes %s with %serror: %pB: conflicting architecture profiles %c/%cerror: %pB: conflicting attributes %serror: %pB: conflicting attributes %s: %s with %serror: %pB: conflicting priv spec version (major/minor/revision).error: %pB: conflicting use of R9error: %pB: corrupted ISA string '%s'.first letter should be 'i' or 'e' but got '%s'.error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchainerror: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'error: %pB: old incompatible object file detectederror: %pB: size of section %pA is not multiple of address sizeerror: %pB: unable to merge CPU base attributes %s with %serror: %pB: unable to merge ISA extension attributes %serror: %pB: unable to merge virtualization attributes with %pBerror: %pB: unknown CPU architectureerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: fp16 format mismatch between %pB and %pBerror: inappropriate relocation type for shared library (did you forget -fpic?)error: source object %pB has EABI version %d, but target %pB has EABI version %derror: the ARC4 architecture is no longer supportederror: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %pBerror: unknown Tag_ABI_array_object_alignment value in %pBerrors encountered processing file %pBexecutablefailed to allocate space for new APUinfo sectionfailed to compute new APUinfo sectionfailed to find previous HI16 relocfailed to install new APUinfo sectionfailed to update file offsets in debug directoryfatal error while creating .fixupfile format is ambiguousfile format not recognizedfile in wrong formatfile too bigfile truncatedfurther warnings about FDE encoding preventing .eh_frame_hdr generation droppedgeneric linker can't handle %sglobal pointer relative address out of rangeglobal pointer relative relocation at address 0x%08x when _gp not defined
-global pointer relative relocation when _gp not definedhidden symbolhidden symbol incompatible cputypes in mach-o files: %ld vs %ldincr_linum(b): +%u
+error in %pB(%pA); no .eh_frame_hdr table will be createderror reading %s: %serror reading cpu type from elf private dataerror: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memoryerror: %pB does not use %s instructions, whereas %pB doeserror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %pB is compiled for the EP9312, whereas %pB is compiled for XScaleerror: %pB needs 8-byte alignment but %pB is set for 4-byte alignmenterror: %pB passes floats in float registers, whereas %pB passes them in integer registerserror: %pB passes floats in integer registers, whereas %pB passes them in float registerserror: %pB requires more array alignment than %pB preserveserror: %pB requires more stack alignment than %pB preserveserror: %pB use %u-byte stack aligned but the output use %u-byte stack aligned.error: %pB uses %s instructions but %pB uses %serror: %pB uses %s instructions, whereas %pB does noterror: %pB uses 64-bit doubles but %pB uses 32-bit doubleserror: %pB uses FPU-3.0 but %pB only supports FPU-2.0error: %pB uses VFP register arguments, %pB does noterror: %pB uses hardware FP, whereas %pB uses software FPerror: %pB uses iWMMXt register arguments, %pB does noterror: %pB uses software FP, whereas %pB uses hardware FPerror: %pB uses the %s code model whereas %pB uses the %s code modelerror: %pB uses the %s data model but %pB only uses MSP430 instructionserror: %pB uses the %s data model whereas %pB uses the %s data modelerror: %pB uses the large code model but %pB uses MSP430 instructionserror: %pB uses the small code model but %pB uses the %s data modelerror: %pB: <corrupt AArch64 used size: 0x%x>error: %pB: <corrupt x86 property (0x%x) size: 0x%x>error: %pB: ISA string of input (%s) doesn't match output (%s).error: %pB: Mis-matched ISA string to merge '%s' and '%s'.error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%derror: %pB: SB relative addressing conflicts with use of R9error: %pB: Unsupported XLEN (%u), you might be using wrong emulation.error: %pB: XLEN of input (%u) doesn't match output (%u).error: %pB: big-endian R2 is not supportederror: %pB: cannot mix rf16 with full register set %pBerror: %pB: conflicting CPU architectures %d/%derror: %pB: conflicting ISA extension attributes %s with %serror: %pB: conflicting architecture profiles %c/%cerror: %pB: conflicting attributes %serror: %pB: conflicting attributes %s: %s with %serror: %pB: conflicting use of R9error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but got '%s'.error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchainerror: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'error: %pB: old incompatible object file detectederror: %pB: size of section %pA is not multiple of address sizeerror: %pB: unable to merge CPU base attributes %s with %serror: %pB: unable to merge ISA extension attributes %serror: %pB: unable to merge virtualization attributes with %pBerror: %pB: unknown CPU architectureerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: fp16 format mismatch between %pB and %pBerror: inappropriate relocation type for shared library (did you forget -fpic?)error: source object %pB has EABI version %d, but target %pB has EABI version %derror: the ARC4 architecture is no longer supportederror: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %pBerror: unknown Tag_ABI_array_object_alignment value in %pBerrors encountered processing file %pBexecutablefailed to allocate space for new APUinfo sectionfailed to compute new APUinfo sectionfailed to find previous HI16 relocfailed to install new APUinfo sectionfailed to update file offsets in debug directoryfatal error while creating .fixupfile format is ambiguousfile format not recognizedfile in wrong formatfile too bigfile truncatedfurther warnings about FDE encoding preventing .eh_frame_hdr generation droppedgeneric linker can't handle %sglobal pointer relative address out of rangeglobal pointer relative relocation when _gp not definedhidden symbolhidden symbol incompatible cputypes in mach-o files: %ld vs %ldincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
 indirect, defined at 0x%08x
-internal error: RL78 reloc stack overflowinternal error: RL78 reloc stack underflowinternal error: addend should be zero for %sinternal error: branch/jump to an odd address detectedinternal error: dangerous errorinternal error: dangerous relocationinternal error: merge of architecture '%s' with architecture '%s' produced unknown architectureinternal error: out of range errorinternal error: suspicious relocation type used in shared libraryinternal error: unknown errorinternal error: unsupported relocation errorinternal inconsistency in size of .got.loc sectioninternal inconsistency: remaining %lu != max %lu; please report this buginternal symbolinternal symbol invalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or assemble using "-no-expand" (for gcc, "-Wa,-no-expand"invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or compile using the gcc-option "-mno-base-addresses".invalid operationinvalid output section for .eh_frame_entry: %pAinvalid relocation addressinvalid section index in ETIRinvalid use of %s with contextsip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.is this version of the linker - %s - out of date ?jump (PC rel26) to section (%s) not supportedjump to a non-instruction-aligned addressjump to a non-word-aligned addresslabel, name: %.*s
+internal error: RL78 reloc stack overflowinternal error: RL78 reloc stack underflowinternal error: addend should be zero for %sinternal error: branch/jump to an odd address detectedinternal error: dangerous errorinternal error: dangerous relocationinternal error: merge of architecture '%s' with architecture '%s' produced unknown architectureinternal error: out of range errorinternal error: relocation not supportedinternal error: suspicious relocation type used in shared libraryinternal error: unknown errorinternal error: unsupported relocation errorinternal inconsistency in size of .got.loc sectioninternal inconsistency: remaining %lu != max %lu; please report this buginternal symbolinternal symbol invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or assemble using "-no-expand" (for gcc, "-Wa,-no-expand"invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or compile using the gcc-option "-mno-base-addresses".invalid operationinvalid output section for .eh_frame_entry: %pAinvalid relocation addressinvalid section index in ETIRinvalid use of %s with contextsip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.is this version of the linker - %s - out of date ?jump (PC rel26) to section (%s) not supportedjump to a non-instruction-aligned addressjump to a non-word-aligned addresslabel, name: %.*s
 len: %2u, kind: %2u line num  (len: %u)
 linkable imagelinker stubs in %u group
 linker stubs in %u groups
 literalliteral relocation occurs for an external symbollong branch stub `%s' offset overflowmach-o: there are too many sections (%u) maximum is 255,
-malformed archivememory exhaustedmep: no reloc for code %dmodbeg
+malformed archivemalformed mach-o ARM half sectdiff reloc: invalid length: %dmalformed mach-o ARM local sectdiff reloc: invalid length: %dmalformed mach-o ARM reloc pair: invalid length: %dmalformed mach-o ARM reloc pair: reloc is first relocmalformed mach-o ARM reloc: unknown reloc type: %dmalformed mach-o ARM sectdiff reloc: invalid length: %dmalformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)malformed mach-o reloc: section index is greater than the number of sectionsmemory exhaustedmep: no reloc for code %dmodbeg
 modend
 name: [val: %08lx len %d]: nativenew entry function(s) introduced but no output import library specified:nono address assigned to the veneers output section %sno errorno more archived filesno symbolsnon-contiguous array of %s
-non-dynamic relocations refer to dynamic symbol %snon-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store
+non-dynamic relocations refer to dynamic symbol %snon-dynamic symbol %s in dynamic symbol tablenon-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store
 non-zero addend in @fptr relocnonenonrepresentable section on outputnot enough GOT space for local GOT entriesnot enough memory to sort relocationsnot mapping: data=%lx mapped=%d
 not mapping: env var not set
 not setobject module not error-free !offset of veneer for entry function `%s' not a multiple of its sizeone possible cause of this error is that the symbol is being referenced in the indicated code as if it had a larger alignment than was declared where it was definedout of rangeoverflow after relaxationoverlay stub relocation overflowpointer
 private flags = %lxprivate flags = %lx:private flags = %lx: private flags = 0x%lxprivate flags = 0x%lx:prolog: bkpt address 0x%08x
 protected symbolprotected symbol recbeg: name: %.*s
 recend
-reference to a banked address [%lx:%04lx] in the normal address space at %04lxreference to the far symbol `%s' using a wrong relocation may result in incorrect executionregregister %%g%d used incompatibly: %s in %pB, previously %s in %pBregister section has contents
+record is too small for symbol name lengthreference to a banked address [%lx:%04lx] in the normal address space at %04lxreference to the far symbol `%s' using a wrong relocation may result in incorrect executionregregister %%g%d used incompatibly: %s in %pB, previously %s in %pBregister section has contents
 reloc (%d) is *UNKNOWN*relocation for non-REL psectrelocation out of rangerelocation references symbol not defined in the modulerelocation requires zero addendrelocation should be even numberrelocations between different segments are not supportedremoving unused section '%pA' in file '%pB'reopening %pB: %s
 reserved cmd %drtnbeg
 rtnend: size 0x%08x
@@ -740,30 +749,30 @@ ppcboot header:
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-shared objectsize error in section %pAsmall-data section exceeds 64KB; lower small-data size limit (see option -G)som_sizeof_headers unimplementedsorry, no support for duplicate object files in auto-overlay script
+shared objectsize error in section %pAsmall-data section exceeds 64KB; lower small-data size limit (see option -G)som_sizeof_headers unimplementedsorry, cannot handle this filesorry, no support for duplicate object files in auto-overlay script
 sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands.source (len: %u)
 spurious ALPHA_R_BSR relocstack analysis will ignore the call from %s to %s
 stack overflow (%d) in _bfd_vms_pushstack underflow in _bfd_vms_popstandard data: %s
-start address of `%s' is different from previous linkstatic procedure (no name)stubs don't match calculated sizesymbolsymbol symbol '%s' has invalid st_other for ABI version 1symbol `%s' has differing types: REGISTER in %pB, previously %s in %pBsymbol needs debug section which does not existsystem call errorsystem version array information:
+start address of `%s' is different from previous linkstatic procedure (no name)stubs don't match calculated sizesymbolsymbol symbol '%s' has invalid st_other for ABI version 1symbol `%s' has differing types: REGISTER in %pB, previously %s in %pBsymbol binding STB_GNU_UNIQUE is unsupportedsymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is unsupportedsystem call errorsystem version array information:
 term(b): 0x%02xterm_w: 0x%04xthe bfin target does not currently support the generation of copy relocationsthere is a conflict merging the ELF header flags from %pBtoo many GOT entries for -fpic, please recompile with -fPICtry enabling relaxation to avoid relocation truncationstype spec for element:
 type spec for subscript %u:
 typed pointer
 typspec (len: %u)
-unable to allocate data for load command %#xunable to find %s glue '%s' for '%s'unable to find equivalent output section for symbol '%s' from section '%s'unable to layout unknown load command %#xunable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because the offset (%d) is out of the allowed range, -32678 to 32767
-unable to read EIHS record at offset %#xunable to read in %s section from %pBunable to write unknown load command %#xunaligned bit-string of %s
-undefined undefined %s reference in complex symbol: %sunexpected STO_SH5_ISA32 on local symbol is not handledunexpected machine numberunhandled OSF/1 core file section type %dunhandled egsd entry type %u
+unable to allocate data for load command %#xunable to find %s glue '%s' for '%s'unable to find equivalent output section for symbol '%s' from section '%s'unable to layout unknown load command %#xunable to read EIHS record at offset %#xunable to read in %s section from %pBunable to write unknown load command %#xunaligned bit-string of %s
+undefined undefined %s reference in complex symbol: %sunexpected machine numberunhandled OSF/1 core file section type %dunhandled egsd entry type %u
 unhandled emh subtype %u
-unhandled relocation %sunknownunknown EGSD subtype %dunknown ETIR command %dunknown basic type %dunknown errorunknown header byte-order value %#xunknown line command %dunknown operator '%c' in complex symbolunknown reloc %sunknown reloc %s + %sunknown source command %dunknown symbol in command %sunknown v850 architectureunknown: %xunrecognized INPUT_SECTION_FLAG %s
-unrecognized TI COFF target id '0x%x'unsupported .stab relocationunsupported STA cmd %sunsupported relocunsupported relocationunsupported relocation between data/insn address spacesunsupported relocation typeunsupported relocation type %#xusing multiple gp valuesv850 E3 architecturev850 architecturev850e architecturev850e1 architecturev850e2 architecturev850e2v3 architecturev850e3v5 architecturevariable `%s' can only be in one of the small, zero, and tiny data regionsvariable `%s' cannot be in both small and tiny data regions simultaneouslyvariable `%s' cannot be in both small and zero data regions simultaneouslyvariable `%s' cannot be in both zero and tiny data regions simultaneouslyvariable `%s' cannot occupy in multiple small data regionsvflags: 0x%02x, value: 0x%08x vma:			BeginAddress	 EndAddress	  UnwindData
+unhandled relocation %sunknownunknown EGSD subtype %dunknown ETIR command %dunknown attribute for symbol `%s': 0x%02xunknown basic type %dunknown errorunknown header byte-order value %#xunknown line command %dunknown operator '%c' in complex symbolunknown reloc %sunknown reloc %s + %sunknown source command %dunknown symbol in command %sunknown v850 architectureunknown: %xunrecognized INPUT_SECTION_FLAG %s
+unrecognized TI COFF target id '0x%x'unsupported .stab relocationunsupported STA cmd %sunsupported relocunsupported relocationunsupported relocation between data/insn address spacesunsupported relocation typeusing multiple gp valuesv850 E3 architecturev850 architecturev850e architecturev850e1 architecturev850e2 architecturev850e2v3 architecturev850e3v5 architecturevariable `%s' can only be in one of the small, zero, and tiny data regionsvariable `%s' cannot be in both small and tiny data regions simultaneouslyvariable `%s' cannot be in both small and zero data regions simultaneouslyvariable `%s' cannot be in both zero and tiny data regions simultaneouslyvariable `%s' cannot occupy in multiple small data regionsvflags: 0x%02x, value: 0x%08x vma:			BeginAddress	 EndAddress	  UnwindData
 warning, .pdata section size (%ld) is not a multiple of %d
-warning: %pB and %pB differ in wchar_t sizewarning: %pB and %pB differ in whether code is compiled for DSBTwarning: %pB does not support interworking, whereas %pB doeswarning: %pB has a corrupt section with a size (%warning: %pB has a corrupt string table index - ignoringwarning: %pB supports interworking, whereas %pB does notwarning: %pB uses %s (set by %pB), %pB uses %swarning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may failwarning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may failwarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB: conflicting platform configurationwarning: %pB: conflicting platform configuration %s with %swarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lxwarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%xwarning: %pB: corrupt no copy on protected size: 0x%xwarning: %pB: corrupt stack size: 0x%xwarning: %pB: local symbol `%s' has no sectionwarning: %pB: unknown ARC object attribute %dwarning: %pB: unknown EABI object attribute %dwarning: %pB: unknown MSPABI object attribute %dwarning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%xwarning: %s exceeds section size
+warning: %pB and %pB differ in wchar_t sizewarning: %pB and %pB differ in whether code is compiled for DSBTwarning: %pB does not support interworking, whereas %pB doeswarning: %pB has a corrupt section with a size (%warning: %pB has a corrupt string table index - ignoringwarning: %pB supports interworking, whereas %pB does notwarning: %pB use privilege spec version %u.%u.%u but the output use version %u.%u.%u.warning: %pB uses %s (set by %pB), %pB uses %swarning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may failwarning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may failwarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB: conflicting platform configurationwarning: %pB: conflicting platform configuration %s with %swarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lxwarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%xwarning: %pB: corrupt no copy on protected size: 0x%xwarning: %pB: corrupt stack size: 0x%xwarning: %pB: local symbol `%s' has no sectionwarning: %pB: unknown ARC object attribute %dwarning: %pB: unknown EABI object attribute %dwarning: %pB: unknown MSPABI object attribute %dwarning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%xwarning: %s exceeds section size
 warning: %s overlaps %s
-warning: %s section has zero sizewarning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: RL78_SYM reloc with an unknown symbolwarning: RX_SYM reloc with an unknown symbolwarning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pAwarning: alignment %u of symbol `%s' in %pB is smaller than %u in %pBwarning: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %pBwarning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with itwarning: clearing the interworking flag of %pB due to outside requestwarning: corrupt unwind data
-warning: discarding dynamic section %swarning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%swarning: gc-sections option ignoredwarning: generating a shared library containing non-PIC codewarning: generating a shared library containing non-PID codewarning: not setting interworking flag of %pB since it has already been specified as non-interworkingwarning: relocation references a different segmentwarning: section '%s' is being made into a notewarning: section `%pA' type changed to PROGBITSwarning: symbol `%s' is both section and non-sectionwarning: type and size of dynamic symbol `%s' are not definedwarning: type of symbol `%s' changed from %d to %d in %pBwarning: unable to set size of %s section in %pBwarning: unable to update contents of %s section in %pBwarning: unrecognized arch eflag '%#lx'warning: unset or old architecture flags; use default machinewarning: writing archive was slow: rewriting timestampwarning: writing section `%pA' at huge (ie negative) file offsetwarning: xdata section corrupt
-yesyou are not allowed to define %s in a scriptProject-Id-Version: bfd-2.31.90
+warning: %s section has zero sizewarning: %s should be used rather than %swarning: --enable-non-contiguous-regions discards section `%s' from '%s'
+warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: RL78_SYM reloc with an unknown symbolwarning: RX_SYM reloc with an unknown symbolwarning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pAwarning: alignment %u of symbol `%s' in %pB is smaller than %u in %pBwarning: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %pBwarning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with itwarning: clearing the interworking flag of %pB due to outside requestwarning: corrupt unwind data
+warning: discarding dynamic section %swarning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%swarning: gc-sections option ignoredwarning: generating a shared library containing non-PIC codewarning: generating a shared library containing non-PID codewarning: not setting interworking flag of %pB since it has already been specified as non-interworkingwarning: privilege spec version 1.9.1 can not be linked with other spec versions.warning: relocation references a different segmentwarning: section '%s' is being made into a notewarning: section `%pA' type changed to PROGBITSwarning: symbol `%s' is both section and non-sectionwarning: type and size of dynamic symbol `%s' are not definedwarning: type of symbol `%s' changed from %d to %d in %pBwarning: unable to set size of %s section in %pBwarning: unable to update contents of %s section in %pBwarning: unrecognized arch eflag '%#lx'warning: unset or old architecture flags; use default machinewarning: writing archive was slow: rewriting timestampwarning: writing section `%pA' at huge (ie negative) file offsetwarning: xdata section corrupt
+yesyou are not allowed to define %s in a scriptProject-Id-Version: bfd-2.34.90
 Report-Msgid-Bugs-To: bug-binutils@gnu.org
-POT-Creation-Date: 2019-01-19 16:30+0000
-PO-Revision-Date: 2019-05-15 05:58+0200
+POT-Creation-Date: 2020-07-04 10:26+0100
+PO-Revision-Date: 2020-07-09 12:30+0200
 Last-Translator: FrÃ©dÃ©ric Marchal <fmarchal@perso.be>
 Language-Team: French <traduc@traduc.org>
 Language: fr
@@ -960,19 +969,7 @@ En-tÃªtes ppcboot:
   EGSD (long=%u):
   entrÃ©e EGSD %2u (type: %u, long: %u):   EMH %u (long=%u):   base: 0x%08x %08x, taille: 0x%08x, prot: 0x%08x   base_va : 0x%08x
   dÃ©compte des bits: %u, adr base: 0x%08x
-  branchements          %lu
-  aj. branchements toc  %lu
-  branchements notoc    %lu
-  branchements les deux %lu
-  long branchements     %lu
-  aj. long toc          %lu
-  long notoc            %lu
-  long les deux         %lu
-  appels plt            %lu
-  appels plt save       %lu
-  appels plt notoc      %lu
-  appels plt les deux   %lu
-  entrÃ©es globales      %lu  appels:
+  appels:
   chgprtoff : %5u
   codeadroff: %5u, lpfixoff  : %5u
   lien correctif: 0x%08x %08x
@@ -1029,8 +1026,15 @@ En-tÃªtes ppcboot:
      		Adresse  Prolog.  Fonction 32b exc  Exception DonnÃ©es
  vma:            Hint    Temps     Avant    DLL       Premier
                  Table   Estampil. ChaÃ®ne   Nom       Thunk
-#<code d'erreur invalide>%03x %*.s  Feuilles: Adr: %#08lx, Taille: %#08lx, Codepage: %d
+#<code d'erreur invalide>%%X%%p: rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC
+%%X%%P: rÃ©adressage %s sans solution par rapport au symbole Â«Â %sÂ Â»
+%03x %*.s  Feuilles: Adr: %#08lx, Taille: %#08lx, Codepage: %d
 %03x %*.s EntrÃ©e: %C: attention: rÃ©adressage vers Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  un segment diffÃ©rent
+%F%P: %pB(%pA): erreur: une section linked-to est requise pour --gc-sections
+%F%P: %pB: le rÃ©adressage de %s par rapport au symbole absolu Â«Â %sÂ Â» dans la section Â«Â %pAÂ Â» est interdit
+%F%P: Impossible d'assigner %pA Ã  une section de sortie. RÃ©essayez sans --enable-non-contiguous-regions.
+%F%P: Impossible d'assigner Â«Â %pAÂ Â» Ã  une section de sortie. RÃ©essayez sans --enable-non-contiguous-regions.
+%F%P: Impossible d'assigner le groupe %pA de la cible %pA Ã  une section de sortie. RÃ©essayez sans --enable-non-contiguous-regions.
 %F%P: already_linked_table: %E
 %F%P: erreur d'auto recouvrement: %E
 %F%P: ne peut construire les Ã©bauches de recouvrement: %E
@@ -1079,23 +1083,22 @@ En-tÃªtes ppcboot:
 %H: erreur: %s par rapport Ã  Â«Â %sÂ Â» n'est pas un multiple de %u
 %H: erreur: %s n'est pas un multiple de %u
 %H: dÃ©bordement du branchement de correction
+%H: l'optimisation got/toc n'est pas supportÃ©e pour l'instruction %s
 %H: opÃ©rande non nul sur le rÃ©adressage %s par rapport Ã  Â«Â %sÂ Â»
 %H: le rÃ©adressage sur Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  un segment diffÃ©rent
 %H: rÃ©adressage sur Â«Â %sÂ Â»: %s
 %H: rÃ©adressage %s non supportÃ© pour la fonction indirecte %s
 %H: le rÃ©adressage fait rÃ©fÃ©rence Ã  un symbole non dÃ©fini dans le module
 %H: le rÃ©adressage en Â«Â %s+%vÂ Â» peut avoir causÃ© le problÃ¨me ci-dessus
-%H: l'optimisation toc n'est pas supportÃ©e pour l'instruction %s
 %H: %s ne peut Ãªtre rÃ©solu par rapport Ã  Â«Â %pTÂ Â»
 %H: rÃ©adressage %s sans solution par rapport au symbole Â«Â %sÂ Â»
 %H: attention: %s insn %#x inattendue.
 %P%F: --relax et -r ne peuvent pas Ãªtre utilisÃ©s en mÃªme temps
 %P%X: ne peut pas lire les symboles: %E
-%P%X: le segment en lecture seule a des rÃ©adressages IFUNC dynamiques; recompilez avec -fPIC
 %P%X: segment en lecture seule a des rÃ©adressages dynamiques
-%P: %H: le rÃ©adressage %s n'est pas supportÃ© pour bss-plt
 %P: %H: erreur: %s avec l'instruction inattendue %x
 %P: %pB: %s n'est pas supportÃ© pour le symbole Â«Â %pTÂ Â»
+%P: %pB: avertissement: %s manquant
 %P: %pB: attention: rÃ©adressage sur Â«Â %sÂ Â» dans la section en lecture seule Â«Â %pAÂ Â»
 %P: %pB: attention: rÃ©adressage dans la section Â«Â %pAÂ Â» en lecture seule
 %P: l'entrÃ©e toc de opd non trouvÃ©e pour Â«Â %pTÂ Â»
@@ -1104,7 +1107,9 @@ En-tÃªtes ppcboot:
 %P: erreur de la table de liaison vers Â«Â %pTÂ Â»
 %P: points d'entrÃ©e multiples: dans les modules %pB et %pB
 %P: lien relocalisable pas supportÃ©
-%P: attention: crÃ©ation d'un DT_TEXTREL dans un objet partagÃ©
+%P: attention: les fonctions indirectes GNU avec DT_TEXTREL pourraient rÃ©sulter en un plantage Ã  l'exÃ©cution; recompilez avec %s
+%P: attention: crÃ©ation de DT_TEXTREL dans un PIE
+%P: attention: crÃ©ation de DT_TEXTREL dans un objet partagÃ©
 %P: attention: les rÃ©adressages de textes et les fonctions indirectes GNU pourraient rÃ©sulter en un crash Ã  l'exÃ©cution
 %X%C: le rÃ©adressage vers Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  un segment diffÃ©rent
 %X%H: appel @local Ã  ifunc %s
@@ -1114,10 +1119,14 @@ En-tÃªtes ppcboot:
 %X%H: branchement entre modes ISA non supportÃ©
 %X%H: bss-plt -fPIC ifunc %s non supportÃ©
 %X%H: saut non supportÃ© entre modes ISAÂ ; envisagez de recompiler avec l'interliage activÃ©
+%X%P: %H: le rÃ©adressage %s n'est pas supportÃ© pour bss-plt
 %X%P: %pB(%pA): erreur: le rÃ©adressage pour le dÃ©calage %V n'a pas de valeur
 %X%P: %pB(%pA): rÃ©adressage Â«Â %pRÂ Â» va en dehors des limites
 %X%P: %pB(%pA): le rÃ©adressage Â«Â %pRÂ Â» n'est pas supportÃ©
 %X%P: %pB(%pA): le rÃ©adressage Â«Â %pRÂ Â» retourne une valeur %x non reconnue
+%X%P: %pB: %s vis-Ã -vis de %pT n'est pas supportÃ© par glibc comme rÃ©adressage dynamique
+%X%P: %pB: erreur: %s manquant
+%X%P: Ã©dition de lien statique tentÃ©e sur l'objet dynamique Â«Â %pBÂ Â»
 %X%P: erreur interne: erreur car hors limite
 %X%P: erreur interne: erreur inconnue
 %X%P: erreur interne: erreur car rÃ©adressage non supportÃ©
@@ -1130,17 +1139,17 @@ En-tÃªtes ppcboot:
 %XÂ«Â %sÂ Â» rÃ©fÃ©rencÃ© dans la section Â«Â %pAÂ Â» de %pB: dÃ©fini dans la section abandonnÃ©e Â«Â %pAÂ Â» de %pB
 %pA a, Ã  la fois, des sections ordonnÃ©es [Â«Â %pAÂ Â» dans %pB] et dÃ©sordonnÃ©es [Â«Â %pAÂ Â» dans %pB]%pA a, Ã  la fois, des sections ordonnÃ©es et dÃ©sordonnÃ©es%pA:0x%v le lrlive .brinfo (%u) diffÃ¨re de celui de l'analyse (%u)
 %pA:%0x%v pas trouvÃ© dans la table de fonctions
-%pB (%s): fanion de section %s (%#lx) ignorÃ©%pB .opd pas permis dans l'ABI Ã  la version %d%pB et %pB sont pour des configurations diffÃ©rentes%pB et %pB sont pour des noyaux diffÃ©rents%pB contient du code CRIS v32 incompatible avec les objets prÃ©cÃ©dents%pB contient du code non CRIS v32 incompatible avec les objets prÃ©cÃ©dents%pB utilise les deux attributs Tag_MPextension_use actuel et hÃ©ritÃ©%pB ne peut pas dÃ©finir %s%pB section %pA dÃ©passe la taille du groupe d'Ã©bauche%pB le symbole numÃ©ro %lu fait rÃ©fÃ©rence Ã  une section SHT_SYMTAB_SHNDX inexistante%pB utilise un double long 64 bits, %pB utilise un double long de 128 bits%pB utilise l'ABI de vecteurs AltiVec, %pB utilise l'ABI de vecteurs SPE%pB utilise un double long IBM, %pB utilise un double long IEEE%pB utilise la virgule flottante double prÃ©cision matÃ©rielle, %pB utilise la virgule flottante simple prÃ©cision matÃ©rielle%pB utilise la virgule flottante matÃ©rielle, %pB utilise la virgule flottante logicielle%pB utilise r3/r4 pour les retours de petites structures, %pB utilise la mÃ©moire%pB utilise le e_flags 0x%lx inconnu%pB(%pA): erreur: appel Ã  la fonction non dÃ©finie Â«Â %sÂ Â»%pB(%pA): erreur interne: rÃ©adressage dangereux%pB(%pA): erreur interne: hors limite%pB(%pA): erreur interne: erreur inconnue%pB(%pA): erreur interne: rÃ©adressage non supportÃ©%pB(%pA): table de propriÃ©tÃ© invalide%pB(%pA): l'utilisation de plusieurs modÃ¨les TLS n'est pas supportÃ©%pB(%pA): rÃ©adressage %d a un index de symbole %ld invalide%pB(%pA): symbole de bibliothÃ¨que partagÃ©e %s rencontrÃ© en rÃ©alisant une Ã©dition de liens statiques%pB(%pA): attention: les trampolines (aka veneers) de branchements longs utilisÃ©s dans la section avec l'attribut de section SHF_ARM_PURECODE n'est supportÃ© que sur les cibles M-profile implÃ©mentant l'instruction movw.%pB(%pA): attention: accÃ¨s non alignÃ© au symbole Â«Â %sÂ Â» dans la zone des petites donnÃ©es%pB(%pA): attention: accÃ¨s non alignÃ© Ã  une petite donnÃ©e de type %d%pB(%pA+%#lx): entrÃ©e des Ã©bauches a un indexe de chaÃ®ne invalide%pB(%pA+%#x): erreur: chargements multiples dÃ©tectÃ©s dans un bloc d'instruction IT qui n'est pas le dernier: le trampoline (veneer) du STM32L4XX ne peut pas Ãªtre gÃ©nÃ©rÃ©; utilisez l'option -mrestrict-it de gcc pour gÃ©nÃ©rer seulement une instruction par bloc IT%pB(%pA+0x%lx): rÃ©adressage du style 16A attendu sur l'insn 0x%08x%pB(%pA+0x%lx): rÃ©adressage du style 16D attendu sur l'insn 0x%08x%pB(%pA+0x%v): appel Ã  la section non exÃ©cutable %pB(%pA), analyse incomplÃ¨te
+%pB (%s): fanion de section %s (%#lx) ignorÃ©%pB .opd pas permis dans l'ABI Ã  la version %d%pB et %pB sont pour des configurations diffÃ©rentes%pB et %pB sont pour des noyaux diffÃ©rents%pB contient du code CRIS v32 incompatible avec les objets prÃ©cÃ©dents%pB contient du code non CRIS v32 incompatible avec les objets prÃ©cÃ©dents%pB utilise les deux attributs Tag_MPextension_use actuel et hÃ©ritÃ©%pB ne peut pas dÃ©finir %s%pB section %pA dÃ©passe la taille du groupe d'Ã©bauche%pB le symbole numÃ©ro %lu fait rÃ©fÃ©rence Ã  une section SHT_SYMTAB_SHNDX inexistante%pB utilise un double long 64 bits, %pB utilise un double long de 128 bits%pB utilise l'ABI de vecteurs AltiVec, %pB utilise l'ABI de vecteurs SPE%pB utilise un double long IBM, %pB utilise un double long IEEE%pB utilise la virgule flottante double prÃ©cision matÃ©rielle, %pB utilise la virgule flottante simple prÃ©cision matÃ©rielle%pB utilise la virgule flottante matÃ©rielle, %pB utilise la virgule flottante logicielle%pB utilise r3/r4 pour les retours de petites structures, %pB utilise la mÃ©moire%pB utilise le e_flags 0x%lx inconnu%pB(%pA): erreur: appel Ã  la fonction non dÃ©finie Â«Â %sÂ Â»%pB(%pA): erreur: rÃ©adressages internes manquants pour la section de rÃ©adressage secondaire%pB:%pA: erreur: l'entrÃ©e %u de la table de rÃ©adressage est vide%pB(%pA): erreur: le rÃ©adressage secondaire %u est d'un type inconnu%pB(%pA): erreur: le rÃ©adressage secondaire %u fait rÃ©fÃ©rence Ã  un symbole supprimÃ©%pB(%pA): erreur: le rÃ©adressage secondaire %u fait rÃ©fÃ©rence Ã  un symbole manquant%pB(%pA): erreur: la section de rÃ©adressage secondaire est videÂ !%pB(%pA): erreur: le section de rÃ©adressage secondaire est compressÃ©e deux fois%pB(%pA): l'index de la section d'information ne peut pas Ãªtre dÃ©fini car la section n'est pas dans la sortie%pB(%pA): l'index de la section d'information est invalide%pB(%pA): erreur interne: rÃ©adressage dangereux%pB(%pA): erreur interne: hors limite%pB(%pA): erreur interne: erreur inconnue%pB(%pA): erreur interne: rÃ©adressage non supportÃ©%pB(%pA): table de propriÃ©tÃ© invalide%pB(%pA): la section de liaison ne peut pas Ãªtre dÃ©finie car le fichier de sortie n'a pas de table de symboles%pB(%pA): l'utilisation de plusieurs modÃ¨les TLS n'est pas supportÃ©%pB(%pA): rÃ©adressage %d a un index de symbole %ld invalide%pB(%pA): symbole de bibliothÃ¨que partagÃ©e %s rencontrÃ© en rÃ©alisant une Ã©dition de liens statiques%pB(%pA): attention: les trampolines (aka veneers) de branchements longs utilisÃ©s dans la section avec l'attribut de section SHF_ARM_PURECODE n'est supportÃ© que sur les cibles M-profile implÃ©mentant l'instruction movw.%pB(%pA): attention: accÃ¨s non alignÃ© au symbole Â«Â %sÂ Â» dans la zone des petites donnÃ©es%pB(%pA): attention: accÃ¨s non alignÃ© Ã  une petite donnÃ©e de type %d%pB(%pA+%#lx): entrÃ©e des Ã©bauches a un indexe de chaÃ®ne invalide%pB(%pA+%#x): erreur: chargements multiples dÃ©tectÃ©s dans un bloc d'instruction IT qui n'est pas le dernier: le trampoline (veneer) du STM32L4XX ne peut pas Ãªtre gÃ©nÃ©rÃ©; utilisez l'option -mrestrict-it de gcc pour gÃ©nÃ©rer seulement une instruction par bloc IT%pB(%pA+0x%lx): rÃ©adressage du style 16A attendu sur l'insn 0x%08x%pB(%pA+0x%lx): rÃ©adressage du style 16D attendu sur l'insn 0x%08x%pB(%pA+0x%v): appel Ã  la section non exÃ©cutable %pB(%pA), analyse incomplÃ¨te
 %pB(%s): attention: l'inter-rÃ©seautage n'est pas activÃ©; premiÃ¨re occurrence: %pB: appel %s Ã  %s%pB, section %pA:
-  rÃ©adressage de %s pas valable dans un objet partagÃ©; typiquement un mÃ©lange dans les options. Recompilez avec -fPIC%pB, section %pA: pas de PLT pour rÃ©adresser %s sur le symbole Â«Â %sÂ Â»%pB, section %pA: Pas de PLT ni de GOT pour rÃ©adresser %s sur le symbole Â«Â %sÂ Â»%pB, section %pA: rÃ©adressage de %s a une rÃ©fÃ©rence non dÃ©finie vers Â«Â %sÂ Â», peut-Ãªtre un mÃ©lange dans les dÃ©clarationsÂ ?%pB, section %pA: rÃ©adressage de %s n'est pas permis pour Â«Â %sÂ Â», un symbole global avec la visibilitÃ© par dÃ©faut, peut-Ãªtre un mÃ©lange dans les dÃ©clarationsÂ ?%pB, section %pA: le rÃ©adressage de %s n'est pas permis pour le symbole global: Â«Â %sÂ Â»%pB, section %pA: rÃ©adressage de %s n'est pas permis pour le symbole Â«Â %sÂ Â» qui est dÃ©fini en dehors du programme, peut-Ãªtre un mÃ©lange dans les dÃ©clarationsÂ ?%pB, section %pA: rÃ©adressage de %s ne devrait pas Ãªtre utilisÃ© dans un objet partagÃ©; recompilez avec -fPIC%pB, section %pA: rÃ©adressage de %s sans GOT%pB, section %pA: rÃ©adressage %s non rÃ©solu sur le symbole Â«Â %sÂ Â»%pB, section %pA: l'objet compatible v10/v32 ne peut pas contenir de rÃ©adressage PIC%pB, section Â«Â %pAÂ Â», vers le symbole Â«Â %sÂ Â»: rÃ©adressage de %s ne devrait pas Ãªtre utilisÃ© dans un objet partagÃ©; recompilez avec -fPIC%pB: rÃ©adressage !samegp vers le symbole sans .prologue: %s%pB: %pA taille de section d'entrÃ©e invalide%pB: %pA pas dans l'ordre%pB: %pA pointe au delÃ  de la fin de la section texte%pB: %pA: dÃ©bordement de rÃ©adressage: %#x > 0xffff%pB: dÃ©saccord du fanion %s avec les modules prÃ©cÃ©dents%pB: %s pas supportÃ©%pB: %s pas supportÃ©%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole normal et comme symbole locale au thread%pB: %s: version requise invalide %d%pB: %s: version invalide %u (max %d)%pB: %s: dÃ©bordement de rÃ©adressage: 0x%lx > 0xffff%pB: symbole Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme normal et comme local au thread%pB: --in-implib uniquement supportÃ© pour les bibliothÃ¨ques d'import Secure Gateway%pB: entrÃ©e .gnu.version_d invalide%pB: entrÃ©e .gnu.version_r invalide%pB: le sous-segment .got excÃ¨de 64K (taille %d)%pB: .opd n'est pas un tableau rÃ©gulier d'entrÃ©es opd%pB: section .preinit_array n'est pas permise dans DSO%pB: Ã©chec de la fusion de .rsrc: section .rsrc corrompue%pB: Ã©chec de la fusion de .rsrc: taille de .rsrc inattendue%pB: rÃ©adressage @gprel vers le symbole dynamique %s%pB: branchement @internal vers le symbole dynamique %s%pB: rÃ©adressage @pcrel vers le symbole dynamique %s%pB: ABI est incompatible avec celui sÃ©lectionnÃ© pour l'Ã©mulation%pB: l'ABI est incompatible avec celle de l'Ã©mulation sÃ©lectionnÃ©e:
-  l'Ã©mulation de la cible Â«Â %sÂ Â» ne correspond pas Ã  Â«Â %sÂ Â»%pB: ABI ne concorde pas: Ã©dition de lien du module %s avec les modules prÃ©cÃ©dents %s%pB: la version ABI %ld n'est pas compatible avec la sortie de l'ABI version %ld%pB: ASE ne concorde pas: Ã©dition de lien du module %s avec les modules prÃ©cÃ©dents %s%pB: les images BE8 ne sont valables qu'en mode gros boutiste%pB: Impossible de gÃ©rer une taille de valeur de rÃ©adressage de %d%pB: Descripteur de fonction rÃ©adressÃ© avec un opÃ©rande non nul%pB: la section GNU_MBIN Â«Â %pAÂ Â» a un champ sh_info invalide: %d%pB: dÃ©bordement GOT: nombre de rÃ©adressages avec des offsets de 8 ou 16 bits > %d%pB: dÃ©bordement GOT: nombre de rÃ©adressages avec des offsets de 8 bits > %d%pB: Taille de vecteur ISR en dÃ©saccord avec les modules prÃ©cÃ©dents: prÃ©cÃ©dent a %u octets; actuel a %u octets%pB: RÃ©adressages en format ELF gÃ©nÃ©rique (EM: %d)%pB: rÃ©adressage relatif Ã  SB mais __c6xabi_DSBT_BASE n'est pas dÃ©fini%pB: la section SHT_GROUP [index %d] n'a pas de section SHF_GROUP%pB: code exÃ©cutable local TLS ne peut Ãªtre liÃ© en objets partagÃ©s%pB: Les sections TLS ne sont pas adjacentes:%pB: La premiÃ¨re section dans le segment PT_DYNAMIC n'est pas la section .dynamic%pB: objet XCOFF partagÃ© alors qu'on ne produit pas de sortie XCOFF%pB: __gp ne couvre pas le segment de donnÃ©es court%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole FDPIC et comme symbole local au thread%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole normal et comme symbole FDPIC%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole normal et comme symbole locale au thread%pB: Â«Â %sÂ Â» est ses symboles spÃ©ciaux sont dans des sections diffÃ©rentes%pB: Â«Â %sÂ Â» contient des numÃ©ros de lignes mais de section d'encadrement%pB: Â«Â %sÂ Â» est dans le chargeur de rÃ©adressage mais pas dans celui des symboles%pB: rÃ©adressage non-PLT Â«Â %sÂ Â» pour le symbole dÃ©fini dans une bibliothÃ¨que partagÃ©e et accÃ©dÃ© depuis l'exÃ©cutable (recompilez le fichier avec -fPICÂ ?)%pB: symbole standard Â«Â %sÂ Â» absent%pB: l'opÃ©rande devrait Ãªtre zÃ©ro pour des rÃ©adressages got%pB: l'opÃ©rande devrait Ãªtre zÃ©ro pour des rÃ©adressages plt%pB: l'en-tÃªte aout spÃ©cifie un nombre invalide d'entrÃ©es de rÃ©pertoire de donnÃ©es: %ld%pB: l'architecture ne concorde pas avec les modules prÃ©cÃ©dents%pB: tentative de charger des chaÃ®nes depuis une section non-chaÃ®nes (numÃ©ro %d)%pB: tentative de mÃ©langer des objets FDPIC et non-FDPIC%pB: tentative d'Ã©crire un type de rÃ©adressage inconnu%pB: mauvais enregistrement de rÃ©adressage importÃ©: %d%pB: nom de section de rÃ©adressage erronÃ© Â«Â %sÂ Â»%pB: longueur erronÃ©e de section dans ihex_read_section%pB: DÃ©finition de symbole erronÃ©e: Â«Â MainÂ Â» initialisÃ© Ã  %s au lieu de l'adresse de dÃ©part %s
+  rÃ©adressage de %s pas valable dans un objet partagÃ©; typiquement un mÃ©lange dans les options. Recompilez avec -fPIC%pB, section %pA: pas de PLT pour rÃ©adresser %s sur le symbole Â«Â %sÂ Â»%pB, section %pA: Pas de PLT ni de GOT pour rÃ©adresser %s sur le symbole Â«Â %sÂ Â»%pB, section %pA: rÃ©adressage de %s a une rÃ©fÃ©rence non dÃ©finie vers Â«Â %sÂ Â», peut-Ãªtre un mÃ©lange dans les dÃ©clarationsÂ ?%pB, section %pA: rÃ©adressage de %s n'est pas permis pour Â«Â %sÂ Â», un symbole global avec la visibilitÃ© par dÃ©faut, peut-Ãªtre un mÃ©lange dans les dÃ©clarationsÂ ?%pB, section %pA: le rÃ©adressage de %s n'est pas permis pour le symbole global: Â«Â %sÂ Â»%pB, section %pA: rÃ©adressage de %s n'est pas permis pour le symbole Â«Â %sÂ Â» qui est dÃ©fini en dehors du programme, peut-Ãªtre un mÃ©lange dans les dÃ©clarationsÂ ?%pB, section %pA: rÃ©adressage de %s ne devrait pas Ãªtre utilisÃ© dans un objet partagÃ©; recompilez avec -fPIC%pB, section %pA: rÃ©adressage de %s sans GOT%pB, section %pA: rÃ©adressage %s non rÃ©solu sur le symbole Â«Â %sÂ Â»%pB, section %pA: l'objet compatible v10/v32 ne peut pas contenir de rÃ©adressage PIC%pB, section Â«Â %pAÂ Â», vers le symbole Â«Â %sÂ Â»: rÃ©adressage de %s ne devrait pas Ãªtre utilisÃ© dans un objet partagÃ©; recompilez avec -fPIC%pB: rÃ©adressage !samegp vers le symbole sans .prologue: %s%pB: %pA taille de section d'entrÃ©e invalide%pB: %pA pas dans l'ordre%pB: %pA pointe au delÃ  de la fin de la section texte%pB: %pA: dÃ©bordement de rÃ©adressage: %#x > 0xffff%pB: dÃ©saccord du fanion %s avec les modules prÃ©cÃ©dents%pB: symbole locale %s Ã  l'index %lu (>= sh_info de %lu)%pB: %s pas supportÃ©%pB: %s pas supportÃ©%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole normal et comme symbole locale au thread%pB: %s: version requise invalide %d%pB: %s: version invalide %u (max %d)%pB: %s: dÃ©bordement de rÃ©adressage: 0x%lx > 0xffff%pB: symbole Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme normal et comme local au thread%pB: --in-implib uniquement supportÃ© pour les bibliothÃ¨ques d'import Secure Gateway%pB: entrÃ©e .gnu.version_d invalide%pB: entrÃ©e .gnu.version_r invalide%pB: le sous-segment .got excÃ¨de 64K (taille %d)%pB: .opd n'est pas un tableau rÃ©gulier d'entrÃ©es opd%pB: section .preinit_array n'est pas permise dans DSO%pB: Ã©chec de la fusion de .rsrc: section .rsrc corrompue%pB: Ã©chec de la fusion de .rsrc: taille de .rsrc inattendue%pB: rÃ©adressage @gprel vers le symbole dynamique %s%pB: branchement @internal vers le symbole dynamique %s%pB: rÃ©adressage @pcrel vers le symbole dynamique %s%pB: ABI est incompatible avec celui sÃ©lectionnÃ© pour l'Ã©mulation%pB: l'ABI est incompatible avec celle de l'Ã©mulation sÃ©lectionnÃ©e:
+  l'Ã©mulation de la cible Â«Â %sÂ Â» ne correspond pas Ã  Â«Â %sÂ Â»%pB: ABI ne concorde pas: Ã©dition de lien du module %s avec les modules prÃ©cÃ©dents %s%pB: la version ABI %ld n'est pas compatible avec la sortie de l'ABI version %ld%pB: ASE ne concorde pas: Ã©dition de lien du module %s avec les modules prÃ©cÃ©dents %s%pB: les images BE8 ne sont valables qu'en mode gros boutiste%pB: Impossible de gÃ©rer une taille de valeur de rÃ©adressage de %d%pB: Descripteur de fonction rÃ©adressÃ© avec un opÃ©rande non nul%pB: la section GNU_MBIND Â«Â %pAÂ Â» a un champ sh_info invalide: %d%pB: dÃ©bordement GOT: nombre de rÃ©adressages avec des offsets de 8 ou 16 bits > %d%pB: dÃ©bordement GOT: nombre de rÃ©adressages avec des offsets de 8 bits > %d%pB: Taille de vecteur ISR en dÃ©saccord avec les modules prÃ©cÃ©dents: prÃ©cÃ©dent a %u octets; actuel a %u octets%pB: RÃ©adressages en format ELF gÃ©nÃ©rique (EM: %d)%pB: rÃ©adressage relatif Ã  SB mais __c6xabi_DSBT_BASE n'est pas dÃ©fini%pB: la section SHT_GROUP [index %d] n'a pas de section SHF_GROUP%pB: code exÃ©cutable local TLS ne peut Ãªtre liÃ© en objets partagÃ©s%pB: rÃ©adressage TLS %s sur le symbole indÃ©fini Â«Â %sÂ Â»%pB: Les sections TLS ne sont pas adjacentes:%pB: La premiÃ¨re section dans le segment PT_DYNAMIC n'est pas la section .dynamic%pB: Impossible de gÃ©rer l'indice de section %x dans le symbole ELF. Utilisation de ABS Ã  la place.%pB: objet XCOFF partagÃ© alors qu'on ne produit pas de sortie XCOFF%pB: __gp ne couvre pas le segment de donnÃ©es court%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole FDPIC et comme symbole local au thread%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole normal et comme symbole FDPIC%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole normal et comme symbole locale au thread%pB: Â«Â %sÂ Â» est ses symboles spÃ©ciaux sont dans des sections diffÃ©rentes%pB: Â«Â %sÂ Â» contient des numÃ©ros de lignes mais de section d'encadrement%pB: Â«Â %sÂ Â» est dans le chargeur de rÃ©adressage mais pas dans celui des symboles%pB: rÃ©adressage non-PLT Â«Â %sÂ Â» pour le symbole dÃ©fini dans une bibliothÃ¨que partagÃ©e et accÃ©dÃ© depuis l'exÃ©cutable (recompilez le fichier avec -fPICÂ ?)%pB: symbole standard Â«Â %sÂ Â» absent%pB: l'opÃ©rande devrait Ãªtre zÃ©ro pour des rÃ©adressages got%pB: l'opÃ©rande devrait Ãªtre zÃ©ro pour des rÃ©adressages plt%pB: l'en-tÃªte aout spÃ©cifie un nombre invalide d'entrÃ©es de rÃ©pertoire de donnÃ©es: %u%pB: l'architecture ne concorde pas avec les modules prÃ©cÃ©dents%pB: tentative de charger des chaÃ®nes depuis une section non-chaÃ®nes (numÃ©ro %d)%pB: tentative de mÃ©langer des objets FDPIC et non-FDPIC%pB: tentative d'Ã©crire un type de rÃ©adressage inconnu%pB: mauvais enregistrement de rÃ©adressage importÃ©: %d%pB: nom de section de rÃ©adressage erronÃ© Â«Â %sÂ Â»%pB: longueur erronÃ©e de section dans ihex_read_section%pB: DÃ©finition de symbole erronÃ©e: Â«Â MainÂ Â» initialisÃ© Ã  %s au lieu de l'adresse de dÃ©part %s
 %pB: symbole index erronÃ©: %d%pB: rÃ©adressage base plus dÃ©calage vers le symbole registre: %s dans %pA%pB: rÃ©adressage base plus dÃ©calage vers le symbole registre: (inconnu) dans %pA%pB: ne peut reprÃ©senter la section Â«Â %pAÂ Â» dans le fichier format objet a.out%pB: ne peut reprÃ©senter la section pour le symbole Â«Â %sÂ Â» dans le fichier format objet a.out%pB: impossible de rÃ©aliser l'Ã©dition de liens des modules %s avec les modules %s%pB: impossible de faire l'Ã©dition de lien avec une autre cible%pB: ne peut pas allouer un nom de fichier pour le no. de fichier %d, %d octets
-%pB: ne peut crÃ©er l'entrÃ©e de l'Ã©bauche %s%pB: les binaires compressÃ©s pour Alpha ne sont pas supportÃ©s; utilisez les options du compilateur ou objZ pour produire des binaires non compressÃ©s%pB: ne peut lier un fichier objet fdpic dans un exÃ©cutable non fdpic%pB: ne peut lier un fichier objet non fdpic dans un exÃ©cutable fdpic%pB: ne peut lier ensemble les objets %s et %s%pB: changÃ© dans le GP: BRSGP %s%pB: classe %d symbole Â«Â %sÂ Â» n'a pas d'entrÃ©e auxiliaire%pB: compilÃ© %s -mtune=%s et liÃ© avec des modules compilÃ©s %s -mtune=%s%pB: compilÃ© pour un systÃ¨me Ã  64 bits et la cible est de 32 bits%pB: compilÃ© pour un systÃ¨me Ã  octets de poids fort alors que la cible est un systÃ¨me Ã  octets de poids faible%pB: compilÃ© pour un systÃ¨me Ã  octets de poids faible alors que la cible est un systÃ¨me Ã  octets de poids fort%pB: compilÃ© normalement et fait l'Ã©dition de lien avec les modules compilÃ©s avec -mrelocatable%pB: compilÃ© avec %s et liÃ© avec les modules compilÃ©s avec %s%pB: compilÃ© avec %s et liÃ© avec les modules qui utilisent le rÃ©adressage non PIC%pB: compilÃ© avec -mrelocatable et fait l'Ã©dition de lien avec les modules compilÃ©s normalement%pB: ne peut repÃ©rer la section de sortie %pA pour la section d'entrÃ©e %pA%pB: ne peut pas lire le contenu de la section Â«Â %pAÂ Â»
+%pB: impossible d'allouer la mÃ©moire pour les entrÃ©es locales GOT%pB: ne peut crÃ©er l'entrÃ©e de l'Ã©bauche %s%pB: les binaires compressÃ©s pour Alpha ne sont pas supportÃ©s; utilisez les options du compilateur ou objZ pour produire des binaires non compressÃ©s%pB: ne peut lier un fichier objet fdpic dans un exÃ©cutable non fdpic%pB: ne peut lier un fichier objet non fdpic dans un exÃ©cutable fdpic%pB: ne peut lier ensemble les objets %s et %s%pB: changÃ© dans le GP: BRSGP %s%pB: classe %d symbole Â«Â %sÂ Â» n'a pas d'entrÃ©e auxiliaire%pB: compilÃ© %s -mtune=%s et liÃ© avec des modules compilÃ©s %s -mtune=%s%pB: compilÃ© pour un systÃ¨me Ã  64 bits et la cible est de 32 bits%pB: compilÃ© pour un systÃ¨me Ã  octets de poids fort alors que la cible est un systÃ¨me Ã  octets de poids faible%pB: compilÃ© pour un systÃ¨me Ã  octets de poids faible alors que la cible est un systÃ¨me Ã  octets de poids fort%pB: compilÃ© normalement et fait l'Ã©dition de lien avec les modules compilÃ©s avec -mrelocatable%pB: compilÃ© avec %s et liÃ© avec les modules compilÃ©s avec %s%pB: compilÃ© avec %s et liÃ© avec les modules qui utilisent le rÃ©adressage non PIC%pB: compilÃ© avec -mrelocatable et fait l'Ã©dition de lien avec les modules compilÃ©s normalement%pB: ne peut repÃ©rer la section de sortie %pA pour la section d'entrÃ©e %pA%pB: ne peut pas lire le contenu de la section Â«Â %pAÂ Â»
 %pB: csect Â«Â %sÂ Â» n'est pas dans un section d'encadrement%pB: le rÃ©adressage GOT direct %s vers Â«Â %sÂ Â» sans registre de base ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: le rÃ©adressage GOT direct R_386_GOT32X sur le symbole Â«Â %sÂ Â» sans registre de base ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: directive LOCAL valide seulement avec un registre ou une valeur absolue%pB: rÃ©adressage relatif au dtp vers le symbole dynamique %s%pB: Ã©bauche d'exportation en double %s%pB: section dupliquÃ©e Â«Â %pAÂ Â» a des contenus diffÃ©rents
 %pB: section dupliquÃ©e Â«Â %pAÂ Â» avec des tailles diffÃ©rentes
 %pB: objet dynamique sans section .loader%pB: rÃ©adressage dynamique sur Â«Â %pTÂ Â» dans la section en lecture seule Â«Â %pAÂ Â»
 %pB: rÃ©adressage dynamique dans une section en lecture seule Â«Â %pAÂ Â»
-%pB: systÃ¨me de poids fort ou faible incompatible avec celui sÃ©lectionnÃ© pour l'Ã©mulation%pB: la fonction Â«Â %sÂ Â» d'entrÃ©e est vide%pB: fonction Â«Â %sÂ Â» d'entrÃ©e par Ã©crite%pB: erreur: non concordance de l'ABI avec les modules prÃ©cÃ©dents%pB: erreur: l'Ã©bauche d'erratum du Cortex A8 est allouÃ©e Ã  un emplacement peu sÃ»r%pB: erreur: l'Ã©bauche d'erratum du Cortex A8 est hors limite (fichier d'entrÃ©e trop grand)%pB: erreur: segment PHDR non couvert par le segment LOAD%pB: erreur: vernis VFP11 hors limite%pB: erreur: l'alignement Ã  la puissance %d de la section Â«Â %pAÂ Â» est trop grand%pB: erreur: section d'attributs Â«Â %pAÂ Â» trop grande: %llx%pB: erreur: impossible de crÃ©er le trampoline (veneer) du STM32L4XX.%pB: erreur: les donnÃ©es de dÃ©bogage s'arrÃªtent aprÃ¨s la fin du rÃ©pertoire de dÃ©bogage%pB: erreur: l'Ã©bauche d'erratum du 835769 est hors limite (fichier d'entrÃ©e trop grand)%pB: erreur: l'Ã©bauche d'erratum du 843419 est hors limite (fichier d'entrÃ©e trop grand)%pB: erreur: le jeu d'instructions ne concorde par avec les modules prÃ©cÃ©dents%pB: erreur: multiple dÃ©finitions de Â«Â %sÂ Â»; dÃ©but de %s est initialisÃ© dans un prÃ©cÃ©dent fichier liÃ©%pB: erreur: le segment de non-chargement %d inclus un en-tÃªte de fichier ou de programme%pB: erreur: search_nds32_elf_blank rapporte le mauvais nÅ“ud%pB: erreur: symbole Â«Â %sÂ Â» inattendu dans la section COMDAT%pB: erreur: l'attribut d'objet EABI obligatoire %d est manquant%pB: impossible de trouver la section d'information pour la section %d%pB: impossible de trouver la section de liaison pour la section %d%pB: Ã©chec de la gÃ©nÃ©ration de la bibliothÃ¨que d'importation%pB: Ã©chec lors de la lecture de la section des donnÃ©es de dÃ©bogage%pB: fatal: symboles gÃ©nÃ©riques rÃ©cupÃ©rÃ©s avant la relÃ¢che%pB: classe de fichier %s incompatible avec %s%pB: rÃ©adressage gotoff vers le symbole dynamique %s%pB: rÃ©adressage relatif au gp vers le symbole dynamique %s%pB: la section de groupe Â«Â %pAÂ Â» n'a pas de contenu%pB: symbole cachÃ© Â«Â %sÂ Â» dans %pB est rÃ©fÃ©rencÃ© par DSO%pB: symbole cachÃ© Â«Â %sÂ Â» n'est pas dÃ©fini%pB: ignore les sections dupliquÃ©es Â«Â %pAÂ Â»
+%pB: systÃ¨me de poids fort ou faible incompatible avec celui sÃ©lectionnÃ© pour l'Ã©mulation%pB: la fonction Â«Â %sÂ Â» d'entrÃ©e est vide%pB: fonction Â«Â %sÂ Â» d'entrÃ©e par Ã©crite%pB: erreur: non concordance de l'ABI avec les modules prÃ©cÃ©dents%pB: erreur: l'Ã©bauche d'erratum du Cortex A8 est allouÃ©e Ã  un emplacement peu sÃ»r%pB: erreur: l'Ã©bauche d'erratum du Cortex A8 est hors limite (fichier d'entrÃ©e trop grand)%pB: erreur: segment PHDR non couvert par le segment LOAD%pB: erreur: vernis VFP11 hors limite%pB: erreur: l'alignement Ã  la puissance %d de la section Â«Â %pAÂ Â» est trop grand%pB: erreur: section d'attributs Â«Â %pAÂ Â» trop grande: %llx%pB: erreur: impossible de crÃ©er le trampoline (veneer) du STM32L4XX.%pB: erreur: les donnÃ©es de dÃ©bogage s'arrÃªtent aprÃ¨s la fin du rÃ©pertoire de dÃ©bogage%pB: erreur: l'Ã©bauche d'erratum du 835769 est hors limite (fichier d'entrÃ©e trop grand)%pB: erreur: erratum 843419 immÃ©diat 0x%%pB: erreur: l'Ã©bauche d'erratum du 843419 est hors limite (fichier d'entrÃ©e trop grand)%pB: erreur: le jeu d'instructions ne concorde par avec les modules prÃ©cÃ©dents%pB: erreur: multiple dÃ©finitions de Â«Â %sÂ Â»; dÃ©but de %s est initialisÃ© dans un prÃ©cÃ©dent fichier liÃ©%pB: erreur: le segment de non-chargement %d inclus un en-tÃªte de fichier ou de programme%pB: erreur: search_nds32_elf_blank rapporte le mauvais nÅ“ud%pB: erreur: symbole Â«Â %sÂ Â» inattendu dans la section COMDAT%pB: erreur: l'attribut d'objet EABI obligatoire %d est manquant%pB: impossible de trouver la section d'information pour la section %d%pB: impossible de trouver la section de liaison pour la section %d%pB: Ã©chec de la gÃ©nÃ©ration de la bibliothÃ¨que d'importation%pB: Ã©chec lors de la lecture de la section des donnÃ©es de dÃ©bogage%pB: fatal: symboles gÃ©nÃ©riques rÃ©cupÃ©rÃ©s avant la relÃ¢che%pB: classe de fichier %s incompatible avec %s%pB: rÃ©adressage gotoff vers le symbole dynamique %s%pB: rÃ©adressage relatif au gp vers le symbole dynamique %s%pB: la section de groupe Â«Â %pAÂ Â» n'a pas de contenu%pB: symbole cachÃ© Â«Â %sÂ Â» dans %pB est rÃ©fÃ©rencÃ© par DSO%pB: symbole cachÃ© Â«Â %sÂ Â» n'est pas dÃ©fini%pB: ignore les sections dupliquÃ©es Â«Â %pAÂ Â»
 %pB: nom illÃ©gal de section Â«Â %pAÂ Â»%pB: symbole index %ld illÃ©gal dans les rÃ©adressages%pB: type de machine incompatible; sortie est 0x%x; entrÃ©e est 0x%x%pB: taille incorrecte pour le symbole Â«Â %sÂ Â»%pB: symbole indirect Â«Â %sÂ Â» vers Â«Â %sÂ Â» est une boucle%pB: jeu d'instructions ne concorde par avec les modules prÃ©cÃ©dents%pB: erreur interne dans ihex_read_section%pB: erreur interne, registre interne de section %pA contient quelque chose
 %pB: erreur interne, table de symbole a changÃ© de taille de %d Ã  %d mots
 %pB: symbole interne Â«Â %sÂ Â» dans %pB est rÃ©fÃ©rencÃ© par DSO%pB: symbole interne Â«Â %sÂ Â» n'est pas dÃ©fini%pB: entrÃ©e invalide dans la section SHT_GROUP [%u]%pB: entrÃ©e de bibliothÃ¨que d'importation invalide: Â«Â %sÂ Â»; le symbole devrait Ãªtre absolu, global et faire rÃ©fÃ©rence Ã  des fonctions Thumb%pB: lien %u invalide pour la section de rÃ©adressages %s (index %u)%pB: fichier mmo invalide: YZ de lop_end (%ld) n'est pas Ã©gal au nombre de tetras du lop_stab prÃ©cÃ©dent (%ld)
@@ -1157,11 +1166,23 @@ En-tÃªtes ppcboot:
 %pB: fichier mmo invalide: lop_end n'est pas le dernier Ã©lement dans le fichier
 %pB: fichier mmo invalide: lopcode Â«Â %dÂ Â» non supportÃ©
 %pB: champ sh_link (%d) invalide dans la section numÃ©ro %d%pB: symbole spÃ©cial Â«Â %sÂ Â» invalide; il doit Ãªtre un symbole de fonction global ou faible%pB: symbole standard Â«Â %sÂ Â» invalide; il doit Ãªtre un symbole de fonction global ou faible%pB: table de symboles invalide: symbole Â«Â %sÂ Â» dupliquÃ©
-%pB: dÃ©bordement du nombre de lignes: 0x%lx > 0xffff%pB: Ã©dition de liens du module %s avec les modules prÃ©cÃ©dents %s%pB: Ã©dition de liens de code 32 bits avec du code 64 bits%pB: Ã©dition de liens entre fichiers 64 bits et fichiers 32 bits%pB: Ã©dition de liens spÃ©cifiques pour UltraSPARC avec du code spÃ©cifique HAL%pB: Ã©dition de liens entre fichiers auto-pic et fichiers non-auto-pic%pB: Ã©dition de liens entre des fichiers Ã  octets de poids fort et des fichiers Ã  octets de poids faible%pB: Ã©dition de liens entre fichiers constant-gp et fichiers non-constant-gp%pB: fichiers liÃ©s compilÃ©s pour des entiers de 16 bits (-mshort) et d'autres pour des entiers de 32 bits%pB: fichiers liÃ©s compilÃ©s pour des doubles de 32 bits (-fshort-double) et d'autres pour des doubles de 64 bits%pB: certains fichiers liÃ©s compilÃ©s pour HCS12 avec d'autres compilÃ©s pour HC12%pB: Ã©dition de liens pour des fichiers Ã  octets de poids faible avec des fichiers Ã  octets de poids fort%pB: liaison de code non-pic dans un exÃ©cutable Ã  position indÃ©pendante%pB: Ã©dition de liens trap-on-NULL-dereference avec des fichiers non-trapping%pB: chargeur de rÃ©adressages dans la section %pA en lecture seule%pB: chargeur de rÃ©adressage dans une section non reconnue Â«Â %sÂ Â»%pB: symbole local Â«Â %sÂ Â» dans %pB est rÃ©fÃ©rencÃ© par DSO%pB: la table des descripteurs de symboles locaux peut Ãªtre NULL en application le rÃ©adressage %s sur un symbole local%pB: fanion machine en conflit avec la cible%pB: rÃ©adressage mal composÃ© dÃ©tectÃ© dans la section %pA%pB: rÃ©adressage mal composÃ© dÃ©tectÃ© dans la section %s%pB: XTY_LD Â«Â %sÂ Â» mal placÃ©%pB: OMIT_FP imbriquÃ©s dans %pA%pB: pas de noyau pour allouer un symbole de %d octets de longueur%pB: pas de noyau pour allouer un nom de section %s%pB: aucune info de groupe pour la section Â«Â %pAÂ Â»%pB: pas de registre initialisÃ©; section de longueur 0
-%pB: aucun symbole trouvÃ© dans la bibliothÃ¨que d'importation%pB: pas de section de version de symbole pour le symbole avec version Â«Â %sÂ Â»%pB: aucune section de groupe valable trouvÃ©e%pB: code non pic avec des rÃ©adressages imm vers le symbole dynamique Â«Â %sÂ Â»%pB: rÃ©adressage non-pic vers le symbole dynamique %s%pB: pas suffisamment d'espace pour les en-tÃªtes du programme, essayer l'option -N%pB: seuls les registres %%g[2367] peuvent Ãªtre dÃ©clarÃ©s en utilisant les registres STT_REGISTER%pB: pas assez de mÃ©moire en crÃ©ant le nom pour une section vide%pB: pas assez de mÃ©moire dans _bfd_elf_get_property%pB: la taille de page est trop grande (0x%x)%pB: rÃ©adressage relatif au PC vers le symbole dynamique %s%pB: rÃ©adressage relatif au PC vers le symbole faible non dÃ©fini %s%pB: le greffon doit gÃ©rer l'objet lto%pB: probablement compilÃ© sans -fPICÂ ?%pB: symbole protÃ©gÃ© Â«Â %sÂ Â» n'est pas dÃ©fini%pB: type de machine reconnue mais non traitÃ©e (0x%x) dans l'archive da la librairie de formats d'importation%pB: rÃ©adressage de registre vers le symbole non-registre: %s dans %pA%pB: rÃ©adressage de registre vers le symbole non-registre: (inconnu) dans %pA%pB: rÃ©adressage par rapport Ã  un index de symbole inexistant: %ld%pB: lien relocalisable de %s vers %s n'est pas supportÃ©%pB: rÃ©adressage %s vers %s%sÂ«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en crÃ©ant %s%s%pB: le rÃ©adressage %s sur le symbole STT_GNU_IFUNC Â«Â %sÂ Â» n'est pas gÃ©rÃ© par %s%pB: le rÃ©adressage %s sur le symbole STT_GNU_IFUNC Â«Â %sÂ Â» n'est pas supportÃ©%pB: le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en crÃ©ant un objet partagÃ©%pB: rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC%pB: rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC%pB: le rÃ©adressage de %s vers le symbole externe ou non dÃ©fini Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en construisant un %s; recompilez avec -fPIC%pB: le rÃ©adressage %s sur le symbole Â«Â %sÂ Â» n'est pas supportÃ© en mode x32%pB: rÃ©adressage de %s en vertu du symbol Â«Â %sÂ Â» qui peut Ãªtre liÃ© avec l'extÃ©rieur ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC%pB: rÃ©adressage de %s ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC%pB: rÃ©adressage %s ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: rÃ©adressage R_386_GOTOFF vers la %s protÃ©gÃ©e Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: rÃ©adressage R_386_GOTOFF sur le symbole %s Â«Â %sÂ Â» non dÃ©fini ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: rÃ©adressage R_X86_64_GOTOFF64 vers la %s protÃ©gÃ©e Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: rÃ©adressage R_X86_64_GOTOFF64 sur le symbole %s Â«Â %sÂ Â» non dÃ©fini ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: taille du rÃ©adressage ne concorde pas dans %pB section %pA%pB: rÃ©adressages en format ELF gÃ©nÃ©rique (EM: %d)%pB: rÃ©adressages dans la section Â«Â %pAÂ Â» qui est vide%pB: section %pA: dÃ©bordement de la table de chaÃ®nes Ã  l'offset %ld%pB: la section Â«Â %pAÂ Â» ne peut pas Ãªtre allouÃ©e dans le segment %d%pB: l'entrÃ©e de groupe de section %u est corrompue%pB: sh_link [%d] n'est pas correct dans la section Â«Â %pAÂ Â»%pB: le sh_link de la section Â«Â %pAÂ Â» pointe vers la section abandonnÃ©e Â«Â %pAÂ Â» de Â«Â %pBÂ Â»%pB: le sh_link de la section Â«Â %pAÂ Â» pointe vers la section supprimÃ©e Â«Â %pAÂ Â» de Â«Â %pBÂ Â»%pB: taille du champ est zÃ©ro dans l'en-tÃªte de la librairie de formats d'importation%pB: le symbole spÃ©cial Â«Â %sÂ Â» est uniquement autorisÃ© pour les architectures ARMv8-M ou ultÃ©rieures%pB: spÃ©culation d'ajustements vers le symbole dynamique %s%pB: taille de pile spÃ©cifiÃ©e et %s dÃ©fini%pB: chaÃ®ne n'est pas terminÃ©e par un zÃ©ro dans le fichier objet ILF%pB: support pour les dynamiques locaux pas implÃ©mentÃ©e%pB: symbole Â«Â %sÂ Â» a un type csect %d non reconnu%pB: symbole Â«Â %sÂ Â» a une classe smclas %d non reconnue%pB: symbole Â«Â %sÂ Â» requis mais absent%pB: l'adresse de la fonction protÃ©gÃ©e Â«Â %sÂ Â» ne peut Ãªtre prise lors de la crÃ©ation d'une librairie partagÃ©e%pB: la cible (%s) d'un rÃ©adressage %s est dans la mauvaise section de sortie (%s)%pB: la cible (%s) du rÃ©adressage %s est dans la mauvaise section (%pA)%pB: trop de sections (%d)%pB: trop de sections: %d (>= %d)%pB: trop de sections: %u%pB: rÃ©adressage relatif au tp vers le symbole dynamique %s%pB: impossible de crÃ©er une section vide factice%pB: impossible de remplir DataDictionary[12] car .idata$5 est manquant%pB: impossible de remplir DataDictionary[1] car .idata$2 est manquant%pB: impossible de remplir DataDictionary[1] car .idata$4 est manquant%pB: impossible de remplir DataDictionary[9] car __tls_used est manquant%pB: impossible de remplir DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] car .idata$6 est manquant%pB: impossible de remplir DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] car .idata$6 est manquant%pB: incapable de trouver le trampoline (veneer) Â«Â %sÂ Â» pour %s%pB: impossible de trouver le nom pour une section vide%pB: impossible d'obtenir la section dÃ©compressÃ©e %pA%pB: impossible d'initialiser le statut de compression de la section %s%pB: impossible d'initialiser le statut de dÃ©compression de la section %s%pB: impossible de charger le nom de section COMDAT%pB: impossible de trier les rÃ©adressages - plusieurs tailles rencontrÃ©es%pB: impossible de trier les rÃ©adressages - leur taille est inconnue%pB: rÃ©fÃ©rence au symbole non dÃ©fini Â«Â %sÂ Â»%pB: symbole Â«Â %sÂ Â» indÃ©fini dans la section .opd%pB: symbole indÃ©fini sur le rÃ©adressage R_PPC64_TOCSAVE%pB: attention: redÃ©finition inattendue du symbole indirect avec version Â«Â %sÂ Â»%pB: type de rÃ©adressage %u inattendu dans la section .opd%pB: rÃ©adressage dynamique non traitÃ© vers %s%pB: type d'importation non traitÃ©e; %x%pB: Architecture %s inconnue%pB: commande de chargement inconnue %#x%pB: l'attribut d'objet ARC obligatoire %d est inconnu%pB: l'attribut d'objet EABI obligatoire %d est inconnu%pB: type de rÃ©adressage %d inconnu%pB: type [%#x] inconnu dans la section Â«Â %sÂ Â»%pB: type [%#x] de section Â«Â %sÂ Â» inconnu dans le groupe [%pA]%pB: OMIT_FP non appariÃ© dans %pA%pB: type de machine non reconnu (0x%x) dans l'archive de librairie de formats d'importation%pB: type de nom d'importation non reconnu: %x%pB: type d'importation non reconnu; %x%pB: rÃ©adressage inconnu (%#x) dans la section Â«Â %pAÂ Â»%pB: classe de stockage %d non reconnue pour %s symbole Â«Â %sÂ Â»%pB: appel non-PIC non supportÃ© vers IFUNC Â«Â %sÂ Â»%pB: type de rÃ©adressage non supportÃ©%pB: type de rÃ©adressage %#x non supportÃ©%pB: type de rÃ©adressage exportÃ© non supportÃ© %#x%pB: type de rÃ©adressage importÃ© non supportÃ©: %#x%pB: type de rÃ©adressage non supportÃ©: %#x%pB: transition de %s Ã  %s non supportÃ©e%pB: sÃ©quence de caractÃ¨res large 0x%02X 0x%02X non supportÃ©e aprÃ¨s le nom de symbole dÃ©butant par Â«Â %sÂ Â»
-%pB: utilise les instructions %s tandis que les modules prÃ©cÃ©dents utilisent les instructions %s%pB: utilise des symboles prÃ©fixÃ©s par _ mais Ã©crits les symboles sans prÃ©fixes dans le fichier%pB: utilise des champs e_flags (%#x) diffÃ©rents des modules prÃ©cÃ©dents (%#x)%pB: utilise diffÃ©rents champs e_flags (%#x) de ceux des modules prÃ©cÃ©dents (%#x)%pB: utilise des instructions qui sont incompatibles avec les instructions utilisÃ©es dans les modules prÃ©cÃ©dents%pB: utilise des symboles sans prÃ©fixe mais ajoute le prÃ©fixe _ aux symboles dans le fichier%pB: version du nÅ“ud pas trouvÃ©e pour le symbole %s%pB: la visibilitÃ© du symbole Â«Â %sÂ Â» a changÃ©%pB: fichier core d'avertissement tronquÃ©%pB: attention: %pA: dÃ©bordement du compteur de numÃ©ro de ligne: %#x > 0xffff%pB: attention: instruction %s BLX vise la fonction %s Â«Â %sÂ Â».%pB: attention: rÃ©adressage %s vers le symbole Â«Â %sÂ Â» de la section %pA%pB: attention: %s non supportÃ© en mode partagÃ©%pB: attention: %s: dÃ©bordement du compteur de numÃ©ro de ligne: 0x%lx > 0xffff%pB: attention: symbole COMDAT Â«Â %sÂ Â» ne concorde par avec le nom de section Â«Â %sÂ Â»%pB: attention: la gÃ©nÃ©ration de PLT RVE n'est pas supportÃ©e%pB: attention: section allouÃ©e Â«Â %sÂ Â» n'est pas dans le segment%pB: attention: mauvaise Â«Â %sÂ Â» taille d'option %u plus petite que son en-tÃªte%pB: attention: ne peut pas dÃ©terminer la fonction cible de la section d'Ã©bauche Â«Â %sÂ Â»%pB: attention: prÃ©tend avoir 0xffff rÃ©adressages, sans dÃ©bordement%pB: attention: information de numÃ©ro de ligne dÃ©doublÃ©e pour Â«Â %sÂ Â»%pB: attention: l'ordre des octets n'est pas le mÃªme que dans les modules prÃ©cÃ©dents%pB: attention: ignore le fanion de section %s dans la section %s%pB: attention: symbole illÃ©gal dans l'entrÃ©e %d des numÃ©ros de lignes%pB: attention: symbole index illÃ©gal %ld dans les rÃ©adressages%pB: attention: symbole d'index 0x%lx illÃ©gal dans l'entrÃ©e %d des numÃ©ros de lignes%pB: attention: versions elf %s et %s non compatibles%pB: attention: ASE incohÃ©rents entre e_flags et .MIPS.abiflags%pB: attention: ABI FP incohÃ©rentes entre .gnu.attributes and .MIPS.abiflags%pB: attention: ISA incohÃ©rentes entre e_flags et .MIPS.abiflags%pB: attention: extensions ISA incohÃ©rentes entre e_flags et .MIPS.abiflags%pB: attention: isymMax (%ld) est plus grand que ifdMax (%ld)%pB: attention: le dÃ©compte du nombre de lignes (%#lx) dÃ©passe la taille de la section (%#lx)%pB: attention: erreur lors de la lecture de la table des numÃ©ros de ligne%pB: attention: Ã©dition de liens des fichiers PIC avec des fichiers non PIC%pB: attention: Ã©dition de liens des fichiers abicalls avec des fichiers non abicalls%pB: attention: boucle dÃ©tectÃ©e dans les dÃ©pendances de sections%pB: attention: plusieurs tables de symboles dynamiques ont Ã©tÃ© dÃ©tectÃ©es â€” la table dans la section %u est ignorÃ©e%pB: attention: plusieurs tables de symboles dÃ©tectÃ©es â€” la table dans la section %u est ignorÃ©e%pB: attention: pas de symbole trouvÃ© pour la section Â«Â %sÂ Â»%pB: attention: version plus ancienne du fichier objet rencontrÃ©e. Veuillez recompiler avec la chaÃ®ne d'outils actuelle%pB: attention: rÃ©adressage SDA_BASE a Ã©chouÃ©%pB: attention: le palliatif STM32L4XX sÃ©lectionnÃ© n'est pas nÃ©cessaire avec l'architecture cible%pB: attention: le palliatif VFP11 sÃ©lectionnÃ© n'est pas nÃ©cessaire avec l'architecture cible%pB: attention: sh_link n'a pas de valeur pour la section Â«Â %pAÂ Â»%pB: attention: table de symboles trop grande pour mmo, plus grande que 65535 mots de 32 bits: %d. Seul Â«Â MainÂ Â» sera produit.
+%pB: dÃ©calage de version %lx invalide (max %lx)%pB: dÃ©bordement du nombre de lignes: 0x%lx > 0xffff%pB: Ã©dition de liens du module %s avec les modules prÃ©cÃ©dents %s%pB: Ã©dition de liens de code 32 bits avec du code 64 bits%pB: Ã©dition de liens entre fichiers 64 bits et fichiers 32 bits%pB: Ã©dition de liens spÃ©cifiques pour UltraSPARC avec du code spÃ©cifique HAL%pB: Ã©dition de liens entre fichiers auto-pic et fichiers non-auto-pic%pB: Ã©dition de liens entre des fichiers Ã  octets de poids fort et des fichiers Ã  octets de poids faible%pB: Ã©dition de liens entre fichiers constant-gp et fichiers non-constant-gp%pB: fichiers liÃ©s compilÃ©s pour des entiers de 16 bits (-mshort) et d'autres pour des entiers de 32 bits%pB: fichiers liÃ©s compilÃ©s pour des doubles de 32 bits (-fshort-double) et d'autres pour des doubles de 64 bits%pB: certains fichiers liÃ©s compilÃ©s pour HCS12 avec d'autres compilÃ©s pour HC12%pB: Ã©dition de liens pour des fichiers Ã  octets de poids faible avec des fichiers Ã  octets de poids fort%pB: liaison de code non-pic dans un exÃ©cutable Ã  position indÃ©pendante%pB: Ã©dition de liens trap-on-NULL-dereference avec des fichiers non-trapping%pB: chargeur de rÃ©adressages dans la section %pA en lecture seule%pB: chargeur de rÃ©adressage dans une section non reconnue Â«Â %sÂ Â»%pB: symbole local Â«Â %sÂ Â» dans %pB est rÃ©fÃ©rencÃ© par DSO%pB: la table des descripteurs de symboles locaux peut Ãªtre NULL en application le rÃ©adressage %s sur un symbole local%pB: fanion machine en conflit avec la cible%pB: rÃ©adressage mal composÃ© dÃ©tectÃ© dans la section %pA%pB: rÃ©adressage mal composÃ© dÃ©tectÃ© dans la section %s%pB: XTY_LD Â«Â %sÂ Â» mal placÃ©%pB: OMIT_FP imbriquÃ©s dans %pA%pB: pas de noyau pour allouer un symbole de %d octets de longueur%pB: pas de noyau pour allouer un nom de section %s%pB: aucune info de groupe pour la section Â«Â %pAÂ Â»%pB: pas de registre initialisÃ©; section de longueur 0
+%pB: aucun symbole trouvÃ© dans la bibliothÃ¨que d'importation%pB: pas de section de version de symbole pour le symbole avec version Â«Â %sÂ Â»%pB: aucune section de groupe valable trouvÃ©e%pB: code non pic avec des rÃ©adressages imm vers le symbole dynamique Â«Â %sÂ Â»%pB: rÃ©adressage non-pic vers le symbole dynamique %s%pB: pas suffisamment d'espace pour les en-tÃªtes du programme, essayer l'option -N%pB: pas assez d'informations de version%pB: seuls les registres %%g[2367] peuvent Ãªtre dÃ©clarÃ©s en utilisant les registres STT_REGISTER%pB: pas assez de mÃ©moire en crÃ©ant le nom pour une section vide%pB: pas assez de mÃ©moire dans _bfd_elf_get_property%pB: la taille de page est trop grande (0x%x)%pB: rÃ©adressage relatif au PC vers le symbole dynamique %s%pB: rÃ©adressage relatif au PC vers le symbole faible non dÃ©fini %s%pB: le greffon doit gÃ©rer l'objet lto%pB: probablement compilÃ© sans -fPICÂ ?%pB: symbole protÃ©gÃ© Â«Â %sÂ Â» n'est pas dÃ©fini%pB: type de machine reconnue mais non traitÃ©e (0x%x) dans l'archive da la librairie de formats d'importation%pB: rÃ©adressage de registre vers le symbole non-registre: %s dans %pA%pB: rÃ©adressage de registre vers le symbole non-registre: (inconnu) dans %pA%pB: rÃ©adressage par rapport Ã  un index de symbole inexistant: %ld%pB: lien relocalisable de %s vers %s n'est pas supportÃ©%pB: rÃ©adressage %s vers %s%sÂ«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en crÃ©ant %s%s%pB: le rÃ©adressage %s sur le symbole STT_GNU_IFUNC Â«Â %sÂ Â» n'est pas gÃ©rÃ© par %s%pB: le rÃ©adressage %s sur le symbole STT_GNU_IFUNC Â«Â %sÂ Â» n'est pas supportÃ©%pB: le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en crÃ©ant un objet partagÃ©%pB: rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC%pB: le rÃ©adressage de %s vers le symbole externe ou non dÃ©fini Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en construisant un %s; recompilez avec -fPIC%pB: le rÃ©adressage %s sur le symbole Â«Â %sÂ Â» n'est pas supportÃ© en mode x32%pB: rÃ©adressage de %s en vertu du symbol Â«Â %sÂ Â» qui peut Ãªtre liÃ© avec l'extÃ©rieur ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC%pB: rÃ©adressage de %s ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC%pB: rÃ©adressage %s ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: rÃ©adressage R_386_GOTOFF vers la %s protÃ©gÃ©e Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: rÃ©adressage R_386_GOTOFF sur le symbole %s Â«Â %sÂ Â» non dÃ©fini ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: rÃ©adressage R_X86_64_GOTOFF64 vers la %s protÃ©gÃ©e Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: rÃ©adressage R_X86_64_GOTOFF64 sur le symbole %s Â«Â %sÂ Â» non dÃ©fini ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©%pB: taille du rÃ©adressage ne concorde pas dans %pB section %pA%pB: rÃ©adressages en format ELF gÃ©nÃ©rique (EM: %d)%pB: rÃ©adressages dans la section Â«Â %pAÂ Â» qui est vide%pB: section %pA: dÃ©bordement de la table de chaÃ®nes Ã  l'offset %ld%pB: section Â«Â %pAÂ Â»: entrÃ©e VTENTRY corrompue%pB: la section Â«Â %pAÂ Â» ne peut pas Ãªtre allouÃ©e dans le segment %d%pB: l'entrÃ©e de groupe de section %u est corrompue%pB: sh_link [%d] n'est pas correct dans la section Â«Â %pAÂ Â»%pB: le sh_link de la section Â«Â %pAÂ Â» pointe vers la section abandonnÃ©e Â«Â %pAÂ Â» de Â«Â %pBÂ Â»%pB: le sh_link de la section Â«Â %pAÂ Â» pointe vers la section supprimÃ©e Â«Â %pAÂ Â» de Â«Â %pBÂ Â»%pB: taille du champ est zÃ©ro dans l'en-tÃªte de la librairie de formats d'importation%pB: le symbole spÃ©cial Â«Â %sÂ Â» est uniquement autorisÃ© pour les architectures ARMv8-M ou ultÃ©rieures%pB: spÃ©culation d'ajustements vers le symbole dynamique %s%pB: taille de pile spÃ©cifiÃ©e et %s dÃ©fini%pB: chaÃ®ne n'est pas terminÃ©e par un zÃ©ro dans le fichier objet ILF%pB: support pour les dynamiques locaux pas implÃ©mentÃ©e%pB: symbole Â«Â %sÂ Â» a un type csect %d non reconnu%pB: symbole Â«Â %sÂ Â» a une classe smclas %d non reconnue%pB: symbole Â«Â %sÂ Â» requis mais absent%pB: le symbole indique un recouvrement (pas supportÃ©)%pB: l'adresse de la fonction protÃ©gÃ©e Â«Â %sÂ Â» ne peut Ãªtre prise lors de la crÃ©ation d'une librairie partagÃ©e%pB: la cible (%s) d'un rÃ©adressage %s est dans la mauvaise section de sortie (%s)%pB: la cible (%s) du rÃ©adressage %s est dans la mauvaise section (%pA)%pB: trop de sections (%d)%pB: trop de sections: %d (>= %d)%pB: trop de sections: %u%pB: rÃ©adressage relatif au tp vers le symbole dynamique %s%pB: impossible de crÃ©er une section vide factice%pB: impossible de remplir DataDictionary[12] car .idata$5 est manquant%pB: impossible de remplir DataDictionary[1] car .idata$2 est manquant%pB: impossible de remplir DataDictionary[1] car .idata$4 est manquant%pB: impossible de remplir DataDictionary[9] car __tls_used est manquant%pB: impossible de remplir DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] car .idata$6 est manquant%pB: impossible de remplir DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] car .idata$6 est manquant%pB: incapable de trouver le trampoline (veneer) Â«Â %sÂ Â» pour %s%pB: impossible de trouver le nom pour une section vide%pB: impossible d'obtenir la section dÃ©compressÃ©e %pA%pB: impossible d'initialiser le statut de compression de la section %s%pB: impossible d'initialiser le statut de dÃ©compression de la section %s%pB: impossible de charger le nom de section COMDAT%pB: impossible de trier les rÃ©adressages - plusieurs tailles rencontrÃ©es%pB: impossible de trier les rÃ©adressages - leur taille est inconnue%pB: rÃ©fÃ©rence au symbole non dÃ©fini Â«Â %sÂ Â»%pB: symbole Â«Â %sÂ Â» indÃ©fini dans la section .opd%pB: symbole indÃ©fini sur le rÃ©adressage R_PPC64_TOCSAVE%pB: attention: redÃ©finition inattendue du symbole indirect avec version Â«Â %sÂ Â»%pB: type de rÃ©adressage %u inattendu dans la section .opd%pB: rÃ©adressage dynamique non traitÃ© vers %s%pB: type d'importation non traitÃ©e; %x%pB: valeur de machine sparc Â«Â %luÂ Â» non gÃ©rÃ©e dÃ©tectÃ©e durant le traitement de l'Ã©criture%pB: Architecture %s inconnue%pB: commande de chargement inconnue %#x%pB: l'attribut d'objet ARC obligatoire %d est inconnu%pB: l'attribut d'objet EABI obligatoire %d est inconnu%pB: type de rÃ©adressage %d inconnu%pB: type [%#x] inconnu dans la section Â«Â %sÂ Â»%pB: type [%#x] de section Â«Â %sÂ Â» inconnu dans le groupe [%pA]%pB: OMIT_FP non appariÃ© dans %pA%pB: type de machine non reconnu (0x%x) dans l'archive de librairie de formats d'importation%pB: type de nom d'importation non reconnu: %x%pB: type d'importation non reconnu; %x%pB: rÃ©adressage inconnu (%#x) dans la section Â«Â %pAÂ Â»%pB: classe de stockage %d non reconnue pour %s symbole Â«Â %sÂ Â»%pB: taille de rÃ©adressage AOUT non supportÃ©eÂ : %d%pB: architecture %#x non supportÃ©e%pB: correspondance bfd %#lx non supportÃ©e%pB: correspondance %#x non supportÃ©e%pB: appel non-PIC non supportÃ© vers IFUNC Â«Â %sÂ Â»%pB: type de rÃ©adressage non supportÃ©%pB: type de rÃ©adressage %#x non supportÃ©%pB: type de rÃ©adressage exportÃ© non supportÃ© %#x%pB: type de rÃ©adressage importÃ© non supportÃ©: %#x%pB: type de rÃ©adressage non supportÃ©: %#x%pB: transition de %s Ã  %s non supportÃ©e%pB: sÃ©quence de caractÃ¨res large 0x%02X 0x%02X non supportÃ©e aprÃ¨s le nom de symbole dÃ©butant par Â«Â %sÂ Â»
+%pB: utilise les instructions %s tandis que les modules prÃ©cÃ©dents utilisent les instructions %s%pB: utilise des symboles prÃ©fixÃ©s par _ mais Ã©crits les symboles sans prÃ©fixes dans le fichier%pB: utilise des champs e_flags (%#x) diffÃ©rents des modules prÃ©cÃ©dents (%#x)%pB: utilise diffÃ©rents champs e_flags (%#x) de ceux des modules prÃ©cÃ©dents (%#x)%pB: utilise des instructions qui sont incompatibles avec les instructions utilisÃ©es dans les modules prÃ©cÃ©dents%pB: utilise des symboles sans prÃ©fixe mais ajoute le prÃ©fixe _ aux symboles dans le fichier%pB: version du nÅ“ud pas trouvÃ©e pour le symbole %s%pB: la visibilitÃ© du symbole Â«Â %sÂ Â» a changÃ©%pB: fichier core d'avertissement tronquÃ©%pB: attention: %pA: dÃ©bordement du compteur de numÃ©ro de ligne: %#x > 0xffff%pB: attention: instruction %s BLX vise la fonction %s Â«Â %sÂ Â».%pB: attention: rÃ©adressage %s vers le symbole Â«Â %sÂ Â» de la section %pA%pB: attention: %s non supportÃ© en mode partagÃ©%pB: attention: %s: dÃ©bordement du compteur de numÃ©ro de ligne: 0x%lx > 0xffff%pB: avertissement: BTI activÃ© par -z force-bti alors que toutes les entrÃ©es n'ont pas BTI dans la section NOTE.%pB: attention: symbole COMDAT Â«Â %sÂ Â» ne concorde par avec le nom de section Â«Â %sÂ Â»%pB: attention: la gÃ©nÃ©ration de PLT RVE n'est pas supportÃ©e%pB: avertissement: Le TLS faible est dÃ©fini par l'implÃ©mentation et pourrait ne pas fonctionner comme attendu%pB: attention: section allouÃ©e Â«Â %sÂ Â» n'est pas dans le segment%pB: attention: mauvaise Â«Â %sÂ Â» taille d'option %u plus petite que son en-tÃªte%pB: attention: ne peut pas dÃ©terminer la fonction cible de la section d'Ã©bauche Â«Â %sÂ Â»%pB: attention: prÃ©tend avoir 0xffff rÃ©adressages, sans dÃ©bordement%pB: attention: information de numÃ©ro de ligne dÃ©doublÃ©e pour Â«Â %sÂ Â»%pB: attention: l'ordre des octets n'est pas le mÃªme que dans les modules prÃ©cÃ©dents%pB: attention: ignore le fanion de section %s dans la section %s%pB: attention: symbole illÃ©gal dans l'entrÃ©e %d des numÃ©ros de lignes%pB: attention: symbole index illÃ©gal %ld dans les rÃ©adressages%pB: attention: symbole d'index 0x%lx illÃ©gal dans l'entrÃ©e %d des numÃ©ros de lignes%pB: attention: versions elf %s et %s non compatibles%pB: attention: ASE incohÃ©rents entre e_flags et .MIPS.abiflags%pB: attention: ABI FP incohÃ©rentes entre .gnu.attributes and .MIPS.abiflags%pB: attention: ISA incohÃ©rentes entre e_flags et .MIPS.abiflags%pB: attention: extensions ISA incohÃ©rentes entre e_flags et .MIPS.abiflags%pB: attention: isymMax (%ld) est plus grand que ifdMax (%ld)%pB: attention: le dÃ©compte du nombre de lignes (%#lx) dÃ©passe la taille de la section (%#lx)%pB: attention: erreur lors de la lecture de la table des numÃ©ros de ligne%pB: attention: Ã©dition de liens des fichiers PIC avec des fichiers non PIC%pB: attention: Ã©dition de liens des fichiers abicalls avec des fichiers non abicalls%pB: attention: boucle dÃ©tectÃ©e dans les dÃ©pendances de sections%pB: attention: plusieurs tables de symboles dynamiques ont Ã©tÃ© dÃ©tectÃ©es â€” la table dans la section %u est ignorÃ©e%pB: attention: plusieurs tables de symboles dÃ©tectÃ©es â€” la table dans la section %u est ignorÃ©e%pB: attention: pas de symbole trouvÃ© pour la section Â«Â %sÂ Â»%pB: attention: version plus ancienne du fichier objet rencontrÃ©e. Veuillez recompiler avec la chaÃ®ne d'outils actuelle%pB: attention: rÃ©adressage SDA_BASE a Ã©chouÃ©%pB: attention: la section de rÃ©adressage secondaire Â«Â %sÂ Â» pour la section %pA a Ã©tÃ© trouvÃ©e â€” elle est ignorÃ©e%pB: attention: le palliatif STM32L4XX sÃ©lectionnÃ© n'est pas nÃ©cessaire avec l'architecture cible%pB: attention: le palliatif VFP11 sÃ©lectionnÃ© n'est pas nÃ©cessaire avec l'architecture cible%pB: attention: sh_link n'a pas de valeur pour la section Â«Â %pAÂ Â»%pB: attention: table de symboles trop grande pour mmo, plus grande que 65535 mots de 32 bits: %d. Seul Â«Â MainÂ Â» sera produit.
 %pB: attention: gÃ©nÃ©ration de PLT dans le mode thumb-1 pas encore supportÃ©e%pB: attention: accÃ¨s non alignÃ© Ã  une entrÃ©e GOT%pB: attention: fanion inattendu dans le champ flags2 de .MIPS.abiflags (0x%lx)%pB: attention: attribut d'objet EABI %d inconnu%pB: le rÃ©adressage TLS ne sera pas rÃ©solu Ã  l'exÃ©cution%pB:%d: mauvaise somme de contrÃ´le dans le fichier S-record%pB:%d: nombre d'octets %d trop petit%pB:%d: caractÃ¨re inattendu Â«Â %sÂ Â» dans le fichier Intel hexadÃ©cimal%pB:%d: caractÃ¨re inattendu Â«Â %sÂ Â» dans le fichier S-record%pB:%pA%s dÃ©passe la taille de recouvrement
-%pB:%pA: %s et %s doivent Ãªtre dans la mÃªme section d'entrÃ©e%pB:%pA: erreur: symbole de rÃ©fÃ©rence des rÃ©adressages %s qui a Ã©tÃ© supprimÃ© par le ramasse miettes%pB:%pA: erreur: essayez de rÃ©Ã©diter les liens avec --gc-keep-exported enabled.%pB:%pA: la table %s n'a pas de %s correspondant%pB:%pA: l'entrÃ©e %s de la table n'est pas alignÃ©e sur un mot dans la table%pB:%pA: l'entrÃ©e %s de la table est en dehors de la table%pB:%pA: attention: rÃ©adressage %s Red Hat rÃ©prouvÃ©e dÃ©tectÃ© sur: %s%pB:%s a, Ã  la fois, des rÃ©adressages normaux et TLS%pB:%s section %s: l'alignement 2**%u n'est pas reprÃ©sentable%pB:%u: somme de contrÃ´le erronÃ©e dans le fichier Intel hexadÃ©cimal (attendu %u, obtenu %u)%pB:%u: longueur erronÃ©e de l'enregistrement d'adresse Ã©tendue dans le fichier Intel hexadÃ©cimal%pB:%u: longueur erronÃ©e de l'enregistrement d'adresse Ã©tendue linÃ©aire dans le fichier Intel hexadÃ©cimal%pB:%u: longueur erronÃ©e d'adresse Ã©tendue linÃ©aire de dÃ©but dans le fichier Intel hexadÃ©cimal%pB:%u: longueur erronÃ©e d'adresse Ã©tendue de dÃ©but dans le fichier Intel hexadÃ©cimal%pB:%u: type ihex %u non reconnu dans le fichier Intel hexadÃ©cimal%s dÃ©fini dans une entrÃ©e toc supprimÃ©e%s dupliquÃ©
+%pB:%pA: %s et %s doivent Ãªtre dans la mÃªme section d'entrÃ©e%pB:%pA: erreur: tentative d'Ã©crire dans une session compressÃ©e non allouÃ©e%pB:%pA: erreur: tentative d'Ã©crire au delÃ  de la fin de la section%pB:%pA: erreur: tentative d'Ã©crire la section dans un tampon vide%pB:%pA: erreur: symbole de rÃ©fÃ©rence des rÃ©adressages %s qui a Ã©tÃ© supprimÃ© par le ramasse miettes%pB:%pA: erreur: essayez de rÃ©Ã©diter les liens avec --gc-keep-exported enabled.%pB:%pA: la table %s n'a pas de %s correspondant%pB:%pA: l'entrÃ©e %s de la table n'est pas alignÃ©e sur un mot dans la table%pB:%pA: l'entrÃ©e %s de la table est en dehors de la table%pB:%pA: attention: rÃ©adressage %s Red Hat rÃ©prouvÃ©e dÃ©tectÃ© sur: %s%pB:%s a, Ã  la fois, des rÃ©adressages normaux et TLS%pB:%s section %s: l'alignement 2**%u n'est pas reprÃ©sentable%pB:%u: somme de contrÃ´le erronÃ©e dans le fichier Intel hexadÃ©cimal (attendu %u, obtenu %u)%pB:%u: longueur erronÃ©e de l'enregistrement d'adresse Ã©tendue dans le fichier Intel hexadÃ©cimal%pB:%u: longueur erronÃ©e de l'enregistrement d'adresse Ã©tendue linÃ©aire dans le fichier Intel hexadÃ©cimal%pB:%u: longueur erronÃ©e d'adresse Ã©tendue linÃ©aire de dÃ©but dans le fichier Intel hexadÃ©cimal%pB:%u: longueur erronÃ©e d'adresse Ã©tendue de dÃ©but dans le fichier Intel hexadÃ©cimal%pB:%u: type ihex %u non reconnu dans le fichier Intel hexadÃ©cimalsymbole de section %pcrel_lo avec un opÃ©rande%s  branchements          %lu
+  aj. branchements toc  %lu
+  branchements notoc    %lu
+  branchements les deux %lu
+  long branchements     %lu
+  aj. long toc          %lu
+  long notoc            %lu
+  long les deux         %lu
+  appels plt            %lu
+  appels plt save       %lu
+  appels plt notoc      %lu
+  appels plt les deux   %lu
+  entrÃ©es globales      %lu%s dÃ©fini dans une entrÃ©e toc supprimÃ©e%s divise par zÃ©ro%s dupliquÃ©
 %s dupliquÃ© dans %s
 %s a, Ã  la fois, des rÃ©adressages normaux et TLS%s dans une section de recouvrement%s pas dÃ©fini dans %pA crÃ©Ã© par l'Ã©diteur de liens%s non implÃ©mentÃ©dÃ©calage %s trop grand pour l'encodage .eh_frame sdata4%s: dÃ©finition TLS dans %pB section %pA ne correspond pas Ã  la dÃ©finition non TLS dans %pB section %pA%s: dÃ©finition TLS dans %pB section %pA ne correspond pas Ã  la rÃ©fÃ©rence TLS dans %pB%s: rÃ©fÃ©rence TLS dans %pB ne correspond pas Ã  la dÃ©finition non TLS dans %pB section %pA%s: rÃ©fÃ©rence TLS dans %pB ne correspond pas Ã  la rÃ©fÃ©rence non TLS dans %pB%s: pas de tel symbole%s: non implÃ©mentÃ©%s: pas supportÃ©%s: version non dÃ©finie: %s(Ã  l'offset de bit %u)
 (descripteur)
@@ -1177,8 +1198,8 @@ En-tÃªtes ppcboot:
 *inconnu**inconnu*        , Valeur: %#08lx
 , alias: %u
 , offset correctif Ã©tendu: %u, offset no_opt psect: %u, sous-type: %u (%s)
-, vecteur de symbol rva: - %pB est 64 bits, %pB ne l'est pas-mips32r2 -mfp64 (12 callee-saved)dÃ©bordement de l'entrÃ©e .eh_frame_hdr.eh_frame_hdr fait rÃ©fÃ©rence Ã  des FDE qui se chevauchentsection .got pas immÃ©diatement aprÃ¨s la section .pltÃ©chec de la fusion de .rsrc: un rÃ©pertoire correspond Ã  une feuilleÃ©chec de la fusion de .rsrc: versions de rÃ©pertoires diffÃ©rentesÃ©chec de la fusion .rsrc: rÃ©pertoires avec des caractÃ©ristiques diffÃ©rentesÃ©chec de la fusion de .rsrc: feuille dupliquÃ©eÃ©chec de la fusion .rsrc: feuille dupliquÃ©e: %sÃ©chec de la fusion de .rsrc: ressource chaÃ®ne dupliquÃ©e: %dÃ©chec de la fusion de .rsrc: plusieurs manifestes pas par dÃ©fautdouble de 32 bits, rÃ©adressage relatif gp 32bits rencontrÃ© pour un symbole externe4 octets4 octets64 bits *non supportÃ©*
-double de 64 bits, 8 octets8 octets: instructions m32r: instructions m32r2: instruction m32rx: instructions n1: instructions n1h; recompilez avec -fPIC<Bits de fanions non reconnus><info corrompue> %s<longueur de la chaÃ®ne corrompue: %#x>
+, vecteur de symbol rva: - %pB est 64 bits, %pB ne l'est pas-march=%s: extension ISA %s pas dans l'ordre alphabÃ©tiqueÂ : Â«Â %sÂ Â» doit apparaÃ®tre avant Â«Â %sÂ Â».-march=%s: %s doit sÃ©parer avec _-march=%s: Extension ISA %s dupliquÃ©eÂ : Â«Â %sÂ Â»-march=%s: Nombre attendu aprÃ¨s Â«Â %dpÂ Â».-march=%s: la chaÃ®ne ISA n'est pas dans l'ordre canonique. Â«Â %cÂ Â»-march=%s: la chaÃ®ne ISA doit commencer par rv32 ou rv64-march=%s: Extension ISA %s invalide ou inconnueÂ : Â«Â %sÂ Â»-march=%s: l'extension Â«Â dÂ Â» requiert l'extension Â«Â fÂ Â»-march=%s: l'extension Â«Â qÂ Â» requiert l'extension Â«Â dÂ Â»-march=%s: le premier sous-ensemble ISA doit Ãªtre Â«Â eÂ Â», Â«Â iÂ Â» ou Â«Â gÂ Â»-march=%s: rv%de n'est pas une base ISA valable-march=%s: rv32 ne supporte pas l'extension Â«Â qÂ Â»-march=%s: rv32e ne supporte pas l'extension Â«Â fÂ Â»-march=%s: chaÃ®ne ISA inattendue Ã  la finÂ : %s-march=%s: sous-ensemble ISA Â«Â %cÂ Â» non supportÃ©-mips32r2 -mfp64 (12 callee-saved)dÃ©bordement de l'entrÃ©e .eh_frame_hdr.eh_frame_hdr fait rÃ©fÃ©rence Ã  des FDE qui se chevauchentsection .got pas immÃ©diatement aprÃ¨s la section .pltÃ©chec de la fusion de .rsrc: un rÃ©pertoire correspond Ã  une feuilleÃ©chec de la fusion de .rsrc: versions de rÃ©pertoires diffÃ©rentesÃ©chec de la fusion .rsrc: rÃ©pertoires avec des caractÃ©ristiques diffÃ©rentesÃ©chec de la fusion de .rsrc: feuille dupliquÃ©eÃ©chec de la fusion .rsrc: feuille dupliquÃ©e: %sÃ©chec de la fusion de .rsrc: ressource chaÃ®ne dupliquÃ©e: %dÃ©chec de la fusion de .rsrc: plusieurs manifestes pas par dÃ©fautdouble de 32 bits, rÃ©adressage relatif gp 32bits rencontrÃ© pour un symbole externe4 octets4 octets64 bits *non supportÃ©*
+double de 64 bits, 8 octets8 octets: instructions m32r: instructions m32r2: instruction m32rx: instructions n1: instructions n1h; recompilez avec -fPIC; recompilez avec -fPIE<Bits de fanions non reconnus><info corrompue> %s<longueur de la chaÃ®ne corrompue: %#x>
 <offset de la chaÃ®ne corrompue: %#lx>
 <corrompu><type de rÃ©pertoire inconnu: %d>
 <fanions de masque inconnus><inconnu>rÃ©adressage @pltoff vers un symbole localBASE_IMAGE       BFD assertion %s a Ã©chouÃ© %s:%dBFD erreur interne %s, abandon Ã  %s:%d
@@ -1191,7 +1212,7 @@ En-tÃªtes ppcboot:
 CTL_STLOC (fixer position)
 En-tÃªte du copyright
 DÃ©tection d'une section .rsrc corrompueÂ !
-DSO manquant dans la ligne de commandeErreur DWARF: attribut DW_AT_comp_dir rencontrÃ© sous une forme non-chaÃ®neErreur DWARF: rÃ©cursion d'une instance abstraite dÃ©tectÃ©eErreur DWARF: ne peut repÃ©rer la section %s.Erreur DWARF: ne peut repÃ©rer le numÃ©ro abrÃ©gÃ© %uErreur DWARF: taille d'adresse obtenue Â«Â %uÂ Â», ce lecteur ne peut traiter des tailles plus grandes que Â«Â %uÂ Â»Erreur DWARF: version DWARF trouvÃ©e Â«Â %uÂ Â», ce lecteur ne supporte que les informations des versions 2, 3, 4 et 5Erreur DWARF: le pointeur d'info va au delÃ  de la fin des attributsErreur DWARF: rÃ©f DIE d'instance abstraite invalideErreur DWARF: opÃ©rations maximum par instruction invalideErreur DWARF: valeur de FORM invalide ou non supportÃ©e: %#xErreur DWARF: taille de sÃ©lecteur de segment %u non supportÃ©e pour les informations de lignesErreur DWARF: numÃ©ro de ligne de section mutilÃ©Erreur DWARF: numÃ©ro de ligne de section mutilÃ© (mauvais no. de fichier)Erreur DWARF: on est tombÃ© Ã  cours de place en lisant les opcodesErreur DWARF: on est tombÃ© Ã  cours de place lors de la lecture du prologueErreur DWARF: version .debug_line %d non prise en chargeErreur DWARF: dÃ©compte de format nulDW_EH_PE_datarel non spÃ©cifiÃ© pour cette architectureRÃ©pertoire de dÃ©bugTable de debug du module:
+DSO manquant dans la ligne de commandeErreur DWARF: attribut DW_AT_comp_dir rencontrÃ© sous une forme non-chaÃ®neErreur DWARF: rÃ©cursion d'une instance abstraite dÃ©tectÃ©eErreur DWARF: ne peut repÃ©rer la section %s.Erreur DWARF: ne peut repÃ©rer le numÃ©ro abrÃ©gÃ© %uErreur DWARF: ne peut repÃ©rer la spÃ©cification de variable au dÃ©calage %lxErreur DWARF: taille d'adresse obtenue Â«Â %uÂ Â», ce lecteur ne peut traiter des tailles plus grandes que Â«Â %uÂ Â»Erreur DWARF: version DWARF trouvÃ©e Â«Â %uÂ Â», ce lecteur ne supporte que les informations des versions 2, 3, 4 et 5Erreur DWARF: le pointeur d'info va au delÃ  de la fin des attributsErreur DWARF: rÃ©f DIE d'instance abstraite invalideErreur DWARF: opÃ©rations maximum par instruction invalideErreur DWARF: valeur de FORM invalide ou non supportÃ©e: %#xErreur DWARF: taille de sÃ©lecteur de segment %u non supportÃ©e pour les informations de lignesErreur DWARF: numÃ©ro de ligne de section mutilÃ©Erreur DWARF: numÃ©ro de ligne de section mutilÃ© (mauvais no. de fichier)Erreur DWARF: on est tombÃ© Ã  cours de place en lisant les opcodesErreur DWARF: on est tombÃ© Ã  cours de place lors de la lecture du prologueErreur DWARF: version .debug_line %d non prise en chargeErreur DWARF: dÃ©compte de format nulDW_EH_PE_datarel non spÃ©cifiÃ© pour cette architectureRÃ©pertoire de dÃ©bugTable de debug du module:
 Table des symboles de debug:
 RÃ©pertoire des dÃ©lais d'importation%s appel dÃ©prÃ©ciÃ©
 %s dÃ©prÃ©ciÃ© appelÃ© Ã  %s dans la ligne %d dans %s
@@ -1199,7 +1220,7 @@ En-tÃªtes ppcboot:
 DÃ©calage de l'entrÃ©e= 0x%.8lx (%ld)
 Erreur: %pB utilise les deux attributs Tag_MPextension_use actuel et hÃ©ritÃ©RÃ©pertoire des exceptions [.pdata]RÃ©pertoire d'exportation [.edata (ou lÃ  oÃ¹ il a Ã©tÃ© trouvÃ©)]Fanion d'exportation 			%lx
 Exportation RVAencodage FDE dans %pB(%pA) empÃªche la crÃ©ation de la table .eh_frame_hdrFDPIC ne supporte pas encore le rÃ©adressage %s pour devenir dynamique Ã  l'exÃ©cutionFILES_VOLUMES    FPU-2.0FPU-3.0Champ de fanion     = 0x%.2x
-Adresseur RVAGALAXY           les rÃ©adressages GOT et PLT ne peuvent pas Ãªtre corrigÃ©s avec un Ã©diteur de liens non dynamiquetaille de la table GOT hors limitesRÃ©adressage relatif GP utilisÃ© alors que GP n'est pas dÃ©finirÃ©adressage relatif GP sans que _gp ne soit dÃ©finile rÃ©adressage GPDISP n'a pas repÃ©rÃ© les instructions ldah et ldaTable des symboles globaux:
+Adresseur RVAGALAXY           la section GNU_MBIND n'est pas supportÃ©eles rÃ©adressages GOT et PLT ne peuvent pas Ãªtre corrigÃ©s avec un Ã©diteur de liens non dynamiquetaille de la table GOT hors limitesRÃ©adressage relatif GP utilisÃ© alors que GP n'est pas dÃ©finirÃ©adressage relatif GP sans que _gp ne soit dÃ©finile rÃ©adressage GPDISP n'a pas repÃ©rÃ© les instructions ldah et ldaTable des symboles globaux:
 Flottant matÃ©riel (processeur 32 bits, coprocesseur 64 bits)
 Flottant matÃ©riel (processeur 32 bits, tout coprocesseur)
 Flottant matÃ©riel (MIPS32r2 64 bits FPU 12 callee-saved)
@@ -1207,8 +1228,8 @@ En-tÃªtes ppcboot:
 Flottant matÃ©riel (simple prÃ©cision)
 CompatibilitÃ© flottant matÃ©riel (processeur 32 bits, coprocesseur 64 bits)
 Flottant matÃ©riel ou logiciel
-ID: %#08lxIDC - VÃ©rification de la consistance d'identitÃ©
-IMAGE_ACTIVATOR  INPUT_SECTION_FLAGS pas supportÃ©sIO               Activation de l'image:  (taille=%u)
+propriÃ©tÃ©s IBT et SHSTKpropriÃ©tÃ© IBTID: %#08lxIDC - VÃ©rification de la consistance d'identitÃ©
+Symbole IFUNC %s dans la table des symboles dynamiques â€“ IFUNC n'est pas supportÃ©IMAGE_ACTIVATOR  INPUT_SECTION_FLAGS pas supportÃ©sIO               Activation de l'image:  (taille=%u)
 Correction de l'activateur de l'image: (majeur: %u, mineur: %u)
 Identification d'image: (majeur: %u, mineur: %u)
 Descripteur de section d'image: (majeur: %u, mineur: %u, taille: %u, offset: %u)
@@ -1251,7 +1272,7 @@ En-tÃªtes ppcboot:
 PropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB (pas trouvÃ©e) et %pB (0x%v)
 PropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB et %pB
 PropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB et %pB (pas trouvÃ©e)
-RÃ©servÃ©RÃ©pertoire des resources [.rsrc]l'adresse S12 (%lx) n'est pas dans la mÃ©moire RAM partagÃ©e (0x2000-0x4000), par consÃ©quent, vous devez dÃ©caler l'adresse manuellement dans votre coderÃ©adressage SDA alors que _SDA_BASE_ n'est pas dÃ©finiSECURITY         SEC_RELOC sans rÃ©adressages dans la section %pASHELL            SHRFXDSHRPICutilisation SIMD: SPSC - Def de section de l'image partagÃ©e du programme
+RÃ©servÃ©RÃ©pertoire des resources [.rsrc]l'adresse S12 (%lx) n'est pas dans la mÃ©moire RAM partagÃ©e (0x2000-0x4000), par consÃ©quent, vous devez dÃ©caler l'adresse manuellement dans votre coderÃ©adressage SDA alors que _SDA_BASE_ n'est pas dÃ©finiSECURITY         SEC_RELOC sans rÃ©adressages dans la section %pASHELL            SHRFXDSHRPICpropriÃ©tÃ© SHSTKutilisation SIMD: SPSC - Def de section de l'image partagÃ©e du programme
 STABLE           STA_CKARG (compare les arguments de la procÃ©dure)
 STA_GBL (pile globals) %.*s
 STA_LI (pile literale)
@@ -1311,11 +1332,11 @@ En-tÃªtes ppcboot:
 Attention: la taille de la section %s (%ld) est plus petite que la taille virtuelle (%ld)
 Attention: la taille de la section %s est nulle
 Ã‰criture du cachet date-heure armap mise Ã  jourl'adresse XGATE (%lx) n'est pas dans la mÃ©moire RAM partagÃ©e (0xE000-0xFFFF), par consÃ©quent, vous devez dÃ©caler l'adresse manuellement, et peut-Ãªtre gÃ©rer la page, dans votre code.[%u]: InfÃ©rieure: %u, supÃ©rieure: %u
-[abi=16-bit int, [abi=32-bit int, [dont le nom est perdu]_bfd_vms_output_counted appelÃ© avec trop d'octets_bfd_vms_output_counted appelÃ© avec un compte de zÃ©ro octetÂ«Â %sÂ Â» fait rÃ©fÃ©rence Ã  quelque chose qui n'est pas une fonction d'entrÃ©eun objet PDEun objet PIEun objet partagÃ©adresseadresse pas alignÃ©e sur un motcode machine ELF alternatif trouvÃ© (%d) dans %pB, %d est attendul'archive n'a pas d'index; exÃ©cuter ranlib pour en ajouter unfichier objet d'archive dans un mauvais formatdescripteur de tableau:
+[abi=16-bit int, [abi=32-bit int, [dont le nom est perdu]dÃ©bordement du dÃ©calage dans l'appel __tls_get_addr_bfd_vms_output_counted appelÃ© avec trop d'octets_bfd_vms_output_counted appelÃ© avec un compte de zÃ©ro octetÂ«Â %sÂ Â» fait rÃ©fÃ©rence Ã  quelque chose qui n'est pas une fonction d'entrÃ©eun objet PDEun objet PIEun objet partagÃ©adresseadresse pas alignÃ©e sur un motcode machine ELF alternatif trouvÃ© (%d) dans %pB, %d est attendul'archive n'a pas d'index; exÃ©cuter ranlib pour en ajouter unfichier objet d'archive dans un mauvais formatdescripteur de tableau:
 tableau, dim: %u, bitmpa: arsize: %u, a0: 0x%08x
 atomique, type=0x%02x %s
 Ã©chec de la tentative de convertir L32R/CALLX en CALLtentative de rÃ©adressage d'un lien avec %s Ã  l'entrÃ©e et %s Ã  la sortieindex de section erronÃ©e dans %smauvaise valeurbanque d'adresses [%lx:%04lx] (%lx) n'es pas dans la mÃªme banque que la banque courante d'adresses [%lx:%04lx] (%lx)base: %u, pos: %u
-bfd_mach_o_canonicalize_symtab: impossible de charger les symbolesbfd_mach_o_read_section_32: valeur d'alignement dÃ©mesurÃ©e: %#lx, utilise 32 Ã  la placebfd_mach_o_read_section_64: valeur d'alignement dÃ©mesurÃ©e: %#lx, utilise 32 Ã  la placebfd_mach_o_read_symtab_symbol: nom hors limites (%lu >= %u)bfd_mach_o_read_symtab_symbol: le symbole Â«Â %sÂ Â» spÃ©cifie la section %d invalide (max %lu): laissÃ© non dÃ©finibfd_mach_o_read_symtab_symbol: symbole Â«Â %sÂ Â» spÃ©cifie le champ de type 0x%x invalide: laissÃ© non dÃ©finibfd_mach_o_read_symtab_symbol: impossible de lire %d octets Ã  %ubfd_mach_o_read_symtab_symbols: impossible d'allouer la mÃ©moire pour les symbolesbfd_mach_o_scan: architecture 0x%lx/0x%lx inconnuebfd_pef_scan: architecture 0x%lx inconnuedÃ©but blk: adresse: 0x%08x, nom: %.*s
+bfd_mach_o_canonicalize_symtab: impossible de charger les symbolesbfd_mach_o_read_section_32: valeur d'alignement dÃ©mesurÃ©e: %#lx, utilise 32 Ã  la placebfd_mach_o_read_section_64: valeur d'alignement dÃ©mesurÃ©e: %#lx, utilise 32 Ã  la placebfd_mach_o_read_symtab_symbol: nom hors limites (%lu >= %u)bfd_mach_o_read_symtab_symbol: le symbole Â«Â %sÂ Â» spÃ©cifie la section %d invalide (max %lu): laissÃ© non dÃ©finibfd_mach_o_read_symtab_symbol: symbole Â«Â %sÂ Â» spÃ©cifie le champ de type 0x%x invalide: laissÃ© non dÃ©finibfd_mach_o_read_symtab_symbol: impossible de lire %d octets Ã  %ubfd_mach_o_scan: architecture 0x%lx/0x%lx inconnuebfd_pef_scan: architecture 0x%lx inconnuedÃ©but blk: adresse: 0x%08x, nom: %.*s
 fin blk: taille: 0x%08x
 branchement (PC rel16) Ã  la section (%s) n'est pas supportÃ©branchement vers une adresse non alignÃ©e sur une instructionbss-plt forcÃ© par le profilagebss-plt forcÃ© Ã  cause de %pBne peut construire l'Ã©bauche de branchement Â«Â %sÂ Â»ne peut repÃ©rer l'Ã©bauche de branchement Â«Â %sÂ Â»impossible de convertir un branchement vers JALX pour une adresse non alignÃ©e sur un motimpossible de convertir un saut vers JALX pour une adresse non alignÃ©e sur un motne peut crÃ©er l'entrÃ©e d'Ã©bauche %simpossible d'Ã©diter les rÃ©adressages dynamiques dans une section en lecture seuleimpossible d'apporter des corrections dans une section en lecture seuleimpossible de trouver le EMH dans le premier enregistrement GST
 ne peut lire DMT
@@ -1336,36 +1357,35 @@ En-tÃªtes ppcboot:
 impossible de lire l'en-tÃªte de l'enregistrement GST
 impossible de lire la longueur de l'enregistrement GST
 classe: %u, dtype: %u, longueur: %u, pointeur: 0x%08x
-section %s corrompue dans %pBenregistrement EEOM corrompu â€“ taille trop petiteenregistrement EGSD corrompu: son champ psindx est trop grand (%#lx)enregistrement EGSD corrompu: sa taille (%#x) est trop petiteenregistrement EGSD corrompu: la taille (%#x) est plus grande que l'espace restant (%#x)enregistrement EGSD corrompu: la taille (%#x) est trop petiteenregistrement EIHD corrompu â€“ la taille est trop petiteenregistrement ETIR corrompu rencontrÃ©valeur vms corrompuene peut repÃ©rer la section %sne peut repÃ©rer le symbole spÃ©cial d'Ã©dition de lien __ctbpne peut repÃ©rer le symbole spÃ©cial d'Ã©dition de lien __epne peut repÃ©rer le symbole spÃ©cial d'Ã©dition de lien __gpn'a pas su ouvrir l'image partagÃ©e Â«Â %sÂ Â» de Â«Â %sÂ Â»cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]rÃ©adressage dangereuxdelta pc +%-4ddelta_pc_l: +0x%08x
+section %s corrompue dans %pBenregistrement EEOM corrompu â€“ taille trop petitetype d'enregistrement EGSD %d corrompu: la taille (%#x) est plus grande que l'espace restant (%#x)type d'enregistrement EGSD %d corrompu: la taille (%#x) est trop petiteenregistrement EGSD corrompu: son champ psindx est trop grand (%#lx)enregistrement EGSD corrompu: sa taille (%#x) est trop petiteenregistrement EIHD corrompu â€“ la taille est trop petiteenregistrement ETIR corrompu rencontrÃ©valeur vms corrompuene peut repÃ©rer la section %sne peut repÃ©rer le symbole spÃ©cial d'Ã©dition de lien __ctbpne peut repÃ©rer le symbole spÃ©cial d'Ã©dition de lien __epne peut repÃ©rer le symbole spÃ©cial d'Ã©dition de lien __gpn'a pas su ouvrir l'image partagÃ©e Â«Â %sÂ Â» de Â«Â %sÂ Â»cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]rÃ©adressage dangereuxerreur de rÃ©adressage dangereuxdelta pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
 descdimct: %u, aflags: 0x%02x, digits: %u, Ã©chelle: %u
 section de sortie rejetÃ©e: Â«Â %pAÂ Â»abandon du FDE avec une plage d'adresses nulle dans %pB(%pA).
 plage discontinue (nbr: %u)
-rÃ©adressage dynamique dans une section en lecture seulela variable dynamique Â«Â %sÂ Â» a une taille nulleerreur de dÃ©compte de rÃ©adressage dynamique pour %pB, section %pAla fonction d'entrÃ©e Â«Â %sÂ Â» a disparu du code sÃ»rdÃ©but Ã©numÃ©ration, long: %u, nom: %.*s
+dst_define_location %u trop grandrÃ©adressage dynamique dans une section en lecture seulela variable dynamique Â«Â %sÂ Â» a une taille nulleerreur de dÃ©compte de rÃ©adressage dynamique pour %pB, section %pAla fonction d'entrÃ©e Â«Â %sÂ Â» a disparu du code sÃ»rdÃ©but Ã©numÃ©ration, long: %u, nom: %.*s
 Ã©numÃ©ration Ã©lÃ©ments, nom: %.*s
 fin Ã©numÃ©ration
 Ã©pilogue: fanions: %u, nombre: %u
-erreur dans %pB(%pA); aucune table .eh_frame_hdr ne sera crÃ©Ã©eerreur lors de la lecture de %s: %serreur lors de la lecture du type de CPU dans les donnÃ©es elf privÃ©eserreur: %pB n'utilise pas les instructions %s alors que %pB les utiliseerreur: %pB est dÃ©jÃ  au format final BE8erreur: %pB compilÃ© pour APCS-%d alors que la cible %pB utilise APCS-%derreur: %pB compilÃ© pour EP9312 alors que %pB a Ã©tÃ© compilÃ© pour XScaleerreur: %pB a besoin d'un alignement sur 8 octets mais %pB est dÃ©fini pour un alignement sur 4 octetserreur: %pB passage de valeurs en virgule flottante dans les registres FP alors que %pB les passe dans les registres entierserreur: %pB passage de valeurs en virgule flottante dans les registres entiers alors que %pB les passe dans les registres FPerreur: %pB nÃ©cessite un plus grand alignement de tableau que ce que %pB prÃ©serveerreur: %pB nÃ©cessite un plus grand alignement de pile que ce que %pB prÃ©serveerreur: %pB utilise un alignement de pile de %u octets mais la sortie utilise un alignement de pile de %u octets.erreur: %pB utilise les instructions %s alors que %pB utilise %serreur: %pB utilise les instructions %s alors que %pB ne les utilise paserreur: %pB utilise des doubles 64 bits alors que %pB utilise des doubles 32 bitserreur: %pB utilise FPU-3.0 mais %pB ne supporte que FPU-2.0erreur: %pB passe les paramÃ¨tres dans un registre VFP alors que %pB ne le fait paserreur: %pB utilise le matÃ©riel pour virgule flottante alors que %pB utilise le logiciel pour virgule flottanteerreur: %pB passe les paramÃ¨tres dans le registre iWMMXt contrairement Ã  %pBerreur: %pB utilise le logiciel pour virgule flottante alors que %pB utilise le matÃ©riel pour virgule flottanteerreur: %pB utilise le modÃ¨le de code %s alors que %pB utilise le modÃ¨le de code %serreur: %pB utilise le modÃ¨le de donnÃ©es %s alors que %pB utilise uniquement des instructions MSP430erreur: %pB utilise le modÃ¨le de donnÃ©es %s alors que %pB utilise le modÃ¨le de donnÃ©es %serreur: %pB utilise le grand modÃ¨le de code alors que %pB utilise les instructions MSP430erreur: %pB utilise le petit modÃ¨le de code alors que %pB utilise le modÃ¨le de donnÃ©es %serreur: %pB: <la taille de la propriÃ©tÃ© x86 (0x%x) est corrompue: 0x%x>erreur: %pB: la chaÃ®ne ISA en entrÃ©e (%s) ne correspond pas Ã  la sortie (%s).erreur: %pB: ChaÃ®nes ISA Ã  fusionner Â«Â %sÂ Â» et Â«Â %sÂ Â» non concordantes.erreur: %pB: version ISA non concordante pour l'extension Â«Â %sÂ Â». %d.%d vs %d.%derreur: %pB: adressage relatif SB entre en conflit avec l'utilisation de R9erreur: %pB: XLEN (%u) non supportÃ©e, vous pourriez Ãªtre en train d'utiliser la mauvaise Ã©mulation.erreur: %pB: XLEN de l'entrÃ©e (%u) ne correspond pas Ã  la sortie (%u).erreur: %pB: R2 gros boutiste n'est pas supportÃ©erreur: %pB: impossible de mÃ©langer rf16 avec l'ensemble des registres complets %pBerreur: %pB: architectures CPU conflictuelles %d/%derreur: %pB: attributs d'extension ISA %s en conflit avec %serreur: %pB: profils d'architecture conflictuels %c/%cerreur: %pB: attributs %s conflictuelserreur: %pB: attributs %s conflictuels: %s avec %serreur: %pB: version de spec priv en conflit (majeur/mineur/rÃ©vision).erreur: %pB: utilisation conflictuelle de R9erreur: %pB: chaÃ®ne ISA Â«Â %sÂ Â» corrompue, la premiÃ¨re lettre devrait Ãªtre Â«Â iÂ Â» ou Â«Â eÂ Â» mais on a trouvÃ© Â«Â %sÂ Â».erreur: %pB: l'objet a un contenu spÃ©cifique Ã  un vendeur qui doit Ãªtre traitÃ© par la chaÃ®ne d'outils Â«Â %sÂ Â»erreur: %pB: Ã©tiquette d'objet Â«Â %d, %sÂ Â» incompatible avec l'Ã©tiquette Â«Â %d, %sÂ Â»erreur: %pB: ancien fichier objet incompatible dÃ©tectÃ©erreur: %pB: le rÃ©adressage de la section %pA n'est pas un multiple de la taille des adresseserreur: %pB: impossible de fusionner les attributs de base CPU %s avec %serreur: %pB: impossible de fusionner les attributs de l'extension ISA %serreur: %pB: impossible de fusionner les attributs de visualisation avec %pBerreur: %pB: architecture CPU inconnueerreur: tentative de lier %pB avec un binaire %pB d'une architecture diffÃ©renteerreur: le symbole ne peut Ãªtre trouvÃ©: %serreur: dÃ©saccord de format fp16 entre %pB et %pBerreur: type de rÃ©adressage inappropriÃ© pour une librairie partagÃ©e (avez-vous oubliÃ© -fpic ?)erreur: l'objet source %pB a l'EABI version %d alors que la cible %pB a l'EABI version %derreur: l'architecture ARC4 n'est plus supportÃ©eerreur: symbole __rtinit non dÃ©finierreur: valeur Tag_ABI_array_object_align_expected inconnue dans %pBerreur: valeur Tag_ABI_array_object_alignment inconnue dans %pBerreurs rencontrÃ©es pendant le traitement du fichier %pBexÃ©cutableÃ©chec d'allocation d'espace pour une nouvelle section APUinfoÃ©chec d'Ã©valuation de la nouvelle section APUinfoÃ©chec de repÃ©rage du rÃ©adressage HI16 prÃ©cÃ©dentÃ©chec d'installation de la nouvelle section APUinfoÃ©chec lors de la mise Ã  jour des dÃ©calages du fichier dans le rÃ©pertoire de dÃ©bogageerreur fatale lors de la crÃ©ation de .fixupformat de fichier ambiguformat de fichier non reconnufichier dans un mauvais formatfichier trop grosfichier tronquÃ©les avertissements suivants Ã  propos de l'encodage FDE empÃªchant la gÃ©nÃ©ration de .eh_frame_hdr sont abandonnÃ©sliaison gÃ©nÃ©rique ne peut traiter %sadresse relative du pointeur global hors limitesrÃ©adressage relatif au pointeur global Ã  l'adresse 0x%08x sans que _gp ne soit dÃ©fini
-rÃ©adressage relatif au pointeur global sans que _gp ne soit dÃ©finisymbole cachÃ©symbole cachÃ© cputypes incompatibles dans les fichiers mach-o: %ld vs %ldincr_linum(b): +%u
+erreur dans %pB(%pA); aucune table .eh_frame_hdr ne sera crÃ©Ã©eerreur lors de la lecture de %s: %serreur lors de la lecture du type de CPU dans les donnÃ©es elf privÃ©eserreur: %pB peut utiliser la rÃ©gion haute pour les donnÃ©es mais %pB suppose que les donnÃ©es sont exclusivement en mÃ©moire basseerreur: %pB n'utilise pas les instructions %s alors que %pB les utiliseerreur: %pB est dÃ©jÃ  au format final BE8erreur: %pB compilÃ© pour APCS-%d alors que la cible %pB utilise APCS-%derreur: %pB compilÃ© pour EP9312 alors que %pB a Ã©tÃ© compilÃ© pour XScaleerreur: %pB a besoin d'un alignement sur 8 octets mais %pB est dÃ©fini pour un alignement sur 4 octetserreur: %pB passage de valeurs en virgule flottante dans les registres FP alors que %pB les passe dans les registres entierserreur: %pB passage de valeurs en virgule flottante dans les registres entiers alors que %pB les passe dans les registres FPerreur: %pB nÃ©cessite un plus grand alignement de tableau que ce que %pB prÃ©serveerreur: %pB nÃ©cessite un plus grand alignement de pile que ce que %pB prÃ©serveerreur: %pB utilise un alignement de pile de %u octets mais la sortie utilise un alignement de pile de %u octets.erreur: %pB utilise les instructions %s alors que %pB utilise %serreur: %pB utilise les instructions %s alors que %pB ne les utilise paserreur: %pB utilise des doubles 64 bits alors que %pB utilise des doubles 32 bitserreur: %pB utilise FPU-3.0 mais %pB ne supporte que FPU-2.0erreur: %pB passe les paramÃ¨tres dans un registre VFP alors que %pB ne le fait paserreur: %pB utilise le matÃ©riel pour virgule flottante alors que %pB utilise le logiciel pour virgule flottanteerreur: %pB passe les paramÃ¨tres dans le registre iWMMXt contrairement Ã  %pBerreur: %pB utilise le logiciel pour virgule flottante alors que %pB utilise le matÃ©riel pour virgule flottanteerreur: %pB utilise le modÃ¨le de code %s alors que %pB utilise le modÃ¨le de code %serreur: %pB utilise le modÃ¨le de donnÃ©es %s alors que %pB utilise uniquement des instructions MSP430erreur: %pB utilise le modÃ¨le de donnÃ©es %s alors que %pB utilise le modÃ¨le de donnÃ©es %serreur: %pB utilise le grand modÃ¨le de code alors que %pB utilise les instructions MSP430erreur: %pB utilise le petit modÃ¨le de code alors que %pB utilise le modÃ¨le de donnÃ©es %serreur: %pB: <la taille utilisÃ©e par AArch64 est corrompue: 0x%x>erreur: %pB: <la taille de la propriÃ©tÃ© x86 (0x%x) est corrompue: 0x%x>erreur: %pB: la chaÃ®ne ISA en entrÃ©e (%s) ne correspond pas Ã  la sortie (%s).erreur: %pB: ChaÃ®nes ISA Ã  fusionner Â«Â %sÂ Â» et Â«Â %sÂ Â» non concordantes.erreur: %pB: Version ISA non concordante pour l'extension Â«Â %sÂ Â». %d.%d vs %d.%derreur: %pB: adressage relatif SB entre en conflit avec l'utilisation de R9erreur: %pB: XLEN (%u) non supportÃ©e, vous pourriez Ãªtre en train d'utiliser la mauvaise Ã©mulation.erreur: %pB: XLEN de l'entrÃ©e (%u) ne correspond pas Ã  la sortie (%u).erreur: %pB: R2 gros boutiste n'est pas supportÃ©erreur: %pB: impossible de mÃ©langer rf16 avec l'ensemble des registres complets %pBerreur: %pB: architectures CPU conflictuelles %d/%derreur: %pB: attributs d'extension ISA %s en conflit avec %serreur: %pB: profils d'architecture conflictuels %c/%cerreur: %pB: attributs %s conflictuelserreur: %pB: attributs %s conflictuels: %s avec %serreur: %pB: utilisation conflictuelle de R9erreur: %pB: chaÃ®ne ISA Â«Â %sÂ Â» corrompue. La premiÃ¨re lettre devrait Ãªtre Â«Â iÂ Â» ou Â«Â eÂ Â» mais on a trouvÃ© Â«Â %sÂ Â».erreur: %pB: l'objet a un contenu spÃ©cifique Ã  un vendeur qui doit Ãªtre traitÃ© par la chaÃ®ne d'outils Â«Â %sÂ Â»erreur: %pB: Ã©tiquette d'objet Â«Â %d, %sÂ Â» incompatible avec l'Ã©tiquette Â«Â %d, %sÂ Â»erreur: %pB: ancien fichier objet incompatible dÃ©tectÃ©erreur: %pB: le rÃ©adressage de la section %pA n'est pas un multiple de la taille des adresseserreur: %pB: impossible de fusionner les attributs de base CPU %s avec %serreur: %pB: impossible de fusionner les attributs de l'extension ISA %serreur: %pB: impossible de fusionner les attributs de visualisation avec %pBerreur: %pB: architecture CPU inconnueerreur: tentative de lier %pB avec un binaire %pB d'une architecture diffÃ©renteerreur: le symbole ne peut Ãªtre trouvÃ©: %serreur: dÃ©saccord de format fp16 entre %pB et %pBerreur: type de rÃ©adressage inappropriÃ© pour une librairie partagÃ©e (avez-vous oubliÃ© -fpic ?)erreur: l'objet source %pB a l'EABI version %d alors que la cible %pB a l'EABI version %derreur: l'architecture ARC4 n'est plus supportÃ©eerreur: symbole __rtinit non dÃ©finierreur: valeur Tag_ABI_array_object_align_expected inconnue dans %pBerreur: valeur Tag_ABI_array_object_alignment inconnue dans %pBerreurs rencontrÃ©es pendant le traitement du fichier %pBexÃ©cutableÃ©chec d'allocation d'espace pour une nouvelle section APUinfoÃ©chec d'Ã©valuation de la nouvelle section APUinfoÃ©chec de repÃ©rage du rÃ©adressage HI16 prÃ©cÃ©dentÃ©chec d'installation de la nouvelle section APUinfoÃ©chec lors de la mise Ã  jour des dÃ©calages du fichier dans le rÃ©pertoire de dÃ©bogageerreur fatale lors de la crÃ©ation de .fixupformat de fichier ambiguformat de fichier non reconnufichier dans un mauvais formatfichier trop grosfichier tronquÃ©les avertissements suivants Ã  propos de l'encodage FDE empÃªchant la gÃ©nÃ©ration de .eh_frame_hdr sont abandonnÃ©sliaison gÃ©nÃ©rique ne peut traiter %sadresse relative du pointeur global hors limitesrÃ©adressage relatif au pointeur global sans que _gp ne soit dÃ©finisymbole cachÃ©symbole cachÃ© cputypes incompatibles dans les fichiers mach-o: %ld vs %ldincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
 indirect, dÃ©fini Ã  0x%08x
-erreur interne: dÃ©bordement de la pile de rÃ©adressages RL78erreur interne: dÃ©bordement par le bas de la pile de rÃ©adressages RL78erreur interne: opÃ©rande devrait Ãªtre zÃ©ro pour %serreur interne: branchement/saut vers une adresse impaire dÃ©tectÃ©erreur interne: erreur dangereuseerreur interne: rÃ©adressage dangereuxerreur interne: la fusion de l'architecture Â«Â %sÂ Â» avec l'architecture Â«Â %sÂ Â» a produit une architecture inconnueerreur interne: hors limiteerreur interne: type de rÃ©adressage douteux utilisÃ© dans une librairie partagÃ©eerreur interne: erreur inconnueerreur interne: erreur de rÃ©adressage non supportÃ©eincohÃ©rence interne dans la taille de la section .got.locinconsistance interne: reste %lu != max %lu; merci de rapporter cette anomaliesymbole internesymbole interne type de rÃ©adressage TARGET2 Â«Â %sÂ Â» invalidecible bfd invalidecontenu invalide dans la section %pArÃ©adressage d'entrÃ©e invalide en produisant un format de sortie non ELF et non mmo; veuillez utiliser le programme objcopy pour convertir de ELF ou mmo, ou assembler en utilisant Â«Â -no-expandÂ Â» (pour gcc, Â«Â -Wa,-no-expandÂ Â»rÃ©adressage d'entrÃ©e invalide en produisant un format de sortie non ELF et non mmo; veuillez utiliser le programme objcopy pour convertir de ELF ou mmo, ou compiler en utilisant l'option gcc Â«Â -mno-base-addressesÂ Â».opÃ©ration invalidesection de sortie invalide pour .eh_frame_entry: %pAadresse de rÃ©adressage incorrecteindex de section incorrect dans ETIRutilisation incorrecte de %s avec des contextesrelÃ¢che ip2k: en-tÃªte de table de commutation corrompuerelÃ¢che ip2k: table de commutation sans concordance complÃ¨te des informations de rÃ©adressagela version de l'Ã©diteur de liens â€“ %s â€“ est-elle dÃ©passÃ©eÂ ?saut (PC rel26) Ã  la section (%s) n'est pas supportÃ©saut vers une adresse non alignÃ©e sur une instructionsaut vers une adresse non alignÃ©e sur un motÃ©tiquette, nom: %.*s
+erreur interne: dÃ©bordement de la pile de rÃ©adressages RL78erreur interne: dÃ©bordement par le bas de la pile de rÃ©adressages RL78erreur interne: opÃ©rande devrait Ãªtre zÃ©ro pour %serreur interne: branchement/saut vers une adresse impaire dÃ©tectÃ©erreur interne: erreur dangereuseerreur interne: rÃ©adressage dangereuxerreur interne: la fusion de l'architecture Â«Â %sÂ Â» avec l'architecture Â«Â %sÂ Â» a produit une architecture inconnueerreur interne: hors limiteerreur interne: rÃ©adressage non supportÃ©erreur interne: type de rÃ©adressage douteux utilisÃ© dans une librairie partagÃ©eerreur interne: erreur inconnueerreur interne: erreur de rÃ©adressage non supportÃ©eincohÃ©rence interne dans la taille de la section .got.locinconsistance interne: reste %lu != max %lu; merci de rapporter cette anomaliesymbole internesymbole interne %s invalidetype de rÃ©adressage TARGET2 Â«Â %sÂ Â» invalidecible bfd invalidecontenu invalide dans la section %pArÃ©adressage d'entrÃ©e invalide en produisant un format de sortie non ELF et non mmo; veuillez utiliser le programme objcopy pour convertir de ELF ou mmo, ou assembler en utilisant Â«Â -no-expandÂ Â» (pour gcc, Â«Â -Wa,-no-expandÂ Â»rÃ©adressage d'entrÃ©e invalide en produisant un format de sortie non ELF et non mmo; veuillez utiliser le programme objcopy pour convertir de ELF ou mmo, ou compiler en utilisant l'option gcc Â«Â -mno-base-addressesÂ Â».opÃ©ration invalidesection de sortie invalide pour .eh_frame_entry: %pAadresse de rÃ©adressage incorrecteindex de section incorrect dans ETIRutilisation incorrecte de %s avec des contextesrelÃ¢che ip2k: en-tÃªte de table de commutation corrompuerelÃ¢che ip2k: table de commutation sans concordance complÃ¨te des informations de rÃ©adressagela version de l'Ã©diteur de liens â€“ %s â€“ est-elle dÃ©passÃ©eÂ ?saut (PC rel26) Ã  la section (%s) n'est pas supportÃ©saut vers une adresse non alignÃ©e sur une instructionsaut vers une adresse non alignÃ©e sur un motÃ©tiquette, nom: %.*s
 long: %2u, type: %2u num ligne  (long: %u)
 image liableÃ©bauches de l'Ã©diteur de liens dans %u groupe
 Ã©bauches de l'Ã©diteur de liens dans %u groupes
 litÃ©ralerÃ©adressage littÃ©ral rencontrÃ© pour un symbole externedÃ©bordement de l'offset du branchement long de l'Ã©bauche Â«Â %sÂ Â»mach-o: il y a trop de sections (%u) le maximum est 255,
-archive mal formÃ©emÃ©moire Ã©puisÃ©emep: pas de rÃ©adressage pour le code %ddÃ©but module
+archive mal formÃ©erÃ©adressage mach-o ARM half sectdiffÂ : longueur invalideÂ : %drÃ©adressage mach-o ARM local sectdiff mal formÃ©Â : longueur invalideÂ : %dpaire de rÃ©adressage mach-o ARM mal formÃ©eÂ : longueur invalideÂ : %dpaire de rÃ©adressage mach-o ARM mal formÃ©eÂ : le rÃ©adressage est le premier rÃ©adressagerÃ©adressage mach-o ARM mal formÃ©Â : type de rÃ©adressage inconnuÂ : %drÃ©adressage mach-o ARM sectdiff mal formÃ©Â : longueur invalideÂ : %drÃ©adressage mach-o ARM vanilla mal formÃ©Â : longueur invalideÂ : %d (pcrelÂ : %d)rÃ©adressage mach-o mal formÃ©Â : l'index de section est plus grand que le nombre de sectionsmÃ©moire Ã©puisÃ©emep: pas de rÃ©adressage pour le code %ddÃ©but module
 fin module
 nom: [val: %08lx long %d]: natifune ou plusieurs nouvelles fonctions d'entrÃ©e spÃ©cifiÃ©es mais aucune bibliothÃ¨que d'import est spÃ©cifiÃ©e:nonaucune adresse assignÃ©e Ã  la section de sortie %s des trampolines (veneers)pas d'erreuraucun autre fichier d'archiveaucun symboletable de %s non contiguÃ«
-rÃ©adressages non dynamiques font rÃ©fÃ©rence au symbole dynamique %sla taille de non recouvrement de 0x%v plus la taille maximum de recouvrement de 0x%v dÃ©passe l'espace local
+rÃ©adressages non dynamiques font rÃ©fÃ©rence au symbole dynamique %ssymbole non dynamique %s dans la table des symboles dynamiquesla taille de non recouvrement de 0x%v plus la taille maximum de recouvrement de 0x%v dÃ©passe l'espace local
 ajout non nul dans le rÃ©adressage @fptraucunsection non-reprÃ©sentable sur la sortiepas suffisamment d'espace GOT pour les entrÃ©es locales GOTpas assez de mÃ©moire pour trier les rÃ©adressagespas de table de projection: donnÃ©es=%lx adresse de la table=%d
 pas de table de projection: variable d'environnement pas initialisÃ©e
 pas dÃ©finimodule objet N'EST PAS sans erreurÂ !le dÃ©calage du trampoline (aka veneer) pour la fonction d'entrÃ©e Â«Â %sÂ Â» n'est pas un multiple de sa tailleune cause possible pour cette erreur est que le symbole est rÃ©fÃ©rencÃ© dans le code indiquÃ© comme si il avait un alignement plus grand que celui qui a Ã©tÃ© dÃ©clarÃ© lors de sa dÃ©finition.hors limitedÃ©bordement aprÃ¨s la relÃ¢chedÃ©bordement du rÃ©adressage de l'Ã©bauche de recouvrementpointeur
 fanions privÃ©s = %lxfanions privÃ©s = %lxfanions privÃ©s = %lx: fanions privÃ©s = 0x%lxfanions privÃ©s = 0x%lx:prologue: adresse bkpt 0x%08x
 symbole protÃ©gÃ©symbole protÃ©gÃ© dÃ©but rec: nom: %.*s
 fin rec
-rÃ©fÃ©rence Ã  une banque d'adresses [%lx:%04lx] dans l'espace normal d'adresses Ã  %04lxrÃ©fÃ©rence Ã  un symbole far Â«Â %sÂ Â» utilisant le mauvais rÃ©adressage peut provoquer une exÃ©cution incorrecteregregistre %%g%d utilisÃ© de maniÃ¨re incompatible: %s dans %pB prÃ©cÃ©demment %s dans %pBregistre de section contient
+l'enregistrement est trop petit pour la longueur du nom de symbolerÃ©fÃ©rence Ã  une banque d'adresses [%lx:%04lx] dans l'espace normal d'adresses Ã  %04lxrÃ©fÃ©rence Ã  un symbole far Â«Â %sÂ Â» utilisant le mauvais rÃ©adressage peut provoquer une exÃ©cution incorrecteregregistre %%g%d utilisÃ© de maniÃ¨re incompatible: %s dans %pB prÃ©cÃ©demment %s dans %pBregistre de section contient
 le rÃ©adressage (%d) est *INCONNU*rÃ©adressage pour psect non-RELrÃ©adressage hors limitele rÃ©adressage fait rÃ©fÃ©rence Ã  un symbole non dÃ©fini dans le modulele rÃ©adressage exige un opÃ©rande nulle rÃ©adressage devrait Ãªtre un nombre paireles rÃ©adressages entre segments diffÃ©rents ne sont pas supportÃ©ssuppression de la section inutilisÃ©e Â«Â %pAÂ Â» dans le fichier Â«Â %pBÂ Â»rÃ©ouverture de %pB: %s
 commande %d rÃ©servÃ©edÃ©but rtn
 fin rtn: taille 0x%08x
@@ -1374,26 +1394,30 @@ En-tÃªtes ppcboot:
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-objet partagÃ©erreur de taille dans la section %pAla taille des petites donnÃ©es de la section dÃ©passe 64KB; abaissez la limite de taille des petites donnÃ©es (voyez l'option -G)som_sizeof_headers non implÃ©mentÃ©dÃ©solÃ©, pas de support des fichiers objet dupliquÃ©s dans un script auto-overlay
+objet partagÃ©erreur de taille dans la section %pAla taille des petites donnÃ©es de la section dÃ©passe 64KB; abaissez la limite de taille des petites donnÃ©es (voyez l'option -G)som_sizeof_headers non implÃ©mentÃ©dÃ©solÃ©, ce fichier ne peut Ãªtre traitÃ©dÃ©solÃ©, pas de support des fichiers objet dupliquÃ©s dans un script auto-overlay
 dÃ©solÃ©: modtab, toc et extrefsyms ne sont pas encore implÃ©mentÃ©s pour les commandes dysymtab.source (long: %u)
 rÃ©adressages ALPHA_R_BSR parasitel'analyse de la pile ignorera l'appel de %s Ã  %s
 dÃ©bordement de la pile (%d) dans _bfd_vms_pushsous dÃ©pilage de la pile dans _bfd_vms_popdonnÃ©es standards: %s
-l'adresse de dÃ©part de Â«Â %sÂ Â» est diffÃ©rente de celle de l'Ã©dition de liens prÃ©cÃ©denteprocÃ©dure statique (sans name)taille des Ã©bauches ne concorde pas avec la taille calculÃ©esymbolesymbole le symbole Â«Â %sÂ Â» a un st_other invalide pour l'ABI Ã  la version 1symbole Â«Â %sÂ Â» a des types qui diffÃ¨rent: REGISTRE dans %pB, prÃ©cÃ©demment %s dans %pBsymboles ont besoin de la section de dÃ©bug qui est inexistanteerreur d'appel systÃ¨meinformation sur table de version systÃ¨me:
+l'adresse de dÃ©part de Â«Â %sÂ Â» est diffÃ©rente de celle de l'Ã©dition de liens prÃ©cÃ©denteprocÃ©dure statique (sans name)taille des Ã©bauches ne concorde pas avec la taille calculÃ©esymbolesymbole le symbole Â«Â %sÂ Â» a un st_other invalide pour l'ABI Ã  la version 1symbole Â«Â %sÂ Â» a des types qui diffÃ¨rent: REGISTRE dans %pB, prÃ©cÃ©demment %s dans %pBla liaison symbolique STB_GNU_UNIQUE n'est pas supportÃ©esymboles ont besoin de la section de dÃ©bug qui est inexistantele type symbolique STT_GNU_IFUNC n'est pas supportÃ©erreur d'appel systÃ¨meinformation sur table de version systÃ¨me:
 term(b): 0x%02xterm_w: 0x%04xla cible bfin ne supporte actuellement pas la gÃ©nÃ©ration de rÃ©adressages copiÃ©sil y a un conflit en fusionnant les fanions d'en-tÃªtes ELF de %pBtrop d'entrÃ©es GOT pour -fpic, recompilez avec -fPICessayez d'activer la relaxation pour Ã©viter des rÃ©adressages tronquÃ©sspec de type pour Ã©lÃ©ment:
 spec de type pour l'indice %u:
 pointeur typÃ©
 typspec (long: %u)
-impossible d'allouer les donnÃ©es pour la commande de chargement %#xincapable de repÃ©rer le liant %s Â«Â %sÂ Â» pour Â«Â %sÂ Â»incapable de trouver un Ã©quivalent pour le symbole Â«Â %sÂ Â» de la section Â«Â %sÂ Â»impossible de disposer la commande de chargement inconnue %#ximpossible d'atteindre %s (Ã  0x%08x) depuis le pointeur global (Ã  0x%08x) car l'offset (%d) est en dehors de la plage autorisÃ©e -32768 Ã  32767.
-impossible de lire l'enregistrement EIHS Ã  l'offset %#xincapable de lire dans la section %s Ã  partir de %pBimpossible d'Ã©crire la commande de chargement inconnue %#xchaine de bits de %s dÃ©salignÃ©e
-non dÃ©fini rÃ©fÃ©rence %s non dÃ©finie dans le symbole complexe: %sSTO_SH5_ISA32 inattendu sur le symbole local n'est pas traitÃ©numÃ©ro de machine inattendutype de section de fichier core OSF/1 %d non traitÃ©type d'entrÃ©e egsd %u non supportÃ©
+impossible d'allouer les donnÃ©es pour la commande de chargement %#xincapable de repÃ©rer le liant %s Â«Â %sÂ Â» pour Â«Â %sÂ Â»incapable de trouver un Ã©quivalent pour le symbole Â«Â %sÂ Â» de la section Â«Â %sÂ Â»impossible de disposer la commande de chargement inconnue %#ximpossible de lire l'enregistrement EIHS Ã  l'offset %#xincapable de lire dans la section %s Ã  partir de %pBimpossible d'Ã©crire la commande de chargement inconnue %#xchaine de bits de %s dÃ©salignÃ©e
+non dÃ©fini rÃ©fÃ©rence %s non dÃ©finie dans le symbole complexe: %snumÃ©ro de machine inattendutype de section de fichier core OSF/1 %d non traitÃ©type d'entrÃ©e egsd %u non supportÃ©
 sous-type emh %u non pris en charge
-rÃ©adressage %s non traitÃ©inconnusous type EGSD %d inconnucommande ETIR %d inconnuetype de base %d inconnuerreur inconnuela valeur d'ordre des octets de l'en-tÃªte %#x est inconnuecommande de ligne %d inconnueopÃ©rateur Â«Â %cÂ Â» inconnu dans le symbole complexerÃ©adressage %s inconnurÃ©adressage %s + %s inconnucommande source %d inconnuesymbole inconnu dans la commande %sarchitecture v850 inconnueinconnu: %xINPUT_SECTION_FLAG %s non reconnu
-identificateur de cible TI COFF non reconnu Â«Â 0x%xÂ Â»rÃ©adressage du .stab non supportÃ©commande STA %s non supportÃ©erÃ©adressage non supportÃ©erÃ©adressage non supportÃ©rÃ©adressage non supportÃ© entre les espaces d'adresses data/insntype de rÃ©adressage non supportÃ©type de rÃ©adressage %#x non supportÃ©utilisation de valeurs gp multiplesarchitecture v850 E3architecture v850architecture v850earchitecture v850e1architecture v850e2architecture v850e2v3architecture v850e3v5variable Â«Â %sÂ Â» peut seulement Ãªtre dans une rÃ©gion de donnÃ©es petite, zÃ©ro ou minusculevariable Â«Â %sÂ Â» ne peut Ãªtre dans une rÃ©gion de donnÃ©es petite et minuscule Ã  la foisvariable Â«Â %sÂ Â» ne peut Ãªtre dans une rÃ©gion de donnÃ©es petite et zÃ©ro Ã  la foisvariable Â«Â %sÂ Â» ne peut Ãªtre dans une rÃ©gion de donnÃ©es zÃ©ro et minuscule Ã  la foisvariable Â«Â %sÂ Â» ne peut occuper de multiples petites rÃ©gions de donnÃ©esvflags: 0x%02x, valeur: 0x%08x  vma:			Adresse DÃ©but	 Adresse Fin	  Unwind Info
+rÃ©adressage %s non traitÃ©inconnusous type EGSD %d inconnucommande ETIR %d inconnueattribut inconnu pour le symbole Â«Â %sÂ Â»Â : 0x%02xtype de base %d inconnuerreur inconnuela valeur d'ordre des octets de l'en-tÃªte %#x est inconnuecommande de ligne %d inconnueopÃ©rateur Â«Â %cÂ Â» inconnu dans le symbole complexerÃ©adressage %s inconnurÃ©adressage %s + %s inconnucommande source %d inconnuesymbole inconnu dans la commande %sarchitecture v850 inconnueinconnu: %xINPUT_SECTION_FLAG %s non reconnu
+identificateur de cible TI COFF non reconnu Â«Â 0x%xÂ Â»rÃ©adressage du .stab non supportÃ©commande STA %s non supportÃ©erÃ©adressage non supportÃ©erÃ©adressage non supportÃ©rÃ©adressage non supportÃ© entre les espaces d'adresses data/insntype de rÃ©adressage non supportÃ©utilisation de valeurs gp multiplesarchitecture v850 E3architecture v850architecture v850earchitecture v850e1architecture v850e2architecture v850e2v3architecture v850e3v5variable Â«Â %sÂ Â» peut seulement Ãªtre dans une rÃ©gion de donnÃ©es petite, zÃ©ro ou minusculevariable Â«Â %sÂ Â» ne peut Ãªtre dans une rÃ©gion de donnÃ©es petite et minuscule Ã  la foisvariable Â«Â %sÂ Â» ne peut Ãªtre dans une rÃ©gion de donnÃ©es petite et zÃ©ro Ã  la foisvariable Â«Â %sÂ Â» ne peut Ãªtre dans une rÃ©gion de donnÃ©es zÃ©ro et minuscule Ã  la foisvariable Â«Â %sÂ Â» ne peut occuper de multiples petites rÃ©gions de donnÃ©esvflags: 0x%02x, valeur: 0x%08x  vma:			Adresse DÃ©but	 Adresse Fin	  Unwind Info
 attention, taille de la section .pdata (%ld) n'est pas un multiple de %d
-attention: %pB et %pB on des tailles de wchar_t diffÃ©rentesattention: %pB et %pB ne sont pas d'accord sur la compilation du code pour DSBTattention: %pB ne supporte pas l'inter-rÃ©seautage, contrairement Ã  %pBattention: %pB a une section corrompue avec une taille (%attention: %pB a un index de table de chaÃ®nes corrompu - ignorÃ©attention: %pB supporte l'inter-rÃ©seautage, contrairement Ã  %pBAttention: %pB utilise %s (dÃ©fini par %pB), %pB utilise Â«Â %sÂ Â»Attention: %pB utilise %s (dÃ©fini par %pB), %pB utilise l'ABI MSA inconnue %dAttention: %pB utilise %s (dÃ©fini par %pB), %pB utilise l'ABI virgule flottante inconnue %dattention: %pB utilise des enums %s alors que la sortie doit utiliser des enums %s. L'utilisation des valeurs enum entre objets peu Ã©chouerattention: %pB utilise des wchar_t de %u octets alors que la sortie doit utiliser des wchar_t de %u octets. L'utilisation de wchar_t entre objets peu Ã©chouerAttention: %pB utilise l'ABI MSA inconnue %d (dÃ©finie par %pB), %pB utilise %sAttention: %pB utilise l'ABI MSA inconnue %d (dÃ©finie par %pB), %pB utilise l'ABI MSA inconnue %dAttention: %pB utilise l'ABI virgule flottante inconnue %d (dÃ©finie par %pB), %pB utilise %sAttention: %pB utilise l'ABI virgule flottante inconnue %d (dÃ©finie par %pB), %pB utilise l'ABI virgule flottante inconnue %dattention: %pB: configuration de plateforme conflictuelleattention: %pB: configuration de plateforme %s en conflit avec %sattention: %pB: taille de GNU_PROPERTY_TYPE (%ld) corrompue: %#lxattention: %1$pB: datasz du type (0x%3$x) GNU_PROPERTY_TYPE (%2$ld) corrompu: 0x%4$xattention: %pB: taille de Â«Â no copy on protectedÂ Â» corrompue: 0x%xattention: %pB: taille de pille corrompue: 0x%xattention: %pB: symbole local Â«Â %sÂ Â» n'a pas de sectionattention: %pB: attribut d'objet ARC %d inconnuattention: %pB: l'attribut d'objet EABI %d est inconnuattention: %pB: attribut d'objet MSPABI %d inconnuattention: %pB: type GNU_PROPERTY_TYPE (%ld) non supportÃ©: 0x%xattention: %s dÃ©passe la taille de la section
+attention: %pB et %pB on des tailles de wchar_t diffÃ©rentesattention: %pB et %pB ne sont pas d'accord sur la compilation du code pour DSBTattention: %pB ne supporte pas l'inter-rÃ©seautage, contrairement Ã  %pBattention: %pB a une section corrompue avec une taille (%attention: %pB a un index de table de chaÃ®nes corrompu - ignorÃ©attention: %pB supporte l'inter-rÃ©seautage, contrairement Ã  %pBavertissement: %pB utilise la version de spec privilÃ¨ge %u.%u.%u mais la sortie utilise la version %u.%u.%u.Attention: %pB utilise %s (dÃ©fini par %pB), %pB utilise Â«Â %sÂ Â»Attention: %pB utilise %s (dÃ©fini par %pB), %pB utilise l'ABI MSA inconnue %dAttention: %pB utilise %s (dÃ©fini par %pB), %pB utilise l'ABI virgule flottante inconnue %dattention: %pB utilise des enums %s alors que la sortie doit utiliser des enums %s. L'utilisation des valeurs enum entre objets peu Ã©chouerattention: %pB utilise des wchar_t de %u octets alors que la sortie doit utiliser des wchar_t de %u octets. L'utilisation de wchar_t entre objets peu Ã©chouerAttention: %pB utilise l'ABI MSA inconnue %d (dÃ©finie par %pB), %pB utilise %sAttention: %pB utilise l'ABI MSA inconnue %d (dÃ©finie par %pB), %pB utilise l'ABI MSA inconnue %dAttention: %pB utilise l'ABI virgule flottante inconnue %d (dÃ©finie par %pB), %pB utilise %sAttention: %pB utilise l'ABI virgule flottante inconnue %d (dÃ©finie par %pB), %pB utilise l'ABI virgule flottante inconnue %dattention: %pB: configuration de plateforme conflictuelleattention: %pB: configuration de plateforme %s en conflit avec %sattention: %pB: taille de GNU_PROPERTY_TYPE (%ld) corrompue: %#lxattention: %1$pB: datasz du type (0x%3$x) GNU_PROPERTY_TYPE (%2$ld) corrompu: 0x%4$xattention: %pB: taille de Â«Â no copy on protectedÂ Â» corrompue: 0x%xattention: %pB: taille de pille corrompue: 0x%xattention: %pB: symbole local Â«Â %sÂ Â» n'a pas de sectionattention: %pB: attribut d'objet ARC %d inconnuattention: %pB: l'attribut d'objet EABI %d est inconnuattention: %pB: attribut d'objet MSPABI %d inconnuattention: %pB: type GNU_PROPERTY_TYPE (%ld) non supportÃ©: 0x%xattention: %s dÃ©passe la taille de la section
 attention: %s recouvre %s
-attention: section %s a une taille nulleattention: --plt-localentry est particuliÃ¨rement dangereux sans le support de ld.so pour dÃ©tecter des violations de l'ABIattention: rÃ©adressage RL78_SYM avec un symbole inconnuattention: rÃ©adressage RX_SYM avec un symbole inconnuattention: alignement %u du symbole commun Â«Â %sÂ Â» dans %pB est plus grand que l'alignement (%u) de sa section %pAattention: alignement %u du symbole Â«Â %sÂ Â» dans %pB est plus petit que %u dans %pBattention: tentative d'exportation d'un symbole non dÃ©fini Â«Â %sÂ Â»attention: appel au symbole %s dÃ©fini dans %pB qui n'est pas une fonctionattention: mise Ã  zÃ©ro du fanion d'inter-rÃ©seautage %pB en raison du code sans inter-rÃ©seautage dans %pB liÃ© avec luiattention: mise Ã  zÃ©ro du fanion d'inter-rÃ©seautage de %pB en raison d'une requÃªte externeattention: donnÃ©es de dÃ©roulement corrompues
-attention: abandon de la section dynamique %savertissement: le fanion d'archive ck%2$s du fichier %1$pB est en conflit avec la cible ck%3$s, utilise ck%4$sattention: l'option des sections gc est ignorÃ©eattention: production d'une librairie partagÃ©e contenant du code non-PICattention: production d'une librairie partagÃ©e contenant du code non-PIDattention: pas d'initialisation du fanion d'inter-rÃ©seautage de %pB puisqu'il a dÃ©jÃ  Ã©tÃ© spÃ©cifiÃ© sans inter-rÃ©seautageattention: rÃ©adressage fait rÃ©fÃ©rence Ã  un segment diffÃ©rentattention: section Â«Â %sÂ Â» changÃ© en une noteattention: type de la section Â«Â %pAÂ Â» changÃ© en PROGBITSattention: le symbole Â«Â %sÂ Â» est Ã  la fois une section et une non-sectionattention: type et taille du symbole dynamique Â«Â %sÂ Â» ne sont pas dÃ©finisattention: le type du symbole Â«Â %sÂ Â» a changÃ© de %d Ã  %d dans %pBattention: incapable d'initialiser la taille de la section %s dans %pBattention: incapable de mettre Ã  jour le contenu de la section %s dans %pBavertissement: eflag arch Â«Â %#lxÂ Â» non reconnuattention: fanions d'architecture non dÃ©finis ou trop anciens; utilise la machine par dÃ©fautattention: l'Ã©criture de l'archive Ã©tait lente: rÃ©Ã©criture du cachet de date-heureattention: Ã©criture de la section Â«Â %pAÂ Â» vers un Ã©norme dÃ©calage (c-Ã -d nÃ©gatif) dans le fichierattention: section xdata corrompue
-ouivous ne pouvez pas dÃ©finir %s dans un scriptPRIu64PRIx64PRId64%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: %#: warning: bad R_SH_USES offset%pB: %#: warning: R_SH_USES points to unrecognized insn %#x%pB: %#: warning: bad R_SH_USES load offset%pB: %#: warning: could not find expected reloc%pB: %#: warning: symbol in unexpected section%pB: %#: warning: could not find expected COUNT reloc%pB: %#: warning: bad count%pB: %#: fatal: reloc overflow while relaxing%pB: bad reloc address %# in section `%pA'%pB: illegal relocation type %d at address %#%pB: corrupt symbol count: %#%pB: not enough memory to allocate space for %# symbols of size %#%pB: bad string table size %error: %pB(%pA) is too large (%# bytes)DWARF error: offset (%) greater than or equal to %s size (%)DWARF error: data count (%) larger than buffer sizeDWARF error: unknown format content type %DWARF error: line info section is too small (%)DWARF error: line info data is bigger (%#) than the space remaining in the section (%#lx)DWARF error: unable to read alt ref %%pB: error: attribute section length too small: %%pB(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%pB: corrupt size field in group section header: %#%pB: invalid size field in group section header: %#%pB: section %pA lma %# adjusted to %#%pB: warning: empty loadable segment detected at vaddr=%#, is this intentional?%pB: warning: segment alignment of %# is too large%pB(%pA+%#): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): CMEM relocation to `%s+%#' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): unexpected %s instruction '%#lx' in TLS trampoline%pB(%pA+%#): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC%pB(%pA+%#): %s relocation not permitted in shared object%pB(%pA+%#): only ADD or SUB instructions are allowed for ALU group relocations%pB(%pA+%#): overflow whilst splitting %# for group relocation %s%pB(%pA+%#): %s relocation against SEC_MERGE section%pB(%pA+%#): %s used with TLS symbol %s%pB(%pA+%#): %s used with non-TLS symbol %s%pB(%#): error: cannot create STM32L4XX veneer; jump out of range by % bytes; cannot encode branch instruction%pB(%pA+%#): unresolvable relocation against symbol `%s'%pB(%pA+%#): reloc against `%s': error %d%pB: relocation at `%pA+%#' references symbol `%s' with nonzero addend%pB, section %pA: relocation %s with non-zero addend % against local symbol%pB, section %pA: relocation %s with non-zero addend % against symbol `%s'%pB(%pA+%#): cannot reach %s, recompile with -ffunction-sections%pB(%pA+%#): %s fixup for insn %#x is not supported in a non-shared link%pB(%pA+%#): cannot handle %s for %s%pB: TLS transition from %s to %s against `%s' at %# in section `%pA' failedip2k linker: missing page instruction at %# (dest = %#)ip2k linker: redundant page instruction at %# (dest = %#)%pB: warning: %s points to unrecognized reloc at %#%pB(%pA+%#): error: %s with unexpected instruction %#x%pB(%pA): unsafe PID relocation %s at %# (against %s in %s)%pB(%pA+%#): invalid instruction for TLS relocation %s%pB: CALL15 reloc at %# not against global symbol%pB: %#: warning: R_SH_USES points to unrecognized insn 0x%x%pB: %#: fatal: unaligned branch target for relax-support relocation%pB: %#: fatal: unaligned %s relocation %#%pB: %#: fatal: R_SH_PSHA relocation % not in range -32..32%pB: %#: fatal: R_SH_PSHL relocation % not in range -32..32%pB(%pA+%#): cannot emit fixup to `%s' in read-only section%pB(%pA+%#): %s relocation against external symbol "%s"%pB(%pA): offset in relocation for GD->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd4??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xc7??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xd1??)%pB(%pA+%#): unexpected instruction %#04X (expected 0x310c)%pB(%pA+%#): unexpected instruction %#04X (expected 0x410b)%pB(%pA+%#): unexpected instruction %#04X (expected 0x34cc)%pB(%pA): offset in relocation for IE->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd0??: mov.l)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?12: stc)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?ce: mov.l)%pB(%pA): offset in relocation for GD->IE translation is too small: %#%pB(%pA): offset in relocation for LD->LE translation is too small: %#%pB(%s+%#): unresolvable %s relocation against symbol `%s'%pB: %#: warning: %s points to unrecognized insns%pB: %#: warning: %s points to unrecognized insn %#x%pB: %#: warning: %s points to unrecognized reloc%pB: %#: warning: %s points to unrecognized reloc %#%pB: warning: GOT addend of % to `%s' does not match previous GOT addend of %%pB: warning: PLT addend of % to `%s' from %pA section ignored%pB: warning: %s relocation to %# from %pA section%pB(%pA+%#): relocation offset out of range (size=%#)%pB(%pA+%#): could not decode instruction; possible configuration mismatch%pB(%pA+%#): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%pB(%pA+%#): unexpected fix for %s relocation%pB: %pA+%#: warning: %s relocation against unexpected insnstub entry for %s cannot load .plt, dp offset = %%pB(%pA+%#): cannot reach %s%pB: can't relax br at %# in section `%pA'; please use brl or indirect branch%pB: short data segment overflowed (%# >= 0x400000)%pB: missing TLS section for relocation %s against `%s' at %# in section `%pA'.%pB: Can't relax br (%s) to `%s' at %# in section `%pA' with size %# (> 0x1000000).warning: size of symbol `%s' changed from % in %pB to % in %pB%pB(%pA): relocation % has invalid symbol index %ld%pB: Internal inconsistency error for value for
- linker-allocated global register: linked: %# != relaxed: %#%pB: LOCAL directive: register $% is not a local register; first global register is $%%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %%pB: addend %s%#x in relocation %s against symbol `%s' at %# in section `%pA' is out of range%pB: version count (%) does not match symbol count (%ld)warning: %pB is truncated: expected core file size >= %, found: %%pB: bad reloc symbol index (%# >= %#lx) for offset %# in section `%pA'%pB: non-zero symbol index (%#) for offset %# in section `%pA' when the object file has no symbol tableerror: %pB contains a reloc (%#) for section %pA that references a non-existent global symbol%pB: %pA+%#: no symbol found for INHERIT%pB: incorrect `.reginfo' section size; expected %, got %%pB: GOT reloc at %# not expected in executables%pB: CALL16 reloc at %# not against global symbol%pB: can't find matching LO16 reloc against `%s' for %s at %# in section `%pA'%pB: `%pA' entry VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB: `%pA' offset of % from `%pA' beyond the range of ADDIUPC%pB: `%pA' start VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB 64-bit address %# out of range for Intel Hex file%pB: address %# out of range for Intel Hex filesection address (%#) below start of segment (%#)%pB: access beyond end of merged section (%)%pB: attempt to emit contents at non-multiple-of-4 address %#%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %%pB: XMC_TC0 symbol `%s' is class %d scnlen %%pB: reloc %s:% not in csectTOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%pB: Data Directory size (%lx) exceeds space left in section (%)%pB: chaÃ®ne de dÃ©calage invalide % >= %%pB: la table des matiÃ¨res des rÃ©adressages Ã  %# pour le symbole Â«Â %sÂ Â» sans aucune entrÃ©e%pB: %#: attention: mauvais dÃ©calage pour R_SH_USES%pB: %#: attention: R_SH_USES pointe vers l'insn inconnu %#x%pB: %#: attention: mauvais dÃ©calage de chargement R_SH_USES%pB: %#: attention: ne peut repÃ©rer le rÃ©adressage attendu%pB: %#: attention: symbole dans une section inattendue%pB: %#: attention: ne peut repÃ©rer le compteur de rÃ©adressages attendu%pB: %#: attention: mauvais dÃ©compte%pB: %#: erreur fatale: dÃ©bordement de rÃ©adressage lors des relÃ¢ches%pB: mauvaise adresse de rÃ©adressage %# dans la section Â«Â %pAÂ Â»%pB: type de rÃ©adressage %d illÃ©gal Ã  l'adresse %#%pB: dÃ©compte de symbole corrompu: %#%pB: Pas assez de mÃ©moire pour allouer l'espace pour %# symboles de taille %#%pB: mauvaise taille de la table des chaÃ®nes %erreur: %pB(%pA) est trop grand (%# octets)Erreur DWARF: dÃ©calage (%) plus grand ou Ã©gal Ã  la taille de %s (%)Erreur DWARF: dÃ©compte de donnÃ©es (%) plus grand que la taille du tamponErreur DWARF: type de contenu de format % inconnuErreur DWARF: la section des informations de lignes est trop petite (%)Erreur DWARF: les donnÃ©es des informations de lignes sont plus grandes (%#) que l'espace restant dans la section (%#lx)Erreur DWARF: impossible de lire la ref alt %%pB: erreur: longueur de section d'attributs trop petite: %%pB(%pA+%#): rÃ©adressage %s sans solution vers le symbole Â«Â %sÂ Â»%pB: chaÃ®ne de dÃ©calage invalide %u >= % pour la section Â«Â %sÂ Â»%pB: champ de taille corrompu dans l'en-tÃªte du groupe de section: %#%pB: champ de taille invalide dans l'en-tÃªte du groupe de section: %#%pB: section %pA avec lma %# ajustÃ©e Ã  %#%pB: attention: segment chargeable vide dÃ©tectÃ© Ã  vaddr=%#, est-ce intentionnelÂ ?%pB: attention: un alignement de segment de %# est trop grand%pB(%pA+%#): le rÃ©adressage CMEM vers Â«Â %sÂ Â» est invalide. 16 MSB devrait Ãªtre %#x (la valeur est %#)%pB(%pA+%#): le rÃ©adressage CMEM vers Â«Â %s+%#Â Â» est invalide, 16 MSB devrait Ãªtre %#x (la valeur est %)%pB(%pA+%#): instruction %s Â«Â %lxÂ Â» inattendue dans le trampoline TLS%pB(%pA+%#): instruction %s '%#lx' inattendue rÃ©fÃ©rencÃ©e par TLS_GOTDESC%pB(%pA+%#): rÃ©adressage %s pas permis dans un objet partagÃ©%pB(%pA+%#): seuls ADD ou SUB sont permis dans les rÃ©adressages du groupe ALU%pB(%pA+%#): dÃ©bordement en scindant %# pour le rÃ©adressage du groupe %s%pB(%pA+%#): %s rÃ©adressage vers une section SEC_MERGE%pB(%pA+%#): %s utilisÃ© avec le symbole TLS %s%pB(%pA+%#): %s utilisÃ© avec le symbole non-TLS %s%pB(%#): erreur: impossible de crÃ©er le trampoline (veneer) du STM32L4XX; saut hors de portÃ©e pour % octets; impossible d'encoder l'instruction de branchement%pB(%pA+%#): rÃ©adressage sans solution vers le symbole Â«Â %sÂ Â»%pB(%pA+%#): rÃ©adressage sur Â«Â %sÂ Â»: erreur %d%pB: rÃ©adressage Ã  Â«Â %pA+%#Â Â» fait rÃ©fÃ©rence au symbole Â«Â %sÂ Â» avec un opÃ©rande non nul%pB, section %pA: rÃ©adressage de %s avec un opÃ©rande non nul % sur le symbole local%pB, section %pA: rÃ©adressage de %s avec un opÃ©rande non nul % sur le symbole Â«Â %sÂ Â»%pB(%pA+%#): ne peut atteindre %s, recompilez avec -ffunction-sections%pB(%pA+%#): correction %s pour insn %#x n'est pas supportÃ© dans un lien non partagÃ©%pB(%pA+%#): ne sait pas traiter %s pour %s%pB: Ã‰chec de la transition TLS de %s vers %s sur Â«Â %sÂ Â» Ã  %# dans la section Â«Â %pAÂ Â»Ã©diteur de liens ip2k: instruction de page manquante Ã  %# (cible = %#)Ã©diteur de liens ip2k: instruction de page redondante Ã  %# (cible = %#).%pB: attention: %s pointe vers le rÃ©adressage non reconnu Ã  %#%pB(%pA+%#): erreur: %s avec l'instruction inattendue %#x%pB(%pA): rÃ©adressage PID %s non sÃ»r Ã  % (sur %s dans %s)%pB(%pA+%#): instruction invalide pour le rÃ©adressage TLS %s%pB: appel CALL15 de rÃ©adressage Ã  %# n'est pas appliquÃ© sur un symbole global%pB: %#: attention: R_SH_USES pointe vers un insn inconnu 0x%x%pB: %#: fatal: cible de branchement non alignÃ©e pour un rÃ©adressage de type relax-support%pB: %#: fatal: rÃ©adressage %s non alignÃ© %#%pB: %#: fatal: rÃ©adressage R_SH_PSHA % pas dans l'intervalle -32..32%pB: %#: fatal: rÃ©adressage R_SH_PSHL % n'est pas dans l'intervalle -32..32%pB(%pA+%#): impossible d'apporter des corrections Ã  Â«Â %sÂ Â» dans une section en lecture seule%pB(%pA+%#): %s rÃ©adressage vers le symbole externe Â«Â %sÂ Â»%pB(%pA): le dÃ©calage dans le rÃ©adressage de la traduction GD->LE est trop petit: %#%pB(%pA+%#): instruction %#04X inattendue (0xd4?? attendue)%pB(%pA+%#): instruction %#04X inattendue (0xc7?? attendue)%pB(%pA+%#): instruction %#04X inattendue (0xd1?? attendue)%pB(%pA+%#): instruction %#04X inattendue (0x310c attendue)%pB(%pA+%#): instruction %#04X inattendue (0x410b attendue)%pB(%pA+%#): instruction %#04X inattendue (0x34cc attendue)%pB(%pA): le dÃ©calage dans le rÃ©adressage pour la traduction IE->LE est trop petit: %#%pB(%pA+%#): instruction %#04X inattendue (0xd0?? attendue: mov.l)%pB(%pA+%#): instruction %#04X inattendue (0x0?12 attendue: stc)%pB(%pA+%#): instruction %#04X inattendue (0x0?ce attendu: mov.l)%pB(%pA): le dÃ©calage dans le rÃ©adressage pour la traduction GD->IE est trop petit: %#%pB(%pA): le dÃ©calage dans le rÃ©adressage pour la traduction LD->LE est trop petit: %#%pB(%s+%#): rÃ©adressage %s sans solution vers le symbole Â«Â %sÂ Â»%pB: %#: attention: %s pointe vers l'insn inconnue%pB: %#: attention: %s pointe vers l'insn inconnue %#x%pB: %#: attention: %s pointe vers le rÃ©adressage non reconnu%pB: %#: attention: %s pointe vers le rÃ©adressage non reconnu Ã  %#%pB: attention: ajout GOT de % Ã  Â«Â %sÂ Â» ne concorde par avec l'ajout GOT prÃ©cÃ©dent de %%pB: attention: ignore l'ajout PLT de % Ã  Â«Â %sÂ Â» de la section %pA%pB: attention: rÃ©adressage %s vers %# de la section %pA%pB(%pA+%#): dÃ©calage de rÃ©adressage hors limite (taille=%#)%pB(%pA+%#): l'instruction ne peut pas Ãªtre dÃ©codÃ©e; la configuration est peut-Ãªtre erronÃ©e%pB(%pA+%#): l'instruction ne peut pas Ãªtre dÃ©codÃ©e pour un rÃ©adressage XTENSA_ASM_SIMPLIFY; la configuration est peut-Ãªtre erronÃ©e%pB(%pA+%#): correction inattendue pour le rÃ©adressage %s%pB: %pA+%#: attention: rÃ©adressage de %s sur une insn inattenduel'entrÃ©e de l'Ã©bauche pour %s ne peut charger .plt, dÃ©calage dp = %%pB(%pA+%#): ne peut atteindre %s%pB: Ne peut relÃ¢cher br Ã  %# dans la section Â«Â %pAÂ Â». Veuillez utiliser brl ou un branchement indirect.%pB: dÃ©bordement du segment de donnÃ©es court (%# >= 0x400000)%pB: section TLS manquante pour le rÃ©adressage %s vers Â«Â %sÂ Â» Ã  %# dans la section Â«Â %pAÂ Â».%pB: Ne peut pas relÃ¢cher br (%s) sur Â«Â %sÂ Â» Ã  %# dans la section Â«Â %pAÂ Â» avec la taille %# (> 0x1000000).attention: taille du symbole Â«Â %sÂ Â» a changÃ© de % dans %pB Ã  % dans %pB%pB(%pA): rÃ©adressage % a un index de symbole %ld invalide%pB: Erreur d'incohÃ©rence interne pour la valeur du registre global
+attention: section %s a une taille nulleattention: %s devrait Ãªtre utilisÃ© au lieu de %sattention: --enable-non-contiguous-regions abandonne la section Â«Â %sÂ Â» de Â«Â %sÂ Â»
+attention: --plt-localentry est particuliÃ¨rement dangereux sans le support de ld.so pour dÃ©tecter des violations de l'ABIattention: rÃ©adressage RL78_SYM avec un symbole inconnuattention: rÃ©adressage RX_SYM avec un symbole inconnuattention: alignement %u du symbole commun Â«Â %sÂ Â» dans %pB est plus grand que l'alignement (%u) de sa section %pAattention: alignement %u du symbole Â«Â %sÂ Â» dans %pB est plus petit que %u dans %pBattention: tentative d'exportation d'un symbole non dÃ©fini Â«Â %sÂ Â»attention: appel au symbole %s dÃ©fini dans %pB qui n'est pas une fonctionattention: mise Ã  zÃ©ro du fanion d'inter-rÃ©seautage %pB en raison du code sans inter-rÃ©seautage dans %pB liÃ© avec luiattention: mise Ã  zÃ©ro du fanion d'inter-rÃ©seautage de %pB en raison d'une requÃªte externeattention: donnÃ©es de dÃ©roulement corrompues
+attention: abandon de la section dynamique %savertissement: le fanion d'archive ck%2$s du fichier %1$pB est en conflit avec la cible ck%3$s, utilise ck%4$sattention: l'option des sections gc est ignorÃ©eattention: production d'une librairie partagÃ©e contenant du code non-PICattention: production d'une librairie partagÃ©e contenant du code non-PIDattention: pas d'initialisation du fanion d'inter-rÃ©seautage de %pB puisqu'il a dÃ©jÃ  Ã©tÃ© spÃ©cifiÃ© sans inter-rÃ©seautageattention: la version de spec privilÃ¨ge 1.9.1 ne peut pas Ãªtre liÃ©e avec d'autres versions de spec.attention: rÃ©adressage fait rÃ©fÃ©rence Ã  un segment diffÃ©rentattention: section Â«Â %sÂ Â» changÃ© en une noteattention: type de la section Â«Â %pAÂ Â» changÃ© en PROGBITSattention: le symbole Â«Â %sÂ Â» est Ã  la fois une section et une non-sectionattention: type et taille du symbole dynamique Â«Â %sÂ Â» ne sont pas dÃ©finisattention: le type du symbole Â«Â %sÂ Â» a changÃ© de %d Ã  %d dans %pBattention: incapable d'initialiser la taille de la section %s dans %pBattention: incapable de mettre Ã  jour le contenu de la section %s dans %pBavertissement: eflag arch Â«Â %#lxÂ Â» non reconnuattention: fanions d'architecture non dÃ©finis ou trop anciens; utilise la machine par dÃ©fautattention: l'Ã©criture de l'archive Ã©tait lente: rÃ©Ã©criture du cachet de date-heureattention: Ã©criture de la section Â«Â %pAÂ Â» vers un Ã©norme dÃ©calage (c-Ã -d nÃ©gatif) dans le fichierattention: section xdata corrompue
+ouivous ne pouvez pas dÃ©finir %s dans un scriptPRIu64PRIx64PRId64%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: %#: warning: bad R_SH_USES offset%pB: %#: warning: R_SH_USES points to unrecognized insn %#x%pB: %#: warning: bad R_SH_USES load offset%pB: %#: warning: could not find expected reloc%pB: %#: warning: symbol in unexpected section%pB: %#: warning: could not find expected COUNT reloc%pB: %#: warning: bad count%pB: %#: fatal: reloc overflow while relaxing%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: bad reloc address %# in section `%pA'error: %pB(%pA) section size (%# bytes) is larger than file size (%# bytes)error: %pB(%pA) is too large (%# bytes)DWARF error: offset (%) greater than or equal to %s size (%)DWARF error: data count (%) larger than buffer sizeDWARF error: unknown format content type %DWARF error: line info section is too small (%)DWARF error: line info data is bigger (%#) than the space remaining in the section (%#lx)DWARF error: unable to read alt ref %DWARF error: unable to locate abstract instance DIE ref %%pB: error: attribute section length too small: %%pB(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%pB: invalid size field in group section header: %#%pB: section %pA lma %# adjusted to %#%pB: warning: empty loadable segment detected at vaddr=%#, is this intentional?%pB: warning: segment alignment of %# is too large%pB(%pA+%#): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): CMEM relocation to `%s+%#' is invalid, 16 MSB should be %#x (value is %#)ERROR: CMSE stub (%s section) too far (%#) from destination (%#)%pB(%pA+%#): unexpected %s instruction '%#lx' in TLS trampoline%pB(%pA+%#): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC%pB(%pA+%#): %s relocation not permitted in shared object%pB(%pA+%#): only ADD or SUB instructions are allowed for ALU group relocations%pB(%pA+%#): overflow whilst splitting %# for group relocation %s%pB(%pA+%#): %s relocation against SEC_MERGE section%pB(%pA+%#): %s used with TLS symbol %s%pB(%pA+%#): %s used with non-TLS symbol %s%pB(%#): error: cannot create STM32L4XX veneer; jump out of range by % bytes; cannot encode branch instruction%pB(%pA+%#): unresolvable relocation against symbol `%s'%pB(%pA+%#): reloc against `%s': error %d%pB: relocation at `%pA+%#' references symbol `%s' with nonzero addend%pB, section %pA: relocation %s with non-zero addend % against local symbol%pB, section %pA: relocation %s with non-zero addend % against symbol `%s'%pB(%pA+%#): cannot reach %s, recompile with -ffunction-sections%pB(%pA+%#): %s fixup for insn %#x is not supported in a non-shared link%pB(%pA+%#): cannot handle %s for %s%pB: TLS transition from %s to %s against `%s' at %# in section `%pA' failedip2k linker: missing page instruction at %# (dest = %#)ip2k linker: redundant page instruction at %# (dest = %#)%pB: warning: %s points to unrecognized reloc at %#global pointer relative relocation at address %# when _gp not defined
+unable to reach %s (at %#) from the global pointer (at %#) because the offset (%) is out of the allowed range, -32678 to 32767
+%pB(%pA+%#): error: %s with unexpected instruction %#x%pB(%pA): unsafe PID relocation %s at %# (against %s in %s)%pB(%pA+%#): invalid instruction for TLS relocation %s%pB: CALL15 reloc at %# not against global symbol%pB: %#: warning: R_SH_USES points to unrecognized insn 0x%x%pB: %#: fatal: unaligned branch target for relax-support relocation%pB: %#: fatal: unaligned %s relocation %#%pB: %#: fatal: R_SH_PSHA relocation % not in range -32..32%pB: %#: fatal: R_SH_PSHL relocation % not in range -32..32%pB(%pA+%#): cannot emit fixup to `%s' in read-only section%pB(%pA+%#): %s relocation against external symbol "%s"%pB(%pA): offset in relocation for GD->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd4??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xc7??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xd1??)%pB(%pA+%#): unexpected instruction %#04X (expected 0x310c)%pB(%pA+%#): unexpected instruction %#04X (expected 0x410b)%pB(%pA+%#): unexpected instruction %#04X (expected 0x34cc)%pB(%pA): offset in relocation for IE->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd0??: mov.l)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?12: stc)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?ce: mov.l)%pB(%pA): offset in relocation for GD->IE translation is too small: %#%pB(%pA): offset in relocation for LD->LE translation is too small: %#%pB(%s+%#): unresolvable %s relocation against symbol `%s'%pB: %#: warning: %s points to unrecognized insns%pB: %#: warning: %s points to unrecognized insn %#x%pB: %#: warning: %s points to unrecognized reloc%pB: %#: warning: %s points to unrecognized reloc %#%pB: warning: GOT addend of % to `%s' does not match previous GOT addend of %%pB: warning: PLT addend of % to `%s' from %pA section ignored%pB: warning: %s relocation to %# from %pA section%pB(%pA+%#): relocation offset out of range (size=%#)%pB(%pA+%#): could not decode instruction; possible configuration mismatch%pB(%pA+%#): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%pB(%pA+%#): unexpected fix for %s relocation%pB: %pA+%#: warning: %s relocation against unexpected insnstub entry for %s cannot load .plt, dp offset = %%pB(%pA+%#): cannot reach %s%pB: can't relax br at %# in section `%pA'; please use brl or indirect branch%pB: short data segment overflowed (%# >= 0x400000)%pB: missing TLS section for relocation %s against `%s' at %# in section `%pA'.%pB: Can't relax br (%s) to `%s' at %# in section `%pA' with size %# (> 0x1000000).warning: size of symbol `%s' changed from % in %pB to % in %pB%pB(%pA): relocation % has invalid symbol index %ld%pB: Internal inconsistency error for value for
+ linker-allocated global register: linked: %# != relaxed: %#%pB: LOCAL directive: register $% is not a local register; first global register is $%%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %%pB: addend %s%#x in relocation %s against symbol `%s' at %# in section `%pA' is out of range%pB: version count (%) does not match symbol count (%ld)warning: %pB is truncated: expected core file size >= %, found: %%pB: bad reloc symbol index (%# >= %#lx) for offset %# in section `%pA'%pB: non-zero symbol index (%#) for offset %# in section `%pA' when the object file has no symbol tableerror: %pB contains a reloc (%#) for section %pA that references a non-existent global symbol%pB: %pA+%#: no symbol found for INHERIT%pB: incorrect `.reginfo' section size; expected %, got %%pB: GOT reloc at %# not expected in executables%pB: CALL16 reloc at %# not against global symbol%pB: can't find matching LO16 reloc against `%s' for %s at %# in section `%pA'%pB: `%pA' entry VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB: `%pA' offset of % from `%pA' beyond the range of ADDIUPC%pB: `%pA' start VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB 64-bit address %# out of range for Intel Hex file%pB: address %# out of range for Intel Hex filesection address (%#) below start of segment (%#)%pB: access beyond end of merged section (%)%pB: attempt to emit contents at non-multiple-of-4 address %#%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %%pB: XMC_TC0 symbol `%s' is class %d scnlen %%pB: reloc %s:% not in csectTOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%pB: Data Directory size (%lx) exceeds space left in section (%)%pB: chaÃ®ne de dÃ©calage invalide % >= %%pB: la table des matiÃ¨res des rÃ©adressages Ã  %# pour le symbole Â«Â %sÂ Â» sans aucune entrÃ©e%pB: %#: attention: mauvais dÃ©calage pour R_SH_USES%pB: %#: attention: R_SH_USES pointe vers l'insn inconnu %#x%pB: %#: attention: mauvais dÃ©calage de chargement R_SH_USES%pB: %#: attention: ne peut repÃ©rer le rÃ©adressage attendu%pB: %#: attention: symbole dans une section inattendue%pB: %#: attention: ne peut repÃ©rer le compteur de rÃ©adressages attendu%pB: %#: attention: mauvais dÃ©compte%pB: %#: erreur fatale: dÃ©bordement de rÃ©adressage lors des relÃ¢ches%pB: type de rÃ©adressage %d illÃ©gal Ã  l'adresse %#%pB: mauvaise taille de la table des chaÃ®nes %%pB: mauvaise adresse de rÃ©adressage %# dans la section Â«Â %pAÂ Â»erreur: %pB(%pA) la taille de la section (%# octets) est plus grande que la taille du fichier (%# octets)erreur: %pB(%pA) est trop grand (%# octets)Erreur DWARF: dÃ©calage (%) plus grand ou Ã©gal Ã  la taille de %s (%)Erreur DWARF: dÃ©compte de donnÃ©es (%) plus grand que la taille du tamponErreur DWARF: type de contenu de format % inconnuErreur DWARF: la section des informations de lignes est trop petite (%)Erreur DWARF: les donnÃ©es des informations de lignes sont plus grandes (%#) que l'espace restant dans la section (%#lx)Erreur DWARF: impossible de lire la ref alt %Erreur DWARF: impossible de localiser l'instance abstraite de la rÃ©f DIE %%pB: erreur: longueur de section d'attributs trop petite: %%pB(%pA+%#): rÃ©adressage %s sans solution vers le symbole Â«Â %sÂ Â»%pB: chaÃ®ne de dÃ©calage invalide %u >= % pour la section Â«Â %sÂ Â»%pB: champ de taille invalide dans l'en-tÃªte du groupe de section: %#%pB: section %pA avec lma %# ajustÃ©e Ã  %#%pB: attention: segment chargeable vide dÃ©tectÃ© Ã  vaddr=%#, est-ce intentionnelÂ ?%pB: attention: un alignement de segment de %# est trop grand%pB(%pA+%#): le rÃ©adressage CMEM vers Â«Â %sÂ Â» est invalide. 16 MSB devrait Ãªtre %#x (la valeur est %#)%pB(%pA+%#): le rÃ©adressage CMEM vers Â«Â %s+%#Â Â» est invalide, 16 MSB devrait Ãªtre %#x (la valeur est %)ERREUR: l'Ã©bauche CMSE (section %s) est trop loin (%#) de la destination (%#)%pB(%pA+%#): instruction %s Â«Â %lxÂ Â» inattendue dans le trampoline TLS%pB(%pA+%#): instruction %s '%#lx' inattendue rÃ©fÃ©rencÃ©e par TLS_GOTDESC%pB(%pA+%#): rÃ©adressage %s pas permis dans un objet partagÃ©%pB(%pA+%#): seuls ADD ou SUB sont permis dans les rÃ©adressages du groupe ALU%pB(%pA+%#): dÃ©bordement en scindant %# pour le rÃ©adressage du groupe %s%pB(%pA+%#): %s rÃ©adressage vers une section SEC_MERGE%pB(%pA+%#): %s utilisÃ© avec le symbole TLS %s%pB(%pA+%#): %s utilisÃ© avec le symbole non-TLS %s%pB(%#): erreur: impossible de crÃ©er le trampoline (veneer) du STM32L4XX; saut hors de portÃ©e pour % octets; impossible d'encoder l'instruction de branchement%pB(%pA+%#): rÃ©adressage sans solution vers le symbole Â«Â %sÂ Â»%pB(%pA+%#): rÃ©adressage sur Â«Â %sÂ Â»: erreur %d%pB: rÃ©adressage Ã  Â«Â %pA+%#Â Â» fait rÃ©fÃ©rence au symbole Â«Â %sÂ Â» avec un opÃ©rande non nul%pB, section %pA: rÃ©adressage de %s avec un opÃ©rande non nul % sur le symbole local%pB, section %pA: rÃ©adressage de %s avec un opÃ©rande non nul % sur le symbole Â«Â %sÂ Â»%pB(%pA+%#): ne peut atteindre %s, recompilez avec -ffunction-sections%pB(%pA+%#): correction %s pour insn %#x n'est pas supportÃ© dans un lien non partagÃ©%pB(%pA+%#): ne sait pas traiter %s pour %s%pB: Ã‰chec de la transition TLS de %s vers %s sur Â«Â %sÂ Â» Ã  %# dans la section Â«Â %pAÂ Â»Ã©diteur de liens ip2k: instruction de page manquante Ã  %# (cible = %#)Ã©diteur de liens ip2k: instruction de page redondante Ã  %# (cible = %#).%pB: attention: %s pointe vers le rÃ©adressage non reconnu Ã  %#rÃ©adressage relatif au pointeur global Ã  l'adresse %# sans que _gp ne soit dÃ©fini
+impossible d'atteindre %s (Ã  %#) depuis le pointeur global (Ã  %#) car l'offset (%) est en dehors de la plage autorisÃ©e -32768 Ã  32767.
+%pB(%pA+%#): erreur: %s avec l'instruction inattendue %#x%pB(%pA): rÃ©adressage PID %s non sÃ»r Ã  % (sur %s dans %s)%pB(%pA+%#): instruction invalide pour le rÃ©adressage TLS %s%pB: appel CALL15 de rÃ©adressage Ã  %# n'est pas appliquÃ© sur un symbole global%pB: %#: attention: R_SH_USES pointe vers un insn inconnu 0x%x%pB: %#: fatal: cible de branchement non alignÃ©e pour un rÃ©adressage de type relax-support%pB: %#: fatal: rÃ©adressage %s non alignÃ© %#%pB: %#: fatal: rÃ©adressage R_SH_PSHA % pas dans l'intervalle -32..32%pB: %#: fatal: rÃ©adressage R_SH_PSHL % n'est pas dans l'intervalle -32..32%pB(%pA+%#): impossible d'apporter des corrections Ã  Â«Â %sÂ Â» dans une section en lecture seule%pB(%pA+%#): %s rÃ©adressage vers le symbole externe Â«Â %sÂ Â»%pB(%pA): le dÃ©calage dans le rÃ©adressage de la traduction GD->LE est trop petit: %#%pB(%pA+%#): instruction %#04X inattendue (0xd4?? attendue)%pB(%pA+%#): instruction %#04X inattendue (0xc7?? attendue)%pB(%pA+%#): instruction %#04X inattendue (0xd1?? attendue)%pB(%pA+%#): instruction %#04X inattendue (0x310c attendue)%pB(%pA+%#): instruction %#04X inattendue (0x410b attendue)%pB(%pA+%#): instruction %#04X inattendue (0x34cc attendue)%pB(%pA): le dÃ©calage dans le rÃ©adressage pour la traduction IE->LE est trop petit: %#%pB(%pA+%#): instruction %#04X inattendue (0xd0?? attendue: mov.l)%pB(%pA+%#): instruction %#04X inattendue (0x0?12 attendue: stc)%pB(%pA+%#): instruction %#04X inattendue (0x0?ce attendu: mov.l)%pB(%pA): le dÃ©calage dans le rÃ©adressage pour la traduction GD->IE est trop petit: %#%pB(%pA): le dÃ©calage dans le rÃ©adressage pour la traduction LD->LE est trop petit: %#%pB(%s+%#): rÃ©adressage %s sans solution vers le symbole Â«Â %sÂ Â»%pB: %#: attention: %s pointe vers l'insn inconnue%pB: %#: attention: %s pointe vers l'insn inconnue %#x%pB: %#: attention: %s pointe vers le rÃ©adressage non reconnu%pB: %#: attention: %s pointe vers le rÃ©adressage non reconnu Ã  %#%pB: attention: ajout GOT de % Ã  Â«Â %sÂ Â» ne concorde par avec l'ajout GOT prÃ©cÃ©dent de %%pB: attention: ignore l'ajout PLT de % Ã  Â«Â %sÂ Â» de la section %pA%pB: attention: rÃ©adressage %s vers %# de la section %pA%pB(%pA+%#): dÃ©calage de rÃ©adressage hors limite (taille=%#)%pB(%pA+%#): l'instruction ne peut pas Ãªtre dÃ©codÃ©e; la configuration est peut-Ãªtre erronÃ©e%pB(%pA+%#): l'instruction ne peut pas Ãªtre dÃ©codÃ©e pour un rÃ©adressage XTENSA_ASM_SIMPLIFY; la configuration est peut-Ãªtre erronÃ©e%pB(%pA+%#): correction inattendue pour le rÃ©adressage %s%pB: %pA+%#: attention: rÃ©adressage de %s sur une insn inattenduel'entrÃ©e de l'Ã©bauche pour %s ne peut charger .plt, dÃ©calage dp = %%pB(%pA+%#): ne peut atteindre %s%pB: Ne peut relÃ¢cher br Ã  %# dans la section Â«Â %pAÂ Â». Veuillez utiliser brl ou un branchement indirect.%pB: dÃ©bordement du segment de donnÃ©es court (%# >= 0x400000)%pB: section TLS manquante pour le rÃ©adressage %s vers Â«Â %sÂ Â» Ã  %# dans la section Â«Â %pAÂ Â».%pB: Ne peut pas relÃ¢cher br (%s) sur Â«Â %sÂ Â» Ã  %# dans la section Â«Â %pAÂ Â» avec la taille %# (> 0x1000000).attention: taille du symbole Â«Â %sÂ Â» a changÃ© de % dans %pB Ã  % dans %pB%pB(%pA): rÃ©adressage % a un index de symbole %ld invalide%pB: Erreur d'incohÃ©rence interne pour la valeur du registre global
  allouÃ© Ã  l'Ã©dition de lien: liÃ©: %# != relÃ¢chÃ©: %#%pB: directive LOCAL: registre $% n'est pas un registre local; premier registre global est $%%pB: le rÃ©adressage %s vers le symbole STT_GNU_IFUNC Â«Â %sÂ Â» a l'opÃ©rande non nul: %%pB: l'opÃ©rande %s%#x dans le rÃ©adressage %s vers le symbole Â«Â %sÂ Â» Ã  %# dans la section Â«Â %pAÂ Â» est hors limite%pB: compteur de version (%) ne concorde pas avec le symbole du compteur (%ld)attention: %pB est tronquÃ©: taille attendue du cÅ“ur du fichier >= %, obtenu: %%pB: mauvais index du symbole de rÃ©adressage (%# >= %#lx) pour l'offset %# de la section Â«Â %pAÂ Â»%pB: index de symbole non nul (%#) pour l'offset %# de la section Â«Â %pAÂ Â» quand le fichier objet n'a pas de table de symboleserreur: %pB contient un rÃ©adressage (%#) pour la section %pA qui fait rÃ©fÃ©rence Ã  un symbole global inexistant%pB: %pA+%#: Pas de symbole trouvÃ© pour INHERIT%pB: taille de section Â«Â .reginfoÂ Â» incorrecte; % attendu, % obtenu%pB: rÃ©adressage GOT Ã  %# pas attendu dans les exÃ©cutables%pB: Le rÃ©adressage CALL16 Ã  %# n'est pas sur un symbole global%pB: ne trouve pas de rÃ©adressage LO16 correspondant sur Â«Â %sÂ Â» pour %s Ã  %# de la section Â«Â %pAÂ Â»%pB: l'entrÃ©e VMA Â«Â %pAÂ Â» de %# est en dehors de la plage 32 bits supportÃ©e; envisagez d'utiliser Â«Â -Ttext-segment=â€¦Â Â»%pB: Â«Â %pAÂ Â» offset de % depuis Â«Â %pAÂ Â» au delÃ  de la limite de ADDIUPC%pB: le dÃ©but VMA Â«Â %pAÂ Â» de %# est en dehors de la plage 32 bits supportÃ©e; envisagez d'utiliser Â«Â -Ttext-segment=â€¦Â Â»%pB: l'adresse 64 bits %# hors limite pour le fichier Intel hexadÃ©cimal%pB: adresse %# hors limite pour le fichier Intel hexadÃ©cimaladresse de section (%#) en deÃ§Ã  du dÃ©but du segment (%#)%pB: accÃ¨s au-delÃ  de la fin de la section fusionnÃ©e (%)%pB: tentative d'Ã©mettre du contenu Ã  une adresse %# qui n'est pas un multiple de 4%pB: trop de registres initialisÃ©s; longueur de section %%pB: adresse de dÃ©part invalide pour des registres initialisÃ©s de longueur %: %#%pB: symbole XTY_ER Â«Â %sÂ Â» erronÃ©: classe %d scnum %d scnlen %%pB: XMC_TC0 symbol Â«Â %sÂ Â» est la classe %d scnlen %%pB: le rÃ©adressage %s:% n'est pas dans csectDÃ©bordement de la table des entrÃ©es: %# > 0x10000; essayez l'option -mminimal-toc Ã  la compilation%pB(%pA+0x%: % octets requis pour aligner sur une frontiÃ¨re de % octets mais seulement % sont prÃ©sents%pB: La taille du rÃ©pertoire de donnÃ©es (%lx) excÃ¨de l'espace restant dans la section (%)
\ No newline at end of file
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/fr.po ./bfd/po/fr.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/fr.po	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/po/fr.po	2021-05-21 01:57:23.000000000 +0000
@@ -1,14 +1,14 @@
 # Messages franÃ§ais pour GNU concernant bfd.
-# Copyright (C) 2019 Free Software Foundation, Inc.
+# Copyright (C) 2020 Free Software Foundation, Inc.
 # This file is distributed under the same license as the binutils package.
 # Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996.
-# FrÃ©dÃ©ric Marchal <fmarchal@perso.be>, 2019.
+# FrÃ©dÃ©ric Marchal <fmarchal@perso.be>, 2020.
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd-2.31.90\n"
+"Project-Id-Version: bfd-2.34.90\n"
 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2019-01-19 16:30+0000\n"
-"PO-Revision-Date: 2019-05-15 05:58+0200\n"
+"POT-Creation-Date: 2020-07-04 10:26+0100\n"
+"PO-Revision-Date: 2020-07-09 12:30+0200\n"
 "Last-Translator: FrÃ©dÃ©ric Marchal <fmarchal@perso.be>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "Language: fr\n"
@@ -18,222 +18,235 @@ msgstr ""
 "X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n >= 2);\n"
 
-#: aout-cris.c:200
+#: aout-cris.c:196
 #, c-format
 msgid "%pB: unsupported relocation type exported: %#x"
 msgstr "%pB: type de rÃ©adressage exportÃ© non supportÃ© %#x"
 
-#: aout-cris.c:244
+#: aout-cris.c:242
 #, c-format
 msgid "%pB: unsupported relocation type imported: %#x"
 msgstr "%pB: type de rÃ©adressage importÃ© non supportÃ©: %#x"
 
-#: aout-cris.c:256
+#: aout-cris.c:254
 #, c-format
 msgid "%pB: bad relocation record imported: %d"
 msgstr "%pB: mauvais enregistrement de rÃ©adressage importÃ©: %d"
 
-#: aoutx.h:1265 aoutx.h:1618 pdp11.c:1138 pdp11.c:1399
+#: aoutx.h:1265 aoutx.h:1613 pdp11.c:1236 pdp11.c:1510
 #, c-format
 msgid "%pB: can not represent section `%pA' in a.out object file format"
 msgstr "%pB: ne peut reprÃ©senter la section Â«Â %pAÂ Â» dans le fichier format objet a.out"
 
-#: aoutx.h:1582 pdp11.c:1371
+#: aoutx.h:1577 pdp11.c:1482
 #, c-format
 msgid "%pB: can not represent section for symbol `%s' in a.out object file format"
 msgstr "%pB: ne peut reprÃ©senter la section pour le symbole Â«Â %sÂ Â» dans le fichier format objet a.out"
 
-#: aoutx.h:1585 vms-alpha.c:7860
+#: aoutx.h:1580 vms-alpha.c:8040
 msgid "*unknown*"
 msgstr "*inconnu*"
 
-#: aoutx.h:1721
+#: aoutx.h:1716 pdp11.c:1578
 #, c-format
 msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
 msgstr "%pB: chaÃ®ne de dÃ©calage invalide %<PRIu64> >= %<PRIu64>"
 
-#: aoutx.h:2412 aoutx.h:2430
+#: aoutx.h:1963
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: taille de rÃ©adressage AOUT non supportÃ©eÂ : %d"
+
+#: aoutx.h:2412 aoutx.h:2430 pdp11.c:2058
 #, c-format
 msgid "%pB: attempt to write out unknown reloc type"
 msgstr "%pB: tentative d'Ã©crire un type de rÃ©adressage inconnu"
 
-#: aoutx.h:4086
+#: aoutx.h:4087 pdp11.c:3441
 #, c-format
 msgid "%pB: unsupported relocation type"
 msgstr "%pB: type de rÃ©adressage non supportÃ©"
 
 #. Unknown relocation.
-#: aoutx.h:4407 coff-alpha.c:601 coff-alpha.c:1514 coff-rs6000.c:2772
+#: aoutx.h:4408 coff-alpha.c:601 coff-alpha.c:1512 coff-rs6000.c:2758
 #: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:279 elf-hppa.h:798
-#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:517
-#: elf32-arm.c:1943 elf32-avr.c:964 elf32-bfin.c:1061 elf32-bfin.c:4698
-#: elf32-cr16.c:653 elf32-cr16.c:683 elf32-cr16c.c:186 elf32-cris.c:467
-#: elf32-crx.c:429 elf32-csky.c:989 elf32-d10v.c:234 elf32-d30v.c:522
-#: elf32-d30v.c:544 elf32-dlx.c:548 elf32-epiphany.c:376 elf32-fr30.c:381
-#: elf32-frv.c:2558 elf32-frv.c:6262 elf32-ft32.c:306 elf32-h8300.c:302
-#: elf32-i386.c:401 elf32-ip2k.c:1245 elf32-iq2000.c:442 elf32-lm32.c:539
-#: elf32-m32c.c:305 elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2417
-#: elf32-m68hc11.c:390 elf32-m68hc12.c:510 elf32-m68k.c:352 elf32-mcore.c:354
-#: elf32-mcore.c:440 elf32-mep.c:389 elf32-metag.c:878 elf32-microblaze.c:692
-#: elf32-microblaze.c:969 elf32-mips.c:2229 elf32-moxie.c:137
-#: elf32-msp430.c:648 elf32-msp430.c:658 elf32-mt.c:241 elf32-nds32.c:3236
-#: elf32-nds32.c:3262 elf32-nds32.c:5173 elf32-nios2.c:3015 elf32-or1k.c:1037
-#: elf32-pj.c:325 elf32-ppc.c:898 elf32-ppc.c:911 elf32-pru.c:420
-#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:292
-#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:160 elf32-tic6x.c:1508
-#: elf32-tic6x.c:1518 elf32-tic6x.c:1537 elf32-tic6x.c:1547 elf32-tic6x.c:2642
-#: elf32-tilepro.c:803 elf32-v850.c:1899 elf32-v850.c:1921 elf32-v850.c:4270
-#: elf32-vax.c:290 elf32-visium.c:482 elf32-wasm32.c:105 elf32-xc16x.c:250
-#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:459
-#: elf32-xtensa.c:493 elf64-alpha.c:1112 elf64-alpha.c:4101 elf64-alpha.c:4249
-#: elf64-ia64-vms.c:254 elf64-ia64-vms.c:3440 elf64-mips.c:3958
-#: elf64-mips.c:3974 elf64-mmix.c:1264 elf64-nfp.c:238 elf64-ppc.c:921
-#: elf64-ppc.c:1209 elf64-ppc.c:1218 elf64-s390.c:328 elf64-s390.c:378
-#: elf64-x86-64.c:285 elfn32-mips.c:3786 elfxx-ia64.c:324 elfxx-riscv.c:955
-#: elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:912 elfxx-tilegx.c:952
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:2125
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:2223
-#: elf32-ia64.c:210 elf32-ia64.c:3862 elf64-ia64.c:210 elf64-ia64.c:3862
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:532
+#: elf32-arm.c:1985 elf32-avr.c:962 elf32-bfin.c:1062 elf32-bfin.c:4677
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:990 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:372 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6239 elf32-ft32.c:306 elf32-h8300.c:302 elf32-i386.c:400
+#: elf32-ip2k.c:1240 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2232 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:389 elf32-metag.c:874 elf32-microblaze.c:692
+#: elf32-microblaze.c:965 elf32-mips.c:2229 elf32-moxie.c:137
+#: elf32-msp430.c:653 elf32-msp430.c:663 elf32-mt.c:241 elf32-nds32.c:3237
+#: elf32-nds32.c:3263 elf32-nds32.c:5033 elf32-nios2.c:3022 elf32-or1k.c:1040
+#: elf32-pj.c:326 elf32-ppc.c:901 elf32-ppc.c:914 elf32-pru.c:423
+#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:296
+#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:163 elf32-tic6x.c:1498
+#: elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537 elf32-tic6x.c:2583
+#: elf32-tilepro.c:800 elf32-v850.c:1898 elf32-v850.c:1920 elf32-v850.c:4270
+#: elf32-vax.c:290 elf32-visium.c:481 elf32-wasm32.c:105 elf32-xc16x.c:250
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:522
+#: elf32-xtensa.c:556 elf32-z80.c:331 elf64-alpha.c:1113 elf64-alpha.c:4067
+#: elf64-alpha.c:4215 elf64-bpf.c:322 elf64-ia64-vms.c:254
+#: elf64-ia64-vms.c:3429 elf64-mips.c:3958 elf64-mips.c:3974 elf64-mmix.c:1264
+#: elf64-nfp.c:238 elf64-ppc.c:1014 elf64-ppc.c:1366 elf64-ppc.c:1375
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:281 elfn32-mips.c:3786
+#: elfxx-ia64.c:324 elfxx-riscv.c:954 elfxx-sparc.c:589 elfxx-sparc.c:639
+#: elfxx-tilegx.c:909 elfxx-tilegx.c:949 elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2313 elfnn-ia64.c:213 elfnn-ia64.c:3824
 #, c-format
 msgid "%pB: unsupported relocation type %#x"
 msgstr "%pB: type de rÃ©adressage %#x non supportÃ©"
 
-#: aoutx.h:5434 pdp11.c:3694
+#: aoutx.h:5435 pdp11.c:3864
 #, c-format
 msgid "%pB: relocatable link from %s to %s not supported"
 msgstr "%pB: lien relocalisable de %s vers %s n'est pas supportÃ©"
 
-#: archive.c:2214
+#: arc-got.h:69
+#, c-format
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr "%pB: impossible d'allouer la mÃ©moire pour les entrÃ©es locales GOT"
+
+#: archive.c:2249
 msgid "warning: writing archive was slow: rewriting timestamp"
 msgstr "attention: l'Ã©criture de l'archive Ã©tait lente: rÃ©Ã©criture du cachet de date-heure"
 
-#: archive.c:2330 linker.c:1429
+#: archive.c:2316 archive.c:2376 elflink.c:4545 linker.c:1428
 #, c-format
 msgid "%pB: plugin needed to handle lto object"
 msgstr "%pB: le greffon doit gÃ©rer l'objet lto"
 
-#: archive.c:2559
+#: archive.c:2602
 msgid "Reading archive file mod timestamp"
 msgstr "Lecture du cachet date-heure modifiÃ© du fichier d'archive"
 
-#: archive.c:2583
+#: archive.c:2626
 msgid "Writing updated armap timestamp"
 msgstr "Ã‰criture du cachet date-heure armap mise Ã  jour"
 
-#: bfd.c:449
+#: bfd.c:677
 msgid "no error"
 msgstr "pas d'erreur"
 
-#: bfd.c:450
+#: bfd.c:678
 msgid "system call error"
 msgstr "erreur d'appel systÃ¨me"
 
-#: bfd.c:451
+#: bfd.c:679
 msgid "invalid bfd target"
 msgstr "cible bfd invalide"
 
-#: bfd.c:452
+#: bfd.c:680
 msgid "file in wrong format"
 msgstr "fichier dans un mauvais format"
 
-#: bfd.c:453
+#: bfd.c:681
 msgid "archive object file in wrong format"
 msgstr "fichier objet d'archive dans un mauvais format"
 
-#: bfd.c:454
+#: bfd.c:682
 msgid "invalid operation"
 msgstr "opÃ©ration invalide"
 
-#: bfd.c:455
+#: bfd.c:683
 msgid "memory exhausted"
 msgstr "mÃ©moire Ã©puisÃ©e"
 
-#: bfd.c:456
+#: bfd.c:684
 msgid "no symbols"
 msgstr "aucun symbole"
 
-#: bfd.c:457
+#: bfd.c:685
 msgid "archive has no index; run ranlib to add one"
 msgstr "l'archive n'a pas d'index; exÃ©cuter ranlib pour en ajouter un"
 
-#: bfd.c:458
+#: bfd.c:686
 msgid "no more archived files"
 msgstr "aucun autre fichier d'archive"
 
-#: bfd.c:459
+#: bfd.c:687
 msgid "malformed archive"
 msgstr "archive mal formÃ©e"
 
-#: bfd.c:460
+#: bfd.c:688
 msgid "DSO missing from command line"
 msgstr "DSO manquant dans la ligne de commande"
 
-#: bfd.c:461
+#: bfd.c:689
 msgid "file format not recognized"
 msgstr "format de fichier non reconnu"
 
-#: bfd.c:462
+#: bfd.c:690
 msgid "file format is ambiguous"
 msgstr "format de fichier ambigu"
 
-#: bfd.c:463
+#: bfd.c:691
 msgid "section has no contents"
 msgstr "section sans contenu"
 
-#: bfd.c:464
+#: bfd.c:692
 msgid "nonrepresentable section on output"
 msgstr "section non-reprÃ©sentable sur la sortie"
 
-#: bfd.c:465
+#: bfd.c:693
 msgid "symbol needs debug section which does not exist"
 msgstr "symboles ont besoin de la section de dÃ©bug qui est inexistante"
 
-#: bfd.c:466
+#: bfd.c:694
 msgid "bad value"
 msgstr "mauvaise valeur"
 
-#: bfd.c:467
+#: bfd.c:695
 msgid "file truncated"
 msgstr "fichier tronquÃ©"
 
-#: bfd.c:468
+#: bfd.c:696
 msgid "file too big"
 msgstr "fichier trop gros"
 
-#: bfd.c:469
+#: bfd.c:697
+msgid "sorry, cannot handle this file"
+msgstr "dÃ©solÃ©, ce fichier ne peut Ãªtre traitÃ©"
+
+#: bfd.c:698
 #, c-format
 msgid "error reading %s: %s"
 msgstr "erreur lors de la lecture de %s: %s"
 
-#: bfd.c:470
+#: bfd.c:699
 msgid "#<invalid error code>"
 msgstr "#<code d'erreur invalide>"
 
-#: bfd.c:1429
+#: bfd.c:1658
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "BFD assertion %s a Ã©chouÃ© %s:%d"
 
-#: bfd.c:1442
+#: bfd.c:1671
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d in %s\n"
 msgstr "BFD erreur interne %s, abandon Ã  %s:%d dans %s\n"
 
-#: bfd.c:1447
+#: bfd.c:1676
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d\n"
 msgstr "BFD erreur interne %s, abandon Ã  %s:%d\n"
 
-#: bfd.c:1449
+#: bfd.c:1678
 msgid "Please report this bug.\n"
 msgstr "Merci de rapporter cette anomalie.\n"
 
-#: bfdwin.c:206
+#: bfdwin.c:207
 #, c-format
 msgid "not mapping: data=%lx mapped=%d\n"
 msgstr "pas de table de projection: donnÃ©es=%lx adresse de la table=%d\n"
 
-#: bfdwin.c:209
+#: bfdwin.c:210
 #, c-format
 msgid "not mapping: env var not set\n"
 msgstr "pas de table de projection: variable d'environnement pas initialisÃ©e\n"
@@ -253,118 +266,113 @@ msgstr "rÃ©ouverture de %pB: %s\n"
 msgid "%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries"
 msgstr "%pB: les binaires compressÃ©s pour Alpha ne sont pas supportÃ©s; utilisez les options du compilateur ou objZ pour produire des binaires non compressÃ©s"
 
-#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1957 coff-mips.c:950
+#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1954 coff-mips.c:953
 msgid "GP relative relocation used when GP not defined"
 msgstr "RÃ©adressage relatif GP utilisÃ© alors que GP n'est pas dÃ©fini"
 
-#: coff-alpha.c:1443
+#: coff-alpha.c:1441
 msgid "using multiple gp values"
 msgstr "utilisation de valeurs gp multiples"
 
-#: coff-alpha.c:1501 coff-alpha.c:1507 elf.c:9100 elf32-mcore.c:100
-#: elf32-mcore.c:455 elf32-ppc.c:7697 elf32-ppc.c:8829 elf64-ppc.c:14411
+#: coff-alpha.c:1499 coff-alpha.c:1505 elf.c:9431 elf32-mcore.c:100
+#: elf32-mcore.c:455 elf32-ppc.c:7596 elf32-ppc.c:8747 elf64-ppc.c:15962
 #, c-format
 msgid "%pB: %s unsupported"
 msgstr "%pB: %s pas supportÃ©"
 
-#: coff-mips.c:640 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
+#: coff-go32.c:156 coffswap.h:785
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: attention: %s: dÃ©bordement du compteur de numÃ©ro de ligne: 0x%lx > 0xffff"
+
+#: coff-mips.c:643 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
 #: elf64-mips.c:3451 elfn32-mips.c:3276
 msgid "GP relative relocation when _gp not defined"
 msgstr "rÃ©adressage relatif GP sans que _gp ne soit dÃ©fini"
 
-#: coff-rs6000.c:2858
+#: coff-rs6000.c:2844
 #, c-format
 msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
 msgstr "%pB: la table des matiÃ¨res des rÃ©adressages Ã  %#<PRIx64> pour le symbole Â«Â %sÂ Â» sans aucune entrÃ©e"
 
-#: coff-rs6000.c:3620 coff64-rs6000.c:2145
+#: coff-rs6000.c:3607 coff64-rs6000.c:2153
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized smclas %d"
 msgstr "%pB: symbole Â«Â %sÂ Â» a une classe smclas %d non reconnue"
 
-#: coff-sh.c:780 elf32-sh.c:521
+#: coff-sh.c:778 elf32-sh.c:521
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
 msgstr "%pB: %#<PRIx64>: attention: mauvais dÃ©calage pour R_SH_USES"
 
-#: coff-sh.c:791
+#: coff-sh.c:789
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
 msgstr "%pB: %#<PRIx64>: attention: R_SH_USES pointe vers l'insn inconnu %#x"
 
-#: coff-sh.c:809 elf32-sh.c:552
+#: coff-sh.c:807 elf32-sh.c:552
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
 msgstr "%pB: %#<PRIx64>: attention: mauvais dÃ©calage de chargement R_SH_USES"
 
-#: coff-sh.c:834 elf32-sh.c:568
+#: coff-sh.c:832 elf32-sh.c:568
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
 msgstr "%pB: %#<PRIx64>: attention: ne peut repÃ©rer le rÃ©adressage attendu"
 
-#: coff-sh.c:851 elf32-sh.c:597
+#: coff-sh.c:849 elf32-sh.c:597
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
 msgstr "%pB: %#<PRIx64>: attention: symbole dans une section inattendue"
 
-#: coff-sh.c:977 elf32-sh.c:727
+#: coff-sh.c:975 elf32-sh.c:727
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
 msgstr "%pB: %#<PRIx64>: attention: ne peut repÃ©rer le compteur de rÃ©adressages attendu"
 
-#: coff-sh.c:987 elf32-sh.c:738
+#: coff-sh.c:985 elf32-sh.c:738
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad count"
 msgstr "%pB: %#<PRIx64>: attention: mauvais dÃ©compte"
 
-#: coff-sh.c:1359 coff-sh.c:2647 elf32-sh.c:1142 elf32-sh.c:1512
+#: coff-sh.c:1356 coff-sh.c:2644 elf32-sh.c:1138 elf32-sh.c:1505
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
 msgstr "%pB: %#<PRIx64>: erreur fatale: dÃ©bordement de rÃ©adressage lors des relÃ¢ches"
 
-#: coff-sh.c:1454
+#: coff-sh.c:1451
 #, c-format
 msgid "%pB: fatal: generic symbols retrieved before relaxing"
 msgstr "%pB: fatal: symboles gÃ©nÃ©riques rÃ©cupÃ©rÃ©s avant la relÃ¢che"
 
-#: coff-sh.c:2785 cofflink.c:2965
+#: coff-sh.c:2781 cofflink.c:2948
 #, c-format
 msgid "%pB: illegal symbol index %ld in relocs"
 msgstr "%pB: symbole index %ld illÃ©gal dans les rÃ©adressages"
 
-#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5010
+#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5085
 #, c-format
 msgid "%pB: warning: illegal symbol index %ld in relocs"
 msgstr "%pB: attention: symbole index illÃ©gal %ld dans les rÃ©adressages"
 
-#: coff-tic80.c:441
-#, c-format
-msgid "unsupported relocation type %#x"
-msgstr "type de rÃ©adressage %#x non supportÃ©"
-
-#: coff-tic80.c:672 cofflink.c:3127
-#, c-format
-msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
-msgstr "%pB: mauvaise adresse de rÃ©adressage %#<PRIx64> dans la section Â«Â %pAÂ Â»"
-
-#: coffcode.h:954
+#: coffcode.h:961
 #, c-format
 msgid "%pB: unable to load COMDAT section name"
 msgstr "%pB: impossible de charger le nom de section COMDAT"
 
 #. Malformed input files can trigger this test.
 #. cf PR 21781.
-#: coffcode.h:989
+#: coffcode.h:996
 #, c-format
 msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
 msgstr "%pB: erreur: symbole Â«Â %sÂ Â» inattendu dans la section COMDAT"
 
-#: coffcode.h:1001
+#: coffcode.h:1008
 #, c-format
 msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
 msgstr "%pB: attention: symbole COMDAT Â«Â %sÂ Â» ne concorde par avec le nom de section Â«Â %sÂ Â»"
 
-#: coffcode.h:1011
+#: coffcode.h:1018
 #, c-format
 msgid "%pB: warning: no symbol for section '%s' found"
 msgstr "%pB: attention: pas de symbole trouvÃ© pour la section Â«Â %sÂ Â»"
@@ -372,311 +380,315 @@ msgstr "%pB: attention: pas de symbole t
 #. Generate a warning message rather using the 'unhandled'
 #. variable as this will allow some .sys files generate by
 #. other toolchains to be processed.  See bugzilla issue 196.
-#: coffcode.h:1237
+#: coffcode.h:1249
 #, c-format
 msgid "%pB: warning: ignoring section flag %s in section %s"
 msgstr "%pB: attention: ignore le fanion de section %s dans la section %s"
 
-#: coffcode.h:1306
+#: coffcode.h:1318
 #, c-format
 msgid "%pB (%s): section flag %s (%#lx) ignored"
 msgstr "%pB (%s): fanion de section %s (%#lx) ignorÃ©"
 
-#: coffcode.h:1917
+#: coffcode.h:1934 coffcode.h:1999
 #, c-format
 msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
 msgstr "%pB: attention: prÃ©tend avoir 0xffff rÃ©adressages, sans dÃ©bordement"
 
-#: coffcode.h:2315
+#: coffcode.h:2365
 #, c-format
 msgid "unrecognized TI COFF target id '0x%x'"
 msgstr "identificateur de cible TI COFF non reconnu Â«Â 0x%xÂ Â»"
 
-#: coffcode.h:2599
+#: coffcode.h:2643
 #, c-format
 msgid "%pB: reloc against a non-existent symbol index: %ld"
 msgstr "%pB: rÃ©adressage par rapport Ã  un index de symbole inexistant: %ld"
 
-#: coffcode.h:2910
+#: coffcode.h:2951
 #, c-format
 msgid "%pB: page size is too large (0x%x)"
 msgstr "%pB: la taille de page est trop grande (0x%x)"
 
-#: coffcode.h:3070
+#: coffcode.h:3111
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr "%pB: trop de sections (%d)"
 
-#: coffcode.h:3489
+#: coffcode.h:3530
 #, c-format
 msgid "%pB: section %pA: string table overflow at offset %ld"
 msgstr "%pB: section %pA: dÃ©bordement de la table de chaÃ®nes Ã  l'offset %ld"
 
-#: coffcode.h:3589
+#: coffcode.h:3630
 #, c-format
 msgid "%pB:%s section %s: alignment 2**%u not representable"
 msgstr "%pB:%s section %s: l'alignement 2**%u n'est pas reprÃ©sentable"
 
-#: coffcode.h:4276
+#: coffcode.h:4329
 #, c-format
 msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
 msgstr "%pB: attention: le dÃ©compte du nombre de lignes (%#lx) dÃ©passe la taille de la section (%#lx)"
 
-#: coffcode.h:4291
+#: coffcode.h:4349
 #, c-format
 msgid "%pB: warning: line number table read failed"
 msgstr "%pB: attention: erreur lors de la lecture de la table des numÃ©ros de ligne"
 
-#: coffcode.h:4325 coffcode.h:4339
+#: coffcode.h:4383 coffcode.h:4397
 #, c-format
 msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
 msgstr "%pB: attention: symbole d'index 0x%lx illÃ©gal dans l'entrÃ©e %d des numÃ©ros de lignes"
 
-#: coffcode.h:4353
+#: coffcode.h:4411
 #, c-format
 msgid "%pB: warning: illegal symbol in line number entry %d"
 msgstr "%pB: attention: symbole illÃ©gal dans l'entrÃ©e %d des numÃ©ros de lignes"
 
-#: coffcode.h:4366
+#: coffcode.h:4424
 #, c-format
 msgid "%pB: warning: duplicate line number information for `%s'"
 msgstr "%pB: attention: information de numÃ©ro de ligne dÃ©doublÃ©e pour Â«Â %sÂ Â»"
 
-#: coffcode.h:4774
+#: coffcode.h:4845
 #, c-format
 msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
 msgstr "%pB: classe de stockage %d non reconnue pour %s symbole Â«Â %sÂ Â»"
 
-#: coffcode.h:4904
+#: coffcode.h:4975
 #, c-format
 msgid "warning: %pB: local symbol `%s' has no section"
 msgstr "attention: %pB: symbole local Â«Â %sÂ Â» n'a pas de section"
 
-#: coffcode.h:5050
+#: coffcode.h:5125
 #, c-format
 msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
 msgstr "%pB: type de rÃ©adressage %d illÃ©gal Ã  l'adresse %#<PRIx64>"
 
-#: coffgen.c:178 elf.c:1216
+#: coffgen.c:179 elf.c:1236
 #, c-format
 msgid "%pB: unable to initialize compress status for section %s"
 msgstr "%pB: impossible d'initialiser le statut de compression de la section %s"
 
-#: coffgen.c:202 elf.c:1227
+#: coffgen.c:203 elf.c:1247
 #, c-format
 msgid "%pB: unable to initialize decompress status for section %s"
 msgstr "%pB: impossible d'initialiser le statut de dÃ©compression de la section %s"
 
-#: coffgen.c:1657
-#, c-format
-msgid "%pB: corrupt symbol count: %#<PRIx64>"
-msgstr "%pB: dÃ©compte de symbole corrompu: %#<PRIx64>"
-
-#. PR 21013: Provide an error message when the alloc fails.
-#: coffgen.c:1666
-#, c-format
-msgid "%pB: not enough memory to allocate space for %#<PRIx64> symbols of size %#<PRIx64>"
-msgstr "%pB: Pas assez de mÃ©moire pour allouer l'espace pour %#<PRIx64> symboles de taille %#<PRIx64>"
-
-#: coffgen.c:1735
+#: coffgen.c:1704
 #, c-format
 msgid "%pB: bad string table size %<PRIu64>"
 msgstr "%pB: mauvaise taille de la table des chaÃ®nes %<PRIu64>"
 
-#: coffgen.c:1912 coffgen.c:1972 coffgen.c:1990 cofflink.c:2045 elf.c:1882
-#: xcofflink.c:4505
+#: coffgen.c:1876 coffgen.c:1936 coffgen.c:1954 cofflink.c:2024 elf.c:1921
+#: xcofflink.c:4500
 msgid "<corrupt>"
 msgstr "<corrompu>"
 
-#: coffgen.c:2114
+#: coffgen.c:2085
 #, c-format
 msgid "<corrupt info> %s"
 msgstr "<info corrompue> %s"
 
-#: coffgen.c:2693 elflink.c:14322 linker.c:2959
+#: coffgen.c:2675 elflink.c:14624 linker.c:2956
 msgid "%F%P: already_linked_table: %E\n"
 msgstr "%F%P: already_linked_table: %E\n"
 
-#: coffgen.c:3034 elflink.c:13324
+#: coffgen.c:3016 elflink.c:13617
 #, c-format
 msgid "removing unused section '%pA' in file '%pB'"
 msgstr "suppression de la section inutilisÃ©e Â«Â %pAÂ Â» dans le fichier Â«Â %pBÂ Â»"
 
-#: coffgen.c:3111 elflink.c:13542
+#: coffgen.c:3093 elflink.c:13835
 msgid "warning: gc-sections option ignored"
 msgstr "attention: l'option des sections gc est ignorÃ©e"
 
-#: cofflink.c:352
+#: cofflink.c:366
 #, c-format
 msgid "warning: symbol `%s' is both section and non-section"
 msgstr "attention: le symbole Â«Â %sÂ Â» est Ã  la fois une section et une non-section"
 
-#: cofflink.c:454 elf64-ia64-vms.c:5203 elflink.c:4953
+#: cofflink.c:471 elf64-ia64-vms.c:5200 elflink.c:5131
 #, c-format
 msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
 msgstr "attention: le type du symbole Â«Â %sÂ Â» a changÃ© de %d Ã  %d dans %pB"
 
-#: cofflink.c:2373
+#: cofflink.c:2352
 #, c-format
 msgid "%pB: relocs in section `%pA', but it has no contents"
 msgstr "%pB: rÃ©adressages dans la section Â«Â %pAÂ Â» qui est vide"
 
-#: cofflink.c:2436 elflink.c:10810
+#: cofflink.c:2415 elflink.c:11082
 #, c-format
 msgid "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB\n"
 msgstr "%XÂ«Â %sÂ Â» rÃ©fÃ©rencÃ© dans la section Â«Â %pAÂ Â» de %pB: dÃ©fini dans la section abandonnÃ©e Â«Â %pAÂ Â» de %pB\n"
 
-#: cofflink.c:2734
+#: cofflink.c:2717
 #, c-format
 msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
 msgstr "%pB: %pA: dÃ©bordement de rÃ©adressage: %#x > 0xffff"
 
-#: cofflink.c:2742
+#: cofflink.c:2725
 #, c-format
 msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
 msgstr "%pB: attention: %pA: dÃ©bordement du compteur de numÃ©ro de ligne: %#x > 0xffff"
 
-#: coffswap.h:789
+#: cofflink.c:3110
 #, c-format
-msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
-msgstr "%pB: attention: %s: dÃ©bordement du compteur de numÃ©ro de ligne: 0x%lx > 0xffff"
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgstr "%pB: mauvaise adresse de rÃ©adressage %#<PRIx64> dans la section Â«Â %pAÂ Â»"
 
-#: coffswap.h:803
+#: coffswap.h:799
 #, c-format
 msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr "%pB: %s: dÃ©bordement de rÃ©adressage: 0x%lx > 0xffff"
 
-#: compress.c:260
+#: compress.c:271
+#, c-format
+msgid "error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size (%#<PRIx64> bytes)"
+msgstr "erreur: %pB(%pA) la taille de la section (%#<PRIx64> octets) est plus grande que la taille du fichier (%#<PRIx64> octets)"
+
+#: compress.c:282
 #, c-format
 msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
 msgstr "erreur: %pB(%pA) est trop grand (%#<PRIx64> octets)"
 
-#: cpu-arm.c:298 cpu-arm.c:310
+#: cpu-arm.c:303 cpu-arm.c:315
 #, c-format
 msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
 msgstr "erreur: %pB compilÃ© pour EP9312 alors que %pB a Ã©tÃ© compilÃ© pour XScale"
 
-#: cpu-arm.c:446
+#: cpu-arm.c:451
 #, c-format
 msgid "warning: unable to update contents of %s section in %pB"
 msgstr "attention: incapable de mettre Ã  jour le contenu de la section %s dans %pB"
 
-#: dwarf2.c:544
+#: dwarf2.c:543
 #, c-format
 msgid "DWARF error: can't find %s section."
 msgstr "Erreur DWARF: ne peut repÃ©rer la section %s."
 
-#: dwarf2.c:579
+#: dwarf2.c:578
 #, c-format
 msgid "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
 msgstr "Erreur DWARF: dÃ©calage (%<PRIu64>) plus grand ou Ã©gal Ã  la taille de %s (%<PRIu64>)"
 
-#: dwarf2.c:1107
+#: dwarf2.c:1165
 msgid "DWARF error: info pointer extends beyond end of attributes"
 msgstr "Erreur DWARF: le pointeur d'info va au delÃ  de la fin des attributs"
 
-#: dwarf2.c:1275
+#: dwarf2.c:1333
 #, c-format
 msgid "DWARF error: invalid or unhandled FORM value: %#x"
 msgstr "Erreur DWARF: valeur de FORM invalide ou non supportÃ©e: %#x"
 
-#: dwarf2.c:1581
+#: dwarf2.c:1646
 msgid "DWARF error: mangled line number section (bad file number)"
 msgstr "Erreur DWARF: numÃ©ro de ligne de section mutilÃ© (mauvais no. de fichier)"
 
-#: dwarf2.c:1926
+#: dwarf2.c:1994
 msgid "DWARF error: zero format count"
 msgstr "Erreur DWARF: dÃ©compte de format nul"
 
-#: dwarf2.c:1936
+#: dwarf2.c:2004
 #, c-format
 msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
 msgstr "Erreur DWARF: dÃ©compte de donnÃ©es (%<PRIx64>) plus grand que la taille du tampon"
 
-#: dwarf2.c:1977
+#: dwarf2.c:2045
 #, c-format
 msgid "DWARF error: unknown format content type %<PRIu64>"
 msgstr "Erreur DWARF: type de contenu de format %<PRIu64> inconnu"
 
-#: dwarf2.c:2057
+#: dwarf2.c:2112
 #, c-format
 msgid "DWARF error: line info section is too small (%<PRId64>)"
 msgstr "Erreur DWARF: la section des informations de lignes est trop petite (%<PRId64>)"
 
-#: dwarf2.c:2087
+#: dwarf2.c:2142
 #, c-format
 msgid "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining in the section (%#lx)"
 msgstr "Erreur DWARF: les donnÃ©es des informations de lignes sont plus grandes (%#<PRIx64>) que l'espace restant dans la section (%#lx)"
 
-#: dwarf2.c:2100
+#: dwarf2.c:2155
 #, c-format
 msgid "DWARF error: unhandled .debug_line version %d"
 msgstr "Erreur DWARF: version .debug_line %d non prise en charge"
 
-#: dwarf2.c:2110
+#: dwarf2.c:2165
 msgid "DWARF error: ran out of room reading prologue"
 msgstr "Erreur DWARF: on est tombÃ© Ã  cours de place lors de la lecture du prologue"
 
-#: dwarf2.c:2128
+#: dwarf2.c:2183
 #, c-format
 msgid "DWARF error: line info unsupported segment selector size %u"
 msgstr "Erreur DWARF: taille de sÃ©lecteur de segment %u non supportÃ©e pour les informations de lignes"
 
-#: dwarf2.c:2155
+#: dwarf2.c:2210
 msgid "DWARF error: invalid maximum operations per instruction"
 msgstr "Erreur DWARF: opÃ©rations maximum par instruction invalide"
 
-#: dwarf2.c:2174
+#: dwarf2.c:2229
 msgid "DWARF error: ran out of room reading opcodes"
 msgstr "Erreur DWARF: on est tombÃ© Ã  cours de place en lisant les opcodes"
 
-#: dwarf2.c:2347
+#: dwarf2.c:2420
 msgid "DWARF error: mangled line number section"
 msgstr "Erreur DWARF: numÃ©ro de ligne de section mutilÃ©"
 
-#: dwarf2.c:2852 dwarf2.c:2913
+#: dwarf2.c:2905
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "Erreur DWARF: rÃ©cursion d'une instance abstraite dÃ©tectÃ©e"
+
+#: dwarf2.c:2939 dwarf2.c:3033
 msgid "DWARF error: invalid abstract instance DIE ref"
 msgstr "Erreur DWARF: rÃ©f DIE d'instance abstraite invalide"
 
-#: dwarf2.c:2889
+#: dwarf2.c:2955
 #, c-format
 msgid "DWARF error: unable to read alt ref %<PRIu64>"
 msgstr "Erreur DWARF: impossible de lire la ref alt %<PRIu64>"
 
-#: dwarf2.c:2930 dwarf2.c:3103 dwarf2.c:3457
+#: dwarf2.c:3011
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr "Erreur DWARF: impossible de localiser l'instance abstraite de la rÃ©f DIE %<PRIu64>"
+
+#: dwarf2.c:3050 dwarf2.c:3232 dwarf2.c:3618
 #, c-format
 msgid "DWARF error: could not find abbrev number %u"
 msgstr "Erreur DWARF: ne peut repÃ©rer le numÃ©ro abrÃ©gÃ© %u"
 
-#: dwarf2.c:2947
-msgid "DWARF error: abstract instance recursion detected"
-msgstr "Erreur DWARF: rÃ©cursion d'une instance abstraite dÃ©tectÃ©e"
+#: dwarf2.c:3381
+#, c-format
+msgid "DWARF error: could not find variable specification at offset %lx"
+msgstr "Erreur DWARF: ne peut repÃ©rer la spÃ©cification de variable au dÃ©calage %lx"
 
-#: dwarf2.c:3376
+#: dwarf2.c:3537
 #, c-format
 msgid "DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 information"
 msgstr "Erreur DWARF: version DWARF trouvÃ©e Â«Â %uÂ Â», ce lecteur ne supporte que les informations des versions 2, 3, 4 et 5"
 
-#: dwarf2.c:3420
+#: dwarf2.c:3581
 #, c-format
 msgid "DWARF error: found address size '%u', this reader can not handle sizes greater than '%u'"
 msgstr "Erreur DWARF: taille d'adresse obtenue Â«Â %uÂ Â», ce lecteur ne peut traiter des tailles plus grandes que Â«Â %uÂ Â»"
 
-#: dwarf2.c:3523
+#: dwarf2.c:3685
 msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
 msgstr "Erreur DWARF: attribut DW_AT_comp_dir rencontrÃ© sous une forme non-chaÃ®ne"
 
-#: ecoff.c:971
+#: ecoff.c:982
 #, c-format
 msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
 msgstr "%pB: attention: isymMax (%ld) est plus grand que ifdMax (%ld)"
 
-#: ecoff.c:1268
+#: ecoff.c:1279
 #, c-format
 msgid "unknown basic type %d"
 msgstr "type de base %d inconnu"
 
-#: ecoff.c:1525
+#: ecoff.c:1536
 #, c-format
 msgid ""
 "\n"
@@ -685,7 +697,7 @@ msgstr ""
 "\n"
 "      Dernier+1 symbole: %ld"
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1543 ecoff.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -694,7 +706,7 @@ msgstr ""
 "\n"
 "      Premier symbole: %ld"
 
-#: ecoff.c:1548
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
@@ -703,7 +715,7 @@ msgstr ""
 "\n"
 "      Dernier+1 symbole: %-7ld   Type:  %s"
 
-#: ecoff.c:1555
+#: ecoff.c:1566
 #, c-format
 msgid ""
 "\n"
@@ -712,7 +724,7 @@ msgstr ""
 "\n"
 "      Symbole local: %ld"
 
-#: ecoff.c:1563
+#: ecoff.c:1574
 #, c-format
 msgid ""
 "\n"
@@ -721,7 +733,7 @@ msgstr ""
 "\n"
 "      struct; Symbole Fin+1: %ld"
 
-#: ecoff.c:1568
+#: ecoff.c:1579
 #, c-format
 msgid ""
 "\n"
@@ -730,7 +742,7 @@ msgstr ""
 "\n"
 "      union; Dernier+1 symbole: %ld"
 
-#: ecoff.c:1573
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
@@ -739,7 +751,7 @@ msgstr ""
 "\n"
 "      enum; Dernier+1 symbol: %ld"
 
-#: ecoff.c:1579
+#: ecoff.c:1590
 #, c-format
 msgid ""
 "\n"
@@ -748,22 +760,22 @@ msgstr ""
 "\n"
 "      Type: %s"
 
-#: elf-attrs.c:446
+#: elf-attrs.c:449
 #, c-format
 msgid "%pB: error: attribute section '%pA' too big: %#llx"
 msgstr "%pB: erreur: section d'attributs Â«Â %pAÂ Â» trop grande: %llx"
 
-#: elf-attrs.c:487
+#: elf-attrs.c:490
 #, c-format
 msgid "%pB: error: attribute section length too small: %<PRId64>"
 msgstr "%pB: erreur: longueur de section d'attributs trop petite: %<PRId64>"
 
-#: elf-attrs.c:615
+#: elf-attrs.c:618
 #, c-format
 msgid "error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchain"
 msgstr "erreur: %pB: l'objet a un contenu spÃ©cifique Ã  un vendeur qui doit Ãªtre traitÃ© par la chaÃ®ne d'outils Â«Â %sÂ Â»"
 
-#: elf-attrs.c:625
+#: elf-attrs.c:628
 #, c-format
 msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
 msgstr "erreur: %pB: Ã©tiquette d'objet Â«Â %d, %sÂ Â» incompatible avec l'Ã©tiquette Â«Â %d, %sÂ Â»"
@@ -787,91 +799,90 @@ msgstr "encodage FDE dans %pB(%pA) empÃª
 msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"
 msgstr "les avertissements suivants Ã  propos de l'encodage FDE empÃªchant la gÃ©nÃ©ration de .eh_frame_hdr sont abandonnÃ©s"
 
-#: elf-eh-frame.c:1868
+#: elf-eh-frame.c:1866
 #, c-format
 msgid "%pB: %pA not in order"
 msgstr "%pB: %pA pas dans l'ordre"
 
-#: elf-eh-frame.c:1882
+#: elf-eh-frame.c:1880
 #, c-format
 msgid "%pB: %pA invalid input section size"
 msgstr "%pB: %pA taille de section d'entrÃ©e invalide"
 
-#: elf-eh-frame.c:1890
+#: elf-eh-frame.c:1888
 #, c-format
 msgid "%pB: %pA points past end of text section"
 msgstr "%pB: %pA pointe au delÃ  de la fin de la section texte"
 
-#: elf-eh-frame.c:2139
+#: elf-eh-frame.c:2141
 msgid "DW_EH_PE_datarel unspecified for this architecture"
 msgstr "DW_EH_PE_datarel non spÃ©cifiÃ© pour cette architecture"
 
-#: elf-eh-frame.c:2309
+#: elf-eh-frame.c:2312
 #, c-format
 msgid "invalid output section for .eh_frame_entry: %pA"
 msgstr "section de sortie invalide pour .eh_frame_entry: %pA"
 
-#: elf-eh-frame.c:2332
+#: elf-eh-frame.c:2335
 #, c-format
 msgid "invalid contents in %pA section"
 msgstr "contenu invalide dans la section %pA"
 
-#: elf-eh-frame.c:2488
+#: elf-eh-frame.c:2491
 msgid ".eh_frame_hdr entry overflow"
 msgstr "dÃ©bordement de l'entrÃ©e .eh_frame_hdr"
 
-#: elf-eh-frame.c:2490
+#: elf-eh-frame.c:2493
 msgid ".eh_frame_hdr refers to overlapping FDEs"
 msgstr ".eh_frame_hdr fait rÃ©fÃ©rence Ã  des FDE qui se chevauchent"
 
-#: elf-ifunc.c:149
+#: elf-ifunc.c:144
 #, c-format
 msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%pB' can not be used when making an executable; recompile with -fPIE and relink with -pie\n"
 msgstr "%P%P: le symbole dynamique STT_GNU_IFUNC Â«Â %sÂ Â» avec une Ã©galitÃ© de pointeur dans Â«Â %pBÂ Â» ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un exÃ©cutable. Recompilez avec -fPIE et reliez avec -pie\n"
 
-#: elf-m10200.c:434 elf-m10300.c:2147 elf32-avr.c:1510 elf32-bfin.c:3127
-#: elf32-cr16.c:1464 elf32-cr16c.c:783 elf32-cris.c:2033 elf32-crx.c:925
-#: elf32-d10v.c:512 elf32-epiphany.c:566 elf32-fr30.c:594 elf32-frv.c:4049
-#: elf32-ft32.c:494 elf32-h8300.c:523 elf32-ip2k.c:1482 elf32-iq2000.c:693
-#: elf32-lm32.c:1112 elf32-m32c.c:624 elf32-m32r.c:3045 elf32-m68hc1x.c:1266
-#: elf32-mep.c:526 elf32-metag.c:1990 elf32-microblaze.c:1631
-#: elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6189 elf32-or1k.c:1759
-#: elf32-score.c:2733 elf32-score7.c:2542 elf32-spu.c:5083
-#: elf32-tilepro.c:3506 elf32-v850.c:2291 elf32-visium.c:681
-#: elf32-xstormy16.c:931 elf64-mmix.c:1541 elfxx-tilegx.c:3870
+#: elf-m10200.c:434 elf-m10300.c:2145 elf32-avr.c:1508 elf32-bfin.c:3126
+#: elf32-cr16.c:1464 elf32-cris.c:2033 elf32-crx.c:920 elf32-d10v.c:510
+#: elf32-epiphany.c:562 elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:494
+#: elf32-h8300.c:523 elf32-ip2k.c:1477 elf32-iq2000.c:691 elf32-lm32.c:1069
+#: elf32-m32c.c:624 elf32-m32r.c:2860 elf32-m68hc1x.c:1272 elf32-mep.c:526
+#: elf32-metag.c:1986 elf32-microblaze.c:1627 elf32-moxie.c:288 elf32-mt.c:402
+#: elf32-nds32.c:6048 elf32-or1k.c:1817 elf32-score.c:2734 elf32-score7.c:2543
+#: elf32-spu.c:5083 elf32-tilepro.c:3380 elf32-v850.c:2290 elf32-visium.c:680
+#: elf32-xstormy16.c:929 elf64-bpf.c:512 elf64-mmix.c:1541 elfxx-tilegx.c:3744
 msgid "internal error: out of range error"
 msgstr "erreur interne: hors limite"
 
-#: elf-m10200.c:438 elf-m10300.c:2151 elf32-avr.c:1514 elf32-bfin.c:3131
-#: elf32-cr16.c:1468 elf32-cr16c.c:787 elf32-cris.c:2037 elf32-crx.c:929
-#: elf32-d10v.c:516 elf32-fr30.c:598 elf32-frv.c:4053 elf32-ft32.c:498
-#: elf32-h8300.c:527 elf32-iq2000.c:697 elf32-lm32.c:1116 elf32-m32c.c:628
-#: elf32-m32r.c:3049 elf32-m68hc1x.c:1270 elf32-mep.c:530 elf32-metag.c:1994
-#: elf32-microblaze.c:1635 elf32-moxie.c:292 elf32-msp430.c:1362
-#: elf32-nds32.c:6193 elf32-or1k.c:1763 elf32-score.c:2737 elf32-score7.c:2546
-#: elf32-spu.c:5087 elf32-tilepro.c:3510 elf32-v850.c:2295 elf32-visium.c:685
-#: elf32-xstormy16.c:935 elf64-mmix.c:1545 elfxx-mips.c:10469
-#: elfxx-tilegx.c:3874
+#: elf-m10200.c:438 elf-m10300.c:2149 elf32-avr.c:1512 elf32-bfin.c:3130
+#: elf32-cr16.c:1468 elf32-cris.c:2037 elf32-crx.c:924 elf32-d10v.c:514
+#: elf32-fr30.c:598 elf32-frv.c:4052 elf32-ft32.c:498 elf32-h8300.c:527
+#: elf32-iq2000.c:695 elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2864
+#: elf32-m68hc1x.c:1276 elf32-mep.c:530 elf32-metag.c:1990
+#: elf32-microblaze.c:1631 elf32-moxie.c:292 elf32-msp430.c:1371
+#: elf32-nds32.c:6052 elf32-or1k.c:1821 elf32-score.c:2738 elf32-score7.c:2547
+#: elf32-spu.c:5087 elf32-tilepro.c:3384 elf32-v850.c:2294 elf32-visium.c:684
+#: elf32-xstormy16.c:933 elf64-mmix.c:1545 elfxx-mips.c:10576
+#: elfxx-tilegx.c:3748
 msgid "internal error: unsupported relocation error"
 msgstr "erreur interne: erreur de rÃ©adressage non supportÃ©e"
 
-#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-cr16c.c:791 elf32-crx.c:933
-#: elf32-d10v.c:520 elf32-h8300.c:531 elf32-lm32.c:1120 elf32-m32r.c:3053
-#: elf32-m68hc1x.c:1274 elf32-microblaze.c:1639 elf32-nds32.c:6197
-#: elf32-score.c:2741 elf32-score7.c:2550 elf32-spu.c:5091
+#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-crx.c:928 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2868 elf32-m68hc1x.c:1280
+#: elf32-microblaze.c:1635 elf32-nds32.c:6056 elf32-score.c:2742
+#: elf32-score7.c:2551 elf32-spu.c:5091
 msgid "internal error: dangerous error"
 msgstr "erreur interne: erreur dangereuse"
 
-#: elf-m10200.c:446 elf-m10300.c:2168 elf32-avr.c:1522 elf32-bfin.c:3139
-#: elf32-cr16.c:1476 elf32-cr16c.c:795 elf32-cris.c:2045 elf32-crx.c:937
-#: elf32-d10v.c:524 elf32-epiphany.c:581 elf32-fr30.c:606 elf32-frv.c:4061
-#: elf32-ft32.c:506 elf32-h8300.c:535 elf32-ip2k.c:1497 elf32-iq2000.c:705
-#: elf32-lm32.c:1124 elf32-m32c.c:636 elf32-m32r.c:3057 elf32-m68hc1x.c:1278
-#: elf32-mep.c:538 elf32-metag.c:2002 elf32-microblaze.c:1643
-#: elf32-moxie.c:300 elf32-msp430.c:1370 elf32-mt.c:410 elf32-nds32.c:6201
-#: elf32-or1k.c:1771 elf32-score.c:2750 elf32-score7.c:2554 elf32-spu.c:5095
-#: elf32-tilepro.c:3518 elf32-v850.c:2315 elf32-visium.c:693
-#: elf32-xstormy16.c:943 elf64-mmix.c:1553 elfxx-tilegx.c:3882
+#: elf-m10200.c:446 elf-m10300.c:2166 elf32-avr.c:1520 elf32-bfin.c:3138
+#: elf32-cr16.c:1476 elf32-cris.c:2045 elf32-crx.c:932 elf32-d10v.c:522
+#: elf32-epiphany.c:577 elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:506
+#: elf32-h8300.c:535 elf32-ip2k.c:1492 elf32-iq2000.c:703 elf32-lm32.c:1081
+#: elf32-m32c.c:636 elf32-m32r.c:2872 elf32-m68hc1x.c:1284 elf32-mep.c:538
+#: elf32-metag.c:1998 elf32-microblaze.c:1639 elf32-moxie.c:300
+#: elf32-msp430.c:1379 elf32-mt.c:410 elf32-nds32.c:6060 elf32-or1k.c:1829
+#: elf32-score.c:2751 elf32-score7.c:2555 elf32-spu.c:5095
+#: elf32-tilepro.c:3392 elf32-v850.c:2314 elf32-visium.c:692
+#: elf32-xstormy16.c:941 elf64-bpf.c:525 elf64-mmix.c:1553 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr "erreur interne: erreur inconnue"
 
@@ -880,38 +891,35 @@ msgstr "erreur interne: erreur inconnue"
 msgid "%pB: unsupported transition from %s to %s"
 msgstr "%pB: transition de %s Ã  %s non supportÃ©e"
 
-#: elf-m10300.c:1198
+#: elf-m10300.c:1196
 #, c-format
 msgid "%pB: %s' accessed both as normal and thread local symbol"
 msgstr "%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole normal et comme symbole locale au thread"
 
-#: elf-m10300.c:2094 elf32-arm.c:13246 elf32-i386.c:3409 elf32-m32r.c:2539
-#: elf32-m68k.c:3899 elf32-s390.c:3211 elf32-sh.c:3800 elf32-tilepro.c:3409
-#: elf32-xtensa.c:2965 elf64-s390.c:3161 elf64-x86-64.c:3846
-#: elfxx-sparc.c:3906 elfxx-tilegx.c:3793
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5261
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6807
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2279
+#: elf-m10300.c:2092 elf32-arm.c:13400 elf32-i386.c:3403 elf32-m32r.c:2354
+#: elf32-m68k.c:3931 elf32-s390.c:3082 elf32-sh.c:3677 elf32-tilepro.c:3283
+#: elf32-xtensa.c:3023 elf64-s390.c:3031 elf64-x86-64.c:4062
+#: elfxx-sparc.c:3795 elfxx-tilegx.c:3667 elfnn-aarch64.c:5505
+#: elfnn-aarch64.c:7102
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr "%pB(%pA+%#<PRIx64>): rÃ©adressage %s sans solution vers le symbole Â«Â %sÂ Â»"
 
-#: elf-m10300.c:2156
+#: elf-m10300.c:2154
 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
 msgstr "erreur: type de rÃ©adressage inappropriÃ© pour une librairie partagÃ©e (avez-vous oubliÃ© -fpic ?)"
 
-#: elf-m10300.c:2160
+#: elf-m10300.c:2158
 #, c-format
 msgid "%pB: taking the address of protected function '%s' cannot be done when making a shared library"
 msgstr "%pB: l'adresse de la fonction protÃ©gÃ©e Â«Â %sÂ Â» ne peut Ãªtre prise lors de la crÃ©ation d'une librairie partagÃ©e"
 
-#: elf-m10300.c:2163
+#: elf-m10300.c:2161
 msgid "internal error: suspicious relocation type used in shared library"
 msgstr "erreur interne: type de rÃ©adressage douteux utilisÃ© dans une librairie partagÃ©e"
 
-#: elf-m10300.c:2649 elf32-avr.c:2492 elf32-frv.c:5641 elf64-ia64-vms.c:364
-#: elfxx-sparc.c:2795 reloc.c:8185 reloc16.c:155 elf32-ia64.c:361
-#: elf64-ia64.c:361
+#: elf-m10300.c:2647 elf32-avr.c:2489 elf32-frv.c:5620 elf64-ia64-vms.c:364
+#: elfxx-sparc.c:2683 reloc.c:8244 reloc16.c:155 elfnn-ia64.c:364
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr "%P%F: --relax et -r ne peuvent pas Ãªtre utilisÃ©s en mÃªme temps\n"
 
@@ -953,7 +961,7 @@ msgstr "PropriÃ©tÃ© supprimÃ©e %W Ã  fus
 msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
 msgstr "PropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB (0x%v) et %pB (pas trouvÃ©e)\n"
 
-#: elf-properties.c:316 elf-properties.c:396
+#: elf-properties.c:316 elf-properties.c:394
 msgid "Removed property %W to merge %pB and %pB\n"
 msgstr "PropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB et %pB\n"
 
@@ -961,115 +969,110 @@ msgstr "PropriÃ©tÃ© supprimÃ©e %W Ã  fus
 msgid "Removed property %W to merge %pB and %pB (not found)\n"
 msgstr "PropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB et %pB (pas trouvÃ©e)\n"
 
-#: elf-properties.c:339
+#: elf-properties.c:337
 msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
 msgstr "PropriÃ©tÃ© mise Ã  jour %W (0x%v) Ã  fusionner %pB (0x%v) et %pB (0x%v)\n"
 
-#: elf-properties.c:348
+#: elf-properties.c:346
 msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
 msgstr "PropriÃ©tÃ© mise Ã  jour %W (%v) Ã  fusionner %pB (0x%v) et %pB (pas trouvÃ©e)\n"
 
-#: elf-properties.c:390
+#: elf-properties.c:388
 msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
 msgstr "PropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB (pas trouvÃ©e) et %pB (0x%v)\n"
 
 #. Merge .note.gnu.property sections.
-#: elf-properties.c:552 elf-properties.c:554
+#: elf-properties.c:550 elf-properties.c:552
 msgid "\n"
 msgstr "\n"
 
-#: elf-properties.c:553
+#: elf-properties.c:551
 msgid "Merging program properties\n"
 msgstr "Fusion des propriÃ©tÃ©s du programme\n"
 
 #. PR 17512: file: f057ec89.
-#: elf.c:345
+#: elf.c:336
 #, c-format
 msgid "%pB: attempt to load strings from a non-string section (number %d)"
 msgstr "%pB: tentative de charger des chaÃ®nes depuis une section non-chaÃ®nes (numÃ©ro %d)"
 
-#: elf.c:360
+#: elf.c:361
 #, c-format
 msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
 msgstr "%pB: chaÃ®ne de dÃ©calage invalide %u >= %<PRIu64> pour la section Â«Â %sÂ Â»"
 
-#: elf.c:499 /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7891
+#: elf.c:513 elfnn-aarch64.c:8096
 #, c-format
 msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
 msgstr "%pB le symbole numÃ©ro %lu fait rÃ©fÃ©rence Ã  une section SHT_SYMTAB_SHNDX inexistante"
 
-#: elf.c:664
-#, c-format
-msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
-msgstr "%pB: champ de taille corrompu dans l'en-tÃªte du groupe de section: %#<PRIx64>"
-
-#: elf.c:680
+#: elf.c:675
 #, c-format
 msgid "%pB: invalid size field in group section header: %#<PRIx64>"
 msgstr "%pB: champ de taille invalide dans l'en-tÃªte du groupe de section: %#<PRIx64>"
 
-#: elf.c:728
+#: elf.c:720
 #, c-format
 msgid "%pB: invalid entry in SHT_GROUP section [%u]"
 msgstr "%pB: entrÃ©e invalide dans la section SHT_GROUP [%u]"
 
-#: elf.c:747
+#: elf.c:739
 #, c-format
 msgid "%pB: no valid group sections found"
 msgstr "%pB: aucune section de groupe valable trouvÃ©e"
 
 #. See PR 21957 for a reproducer.
-#: elf.c:776
+#: elf.c:768
 #, c-format
 msgid "%pB: group section '%pA' has no contents"
 msgstr "%pB: la section de groupe Â«Â %pAÂ Â» n'a pas de contenu"
 
-#: elf.c:837
+#: elf.c:829
 #, c-format
 msgid "%pB: no group info for section '%pA'"
 msgstr "%pB: aucune info de groupe pour la section Â«Â %pAÂ Â»"
 
-#: elf.c:868 elf.c:3886 elflink.c:11403
+#: elf.c:859 elf.c:3955
 #, c-format
 msgid "%pB: warning: sh_link not set for section `%pA'"
 msgstr "%pB: attention: sh_link n'a pas de valeur pour la section Â«Â %pAÂ Â»"
 
-#: elf.c:888
+#: elf.c:879
 #, c-format
 msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
 msgstr "%pB: sh_link [%d] n'est pas correct dans la section Â«Â %pAÂ Â»"
 
-#: elf.c:901
+#: elf.c:892
 #, c-format
 msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
 msgstr "%pB: la section SHT_GROUP [index %d] n'a pas de section SHF_GROUP"
 
-#: elf.c:922
+#: elf.c:913
 #, c-format
 msgid "%pB: section group entry number %u is corrupt"
 msgstr "%pB: l'entrÃ©e de groupe de section %u est corrompue"
 
-#: elf.c:945
+#: elf.c:936
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
 msgstr "%pB: type [%#x] de section Â«Â %sÂ Â» inconnu dans le groupe [%pA]"
 
-#: elf.c:1408
+#: elf.c:1438
 #, c-format
 msgid "%pB: invalid sh_link field (%d) in section number %d"
 msgstr "%pB: champ sh_link (%d) invalide dans la section numÃ©ro %d"
 
-#: elf.c:1424
+#: elf.c:1454
 #, c-format
 msgid "%pB: failed to find link section for section %d"
 msgstr "%pB: impossible de trouver la section de liaison pour la section %d"
 
-#: elf.c:1451
+#: elf.c:1481
 #, c-format
 msgid "%pB: failed to find info section for section %d"
 msgstr "%pB: impossible de trouver la section d'information pour la section %d"
 
-#: elf.c:1623
+#: elf.c:1653
 #, c-format
 msgid ""
 "\n"
@@ -1078,7 +1081,7 @@ msgstr ""
 "\n"
 "En-tÃªte de programme:\n"
 
-#: elf.c:1665
+#: elf.c:1695
 #, c-format
 msgid ""
 "\n"
@@ -1087,7 +1090,7 @@ msgstr ""
 "\n"
 "Section dynamique:\n"
 
-#: elf.c:1806
+#: elf.c:1836
 #, c-format
 msgid ""
 "\n"
@@ -1096,7 +1099,7 @@ msgstr ""
 "\n"
 "DÃ©finitions des versions:\n"
 
-#: elf.c:1831
+#: elf.c:1861
 #, c-format
 msgid ""
 "\n"
@@ -1105,262 +1108,353 @@ msgstr ""
 "\n"
 "RÃ©fÃ©rences de version:\n"
 
-#: elf.c:1836
+#: elf.c:1866
 #, c-format
 msgid "  required from %s:\n"
 msgstr " requis par %s:\n"
 
-#: elf.c:2037
+#: elf.c:2082
 #, c-format
 msgid "%pB: warning: loop in section dependencies detected"
 msgstr "%pB: attention: boucle dÃ©tectÃ©e dans les dÃ©pendances de sections"
 
-#: elf.c:2145
+#: elf.c:2190
 #, c-format
 msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: attention: plusieurs tables de symboles dÃ©tectÃ©es â€” la table dans la section %u est ignorÃ©e"
 
-#: elf.c:2229
+#: elf.c:2274
 #, c-format
 msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: attention: plusieurs tables de symboles dynamiques ont Ã©tÃ© dÃ©tectÃ©es â€” la table dans la section %u est ignorÃ©e"
 
-#: elf.c:2342
+#: elf.c:2387
 #, c-format
 msgid "%pB: invalid link %u for reloc section %s (index %u)"
 msgstr "%pB: lien %u invalide pour la section de rÃ©adressages %s (index %u)"
 
-#: elf.c:2504 elf.c:2519 elf.c:2530 elf.c:2543
+#: elf.c:2478
+#, c-format
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr "%pB: attention: la section de rÃ©adressage secondaire Â«Â %sÂ Â» pour la section %pA a Ã©tÃ© trouvÃ©e â€” elle est ignorÃ©e"
+
+#: elf.c:2562 elf.c:2577 elf.c:2588 elf.c:2601
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr "%pB: type [%#x] inconnu dans la section Â«Â %sÂ Â»"
 
-#: elf.c:3248
+#: elf.c:3308
 #, c-format
 msgid "%pB: error: alignment power %d of section `%pA' is too big"
 msgstr "%pB: erreur: l'alignement Ã  la puissance %d de la section Â«Â %pAÂ Â» est trop grand"
 
-#: elf.c:3278
+#: elf.c:3341
 #, c-format
 msgid "warning: section `%pA' type changed to PROGBITS"
 msgstr "attention: type de la section Â«Â %pAÂ Â» changÃ© en PROGBITS"
 
-#: elf.c:3754
+#: elf.c:3824
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr "%pB: trop de sections: %u"
 
-#: elf.c:3839
+#: elf.c:3909
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
 msgstr "%pB: le sh_link de la section Â«Â %pAÂ Â» pointe vers la section abandonnÃ©e Â«Â %pAÂ Â» de Â«Â %pBÂ Â»"
 
-#: elf.c:3864
+#: elf.c:3934
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
 msgstr "%pB: le sh_link de la section Â«Â %pAÂ Â» pointe vers la section supprimÃ©e Â«Â %pAÂ Â» de Â«Â %pBÂ Â»"
 
-#: elf.c:4430
+#: elf.c:4495
 #, c-format
-msgid "%pB: GNU_MBIN section `%pA' has invalid sh_info field: %d"
-msgstr "%pB: la section GNU_MBIN Â«Â %pAÂ Â» a un champ sh_info invalide: %d"
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
+msgstr "%pB: la section GNU_MBIND Â«Â %pAÂ Â» a un champ sh_info invalide: %d"
 
-#: elf.c:5013
+#: elf.c:5086
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr "%pB: Les sections TLS ne sont pas adjacentes:"
 
-#: elf.c:5020
+#: elf.c:5093
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr "\t    TLS: %pA"
 
-#: elf.c:5024
+#: elf.c:5097
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr "\tnon-TLS: %pA"
 
-#: elf.c:5538
+#: elf.c:5687
 #, c-format
 msgid "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
 msgstr "%pB: La premiÃ¨re section dans le segment PT_DYNAMIC n'est pas la section .dynamic"
 
-#: elf.c:5566
+#: elf.c:5713
 #, c-format
 msgid "%pB: not enough room for program headers, try linking with -N"
 msgstr "%pB: pas suffisamment d'espace pour les en-tÃªtes du programme, essayer l'option -N"
 
-#: elf.c:5654
+#: elf.c:5830
 #, c-format
 msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
 msgstr "%pB: section %pA avec lma %#<PRIx64> ajustÃ©e Ã  %#<PRIx64>"
 
-#: elf.c:5791
+#. The fix for this error is usually to edit the linker script being
+#. used and set up the program headers manually.  Either that or
+#. leave room for the headers at the start of the SECTIONS.
+#: elf.c:5967
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: erreur: segment PHDR non couvert par le segment LOAD"
+
+#: elf.c:6007
 #, c-format
 msgid "%pB: section `%pA' can't be allocated in segment %d"
 msgstr "%pB: la section Â«Â %pAÂ Â» ne peut pas Ãªtre allouÃ©e dans le segment %d"
 
-#: elf.c:5839
+#: elf.c:6139
 #, c-format
 msgid "%pB: warning: allocated section `%s' not in segment"
 msgstr "%pB: attention: section allouÃ©e Â«Â %sÂ Â» n'est pas dans le segment"
 
-#: elf.c:6072
+#: elf.c:6300
 #, c-format
 msgid "%pB: error: non-load segment %d includes file header and/or program header"
 msgstr "%pB: erreur: le segment de non-chargement %d inclus un en-tÃªte de fichier ou de programme"
 
-#. The fix for this error is usually to edit the linker script being
-#. used and set up the program headers manually.  Either that or
-#. leave room for the headers at the start of the SECTIONS.
-#: elf.c:6249
-#, c-format
-msgid "%pB: error: PHDR segment not covered by LOAD segment"
-msgstr "%pB: erreur: segment PHDR non couvert par le segment LOAD"
-
-#: elf.c:6606
+#: elf.c:6804
 #, c-format
 msgid "%pB: symbol `%s' required but not present"
 msgstr "%pB: symbole Â«Â %sÂ Â» requis mais absent"
 
-#: elf.c:6949
+#: elf.c:7147
 #, c-format
 msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
 msgstr "%pB: attention: segment chargeable vide dÃ©tectÃ© Ã  vaddr=%#<PRIx64>, est-ce intentionnelÂ ?"
 
-#: elf.c:7574
+#: elf.c:7773
 #, c-format
 msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
 msgstr "%pB: attention: un alignement de segment de %#<PRIx64> est trop grand"
 
-#: elf.c:8073
+#: elf.c:8286
+#, c-format
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr "%pB: Impossible de gÃ©rer l'indice de section %x dans le symbole ELF. Utilisation de ABS Ã  la place."
+
+#: elf.c:8316
 #, c-format
 msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr "incapable de trouver un Ã©quivalent pour le symbole Â«Â %sÂ Â» de la section Â«Â %sÂ Â»"
 
-#: elf.c:8421
+#: elf.c:8703
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr "%pB: entrÃ©e .gnu.version_r invalide"
 
-#: elf.c:8548
+#: elf.c:8836
 #, c-format
 msgid "%pB: .gnu.version_d invalid entry"
 msgstr "%pB: entrÃ©e .gnu.version_d invalide"
 
-#: elf32-arc.c:440 elf32-frv.c:6630 elf32-iq2000.c:870 elf32-m32c.c:914
-#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3199 elf32-visium.c:841
-#: elf64-ppc.c:4950
+#: elf.c:9293
+#, c-format
+msgid "%pB:%pA: error: attempting to write into an unallocated compressed section"
+msgstr "%pB:%pA: erreur: tentative d'Ã©crire dans une session compressÃ©e non allouÃ©e"
+
+#: elf.c:9302
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr "%pB:%pA: erreur: tentative d'Ã©crire au delÃ  de la fin de la section"
+
+#: elf.c:9313
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr "%pB:%pA: erreur: tentative d'Ã©crire la section dans un tampon vide"
+
+#: elf.c:12430
+msgid "GNU_MBIND section is unsupported"
+msgstr "la section GNU_MBIND n'est pas supportÃ©e"
+
+#: elf.c:12432
+msgid "symbol type STT_GNU_IFUNC is unsupported"
+msgstr "le type symbolique STT_GNU_IFUNC n'est pas supportÃ©"
+
+#: elf.c:12434
+msgid "symbol binding STB_GNU_UNIQUE is unsupported"
+msgstr "la liaison symbolique STB_GNU_UNIQUE n'est pas supportÃ©e"
+
+#: elf.c:12618 elf64-sparc.c:123 elfcode.h:1482
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr "%pB(%pA): rÃ©adressage %d a un index de symbole %ld invalide"
+
+#: elf.c:12692
+#, c-format
+msgid "%pB(%pA): link section cannot be set because the output file does not have a symbol table"
+msgstr "%pB(%pA): la section de liaison ne peut pas Ãªtre dÃ©finie car le fichier de sortie n'a pas de table de symboles"
+
+#: elf.c:12704
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): l'index de la section d'information est invalide"
+
+#: elf.c:12718
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr "%pB(%pA): l'index de la section d'information ne peut pas Ãªtre dÃ©fini car la section n'est pas dans la sortie"
+
+#: elf.c:12784
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): erreur: le section de rÃ©adressage secondaire est compressÃ©e deux fois"
+
+#: elf.c:12796
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr "%pB(%pA): erreur: la section de rÃ©adressage secondaire est videÂ !"
+
+#: elf.c:12819
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr "%pB(%pA): erreur: rÃ©adressages internes manquants pour la section de rÃ©adressage secondaire"
+
+#: elf.c:12838
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %u is empty"
+msgstr "%pB:%pA: erreur: l'entrÃ©e %u de la table de rÃ©adressage est vide"
+
+#: elf.c:12863
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a missing symbol"
+msgstr "%pB(%pA): erreur: le rÃ©adressage secondaire %u fait rÃ©fÃ©rence Ã  un symbole manquant"
+
+#: elf.c:12880
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a deleted symbol"
+msgstr "%pB(%pA): erreur: le rÃ©adressage secondaire %u fait rÃ©fÃ©rence Ã  un symbole supprimÃ©"
+
+#: elf.c:12893
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u is of an unknown type"
+msgstr "%pB(%pA): erreur: le rÃ©adressage secondaire %u est d'un type inconnu"
+
+#: elf32-arc.c:455 elf32-frv.c:6611 elf32-iq2000.c:868 elf32-m32c.c:914
+#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3205 elf32-visium.c:844
+#: elf64-ppc.c:5291
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "fanions privÃ©s = 0x%lx:"
 
-#: elf32-arc.c:627
+#: elf32-arc.c:642
 #, c-format
 msgid "warning: %pB: conflicting platform configuration %s with %s"
 msgstr "attention: %pB: configuration de plateforme %s en conflit avec %s"
 
-#: elf32-arc.c:646
+#: elf32-arc.c:661
 #, c-format
 msgid "error: %pB: unable to merge CPU base attributes %s with %s"
 msgstr "erreur: %pB: impossible de fusionner les attributs de base CPU %s avec %s"
 
-#: elf32-arc.c:683
+#: elf32-arc.c:698
 #, c-format
 msgid "error: %pB: unable to merge ISA extension attributes %s"
 msgstr "erreur: %pB: impossible de fusionner les attributs de l'extension ISA %s"
 
-#: elf32-arc.c:707
+#: elf32-arc.c:722
 #, c-format
 msgid "error: %pB: conflicting ISA extension attributes %s with %s"
 msgstr "erreur: %pB: attributs d'extension ISA %s en conflit avec %s"
 
-#: elf32-arc.c:747
+#: elf32-arc.c:762
 #, c-format
 msgid "error: %pB: cannot mix rf16 with full register set %pB"
 msgstr "erreur: %pB: impossible de mÃ©langer rf16 avec l'ensemble des registres complets %pB"
 
-#: elf32-arc.c:775
+#: elf32-arc.c:790
 #, c-format
 msgid "error: %pB: conflicting attributes %s: %s with %s"
 msgstr "erreur: %pB: attributs %s conflictuels: %s avec %s"
 
-#: elf32-arc.c:802
+#: elf32-arc.c:817
 #, c-format
 msgid "error: %pB: conflicting attributes %s"
 msgstr "erreur: %pB: attributs %s conflictuels"
 
-#: elf32-arc.c:907
+#: elf32-arc.c:922
 #, c-format
 msgid "error: attempting to link %pB with a binary %pB of different architecture"
 msgstr "erreur: tentative de lier %pB avec un binaire %pB d'une architecture diffÃ©rente"
 
-#: elf32-arc.c:923 elf32-iq2000.c:846 elf32-m32c.c:889 elf32-m68hc1x.c:1385
-#: elf32-ppc.c:3865 elf64-sparc.c:711 elfxx-mips.c:15354
+#: elf32-arc.c:938 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1391
+#: elf32-ppc.c:3867 elf64-sparc.c:722 elfxx-mips.c:15513
 #, c-format
 msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
 msgstr "%pB: utilise des champs e_flags (%#x) diffÃ©rents des modules prÃ©cÃ©dents (%#x)"
 
-#: elf32-arc.c:1012
+#: elf32-arc.c:1027
 msgid "error: the ARC4 architecture is no longer supported"
 msgstr "erreur: l'architecture ARC4 n'est plus supportÃ©e"
 
-#: elf32-arc.c:1018
+#: elf32-arc.c:1033
 msgid "warning: unset or old architecture flags; use default machine"
 msgstr "attention: fanions d'architecture non dÃ©finis ou trop anciens; utilise la machine par dÃ©faut"
 
-#: elf32-arc.c:1151
+#: elf32-arc.c:1159
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): le rÃ©adressage CMEM vers Â«Â %sÂ Â» est invalide. 16 MSB devrait Ãªtre %#x (la valeur est %#<PRIx64>)"
 
-#: elf32-arc.c:1162
+#: elf32-arc.c:1170
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s+%#<PRIx64>' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): le rÃ©adressage CMEM vers Â«Â %s+%#<PRIx64>Â Â» est invalide, 16 MSB devrait Ãªtre %#x (la valeur est %<PRIx64>)"
 
-#: elf32-arc.c:1876
+#: elf32-arc.c:1885
 msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
 msgstr "les rÃ©adressages GOT et PLT ne peuvent pas Ãªtre corrigÃ©s avec un Ã©diteur de liens non dynamique"
 
-#: elf32-arc.c:1900 elf32-rl78.c:1098 elf32-rx.c:1470
+#: elf32-arc.c:1909 elf32-rl78.c:1098 elf32-rx.c:1475
 #, c-format
 msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
 msgstr "%pB(%pA): attention: accÃ¨s non alignÃ© au symbole Â«Â %sÂ Â» dans la zone des petites donnÃ©es"
 
-#: elf32-arc.c:1905 elf32-rl78.c:1103 elf32-rx.c:1475
+#: elf32-arc.c:1914 elf32-rl78.c:1103 elf32-rx.c:1480
 #, c-format
 msgid "%pB(%pA): internal error: out of range error"
 msgstr "%pB(%pA): erreur interne: hors limite"
 
-#: elf32-arc.c:1910 elf32-rl78.c:1108 elf32-rx.c:1480
+#: elf32-arc.c:1919 elf32-rl78.c:1108 elf32-rx.c:1485
 #, c-format
 msgid "%pB(%pA): internal error: unsupported relocation error"
 msgstr "%pB(%pA): erreur interne: rÃ©adressage non supportÃ©"
 
-#: elf32-arc.c:1915 elf32-rl78.c:1113 elf32-rx.c:1485
+#: elf32-arc.c:1924 elf32-rl78.c:1113 elf32-rx.c:1490
 #, c-format
 msgid "%pB(%pA): internal error: dangerous relocation"
 msgstr "%pB(%pA): erreur interne: rÃ©adressage dangereux"
 
-#: elf32-arc.c:1920 elf32-rl78.c:1118 elf32-rx.c:1490
+#: elf32-arc.c:1929 elf32-rl78.c:1118 elf32-rx.c:1495
 #, c-format
 msgid "%pB(%pA): internal error: unknown error"
 msgstr "%pB(%pA): erreur interne: erreur inconnue"
 
-#: elf32-arc.c:2013 elf32-arc.c:2081 elf32-arm.c:15323 elf32-metag.c:2257
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7462
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:497
+#: elf32-arc.c:2022 elf32-arc.c:2090 elf32-arm.c:15513 elf32-metag.c:2253
+#: elf32-nds32.c:5498 elfnn-aarch64.c:7739 elfnn-riscv.c:483
 #, c-format
 msgid "%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC"
 
-#: elf32-arc.c:2949
+#: elf32-arc.c:2909
 #, c-format
 msgid "%pB: unknown mandatory ARC object attribute %d"
 msgstr "%pB: l'attribut d'objet ARC obligatoire %d est inconnu"
 
-#: elf32-arc.c:2957
+#: elf32-arc.c:2917
 #, c-format
 msgid "warning: %pB: unknown ARC object attribute %d"
 msgstr "attention: %pB: attribut d'objet ARC %d inconnu"
@@ -1368,317 +1462,327 @@ msgstr "attention: %pB: attribut d'objet
 # Les auteurs francophones que j'ai trouvÃ©s utilisent le mot Â«Â veneerÂ Â». Le mot Â«Â trampolineÂ Â» est nettement plus appropriÃ©
 # pour dÃ©signer une instruction intermÃ©diaire dont le seul but est de faire rebondir un branchement court vers une destination plus
 # Ã©loignÃ©e.
-#: elf32-arm.c:4304 elf32-arm.c:4338 elf32-arm.c:4357 elf32-arm.c:4409
+#: elf32-arm.c:4307 elf32-arm.c:4341 elf32-arm.c:4360 elf32-arm.c:4412
 #, c-format
 msgid "%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction"
 msgstr "%pB(%pA): attention: les trampolines (aka veneers) de branchements longs utilisÃ©s dans la section avec l'attribut de section SHF_ARM_PURECODE n'est supportÃ© que sur les cibles M-profile implÃ©mentant l'instruction movw."
 
-#: elf32-arm.c:4369 elf32-arm.c:4423 elf32-arm.c:9093 elf32-arm.c:9183
+#: elf32-arm.c:4372 elf32-arm.c:4426 elf32-arm.c:9116 elf32-arm.c:9206
 #, c-format
 msgid "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s"
 msgstr "%pB(%s): attention: l'inter-rÃ©seautage n'est pas activÃ©; premiÃ¨re occurrence: %pB: appel %s Ã  %s"
 
-#: elf32-arm.c:4697
+#: elf32-arm.c:4552
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr "ERREUR: l'Ã©bauche CMSE (section %s) est trop loin (%#<PRIx64>) de la destination (%#<PRIx64>)"
+
+#: elf32-arm.c:4721
 #, c-format
 msgid "no address assigned to the veneers output section %s"
 msgstr "aucune adresse assignÃ©e Ã  la section de sortie %s des trampolines (veneers)"
 
-#: elf32-arm.c:4772 elf32-arm.c:6909 elf32-csky.c:3287 elf32-hppa.c:579
-#: elf32-m68hc1x.c:165 elf32-metag.c:1186 elf32-nios2.c:2208 elf64-ppc.c:3501
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3098
+#: elf32-arm.c:4796 elf32-arm.c:6943 elf32-csky.c:3172 elf32-hppa.c:584
+#: elf32-m68hc1x.c:165 elf32-metag.c:1182 elf32-nios2.c:2204 elf64-ppc.c:3775
+#: elfnn-aarch64.c:3190
 #, c-format
 msgid "%pB: cannot create stub entry %s"
 msgstr "%pB: ne peut crÃ©er l'entrÃ©e de l'Ã©bauche %s"
 
-#: elf32-arm.c:5957
+#: elf32-arm.c:5017 elf32-csky.c:3514 elf32-hppa.c:734 elf32-m68hc11.c:422
+#: elf32-m68hc12.c:542 elf32-metag.c:3347 elf32-nios2.c:2497 elf64-ppc.c:11315
+#: elfnn-aarch64.c:3259
+msgid "%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Impossible d'assigner Â«Â %pAÂ Â» Ã  une section de sortie. RÃ©essayez sans --enable-non-contiguous-regions.\n"
+
+#: elf32-arm.c:5987
 #, c-format
 msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
 msgstr "%pB: le symbole spÃ©cial Â«Â %sÂ Â» est uniquement autorisÃ© pour les architectures ARMv8-M ou ultÃ©rieures"
 
-#: elf32-arm.c:5966
+#: elf32-arm.c:5996
 #, c-format
 msgid "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
 msgstr "%pB: symbole spÃ©cial Â«Â %sÂ Â» invalide; il doit Ãªtre un symbole de fonction global ou faible"
 
-#: elf32-arm.c:6005
+#: elf32-arm.c:6035
 #, c-format
 msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function symbol"
 msgstr "%pB: symbole standard Â«Â %sÂ Â» invalide; il doit Ãªtre un symbole de fonction global ou faible"
 
-#: elf32-arm.c:6011
+#: elf32-arm.c:6041
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr "%pB: symbole standard Â«Â %sÂ Â» absent"
 
-#: elf32-arm.c:6023
+#: elf32-arm.c:6053
 #, c-format
 msgid "%pB: `%s' and its special symbol are in different sections"
 msgstr "%pB: Â«Â %sÂ Â» est ses symboles spÃ©ciaux sont dans des sections diffÃ©rentes"
 
-#: elf32-arm.c:6035
+#: elf32-arm.c:6065
 #, c-format
 msgid "%pB: entry function `%s' not output"
 msgstr "%pB: fonction Â«Â %sÂ Â» d'entrÃ©e par Ã©crite"
 
-#: elf32-arm.c:6042
+#: elf32-arm.c:6072
 #, c-format
 msgid "%pB: entry function `%s' is empty"
 msgstr "%pB: la fonction Â«Â %sÂ Â» d'entrÃ©e est vide"
 
-#: elf32-arm.c:6171
+#: elf32-arm.c:6201
 #, c-format
 msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
 msgstr "%pB: --in-implib uniquement supportÃ© pour les bibliothÃ¨ques d'import Secure Gateway"
 
-#: elf32-arm.c:6217
+#: elf32-arm.c:6250
 #, c-format
 msgid "%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions"
 msgstr "%pB: entrÃ©e de bibliothÃ¨que d'importation invalide: Â«Â %sÂ Â»; le symbole devrait Ãªtre absolu, global et faire rÃ©fÃ©rence Ã  des fonctions Thumb"
 
-#: elf32-arm.c:6239
+#: elf32-arm.c:6272
 #, c-format
 msgid "entry function `%s' disappeared from secure code"
 msgstr "la fonction d'entrÃ©e Â«Â %sÂ Â» a disparu du code sÃ»r"
 
-#: elf32-arm.c:6263
+#: elf32-arm.c:6296
 #, c-format
 msgid "`%s' refers to a non entry function"
 msgstr "Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  quelque chose qui n'est pas une fonction d'entrÃ©e"
 
-#: elf32-arm.c:6278
+#: elf32-arm.c:6311
 #, c-format
 msgid "%pB: visibility of symbol `%s' has changed"
 msgstr "%pB: la visibilitÃ© du symbole Â«Â %sÂ Â» a changÃ©"
 
-#: elf32-arm.c:6287
+#: elf32-arm.c:6320
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr "%pB: taille incorrecte pour le symbole Â«Â %sÂ Â»"
 
-#: elf32-arm.c:6306
+#: elf32-arm.c:6339
 #, c-format
 msgid "offset of veneer for entry function `%s' not a multiple of its size"
 msgstr "le dÃ©calage du trampoline (aka veneer) pour la fonction d'entrÃ©e Â«Â %sÂ Â» n'est pas un multiple de sa taille"
 
-#: elf32-arm.c:6326
+#: elf32-arm.c:6359
 msgid "new entry function(s) introduced but no output import library specified:"
 msgstr "une ou plusieurs nouvelles fonctions d'entrÃ©e spÃ©cifiÃ©es mais aucune bibliothÃ¨que d'import est spÃ©cifiÃ©e:"
 
-#: elf32-arm.c:6334
+#: elf32-arm.c:6367
 #, c-format
 msgid "start address of `%s' is different from previous link"
 msgstr "l'adresse de dÃ©part de Â«Â %sÂ Â» est diffÃ©rente de celle de l'Ã©dition de liens prÃ©cÃ©dente"
 
-#: elf32-arm.c:7042 elf32-arm.c:7078
+#: elf32-arm.c:7076 elf32-arm.c:7111
 #, c-format
 msgid "unable to find %s glue '%s' for '%s'"
 msgstr "incapable de repÃ©rer le liant %s Â«Â %sÂ Â» pour Â«Â %sÂ Â»"
 
-#: elf32-arm.c:7793
+#: elf32-arm.c:7822
 #, c-format
 msgid "%pB: BE8 images only valid in big-endian mode"
 msgstr "%pB: les images BE8 ne sont valables qu'en mode gros boutiste"
 
 #. Give a warning, but do as the user requests anyway.
-#: elf32-arm.c:8024
+#: elf32-arm.c:8049
 #, c-format
 msgid "%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture"
 msgstr "%pB: attention: le palliatif VFP11 sÃ©lectionnÃ© n'est pas nÃ©cessaire avec l'architecture cible"
 
-#: elf32-arm.c:8051
+#: elf32-arm.c:8076
 #, c-format
 msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
 msgstr "%pB: attention: le palliatif STM32L4XX sÃ©lectionnÃ© n'est pas nÃ©cessaire avec l'architecture cible"
 
-#: elf32-arm.c:8588 elf32-arm.c:8608 elf32-arm.c:8674 elf32-arm.c:8693
+#: elf32-arm.c:8612 elf32-arm.c:8632 elf32-arm.c:8699 elf32-arm.c:8718
 #, c-format
 msgid "%pB: unable to find %s veneer `%s'"
 msgstr "%pB: incapable de trouver le trampoline (veneer) Â«Â %sÂ Â» pour %s"
 
-#: elf32-arm.c:8900
+#: elf32-arm.c:8925
 #, c-format
 msgid "%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block"
 msgstr "%pB(%pA+%#x): erreur: chargements multiples dÃ©tectÃ©s dans un bloc d'instruction IT qui n'est pas le dernier: le trampoline (veneer) du STM32L4XX ne peut pas Ãªtre gÃ©nÃ©rÃ©; utilisez l'option -mrestrict-it de gcc pour gÃ©nÃ©rer seulement une instruction par bloc IT"
 
-#: elf32-arm.c:9000
+#: elf32-arm.c:9023
 #, c-format
 msgid "invalid TARGET2 relocation type '%s'"
 msgstr "type de rÃ©adressage TARGET2 Â«Â %sÂ Â» invalide"
 
 #. FIXME: We ought to be able to generate thumb-1 PLT
 #. instructions...
-#: elf32-arm.c:9802
+#: elf32-arm.c:9825
 #, c-format
 msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
 msgstr "%pB: attention: gÃ©nÃ©ration de PLT dans le mode thumb-1 pas encore supportÃ©e"
 
-#: elf32-arm.c:10106 elf32-arm.c:10148
+#: elf32-arm.c:10135 elf32-arm.c:10177
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %s Â«Â %lxÂ Â» inattendue dans le trampoline TLS"
 
-#: elf32-arm.c:10492
+#: elf32-arm.c:10521
 msgid "shared object"
 msgstr "objet partagÃ©"
 
-#: elf32-arm.c:10495
+#: elf32-arm.c:10524
 msgid "PIE executable"
 msgstr "exÃ©cutable PIE"
 
-#: elf32-arm.c:10498
+#: elf32-arm.c:10527
 #, c-format
 msgid "%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC"
 msgstr "%pB: le rÃ©adressage de %s vers le symbole externe ou non dÃ©fini Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en construisant un %s; recompilez avec -fPIC"
 
-#: elf32-arm.c:10635 elf32-arm.c:11062
+#: elf32-arm.c:10664 elf32-arm.c:11091
 #, c-format
 msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
 msgstr "%pB: attention: instruction %s BLX vise la fonction %s Â«Â %sÂ Â»."
 
-#: elf32-arm.c:11975 elf32-arm.c:12001
+#: elf32-arm.c:12003 elf32-arm.c:12029
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %s '%#lx' inattendue rÃ©fÃ©rencÃ©e par TLS_GOTDESC"
 
-#: elf32-arm.c:12047 elf32-csky.c:4853 elf32-m68k.c:3703 elf32-metag.c:1919
-#: elf32-nios2.c:4366
+#: elf32-arm.c:12075 elf32-csky.c:4746 elf32-m68k.c:3735 elf32-metag.c:1915
+#: elf32-nios2.c:4385
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
 msgstr "%pB(%pA+%#<PRIx64>): rÃ©adressage %s pas permis dans un objet partagÃ©"
 
-#: elf32-arm.c:12261
+#: elf32-arm.c:12289
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group relocations"
 msgstr "%pB(%pA+%#<PRIx64>): seuls ADD ou SUB sont permis dans les rÃ©adressages du groupe ALU"
 
-#: elf32-arm.c:12302 elf32-arm.c:12394 elf32-arm.c:12482 elf32-arm.c:12572
+#: elf32-arm.c:12330 elf32-arm.c:12422 elf32-arm.c:12510 elf32-arm.c:12600
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group relocation %s"
 msgstr "%pB(%pA+%#<PRIx64>): dÃ©bordement en scindant %#<PRIx64> pour le rÃ©adressage du groupe %s"
 
-#: elf32-arm.c:13078 elf32-sh.c:3689
+#: elf32-arm.c:13232 elf32-sh.c:3571
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
 msgstr "%pB(%pA+%#<PRIx64>): %s rÃ©adressage vers une section SEC_MERGE"
 
-#: elf32-arm.c:13191 elf32-m68k.c:3936 elf32-xtensa.c:2703
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6534
+#: elf32-arm.c:13345 elf32-m68k.c:3968 elf32-xtensa.c:2761
+#: elfnn-aarch64.c:6829
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
 msgstr "%pB(%pA+%#<PRIx64>): %s utilisÃ© avec le symbole TLS %s"
 
-#: elf32-arm.c:13193 elf32-m68k.c:3938 elf32-xtensa.c:2705
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6536
+#: elf32-arm.c:13347 elf32-m68k.c:3970 elf32-xtensa.c:2763
+#: elfnn-aarch64.c:6831
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
 msgstr "%pB(%pA+%#<PRIx64>): %s utilisÃ© avec le symbole non-TLS %s"
 
-#: elf32-arm.c:13276 elf32-tic6x.c:2708
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6871
+#: elf32-arm.c:13430 elf32-tic6x.c:2649 elfnn-aarch64.c:7166
 msgid "out of range"
 msgstr "hors limite"
 
-#: elf32-arm.c:13280 elf32-nios2.c:4500 elf32-pru.c:933 elf32-tic6x.c:2712
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6875
+#: elf32-arm.c:13434 elf32-nios2.c:4519 elf32-pru.c:936 elf32-tic6x.c:2653
+#: elfnn-aarch64.c:7170
 msgid "unsupported relocation"
 msgstr "rÃ©adressage non supportÃ©"
 
-#: elf32-arm.c:13288 elf32-nios2.c:4510 elf32-pru.c:943 elf32-tic6x.c:2720
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6883
+#: elf32-arm.c:13442 elf32-nios2.c:4529 elf32-pru.c:946 elf32-tic6x.c:2661
+#: elfnn-aarch64.c:7178
 msgid "unknown error"
 msgstr "erreur inconnue"
 
-#: elf32-arm.c:13764
+#: elf32-arm.c:13920
 #, c-format
 msgid "warning: not setting interworking flag of %pB since it has already been specified as non-interworking"
 msgstr "attention: pas d'initialisation du fanion d'inter-rÃ©seautage de %pB puisqu'il a dÃ©jÃ  Ã©tÃ© spÃ©cifiÃ© sans inter-rÃ©seautage"
 
-#: elf32-arm.c:13768
+#: elf32-arm.c:13924
 #, c-format
 msgid "warning: clearing the interworking flag of %pB due to outside request"
 msgstr "attention: mise Ã  zÃ©ro du fanion d'inter-rÃ©seautage de %pB en raison d'une requÃªte externe"
 
-#: elf32-arm.c:13813
+#: elf32-arm.c:13969
 #, c-format
 msgid "warning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"
 msgstr "attention: mise Ã  zÃ©ro du fanion d'inter-rÃ©seautage %pB en raison du code sans inter-rÃ©seautage dans %pB liÃ© avec lui"
 
-#: elf32-arm.c:13900
+#: elf32-arm.c:14056
 #, c-format
 msgid "%pB: unknown mandatory EABI object attribute %d"
 msgstr "%pB: l'attribut d'objet EABI obligatoire %d est inconnu"
 
-#: elf32-arm.c:13908
+#: elf32-arm.c:14064
 #, c-format
 msgid "warning: %pB: unknown EABI object attribute %d"
 msgstr "attention: %pB: l'attribut d'objet EABI %d est inconnu"
 
-#: elf32-arm.c:14175
+#: elf32-arm.c:14364
 #, c-format
 msgid "error: %pB: unknown CPU architecture"
 msgstr "erreur: %pB: architecture CPU inconnue"
 
-#: elf32-arm.c:14213 elf32-nios2.c:2946
+#: elf32-arm.c:14402 elf32-nios2.c:2953
 #, c-format
 msgid "error: %pB: conflicting CPU architectures %d/%d"
 msgstr "erreur: %pB: architectures CPU conflictuelles %d/%d"
 
-#: elf32-arm.c:14310
+#: elf32-arm.c:14499
 #, c-format
 msgid "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr "Erreur: %pB utilise les deux attributs Tag_MPextension_use actuel et hÃ©ritÃ©"
 
-#: elf32-arm.c:14339
+#: elf32-arm.c:14528
 #, c-format
 msgid "error: %pB uses VFP register arguments, %pB does not"
 msgstr "erreur: %pB passe les paramÃ¨tres dans un registre VFP alors que %pB ne le fait pas"
 
-#: elf32-arm.c:14497
+#: elf32-arm.c:14687
 #, c-format
 msgid "error: %pB: unable to merge virtualization attributes with %pB"
 msgstr "erreur: %pB: impossible de fusionner les attributs de visualisation avec %pB"
 
-#: elf32-arm.c:14523
+#: elf32-arm.c:14713
 #, c-format
 msgid "error: %pB: conflicting architecture profiles %c/%c"
 msgstr "erreur: %pB: profils d'architecture conflictuels %c/%c"
 
-#: elf32-arm.c:14662
+#: elf32-arm.c:14852
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
 msgstr "attention: %pB: configuration de plateforme conflictuelle"
 
-#: elf32-arm.c:14671
+#: elf32-arm.c:14861
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr "erreur: %pB: utilisation conflictuelle de R9"
 
-#: elf32-arm.c:14683
+#: elf32-arm.c:14873
 #, c-format
 msgid "error: %pB: SB relative addressing conflicts with use of R9"
 msgstr "erreur: %pB: adressage relatif SB entre en conflit avec l'utilisation de R9"
 
-#: elf32-arm.c:14696
+#: elf32-arm.c:14886
 #, c-format
 msgid "warning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail"
 msgstr "attention: %pB utilise des wchar_t de %u octets alors que la sortie doit utiliser des wchar_t de %u octets. L'utilisation de wchar_t entre objets peu Ã©chouer"
 
-#: elf32-arm.c:14727
+#: elf32-arm.c:14917
 #, c-format
 msgid "warning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"
 msgstr "attention: %pB utilise des enums %s alors que la sortie doit utiliser des enums %s. L'utilisation des valeurs enum entre objets peu Ã©chouer"
 
-#: elf32-arm.c:14739
+#: elf32-arm.c:14929
 #, c-format
 msgid "error: %pB uses iWMMXt register arguments, %pB does not"
 msgstr "erreur: %pB passe les paramÃ¨tres dans le registre iWMMXt contrairement Ã  %pB"
 
-#: elf32-arm.c:14756
+#: elf32-arm.c:14946
 #, c-format
 msgid "error: fp16 format mismatch between %pB and %pB"
 msgstr "erreur: dÃ©saccord de format fp16 entre %pB et %pB"
 
-#: elf32-arm.c:14792
+#: elf32-arm.c:14982
 #, c-format
 msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr "%pB utilise les deux attributs Tag_MPextension_use actuel et hÃ©ritÃ©"
@@ -1688,345 +1792,330 @@ msgstr "%pB utilise les deux attributs T
 #. Ignore init flag - it may not be set, despite the flags field containing valid data.
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
-#: elf32-arm.c:14879 elf32-bfin.c:4740 elf32-cris.c:3908 elf32-m68hc1x.c:1410
-#: elf32-m68k.c:1201 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
-#: elf32-xgate.c:494 elfxx-mips.c:16037
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7037
+#: elf32-arm.c:15069 elf32-bfin.c:4719 elf32-cris.c:3861 elf32-m68hc1x.c:1416
+#: elf32-m68k.c:1267 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
+#: elf32-xgate.c:494 elfxx-mips.c:16199 elfnn-aarch64.c:7332
 #, c-format
 msgid "private flags = %lx:"
 msgstr "fanions privÃ©s = %lx"
 
-#: elf32-arm.c:14888
+#: elf32-arm.c:15078
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [inter-rÃ©seautage autorisÃ©]"
 
-#: elf32-arm.c:14896
+#: elf32-arm.c:15086
 #, c-format
 msgid " [VFP float format]"
 msgstr " [format flottant VFP]"
 
-#: elf32-arm.c:14898
+#: elf32-arm.c:15088
 #, c-format
 msgid " [Maverick float format]"
 msgstr " [format flottant Maverick]"
 
-#: elf32-arm.c:14900
+#: elf32-arm.c:15090
 #, c-format
 msgid " [FPA float format]"
 msgstr " [format flottant FPA]"
 
-#: elf32-arm.c:14903
+#: elf32-arm.c:15093
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr " [valeurs en virgule flottante passÃ©es dans des registres de valeurs en virgule flottante]"
 
-#: elf32-arm.c:14906 elf32-arm.c:14992
+#: elf32-arm.c:15096 elf32-arm.c:15182
 #, c-format
 msgid " [position independent]"
 msgstr " [position indÃ©pendante]"
 
-#: elf32-arm.c:14909
+#: elf32-arm.c:15099
 #, c-format
 msgid " [new ABI]"
 msgstr " [nouvel ABI]"
 
-#: elf32-arm.c:14912
+#: elf32-arm.c:15102
 #, c-format
 msgid " [old ABI]"
 msgstr " [ancien ABI]"
 
-#: elf32-arm.c:14915
+#: elf32-arm.c:15105
 #, c-format
 msgid " [software FP]"
 msgstr " [virgule flottante logiciel]"
 
-#: elf32-arm.c:14924
+#: elf32-arm.c:15114
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [Version1 EABI]"
 
-#: elf32-arm.c:14927 elf32-arm.c:14938
+#: elf32-arm.c:15117 elf32-arm.c:15128
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [table des symboles triÃ©s]"
 
-#: elf32-arm.c:14929 elf32-arm.c:14940
+#: elf32-arm.c:15119 elf32-arm.c:15130
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [table des symboles non triÃ©s]"
 
-#: elf32-arm.c:14935
+#: elf32-arm.c:15125
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [Version2 EABI]"
 
-#: elf32-arm.c:14943
+#: elf32-arm.c:15133
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [symboles dynamiques utilisent un index de segment]"
 
-#: elf32-arm.c:14946
+#: elf32-arm.c:15136
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [mapping de symboles prÃ©cÃ¨des les autres]"
 
-#: elf32-arm.c:14953
+#: elf32-arm.c:15143
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [Version3 EABI]"
 
-#: elf32-arm.c:14957
+#: elf32-arm.c:15147
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [Version4 EABI]"
 
-#: elf32-arm.c:14961
+#: elf32-arm.c:15151
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [Version5 EABI]"
 
-#: elf32-arm.c:14964
+#: elf32-arm.c:15154
 #, c-format
 msgid " [soft-float ABI]"
 msgstr " [soft-float ABI]"
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:15157
 #, c-format
 msgid " [hard-float ABI]"
 msgstr " [hard-float ABI]"
 
-#: elf32-arm.c:14973
+#: elf32-arm.c:15163
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:14976
+#: elf32-arm.c:15166
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:14982
+#: elf32-arm.c:15172
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <Version EABI non reconnue>"
 
-#: elf32-arm.c:14989
+#: elf32-arm.c:15179
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [exÃ©cutables relocalisÃ©s]"
 
-#: elf32-arm.c:14995
+#: elf32-arm.c:15185
 #, c-format
 msgid " [FDPIC ABI supplement]"
 msgstr " [supplÃ©ment ABI FDPIC]"
 
-#: elf32-arm.c:15000
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7040
+#: elf32-arm.c:15190 elfnn-aarch64.c:7335
 #, c-format
 msgid "<Unrecognised flag bits set>"
 msgstr "<Bits de fanions non reconnus>"
 
-#: elf32-arm.c:15117 elf32-i386.c:1529 elf32-s390.c:960 elf32-tic6x.c:2783
-#: elf32-tilepro.c:1479 elf32-xtensa.c:1029 elf64-s390.c:882
-#: elf64-x86-64.c:1865 elfxx-sparc.c:1422 elfxx-tilegx.c:1700
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7329
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:539
+#: elf32-arm.c:15307 elf32-i386.c:1524 elf32-s390.c:925 elf32-tic6x.c:2724
+#: elf32-tilepro.c:1443 elf32-xtensa.c:1093 elf64-s390.c:847
+#: elf64-x86-64.c:1902 elfxx-sparc.c:1386 elfxx-tilegx.c:1664
+#: elfnn-aarch64.c:7606 elfnn-riscv.c:525
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr "%pB: symbole index erronÃ©: %d"
 
-#: elf32-arm.c:15508
+#: elf32-arm.c:15696
 #, c-format
 msgid "FDPIC does not yet support %s relocation to become dynamic for executable"
 msgstr "FDPIC ne supporte pas encore le rÃ©adressage %s pour devenir dynamique Ã  l'exÃ©cution"
 
-#: elf32-arm.c:16558 elf32-csky.c:1931 elf32-hppa.c:2090 elf32-lm32.c:1998
-#: elf32-m32r.c:2110 elf32-metag.c:2797 elf32-nds32.c:4330 elf32-or1k.c:2858
-#: elf32-ppc.c:5469 elf32-s390.c:1854 elf32-sh.c:2975 elf32-tic6x.c:3252
-#: elf32-tilepro.c:2245 elf64-ppc.c:9023 elf64-s390.c:1791 elfxx-sparc.c:2435
-#: elfxx-tilegx.c:2491 elfxx-x86.c:571
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:8677
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:1142
-#, c-format
-msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
-msgstr "%pB: rÃ©adressage dynamique sur Â«Â %pTÂ Â» dans la section en lecture seule Â«Â %pAÂ Â»\n"
-
-#: elf32-arm.c:16854
+#: elf32-arm.c:16939
 #, c-format
 msgid "errors encountered processing file %pB"
 msgstr "erreurs rencontrÃ©es pendant le traitement du fichier %pB"
 
-#: elf32-arm.c:17301 elflink.c:12556 elflink.c:12603
+#: elf32-arm.c:17326 elflink.c:12818 elflink.c:12865
 #, c-format
 msgid "could not find section %s"
 msgstr "ne peut repÃ©rer la section %s"
 
-#: elf32-arm.c:18512
+#: elf32-arm.c:18550
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub is allocated in unsafe location"
 msgstr "%pB: erreur: l'Ã©bauche d'erratum du Cortex A8 est allouÃ©e Ã  un emplacement peu sÃ»r"
 
 #. There's not much we can do apart from complain if this
 #. happens.
-#: elf32-arm.c:18539
+#: elf32-arm.c:18577
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
 msgstr "%pB: erreur: l'Ã©bauche d'erratum du Cortex A8 est hors limite (fichier d'entrÃ©e trop grand)"
 
-#: elf32-arm.c:19366 elf32-arm.c:19388
+#: elf32-arm.c:19404 elf32-arm.c:19426
 #, c-format
 msgid "%pB: error: VFP11 veneer out of range"
 msgstr "%pB: erreur: vernis VFP11 hors limite"
 
-#: elf32-arm.c:19439
+#: elf32-arm.c:19477
 #, c-format
 msgid "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range by %<PRId64> bytes; cannot encode branch instruction"
 msgstr "%pB(%#<PRIx64>): erreur: impossible de crÃ©er le trampoline (veneer) du STM32L4XX; saut hors de portÃ©e pour %<PRId64> octets; impossible d'encoder l'instruction de branchement"
 
-#: elf32-arm.c:19478
+#: elf32-arm.c:19516
 #, c-format
 msgid "%pB: error: cannot create STM32L4XX veneer"
 msgstr "%pB: erreur: impossible de crÃ©er le trampoline (veneer) du STM32L4XX."
 
-#: elf32-arm.c:20567
+#: elf32-arm.c:20600
 #, c-format
 msgid "error: %pB is already in final BE8 format"
 msgstr "erreur: %pB est dÃ©jÃ  au format final BE8"
 
-#: elf32-arm.c:20643
+#: elf32-arm.c:20676
 #, c-format
 msgid "error: source object %pB has EABI version %d, but target %pB has EABI version %d"
 msgstr "erreur: l'objet source %pB a l'EABI version %d alors que la cible %pB a l'EABI version %d"
 
-#: elf32-arm.c:20658
+#: elf32-arm.c:20691
 #, c-format
 msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
 msgstr "erreur: %pB compilÃ© pour APCS-%d alors que la cible %pB utilise APCS-%d"
 
-#: elf32-arm.c:20668
+#: elf32-arm.c:20701
 #, c-format
 msgid "error: %pB passes floats in float registers, whereas %pB passes them in integer registers"
 msgstr "erreur: %pB passage de valeurs en virgule flottante dans les registres FP alors que %pB les passe dans les registres entiers"
 
-#: elf32-arm.c:20672
+#: elf32-arm.c:20705
 #, c-format
 msgid "error: %pB passes floats in integer registers, whereas %pB passes them in float registers"
 msgstr "erreur: %pB passage de valeurs en virgule flottante dans les registres entiers alors que %pB les passe dans les registres FP"
 
-#: elf32-arm.c:20682 elf32-arm.c:20686 elf32-arm.c:20696
+#: elf32-arm.c:20715 elf32-arm.c:20719 elf32-arm.c:20729
 #, c-format
 msgid "error: %pB uses %s instructions, whereas %pB does not"
 msgstr "erreur: %pB utilise les instructions %s alors que %pB ne les utilise pas"
 
-#: elf32-arm.c:20700
+#: elf32-arm.c:20733
 #, c-format
 msgid "error: %pB does not use %s instructions, whereas %pB does"
 msgstr "erreur: %pB n'utilise pas les instructions %s alors que %pB les utilise"
 
-#: elf32-arm.c:20719
+#: elf32-arm.c:20752
 #, c-format
 msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
 msgstr "erreur: %pB utilise le logiciel pour virgule flottante alors que %pB utilise le matÃ©riel pour virgule flottante"
 
-#: elf32-arm.c:20723
+#: elf32-arm.c:20756
 #, c-format
 msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
 msgstr "erreur: %pB utilise le matÃ©riel pour virgule flottante alors que %pB utilise le logiciel pour virgule flottante"
 
-#: elf32-arm.c:20737
+#: elf32-arm.c:20770
 #, c-format
 msgid "warning: %pB supports interworking, whereas %pB does not"
 msgstr "attention: %pB supporte l'inter-rÃ©seautage, contrairement Ã  %pB"
 
-#: elf32-arm.c:20743
+#: elf32-arm.c:20776
 #, c-format
 msgid "warning: %pB does not support interworking, whereas %pB does"
 msgstr "attention: %pB ne supporte pas l'inter-rÃ©seautage, contrairement Ã  %pB"
 
-#: elf32-avr.c:1518 elf32-bfin.c:3135 elf32-cris.c:2041 elf32-epiphany.c:577
-#: elf32-fr30.c:602 elf32-frv.c:4057 elf32-ft32.c:502 elf32-ip2k.c:1493
-#: elf32-iq2000.c:701 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1998
-#: elf32-moxie.c:296 elf32-msp430.c:1366 elf32-mt.c:406 elf32-or1k.c:1767
-#: elf32-tilepro.c:3514 elf32-v850.c:2299 elf32-visium.c:689
-#: elf32-xstormy16.c:939 elf64-mmix.c:1549 elfxx-tilegx.c:3878
+#: elf32-avr.c:1516 elf32-bfin.c:3134 elf32-cris.c:2041 elf32-epiphany.c:573
+#: elf32-fr30.c:602 elf32-frv.c:4056 elf32-ft32.c:502 elf32-ip2k.c:1488
+#: elf32-iq2000.c:699 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1994
+#: elf32-moxie.c:296 elf32-msp430.c:1375 elf32-mt.c:406 elf32-or1k.c:1825
+#: elf32-tilepro.c:3388 elf32-v850.c:2298 elf32-visium.c:688
+#: elf32-xstormy16.c:937 elf64-bpf.c:521 elf64-mmix.c:1549 elfxx-tilegx.c:3752
 msgid "internal error: dangerous relocation"
 msgstr "erreur interne: rÃ©adressage dangereux"
 
-#: elf32-avr.c:3327
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3126
+#: elf32-avr.c:3327 elfnn-aarch64.c:3221
 #, c-format
 msgid "cannot create stub entry %s"
 msgstr "ne peut crÃ©er l'entrÃ©e d'Ã©bauche %s"
 
-#: elf32-bfin.c:106 elf32-bfin.c:362
+#: elf32-bfin.c:107 elf32-bfin.c:363
 msgid "relocation should be even number"
 msgstr "le rÃ©adressage devrait Ãªtre un nombre paire"
 
-#: elf32-bfin.c:1585
+#: elf32-bfin.c:1584
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
 msgstr "%pB(%pA+%#<PRIx64>): rÃ©adressage sans solution vers le symbole Â«Â %sÂ Â»"
 
-#: elf32-bfin.c:1617 elf32-i386.c:3449 elf32-m68k.c:3976 elf32-s390.c:3269
-#: elf64-s390.c:3219 elf64-x86-64.c:3896
+#: elf32-bfin.c:1616 elf32-i386.c:3443 elf32-m68k.c:4008 elf32-s390.c:3140
+#: elf64-s390.c:3089 elf64-x86-64.c:4112
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
 msgstr "%pB(%pA+%#<PRIx64>): rÃ©adressage sur Â«Â %sÂ Â»: erreur %d"
 
-#: elf32-bfin.c:2638
+#: elf32-bfin.c:2641
 #, c-format
 msgid "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero addend"
 msgstr "%pB: rÃ©adressage Ã  Â«Â %pA+%#<PRIx64>Â Â» fait rÃ©fÃ©rence au symbole Â«Â %sÂ Â» avec un opÃ©rande non nul"
 
-#: elf32-bfin.c:2655
+#: elf32-bfin.c:2658
 msgid "relocation references symbol not defined in the module"
 msgstr "le rÃ©adressage fait rÃ©fÃ©rence Ã  un symbole non dÃ©fini dans le module"
 
-#: elf32-bfin.c:2752
+#: elf32-bfin.c:2755
 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
 msgstr "R_BFIN_FUNCDESC fait rÃ©fÃ©rence Ã  un symbole dynamique avec un opÃ©rande non nul"
 
-#: elf32-bfin.c:2793 elf32-bfin.c:2916
+#: elf32-bfin.c:2795 elf32-bfin.c:2916
 msgid "cannot emit fixups in read-only section"
 msgstr "impossible d'apporter des corrections dans une section en lecture seule"
 
-#: elf32-bfin.c:2824 elf32-bfin.c:2954 elf32-lm32.c:1049 elf32-sh.c:4511
+#: elf32-bfin.c:2825 elf32-bfin.c:2953 elf32-lm32.c:1006 elf32-sh.c:4389
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr "impossible d'Ã©diter les rÃ©adressages dynamiques dans une section en lecture seule"
 
-#: elf32-bfin.c:2874
+#: elf32-bfin.c:2875
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
 msgstr "R_BFIN_FUNCDESC_VALUE fait rÃ©fÃ©rence Ã  un symbole dynamique avec un opÃ©rande non nul"
 
-#: elf32-bfin.c:3039
+#: elf32-bfin.c:3038
 msgid "relocations between different segments are not supported"
 msgstr "les rÃ©adressages entre segments diffÃ©rents ne sont pas supportÃ©s"
 
-#: elf32-bfin.c:3040
+#: elf32-bfin.c:3039
 msgid "warning: relocation references a different segment"
 msgstr "attention: rÃ©adressage fait rÃ©fÃ©rence Ã  un segment diffÃ©rent"
 
-#: elf32-bfin.c:4787 elf32-frv.c:6603
+#: elf32-bfin.c:4770 elf32-frv.c:6584
 #, c-format
 msgid "%pB: cannot link non-fdpic object file into fdpic executable"
 msgstr "%pB: ne peut lier un fichier objet non fdpic dans un exÃ©cutable fdpic"
 
-#: elf32-bfin.c:4791 elf32-frv.c:6607
+#: elf32-bfin.c:4774 elf32-frv.c:6588
 #, c-format
 msgid "%pB: cannot link fdpic object file into non-fdpic executable"
 msgstr "%pB: ne peut lier un fichier objet fdpic dans un exÃ©cutable non fdpic"
 
-#: elf32-bfin.c:4941
+#: elf32-bfin.c:4924
 #, c-format
 msgid "*** check this relocation %s"
 msgstr "*** vÃ©rifiez ce rÃ©adressage %s"
 
-#: elf32-bfin.c:5057
+#: elf32-bfin.c:5040
 msgid "the bfin target does not currently support the generation of copy relocations"
 msgstr "la cible bfin ne supporte actuellement pas la gÃ©nÃ©ration de rÃ©adressages copiÃ©s"
 
-#: elf32-bfin.c:5351 elf32-cr16.c:2803 elf32-m68k.c:4390
+#: elf32-bfin.c:5334 elf32-cr16.c:2731 elf32-m68k.c:4422
 msgid "unsupported relocation type"
 msgstr "type de rÃ©adressage non supportÃ©"
 
@@ -2046,16 +2135,16 @@ msgid "%pB, section %pA: no PLT for relo
 msgstr "%pB, section %pA: pas de PLT pour rÃ©adresser %s sur le symbole Â«Â %sÂ Â»"
 
 #: elf32-cris.c:1193 elf32-cris.c:1326 elf32-cris.c:1591 elf32-cris.c:1674
-#: elf32-cris.c:1827 elf32-tic6x.c:2619
+#: elf32-cris.c:1827 elf32-tic6x.c:2560
 msgid "[whose name is lost]"
 msgstr "[dont le nom est perdu]"
 
-#: elf32-cris.c:1311 elf32-tic6x.c:2603
+#: elf32-cris.c:1311 elf32-tic6x.c:2544
 #, c-format
 msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against local symbol"
 msgstr "%pB, section %pA: rÃ©adressage de %s avec un opÃ©rande non nul %<PRId64> sur le symbole local"
 
-#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2612
+#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2553
 #, c-format
 msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
 msgstr "%pB, section %pA: rÃ©adressage de %s avec un opÃ©rande non nul %<PRId64> sur le symbole Â«Â %sÂ Â»"
@@ -2113,71 +2202,71 @@ msgstr ""
 msgid "%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr "%pB, section %pA: rÃ©adressage de %s ne devrait pas Ãªtre utilisÃ© dans un objet partagÃ©; recompilez avec -fPIC"
 
-#: elf32-cris.c:3747
+#: elf32-cris.c:3700
 #, c-format
 msgid "%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr "%pB, section Â«Â %pAÂ Â», vers le symbole Â«Â %sÂ Â»: rÃ©adressage de %s ne devrait pas Ãªtre utilisÃ© dans un objet partagÃ©; recompilez avec -fPIC"
 
-#: elf32-cris.c:3860
+#: elf32-cris.c:3812
 msgid "unexpected machine number"
 msgstr "numÃ©ro de machine inattendu"
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3864
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr " [symboles sont prÃ©fixÃ©s par Â«Â  _ Â Â»]"
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3867
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 et v32]"
 
-#: elf32-cris.c:3917
+#: elf32-cris.c:3870
 #, c-format
 msgid " [v32]"
 msgstr " [v32]"
 
-#: elf32-cris.c:3961
+#: elf32-cris.c:3914
 #, c-format
 msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
 msgstr "%pB: utilise des symboles prÃ©fixÃ©s par _ mais Ã©crits les symboles sans prÃ©fixes dans le fichier"
 
-#: elf32-cris.c:3962
+#: elf32-cris.c:3915
 #, c-format
 msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
 msgstr "%pB: utilise des symboles sans prÃ©fixe mais ajoute le prÃ©fixe _ aux symboles dans le fichier"
 
-#: elf32-cris.c:3981
+#: elf32-cris.c:3934
 #, c-format
 msgid "%pB contains CRIS v32 code, incompatible with previous objects"
 msgstr "%pB contient du code CRIS v32 incompatible avec les objets prÃ©cÃ©dents"
 
-#: elf32-cris.c:3983
+#: elf32-cris.c:3936
 #, c-format
 msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
 msgstr "%pB contient du code non CRIS v32 incompatible avec les objets prÃ©cÃ©dents"
 
-#: elf32-csky.c:2066
+#: elf32-csky.c:2022
 msgid "GOT table size out of range"
 msgstr "taille de la table GOT hors limites"
 
-#: elf32-csky.c:2917
+#: elf32-csky.c:2802
 #, c-format
 msgid "warning: unrecognized arch eflag '%#lx'"
 msgstr "avertissement: eflag arch Â«Â %#lxÂ Â» non reconnu"
 
-#: elf32-csky.c:2977
+#: elf32-csky.c:2862
 #, c-format
 msgid "%pB: machine flag conflict with target"
 msgstr "%pB: fanion machine en conflit avec la cible"
 
-#: elf32-csky.c:2990
+#: elf32-csky.c:2875
 #, c-format
 msgid "warning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%s"
 msgstr "avertissement: le fanion d'archive ck%2$s du fichier %1$pB est en conflit avec la cible ck%3$s, utilise ck%4$s"
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4225 elf32-i386.c:351
+#: elf32-csky.c:4118 elf32-i386.c:350
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr "%pB: type de rÃ©adressage non supportÃ©: %#x"
@@ -2193,7 +2282,7 @@ msgid "jump (PC rel26) to section (%s) n
 msgstr "saut (PC rel26) Ã  la section (%s) n'est pas supportÃ©"
 
 #. Only if it's not an unresolved symbol.
-#: elf32-epiphany.c:573 elf32-ip2k.c:1489
+#: elf32-epiphany.c:569 elf32-ip2k.c:1484
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "rÃ©adressage non supportÃ© entre les espaces d'adresses data/insn"
 
@@ -2201,96 +2290,96 @@ msgstr "rÃ©adressage non supportÃ© entre
 msgid "relocation requires zero addend"
 msgstr "le rÃ©adressage exige un opÃ©rande nul"
 
-#: elf32-frv.c:2829
+#: elf32-frv.c:2832
 #, c-format
 msgid "%H: relocation to `%s+%v' may have caused the error above\n"
 msgstr "%H: le rÃ©adressage en Â«Â %s+%vÂ Â» peut avoir causÃ© le problÃ¨me ci-dessus\n"
 
-#: elf32-frv.c:2846
+#: elf32-frv.c:2849
 msgid "%H: relocation references symbol not defined in the module\n"
 msgstr "%H: le rÃ©adressage fait rÃ©fÃ©rence Ã  un symbole non dÃ©fini dans le module\n"
 
-#: elf32-frv.c:2922
+#: elf32-frv.c:2925
 msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
 msgstr "%H: R_FRV_GETTLSOFF pas appliquÃ© Ã  une instruction d'appel\n"
 
-#: elf32-frv.c:2963
+#: elf32-frv.c:2966
 msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESC12 pas appliquÃ© Ã  une instruction lddi\n"
 
-#: elf32-frv.c:3034
+#: elf32-frv.c:3037
 msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESCHI pas appliquÃ© Ã  une instruction sethi\n"
 
-#: elf32-frv.c:3071
+#: elf32-frv.c:3074
 msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESCLO pas appliquÃ© Ã  une instruction setlo ou setlos\n"
 
-#: elf32-frv.c:3118
+#: elf32-frv.c:3121
 msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
 msgstr "%H: R_FRV_TLSDESC_RELAX pas appliquÃ© Ã  une instruction ldd\n"
 
-#: elf32-frv.c:3202
+#: elf32-frv.c:3205
 msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
 msgstr "%H: R_FRV_GETTLSOFF_RELAX pas appliquÃ© Ã  une instruction calll\n"
 
-#: elf32-frv.c:3256
+#: elf32-frv.c:3259
 msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFF12 pas appliquÃ© Ã  une instruction ldi\n"
 
-#: elf32-frv.c:3286
+#: elf32-frv.c:3289
 msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFFHI pas appliquÃ© Ã  une instruction sethi\n"
 
-#: elf32-frv.c:3315
+#: elf32-frv.c:3318
 msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFFLO pas appliquÃ© Ã  une instruction setlo ou setlos\n"
 
-#: elf32-frv.c:3345
+#: elf32-frv.c:3348
 msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
 msgstr "%H: R_FRV_TLSOFF_RELAX pas appliquÃ© Ã  une instruction ld\n"
 
-#: elf32-frv.c:3390
+#: elf32-frv.c:3393
 msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_TLSMOFFHI pas appliquÃ© Ã  une instruction sethi\n"
 
-#: elf32-frv.c:3417
+#: elf32-frv.c:3420
 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
 msgstr "R_FRV_TLSMOFFLO pas appliquÃ© Ã  une instruction setlo ou setlos\n"
 
-#: elf32-frv.c:3538 elf32-frv.c:3660
+#: elf32-frv.c:3541 elf32-frv.c:3661
 msgid "%H: %s references dynamic symbol with nonzero addend\n"
 msgstr "%H: %s fait rÃ©fÃ©rence Ã  un symbole dynamique avec un opÃ©rande non nul\n"
 
-#: elf32-frv.c:3580 elf32-frv.c:3703
+#: elf32-frv.c:3582 elf32-frv.c:3703
 msgid "%H: cannot emit fixups in read-only section\n"
 msgstr "%H: impossible d'apporter des corrections dans une section en lecture seule\n"
 
-#: elf32-frv.c:3611 elf32-frv.c:3746
+#: elf32-frv.c:3612 elf32-frv.c:3745
 msgid "%H: cannot emit dynamic relocations in read-only section\n"
 msgstr "%H: impossible d'Ã©diter les rÃ©adressages dynamiques dans une section en lecture seule\n"
 
-#: elf32-frv.c:3918
+#: elf32-frv.c:3917
 #, c-format
 msgid "%H: reloc against `%s' references a different segment\n"
 msgstr "%H: le rÃ©adressage sur Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  un segment diffÃ©rent\n"
 
-#: elf32-frv.c:4069
+#: elf32-frv.c:4068
 #, c-format
 msgid "%H: reloc against `%s': %s\n"
 msgstr "%H: rÃ©adressage sur Â«Â %sÂ Â»: %s\n"
 
-#: elf32-frv.c:6514
+#: elf32-frv.c:6495
 #, c-format
 msgid "%pB: compiled with %s and linked with modules that use non-pic relocations"
 msgstr "%pB: compilÃ© avec %s et liÃ© avec les modules qui utilisent le rÃ©adressage non PIC"
 
-#: elf32-frv.c:6568 elf32-iq2000.c:832 elf32-m32c.c:876
+#: elf32-frv.c:6549 elf32-iq2000.c:830 elf32-m32c.c:876
 #, c-format
 msgid "%pB: compiled with %s and linked with modules compiled with %s"
 msgstr "%pB: compilÃ© avec %s et liÃ© avec les modules compilÃ©s avec %s"
 
-#: elf32-frv.c:6581
+#: elf32-frv.c:6562
 #, c-format
 msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
 msgstr "%pB: utilise diffÃ©rents champs e_flags (%#x) de ceux des modules prÃ©cÃ©dents (%#x)"
@@ -2300,139 +2389,142 @@ msgstr "%pB: utilise diffÃ©rents champs
 msgid "%pB: relocations in generic ELF (EM: %d)"
 msgstr "%pB: rÃ©adressages en format ELF gÃ©nÃ©rique (EM: %d)"
 
-#: elf32-hppa.c:834 elf32-hppa.c:3511
+#: elf32-hppa.c:763 elf32-hppa.c:844 elf64-ppc.c:11859
+msgid "%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Impossible d'assigner %pA Ã  une section de sortie. RÃ©essayez sans --enable-non-contiguous-regions.\n"
+
+#: elf32-hppa.c:865 elf32-hppa.c:3407
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
 msgstr "%pB(%pA+%#<PRIx64>): ne peut atteindre %s, recompilez avec -ffunction-sections"
 
-#: elf32-hppa.c:1248
+#: elf32-hppa.c:1243
 #, c-format
 msgid "%pB: relocation %s can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: rÃ©adressage de %s ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC"
 
-#: elf32-hppa.c:2688
+#: elf32-hppa.c:2584
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr "%pB: Ã©bauche d'exportation en double %s"
 
-#: elf32-hppa.c:3344
+#: elf32-hppa.c:3240
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared link"
 msgstr "%pB(%pA+%#<PRIx64>): correction %s pour insn %#x n'est pas supportÃ© dans un lien non partagÃ©"
 
-#: elf32-hppa.c:4140
+#: elf32-hppa.c:4036
 #, c-format
 msgid "%s has both normal and TLS relocs"
 msgstr "%s a, Ã  la fois, des rÃ©adressages normaux et TLS"
 
-#: elf32-hppa.c:4158
+#: elf32-hppa.c:4054
 #, c-format
 msgid "%pB:%s has both normal and TLS relocs"
 msgstr "%pB:%s a, Ã  la fois, des rÃ©adressages normaux et TLS"
 
-#: elf32-hppa.c:4217
+#: elf32-hppa.c:4113
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
 msgstr "%pB(%pA+%#<PRIx64>): ne sait pas traiter %s pour %s"
 
-#: elf32-hppa.c:4521
+#: elf32-hppa.c:4417
 msgid ".got section not immediately after .plt section"
 msgstr "section .got pas immÃ©diatement aprÃ¨s la section .plt"
 
-#: elf32-i386.c:1178 elf64-x86-64.c:1377
+#: elf32-i386.c:1169 elf64-x86-64.c:1382
 #, c-format
 msgid "%pB: TLS transition from %s to %s against `%s' at %#<PRIx64> in section `%pA' failed"
 msgstr "%pB: Ã‰chec de la transition TLS de %s vers %s sur Â«Â %sÂ Â» Ã  %#<PRIx64> dans la section Â«Â %pAÂ Â»"
 
-#: elf32-i386.c:1269
+#: elf32-i386.c:1272
 #, c-format
 msgid "%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object"
 msgstr "%pB: le rÃ©adressage GOT direct R_386_GOT32X sur le symbole Â«Â %sÂ Â» sans registre de base ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©"
 
-#: elf32-i386.c:1726 elf32-s390.c:1188 elf32-sh.c:5662 elf32-tilepro.c:1592
-#: elf32-xtensa.c:1203 elf64-s390.c:1120 elfxx-sparc.c:1591
-#: elfxx-tilegx.c:1805
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:451
+#: elf32-i386.c:1721 elf32-s390.c:1153 elf32-sh.c:5494 elf32-tilepro.c:1556
+#: elf32-xtensa.c:1265 elf64-s390.c:1085 elfxx-sparc.c:1555
+#: elfxx-tilegx.c:1769 elfnn-riscv.c:437
 #, c-format
 msgid "%pB: `%s' accessed both as normal and thread local symbol"
 msgstr "%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole normal et comme symbole locale au thread"
 
-#: elf32-i386.c:1798
+#: elf32-i386.c:1793
 #, c-format
 msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
 msgstr "%pB: appel non-PIC non supportÃ© vers IFUNC Â«Â %sÂ Â»"
 
-#: elf32-i386.c:2379 elf64-x86-64.c:2670
+#: elf32-i386.c:2373 elf64-x86-64.c:2721
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
 msgstr "%pB: le rÃ©adressage %s sur le symbole STT_GNU_IFUNC Â«Â %sÂ Â» n'est pas supportÃ©"
 
-#: elf32-i386.c:2412 elf32-i386.c:3660 elf32-i386.c:3801 elf64-x86-64.c:2727
-#: elf64-x86-64.c:4069 elf64-x86-64.c:4225
+#: elf32-i386.c:2406 elf32-i386.c:3654 elf32-i386.c:3795 elf64-x86-64.c:2778
+#: elf64-x86-64.c:4285 elf64-x86-64.c:4441
 #, c-format
 msgid "Local IFUNC function `%s' in %pB\n"
 msgstr "Fonction IFUNC locale Â«Â %sÂ Â» dans %pB\n"
 
-#: elf32-i386.c:2569
+#: elf32-i386.c:2563
 #, c-format
 msgid "%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object"
 msgstr "%pB: le rÃ©adressage GOT direct %s vers Â«Â %sÂ Â» sans registre de base ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©"
 
-#: elf32-i386.c:2604 elf64-x86-64.c:2919
+#: elf32-i386.c:2598 elf64-x86-64.c:2977
 msgid "hidden symbol"
 msgstr "symbole cachÃ©"
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2922
+#: elf32-i386.c:2601 elf64-x86-64.c:2980
 msgid "internal symbol"
 msgstr "symbole interne"
 
-#: elf32-i386.c:2610 elf64-x86-64.c:2925
+#: elf32-i386.c:2604 elf64-x86-64.c:2983
 msgid "protected symbol"
 msgstr "symbole protÃ©gÃ©"
 
-#: elf32-i386.c:2613 elf64-x86-64.c:2928
+#: elf32-i386.c:2607 elf64-x86-64.c:2986
 msgid "symbol"
 msgstr "symbole"
 
-#: elf32-i386.c:2619
+#: elf32-i386.c:2613
 #, c-format
 msgid "%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object"
 msgstr "%pB: rÃ©adressage R_386_GOTOFF sur le symbole %s Â«Â %sÂ Â» non dÃ©fini ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©"
 
 # Â«Â la %s progÃ©tÃ©eÂ Â» a un %s qui est remplacÃ© par le texte non traduit Â«Â functionÂ Â» ou Â«Â dataÂ Â».
 # Heureusement, cette ligne n'existe plus dans le code source actuel, pas besoin de signaler un bug.
-#: elf32-i386.c:2632
+#: elf32-i386.c:2626
 #, c-format
 msgid "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"
 msgstr "%pB: rÃ©adressage R_386_GOTOFF vers la %s protÃ©gÃ©e Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©"
 
-#: elf32-ip2k.c:856 elf32-ip2k.c:862 elf32-ip2k.c:929 elf32-ip2k.c:935
+#: elf32-ip2k.c:855 elf32-ip2k.c:861 elf32-ip2k.c:928 elf32-ip2k.c:934
 msgid "ip2k relaxer: switch table without complete matching relocation information."
 msgstr "relÃ¢che ip2k: table de commutation sans concordance complÃ¨te des informations de rÃ©adressage"
 
-#: elf32-ip2k.c:879 elf32-ip2k.c:962
+#: elf32-ip2k.c:878 elf32-ip2k.c:961
 msgid "ip2k relaxer: switch table header corrupt."
 msgstr "relÃ¢che ip2k: en-tÃªte de table de commutation corrompue"
 
-#: elf32-ip2k.c:1302
+#: elf32-ip2k.c:1297
 #, c-format
 msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr "Ã©diteur de liens ip2k: instruction de page manquante Ã  %#<PRIx64> (cible = %#<PRIx64>)"
 
-#: elf32-ip2k.c:1321
+#: elf32-ip2k.c:1316
 #, c-format
 msgid "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr "Ã©diteur de liens ip2k: instruction de page redondante Ã  %#<PRIx64> (cible = %#<PRIx64>)."
 
-#: elf32-lm32.c:651 elf32-nios2.c:3141
+#: elf32-lm32.c:608 elf32-nios2.c:3148
 msgid "global pointer relative relocation when _gp not defined"
 msgstr "rÃ©adressage relatif au pointeur global sans que _gp ne soit dÃ©fini"
 
-#: elf32-lm32.c:706 elf32-nios2.c:3578
+#: elf32-lm32.c:663 elf32-nios2.c:3585
 msgid "global pointer relative address out of range"
 msgstr "adresse relative du pointeur global hors limites"
 
-#: elf32-lm32.c:1002
+#: elf32-lm32.c:959
 #, c-format
 msgid "internal error: addend should be zero for %s"
 msgstr "erreur interne: opÃ©rande devrait Ãªtre zÃ©ro pour %s"
@@ -2441,136 +2533,141 @@ msgstr "erreur interne: opÃ©rande devrai
 msgid "SDA relocation when _SDA_BASE_ not defined"
 msgstr "rÃ©adressage SDA alors que _SDA_BASE_ n'est pas dÃ©fini"
 
-#: elf32-m32r.c:2984 elf32-microblaze.c:1101 elf32-microblaze.c:1149
+#: elf32-m32r.c:2799 elf32-microblaze.c:1097 elf32-microblaze.c:1145
 #, c-format
 msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)"
 msgstr "%pB: la cible (%s) du rÃ©adressage %s est dans la mauvaise section (%pA)"
 
-#: elf32-m32r.c:3487
+#: elf32-m32r.c:3302
 #, c-format
 msgid "%pB: instruction set mismatch with previous modules"
 msgstr "%pB: jeu d'instructions ne concorde par avec les modules prÃ©cÃ©dents"
 
-#: elf32-m32r.c:3508 elf32-nds32.c:6992
+#: elf32-m32r.c:3323 elf32-nds32.c:6855
 #, c-format
 msgid "private flags = %lx"
 msgstr "fanions privÃ©s = %lx"
 
-#: elf32-m32r.c:3513
+#: elf32-m32r.c:3328
 #, c-format
 msgid ": m32r instructions"
 msgstr ": instructions m32r"
 
-#: elf32-m32r.c:3514
+#: elf32-m32r.c:3329
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": instruction m32rx"
 
-#: elf32-m32r.c:3515
+#: elf32-m32r.c:3330
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": instructions m32r2"
 
-#: elf32-m68hc1x.c:1116
+#: elf32-m68hc1x.c:1136
 #, c-format
 msgid "reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
 msgstr "rÃ©fÃ©rence Ã  un symbole far Â«Â %sÂ Â» utilisant le mauvais rÃ©adressage peut provoquer une exÃ©cution incorrecte"
 
-#: elf32-m68hc1x.c:1150
+#: elf32-m68hc1x.c:1167
 #, c-format
 msgid "XGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code."
 msgstr "l'adresse XGATE (%lx) n'est pas dans la mÃ©moire RAM partagÃ©e (0xE000-0xFFFF), par consÃ©quent, vous devez dÃ©caler l'adresse manuellement, et peut-Ãªtre gÃ©rer la page, dans votre code."
 
-#: elf32-m68hc1x.c:1168
+#: elf32-m68hc1x.c:1183
 #, c-format
 msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)"
 msgstr "banque d'adresses [%lx:%04lx] (%lx) n'es pas dans la mÃªme banque que la banque courante d'adresses [%lx:%04lx] (%lx)"
 
-#: elf32-m68hc1x.c:1184
+#: elf32-m68hc1x.c:1198
 #, c-format
 msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
 msgstr "rÃ©fÃ©rence Ã  une banque d'adresses [%lx:%04lx] dans l'espace normal d'adresses Ã  %04lx"
 
-#: elf32-m68hc1x.c:1225
+#: elf32-m68hc1x.c:1234
 #, c-format
 msgid "S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your code"
 msgstr "l'adresse S12 (%lx) n'est pas dans la mÃ©moire RAM partagÃ©e (0x2000-0x4000), par consÃ©quent, vous devez dÃ©caler l'adresse manuellement dans votre code"
 
-#: elf32-m68hc1x.c:1352
+#: elf32-m68hc1x.c:1358
 #, c-format
 msgid "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
 msgstr "%pB: fichiers liÃ©s compilÃ©s pour des entiers de 16 bits (-mshort) et d'autres pour des entiers de 32 bits"
 
-#: elf32-m68hc1x.c:1359
+#: elf32-m68hc1x.c:1365
 #, c-format
 msgid "%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
 msgstr "%pB: fichiers liÃ©s compilÃ©s pour des doubles de 32 bits (-fshort-double) et d'autres pour des doubles de 64 bits"
 
-#: elf32-m68hc1x.c:1368
+#: elf32-m68hc1x.c:1374
 #, c-format
 msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
 msgstr "%pB: certains fichiers liÃ©s compilÃ©s pour HCS12 avec d'autres compilÃ©s pour HC12"
 
-#: elf32-m68hc1x.c:1413 elf32-xgate.c:497
+#: elf32-m68hc1x.c:1419 elf32-xgate.c:497
 #, c-format
 msgid "[abi=32-bit int, "
 msgstr "[abi=32-bit int, "
 
-#: elf32-m68hc1x.c:1415 elf32-xgate.c:499
+#: elf32-m68hc1x.c:1421 elf32-xgate.c:499
 #, c-format
 msgid "[abi=16-bit int, "
 msgstr "[abi=16-bit int, "
 
-#: elf32-m68hc1x.c:1418 elf32-xgate.c:502
+#: elf32-m68hc1x.c:1424 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
 msgstr "double de 64 bits, "
 
-#: elf32-m68hc1x.c:1420 elf32-xgate.c:504
+#: elf32-m68hc1x.c:1426 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr "double de 32 bits, "
 
-#: elf32-m68hc1x.c:1423
+#: elf32-m68hc1x.c:1429
 #, c-format
 msgid "cpu=HC11]"
 msgstr "cpu=HC11]"
 
-#: elf32-m68hc1x.c:1425
+#: elf32-m68hc1x.c:1431
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "cpu=HCS12]"
 
-#: elf32-m68hc1x.c:1427
+#: elf32-m68hc1x.c:1433
 #, c-format
 msgid "cpu=HC12]"
 msgstr "cpu=HC12]"
 
-#: elf32-m68hc1x.c:1430
+#: elf32-m68hc1x.c:1436
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [memory=bank-model]"
 
-#: elf32-m68hc1x.c:1432
+#: elf32-m68hc1x.c:1438
 #, c-format
 msgid " [memory=flat]"
 msgstr " [memory=flat]"
 
-#: elf32-m68hc1x.c:1435
+#: elf32-m68hc1x.c:1441
 #, c-format
 msgid " [XGATE RAM offsetting]"
 msgstr " [dÃ©calage RAM XGATE]"
 
-#: elf32-m68k.c:1216 elf32-m68k.c:1217 vms-alpha.c:7484 vms-alpha.c:7500
+#: elf32-m68k.c:1159 elf32-m68k.c:1167 elf32-ppc.c:3583 elf32-ppc.c:3591
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr "%pB utilise la virgule flottante matÃ©rielle, %pB utilise la virgule flottante logicielle"
+
+#: elf32-m68k.c:1282 elf32-m68k.c:1283 vms-alpha.c:7664 vms-alpha.c:7680
 msgid "unknown"
 msgstr "inconnu"
 
-#: elf32-m68k.c:1660
+#: elf32-m68k.c:1733
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
 msgstr "%pB: dÃ©bordement GOT: nombre de rÃ©adressages avec des offsets de 8 bits > %d"
 
-#: elf32-m68k.c:1667
+#: elf32-m68k.c:1740
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
 msgstr "%pB: dÃ©bordement GOT: nombre de rÃ©adressages avec des offsets de 8 ou 16 bits > %d"
@@ -2601,18 +2698,18 @@ msgstr "%pB et %pB sont pour des configu
 msgid "private flags = 0x%lx"
 msgstr "fanions privÃ©s = 0x%lx"
 
-#: elf32-metag.c:1863
+#: elf32-metag.c:1859
 #, c-format
 msgid "%pB(%pA): multiple TLS models are not supported"
 msgstr "%pB(%pA): l'utilisation de plusieurs modÃ¨les TLS n'est pas supportÃ©"
 
-#: elf32-metag.c:1866
+#: elf32-metag.c:1862
 #, c-format
 msgid "%pB(%pA): shared library symbol %s encountered whilst performing a static link"
 msgstr "%pB(%pA): symbole de bibliothÃ¨que partagÃ©e %s rencontrÃ© en rÃ©alisant une Ã©dition de liens statiques"
 
-#: elf32-microblaze.c:1544 elf32-tilepro.c:3155 elfxx-sparc.c:3538
-#: elfxx-tilegx.c:3543
+#: elf32-microblaze.c:1540 elf32-tilepro.c:3029 elfxx-sparc.c:3427
+#: elfxx-tilegx.c:3417
 #, c-format
 msgid "%pB: probably compiled without -fPIC?"
 msgstr "%pB: probablement compilÃ© sans -fPICÂ ?"
@@ -2626,320 +2723,315 @@ msgstr "rÃ©adressage littÃ©ral rencontrÃ
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr "rÃ©adressage relatif gp 32bits rencontrÃ© pour un symbole externe"
 
-#: elf32-msp430.c:837 elf32-msp430.c:1151
+#: elf32-msp430.c:846 elf32-msp430.c:1160
 msgid "try enabling relaxation to avoid relocation truncations"
 msgstr "essayez d'activer la relaxation pour Ã©viter des rÃ©adressages tronquÃ©s"
 
-#: elf32-msp430.c:1358
+#: elf32-msp430.c:1367
 msgid "internal error: branch/jump to an odd address detected"
 msgstr "erreur interne: branchement/saut vers une adresse impaire dÃ©tectÃ©"
 
-#: elf32-msp430.c:2357
+#: elf32-msp430.c:2532
 #, c-format
 msgid "warning: %pB: unknown MSPABI object attribute %d"
 msgstr "attention: %pB: attribut d'objet MSPABI %d inconnu"
 
-#: elf32-msp430.c:2456
+#: elf32-msp430.c:2633
 #, c-format
 msgid "error: %pB uses %s instructions but %pB uses %s"
 msgstr "erreur: %pB utilise les instructions %s alors que %pB utilise %s"
 
-#: elf32-msp430.c:2468
+#: elf32-msp430.c:2645
 #, c-format
 msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
 msgstr "erreur: %pB utilise le modÃ¨le de code %s alors que %pB utilise le modÃ¨le de code %s"
 
-#: elf32-msp430.c:2480
+#: elf32-msp430.c:2658
 #, c-format
 msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
 msgstr "erreur: %pB utilise le grand modÃ¨le de code alors que %pB utilise les instructions MSP430"
 
-#: elf32-msp430.c:2491
+#: elf32-msp430.c:2669
 #, c-format
 msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
 msgstr "erreur: %pB utilise le modÃ¨le de donnÃ©es %s alors que %pB utilise le modÃ¨le de donnÃ©es %s"
 
-#: elf32-msp430.c:2503
+#: elf32-msp430.c:2682
 #, c-format
 msgid "error: %pB uses the small code model but %pB uses the %s data model"
 msgstr "erreur: %pB utilise le petit modÃ¨le de code alors que %pB utilise le modÃ¨le de donnÃ©es %s"
 
-#: elf32-msp430.c:2515
+#: elf32-msp430.c:2694
 #, c-format
 msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
 msgstr "erreur: %pB utilise le modÃ¨le de donnÃ©es %s alors que %pB utilise uniquement des instructions MSP430"
 
-#: elf32-nds32.c:3624
+#: elf32-msp430.c:2719
 #, c-format
-msgid "error: can't find symbol: %s"
-msgstr "erreur: le symbole ne peut Ãªtre trouvÃ©: %s"
+msgid "error: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memory"
+msgstr "erreur: %pB peut utiliser la rÃ©gion haute pour les donnÃ©es mais %pB suppose que les donnÃ©es sont exclusivement en mÃ©moire basse"
 
-#: elf32-nds32.c:5639
+#: elf32-nds32.c:3625
 #, c-format
-msgid "%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC"
-msgstr "%pB: rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC"
+msgid "error: can't find symbol: %s"
+msgstr "erreur: le symbole ne peut Ãªtre trouvÃ©: %s"
 
-#: elf32-nds32.c:5669
+#: elf32-nds32.c:5528
 #, c-format
 msgid "%pB: warning: %s unsupported in shared mode"
 msgstr "%pB: attention: %s non supportÃ© en mode partagÃ©"
 
-#: elf32-nds32.c:5795
+#: elf32-nds32.c:5654
 #, c-format
 msgid "%pB: warning: unaligned access to GOT entry"
 msgstr "%pB: attention: accÃ¨s non alignÃ© Ã  une entrÃ©e GOT"
 
-#: elf32-nds32.c:5836
+#: elf32-nds32.c:5695
 #, c-format
 msgid "%pB: warning: relocate SDA_BASE failed"
 msgstr "%pB: attention: rÃ©adressage SDA_BASE a Ã©chouÃ©"
 
-#: elf32-nds32.c:5858
+#: elf32-nds32.c:5717
 #, c-format
 msgid "%pB(%pA): warning: unaligned small data access of type %d"
 msgstr "%pB(%pA): attention: accÃ¨s non alignÃ© Ã  une petite donnÃ©e de type %d"
 
-#: elf32-nds32.c:6784
+#: elf32-nds32.c:6643
 #, c-format
 msgid "%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
 msgstr "%pB: Taille de vecteur ISR en dÃ©saccord avec les modules prÃ©cÃ©dents: prÃ©cÃ©dent a %u octets; actuel a %u octets"
 
-#: elf32-nds32.c:6828
+#: elf32-nds32.c:6691
 #, c-format
 msgid "%pB: warning: endian mismatch with previous modules"
 msgstr "%pB: attention: l'ordre des octets n'est pas le mÃªme que dans les modules prÃ©cÃ©dents"
 
-#: elf32-nds32.c:6842
+#: elf32-nds32.c:6705
 #, c-format
 msgid "%pB: warning: older version of object file encountered, please recompile with current tool chain"
 msgstr "%pB: attention: version plus ancienne du fichier objet rencontrÃ©e. Veuillez recompiler avec la chaÃ®ne d'outils actuelle"
 
-#: elf32-nds32.c:6930
+#: elf32-nds32.c:6793
 #, c-format
 msgid "%pB: error: ABI mismatch with previous modules"
 msgstr "%pB: erreur: non concordance de l'ABI avec les modules prÃ©cÃ©dents"
 
-#: elf32-nds32.c:6940
+#: elf32-nds32.c:6803
 #, c-format
 msgid "%pB: error: instruction set mismatch with previous modules"
 msgstr "%pB: erreur: le jeu d'instructions ne concorde par avec les modules prÃ©cÃ©dents"
 
-#: elf32-nds32.c:6967
+#: elf32-nds32.c:6830
 #, c-format
 msgid "%pB: warning: incompatible elf-versions %s and %s"
 msgstr "%pB: attention: versions elf %s et %s non compatibles"
 
-#: elf32-nds32.c:6998
+#: elf32-nds32.c:6861
 #, c-format
 msgid ": n1 instructions"
 msgstr ": instructions n1"
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:6864
 #, c-format
 msgid ": n1h instructions"
 msgstr ": instructions n1h"
 
-#: elf32-nds32.c:9462
+#: elf32-nds32.c:9316
 #, c-format
 msgid "%pB: error: search_nds32_elf_blank reports wrong node"
 msgstr "%pB: erreur: search_nds32_elf_blank rapporte le mauvais nÅ“ud"
 
-#: elf32-nds32.c:9722
+#: elf32-nds32.c:9576
 #, c-format
 msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
 msgstr "%pB: attention: %s pointe vers le rÃ©adressage non reconnu Ã  %#<PRIx64>"
 
-#: elf32-nds32.c:12975
+#: elf32-nds32.c:12839
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
 msgstr "%pB: OMIT_FP imbriquÃ©s dans %pA"
 
-#: elf32-nds32.c:12994
+#: elf32-nds32.c:12858
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
 msgstr "%pB: OMIT_FP non appariÃ© dans %pA"
 
-#: elf32-nds32.c:13275 reloc.c:8410
+#: elf32-nds32.c:13140 reloc.c:8470
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
 msgstr "%X%P: %pB(%pA): rÃ©adressage Â«Â %pRÂ Â» va en dehors des limites\n"
 
-#: elf32-nios2.c:2930
+#: elf32-nios2.c:2937
 #, c-format
 msgid "error: %pB: big-endian R2 is not supported"
 msgstr "erreur: %pB: R2 gros boutiste n'est pas supportÃ©"
 
-#: elf32-nios2.c:3822
+#: elf32-nios2.c:3829
 #, c-format
-msgid "global pointer relative relocation at address 0x%08x when _gp not defined\n"
-msgstr "rÃ©adressage relatif au pointeur global Ã  l'adresse 0x%08x sans que _gp ne soit dÃ©fini\n"
+msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+msgstr "rÃ©adressage relatif au pointeur global Ã  l'adresse %#<PRIx64> sans que _gp ne soit dÃ©fini\n"
 
-#: elf32-nios2.c:3842
+#: elf32-nios2.c:3859
 #, c-format
-msgid "unable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because the offset (%d) is out of the allowed range, -32678 to 32767\n"
-msgstr "impossible d'atteindre %s (Ã  0x%08x) depuis le pointeur global (Ã  0x%08x) car l'offset (%d) est en dehors de la plage autorisÃ©e -32768 Ã  32767.\n"
+msgid "unable to reach %s (at %#<PRIx64>) from the global pointer (at %#<PRIx64>) because the offset (%<PRId64>) is out of the allowed range, -32678 to 32767\n"
+msgstr "impossible d'atteindre %s (Ã  %#<PRIx64>) depuis le pointeur global (Ã  %#<PRIx64>) car l'offset (%<PRId64>) est en dehors de la plage autorisÃ©e -32768 Ã  32767.\n"
 
-#: elf32-nios2.c:4495 elf32-pru.c:928
+#: elf32-nios2.c:4514 elf32-pru.c:931
 msgid "relocation out of range"
 msgstr "rÃ©adressage hors limite"
 
-#: elf32-nios2.c:4505 elf32-pru.c:938 elf32-tic6x.c:2716
+#: elf32-nios2.c:4524 elf32-pru.c:941 elf32-tic6x.c:2657
 msgid "dangerous relocation"
 msgstr "rÃ©adressage dangereux"
 
-#: elf32-nios2.c:5378
+#: elf32-nios2.c:5367
 #, c-format
 msgid "dynamic variable `%s' is zero size"
 msgstr "la variable dynamique Â«Â %sÂ Â» a une taille nulle"
 
-#: elf32-or1k.c:1177
+#: elf32-or1k.c:1210
 #, c-format
 msgid "%pB: Cannot handle relocation value size of %d"
 msgstr "%pB: Impossible de gÃ©rer une taille de valeur de rÃ©adressage de %d"
 
-#: elf32-or1k.c:1286
+#: elf32-or1k.c:1317
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr "%pB: type de rÃ©adressage %d inconnu"
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1371
 #, c-format
 msgid "%pB: addend should be zero for plt relocations"
 msgstr "%pB: l'opÃ©rande devrait Ãªtre zÃ©ro pour des rÃ©adressages plt"
 
-#: elf32-or1k.c:1445
+#: elf32-or1k.c:1476
 #, c-format
 msgid "%pB: addend should be zero for got relocations"
 msgstr "%pB: l'opÃ©rande devrait Ãªtre zÃ©ro pour des rÃ©adressages got"
 
-#: elf32-or1k.c:1462
+#: elf32-or1k.c:1493
 #, c-format
 msgid "%pB: gotoff relocation against dynamic symbol %s"
 msgstr "%pB: rÃ©adressage gotoff vers le symbole dynamique %s"
 
-#: elf32-or1k.c:1479 elf64-alpha.c:4455 elf64-alpha.c:4599
+#: elf32-or1k.c:1510 elf64-alpha.c:4421 elf64-alpha.c:4565
 #, c-format
 msgid "%pB: pc-relative relocation against dynamic symbol %s"
 msgstr "%pB: rÃ©adressage relatif au PC vers le symbole dynamique %s"
 
-#: elf32-or1k.c:1493
+#: elf32-or1k.c:1524
 #, c-format
 msgid "%pB: non-pic relocation against symbol %s"
 msgstr "%pB: rÃ©adressage non-pic vers le symbole dynamique %s"
 
-#: elf32-or1k.c:1577
+#: elf32-or1k.c:1608
 #, c-format
 msgid "%pB: support for local dynamic not implemented"
 msgstr "%pB: support pour les dynamiques locaux pas implÃ©mentÃ©e"
 
-#: elf32-or1k.c:1729
+#: elf32-or1k.c:1787
 #, c-format
 msgid "%pB: will not resolve runtime TLS relocation"
 msgstr "%pB: le rÃ©adressage TLS ne sera pas rÃ©solu Ã  l'exÃ©cution"
 
-#: elf32-or1k.c:2074
+#: elf32-or1k.c:2120
 #, c-format
 msgid "%pB: bad relocation section name `%s'"
 msgstr "%pB: nom de section de rÃ©adressage erronÃ© Â«Â %sÂ Â»"
 
-#: elf32-or1k.c:3218
+#: elf32-or1k.c:3181
 #, c-format
 msgid "%pB: %s flag mismatch with previous modules"
 msgstr "%pB: dÃ©saccord du fanion %s avec les modules prÃ©cÃ©dents"
 
-#: elf32-ppc.c:986
+#: elf32-ppc.c:989
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr "liaison gÃ©nÃ©rique ne peut traiter %s"
 
-#: elf32-ppc.c:1617
+#: elf32-ppc.c:1628
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr "section %s corrompue dans %pB"
 
-#: elf32-ppc.c:1637
+#: elf32-ppc.c:1647
 #, c-format
 msgid "unable to read in %s section from %pB"
 msgstr "incapable de lire dans la section %s Ã  partir de %pB"
 
-#: elf32-ppc.c:1679
+#: elf32-ppc.c:1689
 #, c-format
 msgid "warning: unable to set size of %s section in %pB"
 msgstr "attention: incapable d'initialiser la taille de la section %s dans %pB"
 
-#: elf32-ppc.c:1729
+#: elf32-ppc.c:1738
 msgid "failed to allocate space for new APUinfo section"
 msgstr "Ã©chec d'allocation d'espace pour une nouvelle section APUinfo"
 
-#: elf32-ppc.c:1748
+#: elf32-ppc.c:1757
 msgid "failed to compute new APUinfo section"
 msgstr "Ã©chec d'Ã©valuation de la nouvelle section APUinfo"
 
-#: elf32-ppc.c:1751
+#: elf32-ppc.c:1760
 msgid "failed to install new APUinfo section"
 msgstr "Ã©chec d'installation de la nouvelle section APUinfo"
 
-#: elf32-ppc.c:2853
+#: elf32-ppc.c:2861
 #, c-format
 msgid "%pB: relocation %s cannot be used when making a shared object"
 msgstr "%pB: rÃ©adressage %s ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©"
 
-#: elf32-ppc.c:3587 elf32-ppc.c:3595
-#, c-format
-msgid "%pB uses hard float, %pB uses soft float"
-msgstr "%pB utilise la virgule flottante matÃ©rielle, %pB utilise la virgule flottante logicielle"
-
-#: elf32-ppc.c:3603 elf32-ppc.c:3611
+#: elf32-ppc.c:3599 elf32-ppc.c:3607
 #, c-format
 msgid "%pB uses double-precision hard float, %pB uses single-precision hard float"
 msgstr "%pB utilise la virgule flottante double prÃ©cision matÃ©rielle, %pB utilise la virgule flottante simple prÃ©cision matÃ©rielle"
 
-#: elf32-ppc.c:3630 elf32-ppc.c:3638
+#: elf32-ppc.c:3629 elf32-ppc.c:3637
 #, c-format
 msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
 msgstr "%pB utilise un double long 64 bits, %pB utilise un double long de 128 bits"
 
-#: elf32-ppc.c:3646 elf32-ppc.c:3654
+#: elf32-ppc.c:3645 elf32-ppc.c:3653
 #, c-format
 msgid "%pB uses IBM long double, %pB uses IEEE long double"
 msgstr "%pB utilise un double long IBM, %pB utilise un double long IEEE"
 
-#: elf32-ppc.c:3721 elf32-ppc.c:3730
+#: elf32-ppc.c:3720 elf32-ppc.c:3729
 #, c-format
 msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
 msgstr "%pB utilise l'ABI de vecteurs AltiVec, %pB utilise l'ABI de vecteurs SPE"
 
-#: elf32-ppc.c:3759 elf32-ppc.c:3768
+#: elf32-ppc.c:3758 elf32-ppc.c:3767
 #, c-format
 msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
 msgstr "%pB utilise r3/r4 pour les retours de petites structures, %pB utilise la mÃ©moire"
 
-#: elf32-ppc.c:3829
+#: elf32-ppc.c:3831
 #, c-format
 msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
 msgstr "%pB: compilÃ© avec -mrelocatable et fait l'Ã©dition de lien avec les modules compilÃ©s normalement"
 
-#: elf32-ppc.c:3837
+#: elf32-ppc.c:3839
 #, c-format
 msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
 msgstr "%pB: compilÃ© normalement et fait l'Ã©dition de lien avec les modules compilÃ©s avec -mrelocatable"
 
-#: elf32-ppc.c:3906
+#: elf32-ppc.c:3908
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
 msgstr "%pB(%pA+0x%lx): rÃ©adressage du style 16A attendu sur l'insn 0x%08x"
 
-#: elf32-ppc.c:3925
+#: elf32-ppc.c:3927
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
 msgstr "%pB(%pA+0x%lx): rÃ©adressage du style 16D attendu sur l'insn 0x%08x"
 
-#: elf32-ppc.c:4028
+#: elf32-ppc.c:4030
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr "bss-plt forcÃ© Ã  cause de %pB"
 
-#: elf32-ppc.c:4030
+#: elf32-ppc.c:4032
 msgid "bss-plt forced by profiling"
 msgstr "bss-plt forcÃ© par le profilage"
 
@@ -2947,40 +3039,40 @@ msgstr "bss-plt forcÃ© par le profilage"
 #. could just mark this symbol to exclude it
 #. from tls optimization but it's safer to skip
 #. the entire optimization.
-#: elf32-ppc.c:4606 elf64-ppc.c:7724
+#: elf32-ppc.c:4606 elf64-ppc.c:8252
 #, c-format
 msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
 msgstr "%H l'argument a perdu __tls_get_addr, optimisation TLS dÃ©sactivÃ©e\n"
 
-#: elf32-ppc.c:5577 elf32-sh.c:3078 elf32-tilepro.c:2339 elfxx-sparc.c:2534
-#: elfxx-tilegx.c:2579
+#: elf32-ppc.c:5513 elf32-sh.c:3023 elf32-tilepro.c:2256 elfxx-sparc.c:2453
+#: elfxx-tilegx.c:2496
 #, c-format
 msgid "%pB: dynamic relocation in read-only section `%pA'\n"
 msgstr "%pB: rÃ©adressage dynamique dans une section en lecture seule Â«Â %pAÂ Â»\n"
 
-#: elf32-ppc.c:7457
+#: elf32-ppc.c:7356
 msgid "%P: %H: error: %s with unexpected instruction %x\n"
 msgstr "%P: %H: erreur: %s avec l'instruction inattendue %x\n"
 
-#: elf32-ppc.c:7494
+#: elf32-ppc.c:7393
 msgid "%H: fixup branch overflow\n"
 msgstr "%H: dÃ©bordement du branchement de correction\n"
 
-#: elf32-ppc.c:7534 elf32-ppc.c:7570
+#: elf32-ppc.c:7433 elf32-ppc.c:7469
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr "%pB(%pA+%#<PRIx64>): erreur: %s avec l'instruction inattendue %#x"
 
-#: elf32-ppc.c:7634
+#: elf32-ppc.c:7533
 #, c-format
 msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
 msgstr "%X%H: bss-plt -fPIC ifunc %s non supportÃ©\n"
 
-#: elf32-ppc.c:7673 elf64-ppc.c:15220
+#: elf32-ppc.c:7572 elf64-ppc.c:16848
 msgid "%H: warning: %s unexpected insn %#x.\n"
 msgstr "%H: attention: %s insn %#x inattendue.\n"
 
-#: elf32-ppc.c:7985
+#: elf32-ppc.c:7881
 #, c-format
 msgid "%H: non-zero addend on %s reloc against `%s'\n"
 msgstr "%H: opÃ©rande non nul sur le rÃ©adressage %s par rapport Ã  Â«Â %sÂ Â»\n"
@@ -2993,54 +3085,54 @@ msgstr "%H: opÃ©rande non nul sur le rÃ©
 #. local won't have the +32k reloc addend trick marking
 #. -fPIC code, so the linker won't know whether r30 is
 #. _GLOBAL_OFFSET_TABLE_ or pointing into a .got2 section.
-#: elf32-ppc.c:8017
+#: elf32-ppc.c:7913
 #, c-format
 msgid "%X%H: @local call to ifunc %s\n"
 msgstr "%X%H: appel @local Ã  ifunc %s\n"
 
-#: elf32-ppc.c:8187
+#: elf32-ppc.c:8091
 #, c-format
 msgid "%H: relocation %s for indirect function %s unsupported\n"
 msgstr "%H: rÃ©adressage %s non supportÃ© pour la fonction indirecte %s\n"
 
-#: elf32-ppc.c:8515 elf32-ppc.c:8546 elf32-ppc.c:8637 elf32-ppc.c:8725
+#: elf32-ppc.c:8425 elf32-ppc.c:8456 elf32-ppc.c:8547 elf32-ppc.c:8643
 #, c-format
 msgid "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
 msgstr "%pB: la cible (%s) d'un rÃ©adressage %s est dans la mauvaise section de sortie (%s)"
 
-#: elf32-ppc.c:8855 elf32-ppc.c:8873
-msgid "%P: %H: %s relocation unsupported for bss-plt\n"
-msgstr "%P: %H: le rÃ©adressage %s n'est pas supportÃ© pour bss-plt\n"
+#: elf32-ppc.c:8773 elf32-ppc.c:8791
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
+msgstr "%X%P: %H: le rÃ©adressage %s n'est pas supportÃ© pour bss-plt\n"
 
-#: elf32-ppc.c:8954
+#: elf32-ppc.c:8872
 #, c-format
 msgid "%H: error: %s against `%s' not a multiple of %u\n"
 msgstr "%H: erreur: %s par rapport Ã  Â«Â %sÂ Â» n'est pas un multiple de %u\n"
 
-#: elf32-ppc.c:8983
+#: elf32-ppc.c:8901
 #, c-format
 msgid "%H: unresolvable %s relocation against symbol `%s'\n"
 msgstr "%H: rÃ©adressage %s sans solution par rapport au symbole Â«Â %sÂ Â»\n"
 
-#: elf32-ppc.c:9064
+#: elf32-ppc.c:8982
 #, c-format
 msgid "%H: %s reloc against `%s': error %d\n"
 msgstr "%H: rÃ©adressage %s vers Â«Â %sÂ Â»: erreur %d\n"
 
-#: elf32-ppc.c:9959 elf64-ppc.c:15715
+#: elf32-ppc.c:9872
 msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n"
 msgstr "%X%P: les rÃ©adressages de textes et les fonctions indirectes GNU rÃ©sulteront en un crash Ã  l'exÃ©cution\n"
 
-#: elf32-ppc.c:9963 elf64-ppc.c:15719
+#: elf32-ppc.c:9876 elf64-ppc.c:17398
 msgid "%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime\n"
 msgstr "%P: attention: les rÃ©adressages de textes et les fonctions indirectes GNU pourraient rÃ©sulter en un crash Ã  l'exÃ©cution\n"
 
-#: elf32-ppc.c:10008
+#: elf32-ppc.c:9921
 #, c-format
 msgid "%s not defined in linker created %pA"
 msgstr "%s pas dÃ©fini dans %pA crÃ©Ã© par l'Ã©diteur de liens"
 
-#: elf32-pru.c:579 elf32-pru.c:1472
+#: elf32-pru.c:582 elf32-pru.c:1475
 #, c-format
 msgid "error: %pB: old incompatible object file detected"
 msgstr "erreur: %pB: ancien fichier objet incompatible dÃ©tectÃ©"
@@ -3057,7 +3149,7 @@ msgstr "erreur interne: dÃ©bordement par
 msgid "warning: RL78_SYM reloc with an unknown symbol"
 msgstr "attention: rÃ©adressage RL78_SYM avec un symbole inconnu"
 
-#: elf32-rl78.c:1084 elf32-rx.c:1456
+#: elf32-rl78.c:1084 elf32-rx.c:1461
 #, c-format
 msgid "%pB(%pA): error: call to undefined function '%s'"
 msgstr "%pB(%pA): erreur: appel Ã  la fonction non dÃ©finie Â«Â %sÂ Â»"
@@ -3087,17 +3179,17 @@ msgstr "- %pB est 64 bits, %pB ne l'est
 msgid " [64-bit doubles]"
 msgstr " [doubles de 64 bits]"
 
-#: elf32-rx.c:605
+#: elf32-rx.c:607
 #, c-format
 msgid "%pB:%pA: table entry %s outside table"
 msgstr "%pB:%pA: l'entrÃ©e %s de la table est en dehors de la table"
 
-#: elf32-rx.c:612
+#: elf32-rx.c:614
 #, c-format
 msgid "%pB:%pA: table entry %s not word-aligned within table"
 msgstr "%pB:%pA: l'entrÃ©e %s de la table n'est pas alignÃ©e sur un mot dans la table"
 
-#: elf32-rx.c:684
+#: elf32-rx.c:689
 #, c-format
 msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
 msgstr "%pB:%pA: attention: rÃ©adressage %s Red Hat rÃ©prouvÃ©e dÃ©tectÃ© sur: %s"
@@ -3106,59 +3198,59 @@ msgstr "%pB:%pA: attention: rÃ©adressage
 #. an absolute address is being computed.  There are special cases
 #. for relocs against symbols that are known to be referenced in
 #. crt0.o before the PID base address register has been initialised.
-#: elf32-rx.c:704
+#: elf32-rx.c:709
 #, c-format
 msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
 msgstr "%pB(%pA): rÃ©adressage PID %s non sÃ»r Ã  %<PRIx64> (sur %s dans %s)"
 
-#: elf32-rx.c:1288
+#: elf32-rx.c:1293
 msgid "warning: RX_SYM reloc with an unknown symbol"
 msgstr "attention: rÃ©adressage RX_SYM avec un symbole inconnu"
 
-#: elf32-rx.c:3167
+#: elf32-rx.c:3173
 #, c-format
 msgid "there is a conflict merging the ELF header flags from %pB"
 msgstr "il y a un conflit en fusionnant les fanions d'en-tÃªtes ELF de %pB"
 
-#: elf32-rx.c:3170
+#: elf32-rx.c:3176
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr "  les fanions du fichier d'entrÃ©e: %s"
 
-#: elf32-rx.c:3172
+#: elf32-rx.c:3178
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr "  les fanions du fichier de sortie: %s"
 
-#: elf32-rx.c:3792
+#: elf32-rx.c:3784
 #, c-format
 msgid "%pB:%pA: table %s missing corresponding %s"
 msgstr "%pB:%pA: la table %s n'a pas de %s correspondant"
 
-#: elf32-rx.c:3800
+#: elf32-rx.c:3792
 #, c-format
 msgid "%pB:%pA: %s and %s must be in the same input section"
 msgstr "%pB:%pA: %s et %s doivent Ãªtre dans la mÃªme section d'entrÃ©e"
 
-#: elf32-s390.c:2140 elf64-s390.c:2095
+#: elf32-s390.c:2011 elf64-s390.c:1965
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
 msgstr "%pB(%pA+%#<PRIx64>): instruction invalide pour le rÃ©adressage TLS %s"
 
-#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3754
+#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3800
 msgid "not enough GOT space for local GOT entries"
 msgstr "pas suffisamment d'espace GOT pour les entrÃ©es locales GOT"
 
-#: elf32-score.c:2746
+#: elf32-score.c:2747
 msgid "address not word aligned"
 msgstr "adresse pas alignÃ©e sur un mot"
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2828 elf32-score7.c:2633
 #, c-format
 msgid "%pB: malformed reloc detected for section %pA"
 msgstr "%pB: rÃ©adressage mal composÃ© dÃ©tectÃ© dans la section %pA"
 
-#: elf32-score.c:2881 elf32-score7.c:2686
+#: elf32-score.c:2882 elf32-score7.c:2687
 #, c-format
 msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: appel CALL15 de rÃ©adressage Ã  %#<PRIx64> n'est pas appliquÃ© sur un symbole global"
@@ -3173,7 +3265,7 @@ msgstr " [pic]"
 msgid " [fix dep]"
 msgstr " [fix dep]"
 
-#: elf32-score.c:4050 elf32-score7.c:3855
+#: elf32-score.c:4054 elf32-score7.c:3859
 #, c-format
 msgid "%pB: warning: linking PIC files with non-PIC files"
 msgstr "%pB: attention: Ã©dition de liens des fichiers PIC avec des fichiers non PIC"
@@ -3183,153 +3275,149 @@ msgstr "%pB: attention: Ã©dition de lien
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
 msgstr "%pB: %#<PRIx64>: attention: R_SH_USES pointe vers un insn inconnu 0x%x"
 
-#: elf32-sh.c:3633
-msgid "unexpected STO_SH5_ISA32 on local symbol is not handled"
-msgstr "STO_SH5_ISA32 inattendu sur le symbole local n'est pas traitÃ©"
-
-#: elf32-sh.c:3880
+#: elf32-sh.c:3758
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
 msgstr "%pB: %#<PRIx64>: fatal: cible de branchement non alignÃ©e pour un rÃ©adressage de type relax-support"
 
-#: elf32-sh.c:3910 elf32-sh.c:3926
+#: elf32-sh.c:3788 elf32-sh.c:3804
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: fatal: rÃ©adressage %s non alignÃ© %#<PRIx64>"
 
-#: elf32-sh.c:3942
+#: elf32-sh.c:3820
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
 msgstr "%pB: %#<PRIx64>: fatal: rÃ©adressage R_SH_PSHA %<PRId64> pas dans l'intervalle -32..32"
 
-#: elf32-sh.c:3958
+#: elf32-sh.c:3836
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
 msgstr "%pB: %#<PRIx64>: fatal: rÃ©adressage R_SH_PSHL %<PRId64> n'est pas dans l'intervalle -32..32"
 
-#: elf32-sh.c:4088 elf32-sh.c:4483
+#: elf32-sh.c:3966 elf32-sh.c:4361
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
 msgstr "%pB(%pA+%#<PRIx64>): impossible d'apporter des corrections Ã  Â«Â %sÂ Â» dans une section en lecture seule"
 
-#: elf32-sh.c:4586
+#: elf32-sh.c:4464
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
 msgstr "%pB(%pA+%#<PRIx64>): %s rÃ©adressage vers le symbole externe Â«Â %sÂ Â»"
 
-#: elf32-sh.c:4705
+#: elf32-sh.c:4583
 #, c-format
 msgid "%pB(%pA): offset in relocation for GD->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): le dÃ©calage dans le rÃ©adressage de la traduction GD->LE est trop petit: %#<PRIx64>"
 
 #. The backslash is to prevent bogus trigraph detection.
-#: elf32-sh.c:4723
+#: elf32-sh.c:4601
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %#04X inattendue (0xd4?? attendue)"
 
-#: elf32-sh.c:4731
+#: elf32-sh.c:4609
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %#04X inattendue (0xc7?? attendue)"
 
-#: elf32-sh.c:4738
+#: elf32-sh.c:4616
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %#04X inattendue (0xd1?? attendue)"
 
-#: elf32-sh.c:4745
+#: elf32-sh.c:4623
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %#04X inattendue (0x310c attendue)"
 
-#: elf32-sh.c:4752
+#: elf32-sh.c:4630
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %#04X inattendue (0x410b attendue)"
 
-#: elf32-sh.c:4759
+#: elf32-sh.c:4637
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %#04X inattendue (0x34cc attendue)"
 
-#: elf32-sh.c:4794
+#: elf32-sh.c:4672
 #, c-format
 msgid "%pB(%pA): offset in relocation for IE->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): le dÃ©calage dans le rÃ©adressage pour la traduction IE->LE est trop petit: %#<PRIx64>"
 
-#: elf32-sh.c:4812
+#: elf32-sh.c:4690
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %#04X inattendue (0xd0?? attendue: mov.l)"
 
-#: elf32-sh.c:4821
+#: elf32-sh.c:4699
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %#04X inattendue (0x0?12 attendue: stc)"
 
-#: elf32-sh.c:4828
+#: elf32-sh.c:4706
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
 msgstr "%pB(%pA+%#<PRIx64>): instruction %#04X inattendue (0x0?ce attendu: mov.l)"
 
-#: elf32-sh.c:4943
+#: elf32-sh.c:4821
 #, c-format
 msgid "%pB(%pA): offset in relocation for GD->IE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): le dÃ©calage dans le rÃ©adressage pour la traduction GD->IE est trop petit: %#<PRIx64>"
 
-#: elf32-sh.c:5011
+#: elf32-sh.c:4889
 #, c-format
 msgid "%pB(%pA): offset in relocation for LD->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): le dÃ©calage dans le rÃ©adressage pour la traduction LD->LE est trop petit: %#<PRIx64>"
 
-#: elf32-sh.c:5139
+#: elf32-sh.c:5017
 #, c-format
 msgid "%X%C: relocation to \"%s\" references a different segment\n"
 msgstr "%X%C: le rÃ©adressage vers Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  un segment diffÃ©rent\n"
 
-#: elf32-sh.c:5146
+#: elf32-sh.c:5024
 #, c-format
 msgid "%C: warning: relocation to \"%s\" references a different segment\n"
 msgstr "%C: attention: rÃ©adressage vers Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  un segment diffÃ©rent\n"
 
-#: elf32-sh.c:5651 elf32-sh.c:5733
+#: elf32-sh.c:5483 elf32-sh.c:5565
 #, c-format
 msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
 msgstr "%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole normal et comme symbole FDPIC"
 
-#: elf32-sh.c:5657 elf32-sh.c:5738
+#: elf32-sh.c:5489 elf32-sh.c:5570
 #, c-format
 msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
 msgstr "%pB: Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme symbole FDPIC et comme symbole local au thread"
 
-#: elf32-sh.c:5688
+#: elf32-sh.c:5520
 #, c-format
 msgid "%pB: Function descriptor relocation with non-zero addend"
 msgstr "%pB: Descripteur de fonction rÃ©adressÃ© avec un opÃ©rande non nul"
 
-#: elf32-sh.c:5895 elf64-alpha.c:4691
+#: elf32-sh.c:5727 elf64-alpha.c:4657
 #, c-format
 msgid "%pB: TLS local exec code cannot be linked into shared objects"
 msgstr "%pB: code exÃ©cutable local TLS ne peut Ãªtre liÃ© en objets partagÃ©s"
 
 # %s sont Â«Â dspÂ Â» ou Â«Â floating pointÂ Â» non traduits
-#: elf32-sh.c:6010
+#: elf32-sh.c:5842
 #, c-format
 msgid "%pB: uses %s instructions while previous modules use %s instructions"
 msgstr "%pB: utilise les instructions %s tandis que les modules prÃ©cÃ©dents utilisent les instructions %s"
 
-#: elf32-sh.c:6022
+#: elf32-sh.c:5854
 #, c-format
 msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
 msgstr "erreur interne: la fusion de l'architecture Â«Â %sÂ Â» avec l'architecture Â«Â %sÂ Â» a produit une architecture inconnue"
 
-#: elf32-sh.c:6059
+#: elf32-sh.c:5895
 #, c-format
 msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
 msgstr "%pB: utilise des instructions qui sont incompatibles avec les instructions utilisÃ©es dans les modules prÃ©cÃ©dents"
 
-#: elf32-sh.c:6072
+#: elf32-sh.c:5908
 #, c-format
 msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
 msgstr "%pB: tentative de mÃ©langer des objets FDPIC et non-FDPIC"
@@ -3344,118 +3432,123 @@ msgstr "%pB: compilÃ© pour un systÃ¨me Ã
 msgid "%pB: linking little endian files with big endian files"
 msgstr "%pB: Ã©dition de liens pour des fichiers Ã  octets de poids faible avec des fichiers Ã  octets de poids fort"
 
-#: elf32-spu.c:732
+#: elf32-sparc.c:157
+#, c-format
+msgid "%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr "%pB: valeur de machine sparc Â«Â %luÂ Â» non gÃ©rÃ©e dÃ©tectÃ©e durant le traitement de l'Ã©criture"
+
+#: elf32-spu.c:735
 msgid "%X%P: overlay section %pA does not start on a cache line\n"
 msgstr "%X%P: recouvrement de la section %pA ne dÃ©marre pas sur une ligne de cache\n"
 
-#: elf32-spu.c:740
+#: elf32-spu.c:743
 msgid "%X%P: overlay section %pA is larger than a cache line\n"
 msgstr "%X%P: recouvrement de la section %pA est plus grand que la ligne de cache\n"
 
-#: elf32-spu.c:760
+#: elf32-spu.c:763
 msgid "%X%P: overlay section %pA is not in cache area\n"
 msgstr "%X%P: recouvrement de la section %pA n'est pas dans une zone de cache\n"
 
-#: elf32-spu.c:801
+#: elf32-spu.c:804
 #, c-format
 msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n"
 msgstr "%X%P: recouvrement des sections %pA et %pA ne commencent pas Ã  la mÃªme adresse\n"
 
-#: elf32-spu.c:1027
+#: elf32-spu.c:1030
 #, c-format
 msgid "warning: call to non-function symbol %s defined in %pB"
 msgstr "attention: appel au symbole %s dÃ©fini dans %pB qui n'est pas une fonction"
 
-#: elf32-spu.c:1377
+#: elf32-spu.c:1380
 #, c-format
 msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
 msgstr "%pA:0x%v le lrlive .brinfo (%u) diffÃ¨re de celui de l'analyse (%u)\n"
 
-#: elf32-spu.c:1909
+#: elf32-spu.c:1910
 #, c-format
 msgid "%pB is not allowed to define %s"
 msgstr "%pB ne peut pas dÃ©finir %s"
 
-#: elf32-spu.c:1917
+#: elf32-spu.c:1918
 #, c-format
 msgid "you are not allowed to define %s in a script"
 msgstr "vous ne pouvez pas dÃ©finir %s dans un script"
 
-#: elf32-spu.c:1951
+#: elf32-spu.c:1952
 #, c-format
 msgid "%s in overlay section"
 msgstr "%s dans une section de recouvrement"
 
-#: elf32-spu.c:1980
+#: elf32-spu.c:1981
 msgid "overlay stub relocation overflow"
 msgstr "dÃ©bordement du rÃ©adressage de l'Ã©bauche de recouvrement"
 
-#: elf32-spu.c:1989 elf64-ppc.c:13230
+#: elf32-spu.c:1990 elf64-ppc.c:14496
 msgid "stubs don't match calculated size"
 msgstr "taille des Ã©bauches ne concorde pas avec la taille calculÃ©e"
 
-#: elf32-spu.c:2572
+#: elf32-spu.c:2573
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr "attention: %s recouvre %s\n"
 
-#: elf32-spu.c:2588
+#: elf32-spu.c:2589
 #, c-format
 msgid "warning: %s exceeds section size\n"
 msgstr "attention: %s dÃ©passe la taille de la section\n"
 
-#: elf32-spu.c:2620
+#: elf32-spu.c:2621
 #, c-format
 msgid "%pA:0x%v not found in function table\n"
 msgstr "%pA:%0x%v pas trouvÃ© dans la table de fonctions\n"
 
-#: elf32-spu.c:2761
+#: elf32-spu.c:2762
 #, c-format
 msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
 msgstr "%pB(%pA+0x%v): appel Ã  la section non exÃ©cutable %pB(%pA), analyse incomplÃ¨te\n"
 
-#: elf32-spu.c:3330
+#: elf32-spu.c:3328
 #, c-format
 msgid "stack analysis will ignore the call from %s to %s\n"
 msgstr "l'analyse de la pile ignorera l'appel de %s Ã  %s\n"
 
-#: elf32-spu.c:4027
+#: elf32-spu.c:4025
 msgid "  calls:\n"
 msgstr "  appels:\n"
 
-#: elf32-spu.c:4341
+#: elf32-spu.c:4340
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "%s dupliquÃ© dans %s\n"
 
-#: elf32-spu.c:4345
+#: elf32-spu.c:4344
 #, c-format
 msgid "%s duplicated\n"
 msgstr "%s dupliquÃ©\n"
 
-#: elf32-spu.c:4352
+#: elf32-spu.c:4351
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr "dÃ©solÃ©, pas de support des fichiers objet dupliquÃ©s dans un script auto-overlay\n"
 
-#: elf32-spu.c:4394
+#: elf32-spu.c:4393
 #, c-format
 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n"
 msgstr "la taille de non recouvrement de 0x%v plus la taille maximum de recouvrement de 0x%v dÃ©passe l'espace local\n"
 
-#: elf32-spu.c:4550
+#: elf32-spu.c:4549
 #, c-format
 msgid "%pB:%pA%s exceeds overlay size\n"
 msgstr "%pB:%pA%s dÃ©passe la taille de recouvrement\n"
 
-#: elf32-spu.c:4691
+#: elf32-spu.c:4690
 msgid "%F%P: auto overlay error: %E\n"
 msgstr "%F%P: erreur d'auto recouvrement: %E\n"
 
-#: elf32-spu.c:4712
+#: elf32-spu.c:4711
 msgid "Stack size for call graph root nodes.\n"
 msgstr "Taille de la pile des nÅ“uds racine du graph d'appel.\n"
 
-#: elf32-spu.c:4713
+#: elf32-spu.c:4712
 msgid ""
 "\n"
 "Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
@@ -3463,19 +3556,19 @@ msgstr ""
 "\n"
 "Taille de la pile pour les fonctions.  Annotations: Â«Â *Â Â» pile max, Â«Â tÂ Â» appel de queue\n"
 
-#: elf32-spu.c:4723
+#: elf32-spu.c:4722
 msgid "Maximum stack required is 0x%v\n"
 msgstr "Pile maximum requise est 0x%v\n"
 
-#: elf32-spu.c:4742
+#: elf32-spu.c:4741
 msgid "%X%P: stack/lrlive analysis error: %E\n"
 msgstr "%X%P: erreur d'analyse de pile/lrlive: %E\n"
 
-#: elf32-spu.c:4745
+#: elf32-spu.c:4744
 msgid "%F%P: can not build overlay stubs: %E\n"
 msgstr "%F%P: ne peut construire les Ã©bauches de recouvrement: %E\n"
 
-#: elf32-spu.c:4814
+#: elf32-spu.c:4813
 msgid "fatal error while creating .fixup"
 msgstr "erreur fatale lors de la crÃ©ation de .fixup"
 
@@ -3484,275 +3577,274 @@ msgstr "erreur fatale lors de la crÃ©ati
 msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr "%pB(%s+%#<PRIx64>): rÃ©adressage %s sans solution vers le symbole Â«Â %sÂ Â»"
 
-#: elf32-tic6x.c:1628
+#: elf32-tic6x.c:1588
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr "attention: production d'une librairie partagÃ©e contenant du code non-PIC"
 
-#: elf32-tic6x.c:1633
+#: elf32-tic6x.c:1593
 msgid "warning: generating a shared library containing non-PID code"
 msgstr "attention: production d'une librairie partagÃ©e contenant du code non-PID"
 
-#: elf32-tic6x.c:2493
+#: elf32-tic6x.c:2434
 #, c-format
 msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
 msgstr "%pB: rÃ©adressage relatif Ã  SB mais __c6xabi_DSBT_BASE n'est pas dÃ©fini"
 
-#: elf32-tic6x.c:3629
+#: elf32-tic6x.c:3511
 #, c-format
 msgid "%pB: error: unknown mandatory EABI object attribute %d"
 msgstr "%pB: erreur: l'attribut d'objet EABI obligatoire %d est manquant"
 
-#: elf32-tic6x.c:3638
+#: elf32-tic6x.c:3520
 #, c-format
 msgid "%pB: warning: unknown EABI object attribute %d"
 msgstr "%pB: attention: attribut d'objet EABI %d inconnu"
 
-#: elf32-tic6x.c:3752 elf32-tic6x.c:3761
+#: elf32-tic6x.c:3638 elf32-tic6x.c:3647
 #, c-format
 msgid "error: %pB requires more stack alignment than %pB preserves"
 msgstr "erreur: %pB nÃ©cessite un plus grand alignement de pile que ce que %pB prÃ©serve"
 
-#: elf32-tic6x.c:3771 elf32-tic6x.c:3780
+#: elf32-tic6x.c:3657 elf32-tic6x.c:3666
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
 msgstr "erreur: valeur Tag_ABI_array_object_alignment inconnue dans %pB"
 
-#: elf32-tic6x.c:3789 elf32-tic6x.c:3798
+#: elf32-tic6x.c:3675 elf32-tic6x.c:3684
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
 msgstr "erreur: valeur Tag_ABI_array_object_align_expected inconnue dans %pB"
 
-#: elf32-tic6x.c:3807 elf32-tic6x.c:3815
+#: elf32-tic6x.c:3693 elf32-tic6x.c:3701
 #, c-format
 msgid "error: %pB requires more array alignment than %pB preserves"
 msgstr "erreur: %pB nÃ©cessite un plus grand alignement de tableau que ce que %pB prÃ©serve"
 
-#: elf32-tic6x.c:3838
+#: elf32-tic6x.c:3724
 #, c-format
 msgid "warning: %pB and %pB differ in wchar_t size"
 msgstr "attention: %pB et %pB on des tailles de wchar_t diffÃ©rentes"
 
-#: elf32-tic6x.c:3857
+#: elf32-tic6x.c:3743
 #, c-format
 msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
 msgstr "attention: %pB et %pB ne sont pas d'accord sur la compilation du code pour DSBT"
 
-#: elf32-tilepro.c:3761 elfxx-tilegx.c:4145 elfxx-x86.c:1432
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:9530
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2579
+#: elf32-tilepro.c:3635 elfxx-tilegx.c:4019 elfxx-x86.c:1393
+#: elfnn-aarch64.c:9704 elfnn-riscv.c:2522
 #, c-format
 msgid "discarded output section: `%pA'"
 msgstr "section de sortie rejetÃ©e: Â«Â %pAÂ Â»"
 
-#: elf32-v850.c:153
+#: elf32-v850.c:152
 #, c-format
 msgid "variable `%s' cannot occupy in multiple small data regions"
 msgstr "variable Â«Â %sÂ Â» ne peut occuper de multiples petites rÃ©gions de donnÃ©es"
 
-#: elf32-v850.c:156
+#: elf32-v850.c:155
 #, c-format
 msgid "variable `%s' can only be in one of the small, zero, and tiny data regions"
 msgstr "variable Â«Â %sÂ Â» peut seulement Ãªtre dans une rÃ©gion de donnÃ©es petite, zÃ©ro ou minuscule"
 
-#: elf32-v850.c:159
+#: elf32-v850.c:158
 #, c-format
 msgid "variable `%s' cannot be in both small and zero data regions simultaneously"
 msgstr "variable Â«Â %sÂ Â» ne peut Ãªtre dans une rÃ©gion de donnÃ©es petite et zÃ©ro Ã  la fois"
 
-#: elf32-v850.c:162
+#: elf32-v850.c:161
 #, c-format
 msgid "variable `%s' cannot be in both small and tiny data regions simultaneously"
 msgstr "variable Â«Â %sÂ Â» ne peut Ãªtre dans une rÃ©gion de donnÃ©es petite et minuscule Ã  la fois"
 
-#: elf32-v850.c:165
+#: elf32-v850.c:164
 #, c-format
 msgid "variable `%s' cannot be in both zero and tiny data regions simultaneously"
 msgstr "variable Â«Â %sÂ Â» ne peut Ãªtre dans une rÃ©gion de donnÃ©es zÃ©ro et minuscule Ã  la fois"
 
-#: elf32-v850.c:463
+#: elf32-v850.c:462
 msgid "failed to find previous HI16 reloc"
 msgstr "Ã©chec de repÃ©rage du rÃ©adressage HI16 prÃ©cÃ©dent"
 
-#: elf32-v850.c:2303
+#: elf32-v850.c:2302
 msgid "could not locate special linker symbol __gp"
 msgstr "ne peut repÃ©rer le symbole spÃ©cial d'Ã©dition de lien __gp"
 
-#: elf32-v850.c:2307
+#: elf32-v850.c:2306
 msgid "could not locate special linker symbol __ep"
 msgstr "ne peut repÃ©rer le symbole spÃ©cial d'Ã©dition de lien __ep"
 
-#: elf32-v850.c:2311
+#: elf32-v850.c:2310
 msgid "could not locate special linker symbol __ctbp"
 msgstr "ne peut repÃ©rer le symbole spÃ©cial d'Ã©dition de lien __ctbp"
 
-#: elf32-v850.c:2532
+#: elf32-v850.c:2531
 #, c-format
 msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"
 msgstr "erreur: %pB a besoin d'un alignement sur 8 octets mais %pB est dÃ©fini pour un alignement sur 4 octets"
 
-#: elf32-v850.c:2548
+#: elf32-v850.c:2547
 #, c-format
 msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
 msgstr "erreur: %pB utilise des doubles 64 bits alors que %pB utilise des doubles 32 bits"
 
-#: elf32-v850.c:2563
+#: elf32-v850.c:2562
 #, c-format
 msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
 msgstr "erreur: %pB utilise FPU-3.0 mais %pB ne supporte que FPU-2.0"
 
-#: elf32-v850.c:2595
+#: elf32-v850.c:2594
 #, c-format
 msgid " alignment of 8-byte entities: "
 msgstr " alignement d'entitÃ©s de 8 octets:"
 
-#: elf32-v850.c:2598
+#: elf32-v850.c:2597
 #, c-format
 msgid "4-byte"
 msgstr "4 octets"
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2598
 #, c-format
 msgid "8-byte"
 msgstr "8 octets"
 
-#: elf32-v850.c:2600 elf32-v850.c:2612
+#: elf32-v850.c:2599 elf32-v850.c:2611
 #, c-format
 msgid "not set"
 msgstr "pas dÃ©fini"
 
-#: elf32-v850.c:2601 elf32-v850.c:2613 elf32-v850.c:2625 elf32-v850.c:2636
-#: elf32-v850.c:2647 elf32-v850.c:2658
+#: elf32-v850.c:2600 elf32-v850.c:2612 elf32-v850.c:2624 elf32-v850.c:2635
+#: elf32-v850.c:2646 elf32-v850.c:2657
 #, c-format
 msgid "unknown: %x"
 msgstr "inconnu: %x"
 
-#: elf32-v850.c:2607
+#: elf32-v850.c:2606
 #, c-format
 msgid " size of doubles: "
 msgstr " taille des doubles: "
 
-#: elf32-v850.c:2610
+#: elf32-v850.c:2609
 #, c-format
 msgid "4-bytes"
 msgstr "4 octets"
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2610
 #, c-format
 msgid "8-bytes"
 msgstr "8 octets"
 
-#: elf32-v850.c:2619
+#: elf32-v850.c:2618
 #, c-format
 msgid " FPU support required: "
 msgstr " support du FPU requis: "
 
-#: elf32-v850.c:2622
+#: elf32-v850.c:2621
 #, c-format
 msgid "FPU-2.0"
 msgstr "FPU-2.0"
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2622
 #, c-format
 msgid "FPU-3.0"
 msgstr "FPU-3.0"
 
-#: elf32-v850.c:2624
+#: elf32-v850.c:2623
 #, c-format
 msgid "none"
 msgstr "aucun"
 
-#: elf32-v850.c:2631
+#: elf32-v850.c:2630
 #, c-format
 msgid "SIMD use: "
 msgstr "utilisation SIMD: "
 
-#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#: elf32-v850.c:2633 elf32-v850.c:2644 elf32-v850.c:2655
 #, c-format
 msgid "yes"
 msgstr "oui"
 
-#: elf32-v850.c:2635 elf32-v850.c:2646 elf32-v850.c:2657
+#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
 #, c-format
 msgid "no"
 msgstr "non"
 
-#: elf32-v850.c:2642
+#: elf32-v850.c:2641
 #, c-format
 msgid "CACHE use: "
 msgstr "utilisation CACHE: "
 
-#: elf32-v850.c:2653
+#: elf32-v850.c:2652
 #, c-format
 msgid "MMU use: "
 msgstr "utilisation MMU: "
 
-#: elf32-v850.c:2820 elf32-v850.c:2876
+#: elf32-v850.c:2819 elf32-v850.c:2875
 #, c-format
 msgid "%pB: architecture mismatch with previous modules"
 msgstr "%pB: l'architecture ne concorde pas avec les modules prÃ©cÃ©dents"
 
 #. xgettext:c-format.
-#: elf32-v850.c:2894
+#: elf32-v850.c:2893
 #, c-format
 msgid "private flags = %lx: "
 msgstr "fanions privÃ©s = %lx: "
 
-#: elf32-v850.c:2899
+#: elf32-v850.c:2898
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "architecture v850 inconnue"
 
-#: elf32-v850.c:2901
+#: elf32-v850.c:2900
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "architecture v850 E3"
 
-#: elf32-v850.c:2903 elf32-v850.c:2910
+#: elf32-v850.c:2902 elf32-v850.c:2909
 #, c-format
 msgid "v850 architecture"
 msgstr "architecture v850"
 
-#: elf32-v850.c:2911
+#: elf32-v850.c:2910
 #, c-format
 msgid "v850e architecture"
 msgstr "architecture v850e"
 
-#: elf32-v850.c:2912
+#: elf32-v850.c:2911
 #, c-format
 msgid "v850e1 architecture"
 msgstr "architecture v850e1"
 
-#: elf32-v850.c:2913
+#: elf32-v850.c:2912
 #, c-format
 msgid "v850e2 architecture"
 msgstr "architecture v850e2"
 
-#: elf32-v850.c:2914
+#: elf32-v850.c:2913
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "architecture v850e2v3"
 
-#: elf32-v850.c:2915
+#: elf32-v850.c:2914
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr "architecture v850e3v5"
 
-#: elf32-v850.c:3609 elf32-v850.c:3848
+#: elf32-v850.c:3612 elf32-v850.c:3851
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
 msgstr "%pB: %#<PRIx64>: attention: %s pointe vers l'insn inconnue"
 
-#: elf32-v850.c:3619 elf32-v850.c:3858
+#: elf32-v850.c:3622 elf32-v850.c:3861
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
 msgstr "%pB: %#<PRIx64>: attention: %s pointe vers l'insn inconnue %#x"
 
-#: elf32-v850.c:3665 elf32-v850.c:3893
+#: elf32-v850.c:3668 elf32-v850.c:3896
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
 msgstr "%pB: %#<PRIx64>: attention: %s pointe vers le rÃ©adressage non reconnu"
 
-#: elf32-v850.c:3705
+#: elf32-v850.c:3708
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: attention: %s pointe vers le rÃ©adressage non reconnu Ã  %#<PRIx64>"
@@ -3777,24 +3869,24 @@ msgstr " [g-float]"
 msgid "%pB: warning: GOT addend of %<PRId64> to `%s' does not match previous GOT addend of %<PRId64>"
 msgstr "%pB: attention: ajout GOT de %<PRId64> Ã  Â«Â %sÂ Â» ne concorde par avec l'ajout GOT prÃ©cÃ©dent de %<PRId64>"
 
-#: elf32-vax.c:1446
+#: elf32-vax.c:1389
 #, c-format
 msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored"
 msgstr "%pB: attention: ignore l'ajout PLT de %<PRId64> Ã  Â«Â %sÂ Â» de la section %pA"
 
-#: elf32-vax.c:1572
+#: elf32-vax.c:1515
 #, c-format
 msgid "%pB: warning: %s relocation against symbol `%s' from %pA section"
 msgstr "%pB: attention: rÃ©adressage %s vers le symbole Â«Â %sÂ Â» de la section %pA"
 
-#: elf32-vax.c:1579
+#: elf32-vax.c:1522
 #, c-format
 msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section"
 msgstr "%pB: attention: rÃ©adressage %s vers %#<PRIx64> de la section %pA"
 
 # Les %s sont Â«Â withÂ Â» ou Â«Â withoutÂ Â» non traduits.
 # Heureusement, le fichier entier a Ã©tÃ© supprimÃ© dans les sources actuelles.
-#: elf32-visium.c:821
+#: elf32-visium.c:824
 #, c-format
 msgid "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
 msgstr "%pB: compilÃ© %s -mtune=%s et liÃ© avec des modules compilÃ©s %s -mtune=%s"
@@ -3809,238 +3901,261 @@ msgstr "cpu=XGATE]"
 msgid "error reading cpu type from elf private data"
 msgstr "erreur lors de la lecture du type de CPU dans les donnÃ©es elf privÃ©es"
 
-#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2085 elf32-ia64.c:2353
-#: elf64-ia64.c:2353
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2074 elfnn-ia64.c:2343
 msgid "non-zero addend in @fptr reloc"
 msgstr "ajout non nul dans le rÃ©adressage @fptr"
 
-#: elf32-xtensa.c:937
+#: elf32-xtensa.c:1001
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr "%pB(%pA): table de propriÃ©tÃ© invalide"
 
-#: elf32-xtensa.c:2675
+#: elf32-xtensa.c:2733
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): dÃ©calage de rÃ©adressage hors limite (taille=%#<PRIx64>)"
 
-#: elf32-xtensa.c:2758 elf32-xtensa.c:2881
+#: elf32-xtensa.c:2816 elf32-xtensa.c:2939
 msgid "dynamic relocation in read-only section"
 msgstr "rÃ©adressage dynamique dans une section en lecture seule"
 
-#: elf32-xtensa.c:2858
+#: elf32-xtensa.c:2916
 msgid "TLS relocation invalid without dynamic sections"
 msgstr "rÃ©adressage TLS incorrecte sans section dynamique"
 
-#: elf32-xtensa.c:3070
+#: elf32-xtensa.c:3126
 msgid "internal inconsistency in size of .got.loc section"
 msgstr "incohÃ©rence interne dans la taille de la section .got.loc"
 
-#: elf32-xtensa.c:3377
+#: elf32-xtensa.c:3432
 #, c-format
 msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
 msgstr "%pB: type de machine incompatible; sortie est 0x%x; entrÃ©e est 0x%x"
 
-#: elf32-xtensa.c:4608 elf32-xtensa.c:4616
+#: elf32-xtensa.c:4726 elf32-xtensa.c:4734
 msgid "attempt to convert L32R/CALLX to CALL failed"
 msgstr "Ã©chec de la tentative de convertir L32R/CALLX en CALL"
 
-#: elf32-xtensa.c:6444 elf32-xtensa.c:6523 elf32-xtensa.c:7899
+#: elf32-xtensa.c:6559 elf32-xtensa.c:6638 elf32-xtensa.c:8064
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
 msgstr "%pB(%pA+%#<PRIx64>): l'instruction ne peut pas Ãªtre dÃ©codÃ©e; la configuration est peut-Ãªtre erronÃ©e"
 
-#: elf32-xtensa.c:7638
+#: elf32-xtensa.c:7805
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
 msgstr "%pB(%pA+%#<PRIx64>): l'instruction ne peut pas Ãªtre dÃ©codÃ©e pour un rÃ©adressage XTENSA_ASM_SIMPLIFY; la configuration est peut-Ãªtre erronÃ©e"
 
-#: elf32-xtensa.c:9493
+#: elf32-xtensa.c:9663
 msgid "invalid relocation address"
 msgstr "adresse de rÃ©adressage incorrecte"
 
-#: elf32-xtensa.c:9543
+#: elf32-xtensa.c:9754
 msgid "overflow after relaxation"
 msgstr "dÃ©bordement aprÃ¨s la relÃ¢che"
 
-#: elf32-xtensa.c:10689
+#: elf32-xtensa.c:10900
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
 msgstr "%pB(%pA+%#<PRIx64>): correction inattendue pour le rÃ©adressage %s"
 
-#: elf64-alpha.c:472
+#: elf32-z80.c:473
+#, c-format
+msgid "%pB: unsupported bfd mach %#lx"
+msgstr "%pB: correspondance bfd %#lx non supportÃ©e"
+
+#: elf32-z80.c:518
+#, c-format
+msgid "%pB: unsupported mach %#x"
+msgstr "%pB: correspondance %#x non supportÃ©e"
+
+#: elf32-z80.c:546
+#, c-format
+msgid "%pB: unsupported arch %#x"
+msgstr "%pB: architecture %#x non supportÃ©e"
+
+#: elf64-alpha.c:473
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr "le rÃ©adressage GPDISP n'a pas repÃ©rÃ© les instructions ldah et lda"
 
-#: elf64-alpha.c:2463
+#: elf64-alpha.c:1999 elf64-alpha.c:2694 elflink.c:14885
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr "%pB: rÃ©adressage dynamique sur Â«Â %pTÂ Â» dans la section en lecture seule Â«Â %pAÂ Â»\n"
+
+#: elf64-alpha.c:2451
 #, c-format
 msgid "%pB: .got subsegment exceeds 64K (size %d)"
 msgstr "%pB: le sous-segment .got excÃ¨de 64K (taille %d)"
 
-#: elf64-alpha.c:3018 elf64-alpha.c:3214
+#: elf64-alpha.c:2989 elf64-alpha.c:3183
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
 msgstr "%pB: %pA+%#<PRIx64>: attention: rÃ©adressage de %s sur une insn inattendue"
 
-#: elf64-alpha.c:4415 elf64-alpha.c:4428
+#: elf64-alpha.c:4381 elf64-alpha.c:4394
 #, c-format
 msgid "%pB: gp-relative relocation against dynamic symbol %s"
 msgstr "%pB: rÃ©adressage relatif au gp vers le symbole dynamique %s"
 
-#: elf64-alpha.c:4484
+#: elf64-alpha.c:4450
 #, c-format
 msgid "%pB: change in gp: BRSGP %s"
 msgstr "%pB: changÃ© dans le GP: BRSGP %s"
 
-#: elf64-alpha.c:4509 mach-o.c:615
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:499
+#: elf64-alpha.c:4475 mach-o.c:616 elfnn-riscv.c:485
 msgid "<unknown>"
 msgstr "<inconnu>"
 
-#: elf64-alpha.c:4515
+#: elf64-alpha.c:4481
 #, c-format
 msgid "%pB: !samegp reloc against symbol without .prologue: %s"
 msgstr "%pB: rÃ©adressage !samegp vers le symbole sans .prologue: %s"
 
-#: elf64-alpha.c:4573
+#: elf64-alpha.c:4539
 #, c-format
 msgid "%pB: unhandled dynamic relocation against %s"
 msgstr "%pB: rÃ©adressage dynamique non traitÃ© vers %s"
 
-#: elf64-alpha.c:4608
+#: elf64-alpha.c:4574
 #, c-format
 msgid "%pB: pc-relative relocation against undefined weak symbol %s"
 msgstr "%pB: rÃ©adressage relatif au PC vers le symbole faible non dÃ©fini %s"
 
-#: elf64-alpha.c:4674
+#: elf64-alpha.c:4640
 #, c-format
 msgid "%pB: dtp-relative relocation against dynamic symbol %s"
 msgstr "%pB: rÃ©adressage relatif au dtp vers le symbole dynamique %s"
 
-#: elf64-alpha.c:4699
+#: elf64-alpha.c:4665
 #, c-format
 msgid "%pB: tp-relative relocation against dynamic symbol %s"
 msgstr "%pB: rÃ©adressage relatif au tp vers le symbole dynamique %s"
 
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:517
+msgid "internal error: relocation not supported"
+msgstr "erreur interne: rÃ©adressage non supportÃ©"
+
 #: elf64-gen.c:71
 #, c-format
 msgid "%pB: Relocations in generic ELF (EM: %d)"
 msgstr "%pB: RÃ©adressages en format ELF gÃ©nÃ©rique (EM: %d)"
 
-#: elf64-hppa.c:2081
+#: elf64-hppa.c:2032
 #, c-format
 msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
 msgstr "l'entrÃ©e de l'Ã©bauche pour %s ne peut charger .plt, dÃ©calage dp = %<PRId64>"
 
-#: elf64-hppa.c:3286
+#: elf64-hppa.c:3236
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
 msgstr "%pB(%pA+%#<PRIx64>): ne peut atteindre %s"
 
-#: elf64-ia64-vms.c:598 elf32-ia64.c:636 elf64-ia64.c:636
+#: elf64-ia64-vms.c:598 elfnn-ia64.c:639
 #, c-format
 msgid "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or indirect branch"
 msgstr "%pB: Ne peut relÃ¢cher br Ã  %#<PRIx64> dans la section Â«Â %pAÂ Â». Veuillez utiliser brl ou un branchement indirect."
 
-#: elf64-ia64-vms.c:2040 elf32-ia64.c:2301 elf64-ia64.c:2301
+#: elf64-ia64-vms.c:2029 elfnn-ia64.c:2291
 msgid "@pltoff reloc against local symbol"
 msgstr "rÃ©adressage @pltoff vers un symbole local"
 
-#: elf64-ia64-vms.c:3292 elf32-ia64.c:3712 elf64-ia64.c:3712
+#: elf64-ia64-vms.c:3281 elfnn-ia64.c:3674
 #, c-format
 msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
 msgstr "%pB: dÃ©bordement du segment de donnÃ©es court (%#<PRIx64> >= 0x400000)"
 
-#: elf64-ia64-vms.c:3302 elf32-ia64.c:3722 elf64-ia64.c:3722
+#: elf64-ia64-vms.c:3291 elfnn-ia64.c:3684
 #, c-format
 msgid "%pB: __gp does not cover short data segment"
 msgstr "%pB: __gp ne couvre pas le segment de donnÃ©es court"
 
-#: elf64-ia64-vms.c:3572 elf32-ia64.c:3996 elf64-ia64.c:3996
+#: elf64-ia64-vms.c:3561 elfnn-ia64.c:3958
 #, c-format
 msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
 msgstr "%pB: code non pic avec des rÃ©adressages imm vers le symbole dynamique Â«Â %sÂ Â»"
 
-#: elf64-ia64-vms.c:3636 elf32-ia64.c:4064 elf64-ia64.c:4064
+#: elf64-ia64-vms.c:3625 elfnn-ia64.c:4026
 #, c-format
 msgid "%pB: @gprel relocation against dynamic symbol %s"
 msgstr "%pB: rÃ©adressage @gprel vers le symbole dynamique %s"
 
-#: elf64-ia64-vms.c:3695 elf32-ia64.c:4127 elf64-ia64.c:4127
+#: elf64-ia64-vms.c:3684 elfnn-ia64.c:4089
 #, c-format
 msgid "%pB: linking non-pic code in a position independent executable"
 msgstr "%pB: liaison de code non-pic dans un exÃ©cutable Ã  position indÃ©pendante"
 
-#: elf64-ia64-vms.c:3797 elf32-ia64.c:4265 elf64-ia64.c:4265
+#: elf64-ia64-vms.c:3786 elfnn-ia64.c:4227
 #, c-format
 msgid "%pB: @internal branch to dynamic symbol %s"
 msgstr "%pB: branchement @internal vers le symbole dynamique %s"
 
-#: elf64-ia64-vms.c:3800 elf32-ia64.c:4268 elf64-ia64.c:4268
+#: elf64-ia64-vms.c:3789 elfnn-ia64.c:4230
 #, c-format
 msgid "%pB: speculation fixup to dynamic symbol %s"
 msgstr "%pB: spÃ©culation d'ajustements vers le symbole dynamique %s"
 
-#: elf64-ia64-vms.c:3803 elf32-ia64.c:4271 elf64-ia64.c:4271
+#: elf64-ia64-vms.c:3792 elfnn-ia64.c:4233
 #, c-format
 msgid "%pB: @pcrel relocation against dynamic symbol %s"
 msgstr "%pB: rÃ©adressage @pcrel vers le symbole dynamique %s"
 
-#: elf64-ia64-vms.c:3927 elf32-ia64.c:4468 elf64-ia64.c:4468
+#: elf64-ia64-vms.c:3916 elfnn-ia64.c:4430
 msgid "unsupported reloc"
 msgstr "rÃ©adressage non supportÃ©e"
 
-#: elf64-ia64-vms.c:3964 elf32-ia64.c:4506 elf64-ia64.c:4506
+#: elf64-ia64-vms.c:3953 elfnn-ia64.c:4468
 #, c-format
 msgid "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in section `%pA'."
 msgstr "%pB: section TLS manquante pour le rÃ©adressage %s vers Â«Â %sÂ Â» Ã  %#<PRIx64> dans la section Â«Â %pAÂ Â»."
 
-#: elf64-ia64-vms.c:3981 elf32-ia64.c:4523 elf64-ia64.c:4523
+#: elf64-ia64-vms.c:3970 elfnn-ia64.c:4485
 #, c-format
 msgid "%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size %#<PRIx64> (> 0x1000000)."
 msgstr "%pB: Ne peut pas relÃ¢cher br (%s) sur Â«Â %sÂ Â» Ã  %#<PRIx64> dans la section Â«Â %pAÂ Â» avec la taille %#<PRIx64> (> 0x1000000)."
 
-#: elf64-ia64-vms.c:4273 elf32-ia64.c:4781 elf64-ia64.c:4781
+#: elf64-ia64-vms.c:4266 elfnn-ia64.c:4746
 #, c-format
 msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
 msgstr "%pB: Ã©dition de liens trap-on-NULL-dereference avec des fichiers non-trapping"
 
-#: elf64-ia64-vms.c:4282 elf32-ia64.c:4790 elf64-ia64.c:4790
+#: elf64-ia64-vms.c:4275 elfnn-ia64.c:4755
 #, c-format
 msgid "%pB: linking big-endian files with little-endian files"
 msgstr "%pB: Ã©dition de liens entre des fichiers Ã  octets de poids fort et des fichiers Ã  octets de poids faible"
 
-#: elf64-ia64-vms.c:4291 elf32-ia64.c:4799 elf64-ia64.c:4799
+#: elf64-ia64-vms.c:4284 elfnn-ia64.c:4764
 #, c-format
 msgid "%pB: linking 64-bit files with 32-bit files"
 msgstr "%pB: Ã©dition de liens entre fichiers 64 bits et fichiers 32 bits"
 
-#: elf64-ia64-vms.c:4300 elf32-ia64.c:4808 elf64-ia64.c:4808
+#: elf64-ia64-vms.c:4293 elfnn-ia64.c:4773
 #, c-format
 msgid "%pB: linking constant-gp files with non-constant-gp files"
 msgstr "%pB: Ã©dition de liens entre fichiers constant-gp et fichiers non-constant-gp"
 
-#: elf64-ia64-vms.c:4310 elf32-ia64.c:4818 elf64-ia64.c:4818
+#: elf64-ia64-vms.c:4303 elfnn-ia64.c:4783
 #, c-format
 msgid "%pB: linking auto-pic files with non-auto-pic files"
 msgstr "%pB: Ã©dition de liens entre fichiers auto-pic et fichiers non-auto-pic"
 
-#: elf64-ia64-vms.c:5153 elflink.c:4894
+#: elf64-ia64-vms.c:5150 elflink.c:5072
 #, c-format
 msgid "warning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pA"
 msgstr "attention: alignement %u du symbole commun Â«Â %sÂ Â» dans %pB est plus grand que l'alignement (%u) de sa section %pA"
 
-#: elf64-ia64-vms.c:5160 elflink.c:4901
+#: elf64-ia64-vms.c:5157 elflink.c:5079
 #, c-format
 msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
 msgstr "attention: alignement %u du symbole Â«Â %sÂ Â» dans %pB est plus petit que %u dans %pB"
 
-#: elf64-ia64-vms.c:5176 elflink.c:4918
+#: elf64-ia64-vms.c:5173 elflink.c:5096
 #, c-format
 msgid "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %pB"
 msgstr "attention: taille du symbole Â«Â %sÂ Â» a changÃ© de %<PRIu64> dans %pB Ã  %<PRIu64> dans %pB"
 
-#: elf64-mips.c:4098
+#: elf64-mips.c:4095
 #, c-format
 msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
 msgstr "%pB(%pA): rÃ©adressage %<PRIu64> a un index de symbole %ld invalide"
@@ -4087,157 +4202,170 @@ msgstr "%pB: rÃ©adressage de registre ve
 msgid "%pB: directive LOCAL valid only with a register or absolute value"
 msgstr "%pB: directive LOCAL valide seulement avec un registre ou une valeur absolue"
 
-#: elf64-mmix.c:1744
+#: elf64-mmix.c:1742
 #, c-format
 msgid "%pB: LOCAL directive: register $%<PRId64> is not a local register; first global register is $%<PRId64>"
 msgstr "%pB: directive LOCAL: registre $%<PRId64> n'est pas un registre local; premier registre global est $%<PRId64>"
 
-#: elf64-mmix.c:2173
+#: elf64-mmix.c:2167
 #, c-format
 msgid "%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file"
 msgstr "%pB: erreur: multiple dÃ©finitions de Â«Â %sÂ Â»; dÃ©but de %s est initialisÃ© dans un prÃ©cÃ©dent fichier liÃ©"
 
-#: elf64-mmix.c:2228
+#: elf64-mmix.c:2222
 msgid "register section has contents\n"
 msgstr "registre de section contient\n"
 
-#: elf64-mmix.c:2418
+#: elf64-mmix.c:2412
 #, c-format
 msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
 msgstr "inconsistance interne: reste %lu != max %lu; merci de rapporter cette anomalie"
 
-#: elf64-ppc.c:3827
+#: elf64-ppc.c:1342
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "attention: %s devrait Ãªtre utilisÃ© au lieu de %s"
+
+#: elf64-ppc.c:4101
 #, c-format
 msgid "symbol '%s' has invalid st_other for ABI version 1"
 msgstr "le symbole Â«Â %sÂ Â» a un st_other invalide pour l'ABI Ã  la version 1"
 
-#: elf64-ppc.c:4002
+#: elf64-ppc.c:4281
 #, c-format
 msgid "%pB .opd not allowed in ABI version %d"
 msgstr "%pB .opd pas permis dans l'ABI Ã  la version %d"
 
-#: elf64-ppc.c:4523
+#: elf64-ppc.c:4852
 #, c-format
 msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
 msgstr "%H: le rÃ©adressage %s n'est pas supportÃ© dans les bibliothÃ¨ques partagÃ©es et les PIE\n"
 
-#: elf64-ppc.c:4919
+#: elf64-ppc.c:5260
 #, c-format
 msgid "%pB uses unknown e_flags 0x%lx"
 msgstr "%pB utilise le e_flags 0x%lx inconnu"
 
-#: elf64-ppc.c:4927
+#: elf64-ppc.c:5268
 #, c-format
 msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
 msgstr "%pB: la version ABI %ld n'est pas compatible avec la sortie de l'ABI version %ld"
 
-#: elf64-ppc.c:4954
+#: elf64-ppc.c:5295
 #, c-format
 msgid " [abiv%ld]"
 msgstr " [abiv%ld]"
 
-#: elf64-ppc.c:6145
+#: elf64-ppc.c:6574
 msgid "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
 msgstr "%P: le rÃ©adressage par copie sur Â«Â %pTÂ Â» nÃ©cessite un lien plt paresseux; Ã©vitez de mettre LD_BIND_NOW=1 ou mettez Ã  jour gcc\n"
 
-#: elf64-ppc.c:6417
+#: elf64-ppc.c:6841
 #, c-format
 msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
 msgstr "%pB: symbole indÃ©fini sur le rÃ©adressage R_PPC64_TOCSAVE"
 
-#: elf64-ppc.c:6644
+#: elf64-ppc.c:7089
 #, c-format
 msgid "dynreloc miscount for %pB, section %pA"
 msgstr "erreur de dÃ©compte de rÃ©adressage dynamique pour %pB, section %pA"
 
-#: elf64-ppc.c:6733
+#: elf64-ppc.c:7178
 #, c-format
 msgid "%pB: .opd is not a regular array of opd entries"
 msgstr "%pB: .opd n'est pas un tableau rÃ©gulier d'entrÃ©es opd"
 
-#: elf64-ppc.c:6743
+#: elf64-ppc.c:7188
 #, c-format
 msgid "%pB: unexpected reloc type %u in .opd section"
 msgstr "%pB: type de rÃ©adressage %u inattendu dans la section .opd"
 
-#: elf64-ppc.c:6765
+#: elf64-ppc.c:7210
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr "%pB: symbole Â«Â %sÂ Â» indÃ©fini dans la section .opd"
 
-#: elf64-ppc.c:7249
+#: elf64-ppc.c:7697
 msgid "warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations"
 msgstr "attention: --plt-localentry est particuliÃ¨rement dangereux sans le support de ld.so pour dÃ©tecter des violations de l'ABI"
 
-#: elf64-ppc.c:7499
+#: elf64-ppc.c:8017
 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
 msgstr "%H __tls_get_addr a perdu l'argument, optimisation TLS dÃ©sactivÃ©e\n"
 
-#: elf64-ppc.c:7876 elf64-ppc.c:8513
+#: elf64-ppc.c:8417 elf64-ppc.c:9130
 #, c-format
 msgid "%s defined on removed toc entry"
 msgstr "%s dÃ©fini dans une entrÃ©e toc supprimÃ©e"
 
-#: elf64-ppc.c:8241
-#, c-format
-msgid "%H: toc optimization is not supported for %s instruction\n"
-msgstr "%H: l'optimisation toc n'est pas supportÃ©e pour l'instruction %s\n"
-
-#: elf64-ppc.c:8470
+#: elf64-ppc.c:9087
 #, c-format
 msgid "%H: %s references optimized away TOC entry\n"
 msgstr "%H: %s fait rÃ©fÃ©rence Ã  une entrÃ©e TOC supprimÃ©e par l'optimisation\n"
 
-#: elf64-ppc.c:9301
+#: elf64-ppc.c:9308
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr "%H: l'optimisation got/toc n'est pas supportÃ©e pour l'instruction %s\n"
+
+#: elf64-ppc.c:10135
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr "attention: abandon de la section dynamique %s"
 
-#: elf64-ppc.c:10215
+#: elf64-ppc.c:11277
 msgid "%P: cannot find opd entry toc for `%pT'\n"
 msgstr "%P: l'entrÃ©e toc de opd non trouvÃ©e pour Â«Â %pTÂ Â»\n"
 
-#: elf64-ppc.c:10303
+#: elf64-ppc.c:11323 elf64-ppc.c:11867
+msgid "%F%P: Could not assign group %pA target %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Impossible d'assigner le groupe %pA de la cible %pA Ã  une section de sortie. RÃ©essayez sans --enable-non-contiguous-regions.\n"
+
+#: elf64-ppc.c:11385
 #, c-format
 msgid "long branch stub `%s' offset overflow"
 msgstr "dÃ©bordement de l'offset du branchement long de l'Ã©bauche Â«Â %sÂ Â»"
 
-#: elf64-ppc.c:10330
+#: elf64-ppc.c:11412
 #, c-format
 msgid "can't find branch stub `%s'"
 msgstr "ne peut repÃ©rer l'Ã©bauche de branchement Â«Â %sÂ Â»"
 
-#: elf64-ppc.c:10394 elf64-ppc.c:10642 elf64-ppc.c:12791
+#: elf64-ppc.c:11476 elf64-ppc.c:11743 elf64-ppc.c:13972
 #, c-format
 msgid "%P: linkage table error against `%pT'\n"
 msgstr "%P: erreur de la table de liaison vers Â«Â %pTÂ Â»\n"
 
-#: elf64-ppc.c:10820
+#: elf64-ppc.c:11939
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr "ne peut construire l'Ã©bauche de branchement Â«Â %sÂ Â»"
 
-#: elf64-ppc.c:11779
+#: elf64-ppc.c:12920
 #, c-format
 msgid "%pB section %pA exceeds stub group size"
 msgstr "%pB section %pA dÃ©passe la taille du groupe d'Ã©bauche"
 
-#: elf64-ppc.c:13189 elf64-ppc.c:13208
+#: elf64-ppc.c:14153
+msgid "__tls_get_addr call offset overflow"
+msgstr "dÃ©bordement du dÃ©calage dans l'appel __tls_get_addr"
+
+#: elf64-ppc.c:14455 elf64-ppc.c:14474
 #, c-format
 msgid "%s offset too large for .eh_frame sdata4 encoding"
 msgstr "dÃ©calage %s trop grand pour l'encodage .eh_frame sdata4"
 
-#: elf64-ppc.c:13244
+#: elf64-ppc.c:14506
 #, c-format
 msgid "linker stubs in %u group\n"
 msgid_plural "linker stubs in %u groups\n"
 msgstr[0] "Ã©bauches de l'Ã©diteur de liens dans %u groupe\n"
 msgstr[1] "Ã©bauches de l'Ã©diteur de liens dans %u groupes\n"
 
-#: elf64-ppc.c:13248
+#: elf64-ppc.c:14513
 #, c-format
 msgid ""
-"  branch         %lu\n"
+"%s  branch         %lu\n"
 "  branch toc adj %lu\n"
 "  branch notoc   %lu\n"
 "  branch both    %lu\n"
@@ -4251,7 +4379,7 @@ msgid ""
 "  plt call both  %lu\n"
 "  global entry   %lu"
 msgstr ""
-"  branchements          %lu\n"
+"%s  branchements          %lu\n"
 "  aj. branchements toc  %lu\n"
 "  branchements notoc    %lu\n"
 "  branchements les deux %lu\n"
@@ -4265,186 +4393,193 @@ msgstr ""
 "  appels plt les deux   %lu\n"
 "  entrÃ©es globales      %lu"
 
-#: elf64-ppc.c:13583
+#: elf64-ppc.c:14913
 #, c-format
 msgid "%H: %s used with TLS symbol `%pT'\n"
 msgstr "%H: %s utilisÃ© avec le symbole TLS Â«Â %pTÂ Â»\n"
 
-#: elf64-ppc.c:13585
+#: elf64-ppc.c:14915
 #, c-format
 msgid "%H: %s used with non-TLS symbol `%pT'\n"
 msgstr "%H: %s utilisÃ© avec le symbole non-TLS Â«Â %pTÂ Â»\n"
 
-#: elf64-ppc.c:14245
+#: elf64-ppc.c:15670
 #, c-format
 msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
 msgstr "%H: il manque un nop Ã  l'appel Ã  Â«Â %pTÂ Â», toc ne peut Ãªtre rÃ©tablie, (Ã©bauche de l'appel plt)\n"
 
-#: elf64-ppc.c:14251
+#: elf64-ppc.c:15676
 #, c-format
 msgid "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
 msgstr "%H: il manque un nop Ã  l'appel Ã  Â«Â %pTÂ Â», toc ne peut Ãªtre rÃ©tablie, (Ã©bauche de la sauvegarde/ajustement de la toc)\n"
 
-#: elf64-ppc.c:14985
+#: elf64-ppc.c:16564
 #, c-format
 msgid "%H: %s for indirect function `%pT' unsupported\n"
 msgstr "%H: %s non supportÃ© pour la fonction indirecte Â«Â %pTÂ Â»\n"
 
-#: elf64-ppc.c:15097
+#: elf64-ppc.c:16649
+#, c-format
+msgid "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr "%X%P: %pB: %s vis-Ã -vis de %pT n'est pas supportÃ© par glibc comme rÃ©adressage dynamique\n"
+
+#: elf64-ppc.c:16704
 #, c-format
 msgid "%P: %pB: %s is not supported for `%pT'\n"
 msgstr "%P: %pB: %s n'est pas supportÃ© pour le symbole Â«Â %pTÂ Â»\n"
 
-#: elf64-ppc.c:15326
+#: elf64-ppc.c:16963
 #, c-format
 msgid "%H: error: %s not a multiple of %u\n"
 msgstr "%H: erreur: %s n'est pas un multiple de %u\n"
 
-#: elf64-ppc.c:15349
+#: elf64-ppc.c:16986
 #, c-format
 msgid "%H: unresolvable %s against `%pT'\n"
 msgstr "%H: %s ne peut Ãªtre rÃ©solu par rapport Ã  Â«Â %pTÂ Â»\n"
 
-#: elf64-ppc.c:15446
+#: elf64-ppc.c:17131
 #, c-format
 msgid "%H: %s against `%pT': error %d\n"
 msgstr "%H: %s vers Â«Â %pTÂ Â»: erreur %d\n"
 
-#: elf64-s390.c:2576
+#: elf64-s390.c:2446
 #, c-format
 msgid "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)"
 msgstr "%pB: rÃ©adressage non-PLT Â«Â %sÂ Â» pour le symbole dÃ©fini dans une bibliothÃ¨que partagÃ©e et accÃ©dÃ© depuis l'exÃ©cutable (recompilez le fichier avec -fPICÂ ?)"
 
-#: elf64-sparc.c:109 elfcode.h:1471
-#, c-format
-msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
-msgstr "%pB(%pA): rÃ©adressage %d a un index de symbole %ld invalide"
-
-#: elf64-sparc.c:467
+#: elf64-sparc.c:478
 #, c-format
 msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
 msgstr "%pB: seuls les registres %%g[2367] peuvent Ãªtre dÃ©clarÃ©s en utilisant les registres STT_REGISTER"
 
-#: elf64-sparc.c:488
+#: elf64-sparc.c:499
 #, c-format
 msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
 msgstr "registre %%g%d utilisÃ© de maniÃ¨re incompatible: %s dans %pB prÃ©cÃ©demment %s dans %pB"
 
-#: elf64-sparc.c:512
+#: elf64-sparc.c:523
 #, c-format
 msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
 msgstr "symbole Â«Â %sÂ Â» a des types qui diffÃ¨rent: REGISTRE dans %pB, prÃ©cÃ©demment %s dans %pB"
 
-#: elf64-sparc.c:559
+#: elf64-sparc.c:570
 #, c-format
 msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
 msgstr "Symbole Â«Â %sÂ Â» a des types qui diffÃ¨rent: %s dans %pB, prÃ©cÃ©demment REGISTRE dans %pB"
 
-#: elf64-sparc.c:691
+#: elf64-sparc.c:702
 #, c-format
 msgid "%pB: linking UltraSPARC specific with HAL specific code"
 msgstr "%pB: Ã©dition de liens spÃ©cifiques pour UltraSPARC avec du code spÃ©cifique HAL"
 
-#: elf64-x86-64.c:1412
+#: elf64-x86-64.c:1417
 msgid "hidden symbol "
 msgstr "symbole cachÃ© "
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1420
 msgid "internal symbol "
 msgstr "symbole interne "
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1423 elf64-x86-64.c:1427
 msgid "protected symbol "
 msgstr "symbole protÃ©gÃ© "
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1429
 msgid "symbol "
 msgstr "symbole "
 
-#: elf64-x86-64.c:1425 elf64-x86-64.c:1435
-msgid "; recompile with -fPIC"
-msgstr "; recompilez avec -fPIC"
-
-#: elf64-x86-64.c:1430
+#: elf64-x86-64.c:1435
 msgid "undefined "
 msgstr "non dÃ©fini "
 
-#: elf64-x86-64.c:1439
+#: elf64-x86-64.c:1445
 msgid "a shared object"
 msgstr "un objet partagÃ©"
 
-#: elf64-x86-64.c:1441
+#: elf64-x86-64.c:1447
+msgid "; recompile with -fPIC"
+msgstr "; recompilez avec -fPIC"
+
+#: elf64-x86-64.c:1452
 msgid "a PIE object"
 msgstr "un objet PIE"
 
-#: elf64-x86-64.c:1443
+#: elf64-x86-64.c:1454
 msgid "a PDE object"
 msgstr "un objet PDE"
 
+#: elf64-x86-64.c:1456
+msgid "; recompile with -fPIE"
+msgstr "; recompilez avec -fPIE"
+
 # Les %s%s au dÃ©but de %s%sÂ«Â %sÂ Â» peuvent Ãªtre Â«Â non dÃ©finiÂ Â» ou rien pour le premier et
 # un des fragments ci-dessus pour le second ce qui donne par exemple Â«Â symbole interneÂ non dÃ©finiÂ» en inversant les deux %s.
 # Malheureusement, on ne peut pas inverser les %s car la syntaxe %1$s a Ã©tÃ© ajoutÃ©e le 5/11/2017 Ã  bfd comme indiquÃ©
 # dans le bug https://sourceware.org/bugzilla/show_bug.cgi?id=22717.
 # L'avant dernier %s est l'un des trois messages ci-dessus telle que "un objet partagÃ©".
 # Le dernier %s collÃ© au dernier %s peut Ãªtre rien ou un des fragments traduits ci-dessus et commenÃ§ant par un point-virgule.
-#: elf64-x86-64.c:1446
+#: elf64-x86-64.c:1460
 #, c-format
 msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
 msgstr "%pB: rÃ©adressage %s vers %s%sÂ«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en crÃ©ant %s%s"
 
-#: elf64-x86-64.c:1931
+#: elf64-x86-64.c:1968
 #, c-format
 msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
 msgstr "%pB: le rÃ©adressage %s sur le symbole Â«Â %sÂ Â» n'est pas supportÃ© en mode x32"
 
-#: elf64-x86-64.c:2073
+#: elf64-x86-64.c:2124
 #, c-format
 msgid "%pB: '%s' accessed both as normal and thread local symbol"
 msgstr "%pB: symbole Â«Â %sÂ Â» accÃ©dÃ© Ã  la fois comme normal et comme local au thread"
 
-#: elf64-x86-64.c:2696
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5302
+#: elf64-x86-64.c:2747 elfnn-aarch64.c:5546
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %<PRId64>"
 msgstr "%pB: le rÃ©adressage %s vers le symbole STT_GNU_IFUNC Â«Â %sÂ Â» a l'opÃ©rande non nul: %<PRId64>"
 
-#: elf64-x86-64.c:2934
+#: elf64-x86-64.c:2992
 #, c-format
 msgid "%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object"
 msgstr "%pB: rÃ©adressage R_X86_64_GOTOFF64 sur le symbole %s Â«Â %sÂ Â» non dÃ©fini ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©"
 
 # Le %s protÃ©gÃ©e est soit Â«Â functionÂ Â» ou Â«Â dataÂ Â» sans traduction.
 # Cette construction scabreuse a dÃ©jÃ  Ã©tÃ© enlevÃ©e dans les sources.
-#: elf64-x86-64.c:2948
+#: elf64-x86-64.c:3006
 #, c-format
 msgid "%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object"
 msgstr "%pB: rÃ©adressage R_X86_64_GOTOFF64 vers la %s protÃ©gÃ©e Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©"
 
-#: elf64-x86-64.c:3208
+#: elf64-x86-64.c:3283
 #, c-format
 msgid "%pB: addend %s%#x in relocation %s against symbol `%s' at %#<PRIx64> in section `%pA' is out of range"
 msgstr "%pB: l'opÃ©rande %s%#x dans le rÃ©adressage %s vers le symbole Â«Â %sÂ Â» Ã  %#<PRIx64> dans la section Â«Â %pAÂ Â» est hors limite"
 
-#: elf64-x86-64.c:3885
+#: elf64-x86-64.c:3417 elflink.c:13267
+msgid "%F%P: corrupt input: %pB\n"
+msgstr "%F%P: entrÃ©e corrompue: %pB\n"
+
+#: elf64-x86-64.c:4101
 msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
 msgstr "%F%P: impossible de convertir le rÃ©adressage GOTPCREL: Ã©ditez les liens Ã  nouveau avec --no-relax\n"
 
-#: elf64-x86-64.c:4043
+#: elf64-x86-64.c:4259
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
 msgstr "%F%pB: dÃ©bordement du dÃ©calage relatif au PC dans l'entrÃ©e PLT pour Â«Â %sÂ Â»\n"
 
-#: elf64-x86-64.c:4106
+#: elf64-x86-64.c:4322
 #, c-format
 msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
 msgstr "%F%pB: dÃ©bordement du dÃ©placement de branchement dans l'entrÃ©e PLT pour Â«Â %sÂ Â»\n"
 
-#: elf64-x86-64.c:4159
+#: elf64-x86-64.c:4375
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
 msgstr "%F%pB: dÃ©bordement du dÃ©calage relatif au PC dans l'entrÃ©e PLT GOT pour Â«Â %sÂ Â»\n"
 
-#: elfcode.h:323
+#: elfcode.h:326
 msgid "warning: %pB has a corrupt section with a size (%"
 msgstr "attention: %pB a une section corrompue avec une taille (%"
 
@@ -4453,656 +4588,813 @@ msgstr "attention: %pB a une section cor
 msgid "warning: %pB has a corrupt string table index - ignoring"
 msgstr "attention: %pB a un index de table de chaÃ®nes corrompu - ignorÃ©"
 
-#: elfcode.h:1212
+#: elfcode.h:1228
 #, c-format
 msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
 msgstr "%pB: compteur de version (%<PRId64>) ne concorde pas avec le symbole du compteur (%ld)"
 
-#: elfcore.h:300
+#: elfcore.h:308
 #, c-format
 msgid "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: %<PRIu64>"
 msgstr "attention: %pB est tronquÃ©: taille attendue du cÅ“ur du fichier >= %<PRIu64>, obtenu: %<PRIu64>"
 
-#: elflink.c:1367
+#: elflink.c:1362
 #, c-format
 msgid "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA"
 msgstr "%s: dÃ©finition TLS dans %pB section %pA ne correspond pas Ã  la dÃ©finition non TLS dans %pB section %pA"
 
-#: elflink.c:1373
+#: elflink.c:1368
 #, c-format
 msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
 msgstr "%s: rÃ©fÃ©rence TLS dans %pB ne correspond pas Ã  la rÃ©fÃ©rence non TLS dans %pB"
 
-#: elflink.c:1379
+#: elflink.c:1374
 #, c-format
 msgid "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
 msgstr "%s: dÃ©finition TLS dans %pB section %pA ne correspond pas Ã  la rÃ©fÃ©rence TLS dans %pB"
 
-#: elflink.c:1385
+#: elflink.c:1380
 #, c-format
 msgid "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
 msgstr "%s: rÃ©fÃ©rence TLS dans %pB ne correspond pas Ã  la dÃ©finition non TLS dans %pB section %pA"
 
-#: elflink.c:2075
+#: elflink.c:2071
 #, c-format
 msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr "%pB: attention: redÃ©finition inattendue du symbole indirect avec version Â«Â %sÂ Â»"
 
-#: elflink.c:2452
+#: elflink.c:2448
 #, c-format
 msgid "%pB: version node not found for symbol %s"
 msgstr "%pB: version du nÅ“ud pas trouvÃ©e pour le symbole %s"
 
-#: elflink.c:2541
+#: elflink.c:2539
 #, c-format
 msgid "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in section `%pA'"
 msgstr "%pB: mauvais index du symbole de rÃ©adressage (%#<PRIx64> >= %#lx) pour l'offset %#<PRIx64> de la section Â«Â %pAÂ Â»"
 
-#: elflink.c:2553
+#: elflink.c:2551
 #, c-format
 msgid "%pB: non-zero symbol index (%#<PRIx64>) for offset %#<PRIx64> in section `%pA' when the object file has no symbol table"
 msgstr "%pB: index de symbole non nul (%#<PRIx64>) pour l'offset %#<PRIx64> de la section Â«Â %pAÂ Â» quand le fichier objet n'a pas de table de symboles"
 
-#: elflink.c:2744
+#: elflink.c:2740
 #, c-format
 msgid "%pB: relocation size mismatch in %pB section %pA"
 msgstr "%pB: taille du rÃ©adressage ne concorde pas dans %pB section %pA"
 
-#: elflink.c:3066
+#: elflink.c:3069
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr "attention: type et taille du symbole dynamique Â«Â %sÂ Â» ne sont pas dÃ©finis"
 
-#: elflink.c:3128
+#: elflink.c:3129
 msgid "%P: copy reloc against protected `%pT' is dangerous\n"
 msgstr "%P: un rÃ©adressage copiÃ© envers un Â«Â %pTÂ Â» protÃ©gÃ© est dangereux\n"
 
-#: elflink.c:3932
+#: elflink.c:4064
 #, c-format
 msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
 msgstr "code machine ELF alternatif trouvÃ© (%d) dans %pB, %d est attendu"
 
-#: elflink.c:4598
+#: elflink.c:4534
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: dÃ©calage de version %lx invalide (max %lx)"
+
+#: elflink.c:4602
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr "%pB: symbole locale %s Ã  l'index %lu (>= sh_info de %lu)"
+
+#: elflink.c:4750
+#, c-format
+msgid "%pB: not enough version information"
+msgstr "%pB: pas assez d'informations de version"
+
+#: elflink.c:4788
 #, c-format
 msgid "%pB: %s: invalid version %u (max %d)"
 msgstr "%pB: %s: version invalide %u (max %d)"
 
-#: elflink.c:4635
+#: elflink.c:4825
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr "%pB: %s: version requise invalide %d"
 
-#: elflink.c:5054
+#: elflink.c:5231
 #, c-format
 msgid "%pB: undefined reference to symbol '%s'"
 msgstr "%pB: rÃ©fÃ©rence au symbole non dÃ©fini Â«Â %sÂ Â»"
 
-#: elflink.c:6130
+#: elflink.c:6315
 #, c-format
 msgid "%pB: stack size specified and %s set"
 msgstr "%pB: taille de pile spÃ©cifiÃ©e et %s dÃ©fini"
 
-#: elflink.c:6134
+#: elflink.c:6319
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr "%pB: %s pas supportÃ©"
 
-#: elflink.c:6331
+#: elflink.c:6516
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: version non dÃ©finie: %s"
 
-#: elflink.c:6902
+#: elflink.c:7088
 #, c-format
 msgid "%pB: .preinit_array section is not allowed in DSO"
 msgstr "%pB: section .preinit_array n'est pas permise dans DSO"
 
-#: elflink.c:8359
+#: elflink.c:8602
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr "rÃ©fÃ©rence %s non dÃ©finie dans le symbole complexe: %s"
 
-#: elflink.c:8514
+#: elflink.c:8757
 #, c-format
 msgid "unknown operator '%c' in complex symbol"
 msgstr "opÃ©rateur Â«Â %cÂ Â» inconnu dans le symbole complexe"
 
 #. PR 21524: Let the user know if a symbol was removed by garbage collection.
-#: elflink.c:8852
+#: elflink.c:9095
 #, c-format
 msgid "%pB:%pA: error: relocation references symbol %s which was removed by garbage collection"
 msgstr "%pB:%pA: erreur: symbole de rÃ©fÃ©rence des rÃ©adressages %s qui a Ã©tÃ© supprimÃ© par le ramasse miettes"
 
-#: elflink.c:8855
+#: elflink.c:9098
 #, c-format
 msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
 msgstr "%pB:%pA: erreur: essayez de rÃ©Ã©diter les liens avec --gc-keep-exported enabled."
 
-#: elflink.c:9091 elflink.c:9109 elflink.c:9148 elflink.c:9166
+#: elflink.c:9343 elflink.c:9361 elflink.c:9400 elflink.c:9418
 #, c-format
 msgid "%pB: unable to sort relocs - they are in more than one size"
 msgstr "%pB: impossible de trier les rÃ©adressages - plusieurs tailles rencontrÃ©es"
 
 #. The section size is not divisible by either -
 #. something is wrong.
-#: elflink.c:9125 elflink.c:9182
+#: elflink.c:9377 elflink.c:9434
 #, c-format
 msgid "%pB: unable to sort relocs - they are of an unknown size"
 msgstr "%pB: impossible de trier les rÃ©adressages - leur taille est inconnue"
 
-#: elflink.c:9234
+#: elflink.c:9486
 msgid "not enough memory to sort relocations"
 msgstr "pas assez de mÃ©moire pour trier les rÃ©adressages"
 
-#: elflink.c:9502
+#: elflink.c:9767
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr "%pB: trop de sections: %d (>= %d)"
 
-#: elflink.c:9782
+#: elflink.c:10043
 #, c-format
 msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: symbole interne Â«Â %sÂ Â» dans %pB est rÃ©fÃ©rencÃ© par DSO"
 
-#: elflink.c:9785
+#: elflink.c:10046
 #, c-format
 msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: symbole cachÃ© Â«Â %sÂ Â» dans %pB est rÃ©fÃ©rencÃ© par DSO"
 
-#: elflink.c:9788
+#: elflink.c:10049
 #, c-format
 msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: symbole local Â«Â %sÂ Â» dans %pB est rÃ©fÃ©rencÃ© par DSO"
 
-#: elflink.c:9874
+#: elflink.c:10135
 #, c-format
 msgid "%pB: could not find output section %pA for input section %pA"
 msgstr "%pB: ne peut repÃ©rer la section de sortie %pA pour la section d'entrÃ©e %pA"
 
-#: elflink.c:10028
+#: elflink.c:10289
 #, c-format
 msgid "%pB: protected symbol `%s' isn't defined"
 msgstr "%pB: symbole protÃ©gÃ© Â«Â %sÂ Â» n'est pas dÃ©fini"
 
-#: elflink.c:10031
+#: elflink.c:10292
 #, c-format
 msgid "%pB: internal symbol `%s' isn't defined"
 msgstr "%pB: symbole interne Â«Â %sÂ Â» n'est pas dÃ©fini"
 
-#: elflink.c:10034
+#: elflink.c:10295
 #, c-format
 msgid "%pB: hidden symbol `%s' isn't defined"
 msgstr "%pB: symbole cachÃ© Â«Â %sÂ Â» n'est pas dÃ©fini"
 
-#: elflink.c:10066
+#: elflink.c:10327
 #, c-format
 msgid "%pB: no symbol version section for versioned symbol `%s'"
 msgstr "%pB: pas de section de version de symbole pour le symbole avec version Â«Â %sÂ Â»"
 
-#: elflink.c:10679
+#: elflink.c:10699
+#, c-format
+msgid "warning: --enable-non-contiguous-regions discards section `%s' from '%s'\n"
+msgstr "attention: --enable-non-contiguous-regions abandonne la section Â«Â %sÂ Â» de Â«Â %sÂ Â»\n"
+
+#: elflink.c:10951
 #, c-format
 msgid "error: %pB: size of section %pA is not multiple of address size"
 msgstr "erreur: %pB: le rÃ©adressage de la section %pA n'est pas un multiple de la taille des adresses"
 
-#: elflink.c:10724
+#: elflink.c:10996
 #, c-format
 msgid "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a non-existent global symbol"
 msgstr "erreur: %pB contient un rÃ©adressage (%#<PRIx64>) pour la section %pA qui fait rÃ©fÃ©rence Ã  un symbole global inexistant"
 
-#: elflink.c:11484
+#: elflink.c:11739
 #, c-format
 msgid "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
 msgstr "%pA a, Ã  la fois, des sections ordonnÃ©es [Â«Â %pAÂ Â» dans %pB] et dÃ©sordonnÃ©es [Â«Â %pAÂ Â» dans %pB]"
 
-#: elflink.c:11490
+#: elflink.c:11745
 #, c-format
 msgid "%pA has both ordered and unordered sections"
 msgstr "%pA a, Ã  la fois, des sections ordonnÃ©es et dÃ©sordonnÃ©es"
 
-#: elflink.c:11592
+#: elflink.c:11851
 #, c-format
 msgid "%pB: no symbol found for import library"
 msgstr "%pB: aucun symbole trouvÃ© dans la bibliothÃ¨que d'importation"
 
-#: elflink.c:12225
+#: elflink.c:12488
 #, c-format
 msgid "%pB: file class %s incompatible with %s"
 msgstr "%pB: classe de fichier %s incompatible avec %s"
 
-#: elflink.c:12442
+#: elflink.c:12704
 #, c-format
 msgid "%pB: failed to generate import library"
 msgstr "%pB: Ã©chec de la gÃ©nÃ©ration de la bibliothÃ¨que d'importation"
 
-#: elflink.c:12561
+#: elflink.c:12823
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "attention: section %s a une taille nulle"
 
-#: elflink.c:12609
+#: elflink.c:12871
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr "attention: section Â«Â %sÂ Â» changÃ© en une note"
 
-#: elflink.c:12701
+#: elflink.c:12964
 msgid "%P%X: read-only segment has dynamic relocations\n"
 msgstr "%P%X: segment en lecture seule a des rÃ©adressages dynamiques\n"
 
-#: elflink.c:12704
-msgid "%P: warning: creating a DT_TEXTREL in a shared object\n"
-msgstr "%P: attention: crÃ©ation d'un DT_TEXTREL dans un objet partagÃ©\n"
+#: elflink.c:12967
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
+msgstr "%P: attention: crÃ©ation de DT_TEXTREL dans un objet partagÃ©\n"
+
+#: elflink.c:12970
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr "%P: attention: crÃ©ation de DT_TEXTREL dans un PIE\n"
 
-#: elflink.c:12829
+#: elflink.c:13095
 msgid "%P%X: can not read symbols: %E\n"
 msgstr "%P%X: ne peut pas lire les symboles: %E\n"
 
-#: elflink.c:13002
-msgid "%F%P: corrupt input: %pB\n"
-msgstr "%F%P: entrÃ©e corrompue: %pB\n"
+#: elflink.c:13500
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%F%P: %pB(%pA): erreur: une section linked-to est requise pour --gc-sections\n"
 
-#: elflink.c:13668
+#: elflink.c:13961
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
 msgstr "%pB: %pA+%#<PRIx64>: Pas de symbole trouvÃ© pour INHERIT"
 
-#: elflink.c:13844
+#: elflink.c:14002
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: section Â«Â %pAÂ Â»: entrÃ©e VTENTRY corrompue"
+
+#: elflink.c:14145
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr "INPUT_SECTION_FLAG %s non reconnu\n"
 
-#: elfxx-mips.c:1450
+#: elflink.c:14891
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr "%P: %pB: attention: rÃ©adressage sur Â«Â %sÂ Â» dans la section en lecture seule Â«Â %pAÂ Â»\n"
+
+#: elflink.c:14980
+msgid "%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s\n"
+msgstr "%P: attention: les fonctions indirectes GNU avec DT_TEXTREL pourraient rÃ©sulter en un plantage Ã  l'exÃ©cution; recompilez avec %s\n"
+
+#: elfxx-aarch64.c:477
+#, c-format
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr "%pB: avertissement: Le TLS faible est dÃ©fini par l'implÃ©mentation et pourrait ne pas fonctionner comme attendu"
+
+#: elfxx-aarch64.c:738 elfnn-aarch64.c:9902 elfnn-aarch64.c:9909
+#, c-format
+msgid "%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section."
+msgstr "%pB: avertissement: BTI activÃ© par -z force-bti alors que toutes les entrÃ©es n'ont pas BTI dans la section NOTE."
+
+#: elfxx-aarch64.c:758 elfxx-x86.c:2554
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: Ã©chec lors de la crÃ©ation de la section des propriÃ©tÃ©s GNU\n"
+
+#: elfxx-aarch64.c:762 elfxx-x86.c:2559
+#, c-format
+msgid "%F%pA: failed to align section\n"
+msgstr "%F%pA: Ã©chec lors de l'alignement de la section\n"
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "erreur: %pB: <la taille utilisÃ©e par AArch64 est corrompue: 0x%x>"
+
+#: elfxx-mips.c:1507
 msgid "static procedure (no name)"
 msgstr "procÃ©dure statique (sans name)"
 
-#: elfxx-mips.c:5718
+#: elfxx-mips.c:5782
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr "Des fonctions MIPS16 et microMIPS ne peuvent pas s'appeler l'une l'autre"
 
-#: elfxx-mips.c:6485
+#: elfxx-mips.c:6547
 msgid "%X%H: unsupported JALX to the same ISA mode\n"
 msgstr "%X%H: JALX vers le mÃªme mode ISA n'est pas supportÃ©\n"
 
-#: elfxx-mips.c:6518
+#: elfxx-mips.c:6580
 msgid "%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
 msgstr "%X%H: saut non supportÃ© entre modes ISAÂ ; envisagez de recompiler avec l'interliage activÃ©\n"
 
-#: elfxx-mips.c:6563
+#: elfxx-mips.c:6625
 msgid "%X%H: cannot convert branch between ISA modes to JALX: relocation out of range\n"
 msgstr "%X%H: impossible de convertir les branchements vers JALX entre modes ISA: rÃ©adressage hors portÃ©e\n"
 
-#: elfxx-mips.c:6575
+#: elfxx-mips.c:6637
 msgid "%X%H: unsupported branch between ISA modes\n"
 msgstr "%X%H: branchement entre modes ISA non supportÃ©\n"
 
-#: elfxx-mips.c:7223
+#: elfxx-mips.c:7286
 #, c-format
 msgid "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
 msgstr "%pB: taille de section Â«Â .reginfoÂ Â» incorrecte; %<PRIu64> attendu, %<PRIu64> obtenu"
 
-#: elfxx-mips.c:7267 elfxx-mips.c:7502
+#: elfxx-mips.c:7330 elfxx-mips.c:7567
 #, c-format
 msgid "%pB: warning: bad `%s' option size %u smaller than its header"
 msgstr "%pB: attention: mauvaise Â«Â %sÂ Â» taille d'option %u plus petite que son en-tÃªte"
 
-#: elfxx-mips.c:8300 elfxx-mips.c:8426
+#: elfxx-mips.c:8374 elfxx-mips.c:8500
 #, c-format
 msgid "%pB: warning: cannot determine the target function for stub section `%s'"
 msgstr "%pB: attention: ne peut pas dÃ©terminer la fonction cible de la section d'Ã©bauche Â«Â %sÂ Â»"
 
-#: elfxx-mips.c:8558
+#: elfxx-mips.c:8632
 #, c-format
 msgid "%pB: malformed reloc detected for section %s"
 msgstr "%pB: rÃ©adressage mal composÃ© dÃ©tectÃ© dans la section %s"
 
-#: elfxx-mips.c:8658
+#: elfxx-mips.c:8731
 #, c-format
 msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
 msgstr "%pB: rÃ©adressage GOT Ã  %#<PRIx64> pas attendu dans les exÃ©cutables"
 
-#: elfxx-mips.c:8796
+#: elfxx-mips.c:8871
 #, c-format
 msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: Le rÃ©adressage CALL16 Ã  %#<PRIx64> n'est pas sur un symbole global"
 
-#: elfxx-mips.c:9086
+#: elfxx-mips.c:9174
 #, c-format
 msgid "%X%H: relocation %s against `%s' cannot be used when making a shared object; recompile with -fPIC\n"
 msgstr "%X%H: rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC\n"
 
-#: elfxx-mips.c:9422
+#: elfxx-mips.c:9300
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr "Symbole IFUNC %s dans la table des symboles dynamiques â€“ IFUNC n'est pas supportÃ©"
+
+#: elfxx-mips.c:9303
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "symbole non dynamique %s dans la table des symboles dynamiques"
+
+#: elfxx-mips.c:9523
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr "rÃ©adressages non dynamiques font rÃ©fÃ©rence au symbole dynamique %s"
 
-#: elfxx-mips.c:10350
+#: elfxx-mips.c:10457
 #, c-format
 msgid "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in section `%pA'"
 msgstr "%pB: ne trouve pas de rÃ©adressage LO16 correspondant sur Â«Â %sÂ Â» pour %s Ã  %#<PRIx64> de la section Â«Â %pAÂ Â»"
 
-#: elfxx-mips.c:10490
+#: elfxx-mips.c:10597
 msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
 msgstr "la taille des petites donnÃ©es de la section dÃ©passe 64KB; abaissez la limite de taille des petites donnÃ©es (voyez l'option -G)"
 
-#: elfxx-mips.c:10509
+#: elfxx-mips.c:10616
 msgid "cannot convert a jump to JALX for a non-word-aligned address"
 msgstr "impossible de convertir un saut vers JALX pour une adresse non alignÃ©e sur un mot"
 
-#: elfxx-mips.c:10512
+#: elfxx-mips.c:10619
 msgid "jump to a non-word-aligned address"
 msgstr "saut vers une adresse non alignÃ©e sur un mot"
 
-#: elfxx-mips.c:10513
+#: elfxx-mips.c:10620
 msgid "jump to a non-instruction-aligned address"
 msgstr "saut vers une adresse non alignÃ©e sur une instruction"
 
-#: elfxx-mips.c:10516
+#: elfxx-mips.c:10623
 msgid "cannot convert a branch to JALX for a non-word-aligned address"
 msgstr "impossible de convertir un branchement vers JALX pour une adresse non alignÃ©e sur un mot"
 
-#: elfxx-mips.c:10518
+#: elfxx-mips.c:10625
 msgid "branch to a non-instruction-aligned address"
 msgstr "branchement vers une adresse non alignÃ©e sur une instruction"
 
-#: elfxx-mips.c:10520
+#: elfxx-mips.c:10627
 msgid "PC-relative load from unaligned address"
 msgstr "Chargement relatif au PC depuis une adresse non alignÃ©e"
 
-#: elfxx-mips.c:10798
+#: elfxx-mips.c:10927
 #, c-format
 msgid "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
 msgstr "%pB: l'entrÃ©e VMA Â«Â %pAÂ Â» de %#<PRIx64> est en dehors de la plage 32 bits supportÃ©e; envisagez d'utiliser Â«Â -Ttext-segment=â€¦Â Â»"
 
-#: elfxx-mips.c:10911 elfxx-mips.c:11484
+#: elfxx-mips.c:11042 elfxx-mips.c:11629
 #, c-format
 msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
 msgstr "%pB: Â«Â %pAÂ Â» offset de %<PRId64> depuis Â«Â %pAÂ Â» au delÃ  de la limite de ADDIUPC"
 
-#: elfxx-mips.c:11456
+#: elfxx-mips.c:11601
 #, c-format
 msgid "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
 msgstr "%pB: le dÃ©but VMA Â«Â %pAÂ Â» de %#<PRIx64> est en dehors de la plage 32 bits supportÃ©e; envisagez d'utiliser Â«Â -Ttext-segment=â€¦Â Â»"
 
-#: elfxx-mips.c:14397
+#: elfxx-mips.c:14556
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr "%pB: Architecture %s inconnue"
 
-#: elfxx-mips.c:14931
+#: elfxx-mips.c:15090
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr "%pB: nom illÃ©gal de section Â«Â %pAÂ Â»"
 
-#: elfxx-mips.c:15208
+#: elfxx-mips.c:15367
 #, c-format
 msgid "%pB: warning: linking abicalls files with non-abicalls files"
 msgstr "%pB: attention: Ã©dition de liens des fichiers abicalls avec des fichiers non abicalls"
 
-#: elfxx-mips.c:15225
+#: elfxx-mips.c:15384
 #, c-format
 msgid "%pB: linking 32-bit code with 64-bit code"
 msgstr "%pB: Ã©dition de liens de code 32 bits avec du code 64 bits"
 
-#: elfxx-mips.c:15257 elfxx-mips.c:15323 elfxx-mips.c:15338
+#: elfxx-mips.c:15416 elfxx-mips.c:15482 elfxx-mips.c:15497
 #, c-format
 msgid "%pB: linking %s module with previous %s modules"
 msgstr "%pB: Ã©dition de liens du module %s avec les modules prÃ©cÃ©dents %s"
 
-#: elfxx-mips.c:15281
+#: elfxx-mips.c:15440
 #, c-format
 msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
 msgstr "%pB: ABI ne concorde pas: Ã©dition de lien du module %s avec les modules prÃ©cÃ©dents %s"
 
-#: elfxx-mips.c:15306
+#: elfxx-mips.c:15465
 #, c-format
 msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
 msgstr "%pB: ASE ne concorde pas: Ã©dition de lien du module %s avec les modules prÃ©cÃ©dents %s"
 
-#: elfxx-mips.c:15440
+#: elfxx-mips.c:15599
 #, c-format
 msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %d"
 msgstr "Attention: %pB utilise l'ABI virgule flottante inconnue %d (dÃ©finie par %pB), %pB utilise l'ABI virgule flottante inconnue %d"
 
-#: elfxx-mips.c:15446
+#: elfxx-mips.c:15605
 #, c-format
 msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
 msgstr "Attention: %pB utilise l'ABI virgule flottante inconnue %d (dÃ©finie par %pB), %pB utilise %s"
 
-#: elfxx-mips.c:15452
+#: elfxx-mips.c:15611
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
 msgstr "Attention: %pB utilise %s (dÃ©fini par %pB), %pB utilise l'ABI virgule flottante inconnue %d"
 
-#: elfxx-mips.c:15466
+#: elfxx-mips.c:15625
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
 msgstr "Attention: %pB utilise %s (dÃ©fini par %pB), %pB utilise Â«Â %sÂ Â»"
 
-#: elfxx-mips.c:15485
+#: elfxx-mips.c:15644
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr "Attention: %pB utilise %s (dÃ©fini par %pB), %pB utilise l'ABI MSA inconnue %d"
 
-#: elfxx-mips.c:15497
+#: elfxx-mips.c:15656
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
 msgstr "Attention: %pB utilise l'ABI MSA inconnue %d (dÃ©finie par %pB), %pB utilise %s"
 
-#: elfxx-mips.c:15506
+#: elfxx-mips.c:15665
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr "Attention: %pB utilise l'ABI MSA inconnue %d (dÃ©finie par %pB), %pB utilise l'ABI MSA inconnue %d"
 
-#: elfxx-mips.c:15568
+#: elfxx-mips.c:15727
 #, c-format
 msgid "%pB: endianness incompatible with that of the selected emulation"
 msgstr "%pB: systÃ¨me de poids fort ou faible incompatible avec celui sÃ©lectionnÃ© pour l'Ã©mulation"
 
-#: elfxx-mips.c:15582
+#: elfxx-mips.c:15741
 #, c-format
 msgid "%pB: ABI is incompatible with that of the selected emulation"
 msgstr "%pB: ABI est incompatible avec celui sÃ©lectionnÃ© pour l'Ã©mulation"
 
-#: elfxx-mips.c:15634
+#: elfxx-mips.c:15794
 #, c-format
 msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
 msgstr "%pB: attention: ISA incohÃ©rentes entre e_flags et .MIPS.abiflags"
 
-#: elfxx-mips.c:15639
+#: elfxx-mips.c:15799
 #, c-format
 msgid "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
 msgstr "%pB: attention: ABI FP incohÃ©rentes entre .gnu.attributes and .MIPS.abiflags"
 
-#: elfxx-mips.c:15643
+#: elfxx-mips.c:15803
 #, c-format
 msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
 msgstr "%pB: attention: ASE incohÃ©rents entre e_flags et .MIPS.abiflags"
 
-#: elfxx-mips.c:15650
+#: elfxx-mips.c:15810
 #, c-format
 msgid "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
 msgstr "%pB: attention: extensions ISA incohÃ©rentes entre e_flags et .MIPS.abiflags"
 
-#: elfxx-mips.c:15654
+#: elfxx-mips.c:15814
 #, c-format
 msgid "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
 msgstr "%pB: attention: fanion inattendu dans le champ flags2 de .MIPS.abiflags (0x%lx)"
 
-#: elfxx-mips.c:15843
+#: elfxx-mips.c:16005
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr "-mips32r2 -mfp64 (12 callee-saved)"
 
-#: elfxx-mips.c:15905 elfxx-mips.c:15916
+#: elfxx-mips.c:16067 elfxx-mips.c:16078
 msgid "None"
 msgstr "aucun"
 
-#: elfxx-mips.c:15907 elfxx-mips.c:15976
+#: elfxx-mips.c:16069 elfxx-mips.c:16138
 msgid "Unknown"
 msgstr "Inconnu"
 
-#: elfxx-mips.c:15987
+#: elfxx-mips.c:16149
 #, c-format
 msgid "Hard or soft float\n"
 msgstr "Flottant matÃ©riel ou logiciel\n"
 
-#: elfxx-mips.c:15990
+#: elfxx-mips.c:16152
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr "Flottant matÃ©riel (double prÃ©cision)\n"
 
-#: elfxx-mips.c:15993
+#: elfxx-mips.c:16155
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr "Flottant matÃ©riel (simple prÃ©cision)\n"
 
-#: elfxx-mips.c:15996
+#: elfxx-mips.c:16158
 #, c-format
 msgid "Soft float\n"
 msgstr "Flottant logiciel\n"
 
-#: elfxx-mips.c:15999
+#: elfxx-mips.c:16161
 #, c-format
 msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
 msgstr "Flottant matÃ©riel (MIPS32r2 64 bits FPU 12 callee-saved)\n"
 
-#: elfxx-mips.c:16002
+#: elfxx-mips.c:16164
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
 msgstr "Flottant matÃ©riel (processeur 32 bits, tout coprocesseur)\n"
 
-#: elfxx-mips.c:16005
+#: elfxx-mips.c:16167
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
 msgstr "Flottant matÃ©riel (processeur 32 bits, coprocesseur 64 bits)\n"
 
-#: elfxx-mips.c:16008
+#: elfxx-mips.c:16170
 #, c-format
 msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
 msgstr "CompatibilitÃ© flottant matÃ©riel (processeur 32 bits, coprocesseur 64 bits)\n"
 
-#: elfxx-mips.c:16040
+#: elfxx-mips.c:16202
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:16042
+#: elfxx-mips.c:16204
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:16044
+#: elfxx-mips.c:16206
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:16046
+#: elfxx-mips.c:16208
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:16048
+#: elfxx-mips.c:16210
 #, c-format
 msgid " [abi unknown]"
 msgstr " [abi inconnu]"
 
-#: elfxx-mips.c:16050
+#: elfxx-mips.c:16212
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:16052
+#: elfxx-mips.c:16214
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:16054
+#: elfxx-mips.c:16216
 #, c-format
 msgid " [no abi set]"
 msgstr " [aucun jeu abi]"
 
-#: elfxx-mips.c:16079
+#: elfxx-mips.c:16241
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [ISA inconnu]"
 
-#: elfxx-mips.c:16099
+#: elfxx-mips.c:16261
 #, c-format
 msgid " [not 32bitmode]"
 msgstr " [aucun mode 32 bits]"
 
-#: elfxx-sparc.c:3113
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5286
+#: elfxx-riscv.c:1063
+#, c-format
+msgid "-march=%s: Expect number after `%dp'."
+msgstr "-march=%s: Nombre attendu aprÃ¨s Â«Â %dpÂ Â»."
+
+#: elfxx-riscv.c:1174
+#, c-format
+msgid "-march=%s: rv%de is not a valid base ISA"
+msgstr "-march=%s: rv%de n'est pas une base ISA valable"
+
+#: elfxx-riscv.c:1214
+#, c-format
+msgid "-march=%s: first ISA subset must be `e', `i' or `g'"
+msgstr "-march=%s: le premier sous-ensemble ISA doit Ãªtre Â«Â eÂ Â», Â«Â iÂ Â» ou Â«Â gÂ Â»"
+
+#: elfxx-riscv.c:1242
+#, c-format
+msgid "-march=%s: unsupported ISA subset `%c'"
+msgstr "-march=%s: sous-ensemble ISA Â«Â %cÂ Â» non supportÃ©"
+
+#: elfxx-riscv.c:1245
+#, c-format
+msgid "-march=%s: ISA string is not in canonical order. `%c'"
+msgstr "-march=%s: la chaÃ®ne ISA n'est pas dans l'ordre canonique. Â«Â %cÂ Â»"
+
+#: elfxx-riscv.c:1364
+#, c-format
+msgid "-march=%s: Invalid or unknown %s ISA extension: '%s'"
+msgstr "-march=%s: Extension ISA %s invalide ou inconnueÂ : Â«Â %sÂ Â»"
+
+#: elfxx-riscv.c:1375
+#, c-format
+msgid "-march=%s: Duplicate %s ISA extension: '%s'"
+msgstr "-march=%s: Extension ISA %s dupliquÃ©eÂ : Â«Â %sÂ Â»"
+
+#: elfxx-riscv.c:1386
+#, c-format
+msgid "-march=%s: %s ISA extension not in alphabetical order: '%s' must come before '%s'."
+msgstr "-march=%s: extension ISA %s pas dans l'ordre alphabÃ©tiqueÂ : Â«Â %sÂ Â» doit apparaÃ®tre avant Â«Â %sÂ Â»."
+
+#: elfxx-riscv.c:1407
+#, c-format
+msgid "-march=%s: %s must separate with _"
+msgstr "-march=%s: %s doit sÃ©parer avec _"
+
+#: elfxx-riscv.c:1523
+#, c-format
+msgid "-march=%s: ISA string must begin with rv32 or rv64"
+msgstr "-march=%s: la chaÃ®ne ISA doit commencer par rv32 ou rv64"
+
+#: elfxx-riscv.c:1544
+#, c-format
+msgid "-march=%s: unexpected ISA string at end: %s"
+msgstr "-march=%s: chaÃ®ne ISA inattendue Ã  la finÂ : %s"
+
+#: elfxx-riscv.c:1553
+#, c-format
+msgid "-march=%s: rv32e does not support the `f' extension"
+msgstr "-march=%s: rv32e ne supporte pas l'extension Â«Â fÂ Â»"
+
+#: elfxx-riscv.c:1562
+#, c-format
+msgid "-march=%s: `d' extension requires `f' extension"
+msgstr "-march=%s: l'extension Â«Â dÂ Â» requiert l'extension Â«Â fÂ Â»"
+
+#: elfxx-riscv.c:1571
+#, c-format
+msgid "-march=%s: `q' extension requires `d' extension"
+msgstr "-march=%s: l'extension Â«Â qÂ Â» requiert l'extension Â«Â dÂ Â»"
+
+#: elfxx-riscv.c:1579
+#, c-format
+msgid "-march=%s: rv32 does not support the `q' extension"
+msgstr "-march=%s: rv32 ne supporte pas l'extension Â«Â qÂ Â»"
+
+#: elfxx-sparc.c:3002 elfnn-aarch64.c:5530
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
 msgstr "%pB: le rÃ©adressage %s sur le symbole STT_GNU_IFUNC Â«Â %sÂ Â» n'est pas gÃ©rÃ© par %s"
 
-#: elfxx-tilegx.c:4254
+#: elfxx-tilegx.c:4128
 #, c-format
 msgid "%pB: cannot link together %s and %s objects"
 msgstr "%pB: ne peut lier ensemble les objets %s et %s"
 
-#: elfxx-x86.c:578
+#: elfxx-x86.c:976
 #, c-format
-msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
-msgstr "%P: %pB: attention: rÃ©adressage sur Â«Â %sÂ Â» dans la section en lecture seule Â«Â %pAÂ Â»\n"
+msgid "%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%F%P: %pB: le rÃ©adressage de %s par rapport au symbole absolu Â«Â %sÂ Â» dans la section Â«Â %pAÂ Â» est interdit\n"
 
-#: elfxx-x86.c:1027
+#: elfxx-x86.c:1058
 msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
 msgstr "%P: %pB: attention: rÃ©adressage dans la section Â«Â %pAÂ Â» en lecture seule\n"
 
-#: elfxx-x86.c:1383
-msgid "%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC\n"
-msgstr "%P%X: le segment en lecture seule a des rÃ©adressages IFUNC dynamiques; recompilez avec -fPIC\n"
-
-#: elfxx-x86.c:2384
+#: elfxx-x86.c:2314
 #, c-format
 msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
 msgstr "erreur: %pB: <la taille de la propriÃ©tÃ© x86 (0x%x) est corrompue: 0x%x>"
 
-#: elfxx-x86.c:2609
-msgid "%F%P: failed to create GNU property section\n"
-msgstr "%F%P: Ã©chec lors de la crÃ©ation de la section des propriÃ©tÃ©s GNU\n"
+#: elfxx-x86.c:2580
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: avertissement: %s manquant\n"
+
+#: elfxx-x86.c:2582
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: erreur: %s manquant\n"
+
+#: elfxx-x86.c:2605
+msgid "IBT and SHSTK properties"
+msgstr "propriÃ©tÃ©s IBT et SHSTK"
+
+#: elfxx-x86.c:2607
+msgid "IBT property"
+msgstr "propriÃ©tÃ© IBT"
 
-#: elfxx-x86.c:2614
-#, c-format
-msgid "%F%pA: failed to align section\n"
-msgstr "%F%pA: Ã©chec lors de l'alignement de la section\n"
+#: elfxx-x86.c:2609
+msgid "SHSTK property"
+msgstr "propriÃ©tÃ© SHSTK"
 
-#: elfxx-x86.c:2760
+#: elfxx-x86.c:2753
 msgid "%F%P: failed to create VxWorks dynamic sections\n"
 msgstr "%F%P: Ã©chec lors de la crÃ©ation des sections dynamiques VxWorks\n"
 
-#: elfxx-x86.c:2769
+#: elfxx-x86.c:2762
 msgid "%F%P: failed to create GOT sections\n"
 msgstr "%F%P: Ã©chec lors de la crÃ©ation des sections GOT\n"
 
-#: elfxx-x86.c:2787
+#: elfxx-x86.c:2780
 msgid "%F%P: failed to create ifunc sections\n"
 msgstr "%F%P: Ã©chec lors de la crÃ©ation des sections ifunc\n"
 
-#: elfxx-x86.c:2828
+#: elfxx-x86.c:2817
 msgid "%F%P: failed to create GOT PLT section\n"
 msgstr "%F%P: Ã©chec lors de la crÃ©ation de la section PLT GOT\n"
 
-#: elfxx-x86.c:2849
+#: elfxx-x86.c:2836
 msgid "%F%P: failed to create IBT-enabled PLT section\n"
 msgstr "%F%P: Ã©chec lors de la crÃ©ation de la section PLT activÃ©e pour IBT\n"
 
-#: elfxx-x86.c:2864
+#: elfxx-x86.c:2850
 msgid "%F%P: failed to create BND PLT section\n"
 msgstr "%F%P: Ã©chec lors de la crÃ©ation de la section PLT BND\n"
 
-#: elfxx-x86.c:2885
+#: elfxx-x86.c:2870
 msgid "%F%P: failed to create PLT .eh_frame section\n"
 msgstr "%F%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT\n"
 
-#: elfxx-x86.c:2898
+#: elfxx-x86.c:2883
 msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
 msgstr "%F%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT GOT\n"
 
-#: elfxx-x86.c:2912
+#: elfxx-x86.c:2897
 msgid "%F%P: failed to create the second PLT .eh_frame section\n"
 msgstr "%F%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT\n"
 
+#: elfxx-x86.c:2939
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr "%X%P: Ã©dition de lien statique tentÃ©e sur l'objet dynamique Â«Â %pBÂ Â»\n"
+
 #: ihex.c:230
 #, c-format
 msgid "%pB:%d: unexpected character `%s' in Intel Hex file"
@@ -5113,67 +5405,67 @@ msgstr "%pB:%d: caractÃ¨re inattendu Â«Â
 msgid "%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"
 msgstr "%pB:%u: somme de contrÃ´le erronÃ©e dans le fichier Intel hexadÃ©cimal (attendu %u, obtenu %u)"
 
-#: ihex.c:394
+#: ihex.c:393
 #, c-format
 msgid "%pB:%u: bad extended address record length in Intel Hex file"
 msgstr "%pB:%u: longueur erronÃ©e de l'enregistrement d'adresse Ã©tendue dans le fichier Intel hexadÃ©cimal"
 
-#: ihex.c:412
+#: ihex.c:411
 #, c-format
 msgid "%pB:%u: bad extended start address length in Intel Hex file"
 msgstr "%pB:%u: longueur erronÃ©e d'adresse Ã©tendue de dÃ©but dans le fichier Intel hexadÃ©cimal"
 
-#: ihex.c:430
+#: ihex.c:429
 #, c-format
 msgid "%pB:%u: bad extended linear address record length in Intel Hex file"
 msgstr "%pB:%u: longueur erronÃ©e de l'enregistrement d'adresse Ã©tendue linÃ©aire dans le fichier Intel hexadÃ©cimal"
 
-#: ihex.c:448
+#: ihex.c:447
 #, c-format
 msgid "%pB:%u: bad extended linear start address length in Intel Hex file"
 msgstr "%pB:%u: longueur erronÃ©e d'adresse Ã©tendue linÃ©aire de dÃ©but dans le fichier Intel hexadÃ©cimal"
 
-#: ihex.c:466
+#: ihex.c:465
 #, c-format
 msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
 msgstr "%pB:%u: type ihex %u non reconnu dans le fichier Intel hexadÃ©cimal"
 
-#: ihex.c:585
+#: ihex.c:581
 #, c-format
 msgid "%pB: internal error in ihex_read_section"
 msgstr "%pB: erreur interne dans ihex_read_section"
 
-#: ihex.c:619
+#: ihex.c:614
 #, c-format
 msgid "%pB: bad section length in ihex_read_section"
 msgstr "%pB: longueur erronÃ©e de section dans ihex_read_section"
 
-#: ihex.c:793
+#: ihex.c:785
 #, c-format
 msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
 msgstr "%pB: l'adresse 64 bits %#<PRIx64> hors limite pour le fichier Intel hexadÃ©cimal"
 
-#: ihex.c:852
+#: ihex.c:843
 #, c-format
 msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
 msgstr "%pB: adresse %#<PRIx64> hors limite pour le fichier Intel hexadÃ©cimal"
 
-#: libbfd.c:937
+#: libbfd.c:884
 #, c-format
 msgid "%pB: unable to get decompressed section %pA"
 msgstr "%pB: impossible d'obtenir la section dÃ©compressÃ©e %pA"
 
-#: libbfd.c:1101
+#: libbfd.c:1048
 #, c-format
 msgid "Deprecated %s called at %s line %d in %s\n"
 msgstr "%s dÃ©prÃ©ciÃ© appelÃ© Ã  %s dans la ligne %d dans %s\n"
 
-#: libbfd.c:1104
+#: libbfd.c:1051
 #, c-format
 msgid "Deprecated %s called\n"
 msgstr "%s appel dÃ©prÃ©ciÃ©\n"
 
-#: linker.c:1697
+#: linker.c:1696
 #, c-format
 msgid "%pB: indirect symbol `%s' to `%s' is a loop"
 msgstr "%pB: symbole indirect Â«Â %sÂ Â» vers Â«Â %sÂ Â» est une boucle"
@@ -5183,179 +5475,213 @@ msgstr "%pB: symbole indirect Â«Â %sÂ Â»
 msgid "attempt to do relocatable link with %s input and %s output"
 msgstr "tentative de rÃ©adressage d'un lien avec %s Ã  l'entrÃ©e et %s Ã  la sortie"
 
-#: linker.c:2853
+#: linker.c:2852
 #, c-format
 msgid "%pB: ignoring duplicate section `%pA'\n"
 msgstr "%pB: ignore les sections dupliquÃ©es Â«Â %pAÂ Â»\n"
 
-#: linker.c:2863 linker.c:2873
+#: linker.c:2862 linker.c:2872
 #, c-format
 msgid "%pB: duplicate section `%pA' has different size\n"
 msgstr "%pB: section dupliquÃ©e Â«Â %pAÂ Â» avec des tailles diffÃ©rentes\n"
 
-#: linker.c:2882 linker.c:2888
+#: linker.c:2881 linker.c:2887
 #, c-format
 msgid "%pB: could not read contents of section `%pA'\n"
 msgstr "%pB: ne peut pas lire le contenu de la section Â«Â %pAÂ Â»\n"
 
-#: linker.c:2893
+#: linker.c:2892
 #, c-format
 msgid "%pB: duplicate section `%pA' has different contents\n"
 msgstr "%pB: section dupliquÃ©e Â«Â %pAÂ Â» a des contenus diffÃ©rents\n"
 
-#: linker.c:3407
+#: linker.c:3404
 #, c-format
 msgid "%pB: compiled for a big endian system and target is little endian"
 msgstr "%pB: compilÃ© pour un systÃ¨me Ã  octets de poids fort alors que la cible est un systÃ¨me Ã  octets de poids faible"
 
-#: linker.c:3410
+#: linker.c:3407
 #, c-format
 msgid "%pB: compiled for a little endian system and target is big endian"
 msgstr "%pB: compilÃ© pour un systÃ¨me Ã  octets de poids faible alors que la cible est un systÃ¨me Ã  octets de poids fort"
 
-#: mach-o.c:632
+#: mach-o-arm.c:172
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr "paire de rÃ©adressage mach-o ARM mal formÃ©eÂ : le rÃ©adressage est le premier rÃ©adressage"
+
+#: mach-o-arm.c:188
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr "paire de rÃ©adressage mach-o ARM mal formÃ©eÂ : longueur invalideÂ : %d"
+
+#: mach-o-arm.c:203
+#, c-format
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr "rÃ©adressage mach-o ARM sectdiff mal formÃ©Â : longueur invalideÂ : %d"
+
+#: mach-o-arm.c:218
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr "rÃ©adressage mach-o ARM local sectdiff mal formÃ©Â : longueur invalideÂ : %d"
+
+#: mach-o-arm.c:233
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr "rÃ©adressage mach-o ARM half sectdiffÂ : longueur invalideÂ : %d"
+
+#: mach-o-arm.c:265
+#, c-format
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr "rÃ©adressage mach-o ARM vanilla mal formÃ©Â : longueur invalideÂ : %d (pcrelÂ : %d)"
+
+#: mach-o-arm.c:329
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr "rÃ©adressage mach-o ARM mal formÃ©Â : type de rÃ©adressage inconnuÂ : %d"
+
+#: mach-o.c:633
 #, c-format
 msgid "<unknown mask flags>"
 msgstr "<fanions de masque inconnus>"
 
-#: mach-o.c:687
+#: mach-o.c:688
 msgid " (<unknown>)"
 msgstr "(<inconnu>)"
 
-#: mach-o.c:698
+#: mach-o.c:699
 #, c-format
 msgid " MACH-O header:\n"
 msgstr "En-tÃªte MACH-O:\n"
 
-#: mach-o.c:699
+#: mach-o.c:700
 #, c-format
 msgid "   magic:      %#lx\n"
 msgstr "  magique:     %#lx\n"
 
-#: mach-o.c:700
+#: mach-o.c:701
 #, c-format
 msgid "   cputype:    %#lx (%s)\n"
 msgstr "  typecpu:     %#lx (%s)\n"
 
-#: mach-o.c:702
+#: mach-o.c:703
 #, c-format
 msgid "   cpusubtype: %#lx%s\n"
 msgstr "  soustypecpu: %#lx%s\n"
 
-#: mach-o.c:704
+#: mach-o.c:705
 #, c-format
 msgid "   filetype:   %#lx\n"
 msgstr "  typefichier: %#lx\n"
 
-#: mach-o.c:705
+#: mach-o.c:706
 #, c-format
 msgid "   ncmds:      %#lx\n"
 msgstr "  ncmds:       %#lx\n"
 
-#: mach-o.c:706
+#: mach-o.c:707
 #, c-format
 msgid "   sizeocmds:  %#lx\n"
 msgstr "  taillecmds:  %#lx\n"
 
-#: mach-o.c:707
+#: mach-o.c:708
 #, c-format
 msgid "   flags:      %#lx\n"
 msgstr "  fanions:     %#lx\n"
 
-#: mach-o.c:708
+#: mach-o.c:709
 #, c-format
 msgid "   version:    %x\n"
 msgstr "  version:     %x\n"
 
 #. Urg - what has happened ?
-#: mach-o.c:743
+#: mach-o.c:744
 #, c-format
 msgid "incompatible cputypes in mach-o files: %ld vs %ld"
 msgstr "cputypes incompatibles dans les fichiers mach-o: %ld vs %ld"
 
-#: mach-o.c:912
+#: mach-o.c:913
 msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
 msgstr "bfd_mach_o_canonicalize_symtab: impossible de charger les symboles"
 
-#: mach-o.c:2108
+#: mach-o.c:1505
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr "rÃ©adressage mach-o mal formÃ©Â : l'index de section est plus grand que le nombre de sections"
+
+#: mach-o.c:2139
 msgid "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands."
 msgstr "dÃ©solÃ©: modtab, toc et extrefsyms ne sont pas encore implÃ©mentÃ©s pour les commandes dysymtab."
 
-#: mach-o.c:2554
+#: mach-o.c:2587
 #, c-format
 msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
 msgstr "mach-o: il y a trop de sections (%u) le maximum est 255,\n"
 
-#: mach-o.c:2661
+#: mach-o.c:2694
 #, c-format
 msgid "unable to allocate data for load command %#x"
 msgstr "impossible d'allouer les donnÃ©es pour la commande de chargement %#x"
 
-#: mach-o.c:2766
+#: mach-o.c:2799
 #, c-format
 msgid "unable to write unknown load command %#x"
 msgstr "impossible d'Ã©crire la commande de chargement inconnue %#x"
 
-#: mach-o.c:2950
+#: mach-o.c:2983
 #, c-format
 msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
 msgstr "adresse de section (%#<PRIx64>) en deÃ§Ã  du dÃ©but du segment (%#<PRIx64>)"
 
-#: mach-o.c:3092
+#: mach-o.c:3125
 #, c-format
 msgid "unable to layout unknown load command %#x"
 msgstr "impossible de disposer la commande de chargement inconnue %#x"
 
-#: mach-o.c:3628
+#: mach-o.c:3660
 #, c-format
 msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 instead"
 msgstr "bfd_mach_o_read_section_32: valeur d'alignement dÃ©mesurÃ©e: %#lx, utilise 32 Ã  la place"
 
-#: mach-o.c:3671
+#: mach-o.c:3703
 #, c-format
 msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 instead"
 msgstr "bfd_mach_o_read_section_64: valeur d'alignement dÃ©mesurÃ©e: %#lx, utilise 32 Ã  la place"
 
-#: mach-o.c:3722
+#: mach-o.c:3754
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
 msgstr "bfd_mach_o_read_symtab_symbol: impossible de lire %d octets Ã  %u"
 
-#: mach-o.c:3741
+#: mach-o.c:3773
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
 msgstr "bfd_mach_o_read_symtab_symbol: nom hors limites (%lu >= %u)"
 
-#: mach-o.c:3824
+#: mach-o.c:3856
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d (max %lu): setting to undefined"
 msgstr "bfd_mach_o_read_symtab_symbol: le symbole Â«Â %sÂ Â» spÃ©cifie la section %d invalide (max %lu): laissÃ© non dÃ©fini"
 
-#: mach-o.c:3843
+#: mach-o.c:3875
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x%x: setting to undefined"
 msgstr "bfd_mach_o_read_symtab_symbol: symbole Â«Â %sÂ Â» spÃ©cifie le champ de type 0x%x invalide: laissÃ© non dÃ©fini"
 
-#: mach-o.c:3920
-msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
-msgstr "bfd_mach_o_read_symtab_symbols: impossible d'allouer la mÃ©moire pour les symboles"
-
-#: mach-o.c:4931
+#: mach-o.c:5064
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr "%pB: commande de chargement inconnue %#x"
 
-#: mach-o.c:5122
+#: mach-o.c:5263
 #, c-format
 msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
 msgstr "bfd_mach_o_scan: architecture 0x%lx/0x%lx inconnue"
 
-#: mach-o.c:5227
+#: mach-o.c:5385
 #, c-format
 msgid "unknown header byte-order value %#x"
 msgstr "la valeur d'ordre des octets de l'en-tÃªte %#x est inconnue"
 
-#: merge.c:878
+#: merge.c:895
 #, c-format
 msgid "%pB: access beyond end of merged section (%<PRId64>)"
 msgstr "%pB: accÃ¨s au-delÃ  de la fin de la section fusionnÃ©e (%<PRId64>)"
@@ -5370,122 +5696,122 @@ msgstr "%pB: pas de noyau pour allouer u
 msgid "%pB: no core to allocate a symbol %d bytes long"
 msgstr "%pB: pas de noyau pour allouer un symbole de %d octets de longueur"
 
-#: mmo.c:955
+#: mmo.c:952
 #, c-format
 msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
 msgstr "%pB: tentative d'Ã©mettre du contenu Ã  une adresse %#<PRIx64> qui n'est pas un multiple de 4"
 
-#: mmo.c:1252
+#: mmo.c:1248
 #, c-format
 msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
 msgstr "%pB: fichier mmo invalide: valeur d'initialisation pour $255 n'est pas Â«Â MainÂ Â»\n"
 
-#: mmo.c:1399
+#: mmo.c:1395
 #, c-format
 msgid "%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
 msgstr "%pB: sÃ©quence de caractÃ¨res large 0x%02X 0x%02X non supportÃ©e aprÃ¨s le nom de symbole dÃ©butant par Â«Â %sÂ Â»\n"
 
-#: mmo.c:1633
+#: mmo.c:1628
 #, c-format
 msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
 msgstr "%pB: fichier mmo invalide: lopcode Â«Â %dÂ Â» non supportÃ©\n"
 
-#: mmo.c:1644
+#: mmo.c:1639
 #, c-format
 msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
 msgstr "%pB: fichier mmo invalide: attendu YZ = 1 obtenu YZ = %d pour lop_quote\n"
 
-#: mmo.c:1682
+#: mmo.c:1679
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
 msgstr "%pB: fichier mmo invalide: attendu z = 1 ou z = 2, obtenu z = %d pour lop_loc\n"
 
-#: mmo.c:1733
+#: mmo.c:1730
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
 msgstr "%pB: fichier mmo invalide: attendu z = 1 ou z = 2, obtenu z = %d pour lop_fixo\n"
 
-#: mmo.c:1774
+#: mmo.c:1771
 #, c-format
 msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
 msgstr "%pB: fichier mmo invalide: attendu y = 0, obtenu y = %d pour lop_fixrx\n"
 
-#: mmo.c:1785
+#: mmo.c:1782
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
 msgstr "%pB: fichier mmo invalide: attendu z = 16 ou z = 24, obtenu z = %d pour lop_fixrx\n"
 
-#: mmo.c:1810
+#: mmo.c:1807
 #, c-format
 msgid "%pB: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"
 msgstr "%pB: fichier mmo invalide: octet de tÃªte du mot de l'opÃ©rande doit Ãªtre 0 ou 1, obtenu %d pour lop_fixrx\n"
 
-#: mmo.c:1835
+#: mmo.c:1832
 #, c-format
 msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
 msgstr "%pB: ne peut pas allouer un nom de fichier pour le no. de fichier %d, %d octets\n"
 
-#: mmo.c:1857
+#: mmo.c:1854
 #, c-format
 msgid "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
 msgstr "%pB: fichier mmo invalide: no. de fichier %d Â«Â %sÂ Â», a dÃ©jÃ  Ã©tÃ© entrÃ© en tant que Â«Â %sÂ Â»\n"
 
-#: mmo.c:1871
+#: mmo.c:1868
 #, c-format
 msgid "%pB: invalid mmo file: file name for number %d was not specified before use\n"
 msgstr "%pB: fichier mmo invalide: nom de fichier %d n'a pas Ã©tÃ© spÃ©cifiÃ© avant son utilisation\n"
 
-#: mmo.c:1978
+#: mmo.c:1975
 #, c-format
 msgid "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
 msgstr "%pB: fichier mmo invalide: champs y et z de lop_stab non nul, y: %d, z: %d\n"
 
-#: mmo.c:2015
+#: mmo.c:2012
 #, c-format
 msgid "%pB: invalid mmo file: lop_end not last item in file\n"
 msgstr "%pB: fichier mmo invalide: lop_end n'est pas le dernier Ã©lement dans le fichier\n"
 
-#: mmo.c:2029
+#: mmo.c:2026
 #, c-format
 msgid "%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
 msgstr "%pB: fichier mmo invalide: YZ de lop_end (%ld) n'est pas Ã©gal au nombre de tetras du lop_stab prÃ©cÃ©dent (%ld)\n"
 
-#: mmo.c:2740
+#: mmo.c:2735
 #, c-format
 msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
 msgstr "%pB: table de symboles invalide: symbole Â«Â %sÂ Â» dupliquÃ©\n"
 
-#: mmo.c:2983
+#: mmo.c:2978
 #, c-format
 msgid "%pB: bad symbol definition: `Main' set to %s rather than the start address %s\n"
 msgstr "%pB: DÃ©finition de symbole erronÃ©e: Â«Â MainÂ Â» initialisÃ© Ã  %s au lieu de l'adresse de dÃ©part %s\n"
 
-#: mmo.c:3082
+#: mmo.c:3077
 #, c-format
 msgid "%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
 msgstr "%pB: attention: table de symboles trop grande pour mmo, plus grande que 65535 mots de 32 bits: %d. Seul Â«Â MainÂ Â» sera produit.\n"
 
-#: mmo.c:3128
+#: mmo.c:3123
 #, c-format
 msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
 msgstr "%pB: erreur interne, table de symbole a changÃ© de taille de %d Ã  %d mots\n"
 
-#: mmo.c:3181
+#: mmo.c:3176
 #, c-format
 msgid "%pB: internal error, internal register section %pA had contents\n"
 msgstr "%pB: erreur interne, registre interne de section %pA contient quelque chose\n"
 
-#: mmo.c:3232
+#: mmo.c:3227
 #, c-format
 msgid "%pB: no initialized registers; section length 0\n"
 msgstr "%pB: pas de registre initialisÃ©; section de longueur 0\n"
 
-#: mmo.c:3239
+#: mmo.c:3234
 #, c-format
 msgid "%pB: too many initialized registers; section length %<PRId64>"
 msgstr "%pB: trop de registres initialisÃ©s; longueur de section %<PRId64>"
 
-#: mmo.c:3244
+#: mmo.c:3239
 #, c-format
 msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
 msgstr "%pB: adresse de dÃ©part invalide pour des registres initialisÃ©s de longueur %<PRId64>: %#<PRIx64>"
@@ -5495,48 +5821,55 @@ msgstr "%pB: adresse de dÃ©part invalide
 msgid "unhandled OSF/1 core file section type %d"
 msgstr "type de section de fichier core OSF/1 %d non traitÃ©"
 
-#: pef.c:527
+#: pdp11.c:1588
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: le symbole indique un recouvrement (pas supportÃ©)"
+
+#: pef.c:530
 #, c-format
 msgid "bfd_pef_scan: unknown architecture 0x%lx"
 msgstr "bfd_pef_scan: architecture 0x%lx inconnue"
 
-#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220
+#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220 pei-x86_64.c:243
+#: pei-x86_64.c:253 pei-x86_64.c:278 pei-x86_64.c:290 pei-x86_64.c:304
+#: pei-x86_64.c:322 pei-x86_64.c:334 pei-x86_64.c:346
 #, c-format
 msgid "warning: corrupt unwind data\n"
 msgstr "attention: donnÃ©es de dÃ©roulement corrompues\n"
 
 #. PR 17512: file: 2245-7442-0.004.
-#: pei-x86_64.c:315
+#: pei-x86_64.c:367
 #, c-format
 msgid "Unknown: %x"
 msgstr "Inconnu: %x"
 
-#: pei-x86_64.c:365 pei-x86_64.c:375 pei-x86_64.c:384
+#: pei-x86_64.c:418 pei-x86_64.c:428 pei-x86_64.c:437
 #, c-format
 msgid "warning: xdata section corrupt\n"
 msgstr "attention: section xdata corrompue\n"
 
-#: pei-x86_64.c:439
+#: pei-x86_64.c:492
 #, c-format
 msgid "Too many unwind codes (%ld)\n"
 msgstr "Trop de codes de dÃ©roulages (%ld)\n"
 
-#: pei-x86_64.c:529
+#: pei-x86_64.c:582
 #, c-format
 msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
 msgstr "Attention: la taille de la section %s (%ld) n'est pas un multiple de %d\n"
 
-#: pei-x86_64.c:536
+#: pei-x86_64.c:589
 #, c-format
 msgid "Warning: %s section size is zero\n"
 msgstr "Attention: la taille de la section %s est nulle\n"
 
-#: pei-x86_64.c:551
+#: pei-x86_64.c:604
 #, c-format
 msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"
 msgstr "Attention: la taille de la section %s (%ld) est plus petite que la taille virtuelle (%ld)\n"
 
-#: pei-x86_64.c:560
+#: pei-x86_64.c:613
 #, c-format
 msgid ""
 "\n"
@@ -5545,12 +5878,12 @@ msgstr ""
 "\n"
 "La table de fonctions (interprÃ©tation du contenu de la section %s)\n"
 
-#: pei-x86_64.c:563
+#: pei-x86_64.c:616
 #, c-format
 msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
 msgstr " vma:\t\t\tAdresse DÃ©but\t Adresse Fin\t  Unwind Info\n"
 
-#: pei-x86_64.c:692
+#: pei-x86_64.c:745
 #, c-format
 msgid ""
 "\n"
@@ -5560,42 +5893,42 @@ msgstr ""
 "Vidange de %s\n"
 
 #. XXX code yet to be written.
-#: peicode.h:775
+#: peicode.h:796
 #, c-format
 msgid "%pB: unhandled import type; %x"
 msgstr "%pB: type d'importation non traitÃ©e; %x"
 
-#: peicode.h:781
+#: peicode.h:802
 #, c-format
 msgid "%pB: unrecognized import type; %x"
 msgstr "%pB: type d'importation non reconnu; %x"
 
-#: peicode.h:796
+#: peicode.h:817
 #, c-format
 msgid "%pB: unrecognized import name type; %x"
 msgstr "%pB: type de nom d'importation non reconnu: %x"
 
-#: peicode.h:1211
+#: peicode.h:1225
 #, c-format
 msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
 msgstr "%pB: type de machine non reconnu (0x%x) dans l'archive de librairie de formats d'importation"
 
-#: peicode.h:1224
+#: peicode.h:1238
 #, c-format
 msgid "%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive"
 msgstr "%pB: type de machine reconnue mais non traitÃ©e (0x%x) dans l'archive da la librairie de formats d'importation"
 
-#: peicode.h:1242
+#: peicode.h:1256
 #, c-format
 msgid "%pB: size field is zero in Import Library Format header"
 msgstr "%pB: taille du champ est zÃ©ro dans l'en-tÃªte de la librairie de formats d'importation"
 
-#: peicode.h:1274
+#: peicode.h:1282
 #, c-format
 msgid "%pB: string not null terminated in ILF object file"
 msgstr "%pB: chaÃ®ne n'est pas terminÃ©e par un zÃ©ro dans le fichier objet ILF"
 
-#: peicode.h:1330
+#: peicode.h:1338
 #, c-format
 msgid "%pB: error: debug data ends beyond end of debug directory"
 msgstr "%pB: erreur: les donnÃ©es de dÃ©bogage s'arrÃªtent aprÃ¨s la fin du rÃ©pertoire de dÃ©bogage"
@@ -5653,32 +5986,32 @@ msgstr "Secteur de la partition[%d] = 0x
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr "Longueur de la partition[%d] = 0x%.8lx (%ld)\n"
 
-#: reloc.c:8232
+#: reloc.c:8291
 msgid "INPUT_SECTION_FLAGS are not supported"
 msgstr "INPUT_SECTION_FLAGS pas supportÃ©s"
 
-#: reloc.c:8333
+#: reloc.c:8392
 #, c-format
 msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
 msgstr "%X%P: %pB(%pA): erreur: le rÃ©adressage pour le dÃ©calage %V n'a pas de valeur\n"
 
-#: reloc.c:8420
+#: reloc.c:8480
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
 msgstr "%X%P: %pB(%pA): le rÃ©adressage Â«Â %pRÂ Â» n'est pas supportÃ©\n"
 
-#: reloc.c:8429
+#: reloc.c:8489
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
 msgstr "%X%P: %pB(%pA): le rÃ©adressage Â«Â %pRÂ Â» retourne une valeur %x non reconnue\n"
 
-#: reloc.c:8491
+#: reloc.c:8551
 #, c-format
 msgid "%pB: unrecognized relocation type %#x in section `%pA'"
 msgstr "%pB: rÃ©adressage inconnu (%#x) dans la section Â«Â %pAÂ Â»"
 
 #. PR 21803: Suggest the most likely cause of this error.
-#: reloc.c:8495
+#: reloc.c:8555
 #, c-format
 msgid "is this version of the linker - %s - out of date ?"
 msgstr "la version de l'Ã©diteur de liens â€“ %s â€“ est-elle dÃ©passÃ©eÂ ?"
@@ -5688,7 +6021,7 @@ msgstr "la version de l'Ã©diteur de lien
 msgid "%pB: warning core file truncated"
 msgstr "%pB: fichier core d'avertissement tronquÃ©"
 
-#: som.c:5478
+#: som.c:5497
 #, c-format
 msgid ""
 "\n"
@@ -5697,7 +6030,7 @@ msgstr ""
 "\n"
 "En-tÃªte auxiliaire de l'exec\n"
 
-#: som.c:5787
+#: som.c:5806
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers non implÃ©mentÃ©"
 
@@ -5711,7 +6044,7 @@ msgstr "%pB:%d: caractÃ¨re inattendu Â«Â
 msgid "%pB:%d: byte count %d too small"
 msgstr "%pB:%d: nombre d'octets %d trop petit"
 
-#: srec.c:581 srec.c:615
+#: srec.c:580 srec.c:614
 #, c-format
 msgid "%pB:%d: bad checksum in S-record file"
 msgstr "%pB:%d: mauvaise somme de contrÃ´le dans le fichier S-record"
@@ -5721,73 +6054,82 @@ msgstr "%pB:%d: mauvaise somme de contrÃ
 msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
 msgstr "%pB(%pA+%#lx): entrÃ©e des Ã©bauches a un indexe de chaÃ®ne invalide"
 
-#: syms.c:1091
+#: syms.c:1085
 msgid "unsupported .stab relocation"
 msgstr "rÃ©adressage du .stab non supportÃ©"
 
-#: vms-alpha.c:479
+#: vms-alpha.c:480
 msgid "corrupt EIHD record - size is too small"
 msgstr "enregistrement EIHD corrompu â€“ la taille est trop petite"
 
-#: vms-alpha.c:660
+#: vms-alpha.c:666
 #, c-format
 msgid "unable to read EIHS record at offset %#x"
 msgstr "impossible de lire l'enregistrement EIHS Ã  l'offset %#x"
 
-#: vms-alpha.c:1173
+#: vms-alpha.c:1158
+msgid "record is too small for symbol name length"
+msgstr "l'enregistrement est trop petit pour la longueur du nom de symbole"
+
+#: vms-alpha.c:1191
 #, c-format
 msgid "corrupt EGSD record: its size (%#x) is too small"
 msgstr "enregistrement EGSD corrompu: sa taille (%#x) est trop petite"
 
-#: vms-alpha.c:1197
+#: vms-alpha.c:1215
 #, c-format
-msgid "corrupt EGSD record: size (%#x) is larger than remaining space (%#x)"
-msgstr "enregistrement EGSD corrompu: la taille (%#x) est plus grande que l'espace restant (%#x)"
+msgid "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
+msgstr "type d'enregistrement EGSD %d corrompu: la taille (%#x) est plus grande que l'espace restant (%#x)"
 
-#: vms-alpha.c:1205
+#: vms-alpha.c:1225
 #, c-format
-msgid "corrupt EGSD record: size (%#x) is too small"
-msgstr "enregistrement EGSD corrompu: la taille (%#x) est trop petite"
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
+msgstr "type d'enregistrement EGSD %d corrompu: la taille (%#x) est trop petite"
 
-#: vms-alpha.c:1334 vms-alpha.c:1350 vms-alpha.c:1390
+#: vms-alpha.c:1367
 #, c-format
 msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
 msgstr "enregistrement EGSD corrompu: son champ psindx est trop grand (%#lx)"
 
-#: vms-alpha.c:1419
+#: vms-alpha.c:1443
 #, c-format
 msgid "unknown EGSD subtype %d"
 msgstr "sous type EGSD %d inconnu"
 
-#: vms-alpha.c:1452
+#: vms-alpha.c:1476
 #, c-format
 msgid "stack overflow (%d) in _bfd_vms_push"
 msgstr "dÃ©bordement de la pile (%d) dans _bfd_vms_push"
 
-#: vms-alpha.c:1465
+#: vms-alpha.c:1490
 msgid "stack underflow in _bfd_vms_pop"
 msgstr "sous dÃ©pilage de la pile dans _bfd_vms_pop"
 
+#: vms-alpha.c:1564
+#, c-format
+msgid "dst_define_location %u too large"
+msgstr "dst_define_location %u trop grand"
+
 #. These names have not yet been added to this switch statement.
-#: vms-alpha.c:1707
+#: vms-alpha.c:1765
 #, c-format
 msgid "unknown ETIR command %d"
 msgstr "commande ETIR %d inconnue"
 
-#: vms-alpha.c:1738
+#: vms-alpha.c:1796
 msgid "corrupt vms value"
 msgstr "valeur vms corrompue"
 
-#: vms-alpha.c:1866
+#: vms-alpha.c:1927
 msgid "corrupt ETIR record encountered"
 msgstr "enregistrement ETIR corrompu rencontrÃ©"
 
-#: vms-alpha.c:1923
+#: vms-alpha.c:1989
 #, c-format
 msgid "bad section index in %s"
 msgstr "index de section erronÃ©e dans %s"
 
-#: vms-alpha.c:1936
+#: vms-alpha.c:2003
 #, c-format
 msgid "unsupported STA cmd %s"
 msgstr "commande STA %s non supportÃ©e"
@@ -5797,1468 +6139,1480 @@ msgstr "commande STA %s non supportÃ©e"
 #. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-alpha.c:2116 vms-alpha.c:2147 vms-alpha.c:2238 vms-alpha.c:2396
+#: vms-alpha.c:2211 vms-alpha.c:2242 vms-alpha.c:2337 vms-alpha.c:2557
 #, c-format
 msgid "%s: not supported"
 msgstr "%s: pas supportÃ©"
 
-#: vms-alpha.c:2122
+#: vms-alpha.c:2217
 #, c-format
 msgid "%s: not implemented"
 msgstr "%s: non implÃ©mentÃ©"
 
-#: vms-alpha.c:2380
+#: vms-alpha.c:2382 vms-alpha.c:2397
+#, c-format
+msgid "invalid %s"
+msgstr "%s invalide"
+
+#. Divide by zero is supposed to give a result of zero,
+#. and a non-fatal warning message.
+#: vms-alpha.c:2457
+#, c-format
+msgid "%s divide by zero"
+msgstr "%s divise par zÃ©ro"
+
+#: vms-alpha.c:2523
 #, c-format
 msgid "invalid use of %s with contexts"
 msgstr "utilisation incorrecte de %s avec des contextes"
 
-#: vms-alpha.c:2414
+#: vms-alpha.c:2581
 #, c-format
 msgid "reserved cmd %d"
 msgstr "commande %d rÃ©servÃ©e"
 
-#: vms-alpha.c:2498
+#: vms-alpha.c:2665
 msgid "corrupt EEOM record - size is too small"
 msgstr "enregistrement EEOM corrompu â€“ taille trop petite"
 
-#: vms-alpha.c:2507
+#: vms-alpha.c:2674
 msgid "object module not error-free !"
 msgstr "module objet N'EST PAS sans erreurÂ !"
 
-#: vms-alpha.c:3831
+#: vms-alpha.c:4001
 #, c-format
 msgid "SEC_RELOC with no relocs in section %pA"
 msgstr "SEC_RELOC sans rÃ©adressages dans la section %pA"
 
-#: vms-alpha.c:3883 vms-alpha.c:4097
+#: vms-alpha.c:4053 vms-alpha.c:4268
 #, c-format
 msgid "size error in section %pA"
 msgstr "erreur de taille dans la section %pA"
 
-#: vms-alpha.c:4043
+#: vms-alpha.c:4213
 msgid "spurious ALPHA_R_BSR reloc"
 msgstr "rÃ©adressages ALPHA_R_BSR parasite"
 
-#: vms-alpha.c:4084
+#: vms-alpha.c:4254
 #, c-format
 msgid "unhandled relocation %s"
 msgstr "rÃ©adressage %s non traitÃ©"
 
-#: vms-alpha.c:4377
+#: vms-alpha.c:4551
 #, c-format
 msgid "unknown source command %d"
 msgstr "commande source %d inconnue"
 
-#: vms-alpha.c:4438 vms-alpha.c:4444 vms-alpha.c:4450 vms-alpha.c:4456
-#: vms-alpha.c:4462 vms-alpha.c:4489 vms-alpha.c:4495 vms-alpha.c:4501
-#: vms-alpha.c:4507
+#: vms-alpha.c:4612 vms-alpha.c:4618 vms-alpha.c:4624 vms-alpha.c:4630
+#: vms-alpha.c:4636 vms-alpha.c:4663 vms-alpha.c:4669 vms-alpha.c:4675
+#: vms-alpha.c:4681
 #, c-format
 msgid "%s not implemented"
 msgstr "%s non implÃ©mentÃ©"
 
-#: vms-alpha.c:4550
+#: vms-alpha.c:4724
 #, c-format
 msgid "unknown line command %d"
 msgstr "commande de ligne %d inconnue"
 
-#: vms-alpha.c:5010 vms-alpha.c:5028 vms-alpha.c:5043 vms-alpha.c:5059
-#: vms-alpha.c:5072 vms-alpha.c:5084 vms-alpha.c:5097
+#: vms-alpha.c:5188 vms-alpha.c:5206 vms-alpha.c:5221 vms-alpha.c:5237
+#: vms-alpha.c:5250 vms-alpha.c:5262 vms-alpha.c:5275
 #, c-format
 msgid "unknown reloc %s + %s"
 msgstr "rÃ©adressage %s + %s inconnu"
 
-#: vms-alpha.c:5152
+#: vms-alpha.c:5330
 #, c-format
 msgid "unknown reloc %s"
 msgstr "rÃ©adressage %s inconnu"
 
-#: vms-alpha.c:5166
+#: vms-alpha.c:5344
 msgid "invalid section index in ETIR"
 msgstr "index de section incorrect dans ETIR"
 
-#: vms-alpha.c:5175
+#: vms-alpha.c:5353
 msgid "relocation for non-REL psect"
 msgstr "rÃ©adressage pour psect non-REL"
 
-#: vms-alpha.c:5222
+#: vms-alpha.c:5402
 #, c-format
 msgid "unknown symbol in command %s"
 msgstr "symbole inconnu dans la commande %s"
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:5816
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr "le rÃ©adressage (%d) est *INCONNU*"
 
-#: vms-alpha.c:5752
+#: vms-alpha.c:5932
 #, c-format
 msgid "  EMH %u (len=%u): "
 msgstr "  EMH %u (long=%u): "
 
-#: vms-alpha.c:5757
+#: vms-alpha.c:5937
 #, c-format
 msgid "   Error: The length is less than the length of an EMH record\n"
 msgstr "   Erreur: La longueur est plus petite que la longueur d'un enregistrement EMH\n"
 
-#: vms-alpha.c:5774
+#: vms-alpha.c:5954
 #, c-format
 msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
 msgstr "   Erreur: La longueur de l'enregistrement est infÃ©rieure Ã  la taille de l'enregistrement EMH_MHD\n"
 
-#: vms-alpha.c:5777
+#: vms-alpha.c:5957
 #, c-format
 msgid "Module header\n"
 msgstr "En-tÃªte module\n"
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:5958
 #, c-format
 msgid "   structure level: %u\n"
 msgstr "   niveau de structure: %u\n"
 
-#: vms-alpha.c:5779
+#: vms-alpha.c:5959
 #, c-format
 msgid "   max record size: %u\n"
 msgstr "   taille max d'enregistrement: %u\n"
 
-#: vms-alpha.c:5785
+#: vms-alpha.c:5965
 #, c-format
 msgid "   Error: The module name is missing\n"
 msgstr "   Erreur: Le nom du module est manquant\n"
 
-#: vms-alpha.c:5791
+#: vms-alpha.c:5971
 #, c-format
 msgid "   Error: The module name is too long\n"
 msgstr "   Erreur: Le nom du module est trop long\n"
 
-#: vms-alpha.c:5794
+#: vms-alpha.c:5974
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   nom du module       : %.*s\n"
 
-#: vms-alpha.c:5798
+#: vms-alpha.c:5978
 #, c-format
 msgid "   Error: The module version is missing\n"
 msgstr "   Erreur: La version du module est manquante\n"
 
-#: vms-alpha.c:5804
+#: vms-alpha.c:5984
 #, c-format
 msgid "   Error: The module version is too long\n"
 msgstr "   Erreur: La version du module est trop longue\n"
 
-#: vms-alpha.c:5807
+#: vms-alpha.c:5987
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   version du module   : %.*s\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:5990
 #, c-format
 msgid "   Error: The compile date is truncated\n"
 msgstr "   Erreur: La date de compilation est tronquÃ©e\n"
 
-#: vms-alpha.c:5812
+#: vms-alpha.c:5992
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr "   date de compilation : %.17s\n"
 
-#: vms-alpha.c:5817
+#: vms-alpha.c:5997
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Nom du Processeur de Langage\n"
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:5998
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   nom du language: %.*s\n"
 
-#: vms-alpha.c:5822
+#: vms-alpha.c:6002
 #, c-format
 msgid "Source Files Header\n"
 msgstr "En-tÃªte des fichiers sources\n"
 
-#: vms-alpha.c:5823
+#: vms-alpha.c:6003
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   fichier: %.*s\n"
 
-#: vms-alpha.c:5827
+#: vms-alpha.c:6007
 #, c-format
 msgid "Title Text Header\n"
 msgstr "En-tÃªte du texte du titre\n"
 
-#: vms-alpha.c:5828
+#: vms-alpha.c:6008
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   titre: %.*s\n"
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6012
 #, c-format
 msgid "Copyright Header\n"
 msgstr "En-tÃªte du copyright\n"
 
-#: vms-alpha.c:5833
+#: vms-alpha.c:6013
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   copyright: %.*s\n"
 
-#: vms-alpha.c:5837
+#: vms-alpha.c:6017
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr "sous-type emh %u non pris en charge\n"
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6027
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (long=%u):\n"
 
-#: vms-alpha.c:5852
+#: vms-alpha.c:6032
 #, c-format
 msgid "   Error: The length is less than the length of an EEOM record\n"
 msgstr "   Erreur: La longueur est plus petite que la longueur d'un enregistrement EEOM\n"
 
-#: vms-alpha.c:5856
+#: vms-alpha.c:6036
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr "   nombre de paires de liaisons cond: %u\n"
 
-#: vms-alpha.c:5858
+#: vms-alpha.c:6038
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   code de complÃ©tion: %u\n"
 
-#: vms-alpha.c:5862
+#: vms-alpha.c:6042
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr "   fanions de transfert d'adr: 0x%02x\n"
 
-#: vms-alpha.c:5863
+#: vms-alpha.c:6043
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr "   psect transert adr: %u\n"
 
-#: vms-alpha.c:5865
+#: vms-alpha.c:6045
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr "   adresse de transert: 0x%08x\n"
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:6054
 msgid " WEAK"
 msgstr " FAIBLE"
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:6056
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5878
+#: vms-alpha.c:6058
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5880 vms-alpha.c:5901
+#: vms-alpha.c:6060 vms-alpha.c:6081
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:6062
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5884
+#: vms-alpha.c:6064
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5886
+#: vms-alpha.c:6066
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6068
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:6075
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5897
+#: vms-alpha.c:6077
 msgid " LIB"
 msgstr " LIB"
 
-#: vms-alpha.c:5899
+#: vms-alpha.c:6079
 msgid " OVR"
 msgstr " OVR"
 
-#: vms-alpha.c:5903
+#: vms-alpha.c:6083
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5905
+#: vms-alpha.c:6085
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:6087
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:6089
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5911
+#: vms-alpha.c:6091
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5913
+#: vms-alpha.c:6093
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6095
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5917
+#: vms-alpha.c:6097
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:6099
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5928
+#: vms-alpha.c:6108
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (long=%u):\n"
 
-#: vms-alpha.c:5941
+#: vms-alpha.c:6121
 #, c-format
 msgid "  EGSD entry %2u (type: %u, len: %u): "
 msgstr "  entrÃ©e EGSD %2u (type: %u, long: %u): "
 
-#: vms-alpha.c:5947 vms-alpha.c:6198
+#: vms-alpha.c:6127 vms-alpha.c:6378
 #, c-format
 msgid "   Error: length larger than remaining space in record\n"
 msgstr "   Erreur: longueur plus grande que l'espace restant dans l'enregistrement\n"
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6139
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr "PSC - DÃ©finition de section du programme\n"
 
-#: vms-alpha.c:5960 vms-alpha.c:5977
+#: vms-alpha.c:6140 vms-alpha.c:6157
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   alignement : 2**%u\n"
 
-#: vms-alpha.c:5961 vms-alpha.c:5978
+#: vms-alpha.c:6141 vms-alpha.c:6158
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr "   fanions    : 0x%04x"
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6145
 #, c-format
 msgid "   alloc (len): %u (0x%08x)\n"
 msgstr "  alloc (long): %u (0x%08x)\n"
 
-#: vms-alpha.c:5966 vms-alpha.c:6023 vms-alpha.c:6072
+#: vms-alpha.c:6146 vms-alpha.c:6203 vms-alpha.c:6252
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   nom        : %.*s\n"
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6156
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr "SPSC - Def de section de l'image partagÃ©e du programme\n"
 
-#: vms-alpha.c:5982
+#: vms-alpha.c:6162
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr "   alloc (long)  : %u (0x%08x)\n"
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6163
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   offset d'image: 0x%08x\n"
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6165
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr "   offset symvec : 0x%08x\n"
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6167
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   nom           : %.*s\n"
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6180
 #, c-format
 msgid "SYM - Global symbol definition\n"
 msgstr "SYM - DÃ©finition du symbol global\n"
 
-#: vms-alpha.c:6001 vms-alpha.c:6061 vms-alpha.c:6082 vms-alpha.c:6101
+#: vms-alpha.c:6181 vms-alpha.c:6241 vms-alpha.c:6262 vms-alpha.c:6281
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr "   fanions: 0x%04x"
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6184
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr "   offset psect: 0x%08x\n"
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6188
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   adresse code: 0x%08x\n"
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6190
 #, c-format
 msgid "   psect index for entry point : %u\n"
 msgstr "   index psect pour point d'entrÃ©e: %u\n"
 
-#: vms-alpha.c:6013 vms-alpha.c:6089 vms-alpha.c:6108
+#: vms-alpha.c:6193 vms-alpha.c:6269 vms-alpha.c:6288
 #, c-format
 msgid "   psect index : %u\n"
 msgstr "   index psect : %u\n"
 
-#: vms-alpha.c:6015 vms-alpha.c:6091 vms-alpha.c:6110
+#: vms-alpha.c:6195 vms-alpha.c:6271 vms-alpha.c:6290
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   nom         : %.*s\n"
 
-#: vms-alpha.c:6022
+#: vms-alpha.c:6202
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM - RÃ©fÃ©rence du symbol globaux\n"
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6214
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr "IDC - VÃ©rification de la consistance d'identitÃ©\n"
 
-#: vms-alpha.c:6035
+#: vms-alpha.c:6215
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr "   fanions       : 0x%08x"
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6219
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   correspondance id : %x\n"
 
-#: vms-alpha.c:6041
+#: vms-alpha.c:6221
 #, c-format
 msgid "   error severity: %x\n"
 msgstr "   sÃ©vÃ©ritÃ© d'erreur: %x\n"
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6224
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   nom d'entitÃ©  : %.*s\n"
 
-#: vms-alpha.c:6046
+#: vms-alpha.c:6226
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   nom d'objet   : %.*s\n"
 
-#: vms-alpha.c:6049
+#: vms-alpha.c:6229
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   ident binaire : 0x%08x\n"
 
-#: vms-alpha.c:6052
+#: vms-alpha.c:6232
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   ident ascii   : %.*s\n"
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6240
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG - DÃ©finition de symbole universel\n"
 
-#: vms-alpha.c:6064
+#: vms-alpha.c:6244
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr "   offset vecteur symbole: 0x%08x\n"
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6246
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr "   point d'entrÃ©e: 0x%08x\n"
 
-#: vms-alpha.c:6068
+#: vms-alpha.c:6248
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   descr proc : 0x%08x\n"
 
-#: vms-alpha.c:6070
+#: vms-alpha.c:6250
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   index psect: %u\n"
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6261
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV - DÃ©finition symbole vectorisÃ©\n"
 
-#: vms-alpha.c:6085
+#: vms-alpha.c:6265
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   vecteur     : 0x%08x\n"
 
-#: vms-alpha.c:6087 vms-alpha.c:6106
+#: vms-alpha.c:6267 vms-alpha.c:6286
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   offset psect: %u\n"
 
-#: vms-alpha.c:6100
+#: vms-alpha.c:6280
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr "SYMM - DÃ©finition de symbole globale avec version\n"
 
-#: vms-alpha.c:6104
+#: vms-alpha.c:6284
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr "   masque de version: 0x%08x\n"
 
-#: vms-alpha.c:6115
+#: vms-alpha.c:6295
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr "type d'entrÃ©e egsd %u non supportÃ©\n"
 
-#: vms-alpha.c:6150
+#: vms-alpha.c:6330
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr "   index de liaison: %u, instruction de remplacement: 0x%08x\n"
 
-#: vms-alpha.c:6154
+#: vms-alpha.c:6334
 #, c-format
 msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
 msgstr "   index psect 1: %u, offset 1: 0x%08x %08x\n"
 
-#: vms-alpha.c:6159
+#: vms-alpha.c:6339
 #, c-format
 msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
 msgstr "   index psect 2: %u, offset 2: 0x%08x %08x\n"
 
-#: vms-alpha.c:6165
+#: vms-alpha.c:6345
 #, c-format
 msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
 msgstr "   index psect 3: %u, offset 3: 0x%08x %08x\n"
 
-#: vms-alpha.c:6170
+#: vms-alpha.c:6350
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "   nom global: %.*s\n"
 
-#: vms-alpha.c:6181
+#: vms-alpha.c:6361
 #, c-format
 msgid "  %s (len=%u+%u):\n"
 msgstr "  %s (long=%u+%u):\n"
 
-#: vms-alpha.c:6203
+#: vms-alpha.c:6383
 #, c-format
 msgid "   (type: %3u, size: 4+%3u): "
 msgstr "   (type: %3u, taille: 4+%3u): "
 
-#: vms-alpha.c:6207
+#: vms-alpha.c:6387
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr "STA_GBL (pile globals) %.*s\n"
 
-#: vms-alpha.c:6211
+#: vms-alpha.c:6391
 #, c-format
 msgid "STA_LW (stack longword) 0x%08x\n"
 msgstr "STA_LW (pile mot long) 0x%08x\n"
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6395
 #, c-format
 msgid "STA_QW (stack quadword) 0x%08x %08x\n"
 msgstr "STA_QW (pile quad mot) 0x%08x %08x\n"
 
-#: vms-alpha.c:6220
+#: vms-alpha.c:6400
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr "STA_PQ (base pile psect + offset)\n"
 
-#: vms-alpha.c:6222
+#: vms-alpha.c:6402
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr "   psect: %u, offset: 0x%08x %08x\n"
 
-#: vms-alpha.c:6228
+#: vms-alpha.c:6408
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr "STA_LI (pile literale)\n"
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6411
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr "STA_MOD (pile module)\n"
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6414
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr "STA_CKARG (compare les arguments de la procÃ©dure)\n"
 
-#: vms-alpha.c:6238
+#: vms-alpha.c:6418
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (stocke octet)\n"
 
-#: vms-alpha.c:6241
+#: vms-alpha.c:6421
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (stocke mot)\n"
 
-#: vms-alpha.c:6244
+#: vms-alpha.c:6424
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (stocke mot long)\n"
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6427
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (stocke quad mot)\n"
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6433
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr "STO_IMMR (stock rÃ©pÃ©tition immÃ©diate) %u octets\n"
 
-#: vms-alpha.c:6260
+#: vms-alpha.c:6440
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (stocke globale) %.*s\n"
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6444
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr "STO_CA (stock adresse code) %.*s\n"
 
-#: vms-alpha.c:6268
+#: vms-alpha.c:6448
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr "STO_RB (stocke branche relative)\n"
 
-#: vms-alpha.c:6271
+#: vms-alpha.c:6451
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr "STO_AB (stocke branche absolue)\n"
 
-#: vms-alpha.c:6274
+#: vms-alpha.c:6454
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr "STO_OFF (stocke offset de psect)\n"
 
-#: vms-alpha.c:6280
+#: vms-alpha.c:6460
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr "STO_IMM (stocke immediat) %u octets\n"
 
-#: vms-alpha.c:6287
+#: vms-alpha.c:6467
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr "STO_GBL_LW (stocke mot long global) %.*s\n"
 
-#: vms-alpha.c:6291
+#: vms-alpha.c:6471
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr "STO_OFF (stocke LP avec la signature de la procÃ©dure)\n"
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6474
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr "STO_BR_GBL (stocke branche globale) *todo*\n"
 
-#: vms-alpha.c:6297
+#: vms-alpha.c:6477
 #, c-format
 msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
 msgstr "STO_BR_PS (stocke branche psect + offset) *todo*\n"
 
-#: vms-alpha.c:6301
+#: vms-alpha.c:6481
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr "OPR_NOP (pas d'operation)\n"
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6484
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr "OPR_ADD (ajout)\n"
 
-#: vms-alpha.c:6307
+#: vms-alpha.c:6487
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr "OPR_SUB (soustraction)\n"
 
-#: vms-alpha.c:6310
+#: vms-alpha.c:6490
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (multiplication)\n"
 
-#: vms-alpha.c:6313
+#: vms-alpha.c:6493
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (division)\n"
 
-#: vms-alpha.c:6316
+#: vms-alpha.c:6496
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr "OPR_AND (et logique)\n"
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6499
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr "OPR_IOR (ou inclusif logique)\n"
 
-#: vms-alpha.c:6322
+#: vms-alpha.c:6502
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr "OPR_EOR (ou exclusif logique)\n"
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6505
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (nÃ©gation)\n"
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6508
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (complÃ©ment)\n"
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6511
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (insertion champ)\n"
 
-#: vms-alpha.c:6334
+#: vms-alpha.c:6514
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (dÃ©calage arithmetique)\n"
 
-#: vms-alpha.c:6337
+#: vms-alpha.c:6517
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (dÃ©calage non signÃ©)\n"
 
-#: vms-alpha.c:6340
+#: vms-alpha.c:6520
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (rotation)\n"
 
-#: vms-alpha.c:6343
+#: vms-alpha.c:6523
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (selection)\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6526
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr "OPR_REDEF (redÃ©fini le symbole Ã  la position actuelle)\n"
 
-#: vms-alpha.c:6349
+#: vms-alpha.c:6529
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr "OPR_REDEF (dÃ©finir un litÃ©ral)\n"
 
-#: vms-alpha.c:6353
+#: vms-alpha.c:6533
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr "STC_LP (stocke pair de liaison cond)\n"
 
-#: vms-alpha.c:6357
+#: vms-alpha.c:6537
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr "STC_LP_PSB (stocke pair de liaison cond + signature)\n"
 
-#: vms-alpha.c:6359
+#: vms-alpha.c:6539
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr "   index liaison: %u, procÃ©dure: %.*s\n"
 
-#: vms-alpha.c:6362
+#: vms-alpha.c:6542
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   signature: %.*s\n"
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6545
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (stocke cond globale)\n"
 
-#: vms-alpha.c:6367
+#: vms-alpha.c:6547
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr "   index liaison: %u, globale: %.*s\n"
 
-#: vms-alpha.c:6371
+#: vms-alpha.c:6551
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr "STC_GCA (stocke adresse code cond)\n"
 
-#: vms-alpha.c:6373
+#: vms-alpha.c:6553
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr "   index liaison: %u, nom procÃ©dure: %.*s\n"
 
-#: vms-alpha.c:6377
+#: vms-alpha.c:6557
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr "STC_PS (stocke psect cond + offset)\n"
 
-#: vms-alpha.c:6380
+#: vms-alpha.c:6560
 #, c-format
 msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
 msgstr "   index liaison: %u, psect: %u, offset: 0x%08x %08x\n"
 
-#: vms-alpha.c:6387
+#: vms-alpha.c:6567
 #, c-format
 msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
 msgstr "STC_NOP_GBL (stocke NOP cond Ã  l'adresse globale)\n"
 
-#: vms-alpha.c:6391
+#: vms-alpha.c:6571
 #, c-format
 msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
 msgstr "STC_NOP_PS (stocke NOP cond Ã  psect + offset)\n"
 
-#: vms-alpha.c:6395
+#: vms-alpha.c:6575
 #, c-format
 msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
 msgstr "STC_BSR_GBL (stocke BSR cond Ã  l'adresse globale)\n"
 
-#: vms-alpha.c:6399
+#: vms-alpha.c:6579
 #, c-format
 msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
 msgstr "STC_BSR_PS (stocke BSR cond Ã  psect + offset)\n"
 
-#: vms-alpha.c:6403
+#: vms-alpha.c:6583
 #, c-format
 msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
 msgstr "STC_LDA_GBL (stocke LDA cond Ã  l'adresse globale)\n"
 
-#: vms-alpha.c:6407
+#: vms-alpha.c:6587
 #, c-format
 msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
 msgstr "STC_LDA_PS (stocke LDA cond Ã  psect + offset)\n"
 
-#: vms-alpha.c:6411
+#: vms-alpha.c:6591
 #, c-format
 msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
 msgstr "STC_BOH_GBL (stocke BOH cond Ã  l'adresse globale)\n"
 
-#: vms-alpha.c:6415
+#: vms-alpha.c:6595
 #, c-format
 msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
 msgstr "STC_BOH_PS (stocke BOH cond Ã  psect + offset)\n"
 
-#: vms-alpha.c:6420
+#: vms-alpha.c:6600
 #, c-format
 msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
 msgstr "STC_NBH_GBL (stocke cond ou suggestion Ã  l'adresse globale)\n"
 
-#: vms-alpha.c:6424
+#: vms-alpha.c:6604
 #, c-format
 msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
 msgstr "STC_NBH_PS (stocke cond or suggestion Ã  psect + offset)\n"
 
-#: vms-alpha.c:6428
+#: vms-alpha.c:6608
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr "CTL_SETRB (fixe la base du rÃ©adressage)\n"
 
-#: vms-alpha.c:6434
+#: vms-alpha.c:6614
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr "CTL_AUGRB (augmente la base du rÃ©adressage) %u\n"
 
-#: vms-alpha.c:6438
+#: vms-alpha.c:6618
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (dÃ©finir position)\n"
 
-#: vms-alpha.c:6441
+#: vms-alpha.c:6621
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (fixer position)\n"
 
-#: vms-alpha.c:6444
+#: vms-alpha.c:6624
 #, c-format
 msgid "CTL_STKDL (stack defined location)\n"
 msgstr "CTL_STKDL (position dÃ©finie dans la pile)\n"
 
-#: vms-alpha.c:6447 vms-alpha.c:6871 vms-alpha.c:6997
+#: vms-alpha.c:6627 vms-alpha.c:7051 vms-alpha.c:7177
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*non pris en charge*\n"
 
-#: vms-alpha.c:6477 vms-alpha.c:6516
+#: vms-alpha.c:6657 vms-alpha.c:6696
 #, c-format
 msgid "cannot read GST record length\n"
 msgstr "impossible de lire la longueur de l'enregistrement GST\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6498
+#: vms-alpha.c:6678
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr "impossible de trouver le EMH dans le premier enregistrement GST\n"
 
-#: vms-alpha.c:6524
+#: vms-alpha.c:6704
 #, c-format
 msgid "cannot read GST record header\n"
 msgstr "impossible de lire l'en-tÃªte de l'enregistrement GST\n"
 
-#: vms-alpha.c:6537
+#: vms-alpha.c:6717
 #, c-format
 msgid " corrupted GST\n"
 msgstr " GST corrompu\n"
 
-#: vms-alpha.c:6545
+#: vms-alpha.c:6725
 #, c-format
 msgid "cannot read GST record\n"
 msgstr "ne peut lire l'enregistrement GST\n"
 
-#: vms-alpha.c:6574
+#: vms-alpha.c:6754
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr " type d'enregistrement EOBJ %u non supportÃ©\n"
 
-#: vms-alpha.c:6598
+#: vms-alpha.c:6778
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr "  dÃ©compte des bits: %u, adr base: 0x%08x\n"
 
-#: vms-alpha.c:6612
+#: vms-alpha.c:6792
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr "   carte des bits: 0x%08x (occurrence: %u):\n"
 
-#: vms-alpha.c:6619
+#: vms-alpha.c:6799
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6645
+#: vms-alpha.c:6825
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr "  image %u (%u entrÃ©es)\n"
 
-#: vms-alpha.c:6651
+#: vms-alpha.c:6831
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr "   offset: 0x%08x, val: 0x%08x\n"
 
-#: vms-alpha.c:6673
+#: vms-alpha.c:6853
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr "  image %u (%u entrÃ©es), offsets:\n"
 
-#: vms-alpha.c:6680
+#: vms-alpha.c:6860
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6802
+#: vms-alpha.c:6982
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr "64 bits *non supportÃ©*\n"
 
-#: vms-alpha.c:6807
+#: vms-alpha.c:6987
 #, c-format
 msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
 msgstr "classe: %u, dtype: %u, longueur: %u, pointeur: 0x%08x\n"
 
-#: vms-alpha.c:6818
+#: vms-alpha.c:6998
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr "table de %s non contiguÃ«\n"
 
-#: vms-alpha.c:6823
+#: vms-alpha.c:7003
 #, c-format
 msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
 msgstr "dimct: %u, aflags: 0x%02x, digits: %u, Ã©chelle: %u\n"
 
-#: vms-alpha.c:6828
+#: vms-alpha.c:7008
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr "arsize: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6832
+#: vms-alpha.c:7012
 #, c-format
 msgid "Strides:\n"
 msgstr "Pas:\n"
 
-#: vms-alpha.c:6842
+#: vms-alpha.c:7022
 #, c-format
 msgid "Bounds:\n"
 msgstr "Limites:\n"
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7028
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr "[%u]: InfÃ©rieure: %u, supÃ©rieure: %u\n"
 
-#: vms-alpha.c:6860
+#: vms-alpha.c:7040
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr "chaine de bits de %s dÃ©salignÃ©e\n"
 
-#: vms-alpha.c:6865
+#: vms-alpha.c:7045
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "base: %u, pos: %u\n"
 
-#: vms-alpha.c:6886
+#: vms-alpha.c:7066
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr "vflags: 0x%02x, valeur: 0x%08x "
 
-#: vms-alpha.c:6892
+#: vms-alpha.c:7072
 #, c-format
 msgid "(no value)\n"
 msgstr "(pas de valeur)\n"
 
-#: vms-alpha.c:6895
+#: vms-alpha.c:7075
 #, c-format
 msgid "(not active)\n"
 msgstr "(pas active)\n"
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7078
 #, c-format
 msgid "(not allocated)\n"
 msgstr "(pas allouÃ©e)\n"
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7081
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(descripteur)\n"
 
-#: vms-alpha.c:6905
+#: vms-alpha.c:7085
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(valeur postÃ©rieure)\n"
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7088
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(spÃ©cificitÃ©s de la valeur suivent)\n"
 
-#: vms-alpha.c:6911
+#: vms-alpha.c:7091
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr "(Ã  l'offset de bit %u)\n"
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7095
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr "(reg: %u, aff: %u, indir: %u, type: "
 
-#: vms-alpha.c:6922
+#: vms-alpha.c:7102
 msgid "literal"
 msgstr "litÃ©rale"
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7105
 msgid "address"
 msgstr "adresse"
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7108
 msgid "desc"
 msgstr "desc"
 
-#: vms-alpha.c:6931
+#: vms-alpha.c:7111
 msgid "reg"
 msgstr "reg"
 
-#: vms-alpha.c:6948
+#: vms-alpha.c:7128
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr "long: %2u, type: %2u "
 
-#: vms-alpha.c:6954
+#: vms-alpha.c:7134
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr "atomique, type=0x%02x %s\n"
 
-#: vms-alpha.c:6958
+#: vms-alpha.c:7138
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr "indirect, dÃ©fini Ã  0x%08x\n"
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7142
 #, c-format
 msgid "typed pointer\n"
 msgstr "pointeur typÃ©\n"
 
-#: vms-alpha.c:6966
+#: vms-alpha.c:7146
 #, c-format
 msgid "pointer\n"
 msgstr "pointeur\n"
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7154
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr "tableau, dim: %u, bitmpa: "
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7161
 #, c-format
 msgid "array descriptor:\n"
 msgstr "descripteur de tableau:\n"
 
-#: vms-alpha.c:6988
+#: vms-alpha.c:7168
 #, c-format
 msgid "type spec for element:\n"
 msgstr "spec de type pour Ã©lÃ©ment:\n"
 
-#: vms-alpha.c:6990
+#: vms-alpha.c:7170
 #, c-format
 msgid "type spec for subscript %u:\n"
 msgstr "spec de type pour l'indice %u:\n"
 
-#: vms-alpha.c:7008
+#: vms-alpha.c:7188
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr "Table des symboles de debug:\n"
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7199
 #, c-format
 msgid "cannot read DST header\n"
 msgstr "impossible de lire l'en-tÃªte DST\n"
 
-#: vms-alpha.c:7025
+#: vms-alpha.c:7205
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr " type: %3u, long: %3u (Ã  0x%08x): "
 
-#: vms-alpha.c:7039
+#: vms-alpha.c:7219
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr "ne peut lire le symbole DST\n"
 
-#: vms-alpha.c:7082
+#: vms-alpha.c:7262
 #, c-format
 msgid "standard data: %s\n"
 msgstr "donnÃ©es standards: %s\n"
 
-#: vms-alpha.c:7085 vms-alpha.c:7173
+#: vms-alpha.c:7265 vms-alpha.c:7353
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    nom: %.*s\n"
 
-#: vms-alpha.c:7092
+#: vms-alpha.c:7272
 #, c-format
 msgid "modbeg\n"
 msgstr "dÃ©but module\n"
 
-#: vms-alpha.c:7094
+#: vms-alpha.c:7274
 #, c-format
 msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
 msgstr "   fanions: %d, language: %u, majeur: %u, mineur: %u\n"
 
-#: vms-alpha.c:7100 vms-alpha.c:7374
+#: vms-alpha.c:7280 vms-alpha.c:7554
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr "   nom du module: %.*s\n"
 
-#: vms-alpha.c:7103
+#: vms-alpha.c:7283
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   compilateur  : %.*s\n"
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7288
 #, c-format
 msgid "modend\n"
 msgstr "fin module\n"
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7295
 msgid "rtnbeg\n"
 msgstr "dÃ©but rtn\n"
 
-#: vms-alpha.c:7117
+#: vms-alpha.c:7297
 #, c-format
 msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
 msgstr "    fanions: %u, adresse: 0x%08x, pd-adresse: 0x%08x\n"
 
-#: vms-alpha.c:7122
+#: vms-alpha.c:7302
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr "    nom routine : %.*s\n"
 
-#: vms-alpha.c:7130
+#: vms-alpha.c:7310
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr "fin rtn: taille 0x%08x\n"
 
-#: vms-alpha.c:7138
+#: vms-alpha.c:7318
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr "prologue: adresse bkpt 0x%08x\n"
 
-#: vms-alpha.c:7147
+#: vms-alpha.c:7327
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr "Ã©pilogue: fanions: %u, nombre: %u\n"
 
-#: vms-alpha.c:7157
+#: vms-alpha.c:7337
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr "dÃ©but blk: adresse: 0x%08x, nom: %.*s\n"
 
-#: vms-alpha.c:7166
+#: vms-alpha.c:7346
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr "fin blk: taille: 0x%08x\n"
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7352
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "typspec (long: %u)\n"
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7359
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr "septyp, nom: %.*s\n"
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7368
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr "dÃ©but rec: nom: %.*s\n"
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7370
 #, c-format
 msgid "    len: %u bits\n"
 msgstr "   long: %u bits\n"
 
-#: vms-alpha.c:7195
+#: vms-alpha.c:7375
 #, c-format
 msgid "recend\n"
 msgstr "fin rec\n"
 
-#: vms-alpha.c:7199
+#: vms-alpha.c:7379
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr "dÃ©but Ã©numÃ©ration, long: %u, nom: %.*s\n"
 
-#: vms-alpha.c:7203
+#: vms-alpha.c:7383
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr "Ã©numÃ©ration Ã©lÃ©ments, nom: %.*s\n"
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7387
 #, c-format
 msgid "enumend\n"
 msgstr "fin Ã©numÃ©ration\n"
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7392
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr "Ã©tiquette, nom: %.*s\n"
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7394
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr "    adresse: 0x%08x\n"
 
-#: vms-alpha.c:7224
+#: vms-alpha.c:7404
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "plage discontinue (nbr: %u)\n"
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7407
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    adresse: 0x%08x, taille: %u\n"
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7417
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "num ligne  (long: %u)\n"
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7434
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:7261
+#: vms-alpha.c:7441
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:7267
+#: vms-alpha.c:7447
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7273
+#: vms-alpha.c:7453
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7279
+#: vms-alpha.c:7459
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7284
+#: vms-alpha.c:7464
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7289
+#: vms-alpha.c:7469
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7294
+#: vms-alpha.c:7474
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7478
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7483
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7485
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7310
+#: vms-alpha.c:7490
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7312
+#: vms-alpha.c:7492
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7318
+#: vms-alpha.c:7498
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "delta pc +%-4d"
 
-#: vms-alpha.c:7322
+#: vms-alpha.c:7502
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x ligne: %5u\n"
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7507
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    cmd %u *non gÃ©rÃ©e*\n"
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7522
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "source (long: %u)\n"
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7537
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
 msgstr "   declfile: long: %u, fanions: %u, id fichier: %u\n"
 
-#: vms-alpha.c:7362
+#: vms-alpha.c:7542
 #, c-format
 msgid "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 msgstr "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 
-#: vms-alpha.c:7371
+#: vms-alpha.c:7551
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   nom fichier: %.*s\n"
 
-#: vms-alpha.c:7380
+#: vms-alpha.c:7560
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7385 vms-alpha.c:7390
+#: vms-alpha.c:7565 vms-alpha.c:7570
 #, c-format
 msgid "   setrec %u\n"
 msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7395 vms-alpha.c:7400
+#: vms-alpha.c:7575 vms-alpha.c:7580
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7405 vms-alpha.c:7410
+#: vms-alpha.c:7585 vms-alpha.c:7590
 #, c-format
 msgid "   deflines %u\n"
 msgstr "   deflines %u\n"
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:7594
 #, c-format
 msgid "   formfeed\n"
 msgstr "   formfeed\n"
 
-#: vms-alpha.c:7418
+#: vms-alpha.c:7598
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   cmd %u *non gÃ©rÃ©e*\n"
 
-#: vms-alpha.c:7430
+#: vms-alpha.c:7610
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "type dst %u *non gÃ©rÃ©*\n"
 
-#: vms-alpha.c:7462
+#: vms-alpha.c:7642
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr "ne peut lire EIHD\n"
 
-#: vms-alpha.c:7466
+#: vms-alpha.c:7646
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr "EIHD: (taille: %u, nbr blocs: %u)\n"
 
-#: vms-alpha.c:7470
+#: vms-alpha.c:7650
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " id majeur: %u, id mineur: %u\n"
 
-#: vms-alpha.c:7478
+#: vms-alpha.c:7658
 msgid "executable"
 msgstr "exÃ©cutable"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:7661
 msgid "linkable image"
 msgstr "image liable"
 
-#: vms-alpha.c:7488
+#: vms-alpha.c:7668
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " type image: %u (%s)"
 
-#: vms-alpha.c:7494
+#: vms-alpha.c:7674
 msgid "native"
 msgstr "natif"
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:7677
 msgid "CLI"
 msgstr "CLI"
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:7684
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", sous-type: %u (%s)\n"
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:7691
 #, c-format
 msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 msgstr " offsets: isd: %u, actif: %u, debug symbol: %u, id image: %u, patch: %u\n"
 
-#: vms-alpha.c:7515
+#: vms-alpha.c:7695
 #, c-format
 msgid " fixup info rva: "
 msgstr " correctif info rva: "
 
-#: vms-alpha.c:7517
+#: vms-alpha.c:7697
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", vecteur de symbol rva: "
 
-#: vms-alpha.c:7520
+#: vms-alpha.c:7700
 #, c-format
 msgid ""
 "\n"
@@ -7267,474 +7621,474 @@ msgstr ""
 "\n"
 " offset tableau version: %u\n"
 
-#: vms-alpha.c:7525
+#: vms-alpha.c:7705
 #, c-format
 msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
 msgstr " dÃ©compte E/S img: %u, nbr canaux: %u, priv req: %08x%08x\n"
 
-#: vms-alpha.c:7531
+#: vms-alpha.c:7711
 #, c-format
 msgid " linker flags: %08x:"
 msgstr " fanions lieur: %08x:"
 
-#: vms-alpha.c:7562
+#: vms-alpha.c:7742
 #, c-format
 msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 msgstr " ident: 0x%08x, ver sys: 0x%08x, apparier ctrl: %u, taille vectsym: %u\n"
 
-#: vms-alpha.c:7568
+#: vms-alpha.c:7748
 #, c-format
 msgid " BPAGE: %u"
 msgstr " BPAGE: %u"
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:7755
 #, c-format
 msgid ", ext fixup offset: %u, no_opt psect off: %u"
 msgstr ", offset correctif Ã©tendu: %u, offset no_opt psect: %u"
 
-#: vms-alpha.c:7578
+#: vms-alpha.c:7758
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", alias: %u\n"
 
-#: vms-alpha.c:7586
+#: vms-alpha.c:7766
 #, c-format
 msgid "system version array information:\n"
 msgstr "information sur table de version systÃ¨me:\n"
 
-#: vms-alpha.c:7590
+#: vms-alpha.c:7770
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr "ne peut lire l'en-tÃªte EIHVN\n"
 
-#: vms-alpha.c:7600
+#: vms-alpha.c:7780
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr "ne peut lire la version EIHVN\n"
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:7783
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:7787
 msgid "BASE_IMAGE       "
 msgstr "BASE_IMAGE       "
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:7790
 msgid "MEMORY_MANAGEMENT"
 msgstr "MEMORY_MANAGEMENT"
 
-#: vms-alpha.c:7613
+#: vms-alpha.c:7793
 msgid "IO               "
 msgstr "IO               "
 
-#: vms-alpha.c:7616
+#: vms-alpha.c:7796
 msgid "FILES_VOLUMES    "
 msgstr "FILES_VOLUMES    "
 
-#: vms-alpha.c:7619
+#: vms-alpha.c:7799
 msgid "PROCESS_SCHED    "
 msgstr "PROCESS_SCHED    "
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:7802
 msgid "SYSGEN           "
 msgstr "SYSGEN           "
 
-#: vms-alpha.c:7625
+#: vms-alpha.c:7805
 msgid "CLUSTERS_LOCKMGR "
 msgstr "CLUSTERS_LOCKMGR "
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:7808
 msgid "LOGICAL_NAMES    "
 msgstr "LOGICAL_NAMES    "
 
-#: vms-alpha.c:7631
+#: vms-alpha.c:7811
 msgid "SECURITY         "
 msgstr "SECURITY         "
 
-#: vms-alpha.c:7634
+#: vms-alpha.c:7814
 msgid "IMAGE_ACTIVATOR  "
 msgstr "IMAGE_ACTIVATOR  "
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:7817
 msgid "NETWORKS         "
 msgstr "NETWORKS         "
 
-#: vms-alpha.c:7640
+#: vms-alpha.c:7820
 msgid "COUNTERS         "
 msgstr "COUNTERS         "
 
-#: vms-alpha.c:7643
+#: vms-alpha.c:7823
 msgid "STABLE           "
 msgstr "STABLE           "
 
-#: vms-alpha.c:7646
+#: vms-alpha.c:7826
 msgid "MISC             "
 msgstr "MISC             "
 
-#: vms-alpha.c:7649
+#: vms-alpha.c:7829
 msgid "CPU              "
 msgstr "CPU              "
 
-#: vms-alpha.c:7652
+#: vms-alpha.c:7832
 msgid "VOLATILE         "
 msgstr "VOLATILE         "
 
-#: vms-alpha.c:7655
+#: vms-alpha.c:7835
 msgid "SHELL            "
 msgstr "SHELL            "
 
-#: vms-alpha.c:7658
+#: vms-alpha.c:7838
 msgid "POSIX            "
 msgstr "POSIX            "
 
-#: vms-alpha.c:7661
+#: vms-alpha.c:7841
 msgid "MULTI_PROCESSING "
 msgstr "MULTI_PROCESSING "
 
-#: vms-alpha.c:7664
+#: vms-alpha.c:7844
 msgid "GALAXY           "
 msgstr "GALAXY           "
 
-#: vms-alpha.c:7667
+#: vms-alpha.c:7847
 msgid "*unknown*        "
 msgstr "*inconnu*        "
 
-#: vms-alpha.c:7683 vms-alpha.c:7958
+#: vms-alpha.c:7863 vms-alpha.c:8137
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr "ne peut lire EIHA\n"
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:7866
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr "Activation de l'image:  (taille=%u)\n"
 
-#: vms-alpha.c:7689
+#: vms-alpha.c:7869
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr " PremiÃ¨re adresse : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7693
+#: vms-alpha.c:7873
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr " DeuxiÃ¨me adresse : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7697
+#: vms-alpha.c:7877
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr " TroisiÃ¨me adresse: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7701
+#: vms-alpha.c:7881
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr " QuatriÃ¨me adresse: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7705
+#: vms-alpha.c:7885
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr " Image partagÃ©e   : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7716
+#: vms-alpha.c:7896
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr "ne peut lire EIHI\n"
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:7900
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr "Identification d'image: (majeur: %u, mineur: %u)\n"
 
-#: vms-alpha.c:7723
+#: vms-alpha.c:7903
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr " nom de l'image    : %.*s\n"
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:7905
 #, c-format
 msgid " link time        : %s\n"
 msgstr " heure de liaison  : %s\n"
 
-#: vms-alpha.c:7727
+#: vms-alpha.c:7907
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " ident image       : %.*s\n"
 
-#: vms-alpha.c:7729
+#: vms-alpha.c:7909
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " ident lieur       : %.*s\n"
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:7911
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr " ident construction image: %.*s\n"
 
-#: vms-alpha.c:7741
+#: vms-alpha.c:7921
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr "ne peut lire EIHS\n"
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:7925
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr "Image des symboles et table debug: (majeur: %u, mineur: %u)\n"
 
-#: vms-alpha.c:7751
+#: vms-alpha.c:7931
 #, c-format
 msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
 msgstr " table des symboles de debug : vbn: %u, taille: %u (0x%x)\n"
 
-#: vms-alpha.c:7756
+#: vms-alpha.c:7936
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr " table des symboles globale: vbn: %u, enregistrements: %u\n"
 
-#: vms-alpha.c:7761
+#: vms-alpha.c:7941
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr " table des modules de debug: vbn: %u, taille: %u\n"
 
-#: vms-alpha.c:7774
+#: vms-alpha.c:7954
 #, c-format
 msgid "cannot read EISD\n"
 msgstr "ne peut lire EISD\n"
 
-#: vms-alpha.c:7785
+#: vms-alpha.c:7965
 #, c-format
 msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
 msgstr "Descripteur de section d'image: (majeur: %u, mineur: %u, taille: %u, offset: %u)\n"
 
-#: vms-alpha.c:7793
+#: vms-alpha.c:7973
 #, c-format
 msgid " section: base: 0x%08x%08x size: 0x%08x\n"
 msgstr " section: base: 0x%08x%08x taille: 0x%08x\n"
 
-#: vms-alpha.c:7798
+#: vms-alpha.c:7978
 #, c-format
 msgid " flags: 0x%04x"
 msgstr " fanions: 0x%04x"
 
-#: vms-alpha.c:7836
+#: vms-alpha.c:8016
 #, c-format
 msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 msgstr " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 
-#: vms-alpha.c:7842
+#: vms-alpha.c:8022
 msgid "NORMAL"
 msgstr "NORMAL"
 
-#: vms-alpha.c:7845
+#: vms-alpha.c:8025
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:8028
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7851
+#: vms-alpha.c:8031
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7854
+#: vms-alpha.c:8034
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7857
+#: vms-alpha.c:8037
 msgid "USRSTACK"
 msgstr "USRSTACK"
 
-#: vms-alpha.c:7863
+#: vms-alpha.c:8043
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7866
+#: vms-alpha.c:8046
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " ident: 0x%08x, nom: %.*s\n"
 
-#: vms-alpha.c:7876
+#: vms-alpha.c:8056
 #, c-format
 msgid "cannot read DMT\n"
 msgstr "ne peut lire DMT\n"
 
-#: vms-alpha.c:7880
+#: vms-alpha.c:8060
 #, c-format
 msgid "Debug module table:\n"
 msgstr "Table de debug du module:\n"
 
-#: vms-alpha.c:7889
+#: vms-alpha.c:8069
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr "ne peut lire l'en-tÃªte DMT\n"
 
-#: vms-alpha.c:7895
+#: vms-alpha.c:8075
 #, c-format
 msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
 msgstr " offset du module: 0x%08x, taille: 0x%08x, (%u psects)\n"
 
-#: vms-alpha.c:7905
+#: vms-alpha.c:8085
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr "ne peut lire le psect DMT\n"
 
-#: vms-alpha.c:7909
+#: vms-alpha.c:8089
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr "  dÃ©but psect: 0x%08x, longueur: %u\n"
 
-#: vms-alpha.c:7922
+#: vms-alpha.c:8102
 #, c-format
 msgid "cannot read DST\n"
 msgstr "ne peut lire DST\n"
 
-#: vms-alpha.c:7932
+#: vms-alpha.c:8112
 #, c-format
 msgid "cannot read GST\n"
 msgstr "ne peut lire GST\n"
 
-#: vms-alpha.c:7936
+#: vms-alpha.c:8116
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Table des symboles globaux:\n"
 
-#: vms-alpha.c:7965
+#: vms-alpha.c:8143
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr "Correction de l'activateur de l'image: (majeur: %u, mineur: %u)\n"
 
-#: vms-alpha.c:7969
+#: vms-alpha.c:8147
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr "  lien iaf : 0x%08x %08x\n"
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8151
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr "  lien correctif: 0x%08x %08x\n"
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8154
 #, c-format
 msgid "  size : %u\n"
 msgstr "  taille : %u\n"
 
-#: vms-alpha.c:7978
+#: vms-alpha.c:8156
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr "  fanions: 0x%08x\n"
 
-#: vms-alpha.c:7983
+#: vms-alpha.c:8161
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7988
+#: vms-alpha.c:8166
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8171
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8174
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:8000
+#: vms-alpha.c:8178
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:8003
+#: vms-alpha.c:8181
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8184
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:8008
+#: vms-alpha.c:8186
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:8016
+#: vms-alpha.c:8194
 #, c-format
 msgid " Shareable images:\n"
 msgstr " Images partageables:\n"
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8199
 #, c-format
 msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
 msgstr "  %u: taille: %u, fanions: 0x%02x, nom: %.*s\n"
 
-#: vms-alpha.c:8028
+#: vms-alpha.c:8206
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr " correctifs du rÃ©adressage des quad-mots:\n"
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8211
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr " correctifs du rÃ©adressage des mots longs:\n"
 
-#: vms-alpha.c:8038
+#: vms-alpha.c:8216
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr " correctifs des rÃ©fÃ©rences quad-mots Â«Â .addressÂ Â»:\n"
 
-#: vms-alpha.c:8043
+#: vms-alpha.c:8221
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr " correctifs des rÃ©fÃ©rences mots longs Â«Â .addressÂ Â»:\n"
 
-#: vms-alpha.c:8048
+#: vms-alpha.c:8226
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr " Correctifs des rÃ©fÃ©rences des adresses de code:\n"
 
-#: vms-alpha.c:8053
+#: vms-alpha.c:8231
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr " Correctifs des rÃ©fÃ©rences des paires de liaison:\n"
 
-#: vms-alpha.c:8062
+#: vms-alpha.c:8240
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " Changement de protection (%u entrÃ©es):\n"
 
-#: vms-alpha.c:8068
+#: vms-alpha.c:8246
 #, c-format
 msgid "  base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "
 msgstr "  base: 0x%08x %08x, taille: 0x%08x, prot: 0x%08x "
 
 #. FIXME: we do not yet support relocatable link.  It is not obvious
 #. how to do it for debug infos.
-#: vms-alpha.c:8908
+#: vms-alpha.c:9123
 msgid "%P: relocatable link is not supported\n"
 msgstr "%P: lien relocalisable pas supportÃ©\n"
 
-#: vms-alpha.c:8979
+#: vms-alpha.c:9194
 #, c-format
 msgid "%P: multiple entry points: in modules %pB and %pB\n"
 msgstr "%P: points d'entrÃ©e multiples: dans les modules %pB et %pB\n"
 
-#: vms-lib.c:1445
+#: vms-lib.c:1525
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr "n'a pas su ouvrir l'image partagÃ©e Â«Â %sÂ Â» de Â«Â %sÂ Â»"
 
-#: vms-misc.c:361
+#: vms-misc.c:367
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr "_bfd_vms_output_counted appelÃ© avec un compte de zÃ©ro octet"
 
-#: vms-misc.c:366
+#: vms-misc.c:372
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "_bfd_vms_output_counted appelÃ© avec trop d'octets"
 
@@ -7748,172 +8102,209 @@ msgstr "%pB: objet XCOFF partagÃ© alors
 msgid "%pB: dynamic object with no .loader section"
 msgstr "%pB: objet dynamique sans section .loader"
 
-#: xcofflink.c:1413
+#: xcofflink.c:1417
 #, c-format
 msgid "%pB: `%s' has line numbers but no enclosing section"
 msgstr "%pB: Â«Â %sÂ Â» contient des numÃ©ros de lignes mais de section d'encadrement"
 
-#: xcofflink.c:1466
+#: xcofflink.c:1470
 #, c-format
 msgid "%pB: class %d symbol `%s' has no aux entries"
 msgstr "%pB: classe %d symbole Â«Â %sÂ Â» n'a pas d'entrÃ©e auxiliaire"
 
-#: xcofflink.c:1489
+#: xcofflink.c:1493
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized csect type %d"
 msgstr "%pB: symbole Â«Â %sÂ Â» a un type csect %d non reconnu"
 
-#: xcofflink.c:1502
+#: xcofflink.c:1506
 #, c-format
 msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
 msgstr "%pB: symbole XTY_ER Â«Â %sÂ Â» erronÃ©: classe %d scnum %d scnlen %<PRId64>"
 
-#: xcofflink.c:1533
+#: xcofflink.c:1537
 #, c-format
 msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
 msgstr "%pB: XMC_TC0 symbol Â«Â %sÂ Â» est la classe %d scnlen %<PRId64>"
 
-#: xcofflink.c:1680
+#: xcofflink.c:1684
 #, c-format
 msgid "%pB: csect `%s' not in enclosing section"
 msgstr "%pB: csect Â«Â %sÂ Â» n'est pas dans un section d'encadrement"
 
-#: xcofflink.c:1788
+#: xcofflink.c:1792
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr "%pB: XTY_LD Â«Â %sÂ Â» mal placÃ©"
 
-#: xcofflink.c:2109
+#: xcofflink.c:2113
 #, c-format
 msgid "%pB: reloc %s:%<PRId64> not in csect"
 msgstr "%pB: le rÃ©adressage %s:%<PRId64> n'est pas dans csect"
 
-#: xcofflink.c:3196
+#: xcofflink.c:3193
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: pas de tel symbole"
 
-#: xcofflink.c:3301
+#: xcofflink.c:3298
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "attention: tentative d'exportation d'un symbole non dÃ©fini Â«Â %sÂ Â»"
 
-#: xcofflink.c:3680
+#: xcofflink.c:3677
 msgid "error: undefined symbol __rtinit"
 msgstr "erreur: symbole __rtinit non dÃ©fini"
 
-#: xcofflink.c:4060
+#: xcofflink.c:4055
 #, c-format
 msgid "%pB: loader reloc in unrecognized section `%s'"
 msgstr "%pB: chargeur de rÃ©adressage dans une section non reconnue Â«Â %sÂ Â»"
 
-#: xcofflink.c:4072
+#: xcofflink.c:4067
 #, c-format
 msgid "%pB: `%s' in loader reloc but not loader sym"
 msgstr "%pB: Â«Â %sÂ Â» est dans le chargeur de rÃ©adressage mais pas dans celui des symboles"
 
-#: xcofflink.c:4089
+#: xcofflink.c:4084
 #, c-format
 msgid "%pB: loader reloc in read-only section %pA"
 msgstr "%pB: chargeur de rÃ©adressages dans la section %pA en lecture seule"
 
-#: xcofflink.c:5113
+#: xcofflink.c:5112
 #, c-format
 msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
 msgstr "DÃ©bordement de la table des entrÃ©es: %#<PRIx64> > 0x10000; essayez l'option -mminimal-toc Ã  la compilation"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5031
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2872
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "attribut inconnu pour le symbole Â«Â %sÂ Â»Â : 0x%02x"
+
+#: elfnn-aarch64.c:5246
 #, c-format
 msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
 msgstr "%pB: erreur: l'Ã©bauche d'erratum du 835769 est hors limite (fichier d'entrÃ©e trop grand)"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5112
+#: elfnn-aarch64.c:5338
 #, c-format
 msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
 msgstr "%pB: erreur: l'Ã©bauche d'erratum du 843419 est hors limite (fichier d'entrÃ©e trop grand)"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5641
+#: elfnn-aarch64.c:5351
+msgid "%pB: error: erratum 843419 immediate 0x%"
+msgstr "%pB: erreur: erratum 843419 immÃ©diat 0x%"
+
+#: elfnn-aarch64.c:5899
 #, c-format
 msgid "%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: rÃ©adressage de %s en vertu du symbol Â«Â %sÂ Â» qui peut Ãªtre liÃ© avec l'extÃ©rieur ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5732
+#: elfnn-aarch64.c:5990
 #, c-format
 msgid "%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol"
 msgstr "%pB: la table des descripteurs de symboles locaux peut Ãªtre NULL en application le rÃ©adressage %s sur un symbole local"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6830
+#: elfnn-aarch64.c:6103 elfnn-aarch64.c:6140
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr "%pB: rÃ©adressage TLS %s sur le symbole indÃ©fini Â«Â %sÂ Â»"
+
+#: elfnn-aarch64.c:7125
 msgid "too many GOT entries for -fpic, please recompile with -fPIC"
 msgstr "trop d'entrÃ©es GOT pour -fpic, recompilez avec -fPIC"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6858
+#: elfnn-aarch64.c:7153
 msgid "one possible cause of this error is that the symbol is being referenced in the indicated code as if it had a larger alignment than was declared where it was defined"
 msgstr "une cause possible pour cette erreur est que le symbole est rÃ©fÃ©rencÃ© dans le code indiquÃ© comme si il avait un alignement plus grand que celui qui a Ã©tÃ© dÃ©clarÃ© lors de sa dÃ©finition."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7443
+#: elfnn-aarch64.c:7720
 #, c-format
 msgid "%pB: relocation %s against `%s' can not be used when making a shared object"
 msgstr "%pB: le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en crÃ©ant un objet partagÃ©"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:182
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:217
+#: elfnn-riscv.c:187 elfnn-riscv.c:222
 #, c-format
 msgid "%pB: warning: RVE PLT generation not supported"
 msgstr "%pB: attention: la gÃ©nÃ©ration de PLT RVE n'est pas supportÃ©e"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2311
+#: elfnn-riscv.c:1977
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "symbole de section %pcrel_lo avec un opÃ©rande"
+
+#: elfnn-riscv.c:2198
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%p: rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC\n"
+
+#: elfnn-riscv.c:2208
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%%X%%P: rÃ©adressage %s sans solution par rapport au symbole Â«Â %sÂ Â»\n"
+
+#: elfnn-riscv.c:2247
 msgid "%X%P: internal error: out of range error\n"
 msgstr "%X%P: erreur interne: erreur car hors limite\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2315
+#: elfnn-riscv.c:2252
 msgid "%X%P: internal error: unsupported relocation error\n"
 msgstr "%X%P: erreur interne: erreur car rÃ©adressage non supportÃ©\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2325
+#: elfnn-riscv.c:2258
+msgid "dangerous relocation error"
+msgstr "erreur de rÃ©adressage dangereux"
+
+#: elfnn-riscv.c:2264
 msgid "%X%P: internal error: unknown error\n"
 msgstr "%X%P: erreur interne: erreur inconnue\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2711
+#: elfnn-riscv.c:2630
 #, c-format
-msgid "error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%d"
-msgstr "erreur: %pB: version ISA non concordante pour l'extension Â«Â %sÂ Â». %d.%d vs %d.%d"
+msgid "error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%d"
+msgstr "erreur: %pB: Version ISA non concordante pour l'extension Â«Â %sÂ Â». %d.%d vs %d.%d"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2729
+#: elfnn-riscv.c:2648
 #, c-format
-msgid "error: %pB: corrupted ISA string '%s'.first letter should be 'i' or 'e' but got '%s'."
-msgstr "erreur: %pB: chaÃ®ne ISA Â«Â %sÂ Â» corrompue, la premiÃ¨re lettre devrait Ãªtre Â«Â iÂ Â» ou Â«Â eÂ Â» mais on a trouvÃ© Â«Â %sÂ Â»."
+msgid "error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but got '%s'."
+msgstr "erreur: %pB: chaÃ®ne ISA Â«Â %sÂ Â» corrompue. La premiÃ¨re lettre devrait Ãªtre Â«Â iÂ Â» ou Â«Â eÂ Â» mais on a trouvÃ© Â«Â %sÂ Â»."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2773
+#: elfnn-riscv.c:2692
 #, c-format
 msgid "error: %pB: Mis-matched ISA string to merge '%s' and '%s'."
 msgstr "erreur: %pB: ChaÃ®nes ISA Ã  fusionner Â«Â %sÂ Â» et Â«Â %sÂ Â» non concordantes."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2921
+#: elfnn-riscv.c:2893
 #, c-format
 msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)."
 msgstr "erreur: %pB: la chaÃ®ne ISA en entrÃ©e (%s) ne correspond pas Ã  la sortie (%s)."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2946
+#: elfnn-riscv.c:2913
 #, c-format
 msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)."
 msgstr "erreur: %pB: XLEN de l'entrÃ©e (%u) ne correspond pas Ã  la sortie (%u)."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2954
+#: elfnn-riscv.c:2921
 #, c-format
-msgid "error: %pB: Unspported XLEN (%u), you mightusing wrong emulation."
+msgid "error: %pB: Unsupported XLEN (%u), you might be using wrong emulation."
 msgstr "erreur: %pB: XLEN (%u) non supportÃ©e, vous pourriez Ãªtre en train d'utiliser la mauvaise Ã©mulation."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3039
+#: elfnn-riscv.c:3035
 #, c-format
-msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
-msgstr "erreur: %pB: version de spec priv en conflit (majeur/mineur/rÃ©vision)."
+msgid "warning: %pB use privilege spec version %u.%u.%u but the output use version %u.%u.%u."
+msgstr "avertissement: %pB utilise la version de spec privilÃ¨ge %u.%u.%u mais la sortie utilise la version %u.%u.%u."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3055
+#: elfnn-riscv.c:3053
+msgid "warning: privilege spec version 1.9.1 can not be linked with other spec versions."
+msgstr "attention: la version de spec privilÃ¨ge 1.9.1 ne peut pas Ãªtre liÃ©e avec d'autres versions de spec."
+
+#: elfnn-riscv.c:3081
 #, c-format
 msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned."
 msgstr "erreur: %pB utilise un alignement de pile de %u octets mais la sortie utilise un alignement de pile de %u octets."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3096
+#: elfnn-riscv.c:3122
 #, c-format
 msgid ""
 "%pB: ABI is incompatible with that of the selected emulation:\n"
@@ -7922,111 +8313,111 @@ msgstr ""
 "%pB: l'ABI est incompatible avec celle de l'Ã©mulation sÃ©lectionnÃ©e:\n"
 "  l'Ã©mulation de la cible Â«Â %sÂ Â» ne correspond pas Ã  Â«Â %sÂ Â»"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3119
+#: elfnn-riscv.c:3176
 #, c-format
 msgid "%pB: can't link %s modules with %s modules"
 msgstr "%pB: impossible de rÃ©aliser l'Ã©dition de liens des modules %s avec les modules %s"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3129
+#: elfnn-riscv.c:3186
 #, c-format
 msgid "%pB: can't link RVE with other target"
 msgstr "%pB: impossible de faire l'Ã©dition de lien avec une autre cible"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3630
+#: elfnn-riscv.c:3724
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-byte boundary, but only %<PRId64> present"
 msgstr "%pB(%pA+0x%<PRIx64>: %<PRId64> octets requis pour aligner sur une frontiÃ¨re de %<PRId64> octets mais seulement %<PRId64> sont prÃ©sents"
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
+#: peXXigen.c:164
 #, c-format
 msgid "%pB: unable to find name for empty section"
 msgstr "%pB: impossible de trouver le nom pour une section vide"
 
-#: peigen.c:183 pepigen.c:183 pex64igen.c:183
+#: peXXigen.c:191
 #, c-format
 msgid "%pB: out of memory creating name for empty section"
 msgstr "%pB: pas assez de mÃ©moire en crÃ©ant le nom pour une section vide"
 
-#: peigen.c:194 pepigen.c:194 pex64igen.c:194
+#: peXXigen.c:201
 #, c-format
 msgid "%pB: unable to create fake empty section"
 msgstr "%pB: impossible de crÃ©er une section vide factice"
 
-#: peigen.c:532 pepigen.c:532 pex64igen.c:532
+#: peXXigen.c:539
 #, c-format
-msgid "%pB: aout header specifies an invalid number of data-directory entries: %ld"
-msgstr "%pB: l'en-tÃªte aout spÃ©cifie un nombre invalide d'entrÃ©es de rÃ©pertoire de donnÃ©es: %ld"
+msgid "%pB: aout header specifies an invalid number of data-directory entries: %u"
+msgstr "%pB: l'en-tÃªte aout spÃ©cifie un nombre invalide d'entrÃ©es de rÃ©pertoire de donnÃ©es: %u"
 
-#: peigen.c:1091 pepigen.c:1091 pex64igen.c:1091
+#: peXXigen.c:1088
 #, c-format
 msgid "%pB: line number overflow: 0x%lx > 0xffff"
 msgstr "%pB: dÃ©bordement du nombre de lignes: 0x%lx > 0xffff"
 
-#: peigen.c:1235 pepigen.c:1235 pex64igen.c:1235
+#: peXXigen.c:1241
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr "RÃ©pertoire d'exportation [.edata (ou lÃ  oÃ¹ il a Ã©tÃ© trouvÃ©)]"
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1242
 msgid "Import Directory [parts of .idata]"
 msgstr "RÃ©pertoire d'importation [faisant partie de .idata]"
 
-#: peigen.c:1237 pepigen.c:1237 pex64igen.c:1237
+#: peXXigen.c:1243
 msgid "Resource Directory [.rsrc]"
 msgstr "RÃ©pertoire des resources [.rsrc]"
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1244
 msgid "Exception Directory [.pdata]"
 msgstr "RÃ©pertoire des exceptions [.pdata]"
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1245
 msgid "Security Directory"
 msgstr "RÃ©pertoire de la sÃ©curitÃ©"
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1246
 msgid "Base Relocation Directory [.reloc]"
 msgstr "RÃ©pertoire de base du rÃ©adressage [.reloc]"
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1247
 msgid "Debug Directory"
 msgstr "RÃ©pertoire de dÃ©bug"
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1248
 msgid "Description Directory"
 msgstr "RÃ©pertoire de description"
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1249
 msgid "Special Directory"
 msgstr "RÃ©pertoire spÃ©cial"
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1250
 msgid "Thread Storage Directory [.tls]"
 msgstr "RÃ©pertoire des files de stockage [.tls]"
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1251
 msgid "Load Configuration Directory"
 msgstr "RÃ©pertoire de chargement de configuration"
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1252
 msgid "Bound Import Directory"
 msgstr "RÃ©pertoire des importations limitÃ©es"
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1253
 msgid "Import Address Table Directory"
 msgstr "RÃ©pertoire de la table d'adresse d'importation"
 
-#: peigen.c:1248 pepigen.c:1248 pex64igen.c:1248
+#: peXXigen.c:1254
 msgid "Delay Import Directory"
 msgstr "RÃ©pertoire des dÃ©lais d'importation"
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1255
 msgid "CLR Runtime Header"
 msgstr "En-tÃªte exÃ©cutable CLR"
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1256
 msgid "Reserved"
 msgstr "RÃ©servÃ©"
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1316
 #, c-format
 msgid ""
 "\n"
@@ -8035,7 +8426,7 @@ msgstr ""
 "\n"
 "Il y a une table d'importation, mais la section la contenant ne peut Ãªtre repÃ©rÃ©e\n"
 
-#: peigen.c:1316 pepigen.c:1316 pex64igen.c:1316
+#: peXXigen.c:1322
 #, c-format
 msgid ""
 "\n"
@@ -8044,7 +8435,7 @@ msgstr ""
 "\n"
 "Il y a une table d'importation dans %s, mais cette section n'a pas de contenu\n"
 
-#: peigen.c:1323 pepigen.c:1323 pex64igen.c:1323
+#: peXXigen.c:1329
 #, c-format
 msgid ""
 "\n"
@@ -8053,7 +8444,7 @@ msgstr ""
 "\n"
 "Il y a une table d'importation dans %s Ã  0x%lx\n"
 
-#: peigen.c:1365 pepigen.c:1365 pex64igen.c:1365
+#: peXXigen.c:1369
 #, c-format
 msgid ""
 "\n"
@@ -8062,12 +8453,12 @@ msgstr ""
 "\n"
 "Descripteur de fonction localisÃ© Ã  l'adresse de dÃ©part: %04lx\n"
 
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
+#: peXXigen.c:1373
 #, c-format
 msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
 msgstr "\tcode-base %08lx tab. des entrÃ©es (chargeable/actuel) %08lx/%08lx\n"
 
-#: peigen.c:1377 pepigen.c:1377 pex64igen.c:1377
+#: peXXigen.c:1380
 #, c-format
 msgid ""
 "\n"
@@ -8076,7 +8467,7 @@ msgstr ""
 "\n"
 "Pas de section reldata! Descripteur de fonction pas dÃ©codÃ©.\n"
 
-#: peigen.c:1382 pepigen.c:1382 pex64igen.c:1382
+#: peXXigen.c:1385
 #, c-format
 msgid ""
 "\n"
@@ -8085,7 +8476,7 @@ msgstr ""
 "\n"
 "Les tables d'importation (contenus interprÃ©tÃ© de la section %s)\n"
 
-#: peigen.c:1385 pepigen.c:1385 pex64igen.c:1385
+#: peXXigen.c:1388
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -8094,7 +8485,7 @@ msgstr ""
 " vma:            Hint    Temps     Avant    DLL       Premier\n"
 "                 Table   Estampil. ChaÃ®ne   Nom       Thunk\n"
 
-#: peigen.c:1435 pepigen.c:1435 pex64igen.c:1435
+#: peXXigen.c:1437
 #, c-format
 msgid ""
 "\n"
@@ -8103,12 +8494,12 @@ msgstr ""
 "\n"
 "\tNom DLL: %.*s\n"
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1453
 #, c-format
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
 msgstr "\tvma:  Hint/Ord Membre      Lien\n"
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1478
 #, c-format
 msgid ""
 "\n"
@@ -8117,13 +8508,12 @@ msgstr ""
 "\n"
 "Il y a un premier Â«Â thunkÂ Â», mais la section le contenant ne peut Ãªtre repÃ©rÃ©e\n"
 
-#: peigen.c:1520 peigen.c:1559 pepigen.c:1520 pepigen.c:1559 pex64igen.c:1520
-#: pex64igen.c:1559
+#: peXXigen.c:1522 peXXigen.c:1561
 #, c-format
 msgid "\t<corrupt: 0x%04lx>"
 msgstr "\t<corrompu: 0x%04lx>"
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1654
 #, c-format
 msgid ""
 "\n"
@@ -8132,7 +8522,7 @@ msgstr ""
 "\n"
 "Il y a une table d'exportation, mais la section la contenant n'a pu Ãªtre repÃ©rÃ©e\n"
 
-#: peigen.c:1658 pepigen.c:1658 pex64igen.c:1658
+#: peXXigen.c:1660
 #, c-format
 msgid ""
 "\n"
@@ -8141,7 +8531,7 @@ msgstr ""
 "\n"
 "Il y a une table d'exportation dans %s, mais cette section n'a pas de contenu\n"
 
-#: peigen.c:1669 pepigen.c:1669 pex64igen.c:1669
+#: peXXigen.c:1671
 #, c-format
 msgid ""
 "\n"
@@ -8150,7 +8540,7 @@ msgstr ""
 "\n"
 "Il y a une table d'exportation dans %s, mais elle ne rentre pas dans la section\n"
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1682
 #, c-format
 msgid ""
 "\n"
@@ -8159,7 +8549,7 @@ msgstr ""
 "\n"
 "Il y a une table d'exportation dans %s, mais elle est trop petite (%d)\n"
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1688
 #, c-format
 msgid ""
 "\n"
@@ -8168,7 +8558,7 @@ msgstr ""
 "\n"
 "Il y a une table d'exportation dans %s Ã  0x%lx\n"
 
-#: peigen.c:1714 pepigen.c:1714 pex64igen.c:1714
+#: peXXigen.c:1716
 #, c-format
 msgid ""
 "\n"
@@ -8179,67 +8569,67 @@ msgstr ""
 "Les tables d'exportation (contenus interprÃ©tÃ© de la section %s)\n"
 "\n"
 
-#: peigen.c:1718 pepigen.c:1718 pex64igen.c:1718
+#: peXXigen.c:1720
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
 msgstr "Fanion d'exportation \t\t\t%lx\n"
 
-#: peigen.c:1721 pepigen.c:1721 pex64igen.c:1721
+#: peXXigen.c:1723
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
 msgstr "Tampon Heure/Date \t\t%lx\n"
 
-#: peigen.c:1725 pepigen.c:1725 pex64igen.c:1725
+#: peXXigen.c:1727
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr "Majeur/Mineur \t\t\t%d/%d\n"
 
-#: peigen.c:1728 pepigen.c:1728 pex64igen.c:1728
+#: peXXigen.c:1730
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Nom \t\t\t\t"
 
-#: peigen.c:1739 pepigen.c:1739 pex64igen.c:1739
+#: peXXigen.c:1741
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr "base de nombre ordinal \t\t\t%ld\n"
 
-#: peigen.c:1742 pepigen.c:1742 pex64igen.c:1742
+#: peXXigen.c:1744
 #, c-format
 msgid "Number in:\n"
 msgstr "NumÃ©ro dans:\n"
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1747
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
 msgstr "\tTable d'adresses d'exportation \t\t%08lx\n"
 
-#: peigen.c:1749 pepigen.c:1749 pex64igen.c:1749
+#: peXXigen.c:1751
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
 msgstr "\tTable [Nom pointeur/Nombre ordinal]\t%08lx\n"
 
-#: peigen.c:1752 pepigen.c:1752 pex64igen.c:1752
+#: peXXigen.c:1754
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Table d'adresses\n"
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1757
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr "\tTable d'adresse d'exportation \t\t"
 
-#: peigen.c:1760 pepigen.c:1760 pex64igen.c:1760
+#: peXXigen.c:1762
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr "\tTable des noms de pointeurs \t\t"
 
-#: peigen.c:1765 pepigen.c:1765 pex64igen.c:1765
+#: peXXigen.c:1767
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tTable des ordinals \t\t\t"
 
-#: peigen.c:1779 pepigen.c:1779 pex64igen.c:1779
+#: peXXigen.c:1781
 #, c-format
 msgid ""
 "\n"
@@ -8248,20 +8638,20 @@ msgstr ""
 "\n"
 "Table d'adresses d'exportation -- base de nombre ordinal %ld\n"
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1790
 #, c-format
 msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\tL'adresse virtuelle relative de la table des adresses exportÃ©es (0x%lx) ou le nombre d'entrÃ©es (0x%lx) est invalide\n"
 
-#: peigen.c:1807 pepigen.c:1807 pex64igen.c:1807
+#: peXXigen.c:1809
 msgid "Forwarder RVA"
 msgstr "Adresseur RVA"
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1821
 msgid "Export RVA"
 msgstr "Exportation RVA"
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1828
 #, c-format
 msgid ""
 "\n"
@@ -8270,29 +8660,27 @@ msgstr ""
 "\n"
 "Table [Ordinal/Nom de pointeur]\n"
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1836
 #, c-format
 msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\tAdresse virtuelle relative de la table des pointeurs de noms (0x%lx) ou nombre d'entrÃ©es (0x%lx) invalide\n"
 
-#: peigen.c:1841 pepigen.c:1841 pex64igen.c:1841
+#: peXXigen.c:1843
 #, c-format
 msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\tAdresse virtuelle relative de la table ordinale (0x%lx) ou nombre d'entrÃ©es (0x%lx) invalide\n"
 
-#: peigen.c:1855 pepigen.c:1855 pex64igen.c:1855
+#: peXXigen.c:1857
 #, c-format
 msgid "\t[%4ld] <corrupt offset: %lx>\n"
 msgstr "\t[%4ld] <offset corrompu: %lx>\n"
 
-#: peigen.c:1909 peigen.c:2106 pepigen.c:1909 pepigen.c:2106 pex64igen.c:1909
-#: pex64igen.c:2106
+#: peXXigen.c:1911 peXXigen.c:2107
 #, c-format
 msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
 msgstr "attention, taille de la section .pdata (%ld) n'est pas un multiple de %d\n"
 
-#: peigen.c:1913 peigen.c:2110 pepigen.c:1913 pepigen.c:2110 pex64igen.c:1913
-#: pex64igen.c:2110
+#: peXXigen.c:1915 peXXigen.c:2111
 #, c-format
 msgid ""
 "\n"
@@ -8301,12 +8689,12 @@ msgstr ""
 "\n"
 "La table de fonctions (interprÃ©tation du contenu de la section .pdata)\n"
 
-#: peigen.c:1916 pepigen.c:1916 pex64igen.c:1916
+#: peXXigen.c:1918
 #, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
 msgstr " vma:\t\t\tDÃ©but Adresse    Fin Adresse      Unwind Info\n"
 
-#: peigen.c:1918 pepigen.c:1918 pex64igen.c:1918
+#: peXXigen.c:1920
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -8315,27 +8703,27 @@ msgstr ""
 " vma:\t\tDÃ©but    Fin      EH       EH       FinProlog  Exception\n"
 "     \t\tAdresse  Adresse  Handler  DonnÃ©es  Adresse    Masque\n"
 
-#: peigen.c:1931 pepigen.c:1931 pex64igen.c:1931
+#: peXXigen.c:1933
 #, c-format
 msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
 msgstr "La taille virtuelle de la section .pdata (%ld) est plus grande que la taille rÃ©elle (%ld)\n"
 
-#: peigen.c:2001 pepigen.c:2001 pex64igen.c:2001
+#: peXXigen.c:2002
 #, c-format
 msgid " Register save millicode"
 msgstr " Registre a prÃ©servÃ© le millicode"
 
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
+#: peXXigen.c:2005
 #, c-format
 msgid " Register restore millicode"
 msgstr " Registre a restaurÃ© le millicode"
 
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
+#: peXXigen.c:2008
 #, c-format
 msgid " Glue code sequence"
 msgstr " SÃ©quence du code de liants"
 
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2113
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
@@ -8344,7 +8732,7 @@ msgstr ""
 " vma:\t\tDÃ©but    Long.    Long.    Fanions  Gestion.  EH\n"
 "     \t\tAdresse  Prolog.  Fonction 32b exc  Exception DonnÃ©es\n"
 
-#: peigen.c:2234 pepigen.c:2234 pex64igen.c:2234
+#: peXXigen.c:2234
 #, c-format
 msgid ""
 "\n"
@@ -8355,7 +8743,7 @@ msgstr ""
 "\n"
 "Fichier de base des rÃ©adressages PE (contenus interprÃ©tÃ©s de la section .reloc)\n"
 
-#: peigen.c:2264 pepigen.c:2264 pex64igen.c:2264
+#: peXXigen.c:2263
 #, c-format
 msgid ""
 "\n"
@@ -8364,62 +8752,62 @@ msgstr ""
 "\n"
 "Adresse virtuelle: %08lx taille des morceaux %ld (0x%lx) nombre de correctifs %ld\n"
 
-#: peigen.c:2282 pepigen.c:2282 pex64igen.c:2282
+#: peXXigen.c:2281
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr "\trÃ©adressage %4d dÃ©calage %4x [%4lx] %s"
 
-#: peigen.c:2343 pepigen.c:2343 pex64igen.c:2343
+#: peXXigen.c:2342
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr "%03x %*.s EntrÃ©e: "
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2366
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr "nom: [val: %08lx long %d]: "
 
-#: peigen.c:2387 pepigen.c:2387 pex64igen.c:2387
+#: peXXigen.c:2386
 #, c-format
 msgid "<corrupt string length: %#x>\n"
 msgstr "<longueur de la chaÃ®ne corrompue: %#x>\n"
 
-#: peigen.c:2397 pepigen.c:2397 pex64igen.c:2397
+#: peXXigen.c:2396
 #, c-format
 msgid "<corrupt string offset: %#lx>\n"
 msgstr "<offset de la chaÃ®ne corrompue: %#lx>\n"
 
-#: peigen.c:2402 pepigen.c:2402 pex64igen.c:2402
+#: peXXigen.c:2401
 #, c-format
 msgid "ID: %#08lx"
 msgstr "ID: %#08lx"
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2404
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Valeur: %#08lx\n"
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2426
 #, c-format
 msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
 msgstr "%03x %*.s  Feuilles: Adr: %#08lx, Taille: %#08lx, Codepage: %d\n"
 
-#: peigen.c:2469 pepigen.c:2469 pex64igen.c:2469
+#: peXXigen.c:2468
 #, c-format
 msgid "<unknown directory type: %d>\n"
 msgstr "<type de rÃ©pertoire inconnu: %d>\n"
 
-#: peigen.c:2477 pepigen.c:2477 pex64igen.c:2477
+#: peXXigen.c:2476
 #, c-format
 msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
 msgstr "Table: Car: %d, Temps: %08lx, Ver: %d/%d, Nbr Noms: %d, IDs: %d\n"
 
-#: peigen.c:2566 pepigen.c:2566 pex64igen.c:2566
+#: peXXigen.c:2564
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr "DÃ©tection d'une section .rsrc corrompueÂ !\n"
 
-#: peigen.c:2590 pepigen.c:2590 pex64igen.c:2590
+#: peXXigen.c:2588
 #, c-format
 msgid ""
 "\n"
@@ -8428,17 +8816,17 @@ msgstr ""
 "\n"
 "ATTENTION: DonnÃ©es en trop dans la section .rsrc â€“ elles seront ignorÃ©es par Windows:\n"
 
-#: peigen.c:2596 pepigen.c:2596 pex64igen.c:2596
+#: peXXigen.c:2594
 #, c-format
 msgid " String table starts at offset: %#03x\n"
 msgstr " La table des chaÃ®nes dÃ©marre au dÃ©calage: %#03x\n"
 
-#: peigen.c:2599 pepigen.c:2599 pex64igen.c:2599
+#: peXXigen.c:2597
 #, c-format
 msgid " Resources start at offset: %#03x\n"
 msgstr " Les ressources dÃ©marrent au dÃ©calage: %#03x\n"
 
-#: peigen.c:2651 pepigen.c:2651 pex64igen.c:2651
+#: peXXigen.c:2654
 #, c-format
 msgid ""
 "\n"
@@ -8447,7 +8835,7 @@ msgstr ""
 "\n"
 "Ceci est un rÃ©pertoire de dÃ©bogage, mais la section le contenant ne peut Ãªtre repÃ©rÃ©e\n"
 
-#: peigen.c:2657 pepigen.c:2657 pex64igen.c:2657
+#: peXXigen.c:2660
 #, c-format
 msgid ""
 "\n"
@@ -8456,7 +8844,7 @@ msgstr ""
 "\n"
 "Il y a un rÃ©pertoire de dÃ©bogage dans %s, mais cette section n'a pas de contenu\n"
 
-#: peigen.c:2664 pepigen.c:2664 pex64igen.c:2664
+#: peXXigen.c:2667
 #, c-format
 msgid ""
 "\n"
@@ -8465,7 +8853,7 @@ msgstr ""
 "\n"
 "Erreur: la section %s contient l'adresse de dÃ©part des donnÃ©es de dÃ©bogage mais elle est trop petite\n"
 
-#: peigen.c:2669 pepigen.c:2669 pex64igen.c:2669
+#: peXXigen.c:2672
 #, c-format
 msgid ""
 "\n"
@@ -8475,24 +8863,24 @@ msgstr ""
 "\n"
 "Il y a un rÃ©pertoire de dÃ©bogage dans %s Ã  0x%lx\n"
 
-#: peigen.c:2676 pepigen.c:2676 pex64igen.c:2676
+#: peXXigen.c:2679
 #, c-format
 msgid "The debug data size field in the data directory is too big for the section"
 msgstr "Le champ de taille des donnÃ©es de dÃ©bogage dans le rÃ©pertoire de donnÃ©es est trop grand pour la section"
 
 # RVA = Adresse Virtuelle Relative mais AVR semble inconnu sur internet. Gageons que les utilisateurs trouverons plus
 # facilement la signification de RVA dans ce contexte.
-#: peigen.c:2681 pepigen.c:2681 pex64igen.c:2681
+#: peXXigen.c:2684
 #, c-format
 msgid "Type                Size     Rva      Offset\n"
 msgstr "Type                Taille   Rva      DÃ©calage\n"
 
-#: peigen.c:2729 pepigen.c:2729 pex64igen.c:2729
+#: peXXigen.c:2731
 #, c-format
 msgid "(format %c%c%c%c signature %s age %ld)\n"
 msgstr "(format %c%c%c%c signature %s age %ld)\n"
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2741
 #, c-format
 msgid "The debug directory size is not a multiple of the debug directory entry size\n"
 msgstr "La taille du rÃ©pertoire de dÃ©bogage n'est pas un multiple de la taille d'une entrÃ©e du rÃ©pertoire de dÃ©bogage\n"
@@ -8500,7 +8888,7 @@ msgstr "La taille du rÃ©pertoire de dÃ©b
 #. The MS dumpbin program reportedly ands with 0xff0f before
 #. printing the characteristics field.  Not sure why.  No reason to
 #. emulate it here.
-#: peigen.c:2757 pepigen.c:2757 pex64igen.c:2757
+#: peXXigen.c:2825
 #, c-format
 msgid ""
 "\n"
@@ -8509,97 +8897,124 @@ msgstr ""
 "\n"
 "CaractÃ©ristiques 0x%x\n"
 
-#: peigen.c:2993 pepigen.c:2993 pex64igen.c:2993
+#: peXXigen.c:3072
 #, c-format
 msgid "%pB: Data Directory size (%lx) exceeds space left in section (%<PRIx64>)"
 msgstr "%pB: La taille du rÃ©pertoire de donnÃ©es (%lx) excÃ¨de l'espace restant dans la section (%<PRIx64>)"
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
+#: peXXigen.c:3104
 msgid "failed to update file offsets in debug directory"
 msgstr "Ã©chec lors de la mise Ã  jour des dÃ©calages du fichier dans le rÃ©pertoire de dÃ©bogage"
 
-#: peigen.c:3033 pepigen.c:3033 pex64igen.c:3033
+#: peXXigen.c:3112
 #, c-format
 msgid "%pB: failed to read debug data section"
 msgstr "%pB: Ã©chec lors de la lecture de la section des donnÃ©es de dÃ©bogage"
 
-#: peigen.c:3849 pepigen.c:3849 pex64igen.c:3849
+#: peXXigen.c:3928
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
 msgstr "Ã©chec de la fusion de .rsrc: ressource chaÃ®ne dupliquÃ©e: %d"
 
-#: peigen.c:3984 pepigen.c:3984 pex64igen.c:3984
+#: peXXigen.c:4063
 msgid ".rsrc merge failure: multiple non-default manifests"
 msgstr "Ã©chec de la fusion de .rsrc: plusieurs manifestes pas par dÃ©faut"
 
-#: peigen.c:4002 pepigen.c:4002 pex64igen.c:4002
+#: peXXigen.c:4081
 msgid ".rsrc merge failure: a directory matches a leaf"
 msgstr "Ã©chec de la fusion de .rsrc: un rÃ©pertoire correspond Ã  une feuille"
 
-#: peigen.c:4044 pepigen.c:4044 pex64igen.c:4044
+#: peXXigen.c:4123
 msgid ".rsrc merge failure: duplicate leaf"
 msgstr "Ã©chec de la fusion de .rsrc: feuille dupliquÃ©e"
 
-#: peigen.c:4046 pepigen.c:4046 pex64igen.c:4046
+#: peXXigen.c:4125
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
 msgstr "Ã©chec de la fusion .rsrc: feuille dupliquÃ©e: %s"
 
-#: peigen.c:4112 pepigen.c:4112 pex64igen.c:4112
+#: peXXigen.c:4191
 msgid ".rsrc merge failure: dirs with differing characteristics"
 msgstr "Ã©chec de la fusion .rsrc: rÃ©pertoires avec des caractÃ©ristiques diffÃ©rentes"
 
-#: peigen.c:4119 pepigen.c:4119 pex64igen.c:4119
+#: peXXigen.c:4198
 msgid ".rsrc merge failure: differing directory versions"
 msgstr "Ã©chec de la fusion de .rsrc: versions de rÃ©pertoires diffÃ©rentes"
 
 #. Corrupted .rsrc section - cannot merge.
-#: peigen.c:4236 pepigen.c:4236 pex64igen.c:4236
+#: peXXigen.c:4315
 #, c-format
 msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
 msgstr "%pB: Ã©chec de la fusion de .rsrc: section .rsrc corrompue"
 
-#: peigen.c:4244 pepigen.c:4244 pex64igen.c:4244
+#: peXXigen.c:4323
 #, c-format
 msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
 msgstr "%pB: Ã©chec de la fusion de .rsrc: taille de .rsrc inattendue"
 
-#: peigen.c:4383 pepigen.c:4383 pex64igen.c:4383
+#: peXXigen.c:4462
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
 msgstr "%pB: impossible de remplir DataDictionary[1] car .idata$2 est manquant"
 
-#: peigen.c:4403 pepigen.c:4403 pex64igen.c:4403
+#: peXXigen.c:4482
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
 msgstr "%pB: impossible de remplir DataDictionary[1] car .idata$4 est manquant"
 
-#: peigen.c:4424 pepigen.c:4424 pex64igen.c:4424
+#: peXXigen.c:4503
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
 msgstr "%pB: impossible de remplir DataDictionary[12] car .idata$5 est manquant"
 
-#: peigen.c:4444 pepigen.c:4444 pex64igen.c:4444
+#: peXXigen.c:4523
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
 msgstr "%pB: impossible de remplir DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] car .idata$6 est manquant"
 
-#: peigen.c:4486 pepigen.c:4486 pex64igen.c:4486
+#: peXXigen.c:4565
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
 msgstr "%pB: impossible de remplir DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] car .idata$6 est manquant"
 
-#: peigen.c:4511 pepigen.c:4511 pex64igen.c:4511
+#: peXXigen.c:4590
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
 msgstr "%pB: impossible de remplir DataDictionary[9] car __tls_used est manquant"
 
+#~ msgid "%pB: corrupt symbol count: %#<PRIx64>"
+#~ msgstr "%pB: dÃ©compte de symbole corrompu: %#<PRIx64>"
+
+#~ msgid "%pB: not enough memory to allocate space for %#<PRIx64> symbols of size %#<PRIx64>"
+#~ msgstr "%pB: Pas assez de mÃ©moire pour allouer l'espace pour %#<PRIx64> symboles de taille %#<PRIx64>"
+
+#~ msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
+#~ msgstr "%pB: champ de taille corrompu dans l'en-tÃªte du groupe de section: %#<PRIx64>"
+
+#~ msgid "error: %pB version reference section is too large (%#<PRIx64> bytes)"
+#~ msgstr "erreur: la section de rÃ©fÃ©rence de version %pB est trop grande (%#<PRIx64> octets)"
+
+#~ msgid "unexpected STO_SH5_ISA32 on local symbol is not handled"
+#~ msgstr "STO_SH5_ISA32 inattendu sur le symbole local n'est pas traitÃ©"
+
+#~ msgid "%P%X: read-only segment has dynamic IFUNC relocations; recompile with %s\n"
+#~ msgstr "%P%X: le segment en lecture seule a des rÃ©adressages IFUNC dynamiques; recompilez avec %s\n"
+
+#~ msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
+#~ msgstr "bfd_mach_o_read_symtab_symbols: impossible d'allouer la mÃ©moire pour les symboles"
+
+#~ msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
+#~ msgstr "erreur: %pB: version de spec priv en conflit (majeur/mineur/rÃ©vision)."
+
+#~ msgid "unsupported relocation type %#x"
+#~ msgstr "type de rÃ©adressage %#x non supportÃ©"
+
+#~ msgid "%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC"
+#~ msgstr "%pB: rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la crÃ©ation d'un objet partagÃ©; recompilez avec -fPIC"
+
 #~ msgid "%H: call to `%pT' lacks nop, can't restore toc; recompile with -fPIC\n"
 #~ msgstr "%H: il manque un nop Ã  l'appel Ã  Â«Â %pTÂ Â», toc ne peut Ãªtre rÃ©tablie, recompilez avec -fPIC\n"
 
-#~ msgid "error: %pB: <corrupt x86 ISA used size: 0x%x>"
-#~ msgstr "erreur: %pB: <la taille utilisÃ©e par l'ISA x86 est corrompue: 0x%x>"
-
 #~ msgid "error: %pB: <corrupt x86 ISA needed size: 0x%x>"
 #~ msgstr "erreur: %pB: <la taille nÃ©cessaire pour l'ISA x86 est corrompue: 0x%x>"
 
@@ -8690,9 +9105,6 @@ msgstr "%pB: impossible de remplir DataD
 #~ msgid "unsupported reloc type"
 #~ msgstr "type de rÃ©adressage non supportÃ©"
 
-#~ msgid "SH Error: unknown reloc type %d"
-#~ msgstr "Erreur SH: type de rÃ©adressage %d inconnu"
-
 #~ msgid "Unrecognized reloc type 0x%x"
 #~ msgstr "Type de rÃ©adressage non reconnu 0x%x"
 
@@ -8749,9 +9161,6 @@ msgstr "%pB: impossible de remplir DataD
 #~ msgid "%B: invalid AVR reloc number: %d"
 #~ msgstr "%B: numÃ©ro de rÃ©adressage AVR invalide: %d"
 
-#~ msgid "%B: unsupported relocation type %d"
-#~ msgstr "%B: type de rÃ©adressage %d non supportÃ©"
-
 #~ msgid "Unsupported CR16 relocation type: 0x%x\n"
 #~ msgstr "Type de rÃ©adressage CR16 non supportÃ©: 0x%x\n"
 
@@ -8794,9 +9203,6 @@ msgstr "%pB: impossible de remplir DataD
 #~ msgid "%B: unrecognised I370 reloc number: %d"
 #~ msgstr "%B: numÃ©ro de rÃ©adressage I370 non reconnu: %d"
 
-#~ msgid "%B: unknown relocation type %d for symbol %s"
-#~ msgstr "%B: type de rÃ©adressage %d inconnu pour le symbole %s"
-
 #~ msgid "%B: Relocation %s is not yet supported for symbol %s."
 #~ msgstr "%B: rÃ©adressage %s n'est pas encore supportÃ© pour le symbole %s"
 
@@ -9133,9 +9539,6 @@ msgstr "%pB: impossible de remplir DataD
 #~ msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B"
 #~ msgstr "Attention: taille du symbole Â«Â %sÂ Â» a changÃ© de %lu dans %B Ã  %lu dans %B"
 
-#~ msgid "%B: addend -0x%x in relocation %s against symbol `%s' at 0x%lx in section `%A' is out of range"
-#~ msgstr "%B: l'opÃ©rande -0x%x dans le rÃ©adressage %s vers le symbole Â«Â %sÂ Â» Ã  0x%lx dans la section Â«Â %AÂ Â» est hors limite"
-
 #~ msgid "%F: failed to create BND PLT .eh_frame section\n"
 #~ msgstr "%F: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT BND\n"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/Make-in ./bfd/po/Make-in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/Make-in	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/po/Make-in	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 # Makefile for program source directory in GNU NLS utilities package.
 # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-# Copyright (C) 2001-2019 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file may be copied and used freely without restrictions.  It can
 # be used in projects which are not available under the GNU Public License
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/pt.gmo ./bfd/po/pt.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/pt.gmo	2020-03-07 02:11:47.000000000 +0000
+++ ./bfd/po/pt.gmo	2021-05-21 02:00:24.000000000 +0000
@@ -1,138 +1,136 @@
-Þ•01Ûbl…€„…„‡dŸ
eŸsŸ‡Ÿ ŸA¿Ÿ? :A | “ ¦ $Å 3ê 
¡,¡%L¡r¡t¡A†¡&È¡ï¡¢!¢:¢J¢ i¢Š¢ª¢Ã¢Ú¢ç¢Pú¢K£*c£9Ž£6È£;ÿ£;¤FM¤6”¤6Ë¤:¥5=¥,s¥D ¥Nå¥J4¦)¦G©¦:ñ¦B,§Lo§)¼§Bæ§L)¨v¨Œ¨D£¨Gè¨0©O©a©u©�©¢©3Á©õ©ª0ªOª_ªoª+‰ª+µª+áª#
«1«I«R«p«(‡«?°«>ð«%/¬&U¬(|¬)¥¬GÏ¬7­O­f­†­£­¼­×­÷­®+®A®Y®m®„®,ž®Ë®Û®ô®¯#¯2¯H¯]¯w¯Ž¯1£¯Õ¯æ¯ó¯
-°%°#=°+a°&�°5´°ê°ÿ°±1±G±a±z±‘±§±$¼±á±ú±²2²$G²l²€²•²<®²ë²ú²
	³³+³@³ X³y³”³¤³Ä³à³´´2´E´*X´ƒ´•´&§´Î´0â´µ"'µJµ	[¶e¶#x¶œ¶µ¶Æ¶ß¶"ø¶·"/·#R·#v·š·#¯·#Ó·÷·¸"¸@¸F¸S¸[¸`¸
-}¸ˆ¸�¸!“¸ µ¸Ö¸Û¸à¸ø¸¹8¹=¹Q¹!V¹x¹‰¹�¹–¹›¹ ¹¦¹ª¹¯¹Ë¹"ä¹ºº,º@º&`ºB‡ºÊºêºïºôºûº»»»»7»K»R»k»»�»¡»²»Ã»Ô»ì»	û»
¼
¼
-!¼
-,¼
-7¼
-B¼
-M¼$X¼
-}¼#ˆ¼
-¬¼·¼É¼!á¼½½
-'½
2½	@½J½
-[½f½m½…½Ÿ½±½À½×½ò½¾¾)¾0¾P¾(`¾/‰¾¹¾Ë¾+Ú¾¿A"¿d¿~¿˜¿²¿8Ç¿ÀÀ-À&GÀnÀ�À2¨À?ÛÀ&ÁBÁ(aÁŠÁ"�ÁÀÁ*àÁ6Â{BÂr¾Âx1ÃªÃ:ÀÃûÃ?
ÄMÄmÄ&‹Ä²ÄœÌÄDiÅ'®Å,ÖÅ1Æ'5Æ$]Æ/‚Æ-²Æ0àÆ&Ç88ÇqÇ=‘Ç9ÏÇ:	È6DÈ6{È²È/ÒÈ5É+8É$dÉ6‰É"ÀÉ&ãÉ6
-Ê=AÊ:Ê:ºÊDõÊ8:Ë9sËC­Ë:ñË7,Ì8dÌ@�ÌGÞÌ9&Í,`Í0�Í#¾ÍâÍ-ýÍ6+ÎbÎ7~Î;¶Î:òÎ9-Ï"gÏ3ŠÏ%¾Ï.äÏÐL3Ð0€Ð.±Ð1àÐ'ÑE:Ñ8€Ñ(¹ÑcâÑ4FÒ&{Ò2¢Ò&ÕÒ6üÒ]3Ó8‘ÓÊÓOéÓb9Ô,œÔ+ÉÔ)õÔYÕ=yÕ3·Õ2ëÕBÖ)aÖ$‹Ö3°Ö9äÖ6×/U×D…×&Ê×Wñ×UIØIŸØ+éØ8Ù%NÙ(tÙ&�Ù,ÄÙ#ñÙ>ÚBTÚB—ÚÚÚ'úÚE"Û9hÛ4¢Û3×ÛJÜ(VÜ;Ü»Ü0ÚÜ.Ý,:Ý'gÝ6�Ý ÆÝ/çÝ4ÞNLÞª›ÞIFß9�ß3Êß¾þß<½à<úàF7áP~áoÏá>?âF~â`Åâ~&ãF¥ã‚ìã[oä3Ëä@ÿäM@åmŽå7üå#4æXæ(næ&—æ+¾æêæÿæ8ç"Lç$oç'”ç9¼çCöç!:è!\è*~è/©è1Ùè/é/;é0ké*œé0Çé<øéi5ê=ŸêBÝê= ë-^ë.Œë8»ë9ôëF.ì?uìVµì(í>5í;tí=°í#îíLî8_î+˜î8Äî2ýî90ï:jï3¥ï,Ùïuð |ð.�ð.ÌðKûð0GñBxñ/»ñ,ëñ'ò%@ò,fòN“òâòCüòJ@ó@‹óJÌó*ô%Bô<hô ¥ôlÆô<3õ<põ+­õÙõ,õõH"ö6köA¢öAäöJ&÷>q÷J°÷Jû÷<Fø.ƒø(²ølÛøvHùA¿ù6ú8ú4Vú0‹ú+¼úAèú3*û@^û!Ÿû#Áû.åûBüFWü4žü%Óü:ùü24ý*gý9’ýCÌýCþ:TþT�þJäþ5/ÿ4eÿ6šÿ/Ñÿ/&1&X5'µ0Ý5(D3m%¡&Çî'=6#t+˜3Ä(ø@!Cb5¦'Ü,g14™mÎA<@~H¿GKPIœLæH3C|YÀ50P4�M¶N	1S	)…	/¯	)ß	+	
-75
-3m
-6¡
-9Ø
-X[kCÇ6>B=�*¿.ê2
[L
&¨
-Ï
,ý
*E/`(�$¹0Þ'87"pA“)Õ=ÿ@=2~+±"Ý5<6's%›(ÁRê?=F}3Ä1øD*HoD¸KýaI`«sB€‚ÃTF=›bÙb<gŸg0o( 4É5þ34-h/–HÆF7VGŽ+Ö$2'.Z/‰+¹)å^KnFº"@5[(‘EºDDEFŠ_Ñ^1"�*³+Þ8
- :C '~ ;¦ 8â '!'C!3k!>Ÿ!-Þ!,"9"X"u".“"/Â"ò"$#37#k#F‰#&Ð#!÷#6$5P$+†$ ²$$Ó$.ø$.'%%V%)|%\¦%D&HH&D‘&LÖ&X#'H|')Å'*ï' (5;(9q(@«(+ì(6)AO).‘)3À)=ô)H2*<{*8¸*3ñ*4%+4Z+0�+@À+1,B3,Lv,AÃ,L-8R-B‹-+Î-2ú-<-.3j.Xž.P÷..H/`w/&Ø/\ÿ/X\0/µ0på0AV1+˜1KÄ1.2,?2%l2’23²22æ23493Wn3=Æ3*45/4%e4B‹4%Î44ô4>)5<h5C¥5Bé5;,63h6œ6¼6Ë6!à67$7=71P7V‚7IÙ7I#8<m8ª8½8Ñ8ã8ý8
9'9G9
S9a9%r9\˜9;õ91:C:Y:\:y:†:	Ÿ:©:»:Ì:,Ù:;;0;"L;o;(Œ;/µ;/å;1<8G<#€<'¤<2Ì<3ÿ<3=;C==†=Ž=£=³=º=Â=Ö=ë=>>%><>Y>k>‰>	¨>²>Ð>	å>"ï>?$?)@?/j?"š?½?Ô?Ý?é?í?@@$@'6@^@ {@#œ@À@Ú@ ì@
AH+A1tA#¦A,ÊAX÷AaPB:²B.íB7C1TC;†C(ÂC:ëC,&D-SD-�D¯D2ÎDEE&E;ERE)hE’E!¨E$ÊEIïE9F5VFŒF
-¡FC¬FIðF:GLGTG\G
zGˆGAšGÜG/øG+(H8TH�H$£H!ÈH1êHI;I+ZI†I
-šI¥IÄI%ÖIüIJ.,J-[JG‰J3ÑJK"$KGKYK$rK—K!´KÖK5èKL	0L:LLLbL‚LœL¸LÇLÙL	àLêLïLûL
-M!M=MSMeM…MžM¾MÒMäMüM-NHNZNlN€NšN'¯N×NæNøN
-OO!O:O:VO%‘O%·OÝOAöO;8PCtP=¸PCöP=:Q"xQ7›Q<ÓQ<R)MR5wR­R¶RvÑR*HSsS'…S­S¿SÆS
-ÍS(ØST'T;TXTpT�T#¨T$ÌT,ñT.U,MU.zU©U"ÆU,éU.V!EV1gV0™V2ÊV,ýV.*W#YW}W�W(±W/ÚW!
-X,X(IX#rX+–XÂX,ÛX Y)YBYbYvY–Y#µY-ÙY"Z*Z<ZOZ[ZpZ&‚Z	©ZF³Z/úZ*[J;[M†[Ô[ô[\\-;\i\r\z\A†\>È\]A]7[]B“]!Ö]ø]˜^±^Í^ß^ñ^2_.9_#h_Œ_™_¦_¶_¾_:×_+`#>`b`u`Ž`¦`,¾`:ë`&a	>adHa­a6ÀaM÷aMEb<“bgÐbb8c<›cEØc1d(Pd$ydžd/´d+äde,eFece>e<¾eûe4f'Lf$tf™fªfÂfÙfêfgg,g>gPgbg|g—g©gºgÒgñg2hCh']h7…h0½hDîh,3i'`iˆi¨iºi-Ôi+j+.j*Zj	…j	�j
-™j
-¤j¯jÄjÓjèj÷j1üj.k/Nk~k'�k"Åk&èk0l@l^lsl|l9šlÔl,él9m)PmCzmI¾mEnYNnY¨n;o;>oNzo/Éo5ùo:/p5jp4 p9Õp7q9GqD�qGÆqDrESrC™r4Ýr?s:RsG�s;ÕsAt9St*�t6¸t/ït;u3[u%�u1µuAçu!)vUKv\¡vAþv1@w?rw:²w7íw>%x$dxI‰xÓx/ðxO yPpy3Áy õy?z:Vz&‘z
-¸z0Ãz%ôz"{%={0c{!”{¶{Ï{ê{ÿ{|O|k|,Š|J·|7}
:}H}1W}‰}�}°}Ã})à}*
-~,5~6b~™~$¹~_Þ~">Aa£,Á2îH!€j€z€$‹€°€Ã€¼ã€¹ �Z‚/l‚œ‚·‚Õ‚*õ‚L ƒ2mƒ- ƒ)Îƒ"øƒ„.„C„X„4g„œ„0¤„%Õ„9û„5…G…X…r…z…‚…ž…H¥…î…4ñ…&†/†
-F†Q†2m†O †ð†‡"‡*7‡%b‡ ˆ‡©‡Ç‡Ï‡Cî‡¤2ˆ×ˆäˆ þˆ‰(‰<‰Q‰g‰}‰”‰±‰Â‰Ô‰è‰Nð‰[?Š›ŠAŸŠáŠ‹‹5‹6M‹„‹ ¤‹8Å‹+þ‹*Œ=ŒMŒUŒjŒ‚Œ–ŒªŒ¾ŒÑŒ
äŒòŒL� Y�Dz�P¿�Ž"Ž2=Ž$pŽ•ŽµŽ5ÈŽþŽ!�;�B�2J�F}�/Ä�ô�"�)�9�MH�9–�;Ð�7‘D‘\‘y‘ˆ‘,›‘$È‘Jí‘)8’ˆb’(ë’%“(:“c“
-“,Š“7·“ï“)	”3”Q”k”ƒ”‹”£”»”
Ñ”#ß”•'•C•T•j•„•¡•»•#Ç•%ë•–.–E–W–7n–¦–Â–â–û–—"—5—I—]—s—J‰—JÔ—J˜Ij˜:´˜ï˜-™;<™+x™@¤™<å™1"š8Tš8�š.Æš>õšI4›h~›yç›>aœN œIïœd9�0ž�;Ï�8žFDž5‹ž&Áž.èž-Ÿ.EŸ0tŸ<¥Ÿ!âŸ ! `? .  ,Ï hü Ee¡0«¡6Ü¡k¢E¢Å¢&ã¢I
-£#T£<x£<µ£eò£2X¤/‹¤/»¤4ë¤= ¥9^¥0˜¥7É¥'¦=)¦6g¦@ž¦ß¦ÿ¦,§0§
C©Q©f©"ƒ©W¦©Sþ©GRªšª³ªÇª&çª6«E«T«%t«š«œ«T®«(¬,¬G¬e¬€¬ �¬"±¬!Ô¬ö¬­+­;­VQ­¨­.À­>ï­A.®@p®±®PË®E¯>b¯B¡¯Dä¯.)°JX°V£°Oú°/J±Ez±EÀ±L²XS²/¬²LÜ²X)³‚³�³Q¸³E
-´ P´q´‡´›´µ´#Ì´7ð´(µ?µ=Qµ�µŸµ¯µ,Éµ,öµ,#¶#P¶t¶Ž¶—¶µ¶'Î¶=ö¶<4·"q·%”·%º·(à·K	¸9U¸�¸¨¸È¸å¸þ¸¹:¹T¹q¹‡¹¥¹¹¹Ð¹,ê¹º'º@º]ºxº‹º¢ºµºÏºæº6üº3»H»U»n»‰»*¢»8Í».¼<5¼r¼‡¼¡¼¼¼Ó¼ð¼	½ ½6½1M½½˜½'¸½à½)÷½!¾7¾L¾<e¾¢¾±¾
À¾Î¾ã¾ø¾(¿=¿X¿j¿Š¿ ¨¿É¿â¿ÀÀ*)ÀTÀfÀ,xÀ¥À0¹ÀêÀ'þÀ&Á7ÂDÂ#WÂ{Â”Â©ÂÂÂ$ÝÂÃ%Ã#<Ã#`Ã„Ã#˜Ã#¼ÃàÃïÃ
Ä,Ä2ÄAÄIÄ NÄ
-oÄzÄÄ$…Ä0ªÄÛÄàÄåÄþÄÅ<ÅAÅ^Å-cÅ‘Å¥Å¬Å²Å·Å¼ÅÂÅÆÅËÅçÅ$Æ%Æ*ÆIÆ"bÆ+…ÆD±ÆöÆÇÇÇ&Ç,Ç1ÇCÇJÇbÇ{Ç‚Ç Ç¹ÇÊÇÛÇìÇýÇÈ"È	6È
@È
NÈ
-\È
-gÈ
-rÈ	}È
-‡È0’È
-ÃÈ-ÎÈ
-üÈÉÉ*0É[ÉrÉƒÉ�É	£É­É
¿ÉÍÉÔÉîÉÊÊ-ÊLÊkÊ!Ê¡Ê®Ê"µÊØÊ8éÊA"ËdËvË2‰Ë¼ËAØËÌ5ÌOÌiÌ6‚Ì¹ÌÓÌèÌ1Í)4Í^Í9yÍ?³Í1óÍ)%Î,OÎ|Î"’Î%µÎ*ÛÎ6Ï…=ÏzÃÏy>Ð¸Ð>ÕÐÑF(ÑoÑ&�Ñ=¶ÑôÑ©ÒJ»Ò&Ó1-Ó0_Ó&�Ó#·Ó.ÛÓ,
-Ô37Ô%kÔ4‘Ô!ÆÔEèÔA.ÕBpÕ<³ÕBðÕ3Ö3PÖF„Ö)ËÖ"õÖ?×#X×(|×9¥×@ß×< Ø=]ØG›Ø:ãØ<ÙF[Ù<¢Ù:ßÙ:ÚQUÚX§ÚNÛ9OÛ2‰Û%¼ÛâÛ-Ü7.ÜfÜA�ÜAÃÜBÝ?HÝˆÝ7§Ý#ßÝ5Þ'9ÞYaÞ?»ÞEûÞ/Aß(qßMšßAèß4*àk_à6Ëà,á9/á,iá:–árÑáADâ †â^§âlã0sã*¤ã,Ïã[üãDXä;�ä7ÙäJå+\å&ˆå8¯åGèåF0æEwæN½æ(çj5ç[ çWüç9Tè5Žè/Äè1ôè)&é.Pé$éF¤éKëé>7ê'vê5žêOÔê7$ë2\ë1�ëZÁë0ìIMì"—ì5ºì0ðì.!í)Pí;zí)¶í5àíCîYZî°´îQeïB·ï=úïÆ8ðBÿðBBñM…ñTÓñ�(òGªòNòònAó–°óRGôŠšôf%õ4ŒõEÁõYözaö4Üö1÷C÷4`÷+•÷/Á÷ñ÷øCø)cø'�ø,µøDâøM'ù%uù%›ù.Áù3ðù5$ú3Zú4Žú8Ãú.üú8+û7dûoœû;üHHü;‘ü6Íü@ýBEý?ˆýMÈýFþ\]þ/ºþGêþA2ÿGtÿ#¼ÿKàÿ7,/dC”=ØDC[;Ÿ1ÛŽ
$œ4Á4öT+2€G³6û427g1Ÿ1ÑY ]K~XÊQ#]u2Ó)O0+€¬F,Fs(º ã2	I7	8�	Cº	Cþ	MB
-=�
-NÎ
-MRk1¾1ðs"}–G
>\
+›
6Ç
4þ
+3M_@­>î*-*X/ƒO³Z8^(—DÀ8->BlX¯XDaf¦P
4^6“@ÊB?N.Ž2½9ð/*8Z=“/Ñ8-:(h"‘-´Dâ)'2Q@„&ÅCìO09€&º1áw?‹rËL>J‹RÖQ)U{NÑa U‚OØj(H“9Ü;ZRW­;/A0q.¢2Ñ? :D = A½ dÿ gd!LÌ!="GW"AŸ"0á"3#7F#f~#1å#1$1I${$™$5·$0í$2%7Q%1‰%I»%$&L*&0w&A¨&Dê&3/'*c'+Ž'=º'Dø',=('j(0’(YÃ(G)Se)9¹):ó)I.*Px*IÉ*V+jj+kÕ+wA,J¹,�-_•-Gõ-m=.n«.r/t�/;0/>05n0A¤08æ0=14]1M’1Kà1A,2Wn26Æ25ý27330k35œ31Ò3.4h34Rœ4Iï495%X5~5=œ5+Ú5L6KS6KŸ6Më6f97e 7*83181e8?—8B×8199L9>†9+Å9.ñ9; :D\:1¡:4Ó:);!2;&T;:{;A¶;,ø;+%<9Q< ‹<N¬<6û<.2==a=FŸ=1æ=+>/D>:t>:¯>0ê>*?lF?M³?[@F]@T¤@Sù@[MA4©A+ÞA%
-B=0B=nBC¬B0ðB>!CJ`C,«C8ØCEDOWD4§D@ÜD3E<QE=ŽE4ÌENF0PF=�FG¿F<GHDG3�GNÁG3H8DHB}H8ÀHcùHY]I7·IfïI*VJi�JeëJ7QKw‰KDL/FLIvL4ÀL<õL)2M&\M7ƒM6»M-òM; N\\N=¹N1÷N<)O,fO>“O-ÒO9PC:PK~PRÊPOQHmQ;¶Q#òQ
R$R)8R bR%ƒR©R:¿RcúRV^SVµSITVTkT�T”T¯TÆT+ÓTÿTUU%+UbQU;´UðUVV%VAVPVkVzVŒV
�V,«VØVíVW""W$EW&jW4‘W8ÆW3ÿW=3X&qX*˜X6ÃX>úX9YBHY‹Y’YšY²YÁYÈYÐYäYùYZ Z3Z.IZxZ"“Z"¶Z
-ÙZ!äZ%[,[#;[_[ q[(’[.»[&ê[\1\=\I\M\j\|\Ž\0 \"Ñ\,ô\-!]"O]r]%‹]!±]IÓ]<^0Z^4‹^bÀ^f#_AŠ_3Ì_=`5>`Vt`4Ë`Ja&Ka)ra7œa"Ôa:÷a2b"Gb$jb�b¯b)Äbîb$c$(cDMc’c7°c!èc
-dIdUed»dÍdÕdÝdûdeQ e're1še1Ìe=þe<f+Xf-„f8²f$ëf&g17gig
-…g&�g·g)Égóg!h9'h6ahU˜hGîh-6i(di�i!Ÿi$Ái'æi!j0j:Bj}j	�j™j«j Åjæj k!k8kJk	Qk[kbkok„k™k¹kÑkäkll>lUlfl€l9 lÚlëlm!m8m,MmzmŠmœm®mµm&¼mãm>n*@n)kn•nJ´nHÿnCHoBŒoHÏo@p-Yp:‡pEÂpEq,Nq>{q	ºqÄq{Þq0Zr‹r$�rÂrÔrÛr
-âr4ír"s/4sds�s™s¹s#Òs$ös<t9Xt<’t9Ït'	u51u<gu9¤u0ÞuAv@Qv=’v<Ðv9
w.Gw!vw˜w(°w/Ùw-	x 7x,Xx&…x3¬xàx4ýx&2yYy!vy˜y%°y%Öyüy2z(Mzvzˆzœz­zÌz2Ûz{J{6b{™{a¯{b|'t|œ|²|!Ò|-ô|"}+}8}MI}D—}Ü}Hî}<7~It~&¾~&å~¢!¯Ñãõ4€.D€*s€ž€­€¼€	Ò€ Ü€Dý€5B�-x�¦�¼�Ö�î�2‚F;‚‚‚	 ‚gª‚ƒ>%ƒNdƒN³ƒA„tD„p¹„=*…Jh…6³…-ê…&†?†HX†4¡†Ö†ó†,‡,>‡Pk‡Q¼‡&ˆI5ˆ4ˆ2´ˆçˆüˆ‰7‰L‰l‰Š‰ ‰¶‰Ì‰!â‰Š#Š9ŠNŠ*kŠ'–Š5¾ŠôŠ1‹7B‹2z‹G­‹2õ‹-(Œ VŒwŒ#ŠŒ5®Œ3äŒ3�0L�	}�	‡�
-‘�
-œ�§�À�Ï�ä�ó�4ø�$-Ž9RŽ ŒŽ4­Ž)âŽ0�>=�|�š�¯�#¸�AÜ��-2�4`�(•�G¾�O‘VV‘]­‘]’?i’>©’Yè’,B“/o“7Ÿ“1×“1	”:;”4v”:«”Læ”F3•Hz•HÃ•J–<W–F”–4Û–B—BS—N–—@å—+&˜JR˜.�˜<Ì˜3	™$=™/b™D’™ ×™[ø™\TšN±š:›L;›9ˆ›:Â›@ý›(>œJgœ)²œ+Üœ]�Of�0¶�"ç�C
-ž>Nž-�ž»ž3Çž(ûž%$Ÿ(JŸ?sŸ³ŸÎŸ$ëŸ + A SS #§ 7Ë V¡AZ¡œ¡¬¡;½¡ù¡
¢ ¢3¢/R¢3‚¢+¶¢;â¢£&:£ha£$Ê£Mï£=¤1]¤7�¤OÇ¤¥(¥/:¥j¥#}¥Ñ¡¥Îs¦B§6W§&Ž§%µ§!Û§7ý§[5¨4‘¨IÆ¨5©.F©u©‹© ©¶©DÆ©ª7ª4Kª9€ªºªÎªàªÿª««+«\2«�«<”«Ñ«Ú«
ø«¬C#¬og¬×¬÷¬&þ¬1%­5W­#�­$±­
Ö­$ä­O	®¦Y®¯¯9*¯	d¯n¯‡¯¡¯¼¯×¯ ó¯°'°;°O°WW°k¯°±E±"e±ˆ±# ±!Ä±Bæ±")²&L²@s²5´²ê²ý²³³2³I³]³q³…³˜³«³¾³\Þ³$;´Y`´Zº´µ$&µ1Kµ)}µ'§µÏµ<ãµ! ¶1B¶t¶	}¶9‡¶JÁ¶;·H·.c·’·¢·N±·?¸7@¸Bx¸»¸ Ù¸ú¸
¹2 ¹,S¹X€¹4Ù¹Šº*™º%Äº6êº#!»
-E»2P»9ƒ»½»9Ü»$¼;¼X¼w¼„¼¢¼¿¼Ü¼/î¼ ½/?½o½…½ ½#¾½â½¾'¾*:¾$e¾Š¾¨¾½¾EÜ¾"¿*A¿l¿‰¿ž¿°¿Ã¿×¿ë¿ÀSÀXkÀRÄÀUÁEmÁ³Á-ÒÁ@Â+AÂCmÂ6±Â8èÂD!Ã2fÃ0™ÃEÊÃTÄueÄ†ÛÄEbÅZ¨ÅTÆxXÆ4ÑÆ?Ç:FÇF�Ç>ÈÇ*È12È4dÈ4™È5ÎÈ>É'CÉkÉ#ˆÉd¬É/Ê-AÊfoÊDÖÊ5Ë:QËiŒËDöË ;Ì(\ÌU…Ì#ÛÌBÿÌBBÍd…Í9êÍ4$Î6YÎ?�ÎFÐÎ:Ï8RÏ=‹Ï)ÉÏVóÏ9JÐH„ÐÍÐíÐ.ñÐßÎ¿Ciq¯ž$Š¨6¸ŒÔ9õ¹í¹Ä"Àg!f5Ý”­;›Î¬¾×Æ
-ƒTW­0§y2!'(ê�)Ý
-ªE69	Ç`Z‹—EÄÖê{8¦J5„÷”�ž‡I£r€dŠÊ<ÆxkUámÜ‚x´¡[×ºå§û8ÇR)Ä»°q�¿õÿU³�Û³÷ëÃ"D}sÖ/WòF[šƒ|y0Vôë,ëµäÕ²$².ÿ;Y}_Îó„¼Ê!Hø×<\Œð¤´Àsˆh¡…fæˆ«ÁÄÏÜ,*‘wØºúa:ë©Î„' ðí~Mà‚báZó
Èc:Q3(;ÿ÷4G&ÉCN±µÞ&"PL%‹Cç?æ‰
-æýµ”Õ‡r±Ê¡Y†`�”¥Uôa›BÉUÙðlñe/—lwÝæ6î“Ÿ¥õh›>Lþ�:’’øõ¢“#VÔ¸Ÿ¿pxŠÍ~­a·ÃxC•QSt#Ú<â¡ÒïÈé@»ã�eûPÔ—jˆËñ%‰	S~LÃ°ãXOù$,3{)ã@šnÅcËAŸ�5Œ3§‚åb×À3µÅ-ÈXŠuZ=©zRí0[FÔD:wºËaÞ›Õ=ú¨
¦®N9®ä �ñ¿5šÜ­Kn8¶¾ŸKäÊ½	.l2ÜŠBAtø?�öãm®ƒÆÖLëz !x–gW˜ùÖ¶ÉÌVÄøIZ¸4O™¶:»«þžŽ€Iåÿ=©ÝþÌc‰•N¡þí�ªù[‡V¥v¬xÆòñ‘³Y$Ž‡Ž˜D Ê…•J®Íg+†û²Ð¨·ÒèØ3é�ozŸÝeo2ŽV•Ñïn(·êi0¬#+°]Õèû`|iFeî�åªo<Mq6î*>Tà&§ìÎÀ6Ç‹€"o¸Eæ¶NY’½Žð7vKø{£Óë8‡@–ªÂý*„*?	1GAù 5uç‡_>úÂÐ#ìž«Kü™å9«ð¥Ï`…^B£7Ù¢ï£1žè2â>ÆþÅÐ¬¶ví–9'Å¹Ñz|ÜÛÁõµ¢ï-OÒÌh²ÂvW€U‘ÏËà+òA%Ç&œ´%z«S2#—¤Nsî¾d“?pÕ0ãbÍÈ³ãR¦H£“(—ÏÑAž¤	]r¢¹âjI:â�81GXÚ§-ô±
-‘wÈå^}°h¹4ù¥�—íPÂn¼è8pÌ1êf<ká]RX2[Ï#¼½vrÔª¹ß™,Ùü_mƒ¨Ãh�ôw@]¼‰	JÛO·Ê vQ¼†Ð”˜/g¥ƒç^œ©ÉÁÒWd^¤)Úi!üÞ–JmI;'¿ê ÿüÅ$
Ú•{;š
.5qÉy /öÓw¸qX�ûNö™†ÛE>k�Ëà=øþB©ÿ¸�´–ªuÖ-‰óÓsGŒÈý^4iâ¡ôùÐºY-Û/•�ç¦Bf%Üîõ,e»è	fE]|T½®FöfÌìkÇ´ý4ÙÝÑÏBtóÞ?éÍœ~ØF¯ÁSpQé ÓŸ�ì“(ˆÛT²Øèæ|³=÷k¯z·ö¨Ž_9W²mP_J¼Ó­Øáô &C/MDºJß](CÖÍK†sjE¿…lc\‹ä�@˜17ð}Éé F[OÓaÔ+òÐ»PºZX™ctM¢â„SŒj
-çKìo{p
-7œýÌHU+áYj‹³Ã¬äßMïÙR_.ns˜‚)$
?îG×�=.cœM´'ouk†L@±�yöÒ^T›Ú}�\*Á1¦¯0tšò÷yH±Ò…tg÷ý¤­‹‘4>…ÞbÑl¨u-ú‚g&óm°«A–{¾q §SR×”ï’›OQà¾‘ÃVD3Z¢6àeúPdÑç½"Daê~·7ÆÎj+Š£‰dn½b
Ú!»’‚Hñó\r
À¦üœ�Ë’ÇÍhyÂˆµ¤H\Áìr7~uˆL®€l™˜.Þñû�iéIÙá€ü)
-òÂ|šß¾Ä±“b„À\%�*TƒQ¶¬p�¯©d`}`;<ä�G¯úØÅ',°ÕŒ"ß Ñ'Ñ.Ñ„‰ ‰´‰È‰Ü‰ð‰ŠŠ,Š@ŠTŠhŠ|Š�Š¬ŠÀŠÔŠðŠ‹‹,‹@‹T‹h‹|‹�‹¤‹¸‹Ô‹è‹ü‹Œ<ŒPŒdŒxŒŒŒ¨Œ¼ŒÐŒäŒ��(�<�P�d�x�Œ� �´�Ð�ì�ŽŽ(Ž<ŽPŽdŽxŽ”Ž°ŽÌŽàŽôŽ��0�D�X�l�€�”�¨�¼�Ð�ä�ø�� �4�H�d�€�”�¨�Ä�Ø�ì�‘‘(‘<‘P‘d‘x‘”‘°‘Ä‘à‘ü‘’$’8’T’p’Œ’ ’´’Ð’ä’ø’“ “4“H“\“p“Œ“ “´“È“ä“ø“” ”4”`”t”�”¤”¸”Ì”à”ô”••0•D•X•l•€•œ•°•Ä•à•ô•––0–D–X–l–€–”–¨–Ä–Ø–ì–—,—@—T—h—|—˜—¬—À—Ô—ð—˜˜,˜@˜T˜h˜|˜�˜¤˜À˜Ü˜ð˜™™,™@™T™h™„™ ™¼™Ð™ä™ø™š š4šHš\špš„š˜š¬šÀšÔšèšüš›$›8›T›p›„›˜›´›È›Ü›ð›œœ,œ@œTœhœ„œ œ´œÐœìœ��(�D�`�|���¤�À�Ô�è�ü�ž$ž8žLž`ž|ž�ž¤ž¸žÔžèžüžŸ$ŸPŸ5ÑÿÿÿÿWÑ"ÿÿÿÿ�Ñ ÿÿÿÿ´Ñ5ÿÿÿÿðÑ%ÿÿÿÿÒ)ÿÿÿÿLÒ(ÿÿÿÿ{Ò/ÿÿÿÿ±ÒÿÿÿÿÍÒ'ÿÿÿÿûÒÿÿÿÿ&Ó-ÿÿÿÿTÓÿÿÿÿrÓ/ÿÿÿÿµÓÿÿÿÿÒÓ ÿÿÿÿúÓ%ÿÿÿÿ7ÔÿÿÿÿkÔ*ÿÿÿÿ–Ô.ÿÿÿÿÆÔ)1ÿÿÿÿ Õ%ÿÿÿÿFÕ1ÿÿÿÿxÕ
-2ÿÿÿÿ´Õ"ÿÿÿÿèÕ3ÿÿÿÿÖ3ÿÿÿÿPÖÿÿÿÿwÖ9ÿÿÿÿÇÖ%ÿÿÿÿúÖ
-HÿÿÿÿN×
-/ÿÿÿÿ¥×
-6ÿÿÿÿå×
->ÿÿÿÿ-Ø
-0ÿÿÿÿgØ
-Fÿÿÿÿ·Ø
-ÿÿÿÿùØ
-+ÿÿÿÿ.Ù
-ÿÿÿÿVÙ
-"ÿÿÿÿ‚Ù@)ÿÿÿÿñÙ
-/ÿÿÿÿ*Ú
- ÿÿÿÿTÚ-ÿÿÿÿ›Ú6ÿÿÿÿçÚ6ÿÿÿÿ2Û
-7ÿÿÿÿsÛ
-?ÿÿÿÿ¼Û
-ÿÿÿÿáÛ4ÿÿÿÿ.Ü+ÿÿÿÿfÜ-ÿÿÿÿ Ü3ÿÿÿÿÔÜ
--ÿÿÿÿÝ(ÿÿÿÿGÝ
--ÿÿÿÿ~Ýÿÿÿÿ°Ý6ÿÿÿÿíÝ>ÿÿÿÿ2Þ#ÿÿÿÿ]Þÿÿÿÿ™ÞÿÿÿÿÕÞ
-2ÿÿÿÿß
-.ÿÿÿÿIßFÿÿÿÿ�ß
-2ÿÿÿÿÌß
-2ÿÿÿÿà
-2ÿÿÿÿDà
-2ÿÿÿÿ€à
-2ÿÿÿÿ¼à
-2ÿÿÿÿøàFÿÿÿÿ?á
-9ÿÿÿÿ‚á
-7ÿÿÿÿÃá
-9ÿÿÿÿâFÿÿÿÿMâFÿÿÿÿ”â	2ÿÿÿÿÏâ+ÿÿÿÿã.ÿÿÿÿ6ã+ÿÿÿÿhã-ÿÿÿÿ�ã0ÿÿÿÿëã"ÿÿÿÿ*ä!ÿÿÿÿ]ä
-*ÿÿÿÿ“ä
-AÿÿÿÿÞä
-dÿÿÿÿLå
-$ÿÿÿÿzå1ÿÿÿÿ¶å1ÿÿÿÿèå
-ÿÿÿÿæ5ÿÿÿÿSæ&ÿÿÿÿ‡æ=ÿÿÿÿ×æ&ÿÿÿÿ+ç+ÿÿÿÿjçÿÿÿÿžç]ÿÿÿÿè!5ÿÿÿÿbèKÿÿÿÿ®è<"ÿÿÿÿé$ÿÿÿÿEé7
-ÿÿÿÿ‡éÿÿÿÿÏé;ÿÿÿÿ7ê?ÿÿÿÿ•êÿÿÿÿ¾ê2ÿÿÿÿøêÿÿÿÿ)ëÿÿÿÿ[ë=ÿÿÿÿªëIÿÿÿÿ
ì(ÿÿÿÿKìIÿÿÿÿ®ì!ÿÿÿÿäì!ÿÿÿÿíÿÿÿÿEí+ÿÿÿÿrí=ÿÿÿÿ°í5ÿÿÿÿæí@ÿÿÿÿ+î7ÿÿÿÿcî-ÿÿÿÿ‘îÿÿÿÿ®î-ÿÿÿÿëî
-"	ÿÿÿÿ>ï?ÿÿÿÿï!ÿÿÿÿ¦ï$ÿÿÿÿÞïÿÿÿÿð9ÿÿÿÿCð'ÿÿÿÿqð.ÿÿÿÿ¦ð)ÿÿÿÿÖð+ÿÿÿÿñÿÿÿÿ%ñ%ÿÿÿÿQñÿÿÿÿñ6ÿÿÿÿ¶ñ$ÿÿÿÿÛñ6ÿÿÿÿ*ò'ÿÿÿÿRò"ÿÿÿÿ|ò ÿÿÿÿ´ò!ÿÿÿÿòò*ÿÿÿÿ+ó>ÿÿÿÿkó7,ÿÿÿÿÎó6ÿÿÿÿô;ÿÿÿÿBô
-8ÿÿÿÿ„ô'ÿÿÿÿ¿ôEÿÿÿÿõFÿÿÿÿLõÿÿÿÿvõ<ÿÿÿÿÄõ)ÿÿÿÿþõ
-Uÿÿÿÿ_ö
-#5ÿÿÿÿÃö
-5ÿÿÿÿ÷
-AÿÿÿÿM÷
-;ÿÿÿÿ’÷
-Rÿÿÿÿî÷
-"ÿÿÿÿ5ø
-0ÿÿÿÿoø
- ÿÿÿÿ™ø
-%ÿÿÿÿÈøG6ÿÿÿÿKù
-3ÿÿÿÿˆù
-ÿÿÿÿ°ù2ÿÿÿÿú<ÿÿÿÿTú<ÿÿÿÿ¦ú
-=ÿÿÿÿíú
-Iÿÿÿÿ@û
- ÿÿÿÿjû4ÿÿÿÿ¸û2ÿÿÿÿ÷û4ÿÿÿÿ8ü7ÿÿÿÿpü
-+ÿÿÿÿ¥ü/ÿÿÿÿçü
-5ÿÿÿÿ&ýÿÿÿÿZý:ÿÿÿÿ›ýDÿÿÿÿæý*ÿÿÿÿþ$ÿÿÿÿ^þ$ÿÿÿÿ¤þ
->ÿÿÿÿìþ
-3ÿÿÿÿ)ÿRÿÿÿÿ|ÿ
-2ÿÿÿÿ¸ÿ
-2ÿÿÿÿôÿ
-2ÿÿÿÿ0
-2ÿÿÿÿl
-2ÿÿÿÿ¨
-2ÿÿÿÿäRÿÿÿÿ7
-9ÿÿÿÿz
-7ÿÿÿÿ»
-9ÿÿÿÿþRÿÿÿÿQRÿÿÿÿ¤	6ÿÿÿÿã/ÿÿÿÿ2ÿÿÿÿR/ÿÿÿÿˆ2ÿÿÿÿÂ+	ÿÿÿÿ!ÿÿÿÿO&ÿÿÿÿ†
-:ÿÿÿÿÌ
-Kÿÿÿÿ!
-tÿÿÿÿŸ
-*ÿÿÿÿÓ3ÿÿÿÿAÿÿÿÿS
-ÿÿÿÿw!=ÿÿÿÿÕ/ÿÿÿÿDÿÿÿÿj0!ÿÿÿÿË*ÿÿÿÿ(ÿÿÿÿOfÿÿÿÿÆ!;ÿÿÿÿ#	Sÿÿÿÿw	B+ÿÿÿÿä	-ÿÿÿÿ(
-Gÿÿÿÿ{
-)ÿÿÿÿÏ
-&GÿÿÿÿLDÿÿÿÿ¯ÿÿÿÿÖ9
-ÿÿÿÿÿÿÿÿMÿÿÿÿ�NÿÿÿÿâKÿÿÿÿI
(ÿÿÿÿˆ
Iÿÿÿÿí
,ÿÿÿÿ0+ÿÿÿÿl#ÿÿÿÿª-ÿÿÿÿÙFÿÿÿÿ =ÿÿÿÿ^Iÿÿÿÿ¬:ÿÿÿÿç0ÿÿÿÿÿÿÿÿ6,ÿÿÿÿt
-/ÿÿÿÿÐLÿÿÿÿ	    TLS: %pA	<corrupt: 0x%04lx>	Export Address Table 			Export Address Table 		%08lx
+Þ•q0¸3I	@gdŒ‚|Œ„Žì¦
í¦û¦§(§AG§?‰§:É§¨¨.¨$M¨3r¨
¦¨´¨%Ô¨ú¨ü¨A©&P©w©�©©©Â©Ò© ñ©ª2ªKªbªoªP‚ªÓª*ëª9«6P«;‡«Ã«FÕ«6¬6S¬:Š¬5Å¬,û¬D(­Nm­J¼­)®G1®:y®B´®L÷®)D¯Bn¯L±¯þ¯°D+°Gp°¸°×°é°ý°±*±3I±}±”±0¦±×±ç±÷±+²+=²+i²#•²¹²Ñ²Ú²ø²(³?8³>x³%·³&Ý³(´)-´GW´7Ÿ´×´î´µ+µDµ_µµ˜µ³µÉµáµõµ¶,&¶S¶c¶|¶”¶«¶º¶Ð¶å¶ÿ¶·1+·]·n·{·’·­·#Å·+é·&¸5<¸r¸‡¸Ÿ¸¹¸Ï¸é¸¹¹/¹$D¹i¹‚¹¢¹º¹$Ï¹ô¹ºº<6ºsº‚º
‘ºŸº³ºÈº àº»»,»L»h»ˆ»¡»º»Í»*à»¼¼&/¼V¼0j¼›¼"¯¼	Ò¼Ü¼#ï¼½,½=½V½"o½’½"¦½#É½#í½¾#&¾#J¾n¾{¾™¾·¾½¾Ê¾Ò¾×¾
+ô¾ÿ¾¿!
+¿ ,¿M¿R¿W¿o¿�¿¯¿´¿È¿!Í¿ï¿ÀÀ
ÀÀÀÀ!À&ÀBÀ"[À~ÀƒÀ£À·À&×ÀBþÀAÁaÁfÁkÁrÁxÁ}Á�Á–Á®ÁÂÁÉÁâÁöÁÂÂ)Â:ÂKÂcÂ	rÂ
|Â
ŠÂ
+˜Â
+£Â
+®Â
+¹Â
+ÄÂ$ÏÂ
+ôÂ#ÿÂ
+#Ã.Ã@Ã!XÃzÃ�Ã
+žÃ
©Ã	·ÃÁÃ
+ÒÃÝÃäÃüÃÄ(Ä7ÄNÄiÄxÄ‘Ä Ä§ÄÇÄ(×Ä/Å0ÅBÅ+QÅ}ÅA™ÅÛÅõÅÆ)Æ8>ÆwÆ�Æ¤Æ&¾ÆåÆÇ2Ç?RÇ&’Ç¹Ç(ØÇÈ"È7È*WÈ6‚È{¹Èr5Éx¨É!Êe7Ê7�Ê:ÕÊË?"Ë@bËU£Ë`ùËbZÌq½Ì/ÍOÍ&mÍ”Íœ®ÍDKÎ'�Î,¸Î1åÎ'Ï$?Ï/dÏ-”Ï0ÂÏ&óÏ8ÐSÐ=sÐ9±Ð:ëÐ6&Ñ6]Ñ”Ñ/´Ñ5äÑ+Ò$FÒ6kÒ"¢Ò&ÅÒ6ìÒ=#Ó:aÓ:œÓD×Ó8Ô9UÔC�Ô:ÓÔ7Õ8FÕ@ÕGÀÕ9Ö,BÖ0oÖ# ÖÄÖ=ßÖ-×6K×‚×7ž×;Ö×:Ø"MØ3pØ%¤Ø.ÊØùØ0Ù1JÙ'|Ù¤ÙEÂÙ8Ú(AÚcjÚ4ÎÚ&Û2*Û&]Ûk„Û*ðÛ4Ü]PÜ8®ÜçÜOÝbVÝ,¹Ý+æÝ)ÞY<Þ0–Þ=ÇÞ3ß29ßBlßL¯ßüß4à)Oà$yà3žà9Òà6á/CáDsá&¸áWßáU7âI�â+×â8ã%<ã(bã&‹ã,²ã#ßã>äBBäB…äÈä'èäEå9Vå4�å3ÅåJùå(Dæ;mæ©æ0ÈæDùæ.>ç9mç?§ç?çç2'è8ZèS“è'çè.é,>é'ké6“é ÊéYëé/Eê4uêNªêªùêI¤ë9îë3(ì¾\ì<í<XíF•íPÜío-î>�îFÜî`#ï~„ïFð‚Jð[Íð3)ñ@]ñMžñmìñ7Zò#’ò¶ò(Ìò&õò+ó5Hó~ó“ó8§ó"àó$ô'(ô9PôCŠô!Îô!ðô*õ/=õ1mõ/Ÿõ/Ïõ0ÿõ*0ö0[ö<ŒöiÉö=3÷Bq÷=´÷-ò÷. ø8Oø:ˆøFÃø?
+ùVJù(¡ù>Êù;	ú=Eú4ƒú#¸úLÜúI)û8sû+¬û8Øû2ü9Dü:~ü3¹ü,íüuý �ý.±ý.àýJþ0ZþB‹þ/Îþ,þþ'+ÿ%Sÿ,yÿN¦ÿõÿCJS@žJß**%U<{1¸ êl<x<µ+ò,:Hg6°AçA)Jk>¶JõJ@<‹.È(÷l v�A6F}4›0Ð+A-3o@£!ä#	.*	BY	Fœ	4ã	%
+:>
+2y
+*¬
+9×
+C(UC~:ÂTýJR5�4Ó6
/?
/o
&Ÿ
&Æ
5í
'#0K5|(²3Û%&5\'|=¤#â+32(f@�CÐ5'J,rgŸ4m<Aª@ìH-GvK¾I
+LTH¡CêY.5ˆ0¾4ïM$Nr1Á)ó)/G)w+¡7Í3699pXª[C_6£>Ú=*W.‚2±[ä&@-g,•ÂÝ/ø(($Q0v'§8Ï"A+)m=—#Õ@ù2:+m"™5¼<ò'/%W(}R¦?ùF9 3€ 1´ Dæ H+!Dt!K¹!a"sg"BÛ"‚#T¡#=ö#b4$b—$gú$gb%0Ê%(û%4$&5Y&)�&3¹&-í&/'HK'F”'7Û'G(+[($‡(2¬(.ß(/)+>))j)-”)^Â)K!*Fm*´*"Ð*ó*5+(D+Em+D³+Dø+F=,_„,^ä,"C-*f-+‘-8½-:ö-'1.;Y.8•.'Î.'ö.3/>R/-‘/,¿/ì/I0U0r0.�0/¿0ï0$1341h1F†1&Í1!ô1625M2)ƒ2­2Ç2æ2+3 ,3$M3.r3.¡3%Ð3)ö3\ 4D}4HÂ4D5LP5X�5Hö5)?6*i6 ”65µ69ë6@%7+f76’7\É7A&8.h8M—83å8=9HW9< 98Ý93:4J:4:0´:@å:1&;BX;L›;Aè;L*<8w<B°<+ó<2=<R=3�=XÃ=P>.m>`œ>&ý>P$?\u?XÒ?/+@p[@AÌ@+AK:A.†A,µA%âAB3(B2\B�B4¯BJäB?/C@oCW°C=D*FD5qD%§DBÍD%E46E>kE<ªECçEB+F;nF3ªF'ÞFGH9HKHZH!oH‘H$§HÌH1ßHVIIhII²I<üI9JLJ`JrJŒJ
 J'®JÖJ
âJðJ%K\'K;„KÀKÒKèKëKLL	.L8LJL[L,hL•L©L¿LRÛL".M+QM%}M5£M2ÙM4N/AN/qN3¡N(ÕN2þN31O+eO&‘O"¸OÛO(øO/!P/QP1�P8³P#ìP'Q28Q3kQŸQ;¯QëQòQúQRR&R.RBRWRlR~R‘R¨R¿RÜRîRS	+S5SSS	hS"rS•S§S)ÃS/íS"T@TWT`TlTpTƒT•T§T'¹TáT þT#UCU]U oU�UH®U1÷U#)V,MV@zVX»VaW:vW.±W7àW1X;JX(†X:¯X,êX-Y-EYsY2’YÅYÕYêYÿYZ),ZVZ!lZ$ŽZI³ZýZ5[P[
+e[Cp[I´[þ[\\ \
>\L\ ^\A\Á\/Ý\+
]89]r]$ˆ]!­]1Ï]^ ^+?^k^^˜^
+¥^°^BÏ^_%$_J_\_.z_-©_G×_3`S`"r`•`§`$À`å`!a$a56ala	~aˆaša°aÐaêabb'b	.b8b=bIbXbob‹b¡b³bÓbìbc c2cJc-hc–c¨cºcÎcèc'ýc%d4dFdXd_d!fdˆd:¤d%ßd%e+eADe;†eCÂe=fCDf=ˆf"Æf7éf<!g<^g)›g5Ågûghvh*–hÁh'Óhûh
iii
+*i(5i^i'pi˜iµiÍiíi#j$)j,Nj.{j,ªj.×jk"#k,Fk.sk!¢k1Äk0ök2'l,Zl.‡l#¶lÚlúl(m/7m!gm‰m(¦m#Ïm+ómn,8n en†nŸn¿nÓnón#o-6o"do‡o™o¬o¸oÍo&ßo	pFp/Wp‡pJ˜pMãp1qQqhq{q-˜qÆqÏq×qAãq>%rdrAvr7¸rBðr!3sUs˜ust*t<tNt#ct2‡t.ºt#ét
uu'u7u?u:Xu+“u#¿uãuöuv'v,?v:lv§v	¿vdÉv.w6AwMxwMÆw<xgQxb¹x<y1Yy(‹y$´yÙy/ïy+zKzgz�zžz>ºz<ùz6{4R{'‡{$¯{Ô{å{ý{|%|=|U|g|y|‹|�|·|Ò|ä|õ|
},}2K}~}'˜}LÀ}4
~7B~0z~'«~Ó~ó~-+M+y*¥	Ð	Ú
+ä
+ïú€*€9€N€]€1b€”€/´€ä€ �'$�"L�&o�0–�Ç�å�ú�‚9!‚[‚,p‚a�‚9ÿ‚)9ƒCcƒI§ƒEñƒY7„Y‘„;ë„;'…Nc…/²…5â…:†5S†4‰†9¾†7ø†90‡Dj‡G¯‡D÷‡E<ˆC‚ˆ-Æˆ4ôˆ?)‰:i‰F¤‰;ë‰F'Š9nŠ*¨Š6ÓŠ/
+‹;:‹3v‹%ª‹1Ð‹!ŒV$Œ\{ŒAØŒ1�?L�:Œ�7Ç�>ÿ�$>ŽIcŽ­Ž/ÊŽOúŽPJ�3›� Ï�?ð�:0�&k�
+’�0��%Î�"ô�%‘0=‘!n‘�‘©‘Ä‘Ù‘æ‘Oõ‘E’,d’7‘’
É’×’1æ’“,“?“R“)o“*™“,Ä“6ñ“(”$H”_m”"Í”(ð”A•[•,y•2¦•HÙ•"–2–
+C–$N–s–†–¼¦–¹c—˜//˜_˜z˜˜˜*¸˜Lã˜20™-c™)‘™"»™Þ™ñ™šš4*š_š0gš%˜š9¾šøš<
+›=G›3…›5¹›2ï›7"œBZœL�œêœûœ��%�A�HH�‘�4”�É�Ò�
+é�ô�2ž-CžOqžÁžàž"åž*Ÿ%3Ÿ YŸzŸ˜Ÿ ŸC¿Ÿ¤ ¨ µ  Ï ð ù 
¡"¡8¡N¡e¡‚¡“¡¥¡¹¡*Á¡Nì¡[;¢—¢A›¢Ý¢ü¢£1£6I£€£  £8Á£+ú£&¤9¤I¤Q¤f¤~¤’¤¦¤º¤Í¤
à¤î¤L¥ U¥v¥D•¥PÚ¥+¦=¦2X¦$‹¦°¦Ð¦5ã¦§!4§V§]§2e§F˜§,ß§/¨(<¨e¨"w¨š¨ª¨M¹¨9©;A©7}©µ©Í©ê©ù©,ª$9ªJ^ª)©ª(Óª%üª("«K«
+g«,r«Ÿ«)¹«ã«¬¬3¬;¬S¬)k¬•¬
«¬#¹¬Ý¬'õ¬­.­D­^­{­•­#¡­%Å­ë­®®1®7H®€®œ®µ®Ê®Ü®ï®¯¯-¯JC¯JŽ¯JÙ¯I$°:n°©°-È°;ö°+2±@^±<Ÿ±1Ü±8²8G²U€².Ö²>³ID³hŽ³y÷³>q´N°´Iÿ´dIµ0®µ;ßµ8¶FT¶5›¶&Ñ¶.ø¶-'·.U·0„·<µ·!ò·¸!-¸)O¸Iy¸`Ã¸.$¹,S¹h€¹Eé¹0/º6`ºk—ºE»I»&g»IŽ»#Ø»<ü»<9¼ev¼QÜ¼2.½/a½/‘½4Á½=ö½94¾0n¾7Ÿ¾'×¾=ÿ¾6=¿@t¿µ¿Õ¿,Ù¿À
Â%Â:Â"WÂWzÂSÒÂG&ÃnÃ‡Ã›Ã&»Ã6âÃÄ(Ä%HÄnÄpÄT‚Ä(×ÄÅÅ9ÅTÅ dÅ"…Å!¨ÅÊÅçÅÿÅÆV%Æ|Æ.”Æ>ÃÆAÇ@DÇ…ÇPŸÇEðÇ>6ÈBuÈD¸È.ýÈJ,ÉVwÉOÎÉ/ÊENÊE”ÊLÚÊX'Ë/€ËL°ËXýËVÌqÌQŒÌEÞÌ $ÍEÍ[ÍoÍ‰Í# Í7ÄÍüÍÎ=%ÎcÎsÎƒÎ,�Î,ÊÎ,÷Î#$ÏHÏbÏkÏ‰Ï'¢Ï=ÊÏ<Ð"EÐ%hÐ%ŽÐ(´ÐKÝÐ9)ÑcÑ|ÑœÑ¹ÑÒÑîÑÒ(ÒEÒ[ÒyÒ�Ò¤Ò,¾ÒëÒûÒÓ1ÓLÓ_ÓvÓ‰Ó£ÓºÓ6ÐÓÔÔ)ÔBÔ]Ô*vÔ8¡Ô.ÚÔ<	ÕFÕ[ÕuÕ�Õ§ÕÄÕÝÕôÕ
+Ö1!ÖSÖlÖ'ŒÖ´Ö)ËÖõÖ× ×<9×v×…×
”×¢×·×Ì×(è×Ø,Ø>Ø^Ø |Ø�Ø¶ØÖØêØ*ýØ(Ù:Ù,LÙyÙ0�Ù¾Ù'ÒÙúÙÚ#Ú>ÚWÚlÚ…Ú$ ÚÅÚ%ÙÚ#ÿÚ##ÛGÛ#[Û#Û£Û²ÛÐÛïÛõÛÜÜ Ü
+2Ü=ÜBÜ$HÜ0mÜžÜ£Ü¨ÜÁÜàÜÿÜÝ!Ý-&ÝTÝhÝoÝuÝzÝÝ…Ý‰ÝŽÝªÝ$ÃÝèÝíÝÞ"%Þ+HÞDtÞ¹ÞØÞÝÞâÞéÞïÞôÞß
ß%ß>ßEßcß|ß�ßžß¯ßÀßÑßåß	ùß
à
à
+à
+*à
+5à	@à
+Jà0Uà
+†à-‘à
+¿àÊàÜà*óàá5áFáRá	fápá
‚á�á—á±áÏáááðáâ.â!Bâdâqâ"xâ›â8¬âAåâ'ã9ã2LããA›ãÝãøãä,ä6Eä|ä–ä«ä1Åä)÷ä!å9<å?vå1¶å)èå,æ?æ"Uæ%xæ*žæ6Éæ…çz†çyè{èo˜è;é>DéƒéF—éHÞé`'êgˆêgðêwXëÐë&ðë=ìUì©rìJí&gí1Ží0Àí&ñí#î.<î,kî3˜î%Ìî4òî!'ïEIïA�ïBÑï<ðBQð”ð3±ðFåð),ñ"Vñ?yñ#¹ñ(Ýñ9ò@@ò<�ò=¾òGüò:Dó<óF¼ó<ô:@ô:{ôQ¶ôXõNaõ9°õ2êõ%öCö?aö-¡ö7Ïö÷A"÷Ad÷B¦÷é÷7ø#@ø5dø'šø?Âø/ù(2ù[ùMxùAÆù4úk=ú6©ú,àú9
û,Gûrtû'çû6ürFüA¹ü ûü^ýl{ý0èý*þ,Dþ[qþ9ÍþDÿ;Lÿ7ˆÿJÀÿT`=~+¼&è8GHF�E×N(lj•[W\9´5î/$1T)†.°$ßFKK>—'Ö5þO47„2¼1ïZ!0|I­"÷5XPD©IîQ8	PŠ	=Û	M
+kg
+7Ó
+0.<)k;•)Ñrû5nC¤Yè°B
Qó
BE=ˆÆÆB�BÐMTa�¶G8N€nÏ–>RÕŠ(f³4EOY•zï4j1ŸÑ4î+#/O9¹ÏCç)+'U,}DªMï%=%c.‰3¸5ì3"4V8‹.Ä8ó7,od;ÔH;Y6•@ÌB
IPMšFè\//ŒG¼AGF;Ž#ÊKîJ:7…/½Cí=1 Do C´ ;ø 14!Žf!$õ!4"4O"S„"2Ø"G#6S#4Š#7¿#1÷#1)$Y[$ µ$KÖ$X"%Q{%]Í%2+&)^&Oˆ&9Ø&+'>'F¾'F((L( u(2–(IÉ(8)CL)C�)MÔ)="*N`*M¯*Rý*1P+1‚+s´+}(,G¦,>î,+--6Y-4�-+Å-Mñ-@?.>€.*¿.*ê.//OE/Z•/8ð/()0DR08—0-Ð0Bþ0XA1&š1XÁ1D2f_2PÆ2436L3@ƒ3BÄ3?4.G42v49©4/ã485=L5/Š58º5-ó5(!6"J6-m6D›6)à62
+7@=7&~7C¥7Oé7998&s81š8wÌ8?D9r„9L÷9JD:R�:Qâ:U4;NŠ;aÙ;U;<O‘<já<HL=9•=;Ï=Z>Wf>;¾>/ú>/*?0Z?.‹?2º??í?:-@=h@A¦@dè@gMALµA=BG@BAˆB0ÊB3ûB7/CfgC1ÎC1D12DdD‚D5 D0ÖD2E7:E1rEI¤E$îELF0`FA‘F)ÓFDýF3BG*vG+¡G=ÍGDH,PH'}H0¥HYÖHG0ISxI9ÌI:JIAJP‹JIÜJV&Kj}KwèKJ`L�«L_<MGœMmäMnRNrÁNt4O;©O/åO5PAKP.�P8¼P=õP43QMhQK¶QARWDR6œR5ÓR7	S0AS5rS1¨S.ÚS6	Th@TR©TIüTFU%eU‹U=©U+çULVK`VK¬VMøVfFWe­W*X3>X1rX?¤XBäX1'Y9YY>“Y+ÒY.þY;-ZDiZ1®Z4àZ)[[?[!›[&½[:ä[A\,a\+Ž\9º\ ô\N]6d].›]=Ê]F^3O^ƒ^! ^Â^1ß^+_/=_:m_:¨_0ã_*`l?`M¬`[ú`FVaT�aSòa[Fb4¢b+×b%c=)c=gcC¥c0éc>d`YdJºd,eY2e8ŒeEÅeOf4[f@�f3Ñf<g=Bg4€gNµg0h=5hGsh<»hHøh3AiNui3Äi8øiB1j8tjc­jYk7kkf£k*
+lW5li�le÷l7]mw•mD
n/RnI‚n4Ìn<o)>o&ho7�o6Ço-þo;,pIhp@²p@óp\4q=‘q1Ïq<r,>r>kr-ªr9ØrCsKVsR¢sOõsHEt;Žt-Êtøt#v/v
BvPv)dv Žv%¯vÕv:ëvc&wVŠwVáwI8x‚x—x­xÀxÛxòx+ÿx+y8yGy%Wyb}y;àyz-zDz%Gzmz|z—z¦z¸z
Éz,×z{{1{]N{"¬{+Ï{(û{9$|6^|;•|/Ñ|/}<1}-n},œ}-É}-÷}/%~"U~$x~&�~4Ä~8ù~32=f&¤*Ë6ö>-€l€B{€¾€Å€Í€å€ô€û€��,�A�S�f�|�.’�Á�"Ü�"ÿ�
+"‚!-‚%O‚u‚#„‚¨‚ º‚(Û‚.ƒ&3ƒZƒzƒ†ƒ’ƒ–ƒ³ƒÅƒ×ƒ0éƒ"„,=„-j„"˜„»„%Ô„!ú„I…<f…0£…4Ô…L	†bV†f¹†A ‡3b‡=–‡5Ô‡V
+ˆ4aˆJ–ˆ&áˆ)‰72‰"j‰:�‰È‰"Ý‰$Š%ŠEŠ)ZŠ„Š$™Š$¾ŠDãŠ(‹7F‹!~‹ ‹I±‹Uû‹QŒcŒkŒsŒ‘Œ¤Œ$¶ŒQÛŒ'-�1U�1‡�=¹�÷�+Ž-?Ž8mŽ$¦Ž&ËŽ1òŽ$�@�Y�
+i�&t�P›�ì�)þ�(�!:�9\�6–�UÍ�G#‘-k‘(™‘Â‘!Ô‘$ö‘'’!C’e’:w’²’	Ä’Î’à’ ú’“ 5“V“m““	†“�“—“¤“¹“Î“î“””9”S”s”Š”›”µ”9Õ”• •7•!K•m•,‚•¯•¿•Ñ•ã•ê•&ñ•–>6–*u–) –Ê–Jé–H4—C}—BÁ—H˜@M˜-Ž˜:¼˜E÷˜E=™,ƒ™>°™	ï™ù™{š0�šÀš$Òš÷š	›››
+)›44›i›/{›«›È›à›œ#œ$=œ<bœ9Ÿœ<Ùœ9�'P�5x�<®�9ë�0%žAVž@˜ž=Ùž<Ÿ9TŸ.ŽŸ!½ŸßŸ(÷Ÿ/  -P  ~ ,Ÿ &Ì 3ó '¡4D¡&y¡ ¡!½¡ß¡%÷¡%¢C¢2a¢(”¢½¢Ï¢ã¢ô¢£2"£U£J^£6©£à£aö£bX¤'»¤ã¤ù¤!¥-;¥i¥r¥¥M�¥DÞ¥#¦H5¦<~¦I»¦&§&,§¢S§!ö§¨*¨<¨.V¨4…¨.º¨*é¨©#©2©	H© R©Ds©5¸©-î©ª2ªLªdª2~ªF±ªøª	«g «ˆ«>›«NÚ«N)¬Ax¬tº¬p/­= ­6Þ­-®&C®j®Hƒ®4Ì®¯¯,<¯,i¯P–¯Qç¯&9°I`°4ª°2ß°±'±G±b±w±—±µ±Ë±á±÷±!
²/²N²d²y²*–²'Á²5é²³1;³Rm³=À³7þ³26´-i´ —´¸´#Ë´5ï´3%µ3Yµ0�µ	¾µ	Èµ
+Òµ
+Ýµèµ ¶"¶1¶F¶U¶4Z¶$�¶9´¶ î¶#·43·)h·0’·>Ã·¸ ¸5¸#>¸Ab¸¤¸-¸¸yæ¸4`¹(•¹G¾¹OºVVº]­º]»?i»>©»Yè»,B¼/o¼7Ÿ¼1×¼1	½:;½4v½:«½Læ½F3¾Hz¾HÃ¾J¿3W¿<‹¿FÈ¿4ÀBDÀB‡ÀNÊÀ@Á+ZÁJ†Á.ÑÁ<Â3=Â$qÂ/–Â ÆÂ[çÂ\CÃN Ã:ïÃL*Ä9wÄ:±Ä@ìÄ(-ÅJVÅ)¡Å+ËÅ]÷ÅOUÆ0¥Æ"ÖÆCùÆ>=Ç-|ÇªÇ3¶Ç(êÇ%È(9È?bÈ¢È½È$ÚÈÿÈÉ0ÉSBÉ#–É7ºÉAòÉ4ÊDÊ;UÊ‘Ê¥Ê¸ÊËÊ/êÊ3Ë+NË;zË¶Ë&ÒËhùË$bÌ,‡ÌM´ÌÍ1"Í7TÍOŒÍÜÍíÍÿÍ/Î<Î#OÎÑsÎÎEÏÐ6)Ð&`Ð%‡Ð!­Ð7ÏÐ[Ñ4cÑI˜Ñ5âÑ.ÒGÒ]ÒrÒˆÒD˜ÒÝÒ7åÒ4Ó9RÓŒÓS ÓOôÓDDÔW‰ÔPáÔI2ÕQ|ÕXÎÕ'Ö9ÖXÖ`ÖhÖ„Ö\‹ÖèÖ<íÖ*×3×
Q×_×C|×;À×oü×lØŒØ&“Ø1ºØ5ìØ#"Ù$FÙ
kÙ$yÙOžÙ¦îÙ•Ú§Ú9¿Ú	ùÚÛÛ6ÛQÛlÛ ˆÛ©Û¼ÛÐÛäÛ8ìÛW%Ük}ÜéÜEíÜ"3ÝVÝ#nÝ!’ÝB´Ý"÷Ý&Þ@AÞ5‚Þ¸ÞËÞàÞèÞßß+ß?ßSßfßyßŒß\¬ß$	à).àYXàZ²à
á$á1Cá)uá'ŸáÇá<Ûá!â1:âlâ	uâ9âJ¹â5ã;:ã0vã§ã.ÂãñãäNä?_ä7ŸäB×äå 8åYålå2å,²åXßå48æ*mæ%˜æ6¾æ#õæ
+ç2$çWç9vç$°çÕçòçèè<è2YèŒè©è/»è ëè/é<éRémé#‹é¯éÎé'ßé*ê$2êWêuêŠêE©êïêë+ë@ëRëeëyë�ë£ëS¹ëX
ìRfìU¹ìEíUí-tí@¢í+ãíCî6Sî8ŠîDÃî2ïU;ï0‘ïEÂïTðu]ð†ÓðEZñZ ñTûñxPò4Éò?þò:>óFyó>Àó*ÿó1*ô4\ô4‘ô5Æô>üô';õcõ#€õ&¤õHËõdö/yö-©öf×öD>÷5ƒ÷:¹÷iô÷D^ø £ø(ÄøUíø#CùBgùBªùdíùPRú9£ú4Ýú6û?IûF‰û:Ðû8ü=Dü)‚üV¬ü9ýH=ý†ý¦ý.ªýðÄþ˜×až)¸¬Ñµa-š‹ð±Â¥¹ß™þ=Šˆ[aá][îW˜)Õ��»ÒôyWÚ.êàÒ4°¥š´B[ÒEN�zŸ—ûß0Ô¿
Øï3æ…~çÖ®àZCÑØö®’6þNtó„þ°ý±ïºæ¯[iKƒìuÝÉìá›Å®!�V¯z1Aúañmó.RÜâRüG¢?�c8ƒííñu
+ÂaL€Z“`#qËï c0NË®`³Î&Fx„—\ÿ‹j¼èÕf‹=Ú;p„)KÉVmòƒûý¿KùQ>FAµ(ÍÂ/ƒ5–·<
+ü_-…‰&@èíØ¾Ç·‡hÎkk¶Ï]w£ K§Iîßéäk�Kä� sDzç1‡Y×dëZ“ÚCyÌÐZž…qVÚ+{ÄŽÙ$T¬ð1q@›Â©e¬ðîeñõ”Wg²–Å”–0³	¯¬‘“ƒgÿ¤ÃýJûi±@€0*!�qÿí'Üá	•Š÷FxC<ÂnAÐKcd•%gLpÉ˜r3NÛê$â°Ú
+Ô¡Hùµ@jÅ2nœX8‡{ÝÏcÈ™Y¹Ä¥âYüQWÛ–�eB'=ÀÐÖ”vï£é­…ŽPh¯DÌQ»ÀL3u‡/Ýbý×Ï¼n«²nk}¾‰ H¥ø;/êB9q;ÉIRa(Í”
+ðÇêôVý°½¦I¦¿Óe7T½ÛeófÉþÓD¼Mc,ÁÓ¼Œ]§º#6ort"$1àãO
+/%ŸOXÖ'_§ooú\¹ÓTo3Dö]ò�<÷yd.9{p9¨×?Pˆ^m¶=ÊŒ.q7|î+¸¥Ì¸#@HbCÙ�ÕF)\çšáv-�Ù•Ô*†Äá»“È“¾c#¤Mì&«‰!X>f€ƒõs’OEyç†‰ÊlçmŸ�æ¦â]ôánB»¨2�ŒIà;Êçäå	’>Þåû"¤¦|?7ílì‹}ZœU:E�Tq?�|ä»0ljk•F,Ó':œ‹Uy-Oìñ^|VÎã¢*”{E½éõÂ�SyÔÇÆ0Ž°MwI§ÆrI^Q44ªÖöX]Æf”&'<�’c;x¢¶<¾ÙÃ4‰/~R3±N7Ð‘OÕÁÃÆÔò52òØù³OoV%îòÆ5ü)s+€Q¥ûfRõsŒö, (ˆ§8è‚˜,U 2`Ãž�YËL:ÞJó¸€ÇH3$}d¨�ÉD´ãå6VÄ-™%£±ÜŸ·X£ÑÒ¬Ã÷ÀÛÌˆã*"÷i>¹/ØI¨ŠÌ~£(ÏwP[$?(~×¸èÏ¦U«:Szv%bm³_ó•~Y¼CšSôSë•Ê{ŒS«Mg¹‹H†Ä½pv›åºü&*âò`4iXµ.x¤1×tô¶ñ07—Åx�l»ˆ÷W&
+ÞnÑª¡¾$eB-55¡ÍRAj9¡UCÎå1´~ö¸,uB€\oŸ™^__, AÎZ£}†HrÑ²U—„› ;F�ìÐ%ŠÛ*4N#˜lG·ª_Ÿ,‘:
ÀüÌÍd}LãD{hEªhÛëÞÿœÀW&nù9­¶­ÚAêXv68*LhJrRèg]œ1.øÆ‘ïý¢ºG�þ`œ"� :mTÞ„éðÁ;p�Å)Ùt…–Ü|bºû�Î¢˜ÿ$hlzŽxÜ­Ò6ø´ÀÇ6sîJ=ñ‚µózèZrP95SØújõ¯`CÍw\Š_›—ˆd(‘U¢‚½mpÍâWÿ³¨t‚³8²­>å[�g<ÐÊ^MSäj.äö­’µbšFÁGÖùø°NP=w+í¶92!¿«(Gæ‚±^k?ž Êé#¡ïÞ™/	©‚bß7!õŠQvº¾i‘†?h©+·«†Å
<AË"4™“uP"kGã
OÔ´!|8éfÙMÝ:ú¿YÝªÈßžMfŽ'›@@Ë ž[JD!²\à>`wª²Ó uæ¨¦…o	®�´ŒÈ¿KŽ\e^#J"ëløH}¤7Çëad
§’–š¤ù3¹æBTÁ+Õ�—E¼-‡stÕYP÷Ü©Ã¡Q)5‰b½‡ê©ß6·Á	%È'©
8„ôJÒ=+>
 Lg¯Ý®úëúÏÈpÑË�Ti2
+2Ö	Gøijà¬EÙýàýçýŒ�¨�¼�Ð�ä�ø�‘ ‘4‘H‘\‘p‘„‘˜‘´‘È‘ä‘ø‘’ ’4’H’\’p’„’˜’¬’È’Ü’ð’“0“L“`“t“ˆ“œ“¸“Ì“à“ô“”$”8”L”`”t”ˆ”œ”°”Ä”à”ü”•$•H•\•p•„•˜•¬•À•Ü•ø•–(–<–P–d–x–Œ– –´–È–Ü–ð–——,—@—T—h—|—�—¬—È—Ü—ð—˜ ˜4˜H˜\˜p˜„˜˜˜¬˜À˜Ü˜ø˜™(™D™X™l™€™œ™¸™Ô™è™ü™š,š@šTšhš|š�š¤š¸šÔšèšüš›,›@›T›h›|›¨›¼›Ø›ì›œœ(œ<œPœdœxœŒœ œ´œÈœäœøœ�(�<�P�d�x�Œ� �´�È�Ü�ø�ž ž<ž`ž|ž�ž¤ž¸žÌžèžüžŸ$Ÿ@ŸTŸhŸ|Ÿ�Ÿ¤Ÿ¸ŸÌŸàŸôŸ , @ T x Œ   ´ È Ü ð ¡(¡D¡X¡l¡€¡”¡¨¡¼¡Ð¡ä¡ø¡¢ ¢4¢H¢\¢p¢„¢˜¢¬¢À¢Ü¢ø¢£ £<£P£d£x£Œ£ £´£È£Ü£ð£¤(¤<¤X¤t¤ˆ¤œ¤°¤Ì¤è¤¥¥,¥H¥\¥p¥„¥˜¥¬¥À¥Ô¥è¥¦¦,¦@¦\¦p¦„¦˜¦¬¦Ø¦îýÿÿÿÿþ"ÿÿÿÿFþ ÿÿÿÿmþ5ÿÿÿÿ©þ%ÿÿÿÿÕþ)ÿÿÿÿÿ(ÿÿÿÿ4ÿ/ÿÿÿÿjÿÿÿÿÿ†ÿ'ÿÿÿÿ´ÿ-ÿÿÿÿâÿÿÿÿÿÿÿÿÿÿÿ* $ÿÿÿÿv ÿÿÿÿž%ÿÿÿÿÛÿÿÿÿ*ÿÿÿÿ:.ÿÿÿÿj)1ÿÿÿÿÄ%ÿÿÿÿê9ÿÿÿÿ$1ÿÿÿÿV
+2ÿÿÿÿ’"ÿÿÿÿÆ3ÿÿÿÿúÿÿÿÿ!9ÿÿÿÿq%ÿÿÿÿ¤
+Hÿÿÿÿø
+/ÿÿÿÿO)ÿÿÿÿ�
+6ÿÿÿÿÐ
+>ÿÿÿÿ
+0ÿÿÿÿR
+Fÿÿÿÿ¢
+ÿÿÿÿä
++ÿÿÿÿ
+ÿÿÿÿA
+"ÿÿÿÿm@)ÿÿÿÿÜ
+/ÿÿÿÿ
+ ÿÿÿÿ?-ÿÿÿÿ†6ÿÿÿÿÒ6ÿÿÿÿ
+7ÿÿÿÿ^
+?ÿÿÿÿ§
+ÿÿÿÿÌ4ÿÿÿÿ	+ÿÿÿÿQ	-ÿÿÿÿ‹	3ÿÿÿÿ¿	0ÿÿÿÿ
+ 0ÿÿÿÿ†
+
+-ÿÿÿÿ½
+(ÿÿÿÿù
+
+-ÿÿÿÿ0ÿÿÿÿb6ÿÿÿÿŸ>ÿÿÿÿä#ÿÿÿÿÿÿÿÿKÿÿÿÿ‡
+2ÿÿÿÿÃ
+.ÿÿÿÿûFÿÿÿÿB

+2ÿÿÿÿ~

+2ÿÿÿÿº

+2ÿÿÿÿö

+2ÿÿÿÿ2
+2ÿÿÿÿn
+2ÿÿÿÿªFÿÿÿÿñ
+9ÿÿÿÿ4
+7ÿÿÿÿu
+9ÿÿÿÿ¸FÿÿÿÿÿFÿÿÿÿF	2ÿÿÿÿ�+ÿÿÿÿ³.ÿÿÿÿè+ÿÿÿÿ-ÿÿÿÿO0ÿÿÿÿ�"ÿÿÿÿÜ!ÿÿÿÿ
+*ÿÿÿÿE
+Aÿÿÿÿ�
+dÿÿÿÿþ
+$ÿÿÿÿ,1ÿÿÿÿh1ÿÿÿÿš
+ÿÿÿÿ·5ÿÿÿÿ&ÿÿÿÿ9=ÿÿÿÿ‰&ÿÿÿÿÝ+ÿÿÿÿÿÿÿÿP]ÿÿÿÿ½!5ÿÿÿÿKÿÿÿÿ`<"ÿÿÿÿ¾$ÿÿÿÿ÷7
+ÿÿÿÿ9ÿÿÿÿ�;ÿÿÿÿé?ÿÿÿÿGÿÿÿÿp2ÿÿÿÿªÿÿÿÿÛÿÿÿÿ
=ÿÿÿÿ\Iÿÿÿÿ¿(ÿÿÿÿýIÿÿÿÿ`!ÿÿÿÿ–!ÿÿÿÿÆÿÿÿÿ÷+ÿÿÿÿ$=ÿÿÿÿb5ÿÿÿÿ˜@ÿÿÿÿÝ7ÿÿÿÿ-ÿÿÿÿCÿÿÿÿ`-ÿÿÿÿ�
+"	ÿÿÿÿð?ÿÿÿÿ1!ÿÿÿÿX$ÿÿÿÿ�ÿÿÿÿµ9ÿÿÿÿõ'ÿÿÿÿ#.ÿÿÿÿX)ÿÿÿÿˆ+ÿÿÿÿºÿÿÿÿ×%ÿÿÿÿ6ÿÿÿÿ:'ÿÿÿÿbÿÿÿÿ�&+ÿÿÿÿé"ÿÿÿÿ  ÿÿÿÿK !ÿÿÿÿ‰ *ÿÿÿÿÂ >ÿÿÿÿ!7,ÿÿÿÿe!6ÿÿÿÿ�!Kÿÿÿÿé!;ÿÿÿÿ%"
+8ÿÿÿÿg"'ÿÿÿÿ¢"Fÿÿÿÿé"ÿÿÿÿ#<ÿÿÿÿa#)ÿÿÿÿ›#
+Uÿÿÿÿü#
+#5ÿÿÿÿ`$2ÿÿÿÿ¤$
+5ÿÿÿÿã$
+Aÿÿÿÿ.%
+;ÿÿÿÿs%
+RÿÿÿÿÏ%
+"ÿÿÿÿ&
+0ÿÿÿÿP&
+ ÿÿÿÿz&
+%ÿÿÿÿ©&G6ÿÿÿÿ,'
+3ÿÿÿÿi'
+ÿÿÿÿ‘'2ÿÿÿÿâ'<ÿÿÿÿ5(<ÿÿÿÿ‡(
+=ÿÿÿÿÎ(
+Iÿÿÿÿ!)
+ ÿÿÿÿK)4ÿÿÿÿ™)2ÿÿÿÿØ)4ÿÿÿÿ*7ÿÿÿÿQ*;ÿÿÿÿ¤*6ÿÿÿÿ&+
++ÿÿÿÿ[+/ÿÿÿÿ�+
+5ÿÿÿÿÜ+ÿÿÿÿ,:ÿÿÿÿQ,Dÿÿÿÿœ,*ÿÿÿÿÎ,$ÿÿÿÿ-$ÿÿÿÿZ-
+>ÿÿÿÿ¢-
+3ÿÿÿÿß-Rÿÿÿÿ2.
+2ÿÿÿÿn.
+2ÿÿÿÿª.
+2ÿÿÿÿæ.
+2ÿÿÿÿ"/
+2ÿÿÿÿ^/
+2ÿÿÿÿš/Rÿÿÿÿí/
+9ÿÿÿÿ00
+7ÿÿÿÿq0
+9ÿÿÿÿ´0Rÿÿÿÿ1RÿÿÿÿZ1	6ÿÿÿÿ™1/ÿÿÿÿÏ12ÿÿÿÿ2/ÿÿÿÿ>22ÿÿÿÿx2+	ÿÿÿÿÈ2!ÿÿÿÿ3&ÿÿÿÿ<3
+:ÿÿÿÿ‚3
+Kÿÿÿÿ×3
+tÿÿÿÿU4
+*ÿÿÿÿ‰43ÿÿÿÿÇ4Aÿÿÿÿ	5
+ÿÿÿÿ-5!=ÿÿÿÿ‹5/ÿÿÿÿÈ5Dÿÿÿÿ 60!ÿÿÿÿ�6*ÿÿÿÿÁ6(ÿÿÿÿ7fÿÿÿÿ|7!;ÿÿÿÿÙ7Sÿÿÿÿ-8B+ÿÿÿÿš8-ÿÿÿÿÞ8Gÿÿÿÿ19)ÿÿÿÿ…9&Gÿÿÿÿ:Dÿÿÿÿe:ÿÿÿÿŒ:9
+ÿÿÿÿÐ:ÿÿÿÿ;ÿÿÿÿ7;Nÿÿÿÿ˜;Kÿÿÿÿÿ;(ÿÿÿÿ><Iÿÿÿÿ£<,ÿÿÿÿæ<+ÿÿÿÿ"=#ÿÿÿÿ`=-ÿÿÿÿ�=FÿÿÿÿÖ==ÿÿÿÿ>Iÿÿÿÿb>:ÿÿÿÿ�>0ÿÿÿÿÎ>ÿÿÿÿì>,ÿÿÿÿ*?
+/ÿÿÿÿ†?Lÿÿÿÿ	    TLS: %pA	<corrupt: 0x%04lx>	Export Address Table 			Export Address Table 		%08lx
 	Invalid Export Address Table rva (0x%lx) or entry count (0x%lx)
 	Invalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)
 	Invalid Ordinal Table rva (0x%lx) or entry count (0x%lx)
@@ -321,19 +319,7 @@ ppcboot header:
   EGSD (len=%u):
   EGSD entry %2u (type: %u, len: %u):   EMH %u (len=%u):   base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x   base_va : 0x%08x
   bitcount: %u, base addr: 0x%08x
-  branch         %lu
-  branch toc adj %lu
-  branch notoc   %lu
-  branch both    %lu
-  long branch    %lu
-  long toc adj   %lu
-  long notoc     %lu
-  long both      %lu
-  plt call       %lu
-  plt call save  %lu
-  plt call notoc %lu
-  plt call both  %lu
-  global entry   %lu  calls:
+  calls:
   chgprtoff : %5u
   codeadroff: %5u, lpfixoff  : %5u
   fixuplnk: 0x%08x %08x
@@ -390,8 +376,15 @@ ppcboot header:
      		Address  Length   Length   32b exc  Handler   Data
  vma:            Hint    Time      Forward  DLL       First
                  Table   Stamp     Chain    Name      Thunk
-#<invalid error code>%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d
+#<invalid error code>%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC
+%%X%%P: unresolvable %s relocation against symbol `%s'
+%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d
 %03x %*.s Entry: %C: warning: relocation to "%s" references a different segment
+%F%P: %pB(%pA): error: need linked-to section for --gc-sections
+%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.
+%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%F%P: Could not assign group %pA target %pA to an output section. Retry without --enable-non-contiguous-regions.
 %F%P: already_linked_table: %E
 %F%P: auto overlay error: %E
 %F%P: can not build overlay stubs: %E
@@ -440,23 +433,22 @@ ppcboot header:
 %H: error: %s against `%s' not a multiple of %u
 %H: error: %s not a multiple of %u
 %H: fixup branch overflow
+%H: got/toc optimization is not supported for %s instruction
 %H: non-zero addend on %s reloc against `%s'
 %H: reloc against `%s' references a different segment
 %H: reloc against `%s': %s
 %H: relocation %s for indirect function %s unsupported
 %H: relocation references symbol not defined in the module
 %H: relocation to `%s+%v' may have caused the error above
-%H: toc optimization is not supported for %s instruction
 %H: unresolvable %s against `%pT'
 %H: unresolvable %s relocation against symbol `%s'
 %H: warning: %s unexpected insn %#x.
 %P%F: --relax and -r may not be used together
 %P%X: can not read symbols: %E
-%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC
 %P%X: read-only segment has dynamic relocations
-%P: %H: %s relocation unsupported for bss-plt
 %P: %H: error: %s with unexpected instruction %x
 %P: %pB: %s is not supported for `%pT'
+%P: %pB: warning: missing %s
 %P: %pB: warning: relocation against `%s' in read-only section `%pA'
 %P: %pB: warning: relocation in read-only section `%pA'
 %P: cannot find opd entry toc for `%pT'
@@ -465,7 +457,9 @@ ppcboot header:
 %P: linkage table error against `%pT'
 %P: multiple entry points: in modules %pB and %pB
 %P: relocatable link is not supported
-%P: warning: creating a DT_TEXTREL in a shared object
+%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s
+%P: warning: creating DT_TEXTREL in a PIE
+%P: warning: creating DT_TEXTREL in a shared object
 %P: warning: text relocations and GNU indirect functions may result in a segfault at runtime
 %X%C: relocation to "%s" references a different segment
 %X%H: @local call to ifunc %s
@@ -475,10 +469,14 @@ ppcboot header:
 %X%H: unsupported branch between ISA modes
 %X%H: unsupported bss-plt -fPIC ifunc %s
 %X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled
+%X%P: %H: %s relocation unsupported for bss-plt
 %X%P: %pB(%pA): error: relocation for offset %V has no value
 %X%P: %pB(%pA): relocation "%pR" goes out of range
 %X%P: %pB(%pA): relocation "%pR" is not supported
 %X%P: %pB(%pA): relocation "%pR" returns an unrecognized value %x
+%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation
+%X%P: %pB: error: missing %s
+%X%P: attempted static link of dynamic object `%pB'
 %X%P: internal error: out of range error
 %X%P: internal error: unknown error
 %X%P: internal error: unsupported relocation error
@@ -491,17 +489,17 @@ ppcboot header:
 %X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB
 %pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections%pA has both ordered and unordered sections%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)
 %pA:0x%v not found in function table
-%pB (%s): section flag %s (%#lx) ignored%pB .opd not allowed in ABI version %d%pB and %pB are for different configurations%pB and %pB are for different cores%pB contains CRIS v32 code, incompatible with previous objects%pB contains non-CRIS-v32 code, incompatible with previous objects%pB has both the current and legacy Tag_MPextension_use attributes%pB is not allowed to define %s%pB section %pA exceeds stub group size%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section%pB uses 64-bit long double, %pB uses 128-bit long double%pB uses AltiVec vector ABI, %pB uses SPE vector ABI%pB uses IBM long double, %pB uses IEEE long double%pB uses double-precision hard float, %pB uses single-precision hard float%pB uses hard float, %pB uses soft float%pB uses r3/r4 for small structure returns, %pB uses memory%pB uses unknown e_flags 0x%lx%pB(%pA): error: call to undefined function '%s'%pB(%pA): internal error: dangerous relocation%pB(%pA): internal error: out of range error%pB(%pA): internal error: unknown error%pB(%pA): internal error: unsupported relocation error%pB(%pA): invalid property table%pB(%pA): multiple TLS models are not supported%pB(%pA): relocation %d has invalid symbol index %ld%pB(%pA): shared library symbol %s encountered whilst performing a static link%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction%pB(%pA): warning: unaligned access to symbol '%s' in the small data area%pB(%pA): warning: unaligned small data access of type %d%pB(%pA+%#lx): stabs entry has invalid string index%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete
+%pB (%s): section flag %s (%#lx) ignored%pB .opd not allowed in ABI version %d%pB and %pB are for different configurations%pB and %pB are for different cores%pB contains CRIS v32 code, incompatible with previous objects%pB contains non-CRIS-v32 code, incompatible with previous objects%pB has both the current and legacy Tag_MPextension_use attributes%pB is not allowed to define %s%pB section %pA exceeds stub group size%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section%pB uses 64-bit long double, %pB uses 128-bit long double%pB uses AltiVec vector ABI, %pB uses SPE vector ABI%pB uses IBM long double, %pB uses IEEE long double%pB uses double-precision hard float, %pB uses single-precision hard float%pB uses hard float, %pB uses soft float%pB uses r3/r4 for small structure returns, %pB uses memory%pB uses unknown e_flags 0x%lx%pB(%pA): error: call to undefined function '%s'%pB(%pA): error: internal relocs missing for secondary reloc section%pB(%pA): error: reloc table entry %u is empty%pB(%pA): error: secondary reloc %u is of an unknown type%pB(%pA): error: secondary reloc %u references a deleted symbol%pB(%pA): error: secondary reloc %u references a missing symbol%pB(%pA): error: secondary reloc section is empty!%pB(%pA): error: secondary reloc section processed twice%pB(%pA): info section index cannot be set because the section is not in the output%pB(%pA): info section index is invalid%pB(%pA): internal error: dangerous relocation%pB(%pA): internal error: out of range error%pB(%pA): internal error: unknown error%pB(%pA): internal error: unsupported relocation error%pB(%pA): invalid property table%pB(%pA): link section cannot be set because the output file does not have a symbol table%pB(%pA): multiple TLS models are not supported%pB(%pA): relocation %d has invalid symbol index %ld%pB(%pA): shared library symbol %s encountered whilst performing a static link%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction%pB(%pA): warning: unaligned access to symbol '%s' in the small data area%pB(%pA): warning: unaligned small data access of type %d%pB(%pA+%#lx): stabs entry has invalid string index%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete
 %pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s%pB, section %pA:
-  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC%pB, section %pA: no PLT for relocation %s against symbol `%s'%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for global symbol: `%s'%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC%pB, section %pA: relocation %s with no GOT created%pB, section %pA: unresolvable relocation %s against symbol `%s'%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC%pB: !samegp reloc against symbol without .prologue: %s%pB: %pA invalid input section size%pB: %pA not in order%pB: %pA points past end of text section%pB: %pA: reloc overflow: %#x > 0xffff%pB: %s flag mismatch with previous modules%pB: %s not absolute%pB: %s unsupported%pB: %s' accessed both as normal and thread local symbol%pB: %s: invalid needed version %d%pB: %s: invalid version %u (max %d)%pB: %s: reloc overflow: 0x%lx > 0xffff%pB: '%s' accessed both as normal and thread local symbol%pB: --in-implib only supported for Secure Gateway import libraries%pB: .gnu.version_d invalid entry%pB: .gnu.version_r invalid entry%pB: .got subsegment exceeds 64K (size %d)%pB: .opd is not a regular array of opd entries%pB: .preinit_array section is not allowed in DSO%pB: .rsrc merge failure: corrupt .rsrc section%pB: .rsrc merge failure: unexpected .rsrc size%pB: @gprel relocation against dynamic symbol %s%pB: @internal branch to dynamic symbol %s%pB: @pcrel relocation against dynamic symbol %s%pB: ABI is incompatible with that of the selected emulation%pB: ABI is incompatible with that of the selected emulation:
-  target emulation `%s' does not match `%s'%pB: ABI mismatch: linking %s module with previous %s modules%pB: ABI version %ld is not compatible with ABI version %ld output%pB: ASE mismatch: linking %s module with previous %s modules%pB: BE8 images only valid in big-endian mode%pB: Cannot handle relocation value size of %d%pB: Function descriptor relocation with non-zero addend%pB: GNU_MBIN section `%pA' has invalid sh_info field: %d%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d%pB: GOT overflow: number of relocations with 8-bit offset > %d%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections%pB: TLS local exec code cannot be linked into shared objects%pB: TLS sections are not adjacent:%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: XCOFF shared object when not producing XCOFF output%pB: __gp does not cover short data segment%pB: `%s' accessed both as FDPIC and thread local symbol%pB: `%s' accessed both as normal and FDPIC symbol%pB: `%s' accessed both as normal and thread local symbol%pB: `%s' and its special symbol are in different sections%pB: `%s' has line numbers but no enclosing section%pB: `%s' in loader reloc but not loader sym%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)%pB: absent standard symbol `%s'%pB: addend should be zero for got relocations%pB: addend should be zero for plt relocations%pB: aout header specifies an invalid number of data-directory entries: %ld%pB: architecture mismatch with previous modules%pB: attempt to load strings from a non-string section (number %d)%pB: attempt to mix FDPIC and non-FDPIC objects%pB: attempt to write out unknown reloc type%pB: bad relocation record imported: %d%pB: bad relocation section name `%s'%pB: bad section length in ihex_read_section%pB: bad symbol definition: `Main' set to %s rather than the start address %s
+  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC%pB, section %pA: no PLT for relocation %s against symbol `%s'%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for global symbol: `%s'%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC%pB, section %pA: relocation %s with no GOT created%pB, section %pA: unresolvable relocation %s against symbol `%s'%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC%pB: !samegp reloc against symbol without .prologue: %s%pB: %pA invalid input section size%pB: %pA not in order%pB: %pA points past end of text section%pB: %pA: reloc overflow: %#x > 0xffff%pB: %s flag mismatch with previous modules%pB: %s local symbol at index %lu (>= sh_info of %lu)%pB: %s not absolute%pB: %s unsupported%pB: %s' accessed both as normal and thread local symbol%pB: %s: invalid needed version %d%pB: %s: invalid version %u (max %d)%pB: %s: reloc overflow: 0x%lx > 0xffff%pB: '%s' accessed both as normal and thread local symbol%pB: --in-implib only supported for Secure Gateway import libraries%pB: .gnu.version_d invalid entry%pB: .gnu.version_r invalid entry%pB: .got subsegment exceeds 64K (size %d)%pB: .opd is not a regular array of opd entries%pB: .preinit_array section is not allowed in DSO%pB: .rsrc merge failure: corrupt .rsrc section%pB: .rsrc merge failure: unexpected .rsrc size%pB: @gprel relocation against dynamic symbol %s%pB: @internal branch to dynamic symbol %s%pB: @pcrel relocation against dynamic symbol %s%pB: ABI is incompatible with that of the selected emulation%pB: ABI is incompatible with that of the selected emulation:
+  target emulation `%s' does not match `%s'%pB: ABI mismatch: linking %s module with previous %s modules%pB: ABI version %ld is not compatible with ABI version %ld output%pB: ASE mismatch: linking %s module with previous %s modules%pB: BE8 images only valid in big-endian mode%pB: Cannot handle relocation value size of %d%pB: Function descriptor relocation with non-zero addend%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d%pB: GOT overflow: number of relocations with 8-bit offset > %d%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections%pB: TLS local exec code cannot be linked into shared objects%pB: TLS relocation %s against undefined symbol `%s'%pB: TLS sections are not adjacent:%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead.%pB: XCOFF shared object when not producing XCOFF output%pB: __gp does not cover short data segment%pB: `%s' accessed both as FDPIC and thread local symbol%pB: `%s' accessed both as normal and FDPIC symbol%pB: `%s' accessed both as normal and thread local symbol%pB: `%s' and its special symbol are in different sections%pB: `%s' has line numbers but no enclosing section%pB: `%s' in loader reloc but not loader sym%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)%pB: absent standard symbol `%s'%pB: addend should be zero for got relocations%pB: addend should be zero for plt relocations%pB: aout header specifies an invalid number of data-directory entries: %u%pB: architecture mismatch with previous modules%pB: attempt to load strings from a non-string section (number %d)%pB: attempt to mix FDPIC and non-FDPIC objects%pB: attempt to write out unknown reloc type%pB: bad relocation record imported: %d%pB: bad relocation section name `%s'%pB: bad section length in ihex_read_section%pB: bad symbol definition: `Main' set to %s rather than the start address %s
 %pB: bad symbol index: %d%pB: base-plus-offset relocation against register symbol: %s in %pA%pB: base-plus-offset relocation against register symbol: (unknown) in %pA%pB: can not represent section `%pA' in a.out object file format%pB: can not represent section for symbol `%s' in a.out object file format%pB: can't link %s modules with %s modules%pB: can't link RVE with other target%pB: cannot allocate file name for file number %d, %d bytes
-%pB: cannot create stub entry %s%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot link fdpic object file into non-fdpic executable%pB: cannot link non-fdpic object file into fdpic executable%pB: cannot link together %s and %s objects%pB: change in gp: BRSGP %s%pB: class %d symbol `%s' has no aux entries%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s%pB: compiled for a 64 bit system and target is 32 bit%pB: compiled for a big endian system and target is little endian%pB: compiled for a little endian system and target is big endian%pB: compiled normally and linked with modules compiled with -mrelocatable%pB: compiled with %s and linked with modules compiled with %s%pB: compiled with %s and linked with modules that use non-pic relocations%pB: compiled with -mrelocatable and linked with modules compiled normally%pB: could not find output section %pA for input section %pA%pB: could not read contents of section `%pA'
+%pB: cannot allocate memory for local GOT entries%pB: cannot create stub entry %s%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot link fdpic object file into non-fdpic executable%pB: cannot link non-fdpic object file into fdpic executable%pB: cannot link together %s and %s objects%pB: change in gp: BRSGP %s%pB: class %d symbol `%s' has no aux entries%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s%pB: compiled for a 64 bit system and target is 32 bit%pB: compiled for a big endian system and target is little endian%pB: compiled for a little endian system and target is big endian%pB: compiled normally and linked with modules compiled with -mrelocatable%pB: compiled with %s and linked with modules compiled with %s%pB: compiled with %s and linked with modules that use non-pic relocations%pB: compiled with -mrelocatable and linked with modules compiled normally%pB: could not find output section %pA for input section %pA%pB: could not read contents of section `%pA'
 %pB: csect `%s' not in enclosing section%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object%pB: directive LOCAL valid only with a register or absolute value%pB: dtp-relative relocation against dynamic symbol %s%pB: duplicate export stub %s%pB: duplicate section `%pA' has different contents
 %pB: duplicate section `%pA' has different size
 %pB: dynamic object with no .loader section%pB: dynamic relocation against `%pT' in read-only section `%pA'
 %pB: dynamic relocation in read-only section `%pA'
-%pB: endianness incompatible with that of the selected emulation%pB: entry function `%s' is empty%pB: entry function `%s' not output%pB: error: ABI mismatch with previous modules%pB: error: Cortex-A8 erratum stub is allocated in unsafe location%pB: error: Cortex-A8 erratum stub out of range (input file too large)%pB: error: PHDR segment not covered by LOAD segment%pB: error: VFP11 veneer out of range%pB: error: alignment power %d of section `%pA' is too big%pB: error: attribute section '%pA' too big: %#llx%pB: error: cannot create STM32L4XX veneer%pB: error: debug data ends beyond end of debug directory%pB: error: erratum 835769 stub out of range (input file too large)%pB: error: erratum 843419 stub out of range (input file too large)%pB: error: instruction set mismatch with previous modules%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file%pB: error: non-load segment %d includes file header and/or program header%pB: error: search_nds32_elf_blank reports wrong node%pB: error: unexpected symbol '%s' in COMDAT section%pB: error: unknown mandatory EABI object attribute %d%pB: failed to find info section for section %d%pB: failed to find link section for section %d%pB: failed to generate import library%pB: failed to read debug data section%pB: fatal: generic symbols retrieved before relaxing%pB: file class %s incompatible with %s%pB: gotoff relocation against dynamic symbol %s%pB: gp-relative relocation against dynamic symbol %s%pB: group section '%pA' has no contents%pB: hidden symbol `%s' in %pB is referenced by DSO%pB: hidden symbol `%s' isn't defined%pB: ignoring duplicate section `%pA'
+%pB: endianness incompatible with that of the selected emulation%pB: entry function `%s' is empty%pB: entry function `%s' not output%pB: error: ABI mismatch with previous modules%pB: error: Cortex-A8 erratum stub is allocated in unsafe location%pB: error: Cortex-A8 erratum stub out of range (input file too large)%pB: error: PHDR segment not covered by LOAD segment%pB: error: VFP11 veneer out of range%pB: error: alignment power %d of section `%pA' is too big%pB: error: attribute section '%pA' too big: %#llx%pB: error: cannot create STM32L4XX veneer%pB: error: debug data ends beyond end of debug directory%pB: error: erratum 835769 stub out of range (input file too large)%pB: error: erratum 843419 immediate 0x%%pB: error: erratum 843419 stub out of range (input file too large)%pB: error: instruction set mismatch with previous modules%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file%pB: error: non-load segment %d includes file header and/or program header%pB: error: search_nds32_elf_blank reports wrong node%pB: error: unexpected symbol '%s' in COMDAT section%pB: error: unknown mandatory EABI object attribute %d%pB: failed to find info section for section %d%pB: failed to find link section for section %d%pB: failed to generate import library%pB: failed to read debug data section%pB: fatal: generic symbols retrieved before relaxing%pB: file class %s incompatible with %s%pB: gotoff relocation against dynamic symbol %s%pB: gp-relative relocation against dynamic symbol %s%pB: group section '%pA' has no contents%pB: hidden symbol `%s' in %pB is referenced by DSO%pB: hidden symbol `%s' isn't defined%pB: ignoring duplicate section `%pA'
 %pB: illegal section name `%pA'%pB: illegal symbol index %ld in relocs%pB: incompatible machine type; output is 0x%x; input is 0x%x%pB: incorrect size for symbol `%s'%pB: indirect symbol `%s' to `%s' is a loop%pB: instruction set mismatch with previous modules%pB: internal error in ihex_read_section%pB: internal error, internal register section %pA had contents
 %pB: internal error, symbol table changed size from %d to %d words
 %pB: internal symbol `%s' in %pB is referenced by DSO%pB: internal symbol `%s' isn't defined%pB: invalid entry in SHT_GROUP section [%u]%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions%pB: invalid link %u for reloc section %s (index %u)%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)
@@ -518,11 +516,23 @@ ppcboot header:
 %pB: invalid mmo file: lop_end not last item in file
 %pB: invalid mmo file: unsupported lopcode `%d'
 %pB: invalid sh_link field (%d) in section number %d%pB: invalid special symbol `%s'; it must be a global or weak function symbol%pB: invalid standard symbol `%s'; it must be a global or weak function symbol%pB: invalid symbol table: duplicate symbol `%s'
-%pB: line number overflow: 0x%lx > 0xffff%pB: linking %s module with previous %s modules%pB: linking 32-bit code with 64-bit code%pB: linking 64-bit files with 32-bit files%pB: linking UltraSPARC specific with HAL specific code%pB: linking auto-pic files with non-auto-pic files%pB: linking big-endian files with little-endian files%pB: linking constant-gp files with non-constant-gp files%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%pB: linking files compiled for HCS12 with others compiled for HC12%pB: linking little endian files with big endian files%pB: linking non-pic code in a position independent executable%pB: linking trap-on-NULL-dereference with non-trapping files%pB: loader reloc in read-only section %pA%pB: loader reloc in unrecognized section `%s'%pB: local symbol `%s' in %pB is referenced by DSO%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol%pB: machine flag conflict with target%pB: malformed reloc detected for section %pA%pB: malformed reloc detected for section %s%pB: misplaced XTY_LD `%s'%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no core to allocate section name %s%pB: no group info for section '%pA'%pB: no initialized registers; section length 0
-%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: no valid group sections found%pB: non-pic code with imm relocation against dynamic symbol `%s'%pB: non-pic relocation against symbol %s%pB: not enough room for program headers, try linking with -N%pB: only registers %%g[2367] can be declared using STT_REGISTER%pB: out of memory creating name for empty section%pB: out of memory in _bfd_elf_get_property%pB: page size is too large (0x%x)%pB: pc-relative relocation against dynamic symbol %s%pB: pc-relative relocation against undefined weak symbol %s%pB: plugin needed to handle lto object%pB: probably compiled without -fPIC?%pB: protected symbol `%s' isn't defined%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive%pB: register relocation against non-register symbol: %s in %pA%pB: register relocation against non-register symbol: (unknown) in %pA%pB: reloc against a non-existent symbol index: %ld%pB: relocatable link from %s to %s not supported%pB: relocation %s against %s%s`%s' can not be used when making %s%s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported%pB: relocation %s against `%s' can not be used when making a shared object%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against symbol `%s' isn't supported in x32 mode%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC%pB: relocation %s can not be used when making a shared object; recompile with -fPIC%pB: relocation %s cannot be used when making a shared object%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object%pB: relocation size mismatch in %pB section %pA%pB: relocations in generic ELF (EM: %d)%pB: relocs in section `%pA', but it has no contents%pB: section %pA: string table overflow at offset %ld%pB: section `%pA' can't be allocated in segment %d%pB: section group entry number %u is corrupt%pB: sh_link [%d] in section `%pA' is incorrect%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'%pB: size field is zero in Import Library Format header%pB: special symbol `%s' only allowed for ARMv8-M architecture or later%pB: speculation fixup to dynamic symbol %s%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: support for local dynamic not implemented%pB: symbol `%s' has unrecognized csect type %d%pB: symbol `%s' has unrecognized smclas %d%pB: symbol `%s' required but not present%pB: taking the address of protected function '%s' cannot be done when making a shared library%pB: the target (%s) of a %s relocation is in the wrong output section (%s)%pB: the target (%s) of an %s relocation is in the wrong section (%pA)%pB: too many sections (%d)%pB: too many sections: %d (>= %d)%pB: too many sections: %u%pB: tp-relative relocation against dynamic symbol %s%pB: unable to create fake empty section%pB: unable to fill in DataDictionary[12] because .idata$5 is missing%pB: unable to fill in DataDictionary[1] because .idata$2 is missing%pB: unable to fill in DataDictionary[1] because .idata$4 is missing%pB: unable to fill in DataDictionary[9] because __tls_used is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing%pB: unable to find %s veneer `%s'%pB: unable to find name for empty section%pB: unable to get decompressed section %pA%pB: unable to initialize compress status for section %s%pB: unable to initialize decompress status for section %s%pB: unable to load COMDAT section name%pB: unable to sort relocs - they are in more than one size%pB: unable to sort relocs - they are of an unknown size%pB: undefined reference to symbol '%s'%pB: undefined sym `%s' in .opd section%pB: undefined symbol on R_PPC64_TOCSAVE relocation%pB: unexpected redefinition of indirect versioned symbol `%s'%pB: unexpected reloc type %u in .opd section%pB: unhandled dynamic relocation against %s%pB: unhandled import type; %x%pB: unknown architecture %s%pB: unknown load command %#x%pB: unknown mandatory ARC object attribute %d%pB: unknown mandatory EABI object attribute %d%pB: unknown relocation type %d%pB: unknown type [%#x] section `%s'%pB: unknown type [%#x] section `%s' in group [%pA]%pB: unmatched OMIT_FP in %pA%pB: unrecognised machine type (0x%x) in Import Library Format archive%pB: unrecognized import name type; %x%pB: unrecognized import type; %x%pB: unrecognized relocation type %#x in section `%pA'%pB: unrecognized storage class %d for %s symbol `%s'%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported transition from %s to %s%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
-%pB: uses %s instructions while previous modules use %s instructions%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols%pB: uses different e_flags (%#x) fields than previous modules (%#x)%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)%pB: uses instructions which are incompatible with instructions used in previous modules%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols%pB: version node not found for symbol %s%pB: visibility of symbol `%s' has changed%pB: warning core file truncated%pB: warning: %pA: line number overflow: %#x > 0xffff%pB: warning: %s BLX instruction targets %s function '%s'%pB: warning: %s relocation against symbol `%s' from %pA section%pB: warning: %s unsupported in shared mode%pB: warning: %s: line number overflow: 0x%lx > 0xffff%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: RVE PLT generation not supported%pB: warning: allocated section `%s' not in segment%pB: warning: bad `%s' option size %u smaller than its header%pB: warning: cannot determine the target function for stub section `%s'%pB: warning: claims to have 0xffff relocs, without overflow%pB: warning: duplicate line number information for `%s'%pB: warning: endian mismatch with previous modules%pB: warning: ignoring section flag %s in section %s%pB: warning: illegal symbol in line number entry %d%pB: warning: illegal symbol index %ld in relocs%pB: warning: illegal symbol index 0x%lx in line number entry %d%pB: warning: incompatible elf-versions %s and %s%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)%pB: warning: line number count (%#lx) exceeds section size (%#lx)%pB: warning: line number table read failed%pB: warning: linking PIC files with non-PIC files%pB: warning: linking abicalls files with non-abicalls files%pB: warning: loop in section dependencies detected%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u%pB: warning: multiple symbol tables detected - ignoring the table in section %u%pB: warning: no symbol for section '%s' found%pB: warning: older version of object file encountered, please recompile with current tool chain%pB: warning: relocate SDA_BASE failed%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture%pB: warning: sh_link not set for section `%pA'%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
+%pB: invalid version offset %lx (max %lx)%pB: line number overflow: 0x%lx > 0xffff%pB: linking %s module with previous %s modules%pB: linking 32-bit code with 64-bit code%pB: linking 64-bit files with 32-bit files%pB: linking UltraSPARC specific with HAL specific code%pB: linking auto-pic files with non-auto-pic files%pB: linking big-endian files with little-endian files%pB: linking constant-gp files with non-constant-gp files%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%pB: linking files compiled for HCS12 with others compiled for HC12%pB: linking little endian files with big endian files%pB: linking non-pic code in a position independent executable%pB: linking trap-on-NULL-dereference with non-trapping files%pB: loader reloc in read-only section %pA%pB: loader reloc in unrecognized section `%s'%pB: local symbol `%s' in %pB is referenced by DSO%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol%pB: machine flag conflict with target%pB: malformed reloc detected for section %pA%pB: malformed reloc detected for section %s%pB: misplaced XTY_LD `%s'%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no core to allocate section name %s%pB: no group info for section '%pA'%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: no valid group sections found%pB: non-pic code with imm relocation against dynamic symbol `%s'%pB: non-pic relocation against symbol %s%pB: not enough room for program headers, try linking with -N%pB: not enough version information%pB: only registers %%g[2367] can be declared using STT_REGISTER%pB: out of memory creating name for empty section%pB: out of memory in _bfd_elf_get_property%pB: page size is too large (0x%x)%pB: pc-relative relocation against dynamic symbol %s%pB: pc-relative relocation against undefined weak symbol %s%pB: plugin needed to handle lto object%pB: probably compiled without -fPIC?%pB: protected symbol `%s' isn't defined%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive%pB: register relocation against non-register symbol: %s in %pA%pB: register relocation against non-register symbol: (unknown) in %pA%pB: reloc against a non-existent symbol index: %ld%pB: relocatable link from %s to %s not supported%pB: relocation %s against %s%s`%s' can not be used when making %s%s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported%pB: relocation %s against `%s' can not be used when making a shared object%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against symbol `%s' isn't supported in x32 mode%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC%pB: relocation %s can not be used when making a shared object; recompile with -fPIC%pB: relocation %s cannot be used when making a shared object%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object%pB: relocation size mismatch in %pB section %pA%pB: relocations in generic ELF (EM: %d)%pB: relocs in section `%pA', but it has no contents%pB: section %pA: string table overflow at offset %ld%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %d%pB: section group entry number %u is corrupt%pB: sh_link [%d] in section `%pA' is incorrect%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'%pB: size field is zero in Import Library Format header%pB: special symbol `%s' only allowed for ARMv8-M architecture or later%pB: speculation fixup to dynamic symbol %s%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: support for local dynamic not implemented%pB: symbol `%s' has unrecognized csect type %d%pB: symbol `%s' has unrecognized smclas %d%pB: symbol `%s' required but not present%pB: symbol indicates overlay (not supported)%pB: taking the address of protected function '%s' cannot be done when making a shared library%pB: the target (%s) of a %s relocation is in the wrong output section (%s)%pB: the target (%s) of an %s relocation is in the wrong section (%pA)%pB: too many sections (%d)%pB: too many sections: %d (>= %d)%pB: too many sections: %u%pB: tp-relative relocation against dynamic symbol %s%pB: unable to create fake empty section%pB: unable to fill in DataDictionary[12] because .idata$5 is missing%pB: unable to fill in DataDictionary[1] because .idata$2 is missing%pB: unable to fill in DataDictionary[1] because .idata$4 is missing%pB: unable to fill in DataDictionary[9] because __tls_used is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing%pB: unable to find %s veneer `%s'%pB: unable to find name for empty section%pB: unable to get decompressed section %pA%pB: unable to initialize compress status for section %s%pB: unable to initialize decompress status for section %s%pB: unable to load COMDAT section name%pB: unable to sort relocs - they are in more than one size%pB: unable to sort relocs - they are of an unknown size%pB: undefined reference to symbol '%s'%pB: undefined sym `%s' in .opd section%pB: undefined symbol on R_PPC64_TOCSAVE relocation%pB: unexpected redefinition of indirect versioned symbol `%s'%pB: unexpected reloc type %u in .opd section%pB: unhandled dynamic relocation against %s%pB: unhandled import type; %x%pB: unhandled sparc machine value '%lu' detected during write processing%pB: unknown architecture %s%pB: unknown load command %#x%pB: unknown mandatory ARC object attribute %d%pB: unknown mandatory EABI object attribute %d%pB: unknown relocation type %d%pB: unknown type [%#x] section `%s'%pB: unknown type [%#x] section `%s' in group [%pA]%pB: unmatched OMIT_FP in %pA%pB: unrecognised machine type (0x%x) in Import Library Format archive%pB: unrecognized import name type; %x%pB: unrecognized import type; %x%pB: unrecognized relocation type %#x in section `%pA'%pB: unrecognized storage class %d for %s symbol `%s'%pB: unsupported AOUT relocation size: %d%pB: unsupported arch %#x%pB: unsupported bfd mach %#lx%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported transition from %s to %s%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
+%pB: uses %s instructions while previous modules use %s instructions%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols%pB: uses different e_flags (%#x) fields than previous modules (%#x)%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)%pB: uses instructions which are incompatible with instructions used in previous modules%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols%pB: version node not found for symbol %s%pB: visibility of symbol `%s' has changed%pB: warning core file truncated%pB: warning: %pA: line number overflow: %#x > 0xffff%pB: warning: %s BLX instruction targets %s function '%s'%pB: warning: %s relocation against symbol `%s' from %pA section%pB: warning: %s unsupported in shared mode%pB: warning: %s: line number overflow: 0x%lx > 0xffff%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section.%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: RVE PLT generation not supported%pB: warning: Weak TLS is implementation defined and may not work as expected%pB: warning: allocated section `%s' not in segment%pB: warning: bad `%s' option size %u smaller than its header%pB: warning: cannot determine the target function for stub section `%s'%pB: warning: claims to have 0xffff relocs, without overflow%pB: warning: duplicate line number information for `%s'%pB: warning: endian mismatch with previous modules%pB: warning: ignoring section flag %s in section %s%pB: warning: illegal symbol in line number entry %d%pB: warning: illegal symbol index %ld in relocs%pB: warning: illegal symbol index 0x%lx in line number entry %d%pB: warning: incompatible elf-versions %s and %s%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)%pB: warning: line number count (%#lx) exceeds section size (%#lx)%pB: warning: line number table read failed%pB: warning: linking PIC files with non-PIC files%pB: warning: linking abicalls files with non-abicalls files%pB: warning: loop in section dependencies detected%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u%pB: warning: multiple symbol tables detected - ignoring the table in section %u%pB: warning: no symbol for section '%s' found%pB: warning: older version of object file encountered, please recompile with current tool chain%pB: warning: relocate SDA_BASE failed%pB: warning: secondary relocation section '%s' for section %pA found - ignoring%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture%pB: warning: sh_link not set for section `%pA'%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
 %pB: warning: thumb-1 mode PLT generation not currently supported%pB: warning: unaligned access to GOT entry%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)%pB: warning: unknown EABI object attribute %d%pB: will not resolve runtime TLS relocation%pB:%d: bad checksum in S-record file%pB:%d: byte count %d too small%pB:%d: unexpected character `%s' in Intel Hex file%pB:%d: unexpected character `%s' in S-record file%pB:%pA%s exceeds overlay size
-%pB:%pA: %s and %s must be in the same input section%pB:%pA: error: relocation references symbol %s which was removed by garbage collection%pB:%pA: error: try relinking with --gc-keep-exported enabled%pB:%pA: table %s missing corresponding %s%pB:%pA: table entry %s not word-aligned within table%pB:%pA: table entry %s outside table%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s%pB:%s has both normal and TLS relocs%pB:%s section %s: alignment 2**%u not representable%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)%pB:%u: bad extended address record length in Intel Hex file%pB:%u: bad extended linear address record length in Intel Hex file%pB:%u: bad extended linear start address length in Intel Hex file%pB:%u: bad extended start address length in Intel Hex file%pB:%u: unrecognized ihex type %u in Intel Hex file%s defined on removed toc entry%s duplicated
+%pB:%pA: %s and %s must be in the same input section%pB:%pA: error: attempting to write into an unallocated compressed section%pB:%pA: error: attempting to write over the end of the section%pB:%pA: error: attempting to write section into an empty buffer%pB:%pA: error: relocation references symbol %s which was removed by garbage collection%pB:%pA: error: try relinking with --gc-keep-exported enabled%pB:%pA: table %s missing corresponding %s%pB:%pA: table entry %s not word-aligned within table%pB:%pA: table entry %s outside table%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s%pB:%s has both normal and TLS relocs%pB:%s section %s: alignment 2**%u not representable%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)%pB:%u: bad extended address record length in Intel Hex file%pB:%u: bad extended linear address record length in Intel Hex file%pB:%u: bad extended linear start address length in Intel Hex file%pB:%u: bad extended start address length in Intel Hex file%pB:%u: unrecognized ihex type %u in Intel Hex file%pcrel_lo section symbol with an addend%s  branch         %lu
+  branch toc adj %lu
+  branch notoc   %lu
+  branch both    %lu
+  long branch    %lu
+  long toc adj   %lu
+  long notoc     %lu
+  long both      %lu
+  plt call       %lu
+  plt call save  %lu
+  plt call notoc %lu
+  plt call both  %lu
+  global entry   %lu%s defined on removed toc entry%s divide by zero%s duplicated
 %s duplicated in %s
 %s has both normal and TLS relocs%s in overlay section%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA%s: TLS reference in %pB mismatches non-TLS reference in %pB%s: no such symbol%s: not implemented%s: not supported%s: undefined version: %s(at bit offset %u)
 (descriptor)
@@ -538,8 +548,8 @@ ppcboot header:
 *unknown**unknown*        , Value: %#08lx
 , alias: %u
 , ext fixup offset: %u, no_opt psect off: %u, subtype: %u (%s)
-, symbol vector rva: - %pB is 64-bit, %pB is not-mips32r2 -mfp64 (12 callee-saved).eh_frame_hdr entry overflow.eh_frame_hdr refers to overlapping FDEs.got section not immediately after .plt section.rsrc merge failure: a directory matches a leaf.rsrc merge failure: differing directory versions.rsrc merge failure: dirs with differing characteristics.rsrc merge failure: duplicate leaf.rsrc merge failure: duplicate leaf: %s.rsrc merge failure: duplicate string resource: %d.rsrc merge failure: multiple non-default manifests32-bit double, 32bits gp relative relocation occurs for an external symbol4-byte4-bytes64 bits *unhandled*
-64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC<Unrecognised flag bits set><corrupt info> %s<corrupt string length: %#x>
+, symbol vector rva: - %pB is 64-bit, %pB is not-march=%s: %s ISA extension not in alphabetical order: '%s' must come before '%s'.-march=%s: %s must separate with _-march=%s: Duplicate %s ISA extension: '%s'-march=%s: Expect number after `%dp'.-march=%s: ISA string is not in canonical order. `%c'-march=%s: ISA string must begin with rv32 or rv64-march=%s: Invalid or unknown %s ISA extension: '%s'-march=%s: `d' extension requires `f' extension-march=%s: `q' extension requires `d' extension-march=%s: first ISA subset must be `e', `i' or `g'-march=%s: rv%de is not a valid base ISA-march=%s: rv32 does not support the `q' extension-march=%s: rv32e does not support the `f' extension-march=%s: unexpected ISA string at end: %s-march=%s: unsupported ISA subset `%c'-mips32r2 -mfp64 (12 callee-saved).eh_frame_hdr entry overflow.eh_frame_hdr refers to overlapping FDEs.got section not immediately after .plt section.rsrc merge failure: a directory matches a leaf.rsrc merge failure: differing directory versions.rsrc merge failure: dirs with differing characteristics.rsrc merge failure: duplicate leaf.rsrc merge failure: duplicate leaf: %s.rsrc merge failure: duplicate string resource: %d.rsrc merge failure: multiple non-default manifests32-bit double, 32bits gp relative relocation occurs for an external symbol4-byte4-bytes64 bits *unhandled*
+64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC; recompile with -fPIE<Unrecognised flag bits set><corrupt info> %s<corrupt string length: %#x>
 <corrupt string offset: %#lx>
 <corrupt><unknown directory type: %d>
 <unknown mask flags><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBFD %s internal error, aborting at %s:%d
@@ -552,7 +562,7 @@ ppcboot header:
 CTL_STLOC (set location)
 Copyright Header
 Corrupt .rsrc section detected!
-DSO missing from command lineDWARF error: DW_AT_comp_dir attribute encountered with a non-string formDWARF error: abstract instance recursion detectedDWARF error: can't find %s section.DWARF error: could not find abbrev number %uDWARF error: found address size '%u', this reader can not handle sizes greater than '%u'DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 informationDWARF error: info pointer extends beyond end of attributesDWARF error: invalid abstract instance DIE refDWARF error: invalid maximum operations per instructionDWARF error: invalid or unhandled FORM value: %#xDWARF error: line info unsupported segment selector size %uDWARF error: mangled line number sectionDWARF error: mangled line number section (bad file number)DWARF error: ran out of room reading opcodesDWARF error: ran out of room reading prologueDWARF error: unhandled .debug_line version %dDWARF error: zero format countDW_EH_PE_datarel unspecified for this architectureDebug DirectoryDebug module table:
+DSO missing from command lineDWARF error: DW_AT_comp_dir attribute encountered with a non-string formDWARF error: abstract instance recursion detectedDWARF error: can't find %s section.DWARF error: could not find abbrev number %uDWARF error: could not find variable specification at offset %lxDWARF error: found address size '%u', this reader can not handle sizes greater than '%u'DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 informationDWARF error: info pointer extends beyond end of attributesDWARF error: invalid abstract instance DIE refDWARF error: invalid maximum operations per instructionDWARF error: invalid or unhandled FORM value: %#xDWARF error: line info unsupported segment selector size %uDWARF error: mangled line number sectionDWARF error: mangled line number section (bad file number)DWARF error: ran out of room reading opcodesDWARF error: ran out of room reading prologueDWARF error: unhandled .debug_line version %dDWARF error: zero format countDW_EH_PE_datarel unspecified for this architectureDebug DirectoryDebug module table:
 Debug symbol table:
 Delay Import DirectoryDeprecated %s called
 Deprecated %s called at %s line %d in %s
@@ -560,7 +570,7 @@ ppcboot header:
 Entry offset        = 0x%.8lx (%ld)
 Error: %pB has both the current and legacy Tag_MPextension_use attributesException Directory [.pdata]Export Directory [.edata (or where ever we found it)]Export Flags 			%lx
 Export RVAFDE encoding in %pB(%pA) prevents .eh_frame_hdr table being createdFDPIC does not yet support %s relocation to become dynamic for executableFILES_VOLUMES    FPU-2.0FPU-3.0Flag field          = 0x%.2x
-Forwarder RVAGALAXY           GOT and PLT relocations cannot be fixed with a non dynamic linkerGOT table size out of rangeGP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
+Forwarder RVAGALAXY           GNU_MBIND section is unsupportedGOT and PLT relocations cannot be fixed with a non dynamic linkerGOT table size out of rangeGP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
 Hard float (32-bit CPU, 64-bit FPU)
 Hard float (32-bit CPU, Any FPU)
 Hard float (MIPS32r2 64-bit FPU 12 callee-saved)
@@ -568,8 +578,8 @@ ppcboot header:
 Hard float (single precision)
 Hard float compat (32-bit CPU, 64-bit FPU)
 Hard or soft float
-ID: %#08lxIDC - Ident Consistency check
-IMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supportedIO               Image activation:  (size=%u)
+IBT and SHSTK propertiesIBT propertyID: %#08lxIDC - Ident Consistency check
+IFUNC symbol %s in dynamic symbol table - IFUNCS are not supportedIMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supportedIO               Image activation:  (size=%u)
 Image activator fixup: (major: %u, minor: %u)
 Image identification: (major: %u, minor: %u)
 Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)
@@ -612,7 +622,7 @@ ppcboot header:
 Removed property %W to merge %pB (not found) and %pB (0x%v)
 Removed property %W to merge %pB and %pB
 Removed property %W to merge %pB and %pB (not found)
-ReservedResource Directory [.rsrc]S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your codeSDA relocation when _SDA_BASE_ not definedSECURITY         SEC_RELOC with no relocs in section %pASHELL            SHRFXDSHRPICSIMD use: SPSC - Shared Image Program section def
+ReservedResource Directory [.rsrc]S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your codeSDA relocation when _SDA_BASE_ not definedSECURITY         SEC_RELOC with no relocs in section %pASHELL            SHRFXDSHRPICSHSTK propertySIMD use: SPSC - Shared Image Program section def
 STABLE           STA_CKARG (compare procedure argument)
 STA_GBL (stack global) %.*s
 STA_LI (stack literal)
@@ -672,11 +682,11 @@ ppcboot header:
 Warning: %s section size (%ld) is smaller than virtual size (%ld)
 Warning: %s section size is zero
 Writing updated armap timestampXGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code.[%u]: Lower: %u, upper: %u
-[abi=16-bit int, [abi=32-bit int, [whose name is lost]_bfd_vms_output_counted called with too many bytes_bfd_vms_output_counted called with zero bytes`%s' refers to a non entry functiona PDE objecta PIE objecta shared objectaddressaddress not word alignedalternate ELF machine code found (%d) in %pB, expecting %darchive has no index; run ranlib to add onearchive object file in wrong formatarray descriptor:
+[abi=16-bit int, [abi=32-bit int, [whose name is lost]__tls_get_addr call offset overflow_bfd_vms_output_counted called with too many bytes_bfd_vms_output_counted called with zero bytes`%s' refers to a non entry functiona PDE objecta PIE objecta shared objectaddressaddress not word alignedalternate ELF machine code found (%d) in %pB, expecting %darchive has no index; run ranlib to add onearchive object file in wrong formatarray descriptor:
 array, dim: %u, bitmap: arsize: %u, a0: 0x%08x
 atomic, type=0x%02x %s
 attempt to convert L32R/CALLX to CALL failedattempt to do relocatable link with %s input and %s outputbad section index in %sbad valuebanked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)base: %u, pos: %u
-bfd_mach_o_canonicalize_symtab: unable to load symbolsbfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)bfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid section %d (max %lu): setting to undefinedbfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid type field 0x%x: setting to undefinedbfd_mach_o_read_symtab_symbol: unable to read %d bytes at %ubfd_mach_o_read_symtab_symbols: unable to allocate memory for symbolsbfd_mach_o_scan: unknown architecture 0x%lx/0x%lxbfd_pef_scan: unknown architecture 0x%lxblkbeg: address: 0x%08x, name: %.*s
+bfd_mach_o_canonicalize_symtab: unable to load symbolsbfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)bfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid section %d (max %lu): setting to undefinedbfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid type field 0x%x: setting to undefinedbfd_mach_o_read_symtab_symbol: unable to read %d bytes at %ubfd_mach_o_scan: unknown architecture 0x%lx/0x%lxbfd_pef_scan: unknown architecture 0x%lxblkbeg: address: 0x%08x, name: %.*s
 blkend: size: 0x%08x
 branch (PC rel16) to section (%s) not supportedbranch to a non-instruction-aligned addressbss-plt forced by profilingbss-plt forced due to %pBcan't build branch stub `%s'can't find branch stub `%s'cannot convert a branch to JALX for a non-word-aligned addresscannot convert a jump to JALX for a non-word-aligned addresscannot create stub entry %scannot emit dynamic relocations in read-only sectioncannot emit fixups in read-only sectioncannot find EMH in first GST record
 cannot read DMT
@@ -697,36 +707,35 @@ ppcboot header:
 cannot read GST record header
 cannot read GST record length
 class: %u, dtype: %u, length: %u, pointer: 0x%08x
-corrupt %s section in %pBcorrupt EEOM record - size is too smallcorrupt EGSD record: its psindx field is too big (%#lx)corrupt EGSD record: its size (%#x) is too smallcorrupt EGSD record: size (%#x) is larger than remaining space (%#x)corrupt EGSD record: size (%#x) is too smallcorrupt EIHD record - size is too smallcorrupt ETIR record encounteredcorrupt vms valuecould not find section %scould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcould not open shared image '%s' from '%s'cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dangerous relocationdelta pc +%-4ddelta_pc_l: +0x%08x
+corrupt %s section in %pBcorrupt EEOM record - size is too smallcorrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)corrupt EGSD record type %d: size (%#x) is too smallcorrupt EGSD record: its psindx field is too big (%#lx)corrupt EGSD record: its size (%#x) is too smallcorrupt EIHD record - size is too smallcorrupt ETIR record encounteredcorrupt vms valuecould not find section %scould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcould not open shared image '%s' from '%s'cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dangerous relocationdangerous relocation errordelta pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
 descdimct: %u, aflags: 0x%02x, digits: %u, scale: %u
 discarded output section: `%pA'discarding zero address range FDE in %pB(%pA).
 discontiguous range (nbr: %u)
-dynamic relocation in read-only sectiondynamic variable `%s' is zero sizedynreloc miscount for %pB, section %pAentry function `%s' disappeared from secure codeenumbeg, len: %u, name: %.*s
+dst_define_location %u too largedynamic relocation in read-only sectiondynamic variable `%s' is zero sizedynreloc miscount for %pB, section %pAentry function `%s' disappeared from secure codeenumbeg, len: %u, name: %.*s
 enumelt, name: %.*s
 enumend
 epilog: flags: %u, count: %u
-error in %pB(%pA); no .eh_frame_hdr table will be createderror reading %s: %serror reading cpu type from elf private dataerror: %pB does not use %s instructions, whereas %pB doeserror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %pB is compiled for the EP9312, whereas %pB is compiled for XScaleerror: %pB needs 8-byte alignment but %pB is set for 4-byte alignmenterror: %pB passes floats in float registers, whereas %pB passes them in integer registerserror: %pB passes floats in integer registers, whereas %pB passes them in float registerserror: %pB requires more array alignment than %pB preserveserror: %pB requires more stack alignment than %pB preserveserror: %pB use %u-byte stack aligned but the output use %u-byte stack aligned.error: %pB uses %s instructions but %pB uses %serror: %pB uses %s instructions, whereas %pB does noterror: %pB uses 64-bit doubles but %pB uses 32-bit doubleserror: %pB uses FPU-3.0 but %pB only supports FPU-2.0error: %pB uses VFP register arguments, %pB does noterror: %pB uses hardware FP, whereas %pB uses software FPerror: %pB uses iWMMXt register arguments, %pB does noterror: %pB uses software FP, whereas %pB uses hardware FPerror: %pB uses the %s code model whereas %pB uses the %s code modelerror: %pB uses the %s data model but %pB only uses MSP430 instructionserror: %pB uses the %s data model whereas %pB uses the %s data modelerror: %pB uses the large code model but %pB uses MSP430 instructionserror: %pB uses the small code model but %pB uses the %s data modelerror: %pB: <corrupt x86 property (0x%x) size: 0x%x>error: %pB: ISA string of input (%s) doesn't match output (%s).error: %pB: Mis-matched ISA string to merge '%s' and '%s'.error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%derror: %pB: SB relative addressing conflicts with use of R9error: %pB: Unspported XLEN (%u), you mightusing wrong emulation.error: %pB: XLEN of input (%u) doesn't match output (%u).error: %pB: big-endian R2 is not supportederror: %pB: cannot mix rf16 with full register set %pBerror: %pB: conflicting CPU architectures %d/%derror: %pB: conflicting ISA extension attributes %s with %serror: %pB: conflicting architecture profiles %c/%cerror: %pB: conflicting attributes %serror: %pB: conflicting attributes %s: %s with %serror: %pB: conflicting priv spec version (major/minor/revision).error: %pB: conflicting use of R9error: %pB: corrupted ISA string '%s'.first letter should be 'i' or 'e' but got '%s'.error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchainerror: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'error: %pB: old incompatible object file detectederror: %pB: size of section %pA is not multiple of address sizeerror: %pB: unable to merge CPU base attributes %s with %serror: %pB: unable to merge ISA extension attributes %serror: %pB: unable to merge virtualization attributes with %pBerror: %pB: unknown CPU architectureerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: fp16 format mismatch between %pB and %pBerror: inappropriate relocation type for shared library (did you forget -fpic?)error: source object %pB has EABI version %d, but target %pB has EABI version %derror: the ARC4 architecture is no longer supportederror: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %pBerror: unknown Tag_ABI_array_object_alignment value in %pBerrors encountered processing file %pBexecutablefailed to allocate space for new APUinfo sectionfailed to compute new APUinfo sectionfailed to find previous HI16 relocfailed to install new APUinfo sectionfailed to update file offsets in debug directoryfatal error while creating .fixupfile format is ambiguousfile format not recognizedfile in wrong formatfile too bigfile truncatedfurther warnings about FDE encoding preventing .eh_frame_hdr generation droppedgeneric linker can't handle %sglobal pointer relative address out of rangeglobal pointer relative relocation at address 0x%08x when _gp not defined
-global pointer relative relocation when _gp not definedhidden symbolhidden symbol incompatible cputypes in mach-o files: %ld vs %ldincr_linum(b): +%u
+error in %pB(%pA); no .eh_frame_hdr table will be createderror reading %s: %serror reading cpu type from elf private dataerror: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memoryerror: %pB does not use %s instructions, whereas %pB doeserror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %pB is compiled for the EP9312, whereas %pB is compiled for XScaleerror: %pB needs 8-byte alignment but %pB is set for 4-byte alignmenterror: %pB passes floats in float registers, whereas %pB passes them in integer registerserror: %pB passes floats in integer registers, whereas %pB passes them in float registerserror: %pB requires more array alignment than %pB preserveserror: %pB requires more stack alignment than %pB preserveserror: %pB use %u-byte stack aligned but the output use %u-byte stack aligned.error: %pB uses %s instructions but %pB uses %serror: %pB uses %s instructions, whereas %pB does noterror: %pB uses 64-bit doubles but %pB uses 32-bit doubleserror: %pB uses FPU-3.0 but %pB only supports FPU-2.0error: %pB uses VFP register arguments, %pB does noterror: %pB uses hardware FP, whereas %pB uses software FPerror: %pB uses iWMMXt register arguments, %pB does noterror: %pB uses software FP, whereas %pB uses hardware FPerror: %pB uses the %s code model whereas %pB uses the %s code modelerror: %pB uses the %s data model but %pB only uses MSP430 instructionserror: %pB uses the %s data model whereas %pB uses the %s data modelerror: %pB uses the large code model but %pB uses MSP430 instructionserror: %pB uses the small code model but %pB uses the %s data modelerror: %pB: <corrupt AArch64 used size: 0x%x>error: %pB: <corrupt x86 property (0x%x) size: 0x%x>error: %pB: ISA string of input (%s) doesn't match output (%s).error: %pB: Mis-matched ISA string to merge '%s' and '%s'.error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%derror: %pB: SB relative addressing conflicts with use of R9error: %pB: Unsupported XLEN (%u), you might be using wrong emulation.error: %pB: XLEN of input (%u) doesn't match output (%u).error: %pB: big-endian R2 is not supportederror: %pB: cannot mix rf16 with full register set %pBerror: %pB: conflicting CPU architectures %d/%derror: %pB: conflicting ISA extension attributes %s with %serror: %pB: conflicting architecture profiles %c/%cerror: %pB: conflicting attributes %serror: %pB: conflicting attributes %s: %s with %serror: %pB: conflicting use of R9error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but got '%s'.error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchainerror: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'error: %pB: old incompatible object file detectederror: %pB: size of section %pA is not multiple of address sizeerror: %pB: unable to merge CPU base attributes %s with %serror: %pB: unable to merge ISA extension attributes %serror: %pB: unable to merge virtualization attributes with %pBerror: %pB: unknown CPU architectureerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: fp16 format mismatch between %pB and %pBerror: inappropriate relocation type for shared library (did you forget -fpic?)error: source object %pB has EABI version %d, but target %pB has EABI version %derror: the ARC4 architecture is no longer supportederror: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %pBerror: unknown Tag_ABI_array_object_alignment value in %pBerrors encountered processing file %pBexecutablefailed to allocate space for new APUinfo sectionfailed to compute new APUinfo sectionfailed to find previous HI16 relocfailed to install new APUinfo sectionfailed to update file offsets in debug directoryfatal error while creating .fixupfile format is ambiguousfile format not recognizedfile in wrong formatfile too bigfile truncatedfurther warnings about FDE encoding preventing .eh_frame_hdr generation droppedgeneric linker can't handle %sglobal pointer relative address out of rangeglobal pointer relative relocation when _gp not definedhidden symbolhidden symbol incompatible cputypes in mach-o files: %ld vs %ldincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
 indirect, defined at 0x%08x
-internal error: RL78 reloc stack overflowinternal error: RL78 reloc stack underflowinternal error: addend should be zero for %sinternal error: branch/jump to an odd address detectedinternal error: dangerous errorinternal error: dangerous relocationinternal error: merge of architecture '%s' with architecture '%s' produced unknown architectureinternal error: out of range errorinternal error: suspicious relocation type used in shared libraryinternal error: unknown errorinternal error: unsupported relocation errorinternal inconsistency in size of .got.loc sectioninternal inconsistency: remaining %lu != max %lu; please report this buginternal symbolinternal symbol invalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or assemble using "-no-expand" (for gcc, "-Wa,-no-expand"invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or compile using the gcc-option "-mno-base-addresses".invalid operationinvalid output section for .eh_frame_entry: %pAinvalid relocation addressinvalid section index in ETIRinvalid use of %s with contextsip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.is this version of the linker - %s - out of date ?jump (PC rel26) to section (%s) not supportedjump to a non-instruction-aligned addressjump to a non-word-aligned addresslabel, name: %.*s
+internal error: RL78 reloc stack overflowinternal error: RL78 reloc stack underflowinternal error: addend should be zero for %sinternal error: branch/jump to an odd address detectedinternal error: dangerous errorinternal error: dangerous relocationinternal error: merge of architecture '%s' with architecture '%s' produced unknown architectureinternal error: out of range errorinternal error: relocation not supportedinternal error: suspicious relocation type used in shared libraryinternal error: unknown errorinternal error: unsupported relocation errorinternal inconsistency in size of .got.loc sectioninternal inconsistency: remaining %lu != max %lu; please report this buginternal symbolinternal symbol invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or assemble using "-no-expand" (for gcc, "-Wa,-no-expand"invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or compile using the gcc-option "-mno-base-addresses".invalid operationinvalid output section for .eh_frame_entry: %pAinvalid relocation addressinvalid section index in ETIRinvalid use of %s with contextsip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.is this version of the linker - %s - out of date ?jump (PC rel26) to section (%s) not supportedjump to a non-instruction-aligned addressjump to a non-word-aligned addresslabel, name: %.*s
 len: %2u, kind: %2u line num  (len: %u)
 linkable imagelinker stubs in %u group
 linker stubs in %u groups
 literalliteral relocation occurs for an external symbollong branch stub `%s' offset overflowmach-o: there are too many sections (%u) maximum is 255,
-malformed archivememory exhaustedmep: no reloc for code %dmodbeg
+malformed archivemalformed mach-o ARM half sectdiff reloc: invalid length: %dmalformed mach-o ARM local sectdiff reloc: invalid length: %dmalformed mach-o ARM reloc pair: invalid length: %dmalformed mach-o ARM reloc pair: reloc is first relocmalformed mach-o ARM reloc: unknown reloc type: %dmalformed mach-o ARM sectdiff reloc: invalid length: %dmalformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)malformed mach-o reloc: section index is greater than the number of sectionsmemory exhaustedmep: no reloc for code %dmodbeg
 modend
 name: [val: %08lx len %d]: nativenew entry function(s) introduced but no output import library specified:nono address assigned to the veneers output section %sno errorno more archived filesno symbolsnon-contiguous array of %s
-non-dynamic relocations refer to dynamic symbol %snon-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store
+non-dynamic relocations refer to dynamic symbol %snon-dynamic symbol %s in dynamic symbol tablenon-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store
 non-zero addend in @fptr relocnonenonrepresentable section on outputnot enough GOT space for local GOT entriesnot enough memory to sort relocationsnot mapping: data=%lx mapped=%d
 not mapping: env var not set
 not setobject module not error-free !offset of veneer for entry function `%s' not a multiple of its sizeone possible cause of this error is that the symbol is being referenced in the indicated code as if it had a larger alignment than was declared where it was definedout of rangeoverflow after relaxationoverlay stub relocation overflowpointer
 private flags = %lxprivate flags = %lx:private flags = %lx: private flags = 0x%lxprivate flags = 0x%lx:prolog: bkpt address 0x%08x
 protected symbolprotected symbol recbeg: name: %.*s
 recend
-reference to a banked address [%lx:%04lx] in the normal address space at %04lxreference to the far symbol `%s' using a wrong relocation may result in incorrect executionregregister %%g%d used incompatibly: %s in %pB, previously %s in %pBregister section has contents
+record is too small for symbol name lengthreference to a banked address [%lx:%04lx] in the normal address space at %04lxreference to the far symbol `%s' using a wrong relocation may result in incorrect executionregregister %%g%d used incompatibly: %s in %pB, previously %s in %pBregister section has contents
 reloc (%d) is *UNKNOWN*relocation for non-REL psectrelocation out of rangerelocation references symbol not defined in the modulerelocation requires zero addendrelocation should be even numberrelocations between different segments are not supportedremoving unused section '%pA' in file '%pB'reopening %pB: %s
 reserved cmd %drtnbeg
 rtnend: size 0x%08x
@@ -735,39 +744,39 @@ ppcboot header:
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-shared objectsize error in section %pAsmall-data section exceeds 64KB; lower small-data size limit (see option -G)som_sizeof_headers unimplementedsorry, no support for duplicate object files in auto-overlay script
+shared objectsize error in section %pAsmall-data section exceeds 64KB; lower small-data size limit (see option -G)som_sizeof_headers unimplementedsorry, cannot handle this filesorry, no support for duplicate object files in auto-overlay script
 sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands.source (len: %u)
 spurious ALPHA_R_BSR relocstack analysis will ignore the call from %s to %s
 stack overflow (%d) in _bfd_vms_pushstack underflow in _bfd_vms_popstandard data: %s
-start address of `%s' is different from previous linkstatic procedure (no name)stubs don't match calculated sizesymbolsymbol symbol '%s' has invalid st_other for ABI version 1symbol `%s' has differing types: REGISTER in %pB, previously %s in %pBsymbol needs debug section which does not existsystem call errorsystem version array information:
+start address of `%s' is different from previous linkstatic procedure (no name)stubs don't match calculated sizesymbolsymbol symbol '%s' has invalid st_other for ABI version 1symbol `%s' has differing types: REGISTER in %pB, previously %s in %pBsymbol binding STB_GNU_UNIQUE is unsupportedsymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is unsupportedsystem call errorsystem version array information:
 term(b): 0x%02xterm_w: 0x%04xthe bfin target does not currently support the generation of copy relocationsthere is a conflict merging the ELF header flags from %pBtoo many GOT entries for -fpic, please recompile with -fPICtry enabling relaxation to avoid relocation truncationstype spec for element:
 type spec for subscript %u:
 typed pointer
 typspec (len: %u)
-unable to allocate data for load command %#xunable to find %s glue '%s' for '%s'unable to find equivalent output section for symbol '%s' from section '%s'unable to layout unknown load command %#xunable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because the offset (%d) is out of the allowed range, -32678 to 32767
-unable to read EIHS record at offset %#xunable to read in %s section from %pBunable to write unknown load command %#xunaligned bit-string of %s
-undefined undefined %s reference in complex symbol: %sunexpected STO_SH5_ISA32 on local symbol is not handledunexpected machine numberunhandled OSF/1 core file section type %dunhandled egsd entry type %u
+unable to allocate data for load command %#xunable to find %s glue '%s' for '%s'unable to find equivalent output section for symbol '%s' from section '%s'unable to layout unknown load command %#xunable to read EIHS record at offset %#xunable to read in %s section from %pBunable to write unknown load command %#xunaligned bit-string of %s
+undefined undefined %s reference in complex symbol: %sunexpected machine numberunhandled OSF/1 core file section type %dunhandled egsd entry type %u
 unhandled emh subtype %u
-unhandled relocation %sunknownunknown EGSD subtype %dunknown ETIR command %dunknown basic type %dunknown errorunknown header byte-order value %#xunknown line command %dunknown operator '%c' in complex symbolunknown reloc %sunknown reloc %s + %sunknown source command %dunknown symbol in command %sunknown v850 architectureunknown: %xunrecognized INPUT_SECTION_FLAG %s
-unrecognized TI COFF target id '0x%x'unsupported .stab relocationunsupported STA cmd %sunsupported relocunsupported relocationunsupported relocation between data/insn address spacesunsupported relocation typeunsupported relocation type %#xusing multiple gp valuesv850 E3 architecturev850 architecturev850e architecturev850e1 architecturev850e2 architecturev850e2v3 architecturev850e3v5 architecturevariable `%s' can only be in one of the small, zero, and tiny data regionsvariable `%s' cannot be in both small and tiny data regions simultaneouslyvariable `%s' cannot be in both small and zero data regions simultaneouslyvariable `%s' cannot be in both zero and tiny data regions simultaneouslyvariable `%s' cannot occupy in multiple small data regionsvflags: 0x%02x, value: 0x%08x vma:			BeginAddress	 EndAddress	  UnwindData
+unhandled relocation %sunknownunknown EGSD subtype %dunknown ETIR command %dunknown attribute for symbol `%s': 0x%02xunknown basic type %dunknown errorunknown header byte-order value %#xunknown line command %dunknown operator '%c' in complex symbolunknown reloc %sunknown reloc %s + %sunknown source command %dunknown symbol in command %sunknown v850 architectureunknown: %xunrecognized INPUT_SECTION_FLAG %s
+unrecognized TI COFF target id '0x%x'unsupported .stab relocationunsupported STA cmd %sunsupported relocunsupported relocationunsupported relocation between data/insn address spacesunsupported relocation typeusing multiple gp valuesv850 E3 architecturev850 architecturev850e architecturev850e1 architecturev850e2 architecturev850e2v3 architecturev850e3v5 architecturevariable `%s' can only be in one of the small, zero, and tiny data regionsvariable `%s' cannot be in both small and tiny data regions simultaneouslyvariable `%s' cannot be in both small and zero data regions simultaneouslyvariable `%s' cannot be in both zero and tiny data regions simultaneouslyvariable `%s' cannot occupy in multiple small data regionsvflags: 0x%02x, value: 0x%08x vma:			BeginAddress	 EndAddress	  UnwindData
 warning, .pdata section size (%ld) is not a multiple of %d
-warning: %pB and %pB differ in wchar_t sizewarning: %pB and %pB differ in whether code is compiled for DSBTwarning: %pB does not support interworking, whereas %pB doeswarning: %pB has a corrupt section with a size (%warning: %pB has a corrupt string table index - ignoringwarning: %pB supports interworking, whereas %pB does notwarning: %pB uses %s (set by %pB), %pB uses %swarning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may failwarning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may failwarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB: conflicting platform configurationwarning: %pB: conflicting platform configuration %s with %swarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lxwarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%xwarning: %pB: corrupt no copy on protected size: 0x%xwarning: %pB: corrupt stack size: 0x%xwarning: %pB: local symbol `%s' has no sectionwarning: %pB: unknown ARC object attribute %dwarning: %pB: unknown EABI object attribute %dwarning: %pB: unknown MSPABI object attribute %dwarning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%xwarning: %s exceeds section size
+warning: %pB and %pB differ in wchar_t sizewarning: %pB and %pB differ in whether code is compiled for DSBTwarning: %pB does not support interworking, whereas %pB doeswarning: %pB has a corrupt section with a size (%warning: %pB has a corrupt string table index - ignoringwarning: %pB supports interworking, whereas %pB does notwarning: %pB use privilege spec version %u.%u.%u but the output use version %u.%u.%u.warning: %pB uses %s (set by %pB), %pB uses %swarning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may failwarning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may failwarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB: conflicting platform configurationwarning: %pB: conflicting platform configuration %s with %swarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lxwarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%xwarning: %pB: corrupt no copy on protected size: 0x%xwarning: %pB: corrupt stack size: 0x%xwarning: %pB: local symbol `%s' has no sectionwarning: %pB: unknown ARC object attribute %dwarning: %pB: unknown EABI object attribute %dwarning: %pB: unknown MSPABI object attribute %dwarning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%xwarning: %s exceeds section size
 warning: %s overlaps %s
-warning: %s section has zero sizewarning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: RL78_SYM reloc with an unknown symbolwarning: RX_SYM reloc with an unknown symbolwarning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pAwarning: alignment %u of symbol `%s' in %pB is smaller than %u in %pBwarning: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %pBwarning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with itwarning: clearing the interworking flag of %pB due to outside requestwarning: corrupt unwind data
-warning: discarding dynamic section %swarning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%swarning: gc-sections option ignoredwarning: generating a shared library containing non-PIC codewarning: generating a shared library containing non-PID codewarning: not setting interworking flag of %pB since it has already been specified as non-interworkingwarning: relocation references a different segmentwarning: section '%s' is being made into a notewarning: section `%pA' type changed to PROGBITSwarning: symbol `%s' is both section and non-sectionwarning: type and size of dynamic symbol `%s' are not definedwarning: type of symbol `%s' changed from %d to %d in %pBwarning: unable to set size of %s section in %pBwarning: unable to update contents of %s section in %pBwarning: unrecognized arch eflag '%#lx'warning: unset or old architecture flags; use default machinewarning: writing archive was slow: rewriting timestampwarning: writing section `%pA' at huge (ie negative) file offsetwarning: xdata section corrupt
-yesyou are not allowed to define %s in a scriptProject-Id-Version: bfd-2.31.90
+warning: %s section has zero sizewarning: %s should be used rather than %swarning: --enable-non-contiguous-regions discards section `%s' from '%s'
+warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: RL78_SYM reloc with an unknown symbolwarning: RX_SYM reloc with an unknown symbolwarning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pAwarning: alignment %u of symbol `%s' in %pB is smaller than %u in %pBwarning: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %pBwarning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with itwarning: clearing the interworking flag of %pB due to outside requestwarning: corrupt unwind data
+warning: discarding dynamic section %swarning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%swarning: gc-sections option ignoredwarning: generating a shared library containing non-PIC codewarning: generating a shared library containing non-PID codewarning: not setting interworking flag of %pB since it has already been specified as non-interworkingwarning: privilege spec version 1.9.1 can not be linked with other spec versions.warning: relocation references a different segmentwarning: section '%s' is being made into a notewarning: section `%pA' type changed to PROGBITSwarning: symbol `%s' is both section and non-sectionwarning: type and size of dynamic symbol `%s' are not definedwarning: type of symbol `%s' changed from %d to %d in %pBwarning: unable to set size of %s section in %pBwarning: unable to update contents of %s section in %pBwarning: unrecognized arch eflag '%#lx'warning: unset or old architecture flags; use default machinewarning: writing archive was slow: rewriting timestampwarning: writing section `%pA' at huge (ie negative) file offsetwarning: xdata section corrupt
+yesyou are not allowed to define %s in a scriptProject-Id-Version: bfd-2.34.90
 Report-Msgid-Bugs-To: bug-binutils@gnu.org
-POT-Creation-Date: 2019-01-19 16:30+0000
-PO-Revision-Date: 2019-01-20 17:21+0000
-Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>
+POT-Creation-Date: 2020-07-04 10:26+0100
+PO-Revision-Date: 2020-07-05 07:27+0100
+Last-Translator: Pedro Albuquerque <pmra@protonmail.com>
 Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>
 Language: pt
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 X-Bugs: Report translation errors to the Language-Team address.
-Plural-Forms: nplurals=2; plural=n != 1;\n
-X-Generator: Gtranslator 2.91.7
+Plural-Forms: nplurals=2; plural=(n != 1);
+X-Generator: Geany / PoHelper 1.36
 	    TLS: %pA	<corrupto: 0x%04lx>	Tabela end. exportaÃ§Ã£o 			Tabela end. exportaÃ§Ã£o 		%08lx
 	rva de tabela de end. de exportaÃ§Ã£o (0x%lx) ou total de entradas (0x%lx) invÃ¡lidos
 	rva de tabela de ponteiro de nome (0x%lx) ou total de entradas (0x%lx) invÃ¡lidos
@@ -957,19 +966,7 @@ cabeÃ§alho ppcboot:
   EGSD (tam=%u):
   entrada EGSD %2u (tipo: %u, tamanho: %u):   EMH %u (tam=%u):   base: 0x%08x %08x, tam.: 0x%08x, prot: 0x%08x   base_va : 0x%08x
   bitcount: %u, endereÃ§o base: 0x%08x
-  branch         %lu
-  branch toc adj %lu
-  branch notoc   %lu
-  branch both    %lu
-  long branch    %lu
-  long toc adj   %lu
-  long notoc     %lu
-  long both      %lu
-  plt call       %lu
-  plt call save  %lu
-  plt call notoc %lu
-  plt call both  %lu
-  global entry   %lu  chamadas:
+  chamadas:
   chgprtoff : %5u
   codeadroff: %5u, lpfixoff  : %5u
   fixuplnk: 0x%08x %08x
@@ -1026,8 +1023,15 @@ cabeÃ§alho ppcboot:
      		EndereÃ§o Tam.     Tam.     32b exc  Gestor    Dados
  vma:            Dica    Hora      AvanÃ§o   DLL       Prim.
                  Tabela  Selo      Cadeia   Nome      Thunk
-#<CÃ³digo de erro invÃ¡lido>%03x %*.s  Folha: End.: %#08lx, Tamanho: %#08lx, Codepage: %d
+#<CÃ³digo de erro invÃ¡lido>%%X%%P: relocalizaÃ§Ã£o %s contra "%s" nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC
+%%X%%P: relocalizaÃ§Ã£o %s insolÃºvel contra sÃ­mbolo "%s"
+%03x %*.s  Folha: End.: %#08lx, Tamanho: %#08lx, Codepage: %d
 %03x %*.s Entrada: %C: aviso: relocalizaÃ§Ã£o para "%s" referencia um segmento diferente
+%F%P: %pB(%pA): erro: necessÃ¡ria secÃ§Ã£o linked-to para --gc-sections
+%F%P: %pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo absoluto "%s" na secÃ§Ã£o "%pA" nÃ£o Ã© permitida
+%F%P: impossÃ­vel atribuir "%pA" a uma secÃ§Ã£o de saÃ­da. Repita sem --enable-non-contiguous-regions.
+%F%P: impossÃ­vel atribuir "%pA" a uma secÃ§Ã£o de saÃ­da. Repita sem --enable-non-contiguous-regions.
+%F%P: impossÃ­vel atribuir o grupo %pA, alvo %pA a uma secÃ§Ã£o de saÃ­da. Repita sem --enable-non-contiguous-regions.
 %F%P: already_linked_table: %E
 %F%P: erro de auto-sobreposiÃ§Ã£o: %E
 %F%P: impossÃ­vel construir fictÃ­cios de sobreposiÃ§Ã£o: %E
@@ -1076,23 +1080,22 @@ cabeÃ§alho ppcboot:
 %H: erro: %s contra "%s" nÃ£o Ã©  mÃºltiplo de %u
 %H: erro: %s nÃ£o Ã© mÃºltiplo de %u
 %H: transporte em ramo fixup
+%H: optimizaÃ§Ã£o got/toc nÃ£o suportada para a instruÃ§Ã£o %s
 %H: adenda nÃ£o-zero em reloc %s contra "%s"
 %H: reloc contra "%s" referencia um segmento diferente
 %H: reloc contra "%s": %s
 %H: relocalizaÃ§Ã£o %s para funÃ§Ã£o indirecta %s nÃ£o suportada
 %H: relocalizaÃ§Ã£o referencia sÃ­mbolo nÃ£o definido no mÃ³dulo
 %H: relocalizaÃ§Ã£o para "%s+%v" poderÃ¡ ter causado o erro acima
-%H: optimizaÃ§Ã£o toc nÃ£o Ã© suportada para instreuÃ§Ãµes %s.
 %H: %s insolÃºvel contra "%T"
 %H: relocalizaÃ§Ã£o %s insolÃºvel contra sÃ­mbolo "%s"
 %H: aviso: %s insn %#x inesperado.
 %P%F: --relax e -r nÃ£o podem ser usadas em conjunto
 %P%X: impossÃ­vel ler os sÃ­mbolos: %E
-%P%X: segmento sÃ³ de leitura tem relocalizaÃ§Ãµes dinÃ¢micas IFUNC; recompile com -fPIC
 %P%X: segmento sÃ³ de leitura tem relocalizaÃ§Ãµes dinÃ¢micas.
-%P: %pB: relocalizaÃ§Ã£o %s ainda nÃ£o Ã© suportada para sÃ­mbolo %s
 %P: %H: erro: %s com instruÃ§Ã£o inesperada %x
 %P: %pB: %s nÃ£o Ã© suportado para "%T"
+%P: %pB: aviso: %s em falta
 %P: %pB: aviso: relocalizaÃ§Ã£o contra "%s" em secÃ§Ã£o sÃ³ de leitura "%pA"
 %P: %pB: aviso: relocalizaÃ§Ã£o em secÃ§Ã£o sÃ³ de leitura "%pA"
 %P: impossÃ­vel encontrar entrada opd toc para "%T"
@@ -1101,7 +1104,9 @@ cabeÃ§alho ppcboot:
 %P: erro na tabela de ligaÃ§Ã£o contra "%T"
 %P: mÃºltiplos pontos de entrada: nos mÃ³dulos %pB e %pB
 %P: ligaÃ§Ã£o relocalizÃ¡vel nÃ£o suportada
-%P: aviso: a criar uma DT_TEXTREL num objecto partilhado.
+%P: warning: funÃ§Ãµes indirectas GNU com DT_TEXTREL podem resultar numa segfault na execuÃ§Ã£o; recompile com %s
+%P: aviso: a criar DT_TEXTREL num PIE.
+%P: aviso: a criar DT_TEXTREL num objecto partilhado.
 %P: aviso: relocalizaÃ§Ãµes de texto e funÃ§Ãµes indirectas GNU podem resultar em segfault em tempo de execuÃ§Ã£o
 %X%C: relocalizaÃ§Ã£o para "%s" referencia um segmento diferente
 %X%H: chamada @local a ifunc %s
@@ -1111,10 +1116,14 @@ cabeÃ§alho ppcboot:
 %X%H: ramo nÃ£o suportado entre modos ISA
 %X%H: bss-plt -fPIC ifunc %s nÃ£o suportada
 %X%H: salto nÃ£o suportado entre modos ISA; considere recompilar com interlinking activado
+%X%P: %H: %s relocalizaÃ§Ã£o nÃ£o suportada para bss-plt
 %X%P: %pB(%pA): erro: relocalizaÃ§Ã£o para desvio %V nÃ£o tem valor
 %X%P: %pB(%pA): relocalizaÃ§Ã£o "%R" sai fora do intervalo
 %X%P: %pB(%pA): relocalizaÃ§Ã£o "%R" nÃ£o Ã© suportada
 %X%P: %pB(%pA): relocalizaÃ§Ã£o "%R" devolve um valor nÃ£o reconhecido %x
+%X%P: %pB: %s contra %pT nÃ£o Ã© suportado por glibc como relocalizaÃ§Ã£o dinÃ¢mica
+%X%P: %pB: erro: %s em falta
+%X%P: tentada ligaÃ§Ã£o estÃ¡tica de objecto dinÃ¢mico "%pB"
 %X%P: erro interno: erro fora do intervalo
 %X%P: erro interno: erro desconhecido
 %X%P: erro interno: erro relocalizaÃ§Ã£o nÃ£o suportada
@@ -1127,22 +1136,22 @@ cabeÃ§alho ppcboot:
 %X"%s" referenciado na secÃ§Ã£o "%pA" de %pB: definido em secÃ§Ã£o descartada "%pA" de %pB
 %pA tem secÃ§Ãµes ordenadas ["%pA" em %pB] e desordenadas ["%pA" em %pB] em simultÃ¢neo%pA tem secÃ§Ãµes ordenadas e desordenadas em simultÃ¢neo%pA:0x%v lrlive .brinfo (%u) difere da anÃ¡lise (%u)
 %pA:0x%v nÃ£o encontrado na tabela de funÃ§Ã£o
-%pB (%s): bandeira de secÃ§Ã£o %s (%#lx) ignorada%pB .opd nÃ£o permitida na versÃ£o ABI %d%pB e %pB sÃ£o para configuraÃ§Ãµes diferentes%pB e %pB sÃ£o para cores diferentes%pB contÃ©m cÃ³digo CRIS v32, incompatÃ­vel com os objectos anteriores%pB contÃ©m cÃ³digo nÃ£o-CRIS-v32, incompatÃ­vel com os objectos anteriores%pB tem ambos os atributos Tag_MPextension_use actual e legado%pB nÃ£o tem permissÃ£o para definir %s%pB secÃ§Ã£o %pA excede tamanho de grupo de fictÃ­cio%pB nÃºmero de sÃ­mbolo %lu referencia secÃ§Ã£o SHT_SYMTAB_SHNDX nÃ£o existente%pB usa 64-bit long double, %pB usa 128-bit long double%pB usa AltiVec vector ABI, %pB usa SPE vector ABI%pB usa IBM long double, %pB usa IEEE long double%pB usa vÃ­rgula rÃ­gida de precisÃ£o dupla, %pB usa vÃ­rgula rÃ­gida de precisÃ£o simples%pB usa vÃ­rgula rÃ­gida, %pB usa vÃ­rgula suave%pB usa r3/r4 para pequenas devoluÃ§Ãµes de estrutura, %pB usa a memÃ³ria%pB usa e_flags 0x%lx desconhecido%pB(%pA): erro: chamada a funÃ§Ã£o nÃ£o definida "%s"%pB(%pA): erro interno: relocalizaÃ§Ã£o perigosa%pB(%pA): erro interno: erro fora do intervalo%pB(%pA): erro interno: erro desconhecido%pB(%pA): erro interno: erro relocalizaÃ§Ã£o nÃ£o suportada%pB(%pA): tabela de propriedade invÃ¡lida%pB(%pA): mÃºltiplos modelos TLS nÃ£o sÃ£o suportados%pB(%pA): relocalizaÃ§Ã£o %d tem Ã­ndice de sÃ­mbolos invÃ¡lido %ld%pB(%pA): encontrado sÃ­mbolo de biblioteca partilhada %s ao realizar ligaÃ§Ã£o estÃ¡tica%pB(%pA): aviso: o uso de folhas de ramos longos na secÃ§Ã£o com atributo de secÃ§Ã£o SHF_ARM_PURECODE sÃ³ Ã© suportado para alvos M-profile que implementem a instruÃ§Ã£o movw.%pB(%pA): aviso: acesso nÃ£o alinhado ao sÃ­mbolo "%s" na Ã¡rea de dados pequenos%pB(%pA): aviso: acesso nÃ£o alinhado a dados pequenos de tipo %d.%pB(%pA+%#lx): entrada Stabs tem Ã­ndice de cadeia invÃ¡lido.%pB(%pA+%#x): erro: detectada mÃºltipla carga em bloco de instruÃ§Ã£o IT nÃ£o-Ãºltimo: impossÃ­vel gerar folha STM32L4XX.
+%pB (%s): bandeira de secÃ§Ã£o %s (%#lx) ignorada%pB .opd nÃ£o permitida na versÃ£o ABI %d%pB e %pB sÃ£o para configuraÃ§Ãµes diferentes%pB e %pB sÃ£o para cores diferentes%pB contÃ©m cÃ³digo CRIS v32, incompatÃ­vel com os objectos anteriores%pB contÃ©m cÃ³digo nÃ£o-CRIS-v32, incompatÃ­vel com os objectos anteriores%pB tem ambos os atributos Tag_MPextension_use actual e legado%pB nÃ£o tem permissÃ£o para definir %s%pB secÃ§Ã£o %pA excede tamanho de grupo de fictÃ­cio%pB nÃºmero de sÃ­mbolo %lu referencia secÃ§Ã£o SHT_SYMTAB_SHNDX nÃ£o existente%pB usa 64-bit long double, %pB usa 128-bit long double%pB usa AltiVec vector ABI, %pB usa SPE vector ABI%pB usa IBM long double, %pB usa IEEE long double%pB usa vÃ­rgula rÃ­gida de precisÃ£o dupla, %pB usa vÃ­rgula rÃ­gida de precisÃ£o simples%pB usa vÃ­rgula rÃ­gida, %pB usa vÃ­rgula suave%pB usa r3/r4 para pequenas devoluÃ§Ãµes de estrutura, %pB usa a memÃ³ria%pB usa e_flags 0x%lx desconhecido%pB(%pA): erro: chamada a funÃ§Ã£o nÃ£o definida "%s"%pB(%pA): erro: relocs internos em falta para a secÃ§Ã£o de relocalizaÃ§Ã£o secundÃ¡ria %pB:%pA: erro: a entrada %u da tabela de relocalizaÃ§Ã£o estÃ¡ vazia%pB(%pA): erro: a relocalizaÃ§Ã£o secundÃ¡ria %u tem um tipo desconhecido%pB(%pA): erro: a relocalizaÃ§Ã£o secundÃ¡ria %u referencia um sÃ­mbolo eliminado%pB(%pA): erro: a relocalizaÃ§Ã£o secundÃ¡ria %u referencia um sÃ­mbolo em falta%pB(%pA): erro: secÃ§Ã£o de relocalizaÃ§Ã£o secundÃ¡ria vazia%pB(%pA): erro: secÃ§Ã£o de relocalizaÃ§Ã£o secundÃ¡ria processada duas vezes%pB(%pA): Ã­ndice da secÃ§Ã£o de informaÃ§Ã£o nÃ£o pode ser definido porque a secÃ§Ã£o nÃ£o estÃ¡ na saÃ­da%pB(%pA): Ã­ndice da secÃ§Ã£o de informaÃ§Ã£o invÃ¡lido%pB(%pA): erro interno: relocalizaÃ§Ã£o perigosa%pB(%pA): erro interno: erro fora do intervalo%pB(%pA): erro interno: erro desconhecido%pB(%pA): erro interno: erro relocalizaÃ§Ã£o nÃ£o suportada%pB(%pA): tabela de propriedade invÃ¡lida%pB(%pA): a secÃ§Ã£o ligaÃ§Ã£o nÃ£o pode ser definida porque o ficheiro de saÃ­da nÃ£o tem uma tabela de sÃ­mbolos%pB(%pA): mÃºltiplos modelos TLS nÃ£o sÃ£o suportados%pB(%pA): relocalizaÃ§Ã£o %d tem Ã­ndice de sÃ­mbolos invÃ¡lido %ld%pB(%pA): encontrado sÃ­mbolo de biblioteca partilhada %s ao realizar ligaÃ§Ã£o estÃ¡tica%pB(%pA): aviso: o uso de folhas de ramos longos na secÃ§Ã£o com atributo de secÃ§Ã£o SHF_ARM_PURECODE sÃ³ Ã© suportado para alvos M-profile que implementem a instruÃ§Ã£o movw.%pB(%pA): aviso: acesso nÃ£o alinhado ao sÃ­mbolo "%s" na Ã¡rea de dados pequenos%pB(%pA): aviso: acesso nÃ£o alinhado a dados pequenos de tipo %d.%pB(%pA+%#lx): entrada Stabs tem Ã­ndice de cadeia invÃ¡lido.%pB(%pA+%#x): erro: detectada mÃºltipla carga em bloco de instruÃ§Ã£o IT nÃ£o-Ãºltimo: impossÃ­vel gerar folha STM32L4XX.
 Use a opÃ§Ã£o gcc -mrestrict-it para gerar sÃ³ uma instruÃ§Ã£o por bloco IT.%pB(%pA+0x%lx): esperada relocalizaÃ§Ã£o estilo 16A em 0x%08x insn%pB(%pA+0x%lx): esperada relocalizaÃ§Ã£o estilo 16D em 0x%08x insn%pB(%pA+0x%v): chamada a secÃ§Ã£o nÃ£o-cÃ³digo %pB(%pA), anÃ¡lise incompleta
 %pB(%s): aviso: interworking nÃ£o activo; primeira ocorrÃªncia: %pB: chamada %s a %s%pB, secÃ§Ã£o %pA:
   relocalizaÃ§Ã£o %s invÃ¡lida em objecto partilhado; tipicamente uma mistura de opÃ§Ãµes, recompile com -fPIC%pB, secÃ§Ã£o %pA: sem PLT para relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s"%pB, secÃ§Ã£o %pA: sem PLT ou GOT para relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s"%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s tem referÃªncia nÃ£o definida a "%s", talvez uma declaraÃ§Ã£o misturada?%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s nÃ£o Ã© permitida para "%s", um sÃ­mbolo global com visibilidade predefinida, talvez uma declaraÃ§Ã£o misturada?%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s nÃ£o Ã© permitida para sÃ­mbolo global: "%s"%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s nÃ£o Ã© permitida para "%s", que estÃ¡ definido fora do programa, talvez uma declaraÃ§Ã£o misturada?%pB, secÃ§Ã£o %pA:
   relocalizaÃ§Ã£o %s nÃ£o deve ser usada em objecto partilhado; recompile com -fPIC%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s sem GOT criado%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o insolÃºvel %s contra sÃ­mbolo "%s"%pB, secÃ§Ã£o %pA:
   objecto compatÃ­vel v10/v32 nÃ£o deve conter uma relocalizaÃ§Ã£o PIC%pB, secÃ§Ã£o %pA, para sÃ­mbolo "%s":
-  relocalizaÃ§Ã£o %s nÃ£o deve ser usada em objecto partilhado; recompile com -fPIC%pB: reloc !samegp contra sÃ­mbolo sem .prologue: %s%pB: %pA tamanho invÃ¡lido de secÃ§Ã£o de entrada%pB: %pA nÃ£o estÃ¡ em ordem%pB: %pA aponta para lÃ¡ do fim da secÃ§Ã£o de texto%pB: %pA: transporte de reloc: %#x > 0xffff%pB: bandeira %strocada com mÃ³dulos anteriores%pB: %s nÃ£o absoluto%pB: %s: nÃ£o suportado%pB: %s acedido como sÃ­mbolo local normal e de fio, em simultÃ¢neo%pB: %s: versÃ£o necessÃ¡ria %d invÃ¡lida%pB: %s: versÃ£o %u invÃ¡lida (mÃ¡x %d)%pB: %s: transporte de reloc: 0x%lx > 0xffff%pB: "%s" acedido como sÃ­mbolo local normal e thread em simultÃ¢neo%pB: --in-implib sÃ³ Ã© suportado para bibliotecas importadas Secure Gateway.%pB: entrada .gnu.version_d invÃ¡lida%pB: entrada .gnu.version_r invÃ¡lida%pB: sub-segmento .got excede 64K (tamanho %d)%pB: .opd nÃ£o Ã© uma matriz normal de entradas opd%pB: secÃ§Ã£o .preinit_array nÃ£o Ã© permitida em DSO%pB: falha de uniÃ£o .rsrc: secÃ§Ã£o .rsrc corrupta%pB: falha de uniÃ£o .rsrc: tamanho .rsrc inesperado%pB: relocalizaÃ§Ã£o @gprel contra sÃ­mbolo dinÃ¢mico %s%pB: ramo @internal para sÃ­mbolo dinÃ¢mico %s%pB: relocalizaÃ§Ã£o @pcrel contra sÃ­mbolo dinÃ¢mico %s%pB: ABI incompatÃ­vel com a da emulaÃ§Ã£o seleccionada%pB: ABI Ã© incompatÃ­vel com aquele da emulaÃ§Ã£o seleccionada:
-  emulaÃ§Ã£o alvo "%s" nÃ£o corresponde a "%s"%pB: troca ABI: a ligar mÃ³dulo %s com mÃ³dulos prÃ©vios %s%pB: versÃ£o ABI %ld nÃ£o Ã© compatÃ­vel com a saÃ­da da versÃ£o ABI %ld%pB: troca ASE: a ligar mÃ³dulo %s com mÃ³dulos prÃ©vios %s%pB: imagens BE8 sÃ³ sÃ£o vÃ¡lidas em modo big-endian.%pB: impossÃ­vel gerir valor de tamanho de relocalizaÃ§Ã£o de %d%pB: relocalizaÃ§Ã£o de descritor de funÃ§Ã£o com adenda nÃ£o-zero%pB: secÃ§Ã£o "%pA" de GNU_MBIN tem campo sh_info invÃ¡lido: %d%pB: transporte GOT: nÃºmero de relocalizaÃ§Ãµes com desvio 8- ou 16-bit > %d%pB: transporte GOT: nÃºmero de relocalizaÃ§Ãµes com desvio 8-bit > %d%pB: tamanho do vector ISR trocado com mÃ³dulos anteriores, anterior %u-byte, actual %u-byte%pB: relocalizaÃ§Ãµes em ELF (EM: %d) genÃ©rico%pB: relocalizaÃ§Ã£o relativa a SB mas __c6xabi_DSBT_BASE nÃ£o definido%pB: secÃ§Ã£o SHT_GROUP [Ã­ndice %d] nÃ£o tem secÃ§Ãµes SHF_GROUP%pB: cÃ³digo exec TLS local nÃ£o pode ser ligado a objectos partilhados%pB: secÃ§Ãµes TLS nÃ£o adjacentes:%pB: a primeira secÃ§Ã£o no segmento PT_DYNAMIC nÃ£o Ã© a secÃ§Ã£o .dynamic%pB: objecto partilhado XCOFF sem produzir saÃ­da XCOFF%pB: __gp nÃ£o cobre o segmento de dados curtos%pB: "%s" acedido como sÃ­mbolo local FDPIC e thread em simultÃ¢neo%pB: "%s" acedido como sÃ­mbolo normal e FDPIC em simultÃ¢neo%pB: "%s" acedido como sÃ­mbolo local normal e thread em simultÃ¢neo%pB: "%s" e o seu sÃ­mbolo especial estÃ£o em secÃ§Ãµes diferentes.%pB: "%s" tem nÃºmeros de linha mas sem secÃ§Ã£o envolvente%pB: "%s" em reloc loader mas sem sÃ­mbolo loader%pB: "%s" reloc nÃ£o-PLT para sÃ­mbolo definido em biblioteca partilhada e acedido a partir de executÃ¡vel (reconstrua o ficheiro com -fPIC ?)%pB: sÃ­mbolo standard "%s" ausente.%pB: adenda devia ser zero para relocalizaÃ§Ãµes got%pB: adenda devia ser zero para relocalizaÃ§Ãµes plt%pB: cabeÃ§alho aout especifica um nÃºmero invÃ¡lido de entradas data-directory: %ld%pB: troca de arquitectura com mÃ³dulos anteriores%pB: tentativa de carregar cadeias de secÃ§Ã£o nÃ£o-cadeia (nÃºmero %d)%pB: tentativa de misturar objectos FDPIC e nÃ£o-FDPIC%pB tentativa de escrever tipo de reloc desconhecido%pB: registo de relocalizaÃ§Ã£o importado invÃ¡lido: %d%pB: mau nome de secÃ§Ã£o de relocalizaÃ§Ã£o "%s"%pB: mau tamanho de secÃ§Ã£o em ihex_read_section%pB: mÃ¡ definiÃ§Ã£o de sÃ­mbolo: "Main" definido como %s em vez do endereÃ§o inicial %s
+  relocalizaÃ§Ã£o %s nÃ£o deve ser usada em objecto partilhado; recompile com -fPIC%pB: reloc !samegp contra sÃ­mbolo sem .prologue: %s%pB: %pA tamanho invÃ¡lido de secÃ§Ã£o de entrada%pB: %pA nÃ£o estÃ¡ em ordem%pB: %pA aponta para lÃ¡ do fim da secÃ§Ã£o de texto%pB: %pA: transporte de reloc: %#x > 0xffff%pB: bandeira %strocada com mÃ³dulos anteriores%pB: %s sÃ­mbolo local no Ã­ndice %lu (>= sh_info de %lu)%pB: %s nÃ£o absoluto%pB: %s: nÃ£o suportado%pB: %s acedido como sÃ­mbolo local normal e de fio, em simultÃ¢neo%pB: %s: versÃ£o necessÃ¡ria %d invÃ¡lida%pB: %s: versÃ£o %u invÃ¡lida (mÃ¡x %d)%pB: %s: transporte de reloc: 0x%lx > 0xffff%pB: "%s" acedido como sÃ­mbolo local normal e thread em simultÃ¢neo%pB: --in-implib sÃ³ Ã© suportado para bibliotecas importadas Secure Gateway.%pB: entrada .gnu.version_d invÃ¡lida%pB: entrada .gnu.version_r invÃ¡lida%pB: sub-segmento .got excede 64K (tamanho %d)%pB: .opd nÃ£o Ã© uma matriz normal de entradas opd%pB: secÃ§Ã£o .preinit_array nÃ£o Ã© permitida em DSO%pB: falha de uniÃ£o .rsrc: secÃ§Ã£o .rsrc corrupta%pB: falha de uniÃ£o .rsrc: tamanho .rsrc inesperado%pB: relocalizaÃ§Ã£o @gprel contra sÃ­mbolo dinÃ¢mico %s%pB: ramo @internal para sÃ­mbolo dinÃ¢mico %s%pB: relocalizaÃ§Ã£o @pcrel contra sÃ­mbolo dinÃ¢mico %s%pB: ABI incompatÃ­vel com a da emulaÃ§Ã£o seleccionada%pB: ABI Ã© incompatÃ­vel com aquele da emulaÃ§Ã£o seleccionada:
+  emulaÃ§Ã£o alvo "%s" nÃ£o corresponde a "%s"%pB: troca ABI: a ligar mÃ³dulo %s com mÃ³dulos prÃ©vios %s%pB: versÃ£o ABI %ld nÃ£o Ã© compatÃ­vel com a saÃ­da da versÃ£o ABI %ld%pB: troca ASE: a ligar mÃ³dulo %s com mÃ³dulos prÃ©vios %s%pB: imagens BE8 sÃ³ sÃ£o vÃ¡lidas em modo big-endian.%pB: impossÃ­vel gerir valor de tamanho de relocalizaÃ§Ã£o de %d%pB: relocalizaÃ§Ã£o de descritor de funÃ§Ã£o com adenda nÃ£o-zero%pB: secÃ§Ã£o "%pA" de GNU_MBIND tem um campo sh_info field invÃ¡lido: %d%pB: transporte GOT: nÃºmero de relocalizaÃ§Ãµes com desvio 8- ou 16-bit > %d%pB: transporte GOT: nÃºmero de relocalizaÃ§Ãµes com desvio 8-bit > %d%pB: tamanho do vector ISR trocado com mÃ³dulos anteriores, anterior %u-byte, actual %u-byte%pB: relocalizaÃ§Ãµes em ELF (EM: %d) genÃ©rico%pB: relocalizaÃ§Ã£o relativa a SB mas __c6xabi_DSBT_BASE nÃ£o definido%pB: secÃ§Ã£o SHT_GROUP [Ã­ndice %d] nÃ£o tem secÃ§Ãµes SHF_GROUP%pB: cÃ³digo exec TLS local nÃ£o pode ser ligado a objectos partilhados%pB: relocalizaÃ§Ã£o TLS %s contra sÃ­mbolo "%s" indefinido%pB: secÃ§Ãµes TLS nÃ£o adjacentes:%pB: a primeira secÃ§Ã£o no segmento PT_DYNAMIC nÃ£o Ã© a secÃ§Ã£o .dynamic%pB: impossÃ­vel gerir Ã­ndice de secÃ§Ã£o %x em sÃ­mbolo ELF. A usar ABS.%pB: objecto partilhado XCOFF sem produzir saÃ­da XCOFF%pB: __gp nÃ£o cobre o segmento de dados curtos%pB: "%s" acedido como sÃ­mbolo local FDPIC e thread em simultÃ¢neo%pB: "%s" acedido como sÃ­mbolo normal e FDPIC em simultÃ¢neo%pB: "%s" acedido como sÃ­mbolo local normal e thread em simultÃ¢neo%pB: "%s" e o seu sÃ­mbolo especial estÃ£o em secÃ§Ãµes diferentes.%pB: "%s" tem nÃºmeros de linha mas sem secÃ§Ã£o envolvente%pB: "%s" em reloc loader mas sem sÃ­mbolo loader%pB: "%s" reloc nÃ£o-PLT para sÃ­mbolo definido em biblioteca partilhada e acedido a partir de executÃ¡vel (reconstrua o ficheiro com -fPIC ?)%pB: sÃ­mbolo standard "%s" ausente.%pB: adenda devia ser zero para relocalizaÃ§Ãµes got%pB: adenda devia ser zero para relocalizaÃ§Ãµes plt%pB: cabeÃ§alho aout especifica um nÃºmero invÃ¡lido de entradas data-directory: %u%pB: troca de arquitectura com mÃ³dulos anteriores%pB: tentativa de carregar cadeias de secÃ§Ã£o nÃ£o-cadeia (nÃºmero %d)%pB: tentativa de misturar objectos FDPIC e nÃ£o-FDPIC%pB tentativa de escrever tipo de reloc desconhecido%pB: registo de relocalizaÃ§Ã£o importado invÃ¡lido: %d%pB: mau nome de secÃ§Ã£o de relocalizaÃ§Ã£o "%s"%pB: mau tamanho de secÃ§Ã£o em ihex_read_section%pB: mÃ¡ definiÃ§Ã£o de sÃ­mbolo: "Main" definido como %s em vez do endereÃ§o inicial %s
 %pB: mau Ã­ndice de sÃ­mbolo: %d%pB: relocalizaÃ§Ã£o base-plus-offset contra sÃ­mbolo de registo: %s em %pA%pB: relocalizaÃ§Ã£o base-plus-offset  contra sÃ­mbolo de registo: (desconhecido) em %pA%pB: impossÃ­vel representar secÃ§Ã£o "%pA" num formato de ficheiro objecto a.out%pB: impossÃ­vel representar secÃ§Ã£o para sÃ­mbolo"%s" num formato de ficheiro objecto a.out%pB: impossÃ­vel ligar mÃ³dulos %s com mÃ³dulos %s%pB: impossÃ­vel ligar RVE com outro alvo%pB: impossÃ­vel alocar nome de ficheiro para nÃºmero de ficheiro %d, %d bytes
-%pB: impossÃ­vel criar entrada fictÃ­cia %s%pB: impossÃ­vel gerir binÃ¡rios Alpha comprimidos.
+%pB: impossÃ­vel alocar memÃ³ria para entradas GOT locais%pB: impossÃ­vel criar entrada fictÃ­cia %s%pB: impossÃ­vel gerir binÃ¡rios Alpha comprimidos.
    Use bandeiras do compilador ou objZ para gerar binÃ¡rios descomprimidos.%pB: impossÃ­vel ligar ficheiro objecto fdpic a executÃ¡vel nÃ£o-fdpic%pB: impossÃ­vel ligar ficheiro objecto nÃ£o-fdpic a executÃ¡vel fdpic%pB: impossÃ­vel ligar objectos %s e %s.%pB: alteraÃ§Ã£o em gp: BRSGP %s%pB: classe %d sÃ­mbolo "%s" nÃ£o tem entradas aux%pB: compilado %s -mtune=%s e ligado com mÃ³dulos compilados %s -mtune=%s%pB: compilado para um sistema 64 bit e o alvo Ã© 32 bit%pB: compilado para um sistema big endian e o alvo Ã© little endian%pB: compilado para um sistema little endian e o alvo Ã© big endian%pB: compilado normalmente e ligado com mÃ³dulos compilados com -mrelocatable%pB: compilado com %s e ligado com mÃ³dulos compilados com %s%pB: compilado com %s e ligado com mÃ³dulos que usam relocalizaÃ§Ãµes nÃ£o-pic%pB: compilado com -mrelocatable e ligado com mÃ³dulos compilados normalmente%pB: impossÃ­vel encontrar a secÃ§Ã£o de saÃ­da %pA para a secÃ§Ã£o de entrada %pA%pB: impossÃ­vel ler conteÃºdo da secÃ§Ã£o "%pA"
 %pB: csect "%s" nÃ£o estÃ¡ em secÃ§Ã£o envolvente%pB: relocalizaÃ§Ã£o GOT directa %s contra "%s" sem registo-base nÃ£o pode ser usada ao fazer um objecto partilhado%pB: relocalizaÃ§Ã£o GOT directa R_386_GOT32X contra "%s" sem registo-base nÃ£o pode ser usada ao fazer um objecto partilhado%pB: directiva LOCAL sÃ³ Ã© vÃ¡lida com um registo ou um valor absoluto%pB: relocalizaÃ§Ã£o dtp-relative contra sÃ­mbolo dinÃ¢mico %s%pB: fictÃ­cio de exportaÃ§Ã£o duplicado %s%pB: secÃ§Ã£o "%pA" duplicada tem conteÃºdo diferente
 %pB: secÃ§Ã£o "%pA" duplicada tem tamanho diferente
 %pB: objecto dinÃ¢mico sem secÃ§Ã£o .loader%pB: relocalizaÃ§Ã£o dinÃ¢mica contra "%pT" em secÃ§Ã£o sÃ³ de leitura "%pA"
 %pB: relocalizaÃ§Ã£o dinÃ¢mica em secÃ§Ã£o "%pA" sÃ³ de leitura
-%pB: endianness incompatÃ­vel com a da emulaÃ§Ã£o seleccionada%pB: funÃ§Ã£o de entrada "%s" estÃ¡ vazia.%pB: funÃ§Ã£o de entrada "%s" nÃ£o saÃ­da.%pB: erro: ABI trocado com mÃ³dulos anteriores.%pB: erro: errata Cortex-A8 fictÃ­cia estÃ¡ alocada a localizaÃ§Ã£o nÃ£o-segura%pB: erro: errata Cortex-A8 fictÃ­cia fora do intervalo (ficheiro de entrada muito grande)%pB: erro: segmento PHDR nÃ£o coberto pelo segmento LOAD%pB: erro: folha VFP11 fora do intervalo%pB: erro: poder de alinhamento %d da secÃ§Ã£o "%pA" Ã© muito grande%pB: erro: secÃ§Ã£o de atributo "%pA"muito grande: %#llx%pB: erro: impossÃ­vel criar folha STM32L4XX.%pB: erro: Debug Data termina apÃ³s o fim da pasta de depuraÃ§Ã£o.%pB: erro: Erratum 835769 fictÃ­cio fora do intervalo (ficheiro de entrada muito grande)%pB: erro: Erratum 843419 fictÃ­cio fora do intervalo (ficheiro de entrada muito grande)%pB: erro: conjunto de instruÃ§Ãµes trocado com mÃ³dulos anteriores.%pB: Erro: definiÃ§Ã£o mÃºltipla de "%s"; inÃ­cio de %s estÃ¡ definido num ficheiro previamente ligado%pB: erro: segmento %d nÃ£o carga inclui cabeÃ§alho de ficheiro e/ou de programa%pB: erro: search_nds32_elf_blank reporta nÃ³ errado%pB: erro: sÃ­mbolo "%s" inesperado em secÃ§Ã£o COMDAT%pB: erro: atributo de objecto EABI obrigatÃ³rio desconhecido %d%pB: falha ao procurar secÃ§Ã£o de informaÃ§Ã£o para a secÃ§Ã£o %d%pB: falha ao procurar secÃ§Ã£o de ligaÃ§Ã£o para a secÃ§Ã£o %d%pB: falha ao gerar biblioteca de importaÃ§Ã£o%pB: falha ao ler secÃ§Ã£o de dados de depuraÃ§Ã£o%pB: fatal: obtidos sÃ­mbolos genÃ©ricos antes de relaxar%pB: classe de ficheiro %s incompatÃ­vel com %s%pB: relocalizaÃ§Ã£o gotoff contra sÃ­mbolo dinÃ¢mico %s%pB: relocalizaÃ§Ã£o gp-relative contra sÃ­mbolo dinÃ¢mico %s%pB: secÃ§Ã£o de grupo "%pA" nÃ£o tem conteÃºdo%pB: sÃ­mbolo "%s" oculto em %pB Ã© referenciado por DSO%pB: sÃ­mbolo "%s" oculto nÃ£o estÃ¡ definido%pB: a ignorar secÃ§Ã£o "%pA" duplicada
+%pB: endianness incompatÃ­vel com a da emulaÃ§Ã£o seleccionada%pB: funÃ§Ã£o de entrada "%s" estÃ¡ vazia.%pB: funÃ§Ã£o de entrada "%s" nÃ£o saÃ­da.%pB: erro: ABI trocado com mÃ³dulos anteriores.%pB: erro: errata Cortex-A8 fictÃ­cia estÃ¡ alocada a localizaÃ§Ã£o nÃ£o-segura%pB: erro: errata Cortex-A8 fictÃ­cia fora do intervalo (ficheiro de entrada muito grande)%pB: erro: segmento PHDR nÃ£o coberto pelo segmento LOAD%pB: erro: folha VFP11 fora do intervalo%pB: erro: poder de alinhamento %d da secÃ§Ã£o "%pA" Ã© muito grande%pB: erro: secÃ§Ã£o de atributo "%pA"muito grande: %#llx%pB: erro: impossÃ­vel criar folha STM32L4XX.%pB: erro: Debug Data termina apÃ³s o fim da pasta de depuraÃ§Ã£o.%pB: erro: Erratum 835769 fictÃ­cio fora do intervalo (ficheiro de entrada muito grande)%pB: erro: erratum 843419 imediato 0x%%pB: erro: Erratum 843419 fictÃ­cio fora do intervalo (ficheiro de entrada muito grande)%pB: erro: conjunto de instruÃ§Ãµes trocado com mÃ³dulos anteriores.%pB: Erro: definiÃ§Ã£o mÃºltipla de "%s"; inÃ­cio de %s estÃ¡ definido num ficheiro previamente ligado%pB: erro: segmento %d nÃ£o carga inclui cabeÃ§alho de ficheiro e/ou de programa%pB: erro: search_nds32_elf_blank reporta nÃ³ errado%pB: erro: sÃ­mbolo "%s" inesperado em secÃ§Ã£o COMDAT%pB: erro: atributo de objecto EABI obrigatÃ³rio desconhecido %d%pB: falha ao procurar secÃ§Ã£o de informaÃ§Ã£o para a secÃ§Ã£o %d%pB: falha ao procurar secÃ§Ã£o de ligaÃ§Ã£o para a secÃ§Ã£o %d%pB: falha ao gerar biblioteca de importaÃ§Ã£o%pB: falha ao ler secÃ§Ã£o de dados de depuraÃ§Ã£o%pB: fatal: obtidos sÃ­mbolos genÃ©ricos antes de relaxar%pB: classe de ficheiro %s incompatÃ­vel com %s%pB: relocalizaÃ§Ã£o gotoff contra sÃ­mbolo dinÃ¢mico %s%pB: relocalizaÃ§Ã£o gp-relative contra sÃ­mbolo dinÃ¢mico %s%pB: secÃ§Ã£o de grupo "%pA" nÃ£o tem conteÃºdo%pB: sÃ­mbolo "%s" oculto em %pB Ã© referenciado por DSO%pB: sÃ­mbolo "%s" oculto nÃ£o estÃ¡ definido%pB: a ignorar secÃ§Ã£o "%pA" duplicada
 %pB: nome de secÃ§Ã£o ilegal "%pA"%pB: Ã­ndice de sÃ­mbolo %ld ilegal em relocs%pB: tipo de mÃ¡quina incompatÃ­vel. SaÃ­da Ã© 0x%x. Entrada Ã© 0x%x%pB: tamanho incorrecto do sÃ­mbolo "%s".%pB: sÃ­mbolo indirecto "%s" para "%s" Ã© um ciclo%pB: conjunto de instruÃ§Ãµes trocado com os mÃ³dulos anteriores%pB: erro interno em ihex_read_section%pB: erro interno, secÃ§Ã£o de registo interna %pA tinha conteÃºdo
 %pB: erro interno, tabela de sÃ­mbolo alterou o tamanho de %d para %d palavras
 %pB: sÃ­mbolo "%s" interno em %pB Ã© referenciado por DSO%pB: sÃ­mbolo "%s" nÃ£o estÃ¡ definido%pB: entrada na secÃ§Ã£o [%u] SHT_GROUP invÃ¡lida%pB: entrada de biblioteca importada %s invÃ¡lida; o sÃ­mbolo deve ser absoluto, global e referir-se a funÃ§Ãµes Thumb.%pB: ligaÃ§Ã£o invÃ¡lida %u para secÃ§Ã£o reloc %s (Ã­ndice %u)%pB: ficheiro mmo invÃ¡lido: YZ de lop_end (%ld) nÃ£o igual ao nÃºmero de tetras para o lop_stab (%ld) precedente
@@ -1159,11 +1168,23 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 %pB: ficheiro mmo invÃ¡lido: lop_end nÃ£o Ã© o Ãºltimo item no ficheiro
 %pB: ficheiro mmo invÃ¡lido: lopcode "%d" nÃ£o suportado
 %pB: sh_link field (%d) invÃ¡lido no nÃºmero da secÃ§Ã£o %d%pB: sÃ³mbolo especial invÃ¡lido "%s"; tem de ser um sÃ­mbolo de funÃ§Ã£o global ou fraco.%pB: sÃ­mbolo padrÃ£o %s invÃ¡lido; tem de ser um sÃ­mbolo de funÃ§Ã£o global ou fraco.%pB: tabela de sÃ­mbolo invÃ¡lida: sÃ­mbolo duplicado "%s"
-%pB: transporte de nÂº de linha: 0x%lx > 0xffff%pB: a ligar mÃ³dulo %s com mÃ³dulos prÃ©vios %s%pB: a ligar cÃ³digo 32-bit com cÃ³digo 64-bit%pB: a ligar ficheiros 64-bit com ficheiros 32-bit%pB: a ligar especÃ­fico UltraSPARC com cÃ³digo especÃ­fico HAL%pB: a ligar ficheiros auto-pic com ficheiro nÃ£o auto-pic%pB: a ligar ficheiros big-endian com ficheiros little-endian%pB: a ligar ficheiros constant-gp com ficheiros nÃ£o constant-gp%pB: a ligar ficheiros compilados para inteiros de 16-bit (-mshort) e outros para inteiros de 32-bit%pB: a ligar ficheiros compilados para duplos de 32-bit (-fshort-double) e outros para duplos de 64-bit%pB: a ligar ficheiros compilados para HCS12 com outros compilados para HC12%pB: a ligar ficheiros little endian com ficheiros big endian%pB: a ligar cÃ³digo nÃ£o-pic num executÃ¡vel de posiÃ§Ã£o independente%pB: a ligar trap-on-NULL-dereference com ficheiros nÃ£o-trapping%pB: reloc loader em secÃ§Ã£o sÃ³ de leitura %pA%pB: reloc loader em secÃ§Ã£o "%s" nÃ£o reconhecida%pB: sÃ­mbolo "%s" local em %pB Ã© referenciado por DSO%pB: tabela de descritor de sÃ­mbolo local Ã© NULL ao aplicar relocalizaÃ§Ã£o %s contra sÃ­mbolo local%pB: conflito de bandeira de mÃ¡quina com destino%pB: reloc malformada detectada para secÃ§Ã£o %pA%pB: reloc mal formada detectada para secÃ§Ã£o %s%pB: XTY_LD "%s" mal colocado%pB: OMIT_FP aninhado em %pA.%pB: sem nÃºcleo para alocar um sÃ­mbolo com %d bytes%pB: sem nÃºcleo para alocar nome de secÃ§Ã£o %s%pB: sem informaÃ§Ã£o de grupo para secÃ§Ã£o "%pA"%pB: sem registos inicializados; tamanho de secÃ§Ã£o 0
-%pB: sem sÃ­mbolo para biblioteca de importaÃ§Ã£o%pB: sem secÃ§Ã£o de versÃ£o de sÃ­mbolo para o sÃ­mbolo com versÃ£o "%s"%pB: sem secÃ§Ãµes de grupo vÃ¡lidas%pB: cÃ³digo nÃ£o-pic com relocalizaÃ§Ã£o imm contra sÃ­mbolo dinÃ¢mico "%s"%pB: relocalizaÃ§Ã£o nÃ£o-pic contra sÃ­mbolo %s%pB: sem espaÃ§o para cabeÃ§alhos do programa, tente ligar com -N%pB: sÃ³ registos %%g[2367] podem ser declarados usando STT_REGISTER%pB: sem memÃ³ria ao criar nome para secÃ§Ã£o vazia%pB: sem memÃ³ria em _bfd_elf_get_property%pB: tamanho de pÃ¡gina muito grande (0x%x)%pB: relocalizaÃ§Ã£o pc-relative contra sÃ­mbolo dinÃ¢mico %s%pB: relocalizaÃ§Ã£o pc-relative contra sÃ­mbolo fraco %s indefinido%pB: extensÃ£o precisou de gerir objecto lto%pB: provavelmente compilado com -fPIC?%pB: sÃ­mbolo "%s" protegido nÃ£o estÃ¡ definido%pB: tipo de mÃ¡quina reconhecido mas nÃ£o gerido (0x%x) em arquivo Import Library Format%pB: relocalizaÃ§Ã£o de registo contra sÃ­mbolo nÃ£o-registo: %s em %pA%pB: relocalizaÃ§Ã£o de registo contra sÃ­mbolo nÃ£o-registo: (desconhecido) em %pA%pB: reloc contra Ã­ndice de sÃ­mbolo nÃ£o existente: %ld%pB: ligaÃ§Ã£o relocalizÃ¡vel de %s para %s nÃ£o suportado%pB: relocalizaÃ§Ã£o %s contra %s%s"%s" nÃ£o pode ser usada ao fazer %s%s%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo STT_GNU_IFUNC "%s" nÃ£o Ã© gerido por %s%pB: relocalizaÃ§Ã£o %s contra STT_GNU_IFUNC sÃ­mbolo "%s" nÃ£o suportada%pB: relocalizaÃ§Ã£o %s contra "%s" nÃ£o pode ser usada ao fazer um objecto partilhado%pB: relocalizaÃ§Ã£o %s contra "%s" nÃ£o pode ser usada a fazer um objecto partilhado; recompile com -fPIC%pB: relocalizaÃ§Ã£o %s contra "%s" nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s" externo ou indefinido nÃ£o pode ser usada ao fazer %s; recompile com -fPIC%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s" nÃ£o Ã© suportada em modo x32%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s" que pode ligar externamente nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC%pB: relocalizaÃ§Ã£o %s nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC%pB: relocalizaÃ§Ã£o %s nÃ£o pode ser usada ao fazer objecto partilhado%pB: relocalizaÃ§Ã£o R_386_GOTOFF contra %s "%s" protegido nÃ£o pode ser usada ao fazer um objecto partilhado%pB: relocalizaÃ§Ã£o R_386_GOTOFF contra %s "%s" indefinido nÃ£o pode ser usada ao fazer um objecto partilhado%pB: relocalizaÃ§Ã£o R_X86_64_GOTOFF64 contra %s "%s" protegido nÃ£o pode ser usado ao fazer um objecto partilhado%pB: relocalizaÃ§Ã£o R_X86_64_GOTOFF64 contra  %s "%s" indefinido nÃ£o pode ser usado ao fazer um objecto partilhado%pB: tamanho de relocalizaÃ§Ã£o trocado na secÃ§Ã£o %pB %pA%pB: relocalizaÃ§Ãµes em ELF (EM: %d) genÃ©rico%pB: relocs na secÃ§Ã£o "%pA", mas nÃ£o tem conteÃºdo%pB: secÃ§Ã£o %pA: transporte na tabela de sÃ­mbolo no desvio %ld%pB: secÃ§Ã£o "%pA" nÃ£o pode ser alocada no segmento %d%pB: entrada do grupo de secÃ§Ã£o nÃºmero %u estÃ¡ corrompida%pB: sh_link [%d] na secÃ§Ã£o "%pA" estÃ¡ incorrecto%pB: sh_link da secÃ§Ã£o "%pA" aponta para secÃ§Ã£o descartada "%pA" de "%pB"%pB: sh_link da secÃ§Ã£o "%pA" aponta para secÃ§Ã£o removida "%pA" de "%pB"%pB: tamanho de campo Ã© zero em cabeÃ§alho Import Library Format%pB: sÃ­mbolo especial "%s" sÃ³ Ã© permitido para arquitecturas ARMv8-M ou posteriores.%pB: fixup de especulaÃ§Ã£o para sÃ­mbolo dinÃ¢mico %s%pB: tamanho de stack especificado e definido como %s%pB: cadeia nÃ£-null terminada em ficheiro objecto ILF.%pB: suporte a dinÃ¢mica local nÃ£o implementado%pB: sÃ­mbolo "%s" tem tipo csect %d nÃ£o reconhecido%pB: sÃ­mbolo "%s" tem smclas %d nÃ£o reconhecido%pB: sÃ­mbolo "%s" requerido mas nÃ£o presente%pB: tirar o endereÃ§o da funÃ§Ã£o protegida "%s" nÃ£o pode ser feito ao fazer uma biblioteca partilhada%pB: o alvo (%s) de uma relocalizaÃ§Ã£o %s estÃ¡ na secÃ§Ã£o de saÃ­da errada (%s)%pB: o alvo (%s) de uma relocalizaÃ§Ã£o %s estÃ¡ na secÃ§Ã£o errada (%pA)%pB: demasiadas secÃ§Ãµes (%d)%pB: demasiadas secÃ§Ãµes: %d (>= %d)%pB: demasiadas secÃ§Ãµes: %u%pB: relocalizaÃ§Ã£o tp-relative contra sÃ­mbolo dinÃ¢mico %s%pB: impossÃ­vel criar secÃ§Ã£o vazia falsa%pB: impossÃ­vel preencher DataDictionary[12] porque .idata$5 estÃ¡ em falta%pB: impossÃ­vel preencher DataDictionary[1] porque .idata$2 estÃ¡ em falta%pB: impossÃ­vel preencher DataDictionary[1] porque .idata$4 estÃ¡ em falta%pB: impossÃ­vel preencher DataDictionary[9] porque __tls_used estÃ¡ em falta%pB: impossÃ­vel preencher DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] porque .idata$6 estÃ¡ em falta%pB: impossÃ­vel preencher DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] porque .idata$6 estÃ¡ em falta%pB: impossÃ­vel encontrar a folha %s "%s"%pB: impossÃ­vel encontrar nome para secÃ§Ã£o vazia%pB: impossÃ­vel obter secÃ§Ã£o %pA descomprimida%pB: impossÃ­vel inicializar estado comprimido para secÃ§Ã£o %s%pB: impossÃ­vel inicializar estado descomprimido para secÃ§Ã£o %s%pB: impossÃ­vel carregar nome de secÃ§Ã£o COMDAT%pB: impossÃ­vel ordenar relocs - tÃªm mais de um tamanho%pB: impossÃ­vel ordenar relocs - tÃªm um tamanho desconhecido%pB: referÃªncia indefinida a sÃ­mbolo "%s"%pB: sÃ­mbolo indefinido "%s" em secÃ§Ã£o .opd%pB: sÃ­mbolo indefinido em relocalizaÃ§Ã£o R_PPC64_TOCSAVE%pB: redefiniÃ§Ã£o de sÃ­mbolo com versÃ£o indirecto "%s" inesperada%pB: tipo de reloc inesperado %u em secÃ§Ã£o .opd%pB: relocalizaÃ§Ã£o dinÃ¢mica contra %s nÃ£o gerida%pB: tipo de importaÃ§Ã£o nÃ£o gerido; %x%pB: arquitectura desconhecida %s%pB: comando de carga %#x desconhecido%pB: atributo de objecto ARC %d obrigatÃ³rio desconhecido.Aviso: %pB: atributo de objecto EABI %d obrigatÃ³rio desconhecido%pB: tipo de relocalizaÃ§Ã£o %d desconhecido%pB: tipo desconhecido [%#x], secÃ§Ã£o "%s"%pB: secÃ§Ã£o tipo [%#x] "%s" desconhecida no grupo [%pA]%pB: OMIT_FP desirmanado em %pA.%pB: tipo de mÃ¡quina nÃ£o reconhecido (0x%x) em arquivo Import Library Format%pB: tipo de nome de importaÃ§Ã£o nÃ£o reconhecido; %x%pB: tipo de importaÃ§Ã£o nÃ£o reconhecido; %x%pB: relocalizaÃ§Ã£o nÃ£o reconhecida (%#x) na secÃ§Ã£o "%pA"%pB: classe de armazenamento %d nÃ£o reconhecida para %s sÃ­mbolo "%s"%pB: chamada nÃ£o-PIC a IFUNC "%s" nÃ£o suportada%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado%pB: tipo de relocalizaÃ§Ã£o %#x nÃ£o suportado%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado exportado: %#x%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado importado: %#x%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado: %#x%pB: transiÃ§Ã£o %s para %s nÃ£o suportada%pB: sequÃªncia de caracteres largos 0x%02X 0x%02X nÃ£o suportada apÃ³s nome de sÃ­mbolo comeÃ§ado por "%s"
-%pB: usa instruÃ§Ãµes %s enquanto os mÃ³dulos anteriores usam instruÃ§Ãµes %s%pB: usa sÃ­mbolos prefixados com _, mas o ficheiro serÃ¡ escrito com sÃ­mbolos sem prefixo%pB: usa campos e_flags diferentes (%#x) dos mÃ³dulos anteriores (%#x)%pB: usa campos e_flags (%#x) desconhecidos diferentes dos mÃ³dulos anteriores (%#x)%pB: usa instruÃ§Ãµes incompatÃ­veis com instruÃ§Ãµes usadas em mÃ³dulos anteriores%pB: usa sÃ­mbolos sem prefixo, mas o ficheiro serÃ¡ escrito com sÃ­mbolos prefixados com _%pB: nÃ³ de versÃ£o nÃ£o encontrado para sÃ­mbolo %s%pB: a visibilidade do sÃ­mbolo "%s" mudou.%pB: aviso: ficheiro nÃºcleo truncado%pB: aviso: %pA: transporte de nÃºmero de linha: %#x > 0xffff%pB: aviso: instruÃ§Ã£o %s BLX destina-se a funÃ§Ã£o %s "%s".%pB: aviso: relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s" da secÃ§Ã£o %pA%pB: aviso: %s nÃ£o suportado em modo partilhado%pB: aviso: %s: transporte de nÃºmero de linha: 0x%lx > 0xffff%pB: aviso: sÃ­mbolo "%s" COMDAT nÃ£o corresponde ao nome de secÃ§Ã£o "%s"%pB: aviso: geraÃ§Ã£o RVE PLT nÃ£o suportada%pB: aviso: secÃ§Ã£o alocada "%s" nÃ£o estÃ¡ no segmento%pB: aviso: mau tamanho de opÃ§Ã£o "%s" %u menor que o seu cabeÃ§alho%pB: aviso: impossÃ­vel determinar a funÃ§Ã£o alvo para secÃ§Ã£o fictÃ­cia "%s"%pB: aviso: afirma ter 0xffff relocs, sem transporte%pB: aviso: informaÃ§Ã£o de nÃºmero de linha duplicada para "%s"%pB: aviso: Endian trocado com mÃ³dulos anteriores.%pB: aviso: a ignorar bandeira de secÃ§Ã£o %s na secÃ§Ã£o %s%pB: aviso: sÃ­mbolo ilegal em entrada de nÃºmero de linha %d%pB: aviso: Ã­ndice de sÃ­mbolo %ld ilegal em relocs%pB: aviso: Ã­ndice de sÃ­mbolo 0x%lx ilegal em entrada de nÃºmero de linha %d%pB: aviso: versÃµes elf %s e %s incompatÃ­veis.%pB: aviso: ASEs inconsistente entre e_flags e .MIPS.abiflags%pB: aviso: FP ABI inconsistente entre .gnu.attributes e .MIPS.abiflags%pB: aviso: ISA inconsistente entre e_flags e .MIPS.abiflags%pB: aviso: extensÃµes ISA inconsistentes entre e_flags e .MIPS.abiflags%pB: aviso: isymMax (%ld) Ã© maior que ifdMax (%ld)%pB: aviso: total de nÃºmero de linha (%#lx) excede tamanho de secÃ§Ã£o (%#lx)%pB: aviso: falha ao ler tabela de nÃºmero de linha%pB: aviso: a ligar ficheiros PIC com ficheiros nÃ£o-PIC%pB: aviso: a ligar ficheiros abicalls com ficheiros nÃ£o-abicalls%pB: aviso: detectado ciclo em dependÃªncias da secÃ§Ã£o%pB: aviso: detectadas mÃºltiplas tabelas de sÃ­mbolo dinÃ¢mico - a ignorar a tabela na secÃ§Ã£o %u%pB: aviso: detectadas mÃºltiplas tabelas de sÃ­mbolo - a ignorar a tabela na secÃ§Ã£o %u%pB: aviso: sÃ­mbolo para secÃ§Ã£o "%s" nÃ£o encontrado%pB: aviso: encontradas versÃµes anteriores do ficheiro objecto, recompile com as ferramentas actuais.%pB: aviso: falha ao relocalizar SDA_BASE.%pB: aviso: a soluÃ§Ã£o de errata STM32L4XX seleccionada nÃ£o Ã© necessÃ¡ria para arquitectura de destino%pB: aviso: a soluÃ§Ã£o de errata VFP11 seleccionada nÃ£o Ã© necessÃ¡ria para arquitectura de destino%pB: aviso: sh_link nÃ£o definido para a secÃ§Ã£o "%pA"%pB: aviso: tabela de simbolo muito grande para mmo, maior que palavras de 65535 32-bit: %d. SÃ³ "Main" serÃ¡ emitido.
+%pB: desvio de versÃ£o invÃ¡lido %lx (mÃ¡x %lx)%pB: transporte de nÂº de linha: 0x%lx > 0xffff%pB: a ligar mÃ³dulo %s com mÃ³dulos prÃ©vios %s%pB: a ligar cÃ³digo 32-bit com cÃ³digo 64-bit%pB: a ligar ficheiros 64-bit com ficheiros 32-bit%pB: a ligar especÃ­fico UltraSPARC com cÃ³digo especÃ­fico HAL%pB: a ligar ficheiros auto-pic com ficheiro nÃ£o auto-pic%pB: a ligar ficheiros big-endian com ficheiros little-endian%pB: a ligar ficheiros constant-gp com ficheiros nÃ£o constant-gp%pB: a ligar ficheiros compilados para inteiros de 16-bit (-mshort) e outros para inteiros de 32-bit%pB: a ligar ficheiros compilados para duplos de 32-bit (-fshort-double) e outros para duplos de 64-bit%pB: a ligar ficheiros compilados para HCS12 com outros compilados para HC12%pB: a ligar ficheiros little endian com ficheiros big endian%pB: a ligar cÃ³digo nÃ£o-pic num executÃ¡vel de posiÃ§Ã£o independente%pB: a ligar trap-on-NULL-dereference com ficheiros nÃ£o-trapping%pB: reloc loader em secÃ§Ã£o sÃ³ de leitura %pA%pB: reloc loader em secÃ§Ã£o "%s" nÃ£o reconhecida%pB: sÃ­mbolo "%s" local em %pB Ã© referenciado por DSO%pB: tabela de descritor de sÃ­mbolo local Ã© NULL ao aplicar relocalizaÃ§Ã£o %s contra sÃ­mbolo local%pB: conflito de bandeira de mÃ¡quina com destino%pB: reloc malformada detectada para secÃ§Ã£o %pA%pB: reloc mal formada detectada para secÃ§Ã£o %s%pB: XTY_LD "%s" mal colocado%pB: OMIT_FP aninhado em %pA.%pB: sem nÃºcleo para alocar um sÃ­mbolo com %d bytes%pB: sem nÃºcleo para alocar nome de secÃ§Ã£o %s%pB: sem informaÃ§Ã£o de grupo para secÃ§Ã£o "%pA"%pB: sem registos inicializados; tamanho de secÃ§Ã£o 0
+%pB: sem sÃ­mbolo para biblioteca de importaÃ§Ã£o%pB: sem secÃ§Ã£o de versÃ£o de sÃ­mbolo para o sÃ­mbolo com versÃ£o "%s"%pB: sem secÃ§Ãµes de grupo vÃ¡lidas%pB: cÃ³digo nÃ£o-pic com relocalizaÃ§Ã£o imm contra sÃ­mbolo dinÃ¢mico "%s"%pB: relocalizaÃ§Ã£o nÃ£o-pic contra sÃ­mbolo %s%pB: sem espaÃ§o para cabeÃ§alhos do programa, tente ligar com -N%pB: versÃ£o de informaÃ§Ã£o insuficiente%pB: sÃ³ registos %%g[2367] podem ser declarados usando STT_REGISTER%pB: sem memÃ³ria ao criar nome para secÃ§Ã£o vazia%pB: sem memÃ³ria em _bfd_elf_get_property%pB: tamanho de pÃ¡gina muito grande (0x%x)%pB: relocalizaÃ§Ã£o pc-relative contra sÃ­mbolo dinÃ¢mico %s%pB: relocalizaÃ§Ã£o pc-relative contra sÃ­mbolo fraco %s indefinido%pB: extensÃ£o precisou de gerir objecto lto%pB: provavelmente compilado com -fPIC?%pB: sÃ­mbolo "%s" protegido nÃ£o estÃ¡ definido%pB: tipo de mÃ¡quina reconhecido mas nÃ£o gerido (0x%x) em arquivo Import Library Format%pB: relocalizaÃ§Ã£o de registo contra sÃ­mbolo nÃ£o-registo: %s em %pA%pB: relocalizaÃ§Ã£o de registo contra sÃ­mbolo nÃ£o-registo: (desconhecido) em %pA%pB: reloc contra Ã­ndice de sÃ­mbolo nÃ£o existente: %ld%pB: ligaÃ§Ã£o relocalizÃ¡vel de %s para %s nÃ£o suportado%pB: relocalizaÃ§Ã£o %s contra %s%s"%s" nÃ£o pode ser usada ao fazer %s%s%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo STT_GNU_IFUNC "%s" nÃ£o Ã© gerido por %s%pB: relocalizaÃ§Ã£o %s contra STT_GNU_IFUNC sÃ­mbolo "%s" nÃ£o suportada%pB: relocalizaÃ§Ã£o %s contra "%s" nÃ£o pode ser usada ao fazer um objecto partilhado%pB: relocalizaÃ§Ã£o %s contra "%s" nÃ£o pode ser usada a fazer um objecto partilhado; recompile com -fPIC%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s" externo ou indefinido nÃ£o pode ser usada ao fazer %s; recompile com -fPIC%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s" nÃ£o Ã© suportada em modo x32%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s" que pode ligar externamente nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC%pB: relocalizaÃ§Ã£o %s nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC%pB: relocalizaÃ§Ã£o %s nÃ£o pode ser usada ao fazer objecto partilhado%pB: relocalizaÃ§Ã£o R_386_GOTOFF contra %s "%s" protegido nÃ£o pode ser usada ao fazer um objecto partilhado%pB: relocalizaÃ§Ã£o R_386_GOTOFF contra %s "%s" indefinido nÃ£o pode ser usada ao fazer um objecto partilhado%pB: relocalizaÃ§Ã£o R_X86_64_GOTOFF64 contra %s "%s" protegido nÃ£o pode ser usado ao fazer um objecto partilhado%pB: relocalizaÃ§Ã£o R_X86_64_GOTOFF64 contra  %s "%s" indefinido nÃ£o pode ser usado ao fazer um objecto partilhado%pB: tamanho de relocalizaÃ§Ã£o trocado na secÃ§Ã£o %pB %pA%pB: relocalizaÃ§Ãµes em ELF (EM: %d) genÃ©rico%pB: relocs na secÃ§Ã£o "%pA", mas nÃ£o tem conteÃºdo%pB: secÃ§Ã£o %pA: transporte na tabela de sÃ­mbolo no desvio %ld%pB: secÃ§Ã£o "%pA":entrada VTENTRY corrompida%pB: secÃ§Ã£o "%pA" nÃ£o pode ser alocada no segmento %d%pB: entrada do grupo de secÃ§Ã£o nÃºmero %u estÃ¡ corrompida%pB: sh_link [%d] na secÃ§Ã£o "%pA" estÃ¡ incorrecto%pB: sh_link da secÃ§Ã£o "%pA" aponta para secÃ§Ã£o descartada "%pA" de "%pB"%pB: sh_link da secÃ§Ã£o "%pA" aponta para secÃ§Ã£o removida "%pA" de "%pB"%pB: tamanho de campo Ã© zero em cabeÃ§alho Import Library Format%pB: sÃ­mbolo especial "%s" sÃ³ Ã© permitido para arquitecturas ARMv8-M ou posteriores.%pB: fixup de especulaÃ§Ã£o para sÃ­mbolo dinÃ¢mico %s%pB: tamanho de stack especificado e definido como %s%pB: cadeia nÃ£-null terminada em ficheiro objecto ILF.%pB: suporte a dinÃ¢mica local nÃ£o implementado%pB: sÃ­mbolo "%s" tem tipo csect %d nÃ£o reconhecido%pB: sÃ­mbolo "%s" tem smclas %d nÃ£o reconhecido%pB: sÃ­mbolo "%s" requerido mas nÃ£o presente%pB: o sÃ­mbolo indica sobreposiÃ§Ã£o (nÃ£o suportado)%pB: tirar o endereÃ§o da funÃ§Ã£o protegida "%s" nÃ£o pode ser feito ao fazer uma biblioteca partilhada%pB: o alvo (%s) de uma relocalizaÃ§Ã£o %s estÃ¡ na secÃ§Ã£o de saÃ­da errada (%s)%pB: o alvo (%s) de uma relocalizaÃ§Ã£o %s estÃ¡ na secÃ§Ã£o errada (%pA)%pB: demasiadas secÃ§Ãµes (%d)%pB: demasiadas secÃ§Ãµes: %d (>= %d)%pB: demasiadas secÃ§Ãµes: %u%pB: relocalizaÃ§Ã£o tp-relative contra sÃ­mbolo dinÃ¢mico %s%pB: impossÃ­vel criar secÃ§Ã£o vazia falsa%pB: impossÃ­vel preencher DataDictionary[12] porque .idata$5 estÃ¡ em falta%pB: impossÃ­vel preencher DataDictionary[1] porque .idata$2 estÃ¡ em falta%pB: impossÃ­vel preencher DataDictionary[1] porque .idata$4 estÃ¡ em falta%pB: impossÃ­vel preencher DataDictionary[9] porque __tls_used estÃ¡ em falta%pB: impossÃ­vel preencher DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] porque .idata$6 estÃ¡ em falta%pB: impossÃ­vel preencher DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] porque .idata$6 estÃ¡ em falta%pB: impossÃ­vel encontrar a folha %s "%s"%pB: impossÃ­vel encontrar nome para secÃ§Ã£o vazia%pB: impossÃ­vel obter secÃ§Ã£o %pA descomprimida%pB: impossÃ­vel inicializar estado comprimido para secÃ§Ã£o %s%pB: impossÃ­vel inicializar estado descomprimido para secÃ§Ã£o %s%pB: impossÃ­vel carregar nome de secÃ§Ã£o COMDAT%pB: impossÃ­vel ordenar relocs - tÃªm mais de um tamanho%pB: impossÃ­vel ordenar relocs - tÃªm um tamanho desconhecido%pB: referÃªncia indefinida a sÃ­mbolo "%s"%pB: sÃ­mbolo indefinido "%s" em secÃ§Ã£o .opd%pB: sÃ­mbolo indefinido em relocalizaÃ§Ã£o R_PPC64_TOCSAVE%pB: redefiniÃ§Ã£o de sÃ­mbolo com versÃ£o indirecto "%s" inesperada%pB: tipo de reloc inesperado %u em secÃ§Ã£o .opd%pB: relocalizaÃ§Ã£o dinÃ¢mica contra %s nÃ£o gerida%pB: tipo de importaÃ§Ã£o nÃ£o gerido; %x%pB: valor de mÃ¡quina sparc "%lu" nÃ£o gerido detectado durante o processamento de escrita%pB: arquitectura desconhecida %s%pB: comando de carga %#x desconhecido%pB: atributo de objecto ARC %d obrigatÃ³rio desconhecido.Aviso: %pB: atributo de objecto EABI %d obrigatÃ³rio desconhecido%pB: tipo de relocalizaÃ§Ã£o %d desconhecido%pB: tipo desconhecido [%#x], secÃ§Ã£o "%s"%pB: secÃ§Ã£o tipo [%#x] "%s" desconhecida no grupo [%pA]%pB: OMIT_FP desirmanado em %pA.%pB: tipo de mÃ¡quina nÃ£o reconhecido (0x%x) em arquivo Import Library Format%pB: tipo de nome de importaÃ§Ã£o nÃ£o reconhecido; %x%pB: tipo de importaÃ§Ã£o nÃ£o reconhecido; %x%pB: relocalizaÃ§Ã£o nÃ£o reconhecida (%#x) na secÃ§Ã£o "%pA"%pB: classe de armazenamento %d nÃ£o reconhecida para %s sÃ­mbolo "%s"%pB: tipo de relocalizaÃ§Ã£o AOUT nÃ£o suportado %d%pB: arch %#x nÃ£o suportado%pB: bfd mach %#lx nÃ£o suportado%pB: mach %#x nÃ£o suportado%pB: chamada nÃ£o-PIC a IFUNC "%s" nÃ£o suportada%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado%pB: tipo de relocalizaÃ§Ã£o %#x nÃ£o suportado%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado exportado: %#x%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado importado: %#x%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado: %#x%pB: transiÃ§Ã£o %s para %s nÃ£o suportada%pB: sequÃªncia de caracteres largos 0x%02X 0x%02X nÃ£o suportada apÃ³s nome de sÃ­mbolo comeÃ§ado por "%s"
+%pB: usa instruÃ§Ãµes %s enquanto os mÃ³dulos anteriores usam instruÃ§Ãµes %s%pB: usa sÃ­mbolos prefixados com _, mas o ficheiro serÃ¡ escrito com sÃ­mbolos sem prefixo%pB: usa campos e_flags diferentes (%#x) dos mÃ³dulos anteriores (%#x)%pB: usa campos e_flags (%#x) desconhecidos diferentes dos mÃ³dulos anteriores (%#x)%pB: usa instruÃ§Ãµes incompatÃ­veis com instruÃ§Ãµes usadas em mÃ³dulos anteriores%pB: usa sÃ­mbolos sem prefixo, mas o ficheiro serÃ¡ escrito com sÃ­mbolos prefixados com _%pB: nÃ³ de versÃ£o nÃ£o encontrado para sÃ­mbolo %s%pB: a visibilidade do sÃ­mbolo "%s" mudou.%pB: aviso: ficheiro nÃºcleo truncado%pB: aviso: %pA: transporte de nÃºmero de linha: %#x > 0xffff%pB: aviso: instruÃ§Ã£o %s BLX destina-se a funÃ§Ã£o %s "%s".%pB: aviso: relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s" da secÃ§Ã£o %pA%pB: aviso: %s nÃ£o suportado em modo partilhado%pB: aviso: %s: transporte de nÃºmero de linha: 0x%lx > 0xffff%pB: aviso: BTI ligado por -z force-bti quando todas as entradas nÃ£o tÃªm BTI na secÃ§Ã£o NOTE.%pB: aviso: sÃ­mbolo "%s" COMDAT nÃ£o corresponde ao nome de secÃ§Ã£o "%s"%pB: aviso: geraÃ§Ã£o RVE PLT nÃ£o suportada%pB: aviso: Weak TLS Ã© definido pela implementaÃ§Ã£o e pode nÃ£o funcionar como esperado%pB: aviso: secÃ§Ã£o alocada "%s" nÃ£o estÃ¡ no segmento%pB: aviso: mau tamanho de opÃ§Ã£o "%s" %u menor que o seu cabeÃ§alho%pB: aviso: impossÃ­vel determinar a funÃ§Ã£o alvo para secÃ§Ã£o fictÃ­cia "%s"%pB: aviso: afirma ter 0xffff relocs, sem transporte%pB: aviso: informaÃ§Ã£o de nÃºmero de linha duplicada para "%s"%pB: aviso: Endian trocado com mÃ³dulos anteriores.%pB: aviso: a ignorar bandeira de secÃ§Ã£o %s na secÃ§Ã£o %s%pB: aviso: sÃ­mbolo ilegal em entrada de nÃºmero de linha %d%pB: aviso: Ã­ndice de sÃ­mbolo %ld ilegal em relocs%pB: aviso: Ã­ndice de sÃ­mbolo 0x%lx ilegal em entrada de nÃºmero de linha %d%pB: aviso: versÃµes elf %s e %s incompatÃ­veis.%pB: aviso: ASEs inconsistente entre e_flags e .MIPS.abiflags%pB: aviso: FP ABI inconsistente entre .gnu.attributes e .MIPS.abiflags%pB: aviso: ISA inconsistente entre e_flags e .MIPS.abiflags%pB: aviso: extensÃµes ISA inconsistentes entre e_flags e .MIPS.abiflags%pB: aviso: isymMax (%ld) Ã© maior que ifdMax (%ld)%pB: aviso: total de nÃºmero de linha (%#lx) excede tamanho de secÃ§Ã£o (%#lx)%pB: aviso: falha ao ler tabela de nÃºmero de linha%pB: aviso: a ligar ficheiros PIC com ficheiros nÃ£o-PIC%pB: aviso: a ligar ficheiros abicalls com ficheiros nÃ£o-abicalls%pB: aviso: detectado ciclo em dependÃªncias da secÃ§Ã£o%pB: aviso: detectadas mÃºltiplas tabelas de sÃ­mbolo dinÃ¢mico - a ignorar a tabela na secÃ§Ã£o %u%pB: aviso: detectadas mÃºltiplas tabelas de sÃ­mbolo - a ignorar a tabela na secÃ§Ã£o %u%pB: aviso: sÃ­mbolo para secÃ§Ã£o "%s" nÃ£o encontrado%pB: aviso: encontradas versÃµes anteriores do ficheiro objecto, recompile com as ferramentas actuais.%pB: aviso: falha ao relocalizar SDA_BASE.%pB: aviso: encontrada secÃ§Ã£o de relocalizaÃ§Ã£o "%s" para a secÃ§Ã£o %pA - a ignorar%pB: aviso: a soluÃ§Ã£o de errata STM32L4XX seleccionada nÃ£o Ã© necessÃ¡ria para arquitectura de destino%pB: aviso: a soluÃ§Ã£o de errata VFP11 seleccionada nÃ£o Ã© necessÃ¡ria para arquitectura de destino%pB: aviso: sh_link nÃ£o definido para a secÃ§Ã£o "%pA"%pB: aviso: tabela de simbolo muito grande para mmo, maior que palavras de 65535 32-bit: %d. SÃ³ "Main" serÃ¡ emitido.
 %pB: aviso: geraÃ§Ã£o PLT modo thumb-1 nÃ£o Ã© actualmente suportada%pB: aviso: acesso nÃ£o alinhado a entrada GOT.%pB: aviso: bandeira inesperada no campo flags2 de .MIPS.abiflags (0x%lx)%pB: aviso: atributo de objecto EABI desconhecido %d%pB: nÃ£o resolve relocalizaÃ§Ã£o TLS em tempo de execuÃ§Ã£o%pB:%d: mau checksum em ficheiro S-record%pB:%d: total de byte %d muito pequeno%pB:%d: carÃ¡cter "%s" inesperado em ficheiro Intel Hex%pB:%d: carÃ¡cter "%s" inesperado em ficheiro S-record%pB:%pA%s excede o tamanho de sobreposiÃ§Ã£o
-%pB:%pA: %s e %s tÃªm de estar na mesma secÃ§Ã£o de entrada%pB:%pA: erro: relocalizaÃ§Ã£o referencia sÃ­mbolo %s que foi removido pela recolha de lixo.%pB:%pA: erro: tente religar com --gc-keep-exported activado.%pB:%pA: tabela %s com correspondente %s em falta%pB:%pA: entrada de tabela %s nÃ£o alinhado dentro da tabela%pB:%pA: entrada de tabela %s fora da tabela%pB:%pA: aviso: reloc Red Hat obsoleta %s detectada contra: %s%pB:%s tem relocs normal e TLS em simultÃ¢neo%pB:%s secÃ§Ã£o %s: alinhamento 2**%u nÃ£o representÃ¡vel%pB:%u: mau checksum em ficheiro Intel Hex (esperado %u, obtido %u)%pB:%u: mau tamanho de registo de endereÃ§o estendido em ficheiro Intel Hex%pB:%u: mau tamanho de registo em endereÃ§o linear estendido em ficheiro Intel Hex%pB:%u: mau tamanho de endereÃ§o linear inicial estendido em ficheiro Intel Hex%pB:%u: mau tamanho de endereÃ§o inicial estendido em ficheiro Intel Hex%pB:%u: tipo ihex nÃ£o reconhecido %u em ficheiro Intel Hex%s defenido em entrada toc removida%s duplicado
+%pB:%pA: %s e %s tÃªm de estar na mesma secÃ§Ã£o de entrada%pB:%pA: erro: tentativa de escrita numa secÃ§Ã£o comprimida nÃ£o alocada%pB: %pA: erro: tentativa de escrita para lÃ¡ do fim da secÃ§Ã£o%pB:%pA: erro: tentativa de escrever a secÃ§Ã£o num buffer vazio%pB:%pA: erro: relocalizaÃ§Ã£o referencia sÃ­mbolo %s que foi removido pela recolha de lixo.%pB:%pA: erro: tente religar com --gc-keep-exported activado.%pB:%pA: tabela %s com correspondente %s em falta%pB:%pA: entrada de tabela %s nÃ£o alinhado dentro da tabela%pB:%pA: entrada de tabela %s fora da tabela%pB:%pA: aviso: reloc Red Hat obsoleta %s detectada contra: %s%pB:%s tem relocs normal e TLS em simultÃ¢neo%pB:%s secÃ§Ã£o %s: alinhamento 2**%u nÃ£o representÃ¡vel%pB:%u: mau checksum em ficheiro Intel Hex (esperado %u, obtido %u)%pB:%u: mau tamanho de registo de endereÃ§o estendido em ficheiro Intel Hex%pB:%u: mau tamanho de registo em endereÃ§o linear estendido em ficheiro Intel Hex%pB:%u: mau tamanho de endereÃ§o linear inicial estendido em ficheiro Intel Hex%pB:%u: mau tamanho de endereÃ§o inicial estendido em ficheiro Intel Hex%pB:%u: tipo ihex nÃ£o reconhecido %u em ficheiro Intel HexsÃ­mbolo de secÃ§Ã£o %pcrel_lo com uma adenda%s  branch         %lu
+  branch toc adj %lu
+  branch notoc   %lu
+  branch both    %lu
+  long branch    %lu
+  long toc adj   %lu
+  long notoc     %lu
+  long both      %lu
+  plt call       %lu
+  plt call save  %lu
+  plt call notoc %lu
+  plt call both  %lu
+  global entry   %lu%s defenido em entrada toc removida%s divide por zero%s duplicado
 %s duplicado em %s
 %s tem relocs normal e TLS em simultÃ¢neo%s em secÃ§Ã£o de sobreposiÃ§Ã£o%s nÃ£o definido em linker criado %pA%s: nÃ£o implementadodesvio %s muito grande para codificaÃ§Ã£o .eh_frame sdata4%s: definiÃ§Ã£o TLS em secÃ§Ã£o %pB %pA nÃ£o corresponde a definiÃ§Ã£o nÃ£o-TLS em secÃ§Ã£o %pB %pA%s: definiÃ§Ã£o TLS em secÃ§Ã£o %pB %pA nÃ£o corresponde a referÃªncia nÃ£o-TLS em %pB%s: referÃªncia TLS em %pB nÃ£o corresponde a definiÃ§Ã£o nÃ£o-TLS em secÃ§Ã£o %pB %pA%s: referÃªncia TLS em %pB nÃ£o corresponde a referÃªncia nÃ£o-TLS em %pB%s: sem tal sÃ­mbolo%s: nÃ£o implementado%s: nÃ£o suportado%s: versÃ£o indefinida: %s(no desvio de bit %u)
 (descritor)
@@ -1179,8 +1200,8 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 *desconhecido**desconhecido*   , Valor: %#08lx
 , aliÃ¡s: %u
 , desvio ext fixup: %u, no_opt psect off: %u, sub-tipo: %u (%s)
-, vector sÃ­mbolo rva: - %pB Ã© 64-bit, %pB nÃ£o Ã©-mips32r2 -mfp64 (12 callee-saved)transporte na entrada .eh_frame_hdr..eh_frame_hdr refere FDEs sobrepostos.secÃ§Ã£o .got nÃ£o imediatamente apÃ³s secÃ§Ã£o .pltfalha de uniÃ£o .rsrc: uma pasta corresponde a uma folhafalha de uniÃ£o .rsrc: versÃµes de pasta diferentesfalha de uniÃ£o .rsrc: pastas com caracterÃ­sticas diferentesfalha de uniÃ£o .rsrc: folha duplicadafalha de uniÃ£o .rsrc: folha duplicada: %sfalha de uniÃ£o .rsrc: recurso de cadeia duplicado: %dfalha de uniÃ£o .rsrc: mÃºltiplos manifestos nÃ£o-predefinidos32-bit duplo, relocalizaÃ§Ã£o relativa 32bits gp ocorre para um sÃ­mbolo externo4-byte4-bytes64 bits *nÃ£o geridos*
-64-bit duplo, 8-byte8-bytes: instruÃ§Ãµes m32r: instruÃ§Ãµes m32r2: instruÃ§Ãµes m32rx: instruÃ§Ãµes n1: instruÃ§Ãµes n1h; recompile com -fPIC<bits de bandeira definidos nÃ£o reconhecidos><informaÃ§Ã£o corrupta> %s<tamanho de cadeia corrupto: %#x>
+, vector sÃ­mbolo rva: - %pB Ã© 64-bit, %pB nÃ£o Ã©-march=%s: extensÃ£o ISA %s nÃ£o estÃ¡ em ordem alfabÃ©tica: "%s" tem de estar antes de "%s".-march=%s: %s tem de separar com _-march=%s: extensÃ£o ISA %s duplicada: "%s"-march=%s: esperado nÃºmero apÃ³s "%dp".-march=%s: cadeia ISA nÃ£o estÃ¡ na ordem canÃ³nica. "%c"-march=%s: cadeia ISA tem de comeÃ§ar por rv32 ou rv64-march=%s: extensÃ£o ISA %s invÃ¡lida ou desconhecida: "%s"-march=%s: extensÃ£o "d" requer a extensÃ£o "f"-march=%s: extensÃ£o "q" requer a extensÃ£o "d"-march=%s: o 1Âº sub-conjunto ISA tem de ser "e", "i" ou "g"-march=%s: rv%de nÃ£o Ã© uma base ISA vÃ¡lida-march=%s: rv32 nÃ£o suporta a extensÃ£o "q"-march=%s: rv32e nÃ£o suporta a extensÃ£o "f"-march=%s: cadeia ISA inesperada no final: %s-march=%s: sub-conjunto ISA "%c" nÃ£o suportado-mips32r2 -mfp64 (12 callee-saved)transporte na entrada .eh_frame_hdr..eh_frame_hdr refere FDEs sobrepostos.secÃ§Ã£o .got nÃ£o imediatamente apÃ³s secÃ§Ã£o .pltfalha de uniÃ£o .rsrc: uma pasta corresponde a uma folhafalha de uniÃ£o .rsrc: versÃµes de pasta diferentesfalha de uniÃ£o .rsrc: pastas com caracterÃ­sticas diferentesfalha de uniÃ£o .rsrc: folha duplicadafalha de uniÃ£o .rsrc: folha duplicada: %sfalha de uniÃ£o .rsrc: recurso de cadeia duplicado: %dfalha de uniÃ£o .rsrc: mÃºltiplos manifestos nÃ£o-predefinidos32-bit duplo, relocalizaÃ§Ã£o relativa 32bits gp ocorre para um sÃ­mbolo externo4-byte4-bytes64 bits *nÃ£o geridos*
+64-bit duplo, 8-byte8-bytes: instruÃ§Ãµes m32r: instruÃ§Ãµes m32r2: instruÃ§Ãµes m32rx: instruÃ§Ãµes n1: instruÃ§Ãµes n1h; recompile com -fPIC; recompile com -fPIE<bits de bandeira definidos nÃ£o reconhecidos><informaÃ§Ã£o corrupta> %s<tamanho de cadeia corrupto: %#x>
 <desvio de cadeia corrupto: %#lx>
 <corrupto><tipo de pasta desconhecido: %d>
 <bandeiras de mÃ¡scara desconhecidas><desconhecido>reloc @pltoff contra sÃ­mbolo localBASE_IMAGE       BFD falha de asserÃ§Ã£o %s %s:%dBFD erro interno %s, a abortar em %s:%d
@@ -1193,7 +1214,7 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 CTL_STLOC (definir localizaÃ§Ã£o)
 CabeÃ§alho de copyright
 SecÃ§Ã£o .rsrc corrompida detectada!
-DSO em falta da linha de comandosErro Dwarf: encontrado atributo DW_AT_comp_dir com uma forma nÃ£o-cadeia.Erro Dwarf: detectada recursividade em instÃ¢ncia abstracta.Erro Dwarf: impossÃ­vel encontrar a secÃ§Ã£o %s.Erro Dwarf: impossÃ­vel encontrar nÃºmero abbrev %u.Erro Dwarf: encontrado tamanho de endereÃ§o "%u", este leitor nÃ£o gere tamanhos maiores que "%u".Erro Dwarf: encontrada versÃ£o dwarf "%u", este leitor sÃ³ gere informaÃ§Ã£o das versÃµes 2, 3, 4 e 5.Erro Dwarf: ponteiro de informaÃ§Ã£o excede o final dos atributosErro Dwarf: instÃ¢ncia DIE ref abstracta invÃ¡lida.Erro Dwarf: mÃ¡ximo de operaÃ§Ãµes por instruÃ§Ã£o invÃ¡lido.Erro Dwarf: valor FORM invÃ¡lido ou nÃ£o gerido: %#x.Erro Dwarf: tamanho %u do selector de segmento de informaÃ§Ã£o de linha nÃ£o suportadoErro Dwarf: secÃ§Ã£o de nÃºmero de linha modificada.Erro Dwarf: secÃ§Ã£o de nÃºmero de linha modificada (mau nÂº de ficheiro).Erro Dwarf: sem espaÃ§o ao ler opcodesErro Dwarf: sem espaÃ§o ao ler o prÃ³logoErro Dwarf: versÃ£o %d .debug_line version nÃ£o gerida.Erro Dwarf: total de formato zero.DW_EH_PE_datarel nÃ£o especificado para esta arquitectura.Pasta de depuraÃ§Ã£oTabela de mÃ³dulo de depuraÃ§Ã£o:
+DSO em falta da linha de comandosErro Dwarf: encontrado atributo DW_AT_comp_dir com uma forma nÃ£o-cadeia.Erro Dwarf: detectada recursividade em instÃ¢ncia abstracta.Erro Dwarf: impossÃ­vel encontrar a secÃ§Ã£o %s.Erro Dwarf: impossÃ­vel encontrar nÃºmero abbrev %u.Erro Dwarf: impossÃ­vel encontrar especificaÃ§Ã£o de variÃ¡vel no desvio %lxErro Dwarf: encontrado tamanho de endereÃ§o "%u", este leitor nÃ£o gere tamanhos maiores que "%u".Erro Dwarf: encontrada versÃ£o dwarf "%u", este leitor sÃ³ gere informaÃ§Ã£o das versÃµes 2, 3, 4 e 5.Erro Dwarf: ponteiro de informaÃ§Ã£o excede o final dos atributosErro Dwarf: instÃ¢ncia DIE ref abstracta invÃ¡lida.Erro Dwarf: mÃ¡ximo de operaÃ§Ãµes por instruÃ§Ã£o invÃ¡lido.Erro Dwarf: valor FORM invÃ¡lido ou nÃ£o gerido: %#x.Erro Dwarf: tamanho %u do selector de segmento de informaÃ§Ã£o de linha nÃ£o suportadoErro Dwarf: secÃ§Ã£o de nÃºmero de linha modificada.Erro Dwarf: secÃ§Ã£o de nÃºmero de linha modificada (mau nÂº de ficheiro).Erro Dwarf: sem espaÃ§o ao ler opcodesErro Dwarf: sem espaÃ§o ao ler o prÃ³logoErro Dwarf: versÃ£o %d .debug_line version nÃ£o gerida.Erro Dwarf: total de formato zero.DW_EH_PE_datarel nÃ£o especificado para esta arquitectura.Pasta de depuraÃ§Ã£oTabela de mÃ³dulo de depuraÃ§Ã£o:
 Tabela de sÃ­mbolos de depuraÃ§Ã£o:
 Pasta de atraso de importaÃ§Ã£o%s obsoleto chamado
 %s obsoleto chamado em %s linha %d em %s
@@ -1201,7 +1222,7 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 Desvio da entrada   = 0x%.8lx (%ld)
 Erro: %pB tem ambos os atributos Tag_MPextension_use actual e legadoPasta de excepÃ§Ãµes [.pdata]Pasta de exportaÃ§Ã£o [.edata (ou onde o encontrÃ¡mos)]Bandeiras de exportaÃ§Ã£o 			%lx
 ExportaÃ§Ã£o RVAcodificaÃ§Ã£o FDE em %pB(%pA) impede a criaÃ§Ã£o de tabela .eh_frame_hdr.FDPIC ainda nÃ£o suporta que a relocalizaÃ§Ã£o %s se torne dinÃ¢mica para executÃ¡velFILES_VOLUMES    FPU-2.0FPU-3.0Campo de bandeira   = 0x%.2x
-Reencaminhador RVAGALAXY           RelocalizaÃ§Ãµes GOT e PLT nÃ£o podem ser reparadas com um linker nÃ£o dinÃ¢mico.tamanho de tabela GOT fora do intervaloUsada relocalizaÃ§Ã£o relativa GP sem GP definidoRelocalizaÃ§Ã£o relativa GP com _gp nÃ£o definidorelocalizaÃ§Ã£o GPDISP nÃ£o encontrou instruÃ§Ãµes ldah e ldaTabela de sÃ­mbolo global:
+Reencaminhador RVAGALAXY           secÃ§Ã£o GNU_MBIND nÃ£o Ã© suportadaRelocalizaÃ§Ãµes GOT e PLT nÃ£o podem ser reparadas com um linker nÃ£o dinÃ¢mico.tamanho de tabela GOT fora do intervaloUsada relocalizaÃ§Ã£o relativa GP sem GP definidoRelocalizaÃ§Ã£o relativa GP com _gp nÃ£o definidorelocalizaÃ§Ã£o GPDISP nÃ£o encontrou instruÃ§Ãµes ldah e ldaTabela de sÃ­mbolo global:
 Flutuante rÃ­gido (32-bit CPU, 64-bit FPU)
 Flutuante rÃ­gido (32-bit CPU, qualquer FPU)
 Flutuante rÃ­gido (MIPS32r2 64-bit FPU 12 callee-saved)
@@ -1209,8 +1230,8 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 Flutuante rÃ­gido (precisÃ£o simples)
 Comp. flutuante rÃ­gido (32-bit CPU, 64-bit FPU)
 Flutuante rÃ­gido ou suave
-ID: %#08lxIDC - verificaÃ§Ã£o Ident Consistency
-IMAGE_ACTIVATOR  INPUT_SECTION_FLAGS nÃ£o sÃ£o suportadas.IO               ActivaÃ§Ã£o da imagem:  (tam=%u)
+propriedades IBT e SHSTKpropriedade IBTID: %#08lxIDC - verificaÃ§Ã£o Ident Consistency
+SÃ­mbolo IFUNC %s na tabela dinÃ¢mica de sÃ­mbolos - IFUNCS nÃ£o sÃ£o suportadosIMAGE_ACTIVATOR  INPUT_SECTION_FLAGS nÃ£o sÃ£o suportadas.IO               ActivaÃ§Ã£o da imagem:  (tam=%u)
 Fixup do activador de imagem: (principal: %u, menor: %u)
 IdentificaÃ§Ã£o da imagem: (principal: %u, menor: %u)
 Descritor de secÃ§Ã£o de imagem: (principal: %u, menor: %u, tamanho: %u, desvio: %u)
@@ -1253,7 +1274,7 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 Removida propriedade %W para unir %pB (nÃ£o encontrado) e %pB (0x%v)
 Removida propriedade %W para unir %pB e %pB
 Removida propriedade %W para unir %pB e %pB (nÃ£o encontrado)
-ReservadoPasta de recursos [.rsrc]endereÃ§o S12 (%lx) nÃ£o estÃ¡ dentro de RAM(0x2000-0x4000) partilhado, deve desviar manualmente o endereÃ§o no seu cÃ³digorelocalizaÃ§Ã£o SDA com _SDA_BASE_ nÃ£o definidoSECURITY         SEC_RELOC sem relocs na secÃ§Ã£o %pASHELL            SHRFXDSHRPICuso SIMD: SPSC - definiÃ§Ã£o de secÃ§Ã£o Shared Image Program
+ReservadoPasta de recursos [.rsrc]endereÃ§o S12 (%lx) nÃ£o estÃ¡ dentro de RAM(0x2000-0x4000) partilhado, deve desviar manualmente o endereÃ§o no seu cÃ³digorelocalizaÃ§Ã£o SDA com _SDA_BASE_ nÃ£o definidoSECURITY         SEC_RELOC sem relocs na secÃ§Ã£o %pASHELL            SHRFXDSHRPICpropriedade SHSTKuso SIMD: SPSC - definiÃ§Ã£o de secÃ§Ã£o Shared Image Program
 STABLE           STA_CKARG (comparar argumento de procedimento)
 STA_GBL (stack global) %.*s
 STA_LI (stack literal)
@@ -1313,11 +1334,11 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 Aviso: tamanho de secÃ§Ã£o %s (%ld) Ã© menor que o tamanho virtual (%ld)
 Aviso: tamanho de secÃ§Ã£o %s Ã© zero
 A escrever dataÃ§Ã£o armap actualizadoO endereÃ§o XGATE (%lx) nÃ£o estÃ¡ dentro de RAM(0xE000-0xFFFF) partilhado, deve desviar manualmente o endereÃ§o e, possivelmente gerir a pÃ¡gina, no seu cÃ³digo.[%u]: inferior: %u, superior: %u
-[abi=16-bit int, [abi=32-bit int, 8cujo nome estÃ¡ perdido]_bfd_vms_output_counted chamado com demasiados bytes_bfd_vms_output_counted chamado com zero bytes"%s" refere-se a funÃ§Ã£o nÃ£o de entrada.um objecto PDEum objecto PIEum objecto partilhadoendereÃ§oendereÃ§o nÃ£o alinhado por wordencontrado cÃ³digo mÃ¡quina ELF alternativo (%d) em %pB, esperado %dArquivo sem Ã­ndice; execute ranlib para adicionar umFicheiro objecto de arquivo em formato erradodescritor de matriz:
+[abi=16-bit int, [abi=32-bit int, 8cujo nome estÃ¡ perdido]transporte de desvio de chamada __tls_get_addr_bfd_vms_output_counted chamado com demasiados bytes_bfd_vms_output_counted chamado com zero bytes"%s" refere-se a funÃ§Ã£o nÃ£o de entrada.um objecto PDEum objecto PIEum objecto partilhadoendereÃ§oendereÃ§o nÃ£o alinhado por wordencontrado cÃ³digo mÃ¡quina ELF alternativo (%d) em %pB, esperado %dArquivo sem Ã­ndice; execute ranlib para adicionar umFicheiro objecto de arquivo em formato erradodescritor de matriz:
 matriz, dim: %u, bitmap: arsize: %u, a0: 0x%08x
 atÃ³mico, tipo=0x%02x %s
 Tentativa de converter L32R/CALLX para CALL falhouTentativa de fazer ligaÃ§Ã£o relocalizÃ¡vel com entrada %s e saÃ­da %smau Ã­ndice de secÃ§Ã£o em %sMau valorendereÃ§o de banco [%lx:%04lx] (%lx) nÃ£o estÃ¡ no mesmo banco que o endereÃ§o actual [%lx:%04lx] (%lx)base: %u, pos: %u
-bfd_mach_o_canonicalize_symtab: impossÃ­vel carregar sÃ­mbolosbfd_mach_o_read_section_32: valor de alinhamento muito grande: %#lx, a usar 32bfd_mach_o_read_section_64: valor de alinhamento muito grande: %#lx, a usar 32bfd_mach_o_read_symtab_symbol: nome fora do intervalo (%lu >= %u)bfd_mach_o_read_symtab_symbol: sÃ­mbolo "%s" especificou secÃ§Ã£o invÃ¡lida %d (mÃ¡x %lu): a definir como indefinidabfd_mach_o_read_symtab_symbol: sÃ­mbolo "%s" especificou campo de tipo invÃ¡lido 0x%x: a definir como indefinidabfd_mach_o_read_symtab_symbol: impossÃ­vel ler %d bytes em %ubfd_mach_o_read_symtab_symbols: impossÃ­vel alocar memÃ³ria para sÃ­mbolosbfd_mach_o_scan: arquitectura desconhecida 0x%lx/0x%lxbfd_pef_scan: arquitectura desconhecida 0x%lxblkbeg: endereÃ§o: 0x%08x, nome: %.*s
+bfd_mach_o_canonicalize_symtab: impossÃ­vel carregar sÃ­mbolosbfd_mach_o_read_section_32: valor de alinhamento muito grande: %#lx, a usar 32bfd_mach_o_read_section_64: valor de alinhamento muito grande: %#lx, a usar 32bfd_mach_o_read_symtab_symbol: nome fora do intervalo (%lu >= %u)bfd_mach_o_read_symtab_symbol: sÃ­mbolo "%s" especificou secÃ§Ã£o invÃ¡lida %d (mÃ¡x %lu): a definir como indefinidabfd_mach_o_read_symtab_symbol: sÃ­mbolo "%s" especificou campo de tipo invÃ¡lido 0x%x: a definir como indefinidabfd_mach_o_read_symtab_symbol: impossÃ­vel ler %d bytes em %ubfd_mach_o_scan: arquitectura desconhecida 0x%lx/0x%lxbfd_pef_scan: arquitectura desconhecida 0x%lxblkbeg: endereÃ§o: 0x%08x, nome: %.*s
 blkend: tamanho: 0x%08x
 Erro de ligaÃ§Ã£o BFD: ramo (PC rel16) para secÃ§Ã£o (%s) nÃ£o suportadoRamo para um endereÃ§o nÃ£o alinhado por instruÃ§Ã£obss-plt forÃ§ado pelo perfilbss-plt forÃ§ado devido a %pBimpossÃ­vel construir fictÃ­cio de ramo "%s"impossÃ­vel encontrar fictÃ­cio de ramo "%s"ImpossÃ­vel converter um ramo para JALX para um endereÃ§o nÃ£o alinhado por wordImpossÃ­vel converter um salto para JALX para um endereÃ§o nÃ£o alinhado por wordimpossÃ­vel criar entrada fictÃ­cia %simpossÃ­vel emitir relocalizaÃ§Ãµes dinÃ¢micas em secÃ§Ã£o sÃ³ de leituraimpossÃ­vel emitir fixups em secÃ§Ã£o sÃ³ de leituraimpossÃ­vel encontrar EMH no primeiro registo GST
 impossÃ­vel ler DMT
@@ -1338,22 +1359,21 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 impossÃ­vel ler cabeÃ§alho de registo GST
 impossÃ­vel ler tamanho do registo GST
 classe: %u, dtype: %u, tamanho: %u, ponteiro: 0x%08x
-secÃ§Ã£o %s corrupta em %pBRegisto EEOM corrupto - tamanho demasiado pequenoRegisto EGSD corrupto: campo psindx muito grande (%#lx)Registo EGSD corrupto: tamanho (%#x) muito pequenoRegisto EGSD corrupto: tamanho (%#x) maior que o espaÃ§o restante (%#x)Registo EGSD corrupto: tamanho (%#x) muito pequenoRegisto EIHD corrupto - tamanho muito pequenoEncontrado registo ETIR corruptoValor vms corruptoimpossÃ­vel encontrar a secÃ§Ã£o %simpossÃ­vel localizar sÃ­mbolo linker especial __ctbpimpossÃ­vel localizar sÃ­mbolo linker especial __epimpossÃ­vel localizar sÃ­mbolo linker especial __gpimpossÃ­vel abrir imagem partilhada "%s" de "%s"cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]relocalizaÃ§Ã£o perigosadelta pc +%-4ddelta_pc_l: +0x%08x
+secÃ§Ã£o %s corrupta em %pBRegisto EEOM corrupto - tamanho demasiado pequenotipo de registo EGSD %d corrupto: tamanho (%#x) maior que o espaÃ§o restante (%#x)tipo de registo EGSD %d corrupto: tamanho (%#x) muito pequenoRegisto EGSD corrupto: campo psindx muito grande (%#lx)Registo EGSD corrupto: tamanho (%#x) muito pequenoRegisto EIHD corrupto - tamanho muito pequenoEncontrado registo ETIR corruptoValor vms corruptoimpossÃ­vel encontrar a secÃ§Ã£o %simpossÃ­vel localizar sÃ­mbolo linker especial __ctbpimpossÃ­vel localizar sÃ­mbolo linker especial __epimpossÃ­vel localizar sÃ­mbolo linker especial __gpimpossÃ­vel abrir imagem partilhada "%s" de "%s"cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]relocalizaÃ§Ã£o perigosaerro de relocalizaÃ§Ã£o perigosadelta pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
 descdimct: %u, aflags: 0x%02x, dÃ­gitos: %u, escala: %u
 secÃ§Ã£o de saÃ­da descartada: "%pA"a descartar intervalo FDE de endereÃ§o zero em %pB(%pA).
 intervalo descontÃ­nuo (nr: %u)
-relocalizaÃ§Ã£o dinÃ¢mica em secÃ§Ã£o sÃ³ de leituravariÃ¡vel dinÃ¢mica "%s" tem tamanho zeroerro de contagem dynreloc para %pB, secÃ§Ã£o %pAFunÃ§Ã£o de entrada "%s" desapareceu do cÃ³digo de seguranÃ§a.enumbeg, tam: %u, nome: %.*s
+dst_define_location %u muito granderelocalizaÃ§Ã£o dinÃ¢mica em secÃ§Ã£o sÃ³ de leituravariÃ¡vel dinÃ¢mica "%s" tem tamanho zeroerro de contagem dynreloc para %pB, secÃ§Ã£o %pAFunÃ§Ã£o de entrada "%s" desapareceu do cÃ³digo de seguranÃ§a.enumbeg, tam: %u, nome: %.*s
 enumelt, nome: %.*s
 enumend
 epÃ­logo: bandeiras: %u, total: %u
-erro em %pB(%pA); nÃ£o serÃ¡ criada nenhuma tabela .eh_frame_hdr.Erro  ao ler %s: %serro ao ler tipo de cpu de dados privados elferro: %pB nÃ£o usa instruÃ§Ãµes %s, enquanto %pB simerro: %pB jÃ¡ estÃ¡ no formato final BE8erro: %pB estÃ¡ compilado para APCS-%d, enquanto o alvo %pB usa APCS-%derro: %pB estÃ¡ compilado para EP9312, enquanto %pB estÃ¡ compilado para XScaleerro: %pB precisa de alinhamento 8-byte mas %pB estÃ¡ definido para alinhamento 4-byteerro: %pB passa flutuantes em registos flutuantes, enquanto %pB os passa em registos inteiroserro: %pB passa flutuantes em registos inteiros, enquanto %pB os passa em registos flutuanteserro: %pB requer mais alinhamento de matriz do que %pB preservaerro: %pB requer mais alinhamento de stack do que %pB preservaerro: %pB usa alinhamento de pilha %u-byte mas a saÃ­da usa alinhamento de pilha %u-byte.erro: %pB usa instruÃ§Ãµes %s mas %pB usa %serro: %pB usa instruÃ§Ãµes%s, enquanto %pB nÃ£oerro: %pB usa doubles 64-bit mas %pB usa doubles 32-biterro: %pB usa FPU-3.0 mas %pB sÃ³ suporta FPU-2.0erro: %pB usa argumentos de registo VFP, %pB nÃ£oerro: %pB usa equipamento FP, enquanto %pB usa programa FPerro: %pB usa argumentos de registo iWMMXt, %pB nÃ£oerro: %pB usa programa FP, enquanto %pB usa equipamento FPerro: %pB usa o modelo de cÃ³digo %s enquanto %pB usa o modelo de cÃ³digo %serro: %pB usa o modelo de dados %s mas %pB sÃ³ usa instruÃ§Ãµes MSP430erro: %pB usa o modelo de dados %s enquanto %pB usa o modelo de dados %serro: %pB usa o modelo de cÃ³digo grande mas %pB usa instruÃ§Ãµes MSP430erro: %pB usa o modelo de cÃ³digo pequeno mas %pB usa o modelo de dados %serro: %pB: <propriedade x86 corrompida (0x%x) tamanho: 0x%x>erro: %pB: cadeia ISA de entrada (%s) nÃ£o corresponde Ã  saÃ­da (%s).erro: %pB: cadeia ISA trocada para unir "%s" e "%s".erro: %pB: versÃ£o ISA trocada para "%s" extensÃ£o. %d.%d vs %d.%derro: %pB: conflitos de endereÃ§amento relativo SB com o uso de R9erro: %pB: XLEN nÃ£o suportado (%u), poderÃ¡ estar a usar a emulaÃ§Ã£o errada.erro: %pB: XLEN de entrada (%u) nÃ£o corresponde Ã  saÃ­da (%u).erro: %pB: Big-endian R2 nÃ£o Ã© suportado.erro: %pB: impossÃ­vel misturar rf16 com conjunto de registo completo %pB.erro: %pB: arquitecturas CPU %d/%d em conflitoerro: %pB: conflito de atributos de extensÃ£o ISA %s com %s.erro: %pB: perfis de arquitectura %c/%c em conflitoerro: %pB: conflito de atributos %s.erro: %pB: conflito de atributos %s: %s com %s.erro: %pB: versÃ£o priv spec em conflito (principal/menor/revisÃ£o).erro: %pB: uso de R9 em conflitoerro: %pB: cadeia ISA "%s" corrompida. Primeira letra esperada era "i" ou "e", obtida "%s".erro: %pB: objecto tem conteÃºdo especifico do fabricante que tem de ser processado por "%s"erro: %pB: etiqueta do objecto "%d, %s" Ã© incompatÃ­vel com etiqueta "%d, %s"erro: %pB: detectado ficheiro objecto antigo incompatÃ­velerro: %pB: tamanho da secÃ§Ã£o %pA nÃ£o Ã© mÃºltiplo do tamanho do endereÃ§oerro: %pB: impossÃ­vel unir atributos base CPU %s com %s.erro: %pB: impossÃ­vel unir atributos de extensÃ£o ISA %s.erro: %pB: impossÃ­vel unir atributos de virtualizaÃ§Ã£o com %pBerro: %pB: arquitectura CPU desconhecidaERRO: tentativa de ligar %pB com um binÃ¡rio %pB de diferente arquitecturaerro: impossÃ­vel encontrar sÃ­mbolo: %s.erro: formato fp16 enganado entre %pB e %pBerro: tipo de relocalizaÃ§Ã£o inapropriado para biblioteca partilhada (esqueceu-se de -fpic?)erro: objecto fonte %pB tem versÃ£o EABI %d, mas o alvo %pB tem versÃ£o EABI %dErro: a arquitectura ARC4 jÃ¡ nÃ£o Ã© suportada.erro: sÃ­mbolo __rtinit indefinidoerro: valor Tag_ABI_array_object_align_expected desconhecido em %pBerro: valor Tag_ABI_array_object_alignment desconhecido em %pBEncontrados erros ao processar o ficheiro %pBexecutÃ¡velfalha ao alocar espaÃ§o para nova secÃ§Ã£o APUinfo.falha ao computar nova secÃ§Ã£o APUinfo.Falha ao procurar reloc HI16 anteriorfalha ao instalar nova secÃ§Ã£o APUinfo.Falha ao actualizar desvios de ficheiro na pasta de depuraÃ§Ã£oerro fatal ao criar .fixupFormato de ficheiro ambÃ­guoFormato de ficheiro nÃ£o reconhecidoFicheiro em formato erradoFicheiro muito grandeFicheiro truncadoemitidos mais avisos sobre a codificaÃ§Ã£o FDE impedir a geraÃ§Ã£o de .eh_frame_hdrlinker genÃ©rico nÃ£o pode gerir %sendereÃ§o relativo de ponteiro global fora do intervalorelocalizaÃ§Ã£o relativa de ponteiro global no endereÃ§o 0x%08x com _gp nÃ£o definido
-relocalizaÃ§Ã£o relativa de ponteiro global com _gp nÃ£o definidosÃ­mbolo ocultosÃ­mbolo oculto tipos de cpu incompatÃ­veis em ficheiros mach-0: %ld vs %ldincr_linum(b): +%u
+erro em %pB(%pA); nÃ£o serÃ¡ criada nenhuma tabela .eh_frame_hdr.Erro  ao ler %s: %serro ao ler tipo de cpu de dados privados elferro: %pB pode usar a regiÃ£o superior para dados, mas %pB assume que os dados estÃ£o exclusivamente na memÃ³ria inferiorerro: %pB nÃ£o usa instruÃ§Ãµes %s, enquanto %pB simerro: %pB jÃ¡ estÃ¡ no formato final BE8erro: %pB estÃ¡ compilado para APCS-%d, enquanto o alvo %pB usa APCS-%derro: %pB estÃ¡ compilado para EP9312, enquanto %pB estÃ¡ compilado para XScaleerro: %pB precisa de alinhamento 8-byte mas %pB estÃ¡ definido para alinhamento 4-byteerro: %pB passa flutuantes em registos flutuantes, enquanto %pB os passa em registos inteiroserro: %pB passa flutuantes em registos inteiros, enquanto %pB os passa em registos flutuanteserro: %pB requer mais alinhamento de matriz do que %pB preservaerro: %pB requer mais alinhamento de stack do que %pB preservaerro: %pB usa alinhamento de pilha %u-byte mas a saÃ­da usa alinhamento de pilha %u-byte.erro: %pB usa instruÃ§Ãµes %s mas %pB usa %serro: %pB usa instruÃ§Ãµes%s, enquanto %pB nÃ£oerro: %pB usa doubles 64-bit mas %pB usa doubles 32-biterro: %pB usa FPU-3.0 mas %pB sÃ³ suporta FPU-2.0erro: %pB usa argumentos de registo VFP, %pB nÃ£oerro: %pB usa equipamento FP, enquanto %pB usa programa FPerro: %pB usa argumentos de registo iWMMXt, %pB nÃ£oerro: %pB usa programa FP, enquanto %pB usa equipamento FPerro: %pB usa o modelo de cÃ³digo %s enquanto %pB usa o modelo de cÃ³digo %serro: %pB usa o modelo de dados %s mas %pB sÃ³ usa instruÃ§Ãµes MSP430erro: %pB usa o modelo de dados %s enquanto %pB usa o modelo de dados %serro: %pB usa o modelo de cÃ³digo grande mas %pB usa instruÃ§Ãµes MSP430erro: %pB usa o modelo de cÃ³digo pequeno mas %pB usa o modelo de dados %serro: %pB: <tamanho AArch64 corrompido usado: 0x%x>erro: %pB: <propriedade x86 corrompida (0x%x) tamanho: 0x%x>erro: %pB: cadeia ISA de entrada (%s) nÃ£o corresponde Ã  saÃ­da (%s).erro: %pB: cadeia ISA trocada para unir "%s" e "%s".erro: %pB: versÃ£o ISA trocada para "%s" extensÃ£o. %d.%d vs %d.%derro: %pB: conflitos de endereÃ§amento relativo SB com o uso de R9erro: %pB: XLEN nÃ£o suportado (%u), poderÃ¡ estar a usar a emulaÃ§Ã£o errada.erro: %pB: XLEN de entrada (%u) nÃ£o corresponde Ã  saÃ­da (%u).erro: %pB: Big-endian R2 nÃ£o Ã© suportado.erro: %pB: impossÃ­vel misturar rf16 com conjunto de registo completo %pB.erro: %pB: arquitecturas CPU %d/%d em conflitoerro: %pB: conflito de atributos de extensÃ£o ISA %s com %s.erro: %pB: perfis de arquitectura %c/%c em conflitoerro: %pB: conflito de atributos %s.erro: %pB: conflito de atributos %s: %s com %s.erro: %pB: uso de R9 em conflitoerro: %pB: cadeia ISA "%s" corrompida. Primeira letra esperada era "i" ou "e", obtida "%s".erro: %pB: objecto tem conteÃºdo especifico do fabricante que tem de ser processado por "%s"erro: %pB: etiqueta do objecto "%d, %s" Ã© incompatÃ­vel com etiqueta "%d, %s"erro: %pB: detectado ficheiro objecto antigo incompatÃ­velerro: %pB: tamanho da secÃ§Ã£o %pA nÃ£o Ã© mÃºltiplo do tamanho do endereÃ§oerro: %pB: impossÃ­vel unir atributos base CPU %s com %s.erro: %pB: impossÃ­vel unir atributos de extensÃ£o ISA %s.erro: %pB: impossÃ­vel unir atributos de virtualizaÃ§Ã£o com %pBerro: %pB: arquitectura CPU desconhecidaERRO: tentativa de ligar %pB com um binÃ¡rio %pB de diferente arquitecturaerro: impossÃ­vel encontrar sÃ­mbolo: %s.erro: formato fp16 enganado entre %pB e %pBerro: tipo de relocalizaÃ§Ã£o inapropriado para biblioteca partilhada (esqueceu-se de -fpic?)erro: objecto fonte %pB tem versÃ£o EABI %d, mas o alvo %pB tem versÃ£o EABI %dErro: a arquitectura ARC4 jÃ¡ nÃ£o Ã© suportada.erro: sÃ­mbolo __rtinit indefinidoerro: valor Tag_ABI_array_object_align_expected desconhecido em %pBerro: valor Tag_ABI_array_object_alignment desconhecido em %pBEncontrados erros ao processar o ficheiro %pBexecutÃ¡velfalha ao alocar espaÃ§o para nova secÃ§Ã£o APUinfo.falha ao computar nova secÃ§Ã£o APUinfo.Falha ao procurar reloc HI16 anteriorfalha ao instalar nova secÃ§Ã£o APUinfo.Falha ao actualizar desvios de ficheiro na pasta de depuraÃ§Ã£oerro fatal ao criar .fixupFormato de ficheiro ambÃ­guoFormato de ficheiro nÃ£o reconhecidoFicheiro em formato erradoFicheiro muito grandeFicheiro truncadoemitidos mais avisos sobre a codificaÃ§Ã£o FDE impedir a geraÃ§Ã£o de .eh_frame_hdrlinker genÃ©rico nÃ£o pode gerir %sendereÃ§o relativo de ponteiro global fora do intervalorelocalizaÃ§Ã£o relativa de ponteiro global com _gp nÃ£o definidosÃ­mbolo ocultosÃ­mbolo oculto tipos de cpu incompatÃ­veis em ficheiros mach-0: %ld vs %ldincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
 indirecto, definido em 0x%08x
-Erro interno: transporte de stack em reloc RL78Erro interno: sub-transporte de stack em reloc RL78erro interno: adenda devia ser zero para %serro interno: detectado ramo/salto para um endereÃ§o Ã­mparerro interno: erro perigosoerro interno: relocalizaÃ§Ã£o perigosaerro interno: uniÃ£o da arquitectura "%s" com a arquitectura "%s" produziu uma arquitectura desconhecidaerro interno: erro fora do intervaloerro interno: tipo de relocalizaÃ§Ã£o suspeito usado em biblioteca partilhadaerro interno: erro desconhecidoerro interno: erro relocalizaÃ§Ã£o nÃ£o suportadainconsistÃªncia interna no tamanho da secÃ§Ã£o .got.locInconsistÃªncia interna: resta %lu != mÃ¡x %lu.
-  Por favor, reporte este erro.sÃ­mbolo internosÃ­mbolo interno Tipo de relocalizaÃ§Ã£o "%s" TARGET2 invÃ¡lido.Alvo bfd invÃ¡lidoConteÃºdo invÃ¡lido na secÃ§Ã£o %pARelocalizaÃ§Ã£o de entrada invÃ¡lida ao produzir saÃ­da de formato nÃ£o-ELF, nÃ£o-mmo.
+Erro interno: transporte de stack em reloc RL78Erro interno: sub-transporte de stack em reloc RL78erro interno: adenda devia ser zero para %serro interno: detectado ramo/salto para um endereÃ§o Ã­mparerro interno: erro perigosoerro interno: relocalizaÃ§Ã£o perigosaerro interno: uniÃ£o da arquitectura "%s" com a arquitectura "%s" produziu uma arquitectura desconhecidaerro interno: erro fora do intervaloerro interno: relocalizaÃ§Ã£o nÃ£o suportadaerro interno: tipo de relocalizaÃ§Ã£o suspeito usado em biblioteca partilhadaerro interno: erro desconhecidoerro interno: erro relocalizaÃ§Ã£o nÃ£o suportadainconsistÃªncia interna no tamanho da secÃ§Ã£o .got.locInconsistÃªncia interna: resta %lu != mÃ¡x %lu.
+  Por favor, reporte este erro.sÃ­mbolo internosÃ­mbolo interno %s invÃ¡lidoTipo de relocalizaÃ§Ã£o "%s" TARGET2 invÃ¡lido.Alvo bfd invÃ¡lidoConteÃºdo invÃ¡lido na secÃ§Ã£o %pARelocalizaÃ§Ã£o de entrada invÃ¡lida ao produzir saÃ­da de formato nÃ£o-ELF, nÃ£o-mmo.
  Por favor, use o programa objcopy para converter de ELF ou mmo,
  ou monte usando "-no-expand" (para gcc, "-Wa,-no-expand"RelocalizaÃ§Ã£o de entrada invÃ¡lida ao produzir saÃ­da de formato nÃ£o-ELF, nÃ£o-mmo.
  Por favor, use o programa objcopy para converter de ELF ou mmo,
@@ -1362,17 +1382,17 @@ ou compile usando a opÃ§Ã£o gcc "-mno-ba
 imagem ligÃ¡velfictÃ­cios de linker em grupo %u
 fictÃ­cios de linker em grupos %u
 literalrelocalizaÃ§Ã£o literal ocorre para um sÃ­mbolo externotransporte em desvio "%s" em fictÃ­cio de ramo longomach-o: hÃ¡ demasiadas secÃ§Ãµes (%u), o mÃ¡ximo Ã© 255,
-Arquivo mal formadoMemÃ³ria esgotadamep: sem reloc para cÃ³digo %dmodbeg
+Arquivo mal formadometade de sectdiff de relocalizaÃ§Ã£o mach-o ARM mal formado: tamanho invÃ¡lido: %dsectdiff de relocalizaÃ§Ã£o local mach-o ARM mal formado: tamanho invÃ¡lido: %dpar de relocalizaÃ§Ã£o mach-o ARM mal formado: tamanho invÃ¡lido: %dpar de relocalizaÃ§Ã£o mach-o ARM mal formado: relocalizaÃ§Ã£o Ã© a 1Âª relocalizaÃ§Ã£orelocalizaÃ§Ã£o mach-o ARM mal formada: tipo de relocalizaÃ§Ã£o desconhecido: %dsectdiff de relocalizaÃ§Ã£o mach-o ARM mal formado: tamanho invÃ¡lido: %drelocalizaÃ§Ã£o vanilla mach-o ARM mal formada: tamanho invÃ¡lido: %d (pcrel: %d)relocalizaÃ§Ã£o mach-o mal formada: Ã­ndice de secÃ§Ã£o maior que o nÃºmero de secÃ§ÃµesMemÃ³ria esgotadamep: sem reloc para cÃ³digo %dmodbeg
 modend
 nome: [val: %08lx tam %d]: nativointroduzidas novas funÃ§Ãµes de entrada mas nÃ£o especificou biblioteca importada de saÃ­da:nÃ£oSem endereÃ§o atribuÃ­do Ã  secÃ§Ã£o de saÃ­da das folhas %sSem erroSem mais ficheiros de arquivoSem sÃ­mbolosmatriz nÃ£o contÃ­nua de %s
-relocalizaÃ§Ãµes nÃ£o-dinÃ¢micas referem-se a sÃ­mbolo dinÃ¢mico %stamanho nÃ£o-sobreposiÃ§Ã£o de 0x%v mais o tamanho mÃ¡ximo de sobreposiÃ§Ã£o de 0x%v excede a capacidade local
+relocalizaÃ§Ãµes nÃ£o-dinÃ¢micas referem-se a sÃ­mbolo dinÃ¢mico %ssÃ­mbolo nÃ£o-dinÃ¢mico %s em tabela dinÃ¢mica de sÃ­mbolostamanho nÃ£o-sobreposiÃ§Ã£o de 0x%v mais o tamanho mÃ¡ximo de sobreposiÃ§Ã£o de 0x%v excede a capacidade local
 adenda nÃ£o-zero em reloc @fptrnenhumSecÃ§Ã£o nÃ£o representÃ¡vel na saÃ­daespaÃ§o GOT insuficiente para entradas GOT locaisSem memÃ³ria suficiente para ordenar relocalizaÃ§ÃµesnÃ£o mapeado: dados=%lx mapeado=%d
 nÃ£o mapeado: env var nÃ£o definida
 nÃ£o definidoMÃ³dulo objecto NÃƒO livre de erros!Desvio "%s" da folha para funÃ§Ã£o de entrada nÃ£o Ã© mÃºltiplo do seu tamanho.Uma causa possÃ­vel deste erro Ã© o sÃ­mbolo ser referenciado no cÃ³digo indicado como se tivesse um alinhamento maior do que aquele que foi declarado na definiÃ§Ã£o.fora do intervalotransporte apÃ³s relaxetransporte de relocalizaÃ§Ã£o fictÃ­cia de sobreposiÃ§Ã£oponteiro
 bandeiras privadas = %lxbandeiras provadas = %lx:bandeiras privadas = %lx: bandeiras privadas = 0x%lxbandeiras privadas = 0x%lx:prÃ³logo: bkpt endereÃ§o 0x%08x
 sÃ­mbolo protegidosÃ­mbolo protegido recbeg: nome: %.*s
 recend
-referÃªncia a um endereÃ§o de banco [%lx:%04lx] no espaÃ§o de endereÃ§o normal em %04lxReferÃªncia ao sÃ­mbolo distante "%s" com uma relocalizaÃ§Ã£o errada pode resultar em execuÃ§Ã£o incorrectaregRegisto %%g%d usa incompatibilidade: %s em %pB, previamente %s em %pBSecÃ§Ã£o de registo tem conteÃºdo
+registo muito pequeno para o tamanho do nome do sÃ­mboloreferÃªncia a um endereÃ§o de banco [%lx:%04lx] no espaÃ§o de endereÃ§o normal em %04lxReferÃªncia ao sÃ­mbolo distante "%s" com uma relocalizaÃ§Ã£o errada pode resultar em execuÃ§Ã£o incorrectaregRegisto %%g%d usa incompatibilidade: %s em %pB, previamente %s em %pBSecÃ§Ã£o de registo tem conteÃºdo
 reloc (%d) Ã© *UNKNOWN*RelocalizaÃ§Ã£o para psect nÃ£o-RELrelocalizaÃ§Ã£o fora do intervalorelocalizaÃ§Ã£o referencia sÃ­mbolo ainda nÃ£o definido no mÃ³dulorelocalizaÃ§Ã£o requer adenda zeroa relocalizaÃ§Ã£o deve ser nÃºmero parrelocalizaÃ§Ãµes entre diferentes segmentos nÃ£o sÃ£o suportadasA remover secÃ§Ã£o "%pA" nÃ£o usada no ficheiro "%pB"a reabrir %pB: %s
 comando reservado %drtnbeg
 rtnend: tamanho 0x%08x
@@ -1381,26 +1401,30 @@ ou compile usando a opÃ§Ã£o gcc "-mno-ba
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-objecto partilhadoErro de tamanho na secÃ§Ã£o %pAsecÃ§Ã£o small-data excede 64KB; baixe o limite de tamanho de small-data (veja a opÃ§Ã£o -G)som_sizeof_headers nÃ£o implementadodesculpe, sem suporte para ficheiros objecto duplicados no script de auto-sobreposiÃ§Ã£o
+objecto partilhadoErro de tamanho na secÃ§Ã£o %pAsecÃ§Ã£o small-data excede 64KB; baixe o limite de tamanho de small-data (veja a opÃ§Ã£o -G)som_sizeof_headers nÃ£o implementadodesculpe, impossÃ­vel gerir este ficheirodesculpe, sem suporte para ficheiros objecto duplicados no script de auto-sobreposiÃ§Ã£o
 desculpe: modtab, toc e extrefsyms ainda nÃ£o estÃ£o implementados para comandos dysymtab.fonte (tam: %u)
 RelocalizaÃ§Ã£o ALPHA_R_BSR espÃºriaAnÃ¡lise de stack ignorarÃ¡ a chamada de %s a %s
 Transporte de stack (%d) em _bfd_vms_pushSub-transporte de stack em _bfd_vms_popdados standard: %s
-EndereÃ§o inicial de "%s" Ã© diferente da ligaÃ§Ã£o prÃ©via.procedimento estÃ¡tico (sem nome)fictÃ­cios nÃ£o correspondem ao tamanho calculadosÃ­mbolosÃ­mbolo sÃ­mbolo "%s" tem st_other invÃ¡lido para a versÃ£o ABI 1SÃ­mbolo "%s" tem tipos diferentes: REGISTER em %pB, previamente %s em %pBSÃ­mbolo precisa de secÃ§Ã£o de depuraÃ§Ã£o que nÃ£o existeErro de chamada do sistemainformaÃ§Ã£o da matriz de versÃ£o do sistema:
+EndereÃ§o inicial de "%s" Ã© diferente da ligaÃ§Ã£o prÃ©via.procedimento estÃ¡tico (sem nome)fictÃ­cios nÃ£o correspondem ao tamanho calculadosÃ­mbolosÃ­mbolo sÃ­mbolo "%s" tem st_other invÃ¡lido para a versÃ£o ABI 1SÃ­mbolo "%s" tem tipos diferentes: REGISTER em %pB, previamente %s em %pBvÃ­nculo de sÃ­mbolo STB_GNU_UNIQUE nÃ£o Ã© suportadoSÃ­mbolo precisa de secÃ§Ã£o de depuraÃ§Ã£o que nÃ£o existetipo de sÃ­mbolo STT_GNU_IFUNC nÃ£o Ã© suportadoErro de chamada do sistemainformaÃ§Ã£o da matriz de versÃ£o do sistema:
 term(b): 0x%02xterm_w: 0x%04xo alvo bfin actualmente nÃ£o suporta a geraÃ§Ã£o de relocalizaÃ§Ãµes de cÃ³piaHÃ¡ um conflito na uniÃ£o das bandeira do cabeÃ§alho ELF de %pBDemasiadas entradas GOT para -fpic, recompile com -fPICTente activar relaxe para evitar truncamentos nas relocalizaÃ§Ãµestipo de  spec para elemento:
 tipo de spec para subscrito %u:
 ponteiro com tipo
 typspec (tam: %u)
-impossÃ­vel alocar dados para comando de carga %#ximpossÃ­vel encontrar cola %s "%s" para "%s"ImpossÃ­vel encontrar secÃ§Ã£o de saÃ­da equivalente para sÃ­mbolo "%s" da secÃ§Ã£o "%s"impossÃ­vel dispor comando de carga %#x desconhecidoImpossÃ­vel atingir %s (at 0x%08x) do ponteiro global (em 0x%08x) porque o desvio (%d) estÃ¡ fora do intervalo permitido, -32678 a 32767.
-ImpossÃ­vel ler registo EIHS no desvio %#ximpossÃ­vel ler na secÃ§Ã£o %s de %pBimpossÃ­vel escrever comando de carga %#x desconhecidocadeia de bits nÃ£o alinhada de %s
-indefinidoreferÃªncia %s indefinida em sÃ­mbolo complexo: %sSTO_SH5_ISA32 inesperado em sÃ­mbolo local nÃ£o Ã© geridoNÃºmero de mÃ¡quina inesperadoTipo de secÃ§Ã£o %d de ficheiro nÃºcleo OSF/1 nÃ£o geridatipo de entrada egsd %u nÃ£o gerida
+impossÃ­vel alocar dados para comando de carga %#ximpossÃ­vel encontrar cola %s "%s" para "%s"ImpossÃ­vel encontrar secÃ§Ã£o de saÃ­da equivalente para sÃ­mbolo "%s" da secÃ§Ã£o "%s"impossÃ­vel dispor comando de carga %#x desconhecidoImpossÃ­vel ler registo EIHS no desvio %#ximpossÃ­vel ler na secÃ§Ã£o %s de %pBimpossÃ­vel escrever comando de carga %#x desconhecidocadeia de bits nÃ£o alinhada de %s
+indefinidoreferÃªncia %s indefinida em sÃ­mbolo complexo: %sNÃºmero de mÃ¡quina inesperadoTipo de secÃ§Ã£o %d de ficheiro nÃºcleo OSF/1 nÃ£o geridatipo de entrada egsd %u nÃ£o gerida
 sub-tipo emh %u nÃ£o gerido
-RelocalizaÃ§Ã£o %s nÃ£o geridadesconhecidoSub-tipo EGSD %d desconhecidocomando ETIR %d desconhecidoTipo bÃ¡sico %d desconhecidoerro desconhecidovalor de cabeÃ§alho byte-order %#x desconhecidocomando de linha %d desconhecidooperador "%c" desconhecido em sÃ­mbolo complexoReloc %s desconhecidaReloc %s + %s desconhecidaComando fonte %d desconhecidoSÃ­mbolo desconhecido em comando %sarquitectura V850 desconhecidadesconhecido: %xINPUT_SECTION_FLAG %s nÃ£o reconhecida
-TI COFF id de alvo "0x%x" nÃ£o reconhecidaRelocalizaÃ§Ã£o .stab nÃ£o suportadacomando STA %s nÃ£o suportadoreloc nÃ£o suportadorelocalizaÃ§Ã£o nÃ£o suportadarelocalizaÃ§Ã£o nÃ£o suportada entre dados/espaÃ§os de endereÃ§o insnrelocalizaÃ§Ã£o nÃ£o suportadatipo de relocalizaÃ§Ã£o %#x nÃ£o suportadoa usar mÃºltiplos valores gparquitectura v850 E3arquitectura v850arquitectura v850earquitectura v850e1arquitectura v850e2arquitectura v850e2v3arquitectura v850e3v5VariÃ¡vel "%s" sÃ³ pode estar numa das regiÃµes de dados pequena, zero e minÃºsculaVariÃ¡vel "%s" nÃ£o pode estar nas regiÃµes de dados pequena e minÃºscula em simultÃ¢neoVariÃ¡vel "%s" nÃ£o pode estar nas regiÃµes de dados pequena e zero em simultÃ¢neoVariÃ¡vel "%s" nÃ£o pode estar nas regiÃµes de dados zero e minÃºscula em simultÃ¢neoVariÃ¡vel "%s" nÃ£o pode ocupar mÃºltiplas pequenas regiÃµes de dadosvflags: 0x%02x, valor: 0x%08x vma:			EndInicial  	 EndFinal  	 DadosUnwind
+RelocalizaÃ§Ã£o %s nÃ£o geridadesconhecidoSub-tipo EGSD %d desconhecidocomando ETIR %d desconhecidoatributo desconhecido para o sÃ­mbolo "%s": 0x%02xTipo bÃ¡sico %d desconhecidoerro desconhecidovalor de cabeÃ§alho byte-order %#x desconhecidocomando de linha %d desconhecidooperador "%c" desconhecido em sÃ­mbolo complexoReloc %s desconhecidaReloc %s + %s desconhecidaComando fonte %d desconhecidoSÃ­mbolo desconhecido em comando %sarquitectura V850 desconhecidadesconhecido: %xINPUT_SECTION_FLAG %s nÃ£o reconhecida
+TI COFF id de alvo "0x%x" nÃ£o reconhecidaRelocalizaÃ§Ã£o .stab nÃ£o suportadacomando STA %s nÃ£o suportadoreloc nÃ£o suportadorelocalizaÃ§Ã£o nÃ£o suportadarelocalizaÃ§Ã£o nÃ£o suportada entre dados/espaÃ§os de endereÃ§o insnrelocalizaÃ§Ã£o nÃ£o suportadaa usar mÃºltiplos valores gparquitectura v850 E3arquitectura v850arquitectura v850earquitectura v850e1arquitectura v850e2arquitectura v850e2v3arquitectura v850e3v5VariÃ¡vel "%s" sÃ³ pode estar numa das regiÃµes de dados pequena, zero e minÃºsculaVariÃ¡vel "%s" nÃ£o pode estar nas regiÃµes de dados pequena e minÃºscula em simultÃ¢neoVariÃ¡vel "%s" nÃ£o pode estar nas regiÃµes de dados pequena e zero em simultÃ¢neoVariÃ¡vel "%s" nÃ£o pode estar nas regiÃµes de dados zero e minÃºscula em simultÃ¢neoVariÃ¡vel "%s" nÃ£o pode ocupar mÃºltiplas pequenas regiÃµes de dadosvflags: 0x%02x, valor: 0x%08x vma:			EndInicial  	 EndFinal  	 DadosUnwind
 Aviso, .tamanho da secÃ§Ã£o pdata (%ld) nÃ£o Ã© mÃºltiplo de %d
-aviso: %pB e %pB diferem em tamanho wchar_taviso: %pB e %pB diferem sobre se o cÃ³digo foi compilado para DSBTAviso: %pB nÃ£o suporta interworking, enquanto %pB simaviso: %pB tem uma secÃ§Ã£o corrompida com um tamanho (%aviso: %pB tem um Ã­ndice de tabela de cadeia corrompido - a ignorarAviso: %pB suporta interworking, enquanto %pB nÃ£oAviso: %pB usa %s (definida por %pB), %pB usa %sAviso: %pB usa %s (definida por %pB), %pB usa MSA ABI %d desconhecidaAbiso: %pB usa %s (definida por %pB), %pB usa vÃ­rgula flutuante ABI %d desconhecidaaviso: %pB usa %s enums mas a saÃ­da deve usar %s enums; uso de valores enum atravÃ©s de vÃ¡rios objectos pode falharaviso: %pB usa %u-byte wchar_t mas a saÃ­da deve usar %u-byte wchar_t; uso de valores wchar_t atravÃ©s de vÃ¡rios objectos pode falharAviso: %pB usa MSA ABI %d desconhecida (definida por %pB), %pB usa %sAviso: %pB usa MSA ABI %d desconhecida (definida por %pB), %pB usa MSA ABI %d desconhecidaAviso: %pB usa vÃ­rgula flutuante ABI %d desconhecida (definida por %pB), %pB usa %sAviso: %pB usa vÃ­rgula flutuante ABI %d desconhecida (definida por %pB), %pB usa vÃ­rgula flutuante ABI %d desconhecidaAviso: %pB: configuraÃ§Ã£o de plataforma em conflitoAviso: %pB: conflito na configuraÃ§Ã£o de plataforma %s com %s.aviso: %pB: tamanho GNU_PROPERTY_TYPE (%ld) corrupto: %#lxaviso: %pB: GNU_PROPERTY_TYPE (%ld) corrupto ,tipo (0x%x) datasz: 0x%xaviso: %pB: tamanho corrupto de nÃ£o copiar se protegido: 0x%xaviso: %pB:tamanho de stack corrupto: 0x%xaviso: %pB: sÃ­mbolo local "%s" nÃ£o tem secÃ§Ã£oAviso: %pB: atributo de objecto ARC %d desconhecido.Aviso: %pB: atributo de objecto EABI %d desconhecidoAviso: %pB: atributo de objecto MSABI %d desconhecidoaviso: %pB: GNU_PROPERTY_TYPE (%ld) nÃ£o suportada, tipo: 0x%xaviso: %s excede o tamanho da secÃ§Ã£o
+aviso: %pB e %pB diferem em tamanho wchar_taviso: %pB e %pB diferem sobre se o cÃ³digo foi compilado para DSBTAviso: %pB nÃ£o suporta interworking, enquanto %pB simaviso: %pB tem uma secÃ§Ã£o corrompida com um tamanho (%aviso: %pB tem um Ã­ndice de tabela de cadeia corrompido - a ignorarAviso: %pB suporta interworking, enquanto %pB nÃ£oaviso: %pB usa a versÃ£o privilege spec %u.%u.%u mas a saÃ­da usa a versÃ£o %u.%u.%u.Aviso: %pB usa %s (definida por %pB), %pB usa %sAviso: %pB usa %s (definida por %pB), %pB usa MSA ABI %d desconhecidaAbiso: %pB usa %s (definida por %pB), %pB usa vÃ­rgula flutuante ABI %d desconhecidaaviso: %pB usa %s enums mas a saÃ­da deve usar %s enums; uso de valores enum atravÃ©s de vÃ¡rios objectos pode falharaviso: %pB usa %u-byte wchar_t mas a saÃ­da deve usar %u-byte wchar_t; uso de valores wchar_t atravÃ©s de vÃ¡rios objectos pode falharAviso: %pB usa MSA ABI %d desconhecida (definida por %pB), %pB usa %sAviso: %pB usa MSA ABI %d desconhecida (definida por %pB), %pB usa MSA ABI %d desconhecidaAviso: %pB usa vÃ­rgula flutuante ABI %d desconhecida (definida por %pB), %pB usa %sAviso: %pB usa vÃ­rgula flutuante ABI %d desconhecida (definida por %pB), %pB usa vÃ­rgula flutuante ABI %d desconhecidaAviso: %pB: configuraÃ§Ã£o de plataforma em conflitoAviso: %pB: conflito na configuraÃ§Ã£o de plataforma %s com %s.aviso: %pB: tamanho GNU_PROPERTY_TYPE (%ld) corrupto: %#lxaviso: %pB: GNU_PROPERTY_TYPE (%ld) corrupto ,tipo (0x%x) datasz: 0x%xaviso: %pB: tamanho corrupto de nÃ£o copiar se protegido: 0x%xaviso: %pB:tamanho de stack corrupto: 0x%xaviso: %pB: sÃ­mbolo local "%s" nÃ£o tem secÃ§Ã£oAviso: %pB: atributo de objecto ARC %d desconhecido.Aviso: %pB: atributo de objecto EABI %d desconhecidoAviso: %pB: atributo de objecto MSABI %d desconhecidoaviso: %pB: GNU_PROPERTY_TYPE (%ld) nÃ£o suportada, tipo: 0x%xaviso: %s excede o tamanho da secÃ§Ã£o
 aviso: %s sobrepÃµe-se a %s
-aviso: secÃ§Ã£o %s tem tamanho zeroaviso: --plt-localentry Ã© particularmente perigosa sem suporte ld.so para detectar violaÃ§Ãµes ABI.Aviso: reloc RL78_SYM com sÃ­mbolo desconhecidoAviso: reloc RX_SYM com sÃ­mbolo desconhecidoAviso: alihamento %u de sÃ­mbolo comum "%s" em %pB Ã© maior que o alinhamento (%u) da sua secÃ§Ã£o %pAAviso: alinhamento %u do sÃ­mbolo "%s" em %pB Ã© menor que %u em %pBaviso: tentativa de exportar sÃ­mbolo "%s" indefinidoaviso: chamada a sÃ­mbolo nÃ£o-funÃ§Ã£o %s definida em %pBAviso: a limpar bandeira %pB de interworking devido a cÃ³digo nÃ£o interworking em %pB que lhe foi ligadoAviso: a limpar bandeira %pB de interworking devido a pedido externoaviso: dados unwind corrompidos
-aviso: a descartar secÃ§Ã£o dinÃ¢mica %saviso: bandeira arch do ficheiro %pB ck%s em conflito com o destino ck%s, a usar ck%sAviso: opÃ§Ã£o gc-sections ignoradaaviso: a gerar uma biblioteca partilhada contendo cÃ³digo nÃ£o PICaviso: a gerar uma biblioteca partilhada contendo cÃ³digo nÃ£o PIDAviso: bandeira %pB de interworking nÃ£o definida porque jÃ¡ foi especificada como nÃ£o-interworkingaviso: a relocalizaÃ§Ã£o referencia um segmento diferenteaviso: a secÃ§Ã£o "%s" estÃ¡ a ser tornada numa notaaviso: tipo da secÃ§Ã£o "%pA" alterou-se para PROGBITSAviso: sÃ­mbolo "%s" Ã© secÃ§Ã£o e nÃ£o-secÃ§Ã£o em simultÃ¢neoaviso: tipo e tamanho do sÃ­mbolo dinÃ¢mico "%s" nÃ£o estÃ£o definidosAviso: tipo de sÃ­mbolo "%s" alterado de %d para %d em %pBaviso: impossÃ­vel definir tamanho da secÃ§Ã£o %s em %pBaviso: impossÃ­vel actualizar conteÃºdo da secÃ§Ã£o %s em %pBaviso: eflag "%#lx" arch nÃ£o reconhecidaAviso: bandeiras nÃ£o definidas ou de arquitectura antiga. Use a mÃ¡quina predefinida.Aviso: escrita do arquivo lenta: a reescrever a dataÃ§Ã£oaviso: secÃ§Ã£o de escrita "%pA" em enorme (negativo) desvio de ficheiroaviso: secÃ§Ã£o xdata corrupta
-simnÃ£o tem permissÃ£o para definir %s num scriptPRIu64PRIx64PRId64%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: %#: warning: bad R_SH_USES offset%pB: %#: warning: R_SH_USES points to unrecognized insn %#x%pB: %#: warning: bad R_SH_USES load offset%pB: %#: warning: could not find expected reloc%pB: %#: warning: symbol in unexpected section%pB: %#: warning: could not find expected COUNT reloc%pB: %#: warning: bad count%pB: %#: fatal: reloc overflow while relaxing%pB: bad reloc address %# in section `%pA'%pB: illegal relocation type %d at address %#%pB: corrupt symbol count: %#%pB: not enough memory to allocate space for %# symbols of size %#%pB: bad string table size %error: %pB(%pA) is too large (%# bytes)DWARF error: offset (%) greater than or equal to %s size (%)DWARF error: data count (%) larger than buffer sizeDWARF error: unknown format content type %DWARF error: line info section is too small (%)DWARF error: line info data is bigger (%#) than the space remaining in the section (%#lx)DWARF error: unable to read alt ref %%pB: error: attribute section length too small: %%pB(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%pB: corrupt size field in group section header: %#%pB: invalid size field in group section header: %#%pB: section %pA lma %# adjusted to %#%pB: warning: empty loadable segment detected at vaddr=%#, is this intentional?%pB: warning: segment alignment of %# is too large%pB(%pA+%#): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): CMEM relocation to `%s+%#' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): unexpected %s instruction '%#lx' in TLS trampoline%pB(%pA+%#): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC%pB(%pA+%#): %s relocation not permitted in shared object%pB(%pA+%#): only ADD or SUB instructions are allowed for ALU group relocations%pB(%pA+%#): overflow whilst splitting %# for group relocation %s%pB(%pA+%#): %s relocation against SEC_MERGE section%pB(%pA+%#): %s used with TLS symbol %s%pB(%pA+%#): %s used with non-TLS symbol %s%pB(%#): error: cannot create STM32L4XX veneer; jump out of range by % bytes; cannot encode branch instruction%pB(%pA+%#): unresolvable relocation against symbol `%s'%pB(%pA+%#): reloc against `%s': error %d%pB: relocation at `%pA+%#' references symbol `%s' with nonzero addend%pB, section %pA: relocation %s with non-zero addend % against local symbol%pB, section %pA: relocation %s with non-zero addend % against symbol `%s'%pB(%pA+%#): cannot reach %s, recompile with -ffunction-sections%pB(%pA+%#): %s fixup for insn %#x is not supported in a non-shared link%pB(%pA+%#): cannot handle %s for %s%pB: TLS transition from %s to %s against `%s' at %# in section `%pA' failedip2k linker: missing page instruction at %# (dest = %#)ip2k linker: redundant page instruction at %# (dest = %#)%pB: warning: %s points to unrecognized reloc at %#%pB(%pA+%#): error: %s with unexpected instruction %#x%pB(%pA): unsafe PID relocation %s at %# (against %s in %s)%pB(%pA+%#): invalid instruction for TLS relocation %s%pB: CALL15 reloc at %# not against global symbol%pB: %#: warning: R_SH_USES points to unrecognized insn 0x%x%pB: %#: fatal: unaligned branch target for relax-support relocation%pB: %#: fatal: unaligned %s relocation %#%pB: %#: fatal: R_SH_PSHA relocation % not in range -32..32%pB: %#: fatal: R_SH_PSHL relocation % not in range -32..32%pB(%pA+%#): cannot emit fixup to `%s' in read-only section%pB(%pA+%#): %s relocation against external symbol "%s"%pB(%pA): offset in relocation for GD->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd4??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xc7??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xd1??)%pB(%pA+%#): unexpected instruction %#04X (expected 0x310c)%pB(%pA+%#): unexpected instruction %#04X (expected 0x410b)%pB(%pA+%#): unexpected instruction %#04X (expected 0x34cc)%pB(%pA): offset in relocation for IE->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd0??: mov.l)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?12: stc)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?ce: mov.l)%pB(%pA): offset in relocation for GD->IE translation is too small: %#%pB(%pA): offset in relocation for LD->LE translation is too small: %#%pB(%s+%#): unresolvable %s relocation against symbol `%s'%pB: %#: warning: %s points to unrecognized insns%pB: %#: warning: %s points to unrecognized insn %#x%pB: %#: warning: %s points to unrecognized reloc%pB: %#: warning: %s points to unrecognized reloc %#%pB: warning: GOT addend of % to `%s' does not match previous GOT addend of %%pB: warning: PLT addend of % to `%s' from %pA section ignored%pB: warning: %s relocation to %# from %pA section%pB(%pA+%#): relocation offset out of range (size=%#)%pB(%pA+%#): could not decode instruction; possible configuration mismatch%pB(%pA+%#): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%pB(%pA+%#): unexpected fix for %s relocation%pB: %pA+%#: warning: %s relocation against unexpected insnstub entry for %s cannot load .plt, dp offset = %%pB(%pA+%#): cannot reach %s%pB: can't relax br at %# in section `%pA'; please use brl or indirect branch%pB: short data segment overflowed (%# >= 0x400000)%pB: missing TLS section for relocation %s against `%s' at %# in section `%pA'.%pB: Can't relax br (%s) to `%s' at %# in section `%pA' with size %# (> 0x1000000).warning: size of symbol `%s' changed from % in %pB to % in %pB%pB(%pA): relocation % has invalid symbol index %ld%pB: Internal inconsistency error for value for
- linker-allocated global register: linked: %# != relaxed: %#%pB: LOCAL directive: register $% is not a local register; first global register is $%%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %%pB: addend %s%#x in relocation %s against symbol `%s' at %# in section `%pA' is out of range%pB: version count (%) does not match symbol count (%ld)warning: %pB is truncated: expected core file size >= %, found: %%pB: bad reloc symbol index (%# >= %#lx) for offset %# in section `%pA'%pB: non-zero symbol index (%#) for offset %# in section `%pA' when the object file has no symbol tableerror: %pB contains a reloc (%#) for section %pA that references a non-existent global symbol%pB: %pA+%#: no symbol found for INHERIT%pB: incorrect `.reginfo' section size; expected %, got %%pB: GOT reloc at %# not expected in executables%pB: CALL16 reloc at %# not against global symbol%pB: can't find matching LO16 reloc against `%s' for %s at %# in section `%pA'%pB: `%pA' entry VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB: `%pA' offset of % from `%pA' beyond the range of ADDIUPC%pB: `%pA' start VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB 64-bit address %# out of range for Intel Hex file%pB: address %# out of range for Intel Hex filesection address (%#) below start of segment (%#)%pB: access beyond end of merged section (%)%pB: attempt to emit contents at non-multiple-of-4 address %#%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %%pB: XMC_TC0 symbol `%s' is class %d scnlen %%pB: reloc %s:% not in csectTOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%pB: Data Directory size (%lx) exceeds space left in section (%)%pB: desvio de cadeia invÃ¡lido % >= %%pB: reloc TOC em %# para sÃ­mbolo "%s" sem entrada TOC%pB: %#: aviso: mau desvio R_SH_USES%pB: %#: aviso: R_SH_USES aponta para insn %#x nÃ£o reconhecido%pB: %#: aviso: mau desvio de carga R_SH_USES%pB: %#: aviso: impossÃ­vel encontrar reloc esperado%pB: %#: aviso: sÃ­mbolo em secÃ§Ã£o inesperada%pB: %#: aviso: impossÃ­vel encontrar reloc COUNT%pB: %#: aviso: mÃ¡ contagem%pB: %#: fatal: transporte reloc ao relaxar%pB: mau endereÃ§o reloc %# na secÃ§Ã£o "%pA"%pB: tipo de relocalizaÃ§Ã£o %d ilegal no endereÃ§o %#%pB: total de sÃ­mbolos corrupto: %#%pB: memÃ³ria insuficiente para alocar espaÃ§o para %# sÃ­mbolos de tamanho %#%pB: mau tamanho de tabela de cadeias %erro: %pB(%pA) Ã© muito grande (%# bytes)Erro Dwarf: desvio (%) maior ou igual a tamanho %s (%).Erro Dwarf: total de dados (%) maior que o tamanho do buffer.Erro Dwarf: tipo de formato de conteÃºdo % desconhecido.Erro Dwarf: secÃ§Ã£o de informaÃ§Ã£o da linha muito pequena (%)Erro Dwarf: secÃ§Ã£o de informaÃ§Ã£o da linha maior (%#) que o espaÃ§o restante na secÃ§Ã£o (%#lx)Erro Dwarf:  impossÃ­vel ler referÃªncia alternativa %.%pB: erro: tamanho da secÃ§Ã£o de atributo muito pequeno: %%pB(%pA+%#): relocalizaÃ§Ã£o %s insolÃºvel contra o sÃ­mbolo "%s"%pB: desvio de cadeia invÃ¡lido %u >= % para secÃ§Ã£o "%s"%pB: campo de tamanho corrupto no cabeÃ§alho da secÃ§Ã£o de grupo: %#%pB: campo de tamanho invÃ¡lido no cabeÃ§alho da secÃ§Ã£o de grupo: %#%pB: secÃ§Ã£o %pA lma %# ajustada para %#%pB: aviso: detectado segmento carregÃ¡vel vazio em vaddr=%#, Ã© intencional?%pB: aviso: alinhamento do segmento de %# Ã© muito grande%pB(%pA+%#): relocalizaÃ§Ã£o CMEM para "%s" Ã© invÃ¡lida, 16 MSB deveria ser %#x (o valor Ã© %#)%pB(%pA+%#): relocalizaÃ§Ã£o CMEM para "%s+%#" Ã© invÃ¡lida, 16 MSB deveria ser %#x (o valor Ã© %#)%pB(%pA+%#): instruÃ§Ã£o %s "%#lx" inesperada em trampolim TLS%pB(%pA+%#): instruÃ§Ã£o %s "%#lx" inesperada referenciada por TLS_GOTDESC%pB(%pA+%#): relocalizaÃ§Ã£o %s nÃ£o permitida em objecto partilhado%pB(%pA+%#): sÃ³ sÃ£o permitidas instruÃ§Ãµes ADD ou SUB para relocalizaÃ§Ãµes de grupo ALU%pB(%pA+%#): transporte ao dividir %# para relocalizaÃ§Ã£o de grupo %s%pB(%pA+%#): relocalizaÃ§Ã£o %s contra secÃ§Ã£o SEC_MERGE%pB(%pA+%#): %s usado com sÃ­mbolo TLS %s%pB(%pA+%#): %s usado com sÃ­mbolo nÃ£o-TLS %s%pB(%#): erro: impossÃ­vel criar folha STM32L4XX. Sai fora do intervalo por % bytes. ImpossÃ­vel codificar a instruÃ§Ã£o do ramo. %pB(%pA+%#): relocalizaÃ§Ã£o insolÃºvel contra sÃ­mbolo "%s"%pB(%pA+%#): reloc contra "%s": erro %d%pB: relocalizaÃ§Ã£o em "%pA+%#" referencia o sÃ­mbolo "%s" com adenda nÃ£o-zero%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s com adenda nÃ£o-zero % contra sÃ­mbolo local%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s com adenda nÃ£o-zero % contra sÃ­mbolo "%s"%pB(%pA+%#): impossÃ­vel atingir %s, recompile com -ffunction-sections%pB(%pA+%#): %s fixup para insn %#x nÃ£o Ã© suportado em ligaÃ§Ã£o nÃ£o partilhada%pB(%pA+%#): impossÃ­vel gerir %s para %s%pB: transiÃ§Ã£o TLS de %s para %s contra "%s" em %# na secÃ§Ã£o "%pA" falhouip2k linker: pÃ¡gina de instruÃ§Ã£o em falta em %# (dest = %#)ip2k linker: pÃ¡gina de instruÃ§Ã£o redundante em %# (dest = %#)%pB: aviso: %s aponta para reloc nÃ£o reconhecida em %#%pB(%pA+%#): erro: %s com instruÃ§Ã£o inesperada %#x%pB(%pA): relocalizaÃ§Ã£o PID insegura %s em %# (contra %s em %s)%pB(%pA+%#): instruÃ§Ã£o invÃ¡lida para relocalizaÃ§Ã£o TLS %s%pB: reloc CALL15 em %# nÃ£o contra sÃ­mbolo global%pB: %#: aviso: R_SH_USES aponta para insn 0x%x nÃ£o reconhecido%pB: %#: fatal: ramo alvo nÃ£o alinhado para relocalizaÃ§Ã£o relax-support%pB: %#: fatal: relocalizaÃ§Ã£o %s desalinhada %#%pB: %#: fatal: R_SH_PSHA relocalizaÃ§Ã£o % fora do intervalo -32..32%pB: %#: fatal: R_SH_PSHL relocalizaÃ§Ã£o % fora do intervalo -32..32%pB(%pA+%#): impossÃ­vel emitir fixup a "%s" em secÃ§Ã£o sÃ³ de leitura%pB(%pA+%#): relocalizaÃ§Ã£o %s contra sÃ­mbolo externo "%s"%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o GD->LE Ã© muito pequeno: %#%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0xd4??)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0xc7??)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0xd1??)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0x310c)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0x410b)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0x34cc)%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o IE->LE Ã© muito pequeno: %#%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0xd0??: mov.l)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0x0?12: stc)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0x0?ce: mov.l)%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o GD->IE Ã© muito pequeno: %#%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o LD->LE Ã© muito pequeno: %#%pB(%s+%#): relocalizaÃ§Ã£o %s insolÃºvel comtra sÃ­mbolo "%s"%pB: %#: aviso: %s aponta para insns nÃ£o reconhecido%pB: %#: aviso: %s aponta para insn %#x nÃ£o reconhecido%pB: %#: aviso: %s aponta para reloc nÃ£o reconhecida%pB: %#: aviso: %s aponta para reloc nÃ£o reconhecida  %#%pB: aviso: adenda GOT de %# a "%s" nÃ£o corresponde a adenda GOT de %# prÃ©via%pB: aviso: adenda PLT de %# a "%s" da secÃ§Ã£o %pA ignorada%pB: aviso: relocalizaÃ§Ã£o %s para %# da secÃ§Ã£o %pA%pB(%pA+%#): desvio de relocalizaÃ§Ã£o fora do intervalo (tamanho=%#)%pB(%pA+%#): impossÃ­vel descodificar instruÃ§Ã£o; possÃ­vel troca de configuraÃ§Ã£o%pB(%pA+%#): impossÃ­vel descodificar instruÃ§Ã£o para relocalizaÃ§Ã£o XTENSA_ASM_SIMPLIFY; possÃ­vel troca de configuraÃ§Ã£o%pB(%pA+%#): fix inesperado para relocalizaÃ§Ã£o %s%pB: %pA+%#: aviso: relocalizaÃ§Ã£o %s contra insn inesperadoentrada fictÃ­cia para %s nÃ£o pode carregar .plt, desvio dp = %#%pB(%pA+%#): impossÃ­vel atingir %s%pB: impossÃ­vel relaxar br em %# na secÃ§Ã£o "%pA". Por favor, use brl ou um ramo indirecto.%pB: transporte no segmento de dados curtos (%# >= 0x400000)%pB: secÃ§Ã£o TLS em falta para relocalizaÃ§Ã£o %s contra "%s" em %# na secÃ§Ã£o "%pA".%pB: impossÃ­vel relaxar br (%s) para "%s" em %# na secÃ§Ã£o "%pA" com tamanho %# (> 0x1000000).Aviso: tamanho do sÃ­mbolo "%s" mudou de % em %pB para % em %pB%pB(%pA): relocalizaÃ§Ã£o %# tem Ã­ndice de sÃ­mbolos invÃ¡lido %ld%pB: erro interno de inconsistÃªncia no valor para o
+aviso: secÃ§Ã£o %s tem tamanho zeroaviso: deve ser usado %s, em vez de %saviso: --enable-non-contiguous-regions descarta a secÃ§Ã£o "%s" de "%s"
+aviso: --plt-localentry Ã© particularmente perigosa sem suporte ld.so para detectar violaÃ§Ãµes ABI.Aviso: reloc RL78_SYM com sÃ­mbolo desconhecidoAviso: reloc RX_SYM com sÃ­mbolo desconhecidoAviso: alihamento %u de sÃ­mbolo comum "%s" em %pB Ã© maior que o alinhamento (%u) da sua secÃ§Ã£o %pAAviso: alinhamento %u do sÃ­mbolo "%s" em %pB Ã© menor que %u em %pBaviso: tentativa de exportar sÃ­mbolo "%s" indefinidoaviso: chamada a sÃ­mbolo nÃ£o-funÃ§Ã£o %s definida em %pBAviso: a limpar bandeira %pB de interworking devido a cÃ³digo nÃ£o interworking em %pB que lhe foi ligadoAviso: a limpar bandeira %pB de interworking devido a pedido externoaviso: dados unwind corrompidos
+aviso: a descartar secÃ§Ã£o dinÃ¢mica %saviso: bandeira arch do ficheiro %pB ck%s em conflito com o destino ck%s, a usar ck%sAviso: opÃ§Ã£o gc-sections ignoradaaviso: a gerar uma biblioteca partilhada contendo cÃ³digo nÃ£o PICaviso: a gerar uma biblioteca partilhada contendo cÃ³digo nÃ£o PIDAviso: bandeira %pB de interworking nÃ£o definida porque jÃ¡ foi especificada como nÃ£o-interworkingaviso: privilege spec versÃ£o 1.9.1 nÃ£o pode ser ligada a outras versÃµes spec.aviso: a relocalizaÃ§Ã£o referencia um segmento diferenteaviso: a secÃ§Ã£o "%s" estÃ¡ a ser tornada numa notaaviso: tipo da secÃ§Ã£o "%pA" alterou-se para PROGBITSAviso: sÃ­mbolo "%s" Ã© secÃ§Ã£o e nÃ£o-secÃ§Ã£o em simultÃ¢neoaviso: tipo e tamanho do sÃ­mbolo dinÃ¢mico "%s" nÃ£o estÃ£o definidosAviso: tipo de sÃ­mbolo "%s" alterado de %d para %d em %pBaviso: impossÃ­vel definir tamanho da secÃ§Ã£o %s em %pBaviso: impossÃ­vel actualizar conteÃºdo da secÃ§Ã£o %s em %pBaviso: eflag "%#lx" arch nÃ£o reconhecidaAviso: bandeiras nÃ£o definidas ou de arquitectura antiga. Use a mÃ¡quina predefinida.Aviso: escrita do arquivo lenta: a reescrever a dataÃ§Ã£oaviso: secÃ§Ã£o de escrita "%pA" em enorme (negativo) desvio de ficheiroaviso: secÃ§Ã£o xdata corrupta
+simnÃ£o tem permissÃ£o para definir %s num scriptPRIu64PRIx64PRId64%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: %#: warning: bad R_SH_USES offset%pB: %#: warning: R_SH_USES points to unrecognized insn %#x%pB: %#: warning: bad R_SH_USES load offset%pB: %#: warning: could not find expected reloc%pB: %#: warning: symbol in unexpected section%pB: %#: warning: could not find expected COUNT reloc%pB: %#: warning: bad count%pB: %#: fatal: reloc overflow while relaxing%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: bad reloc address %# in section `%pA'error: %pB(%pA) section size (%# bytes) is larger than file size (%# bytes)error: %pB(%pA) is too large (%# bytes)DWARF error: offset (%) greater than or equal to %s size (%)DWARF error: data count (%) larger than buffer sizeDWARF error: unknown format content type %DWARF error: line info section is too small (%)DWARF error: line info data is bigger (%#) than the space remaining in the section (%#lx)DWARF error: unable to read alt ref %DWARF error: unable to locate abstract instance DIE ref %%pB: error: attribute section length too small: %%pB(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%pB: invalid size field in group section header: %#%pB: section %pA lma %# adjusted to %#%pB: warning: empty loadable segment detected at vaddr=%#, is this intentional?%pB: warning: segment alignment of %# is too large%pB(%pA+%#): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): CMEM relocation to `%s+%#' is invalid, 16 MSB should be %#x (value is %#)ERROR: CMSE stub (%s section) too far (%#) from destination (%#)%pB(%pA+%#): unexpected %s instruction '%#lx' in TLS trampoline%pB(%pA+%#): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC%pB(%pA+%#): %s relocation not permitted in shared object%pB(%pA+%#): only ADD or SUB instructions are allowed for ALU group relocations%pB(%pA+%#): overflow whilst splitting %# for group relocation %s%pB(%pA+%#): %s relocation against SEC_MERGE section%pB(%pA+%#): %s used with TLS symbol %s%pB(%pA+%#): %s used with non-TLS symbol %s%pB(%#): error: cannot create STM32L4XX veneer; jump out of range by % bytes; cannot encode branch instruction%pB(%pA+%#): unresolvable relocation against symbol `%s'%pB(%pA+%#): reloc against `%s': error %d%pB: relocation at `%pA+%#' references symbol `%s' with nonzero addend%pB, section %pA: relocation %s with non-zero addend % against local symbol%pB, section %pA: relocation %s with non-zero addend % against symbol `%s'%pB(%pA+%#): cannot reach %s, recompile with -ffunction-sections%pB(%pA+%#): %s fixup for insn %#x is not supported in a non-shared link%pB(%pA+%#): cannot handle %s for %s%pB: TLS transition from %s to %s against `%s' at %# in section `%pA' failedip2k linker: missing page instruction at %# (dest = %#)ip2k linker: redundant page instruction at %# (dest = %#)%pB: warning: %s points to unrecognized reloc at %#global pointer relative relocation at address %# when _gp not defined
+unable to reach %s (at %#) from the global pointer (at %#) because the offset (%) is out of the allowed range, -32678 to 32767
+%pB(%pA+%#): error: %s with unexpected instruction %#x%pB(%pA): unsafe PID relocation %s at %# (against %s in %s)%pB(%pA+%#): invalid instruction for TLS relocation %s%pB: CALL15 reloc at %# not against global symbol%pB: %#: warning: R_SH_USES points to unrecognized insn 0x%x%pB: %#: fatal: unaligned branch target for relax-support relocation%pB: %#: fatal: unaligned %s relocation %#%pB: %#: fatal: R_SH_PSHA relocation % not in range -32..32%pB: %#: fatal: R_SH_PSHL relocation % not in range -32..32%pB(%pA+%#): cannot emit fixup to `%s' in read-only section%pB(%pA+%#): %s relocation against external symbol "%s"%pB(%pA): offset in relocation for GD->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd4??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xc7??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xd1??)%pB(%pA+%#): unexpected instruction %#04X (expected 0x310c)%pB(%pA+%#): unexpected instruction %#04X (expected 0x410b)%pB(%pA+%#): unexpected instruction %#04X (expected 0x34cc)%pB(%pA): offset in relocation for IE->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd0??: mov.l)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?12: stc)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?ce: mov.l)%pB(%pA): offset in relocation for GD->IE translation is too small: %#%pB(%pA): offset in relocation for LD->LE translation is too small: %#%pB(%s+%#): unresolvable %s relocation against symbol `%s'%pB: %#: warning: %s points to unrecognized insns%pB: %#: warning: %s points to unrecognized insn %#x%pB: %#: warning: %s points to unrecognized reloc%pB: %#: warning: %s points to unrecognized reloc %#%pB: warning: GOT addend of % to `%s' does not match previous GOT addend of %%pB: warning: PLT addend of % to `%s' from %pA section ignored%pB: warning: %s relocation to %# from %pA section%pB(%pA+%#): relocation offset out of range (size=%#)%pB(%pA+%#): could not decode instruction; possible configuration mismatch%pB(%pA+%#): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%pB(%pA+%#): unexpected fix for %s relocation%pB: %pA+%#: warning: %s relocation against unexpected insnstub entry for %s cannot load .plt, dp offset = %%pB(%pA+%#): cannot reach %s%pB: can't relax br at %# in section `%pA'; please use brl or indirect branch%pB: short data segment overflowed (%# >= 0x400000)%pB: missing TLS section for relocation %s against `%s' at %# in section `%pA'.%pB: Can't relax br (%s) to `%s' at %# in section `%pA' with size %# (> 0x1000000).warning: size of symbol `%s' changed from % in %pB to % in %pB%pB(%pA): relocation % has invalid symbol index %ld%pB: Internal inconsistency error for value for
+ linker-allocated global register: linked: %# != relaxed: %#%pB: LOCAL directive: register $% is not a local register; first global register is $%%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %%pB: addend %s%#x in relocation %s against symbol `%s' at %# in section `%pA' is out of range%pB: version count (%) does not match symbol count (%ld)warning: %pB is truncated: expected core file size >= %, found: %%pB: bad reloc symbol index (%# >= %#lx) for offset %# in section `%pA'%pB: non-zero symbol index (%#) for offset %# in section `%pA' when the object file has no symbol tableerror: %pB contains a reloc (%#) for section %pA that references a non-existent global symbol%pB: %pA+%#: no symbol found for INHERIT%pB: incorrect `.reginfo' section size; expected %, got %%pB: GOT reloc at %# not expected in executables%pB: CALL16 reloc at %# not against global symbol%pB: can't find matching LO16 reloc against `%s' for %s at %# in section `%pA'%pB: `%pA' entry VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB: `%pA' offset of % from `%pA' beyond the range of ADDIUPC%pB: `%pA' start VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB 64-bit address %# out of range for Intel Hex file%pB: address %# out of range for Intel Hex filesection address (%#) below start of segment (%#)%pB: access beyond end of merged section (%)%pB: attempt to emit contents at non-multiple-of-4 address %#%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %%pB: XMC_TC0 symbol `%s' is class %d scnlen %%pB: reloc %s:% not in csectTOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%pB: Data Directory size (%lx) exceeds space left in section (%)%pB: desvio de cadeia invÃ¡lido % >= %%pB: reloc TOC em %# para sÃ­mbolo "%s" sem entrada TOC%pB: %#: aviso: mau desvio R_SH_USES%pB: %#: aviso: R_SH_USES aponta para insn %#x nÃ£o reconhecido%pB: %#: aviso: mau desvio de carga R_SH_USES%pB: %#: aviso: impossÃ­vel encontrar reloc esperado%pB: %#: aviso: sÃ­mbolo em secÃ§Ã£o inesperada%pB: %#: aviso: impossÃ­vel encontrar reloc COUNT%pB: %#: aviso: mÃ¡ contagem%pB: %#: fatal: transporte reloc ao relaxar%pB: tipo de relocalizaÃ§Ã£o %d ilegal no endereÃ§o %#%pB: mau tamanho de tabela de cadeias %%pB: mau endereÃ§o reloc %# na secÃ§Ã£o "%pA"erro: %pB(%pA) tamanho de secÃ§Ã£o (%# bytes) maior que o tamanho do ficheiro (%# bytes)erro: %pB(%pA) Ã© muito grande (%# bytes)Erro Dwarf: desvio (%) maior ou igual a tamanho %s (%).Erro Dwarf: total de dados (%) maior que o tamanho do buffer.Erro Dwarf: tipo de formato de conteÃºdo % desconhecido.Erro Dwarf: secÃ§Ã£o de informaÃ§Ã£o da linha muito pequena (%)Erro Dwarf: secÃ§Ã£o de informaÃ§Ã£o da linha maior (%#) que o espaÃ§o restante na secÃ§Ã£o (%#lx)Erro Dwarf:  impossÃ­vel ler referÃªncia alternativa %.Erro Dwarf: impossÃ­vel localizar instÃ¢ncia DIE abstracta invÃ¡lida ref. %%pB: erro: tamanho da secÃ§Ã£o de atributo muito pequeno: %%pB(%pA+%#): relocalizaÃ§Ã£o %s insolÃºvel contra o sÃ­mbolo "%s"%pB: desvio de cadeia invÃ¡lido %u >= % para secÃ§Ã£o "%s"%pB: campo de tamanho invÃ¡lido no cabeÃ§alho da secÃ§Ã£o de grupo: %#%pB: secÃ§Ã£o %pA lma %# ajustada para %#%pB: aviso: detectado segmento carregÃ¡vel vazio em vaddr=%#, Ã© intencional?%pB: aviso: alinhamento do segmento de %# Ã© muito grande%pB(%pA+%#): relocalizaÃ§Ã£o CMEM para "%s" Ã© invÃ¡lida, 16 MSB deveria ser %#x (o valor Ã© %#)%pB(%pA+%#): relocalizaÃ§Ã£o CMEM para "%s+%#" Ã© invÃ¡lida, 16 MSB deveria ser %#x (o valor Ã© %#)ERRO: fictÃ­cio CMSE (secÃ§Ã£o %s) muito longe (%#) do destino (%#)%pB(%pA+%#): instruÃ§Ã£o %s "%#lx" inesperada em trampolim TLS%pB(%pA+%#): instruÃ§Ã£o %s "%#lx" inesperada referenciada por TLS_GOTDESC%pB(%pA+%#): relocalizaÃ§Ã£o %s nÃ£o permitida em objecto partilhado%pB(%pA+%#): sÃ³ sÃ£o permitidas instruÃ§Ãµes ADD ou SUB para relocalizaÃ§Ãµes de grupo ALU%pB(%pA+%#): transporte ao dividir %# para relocalizaÃ§Ã£o de grupo %s%pB(%pA+%#): relocalizaÃ§Ã£o %s contra secÃ§Ã£o SEC_MERGE%pB(%pA+%#): %s usado com sÃ­mbolo TLS %s%pB(%pA+%#): %s usado com sÃ­mbolo nÃ£o-TLS %s%pB(%#): erro: impossÃ­vel criar folha STM32L4XX. Sai fora do intervalo por % bytes. ImpossÃ­vel codificar a instruÃ§Ã£o do ramo. %pB(%pA+%#): relocalizaÃ§Ã£o insolÃºvel contra sÃ­mbolo "%s"%pB(%pA+%#): reloc contra "%s": erro %d%pB: relocalizaÃ§Ã£o em "%pA+%#" referencia o sÃ­mbolo "%s" com adenda nÃ£o-zero%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s com adenda nÃ£o-zero % contra sÃ­mbolo local%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s com adenda nÃ£o-zero % contra sÃ­mbolo "%s"%pB(%pA+%#): impossÃ­vel atingir %s, recompile com -ffunction-sections%pB(%pA+%#): %s fixup para insn %#x nÃ£o Ã© suportado em ligaÃ§Ã£o nÃ£o partilhada%pB(%pA+%#): impossÃ­vel gerir %s para %s%pB: transiÃ§Ã£o TLS de %s para %s contra "%s" em %# na secÃ§Ã£o "%pA" falhouip2k linker: pÃ¡gina de instruÃ§Ã£o em falta em %# (dest = %#)ip2k linker: pÃ¡gina de instruÃ§Ã£o redundante em %# (dest = %#)%pB: aviso: %s aponta para reloc nÃ£o reconhecida em %#relocalizaÃ§Ã£o relativa de ponteiro global no endereÃ§o %# com _gp nÃ£o definido
+ImpossÃ­vel atingir %s (em %#) do ponteiro global (em %#) porque o desvio (%) estÃ¡ fora do intervalo permitido, -32678 a 32767.
+%pB(%pA+%#): erro: %s com instruÃ§Ã£o inesperada %#x%pB(%pA): relocalizaÃ§Ã£o PID insegura %s em %# (contra %s em %s)%pB(%pA+%#): instruÃ§Ã£o invÃ¡lida para relocalizaÃ§Ã£o TLS %s%pB: reloc CALL15 em %# nÃ£o contra sÃ­mbolo global%pB: %#: aviso: R_SH_USES aponta para insn 0x%x nÃ£o reconhecido%pB: %#: fatal: ramo alvo nÃ£o alinhado para relocalizaÃ§Ã£o relax-support%pB: %#: fatal: relocalizaÃ§Ã£o %s desalinhada %#%pB: %#: fatal: R_SH_PSHA relocalizaÃ§Ã£o % fora do intervalo -32..32%pB: %#: fatal: R_SH_PSHL relocalizaÃ§Ã£o % fora do intervalo -32..32%pB(%pA+%#): impossÃ­vel emitir fixup a "%s" em secÃ§Ã£o sÃ³ de leitura%pB(%pA+%#): relocalizaÃ§Ã£o %s contra sÃ­mbolo externo "%s"%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o GD->LE Ã© muito pequeno: %#%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0xd4??)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0xc7??)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0xd1??)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0x310c)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0x410b)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0x34cc)%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o IE->LE Ã© muito pequeno: %#%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0xd0??: mov.l)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0x0?12: stc)%pB(%pA+%#): instruÃ§Ã£o inesperada %#04X (esperada 0x0?ce: mov.l)%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o GD->IE Ã© muito pequeno: %#%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o LD->LE Ã© muito pequeno: %#%pB(%s+%#): relocalizaÃ§Ã£o %s insolÃºvel comtra sÃ­mbolo "%s"%pB: %#: aviso: %s aponta para insns nÃ£o reconhecido%pB: %#: aviso: %s aponta para insn %#x nÃ£o reconhecido%pB: %#: aviso: %s aponta para reloc nÃ£o reconhecida%pB: %#: aviso: %s aponta para reloc nÃ£o reconhecida  %#%pB: aviso: adenda GOT de %# a "%s" nÃ£o corresponde a adenda GOT de %# prÃ©via%pB: aviso: adenda PLT de %# a "%s" da secÃ§Ã£o %pA ignorada%pB: aviso: relocalizaÃ§Ã£o %s para %# da secÃ§Ã£o %pA%pB(%pA+%#): desvio de relocalizaÃ§Ã£o fora do intervalo (tamanho=%#)%pB(%pA+%#): impossÃ­vel descodificar instruÃ§Ã£o; possÃ­vel troca de configuraÃ§Ã£o%pB(%pA+%#): impossÃ­vel descodificar instruÃ§Ã£o para relocalizaÃ§Ã£o XTENSA_ASM_SIMPLIFY; possÃ­vel troca de configuraÃ§Ã£o%pB(%pA+%#): fix inesperado para relocalizaÃ§Ã£o %s%pB: %pA+%#: aviso: relocalizaÃ§Ã£o %s contra insn inesperadoentrada fictÃ­cia para %s nÃ£o pode carregar .plt, desvio dp = %#%pB(%pA+%#): impossÃ­vel atingir %s%pB: impossÃ­vel relaxar br em %# na secÃ§Ã£o "%pA". Por favor, use brl ou um ramo indirecto.%pB: transporte no segmento de dados curtos (%# >= 0x400000)%pB: secÃ§Ã£o TLS em falta para relocalizaÃ§Ã£o %s contra "%s" em %# na secÃ§Ã£o "%pA".%pB: impossÃ­vel relaxar br (%s) para "%s" em %# na secÃ§Ã£o "%pA" com tamanho %# (> 0x1000000).Aviso: tamanho do sÃ­mbolo "%s" mudou de % em %pB para % em %pB%pB(%pA): relocalizaÃ§Ã£o %# tem Ã­ndice de sÃ­mbolos invÃ¡lido %ld%pB: erro interno de inconsistÃªncia no valor para o
  registo global alocado para o linker: ligado: %# != relaxado: %#%pB: directiva LOCAL: registo $%# nÃ£o Ã© um registo local. O primeiro registo global Ã© $%#%pB: relocalizaÃ§Ã£o %s contra STT_GNU_IFUNC sÃ­mbolo "%s" tem adenda nÃ£o-zero: %#%pB: adenda %s%#x em relocalizaÃ§Ã£o %s contra sÃ­mbolo "%s" em %# na secÃ§Ã£o "%pA" estÃ¡ fora do intervalo%pB: nÂº de versÃ£o (%#) nÃ£o corresponde ao nÂº de sÃ­mbolos (%ld)aviso: %pB estÃ¡ truncado: esperado tamanho do ficheiro de nÃºcleo >= %, obtido: %%pB: mau Ã­ndice de sÃ­mbolo de reloc (%# >= %#lx) para desvio %# na secÃ§Ã£o "%pA"%pB: Ã­ndice de sÃ­mbolo nÃ£o-zero (%#) para desvio %# na secÃ§Ã£o "%pA" onde o ficheiro objecto nÃ£o tem tabela de sÃ­mboloerro: %pB contÃ©m uma reloc (%#) para a secÃ§Ã£o %pA que referencia um sÃ­mbolo global inexistente%pB: %pA+%#: sem sÃ­mbolo para INHERIT%pB: tamanho de secÃ§Ã£o "reginfo" incorrecto; esperado %, obtido %%pB: reloc GOT em %# nÃ£o esperada em executÃ¡veis%pB: reloc CALL16 em %# nÃ£o contra sÃ­mbolo global%pB: impossÃ­vel encontrar reloc LO16 correspondente contra "%s" para %s em %# na secÃ§Ã£o "%pA"%pB: entrada VMA "%pA" de %# fora do intervalo de 32-bitsuportado; considere usar "-Ttext-segment=..."%pB: desvio "%pA" de  % de "%pA" alÃ©m do intervalo de ADDIUPC%pB: inÃ­cio VMA "%pA" de %# fora do intervalo 32-bit suportado; considere usar "-Ttext-segment=..."endereÃ§o %pB 64-bit %# forta do intervalo para ficheiro Hex Intel%pB: endereÃ§o %# fora do intervalo para ficheiro Intel HexendereÃ§o de secÃ§Ã£o (%#) abaixo do inÃ­cio do segmento (%#)%pB: acesso alÃ©m do fim da secÃ§Ã£o unida (%)%pB: tentativa de emitir conteÃºdo em endereÃ§o nÃ£o mÃºltiplo de 4 %#%pB: demasiados registos inicializados; tamanho de secÃ§Ã£o %%pB: endereÃ§o inicial invÃ¡lido para registos inicializados de tamanho %: %#%pB: mau sÃ­mbolo XTY_ER "%s": classe %d scnum %d scnlen %%pB: XMC_TC0 sÃ­mbolo "%s" Ã© classe %d scnlen %%pB: reloc %s:% fora de csectTransporte TOC: %# > 0x10000; tente -mminimal-toc ao compilar%pB(%pA+%#): % bytes requeridos para alinhamento com limite %-byte, mas sÃ³ hÃ¡ % presentes%pB: tamanho da pasta de dados (%lx) excede o espaÃ§o deixado na secÃ§Ã£o (%)
\ No newline at end of file
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/pt.po ./bfd/po/pt.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/pt.po	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/po/pt.po	2021-05-21 01:57:23.000000000 +0000
@@ -1,240 +1,253 @@
 # Portuguese translations for GNU binutils package.
 # Copyright (C) 2018 Free Software Foundation, Inc.
 # This file is distributed under the same license as the binutils package.
-# Pedro Albuquerque <palbuquerque73@gmail.com>, 2018, 2019.
+# Pedro Albuquerque <pmra@protonmail.com>, 2018, 2019, 2020.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd-2.31.90\n"
+"Project-Id-Version: bfd-2.34.90\n"
 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2019-01-19 16:30+0000\n"
-"PO-Revision-Date: 2019-01-20 17:21+0000\n"
-"Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n"
+"POT-Creation-Date: 2020-07-04 10:26+0100\n"
+"PO-Revision-Date: 2020-07-05 07:27+0100\n"
+"Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n"
 "Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
 "Language: pt\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Bugs: Report translation errors to the Language-Team address.\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\\n\n"
-"X-Generator: Gtranslator 2.91.7\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Geany / PoHelper 1.36\n"
 
-#: aout-cris.c:200
+#: aout-cris.c:196
 #, c-format
 msgid "%pB: unsupported relocation type exported: %#x"
 msgstr "%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado exportado: %#x"
 
-#: aout-cris.c:244
+#: aout-cris.c:242
 #, c-format
 msgid "%pB: unsupported relocation type imported: %#x"
 msgstr "%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado importado: %#x"
 
-#: aout-cris.c:256
+#: aout-cris.c:254
 #, c-format
 msgid "%pB: bad relocation record imported: %d"
 msgstr "%pB: registo de relocalizaÃ§Ã£o importado invÃ¡lido: %d"
 
-#: aoutx.h:1265 aoutx.h:1618 pdp11.c:1138 pdp11.c:1399
+#: aoutx.h:1265 aoutx.h:1613 pdp11.c:1236 pdp11.c:1510
 #, c-format
 msgid "%pB: can not represent section `%pA' in a.out object file format"
 msgstr "%pB: impossÃ­vel representar secÃ§Ã£o \"%pA\" num formato de ficheiro objecto a.out"
 
-#: aoutx.h:1582 pdp11.c:1371
+#: aoutx.h:1577 pdp11.c:1482
 #, c-format
 msgid "%pB: can not represent section for symbol `%s' in a.out object file format"
 msgstr "%pB: impossÃ­vel representar secÃ§Ã£o para sÃ­mbolo\"%s\" num formato de ficheiro objecto a.out"
 
-#: aoutx.h:1585 vms-alpha.c:7860
+#: aoutx.h:1580 vms-alpha.c:8040
 msgid "*unknown*"
 msgstr "*desconhecido*"
 
-#: aoutx.h:1721
+#: aoutx.h:1716 pdp11.c:1578
 #, c-format
 msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
 msgstr "%pB: desvio de cadeia invÃ¡lido %<PRIu64> >= %<PRIu64>"
 
-#: aoutx.h:2412 aoutx.h:2430
+#: aoutx.h:1963
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: tipo de relocalizaÃ§Ã£o AOUT nÃ£o suportado %d"
+
+#: aoutx.h:2412 aoutx.h:2430 pdp11.c:2058
 #, c-format
 msgid "%pB: attempt to write out unknown reloc type"
 msgstr "%pB tentativa de escrever tipo de reloc desconhecido"
 
-#: aoutx.h:4086
+#: aoutx.h:4087 pdp11.c:3441
 #, c-format
 msgid "%pB: unsupported relocation type"
 msgstr "%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado"
 
 #. Unknown relocation.
-#: aoutx.h:4407 coff-alpha.c:601 coff-alpha.c:1514 coff-rs6000.c:2772
+#: aoutx.h:4408 coff-alpha.c:601 coff-alpha.c:1512 coff-rs6000.c:2758
 #: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:279 elf-hppa.h:798
-#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:517
-#: elf32-arm.c:1943 elf32-avr.c:964 elf32-bfin.c:1061 elf32-bfin.c:4698
-#: elf32-cr16.c:653 elf32-cr16.c:683 elf32-cr16c.c:186 elf32-cris.c:467
-#: elf32-crx.c:429 elf32-csky.c:989 elf32-d10v.c:234 elf32-d30v.c:522
-#: elf32-d30v.c:544 elf32-dlx.c:548 elf32-epiphany.c:376 elf32-fr30.c:381
-#: elf32-frv.c:2558 elf32-frv.c:6262 elf32-ft32.c:306 elf32-h8300.c:302
-#: elf32-i386.c:401 elf32-ip2k.c:1245 elf32-iq2000.c:442 elf32-lm32.c:539
-#: elf32-m32c.c:305 elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2417
-#: elf32-m68hc11.c:390 elf32-m68hc12.c:510 elf32-m68k.c:352 elf32-mcore.c:354
-#: elf32-mcore.c:440 elf32-mep.c:389 elf32-metag.c:878 elf32-microblaze.c:692
-#: elf32-microblaze.c:969 elf32-mips.c:2229 elf32-moxie.c:137
-#: elf32-msp430.c:648 elf32-msp430.c:658 elf32-mt.c:241 elf32-nds32.c:3236
-#: elf32-nds32.c:3262 elf32-nds32.c:5173 elf32-nios2.c:3015 elf32-or1k.c:1037
-#: elf32-pj.c:325 elf32-ppc.c:898 elf32-ppc.c:911 elf32-pru.c:420
-#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:292
-#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:160 elf32-tic6x.c:1508
-#: elf32-tic6x.c:1518 elf32-tic6x.c:1537 elf32-tic6x.c:1547 elf32-tic6x.c:2642
-#: elf32-tilepro.c:803 elf32-v850.c:1899 elf32-v850.c:1921 elf32-v850.c:4270
-#: elf32-vax.c:290 elf32-visium.c:482 elf32-wasm32.c:105 elf32-xc16x.c:250
-#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:459
-#: elf32-xtensa.c:493 elf64-alpha.c:1112 elf64-alpha.c:4101 elf64-alpha.c:4249
-#: elf64-ia64-vms.c:254 elf64-ia64-vms.c:3440 elf64-mips.c:3958
-#: elf64-mips.c:3974 elf64-mmix.c:1264 elf64-nfp.c:238 elf64-ppc.c:921
-#: elf64-ppc.c:1209 elf64-ppc.c:1218 elf64-s390.c:328 elf64-s390.c:378
-#: elf64-x86-64.c:285 elfn32-mips.c:3786 elfxx-ia64.c:324 elfxx-riscv.c:955
-#: elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:912 elfxx-tilegx.c:952
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:2125
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:2223
-#: elf32-ia64.c:210 elf32-ia64.c:3862 elf64-ia64.c:210 elf64-ia64.c:3862
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:532
+#: elf32-arm.c:1985 elf32-avr.c:962 elf32-bfin.c:1062 elf32-bfin.c:4677
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:990 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:372 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6239 elf32-ft32.c:306 elf32-h8300.c:302 elf32-i386.c:400
+#: elf32-ip2k.c:1240 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2232 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:389 elf32-metag.c:874 elf32-microblaze.c:692
+#: elf32-microblaze.c:965 elf32-mips.c:2229 elf32-moxie.c:137
+#: elf32-msp430.c:653 elf32-msp430.c:663 elf32-mt.c:241 elf32-nds32.c:3237
+#: elf32-nds32.c:3263 elf32-nds32.c:5033 elf32-nios2.c:3022 elf32-or1k.c:1040
+#: elf32-pj.c:326 elf32-ppc.c:901 elf32-ppc.c:914 elf32-pru.c:423
+#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:296
+#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:163 elf32-tic6x.c:1498
+#: elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537 elf32-tic6x.c:2583
+#: elf32-tilepro.c:800 elf32-v850.c:1898 elf32-v850.c:1920 elf32-v850.c:4270
+#: elf32-vax.c:290 elf32-visium.c:481 elf32-wasm32.c:105 elf32-xc16x.c:250
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:522
+#: elf32-xtensa.c:556 elf32-z80.c:331 elf64-alpha.c:1113 elf64-alpha.c:4067
+#: elf64-alpha.c:4215 elf64-bpf.c:322 elf64-ia64-vms.c:254
+#: elf64-ia64-vms.c:3429 elf64-mips.c:3958 elf64-mips.c:3974 elf64-mmix.c:1264
+#: elf64-nfp.c:238 elf64-ppc.c:1014 elf64-ppc.c:1366 elf64-ppc.c:1375
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:281 elfn32-mips.c:3786
+#: elfxx-ia64.c:324 elfxx-riscv.c:954 elfxx-sparc.c:589 elfxx-sparc.c:639
+#: elfxx-tilegx.c:909 elfxx-tilegx.c:949 elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2313 elfnn-ia64.c:213 elfnn-ia64.c:3824
 #, c-format
 msgid "%pB: unsupported relocation type %#x"
 msgstr "%pB: tipo de relocalizaÃ§Ã£o %#x nÃ£o suportado"
 
-#: aoutx.h:5434 pdp11.c:3694
+#: aoutx.h:5435 pdp11.c:3864
 #, c-format
 msgid "%pB: relocatable link from %s to %s not supported"
 msgstr "%pB: ligaÃ§Ã£o relocalizÃ¡vel de %s para %s nÃ£o suportado"
 
-#: archive.c:2214
+#: arc-got.h:69
+#, c-format
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr "%pB: impossÃ­vel alocar memÃ³ria para entradas GOT locais"
+
+#: archive.c:2249
 msgid "warning: writing archive was slow: rewriting timestamp"
 msgstr "Aviso: escrita do arquivo lenta: a reescrever a dataÃ§Ã£o"
 
-#: archive.c:2330 linker.c:1429
+#: archive.c:2316 archive.c:2376 elflink.c:4545 linker.c:1428
 #, c-format
 msgid "%pB: plugin needed to handle lto object"
 msgstr "%pB: extensÃ£o precisou de gerir objecto lto"
 
-#: archive.c:2559
+#: archive.c:2602
 msgid "Reading archive file mod timestamp"
 msgstr "A ler dataÃ§Ã£o de mod de ficheiro de arquivo"
 
-#: archive.c:2583
+#: archive.c:2626
 msgid "Writing updated armap timestamp"
 msgstr "A escrever dataÃ§Ã£o armap actualizado"
 
-#: bfd.c:449
+#: bfd.c:677
 msgid "no error"
 msgstr "Sem erro"
 
-#: bfd.c:450
+#: bfd.c:678
 msgid "system call error"
 msgstr "Erro de chamada do sistema"
 
-#: bfd.c:451
+#: bfd.c:679
 msgid "invalid bfd target"
 msgstr "Alvo bfd invÃ¡lido"
 
-#: bfd.c:452
+#: bfd.c:680
 msgid "file in wrong format"
 msgstr "Ficheiro em formato errado"
 
-#: bfd.c:453
+#: bfd.c:681
 msgid "archive object file in wrong format"
 msgstr "Ficheiro objecto de arquivo em formato errado"
 
-#: bfd.c:454
+#: bfd.c:682
 msgid "invalid operation"
 msgstr "OperaÃ§Ã£o invÃ¡lida"
 
-#: bfd.c:455
+#: bfd.c:683
 msgid "memory exhausted"
 msgstr "MemÃ³ria esgotada"
 
-#: bfd.c:456
+#: bfd.c:684
 msgid "no symbols"
 msgstr "Sem sÃ­mbolos"
 
-#: bfd.c:457
+#: bfd.c:685
 msgid "archive has no index; run ranlib to add one"
 msgstr "Arquivo sem Ã­ndice; execute ranlib para adicionar um"
 
-#: bfd.c:458
+#: bfd.c:686
 msgid "no more archived files"
 msgstr "Sem mais ficheiros de arquivo"
 
-#: bfd.c:459
+#: bfd.c:687
 msgid "malformed archive"
 msgstr "Arquivo mal formado"
 
-#: bfd.c:460
+#: bfd.c:688
 msgid "DSO missing from command line"
 msgstr "DSO em falta da linha de comandos"
 
-#: bfd.c:461
+#: bfd.c:689
 msgid "file format not recognized"
 msgstr "Formato de ficheiro nÃ£o reconhecido"
 
-#: bfd.c:462
+#: bfd.c:690
 msgid "file format is ambiguous"
 msgstr "Formato de ficheiro ambÃ­guo"
 
-#: bfd.c:463
+#: bfd.c:691
 msgid "section has no contents"
 msgstr "SecÃ§Ã£o sem conteÃºdo"
 
-#: bfd.c:464
+#: bfd.c:692
 msgid "nonrepresentable section on output"
 msgstr "SecÃ§Ã£o nÃ£o representÃ¡vel na saÃ­da"
 
-#: bfd.c:465
+#: bfd.c:693
 msgid "symbol needs debug section which does not exist"
 msgstr "SÃ­mbolo precisa de secÃ§Ã£o de depuraÃ§Ã£o que nÃ£o existe"
 
-#: bfd.c:466
+#: bfd.c:694
 msgid "bad value"
 msgstr "Mau valor"
 
-#: bfd.c:467
+#: bfd.c:695
 msgid "file truncated"
 msgstr "Ficheiro truncado"
 
-#: bfd.c:468
+#: bfd.c:696
 msgid "file too big"
 msgstr "Ficheiro muito grande"
 
-#: bfd.c:469
+#: bfd.c:697
+msgid "sorry, cannot handle this file"
+msgstr "desculpe, impossÃ­vel gerir este ficheiro"
+
+#: bfd.c:698
 #, c-format
 msgid "error reading %s: %s"
 msgstr "Erro  ao ler %s: %s"
 
-#: bfd.c:470
+#: bfd.c:699
 msgid "#<invalid error code>"
 msgstr "#<CÃ³digo de erro invÃ¡lido>"
 
-#: bfd.c:1429
+#: bfd.c:1658
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "BFD falha de asserÃ§Ã£o %s %s:%d"
 
-#: bfd.c:1442
+#: bfd.c:1671
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d in %s\n"
 msgstr "BFD erro interno %s, a abortar em %s:%d em %s\n"
 
-#: bfd.c:1447
+#: bfd.c:1676
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d\n"
 msgstr "BFD erro interno %s, a abortar em %s:%d\n"
 
-#: bfd.c:1449
+#: bfd.c:1678
 msgid "Please report this bug.\n"
 msgstr "Por favor, reporte este erro.\n"
 
-#: bfdwin.c:206
+#: bfdwin.c:207
 #, c-format
 msgid "not mapping: data=%lx mapped=%d\n"
 msgstr "nÃ£o mapeado: dados=%lx mapeado=%d\n"
 
-#: bfdwin.c:209
+#: bfdwin.c:210
 #, c-format
 msgid "not mapping: env var not set\n"
 msgstr "nÃ£o mapeado: env var nÃ£o definida\n"
@@ -256,118 +269,113 @@ msgstr ""
 "%pB: impossÃ­vel gerir binÃ¡rios Alpha comprimidos.\n"
 "   Use bandeiras do compilador ou objZ para gerar binÃ¡rios descomprimidos."
 
-#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1957 coff-mips.c:950
+#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1954 coff-mips.c:953
 msgid "GP relative relocation used when GP not defined"
 msgstr "Usada relocalizaÃ§Ã£o relativa GP sem GP definido"
 
-#: coff-alpha.c:1443
+#: coff-alpha.c:1441
 msgid "using multiple gp values"
 msgstr "a usar mÃºltiplos valores gp"
 
-#: coff-alpha.c:1501 coff-alpha.c:1507 elf.c:9100 elf32-mcore.c:100
-#: elf32-mcore.c:455 elf32-ppc.c:7697 elf32-ppc.c:8829 elf64-ppc.c:14411
+#: coff-alpha.c:1499 coff-alpha.c:1505 elf.c:9431 elf32-mcore.c:100
+#: elf32-mcore.c:455 elf32-ppc.c:7596 elf32-ppc.c:8747 elf64-ppc.c:15962
 #, c-format
 msgid "%pB: %s unsupported"
 msgstr "%pB: %s: nÃ£o suportado"
 
-#: coff-mips.c:640 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
+#: coff-go32.c:156 coffswap.h:785
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: aviso: %s: transporte de nÃºmero de linha: 0x%lx > 0xffff"
+
+#: coff-mips.c:643 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
 #: elf64-mips.c:3451 elfn32-mips.c:3276
 msgid "GP relative relocation when _gp not defined"
 msgstr "RelocalizaÃ§Ã£o relativa GP com _gp nÃ£o definido"
 
-#: coff-rs6000.c:2858
+#: coff-rs6000.c:2844
 #, c-format
 msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
 msgstr "%pB: reloc TOC em %#<PRIx64> para sÃ­mbolo \"%s\" sem entrada TOC"
 
-#: coff-rs6000.c:3620 coff64-rs6000.c:2145
+#: coff-rs6000.c:3607 coff64-rs6000.c:2153
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized smclas %d"
 msgstr "%pB: sÃ­mbolo \"%s\" tem smclas %d nÃ£o reconhecido"
 
-#: coff-sh.c:780 elf32-sh.c:521
+#: coff-sh.c:778 elf32-sh.c:521
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
 msgstr "%pB: %#<PRIx64>: aviso: mau desvio R_SH_USES"
 
-#: coff-sh.c:791
+#: coff-sh.c:789
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
 msgstr "%pB: %#<PRIx64>: aviso: R_SH_USES aponta para insn %#x nÃ£o reconhecido"
 
-#: coff-sh.c:809 elf32-sh.c:552
+#: coff-sh.c:807 elf32-sh.c:552
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
 msgstr "%pB: %#<PRIx64>: aviso: mau desvio de carga R_SH_USES"
 
-#: coff-sh.c:834 elf32-sh.c:568
+#: coff-sh.c:832 elf32-sh.c:568
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
 msgstr "%pB: %#<PRIx64>: aviso: impossÃ­vel encontrar reloc esperado"
 
-#: coff-sh.c:851 elf32-sh.c:597
+#: coff-sh.c:849 elf32-sh.c:597
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
 msgstr "%pB: %#<PRIx64>: aviso: sÃ­mbolo em secÃ§Ã£o inesperada"
 
-#: coff-sh.c:977 elf32-sh.c:727
+#: coff-sh.c:975 elf32-sh.c:727
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
 msgstr "%pB: %#<PRIx64>: aviso: impossÃ­vel encontrar reloc COUNT"
 
-#: coff-sh.c:987 elf32-sh.c:738
+#: coff-sh.c:985 elf32-sh.c:738
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad count"
 msgstr "%pB: %#<PRIx64>: aviso: mÃ¡ contagem"
 
-#: coff-sh.c:1359 coff-sh.c:2647 elf32-sh.c:1142 elf32-sh.c:1512
+#: coff-sh.c:1356 coff-sh.c:2644 elf32-sh.c:1138 elf32-sh.c:1505
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
 msgstr "%pB: %#<PRIx64>: fatal: transporte reloc ao relaxar"
 
-#: coff-sh.c:1454
+#: coff-sh.c:1451
 #, c-format
 msgid "%pB: fatal: generic symbols retrieved before relaxing"
 msgstr "%pB: fatal: obtidos sÃ­mbolos genÃ©ricos antes de relaxar"
 
-#: coff-sh.c:2785 cofflink.c:2965
+#: coff-sh.c:2781 cofflink.c:2948
 #, c-format
 msgid "%pB: illegal symbol index %ld in relocs"
 msgstr "%pB: Ã­ndice de sÃ­mbolo %ld ilegal em relocs"
 
-#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5010
+#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5085
 #, c-format
 msgid "%pB: warning: illegal symbol index %ld in relocs"
 msgstr "%pB: aviso: Ã­ndice de sÃ­mbolo %ld ilegal em relocs"
 
-#: coff-tic80.c:441
-#, c-format
-msgid "unsupported relocation type %#x"
-msgstr "tipo de relocalizaÃ§Ã£o %#x nÃ£o suportado"
-
-#: coff-tic80.c:672 cofflink.c:3127
-#, c-format
-msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
-msgstr "%pB: mau endereÃ§o reloc %#<PRIx64> na secÃ§Ã£o \"%pA\""
-
-#: coffcode.h:954
+#: coffcode.h:961
 #, c-format
 msgid "%pB: unable to load COMDAT section name"
 msgstr "%pB: impossÃ­vel carregar nome de secÃ§Ã£o COMDAT"
 
 #. Malformed input files can trigger this test.
 #. cf PR 21781.
-#: coffcode.h:989
+#: coffcode.h:996
 #, c-format
 msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
 msgstr "%pB: erro: sÃ­mbolo \"%s\" inesperado em secÃ§Ã£o COMDAT"
 
-#: coffcode.h:1001
+#: coffcode.h:1008
 #, c-format
 msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
 msgstr "%pB: aviso: sÃ­mbolo \"%s\" COMDAT nÃ£o corresponde ao nome de secÃ§Ã£o \"%s\""
 
-#: coffcode.h:1011
+#: coffcode.h:1018
 #, c-format
 msgid "%pB: warning: no symbol for section '%s' found"
 msgstr "%pB: aviso: sÃ­mbolo para secÃ§Ã£o \"%s\" nÃ£o encontrado"
@@ -375,311 +383,315 @@ msgstr "%pB: aviso: sÃ­mbolo para secÃ§Ã
 #. Generate a warning message rather using the 'unhandled'
 #. variable as this will allow some .sys files generate by
 #. other toolchains to be processed.  See bugzilla issue 196.
-#: coffcode.h:1237
+#: coffcode.h:1249
 #, c-format
 msgid "%pB: warning: ignoring section flag %s in section %s"
 msgstr "%pB: aviso: a ignorar bandeira de secÃ§Ã£o %s na secÃ§Ã£o %s"
 
-#: coffcode.h:1306
+#: coffcode.h:1318
 #, c-format
 msgid "%pB (%s): section flag %s (%#lx) ignored"
 msgstr "%pB (%s): bandeira de secÃ§Ã£o %s (%#lx) ignorada"
 
-#: coffcode.h:1917
+#: coffcode.h:1934 coffcode.h:1999
 #, c-format
 msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
 msgstr "%pB: aviso: afirma ter 0xffff relocs, sem transporte"
 
-#: coffcode.h:2315
+#: coffcode.h:2365
 #, c-format
 msgid "unrecognized TI COFF target id '0x%x'"
 msgstr "TI COFF id de alvo \"0x%x\" nÃ£o reconhecida"
 
-#: coffcode.h:2599
+#: coffcode.h:2643
 #, c-format
 msgid "%pB: reloc against a non-existent symbol index: %ld"
 msgstr "%pB: reloc contra Ã­ndice de sÃ­mbolo nÃ£o existente: %ld"
 
-#: coffcode.h:2910
+#: coffcode.h:2951
 #, c-format
 msgid "%pB: page size is too large (0x%x)"
 msgstr "%pB: tamanho de pÃ¡gina muito grande (0x%x)"
 
-#: coffcode.h:3070
+#: coffcode.h:3111
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr "%pB: demasiadas secÃ§Ãµes (%d)"
 
-#: coffcode.h:3489
+#: coffcode.h:3530
 #, c-format
 msgid "%pB: section %pA: string table overflow at offset %ld"
 msgstr "%pB: secÃ§Ã£o %pA: transporte na tabela de sÃ­mbolo no desvio %ld"
 
-#: coffcode.h:3589
+#: coffcode.h:3630
 #, c-format
 msgid "%pB:%s section %s: alignment 2**%u not representable"
 msgstr "%pB:%s secÃ§Ã£o %s: alinhamento 2**%u nÃ£o representÃ¡vel"
 
-#: coffcode.h:4276
+#: coffcode.h:4329
 #, c-format
 msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
 msgstr "%pB: aviso: total de nÃºmero de linha (%#lx) excede tamanho de secÃ§Ã£o (%#lx)"
 
-#: coffcode.h:4291
+#: coffcode.h:4349
 #, c-format
 msgid "%pB: warning: line number table read failed"
 msgstr "%pB: aviso: falha ao ler tabela de nÃºmero de linha"
 
-#: coffcode.h:4325 coffcode.h:4339
+#: coffcode.h:4383 coffcode.h:4397
 #, c-format
 msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
 msgstr "%pB: aviso: Ã­ndice de sÃ­mbolo 0x%lx ilegal em entrada de nÃºmero de linha %d"
 
-#: coffcode.h:4353
+#: coffcode.h:4411
 #, c-format
 msgid "%pB: warning: illegal symbol in line number entry %d"
 msgstr "%pB: aviso: sÃ­mbolo ilegal em entrada de nÃºmero de linha %d"
 
-#: coffcode.h:4366
+#: coffcode.h:4424
 #, c-format
 msgid "%pB: warning: duplicate line number information for `%s'"
 msgstr "%pB: aviso: informaÃ§Ã£o de nÃºmero de linha duplicada para \"%s\""
 
-#: coffcode.h:4774
+#: coffcode.h:4845
 #, c-format
 msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
 msgstr "%pB: classe de armazenamento %d nÃ£o reconhecida para %s sÃ­mbolo \"%s\""
 
-#: coffcode.h:4904
+#: coffcode.h:4975
 #, c-format
 msgid "warning: %pB: local symbol `%s' has no section"
 msgstr "aviso: %pB: sÃ­mbolo local \"%s\" nÃ£o tem secÃ§Ã£o"
 
-#: coffcode.h:5050
+#: coffcode.h:5125
 #, c-format
 msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
 msgstr "%pB: tipo de relocalizaÃ§Ã£o %d ilegal no endereÃ§o %#<PRIx64>"
 
-#: coffgen.c:178 elf.c:1216
+#: coffgen.c:179 elf.c:1236
 #, c-format
 msgid "%pB: unable to initialize compress status for section %s"
 msgstr "%pB: impossÃ­vel inicializar estado comprimido para secÃ§Ã£o %s"
 
-#: coffgen.c:202 elf.c:1227
+#: coffgen.c:203 elf.c:1247
 #, c-format
 msgid "%pB: unable to initialize decompress status for section %s"
 msgstr "%pB: impossÃ­vel inicializar estado descomprimido para secÃ§Ã£o %s"
 
-#: coffgen.c:1657
-#, c-format
-msgid "%pB: corrupt symbol count: %#<PRIx64>"
-msgstr "%pB: total de sÃ­mbolos corrupto: %#<PRIx64>"
-
-#. PR 21013: Provide an error message when the alloc fails.
-#: coffgen.c:1666
-#, c-format
-msgid "%pB: not enough memory to allocate space for %#<PRIx64> symbols of size %#<PRIx64>"
-msgstr "%pB: memÃ³ria insuficiente para alocar espaÃ§o para %#<PRIx64> sÃ­mbolos de tamanho %#<PRIx64>"
-
-#: coffgen.c:1735
+#: coffgen.c:1704
 #, c-format
 msgid "%pB: bad string table size %<PRIu64>"
 msgstr "%pB: mau tamanho de tabela de cadeias %<PRIu64>"
 
-#: coffgen.c:1912 coffgen.c:1972 coffgen.c:1990 cofflink.c:2045 elf.c:1882
-#: xcofflink.c:4505
+#: coffgen.c:1876 coffgen.c:1936 coffgen.c:1954 cofflink.c:2024 elf.c:1921
+#: xcofflink.c:4500
 msgid "<corrupt>"
 msgstr "<corrupto>"
 
-#: coffgen.c:2114
+#: coffgen.c:2085
 #, c-format
 msgid "<corrupt info> %s"
 msgstr "<informaÃ§Ã£o corrupta> %s"
 
-#: coffgen.c:2693 elflink.c:14322 linker.c:2959
+#: coffgen.c:2675 elflink.c:14624 linker.c:2956
 msgid "%F%P: already_linked_table: %E\n"
 msgstr "%F%P: already_linked_table: %E\n"
 
-#: coffgen.c:3034 elflink.c:13324
+#: coffgen.c:3016 elflink.c:13617
 #, c-format
 msgid "removing unused section '%pA' in file '%pB'"
 msgstr "A remover secÃ§Ã£o \"%pA\" nÃ£o usada no ficheiro \"%pB\""
 
-#: coffgen.c:3111 elflink.c:13542
+#: coffgen.c:3093 elflink.c:13835
 msgid "warning: gc-sections option ignored"
 msgstr "Aviso: opÃ§Ã£o gc-sections ignorada"
 
-#: cofflink.c:352
+#: cofflink.c:366
 #, c-format
 msgid "warning: symbol `%s' is both section and non-section"
 msgstr "Aviso: sÃ­mbolo \"%s\" Ã© secÃ§Ã£o e nÃ£o-secÃ§Ã£o em simultÃ¢neo"
 
-#: cofflink.c:454 elf64-ia64-vms.c:5203 elflink.c:4953
+#: cofflink.c:471 elf64-ia64-vms.c:5200 elflink.c:5131
 #, c-format
 msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
 msgstr "Aviso: tipo de sÃ­mbolo \"%s\" alterado de %d para %d em %pB"
 
-#: cofflink.c:2373
+#: cofflink.c:2352
 #, c-format
 msgid "%pB: relocs in section `%pA', but it has no contents"
 msgstr "%pB: relocs na secÃ§Ã£o \"%pA\", mas nÃ£o tem conteÃºdo"
 
-#: cofflink.c:2436 elflink.c:10810
+#: cofflink.c:2415 elflink.c:11082
 #, c-format
 msgid "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB\n"
 msgstr "%X\"%s\" referenciado na secÃ§Ã£o \"%pA\" de %pB: definido em secÃ§Ã£o descartada \"%pA\" de %pB\n"
 
-#: cofflink.c:2734
+#: cofflink.c:2717
 #, c-format
 msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
 msgstr "%pB: %pA: transporte de reloc: %#x > 0xffff"
 
-#: cofflink.c:2742
+#: cofflink.c:2725
 #, c-format
 msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
 msgstr "%pB: aviso: %pA: transporte de nÃºmero de linha: %#x > 0xffff"
 
-#: coffswap.h:789
+#: cofflink.c:3110
 #, c-format
-msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
-msgstr "%pB: aviso: %s: transporte de nÃºmero de linha: 0x%lx > 0xffff"
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgstr "%pB: mau endereÃ§o reloc %#<PRIx64> na secÃ§Ã£o \"%pA\""
 
-#: coffswap.h:803
+#: coffswap.h:799
 #, c-format
 msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr "%pB: %s: transporte de reloc: 0x%lx > 0xffff"
 
-#: compress.c:260
+#: compress.c:271
+#, c-format
+msgid "error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size (%#<PRIx64> bytes)"
+msgstr "erro: %pB(%pA) tamanho de secÃ§Ã£o (%#<PRIx64> bytes) maior que o tamanho do ficheiro (%#<PRIx64> bytes)"
+
+#: compress.c:282
 #, c-format
 msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
 msgstr "erro: %pB(%pA) Ã© muito grande (%#<PRIx64> bytes)"
 
-#: cpu-arm.c:298 cpu-arm.c:310
+#: cpu-arm.c:303 cpu-arm.c:315
 #, c-format
 msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
 msgstr "erro: %pB estÃ¡ compilado para EP9312, enquanto %pB estÃ¡ compilado para XScale"
 
-#: cpu-arm.c:446
+#: cpu-arm.c:451
 #, c-format
 msgid "warning: unable to update contents of %s section in %pB"
 msgstr "aviso: impossÃ­vel actualizar conteÃºdo da secÃ§Ã£o %s em %pB"
 
-#: dwarf2.c:544
+#: dwarf2.c:543
 #, c-format
 msgid "DWARF error: can't find %s section."
 msgstr "Erro Dwarf: impossÃ­vel encontrar a secÃ§Ã£o %s."
 
-#: dwarf2.c:579
+#: dwarf2.c:578
 #, c-format
 msgid "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
 msgstr "Erro Dwarf: desvio (%<PRIu64>) maior ou igual a tamanho %s (%<PRIu64>)."
 
-#: dwarf2.c:1107
+#: dwarf2.c:1165
 msgid "DWARF error: info pointer extends beyond end of attributes"
 msgstr "Erro Dwarf: ponteiro de informaÃ§Ã£o excede o final dos atributos"
 
-#: dwarf2.c:1275
+#: dwarf2.c:1333
 #, c-format
 msgid "DWARF error: invalid or unhandled FORM value: %#x"
 msgstr "Erro Dwarf: valor FORM invÃ¡lido ou nÃ£o gerido: %#x."
 
-#: dwarf2.c:1581
+#: dwarf2.c:1646
 msgid "DWARF error: mangled line number section (bad file number)"
 msgstr "Erro Dwarf: secÃ§Ã£o de nÃºmero de linha modificada (mau nÂº de ficheiro)."
 
-#: dwarf2.c:1926
+#: dwarf2.c:1994
 msgid "DWARF error: zero format count"
 msgstr "Erro Dwarf: total de formato zero."
 
-#: dwarf2.c:1936
+#: dwarf2.c:2004
 #, c-format
 msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
 msgstr "Erro Dwarf: total de dados (%<PRIx64>) maior que o tamanho do buffer."
 
-#: dwarf2.c:1977
+#: dwarf2.c:2045
 #, c-format
 msgid "DWARF error: unknown format content type %<PRIu64>"
 msgstr "Erro Dwarf: tipo de formato de conteÃºdo %<PRIu64> desconhecido."
 
-#: dwarf2.c:2057
+#: dwarf2.c:2112
 #, c-format
 msgid "DWARF error: line info section is too small (%<PRId64>)"
 msgstr "Erro Dwarf: secÃ§Ã£o de informaÃ§Ã£o da linha muito pequena (%<PRId64>)"
 
-#: dwarf2.c:2087
+#: dwarf2.c:2142
 #, c-format
 msgid "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining in the section (%#lx)"
 msgstr "Erro Dwarf: secÃ§Ã£o de informaÃ§Ã£o da linha maior (%#<PRIx64>) que o espaÃ§o restante na secÃ§Ã£o (%#lx)"
 
-#: dwarf2.c:2100
+#: dwarf2.c:2155
 #, c-format
 msgid "DWARF error: unhandled .debug_line version %d"
 msgstr "Erro Dwarf: versÃ£o %d .debug_line version nÃ£o gerida."
 
-#: dwarf2.c:2110
+#: dwarf2.c:2165
 msgid "DWARF error: ran out of room reading prologue"
 msgstr "Erro Dwarf: sem espaÃ§o ao ler o prÃ³logo"
 
-#: dwarf2.c:2128
+#: dwarf2.c:2183
 #, c-format
 msgid "DWARF error: line info unsupported segment selector size %u"
 msgstr "Erro Dwarf: tamanho %u do selector de segmento de informaÃ§Ã£o de linha nÃ£o suportado"
 
-#: dwarf2.c:2155
+#: dwarf2.c:2210
 msgid "DWARF error: invalid maximum operations per instruction"
 msgstr "Erro Dwarf: mÃ¡ximo de operaÃ§Ãµes por instruÃ§Ã£o invÃ¡lido."
 
-#: dwarf2.c:2174
+#: dwarf2.c:2229
 msgid "DWARF error: ran out of room reading opcodes"
 msgstr "Erro Dwarf: sem espaÃ§o ao ler opcodes"
 
-#: dwarf2.c:2347
+#: dwarf2.c:2420
 msgid "DWARF error: mangled line number section"
 msgstr "Erro Dwarf: secÃ§Ã£o de nÃºmero de linha modificada."
 
-#: dwarf2.c:2852 dwarf2.c:2913
+#: dwarf2.c:2905
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "Erro Dwarf: detectada recursividade em instÃ¢ncia abstracta."
+
+#: dwarf2.c:2939 dwarf2.c:3033
 msgid "DWARF error: invalid abstract instance DIE ref"
 msgstr "Erro Dwarf: instÃ¢ncia DIE ref abstracta invÃ¡lida."
 
-#: dwarf2.c:2889
+#: dwarf2.c:2955
 #, c-format
 msgid "DWARF error: unable to read alt ref %<PRIu64>"
 msgstr "Erro Dwarf:  impossÃ­vel ler referÃªncia alternativa %<PRIu64>."
 
-#: dwarf2.c:2930 dwarf2.c:3103 dwarf2.c:3457
+#: dwarf2.c:3011
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr "Erro Dwarf: impossÃ­vel localizar instÃ¢ncia DIE abstracta invÃ¡lida ref. %<PRIu64>"
+
+#: dwarf2.c:3050 dwarf2.c:3232 dwarf2.c:3618
 #, c-format
 msgid "DWARF error: could not find abbrev number %u"
 msgstr "Erro Dwarf: impossÃ­vel encontrar nÃºmero abbrev %u."
 
-#: dwarf2.c:2947
-msgid "DWARF error: abstract instance recursion detected"
-msgstr "Erro Dwarf: detectada recursividade em instÃ¢ncia abstracta."
+#: dwarf2.c:3381
+#, c-format
+msgid "DWARF error: could not find variable specification at offset %lx"
+msgstr "Erro Dwarf: impossÃ­vel encontrar especificaÃ§Ã£o de variÃ¡vel no desvio %lx"
 
-#: dwarf2.c:3376
+#: dwarf2.c:3537
 #, c-format
 msgid "DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 information"
 msgstr "Erro Dwarf: encontrada versÃ£o dwarf \"%u\", este leitor sÃ³ gere informaÃ§Ã£o das versÃµes 2, 3, 4 e 5."
 
-#: dwarf2.c:3420
+#: dwarf2.c:3581
 #, c-format
 msgid "DWARF error: found address size '%u', this reader can not handle sizes greater than '%u'"
 msgstr "Erro Dwarf: encontrado tamanho de endereÃ§o \"%u\", este leitor nÃ£o gere tamanhos maiores que \"%u\"."
 
-#: dwarf2.c:3523
+#: dwarf2.c:3685
 msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
 msgstr "Erro Dwarf: encontrado atributo DW_AT_comp_dir com uma forma nÃ£o-cadeia."
 
-#: ecoff.c:971
+#: ecoff.c:982
 #, c-format
 msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
 msgstr "%pB: aviso: isymMax (%ld) Ã© maior que ifdMax (%ld)"
 
-#: ecoff.c:1268
+#: ecoff.c:1279
 #, c-format
 msgid "unknown basic type %d"
 msgstr "Tipo bÃ¡sico %d desconhecido"
 
-#: ecoff.c:1525
+#: ecoff.c:1536
 #, c-format
 msgid ""
 "\n"
@@ -688,7 +700,7 @@ msgstr ""
 "\n"
 "      SÃ­mbolo End+1: %ld"
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1543 ecoff.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -697,7 +709,7 @@ msgstr ""
 "\n"
 "      Primeiro sÃ­mbolo: %ld"
 
-#: ecoff.c:1548
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
@@ -706,7 +718,7 @@ msgstr ""
 "\n"
 "      SÃ­mbolo End+1: %-7ld   Tipo:  %s"
 
-#: ecoff.c:1555
+#: ecoff.c:1566
 #, c-format
 msgid ""
 "\n"
@@ -715,7 +727,7 @@ msgstr ""
 "\n"
 "      SÃ­mbolo local: %ld"
 
-#: ecoff.c:1563
+#: ecoff.c:1574
 #, c-format
 msgid ""
 "\n"
@@ -724,7 +736,7 @@ msgstr ""
 "\n"
 "      struct; sÃ­mbolo End+1: %ld"
 
-#: ecoff.c:1568
+#: ecoff.c:1579
 #, c-format
 msgid ""
 "\n"
@@ -733,7 +745,7 @@ msgstr ""
 "\n"
 "      union; sÃ­mbolo End+1: %ld"
 
-#: ecoff.c:1573
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
@@ -742,7 +754,7 @@ msgstr ""
 "\n"
 "      enum; sÃ­mbolo End+1: %ld"
 
-#: ecoff.c:1579
+#: ecoff.c:1590
 #, c-format
 msgid ""
 "\n"
@@ -751,22 +763,22 @@ msgstr ""
 "\n"
 "      Tipo: %s"
 
-#: elf-attrs.c:446
+#: elf-attrs.c:449
 #, c-format
 msgid "%pB: error: attribute section '%pA' too big: %#llx"
 msgstr "%pB: erro: secÃ§Ã£o de atributo \"%pA\"muito grande: %#llx"
 
-#: elf-attrs.c:487
+#: elf-attrs.c:490
 #, c-format
 msgid "%pB: error: attribute section length too small: %<PRId64>"
 msgstr "%pB: erro: tamanho da secÃ§Ã£o de atributo muito pequeno: %<PRId64>"
 
-#: elf-attrs.c:615
+#: elf-attrs.c:618
 #, c-format
 msgid "error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchain"
 msgstr "erro: %pB: objecto tem conteÃºdo especifico do fabricante que tem de ser processado por \"%s\""
 
-#: elf-attrs.c:625
+#: elf-attrs.c:628
 #, c-format
 msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
 msgstr "erro: %pB: etiqueta do objecto \"%d, %s\" Ã© incompatÃ­vel com etiqueta \"%d, %s\""
@@ -790,91 +802,90 @@ msgstr "codificaÃ§Ã£o FDE em %pB(%pA) im
 msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"
 msgstr "emitidos mais avisos sobre a codificaÃ§Ã£o FDE impedir a geraÃ§Ã£o de .eh_frame_hdr"
 
-#: elf-eh-frame.c:1868
+#: elf-eh-frame.c:1866
 #, c-format
 msgid "%pB: %pA not in order"
 msgstr "%pB: %pA nÃ£o estÃ¡ em ordem"
 
-#: elf-eh-frame.c:1882
+#: elf-eh-frame.c:1880
 #, c-format
 msgid "%pB: %pA invalid input section size"
 msgstr "%pB: %pA tamanho invÃ¡lido de secÃ§Ã£o de entrada"
 
-#: elf-eh-frame.c:1890
+#: elf-eh-frame.c:1888
 #, c-format
 msgid "%pB: %pA points past end of text section"
 msgstr "%pB: %pA aponta para lÃ¡ do fim da secÃ§Ã£o de texto"
 
-#: elf-eh-frame.c:2139
+#: elf-eh-frame.c:2141
 msgid "DW_EH_PE_datarel unspecified for this architecture"
 msgstr "DW_EH_PE_datarel nÃ£o especificado para esta arquitectura."
 
-#: elf-eh-frame.c:2309
+#: elf-eh-frame.c:2312
 #, c-format
 msgid "invalid output section for .eh_frame_entry: %pA"
 msgstr "SecÃ§Ã£o de saÃ­da invÃ¡lida para .eh_frame_entry: %pA"
 
-#: elf-eh-frame.c:2332
+#: elf-eh-frame.c:2335
 #, c-format
 msgid "invalid contents in %pA section"
 msgstr "ConteÃºdo invÃ¡lido na secÃ§Ã£o %pA"
 
-#: elf-eh-frame.c:2488
+#: elf-eh-frame.c:2491
 msgid ".eh_frame_hdr entry overflow"
 msgstr "transporte na entrada .eh_frame_hdr."
 
-#: elf-eh-frame.c:2490
+#: elf-eh-frame.c:2493
 msgid ".eh_frame_hdr refers to overlapping FDEs"
 msgstr ".eh_frame_hdr refere FDEs sobrepostos."
 
-#: elf-ifunc.c:149
+#: elf-ifunc.c:144
 #, c-format
 msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%pB' can not be used when making an executable; recompile with -fPIE and relink with -pie\n"
 msgstr "%F%P: sÃ­mbolo \"%s\" STT_GNU_IFUNC dinÃ¢mico com igualdade de ponteiro em \"%pB\" nÃ£o pode ser usado ao fazer um executÃ¡vel; recompile com -fPIE e volte a ligar com -pie\n"
 
-#: elf-m10200.c:434 elf-m10300.c:2147 elf32-avr.c:1510 elf32-bfin.c:3127
-#: elf32-cr16.c:1464 elf32-cr16c.c:783 elf32-cris.c:2033 elf32-crx.c:925
-#: elf32-d10v.c:512 elf32-epiphany.c:566 elf32-fr30.c:594 elf32-frv.c:4049
-#: elf32-ft32.c:494 elf32-h8300.c:523 elf32-ip2k.c:1482 elf32-iq2000.c:693
-#: elf32-lm32.c:1112 elf32-m32c.c:624 elf32-m32r.c:3045 elf32-m68hc1x.c:1266
-#: elf32-mep.c:526 elf32-metag.c:1990 elf32-microblaze.c:1631
-#: elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6189 elf32-or1k.c:1759
-#: elf32-score.c:2733 elf32-score7.c:2542 elf32-spu.c:5083
-#: elf32-tilepro.c:3506 elf32-v850.c:2291 elf32-visium.c:681
-#: elf32-xstormy16.c:931 elf64-mmix.c:1541 elfxx-tilegx.c:3870
+#: elf-m10200.c:434 elf-m10300.c:2145 elf32-avr.c:1508 elf32-bfin.c:3126
+#: elf32-cr16.c:1464 elf32-cris.c:2033 elf32-crx.c:920 elf32-d10v.c:510
+#: elf32-epiphany.c:562 elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:494
+#: elf32-h8300.c:523 elf32-ip2k.c:1477 elf32-iq2000.c:691 elf32-lm32.c:1069
+#: elf32-m32c.c:624 elf32-m32r.c:2860 elf32-m68hc1x.c:1272 elf32-mep.c:526
+#: elf32-metag.c:1986 elf32-microblaze.c:1627 elf32-moxie.c:288 elf32-mt.c:402
+#: elf32-nds32.c:6048 elf32-or1k.c:1817 elf32-score.c:2734 elf32-score7.c:2543
+#: elf32-spu.c:5083 elf32-tilepro.c:3380 elf32-v850.c:2290 elf32-visium.c:680
+#: elf32-xstormy16.c:929 elf64-bpf.c:512 elf64-mmix.c:1541 elfxx-tilegx.c:3744
 msgid "internal error: out of range error"
 msgstr "erro interno: erro fora do intervalo"
 
-#: elf-m10200.c:438 elf-m10300.c:2151 elf32-avr.c:1514 elf32-bfin.c:3131
-#: elf32-cr16.c:1468 elf32-cr16c.c:787 elf32-cris.c:2037 elf32-crx.c:929
-#: elf32-d10v.c:516 elf32-fr30.c:598 elf32-frv.c:4053 elf32-ft32.c:498
-#: elf32-h8300.c:527 elf32-iq2000.c:697 elf32-lm32.c:1116 elf32-m32c.c:628
-#: elf32-m32r.c:3049 elf32-m68hc1x.c:1270 elf32-mep.c:530 elf32-metag.c:1994
-#: elf32-microblaze.c:1635 elf32-moxie.c:292 elf32-msp430.c:1362
-#: elf32-nds32.c:6193 elf32-or1k.c:1763 elf32-score.c:2737 elf32-score7.c:2546
-#: elf32-spu.c:5087 elf32-tilepro.c:3510 elf32-v850.c:2295 elf32-visium.c:685
-#: elf32-xstormy16.c:935 elf64-mmix.c:1545 elfxx-mips.c:10469
-#: elfxx-tilegx.c:3874
+#: elf-m10200.c:438 elf-m10300.c:2149 elf32-avr.c:1512 elf32-bfin.c:3130
+#: elf32-cr16.c:1468 elf32-cris.c:2037 elf32-crx.c:924 elf32-d10v.c:514
+#: elf32-fr30.c:598 elf32-frv.c:4052 elf32-ft32.c:498 elf32-h8300.c:527
+#: elf32-iq2000.c:695 elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2864
+#: elf32-m68hc1x.c:1276 elf32-mep.c:530 elf32-metag.c:1990
+#: elf32-microblaze.c:1631 elf32-moxie.c:292 elf32-msp430.c:1371
+#: elf32-nds32.c:6052 elf32-or1k.c:1821 elf32-score.c:2738 elf32-score7.c:2547
+#: elf32-spu.c:5087 elf32-tilepro.c:3384 elf32-v850.c:2294 elf32-visium.c:684
+#: elf32-xstormy16.c:933 elf64-mmix.c:1545 elfxx-mips.c:10576
+#: elfxx-tilegx.c:3748
 msgid "internal error: unsupported relocation error"
 msgstr "erro interno: erro relocalizaÃ§Ã£o nÃ£o suportada"
 
-#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-cr16c.c:791 elf32-crx.c:933
-#: elf32-d10v.c:520 elf32-h8300.c:531 elf32-lm32.c:1120 elf32-m32r.c:3053
-#: elf32-m68hc1x.c:1274 elf32-microblaze.c:1639 elf32-nds32.c:6197
-#: elf32-score.c:2741 elf32-score7.c:2550 elf32-spu.c:5091
+#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-crx.c:928 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2868 elf32-m68hc1x.c:1280
+#: elf32-microblaze.c:1635 elf32-nds32.c:6056 elf32-score.c:2742
+#: elf32-score7.c:2551 elf32-spu.c:5091
 msgid "internal error: dangerous error"
 msgstr "erro interno: erro perigoso"
 
-#: elf-m10200.c:446 elf-m10300.c:2168 elf32-avr.c:1522 elf32-bfin.c:3139
-#: elf32-cr16.c:1476 elf32-cr16c.c:795 elf32-cris.c:2045 elf32-crx.c:937
-#: elf32-d10v.c:524 elf32-epiphany.c:581 elf32-fr30.c:606 elf32-frv.c:4061
-#: elf32-ft32.c:506 elf32-h8300.c:535 elf32-ip2k.c:1497 elf32-iq2000.c:705
-#: elf32-lm32.c:1124 elf32-m32c.c:636 elf32-m32r.c:3057 elf32-m68hc1x.c:1278
-#: elf32-mep.c:538 elf32-metag.c:2002 elf32-microblaze.c:1643
-#: elf32-moxie.c:300 elf32-msp430.c:1370 elf32-mt.c:410 elf32-nds32.c:6201
-#: elf32-or1k.c:1771 elf32-score.c:2750 elf32-score7.c:2554 elf32-spu.c:5095
-#: elf32-tilepro.c:3518 elf32-v850.c:2315 elf32-visium.c:693
-#: elf32-xstormy16.c:943 elf64-mmix.c:1553 elfxx-tilegx.c:3882
+#: elf-m10200.c:446 elf-m10300.c:2166 elf32-avr.c:1520 elf32-bfin.c:3138
+#: elf32-cr16.c:1476 elf32-cris.c:2045 elf32-crx.c:932 elf32-d10v.c:522
+#: elf32-epiphany.c:577 elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:506
+#: elf32-h8300.c:535 elf32-ip2k.c:1492 elf32-iq2000.c:703 elf32-lm32.c:1081
+#: elf32-m32c.c:636 elf32-m32r.c:2872 elf32-m68hc1x.c:1284 elf32-mep.c:538
+#: elf32-metag.c:1998 elf32-microblaze.c:1639 elf32-moxie.c:300
+#: elf32-msp430.c:1379 elf32-mt.c:410 elf32-nds32.c:6060 elf32-or1k.c:1829
+#: elf32-score.c:2751 elf32-score7.c:2555 elf32-spu.c:5095
+#: elf32-tilepro.c:3392 elf32-v850.c:2314 elf32-visium.c:692
+#: elf32-xstormy16.c:941 elf64-bpf.c:525 elf64-mmix.c:1553 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr "erro interno: erro desconhecido"
 
@@ -883,38 +894,35 @@ msgstr "erro interno: erro desconhecido"
 msgid "%pB: unsupported transition from %s to %s"
 msgstr "%pB: transiÃ§Ã£o %s para %s nÃ£o suportada"
 
-#: elf-m10300.c:1198
+#: elf-m10300.c:1196
 #, c-format
 msgid "%pB: %s' accessed both as normal and thread local symbol"
 msgstr "%pB: %s acedido como sÃ­mbolo local normal e de fio, em simultÃ¢neo"
 
-#: elf-m10300.c:2094 elf32-arm.c:13246 elf32-i386.c:3409 elf32-m32r.c:2539
-#: elf32-m68k.c:3899 elf32-s390.c:3211 elf32-sh.c:3800 elf32-tilepro.c:3409
-#: elf32-xtensa.c:2965 elf64-s390.c:3161 elf64-x86-64.c:3846
-#: elfxx-sparc.c:3906 elfxx-tilegx.c:3793
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5261
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6807
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2279
+#: elf-m10300.c:2092 elf32-arm.c:13400 elf32-i386.c:3403 elf32-m32r.c:2354
+#: elf32-m68k.c:3931 elf32-s390.c:3082 elf32-sh.c:3677 elf32-tilepro.c:3283
+#: elf32-xtensa.c:3023 elf64-s390.c:3031 elf64-x86-64.c:4062
+#: elfxx-sparc.c:3795 elfxx-tilegx.c:3667 elfnn-aarch64.c:5505
+#: elfnn-aarch64.c:7102
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr "%pB(%pA+%#<PRIx64>): relocalizaÃ§Ã£o %s insolÃºvel contra o sÃ­mbolo \"%s\""
 
-#: elf-m10300.c:2156
+#: elf-m10300.c:2154
 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
 msgstr "erro: tipo de relocalizaÃ§Ã£o inapropriado para biblioteca partilhada (esqueceu-se de -fpic?)"
 
-#: elf-m10300.c:2160
+#: elf-m10300.c:2158
 #, c-format
 msgid "%pB: taking the address of protected function '%s' cannot be done when making a shared library"
 msgstr "%pB: tirar o endereÃ§o da funÃ§Ã£o protegida \"%s\" nÃ£o pode ser feito ao fazer uma biblioteca partilhada"
 
-#: elf-m10300.c:2163
+#: elf-m10300.c:2161
 msgid "internal error: suspicious relocation type used in shared library"
 msgstr "erro interno: tipo de relocalizaÃ§Ã£o suspeito usado em biblioteca partilhada"
 
-#: elf-m10300.c:2649 elf32-avr.c:2492 elf32-frv.c:5641 elf64-ia64-vms.c:364
-#: elfxx-sparc.c:2795 reloc.c:8185 reloc16.c:155 elf32-ia64.c:361
-#: elf64-ia64.c:361
+#: elf-m10300.c:2647 elf32-avr.c:2489 elf32-frv.c:5620 elf64-ia64-vms.c:364
+#: elfxx-sparc.c:2683 reloc.c:8244 reloc16.c:155 elfnn-ia64.c:364
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr "%P%F: --relax e -r nÃ£o podem ser usadas em conjunto\n"
 
@@ -956,7 +964,7 @@ msgstr "Removida propriedade %W para uni
 msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
 msgstr "Removida propriedade %W para unir %pB (0x%v) e %pB (nÃ£o encontrado)\n"
 
-#: elf-properties.c:316 elf-properties.c:396
+#: elf-properties.c:316 elf-properties.c:394
 msgid "Removed property %W to merge %pB and %pB\n"
 msgstr "Removida propriedade %W para unir %pB e %pB\n"
 
@@ -964,115 +972,110 @@ msgstr "Removida propriedade %W para uni
 msgid "Removed property %W to merge %pB and %pB (not found)\n"
 msgstr "Removida propriedade %W para unir %pB e %pB (nÃ£o encontrado)\n"
 
-#: elf-properties.c:339
+#: elf-properties.c:337
 msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
 msgstr "Actualizada propriedade %W (0x%v) para unir %pB (0x%v) e %pB (0x%v)\n"
 
-#: elf-properties.c:348
+#: elf-properties.c:346
 msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
 msgstr "Actualizada propriedade %W (%v) para unir %pB (0x%v) e %pB (nÃ£o encontrada)\n"
 
-#: elf-properties.c:390
+#: elf-properties.c:388
 msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
 msgstr "Removida propriedade %W para unir %pB (nÃ£o encontrado) e %pB (0x%v)\n"
 
 #. Merge .note.gnu.property sections.
-#: elf-properties.c:552 elf-properties.c:554
+#: elf-properties.c:550 elf-properties.c:552
 msgid "\n"
 msgstr "\n"
 
-#: elf-properties.c:553
+#: elf-properties.c:551
 msgid "Merging program properties\n"
 msgstr "A unir propriedades do programa\n"
 
 #. PR 17512: file: f057ec89.
-#: elf.c:345
+#: elf.c:336
 #, c-format
 msgid "%pB: attempt to load strings from a non-string section (number %d)"
 msgstr "%pB: tentativa de carregar cadeias de secÃ§Ã£o nÃ£o-cadeia (nÃºmero %d)"
 
-#: elf.c:360
+#: elf.c:361
 #, c-format
 msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
 msgstr "%pB: desvio de cadeia invÃ¡lido %u >= %<PRIu64> para secÃ§Ã£o \"%s\""
 
-#: elf.c:499 /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7891
+#: elf.c:513 elfnn-aarch64.c:8096
 #, c-format
 msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
 msgstr "%pB nÃºmero de sÃ­mbolo %lu referencia secÃ§Ã£o SHT_SYMTAB_SHNDX nÃ£o existente"
 
-#: elf.c:664
-#, c-format
-msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
-msgstr "%pB: campo de tamanho corrupto no cabeÃ§alho da secÃ§Ã£o de grupo: %#<PRIx64>"
-
-#: elf.c:680
+#: elf.c:675
 #, c-format
 msgid "%pB: invalid size field in group section header: %#<PRIx64>"
 msgstr "%pB: campo de tamanho invÃ¡lido no cabeÃ§alho da secÃ§Ã£o de grupo: %#<PRIx64>"
 
-#: elf.c:728
+#: elf.c:720
 #, c-format
 msgid "%pB: invalid entry in SHT_GROUP section [%u]"
 msgstr "%pB: entrada na secÃ§Ã£o [%u] SHT_GROUP invÃ¡lida"
 
-#: elf.c:747
+#: elf.c:739
 #, c-format
 msgid "%pB: no valid group sections found"
 msgstr "%pB: sem secÃ§Ãµes de grupo vÃ¡lidas"
 
 #. See PR 21957 for a reproducer.
-#: elf.c:776
+#: elf.c:768
 #, c-format
 msgid "%pB: group section '%pA' has no contents"
 msgstr "%pB: secÃ§Ã£o de grupo \"%pA\" nÃ£o tem conteÃºdo"
 
-#: elf.c:837
+#: elf.c:829
 #, c-format
 msgid "%pB: no group info for section '%pA'"
 msgstr "%pB: sem informaÃ§Ã£o de grupo para secÃ§Ã£o \"%pA\""
 
-#: elf.c:868 elf.c:3886 elflink.c:11403
+#: elf.c:859 elf.c:3955
 #, c-format
 msgid "%pB: warning: sh_link not set for section `%pA'"
 msgstr "%pB: aviso: sh_link nÃ£o definido para a secÃ§Ã£o \"%pA\""
 
-#: elf.c:888
+#: elf.c:879
 #, c-format
 msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
 msgstr "%pB: sh_link [%d] na secÃ§Ã£o \"%pA\" estÃ¡ incorrecto"
 
-#: elf.c:901
+#: elf.c:892
 #, c-format
 msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
 msgstr "%pB: secÃ§Ã£o SHT_GROUP [Ã­ndice %d] nÃ£o tem secÃ§Ãµes SHF_GROUP"
 
-#: elf.c:922
+#: elf.c:913
 #, c-format
 msgid "%pB: section group entry number %u is corrupt"
 msgstr "%pB: entrada do grupo de secÃ§Ã£o nÃºmero %u estÃ¡ corrompida"
 
-#: elf.c:945
+#: elf.c:936
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
 msgstr "%pB: secÃ§Ã£o tipo [%#x] \"%s\" desconhecida no grupo [%pA]"
 
-#: elf.c:1408
+#: elf.c:1438
 #, c-format
 msgid "%pB: invalid sh_link field (%d) in section number %d"
 msgstr "%pB: sh_link field (%d) invÃ¡lido no nÃºmero da secÃ§Ã£o %d"
 
-#: elf.c:1424
+#: elf.c:1454
 #, c-format
 msgid "%pB: failed to find link section for section %d"
 msgstr "%pB: falha ao procurar secÃ§Ã£o de ligaÃ§Ã£o para a secÃ§Ã£o %d"
 
-#: elf.c:1451
+#: elf.c:1481
 #, c-format
 msgid "%pB: failed to find info section for section %d"
 msgstr "%pB: falha ao procurar secÃ§Ã£o de informaÃ§Ã£o para a secÃ§Ã£o %d"
 
-#: elf.c:1623
+#: elf.c:1653
 #, c-format
 msgid ""
 "\n"
@@ -1081,7 +1084,7 @@ msgstr ""
 "\n"
 "CabeÃ§alho do programa:\n"
 
-#: elf.c:1665
+#: elf.c:1695
 #, c-format
 msgid ""
 "\n"
@@ -1090,7 +1093,7 @@ msgstr ""
 "\n"
 "SecÃ§Ã£o dinÃ¢mica:\n"
 
-#: elf.c:1806
+#: elf.c:1836
 #, c-format
 msgid ""
 "\n"
@@ -1099,7 +1102,7 @@ msgstr ""
 "\n"
 "DefiniÃ§Ãµes da versÃ£o:\n"
 
-#: elf.c:1831
+#: elf.c:1861
 #, c-format
 msgid ""
 "\n"
@@ -1108,579 +1111,680 @@ msgstr ""
 "\n"
 "ReferÃªncias da versÃ£o:\n"
 
-#: elf.c:1836
+#: elf.c:1866
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  requerido de %s:\n"
 
-#: elf.c:2037
+#: elf.c:2082
 #, c-format
 msgid "%pB: warning: loop in section dependencies detected"
 msgstr "%pB: aviso: detectado ciclo em dependÃªncias da secÃ§Ã£o"
 
-#: elf.c:2145
+#: elf.c:2190
 #, c-format
 msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: aviso: detectadas mÃºltiplas tabelas de sÃ­mbolo - a ignorar a tabela na secÃ§Ã£o %u"
 
-#: elf.c:2229
+#: elf.c:2274
 #, c-format
 msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: aviso: detectadas mÃºltiplas tabelas de sÃ­mbolo dinÃ¢mico - a ignorar a tabela na secÃ§Ã£o %u"
 
-#: elf.c:2342
+#: elf.c:2387
 #, c-format
 msgid "%pB: invalid link %u for reloc section %s (index %u)"
 msgstr "%pB: ligaÃ§Ã£o invÃ¡lida %u para secÃ§Ã£o reloc %s (Ã­ndice %u)"
 
-#: elf.c:2504 elf.c:2519 elf.c:2530 elf.c:2543
+#: elf.c:2478
+#, c-format
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr "%pB: aviso: encontrada secÃ§Ã£o de relocalizaÃ§Ã£o \"%s\" para a secÃ§Ã£o %pA - a ignorar"
+
+#: elf.c:2562 elf.c:2577 elf.c:2588 elf.c:2601
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr "%pB: tipo desconhecido [%#x], secÃ§Ã£o \"%s\""
 
-#: elf.c:3248
+#: elf.c:3308
 #, c-format
 msgid "%pB: error: alignment power %d of section `%pA' is too big"
 msgstr "%pB: erro: poder de alinhamento %d da secÃ§Ã£o \"%pA\" Ã© muito grande"
 
-#: elf.c:3278
+#: elf.c:3341
 #, c-format
 msgid "warning: section `%pA' type changed to PROGBITS"
 msgstr "aviso: tipo da secÃ§Ã£o \"%pA\" alterou-se para PROGBITS"
 
-#: elf.c:3754
+#: elf.c:3824
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr "%pB: demasiadas secÃ§Ãµes: %u"
 
-#: elf.c:3839
+#: elf.c:3909
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
 msgstr "%pB: sh_link da secÃ§Ã£o \"%pA\" aponta para secÃ§Ã£o descartada \"%pA\" de \"%pB\""
 
-#: elf.c:3864
+#: elf.c:3934
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
 msgstr "%pB: sh_link da secÃ§Ã£o \"%pA\" aponta para secÃ§Ã£o removida \"%pA\" de \"%pB\""
 
-#: elf.c:4430
+#: elf.c:4495
 #, c-format
-msgid "%pB: GNU_MBIN section `%pA' has invalid sh_info field: %d"
-msgstr "%pB: secÃ§Ã£o \"%pA\" de GNU_MBIN tem campo sh_info invÃ¡lido: %d"
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
+msgstr "%pB: secÃ§Ã£o \"%pA\" de GNU_MBIND tem um campo sh_info field invÃ¡lido: %d"
 
-#: elf.c:5013
+#: elf.c:5086
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr "%pB: secÃ§Ãµes TLS nÃ£o adjacentes:"
 
-#: elf.c:5020
+#: elf.c:5093
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr "\t    TLS: %pA"
 
-#: elf.c:5024
+#: elf.c:5097
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr "\tnÃ£o-TLS: %pA"
 
-#: elf.c:5538
+#: elf.c:5687
 #, c-format
 msgid "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
 msgstr "%pB: a primeira secÃ§Ã£o no segmento PT_DYNAMIC nÃ£o Ã© a secÃ§Ã£o .dynamic"
 
-#: elf.c:5566
+#: elf.c:5713
 #, c-format
 msgid "%pB: not enough room for program headers, try linking with -N"
 msgstr "%pB: sem espaÃ§o para cabeÃ§alhos do programa, tente ligar com -N"
 
-#: elf.c:5654
+#: elf.c:5830
 #, c-format
 msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
 msgstr "%pB: secÃ§Ã£o %pA lma %#<PRIx64> ajustada para %#<PRIx64>"
 
-#: elf.c:5791
+#. The fix for this error is usually to edit the linker script being
+#. used and set up the program headers manually.  Either that or
+#. leave room for the headers at the start of the SECTIONS.
+#: elf.c:5967
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: erro: segmento PHDR nÃ£o coberto pelo segmento LOAD"
+
+#: elf.c:6007
 #, c-format
 msgid "%pB: section `%pA' can't be allocated in segment %d"
 msgstr "%pB: secÃ§Ã£o \"%pA\" nÃ£o pode ser alocada no segmento %d"
 
-#: elf.c:5839
+#: elf.c:6139
 #, c-format
 msgid "%pB: warning: allocated section `%s' not in segment"
 msgstr "%pB: aviso: secÃ§Ã£o alocada \"%s\" nÃ£o estÃ¡ no segmento"
 
-#: elf.c:6072
+#: elf.c:6300
 #, c-format
 msgid "%pB: error: non-load segment %d includes file header and/or program header"
 msgstr "%pB: erro: segmento %d nÃ£o carga inclui cabeÃ§alho de ficheiro e/ou de programa"
 
-#. The fix for this error is usually to edit the linker script being
-#. used and set up the program headers manually.  Either that or
-#. leave room for the headers at the start of the SECTIONS.
-#: elf.c:6249
-#, c-format
-msgid "%pB: error: PHDR segment not covered by LOAD segment"
-msgstr "%pB: erro: segmento PHDR nÃ£o coberto pelo segmento LOAD"
-
-#: elf.c:6606
+#: elf.c:6804
 #, c-format
 msgid "%pB: symbol `%s' required but not present"
 msgstr "%pB: sÃ­mbolo \"%s\" requerido mas nÃ£o presente"
 
-#: elf.c:6949
+#: elf.c:7147
 #, c-format
 msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
 msgstr "%pB: aviso: detectado segmento carregÃ¡vel vazio em vaddr=%#<PRIx64>, Ã© intencional?"
 
-#: elf.c:7574
+#: elf.c:7773
 #, c-format
 msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
 msgstr "%pB: aviso: alinhamento do segmento de %#<PRIx64> Ã© muito grande"
 
-#: elf.c:8073
+#: elf.c:8286
+#, c-format
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr "%pB: impossÃ­vel gerir Ã­ndice de secÃ§Ã£o %x em sÃ­mbolo ELF. A usar ABS."
+
+#: elf.c:8316
 #, c-format
 msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr "ImpossÃ­vel encontrar secÃ§Ã£o de saÃ­da equivalente para sÃ­mbolo \"%s\" da secÃ§Ã£o \"%s\""
 
-#: elf.c:8421
+#: elf.c:8703
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr "%pB: entrada .gnu.version_r invÃ¡lida"
 
-#: elf.c:8548
+#: elf.c:8836
 #, c-format
 msgid "%pB: .gnu.version_d invalid entry"
 msgstr "%pB: entrada .gnu.version_d invÃ¡lida"
 
-#: elf32-arc.c:440 elf32-frv.c:6630 elf32-iq2000.c:870 elf32-m32c.c:914
-#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3199 elf32-visium.c:841
-#: elf64-ppc.c:4950
+#: elf.c:9293
+#, c-format
+msgid "%pB:%pA: error: attempting to write into an unallocated compressed section"
+msgstr "%pB:%pA: erro: tentativa de escrita numa secÃ§Ã£o comprimida nÃ£o alocada"
+
+#: elf.c:9302
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr "%pB: %pA: erro: tentativa de escrita para lÃ¡ do fim da secÃ§Ã£o"
+
+#: elf.c:9313
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr "%pB:%pA: erro: tentativa de escrever a secÃ§Ã£o num buffer vazio"
+
+#: elf.c:12430
+msgid "GNU_MBIND section is unsupported"
+msgstr "secÃ§Ã£o GNU_MBIND nÃ£o Ã© suportada"
+
+#: elf.c:12432
+msgid "symbol type STT_GNU_IFUNC is unsupported"
+msgstr "tipo de sÃ­mbolo STT_GNU_IFUNC nÃ£o Ã© suportado"
+
+#: elf.c:12434
+msgid "symbol binding STB_GNU_UNIQUE is unsupported"
+msgstr "vÃ­nculo de sÃ­mbolo STB_GNU_UNIQUE nÃ£o Ã© suportado"
+
+#: elf.c:12618 elf64-sparc.c:123 elfcode.h:1482
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr "%pB(%pA): relocalizaÃ§Ã£o %d tem Ã­ndice de sÃ­mbolos invÃ¡lido %ld"
+
+#: elf.c:12692
+#, c-format
+msgid "%pB(%pA): link section cannot be set because the output file does not have a symbol table"
+msgstr "%pB(%pA): a secÃ§Ã£o ligaÃ§Ã£o nÃ£o pode ser definida porque o ficheiro de saÃ­da nÃ£o tem uma tabela de sÃ­mbolos"
+
+#: elf.c:12704
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): Ã­ndice da secÃ§Ã£o de informaÃ§Ã£o invÃ¡lido"
+
+#: elf.c:12718
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr "%pB(%pA): Ã­ndice da secÃ§Ã£o de informaÃ§Ã£o nÃ£o pode ser definido porque a secÃ§Ã£o nÃ£o estÃ¡ na saÃ­da"
+
+#: elf.c:12784
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): erro: secÃ§Ã£o de relocalizaÃ§Ã£o secundÃ¡ria processada duas vezes"
+
+#: elf.c:12796
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr "%pB(%pA): erro: secÃ§Ã£o de relocalizaÃ§Ã£o secundÃ¡ria vazia"
+
+#: elf.c:12819
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr "%pB(%pA): erro: relocs internos em falta para a secÃ§Ã£o de relocalizaÃ§Ã£o secundÃ¡ria "
+
+#: elf.c:12838
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %u is empty"
+msgstr "%pB:%pA: erro: a entrada %u da tabela de relocalizaÃ§Ã£o estÃ¡ vazia"
+
+#: elf.c:12863
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a missing symbol"
+msgstr "%pB(%pA): erro: a relocalizaÃ§Ã£o secundÃ¡ria %u referencia um sÃ­mbolo em falta"
+
+#: elf.c:12880
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a deleted symbol"
+msgstr "%pB(%pA): erro: a relocalizaÃ§Ã£o secundÃ¡ria %u referencia um sÃ­mbolo eliminado"
+
+#: elf.c:12893
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u is of an unknown type"
+msgstr "%pB(%pA): erro: a relocalizaÃ§Ã£o secundÃ¡ria %u tem um tipo desconhecido"
+
+#: elf32-arc.c:455 elf32-frv.c:6611 elf32-iq2000.c:868 elf32-m32c.c:914
+#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3205 elf32-visium.c:844
+#: elf64-ppc.c:5291
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "bandeiras privadas = 0x%lx:"
 
-#: elf32-arc.c:627
+#: elf32-arc.c:642
 #, c-format
 msgid "warning: %pB: conflicting platform configuration %s with %s"
 msgstr "Aviso: %pB: conflito na configuraÃ§Ã£o de plataforma %s com %s."
 
-#: elf32-arc.c:646
+#: elf32-arc.c:661
 #, c-format
 msgid "error: %pB: unable to merge CPU base attributes %s with %s"
 msgstr "erro: %pB: impossÃ­vel unir atributos base CPU %s com %s."
 
-#: elf32-arc.c:683
+#: elf32-arc.c:698
 #, c-format
 msgid "error: %pB: unable to merge ISA extension attributes %s"
 msgstr "erro: %pB: impossÃ­vel unir atributos de extensÃ£o ISA %s."
 
-#: elf32-arc.c:707
+#: elf32-arc.c:722
 #, c-format
 msgid "error: %pB: conflicting ISA extension attributes %s with %s"
 msgstr "erro: %pB: conflito de atributos de extensÃ£o ISA %s com %s."
 
-#: elf32-arc.c:747
+#: elf32-arc.c:762
 #, c-format
 msgid "error: %pB: cannot mix rf16 with full register set %pB"
 msgstr "erro: %pB: impossÃ­vel misturar rf16 com conjunto de registo completo %pB."
 
-#: elf32-arc.c:775
+#: elf32-arc.c:790
 #, c-format
 msgid "error: %pB: conflicting attributes %s: %s with %s"
 msgstr "erro: %pB: conflito de atributos %s: %s com %s."
 
-#: elf32-arc.c:802
+#: elf32-arc.c:817
 #, c-format
 msgid "error: %pB: conflicting attributes %s"
 msgstr "erro: %pB: conflito de atributos %s."
 
-#: elf32-arc.c:907
+#: elf32-arc.c:922
 #, c-format
 msgid "error: attempting to link %pB with a binary %pB of different architecture"
 msgstr "ERRO: tentativa de ligar %pB com um binÃ¡rio %pB de diferente arquitectura"
 
-#: elf32-arc.c:923 elf32-iq2000.c:846 elf32-m32c.c:889 elf32-m68hc1x.c:1385
-#: elf32-ppc.c:3865 elf64-sparc.c:711 elfxx-mips.c:15354
+#: elf32-arc.c:938 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1391
+#: elf32-ppc.c:3867 elf64-sparc.c:722 elfxx-mips.c:15513
 #, c-format
 msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
 msgstr "%pB: usa campos e_flags diferentes (%#x) dos mÃ³dulos anteriores (%#x)"
 
-#: elf32-arc.c:1012
+#: elf32-arc.c:1027
 msgid "error: the ARC4 architecture is no longer supported"
 msgstr "Erro: a arquitectura ARC4 jÃ¡ nÃ£o Ã© suportada."
 
-#: elf32-arc.c:1018
+#: elf32-arc.c:1033
 msgid "warning: unset or old architecture flags; use default machine"
 msgstr "Aviso: bandeiras nÃ£o definidas ou de arquitectura antiga. Use a mÃ¡quina predefinida."
 
-#: elf32-arc.c:1151
+#: elf32-arc.c:1159
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): relocalizaÃ§Ã£o CMEM para \"%s\" Ã© invÃ¡lida, 16 MSB deveria ser %#x (o valor Ã© %#<PRIx64>)"
 
-#: elf32-arc.c:1162
+#: elf32-arc.c:1170
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s+%#<PRIx64>' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): relocalizaÃ§Ã£o CMEM para \"%s+%#<PRIx64>\" Ã© invÃ¡lida, 16 MSB deveria ser %#x (o valor Ã© %#<PRIx64>)"
 
-#: elf32-arc.c:1876
+#: elf32-arc.c:1885
 msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
 msgstr "RelocalizaÃ§Ãµes GOT e PLT nÃ£o podem ser reparadas com um linker nÃ£o dinÃ¢mico."
 
-#: elf32-arc.c:1900 elf32-rl78.c:1098 elf32-rx.c:1470
+#: elf32-arc.c:1909 elf32-rl78.c:1098 elf32-rx.c:1475
 #, c-format
 msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
 msgstr "%pB(%pA): aviso: acesso nÃ£o alinhado ao sÃ­mbolo \"%s\" na Ã¡rea de dados pequenos"
 
-#: elf32-arc.c:1905 elf32-rl78.c:1103 elf32-rx.c:1475
+#: elf32-arc.c:1914 elf32-rl78.c:1103 elf32-rx.c:1480
 #, c-format
 msgid "%pB(%pA): internal error: out of range error"
 msgstr "%pB(%pA): erro interno: erro fora do intervalo"
 
-#: elf32-arc.c:1910 elf32-rl78.c:1108 elf32-rx.c:1480
+#: elf32-arc.c:1919 elf32-rl78.c:1108 elf32-rx.c:1485
 #, c-format
 msgid "%pB(%pA): internal error: unsupported relocation error"
 msgstr "%pB(%pA): erro interno: erro relocalizaÃ§Ã£o nÃ£o suportada"
 
-#: elf32-arc.c:1915 elf32-rl78.c:1113 elf32-rx.c:1485
+#: elf32-arc.c:1924 elf32-rl78.c:1113 elf32-rx.c:1490
 #, c-format
 msgid "%pB(%pA): internal error: dangerous relocation"
 msgstr "%pB(%pA): erro interno: relocalizaÃ§Ã£o perigosa"
 
-#: elf32-arc.c:1920 elf32-rl78.c:1118 elf32-rx.c:1490
+#: elf32-arc.c:1929 elf32-rl78.c:1118 elf32-rx.c:1495
 #, c-format
 msgid "%pB(%pA): internal error: unknown error"
 msgstr "%pB(%pA): erro interno: erro desconhecido"
 
-#: elf32-arc.c:2013 elf32-arc.c:2081 elf32-arm.c:15323 elf32-metag.c:2257
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7462
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:497
+#: elf32-arc.c:2022 elf32-arc.c:2090 elf32-arm.c:15513 elf32-metag.c:2253
+#: elf32-nds32.c:5498 elfnn-aarch64.c:7739 elfnn-riscv.c:483
 #, c-format
 msgid "%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: relocalizaÃ§Ã£o %s contra \"%s\" nÃ£o pode ser usada a fazer um objecto partilhado; recompile com -fPIC"
 
-#: elf32-arc.c:2949
+#: elf32-arc.c:2909
 #, c-format
 msgid "%pB: unknown mandatory ARC object attribute %d"
 msgstr "%pB: atributo de objecto ARC %d obrigatÃ³rio desconhecido."
 
-#: elf32-arc.c:2957
+#: elf32-arc.c:2917
 #, c-format
 msgid "warning: %pB: unknown ARC object attribute %d"
 msgstr "Aviso: %pB: atributo de objecto ARC %d desconhecido."
 
-#: elf32-arm.c:4304 elf32-arm.c:4338 elf32-arm.c:4357 elf32-arm.c:4409
+#: elf32-arm.c:4307 elf32-arm.c:4341 elf32-arm.c:4360 elf32-arm.c:4412
 #, c-format
 msgid "%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction"
 msgstr "%pB(%pA): aviso: o uso de folhas de ramos longos na secÃ§Ã£o com atributo de secÃ§Ã£o SHF_ARM_PURECODE sÃ³ Ã© suportado para alvos M-profile que implementem a instruÃ§Ã£o movw."
 
-#: elf32-arm.c:4369 elf32-arm.c:4423 elf32-arm.c:9093 elf32-arm.c:9183
+#: elf32-arm.c:4372 elf32-arm.c:4426 elf32-arm.c:9116 elf32-arm.c:9206
 #, c-format
 msgid "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s"
 msgstr "%pB(%s): aviso: interworking nÃ£o activo; primeira ocorrÃªncia: %pB: chamada %s a %s"
 
-#: elf32-arm.c:4697
+#: elf32-arm.c:4552
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr "ERRO: fictÃ­cio CMSE (secÃ§Ã£o %s) muito longe (%#<PRIx64>) do destino (%#<PRIx64>)"
+
+#: elf32-arm.c:4721
 #, c-format
 msgid "no address assigned to the veneers output section %s"
 msgstr "Sem endereÃ§o atribuÃ­do Ã  secÃ§Ã£o de saÃ­da das folhas %s"
 
-#: elf32-arm.c:4772 elf32-arm.c:6909 elf32-csky.c:3287 elf32-hppa.c:579
-#: elf32-m68hc1x.c:165 elf32-metag.c:1186 elf32-nios2.c:2208 elf64-ppc.c:3501
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3098
+#: elf32-arm.c:4796 elf32-arm.c:6943 elf32-csky.c:3172 elf32-hppa.c:584
+#: elf32-m68hc1x.c:165 elf32-metag.c:1182 elf32-nios2.c:2204 elf64-ppc.c:3775
+#: elfnn-aarch64.c:3190
 #, c-format
 msgid "%pB: cannot create stub entry %s"
 msgstr "%pB: impossÃ­vel criar entrada fictÃ­cia %s"
 
-#: elf32-arm.c:5957
+#: elf32-arm.c:5017 elf32-csky.c:3514 elf32-hppa.c:734 elf32-m68hc11.c:422
+#: elf32-m68hc12.c:542 elf32-metag.c:3347 elf32-nios2.c:2497 elf64-ppc.c:11315
+#: elfnn-aarch64.c:3259
+msgid "%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: impossÃ­vel atribuir \"%pA\" a uma secÃ§Ã£o de saÃ­da. Repita sem --enable-non-contiguous-regions.\n"
+
+#: elf32-arm.c:5987
 #, c-format
 msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
 msgstr "%pB: sÃ­mbolo especial \"%s\" sÃ³ Ã© permitido para arquitecturas ARMv8-M ou posteriores."
 
-#: elf32-arm.c:5966
+#: elf32-arm.c:5996
 #, c-format
 msgid "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
 msgstr "%pB: sÃ³mbolo especial invÃ¡lido \"%s\"; tem de ser um sÃ­mbolo de funÃ§Ã£o global ou fraco."
 
-#: elf32-arm.c:6005
+#: elf32-arm.c:6035
 #, c-format
 msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function symbol"
 msgstr "%pB: sÃ­mbolo padrÃ£o %s invÃ¡lido; tem de ser um sÃ­mbolo de funÃ§Ã£o global ou fraco."
 
-#: elf32-arm.c:6011
+#: elf32-arm.c:6041
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr "%pB: sÃ­mbolo standard \"%s\" ausente."
 
-#: elf32-arm.c:6023
+#: elf32-arm.c:6053
 #, c-format
 msgid "%pB: `%s' and its special symbol are in different sections"
 msgstr "%pB: \"%s\" e o seu sÃ­mbolo especial estÃ£o em secÃ§Ãµes diferentes."
 
-#: elf32-arm.c:6035
+#: elf32-arm.c:6065
 #, c-format
 msgid "%pB: entry function `%s' not output"
 msgstr "%pB: funÃ§Ã£o de entrada \"%s\" nÃ£o saÃ­da."
 
-#: elf32-arm.c:6042
+#: elf32-arm.c:6072
 #, c-format
 msgid "%pB: entry function `%s' is empty"
 msgstr "%pB: funÃ§Ã£o de entrada \"%s\" estÃ¡ vazia."
 
-#: elf32-arm.c:6171
+#: elf32-arm.c:6201
 #, c-format
 msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
 msgstr "%pB: --in-implib sÃ³ Ã© suportado para bibliotecas importadas Secure Gateway."
 
-#: elf32-arm.c:6217
+#: elf32-arm.c:6250
 #, c-format
 msgid "%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions"
 msgstr "%pB: entrada de biblioteca importada %s invÃ¡lida; o sÃ­mbolo deve ser absoluto, global e referir-se a funÃ§Ãµes Thumb."
 
-#: elf32-arm.c:6239
+#: elf32-arm.c:6272
 #, c-format
 msgid "entry function `%s' disappeared from secure code"
 msgstr "FunÃ§Ã£o de entrada \"%s\" desapareceu do cÃ³digo de seguranÃ§a."
 
-#: elf32-arm.c:6263
+#: elf32-arm.c:6296
 #, c-format
 msgid "`%s' refers to a non entry function"
 msgstr "\"%s\" refere-se a funÃ§Ã£o nÃ£o de entrada."
 
-#: elf32-arm.c:6278
+#: elf32-arm.c:6311
 #, c-format
 msgid "%pB: visibility of symbol `%s' has changed"
 msgstr "%pB: a visibilidade do sÃ­mbolo \"%s\" mudou."
 
-#: elf32-arm.c:6287
+#: elf32-arm.c:6320
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr "%pB: tamanho incorrecto do sÃ­mbolo \"%s\"."
 
-#: elf32-arm.c:6306
+#: elf32-arm.c:6339
 #, c-format
 msgid "offset of veneer for entry function `%s' not a multiple of its size"
 msgstr "Desvio \"%s\" da folha para funÃ§Ã£o de entrada nÃ£o Ã© mÃºltiplo do seu tamanho."
 
-#: elf32-arm.c:6326
+#: elf32-arm.c:6359
 msgid "new entry function(s) introduced but no output import library specified:"
 msgstr "introduzidas novas funÃ§Ãµes de entrada mas nÃ£o especificou biblioteca importada de saÃ­da:"
 
-#: elf32-arm.c:6334
+#: elf32-arm.c:6367
 #, c-format
 msgid "start address of `%s' is different from previous link"
 msgstr "EndereÃ§o inicial de \"%s\" Ã© diferente da ligaÃ§Ã£o prÃ©via."
 
-#: elf32-arm.c:7042 elf32-arm.c:7078
+#: elf32-arm.c:7076 elf32-arm.c:7111
 #, c-format
 msgid "unable to find %s glue '%s' for '%s'"
 msgstr "impossÃ­vel encontrar cola %s \"%s\" para \"%s\""
 
-#: elf32-arm.c:7793
+#: elf32-arm.c:7822
 #, c-format
 msgid "%pB: BE8 images only valid in big-endian mode"
 msgstr "%pB: imagens BE8 sÃ³ sÃ£o vÃ¡lidas em modo big-endian."
 
 #. Give a warning, but do as the user requests anyway.
-#: elf32-arm.c:8024
+#: elf32-arm.c:8049
 #, c-format
 msgid "%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture"
 msgstr "%pB: aviso: a soluÃ§Ã£o de errata VFP11 seleccionada nÃ£o Ã© necessÃ¡ria para arquitectura de destino"
 
-#: elf32-arm.c:8051
+#: elf32-arm.c:8076
 #, c-format
 msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
 msgstr "%pB: aviso: a soluÃ§Ã£o de errata STM32L4XX seleccionada nÃ£o Ã© necessÃ¡ria para arquitectura de destino"
 
-#: elf32-arm.c:8588 elf32-arm.c:8608 elf32-arm.c:8674 elf32-arm.c:8693
+#: elf32-arm.c:8612 elf32-arm.c:8632 elf32-arm.c:8699 elf32-arm.c:8718
 #, c-format
 msgid "%pB: unable to find %s veneer `%s'"
 msgstr "%pB: impossÃ­vel encontrar a folha %s \"%s\""
 
-#: elf32-arm.c:8900
+#: elf32-arm.c:8925
 #, c-format
 msgid "%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block"
 msgstr ""
 "%pB(%pA+%#x): erro: detectada mÃºltipla carga em bloco de instruÃ§Ã£o IT nÃ£o-Ãºltimo: impossÃ­vel gerar folha STM32L4XX.\n"
 "Use a opÃ§Ã£o gcc -mrestrict-it para gerar sÃ³ uma instruÃ§Ã£o por bloco IT."
 
-#: elf32-arm.c:9000
+#: elf32-arm.c:9023
 #, c-format
 msgid "invalid TARGET2 relocation type '%s'"
 msgstr "Tipo de relocalizaÃ§Ã£o \"%s\" TARGET2 invÃ¡lido."
 
 #. FIXME: We ought to be able to generate thumb-1 PLT
 #. instructions...
-#: elf32-arm.c:9802
+#: elf32-arm.c:9825
 #, c-format
 msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
 msgstr "%pB: aviso: geraÃ§Ã£o PLT modo thumb-1 nÃ£o Ã© actualmente suportada"
 
-#: elf32-arm.c:10106 elf32-arm.c:10148
+#: elf32-arm.c:10135 elf32-arm.c:10177
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o %s \"%#lx\" inesperada em trampolim TLS"
 
-#: elf32-arm.c:10492
+#: elf32-arm.c:10521
 msgid "shared object"
 msgstr "objecto partilhado"
 
-#: elf32-arm.c:10495
+#: elf32-arm.c:10524
 msgid "PIE executable"
 msgstr "ExecutÃ¡vel PIE"
 
-#: elf32-arm.c:10498
+#: elf32-arm.c:10527
 #, c-format
 msgid "%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC"
 msgstr "%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo \"%s\" externo ou indefinido nÃ£o pode ser usada ao fazer %s; recompile com -fPIC"
 
-#: elf32-arm.c:10635 elf32-arm.c:11062
+#: elf32-arm.c:10664 elf32-arm.c:11091
 #, c-format
 msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
 msgstr "%pB: aviso: instruÃ§Ã£o %s BLX destina-se a funÃ§Ã£o %s \"%s\"."
 
-#: elf32-arm.c:11975 elf32-arm.c:12001
+#: elf32-arm.c:12003 elf32-arm.c:12029
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o %s \"%#lx\" inesperada referenciada por TLS_GOTDESC"
 
-#: elf32-arm.c:12047 elf32-csky.c:4853 elf32-m68k.c:3703 elf32-metag.c:1919
-#: elf32-nios2.c:4366
+#: elf32-arm.c:12075 elf32-csky.c:4746 elf32-m68k.c:3735 elf32-metag.c:1915
+#: elf32-nios2.c:4385
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
 msgstr "%pB(%pA+%#<PRIx64>): relocalizaÃ§Ã£o %s nÃ£o permitida em objecto partilhado"
 
-#: elf32-arm.c:12261
+#: elf32-arm.c:12289
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group relocations"
 msgstr "%pB(%pA+%#<PRIx64>): sÃ³ sÃ£o permitidas instruÃ§Ãµes ADD ou SUB para relocalizaÃ§Ãµes de grupo ALU"
 
-#: elf32-arm.c:12302 elf32-arm.c:12394 elf32-arm.c:12482 elf32-arm.c:12572
+#: elf32-arm.c:12330 elf32-arm.c:12422 elf32-arm.c:12510 elf32-arm.c:12600
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group relocation %s"
 msgstr "%pB(%pA+%#<PRIx64>): transporte ao dividir %#<PRIx64> para relocalizaÃ§Ã£o de grupo %s"
 
-#: elf32-arm.c:13078 elf32-sh.c:3689
+#: elf32-arm.c:13232 elf32-sh.c:3571
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
 msgstr "%pB(%pA+%#<PRIx64>): relocalizaÃ§Ã£o %s contra secÃ§Ã£o SEC_MERGE"
 
-#: elf32-arm.c:13191 elf32-m68k.c:3936 elf32-xtensa.c:2703
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6534
+#: elf32-arm.c:13345 elf32-m68k.c:3968 elf32-xtensa.c:2761
+#: elfnn-aarch64.c:6829
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
 msgstr "%pB(%pA+%#<PRIx64>): %s usado com sÃ­mbolo TLS %s"
 
-#: elf32-arm.c:13193 elf32-m68k.c:3938 elf32-xtensa.c:2705
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6536
+#: elf32-arm.c:13347 elf32-m68k.c:3970 elf32-xtensa.c:2763
+#: elfnn-aarch64.c:6831
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
 msgstr "%pB(%pA+%#<PRIx64>): %s usado com sÃ­mbolo nÃ£o-TLS %s"
 
-#: elf32-arm.c:13276 elf32-tic6x.c:2708
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6871
+#: elf32-arm.c:13430 elf32-tic6x.c:2649 elfnn-aarch64.c:7166
 msgid "out of range"
 msgstr "fora do intervalo"
 
-#: elf32-arm.c:13280 elf32-nios2.c:4500 elf32-pru.c:933 elf32-tic6x.c:2712
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6875
+#: elf32-arm.c:13434 elf32-nios2.c:4519 elf32-pru.c:936 elf32-tic6x.c:2653
+#: elfnn-aarch64.c:7170
 msgid "unsupported relocation"
 msgstr "relocalizaÃ§Ã£o nÃ£o suportada"
 
-#: elf32-arm.c:13288 elf32-nios2.c:4510 elf32-pru.c:943 elf32-tic6x.c:2720
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6883
+#: elf32-arm.c:13442 elf32-nios2.c:4529 elf32-pru.c:946 elf32-tic6x.c:2661
+#: elfnn-aarch64.c:7178
 msgid "unknown error"
 msgstr "erro desconhecido"
 
-#: elf32-arm.c:13764
+#: elf32-arm.c:13920
 #, c-format
 msgid "warning: not setting interworking flag of %pB since it has already been specified as non-interworking"
 msgstr "Aviso: bandeira %pB de interworking nÃ£o definida porque jÃ¡ foi especificada como nÃ£o-interworking"
 
-#: elf32-arm.c:13768
+#: elf32-arm.c:13924
 #, c-format
 msgid "warning: clearing the interworking flag of %pB due to outside request"
 msgstr "Aviso: a limpar bandeira %pB de interworking devido a pedido externo"
 
-#: elf32-arm.c:13813
+#: elf32-arm.c:13969
 #, c-format
 msgid "warning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"
 msgstr "Aviso: a limpar bandeira %pB de interworking devido a cÃ³digo nÃ£o interworking em %pB que lhe foi ligado"
 
-#: elf32-arm.c:13900
+#: elf32-arm.c:14056
 #, c-format
 msgid "%pB: unknown mandatory EABI object attribute %d"
 msgstr "Aviso: %pB: atributo de objecto EABI %d obrigatÃ³rio desconhecido"
 
-#: elf32-arm.c:13908
+#: elf32-arm.c:14064
 #, c-format
 msgid "warning: %pB: unknown EABI object attribute %d"
 msgstr "Aviso: %pB: atributo de objecto EABI %d desconhecido"
 
-#: elf32-arm.c:14175
+#: elf32-arm.c:14364
 #, c-format
 msgid "error: %pB: unknown CPU architecture"
 msgstr "erro: %pB: arquitectura CPU desconhecida"
 
-#: elf32-arm.c:14213 elf32-nios2.c:2946
+#: elf32-arm.c:14402 elf32-nios2.c:2953
 #, c-format
 msgid "error: %pB: conflicting CPU architectures %d/%d"
 msgstr "erro: %pB: arquitecturas CPU %d/%d em conflito"
 
-#: elf32-arm.c:14310
+#: elf32-arm.c:14499
 #, c-format
 msgid "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr "Erro: %pB tem ambos os atributos Tag_MPextension_use actual e legado"
 
-#: elf32-arm.c:14339
+#: elf32-arm.c:14528
 #, c-format
 msgid "error: %pB uses VFP register arguments, %pB does not"
 msgstr "erro: %pB usa argumentos de registo VFP, %pB nÃ£o"
 
-#: elf32-arm.c:14497
+#: elf32-arm.c:14687
 #, c-format
 msgid "error: %pB: unable to merge virtualization attributes with %pB"
 msgstr "erro: %pB: impossÃ­vel unir atributos de virtualizaÃ§Ã£o com %pB"
 
-#: elf32-arm.c:14523
+#: elf32-arm.c:14713
 #, c-format
 msgid "error: %pB: conflicting architecture profiles %c/%c"
 msgstr "erro: %pB: perfis de arquitectura %c/%c em conflito"
 
-#: elf32-arm.c:14662
+#: elf32-arm.c:14852
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
 msgstr "Aviso: %pB: configuraÃ§Ã£o de plataforma em conflito"
 
-#: elf32-arm.c:14671
+#: elf32-arm.c:14861
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr "erro: %pB: uso de R9 em conflito"
 
-#: elf32-arm.c:14683
+#: elf32-arm.c:14873
 #, c-format
 msgid "error: %pB: SB relative addressing conflicts with use of R9"
 msgstr "erro: %pB: conflitos de endereÃ§amento relativo SB com o uso de R9"
 
-#: elf32-arm.c:14696
+#: elf32-arm.c:14886
 #, c-format
 msgid "warning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail"
 msgstr "aviso: %pB usa %u-byte wchar_t mas a saÃ­da deve usar %u-byte wchar_t; uso de valores wchar_t atravÃ©s de vÃ¡rios objectos pode falhar"
 
-#: elf32-arm.c:14727
+#: elf32-arm.c:14917
 #, c-format
 msgid "warning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"
 msgstr "aviso: %pB usa %s enums mas a saÃ­da deve usar %s enums; uso de valores enum atravÃ©s de vÃ¡rios objectos pode falhar"
 
-#: elf32-arm.c:14739
+#: elf32-arm.c:14929
 #, c-format
 msgid "error: %pB uses iWMMXt register arguments, %pB does not"
 msgstr "erro: %pB usa argumentos de registo iWMMXt, %pB nÃ£o"
 
-#: elf32-arm.c:14756
+#: elf32-arm.c:14946
 #, c-format
 msgid "error: fp16 format mismatch between %pB and %pB"
 msgstr "erro: formato fp16 enganado entre %pB e %pB"
 
-#: elf32-arm.c:14792
+#: elf32-arm.c:14982
 #, c-format
 msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr "%pB tem ambos os atributos Tag_MPextension_use actual e legado"
@@ -1690,345 +1794,330 @@ msgstr "%pB tem ambos os atributos Tag_M
 #. Ignore init flag - it may not be set, despite the flags field containing valid data.
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
-#: elf32-arm.c:14879 elf32-bfin.c:4740 elf32-cris.c:3908 elf32-m68hc1x.c:1410
-#: elf32-m68k.c:1201 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
-#: elf32-xgate.c:494 elfxx-mips.c:16037
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7037
+#: elf32-arm.c:15069 elf32-bfin.c:4719 elf32-cris.c:3861 elf32-m68hc1x.c:1416
+#: elf32-m68k.c:1267 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
+#: elf32-xgate.c:494 elfxx-mips.c:16199 elfnn-aarch64.c:7332
 #, c-format
 msgid "private flags = %lx:"
 msgstr "bandeiras provadas = %lx:"
 
-#: elf32-arm.c:14888
+#: elf32-arm.c:15078
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [interworking activo]"
 
-#: elf32-arm.c:14896
+#: elf32-arm.c:15086
 #, c-format
 msgid " [VFP float format]"
 msgstr " [formato flutuante VFP]"
 
-#: elf32-arm.c:14898
+#: elf32-arm.c:15088
 #, c-format
 msgid " [Maverick float format]"
 msgstr " [formato flutuante Maverick]"
 
-#: elf32-arm.c:14900
+#: elf32-arm.c:15090
 #, c-format
 msgid " [FPA float format]"
 msgstr " [formato flutuante FPA]"
 
-#: elf32-arm.c:14903
+#: elf32-arm.c:15093
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr " [flutuantes passados em registos flutuantes]"
 
-#: elf32-arm.c:14906 elf32-arm.c:14992
+#: elf32-arm.c:15096 elf32-arm.c:15182
 #, c-format
 msgid " [position independent]"
 msgstr " [posiÃ§Ã£o independente]"
 
-#: elf32-arm.c:14909
+#: elf32-arm.c:15099
 #, c-format
 msgid " [new ABI]"
 msgstr " [novo ABI]"
 
-#: elf32-arm.c:14912
+#: elf32-arm.c:15102
 #, c-format
 msgid " [old ABI]"
 msgstr " [ABI antigo]"
 
-#: elf32-arm.c:14915
+#: elf32-arm.c:15105
 #, c-format
 msgid " [software FP]"
 msgstr " [software FP]"
 
-#: elf32-arm.c:14924
+#: elf32-arm.c:15114
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [Version1 EABI]"
 
-#: elf32-arm.c:14927 elf32-arm.c:14938
+#: elf32-arm.c:15117 elf32-arm.c:15128
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [tabela de sÃ­mbolo ordenada]"
 
-#: elf32-arm.c:14929 elf32-arm.c:14940
+#: elf32-arm.c:15119 elf32-arm.c:15130
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [tabela de sÃ­mbolo desordenada]"
 
-#: elf32-arm.c:14935
+#: elf32-arm.c:15125
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [Version2 EABI]"
 
-#: elf32-arm.c:14943
+#: elf32-arm.c:15133
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [sÃ­mbolos dinÃ¢micos usam Ã­ndice de segmento]"
 
-#: elf32-arm.c:14946
+#: elf32-arm.c:15136
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [sÃ­mbolos de mapeamento precedem outros]"
 
-#: elf32-arm.c:14953
+#: elf32-arm.c:15143
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [Version3 EABI]"
 
-#: elf32-arm.c:14957
+#: elf32-arm.c:15147
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [Version4 EABI]"
 
-#: elf32-arm.c:14961
+#: elf32-arm.c:15151
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [Version5 EABI]"
 
-#: elf32-arm.c:14964
+#: elf32-arm.c:15154
 #, c-format
 msgid " [soft-float ABI]"
 msgstr " [soft-float ABI]"
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:15157
 #, c-format
 msgid " [hard-float ABI]"
 msgstr " [hard-float ABI]"
 
-#: elf32-arm.c:14973
+#: elf32-arm.c:15163
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:14976
+#: elf32-arm.c:15166
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:14982
+#: elf32-arm.c:15172
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <versÃ£o EABI nÃ£o reconhecida>"
 
-#: elf32-arm.c:14989
+#: elf32-arm.c:15179
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [executÃ¡vel relocalizÃ¡vel]"
 
-#: elf32-arm.c:14995
+#: elf32-arm.c:15185
 #, c-format
 msgid " [FDPIC ABI supplement]"
 msgstr " [suplemento FDPIC ABI]"
 
-#: elf32-arm.c:15000
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7040
+#: elf32-arm.c:15190 elfnn-aarch64.c:7335
 #, c-format
 msgid "<Unrecognised flag bits set>"
 msgstr "<bits de bandeira definidos nÃ£o reconhecidos>"
 
-#: elf32-arm.c:15117 elf32-i386.c:1529 elf32-s390.c:960 elf32-tic6x.c:2783
-#: elf32-tilepro.c:1479 elf32-xtensa.c:1029 elf64-s390.c:882
-#: elf64-x86-64.c:1865 elfxx-sparc.c:1422 elfxx-tilegx.c:1700
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7329
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:539
+#: elf32-arm.c:15307 elf32-i386.c:1524 elf32-s390.c:925 elf32-tic6x.c:2724
+#: elf32-tilepro.c:1443 elf32-xtensa.c:1093 elf64-s390.c:847
+#: elf64-x86-64.c:1902 elfxx-sparc.c:1386 elfxx-tilegx.c:1664
+#: elfnn-aarch64.c:7606 elfnn-riscv.c:525
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr "%pB: mau Ã­ndice de sÃ­mbolo: %d"
 
-#: elf32-arm.c:15508
+#: elf32-arm.c:15696
 #, c-format
 msgid "FDPIC does not yet support %s relocation to become dynamic for executable"
 msgstr "FDPIC ainda nÃ£o suporta que a relocalizaÃ§Ã£o %s se torne dinÃ¢mica para executÃ¡vel"
 
-#: elf32-arm.c:16558 elf32-csky.c:1931 elf32-hppa.c:2090 elf32-lm32.c:1998
-#: elf32-m32r.c:2110 elf32-metag.c:2797 elf32-nds32.c:4330 elf32-or1k.c:2858
-#: elf32-ppc.c:5469 elf32-s390.c:1854 elf32-sh.c:2975 elf32-tic6x.c:3252
-#: elf32-tilepro.c:2245 elf64-ppc.c:9023 elf64-s390.c:1791 elfxx-sparc.c:2435
-#: elfxx-tilegx.c:2491 elfxx-x86.c:571
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:8677
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:1142
-#, c-format
-msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
-msgstr "%pB: relocalizaÃ§Ã£o dinÃ¢mica contra \"%pT\" em secÃ§Ã£o sÃ³ de leitura \"%pA\"\n"
-
-#: elf32-arm.c:16854
+#: elf32-arm.c:16939
 #, c-format
 msgid "errors encountered processing file %pB"
 msgstr "Encontrados erros ao processar o ficheiro %pB"
 
-#: elf32-arm.c:17301 elflink.c:12556 elflink.c:12603
+#: elf32-arm.c:17326 elflink.c:12818 elflink.c:12865
 #, c-format
 msgid "could not find section %s"
 msgstr "impossÃ­vel encontrar a secÃ§Ã£o %s"
 
-#: elf32-arm.c:18512
+#: elf32-arm.c:18550
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub is allocated in unsafe location"
 msgstr "%pB: erro: errata Cortex-A8 fictÃ­cia estÃ¡ alocada a localizaÃ§Ã£o nÃ£o-segura"
 
 #. There's not much we can do apart from complain if this
 #. happens.
-#: elf32-arm.c:18539
+#: elf32-arm.c:18577
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
 msgstr "%pB: erro: errata Cortex-A8 fictÃ­cia fora do intervalo (ficheiro de entrada muito grande)"
 
-#: elf32-arm.c:19366 elf32-arm.c:19388
+#: elf32-arm.c:19404 elf32-arm.c:19426
 #, c-format
 msgid "%pB: error: VFP11 veneer out of range"
 msgstr "%pB: erro: folha VFP11 fora do intervalo"
 
-#: elf32-arm.c:19439
+#: elf32-arm.c:19477
 #, c-format
 msgid "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range by %<PRId64> bytes; cannot encode branch instruction"
 msgstr "%pB(%#<PRIx64>): erro: impossÃ­vel criar folha STM32L4XX. Sai fora do intervalo por %<PRId64> bytes. ImpossÃ­vel codificar a instruÃ§Ã£o do ramo. "
 
-#: elf32-arm.c:19478
+#: elf32-arm.c:19516
 #, c-format
 msgid "%pB: error: cannot create STM32L4XX veneer"
 msgstr "%pB: erro: impossÃ­vel criar folha STM32L4XX."
 
-#: elf32-arm.c:20567
+#: elf32-arm.c:20600
 #, c-format
 msgid "error: %pB is already in final BE8 format"
 msgstr "erro: %pB jÃ¡ estÃ¡ no formato final BE8"
 
-#: elf32-arm.c:20643
+#: elf32-arm.c:20676
 #, c-format
 msgid "error: source object %pB has EABI version %d, but target %pB has EABI version %d"
 msgstr "erro: objecto fonte %pB tem versÃ£o EABI %d, mas o alvo %pB tem versÃ£o EABI %d"
 
-#: elf32-arm.c:20658
+#: elf32-arm.c:20691
 #, c-format
 msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
 msgstr "erro: %pB estÃ¡ compilado para APCS-%d, enquanto o alvo %pB usa APCS-%d"
 
-#: elf32-arm.c:20668
+#: elf32-arm.c:20701
 #, c-format
 msgid "error: %pB passes floats in float registers, whereas %pB passes them in integer registers"
 msgstr "erro: %pB passa flutuantes em registos flutuantes, enquanto %pB os passa em registos inteiros"
 
-#: elf32-arm.c:20672
+#: elf32-arm.c:20705
 #, c-format
 msgid "error: %pB passes floats in integer registers, whereas %pB passes them in float registers"
 msgstr "erro: %pB passa flutuantes em registos inteiros, enquanto %pB os passa em registos flutuantes"
 
-#: elf32-arm.c:20682 elf32-arm.c:20686 elf32-arm.c:20696
+#: elf32-arm.c:20715 elf32-arm.c:20719 elf32-arm.c:20729
 #, c-format
 msgid "error: %pB uses %s instructions, whereas %pB does not"
 msgstr "erro: %pB usa instruÃ§Ãµes%s, enquanto %pB nÃ£o"
 
-#: elf32-arm.c:20700
+#: elf32-arm.c:20733
 #, c-format
 msgid "error: %pB does not use %s instructions, whereas %pB does"
 msgstr "erro: %pB nÃ£o usa instruÃ§Ãµes %s, enquanto %pB sim"
 
-#: elf32-arm.c:20719
+#: elf32-arm.c:20752
 #, c-format
 msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
 msgstr "erro: %pB usa programa FP, enquanto %pB usa equipamento FP"
 
-#: elf32-arm.c:20723
+#: elf32-arm.c:20756
 #, c-format
 msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
 msgstr "erro: %pB usa equipamento FP, enquanto %pB usa programa FP"
 
-#: elf32-arm.c:20737
+#: elf32-arm.c:20770
 #, c-format
 msgid "warning: %pB supports interworking, whereas %pB does not"
 msgstr "Aviso: %pB suporta interworking, enquanto %pB nÃ£o"
 
-#: elf32-arm.c:20743
+#: elf32-arm.c:20776
 #, c-format
 msgid "warning: %pB does not support interworking, whereas %pB does"
 msgstr "Aviso: %pB nÃ£o suporta interworking, enquanto %pB sim"
 
-#: elf32-avr.c:1518 elf32-bfin.c:3135 elf32-cris.c:2041 elf32-epiphany.c:577
-#: elf32-fr30.c:602 elf32-frv.c:4057 elf32-ft32.c:502 elf32-ip2k.c:1493
-#: elf32-iq2000.c:701 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1998
-#: elf32-moxie.c:296 elf32-msp430.c:1366 elf32-mt.c:406 elf32-or1k.c:1767
-#: elf32-tilepro.c:3514 elf32-v850.c:2299 elf32-visium.c:689
-#: elf32-xstormy16.c:939 elf64-mmix.c:1549 elfxx-tilegx.c:3878
+#: elf32-avr.c:1516 elf32-bfin.c:3134 elf32-cris.c:2041 elf32-epiphany.c:573
+#: elf32-fr30.c:602 elf32-frv.c:4056 elf32-ft32.c:502 elf32-ip2k.c:1488
+#: elf32-iq2000.c:699 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1994
+#: elf32-moxie.c:296 elf32-msp430.c:1375 elf32-mt.c:406 elf32-or1k.c:1825
+#: elf32-tilepro.c:3388 elf32-v850.c:2298 elf32-visium.c:688
+#: elf32-xstormy16.c:937 elf64-bpf.c:521 elf64-mmix.c:1549 elfxx-tilegx.c:3752
 msgid "internal error: dangerous relocation"
 msgstr "erro interno: relocalizaÃ§Ã£o perigosa"
 
-#: elf32-avr.c:3327
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3126
+#: elf32-avr.c:3327 elfnn-aarch64.c:3221
 #, c-format
 msgid "cannot create stub entry %s"
 msgstr "impossÃ­vel criar entrada fictÃ­cia %s"
 
-#: elf32-bfin.c:106 elf32-bfin.c:362
+#: elf32-bfin.c:107 elf32-bfin.c:363
 msgid "relocation should be even number"
 msgstr "a relocalizaÃ§Ã£o deve ser nÃºmero par"
 
-#: elf32-bfin.c:1585
+#: elf32-bfin.c:1584
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
 msgstr "%pB(%pA+%#<PRIx64>): relocalizaÃ§Ã£o insolÃºvel contra sÃ­mbolo \"%s\""
 
-#: elf32-bfin.c:1617 elf32-i386.c:3449 elf32-m68k.c:3976 elf32-s390.c:3269
-#: elf64-s390.c:3219 elf64-x86-64.c:3896
+#: elf32-bfin.c:1616 elf32-i386.c:3443 elf32-m68k.c:4008 elf32-s390.c:3140
+#: elf64-s390.c:3089 elf64-x86-64.c:4112
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
 msgstr "%pB(%pA+%#<PRIx64>): reloc contra \"%s\": erro %d"
 
-#: elf32-bfin.c:2638
+#: elf32-bfin.c:2641
 #, c-format
 msgid "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero addend"
 msgstr "%pB: relocalizaÃ§Ã£o em \"%pA+%#<PRIx64>\" referencia o sÃ­mbolo \"%s\" com adenda nÃ£o-zero"
 
-#: elf32-bfin.c:2655
+#: elf32-bfin.c:2658
 msgid "relocation references symbol not defined in the module"
 msgstr "relocalizaÃ§Ã£o referencia sÃ­mbolo ainda nÃ£o definido no mÃ³dulo"
 
-#: elf32-bfin.c:2752
+#: elf32-bfin.c:2755
 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
 msgstr "R_BFIN_FUNCDESC referencia sÃ­mbolo dinÃ¢mico com adenda nÃ£o-zero"
 
-#: elf32-bfin.c:2793 elf32-bfin.c:2916
+#: elf32-bfin.c:2795 elf32-bfin.c:2916
 msgid "cannot emit fixups in read-only section"
 msgstr "impossÃ­vel emitir fixups em secÃ§Ã£o sÃ³ de leitura"
 
-#: elf32-bfin.c:2824 elf32-bfin.c:2954 elf32-lm32.c:1049 elf32-sh.c:4511
+#: elf32-bfin.c:2825 elf32-bfin.c:2953 elf32-lm32.c:1006 elf32-sh.c:4389
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr "impossÃ­vel emitir relocalizaÃ§Ãµes dinÃ¢micas em secÃ§Ã£o sÃ³ de leitura"
 
-#: elf32-bfin.c:2874
+#: elf32-bfin.c:2875
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
 msgstr "R_BFIN_FUNCDESC_VALUE referencia sÃ­mbolo dinÃ¢mico com adenda nÃ£o-zero"
 
-#: elf32-bfin.c:3039
+#: elf32-bfin.c:3038
 msgid "relocations between different segments are not supported"
 msgstr "relocalizaÃ§Ãµes entre diferentes segmentos nÃ£o sÃ£o suportadas"
 
-#: elf32-bfin.c:3040
+#: elf32-bfin.c:3039
 msgid "warning: relocation references a different segment"
 msgstr "aviso: a relocalizaÃ§Ã£o referencia um segmento diferente"
 
-#: elf32-bfin.c:4787 elf32-frv.c:6603
+#: elf32-bfin.c:4770 elf32-frv.c:6584
 #, c-format
 msgid "%pB: cannot link non-fdpic object file into fdpic executable"
 msgstr "%pB: impossÃ­vel ligar ficheiro objecto nÃ£o-fdpic a executÃ¡vel fdpic"
 
-#: elf32-bfin.c:4791 elf32-frv.c:6607
+#: elf32-bfin.c:4774 elf32-frv.c:6588
 #, c-format
 msgid "%pB: cannot link fdpic object file into non-fdpic executable"
 msgstr "%pB: impossÃ­vel ligar ficheiro objecto fdpic a executÃ¡vel nÃ£o-fdpic"
 
-#: elf32-bfin.c:4941
+#: elf32-bfin.c:4924
 #, c-format
 msgid "*** check this relocation %s"
 msgstr "*** verificar esta relocalizaÃ§Ã£o %s"
 
-#: elf32-bfin.c:5057
+#: elf32-bfin.c:5040
 msgid "the bfin target does not currently support the generation of copy relocations"
 msgstr "o alvo bfin actualmente nÃ£o suporta a geraÃ§Ã£o de relocalizaÃ§Ãµes de cÃ³pia"
 
-#: elf32-bfin.c:5351 elf32-cr16.c:2803 elf32-m68k.c:4390
+#: elf32-bfin.c:5334 elf32-cr16.c:2731 elf32-m68k.c:4422
 msgid "unsupported relocation type"
 msgstr "relocalizaÃ§Ã£o nÃ£o suportada"
 
@@ -2048,16 +2137,16 @@ msgid "%pB, section %pA: no PLT for relo
 msgstr "%pB, secÃ§Ã£o %pA: sem PLT para relocalizaÃ§Ã£o %s contra sÃ­mbolo \"%s\""
 
 #: elf32-cris.c:1193 elf32-cris.c:1326 elf32-cris.c:1591 elf32-cris.c:1674
-#: elf32-cris.c:1827 elf32-tic6x.c:2619
+#: elf32-cris.c:1827 elf32-tic6x.c:2560
 msgid "[whose name is lost]"
 msgstr "8cujo nome estÃ¡ perdido]"
 
-#: elf32-cris.c:1311 elf32-tic6x.c:2603
+#: elf32-cris.c:1311 elf32-tic6x.c:2544
 #, c-format
 msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against local symbol"
 msgstr "%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s com adenda nÃ£o-zero %<PRId64> contra sÃ­mbolo local"
 
-#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2612
+#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2553
 #, c-format
 msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
 msgstr "%pB, secÃ§Ã£o %pA: relocalizaÃ§Ã£o %s com adenda nÃ£o-zero %<PRId64> contra sÃ­mbolo \"%s\""
@@ -2119,73 +2208,73 @@ msgstr ""
 "%pB, secÃ§Ã£o %pA:\n"
 "  relocalizaÃ§Ã£o %s nÃ£o deve ser usada em objecto partilhado; recompile com -fPIC"
 
-#: elf32-cris.c:3747
+#: elf32-cris.c:3700
 #, c-format
 msgid "%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr ""
 "%pB, secÃ§Ã£o %pA, para sÃ­mbolo \"%s\":\n"
 "  relocalizaÃ§Ã£o %s nÃ£o deve ser usada em objecto partilhado; recompile com -fPIC"
 
-#: elf32-cris.c:3860
+#: elf32-cris.c:3812
 msgid "unexpected machine number"
 msgstr "NÃºmero de mÃ¡quina inesperado"
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3864
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr " [sÃ­mbolos tÃªm um prefixo _]"
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3867
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 e v32]"
 
-#: elf32-cris.c:3917
+#: elf32-cris.c:3870
 #, c-format
 msgid " [v32]"
 msgstr " [v32]"
 
-#: elf32-cris.c:3961
+#: elf32-cris.c:3914
 #, c-format
 msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
 msgstr "%pB: usa sÃ­mbolos prefixados com _, mas o ficheiro serÃ¡ escrito com sÃ­mbolos sem prefixo"
 
-#: elf32-cris.c:3962
+#: elf32-cris.c:3915
 #, c-format
 msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
 msgstr "%pB: usa sÃ­mbolos sem prefixo, mas o ficheiro serÃ¡ escrito com sÃ­mbolos prefixados com _"
 
-#: elf32-cris.c:3981
+#: elf32-cris.c:3934
 #, c-format
 msgid "%pB contains CRIS v32 code, incompatible with previous objects"
 msgstr "%pB contÃ©m cÃ³digo CRIS v32, incompatÃ­vel com os objectos anteriores"
 
-#: elf32-cris.c:3983
+#: elf32-cris.c:3936
 #, c-format
 msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
 msgstr "%pB contÃ©m cÃ³digo nÃ£o-CRIS-v32, incompatÃ­vel com os objectos anteriores"
 
-#: elf32-csky.c:2066
+#: elf32-csky.c:2022
 msgid "GOT table size out of range"
 msgstr "tamanho de tabela GOT fora do intervalo"
 
-#: elf32-csky.c:2917
+#: elf32-csky.c:2802
 #, c-format
 msgid "warning: unrecognized arch eflag '%#lx'"
 msgstr "aviso: eflag \"%#lx\" arch nÃ£o reconhecida"
 
-#: elf32-csky.c:2977
+#: elf32-csky.c:2862
 #, c-format
 msgid "%pB: machine flag conflict with target"
 msgstr "%pB: conflito de bandeira de mÃ¡quina com destino"
 
-#: elf32-csky.c:2990
+#: elf32-csky.c:2875
 #, c-format
 msgid "warning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%s"
 msgstr "aviso: bandeira arch do ficheiro %pB ck%s em conflito com o destino ck%s, a usar ck%s"
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4225 elf32-i386.c:351
+#: elf32-csky.c:4118 elf32-i386.c:350
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr "%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado: %#x"
@@ -2201,7 +2290,7 @@ msgid "jump (PC rel26) to section (%s) n
 msgstr "Erro de ligaÃ§Ã£o BFD: salto (PC rel26) para secÃ§Ã£o (%s) nÃ£o suportado"
 
 #. Only if it's not an unresolved symbol.
-#: elf32-epiphany.c:573 elf32-ip2k.c:1489
+#: elf32-epiphany.c:569 elf32-ip2k.c:1484
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "relocalizaÃ§Ã£o nÃ£o suportada entre dados/espaÃ§os de endereÃ§o insn"
 
@@ -2209,96 +2298,96 @@ msgstr "relocalizaÃ§Ã£o nÃ£o suportada e
 msgid "relocation requires zero addend"
 msgstr "relocalizaÃ§Ã£o requer adenda zero"
 
-#: elf32-frv.c:2829
+#: elf32-frv.c:2832
 #, c-format
 msgid "%H: relocation to `%s+%v' may have caused the error above\n"
 msgstr "%H: relocalizaÃ§Ã£o para \"%s+%v\" poderÃ¡ ter causado o erro acima\n"
 
-#: elf32-frv.c:2846
+#: elf32-frv.c:2849
 msgid "%H: relocation references symbol not defined in the module\n"
 msgstr "%H: relocalizaÃ§Ã£o referencia sÃ­mbolo nÃ£o definido no mÃ³dulo\n"
 
-#: elf32-frv.c:2922
+#: elf32-frv.c:2925
 msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
 msgstr "%H: R_FRV_GETTLSOFF nÃ£o aplicado a uma instruÃ§Ã£o call\n"
 
-#: elf32-frv.c:2963
+#: elf32-frv.c:2966
 msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESC12 nÃ£o aplicado a uma instruÃ§Ã£o lddi\n"
 
-#: elf32-frv.c:3034
+#: elf32-frv.c:3037
 msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESCHI nÃ£o aplicado a uma instruÃ§Ã£o sethi\n"
 
-#: elf32-frv.c:3071
+#: elf32-frv.c:3074
 msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESCLO nÃ£o aplicado a uma instruÃ§Ã£o setlo ou setlos\n"
 
-#: elf32-frv.c:3118
+#: elf32-frv.c:3121
 msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
 msgstr "%H: R_FRV_TLSDESC_RELAX nÃ£o aplicado a uma instruÃ§Ã£o ldd\n"
 
-#: elf32-frv.c:3202
+#: elf32-frv.c:3205
 msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
 msgstr "%H: R_FRV_GETTLSOFF_RELAX nÃ£o aplicado a uma instruÃ§Ã£o calll\n"
 
-#: elf32-frv.c:3256
+#: elf32-frv.c:3259
 msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFF12 nÃ£o aplicado a uma instruÃ§Ã£o ldi\n"
 
-#: elf32-frv.c:3286
+#: elf32-frv.c:3289
 msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFFHI nÃ£o aplicado a uma instruÃ§Ã£o sethi\n"
 
-#: elf32-frv.c:3315
+#: elf32-frv.c:3318
 msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFFLO nÃ£o aplicado a uma instruÃ§Ã£o setlo ou setlos\n"
 
-#: elf32-frv.c:3345
+#: elf32-frv.c:3348
 msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
 msgstr "%H: R_FRV_TLSOFF_RELAX nÃ£o aplicado a uma instruÃ§Ã£o ld\n"
 
-#: elf32-frv.c:3390
+#: elf32-frv.c:3393
 msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_TLSMOFFHI nÃ£o aplicado a uma instruÃ§Ã£o sethi\n"
 
-#: elf32-frv.c:3417
+#: elf32-frv.c:3420
 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
 msgstr "R_FRV_TLSMOFFLO nÃ£o aplicado a uma instruÃ§Ã£o setlo ou setlos\n"
 
-#: elf32-frv.c:3538 elf32-frv.c:3660
+#: elf32-frv.c:3541 elf32-frv.c:3661
 msgid "%H: %s references dynamic symbol with nonzero addend\n"
 msgstr "%H: R_FRV_FUNCDESC referencia sÃ­mbolo dinÃ¢mico com adenda nÃ£o zero\n"
 
-#: elf32-frv.c:3580 elf32-frv.c:3703
+#: elf32-frv.c:3582 elf32-frv.c:3703
 msgid "%H: cannot emit fixups in read-only section\n"
 msgstr "%H: impossÃ­vel emitir fixups em secÃ§Ã£o sÃ³ de leitura\n"
 
-#: elf32-frv.c:3611 elf32-frv.c:3746
+#: elf32-frv.c:3612 elf32-frv.c:3745
 msgid "%H: cannot emit dynamic relocations in read-only section\n"
 msgstr "%H: impossÃ­vel emitir relocalizaÃ§Ãµes dinÃ¢micas em secÃ§Ã£o sÃ³ de leitura\n"
 
-#: elf32-frv.c:3918
+#: elf32-frv.c:3917
 #, c-format
 msgid "%H: reloc against `%s' references a different segment\n"
 msgstr "%H: reloc contra \"%s\" referencia um segmento diferente\n"
 
-#: elf32-frv.c:4069
+#: elf32-frv.c:4068
 #, c-format
 msgid "%H: reloc against `%s': %s\n"
 msgstr "%H: reloc contra \"%s\": %s\n"
 
-#: elf32-frv.c:6514
+#: elf32-frv.c:6495
 #, c-format
 msgid "%pB: compiled with %s and linked with modules that use non-pic relocations"
 msgstr "%pB: compilado com %s e ligado com mÃ³dulos que usam relocalizaÃ§Ãµes nÃ£o-pic"
 
-#: elf32-frv.c:6568 elf32-iq2000.c:832 elf32-m32c.c:876
+#: elf32-frv.c:6549 elf32-iq2000.c:830 elf32-m32c.c:876
 #, c-format
 msgid "%pB: compiled with %s and linked with modules compiled with %s"
 msgstr "%pB: compilado com %s e ligado com mÃ³dulos compilados com %s"
 
-#: elf32-frv.c:6581
+#: elf32-frv.c:6562
 #, c-format
 msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
 msgstr "%pB: usa campos e_flags (%#x) desconhecidos diferentes dos mÃ³dulos anteriores (%#x)"
@@ -2308,137 +2397,140 @@ msgstr "%pB: usa campos e_flags (%#x) de
 msgid "%pB: relocations in generic ELF (EM: %d)"
 msgstr "%pB: relocalizaÃ§Ãµes em ELF (EM: %d) genÃ©rico"
 
-#: elf32-hppa.c:834 elf32-hppa.c:3511
+#: elf32-hppa.c:763 elf32-hppa.c:844 elf64-ppc.c:11859
+msgid "%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: impossÃ­vel atribuir \"%pA\" a uma secÃ§Ã£o de saÃ­da. Repita sem --enable-non-contiguous-regions.\n"
+
+#: elf32-hppa.c:865 elf32-hppa.c:3407
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
 msgstr "%pB(%pA+%#<PRIx64>): impossÃ­vel atingir %s, recompile com -ffunction-sections"
 
-#: elf32-hppa.c:1248
+#: elf32-hppa.c:1243
 #, c-format
 msgid "%pB: relocation %s can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: relocalizaÃ§Ã£o %s nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC"
 
-#: elf32-hppa.c:2688
+#: elf32-hppa.c:2584
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr "%pB: fictÃ­cio de exportaÃ§Ã£o duplicado %s"
 
-#: elf32-hppa.c:3344
+#: elf32-hppa.c:3240
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared link"
 msgstr "%pB(%pA+%#<PRIx64>): %s fixup para insn %#x nÃ£o Ã© suportado em ligaÃ§Ã£o nÃ£o partilhada"
 
-#: elf32-hppa.c:4140
+#: elf32-hppa.c:4036
 #, c-format
 msgid "%s has both normal and TLS relocs"
 msgstr "%s tem relocs normal e TLS em simultÃ¢neo"
 
-#: elf32-hppa.c:4158
+#: elf32-hppa.c:4054
 #, c-format
 msgid "%pB:%s has both normal and TLS relocs"
 msgstr "%pB:%s tem relocs normal e TLS em simultÃ¢neo"
 
-#: elf32-hppa.c:4217
+#: elf32-hppa.c:4113
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
 msgstr "%pB(%pA+%#<PRIx64>): impossÃ­vel gerir %s para %s"
 
-#: elf32-hppa.c:4521
+#: elf32-hppa.c:4417
 msgid ".got section not immediately after .plt section"
 msgstr "secÃ§Ã£o .got nÃ£o imediatamente apÃ³s secÃ§Ã£o .plt"
 
-#: elf32-i386.c:1178 elf64-x86-64.c:1377
+#: elf32-i386.c:1169 elf64-x86-64.c:1382
 #, c-format
 msgid "%pB: TLS transition from %s to %s against `%s' at %#<PRIx64> in section `%pA' failed"
 msgstr "%pB: transiÃ§Ã£o TLS de %s para %s contra \"%s\" em %#<PRIx64> na secÃ§Ã£o \"%pA\" falhou"
 
-#: elf32-i386.c:1269
+#: elf32-i386.c:1272
 #, c-format
 msgid "%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object"
 msgstr "%pB: relocalizaÃ§Ã£o GOT directa R_386_GOT32X contra \"%s\" sem registo-base nÃ£o pode ser usada ao fazer um objecto partilhado"
 
-#: elf32-i386.c:1726 elf32-s390.c:1188 elf32-sh.c:5662 elf32-tilepro.c:1592
-#: elf32-xtensa.c:1203 elf64-s390.c:1120 elfxx-sparc.c:1591
-#: elfxx-tilegx.c:1805
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:451
+#: elf32-i386.c:1721 elf32-s390.c:1153 elf32-sh.c:5494 elf32-tilepro.c:1556
+#: elf32-xtensa.c:1265 elf64-s390.c:1085 elfxx-sparc.c:1555
+#: elfxx-tilegx.c:1769 elfnn-riscv.c:437
 #, c-format
 msgid "%pB: `%s' accessed both as normal and thread local symbol"
 msgstr "%pB: \"%s\" acedido como sÃ­mbolo local normal e thread em simultÃ¢neo"
 
-#: elf32-i386.c:1798
+#: elf32-i386.c:1793
 #, c-format
 msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
 msgstr "%pB: chamada nÃ£o-PIC a IFUNC \"%s\" nÃ£o suportada"
 
-#: elf32-i386.c:2379 elf64-x86-64.c:2670
+#: elf32-i386.c:2373 elf64-x86-64.c:2721
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
 msgstr "%pB: relocalizaÃ§Ã£o %s contra STT_GNU_IFUNC sÃ­mbolo \"%s\" nÃ£o suportada"
 
-#: elf32-i386.c:2412 elf32-i386.c:3660 elf32-i386.c:3801 elf64-x86-64.c:2727
-#: elf64-x86-64.c:4069 elf64-x86-64.c:4225
+#: elf32-i386.c:2406 elf32-i386.c:3654 elf32-i386.c:3795 elf64-x86-64.c:2778
+#: elf64-x86-64.c:4285 elf64-x86-64.c:4441
 #, c-format
 msgid "Local IFUNC function `%s' in %pB\n"
 msgstr "FunÃ§Ã£o IFUNC local \"%s\" em %pB\n"
 
-#: elf32-i386.c:2569
+#: elf32-i386.c:2563
 #, c-format
 msgid "%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object"
 msgstr "%pB: relocalizaÃ§Ã£o GOT directa %s contra \"%s\" sem registo-base nÃ£o pode ser usada ao fazer um objecto partilhado"
 
-#: elf32-i386.c:2604 elf64-x86-64.c:2919
+#: elf32-i386.c:2598 elf64-x86-64.c:2977
 msgid "hidden symbol"
 msgstr "sÃ­mbolo oculto"
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2922
+#: elf32-i386.c:2601 elf64-x86-64.c:2980
 msgid "internal symbol"
 msgstr "sÃ­mbolo interno"
 
-#: elf32-i386.c:2610 elf64-x86-64.c:2925
+#: elf32-i386.c:2604 elf64-x86-64.c:2983
 msgid "protected symbol"
 msgstr "sÃ­mbolo protegido"
 
-#: elf32-i386.c:2613 elf64-x86-64.c:2928
+#: elf32-i386.c:2607 elf64-x86-64.c:2986
 msgid "symbol"
 msgstr "sÃ­mbolo"
 
-#: elf32-i386.c:2619
+#: elf32-i386.c:2613
 #, c-format
 msgid "%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object"
 msgstr "%pB: relocalizaÃ§Ã£o R_386_GOTOFF contra %s \"%s\" indefinido nÃ£o pode ser usada ao fazer um objecto partilhado"
 
-#: elf32-i386.c:2632
+#: elf32-i386.c:2626
 #, c-format
 msgid "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"
 msgstr "%pB: relocalizaÃ§Ã£o R_386_GOTOFF contra %s \"%s\" protegido nÃ£o pode ser usada ao fazer um objecto partilhado"
 
-#: elf32-ip2k.c:856 elf32-ip2k.c:862 elf32-ip2k.c:929 elf32-ip2k.c:935
+#: elf32-ip2k.c:855 elf32-ip2k.c:861 elf32-ip2k.c:928 elf32-ip2k.c:934
 msgid "ip2k relaxer: switch table without complete matching relocation information."
 msgstr "ip2k relaxer: tabela de troca sem informaÃ§Ã£o completa de comparaÃ§Ã£o de relocalizaÃ§Ã£o."
 
-#: elf32-ip2k.c:879 elf32-ip2k.c:962
+#: elf32-ip2k.c:878 elf32-ip2k.c:961
 msgid "ip2k relaxer: switch table header corrupt."
 msgstr "ip2k relaxer: cabeÃ§alho da tabela de troca corrompido."
 
-#: elf32-ip2k.c:1302
+#: elf32-ip2k.c:1297
 #, c-format
 msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr "ip2k linker: pÃ¡gina de instruÃ§Ã£o em falta em %#<PRIx64> (dest = %#<PRIx64>)"
 
-#: elf32-ip2k.c:1321
+#: elf32-ip2k.c:1316
 #, c-format
 msgid "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr "ip2k linker: pÃ¡gina de instruÃ§Ã£o redundante em %#<PRIx64> (dest = %#<PRIx64>)"
 
-#: elf32-lm32.c:651 elf32-nios2.c:3141
+#: elf32-lm32.c:608 elf32-nios2.c:3148
 msgid "global pointer relative relocation when _gp not defined"
 msgstr "relocalizaÃ§Ã£o relativa de ponteiro global com _gp nÃ£o definido"
 
-#: elf32-lm32.c:706 elf32-nios2.c:3578
+#: elf32-lm32.c:663 elf32-nios2.c:3585
 msgid "global pointer relative address out of range"
 msgstr "endereÃ§o relativo de ponteiro global fora do intervalo"
 
-#: elf32-lm32.c:1002
+#: elf32-lm32.c:959
 #, c-format
 msgid "internal error: addend should be zero for %s"
 msgstr "erro interno: adenda devia ser zero para %s"
@@ -2447,136 +2539,141 @@ msgstr "erro interno: adenda devia ser z
 msgid "SDA relocation when _SDA_BASE_ not defined"
 msgstr "relocalizaÃ§Ã£o SDA com _SDA_BASE_ nÃ£o definido"
 
-#: elf32-m32r.c:2984 elf32-microblaze.c:1101 elf32-microblaze.c:1149
+#: elf32-m32r.c:2799 elf32-microblaze.c:1097 elf32-microblaze.c:1145
 #, c-format
 msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)"
 msgstr "%pB: o alvo (%s) de uma relocalizaÃ§Ã£o %s estÃ¡ na secÃ§Ã£o errada (%pA)"
 
-#: elf32-m32r.c:3487
+#: elf32-m32r.c:3302
 #, c-format
 msgid "%pB: instruction set mismatch with previous modules"
 msgstr "%pB: conjunto de instruÃ§Ãµes trocado com os mÃ³dulos anteriores"
 
-#: elf32-m32r.c:3508 elf32-nds32.c:6992
+#: elf32-m32r.c:3323 elf32-nds32.c:6855
 #, c-format
 msgid "private flags = %lx"
 msgstr "bandeiras privadas = %lx"
 
-#: elf32-m32r.c:3513
+#: elf32-m32r.c:3328
 #, c-format
 msgid ": m32r instructions"
 msgstr ": instruÃ§Ãµes m32r"
 
-#: elf32-m32r.c:3514
+#: elf32-m32r.c:3329
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": instruÃ§Ãµes m32rx"
 
-#: elf32-m32r.c:3515
+#: elf32-m32r.c:3330
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": instruÃ§Ãµes m32r2"
 
-#: elf32-m68hc1x.c:1116
+#: elf32-m68hc1x.c:1136
 #, c-format
 msgid "reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
 msgstr "ReferÃªncia ao sÃ­mbolo distante \"%s\" com uma relocalizaÃ§Ã£o errada pode resultar em execuÃ§Ã£o incorrecta"
 
-#: elf32-m68hc1x.c:1150
+#: elf32-m68hc1x.c:1167
 #, c-format
 msgid "XGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code."
 msgstr "O endereÃ§o XGATE (%lx) nÃ£o estÃ¡ dentro de RAM(0xE000-0xFFFF) partilhado, deve desviar manualmente o endereÃ§o e, possivelmente gerir a pÃ¡gina, no seu cÃ³digo."
 
-#: elf32-m68hc1x.c:1168
+#: elf32-m68hc1x.c:1183
 #, c-format
 msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)"
 msgstr "endereÃ§o de banco [%lx:%04lx] (%lx) nÃ£o estÃ¡ no mesmo banco que o endereÃ§o actual [%lx:%04lx] (%lx)"
 
-#: elf32-m68hc1x.c:1184
+#: elf32-m68hc1x.c:1198
 #, c-format
 msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
 msgstr "referÃªncia a um endereÃ§o de banco [%lx:%04lx] no espaÃ§o de endereÃ§o normal em %04lx"
 
-#: elf32-m68hc1x.c:1225
+#: elf32-m68hc1x.c:1234
 #, c-format
 msgid "S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your code"
 msgstr "endereÃ§o S12 (%lx) nÃ£o estÃ¡ dentro de RAM(0x2000-0x4000) partilhado, deve desviar manualmente o endereÃ§o no seu cÃ³digo"
 
-#: elf32-m68hc1x.c:1352
+#: elf32-m68hc1x.c:1358
 #, c-format
 msgid "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
 msgstr "%pB: a ligar ficheiros compilados para inteiros de 16-bit (-mshort) e outros para inteiros de 32-bit"
 
-#: elf32-m68hc1x.c:1359
+#: elf32-m68hc1x.c:1365
 #, c-format
 msgid "%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
 msgstr "%pB: a ligar ficheiros compilados para duplos de 32-bit (-fshort-double) e outros para duplos de 64-bit"
 
-#: elf32-m68hc1x.c:1368
+#: elf32-m68hc1x.c:1374
 #, c-format
 msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
 msgstr "%pB: a ligar ficheiros compilados para HCS12 com outros compilados para HC12"
 
-#: elf32-m68hc1x.c:1413 elf32-xgate.c:497
+#: elf32-m68hc1x.c:1419 elf32-xgate.c:497
 #, c-format
 msgid "[abi=32-bit int, "
 msgstr "[abi=32-bit int, "
 
-#: elf32-m68hc1x.c:1415 elf32-xgate.c:499
+#: elf32-m68hc1x.c:1421 elf32-xgate.c:499
 #, c-format
 msgid "[abi=16-bit int, "
 msgstr "[abi=16-bit int, "
 
-#: elf32-m68hc1x.c:1418 elf32-xgate.c:502
+#: elf32-m68hc1x.c:1424 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
 msgstr "64-bit duplo, "
 
-#: elf32-m68hc1x.c:1420 elf32-xgate.c:504
+#: elf32-m68hc1x.c:1426 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr "32-bit duplo, "
 
-#: elf32-m68hc1x.c:1423
+#: elf32-m68hc1x.c:1429
 #, c-format
 msgid "cpu=HC11]"
 msgstr "cpu=HC11]"
 
-#: elf32-m68hc1x.c:1425
+#: elf32-m68hc1x.c:1431
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "cpu=HCS12]"
 
-#: elf32-m68hc1x.c:1427
+#: elf32-m68hc1x.c:1433
 #, c-format
 msgid "cpu=HC12]"
 msgstr "cpu=HC12]"
 
-#: elf32-m68hc1x.c:1430
+#: elf32-m68hc1x.c:1436
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [memÃ³ria=bank-model]"
 
-#: elf32-m68hc1x.c:1432
+#: elf32-m68hc1x.c:1438
 #, c-format
 msgid " [memory=flat]"
 msgstr " [memÃ³ria=flat]"
 
-#: elf32-m68hc1x.c:1435
+#: elf32-m68hc1x.c:1441
 #, c-format
 msgid " [XGATE RAM offsetting]"
 msgstr " [desvio XGATE RAM]"
 
-#: elf32-m68k.c:1216 elf32-m68k.c:1217 vms-alpha.c:7484 vms-alpha.c:7500
+#: elf32-m68k.c:1159 elf32-m68k.c:1167 elf32-ppc.c:3583 elf32-ppc.c:3591
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr "%pB usa vÃ­rgula rÃ­gida, %pB usa vÃ­rgula suave"
+
+#: elf32-m68k.c:1282 elf32-m68k.c:1283 vms-alpha.c:7664 vms-alpha.c:7680
 msgid "unknown"
 msgstr "desconhecido"
 
-#: elf32-m68k.c:1660
+#: elf32-m68k.c:1733
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
 msgstr "%pB: transporte GOT: nÃºmero de relocalizaÃ§Ãµes com desvio 8-bit > %d"
 
-#: elf32-m68k.c:1667
+#: elf32-m68k.c:1740
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
 msgstr "%pB: transporte GOT: nÃºmero de relocalizaÃ§Ãµes com desvio 8- ou 16-bit > %d"
@@ -2607,18 +2704,18 @@ msgstr "%pB e %pB sÃ£o para configuraÃ§Ã
 msgid "private flags = 0x%lx"
 msgstr "bandeiras privadas = 0x%lx"
 
-#: elf32-metag.c:1863
+#: elf32-metag.c:1859
 #, c-format
 msgid "%pB(%pA): multiple TLS models are not supported"
 msgstr "%pB(%pA): mÃºltiplos modelos TLS nÃ£o sÃ£o suportados"
 
-#: elf32-metag.c:1866
+#: elf32-metag.c:1862
 #, c-format
 msgid "%pB(%pA): shared library symbol %s encountered whilst performing a static link"
 msgstr "%pB(%pA): encontrado sÃ­mbolo de biblioteca partilhada %s ao realizar ligaÃ§Ã£o estÃ¡tica"
 
-#: elf32-microblaze.c:1544 elf32-tilepro.c:3155 elfxx-sparc.c:3538
-#: elfxx-tilegx.c:3543
+#: elf32-microblaze.c:1540 elf32-tilepro.c:3029 elfxx-sparc.c:3427
+#: elfxx-tilegx.c:3417
 #, c-format
 msgid "%pB: probably compiled without -fPIC?"
 msgstr "%pB: provavelmente compilado com -fPIC?"
@@ -2632,320 +2729,315 @@ msgstr "relocalizaÃ§Ã£o literal ocorre p
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr "relocalizaÃ§Ã£o relativa 32bits gp ocorre para um sÃ­mbolo externo"
 
-#: elf32-msp430.c:837 elf32-msp430.c:1151
+#: elf32-msp430.c:846 elf32-msp430.c:1160
 msgid "try enabling relaxation to avoid relocation truncations"
 msgstr "Tente activar relaxe para evitar truncamentos nas relocalizaÃ§Ãµes"
 
-#: elf32-msp430.c:1358
+#: elf32-msp430.c:1367
 msgid "internal error: branch/jump to an odd address detected"
 msgstr "erro interno: detectado ramo/salto para um endereÃ§o Ã­mpar"
 
-#: elf32-msp430.c:2357
+#: elf32-msp430.c:2532
 #, c-format
 msgid "warning: %pB: unknown MSPABI object attribute %d"
 msgstr "Aviso: %pB: atributo de objecto MSABI %d desconhecido"
 
-#: elf32-msp430.c:2456
+#: elf32-msp430.c:2633
 #, c-format
 msgid "error: %pB uses %s instructions but %pB uses %s"
 msgstr "erro: %pB usa instruÃ§Ãµes %s mas %pB usa %s"
 
-#: elf32-msp430.c:2468
+#: elf32-msp430.c:2645
 #, c-format
 msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
 msgstr "erro: %pB usa o modelo de cÃ³digo %s enquanto %pB usa o modelo de cÃ³digo %s"
 
-#: elf32-msp430.c:2480
+#: elf32-msp430.c:2658
 #, c-format
 msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
 msgstr "erro: %pB usa o modelo de cÃ³digo grande mas %pB usa instruÃ§Ãµes MSP430"
 
-#: elf32-msp430.c:2491
+#: elf32-msp430.c:2669
 #, c-format
 msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
 msgstr "erro: %pB usa o modelo de dados %s enquanto %pB usa o modelo de dados %s"
 
-#: elf32-msp430.c:2503
+#: elf32-msp430.c:2682
 #, c-format
 msgid "error: %pB uses the small code model but %pB uses the %s data model"
 msgstr "erro: %pB usa o modelo de cÃ³digo pequeno mas %pB usa o modelo de dados %s"
 
-#: elf32-msp430.c:2515
+#: elf32-msp430.c:2694
 #, c-format
 msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
 msgstr "erro: %pB usa o modelo de dados %s mas %pB sÃ³ usa instruÃ§Ãµes MSP430"
 
-#: elf32-nds32.c:3624
+#: elf32-msp430.c:2719
 #, c-format
-msgid "error: can't find symbol: %s"
-msgstr "erro: impossÃ­vel encontrar sÃ­mbolo: %s."
+msgid "error: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memory"
+msgstr "erro: %pB pode usar a regiÃ£o superior para dados, mas %pB assume que os dados estÃ£o exclusivamente na memÃ³ria inferior"
 
-#: elf32-nds32.c:5639
+#: elf32-nds32.c:3625
 #, c-format
-msgid "%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC"
-msgstr "%pB: relocalizaÃ§Ã£o %s contra \"%s\" nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC"
+msgid "error: can't find symbol: %s"
+msgstr "erro: impossÃ­vel encontrar sÃ­mbolo: %s."
 
-#: elf32-nds32.c:5669
+#: elf32-nds32.c:5528
 #, c-format
 msgid "%pB: warning: %s unsupported in shared mode"
 msgstr "%pB: aviso: %s nÃ£o suportado em modo partilhado"
 
-#: elf32-nds32.c:5795
+#: elf32-nds32.c:5654
 #, c-format
 msgid "%pB: warning: unaligned access to GOT entry"
 msgstr "%pB: aviso: acesso nÃ£o alinhado a entrada GOT."
 
-#: elf32-nds32.c:5836
+#: elf32-nds32.c:5695
 #, c-format
 msgid "%pB: warning: relocate SDA_BASE failed"
 msgstr "%pB: aviso: falha ao relocalizar SDA_BASE."
 
-#: elf32-nds32.c:5858
+#: elf32-nds32.c:5717
 #, c-format
 msgid "%pB(%pA): warning: unaligned small data access of type %d"
 msgstr "%pB(%pA): aviso: acesso nÃ£o alinhado a dados pequenos de tipo %d."
 
-#: elf32-nds32.c:6784
+#: elf32-nds32.c:6643
 #, c-format
 msgid "%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
 msgstr "%pB: tamanho do vector ISR trocado com mÃ³dulos anteriores, anterior %u-byte, actual %u-byte"
 
-#: elf32-nds32.c:6828
+#: elf32-nds32.c:6691
 #, c-format
 msgid "%pB: warning: endian mismatch with previous modules"
 msgstr "%pB: aviso: Endian trocado com mÃ³dulos anteriores."
 
-#: elf32-nds32.c:6842
+#: elf32-nds32.c:6705
 #, c-format
 msgid "%pB: warning: older version of object file encountered, please recompile with current tool chain"
 msgstr "%pB: aviso: encontradas versÃµes anteriores do ficheiro objecto, recompile com as ferramentas actuais."
 
-#: elf32-nds32.c:6930
+#: elf32-nds32.c:6793
 #, c-format
 msgid "%pB: error: ABI mismatch with previous modules"
 msgstr "%pB: erro: ABI trocado com mÃ³dulos anteriores."
 
-#: elf32-nds32.c:6940
+#: elf32-nds32.c:6803
 #, c-format
 msgid "%pB: error: instruction set mismatch with previous modules"
 msgstr "%pB: erro: conjunto de instruÃ§Ãµes trocado com mÃ³dulos anteriores."
 
-#: elf32-nds32.c:6967
+#: elf32-nds32.c:6830
 #, c-format
 msgid "%pB: warning: incompatible elf-versions %s and %s"
 msgstr "%pB: aviso: versÃµes elf %s e %s incompatÃ­veis."
 
-#: elf32-nds32.c:6998
+#: elf32-nds32.c:6861
 #, c-format
 msgid ": n1 instructions"
 msgstr ": instruÃ§Ãµes n1"
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:6864
 #, c-format
 msgid ": n1h instructions"
 msgstr ": instruÃ§Ãµes n1h"
 
-#: elf32-nds32.c:9462
+#: elf32-nds32.c:9316
 #, c-format
 msgid "%pB: error: search_nds32_elf_blank reports wrong node"
 msgstr "%pB: erro: search_nds32_elf_blank reporta nÃ³ errado"
 
-#: elf32-nds32.c:9722
+#: elf32-nds32.c:9576
 #, c-format
 msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
 msgstr "%pB: aviso: %s aponta para reloc nÃ£o reconhecida em %#<PRIx64>"
 
-#: elf32-nds32.c:12975
+#: elf32-nds32.c:12839
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
 msgstr "%pB: OMIT_FP aninhado em %pA."
 
-#: elf32-nds32.c:12994
+#: elf32-nds32.c:12858
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
 msgstr "%pB: OMIT_FP desirmanado em %pA."
 
-#: elf32-nds32.c:13275 reloc.c:8410
+#: elf32-nds32.c:13140 reloc.c:8470
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
 msgstr "%X%P: %pB(%pA): relocalizaÃ§Ã£o \"%R\" sai fora do intervalo\n"
 
-#: elf32-nios2.c:2930
+#: elf32-nios2.c:2937
 #, c-format
 msgid "error: %pB: big-endian R2 is not supported"
 msgstr "erro: %pB: Big-endian R2 nÃ£o Ã© suportado."
 
-#: elf32-nios2.c:3822
+#: elf32-nios2.c:3829
 #, c-format
-msgid "global pointer relative relocation at address 0x%08x when _gp not defined\n"
-msgstr "relocalizaÃ§Ã£o relativa de ponteiro global no endereÃ§o 0x%08x com _gp nÃ£o definido\n"
+msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+msgstr "relocalizaÃ§Ã£o relativa de ponteiro global no endereÃ§o %#<PRIx64> com _gp nÃ£o definido\n"
 
-#: elf32-nios2.c:3842
+#: elf32-nios2.c:3859
 #, c-format
-msgid "unable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because the offset (%d) is out of the allowed range, -32678 to 32767\n"
-msgstr "ImpossÃ­vel atingir %s (at 0x%08x) do ponteiro global (em 0x%08x) porque o desvio (%d) estÃ¡ fora do intervalo permitido, -32678 a 32767.\n"
+msgid "unable to reach %s (at %#<PRIx64>) from the global pointer (at %#<PRIx64>) because the offset (%<PRId64>) is out of the allowed range, -32678 to 32767\n"
+msgstr "ImpossÃ­vel atingir %s (em %#<PRIx64>) do ponteiro global (em %#<PRIx64>) porque o desvio (%<PRId64>) estÃ¡ fora do intervalo permitido, -32678 a 32767.\n"
 
-#: elf32-nios2.c:4495 elf32-pru.c:928
+#: elf32-nios2.c:4514 elf32-pru.c:931
 msgid "relocation out of range"
 msgstr "relocalizaÃ§Ã£o fora do intervalo"
 
-#: elf32-nios2.c:4505 elf32-pru.c:938 elf32-tic6x.c:2716
+#: elf32-nios2.c:4524 elf32-pru.c:941 elf32-tic6x.c:2657
 msgid "dangerous relocation"
 msgstr "relocalizaÃ§Ã£o perigosa"
 
-#: elf32-nios2.c:5378
+#: elf32-nios2.c:5367
 #, c-format
 msgid "dynamic variable `%s' is zero size"
 msgstr "variÃ¡vel dinÃ¢mica \"%s\" tem tamanho zero"
 
-#: elf32-or1k.c:1177
+#: elf32-or1k.c:1210
 #, c-format
 msgid "%pB: Cannot handle relocation value size of %d"
 msgstr "%pB: impossÃ­vel gerir valor de tamanho de relocalizaÃ§Ã£o de %d"
 
-#: elf32-or1k.c:1286
+#: elf32-or1k.c:1317
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr "%pB: tipo de relocalizaÃ§Ã£o %d desconhecido"
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1371
 #, c-format
 msgid "%pB: addend should be zero for plt relocations"
 msgstr "%pB: adenda devia ser zero para relocalizaÃ§Ãµes plt"
 
-#: elf32-or1k.c:1445
+#: elf32-or1k.c:1476
 #, c-format
 msgid "%pB: addend should be zero for got relocations"
 msgstr "%pB: adenda devia ser zero para relocalizaÃ§Ãµes got"
 
-#: elf32-or1k.c:1462
+#: elf32-or1k.c:1493
 #, c-format
 msgid "%pB: gotoff relocation against dynamic symbol %s"
 msgstr "%pB: relocalizaÃ§Ã£o gotoff contra sÃ­mbolo dinÃ¢mico %s"
 
-#: elf32-or1k.c:1479 elf64-alpha.c:4455 elf64-alpha.c:4599
+#: elf32-or1k.c:1510 elf64-alpha.c:4421 elf64-alpha.c:4565
 #, c-format
 msgid "%pB: pc-relative relocation against dynamic symbol %s"
 msgstr "%pB: relocalizaÃ§Ã£o pc-relative contra sÃ­mbolo dinÃ¢mico %s"
 
-#: elf32-or1k.c:1493
+#: elf32-or1k.c:1524
 #, c-format
 msgid "%pB: non-pic relocation against symbol %s"
 msgstr "%pB: relocalizaÃ§Ã£o nÃ£o-pic contra sÃ­mbolo %s"
 
-#: elf32-or1k.c:1577
+#: elf32-or1k.c:1608
 #, c-format
 msgid "%pB: support for local dynamic not implemented"
 msgstr "%pB: suporte a dinÃ¢mica local nÃ£o implementado"
 
-#: elf32-or1k.c:1729
+#: elf32-or1k.c:1787
 #, c-format
 msgid "%pB: will not resolve runtime TLS relocation"
 msgstr "%pB: nÃ£o resolve relocalizaÃ§Ã£o TLS em tempo de execuÃ§Ã£o"
 
-#: elf32-or1k.c:2074
+#: elf32-or1k.c:2120
 #, c-format
 msgid "%pB: bad relocation section name `%s'"
 msgstr "%pB: mau nome de secÃ§Ã£o de relocalizaÃ§Ã£o \"%s\""
 
-#: elf32-or1k.c:3218
+#: elf32-or1k.c:3181
 #, c-format
 msgid "%pB: %s flag mismatch with previous modules"
 msgstr "%pB: bandeira %strocada com mÃ³dulos anteriores"
 
-#: elf32-ppc.c:986
+#: elf32-ppc.c:989
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr "linker genÃ©rico nÃ£o pode gerir %s"
 
-#: elf32-ppc.c:1617
+#: elf32-ppc.c:1628
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr "secÃ§Ã£o %s corrupta em %pB"
 
-#: elf32-ppc.c:1637
+#: elf32-ppc.c:1647
 #, c-format
 msgid "unable to read in %s section from %pB"
 msgstr "impossÃ­vel ler na secÃ§Ã£o %s de %pB"
 
-#: elf32-ppc.c:1679
+#: elf32-ppc.c:1689
 #, c-format
 msgid "warning: unable to set size of %s section in %pB"
 msgstr "aviso: impossÃ­vel definir tamanho da secÃ§Ã£o %s em %pB"
 
-#: elf32-ppc.c:1729
+#: elf32-ppc.c:1738
 msgid "failed to allocate space for new APUinfo section"
 msgstr "falha ao alocar espaÃ§o para nova secÃ§Ã£o APUinfo."
 
-#: elf32-ppc.c:1748
+#: elf32-ppc.c:1757
 msgid "failed to compute new APUinfo section"
 msgstr "falha ao computar nova secÃ§Ã£o APUinfo."
 
-#: elf32-ppc.c:1751
+#: elf32-ppc.c:1760
 msgid "failed to install new APUinfo section"
 msgstr "falha ao instalar nova secÃ§Ã£o APUinfo."
 
-#: elf32-ppc.c:2853
+#: elf32-ppc.c:2861
 #, c-format
 msgid "%pB: relocation %s cannot be used when making a shared object"
 msgstr "%pB: relocalizaÃ§Ã£o %s nÃ£o pode ser usada ao fazer objecto partilhado"
 
-#: elf32-ppc.c:3587 elf32-ppc.c:3595
-#, c-format
-msgid "%pB uses hard float, %pB uses soft float"
-msgstr "%pB usa vÃ­rgula rÃ­gida, %pB usa vÃ­rgula suave"
-
-#: elf32-ppc.c:3603 elf32-ppc.c:3611
+#: elf32-ppc.c:3599 elf32-ppc.c:3607
 #, c-format
 msgid "%pB uses double-precision hard float, %pB uses single-precision hard float"
 msgstr "%pB usa vÃ­rgula rÃ­gida de precisÃ£o dupla, %pB usa vÃ­rgula rÃ­gida de precisÃ£o simples"
 
-#: elf32-ppc.c:3630 elf32-ppc.c:3638
+#: elf32-ppc.c:3629 elf32-ppc.c:3637
 #, c-format
 msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
 msgstr "%pB usa 64-bit long double, %pB usa 128-bit long double"
 
-#: elf32-ppc.c:3646 elf32-ppc.c:3654
+#: elf32-ppc.c:3645 elf32-ppc.c:3653
 #, c-format
 msgid "%pB uses IBM long double, %pB uses IEEE long double"
 msgstr "%pB usa IBM long double, %pB usa IEEE long double"
 
-#: elf32-ppc.c:3721 elf32-ppc.c:3730
+#: elf32-ppc.c:3720 elf32-ppc.c:3729
 #, c-format
 msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
 msgstr "%pB usa AltiVec vector ABI, %pB usa SPE vector ABI"
 
-#: elf32-ppc.c:3759 elf32-ppc.c:3768
+#: elf32-ppc.c:3758 elf32-ppc.c:3767
 #, c-format
 msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
 msgstr "%pB usa r3/r4 para pequenas devoluÃ§Ãµes de estrutura, %pB usa a memÃ³ria"
 
-#: elf32-ppc.c:3829
+#: elf32-ppc.c:3831
 #, c-format
 msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
 msgstr "%pB: compilado com -mrelocatable e ligado com mÃ³dulos compilados normalmente"
 
-#: elf32-ppc.c:3837
+#: elf32-ppc.c:3839
 #, c-format
 msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
 msgstr "%pB: compilado normalmente e ligado com mÃ³dulos compilados com -mrelocatable"
 
-#: elf32-ppc.c:3906
+#: elf32-ppc.c:3908
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
 msgstr "%pB(%pA+0x%lx): esperada relocalizaÃ§Ã£o estilo 16A em 0x%08x insn"
 
-#: elf32-ppc.c:3925
+#: elf32-ppc.c:3927
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
 msgstr "%pB(%pA+0x%lx): esperada relocalizaÃ§Ã£o estilo 16D em 0x%08x insn"
 
-#: elf32-ppc.c:4028
+#: elf32-ppc.c:4030
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr "bss-plt forÃ§ado devido a %pB"
 
-#: elf32-ppc.c:4030
+#: elf32-ppc.c:4032
 msgid "bss-plt forced by profiling"
 msgstr "bss-plt forÃ§ado pelo perfil"
 
@@ -2953,40 +3045,40 @@ msgstr "bss-plt forÃ§ado pelo perfil"
 #. could just mark this symbol to exclude it
 #. from tls optimization but it's safer to skip
 #. the entire optimization.
-#: elf32-ppc.c:4606 elf64-ppc.c:7724
+#: elf32-ppc.c:4606 elf64-ppc.c:8252
 #, c-format
 msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
 msgstr "argumento %H perdeu __tls_get_addr, optimizaÃ§Ã£o TLS desactivada\n"
 
-#: elf32-ppc.c:5577 elf32-sh.c:3078 elf32-tilepro.c:2339 elfxx-sparc.c:2534
-#: elfxx-tilegx.c:2579
+#: elf32-ppc.c:5513 elf32-sh.c:3023 elf32-tilepro.c:2256 elfxx-sparc.c:2453
+#: elfxx-tilegx.c:2496
 #, c-format
 msgid "%pB: dynamic relocation in read-only section `%pA'\n"
 msgstr "%pB: relocalizaÃ§Ã£o dinÃ¢mica em secÃ§Ã£o \"%pA\" sÃ³ de leitura\n"
 
-#: elf32-ppc.c:7457
+#: elf32-ppc.c:7356
 msgid "%P: %H: error: %s with unexpected instruction %x\n"
 msgstr "%P: %H: erro: %s com instruÃ§Ã£o inesperada %x\n"
 
-#: elf32-ppc.c:7494
+#: elf32-ppc.c:7393
 msgid "%H: fixup branch overflow\n"
 msgstr "%H: transporte em ramo fixup\n"
 
-#: elf32-ppc.c:7534 elf32-ppc.c:7570
+#: elf32-ppc.c:7433 elf32-ppc.c:7469
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr "%pB(%pA+%#<PRIx64>): erro: %s com instruÃ§Ã£o inesperada %#x"
 
-#: elf32-ppc.c:7634
+#: elf32-ppc.c:7533
 #, c-format
 msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
 msgstr "%X%H: bss-plt -fPIC ifunc %s nÃ£o suportada\n"
 
-#: elf32-ppc.c:7673 elf64-ppc.c:15220
+#: elf32-ppc.c:7572 elf64-ppc.c:16848
 msgid "%H: warning: %s unexpected insn %#x.\n"
 msgstr "%H: aviso: %s insn %#x inesperado.\n"
 
-#: elf32-ppc.c:7985
+#: elf32-ppc.c:7881
 #, c-format
 msgid "%H: non-zero addend on %s reloc against `%s'\n"
 msgstr "%H: adenda nÃ£o-zero em reloc %s contra \"%s\"\n"
@@ -2999,54 +3091,54 @@ msgstr "%H: adenda nÃ£o-zero em reloc %s
 #. local won't have the +32k reloc addend trick marking
 #. -fPIC code, so the linker won't know whether r30 is
 #. _GLOBAL_OFFSET_TABLE_ or pointing into a .got2 section.
-#: elf32-ppc.c:8017
+#: elf32-ppc.c:7913
 #, c-format
 msgid "%X%H: @local call to ifunc %s\n"
 msgstr "%X%H: chamada @local a ifunc %s\n"
 
-#: elf32-ppc.c:8187
+#: elf32-ppc.c:8091
 #, c-format
 msgid "%H: relocation %s for indirect function %s unsupported\n"
 msgstr "%H: relocalizaÃ§Ã£o %s para funÃ§Ã£o indirecta %s nÃ£o suportada\n"
 
-#: elf32-ppc.c:8515 elf32-ppc.c:8546 elf32-ppc.c:8637 elf32-ppc.c:8725
+#: elf32-ppc.c:8425 elf32-ppc.c:8456 elf32-ppc.c:8547 elf32-ppc.c:8643
 #, c-format
 msgid "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
 msgstr "%pB: o alvo (%s) de uma relocalizaÃ§Ã£o %s estÃ¡ na secÃ§Ã£o de saÃ­da errada (%s)"
 
-#: elf32-ppc.c:8855 elf32-ppc.c:8873
-msgid "%P: %H: %s relocation unsupported for bss-plt\n"
-msgstr "%P: %pB: relocalizaÃ§Ã£o %s ainda nÃ£o Ã© suportada para sÃ­mbolo %s\n"
+#: elf32-ppc.c:8773 elf32-ppc.c:8791
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
+msgstr "%X%P: %H: %s relocalizaÃ§Ã£o nÃ£o suportada para bss-plt\n"
 
-#: elf32-ppc.c:8954
+#: elf32-ppc.c:8872
 #, c-format
 msgid "%H: error: %s against `%s' not a multiple of %u\n"
 msgstr "%H: erro: %s contra \"%s\" nÃ£o Ã©  mÃºltiplo de %u\n"
 
-#: elf32-ppc.c:8983
+#: elf32-ppc.c:8901
 #, c-format
 msgid "%H: unresolvable %s relocation against symbol `%s'\n"
 msgstr "%H: relocalizaÃ§Ã£o %s insolÃºvel contra sÃ­mbolo \"%s\"\n"
 
-#: elf32-ppc.c:9064
+#: elf32-ppc.c:8982
 #, c-format
 msgid "%H: %s reloc against `%s': error %d\n"
 msgstr "%H: %s reloc contra \"%s\": erro %d\n"
 
-#: elf32-ppc.c:9959 elf64-ppc.c:15715
+#: elf32-ppc.c:9872
 msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n"
 msgstr "%X%P: relocalizaÃ§Ãµes de texto e funÃ§Ãµes indirectas GNU resultarÃ£o em segfault em tempo de execuÃ§Ã£o\n"
 
-#: elf32-ppc.c:9963 elf64-ppc.c:15719
+#: elf32-ppc.c:9876 elf64-ppc.c:17398
 msgid "%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime\n"
 msgstr "%P: aviso: relocalizaÃ§Ãµes de texto e funÃ§Ãµes indirectas GNU podem resultar em segfault em tempo de execuÃ§Ã£o\n"
 
-#: elf32-ppc.c:10008
+#: elf32-ppc.c:9921
 #, c-format
 msgid "%s not defined in linker created %pA"
 msgstr "%s nÃ£o definido em linker criado %pA"
 
-#: elf32-pru.c:579 elf32-pru.c:1472
+#: elf32-pru.c:582 elf32-pru.c:1475
 #, c-format
 msgid "error: %pB: old incompatible object file detected"
 msgstr "erro: %pB: detectado ficheiro objecto antigo incompatÃ­vel"
@@ -3063,7 +3155,7 @@ msgstr "Erro interno: sub-transporte de
 msgid "warning: RL78_SYM reloc with an unknown symbol"
 msgstr "Aviso: reloc RL78_SYM com sÃ­mbolo desconhecido"
 
-#: elf32-rl78.c:1084 elf32-rx.c:1456
+#: elf32-rl78.c:1084 elf32-rx.c:1461
 #, c-format
 msgid "%pB(%pA): error: call to undefined function '%s'"
 msgstr "%pB(%pA): erro: chamada a funÃ§Ã£o nÃ£o definida \"%s\""
@@ -3092,17 +3184,17 @@ msgstr "- %pB Ã© 64-bit, %pB nÃ£o Ã©"
 msgid " [64-bit doubles]"
 msgstr " [64-bit doubles]"
 
-#: elf32-rx.c:605
+#: elf32-rx.c:607
 #, c-format
 msgid "%pB:%pA: table entry %s outside table"
 msgstr "%pB:%pA: entrada de tabela %s fora da tabela"
 
-#: elf32-rx.c:612
+#: elf32-rx.c:614
 #, c-format
 msgid "%pB:%pA: table entry %s not word-aligned within table"
 msgstr "%pB:%pA: entrada de tabela %s nÃ£o alinhado dentro da tabela"
 
-#: elf32-rx.c:684
+#: elf32-rx.c:689
 #, c-format
 msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
 msgstr "%pB:%pA: aviso: reloc Red Hat obsoleta %s detectada contra: %s"
@@ -3111,59 +3203,59 @@ msgstr "%pB:%pA: aviso: reloc Red Hat ob
 #. an absolute address is being computed.  There are special cases
 #. for relocs against symbols that are known to be referenced in
 #. crt0.o before the PID base address register has been initialised.
-#: elf32-rx.c:704
+#: elf32-rx.c:709
 #, c-format
 msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
 msgstr "%pB(%pA): relocalizaÃ§Ã£o PID insegura %s em %#<PRIx64> (contra %s em %s)"
 
-#: elf32-rx.c:1288
+#: elf32-rx.c:1293
 msgid "warning: RX_SYM reloc with an unknown symbol"
 msgstr "Aviso: reloc RX_SYM com sÃ­mbolo desconhecido"
 
-#: elf32-rx.c:3167
+#: elf32-rx.c:3173
 #, c-format
 msgid "there is a conflict merging the ELF header flags from %pB"
 msgstr "HÃ¡ um conflito na uniÃ£o das bandeira do cabeÃ§alho ELF de %pB"
 
-#: elf32-rx.c:3170
+#: elf32-rx.c:3176
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr "  bandeiras fich. entrada: %s"
 
-#: elf32-rx.c:3172
+#: elf32-rx.c:3178
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr "  bandeiras fich. saÃ­da:   %s"
 
-#: elf32-rx.c:3792
+#: elf32-rx.c:3784
 #, c-format
 msgid "%pB:%pA: table %s missing corresponding %s"
 msgstr "%pB:%pA: tabela %s com correspondente %s em falta"
 
-#: elf32-rx.c:3800
+#: elf32-rx.c:3792
 #, c-format
 msgid "%pB:%pA: %s and %s must be in the same input section"
 msgstr "%pB:%pA: %s e %s tÃªm de estar na mesma secÃ§Ã£o de entrada"
 
-#: elf32-s390.c:2140 elf64-s390.c:2095
+#: elf32-s390.c:2011 elf64-s390.c:1965
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o invÃ¡lida para relocalizaÃ§Ã£o TLS %s"
 
-#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3754
+#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3800
 msgid "not enough GOT space for local GOT entries"
 msgstr "espaÃ§o GOT insuficiente para entradas GOT locais"
 
-#: elf32-score.c:2746
+#: elf32-score.c:2747
 msgid "address not word aligned"
 msgstr "endereÃ§o nÃ£o alinhado por word"
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2828 elf32-score7.c:2633
 #, c-format
 msgid "%pB: malformed reloc detected for section %pA"
 msgstr "%pB: reloc malformada detectada para secÃ§Ã£o %pA"
 
-#: elf32-score.c:2881 elf32-score7.c:2686
+#: elf32-score.c:2882 elf32-score7.c:2687
 #, c-format
 msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: reloc CALL15 em %#<PRIx64> nÃ£o contra sÃ­mbolo global"
@@ -3178,7 +3270,7 @@ msgstr " [pic]"
 msgid " [fix dep]"
 msgstr " [fix dep]"
 
-#: elf32-score.c:4050 elf32-score7.c:3855
+#: elf32-score.c:4054 elf32-score7.c:3859
 #, c-format
 msgid "%pB: warning: linking PIC files with non-PIC files"
 msgstr "%pB: aviso: a ligar ficheiros PIC com ficheiros nÃ£o-PIC"
@@ -3188,152 +3280,148 @@ msgstr "%pB: aviso: a ligar ficheiros PI
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
 msgstr "%pB: %#<PRIx64>: aviso: R_SH_USES aponta para insn 0x%x nÃ£o reconhecido"
 
-#: elf32-sh.c:3633
-msgid "unexpected STO_SH5_ISA32 on local symbol is not handled"
-msgstr "STO_SH5_ISA32 inesperado em sÃ­mbolo local nÃ£o Ã© gerido"
-
-#: elf32-sh.c:3880
+#: elf32-sh.c:3758
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
 msgstr "%pB: %#<PRIx64>: fatal: ramo alvo nÃ£o alinhado para relocalizaÃ§Ã£o relax-support"
 
-#: elf32-sh.c:3910 elf32-sh.c:3926
+#: elf32-sh.c:3788 elf32-sh.c:3804
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: fatal: relocalizaÃ§Ã£o %s desalinhada %#<PRIx64>"
 
-#: elf32-sh.c:3942
+#: elf32-sh.c:3820
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
 msgstr "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocalizaÃ§Ã£o %<PRId64> fora do intervalo -32..32"
 
-#: elf32-sh.c:3958
+#: elf32-sh.c:3836
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
 msgstr "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocalizaÃ§Ã£o %<PRId64> fora do intervalo -32..32"
 
-#: elf32-sh.c:4088 elf32-sh.c:4483
+#: elf32-sh.c:3966 elf32-sh.c:4361
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
 msgstr "%pB(%pA+%#<PRIx64>): impossÃ­vel emitir fixup a \"%s\" em secÃ§Ã£o sÃ³ de leitura"
 
-#: elf32-sh.c:4586
+#: elf32-sh.c:4464
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
 msgstr "%pB(%pA+%#<PRIx64>): relocalizaÃ§Ã£o %s contra sÃ­mbolo externo \"%s\""
 
-#: elf32-sh.c:4705
+#: elf32-sh.c:4583
 #, c-format
 msgid "%pB(%pA): offset in relocation for GD->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o GD->LE Ã© muito pequeno: %#<PRIx64>"
 
 #. The backslash is to prevent bogus trigraph detection.
-#: elf32-sh.c:4723
+#: elf32-sh.c:4601
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o inesperada %#04X (esperada 0xd4??)"
 
-#: elf32-sh.c:4731
+#: elf32-sh.c:4609
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o inesperada %#04X (esperada 0xc7??)"
 
-#: elf32-sh.c:4738
+#: elf32-sh.c:4616
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o inesperada %#04X (esperada 0xd1??)"
 
-#: elf32-sh.c:4745
+#: elf32-sh.c:4623
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o inesperada %#04X (esperada 0x310c)"
 
-#: elf32-sh.c:4752
+#: elf32-sh.c:4630
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o inesperada %#04X (esperada 0x410b)"
 
-#: elf32-sh.c:4759
+#: elf32-sh.c:4637
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o inesperada %#04X (esperada 0x34cc)"
 
-#: elf32-sh.c:4794
+#: elf32-sh.c:4672
 #, c-format
 msgid "%pB(%pA): offset in relocation for IE->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o IE->LE Ã© muito pequeno: %#<PRIx64>"
 
-#: elf32-sh.c:4812
+#: elf32-sh.c:4690
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o inesperada %#04X (esperada 0xd0??: mov.l)"
 
-#: elf32-sh.c:4821
+#: elf32-sh.c:4699
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o inesperada %#04X (esperada 0x0?12: stc)"
 
-#: elf32-sh.c:4828
+#: elf32-sh.c:4706
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
 msgstr "%pB(%pA+%#<PRIx64>): instruÃ§Ã£o inesperada %#04X (esperada 0x0?ce: mov.l)"
 
-#: elf32-sh.c:4943
+#: elf32-sh.c:4821
 #, c-format
 msgid "%pB(%pA): offset in relocation for GD->IE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o GD->IE Ã© muito pequeno: %#<PRIx64>"
 
-#: elf32-sh.c:5011
+#: elf32-sh.c:4889
 #, c-format
 msgid "%pB(%pA): offset in relocation for LD->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): desvio em relocalizaÃ§Ã£o para translacÃ§Ã£o LD->LE Ã© muito pequeno: %#<PRIx64>"
 
-#: elf32-sh.c:5139
+#: elf32-sh.c:5017
 #, c-format
 msgid "%X%C: relocation to \"%s\" references a different segment\n"
 msgstr "%X%C: relocalizaÃ§Ã£o para \"%s\" referencia um segmento diferente\n"
 
-#: elf32-sh.c:5146
+#: elf32-sh.c:5024
 #, c-format
 msgid "%C: warning: relocation to \"%s\" references a different segment\n"
 msgstr "%C: aviso: relocalizaÃ§Ã£o para \"%s\" referencia um segmento diferente\n"
 
-#: elf32-sh.c:5651 elf32-sh.c:5733
+#: elf32-sh.c:5483 elf32-sh.c:5565
 #, c-format
 msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
 msgstr "%pB: \"%s\" acedido como sÃ­mbolo normal e FDPIC em simultÃ¢neo"
 
-#: elf32-sh.c:5657 elf32-sh.c:5738
+#: elf32-sh.c:5489 elf32-sh.c:5570
 #, c-format
 msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
 msgstr "%pB: \"%s\" acedido como sÃ­mbolo local FDPIC e thread em simultÃ¢neo"
 
-#: elf32-sh.c:5688
+#: elf32-sh.c:5520
 #, c-format
 msgid "%pB: Function descriptor relocation with non-zero addend"
 msgstr "%pB: relocalizaÃ§Ã£o de descritor de funÃ§Ã£o com adenda nÃ£o-zero"
 
-#: elf32-sh.c:5895 elf64-alpha.c:4691
+#: elf32-sh.c:5727 elf64-alpha.c:4657
 #, c-format
 msgid "%pB: TLS local exec code cannot be linked into shared objects"
 msgstr "%pB: cÃ³digo exec TLS local nÃ£o pode ser ligado a objectos partilhados"
 
-#: elf32-sh.c:6010
+#: elf32-sh.c:5842
 #, c-format
 msgid "%pB: uses %s instructions while previous modules use %s instructions"
 msgstr "%pB: usa instruÃ§Ãµes %s enquanto os mÃ³dulos anteriores usam instruÃ§Ãµes %s"
 
-#: elf32-sh.c:6022
+#: elf32-sh.c:5854
 #, c-format
 msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
 msgstr "erro interno: uniÃ£o da arquitectura \"%s\" com a arquitectura \"%s\" produziu uma arquitectura desconhecida"
 
-#: elf32-sh.c:6059
+#: elf32-sh.c:5895
 #, c-format
 msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
 msgstr "%pB: usa instruÃ§Ãµes incompatÃ­veis com instruÃ§Ãµes usadas em mÃ³dulos anteriores"
 
-#: elf32-sh.c:6072
+#: elf32-sh.c:5908
 #, c-format
 msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
 msgstr "%pB: tentativa de misturar objectos FDPIC e nÃ£o-FDPIC"
@@ -3348,118 +3436,123 @@ msgstr "%pB: compilado para um sistema 6
 msgid "%pB: linking little endian files with big endian files"
 msgstr "%pB: a ligar ficheiros little endian com ficheiros big endian"
 
-#: elf32-spu.c:732
+#: elf32-sparc.c:157
+#, c-format
+msgid "%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr "%pB: valor de mÃ¡quina sparc \"%lu\" nÃ£o gerido detectado durante o processamento de escrita"
+
+#: elf32-spu.c:735
 msgid "%X%P: overlay section %pA does not start on a cache line\n"
 msgstr "%X%P: secÃ§Ã£o de sobreposiÃ§Ã£o %pA nÃ£o comeÃ§a numa linha de cache.\n"
 
-#: elf32-spu.c:740
+#: elf32-spu.c:743
 msgid "%X%P: overlay section %pA is larger than a cache line\n"
 msgstr "%X%P: secÃ§Ã£o de sobreposiÃ§Ã£o %pA Ã© maior que uma linha de cache.\n"
 
-#: elf32-spu.c:760
+#: elf32-spu.c:763
 msgid "%X%P: overlay section %pA is not in cache area\n"
 msgstr "%X%P: secÃ§Ã£o de sobreposiÃ§Ã£o %pA nÃ£o estÃ¡ numa Ã¡rea de cache.\n"
 
-#: elf32-spu.c:801
+#: elf32-spu.c:804
 #, c-format
 msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n"
 msgstr "%X%P: secÃ§Ãµes de sobreposiÃ§Ã£o %pA e %pA nÃ£o comeÃ§am no mesmo endereÃ§o.\n"
 
-#: elf32-spu.c:1027
+#: elf32-spu.c:1030
 #, c-format
 msgid "warning: call to non-function symbol %s defined in %pB"
 msgstr "aviso: chamada a sÃ­mbolo nÃ£o-funÃ§Ã£o %s definida em %pB"
 
-#: elf32-spu.c:1377
+#: elf32-spu.c:1380
 #, c-format
 msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
 msgstr "%pA:0x%v lrlive .brinfo (%u) difere da anÃ¡lise (%u)\n"
 
-#: elf32-spu.c:1909
+#: elf32-spu.c:1910
 #, c-format
 msgid "%pB is not allowed to define %s"
 msgstr "%pB nÃ£o tem permissÃ£o para definir %s"
 
-#: elf32-spu.c:1917
+#: elf32-spu.c:1918
 #, c-format
 msgid "you are not allowed to define %s in a script"
 msgstr "nÃ£o tem permissÃ£o para definir %s num script"
 
-#: elf32-spu.c:1951
+#: elf32-spu.c:1952
 #, c-format
 msgid "%s in overlay section"
 msgstr "%s em secÃ§Ã£o de sobreposiÃ§Ã£o"
 
-#: elf32-spu.c:1980
+#: elf32-spu.c:1981
 msgid "overlay stub relocation overflow"
 msgstr "transporte de relocalizaÃ§Ã£o fictÃ­cia de sobreposiÃ§Ã£o"
 
-#: elf32-spu.c:1989 elf64-ppc.c:13230
+#: elf32-spu.c:1990 elf64-ppc.c:14496
 msgid "stubs don't match calculated size"
 msgstr "fictÃ­cios nÃ£o correspondem ao tamanho calculado"
 
-#: elf32-spu.c:2572
+#: elf32-spu.c:2573
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr "aviso: %s sobrepÃµe-se a %s\n"
 
-#: elf32-spu.c:2588
+#: elf32-spu.c:2589
 #, c-format
 msgid "warning: %s exceeds section size\n"
 msgstr "aviso: %s excede o tamanho da secÃ§Ã£o\n"
 
-#: elf32-spu.c:2620
+#: elf32-spu.c:2621
 #, c-format
 msgid "%pA:0x%v not found in function table\n"
 msgstr "%pA:0x%v nÃ£o encontrado na tabela de funÃ§Ã£o\n"
 
-#: elf32-spu.c:2761
+#: elf32-spu.c:2762
 #, c-format
 msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
 msgstr "%pB(%pA+0x%v): chamada a secÃ§Ã£o nÃ£o-cÃ³digo %pB(%pA), anÃ¡lise incompleta\n"
 
-#: elf32-spu.c:3330
+#: elf32-spu.c:3328
 #, c-format
 msgid "stack analysis will ignore the call from %s to %s\n"
 msgstr "AnÃ¡lise de stack ignorarÃ¡ a chamada de %s a %s\n"
 
-#: elf32-spu.c:4027
+#: elf32-spu.c:4025
 msgid "  calls:\n"
 msgstr "  chamadas:\n"
 
-#: elf32-spu.c:4341
+#: elf32-spu.c:4340
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "%s duplicado em %s\n"
 
-#: elf32-spu.c:4345
+#: elf32-spu.c:4344
 #, c-format
 msgid "%s duplicated\n"
 msgstr "%s duplicado\n"
 
-#: elf32-spu.c:4352
+#: elf32-spu.c:4351
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr "desculpe, sem suporte para ficheiros objecto duplicados no script de auto-sobreposiÃ§Ã£o\n"
 
-#: elf32-spu.c:4394
+#: elf32-spu.c:4393
 #, c-format
 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n"
 msgstr "tamanho nÃ£o-sobreposiÃ§Ã£o de 0x%v mais o tamanho mÃ¡ximo de sobreposiÃ§Ã£o de 0x%v excede a capacidade local\n"
 
-#: elf32-spu.c:4550
+#: elf32-spu.c:4549
 #, c-format
 msgid "%pB:%pA%s exceeds overlay size\n"
 msgstr "%pB:%pA%s excede o tamanho de sobreposiÃ§Ã£o\n"
 
-#: elf32-spu.c:4691
+#: elf32-spu.c:4690
 msgid "%F%P: auto overlay error: %E\n"
 msgstr "%F%P: erro de auto-sobreposiÃ§Ã£o: %E\n"
 
-#: elf32-spu.c:4712
+#: elf32-spu.c:4711
 msgid "Stack size for call graph root nodes.\n"
 msgstr "Tamanho de stack para chamar nÃ³s raiz grÃ¡ficos.\n"
 
-#: elf32-spu.c:4713
+#: elf32-spu.c:4712
 msgid ""
 "\n"
 "Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
@@ -3467,19 +3560,19 @@ msgstr ""
 "\n"
 "Tamanho de stack para funÃ§Ãµes. AnotaÃ§Ãµes: \"*\" stack mÃ¡x, \"t\" chamada tail\n"
 
-#: elf32-spu.c:4723
+#: elf32-spu.c:4722
 msgid "Maximum stack required is 0x%v\n"
 msgstr "Stack mÃ¡ximo requerido Ã© 0x%v\n"
 
-#: elf32-spu.c:4742
+#: elf32-spu.c:4741
 msgid "%X%P: stack/lrlive analysis error: %E\n"
 msgstr "%X%P: erro de anÃ¡lise stack/lrlive: %E\n"
 
-#: elf32-spu.c:4745
+#: elf32-spu.c:4744
 msgid "%F%P: can not build overlay stubs: %E\n"
 msgstr "%F%P: impossÃ­vel construir fictÃ­cios de sobreposiÃ§Ã£o: %E\n"
 
-#: elf32-spu.c:4814
+#: elf32-spu.c:4813
 msgid "fatal error while creating .fixup"
 msgstr "erro fatal ao criar .fixup"
 
@@ -3488,275 +3581,274 @@ msgstr "erro fatal ao criar .fixup"
 msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr "%pB(%s+%#<PRIx64>): relocalizaÃ§Ã£o %s insolÃºvel comtra sÃ­mbolo \"%s\""
 
-#: elf32-tic6x.c:1628
+#: elf32-tic6x.c:1588
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr "aviso: a gerar uma biblioteca partilhada contendo cÃ³digo nÃ£o PIC"
 
-#: elf32-tic6x.c:1633
+#: elf32-tic6x.c:1593
 msgid "warning: generating a shared library containing non-PID code"
 msgstr "aviso: a gerar uma biblioteca partilhada contendo cÃ³digo nÃ£o PID"
 
-#: elf32-tic6x.c:2493
+#: elf32-tic6x.c:2434
 #, c-format
 msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
 msgstr "%pB: relocalizaÃ§Ã£o relativa a SB mas __c6xabi_DSBT_BASE nÃ£o definido"
 
-#: elf32-tic6x.c:3629
+#: elf32-tic6x.c:3511
 #, c-format
 msgid "%pB: error: unknown mandatory EABI object attribute %d"
 msgstr "%pB: erro: atributo de objecto EABI obrigatÃ³rio desconhecido %d"
 
-#: elf32-tic6x.c:3638
+#: elf32-tic6x.c:3520
 #, c-format
 msgid "%pB: warning: unknown EABI object attribute %d"
 msgstr "%pB: aviso: atributo de objecto EABI desconhecido %d"
 
-#: elf32-tic6x.c:3752 elf32-tic6x.c:3761
+#: elf32-tic6x.c:3638 elf32-tic6x.c:3647
 #, c-format
 msgid "error: %pB requires more stack alignment than %pB preserves"
 msgstr "erro: %pB requer mais alinhamento de stack do que %pB preserva"
 
-#: elf32-tic6x.c:3771 elf32-tic6x.c:3780
+#: elf32-tic6x.c:3657 elf32-tic6x.c:3666
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
 msgstr "erro: valor Tag_ABI_array_object_alignment desconhecido em %pB"
 
-#: elf32-tic6x.c:3789 elf32-tic6x.c:3798
+#: elf32-tic6x.c:3675 elf32-tic6x.c:3684
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
 msgstr "erro: valor Tag_ABI_array_object_align_expected desconhecido em %pB"
 
-#: elf32-tic6x.c:3807 elf32-tic6x.c:3815
+#: elf32-tic6x.c:3693 elf32-tic6x.c:3701
 #, c-format
 msgid "error: %pB requires more array alignment than %pB preserves"
 msgstr "erro: %pB requer mais alinhamento de matriz do que %pB preserva"
 
-#: elf32-tic6x.c:3838
+#: elf32-tic6x.c:3724
 #, c-format
 msgid "warning: %pB and %pB differ in wchar_t size"
 msgstr "aviso: %pB e %pB diferem em tamanho wchar_t"
 
-#: elf32-tic6x.c:3857
+#: elf32-tic6x.c:3743
 #, c-format
 msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
 msgstr "aviso: %pB e %pB diferem sobre se o cÃ³digo foi compilado para DSBT"
 
-#: elf32-tilepro.c:3761 elfxx-tilegx.c:4145 elfxx-x86.c:1432
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:9530
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2579
+#: elf32-tilepro.c:3635 elfxx-tilegx.c:4019 elfxx-x86.c:1393
+#: elfnn-aarch64.c:9704 elfnn-riscv.c:2522
 #, c-format
 msgid "discarded output section: `%pA'"
 msgstr "secÃ§Ã£o de saÃ­da descartada: \"%pA\""
 
-#: elf32-v850.c:153
+#: elf32-v850.c:152
 #, c-format
 msgid "variable `%s' cannot occupy in multiple small data regions"
 msgstr "VariÃ¡vel \"%s\" nÃ£o pode ocupar mÃºltiplas pequenas regiÃµes de dados"
 
-#: elf32-v850.c:156
+#: elf32-v850.c:155
 #, c-format
 msgid "variable `%s' can only be in one of the small, zero, and tiny data regions"
 msgstr "VariÃ¡vel \"%s\" sÃ³ pode estar numa das regiÃµes de dados pequena, zero e minÃºscula"
 
-#: elf32-v850.c:159
+#: elf32-v850.c:158
 #, c-format
 msgid "variable `%s' cannot be in both small and zero data regions simultaneously"
 msgstr "VariÃ¡vel \"%s\" nÃ£o pode estar nas regiÃµes de dados pequena e zero em simultÃ¢neo"
 
-#: elf32-v850.c:162
+#: elf32-v850.c:161
 #, c-format
 msgid "variable `%s' cannot be in both small and tiny data regions simultaneously"
 msgstr "VariÃ¡vel \"%s\" nÃ£o pode estar nas regiÃµes de dados pequena e minÃºscula em simultÃ¢neo"
 
-#: elf32-v850.c:165
+#: elf32-v850.c:164
 #, c-format
 msgid "variable `%s' cannot be in both zero and tiny data regions simultaneously"
 msgstr "VariÃ¡vel \"%s\" nÃ£o pode estar nas regiÃµes de dados zero e minÃºscula em simultÃ¢neo"
 
-#: elf32-v850.c:463
+#: elf32-v850.c:462
 msgid "failed to find previous HI16 reloc"
 msgstr "Falha ao procurar reloc HI16 anterior"
 
-#: elf32-v850.c:2303
+#: elf32-v850.c:2302
 msgid "could not locate special linker symbol __gp"
 msgstr "impossÃ­vel localizar sÃ­mbolo linker especial __gp"
 
-#: elf32-v850.c:2307
+#: elf32-v850.c:2306
 msgid "could not locate special linker symbol __ep"
 msgstr "impossÃ­vel localizar sÃ­mbolo linker especial __ep"
 
-#: elf32-v850.c:2311
+#: elf32-v850.c:2310
 msgid "could not locate special linker symbol __ctbp"
 msgstr "impossÃ­vel localizar sÃ­mbolo linker especial __ctbp"
 
-#: elf32-v850.c:2532
+#: elf32-v850.c:2531
 #, c-format
 msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"
 msgstr "erro: %pB precisa de alinhamento 8-byte mas %pB estÃ¡ definido para alinhamento 4-byte"
 
-#: elf32-v850.c:2548
+#: elf32-v850.c:2547
 #, c-format
 msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
 msgstr "erro: %pB usa doubles 64-bit mas %pB usa doubles 32-bit"
 
-#: elf32-v850.c:2563
+#: elf32-v850.c:2562
 #, c-format
 msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
 msgstr "erro: %pB usa FPU-3.0 mas %pB sÃ³ suporta FPU-2.0"
 
-#: elf32-v850.c:2595
+#: elf32-v850.c:2594
 #, c-format
 msgid " alignment of 8-byte entities: "
 msgstr " alinhamento de entidades 8-byte: "
 
-#: elf32-v850.c:2598
+#: elf32-v850.c:2597
 #, c-format
 msgid "4-byte"
 msgstr "4-byte"
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2598
 #, c-format
 msgid "8-byte"
 msgstr "8-byte"
 
-#: elf32-v850.c:2600 elf32-v850.c:2612
+#: elf32-v850.c:2599 elf32-v850.c:2611
 #, c-format
 msgid "not set"
 msgstr "nÃ£o definido"
 
-#: elf32-v850.c:2601 elf32-v850.c:2613 elf32-v850.c:2625 elf32-v850.c:2636
-#: elf32-v850.c:2647 elf32-v850.c:2658
+#: elf32-v850.c:2600 elf32-v850.c:2612 elf32-v850.c:2624 elf32-v850.c:2635
+#: elf32-v850.c:2646 elf32-v850.c:2657
 #, c-format
 msgid "unknown: %x"
 msgstr "desconhecido: %x"
 
-#: elf32-v850.c:2607
+#: elf32-v850.c:2606
 #, c-format
 msgid " size of doubles: "
 msgstr " tamanho de doubles: "
 
-#: elf32-v850.c:2610
+#: elf32-v850.c:2609
 #, c-format
 msgid "4-bytes"
 msgstr "4-bytes"
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2610
 #, c-format
 msgid "8-bytes"
 msgstr "8-bytes"
 
-#: elf32-v850.c:2619
+#: elf32-v850.c:2618
 #, c-format
 msgid " FPU support required: "
 msgstr " requerido suporte FPU: "
 
-#: elf32-v850.c:2622
+#: elf32-v850.c:2621
 #, c-format
 msgid "FPU-2.0"
 msgstr "FPU-2.0"
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2622
 #, c-format
 msgid "FPU-3.0"
 msgstr "FPU-3.0"
 
-#: elf32-v850.c:2624
+#: elf32-v850.c:2623
 #, c-format
 msgid "none"
 msgstr "nenhum"
 
-#: elf32-v850.c:2631
+#: elf32-v850.c:2630
 #, c-format
 msgid "SIMD use: "
 msgstr "uso SIMD: "
 
-#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#: elf32-v850.c:2633 elf32-v850.c:2644 elf32-v850.c:2655
 #, c-format
 msgid "yes"
 msgstr "sim"
 
-#: elf32-v850.c:2635 elf32-v850.c:2646 elf32-v850.c:2657
+#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
 #, c-format
 msgid "no"
 msgstr "nÃ£o"
 
-#: elf32-v850.c:2642
+#: elf32-v850.c:2641
 #, c-format
 msgid "CACHE use: "
 msgstr "uso CACHE: "
 
-#: elf32-v850.c:2653
+#: elf32-v850.c:2652
 #, c-format
 msgid "MMU use: "
 msgstr "uso MMU: "
 
-#: elf32-v850.c:2820 elf32-v850.c:2876
+#: elf32-v850.c:2819 elf32-v850.c:2875
 #, c-format
 msgid "%pB: architecture mismatch with previous modules"
 msgstr "%pB: troca de arquitectura com mÃ³dulos anteriores"
 
 #. xgettext:c-format.
-#: elf32-v850.c:2894
+#: elf32-v850.c:2893
 #, c-format
 msgid "private flags = %lx: "
 msgstr "bandeiras privadas = %lx: "
 
-#: elf32-v850.c:2899
+#: elf32-v850.c:2898
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "arquitectura V850 desconhecida"
 
-#: elf32-v850.c:2901
+#: elf32-v850.c:2900
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "arquitectura v850 E3"
 
-#: elf32-v850.c:2903 elf32-v850.c:2910
+#: elf32-v850.c:2902 elf32-v850.c:2909
 #, c-format
 msgid "v850 architecture"
 msgstr "arquitectura v850"
 
-#: elf32-v850.c:2911
+#: elf32-v850.c:2910
 #, c-format
 msgid "v850e architecture"
 msgstr "arquitectura v850e"
 
-#: elf32-v850.c:2912
+#: elf32-v850.c:2911
 #, c-format
 msgid "v850e1 architecture"
 msgstr "arquitectura v850e1"
 
-#: elf32-v850.c:2913
+#: elf32-v850.c:2912
 #, c-format
 msgid "v850e2 architecture"
 msgstr "arquitectura v850e2"
 
-#: elf32-v850.c:2914
+#: elf32-v850.c:2913
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "arquitectura v850e2v3"
 
-#: elf32-v850.c:2915
+#: elf32-v850.c:2914
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr "arquitectura v850e3v5"
 
-#: elf32-v850.c:3609 elf32-v850.c:3848
+#: elf32-v850.c:3612 elf32-v850.c:3851
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
 msgstr "%pB: %#<PRIx64>: aviso: %s aponta para insns nÃ£o reconhecido"
 
-#: elf32-v850.c:3619 elf32-v850.c:3858
+#: elf32-v850.c:3622 elf32-v850.c:3861
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
 msgstr "%pB: %#<PRIx64>: aviso: %s aponta para insn %#x nÃ£o reconhecido"
 
-#: elf32-v850.c:3665 elf32-v850.c:3893
+#: elf32-v850.c:3668 elf32-v850.c:3896
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
 msgstr "%pB: %#<PRIx64>: aviso: %s aponta para reloc nÃ£o reconhecida"
 
-#: elf32-v850.c:3705
+#: elf32-v850.c:3708
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: aviso: %s aponta para reloc nÃ£o reconhecida  %#<PRIx64>"
@@ -3781,22 +3873,22 @@ msgstr " [g-float]"
 msgid "%pB: warning: GOT addend of %<PRId64> to `%s' does not match previous GOT addend of %<PRId64>"
 msgstr "%pB: aviso: adenda GOT de %#<PRId64> a \"%s\" nÃ£o corresponde a adenda GOT de %#<PRId64> prÃ©via"
 
-#: elf32-vax.c:1446
+#: elf32-vax.c:1389
 #, c-format
 msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored"
 msgstr "%pB: aviso: adenda PLT de %#<PRId64> a \"%s\" da secÃ§Ã£o %pA ignorada"
 
-#: elf32-vax.c:1572
+#: elf32-vax.c:1515
 #, c-format
 msgid "%pB: warning: %s relocation against symbol `%s' from %pA section"
 msgstr "%pB: aviso: relocalizaÃ§Ã£o %s contra sÃ­mbolo \"%s\" da secÃ§Ã£o %pA"
 
-#: elf32-vax.c:1579
+#: elf32-vax.c:1522
 #, c-format
 msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section"
 msgstr "%pB: aviso: relocalizaÃ§Ã£o %s para %#<PRIx64> da secÃ§Ã£o %pA"
 
-#: elf32-visium.c:821
+#: elf32-visium.c:824
 #, c-format
 msgid "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
 msgstr "%pB: compilado %s -mtune=%s e ligado com mÃ³dulos compilados %s -mtune=%s"
@@ -3811,238 +3903,261 @@ msgstr "cpu=XGATE]"
 msgid "error reading cpu type from elf private data"
 msgstr "erro ao ler tipo de cpu de dados privados elf"
 
-#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2085 elf32-ia64.c:2353
-#: elf64-ia64.c:2353
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2074 elfnn-ia64.c:2343
 msgid "non-zero addend in @fptr reloc"
 msgstr "adenda nÃ£o-zero em reloc @fptr"
 
-#: elf32-xtensa.c:937
+#: elf32-xtensa.c:1001
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr "%pB(%pA): tabela de propriedade invÃ¡lida"
 
-#: elf32-xtensa.c:2675
+#: elf32-xtensa.c:2733
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): desvio de relocalizaÃ§Ã£o fora do intervalo (tamanho=%#<PRIx64>)"
 
-#: elf32-xtensa.c:2758 elf32-xtensa.c:2881
+#: elf32-xtensa.c:2816 elf32-xtensa.c:2939
 msgid "dynamic relocation in read-only section"
 msgstr "relocalizaÃ§Ã£o dinÃ¢mica em secÃ§Ã£o sÃ³ de leitura"
 
-#: elf32-xtensa.c:2858
+#: elf32-xtensa.c:2916
 msgid "TLS relocation invalid without dynamic sections"
 msgstr "relocalizaÃ§Ã£o TLS invÃ¡lida sem secÃ§Ãµes dinÃ¢micas"
 
-#: elf32-xtensa.c:3070
+#: elf32-xtensa.c:3126
 msgid "internal inconsistency in size of .got.loc section"
 msgstr "inconsistÃªncia interna no tamanho da secÃ§Ã£o .got.loc"
 
-#: elf32-xtensa.c:3377
+#: elf32-xtensa.c:3432
 #, c-format
 msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
 msgstr "%pB: tipo de mÃ¡quina incompatÃ­vel. SaÃ­da Ã© 0x%x. Entrada Ã© 0x%x"
 
-#: elf32-xtensa.c:4608 elf32-xtensa.c:4616
+#: elf32-xtensa.c:4726 elf32-xtensa.c:4734
 msgid "attempt to convert L32R/CALLX to CALL failed"
 msgstr "Tentativa de converter L32R/CALLX para CALL falhou"
 
-#: elf32-xtensa.c:6444 elf32-xtensa.c:6523 elf32-xtensa.c:7899
+#: elf32-xtensa.c:6559 elf32-xtensa.c:6638 elf32-xtensa.c:8064
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
 msgstr "%pB(%pA+%#<PRIx64>): impossÃ­vel descodificar instruÃ§Ã£o; possÃ­vel troca de configuraÃ§Ã£o"
 
-#: elf32-xtensa.c:7638
+#: elf32-xtensa.c:7805
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
 msgstr "%pB(%pA+%#<PRIx64>): impossÃ­vel descodificar instruÃ§Ã£o para relocalizaÃ§Ã£o XTENSA_ASM_SIMPLIFY; possÃ­vel troca de configuraÃ§Ã£o"
 
-#: elf32-xtensa.c:9493
+#: elf32-xtensa.c:9663
 msgid "invalid relocation address"
 msgstr "EndereÃ§o de relocalizaÃ§Ã£o invÃ¡lido"
 
-#: elf32-xtensa.c:9543
+#: elf32-xtensa.c:9754
 msgid "overflow after relaxation"
 msgstr "transporte apÃ³s relaxe"
 
-#: elf32-xtensa.c:10689
+#: elf32-xtensa.c:10900
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
 msgstr "%pB(%pA+%#<PRIx64>): fix inesperado para relocalizaÃ§Ã£o %s"
 
-#: elf64-alpha.c:472
+#: elf32-z80.c:473
+#, c-format
+msgid "%pB: unsupported bfd mach %#lx"
+msgstr "%pB: bfd mach %#lx nÃ£o suportado"
+
+#: elf32-z80.c:518
+#, c-format
+msgid "%pB: unsupported mach %#x"
+msgstr "%pB: mach %#x nÃ£o suportado"
+
+#: elf32-z80.c:546
+#, c-format
+msgid "%pB: unsupported arch %#x"
+msgstr "%pB: arch %#x nÃ£o suportado"
+
+#: elf64-alpha.c:473
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr "relocalizaÃ§Ã£o GPDISP nÃ£o encontrou instruÃ§Ãµes ldah e lda"
 
-#: elf64-alpha.c:2463
+#: elf64-alpha.c:1999 elf64-alpha.c:2694 elflink.c:14885
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr "%pB: relocalizaÃ§Ã£o dinÃ¢mica contra \"%pT\" em secÃ§Ã£o sÃ³ de leitura \"%pA\"\n"
+
+#: elf64-alpha.c:2451
 #, c-format
 msgid "%pB: .got subsegment exceeds 64K (size %d)"
 msgstr "%pB: sub-segmento .got excede 64K (tamanho %d)"
 
-#: elf64-alpha.c:3018 elf64-alpha.c:3214
+#: elf64-alpha.c:2989 elf64-alpha.c:3183
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
 msgstr "%pB: %pA+%#<PRIx64>: aviso: relocalizaÃ§Ã£o %s contra insn inesperado"
 
-#: elf64-alpha.c:4415 elf64-alpha.c:4428
+#: elf64-alpha.c:4381 elf64-alpha.c:4394
 #, c-format
 msgid "%pB: gp-relative relocation against dynamic symbol %s"
 msgstr "%pB: relocalizaÃ§Ã£o gp-relative contra sÃ­mbolo dinÃ¢mico %s"
 
-#: elf64-alpha.c:4484
+#: elf64-alpha.c:4450
 #, c-format
 msgid "%pB: change in gp: BRSGP %s"
 msgstr "%pB: alteraÃ§Ã£o em gp: BRSGP %s"
 
-#: elf64-alpha.c:4509 mach-o.c:615
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:499
+#: elf64-alpha.c:4475 mach-o.c:616 elfnn-riscv.c:485
 msgid "<unknown>"
 msgstr "<desconhecido>"
 
-#: elf64-alpha.c:4515
+#: elf64-alpha.c:4481
 #, c-format
 msgid "%pB: !samegp reloc against symbol without .prologue: %s"
 msgstr "%pB: reloc !samegp contra sÃ­mbolo sem .prologue: %s"
 
-#: elf64-alpha.c:4573
+#: elf64-alpha.c:4539
 #, c-format
 msgid "%pB: unhandled dynamic relocation against %s"
 msgstr "%pB: relocalizaÃ§Ã£o dinÃ¢mica contra %s nÃ£o gerida"
 
-#: elf64-alpha.c:4608
+#: elf64-alpha.c:4574
 #, c-format
 msgid "%pB: pc-relative relocation against undefined weak symbol %s"
 msgstr "%pB: relocalizaÃ§Ã£o pc-relative contra sÃ­mbolo fraco %s indefinido"
 
-#: elf64-alpha.c:4674
+#: elf64-alpha.c:4640
 #, c-format
 msgid "%pB: dtp-relative relocation against dynamic symbol %s"
 msgstr "%pB: relocalizaÃ§Ã£o dtp-relative contra sÃ­mbolo dinÃ¢mico %s"
 
-#: elf64-alpha.c:4699
+#: elf64-alpha.c:4665
 #, c-format
 msgid "%pB: tp-relative relocation against dynamic symbol %s"
 msgstr "%pB: relocalizaÃ§Ã£o tp-relative contra sÃ­mbolo dinÃ¢mico %s"
 
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:517
+msgid "internal error: relocation not supported"
+msgstr "erro interno: relocalizaÃ§Ã£o nÃ£o suportada"
+
 #: elf64-gen.c:71
 #, c-format
 msgid "%pB: Relocations in generic ELF (EM: %d)"
 msgstr "%pB: relocalizaÃ§Ãµes em ELF (EM: %d) genÃ©rico"
 
-#: elf64-hppa.c:2081
+#: elf64-hppa.c:2032
 #, c-format
 msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
 msgstr "entrada fictÃ­cia para %s nÃ£o pode carregar .plt, desvio dp = %#<PRId64>"
 
-#: elf64-hppa.c:3286
+#: elf64-hppa.c:3236
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
 msgstr "%pB(%pA+%#<PRIx64>): impossÃ­vel atingir %s"
 
-#: elf64-ia64-vms.c:598 elf32-ia64.c:636 elf64-ia64.c:636
+#: elf64-ia64-vms.c:598 elfnn-ia64.c:639
 #, c-format
 msgid "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or indirect branch"
 msgstr "%pB: impossÃ­vel relaxar br em %#<PRIx64> na secÃ§Ã£o \"%pA\". Por favor, use brl ou um ramo indirecto."
 
-#: elf64-ia64-vms.c:2040 elf32-ia64.c:2301 elf64-ia64.c:2301
+#: elf64-ia64-vms.c:2029 elfnn-ia64.c:2291
 msgid "@pltoff reloc against local symbol"
 msgstr "reloc @pltoff contra sÃ­mbolo local"
 
-#: elf64-ia64-vms.c:3292 elf32-ia64.c:3712 elf64-ia64.c:3712
+#: elf64-ia64-vms.c:3281 elfnn-ia64.c:3674
 #, c-format
 msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
 msgstr "%pB: transporte no segmento de dados curtos (%#<PRIx64> >= 0x400000)"
 
-#: elf64-ia64-vms.c:3302 elf32-ia64.c:3722 elf64-ia64.c:3722
+#: elf64-ia64-vms.c:3291 elfnn-ia64.c:3684
 #, c-format
 msgid "%pB: __gp does not cover short data segment"
 msgstr "%pB: __gp nÃ£o cobre o segmento de dados curtos"
 
-#: elf64-ia64-vms.c:3572 elf32-ia64.c:3996 elf64-ia64.c:3996
+#: elf64-ia64-vms.c:3561 elfnn-ia64.c:3958
 #, c-format
 msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
 msgstr "%pB: cÃ³digo nÃ£o-pic com relocalizaÃ§Ã£o imm contra sÃ­mbolo dinÃ¢mico \"%s\""
 
-#: elf64-ia64-vms.c:3636 elf32-ia64.c:4064 elf64-ia64.c:4064
+#: elf64-ia64-vms.c:3625 elfnn-ia64.c:4026
 #, c-format
 msgid "%pB: @gprel relocation against dynamic symbol %s"
 msgstr "%pB: relocalizaÃ§Ã£o @gprel contra sÃ­mbolo dinÃ¢mico %s"
 
-#: elf64-ia64-vms.c:3695 elf32-ia64.c:4127 elf64-ia64.c:4127
+#: elf64-ia64-vms.c:3684 elfnn-ia64.c:4089
 #, c-format
 msgid "%pB: linking non-pic code in a position independent executable"
 msgstr "%pB: a ligar cÃ³digo nÃ£o-pic num executÃ¡vel de posiÃ§Ã£o independente"
 
-#: elf64-ia64-vms.c:3797 elf32-ia64.c:4265 elf64-ia64.c:4265
+#: elf64-ia64-vms.c:3786 elfnn-ia64.c:4227
 #, c-format
 msgid "%pB: @internal branch to dynamic symbol %s"
 msgstr "%pB: ramo @internal para sÃ­mbolo dinÃ¢mico %s"
 
-#: elf64-ia64-vms.c:3800 elf32-ia64.c:4268 elf64-ia64.c:4268
+#: elf64-ia64-vms.c:3789 elfnn-ia64.c:4230
 #, c-format
 msgid "%pB: speculation fixup to dynamic symbol %s"
 msgstr "%pB: fixup de especulaÃ§Ã£o para sÃ­mbolo dinÃ¢mico %s"
 
-#: elf64-ia64-vms.c:3803 elf32-ia64.c:4271 elf64-ia64.c:4271
+#: elf64-ia64-vms.c:3792 elfnn-ia64.c:4233
 #, c-format
 msgid "%pB: @pcrel relocation against dynamic symbol %s"
 msgstr "%pB: relocalizaÃ§Ã£o @pcrel contra sÃ­mbolo dinÃ¢mico %s"
 
-#: elf64-ia64-vms.c:3927 elf32-ia64.c:4468 elf64-ia64.c:4468
+#: elf64-ia64-vms.c:3916 elfnn-ia64.c:4430
 msgid "unsupported reloc"
 msgstr "reloc nÃ£o suportado"
 
-#: elf64-ia64-vms.c:3964 elf32-ia64.c:4506 elf64-ia64.c:4506
+#: elf64-ia64-vms.c:3953 elfnn-ia64.c:4468
 #, c-format
 msgid "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in section `%pA'."
 msgstr "%pB: secÃ§Ã£o TLS em falta para relocalizaÃ§Ã£o %s contra \"%s\" em %#<PRIx64> na secÃ§Ã£o \"%pA\"."
 
-#: elf64-ia64-vms.c:3981 elf32-ia64.c:4523 elf64-ia64.c:4523
+#: elf64-ia64-vms.c:3970 elfnn-ia64.c:4485
 #, c-format
 msgid "%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size %#<PRIx64> (> 0x1000000)."
 msgstr "%pB: impossÃ­vel relaxar br (%s) para \"%s\" em %#<PRIx64> na secÃ§Ã£o \"%pA\" com tamanho %#<PRIx64> (> 0x1000000)."
 
-#: elf64-ia64-vms.c:4273 elf32-ia64.c:4781 elf64-ia64.c:4781
+#: elf64-ia64-vms.c:4266 elfnn-ia64.c:4746
 #, c-format
 msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
 msgstr "%pB: a ligar trap-on-NULL-dereference com ficheiros nÃ£o-trapping"
 
-#: elf64-ia64-vms.c:4282 elf32-ia64.c:4790 elf64-ia64.c:4790
+#: elf64-ia64-vms.c:4275 elfnn-ia64.c:4755
 #, c-format
 msgid "%pB: linking big-endian files with little-endian files"
 msgstr "%pB: a ligar ficheiros big-endian com ficheiros little-endian"
 
-#: elf64-ia64-vms.c:4291 elf32-ia64.c:4799 elf64-ia64.c:4799
+#: elf64-ia64-vms.c:4284 elfnn-ia64.c:4764
 #, c-format
 msgid "%pB: linking 64-bit files with 32-bit files"
 msgstr "%pB: a ligar ficheiros 64-bit com ficheiros 32-bit"
 
-#: elf64-ia64-vms.c:4300 elf32-ia64.c:4808 elf64-ia64.c:4808
+#: elf64-ia64-vms.c:4293 elfnn-ia64.c:4773
 #, c-format
 msgid "%pB: linking constant-gp files with non-constant-gp files"
 msgstr "%pB: a ligar ficheiros constant-gp com ficheiros nÃ£o constant-gp"
 
-#: elf64-ia64-vms.c:4310 elf32-ia64.c:4818 elf64-ia64.c:4818
+#: elf64-ia64-vms.c:4303 elfnn-ia64.c:4783
 #, c-format
 msgid "%pB: linking auto-pic files with non-auto-pic files"
 msgstr "%pB: a ligar ficheiros auto-pic com ficheiro nÃ£o auto-pic"
 
-#: elf64-ia64-vms.c:5153 elflink.c:4894
+#: elf64-ia64-vms.c:5150 elflink.c:5072
 #, c-format
 msgid "warning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pA"
 msgstr "Aviso: alihamento %u de sÃ­mbolo comum \"%s\" em %pB Ã© maior que o alinhamento (%u) da sua secÃ§Ã£o %pA"
 
-#: elf64-ia64-vms.c:5160 elflink.c:4901
+#: elf64-ia64-vms.c:5157 elflink.c:5079
 #, c-format
 msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
 msgstr "Aviso: alinhamento %u do sÃ­mbolo \"%s\" em %pB Ã© menor que %u em %pB"
 
-#: elf64-ia64-vms.c:5176 elflink.c:4918
+#: elf64-ia64-vms.c:5173 elflink.c:5096
 #, c-format
 msgid "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %pB"
 msgstr "Aviso: tamanho do sÃ­mbolo \"%s\" mudou de %<PRIu64> em %pB para %<PRIu64> em %pB"
 
-#: elf64-mips.c:4098
+#: elf64-mips.c:4095
 #, c-format
 msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
 msgstr "%pB(%pA): relocalizaÃ§Ã£o %#<PRIu64> tem Ã­ndice de sÃ­mbolos invÃ¡lido %ld"
@@ -4095,159 +4210,172 @@ msgstr "%pB: relocalizaÃ§Ã£o de registo
 msgid "%pB: directive LOCAL valid only with a register or absolute value"
 msgstr "%pB: directiva LOCAL sÃ³ Ã© vÃ¡lida com um registo ou um valor absoluto"
 
-#: elf64-mmix.c:1744
+#: elf64-mmix.c:1742
 #, c-format
 msgid "%pB: LOCAL directive: register $%<PRId64> is not a local register; first global register is $%<PRId64>"
 msgstr "%pB: directiva LOCAL: registo $%#<PRId64> nÃ£o Ã© um registo local. O primeiro registo global Ã© $%#<PRId64>"
 
-#: elf64-mmix.c:2173
+#: elf64-mmix.c:2167
 #, c-format
 msgid "%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file"
 msgstr "%pB: Erro: definiÃ§Ã£o mÃºltipla de \"%s\"; inÃ­cio de %s estÃ¡ definido num ficheiro previamente ligado"
 
-#: elf64-mmix.c:2228
+#: elf64-mmix.c:2222
 msgid "register section has contents\n"
 msgstr "SecÃ§Ã£o de registo tem conteÃºdo\n"
 
-#: elf64-mmix.c:2418
+#: elf64-mmix.c:2412
 #, c-format
 msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
 msgstr ""
 "InconsistÃªncia interna: resta %lu != mÃ¡x %lu.\n"
 "  Por favor, reporte este erro."
 
-#: elf64-ppc.c:3827
+#: elf64-ppc.c:1342
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "aviso: deve ser usado %s, em vez de %s"
+
+#: elf64-ppc.c:4101
 #, c-format
 msgid "symbol '%s' has invalid st_other for ABI version 1"
 msgstr "sÃ­mbolo \"%s\" tem st_other invÃ¡lido para a versÃ£o ABI 1"
 
-#: elf64-ppc.c:4002
+#: elf64-ppc.c:4281
 #, c-format
 msgid "%pB .opd not allowed in ABI version %d"
 msgstr "%pB .opd nÃ£o permitida na versÃ£o ABI %d"
 
-#: elf64-ppc.c:4523
+#: elf64-ppc.c:4852
 #, c-format
 msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
 msgstr "%H: %s reloc nÃ£o suportada em bibliotecas partilhadas e PIEs.\n"
 
-#: elf64-ppc.c:4919
+#: elf64-ppc.c:5260
 #, c-format
 msgid "%pB uses unknown e_flags 0x%lx"
 msgstr "%pB usa e_flags 0x%lx desconhecido"
 
-#: elf64-ppc.c:4927
+#: elf64-ppc.c:5268
 #, c-format
 msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
 msgstr "%pB: versÃ£o ABI %ld nÃ£o Ã© compatÃ­vel com a saÃ­da da versÃ£o ABI %ld"
 
-#: elf64-ppc.c:4954
+#: elf64-ppc.c:5295
 #, c-format
 msgid " [abiv%ld]"
 msgstr " [abiv%ld"
 
-#: elf64-ppc.c:6145
+#: elf64-ppc.c:6574
 msgid "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
 msgstr "%P: cÃ³pia da reloc contra \"%pT\" requer ligaÃ§Ã£o lazy plt; evite definir LD_BIND_NOW=1 ou actualize o gcc\n"
 
-#: elf64-ppc.c:6417
+#: elf64-ppc.c:6841
 #, c-format
 msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
 msgstr "%pB: sÃ­mbolo indefinido em relocalizaÃ§Ã£o R_PPC64_TOCSAVE"
 
-#: elf64-ppc.c:6644
+#: elf64-ppc.c:7089
 #, c-format
 msgid "dynreloc miscount for %pB, section %pA"
 msgstr "erro de contagem dynreloc para %pB, secÃ§Ã£o %pA"
 
-#: elf64-ppc.c:6733
+#: elf64-ppc.c:7178
 #, c-format
 msgid "%pB: .opd is not a regular array of opd entries"
 msgstr "%pB: .opd nÃ£o Ã© uma matriz normal de entradas opd"
 
-#: elf64-ppc.c:6743
+#: elf64-ppc.c:7188
 #, c-format
 msgid "%pB: unexpected reloc type %u in .opd section"
 msgstr "%pB: tipo de reloc inesperado %u em secÃ§Ã£o .opd"
 
-#: elf64-ppc.c:6765
+#: elf64-ppc.c:7210
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr "%pB: sÃ­mbolo indefinido \"%s\" em secÃ§Ã£o .opd"
 
-#: elf64-ppc.c:7249
+#: elf64-ppc.c:7697
 msgid "warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations"
 msgstr "aviso: --plt-localentry Ã© particularmente perigosa sem suporte ld.so para detectar violaÃ§Ãµes ABI."
 
-#: elf64-ppc.c:7499
+#: elf64-ppc.c:8017
 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
 msgstr "%H __tls_get_addr perdeu arg, optimizaÃ§Ã£o TLS desactivada\n"
 
-#: elf64-ppc.c:7876 elf64-ppc.c:8513
+#: elf64-ppc.c:8417 elf64-ppc.c:9130
 #, c-format
 msgid "%s defined on removed toc entry"
 msgstr "%s defenido em entrada toc removida"
 
-#: elf64-ppc.c:8241
-#, c-format
-msgid "%H: toc optimization is not supported for %s instruction\n"
-msgstr "%H: optimizaÃ§Ã£o toc nÃ£o Ã© suportada para instreuÃ§Ãµes %s.\n"
-
-#: elf64-ppc.c:8470
+#: elf64-ppc.c:9087
 #, c-format
 msgid "%H: %s references optimized away TOC entry\n"
 msgstr "%H: %s referencia entrada TOC optimizada\n"
 
-#: elf64-ppc.c:9301
+#: elf64-ppc.c:9308
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr "%H: optimizaÃ§Ã£o got/toc nÃ£o suportada para a instruÃ§Ã£o %s\n"
+
+#: elf64-ppc.c:10135
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr "aviso: a descartar secÃ§Ã£o dinÃ¢mica %s"
 
-#: elf64-ppc.c:10215
+#: elf64-ppc.c:11277
 msgid "%P: cannot find opd entry toc for `%pT'\n"
 msgstr "%P: impossÃ­vel encontrar entrada opd toc para \"%T\"\n"
 
-#: elf64-ppc.c:10303
+#: elf64-ppc.c:11323 elf64-ppc.c:11867
+msgid "%F%P: Could not assign group %pA target %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: impossÃ­vel atribuir o grupo %pA, alvo %pA a uma secÃ§Ã£o de saÃ­da. Repita sem --enable-non-contiguous-regions.\n"
+
+#: elf64-ppc.c:11385
 #, c-format
 msgid "long branch stub `%s' offset overflow"
 msgstr "transporte em desvio \"%s\" em fictÃ­cio de ramo longo"
 
-#: elf64-ppc.c:10330
+#: elf64-ppc.c:11412
 #, c-format
 msgid "can't find branch stub `%s'"
 msgstr "impossÃ­vel encontrar fictÃ­cio de ramo \"%s\""
 
-#: elf64-ppc.c:10394 elf64-ppc.c:10642 elf64-ppc.c:12791
+#: elf64-ppc.c:11476 elf64-ppc.c:11743 elf64-ppc.c:13972
 #, c-format
 msgid "%P: linkage table error against `%pT'\n"
 msgstr "%P: erro na tabela de ligaÃ§Ã£o contra \"%T\"\n"
 
-#: elf64-ppc.c:10820
+#: elf64-ppc.c:11939
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr "impossÃ­vel construir fictÃ­cio de ramo \"%s\""
 
-#: elf64-ppc.c:11779
+#: elf64-ppc.c:12920
 #, c-format
 msgid "%pB section %pA exceeds stub group size"
 msgstr "%pB secÃ§Ã£o %pA excede tamanho de grupo de fictÃ­cio"
 
-#: elf64-ppc.c:13189 elf64-ppc.c:13208
+#: elf64-ppc.c:14153
+msgid "__tls_get_addr call offset overflow"
+msgstr "transporte de desvio de chamada __tls_get_addr"
+
+#: elf64-ppc.c:14455 elf64-ppc.c:14474
 #, c-format
 msgid "%s offset too large for .eh_frame sdata4 encoding"
 msgstr "desvio %s muito grande para codificaÃ§Ã£o .eh_frame sdata4"
 
-#: elf64-ppc.c:13244
+#: elf64-ppc.c:14506
 #, c-format
 msgid "linker stubs in %u group\n"
 msgid_plural "linker stubs in %u groups\n"
 msgstr[0] "fictÃ­cios de linker em grupo %u\n"
 msgstr[1] "fictÃ­cios de linker em grupos %u\n"
 
-#: elf64-ppc.c:13248
+#: elf64-ppc.c:14513
 #, c-format
 msgid ""
-"  branch         %lu\n"
+"%s  branch         %lu\n"
 "  branch toc adj %lu\n"
 "  branch notoc   %lu\n"
 "  branch both    %lu\n"
@@ -4261,7 +4389,7 @@ msgid ""
 "  plt call both  %lu\n"
 "  global entry   %lu"
 msgstr ""
-"  branch         %lu\n"
+"%s  branch         %lu\n"
 "  branch toc adj %lu\n"
 "  branch notoc   %lu\n"
 "  branch both    %lu\n"
@@ -4275,178 +4403,185 @@ msgstr ""
 "  plt call both  %lu\n"
 "  global entry   %lu"
 
-#: elf64-ppc.c:13583
+#: elf64-ppc.c:14913
 #, c-format
 msgid "%H: %s used with TLS symbol `%pT'\n"
 msgstr "%H: %s usado com sÃ­mbolo TLS \"%T\"\n"
 
-#: elf64-ppc.c:13585
+#: elf64-ppc.c:14915
 #, c-format
 msgid "%H: %s used with non-TLS symbol `%pT'\n"
 msgstr "%H: %s usado com sÃ­mbolo nÃ£o-TLS \"%T\"\n"
 
-#: elf64-ppc.c:14245
+#: elf64-ppc.c:15670
 #, c-format
 msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
 msgstr "%H: chamada a \"%pT\" com nop em falta, impossÃ­vel restaurar toc; (plt call stub)\n"
 
-#: elf64-ppc.c:14251
+#: elf64-ppc.c:15676
 #, c-format
 msgid "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
 msgstr "%H: chamada a \"%pT\" com nop em falta, impossÃ­vel restaurar toc; (toc save/adjust stub)\n"
 
-#: elf64-ppc.c:14985
+#: elf64-ppc.c:16564
 #, c-format
 msgid "%H: %s for indirect function `%pT' unsupported\n"
 msgstr "%H: %s para funÃ§Ã£o indirecta \"%T\" nÃ£o suportado\n"
 
-#: elf64-ppc.c:15097
+#: elf64-ppc.c:16649
+#, c-format
+msgid "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr "%X%P: %pB: %s contra %pT nÃ£o Ã© suportado por glibc como relocalizaÃ§Ã£o dinÃ¢mica\n"
+
+#: elf64-ppc.c:16704
 #, c-format
 msgid "%P: %pB: %s is not supported for `%pT'\n"
 msgstr "%P: %pB: %s nÃ£o Ã© suportado para \"%T\"\n"
 
-#: elf64-ppc.c:15326
+#: elf64-ppc.c:16963
 #, c-format
 msgid "%H: error: %s not a multiple of %u\n"
 msgstr "%H: erro: %s nÃ£o Ã© mÃºltiplo de %u\n"
 
-#: elf64-ppc.c:15349
+#: elf64-ppc.c:16986
 #, c-format
 msgid "%H: unresolvable %s against `%pT'\n"
 msgstr "%H: %s insolÃºvel contra \"%T\"\n"
 
-#: elf64-ppc.c:15446
+#: elf64-ppc.c:17131
 #, c-format
 msgid "%H: %s against `%pT': error %d\n"
 msgstr "%H: %s contra \"%T\": erro %d\n"
 
-#: elf64-s390.c:2576
+#: elf64-s390.c:2446
 #, c-format
 msgid "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)"
 msgstr "%pB: \"%s\" reloc nÃ£o-PLT para sÃ­mbolo definido em biblioteca partilhada e acedido a partir de executÃ¡vel (reconstrua o ficheiro com -fPIC ?)"
 
-#: elf64-sparc.c:109 elfcode.h:1471
-#, c-format
-msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
-msgstr "%pB(%pA): relocalizaÃ§Ã£o %d tem Ã­ndice de sÃ­mbolos invÃ¡lido %ld"
-
-#: elf64-sparc.c:467
+#: elf64-sparc.c:478
 #, c-format
 msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
 msgstr "%pB: sÃ³ registos %%g[2367] podem ser declarados usando STT_REGISTER"
 
-#: elf64-sparc.c:488
+#: elf64-sparc.c:499
 #, c-format
 msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
 msgstr "Registo %%g%d usa incompatibilidade: %s em %pB, previamente %s em %pB"
 
-#: elf64-sparc.c:512
+#: elf64-sparc.c:523
 #, c-format
 msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
 msgstr "SÃ­mbolo \"%s\" tem tipos diferentes: REGISTER em %pB, previamente %s em %pB"
 
-#: elf64-sparc.c:559
+#: elf64-sparc.c:570
 #, c-format
 msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
 msgstr "SÃ­mbolo \"%s\" tem tipos diferentes: %s em %pB, previamente REGISTER em %pB"
 
-#: elf64-sparc.c:691
+#: elf64-sparc.c:702
 #, c-format
 msgid "%pB: linking UltraSPARC specific with HAL specific code"
 msgstr "%pB: a ligar especÃ­fico UltraSPARC com cÃ³digo especÃ­fico HAL"
 
-#: elf64-x86-64.c:1412
+#: elf64-x86-64.c:1417
 msgid "hidden symbol "
 msgstr "sÃ­mbolo oculto "
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1420
 msgid "internal symbol "
 msgstr "sÃ­mbolo interno "
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1423 elf64-x86-64.c:1427
 msgid "protected symbol "
 msgstr "sÃ­mbolo protegido "
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1429
 msgid "symbol "
 msgstr "sÃ­mbolo "
 
-#: elf64-x86-64.c:1425 elf64-x86-64.c:1435
-msgid "; recompile with -fPIC"
-msgstr "; recompile com -fPIC"
-
-#: elf64-x86-64.c:1430
+#: elf64-x86-64.c:1435
 msgid "undefined "
 msgstr "indefinido"
 
-#: elf64-x86-64.c:1439
+#: elf64-x86-64.c:1445
 msgid "a shared object"
 msgstr "um objecto partilhado"
 
-#: elf64-x86-64.c:1441
+#: elf64-x86-64.c:1447
+msgid "; recompile with -fPIC"
+msgstr "; recompile com -fPIC"
+
+#: elf64-x86-64.c:1452
 msgid "a PIE object"
 msgstr "um objecto PIE"
 
-#: elf64-x86-64.c:1443
+#: elf64-x86-64.c:1454
 msgid "a PDE object"
 msgstr "um objecto PDE"
 
-#: elf64-x86-64.c:1446
+#: elf64-x86-64.c:1456
+msgid "; recompile with -fPIE"
+msgstr "; recompile com -fPIE"
+
+#: elf64-x86-64.c:1460
 #, c-format
 msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
 msgstr "%pB: relocalizaÃ§Ã£o %s contra %s%s\"%s\" nÃ£o pode ser usada ao fazer %s%s"
 
-#: elf64-x86-64.c:1931
+#: elf64-x86-64.c:1968
 #, c-format
 msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
 msgstr "%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo \"%s\" nÃ£o Ã© suportada em modo x32"
 
-#: elf64-x86-64.c:2073
+#: elf64-x86-64.c:2124
 #, c-format
 msgid "%pB: '%s' accessed both as normal and thread local symbol"
 msgstr "%pB: \"%s\" acedido como sÃ­mbolo local normal e thread em simultÃ¢neo"
 
-#: elf64-x86-64.c:2696
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5302
+#: elf64-x86-64.c:2747 elfnn-aarch64.c:5546
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %<PRId64>"
 msgstr "%pB: relocalizaÃ§Ã£o %s contra STT_GNU_IFUNC sÃ­mbolo \"%s\" tem adenda nÃ£o-zero: %#<PRId64>"
 
-#: elf64-x86-64.c:2934
+#: elf64-x86-64.c:2992
 #, c-format
 msgid "%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object"
 msgstr "%pB: relocalizaÃ§Ã£o R_X86_64_GOTOFF64 contra  %s \"%s\" indefinido nÃ£o pode ser usado ao fazer um objecto partilhado"
 
-#: elf64-x86-64.c:2948
+#: elf64-x86-64.c:3006
 #, c-format
 msgid "%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object"
 msgstr "%pB: relocalizaÃ§Ã£o R_X86_64_GOTOFF64 contra %s \"%s\" protegido nÃ£o pode ser usado ao fazer um objecto partilhado"
 
-#: elf64-x86-64.c:3208
+#: elf64-x86-64.c:3283
 #, c-format
 msgid "%pB: addend %s%#x in relocation %s against symbol `%s' at %#<PRIx64> in section `%pA' is out of range"
 msgstr "%pB: adenda %s%#x em relocalizaÃ§Ã£o %s contra sÃ­mbolo \"%s\" em %#<PRIx64> na secÃ§Ã£o \"%pA\" estÃ¡ fora do intervalo"
 
-#: elf64-x86-64.c:3885
+#: elf64-x86-64.c:3417 elflink.c:13267
+msgid "%F%P: corrupt input: %pB\n"
+msgstr "%F%P: entrada corrupta: %pB\n"
+
+#: elf64-x86-64.c:4101
 msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
 msgstr "%F%P: falha ao converter relocalizaÃ§Ã£o GOTPCREL; religue com --no-relax\n"
 
-#: elf64-x86-64.c:4043
+#: elf64-x86-64.c:4259
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
 msgstr "%F%pB: transporte de desvio PC-relative em entrada PLT para \"%s\"\n"
 
-#: elf64-x86-64.c:4106
+#: elf64-x86-64.c:4322
 #, c-format
 msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
 msgstr "%F%pB: transporte em deslocamento do ramo em entrada PLT para \"%s\n"
 
-#: elf64-x86-64.c:4159
+#: elf64-x86-64.c:4375
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
 msgstr "%F%pB: transporte de desvio PC-relative em entrada GOT PLT para \"%s\"\n"
 
-#: elfcode.h:323
+#: elfcode.h:326
 msgid "warning: %pB has a corrupt section with a size (%"
 msgstr "aviso: %pB tem uma secÃ§Ã£o corrompida com um tamanho (%"
 
@@ -4455,656 +4590,813 @@ msgstr "aviso: %pB tem uma secÃ§Ã£o corr
 msgid "warning: %pB has a corrupt string table index - ignoring"
 msgstr "aviso: %pB tem um Ã­ndice de tabela de cadeia corrompido - a ignorar"
 
-#: elfcode.h:1212
+#: elfcode.h:1228
 #, c-format
 msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
 msgstr "%pB: nÂº de versÃ£o (%#<PRId64>) nÃ£o corresponde ao nÂº de sÃ­mbolos (%ld)"
 
-#: elfcore.h:300
+#: elfcore.h:308
 #, c-format
 msgid "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: %<PRIu64>"
 msgstr "aviso: %pB estÃ¡ truncado: esperado tamanho do ficheiro de nÃºcleo >= %<PRIu64>, obtido: %<PRIu64>"
 
-#: elflink.c:1367
+#: elflink.c:1362
 #, c-format
 msgid "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA"
 msgstr "%s: definiÃ§Ã£o TLS em secÃ§Ã£o %pB %pA nÃ£o corresponde a definiÃ§Ã£o nÃ£o-TLS em secÃ§Ã£o %pB %pA"
 
-#: elflink.c:1373
+#: elflink.c:1368
 #, c-format
 msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
 msgstr "%s: referÃªncia TLS em %pB nÃ£o corresponde a referÃªncia nÃ£o-TLS em %pB"
 
-#: elflink.c:1379
+#: elflink.c:1374
 #, c-format
 msgid "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
 msgstr "%s: definiÃ§Ã£o TLS em secÃ§Ã£o %pB %pA nÃ£o corresponde a referÃªncia nÃ£o-TLS em %pB"
 
-#: elflink.c:1385
+#: elflink.c:1380
 #, c-format
 msgid "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
 msgstr "%s: referÃªncia TLS em %pB nÃ£o corresponde a definiÃ§Ã£o nÃ£o-TLS em secÃ§Ã£o %pB %pA"
 
-#: elflink.c:2075
+#: elflink.c:2071
 #, c-format
 msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr "%pB: redefiniÃ§Ã£o de sÃ­mbolo com versÃ£o indirecto \"%s\" inesperada"
 
-#: elflink.c:2452
+#: elflink.c:2448
 #, c-format
 msgid "%pB: version node not found for symbol %s"
 msgstr "%pB: nÃ³ de versÃ£o nÃ£o encontrado para sÃ­mbolo %s"
 
-#: elflink.c:2541
+#: elflink.c:2539
 #, c-format
 msgid "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in section `%pA'"
 msgstr "%pB: mau Ã­ndice de sÃ­mbolo de reloc (%#<PRIx64> >= %#lx) para desvio %#<PRIx64> na secÃ§Ã£o \"%pA\""
 
-#: elflink.c:2553
+#: elflink.c:2551
 #, c-format
 msgid "%pB: non-zero symbol index (%#<PRIx64>) for offset %#<PRIx64> in section `%pA' when the object file has no symbol table"
 msgstr "%pB: Ã­ndice de sÃ­mbolo nÃ£o-zero (%#<PRIx64>) para desvio %#<PRIx64> na secÃ§Ã£o \"%pA\" onde o ficheiro objecto nÃ£o tem tabela de sÃ­mbolo"
 
-#: elflink.c:2744
+#: elflink.c:2740
 #, c-format
 msgid "%pB: relocation size mismatch in %pB section %pA"
 msgstr "%pB: tamanho de relocalizaÃ§Ã£o trocado na secÃ§Ã£o %pB %pA"
 
-#: elflink.c:3066
+#: elflink.c:3069
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr "aviso: tipo e tamanho do sÃ­mbolo dinÃ¢mico \"%s\" nÃ£o estÃ£o definidos"
 
-#: elflink.c:3128
+#: elflink.c:3129
 msgid "%P: copy reloc against protected `%pT' is dangerous\n"
 msgstr "%P: cÃ³pia de reloc contra \"%T\" protegido Ã© perigosa\n"
 
-#: elflink.c:3932
+#: elflink.c:4064
 #, c-format
 msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
 msgstr "encontrado cÃ³digo mÃ¡quina ELF alternativo (%d) em %pB, esperado %d"
 
-#: elflink.c:4598
+#: elflink.c:4534
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: desvio de versÃ£o invÃ¡lido %lx (mÃ¡x %lx)"
+
+#: elflink.c:4602
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr "%pB: %s sÃ­mbolo local no Ã­ndice %lu (>= sh_info de %lu)"
+
+#: elflink.c:4750
+#, c-format
+msgid "%pB: not enough version information"
+msgstr "%pB: versÃ£o de informaÃ§Ã£o insuficiente"
+
+#: elflink.c:4788
 #, c-format
 msgid "%pB: %s: invalid version %u (max %d)"
 msgstr "%pB: %s: versÃ£o %u invÃ¡lida (mÃ¡x %d)"
 
-#: elflink.c:4635
+#: elflink.c:4825
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr "%pB: %s: versÃ£o necessÃ¡ria %d invÃ¡lida"
 
-#: elflink.c:5054
+#: elflink.c:5231
 #, c-format
 msgid "%pB: undefined reference to symbol '%s'"
 msgstr "%pB: referÃªncia indefinida a sÃ­mbolo \"%s\""
 
-#: elflink.c:6130
+#: elflink.c:6315
 #, c-format
 msgid "%pB: stack size specified and %s set"
 msgstr "%pB: tamanho de stack especificado e definido como %s"
 
-#: elflink.c:6134
+#: elflink.c:6319
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr "%pB: %s nÃ£o absoluto"
 
-#: elflink.c:6331
+#: elflink.c:6516
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: versÃ£o indefinida: %s"
 
-#: elflink.c:6902
+#: elflink.c:7088
 #, c-format
 msgid "%pB: .preinit_array section is not allowed in DSO"
 msgstr "%pB: secÃ§Ã£o .preinit_array nÃ£o Ã© permitida em DSO"
 
-#: elflink.c:8359
+#: elflink.c:8602
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr "referÃªncia %s indefinida em sÃ­mbolo complexo: %s"
 
-#: elflink.c:8514
+#: elflink.c:8757
 #, c-format
 msgid "unknown operator '%c' in complex symbol"
 msgstr "operador \"%c\" desconhecido em sÃ­mbolo complexo"
 
 #. PR 21524: Let the user know if a symbol was removed by garbage collection.
-#: elflink.c:8852
+#: elflink.c:9095
 #, c-format
 msgid "%pB:%pA: error: relocation references symbol %s which was removed by garbage collection"
 msgstr "%pB:%pA: erro: relocalizaÃ§Ã£o referencia sÃ­mbolo %s que foi removido pela recolha de lixo."
 
-#: elflink.c:8855
+#: elflink.c:9098
 #, c-format
 msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
 msgstr "%pB:%pA: erro: tente religar com --gc-keep-exported activado."
 
-#: elflink.c:9091 elflink.c:9109 elflink.c:9148 elflink.c:9166
+#: elflink.c:9343 elflink.c:9361 elflink.c:9400 elflink.c:9418
 #, c-format
 msgid "%pB: unable to sort relocs - they are in more than one size"
 msgstr "%pB: impossÃ­vel ordenar relocs - tÃªm mais de um tamanho"
 
 #. The section size is not divisible by either -
 #. something is wrong.
-#: elflink.c:9125 elflink.c:9182
+#: elflink.c:9377 elflink.c:9434
 #, c-format
 msgid "%pB: unable to sort relocs - they are of an unknown size"
 msgstr "%pB: impossÃ­vel ordenar relocs - tÃªm um tamanho desconhecido"
 
-#: elflink.c:9234
+#: elflink.c:9486
 msgid "not enough memory to sort relocations"
 msgstr "Sem memÃ³ria suficiente para ordenar relocalizaÃ§Ãµes"
 
-#: elflink.c:9502
+#: elflink.c:9767
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr "%pB: demasiadas secÃ§Ãµes: %d (>= %d)"
 
-#: elflink.c:9782
+#: elflink.c:10043
 #, c-format
 msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: sÃ­mbolo \"%s\" interno em %pB Ã© referenciado por DSO"
 
-#: elflink.c:9785
+#: elflink.c:10046
 #, c-format
 msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: sÃ­mbolo \"%s\" oculto em %pB Ã© referenciado por DSO"
 
-#: elflink.c:9788
+#: elflink.c:10049
 #, c-format
 msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: sÃ­mbolo \"%s\" local em %pB Ã© referenciado por DSO"
 
-#: elflink.c:9874
+#: elflink.c:10135
 #, c-format
 msgid "%pB: could not find output section %pA for input section %pA"
 msgstr "%pB: impossÃ­vel encontrar a secÃ§Ã£o de saÃ­da %pA para a secÃ§Ã£o de entrada %pA"
 
-#: elflink.c:10028
+#: elflink.c:10289
 #, c-format
 msgid "%pB: protected symbol `%s' isn't defined"
 msgstr "%pB: sÃ­mbolo \"%s\" protegido nÃ£o estÃ¡ definido"
 
-#: elflink.c:10031
+#: elflink.c:10292
 #, c-format
 msgid "%pB: internal symbol `%s' isn't defined"
 msgstr "%pB: sÃ­mbolo \"%s\" nÃ£o estÃ¡ definido"
 
-#: elflink.c:10034
+#: elflink.c:10295
 #, c-format
 msgid "%pB: hidden symbol `%s' isn't defined"
 msgstr "%pB: sÃ­mbolo \"%s\" oculto nÃ£o estÃ¡ definido"
 
-#: elflink.c:10066
+#: elflink.c:10327
 #, c-format
 msgid "%pB: no symbol version section for versioned symbol `%s'"
 msgstr "%pB: sem secÃ§Ã£o de versÃ£o de sÃ­mbolo para o sÃ­mbolo com versÃ£o \"%s\""
 
-#: elflink.c:10679
+#: elflink.c:10699
+#, c-format
+msgid "warning: --enable-non-contiguous-regions discards section `%s' from '%s'\n"
+msgstr "aviso: --enable-non-contiguous-regions descarta a secÃ§Ã£o \"%s\" de \"%s\"\n"
+
+#: elflink.c:10951
 #, c-format
 msgid "error: %pB: size of section %pA is not multiple of address size"
 msgstr "erro: %pB: tamanho da secÃ§Ã£o %pA nÃ£o Ã© mÃºltiplo do tamanho do endereÃ§o"
 
-#: elflink.c:10724
+#: elflink.c:10996
 #, c-format
 msgid "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a non-existent global symbol"
 msgstr "erro: %pB contÃ©m uma reloc (%#<PRIx64>) para a secÃ§Ã£o %pA que referencia um sÃ­mbolo global inexistente"
 
-#: elflink.c:11484
+#: elflink.c:11739
 #, c-format
 msgid "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
 msgstr "%pA tem secÃ§Ãµes ordenadas [\"%pA\" em %pB] e desordenadas [\"%pA\" em %pB] em simultÃ¢neo"
 
-#: elflink.c:11490
+#: elflink.c:11745
 #, c-format
 msgid "%pA has both ordered and unordered sections"
 msgstr "%pA tem secÃ§Ãµes ordenadas e desordenadas em simultÃ¢neo"
 
-#: elflink.c:11592
+#: elflink.c:11851
 #, c-format
 msgid "%pB: no symbol found for import library"
 msgstr "%pB: sem sÃ­mbolo para biblioteca de importaÃ§Ã£o"
 
-#: elflink.c:12225
+#: elflink.c:12488
 #, c-format
 msgid "%pB: file class %s incompatible with %s"
 msgstr "%pB: classe de ficheiro %s incompatÃ­vel com %s"
 
-#: elflink.c:12442
+#: elflink.c:12704
 #, c-format
 msgid "%pB: failed to generate import library"
 msgstr "%pB: falha ao gerar biblioteca de importaÃ§Ã£o"
 
-#: elflink.c:12561
+#: elflink.c:12823
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "aviso: secÃ§Ã£o %s tem tamanho zero"
 
-#: elflink.c:12609
+#: elflink.c:12871
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr "aviso: a secÃ§Ã£o \"%s\" estÃ¡ a ser tornada numa nota"
 
-#: elflink.c:12701
+#: elflink.c:12964
 msgid "%P%X: read-only segment has dynamic relocations\n"
 msgstr "%P%X: segmento sÃ³ de leitura tem relocalizaÃ§Ãµes dinÃ¢micas.\n"
 
-#: elflink.c:12704
-msgid "%P: warning: creating a DT_TEXTREL in a shared object\n"
-msgstr "%P: aviso: a criar uma DT_TEXTREL num objecto partilhado.\n"
+#: elflink.c:12967
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
+msgstr "%P: aviso: a criar DT_TEXTREL num objecto partilhado.\n"
+
+#: elflink.c:12970
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr "%P: aviso: a criar DT_TEXTREL num PIE.\n"
 
-#: elflink.c:12829
+#: elflink.c:13095
 msgid "%P%X: can not read symbols: %E\n"
 msgstr "%P%X: impossÃ­vel ler os sÃ­mbolos: %E\n"
 
-#: elflink.c:13002
-msgid "%F%P: corrupt input: %pB\n"
-msgstr "%F%P: entrada corrupta: %pB\n"
+#: elflink.c:13500
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%F%P: %pB(%pA): erro: necessÃ¡ria secÃ§Ã£o linked-to para --gc-sections\n"
 
-#: elflink.c:13668
+#: elflink.c:13961
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
 msgstr "%pB: %pA+%#<PRIx64>: sem sÃ­mbolo para INHERIT"
 
-#: elflink.c:13844
+#: elflink.c:14002
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: secÃ§Ã£o \"%pA\":entrada VTENTRY corrompida"
+
+#: elflink.c:14145
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr "INPUT_SECTION_FLAG %s nÃ£o reconhecida\n"
 
-#: elfxx-mips.c:1450
+#: elflink.c:14891
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr "%P: %pB: aviso: relocalizaÃ§Ã£o contra \"%s\" em secÃ§Ã£o sÃ³ de leitura \"%pA\"\n"
+
+#: elflink.c:14980
+msgid "%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s\n"
+msgstr "%P: warning: funÃ§Ãµes indirectas GNU com DT_TEXTREL podem resultar numa segfault na execuÃ§Ã£o; recompile com %s\n"
+
+#: elfxx-aarch64.c:477
+#, c-format
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr "%pB: aviso: Weak TLS Ã© definido pela implementaÃ§Ã£o e pode nÃ£o funcionar como esperado"
+
+#: elfxx-aarch64.c:738 elfnn-aarch64.c:9902 elfnn-aarch64.c:9909
+#, c-format
+msgid "%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section."
+msgstr "%pB: aviso: BTI ligado por -z force-bti quando todas as entradas nÃ£o tÃªm BTI na secÃ§Ã£o NOTE."
+
+#: elfxx-aarch64.c:758 elfxx-x86.c:2554
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: falha ao criar secÃ§Ã£o de propriedade GNU\n"
+
+#: elfxx-aarch64.c:762 elfxx-x86.c:2559
+#, c-format
+msgid "%F%pA: failed to align section\n"
+msgstr "%F%pA: falha ao alinhar secÃ§Ã£o\n"
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "erro: %pB: <tamanho AArch64 corrompido usado: 0x%x>"
+
+#: elfxx-mips.c:1507
 msgid "static procedure (no name)"
 msgstr "procedimento estÃ¡tico (sem nome)"
 
-#: elfxx-mips.c:5718
+#: elfxx-mips.c:5782
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr "funÃ§Ãµes MIPS16 e microMIPS nÃ£o se podem chamar entre si"
 
-#: elfxx-mips.c:6485
+#: elfxx-mips.c:6547
 msgid "%X%H: unsupported JALX to the same ISA mode\n"
 msgstr "%X%H: JALX nÃ£o suportado para o mesmo modo ISA\n"
 
-#: elfxx-mips.c:6518
+#: elfxx-mips.c:6580
 msgid "%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
 msgstr "%X%H: salto nÃ£o suportado entre modos ISA; considere recompilar com interlinking activado\n"
 
-#: elfxx-mips.c:6563
+#: elfxx-mips.c:6625
 msgid "%X%H: cannot convert branch between ISA modes to JALX: relocation out of range\n"
 msgstr "%X%H: impossÃ­vel converter ramo entre modos ISA para JALX: relocalizaÃ§Ã£o fora do intervalo\n"
 
-#: elfxx-mips.c:6575
+#: elfxx-mips.c:6637
 msgid "%X%H: unsupported branch between ISA modes\n"
 msgstr "%X%H: ramo nÃ£o suportado entre modos ISA\n"
 
-#: elfxx-mips.c:7223
+#: elfxx-mips.c:7286
 #, c-format
 msgid "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
 msgstr "%pB: tamanho de secÃ§Ã£o \"reginfo\" incorrecto; esperado %<PRIu64>, obtido %<PRIu64>"
 
-#: elfxx-mips.c:7267 elfxx-mips.c:7502
+#: elfxx-mips.c:7330 elfxx-mips.c:7567
 #, c-format
 msgid "%pB: warning: bad `%s' option size %u smaller than its header"
 msgstr "%pB: aviso: mau tamanho de opÃ§Ã£o \"%s\" %u menor que o seu cabeÃ§alho"
 
-#: elfxx-mips.c:8300 elfxx-mips.c:8426
+#: elfxx-mips.c:8374 elfxx-mips.c:8500
 #, c-format
 msgid "%pB: warning: cannot determine the target function for stub section `%s'"
 msgstr "%pB: aviso: impossÃ­vel determinar a funÃ§Ã£o alvo para secÃ§Ã£o fictÃ­cia \"%s\""
 
-#: elfxx-mips.c:8558
+#: elfxx-mips.c:8632
 #, c-format
 msgid "%pB: malformed reloc detected for section %s"
 msgstr "%pB: reloc mal formada detectada para secÃ§Ã£o %s"
 
-#: elfxx-mips.c:8658
+#: elfxx-mips.c:8731
 #, c-format
 msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
 msgstr "%pB: reloc GOT em %#<PRIx64> nÃ£o esperada em executÃ¡veis"
 
-#: elfxx-mips.c:8796
+#: elfxx-mips.c:8871
 #, c-format
 msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: reloc CALL16 em %#<PRIx64> nÃ£o contra sÃ­mbolo global"
 
-#: elfxx-mips.c:9086
+#: elfxx-mips.c:9174
 #, c-format
 msgid "%X%H: relocation %s against `%s' cannot be used when making a shared object; recompile with -fPIC\n"
 msgstr "%X%H: relocalizaÃ§Ã£o %s contra \"%s\" nÃ£o pode ser usada a fazer um objecto partilhado; recompile com -fPIC\n"
 
-#: elfxx-mips.c:9422
+#: elfxx-mips.c:9300
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr "SÃ­mbolo IFUNC %s na tabela dinÃ¢mica de sÃ­mbolos - IFUNCS nÃ£o sÃ£o suportados"
+
+#: elfxx-mips.c:9303
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "sÃ­mbolo nÃ£o-dinÃ¢mico %s em tabela dinÃ¢mica de sÃ­mbolos"
+
+#: elfxx-mips.c:9523
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr "relocalizaÃ§Ãµes nÃ£o-dinÃ¢micas referem-se a sÃ­mbolo dinÃ¢mico %s"
 
-#: elfxx-mips.c:10350
+#: elfxx-mips.c:10457
 #, c-format
 msgid "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in section `%pA'"
 msgstr "%pB: impossÃ­vel encontrar reloc LO16 correspondente contra \"%s\" para %s em %#<PRIx64> na secÃ§Ã£o \"%pA\""
 
-#: elfxx-mips.c:10490
+#: elfxx-mips.c:10597
 msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
 msgstr "secÃ§Ã£o small-data excede 64KB; baixe o limite de tamanho de small-data (veja a opÃ§Ã£o -G)"
 
-#: elfxx-mips.c:10509
+#: elfxx-mips.c:10616
 msgid "cannot convert a jump to JALX for a non-word-aligned address"
 msgstr "ImpossÃ­vel converter um salto para JALX para um endereÃ§o nÃ£o alinhado por word"
 
-#: elfxx-mips.c:10512
+#: elfxx-mips.c:10619
 msgid "jump to a non-word-aligned address"
 msgstr "Salto para um endereÃ§o nÃ£o alinhado por word"
 
-#: elfxx-mips.c:10513
+#: elfxx-mips.c:10620
 msgid "jump to a non-instruction-aligned address"
 msgstr "Salto para um endereÃ§o nÃ£o alinhado por instruÃ§Ã£o"
 
-#: elfxx-mips.c:10516
+#: elfxx-mips.c:10623
 msgid "cannot convert a branch to JALX for a non-word-aligned address"
 msgstr "ImpossÃ­vel converter um ramo para JALX para um endereÃ§o nÃ£o alinhado por word"
 
-#: elfxx-mips.c:10518
+#: elfxx-mips.c:10625
 msgid "branch to a non-instruction-aligned address"
 msgstr "Ramo para um endereÃ§o nÃ£o alinhado por instruÃ§Ã£o"
 
-#: elfxx-mips.c:10520
+#: elfxx-mips.c:10627
 msgid "PC-relative load from unaligned address"
 msgstr "Carga PC-relative de endereÃ§o nÃ£o alinhado"
 
-#: elfxx-mips.c:10798
+#: elfxx-mips.c:10927
 #, c-format
 msgid "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
 msgstr "%pB: entrada VMA \"%pA\" de %#<PRIx64> fora do intervalo de 32-bitsuportado; considere usar \"-Ttext-segment=...\""
 
-#: elfxx-mips.c:10911 elfxx-mips.c:11484
+#: elfxx-mips.c:11042 elfxx-mips.c:11629
 #, c-format
 msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
 msgstr "%pB: desvio \"%pA\" de  %<PRId64> de \"%pA\" alÃ©m do intervalo de ADDIUPC"
 
-#: elfxx-mips.c:11456
+#: elfxx-mips.c:11601
 #, c-format
 msgid "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
 msgstr "%pB: inÃ­cio VMA \"%pA\" de %#<PRIx64> fora do intervalo 32-bit suportado; considere usar \"-Ttext-segment=...\""
 
-#: elfxx-mips.c:14397
+#: elfxx-mips.c:14556
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr "%pB: arquitectura desconhecida %s"
 
-#: elfxx-mips.c:14931
+#: elfxx-mips.c:15090
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr "%pB: nome de secÃ§Ã£o ilegal \"%pA\""
 
-#: elfxx-mips.c:15208
+#: elfxx-mips.c:15367
 #, c-format
 msgid "%pB: warning: linking abicalls files with non-abicalls files"
 msgstr "%pB: aviso: a ligar ficheiros abicalls com ficheiros nÃ£o-abicalls"
 
-#: elfxx-mips.c:15225
+#: elfxx-mips.c:15384
 #, c-format
 msgid "%pB: linking 32-bit code with 64-bit code"
 msgstr "%pB: a ligar cÃ³digo 32-bit com cÃ³digo 64-bit"
 
-#: elfxx-mips.c:15257 elfxx-mips.c:15323 elfxx-mips.c:15338
+#: elfxx-mips.c:15416 elfxx-mips.c:15482 elfxx-mips.c:15497
 #, c-format
 msgid "%pB: linking %s module with previous %s modules"
 msgstr "%pB: a ligar mÃ³dulo %s com mÃ³dulos prÃ©vios %s"
 
-#: elfxx-mips.c:15281
+#: elfxx-mips.c:15440
 #, c-format
 msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
 msgstr "%pB: troca ABI: a ligar mÃ³dulo %s com mÃ³dulos prÃ©vios %s"
 
-#: elfxx-mips.c:15306
+#: elfxx-mips.c:15465
 #, c-format
 msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
 msgstr "%pB: troca ASE: a ligar mÃ³dulo %s com mÃ³dulos prÃ©vios %s"
 
-#: elfxx-mips.c:15440
+#: elfxx-mips.c:15599
 #, c-format
 msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %d"
 msgstr "Aviso: %pB usa vÃ­rgula flutuante ABI %d desconhecida (definida por %pB), %pB usa vÃ­rgula flutuante ABI %d desconhecida"
 
-#: elfxx-mips.c:15446
+#: elfxx-mips.c:15605
 #, c-format
 msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
 msgstr "Aviso: %pB usa vÃ­rgula flutuante ABI %d desconhecida (definida por %pB), %pB usa %s"
 
-#: elfxx-mips.c:15452
+#: elfxx-mips.c:15611
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
 msgstr "Abiso: %pB usa %s (definida por %pB), %pB usa vÃ­rgula flutuante ABI %d desconhecida"
 
-#: elfxx-mips.c:15466
+#: elfxx-mips.c:15625
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
 msgstr "Aviso: %pB usa %s (definida por %pB), %pB usa %s"
 
-#: elfxx-mips.c:15485
+#: elfxx-mips.c:15644
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr "Aviso: %pB usa %s (definida por %pB), %pB usa MSA ABI %d desconhecida"
 
-#: elfxx-mips.c:15497
+#: elfxx-mips.c:15656
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
 msgstr "Aviso: %pB usa MSA ABI %d desconhecida (definida por %pB), %pB usa %s"
 
-#: elfxx-mips.c:15506
+#: elfxx-mips.c:15665
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr "Aviso: %pB usa MSA ABI %d desconhecida (definida por %pB), %pB usa MSA ABI %d desconhecida"
 
-#: elfxx-mips.c:15568
+#: elfxx-mips.c:15727
 #, c-format
 msgid "%pB: endianness incompatible with that of the selected emulation"
 msgstr "%pB: endianness incompatÃ­vel com a da emulaÃ§Ã£o seleccionada"
 
-#: elfxx-mips.c:15582
+#: elfxx-mips.c:15741
 #, c-format
 msgid "%pB: ABI is incompatible with that of the selected emulation"
 msgstr "%pB: ABI incompatÃ­vel com a da emulaÃ§Ã£o seleccionada"
 
-#: elfxx-mips.c:15634
+#: elfxx-mips.c:15794
 #, c-format
 msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
 msgstr "%pB: aviso: ISA inconsistente entre e_flags e .MIPS.abiflags"
 
-#: elfxx-mips.c:15639
+#: elfxx-mips.c:15799
 #, c-format
 msgid "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
 msgstr "%pB: aviso: FP ABI inconsistente entre .gnu.attributes e .MIPS.abiflags"
 
-#: elfxx-mips.c:15643
+#: elfxx-mips.c:15803
 #, c-format
 msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
 msgstr "%pB: aviso: ASEs inconsistente entre e_flags e .MIPS.abiflags"
 
-#: elfxx-mips.c:15650
+#: elfxx-mips.c:15810
 #, c-format
 msgid "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
 msgstr "%pB: aviso: extensÃµes ISA inconsistentes entre e_flags e .MIPS.abiflags"
 
-#: elfxx-mips.c:15654
+#: elfxx-mips.c:15814
 #, c-format
 msgid "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
 msgstr "%pB: aviso: bandeira inesperada no campo flags2 de .MIPS.abiflags (0x%lx)"
 
-#: elfxx-mips.c:15843
+#: elfxx-mips.c:16005
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr "-mips32r2 -mfp64 (12 callee-saved)"
 
-#: elfxx-mips.c:15905 elfxx-mips.c:15916
+#: elfxx-mips.c:16067 elfxx-mips.c:16078
 msgid "None"
 msgstr "Nenhum"
 
-#: elfxx-mips.c:15907 elfxx-mips.c:15976
+#: elfxx-mips.c:16069 elfxx-mips.c:16138
 msgid "Unknown"
 msgstr "Desconhecido"
 
-#: elfxx-mips.c:15987
+#: elfxx-mips.c:16149
 #, c-format
 msgid "Hard or soft float\n"
 msgstr "Flutuante rÃ­gido ou suave\n"
 
-#: elfxx-mips.c:15990
+#: elfxx-mips.c:16152
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr "Flutuante rÃ­gido (precisÃ£o dupla)\n"
 
-#: elfxx-mips.c:15993
+#: elfxx-mips.c:16155
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr "Flutuante rÃ­gido (precisÃ£o simples)\n"
 
-#: elfxx-mips.c:15996
+#: elfxx-mips.c:16158
 #, c-format
 msgid "Soft float\n"
 msgstr "Flutuante suave\n"
 
-#: elfxx-mips.c:15999
+#: elfxx-mips.c:16161
 #, c-format
 msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
 msgstr "Flutuante rÃ­gido (MIPS32r2 64-bit FPU 12 callee-saved)\n"
 
-#: elfxx-mips.c:16002
+#: elfxx-mips.c:16164
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
 msgstr "Flutuante rÃ­gido (32-bit CPU, qualquer FPU)\n"
 
-#: elfxx-mips.c:16005
+#: elfxx-mips.c:16167
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
 msgstr "Flutuante rÃ­gido (32-bit CPU, 64-bit FPU)\n"
 
-#: elfxx-mips.c:16008
+#: elfxx-mips.c:16170
 #, c-format
 msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
 msgstr "Comp. flutuante rÃ­gido (32-bit CPU, 64-bit FPU)\n"
 
-#: elfxx-mips.c:16040
+#: elfxx-mips.c:16202
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:16042
+#: elfxx-mips.c:16204
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:16044
+#: elfxx-mips.c:16206
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:16046
+#: elfxx-mips.c:16208
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:16048
+#: elfxx-mips.c:16210
 #, c-format
 msgid " [abi unknown]"
 msgstr " [abi desconhecida]"
 
-#: elfxx-mips.c:16050
+#: elfxx-mips.c:16212
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:16052
+#: elfxx-mips.c:16214
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:16054
+#: elfxx-mips.c:16216
 #, c-format
 msgid " [no abi set]"
 msgstr " [sem abi definida]"
 
-#: elfxx-mips.c:16079
+#: elfxx-mips.c:16241
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [ISA desconhecida]"
 
-#: elfxx-mips.c:16099
+#: elfxx-mips.c:16261
 #, c-format
 msgid " [not 32bitmode]"
 msgstr " [nÃ£o 32bitmode]"
 
-#: elfxx-sparc.c:3113
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5286
+#: elfxx-riscv.c:1063
+#, c-format
+msgid "-march=%s: Expect number after `%dp'."
+msgstr "-march=%s: esperado nÃºmero apÃ³s \"%dp\"."
+
+#: elfxx-riscv.c:1174
+#, c-format
+msgid "-march=%s: rv%de is not a valid base ISA"
+msgstr "-march=%s: rv%de nÃ£o Ã© uma base ISA vÃ¡lida"
+
+#: elfxx-riscv.c:1214
+#, c-format
+msgid "-march=%s: first ISA subset must be `e', `i' or `g'"
+msgstr "-march=%s: o 1Âº sub-conjunto ISA tem de ser \"e\", \"i\" ou \"g\""
+
+#: elfxx-riscv.c:1242
+#, c-format
+msgid "-march=%s: unsupported ISA subset `%c'"
+msgstr "-march=%s: sub-conjunto ISA \"%c\" nÃ£o suportado"
+
+#: elfxx-riscv.c:1245
+#, c-format
+msgid "-march=%s: ISA string is not in canonical order. `%c'"
+msgstr "-march=%s: cadeia ISA nÃ£o estÃ¡ na ordem canÃ³nica. \"%c\""
+
+#: elfxx-riscv.c:1364
+#, c-format
+msgid "-march=%s: Invalid or unknown %s ISA extension: '%s'"
+msgstr "-march=%s: extensÃ£o ISA %s invÃ¡lida ou desconhecida: \"%s\""
+
+#: elfxx-riscv.c:1375
+#, c-format
+msgid "-march=%s: Duplicate %s ISA extension: '%s'"
+msgstr "-march=%s: extensÃ£o ISA %s duplicada: \"%s\""
+
+#: elfxx-riscv.c:1386
+#, c-format
+msgid "-march=%s: %s ISA extension not in alphabetical order: '%s' must come before '%s'."
+msgstr "-march=%s: extensÃ£o ISA %s nÃ£o estÃ¡ em ordem alfabÃ©tica: \"%s\" tem de estar antes de \"%s\"."
+
+#: elfxx-riscv.c:1407
+#, c-format
+msgid "-march=%s: %s must separate with _"
+msgstr "-march=%s: %s tem de separar com _"
+
+#: elfxx-riscv.c:1523
+#, c-format
+msgid "-march=%s: ISA string must begin with rv32 or rv64"
+msgstr "-march=%s: cadeia ISA tem de comeÃ§ar por rv32 ou rv64"
+
+#: elfxx-riscv.c:1544
+#, c-format
+msgid "-march=%s: unexpected ISA string at end: %s"
+msgstr "-march=%s: cadeia ISA inesperada no final: %s"
+
+#: elfxx-riscv.c:1553
+#, c-format
+msgid "-march=%s: rv32e does not support the `f' extension"
+msgstr "-march=%s: rv32e nÃ£o suporta a extensÃ£o \"f\""
+
+#: elfxx-riscv.c:1562
+#, c-format
+msgid "-march=%s: `d' extension requires `f' extension"
+msgstr "-march=%s: extensÃ£o \"d\" requer a extensÃ£o \"f\""
+
+#: elfxx-riscv.c:1571
+#, c-format
+msgid "-march=%s: `q' extension requires `d' extension"
+msgstr "-march=%s: extensÃ£o \"q\" requer a extensÃ£o \"d\""
+
+#: elfxx-riscv.c:1579
+#, c-format
+msgid "-march=%s: rv32 does not support the `q' extension"
+msgstr "-march=%s: rv32 nÃ£o suporta a extensÃ£o \"q\""
+
+#: elfxx-sparc.c:3002 elfnn-aarch64.c:5530
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
 msgstr "%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo STT_GNU_IFUNC \"%s\" nÃ£o Ã© gerido por %s"
 
-#: elfxx-tilegx.c:4254
+#: elfxx-tilegx.c:4128
 #, c-format
 msgid "%pB: cannot link together %s and %s objects"
 msgstr "%pB: impossÃ­vel ligar objectos %s e %s."
 
-#: elfxx-x86.c:578
+#: elfxx-x86.c:976
 #, c-format
-msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
-msgstr "%P: %pB: aviso: relocalizaÃ§Ã£o contra \"%s\" em secÃ§Ã£o sÃ³ de leitura \"%pA\"\n"
+msgid "%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%F%P: %pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo absoluto \"%s\" na secÃ§Ã£o \"%pA\" nÃ£o Ã© permitida\n"
 
-#: elfxx-x86.c:1027
+#: elfxx-x86.c:1058
 msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
 msgstr "%P: %pB: aviso: relocalizaÃ§Ã£o em secÃ§Ã£o sÃ³ de leitura \"%pA\"\n"
 
-#: elfxx-x86.c:1383
-msgid "%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC\n"
-msgstr "%P%X: segmento sÃ³ de leitura tem relocalizaÃ§Ãµes dinÃ¢micas IFUNC; recompile com -fPIC\n"
-
-#: elfxx-x86.c:2384
+#: elfxx-x86.c:2314
 #, c-format
 msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
 msgstr "erro: %pB: <propriedade x86 corrompida (0x%x) tamanho: 0x%x>"
 
-#: elfxx-x86.c:2609
-msgid "%F%P: failed to create GNU property section\n"
-msgstr "%F%P: falha ao criar secÃ§Ã£o de propriedade GNU\n"
+#: elfxx-x86.c:2580
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: aviso: %s em falta\n"
+
+#: elfxx-x86.c:2582
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: erro: %s em falta\n"
+
+#: elfxx-x86.c:2605
+msgid "IBT and SHSTK properties"
+msgstr "propriedades IBT e SHSTK"
+
+#: elfxx-x86.c:2607
+msgid "IBT property"
+msgstr "propriedade IBT"
 
-#: elfxx-x86.c:2614
-#, c-format
-msgid "%F%pA: failed to align section\n"
-msgstr "%F%pA: falha ao alinhar secÃ§Ã£o\n"
+#: elfxx-x86.c:2609
+msgid "SHSTK property"
+msgstr "propriedade SHSTK"
 
-#: elfxx-x86.c:2760
+#: elfxx-x86.c:2753
 msgid "%F%P: failed to create VxWorks dynamic sections\n"
 msgstr "%F%P: falha ao criar secÃ§Ãµes dinÃ¢micas VxWorks \n"
 
-#: elfxx-x86.c:2769
+#: elfxx-x86.c:2762
 msgid "%F%P: failed to create GOT sections\n"
 msgstr "%F%P: falha ao criar secÃ§Ãµes GOT\n"
 
-#: elfxx-x86.c:2787
+#: elfxx-x86.c:2780
 msgid "%F%P: failed to create ifunc sections\n"
 msgstr "%F%P: falha ao criar secÃ§Ãµes ifunc\n"
 
-#: elfxx-x86.c:2828
+#: elfxx-x86.c:2817
 msgid "%F%P: failed to create GOT PLT section\n"
 msgstr "%F%P: falha ao criar secÃ§Ã£o GOT PLT\n"
 
-#: elfxx-x86.c:2849
+#: elfxx-x86.c:2836
 msgid "%F%P: failed to create IBT-enabled PLT section\n"
 msgstr "%F%P: falha ao criar secÃ§Ã£o IBT-enabled PLT\n"
 
-#: elfxx-x86.c:2864
+#: elfxx-x86.c:2850
 msgid "%F%P: failed to create BND PLT section\n"
 msgstr "%F%P: falha ao criar secÃ§Ã£o BND PLT\n"
 
-#: elfxx-x86.c:2885
+#: elfxx-x86.c:2870
 msgid "%F%P: failed to create PLT .eh_frame section\n"
 msgstr "%F%P: falha ao criar secÃ§Ã£o PLT .eh_frame\n"
 
-#: elfxx-x86.c:2898
+#: elfxx-x86.c:2883
 msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
 msgstr "%F%P: falha ao criar secÃ§Ã£o GOT PLT .eh_frame\n"
 
-#: elfxx-x86.c:2912
+#: elfxx-x86.c:2897
 msgid "%F%P: failed to create the second PLT .eh_frame section\n"
 msgstr "%F%P: falha ao criar segunda secÃ§Ã£o PLT .eh_frame\n"
 
+#: elfxx-x86.c:2939
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr "%X%P: tentada ligaÃ§Ã£o estÃ¡tica de objecto dinÃ¢mico \"%pB\"\n"
+
 #: ihex.c:230
 #, c-format
 msgid "%pB:%d: unexpected character `%s' in Intel Hex file"
@@ -5115,67 +5407,67 @@ msgstr "%pB:%d: carÃ¡cter \"%s\" inesper
 msgid "%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"
 msgstr "%pB:%u: mau checksum em ficheiro Intel Hex (esperado %u, obtido %u)"
 
-#: ihex.c:394
+#: ihex.c:393
 #, c-format
 msgid "%pB:%u: bad extended address record length in Intel Hex file"
 msgstr "%pB:%u: mau tamanho de registo de endereÃ§o estendido em ficheiro Intel Hex"
 
-#: ihex.c:412
+#: ihex.c:411
 #, c-format
 msgid "%pB:%u: bad extended start address length in Intel Hex file"
 msgstr "%pB:%u: mau tamanho de endereÃ§o inicial estendido em ficheiro Intel Hex"
 
-#: ihex.c:430
+#: ihex.c:429
 #, c-format
 msgid "%pB:%u: bad extended linear address record length in Intel Hex file"
 msgstr "%pB:%u: mau tamanho de registo em endereÃ§o linear estendido em ficheiro Intel Hex"
 
-#: ihex.c:448
+#: ihex.c:447
 #, c-format
 msgid "%pB:%u: bad extended linear start address length in Intel Hex file"
 msgstr "%pB:%u: mau tamanho de endereÃ§o linear inicial estendido em ficheiro Intel Hex"
 
-#: ihex.c:466
+#: ihex.c:465
 #, c-format
 msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
 msgstr "%pB:%u: tipo ihex nÃ£o reconhecido %u em ficheiro Intel Hex"
 
-#: ihex.c:585
+#: ihex.c:581
 #, c-format
 msgid "%pB: internal error in ihex_read_section"
 msgstr "%pB: erro interno em ihex_read_section"
 
-#: ihex.c:619
+#: ihex.c:614
 #, c-format
 msgid "%pB: bad section length in ihex_read_section"
 msgstr "%pB: mau tamanho de secÃ§Ã£o em ihex_read_section"
 
-#: ihex.c:793
+#: ihex.c:785
 #, c-format
 msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
 msgstr "endereÃ§o %pB 64-bit %#<PRIx64> forta do intervalo para ficheiro Hex Intel"
 
-#: ihex.c:852
+#: ihex.c:843
 #, c-format
 msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
 msgstr "%pB: endereÃ§o %#<PRIx64> fora do intervalo para ficheiro Intel Hex"
 
-#: libbfd.c:937
+#: libbfd.c:884
 #, c-format
 msgid "%pB: unable to get decompressed section %pA"
 msgstr "%pB: impossÃ­vel obter secÃ§Ã£o %pA descomprimida"
 
-#: libbfd.c:1101
+#: libbfd.c:1048
 #, c-format
 msgid "Deprecated %s called at %s line %d in %s\n"
 msgstr "%s obsoleto chamado em %s linha %d em %s\n"
 
-#: libbfd.c:1104
+#: libbfd.c:1051
 #, c-format
 msgid "Deprecated %s called\n"
 msgstr "%s obsoleto chamado\n"
 
-#: linker.c:1697
+#: linker.c:1696
 #, c-format
 msgid "%pB: indirect symbol `%s' to `%s' is a loop"
 msgstr "%pB: sÃ­mbolo indirecto \"%s\" para \"%s\" Ã© um ciclo"
@@ -5185,179 +5477,213 @@ msgstr "%pB: sÃ­mbolo indirecto \"%s\" p
 msgid "attempt to do relocatable link with %s input and %s output"
 msgstr "Tentativa de fazer ligaÃ§Ã£o relocalizÃ¡vel com entrada %s e saÃ­da %s"
 
-#: linker.c:2853
+#: linker.c:2852
 #, c-format
 msgid "%pB: ignoring duplicate section `%pA'\n"
 msgstr "%pB: a ignorar secÃ§Ã£o \"%pA\" duplicada\n"
 
-#: linker.c:2863 linker.c:2873
+#: linker.c:2862 linker.c:2872
 #, c-format
 msgid "%pB: duplicate section `%pA' has different size\n"
 msgstr "%pB: secÃ§Ã£o \"%pA\" duplicada tem tamanho diferente\n"
 
-#: linker.c:2882 linker.c:2888
+#: linker.c:2881 linker.c:2887
 #, c-format
 msgid "%pB: could not read contents of section `%pA'\n"
 msgstr "%pB: impossÃ­vel ler conteÃºdo da secÃ§Ã£o \"%pA\"\n"
 
-#: linker.c:2893
+#: linker.c:2892
 #, c-format
 msgid "%pB: duplicate section `%pA' has different contents\n"
 msgstr "%pB: secÃ§Ã£o \"%pA\" duplicada tem conteÃºdo diferente\n"
 
-#: linker.c:3407
+#: linker.c:3404
 #, c-format
 msgid "%pB: compiled for a big endian system and target is little endian"
 msgstr "%pB: compilado para um sistema big endian e o alvo Ã© little endian"
 
-#: linker.c:3410
+#: linker.c:3407
 #, c-format
 msgid "%pB: compiled for a little endian system and target is big endian"
 msgstr "%pB: compilado para um sistema little endian e o alvo Ã© big endian"
 
-#: mach-o.c:632
+#: mach-o-arm.c:172
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr "par de relocalizaÃ§Ã£o mach-o ARM mal formado: relocalizaÃ§Ã£o Ã© a 1Âª relocalizaÃ§Ã£o"
+
+#: mach-o-arm.c:188
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr "par de relocalizaÃ§Ã£o mach-o ARM mal formado: tamanho invÃ¡lido: %d"
+
+#: mach-o-arm.c:203
+#, c-format
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr "sectdiff de relocalizaÃ§Ã£o mach-o ARM mal formado: tamanho invÃ¡lido: %d"
+
+#: mach-o-arm.c:218
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr "sectdiff de relocalizaÃ§Ã£o local mach-o ARM mal formado: tamanho invÃ¡lido: %d"
+
+#: mach-o-arm.c:233
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr "metade de sectdiff de relocalizaÃ§Ã£o mach-o ARM mal formado: tamanho invÃ¡lido: %d"
+
+#: mach-o-arm.c:265
+#, c-format
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr "relocalizaÃ§Ã£o vanilla mach-o ARM mal formada: tamanho invÃ¡lido: %d (pcrel: %d)"
+
+#: mach-o-arm.c:329
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr "relocalizaÃ§Ã£o mach-o ARM mal formada: tipo de relocalizaÃ§Ã£o desconhecido: %d"
+
+#: mach-o.c:633
 #, c-format
 msgid "<unknown mask flags>"
 msgstr "<bandeiras de mÃ¡scara desconhecidas>"
 
-#: mach-o.c:687
+#: mach-o.c:688
 msgid " (<unknown>)"
 msgstr "<desconhecido>"
 
-#: mach-o.c:698
+#: mach-o.c:699
 #, c-format
 msgid " MACH-O header:\n"
 msgstr "CabeÃ§alho MACH-0:\n"
 
-#: mach-o.c:699
+#: mach-o.c:700
 #, c-format
 msgid "   magic:      %#lx\n"
 msgstr "   magia:      %#lx\n"
 
-#: mach-o.c:700
+#: mach-o.c:701
 #, c-format
 msgid "   cputype:    %#lx (%s)\n"
 msgstr "   tipocpu:    %#lx (%s)\n"
 
-#: mach-o.c:702
+#: mach-o.c:703
 #, c-format
 msgid "   cpusubtype: %#lx%s\n"
 msgstr "   subtipocpu: %#lx%s\n"
 
-#: mach-o.c:704
+#: mach-o.c:705
 #, c-format
 msgid "   filetype:   %#lx\n"
 msgstr "   ficheiro: %#lx\n"
 
-#: mach-o.c:705
+#: mach-o.c:706
 #, c-format
 msgid "   ncmds:      %#lx\n"
 msgstr "   ncmds       : %#lx\n"
 
-#: mach-o.c:706
+#: mach-o.c:707
 #, c-format
 msgid "   sizeocmds:  %#lx\n"
 msgstr "   tamcmds:    %#lx\n"
 
-#: mach-o.c:707
+#: mach-o.c:708
 #, c-format
 msgid "   flags:      %#lx\n"
 msgstr "   bandeiras  : %#lx\n"
 
-#: mach-o.c:708
+#: mach-o.c:709
 #, c-format
 msgid "   version:    %x\n"
 msgstr "   versÃ£o:     %x\n"
 
 #. Urg - what has happened ?
-#: mach-o.c:743
+#: mach-o.c:744
 #, c-format
 msgid "incompatible cputypes in mach-o files: %ld vs %ld"
 msgstr "tipos de cpu incompatÃ­veis em ficheiros mach-0: %ld vs %ld"
 
-#: mach-o.c:912
+#: mach-o.c:913
 msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
 msgstr "bfd_mach_o_canonicalize_symtab: impossÃ­vel carregar sÃ­mbolos"
 
-#: mach-o.c:2108
+#: mach-o.c:1505
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr "relocalizaÃ§Ã£o mach-o mal formada: Ã­ndice de secÃ§Ã£o maior que o nÃºmero de secÃ§Ãµes"
+
+#: mach-o.c:2139
 msgid "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands."
 msgstr "desculpe: modtab, toc e extrefsyms ainda nÃ£o estÃ£o implementados para comandos dysymtab."
 
-#: mach-o.c:2554
+#: mach-o.c:2587
 #, c-format
 msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
 msgstr "mach-o: hÃ¡ demasiadas secÃ§Ãµes (%u), o mÃ¡ximo Ã© 255,\n"
 
-#: mach-o.c:2661
+#: mach-o.c:2694
 #, c-format
 msgid "unable to allocate data for load command %#x"
 msgstr "impossÃ­vel alocar dados para comando de carga %#x"
 
-#: mach-o.c:2766
+#: mach-o.c:2799
 #, c-format
 msgid "unable to write unknown load command %#x"
 msgstr "impossÃ­vel escrever comando de carga %#x desconhecido"
 
-#: mach-o.c:2950
+#: mach-o.c:2983
 #, c-format
 msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
 msgstr "endereÃ§o de secÃ§Ã£o (%#<PRIx64>) abaixo do inÃ­cio do segmento (%#<PRIx64>)"
 
-#: mach-o.c:3092
+#: mach-o.c:3125
 #, c-format
 msgid "unable to layout unknown load command %#x"
 msgstr "impossÃ­vel dispor comando de carga %#x desconhecido"
 
-#: mach-o.c:3628
+#: mach-o.c:3660
 #, c-format
 msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 instead"
 msgstr "bfd_mach_o_read_section_32: valor de alinhamento muito grande: %#lx, a usar 32"
 
-#: mach-o.c:3671
+#: mach-o.c:3703
 #, c-format
 msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 instead"
 msgstr "bfd_mach_o_read_section_64: valor de alinhamento muito grande: %#lx, a usar 32"
 
-#: mach-o.c:3722
+#: mach-o.c:3754
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
 msgstr "bfd_mach_o_read_symtab_symbol: impossÃ­vel ler %d bytes em %u"
 
-#: mach-o.c:3741
+#: mach-o.c:3773
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
 msgstr "bfd_mach_o_read_symtab_symbol: nome fora do intervalo (%lu >= %u)"
 
-#: mach-o.c:3824
+#: mach-o.c:3856
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d (max %lu): setting to undefined"
 msgstr "bfd_mach_o_read_symtab_symbol: sÃ­mbolo \"%s\" especificou secÃ§Ã£o invÃ¡lida %d (mÃ¡x %lu): a definir como indefinida"
 
-#: mach-o.c:3843
+#: mach-o.c:3875
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x%x: setting to undefined"
 msgstr "bfd_mach_o_read_symtab_symbol: sÃ­mbolo \"%s\" especificou campo de tipo invÃ¡lido 0x%x: a definir como indefinida"
 
-#: mach-o.c:3920
-msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
-msgstr "bfd_mach_o_read_symtab_symbols: impossÃ­vel alocar memÃ³ria para sÃ­mbolos"
-
-#: mach-o.c:4931
+#: mach-o.c:5064
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr "%pB: comando de carga %#x desconhecido"
 
-#: mach-o.c:5122
+#: mach-o.c:5263
 #, c-format
 msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
 msgstr "bfd_mach_o_scan: arquitectura desconhecida 0x%lx/0x%lx"
 
-#: mach-o.c:5227
+#: mach-o.c:5385
 #, c-format
 msgid "unknown header byte-order value %#x"
 msgstr "valor de cabeÃ§alho byte-order %#x desconhecido"
 
-#: merge.c:878
+#: merge.c:895
 #, c-format
 msgid "%pB: access beyond end of merged section (%<PRId64>)"
 msgstr "%pB: acesso alÃ©m do fim da secÃ§Ã£o unida (%<PRId64>)"
@@ -5372,122 +5698,122 @@ msgstr "%pB: sem nÃºcleo para alocar nom
 msgid "%pB: no core to allocate a symbol %d bytes long"
 msgstr "%pB: sem nÃºcleo para alocar um sÃ­mbolo com %d bytes"
 
-#: mmo.c:955
+#: mmo.c:952
 #, c-format
 msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
 msgstr "%pB: tentativa de emitir conteÃºdo em endereÃ§o nÃ£o mÃºltiplo de 4 %#<PRIx64>"
 
-#: mmo.c:1252
+#: mmo.c:1248
 #, c-format
 msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: valor de initializaÃ§Ã£o para $255 nÃ£o Ã© \"Main\"\n"
 
-#: mmo.c:1399
+#: mmo.c:1395
 #, c-format
 msgid "%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
 msgstr "%pB: sequÃªncia de caracteres largos 0x%02X 0x%02X nÃ£o suportada apÃ³s nome de sÃ­mbolo comeÃ§ado por \"%s\"\n"
 
-#: mmo.c:1633
+#: mmo.c:1628
 #, c-format
 msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: lopcode \"%d\" nÃ£o suportado\n"
 
-#: mmo.c:1644
+#: mmo.c:1639
 #, c-format
 msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: esperado YZ = 1, obtido YZ = %d para lop_quote\n"
 
-#: mmo.c:1682
+#: mmo.c:1679
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: esperado z = 1 ou z = 2, obtido z = %d para lop_loc\n"
 
-#: mmo.c:1733
+#: mmo.c:1730
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: esperado z = 1 ou z = 2, obtido z = %d para lop_fixo\n"
 
-#: mmo.c:1774
+#: mmo.c:1771
 #, c-format
 msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: esperado y = 0, obtido y = %d para lop_fixrx\n"
 
-#: mmo.c:1785
+#: mmo.c:1782
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: esperado z = 16 ou z = 24, obtido z = %d para lop_fixrx\n"
 
-#: mmo.c:1810
+#: mmo.c:1807
 #, c-format
 msgid "%pB: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: byte inicial da palavra operando tem de ser 0 ou 1, obtido %d para lop_fixrx\n"
 
-#: mmo.c:1835
+#: mmo.c:1832
 #, c-format
 msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
 msgstr "%pB: impossÃ­vel alocar nome de ficheiro para nÃºmero de ficheiro %d, %d bytes\n"
 
-#: mmo.c:1857
+#: mmo.c:1854
 #, c-format
 msgid "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: nÃºmero de ficheiro %d \"%s\", jÃ¡ foi inserido como \"%s\"\n"
 
-#: mmo.c:1871
+#: mmo.c:1868
 #, c-format
 msgid "%pB: invalid mmo file: file name for number %d was not specified before use\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: nome de ficheiro para nÃºmero %d nÃ£o foi especificado antes do uso\n"
 
-#: mmo.c:1978
+#: mmo.c:1975
 #, c-format
 msgid "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: campos y e z de lop_stab nÃ£o-zero, y: %d, z: %d\n"
 
-#: mmo.c:2015
+#: mmo.c:2012
 #, c-format
 msgid "%pB: invalid mmo file: lop_end not last item in file\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: lop_end nÃ£o Ã© o Ãºltimo item no ficheiro\n"
 
-#: mmo.c:2029
+#: mmo.c:2026
 #, c-format
 msgid "%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
 msgstr "%pB: ficheiro mmo invÃ¡lido: YZ de lop_end (%ld) nÃ£o igual ao nÃºmero de tetras para o lop_stab (%ld) precedente\n"
 
-#: mmo.c:2740
+#: mmo.c:2735
 #, c-format
 msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
 msgstr "%pB: tabela de sÃ­mbolo invÃ¡lida: sÃ­mbolo duplicado \"%s\"\n"
 
-#: mmo.c:2983
+#: mmo.c:2978
 #, c-format
 msgid "%pB: bad symbol definition: `Main' set to %s rather than the start address %s\n"
 msgstr "%pB: mÃ¡ definiÃ§Ã£o de sÃ­mbolo: \"Main\" definido como %s em vez do endereÃ§o inicial %s\n"
 
-#: mmo.c:3082
+#: mmo.c:3077
 #, c-format
 msgid "%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
 msgstr "%pB: aviso: tabela de simbolo muito grande para mmo, maior que palavras de 65535 32-bit: %d. SÃ³ \"Main\" serÃ¡ emitido.\n"
 
-#: mmo.c:3128
+#: mmo.c:3123
 #, c-format
 msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
 msgstr "%pB: erro interno, tabela de sÃ­mbolo alterou o tamanho de %d para %d palavras\n"
 
-#: mmo.c:3181
+#: mmo.c:3176
 #, c-format
 msgid "%pB: internal error, internal register section %pA had contents\n"
 msgstr "%pB: erro interno, secÃ§Ã£o de registo interna %pA tinha conteÃºdo\n"
 
-#: mmo.c:3232
+#: mmo.c:3227
 #, c-format
 msgid "%pB: no initialized registers; section length 0\n"
 msgstr "%pB: sem registos inicializados; tamanho de secÃ§Ã£o 0\n"
 
-#: mmo.c:3239
+#: mmo.c:3234
 #, c-format
 msgid "%pB: too many initialized registers; section length %<PRId64>"
 msgstr "%pB: demasiados registos inicializados; tamanho de secÃ§Ã£o %<PRId64>"
 
-#: mmo.c:3244
+#: mmo.c:3239
 #, c-format
 msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
 msgstr "%pB: endereÃ§o inicial invÃ¡lido para registos inicializados de tamanho %<PRId64>: %#<PRIx64>"
@@ -5497,48 +5823,55 @@ msgstr "%pB: endereÃ§o inicial invÃ¡lido
 msgid "unhandled OSF/1 core file section type %d"
 msgstr "Tipo de secÃ§Ã£o %d de ficheiro nÃºcleo OSF/1 nÃ£o gerida"
 
-#: pef.c:527
+#: pdp11.c:1588
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: o sÃ­mbolo indica sobreposiÃ§Ã£o (nÃ£o suportado)"
+
+#: pef.c:530
 #, c-format
 msgid "bfd_pef_scan: unknown architecture 0x%lx"
 msgstr "bfd_pef_scan: arquitectura desconhecida 0x%lx"
 
-#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220
+#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220 pei-x86_64.c:243
+#: pei-x86_64.c:253 pei-x86_64.c:278 pei-x86_64.c:290 pei-x86_64.c:304
+#: pei-x86_64.c:322 pei-x86_64.c:334 pei-x86_64.c:346
 #, c-format
 msgid "warning: corrupt unwind data\n"
 msgstr "aviso: dados unwind corrompidos\n"
 
 #. PR 17512: file: 2245-7442-0.004.
-#: pei-x86_64.c:315
+#: pei-x86_64.c:367
 #, c-format
 msgid "Unknown: %x"
 msgstr "Desconhecido: %x"
 
-#: pei-x86_64.c:365 pei-x86_64.c:375 pei-x86_64.c:384
+#: pei-x86_64.c:418 pei-x86_64.c:428 pei-x86_64.c:437
 #, c-format
 msgid "warning: xdata section corrupt\n"
 msgstr "aviso: secÃ§Ã£o xdata corrupta\n"
 
-#: pei-x86_64.c:439
+#: pei-x86_64.c:492
 #, c-format
 msgid "Too many unwind codes (%ld)\n"
 msgstr "Demasiados cÃ³digos unwind (%ld)\n"
 
-#: pei-x86_64.c:529
+#: pei-x86_64.c:582
 #, c-format
 msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
 msgstr "Aviso: tamanho de secÃ§Ã£o %s (%ld) nÃ£o Ã© mÃºltiplo de %d\n"
 
-#: pei-x86_64.c:536
+#: pei-x86_64.c:589
 #, c-format
 msgid "Warning: %s section size is zero\n"
 msgstr "Aviso: tamanho de secÃ§Ã£o %s Ã© zero\n"
 
-#: pei-x86_64.c:551
+#: pei-x86_64.c:604
 #, c-format
 msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"
 msgstr "Aviso: tamanho de secÃ§Ã£o %s (%ld) Ã© menor que o tamanho virtual (%ld)\n"
 
-#: pei-x86_64.c:560
+#: pei-x86_64.c:613
 #, c-format
 msgid ""
 "\n"
@@ -5547,12 +5880,12 @@ msgstr ""
 "\n"
 "A tabela de funÃ§Ã£o (interpretado %s conteÃºdo de secÃ§Ã£o)\n"
 
-#: pei-x86_64.c:563
+#: pei-x86_64.c:616
 #, c-format
 msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
 msgstr "vma:\t\t\tEndInicial  \t EndFinal  \t DadosUnwind\n"
 
-#: pei-x86_64.c:692
+#: pei-x86_64.c:745
 #, c-format
 msgid ""
 "\n"
@@ -5562,42 +5895,42 @@ msgstr ""
 "Despejo de %s\n"
 
 #. XXX code yet to be written.
-#: peicode.h:775
+#: peicode.h:796
 #, c-format
 msgid "%pB: unhandled import type; %x"
 msgstr "%pB: tipo de importaÃ§Ã£o nÃ£o gerido; %x"
 
-#: peicode.h:781
+#: peicode.h:802
 #, c-format
 msgid "%pB: unrecognized import type; %x"
 msgstr "%pB: tipo de importaÃ§Ã£o nÃ£o reconhecido; %x"
 
-#: peicode.h:796
+#: peicode.h:817
 #, c-format
 msgid "%pB: unrecognized import name type; %x"
 msgstr "%pB: tipo de nome de importaÃ§Ã£o nÃ£o reconhecido; %x"
 
-#: peicode.h:1211
+#: peicode.h:1225
 #, c-format
 msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
 msgstr "%pB: tipo de mÃ¡quina nÃ£o reconhecido (0x%x) em arquivo Import Library Format"
 
-#: peicode.h:1224
+#: peicode.h:1238
 #, c-format
 msgid "%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive"
 msgstr "%pB: tipo de mÃ¡quina reconhecido mas nÃ£o gerido (0x%x) em arquivo Import Library Format"
 
-#: peicode.h:1242
+#: peicode.h:1256
 #, c-format
 msgid "%pB: size field is zero in Import Library Format header"
 msgstr "%pB: tamanho de campo Ã© zero em cabeÃ§alho Import Library Format"
 
-#: peicode.h:1274
+#: peicode.h:1282
 #, c-format
 msgid "%pB: string not null terminated in ILF object file"
 msgstr "%pB: cadeia nÃ£-null terminada em ficheiro objecto ILF."
 
-#: peicode.h:1330
+#: peicode.h:1338
 #, c-format
 msgid "%pB: error: debug data ends beyond end of debug directory"
 msgstr "%pB: erro: Debug Data termina apÃ³s o fim da pasta de depuraÃ§Ã£o."
@@ -5655,32 +5988,32 @@ msgstr "Sector da partiÃ§Ã£o[%d] = 0x%.8
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr "Tamanho da partiÃ§Ã£o[%d] = 0x%.8lx (%ld)\n"
 
-#: reloc.c:8232
+#: reloc.c:8291
 msgid "INPUT_SECTION_FLAGS are not supported"
 msgstr "INPUT_SECTION_FLAGS nÃ£o sÃ£o suportadas."
 
-#: reloc.c:8333
+#: reloc.c:8392
 #, c-format
 msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
 msgstr "%X%P: %pB(%pA): erro: relocalizaÃ§Ã£o para desvio %V nÃ£o tem valor\n"
 
-#: reloc.c:8420
+#: reloc.c:8480
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
 msgstr "%X%P: %pB(%pA): relocalizaÃ§Ã£o \"%R\" nÃ£o Ã© suportada\n"
 
-#: reloc.c:8429
+#: reloc.c:8489
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
 msgstr "%X%P: %pB(%pA): relocalizaÃ§Ã£o \"%R\" devolve um valor nÃ£o reconhecido %x\n"
 
-#: reloc.c:8491
+#: reloc.c:8551
 #, c-format
 msgid "%pB: unrecognized relocation type %#x in section `%pA'"
 msgstr "%pB: relocalizaÃ§Ã£o nÃ£o reconhecida (%#x) na secÃ§Ã£o \"%pA\""
 
 #. PR 21803: Suggest the most likely cause of this error.
-#: reloc.c:8495
+#: reloc.c:8555
 #, c-format
 msgid "is this version of the linker - %s - out of date ?"
 msgstr "EstarÃ¡ esta versÃ£o do linker - %s - fora do prazo?"
@@ -5690,7 +6023,7 @@ msgstr "EstarÃ¡ esta versÃ£o do linker -
 msgid "%pB: warning core file truncated"
 msgstr "%pB: aviso: ficheiro nÃºcleo truncado"
 
-#: som.c:5478
+#: som.c:5497
 #, c-format
 msgid ""
 "\n"
@@ -5699,7 +6032,7 @@ msgstr ""
 "\n"
 "Exec Auxiliary Header\n"
 
-#: som.c:5787
+#: som.c:5806
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers nÃ£o implementado"
 
@@ -5713,7 +6046,7 @@ msgstr "%pB:%d: carÃ¡cter \"%s\" inesper
 msgid "%pB:%d: byte count %d too small"
 msgstr "%pB:%d: total de byte %d muito pequeno"
 
-#: srec.c:581 srec.c:615
+#: srec.c:580 srec.c:614
 #, c-format
 msgid "%pB:%d: bad checksum in S-record file"
 msgstr "%pB:%d: mau checksum em ficheiro S-record"
@@ -5723,73 +6056,82 @@ msgstr "%pB:%d: mau checksum em ficheiro
 msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
 msgstr "%pB(%pA+%#lx): entrada Stabs tem Ã­ndice de cadeia invÃ¡lido."
 
-#: syms.c:1091
+#: syms.c:1085
 msgid "unsupported .stab relocation"
 msgstr "RelocalizaÃ§Ã£o .stab nÃ£o suportada"
 
-#: vms-alpha.c:479
+#: vms-alpha.c:480
 msgid "corrupt EIHD record - size is too small"
 msgstr "Registo EIHD corrupto - tamanho muito pequeno"
 
-#: vms-alpha.c:660
+#: vms-alpha.c:666
 #, c-format
 msgid "unable to read EIHS record at offset %#x"
 msgstr "ImpossÃ­vel ler registo EIHS no desvio %#x"
 
-#: vms-alpha.c:1173
+#: vms-alpha.c:1158
+msgid "record is too small for symbol name length"
+msgstr "registo muito pequeno para o tamanho do nome do sÃ­mbolo"
+
+#: vms-alpha.c:1191
 #, c-format
 msgid "corrupt EGSD record: its size (%#x) is too small"
 msgstr "Registo EGSD corrupto: tamanho (%#x) muito pequeno"
 
-#: vms-alpha.c:1197
+#: vms-alpha.c:1215
 #, c-format
-msgid "corrupt EGSD record: size (%#x) is larger than remaining space (%#x)"
-msgstr "Registo EGSD corrupto: tamanho (%#x) maior que o espaÃ§o restante (%#x)"
+msgid "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
+msgstr "tipo de registo EGSD %d corrupto: tamanho (%#x) maior que o espaÃ§o restante (%#x)"
 
-#: vms-alpha.c:1205
+#: vms-alpha.c:1225
 #, c-format
-msgid "corrupt EGSD record: size (%#x) is too small"
-msgstr "Registo EGSD corrupto: tamanho (%#x) muito pequeno"
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
+msgstr "tipo de registo EGSD %d corrupto: tamanho (%#x) muito pequeno"
 
-#: vms-alpha.c:1334 vms-alpha.c:1350 vms-alpha.c:1390
+#: vms-alpha.c:1367
 #, c-format
 msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
 msgstr "Registo EGSD corrupto: campo psindx muito grande (%#lx)"
 
-#: vms-alpha.c:1419
+#: vms-alpha.c:1443
 #, c-format
 msgid "unknown EGSD subtype %d"
 msgstr "Sub-tipo EGSD %d desconhecido"
 
-#: vms-alpha.c:1452
+#: vms-alpha.c:1476
 #, c-format
 msgid "stack overflow (%d) in _bfd_vms_push"
 msgstr "Transporte de stack (%d) em _bfd_vms_push"
 
-#: vms-alpha.c:1465
+#: vms-alpha.c:1490
 msgid "stack underflow in _bfd_vms_pop"
 msgstr "Sub-transporte de stack em _bfd_vms_pop"
 
+#: vms-alpha.c:1564
+#, c-format
+msgid "dst_define_location %u too large"
+msgstr "dst_define_location %u muito grande"
+
 #. These names have not yet been added to this switch statement.
-#: vms-alpha.c:1707
+#: vms-alpha.c:1765
 #, c-format
 msgid "unknown ETIR command %d"
 msgstr "comando ETIR %d desconhecido"
 
-#: vms-alpha.c:1738
+#: vms-alpha.c:1796
 msgid "corrupt vms value"
 msgstr "Valor vms corrupto"
 
-#: vms-alpha.c:1866
+#: vms-alpha.c:1927
 msgid "corrupt ETIR record encountered"
 msgstr "Encontrado registo ETIR corrupto"
 
-#: vms-alpha.c:1923
+#: vms-alpha.c:1989
 #, c-format
 msgid "bad section index in %s"
 msgstr "mau Ã­ndice de secÃ§Ã£o em %s"
 
-#: vms-alpha.c:1936
+#: vms-alpha.c:2003
 #, c-format
 msgid "unsupported STA cmd %s"
 msgstr "comando STA %s nÃ£o suportado"
@@ -5799,1468 +6141,1480 @@ msgstr "comando STA %s nÃ£o suportado"
 #. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-alpha.c:2116 vms-alpha.c:2147 vms-alpha.c:2238 vms-alpha.c:2396
+#: vms-alpha.c:2211 vms-alpha.c:2242 vms-alpha.c:2337 vms-alpha.c:2557
 #, c-format
 msgid "%s: not supported"
 msgstr "%s: nÃ£o suportado"
 
-#: vms-alpha.c:2122
+#: vms-alpha.c:2217
 #, c-format
 msgid "%s: not implemented"
 msgstr "%s: nÃ£o implementado"
 
-#: vms-alpha.c:2380
+#: vms-alpha.c:2382 vms-alpha.c:2397
+#, c-format
+msgid "invalid %s"
+msgstr "%s invÃ¡lido"
+
+#. Divide by zero is supposed to give a result of zero,
+#. and a non-fatal warning message.
+#: vms-alpha.c:2457
+#, c-format
+msgid "%s divide by zero"
+msgstr "%s divide por zero"
+
+#: vms-alpha.c:2523
 #, c-format
 msgid "invalid use of %s with contexts"
 msgstr "uso invÃ¡lido de %s com contextos"
 
-#: vms-alpha.c:2414
+#: vms-alpha.c:2581
 #, c-format
 msgid "reserved cmd %d"
 msgstr "comando reservado %d"
 
-#: vms-alpha.c:2498
+#: vms-alpha.c:2665
 msgid "corrupt EEOM record - size is too small"
 msgstr "Registo EEOM corrupto - tamanho demasiado pequeno"
 
-#: vms-alpha.c:2507
+#: vms-alpha.c:2674
 msgid "object module not error-free !"
 msgstr "MÃ³dulo objecto NÃƒO livre de erros!"
 
-#: vms-alpha.c:3831
+#: vms-alpha.c:4001
 #, c-format
 msgid "SEC_RELOC with no relocs in section %pA"
 msgstr "SEC_RELOC sem relocs na secÃ§Ã£o %pA"
 
-#: vms-alpha.c:3883 vms-alpha.c:4097
+#: vms-alpha.c:4053 vms-alpha.c:4268
 #, c-format
 msgid "size error in section %pA"
 msgstr "Erro de tamanho na secÃ§Ã£o %pA"
 
-#: vms-alpha.c:4043
+#: vms-alpha.c:4213
 msgid "spurious ALPHA_R_BSR reloc"
 msgstr "RelocalizaÃ§Ã£o ALPHA_R_BSR espÃºria"
 
-#: vms-alpha.c:4084
+#: vms-alpha.c:4254
 #, c-format
 msgid "unhandled relocation %s"
 msgstr "RelocalizaÃ§Ã£o %s nÃ£o gerida"
 
-#: vms-alpha.c:4377
+#: vms-alpha.c:4551
 #, c-format
 msgid "unknown source command %d"
 msgstr "Comando fonte %d desconhecido"
 
-#: vms-alpha.c:4438 vms-alpha.c:4444 vms-alpha.c:4450 vms-alpha.c:4456
-#: vms-alpha.c:4462 vms-alpha.c:4489 vms-alpha.c:4495 vms-alpha.c:4501
-#: vms-alpha.c:4507
+#: vms-alpha.c:4612 vms-alpha.c:4618 vms-alpha.c:4624 vms-alpha.c:4630
+#: vms-alpha.c:4636 vms-alpha.c:4663 vms-alpha.c:4669 vms-alpha.c:4675
+#: vms-alpha.c:4681
 #, c-format
 msgid "%s not implemented"
 msgstr "%s: nÃ£o implementado"
 
-#: vms-alpha.c:4550
+#: vms-alpha.c:4724
 #, c-format
 msgid "unknown line command %d"
 msgstr "comando de linha %d desconhecido"
 
-#: vms-alpha.c:5010 vms-alpha.c:5028 vms-alpha.c:5043 vms-alpha.c:5059
-#: vms-alpha.c:5072 vms-alpha.c:5084 vms-alpha.c:5097
+#: vms-alpha.c:5188 vms-alpha.c:5206 vms-alpha.c:5221 vms-alpha.c:5237
+#: vms-alpha.c:5250 vms-alpha.c:5262 vms-alpha.c:5275
 #, c-format
 msgid "unknown reloc %s + %s"
 msgstr "Reloc %s + %s desconhecida"
 
-#: vms-alpha.c:5152
+#: vms-alpha.c:5330
 #, c-format
 msgid "unknown reloc %s"
 msgstr "Reloc %s desconhecida"
 
-#: vms-alpha.c:5166
+#: vms-alpha.c:5344
 msgid "invalid section index in ETIR"
 msgstr "Ã�ndice de secÃ§Ã£o invÃ¡lido em ETIR"
 
-#: vms-alpha.c:5175
+#: vms-alpha.c:5353
 msgid "relocation for non-REL psect"
 msgstr "RelocalizaÃ§Ã£o para psect nÃ£o-REL"
 
-#: vms-alpha.c:5222
+#: vms-alpha.c:5402
 #, c-format
 msgid "unknown symbol in command %s"
 msgstr "SÃ­mbolo desconhecido em comando %s"
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:5816
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr "reloc (%d) Ã© *UNKNOWN*"
 
-#: vms-alpha.c:5752
+#: vms-alpha.c:5932
 #, c-format
 msgid "  EMH %u (len=%u): "
 msgstr "  EMH %u (tam=%u): "
 
-#: vms-alpha.c:5757
+#: vms-alpha.c:5937
 #, c-format
 msgid "   Error: The length is less than the length of an EMH record\n"
 msgstr "   Erro: o tamanho Ã© menor que o tamanho de um registo EMH\n"
 
-#: vms-alpha.c:5774
+#: vms-alpha.c:5954
 #, c-format
 msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
 msgstr "   Erro: o tamanho do registo Ã© menor que o tamanho de um registo EMH_MHD\n"
 
-#: vms-alpha.c:5777
+#: vms-alpha.c:5957
 #, c-format
 msgid "Module header\n"
 msgstr "CabeÃ§alho de mÃ³dulo\n"
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:5958
 #, c-format
 msgid "   structure level: %u\n"
 msgstr "   nÃ­vel de estrutura: %u\n"
 
-#: vms-alpha.c:5779
+#: vms-alpha.c:5959
 #, c-format
 msgid "   max record size: %u\n"
 msgstr "   tam. mÃ¡x registo: %u\n"
 
-#: vms-alpha.c:5785
+#: vms-alpha.c:5965
 #, c-format
 msgid "   Error: The module name is missing\n"
 msgstr "   Erro: nome de mÃ³dulo em falta\n"
 
-#: vms-alpha.c:5791
+#: vms-alpha.c:5971
 #, c-format
 msgid "   Error: The module name is too long\n"
 msgstr "   Erro: nome de mÃ³dulo muito longo\n"
 
-#: vms-alpha.c:5794
+#: vms-alpha.c:5974
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   nome de mÃ³dulo : %.*s\n"
 
-#: vms-alpha.c:5798
+#: vms-alpha.c:5978
 #, c-format
 msgid "   Error: The module version is missing\n"
 msgstr "   Erro: versÃ£o de mÃ³dulo em falta\n"
 
-#: vms-alpha.c:5804
+#: vms-alpha.c:5984
 #, c-format
 msgid "   Error: The module version is too long\n"
 msgstr "   Erro: versÃ£o de mÃ³dulo muito longa\n"
 
-#: vms-alpha.c:5807
+#: vms-alpha.c:5987
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   versÃ£o de mÃ³dulo: %.*s\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:5990
 #, c-format
 msgid "   Error: The compile date is truncated\n"
 msgstr "   Erro: data de compilaÃ§Ã£o truncada\n"
 
-#: vms-alpha.c:5812
+#: vms-alpha.c:5992
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr "   data compilaÃ§Ã£o: %.17s\n"
 
-#: vms-alpha.c:5817
+#: vms-alpha.c:5997
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Nome do processador de linguagem\n"
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:5998
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   nome linguagem: %.*s\n"
 
-#: vms-alpha.c:5822
+#: vms-alpha.c:6002
 #, c-format
 msgid "Source Files Header\n"
 msgstr "CabeÃ§alho de ficheiros fonte\n"
 
-#: vms-alpha.c:5823
+#: vms-alpha.c:6003
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   ficheiro: %.*s\n"
 
-#: vms-alpha.c:5827
+#: vms-alpha.c:6007
 #, c-format
 msgid "Title Text Header\n"
 msgstr "CabeÃ§alho do texto de tÃ­tulo\n"
 
-#: vms-alpha.c:5828
+#: vms-alpha.c:6008
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   tÃ­tulo: %.*s\n"
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6012
 #, c-format
 msgid "Copyright Header\n"
 msgstr "CabeÃ§alho de copyright\n"
 
-#: vms-alpha.c:5833
+#: vms-alpha.c:6013
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   copyright: %.*s\n"
 
-#: vms-alpha.c:5837
+#: vms-alpha.c:6017
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr "sub-tipo emh %u nÃ£o gerido\n"
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6027
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (tam=%u):\n"
 
-#: vms-alpha.c:5852
+#: vms-alpha.c:6032
 #, c-format
 msgid "   Error: The length is less than the length of an EEOM record\n"
 msgstr "   Erro: o tamanho Ã© menor que o tamanho de um registo EEOM\n"
 
-#: vms-alpha.c:5856
+#: vms-alpha.c:6036
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr "   nÃºmero de pares de ligaÃ§Ã£o condicional: %u\n"
 
-#: vms-alpha.c:5858
+#: vms-alpha.c:6038
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   cÃ³digo de conclusÃ£o: %u\n"
 
-#: vms-alpha.c:5862
+#: vms-alpha.c:6042
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr "   transferir band end: 0x%02x\n"
 
-#: vms-alpha.c:5863
+#: vms-alpha.c:6043
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr "   transferir psect end.: %u\n"
 
-#: vms-alpha.c:5865
+#: vms-alpha.c:6045
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr "   transferir endereÃ§o: 0x%08x\n"
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:6054
 msgid " WEAK"
 msgstr " WEAK"
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:6056
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5878
+#: vms-alpha.c:6058
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5880 vms-alpha.c:5901
+#: vms-alpha.c:6060 vms-alpha.c:6081
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:6062
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5884
+#: vms-alpha.c:6064
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5886
+#: vms-alpha.c:6066
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6068
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:6075
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5897
+#: vms-alpha.c:6077
 msgid " LIB"
 msgstr " LIB"
 
-#: vms-alpha.c:5899
+#: vms-alpha.c:6079
 msgid " OVR"
 msgstr " OVR"
 
-#: vms-alpha.c:5903
+#: vms-alpha.c:6083
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5905
+#: vms-alpha.c:6085
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:6087
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:6089
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5911
+#: vms-alpha.c:6091
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5913
+#: vms-alpha.c:6093
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6095
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5917
+#: vms-alpha.c:6097
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:6099
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5928
+#: vms-alpha.c:6108
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (tam=%u):\n"
 
-#: vms-alpha.c:5941
+#: vms-alpha.c:6121
 #, c-format
 msgid "  EGSD entry %2u (type: %u, len: %u): "
 msgstr "  entrada EGSD %2u (tipo: %u, tamanho: %u): "
 
-#: vms-alpha.c:5947 vms-alpha.c:6198
+#: vms-alpha.c:6127 vms-alpha.c:6378
 #, c-format
 msgid "   Error: length larger than remaining space in record\n"
 msgstr "   Erro: tamanho maior que o espaÃ§o restante no registo\n"
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6139
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr "PSC - definiÃ§Ã£o da secÃ§Ã£o Program\n"
 
-#: vms-alpha.c:5960 vms-alpha.c:5977
+#: vms-alpha.c:6140 vms-alpha.c:6157
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   alinhamento  : 2**%u\n"
 
-#: vms-alpha.c:5961 vms-alpha.c:5978
+#: vms-alpha.c:6141 vms-alpha.c:6158
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr "   bandeiras  : 0x%04x"
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6145
 #, c-format
 msgid "   alloc (len): %u (0x%08x)\n"
 msgstr "   aloc. (tam): %u (0x%08x)\n"
 
-#: vms-alpha.c:5966 vms-alpha.c:6023 vms-alpha.c:6072
+#: vms-alpha.c:6146 vms-alpha.c:6203 vms-alpha.c:6252
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   nome       : %.*s\n"
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6156
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr "SPSC - definiÃ§Ã£o de secÃ§Ã£o Shared Image Program\n"
 
-#: vms-alpha.c:5982
+#: vms-alpha.c:6162
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr "   aloc. (tam)   : %u (0x%08x)\n"
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6163
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   desvio imagem : 0x%08x\n"
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6165
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr "   desvio symvec : 0x%08x\n"
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6167
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   nome          : %.*s\n"
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6180
 #, c-format
 msgid "SYM - Global symbol definition\n"
 msgstr "SYM - definiÃ§Ã£o de sÃ­mbolo Global\n"
 
-#: vms-alpha.c:6001 vms-alpha.c:6061 vms-alpha.c:6082 vms-alpha.c:6101
+#: vms-alpha.c:6181 vms-alpha.c:6241 vms-alpha.c:6262 vms-alpha.c:6281
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr "   bandeiras: 0x%04x"
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6184
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr "   desvio psect: 0x%08x\n"
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6188
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   end. de cÃ³d.: 0x%08x\n"
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6190
 #, c-format
 msgid "   psect index for entry point : %u\n"
 msgstr "   Ã­ndice psect do ponto de entrada: %u\n"
 
-#: vms-alpha.c:6013 vms-alpha.c:6089 vms-alpha.c:6108
+#: vms-alpha.c:6193 vms-alpha.c:6269 vms-alpha.c:6288
 #, c-format
 msgid "   psect index : %u\n"
 msgstr "   Ã­ndice psect : %u\n"
 
-#: vms-alpha.c:6015 vms-alpha.c:6091 vms-alpha.c:6110
+#: vms-alpha.c:6195 vms-alpha.c:6271 vms-alpha.c:6290
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   nome        : %.*s\n"
 
-#: vms-alpha.c:6022
+#: vms-alpha.c:6202
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM - referÃªncia de sÃ­mbolo Global\n"
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6214
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr "IDC - verificaÃ§Ã£o Ident Consistency\n"
 
-#: vms-alpha.c:6035
+#: vms-alpha.c:6215
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr "   bandeiras     : 0x%08x"
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6219
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   comparaÃ§Ã£o id : %x\n"
 
-#: vms-alpha.c:6041
+#: vms-alpha.c:6221
 #, c-format
 msgid "   error severity: %x\n"
 msgstr "   severidade do erro: %x\n"
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6224
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   nome entidade : %.*s\n"
 
-#: vms-alpha.c:6046
+#: vms-alpha.c:6226
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   nome objecto  : %.*s\n"
 
-#: vms-alpha.c:6049
+#: vms-alpha.c:6229
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   ident. binÃ¡ria: 0x%08x\n"
 
-#: vms-alpha.c:6052
+#: vms-alpha.c:6232
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   ident. ascii  : %.*s\n"
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6240
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG - definiÃ§Ã£o Universal\n"
 
-#: vms-alpha.c:6064
+#: vms-alpha.c:6244
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr "   desvio do vector de sÃ­mbolo: 0x%08x\n"
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6246
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr "   ponto de entrada: 0x%08x\n"
 
-#: vms-alpha.c:6068
+#: vms-alpha.c:6248
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   descriÃ§Ã£o de procedimento: 0x%08x\n"
 
-#: vms-alpha.c:6070
+#: vms-alpha.c:6250
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   Ã­ndice psect: %u\n"
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6261
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV - definiÃ§Ã£o de sÃ­mbolo Vectored\n"
 
-#: vms-alpha.c:6085
+#: vms-alpha.c:6265
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   vector      : 0x%08x\n"
 
-#: vms-alpha.c:6087 vms-alpha.c:6106
+#: vms-alpha.c:6267 vms-alpha.c:6286
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   desvio psect: %u\n"
 
-#: vms-alpha.c:6100
+#: vms-alpha.c:6280
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr "SYMM - definiÃ§Ã£o de sÃ­mbolo Global com versÃ£o\n"
 
-#: vms-alpha.c:6104
+#: vms-alpha.c:6284
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr "   mÃ¡scara de versÃ£o: 0x%08x\n"
 
-#: vms-alpha.c:6115
+#: vms-alpha.c:6295
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr "tipo de entrada egsd %u nÃ£o gerida\n"
 
-#: vms-alpha.c:6150
+#: vms-alpha.c:6330
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr "    Ã­ndice de ligaÃ§Ã£o: %u, insn de substituiÃ§Ã£o: 0x%08x\n"
 
-#: vms-alpha.c:6154
+#: vms-alpha.c:6334
 #, c-format
 msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
 msgstr "    Ã­nd psect 1: %u, desvio 1: 0x%08x %08x\n"
 
-#: vms-alpha.c:6159
+#: vms-alpha.c:6339
 #, c-format
 msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
 msgstr "    Ã­nd psect 2: %u, desvio 2: 0x%08x %08x\n"
 
-#: vms-alpha.c:6165
+#: vms-alpha.c:6345
 #, c-format
 msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
 msgstr "    Ã­nd psect 3: %u, desvio 3: 0x%08x %08x\n"
 
-#: vms-alpha.c:6170
+#: vms-alpha.c:6350
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "    nome global: %.*s\n"
 
-#: vms-alpha.c:6181
+#: vms-alpha.c:6361
 #, c-format
 msgid "  %s (len=%u+%u):\n"
 msgstr "  %s (tam=%u+%u):\n"
 
-#: vms-alpha.c:6203
+#: vms-alpha.c:6383
 #, c-format
 msgid "   (type: %3u, size: 4+%3u): "
 msgstr "   (tipo: %3u, tam.: 4+%3u): "
 
-#: vms-alpha.c:6207
+#: vms-alpha.c:6387
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr "STA_GBL (stack global) %.*s\n"
 
-#: vms-alpha.c:6211
+#: vms-alpha.c:6391
 #, c-format
 msgid "STA_LW (stack longword) 0x%08x\n"
 msgstr "STA_LW (stack longword) 0x%08x\n"
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6395
 #, c-format
 msgid "STA_QW (stack quadword) 0x%08x %08x\n"
 msgstr "STA_QW (stack quadword) 0x%08x %08x\n"
 
-#: vms-alpha.c:6220
+#: vms-alpha.c:6400
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr "STA_PQ (stack psect base + desvio)\n"
 
-#: vms-alpha.c:6222
+#: vms-alpha.c:6402
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr "    psect: %u, desvio: 0x%08x %08x\n"
 
-#: vms-alpha.c:6228
+#: vms-alpha.c:6408
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr "STA_LI (stack literal)\n"
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6411
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr "STA_MOD (stack mÃ³dulo)\n"
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6414
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr "STA_CKARG (comparar argumento de procedimento)\n"
 
-#: vms-alpha.c:6238
+#: vms-alpha.c:6418
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (armazenar byte)\n"
 
-#: vms-alpha.c:6241
+#: vms-alpha.c:6421
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (armazenar word)\n"
 
-#: vms-alpha.c:6244
+#: vms-alpha.c:6424
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (armazenar longword)\n"
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6427
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (armazenar quadword)\n"
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6433
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr "STO_IMMR (armazenar repetiÃ§Ã£o imediata) %u bytes\n"
 
-#: vms-alpha.c:6260
+#: vms-alpha.c:6440
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (armazenar global) %.*s\n"
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6444
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr "STO_CA (armazenar endereÃ§o de cÃ³digo) %.*s\n"
 
-#: vms-alpha.c:6268
+#: vms-alpha.c:6448
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr "STO_RB (armazenar ramo relativo)\n"
 
-#: vms-alpha.c:6271
+#: vms-alpha.c:6451
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr "STO_AB (armazenar ramo absoluto)\n"
 
-#: vms-alpha.c:6274
+#: vms-alpha.c:6454
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr "STO_OFF (armazenar desvio para psect)\n"
 
-#: vms-alpha.c:6280
+#: vms-alpha.c:6460
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr "STO_IMM (armazenar imediato) %u bytes\n"
 
-#: vms-alpha.c:6287
+#: vms-alpha.c:6467
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr "STO_GBL_LW (armazenar longword global) %.*s\n"
 
-#: vms-alpha.c:6291
+#: vms-alpha.c:6471
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr "STO_OFF ( global LP com assinatura de procedimento)\n"
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6474
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr "STO_BR_GBL ( global ramo global) *todo*\n"
 
-#: vms-alpha.c:6297
+#: vms-alpha.c:6477
 #, c-format
 msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
 msgstr "STO_BR_PS ( global ramo psect + desvio) *todo*\n"
 
-#: vms-alpha.c:6301
+#: vms-alpha.c:6481
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr "OPR_NOP (sem-operaÃ§Ã£o)\n"
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6484
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr "OPR_ADD (adicionar)\n"
 
-#: vms-alpha.c:6307
+#: vms-alpha.c:6487
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr "OPR_SUB (subtrair)\n"
 
-#: vms-alpha.c:6310
+#: vms-alpha.c:6490
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (multiplicar)\n"
 
-#: vms-alpha.c:6313
+#: vms-alpha.c:6493
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (dividir)\n"
 
-#: vms-alpha.c:6316
+#: vms-alpha.c:6496
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr "OPR_AND (e lÃ³gico)\n"
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6499
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr "OPR_IOR (ou inclusivo lÃ³gico)\n"
 
-#: vms-alpha.c:6322
+#: vms-alpha.c:6502
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr "OPR_EOR (ou exclusivo lÃ³gico)\n"
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6505
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (negar)\n"
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6508
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (complementar)\n"
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6511
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (inserir campo)\n"
 
-#: vms-alpha.c:6334
+#: vms-alpha.c:6514
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (mudanÃ§a aritmÃ©tica)\n"
 
-#: vms-alpha.c:6337
+#: vms-alpha.c:6517
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (mudanÃ§a nÃ£o assinada)\n"
 
-#: vms-alpha.c:6340
+#: vms-alpha.c:6520
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (rodar)\n"
 
-#: vms-alpha.c:6343
+#: vms-alpha.c:6523
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (seleccionar)\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6526
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr "OPR_REDEF (redefinir sÃ­mbolo para localizaÃ§Ã£o actual)\n"
 
-#: vms-alpha.c:6349
+#: vms-alpha.c:6529
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr "OPR_REDEF (definir um literal)\n"
 
-#: vms-alpha.c:6353
+#: vms-alpha.c:6533
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr "STC_LP (armazenar par de ligaÃ§Ã£o condicional)\n"
 
-#: vms-alpha.c:6357
+#: vms-alpha.c:6537
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr "STC_LP_PSB (armazenar par de ligaÃ§Ã£o condicional + assinatura)\n"
 
-#: vms-alpha.c:6359
+#: vms-alpha.c:6539
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr "   Ã­ndice de ligaÃ£o: %u, procedimento: %.*s\n"
 
-#: vms-alpha.c:6362
+#: vms-alpha.c:6542
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   assinatura: %.*s\n"
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6545
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (armazenar global condicional)\n"
 
-#: vms-alpha.c:6367
+#: vms-alpha.c:6547
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr "   Ã­ndice de ligaÃ§Ã£o: %u, global: %.*s\n"
 
-#: vms-alpha.c:6371
+#: vms-alpha.c:6551
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr "STC_GCA (armazenar endereÃ§o de cÃ³digo condicional)\n"
 
-#: vms-alpha.c:6373
+#: vms-alpha.c:6553
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr "   Ã­ndice de ligaÃ§Ã£o: %u, nome do procedimento: %.*s\n"
 
-#: vms-alpha.c:6377
+#: vms-alpha.c:6557
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr "STC_PS (armazenar psect condicional + desvio)\n"
 
-#: vms-alpha.c:6380
+#: vms-alpha.c:6560
 #, c-format
 msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
 msgstr "   Ã­ndice de ligaÃ§Ã£o: %u, psect: %u, desvio: 0x%08x %08x\n"
 
-#: vms-alpha.c:6387
+#: vms-alpha.c:6567
 #, c-format
 msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
 msgstr "STC_NOP_GBL (armazenar NOP condicional em endereÃ§o global)\n"
 
-#: vms-alpha.c:6391
+#: vms-alpha.c:6571
 #, c-format
 msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
 msgstr "STC_NOP_PS (armazenar NOP condicional em psect + desvio)\n"
 
-#: vms-alpha.c:6395
+#: vms-alpha.c:6575
 #, c-format
 msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
 msgstr "STC_BSR_GBL (armazenar BSR condicional em endereÃ§o global)\n"
 
-#: vms-alpha.c:6399
+#: vms-alpha.c:6579
 #, c-format
 msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
 msgstr "STC_BSR_PS (armazenar BSR condicional em psect + desvio)\n"
 
-#: vms-alpha.c:6403
+#: vms-alpha.c:6583
 #, c-format
 msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
 msgstr "STC_LDA_GBL (armazenar LDA condicional em endereÃ§o global)\n"
 
-#: vms-alpha.c:6407
+#: vms-alpha.c:6587
 #, c-format
 msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
 msgstr "STC_LDA_PS (armazenar LDA condicional em psect + desvio)\n"
 
-#: vms-alpha.c:6411
+#: vms-alpha.c:6591
 #, c-format
 msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
 msgstr "STC_BOH_GBL (armazenar BOH condicional em endereÃ§o global)\n"
 
-#: vms-alpha.c:6415
+#: vms-alpha.c:6595
 #, c-format
 msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
 msgstr "STC_BOH_PS (armazenar BOH condicional em psect + desvio)\n"
 
-#: vms-alpha.c:6420
+#: vms-alpha.c:6600
 #, c-format
 msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
 msgstr "STC_NBH_GBL (armazenar condicional ou dica em endereÃ§o global)\n"
 
-#: vms-alpha.c:6424
+#: vms-alpha.c:6604
 #, c-format
 msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
 msgstr "STC_NBH_PS (armazenar condicional ou dica em psect + desvio)\n"
 
-#: vms-alpha.c:6428
+#: vms-alpha.c:6608
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr "CTL_SETRB (definir base de relocalizaÃ§Ã£o)\n"
 
-#: vms-alpha.c:6434
+#: vms-alpha.c:6614
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr "CTL_AUGRB (aumentar base de relocalizaÃ§Ã£o) %u\n"
 
-#: vms-alpha.c:6438
+#: vms-alpha.c:6618
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (definir localizaÃ§Ã£o)\n"
 
-#: vms-alpha.c:6441
+#: vms-alpha.c:6621
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (definir localizaÃ§Ã£o)\n"
 
-#: vms-alpha.c:6444
+#: vms-alpha.c:6624
 #, c-format
 msgid "CTL_STKDL (stack defined location)\n"
 msgstr "CTL_STKDL (localizaÃ§Ã£o definida por stack)\n"
 
-#: vms-alpha.c:6447 vms-alpha.c:6871 vms-alpha.c:6997
+#: vms-alpha.c:6627 vms-alpha.c:7051 vms-alpha.c:7177
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*nÃ£o gerido*\n"
 
-#: vms-alpha.c:6477 vms-alpha.c:6516
+#: vms-alpha.c:6657 vms-alpha.c:6696
 #, c-format
 msgid "cannot read GST record length\n"
 msgstr "impossÃ­vel ler tamanho do registo GST\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6498
+#: vms-alpha.c:6678
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr "impossÃ­vel encontrar EMH no primeiro registo GST\n"
 
-#: vms-alpha.c:6524
+#: vms-alpha.c:6704
 #, c-format
 msgid "cannot read GST record header\n"
 msgstr "impossÃ­vel ler cabeÃ§alho de registo GST\n"
 
-#: vms-alpha.c:6537
+#: vms-alpha.c:6717
 #, c-format
 msgid " corrupted GST\n"
 msgstr " GST corrompido\n"
 
-#: vms-alpha.c:6545
+#: vms-alpha.c:6725
 #, c-format
 msgid "cannot read GST record\n"
 msgstr "impossÃ­vel ler registo GST\n"
 
-#: vms-alpha.c:6574
+#: vms-alpha.c:6754
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr " tipo de registo EOBJ %u nÃ£o gerido\n"
 
-#: vms-alpha.c:6598
+#: vms-alpha.c:6778
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr "  bitcount: %u, endereÃ§o base: 0x%08x\n"
 
-#: vms-alpha.c:6612
+#: vms-alpha.c:6792
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr "   bitmap: 0x%08x (total: %u):\n"
 
-#: vms-alpha.c:6619
+#: vms-alpha.c:6799
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6645
+#: vms-alpha.c:6825
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr "  imagem %u (%u entradas)\n"
 
-#: vms-alpha.c:6651
+#: vms-alpha.c:6831
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr "   desvio: 0x%08x, val: 0x%08x\n"
 
-#: vms-alpha.c:6673
+#: vms-alpha.c:6853
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr "  imagem %u (%u entradas), desvios:\n"
 
-#: vms-alpha.c:6680
+#: vms-alpha.c:6860
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6802
+#: vms-alpha.c:6982
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr "64 bits *nÃ£o geridos*\n"
 
-#: vms-alpha.c:6807
+#: vms-alpha.c:6987
 #, c-format
 msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
 msgstr "classe: %u, dtype: %u, tamanho: %u, ponteiro: 0x%08x\n"
 
-#: vms-alpha.c:6818
+#: vms-alpha.c:6998
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr "matriz nÃ£o contÃ­nua de %s\n"
 
-#: vms-alpha.c:6823
+#: vms-alpha.c:7003
 #, c-format
 msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
 msgstr "dimct: %u, aflags: 0x%02x, dÃ­gitos: %u, escala: %u\n"
 
-#: vms-alpha.c:6828
+#: vms-alpha.c:7008
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr "arsize: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6832
+#: vms-alpha.c:7012
 #, c-format
 msgid "Strides:\n"
 msgstr "Passos:\n"
 
-#: vms-alpha.c:6842
+#: vms-alpha.c:7022
 #, c-format
 msgid "Bounds:\n"
 msgstr "VÃ­nculos:\n"
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7028
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr "[%u]: inferior: %u, superior: %u\n"
 
-#: vms-alpha.c:6860
+#: vms-alpha.c:7040
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr "cadeia de bits nÃ£o alinhada de %s\n"
 
-#: vms-alpha.c:6865
+#: vms-alpha.c:7045
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "base: %u, pos: %u\n"
 
-#: vms-alpha.c:6886
+#: vms-alpha.c:7066
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr "vflags: 0x%02x, valor: 0x%08x "
 
-#: vms-alpha.c:6892
+#: vms-alpha.c:7072
 #, c-format
 msgid "(no value)\n"
 msgstr "(sem valor)\n"
 
-#: vms-alpha.c:6895
+#: vms-alpha.c:7075
 #, c-format
 msgid "(not active)\n"
 msgstr "(nÃ£o activo)\n"
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7078
 #, c-format
 msgid "(not allocated)\n"
 msgstr "(nÃ£o alocada)\n"
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7081
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(descritor)\n"
 
-#: vms-alpha.c:6905
+#: vms-alpha.c:7085
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(valor inicial)\n"
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7088
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(spec de valor segue)\n"
 
-#: vms-alpha.c:6911
+#: vms-alpha.c:7091
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr "(no desvio de bit %u)\n"
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7095
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr "(reg: %u, disp: %u, indir: %u, tipo: "
 
-#: vms-alpha.c:6922
+#: vms-alpha.c:7102
 msgid "literal"
 msgstr "literal"
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7105
 msgid "address"
 msgstr "endereÃ§o"
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7108
 msgid "desc"
 msgstr "desc"
 
-#: vms-alpha.c:6931
+#: vms-alpha.c:7111
 msgid "reg"
 msgstr "reg"
 
-#: vms-alpha.c:6948
+#: vms-alpha.c:7128
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr "tam: %2u, tipo: %2u "
 
-#: vms-alpha.c:6954
+#: vms-alpha.c:7134
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr "atÃ³mico, tipo=0x%02x %s\n"
 
-#: vms-alpha.c:6958
+#: vms-alpha.c:7138
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr "indirecto, definido em 0x%08x\n"
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7142
 #, c-format
 msgid "typed pointer\n"
 msgstr "ponteiro com tipo\n"
 
-#: vms-alpha.c:6966
+#: vms-alpha.c:7146
 #, c-format
 msgid "pointer\n"
 msgstr "ponteiro\n"
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7154
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr "matriz, dim: %u, bitmap: "
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7161
 #, c-format
 msgid "array descriptor:\n"
 msgstr "descritor de matriz:\n"
 
-#: vms-alpha.c:6988
+#: vms-alpha.c:7168
 #, c-format
 msgid "type spec for element:\n"
 msgstr "tipo de  spec para elemento:\n"
 
-#: vms-alpha.c:6990
+#: vms-alpha.c:7170
 #, c-format
 msgid "type spec for subscript %u:\n"
 msgstr "tipo de spec para subscrito %u:\n"
 
-#: vms-alpha.c:7008
+#: vms-alpha.c:7188
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr "Tabela de sÃ­mbolos de depuraÃ§Ã£o:\n"
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7199
 #, c-format
 msgid "cannot read DST header\n"
 msgstr "impossÃ­vel ler cabeÃ§alho DST\n"
 
-#: vms-alpha.c:7025
+#: vms-alpha.c:7205
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr " tipo: %3u, tam: %3u (em 0x%08x): "
 
-#: vms-alpha.c:7039
+#: vms-alpha.c:7219
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr "impossÃ­vel ler sÃ­mbolo DST\n"
 
-#: vms-alpha.c:7082
+#: vms-alpha.c:7262
 #, c-format
 msgid "standard data: %s\n"
 msgstr "dados standard: %s\n"
 
-#: vms-alpha.c:7085 vms-alpha.c:7173
+#: vms-alpha.c:7265 vms-alpha.c:7353
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    nome: %.*s\n"
 
-#: vms-alpha.c:7092
+#: vms-alpha.c:7272
 #, c-format
 msgid "modbeg\n"
 msgstr "modbeg\n"
 
-#: vms-alpha.c:7094
+#: vms-alpha.c:7274
 #, c-format
 msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
 msgstr "   bands: %d, linguagem: %u, principal: %u, menor: %u\n"
 
-#: vms-alpha.c:7100 vms-alpha.c:7374
+#: vms-alpha.c:7280 vms-alpha.c:7554
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr "   nome mÃ³dulo: %.*s\n"
 
-#: vms-alpha.c:7103
+#: vms-alpha.c:7283
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   compilador : %.*s\n"
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7288
 #, c-format
 msgid "modend\n"
 msgstr "modend\n"
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7295
 msgid "rtnbeg\n"
 msgstr "rtnbeg\n"
 
-#: vms-alpha.c:7117
+#: vms-alpha.c:7297
 #, c-format
 msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
 msgstr "    bands: %u, endereÃ§o: 0x%08x, endereÃ§o pd: 0x%08x\n"
 
-#: vms-alpha.c:7122
+#: vms-alpha.c:7302
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr "    nome da rotina: %.*s\n"
 
-#: vms-alpha.c:7130
+#: vms-alpha.c:7310
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr "rtnend: tamanho 0x%08x\n"
 
-#: vms-alpha.c:7138
+#: vms-alpha.c:7318
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr "prÃ³logo: bkpt endereÃ§o 0x%08x\n"
 
-#: vms-alpha.c:7147
+#: vms-alpha.c:7327
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr "epÃ­logo: bandeiras: %u, total: %u\n"
 
-#: vms-alpha.c:7157
+#: vms-alpha.c:7337
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr "blkbeg: endereÃ§o: 0x%08x, nome: %.*s\n"
 
-#: vms-alpha.c:7166
+#: vms-alpha.c:7346
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr "blkend: tamanho: 0x%08x\n"
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7352
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "typspec (tam: %u)\n"
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7359
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr "septyp, nome: %.*s\n"
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7368
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr "recbeg: nome: %.*s\n"
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7370
 #, c-format
 msgid "    len: %u bits\n"
 msgstr "    tam: %u bits\n"
 
-#: vms-alpha.c:7195
+#: vms-alpha.c:7375
 #, c-format
 msgid "recend\n"
 msgstr "recend\n"
 
-#: vms-alpha.c:7199
+#: vms-alpha.c:7379
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr "enumbeg, tam: %u, nome: %.*s\n"
 
-#: vms-alpha.c:7203
+#: vms-alpha.c:7383
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr "enumelt, nome: %.*s\n"
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7387
 #, c-format
 msgid "enumend\n"
 msgstr "enumend\n"
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7392
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr "etiqueta, nome: %.*s\n"
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7394
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr "    endereÃ§o: 0x%08x\n"
 
-#: vms-alpha.c:7224
+#: vms-alpha.c:7404
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "intervalo descontÃ­nuo (nr: %u)\n"
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7407
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    endereÃ§o: 0x%08x, tamanho: %u\n"
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7417
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "nÂº linha  (tam: %u)\n"
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7434
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:7261
+#: vms-alpha.c:7441
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:7267
+#: vms-alpha.c:7447
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7273
+#: vms-alpha.c:7453
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7279
+#: vms-alpha.c:7459
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7284
+#: vms-alpha.c:7464
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7289
+#: vms-alpha.c:7469
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7294
+#: vms-alpha.c:7474
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7478
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7483
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7485
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7310
+#: vms-alpha.c:7490
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7312
+#: vms-alpha.c:7492
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7318
+#: vms-alpha.c:7498
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "delta pc +%-4d"
 
-#: vms-alpha.c:7322
+#: vms-alpha.c:7502
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x line: %5u\n"
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7507
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    cmd *nÃ£o gerido* %u\n"
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7522
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "fonte (tam: %u)\n"
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7537
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
 msgstr "   declfile: tam: %u, bands: %u, idfich: %u\n"
 
-#: vms-alpha.c:7362
+#: vms-alpha.c:7542
 #, c-format
 msgid "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 msgstr "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 
-#: vms-alpha.c:7371
+#: vms-alpha.c:7551
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   nomeficheiro: %.*s\n"
 
-#: vms-alpha.c:7380
+#: vms-alpha.c:7560
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7385 vms-alpha.c:7390
+#: vms-alpha.c:7565 vms-alpha.c:7570
 #, c-format
 msgid "   setrec %u\n"
 msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7395 vms-alpha.c:7400
+#: vms-alpha.c:7575 vms-alpha.c:7580
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7405 vms-alpha.c:7410
+#: vms-alpha.c:7585 vms-alpha.c:7590
 #, c-format
 msgid "   deflines %u\n"
 msgstr "   deflines %u\n"
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:7594
 #, c-format
 msgid "   formfeed\n"
 msgstr "   formfeed\n"
 
-#: vms-alpha.c:7418
+#: vms-alpha.c:7598
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   cmd *nÃ£o gerido* %u\n"
 
-#: vms-alpha.c:7430
+#: vms-alpha.c:7610
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "tipo DST *nÃ£o gerido* %u\n"
 
-#: vms-alpha.c:7462
+#: vms-alpha.c:7642
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr "impossÃ­vel ler EIHD\n"
 
-#: vms-alpha.c:7466
+#: vms-alpha.c:7646
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr "EIHD: (tamanho: %u, nÂº blocos: %u)\n"
 
-#: vms-alpha.c:7470
+#: vms-alpha.c:7650
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " majorid: %u, minorid: %u\n"
 
-#: vms-alpha.c:7478
+#: vms-alpha.c:7658
 msgid "executable"
 msgstr "executÃ¡vel"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:7661
 msgid "linkable image"
 msgstr "imagem ligÃ¡vel"
 
-#: vms-alpha.c:7488
+#: vms-alpha.c:7668
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " tipo de imagem: %u (%s)"
 
-#: vms-alpha.c:7494
+#: vms-alpha.c:7674
 msgid "native"
 msgstr "nativo"
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:7677
 msgid "CLI"
 msgstr "CLI"
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:7684
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", sub-tipo: %u (%s)\n"
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:7691
 #, c-format
 msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 msgstr " desvios: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 
-#: vms-alpha.c:7515
+#: vms-alpha.c:7695
 #, c-format
 msgid " fixup info rva: "
 msgstr " fixup info rva: "
 
-#: vms-alpha.c:7517
+#: vms-alpha.c:7697
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", vector sÃ­mbolo rva: "
 
-#: vms-alpha.c:7520
+#: vms-alpha.c:7700
 #, c-format
 msgid ""
 "\n"
@@ -7269,474 +7623,474 @@ msgstr ""
 "\n"
 " matriz de versÃ£o off: %u\n"
 
-#: vms-alpha.c:7525
+#: vms-alpha.c:7705
 #, c-format
 msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
 msgstr " total img I/O: %u, nÂº canais: %u, req pri: %08x%08x\n"
 
-#: vms-alpha.c:7531
+#: vms-alpha.c:7711
 #, c-format
 msgid " linker flags: %08x:"
 msgstr " bands linker: %08x:"
 
-#: vms-alpha.c:7562
+#: vms-alpha.c:7742
 #, c-format
 msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 msgstr " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 
-#: vms-alpha.c:7568
+#: vms-alpha.c:7748
 #, c-format
 msgid " BPAGE: %u"
 msgstr " BPAGE: %u"
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:7755
 #, c-format
 msgid ", ext fixup offset: %u, no_opt psect off: %u"
 msgstr ", desvio ext fixup: %u, no_opt psect off: %u"
 
-#: vms-alpha.c:7578
+#: vms-alpha.c:7758
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", aliÃ¡s: %u\n"
 
-#: vms-alpha.c:7586
+#: vms-alpha.c:7766
 #, c-format
 msgid "system version array information:\n"
 msgstr "informaÃ§Ã£o da matriz de versÃ£o do sistema:\n"
 
-#: vms-alpha.c:7590
+#: vms-alpha.c:7770
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr "impossÃ­vel ler cabeÃ§alho EIHVN\n"
 
-#: vms-alpha.c:7600
+#: vms-alpha.c:7780
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr "impossÃ­vel ler versÃ£o EIHVN\n"
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:7783
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:7787
 msgid "BASE_IMAGE       "
 msgstr "BASE_IMAGE       "
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:7790
 msgid "MEMORY_MANAGEMENT"
 msgstr "MEMORY_MANAGEMENT"
 
-#: vms-alpha.c:7613
+#: vms-alpha.c:7793
 msgid "IO               "
 msgstr "IO               "
 
-#: vms-alpha.c:7616
+#: vms-alpha.c:7796
 msgid "FILES_VOLUMES    "
 msgstr "FILES_VOLUMES    "
 
-#: vms-alpha.c:7619
+#: vms-alpha.c:7799
 msgid "PROCESS_SCHED    "
 msgstr "PROCESS_SCHED    "
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:7802
 msgid "SYSGEN           "
 msgstr "SYSGEN           "
 
-#: vms-alpha.c:7625
+#: vms-alpha.c:7805
 msgid "CLUSTERS_LOCKMGR "
 msgstr "CLUSTERS_LOCKMGR "
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:7808
 msgid "LOGICAL_NAMES    "
 msgstr "LOGICAL_NAMES    "
 
-#: vms-alpha.c:7631
+#: vms-alpha.c:7811
 msgid "SECURITY         "
 msgstr "SECURITY         "
 
-#: vms-alpha.c:7634
+#: vms-alpha.c:7814
 msgid "IMAGE_ACTIVATOR  "
 msgstr "IMAGE_ACTIVATOR  "
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:7817
 msgid "NETWORKS         "
 msgstr "NETWORKS         "
 
-#: vms-alpha.c:7640
+#: vms-alpha.c:7820
 msgid "COUNTERS         "
 msgstr "COUNTERS         "
 
-#: vms-alpha.c:7643
+#: vms-alpha.c:7823
 msgid "STABLE           "
 msgstr "STABLE           "
 
-#: vms-alpha.c:7646
+#: vms-alpha.c:7826
 msgid "MISC             "
 msgstr "MISC             "
 
-#: vms-alpha.c:7649
+#: vms-alpha.c:7829
 msgid "CPU              "
 msgstr "CPU              "
 
-#: vms-alpha.c:7652
+#: vms-alpha.c:7832
 msgid "VOLATILE         "
 msgstr "VOLATILE         "
 
-#: vms-alpha.c:7655
+#: vms-alpha.c:7835
 msgid "SHELL            "
 msgstr "SHELL            "
 
-#: vms-alpha.c:7658
+#: vms-alpha.c:7838
 msgid "POSIX            "
 msgstr "POSIX            "
 
-#: vms-alpha.c:7661
+#: vms-alpha.c:7841
 msgid "MULTI_PROCESSING "
 msgstr "MULTI_PROCESSING "
 
-#: vms-alpha.c:7664
+#: vms-alpha.c:7844
 msgid "GALAXY           "
 msgstr "GALAXY           "
 
-#: vms-alpha.c:7667
+#: vms-alpha.c:7847
 msgid "*unknown*        "
 msgstr "*desconhecido*   "
 
-#: vms-alpha.c:7683 vms-alpha.c:7958
+#: vms-alpha.c:7863 vms-alpha.c:8137
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr "impossÃ­vel ler EIHA\n"
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:7866
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr "ActivaÃ§Ã£o da imagem:  (tam=%u)\n"
 
-#: vms-alpha.c:7689
+#: vms-alpha.c:7869
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr " 1Âº endereÃ§o: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7693
+#: vms-alpha.c:7873
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr " 2Âº endereÃ§o: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7697
+#: vms-alpha.c:7877
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr " 3Âº endereÃ§o: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7701
+#: vms-alpha.c:7881
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr " 4Âº endereÃ§o: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7705
+#: vms-alpha.c:7885
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr " Imagem partilhada: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7716
+#: vms-alpha.c:7896
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr "impossÃ­vel ler EIHI\n"
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:7900
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr "IdentificaÃ§Ã£o da imagem: (principal: %u, menor: %u)\n"
 
-#: vms-alpha.c:7723
+#: vms-alpha.c:7903
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr " nome da imagem   : %.*s\n"
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:7905
 #, c-format
 msgid " link time        : %s\n"
 msgstr " hora de ligaÃ§Ã£o  : %s\n"
 
-#: vms-alpha.c:7727
+#: vms-alpha.c:7907
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " ident imagem     : %.*s\n"
 
-#: vms-alpha.c:7729
+#: vms-alpha.c:7909
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " ident linker     : %.*s\n"
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:7911
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr " ident build imagem: %.*s\n"
 
-#: vms-alpha.c:7741
+#: vms-alpha.c:7921
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr "impossÃ­vel ler EIHS\n"
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:7925
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr "Tabela de sÃ­mbolo de imagem e depuraÃ§Ã£o: (principal: %u, menor: %u)\n"
 
-#: vms-alpha.c:7751
+#: vms-alpha.c:7931
 #, c-format
 msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
 msgstr " tabela de sÃ­mbolo de depuraÃ§Ã£o : vbn: %u, tamanho: %u (0x%x)\n"
 
-#: vms-alpha.c:7756
+#: vms-alpha.c:7936
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr " tabela de sÃ­mbolo global: vbn: %u, registos: %u\n"
 
-#: vms-alpha.c:7761
+#: vms-alpha.c:7941
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr " tabela de mÃ³dulo de depuraÃ§Ã£o: vbn: %u, tamanho: %u\n"
 
-#: vms-alpha.c:7774
+#: vms-alpha.c:7954
 #, c-format
 msgid "cannot read EISD\n"
 msgstr "impossÃ­vel ler EISD\n"
 
-#: vms-alpha.c:7785
+#: vms-alpha.c:7965
 #, c-format
 msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
 msgstr "Descritor de secÃ§Ã£o de imagem: (principal: %u, menor: %u, tamanho: %u, desvio: %u)\n"
 
-#: vms-alpha.c:7793
+#: vms-alpha.c:7973
 #, c-format
 msgid " section: base: 0x%08x%08x size: 0x%08x\n"
 msgstr " secÃ§Ã£o: base: 0x%08x%08x tamanho: 0x%08x\n"
 
-#: vms-alpha.c:7798
+#: vms-alpha.c:7978
 #, c-format
 msgid " flags: 0x%04x"
 msgstr " bandeiras: 0x%04x"
 
-#: vms-alpha.c:7836
+#: vms-alpha.c:8016
 #, c-format
 msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 msgstr " vbn: %u, pfc: %u, matchctl: %u tipo: %u ("
 
-#: vms-alpha.c:7842
+#: vms-alpha.c:8022
 msgid "NORMAL"
 msgstr "NORMAL"
 
-#: vms-alpha.c:7845
+#: vms-alpha.c:8025
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:8028
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7851
+#: vms-alpha.c:8031
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7854
+#: vms-alpha.c:8034
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7857
+#: vms-alpha.c:8037
 msgid "USRSTACK"
 msgstr "USRSTACK"
 
-#: vms-alpha.c:7863
+#: vms-alpha.c:8043
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7866
+#: vms-alpha.c:8046
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " ident: 0x%08x, nome: %.*s\n"
 
-#: vms-alpha.c:7876
+#: vms-alpha.c:8056
 #, c-format
 msgid "cannot read DMT\n"
 msgstr "impossÃ­vel ler DMT\n"
 
-#: vms-alpha.c:7880
+#: vms-alpha.c:8060
 #, c-format
 msgid "Debug module table:\n"
 msgstr "Tabela de mÃ³dulo de depuraÃ§Ã£o:\n"
 
-#: vms-alpha.c:7889
+#: vms-alpha.c:8069
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr "impossÃ­vel ler cabeÃ§alho DMT\n"
 
-#: vms-alpha.c:7895
+#: vms-alpha.c:8075
 #, c-format
 msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
 msgstr " desvio do mÃ³dulo: 0x%08x, tamanho: 0x%08x, (%u psects)\n"
 
-#: vms-alpha.c:7905
+#: vms-alpha.c:8085
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr "impossÃ­vel ler psect DMT\n"
 
-#: vms-alpha.c:7909
+#: vms-alpha.c:8089
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr "  inÃ­cio psect: 0x%08x, tamanho: %u\n"
 
-#: vms-alpha.c:7922
+#: vms-alpha.c:8102
 #, c-format
 msgid "cannot read DST\n"
 msgstr "impossÃ­vel ler DST\n"
 
-#: vms-alpha.c:7932
+#: vms-alpha.c:8112
 #, c-format
 msgid "cannot read GST\n"
 msgstr "impossÃ­vel ler GST\n"
 
-#: vms-alpha.c:7936
+#: vms-alpha.c:8116
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Tabela de sÃ­mbolo global:\n"
 
-#: vms-alpha.c:7965
+#: vms-alpha.c:8143
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr "Fixup do activador de imagem: (principal: %u, menor: %u)\n"
 
-#: vms-alpha.c:7969
+#: vms-alpha.c:8147
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr "  iaflink : 0x%08x %08x\n"
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8151
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr "  fixuplnk: 0x%08x %08x\n"
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8154
 #, c-format
 msgid "  size : %u\n"
 msgstr "  tamanho: %u\n"
 
-#: vms-alpha.c:7978
+#: vms-alpha.c:8156
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr "  bandeiras: 0x%08x\n"
 
-#: vms-alpha.c:7983
+#: vms-alpha.c:8161
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7988
+#: vms-alpha.c:8166
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8171
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8174
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:8000
+#: vms-alpha.c:8178
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:8003
+#: vms-alpha.c:8181
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8184
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:8008
+#: vms-alpha.c:8186
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:8016
+#: vms-alpha.c:8194
 #, c-format
 msgid " Shareable images:\n"
 msgstr " Imagens partilhÃ¡veis:\n"
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8199
 #, c-format
 msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
 msgstr "  %u: tam.: %u, bands: 0x%02x, nome: %.*s\n"
 
-#: vms-alpha.c:8028
+#: vms-alpha.c:8206
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr " fixups de relocalizaÃ§Ã£o de quad-word:\n"
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8211
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr " fixups de relocalizaÃ§Ã£o de long-word:\n"
 
-#: vms-alpha.c:8038
+#: vms-alpha.c:8216
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr " fixups de referÃªncia de .address de quad-word:\n"
 
-#: vms-alpha.c:8043
+#: vms-alpha.c:8221
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr " fixups de referÃªncia de .address de long-word:\n"
 
-#: vms-alpha.c:8048
+#: vms-alpha.c:8226
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr " Fixups de referÃªncia de endereÃ§o de cÃ³digo:\n"
 
-#: vms-alpha.c:8053
+#: vms-alpha.c:8231
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr "Fixups de referÃªncia de pares de ligaÃ§Ã£o:\n"
 
-#: vms-alpha.c:8062
+#: vms-alpha.c:8240
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " Alterar protecÃ§Ã£o (%u entradas):\n"
 
-#: vms-alpha.c:8068
+#: vms-alpha.c:8246
 #, c-format
 msgid "  base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "
 msgstr "  base: 0x%08x %08x, tam.: 0x%08x, prot: 0x%08x "
 
 #. FIXME: we do not yet support relocatable link.  It is not obvious
 #. how to do it for debug infos.
-#: vms-alpha.c:8908
+#: vms-alpha.c:9123
 msgid "%P: relocatable link is not supported\n"
 msgstr "%P: ligaÃ§Ã£o relocalizÃ¡vel nÃ£o suportada\n"
 
-#: vms-alpha.c:8979
+#: vms-alpha.c:9194
 #, c-format
 msgid "%P: multiple entry points: in modules %pB and %pB\n"
 msgstr "%P: mÃºltiplos pontos de entrada: nos mÃ³dulos %pB e %pB\n"
 
-#: vms-lib.c:1445
+#: vms-lib.c:1525
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr "impossÃ­vel abrir imagem partilhada \"%s\" de \"%s\""
 
-#: vms-misc.c:361
+#: vms-misc.c:367
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr "_bfd_vms_output_counted chamado com zero bytes"
 
-#: vms-misc.c:366
+#: vms-misc.c:372
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "_bfd_vms_output_counted chamado com demasiados bytes"
 
@@ -7750,172 +8104,209 @@ msgstr "%pB: objecto partilhado XCOFF se
 msgid "%pB: dynamic object with no .loader section"
 msgstr "%pB: objecto dinÃ¢mico sem secÃ§Ã£o .loader"
 
-#: xcofflink.c:1413
+#: xcofflink.c:1417
 #, c-format
 msgid "%pB: `%s' has line numbers but no enclosing section"
 msgstr "%pB: \"%s\" tem nÃºmeros de linha mas sem secÃ§Ã£o envolvente"
 
-#: xcofflink.c:1466
+#: xcofflink.c:1470
 #, c-format
 msgid "%pB: class %d symbol `%s' has no aux entries"
 msgstr "%pB: classe %d sÃ­mbolo \"%s\" nÃ£o tem entradas aux"
 
-#: xcofflink.c:1489
+#: xcofflink.c:1493
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized csect type %d"
 msgstr "%pB: sÃ­mbolo \"%s\" tem tipo csect %d nÃ£o reconhecido"
 
-#: xcofflink.c:1502
+#: xcofflink.c:1506
 #, c-format
 msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
 msgstr "%pB: mau sÃ­mbolo XTY_ER \"%s\": classe %d scnum %d scnlen %<PRId64>"
 
-#: xcofflink.c:1533
+#: xcofflink.c:1537
 #, c-format
 msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
 msgstr "%pB: XMC_TC0 sÃ­mbolo \"%s\" Ã© classe %d scnlen %<PRId64>"
 
-#: xcofflink.c:1680
+#: xcofflink.c:1684
 #, c-format
 msgid "%pB: csect `%s' not in enclosing section"
 msgstr "%pB: csect \"%s\" nÃ£o estÃ¡ em secÃ§Ã£o envolvente"
 
-#: xcofflink.c:1788
+#: xcofflink.c:1792
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr "%pB: XTY_LD \"%s\" mal colocado"
 
-#: xcofflink.c:2109
+#: xcofflink.c:2113
 #, c-format
 msgid "%pB: reloc %s:%<PRId64> not in csect"
 msgstr "%pB: reloc %s:%<PRId64> fora de csect"
 
-#: xcofflink.c:3196
+#: xcofflink.c:3193
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: sem tal sÃ­mbolo"
 
-#: xcofflink.c:3301
+#: xcofflink.c:3298
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "aviso: tentativa de exportar sÃ­mbolo \"%s\" indefinido"
 
-#: xcofflink.c:3680
+#: xcofflink.c:3677
 msgid "error: undefined symbol __rtinit"
 msgstr "erro: sÃ­mbolo __rtinit indefinido"
 
-#: xcofflink.c:4060
+#: xcofflink.c:4055
 #, c-format
 msgid "%pB: loader reloc in unrecognized section `%s'"
 msgstr "%pB: reloc loader em secÃ§Ã£o \"%s\" nÃ£o reconhecida"
 
-#: xcofflink.c:4072
+#: xcofflink.c:4067
 #, c-format
 msgid "%pB: `%s' in loader reloc but not loader sym"
 msgstr "%pB: \"%s\" em reloc loader mas sem sÃ­mbolo loader"
 
-#: xcofflink.c:4089
+#: xcofflink.c:4084
 #, c-format
 msgid "%pB: loader reloc in read-only section %pA"
 msgstr "%pB: reloc loader em secÃ§Ã£o sÃ³ de leitura %pA"
 
-#: xcofflink.c:5113
+#: xcofflink.c:5112
 #, c-format
 msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
 msgstr "Transporte TOC: %#<PRIx64> > 0x10000; tente -mminimal-toc ao compilar"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5031
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2872
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "atributo desconhecido para o sÃ­mbolo \"%s\": 0x%02x"
+
+#: elfnn-aarch64.c:5246
 #, c-format
 msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
 msgstr "%pB: erro: Erratum 835769 fictÃ­cio fora do intervalo (ficheiro de entrada muito grande)"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5112
+#: elfnn-aarch64.c:5338
 #, c-format
 msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
 msgstr "%pB: erro: Erratum 843419 fictÃ­cio fora do intervalo (ficheiro de entrada muito grande)"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5641
+#: elfnn-aarch64.c:5351
+msgid "%pB: error: erratum 843419 immediate 0x%"
+msgstr "%pB: erro: erratum 843419 imediato 0x%"
+
+#: elfnn-aarch64.c:5899
 #, c-format
 msgid "%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo \"%s\" que pode ligar externamente nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5732
+#: elfnn-aarch64.c:5990
 #, c-format
 msgid "%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol"
 msgstr "%pB: tabela de descritor de sÃ­mbolo local Ã© NULL ao aplicar relocalizaÃ§Ã£o %s contra sÃ­mbolo local"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6830
+#: elfnn-aarch64.c:6103 elfnn-aarch64.c:6140
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr "%pB: relocalizaÃ§Ã£o TLS %s contra sÃ­mbolo \"%s\" indefinido"
+
+#: elfnn-aarch64.c:7125
 msgid "too many GOT entries for -fpic, please recompile with -fPIC"
 msgstr "Demasiadas entradas GOT para -fpic, recompile com -fPIC"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6858
+#: elfnn-aarch64.c:7153
 msgid "one possible cause of this error is that the symbol is being referenced in the indicated code as if it had a larger alignment than was declared where it was defined"
 msgstr "Uma causa possÃ­vel deste erro Ã© o sÃ­mbolo ser referenciado no cÃ³digo indicado como se tivesse um alinhamento maior do que aquele que foi declarado na definiÃ§Ã£o."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7443
+#: elfnn-aarch64.c:7720
 #, c-format
 msgid "%pB: relocation %s against `%s' can not be used when making a shared object"
 msgstr "%pB: relocalizaÃ§Ã£o %s contra \"%s\" nÃ£o pode ser usada ao fazer um objecto partilhado"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:182
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:217
+#: elfnn-riscv.c:187 elfnn-riscv.c:222
 #, c-format
 msgid "%pB: warning: RVE PLT generation not supported"
 msgstr "%pB: aviso: geraÃ§Ã£o RVE PLT nÃ£o suportada"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2311
+#: elfnn-riscv.c:1977
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "sÃ­mbolo de secÃ§Ã£o %pcrel_lo com uma adenda"
+
+#: elfnn-riscv.c:2198
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: relocalizaÃ§Ã£o %s contra \"%s\" nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC\n"
+
+#: elfnn-riscv.c:2208
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%%X%%P: relocalizaÃ§Ã£o %s insolÃºvel contra sÃ­mbolo \"%s\"\n"
+
+#: elfnn-riscv.c:2247
 msgid "%X%P: internal error: out of range error\n"
 msgstr "%X%P: erro interno: erro fora do intervalo\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2315
+#: elfnn-riscv.c:2252
 msgid "%X%P: internal error: unsupported relocation error\n"
 msgstr "%X%P: erro interno: erro relocalizaÃ§Ã£o nÃ£o suportada\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2325
+#: elfnn-riscv.c:2258
+msgid "dangerous relocation error"
+msgstr "erro de relocalizaÃ§Ã£o perigosa"
+
+#: elfnn-riscv.c:2264
 msgid "%X%P: internal error: unknown error\n"
 msgstr "%X%P: erro interno: erro desconhecido\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2711
+#: elfnn-riscv.c:2630
 #, c-format
-msgid "error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%d"
+msgid "error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%d"
 msgstr "erro: %pB: versÃ£o ISA trocada para \"%s\" extensÃ£o. %d.%d vs %d.%d"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2729
+#: elfnn-riscv.c:2648
 #, c-format
-msgid "error: %pB: corrupted ISA string '%s'.first letter should be 'i' or 'e' but got '%s'."
+msgid "error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but got '%s'."
 msgstr "erro: %pB: cadeia ISA \"%s\" corrompida. Primeira letra esperada era \"i\" ou \"e\", obtida \"%s\"."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2773
+#: elfnn-riscv.c:2692
 #, c-format
 msgid "error: %pB: Mis-matched ISA string to merge '%s' and '%s'."
 msgstr "erro: %pB: cadeia ISA trocada para unir \"%s\" e \"%s\"."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2921
+#: elfnn-riscv.c:2893
 #, c-format
 msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)."
 msgstr "erro: %pB: cadeia ISA de entrada (%s) nÃ£o corresponde Ã  saÃ­da (%s)."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2946
+#: elfnn-riscv.c:2913
 #, c-format
 msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)."
 msgstr "erro: %pB: XLEN de entrada (%u) nÃ£o corresponde Ã  saÃ­da (%u)."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2954
+#: elfnn-riscv.c:2921
 #, c-format
-msgid "error: %pB: Unspported XLEN (%u), you mightusing wrong emulation."
+msgid "error: %pB: Unsupported XLEN (%u), you might be using wrong emulation."
 msgstr "erro: %pB: XLEN nÃ£o suportado (%u), poderÃ¡ estar a usar a emulaÃ§Ã£o errada."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3039
+#: elfnn-riscv.c:3035
 #, c-format
-msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
-msgstr "erro: %pB: versÃ£o priv spec em conflito (principal/menor/revisÃ£o)."
+msgid "warning: %pB use privilege spec version %u.%u.%u but the output use version %u.%u.%u."
+msgstr "aviso: %pB usa a versÃ£o privilege spec %u.%u.%u mas a saÃ­da usa a versÃ£o %u.%u.%u."
+
+#: elfnn-riscv.c:3053
+msgid "warning: privilege spec version 1.9.1 can not be linked with other spec versions."
+msgstr "aviso: privilege spec versÃ£o 1.9.1 nÃ£o pode ser ligada a outras versÃµes spec."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3055
+#: elfnn-riscv.c:3081
 #, c-format
 msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned."
 msgstr "erro: %pB usa alinhamento de pilha %u-byte mas a saÃ­da usa alinhamento de pilha %u-byte."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3096
+#: elfnn-riscv.c:3122
 #, c-format
 msgid ""
 "%pB: ABI is incompatible with that of the selected emulation:\n"
@@ -7924,111 +8315,111 @@ msgstr ""
 "%pB: ABI Ã© incompatÃ­vel com aquele da emulaÃ§Ã£o seleccionada:\n"
 "  emulaÃ§Ã£o alvo \"%s\" nÃ£o corresponde a \"%s\""
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3119
+#: elfnn-riscv.c:3176
 #, c-format
 msgid "%pB: can't link %s modules with %s modules"
 msgstr "%pB: impossÃ­vel ligar mÃ³dulos %s com mÃ³dulos %s"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3129
+#: elfnn-riscv.c:3186
 #, c-format
 msgid "%pB: can't link RVE with other target"
 msgstr "%pB: impossÃ­vel ligar RVE com outro alvo"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3630
+#: elfnn-riscv.c:3724
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-byte boundary, but only %<PRId64> present"
 msgstr "%pB(%pA+%#<PRIx64>): %<PRId64> bytes requeridos para alinhamento com limite %<PRId64>-byte, mas sÃ³ hÃ¡ %<PRId64> presentes"
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
+#: peXXigen.c:164
 #, c-format
 msgid "%pB: unable to find name for empty section"
 msgstr "%pB: impossÃ­vel encontrar nome para secÃ§Ã£o vazia"
 
-#: peigen.c:183 pepigen.c:183 pex64igen.c:183
+#: peXXigen.c:191
 #, c-format
 msgid "%pB: out of memory creating name for empty section"
 msgstr "%pB: sem memÃ³ria ao criar nome para secÃ§Ã£o vazia"
 
-#: peigen.c:194 pepigen.c:194 pex64igen.c:194
+#: peXXigen.c:201
 #, c-format
 msgid "%pB: unable to create fake empty section"
 msgstr "%pB: impossÃ­vel criar secÃ§Ã£o vazia falsa"
 
-#: peigen.c:532 pepigen.c:532 pex64igen.c:532
+#: peXXigen.c:539
 #, c-format
-msgid "%pB: aout header specifies an invalid number of data-directory entries: %ld"
-msgstr "%pB: cabeÃ§alho aout especifica um nÃºmero invÃ¡lido de entradas data-directory: %ld"
+msgid "%pB: aout header specifies an invalid number of data-directory entries: %u"
+msgstr "%pB: cabeÃ§alho aout especifica um nÃºmero invÃ¡lido de entradas data-directory: %u"
 
-#: peigen.c:1091 pepigen.c:1091 pex64igen.c:1091
+#: peXXigen.c:1088
 #, c-format
 msgid "%pB: line number overflow: 0x%lx > 0xffff"
 msgstr "%pB: transporte de nÂº de linha: 0x%lx > 0xffff"
 
-#: peigen.c:1235 pepigen.c:1235 pex64igen.c:1235
+#: peXXigen.c:1241
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr "Pasta de exportaÃ§Ã£o [.edata (ou onde o encontrÃ¡mos)]"
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1242
 msgid "Import Directory [parts of .idata]"
 msgstr "Pasta de importaÃ§Ã£o [partes de .idata]"
 
-#: peigen.c:1237 pepigen.c:1237 pex64igen.c:1237
+#: peXXigen.c:1243
 msgid "Resource Directory [.rsrc]"
 msgstr "Pasta de recursos [.rsrc]"
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1244
 msgid "Exception Directory [.pdata]"
 msgstr "Pasta de excepÃ§Ãµes [.pdata]"
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1245
 msgid "Security Directory"
 msgstr "Pasta de seguranÃ§a"
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1246
 msgid "Base Relocation Directory [.reloc]"
 msgstr "Pasta de relocalizaÃ§Ã£o base [.reloc]"
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1247
 msgid "Debug Directory"
 msgstr "Pasta de depuraÃ§Ã£o"
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1248
 msgid "Description Directory"
 msgstr "Pasta de descriÃ§Ã£o"
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1249
 msgid "Special Directory"
 msgstr "Pasta especial"
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1250
 msgid "Thread Storage Directory [.tls]"
 msgstr "Pasta de armazenamento de Thread [.tls]"
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1251
 msgid "Load Configuration Directory"
 msgstr "Pasta de configuraÃ§Ã£o de carregamento"
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1252
 msgid "Bound Import Directory"
 msgstr "Pasta de importaÃ§Ã£o vinculada"
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1253
 msgid "Import Address Table Directory"
 msgstr "Pasta de tabela de endereÃ§os de importaÃ§Ã£o"
 
-#: peigen.c:1248 pepigen.c:1248 pex64igen.c:1248
+#: peXXigen.c:1254
 msgid "Delay Import Directory"
 msgstr "Pasta de atraso de importaÃ§Ã£o"
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1255
 msgid "CLR Runtime Header"
 msgstr "CabeÃ§alho de execuÃ§Ã£o CLR"
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1256
 msgid "Reserved"
 msgstr "Reservado"
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1316
 #, c-format
 msgid ""
 "\n"
@@ -8037,7 +8428,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma tabela de importaÃ§Ã£o, mas a secÃ§Ã£o que a contÃ©m nÃ£o pÃ´de ser encontrada\n"
 
-#: peigen.c:1316 pepigen.c:1316 pex64igen.c:1316
+#: peXXigen.c:1322
 #, c-format
 msgid ""
 "\n"
@@ -8046,7 +8437,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma tabela de importaÃ§Ã£o em %s, mas essa secÃ§Ã£o nÃ£o tem conteÃºdo\n"
 
-#: peigen.c:1323 pepigen.c:1323 pex64igen.c:1323
+#: peXXigen.c:1329
 #, c-format
 msgid ""
 "\n"
@@ -8055,7 +8446,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma tabela de importaÃ§Ã£o em %s em 0x%lx\n"
 
-#: peigen.c:1365 pepigen.c:1365 pex64igen.c:1365
+#: peXXigen.c:1369
 #, c-format
 msgid ""
 "\n"
@@ -8064,12 +8455,12 @@ msgstr ""
 "\n"
 "Descritor de funÃ§Ã£o localizado no endereÃ§o inicial: %04lx\n"
 
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
+#: peXXigen.c:1373
 #, c-format
 msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
 msgstr "\tcode-base %08lx toc (carregÃ¡vel/actual) %08lx/%08lx\n"
 
-#: peigen.c:1377 pepigen.c:1377 pex64igen.c:1377
+#: peXXigen.c:1380
 #, c-format
 msgid ""
 "\n"
@@ -8078,7 +8469,7 @@ msgstr ""
 "\n"
 "Sem secÃ§Ã£o reldata! Descritor de funÃ§Ã£o nÃ£o descodificado.\n"
 
-#: peigen.c:1382 pepigen.c:1382 pex64igen.c:1382
+#: peXXigen.c:1385
 #, c-format
 msgid ""
 "\n"
@@ -8087,7 +8478,7 @@ msgstr ""
 "\n"
 "As tabelas de importaÃ§Ã£o (interpretado %s conteÃºdo de secÃ§Ã£o)\n"
 
-#: peigen.c:1385 pepigen.c:1385 pex64igen.c:1385
+#: peXXigen.c:1388
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -8096,7 +8487,7 @@ msgstr ""
 " vma:            Dica    Hora      AvanÃ§o   DLL       Prim.\n"
 "                 Tabela  Selo      Cadeia   Nome      Thunk\n"
 
-#: peigen.c:1435 pepigen.c:1435 pex64igen.c:1435
+#: peXXigen.c:1437
 #, c-format
 msgid ""
 "\n"
@@ -8105,12 +8496,12 @@ msgstr ""
 "\n"
 "\tNome DLL: %.*s\n"
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1453
 #, c-format
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
 msgstr "\tvma:  Dica/Ord Nome-membro ligado a\n"
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1478
 #, c-format
 msgid ""
 "\n"
@@ -8119,13 +8510,12 @@ msgstr ""
 "\n"
 "HÃ¡ um primeiro thunk, mas a secÃ§Ã£o que o contÃ©m nÃ£o pÃ´de ser encontrada\n"
 
-#: peigen.c:1520 peigen.c:1559 pepigen.c:1520 pepigen.c:1559 pex64igen.c:1520
-#: pex64igen.c:1559
+#: peXXigen.c:1522 peXXigen.c:1561
 #, c-format
 msgid "\t<corrupt: 0x%04lx>"
 msgstr "\t<corrupto: 0x%04lx>"
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1654
 #, c-format
 msgid ""
 "\n"
@@ -8134,7 +8524,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma tabela de exportaÃ§Ã£o, mas a secÃ§Ã£o que a contÃ©m nÃ£o pÃ´de ser encontrada\n"
 
-#: peigen.c:1658 pepigen.c:1658 pex64igen.c:1658
+#: peXXigen.c:1660
 #, c-format
 msgid ""
 "\n"
@@ -8143,7 +8533,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas essa secÃ§Ã£o nÃ£o tem conteÃºdo\n"
 
-#: peigen.c:1669 pepigen.c:1669 pex64igen.c:1669
+#: peXXigen.c:1671
 #, c-format
 msgid ""
 "\n"
@@ -8152,7 +8542,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas nÃ£o serve nessa secÃ§Ã£o\n"
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1682
 #, c-format
 msgid ""
 "\n"
@@ -8161,7 +8551,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas Ã© demasiado pequena (%d)\n"
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1688
 #, c-format
 msgid ""
 "\n"
@@ -8170,7 +8560,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma tabela de exportaÃ§Ã£o em %s em 0x%lx\n"
 
-#: peigen.c:1714 pepigen.c:1714 pex64igen.c:1714
+#: peXXigen.c:1716
 #, c-format
 msgid ""
 "\n"
@@ -8181,67 +8571,67 @@ msgstr ""
 "As tabelas de exportaÃ§Ã£o (interpretado %s conteÃºdo de secÃ§Ã£o)\n"
 "\n"
 
-#: peigen.c:1718 pepigen.c:1718 pex64igen.c:1718
+#: peXXigen.c:1720
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
 msgstr "Bandeiras de exportaÃ§Ã£o \t\t\t%lx\n"
 
-#: peigen.c:1721 pepigen.c:1721 pex64igen.c:1721
+#: peXXigen.c:1723
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
 msgstr "Selo Hora/Data \t\t%lx\n"
 
-#: peigen.c:1725 pepigen.c:1725 pex64igen.c:1725
+#: peXXigen.c:1727
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr "Principal/Menor \t\t\t%d/%d\n"
 
-#: peigen.c:1728 pepigen.c:1728 pex64igen.c:1728
+#: peXXigen.c:1730
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Nome \t\t\t\t"
 
-#: peigen.c:1739 pepigen.c:1739 pex64igen.c:1739
+#: peXXigen.c:1741
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr "Base ordinal \t\t\t%ld\n"
 
-#: peigen.c:1742 pepigen.c:1742 pex64igen.c:1742
+#: peXXigen.c:1744
 #, c-format
 msgid "Number in:\n"
 msgstr "NÃºmero em:\n"
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1747
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
 msgstr "\tTabela end. exportaÃ§Ã£o \t\t%08lx\n"
 
-#: peigen.c:1749 pepigen.c:1749 pex64igen.c:1749
+#: peXXigen.c:1751
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
 msgstr "\t[Nome Ponteiro/Ordinal] Tabela\t%08lx\n"
 
-#: peigen.c:1752 pepigen.c:1752 pex64igen.c:1752
+#: peXXigen.c:1754
 #, c-format
 msgid "Table Addresses\n"
 msgstr "EndereÃ§os da tabela\n"
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1757
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr "\tTabela end. exportaÃ§Ã£o \t\t"
 
-#: peigen.c:1760 pepigen.c:1760 pex64igen.c:1760
+#: peXXigen.c:1762
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr "\tTabela Nome Ponteiro \t\t"
 
-#: peigen.c:1765 pepigen.c:1765 pex64igen.c:1765
+#: peXXigen.c:1767
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tTabela ordinal \t\t\t"
 
-#: peigen.c:1779 pepigen.c:1779 pex64igen.c:1779
+#: peXXigen.c:1781
 #, c-format
 msgid ""
 "\n"
@@ -8250,20 +8640,20 @@ msgstr ""
 "\n"
 "Tabela end. exportaÃ§Ã£o -- Base ordinal %ld\n"
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1790
 #, c-format
 msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\trva de tabela de end. de exportaÃ§Ã£o (0x%lx) ou total de entradas (0x%lx) invÃ¡lidos\n"
 
-#: peigen.c:1807 pepigen.c:1807 pex64igen.c:1807
+#: peXXigen.c:1809
 msgid "Forwarder RVA"
 msgstr "Reencaminhador RVA"
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1821
 msgid "Export RVA"
 msgstr "ExportaÃ§Ã£o RVA"
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1828
 #, c-format
 msgid ""
 "\n"
@@ -8272,29 +8662,27 @@ msgstr ""
 "\n"
 "Tabela [Ordinal/Nome Ponteiro]\n"
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1836
 #, c-format
 msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\trva de tabela de ponteiro de nome (0x%lx) ou total de entradas (0x%lx) invÃ¡lidos\n"
 
-#: peigen.c:1841 pepigen.c:1841 pex64igen.c:1841
+#: peXXigen.c:1843
 #, c-format
 msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\trva de tabela ordinal (0x%lx) ou total de entradas (0x%lx) invÃ¡lidos\n"
 
-#: peigen.c:1855 pepigen.c:1855 pex64igen.c:1855
+#: peXXigen.c:1857
 #, c-format
 msgid "\t[%4ld] <corrupt offset: %lx>\n"
 msgstr "\t[%4ld] <desvio corrupto: %lx>\n"
 
-#: peigen.c:1909 peigen.c:2106 pepigen.c:1909 pepigen.c:2106 pex64igen.c:1909
-#: pex64igen.c:2106
+#: peXXigen.c:1911 peXXigen.c:2107
 #, c-format
 msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
 msgstr "Aviso, .tamanho da secÃ§Ã£o pdata (%ld) nÃ£o Ã© mÃºltiplo de %d\n"
 
-#: peigen.c:1913 peigen.c:2110 pepigen.c:1913 pepigen.c:2110 pex64igen.c:1913
-#: pex64igen.c:2110
+#: peXXigen.c:1915 peXXigen.c:2111
 #, c-format
 msgid ""
 "\n"
@@ -8303,12 +8691,12 @@ msgstr ""
 "\n"
 "A tabela de funÃ§Ã£o (interpretado conteÃºdo de secÃ§Ã£o .pdata)\n"
 
-#: peigen.c:1916 pepigen.c:1916 pex64igen.c:1916
+#: peXXigen.c:1918
 #, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
 msgstr " vma:\t\t\tEnd. inicial     End. final       Info Unwind\n"
 
-#: peigen.c:1918 pepigen.c:1918 pex64igen.c:1918
+#: peXXigen.c:1920
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -8317,27 +8705,27 @@ msgstr ""
 " vma:\t\tInÃ­cio   Fim      EH       EH       PrÃ³logFim  ExcepÃ§Ã£o\n"
 "     \t\tEndereÃ§o EndereÃ§o Gestor   Dados    EndereÃ§o   MÃ¡scara\n"
 
-#: peigen.c:1931 pepigen.c:1931 pex64igen.c:1931
+#: peXXigen.c:1933
 #, c-format
 msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
 msgstr "Tamanho virtual da secÃ§Ã£o .pdata (%ld) maior que o tamanho real (%ld)\n"
 
-#: peigen.c:2001 pepigen.c:2001 pex64igen.c:2001
+#: peXXigen.c:2002
 #, c-format
 msgid " Register save millicode"
 msgstr " Register save millicode"
 
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
+#: peXXigen.c:2005
 #, c-format
 msgid " Register restore millicode"
 msgstr " Register restore millicode"
 
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
+#: peXXigen.c:2008
 #, c-format
 msgid " Glue code sequence"
 msgstr " Colar sequÃªncia de cÃ³digo"
 
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2113
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
@@ -8346,7 +8734,7 @@ msgstr ""
 " vma:\t\tInÃ­cio   PrÃ³logo  FunÃ§Ã£o   Bands    ExcepÃ§Ã£o  EH\n"
 "     \t\tEndereÃ§o Tam.     Tam.     32b exc  Gestor    Dados\n"
 
-#: peigen.c:2234 pepigen.c:2234 pex64igen.c:2234
+#: peXXigen.c:2234
 #, c-format
 msgid ""
 "\n"
@@ -8357,7 +8745,7 @@ msgstr ""
 "\n"
 "RelocalizaÃ§Ãµes base de ficheiros PE (interpretado conteÃºdo de secÃ§Ã£o .reloc)\n"
 
-#: peigen.c:2264 pepigen.c:2264 pex64igen.c:2264
+#: peXXigen.c:2263
 #, c-format
 msgid ""
 "\n"
@@ -8366,62 +8754,62 @@ msgstr ""
 "\n"
 "EndereÃ§o virtual: %08lx, tamanho do pedaÃ§o %ld (0x%lx), nÃºmero de fixups %ld\n"
 
-#: peigen.c:2282 pepigen.c:2282 pex64igen.c:2282
+#: peXXigen.c:2281
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr "\treloc %4d desvio %4x [%4lx] %s"
 
-#: peigen.c:2343 pepigen.c:2343 pex64igen.c:2343
+#: peXXigen.c:2342
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr "%03x %*.s Entrada: "
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2366
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr "nome: [val: %08lx tam %d]: "
 
-#: peigen.c:2387 pepigen.c:2387 pex64igen.c:2387
+#: peXXigen.c:2386
 #, c-format
 msgid "<corrupt string length: %#x>\n"
 msgstr "<tamanho de cadeia corrupto: %#x>\n"
 
-#: peigen.c:2397 pepigen.c:2397 pex64igen.c:2397
+#: peXXigen.c:2396
 #, c-format
 msgid "<corrupt string offset: %#lx>\n"
 msgstr "<desvio de cadeia corrupto: %#lx>\n"
 
-#: peigen.c:2402 pepigen.c:2402 pex64igen.c:2402
+#: peXXigen.c:2401
 #, c-format
 msgid "ID: %#08lx"
 msgstr "ID: %#08lx"
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2404
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Valor: %#08lx\n"
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2426
 #, c-format
 msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
 msgstr "%03x %*.s  Folha: End.: %#08lx, Tamanho: %#08lx, Codepage: %d\n"
 
-#: peigen.c:2469 pepigen.c:2469 pex64igen.c:2469
+#: peXXigen.c:2468
 #, c-format
 msgid "<unknown directory type: %d>\n"
 msgstr "<tipo de pasta desconhecido: %d>\n"
 
-#: peigen.c:2477 pepigen.c:2477 pex64igen.c:2477
+#: peXXigen.c:2476
 #, c-format
 msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
 msgstr " Tabela: Car.: %d, Hora: %08lx, Ver: %d/%d, Nomes NÃºm: %d, IDs: %d\n"
 
-#: peigen.c:2566 pepigen.c:2566 pex64igen.c:2566
+#: peXXigen.c:2564
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr "SecÃ§Ã£o .rsrc corrompida detectada!\n"
 
-#: peigen.c:2590 pepigen.c:2590 pex64igen.c:2590
+#: peXXigen.c:2588
 #, c-format
 msgid ""
 "\n"
@@ -8430,17 +8818,17 @@ msgstr ""
 "\n"
 "AVISO: dados extra em secÃ§Ã£o .rsrc - serÃ¡ ignorada pelo Windows:\n"
 
-#: peigen.c:2596 pepigen.c:2596 pex64igen.c:2596
+#: peXXigen.c:2594
 #, c-format
 msgid " String table starts at offset: %#03x\n"
 msgstr " Tabela de cadeia comeÃ§a no desvio: %#03x\n"
 
-#: peigen.c:2599 pepigen.c:2599 pex64igen.c:2599
+#: peXXigen.c:2597
 #, c-format
 msgid " Resources start at offset: %#03x\n"
 msgstr " Recursos comeÃ§am no desvio: %#03x\n"
 
-#: peigen.c:2651 pepigen.c:2651 pex64igen.c:2651
+#: peXXigen.c:2654
 #, c-format
 msgid ""
 "\n"
@@ -8449,7 +8837,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma pasta de depuraÃ§Ã£o, mas a secÃ§Ã£o que a contÃ©m nÃ£o pÃ´de ser encontrada\n"
 
-#: peigen.c:2657 pepigen.c:2657 pex64igen.c:2657
+#: peXXigen.c:2660
 #, c-format
 msgid ""
 "\n"
@@ -8458,7 +8846,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma pasta de depuraÃ§Ã£o em %s, mas essa secÃ§Ã£o nÃ£o tem conteÃºdo\n"
 
-#: peigen.c:2664 pepigen.c:2664 pex64igen.c:2664
+#: peXXigen.c:2667
 #, c-format
 msgid ""
 "\n"
@@ -8467,7 +8855,7 @@ msgstr ""
 "\n"
 "Erro: secÃ§Ã£o %s contÃ©m o endereÃ§o dos dados de depuraÃ§Ã£o, mas Ã© muito pequena\n"
 
-#: peigen.c:2669 pepigen.c:2669 pex64igen.c:2669
+#: peXXigen.c:2672
 #, c-format
 msgid ""
 "\n"
@@ -8478,22 +8866,22 @@ msgstr ""
 "HÃ¡ uma pasta de depuraÃ§Ã£o em %s em 0x%lx\n"
 "\n"
 
-#: peigen.c:2676 pepigen.c:2676 pex64igen.c:2676
+#: peXXigen.c:2679
 #, c-format
 msgid "The debug data size field in the data directory is too big for the section"
 msgstr "O campo de tamanho dos dados de depuraÃ§Ã£o na pasta de dados Ã© demasiado grande para a secÃ§Ã£o"
 
-#: peigen.c:2681 pepigen.c:2681 pex64igen.c:2681
+#: peXXigen.c:2684
 #, c-format
 msgid "Type                Size     Rva      Offset\n"
 msgstr "Tipo                Tam.     Rva      Desvio\n"
 
-#: peigen.c:2729 pepigen.c:2729 pex64igen.c:2729
+#: peXXigen.c:2731
 #, c-format
 msgid "(format %c%c%c%c signature %s age %ld)\n"
 msgstr "(formato %c%c%c%c assinatura %s idade %ld)\n"
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2741
 #, c-format
 msgid "The debug directory size is not a multiple of the debug directory entry size\n"
 msgstr "O tamanho da pasta de depuraÃ§Ã£o nÃ£o Ã© mÃºltiplo do tamanho da entrada da pasta de depuraÃ§Ã£o\n"
@@ -8501,7 +8889,7 @@ msgstr "O tamanho da pasta de depuraÃ§Ã£
 #. The MS dumpbin program reportedly ands with 0xff0f before
 #. printing the characteristics field.  Not sure why.  No reason to
 #. emulate it here.
-#: peigen.c:2757 pepigen.c:2757 pex64igen.c:2757
+#: peXXigen.c:2825
 #, c-format
 msgid ""
 "\n"
@@ -8510,97 +8898,124 @@ msgstr ""
 "\n"
 "CaracterÃ­sticas 0x%x\n"
 
-#: peigen.c:2993 pepigen.c:2993 pex64igen.c:2993
+#: peXXigen.c:3072
 #, c-format
 msgid "%pB: Data Directory size (%lx) exceeds space left in section (%<PRIx64>)"
 msgstr "%pB: tamanho da pasta de dados (%lx) excede o espaÃ§o deixado na secÃ§Ã£o (%<PRIx64>)"
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
+#: peXXigen.c:3104
 msgid "failed to update file offsets in debug directory"
 msgstr "Falha ao actualizar desvios de ficheiro na pasta de depuraÃ§Ã£o"
 
-#: peigen.c:3033 pepigen.c:3033 pex64igen.c:3033
+#: peXXigen.c:3112
 #, c-format
 msgid "%pB: failed to read debug data section"
 msgstr "%pB: falha ao ler secÃ§Ã£o de dados de depuraÃ§Ã£o"
 
-#: peigen.c:3849 pepigen.c:3849 pex64igen.c:3849
+#: peXXigen.c:3928
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
 msgstr "falha de uniÃ£o .rsrc: recurso de cadeia duplicado: %d"
 
-#: peigen.c:3984 pepigen.c:3984 pex64igen.c:3984
+#: peXXigen.c:4063
 msgid ".rsrc merge failure: multiple non-default manifests"
 msgstr "falha de uniÃ£o .rsrc: mÃºltiplos manifestos nÃ£o-predefinidos"
 
-#: peigen.c:4002 pepigen.c:4002 pex64igen.c:4002
+#: peXXigen.c:4081
 msgid ".rsrc merge failure: a directory matches a leaf"
 msgstr "falha de uniÃ£o .rsrc: uma pasta corresponde a uma folha"
 
-#: peigen.c:4044 pepigen.c:4044 pex64igen.c:4044
+#: peXXigen.c:4123
 msgid ".rsrc merge failure: duplicate leaf"
 msgstr "falha de uniÃ£o .rsrc: folha duplicada"
 
-#: peigen.c:4046 pepigen.c:4046 pex64igen.c:4046
+#: peXXigen.c:4125
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
 msgstr "falha de uniÃ£o .rsrc: folha duplicada: %s"
 
-#: peigen.c:4112 pepigen.c:4112 pex64igen.c:4112
+#: peXXigen.c:4191
 msgid ".rsrc merge failure: dirs with differing characteristics"
 msgstr "falha de uniÃ£o .rsrc: pastas com caracterÃ­sticas diferentes"
 
-#: peigen.c:4119 pepigen.c:4119 pex64igen.c:4119
+#: peXXigen.c:4198
 msgid ".rsrc merge failure: differing directory versions"
 msgstr "falha de uniÃ£o .rsrc: versÃµes de pasta diferentes"
 
 #. Corrupted .rsrc section - cannot merge.
-#: peigen.c:4236 pepigen.c:4236 pex64igen.c:4236
+#: peXXigen.c:4315
 #, c-format
 msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
 msgstr "%pB: falha de uniÃ£o .rsrc: secÃ§Ã£o .rsrc corrupta"
 
-#: peigen.c:4244 pepigen.c:4244 pex64igen.c:4244
+#: peXXigen.c:4323
 #, c-format
 msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
 msgstr "%pB: falha de uniÃ£o .rsrc: tamanho .rsrc inesperado"
 
-#: peigen.c:4383 pepigen.c:4383 pex64igen.c:4383
+#: peXXigen.c:4462
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
 msgstr "%pB: impossÃ­vel preencher DataDictionary[1] porque .idata$2 estÃ¡ em falta"
 
-#: peigen.c:4403 pepigen.c:4403 pex64igen.c:4403
+#: peXXigen.c:4482
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
 msgstr "%pB: impossÃ­vel preencher DataDictionary[1] porque .idata$4 estÃ¡ em falta"
 
-#: peigen.c:4424 pepigen.c:4424 pex64igen.c:4424
+#: peXXigen.c:4503
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
 msgstr "%pB: impossÃ­vel preencher DataDictionary[12] porque .idata$5 estÃ¡ em falta"
 
-#: peigen.c:4444 pepigen.c:4444 pex64igen.c:4444
+#: peXXigen.c:4523
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
 msgstr "%pB: impossÃ­vel preencher DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] porque .idata$6 estÃ¡ em falta"
 
-#: peigen.c:4486 pepigen.c:4486 pex64igen.c:4486
+#: peXXigen.c:4565
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
 msgstr "%pB: impossÃ­vel preencher DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] porque .idata$6 estÃ¡ em falta"
 
-#: peigen.c:4511 pepigen.c:4511 pex64igen.c:4511
+#: peXXigen.c:4590
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
 msgstr "%pB: impossÃ­vel preencher DataDictionary[9] porque __tls_used estÃ¡ em falta"
 
+#~ msgid "%pB: corrupt symbol count: %#<PRIx64>"
+#~ msgstr "%pB: total de sÃ­mbolos corrupto: %#<PRIx64>"
+
+#~ msgid "%pB: not enough memory to allocate space for %#<PRIx64> symbols of size %#<PRIx64>"
+#~ msgstr "%pB: memÃ³ria insuficiente para alocar espaÃ§o para %#<PRIx64> sÃ­mbolos de tamanho %#<PRIx64>"
+
+#~ msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
+#~ msgstr "%pB: campo de tamanho corrupto no cabeÃ§alho da secÃ§Ã£o de grupo: %#<PRIx64>"
+
+#~ msgid "error: %pB version reference section is too large (%#<PRIx64> bytes)"
+#~ msgstr "erro: secÃ§Ã£o de referÃªncia da versÃ£o %pB muito grande (%#<PRIx64> bytes)"
+
+#~ msgid "unexpected STO_SH5_ISA32 on local symbol is not handled"
+#~ msgstr "STO_SH5_ISA32 inesperado em sÃ­mbolo local nÃ£o Ã© gerido"
+
+#~ msgid "%P%X: read-only segment has dynamic IFUNC relocations; recompile with %s\n"
+#~ msgstr "%P%X: segmento sÃ³ de leitura tem relocalizaÃ§Ãµes dinÃ¢micas IFUNC; recompile com %s\n"
+
+#~ msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
+#~ msgstr "bfd_mach_o_read_symtab_symbols: impossÃ­vel alocar memÃ³ria para sÃ­mbolos"
+
+#~ msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
+#~ msgstr "erro: %pB: versÃ£o priv spec em conflito (principal/menor/revisÃ£o)."
+
+#~ msgid "unsupported relocation type %#x"
+#~ msgstr "tipo de relocalizaÃ§Ã£o %#x nÃ£o suportado"
+
+#~ msgid "%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC"
+#~ msgstr "%pB: relocalizaÃ§Ã£o %s contra \"%s\" nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC"
+
 #~ msgid "%H: call to `%pT' lacks nop, can't restore toc; recompile with -fPIC\n"
 #~ msgstr "%H: chamada a \"%T\" com nop em falta, impossÃ­vel restaurar toc; recompile com -fPIC\n"
 
-#~ msgid "error: %pB: <corrupt x86 ISA used size: 0x%x>"
-#~ msgstr "erro: %pB: <tamanho ISA x86 corrupto: 0x%x>"
-
 #~ msgid "error: %pB: <corrupt x86 ISA needed size: 0x%x>"
 #~ msgstr "erro: %pB: <tamanho necessÃ¡rio x86 ISA corrupto: 0x%x>"
 
@@ -8691,9 +9106,6 @@ msgstr "%pB: impossÃ­vel preencher DataD
 #~ msgid "unsupported reloc type"
 #~ msgstr "tipo de reloc nÃ£o suportado"
 
-#~ msgid "SH Error: unknown reloc type %d"
-#~ msgstr "Erro SH: tipo de reloc %d nÃ£o suportado"
-
 #~ msgid "Unrecognized reloc type 0x%x"
 #~ msgstr "tipo de reloc 0x%x nÃ£o reconhecido"
 
@@ -8750,9 +9162,6 @@ msgstr "%pB: impossÃ­vel preencher DataD
 #~ msgid "%B: invalid AVR reloc number: %d"
 #~ msgstr "%B: nÃºmero de reloc AVR invÃ¡lido: %d"
 
-#~ msgid "%B: unsupported relocation type %d"
-#~ msgstr "%B: tipo de relocalizaÃ§Ã£o nÃ£o suportado %d"
-
 #~ msgid "Unsupported CR16 relocation type: 0x%x\n"
 #~ msgstr "Tipo de relocalizaÃ§Ã£o CR16 nÃ£o suportado: 0x%x\n"
 
@@ -8795,9 +9204,6 @@ msgstr "%pB: impossÃ­vel preencher DataD
 #~ msgid "%B: unrecognised I370 reloc number: %d"
 #~ msgstr "%B: nÃºmero de reloc I370 nÃ£o reconhecido: %d"
 
-#~ msgid "%B: unknown relocation type %d for symbol %s"
-#~ msgstr "%B: tipo de relocalizaÃ§Ã£o %d  nÃ£o desconhecido para sÃ­mbolo %s"
-
 #~ msgid "%B: Relocation %s is not yet supported for symbol %s."
 #~ msgstr "%B: RelocalizaÃ§Ã£o %s ainda nÃ£o suportada para sÃ­mbolo %s."
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/ru.gmo ./bfd/po/ru.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/ru.gmo	2020-03-07 02:11:47.000000000 +0000
+++ ./bfd/po/ru.gmo	2021-05-21 02:00:24.000000000 +0000
@@ -1,143 +1,149 @@
-Þ•01Ûbl…€„…„‡dŸ
eŸsŸ‡Ÿ ŸA¿Ÿ? :A | “ ¦ $Å 3ê 
¡,¡%L¡r¡t¡A†¡&È¡ï¡¢!¢:¢J¢ i¢Š¢ª¢Ã¢Ú¢ç¢Pú¢K£*c£9Ž£6È£;ÿ£;¤FM¤6”¤6Ë¤:¥5=¥,s¥D ¥Nå¥J4¦)¦G©¦:ñ¦B,§Lo§)¼§Bæ§L)¨v¨Œ¨D£¨Gè¨0©O©a©u©�©¢©3Á©õ©ª0ªOª_ªoª+‰ª+µª+áª#
«1«I«R«p«(‡«?°«>ð«%/¬&U¬(|¬)¥¬GÏ¬7­O­f­†­£­¼­×­÷­®+®A®Y®m®„®,ž®Ë®Û®ô®¯#¯2¯H¯]¯w¯Ž¯1£¯Õ¯æ¯ó¯
-°%°#=°+a°&�°5´°ê°ÿ°±1±G±a±z±‘±§±$¼±á±ú±²2²$G²l²€²•²<®²ë²ú²
	³³+³@³ X³y³”³¤³Ä³à³´´2´E´*X´ƒ´•´&§´Î´0â´µ"'µJµ	[¶e¶#x¶œ¶µ¶Æ¶ß¶"ø¶·"/·#R·#v·š·#¯·#Ó·÷·¸"¸@¸F¸S¸[¸`¸
-}¸ˆ¸�¸!“¸ µ¸Ö¸Û¸à¸ø¸¹8¹=¹Q¹!V¹x¹‰¹�¹–¹›¹ ¹¦¹ª¹¯¹Ë¹"ä¹ºº,º@º&`ºB‡ºÊºêºïºôºûº»»»»7»K»R»k»»�»¡»²»Ã»Ô»ì»	û»
¼
¼
-!¼
-,¼
-7¼
-B¼
-M¼$X¼
-}¼#ˆ¼
-¬¼·¼É¼!á¼½½
-'½
2½	@½J½
-[½f½m½…½Ÿ½±½À½×½ò½¾¾)¾0¾P¾(`¾/‰¾¹¾Ë¾+Ú¾¿A"¿d¿~¿˜¿²¿8Ç¿ÀÀ-À&GÀnÀ�À2¨À?ÛÀ&ÁBÁ(aÁŠÁ"�ÁÀÁ*àÁ6Â{BÂr¾Âx1ÃªÃ:ÀÃûÃ?
ÄMÄmÄ&‹Ä²ÄœÌÄDiÅ'®Å,ÖÅ1Æ'5Æ$]Æ/‚Æ-²Æ0àÆ&Ç88ÇqÇ=‘Ç9ÏÇ:	È6DÈ6{È²È/ÒÈ5É+8É$dÉ6‰É"ÀÉ&ãÉ6
-Ê=AÊ:Ê:ºÊDõÊ8:Ë9sËC­Ë:ñË7,Ì8dÌ@�ÌGÞÌ9&Í,`Í0�Í#¾ÍâÍ-ýÍ6+ÎbÎ7~Î;¶Î:òÎ9-Ï"gÏ3ŠÏ%¾Ï.äÏÐL3Ð0€Ð.±Ð1àÐ'ÑE:Ñ8€Ñ(¹ÑcâÑ4FÒ&{Ò2¢Ò&ÕÒ6üÒ]3Ó8‘ÓÊÓOéÓb9Ô,œÔ+ÉÔ)õÔYÕ=yÕ3·Õ2ëÕBÖ)aÖ$‹Ö3°Ö9äÖ6×/U×D…×&Ê×Wñ×UIØIŸØ+éØ8Ù%NÙ(tÙ&�Ù,ÄÙ#ñÙ>ÚBTÚB—ÚÚÚ'úÚE"Û9hÛ4¢Û3×ÛJÜ(VÜ;Ü»Ü0ÚÜ.Ý,:Ý'gÝ6�Ý ÆÝ/çÝ4ÞNLÞª›ÞIFß9�ß3Êß¾þß<½à<úàF7áP~áoÏá>?âF~â`Åâ~&ãF¥ã‚ìã[oä3Ëä@ÿäM@åmŽå7üå#4æXæ(næ&—æ+¾æêæÿæ8ç"Lç$oç'”ç9¼çCöç!:è!\è*~è/©è1Ùè/é/;é0ké*œé0Çé<øéi5ê=ŸêBÝê= ë-^ë.Œë8»ë9ôëF.ì?uìVµì(í>5í;tí=°í#îíLî8_î+˜î8Äî2ýî90ï:jï3¥ï,Ùïuð |ð.�ð.ÌðKûð0GñBxñ/»ñ,ëñ'ò%@ò,fòN“òâòCüòJ@ó@‹óJÌó*ô%Bô<hô ¥ôlÆô<3õ<põ+­õÙõ,õõH"ö6köA¢öAäöJ&÷>q÷J°÷Jû÷<Fø.ƒø(²ølÛøvHùA¿ù6ú8ú4Vú0‹ú+¼úAèú3*û@^û!Ÿû#Áû.åûBüFWü4žü%Óü:ùü24ý*gý9’ýCÌýCþ:TþT�þJäþ5/ÿ4eÿ6šÿ/Ñÿ/&1&X5'µ0Ý5(D3m%¡&Çî'=6#t+˜3Ä(ø@!Cb5¦'Ü,g14™mÎA<@~H¿GKPIœLæH3C|YÀ50P4�M¶N	1S	)…	/¯	)ß	+	
-75
-3m
-6¡
-9Ø
-X[kCÇ6>B=�*¿.ê2
[L
&¨
-Ï
,ý
*E/`(�$¹0Þ'87"pA“)Õ=ÿ@=2~+±"Ý5<6's%›(ÁRê?=F}3Ä1øD*HoD¸KýaI`«sB€‚ÃTF=›bÙb<gŸg0o( 4É5þ34-h/–HÆF7VGŽ+Ö$2'.Z/‰+¹)å^KnFº"@5[(‘EºDDEFŠ_Ñ^1"�*³+Þ8
- :C '~ ;¦ 8â '!'C!3k!>Ÿ!-Þ!,"9"X"u".“"/Â"ò"$#37#k#F‰#&Ð#!÷#6$5P$+†$ ²$$Ó$.ø$.'%%V%)|%\¦%D&HH&D‘&LÖ&X#'H|')Å'*ï' (5;(9q(@«(+ì(6)AO).‘)3À)=ô)H2*<{*8¸*3ñ*4%+4Z+0�+@À+1,B3,Lv,AÃ,L-8R-B‹-+Î-2ú-<-.3j.Xž.P÷..H/`w/&Ø/\ÿ/X\0/µ0på0AV1+˜1KÄ1.2,?2%l2’23²22æ23493Wn3=Æ3*45/4%e4B‹4%Î44ô4>)5<h5C¥5Bé5;,63h6œ6¼6Ë6!à67$7=71P7V‚7IÙ7I#8<m8ª8½8Ñ8ã8ý8
9'9G9
S9a9%r9\˜9;õ91:C:Y:\:y:†:	Ÿ:©:»:Ì:,Ù:;;0;"L;o;(Œ;/µ;/å;1<8G<#€<'¤<2Ì<3ÿ<3=;C==†=Ž=£=³=º=Â=Ö=ë=>>%><>Y>k>‰>	¨>²>Ð>	å>"ï>?$?)@?/j?"š?½?Ô?Ý?é?í?@@$@'6@^@ {@#œ@À@Ú@ ì@
AH+A1tA#¦A,ÊAX÷AaPB:²B.íB7C1TC;†C(ÂC:ëC,&D-SD-�D¯D2ÎDEE&E;ERE)hE’E!¨E$ÊEIïE9F5VFŒF
-¡FC¬FIðF:GLGTG\G
zGˆGAšGÜG/øG+(H8TH�H$£H!ÈH1êHI;I+ZI†I
-šI¥IÄI%ÖIüIJ.,J-[JG‰J3ÑJK"$KGKYK$rK—K!´KÖK5èKL	0L:LLLbL‚LœL¸LÇLÙL	àLêLïLûL
-M!M=MSMeM…MžM¾MÒMäMüM-NHNZNlN€NšN'¯N×NæNøN
-OO!O:O:VO%‘O%·OÝOAöO;8PCtP=¸PCöP=:Q"xQ7›Q<ÓQ<R)MR5wR­R¶RvÑR*HSsS'…S­S¿SÆS
-ÍS(ØST'T;TXTpT�T#¨T$ÌT,ñT.U,MU.zU©U"ÆU,éU.V!EV1gV0™V2ÊV,ýV.*W#YW}W�W(±W/ÚW!
-X,X(IX#rX+–XÂX,ÛX Y)YBYbYvY–Y#µY-ÙY"Z*Z<ZOZ[ZpZ&‚Z	©ZF³Z/úZ*[J;[M†[Ô[ô[\\-;\i\r\z\A†\>È\]A]7[]B“]!Ö]ø]˜^±^Í^ß^ñ^2_.9_#h_Œ_™_¦_¶_¾_:×_+`#>`b`u`Ž`¦`,¾`:ë`&a	>adHa­a6ÀaM÷aMEb<“bgÐbb8c<›cEØc1d(Pd$ydžd/´d+äde,eFece>e<¾eûe4f'Lf$tf™fªfÂfÙfêfgg,g>gPgbg|g—g©gºgÒgñg2hCh']h7…h0½hDîh,3i'`iˆi¨iºi-Ôi+j+.j*Zj	…j	�j
-™j
-¤j¯jÄjÓjèj÷j1üj.k/Nk~k'�k"Åk&èk0l@l^lsl|l9šlÔl,él9m)PmCzmI¾mEnYNnY¨n;o;>oNzo/Éo5ùo:/p5jp4 p9Õp7q9GqD�qGÆqDrESrC™r4Ýr?s:RsG�s;ÕsAt9St*�t6¸t/ït;u3[u%�u1µuAçu!)vUKv\¡vAþv1@w?rw:²w7íw>%x$dxI‰xÓx/ðxO yPpy3Áy õy?z:Vz&‘z
-¸z0Ãz%ôz"{%={0c{!”{¶{Ï{ê{ÿ{|O|k|,Š|J·|7}
:}H}1W}‰}�}°}Ã})à}*
-~,5~6b~™~$¹~_Þ~">Aa£,Á2îH!€j€z€$‹€°€Ã€¼ã€¹ �Z‚/l‚œ‚·‚Õ‚*õ‚L ƒ2mƒ- ƒ)Îƒ"øƒ„.„C„X„4g„œ„0¤„%Õ„9û„5…G…X…r…z…‚…ž…H¥…î…4ñ…&†/†
-F†Q†2m†O †ð†‡"‡*7‡%b‡ ˆ‡©‡Ç‡Ï‡Cî‡¤2ˆ×ˆäˆ þˆ‰(‰<‰Q‰g‰}‰”‰±‰Â‰Ô‰è‰Nð‰[?Š›ŠAŸŠáŠ‹‹5‹6M‹„‹ ¤‹8Å‹+þ‹*Œ=ŒMŒUŒjŒ‚Œ–ŒªŒ¾ŒÑŒ
äŒòŒL� Y�Dz�P¿�Ž"Ž2=Ž$pŽ•ŽµŽ5ÈŽþŽ!�;�B�2J�F}�/Ä�ô�"�)�9�MH�9–�;Ð�7‘D‘\‘y‘ˆ‘,›‘$È‘Jí‘)8’ˆb’(ë’%“(:“c“
-“,Š“7·“ï“)	”3”Q”k”ƒ”‹”£”»”
Ñ”#ß”•'•C•T•j•„•¡•»•#Ç•%ë•–.–E–W–7n–¦–Â–â–û–—"—5—I—]—s—J‰—JÔ—J˜Ij˜:´˜ï˜-™;<™+x™@¤™<å™1"š8Tš8�š.Æš>õšI4›h~›yç›>aœN œIïœd9�0ž�;Ï�8žFDž5‹ž&Áž.èž-Ÿ.EŸ0tŸ<¥Ÿ!âŸ ! `? .  ,Ï hü Ee¡0«¡6Ü¡k¢E¢Å¢&ã¢I
-£#T£<x£<µ£eò£2X¤/‹¤/»¤4ë¤= ¥9^¥0˜¥7É¥'¦=)¦6g¦@ž¦ß¦ÿ¦,§)0§
Z© h©>‰©DÈ©’
ª€ ªu!«0—«7È«5¬Z6¬K‘¬Ý¬:í¬<(­e­g­`{­.Ü­®%*®+P®|®$Ž®&³®%Ú®3¯#4¯
X¯(f¯˜�¯8(°va°HØ°_!±G�±(É±ò±Gr²]º²H³Da³S¦³zú³Œu´~µT�µ|ÖµpS¶vÄ¶Š;·LÆ·t¸ˆˆ¸¹$.¹zS¹˜Î¹Tgº¼ºÚº5îº$»);»>e»&¤»Ë»Mæ»4¼F¼!V¼Dx¼D½¼D½-G½$u½š½'£½4Ë½@¾FA¾Eˆ¾<Î¾C¿BO¿I’¿ZÜ¿i7À%¡ÀÇÀçÀ*Á7/Á(gÁ�Á,°Á!ÝÁ%ÿÁ'%Â MÂ nÂ8�ÂÈÂ-ØÂ!Ã+(ÃTÃgÃ†Ã¥ÃÄÃàÃHüÃEÄ[Ä$hÄ*�Ä*¸ÄEãÄJ)ÅCtÅS¸ÅÆ++Æ&WÆ~Æ)œÆÆÆáÆúÆÇ@.ÇoÇ6�ÇÆÇÞÇ7ùÇ1ÈLÈ"kÈ<ŽÈËÈÚÈ
éÈ÷ÈÉ+3ÉB_É#¢ÉÆÉ/âÉ)Ê*<ÊgÊ#†ÊªÊÊÊ9ÝÊË)Ë6;ËrË<†ËÃË?×ËéÌÏÏ#%ÏIÏbÏxÏ(‘Ï;ºÏöÏ-
-Ð#8Ð#\Ð€Ð#ŸÐ#ÃÐçÐ,ûÐ.(ÑWÑ]ÑuÑ}Ñ1‚Ñ
-´Ñ¿ÑÄÑ:ÊÑHÒNÒSÒ,XÒ(…Ò.®ÒÝÒCâÒ&ÓP+Ó|Ó™Ó Ó¦Ó«Ó°Ó¶ÓºÓ?¿Ó7ÿÓB7ÔzÔ(Ô¨Ô&ÃÔMêÔl8Õ(¥ÕÎÕÓÕØÕßÕåÕêÕÖ)
-Ö14ÖfÖ6mÖ1¤ÖÖÖìÖ××.×&D×k×	‡×
‘×
Ÿ×
-­×
-¸×
-Ã×
-Î×
-Ù×aä×
-FØ~QØ
-ÐØÛØ5íØN#Ù.rÙ¡ÙÀÙÒÙéÙ"õÙÚ,Ú.3Ú2bÚ•Ú§ÚAÄÚ3Û:ÛAXÛ
šÛ¨ÛA¯ÛñÛOÜX`Ü¹ÜËÜSßÜ#3ÝAWÝ/™Ý(ÉÝ"òÝÞ83Þ&lÞ+“Þ.¿ÞUîÞRDß—ßJ²ßHýßYFàV à9÷à1á-Há:vá,±ásÞáÜRâÁ/ã¼ñã'®äcÖä:å…UåÛåEûåNAæ-�æX¾æ�è>™èIØèH"é>ké<ªéVçéD>êYƒê>ÝêQë;në�ªë},ìjªì[íWqí'ÉíeñírWî`Êî=+ïliï@ÖïEðM]ðT«ðOñQPñ_¢ñNòPQò^¢òPóNRóN¡óŽðó¯ô—/õ„Çõ4Lö*�öE¬öWòögJ÷>²÷wñ÷miøo×ø`Gù>¨ùTçùJ<úG‡úAÏúÆû•ØûSnüMÂü=ýšNýyéýNcþ»²þ_nÿGÎÿKLb]¯á
iï!Y®{³*RÞZ1>Œ´Ëx€SùQMuŸ[Mqp¿[0IŒFÖr	?�	»Ð	‹Œ
-‚`›Yü>VD•2Ú7

'E
ym
~ç
zf3áZ{pkìhXwÁÜ9šƒ±N5U„RÚ^-PŒsÝ@QQ’gä”LGá’){¼a8ošm
-mxfæ›Màé[Êi&«�ç<}$ Ý¢ §€!P("by"‚Ü"Å_#N%$Yt$$Î$Gó$G;%Sƒ%2×%)
-&e4&Hš&?ã&H#'ll'rÙ';L(;ˆ(EÄ(V
-)Ca)T¥)fú)Va*Q¸*V
-+Ia+�«+u<,]²,u-P†-f×-n>.c­.‡/x™/¡0F´0jû0^f1ŒÅ1;R2mŽ2Mü2NJ3\™3Oö3lF4m³4c!5i…5ï5Fò6\97\–7†ó7zz8qõ8Eg9Y­9c:Uk:LÁ:‚;C‘;xÕ;ŒN<uÛ<ŠQ=lÜ=QI>€›>K?áh?�J@�Û@WlA'ÄAOìA‘<BbÎBœ1CœÎC®kD}EŸ˜E¯8FqèFwZG?ÒGÂHÌÕH‚¢In%J:”J€ÏJZPKH«K{ôKppL]áL4?MPtMuÅM;N¦»NZbOA½OtÿO_tPOÔP�$Q£¦Q£JR‘îR§€S¨(TWÑTV)Uh€UféUVPVc§VZWafW@ÈWV	Xm`XKÎXQY?lYN¬Y;ûY_7Zc—Z@ûZ]<[uš[;\L\‚Ì\WO]E§]Mí]ç;^o#_˜“_q,`ož`{azŠa~bo„b‘ôbu†c…üc¶‚di9e\£eUf«Vf«gn®gKhWihRÁhZidoiOÔi�$jUµjÍkÌÙk˜¦l©?mqémR[n{®nf*oU‘oÅçoC­p[ñpZMqD¨q&íqErGZrN¢rlñrS^sz²sI-tlwt=ät£"umÆuf4vC›vGßvm'w€•wQx9hxE¢xzèxpcy„ÔyjYzZÄzz{yš{i|�~|¸}¸Å}å~~qdùÖªÐ€{�¯û�¹«‚¶eƒ¾„ZÛ„F6…g}…cå…XI†T¢†D÷†t<‡p±‡Z"ˆ�}ˆ]ÿˆ:]‰a˜‰rú‰QmŠJ¿ŠM
-‹³X‹qŒW~Œ4ÖŒ;�3G�m{�Ué�n?Žm®Žm�oŠ�ˆú�‡ƒ�=‘HI‘K’‘lÞ‘pK’I¼’t“~{“Gú“LB”Z�”|ê”Sg•[»•;–5S–?‰–YÉ–Z#—<~—>»—Tú—,O˜f|˜Jã˜;.™Vj™_Á™F!šChšG¬šcôšaX›Iº›Bœ¸Gœ›�˜œ�œ5ž´Òž¶‡Ÿ˜> G× B¡=b¡h ¡o	¢qy¢bë¢iN£~¸£_7¤^—¤}ö¤žt¥‹¦}Ÿ¦}§k›§Ž¨}–¨”©W©©nªypªnêªƒY«RÝ«Ž0¬r¿¬z2­m­­}®¾™®¥X¯^þ¯Ê]°i(±œ’±˜/²XÈ²Ô!³|ö³bs´oÖ´_Fµ`¦µQ¶8Y¶J’¶IÝ¶9'·Sa·™µ·uO¸TÅ¸p¹R‹¹}Þ¹[\ºR¸ºŠ»v–»“
¼›¡¼~=½K¼½B¾K¾ f¾W‡¾%ß¾P¿V¿au¿�×¿rgÀrÚÀUMÁ&£ÁÊÁ%êÁ1Â,BÂoÂ=‡ÂÅÂàÂ÷Â%Ã¼6Ã’óÃ$†Ä7«ÄãÄ7æÄÅ>;ÅzÅ‘Å°ÅÌÅ,æÅÆ),Æ5VÆAŒÆ7ÎÆHÇXOÇ[¨Ç^ÈkcÈMÏÈQÉ\oÉnÌÉ;ÊTÊÔÊçÊ(úÊ#Ë<ËOËbË~Ë›Ë¸ËÒË@íË?.Ì3nÌ4¢Ì;×ÌÍ5*Í.`Í�ÍI¦ÍðÍNÎDQÎJ–Î?áÎ8!ÏZÏ"kÏŽÏ:’ÏÍÏßÏñÏDÐ6HÐ?ÐE¿Ð.Ñ34Ñ@hÑ8©ÑiâÑjLÒ8·Ò[ðÒÀLÓ£
Ôx±Ôj*Õ€•ÕnÖ•…ÖL×{h×dä×WIØR¡ØHôØQ=Ù�Ù4­Ù0âÙ4Ú/HÚYxÚÒÚ/òÚ5"ÛˆXÛ,áÛLÜ#[Ü Ül Ü›
Ý©Ý»ÝÃÝ'ËÝ óÝÞ�&ÞB´Þp÷ÞXhßYÁß6àcRà^¶à|áY’á]ìázJâUÅâ
-ãK&ãrã5„ãºã4ÌãgäRiäƒ¼äh@å;©å1ååæ7)æ)aæ8‹æ6ÄæûæW
çeç wç˜ç'ªçEÒç"è=;è yèšè¬è³è¿èÖèæè"é2%éXéxé@’é#Óé;÷é3êQê"mê4�ê[Åê,!ëNëdë,‚ë:¯ë\êëGìbìtì†ì�ìE”ì%ÚìEí0Fí1wíC©íxííyfîšàîz{ï€öïXwðWÐðZ(ñiƒñiíñLWòb¤òó'&óÙNóE(ônô=€ô¾ôÐô×ô!ÞôbõcõCuõ-¹õ#çõ1ö"=ö4`ö:•ö[ÐöO,÷[|÷OØ÷?(øBhø[«øOùIWùb¡ùoúctú[ØúO4ûB„ûBÇû"
-üM-üP{ü3Ìü5ýR6ýF‰ýVÐý4'þI\þ7¦þ>ÞþHÿ$fÿC‹ÿ9ÏÿJ	VTB«î'9(1b%”Tº
-ab|ßŽþ��3)Q1{D­Aò4=RrkeÞDxVXÏ~(Q§Cù=+V	‚	�	 ¸	eÙ	T?
-N”
-ã
-ô
-
-?(nhS×W+#ƒ(§Ð#èf
ks
2ß
)¤<!áV†Z†áKhÉ´ž~gj…JðA;)}§TÅkb†IéN3>‚›Á•]Fó’:ÍDM+’>¾1ý+/>[8š,Ó,,-,Z@‡:È,+08\K•CáF%/lMœ_êUJ} PMo?½)ý/'eWc½c! K… 
-Ñ 
-Ü ç ó %
!3!B!W!f!8o!=¨!Wæ!.>"bm"[Ð"C,#Xp#&É#ð#$1$UB$ ˜$^¹$w%?�%€Ð%‚Q&¡Ô&ïv'Ìf(„3)€¸)×9*u+d‡+}ì+‚j,cí,ŒQ-fÞ-ŒE.ŒÒ. _/”0�•0œ31\Ð1i-2l—2h3�m3”ï3l„4pñ4fb5_É5e)6_�6Eï6O57|…7M8 P8Ùñ8gË9i3:`�:kþ:hj;nÓ;YB<~œ<>=BZ=†�=€$>X¥>@þ>`??[ ?Jü?G@Z^@F¹@OAHPAo™AD	B0NB/B3¯B&ãB
-C¶ CW×Cg/D™—D{1E­EÉEKæE2FFFYF@lFq­F„Gb¤G|H>„HHÃH·ITÄI€JFšJiáJ^KK‚ªK!-L"OLErL¸LCÖLHMKcN!¯ORÑO:$P4_PP”P]åP�CQOÔQN$ResR[ÙR5SOS)dS!ŽS½°SnTi}TeçTdMU²U#ÒU5öU,V4V1<VnV“{VWWWnW2‚WµW#ÍWuñW¨gXGYXY>pYf¯YXZDoZF´ZûZ1[jB[$­[Ò\8ì\U%]{]'�](·])à])
-^*4^%_^!…^"§^Ê^à^“è^Á|_>`mE`M³`2a,4a;aah�aTbW[bm³bZ!c'|c)¤cÎcÖc3óc'd=dQdedxd‹d1£dvÕd,LeŒyenf"uf7˜f^Ðf9/gFig(°g`Ùg=:hXxhÑh
Þh`ìhaMiq¯i.!j?Pj�j j€¯ja0k}’k�l;’l7Îl0m7m\QmE®m„ômjynänSåo?9p`yp2Úp
qQ(qjzq2åqTr=mr1«r6Ýrs+)s-Us3ƒs#·sYÛs55tMkt0¹t5êt9 u8Zu2“uÆu3ßuQv=ev+£v7Ïv7w�?w>ÐwBx?Rx’x±xÍxêxy&yFy¦fy—
z“¥z“9{€Í{)N|Kx|\Ä|W!}my}™ç}X�~�Ú~‚\mßŒM€¦Ú€ñ��s‚Œ�ƒ«„¦É„ßp…eP†n¶†f%‡�Œ‡©ˆYÇˆh!‰^Š‰_é‰aIŠh«ŠP‹Be‹T¨‹�ý‹h›Œf�°k�uŽz’Žo
�É}��G�QØ�a*‘šŒ‘S'’u{’uñ’Ðg“h8”d¡”X•~_•}Þ•^\–d»–q —d’—¨÷—‡ ˜¼(™Då™*šJ/šßÎ¿Ciq¯ž$Š¨6¸ŒÔ9õ¹í¹Ä"Àg!f5Ý”­;›Î¬¾×Æ
-ƒTW­0§y2!'(ê�)Ý
-ªE69	Ç`Z‹—EÄÖê{8¦J5„÷”�ž‡I£r€dŠÊ<ÆxkUámÜ‚x´¡[×ºå§û8ÇR)Ä»°q�¿õÿU³�Û³÷ëÃ"D}sÖ/WòF[šƒ|y0Vôë,ëµäÕ²$².ÿ;Y}_Îó„¼Ê!Hø×<\Œð¤´Àsˆh¡…fæˆ«ÁÄÏÜ,*‘wØºúa:ë©Î„' ðí~Mà‚báZó
Èc:Q3(;ÿ÷4G&ÉCN±µÞ&"PL%‹Cç?æ‰
-æýµ”Õ‡r±Ê¡Y†`�”¥Uôa›BÉUÙðlñe/—lwÝæ6î“Ÿ¥õh›>Lþ�:’’øõ¢“#VÔ¸Ÿ¿pxŠÍ~­a·ÃxC•QSt#Ú<â¡ÒïÈé@»ã�eûPÔ—jˆËñ%‰	S~LÃ°ãXOù$,3{)ã@šnÅcËAŸ�5Œ3§‚åb×À3µÅ-ÈXŠuZ=©zRí0[FÔD:wºËaÞ›Õ=ú¨
¦®N9®ä �ñ¿5šÜ­Kn8¶¾ŸKäÊ½	.l2ÜŠBAtø?�öãm®ƒÆÖLëz !x–gW˜ùÖ¶ÉÌVÄøIZ¸4O™¶:»«þžŽ€Iåÿ=©ÝþÌc‰•N¡þí�ªù[‡V¥v¬xÆòñ‘³Y$Ž‡Ž˜D Ê…•J®Íg+†û²Ð¨·ÒèØ3é�ozŸÝeo2ŽV•Ñïn(·êi0¬#+°]Õèû`|iFeî�åªo<Mq6î*>Tà&§ìÎÀ6Ç‹€"o¸Eæ¶NY’½Žð7vKø{£Óë8‡@–ªÂý*„*?	1GAù 5uç‡_>úÂÐ#ìž«Kü™å9«ð¥Ï`…^B£7Ù¢ï£1žè2â>ÆþÅÐ¬¶ví–9'Å¹Ñz|ÜÛÁõµ¢ï-OÒÌh²ÂvW€U‘ÏËà+òA%Ç&œ´%z«S2#—¤Nsî¾d“?pÕ0ãbÍÈ³ãR¦H£“(—ÏÑAž¤	]r¢¹âjI:â�81GXÚ§-ô±
-‘wÈå^}°h¹4ù¥�—íPÂn¼è8pÌ1êf<ká]RX2[Ï#¼½vrÔª¹ß™,Ùü_mƒ¨Ãh�ôw@]¼‰	JÛO·Ê vQ¼†Ð”˜/g¥ƒç^œ©ÉÁÒWd^¤)Úi!üÞ–JmI;'¿ê ÿüÅ$
Ú•{;š
.5qÉy /öÓw¸qX�ûNö™†ÛE>k�Ëà=øþB©ÿ¸�´–ªuÖ-‰óÓsGŒÈý^4iâ¡ôùÐºY-Û/•�ç¦Bf%Üîõ,e»è	fE]|T½®FöfÌìkÇ´ý4ÙÝÑÏBtóÞ?éÍœ~ØF¯ÁSpQé ÓŸ�ì“(ˆÛT²Øèæ|³=÷k¯z·ö¨Ž_9W²mP_J¼Ó­Øáô &C/MDºJß](CÖÍK†sjE¿…lc\‹ä�@˜17ð}Éé F[OÓaÔ+òÐ»PºZX™ctM¢â„SŒj
-çKìo{p
-7œýÌHU+áYj‹³Ã¬äßMïÙR_.ns˜‚)$
?îG×�=.cœM´'ouk†L@±�yöÒ^T›Ú}�\*Á1¦¯0tšò÷yH±Ò…tg÷ý¤­‹‘4>…ÞbÑl¨u-ú‚g&óm°«A–{¾q §SR×”ï’›OQà¾‘ÃVD3Z¢6àeúPdÑç½"Daê~·7ÆÎj+Š£‰dn½b
Ú!»’‚Hñó\r
À¦üœ�Ë’ÇÍhyÂˆµ¤H\Áìr7~uˆL®€l™˜.Þñû�iéIÙá€ü)
-òÂ|šß¾Ä±“b„À\%�*TƒQ¶¬p�¯©d`}`;<ä�G¯úØÅ',°ÕŒ"ßzš�šˆš„‰ ‰´‰È‰Ü‰ð‰ŠŠ,Š@ŠTŠhŠ|Š�Š¬ŠÀŠÔŠðŠ‹‹,‹@‹T‹h‹|‹�‹¤‹¸‹Ô‹è‹ü‹Œ<ŒPŒdŒxŒŒŒ¨Œ¼ŒÐŒäŒ��(�<�P�d�x�Œ� �´�Ð�ì�ŽŽ(Ž<ŽPŽdŽxŽ”Ž°ŽÌŽàŽôŽ��0�D�X�l�€�”�¨�¼�Ð�ä�ø�� �4�H�d�€�”�¨�Ä�Ø�ì�‘‘(‘<‘P‘d‘x‘”‘°‘Ä‘à‘ü‘’$’8’T’p’Œ’ ’´’Ð’ä’ø’“ “4“H“\“p“Œ“ “´“È“ä“ø“” ”4”`”t”�”¤”¸”Ì”à”ô”••0•D•X•l•€•œ•°•Ä•à•ô•––0–D–X–l–€–”–¨–Ä–Ø–ì–—,—@—T—h—|—˜—¬—À—Ô—ð—˜˜,˜@˜T˜h˜|˜�˜¤˜À˜Ü˜ð˜™™,™@™T™h™„™ ™¼™Ð™ä™ø™š š4šHš\špš„š˜š¬šÀšÔšèšüš›$›8›T›p›„›˜›´›È›Ü›ð›œœ,œ@œTœhœ„œ œ´œÐœìœ��(�D�`�|���¤�À�Ô�è�ü�ž$ž8žLž`ž|ž�ž¤ž¸žÔžèžüžŸ$ŸPŸ�šÿÿÿÿ±š"ÿÿÿÿçš ÿÿÿÿ›5ÿÿÿÿJ›%ÿÿÿÿv›)ÿÿÿÿ¦›(ÿÿÿÿÕ›/ÿÿÿÿœÿÿÿÿ'œ'ÿÿÿÿUœÿÿÿÿ€œ-ÿÿÿÿ®œÿÿÿÿÌœ/ÿÿÿÿ�ÿÿÿÿ,� ÿÿÿÿT�%ÿÿÿÿ‘�ÿÿÿÿÅ�*ÿÿÿÿð�.ÿÿÿÿ ž)1ÿÿÿÿzž%ÿÿÿÿ ž1ÿÿÿÿÒž
-2ÿÿÿÿŸ"ÿÿÿÿBŸ3ÿÿÿÿvŸ3ÿÿÿÿªŸÿÿÿÿÑŸ9ÿÿÿÿ! %ÿÿÿÿT 
-Hÿÿÿÿ¨ 
-/ÿÿÿÿÿ 
-6ÿÿÿÿ?¡
->ÿÿÿÿ‡¡
-0ÿÿÿÿÁ¡
-Fÿÿÿÿ¢
-ÿÿÿÿS¢
-+ÿÿÿÿˆ¢
-ÿÿÿÿ°¢
-"ÿÿÿÿÜ¢@)ÿÿÿÿK£
-/ÿÿÿÿ„£
- ÿÿÿÿ®£-ÿÿÿÿõ£6ÿÿÿÿA¤6ÿÿÿÿŒ¤
-7ÿÿÿÿÍ¤
-?ÿÿÿÿ¥
-ÿÿÿÿ;¥4ÿÿÿÿˆ¥+ÿÿÿÿÀ¥-ÿÿÿÿú¥3ÿÿÿÿ.¦
--ÿÿÿÿe¦(ÿÿÿÿ¡¦
--ÿÿÿÿØ¦ÿÿÿÿ
-§6ÿÿÿÿG§>ÿÿÿÿŒ§#ÿÿÿÿ·§ÿÿÿÿó§ÿÿÿÿ/¨
-2ÿÿÿÿk¨
-.ÿÿÿÿ£¨Fÿÿÿÿê¨
-2ÿÿÿÿ&©
-2ÿÿÿÿb©
-2ÿÿÿÿž©
-2ÿÿÿÿÚ©
-2ÿÿÿÿª
-2ÿÿÿÿRªFÿÿÿÿ™ª
-9ÿÿÿÿÜª
-7ÿÿÿÿ«
-9ÿÿÿÿ`«Fÿÿÿÿ§«Fÿÿÿÿî«	2ÿÿÿÿ)¬+ÿÿÿÿ[¬.ÿÿÿÿ�¬+ÿÿÿÿÂ¬-ÿÿÿÿ÷¬0ÿÿÿÿE­"ÿÿÿÿ„­!ÿÿÿÿ·­
-*ÿÿÿÿí­
-Aÿÿÿÿ8®
-dÿÿÿÿ¦®
-$ÿÿÿÿÔ®1ÿÿÿÿ¯1ÿÿÿÿB¯
-ÿÿÿÿ_¯5ÿÿÿÿ­¯&ÿÿÿÿá¯=ÿÿÿÿ1°&ÿÿÿÿ…°+ÿÿÿÿÄ°ÿÿÿÿø°]ÿÿÿÿe±!5ÿÿÿÿ¼±Kÿÿÿÿ²<"ÿÿÿÿf²$ÿÿÿÿŸ²7
-ÿÿÿÿá²ÿÿÿÿ)³;ÿÿÿÿ‘³?ÿÿÿÿï³ÿÿÿÿ´2ÿÿÿÿR´ÿÿÿÿƒ´ÿÿÿÿµ´=ÿÿÿÿµIÿÿÿÿgµ(ÿÿÿÿ¥µIÿÿÿÿ¶!ÿÿÿÿ>¶!ÿÿÿÿn¶ÿÿÿÿŸ¶+ÿÿÿÿÌ¶=ÿÿÿÿ
-·5ÿÿÿÿ@·@ÿÿÿÿ…·7ÿÿÿÿ½·-ÿÿÿÿë·ÿÿÿÿ¸-ÿÿÿÿE¸
-"	ÿÿÿÿ˜¸?ÿÿÿÿÙ¸=ÿÿÿÿ¹46ÿÿÿÿ†¹Tÿÿÿÿá¹xÿÿÿÿ`ºkÿÿÿÿÒºjÿÿÿÿC»Vÿÿÿÿ »pÿÿÿÿ¼Hÿÿÿÿf¼^ÿÿÿÿË¼Bÿÿÿÿ(½Sÿÿÿÿ|½;ÿÿÿÿ¸½Y%ÿÿÿÿ7¾Gÿÿÿÿ¾6ÿÿÿÿÀ¾+6ÿÿÿÿ#¿6+ÿÿÿÿ„¿]ÿÿÿÿâ¿cÿÿÿÿGÀZQÿÿÿÿòÀjÿÿÿÿ]ÁZÿÿÿÿ¸Á
-eÿÿÿÿ'ÂCÿÿÿÿˆÂiÿÿÿÿòÂiÿÿÿÿ\Ã!ÿÿÿÿ—Ãv*ÿÿÿÿ7Ämÿÿÿÿ¥Ä
-ƒÿÿÿÿ4Å
-BDÿÿÿÿÆÅ
-Uÿÿÿÿ%Æ
-oÿÿÿÿžÆ
-RÿÿÿÿúÆ
-rÿÿÿÿvÇ
-C/ÿÿÿÿòÇ
-9ÿÿÿÿ5È
-:ÿÿÿÿyÈ
-?ÿÿÿÿÂÈ‚aÿÿÿÿ«É
-NÿÿÿÿÊ
-5ÿÿÿÿBÊ6\ÿÿÿÿÔÊ_(ÿÿÿÿ[Ë_ÿÿÿÿÔË
-cÿÿÿÿAÌ
-…ÿÿÿÿÐÌ
-:ÿÿÿÿÍH?ÿÿÿÿ›ÍnÿÿÿÿÎrÿÿÿÿ¥Î†ÿÿÿÿ,Ï
-IÿÿÿÿÏUÿÿÿÿçÏ
-VÿÿÿÿGÐ73ÿÿÿÿ±Ðyÿÿÿÿ1Ñ ÿÿÿÿØÑJÿÿÿÿ+Ò5#ÿÿÿÿŠÒ5#ÿÿÿÿéÒ
-�ÿÿÿÿ€Ó
-KÿÿÿÿÕÓsÿÿÿÿIÔ
-Qÿÿÿÿ¤Ô
-QÿÿÿÿÿÔ
-QÿÿÿÿZÕ
-QÿÿÿÿµÕ
-QÿÿÿÿÖ
-QÿÿÿÿkÖsÿÿÿÿßÖ
-XÿÿÿÿA×
-Vÿÿÿÿ¡×
-XÿÿÿÿØsÿÿÿÿwØsÿÿÿÿëØ	SÿÿÿÿGÙmÿÿÿÿ»Ùqÿÿÿÿ3Úoÿÿÿÿ©Úƒÿÿÿÿ4ÛB\ÿÿÿÿÓÛB<ÿÿÿÿQÜAÿÿÿÿ«Ü	Tÿÿÿÿ
-Ý
-ŠÿÿÿÿžÝ
-¼ÿÿÿÿdÞ
-Pÿÿÿÿ¾Þkÿÿÿÿ4ßkÿÿÿÿ ß
-3ÿÿÿÿÝßBdÿÿÿÿƒàRÿÿÿÿãàpÿÿÿÿoáS1ÿÿÿÿâXÿÿÿÿqâ"EÿÿÿÿØâÕÿÿÿÿÅã0rÿÿÿÿhäŠÿÿÿÿóänÿÿÿÿzå#GÿÿÿÿäåbÿÿÿÿZæX$ÿÿÿÿñæ7~ÿÿÿÿÂç=ƒÿÿÿÿ‚è0ÿÿÿÿ½èZÿÿÿÿ*é4@ÿÿÿÿžé73ÿÿÿÿê~ÿÿÿÿ¡ê4¬ÿÿÿÿ�ë&0ÿÿÿÿ×ëG¬ÿÿÿÿÊì"0ÿÿÿÿí0ÿÿÿÿ^í0ÿÿÿÿ­íNÿÿÿÿýíiÿÿÿÿhî~ÿÿÿÿçî‡ÿÿÿÿsïQÿÿÿÿÅïLÿÿÿÿð ÿÿÿÿAðOÿÿÿÿ¯ð
-0<ÿÿÿÿ=ñ}ÿÿÿÿ	    TLS: %pA	<corrupt: 0x%04lx>	Export Address Table 			Export Address Table 		%08lx
+Þ•q0¸3I	@gdŒ‚|Œ„Žì¦
í¦û¦§(§AG§?‰§:É§¨¨.¨$M¨3r¨
¦¨´¨%Ô¨ú¨ü¨A©&P©w©�©©©Â©Ò© ñ©ª2ªKªbªoªP‚ªÓª*ëª9«6P«;‡«Ã«FÕ«6¬6S¬:Š¬5Å¬,û¬D(­Nm­J¼­)®G1®:y®B´®L÷®)D¯Bn¯L±¯þ¯°D+°Gp°¸°×°é°ý°±*±3I±}±”±0¦±×±ç±÷±+²+=²+i²#•²¹²Ñ²Ú²ø²(³?8³>x³%·³&Ý³(´)-´GW´7Ÿ´×´î´µ+µDµ_µµ˜µ³µÉµáµõµ¶,&¶S¶c¶|¶”¶«¶º¶Ð¶å¶ÿ¶·1+·]·n·{·’·­·#Å·+é·&¸5<¸r¸‡¸Ÿ¸¹¸Ï¸é¸¹¹/¹$D¹i¹‚¹¢¹º¹$Ï¹ô¹ºº<6ºsº‚º
‘ºŸº³ºÈº àº»»,»L»h»ˆ»¡»º»Í»*à»¼¼&/¼V¼0j¼›¼"¯¼	Ò¼Ü¼#ï¼½,½=½V½"o½’½"¦½#É½#í½¾#&¾#J¾n¾{¾™¾·¾½¾Ê¾Ò¾×¾
+ô¾ÿ¾¿!
+¿ ,¿M¿R¿W¿o¿�¿¯¿´¿È¿!Í¿ï¿ÀÀ
ÀÀÀÀ!À&ÀBÀ"[À~ÀƒÀ£À·À&×ÀBþÀAÁaÁfÁkÁrÁxÁ}Á�Á–Á®ÁÂÁÉÁâÁöÁÂÂ)Â:ÂKÂcÂ	rÂ
|Â
ŠÂ
+˜Â
+£Â
+®Â
+¹Â
+ÄÂ$ÏÂ
+ôÂ#ÿÂ
+#Ã.Ã@Ã!XÃzÃ�Ã
+žÃ
©Ã	·ÃÁÃ
+ÒÃÝÃäÃüÃÄ(Ä7ÄNÄiÄxÄ‘Ä Ä§ÄÇÄ(×Ä/Å0ÅBÅ+QÅ}ÅA™ÅÛÅõÅÆ)Æ8>ÆwÆ�Æ¤Æ&¾ÆåÆÇ2Ç?RÇ&’Ç¹Ç(ØÇÈ"È7È*WÈ6‚È{¹Èr5Éx¨É!Êe7Ê7�Ê:ÕÊË?"Ë@bËU£Ë`ùËbZÌq½Ì/ÍOÍ&mÍ”Íœ®ÍDKÎ'�Î,¸Î1åÎ'Ï$?Ï/dÏ-”Ï0ÂÏ&óÏ8ÐSÐ=sÐ9±Ð:ëÐ6&Ñ6]Ñ”Ñ/´Ñ5äÑ+Ò$FÒ6kÒ"¢Ò&ÅÒ6ìÒ=#Ó:aÓ:œÓD×Ó8Ô9UÔC�Ô:ÓÔ7Õ8FÕ@ÕGÀÕ9Ö,BÖ0oÖ# ÖÄÖ=ßÖ-×6K×‚×7ž×;Ö×:Ø"MØ3pØ%¤Ø.ÊØùØ0Ù1JÙ'|Ù¤ÙEÂÙ8Ú(AÚcjÚ4ÎÚ&Û2*Û&]Ûk„Û*ðÛ4Ü]PÜ8®ÜçÜOÝbVÝ,¹Ý+æÝ)ÞY<Þ0–Þ=ÇÞ3ß29ßBlßL¯ßüß4à)Oà$yà3žà9Òà6á/CáDsá&¸áWßáU7âI�â+×â8ã%<ã(bã&‹ã,²ã#ßã>äBBäB…äÈä'èäEå9Vå4�å3ÅåJùå(Dæ;mæ©æ0ÈæDùæ.>ç9mç?§ç?çç2'è8ZèS“è'çè.é,>é'ké6“é ÊéYëé/Eê4uêNªêªùêI¤ë9îë3(ì¾\ì<í<XíF•íPÜío-î>�îFÜî`#ï~„ïFð‚Jð[Íð3)ñ@]ñMžñmìñ7Zò#’ò¶ò(Ìò&õò+ó5Hó~ó“ó8§ó"àó$ô'(ô9PôCŠô!Îô!ðô*õ/=õ1mõ/Ÿõ/Ïõ0ÿõ*0ö0[ö<ŒöiÉö=3÷Bq÷=´÷-ò÷. ø8Oø:ˆøFÃø?
+ùVJù(¡ù>Êù;	ú=Eú4ƒú#¸úLÜúI)û8sû+¬û8Øû2ü9Dü:~ü3¹ü,íüuý �ý.±ý.àýJþ0ZþB‹þ/Îþ,þþ'+ÿ%Sÿ,yÿN¦ÿõÿCJS@žJß**%U<{1¸ êl<x<µ+ò,:Hg6°AçA)Jk>¶JõJ@<‹.È(÷l v�A6F}4›0Ð+A-3o@£!ä#	.*	BY	Fœ	4ã	%
+:>
+2y
+*¬
+9×
+C(UC~:ÂTýJR5�4Ó6
/?
/o
&Ÿ
&Æ
5í
'#0K5|(²3Û%&5\'|=¤#â+32(f@�CÐ5'J,rgŸ4m<Aª@ìH-GvK¾I
+LTH¡CêY.5ˆ0¾4ïM$Nr1Á)ó)/G)w+¡7Í3699pXª[C_6£>Ú=*W.‚2±[ä&@-g,•ÂÝ/ø(($Q0v'§8Ï"A+)m=—#Õ@ù2:+m"™5¼<ò'/%W(}R¦?ùF9 3€ 1´ Dæ H+!Dt!K¹!a"sg"BÛ"‚#T¡#=ö#b4$b—$gú$gb%0Ê%(û%4$&5Y&)�&3¹&-í&/'HK'F”'7Û'G(+[($‡(2¬(.ß(/)+>))j)-”)^Â)K!*Fm*´*"Ð*ó*5+(D+Em+D³+Dø+F=,_„,^ä,"C-*f-+‘-8½-:ö-'1.;Y.8•.'Î.'ö.3/>R/-‘/,¿/ì/I0U0r0.�0/¿0ï0$1341h1F†1&Í1!ô1625M2)ƒ2­2Ç2æ2+3 ,3$M3.r3.¡3%Ð3)ö3\ 4D}4HÂ4D5LP5X�5Hö5)?6*i6 ”65µ69ë6@%7+f76’7\É7A&8.h8M—83å8=9HW9< 98Ý93:4J:4:0´:@å:1&;BX;L›;Aè;L*<8w<B°<+ó<2=<R=3�=XÃ=P>.m>`œ>&ý>P$?\u?XÒ?/+@p[@AÌ@+AK:A.†A,µA%âAB3(B2\B�B4¯BJäB?/C@oCW°C=D*FD5qD%§DBÍD%E46E>kE<ªECçEB+F;nF3ªF'ÞFGH9HKHZH!oH‘H$§HÌH1ßHVIIhII²I<üI9JLJ`JrJŒJ
 J'®JÖJ
âJðJ%K\'K;„KÀKÒKèKëKLL	.L8LJL[L,hL•L©L¿LRÛL".M+QM%}M5£M2ÙM4N/AN/qN3¡N(ÕN2þN31O+eO&‘O"¸OÛO(øO/!P/QP1�P8³P#ìP'Q28Q3kQŸQ;¯QëQòQúQRR&R.RBRWRlR~R‘R¨R¿RÜRîRS	+S5SSS	hS"rS•S§S)ÃS/íS"T@TWT`TlTpTƒT•T§T'¹TáT þT#UCU]U oU�UH®U1÷U#)V,MV@zVX»VaW:vW.±W7àW1X;JX(†X:¯X,êX-Y-EYsY2’YÅYÕYêYÿYZ),ZVZ!lZ$ŽZI³ZýZ5[P[
+e[Cp[I´[þ[\\ \
>\L\ ^\A\Á\/Ý\+
]89]r]$ˆ]!­]1Ï]^ ^+?^k^^˜^
+¥^°^BÏ^_%$_J_\_.z_-©_G×_3`S`"r`•`§`$À`å`!a$a56ala	~aˆaša°aÐaêabb'b	.b8b=bIbXbob‹b¡b³bÓbìbc c2cJc-hc–c¨cºcÎcèc'ýc%d4dFdXd_d!fdˆd:¤d%ßd%e+eADe;†eCÂe=fCDf=ˆf"Æf7éf<!g<^g)›g5Ågûghvh*–hÁh'Óhûh
iii
+*i(5i^i'pi˜iµiÍiíi#j$)j,Nj.{j,ªj.×jk"#k,Fk.sk!¢k1Äk0ök2'l,Zl.‡l#¶lÚlúl(m/7m!gm‰m(¦m#Ïm+ómn,8n en†nŸn¿nÓnón#o-6o"do‡o™o¬o¸oÍo&ßo	pFp/Wp‡pJ˜pMãp1qQqhq{q-˜qÆqÏq×qAãq>%rdrAvr7¸rBðr!3sUs˜ust*t<tNt#ct2‡t.ºt#ét
uu'u7u?u:Xu+“u#¿uãuöuv'v,?v:lv§v	¿vdÉv.w6AwMxwMÆw<xgQxb¹x<y1Yy(‹y$´yÙy/ïy+zKzgz�zžz>ºz<ùz6{4R{'‡{$¯{Ô{å{ý{|%|=|U|g|y|‹|�|·|Ò|ä|õ|
},}2K}~}'˜}LÀ}4
~7B~0z~'«~Ó~ó~-+M+y*¥	Ð	Ú
+ä
+ïú€*€9€N€]€1b€”€/´€ä€ �'$�"L�&o�0–�Ç�å�ú�‚9!‚[‚,p‚a�‚9ÿ‚)9ƒCcƒI§ƒEñƒY7„Y‘„;ë„;'…Nc…/²…5â…:†5S†4‰†9¾†7ø†90‡Dj‡G¯‡D÷‡E<ˆC‚ˆ-Æˆ4ôˆ?)‰:i‰F¤‰;ë‰F'Š9nŠ*¨Š6ÓŠ/
+‹;:‹3v‹%ª‹1Ð‹!ŒV$Œ\{ŒAØŒ1�?L�:Œ�7Ç�>ÿ�$>ŽIcŽ­Ž/ÊŽOúŽPJ�3›� Ï�?ð�:0�&k�
+’�0��%Î�"ô�%‘0=‘!n‘�‘©‘Ä‘Ù‘æ‘Oõ‘E’,d’7‘’
É’×’1æ’“,“?“R“)o“*™“,Ä“6ñ“(”$H”_m”"Í”(ð”A•[•,y•2¦•HÙ•"–2–
+C–$N–s–†–¼¦–¹c—˜//˜_˜z˜˜˜*¸˜Lã˜20™-c™)‘™"»™Þ™ñ™šš4*š_š0gš%˜š9¾šøš<
+›=G›3…›5¹›2ï›7"œBZœL�œêœûœ��%�A�HH�‘�4”�É�Ò�
+é�ô�2ž-CžOqžÁžàž"åž*Ÿ%3Ÿ YŸzŸ˜Ÿ ŸC¿Ÿ¤ ¨ µ  Ï ð ù 
¡"¡8¡N¡e¡‚¡“¡¥¡¹¡*Á¡Nì¡[;¢—¢A›¢Ý¢ü¢£1£6I£€£  £8Á£+ú£&¤9¤I¤Q¤f¤~¤’¤¦¤º¤Í¤
à¤î¤L¥ U¥v¥D•¥PÚ¥+¦=¦2X¦$‹¦°¦Ð¦5ã¦§!4§V§]§2e§F˜§,ß§/¨(<¨e¨"w¨š¨ª¨M¹¨9©;A©7}©µ©Í©ê©ù©,ª$9ªJ^ª)©ª(Óª%üª("«K«
+g«,r«Ÿ«)¹«ã«¬¬3¬;¬S¬)k¬•¬
«¬#¹¬Ý¬'õ¬­.­D­^­{­•­#¡­%Å­ë­®®1®7H®€®œ®µ®Ê®Ü®ï®¯¯-¯JC¯JŽ¯JÙ¯I$°:n°©°-È°;ö°+2±@^±<Ÿ±1Ü±8²8G²U€².Ö²>³ID³hŽ³y÷³>q´N°´Iÿ´dIµ0®µ;ßµ8¶FT¶5›¶&Ñ¶.ø¶-'·.U·0„·<µ·!ò·¸!-¸)O¸Iy¸`Ã¸.$¹,S¹h€¹Eé¹0/º6`ºk—ºE»I»&g»IŽ»#Ø»<ü»<9¼ev¼QÜ¼2.½/a½/‘½4Á½=ö½94¾0n¾7Ÿ¾'×¾=ÿ¾6=¿@t¿µ¿Õ¿,Ù¿)À
0Â >Â>_ÂDžÂ’ãÂ€vÃu÷Ã0mÄ7žÄ5ÖÄZÅKgÅ³Å:ÃÅ<þÅ;Æ=Æ`QÆ.²ÆáÆ%Ç+&ÇRÇ$dÇ&‰Ç%°Ç3ÖÇ#
+È
.È(<È˜eÈ8þÈv7ÉH®É_÷ÉGWÊ(ŸÊÈÊGHË]�ËHîËD7ÌS|ÌzÐÌŒKÍ~ØÍTWÎ|¬Îp)ÏvšÏŠÐLœÐtéÐˆ^ÑçÑ$Òz)Ò˜¤ÒT=Ó’Ó°Ó5ÄÓúÓ)Ô>;Ô&zÔ¡ÔM¼Ô
+ÕÕ!,ÕDNÕD“ÕDØÕ-Ö$KÖpÖ'yÖ4¡Ö@ÖÖF×E^×<¤×Cá×B%ØIhØZ²Øi
Ù%wÙ�Ù½Ù*ÚÙ7Ú(=ÚfÚ,†Ú!³Ú%ÕÚ'ûÚ #Û DÛ8eÛžÛ-®Û!ÜÛ+þÛ*Ü=Ü\Ü{ÜšÜ¶ÜHÒÜÝ1Ý$>Ý*cÝ*ŽÝE¹ÝJÿÝCJÞSŽÞâÞ+ß&-ßTß)rßœß·ßÐßèß@àEà6eàœà´à7Ïàá"á"Aá<dá¡á°á
¿áÍáêá+	âB5â#xâœâ/¸â)èâ*ã=ã#\ã€ã ã9³ãíãÿã6äHä<\ä™ä?­äíäþä#å5åNådå(}å;¦åâå-öå#$æ#Hælæ#‹æ#¯æÓæ,çæ.çCçIçaçiç1nç
+ ç«ç°ç:¶çHñç:è?è,Dè(qè.šèÉèCÎèéPéhé…éŒé’é—éœé¢é¦é?«é7ëéB#êfê(kê”ê&¯êMÖêl$ë(‘ëºë¿ëÄëËëÑëÖëïë)öë1 ìRì6Yì1�ìÂìØìîìíí&0íWí	sí
}í
‹í
+™í
+¤í
+¯í
+ºí
+ÅíaÐí
+2î~=î
+¼îÇî5ÙîNï.^ï�ï¬ï¾ïÕï"áïðð.ð2Nð�ð“ðA°ð3òð&ñADñ
†ñ”ñA›ñÝñOüñXLò¥ò·òSËò#óACó/…ó(µó"Þóô8ô&Xô+ô.«ôUÚôR0õƒõJžõHéõY2öVŒö9ãö÷-4÷:b÷,�÷sÊ÷Ü>øÁù¼Ýù'šúµÂúXxûcÑû5ü…Pü]Öü4ý�´ý”EþªÚþ…ÿE¥ÿNëÿ-:Xh�Á>CI‚HÌ><TV‘DèY->‡QÆ;�T}ÖjT[¿W'se›r`t=Õl	@€	EÁ	M
+TU
+Oª
+Qú
+_LN¬Pû^LP«NüNK
Žš
¯)—Ù„q4ö*+EVdœWgY>Áwmxoæ>VT•JêG5A}•¿MU=£Aáš#y¾N8»‡_CG£KëL7ê„Go]·ái÷!a®ƒ³2RæZ9>”´ÓUˆxÞSW Q« uý ws!3ë!s"[“"Mï"p=#[®#I
+$FT$r›$?%»N%‹
+&‚–&`'Yz'>Ô'D(2X(7‹('Ã(yë(~e)zä)3_*Z“*{î*kj+hÖ+w?,Ü·,š”-ƒ/.N³.U/œX/Wõ/\M0rª0z1X˜1nñ1Ÿ`2S3RT3^§3P4sW4@Ë4œ5Q©5gû5”c6Gø6’@8{Ó8aO9o±9m!;m�;fý;›d<à=[á=i=>«§>çS?};@Ý¹@§—AP?Bb�B‚óBÅvCN<DY‹D$åDG
+EGRESšESîE2BF)uFeŸFHG?NGHŽGl×GrDH;·H;óHE/IVuICÌITJfeJVÌJQ#KVuKIÌK�Lu§L]Mu{MPñMfBNn©NdO‡}OxP¡~PF QjgQ^ÒQŒ1R^¾R;SmYS”ÇSM\TNªT\ùTOVUl¦UmVc�ViåVOWFRX\™X\öX…SYzÙYqTZEÆZY[cf[UÊ[L \‚m\Cð\x4]Œ­]u:^Š°^l;_Q¨_€ú_h{`Kä`á0a�b�£bW4c'ŒcO´c‘db–dœùdœ–e®3f}âfŸ`g¯hq°hw"i?šiÂÚiÌ�j‚jkník:\l€—lZmHsm{¼mp8n]©n4oP<ou�op¦ƒpZ*qA…qtÇq_<rOœr�ìr£nsEt£Xt‘üt§Žu¨6vWßvV7whŽwf÷wV^xcµxZyaty@ÖyVzmnzKÜzQ({?z{Nº{;	|_E|c¥|@	}]J}u¨};~Z~‚Ú~W]EµMûçI€o1�˜¡�q:‚o¬‚{ƒz˜ƒ~„o’„‘…u”……
+†¶�†iG‡\±‡Uˆ«dˆ«‰n¼‰N+ŠKzŠWÆŠR‹Zq‹dÌ‹O1Œ��ŒU�Íh�Ì6Ž˜�©œ�qF�R¸�{‘f‡‘Uî‘ÅD’C
+“[N“Zª“D”&J”Eq”G·”Nÿ”lN•S»•z–IŠ–lÔ–=A—£—B#˜mf˜fÔ˜C;™G™mÇ™€5šQ¶š9›EB›zˆ›pœ„tœjùœZd�z¿�y:ži´ž�Ÿ¸¬Ÿåe qK¡ù½¡ª·¢b£¯â£¹’¤¶L¥¾¦ZÂ¦F§gd§cÌ§J0¨X{¨TÔ¨D)©tn©pã©ZTª�¯ª]1«:�«aÊ«r,¬QŸ¬Jñ¬M<­\Š­³ç­q›®W
¯4e¯;š¯3Ö¯m
+°Ux°nÎ°m=±m«±o²ˆ‰²‡³=š³HØ³K!´lm´pÚ´IKµt•µ~
+¶G‰¶LÑ¶Z·|y·Sö·[J¸;¦¸˜â¸5{¹?±¹Yñ¹ZKº<¦º>ãºT"»,w»f¤»J¼;V¼V’¼_é¼RI½@œ½?Ý½6¾FT¾C›¾Gß¾c'¿a‹¿Ií¿B7À¸zÀ›3Á˜ÏÁœhÂ´Ã¶ºÃ˜qÄG
+ÅBRÅ=•ÅhÓÅo<Æq¬ÆbÇi�Ç¬ëÇ~˜È_É¡wÉ^Ê}xÊžöÊ‹•Ë}!Ì}ŸÌkÍŽ‰Í}Î”–ÎW+ÏnƒÏyòÏnlÐƒÛÐR_ÑŽ²ÑrAÒz´Òm/Ó}�Ó¾Ô¥ÚÔ^€ÕÊßÕiªÖª×œ¿×˜\ØXõØÔNÙ|#Úb ÚoÛ_sÛ`ÓÛQ4Ü8†ÜJ¿ÜI
+Ý9TÝSŽÝhâÝQKÞ\�Þ™úÞu”ßT
+àp_àRÐà}#á[¡áRýáŠPâvÛâ“Rã›æã~‚äKå?Måé�åBwèºèÚè õèWé%néP”éåéaê�fêröêriëUÜë&2ìYì%yì1Ÿì,Ñìþì=íTíoí†í%Ÿí¼Åí’‚î$ï7:ïrï7uï­ï>Êï	ð ð?ð[ð,uð¢ð)»ð5åðƒñ1Ÿñ;Ññ<
òOJòQšòcìòUPóU¦ó\üó6YôH�ôIÙôD#õGhõA°õ7òõH*öXsö[Ìö^(÷k‡÷Mó÷QAø\“ønðø_ùxùøùú(úGú`úsú†ú¢ú¿úÜúöú@û@Rû?“û3Óû4ü;<üxü5�ü.ÅüôüIýUýNgýD¶ýJûý?Fþ8†þ¿þ"Ðþóþ:÷þ2ÿDÿVÿDhÿ6­ÿ?äÿE$.j3™@Í8iGj±8[Ut±À&£çx‹j€onð•_Lõ{Bd¾W#R{HÎQ	i	4‡	0¼	4í	/"
+YR
+¬
+/Ì
+5ü
+ˆ2,»Lè#5 Ylz›çƒ
•
�
'¥
 Í
î
8�9BÇp
+X{YÔ6.ce^É|(Y¥]ÿz]UØ.L
+aKl~¸75I4‘gÆR.ƒ�h;n1ªÜ7î)&8P6‰ÀWÒ* <]'oE—"Ý= >_qx„›«"Ç2ê=@W#˜;¼ø"24U[Š,æ),G:t\¯'9KREY%ŸEÅ01<Cnx²y+š¥z@ €» X<!W•!Zí!iH"i²"L#bi#Ì#'ë#Ù$Eí$3%=E%ƒ%•%œ%£%!º%bÜ%?&CQ&-•&#Ã&1ç&"'4<':q'[¬'O([X(O´(?)BD)[‡)Oã)I3*b}*oà*cP+[´+O,B`,B£,"æ,M	-PW-3¨-5Ü-R.Fe.V¬.4/I8/7‚/>º/Hù/$B0Cg09«0Jå0V01B‡1Ê1'Ü1921>2%p2T–2
+ë2aö2bX3»3ŽÚ3�i43ù4)-51W5D‰5AÎ566.6rG6eº6 7x27X«7~8Qƒ8CÕ89+2:^:y: ”:Eµ:eû:Ta;N¶;<<'<
+?<?J<nŠ<Sù<WM=#¥=(É=ò=#
+>f.>k•>2?)4?¤^?!@V%@†|@†AKŠAÉÖAž Bg?CJ§CAòC)4D^DT|DkÑDb=EI ENêE>9F›xF•GFªG’ñG„HDI+II>uI1´I+æI>J8QJ,ŠJ,·J,äJ,K@>K:K,ºK+çK8LKLLC˜LFÜL/#MMSMŽ¡Ma0N_’NUòNMHO?–O)ÖO/Pe0Pc–PcúPK^Q
+ªQ
+µQÀQÌQ%æQ4RARPReRtR8}R=¶RWôR.LS4{Sb°S[TCoTX³T&U3UJU1SUU…U ÛU^üUë[VwGW?¿W€ÿW‚€X¡Yï¥YÌ•Z„b[€ç[×h\u@]d¶]}^‚™^c_Œ€_f
`Œt`Œa Ža”/b�Äbœbccÿc\cdiÀdl*eh—e�f”‚flgp„gfõg_\he¼h_"iE‚iOÈiMj fjÙkgákiIl`³lkmh€mnémYXn~²n>1oBpo†³o€:pX»p@q`Uq[¶qJr]rZtrFÏrOsHfso¯sDt0dt/•t3Åt&ùt u¶6uWíugEv{­v)wEwKbw®wÂwÕw@èwq)x„›xb y|ƒy>zH?z·ˆzT@{[•{€ñ{Fr|i¹|^#}‚‚}!~"'~J~E^~¤~CÂ~HKO€!›�R½�:‚4K‚P€‚]Ñ‚�/ƒOÀƒN„e_„[Å„!…;…)P…!z…½œ…Z†ii†eÓ†d9‡ž‡m¾‡{,ˆh¨ˆŽ‰p ‰hŠszŠ‚îŠ#q‹5•‹Ë‹Ó‹1Û‹
Œ“Œ®ŒWµŒ
�2!�T�#l�u��iŽ¨pŽG�a�>y�f¸�X�Dx�F½�‘1‘jK‘$¶‘Û’8õ’U.“„“'˜“(À“)é“)”*=”%h”!Ž”"°”Ó”é”Pñ”“B•ÁÖ•˜–mŸ–M
—2[—,Ž—;»—h÷—T`˜Wµ˜m
™Z{™'Ö™)þ™(š0š3Mš�š—š«š¿šÒšåš1ýšv/›,¦›;Ó›Œœnœœ"�7.�^f�9Å�Fÿ�(Fž`ož=ÐžXŸgŸ
tŸ`‚ŸaãŸVE qœ K¡.Z¡?‰¡É¡Ù¡€è¡ai¢}Ë¢�I£;Ë£7¤0?¤p¤\Š¤Eç¤„-¥j²¥S¦?q¦`±¦2§E§Q`§2²§Tå§=:¨1x¨6ª¨á¨+ö¨-"©CP©3”©#È©Yì©5FªM|ª0Êª5ûª91«8k«2¤«×«3ð«Q$¬=v¬+´¬7à¬7­�P­>á­? ®`®®›®¸®Ö®ô®¯¦4¯—Û¯“s°“±€›±)²KF²\’²Wï²mG³™µ³XO´�¨´‚*µÒ­µm€¶Œî¶¦{·ñ"¸¹Œ1º«¾º¦j»ß¼eñ¼nW½fÆ½�-¾©¾¾Yh¿hÂ¿^+À_ŠÀaêÀhLÁPµÁBÂTIÂPžÂuïÂ�eÃhÄflÄ°ÓÄu„ÅzúÅouÆÉåÆ�¯ÇQ@Èa’ÈšôÈS�ÉuãÉuYÊÐÏÊÛ Ëh|ÌdåÌXJÍ~£Í}"Î^ ÎdÿÎqdÏdÖÏ¨;Ð‡äÐ¼lÑD)ÒnÒJsÒðÄþ˜×až)¸¬Ñµa-š‹ð±Â¥¹ß™þ=Šˆ[aá][îW˜)Õ��»ÒôyWÚ.êàÒ4°¥š´B[ÒEN�zŸ—ûß0Ô¿
Øï3æ…~çÖ®àZCÑØö®’6þNtó„þ°ý±ïºæ¯[iKƒìuÝÉìá›Å®!�V¯z1Aúañmó.RÜâRüG¢?�c8ƒííñu
+ÂaL€Z“`#qËï c0NË®`³Î&Fx„—\ÿ‹j¼èÕf‹=Ú;p„)KÉVmòƒûý¿KùQ>FAµ(ÍÂ/ƒ5–·<
+ü_-…‰&@èíØ¾Ç·‡hÎkk¶Ï]w£ K§Iîßéäk�Kä� sDzç1‡Y×dëZ“ÚCyÌÐZž…qVÚ+{ÄŽÙ$T¬ð1q@›Â©e¬ðîeñõ”Wg²–Å”–0³	¯¬‘“ƒgÿ¤ÃýJûi±@€0*!�qÿí'Üá	•Š÷FxC<ÂnAÐKcd•%gLpÉ˜r3NÛê$â°Ú
+Ô¡Hùµ@jÅ2nœX8‡{ÝÏcÈ™Y¹Ä¥âYüQWÛ–�eB'=ÀÐÖ”vï£é­…ŽPh¯DÌQ»ÀL3u‡/Ýbý×Ï¼n«²nk}¾‰ H¥ø;/êB9q;ÉIRa(Í”
+ðÇêôVý°½¦I¦¿Óe7T½ÛeófÉþÓD¼Mc,ÁÓ¼Œ]§º#6ort"$1àãO
+/%ŸOXÖ'_§ooú\¹ÓTo3Dö]ò�<÷yd.9{p9¨×?Pˆ^m¶=ÊŒ.q7|î+¸¥Ì¸#@HbCÙ�ÕF)\çšáv-�Ù•Ô*†Äá»“È“¾c#¤Mì&«‰!X>f€ƒõs’OEyç†‰ÊlçmŸ�æ¦â]ôánB»¨2�ŒIà;Êçäå	’>Þåû"¤¦|?7ílì‹}ZœU:E�Tq?�|ä»0ljk•F,Ó':œ‹Uy-Oìñ^|VÎã¢*”{E½éõÂ�SyÔÇÆ0Ž°MwI§ÆrI^Q44ªÖöX]Æf”&'<�’c;x¢¶<¾ÙÃ4‰/~R3±N7Ð‘OÕÁÃÆÔò52òØù³OoV%îòÆ5ü)s+€Q¥ûfRõsŒö, (ˆ§8è‚˜,U 2`Ãž�YËL:ÞJó¸€ÇH3$}d¨�ÉD´ãå6VÄ-™%£±ÜŸ·X£ÑÒ¬Ã÷ÀÛÌˆã*"÷i>¹/ØI¨ŠÌ~£(ÏwP[$?(~×¸èÏ¦U«:Szv%bm³_ó•~Y¼CšSôSë•Ê{ŒS«Mg¹‹H†Ä½pv›åºü&*âò`4iXµ.x¤1×tô¶ñ07—Åx�l»ˆ÷W&
+ÞnÑª¡¾$eB-55¡ÍRAj9¡UCÎå1´~ö¸,uB€\oŸ™^__, AÎZ£}†HrÑ²U—„› ;F�ìÐ%ŠÛ*4N#˜lG·ª_Ÿ,‘:
ÀüÌÍd}LãD{hEªhÛëÞÿœÀW&nù9­¶­ÚAêXv68*LhJrRèg]œ1.øÆ‘ïý¢ºG�þ`œ"� :mTÞ„éðÁ;p�Å)Ùt…–Ü|bºû�Î¢˜ÿ$hlzŽxÜ­Ò6ø´ÀÇ6sîJ=ñ‚µózèZrP95SØújõ¯`CÍw\Š_›—ˆd(‘U¢‚½mpÍâWÿ³¨t‚³8²­>å[�g<ÐÊ^MSäj.äö­’µbšFÁGÖùø°NP=w+í¶92!¿«(Gæ‚±^k?ž Êé#¡ïÞ™/	©‚bß7!õŠQvº¾i‘†?h©+·«†Å
<AË"4™“uP"kGã
OÔ´!|8éfÙMÝ:ú¿YÝªÈßžMfŽ'›@@Ë ž[JD!²\à>`wª²Ó uæ¨¦…o	®�´ŒÈ¿KŽ\e^#J"ëløH}¤7Çëad
§’–š¤ù3¹æBTÁ+Õ�—E¼-‡stÕYP÷Ü©Ã¡Q)5‰b½‡ê©ß6·Á	%È'©
8„ôJÒ=+>
 Lg¯Ý®úëúÏÈpÑË�Ti2
+2Ö	Gøijà¬E¾ÒÅÒÌÒŒ�¨�¼�Ð�ä�ø�‘ ‘4‘H‘\‘p‘„‘˜‘´‘È‘ä‘ø‘’ ’4’H’\’p’„’˜’¬’È’Ü’ð’“0“L“`“t“ˆ“œ“¸“Ì“à“ô“”$”8”L”`”t”ˆ”œ”°”Ä”à”ü”•$•H•\•p•„•˜•¬•À•Ü•ø•–(–<–P–d–x–Œ– –´–È–Ü–ð–——,—@—T—h—|—�—¬—È—Ü—ð—˜ ˜4˜H˜\˜p˜„˜˜˜¬˜À˜Ü˜ø˜™(™D™X™l™€™œ™¸™Ô™è™ü™š,š@šTšhš|š�š¤š¸šÔšèšüš›,›@›T›h›|›¨›¼›Ø›ì›œœ(œ<œPœdœxœŒœ œ´œÈœäœøœ�(�<�P�d�x�Œ� �´�È�Ü�ø�ž ž<ž`ž|ž�ž¤ž¸žÌžèžüžŸ$Ÿ@ŸTŸhŸ|Ÿ�Ÿ¤Ÿ¸ŸÌŸàŸôŸ , @ T x Œ   ´ È Ü ð ¡(¡D¡X¡l¡€¡”¡¨¡¼¡Ð¡ä¡ø¡¢ ¢4¢H¢\¢p¢„¢˜¢¬¢À¢Ü¢ø¢£ £<£P£d£x£Œ£ £´£È£Ü£ð£¤(¤<¤X¤t¤ˆ¤œ¤°¤Ì¤è¤¥¥,¥H¥\¥p¥„¥˜¥¬¥À¥Ô¥è¥¦¦,¦@¦\¦p¦„¦˜¦¬¦Ø¦ÓÒÿÿÿÿõÒ"ÿÿÿÿ+Ó ÿÿÿÿRÓ5ÿÿÿÿŽÓ%ÿÿÿÿºÓ)ÿÿÿÿêÓ(ÿÿÿÿÔ/ÿÿÿÿOÔÿÿÿÿkÔ'ÿÿÿÿ™Ô-ÿÿÿÿÇÔÿÿÿÿäÔÿÿÿÿÕ $ÿÿÿÿ[Õ ÿÿÿÿƒÕ%ÿÿÿÿÀÕÿÿÿÿôÕ*ÿÿÿÿÖ.ÿÿÿÿOÖ)1ÿÿÿÿ©Ö%ÿÿÿÿÏÖ9ÿÿÿÿ	×1ÿÿÿÿ;×
+2ÿÿÿÿw×"ÿÿÿÿ«×3ÿÿÿÿß×ÿÿÿÿØ9ÿÿÿÿVØ%ÿÿÿÿ‰Ø
+HÿÿÿÿÝØ
+/ÿÿÿÿ4Ù)ÿÿÿÿuÙ
+6ÿÿÿÿµÙ
+>ÿÿÿÿýÙ
+0ÿÿÿÿ7Ú
+Fÿÿÿÿ‡Ú
+ÿÿÿÿÉÚ
++ÿÿÿÿþÚ
+ÿÿÿÿ&Û
+"ÿÿÿÿRÛ@)ÿÿÿÿÁÛ
+/ÿÿÿÿúÛ
+ ÿÿÿÿ$Ü-ÿÿÿÿkÜ6ÿÿÿÿ·Ü6ÿÿÿÿÝ
+7ÿÿÿÿCÝ
+?ÿÿÿÿŒÝ
+ÿÿÿÿ±Ý4ÿÿÿÿþÝ+ÿÿÿÿ6Þ-ÿÿÿÿpÞ3ÿÿÿÿ¤Þ0ÿÿÿÿëÞ 0ÿÿÿÿkß
+-ÿÿÿÿ¢ß(ÿÿÿÿÞß
+-ÿÿÿÿàÿÿÿÿGà6ÿÿÿÿ„à>ÿÿÿÿÉà#ÿÿÿÿôàÿÿÿÿ0áÿÿÿÿlá
+2ÿÿÿÿ¨á
+.ÿÿÿÿàáFÿÿÿÿ'â
+2ÿÿÿÿcâ
+2ÿÿÿÿŸâ
+2ÿÿÿÿÛâ
+2ÿÿÿÿã
+2ÿÿÿÿSã
+2ÿÿÿÿ�ãFÿÿÿÿÖã
+9ÿÿÿÿä
+7ÿÿÿÿZä
+9ÿÿÿÿ�äFÿÿÿÿääFÿÿÿÿ+å	2ÿÿÿÿfå+ÿÿÿÿ˜å.ÿÿÿÿÍå+ÿÿÿÿÿå-ÿÿÿÿ4æ0ÿÿÿÿ‚æ"ÿÿÿÿÁæ!ÿÿÿÿôæ
+*ÿÿÿÿ*ç
+Aÿÿÿÿuç
+dÿÿÿÿãç
+$ÿÿÿÿè1ÿÿÿÿMè1ÿÿÿÿè
+ÿÿÿÿœè5ÿÿÿÿêè&ÿÿÿÿé=ÿÿÿÿné&ÿÿÿÿÂé+ÿÿÿÿêÿÿÿÿ5ê]ÿÿÿÿ¢ê!5ÿÿÿÿùêKÿÿÿÿEë<"ÿÿÿÿ£ë$ÿÿÿÿÜë7
+ÿÿÿÿìÿÿÿÿfì;ÿÿÿÿÎì?ÿÿÿÿ,íÿÿÿÿUí2ÿÿÿÿ�íÿÿÿÿÀíÿÿÿÿòí=ÿÿÿÿAîIÿÿÿÿ¤î(ÿÿÿÿâîIÿÿÿÿEï!ÿÿÿÿ{ï!ÿÿÿÿ«ïÿÿÿÿÜï+ÿÿÿÿ	ð=ÿÿÿÿGð5ÿÿÿÿ}ð@ÿÿÿÿÂð7ÿÿÿÿúð-ÿÿÿÿ(ñÿÿÿÿEñ-ÿÿÿÿ‚ñ
+"	ÿÿÿÿÕñ?ÿÿÿÿò=ÿÿÿÿYò46ÿÿÿÿÃòTÿÿÿÿóxÿÿÿÿ�ókÿÿÿÿôjÿÿÿÿ€ôVÿÿÿÿÝôpÿÿÿÿTõHÿÿÿÿ£õ^ÿÿÿÿöSÿÿÿÿ\öGÿÿÿÿ¤öBÿÿÿÿ÷@3ÿÿÿÿ÷6ÿÿÿÿÀ÷+6ÿÿÿÿ#ø6+ÿÿÿÿ„ø]ÿÿÿÿâøcÿÿÿÿGùZQÿÿÿÿòùjÿÿÿÿ]úsÿÿÿÿÑúZÿÿÿÿ,û
+eÿÿÿÿ›ûCÿÿÿÿüûiÿÿÿÿfü!ÿÿÿÿ¡üv*ÿÿÿÿAýmÿÿÿÿ¯ý
+ƒÿÿÿÿ>þ
+BDÿÿÿÿÐþUÿÿÿÿFÿ
+Uÿÿÿÿ¥ÿ
+oÿÿÿÿ
+Rÿÿÿÿz
+rÿÿÿÿö
+C/ÿÿÿÿr
+9ÿÿÿÿµ
+:ÿÿÿÿù
+?ÿÿÿÿB‚aÿÿÿÿ+
+Nÿÿÿÿƒ
+5ÿÿÿÿÂ6\ÿÿÿÿT_(ÿÿÿÿÛ_ÿÿÿÿT
+cÿÿÿÿÁ
+…ÿÿÿÿP
+:ÿÿÿÿ”H?ÿÿÿÿnÿÿÿÿžrÿÿÿÿ%†ÿÿÿÿ¬p&ÿÿÿÿB	<4$Rÿÿÿÿ(
+
+Iÿÿÿÿ{
+Uÿÿÿÿã
+
+VÿÿÿÿC73ÿÿÿÿ­yÿÿÿÿ- ÿÿÿÿÔJÿÿÿÿ'
5#ÿÿÿÿ†
5#ÿÿÿÿå

+�ÿÿÿÿ|
+KÿÿÿÿÑsÿÿÿÿE
+Qÿÿÿÿ 
+Qÿÿÿÿû
+QÿÿÿÿV
+Qÿÿÿÿ±
+Qÿÿÿÿ
+QÿÿÿÿgsÿÿÿÿÛ
+Xÿÿÿÿ=
+Vÿÿÿÿ�
+Xÿÿÿÿÿsÿÿÿÿssÿÿÿÿç	SÿÿÿÿCmÿÿÿÿ·qÿÿÿÿ/oÿÿÿÿ¥ƒÿÿÿÿ0B\ÿÿÿÿÏB<ÿÿÿÿMAÿÿÿÿ§	Tÿÿÿÿ
+Šÿÿÿÿš
+¼ÿÿÿÿ`
+Pÿÿÿÿºkÿÿÿÿ0kÿÿÿÿœ
+3ÿÿÿÿÙBdÿÿÿÿRÿÿÿÿßpÿÿÿÿkS1ÿÿÿÿÿXÿÿÿÿm"EÿÿÿÿÔÕÿÿÿÿÁ0rÿÿÿÿdŠÿÿÿÿïnÿÿÿÿv #Gÿÿÿÿà bÿÿÿÿV!X$ÿÿÿÿí!7~ÿÿÿÿ¾"=ƒÿÿÿÿ~#0ÿÿÿÿ¹#Zÿÿÿÿ&$4@ÿÿÿÿš$73ÿÿÿÿ%~ÿÿÿÿ�%4¬ÿÿÿÿ}&&0ÿÿÿÿÓ&G¬ÿÿÿÿÆ'"0ÿÿÿÿ(0ÿÿÿÿZ(0ÿÿÿÿ©(Nÿÿÿÿù(iÿÿÿÿd)~ÿÿÿÿã)‡ÿÿÿÿo*QÿÿÿÿÁ*Lÿÿÿÿ+ ÿÿÿÿ=+Oÿÿÿÿ«+
+0<ÿÿÿÿ9,}ÿÿÿÿ	    TLS: %pA	<corrupt: 0x%04lx>	Export Address Table 			Export Address Table 		%08lx
 	Invalid Export Address Table rva (0x%lx) or entry count (0x%lx)
 	Invalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)
 	Invalid Ordinal Table rva (0x%lx) or entry count (0x%lx)
@@ -326,19 +332,7 @@ ppcboot header:
   EGSD (len=%u):
   EGSD entry %2u (type: %u, len: %u):   EMH %u (len=%u):   base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x   base_va : 0x%08x
   bitcount: %u, base addr: 0x%08x
-  branch         %lu
-  branch toc adj %lu
-  branch notoc   %lu
-  branch both    %lu
-  long branch    %lu
-  long toc adj   %lu
-  long notoc     %lu
-  long both      %lu
-  plt call       %lu
-  plt call save  %lu
-  plt call notoc %lu
-  plt call both  %lu
-  global entry   %lu  calls:
+  calls:
   chgprtoff : %5u
   codeadroff: %5u, lpfixoff  : %5u
   fixuplnk: 0x%08x %08x
@@ -395,8 +389,15 @@ ppcboot header:
      		Address  Length   Length   32b exc  Handler   Data
  vma:            Hint    Time      Forward  DLL       First
                  Table   Stamp     Chain    Name      Thunk
-#<invalid error code>%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d
+#<invalid error code>%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC
+%%X%%P: unresolvable %s relocation against symbol `%s'
+%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d
 %03x %*.s Entry: %C: warning: relocation to "%s" references a different segment
+%F%P: %pB(%pA): error: need linked-to section for --gc-sections
+%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.
+%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%F%P: Could not assign group %pA target %pA to an output section. Retry without --enable-non-contiguous-regions.
 %F%P: already_linked_table: %E
 %F%P: auto overlay error: %E
 %F%P: can not build overlay stubs: %E
@@ -445,23 +446,22 @@ ppcboot header:
 %H: error: %s against `%s' not a multiple of %u
 %H: error: %s not a multiple of %u
 %H: fixup branch overflow
+%H: got/toc optimization is not supported for %s instruction
 %H: non-zero addend on %s reloc against `%s'
 %H: reloc against `%s' references a different segment
 %H: reloc against `%s': %s
 %H: relocation %s for indirect function %s unsupported
 %H: relocation references symbol not defined in the module
 %H: relocation to `%s+%v' may have caused the error above
-%H: toc optimization is not supported for %s instruction
 %H: unresolvable %s against `%pT'
 %H: unresolvable %s relocation against symbol `%s'
 %H: warning: %s unexpected insn %#x.
 %P%F: --relax and -r may not be used together
 %P%X: can not read symbols: %E
-%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC
 %P%X: read-only segment has dynamic relocations
-%P: %H: %s relocation unsupported for bss-plt
 %P: %H: error: %s with unexpected instruction %x
 %P: %pB: %s is not supported for `%pT'
+%P: %pB: warning: missing %s
 %P: %pB: warning: relocation against `%s' in read-only section `%pA'
 %P: %pB: warning: relocation in read-only section `%pA'
 %P: cannot find opd entry toc for `%pT'
@@ -470,7 +470,9 @@ ppcboot header:
 %P: linkage table error against `%pT'
 %P: multiple entry points: in modules %pB and %pB
 %P: relocatable link is not supported
-%P: warning: creating a DT_TEXTREL in a shared object
+%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s
+%P: warning: creating DT_TEXTREL in a PIE
+%P: warning: creating DT_TEXTREL in a shared object
 %P: warning: text relocations and GNU indirect functions may result in a segfault at runtime
 %X%C: relocation to "%s" references a different segment
 %X%H: @local call to ifunc %s
@@ -480,10 +482,14 @@ ppcboot header:
 %X%H: unsupported branch between ISA modes
 %X%H: unsupported bss-plt -fPIC ifunc %s
 %X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled
+%X%P: %H: %s relocation unsupported for bss-plt
 %X%P: %pB(%pA): error: relocation for offset %V has no value
 %X%P: %pB(%pA): relocation "%pR" goes out of range
 %X%P: %pB(%pA): relocation "%pR" is not supported
 %X%P: %pB(%pA): relocation "%pR" returns an unrecognized value %x
+%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation
+%X%P: %pB: error: missing %s
+%X%P: attempted static link of dynamic object `%pB'
 %X%P: internal error: out of range error
 %X%P: internal error: unknown error
 %X%P: internal error: unsupported relocation error
@@ -496,17 +502,17 @@ ppcboot header:
 %X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB
 %pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections%pA has both ordered and unordered sections%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)
 %pA:0x%v not found in function table
-%pB (%s): section flag %s (%#lx) ignored%pB .opd not allowed in ABI version %d%pB and %pB are for different configurations%pB and %pB are for different cores%pB contains CRIS v32 code, incompatible with previous objects%pB contains non-CRIS-v32 code, incompatible with previous objects%pB has both the current and legacy Tag_MPextension_use attributes%pB is not allowed to define %s%pB section %pA exceeds stub group size%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section%pB uses 64-bit long double, %pB uses 128-bit long double%pB uses AltiVec vector ABI, %pB uses SPE vector ABI%pB uses IBM long double, %pB uses IEEE long double%pB uses double-precision hard float, %pB uses single-precision hard float%pB uses hard float, %pB uses soft float%pB uses r3/r4 for small structure returns, %pB uses memory%pB uses unknown e_flags 0x%lx%pB(%pA): error: call to undefined function '%s'%pB(%pA): internal error: dangerous relocation%pB(%pA): internal error: out of range error%pB(%pA): internal error: unknown error%pB(%pA): internal error: unsupported relocation error%pB(%pA): invalid property table%pB(%pA): multiple TLS models are not supported%pB(%pA): relocation %d has invalid symbol index %ld%pB(%pA): shared library symbol %s encountered whilst performing a static link%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction%pB(%pA): warning: unaligned access to symbol '%s' in the small data area%pB(%pA): warning: unaligned small data access of type %d%pB(%pA+%#lx): stabs entry has invalid string index%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete
+%pB (%s): section flag %s (%#lx) ignored%pB .opd not allowed in ABI version %d%pB and %pB are for different configurations%pB and %pB are for different cores%pB contains CRIS v32 code, incompatible with previous objects%pB contains non-CRIS-v32 code, incompatible with previous objects%pB has both the current and legacy Tag_MPextension_use attributes%pB is not allowed to define %s%pB section %pA exceeds stub group size%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section%pB uses 64-bit long double, %pB uses 128-bit long double%pB uses AltiVec vector ABI, %pB uses SPE vector ABI%pB uses IBM long double, %pB uses IEEE long double%pB uses double-precision hard float, %pB uses single-precision hard float%pB uses hard float, %pB uses soft float%pB uses r3/r4 for small structure returns, %pB uses memory%pB uses unknown e_flags 0x%lx%pB(%pA): error: call to undefined function '%s'%pB(%pA): error: internal relocs missing for secondary reloc section%pB(%pA): error: reloc table entry %u is empty%pB(%pA): error: secondary reloc %u is of an unknown type%pB(%pA): error: secondary reloc %u references a deleted symbol%pB(%pA): error: secondary reloc %u references a missing symbol%pB(%pA): error: secondary reloc section is empty!%pB(%pA): error: secondary reloc section processed twice%pB(%pA): info section index cannot be set because the section is not in the output%pB(%pA): info section index is invalid%pB(%pA): internal error: dangerous relocation%pB(%pA): internal error: out of range error%pB(%pA): internal error: unknown error%pB(%pA): internal error: unsupported relocation error%pB(%pA): invalid property table%pB(%pA): link section cannot be set because the output file does not have a symbol table%pB(%pA): multiple TLS models are not supported%pB(%pA): relocation %d has invalid symbol index %ld%pB(%pA): shared library symbol %s encountered whilst performing a static link%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction%pB(%pA): warning: unaligned access to symbol '%s' in the small data area%pB(%pA): warning: unaligned small data access of type %d%pB(%pA+%#lx): stabs entry has invalid string index%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete
 %pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s%pB, section %pA:
-  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC%pB, section %pA: no PLT for relocation %s against symbol `%s'%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for global symbol: `%s'%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC%pB, section %pA: relocation %s with no GOT created%pB, section %pA: unresolvable relocation %s against symbol `%s'%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC%pB: !samegp reloc against symbol without .prologue: %s%pB: %pA invalid input section size%pB: %pA not in order%pB: %pA points past end of text section%pB: %pA: reloc overflow: %#x > 0xffff%pB: %s flag mismatch with previous modules%pB: %s not absolute%pB: %s unsupported%pB: %s' accessed both as normal and thread local symbol%pB: %s: invalid needed version %d%pB: %s: invalid version %u (max %d)%pB: %s: reloc overflow: 0x%lx > 0xffff%pB: '%s' accessed both as normal and thread local symbol%pB: --in-implib only supported for Secure Gateway import libraries%pB: .gnu.version_d invalid entry%pB: .gnu.version_r invalid entry%pB: .got subsegment exceeds 64K (size %d)%pB: .opd is not a regular array of opd entries%pB: .preinit_array section is not allowed in DSO%pB: .rsrc merge failure: corrupt .rsrc section%pB: .rsrc merge failure: unexpected .rsrc size%pB: @gprel relocation against dynamic symbol %s%pB: @internal branch to dynamic symbol %s%pB: @pcrel relocation against dynamic symbol %s%pB: ABI is incompatible with that of the selected emulation%pB: ABI is incompatible with that of the selected emulation:
-  target emulation `%s' does not match `%s'%pB: ABI mismatch: linking %s module with previous %s modules%pB: ABI version %ld is not compatible with ABI version %ld output%pB: ASE mismatch: linking %s module with previous %s modules%pB: BE8 images only valid in big-endian mode%pB: Cannot handle relocation value size of %d%pB: Function descriptor relocation with non-zero addend%pB: GNU_MBIN section `%pA' has invalid sh_info field: %d%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d%pB: GOT overflow: number of relocations with 8-bit offset > %d%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections%pB: TLS local exec code cannot be linked into shared objects%pB: TLS sections are not adjacent:%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: XCOFF shared object when not producing XCOFF output%pB: __gp does not cover short data segment%pB: `%s' accessed both as FDPIC and thread local symbol%pB: `%s' accessed both as normal and FDPIC symbol%pB: `%s' accessed both as normal and thread local symbol%pB: `%s' and its special symbol are in different sections%pB: `%s' has line numbers but no enclosing section%pB: `%s' in loader reloc but not loader sym%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)%pB: absent standard symbol `%s'%pB: addend should be zero for got relocations%pB: addend should be zero for plt relocations%pB: aout header specifies an invalid number of data-directory entries: %ld%pB: architecture mismatch with previous modules%pB: attempt to load strings from a non-string section (number %d)%pB: attempt to mix FDPIC and non-FDPIC objects%pB: attempt to write out unknown reloc type%pB: bad relocation record imported: %d%pB: bad relocation section name `%s'%pB: bad section length in ihex_read_section%pB: bad symbol definition: `Main' set to %s rather than the start address %s
+  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC%pB, section %pA: no PLT for relocation %s against symbol `%s'%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for global symbol: `%s'%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC%pB, section %pA: relocation %s with no GOT created%pB, section %pA: unresolvable relocation %s against symbol `%s'%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC%pB: !samegp reloc against symbol without .prologue: %s%pB: %pA invalid input section size%pB: %pA not in order%pB: %pA points past end of text section%pB: %pA: reloc overflow: %#x > 0xffff%pB: %s flag mismatch with previous modules%pB: %s local symbol at index %lu (>= sh_info of %lu)%pB: %s not absolute%pB: %s unsupported%pB: %s' accessed both as normal and thread local symbol%pB: %s: invalid needed version %d%pB: %s: invalid version %u (max %d)%pB: %s: reloc overflow: 0x%lx > 0xffff%pB: '%s' accessed both as normal and thread local symbol%pB: --in-implib only supported for Secure Gateway import libraries%pB: .gnu.version_d invalid entry%pB: .gnu.version_r invalid entry%pB: .got subsegment exceeds 64K (size %d)%pB: .opd is not a regular array of opd entries%pB: .preinit_array section is not allowed in DSO%pB: .rsrc merge failure: corrupt .rsrc section%pB: .rsrc merge failure: unexpected .rsrc size%pB: @gprel relocation against dynamic symbol %s%pB: @internal branch to dynamic symbol %s%pB: @pcrel relocation against dynamic symbol %s%pB: ABI is incompatible with that of the selected emulation%pB: ABI is incompatible with that of the selected emulation:
+  target emulation `%s' does not match `%s'%pB: ABI mismatch: linking %s module with previous %s modules%pB: ABI version %ld is not compatible with ABI version %ld output%pB: ASE mismatch: linking %s module with previous %s modules%pB: BE8 images only valid in big-endian mode%pB: Cannot handle relocation value size of %d%pB: Function descriptor relocation with non-zero addend%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d%pB: GOT overflow: number of relocations with 8-bit offset > %d%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections%pB: TLS local exec code cannot be linked into shared objects%pB: TLS relocation %s against undefined symbol `%s'%pB: TLS sections are not adjacent:%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead.%pB: XCOFF shared object when not producing XCOFF output%pB: __gp does not cover short data segment%pB: `%s' accessed both as FDPIC and thread local symbol%pB: `%s' accessed both as normal and FDPIC symbol%pB: `%s' accessed both as normal and thread local symbol%pB: `%s' and its special symbol are in different sections%pB: `%s' has line numbers but no enclosing section%pB: `%s' in loader reloc but not loader sym%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)%pB: absent standard symbol `%s'%pB: addend should be zero for got relocations%pB: addend should be zero for plt relocations%pB: aout header specifies an invalid number of data-directory entries: %u%pB: architecture mismatch with previous modules%pB: attempt to load strings from a non-string section (number %d)%pB: attempt to mix FDPIC and non-FDPIC objects%pB: attempt to write out unknown reloc type%pB: bad relocation record imported: %d%pB: bad relocation section name `%s'%pB: bad section length in ihex_read_section%pB: bad symbol definition: `Main' set to %s rather than the start address %s
 %pB: bad symbol index: %d%pB: base-plus-offset relocation against register symbol: %s in %pA%pB: base-plus-offset relocation against register symbol: (unknown) in %pA%pB: can not represent section `%pA' in a.out object file format%pB: can not represent section for symbol `%s' in a.out object file format%pB: can't link %s modules with %s modules%pB: can't link RVE with other target%pB: cannot allocate file name for file number %d, %d bytes
-%pB: cannot create stub entry %s%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot link fdpic object file into non-fdpic executable%pB: cannot link non-fdpic object file into fdpic executable%pB: cannot link together %s and %s objects%pB: change in gp: BRSGP %s%pB: class %d symbol `%s' has no aux entries%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s%pB: compiled for a 64 bit system and target is 32 bit%pB: compiled for a big endian system and target is little endian%pB: compiled for a little endian system and target is big endian%pB: compiled normally and linked with modules compiled with -mrelocatable%pB: compiled with %s and linked with modules compiled with %s%pB: compiled with %s and linked with modules that use non-pic relocations%pB: compiled with -mrelocatable and linked with modules compiled normally%pB: could not find output section %pA for input section %pA%pB: could not read contents of section `%pA'
+%pB: cannot allocate memory for local GOT entries%pB: cannot create stub entry %s%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot link fdpic object file into non-fdpic executable%pB: cannot link non-fdpic object file into fdpic executable%pB: cannot link together %s and %s objects%pB: change in gp: BRSGP %s%pB: class %d symbol `%s' has no aux entries%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s%pB: compiled for a 64 bit system and target is 32 bit%pB: compiled for a big endian system and target is little endian%pB: compiled for a little endian system and target is big endian%pB: compiled normally and linked with modules compiled with -mrelocatable%pB: compiled with %s and linked with modules compiled with %s%pB: compiled with %s and linked with modules that use non-pic relocations%pB: compiled with -mrelocatable and linked with modules compiled normally%pB: could not find output section %pA for input section %pA%pB: could not read contents of section `%pA'
 %pB: csect `%s' not in enclosing section%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object%pB: directive LOCAL valid only with a register or absolute value%pB: dtp-relative relocation against dynamic symbol %s%pB: duplicate export stub %s%pB: duplicate section `%pA' has different contents
 %pB: duplicate section `%pA' has different size
 %pB: dynamic object with no .loader section%pB: dynamic relocation against `%pT' in read-only section `%pA'
 %pB: dynamic relocation in read-only section `%pA'
-%pB: endianness incompatible with that of the selected emulation%pB: entry function `%s' is empty%pB: entry function `%s' not output%pB: error: ABI mismatch with previous modules%pB: error: Cortex-A8 erratum stub is allocated in unsafe location%pB: error: Cortex-A8 erratum stub out of range (input file too large)%pB: error: PHDR segment not covered by LOAD segment%pB: error: VFP11 veneer out of range%pB: error: alignment power %d of section `%pA' is too big%pB: error: attribute section '%pA' too big: %#llx%pB: error: cannot create STM32L4XX veneer%pB: error: debug data ends beyond end of debug directory%pB: error: erratum 835769 stub out of range (input file too large)%pB: error: erratum 843419 stub out of range (input file too large)%pB: error: instruction set mismatch with previous modules%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file%pB: error: non-load segment %d includes file header and/or program header%pB: error: search_nds32_elf_blank reports wrong node%pB: error: unexpected symbol '%s' in COMDAT section%pB: error: unknown mandatory EABI object attribute %d%pB: failed to find info section for section %d%pB: failed to find link section for section %d%pB: failed to generate import library%pB: failed to read debug data section%pB: fatal: generic symbols retrieved before relaxing%pB: file class %s incompatible with %s%pB: gotoff relocation against dynamic symbol %s%pB: gp-relative relocation against dynamic symbol %s%pB: group section '%pA' has no contents%pB: hidden symbol `%s' in %pB is referenced by DSO%pB: hidden symbol `%s' isn't defined%pB: ignoring duplicate section `%pA'
+%pB: endianness incompatible with that of the selected emulation%pB: entry function `%s' is empty%pB: entry function `%s' not output%pB: error: ABI mismatch with previous modules%pB: error: Cortex-A8 erratum stub is allocated in unsafe location%pB: error: Cortex-A8 erratum stub out of range (input file too large)%pB: error: PHDR segment not covered by LOAD segment%pB: error: VFP11 veneer out of range%pB: error: alignment power %d of section `%pA' is too big%pB: error: attribute section '%pA' too big: %#llx%pB: error: cannot create STM32L4XX veneer%pB: error: debug data ends beyond end of debug directory%pB: error: erratum 835769 stub out of range (input file too large)%pB: error: erratum 843419 immediate 0x%%pB: error: erratum 843419 stub out of range (input file too large)%pB: error: instruction set mismatch with previous modules%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file%pB: error: non-load segment %d includes file header and/or program header%pB: error: search_nds32_elf_blank reports wrong node%pB: error: unexpected symbol '%s' in COMDAT section%pB: error: unknown mandatory EABI object attribute %d%pB: failed to find info section for section %d%pB: failed to find link section for section %d%pB: failed to generate import library%pB: failed to read debug data section%pB: fatal: generic symbols retrieved before relaxing%pB: file class %s incompatible with %s%pB: gotoff relocation against dynamic symbol %s%pB: gp-relative relocation against dynamic symbol %s%pB: group section '%pA' has no contents%pB: hidden symbol `%s' in %pB is referenced by DSO%pB: hidden symbol `%s' isn't defined%pB: ignoring duplicate section `%pA'
 %pB: illegal section name `%pA'%pB: illegal symbol index %ld in relocs%pB: incompatible machine type; output is 0x%x; input is 0x%x%pB: incorrect size for symbol `%s'%pB: indirect symbol `%s' to `%s' is a loop%pB: instruction set mismatch with previous modules%pB: internal error in ihex_read_section%pB: internal error, internal register section %pA had contents
 %pB: internal error, symbol table changed size from %d to %d words
 %pB: internal symbol `%s' in %pB is referenced by DSO%pB: internal symbol `%s' isn't defined%pB: invalid entry in SHT_GROUP section [%u]%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions%pB: invalid link %u for reloc section %s (index %u)%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)
@@ -523,11 +529,23 @@ ppcboot header:
 %pB: invalid mmo file: lop_end not last item in file
 %pB: invalid mmo file: unsupported lopcode `%d'
 %pB: invalid sh_link field (%d) in section number %d%pB: invalid special symbol `%s'; it must be a global or weak function symbol%pB: invalid standard symbol `%s'; it must be a global or weak function symbol%pB: invalid symbol table: duplicate symbol `%s'
-%pB: line number overflow: 0x%lx > 0xffff%pB: linking %s module with previous %s modules%pB: linking 32-bit code with 64-bit code%pB: linking 64-bit files with 32-bit files%pB: linking UltraSPARC specific with HAL specific code%pB: linking auto-pic files with non-auto-pic files%pB: linking big-endian files with little-endian files%pB: linking constant-gp files with non-constant-gp files%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%pB: linking files compiled for HCS12 with others compiled for HC12%pB: linking little endian files with big endian files%pB: linking non-pic code in a position independent executable%pB: linking trap-on-NULL-dereference with non-trapping files%pB: loader reloc in read-only section %pA%pB: loader reloc in unrecognized section `%s'%pB: local symbol `%s' in %pB is referenced by DSO%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol%pB: machine flag conflict with target%pB: malformed reloc detected for section %pA%pB: malformed reloc detected for section %s%pB: misplaced XTY_LD `%s'%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no core to allocate section name %s%pB: no group info for section '%pA'%pB: no initialized registers; section length 0
-%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: no valid group sections found%pB: non-pic code with imm relocation against dynamic symbol `%s'%pB: non-pic relocation against symbol %s%pB: not enough room for program headers, try linking with -N%pB: only registers %%g[2367] can be declared using STT_REGISTER%pB: out of memory creating name for empty section%pB: out of memory in _bfd_elf_get_property%pB: page size is too large (0x%x)%pB: pc-relative relocation against dynamic symbol %s%pB: pc-relative relocation against undefined weak symbol %s%pB: plugin needed to handle lto object%pB: probably compiled without -fPIC?%pB: protected symbol `%s' isn't defined%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive%pB: register relocation against non-register symbol: %s in %pA%pB: register relocation against non-register symbol: (unknown) in %pA%pB: reloc against a non-existent symbol index: %ld%pB: relocatable link from %s to %s not supported%pB: relocation %s against %s%s`%s' can not be used when making %s%s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported%pB: relocation %s against `%s' can not be used when making a shared object%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against symbol `%s' isn't supported in x32 mode%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC%pB: relocation %s can not be used when making a shared object; recompile with -fPIC%pB: relocation %s cannot be used when making a shared object%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object%pB: relocation size mismatch in %pB section %pA%pB: relocations in generic ELF (EM: %d)%pB: relocs in section `%pA', but it has no contents%pB: section %pA: string table overflow at offset %ld%pB: section `%pA' can't be allocated in segment %d%pB: section group entry number %u is corrupt%pB: sh_link [%d] in section `%pA' is incorrect%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'%pB: size field is zero in Import Library Format header%pB: special symbol `%s' only allowed for ARMv8-M architecture or later%pB: speculation fixup to dynamic symbol %s%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: support for local dynamic not implemented%pB: symbol `%s' has unrecognized csect type %d%pB: symbol `%s' has unrecognized smclas %d%pB: symbol `%s' required but not present%pB: taking the address of protected function '%s' cannot be done when making a shared library%pB: the target (%s) of a %s relocation is in the wrong output section (%s)%pB: the target (%s) of an %s relocation is in the wrong section (%pA)%pB: too many sections (%d)%pB: too many sections: %d (>= %d)%pB: too many sections: %u%pB: tp-relative relocation against dynamic symbol %s%pB: unable to create fake empty section%pB: unable to fill in DataDictionary[12] because .idata$5 is missing%pB: unable to fill in DataDictionary[1] because .idata$2 is missing%pB: unable to fill in DataDictionary[1] because .idata$4 is missing%pB: unable to fill in DataDictionary[9] because __tls_used is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing%pB: unable to find %s veneer `%s'%pB: unable to find name for empty section%pB: unable to get decompressed section %pA%pB: unable to initialize compress status for section %s%pB: unable to initialize decompress status for section %s%pB: unable to load COMDAT section name%pB: unable to sort relocs - they are in more than one size%pB: unable to sort relocs - they are of an unknown size%pB: undefined reference to symbol '%s'%pB: undefined sym `%s' in .opd section%pB: undefined symbol on R_PPC64_TOCSAVE relocation%pB: unexpected redefinition of indirect versioned symbol `%s'%pB: unexpected reloc type %u in .opd section%pB: unhandled dynamic relocation against %s%pB: unhandled import type; %x%pB: unknown architecture %s%pB: unknown load command %#x%pB: unknown mandatory ARC object attribute %d%pB: unknown mandatory EABI object attribute %d%pB: unknown relocation type %d%pB: unknown type [%#x] section `%s'%pB: unknown type [%#x] section `%s' in group [%pA]%pB: unmatched OMIT_FP in %pA%pB: unrecognised machine type (0x%x) in Import Library Format archive%pB: unrecognized import name type; %x%pB: unrecognized import type; %x%pB: unrecognized relocation type %#x in section `%pA'%pB: unrecognized storage class %d for %s symbol `%s'%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported transition from %s to %s%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
-%pB: uses %s instructions while previous modules use %s instructions%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols%pB: uses different e_flags (%#x) fields than previous modules (%#x)%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)%pB: uses instructions which are incompatible with instructions used in previous modules%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols%pB: version node not found for symbol %s%pB: visibility of symbol `%s' has changed%pB: warning core file truncated%pB: warning: %pA: line number overflow: %#x > 0xffff%pB: warning: %s BLX instruction targets %s function '%s'%pB: warning: %s relocation against symbol `%s' from %pA section%pB: warning: %s unsupported in shared mode%pB: warning: %s: line number overflow: 0x%lx > 0xffff%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: RVE PLT generation not supported%pB: warning: allocated section `%s' not in segment%pB: warning: bad `%s' option size %u smaller than its header%pB: warning: cannot determine the target function for stub section `%s'%pB: warning: claims to have 0xffff relocs, without overflow%pB: warning: duplicate line number information for `%s'%pB: warning: endian mismatch with previous modules%pB: warning: ignoring section flag %s in section %s%pB: warning: illegal symbol in line number entry %d%pB: warning: illegal symbol index %ld in relocs%pB: warning: illegal symbol index 0x%lx in line number entry %d%pB: warning: incompatible elf-versions %s and %s%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)%pB: warning: line number count (%#lx) exceeds section size (%#lx)%pB: warning: line number table read failed%pB: warning: linking PIC files with non-PIC files%pB: warning: linking abicalls files with non-abicalls files%pB: warning: loop in section dependencies detected%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u%pB: warning: multiple symbol tables detected - ignoring the table in section %u%pB: warning: no symbol for section '%s' found%pB: warning: older version of object file encountered, please recompile with current tool chain%pB: warning: relocate SDA_BASE failed%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture%pB: warning: sh_link not set for section `%pA'%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
+%pB: invalid version offset %lx (max %lx)%pB: line number overflow: 0x%lx > 0xffff%pB: linking %s module with previous %s modules%pB: linking 32-bit code with 64-bit code%pB: linking 64-bit files with 32-bit files%pB: linking UltraSPARC specific with HAL specific code%pB: linking auto-pic files with non-auto-pic files%pB: linking big-endian files with little-endian files%pB: linking constant-gp files with non-constant-gp files%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%pB: linking files compiled for HCS12 with others compiled for HC12%pB: linking little endian files with big endian files%pB: linking non-pic code in a position independent executable%pB: linking trap-on-NULL-dereference with non-trapping files%pB: loader reloc in read-only section %pA%pB: loader reloc in unrecognized section `%s'%pB: local symbol `%s' in %pB is referenced by DSO%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol%pB: machine flag conflict with target%pB: malformed reloc detected for section %pA%pB: malformed reloc detected for section %s%pB: misplaced XTY_LD `%s'%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no core to allocate section name %s%pB: no group info for section '%pA'%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: no valid group sections found%pB: non-pic code with imm relocation against dynamic symbol `%s'%pB: non-pic relocation against symbol %s%pB: not enough room for program headers, try linking with -N%pB: not enough version information%pB: only registers %%g[2367] can be declared using STT_REGISTER%pB: out of memory creating name for empty section%pB: out of memory in _bfd_elf_get_property%pB: page size is too large (0x%x)%pB: pc-relative relocation against dynamic symbol %s%pB: pc-relative relocation against undefined weak symbol %s%pB: plugin needed to handle lto object%pB: probably compiled without -fPIC?%pB: protected symbol `%s' isn't defined%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive%pB: register relocation against non-register symbol: %s in %pA%pB: register relocation against non-register symbol: (unknown) in %pA%pB: reloc against a non-existent symbol index: %ld%pB: relocatable link from %s to %s not supported%pB: relocation %s against %s%s`%s' can not be used when making %s%s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported%pB: relocation %s against `%s' can not be used when making a shared object%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against symbol `%s' isn't supported in x32 mode%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC%pB: relocation %s can not be used when making a shared object; recompile with -fPIC%pB: relocation %s cannot be used when making a shared object%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object%pB: relocation size mismatch in %pB section %pA%pB: relocations in generic ELF (EM: %d)%pB: relocs in section `%pA', but it has no contents%pB: section %pA: string table overflow at offset %ld%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %d%pB: section group entry number %u is corrupt%pB: sh_link [%d] in section `%pA' is incorrect%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'%pB: size field is zero in Import Library Format header%pB: special symbol `%s' only allowed for ARMv8-M architecture or later%pB: speculation fixup to dynamic symbol %s%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: support for local dynamic not implemented%pB: symbol `%s' has unrecognized csect type %d%pB: symbol `%s' has unrecognized smclas %d%pB: symbol `%s' required but not present%pB: symbol indicates overlay (not supported)%pB: taking the address of protected function '%s' cannot be done when making a shared library%pB: the target (%s) of a %s relocation is in the wrong output section (%s)%pB: the target (%s) of an %s relocation is in the wrong section (%pA)%pB: too many sections (%d)%pB: too many sections: %d (>= %d)%pB: too many sections: %u%pB: tp-relative relocation against dynamic symbol %s%pB: unable to create fake empty section%pB: unable to fill in DataDictionary[12] because .idata$5 is missing%pB: unable to fill in DataDictionary[1] because .idata$2 is missing%pB: unable to fill in DataDictionary[1] because .idata$4 is missing%pB: unable to fill in DataDictionary[9] because __tls_used is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing%pB: unable to find %s veneer `%s'%pB: unable to find name for empty section%pB: unable to get decompressed section %pA%pB: unable to initialize compress status for section %s%pB: unable to initialize decompress status for section %s%pB: unable to load COMDAT section name%pB: unable to sort relocs - they are in more than one size%pB: unable to sort relocs - they are of an unknown size%pB: undefined reference to symbol '%s'%pB: undefined sym `%s' in .opd section%pB: undefined symbol on R_PPC64_TOCSAVE relocation%pB: unexpected redefinition of indirect versioned symbol `%s'%pB: unexpected reloc type %u in .opd section%pB: unhandled dynamic relocation against %s%pB: unhandled import type; %x%pB: unhandled sparc machine value '%lu' detected during write processing%pB: unknown architecture %s%pB: unknown load command %#x%pB: unknown mandatory ARC object attribute %d%pB: unknown mandatory EABI object attribute %d%pB: unknown relocation type %d%pB: unknown type [%#x] section `%s'%pB: unknown type [%#x] section `%s' in group [%pA]%pB: unmatched OMIT_FP in %pA%pB: unrecognised machine type (0x%x) in Import Library Format archive%pB: unrecognized import name type; %x%pB: unrecognized import type; %x%pB: unrecognized relocation type %#x in section `%pA'%pB: unrecognized storage class %d for %s symbol `%s'%pB: unsupported AOUT relocation size: %d%pB: unsupported arch %#x%pB: unsupported bfd mach %#lx%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported transition from %s to %s%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
+%pB: uses %s instructions while previous modules use %s instructions%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols%pB: uses different e_flags (%#x) fields than previous modules (%#x)%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)%pB: uses instructions which are incompatible with instructions used in previous modules%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols%pB: version node not found for symbol %s%pB: visibility of symbol `%s' has changed%pB: warning core file truncated%pB: warning: %pA: line number overflow: %#x > 0xffff%pB: warning: %s BLX instruction targets %s function '%s'%pB: warning: %s relocation against symbol `%s' from %pA section%pB: warning: %s unsupported in shared mode%pB: warning: %s: line number overflow: 0x%lx > 0xffff%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section.%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: RVE PLT generation not supported%pB: warning: Weak TLS is implementation defined and may not work as expected%pB: warning: allocated section `%s' not in segment%pB: warning: bad `%s' option size %u smaller than its header%pB: warning: cannot determine the target function for stub section `%s'%pB: warning: claims to have 0xffff relocs, without overflow%pB: warning: duplicate line number information for `%s'%pB: warning: endian mismatch with previous modules%pB: warning: ignoring section flag %s in section %s%pB: warning: illegal symbol in line number entry %d%pB: warning: illegal symbol index %ld in relocs%pB: warning: illegal symbol index 0x%lx in line number entry %d%pB: warning: incompatible elf-versions %s and %s%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)%pB: warning: line number count (%#lx) exceeds section size (%#lx)%pB: warning: line number table read failed%pB: warning: linking PIC files with non-PIC files%pB: warning: linking abicalls files with non-abicalls files%pB: warning: loop in section dependencies detected%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u%pB: warning: multiple symbol tables detected - ignoring the table in section %u%pB: warning: no symbol for section '%s' found%pB: warning: older version of object file encountered, please recompile with current tool chain%pB: warning: relocate SDA_BASE failed%pB: warning: secondary relocation section '%s' for section %pA found - ignoring%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture%pB: warning: sh_link not set for section `%pA'%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
 %pB: warning: thumb-1 mode PLT generation not currently supported%pB: warning: unaligned access to GOT entry%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)%pB: warning: unknown EABI object attribute %d%pB: will not resolve runtime TLS relocation%pB:%d: bad checksum in S-record file%pB:%d: byte count %d too small%pB:%d: unexpected character `%s' in Intel Hex file%pB:%d: unexpected character `%s' in S-record file%pB:%pA%s exceeds overlay size
-%pB:%pA: %s and %s must be in the same input section%pB:%pA: error: relocation references symbol %s which was removed by garbage collection%pB:%pA: error: try relinking with --gc-keep-exported enabled%pB:%pA: table %s missing corresponding %s%pB:%pA: table entry %s not word-aligned within table%pB:%pA: table entry %s outside table%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s%pB:%s has both normal and TLS relocs%pB:%s section %s: alignment 2**%u not representable%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)%pB:%u: bad extended address record length in Intel Hex file%pB:%u: bad extended linear address record length in Intel Hex file%pB:%u: bad extended linear start address length in Intel Hex file%pB:%u: bad extended start address length in Intel Hex file%pB:%u: unrecognized ihex type %u in Intel Hex file%s defined on removed toc entry%s duplicated
+%pB:%pA: %s and %s must be in the same input section%pB:%pA: error: attempting to write into an unallocated compressed section%pB:%pA: error: attempting to write over the end of the section%pB:%pA: error: attempting to write section into an empty buffer%pB:%pA: error: relocation references symbol %s which was removed by garbage collection%pB:%pA: error: try relinking with --gc-keep-exported enabled%pB:%pA: table %s missing corresponding %s%pB:%pA: table entry %s not word-aligned within table%pB:%pA: table entry %s outside table%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s%pB:%s has both normal and TLS relocs%pB:%s section %s: alignment 2**%u not representable%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)%pB:%u: bad extended address record length in Intel Hex file%pB:%u: bad extended linear address record length in Intel Hex file%pB:%u: bad extended linear start address length in Intel Hex file%pB:%u: bad extended start address length in Intel Hex file%pB:%u: unrecognized ihex type %u in Intel Hex file%pcrel_lo section symbol with an addend%s  branch         %lu
+  branch toc adj %lu
+  branch notoc   %lu
+  branch both    %lu
+  long branch    %lu
+  long toc adj   %lu
+  long notoc     %lu
+  long both      %lu
+  plt call       %lu
+  plt call save  %lu
+  plt call notoc %lu
+  plt call both  %lu
+  global entry   %lu%s defined on removed toc entry%s divide by zero%s duplicated
 %s duplicated in %s
 %s has both normal and TLS relocs%s in overlay section%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA%s: TLS reference in %pB mismatches non-TLS reference in %pB%s: no such symbol%s: not implemented%s: not supported%s: undefined version: %s(at bit offset %u)
 (descriptor)
@@ -543,8 +561,8 @@ ppcboot header:
 *unknown**unknown*        , Value: %#08lx
 , alias: %u
 , ext fixup offset: %u, no_opt psect off: %u, subtype: %u (%s)
-, symbol vector rva: - %pB is 64-bit, %pB is not-mips32r2 -mfp64 (12 callee-saved).eh_frame_hdr entry overflow.eh_frame_hdr refers to overlapping FDEs.got section not immediately after .plt section.rsrc merge failure: a directory matches a leaf.rsrc merge failure: differing directory versions.rsrc merge failure: dirs with differing characteristics.rsrc merge failure: duplicate leaf.rsrc merge failure: duplicate leaf: %s.rsrc merge failure: duplicate string resource: %d.rsrc merge failure: multiple non-default manifests32-bit double, 32bits gp relative relocation occurs for an external symbol4-byte4-bytes64 bits *unhandled*
-64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC<Unrecognised flag bits set><corrupt info> %s<corrupt string length: %#x>
+, symbol vector rva: - %pB is 64-bit, %pB is not-march=%s: %s ISA extension not in alphabetical order: '%s' must come before '%s'.-march=%s: %s must separate with _-march=%s: Duplicate %s ISA extension: '%s'-march=%s: Expect number after `%dp'.-march=%s: ISA string is not in canonical order. `%c'-march=%s: ISA string must begin with rv32 or rv64-march=%s: Invalid or unknown %s ISA extension: '%s'-march=%s: `d' extension requires `f' extension-march=%s: `q' extension requires `d' extension-march=%s: first ISA subset must be `e', `i' or `g'-march=%s: rv%de is not a valid base ISA-march=%s: rv32 does not support the `q' extension-march=%s: rv32e does not support the `f' extension-march=%s: unexpected ISA string at end: %s-march=%s: unsupported ISA subset `%c'-mips32r2 -mfp64 (12 callee-saved).eh_frame_hdr entry overflow.eh_frame_hdr refers to overlapping FDEs.got section not immediately after .plt section.rsrc merge failure: a directory matches a leaf.rsrc merge failure: differing directory versions.rsrc merge failure: dirs with differing characteristics.rsrc merge failure: duplicate leaf.rsrc merge failure: duplicate leaf: %s.rsrc merge failure: duplicate string resource: %d.rsrc merge failure: multiple non-default manifests32-bit double, 32bits gp relative relocation occurs for an external symbol4-byte4-bytes64 bits *unhandled*
+64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC; recompile with -fPIE<Unrecognised flag bits set><corrupt info> %s<corrupt string length: %#x>
 <corrupt string offset: %#lx>
 <corrupt><unknown directory type: %d>
 <unknown mask flags><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBFD %s internal error, aborting at %s:%d
@@ -557,7 +575,7 @@ ppcboot header:
 CTL_STLOC (set location)
 Copyright Header
 Corrupt .rsrc section detected!
-DSO missing from command lineDWARF error: DW_AT_comp_dir attribute encountered with a non-string formDWARF error: abstract instance recursion detectedDWARF error: can't find %s section.DWARF error: could not find abbrev number %uDWARF error: found address size '%u', this reader can not handle sizes greater than '%u'DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 informationDWARF error: info pointer extends beyond end of attributesDWARF error: invalid abstract instance DIE refDWARF error: invalid maximum operations per instructionDWARF error: invalid or unhandled FORM value: %#xDWARF error: line info unsupported segment selector size %uDWARF error: mangled line number sectionDWARF error: mangled line number section (bad file number)DWARF error: ran out of room reading opcodesDWARF error: ran out of room reading prologueDWARF error: unhandled .debug_line version %dDWARF error: zero format countDW_EH_PE_datarel unspecified for this architectureDebug DirectoryDebug module table:
+DSO missing from command lineDWARF error: DW_AT_comp_dir attribute encountered with a non-string formDWARF error: abstract instance recursion detectedDWARF error: can't find %s section.DWARF error: could not find abbrev number %uDWARF error: could not find variable specification at offset %lxDWARF error: found address size '%u', this reader can not handle sizes greater than '%u'DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 informationDWARF error: info pointer extends beyond end of attributesDWARF error: invalid abstract instance DIE refDWARF error: invalid maximum operations per instructionDWARF error: invalid or unhandled FORM value: %#xDWARF error: line info unsupported segment selector size %uDWARF error: mangled line number sectionDWARF error: mangled line number section (bad file number)DWARF error: ran out of room reading opcodesDWARF error: ran out of room reading prologueDWARF error: unhandled .debug_line version %dDWARF error: zero format countDW_EH_PE_datarel unspecified for this architectureDebug DirectoryDebug module table:
 Debug symbol table:
 Delay Import DirectoryDeprecated %s called
 Deprecated %s called at %s line %d in %s
@@ -565,7 +583,7 @@ ppcboot header:
 Entry offset        = 0x%.8lx (%ld)
 Error: %pB has both the current and legacy Tag_MPextension_use attributesException Directory [.pdata]Export Directory [.edata (or where ever we found it)]Export Flags 			%lx
 Export RVAFDE encoding in %pB(%pA) prevents .eh_frame_hdr table being createdFDPIC does not yet support %s relocation to become dynamic for executableFILES_VOLUMES    FPU-2.0FPU-3.0Flag field          = 0x%.2x
-Forwarder RVAGALAXY           GOT and PLT relocations cannot be fixed with a non dynamic linkerGOT table size out of rangeGP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
+Forwarder RVAGALAXY           GNU_MBIND section is unsupportedGOT and PLT relocations cannot be fixed with a non dynamic linkerGOT table size out of rangeGP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
 Hard float (32-bit CPU, 64-bit FPU)
 Hard float (32-bit CPU, Any FPU)
 Hard float (MIPS32r2 64-bit FPU 12 callee-saved)
@@ -573,8 +591,8 @@ ppcboot header:
 Hard float (single precision)
 Hard float compat (32-bit CPU, 64-bit FPU)
 Hard or soft float
-ID: %#08lxIDC - Ident Consistency check
-IMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supportedIO               Image activation:  (size=%u)
+IBT and SHSTK propertiesIBT propertyID: %#08lxIDC - Ident Consistency check
+IFUNC symbol %s in dynamic symbol table - IFUNCS are not supportedIMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supportedIO               Image activation:  (size=%u)
 Image activator fixup: (major: %u, minor: %u)
 Image identification: (major: %u, minor: %u)
 Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)
@@ -617,7 +635,7 @@ ppcboot header:
 Removed property %W to merge %pB (not found) and %pB (0x%v)
 Removed property %W to merge %pB and %pB
 Removed property %W to merge %pB and %pB (not found)
-ReservedResource Directory [.rsrc]S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your codeSDA relocation when _SDA_BASE_ not definedSECURITY         SEC_RELOC with no relocs in section %pASHELL            SHRFXDSHRPICSIMD use: SPSC - Shared Image Program section def
+ReservedResource Directory [.rsrc]S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your codeSDA relocation when _SDA_BASE_ not definedSECURITY         SEC_RELOC with no relocs in section %pASHELL            SHRFXDSHRPICSHSTK propertySIMD use: SPSC - Shared Image Program section def
 STABLE           STA_CKARG (compare procedure argument)
 STA_GBL (stack global) %.*s
 STA_LI (stack literal)
@@ -677,11 +695,11 @@ ppcboot header:
 Warning: %s section size (%ld) is smaller than virtual size (%ld)
 Warning: %s section size is zero
 Writing updated armap timestampXGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code.[%u]: Lower: %u, upper: %u
-[abi=16-bit int, [abi=32-bit int, [whose name is lost]_bfd_vms_output_counted called with too many bytes_bfd_vms_output_counted called with zero bytes`%s' refers to a non entry functiona PDE objecta PIE objecta shared objectaddressaddress not word alignedalternate ELF machine code found (%d) in %pB, expecting %darchive has no index; run ranlib to add onearchive object file in wrong formatarray descriptor:
+[abi=16-bit int, [abi=32-bit int, [whose name is lost]__tls_get_addr call offset overflow_bfd_vms_output_counted called with too many bytes_bfd_vms_output_counted called with zero bytes`%s' refers to a non entry functiona PDE objecta PIE objecta shared objectaddressaddress not word alignedalternate ELF machine code found (%d) in %pB, expecting %darchive has no index; run ranlib to add onearchive object file in wrong formatarray descriptor:
 array, dim: %u, bitmap: arsize: %u, a0: 0x%08x
 atomic, type=0x%02x %s
 attempt to convert L32R/CALLX to CALL failedattempt to do relocatable link with %s input and %s outputbad section index in %sbad valuebanked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)base: %u, pos: %u
-bfd_mach_o_canonicalize_symtab: unable to load symbolsbfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)bfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid section %d (max %lu): setting to undefinedbfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid type field 0x%x: setting to undefinedbfd_mach_o_read_symtab_symbol: unable to read %d bytes at %ubfd_mach_o_read_symtab_symbols: unable to allocate memory for symbolsbfd_mach_o_scan: unknown architecture 0x%lx/0x%lxbfd_pef_scan: unknown architecture 0x%lxblkbeg: address: 0x%08x, name: %.*s
+bfd_mach_o_canonicalize_symtab: unable to load symbolsbfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)bfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid section %d (max %lu): setting to undefinedbfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid type field 0x%x: setting to undefinedbfd_mach_o_read_symtab_symbol: unable to read %d bytes at %ubfd_mach_o_scan: unknown architecture 0x%lx/0x%lxbfd_pef_scan: unknown architecture 0x%lxblkbeg: address: 0x%08x, name: %.*s
 blkend: size: 0x%08x
 branch (PC rel16) to section (%s) not supportedbranch to a non-instruction-aligned addressbss-plt forced by profilingbss-plt forced due to %pBcan't build branch stub `%s'can't find branch stub `%s'cannot convert a branch to JALX for a non-word-aligned addresscannot convert a jump to JALX for a non-word-aligned addresscannot create stub entry %scannot emit dynamic relocations in read-only sectioncannot emit fixups in read-only sectioncannot find EMH in first GST record
 cannot read DMT
@@ -702,36 +720,35 @@ ppcboot header:
 cannot read GST record header
 cannot read GST record length
 class: %u, dtype: %u, length: %u, pointer: 0x%08x
-corrupt %s section in %pBcorrupt EEOM record - size is too smallcorrupt EGSD record: its psindx field is too big (%#lx)corrupt EGSD record: its size (%#x) is too smallcorrupt EGSD record: size (%#x) is larger than remaining space (%#x)corrupt EGSD record: size (%#x) is too smallcorrupt EIHD record - size is too smallcorrupt ETIR record encounteredcorrupt vms valuecould not find section %scould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcould not open shared image '%s' from '%s'cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dangerous relocationdelta pc +%-4ddelta_pc_l: +0x%08x
+corrupt %s section in %pBcorrupt EEOM record - size is too smallcorrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)corrupt EGSD record type %d: size (%#x) is too smallcorrupt EGSD record: its psindx field is too big (%#lx)corrupt EGSD record: its size (%#x) is too smallcorrupt EIHD record - size is too smallcorrupt ETIR record encounteredcorrupt vms valuecould not find section %scould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcould not open shared image '%s' from '%s'cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dangerous relocationdangerous relocation errordelta pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
 descdimct: %u, aflags: 0x%02x, digits: %u, scale: %u
 discarded output section: `%pA'discarding zero address range FDE in %pB(%pA).
 discontiguous range (nbr: %u)
-dynamic relocation in read-only sectiondynamic variable `%s' is zero sizedynreloc miscount for %pB, section %pAentry function `%s' disappeared from secure codeenumbeg, len: %u, name: %.*s
+dst_define_location %u too largedynamic relocation in read-only sectiondynamic variable `%s' is zero sizedynreloc miscount for %pB, section %pAentry function `%s' disappeared from secure codeenumbeg, len: %u, name: %.*s
 enumelt, name: %.*s
 enumend
 epilog: flags: %u, count: %u
-error in %pB(%pA); no .eh_frame_hdr table will be createderror reading %s: %serror reading cpu type from elf private dataerror: %pB does not use %s instructions, whereas %pB doeserror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %pB is compiled for the EP9312, whereas %pB is compiled for XScaleerror: %pB needs 8-byte alignment but %pB is set for 4-byte alignmenterror: %pB passes floats in float registers, whereas %pB passes them in integer registerserror: %pB passes floats in integer registers, whereas %pB passes them in float registerserror: %pB requires more array alignment than %pB preserveserror: %pB requires more stack alignment than %pB preserveserror: %pB use %u-byte stack aligned but the output use %u-byte stack aligned.error: %pB uses %s instructions but %pB uses %serror: %pB uses %s instructions, whereas %pB does noterror: %pB uses 64-bit doubles but %pB uses 32-bit doubleserror: %pB uses FPU-3.0 but %pB only supports FPU-2.0error: %pB uses VFP register arguments, %pB does noterror: %pB uses hardware FP, whereas %pB uses software FPerror: %pB uses iWMMXt register arguments, %pB does noterror: %pB uses software FP, whereas %pB uses hardware FPerror: %pB uses the %s code model whereas %pB uses the %s code modelerror: %pB uses the %s data model but %pB only uses MSP430 instructionserror: %pB uses the %s data model whereas %pB uses the %s data modelerror: %pB uses the large code model but %pB uses MSP430 instructionserror: %pB uses the small code model but %pB uses the %s data modelerror: %pB: <corrupt x86 property (0x%x) size: 0x%x>error: %pB: ISA string of input (%s) doesn't match output (%s).error: %pB: Mis-matched ISA string to merge '%s' and '%s'.error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%derror: %pB: SB relative addressing conflicts with use of R9error: %pB: Unspported XLEN (%u), you mightusing wrong emulation.error: %pB: XLEN of input (%u) doesn't match output (%u).error: %pB: big-endian R2 is not supportederror: %pB: cannot mix rf16 with full register set %pBerror: %pB: conflicting CPU architectures %d/%derror: %pB: conflicting ISA extension attributes %s with %serror: %pB: conflicting architecture profiles %c/%cerror: %pB: conflicting attributes %serror: %pB: conflicting attributes %s: %s with %serror: %pB: conflicting priv spec version (major/minor/revision).error: %pB: conflicting use of R9error: %pB: corrupted ISA string '%s'.first letter should be 'i' or 'e' but got '%s'.error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchainerror: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'error: %pB: old incompatible object file detectederror: %pB: size of section %pA is not multiple of address sizeerror: %pB: unable to merge CPU base attributes %s with %serror: %pB: unable to merge ISA extension attributes %serror: %pB: unable to merge virtualization attributes with %pBerror: %pB: unknown CPU architectureerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: fp16 format mismatch between %pB and %pBerror: inappropriate relocation type for shared library (did you forget -fpic?)error: source object %pB has EABI version %d, but target %pB has EABI version %derror: the ARC4 architecture is no longer supportederror: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %pBerror: unknown Tag_ABI_array_object_alignment value in %pBerrors encountered processing file %pBexecutablefailed to allocate space for new APUinfo sectionfailed to compute new APUinfo sectionfailed to find previous HI16 relocfailed to install new APUinfo sectionfailed to update file offsets in debug directoryfatal error while creating .fixupfile format is ambiguousfile format not recognizedfile in wrong formatfile too bigfile truncatedfurther warnings about FDE encoding preventing .eh_frame_hdr generation droppedgeneric linker can't handle %sglobal pointer relative address out of rangeglobal pointer relative relocation at address 0x%08x when _gp not defined
-global pointer relative relocation when _gp not definedhidden symbolhidden symbol incompatible cputypes in mach-o files: %ld vs %ldincr_linum(b): +%u
+error in %pB(%pA); no .eh_frame_hdr table will be createderror reading %s: %serror reading cpu type from elf private dataerror: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memoryerror: %pB does not use %s instructions, whereas %pB doeserror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %pB is compiled for the EP9312, whereas %pB is compiled for XScaleerror: %pB needs 8-byte alignment but %pB is set for 4-byte alignmenterror: %pB passes floats in float registers, whereas %pB passes them in integer registerserror: %pB passes floats in integer registers, whereas %pB passes them in float registerserror: %pB requires more array alignment than %pB preserveserror: %pB requires more stack alignment than %pB preserveserror: %pB use %u-byte stack aligned but the output use %u-byte stack aligned.error: %pB uses %s instructions but %pB uses %serror: %pB uses %s instructions, whereas %pB does noterror: %pB uses 64-bit doubles but %pB uses 32-bit doubleserror: %pB uses FPU-3.0 but %pB only supports FPU-2.0error: %pB uses VFP register arguments, %pB does noterror: %pB uses hardware FP, whereas %pB uses software FPerror: %pB uses iWMMXt register arguments, %pB does noterror: %pB uses software FP, whereas %pB uses hardware FPerror: %pB uses the %s code model whereas %pB uses the %s code modelerror: %pB uses the %s data model but %pB only uses MSP430 instructionserror: %pB uses the %s data model whereas %pB uses the %s data modelerror: %pB uses the large code model but %pB uses MSP430 instructionserror: %pB uses the small code model but %pB uses the %s data modelerror: %pB: <corrupt AArch64 used size: 0x%x>error: %pB: <corrupt x86 property (0x%x) size: 0x%x>error: %pB: ISA string of input (%s) doesn't match output (%s).error: %pB: Mis-matched ISA string to merge '%s' and '%s'.error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%derror: %pB: SB relative addressing conflicts with use of R9error: %pB: Unsupported XLEN (%u), you might be using wrong emulation.error: %pB: XLEN of input (%u) doesn't match output (%u).error: %pB: big-endian R2 is not supportederror: %pB: cannot mix rf16 with full register set %pBerror: %pB: conflicting CPU architectures %d/%derror: %pB: conflicting ISA extension attributes %s with %serror: %pB: conflicting architecture profiles %c/%cerror: %pB: conflicting attributes %serror: %pB: conflicting attributes %s: %s with %serror: %pB: conflicting use of R9error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but got '%s'.error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchainerror: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'error: %pB: old incompatible object file detectederror: %pB: size of section %pA is not multiple of address sizeerror: %pB: unable to merge CPU base attributes %s with %serror: %pB: unable to merge ISA extension attributes %serror: %pB: unable to merge virtualization attributes with %pBerror: %pB: unknown CPU architectureerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: fp16 format mismatch between %pB and %pBerror: inappropriate relocation type for shared library (did you forget -fpic?)error: source object %pB has EABI version %d, but target %pB has EABI version %derror: the ARC4 architecture is no longer supportederror: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %pBerror: unknown Tag_ABI_array_object_alignment value in %pBerrors encountered processing file %pBexecutablefailed to allocate space for new APUinfo sectionfailed to compute new APUinfo sectionfailed to find previous HI16 relocfailed to install new APUinfo sectionfailed to update file offsets in debug directoryfatal error while creating .fixupfile format is ambiguousfile format not recognizedfile in wrong formatfile too bigfile truncatedfurther warnings about FDE encoding preventing .eh_frame_hdr generation droppedgeneric linker can't handle %sglobal pointer relative address out of rangeglobal pointer relative relocation when _gp not definedhidden symbolhidden symbol incompatible cputypes in mach-o files: %ld vs %ldincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
 indirect, defined at 0x%08x
-internal error: RL78 reloc stack overflowinternal error: RL78 reloc stack underflowinternal error: addend should be zero for %sinternal error: branch/jump to an odd address detectedinternal error: dangerous errorinternal error: dangerous relocationinternal error: merge of architecture '%s' with architecture '%s' produced unknown architectureinternal error: out of range errorinternal error: suspicious relocation type used in shared libraryinternal error: unknown errorinternal error: unsupported relocation errorinternal inconsistency in size of .got.loc sectioninternal inconsistency: remaining %lu != max %lu; please report this buginternal symbolinternal symbol invalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or assemble using "-no-expand" (for gcc, "-Wa,-no-expand"invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or compile using the gcc-option "-mno-base-addresses".invalid operationinvalid output section for .eh_frame_entry: %pAinvalid relocation addressinvalid section index in ETIRinvalid use of %s with contextsip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.is this version of the linker - %s - out of date ?jump (PC rel26) to section (%s) not supportedjump to a non-instruction-aligned addressjump to a non-word-aligned addresslabel, name: %.*s
+internal error: RL78 reloc stack overflowinternal error: RL78 reloc stack underflowinternal error: addend should be zero for %sinternal error: branch/jump to an odd address detectedinternal error: dangerous errorinternal error: dangerous relocationinternal error: merge of architecture '%s' with architecture '%s' produced unknown architectureinternal error: out of range errorinternal error: relocation not supportedinternal error: suspicious relocation type used in shared libraryinternal error: unknown errorinternal error: unsupported relocation errorinternal inconsistency in size of .got.loc sectioninternal inconsistency: remaining %lu != max %lu; please report this buginternal symbolinternal symbol invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or assemble using "-no-expand" (for gcc, "-Wa,-no-expand"invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or compile using the gcc-option "-mno-base-addresses".invalid operationinvalid output section for .eh_frame_entry: %pAinvalid relocation addressinvalid section index in ETIRinvalid use of %s with contextsip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.is this version of the linker - %s - out of date ?jump (PC rel26) to section (%s) not supportedjump to a non-instruction-aligned addressjump to a non-word-aligned addresslabel, name: %.*s
 len: %2u, kind: %2u line num  (len: %u)
 linkable imagelinker stubs in %u group
 linker stubs in %u groups
 literalliteral relocation occurs for an external symbollong branch stub `%s' offset overflowmach-o: there are too many sections (%u) maximum is 255,
-malformed archivememory exhaustedmep: no reloc for code %dmodbeg
+malformed archivemalformed mach-o ARM half sectdiff reloc: invalid length: %dmalformed mach-o ARM local sectdiff reloc: invalid length: %dmalformed mach-o ARM reloc pair: invalid length: %dmalformed mach-o ARM reloc pair: reloc is first relocmalformed mach-o ARM reloc: unknown reloc type: %dmalformed mach-o ARM sectdiff reloc: invalid length: %dmalformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)malformed mach-o reloc: section index is greater than the number of sectionsmemory exhaustedmep: no reloc for code %dmodbeg
 modend
 name: [val: %08lx len %d]: nativenew entry function(s) introduced but no output import library specified:nono address assigned to the veneers output section %sno errorno more archived filesno symbolsnon-contiguous array of %s
-non-dynamic relocations refer to dynamic symbol %snon-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store
+non-dynamic relocations refer to dynamic symbol %snon-dynamic symbol %s in dynamic symbol tablenon-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store
 non-zero addend in @fptr relocnonenonrepresentable section on outputnot enough GOT space for local GOT entriesnot enough memory to sort relocationsnot mapping: data=%lx mapped=%d
 not mapping: env var not set
 not setobject module not error-free !offset of veneer for entry function `%s' not a multiple of its sizeone possible cause of this error is that the symbol is being referenced in the indicated code as if it had a larger alignment than was declared where it was definedout of rangeoverflow after relaxationoverlay stub relocation overflowpointer
 private flags = %lxprivate flags = %lx:private flags = %lx: private flags = 0x%lxprivate flags = 0x%lx:prolog: bkpt address 0x%08x
 protected symbolprotected symbol recbeg: name: %.*s
 recend
-reference to a banked address [%lx:%04lx] in the normal address space at %04lxreference to the far symbol `%s' using a wrong relocation may result in incorrect executionregregister %%g%d used incompatibly: %s in %pB, previously %s in %pBregister section has contents
+record is too small for symbol name lengthreference to a banked address [%lx:%04lx] in the normal address space at %04lxreference to the far symbol `%s' using a wrong relocation may result in incorrect executionregregister %%g%d used incompatibly: %s in %pB, previously %s in %pBregister section has contents
 reloc (%d) is *UNKNOWN*relocation for non-REL psectrelocation out of rangerelocation references symbol not defined in the modulerelocation requires zero addendrelocation should be even numberrelocations between different segments are not supportedremoving unused section '%pA' in file '%pB'reopening %pB: %s
 reserved cmd %drtnbeg
 rtnend: size 0x%08x
@@ -740,30 +757,30 @@ ppcboot header:
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-shared objectsize error in section %pAsmall-data section exceeds 64KB; lower small-data size limit (see option -G)som_sizeof_headers unimplementedsorry, no support for duplicate object files in auto-overlay script
+shared objectsize error in section %pAsmall-data section exceeds 64KB; lower small-data size limit (see option -G)som_sizeof_headers unimplementedsorry, cannot handle this filesorry, no support for duplicate object files in auto-overlay script
 sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands.source (len: %u)
 spurious ALPHA_R_BSR relocstack analysis will ignore the call from %s to %s
 stack overflow (%d) in _bfd_vms_pushstack underflow in _bfd_vms_popstandard data: %s
-start address of `%s' is different from previous linkstatic procedure (no name)stubs don't match calculated sizesymbolsymbol symbol '%s' has invalid st_other for ABI version 1symbol `%s' has differing types: REGISTER in %pB, previously %s in %pBsymbol needs debug section which does not existsystem call errorsystem version array information:
+start address of `%s' is different from previous linkstatic procedure (no name)stubs don't match calculated sizesymbolsymbol symbol '%s' has invalid st_other for ABI version 1symbol `%s' has differing types: REGISTER in %pB, previously %s in %pBsymbol binding STB_GNU_UNIQUE is unsupportedsymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is unsupportedsystem call errorsystem version array information:
 term(b): 0x%02xterm_w: 0x%04xthe bfin target does not currently support the generation of copy relocationsthere is a conflict merging the ELF header flags from %pBtoo many GOT entries for -fpic, please recompile with -fPICtry enabling relaxation to avoid relocation truncationstype spec for element:
 type spec for subscript %u:
 typed pointer
 typspec (len: %u)
-unable to allocate data for load command %#xunable to find %s glue '%s' for '%s'unable to find equivalent output section for symbol '%s' from section '%s'unable to layout unknown load command %#xunable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because the offset (%d) is out of the allowed range, -32678 to 32767
-unable to read EIHS record at offset %#xunable to read in %s section from %pBunable to write unknown load command %#xunaligned bit-string of %s
-undefined undefined %s reference in complex symbol: %sunexpected STO_SH5_ISA32 on local symbol is not handledunexpected machine numberunhandled OSF/1 core file section type %dunhandled egsd entry type %u
+unable to allocate data for load command %#xunable to find %s glue '%s' for '%s'unable to find equivalent output section for symbol '%s' from section '%s'unable to layout unknown load command %#xunable to read EIHS record at offset %#xunable to read in %s section from %pBunable to write unknown load command %#xunaligned bit-string of %s
+undefined undefined %s reference in complex symbol: %sunexpected machine numberunhandled OSF/1 core file section type %dunhandled egsd entry type %u
 unhandled emh subtype %u
-unhandled relocation %sunknownunknown EGSD subtype %dunknown ETIR command %dunknown basic type %dunknown errorunknown header byte-order value %#xunknown line command %dunknown operator '%c' in complex symbolunknown reloc %sunknown reloc %s + %sunknown source command %dunknown symbol in command %sunknown v850 architectureunknown: %xunrecognized INPUT_SECTION_FLAG %s
-unrecognized TI COFF target id '0x%x'unsupported .stab relocationunsupported STA cmd %sunsupported relocunsupported relocationunsupported relocation between data/insn address spacesunsupported relocation typeunsupported relocation type %#xusing multiple gp valuesv850 E3 architecturev850 architecturev850e architecturev850e1 architecturev850e2 architecturev850e2v3 architecturev850e3v5 architecturevariable `%s' can only be in one of the small, zero, and tiny data regionsvariable `%s' cannot be in both small and tiny data regions simultaneouslyvariable `%s' cannot be in both small and zero data regions simultaneouslyvariable `%s' cannot be in both zero and tiny data regions simultaneouslyvariable `%s' cannot occupy in multiple small data regionsvflags: 0x%02x, value: 0x%08x vma:			BeginAddress	 EndAddress	  UnwindData
+unhandled relocation %sunknownunknown EGSD subtype %dunknown ETIR command %dunknown attribute for symbol `%s': 0x%02xunknown basic type %dunknown errorunknown header byte-order value %#xunknown line command %dunknown operator '%c' in complex symbolunknown reloc %sunknown reloc %s + %sunknown source command %dunknown symbol in command %sunknown v850 architectureunknown: %xunrecognized INPUT_SECTION_FLAG %s
+unrecognized TI COFF target id '0x%x'unsupported .stab relocationunsupported STA cmd %sunsupported relocunsupported relocationunsupported relocation between data/insn address spacesunsupported relocation typeusing multiple gp valuesv850 E3 architecturev850 architecturev850e architecturev850e1 architecturev850e2 architecturev850e2v3 architecturev850e3v5 architecturevariable `%s' can only be in one of the small, zero, and tiny data regionsvariable `%s' cannot be in both small and tiny data regions simultaneouslyvariable `%s' cannot be in both small and zero data regions simultaneouslyvariable `%s' cannot be in both zero and tiny data regions simultaneouslyvariable `%s' cannot occupy in multiple small data regionsvflags: 0x%02x, value: 0x%08x vma:			BeginAddress	 EndAddress	  UnwindData
 warning, .pdata section size (%ld) is not a multiple of %d
-warning: %pB and %pB differ in wchar_t sizewarning: %pB and %pB differ in whether code is compiled for DSBTwarning: %pB does not support interworking, whereas %pB doeswarning: %pB has a corrupt section with a size (%warning: %pB has a corrupt string table index - ignoringwarning: %pB supports interworking, whereas %pB does notwarning: %pB uses %s (set by %pB), %pB uses %swarning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may failwarning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may failwarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB: conflicting platform configurationwarning: %pB: conflicting platform configuration %s with %swarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lxwarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%xwarning: %pB: corrupt no copy on protected size: 0x%xwarning: %pB: corrupt stack size: 0x%xwarning: %pB: local symbol `%s' has no sectionwarning: %pB: unknown ARC object attribute %dwarning: %pB: unknown EABI object attribute %dwarning: %pB: unknown MSPABI object attribute %dwarning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%xwarning: %s exceeds section size
+warning: %pB and %pB differ in wchar_t sizewarning: %pB and %pB differ in whether code is compiled for DSBTwarning: %pB does not support interworking, whereas %pB doeswarning: %pB has a corrupt section with a size (%warning: %pB has a corrupt string table index - ignoringwarning: %pB supports interworking, whereas %pB does notwarning: %pB use privilege spec version %u.%u.%u but the output use version %u.%u.%u.warning: %pB uses %s (set by %pB), %pB uses %swarning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may failwarning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may failwarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB: conflicting platform configurationwarning: %pB: conflicting platform configuration %s with %swarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lxwarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%xwarning: %pB: corrupt no copy on protected size: 0x%xwarning: %pB: corrupt stack size: 0x%xwarning: %pB: local symbol `%s' has no sectionwarning: %pB: unknown ARC object attribute %dwarning: %pB: unknown EABI object attribute %dwarning: %pB: unknown MSPABI object attribute %dwarning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%xwarning: %s exceeds section size
 warning: %s overlaps %s
-warning: %s section has zero sizewarning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: RL78_SYM reloc with an unknown symbolwarning: RX_SYM reloc with an unknown symbolwarning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pAwarning: alignment %u of symbol `%s' in %pB is smaller than %u in %pBwarning: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %pBwarning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with itwarning: clearing the interworking flag of %pB due to outside requestwarning: corrupt unwind data
-warning: discarding dynamic section %swarning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%swarning: gc-sections option ignoredwarning: generating a shared library containing non-PIC codewarning: generating a shared library containing non-PID codewarning: not setting interworking flag of %pB since it has already been specified as non-interworkingwarning: relocation references a different segmentwarning: section '%s' is being made into a notewarning: section `%pA' type changed to PROGBITSwarning: symbol `%s' is both section and non-sectionwarning: type and size of dynamic symbol `%s' are not definedwarning: type of symbol `%s' changed from %d to %d in %pBwarning: unable to set size of %s section in %pBwarning: unable to update contents of %s section in %pBwarning: unrecognized arch eflag '%#lx'warning: unset or old architecture flags; use default machinewarning: writing archive was slow: rewriting timestampwarning: writing section `%pA' at huge (ie negative) file offsetwarning: xdata section corrupt
-yesyou are not allowed to define %s in a scriptProject-Id-Version: bfd 2.31.90
+warning: %s section has zero sizewarning: %s should be used rather than %swarning: --enable-non-contiguous-regions discards section `%s' from '%s'
+warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: RL78_SYM reloc with an unknown symbolwarning: RX_SYM reloc with an unknown symbolwarning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pAwarning: alignment %u of symbol `%s' in %pB is smaller than %u in %pBwarning: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %pBwarning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with itwarning: clearing the interworking flag of %pB due to outside requestwarning: corrupt unwind data
+warning: discarding dynamic section %swarning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%swarning: gc-sections option ignoredwarning: generating a shared library containing non-PIC codewarning: generating a shared library containing non-PID codewarning: not setting interworking flag of %pB since it has already been specified as non-interworkingwarning: privilege spec version 1.9.1 can not be linked with other spec versions.warning: relocation references a different segmentwarning: section '%s' is being made into a notewarning: section `%pA' type changed to PROGBITSwarning: symbol `%s' is both section and non-sectionwarning: type and size of dynamic symbol `%s' are not definedwarning: type of symbol `%s' changed from %d to %d in %pBwarning: unable to set size of %s section in %pBwarning: unable to update contents of %s section in %pBwarning: unrecognized arch eflag '%#lx'warning: unset or old architecture flags; use default machinewarning: writing archive was slow: rewriting timestampwarning: writing section `%pA' at huge (ie negative) file offsetwarning: xdata section corrupt
+yesyou are not allowed to define %s in a scriptProject-Id-Version: bfd 2.34.90
 Report-Msgid-Bugs-To: bug-binutils@gnu.org
-POT-Creation-Date: 2019-01-19 16:30+0000
-PO-Revision-Date: 2019-01-24 18:57+0300
+POT-Creation-Date: 2020-07-04 10:26+0100
+PO-Revision-Date: 2020-07-30 19:54+0300
 Last-Translator: Yuri Kozlov <yuray@komyakino.ru>
 Language-Team: Russian <gnu@d07.ru>
 Language: ru
@@ -962,19 +979,7 @@ Plural-Forms:  nplurals=3; plural=(n%10=
   EGSD (len=%u):
   Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD %2u (Ñ‚Ð¸Ð¿: %u, Ð´Ð»Ð¸Ð½Ð°: %u):   EMH %u (len=%u):   Ð±Ð°Ð·Ð°: 0x%08x %08x, Ñ€Ð°Ð·Ð¼ÐµÑ€: 0x%08x, prot: 0x%08x   base_va : 0x%08x
   Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð±Ð¸Ñ‚: %u, Ð±Ð°Ð·Ð¾Ð²Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x
-  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ                            %lu
-  Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� toc            %lu
-  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ðµ toc                     %lu
-  Ð¾Ð±Ð° Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�                        %lu
-  Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ                    %lu
-  Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð»Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� toc   %lu
-  Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ðµ toc             %lu
-  Ð¾Ð±Ð° Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�                %lu
-  plt-Ð²Ñ‹Ð·Ð¾Ð²                            %lu
-  Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ‘Ð½Ð½Ñ‹Ð¹ plt-Ð²Ñ‹Ð·Ð¾Ð²                %lu
-  plt-Ð²Ñ‹Ð·Ð¾Ð² Ð½Ðµ toc                     %lu
-  Ð¾Ð±Ð° plt-Ð²Ñ‹Ð·Ð¾Ð²Ð°                       %lu
-  Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚                   %lu  Ð²Ñ‹Ð·Ð¾Ð²Ñ‹:
+  Ð²Ñ‹Ð·Ð¾Ð²Ñ‹:
   chgprtoff : %5u
   codeadroff: %5u, lpfixoff  : %5u
   fixuplnk: 0x%08x %08x
@@ -1031,8 +1036,15 @@ Plural-Forms:  nplurals=3; plural=(n%10=
      		Ð�Ð´Ñ€ÐµÑ�     ÐŸÑ€Ð¾Ð»Ð¾Ð³Ð°  Ð¤ÑƒÐ½ÐºÑ†Ð¸Ð¸ 32b exc     Ð˜Ñ�ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ Ð”Ð°Ð½Ð½Ñ‹Ðµ
  vma:            Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð°    ÐžÑ‚Ð¼ÐµÑ‚ÐºÐ°   Ð¦ÐµÐ¿Ð¾Ñ‡ÐºÐ°    Ð˜Ð¼Ñ�       ÐŸÐµÑ€Ð²Ñ‹Ð¹
                   Ð£ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹  Ð’Ñ€ÐµÐ¼ÐµÐ½Ð¸   ÐŸÐµÑ€ÐµÑ�Ñ‹Ð»ÐºÐ¸  DLL       Ð¨Ð»ÑŽÐ·
-#<Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ ÐºÐ¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸>%03x %*.s  Ð»Ð¸Ñ�Ñ‚: Ð°Ð´Ñ€ÐµÑ�: %#08lx, Ñ€Ð°Ð·Ð¼ÐµÑ€: %#08lx, ÐºÐ¾Ð´Ð¾Ð²Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°: %d
+#<Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ ÐºÐ¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸>%%X%%P: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC
+%%X%%P: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»
+%03x %*.s  Ð»Ð¸Ñ�Ñ‚: Ð°Ð´Ñ€ÐµÑ�: %#08lx, Ñ€Ð°Ð·Ð¼ÐµÑ€: %#08lx, ÐºÐ¾Ð´Ð¾Ð²Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°: %d
 %03x %*.s Ð­Ð»ÐµÐ¼ÐµÐ½Ñ‚: %C: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
+%F%P: %pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� --gc-sections Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ» linked-to
+%F%P: %pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾
+%F%P: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ %pA Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñƒ. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚Ðµ Ð±ÐµÐ· --enable-non-contiguous-regions.
+%F%P: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ Â«%pAÂ» Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñƒ. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚Ðµ Ð±ÐµÐ· --enable-non-contiguous-regions.
+%F%P: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ Ð³Ñ€ÑƒÐ¿Ð¿Ñƒ %pA Ñ†ÐµÐ»Ð¸ %pA Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñƒ. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚Ðµ Ð±ÐµÐ· --enable-non-contiguous-regions.
 %F%P: already_linked_table: %E
 %F%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�: %E
 %F%P: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�: %E
@@ -1081,23 +1093,22 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 %H: Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ð² Â«%sÂ» Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾ %u
 %H: Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾ %u
 %H: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð¸ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹
+%H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ� got/toc Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s
 %H: Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ %s Ð´Ð»Ñ� Â«%sÂ»
 %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
 %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Â«%sÂ»: %s
 %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð½ÐµÑ�Ð²Ð½Ð¾Ð³Ð¾ Ð²Ñ‹Ð·Ð¾Ð²Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�
 %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð¼Ð¾Ð´ÑƒÐ»Ðµ
 %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Â«%s+%vÂ» Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð·Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹
-%H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ� toc Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s
 %H: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%pTÂ»
 %H: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»
 %H: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %s Ð½Ðµ Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ insn %#x.
 %P%F: --relax Ð¸ -r Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ð¼ÐµÑ�Ñ‚Ðµ
 %P%X: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹: %E
-%P%X: Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�, Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� IFUNC; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC
 %P%X: Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�, Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�
-%P: %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� bss-plt
 %P: %H: Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ %x
 %P: %pB: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Â«%pTÂ»
+%P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ %s
 %P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»
 %P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»
 %P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ opd Ñƒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° toc Ð´Ð»Ñ� Â«%pTÂ»
@@ -1106,6 +1117,8 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 %P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð´Ð»Ñ� Â«%pTÂ»
 %P: Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ñ‚Ð¾Ñ‡ÐµÐº Ð²Ñ…Ð¾Ð´Ð°: Ð² Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… %pB Ð¸ %pB
 %P: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�
+%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð²Ð½Ñ‹Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ GNU Ñ� DT_TEXTREL Ð¼Ð¾Ð³ÑƒÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� %s
+%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚Ñ�Ñ� DT_TEXTREL Ð² PIE
 %P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚Ñ�Ñ� DT_TEXTREL Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ
 %P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð½ÐµÑ�Ð²Ð½Ñ‹Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ GNU Ð¼Ð¾Ð³ÑƒÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�
 %X%C: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
@@ -1116,10 +1129,14 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 %X%H: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¼ÐµÐ¶Ð´Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA
 %X%H: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� bss-plt -fPIC ifunc %s
 %X%H: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¼ÐµÐ¶Ð´Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ð¾Ð¹ ÑƒÐ²Ñ�Ð·ÐºÐ¾Ð¹
+%X%P: %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� bss-plt
 %X%P: %pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %V
 %X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%RÂ» Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½
 %X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pRÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�
 %X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pRÂ» Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð¸Ð»Ð¾ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %x
+%X%P: %pB: %s Ñ� %pT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² glibc ÐºÐ°Ðº Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ
+%X%P: %pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ %s
+%X%P: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Â«%pBÂ»
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�
@@ -1132,16 +1149,16 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 %XÂ«%sÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð² Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð· %pB: Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½ Ð² Ð¾Ñ‚Ð±Ñ€Ð¾ÑˆÐµÐ½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð¸Ð· %pB
 %pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ [Â«%pAÂ» Ð² %pB] Ð¸ Ð½ÐµÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ [Â«%pAÂ» Ð² %pB] Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹%pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ð¸ Ð½ÐµÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹%pA:0x%v lrlive .brinfo (%u) Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ð¾Ñ‚ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ (%u)
 %pA:0x%v Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹
-%pB (%s): Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s (%#lx)%pB .opd Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾ Ð² ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ %d%pB Ð¸ %pB Ð´Ð»Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ñ… ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¹%pB Ð¸ %pB Ð´Ð»Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ�Ð´ÐµÑ€%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÐºÐ¾Ð´ CRIS v32, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÐºÐ¾Ð´ Ð½Ðµ CRIS v32, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ Ð¸ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ²ÑˆÐ¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Tag_MPextension_use%pB Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�Ñ‚ÑŒ %s%pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %lu Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½ÐµÑ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» SHT_SYMTAB_SHNDX%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ long double, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ 128-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ long double%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ ABI Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¾Ð² AltiVec, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ ABI Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¾Ð² SPE%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ long double Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ IBM, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ long double Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ IEEE%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð¹ Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð¾Ð¹ Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ r3/r4 Ð´Ð»Ñ� Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¾Ð¹ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ñ‹, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ e_flags 0x%lx%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‹Ð·Ð¾Ð² Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ»%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�%pB(%pA): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²%pB(%pA): Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹ TLS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %d Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %ld%pB(%pA): Ð¿Ñ€Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ð¸ Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸%pB(%pA): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�ÐºÐ»ÐµÐ¹ÐºÐ¸ Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ð²ÐµÑ‚Ð²ÐµÐ¹, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° SHF_ARM_PURECODE, Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ†ÐµÐ»ÐµÐ¹ M-Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ�, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ movw%pB(%pA): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð² Ð¼Ð°Ð»Ð¾Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð´Ð°Ð½Ð½Ñ‹Ñ…%pB(%pA): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ð¼Ð°Ð»Ñ‹Ð¼ Ð´Ð°Ð½Ð½Ñ‹Ð¼ Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d%pB(%pA+%#lx): Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ stabs Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸%pB(%pA+%#x): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ðº Ð² Ð½Ðµ Ð¿Ð¾Ñ�Ð»ÐµÐ´Ð½ÐµÐ¼ Ð±Ð»Ð¾ÐºÐµ IT: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gcc -mrestrict-it Ð´Ð»Ñ� Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¾Ð´Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð² Ð±Ð»Ð¾ÐºÐµ IT%pB(%pA+0x%lx): Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ 16A Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x insn%pB(%pA+0x%lx): Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ 16D Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x insn%pB(%pA+0x%v): Ð²Ñ‹Ð·Ð¾Ð² Ð½Ðµ ÐºÐ¾Ð´Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pB(%pA), Ð°Ð½Ð°Ð»Ð¸Ð· Ð½Ðµ Ð¿Ð¾Ð»Ð¾Ð½
-%pB(%s): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð°Ñ� Ñ€Ð°Ð±Ð¾Ñ‚Ð° Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°; Ð¿ÐµÑ€Ð²Ð¾Ðµ ÑƒÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ðµ: %pB: Ð²Ñ‹Ð·Ð¾Ð² %s Ð² %s%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, Ñ�Ð¼ÐµÑˆÐµÐ½Ð¸Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð², Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð½ÐµÑ‚ PLT Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð½ÐµÑ‚ Ð½Ð¸ PLT Ð½Ð¸ GOT Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ Ð½Ð° Â«%sÂ»; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, Ñ�Ð¼ÐµÑˆÐµÐ½Ð¸Ðµ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ð¹?%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð´Ð»Ñ� Â«%sÂ», Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ� Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ñ�Ñ‚ÑŒÑŽ Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, Ñ�Ð¼ÐµÑˆÐµÐ½Ð¸Ðµ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ð¹?%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð´Ð»Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: Â«%sÂ»%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: Â«%sÂ», ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½ Ð²Ð½Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, Ñ�Ð¼ÐµÑˆÐµÐ½Ð¸Ðµ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ð¹?%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð±ÐµÐ· Ñ�Ð¾Ð·Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ GOT%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: v10/v32 Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚ Ð½Ðµ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ PIC%pB, Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ», Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ !samegp Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð±ÐµÐ· .prologue: %s%pB: %pA Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°%pB: %pA Ð½Ðµ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð¾%pB: %pA ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚ÐµÐºÑ�Ñ‚Ð°%pB: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x > 0xffff%pB: Ñ„Ð»Ð°Ð³ %s Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: %s Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¼%pB: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð¸Ñ‚Ð¸%pB: %s: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %d%pB: %s: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %u (Ð¼Ð°ÐºÑ� %d)%pB: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: 0x%lx > 0xffff%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð´Ð»Ñ� Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB: --in-implib Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐº Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Secure Gateway%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ .gnu.version_d%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ .gnu.version_r%pB: Ð¿Ð¾Ð´Ñ€Ð°Ð·Ð´ÐµÐ» .got Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ 64K (Ñ€Ð°Ð·Ð¼ÐµÑ€ %d)%pB: .opd Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð¾Ð¼ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² opd%pB: Ñ€Ð°Ð·Ð´ÐµÐ» .preinit_array Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ°ÐµÑ‚Ñ�Ñ� Ð² DSO%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ñ€Ð°Ð·Ð´ÐµÐ» .rsrc Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ rsrc: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .rsrc%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @gprel Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ @internal Ðº Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @pcrel Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸ÐµÐ¹%pB: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ð¸:
-  Ñ†ÐµÐ»ÑŒ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Â«%sÂ»%pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ABI: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ %ld Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð¾ Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð¾Ð¼ Ñ� ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ %ld%pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ASE: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: Ð¾Ð±Ñ€Ð°Ð·Ñ‹ BE8 Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ñ‹ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ big-endian%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼%pB: GNU_MBIN Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ sh_info: %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ GOT: ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ� 8-Ð¼Ð¸ Ð¸Ð»Ð¸ 16-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ > %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ GOT: ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ� 8-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ > %d%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° ISR Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð±Ñ‹Ð» %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹, Ñ�Ñ‚Ð°Ð» %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹%pB: ÐŸÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ð¾Ð¼ ELF (EM: %d)%pB: Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SB, Ð½Ð¾ __c6xabi_DSBT_BASE Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½%pB: Ñ€Ð°Ð·Ð´ÐµÐ» SHT_GROUP [Ð¸Ð½Ð´ÐµÐºÑ� %d] Ð½Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² SHF_GROUP%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ ÐºÐ¾Ð´ TLS Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¾Ð±Ñ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸%pB: Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ TLS Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ð½Ðµ Ñ€Ñ�Ð´Ð¾Ð¼:%pB: Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ PT_DYNAMIC Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð¼ .dynamic%pB: Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚ XCOFF Ð±ÐµÐ· Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð° XCOFF%pB: __gp Ð½Ðµ Ð¿Ð¾ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð´Ð°Ð½Ð½Ñ‹Ñ…%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº FDPIC Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð¸Ñ‚Ð¸%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº FDPIC Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð´Ð»Ñ� Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB: Â«%sÂ» Ð¸ ÐµÐ³Ð¾ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ð² Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð°Ñ…%pB: Â«%sÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾Ðº, Ð½Ð¾ Ð² Ð¾Ð±Ñ€Ð°Ð¼Ð»Ñ�ÑŽÑ‰ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ%pB: Â«%sÂ» Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ°, Ð½Ð¾ Ð½Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ°%pB: Ð½Ðµ PLT Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%sÂ» Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ð² Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ, Ðº ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼Ñƒ Ð¾Ð±Ñ€Ð°Ñ‰Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° (Ð¿ÐµÑ€ÐµÑ�Ð¾Ð±ÐµÑ€Ð¸Ñ‚Ðµ Ñ„Ð°Ð¹Ð» Ñ� -fPIC ?)%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ got%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ plt%pB: Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ aout ÑƒÐºÐ°Ð·Ð°Ð½ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ…: %ld%pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ Ð¸Ð· Ð½Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (Ð½Ð¾Ð¼ÐµÑ€ %d)%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ð¼ÐµÑˆÐ°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ FDPIC Ð¸ Ð½Ðµ FDPIC%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�%pB: Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸: %d%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð¸Ð¼Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² ihex_read_section%pB: Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: Â«MainÂ» Ñ€Ð°Ð²ÐµÐ½ %s, Ð° Ð½Ðµ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %s
+%pB (%s): Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s (%#lx)%pB .opd Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾ Ð² ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ %d%pB Ð¸ %pB Ð´Ð»Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ñ… ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¹%pB Ð¸ %pB Ð´Ð»Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ�Ð´ÐµÑ€%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÐºÐ¾Ð´ CRIS v32, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÐºÐ¾Ð´ Ð½Ðµ CRIS v32, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ Ð¸ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ²ÑˆÐ¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Tag_MPextension_use%pB Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�Ñ‚ÑŒ %s%pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %lu Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½ÐµÑ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» SHT_SYMTAB_SHNDX%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ long double, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ 128-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ long double%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ ABI Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¾Ð² AltiVec, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ ABI Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¾Ð² SPE%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ long double Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ IBM, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ long double Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ IEEE%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð¹ Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð¾Ð¹ Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ r3/r4 Ð´Ð»Ñ� Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¾Ð¹ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ñ‹, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ e_flags 0x%lx%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‹Ð·Ð¾Ð² Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ»%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‚ Ð´Ð»Ñ� Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %u Ð¿ÑƒÑ�Ñ‚%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %u Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ð°%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %u Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %u Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð¿ÑƒÑ�Ñ‚!%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ð´Ð²Ð°Ð¶Ð´Ñ‹%pB(%pA): Ð½ÐµÐ»ÑŒÐ·Ñ� Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸, Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð² Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ðµ%pB(%pA): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�%pB(%pA): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²%pB(%pA): Ð½ÐµÐ»ÑŒÐ·Ñ� Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ñ�Ñ‹Ð»Ð¾Ðº, Ñ‚Ð°Ðº ÐºÐ°Ðº Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð» Ð½Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²%pB(%pA): Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹ TLS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %d Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %ld%pB(%pA): Ð¿Ñ€Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ð¸ Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸%pB(%pA): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�ÐºÐ»ÐµÐ¹ÐºÐ¸ Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ð²ÐµÑ‚Ð²ÐµÐ¹, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° SHF_ARM_PURECODE, Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ†ÐµÐ»ÐµÐ¹ M-Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ�, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ movw%pB(%pA): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð² Ð¼Ð°Ð»Ð¾Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð´Ð°Ð½Ð½Ñ‹Ñ…%pB(%pA): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ð¼Ð°Ð»Ñ‹Ð¼ Ð´Ð°Ð½Ð½Ñ‹Ð¼ Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d%pB(%pA+%#lx): Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ stabs Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸%pB(%pA+%#x): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ðº Ð² Ð½Ðµ Ð¿Ð¾Ñ�Ð»ÐµÐ´Ð½ÐµÐ¼ Ð±Ð»Ð¾ÐºÐµ IT: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gcc -mrestrict-it Ð´Ð»Ñ� Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¾Ð´Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð² Ð±Ð»Ð¾ÐºÐµ IT%pB(%pA+0x%lx): Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ 16A Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x insn%pB(%pA+0x%lx): Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ 16D Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x insn%pB(%pA+0x%v): Ð²Ñ‹Ð·Ð¾Ð² Ð½Ðµ ÐºÐ¾Ð´Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pB(%pA), Ð°Ð½Ð°Ð»Ð¸Ð· Ð½Ðµ Ð¿Ð¾Ð»Ð¾Ð½
+%pB(%s): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð°Ñ� Ñ€Ð°Ð±Ð¾Ñ‚Ð° Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°; Ð¿ÐµÑ€Ð²Ð¾Ðµ ÑƒÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ðµ: %pB: Ð²Ñ‹Ð·Ð¾Ð² %s Ð² %s%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, Ñ�Ð¼ÐµÑˆÐµÐ½Ð¸Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð², Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð½ÐµÑ‚ PLT Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð½ÐµÑ‚ Ð½Ð¸ PLT Ð½Ð¸ GOT Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ Ð½Ð° Â«%sÂ»; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, Ñ�Ð¼ÐµÑˆÐµÐ½Ð¸Ðµ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ð¹?%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð´Ð»Ñ� Â«%sÂ», Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ� Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ñ�Ñ‚ÑŒÑŽ Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, Ñ�Ð¼ÐµÑˆÐµÐ½Ð¸Ðµ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ð¹?%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð´Ð»Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: Â«%sÂ»%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: Â«%sÂ», ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½ Ð²Ð½Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, Ñ�Ð¼ÐµÑˆÐµÐ½Ð¸Ðµ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ð¹?%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð±ÐµÐ· Ñ�Ð¾Ð·Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ GOT%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: v10/v32 Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚ Ð½Ðµ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ PIC%pB, Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ», Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ !samegp Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð±ÐµÐ· .prologue: %s%pB: %pA Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°%pB: %pA Ð½Ðµ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð¾%pB: %pA ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚ÐµÐºÑ�Ñ‚Ð°%pB: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x > 0xffff%pB: Ñ„Ð»Ð°Ð³ %s Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ñ� Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu (>= sh_info Ñ� %lu)%pB: %s Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¼%pB: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð¸Ñ‚Ð¸%pB: %s: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %d%pB: %s: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %u (Ð¼Ð°ÐºÑ� %d)%pB: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: 0x%lx > 0xffff%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð´Ð»Ñ� Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB: --in-implib Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐº Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Secure Gateway%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ .gnu.version_d%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ .gnu.version_r%pB: Ð¿Ð¾Ð´Ñ€Ð°Ð·Ð´ÐµÐ» .got Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ 64K (Ñ€Ð°Ð·Ð¼ÐµÑ€ %d)%pB: .opd Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð¾Ð¼ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² opd%pB: Ñ€Ð°Ð·Ð´ÐµÐ» .preinit_array Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ°ÐµÑ‚Ñ�Ñ� Ð² DSO%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ñ€Ð°Ð·Ð´ÐµÐ» .rsrc Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ rsrc: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .rsrc%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @gprel Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ @internal Ðº Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @pcrel Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸ÐµÐ¹%pB: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ð¸:
+  Ñ†ÐµÐ»ÑŒ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Â«%sÂ»%pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ABI: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ %ld Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð¾ Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð¾Ð¼ Ñ� ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ %ld%pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ASE: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: Ð¾Ð±Ñ€Ð°Ð·Ñ‹ BE8 Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ñ‹ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ big-endian%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼%pB: GNU_MBIND Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ sh_info: %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ GOT: ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ� 8-Ð¼Ð¸ Ð¸Ð»Ð¸ 16-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ > %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ GOT: ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ� 8-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ > %d%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° ISR Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð±Ñ‹Ð» %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹, Ñ�Ñ‚Ð°Ð» %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹%pB: ÐŸÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ð¾Ð¼ ELF (EM: %d)%pB: Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SB, Ð½Ð¾ __c6xabi_DSBT_BASE Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½%pB: Ñ€Ð°Ð·Ð´ÐµÐ» SHT_GROUP [Ð¸Ð½Ð´ÐµÐºÑ� %d] Ð½Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² SHF_GROUP%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ ÐºÐ¾Ð´ TLS Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¾Ð±Ñ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS %s Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ TLS Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ð½Ðµ Ñ€Ñ�Ð´Ð¾Ð¼:%pB: Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ PT_DYNAMIC Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð¼ .dynamic%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %x Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ ELF. Ð’Ð¼ÐµÑ�Ñ‚Ð¾ Ð½ÐµÐ³Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ ABS.%pB: Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚ XCOFF Ð±ÐµÐ· Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð° XCOFF%pB: __gp Ð½Ðµ Ð¿Ð¾ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð´Ð°Ð½Ð½Ñ‹Ñ…%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº FDPIC Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð¸Ñ‚Ð¸%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº FDPIC Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð´Ð»Ñ� Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB: Â«%sÂ» Ð¸ ÐµÐ³Ð¾ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ð² Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð°Ñ…%pB: Â«%sÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾Ðº, Ð½Ð¾ Ð² Ð¾Ð±Ñ€Ð°Ð¼Ð»Ñ�ÑŽÑ‰ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ%pB: Â«%sÂ» Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ°, Ð½Ð¾ Ð½Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ°%pB: Ð½Ðµ PLT Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%sÂ» Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ð² Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ, Ðº ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼Ñƒ Ð¾Ð±Ñ€Ð°Ñ‰Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° (Ð¿ÐµÑ€ÐµÑ�Ð¾Ð±ÐµÑ€Ð¸Ñ‚Ðµ Ñ„Ð°Ð¹Ð» Ñ� -fPIC ?)%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ got%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ plt%pB: Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ aout ÑƒÐºÐ°Ð·Ð°Ð½ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ…: %u%pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ Ð¸Ð· Ð½Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (Ð½Ð¾Ð¼ÐµÑ€ %d)%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ð¼ÐµÑˆÐ°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ FDPIC Ð¸ Ð½Ðµ FDPIC%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�%pB: Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸: %d%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð¸Ð¼Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² ihex_read_section%pB: Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: Â«MainÂ» Ñ€Ð°Ð²ÐµÐ½ %s, Ð° Ð½Ðµ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %s
 %pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ�: %d%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð±Ð°Ð·Ð°-Ð¿Ð»ÑŽÑ�-Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: %s Ð² %pA%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð±Ð°Ð·Ð°-Ð¿Ð»ÑŽÑ�-Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾) Ð² %pA%pB: Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° a.out%pB: Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° a.out%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ RVE Ñ� Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ†ÐµÐ»ÑŒÑŽ%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð´Ð»Ñ� Ð¸Ð¼ÐµÐ½Ð¸ Ñ„Ð°Ð¹Ð»Ð° Ñ„Ð°Ð¹Ð»Ñƒ Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d, %d Ð±Ð°Ð¹Ñ‚
-%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %s%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¶Ð°Ñ‚Ñ‹Ðµ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Alpha; Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð½ÐµÑ�Ð¶Ð°Ñ‚Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ‚Ð¾Ñ€Ð° Ð¸Ð»Ð¸ objZ.%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð», Ñ�Ð²Ð»Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� fdpic, Ð² Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ð½Ðµ fdpic%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð», Ð½Ðµ Ñ�Ð²Ð»Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� fdpic, Ð² Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ fdpic%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ %s Ð¸ %s Ð²Ð¼ÐµÑ�Ñ‚Ðµ%pB: Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ Ð² gp: BRSGP %s%pB: ÐºÐ»Ð°Ñ�Ñ� %d Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² aux%pB: ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ� %s -mtune=%s Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÑ‚Ñ�Ñ� Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� %s -mtune=%s%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� 64-Ð±Ð¸Ñ‚Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹, Ð° Ñ†ÐµÐ»ÑŒ 32-Ð±Ð¸Ñ‚Ð½Ð°Ñ�%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹ Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚, Ð° Ñ†ÐµÐ»ÑŒ Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹ Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚, Ð° Ñ†ÐµÐ»ÑŒ Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚%pB: Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ð¸ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mrelocatable%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ñ� %s Ð¸ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� %s%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ñ� %s Ð¸ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð½Ðµ-pic Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mrelocatable Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ�Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA Ð´Ð»Ñ� Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»
+%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² GOT%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %s%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¶Ð°Ñ‚Ñ‹Ðµ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Alpha; Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð½ÐµÑ�Ð¶Ð°Ñ‚Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ‚Ð¾Ñ€Ð° Ð¸Ð»Ð¸ objZ.%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð», Ñ�Ð²Ð»Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� fdpic, Ð² Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ð½Ðµ fdpic%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð», Ð½Ðµ Ñ�Ð²Ð»Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� fdpic, Ð² Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ fdpic%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ %s Ð¸ %s Ð²Ð¼ÐµÑ�Ñ‚Ðµ%pB: Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ Ð² gp: BRSGP %s%pB: ÐºÐ»Ð°Ñ�Ñ� %d Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² aux%pB: ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ� %s -mtune=%s Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÑ‚Ñ�Ñ� Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� %s -mtune=%s%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� 64-Ð±Ð¸Ñ‚Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹, Ð° Ñ†ÐµÐ»ÑŒ 32-Ð±Ð¸Ñ‚Ð½Ð°Ñ�%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹ Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚, Ð° Ñ†ÐµÐ»ÑŒ Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹ Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚, Ð° Ñ†ÐµÐ»ÑŒ Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚%pB: Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ð¸ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mrelocatable%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ñ� %s Ð¸ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� %s%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ñ� %s Ð¸ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð½Ðµ-pic Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mrelocatable Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ�Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA Ð´Ð»Ñ� Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»
 %pB: csect Â«%sÂ» Ð½Ðµ Ð² Ð¾Ð±Ñ€Ð°Ð¼Ð»Ñ�ÑŽÑ‰ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ%pB: Ð¿Ñ€Ñ�Ð¼Ð¾Ðµ GOT Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s c Â«%sÂ» Ð±ÐµÐ· Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿Ñ€Ñ�Ð¼Ð¾Ðµ GOT Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_386_GOT32X c Â«%sÂ» Ð±ÐµÐ· Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° LOCAL Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼ Ð¸Ð»Ð¸ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¼ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸ÐµÐ¼%pB: dtp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ñ‹Ð¹ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %s%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð´Ñ€ÑƒÐ³Ð¾Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ
 %pB: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€
 %pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚ Ð±ÐµÐ· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .loader%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Â«%pTÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»
 %pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»
-%pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸ÐµÐ¹%pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¿ÑƒÑ�Ñ‚Ð°%pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð² Ð²Ñ‹Ð²Ð¾Ð´Ðµ%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Cortex-A8 Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð° Ð² Ð½ÐµÐ±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð¼ Ð¼ÐµÑ�Ñ‚Ðµ%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Cortex-A8 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�ÐºÐ»ÐµÐ¹ÐºÐ° VFP11 Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÑ€Ð°Ñ‚Ð½Ð¾Ñ�Ñ‚ÑŒ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ� %d Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ°%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Â«%pAÂ»: %#llx%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÐ¾Ð½ÐµÑ† Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð·Ð° Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸ÐµÐ¼ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 835769 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 843419 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½Ð°Ð±Ð¾Ñ€ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¼Ð½Ð¾Ð¶ÐµÑ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»; Ð½Ð°Ñ‡Ð°Ð»Ð¾ %s ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð² Ñ€Ð°Ð½ÐµÐµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ %d Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¸/Ð¸Ð»Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: search_nds32_elf_blank Ñ�Ð¾Ð¾Ð±Ñ‰Ð°ÐµÑ‚ Ð¾ Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ð¼ ÑƒÐ·Ð»Ðµ%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ COMDAT%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ñ�Ñ‹Ð»Ð¾Ðº Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼ÑƒÑŽ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ…%pB: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ´ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸ÐµÐ¼ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ñ‹ Ð¾Ð±Ñ‰Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹%pB: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ ÐºÐ»Ð°Ñ�Ñ� %s Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� %s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ gotoff Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: gp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Ð³Ñ€ÑƒÐ¿Ð¿ Â«%pAÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾%pB: Ð½Ð° Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO%pB: Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½%pB: Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ»
+%pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸ÐµÐ¹%pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¿ÑƒÑ�Ñ‚Ð°%pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð² Ð²Ñ‹Ð²Ð¾Ð´Ðµ%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Cortex-A8 Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð° Ð² Ð½ÐµÐ±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð¼ Ð¼ÐµÑ�Ñ‚Ðµ%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Cortex-A8 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�ÐºÐ»ÐµÐ¹ÐºÐ° VFP11 Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÑ€Ð°Ñ‚Ð½Ð¾Ñ�Ñ‚ÑŒ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ� %d Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ°%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Â«%pAÂ»: %#llx%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÐ¾Ð½ÐµÑ† Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð·Ð° Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸ÐµÐ¼ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 835769 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 843419 Ð² 0x%%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 843419 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½Ð°Ð±Ð¾Ñ€ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¼Ð½Ð¾Ð¶ÐµÑ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»; Ð½Ð°Ñ‡Ð°Ð»Ð¾ %s ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð² Ñ€Ð°Ð½ÐµÐµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ %d Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¸/Ð¸Ð»Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: search_nds32_elf_blank Ñ�Ð¾Ð¾Ð±Ñ‰Ð°ÐµÑ‚ Ð¾ Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ð¼ ÑƒÐ·Ð»Ðµ%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ COMDAT%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ñ�Ñ‹Ð»Ð¾Ðº Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼ÑƒÑŽ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ…%pB: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ´ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸ÐµÐ¼ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ñ‹ Ð¾Ð±Ñ‰Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹%pB: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ ÐºÐ»Ð°Ñ�Ñ� %s Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� %s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ gotoff Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: gp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Ð³Ñ€ÑƒÐ¿Ð¿ Â«%pAÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾%pB: Ð½Ð° Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO%pB: Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½%pB: Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ»
 %pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ð¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %ld Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ñ…%pB: Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿; Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ 0x%x; Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ 0x%x%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ðº Â«%sÂ» Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚ Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ðµ%pB: Ð½Ð°Ð±Ð¾Ñ€ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñƒ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² ihex_read_section%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°, Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² %pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð´Ð°Ð½Ð½Ñ‹Ðµ
 %pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°, Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ñ�Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ� %d Ñ�Ð»Ð¾Ð² Ð´Ð¾ %d
 %pB: Ð½Ð° Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ SHT_GROUP [%u]%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸: Â«%sÂ»; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¼, Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ Ð¸Ð»Ð¸ Ñ�Ñ�Ñ‹Ð»Ð°Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Thumb%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° %u Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %s (Ð¸Ð½Ð´ÐµÐºÑ� %u)%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: YZ Ð² lop_end (%ld) Ð½Ðµ Ñ€Ð°Ð²Ð½Ð¾ Ñ‡Ð¸Ñ�Ð»Ñƒ Ñ‚ÐµÑ‚Ñ€Ð°Ð´ Ð² ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¹ Ñ€Ð°Ð½ÐµÐµ lop_stab (%ld)
@@ -1158,11 +1175,23 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 %pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: lop_end Ð½Ðµ Ð¿Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¸Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð² Ñ„Ð°Ð¹Ð»Ðµ
 %pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ lopcode Â«%dÂ»
 %pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ sh_link (%d) Ð² Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»; Ñ�Ñ‚Ð¾ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð»Ð¸ Ñ�Ð»Ð°Ð±Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»; Ñ�Ñ‚Ð¾ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð»Ð¸ Ñ�Ð»Ð°Ð±Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»
-%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½ÑƒÐ¼ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ñ�Ñ‚Ñ€Ð¾Ðº: 0x%lx > 0xffff%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð° Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ ÐºÐ¾Ð´Ð¾Ð¼%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼Ð¸ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: UltraSPARC-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ� HAL-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ñ‹Ð¼ ÐºÐ¾Ð´Ð¾Ð¼%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° auto-pic Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð½Ðµ-auto-pic Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚ Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° constant-gp Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð½Ðµ-constant-gp Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ� 16-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ†ÐµÐ»Ñ‹Ñ… (-mshort), Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð´Ð»Ñ� 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ†ÐµÐ»Ñ‹Ñ…%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ� 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… double (-fshort-double), Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð´Ð»Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… double%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ� HCS12, Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð´Ð»Ñ� HC12%pB: Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚ Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð½Ðµ-pic ÐºÐ¾Ð´Ð° Ð² Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¾-Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° trap-on-NULL-dereference Ñ� Ð½Ðµ-trapping Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ° Ð² Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%sÂ»%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð±ÑƒÐ´ÐµÑ‚ Ñ€Ð°Ð²Ð½Ð° NULL, ÐµÑ�Ð»Ð¸ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼%pB: Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ†ÐµÐ»ÑŒÑŽ%pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA%pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¹ XTY_LD Â«%sÂ»%pB: Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ðµ OMIT_FP Ð² %pA%pB: Ð½ÐµÑ‚ core Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� %d Ð±Ð°Ð¹Ñ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°%pB: Ð½ÐµÑ‚ core Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð¸Ð¼ÐµÐ½Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s%pB: Ð½ÐµÑ‚ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð³Ñ€ÑƒÐ¿Ð¿Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»%pB: Ð½ÐµÑ‚ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²; Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ€Ð°Ð²Ð½Ð° 0
-%pB: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð²ÐµÑ€Ñ�Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð´Ð»Ñ� Ð²ÐµÑ€Ñ�Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² Ð³Ñ€ÑƒÐ¿Ð¿%pB: Ð½Ðµ-pic ÐºÐ¾Ð´ Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ imm Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½Ðµ-pic Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð° Ð´Ð»Ñ� Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð² Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹, Ð¿Ð¾Ð¿Ñ‹Ñ‚Ð°Ð¹Ñ‚ÐµÑ�ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -N%pB: Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ñ‹ %%g[2367] Ð¼Ð¾Ð³ÑƒÑ‚ Ð¾Ð±ÑŠÑ�Ð²Ð»Ñ�Ñ‚ÑŒÑ�Ñ� Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ STT_REGISTER%pB: Ð½Ðµ Ñ…Ð²Ð°Ñ‚Ð°ÐµÑ‚ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð¸Ð¼ÐµÐ½Ð¸ Ð¿ÑƒÑ�Ñ‚Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð² _bfd_elf_get_property%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ (0x%x)%pB: pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° lto Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¼Ð¾Ð´ÑƒÐ»ÑŒ%pB: Ð²ÐµÑ€Ð¾Ñ�Ñ‚Ð½Ð¾, ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ†Ð¸Ñ� Ð±ÐµÐ· -fPIC?%pB: Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½%pB: Ñ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½, Ð½Ð¾ Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ (0x%x) Ð² Ð°Ñ€Ñ…Ð¸Ð²Ðµ Import Library Format%pB: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÑ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: %s Ð² %pA%pB: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÑ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾) Ð² %pA%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð½ÐµÑ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰ÐµÐ¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¸Ð½Ð´ÐµÐºÑ�Ñƒ: %ld%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð¸Ð· %s Ð² %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� %s%sÂ«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ %s%s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð²Ð¼ÐµÑ�Ñ‚Ðµ Ñ� STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ» Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� %s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ %s; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ x32%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ», ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ñ€Ð¸Ð²Ñ�Ð·Ð°Ð½ Ð¸Ð·Ð²Ð½Ðµ, Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_386_GOTOFF Ð´Ð»Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð¹ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_386_GOTOFF Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_X86_64_GOTOFF64 Ð´Ð»Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_X86_64_GOTOFF64 Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ð¾Ð¼ ELF (EM: %d)%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ», Ð½Ð¾ Ð¾Ð½ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾%pB: Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ñ‚Ñ€Ð¾Ðº Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %ld%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ %d%pB: Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² %u Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ sh_link [%d] Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»%pB: sh_link Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð¾Ñ‚Ð±Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð· Â«%pBÂ»%pB: sh_link Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð· Â«%pBÂ»%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿Ð¾Ð»Ñ� Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽ Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Import Library Format%pB: Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ€Ð°Ð·Ñ€ÐµÑˆÑ‘Ð½ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ ARMv8-M Ð¸ Ð½Ð¾Ð²ÐµÐµ%pB: Ð´Ð¾Ð³Ð°Ð´ÐºÐ° Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: ÑƒÐºÐ°Ð·Ð°Ð½ Ð¸ Ð·Ð°Ð´Ð°Ð½ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ° %s%pB: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ð½Ðµ Ð·Ð°ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð½ÑƒÐ»Ñ‘Ð¼ Ð² Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ ILF%pB: Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð°%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ csect: %d%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ smclas %d%pB: Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ð½Ð¾ Ð¾Ð½ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚%pB: Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸%pB: Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð² Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» (%s)%pB: Ñ†ÐµÐ»ÑŒ (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð² Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%pA)%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² (%d)%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²: %d (>= %d)%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²: %u%pB: tp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ„Ð¸ÐºÑ‚Ð¸Ð²Ð½Ñ‹Ð¹ Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[12], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$5%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[1], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$2%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[1], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$4%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[9], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ __tls_used%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$6%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$6%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ»%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¸Ð¼Ñ� Ð¿ÑƒÑ�Ñ‚Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ñ€Ð°Ñ�Ð¶Ð°Ñ‚Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ Ñ�Ð¶Ð°Ñ‚Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ Ñ€Ð°Ð·Ð¶Ð°Ñ‚Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ð¸Ð¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° COMDAT%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� â€” Ð¾Ð½Ð¸ Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð²%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� â€” Ð¾Ð½Ð¸ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .opd%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ R_PPC64_TOCSAVE%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ€Ñ�Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %u Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .opd%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� %s%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %s%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° ARC %d%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ» Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ [%pA]%pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ OMIT_FP Ð² %pA%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ (0x%x) Ð² Ð°Ñ€Ñ…Ð¸Ð²Ðµ Import Library Format%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¸Ð¼ÐµÐ½Ð½Ð¾Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %#x Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ ÐºÐ»Ð°Ñ�Ñ� Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� %d Ð´Ð»Ñ� %s, Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð½Ðµ PIC Ð²Ñ‹Ð·Ð¾Ð² IFUNC Â«%sÂ»%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#x%pB: Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x%pB: Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� : %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ Ð¸Ð· %s Ð² %s%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� Ð¿Ð¾Ñ�Ð»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñ�Ñ‚ÑŒ ÑˆÐ¸Ñ€Ð¾ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² 0x%02X 0x%02X Ð¿Ð¾Ñ�Ð»Ðµ Ð¸Ð¼ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ� Ñ� Â«%sÂ»
-%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ñ…Ð¾Ñ‚Ñ� Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð»Ð¸Ñ�ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ _, Ð½Ð¾ Ð² Ñ„Ð°Ð¹Ð» Ð·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð²%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð¿Ð¾Ð»Ñ� e_flags (%#x) Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‚Ñ�Ñ� Ð¾Ñ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ðµ Ð¿Ð¾Ð»Ñ� e_flags (%#x), Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð¾Ñ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸, Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ�Ð¼Ð¸, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð²ÑˆÐ¸Ð¼Ð¸Ñ�Ñ� Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð° _, Ð½Ð¾ Ð² Ñ„Ð°Ð¹Ð» Ð·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ _%pB: Ð²ÐµÑ€Ñ�Ð¸Ñ� ÑƒÐ·Ð»Ð° Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð°Ñ�ÑŒ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð» core ÑƒÑ�ÐµÑ‡Ñ‘Ð½%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#x > 0xffff%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� BLX %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ %s Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ñ€ÐµÐ¶Ð¸Ð¼Ðµ%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: 0x%lx > 0xffff%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² COMDAT Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� RVE PLT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð½Ðµ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° Â«%sÂ» (%u) Ð¼ÐµÐ½ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ ÐµÐ³Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´Ð°ÐµÑ‚Ñ�Ñ�, Ñ‡Ñ‚Ð¾ ÐµÑ�Ñ‚ÑŒ 0xffff Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹, Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð¾ Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ Ð´Ð»Ñ� Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %d Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %ld Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ñ…%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� 0x%lx Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ %d%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ elf %s Ð¸ %s%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ ASE Ð¼ÐµÐ¶Ð´Ñƒ e_flags Ð¸ .MIPS.abiflags%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ FP ABI Ð¼ÐµÐ¶Ð´Ñƒ .gnu.attributes Ð¸ .MIPS.abiflags%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ ISA Ð¼ÐµÐ¶Ð´Ñƒ e_flags Ð¸ .MIPS.abiflags%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ð¹ ISA Ð¼ÐµÐ¶Ð´Ñƒ e_flags Ð¸ .MIPS.abiflags%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: isymMax (%ld) Ð±Ð¾Ð»ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ ifdMax (%ld)%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð° Ñ�Ñ‚Ñ€Ð¾Ðº (%#lx) Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%#lx)%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñƒ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÑ‚Ñ�Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° PIC-Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð½Ðµ-PIC Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð² abicalls Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð½Ðµ-abicalls%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ðµ Ð² Ð·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ð¾Ñ�Ñ‚Ñ�Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿ÑƒÑ�Ñ‚Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %u%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿ÑƒÑ�Ñ‚Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %u%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ñ�Ñ‚Ð°Ñ€Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°, Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¼ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð²%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SDA_BASE%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¹ Ð¾Ð±Ñ…Ð¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ STM32L4XX Ð½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¹ Ð¾Ð±Ñ…Ð¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ VFP11 Ð½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð·Ð°Ð´Ð°Ð½ sh_link Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ� Ð´Ð»Ñ� mmo, Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ‡ÐµÐ¼ 65535 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²: %d. Ð‘ÑƒÐ´ÐµÑ‚ Ð²Ñ‹Ð´Ð°Ð½Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Â«MainÂ».
+%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ %lx (Ð¼Ð°ÐºÑ� %lx)%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½ÑƒÐ¼ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ñ�Ñ‚Ñ€Ð¾Ðº: 0x%lx > 0xffff%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð° Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ ÐºÐ¾Ð´Ð¾Ð¼%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼Ð¸ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: UltraSPARC-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ� HAL-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ñ‹Ð¼ ÐºÐ¾Ð´Ð¾Ð¼%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° auto-pic Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð½Ðµ-auto-pic Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚ Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° constant-gp Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð½Ðµ-constant-gp Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ� 16-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ†ÐµÐ»Ñ‹Ñ… (-mshort), Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð´Ð»Ñ� 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ†ÐµÐ»Ñ‹Ñ…%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ� 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… double (-fshort-double), Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð´Ð»Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… double%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ� HCS12, Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð´Ð»Ñ� HC12%pB: Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚ Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð½Ðµ-pic ÐºÐ¾Ð´Ð° Ð² Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¾-Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° trap-on-NULL-dereference Ñ� Ð½Ðµ-trapping Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ° Ð² Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%sÂ»%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð±ÑƒÐ´ÐµÑ‚ Ñ€Ð°Ð²Ð½Ð° NULL, ÐµÑ�Ð»Ð¸ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼%pB: Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ†ÐµÐ»ÑŒÑŽ%pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA%pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¹ XTY_LD Â«%sÂ»%pB: Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ðµ OMIT_FP Ð² %pA%pB: Ð½ÐµÑ‚ core Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� %d Ð±Ð°Ð¹Ñ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°%pB: Ð½ÐµÑ‚ core Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð¸Ð¼ÐµÐ½Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s%pB: Ð½ÐµÑ‚ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð³Ñ€ÑƒÐ¿Ð¿Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»%pB: Ð½ÐµÑ‚ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²; Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ€Ð°Ð²Ð½Ð° 0
+%pB: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð²ÐµÑ€Ñ�Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð´Ð»Ñ� Ð²ÐµÑ€Ñ�Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² Ð³Ñ€ÑƒÐ¿Ð¿%pB: Ð½Ðµ-pic ÐºÐ¾Ð´ Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ imm Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½Ðµ-pic Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð° Ð´Ð»Ñ� Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð² Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹, Ð¿Ð¾Ð¿Ñ‹Ñ‚Ð°Ð¹Ñ‚ÐµÑ�ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -N%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð²ÐµÑ€Ñ�Ð¸Ð¸%pB: Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ñ‹ %%g[2367] Ð¼Ð¾Ð³ÑƒÑ‚ Ð¾Ð±ÑŠÑ�Ð²Ð»Ñ�Ñ‚ÑŒÑ�Ñ� Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ STT_REGISTER%pB: Ð½Ðµ Ñ…Ð²Ð°Ñ‚Ð°ÐµÑ‚ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð¸Ð¼ÐµÐ½Ð¸ Ð¿ÑƒÑ�Ñ‚Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð² _bfd_elf_get_property%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ (0x%x)%pB: pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° lto Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¼Ð¾Ð´ÑƒÐ»ÑŒ%pB: Ð²ÐµÑ€Ð¾Ñ�Ñ‚Ð½Ð¾, ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ†Ð¸Ñ� Ð±ÐµÐ· -fPIC?%pB: Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½%pB: Ñ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½, Ð½Ð¾ Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ (0x%x) Ð² Ð°Ñ€Ñ…Ð¸Ð²Ðµ Import Library Format%pB: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÑ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: %s Ð² %pA%pB: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÑ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾) Ð² %pA%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð½ÐµÑ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰ÐµÐ¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¸Ð½Ð´ÐµÐºÑ�Ñƒ: %ld%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð¸Ð· %s Ð² %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� %s%sÂ«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ %s%s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð²Ð¼ÐµÑ�Ñ‚Ðµ Ñ� STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ» Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� %s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ %s; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ x32%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ», ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ñ€Ð¸Ð²Ñ�Ð·Ð°Ð½ Ð¸Ð·Ð²Ð½Ðµ, Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_386_GOTOFF Ð´Ð»Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð¹ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_386_GOTOFF Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_X86_64_GOTOFF64 Ð´Ð»Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_X86_64_GOTOFF64 Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ð¾Ð¼ ELF (EM: %d)%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ», Ð½Ð¾ Ð¾Ð½ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾%pB: Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ñ‚Ñ€Ð¾Ðº Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %ld%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pA:Â» Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ VTENTRY%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ %d%pB: Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² %u Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ sh_link [%d] Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»%pB: sh_link Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð¾Ñ‚Ð±Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð· Â«%pBÂ»%pB: sh_link Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð· Â«%pBÂ»%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿Ð¾Ð»Ñ� Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽ Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Import Library Format%pB: Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ€Ð°Ð·Ñ€ÐµÑˆÑ‘Ð½ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ ARMv8-M Ð¸ Ð½Ð¾Ð²ÐµÐµ%pB: Ð´Ð¾Ð³Ð°Ð´ÐºÐ° Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: ÑƒÐºÐ°Ð·Ð°Ð½ Ð¸ Ð·Ð°Ð´Ð°Ð½ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ° %s%pB: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ð½Ðµ Ð·Ð°ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð½ÑƒÐ»Ñ‘Ð¼ Ð² Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ ILF%pB: Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð°%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ csect: %d%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ smclas %d%pB: Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ð½Ð¾ Ð¾Ð½ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹ (Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�)%pB: Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸%pB: Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð² Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» (%s)%pB: Ñ†ÐµÐ»ÑŒ (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð² Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%pA)%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² (%d)%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²: %d (>= %d)%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²: %u%pB: tp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ„Ð¸ÐºÑ‚Ð¸Ð²Ð½Ñ‹Ð¹ Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[12], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$5%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[1], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$2%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[1], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$4%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[9], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ __tls_used%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$6%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$6%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ»%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¸Ð¼Ñ� Ð¿ÑƒÑ�Ñ‚Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ñ€Ð°Ñ�Ð¶Ð°Ñ‚Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ Ñ�Ð¶Ð°Ñ‚Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ Ñ€Ð°Ð·Ð¶Ð°Ñ‚Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ð¸Ð¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° COMDAT%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� â€” Ð¾Ð½Ð¸ Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð²%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� â€” Ð¾Ð½Ð¸ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .opd%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ R_PPC64_TOCSAVE%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ€Ñ�Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %u Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .opd%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� %s%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x%pB: Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ sparc Â«%luÂ»%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %s%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° ARC %d%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ» Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ [%pA]%pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ OMIT_FP Ð² %pA%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ (0x%x) Ð² Ð°Ñ€Ñ…Ð¸Ð²Ðµ Import Library Format%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¸Ð¼ÐµÐ½Ð½Ð¾Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %#x Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ ÐºÐ»Ð°Ñ�Ñ� Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� %d Ð´Ð»Ñ� %s, Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� AOUT: %d%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ðµ bfd %#lx%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� Ð¼Ð°ÑˆÐ¸Ð½Ð° %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð½Ðµ PIC Ð²Ñ‹Ð·Ð¾Ð² IFUNC Â«%sÂ»%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#x%pB: Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x%pB: Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� : %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ Ð¸Ð· %s Ð² %s%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� Ð¿Ð¾Ñ�Ð»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñ�Ñ‚ÑŒ ÑˆÐ¸Ñ€Ð¾ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² 0x%02X 0x%02X Ð¿Ð¾Ñ�Ð»Ðµ Ð¸Ð¼ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ� Ñ� Â«%sÂ»
+%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ñ…Ð¾Ñ‚Ñ� Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð»Ð¸Ñ�ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ _, Ð½Ð¾ Ð² Ñ„Ð°Ð¹Ð» Ð·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð²%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð¿Ð¾Ð»Ñ� e_flags (%#x) Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‚Ñ�Ñ� Ð¾Ñ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ðµ Ð¿Ð¾Ð»Ñ� e_flags (%#x), Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð¾Ñ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸, Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ�Ð¼Ð¸, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð²ÑˆÐ¸Ð¼Ð¸Ñ�Ñ� Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð° _, Ð½Ð¾ Ð² Ñ„Ð°Ð¹Ð» Ð·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ _%pB: Ð²ÐµÑ€Ñ�Ð¸Ñ� ÑƒÐ·Ð»Ð° Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð°Ñ�ÑŒ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð» core ÑƒÑ�ÐµÑ‡Ñ‘Ð½%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#x > 0xffff%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� BLX %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ %s Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ñ€ÐµÐ¶Ð¸Ð¼Ðµ%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: 0x%lx > 0xffff%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: BTI Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -z force-bti, Ð½Ð¾ Ð²Ñ�Ðµ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð½Ðµ Ð¸Ð¼ÐµÑŽÑ‚ BTI Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ NOTE.%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² COMDAT Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� RVE PLT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð»Ð°Ð±Ñ‹Ð¹ TLS Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�ÐµÑ‚Ñ�Ñ� Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸ÐµÐ¹ Ð¸ Ð¼Ð¾Ð¶ÐµÑ‚ Ð½Ðµ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ ÐºÐ°Ðº Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð½Ðµ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° Â«%sÂ» (%u) Ð¼ÐµÐ½ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ ÐµÐ³Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´Ð°ÐµÑ‚Ñ�Ñ�, Ñ‡Ñ‚Ð¾ ÐµÑ�Ñ‚ÑŒ 0xffff Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹, Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð¾ Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ Ð´Ð»Ñ� Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %d Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %ld Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ñ…%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� 0x%lx Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ %d%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ elf %s Ð¸ %s%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ ASE Ð¼ÐµÐ¶Ð´Ñƒ e_flags Ð¸ .MIPS.abiflags%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ FP ABI Ð¼ÐµÐ¶Ð´Ñƒ .gnu.attributes Ð¸ .MIPS.abiflags%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ ISA Ð¼ÐµÐ¶Ð´Ñƒ e_flags Ð¸ .MIPS.abiflags%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ð¹ ISA Ð¼ÐµÐ¶Ð´Ñƒ e_flags Ð¸ .MIPS.abiflags%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: isymMax (%ld) Ð±Ð¾Ð»ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ ifdMax (%ld)%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð° Ñ�Ñ‚Ñ€Ð¾Ðº (%#lx) Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%#lx)%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñƒ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÑ‚Ñ�Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° PIC-Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð½Ðµ-PIC Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð² abicalls Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð½Ðµ-abicalls%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ðµ Ð² Ð·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ð¾Ñ�Ñ‚Ñ�Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿ÑƒÑ�Ñ‚Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %u%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿ÑƒÑ�Ñ‚Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %u%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ñ�Ñ‚Ð°Ñ€Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°, Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¼ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð²%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SDA_BASE%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¹ Ð¾Ð±Ñ…Ð¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ STM32L4XX Ð½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¹ Ð¾Ð±Ñ…Ð¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ VFP11 Ð½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð·Ð°Ð´Ð°Ð½ sh_link Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ� Ð´Ð»Ñ� mmo, Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ‡ÐµÐ¼ 65535 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²: %d. Ð‘ÑƒÐ´ÐµÑ‚ Ð²Ñ‹Ð´Ð°Ð½Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Â«MainÂ».
 %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� PLT Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ thumb-1 Ð¿Ð¾ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ GOT%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ Ð² Ð¿Ð¾Ð»Ðµ flags2 Ñƒ .MIPS.abiflags (0x%lx)%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ� Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚ Ñ€ÐµÑˆÐµÐ½Ð¾%pB:%d: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ� Ñ�ÑƒÐ¼Ð¼Ð° Ð² Ñ„Ð°Ð¹Ð»Ðµ S-record%pB:%d: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð±Ð°Ð¹Ñ‚ %d Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»%pB:%d: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ%pB:%d: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ„Ð°Ð¹Ð»Ðµ S-record%pB:%pA%s Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�
-%pB:%pA: %s Ð¸ %s Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð¾Ð´Ð½Ð¾Ð¼ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð±Ñ‹Ð» ÑƒÐ´Ð°Ð»Ñ‘Ð½ Ñ�Ð±Ð¾Ñ€Ñ‰Ð¸ÐºÐ¾Ð¼ Ð¼ÑƒÑ�Ð¾Ñ€Ð°%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ --gc-keep-exported%pB:%pA: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° %s, Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‰Ð°Ñ� %s%pB:%pA: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ %s Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½ Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð°%pB:%pA: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ %s Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹%pB:%pA: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ²ÑˆÐµÐµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Red Hat %s Ð´Ð»Ñ�: %s%pB:%s Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� TLS%pB:%s Ñ€Ð°Ð·Ð´ÐµÐ» %s: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ 2**%u Ð½Ðµ Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ð¾%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ� Ñ�ÑƒÐ¼Ð¼Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ (Ð´Ð¾Ð»Ð¶Ð½Ð° Ð±Ñ‹Ñ‚ÑŒ %u, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð° %u)%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ñ�Ð¼Ð¾Ð»Ð¸Ð½ÐµÐ¹Ð½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ñ�Ð¼Ð¾Ð»Ð¸Ð½ÐµÐ¹Ð½Ð¾Ð³Ð¾ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ%pB:%u: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ ihex-Ñ‚Ð¸Ð¿ %u Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ%s Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½ Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð¼ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ toc%s Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÐµÑ‚Ñ�Ñ�
+%pB:%pA: %s Ð¸ %s Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð¾Ð´Ð½Ð¾Ð¼ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð² Ð½ÐµÐ²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¹ Ñ�Ð¶Ð°Ñ‚Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ñ€Ð°Ð·Ð´ÐµÐ»Ð°%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ð±ÑƒÑ„ÐµÑ€%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð±Ñ‹Ð» ÑƒÐ´Ð°Ð»Ñ‘Ð½ Ñ�Ð±Ð¾Ñ€Ñ‰Ð¸ÐºÐ¾Ð¼ Ð¼ÑƒÑ�Ð¾Ñ€Ð°%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ --gc-keep-exported%pB:%pA: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° %s, Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‰Ð°Ñ� %s%pB:%pA: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ %s Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½ Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð°%pB:%pA: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ %s Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹%pB:%pA: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ²ÑˆÐµÐµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Red Hat %s Ð´Ð»Ñ�: %s%pB:%s Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� TLS%pB:%s Ñ€Ð°Ð·Ð´ÐµÐ» %s: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ 2**%u Ð½Ðµ Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ð¾%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ� Ñ�ÑƒÐ¼Ð¼Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ (Ð´Ð¾Ð»Ð¶Ð½Ð° Ð±Ñ‹Ñ‚ÑŒ %u, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð° %u)%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ñ�Ð¼Ð¾Ð»Ð¸Ð½ÐµÐ¹Ð½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ñ�Ð¼Ð¾Ð»Ð¸Ð½ÐµÐ¹Ð½Ð¾Ð³Ð¾ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ%pB:%u: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ ihex-Ñ‚Ð¸Ð¿ %u Ð² Intel Hex Ñ„Ð°Ð¹Ð»ÐµÑ�Ð¸Ð¼Ð²Ð¾Ð» Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pcrel_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼%s  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ                          %lu
+  Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� toc            %lu
+  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ðµ toc                     %lu
+  Ð¾Ð±Ð° Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�                        %lu
+  Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ                    %lu
+  Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð»Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� toc   %lu
+  Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ðµ toc             %lu
+  Ð¾Ð±Ð° Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�                %lu
+  plt-Ð²Ñ‹Ð·Ð¾Ð²                            %lu
+  Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ‘Ð½Ð½Ñ‹Ð¹ plt-Ð²Ñ‹Ð·Ð¾Ð²                %lu
+  plt-Ð²Ñ‹Ð·Ð¾Ð² Ð½Ðµ toc                     %lu
+  Ð¾Ð±Ð° plt-Ð²Ñ‹Ð·Ð¾Ð²Ð°                       %lu
+  Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚                   %lu%s Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½ Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð¼ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ toc%s Ð´ÐµÐ»Ð¸Ñ‚Ñ�Ñ� Ð½Ð° Ð½Ð¾Ð»ÑŒ%s Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÐµÑ‚Ñ�Ñ�
 %s Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÐµÑ‚Ñ�Ñ� Ð² %s
 %s Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� TLS%s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐµÐ²%s Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¾ Ð² ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐµ, Ñ�Ð¾Ð·Ð´Ð°Ð½Ð½Ð¾Ð¼ %pA%s Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð¾Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐµ Ð´Ð»Ñ� ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� sdata4 Ð² .eh_frame%s: TLS-Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ðµ-TLS Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%s: TLS-Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ðµ-TLS Ñ�Ñ�Ñ‹Ð»ÐºÐ¾Ð¹ Ð² %pB%s: TLS-Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð² %pB Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ðµ-TLS Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%s: TLS-Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð² %pB Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ðµ-TLS Ñ�Ñ�Ñ‹Ð»ÐºÐ¾Ð¹ Ð² %pB%s: Ð½ÐµÑ‚ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°%s: Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð¾%s: Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%s: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ�: %s(Ð¿Ð¾ Ð±Ð¸Ñ‚Ð¾Ð²Ð¾Ð¼Ñƒ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %u)
 (Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€)
@@ -1178,8 +1207,8 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 *Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾**Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾*        , Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: %#08lx
 , Ð¿Ñ�ÐµÐ²Ð´Ð¾Ð½Ð¸Ð¼: %u
 , ext fixup offset: %u, no_opt psect off: %u, Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿: %u (%s)
-, Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð²ÐµÐºÑ‚Ð¾Ñ€ rva: - %pB Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼, Ð° %pB Ð½ÐµÑ‚-mips32r2 -mfp64 (12 Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ�ÑŽÑ‚Ñ�Ñ� Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÐ¼Ñ‹Ð¼)Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° .eh_frame_hdr.eh_frame_hdr Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð¿ÐµÑ€ÐµÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð¸ÐµÑ�Ñ� FDEÑ€Ð°Ð·Ð´ÐµÐ» .got Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ñ�Ñ‚Ð¾Ñ�Ñ‚ÑŒ Ñ�Ñ€Ð°Ð·Ñƒ Ð¿Ð¾Ñ�Ð»Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .pltÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð»Ð¸Ñ�Ñ‚Ð¾Ð¼Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð²ÐµÑ€Ñ�Ð¸Ð¸ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð² Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‚Ñ�Ñ�Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¸ Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ð¼ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ°Ð¼Ð¸Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ð»Ð¸Ñ�Ñ‚Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ð»Ð¸Ñ�Ñ‚: %sÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð°: %dÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð°Ð½Ð¸Ñ„ÐµÑ�Ñ‚Ð¾Ð² Ð½Ðµ Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ32-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ double, Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ 32â€”Ð±Ð¸Ñ‚Ð½Ð¾Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ðµ64 Ð±Ð¸Ñ‚Ð° *Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð¾*
-64-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ double, 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ðµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32r: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32r2: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32rx: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ n1: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ n1h; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIC<Ð�ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð½Ð°Ð±Ð¾Ñ€ Ð±Ð¸Ñ‚Ð¾Ð² Ñ„Ð»Ð°Ð³Ð°><Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð¾ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð¸> %s<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ð´Ð»Ð¸Ð½Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#x>
+, Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð²ÐµÐºÑ‚Ð¾Ñ€ rva: - %pB Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼, Ð° %pB Ð½ÐµÑ‚-march=%s: %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Ð½Ðµ Ð² Ð°Ð»Ñ„Ð°Ð²Ð¸Ñ‚Ð½Ð¾Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐµ: Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ð´Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÐ´ Â«%sÂ».-march=%s: %s Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¾Ñ‚Ð´ÐµÐ»Ñ�Ñ‚ÑŒÑ�Ñ� _-march=%s: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� %s ISA: Â«%sÂ»-march=%s: Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ñ‡Ð¸Ñ�Ð»Ð¾ Ð¿Ð¾Ñ�Ð»Ðµ Â«%dpÂ».-march=%s: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð½Ðµ Ð² ÐºÐ°Ð½Ð¾Ð½Ð¸Ñ‡Ð½Ð¾Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐµ. Â«%cÂ»-march=%s: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð´Ð¾Ð»Ð¶Ð½Ð° Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ‚ÑŒÑ�Ñ� Ñ� rv32 Ð¸Ð»Ð¸ rv64-march=%s: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¸Ð»Ð¸ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA %s: Â«%sÂ»-march=%s: Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÑŽ Â«dÂ» Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«fÂ»-march=%s: Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÑŽ Â«qÂ» Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«dÂ»-march=%s: Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ð¿Ð¾Ð´Ð½Ð°Ð±Ð¾Ñ€ ISA Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Â«eÂ», Â«iÂ» Ð¸Ð»Ð¸ Â«gÂ»-march=%s: rv%de Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð±Ð°Ð·Ð° ISA-march=%s: rv32 Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«qÂ»-march=%s: rv32e Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«fÂ»-march=%s: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð² ÐºÐ¾Ð½Ñ†Ðµ: %s-march=%s: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð¿Ð¾Ð´Ð½Ð°Ð±Ð¾Ñ€ ISA Â«%cÂ»-mips32r2 -mfp64 (12 Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ�ÑŽÑ‚Ñ�Ñ� Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÐ¼Ñ‹Ð¼)Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° .eh_frame_hdr.eh_frame_hdr Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð¿ÐµÑ€ÐµÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð¸ÐµÑ�Ñ� FDEÑ€Ð°Ð·Ð´ÐµÐ» .got Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ñ�Ñ‚Ð¾Ñ�Ñ‚ÑŒ Ñ�Ñ€Ð°Ð·Ñƒ Ð¿Ð¾Ñ�Ð»Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .pltÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð»Ð¸Ñ�Ñ‚Ð¾Ð¼Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð²ÐµÑ€Ñ�Ð¸Ð¸ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð² Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‚Ñ�Ñ�Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¸ Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ð¼ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ°Ð¼Ð¸Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ð»Ð¸Ñ�Ñ‚Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ð»Ð¸Ñ�Ñ‚: %sÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð°: %dÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð°Ð½Ð¸Ñ„ÐµÑ�Ñ‚Ð¾Ð² Ð½Ðµ Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ32-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ double, Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ 32â€”Ð±Ð¸Ñ‚Ð½Ð¾Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ðµ64 Ð±Ð¸Ñ‚Ð° *Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð¾*
+64-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ double, 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ðµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32r: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32r2: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32rx: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ n1: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ n1h; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIC; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIE<Ð�ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð½Ð°Ð±Ð¾Ñ€ Ð±Ð¸Ñ‚Ð¾Ð² Ñ„Ð»Ð°Ð³Ð°><Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð¾ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð¸> %s<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ð´Ð»Ð¸Ð½Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#x>
 <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#lx>
 <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾><Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°: %d>
 <Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ„Ð»Ð°Ð³Ð¸ Ð¼Ð°Ñ�ÐºÐ¸><Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾>Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @pltoff Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°BASE_IMAGE       ÐžÐ¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ� BFD %s Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶Ð¸Ð» Ð¾ÑˆÐ¸Ð±ÐºÑƒ %s:%dÐ’Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð² Ð½Ð° %s:%d
@@ -1192,7 +1221,7 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 CTL_STLOC (Ð·Ð°Ð´Ð°Ð½Ð¸Ðµ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ�)
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÐºÐ¾Ð³Ð¾ Ð¿Ñ€Ð°Ð²Ð°
 ÐžÐ±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» .rsrc!
-Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñ�Ñ‚Ñ€Ð¾ÐºÐµ Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ DSOÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð²Ñ�Ñ‚Ñ€ÐµÑ‡ÐµÐ½ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ DW_AT_comp_dir Ð² Ð½Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¾Ð²Ð¾Ð¼ Ð²Ð¸Ð´ÐµÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ñ€ÐµÐºÑƒÑ€Ñ�Ð¸Ñ� Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ ÑƒÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %uÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð°Ð´Ñ€ÐµÑ�Ð° Â«%uÂ», Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Ð½Ðµ ÑƒÐ¼ÐµÐµÑ‚ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ð±Ð¾Ð»ÐµÐµ Ñ‡ÐµÐ¼ Â«%uÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð²ÐµÑ€Ñ�Ð¸Ñ� dwarf Â«%uÂ», Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ‚ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð²ÐµÑ€Ñ�Ð¸Ð¸ 2, 3, 4 Ð¸ 5Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð²Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ñ‹Ð¹ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ DIEÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ðµ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ FORM: %#xÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ %u Ñ�ÐµÐ»ÐµÐºÑ‚Ð¾Ñ€Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° Ð² Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ…Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº (Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð°)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¾Ñ�ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð¿Ñ€Ð¸ Ñ‡Ñ‚ÐµÐ½Ð¸Ð¸ ÐºÐ¾Ð´Ð¾Ð² Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¾Ñ�ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð¿Ñ€Ð¸ Ñ‡Ñ‚ÐµÐ½Ð¸Ð¸ Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %d Ð² .debug_lineÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽDW_EH_PE_datarel Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð° Ð´Ð»Ñ� Ñ�Ñ‚Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹:
+Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñ�Ñ‚Ñ€Ð¾ÐºÐµ Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ DSOÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð²Ñ�Ñ‚Ñ€ÐµÑ‡ÐµÐ½ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ DW_AT_comp_dir Ð² Ð½Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¾Ð²Ð¾Ð¼ Ð²Ð¸Ð´ÐµÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ñ€ÐµÐºÑƒÑ€Ñ�Ð¸Ñ� Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ ÑƒÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %uÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð´Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %lxÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð°Ð´Ñ€ÐµÑ�Ð° Â«%uÂ», Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Ð½Ðµ ÑƒÐ¼ÐµÐµÑ‚ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ð±Ð¾Ð»ÐµÐµ Ñ‡ÐµÐ¼ Â«%uÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð²ÐµÑ€Ñ�Ð¸Ñ� dwarf Â«%uÂ», Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ‚ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð²ÐµÑ€Ñ�Ð¸Ð¸ 2, 3, 4 Ð¸ 5Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð²Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ñ‹Ð¹ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ DIEÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ðµ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ FORM: %#xÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ %u Ñ�ÐµÐ»ÐµÐºÑ‚Ð¾Ñ€Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° Ð² Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ…Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº (Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð°)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¾Ñ�ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð¿Ñ€Ð¸ Ñ‡Ñ‚ÐµÐ½Ð¸Ð¸ ÐºÐ¾Ð´Ð¾Ð² Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¾Ñ�ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð¿Ñ€Ð¸ Ñ‡Ñ‚ÐµÐ½Ð¸Ð¸ Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %d Ð² .debug_lineÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽDW_EH_PE_datarel Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð° Ð´Ð»Ñ� Ñ�Ñ‚Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹:
 Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸:
 ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ñ‚Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°Ð’Ñ‹Ð·Ð²Ð°Ð½ Ð½ÐµÑ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ñ‹Ð¹ %s
 Ð’Ñ‹Ð·Ð²Ð°Ð½ Ð½ÐµÑ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ñ‹Ð¹ %s Ñ€Ñ�Ð´Ð¾Ð¼ Ñ� %s Ð² Ñ�Ñ‚Ñ€Ð¾ÐºÐµ %d Ð² %s
@@ -1200,7 +1229,7 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 Ð�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ  = 0x%.8lx (%ld)
 Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ Ð¸ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ²ÑˆÐ¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Tag_MPextension_useÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¸Ñ�ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ [.pdata]ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° [.edata (Ð¸Ð»Ð¸ Ð³Ð´Ðµ Ð¾Ð½ Ð½Ð°ÑˆÑ‘Ð»Ñ�Ñ�)]Ð¤Ð»Ð°Ð³Ð¸ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° 			%lx
 Ð­ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ RVAÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ FDE Ð² %pB(%pA) Ð½Ðµ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ�ÐµÑ‚ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ .eh_frame_hdrFDPIC Ð¿Ð¾ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %s Ð´Ð»Ñ� Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð²FILES_VOLUMES    FPU-2.0FPU-3.0ÐŸÐ¾Ð»Ðµ Ñ„Ð»Ð°Ð³Ð¾Ð²         = 0x%.2x
-ÐŸÐµÑ€ÐµÐ°Ð´Ñ€ÐµÑ�ÑƒÐµÐ¼Ñ‹Ð¹ RVAGALAXY           Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� GOT Ð¸ PLT Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� Ð½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ¾Ð¼Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ GOT Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¾ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GP, Ð½Ð¾ GP Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°ÐžÑ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GP, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°Ð�Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ñ‹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ldah Ð¸ lda Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� GPDISPÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²:
+ÐŸÐµÑ€ÐµÐ°Ð´Ñ€ÐµÑ�ÑƒÐµÐ¼Ñ‹Ð¹ RVAGALAXY           Ñ€Ð°Ð·Ð´ÐµÐ» GNU_MBIND Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� GOT Ð¸ PLT Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� Ð½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ¾Ð¼Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ GOT Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¾ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GP, Ð½Ð¾ GP Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°ÐžÑ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GP, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°Ð�Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ñ‹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ldah Ð¸ lda Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� GPDISPÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²:
 Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¦ÐŸ, 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ FPU)
 Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¦ÐŸ, Ð»ÑŽÐ±Ð¾Ð¹ FPU)
 Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (MIPS32r2 64-bit FPU 12 Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ�ÑŽÑ‚Ñ�Ñ� Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÐ¼Ñ‹Ð¼)
@@ -1208,8 +1237,8 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð°Ñ� Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚ÑŒ)
 Ð¡Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¦ÐŸ, 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ FPU)
 Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¸Ð»Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ�
-ID: %#08lxIDC - Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ° Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° Ñ†ÐµÐ»Ð¾Ñ�Ñ‚Ð½Ð¾Ñ�Ñ‚Ð¸
-IMAGE_ACTIVATOR  INPUT_SECTION_FLAGS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�IO               Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°:  (Ñ€Ð°Ð·Ð¼ÐµÑ€=%u)
+Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð° IBT Ð¸ SHSTKÐ¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ IBTID: %#08lxIDC - Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ° Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° Ñ†ÐµÐ»Ð¾Ñ�Ñ‚Ð½Ð¾Ñ�Ñ‚Ð¸
+Ð¡Ð¸Ð¼Ð²Ð¾Ð» IFUNC %s Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” IFUNCS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�IMAGE_ACTIVATOR  INPUT_SECTION_FLAGS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�IO               Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°:  (Ñ€Ð°Ð·Ð¼ÐµÑ€=%u)
 Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ‚Ð¾Ñ€ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u)
 Ð˜Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u)
 Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u, Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: %u)
@@ -1252,7 +1281,7 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB (Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾) Ð¸ %pB (0x%v)
 Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB Ð¸ %pB
 Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB Ð¸ %pB (Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)
-Ð—Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð¾Ð² [.rsrc]Ð�Ð´Ñ€ÐµÑ� S12 (%lx) Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð¾Ð±Ñ‰ÐµÐ¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð¹ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ (0x2000-0x4000), Ð¿Ð¾Ñ�Ñ‚Ð¾Ð¼Ñƒ Ð²Ñ‹ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÐºÐ¾Ð´ÐµÐ¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SDA, Ð½Ð¾ _SDA_BASE_ Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°SECURITY         SEC_RELOC Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pASHELL            SHRFXDSHRPICÐ˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ SIMD: SPSC â€” Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ð°
+Ð—Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð¾Ð² [.rsrc]Ð�Ð´Ñ€ÐµÑ� S12 (%lx) Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð¾Ð±Ñ‰ÐµÐ¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð¹ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ (0x2000-0x4000), Ð¿Ð¾Ñ�Ñ‚Ð¾Ð¼Ñƒ Ð²Ñ‹ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÐºÐ¾Ð´ÐµÐ¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SDA, Ð½Ð¾ _SDA_BASE_ Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°SECURITY         SEC_RELOC Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pASHELL            SHRFXDSHRPICÐ¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ SHSTKÐ˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ SIMD: SPSC â€” Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ð°
 STABLE           STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹ Ñ�Ñ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ�)
 STA_GBL (Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ñ‚ÐµÐº) %.*s
 STA_LI (Ñ�Ñ‚ÐµÐº Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»Ð°)
@@ -1312,11 +1341,11 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s (%ld) Ð¼ÐµÐ½ÑŒÑˆÐµ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° (%ld)
 ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽ
 Ð—Ð°Ð¿Ð¸Ñ�ÑŒ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñ‘Ð½Ð½Ð¾Ð¹ Ð¼ÐµÑ‚ÐºÐ¸ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ armapÐ�Ð´Ñ€ÐµÑ� XGATE (%lx) Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð¾Ð±Ñ‰ÐµÐ¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð¹ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ (0xE000-0xFFFF), Ð¿Ð¾Ñ�Ñ‚Ð¾Ð¼Ñƒ Ð²Ñ‹ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ�Ñ‚ÑŒ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†ÐµÐ¹ Ð² ÐºÐ¾Ð´Ðµ.[%u]: Ð½Ð¸Ð¶Ð½Ñ�Ñ�: %u, Ð²ÐµÑ€Ñ…Ð½Ñ�Ñ�: %u
-[abi=16-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ int, [abi=32-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ int, [Ñ‡ÑŒÑ‘ Ð¸Ð¼Ñ� Ð¿Ð¾Ñ‚ÐµÑ€Ñ�Ð½Ð¾]Ð’Ñ‹Ð·Ð¾Ð² _bfd_vms_output_counted Ñ�Ð¾ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾Ð¼ Ð±Ð°Ð¹Ñ‚Ð’Ñ‹Ð·Ð¾Ð² _bfd_vms_output_counted Ñ� Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾Ð¼ Ð±Ð°Ð¹Ñ‚Â«%sÂ» Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½Ðµ Ð¿ÑƒÑ�Ñ‚ÑƒÑŽ Ð²Ñ…Ð¾Ð´Ð½ÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽÐ¾Ð±ÑŠÐµÐºÑ‚ PDEÐ¾Ð±ÑŠÐµÐºÑ‚ PIEÐ¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð´Ñ€ÐµÑ�Ð°Ð´Ñ€ÐµÑ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð°Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ñ‹Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ ÐºÐ¾Ð´ ELF (%d) Ð² %pB, Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� %dÐ°Ñ€Ñ…Ð¸Ð² Ð±ÐµÐ· Ð¸Ð½Ð´ÐµÐºÑ�Ð°; Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ðµ ranlib Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ�Ð°Ñ€Ñ…Ð¸Ð²Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ð² Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÐµÐ¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÑŒ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð°:
+[abi=16-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ int, [abi=32-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ int, [Ñ‡ÑŒÑ‘ Ð¸Ð¼Ñ� Ð¿Ð¾Ñ‚ÐµÑ€Ñ�Ð½Ð¾]__tls_get_addr Ð²Ñ‹Ð·Ð²Ð°Ð»Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð’Ñ‹Ð·Ð¾Ð² _bfd_vms_output_counted Ñ�Ð¾ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾Ð¼ Ð±Ð°Ð¹Ñ‚Ð’Ñ‹Ð·Ð¾Ð² _bfd_vms_output_counted Ñ� Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾Ð¼ Ð±Ð°Ð¹Ñ‚Â«%sÂ» Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½Ðµ Ð¿ÑƒÑ�Ñ‚ÑƒÑŽ Ð²Ñ…Ð¾Ð´Ð½ÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽÐ¾Ð±ÑŠÐµÐºÑ‚ PDEÐ¾Ð±ÑŠÐµÐºÑ‚ PIEÐ¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð´Ñ€ÐµÑ�Ð°Ð´Ñ€ÐµÑ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð°Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ñ‹Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ ÐºÐ¾Ð´ ELF (%d) Ð² %pB, Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� %dÐ°Ñ€Ñ…Ð¸Ð² Ð±ÐµÐ· Ð¸Ð½Ð´ÐµÐºÑ�Ð°; Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ðµ ranlib Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ�Ð°Ñ€Ñ…Ð¸Ð²Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ð² Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÐµÐ¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÑŒ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð°:
 Ð¼Ð°Ñ�Ñ�Ð¸Ð², Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, bitmap: arsize: %u, a0: 0x%08x
 Ð°Ñ‚Ð¾Ð¼Ð°Ñ€Ð½Ð¾, Ñ‚Ð¸Ð¿=0x%02x %s
 Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ� L32R/CALLX Ð² CALL Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ð°Ñ�ÑŒ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ð´ÐµÐ»Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ Ñ� Ð²Ñ…Ð¾Ð´Ð¾Ð¼ %s Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð¾Ð¼ %sÐ½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² %sÐ½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸ÐµÐ±Ð°Ð½ÐºÐ¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� [%lx:%04lx] (%lx) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð±Ð°Ð½ÐºÐ¾Ð¼ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ Ð±Ð°Ð½ÐºÐ¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° [%lx:%04lx] (%lx)Ð±Ð°Ð·Ð°: %u, Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ�: %u
-bfd_mach_o_canonicalize_symtab: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹bfd_mach_o_read_section_32: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ�: %#lx, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� 32bfd_mach_o_read_section_64: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ�: %#lx, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� 32bfd_mach_o_read_symtab_symbol: Ð¸Ð¼Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (%lu >= %u)bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %d (Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %lu): Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ° Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ð¾Ð»Ñ� 0x%x: Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ° Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°bfd_mach_o_read_symtab_symbol: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ %d Ð±Ð°Ð¹Ñ‚ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %ubfd_mach_o_read_symtab_symbols: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²bfd_mach_o_scan: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lx/0x%lxbfd_pef_scan: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lxblkbeg: Ð°Ð´Ñ€ÐµÑ�: 0x%08x, Ð¸Ð¼Ñ�: %.*s
+bfd_mach_o_canonicalize_symtab: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹bfd_mach_o_read_section_32: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ�: %#lx, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� 32bfd_mach_o_read_section_64: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ�: %#lx, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� 32bfd_mach_o_read_symtab_symbol: Ð¸Ð¼Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (%lu >= %u)bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %d (Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %lu): Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ° Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ð¾Ð»Ñ� 0x%x: Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ° Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°bfd_mach_o_read_symtab_symbol: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ %d Ð±Ð°Ð¹Ñ‚ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %ubfd_mach_o_scan: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lx/0x%lxbfd_pef_scan: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lxblkbeg: Ð°Ð´Ñ€ÐµÑ�: 0x%08x, Ð¸Ð¼Ñ�: %.*s
 blkend: Ñ€Ð°Ð·Ð¼ÐµÑ€: 0x%08x
 Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ (PC rel16) Ð² Ñ€Ð°Ð·Ð´ÐµÐ» (%s) Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð°Ð´Ñ€ÐµÑ�ÑƒÐ¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� bss-plt Ð¸Ð·-Ð·Ð° Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� bss-plt Ð¸Ð·-Ð·Ð° %pBÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÑƒ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ðº JALX Ð´Ð»Ñ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ðº JALX Ð´Ð»Ñ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %sÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ EMH Ð² Ð¿ÐµÑ€Ð²Ð¾Ð¹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST
 Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ DMT
@@ -1337,37 +1366,36 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST
 Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð´Ð»Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST
 ÐºÐ»Ð°Ñ�Ñ�: %u, dtype: %u, Ð´Ð»Ð¸Ð½Ð°: %u, ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ: 0x%08x
-Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð² %pBÐ·Ð°Ð¿Ð¸Ñ�ÑŒ EEOM Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° â€” Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: ÐµÑ‘ Ð¿Ð¾Ð»Ðµ psindx Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾ (%#lx)Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: ÐµÑ‘ Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐ³Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° (%#x)Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EIHD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° â€” Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ ETIRÐ·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ vms Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ» %sÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __ctbpÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __epÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __gpÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð· Â«%sÂ» Ð¸Ð· Â«%sÂ»Ð¦ÐŸ=HC11]Ð¦ÐŸ=HC12]Ð¦ÐŸ=HCS12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€=XGATE]Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµdelta pc +%-4ddelta_pc_l: +0x%08x
+Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð² %pBÐ·Ð°Ð¿Ð¸Ñ�ÑŒ EEOM Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° â€” Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐ³Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° (%#x)Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: ÐµÑ‘ Ð¿Ð¾Ð»Ðµ psindx Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾ (%#lx)Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: ÐµÑ‘ Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EIHD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° â€” Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ ETIRÐ·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ vms Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ» %sÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __ctbpÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __epÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __gpÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð· Â«%sÂ» Ð¸Ð· Â«%sÂ»Ð¦ÐŸ=HC11]Ð¦ÐŸ=HC12]Ð¦ÐŸ=HCS12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€=XGATE]Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�delta pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
 Ð¾Ð¿Ð¸Ñ�dimct: %u, aflags: 0x%02x, Ñ†Ð¸Ñ„Ñ€: %u, ÑˆÐºÐ°Ð»Ð°: %u
 Ð¾Ñ‚Ð±Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»: Â«%pAÂ»Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°ÐµÐ¼ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² FDE Ð² %pB(%pA).
 Ð½ÐµÑ�Ð¼ÐµÐ¶Ð½Ñ‹Ð¹ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ (nbr: %u)
-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð¸Ð¸ dynreloc %pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pAÐ²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¸Ñ�Ñ‡ÐµÐ·Ð»Ð° Ð¸Ð· Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð°enumbeg, Ð´Ð»Ð¸Ð½Ð°: %u, Ð¸Ð¼Ñ�: %.*s
+dst_define_location %u Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾ÐµÐ´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð¸Ð¸ dynreloc %pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pAÐ²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¸Ñ�Ñ‡ÐµÐ·Ð»Ð° Ð¸Ð· Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð°enumbeg, Ð´Ð»Ð¸Ð½Ð°: %u, Ð¸Ð¼Ñ�: %.*s
 enumelt, Ð¸Ð¼Ñ�: %.*s
 enumend
 Ñ�Ð¿Ð¸Ð»Ð¾Ð³: Ñ„Ð»Ð°Ð³Ð¸: %u, Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº: %u
-Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² %pB(%pA); Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° .eh_frame_hdr Ñ�Ð¾Ð·Ð´Ð°Ð½Ð° Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� %s: %sÐ¾ÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Ñ‚Ð¸Ð¿Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð° Ð¸Ð· Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… elfÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð½Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB ÑƒÐ¶Ðµ Ð² ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ BE8Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� APCS-%d, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº Ñ†ÐµÐ»ÑŒ %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ APCS-%dÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� EP9312, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� XScaleÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ, Ð½Ð¾ Ð´Ð»Ñ� %pB Ð·Ð°Ð´Ð°Ð½Ð¾ 4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸ÐµÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ñ‡Ð¸Ñ�Ð»Ð° Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ… Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ð¸Ñ… Ð² Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ…Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ñ‡Ð¸Ñ�Ð»Ð° Ð² Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ…, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ð¸Ñ… Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ… Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð±Ð¾Ð»ÑŒÑˆÐµÐµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð°, Ñ‡ÐµÐ¼ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¾ Ð² %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð±Ð¾Ð»ÑŒÑˆÐµÐµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°, Ñ‡ÐµÐ¼ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¾ Ð² %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°, Ð½Ð¾ Ð´Ð»Ñ� Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð° Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°.Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð½ÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð² %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ double, Ð½Ð¾ Ð² %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚ 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ doubleÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð² %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� FPU-3.0, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ FPU-2.0Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ñ‹Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ VFP, Ð° %pB Ð½ÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ FP, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ FPÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ñ‹Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ iWMMXt, Ð° %pB Ð½ÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ FP, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ FPÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ð° %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ð° %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ MSP430Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¾Ð³Ñ€Ð¾Ð¼Ð½ÑƒÑŽ Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ð°, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ MSP430Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð°Ð»ÑƒÑŽ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ…, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð° x86 (0x%x): 0x%x>Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA (%s) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ (%s).Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ ISA Ð´Ð»Ñ� Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� Â«%sÂ» Ð¸ Â«%sÂ».Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ ISA Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� Â«%sÂ». %d.%d vs %d.%dÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰ÐµÐµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ Ð°Ð´Ñ€ÐµÑ�Ð°Ñ†Ð¸Ð¸ SB Ð¸ R9Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ XLEN (%u), Ð²Ñ‹Ñ€Ð¾Ñ�Ñ‚Ð½Ð¾, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ñ�.Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: XLEN Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… (%u) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ð¼Ð¸ (%u).Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð¾Ñ‚ Ñ�Ñ‚Ð°Ñ€ÑˆÐµÐ³Ð¾ Ðº Ð¼Ð»Ð°Ð´ÑˆÐµÐ¼Ñƒ R2 Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�error: %pB: Ð½ÐµÐ»ÑŒÐ·Ñ� Ñ�Ð¼ÐµÑˆÐ¸Ð²Ð°Ñ‚ÑŒ rf16 Ñ� Ð¿Ð¾Ð»Ð½Ñ‹Ð¼ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ðµ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ %d/%dÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ Ñ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s Ñ� %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISAÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ðµ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ %c/%cÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s: %s Ñ� %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� priv spec (Ñ�Ñ‚Ð°Ñ€ÑˆÐ°Ñ�/Ð¼Ð»Ð°Ð´ÑˆÐ°Ñ�/Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ).Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰ÐµÐµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ R9Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Â«%sÂ». ÐŸÐµÑ€Ð²Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Â«iÂ» Ð¸Ð»Ð¸ Â«eÂ», Ð½Ð¾ Ð¸Ð¼ÐµÐµÐ¼ Â«%sÂ».Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±ÑŠÐµÐºÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð´Ð°Ð½Ð½Ñ‹Ðµ, Ð·Ð°Ð´Ð°Ð²Ð°ÐµÐ¼Ñ‹Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÐµÐ¼, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ñ�Ð±Ð¾Ñ€ÐºÐ¸ Â«%sÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ‚ÐµÐ³ Â«%d, %sÂ» Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚ÐµÐ³Ð¾Ð¼ Â«%d, %sÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ñ�Ñ‚Ð°Ñ€Ñ‹Ð¹ Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ñ‹Ðµ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ Ð¦ÐŸ %s Ñ� %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISAÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ñ� %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ %pB Ñ� Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ð¼ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ %pB Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ fp16 Ñ€Ð°Ñ�Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð² %pB Ð¸ %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ (Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ -fpic?)Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±ÑŠÐµÐºÑ‚-Ð¸Ñ�Ñ‚Ð¾Ñ‡Ð½Ð¸Ðº %pB Ð¸Ð¼ÐµÐµÑ‚ Ð²ÐµÑ€Ñ�Ð¸ÑŽ EABI %d, Ð° Ñ†ÐµÐ»ÑŒ %pB Ð¸Ð¼ÐµÐµÑ‚ Ð²ÐµÑ€Ñ�Ð¸ÑŽ EABI %dÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° ARC4 Ð±Ð¾Ð»ÑŒÑˆÐµ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» __rtinitÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Tag_ABI_array_object_align_expected Ð² %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Tag_ABI_array_object_alignment Ð² %pBÐ¿Ñ€Ð¸ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐµ Ñ„Ð°Ð¹Ð»Ð° %pB Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ñ‹ Ð¾ÑˆÐ¸Ð±ÐºÐ¸Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð´Ð»Ñ� Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° APUinfoÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» APUinfoÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ HI16Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» APUinfoÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð¼ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ÐµÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ .fixupÑ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ Ñ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ñ„Ð°Ð¹Ð» Ð² Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÐµÑ„Ð°Ð¹Ð» Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹Ñ„Ð°Ð¹Ð» ÑƒÑ�ÐµÑ‡Ñ‘Ð½Ð² Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐµÐ¼, Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ� Ð¾ Ð½Ðµ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ .eh_frame_hdr Ð¸Ð·-Ð·Ð° ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� FDE Ð±ÑƒÐ´ÑƒÑ‚ Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°Ñ‚ÑŒÑ�Ñ�ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº Ð½Ðµ Ñ�Ð¼Ð¾Ð³ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ %sÐ³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°
-Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹ Ð¦ÐŸ Ð² Ñ„Ð°Ð¹Ð»Ð°Ñ… mach-o: %ld Ð¸ %ldincr_linum(b): +%u
+Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² %pB(%pA); Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° .eh_frame_hdr Ñ�Ð¾Ð·Ð´Ð°Ð½Ð° Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� %s: %sÐ¾ÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Ñ‚Ð¸Ð¿Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð° Ð¸Ð· Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… elfÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²ÐµÑ€Ñ…Ð½ÑŽÑŽ Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð´Ð°Ð½Ð½Ñ‹Ñ…, Ð½Ð¾ %pB Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ‚, Ñ‡Ñ‚Ð¾ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ð½Ð¸Ð¶Ð½ÐµÐ¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð½Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB ÑƒÐ¶Ðµ Ð² ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ BE8Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� APCS-%d, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº Ñ†ÐµÐ»ÑŒ %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ APCS-%dÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� EP9312, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� XScaleÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ, Ð½Ð¾ Ð´Ð»Ñ� %pB Ð·Ð°Ð´Ð°Ð½Ð¾ 4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸ÐµÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ñ‡Ð¸Ñ�Ð»Ð° Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ… Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ð¸Ñ… Ð² Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ…Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ñ‡Ð¸Ñ�Ð»Ð° Ð² Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ…, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ð¸Ñ… Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ… Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð±Ð¾Ð»ÑŒÑˆÐµÐµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð°, Ñ‡ÐµÐ¼ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¾ Ð² %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð±Ð¾Ð»ÑŒÑˆÐµÐµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°, Ñ‡ÐµÐ¼ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¾ Ð² %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°, Ð½Ð¾ Ð´Ð»Ñ� Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð° Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°.Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð½ÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð² %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ double, Ð½Ð¾ Ð² %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚ 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ doubleÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð² %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� FPU-3.0, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ FPU-2.0Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ñ‹Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ VFP, Ð° %pB Ð½ÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ FP, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ FPÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ñ‹Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ iWMMXt, Ð° %pB Ð½ÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ FP, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ FPÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ð° %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ð° %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ MSP430Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¾Ð³Ñ€Ð¾Ð¼Ð½ÑƒÑŽ Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ð°, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ MSP430Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð°Ð»ÑƒÑŽ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ…, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° AArch64: 0x%x>Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð° x86 (0x%x): 0x%x>Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA (%s) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ (%s).Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ ISA Ð´Ð»Ñ� Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� Â«%sÂ» Ð¸ Â«%sÂ».Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ ISA Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� Â«%sÂ». %d.%d Ð¸ %d.%dÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰ÐµÐµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ Ð°Ð´Ñ€ÐµÑ�Ð°Ñ†Ð¸Ð¸ SB Ð¸ R9Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ XLEN (%u), Ð²ÐµÑ€Ð¾Ñ�Ñ‚Ð½Ð¾, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ñ�.Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: XLEN Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… (%u) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ð¼Ð¸ (%u).Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð¾Ñ‚ Ñ�Ñ‚Ð°Ñ€ÑˆÐµÐ³Ð¾ Ðº Ð¼Ð»Ð°Ð´ÑˆÐµÐ¼Ñƒ R2 Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�error: %pB: Ð½ÐµÐ»ÑŒÐ·Ñ� Ñ�Ð¼ÐµÑˆÐ¸Ð²Ð°Ñ‚ÑŒ rf16 Ñ� Ð¿Ð¾Ð»Ð½Ñ‹Ð¼ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ðµ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ %d/%dÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ Ñ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s Ñ� %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISAÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ðµ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ %c/%cÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s: %s Ñ� %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰ÐµÐµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ R9Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Â«%sÂ». ÐŸÐµÑ€Ð²Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Â«iÂ» Ð¸Ð»Ð¸ Â«eÂ», Ð½Ð¾ Ð¸Ð¼ÐµÐµÐ¼ Â«%sÂ».Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±ÑŠÐµÐºÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð´Ð°Ð½Ð½Ñ‹Ðµ, Ð·Ð°Ð´Ð°Ð²Ð°ÐµÐ¼Ñ‹Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÐµÐ¼, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ñ�Ð±Ð¾Ñ€ÐºÐ¸ Â«%sÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ‚ÐµÐ³ Â«%d, %sÂ» Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚ÐµÐ³Ð¾Ð¼ Â«%d, %sÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ñ�Ñ‚Ð°Ñ€Ñ‹Ð¹ Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ñ‹Ðµ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ Ð¦ÐŸ %s Ñ� %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISAÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ñ� %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ %pB Ñ� Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ð¼ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ %pB Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ fp16 Ñ€Ð°Ñ�Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð² %pB Ð¸ %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ (Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ -fpic?)Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±ÑŠÐµÐºÑ‚-Ð¸Ñ�Ñ‚Ð¾Ñ‡Ð½Ð¸Ðº %pB Ð¸Ð¼ÐµÐµÑ‚ Ð²ÐµÑ€Ñ�Ð¸ÑŽ EABI %d, Ð° Ñ†ÐµÐ»ÑŒ %pB Ð¸Ð¼ÐµÐµÑ‚ Ð²ÐµÑ€Ñ�Ð¸ÑŽ EABI %dÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° ARC4 Ð±Ð¾Ð»ÑŒÑˆÐµ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» __rtinitÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Tag_ABI_array_object_align_expected Ð² %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Tag_ABI_array_object_alignment Ð² %pBÐ¿Ñ€Ð¸ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐµ Ñ„Ð°Ð¹Ð»Ð° %pB Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ñ‹ Ð¾ÑˆÐ¸Ð±ÐºÐ¸Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð´Ð»Ñ� Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° APUinfoÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» APUinfoÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ HI16Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» APUinfoÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð¼ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ÐµÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ .fixupÑ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ Ñ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ñ„Ð°Ð¹Ð» Ð² Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÐµÑ„Ð°Ð¹Ð» Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹Ñ„Ð°Ð¹Ð» ÑƒÑ�ÐµÑ‡Ñ‘Ð½Ð² Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐµÐ¼, Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ� Ð¾ Ð½Ðµ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ .eh_frame_hdr Ð¸Ð·-Ð·Ð° ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� FDE Ð±ÑƒÐ´ÑƒÑ‚ Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°Ñ‚ÑŒÑ�Ñ�ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº Ð½Ðµ Ñ�Ð¼Ð¾Ð³ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ %sÐ³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹ Ð¦ÐŸ Ð² Ñ„Ð°Ð¹Ð»Ð°Ñ… mach-o: %ld Ð¸ %ldincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
 ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¾ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x
-Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð²Ñ‹Ð·Ð²Ð°Ð»Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð²Ñ‹Ð·Ð²Ð°Ð»Ð¾ Ð²Ñ‹Ñ…Ð¾Ð´ Ð·Ð° Ð½Ð¸Ð¶Ð½ÑŽÑŽ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ Ñ�Ñ‚ÐµÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� %sÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ/Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ñ�Ñ‚Ñ€Ð°Ð½Ð½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�ÑƒÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ Â«%sÂ» Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾Ð¹ Â«%sÂ» Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€ÑƒÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð´Ð¾Ð·Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .got.locÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐµ Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ðµ: Ð¾Ñ�Ñ‚Ð°Ñ‘Ñ‚Ñ�Ñ� %lu != Ð¼Ð°ÐºÑ� %lu; Ñ�Ð¾Ð¾Ð±Ñ‰Ð¸Ñ‚Ðµ Ð¾Ð± Ñ�Ñ‚Ð¾Ð¼ Ð´ÐµÑ„ÐµÐºÑ‚ÐµÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ TARGET2 Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Â«%sÂ»Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� Ñ†ÐµÐ»ÑŒ bfdÐ½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pAÐ½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ Ð½Ðµ-ELF Ð¸ Ð½Ðµ-mmo; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñƒ objcopy Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð¸Ð· ELF Ð¸Ð»Ð¸ mmo, Ð¸Ð»Ð¸ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Â«-no-expandÂ» (Ð´Ð»Ñ� gcc, Â«-Wa,-no-expandÂ»Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ Ð½Ðµ-ELF Ð¸ Ð½Ðµ-mmo; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñƒ objcopy Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð¸Ð· ELF Ð¸Ð»Ð¸ mmo, Ð¸Ð»Ð¸ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ gcc Â«-mno-base-addressesÂ».Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ�Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� .eh_frame_entry: %pAÐ½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² ETIRÐ½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ %s Ñ� ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð°Ð¼Ð¸ip2k relaxer: Ð¸Ñ�Ð¿Ð¾Ñ€Ñ‡ÐµÐ½ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹.ip2k relaxer: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ Ð±ÐµÐ· Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ Ñ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ� Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸.Ð´Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° â€” %s â€” ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð°?Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº (PC rel26) Ð² Ñ€Ð°Ð·Ð´ÐµÐ» (%s) Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð°Ð´Ñ€ÐµÑ�ÑƒÐ¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�ÑƒÐ¼ÐµÑ‚ÐºÐ°, Ð¸Ð¼Ñ�: %.*s
+Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð²Ñ‹Ð·Ð²Ð°Ð»Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð²Ñ‹Ð·Ð²Ð°Ð»Ð¾ Ð²Ñ‹Ñ…Ð¾Ð´ Ð·Ð° Ð½Ð¸Ð¶Ð½ÑŽÑŽ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ Ñ�Ñ‚ÐµÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� %sÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ/Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ñ�Ñ‚Ñ€Ð°Ð½Ð½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�ÑƒÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ Â«%sÂ» Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾Ð¹ Â«%sÂ» Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€ÑƒÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð´Ð¾Ð·Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .got.locÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐµ Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ðµ: Ð¾Ñ�Ñ‚Ð°Ñ‘Ñ‚Ñ�Ñ� %lu != Ð¼Ð°ÐºÑ� %lu; Ñ�Ð¾Ð¾Ð±Ñ‰Ð¸Ñ‚Ðµ Ð¾Ð± Ñ�Ñ‚Ð¾Ð¼ Ð´ÐµÑ„ÐµÐºÑ‚ÐµÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ %sÐ½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ TARGET2 Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Â«%sÂ»Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� Ñ†ÐµÐ»ÑŒ bfdÐ½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pAÐ½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ Ð½Ðµ-ELF Ð¸ Ð½Ðµ-mmo; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñƒ objcopy Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð¸Ð· ELF Ð¸Ð»Ð¸ mmo, Ð¸Ð»Ð¸ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Â«-no-expandÂ» (Ð´Ð»Ñ� gcc, Â«-Wa,-no-expandÂ»Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ Ð½Ðµ-ELF Ð¸ Ð½Ðµ-mmo; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñƒ objcopy Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð¸Ð· ELF Ð¸Ð»Ð¸ mmo, Ð¸Ð»Ð¸ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ gcc Â«-mno-base-addressesÂ».Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ�Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� .eh_frame_entry: %pAÐ½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² ETIRÐ½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ %s Ñ� ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð°Ð¼Ð¸ip2k relaxer: Ð¸Ñ�Ð¿Ð¾Ñ€Ñ‡ÐµÐ½ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹.ip2k relaxer: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ Ð±ÐµÐ· Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ Ñ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ� Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸.Ð´Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° â€” %s â€” ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð°?Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº (PC rel26) Ð² Ñ€Ð°Ð·Ð´ÐµÐ» (%s) Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð°Ð´Ñ€ÐµÑ�ÑƒÐ¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�ÑƒÐ¼ÐµÑ‚ÐºÐ°, Ð¸Ð¼Ñ�: %.*s
 len: %2u, kind: %2u Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ (Ð´Ð»Ð¸Ð½Ð°: %u)
 ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ð¹ Ð¾Ð±Ñ€Ð°Ð·Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿Ðµ
 Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿Ð°Ñ…
 Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿Ð°Ñ…
 Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ ÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð´Ð»Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»mach-o: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² (%u), Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½Ðµ Ð±Ð¾Ð»ÐµÐµ 255,
-Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ñ‹Ð¹ Ð°Ñ€Ñ…Ð¸Ð²Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð°Ñ�ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒmep: Ð½ÐµÑ‚ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� ÐºÐ¾Ð´Ð° %dmodbeg
+Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ñ‹Ð¹ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ half sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %dÐ¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %dÐ¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ� Ð¿Ð°Ñ€Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %dÐ¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ� Ð¿Ð°Ñ€Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� mach-o ARM: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð¿ÐµÑ€Ð²Ñ‹Ð¼ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ mach-o ARM: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %dÐ¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %dÐ¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ vanilla mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %d (pcrel: %d)Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ mach-o: Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð±Ð¾Ð»ÑŒÑˆÐµ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð°Ñ�ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒmep: Ð½ÐµÑ‚ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� ÐºÐ¾Ð´Ð° %dmodbeg
 modend
 Ð¸Ð¼Ñ�: [Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: %08lx Ð´Ð»Ð¸Ð½Ð° %d]: Ñ€Ð¾Ð´Ð½Ð¾Ð¹Ð¿Ð¾Ñ�Ð²Ð¸Ð»Ð°Ñ�ÑŒ Ð½Ð¾Ð²Ð°Ñ� Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ�(Ð¸), Ð½Ð¾ Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ Ð²Ñ‹Ð²Ð¾Ð´ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸:Ð½ÐµÑ‚Ð½Ðµ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½ Ð°Ð´Ñ€ÐµÑ� Ñ�ÐºÐ»ÐµÐ¹ÐºÐ°Ð¼ Ð² Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %sÐ½ÐµÑ‚ Ð¾ÑˆÐ¸Ð±ÐºÐ¸Ð°Ñ€Ñ…Ð¸Ð²Ð½Ñ‹Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¸Ñ�ÑŒÐ½ÐµÑ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²Ð½ÐµÑ�Ð²Ñ�Ð·Ð½Ñ‹Ð¹ Ð¼Ð°Ñ�Ñ�Ð¸Ð² %s
-Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %sÐ½Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ 0x%v Ð¿Ð»ÑŽÑ� Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð²ÐµÑ€Ð»ÐµÑ� 0x%v Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ
+Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %sÐ½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²Ð½Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ 0x%v Ð¿Ð»ÑŽÑ� Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð²ÐµÑ€Ð»ÐµÑ� 0x%v Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ
 Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @fptrÐ½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ�Ñ€Ð°Ð·Ð´ÐµÐ», Ð½ÐµÐ¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ñ‹Ð¹ Ð´Ð»Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð°Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° GOT Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² GOTÐ½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²ÐºÐ¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹Ð½Ðµ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð´Ð°Ð½Ð½Ñ‹Ðµ=%lx Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾=%d
 Ð½Ðµ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� env Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ð°
  [Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ð¾]Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ Ð�Ð• error-free !Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�ÐºÐ»ÐµÐ¹ÐºÐ¸ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾ ÐµÑ‘ Ñ€Ð°Ð·Ð¼ÐµÑ€ÑƒÐ¾Ð´Ð½Ð¾Ð¹ Ð¸Ð· Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ñ… Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ Ñ�Ñ‚Ð¾Ð¹ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾, Ñ‡Ñ‚Ð¾ Ð² ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼ ÐºÐ¾Ð´Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ñ� Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸ÐµÐ¼, Ñ‡ÐµÐ¼ Ð±Ñ‹Ð»Ð¾ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¾ Ð² ÐµÐ³Ð¾ Ð¼ÐµÑ�Ñ‚Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ�Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ñ�Ð»Ðµ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ñ�Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹Ð½Ð¾Ð¹ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ
 Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lxÑ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx:Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx: Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = 0x%lxÑ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = 0x%lx:Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð°Ð´Ñ€ÐµÑ� bkpt 0x%08x
 Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» recbeg: Ð¸Ð¼Ñ�: %.*s
 recend
-Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ð±Ð°Ð½ÐºÐ¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� [%lx:%04lx] Ð² Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð¼ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %04lxÑ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ð´Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÑŽÑ€ÐµÐ³Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° %%g%d: %s Ð² %pB, Ñ€Ð°Ð½ÐµÐµ %s Ð² %pBÐ² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ
+Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð° Ð´Ð»Ñ� Ð´Ð»Ð¸Ð½Ñ‹ Ð¸Ð¼ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ð±Ð°Ð½ÐºÐ¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� [%lx:%04lx] Ð² Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð¼ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %04lxÑ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ð´Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÑŽÑ€ÐµÐ³Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° %%g%d: %s Ð² %pB, Ñ€Ð°Ð½ÐµÐµ %s Ð² %pBÐ² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ
 Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) *Ð�Ð•Ð˜Ð—Ð’Ð•Ð¡Ð¢Ð�Ðž*Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½Ðµ-REL psectÐ¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ñ‡Ñ‘Ñ‚Ð½Ñ‹Ð¼ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¼ÐµÐ¶Ð´Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚Ñ�Ñ�ÑƒÐ´Ð°Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð² Ñ„Ð°Ð¹Ð»Ðµ Â«%pBÂ»Ð¿ÐµÑ€ÐµÐ¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� %pB: %s
 Ð·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¹ cmd %drtnbeg
 rtnend: Ñ€Ð°Ð·Ð¼ÐµÑ€ 0x%08x
@@ -1376,26 +1404,30 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pAÑ€Ð°Ð·Ð´ÐµÐ» small-data Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ 64ÐšÐ‘ â€” Ð½Ð¸Ð¶Ð½Ð¸Ð¹ Ð¿Ñ€ÐµÐ´ÐµÐ» small-data (Ñ�Ð¼. Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)som_sizeof_headers Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ñ…Ñ�Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð² Ñ�Ñ†ÐµÐ½Ð°Ñ€Ð¸Ð¸ auto-overlay Ð¿Ð¾ÐºÐ° Ð½Ðµ Ñ�Ð´ÐµÐ»Ð°Ð½Ð°
+Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pAÑ€Ð°Ð·Ð´ÐµÐ» small-data Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ 64ÐšÐ‘ â€” Ð½Ð¸Ð¶Ð½Ð¸Ð¹ Ð¿Ñ€ÐµÐ´ÐµÐ» small-data (Ñ�Ð¼. Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)som_sizeof_headers Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ�Ñ‚Ð¾Ñ‚ Ñ„Ð°Ð¹Ð»Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ñ…Ñ�Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð² Ñ�Ñ†ÐµÐ½Ð°Ñ€Ð¸Ð¸ auto-overlay Ð¿Ð¾ÐºÐ° Ð½Ðµ Ñ�Ð´ÐµÐ»Ð°Ð½Ð°
 Ð˜Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ: modtab, toc Ð¸ extrefsyms Ð¿Ð¾ÐºÐ° Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ‹ Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´ dysymtab.Ð¸Ñ�Ñ‚Ð¾Ñ‡Ð½Ð¸Ðº (Ð´Ð»Ð¸Ð½Ð°: %u)
 Ð½ÐµÑ‚Ð¸Ð¿Ð¸Ñ‡Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ALPHA_R_BSRÐ² Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ Ñ�Ñ‚ÐµÐºÐ° Ð±ÑƒÐ´ÐµÑ‚ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð²Ñ‹Ð·Ð¾Ð² Ð¸Ð· %s Ð² %s
 Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ° (%d) Ð² _bfd_vms_pushÐ²Ñ‹Ñ…Ð¾Ð´ Ð·Ð° Ð½Ð¸Ð¶Ð½ÑŽÑŽ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ Ñ�Ñ‚ÐµÐºÐ° Ð² _bfd_vms_popÑ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ: %s
-Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Â«%sÂ» Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ð¾Ñ‚ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° (Ð±ÐµÐ· Ð¸Ð¼ÐµÐ½Ð¸)Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð½Ðµ Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð¼ÐµÑ€ÑƒÑ�Ð¸Ð¼Ð²Ð¾Ð»Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ st_other Ð´Ð»Ñ� ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ 1Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹: REGISTER Ð² %pB, Ñ€Ð°Ð½ÐµÐµ %s Ð² %pBÐ´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ», Ð½Ð¾ ÐµÐ³Ð¾ Ð½Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ Ð²Ñ‹Ð·Ð¾Ð²Ð°Ð¼Ð°Ñ�Ñ�Ð¸Ð² Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹:
+Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Â«%sÂ» Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ð¾Ñ‚ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° (Ð±ÐµÐ· Ð¸Ð¼ÐµÐ½Ð¸)Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð½Ðµ Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð¼ÐµÑ€ÑƒÑ�Ð¸Ð¼Ð²Ð¾Ð»Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ st_other Ð´Ð»Ñ� ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ 1Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹: REGISTER Ð² %pB, Ñ€Ð°Ð½ÐµÐµ %s Ð² %pBÑ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð°Ñ� Ð¿Ñ€Ð¸Ð²Ñ�Ð·ÐºÐ° STB_GNU_UNIQUE Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ», Ð½Ð¾ ÐµÐ³Ð¾ Ð½Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ STT_GNU_IFUNC Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ Ð²Ñ‹Ð·Ð¾Ð²Ð°Ð¼Ð°Ñ�Ñ�Ð¸Ð² Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹:
 term(b): 0x%02xterm_w: 0x%04xÐ´Ð»Ñ� Ñ†ÐµÐ»Ð¸ bfin Ð¿Ð¾ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹Ð²Ð¾Ð·Ð½Ð¸Ðº ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� Ñ„Ð»Ð°Ð³Ð¾Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF Ð¸Ð· %pBÑ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² GOT Ð´Ð»Ñ� -fpic: Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPICÐ¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ðµ, Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ð¸Ð·Ð±ÐµÐ¶Ð°Ñ‚ÑŒ Ð¾Ð±Ñ€ÐµÐ·Ð°Ð½Ð¸Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ� Ñ‚Ð¸Ð¿Ð° Ð´Ð»Ñ� Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð°:
 Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ� Ñ‚Ð¸Ð¿Ð° Ð´Ð»Ñ� subscript %u:
 Ñ‚Ð¸Ð¿Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ
 typspec (Ð´Ð»Ð¸Ð½Ð°: %u)
-Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#xÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ»Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰ÐµÐµ Ð¼ÐµÑ�Ñ‚Ð¾ Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#xÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´Ð¾Ñ�Ñ‚Ð¸Ñ‡ÑŒ %s (Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x) Ð¸Ð· Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ� (Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x), Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð¸Ð· Ñ€Ð°Ð·Ñ€ÐµÑˆÑ‘Ð½Ð½Ð¾Ð³Ð¾ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° -32678â€”32767
-Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EIHS Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %#xÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð¸Ð· %pBÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#xÐ½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ð±Ð¸Ñ‚ %s
-Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¾ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° %s Ð² Ñ�Ð»Ð¾Ð¶Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ: %sÐ½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ STO_SH5_ISA32 Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ðµ Ñ‡Ð¸Ñ�Ð»Ð¾Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ñ�Ð´Ñ€Ð° OSF/1 Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %dÐ½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ egsd-Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð¸Ð¿Ð° %u
+Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#xÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ»Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰ÐµÐµ Ð¼ÐµÑ�Ñ‚Ð¾ Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#xÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EIHS Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %#xÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð¸Ð· %pBÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#xÐ½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ð±Ð¸Ñ‚ %s
+Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¾ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° %s Ð² Ñ�Ð»Ð¾Ð¶Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ: %sÐ½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ðµ Ñ‡Ð¸Ñ�Ð»Ð¾Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ñ�Ð´Ñ€Ð° OSF/1 Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %dÐ½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ egsd-Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð¸Ð¿Ð° %u
 Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿ emh %u
-Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %sÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿ EGSD %dÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� ETIR ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %dÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ %dÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ° Ð±Ð°Ð¹Ñ‚ Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ %#xÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ %dÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ '%c' Ð² Ñ�Ð»Ð¾Ð¶Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÐµÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %sÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s + %sÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¸Ñ�Ñ…Ð¾Ð´Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %dÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ðµ %sÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾: %xÐ½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ INPUT_SECTION_FLAG %s
-Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ Ñ†ÐµÐ»Ð¸ TI COFF Â«0x%xÂ»Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ .stabÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ STA cmd %sÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¼ÐµÐ¶Ð´Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð½Ñ‹Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð¾Ð¼ Ð´Ð°Ð½Ð½Ñ‹Ñ…/Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#xÐ¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ gpÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850 E3Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850eÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e1Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2v3Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e3v5Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ð¾Ð´Ð½Ð¾Ð¼ Ð¸Ð· Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ…, Ð½ÑƒÐ»ÐµÐ²Ñ‹Ñ… Ð¸ ÐºÑ€Ð¾ÑˆÐµÑ‡Ð½Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð½Ñ‹Ñ…Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ð¸ ÐºÑ€Ð¾ÑˆÐµÑ‡Ð½Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ�Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ð¸ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ�Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð½ÑƒÐ»ÐµÐ²Ñ‹Ñ… Ð¸ ÐºÑ€Ð¾ÑˆÐµÑ‡Ð½Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ�Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð·Ð°Ð½Ð¸Ð¼Ð°Ñ‚ÑŒ Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð½Ñ‹Ñ…vflags: 0x%02x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: 0x%08x vma:			Ð�Ð°Ñ‡ Ð°Ð´Ñ€ÐµÑ�   	  ÐšÐ¾Ð½ Ð°Ð´Ñ€ÐµÑ�	   Ð Ð°Ñ�ÐºÑ€ Ð´Ð°Ð½Ð½Ñ‹Ðµ
+Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %sÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿ EGSD %dÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� ETIR ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %dÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»: 0x%02xÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ %dÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ° Ð±Ð°Ð¹Ñ‚ Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ %#xÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ %dÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ '%c' Ð² Ñ�Ð»Ð¾Ð¶Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÐµÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %sÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s + %sÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¸Ñ�Ñ…Ð¾Ð´Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %dÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ðµ %sÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾: %xÐ½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ INPUT_SECTION_FLAG %s
+Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ Ñ†ÐµÐ»Ð¸ TI COFF Â«0x%xÂ»Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ .stabÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ STA cmd %sÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¼ÐµÐ¶Ð´Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð½Ñ‹Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð¾Ð¼ Ð´Ð°Ð½Ð½Ñ‹Ñ…/Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ gpÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850 E3Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850eÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e1Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2v3Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e3v5Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ð¾Ð´Ð½Ð¾Ð¼ Ð¸Ð· Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ…, Ð½ÑƒÐ»ÐµÐ²Ñ‹Ñ… Ð¸ ÐºÑ€Ð¾ÑˆÐµÑ‡Ð½Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð½Ñ‹Ñ…Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ð¸ ÐºÑ€Ð¾ÑˆÐµÑ‡Ð½Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ�Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ð¸ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ�Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð½ÑƒÐ»ÐµÐ²Ñ‹Ñ… Ð¸ ÐºÑ€Ð¾ÑˆÐµÑ‡Ð½Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ�Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð·Ð°Ð½Ð¸Ð¼Ð°Ñ‚ÑŒ Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð½Ñ‹Ñ…vflags: 0x%02x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: 0x%08x vma:			Ð�Ð°Ñ‡ Ð°Ð´Ñ€ÐµÑ�   	  ÐšÐ¾Ð½ Ð°Ð´Ñ€ÐµÑ�	   Ð Ð°Ñ�ÐºÑ€ Ð´Ð°Ð½Ð½Ñ‹Ðµ
 Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ, Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .pdata (%ld) Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ %d
-Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %pB Ð¸ %pB Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€ wchar_tÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %pB Ð¸ %pB Ð¿Ð¾-Ñ€Ð°Ð·Ð½Ð¾Ð¼Ñƒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð´Ð»Ñ� DSBTÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚Ñƒ, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ %pB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ (%Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ %pB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚Ñƒ, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð½ÐµÑ‚Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s enum, Ñ…Ð¾Ñ‚Ñ� ÑƒÐ¶Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð»Ñ�Ñ� %s enum; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ enum Ð² Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ñ… Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹ wchar_t, Ñ…Ð¾Ñ‚Ñ� ÑƒÐ¶Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð»Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹ wchar_t; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ wchar_t Ð² Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ñ… Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ð²Ñ‹Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ð²Ñ‹Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹ %s Ñ� %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ GNU_PROPERTY_TYPE (%ld): %#lxÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ GNU_PROPERTY_TYPE (%ld), Ñ‚Ð¸Ð¿ (0x%x), Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð°Ð½Ð½Ñ‹Ñ…: 0x%xÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñƒ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ� ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹: 0x%xÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ°: 0x%xÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° ARC %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ MSPABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ GNU_PROPERTY_TYPE (%ld): 0x%xÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°
+Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %pB Ð¸ %pB Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€ wchar_tÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %pB Ð¸ %pB Ð¿Ð¾-Ñ€Ð°Ð·Ð½Ð¾Ð¼Ñƒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð´Ð»Ñ� DSBTÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚Ñƒ, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ %pB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ (%Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ %pB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚Ñƒ, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð½ÐµÑ‚Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½ÑƒÑŽ Ð²ÐµÑ€Ñ�Ð¸ÑŽ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ %u.%u.%u, Ð½Ð¾ Ð´Ð»Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %u.%u.%u.Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s enum, Ñ…Ð¾Ñ‚Ñ� ÑƒÐ¶Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð»Ñ�Ñ� %s enum; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ enum Ð² Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ñ… Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹ wchar_t, Ñ…Ð¾Ñ‚Ñ� ÑƒÐ¶Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð»Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹ wchar_t; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ wchar_t Ð² Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ñ… Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ð²Ñ‹Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ð²Ñ‹Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹ %s Ñ� %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ GNU_PROPERTY_TYPE (%ld): %#lxÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ GNU_PROPERTY_TYPE (%ld), Ñ‚Ð¸Ð¿ (0x%x), Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð°Ð½Ð½Ñ‹Ñ…: 0x%xÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñƒ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ� ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹: 0x%xÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ°: 0x%xÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° ARC %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ MSPABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ GNU_PROPERTY_TYPE (%ld): 0x%xÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°
 Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð¿ÐµÑ€ÐµÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ� %s
-Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð¸Ð¼ÐµÐµÑ‚ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: --plt-localentry Ð¾Ñ�Ð¾Ð±ÐµÐ½Ð½Ð¾ Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð±ÐµÐ· Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ Ð² ld.so Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð½Ð°Ñ€ÑƒÑˆÐµÐ½Ð¸Ð¹ ABIÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78_SYM Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RX_SYM Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %u Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB Ð±Ð¾Ð»ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ (%u) ÐµÐ³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pAÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %u Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB Ð¼ÐµÐ½ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ %u Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð·Ð¾Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %s, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð±Ñ€Ð¾Ñ� Ñ„Ð»Ð°Ð³Ð° Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ %pB, Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ� Ð½Ð¸Ð¼ Ð±Ñ‹Ð» Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð±ÐµÐ· Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð¸Ð· %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‡Ð¸Ñ‰Ð°ÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð´Ð»Ñ� %pB Ð¸Ð·-Ð·Ð° Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ð·Ð°Ð¿Ñ€Ð¾Ñ�Ð°Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚ÐºÐ¸
-Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ %pB Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ ck%s ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� ck%s Ñ†ÐµÐ»Ð¸, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ ck%sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gc-sections Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ¹ Ð½Ðµ-PIC ÐºÐ¾Ð´Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ¹ Ð½Ðµ-PID ÐºÐ¾Ð´Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð»Ð°Ð³ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð´Ð»Ñ� %pB Ð½Ðµ ÑƒÑ�Ñ‚Ð°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�, Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ð½ ÑƒÐ¶Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚ÑƒÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·ÑƒÐµÑ‚Ñ�Ñ� Ð² Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸ÐµÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½ Ð½Ð° PROGBITSÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¸ Ð½Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ð¸ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½ Ñ� %d Ð½Ð° %d Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ð¹ eflag Â«%#lxÂ»Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ñ‹ Ð¸Ð»Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð¸ Ñ„Ð»Ð°Ð³Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð¼Ð°ÑˆÐ¸Ð½Ð° Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð² Ð°Ñ€Ñ…Ð¸Ð²: Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð¼ÐµÑ‚ÐºÐ° Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÑ‚Ñ�Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð¿Ð¾ Ð¾Ð³Ñ€Ð¾Ð¼Ð½Ð¾Ð¼Ñƒ (Ñ‚. Ðµ., Ð¾Ñ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¼Ñƒ) Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð¼Ñƒ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» xdata
-Ð´Ð°Ð²Ð°Ð¼ Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�Ñ‚ÑŒ %s Ð² Ñ�Ñ†ÐµÐ½Ð°Ñ€Ð¸Ð¸PRIu64PRIx64PRId64%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: %#: warning: bad R_SH_USES offset%pB: %#: warning: R_SH_USES points to unrecognized insn %#x%pB: %#: warning: bad R_SH_USES load offset%pB: %#: warning: could not find expected reloc%pB: %#: warning: symbol in unexpected section%pB: %#: warning: could not find expected COUNT reloc%pB: %#: warning: bad count%pB: %#: fatal: reloc overflow while relaxing%pB: bad reloc address %# in section `%pA'%pB: illegal relocation type %d at address %#%pB: corrupt symbol count: %#%pB: not enough memory to allocate space for %# symbols of size %#%pB: bad string table size %error: %pB(%pA) is too large (%# bytes)DWARF error: offset (%) greater than or equal to %s size (%)DWARF error: data count (%) larger than buffer sizeDWARF error: unknown format content type %DWARF error: line info section is too small (%)DWARF error: line info data is bigger (%#) than the space remaining in the section (%#lx)DWARF error: unable to read alt ref %%pB: error: attribute section length too small: %%pB(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%pB: corrupt size field in group section header: %#%pB: invalid size field in group section header: %#%pB: section %pA lma %# adjusted to %#%pB: warning: empty loadable segment detected at vaddr=%#, is this intentional?%pB: warning: segment alignment of %# is too large%pB(%pA+%#): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): CMEM relocation to `%s+%#' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): unexpected %s instruction '%#lx' in TLS trampoline%pB(%pA+%#): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC%pB(%pA+%#): %s relocation not permitted in shared object%pB(%pA+%#): only ADD or SUB instructions are allowed for ALU group relocations%pB(%pA+%#): overflow whilst splitting %# for group relocation %s%pB(%pA+%#): %s relocation against SEC_MERGE section%pB(%pA+%#): %s used with TLS symbol %s%pB(%pA+%#): %s used with non-TLS symbol %s%pB(%#): error: cannot create STM32L4XX veneer; jump out of range by % bytes; cannot encode branch instruction%pB(%pA+%#): unresolvable relocation against symbol `%s'%pB(%pA+%#): reloc against `%s': error %d%pB: relocation at `%pA+%#' references symbol `%s' with nonzero addend%pB, section %pA: relocation %s with non-zero addend % against local symbol%pB, section %pA: relocation %s with non-zero addend % against symbol `%s'%pB(%pA+%#): cannot reach %s, recompile with -ffunction-sections%pB(%pA+%#): %s fixup for insn %#x is not supported in a non-shared link%pB(%pA+%#): cannot handle %s for %s%pB: TLS transition from %s to %s against `%s' at %# in section `%pA' failedip2k linker: missing page instruction at %# (dest = %#)ip2k linker: redundant page instruction at %# (dest = %#)%pB: warning: %s points to unrecognized reloc at %#%pB(%pA+%#): error: %s with unexpected instruction %#x%pB(%pA): unsafe PID relocation %s at %# (against %s in %s)%pB(%pA+%#): invalid instruction for TLS relocation %s%pB: CALL15 reloc at %# not against global symbol%pB: %#: warning: R_SH_USES points to unrecognized insn 0x%x%pB: %#: fatal: unaligned branch target for relax-support relocation%pB: %#: fatal: unaligned %s relocation %#%pB: %#: fatal: R_SH_PSHA relocation % not in range -32..32%pB: %#: fatal: R_SH_PSHL relocation % not in range -32..32%pB(%pA+%#): cannot emit fixup to `%s' in read-only section%pB(%pA+%#): %s relocation against external symbol "%s"%pB(%pA): offset in relocation for GD->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd4??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xc7??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xd1??)%pB(%pA+%#): unexpected instruction %#04X (expected 0x310c)%pB(%pA+%#): unexpected instruction %#04X (expected 0x410b)%pB(%pA+%#): unexpected instruction %#04X (expected 0x34cc)%pB(%pA): offset in relocation for IE->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd0??: mov.l)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?12: stc)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?ce: mov.l)%pB(%pA): offset in relocation for GD->IE translation is too small: %#%pB(%pA): offset in relocation for LD->LE translation is too small: %#%pB(%s+%#): unresolvable %s relocation against symbol `%s'%pB: %#: warning: %s points to unrecognized insns%pB: %#: warning: %s points to unrecognized insn %#x%pB: %#: warning: %s points to unrecognized reloc%pB: %#: warning: %s points to unrecognized reloc %#%pB: warning: GOT addend of % to `%s' does not match previous GOT addend of %%pB: warning: PLT addend of % to `%s' from %pA section ignored%pB: warning: %s relocation to %# from %pA section%pB(%pA+%#): relocation offset out of range (size=%#)%pB(%pA+%#): could not decode instruction; possible configuration mismatch%pB(%pA+%#): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%pB(%pA+%#): unexpected fix for %s relocation%pB: %pA+%#: warning: %s relocation against unexpected insnstub entry for %s cannot load .plt, dp offset = %%pB(%pA+%#): cannot reach %s%pB: can't relax br at %# in section `%pA'; please use brl or indirect branch%pB: short data segment overflowed (%# >= 0x400000)%pB: missing TLS section for relocation %s against `%s' at %# in section `%pA'.%pB: Can't relax br (%s) to `%s' at %# in section `%pA' with size %# (> 0x1000000).warning: size of symbol `%s' changed from % in %pB to % in %pB%pB(%pA): relocation % has invalid symbol index %ld%pB: Internal inconsistency error for value for
- linker-allocated global register: linked: %# != relaxed: %#%pB: LOCAL directive: register $% is not a local register; first global register is $%%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %%pB: addend %s%#x in relocation %s against symbol `%s' at %# in section `%pA' is out of range%pB: version count (%) does not match symbol count (%ld)warning: %pB is truncated: expected core file size >= %, found: %%pB: bad reloc symbol index (%# >= %#lx) for offset %# in section `%pA'%pB: non-zero symbol index (%#) for offset %# in section `%pA' when the object file has no symbol tableerror: %pB contains a reloc (%#) for section %pA that references a non-existent global symbol%pB: %pA+%#: no symbol found for INHERIT%pB: incorrect `.reginfo' section size; expected %, got %%pB: GOT reloc at %# not expected in executables%pB: CALL16 reloc at %# not against global symbol%pB: can't find matching LO16 reloc against `%s' for %s at %# in section `%pA'%pB: `%pA' entry VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB: `%pA' offset of % from `%pA' beyond the range of ADDIUPC%pB: `%pA' start VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB 64-bit address %# out of range for Intel Hex file%pB: address %# out of range for Intel Hex filesection address (%#) below start of segment (%#)%pB: access beyond end of merged section (%)%pB: attempt to emit contents at non-multiple-of-4 address %#%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %%pB: XMC_TC0 symbol `%s' is class %d scnlen %%pB: reloc %s:% not in csectTOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%pB: Data Directory size (%lx) exceeds space left in section (%)%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ % >= %%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TOC Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð±ÐµÐ· Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° TOC%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_USES%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: R_SH_USES ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½ÑƒÑŽ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ %#x%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ñ‡Ð½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_USES%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ COUNT%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ñ€Ð¸ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ð¸%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#%pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: %#%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð¼ÐµÑ�Ñ‚Ð° Ð´Ð»Ñ� %# Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ %#%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ñ‚Ñ€Ð¾Ðº %#Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB(%pA) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾ (%# Ð±Ð°Ð¹Ñ‚)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%#) Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¸Ð»Ð¸ Ñ€Ð°Ð²Ð½Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ %s (%#)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð´Ð°Ð½Ð½Ñ‹Ñ… (%#) Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð±ÑƒÑ„ÐµÑ€Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ‚Ð¸Ð¿Ð° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾ %#Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ… Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð» (%)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ… Ð±Ð¾Ð»ÑŒÑˆÐµ (%) Ñ‡ÐµÐ¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð¾, Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐµÑ�Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%#lx)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ %%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð°: %%pB(%pA+%#): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ %u >= % Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð³Ñ€ÑƒÐ¿Ð¿: %#%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð³Ñ€ÑƒÐ¿Ð¿: %#%pB: Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA lma %# Ð¿Ð¾Ð´Ð¾Ð³Ð½Ð°Ð½Ð¾ Ðº %#%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð¿Ð¾ vaddr=%#, Ñ�Ñ‚Ð¾ Ñ‚Ð°Ðº Ð·Ð°Ð´ÑƒÐ¼Ñ‹Ð²Ð°Ð»Ð¾Ñ�ÑŒ?%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° %#%pB(%pA+%#): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CMEM Ð² Â«%sÂ», 16 MSB Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð²Ð½Ð¾ %#)%pB(%pA+%#): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CMEM Ð² Â«%s+%#Â», 16 MSB Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð²Ð½Ð¾ %#)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %s Â«%#lxÂ» Ð² Ñ‚Ñ€Ð°Ð¼Ð¿Ð»Ð¸Ð½Ðµ TLS%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %s Â«%#lxÂ», Ð½Ð° ÐºÐ¾Ñ‚Ð¾Ñ€ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� TLS_GOTDESC%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ%pB(%pA+%#): Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ ALU Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ñ‹ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ADD Ð¸Ð»Ð¸ SUB%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� %# Ð´Ð»Ñ� Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %s%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ SEC_MERGE%pB(%pA+%#): %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ %s%pB(%pA+%#): %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� Ð½Ðµ TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ %s%pB(%#): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX; Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ % Ð±Ð°Ð¹Ñ‚; Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�%pB(%pA+%#): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ»%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Â«%sÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ° %d%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ Â«%pA+%#Â» Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ % Ñƒ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ % Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´Ð¾Ñ�Ñ‚Ð¸Ñ‡ÑŒ %s, Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -ffunction-sections%pB(%pA+%#): Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %#x Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð½Ðµ Ð¾Ð±Ñ‰ÐµÐ¹ Ñ�Ñ�Ñ‹Ð»ÐºÐµ%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ %s Ð´Ð»Ñ� %s%pB: TLS-Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ Ð¸Ð· %s Ð² %s Ð´Ð»Ñ� Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº ip2k: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# (Ð½Ð°Ð·Ð½Ð°Ñ‡ = %#)ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº ip2k: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# (Ð½Ð°Ð·Ð½Ð°Ñ‡ = %#)%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#%pB(%pA+%#): Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ %#x%pB(%pA): Ð½ÐµÐ±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ PID %s Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# (Ð´Ð»Ñ� %s Ð² %s)%pB(%pA+%#): Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� Ð´Ð»Ñ� TLS-Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CALL15 Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð½Ðµ Ð´Ð»Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: R_SH_USES ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½ÑƒÑŽ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ 0x%x%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ðµ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ñ� Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ñ�%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s (%#)%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_PSHA %# Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° -32..32%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_PSHL %# Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° -32..32%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ðº Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ GD->LE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd4??)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xc7??)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd1??)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x310c)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x410b)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x34cc)%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ IE->LE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd0??: mov.l)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x0?12: stc)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x0?ce: mov.l)%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ GD->IE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ LD->LE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#%pB(%s+%#): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½ÑƒÑŽ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ %#x%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ GOT Ð¸Ð· % Ðº Â«%sÂ» Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ GOT Ð¸Ð· %%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ PLT Ð¸Ð· % Ðº Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ðº % Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%pB(%pA+%): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ€Ð°Ð·Ð¼ÐµÑ€=%)%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� XTENSA_ASM_SIMPLIFY; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s%pB: %pA+%#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð´Ð»Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ .plt, Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ dp = %#%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´Ð¾Ð±Ñ€Ð°Ñ‚ÑŒÑ�Ñ� Ð´Ð¾ %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ�Ð»Ð°Ð±Ð¸Ñ‚ÑŒ br Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ brl Ð¸Ð»Ð¸ ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ… (%# >= 0x400000)%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ TLS-Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð´Ð»Ñ� Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ».%pB: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ�Ð»Ð°Ð±Ð¸Ñ‚ÑŒ br (%s) Ð´Ð¾ Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ %# (> 0x1000000).Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ñ�Ñ� Ñ� % Ð² %pB Ð½Ð° % Ð² %pB%pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ % Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %ld%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ Ð½ÐµÑ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²Ð¸Ñ� Ð´Ð»Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ�
+Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð¸Ð¼ÐµÐµÑ‚ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÑƒÐ¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ %s, Ð° Ð½Ðµ %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: --enable-non-contiguous-regions Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°ÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð¸Ð· Â«%sÂ»
+Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: --plt-localentry Ð¾Ñ�Ð¾Ð±ÐµÐ½Ð½Ð¾ Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð±ÐµÐ· Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ Ð² ld.so Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð½Ð°Ñ€ÑƒÑˆÐµÐ½Ð¸Ð¹ ABIÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78_SYM Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RX_SYM Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %u Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB Ð±Ð¾Ð»ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ (%u) ÐµÐ³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pAÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %u Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB Ð¼ÐµÐ½ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ %u Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð·Ð¾Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %s, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð±Ñ€Ð¾Ñ� Ñ„Ð»Ð°Ð³Ð° Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ %pB, Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ� Ð½Ð¸Ð¼ Ð±Ñ‹Ð» Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð±ÐµÐ· Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð¸Ð· %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‡Ð¸Ñ‰Ð°ÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð´Ð»Ñ� %pB Ð¸Ð·-Ð·Ð° Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ð·Ð°Ð¿Ñ€Ð¾Ñ�Ð°Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚ÐºÐ¸
+Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ %pB Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ ck%s ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� ck%s Ñ†ÐµÐ»Ð¸, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ ck%sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gc-sections Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ¹ Ð½Ðµ-PIC ÐºÐ¾Ð´Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ¹ Ð½Ðµ-PID ÐºÐ¾Ð´Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð»Ð°Ð³ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð´Ð»Ñ� %pB Ð½Ðµ ÑƒÑ�Ñ‚Ð°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�, Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ð½ ÑƒÐ¶Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚ÑƒÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ 1.9.1 Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ� Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ñ�Ð¼Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¹.Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·ÑƒÐµÑ‚Ñ�Ñ� Ð² Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸ÐµÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½ Ð½Ð° PROGBITSÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¸ Ð½Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ð¸ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½ Ñ� %d Ð½Ð° %d Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ð¹ eflag Â«%#lxÂ»Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ñ‹ Ð¸Ð»Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð¸ Ñ„Ð»Ð°Ð³Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð¼Ð°ÑˆÐ¸Ð½Ð° Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð² Ð°Ñ€Ñ…Ð¸Ð²: Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð¼ÐµÑ‚ÐºÐ° Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÑ‚Ñ�Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð¿Ð¾ Ð¾Ð³Ñ€Ð¾Ð¼Ð½Ð¾Ð¼Ñƒ (Ñ‚. Ðµ., Ð¾Ñ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¼Ñƒ) Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð¼Ñƒ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» xdata
+Ð´Ð°Ð²Ð°Ð¼ Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�Ñ‚ÑŒ %s Ð² Ñ�Ñ†ÐµÐ½Ð°Ñ€Ð¸Ð¸PRIu64PRIx64PRId64%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: %#: warning: bad R_SH_USES offset%pB: %#: warning: R_SH_USES points to unrecognized insn %#x%pB: %#: warning: bad R_SH_USES load offset%pB: %#: warning: could not find expected reloc%pB: %#: warning: symbol in unexpected section%pB: %#: warning: could not find expected COUNT reloc%pB: %#: warning: bad count%pB: %#: fatal: reloc overflow while relaxing%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: bad reloc address %# in section `%pA'error: %pB(%pA) section size (%# bytes) is larger than file size (%# bytes)error: %pB(%pA) is too large (%# bytes)DWARF error: offset (%) greater than or equal to %s size (%)DWARF error: data count (%) larger than buffer sizeDWARF error: unknown format content type %DWARF error: line info section is too small (%)DWARF error: line info data is bigger (%#) than the space remaining in the section (%#lx)DWARF error: unable to read alt ref %DWARF error: unable to locate abstract instance DIE ref %%pB: error: attribute section length too small: %%pB(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%pB: invalid size field in group section header: %#%pB: section %pA lma %# adjusted to %#%pB: warning: empty loadable segment detected at vaddr=%#, is this intentional?%pB: warning: segment alignment of %# is too large%pB(%pA+%#): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): CMEM relocation to `%s+%#' is invalid, 16 MSB should be %#x (value is %#)ERROR: CMSE stub (%s section) too far (%#) from destination (%#)%pB(%pA+%#): unexpected %s instruction '%#lx' in TLS trampoline%pB(%pA+%#): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC%pB(%pA+%#): %s relocation not permitted in shared object%pB(%pA+%#): only ADD or SUB instructions are allowed for ALU group relocations%pB(%pA+%#): overflow whilst splitting %# for group relocation %s%pB(%pA+%#): %s relocation against SEC_MERGE section%pB(%pA+%#): %s used with TLS symbol %s%pB(%pA+%#): %s used with non-TLS symbol %s%pB(%#): error: cannot create STM32L4XX veneer; jump out of range by % bytes; cannot encode branch instruction%pB(%pA+%#): unresolvable relocation against symbol `%s'%pB(%pA+%#): reloc against `%s': error %d%pB: relocation at `%pA+%#' references symbol `%s' with nonzero addend%pB, section %pA: relocation %s with non-zero addend % against local symbol%pB, section %pA: relocation %s with non-zero addend % against symbol `%s'%pB(%pA+%#): cannot reach %s, recompile with -ffunction-sections%pB(%pA+%#): %s fixup for insn %#x is not supported in a non-shared link%pB(%pA+%#): cannot handle %s for %s%pB: TLS transition from %s to %s against `%s' at %# in section `%pA' failedip2k linker: missing page instruction at %# (dest = %#)ip2k linker: redundant page instruction at %# (dest = %#)%pB: warning: %s points to unrecognized reloc at %#global pointer relative relocation at address %# when _gp not defined
+unable to reach %s (at %#) from the global pointer (at %#) because the offset (%) is out of the allowed range, -32678 to 32767
+%pB(%pA+%#): error: %s with unexpected instruction %#x%pB(%pA): unsafe PID relocation %s at %# (against %s in %s)%pB(%pA+%#): invalid instruction for TLS relocation %s%pB: CALL15 reloc at %# not against global symbol%pB: %#: warning: R_SH_USES points to unrecognized insn 0x%x%pB: %#: fatal: unaligned branch target for relax-support relocation%pB: %#: fatal: unaligned %s relocation %#%pB: %#: fatal: R_SH_PSHA relocation % not in range -32..32%pB: %#: fatal: R_SH_PSHL relocation % not in range -32..32%pB(%pA+%#): cannot emit fixup to `%s' in read-only section%pB(%pA+%#): %s relocation against external symbol "%s"%pB(%pA): offset in relocation for GD->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd4??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xc7??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xd1??)%pB(%pA+%#): unexpected instruction %#04X (expected 0x310c)%pB(%pA+%#): unexpected instruction %#04X (expected 0x410b)%pB(%pA+%#): unexpected instruction %#04X (expected 0x34cc)%pB(%pA): offset in relocation for IE->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd0??: mov.l)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?12: stc)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?ce: mov.l)%pB(%pA): offset in relocation for GD->IE translation is too small: %#%pB(%pA): offset in relocation for LD->LE translation is too small: %#%pB(%s+%#): unresolvable %s relocation against symbol `%s'%pB: %#: warning: %s points to unrecognized insns%pB: %#: warning: %s points to unrecognized insn %#x%pB: %#: warning: %s points to unrecognized reloc%pB: %#: warning: %s points to unrecognized reloc %#%pB: warning: GOT addend of % to `%s' does not match previous GOT addend of %%pB: warning: PLT addend of % to `%s' from %pA section ignored%pB: warning: %s relocation to %# from %pA section%pB(%pA+%#): relocation offset out of range (size=%#)%pB(%pA+%#): could not decode instruction; possible configuration mismatch%pB(%pA+%#): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%pB(%pA+%#): unexpected fix for %s relocation%pB: %pA+%#: warning: %s relocation against unexpected insnstub entry for %s cannot load .plt, dp offset = %%pB(%pA+%#): cannot reach %s%pB: can't relax br at %# in section `%pA'; please use brl or indirect branch%pB: short data segment overflowed (%# >= 0x400000)%pB: missing TLS section for relocation %s against `%s' at %# in section `%pA'.%pB: Can't relax br (%s) to `%s' at %# in section `%pA' with size %# (> 0x1000000).warning: size of symbol `%s' changed from % in %pB to % in %pB%pB(%pA): relocation % has invalid symbol index %ld%pB: Internal inconsistency error for value for
+ linker-allocated global register: linked: %# != relaxed: %#%pB: LOCAL directive: register $% is not a local register; first global register is $%%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %%pB: addend %s%#x in relocation %s against symbol `%s' at %# in section `%pA' is out of range%pB: version count (%) does not match symbol count (%ld)warning: %pB is truncated: expected core file size >= %, found: %%pB: bad reloc symbol index (%# >= %#lx) for offset %# in section `%pA'%pB: non-zero symbol index (%#) for offset %# in section `%pA' when the object file has no symbol tableerror: %pB contains a reloc (%#) for section %pA that references a non-existent global symbol%pB: %pA+%#: no symbol found for INHERIT%pB: incorrect `.reginfo' section size; expected %, got %%pB: GOT reloc at %# not expected in executables%pB: CALL16 reloc at %# not against global symbol%pB: can't find matching LO16 reloc against `%s' for %s at %# in section `%pA'%pB: `%pA' entry VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB: `%pA' offset of % from `%pA' beyond the range of ADDIUPC%pB: `%pA' start VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB 64-bit address %# out of range for Intel Hex file%pB: address %# out of range for Intel Hex filesection address (%#) below start of segment (%#)%pB: access beyond end of merged section (%)%pB: attempt to emit contents at non-multiple-of-4 address %#%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %%pB: XMC_TC0 symbol `%s' is class %d scnlen %%pB: reloc %s:% not in csectTOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%pB: Data Directory size (%lx) exceeds space left in section (%)%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ % >= %%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TOC Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð±ÐµÐ· Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° TOC%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_USES%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: R_SH_USES ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½ÑƒÑŽ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ %#x%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ñ‡Ð½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_USES%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ COUNT%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ñ€Ð¸ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ð¸%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ñ‚Ñ€Ð¾Ðº %#%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pB(%pA) Ñ€Ð°Ð²ÐµÐ½ %#, Ñ�Ñ‚Ð¾ Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ„Ð°Ð¹Ð»Ð° (%# Ð±Ð°Ð¹Ñ‚)Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB(%pA) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾ (%# Ð±Ð°Ð¹Ñ‚)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%#) Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¸Ð»Ð¸ Ñ€Ð°Ð²Ð½Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ %s (%#)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð´Ð°Ð½Ð½Ñ‹Ñ… (%#) Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð±ÑƒÑ„ÐµÑ€Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ‚Ð¸Ð¿Ð° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾ %#Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ… Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð» (%)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ… Ð±Ð¾Ð»ÑŒÑˆÐµ (%) Ñ‡ÐµÐ¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð¾, Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐµÑ�Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%#lx)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ %Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ñ‹Ð¹ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ DIE %%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð°: %%pB(%pA+%#): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ %u >= % Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð³Ñ€ÑƒÐ¿Ð¿: %#%pB: Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA lma %# Ð¿Ð¾Ð´Ð¾Ð³Ð½Ð°Ð½Ð¾ Ðº %#%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð¿Ð¾ vaddr=%#, Ñ�Ñ‚Ð¾ Ñ‚Ð°Ðº Ð·Ð°Ð´ÑƒÐ¼Ñ‹Ð²Ð°Ð»Ð¾Ñ�ÑŒ?%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° %#%pB(%pA+%#): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CMEM Ð² Â«%sÂ», 16 MSB Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð²Ð½Ð¾ %#)%pB(%pA+%#): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CMEM Ð² Â«%s+%#Â», 16 MSB Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð²Ð½Ð¾ %#)ÐžÐ¨Ð˜Ð‘ÐšÐ�: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° CMSE (Ñ€Ð°Ð·Ð´ÐµÐ» %s) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð´Ð°Ð»ÐµÐºÐ¾ (%#) Ð¾Ñ‚ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� (%#)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %s Â«%#lxÂ» Ð² Ñ‚Ñ€Ð°Ð¼Ð¿Ð»Ð¸Ð½Ðµ TLS%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %s Â«%#lxÂ», Ð½Ð° ÐºÐ¾Ñ‚Ð¾Ñ€ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� TLS_GOTDESC%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ%pB(%pA+%#): Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ ALU Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ñ‹ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ADD Ð¸Ð»Ð¸ SUB%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� %# Ð´Ð»Ñ� Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %s%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ SEC_MERGE%pB(%pA+%#): %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ %s%pB(%pA+%#): %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� Ð½Ðµ TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ %s%pB(%#): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX; Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ % Ð±Ð°Ð¹Ñ‚; Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�%pB(%pA+%#): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ»%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Â«%sÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ° %d%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ Â«%pA+%#Â» Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ % Ñƒ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ % Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´Ð¾Ñ�Ñ‚Ð¸Ñ‡ÑŒ %s, Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -ffunction-sections%pB(%pA+%#): Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %#x Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð½Ðµ Ð¾Ð±Ñ‰ÐµÐ¹ Ñ�Ñ�Ñ‹Ð»ÐºÐµ%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ %s Ð´Ð»Ñ� %s%pB: TLS-Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ Ð¸Ð· %s Ð² %s Ð´Ð»Ñ� Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº ip2k: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# (Ð½Ð°Ð·Ð½Ð°Ñ‡ = %#)ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº ip2k: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# (Ð½Ð°Ð·Ð½Ð°Ñ‡ = %#)%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°
+Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´Ð¾Ñ�Ñ‚Ð¸Ñ‡ÑŒ %s (Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#) Ð¸Ð· Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ� (%#), Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%) Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð¸Ð· Ñ€Ð°Ð·Ñ€ÐµÑˆÑ‘Ð½Ð½Ð¾Ð³Ð¾ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° -32678â€”32767
+%pB(%pA+%#): Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ %#x%pB(%pA): Ð½ÐµÐ±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ PID %s Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# (Ð´Ð»Ñ� %s Ð² %s)%pB(%pA+%#): Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� Ð´Ð»Ñ� TLS-Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CALL15 Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð½Ðµ Ð´Ð»Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: R_SH_USES ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½ÑƒÑŽ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ 0x%x%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ðµ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ñ� Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ñ�%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s (%#)%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_PSHA %# Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° -32..32%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_PSHL %# Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° -32..32%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ðº Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ GD->LE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd4??)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xc7??)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd1??)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x310c)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x410b)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x34cc)%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ IE->LE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd0??: mov.l)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x0?12: stc)%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x0?ce: mov.l)%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ GD->IE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ LD->LE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#%pB(%s+%#): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½ÑƒÑŽ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ %#x%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ GOT Ð¸Ð· % Ðº Â«%sÂ» Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ GOT Ð¸Ð· %%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ PLT Ð¸Ð· % Ðº Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ðº % Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%pB(%pA+%): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ€Ð°Ð·Ð¼ÐµÑ€=%)%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� XTENSA_ASM_SIMPLIFY; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸%pB(%pA+%#): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s%pB: %pA+%#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð´Ð»Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ .plt, Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ dp = %#%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´Ð¾Ð±Ñ€Ð°Ñ‚ÑŒÑ�Ñ� Ð´Ð¾ %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ�Ð»Ð°Ð±Ð¸Ñ‚ÑŒ br Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ brl Ð¸Ð»Ð¸ ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ… (%# >= 0x400000)%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ TLS-Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð´Ð»Ñ� Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ».%pB: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ�Ð»Ð°Ð±Ð¸Ñ‚ÑŒ br (%s) Ð´Ð¾ Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ %# (> 0x1000000).Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ñ�Ñ� Ñ� % Ð² %pB Ð½Ð° % Ð² %pB%pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ % Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %ld%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ Ð½ÐµÑ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²Ð¸Ñ� Ð´Ð»Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ�
  Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ¾Ð¼: Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½: % != Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½: %%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° LOCAL: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€ $% Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼; Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€: $%%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð²Ð¼ÐµÑ�Ñ‚Ðµ Ñ� STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ: %%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ %s%#x Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ».%pB: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð²ÐµÑ€Ñ�Ð¸Ð¸ (%) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ�Ð¾ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° (%ld)Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB ÑƒÑ�ÐµÑ‡Ñ‘Ð½: Ð¾Ð¶Ð¸Ð´Ð°Ð»Ñ�Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð° core >= %, Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾: %%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° (%# >= %#lx) Ð´Ð»Ñ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»%pB: Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° (%#) Ð´Ð»Ñ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ», Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº Ð² Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ Ð½ÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%#) Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½ÐµÑ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB: %pA+%#: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð»Ñ� INHERIT%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«.reginfoÂ»; Ð¾Ð¶Ð¸Ð´Ð°Ð»Ñ�Ñ� %, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½ %%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GOT Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð½Ðµ Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñ…%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CALL16 Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð½Ðµ Ð´Ð»Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰ÐµÐµ LO16 Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñƒ Â«%sÂ» Ð´Ð»Ñ� %s Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»%pB: VMA Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Â«%pAÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ðµ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³Ð¾ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Â«-Ttext-segment=â€¦Â»%pB: Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pAÂ» Ð´Ð»Ñ� % Ð¸Ð· Â«%pAÂ» Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° ADDIUPC%pB: Ñ�Ñ‚Ð°Ñ€Ñ‚Ð¾Ð²Ñ‹Ð¹ VMA Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Â«%pAÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ðµ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³Ð¾ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Â«-Ttext-segment=â€¦Â»%pB: 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� %# Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° Intel Hex Ñ„Ð°Ð¹Ð»Ð°%pB: Ð°Ð´Ñ€ÐµÑ� %# Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° Intel Hex Ñ„Ð°Ð¹Ð»Ð°Ð°Ð´Ñ€ÐµÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%#) Ð¼ÐµÐ½ÑŒÑˆÐµ Ð½Ð°Ñ‡Ð°Ð»Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° (%#)%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%)%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð²Ñ‹Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ 4 (%#)%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²; Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ€Ð°Ð²Ð½Ð° %%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð´Ð»Ñ� Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² Ð´Ð»Ð¸Ð½Ñ‹ %: %#%pB: Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» XTY_ER Â«%sÂ»: ÐºÐ»Ð°Ñ�Ñ� %d scnum %d scnlen %%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» XMC_TC0 Â«%sÂ» Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð¾Ð¼ %d scnlen %%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s:% Ð½Ðµ Ð² csectÐ¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ TOC: % > 0x10000; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� -mminimal-toc%pB(%pA+%#): Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� % Ð±Ð°Ð¹Ñ‚ Ð´Ð»Ñ� Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ� Ð¿Ð¾ %-Ð±Ð°Ð¹Ñ‚Ð½Ð¾Ð¹ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ, Ð½Ð¾ ÐµÑ�Ñ‚ÑŒ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ %%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ… (%lx) Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐµÑ�Ñ� Ð¼ÐµÑ�Ñ‚Ð¾ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%)
\ No newline at end of file
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/ru.po ./bfd/po/ru.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/ru.po	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/po/ru.po	2021-05-21 01:57:23.000000000 +0000
@@ -2,13 +2,13 @@
 # Copyright (C) 2003, 2005, 2006, 2009 Free Software Foundation, Inc.
 # This file is distributed under the same license as the binutils package.
 #
-# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2011, 2012, 2018, 2019.
+# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2011, 2012, 2018, 2019, 2020.
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd 2.31.90\n"
+"Project-Id-Version: bfd 2.34.90\n"
 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2019-01-19 16:30+0000\n"
-"PO-Revision-Date: 2019-01-24 18:57+0300\n"
+"POT-Creation-Date: 2020-07-04 10:26+0100\n"
+"PO-Revision-Date: 2020-07-30 19:54+0300\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@d07.ru>\n"
 "Language: ru\n"
@@ -19,222 +19,235 @@ msgstr ""
 "X-Generator: Lokalize 2.0\n"
 "Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: aout-cris.c:200
+#: aout-cris.c:196
 #, c-format
 msgid "%pB: unsupported relocation type exported: %#x"
 msgstr "%pB: Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x"
 
-#: aout-cris.c:244
+#: aout-cris.c:242
 #, c-format
 msgid "%pB: unsupported relocation type imported: %#x"
 msgstr "%pB: Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x"
 
-#: aout-cris.c:256
+#: aout-cris.c:254
 #, c-format
 msgid "%pB: bad relocation record imported: %d"
 msgstr "%pB: Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸: %d"
 
-#: aoutx.h:1265 aoutx.h:1618 pdp11.c:1138 pdp11.c:1399
+#: aoutx.h:1265 aoutx.h:1613 pdp11.c:1236 pdp11.c:1510
 #, c-format
 msgid "%pB: can not represent section `%pA' in a.out object file format"
 msgstr "%pB: Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° a.out"
 
-#: aoutx.h:1582 pdp11.c:1371
+#: aoutx.h:1577 pdp11.c:1482
 #, c-format
 msgid "%pB: can not represent section for symbol `%s' in a.out object file format"
 msgstr "%pB: Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° a.out"
 
-#: aoutx.h:1585 vms-alpha.c:7860
+#: aoutx.h:1580 vms-alpha.c:8040
 msgid "*unknown*"
 msgstr "*Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾*"
 
-#: aoutx.h:1721
+#: aoutx.h:1716 pdp11.c:1578
 #, c-format
 msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ %<PRIu64> >= %<PRIu64>"
 
-#: aoutx.h:2412 aoutx.h:2430
+#: aoutx.h:1963
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� AOUT: %d"
+
+#: aoutx.h:2412 aoutx.h:2430 pdp11.c:2058
 #, c-format
 msgid "%pB: attempt to write out unknown reloc type"
 msgstr "%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
-#: aoutx.h:4086
+#: aoutx.h:4087 pdp11.c:3441
 #, c-format
 msgid "%pB: unsupported relocation type"
 msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
 #. Unknown relocation.
-#: aoutx.h:4407 coff-alpha.c:601 coff-alpha.c:1514 coff-rs6000.c:2772
+#: aoutx.h:4408 coff-alpha.c:601 coff-alpha.c:1512 coff-rs6000.c:2758
 #: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:279 elf-hppa.h:798
-#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:517
-#: elf32-arm.c:1943 elf32-avr.c:964 elf32-bfin.c:1061 elf32-bfin.c:4698
-#: elf32-cr16.c:653 elf32-cr16.c:683 elf32-cr16c.c:186 elf32-cris.c:467
-#: elf32-crx.c:429 elf32-csky.c:989 elf32-d10v.c:234 elf32-d30v.c:522
-#: elf32-d30v.c:544 elf32-dlx.c:548 elf32-epiphany.c:376 elf32-fr30.c:381
-#: elf32-frv.c:2558 elf32-frv.c:6262 elf32-ft32.c:306 elf32-h8300.c:302
-#: elf32-i386.c:401 elf32-ip2k.c:1245 elf32-iq2000.c:442 elf32-lm32.c:539
-#: elf32-m32c.c:305 elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2417
-#: elf32-m68hc11.c:390 elf32-m68hc12.c:510 elf32-m68k.c:352 elf32-mcore.c:354
-#: elf32-mcore.c:440 elf32-mep.c:389 elf32-metag.c:878 elf32-microblaze.c:692
-#: elf32-microblaze.c:969 elf32-mips.c:2229 elf32-moxie.c:137
-#: elf32-msp430.c:648 elf32-msp430.c:658 elf32-mt.c:241 elf32-nds32.c:3236
-#: elf32-nds32.c:3262 elf32-nds32.c:5173 elf32-nios2.c:3015 elf32-or1k.c:1037
-#: elf32-pj.c:325 elf32-ppc.c:898 elf32-ppc.c:911 elf32-pru.c:420
-#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:292
-#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:160 elf32-tic6x.c:1508
-#: elf32-tic6x.c:1518 elf32-tic6x.c:1537 elf32-tic6x.c:1547 elf32-tic6x.c:2642
-#: elf32-tilepro.c:803 elf32-v850.c:1899 elf32-v850.c:1921 elf32-v850.c:4270
-#: elf32-vax.c:290 elf32-visium.c:482 elf32-wasm32.c:105 elf32-xc16x.c:250
-#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:459
-#: elf32-xtensa.c:493 elf64-alpha.c:1112 elf64-alpha.c:4101 elf64-alpha.c:4249
-#: elf64-ia64-vms.c:254 elf64-ia64-vms.c:3440 elf64-mips.c:3958
-#: elf64-mips.c:3974 elf64-mmix.c:1264 elf64-nfp.c:238 elf64-ppc.c:921
-#: elf64-ppc.c:1209 elf64-ppc.c:1218 elf64-s390.c:328 elf64-s390.c:378
-#: elf64-x86-64.c:285 elfn32-mips.c:3786 elfxx-ia64.c:324 elfxx-riscv.c:955
-#: elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:912 elfxx-tilegx.c:952
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:2125
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:2223
-#: elf32-ia64.c:210 elf32-ia64.c:3862 elf64-ia64.c:210 elf64-ia64.c:3862
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:532
+#: elf32-arm.c:1985 elf32-avr.c:962 elf32-bfin.c:1062 elf32-bfin.c:4677
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:990 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:372 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6239 elf32-ft32.c:306 elf32-h8300.c:302 elf32-i386.c:400
+#: elf32-ip2k.c:1240 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2232 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:389 elf32-metag.c:874 elf32-microblaze.c:692
+#: elf32-microblaze.c:965 elf32-mips.c:2229 elf32-moxie.c:137
+#: elf32-msp430.c:653 elf32-msp430.c:663 elf32-mt.c:241 elf32-nds32.c:3237
+#: elf32-nds32.c:3263 elf32-nds32.c:5033 elf32-nios2.c:3022 elf32-or1k.c:1040
+#: elf32-pj.c:326 elf32-ppc.c:901 elf32-ppc.c:914 elf32-pru.c:423
+#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:296
+#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:163 elf32-tic6x.c:1498
+#: elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537 elf32-tic6x.c:2583
+#: elf32-tilepro.c:800 elf32-v850.c:1898 elf32-v850.c:1920 elf32-v850.c:4270
+#: elf32-vax.c:290 elf32-visium.c:481 elf32-wasm32.c:105 elf32-xc16x.c:250
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:522
+#: elf32-xtensa.c:556 elf32-z80.c:331 elf64-alpha.c:1113 elf64-alpha.c:4067
+#: elf64-alpha.c:4215 elf64-bpf.c:322 elf64-ia64-vms.c:254
+#: elf64-ia64-vms.c:3429 elf64-mips.c:3958 elf64-mips.c:3974 elf64-mmix.c:1264
+#: elf64-nfp.c:238 elf64-ppc.c:1014 elf64-ppc.c:1366 elf64-ppc.c:1375
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:281 elfn32-mips.c:3786
+#: elfxx-ia64.c:324 elfxx-riscv.c:954 elfxx-sparc.c:589 elfxx-sparc.c:639
+#: elfxx-tilegx.c:909 elfxx-tilegx.c:949 elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2313 elfnn-ia64.c:213 elfnn-ia64.c:3824
 #, c-format
 msgid "%pB: unsupported relocation type %#x"
 msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#x"
 
-#: aoutx.h:5434 pdp11.c:3694
+#: aoutx.h:5435 pdp11.c:3864
 #, c-format
 msgid "%pB: relocatable link from %s to %s not supported"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð¸Ð· %s Ð² %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: archive.c:2214
+#: arc-got.h:69
+#, c-format
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² GOT"
+
+#: archive.c:2249
 msgid "warning: writing archive was slow: rewriting timestamp"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð² Ð°Ñ€Ñ…Ð¸Ð²: Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð¼ÐµÑ‚ÐºÐ° Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸"
 
-#: archive.c:2330 linker.c:1429
+#: archive.c:2316 archive.c:2376 elflink.c:4545 linker.c:1428
 #, c-format
 msgid "%pB: plugin needed to handle lto object"
 msgstr "%pB: Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° lto Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¼Ð¾Ð´ÑƒÐ»ÑŒ"
 
-#: archive.c:2559
+#: archive.c:2602
 msgid "Reading archive file mod timestamp"
 msgstr "Ð§Ñ‚ÐµÐ½Ð¸Ðµ Ð¼ÐµÑ‚ÐºÐ¸ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ� Ð°Ñ€Ñ…Ð¸Ð²Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°"
 
-#: archive.c:2583
+#: archive.c:2626
 msgid "Writing updated armap timestamp"
 msgstr "Ð—Ð°Ð¿Ð¸Ñ�ÑŒ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñ‘Ð½Ð½Ð¾Ð¹ Ð¼ÐµÑ‚ÐºÐ¸ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ armap"
 
-#: bfd.c:449
+#: bfd.c:677
 msgid "no error"
 msgstr "Ð½ÐµÑ‚ Ð¾ÑˆÐ¸Ð±ÐºÐ¸"
 
-#: bfd.c:450
+#: bfd.c:678
 msgid "system call error"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ Ð²Ñ‹Ð·Ð¾Ð²Ð°"
 
-#: bfd.c:451
+#: bfd.c:679
 msgid "invalid bfd target"
 msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� Ñ†ÐµÐ»ÑŒ bfd"
 
-#: bfd.c:452
+#: bfd.c:680
 msgid "file in wrong format"
 msgstr "Ñ„Ð°Ð¹Ð» Ð² Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ"
 
-#: bfd.c:453
+#: bfd.c:681
 msgid "archive object file in wrong format"
 msgstr "Ð°Ñ€Ñ…Ð¸Ð²Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ð² Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ"
 
-#: bfd.c:454
+#: bfd.c:682
 msgid "invalid operation"
 msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ�"
 
-#: bfd.c:455
+#: bfd.c:683
 msgid "memory exhausted"
 msgstr "Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð°Ñ�ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ"
 
-#: bfd.c:456
+#: bfd.c:684
 msgid "no symbols"
 msgstr "Ð½ÐµÑ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"
 
-#: bfd.c:457
+#: bfd.c:685
 msgid "archive has no index; run ranlib to add one"
 msgstr "Ð°Ñ€Ñ…Ð¸Ð² Ð±ÐµÐ· Ð¸Ð½Ð´ÐµÐºÑ�Ð°; Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ðµ ranlib Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ�"
 
-#: bfd.c:458
+#: bfd.c:686
 msgid "no more archived files"
 msgstr "Ð°Ñ€Ñ…Ð¸Ð²Ð½Ñ‹Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¸Ñ�ÑŒ"
 
-#: bfd.c:459
+#: bfd.c:687
 msgid "malformed archive"
 msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ñ‹Ð¹ Ð°Ñ€Ñ…Ð¸Ð²"
 
-#: bfd.c:460
+#: bfd.c:688
 msgid "DSO missing from command line"
 msgstr "Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñ�Ñ‚Ñ€Ð¾ÐºÐµ Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ DSO"
 
-#: bfd.c:461
+#: bfd.c:689
 msgid "file format not recognized"
 msgstr "Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ Ñ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½"
 
-#: bfd.c:462
+#: bfd.c:690
 msgid "file format is ambiguous"
 msgstr "Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½"
 
-#: bfd.c:463
+#: bfd.c:691
 msgid "section has no contents"
 msgstr "Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾"
 
-#: bfd.c:464
+#: bfd.c:692
 msgid "nonrepresentable section on output"
 msgstr "Ñ€Ð°Ð·Ð´ÐµÐ», Ð½ÐµÐ¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ñ‹Ð¹ Ð´Ð»Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð°"
 
-#: bfd.c:465
+#: bfd.c:693
 msgid "symbol needs debug section which does not exist"
 msgstr "Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ», Ð½Ð¾ ÐµÐ³Ð¾ Ð½Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚"
 
-#: bfd.c:466
+#: bfd.c:694
 msgid "bad value"
 msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ"
 
-#: bfd.c:467
+#: bfd.c:695
 msgid "file truncated"
 msgstr "Ñ„Ð°Ð¹Ð» ÑƒÑ�ÐµÑ‡Ñ‘Ð½"
 
-#: bfd.c:468
+#: bfd.c:696
 msgid "file too big"
 msgstr "Ñ„Ð°Ð¹Ð» Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹"
 
-#: bfd.c:469
+#: bfd.c:697
+msgid "sorry, cannot handle this file"
+msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ�Ñ‚Ð¾Ñ‚ Ñ„Ð°Ð¹Ð»"
+
+#: bfd.c:698
 #, c-format
 msgid "error reading %s: %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� %s: %s"
 
-#: bfd.c:470
+#: bfd.c:699
 msgid "#<invalid error code>"
 msgstr "#<Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ ÐºÐ¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸>"
 
-#: bfd.c:1429
+#: bfd.c:1658
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ� BFD %s Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶Ð¸Ð» Ð¾ÑˆÐ¸Ð±ÐºÑƒ %s:%d"
 
-#: bfd.c:1442
+#: bfd.c:1671
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d in %s\n"
 msgstr "Ð’Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð² Ð½Ð° %s:%d Ð² %s\n"
 
-#: bfd.c:1447
+#: bfd.c:1676
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d\n"
 msgstr "Ð’Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð² Ð½Ð° %s:%d\n"
 
-#: bfd.c:1449
+#: bfd.c:1678
 msgid "Please report this bug.\n"
 msgstr "ÐŸÐ¾Ð¶Ð°Ð»ÑƒÐ¹Ñ�Ñ‚Ð°, Ñ�Ð¾Ð¾Ð±Ñ‰Ð¸Ñ‚Ðµ Ð¾Ð± Ñ�Ñ‚Ð¾Ð¹ Ð¾ÑˆÐ¸Ð±ÐºÐµ.\n"
 
-#: bfdwin.c:206
+#: bfdwin.c:207
 #, c-format
 msgid "not mapping: data=%lx mapped=%d\n"
 msgstr "Ð½Ðµ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð´Ð°Ð½Ð½Ñ‹Ðµ=%lx Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾=%d\n"
 
-#: bfdwin.c:209
+#: bfdwin.c:210
 #, c-format
 msgid "not mapping: env var not set\n"
 msgstr "Ð½Ðµ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� env Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ð°\n"
@@ -254,118 +267,113 @@ msgstr "Ð¿ÐµÑ€ÐµÐ¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� %
 msgid "%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¶Ð°Ñ‚Ñ‹Ðµ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Alpha; Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð½ÐµÑ�Ð¶Ð°Ñ‚Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ‚Ð¾Ñ€Ð° Ð¸Ð»Ð¸ objZ."
 
-#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1957 coff-mips.c:950
+#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1954 coff-mips.c:953
 msgid "GP relative relocation used when GP not defined"
 msgstr "Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¾ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GP, Ð½Ð¾ GP Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°"
 
-#: coff-alpha.c:1443
+#: coff-alpha.c:1441
 msgid "using multiple gp values"
 msgstr "Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ gp"
 
-#: coff-alpha.c:1501 coff-alpha.c:1507 elf.c:9100 elf32-mcore.c:100
-#: elf32-mcore.c:455 elf32-ppc.c:7697 elf32-ppc.c:8829 elf64-ppc.c:14411
+#: coff-alpha.c:1499 coff-alpha.c:1505 elf.c:9431 elf32-mcore.c:100
+#: elf32-mcore.c:455 elf32-ppc.c:7596 elf32-ppc.c:8747 elf64-ppc.c:15962
 #, c-format
 msgid "%pB: %s unsupported"
 msgstr "%pB: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: coff-mips.c:640 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
+#: coff-go32.c:156 coffswap.h:785
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: 0x%lx > 0xffff"
+
+#: coff-mips.c:643 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
 #: elf64-mips.c:3451 elfn32-mips.c:3276
 msgid "GP relative relocation when _gp not defined"
 msgstr "ÐžÑ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GP, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°"
 
-#: coff-rs6000.c:2858
+#: coff-rs6000.c:2844
 #, c-format
 msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TOC Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð±ÐµÐ· Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° TOC"
 
-#: coff-rs6000.c:3620 coff64-rs6000.c:2145
+#: coff-rs6000.c:3607 coff64-rs6000.c:2153
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized smclas %d"
 msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ smclas %d"
 
-#: coff-sh.c:780 elf32-sh.c:521
+#: coff-sh.c:778 elf32-sh.c:521
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_USES"
 
-#: coff-sh.c:791
+#: coff-sh.c:789
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: R_SH_USES ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½ÑƒÑŽ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ %#x"
 
-#: coff-sh.c:809 elf32-sh.c:552
+#: coff-sh.c:807 elf32-sh.c:552
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ñ‡Ð½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_USES"
 
-#: coff-sh.c:834 elf32-sh.c:568
+#: coff-sh.c:832 elf32-sh.c:568
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: coff-sh.c:851 elf32-sh.c:597
+#: coff-sh.c:849 elf32-sh.c:597
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ"
 
-#: coff-sh.c:977 elf32-sh.c:727
+#: coff-sh.c:975 elf32-sh.c:727
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ COUNT"
 
-#: coff-sh.c:987 elf32-sh.c:738
+#: coff-sh.c:985 elf32-sh.c:738
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad count"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº"
 
-#: coff-sh.c:1359 coff-sh.c:2647 elf32-sh.c:1142 elf32-sh.c:1512
+#: coff-sh.c:1356 coff-sh.c:2644 elf32-sh.c:1138 elf32-sh.c:1505
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
 msgstr "%pB: %#<PRIx64>: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ñ€Ð¸ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ð¸"
 
-#: coff-sh.c:1454
+#: coff-sh.c:1451
 #, c-format
 msgid "%pB: fatal: generic symbols retrieved before relaxing"
 msgstr "%pB: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ´ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸ÐµÐ¼ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ñ‹ Ð¾Ð±Ñ‰Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹"
 
-#: coff-sh.c:2785 cofflink.c:2965
+#: coff-sh.c:2781 cofflink.c:2948
 #, c-format
 msgid "%pB: illegal symbol index %ld in relocs"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %ld Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ñ…"
 
-#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5010
+#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5085
 #, c-format
 msgid "%pB: warning: illegal symbol index %ld in relocs"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %ld Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ñ…"
 
-#: coff-tic80.c:441
-#, c-format
-msgid "unsupported relocation type %#x"
-msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#x"
-
-#: coff-tic80.c:672 cofflink.c:3127
-#, c-format
-msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
-msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#<PRIx64> Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»"
-
-#: coffcode.h:954
+#: coffcode.h:961
 #, c-format
 msgid "%pB: unable to load COMDAT section name"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ð¸Ð¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° COMDAT"
 
 #. Malformed input files can trigger this test.
 #. cf PR 21781.
-#: coffcode.h:989
+#: coffcode.h:996
 #, c-format
 msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ COMDAT"
 
-#: coffcode.h:1001
+#: coffcode.h:1008
 #, c-format
 msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² COMDAT Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
 
-#: coffcode.h:1011
+#: coffcode.h:1018
 #, c-format
 msgid "%pB: warning: no symbol for section '%s' found"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
@@ -373,311 +381,315 @@ msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð
 #. Generate a warning message rather using the 'unhandled'
 #. variable as this will allow some .sys files generate by
 #. other toolchains to be processed.  See bugzilla issue 196.
-#: coffcode.h:1237
+#: coffcode.h:1249
 #, c-format
 msgid "%pB: warning: ignoring section flag %s in section %s"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s"
 
-#: coffcode.h:1306
+#: coffcode.h:1318
 #, c-format
 msgid "%pB (%s): section flag %s (%#lx) ignored"
 msgstr "%pB (%s): Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s (%#lx)"
 
-#: coffcode.h:1917
+#: coffcode.h:1934 coffcode.h:1999
 #, c-format
 msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´Ð°ÐµÑ‚Ñ�Ñ�, Ñ‡Ñ‚Ð¾ ÐµÑ�Ñ‚ÑŒ 0xffff Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹, Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�"
 
-#: coffcode.h:2315
+#: coffcode.h:2365
 #, c-format
 msgid "unrecognized TI COFF target id '0x%x'"
 msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ Ñ†ÐµÐ»Ð¸ TI COFF Â«0x%xÂ»"
 
-#: coffcode.h:2599
+#: coffcode.h:2643
 #, c-format
 msgid "%pB: reloc against a non-existent symbol index: %ld"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð½ÐµÑ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰ÐµÐ¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¸Ð½Ð´ÐµÐºÑ�Ñƒ: %ld"
 
-#: coffcode.h:2910
+#: coffcode.h:2951
 #, c-format
 msgid "%pB: page size is too large (0x%x)"
 msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ (0x%x)"
 
-#: coffcode.h:3070
+#: coffcode.h:3111
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² (%d)"
 
-#: coffcode.h:3489
+#: coffcode.h:3530
 #, c-format
 msgid "%pB: section %pA: string table overflow at offset %ld"
 msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ñ‚Ñ€Ð¾Ðº Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %ld"
 
-#: coffcode.h:3589
+#: coffcode.h:3630
 #, c-format
 msgid "%pB:%s section %s: alignment 2**%u not representable"
 msgstr "%pB:%s Ñ€Ð°Ð·Ð´ÐµÐ» %s: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ 2**%u Ð½Ðµ Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ð¾"
 
-#: coffcode.h:4276
+#: coffcode.h:4329
 #, c-format
 msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð° Ñ�Ñ‚Ñ€Ð¾Ðº (%#lx) Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%#lx)"
 
-#: coffcode.h:4291
+#: coffcode.h:4349
 #, c-format
 msgid "%pB: warning: line number table read failed"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñƒ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº"
 
-#: coffcode.h:4325 coffcode.h:4339
+#: coffcode.h:4383 coffcode.h:4397
 #, c-format
 msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� 0x%lx Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ %d"
 
-#: coffcode.h:4353
+#: coffcode.h:4411
 #, c-format
 msgid "%pB: warning: illegal symbol in line number entry %d"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %d Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸"
 
-#: coffcode.h:4366
+#: coffcode.h:4424
 #, c-format
 msgid "%pB: warning: duplicate line number information for `%s'"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð¾ Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ Ð´Ð»Ñ� Â«%sÂ»"
 
-#: coffcode.h:4774
+#: coffcode.h:4845
 #, c-format
 msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
 msgstr "%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ ÐºÐ»Ð°Ñ�Ñ� Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� %d Ð´Ð»Ñ� %s, Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
 
-#: coffcode.h:4904
+#: coffcode.h:4975
 #, c-format
 msgid "warning: %pB: local symbol `%s' has no section"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
 
-#: coffcode.h:5050
+#: coffcode.h:5125
 #, c-format
 msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>"
 
-#: coffgen.c:178 elf.c:1216
+#: coffgen.c:179 elf.c:1236
 #, c-format
 msgid "%pB: unable to initialize compress status for section %s"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ Ñ�Ð¶Ð°Ñ‚Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s"
 
-#: coffgen.c:202 elf.c:1227
+#: coffgen.c:203 elf.c:1247
 #, c-format
 msgid "%pB: unable to initialize decompress status for section %s"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ Ñ€Ð°Ð·Ð¶Ð°Ñ‚Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s"
 
-#: coffgen.c:1657
-#, c-format
-msgid "%pB: corrupt symbol count: %#<PRIx64>"
-msgstr "%pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: %#<PRIx64>"
-
-#. PR 21013: Provide an error message when the alloc fails.
-#: coffgen.c:1666
-#, c-format
-msgid "%pB: not enough memory to allocate space for %#<PRIx64> symbols of size %#<PRIx64>"
-msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð¼ÐµÑ�Ñ‚Ð° Ð´Ð»Ñ� %#<PRIx64> Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ %#<PRIx64>"
-
-#: coffgen.c:1735
+#: coffgen.c:1704
 #, c-format
 msgid "%pB: bad string table size %<PRIu64>"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ñ‚Ñ€Ð¾Ðº %#<PRIu64>"
 
-#: coffgen.c:1912 coffgen.c:1972 coffgen.c:1990 cofflink.c:2045 elf.c:1882
-#: xcofflink.c:4505
+#: coffgen.c:1876 coffgen.c:1936 coffgen.c:1954 cofflink.c:2024 elf.c:1921
+#: xcofflink.c:4500
 msgid "<corrupt>"
 msgstr "<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾>"
 
-#: coffgen.c:2114
+#: coffgen.c:2085
 #, c-format
 msgid "<corrupt info> %s"
 msgstr "<Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð¾ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð¸> %s"
 
-#: coffgen.c:2693 elflink.c:14322 linker.c:2959
+#: coffgen.c:2675 elflink.c:14624 linker.c:2956
 msgid "%F%P: already_linked_table: %E\n"
 msgstr "%F%P: already_linked_table: %E\n"
 
-#: coffgen.c:3034 elflink.c:13324
+#: coffgen.c:3016 elflink.c:13617
 #, c-format
 msgid "removing unused section '%pA' in file '%pB'"
 msgstr "ÑƒÐ´Ð°Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð² Ñ„Ð°Ð¹Ð»Ðµ Â«%pBÂ»"
 
-#: coffgen.c:3111 elflink.c:13542
+#: coffgen.c:3093 elflink.c:13835
 msgid "warning: gc-sections option ignored"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gc-sections Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�"
 
-#: cofflink.c:352
+#: cofflink.c:366
 #, c-format
 msgid "warning: symbol `%s' is both section and non-section"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¸ Ð½Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾"
 
-#: cofflink.c:454 elf64-ia64-vms.c:5203 elflink.c:4953
+#: cofflink.c:471 elf64-ia64-vms.c:5200 elflink.c:5131
 #, c-format
 msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½ Ñ� %d Ð½Ð° %d Ð² %pB"
 
-#: cofflink.c:2373
+#: cofflink.c:2352
 #, c-format
 msgid "%pB: relocs in section `%pA', but it has no contents"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ», Ð½Ð¾ Ð¾Ð½ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾"
 
-#: cofflink.c:2436 elflink.c:10810
+#: cofflink.c:2415 elflink.c:11082
 #, c-format
 msgid "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB\n"
 msgstr "%XÂ«%sÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð² Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð· %pB: Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½ Ð² Ð¾Ñ‚Ð±Ñ€Ð¾ÑˆÐµÐ½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð¸Ð· %pB\n"
 
-#: cofflink.c:2734
+#: cofflink.c:2717
 #, c-format
 msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
 msgstr "%pB: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x > 0xffff"
 
-#: cofflink.c:2742
+#: cofflink.c:2725
 #, c-format
 msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#x > 0xffff"
 
-#: coffswap.h:789
+#: cofflink.c:3110
 #, c-format
-msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
-msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: 0x%lx > 0xffff"
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#<PRIx64> Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»"
 
-#: coffswap.h:803
+#: coffswap.h:799
 #, c-format
 msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr "%pB: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: 0x%lx > 0xffff"
 
-#: compress.c:260
+#: compress.c:271
+#, c-format
+msgid "error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size (%#<PRIx64> bytes)"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pB(%pA) Ñ€Ð°Ð²ÐµÐ½ %#<PRIx64>, Ñ�Ñ‚Ð¾ Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ„Ð°Ð¹Ð»Ð° (%#<PRIx64> Ð±Ð°Ð¹Ñ‚)"
+
+#: compress.c:282
 #, c-format
 msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB(%pA) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾ (%#<PRIx64> Ð±Ð°Ð¹Ñ‚)"
 
-#: cpu-arm.c:298 cpu-arm.c:310
+#: cpu-arm.c:303 cpu-arm.c:315
 #, c-format
 msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� EP9312, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� XScale"
 
-#: cpu-arm.c:446
+#: cpu-arm.c:451
 #, c-format
 msgid "warning: unable to update contents of %s section in %pB"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² %pB"
 
-#: dwarf2.c:544
+#: dwarf2.c:543
 #, c-format
 msgid "DWARF error: can't find %s section."
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½"
 
-#: dwarf2.c:579
+#: dwarf2.c:578
 #, c-format
 msgid "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%#<PRIu64>) Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¸Ð»Ð¸ Ñ€Ð°Ð²Ð½Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ %s (%#<PRIu64>)"
 
-#: dwarf2.c:1107
+#: dwarf2.c:1165
 msgid "DWARF error: info pointer extends beyond end of attributes"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð²"
 
-#: dwarf2.c:1275
+#: dwarf2.c:1333
 #, c-format
 msgid "DWARF error: invalid or unhandled FORM value: %#x"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ FORM: %#x"
 
-#: dwarf2.c:1581
+#: dwarf2.c:1646
 msgid "DWARF error: mangled line number section (bad file number)"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº (Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð°)"
 
-#: dwarf2.c:1926
+#: dwarf2.c:1994
 msgid "DWARF error: zero format count"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽ"
 
-#: dwarf2.c:1936
+#: dwarf2.c:2004
 #, c-format
 msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð´Ð°Ð½Ð½Ñ‹Ñ… (%#<PRIx64>) Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð±ÑƒÑ„ÐµÑ€Ð°"
 
-#: dwarf2.c:1977
+#: dwarf2.c:2045
 #, c-format
 msgid "DWARF error: unknown format content type %<PRIu64>"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ‚Ð¸Ð¿Ð° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾ %#<PRIu64>"
 
-#: dwarf2.c:2057
+#: dwarf2.c:2112
 #, c-format
 msgid "DWARF error: line info section is too small (%<PRId64>)"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ… Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð» (%<PRId64>)"
 
-#: dwarf2.c:2087
+#: dwarf2.c:2142
 #, c-format
 msgid "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining in the section (%#lx)"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ… Ð±Ð¾Ð»ÑŒÑˆÐµ (%<PRIx64>) Ñ‡ÐµÐ¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð¾, Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐµÑ�Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%#lx)"
 
-#: dwarf2.c:2100
+#: dwarf2.c:2155
 #, c-format
 msgid "DWARF error: unhandled .debug_line version %d"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %d Ð² .debug_line"
 
-#: dwarf2.c:2110
+#: dwarf2.c:2165
 msgid "DWARF error: ran out of room reading prologue"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¾Ñ�ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð¿Ñ€Ð¸ Ñ‡Ñ‚ÐµÐ½Ð¸Ð¸ Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ð°"
 
-#: dwarf2.c:2128
+#: dwarf2.c:2183
 #, c-format
 msgid "DWARF error: line info unsupported segment selector size %u"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ %u Ñ�ÐµÐ»ÐµÐºÑ‚Ð¾Ñ€Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° Ð² Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ…"
 
-#: dwarf2.c:2155
+#: dwarf2.c:2210
 msgid "DWARF error: invalid maximum operations per instruction"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ðµ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ"
 
-#: dwarf2.c:2174
+#: dwarf2.c:2229
 msgid "DWARF error: ran out of room reading opcodes"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¾Ñ�ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð¿Ñ€Ð¸ Ñ‡Ñ‚ÐµÐ½Ð¸Ð¸ ÐºÐ¾Ð´Ð¾Ð² Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹"
 
-#: dwarf2.c:2347
+#: dwarf2.c:2420
 msgid "DWARF error: mangled line number section"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½"
 
-#: dwarf2.c:2852 dwarf2.c:2913
+#: dwarf2.c:2905
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ñ€ÐµÐºÑƒÑ€Ñ�Ð¸Ñ� Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€Ð°"
+
+#: dwarf2.c:2939 dwarf2.c:3033
 msgid "DWARF error: invalid abstract instance DIE ref"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ñ‹Ð¹ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ DIE"
 
-#: dwarf2.c:2889
+#: dwarf2.c:2955
 #, c-format
 msgid "DWARF error: unable to read alt ref %<PRIu64>"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ %<PRIu64>"
 
-#: dwarf2.c:2930 dwarf2.c:3103 dwarf2.c:3457
+#: dwarf2.c:3011
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ñ‹Ð¹ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ DIE %<PRIu64>"
+
+#: dwarf2.c:3050 dwarf2.c:3232 dwarf2.c:3618
 #, c-format
 msgid "DWARF error: could not find abbrev number %u"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ ÑƒÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %u"
 
-#: dwarf2.c:2947
-msgid "DWARF error: abstract instance recursion detected"
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ñ€ÐµÐºÑƒÑ€Ñ�Ð¸Ñ� Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€Ð°"
+#: dwarf2.c:3381
+#, c-format
+msgid "DWARF error: could not find variable specification at offset %lx"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð´Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %lx"
 
-#: dwarf2.c:3376
+#: dwarf2.c:3537
 #, c-format
 msgid "DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 information"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð²ÐµÑ€Ñ�Ð¸Ñ� dwarf Â«%uÂ», Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ‚ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð²ÐµÑ€Ñ�Ð¸Ð¸ 2, 3, 4 Ð¸ 5"
 
-#: dwarf2.c:3420
+#: dwarf2.c:3581
 #, c-format
 msgid "DWARF error: found address size '%u', this reader can not handle sizes greater than '%u'"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð°Ð´Ñ€ÐµÑ�Ð° Â«%uÂ», Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Ð½Ðµ ÑƒÐ¼ÐµÐµÑ‚ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ð±Ð¾Ð»ÐµÐµ Ñ‡ÐµÐ¼ Â«%uÂ»"
 
-#: dwarf2.c:3523
+#: dwarf2.c:3685
 msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð²Ñ�Ñ‚Ñ€ÐµÑ‡ÐµÐ½ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ DW_AT_comp_dir Ð² Ð½Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¾Ð²Ð¾Ð¼ Ð²Ð¸Ð´Ðµ"
 
-#: ecoff.c:971
+#: ecoff.c:982
 #, c-format
 msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: isymMax (%ld) Ð±Ð¾Ð»ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ ifdMax (%ld)"
 
-#: ecoff.c:1268
+#: ecoff.c:1279
 #, c-format
 msgid "unknown basic type %d"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ %d"
 
-#: ecoff.c:1525
+#: ecoff.c:1536
 #, c-format
 msgid ""
 "\n"
@@ -686,7 +698,7 @@ msgstr ""
 "\n"
 "      Ð¡Ð¸Ð¼Ð²Ð¾Ð» End+1: %ld"
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1543 ecoff.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -695,7 +707,7 @@ msgstr ""
 "\n"
 "      ÐŸÐµÑ€Ð²Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %ld"
 
-#: ecoff.c:1548
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
@@ -704,7 +716,7 @@ msgstr ""
 "\n"
 "      Ð¡Ð¸Ð¼Ð²Ð¾Ð» End+1: %-7ld   Ð¢Ð¸Ð¿:  %s"
 
-#: ecoff.c:1555
+#: ecoff.c:1566
 #, c-format
 msgid ""
 "\n"
@@ -713,7 +725,7 @@ msgstr ""
 "\n"
 "      Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %ld"
 
-#: ecoff.c:1563
+#: ecoff.c:1574
 #, c-format
 msgid ""
 "\n"
@@ -722,7 +734,7 @@ msgstr ""
 "\n"
 "      struct; Ñ�Ð¸Ð¼Ð²Ð¾Ð» End+1: %ld"
 
-#: ecoff.c:1568
+#: ecoff.c:1579
 #, c-format
 msgid ""
 "\n"
@@ -731,7 +743,7 @@ msgstr ""
 "\n"
 "      union; Ñ�Ð¸Ð¼Ð²Ð¾Ð» End+1: %ld"
 
-#: ecoff.c:1573
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
@@ -740,7 +752,7 @@ msgstr ""
 "\n"
 "      enum; Ñ�Ð¸Ð¼Ð²Ð¾Ð» End+1: %ld"
 
-#: ecoff.c:1579
+#: ecoff.c:1590
 #, c-format
 msgid ""
 "\n"
@@ -749,22 +761,22 @@ msgstr ""
 "\n"
 "      Ð¢Ð¸Ð¿: %s"
 
-#: elf-attrs.c:446
+#: elf-attrs.c:449
 #, c-format
 msgid "%pB: error: attribute section '%pA' too big: %#llx"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Â«%pAÂ»: %#llx"
 
-#: elf-attrs.c:487
+#: elf-attrs.c:490
 #, c-format
 msgid "%pB: error: attribute section length too small: %<PRId64>"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð°: %<PRId64>"
 
-#: elf-attrs.c:615
+#: elf-attrs.c:618
 #, c-format
 msgid "error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchain"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±ÑŠÐµÐºÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð´Ð°Ð½Ð½Ñ‹Ðµ, Ð·Ð°Ð´Ð°Ð²Ð°ÐµÐ¼Ñ‹Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÐµÐ¼, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ñ�Ð±Ð¾Ñ€ÐºÐ¸ Â«%sÂ»"
 
-#: elf-attrs.c:625
+#: elf-attrs.c:628
 #, c-format
 msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ‚ÐµÐ³ Â«%d, %sÂ» Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚ÐµÐ³Ð¾Ð¼ Â«%d, %sÂ»"
@@ -788,91 +800,90 @@ msgstr "ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ FDE Ð² %p
 msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"
 msgstr "Ð² Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐµÐ¼, Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ� Ð¾ Ð½Ðµ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ .eh_frame_hdr Ð¸Ð·-Ð·Ð° ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� FDE Ð±ÑƒÐ´ÑƒÑ‚ Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°Ñ‚ÑŒÑ�Ñ�"
 
-#: elf-eh-frame.c:1868
+#: elf-eh-frame.c:1866
 #, c-format
 msgid "%pB: %pA not in order"
 msgstr "%pB: %pA Ð½Ðµ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð¾"
 
-#: elf-eh-frame.c:1882
+#: elf-eh-frame.c:1880
 #, c-format
 msgid "%pB: %pA invalid input section size"
 msgstr "%pB: %pA Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
 
-#: elf-eh-frame.c:1890
+#: elf-eh-frame.c:1888
 #, c-format
 msgid "%pB: %pA points past end of text section"
 msgstr "%pB: %pA ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚ÐµÐºÑ�Ñ‚Ð°"
 
-#: elf-eh-frame.c:2139
+#: elf-eh-frame.c:2141
 msgid "DW_EH_PE_datarel unspecified for this architecture"
 msgstr "DW_EH_PE_datarel Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð° Ð´Ð»Ñ� Ñ�Ñ‚Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹"
 
-#: elf-eh-frame.c:2309
+#: elf-eh-frame.c:2312
 #, c-format
 msgid "invalid output section for .eh_frame_entry: %pA"
 msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� .eh_frame_entry: %pA"
 
-#: elf-eh-frame.c:2332
+#: elf-eh-frame.c:2335
 #, c-format
 msgid "invalid contents in %pA section"
 msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA"
 
-#: elf-eh-frame.c:2488
+#: elf-eh-frame.c:2491
 msgid ".eh_frame_hdr entry overflow"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° .eh_frame_hdr"
 
-#: elf-eh-frame.c:2490
+#: elf-eh-frame.c:2493
 msgid ".eh_frame_hdr refers to overlapping FDEs"
 msgstr ".eh_frame_hdr Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð¿ÐµÑ€ÐµÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð¸ÐµÑ�Ñ� FDE"
 
-#: elf-ifunc.c:149
+#: elf-ifunc.c:144
 #, c-format
 msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%pB' can not be used when making an executable; recompile with -fPIE and relink with -pie\n"
 msgstr "%F%P: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ� Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¼ Ð² Â«%pBÂ» Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIE Ð¸ Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -pie\n"
 
-#: elf-m10200.c:434 elf-m10300.c:2147 elf32-avr.c:1510 elf32-bfin.c:3127
-#: elf32-cr16.c:1464 elf32-cr16c.c:783 elf32-cris.c:2033 elf32-crx.c:925
-#: elf32-d10v.c:512 elf32-epiphany.c:566 elf32-fr30.c:594 elf32-frv.c:4049
-#: elf32-ft32.c:494 elf32-h8300.c:523 elf32-ip2k.c:1482 elf32-iq2000.c:693
-#: elf32-lm32.c:1112 elf32-m32c.c:624 elf32-m32r.c:3045 elf32-m68hc1x.c:1266
-#: elf32-mep.c:526 elf32-metag.c:1990 elf32-microblaze.c:1631
-#: elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6189 elf32-or1k.c:1759
-#: elf32-score.c:2733 elf32-score7.c:2542 elf32-spu.c:5083
-#: elf32-tilepro.c:3506 elf32-v850.c:2291 elf32-visium.c:681
-#: elf32-xstormy16.c:931 elf64-mmix.c:1541 elfxx-tilegx.c:3870
+#: elf-m10200.c:434 elf-m10300.c:2145 elf32-avr.c:1508 elf32-bfin.c:3126
+#: elf32-cr16.c:1464 elf32-cris.c:2033 elf32-crx.c:920 elf32-d10v.c:510
+#: elf32-epiphany.c:562 elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:494
+#: elf32-h8300.c:523 elf32-ip2k.c:1477 elf32-iq2000.c:691 elf32-lm32.c:1069
+#: elf32-m32c.c:624 elf32-m32r.c:2860 elf32-m68hc1x.c:1272 elf32-mep.c:526
+#: elf32-metag.c:1986 elf32-microblaze.c:1627 elf32-moxie.c:288 elf32-mt.c:402
+#: elf32-nds32.c:6048 elf32-or1k.c:1817 elf32-score.c:2734 elf32-score7.c:2543
+#: elf32-spu.c:5083 elf32-tilepro.c:3380 elf32-v850.c:2290 elf32-visium.c:680
+#: elf32-xstormy16.c:929 elf64-bpf.c:512 elf64-mmix.c:1541 elfxx-tilegx.c:3744
 msgid "internal error: out of range error"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°"
 
-#: elf-m10200.c:438 elf-m10300.c:2151 elf32-avr.c:1514 elf32-bfin.c:3131
-#: elf32-cr16.c:1468 elf32-cr16c.c:787 elf32-cris.c:2037 elf32-crx.c:929
-#: elf32-d10v.c:516 elf32-fr30.c:598 elf32-frv.c:4053 elf32-ft32.c:498
-#: elf32-h8300.c:527 elf32-iq2000.c:697 elf32-lm32.c:1116 elf32-m32c.c:628
-#: elf32-m32r.c:3049 elf32-m68hc1x.c:1270 elf32-mep.c:530 elf32-metag.c:1994
-#: elf32-microblaze.c:1635 elf32-moxie.c:292 elf32-msp430.c:1362
-#: elf32-nds32.c:6193 elf32-or1k.c:1763 elf32-score.c:2737 elf32-score7.c:2546
-#: elf32-spu.c:5087 elf32-tilepro.c:3510 elf32-v850.c:2295 elf32-visium.c:685
-#: elf32-xstormy16.c:935 elf64-mmix.c:1545 elfxx-mips.c:10469
-#: elfxx-tilegx.c:3874
+#: elf-m10200.c:438 elf-m10300.c:2149 elf32-avr.c:1512 elf32-bfin.c:3130
+#: elf32-cr16.c:1468 elf32-cris.c:2037 elf32-crx.c:924 elf32-d10v.c:514
+#: elf32-fr30.c:598 elf32-frv.c:4052 elf32-ft32.c:498 elf32-h8300.c:527
+#: elf32-iq2000.c:695 elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2864
+#: elf32-m68hc1x.c:1276 elf32-mep.c:530 elf32-metag.c:1990
+#: elf32-microblaze.c:1631 elf32-moxie.c:292 elf32-msp430.c:1371
+#: elf32-nds32.c:6052 elf32-or1k.c:1821 elf32-score.c:2738 elf32-score7.c:2547
+#: elf32-spu.c:5087 elf32-tilepro.c:3384 elf32-v850.c:2294 elf32-visium.c:684
+#: elf32-xstormy16.c:933 elf64-mmix.c:1545 elfxx-mips.c:10576
+#: elfxx-tilegx.c:3748
 msgid "internal error: unsupported relocation error"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
-#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-cr16c.c:791 elf32-crx.c:933
-#: elf32-d10v.c:520 elf32-h8300.c:531 elf32-lm32.c:1120 elf32-m32r.c:3053
-#: elf32-m68hc1x.c:1274 elf32-microblaze.c:1639 elf32-nds32.c:6197
-#: elf32-score.c:2741 elf32-score7.c:2550 elf32-spu.c:5091
+#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-crx.c:928 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2868 elf32-m68hc1x.c:1280
+#: elf32-microblaze.c:1635 elf32-nds32.c:6056 elf32-score.c:2742
+#: elf32-score7.c:2551 elf32-spu.c:5091
 msgid "internal error: dangerous error"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°"
 
-#: elf-m10200.c:446 elf-m10300.c:2168 elf32-avr.c:1522 elf32-bfin.c:3139
-#: elf32-cr16.c:1476 elf32-cr16c.c:795 elf32-cris.c:2045 elf32-crx.c:937
-#: elf32-d10v.c:524 elf32-epiphany.c:581 elf32-fr30.c:606 elf32-frv.c:4061
-#: elf32-ft32.c:506 elf32-h8300.c:535 elf32-ip2k.c:1497 elf32-iq2000.c:705
-#: elf32-lm32.c:1124 elf32-m32c.c:636 elf32-m32r.c:3057 elf32-m68hc1x.c:1278
-#: elf32-mep.c:538 elf32-metag.c:2002 elf32-microblaze.c:1643
-#: elf32-moxie.c:300 elf32-msp430.c:1370 elf32-mt.c:410 elf32-nds32.c:6201
-#: elf32-or1k.c:1771 elf32-score.c:2750 elf32-score7.c:2554 elf32-spu.c:5095
-#: elf32-tilepro.c:3518 elf32-v850.c:2315 elf32-visium.c:693
-#: elf32-xstormy16.c:943 elf64-mmix.c:1553 elfxx-tilegx.c:3882
+#: elf-m10200.c:446 elf-m10300.c:2166 elf32-avr.c:1520 elf32-bfin.c:3138
+#: elf32-cr16.c:1476 elf32-cris.c:2045 elf32-crx.c:932 elf32-d10v.c:522
+#: elf32-epiphany.c:577 elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:506
+#: elf32-h8300.c:535 elf32-ip2k.c:1492 elf32-iq2000.c:703 elf32-lm32.c:1081
+#: elf32-m32c.c:636 elf32-m32r.c:2872 elf32-m68hc1x.c:1284 elf32-mep.c:538
+#: elf32-metag.c:1998 elf32-microblaze.c:1639 elf32-moxie.c:300
+#: elf32-msp430.c:1379 elf32-mt.c:410 elf32-nds32.c:6060 elf32-or1k.c:1829
+#: elf32-score.c:2751 elf32-score7.c:2555 elf32-spu.c:5095
+#: elf32-tilepro.c:3392 elf32-v850.c:2314 elf32-visium.c:692
+#: elf32-xstormy16.c:941 elf64-bpf.c:525 elf64-mmix.c:1553 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°"
 
@@ -881,38 +892,35 @@ msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ
 msgid "%pB: unsupported transition from %s to %s"
 msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ Ð¸Ð· %s Ð² %s"
 
-#: elf-m10300.c:1198
+#: elf-m10300.c:1196
 #, c-format
 msgid "%pB: %s' accessed both as normal and thread local symbol"
 msgstr "%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð¸Ñ‚Ð¸"
 
-#: elf-m10300.c:2094 elf32-arm.c:13246 elf32-i386.c:3409 elf32-m32r.c:2539
-#: elf32-m68k.c:3899 elf32-s390.c:3211 elf32-sh.c:3800 elf32-tilepro.c:3409
-#: elf32-xtensa.c:2965 elf64-s390.c:3161 elf64-x86-64.c:3846
-#: elfxx-sparc.c:3906 elfxx-tilegx.c:3793
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5261
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6807
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2279
+#: elf-m10300.c:2092 elf32-arm.c:13400 elf32-i386.c:3403 elf32-m32r.c:2354
+#: elf32-m68k.c:3931 elf32-s390.c:3082 elf32-sh.c:3677 elf32-tilepro.c:3283
+#: elf32-xtensa.c:3023 elf64-s390.c:3031 elf64-x86-64.c:4062
+#: elfxx-sparc.c:3795 elfxx-tilegx.c:3667 elfnn-aarch64.c:5505
+#: elfnn-aarch64.c:7102
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elf-m10300.c:2156
+#: elf-m10300.c:2154
 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ (Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ -fpic?)"
 
-#: elf-m10300.c:2160
+#: elf-m10300.c:2158
 #, c-format
 msgid "%pB: taking the address of protected function '%s' cannot be done when making a shared library"
 msgstr "%pB: Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸"
 
-#: elf-m10300.c:2163
+#: elf-m10300.c:2161
 msgid "internal error: suspicious relocation type used in shared library"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð´Ð¾Ð·Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ"
 
-#: elf-m10300.c:2649 elf32-avr.c:2492 elf32-frv.c:5641 elf64-ia64-vms.c:364
-#: elfxx-sparc.c:2795 reloc.c:8185 reloc16.c:155 elf32-ia64.c:361
-#: elf64-ia64.c:361
+#: elf-m10300.c:2647 elf32-avr.c:2489 elf32-frv.c:5620 elf64-ia64-vms.c:364
+#: elfxx-sparc.c:2683 reloc.c:8244 reloc16.c:155 elfnn-ia64.c:364
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr "%P%F: --relax Ð¸ -r Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ð¼ÐµÑ�Ñ‚Ðµ\n"
 
@@ -954,7 +962,7 @@ msgstr "Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾
 msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
 msgstr "Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB (0x%v) Ð¸ %pB (Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)\n"
 
-#: elf-properties.c:316 elf-properties.c:396
+#: elf-properties.c:316 elf-properties.c:394
 msgid "Removed property %W to merge %pB and %pB\n"
 msgstr "Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB Ð¸ %pB\n"
 
@@ -962,115 +970,110 @@ msgstr "Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾
 msgid "Removed property %W to merge %pB and %pB (not found)\n"
 msgstr "Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB Ð¸ %pB (Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)\n"
 
-#: elf-properties.c:339
+#: elf-properties.c:337
 msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
 msgstr "ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W (0x%v) Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB (0x%v) Ð¸ %pB (0x%v)\n"
 
-#: elf-properties.c:348
+#: elf-properties.c:346
 msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
 msgstr "ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W (%v) Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB (0x%v) Ð¸ %pB (Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)\n"
 
-#: elf-properties.c:390
+#: elf-properties.c:388
 msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
 msgstr "Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB (Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾) Ð¸ %pB (0x%v)\n"
 
 #. Merge .note.gnu.property sections.
-#: elf-properties.c:552 elf-properties.c:554
+#: elf-properties.c:550 elf-properties.c:552
 msgid "\n"
 msgstr "\n"
 
-#: elf-properties.c:553
+#: elf-properties.c:551
 msgid "Merging program properties\n"
 msgstr "ÐžÐ±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ñ… Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²\n"
 
 #. PR 17512: file: f057ec89.
-#: elf.c:345
+#: elf.c:336
 #, c-format
 msgid "%pB: attempt to load strings from a non-string section (number %d)"
 msgstr "%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ Ð¸Ð· Ð½Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (Ð½Ð¾Ð¼ÐµÑ€ %d)"
 
-#: elf.c:360
+#: elf.c:361
 #, c-format
 msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ %u >= %<PRIu64> Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
 
-#: elf.c:499 /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7891
+#: elf.c:513 elfnn-aarch64.c:8096
 #, c-format
 msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
 msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %lu Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½ÐµÑ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» SHT_SYMTAB_SHNDX"
 
-#: elf.c:664
-#, c-format
-msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
-msgstr "%pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð³Ñ€ÑƒÐ¿Ð¿: %#<PRIx64>"
-
-#: elf.c:680
+#: elf.c:675
 #, c-format
 msgid "%pB: invalid size field in group section header: %#<PRIx64>"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð³Ñ€ÑƒÐ¿Ð¿: %#<PRIx64>"
 
-#: elf.c:728
+#: elf.c:720
 #, c-format
 msgid "%pB: invalid entry in SHT_GROUP section [%u]"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ SHT_GROUP [%u]"
 
-#: elf.c:747
+#: elf.c:739
 #, c-format
 msgid "%pB: no valid group sections found"
 msgstr "%pB: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² Ð³Ñ€ÑƒÐ¿Ð¿"
 
 #. See PR 21957 for a reproducer.
-#: elf.c:776
+#: elf.c:768
 #, c-format
 msgid "%pB: group section '%pA' has no contents"
 msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Ð³Ñ€ÑƒÐ¿Ð¿ Â«%pAÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾"
 
-#: elf.c:837
+#: elf.c:829
 #, c-format
 msgid "%pB: no group info for section '%pA'"
 msgstr "%pB: Ð½ÐµÑ‚ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð³Ñ€ÑƒÐ¿Ð¿Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»"
 
-#: elf.c:868 elf.c:3886 elflink.c:11403
+#: elf.c:859 elf.c:3955
 #, c-format
 msgid "%pB: warning: sh_link not set for section `%pA'"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð·Ð°Ð´Ð°Ð½ sh_link Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»"
 
-#: elf.c:888
+#: elf.c:879
 #, c-format
 msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ sh_link [%d] Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»"
 
-#: elf.c:901
+#: elf.c:892
 #, c-format
 msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
 msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» SHT_GROUP [Ð¸Ð½Ð´ÐµÐºÑ� %d] Ð½Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² SHF_GROUP"
 
-#: elf.c:922
+#: elf.c:913
 #, c-format
 msgid "%pB: section group entry number %u is corrupt"
 msgstr "%pB: Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² %u Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½"
 
-#: elf.c:945
+#: elf.c:936
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ» Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ [%pA]"
 
-#: elf.c:1408
+#: elf.c:1438
 #, c-format
 msgid "%pB: invalid sh_link field (%d) in section number %d"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ sh_link (%d) Ð² Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d"
 
-#: elf.c:1424
+#: elf.c:1454
 #, c-format
 msgid "%pB: failed to find link section for section %d"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ñ�Ñ‹Ð»Ð¾Ðº Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d"
 
-#: elf.c:1451
+#: elf.c:1481
 #, c-format
 msgid "%pB: failed to find info section for section %d"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d"
 
-#: elf.c:1623
+#: elf.c:1653
 #, c-format
 msgid ""
 "\n"
@@ -1079,7 +1082,7 @@ msgstr ""
 "\n"
 "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹:\n"
 
-#: elf.c:1665
+#: elf.c:1695
 #, c-format
 msgid ""
 "\n"
@@ -1088,7 +1091,7 @@ msgstr ""
 "\n"
 "Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»:\n"
 
-#: elf.c:1806
+#: elf.c:1836
 #, c-format
 msgid ""
 "\n"
@@ -1097,7 +1100,7 @@ msgstr ""
 "\n"
 "ÐžÐ±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ñ� Ð²ÐµÑ€Ñ�Ð¸Ð¹:\n"
 
-#: elf.c:1831
+#: elf.c:1861
 #, c-format
 msgid ""
 "\n"
@@ -1106,577 +1109,678 @@ msgstr ""
 "\n"
 "Ð’ÐµÑ€Ñ�Ð¸Ð¸ Ñ�Ñ�Ñ‹Ð»Ð¾Ðº:\n"
 
-#: elf.c:1836
+#: elf.c:1866
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð· %s:\n"
 
-#: elf.c:2037
+#: elf.c:2082
 #, c-format
 msgid "%pB: warning: loop in section dependencies detected"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ðµ Ð² Ð·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ð¾Ñ�Ñ‚Ñ�Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²"
 
-#: elf.c:2145
+#: elf.c:2190
 #, c-format
 msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿ÑƒÑ�Ñ‚Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %u"
 
-#: elf.c:2229
+#: elf.c:2274
 #, c-format
 msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿ÑƒÑ�Ñ‚Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %u"
 
-#: elf.c:2342
+#: elf.c:2387
 #, c-format
 msgid "%pB: invalid link %u for reloc section %s (index %u)"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° %u Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %s (Ð¸Ð½Ð´ÐµÐºÑ� %u)"
 
-#: elf.c:2504 elf.c:2519 elf.c:2530 elf.c:2543
+#: elf.c:2478
+#, c-format
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�"
+
+#: elf.c:2562 elf.c:2577 elf.c:2588 elf.c:2601
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
 
-#: elf.c:3248
+#: elf.c:3308
 #, c-format
 msgid "%pB: error: alignment power %d of section `%pA' is too big"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÑ€Ð°Ñ‚Ð½Ð¾Ñ�Ñ‚ÑŒ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ� %d Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ°"
 
-#: elf.c:3278
+#: elf.c:3341
 #, c-format
 msgid "warning: section `%pA' type changed to PROGBITS"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½ Ð½Ð° PROGBITS"
 
-#: elf.c:3754
+#: elf.c:3824
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²: %u"
 
-#: elf.c:3839
+#: elf.c:3909
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
 msgstr "%pB: sh_link Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð¾Ñ‚Ð±Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð· Â«%pBÂ»"
 
-#: elf.c:3864
+#: elf.c:3934
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
 msgstr "%pB: sh_link Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð· Â«%pBÂ»"
 
-#: elf.c:4430
+#: elf.c:4495
 #, c-format
-msgid "%pB: GNU_MBIN section `%pA' has invalid sh_info field: %d"
-msgstr "%pB: GNU_MBIN Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ sh_info: %d"
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
+msgstr "%pB: GNU_MBIND Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ sh_info: %d"
 
-#: elf.c:5013
+#: elf.c:5086
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ TLS Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ð½Ðµ Ñ€Ñ�Ð´Ð¾Ð¼:"
 
-#: elf.c:5020
+#: elf.c:5093
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr "\t    TLS: %pA"
 
-#: elf.c:5024
+#: elf.c:5097
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr "\t Ð½Ðµ-TLS: %pA"
 
-#: elf.c:5538
+#: elf.c:5687
 #, c-format
 msgid "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
 msgstr "%pB: Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ PT_DYNAMIC Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð¼ .dynamic"
 
-#: elf.c:5566
+#: elf.c:5713
 #, c-format
 msgid "%pB: not enough room for program headers, try linking with -N"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð° Ð´Ð»Ñ� Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð² Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹, Ð¿Ð¾Ð¿Ñ‹Ñ‚Ð°Ð¹Ñ‚ÐµÑ�ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -N"
 
-#: elf.c:5654
+#: elf.c:5830
 #, c-format
 msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
 msgstr "%pB: Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA lma %#<PRIx64> Ð¿Ð¾Ð´Ð¾Ð³Ð½Ð°Ð½Ð¾ Ðº %#<PRIx64>"
 
-#: elf.c:5791
+#. The fix for this error is usually to edit the linker script being
+#. used and set up the program headers manually.  Either that or
+#. leave room for the headers at the start of the SECTIONS.
+#: elf.c:5967
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD"
+
+#: elf.c:6007
 #, c-format
 msgid "%pB: section `%pA' can't be allocated in segment %d"
 msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ %d"
 
-#: elf.c:5839
+#: elf.c:6139
 #, c-format
 msgid "%pB: warning: allocated section `%s' not in segment"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð½Ðµ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ"
 
-#: elf.c:6072
+#: elf.c:6300
 #, c-format
 msgid "%pB: error: non-load segment %d includes file header and/or program header"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ %d Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¸/Ð¸Ð»Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº"
 
-#. The fix for this error is usually to edit the linker script being
-#. used and set up the program headers manually.  Either that or
-#. leave room for the headers at the start of the SECTIONS.
-#: elf.c:6249
-#, c-format
-msgid "%pB: error: PHDR segment not covered by LOAD segment"
-msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD"
-
-#: elf.c:6606
+#: elf.c:6804
 #, c-format
 msgid "%pB: symbol `%s' required but not present"
 msgstr "%pB: Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ð½Ð¾ Ð¾Ð½ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚"
 
-#: elf.c:6949
+#: elf.c:7147
 #, c-format
 msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð¿Ð¾ vaddr=%#<PRIx64>, Ñ�Ñ‚Ð¾ Ñ‚Ð°Ðº Ð·Ð°Ð´ÑƒÐ¼Ñ‹Ð²Ð°Ð»Ð¾Ñ�ÑŒ?"
 
-#: elf.c:7574
+#: elf.c:7773
 #, c-format
 msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° %#<PRIx64>"
 
-#: elf.c:8073
+#: elf.c:8286
+#, c-format
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %x Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ ELF. Ð’Ð¼ÐµÑ�Ñ‚Ð¾ Ð½ÐµÐ³Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ ABS."
+
+#: elf.c:8316
 #, c-format
 msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰ÐµÐµ Ð¼ÐµÑ�Ñ‚Ð¾ Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
 
-#: elf.c:8421
+#: elf.c:8703
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ .gnu.version_r"
 
-#: elf.c:8548
+#: elf.c:8836
 #, c-format
 msgid "%pB: .gnu.version_d invalid entry"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ .gnu.version_d"
 
-#: elf32-arc.c:440 elf32-frv.c:6630 elf32-iq2000.c:870 elf32-m32c.c:914
-#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3199 elf32-visium.c:841
-#: elf64-ppc.c:4950
+#: elf.c:9293
+#, c-format
+msgid "%pB:%pA: error: attempting to write into an unallocated compressed section"
+msgstr "%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð² Ð½ÐµÐ²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¹ Ñ�Ð¶Ð°Ñ‚Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»"
+
+#: elf.c:9302
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr "%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
+
+#: elf.c:9313
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr "%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ð±ÑƒÑ„ÐµÑ€"
+
+#: elf.c:12430
+msgid "GNU_MBIND section is unsupported"
+msgstr "Ñ€Ð°Ð·Ð´ÐµÐ» GNU_MBIND Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+
+#: elf.c:12432
+msgid "symbol type STT_GNU_IFUNC is unsupported"
+msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ STT_GNU_IFUNC Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+
+#: elf.c:12434
+msgid "symbol binding STB_GNU_UNIQUE is unsupported"
+msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð°Ñ� Ð¿Ñ€Ð¸Ð²Ñ�Ð·ÐºÐ° STB_GNU_UNIQUE Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+
+#: elf.c:12618 elf64-sparc.c:123 elfcode.h:1482
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %d Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %ld"
+
+#: elf.c:12692
+#, c-format
+msgid "%pB(%pA): link section cannot be set because the output file does not have a symbol table"
+msgstr "%pB(%pA): Ð½ÐµÐ»ÑŒÐ·Ñ� Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ñ�Ñ‹Ð»Ð¾Ðº, Ñ‚Ð°Ðº ÐºÐ°Ðº Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð» Ð½Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"
+
+#: elf.c:12704
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸"
+
+#: elf.c:12718
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr "%pB(%pA): Ð½ÐµÐ»ÑŒÐ·Ñ� Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸, Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð² Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ðµ"
+
+#: elf.c:12784
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ð´Ð²Ð°Ð¶Ð´Ñ‹"
+
+#: elf.c:12796
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð¿ÑƒÑ�Ñ‚!"
+
+#: elf.c:12819
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‚ Ð´Ð»Ñ� Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹"
+
+#: elf.c:12838
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %u is empty"
+msgstr "%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %u Ð¿ÑƒÑ�Ñ‚"
+
+#: elf.c:12863
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a missing symbol"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %u Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
+
+#: elf.c:12880
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a deleted symbol"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %u Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
+
+#: elf.c:12893
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u is of an unknown type"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %u Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ð°"
+
+#: elf32-arc.c:455 elf32-frv.c:6611 elf32-iq2000.c:868 elf32-m32c.c:914
+#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3205 elf32-visium.c:844
+#: elf64-ppc.c:5291
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = 0x%lx:"
 
-#: elf32-arc.c:627
+#: elf32-arc.c:642
 #, c-format
 msgid "warning: %pB: conflicting platform configuration %s with %s"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ð²Ñ‹Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹ %s Ñ� %s"
 
-#: elf32-arc.c:646
+#: elf32-arc.c:661
 #, c-format
 msgid "error: %pB: unable to merge CPU base attributes %s with %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ñ‹Ðµ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ Ð¦ÐŸ %s Ñ� %s"
 
-#: elf32-arc.c:683
+#: elf32-arc.c:698
 #, c-format
 msgid "error: %pB: unable to merge ISA extension attributes %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA"
 
-#: elf32-arc.c:707
+#: elf32-arc.c:722
 #, c-format
 msgid "error: %pB: conflicting ISA extension attributes %s with %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ Ñ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s Ñ� %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA"
 
-#: elf32-arc.c:747
+#: elf32-arc.c:762
 #, c-format
 msgid "error: %pB: cannot mix rf16 with full register set %pB"
 msgstr "error: %pB: Ð½ÐµÐ»ÑŒÐ·Ñ� Ñ�Ð¼ÐµÑˆÐ¸Ð²Ð°Ñ‚ÑŒ rf16 Ñ� Ð¿Ð¾Ð»Ð½Ñ‹Ð¼ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² %pB"
 
-#: elf32-arc.c:775
+#: elf32-arc.c:790
 #, c-format
 msgid "error: %pB: conflicting attributes %s: %s with %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s: %s Ñ� %s"
 
-#: elf32-arc.c:802
+#: elf32-arc.c:817
 #, c-format
 msgid "error: %pB: conflicting attributes %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s"
 
-#: elf32-arc.c:907
+#: elf32-arc.c:922
 #, c-format
 msgid "error: attempting to link %pB with a binary %pB of different architecture"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ %pB Ñ� Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ð¼ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ %pB Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹"
 
-#: elf32-arc.c:923 elf32-iq2000.c:846 elf32-m32c.c:889 elf32-m68hc1x.c:1385
-#: elf32-ppc.c:3865 elf64-sparc.c:711 elfxx-mips.c:15354
+#: elf32-arc.c:938 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1391
+#: elf32-ppc.c:3867 elf64-sparc.c:722 elfxx-mips.c:15513
 #, c-format
 msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð¿Ð¾Ð»Ñ� e_flags (%#x) Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‚Ñ�Ñ� Ð¾Ñ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)"
 
-#: elf32-arc.c:1012
+#: elf32-arc.c:1027
 msgid "error: the ARC4 architecture is no longer supported"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° ARC4 Ð±Ð¾Ð»ÑŒÑˆÐµ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: elf32-arc.c:1018
+#: elf32-arc.c:1033
 msgid "warning: unset or old architecture flags; use default machine"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ñ‹ Ð¸Ð»Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð¸ Ñ„Ð»Ð°Ð³Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð¼Ð°ÑˆÐ¸Ð½Ð° Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ"
 
-#: elf32-arc.c:1151
+#: elf32-arc.c:1159
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CMEM Ð² Â«%sÂ», 16 MSB Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð²Ð½Ð¾ %#<PRIx64>)"
 
-#: elf32-arc.c:1162
+#: elf32-arc.c:1170
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s+%#<PRIx64>' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CMEM Ð² Â«%s+%#<PRIx64>Â», 16 MSB Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð²Ð½Ð¾ %#<PRIx64>)"
 
-#: elf32-arc.c:1876
+#: elf32-arc.c:1885
 msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� GOT Ð¸ PLT Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� Ð½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ¾Ð¼"
 
-#: elf32-arc.c:1900 elf32-rl78.c:1098 elf32-rx.c:1470
+#: elf32-arc.c:1909 elf32-rl78.c:1098 elf32-rx.c:1475
 #, c-format
 msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
 msgstr "%pB(%pA): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð² Ð¼Ð°Ð»Ð¾Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð´Ð°Ð½Ð½Ñ‹Ñ…"
 
-#: elf32-arc.c:1905 elf32-rl78.c:1103 elf32-rx.c:1475
+#: elf32-arc.c:1914 elf32-rl78.c:1103 elf32-rx.c:1480
 #, c-format
 msgid "%pB(%pA): internal error: out of range error"
 msgstr "%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°"
 
-#: elf32-arc.c:1910 elf32-rl78.c:1108 elf32-rx.c:1480
+#: elf32-arc.c:1919 elf32-rl78.c:1108 elf32-rx.c:1485
 #, c-format
 msgid "%pB(%pA): internal error: unsupported relocation error"
 msgstr "%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
-#: elf32-arc.c:1915 elf32-rl78.c:1113 elf32-rx.c:1485
+#: elf32-arc.c:1924 elf32-rl78.c:1113 elf32-rx.c:1490
 #, c-format
 msgid "%pB(%pA): internal error: dangerous relocation"
 msgstr "%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf32-arc.c:1920 elf32-rl78.c:1118 elf32-rx.c:1490
+#: elf32-arc.c:1929 elf32-rl78.c:1118 elf32-rx.c:1495
 #, c-format
 msgid "%pB(%pA): internal error: unknown error"
 msgstr "%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°"
 
-#: elf32-arc.c:2013 elf32-arc.c:2081 elf32-arm.c:15323 elf32-metag.c:2257
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7462
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:497
+#: elf32-arc.c:2022 elf32-arc.c:2090 elf32-arm.c:15513 elf32-metag.c:2253
+#: elf32-nds32.c:5498 elfnn-aarch64.c:7739 elfnn-riscv.c:483
 #, c-format
 msgid "%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC"
 
-#: elf32-arc.c:2949
+#: elf32-arc.c:2909
 #, c-format
 msgid "%pB: unknown mandatory ARC object attribute %d"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° ARC %d"
 
-#: elf32-arc.c:2957
+#: elf32-arc.c:2917
 #, c-format
 msgid "warning: %pB: unknown ARC object attribute %d"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° ARC %d"
 
-#: elf32-arm.c:4304 elf32-arm.c:4338 elf32-arm.c:4357 elf32-arm.c:4409
+#: elf32-arm.c:4307 elf32-arm.c:4341 elf32-arm.c:4360 elf32-arm.c:4412
 #, c-format
 msgid "%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction"
 msgstr "%pB(%pA): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�ÐºÐ»ÐµÐ¹ÐºÐ¸ Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ð²ÐµÑ‚Ð²ÐµÐ¹, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° SHF_ARM_PURECODE, Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ†ÐµÐ»ÐµÐ¹ M-Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ�, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ movw"
 
-#: elf32-arm.c:4369 elf32-arm.c:4423 elf32-arm.c:9093 elf32-arm.c:9183
+#: elf32-arm.c:4372 elf32-arm.c:4426 elf32-arm.c:9116 elf32-arm.c:9206
 #, c-format
 msgid "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s"
 msgstr "%pB(%s): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð°Ñ� Ñ€Ð°Ð±Ð¾Ñ‚Ð° Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°; Ð¿ÐµÑ€Ð²Ð¾Ðµ ÑƒÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ðµ: %pB: Ð²Ñ‹Ð·Ð¾Ð² %s Ð² %s"
 
-#: elf32-arm.c:4697
+#: elf32-arm.c:4552
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr "ÐžÐ¨Ð˜Ð‘ÐšÐ�: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° CMSE (Ñ€Ð°Ð·Ð´ÐµÐ» %s) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð´Ð°Ð»ÐµÐºÐ¾ (%#<PRIx64>) Ð¾Ñ‚ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� (%#<PRIx64>)"
+
+#: elf32-arm.c:4721
 #, c-format
 msgid "no address assigned to the veneers output section %s"
 msgstr "Ð½Ðµ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½ Ð°Ð´Ñ€ÐµÑ� Ñ�ÐºÐ»ÐµÐ¹ÐºÐ°Ð¼ Ð² Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s"
 
-#: elf32-arm.c:4772 elf32-arm.c:6909 elf32-csky.c:3287 elf32-hppa.c:579
-#: elf32-m68hc1x.c:165 elf32-metag.c:1186 elf32-nios2.c:2208 elf64-ppc.c:3501
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3098
+#: elf32-arm.c:4796 elf32-arm.c:6943 elf32-csky.c:3172 elf32-hppa.c:584
+#: elf32-m68hc1x.c:165 elf32-metag.c:1182 elf32-nios2.c:2204 elf64-ppc.c:3775
+#: elfnn-aarch64.c:3190
 #, c-format
 msgid "%pB: cannot create stub entry %s"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %s"
 
-#: elf32-arm.c:5957
+#: elf32-arm.c:5017 elf32-csky.c:3514 elf32-hppa.c:734 elf32-m68hc11.c:422
+#: elf32-m68hc12.c:542 elf32-metag.c:3347 elf32-nios2.c:2497 elf64-ppc.c:11315
+#: elfnn-aarch64.c:3259
+msgid "%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ Â«%pAÂ» Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñƒ. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚Ðµ Ð±ÐµÐ· --enable-non-contiguous-regions.\n"
+
+#: elf32-arm.c:5987
 #, c-format
 msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
 msgstr "%pB: Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ€Ð°Ð·Ñ€ÐµÑˆÑ‘Ð½ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ ARMv8-M Ð¸ Ð½Ð¾Ð²ÐµÐµ"
 
-#: elf32-arm.c:5966
+#: elf32-arm.c:5996
 #, c-format
 msgid "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»; Ñ�Ñ‚Ð¾ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð»Ð¸ Ñ�Ð»Ð°Ð±Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸"
 
-#: elf32-arm.c:6005
+#: elf32-arm.c:6035
 #, c-format
 msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function symbol"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»; Ñ�Ñ‚Ð¾ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð»Ð¸ Ñ�Ð»Ð°Ð±Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸"
 
-#: elf32-arm.c:6011
+#: elf32-arm.c:6041
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr "%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
 
-#: elf32-arm.c:6023
+#: elf32-arm.c:6053
 #, c-format
 msgid "%pB: `%s' and its special symbol are in different sections"
 msgstr "%pB: Â«%sÂ» Ð¸ ÐµÐ³Ð¾ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ð² Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð°Ñ…"
 
-#: elf32-arm.c:6035
+#: elf32-arm.c:6065
 #, c-format
 msgid "%pB: entry function `%s' not output"
 msgstr "%pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð² Ð²Ñ‹Ð²Ð¾Ð´Ðµ"
 
-#: elf32-arm.c:6042
+#: elf32-arm.c:6072
 #, c-format
 msgid "%pB: entry function `%s' is empty"
 msgstr "%pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¿ÑƒÑ�Ñ‚Ð°"
 
-#: elf32-arm.c:6171
+#: elf32-arm.c:6201
 #, c-format
 msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
 msgstr "%pB: --in-implib Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐº Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Secure Gateway"
 
-#: elf32-arm.c:6217
+#: elf32-arm.c:6250
 #, c-format
 msgid "%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸: Â«%sÂ»; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¼, Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ Ð¸Ð»Ð¸ Ñ�Ñ�Ñ‹Ð»Ð°Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Thumb"
 
-#: elf32-arm.c:6239
+#: elf32-arm.c:6272
 #, c-format
 msgid "entry function `%s' disappeared from secure code"
 msgstr "Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¸Ñ�Ñ‡ÐµÐ·Ð»Ð° Ð¸Ð· Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð°"
 
-#: elf32-arm.c:6263
+#: elf32-arm.c:6296
 #, c-format
 msgid "`%s' refers to a non entry function"
 msgstr "Â«%sÂ» Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½Ðµ Ð¿ÑƒÑ�Ñ‚ÑƒÑŽ Ð²Ñ…Ð¾Ð´Ð½ÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ"
 
-#: elf32-arm.c:6278
+#: elf32-arm.c:6311
 #, c-format
 msgid "%pB: visibility of symbol `%s' has changed"
 msgstr "%pB: Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð°Ñ�ÑŒ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elf32-arm.c:6287
+#: elf32-arm.c:6320
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elf32-arm.c:6306
+#: elf32-arm.c:6339
 #, c-format
 msgid "offset of veneer for entry function `%s' not a multiple of its size"
 msgstr "Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�ÐºÐ»ÐµÐ¹ÐºÐ¸ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾ ÐµÑ‘ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ"
 
-#: elf32-arm.c:6326
+#: elf32-arm.c:6359
 msgid "new entry function(s) introduced but no output import library specified:"
 msgstr "Ð¿Ð¾Ñ�Ð²Ð¸Ð»Ð°Ñ�ÑŒ Ð½Ð¾Ð²Ð°Ñ� Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ�(Ð¸), Ð½Ð¾ Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ Ð²Ñ‹Ð²Ð¾Ð´ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸:"
 
-#: elf32-arm.c:6334
+#: elf32-arm.c:6367
 #, c-format
 msgid "start address of `%s' is different from previous link"
 msgstr "Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Â«%sÂ» Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ð¾Ñ‚ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸"
 
-#: elf32-arm.c:7042 elf32-arm.c:7078
+#: elf32-arm.c:7076 elf32-arm.c:7111
 #, c-format
 msgid "unable to find %s glue '%s' for '%s'"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ»"
 
-#: elf32-arm.c:7793
+#: elf32-arm.c:7822
 #, c-format
 msgid "%pB: BE8 images only valid in big-endian mode"
 msgstr "%pB: Ð¾Ð±Ñ€Ð°Ð·Ñ‹ BE8 Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ñ‹ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ big-endian"
 
 #. Give a warning, but do as the user requests anyway.
-#: elf32-arm.c:8024
+#: elf32-arm.c:8049
 #, c-format
 msgid "%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¹ Ð¾Ð±Ñ…Ð¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ VFP11 Ð½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹"
 
-#: elf32-arm.c:8051
+#: elf32-arm.c:8076
 #, c-format
 msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¹ Ð¾Ð±Ñ…Ð¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ STM32L4XX Ð½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹"
 
-#: elf32-arm.c:8588 elf32-arm.c:8608 elf32-arm.c:8674 elf32-arm.c:8693
+#: elf32-arm.c:8612 elf32-arm.c:8632 elf32-arm.c:8699 elf32-arm.c:8718
 #, c-format
 msgid "%pB: unable to find %s veneer `%s'"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ»"
 
-#: elf32-arm.c:8900
+#: elf32-arm.c:8925
 #, c-format
 msgid "%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block"
 msgstr "%pB(%pA+%#x): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ðº Ð² Ð½Ðµ Ð¿Ð¾Ñ�Ð»ÐµÐ´Ð½ÐµÐ¼ Ð±Ð»Ð¾ÐºÐµ IT: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gcc -mrestrict-it Ð´Ð»Ñ� Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¾Ð´Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð² Ð±Ð»Ð¾ÐºÐµ IT"
 
-#: elf32-arm.c:9000
+#: elf32-arm.c:9023
 #, c-format
 msgid "invalid TARGET2 relocation type '%s'"
 msgstr "Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ TARGET2 Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Â«%sÂ»"
 
 #. FIXME: We ought to be able to generate thumb-1 PLT
 #. instructions...
-#: elf32-arm.c:9802
+#: elf32-arm.c:9825
 #, c-format
 msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� PLT Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ thumb-1 Ð¿Ð¾ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: elf32-arm.c:10106 elf32-arm.c:10148
+#: elf32-arm.c:10135 elf32-arm.c:10177
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %s Â«%#lxÂ» Ð² Ñ‚Ñ€Ð°Ð¼Ð¿Ð»Ð¸Ð½Ðµ TLS"
 
-#: elf32-arm.c:10492
+#: elf32-arm.c:10521
 msgid "shared object"
 msgstr "Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚"
 
-#: elf32-arm.c:10495
+#: elf32-arm.c:10524
 msgid "PIE executable"
 msgstr "Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ PIE"
 
-#: elf32-arm.c:10498
+#: elf32-arm.c:10527
 #, c-format
 msgid "%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ %s; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC"
 
-#: elf32-arm.c:10635 elf32-arm.c:11062
+#: elf32-arm.c:10664 elf32-arm.c:11091
 #, c-format
 msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� BLX %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ %s Â«%sÂ»"
 
-#: elf32-arm.c:11975 elf32-arm.c:12001
+#: elf32-arm.c:12003 elf32-arm.c:12029
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %s Â«%#lxÂ», Ð½Ð° ÐºÐ¾Ñ‚Ð¾Ñ€ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� TLS_GOTDESC"
 
-#: elf32-arm.c:12047 elf32-csky.c:4853 elf32-m68k.c:3703 elf32-metag.c:1919
-#: elf32-nios2.c:4366
+#: elf32-arm.c:12075 elf32-csky.c:4746 elf32-m68k.c:3735 elf32-metag.c:1915
+#: elf32-nios2.c:4385
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ"
 
-#: elf32-arm.c:12261
+#: elf32-arm.c:12289
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group relocations"
 msgstr "%pB(%pA+%#<PRIx64>): Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ ALU Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ñ‹ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ADD Ð¸Ð»Ð¸ SUB"
 
-#: elf32-arm.c:12302 elf32-arm.c:12394 elf32-arm.c:12482 elf32-arm.c:12572
+#: elf32-arm.c:12330 elf32-arm.c:12422 elf32-arm.c:12510 elf32-arm.c:12600
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group relocation %s"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� %#<PRIx64> Ð´Ð»Ñ� Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %s"
 
-#: elf32-arm.c:13078 elf32-sh.c:3689
+#: elf32-arm.c:13232 elf32-sh.c:3571
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ SEC_MERGE"
 
-#: elf32-arm.c:13191 elf32-m68k.c:3936 elf32-xtensa.c:2703
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6534
+#: elf32-arm.c:13345 elf32-m68k.c:3968 elf32-xtensa.c:2761
+#: elfnn-aarch64.c:6829
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
 msgstr "%pB(%pA+%#<PRIx64>): %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ %s"
 
-#: elf32-arm.c:13193 elf32-m68k.c:3938 elf32-xtensa.c:2705
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6536
+#: elf32-arm.c:13347 elf32-m68k.c:3970 elf32-xtensa.c:2763
+#: elfnn-aarch64.c:6831
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
 msgstr "%pB(%pA+%#<PRIx64>): %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� Ð½Ðµ TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ %s"
 
-#: elf32-arm.c:13276 elf32-tic6x.c:2708
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6871
+#: elf32-arm.c:13430 elf32-tic6x.c:2649 elfnn-aarch64.c:7166
 msgid "out of range"
 msgstr "Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°"
 
-#: elf32-arm.c:13280 elf32-nios2.c:4500 elf32-pru.c:933 elf32-tic6x.c:2712
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6875
+#: elf32-arm.c:13434 elf32-nios2.c:4519 elf32-pru.c:936 elf32-tic6x.c:2653
+#: elfnn-aarch64.c:7170
 msgid "unsupported relocation"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf32-arm.c:13288 elf32-nios2.c:4510 elf32-pru.c:943 elf32-tic6x.c:2720
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6883
+#: elf32-arm.c:13442 elf32-nios2.c:4529 elf32-pru.c:946 elf32-tic6x.c:2661
+#: elfnn-aarch64.c:7178
 msgid "unknown error"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°"
 
-#: elf32-arm.c:13764
+#: elf32-arm.c:13920
 #, c-format
 msgid "warning: not setting interworking flag of %pB since it has already been specified as non-interworking"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð»Ð°Ð³ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð´Ð»Ñ� %pB Ð½Ðµ ÑƒÑ�Ñ‚Ð°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�, Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ð½ ÑƒÐ¶Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚Ñƒ"
 
-#: elf32-arm.c:13768
+#: elf32-arm.c:13924
 #, c-format
 msgid "warning: clearing the interworking flag of %pB due to outside request"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‡Ð¸Ñ‰Ð°ÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð´Ð»Ñ� %pB Ð¸Ð·-Ð·Ð° Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ð·Ð°Ð¿Ñ€Ð¾Ñ�Ð°"
 
-#: elf32-arm.c:13813
+#: elf32-arm.c:13969
 #, c-format
 msgid "warning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð±Ñ€Ð¾Ñ� Ñ„Ð»Ð°Ð³Ð° Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ %pB, Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ� Ð½Ð¸Ð¼ Ð±Ñ‹Ð» Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð±ÐµÐ· Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð¸Ð· %pB"
 
-#: elf32-arm.c:13900
+#: elf32-arm.c:14056
 #, c-format
 msgid "%pB: unknown mandatory EABI object attribute %d"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d"
 
-#: elf32-arm.c:13908
+#: elf32-arm.c:14064
 #, c-format
 msgid "warning: %pB: unknown EABI object attribute %d"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d"
 
-#: elf32-arm.c:14175
+#: elf32-arm.c:14364
 #, c-format
 msgid "error: %pB: unknown CPU architecture"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°"
 
-#: elf32-arm.c:14213 elf32-nios2.c:2946
+#: elf32-arm.c:14402 elf32-nios2.c:2953
 #, c-format
 msgid "error: %pB: conflicting CPU architectures %d/%d"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ðµ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ %d/%d"
 
-#: elf32-arm.c:14310
+#: elf32-arm.c:14499
 #, c-format
 msgid "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ Ð¸ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ²ÑˆÐ¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Tag_MPextension_use"
 
-#: elf32-arm.c:14339
+#: elf32-arm.c:14528
 #, c-format
 msgid "error: %pB uses VFP register arguments, %pB does not"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ñ‹Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ VFP, Ð° %pB Ð½ÐµÑ‚"
 
-#: elf32-arm.c:14497
+#: elf32-arm.c:14687
 #, c-format
 msgid "error: %pB: unable to merge virtualization attributes with %pB"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ñ� %pB"
 
-#: elf32-arm.c:14523
+#: elf32-arm.c:14713
 #, c-format
 msgid "error: %pB: conflicting architecture profiles %c/%c"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ðµ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ %c/%c"
 
-#: elf32-arm.c:14662
+#: elf32-arm.c:14852
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ð²Ñ‹Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹"
 
-#: elf32-arm.c:14671
+#: elf32-arm.c:14861
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰ÐµÐµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ R9"
 
-#: elf32-arm.c:14683
+#: elf32-arm.c:14873
 #, c-format
 msgid "error: %pB: SB relative addressing conflicts with use of R9"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰ÐµÐµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ Ð°Ð´Ñ€ÐµÑ�Ð°Ñ†Ð¸Ð¸ SB Ð¸ R9"
 
-#: elf32-arm.c:14696
+#: elf32-arm.c:14886
 #, c-format
 msgid "warning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹ wchar_t, Ñ…Ð¾Ñ‚Ñ� ÑƒÐ¶Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð»Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹ wchar_t; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ wchar_t Ð² Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ñ… Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµ"
 
-#: elf32-arm.c:14727
+#: elf32-arm.c:14917
 #, c-format
 msgid "warning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s enum, Ñ…Ð¾Ñ‚Ñ� ÑƒÐ¶Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð»Ñ�Ñ� %s enum; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ enum Ð² Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ñ… Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµ"
 
-#: elf32-arm.c:14739
+#: elf32-arm.c:14929
 #, c-format
 msgid "error: %pB uses iWMMXt register arguments, %pB does not"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ñ‹Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ iWMMXt, Ð° %pB Ð½ÐµÑ‚"
 
-#: elf32-arm.c:14756
+#: elf32-arm.c:14946
 #, c-format
 msgid "error: fp16 format mismatch between %pB and %pB"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ fp16 Ñ€Ð°Ñ�Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð² %pB Ð¸ %pB"
 
-#: elf32-arm.c:14792
+#: elf32-arm.c:14982
 #, c-format
 msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr "%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ Ð¸ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ²ÑˆÐ¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Tag_MPextension_use"
@@ -1686,345 +1790,330 @@ msgstr "%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð´Ð½Ð¾Ð²Ñ
 #. Ignore init flag - it may not be set, despite the flags field containing valid data.
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
-#: elf32-arm.c:14879 elf32-bfin.c:4740 elf32-cris.c:3908 elf32-m68hc1x.c:1410
-#: elf32-m68k.c:1201 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
-#: elf32-xgate.c:494 elfxx-mips.c:16037
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7037
+#: elf32-arm.c:15069 elf32-bfin.c:4719 elf32-cris.c:3861 elf32-m68hc1x.c:1416
+#: elf32-m68k.c:1267 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
+#: elf32-xgate.c:494 elfxx-mips.c:16199 elfnn-aarch64.c:7332
 #, c-format
 msgid "private flags = %lx:"
 msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx:"
 
-#: elf32-arm.c:14888
+#: elf32-arm.c:15078
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð°Ñ� Ñ€Ð°Ð±Ð¾Ñ‚Ð° Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°]"
 
-#: elf32-arm.c:14896
+#: elf32-arm.c:15086
 #, c-format
 msgid " [VFP float format]"
 msgstr " [VFP Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸]"
 
-#: elf32-arm.c:14898
+#: elf32-arm.c:15088
 #, c-format
 msgid " [Maverick float format]"
 msgstr " [Maverick Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸]"
 
-#: elf32-arm.c:14900
+#: elf32-arm.c:15090
 #, c-format
 msgid " [FPA float format]"
 msgstr " [FPA Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸]"
 
-#: elf32-arm.c:14903
+#: elf32-arm.c:15093
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr " [Ñ‡Ð¸Ñ�Ð»Ð° Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ð¿ÐµÑ€ÐµÐ´Ð°ÑŽÑ‚Ñ�Ñ� Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ… Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹]"
 
-#: elf32-arm.c:14906 elf32-arm.c:14992
+#: elf32-arm.c:15096 elf32-arm.c:15182
 #, c-format
 msgid " [position independent]"
 msgstr " [Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¾-Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ñ‹Ð¹]"
 
-#: elf32-arm.c:14909
+#: elf32-arm.c:15099
 #, c-format
 msgid " [new ABI]"
 msgstr " [Ð½Ð¾Ð²Ñ‹Ð¹ ABI]"
 
-#: elf32-arm.c:14912
+#: elf32-arm.c:15102
 #, c-format
 msgid " [old ABI]"
 msgstr " [Ñ�Ñ‚Ð°Ñ€Ñ‹Ð¹ ABI]"
 
-#: elf32-arm.c:14915
+#: elf32-arm.c:15105
 #, c-format
 msgid " [software FP]"
 msgstr " [Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ� FP]"
 
-#: elf32-arm.c:14924
+#: elf32-arm.c:15114
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ð¸Ñ�1 EABI]"
 
-#: elf32-arm.c:14927 elf32-arm.c:14938
+#: elf32-arm.c:15117 elf32-arm.c:15128
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²]"
 
-#: elf32-arm.c:14929 elf32-arm.c:14940
+#: elf32-arm.c:15119 elf32-arm.c:15130
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [Ð½ÐµÑ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²]"
 
-#: elf32-arm.c:14935
+#: elf32-arm.c:15125
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ð¸Ñ�2 EABI]"
 
-#: elf32-arm.c:14943
+#: elf32-arm.c:15133
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ�]"
 
-#: elf32-arm.c:14946
+#: elf32-arm.c:15136
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [Ð¿Ñ€Ð¾ÐµÑ†Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ€Ð°Ð½ÑŒÑˆÐµ]"
 
-#: elf32-arm.c:14953
+#: elf32-arm.c:15143
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ð¸Ñ�3 EABI]"
 
-#: elf32-arm.c:14957
+#: elf32-arm.c:15147
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ð¸Ñ�4 EABI]"
 
-#: elf32-arm.c:14961
+#: elf32-arm.c:15151
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ð¸Ñ�5 EABI]"
 
-#: elf32-arm.c:14964
+#: elf32-arm.c:15154
 #, c-format
 msgid " [soft-float ABI]"
 msgstr " [soft-float ABI]"
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:15157
 #, c-format
 msgid " [hard-float ABI]"
 msgstr " [hard-float ABI]"
 
-#: elf32-arm.c:14973
+#: elf32-arm.c:15163
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:14976
+#: elf32-arm.c:15166
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:14982
+#: elf32-arm.c:15172
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� EABI>"
 
-#: elf32-arm.c:14989
+#: elf32-arm.c:15179
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹]"
 
-#: elf32-arm.c:14995
+#: elf32-arm.c:15185
 #, c-format
 msgid " [FDPIC ABI supplement]"
 msgstr " [Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ FDPIC ABI]"
 
-#: elf32-arm.c:15000
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7040
+#: elf32-arm.c:15190 elfnn-aarch64.c:7335
 #, c-format
 msgid "<Unrecognised flag bits set>"
 msgstr "<Ð�ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð½Ð°Ð±Ð¾Ñ€ Ð±Ð¸Ñ‚Ð¾Ð² Ñ„Ð»Ð°Ð³Ð°>"
 
-#: elf32-arm.c:15117 elf32-i386.c:1529 elf32-s390.c:960 elf32-tic6x.c:2783
-#: elf32-tilepro.c:1479 elf32-xtensa.c:1029 elf64-s390.c:882
-#: elf64-x86-64.c:1865 elfxx-sparc.c:1422 elfxx-tilegx.c:1700
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7329
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:539
+#: elf32-arm.c:15307 elf32-i386.c:1524 elf32-s390.c:925 elf32-tic6x.c:2724
+#: elf32-tilepro.c:1443 elf32-xtensa.c:1093 elf64-s390.c:847
+#: elf64-x86-64.c:1902 elfxx-sparc.c:1386 elfxx-tilegx.c:1664
+#: elfnn-aarch64.c:7606 elfnn-riscv.c:525
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ�: %d"
 
-#: elf32-arm.c:15508
+#: elf32-arm.c:15696
 #, c-format
 msgid "FDPIC does not yet support %s relocation to become dynamic for executable"
 msgstr "FDPIC Ð¿Ð¾ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %s Ð´Ð»Ñ� Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð²"
 
-#: elf32-arm.c:16558 elf32-csky.c:1931 elf32-hppa.c:2090 elf32-lm32.c:1998
-#: elf32-m32r.c:2110 elf32-metag.c:2797 elf32-nds32.c:4330 elf32-or1k.c:2858
-#: elf32-ppc.c:5469 elf32-s390.c:1854 elf32-sh.c:2975 elf32-tic6x.c:3252
-#: elf32-tilepro.c:2245 elf64-ppc.c:9023 elf64-s390.c:1791 elfxx-sparc.c:2435
-#: elfxx-tilegx.c:2491 elfxx-x86.c:571
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:8677
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:1142
-#, c-format
-msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
-msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Â«%pTÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
-
-#: elf32-arm.c:16854
+#: elf32-arm.c:16939
 #, c-format
 msgid "errors encountered processing file %pB"
 msgstr "Ð¿Ñ€Ð¸ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐµ Ñ„Ð°Ð¹Ð»Ð° %pB Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ñ‹ Ð¾ÑˆÐ¸Ð±ÐºÐ¸"
 
-#: elf32-arm.c:17301 elflink.c:12556 elflink.c:12603
+#: elf32-arm.c:17326 elflink.c:12818 elflink.c:12865
 #, c-format
 msgid "could not find section %s"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ» %s"
 
-#: elf32-arm.c:18512
+#: elf32-arm.c:18550
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub is allocated in unsafe location"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Cortex-A8 Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð° Ð² Ð½ÐµÐ±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð¼ Ð¼ÐµÑ�Ñ‚Ðµ"
 
 #. There's not much we can do apart from complain if this
 #. happens.
-#: elf32-arm.c:18539
+#: elf32-arm.c:18577
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Cortex-A8 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)"
 
-#: elf32-arm.c:19366 elf32-arm.c:19388
+#: elf32-arm.c:19404 elf32-arm.c:19426
 #, c-format
 msgid "%pB: error: VFP11 veneer out of range"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�ÐºÐ»ÐµÐ¹ÐºÐ° VFP11 Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°"
 
-#: elf32-arm.c:19439
+#: elf32-arm.c:19477
 #, c-format
 msgid "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range by %<PRId64> bytes; cannot encode branch instruction"
 msgstr "%pB(%#<PRIx64>): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX; Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ %<PRId64> Ð±Ð°Ð¹Ñ‚; Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�"
 
-#: elf32-arm.c:19478
+#: elf32-arm.c:19516
 #, c-format
 msgid "%pB: error: cannot create STM32L4XX veneer"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX"
 
-#: elf32-arm.c:20567
+#: elf32-arm.c:20600
 #, c-format
 msgid "error: %pB is already in final BE8 format"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB ÑƒÐ¶Ðµ Ð² ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ BE8"
 
-#: elf32-arm.c:20643
+#: elf32-arm.c:20676
 #, c-format
 msgid "error: source object %pB has EABI version %d, but target %pB has EABI version %d"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±ÑŠÐµÐºÑ‚-Ð¸Ñ�Ñ‚Ð¾Ñ‡Ð½Ð¸Ðº %pB Ð¸Ð¼ÐµÐµÑ‚ Ð²ÐµÑ€Ñ�Ð¸ÑŽ EABI %d, Ð° Ñ†ÐµÐ»ÑŒ %pB Ð¸Ð¼ÐµÐµÑ‚ Ð²ÐµÑ€Ñ�Ð¸ÑŽ EABI %d"
 
-#: elf32-arm.c:20658
+#: elf32-arm.c:20691
 #, c-format
 msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� APCS-%d, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº Ñ†ÐµÐ»ÑŒ %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ APCS-%d"
 
-#: elf32-arm.c:20668
+#: elf32-arm.c:20701
 #, c-format
 msgid "error: %pB passes floats in float registers, whereas %pB passes them in integer registers"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ñ‡Ð¸Ñ�Ð»Ð° Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ… Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ð¸Ñ… Ð² Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ…"
 
-#: elf32-arm.c:20672
+#: elf32-arm.c:20705
 #, c-format
 msgid "error: %pB passes floats in integer registers, whereas %pB passes them in float registers"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ñ‡Ð¸Ñ�Ð»Ð° Ð² Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ…, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‘Ñ‚ Ð¸Ñ… Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ… Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹"
 
-#: elf32-arm.c:20682 elf32-arm.c:20686 elf32-arm.c:20696
+#: elf32-arm.c:20715 elf32-arm.c:20719 elf32-arm.c:20729
 #, c-format
 msgid "error: %pB uses %s instructions, whereas %pB does not"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð½ÐµÑ‚"
 
-#: elf32-arm.c:20700
+#: elf32-arm.c:20733
 #, c-format
 msgid "error: %pB does not use %s instructions, whereas %pB does"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð½Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚"
 
-#: elf32-arm.c:20719
+#: elf32-arm.c:20752
 #, c-format
 msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ FP, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ FP"
 
-#: elf32-arm.c:20723
+#: elf32-arm.c:20756
 #, c-format
 msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ FP, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ FP"
 
-#: elf32-arm.c:20737
+#: elf32-arm.c:20770
 #, c-format
 msgid "warning: %pB supports interworking, whereas %pB does not"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚Ñƒ, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð½ÐµÑ‚"
 
-#: elf32-arm.c:20743
+#: elf32-arm.c:20776
 #, c-format
 msgid "warning: %pB does not support interworking, whereas %pB does"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚Ñƒ, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚"
 
-#: elf32-avr.c:1518 elf32-bfin.c:3135 elf32-cris.c:2041 elf32-epiphany.c:577
-#: elf32-fr30.c:602 elf32-frv.c:4057 elf32-ft32.c:502 elf32-ip2k.c:1493
-#: elf32-iq2000.c:701 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1998
-#: elf32-moxie.c:296 elf32-msp430.c:1366 elf32-mt.c:406 elf32-or1k.c:1767
-#: elf32-tilepro.c:3514 elf32-v850.c:2299 elf32-visium.c:689
-#: elf32-xstormy16.c:939 elf64-mmix.c:1549 elfxx-tilegx.c:3878
+#: elf32-avr.c:1516 elf32-bfin.c:3134 elf32-cris.c:2041 elf32-epiphany.c:573
+#: elf32-fr30.c:602 elf32-frv.c:4056 elf32-ft32.c:502 elf32-ip2k.c:1488
+#: elf32-iq2000.c:699 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1994
+#: elf32-moxie.c:296 elf32-msp430.c:1375 elf32-mt.c:406 elf32-or1k.c:1825
+#: elf32-tilepro.c:3388 elf32-v850.c:2298 elf32-visium.c:688
+#: elf32-xstormy16.c:937 elf64-bpf.c:521 elf64-mmix.c:1549 elfxx-tilegx.c:3752
 msgid "internal error: dangerous relocation"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf32-avr.c:3327
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3126
+#: elf32-avr.c:3327 elfnn-aarch64.c:3221
 #, c-format
 msgid "cannot create stub entry %s"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %s"
 
-#: elf32-bfin.c:106 elf32-bfin.c:362
+#: elf32-bfin.c:107 elf32-bfin.c:363
 msgid "relocation should be even number"
 msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ñ‡Ñ‘Ñ‚Ð½Ñ‹Ð¼ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼"
 
-#: elf32-bfin.c:1585
+#: elf32-bfin.c:1584
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ»"
 
-#: elf32-bfin.c:1617 elf32-i386.c:3449 elf32-m68k.c:3976 elf32-s390.c:3269
-#: elf64-s390.c:3219 elf64-x86-64.c:3896
+#: elf32-bfin.c:1616 elf32-i386.c:3443 elf32-m68k.c:4008 elf32-s390.c:3140
+#: elf64-s390.c:3089 elf64-x86-64.c:4112
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Â«%sÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ° %d"
 
-#: elf32-bfin.c:2638
+#: elf32-bfin.c:2641
 #, c-format
 msgid "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero addend"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ Â«%pA+%#<PRIx64>Â» Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼"
 
-#: elf32-bfin.c:2655
+#: elf32-bfin.c:2658
 msgid "relocation references symbol not defined in the module"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð¼Ð¾Ð´ÑƒÐ»Ðµ"
 
-#: elf32-bfin.c:2752
+#: elf32-bfin.c:2755
 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
 msgstr "R_BFIN_FUNCDESC ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼"
 
-#: elf32-bfin.c:2793 elf32-bfin.c:2916
+#: elf32-bfin.c:2795 elf32-bfin.c:2916
 msgid "cannot emit fixups in read-only section"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�"
 
-#: elf32-bfin.c:2824 elf32-bfin.c:2954 elf32-lm32.c:1049 elf32-sh.c:4511
+#: elf32-bfin.c:2825 elf32-bfin.c:2953 elf32-lm32.c:1006 elf32-sh.c:4389
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�"
 
-#: elf32-bfin.c:2874
+#: elf32-bfin.c:2875
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
 msgstr "R_BFIN_FUNCDESC_VALUE ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼"
 
-#: elf32-bfin.c:3039
+#: elf32-bfin.c:3038
 msgid "relocations between different segments are not supported"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¼ÐµÐ¶Ð´Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚Ñ�Ñ�"
 
-#: elf32-bfin.c:3040
+#: elf32-bfin.c:3039
 msgid "warning: relocation references a different segment"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚"
 
-#: elf32-bfin.c:4787 elf32-frv.c:6603
+#: elf32-bfin.c:4770 elf32-frv.c:6584
 #, c-format
 msgid "%pB: cannot link non-fdpic object file into fdpic executable"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð», Ð½Ðµ Ñ�Ð²Ð»Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� fdpic, Ð² Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ fdpic"
 
-#: elf32-bfin.c:4791 elf32-frv.c:6607
+#: elf32-bfin.c:4774 elf32-frv.c:6588
 #, c-format
 msgid "%pB: cannot link fdpic object file into non-fdpic executable"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð», Ñ�Ð²Ð»Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� fdpic, Ð² Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ð½Ðµ fdpic"
 
-#: elf32-bfin.c:4941
+#: elf32-bfin.c:4924
 #, c-format
 msgid "*** check this relocation %s"
 msgstr "*** Ð¿Ñ€Ð¾Ð²ÐµÑ€ÑŒÑ‚Ðµ Ñ�Ñ‚Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s"
 
-#: elf32-bfin.c:5057
+#: elf32-bfin.c:5040
 msgid "the bfin target does not currently support the generation of copy relocations"
 msgstr "Ð´Ð»Ñ� Ñ†ÐµÐ»Ð¸ bfin Ð¿Ð¾ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹"
 
-#: elf32-bfin.c:5351 elf32-cr16.c:2803 elf32-m68k.c:4390
+#: elf32-bfin.c:5334 elf32-cr16.c:2731 elf32-m68k.c:4422
 msgid "unsupported relocation type"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
@@ -2044,16 +2133,16 @@ msgid "%pB, section %pA: no PLT for relo
 msgstr "%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð½ÐµÑ‚ PLT Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
 #: elf32-cris.c:1193 elf32-cris.c:1326 elf32-cris.c:1591 elf32-cris.c:1674
-#: elf32-cris.c:1827 elf32-tic6x.c:2619
+#: elf32-cris.c:1827 elf32-tic6x.c:2560
 msgid "[whose name is lost]"
 msgstr "[Ñ‡ÑŒÑ‘ Ð¸Ð¼Ñ� Ð¿Ð¾Ñ‚ÐµÑ€Ñ�Ð½Ð¾]"
 
-#: elf32-cris.c:1311 elf32-tic6x.c:2603
+#: elf32-cris.c:1311 elf32-tic6x.c:2544
 #, c-format
 msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against local symbol"
 msgstr "%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ %<PRId64> Ñƒ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
 
-#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2612
+#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2553
 #, c-format
 msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
 msgstr "%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ %<PRId64> Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
@@ -2109,71 +2198,71 @@ msgstr "%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ
 msgid "%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr "%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC"
 
-#: elf32-cris.c:3747
+#: elf32-cris.c:3700
 #, c-format
 msgid "%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr "%pB, Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ», Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC"
 
-#: elf32-cris.c:3860
+#: elf32-cris.c:3812
 msgid "unexpected machine number"
 msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ðµ Ñ‡Ð¸Ñ�Ð»Ð¾"
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3864
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr " [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ� _]"
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3867
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 Ð¸ v32]"
 
-#: elf32-cris.c:3917
+#: elf32-cris.c:3870
 #, c-format
 msgid " [v32]"
 msgstr " [v32]"
 
-#: elf32-cris.c:3961
+#: elf32-cris.c:3914
 #, c-format
 msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ _, Ð½Ð¾ Ð² Ñ„Ð°Ð¹Ð» Ð·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð²"
 
-#: elf32-cris.c:3962
+#: elf32-cris.c:3915
 #, c-format
 msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð° _, Ð½Ð¾ Ð² Ñ„Ð°Ð¹Ð» Ð·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ _"
 
-#: elf32-cris.c:3981
+#: elf32-cris.c:3934
 #, c-format
 msgid "%pB contains CRIS v32 code, incompatible with previous objects"
 msgstr "%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÐºÐ¾Ð´ CRIS v32, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸"
 
-#: elf32-cris.c:3983
+#: elf32-cris.c:3936
 #, c-format
 msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
 msgstr "%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÐºÐ¾Ð´ Ð½Ðµ CRIS v32, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸"
 
-#: elf32-csky.c:2066
+#: elf32-csky.c:2022
 msgid "GOT table size out of range"
 msgstr "Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ GOT Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹"
 
-#: elf32-csky.c:2917
+#: elf32-csky.c:2802
 #, c-format
 msgid "warning: unrecognized arch eflag '%#lx'"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ð¹ eflag Â«%#lxÂ»"
 
-#: elf32-csky.c:2977
+#: elf32-csky.c:2862
 #, c-format
 msgid "%pB: machine flag conflict with target"
 msgstr "%pB: Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ†ÐµÐ»ÑŒÑŽ"
 
-#: elf32-csky.c:2990
+#: elf32-csky.c:2875
 #, c-format
 msgid "warning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%s"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ %pB Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ ck%s ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� ck%s Ñ†ÐµÐ»Ð¸, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ ck%s"
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4225 elf32-i386.c:351
+#: elf32-csky.c:4118 elf32-i386.c:350
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� : %#x"
@@ -2189,7 +2278,7 @@ msgid "jump (PC rel26) to section (%s) n
 msgstr "Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº (PC rel26) Ð² Ñ€Ð°Ð·Ð´ÐµÐ» (%s) Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
 #. Only if it's not an unresolved symbol.
-#: elf32-epiphany.c:573 elf32-ip2k.c:1489
+#: elf32-epiphany.c:569 elf32-ip2k.c:1484
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¼ÐµÐ¶Ð´Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð½Ñ‹Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð¾Ð¼ Ð´Ð°Ð½Ð½Ñ‹Ñ…/Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹"
 
@@ -2197,96 +2286,96 @@ msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ
 msgid "relocation requires zero addend"
 msgstr "Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ"
 
-#: elf32-frv.c:2829
+#: elf32-frv.c:2832
 #, c-format
 msgid "%H: relocation to `%s+%v' may have caused the error above\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Â«%s+%vÂ» Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð·Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹\n"
 
-#: elf32-frv.c:2846
+#: elf32-frv.c:2849
 msgid "%H: relocation references symbol not defined in the module\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð¼Ð¾Ð´ÑƒÐ»Ðµ\n"
 
-#: elf32-frv.c:2922
+#: elf32-frv.c:2925
 msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
 msgstr "%H: R_FRV_GETTLSOFF Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ call\n"
 
-#: elf32-frv.c:2963
+#: elf32-frv.c:2966
 msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
 msgstr "%H R_FRV_GOTTLSDESC12 Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ lddi\n"
 
-#: elf32-frv.c:3034
+#: elf32-frv.c:3037
 msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESCHI Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ sethi\n"
 
-#: elf32-frv.c:3071
+#: elf32-frv.c:3074
 msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESCLO Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ setlo Ð¸Ð»Ð¸ setlos\n"
 
-#: elf32-frv.c:3118
+#: elf32-frv.c:3121
 msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
 msgstr "%H: R_FRV_TLSDESC_RELAX Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ldd\n"
 
-#: elf32-frv.c:3202
+#: elf32-frv.c:3205
 msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
 msgstr "%H: R_FRV_GETTLSOFF_RELAX Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ calll\n"
 
-#: elf32-frv.c:3256
+#: elf32-frv.c:3259
 msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFF12 Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ldi\n"
 
-#: elf32-frv.c:3286
+#: elf32-frv.c:3289
 msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFFHI Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ sethi\n"
 
-#: elf32-frv.c:3315
+#: elf32-frv.c:3318
 msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFFLO Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ setlo Ð¸Ð»Ð¸ setlos\n"
 
-#: elf32-frv.c:3345
+#: elf32-frv.c:3348
 msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
 msgstr "%H: R_FRV_TLSOFF_RELAX Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ld\n"
 
-#: elf32-frv.c:3390
+#: elf32-frv.c:3393
 msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_TLSMOFFHI Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ sethi\n"
 
-#: elf32-frv.c:3417
+#: elf32-frv.c:3420
 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
 msgstr "R_FRV_TLSMOFFLO Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ setlo Ð¸Ð»Ð¸ setlos\n"
 
-#: elf32-frv.c:3538 elf32-frv.c:3660
+#: elf32-frv.c:3541 elf32-frv.c:3661
 msgid "%H: %s references dynamic symbol with nonzero addend\n"
 msgstr "%H: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼\n"
 
-#: elf32-frv.c:3580 elf32-frv.c:3703
+#: elf32-frv.c:3582 elf32-frv.c:3703
 msgid "%H: cannot emit fixups in read-only section\n"
 msgstr "%H: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�\n"
 
-#: elf32-frv.c:3611 elf32-frv.c:3746
+#: elf32-frv.c:3612 elf32-frv.c:3745
 msgid "%H: cannot emit dynamic relocations in read-only section\n"
 msgstr "%H: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�\n"
 
-#: elf32-frv.c:3918
+#: elf32-frv.c:3917
 #, c-format
 msgid "%H: reloc against `%s' references a different segment\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
 
-#: elf32-frv.c:4069
+#: elf32-frv.c:4068
 #, c-format
 msgid "%H: reloc against `%s': %s\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Â«%sÂ»: %s\n"
 
-#: elf32-frv.c:6514
+#: elf32-frv.c:6495
 #, c-format
 msgid "%pB: compiled with %s and linked with modules that use non-pic relocations"
 msgstr "%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ñ� %s Ð¸ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð½Ðµ-pic Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
-#: elf32-frv.c:6568 elf32-iq2000.c:832 elf32-m32c.c:876
+#: elf32-frv.c:6549 elf32-iq2000.c:830 elf32-m32c.c:876
 #, c-format
 msgid "%pB: compiled with %s and linked with modules compiled with %s"
 msgstr "%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ñ� %s Ð¸ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� %s"
 
-#: elf32-frv.c:6581
+#: elf32-frv.c:6562
 #, c-format
 msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ðµ Ð¿Ð¾Ð»Ñ� e_flags (%#x), Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð¾Ñ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)"
@@ -2296,137 +2385,140 @@ msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð½
 msgid "%pB: relocations in generic ELF (EM: %d)"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ð¾Ð¼ ELF (EM: %d)"
 
-#: elf32-hppa.c:834 elf32-hppa.c:3511
+#: elf32-hppa.c:763 elf32-hppa.c:844 elf64-ppc.c:11859
+msgid "%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ %pA Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñƒ. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚Ðµ Ð±ÐµÐ· --enable-non-contiguous-regions.\n"
+
+#: elf32-hppa.c:865 elf32-hppa.c:3407
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´Ð¾Ñ�Ñ‚Ð¸Ñ‡ÑŒ %s, Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -ffunction-sections"
 
-#: elf32-hppa.c:1248
+#: elf32-hppa.c:1243
 #, c-format
 msgid "%pB: relocation %s can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC"
 
-#: elf32-hppa.c:2688
+#: elf32-hppa.c:2584
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr "%pB: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ñ‹Ð¹ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %s"
 
-#: elf32-hppa.c:3344
+#: elf32-hppa.c:3240
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared link"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %#x Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð½Ðµ Ð¾Ð±Ñ‰ÐµÐ¹ Ñ�Ñ�Ñ‹Ð»ÐºÐµ"
 
-#: elf32-hppa.c:4140
+#: elf32-hppa.c:4036
 #, c-format
 msgid "%s has both normal and TLS relocs"
 msgstr "%s Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� TLS"
 
-#: elf32-hppa.c:4158
+#: elf32-hppa.c:4054
 #, c-format
 msgid "%pB:%s has both normal and TLS relocs"
 msgstr "%pB:%s Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� TLS"
 
-#: elf32-hppa.c:4217
+#: elf32-hppa.c:4113
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ %s Ð´Ð»Ñ� %s"
 
-#: elf32-hppa.c:4521
+#: elf32-hppa.c:4417
 msgid ".got section not immediately after .plt section"
 msgstr "Ñ€Ð°Ð·Ð´ÐµÐ» .got Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ñ�Ñ‚Ð¾Ñ�Ñ‚ÑŒ Ñ�Ñ€Ð°Ð·Ñƒ Ð¿Ð¾Ñ�Ð»Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .plt"
 
-#: elf32-i386.c:1178 elf64-x86-64.c:1377
+#: elf32-i386.c:1169 elf64-x86-64.c:1382
 #, c-format
 msgid "%pB: TLS transition from %s to %s against `%s' at %#<PRIx64> in section `%pA' failed"
 msgstr "%pB: TLS-Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ Ð¸Ð· %s Ð² %s Ð´Ð»Ñ� Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹"
 
-#: elf32-i386.c:1269
+#: elf32-i386.c:1272
 #, c-format
 msgid "%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object"
 msgstr "%pB: Ð¿Ñ€Ñ�Ð¼Ð¾Ðµ GOT Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_386_GOT32X c Â«%sÂ» Ð±ÐµÐ· Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
 
-#: elf32-i386.c:1726 elf32-s390.c:1188 elf32-sh.c:5662 elf32-tilepro.c:1592
-#: elf32-xtensa.c:1203 elf64-s390.c:1120 elfxx-sparc.c:1591
-#: elfxx-tilegx.c:1805
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:451
+#: elf32-i386.c:1721 elf32-s390.c:1153 elf32-sh.c:5494 elf32-tilepro.c:1556
+#: elf32-xtensa.c:1265 elf64-s390.c:1085 elfxx-sparc.c:1555
+#: elfxx-tilegx.c:1769 elfnn-riscv.c:437
 #, c-format
 msgid "%pB: `%s' accessed both as normal and thread local symbol"
 msgstr "%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð´Ð»Ñ� Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-i386.c:1798
+#: elf32-i386.c:1793
 #, c-format
 msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
 msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð½Ðµ PIC Ð²Ñ‹Ð·Ð¾Ð² IFUNC Â«%sÂ»"
 
-#: elf32-i386.c:2379 elf64-x86-64.c:2670
+#: elf32-i386.c:2373 elf64-x86-64.c:2721
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: elf32-i386.c:2412 elf32-i386.c:3660 elf32-i386.c:3801 elf64-x86-64.c:2727
-#: elf64-x86-64.c:4069 elf64-x86-64.c:4225
+#: elf32-i386.c:2406 elf32-i386.c:3654 elf32-i386.c:3795 elf64-x86-64.c:2778
+#: elf64-x86-64.c:4285 elf64-x86-64.c:4441
 #, c-format
 msgid "Local IFUNC function `%s' in %pB\n"
 msgstr "Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� IFUNC Â«%sÂ» Ð² %pB\n"
 
-#: elf32-i386.c:2569
+#: elf32-i386.c:2563
 #, c-format
 msgid "%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object"
 msgstr "%pB: Ð¿Ñ€Ñ�Ð¼Ð¾Ðµ GOT Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s c Â«%sÂ» Ð±ÐµÐ· Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
 
-#: elf32-i386.c:2604 elf64-x86-64.c:2919
+#: elf32-i386.c:2598 elf64-x86-64.c:2977
 msgid "hidden symbol"
 msgstr "Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2922
+#: elf32-i386.c:2601 elf64-x86-64.c:2980
 msgid "internal symbol"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-i386.c:2610 elf64-x86-64.c:2925
+#: elf32-i386.c:2604 elf64-x86-64.c:2983
 msgid "protected symbol"
 msgstr "Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-i386.c:2613 elf64-x86-64.c:2928
+#: elf32-i386.c:2607 elf64-x86-64.c:2986
 msgid "symbol"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-i386.c:2619
+#: elf32-i386.c:2613
 #, c-format
 msgid "%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_386_GOTOFF Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
 
-#: elf32-i386.c:2632
+#: elf32-i386.c:2626
 #, c-format
 msgid "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_386_GOTOFF Ð´Ð»Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð¹ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
 
-#: elf32-ip2k.c:856 elf32-ip2k.c:862 elf32-ip2k.c:929 elf32-ip2k.c:935
+#: elf32-ip2k.c:855 elf32-ip2k.c:861 elf32-ip2k.c:928 elf32-ip2k.c:934
 msgid "ip2k relaxer: switch table without complete matching relocation information."
 msgstr "ip2k relaxer: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ Ð±ÐµÐ· Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ Ñ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ� Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸."
 
-#: elf32-ip2k.c:879 elf32-ip2k.c:962
+#: elf32-ip2k.c:878 elf32-ip2k.c:961
 msgid "ip2k relaxer: switch table header corrupt."
 msgstr "ip2k relaxer: Ð¸Ñ�Ð¿Ð¾Ñ€Ñ‡ÐµÐ½ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹."
 
-#: elf32-ip2k.c:1302
+#: elf32-ip2k.c:1297
 #, c-format
 msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº ip2k: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> (Ð½Ð°Ð·Ð½Ð°Ñ‡ = %#<PRIx64>)"
 
-#: elf32-ip2k.c:1321
+#: elf32-ip2k.c:1316
 #, c-format
 msgid "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº ip2k: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> (Ð½Ð°Ð·Ð½Ð°Ñ‡ = %#<PRIx64>)"
 
-#: elf32-lm32.c:651 elf32-nios2.c:3141
+#: elf32-lm32.c:608 elf32-nios2.c:3148
 msgid "global pointer relative relocation when _gp not defined"
 msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°"
 
-#: elf32-lm32.c:706 elf32-nios2.c:3578
+#: elf32-lm32.c:663 elf32-nios2.c:3585
 msgid "global pointer relative address out of range"
 msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°"
 
-#: elf32-lm32.c:1002
+#: elf32-lm32.c:959
 #, c-format
 msgid "internal error: addend should be zero for %s"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� %s"
@@ -2435,136 +2527,141 @@ msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ
 msgid "SDA relocation when _SDA_BASE_ not defined"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SDA, Ð½Ð¾ _SDA_BASE_ Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°"
 
-#: elf32-m32r.c:2984 elf32-microblaze.c:1101 elf32-microblaze.c:1149
+#: elf32-m32r.c:2799 elf32-microblaze.c:1097 elf32-microblaze.c:1145
 #, c-format
 msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)"
 msgstr "%pB: Ñ†ÐµÐ»ÑŒ (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð² Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%pA)"
 
-#: elf32-m32r.c:3487
+#: elf32-m32r.c:3302
 #, c-format
 msgid "%pB: instruction set mismatch with previous modules"
 msgstr "%pB: Ð½Ð°Ð±Ð¾Ñ€ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñƒ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹"
 
-#: elf32-m32r.c:3508 elf32-nds32.c:6992
+#: elf32-m32r.c:3323 elf32-nds32.c:6855
 #, c-format
 msgid "private flags = %lx"
 msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx"
 
-#: elf32-m32r.c:3513
+#: elf32-m32r.c:3328
 #, c-format
 msgid ": m32r instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32r"
 
-#: elf32-m32r.c:3514
+#: elf32-m32r.c:3329
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32rx"
 
-#: elf32-m32r.c:3515
+#: elf32-m32r.c:3330
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32r2"
 
-#: elf32-m68hc1x.c:1116
+#: elf32-m68hc1x.c:1136
 #, c-format
 msgid "reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
 msgstr "Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ð´Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÑŽ"
 
-#: elf32-m68hc1x.c:1150
+#: elf32-m68hc1x.c:1167
 #, c-format
 msgid "XGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code."
 msgstr "Ð�Ð´Ñ€ÐµÑ� XGATE (%lx) Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð¾Ð±Ñ‰ÐµÐ¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð¹ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ (0xE000-0xFFFF), Ð¿Ð¾Ñ�Ñ‚Ð¾Ð¼Ñƒ Ð²Ñ‹ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ�Ñ‚ÑŒ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†ÐµÐ¹ Ð² ÐºÐ¾Ð´Ðµ."
 
-#: elf32-m68hc1x.c:1168
+#: elf32-m68hc1x.c:1183
 #, c-format
 msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)"
 msgstr "Ð±Ð°Ð½ÐºÐ¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� [%lx:%04lx] (%lx) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð±Ð°Ð½ÐºÐ¾Ð¼ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ Ð±Ð°Ð½ÐºÐ¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° [%lx:%04lx] (%lx)"
 
-#: elf32-m68hc1x.c:1184
+#: elf32-m68hc1x.c:1198
 #, c-format
 msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
 msgstr "Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ð±Ð°Ð½ÐºÐ¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� [%lx:%04lx] Ð² Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð¼ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %04lx"
 
-#: elf32-m68hc1x.c:1225
+#: elf32-m68hc1x.c:1234
 #, c-format
 msgid "S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your code"
 msgstr "Ð�Ð´Ñ€ÐµÑ� S12 (%lx) Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð¾Ð±Ñ‰ÐµÐ¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð¹ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ (0x2000-0x4000), Ð¿Ð¾Ñ�Ñ‚Ð¾Ð¼Ñƒ Ð²Ñ‹ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÐºÐ¾Ð´Ðµ"
 
-#: elf32-m68hc1x.c:1352
+#: elf32-m68hc1x.c:1358
 #, c-format
 msgid "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ� 16-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ†ÐµÐ»Ñ‹Ñ… (-mshort), Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð´Ð»Ñ� 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ†ÐµÐ»Ñ‹Ñ…"
 
-#: elf32-m68hc1x.c:1359
+#: elf32-m68hc1x.c:1365
 #, c-format
 msgid "%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ� 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… double (-fshort-double), Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð´Ð»Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… double"
 
-#: elf32-m68hc1x.c:1368
+#: elf32-m68hc1x.c:1374
 #, c-format
 msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ� HCS12, Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð´Ð»Ñ� HC12"
 
-#: elf32-m68hc1x.c:1413 elf32-xgate.c:497
+#: elf32-m68hc1x.c:1419 elf32-xgate.c:497
 #, c-format
 msgid "[abi=32-bit int, "
 msgstr "[abi=32-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ int, "
 
-#: elf32-m68hc1x.c:1415 elf32-xgate.c:499
+#: elf32-m68hc1x.c:1421 elf32-xgate.c:499
 #, c-format
 msgid "[abi=16-bit int, "
 msgstr "[abi=16-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ int, "
 
-#: elf32-m68hc1x.c:1418 elf32-xgate.c:502
+#: elf32-m68hc1x.c:1424 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
 msgstr "64-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ double, "
 
-#: elf32-m68hc1x.c:1420 elf32-xgate.c:504
+#: elf32-m68hc1x.c:1426 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr "32-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ double, "
 
-#: elf32-m68hc1x.c:1423
+#: elf32-m68hc1x.c:1429
 #, c-format
 msgid "cpu=HC11]"
 msgstr "Ð¦ÐŸ=HC11]"
 
-#: elf32-m68hc1x.c:1425
+#: elf32-m68hc1x.c:1431
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "Ð¦ÐŸ=HCS12]"
 
-#: elf32-m68hc1x.c:1427
+#: elf32-m68hc1x.c:1433
 #, c-format
 msgid "cpu=HC12]"
 msgstr "Ð¦ÐŸ=HC12]"
 
-#: elf32-m68hc1x.c:1430
+#: elf32-m68hc1x.c:1436
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ=Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ñ� Ð±Ð°Ð½ÐºÐ°Ð¼Ð¸]"
 
-#: elf32-m68hc1x.c:1432
+#: elf32-m68hc1x.c:1438
 #, c-format
 msgid " [memory=flat]"
 msgstr " [Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ=Ð¿Ð»Ð¾Ñ�ÐºÐ°Ñ�]"
 
-#: elf32-m68hc1x.c:1435
+#: elf32-m68hc1x.c:1441
 #, c-format
 msgid " [XGATE RAM offsetting]"
 msgstr " [Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ XGATE Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸]"
 
-#: elf32-m68k.c:1216 elf32-m68k.c:1217 vms-alpha.c:7484 vms-alpha.c:7500
+#: elf32-m68k.c:1159 elf32-m68k.c:1167 elf32-ppc.c:3583 elf32-ppc.c:3591
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr "%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ"
+
+#: elf32-m68k.c:1282 elf32-m68k.c:1283 vms-alpha.c:7664 vms-alpha.c:7680
 msgid "unknown"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾"
 
-#: elf32-m68k.c:1660
+#: elf32-m68k.c:1733
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ GOT: ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ� 8-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ > %d"
 
-#: elf32-m68k.c:1667
+#: elf32-m68k.c:1740
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ GOT: ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ� 8-Ð¼Ð¸ Ð¸Ð»Ð¸ 16-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ > %d"
@@ -2595,18 +2692,18 @@ msgstr "%pB Ð¸ %pB Ð´Ð»Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ð
 msgid "private flags = 0x%lx"
 msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = 0x%lx"
 
-#: elf32-metag.c:1863
+#: elf32-metag.c:1859
 #, c-format
 msgid "%pB(%pA): multiple TLS models are not supported"
 msgstr "%pB(%pA): Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹ TLS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: elf32-metag.c:1866
+#: elf32-metag.c:1862
 #, c-format
 msgid "%pB(%pA): shared library symbol %s encountered whilst performing a static link"
 msgstr "%pB(%pA): Ð¿Ñ€Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ð¸ Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸"
 
-#: elf32-microblaze.c:1544 elf32-tilepro.c:3155 elfxx-sparc.c:3538
-#: elfxx-tilegx.c:3543
+#: elf32-microblaze.c:1540 elf32-tilepro.c:3029 elfxx-sparc.c:3427
+#: elfxx-tilegx.c:3417
 #, c-format
 msgid "%pB: probably compiled without -fPIC?"
 msgstr "%pB: Ð²ÐµÑ€Ð¾Ñ�Ñ‚Ð½Ð¾, ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ†Ð¸Ñ� Ð±ÐµÐ· -fPIC?"
@@ -2620,320 +2717,315 @@ msgstr "Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr "Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ 32â€”Ð±Ð¸Ñ‚Ð½Ð¾Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf32-msp430.c:837 elf32-msp430.c:1151
+#: elf32-msp430.c:846 elf32-msp430.c:1160
 msgid "try enabling relaxation to avoid relocation truncations"
 msgstr "Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ðµ, Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ð¸Ð·Ð±ÐµÐ¶Ð°Ñ‚ÑŒ Ð¾Ð±Ñ€ÐµÐ·Ð°Ð½Ð¸Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹"
 
-#: elf32-msp430.c:1358
+#: elf32-msp430.c:1367
 msgid "internal error: branch/jump to an odd address detected"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ/Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ñ�Ñ‚Ñ€Ð°Ð½Ð½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ"
 
-#: elf32-msp430.c:2357
+#: elf32-msp430.c:2532
 #, c-format
 msgid "warning: %pB: unknown MSPABI object attribute %d"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ MSPABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d"
 
-#: elf32-msp430.c:2456
+#: elf32-msp430.c:2633
 #, c-format
 msgid "error: %pB uses %s instructions but %pB uses %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s"
 
-#: elf32-msp430.c:2468
+#: elf32-msp430.c:2645
 #, c-format
 msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ð° %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ð° %s"
 
-#: elf32-msp430.c:2480
+#: elf32-msp430.c:2658
 #, c-format
 msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¾Ð³Ñ€Ð¾Ð¼Ð½ÑƒÑŽ Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ð°, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ MSP430"
 
-#: elf32-msp430.c:2491
+#: elf32-msp430.c:2669
 #, c-format
 msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %s"
 
-#: elf32-msp430.c:2503
+#: elf32-msp430.c:2682
 #, c-format
 msgid "error: %pB uses the small code model but %pB uses the %s data model"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð°Ð»ÑƒÑŽ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ…, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %s"
 
-#: elf32-msp430.c:2515
+#: elf32-msp430.c:2694
 #, c-format
 msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ñ… %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ MSP430"
 
-#: elf32-nds32.c:3624
+#: elf32-msp430.c:2719
 #, c-format
-msgid "error: can't find symbol: %s"
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %s"
+msgid "error: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memory"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²ÐµÑ€Ñ…Ð½ÑŽÑŽ Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð´Ð°Ð½Ð½Ñ‹Ñ…, Ð½Ð¾ %pB Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ‚, Ñ‡Ñ‚Ð¾ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ð½Ð¸Ð¶Ð½ÐµÐ¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸"
 
-#: elf32-nds32.c:5639
+#: elf32-nds32.c:3625
 #, c-format
-msgid "%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC"
-msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC"
+msgid "error: can't find symbol: %s"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %s"
 
-#: elf32-nds32.c:5669
+#: elf32-nds32.c:5528
 #, c-format
 msgid "%pB: warning: %s unsupported in shared mode"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ñ€ÐµÐ¶Ð¸Ð¼Ðµ"
 
-#: elf32-nds32.c:5795
+#: elf32-nds32.c:5654
 #, c-format
 msgid "%pB: warning: unaligned access to GOT entry"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ GOT"
 
-#: elf32-nds32.c:5836
+#: elf32-nds32.c:5695
 #, c-format
 msgid "%pB: warning: relocate SDA_BASE failed"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SDA_BASE"
 
-#: elf32-nds32.c:5858
+#: elf32-nds32.c:5717
 #, c-format
 msgid "%pB(%pA): warning: unaligned small data access of type %d"
 msgstr "%pB(%pA): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ð¼Ð°Ð»Ñ‹Ð¼ Ð´Ð°Ð½Ð½Ñ‹Ð¼ Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d"
 
-#: elf32-nds32.c:6784
+#: elf32-nds32.c:6643
 #, c-format
 msgid "%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
 msgstr "%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° ISR Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð±Ñ‹Ð» %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹, Ñ�Ñ‚Ð°Ð» %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹"
 
-#: elf32-nds32.c:6828
+#: elf32-nds32.c:6691
 #, c-format
 msgid "%pB: warning: endian mismatch with previous modules"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
-#: elf32-nds32.c:6842
+#: elf32-nds32.c:6705
 #, c-format
 msgid "%pB: warning: older version of object file encountered, please recompile with current tool chain"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ñ�Ñ‚Ð°Ñ€Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°, Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¼ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð²"
 
-#: elf32-nds32.c:6930
+#: elf32-nds32.c:6793
 #, c-format
 msgid "%pB: error: ABI mismatch with previous modules"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…"
 
-#: elf32-nds32.c:6940
+#: elf32-nds32.c:6803
 #, c-format
 msgid "%pB: error: instruction set mismatch with previous modules"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½Ð°Ð±Ð¾Ñ€ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…"
 
-#: elf32-nds32.c:6967
+#: elf32-nds32.c:6830
 #, c-format
 msgid "%pB: warning: incompatible elf-versions %s and %s"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ elf %s Ð¸ %s"
 
-#: elf32-nds32.c:6998
+#: elf32-nds32.c:6861
 #, c-format
 msgid ": n1 instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ n1"
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:6864
 #, c-format
 msgid ": n1h instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ n1h"
 
-#: elf32-nds32.c:9462
+#: elf32-nds32.c:9316
 #, c-format
 msgid "%pB: error: search_nds32_elf_blank reports wrong node"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: search_nds32_elf_blank Ñ�Ð¾Ð¾Ð±Ñ‰Ð°ÐµÑ‚ Ð¾ Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ð¼ ÑƒÐ·Ð»Ðµ"
 
-#: elf32-nds32.c:9722
+#: elf32-nds32.c:9576
 #, c-format
 msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>"
 
-#: elf32-nds32.c:12975
+#: elf32-nds32.c:12839
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
 msgstr "%pB: Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ðµ OMIT_FP Ð² %pA"
 
-#: elf32-nds32.c:12994
+#: elf32-nds32.c:12858
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
 msgstr "%pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ OMIT_FP Ð² %pA"
 
-#: elf32-nds32.c:13275 reloc.c:8410
+#: elf32-nds32.c:13140 reloc.c:8470
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
 msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%RÂ» Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½\n"
 
-#: elf32-nios2.c:2930
+#: elf32-nios2.c:2937
 #, c-format
 msgid "error: %pB: big-endian R2 is not supported"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð¾Ñ‚ Ñ�Ñ‚Ð°Ñ€ÑˆÐµÐ³Ð¾ Ðº Ð¼Ð»Ð°Ð´ÑˆÐµÐ¼Ñƒ R2 Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: elf32-nios2.c:3822
+#: elf32-nios2.c:3829
 #, c-format
-msgid "global pointer relative relocation at address 0x%08x when _gp not defined\n"
-msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°\n"
+msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°\n"
 
-#: elf32-nios2.c:3842
+#: elf32-nios2.c:3859
 #, c-format
-msgid "unable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because the offset (%d) is out of the allowed range, -32678 to 32767\n"
-msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´Ð¾Ñ�Ñ‚Ð¸Ñ‡ÑŒ %s (Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x) Ð¸Ð· Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ� (Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x), Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð¸Ð· Ñ€Ð°Ð·Ñ€ÐµÑˆÑ‘Ð½Ð½Ð¾Ð³Ð¾ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° -32678â€”32767\n"
+msgid "unable to reach %s (at %#<PRIx64>) from the global pointer (at %#<PRIx64>) because the offset (%<PRId64>) is out of the allowed range, -32678 to 32767\n"
+msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´Ð¾Ñ�Ñ‚Ð¸Ñ‡ÑŒ %s (Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>) Ð¸Ð· Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ� (%#<PRIx64>), Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%<PRId64>) Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð¸Ð· Ñ€Ð°Ð·Ñ€ÐµÑˆÑ‘Ð½Ð½Ð¾Ð³Ð¾ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° -32678â€”32767\n"
 
-#: elf32-nios2.c:4495 elf32-pru.c:928
+#: elf32-nios2.c:4514 elf32-pru.c:931
 msgid "relocation out of range"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
 
-#: elf32-nios2.c:4505 elf32-pru.c:938 elf32-tic6x.c:2716
+#: elf32-nios2.c:4524 elf32-pru.c:941 elf32-tic6x.c:2657
 msgid "dangerous relocation"
 msgstr "Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf32-nios2.c:5378
+#: elf32-nios2.c:5367
 #, c-format
 msgid "dynamic variable `%s' is zero size"
 msgstr "Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€"
 
-#: elf32-or1k.c:1177
+#: elf32-or1k.c:1210
 #, c-format
 msgid "%pB: Cannot handle relocation value size of %d"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d"
 
-#: elf32-or1k.c:1286
+#: elf32-or1k.c:1317
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d"
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1371
 #, c-format
 msgid "%pB: addend should be zero for plt relocations"
 msgstr "%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ plt"
 
-#: elf32-or1k.c:1445
+#: elf32-or1k.c:1476
 #, c-format
 msgid "%pB: addend should be zero for got relocations"
 msgstr "%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ got"
 
-#: elf32-or1k.c:1462
+#: elf32-or1k.c:1493
 #, c-format
 msgid "%pB: gotoff relocation against dynamic symbol %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ gotoff Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf32-or1k.c:1479 elf64-alpha.c:4455 elf64-alpha.c:4599
+#: elf32-or1k.c:1510 elf64-alpha.c:4421 elf64-alpha.c:4565
 #, c-format
 msgid "%pB: pc-relative relocation against dynamic symbol %s"
 msgstr "%pB: pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf32-or1k.c:1493
+#: elf32-or1k.c:1524
 #, c-format
 msgid "%pB: non-pic relocation against symbol %s"
 msgstr "%pB: Ð½Ðµ-pic Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf32-or1k.c:1577
+#: elf32-or1k.c:1608
 #, c-format
 msgid "%pB: support for local dynamic not implemented"
 msgstr "%pB: Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð°"
 
-#: elf32-or1k.c:1729
+#: elf32-or1k.c:1787
 #, c-format
 msgid "%pB: will not resolve runtime TLS relocation"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ� Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚ Ñ€ÐµÑˆÐµÐ½Ð¾"
 
-#: elf32-or1k.c:2074
+#: elf32-or1k.c:2120
 #, c-format
 msgid "%pB: bad relocation section name `%s'"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð¸Ð¼Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
 
-#: elf32-or1k.c:3218
+#: elf32-or1k.c:3181
 #, c-format
 msgid "%pB: %s flag mismatch with previous modules"
 msgstr "%pB: Ñ„Ð»Ð°Ð³ %s Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
-#: elf32-ppc.c:986
+#: elf32-ppc.c:989
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr "ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº Ð½Ðµ Ñ�Ð¼Ð¾Ð³ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ %s"
 
-#: elf32-ppc.c:1617
+#: elf32-ppc.c:1628
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr "Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð² %pB"
 
-#: elf32-ppc.c:1637
+#: elf32-ppc.c:1647
 #, c-format
 msgid "unable to read in %s section from %pB"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð¸Ð· %pB"
 
-#: elf32-ppc.c:1679
+#: elf32-ppc.c:1689
 #, c-format
 msgid "warning: unable to set size of %s section in %pB"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² %pB"
 
-#: elf32-ppc.c:1729
+#: elf32-ppc.c:1738
 msgid "failed to allocate space for new APUinfo section"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð´Ð»Ñ� Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° APUinfo"
 
-#: elf32-ppc.c:1748
+#: elf32-ppc.c:1757
 msgid "failed to compute new APUinfo section"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» APUinfo"
 
-#: elf32-ppc.c:1751
+#: elf32-ppc.c:1760
 msgid "failed to install new APUinfo section"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» APUinfo"
 
-#: elf32-ppc.c:2853
+#: elf32-ppc.c:2861
 #, c-format
 msgid "%pB: relocation %s cannot be used when making a shared object"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
 
-#: elf32-ppc.c:3587 elf32-ppc.c:3595
-#, c-format
-msgid "%pB uses hard float, %pB uses soft float"
-msgstr "%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ"
-
-#: elf32-ppc.c:3603 elf32-ppc.c:3611
+#: elf32-ppc.c:3599 elf32-ppc.c:3607
 #, c-format
 msgid "%pB uses double-precision hard float, %pB uses single-precision hard float"
 msgstr "%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ð¹ Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð¾Ð¹ Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸"
 
-#: elf32-ppc.c:3630 elf32-ppc.c:3638
+#: elf32-ppc.c:3629 elf32-ppc.c:3637
 #, c-format
 msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
 msgstr "%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ long double, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ 128-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ long double"
 
-#: elf32-ppc.c:3646 elf32-ppc.c:3654
+#: elf32-ppc.c:3645 elf32-ppc.c:3653
 #, c-format
 msgid "%pB uses IBM long double, %pB uses IEEE long double"
 msgstr "%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ long double Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ IBM, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ long double Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ IEEE"
 
-#: elf32-ppc.c:3721 elf32-ppc.c:3730
+#: elf32-ppc.c:3720 elf32-ppc.c:3729
 #, c-format
 msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
 msgstr "%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ ABI Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¾Ð² AltiVec, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ ABI Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¾Ð² SPE"
 
-#: elf32-ppc.c:3759 elf32-ppc.c:3768
+#: elf32-ppc.c:3758 elf32-ppc.c:3767
 #, c-format
 msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
 msgstr "%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ r3/r4 Ð´Ð»Ñ� Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¾Ð¹ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ñ‹, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ"
 
-#: elf32-ppc.c:3829
+#: elf32-ppc.c:3831
 #, c-format
 msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
 msgstr "%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mrelocatable Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ�Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
-#: elf32-ppc.c:3837
+#: elf32-ppc.c:3839
 #, c-format
 msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
 msgstr "%pB: Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ð¸ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mrelocatable"
 
-#: elf32-ppc.c:3906
+#: elf32-ppc.c:3908
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
 msgstr "%pB(%pA+0x%lx): Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ 16A Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x insn"
 
-#: elf32-ppc.c:3925
+#: elf32-ppc.c:3927
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
 msgstr "%pB(%pA+0x%lx): Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ 16D Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x insn"
 
-#: elf32-ppc.c:4028
+#: elf32-ppc.c:4030
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr "Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� bss-plt Ð¸Ð·-Ð·Ð° %pB"
 
-#: elf32-ppc.c:4030
+#: elf32-ppc.c:4032
 msgid "bss-plt forced by profiling"
 msgstr "Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� bss-plt Ð¸Ð·-Ð·Ð° Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ�"
 
@@ -2941,40 +3033,40 @@ msgstr "Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¸Ñ�Ð
 #. could just mark this symbol to exclude it
 #. from tls optimization but it's safer to skip
 #. the entire optimization.
-#: elf32-ppc.c:4606 elf64-ppc.c:7724
+#: elf32-ppc.c:4606 elf64-ppc.c:8252
 #, c-format
 msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
 msgstr "%H Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ lost __tls_get_addr, Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ� TLS Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°\n"
 
-#: elf32-ppc.c:5577 elf32-sh.c:3078 elf32-tilepro.c:2339 elfxx-sparc.c:2534
-#: elfxx-tilegx.c:2579
+#: elf32-ppc.c:5513 elf32-sh.c:3023 elf32-tilepro.c:2256 elfxx-sparc.c:2453
+#: elfxx-tilegx.c:2496
 #, c-format
 msgid "%pB: dynamic relocation in read-only section `%pA'\n"
 msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
 
-#: elf32-ppc.c:7457
+#: elf32-ppc.c:7356
 msgid "%P: %H: error: %s with unexpected instruction %x\n"
 msgstr "%P: %H: Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ %x\n"
 
-#: elf32-ppc.c:7494
+#: elf32-ppc.c:7393
 msgid "%H: fixup branch overflow\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð¸ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹\n"
 
-#: elf32-ppc.c:7534 elf32-ppc.c:7570
+#: elf32-ppc.c:7433 elf32-ppc.c:7469
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ %#x"
 
-#: elf32-ppc.c:7634
+#: elf32-ppc.c:7533
 #, c-format
 msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� bss-plt -fPIC ifunc %s\n"
 
-#: elf32-ppc.c:7673 elf64-ppc.c:15220
+#: elf32-ppc.c:7572 elf64-ppc.c:16848
 msgid "%H: warning: %s unexpected insn %#x.\n"
 msgstr "%H: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %s Ð½Ðµ Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ insn %#x.\n"
 
-#: elf32-ppc.c:7985
+#: elf32-ppc.c:7881
 #, c-format
 msgid "%H: non-zero addend on %s reloc against `%s'\n"
 msgstr "%H: Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ %s Ð´Ð»Ñ� Â«%sÂ»\n"
@@ -2987,54 +3079,54 @@ msgstr "%H: Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð
 #. local won't have the +32k reloc addend trick marking
 #. -fPIC code, so the linker won't know whether r30 is
 #. _GLOBAL_OFFSET_TABLE_ or pointing into a .got2 section.
-#: elf32-ppc.c:8017
+#: elf32-ppc.c:7913
 #, c-format
 msgid "%X%H: @local call to ifunc %s\n"
 msgstr "%X%H: @local Ð²Ñ‹Ð·Ð¾Ð² ifunc %s\n"
 
-#: elf32-ppc.c:8187
+#: elf32-ppc.c:8091
 #, c-format
 msgid "%H: relocation %s for indirect function %s unsupported\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð½ÐµÑ�Ð²Ð½Ð¾Ð³Ð¾ Ð²Ñ‹Ð·Ð¾Ð²Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
 
-#: elf32-ppc.c:8515 elf32-ppc.c:8546 elf32-ppc.c:8637 elf32-ppc.c:8725
+#: elf32-ppc.c:8425 elf32-ppc.c:8456 elf32-ppc.c:8547 elf32-ppc.c:8643
 #, c-format
 msgid "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
 msgstr "%pB: Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð² Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» (%s)"
 
-#: elf32-ppc.c:8855 elf32-ppc.c:8873
-msgid "%P: %H: %s relocation unsupported for bss-plt\n"
-msgstr "%P: %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� bss-plt\n"
+#: elf32-ppc.c:8773 elf32-ppc.c:8791
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
+msgstr "%X%P: %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� bss-plt\n"
 
-#: elf32-ppc.c:8954
+#: elf32-ppc.c:8872
 #, c-format
 msgid "%H: error: %s against `%s' not a multiple of %u\n"
 msgstr "%H: Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ð² Â«%sÂ» Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾ %u\n"
 
-#: elf32-ppc.c:8983
+#: elf32-ppc.c:8901
 #, c-format
 msgid "%H: unresolvable %s relocation against symbol `%s'\n"
 msgstr "%H: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»\n"
 
-#: elf32-ppc.c:9064
+#: elf32-ppc.c:8982
 #, c-format
 msgid "%H: %s reloc against `%s': error %d\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ° %d\n"
 
-#: elf32-ppc.c:9959 elf64-ppc.c:15715
+#: elf32-ppc.c:9872
 msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n"
 msgstr "%X%P:  Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð½ÐµÑ�Ð²Ð½Ñ‹Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ GNU Ð¿Ñ€Ð¸Ð²ÐµÐ´ÑƒÑ‚ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�\n"
 
-#: elf32-ppc.c:9963 elf64-ppc.c:15719
+#: elf32-ppc.c:9876 elf64-ppc.c:17398
 msgid "%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime\n"
 msgstr "%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð½ÐµÑ�Ð²Ð½Ñ‹Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ GNU Ð¼Ð¾Ð³ÑƒÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�\n"
 
-#: elf32-ppc.c:10008
+#: elf32-ppc.c:9921
 #, c-format
 msgid "%s not defined in linker created %pA"
 msgstr "%s Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¾ Ð² ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐµ, Ñ�Ð¾Ð·Ð´Ð°Ð½Ð½Ð¾Ð¼ %pA"
 
-#: elf32-pru.c:579 elf32-pru.c:1472
+#: elf32-pru.c:582 elf32-pru.c:1475
 #, c-format
 msgid "error: %pB: old incompatible object file detected"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ñ�Ñ‚Ð°Ñ€Ñ‹Ð¹ Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð»"
@@ -3051,7 +3143,7 @@ msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ
 msgid "warning: RL78_SYM reloc with an unknown symbol"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78_SYM Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: elf32-rl78.c:1084 elf32-rx.c:1456
+#: elf32-rl78.c:1084 elf32-rx.c:1461
 #, c-format
 msgid "%pB(%pA): error: call to undefined function '%s'"
 msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‹Ð·Ð¾Ð² Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ»"
@@ -3080,17 +3172,17 @@ msgstr "- %pB Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� 64-Ð±Ð¸Ñ‚
 msgid " [64-bit doubles]"
 msgstr "[64-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ double]"
 
-#: elf32-rx.c:605
+#: elf32-rx.c:607
 #, c-format
 msgid "%pB:%pA: table entry %s outside table"
 msgstr "%pB:%pA: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ %s Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹"
 
-#: elf32-rx.c:612
+#: elf32-rx.c:614
 #, c-format
 msgid "%pB:%pA: table entry %s not word-aligned within table"
 msgstr "%pB:%pA: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ %s Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½ Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð°"
 
-#: elf32-rx.c:684
+#: elf32-rx.c:689
 #, c-format
 msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
 msgstr "%pB:%pA: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ²ÑˆÐµÐµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Red Hat %s Ð´Ð»Ñ�: %s"
@@ -3099,59 +3191,59 @@ msgstr "%pB:%pA: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ
 #. an absolute address is being computed.  There are special cases
 #. for relocs against symbols that are known to be referenced in
 #. crt0.o before the PID base address register has been initialised.
-#: elf32-rx.c:704
+#: elf32-rx.c:709
 #, c-format
 msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
 msgstr "%pB(%pA): Ð½ÐµÐ±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ PID %s Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> (Ð´Ð»Ñ� %s Ð² %s)"
 
-#: elf32-rx.c:1288
+#: elf32-rx.c:1293
 msgid "warning: RX_SYM reloc with an unknown symbol"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RX_SYM Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: elf32-rx.c:3167
+#: elf32-rx.c:3173
 #, c-format
 msgid "there is a conflict merging the ELF header flags from %pB"
 msgstr "Ð²Ð¾Ð·Ð½Ð¸Ðº ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� Ñ„Ð»Ð°Ð³Ð¾Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF Ð¸Ð· %pB"
 
-#: elf32-rx.c:3170
+#: elf32-rx.c:3176
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr "  Ñ„Ð»Ð°Ð³Ð¸ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°: %s"
 
-#: elf32-rx.c:3172
+#: elf32-rx.c:3178
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr "  Ñ„Ð»Ð°Ð³Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°: %s"
 
-#: elf32-rx.c:3792
+#: elf32-rx.c:3784
 #, c-format
 msgid "%pB:%pA: table %s missing corresponding %s"
 msgstr "%pB:%pA: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° %s, Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‰Ð°Ñ� %s"
 
-#: elf32-rx.c:3800
+#: elf32-rx.c:3792
 #, c-format
 msgid "%pB:%pA: %s and %s must be in the same input section"
 msgstr "%pB:%pA: %s Ð¸ %s Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð¾Ð´Ð½Ð¾Ð¼ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ"
 
-#: elf32-s390.c:2140 elf64-s390.c:2095
+#: elf32-s390.c:2011 elf64-s390.c:1965
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� Ð´Ð»Ñ� TLS-Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s"
 
-#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3754
+#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3800
 msgid "not enough GOT space for local GOT entries"
 msgstr "Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° GOT Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² GOT"
 
-#: elf32-score.c:2746
+#: elf32-score.c:2747
 msgid "address not word aligned"
 msgstr "Ð°Ð´Ñ€ÐµÑ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð°"
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2828 elf32-score7.c:2633
 #, c-format
 msgid "%pB: malformed reloc detected for section %pA"
 msgstr "%pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA"
 
-#: elf32-score.c:2881 elf32-score7.c:2686
+#: elf32-score.c:2882 elf32-score7.c:2687
 #, c-format
 msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CALL15 Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð½Ðµ Ð´Ð»Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
@@ -3166,7 +3258,7 @@ msgstr " [pic]"
 msgid " [fix dep]"
 msgstr " [fix dep]"
 
-#: elf32-score.c:4050 elf32-score7.c:3855
+#: elf32-score.c:4054 elf32-score7.c:3859
 #, c-format
 msgid "%pB: warning: linking PIC files with non-PIC files"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÑ‚Ñ�Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° PIC-Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð½Ðµ-PIC Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸"
@@ -3176,152 +3268,148 @@ msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: R_SH_USES ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½ÑƒÑŽ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ 0x%x"
 
-#: elf32-sh.c:3633
-msgid "unexpected STO_SH5_ISA32 on local symbol is not handled"
-msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ STO_SH5_ISA32 Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ�"
-
-#: elf32-sh.c:3880
+#: elf32-sh.c:3758
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
 msgstr "%pB: %#<PRIx64>: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ðµ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ñ� Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ñ�"
 
-#: elf32-sh.c:3910 elf32-sh.c:3926
+#: elf32-sh.c:3788 elf32-sh.c:3804
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s (%#<PRIx64>)"
 
-#: elf32-sh.c:3942
+#: elf32-sh.c:3820
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
 msgstr "%pB: %#<PRIx64>: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_PSHA %#<PRId64> Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° -32..32"
 
-#: elf32-sh.c:3958
+#: elf32-sh.c:3836
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
 msgstr "%pB: %#<PRIx64>: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_PSHL %#<PRId64> Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° -32..32"
 
-#: elf32-sh.c:4088 elf32-sh.c:4483
+#: elf32-sh.c:3966 elf32-sh.c:4361
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ðº Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�"
 
-#: elf32-sh.c:4586
+#: elf32-sh.c:4464
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elf32-sh.c:4705
+#: elf32-sh.c:4583
 #, c-format
 msgid "%pB(%pA): offset in relocation for GD->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ GD->LE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#<PRIx64>"
 
 #. The backslash is to prevent bogus trigraph detection.
-#: elf32-sh.c:4723
+#: elf32-sh.c:4601
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd4??)"
 
-#: elf32-sh.c:4731
+#: elf32-sh.c:4609
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xc7??)"
 
-#: elf32-sh.c:4738
+#: elf32-sh.c:4616
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd1??)"
 
-#: elf32-sh.c:4745
+#: elf32-sh.c:4623
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x310c)"
 
-#: elf32-sh.c:4752
+#: elf32-sh.c:4630
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x410b)"
 
-#: elf32-sh.c:4759
+#: elf32-sh.c:4637
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x34cc)"
 
-#: elf32-sh.c:4794
+#: elf32-sh.c:4672
 #, c-format
 msgid "%pB(%pA): offset in relocation for IE->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ IE->LE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#<PRIx64>"
 
-#: elf32-sh.c:4812
+#: elf32-sh.c:4690
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd0??: mov.l)"
 
-#: elf32-sh.c:4821
+#: elf32-sh.c:4699
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x0?12: stc)"
 
-#: elf32-sh.c:4828
+#: elf32-sh.c:4706
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x0?ce: mov.l)"
 
-#: elf32-sh.c:4943
+#: elf32-sh.c:4821
 #, c-format
 msgid "%pB(%pA): offset in relocation for GD->IE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ GD->IE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#<PRIx64>"
 
-#: elf32-sh.c:5011
+#: elf32-sh.c:4889
 #, c-format
 msgid "%pB(%pA): offset in relocation for LD->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ð¸Ð¸ LD->LE Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾: %#<PRIx64>"
 
-#: elf32-sh.c:5139
+#: elf32-sh.c:5017
 #, c-format
 msgid "%X%C: relocation to \"%s\" references a different segment\n"
 msgstr "%X%C: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
 
-#: elf32-sh.c:5146
+#: elf32-sh.c:5024
 #, c-format
 msgid "%C: warning: relocation to \"%s\" references a different segment\n"
 msgstr "%C: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
 
-#: elf32-sh.c:5651 elf32-sh.c:5733
+#: elf32-sh.c:5483 elf32-sh.c:5565
 #, c-format
 msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
 msgstr "%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº FDPIC Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-sh.c:5657 elf32-sh.c:5738
+#: elf32-sh.c:5489 elf32-sh.c:5570
 #, c-format
 msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
 msgstr "%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº FDPIC Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð¸Ñ‚Ð¸"
 
-#: elf32-sh.c:5688
+#: elf32-sh.c:5520
 #, c-format
 msgid "%pB: Function descriptor relocation with non-zero addend"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼"
 
-#: elf32-sh.c:5895 elf64-alpha.c:4691
+#: elf32-sh.c:5727 elf64-alpha.c:4657
 #, c-format
 msgid "%pB: TLS local exec code cannot be linked into shared objects"
 msgstr "%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ ÐºÐ¾Ð´ TLS Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¾Ð±Ñ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸"
 
-#: elf32-sh.c:6010
+#: elf32-sh.c:5842
 #, c-format
 msgid "%pB: uses %s instructions while previous modules use %s instructions"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ñ…Ð¾Ñ‚Ñ� Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð»Ð¸Ñ�ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s"
 
-#: elf32-sh.c:6022
+#: elf32-sh.c:5854
 #, c-format
 msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ Â«%sÂ» Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾Ð¹ Â«%sÂ» Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
 
-#: elf32-sh.c:6059
+#: elf32-sh.c:5895
 #, c-format
 msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸, Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ�Ð¼Ð¸, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð²ÑˆÐ¸Ð¼Ð¸Ñ�Ñ� Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…"
 
-#: elf32-sh.c:6072
+#: elf32-sh.c:5908
 #, c-format
 msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
 msgstr "%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ð¼ÐµÑˆÐ°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ FDPIC Ð¸ Ð½Ðµ FDPIC"
@@ -3336,118 +3424,123 @@ msgstr "%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½
 msgid "%pB: linking little endian files with big endian files"
 msgstr "%pB: Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚ Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚"
 
-#: elf32-spu.c:732
+#: elf32-sparc.c:157
+#, c-format
+msgid "%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr "%pB: Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ sparc Â«%luÂ»"
+
+#: elf32-spu.c:735
 msgid "%X%P: overlay section %pA does not start on a cache line\n"
 msgstr "%X%P: Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ð²ÐµÑ€Ð»ÐµÑ� %pA Ð½Ðµ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÐµÑ‚Ñ�Ñ� Ñ�Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ ÐºÑ�ÑˆÐ°\n"
 
-#: elf32-spu.c:740
+#: elf32-spu.c:743
 msgid "%X%P: overlay section %pA is larger than a cache line\n"
 msgstr "%X%P: Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ð²ÐµÑ€Ð»ÐµÑ� %pA Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ ÐºÑ�ÑˆÐ°\n"
 
-#: elf32-spu.c:760
+#: elf32-spu.c:763
 msgid "%X%P: overlay section %pA is not in cache area\n"
 msgstr "%X%P: Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ð²ÐµÑ€Ð»ÐµÑ� %pA Ð½Ðµ Ð² Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ ÐºÑ�ÑˆÐ°\n"
 
-#: elf32-spu.c:801
+#: elf32-spu.c:804
 #, c-format
 msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n"
 msgstr "%X%P: Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ Ð¾Ð²ÐµÑ€Ð»ÐµÐµÐ² %pA Ð¸ %pA Ð½Ðµ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÑŽÑ‚Ñ�Ñ� Ñ� Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð°\n"
 
-#: elf32-spu.c:1027
+#: elf32-spu.c:1030
 #, c-format
 msgid "warning: call to non-function symbol %s defined in %pB"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð·Ð¾Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %s, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ Ð² %pB"
 
-#: elf32-spu.c:1377
+#: elf32-spu.c:1380
 #, c-format
 msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
 msgstr "%pA:0x%v lrlive .brinfo (%u) Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ð¾Ñ‚ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ (%u)\n"
 
-#: elf32-spu.c:1909
+#: elf32-spu.c:1910
 #, c-format
 msgid "%pB is not allowed to define %s"
 msgstr "%pB Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�Ñ‚ÑŒ %s"
 
-#: elf32-spu.c:1917
+#: elf32-spu.c:1918
 #, c-format
 msgid "you are not allowed to define %s in a script"
 msgstr "Ð²Ð°Ð¼ Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�Ñ‚ÑŒ %s Ð² Ñ�Ñ†ÐµÐ½Ð°Ñ€Ð¸Ð¸"
 
-#: elf32-spu.c:1951
+#: elf32-spu.c:1952
 #, c-format
 msgid "%s in overlay section"
 msgstr "%s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐµÐ²"
 
-#: elf32-spu.c:1980
+#: elf32-spu.c:1981
 msgid "overlay stub relocation overflow"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹Ð½Ð¾Ð¹ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
-#: elf32-spu.c:1989 elf64-ppc.c:13230
+#: elf32-spu.c:1990 elf64-ppc.c:14496
 msgid "stubs don't match calculated size"
 msgstr "Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð½Ðµ Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ"
 
-#: elf32-spu.c:2572
+#: elf32-spu.c:2573
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð¿ÐµÑ€ÐµÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ� %s\n"
 
-#: elf32-spu.c:2588
+#: elf32-spu.c:2589
 #, c-format
 msgid "warning: %s exceeds section size\n"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°\n"
 
-#: elf32-spu.c:2620
+#: elf32-spu.c:2621
 #, c-format
 msgid "%pA:0x%v not found in function table\n"
 msgstr "%pA:0x%v Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹\n"
 
-#: elf32-spu.c:2761
+#: elf32-spu.c:2762
 #, c-format
 msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
 msgstr "%pB(%pA+0x%v): Ð²Ñ‹Ð·Ð¾Ð² Ð½Ðµ ÐºÐ¾Ð´Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pB(%pA), Ð°Ð½Ð°Ð»Ð¸Ð· Ð½Ðµ Ð¿Ð¾Ð»Ð¾Ð½\n"
 
-#: elf32-spu.c:3330
+#: elf32-spu.c:3328
 #, c-format
 msgid "stack analysis will ignore the call from %s to %s\n"
 msgstr "Ð² Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ Ñ�Ñ‚ÐµÐºÐ° Ð±ÑƒÐ´ÐµÑ‚ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð²Ñ‹Ð·Ð¾Ð² Ð¸Ð· %s Ð² %s\n"
 
-#: elf32-spu.c:4027
+#: elf32-spu.c:4025
 msgid "  calls:\n"
 msgstr "  Ð²Ñ‹Ð·Ð¾Ð²Ñ‹:\n"
 
-#: elf32-spu.c:4341
+#: elf32-spu.c:4340
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "%s Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÐµÑ‚Ñ�Ñ� Ð² %s\n"
 
-#: elf32-spu.c:4345
+#: elf32-spu.c:4344
 #, c-format
 msgid "%s duplicated\n"
 msgstr "%s Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÐµÑ‚Ñ�Ñ�\n"
 
-#: elf32-spu.c:4352
+#: elf32-spu.c:4351
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr "Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ñ…Ñ�Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð² Ñ�Ñ†ÐµÐ½Ð°Ñ€Ð¸Ð¸ auto-overlay Ð¿Ð¾ÐºÐ° Ð½Ðµ Ñ�Ð´ÐµÐ»Ð°Ð½Ð°\n"
 
-#: elf32-spu.c:4394
+#: elf32-spu.c:4393
 #, c-format
 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n"
 msgstr "Ð½Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ 0x%v Ð¿Ð»ÑŽÑ� Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð²ÐµÑ€Ð»ÐµÑ� 0x%v Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ\n"
 
-#: elf32-spu.c:4550
+#: elf32-spu.c:4549
 #, c-format
 msgid "%pB:%pA%s exceeds overlay size\n"
 msgstr "%pB:%pA%s Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�\n"
 
-#: elf32-spu.c:4691
+#: elf32-spu.c:4690
 msgid "%F%P: auto overlay error: %E\n"
 msgstr "%F%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�: %E\n"
 
-#: elf32-spu.c:4712
+#: elf32-spu.c:4711
 msgid "Stack size for call graph root nodes.\n"
 msgstr "Ð Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ° Ð´Ð»Ñ� Ð²Ñ‹Ð·Ð¾Ð²Ð° Ð³Ñ€Ð°Ñ„Ð° ÐºÐ¾Ñ€Ð½ÐµÐ²Ñ‹Ñ… ÑƒÐ·Ð»Ð¾Ð².\n"
 
-#: elf32-spu.c:4713
+#: elf32-spu.c:4712
 msgid ""
 "\n"
 "Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
@@ -3455,19 +3548,19 @@ msgstr ""
 "\n"
 "Ð Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ° Ð´Ð»Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹. ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�: '*' Ð¼Ð°ÐºÑ� Ñ�Ñ‚ÐµÐº, 't' Ñ…Ð²Ð¾Ñ�Ñ‚Ð¾Ð²Ð¾Ð¹ Ð²Ñ‹Ð·Ð¾Ð²\n"
 
-#: elf32-spu.c:4723
+#: elf32-spu.c:4722
 msgid "Maximum stack required is 0x%v\n"
 msgstr "Ð”Ð»Ñ� Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� 0x%v\n"
 
-#: elf32-spu.c:4742
+#: elf32-spu.c:4741
 msgid "%X%P: stack/lrlive analysis error: %E\n"
 msgstr "%X%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ Ñ�Ñ‚ÐµÐºÐ°/lrlive: %E\n"
 
-#: elf32-spu.c:4745
+#: elf32-spu.c:4744
 msgid "%F%P: can not build overlay stubs: %E\n"
 msgstr "%F%P: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�: %E\n"
 
-#: elf32-spu.c:4814
+#: elf32-spu.c:4813
 msgid "fatal error while creating .fixup"
 msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ .fixup"
 
@@ -3476,275 +3569,274 @@ msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ� Ð¾ÑˆÐ¸Ð
 msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr "%pB(%s+%#<PRIx64>): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elf32-tic6x.c:1628
+#: elf32-tic6x.c:1588
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ¹ Ð½Ðµ-PIC ÐºÐ¾Ð´"
 
-#: elf32-tic6x.c:1633
+#: elf32-tic6x.c:1593
 msgid "warning: generating a shared library containing non-PID code"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ¹ Ð½Ðµ-PID ÐºÐ¾Ð´"
 
-#: elf32-tic6x.c:2493
+#: elf32-tic6x.c:2434
 #, c-format
 msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
 msgstr "%pB: Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SB, Ð½Ð¾ __c6xabi_DSBT_BASE Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½"
 
-#: elf32-tic6x.c:3629
+#: elf32-tic6x.c:3511
 #, c-format
 msgid "%pB: error: unknown mandatory EABI object attribute %d"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d"
 
-#: elf32-tic6x.c:3638
+#: elf32-tic6x.c:3520
 #, c-format
 msgid "%pB: warning: unknown EABI object attribute %d"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d"
 
-#: elf32-tic6x.c:3752 elf32-tic6x.c:3761
+#: elf32-tic6x.c:3638 elf32-tic6x.c:3647
 #, c-format
 msgid "error: %pB requires more stack alignment than %pB preserves"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð±Ð¾Ð»ÑŒÑˆÐµÐµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°, Ñ‡ÐµÐ¼ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¾ Ð² %pB"
 
-#: elf32-tic6x.c:3771 elf32-tic6x.c:3780
+#: elf32-tic6x.c:3657 elf32-tic6x.c:3666
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Tag_ABI_array_object_alignment Ð² %pB"
 
-#: elf32-tic6x.c:3789 elf32-tic6x.c:3798
+#: elf32-tic6x.c:3675 elf32-tic6x.c:3684
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Tag_ABI_array_object_align_expected Ð² %pB"
 
-#: elf32-tic6x.c:3807 elf32-tic6x.c:3815
+#: elf32-tic6x.c:3693 elf32-tic6x.c:3701
 #, c-format
 msgid "error: %pB requires more array alignment than %pB preserves"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð±Ð¾Ð»ÑŒÑˆÐµÐµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð°, Ñ‡ÐµÐ¼ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¾ Ð² %pB"
 
-#: elf32-tic6x.c:3838
+#: elf32-tic6x.c:3724
 #, c-format
 msgid "warning: %pB and %pB differ in wchar_t size"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %pB Ð¸ %pB Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€ wchar_t"
 
-#: elf32-tic6x.c:3857
+#: elf32-tic6x.c:3743
 #, c-format
 msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %pB Ð¸ %pB Ð¿Ð¾-Ñ€Ð°Ð·Ð½Ð¾Ð¼Ñƒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð´Ð»Ñ� DSBT"
 
-#: elf32-tilepro.c:3761 elfxx-tilegx.c:4145 elfxx-x86.c:1432
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:9530
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2579
+#: elf32-tilepro.c:3635 elfxx-tilegx.c:4019 elfxx-x86.c:1393
+#: elfnn-aarch64.c:9704 elfnn-riscv.c:2522
 #, c-format
 msgid "discarded output section: `%pA'"
 msgstr "Ð¾Ñ‚Ð±Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»: Â«%pAÂ»"
 
-#: elf32-v850.c:153
+#: elf32-v850.c:152
 #, c-format
 msgid "variable `%s' cannot occupy in multiple small data regions"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð·Ð°Ð½Ð¸Ð¼Ð°Ñ‚ÑŒ Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð½Ñ‹Ñ…"
 
-#: elf32-v850.c:156
+#: elf32-v850.c:155
 #, c-format
 msgid "variable `%s' can only be in one of the small, zero, and tiny data regions"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ð¾Ð´Ð½Ð¾Ð¼ Ð¸Ð· Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ…, Ð½ÑƒÐ»ÐµÐ²Ñ‹Ñ… Ð¸ ÐºÑ€Ð¾ÑˆÐµÑ‡Ð½Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð½Ñ‹Ñ…"
 
-#: elf32-v850.c:159
+#: elf32-v850.c:158
 #, c-format
 msgid "variable `%s' cannot be in both small and zero data regions simultaneously"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ð¸ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ�Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾"
 
-#: elf32-v850.c:162
+#: elf32-v850.c:161
 #, c-format
 msgid "variable `%s' cannot be in both small and tiny data regions simultaneously"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ñ… Ð¸ ÐºÑ€Ð¾ÑˆÐµÑ‡Ð½Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ�Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾"
 
-#: elf32-v850.c:165
+#: elf32-v850.c:164
 #, c-format
 msgid "variable `%s' cannot be in both zero and tiny data regions simultaneously"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð² Ð½ÑƒÐ»ÐµÐ²Ñ‹Ñ… Ð¸ ÐºÑ€Ð¾ÑˆÐµÑ‡Ð½Ñ‹Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ�Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾"
 
-#: elf32-v850.c:463
+#: elf32-v850.c:462
 msgid "failed to find previous HI16 reloc"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ HI16"
 
-#: elf32-v850.c:2303
+#: elf32-v850.c:2302
 msgid "could not locate special linker symbol __gp"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __gp"
 
-#: elf32-v850.c:2307
+#: elf32-v850.c:2306
 msgid "could not locate special linker symbol __ep"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __ep"
 
-#: elf32-v850.c:2311
+#: elf32-v850.c:2310
 msgid "could not locate special linker symbol __ctbp"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __ctbp"
 
-#: elf32-v850.c:2532
+#: elf32-v850.c:2531
 #, c-format
 msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ, Ð½Ð¾ Ð´Ð»Ñ� %pB Ð·Ð°Ð´Ð°Ð½Ð¾ 4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ"
 
-#: elf32-v850.c:2548
+#: elf32-v850.c:2547
 #, c-format
 msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð² %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ double, Ð½Ð¾ Ð² %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚ 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ double"
 
-#: elf32-v850.c:2563
+#: elf32-v850.c:2562
 #, c-format
 msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð² %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� FPU-3.0, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ FPU-2.0"
 
-#: elf32-v850.c:2595
+#: elf32-v850.c:2594
 #, c-format
 msgid " alignment of 8-byte entities: "
 msgstr " Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²: "
 
-#: elf32-v850.c:2598
+#: elf32-v850.c:2597
 #, c-format
 msgid "4-byte"
 msgstr "4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ"
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2598
 #, c-format
 msgid "8-byte"
 msgstr "8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ"
 
-#: elf32-v850.c:2600 elf32-v850.c:2612
+#: elf32-v850.c:2599 elf32-v850.c:2611
 #, c-format
 msgid "not set"
 msgstr " [Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ð¾]"
 
-#: elf32-v850.c:2601 elf32-v850.c:2613 elf32-v850.c:2625 elf32-v850.c:2636
-#: elf32-v850.c:2647 elf32-v850.c:2658
+#: elf32-v850.c:2600 elf32-v850.c:2612 elf32-v850.c:2624 elf32-v850.c:2635
+#: elf32-v850.c:2646 elf32-v850.c:2657
 #, c-format
 msgid "unknown: %x"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾: %x"
 
-#: elf32-v850.c:2607
+#: elf32-v850.c:2606
 #, c-format
 msgid " size of doubles: "
 msgstr " Ñ€Ð°Ð·Ð¼ÐµÑ€ double: "
 
-#: elf32-v850.c:2610
+#: elf32-v850.c:2609
 #, c-format
 msgid "4-bytes"
 msgstr "4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ðµ"
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2610
 #, c-format
 msgid "8-bytes"
 msgstr "8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ðµ"
 
-#: elf32-v850.c:2619
+#: elf32-v850.c:2618
 #, c-format
 msgid " FPU support required: "
 msgstr " Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð°Ñ� Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° FPU: "
 
-#: elf32-v850.c:2622
+#: elf32-v850.c:2621
 #, c-format
 msgid "FPU-2.0"
 msgstr "FPU-2.0"
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2622
 #, c-format
 msgid "FPU-3.0"
 msgstr "FPU-3.0"
 
-#: elf32-v850.c:2624
+#: elf32-v850.c:2623
 #, c-format
 msgid "none"
 msgstr "Ð½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ�"
 
-#: elf32-v850.c:2631
+#: elf32-v850.c:2630
 #, c-format
 msgid "SIMD use: "
 msgstr "Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ SIMD: "
 
-#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#: elf32-v850.c:2633 elf32-v850.c:2644 elf32-v850.c:2655
 #, c-format
 msgid "yes"
 msgstr "Ð´Ð°"
 
-#: elf32-v850.c:2635 elf32-v850.c:2646 elf32-v850.c:2657
+#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
 #, c-format
 msgid "no"
 msgstr "Ð½ÐµÑ‚"
 
-#: elf32-v850.c:2642
+#: elf32-v850.c:2641
 #, c-format
 msgid "CACHE use: "
 msgstr "Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ CACHE: "
 
-#: elf32-v850.c:2653
+#: elf32-v850.c:2652
 #, c-format
 msgid "MMU use: "
 msgstr "Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ MMU: "
 
-#: elf32-v850.c:2820 elf32-v850.c:2876
+#: elf32-v850.c:2819 elf32-v850.c:2875
 #, c-format
 msgid "%pB: architecture mismatch with previous modules"
 msgstr "%pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…"
 
 #. xgettext:c-format.
-#: elf32-v850.c:2894
+#: elf32-v850.c:2893
 #, c-format
 msgid "private flags = %lx: "
 msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx: "
 
-#: elf32-v850.c:2899
+#: elf32-v850.c:2898
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850"
 
-#: elf32-v850.c:2901
+#: elf32-v850.c:2900
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850 E3"
 
-#: elf32-v850.c:2903 elf32-v850.c:2910
+#: elf32-v850.c:2902 elf32-v850.c:2909
 #, c-format
 msgid "v850 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850"
 
-#: elf32-v850.c:2911
+#: elf32-v850.c:2910
 #, c-format
 msgid "v850e architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e"
 
-#: elf32-v850.c:2912
+#: elf32-v850.c:2911
 #, c-format
 msgid "v850e1 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e1"
 
-#: elf32-v850.c:2913
+#: elf32-v850.c:2912
 #, c-format
 msgid "v850e2 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2"
 
-#: elf32-v850.c:2914
+#: elf32-v850.c:2913
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2v3"
 
-#: elf32-v850.c:2915
+#: elf32-v850.c:2914
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e3v5"
 
-#: elf32-v850.c:3609 elf32-v850.c:3848
+#: elf32-v850.c:3612 elf32-v850.c:3851
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸"
 
-#: elf32-v850.c:3619 elf32-v850.c:3858
+#: elf32-v850.c:3622 elf32-v850.c:3861
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½ÑƒÑŽ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ %#x"
 
-#: elf32-v850.c:3665 elf32-v850.c:3893
+#: elf32-v850.c:3668 elf32-v850.c:3896
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf32-v850.c:3705
+#: elf32-v850.c:3708
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>"
@@ -3769,22 +3861,22 @@ msgstr " [g-float]"
 msgid "%pB: warning: GOT addend of %<PRId64> to `%s' does not match previous GOT addend of %<PRId64>"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ GOT Ð¸Ð· %<PRId64> Ðº Â«%sÂ» Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ GOT Ð¸Ð· %<PRId64>"
 
-#: elf32-vax.c:1446
+#: elf32-vax.c:1389
 #, c-format
 msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ PLT Ð¸Ð· %<PRId64> Ðº Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�"
 
-#: elf32-vax.c:1572
+#: elf32-vax.c:1515
 #, c-format
 msgid "%pB: warning: %s relocation against symbol `%s' from %pA section"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA"
 
-#: elf32-vax.c:1579
+#: elf32-vax.c:1522
 #, c-format
 msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ðº %<PRIx64> Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA"
 
-#: elf32-visium.c:821
+#: elf32-visium.c:824
 #, c-format
 msgid "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ� %s -mtune=%s Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÑ‚Ñ�Ñ� Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� %s -mtune=%s"
@@ -3799,238 +3891,261 @@ msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€=XGATE]"
 msgid "error reading cpu type from elf private data"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Ñ‚Ð¸Ð¿Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð° Ð¸Ð· Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… elf"
 
-#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2085 elf32-ia64.c:2353
-#: elf64-ia64.c:2353
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2074 elfnn-ia64.c:2343
 msgid "non-zero addend in @fptr reloc"
 msgstr "Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @fptr"
 
-#: elf32-xtensa.c:937
+#: elf32-xtensa.c:1001
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr "%pB(%pA): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²"
 
-#: elf32-xtensa.c:2675
+#: elf32-xtensa.c:2733
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
 msgstr "%pB(%pA+%<PRIx64>): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ€Ð°Ð·Ð¼ÐµÑ€=%<PRIx64>)"
 
-#: elf32-xtensa.c:2758 elf32-xtensa.c:2881
+#: elf32-xtensa.c:2816 elf32-xtensa.c:2939
 msgid "dynamic relocation in read-only section"
 msgstr "Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�"
 
-#: elf32-xtensa.c:2858
+#: elf32-xtensa.c:2916
 msgid "TLS relocation invalid without dynamic sections"
 msgstr "TLS-Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²"
 
-#: elf32-xtensa.c:3070
+#: elf32-xtensa.c:3126
 msgid "internal inconsistency in size of .got.loc section"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .got.loc"
 
-#: elf32-xtensa.c:3377
+#: elf32-xtensa.c:3432
 #, c-format
 msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
 msgstr "%pB: Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿; Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ 0x%x; Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ 0x%x"
 
-#: elf32-xtensa.c:4608 elf32-xtensa.c:4616
+#: elf32-xtensa.c:4726 elf32-xtensa.c:4734
 msgid "attempt to convert L32R/CALLX to CALL failed"
 msgstr "Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ� L32R/CALLX Ð² CALL Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ð°Ñ�ÑŒ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾"
 
-#: elf32-xtensa.c:6444 elf32-xtensa.c:6523 elf32-xtensa.c:7899
+#: elf32-xtensa.c:6559 elf32-xtensa.c:6638 elf32-xtensa.c:8064
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸"
 
-#: elf32-xtensa.c:7638
+#: elf32-xtensa.c:7805
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� XTENSA_ASM_SIMPLIFY; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸"
 
-#: elf32-xtensa.c:9493
+#: elf32-xtensa.c:9663
 msgid "invalid relocation address"
 msgstr "Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
-#: elf32-xtensa.c:9543
+#: elf32-xtensa.c:9754
 msgid "overflow after relaxation"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ñ�Ð»Ðµ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ñ�"
 
-#: elf32-xtensa.c:10689
+#: elf32-xtensa.c:10900
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s"
 
-#: elf64-alpha.c:472
+#: elf32-z80.c:473
+#, c-format
+msgid "%pB: unsupported bfd mach %#lx"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ðµ bfd %#lx"
+
+#: elf32-z80.c:518
+#, c-format
+msgid "%pB: unsupported mach %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� Ð¼Ð°ÑˆÐ¸Ð½Ð° %#x"
+
+#: elf32-z80.c:546
+#, c-format
+msgid "%pB: unsupported arch %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %#x"
+
+#: elf64-alpha.c:473
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr "Ð�Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ñ‹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ldah Ð¸ lda Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� GPDISP"
 
-#: elf64-alpha.c:2463
+#: elf64-alpha.c:1999 elf64-alpha.c:2694 elflink.c:14885
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Â«%pTÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
+
+#: elf64-alpha.c:2451
 #, c-format
 msgid "%pB: .got subsegment exceeds 64K (size %d)"
 msgstr "%pB: Ð¿Ð¾Ð´Ñ€Ð°Ð·Ð´ÐµÐ» .got Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ 64K (Ñ€Ð°Ð·Ð¼ÐµÑ€ %d)"
 
-#: elf64-alpha.c:3018 elf64-alpha.c:3214
+#: elf64-alpha.c:2989 elf64-alpha.c:3183
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
 msgstr "%pB: %pA+%#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹"
 
-#: elf64-alpha.c:4415 elf64-alpha.c:4428
+#: elf64-alpha.c:4381 elf64-alpha.c:4394
 #, c-format
 msgid "%pB: gp-relative relocation against dynamic symbol %s"
 msgstr "%pB: gp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf64-alpha.c:4484
+#: elf64-alpha.c:4450
 #, c-format
 msgid "%pB: change in gp: BRSGP %s"
 msgstr "%pB: Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ Ð² gp: BRSGP %s"
 
-#: elf64-alpha.c:4509 mach-o.c:615
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:499
+#: elf64-alpha.c:4475 mach-o.c:616 elfnn-riscv.c:485
 msgid "<unknown>"
 msgstr "<Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾>"
 
-#: elf64-alpha.c:4515
+#: elf64-alpha.c:4481
 #, c-format
 msgid "%pB: !samegp reloc against symbol without .prologue: %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ !samegp Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð±ÐµÐ· .prologue: %s"
 
-#: elf64-alpha.c:4573
+#: elf64-alpha.c:4539
 #, c-format
 msgid "%pB: unhandled dynamic relocation against %s"
 msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� %s"
 
-#: elf64-alpha.c:4608
+#: elf64-alpha.c:4574
 #, c-format
 msgid "%pB: pc-relative relocation against undefined weak symbol %s"
 msgstr "%pB: pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf64-alpha.c:4674
+#: elf64-alpha.c:4640
 #, c-format
 msgid "%pB: dtp-relative relocation against dynamic symbol %s"
 msgstr "%pB: dtp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf64-alpha.c:4699
+#: elf64-alpha.c:4665
 #, c-format
 msgid "%pB: tp-relative relocation against dynamic symbol %s"
 msgstr "%pB: tp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:517
+msgid "internal error: relocation not supported"
+msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+
 #: elf64-gen.c:71
 #, c-format
 msgid "%pB: Relocations in generic ELF (EM: %d)"
 msgstr "%pB: ÐŸÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ð¾Ð¼ ELF (EM: %d)"
 
-#: elf64-hppa.c:2081
+#: elf64-hppa.c:2032
 #, c-format
 msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
 msgstr "Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð´Ð»Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ .plt, Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ dp = %#<PRId64>"
 
-#: elf64-hppa.c:3286
+#: elf64-hppa.c:3236
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´Ð¾Ð±Ñ€Ð°Ñ‚ÑŒÑ�Ñ� Ð´Ð¾ %s"
 
-#: elf64-ia64-vms.c:598 elf32-ia64.c:636 elf64-ia64.c:636
+#: elf64-ia64-vms.c:598 elfnn-ia64.c:639
 #, c-format
 msgid "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or indirect branch"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ�Ð»Ð°Ð±Ð¸Ñ‚ÑŒ br Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ brl Ð¸Ð»Ð¸ ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ"
 
-#: elf64-ia64-vms.c:2040 elf32-ia64.c:2301 elf64-ia64.c:2301
+#: elf64-ia64-vms.c:2029 elfnn-ia64.c:2291
 msgid "@pltoff reloc against local symbol"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @pltoff Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
 
-#: elf64-ia64-vms.c:3292 elf32-ia64.c:3712 elf64-ia64.c:3712
+#: elf64-ia64-vms.c:3281 elfnn-ia64.c:3674
 #, c-format
 msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ… (%#<PRIx64> >= 0x400000)"
 
-#: elf64-ia64-vms.c:3302 elf32-ia64.c:3722 elf64-ia64.c:3722
+#: elf64-ia64-vms.c:3291 elfnn-ia64.c:3684
 #, c-format
 msgid "%pB: __gp does not cover short data segment"
 msgstr "%pB: __gp Ð½Ðµ Ð¿Ð¾ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð´Ð°Ð½Ð½Ñ‹Ñ…"
 
-#: elf64-ia64-vms.c:3572 elf32-ia64.c:3996 elf64-ia64.c:3996
+#: elf64-ia64-vms.c:3561 elfnn-ia64.c:3958
 #, c-format
 msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
 msgstr "%pB: Ð½Ðµ-pic ÐºÐ¾Ð´ Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ imm Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elf64-ia64-vms.c:3636 elf32-ia64.c:4064 elf64-ia64.c:4064
+#: elf64-ia64-vms.c:3625 elfnn-ia64.c:4026
 #, c-format
 msgid "%pB: @gprel relocation against dynamic symbol %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @gprel Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf64-ia64-vms.c:3695 elf32-ia64.c:4127 elf64-ia64.c:4127
+#: elf64-ia64-vms.c:3684 elfnn-ia64.c:4089
 #, c-format
 msgid "%pB: linking non-pic code in a position independent executable"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð½Ðµ-pic ÐºÐ¾Ð´Ð° Ð² Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¾-Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹"
 
-#: elf64-ia64-vms.c:3797 elf32-ia64.c:4265 elf64-ia64.c:4265
+#: elf64-ia64-vms.c:3786 elfnn-ia64.c:4227
 #, c-format
 msgid "%pB: @internal branch to dynamic symbol %s"
 msgstr "%pB: Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ @internal Ðº Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-ia64-vms.c:3800 elf32-ia64.c:4268 elf64-ia64.c:4268
+#: elf64-ia64-vms.c:3789 elfnn-ia64.c:4230
 #, c-format
 msgid "%pB: speculation fixup to dynamic symbol %s"
 msgstr "%pB: Ð´Ð¾Ð³Ð°Ð´ÐºÐ° Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf64-ia64-vms.c:3803 elf32-ia64.c:4271 elf64-ia64.c:4271
+#: elf64-ia64-vms.c:3792 elfnn-ia64.c:4233
 #, c-format
 msgid "%pB: @pcrel relocation against dynamic symbol %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @pcrel Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf64-ia64-vms.c:3927 elf32-ia64.c:4468 elf64-ia64.c:4468
+#: elf64-ia64-vms.c:3916 elfnn-ia64.c:4430
 msgid "unsupported reloc"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf64-ia64-vms.c:3964 elf32-ia64.c:4506 elf64-ia64.c:4506
+#: elf64-ia64-vms.c:3953 elfnn-ia64.c:4468
 #, c-format
 msgid "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in section `%pA'."
 msgstr "%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ TLS-Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð´Ð»Ñ� Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»."
 
-#: elf64-ia64-vms.c:3981 elf32-ia64.c:4523 elf64-ia64.c:4523
+#: elf64-ia64-vms.c:3970 elfnn-ia64.c:4485
 #, c-format
 msgid "%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size %#<PRIx64> (> 0x1000000)."
 msgstr "%pB: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ�Ð»Ð°Ð±Ð¸Ñ‚ÑŒ br (%s) Ð´Ð¾ Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ %#<PRIx64> (> 0x1000000)."
 
-#: elf64-ia64-vms.c:4273 elf32-ia64.c:4781 elf64-ia64.c:4781
+#: elf64-ia64-vms.c:4266 elfnn-ia64.c:4746
 #, c-format
 msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° trap-on-NULL-dereference Ñ� Ð½Ðµ-trapping Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸"
 
-#: elf64-ia64-vms.c:4282 elf32-ia64.c:4790 elf64-ia64.c:4790
+#: elf64-ia64-vms.c:4275 elfnn-ia64.c:4755
 #, c-format
 msgid "%pB: linking big-endian files with little-endian files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚ Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚"
 
-#: elf64-ia64-vms.c:4291 elf32-ia64.c:4799 elf64-ia64.c:4799
+#: elf64-ia64-vms.c:4284 elfnn-ia64.c:4764
 #, c-format
 msgid "%pB: linking 64-bit files with 32-bit files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼Ð¸ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸"
 
-#: elf64-ia64-vms.c:4300 elf32-ia64.c:4808 elf64-ia64.c:4808
+#: elf64-ia64-vms.c:4293 elfnn-ia64.c:4773
 #, c-format
 msgid "%pB: linking constant-gp files with non-constant-gp files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° constant-gp Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð½Ðµ-constant-gp Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸"
 
-#: elf64-ia64-vms.c:4310 elf32-ia64.c:4818 elf64-ia64.c:4818
+#: elf64-ia64-vms.c:4303 elfnn-ia64.c:4783
 #, c-format
 msgid "%pB: linking auto-pic files with non-auto-pic files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° auto-pic Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð½Ðµ-auto-pic Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸"
 
-#: elf64-ia64-vms.c:5153 elflink.c:4894
+#: elf64-ia64-vms.c:5150 elflink.c:5072
 #, c-format
 msgid "warning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pA"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %u Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB Ð±Ð¾Ð»ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ (%u) ÐµÐ³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA"
 
-#: elf64-ia64-vms.c:5160 elflink.c:4901
+#: elf64-ia64-vms.c:5157 elflink.c:5079
 #, c-format
 msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %u Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB Ð¼ÐµÐ½ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ %u Ð² %pB"
 
-#: elf64-ia64-vms.c:5176 elflink.c:4918
+#: elf64-ia64-vms.c:5173 elflink.c:5096
 #, c-format
 msgid "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %pB"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ñ�Ñ� Ñ� %<PRIu64> Ð² %pB Ð½Ð° %<PRIu64> Ð² %pB"
 
-#: elf64-mips.c:4098
+#: elf64-mips.c:4095
 #, c-format
 msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
 msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %<PRIu64> Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %ld"
@@ -4077,147 +4192,160 @@ msgstr "%pB: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ðµ Ð¿Ðµ
 msgid "%pB: directive LOCAL valid only with a register or absolute value"
 msgstr "%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° LOCAL Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼ Ð¸Ð»Ð¸ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¼ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸ÐµÐ¼"
 
-#: elf64-mmix.c:1744
+#: elf64-mmix.c:1742
 #, c-format
 msgid "%pB: LOCAL directive: register $%<PRId64> is not a local register; first global register is $%<PRId64>"
 msgstr "%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° LOCAL: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€ $%<PRId64> Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼; Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€: $%<PRId64>"
 
-#: elf64-mmix.c:2173
+#: elf64-mmix.c:2167
 #, c-format
 msgid "%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¼Ð½Ð¾Ð¶ÐµÑ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»; Ð½Ð°Ñ‡Ð°Ð»Ð¾ %s ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð² Ñ€Ð°Ð½ÐµÐµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ"
 
-#: elf64-mmix.c:2228
+#: elf64-mmix.c:2222
 msgid "register section has contents\n"
 msgstr "Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ\n"
 
-#: elf64-mmix.c:2418
+#: elf64-mmix.c:2412
 #, c-format
 msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐµ Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ðµ: Ð¾Ñ�Ñ‚Ð°Ñ‘Ñ‚Ñ�Ñ� %lu != Ð¼Ð°ÐºÑ� %lu; Ñ�Ð¾Ð¾Ð±Ñ‰Ð¸Ñ‚Ðµ Ð¾Ð± Ñ�Ñ‚Ð¾Ð¼ Ð´ÐµÑ„ÐµÐºÑ‚Ðµ"
 
-#: elf64-ppc.c:3827
+#: elf64-ppc.c:1342
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÑƒÐ¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ %s, Ð° Ð½Ðµ %s"
+
+#: elf64-ppc.c:4101
 #, c-format
 msgid "symbol '%s' has invalid st_other for ABI version 1"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ st_other Ð´Ð»Ñ� ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ 1"
 
-#: elf64-ppc.c:4002
+#: elf64-ppc.c:4281
 #, c-format
 msgid "%pB .opd not allowed in ABI version %d"
 msgstr "%pB .opd Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾ Ð² ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ %d"
 
-#: elf64-ppc.c:4523
+#: elf64-ppc.c:4852
 #, c-format
 msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð¾Ð±Ñ‰Ð¸Ñ… Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°Ñ… Ð¸ PIE\n"
 
-#: elf64-ppc.c:4919
+#: elf64-ppc.c:5260
 #, c-format
 msgid "%pB uses unknown e_flags 0x%lx"
 msgstr "%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ e_flags 0x%lx"
 
-#: elf64-ppc.c:4927
+#: elf64-ppc.c:5268
 #, c-format
 msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
 msgstr "%pB: ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ %ld Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð¾ Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð¾Ð¼ Ñ� ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ %ld"
 
-#: elf64-ppc.c:4954
+#: elf64-ppc.c:5295
 #, c-format
 msgid " [abiv%ld]"
 msgstr " [abiv%ld]"
 
-#: elf64-ppc.c:6145
+#: elf64-ppc.c:6574
 msgid "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
 msgstr "%P: ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Â«%pTÂ» Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ Ð»ÐµÐ½Ð¸Ð²Ð¾Ð¹ plt-ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸; Ð½Ðµ Ð·Ð°Ð´Ð°Ð²Ð°Ð¹Ñ‚Ðµ LD_BIND_NOW=1 Ð¸Ð»Ð¸ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚Ðµ gcc\n"
 
-#: elf64-ppc.c:6417
+#: elf64-ppc.c:6841
 #, c-format
 msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
 msgstr "%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ R_PPC64_TOCSAVE"
 
-#: elf64-ppc.c:6644
+#: elf64-ppc.c:7089
 #, c-format
 msgid "dynreloc miscount for %pB, section %pA"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð¸Ð¸ dynreloc %pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA"
 
-#: elf64-ppc.c:6733
+#: elf64-ppc.c:7178
 #, c-format
 msgid "%pB: .opd is not a regular array of opd entries"
 msgstr "%pB: .opd Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð¾Ð¼ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² opd"
 
-#: elf64-ppc.c:6743
+#: elf64-ppc.c:7188
 #, c-format
 msgid "%pB: unexpected reloc type %u in .opd section"
 msgstr "%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %u Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .opd"
 
-#: elf64-ppc.c:6765
+#: elf64-ppc.c:7210
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr "%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .opd"
 
-#: elf64-ppc.c:7249
+#: elf64-ppc.c:7697
 msgid "warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: --plt-localentry Ð¾Ñ�Ð¾Ð±ÐµÐ½Ð½Ð¾ Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð±ÐµÐ· Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ Ð² ld.so Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð½Ð°Ñ€ÑƒÑˆÐµÐ½Ð¸Ð¹ ABI"
 
-#: elf64-ppc.c:7499
+#: elf64-ppc.c:8017
 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
 msgstr "%H __tls_get_addr Ð±ÐµÐ· Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°, Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ� TLS Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°\n"
 
-#: elf64-ppc.c:7876 elf64-ppc.c:8513
+#: elf64-ppc.c:8417 elf64-ppc.c:9130
 #, c-format
 msgid "%s defined on removed toc entry"
 msgstr "%s Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½ Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð¼ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ toc"
 
-#: elf64-ppc.c:8241
-#, c-format
-msgid "%H: toc optimization is not supported for %s instruction\n"
-msgstr "%H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ� toc Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s\n"
-
-#: elf64-ppc.c:8470
+#: elf64-ppc.c:9087
 #, c-format
 msgid "%H: %s references optimized away TOC entry\n"
 msgstr "%H: %s Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¹ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ TOC\n"
 
-#: elf64-ppc.c:9301
+#: elf64-ppc.c:9308
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr "%H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ� got/toc Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s\n"
+
+#: elf64-ppc.c:10135
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %s"
 
-#: elf64-ppc.c:10215
+#: elf64-ppc.c:11277
 msgid "%P: cannot find opd entry toc for `%pT'\n"
 msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ opd Ñƒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° toc Ð´Ð»Ñ� Â«%pTÂ»\n"
 
-#: elf64-ppc.c:10303
+#: elf64-ppc.c:11323 elf64-ppc.c:11867
+msgid "%F%P: Could not assign group %pA target %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ Ð³Ñ€ÑƒÐ¿Ð¿Ñƒ %pA Ñ†ÐµÐ»Ð¸ %pA Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñƒ. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚Ðµ Ð±ÐµÐ· --enable-non-contiguous-regions.\n"
+
+#: elf64-ppc.c:11385
 #, c-format
 msgid "long branch stub `%s' offset overflow"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð´Ð»Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»"
 
-#: elf64-ppc.c:10330
+#: elf64-ppc.c:11412
 #, c-format
 msgid "can't find branch stub `%s'"
 msgstr "Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»"
 
-#: elf64-ppc.c:10394 elf64-ppc.c:10642 elf64-ppc.c:12791
+#: elf64-ppc.c:11476 elf64-ppc.c:11743 elf64-ppc.c:13972
 #, c-format
 msgid "%P: linkage table error against `%pT'\n"
 msgstr "%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð´Ð»Ñ� Â«%pTÂ»\n"
 
-#: elf64-ppc.c:10820
+#: elf64-ppc.c:11939
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÑƒ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»"
 
-#: elf64-ppc.c:11779
+#: elf64-ppc.c:12920
 #, c-format
 msgid "%pB section %pA exceeds stub group size"
 msgstr "%pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸"
 
-#: elf64-ppc.c:13189 elf64-ppc.c:13208
+#: elf64-ppc.c:14153
+msgid "__tls_get_addr call offset overflow"
+msgstr "__tls_get_addr Ð²Ñ‹Ð·Ð²Ð°Ð»Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
+
+#: elf64-ppc.c:14455 elf64-ppc.c:14474
 #, c-format
 msgid "%s offset too large for .eh_frame sdata4 encoding"
 msgstr "Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐµ Ð´Ð»Ñ� ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� sdata4 Ð² .eh_frame"
 
-#: elf64-ppc.c:13244
+#: elf64-ppc.c:14506
 #, c-format
 msgid "linker stubs in %u group\n"
 msgid_plural "linker stubs in %u groups\n"
@@ -4225,10 +4353,10 @@ msgstr[0] "Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½
 msgstr[1] "Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿Ð°Ñ…\n"
 msgstr[2] "Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿Ð°Ñ…\n"
 
-#: elf64-ppc.c:13248
+#: elf64-ppc.c:14513
 #, c-format
 msgid ""
-"  branch         %lu\n"
+"%s  branch         %lu\n"
 "  branch toc adj %lu\n"
 "  branch notoc   %lu\n"
 "  branch both    %lu\n"
@@ -4242,7 +4370,7 @@ msgid ""
 "  plt call both  %lu\n"
 "  global entry   %lu"
 msgstr ""
-"  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ                            %lu\n"
+"%s  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ                          %lu\n"
 "  Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� toc            %lu\n"
 "  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ðµ toc                     %lu\n"
 "  Ð¾Ð±Ð° Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�                        %lu\n"
@@ -4256,178 +4384,185 @@ msgstr ""
 "  Ð¾Ð±Ð° plt-Ð²Ñ‹Ð·Ð¾Ð²Ð°                       %lu\n"
 "  Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚                   %lu"
 
-#: elf64-ppc.c:13583
+#: elf64-ppc.c:14913
 #, c-format
 msgid "%H: %s used with TLS symbol `%pT'\n"
 msgstr "%H: %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%pTÂ»\n"
 
-#: elf64-ppc.c:13585
+#: elf64-ppc.c:14915
 #, c-format
 msgid "%H: %s used with non-TLS symbol `%pT'\n"
 msgstr "%H: %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� Ð½Ðµ TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%pTÂ»\n"
 
-#: elf64-ppc.c:14245
+#: elf64-ppc.c:15670
 #, c-format
 msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
 msgstr "%H: Ð²Ñ‹Ð·Ð¾Ð² Â«%pTÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½Ðµ nop, Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ toc; (Ð²Ñ‹Ð·Ð¾Ð² Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ plt)\n"
 
-#: elf64-ppc.c:14251
+#: elf64-ppc.c:15676
 #, c-format
 msgid "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
 msgstr "%H: Ð²Ñ‹Ð·Ð¾Ð² Â«%pTÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½Ðµ nop, Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ toc; (Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ�/Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ� toc)\n"
 
-#: elf64-ppc.c:14985
+#: elf64-ppc.c:16564
 #, c-format
 msgid "%H: %s for indirect function `%pT' unsupported\n"
 msgstr "%H: %s Ð´Ð»Ñ� Ð½ÐµÑ�Ð²Ð½Ð¾Ð³Ð¾ Ð²Ñ‹Ð·Ð¾Ð²Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%pTÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
 
-#: elf64-ppc.c:15097
+#: elf64-ppc.c:16649
+#, c-format
+msgid "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr "%X%P: %pB: %s Ñ� %pT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² glibc ÐºÐ°Ðº Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ\n"
+
+#: elf64-ppc.c:16704
 #, c-format
 msgid "%P: %pB: %s is not supported for `%pT'\n"
 msgstr "%P: %pB: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Â«%pTÂ»\n"
 
-#: elf64-ppc.c:15326
+#: elf64-ppc.c:16963
 #, c-format
 msgid "%H: error: %s not a multiple of %u\n"
 msgstr "%H: Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾ %u\n"
 
-#: elf64-ppc.c:15349
+#: elf64-ppc.c:16986
 #, c-format
 msgid "%H: unresolvable %s against `%pT'\n"
 msgstr "%H: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%pTÂ»\n"
 
-#: elf64-ppc.c:15446
+#: elf64-ppc.c:17131
 #, c-format
 msgid "%H: %s against `%pT': error %d\n"
 msgstr "%H: %s Ð´Ð»Ñ� Â«%pTÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ° %d\n"
 
-#: elf64-s390.c:2576
+#: elf64-s390.c:2446
 #, c-format
 msgid "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)"
 msgstr "%pB: Ð½Ðµ PLT Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%sÂ» Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ð² Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ, Ðº ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼Ñƒ Ð¾Ð±Ñ€Ð°Ñ‰Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° (Ð¿ÐµÑ€ÐµÑ�Ð¾Ð±ÐµÑ€Ð¸Ñ‚Ðµ Ñ„Ð°Ð¹Ð» Ñ� -fPIC ?)"
 
-#: elf64-sparc.c:109 elfcode.h:1471
-#, c-format
-msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
-msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %d Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %ld"
-
-#: elf64-sparc.c:467
+#: elf64-sparc.c:478
 #, c-format
 msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
 msgstr "%pB: Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ñ‹ %%g[2367] Ð¼Ð¾Ð³ÑƒÑ‚ Ð¾Ð±ÑŠÑ�Ð²Ð»Ñ�Ñ‚ÑŒÑ�Ñ� Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ STT_REGISTER"
 
-#: elf64-sparc.c:488
+#: elf64-sparc.c:499
 #, c-format
 msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
 msgstr "Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° %%g%d: %s Ð² %pB, Ñ€Ð°Ð½ÐµÐµ %s Ð² %pB"
 
-#: elf64-sparc.c:512
+#: elf64-sparc.c:523
 #, c-format
 msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹: REGISTER Ð² %pB, Ñ€Ð°Ð½ÐµÐµ %s Ð² %pB"
 
-#: elf64-sparc.c:559
+#: elf64-sparc.c:570
 #, c-format
 msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹: %s Ð² %pB, Ñ€Ð°Ð½ÐµÐµ REGISTER Ð² %pB"
 
-#: elf64-sparc.c:691
+#: elf64-sparc.c:702
 #, c-format
 msgid "%pB: linking UltraSPARC specific with HAL specific code"
 msgstr "%pB: UltraSPARC-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ� HAL-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ñ‹Ð¼ ÐºÐ¾Ð´Ð¾Ð¼"
 
-#: elf64-x86-64.c:1412
+#: elf64-x86-64.c:1417
 msgid "hidden symbol "
 msgstr "Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1420
 msgid "internal symbol "
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1423 elf64-x86-64.c:1427
 msgid "protected symbol "
 msgstr "Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1429
 msgid "symbol "
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1425 elf64-x86-64.c:1435
-msgid "; recompile with -fPIC"
-msgstr "; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIC"
-
-#: elf64-x86-64.c:1430
+#: elf64-x86-64.c:1435
 msgid "undefined "
 msgstr "Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¾ "
 
-#: elf64-x86-64.c:1439
+#: elf64-x86-64.c:1445
 msgid "a shared object"
 msgstr "Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚"
 
-#: elf64-x86-64.c:1441
+#: elf64-x86-64.c:1447
+msgid "; recompile with -fPIC"
+msgstr "; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIC"
+
+#: elf64-x86-64.c:1452
 msgid "a PIE object"
 msgstr "Ð¾Ð±ÑŠÐµÐºÑ‚ PIE"
 
-#: elf64-x86-64.c:1443
+#: elf64-x86-64.c:1454
 msgid "a PDE object"
 msgstr "Ð¾Ð±ÑŠÐµÐºÑ‚ PDE"
 
-#: elf64-x86-64.c:1446
+#: elf64-x86-64.c:1456
+msgid "; recompile with -fPIE"
+msgstr "; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIE"
+
+#: elf64-x86-64.c:1460
 #, c-format
 msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� %s%sÂ«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ %s%s"
 
-#: elf64-x86-64.c:1931
+#: elf64-x86-64.c:1968
 #, c-format
 msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ x32"
 
-#: elf64-x86-64.c:2073
+#: elf64-x86-64.c:2124
 #, c-format
 msgid "%pB: '%s' accessed both as normal and thread local symbol"
 msgstr "%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð´Ð»Ñ� Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf64-x86-64.c:2696
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5302
+#: elf64-x86-64.c:2747 elfnn-aarch64.c:5546
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %<PRId64>"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð²Ð¼ÐµÑ�Ñ‚Ðµ Ñ� STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ: %<PRId64>"
 
-#: elf64-x86-64.c:2934
+#: elf64-x86-64.c:2992
 #, c-format
 msgid "%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_X86_64_GOTOFF64 Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
 
-#: elf64-x86-64.c:2948
+#: elf64-x86-64.c:3006
 #, c-format
 msgid "%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_X86_64_GOTOFF64 Ð´Ð»Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
 
-#: elf64-x86-64.c:3208
+#: elf64-x86-64.c:3283
 #, c-format
 msgid "%pB: addend %s%#x in relocation %s against symbol `%s' at %#<PRIx64> in section `%pA' is out of range"
 msgstr "%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ %s%#x Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»."
 
-#: elf64-x86-64.c:3885
+#: elf64-x86-64.c:3417 elflink.c:13267
+msgid "%F%P: corrupt input: %pB\n"
+msgstr "%F%P: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ð²Ð²Ð¾Ð´: %pB\n"
+
+#: elf64-x86-64.c:4101
 msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
 msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GOTPCREL; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ¹Ñ‚Ðµ Ñ� --no-relax\n"
 
-#: elf64-x86-64.c:4043
+#: elf64-x86-64.c:4259
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
 msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ PC Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ PLT Ð´Ð»Ñ� Â«%sÂ»\n"
 
-#: elf64-x86-64.c:4106
+#: elf64-x86-64.c:4322
 #, c-format
 msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
 msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð¸ Ð¿ÐµÑ€ÐµÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ¸ Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ PLT Ð´Ð»Ñ� Â«%sÂ»\n"
 
-#: elf64-x86-64.c:4159
+#: elf64-x86-64.c:4375
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
 msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ PC Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ GOT PLT Ð´Ð»Ñ� Â«%sÂ»\n"
 
-#: elfcode.h:323
+#: elfcode.h:326
 msgid "warning: %pB has a corrupt section with a size (%"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ %pB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ (%"
 
@@ -4436,656 +4571,813 @@ msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ
 msgid "warning: %pB has a corrupt string table index - ignoring"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ %pB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�"
 
-#: elfcode.h:1212
+#: elfcode.h:1228
 #, c-format
 msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
 msgstr "%pB: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð²ÐµÑ€Ñ�Ð¸Ð¸ (%<PRId64>) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ�Ð¾ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° (%ld)"
 
-#: elfcore.h:300
+#: elfcore.h:308
 #, c-format
 msgid "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: %<PRIu64>"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB ÑƒÑ�ÐµÑ‡Ñ‘Ð½: Ð¾Ð¶Ð¸Ð´Ð°Ð»Ñ�Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð° core >= %<PRIu64>, Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾: %<PRIu64>"
 
-#: elflink.c:1367
+#: elflink.c:1362
 #, c-format
 msgid "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA"
 msgstr "%s: TLS-Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ðµ-TLS Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA"
 
-#: elflink.c:1373
+#: elflink.c:1368
 #, c-format
 msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
 msgstr "%s: TLS-Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð² %pB Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ðµ-TLS Ñ�Ñ�Ñ‹Ð»ÐºÐ¾Ð¹ Ð² %pB"
 
-#: elflink.c:1379
+#: elflink.c:1374
 #, c-format
 msgid "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
 msgstr "%s: TLS-Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ðµ-TLS Ñ�Ñ�Ñ‹Ð»ÐºÐ¾Ð¹ Ð² %pB"
 
-#: elflink.c:1385
+#: elflink.c:1380
 #, c-format
 msgid "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
 msgstr "%s: TLS-Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð² %pB Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ðµ-TLS Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA"
 
-#: elflink.c:2075
+#: elflink.c:2071
 #, c-format
 msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr "%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ€Ñ�Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elflink.c:2452
+#: elflink.c:2448
 #, c-format
 msgid "%pB: version node not found for symbol %s"
 msgstr "%pB: Ð²ÐµÑ€Ñ�Ð¸Ñ� ÑƒÐ·Ð»Ð° Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elflink.c:2541
+#: elflink.c:2539
 #, c-format
 msgid "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in section `%pA'"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° (%#<PRIx64> >= %#lx) Ð´Ð»Ñ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#<PRIx64> Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»"
 
-#: elflink.c:2553
+#: elflink.c:2551
 #, c-format
 msgid "%pB: non-zero symbol index (%#<PRIx64>) for offset %#<PRIx64> in section `%pA' when the object file has no symbol table"
 msgstr "%pB: Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° (%#<PRIx64>) Ð´Ð»Ñ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#<PRIx64> Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ», Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº Ð² Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ Ð½ÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"
 
-#: elflink.c:2744
+#: elflink.c:2740
 #, c-format
 msgid "%pB: relocation size mismatch in %pB section %pA"
 msgstr "%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA"
 
-#: elflink.c:3066
+#: elflink.c:3069
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ð¸ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½"
 
-#: elflink.c:3128
+#: elflink.c:3129
 msgid "%P: copy reloc against protected `%pT' is dangerous\n"
 msgstr "%P: ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¼ Â«%pTÂ» Ð¾Ð¿Ð°Ñ�Ð½Ð¾\n"
 
-#: elflink.c:3932
+#: elflink.c:4064
 #, c-format
 msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
 msgstr "Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ñ‹Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ ÐºÐ¾Ð´ ELF (%d) Ð² %pB, Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� %d"
 
-#: elflink.c:4598
+#: elflink.c:4534
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ %lx (Ð¼Ð°ÐºÑ� %lx)"
+
+#: elflink.c:4602
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr "%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ñ� Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu (>= sh_info Ñ� %lu)"
+
+#: elflink.c:4750
+#, c-format
+msgid "%pB: not enough version information"
+msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð²ÐµÑ€Ñ�Ð¸Ð¸"
+
+#: elflink.c:4788
 #, c-format
 msgid "%pB: %s: invalid version %u (max %d)"
 msgstr "%pB: %s: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %u (Ð¼Ð°ÐºÑ� %d)"
 
-#: elflink.c:4635
+#: elflink.c:4825
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr "%pB: %s: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %d"
 
-#: elflink.c:5054
+#: elflink.c:5231
 #, c-format
 msgid "%pB: undefined reference to symbol '%s'"
 msgstr "%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
 
-#: elflink.c:6130
+#: elflink.c:6315
 #, c-format
 msgid "%pB: stack size specified and %s set"
 msgstr "%pB: ÑƒÐºÐ°Ð·Ð°Ð½ Ð¸ Ð·Ð°Ð´Ð°Ð½ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ° %s"
 
-#: elflink.c:6134
+#: elflink.c:6319
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr "%pB: %s Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¼"
 
-#: elflink.c:6331
+#: elflink.c:6516
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ�: %s"
 
-#: elflink.c:6902
+#: elflink.c:7088
 #, c-format
 msgid "%pB: .preinit_array section is not allowed in DSO"
 msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» .preinit_array Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ°ÐµÑ‚Ñ�Ñ� Ð² DSO"
 
-#: elflink.c:8359
+#: elflink.c:8602
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr "Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° %s Ð² Ñ�Ð»Ð¾Ð¶Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ: %s"
 
-#: elflink.c:8514
+#: elflink.c:8757
 #, c-format
 msgid "unknown operator '%c' in complex symbol"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ '%c' Ð² Ñ�Ð»Ð¾Ð¶Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ"
 
 #. PR 21524: Let the user know if a symbol was removed by garbage collection.
-#: elflink.c:8852
+#: elflink.c:9095
 #, c-format
 msgid "%pB:%pA: error: relocation references symbol %s which was removed by garbage collection"
 msgstr "%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð±Ñ‹Ð» ÑƒÐ´Ð°Ð»Ñ‘Ð½ Ñ�Ð±Ð¾Ñ€Ñ‰Ð¸ÐºÐ¾Ð¼ Ð¼ÑƒÑ�Ð¾Ñ€Ð°"
 
-#: elflink.c:8855
+#: elflink.c:9098
 #, c-format
 msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
 msgstr "%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ --gc-keep-exported"
 
-#: elflink.c:9091 elflink.c:9109 elflink.c:9148 elflink.c:9166
+#: elflink.c:9343 elflink.c:9361 elflink.c:9400 elflink.c:9418
 #, c-format
 msgid "%pB: unable to sort relocs - they are in more than one size"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� â€” Ð¾Ð½Ð¸ Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð²"
 
 #. The section size is not divisible by either -
 #. something is wrong.
-#: elflink.c:9125 elflink.c:9182
+#: elflink.c:9377 elflink.c:9434
 #, c-format
 msgid "%pB: unable to sort relocs - they are of an unknown size"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� â€” Ð¾Ð½Ð¸ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°"
 
-#: elflink.c:9234
+#: elflink.c:9486
 msgid "not enough memory to sort relocations"
 msgstr "Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²ÐºÐ¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹"
 
-#: elflink.c:9502
+#: elflink.c:9767
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²: %d (>= %d)"
 
-#: elflink.c:9782
+#: elflink.c:10043
 #, c-format
 msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO"
 
-#: elflink.c:9785
+#: elflink.c:10046
 #, c-format
 msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO"
 
-#: elflink.c:9788
+#: elflink.c:10049
 #, c-format
 msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO"
 
-#: elflink.c:9874
+#: elflink.c:10135
 #, c-format
 msgid "%pB: could not find output section %pA for input section %pA"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA Ð´Ð»Ñ� Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA"
 
-#: elflink.c:10028
+#: elflink.c:10289
 #, c-format
 msgid "%pB: protected symbol `%s' isn't defined"
 msgstr "%pB: Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½"
 
-#: elflink.c:10031
+#: elflink.c:10292
 #, c-format
 msgid "%pB: internal symbol `%s' isn't defined"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½"
 
-#: elflink.c:10034
+#: elflink.c:10295
 #, c-format
 msgid "%pB: hidden symbol `%s' isn't defined"
 msgstr "%pB: Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½"
 
-#: elflink.c:10066
+#: elflink.c:10327
 #, c-format
 msgid "%pB: no symbol version section for versioned symbol `%s'"
 msgstr "%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð²ÐµÑ€Ñ�Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð´Ð»Ñ� Ð²ÐµÑ€Ñ�Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elflink.c:10679
+#: elflink.c:10699
+#, c-format
+msgid "warning: --enable-non-contiguous-regions discards section `%s' from '%s'\n"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: --enable-non-contiguous-regions Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°ÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð¸Ð· Â«%sÂ»\n"
+
+#: elflink.c:10951
 #, c-format
 msgid "error: %pB: size of section %pA is not multiple of address size"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: elflink.c:10724
+#: elflink.c:10996
 #, c-format
 msgid "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a non-existent global symbol"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%#<PRIx64>) Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½ÐµÑ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elflink.c:11484
+#: elflink.c:11739
 #, c-format
 msgid "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
 msgstr "%pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ [Â«%pAÂ» Ð² %pB] Ð¸ Ð½ÐµÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ [Â«%pAÂ» Ð² %pB] Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹"
 
-#: elflink.c:11490
+#: elflink.c:11745
 #, c-format
 msgid "%pA has both ordered and unordered sections"
 msgstr "%pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ð¸ Ð½ÐµÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹"
 
-#: elflink.c:11592
+#: elflink.c:11851
 #, c-format
 msgid "%pB: no symbol found for import library"
 msgstr "%pB: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸"
 
-#: elflink.c:12225
+#: elflink.c:12488
 #, c-format
 msgid "%pB: file class %s incompatible with %s"
 msgstr "%pB: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ ÐºÐ»Ð°Ñ�Ñ� %s Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� %s"
 
-#: elflink.c:12442
+#: elflink.c:12704
 #, c-format
 msgid "%pB: failed to generate import library"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼ÑƒÑŽ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ"
 
-#: elflink.c:12561
+#: elflink.c:12823
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð¸Ð¼ÐµÐµÑ‚ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€"
 
-#: elflink.c:12609
+#: elflink.c:12871
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·ÑƒÐµÑ‚Ñ�Ñ� Ð² Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ðµ"
 
-#: elflink.c:12701
+#: elflink.c:12964
 msgid "%P%X: read-only segment has dynamic relocations\n"
 msgstr "%P%X: Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�, Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�\n"
 
-#: elflink.c:12704
-msgid "%P: warning: creating a DT_TEXTREL in a shared object\n"
+#: elflink.c:12967
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
 msgstr "%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚Ñ�Ñ� DT_TEXTREL Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ\n"
 
-#: elflink.c:12829
+#: elflink.c:12970
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr "%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚Ñ�Ñ� DT_TEXTREL Ð² PIE\n"
+
+#: elflink.c:13095
 msgid "%P%X: can not read symbols: %E\n"
 msgstr "%P%X: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹: %E\n"
 
-#: elflink.c:13002
-msgid "%F%P: corrupt input: %pB\n"
-msgstr "%F%P: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ð²Ð²Ð¾Ð´: %pB\n"
+#: elflink.c:13500
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%F%P: %pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� --gc-sections Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ» linked-to\n"
 
-#: elflink.c:13668
+#: elflink.c:13961
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
 msgstr "%pB: %pA+%#<PRIx64>: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð»Ñ� INHERIT"
 
-#: elflink.c:13844
+#: elflink.c:14002
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pA:Â» Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ VTENTRY"
+
+#: elflink.c:14145
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ INPUT_SECTION_FLAG %s\n"
 
-#: elfxx-mips.c:1450
+#: elflink.c:14891
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr "%P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
+
+#: elflink.c:14980
+msgid "%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s\n"
+msgstr "%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð²Ð½Ñ‹Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ GNU Ñ� DT_TEXTREL Ð¼Ð¾Ð³ÑƒÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� %s\n"
+
+#: elfxx-aarch64.c:477
+#, c-format
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð»Ð°Ð±Ñ‹Ð¹ TLS Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�ÐµÑ‚Ñ�Ñ� Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸ÐµÐ¹ Ð¸ Ð¼Ð¾Ð¶ÐµÑ‚ Ð½Ðµ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ ÐºÐ°Ðº Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ�"
+
+#: elfxx-aarch64.c:738 elfnn-aarch64.c:9902 elfnn-aarch64.c:9909
+#, c-format
+msgid "%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section."
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: BTI Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -z force-bti, Ð½Ð¾ Ð²Ñ�Ðµ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð½Ðµ Ð¸Ð¼ÐµÑŽÑ‚ BTI Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ NOTE."
+
+#: elfxx-aarch64.c:758 elfxx-x86.c:2554
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð² GNU\n"
+
+#: elfxx-aarch64.c:762 elfxx-x86.c:2559
+#, c-format
+msgid "%F%pA: failed to align section\n"
+msgstr "%F%pA: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ñ€Ð¾Ð²Ð½Ñ�Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»\n"
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° AArch64: 0x%x>"
+
+#: elfxx-mips.c:1507
 msgid "static procedure (no name)"
 msgstr "Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° (Ð±ÐµÐ· Ð¸Ð¼ÐµÐ½Ð¸)"
 
-#: elfxx-mips.c:5718
+#: elfxx-mips.c:5782
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ð¸ MIPS16 Ð¸ microMIPS Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ‚ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ Ð´Ñ€ÑƒÐ³ Ð´Ñ€ÑƒÐ³Ð°"
 
-#: elfxx-mips.c:6485
+#: elfxx-mips.c:6547
 msgid "%X%H: unsupported JALX to the same ISA mode\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ JALX Ð´Ð»Ñ� Ñ‚Ð¾Ð³Ð¾ Ð¶Ðµ Ñ€ÐµÐ¶Ð¸Ð¼Ð° ISA\n"
 
-#: elfxx-mips.c:6518
+#: elfxx-mips.c:6580
 msgid "%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¼ÐµÐ¶Ð´Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ð¾Ð¹ ÑƒÐ²Ñ�Ð·ÐºÐ¾Ð¹\n"
 
-#: elfxx-mips.c:6563
+#: elfxx-mips.c:6625
 msgid "%X%H: cannot convert branch between ISA modes to JALX: relocation out of range\n"
 msgstr "%X%H: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¼ÐµÐ¶Ð´Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA Ð² JALX: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½\n"
 
-#: elfxx-mips.c:6575
+#: elfxx-mips.c:6637
 msgid "%X%H: unsupported branch between ISA modes\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¼ÐµÐ¶Ð´Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA\n"
 
-#: elfxx-mips.c:7223
+#: elfxx-mips.c:7286
 #, c-format
 msgid "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«.reginfoÂ»; Ð¾Ð¶Ð¸Ð´Ð°Ð»Ñ�Ñ� %<PRIu64>, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½ %<PRIu64>"
 
-#: elfxx-mips.c:7267 elfxx-mips.c:7502
+#: elfxx-mips.c:7330 elfxx-mips.c:7567
 #, c-format
 msgid "%pB: warning: bad `%s' option size %u smaller than its header"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° Â«%sÂ» (%u) Ð¼ÐµÐ½ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ ÐµÐ³Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº"
 
-#: elfxx-mips.c:8300 elfxx-mips.c:8426
+#: elfxx-mips.c:8374 elfxx-mips.c:8500
 #, c-format
 msgid "%pB: warning: cannot determine the target function for stub section `%s'"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Â«%sÂ»"
 
-#: elfxx-mips.c:8558
+#: elfxx-mips.c:8632
 #, c-format
 msgid "%pB: malformed reloc detected for section %s"
 msgstr "%pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s"
 
-#: elfxx-mips.c:8658
+#: elfxx-mips.c:8731
 #, c-format
 msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GOT Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð½Ðµ Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñ…"
 
-#: elfxx-mips.c:8796
+#: elfxx-mips.c:8871
 #, c-format
 msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CALL16 Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð½Ðµ Ð´Ð»Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
 
-#: elfxx-mips.c:9086
+#: elfxx-mips.c:9174
 #, c-format
 msgid "%X%H: relocation %s against `%s' cannot be used when making a shared object; recompile with -fPIC\n"
 msgstr "%X%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC\n"
 
-#: elfxx-mips.c:9422
+#: elfxx-mips.c:9300
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr "Ð¡Ð¸Ð¼Ð²Ð¾Ð» IFUNC %s Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” IFUNCS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+
+#: elfxx-mips.c:9303
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "Ð½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"
+
+#: elfxx-mips.c:9523
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr "Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s"
 
-#: elfxx-mips.c:10350
+#: elfxx-mips.c:10457
 #, c-format
 msgid "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in section `%pA'"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰ÐµÐµ LO16 Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñƒ Â«%sÂ» Ð´Ð»Ñ� %s Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»"
 
-#: elfxx-mips.c:10490
+#: elfxx-mips.c:10597
 msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
 msgstr "Ñ€Ð°Ð·Ð´ÐµÐ» small-data Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ 64ÐšÐ‘ â€” Ð½Ð¸Ð¶Ð½Ð¸Ð¹ Ð¿Ñ€ÐµÐ´ÐµÐ» small-data (Ñ�Ð¼. Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)"
 
-#: elfxx-mips.c:10509
+#: elfxx-mips.c:10616
 msgid "cannot convert a jump to JALX for a non-word-aligned address"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ðº JALX Ð´Ð»Ñ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: elfxx-mips.c:10512
+#: elfxx-mips.c:10619
 msgid "jump to a non-word-aligned address"
 msgstr "Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ"
 
-#: elfxx-mips.c:10513
+#: elfxx-mips.c:10620
 msgid "jump to a non-instruction-aligned address"
 msgstr "Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð°Ð´Ñ€ÐµÑ�Ñƒ"
 
-#: elfxx-mips.c:10516
+#: elfxx-mips.c:10623
 msgid "cannot convert a branch to JALX for a non-word-aligned address"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ðº JALX Ð´Ð»Ñ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: elfxx-mips.c:10518
+#: elfxx-mips.c:10625
 msgid "branch to a non-instruction-aligned address"
 msgstr "Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð°Ð´Ñ€ÐµÑ�Ñƒ"
 
-#: elfxx-mips.c:10520
+#: elfxx-mips.c:10627
 msgid "PC-relative load from unaligned address"
 msgstr "Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ PC Ð¸Ð· Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: elfxx-mips.c:10798
+#: elfxx-mips.c:10927
 #, c-format
 msgid "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
 msgstr "%pB: VMA Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Â«%pAÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ðµ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³Ð¾ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Â«-Ttext-segment=â€¦Â»"
 
-#: elfxx-mips.c:10911 elfxx-mips.c:11484
+#: elfxx-mips.c:11042 elfxx-mips.c:11629
 #, c-format
 msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
 msgstr "%pB: Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pAÂ» Ð´Ð»Ñ� %<PRId64> Ð¸Ð· Â«%pAÂ» Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° ADDIUPC"
 
-#: elfxx-mips.c:11456
+#: elfxx-mips.c:11601
 #, c-format
 msgid "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
 msgstr "%pB: Ñ�Ñ‚Ð°Ñ€Ñ‚Ð¾Ð²Ñ‹Ð¹ VMA Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Â«%pAÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ðµ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³Ð¾ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Â«-Ttext-segment=â€¦Â»"
 
-#: elfxx-mips.c:14397
+#: elfxx-mips.c:14556
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %s"
 
-#: elfxx-mips.c:14931
+#: elfxx-mips.c:15090
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ð¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»"
 
-#: elfxx-mips.c:15208
+#: elfxx-mips.c:15367
 #, c-format
 msgid "%pB: warning: linking abicalls files with non-abicalls files"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð² abicalls Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð½Ðµ-abicalls"
 
-#: elfxx-mips.c:15225
+#: elfxx-mips.c:15384
 #, c-format
 msgid "%pB: linking 32-bit code with 64-bit code"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð° Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ ÐºÐ¾Ð´Ð¾Ð¼"
 
-#: elfxx-mips.c:15257 elfxx-mips.c:15323 elfxx-mips.c:15338
+#: elfxx-mips.c:15416 elfxx-mips.c:15482 elfxx-mips.c:15497
 #, c-format
 msgid "%pB: linking %s module with previous %s modules"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s"
 
-#: elfxx-mips.c:15281
+#: elfxx-mips.c:15440
 #, c-format
 msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
 msgstr "%pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ABI: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s"
 
-#: elfxx-mips.c:15306
+#: elfxx-mips.c:15465
 #, c-format
 msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
 msgstr "%pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ASE: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s"
 
-#: elfxx-mips.c:15440
+#: elfxx-mips.c:15599
 #, c-format
 msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %d"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %d"
 
-#: elfxx-mips.c:15446
+#: elfxx-mips.c:15605
 #, c-format
 msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s"
 
-#: elfxx-mips.c:15452
+#: elfxx-mips.c:15611
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸ %d"
 
-#: elfxx-mips.c:15466
+#: elfxx-mips.c:15625
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s"
 
-#: elfxx-mips.c:15485
+#: elfxx-mips.c:15644
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %d"
 
-#: elfxx-mips.c:15497
+#: elfxx-mips.c:15656
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s"
 
-#: elfxx-mips.c:15506
+#: elfxx-mips.c:15665
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %d (Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹ %pB), %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ABI MSA %d"
 
-#: elfxx-mips.c:15568
+#: elfxx-mips.c:15727
 #, c-format
 msgid "%pB: endianness incompatible with that of the selected emulation"
 msgstr "%pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸ÐµÐ¹"
 
-#: elfxx-mips.c:15582
+#: elfxx-mips.c:15741
 #, c-format
 msgid "%pB: ABI is incompatible with that of the selected emulation"
 msgstr "%pB: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸ÐµÐ¹"
 
-#: elfxx-mips.c:15634
+#: elfxx-mips.c:15794
 #, c-format
 msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ ISA Ð¼ÐµÐ¶Ð´Ñƒ e_flags Ð¸ .MIPS.abiflags"
 
-#: elfxx-mips.c:15639
+#: elfxx-mips.c:15799
 #, c-format
 msgid "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ FP ABI Ð¼ÐµÐ¶Ð´Ñƒ .gnu.attributes Ð¸ .MIPS.abiflags"
 
-#: elfxx-mips.c:15643
+#: elfxx-mips.c:15803
 #, c-format
 msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ ASE Ð¼ÐµÐ¶Ð´Ñƒ e_flags Ð¸ .MIPS.abiflags"
 
-#: elfxx-mips.c:15650
+#: elfxx-mips.c:15810
 #, c-format
 msgid "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ð¹ ISA Ð¼ÐµÐ¶Ð´Ñƒ e_flags Ð¸ .MIPS.abiflags"
 
-#: elfxx-mips.c:15654
+#: elfxx-mips.c:15814
 #, c-format
 msgid "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ Ð² Ð¿Ð¾Ð»Ðµ flags2 Ñƒ .MIPS.abiflags (0x%lx)"
 
-#: elfxx-mips.c:15843
+#: elfxx-mips.c:16005
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr "-mips32r2 -mfp64 (12 Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ�ÑŽÑ‚Ñ�Ñ� Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÐ¼Ñ‹Ð¼)"
 
-#: elfxx-mips.c:15905 elfxx-mips.c:15916
+#: elfxx-mips.c:16067 elfxx-mips.c:16078
 msgid "None"
 msgstr "ÐžÑ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚"
 
-#: elfxx-mips.c:15907 elfxx-mips.c:15976
+#: elfxx-mips.c:16069 elfxx-mips.c:16138
 msgid "Unknown"
 msgstr "Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾"
 
-#: elfxx-mips.c:15987
+#: elfxx-mips.c:16149
 #, c-format
 msgid "Hard or soft float\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¸Ð»Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ�\n"
 
-#: elfxx-mips.c:15990
+#: elfxx-mips.c:16152
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (Ð´Ð²Ð¾Ð¹Ð½Ð°Ñ� Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚ÑŒ)\n"
 
-#: elfxx-mips.c:15993
+#: elfxx-mips.c:16155
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð°Ñ� Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚ÑŒ)\n"
 
-#: elfxx-mips.c:15996
+#: elfxx-mips.c:16158
 #, c-format
 msgid "Soft float\n"
 msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ�\n"
 
-#: elfxx-mips.c:15999
+#: elfxx-mips.c:16161
 #, c-format
 msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (MIPS32r2 64-bit FPU 12 Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ�ÑŽÑ‚Ñ�Ñ� Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÐ¼Ñ‹Ð¼)\n"
 
-#: elfxx-mips.c:16002
+#: elfxx-mips.c:16164
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¦ÐŸ, Ð»ÑŽÐ±Ð¾Ð¹ FPU)\n"
 
-#: elfxx-mips.c:16005
+#: elfxx-mips.c:16167
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¦ÐŸ, 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ FPU)\n"
 
-#: elfxx-mips.c:16008
+#: elfxx-mips.c:16170
 #, c-format
 msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
 msgstr "Ð¡Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¦ÐŸ, 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ FPU)\n"
 
-#: elfxx-mips.c:16040
+#: elfxx-mips.c:16202
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:16042
+#: elfxx-mips.c:16204
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:16044
+#: elfxx-mips.c:16206
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:16046
+#: elfxx-mips.c:16208
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:16048
+#: elfxx-mips.c:16210
 #, c-format
 msgid " [abi unknown]"
 msgstr " [abi Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚ÐµÐ½]"
 
-#: elfxx-mips.c:16050
+#: elfxx-mips.c:16212
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:16052
+#: elfxx-mips.c:16214
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:16054
+#: elfxx-mips.c:16216
 #, c-format
 msgid " [no abi set]"
 msgstr " [abi Ð½Ðµ Ð·Ð°Ð´Ð°Ð½]"
 
-#: elfxx-mips.c:16079
+#: elfxx-mips.c:16241
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ISA]"
 
-#: elfxx-mips.c:16099
+#: elfxx-mips.c:16261
 #, c-format
 msgid " [not 32bitmode]"
 msgstr " [Ð½Ðµ 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ñ€ÐµÐ¶Ð¸Ð¼]"
 
-#: elfxx-sparc.c:3113
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5286
+#: elfxx-riscv.c:1063
+#, c-format
+msgid "-march=%s: Expect number after `%dp'."
+msgstr "-march=%s: Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ñ‡Ð¸Ñ�Ð»Ð¾ Ð¿Ð¾Ñ�Ð»Ðµ Â«%dpÂ»."
+
+#: elfxx-riscv.c:1174
+#, c-format
+msgid "-march=%s: rv%de is not a valid base ISA"
+msgstr "-march=%s: rv%de Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð±Ð°Ð·Ð° ISA"
+
+#: elfxx-riscv.c:1214
+#, c-format
+msgid "-march=%s: first ISA subset must be `e', `i' or `g'"
+msgstr "-march=%s: Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ð¿Ð¾Ð´Ð½Ð°Ð±Ð¾Ñ€ ISA Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Â«eÂ», Â«iÂ» Ð¸Ð»Ð¸ Â«gÂ»"
+
+#: elfxx-riscv.c:1242
+#, c-format
+msgid "-march=%s: unsupported ISA subset `%c'"
+msgstr "-march=%s: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð¿Ð¾Ð´Ð½Ð°Ð±Ð¾Ñ€ ISA Â«%cÂ»"
+
+#: elfxx-riscv.c:1245
+#, c-format
+msgid "-march=%s: ISA string is not in canonical order. `%c'"
+msgstr "-march=%s: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð½Ðµ Ð² ÐºÐ°Ð½Ð¾Ð½Ð¸Ñ‡Ð½Ð¾Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐµ. Â«%cÂ»"
+
+#: elfxx-riscv.c:1364
+#, c-format
+msgid "-march=%s: Invalid or unknown %s ISA extension: '%s'"
+msgstr "-march=%s: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¸Ð»Ð¸ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA %s: Â«%sÂ»"
+
+#: elfxx-riscv.c:1375
+#, c-format
+msgid "-march=%s: Duplicate %s ISA extension: '%s'"
+msgstr "-march=%s: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� %s ISA: Â«%sÂ»"
+
+#: elfxx-riscv.c:1386
+#, c-format
+msgid "-march=%s: %s ISA extension not in alphabetical order: '%s' must come before '%s'."
+msgstr "-march=%s: %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Ð½Ðµ Ð² Ð°Ð»Ñ„Ð°Ð²Ð¸Ñ‚Ð½Ð¾Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐµ: Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ð´Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÐ´ Â«%sÂ»."
+
+#: elfxx-riscv.c:1407
+#, c-format
+msgid "-march=%s: %s must separate with _"
+msgstr "-march=%s: %s Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¾Ñ‚Ð´ÐµÐ»Ñ�Ñ‚ÑŒÑ�Ñ� _"
+
+#: elfxx-riscv.c:1523
+#, c-format
+msgid "-march=%s: ISA string must begin with rv32 or rv64"
+msgstr "-march=%s: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð´Ð¾Ð»Ð¶Ð½Ð° Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ‚ÑŒÑ�Ñ� Ñ� rv32 Ð¸Ð»Ð¸ rv64"
+
+#: elfxx-riscv.c:1544
+#, c-format
+msgid "-march=%s: unexpected ISA string at end: %s"
+msgstr "-march=%s: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð² ÐºÐ¾Ð½Ñ†Ðµ: %s"
+
+#: elfxx-riscv.c:1553
+#, c-format
+msgid "-march=%s: rv32e does not support the `f' extension"
+msgstr "-march=%s: rv32e Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«fÂ»"
+
+#: elfxx-riscv.c:1562
+#, c-format
+msgid "-march=%s: `d' extension requires `f' extension"
+msgstr "-march=%s: Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÑŽ Â«dÂ» Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«fÂ»"
+
+#: elfxx-riscv.c:1571
+#, c-format
+msgid "-march=%s: `q' extension requires `d' extension"
+msgstr "-march=%s: Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÑŽ Â«qÂ» Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«dÂ»"
+
+#: elfxx-riscv.c:1579
+#, c-format
+msgid "-march=%s: rv32 does not support the `q' extension"
+msgstr "-march=%s: rv32 Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«qÂ»"
+
+#: elfxx-sparc.c:3002 elfnn-aarch64.c:5530
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð²Ð¼ÐµÑ�Ñ‚Ðµ Ñ� STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ» Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� %s"
 
-#: elfxx-tilegx.c:4254
+#: elfxx-tilegx.c:4128
 #, c-format
 msgid "%pB: cannot link together %s and %s objects"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ %s Ð¸ %s Ð²Ð¼ÐµÑ�Ñ‚Ðµ"
 
-#: elfxx-x86.c:578
+#: elfxx-x86.c:976
 #, c-format
-msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
-msgstr "%P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
+msgid "%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%F%P: %pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾\n"
 
-#: elfxx-x86.c:1027
+#: elfxx-x86.c:1058
 msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
 msgstr "%P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
 
-#: elfxx-x86.c:1383
-msgid "%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC\n"
-msgstr "%P%X: Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�, Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� IFUNC; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC\n"
-
-#: elfxx-x86.c:2384
+#: elfxx-x86.c:2314
 #, c-format
 msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð° x86 (0x%x): 0x%x>"
 
-#: elfxx-x86.c:2609
-msgid "%F%P: failed to create GNU property section\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð² GNU\n"
+#: elfxx-x86.c:2580
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ %s\n"
+
+#: elfxx-x86.c:2582
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ %s\n"
+
+#: elfxx-x86.c:2605
+msgid "IBT and SHSTK properties"
+msgstr "Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð° IBT Ð¸ SHSTK"
+
+#: elfxx-x86.c:2607
+msgid "IBT property"
+msgstr "Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ IBT"
 
-#: elfxx-x86.c:2614
-#, c-format
-msgid "%F%pA: failed to align section\n"
-msgstr "%F%pA: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ñ€Ð¾Ð²Ð½Ñ�Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»\n"
+#: elfxx-x86.c:2609
+msgid "SHSTK property"
+msgstr "Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ SHSTK"
 
-#: elfxx-x86.c:2760
+#: elfxx-x86.c:2753
 msgid "%F%P: failed to create VxWorks dynamic sections\n"
 msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ VxWorks\n"
 
-#: elfxx-x86.c:2769
+#: elfxx-x86.c:2762
 msgid "%F%P: failed to create GOT sections\n"
 msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ GOT\n"
 
-#: elfxx-x86.c:2787
+#: elfxx-x86.c:2780
 msgid "%F%P: failed to create ifunc sections\n"
 msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ ifunc\n"
 
-#: elfxx-x86.c:2828
+#: elfxx-x86.c:2817
 msgid "%F%P: failed to create GOT PLT section\n"
 msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» GOT PLT\n"
 
-#: elfxx-x86.c:2849
+#: elfxx-x86.c:2836
 msgid "%F%P: failed to create IBT-enabled PLT section\n"
 msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT Ñ� Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ IBT\n"
 
-#: elfxx-x86.c:2864
+#: elfxx-x86.c:2850
 msgid "%F%P: failed to create BND PLT section\n"
 msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» BND PLT\n"
 
-#: elfxx-x86.c:2885
+#: elfxx-x86.c:2870
 msgid "%F%P: failed to create PLT .eh_frame section\n"
 msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .eh_frame\n"
 
-#: elfxx-x86.c:2898
+#: elfxx-x86.c:2883
 msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
 msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» GOT PLT .eh_frame\n"
 
-#: elfxx-x86.c:2912
+#: elfxx-x86.c:2897
 msgid "%F%P: failed to create the second PLT .eh_frame section\n"
 msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð²Ñ‚Ð¾Ñ€Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .eh_frame\n"
 
+#: elfxx-x86.c:2939
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr "%X%P: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Â«%pBÂ»\n"
+
 #: ihex.c:230
 #, c-format
 msgid "%pB:%d: unexpected character `%s' in Intel Hex file"
@@ -5096,67 +5388,67 @@ msgstr "%pB:%d: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ
 msgid "%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"
 msgstr "%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ� Ñ�ÑƒÐ¼Ð¼Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ (Ð´Ð¾Ð»Ð¶Ð½Ð° Ð±Ñ‹Ñ‚ÑŒ %u, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð° %u)"
 
-#: ihex.c:394
+#: ihex.c:393
 #, c-format
 msgid "%pB:%u: bad extended address record length in Intel Hex file"
 msgstr "%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ"
 
-#: ihex.c:412
+#: ihex.c:411
 #, c-format
 msgid "%pB:%u: bad extended start address length in Intel Hex file"
 msgstr "%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ"
 
-#: ihex.c:430
+#: ihex.c:429
 #, c-format
 msgid "%pB:%u: bad extended linear address record length in Intel Hex file"
 msgstr "%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ñ�Ð¼Ð¾Ð»Ð¸Ð½ÐµÐ¹Ð½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ"
 
-#: ihex.c:448
+#: ihex.c:447
 #, c-format
 msgid "%pB:%u: bad extended linear start address length in Intel Hex file"
 msgstr "%pB:%u: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ñ�Ð¼Ð¾Ð»Ð¸Ð½ÐµÐ¹Ð½Ð¾Ð³Ð¾ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ"
 
-#: ihex.c:466
+#: ihex.c:465
 #, c-format
 msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
 msgstr "%pB:%u: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ ihex-Ñ‚Ð¸Ð¿ %u Ð² Intel Hex Ñ„Ð°Ð¹Ð»Ðµ"
 
-#: ihex.c:585
+#: ihex.c:581
 #, c-format
 msgid "%pB: internal error in ihex_read_section"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² ihex_read_section"
 
-#: ihex.c:619
+#: ihex.c:614
 #, c-format
 msgid "%pB: bad section length in ihex_read_section"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² ihex_read_section"
 
-#: ihex.c:793
+#: ihex.c:785
 #, c-format
 msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
 msgstr "%pB: 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� %#<PRIx64> Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° Intel Hex Ñ„Ð°Ð¹Ð»Ð°"
 
-#: ihex.c:852
+#: ihex.c:843
 #, c-format
 msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
 msgstr "%pB: Ð°Ð´Ñ€ÐµÑ� %#<PRIx64> Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° Intel Hex Ñ„Ð°Ð¹Ð»Ð°"
 
-#: libbfd.c:937
+#: libbfd.c:884
 #, c-format
 msgid "%pB: unable to get decompressed section %pA"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ñ€Ð°Ñ�Ð¶Ð°Ñ‚Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA"
 
-#: libbfd.c:1101
+#: libbfd.c:1048
 #, c-format
 msgid "Deprecated %s called at %s line %d in %s\n"
 msgstr "Ð’Ñ‹Ð·Ð²Ð°Ð½ Ð½ÐµÑ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ñ‹Ð¹ %s Ñ€Ñ�Ð´Ð¾Ð¼ Ñ� %s Ð² Ñ�Ñ‚Ñ€Ð¾ÐºÐµ %d Ð² %s\n"
 
-#: libbfd.c:1104
+#: libbfd.c:1051
 #, c-format
 msgid "Deprecated %s called\n"
 msgstr "Ð’Ñ‹Ð·Ð²Ð°Ð½ Ð½ÐµÑ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ñ‹Ð¹ %s\n"
 
-#: linker.c:1697
+#: linker.c:1696
 #, c-format
 msgid "%pB: indirect symbol `%s' to `%s' is a loop"
 msgstr "%pB: ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ðº Â«%sÂ» Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚ Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ðµ"
@@ -5166,179 +5458,213 @@ msgstr "%pB: ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²
 msgid "attempt to do relocatable link with %s input and %s output"
 msgstr "Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ð´ÐµÐ»Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ Ñ� Ð²Ñ…Ð¾Ð´Ð¾Ð¼ %s Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð¾Ð¼ %s"
 
-#: linker.c:2853
+#: linker.c:2852
 #, c-format
 msgid "%pB: ignoring duplicate section `%pA'\n"
 msgstr "%pB: Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ»\n"
 
-#: linker.c:2863 linker.c:2873
+#: linker.c:2862 linker.c:2872
 #, c-format
 msgid "%pB: duplicate section `%pA' has different size\n"
 msgstr "%pB: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€\n"
 
-#: linker.c:2882 linker.c:2888
+#: linker.c:2881 linker.c:2887
 #, c-format
 msgid "%pB: could not read contents of section `%pA'\n"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»\n"
 
-#: linker.c:2893
+#: linker.c:2892
 #, c-format
 msgid "%pB: duplicate section `%pA' has different contents\n"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð´Ñ€ÑƒÐ³Ð¾Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ\n"
 
-#: linker.c:3407
+#: linker.c:3404
 #, c-format
 msgid "%pB: compiled for a big endian system and target is little endian"
 msgstr "%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹ Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚, Ð° Ñ†ÐµÐ»ÑŒ Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚"
 
-#: linker.c:3410
+#: linker.c:3407
 #, c-format
 msgid "%pB: compiled for a little endian system and target is big endian"
 msgstr "%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹ Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚, Ð° Ñ†ÐµÐ»ÑŒ Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚"
 
-#: mach-o.c:632
+#: mach-o-arm.c:172
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ� Ð¿Ð°Ñ€Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� mach-o ARM: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð¿ÐµÑ€Ð²Ñ‹Ð¼ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼"
+
+#: mach-o-arm.c:188
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ� Ð¿Ð°Ñ€Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:203
+#, c-format
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:218
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:233
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ half sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:265
+#, c-format
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ vanilla mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %d (pcrel: %d)"
+
+#: mach-o-arm.c:329
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ mach-o ARM: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %d"
+
+#: mach-o.c:633
 #, c-format
 msgid "<unknown mask flags>"
 msgstr "<Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ„Ð»Ð°Ð³Ð¸ Ð¼Ð°Ñ�ÐºÐ¸>"
 
-#: mach-o.c:687
+#: mach-o.c:688
 msgid " (<unknown>)"
 msgstr " (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾)"
 
-#: mach-o.c:698
+#: mach-o.c:699
 #, c-format
 msgid " MACH-O header:\n"
 msgstr " Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Mach-O:\n"
 
-#: mach-o.c:699
+#: mach-o.c:700
 #, c-format
 msgid "   magic:      %#lx\n"
 msgstr "   Ð¾Ñ‚Ð».Ð¿Ñ€Ð¸Ð·Ð½:    %#lx\n"
 
-#: mach-o.c:700
+#: mach-o.c:701
 #, c-format
 msgid "   cputype:    %#lx (%s)\n"
 msgstr "   Ñ‚Ð¸Ð¿ Ð¦ÐŸ:       %#lx (%s)\n"
 
-#: mach-o.c:702
+#: mach-o.c:703
 #, c-format
 msgid "   cpusubtype: %#lx%s\n"
 msgstr "   Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿ Ð¦ÐŸ:    %#lx%s\n"
 
-#: mach-o.c:704
+#: mach-o.c:705
 #, c-format
 msgid "   filetype:   %#lx\n"
 msgstr "   Ñ‚Ð¸Ð¿ Ñ„Ð°Ð¹Ð»Ð°:    %#lx\n"
 
-#: mach-o.c:705
+#: mach-o.c:706
 #, c-format
 msgid "   ncmds:      %#lx\n"
 msgstr "   Ñ‡_ÐºÐ¼Ð½Ð´:       %#lx\n"
 
-#: mach-o.c:706
+#: mach-o.c:707
 #, c-format
 msgid "   sizeocmds:  %#lx\n"
 msgstr "   Ñ€Ð°Ð·Ð¼_ÐºÐ¼Ð½Ð´:    %#lx\n"
 
-#: mach-o.c:707
+#: mach-o.c:708
 #, c-format
 msgid "   flags:      %#lx\n"
 msgstr "   Ñ„Ð»Ð°Ð³Ð¸:        %#lx\n"
 
-#: mach-o.c:708
+#: mach-o.c:709
 #, c-format
 msgid "   version:    %x\n"
 msgstr "   Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ñ�Ð¸Ð¸: %x\n"
 
 #. Urg - what has happened ?
-#: mach-o.c:743
+#: mach-o.c:744
 #, c-format
 msgid "incompatible cputypes in mach-o files: %ld vs %ld"
 msgstr "Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹ Ð¦ÐŸ Ð² Ñ„Ð°Ð¹Ð»Ð°Ñ… mach-o: %ld Ð¸ %ld"
 
-#: mach-o.c:912
+#: mach-o.c:913
 msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
 msgstr "bfd_mach_o_canonicalize_symtab: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹"
 
-#: mach-o.c:2108
+#: mach-o.c:1505
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ mach-o: Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð±Ð¾Ð»ÑŒÑˆÐµ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²"
+
+#: mach-o.c:2139
 msgid "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands."
 msgstr "Ð˜Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ: modtab, toc Ð¸ extrefsyms Ð¿Ð¾ÐºÐ° Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ‹ Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´ dysymtab."
 
-#: mach-o.c:2554
+#: mach-o.c:2587
 #, c-format
 msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
 msgstr "mach-o: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² (%u), Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½Ðµ Ð±Ð¾Ð»ÐµÐµ 255,\n"
 
-#: mach-o.c:2661
+#: mach-o.c:2694
 #, c-format
 msgid "unable to allocate data for load command %#x"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x"
 
-#: mach-o.c:2766
+#: mach-o.c:2799
 #, c-format
 msgid "unable to write unknown load command %#x"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x"
 
-#: mach-o.c:2950
+#: mach-o.c:2983
 #, c-format
 msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
 msgstr "Ð°Ð´Ñ€ÐµÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%#<PRIx64>) Ð¼ÐµÐ½ÑŒÑˆÐµ Ð½Ð°Ñ‡Ð°Ð»Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° (%#<PRIx64>)"
 
-#: mach-o.c:3092
+#: mach-o.c:3125
 #, c-format
 msgid "unable to layout unknown load command %#x"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x"
 
-#: mach-o.c:3628
+#: mach-o.c:3660
 #, c-format
 msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 instead"
 msgstr "bfd_mach_o_read_section_32: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ�: %#lx, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� 32"
 
-#: mach-o.c:3671
+#: mach-o.c:3703
 #, c-format
 msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 instead"
 msgstr "bfd_mach_o_read_section_64: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ�: %#lx, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� 32"
 
-#: mach-o.c:3722
+#: mach-o.c:3754
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
 msgstr "bfd_mach_o_read_symtab_symbol: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ %d Ð±Ð°Ð¹Ñ‚ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %u"
 
-#: mach-o.c:3741
+#: mach-o.c:3773
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
 msgstr "bfd_mach_o_read_symtab_symbol: Ð¸Ð¼Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (%lu >= %u)"
 
-#: mach-o.c:3824
+#: mach-o.c:3856
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d (max %lu): setting to undefined"
 msgstr "bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %d (Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %lu): Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ° Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°"
 
-#: mach-o.c:3843
+#: mach-o.c:3875
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x%x: setting to undefined"
 msgstr "bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ð¾Ð»Ñ� 0x%x: Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ° Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°"
 
-#: mach-o.c:3920
-msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
-msgstr "bfd_mach_o_read_symtab_symbols: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"
-
-#: mach-o.c:4931
+#: mach-o.c:5064
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x"
 
-#: mach-o.c:5122
+#: mach-o.c:5263
 #, c-format
 msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
 msgstr "bfd_mach_o_scan: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lx/0x%lx"
 
-#: mach-o.c:5227
+#: mach-o.c:5385
 #, c-format
 msgid "unknown header byte-order value %#x"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ° Ð±Ð°Ð¹Ñ‚ Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ %#x"
 
-#: merge.c:878
+#: merge.c:895
 #, c-format
 msgid "%pB: access beyond end of merged section (%<PRId64>)"
 msgstr "%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%<PRId64>)"
@@ -5353,122 +5679,122 @@ msgstr "%pB: Ð½ÐµÑ‚ core Ð´Ð»Ñ� Ð²Ñ‹Ð´Ðµ
 msgid "%pB: no core to allocate a symbol %d bytes long"
 msgstr "%pB: Ð½ÐµÑ‚ core Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� %d Ð±Ð°Ð¹Ñ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
 
-#: mmo.c:955
+#: mmo.c:952
 #, c-format
 msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
 msgstr "%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð²Ñ‹Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ 4 (%#<PRIx64>)"
 
-#: mmo.c:1252
+#: mmo.c:1248
 #, c-format
 msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� $255 Ð½Ðµ Ñ€Ð°Ð²Ð½Ð¾ Â«MainÂ»\n"
 
-#: mmo.c:1399
+#: mmo.c:1395
 #, c-format
 msgid "%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
 msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� Ð¿Ð¾Ñ�Ð»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñ�Ñ‚ÑŒ ÑˆÐ¸Ñ€Ð¾ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² 0x%02X 0x%02X Ð¿Ð¾Ñ�Ð»Ðµ Ð¸Ð¼ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ� Ñ� Â«%sÂ»\n"
 
-#: mmo.c:1633
+#: mmo.c:1628
 #, c-format
 msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ lopcode Â«%dÂ»\n"
 
-#: mmo.c:1644
+#: mmo.c:1639
 #, c-format
 msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð´Ð»Ñ� lop_quote Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ YZ = 1, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¾ YZ = %d\n"
 
-#: mmo.c:1682
+#: mmo.c:1679
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð´Ð»Ñ� lop_loc Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ z = 1 Ð¸Ð»Ð¸ z = 2, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¾ z = %d\n"
 
-#: mmo.c:1733
+#: mmo.c:1730
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð´Ð»Ñ� lop_fixo Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ z = 1 Ð¸Ð»Ð¸ z = 2, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¾ z = %d\n"
 
-#: mmo.c:1774
+#: mmo.c:1771
 #, c-format
 msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð´Ð»Ñ� lop_fixrx Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ y = 0, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¾ y = %d\n"
 
-#: mmo.c:1785
+#: mmo.c:1782
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð´Ð»Ñ� lop_fixrx Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ z = 16 Ð¸Ð»Ð¸ z = 24, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¾ z = %d\n"
 
-#: mmo.c:1810
+#: mmo.c:1807
 #, c-format
 msgid "%pB: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð´Ð»Ñ� lop_fixrx Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð±Ð°Ð¹Ñ‚ Ñ�Ð»Ð¾Ð²Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Ñ€Ð°Ð²ÐµÐ½ 0 Ð¸Ð»Ð¸ 1, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¾ %d\n"
 
-#: mmo.c:1835
+#: mmo.c:1832
 #, c-format
 msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð´Ð»Ñ� Ð¸Ð¼ÐµÐ½Ð¸ Ñ„Ð°Ð¹Ð»Ð° Ñ„Ð°Ð¹Ð»Ñƒ Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d, %d Ð±Ð°Ð¹Ñ‚\n"
 
-#: mmo.c:1857
+#: mmo.c:1854
 #, c-format
 msgid "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð° %d Â«%sÂ» Ð±Ñ‹Ð» ÑƒÐ¶Ðµ Ð²Ð²ÐµÐ´Ñ‘Ð½ ÐºÐ°Ðº Â«%sÂ»\n"
 
-#: mmo.c:1871
+#: mmo.c:1868
 #, c-format
 msgid "%pB: invalid mmo file: file name for number %d was not specified before use\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð¸Ð¼Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° %d Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿ÐµÑ€ÐµÐ´ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼\n"
 
-#: mmo.c:1978
+#: mmo.c:1975
 #, c-format
 msgid "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð¿Ð¾Ð»Ñ� y Ð¸ z Ð² lop_stab Ð½Ðµ Ñ€Ð°Ð²Ð½Ñ‹ Ð½ÑƒÐ»ÑŽ, y: %d, z: %d\n"
 
-#: mmo.c:2015
+#: mmo.c:2012
 #, c-format
 msgid "%pB: invalid mmo file: lop_end not last item in file\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: lop_end Ð½Ðµ Ð¿Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¸Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð² Ñ„Ð°Ð¹Ð»Ðµ\n"
 
-#: mmo.c:2029
+#: mmo.c:2026
 #, c-format
 msgid "%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: YZ Ð² lop_end (%ld) Ð½Ðµ Ñ€Ð°Ð²Ð½Ð¾ Ñ‡Ð¸Ñ�Ð»Ñƒ Ñ‚ÐµÑ‚Ñ€Ð°Ð´ Ð² ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¹ Ñ€Ð°Ð½ÐµÐµ lop_stab (%ld)\n"
 
-#: mmo.c:2740
+#: mmo.c:2735
 #, c-format
 msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»\n"
 
-#: mmo.c:2983
+#: mmo.c:2978
 #, c-format
 msgid "%pB: bad symbol definition: `Main' set to %s rather than the start address %s\n"
 msgstr "%pB: Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: Â«MainÂ» Ñ€Ð°Ð²ÐµÐ½ %s, Ð° Ð½Ðµ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %s\n"
 
-#: mmo.c:3082
+#: mmo.c:3077
 #, c-format
 msgid "%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ� Ð´Ð»Ñ� mmo, Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ‡ÐµÐ¼ 65535 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²: %d. Ð‘ÑƒÐ´ÐµÑ‚ Ð²Ñ‹Ð´Ð°Ð½Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Â«MainÂ».\n"
 
-#: mmo.c:3128
+#: mmo.c:3123
 #, c-format
 msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°, Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ñ�Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ� %d Ñ�Ð»Ð¾Ð² Ð´Ð¾ %d\n"
 
-#: mmo.c:3181
+#: mmo.c:3176
 #, c-format
 msgid "%pB: internal error, internal register section %pA had contents\n"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°, Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² %pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð´Ð°Ð½Ð½Ñ‹Ðµ\n"
 
-#: mmo.c:3232
+#: mmo.c:3227
 #, c-format
 msgid "%pB: no initialized registers; section length 0\n"
 msgstr "%pB: Ð½ÐµÑ‚ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²; Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ€Ð°Ð²Ð½Ð° 0\n"
 
-#: mmo.c:3239
+#: mmo.c:3234
 #, c-format
 msgid "%pB: too many initialized registers; section length %<PRId64>"
 msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²; Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ€Ð°Ð²Ð½Ð° %<PRId64>"
 
-#: mmo.c:3244
+#: mmo.c:3239
 #, c-format
 msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð´Ð»Ñ� Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² Ð´Ð»Ð¸Ð½Ñ‹ %<PRId64>: %#<PRIx64>"
@@ -5478,48 +5804,55 @@ msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð½
 msgid "unhandled OSF/1 core file section type %d"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ñ�Ð´Ñ€Ð° OSF/1 Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d"
 
-#: pef.c:527
+#: pdp11.c:1588
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹ (Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�)"
+
+#: pef.c:530
 #, c-format
 msgid "bfd_pef_scan: unknown architecture 0x%lx"
 msgstr "bfd_pef_scan: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lx"
 
-#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220
+#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220 pei-x86_64.c:243
+#: pei-x86_64.c:253 pei-x86_64.c:278 pei-x86_64.c:290 pei-x86_64.c:304
+#: pei-x86_64.c:322 pei-x86_64.c:334 pei-x86_64.c:346
 #, c-format
 msgid "warning: corrupt unwind data\n"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚ÐºÐ¸\n"
 
 #. PR 17512: file: 2245-7442-0.004.
-#: pei-x86_64.c:315
+#: pei-x86_64.c:367
 #, c-format
 msgid "Unknown: %x"
 msgstr "Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾: %x"
 
-#: pei-x86_64.c:365 pei-x86_64.c:375 pei-x86_64.c:384
+#: pei-x86_64.c:418 pei-x86_64.c:428 pei-x86_64.c:437
 #, c-format
 msgid "warning: xdata section corrupt\n"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» xdata\n"
 
-#: pei-x86_64.c:439
+#: pei-x86_64.c:492
 #, c-format
 msgid "Too many unwind codes (%ld)\n"
 msgstr "Ð¡Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ñ�ÐºÑ€Ñ‹Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð° (%ld)\n"
 
-#: pei-x86_64.c:529
+#: pei-x86_64.c:582
 #, c-format
 msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
 msgstr "ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s (%ld) Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ %d\n"
 
-#: pei-x86_64.c:536
+#: pei-x86_64.c:589
 #, c-format
 msgid "Warning: %s section size is zero\n"
 msgstr "ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽ\n"
 
-#: pei-x86_64.c:551
+#: pei-x86_64.c:604
 #, c-format
 msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"
 msgstr "ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s (%ld) Ð¼ÐµÐ½ÑŒÑˆÐµ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° (%ld)\n"
 
-#: pei-x86_64.c:560
+#: pei-x86_64.c:613
 #, c-format
 msgid ""
 "\n"
@@ -5528,12 +5861,12 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ (Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð¾ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s)\n"
 
-#: pei-x86_64.c:563
+#: pei-x86_64.c:616
 #, c-format
 msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
 msgstr "vma:\t\t\tÐ�Ð°Ñ‡ Ð°Ð´Ñ€ÐµÑ�   \t  ÐšÐ¾Ð½ Ð°Ð´Ñ€ÐµÑ�\t   Ð Ð°Ñ�ÐºÑ€ Ð´Ð°Ð½Ð½Ñ‹Ðµ\n"
 
-#: pei-x86_64.c:692
+#: pei-x86_64.c:745
 #, c-format
 msgid ""
 "\n"
@@ -5543,42 +5876,42 @@ msgstr ""
 "Ð”Ð°Ð¼Ð¿ %s\n"
 
 #. XXX code yet to be written.
-#: peicode.h:775
+#: peicode.h:796
 #, c-format
 msgid "%pB: unhandled import type; %x"
 msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x"
 
-#: peicode.h:781
+#: peicode.h:802
 #, c-format
 msgid "%pB: unrecognized import type; %x"
 msgstr "%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x"
 
-#: peicode.h:796
+#: peicode.h:817
 #, c-format
 msgid "%pB: unrecognized import name type; %x"
 msgstr "%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¸Ð¼ÐµÐ½Ð½Ð¾Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x"
 
-#: peicode.h:1211
+#: peicode.h:1225
 #, c-format
 msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
 msgstr "%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ (0x%x) Ð² Ð°Ñ€Ñ…Ð¸Ð²Ðµ Import Library Format"
 
-#: peicode.h:1224
+#: peicode.h:1238
 #, c-format
 msgid "%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive"
 msgstr "%pB: Ñ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½, Ð½Ð¾ Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ (0x%x) Ð² Ð°Ñ€Ñ…Ð¸Ð²Ðµ Import Library Format"
 
-#: peicode.h:1242
+#: peicode.h:1256
 #, c-format
 msgid "%pB: size field is zero in Import Library Format header"
 msgstr "%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿Ð¾Ð»Ñ� Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽ Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Import Library Format"
 
-#: peicode.h:1274
+#: peicode.h:1282
 #, c-format
 msgid "%pB: string not null terminated in ILF object file"
 msgstr "%pB: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ð½Ðµ Ð·Ð°ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð½ÑƒÐ»Ñ‘Ð¼ Ð² Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ ILF"
 
-#: peicode.h:1330
+#: peicode.h:1338
 #, c-format
 msgid "%pB: error: debug data ends beyond end of debug directory"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÐ¾Ð½ÐµÑ† Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð·Ð° Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸ÐµÐ¼ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°"
@@ -5636,32 +5969,32 @@ msgstr "Ð¡ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°[%d]
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr "Ð”Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð°[%d]   = 0x%.8lx (%ld)\n"
 
-#: reloc.c:8232
+#: reloc.c:8291
 msgid "INPUT_SECTION_FLAGS are not supported"
 msgstr "INPUT_SECTION_FLAGS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: reloc.c:8333
+#: reloc.c:8392
 #, c-format
 msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
 msgstr "%X%P: %pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %V\n"
 
-#: reloc.c:8420
+#: reloc.c:8480
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
 msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pRÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
 
-#: reloc.c:8429
+#: reloc.c:8489
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
 msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pRÂ» Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð¸Ð»Ð¾ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %x\n"
 
-#: reloc.c:8491
+#: reloc.c:8551
 #, c-format
 msgid "%pB: unrecognized relocation type %#x in section `%pA'"
 msgstr "%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %#x Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»"
 
 #. PR 21803: Suggest the most likely cause of this error.
-#: reloc.c:8495
+#: reloc.c:8555
 #, c-format
 msgid "is this version of the linker - %s - out of date ?"
 msgstr "Ð´Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° â€” %s â€” ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð°?"
@@ -5671,7 +6004,7 @@ msgstr "Ð´Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� ÐºÐ¾Ð¼
 msgid "%pB: warning core file truncated"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð» core ÑƒÑ�ÐµÑ‡Ñ‘Ð½"
 
-#: som.c:5478
+#: som.c:5497
 #, c-format
 msgid ""
 "\n"
@@ -5680,7 +6013,7 @@ msgstr ""
 "\n"
 "Ð’Ñ�Ð¿Ð¾Ð¼Ð¾Ð³Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Exec\n"
 
-#: som.c:5787
+#: som.c:5806
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½"
 
@@ -5694,7 +6027,7 @@ msgstr "%pB:%d: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ
 msgid "%pB:%d: byte count %d too small"
 msgstr "%pB:%d: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð±Ð°Ð¹Ñ‚ %d Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»"
 
-#: srec.c:581 srec.c:615
+#: srec.c:580 srec.c:614
 #, c-format
 msgid "%pB:%d: bad checksum in S-record file"
 msgstr "%pB:%d: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ� Ñ�ÑƒÐ¼Ð¼Ð° Ð² Ñ„Ð°Ð¹Ð»Ðµ S-record"
@@ -5704,73 +6037,82 @@ msgstr "%pB:%d: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� ÐºÐ¾Ð½Ñ
 msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
 msgstr "%pB(%pA+%#lx): Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ stabs Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸"
 
-#: syms.c:1091
+#: syms.c:1085
 msgid "unsupported .stab relocation"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ .stab"
 
-#: vms-alpha.c:479
+#: vms-alpha.c:480
 msgid "corrupt EIHD record - size is too small"
 msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EIHD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° â€” Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»"
 
-#: vms-alpha.c:660
+#: vms-alpha.c:666
 #, c-format
 msgid "unable to read EIHS record at offset %#x"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EIHS Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %#x"
 
-#: vms-alpha.c:1173
+#: vms-alpha.c:1158
+msgid "record is too small for symbol name length"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð° Ð´Ð»Ñ� Ð´Ð»Ð¸Ð½Ñ‹ Ð¸Ð¼ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
+
+#: vms-alpha.c:1191
 #, c-format
 msgid "corrupt EGSD record: its size (%#x) is too small"
 msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: ÐµÑ‘ Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»"
 
-#: vms-alpha.c:1197
+#: vms-alpha.c:1215
 #, c-format
-msgid "corrupt EGSD record: size (%#x) is larger than remaining space (%#x)"
-msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐ³Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° (%#x)"
+msgid "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐ³Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° (%#x)"
 
-#: vms-alpha.c:1205
+#: vms-alpha.c:1225
 #, c-format
-msgid "corrupt EGSD record: size (%#x) is too small"
-msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»"
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»"
 
-#: vms-alpha.c:1334 vms-alpha.c:1350 vms-alpha.c:1390
+#: vms-alpha.c:1367
 #, c-format
 msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
 msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: ÐµÑ‘ Ð¿Ð¾Ð»Ðµ psindx Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾ (%#lx)"
 
-#: vms-alpha.c:1419
+#: vms-alpha.c:1443
 #, c-format
 msgid "unknown EGSD subtype %d"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿ EGSD %d"
 
-#: vms-alpha.c:1452
+#: vms-alpha.c:1476
 #, c-format
 msgid "stack overflow (%d) in _bfd_vms_push"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ° (%d) Ð² _bfd_vms_push"
 
-#: vms-alpha.c:1465
+#: vms-alpha.c:1490
 msgid "stack underflow in _bfd_vms_pop"
 msgstr "Ð²Ñ‹Ñ…Ð¾Ð´ Ð·Ð° Ð½Ð¸Ð¶Ð½ÑŽÑŽ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ Ñ�Ñ‚ÐµÐºÐ° Ð² _bfd_vms_pop"
 
+#: vms-alpha.c:1564
+#, c-format
+msgid "dst_define_location %u too large"
+msgstr "dst_define_location %u Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ"
+
 #. These names have not yet been added to this switch statement.
-#: vms-alpha.c:1707
+#: vms-alpha.c:1765
 #, c-format
 msgid "unknown ETIR command %d"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� ETIR ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %d"
 
-#: vms-alpha.c:1738
+#: vms-alpha.c:1796
 msgid "corrupt vms value"
 msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ vms Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾"
 
-#: vms-alpha.c:1866
+#: vms-alpha.c:1927
 msgid "corrupt ETIR record encountered"
 msgstr "Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ ETIR"
 
-#: vms-alpha.c:1923
+#: vms-alpha.c:1989
 #, c-format
 msgid "bad section index in %s"
 msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² %s"
 
-#: vms-alpha.c:1936
+#: vms-alpha.c:2003
 #, c-format
 msgid "unsupported STA cmd %s"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ STA cmd %s"
@@ -5780,1468 +6122,1480 @@ msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹
 #. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-alpha.c:2116 vms-alpha.c:2147 vms-alpha.c:2238 vms-alpha.c:2396
+#: vms-alpha.c:2211 vms-alpha.c:2242 vms-alpha.c:2337 vms-alpha.c:2557
 #, c-format
 msgid "%s: not supported"
 msgstr "%s: Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: vms-alpha.c:2122
+#: vms-alpha.c:2217
 #, c-format
 msgid "%s: not implemented"
 msgstr "%s: Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð¾"
 
-#: vms-alpha.c:2380
+#: vms-alpha.c:2382 vms-alpha.c:2397
+#, c-format
+msgid "invalid %s"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ %s"
+
+#. Divide by zero is supposed to give a result of zero,
+#. and a non-fatal warning message.
+#: vms-alpha.c:2457
+#, c-format
+msgid "%s divide by zero"
+msgstr "%s Ð´ÐµÐ»Ð¸Ñ‚Ñ�Ñ� Ð½Ð° Ð½Ð¾Ð»ÑŒ"
+
+#: vms-alpha.c:2523
 #, c-format
 msgid "invalid use of %s with contexts"
 msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ %s Ñ� ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð°Ð¼Ð¸"
 
-#: vms-alpha.c:2414
+#: vms-alpha.c:2581
 #, c-format
 msgid "reserved cmd %d"
 msgstr "Ð·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¹ cmd %d"
 
-#: vms-alpha.c:2498
+#: vms-alpha.c:2665
 msgid "corrupt EEOM record - size is too small"
 msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EEOM Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° â€” Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»"
 
-#: vms-alpha.c:2507
+#: vms-alpha.c:2674
 msgid "object module not error-free !"
 msgstr "Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ Ð�Ð• error-free !"
 
-#: vms-alpha.c:3831
+#: vms-alpha.c:4001
 #, c-format
 msgid "SEC_RELOC with no relocs in section %pA"
 msgstr "SEC_RELOC Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA"
 
-#: vms-alpha.c:3883 vms-alpha.c:4097
+#: vms-alpha.c:4053 vms-alpha.c:4268
 #, c-format
 msgid "size error in section %pA"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA"
 
-#: vms-alpha.c:4043
+#: vms-alpha.c:4213
 msgid "spurious ALPHA_R_BSR reloc"
 msgstr "Ð½ÐµÑ‚Ð¸Ð¿Ð¸Ñ‡Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ALPHA_R_BSR"
 
-#: vms-alpha.c:4084
+#: vms-alpha.c:4254
 #, c-format
 msgid "unhandled relocation %s"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s"
 
-#: vms-alpha.c:4377
+#: vms-alpha.c:4551
 #, c-format
 msgid "unknown source command %d"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¸Ñ�Ñ…Ð¾Ð´Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %d"
 
-#: vms-alpha.c:4438 vms-alpha.c:4444 vms-alpha.c:4450 vms-alpha.c:4456
-#: vms-alpha.c:4462 vms-alpha.c:4489 vms-alpha.c:4495 vms-alpha.c:4501
-#: vms-alpha.c:4507
+#: vms-alpha.c:4612 vms-alpha.c:4618 vms-alpha.c:4624 vms-alpha.c:4630
+#: vms-alpha.c:4636 vms-alpha.c:4663 vms-alpha.c:4669 vms-alpha.c:4675
+#: vms-alpha.c:4681
 #, c-format
 msgid "%s not implemented"
 msgstr "%s Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð¾"
 
-#: vms-alpha.c:4550
+#: vms-alpha.c:4724
 #, c-format
 msgid "unknown line command %d"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ %d"
 
-#: vms-alpha.c:5010 vms-alpha.c:5028 vms-alpha.c:5043 vms-alpha.c:5059
-#: vms-alpha.c:5072 vms-alpha.c:5084 vms-alpha.c:5097
+#: vms-alpha.c:5188 vms-alpha.c:5206 vms-alpha.c:5221 vms-alpha.c:5237
+#: vms-alpha.c:5250 vms-alpha.c:5262 vms-alpha.c:5275
 #, c-format
 msgid "unknown reloc %s + %s"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s + %s"
 
-#: vms-alpha.c:5152
+#: vms-alpha.c:5330
 #, c-format
 msgid "unknown reloc %s"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s"
 
-#: vms-alpha.c:5166
+#: vms-alpha.c:5344
 msgid "invalid section index in ETIR"
 msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² ETIR"
 
-#: vms-alpha.c:5175
+#: vms-alpha.c:5353
 msgid "relocation for non-REL psect"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½Ðµ-REL psect"
 
-#: vms-alpha.c:5222
+#: vms-alpha.c:5402
 #, c-format
 msgid "unknown symbol in command %s"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ðµ %s"
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:5816
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) *Ð�Ð•Ð˜Ð—Ð’Ð•Ð¡Ð¢Ð�Ðž*"
 
-#: vms-alpha.c:5752
+#: vms-alpha.c:5932
 #, c-format
 msgid "  EMH %u (len=%u): "
 msgstr "  EMH %u (len=%u): "
 
-#: vms-alpha.c:5757
+#: vms-alpha.c:5937
 #, c-format
 msgid "   Error: The length is less than the length of an EMH record\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð¼ÐµÐ½ÑŒÑˆÐµ Ð´Ð»Ð¸Ð½Ñ‹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EMH\n"
 
-#: vms-alpha.c:5774
+#: vms-alpha.c:5954
 #, c-format
 msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð¼ÐµÐ½ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EMH_MHD\n"
 
-#: vms-alpha.c:5777
+#: vms-alpha.c:5957
 #, c-format
 msgid "Module header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:5958
 #, c-format
 msgid "   structure level: %u\n"
 msgstr "   ÑƒÑ€Ð¾Ð²ÐµÐ½ÑŒ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ñ‹  : %u\n"
 
-#: vms-alpha.c:5779
+#: vms-alpha.c:5959
 #, c-format
 msgid "   max record size: %u\n"
 msgstr "   Ð¼Ð°ÐºÑ�. Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð°Ð¿Ð¸Ñ�Ð¸: %u\n"
 
-#: vms-alpha.c:5785
+#: vms-alpha.c:5965
 #, c-format
 msgid "   Error: The module name is missing\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¸Ð¼Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5791
+#: vms-alpha.c:5971
 #, c-format
 msgid "   Error: The module name is too long\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð¸Ð¼Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5794
+#: vms-alpha.c:5974
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�         : %.*s\n"
 
-#: vms-alpha.c:5798
+#: vms-alpha.c:5978
 #, c-format
 msgid "   Error: The module version is missing\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5804
+#: vms-alpha.c:5984
 #, c-format
 msgid "   Error: The module version is too long\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð´Ð»Ð¸Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5807
+#: vms-alpha.c:5987
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�      : %.*s\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:5990
 #, c-format
 msgid "   Error: The compile date is truncated\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ñ€ÐµÐ·Ð°Ð½Ð° Ð´Ð°Ñ‚Ð° ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ†Ð¸Ð¸\n"
 
-#: vms-alpha.c:5812
+#: vms-alpha.c:5992
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr "   Ð´Ð°Ñ‚Ð° ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ†Ð¸Ð¸    : %.17s\n"
 
-#: vms-alpha.c:5817
+#: vms-alpha.c:5997
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Ð�Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ð¾Ð³Ð¾ Ñ�Ð·Ñ‹ÐºÐ°\n"
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:5998
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñ�Ð·Ñ‹ÐºÐ°     : %.*s\n"
 
-#: vms-alpha.c:5822
+#: vms-alpha.c:6002
 #, c-format
 msgid "Source Files Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¸Ñ�Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð²\n"
 
-#: vms-alpha.c:5823
+#: vms-alpha.c:6003
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   Ñ„Ð°Ð¹Ð»: %.*s\n"
 
-#: vms-alpha.c:5827
+#: vms-alpha.c:6007
 #, c-format
 msgid "Title Text Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ� Ñ‚ÐµÐºÑ�Ñ‚Ð°\n"
 
-#: vms-alpha.c:5828
+#: vms-alpha.c:6008
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ : %.*s\n"
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6012
 #, c-format
 msgid "Copyright Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÐºÐ¾Ð³Ð¾ Ð¿Ñ€Ð°Ð²Ð°\n"
 
-#: vms-alpha.c:5833
+#: vms-alpha.c:6013
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÐºÐ¾Ðµ Ð¿Ñ€Ð°Ð²Ð¾: %.*s\n"
 
-#: vms-alpha.c:5837
+#: vms-alpha.c:6017
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿ emh %u\n"
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6027
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (len=%u):\n"
 
-#: vms-alpha.c:5852
+#: vms-alpha.c:6032
 #, c-format
 msgid "   Error: The length is less than the length of an EEOM record\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð¼ÐµÐ½ÑŒÑˆÐµ Ð´Ð»Ð¸Ð½Ñ‹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EEOM\n"
 
-#: vms-alpha.c:5856
+#: vms-alpha.c:6036
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr "   ÐºÐ¾Ð»-Ð²Ð¾ ÑƒÑ�Ð»Ð¾Ð²Ð½Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… Ð¿Ð°Ñ€: %u\n"
 
-#: vms-alpha.c:5858
+#: vms-alpha.c:6038
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ñ‹Ð¹ ÐºÐ¾Ð´: %u\n"
 
-#: vms-alpha.c:5862
+#: vms-alpha.c:6042
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ flags: 0x%02x\n"
 
-#: vms-alpha.c:5863
+#: vms-alpha.c:6043
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ psect: %u\n"
 
-#: vms-alpha.c:5865
+#: vms-alpha.c:6045
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸   : 0x%08x\n"
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:6054
 msgid " WEAK"
 msgstr " WEAK"
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:6056
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5878
+#: vms-alpha.c:6058
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5880 vms-alpha.c:5901
+#: vms-alpha.c:6060 vms-alpha.c:6081
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:6062
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5884
+#: vms-alpha.c:6064
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5886
+#: vms-alpha.c:6066
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6068
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:6075
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5897
+#: vms-alpha.c:6077
 msgid " LIB"
 msgstr " LIB"
 
-#: vms-alpha.c:5899
+#: vms-alpha.c:6079
 msgid " OVR"
 msgstr " OVR"
 
-#: vms-alpha.c:5903
+#: vms-alpha.c:6083
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5905
+#: vms-alpha.c:6085
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:6087
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:6089
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5911
+#: vms-alpha.c:6091
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5913
+#: vms-alpha.c:6093
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6095
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5917
+#: vms-alpha.c:6097
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:6099
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5928
+#: vms-alpha.c:6108
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (len=%u):\n"
 
-#: vms-alpha.c:5941
+#: vms-alpha.c:6121
 #, c-format
 msgid "  EGSD entry %2u (type: %u, len: %u): "
 msgstr "  Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD %2u (Ñ‚Ð¸Ð¿: %u, Ð´Ð»Ð¸Ð½Ð°: %u): "
 
-#: vms-alpha.c:5947 vms-alpha.c:6198
+#: vms-alpha.c:6127 vms-alpha.c:6378
 #, c-format
 msgid "   Error: length larger than remaining space in record\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐ³Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° Ð² Ð·Ð°Ð¿Ð¸Ñ�Ð¸\n"
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6139
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr "PSC - Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°\n"
 
-#: vms-alpha.c:5960 vms-alpha.c:5977
+#: vms-alpha.c:6140 vms-alpha.c:6157
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ  : 2**%u\n"
 
-#: vms-alpha.c:5961 vms-alpha.c:5978
+#: vms-alpha.c:6141 vms-alpha.c:6158
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr "   Ñ„Ð»Ð°Ð³Ð¸      : 0x%04x"
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6145
 #, c-format
 msgid "   alloc (len): %u (0x%08x)\n"
 msgstr "   alloc (len): %u (0x%08x)\n"
 
-#: vms-alpha.c:5966 vms-alpha.c:6023 vms-alpha.c:6072
+#: vms-alpha.c:6146 vms-alpha.c:6203 vms-alpha.c:6252
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ�       : %.*s\n"
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6156
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr "SPSC â€” Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ð°\n"
 
-#: vms-alpha.c:5982
+#: vms-alpha.c:6162
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr "   alloc (len)   : %u (0x%08x)\n"
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6163
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¾Ð±Ñ€Ð°Ð·Ð° : 0x%08x\n"
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6165
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ symvec: 0x%08x\n"
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6167
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ�          : %.*s\n"
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6180
 #, c-format
 msgid "SYM - Global symbol definition\n"
 msgstr "SYM - Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²\n"
 
-#: vms-alpha.c:6001 vms-alpha.c:6061 vms-alpha.c:6082 vms-alpha.c:6101
+#: vms-alpha.c:6181 vms-alpha.c:6241 vms-alpha.c:6262 vms-alpha.c:6281
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr "   Ñ„Ð»Ð°Ð³Ð¸: 0x%04x"
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6184
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ psect: 0x%08x\n"
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6188
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ� ÐºÐ¾Ð´Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6190
 #, c-format
 msgid "   psect index for entry point : %u\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� psect Ð´Ð»Ñ� Ñ‚Ð¾Ñ‡ÐºÐ¸ Ð²Ñ…Ð¾Ð´Ð°: %u\n"
 
-#: vms-alpha.c:6013 vms-alpha.c:6089 vms-alpha.c:6108
+#: vms-alpha.c:6193 vms-alpha.c:6269 vms-alpha.c:6288
 #, c-format
 msgid "   psect index : %u\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� psect: %u\n"
 
-#: vms-alpha.c:6015 vms-alpha.c:6091 vms-alpha.c:6110
+#: vms-alpha.c:6195 vms-alpha.c:6271 vms-alpha.c:6290
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ�        : %.*s\n"
 
-#: vms-alpha.c:6022
+#: vms-alpha.c:6202
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM - Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²\n"
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6214
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr "IDC - Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ° Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° Ñ†ÐµÐ»Ð¾Ñ�Ñ‚Ð½Ð¾Ñ�Ñ‚Ð¸\n"
 
-#: vms-alpha.c:6035
+#: vms-alpha.c:6215
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr "   Ñ„Ð»Ð°Ð³Ð¸         : 0x%08x"
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6219
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   id Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²Ð¸Ñ� : %x\n"
 
-#: vms-alpha.c:6041
+#: vms-alpha.c:6221
 #, c-format
 msgid "   error severity: %x\n"
 msgstr "   Ñ�ÐµÑ€ÑŒÑ‘Ð·Ð½Ð¾Ñ�Ñ‚ÑŒ Ð¾ÑˆÐ¸Ð±ÐºÐ¸: %x\n"
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6224
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸: %.*s\n"
 
-#: vms-alpha.c:6046
+#: vms-alpha.c:6226
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°: %.*s\n"
 
-#: vms-alpha.c:6049
+#: vms-alpha.c:6229
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ð¹ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€: 0x%08x\n"
 
-#: vms-alpha.c:6052
+#: vms-alpha.c:6232
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   ascii-Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€: %.*s\n"
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6240
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG - Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²\n"
 
-#: vms-alpha.c:6064
+#: vms-alpha.c:6244
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6246
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr "   Ñ‚Ð¾Ñ‡ÐºÐ° Ð²Ñ…Ð¾Ð´Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6068
+#: vms-alpha.c:6248
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   proc descr : 0x%08x\n"
 
-#: vms-alpha.c:6070
+#: vms-alpha.c:6250
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� psect: %u\n"
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6261
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV - Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²\n"
 
-#: vms-alpha.c:6085
+#: vms-alpha.c:6265
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   Ð²ÐµÐºÑ‚Ð¾Ñ€      : 0x%08x\n"
 
-#: vms-alpha.c:6087 vms-alpha.c:6106
+#: vms-alpha.c:6267 vms-alpha.c:6286
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ psect: %u\n"
 
-#: vms-alpha.c:6100
+#: vms-alpha.c:6280
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr "SYMM - Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ñ� Ð²ÐµÑ€Ñ�Ð¸ÐµÐ¹\n"
 
-#: vms-alpha.c:6104
+#: vms-alpha.c:6284
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr "   Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ñ�Ð¸Ð¸: 0x%08x\n"
 
-#: vms-alpha.c:6115
+#: vms-alpha.c:6295
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ egsd-Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð¸Ð¿Ð° %u\n"
 
-#: vms-alpha.c:6150
+#: vms-alpha.c:6330
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr "    Ð¸Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, Ð·Ð°Ð¼ÐµÐ½Ð¸Ñ‚ÐµÐ»ÑŒ insn: 0x%08x\n"
 
-#: vms-alpha.c:6154
+#: vms-alpha.c:6334
 #, c-format
 msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
 msgstr "    1-Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� psect: %u, 1-Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%08x %08x\n"
 
-#: vms-alpha.c:6159
+#: vms-alpha.c:6339
 #, c-format
 msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
 msgstr "    2-Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� psect: %u, 2-Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%08x %08x\n"
 
-#: vms-alpha.c:6165
+#: vms-alpha.c:6345
 #, c-format
 msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
 msgstr "    3-Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� psect: %u, 3-Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%08x %08x\n"
 
-#: vms-alpha.c:6170
+#: vms-alpha.c:6350
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "    Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ðµ Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:6181
+#: vms-alpha.c:6361
 #, c-format
 msgid "  %s (len=%u+%u):\n"
 msgstr "  %s (len=%u+%u):\n"
 
-#: vms-alpha.c:6203
+#: vms-alpha.c:6383
 #, c-format
 msgid "   (type: %3u, size: 4+%3u): "
 msgstr "   (Ñ‚Ð¸Ð¿: %3u, Ñ€Ð°Ð·Ð¼ÐµÑ€: 4+%3u): "
 
-#: vms-alpha.c:6207
+#: vms-alpha.c:6387
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr "STA_GBL (Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ñ‚ÐµÐº) %.*s\n"
 
-#: vms-alpha.c:6211
+#: vms-alpha.c:6391
 #, c-format
 msgid "STA_LW (stack longword) 0x%08x\n"
 msgstr "STA_LW (Ñ�Ñ‚ÐµÐº Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²) 0x%08x\n"
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6395
 #, c-format
 msgid "STA_QW (stack quadword) 0x%08x %08x\n"
 msgstr "STA_QW (Ñ�Ñ‚ÐµÐº Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²) 0x%08x %08x\n"
 
-#: vms-alpha.c:6220
+#: vms-alpha.c:6400
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr "STA_PQ (Ñ�Ñ‚ÐµÐº psect Ð±Ð°Ð·Ð° + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6222
+#: vms-alpha.c:6402
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr "    psect: %u, Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%08x %08x\n"
 
-#: vms-alpha.c:6228
+#: vms-alpha.c:6408
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr "STA_LI (Ñ�Ñ‚ÐµÐº Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»Ð°)\n"
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6411
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr "STA_MOD (Ñ�Ñ‚ÐµÐº Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹)\n"
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6414
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr "STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹ Ñ�Ñ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6238
+#: vms-alpha.c:6418
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ñ‹Ð¹ Ð±Ð°Ð¹Ñ‚)\n"
 
-#: vms-alpha.c:6241
+#: vms-alpha.c:6421
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾)\n"
 
-#: vms-alpha.c:6244
+#: vms-alpha.c:6424
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾)\n"
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6427
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ‡ÐµÑ‚Ð²ÐµÑ€Ñ‘Ð½Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾)\n"
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6433
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr "STO_IMMR (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ñ‹Ð¹ Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€) %u Ð±Ð°Ð¹Ñ‚\n"
 
-#: vms-alpha.c:6260
+#: vms-alpha.c:6440
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ�) %.*s\n"
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6444
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr "STO_CA (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� ÐºÐ¾Ð´Ð°) %.*s\n"
 
-#: vms-alpha.c:6268
+#: vms-alpha.c:6448
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr "STO_RB (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6271
+#: vms-alpha.c:6451
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr "STO_AB (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6274
+#: vms-alpha.c:6454
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr "STO_OFF (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½Ð° psect)\n"
 
-#: vms-alpha.c:6280
+#: vms-alpha.c:6460
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr "STO_IMM (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ� Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾) %u Ð±Ð°Ð¹Ñ‚\n"
 
-#: vms-alpha.c:6287
+#: vms-alpha.c:6467
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr "STO_GBL_LW (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ðµ Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾) %.*s\n"
 
-#: vms-alpha.c:6291
+#: vms-alpha.c:6471
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr "STO_OFF (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ñ‹Ð¹ LP Ñ� Ñ�Ð¸Ð³Ð½Ð°Ñ‚ÑƒÑ€Ð¾Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹)\n"
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6474
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr "STO_BR_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ) *todo*\n"
 
-#: vms-alpha.c:6297
+#: vms-alpha.c:6477
 #, c-format
 msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
 msgstr "STO_BR_PS (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ psect + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ) *todo*\n"
 
-#: vms-alpha.c:6301
+#: vms-alpha.c:6481
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr "OPR_NOP (Ð½ÐµÑ‚ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸)\n"
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6484
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr "OPR_ADD (Ñ�Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6307
+#: vms-alpha.c:6487
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr "OPR_SUB (Ð²Ñ‹Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6310
+#: vms-alpha.c:6490
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (ÑƒÐ¼Ð½Ð¾Ð¶ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6313
+#: vms-alpha.c:6493
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (Ð´ÐµÐ»ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6316
+#: vms-alpha.c:6496
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr "OPR_AND (Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¸)\n"
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6499
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr "OPR_IOR (Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð²ÐºÐ»ÑŽÑ‡Ð°ÑŽÑ‰ÐµÐµ Ð¸Ð»Ð¸)\n"
 
-#: vms-alpha.c:6322
+#: vms-alpha.c:6502
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr "OPR_EOR (Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡Ð°ÑŽÑ‰ÐµÐµ Ð¸Ð»Ð¸)\n"
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6505
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (Ð¸Ð½Ð²ÐµÑ€Ñ�Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6508
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6511
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (Ð¿Ð¾Ð»Ðµ Ð²Ñ�Ñ‚Ð°Ð²ÐºÐ¸)\n"
 
-#: vms-alpha.c:6334
+#: vms-alpha.c:6514
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð´Ð²Ð¸Ð³)\n"
 
-#: vms-alpha.c:6337
+#: vms-alpha.c:6517
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (Ð±ÐµÐ·Ð·Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¹ Ñ�Ð´Ð²Ð¸Ð³)\n"
 
-#: vms-alpha.c:6340
+#: vms-alpha.c:6520
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (Ñ†Ð¸ÐºÐ»Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð´Ð²Ð¸Ð³)\n"
 
-#: vms-alpha.c:6343
+#: vms-alpha.c:6523
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (Ð²Ñ‹Ð±Ð¾Ñ€)\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6526
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr "OPR_REDEF (Ð¿ÐµÑ€ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð² Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸)\n"
 
-#: vms-alpha.c:6349
+#: vms-alpha.c:6529
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr "OPR_REDEF (Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»Ð°)\n"
 
-#: vms-alpha.c:6353
+#: vms-alpha.c:6533
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr "STC_LP (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ� ÑƒÑ�Ð»Ð¾Ð²Ð½Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ð°Ñ� Ð¿Ð°Ñ€Ð°)\n"
 
-#: vms-alpha.c:6357
+#: vms-alpha.c:6537
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr "STC_LP_PSB (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ� ÑƒÑ�Ð»Ð¾Ð²Ð½Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ð°Ñ� Ð¿Ð°Ñ€Ð° + Ñ�Ð¸Ð³Ð½Ð°Ñ‚ÑƒÑ€Ð°)\n"
 
-#: vms-alpha.c:6359
+#: vms-alpha.c:6539
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°: %.*s\n"
 
-#: vms-alpha.c:6362
+#: vms-alpha.c:6542
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   Ñ�Ð¸Ð³Ð½Ð°Ñ‚ÑƒÑ€Ð°: %.*s\n"
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6545
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6367
+#: vms-alpha.c:6547
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹: %.*s\n"
 
-#: vms-alpha.c:6371
+#: vms-alpha.c:6551
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr "STC_GCA (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� ÑƒÑ�Ð»Ð¾Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð°)\n"
 
-#: vms-alpha.c:6373
+#: vms-alpha.c:6553
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, Ð¸Ð¼Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹: %.*s\n"
 
-#: vms-alpha.c:6377
+#: vms-alpha.c:6557
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr "STC_PS (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ psect + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6380
+#: vms-alpha.c:6560
 #, c-format
 msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, psect: %u, Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%08x %08x\n"
 
-#: vms-alpha.c:6387
+#: vms-alpha.c:6567
 #, c-format
 msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
 msgstr "STC_NOP_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ NOP Ð¿Ð¾ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ)\n"
 
-#: vms-alpha.c:6391
+#: vms-alpha.c:6571
 #, c-format
 msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
 msgstr "STC_NOP_PS (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ NOP Ð¿Ð¾ psect + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6395
+#: vms-alpha.c:6575
 #, c-format
 msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
 msgstr "STC_BSR_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ BSR Ð¿Ð¾ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ)\n"
 
-#: vms-alpha.c:6399
+#: vms-alpha.c:6579
 #, c-format
 msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
 msgstr "STC_BSR_PS (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ BSR Ð¿Ð¾ psect + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6403
+#: vms-alpha.c:6583
 #, c-format
 msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
 msgstr "STC_LDA_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ LDA Ð¿Ð¾ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ)\n"
 
-#: vms-alpha.c:6407
+#: vms-alpha.c:6587
 #, c-format
 msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
 msgstr "STC_LDA_PS (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ LDA Ð¿Ð¾ psect + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6411
+#: vms-alpha.c:6591
 #, c-format
 msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
 msgstr "STC_BOH_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ BOH Ð¿Ð¾ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ)\n"
 
-#: vms-alpha.c:6415
+#: vms-alpha.c:6595
 #, c-format
 msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
 msgstr "STC_BOH_PS (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ BOH Ð¿Ð¾ psect + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6420
+#: vms-alpha.c:6600
 #, c-format
 msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
 msgstr "STC_NBH_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ Ð¸Ð»Ð¸ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ðµ Ð¿Ð¾ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ)\n"
 
-#: vms-alpha.c:6424
+#: vms-alpha.c:6604
 #, c-format
 msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
 msgstr "STC_NBH_PS (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ Ð¸Ð»Ð¸ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ðµ Ð¿Ð¾ psect + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6428
+#: vms-alpha.c:6608
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr "CTL_SETRB (ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ° Ð±Ð°Ð·Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6434
+#: vms-alpha.c:6614
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr "CTL_AUGRB (Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð±Ð°Ð·Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�) %u\n"
 
-#: vms-alpha.c:6438
+#: vms-alpha.c:6618
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6441
+#: vms-alpha.c:6621
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (Ð·Ð°Ð´Ð°Ð½Ð¸Ðµ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6444
+#: vms-alpha.c:6624
 #, c-format
 msgid "CTL_STKDL (stack defined location)\n"
 msgstr "CTL_STKDL (Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�ÐµÐ¼Ð¾Ðµ Ñ�Ñ‚ÐµÐºÐ¾Ð¼)\n"
 
-#: vms-alpha.c:6447 vms-alpha.c:6871 vms-alpha.c:6997
+#: vms-alpha.c:6627 vms-alpha.c:7051 vms-alpha.c:7177
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð¾*\n"
 
-#: vms-alpha.c:6477 vms-alpha.c:6516
+#: vms-alpha.c:6657 vms-alpha.c:6696
 #, c-format
 msgid "cannot read GST record length\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð´Ð»Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6498
+#: vms-alpha.c:6678
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ EMH Ð² Ð¿ÐµÑ€Ð²Ð¾Ð¹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST\n"
 
-#: vms-alpha.c:6524
+#: vms-alpha.c:6704
 #, c-format
 msgid "cannot read GST record header\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST\n"
 
-#: vms-alpha.c:6537
+#: vms-alpha.c:6717
 #, c-format
 msgid " corrupted GST\n"
 msgstr " Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ GST\n"
 
-#: vms-alpha.c:6545
+#: vms-alpha.c:6725
 #, c-format
 msgid "cannot read GST record\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�ÑŒ GST\n"
 
-#: vms-alpha.c:6574
+#: vms-alpha.c:6754
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr " Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EOBJ %u\n"
 
-#: vms-alpha.c:6598
+#: vms-alpha.c:6778
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr "  Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð±Ð¸Ñ‚: %u, Ð±Ð°Ð·Ð¾Ð²Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x\n"
 
-#: vms-alpha.c:6612
+#: vms-alpha.c:6792
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr "   bitmap: 0x%08x (Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº: %u):\n"
 
-#: vms-alpha.c:6619
+#: vms-alpha.c:6799
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6645
+#: vms-alpha.c:6825
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr "  Ð¾Ð±Ñ€Ð°Ð· %u (%u Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²)\n"
 
-#: vms-alpha.c:6651
+#: vms-alpha.c:6831
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%08x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: 0x%08x\n"
 
-#: vms-alpha.c:6673
+#: vms-alpha.c:6853
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr "  Ð¾Ð±Ñ€Ð°Ð· %u (%u Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²), Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�:\n"
 
-#: vms-alpha.c:6680
+#: vms-alpha.c:6860
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6802
+#: vms-alpha.c:6982
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr "64 Ð±Ð¸Ñ‚Ð° *Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð¾*\n"
 
-#: vms-alpha.c:6807
+#: vms-alpha.c:6987
 #, c-format
 msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
 msgstr "ÐºÐ»Ð°Ñ�Ñ�: %u, dtype: %u, Ð´Ð»Ð¸Ð½Ð°: %u, ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ: 0x%08x\n"
 
-#: vms-alpha.c:6818
+#: vms-alpha.c:6998
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr "Ð½ÐµÑ�Ð²Ñ�Ð·Ð½Ñ‹Ð¹ Ð¼Ð°Ñ�Ñ�Ð¸Ð² %s\n"
 
-#: vms-alpha.c:6823
+#: vms-alpha.c:7003
 #, c-format
 msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
 msgstr "dimct: %u, aflags: 0x%02x, Ñ†Ð¸Ñ„Ñ€: %u, ÑˆÐºÐ°Ð»Ð°: %u\n"
 
-#: vms-alpha.c:6828
+#: vms-alpha.c:7008
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr "arsize: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6832
+#: vms-alpha.c:7012
 #, c-format
 msgid "Strides:\n"
 msgstr "Ð¨Ð°Ð³Ð¸:\n"
 
-#: vms-alpha.c:6842
+#: vms-alpha.c:7022
 #, c-format
 msgid "Bounds:\n"
 msgstr "Ð“Ñ€Ð°Ð½Ð¸Ñ†Ñ‹:\n"
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7028
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr "[%u]: Ð½Ð¸Ð¶Ð½Ñ�Ñ�: %u, Ð²ÐµÑ€Ñ…Ð½Ñ�Ñ�: %u\n"
 
-#: vms-alpha.c:6860
+#: vms-alpha.c:7040
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr "Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ð±Ð¸Ñ‚ %s\n"
 
-#: vms-alpha.c:6865
+#: vms-alpha.c:7045
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "Ð±Ð°Ð·Ð°: %u, Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ�: %u\n"
 
-#: vms-alpha.c:6886
+#: vms-alpha.c:7066
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr "vflags: 0x%02x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: 0x%08x "
 
-#: vms-alpha.c:6892
+#: vms-alpha.c:7072
 #, c-format
 msgid "(no value)\n"
 msgstr "(Ð½ÐµÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6895
+#: vms-alpha.c:7075
 #, c-format
 msgid "(not active)\n"
 msgstr "(Ð½Ðµ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾)\n"
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7078
 #, c-format
 msgid "(not allocated)\n"
 msgstr "(Ð½Ðµ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¾)\n"
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7081
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€)\n"
 
-#: vms-alpha.c:6905
+#: vms-alpha.c:7085
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7088
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(Ð´Ð°Ð»ÐµÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸)\n"
 
-#: vms-alpha.c:6911
+#: vms-alpha.c:7091
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr "(Ð¿Ð¾ Ð±Ð¸Ñ‚Ð¾Ð²Ð¾Ð¼Ñƒ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %u)\n"
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7095
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr "(reg: %u, disp: %u, indir: %u, kind: "
 
-#: vms-alpha.c:6922
+#: vms-alpha.c:7102
 msgid "literal"
 msgstr "Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»"
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7105
 msgid "address"
 msgstr "Ð°Ð´Ñ€ÐµÑ�"
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7108
 msgid "desc"
 msgstr "Ð¾Ð¿Ð¸Ñ�"
 
-#: vms-alpha.c:6931
+#: vms-alpha.c:7111
 msgid "reg"
 msgstr "Ñ€ÐµÐ³"
 
-#: vms-alpha.c:6948
+#: vms-alpha.c:7128
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr "len: %2u, kind: %2u "
 
-#: vms-alpha.c:6954
+#: vms-alpha.c:7134
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr "Ð°Ñ‚Ð¾Ð¼Ð°Ñ€Ð½Ð¾, Ñ‚Ð¸Ð¿=0x%02x %s\n"
 
-#: vms-alpha.c:6958
+#: vms-alpha.c:7138
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr "ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¾ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x\n"
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7142
 #, c-format
 msgid "typed pointer\n"
 msgstr "Ñ‚Ð¸Ð¿Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ\n"
 
-#: vms-alpha.c:6966
+#: vms-alpha.c:7146
 #, c-format
 msgid "pointer\n"
 msgstr "ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ\n"
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7154
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr "Ð¼Ð°Ñ�Ñ�Ð¸Ð², Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, bitmap: "
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7161
 #, c-format
 msgid "array descriptor:\n"
 msgstr "Ð¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÑŒ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð°:\n"
 
-#: vms-alpha.c:6988
+#: vms-alpha.c:7168
 #, c-format
 msgid "type spec for element:\n"
 msgstr "Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ� Ñ‚Ð¸Ð¿Ð° Ð´Ð»Ñ� Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð°:\n"
 
-#: vms-alpha.c:6990
+#: vms-alpha.c:7170
 #, c-format
 msgid "type spec for subscript %u:\n"
 msgstr "Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ� Ñ‚Ð¸Ð¿Ð° Ð´Ð»Ñ� subscript %u:\n"
 
-#: vms-alpha.c:7008
+#: vms-alpha.c:7188
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸:\n"
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7199
 #, c-format
 msgid "cannot read DST header\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº DST\n"
 
-#: vms-alpha.c:7025
+#: vms-alpha.c:7205
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr " Ñ‚Ð¸Ð¿: %3u, Ð´Ð»Ð¸Ð½Ð°: %3u (Ð¿Ð¾ 0x%08x): "
 
-#: vms-alpha.c:7039
+#: vms-alpha.c:7219
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð» DST\n"
 
-#: vms-alpha.c:7082
+#: vms-alpha.c:7262
 #, c-format
 msgid "standard data: %s\n"
 msgstr "Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ: %s\n"
 
-#: vms-alpha.c:7085 vms-alpha.c:7173
+#: vms-alpha.c:7265 vms-alpha.c:7353
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7092
+#: vms-alpha.c:7272
 #, c-format
 msgid "modbeg\n"
 msgstr "modbeg\n"
 
-#: vms-alpha.c:7094
+#: vms-alpha.c:7274
 #, c-format
 msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
 msgstr "   Ñ„Ð»Ð°Ð³Ð¸: %d, Ñ�Ð·Ñ‹Ðº: %u, Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u\n"
 
-#: vms-alpha.c:7100 vms-alpha.c:7374
+#: vms-alpha.c:7280 vms-alpha.c:7554
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr "   Ð¸Ð¼Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�: %.*s\n"
 
-#: vms-alpha.c:7103
+#: vms-alpha.c:7283
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ‚Ð¾Ñ€   : %.*s\n"
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7288
 #, c-format
 msgid "modend\n"
 msgstr "modend\n"
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7295
 msgid "rtnbeg\n"
 msgstr "rtnbeg\n"
 
-#: vms-alpha.c:7117
+#: vms-alpha.c:7297
 #, c-format
 msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
 msgstr "    Ñ„Ð»Ð°Ð³Ð¸: %u, Ð°Ð´Ñ€ÐµÑ�: 0x%08x, pd-Ð°Ð´Ñ€ÐµÑ�: 0x%08x\n"
 
-#: vms-alpha.c:7122
+#: vms-alpha.c:7302
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr "    Ð¸Ð¼Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹: %.*s\n"
 
-#: vms-alpha.c:7130
+#: vms-alpha.c:7310
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr "rtnend: Ñ€Ð°Ð·Ð¼ÐµÑ€ 0x%08x\n"
 
-#: vms-alpha.c:7138
+#: vms-alpha.c:7318
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr "Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð°Ð´Ñ€ÐµÑ� bkpt 0x%08x\n"
 
-#: vms-alpha.c:7147
+#: vms-alpha.c:7327
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr "Ñ�Ð¿Ð¸Ð»Ð¾Ð³: Ñ„Ð»Ð°Ð³Ð¸: %u, Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº: %u\n"
 
-#: vms-alpha.c:7157
+#: vms-alpha.c:7337
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr "blkbeg: Ð°Ð´Ñ€ÐµÑ�: 0x%08x, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7166
+#: vms-alpha.c:7346
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr "blkend: Ñ€Ð°Ð·Ð¼ÐµÑ€: 0x%08x\n"
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7352
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "typspec (Ð´Ð»Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7359
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr "septyp, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7368
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr "recbeg: Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7370
 #, c-format
 msgid "    len: %u bits\n"
 msgstr "    Ð´Ð»Ð¸Ð½Ð°: %u Ð±Ð¸Ñ‚\n"
 
-#: vms-alpha.c:7195
+#: vms-alpha.c:7375
 #, c-format
 msgid "recend\n"
 msgstr "recend\n"
 
-#: vms-alpha.c:7199
+#: vms-alpha.c:7379
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr "enumbeg, Ð´Ð»Ð¸Ð½Ð°: %u, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7203
+#: vms-alpha.c:7383
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr "enumelt, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7387
 #, c-format
 msgid "enumend\n"
 msgstr "enumend\n"
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7392
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr "Ð¼ÐµÑ‚ÐºÐ°, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7394
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�: 0x%08x\n"
 
-#: vms-alpha.c:7224
+#: vms-alpha.c:7404
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "Ð½ÐµÑ�Ð¼ÐµÐ¶Ð½Ñ‹Ð¹ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ (nbr: %u)\n"
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7407
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    Ð°Ð´Ñ€ÐµÑ�: 0x%08x, Ñ€Ð°Ð·Ð¼ÐµÑ€: %u\n"
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7417
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ (Ð´Ð»Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7434
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:7261
+#: vms-alpha.c:7441
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:7267
+#: vms-alpha.c:7447
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7273
+#: vms-alpha.c:7453
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7279
+#: vms-alpha.c:7459
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7284
+#: vms-alpha.c:7464
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7289
+#: vms-alpha.c:7469
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7294
+#: vms-alpha.c:7474
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7478
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7483
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7485
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7310
+#: vms-alpha.c:7490
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7312
+#: vms-alpha.c:7492
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7318
+#: vms-alpha.c:7498
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "delta pc +%-4d"
 
-#: vms-alpha.c:7322
+#: vms-alpha.c:7502
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x Ñ�Ñ‚Ñ€Ð¾ÐºÐ°: %5u\n"
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7507
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ�* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u\n"
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7522
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "Ð¸Ñ�Ñ‚Ð¾Ñ‡Ð½Ð¸Ðº (Ð´Ð»Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7537
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
 msgstr "   declfile: Ð´Ð»Ð¸Ð½Ð°: %u, Ñ„Ð»Ð°Ð³Ð¸: %u, fileid: %u\n"
 
-#: vms-alpha.c:7362
+#: vms-alpha.c:7542
 #, c-format
 msgid "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 msgstr "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 
-#: vms-alpha.c:7371
+#: vms-alpha.c:7551
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ� Ñ„Ð°Ð¹Ð»Ð°   : %.*s\n"
 
-#: vms-alpha.c:7380
+#: vms-alpha.c:7560
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7385 vms-alpha.c:7390
+#: vms-alpha.c:7565 vms-alpha.c:7570
 #, c-format
 msgid "   setrec %u\n"
 msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7395 vms-alpha.c:7400
+#: vms-alpha.c:7575 vms-alpha.c:7580
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7405 vms-alpha.c:7410
+#: vms-alpha.c:7585 vms-alpha.c:7590
 #, c-format
 msgid "   deflines %u\n"
 msgstr "   deflines %u\n"
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:7594
 #, c-format
 msgid "   formfeed\n"
 msgstr "   formfeed\n"
 
-#: vms-alpha.c:7418
+#: vms-alpha.c:7598
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ�* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u\n"
 
-#: vms-alpha.c:7430
+#: vms-alpha.c:7610
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "*Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹* Ñ‚Ð¸Ð¿ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� %u\n"
 
-#: vms-alpha.c:7462
+#: vms-alpha.c:7642
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ EIHD\n"
 
-#: vms-alpha.c:7466
+#: vms-alpha.c:7646
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr "EIHD: (Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, nbr Ð±Ð»Ð¾ÐºÐ¾Ð²: %u)\n"
 
-#: vms-alpha.c:7470
+#: vms-alpha.c:7650
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " majorid: %u, minorid: %u\n"
 
-#: vms-alpha.c:7478
+#: vms-alpha.c:7658
 msgid "executable"
 msgstr "Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:7661
 msgid "linkable image"
 msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ð¹ Ð¾Ð±Ñ€Ð°Ð·"
 
-#: vms-alpha.c:7488
+#: vms-alpha.c:7668
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " Ñ‚Ð¸Ð¿ Ð¾Ð±Ñ€Ð°Ð·Ð°: %u (%s)"
 
-#: vms-alpha.c:7494
+#: vms-alpha.c:7674
 msgid "native"
 msgstr "Ñ€Ð¾Ð´Ð½Ð¾Ð¹"
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:7677
 msgid "CLI"
 msgstr "CLI"
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:7684
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿: %u (%s)\n"
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:7691
 #, c-format
 msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 msgstr " Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 
-#: vms-alpha.c:7515
+#: vms-alpha.c:7695
 #, c-format
 msgid " fixup info rva: "
 msgstr " fixup info rva: "
 
-#: vms-alpha.c:7517
+#: vms-alpha.c:7697
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð²ÐµÐºÑ‚Ð¾Ñ€ rva: "
 
-#: vms-alpha.c:7520
+#: vms-alpha.c:7700
 #, c-format
 msgid ""
 "\n"
@@ -7250,474 +7604,474 @@ msgstr ""
 "\n"
 " Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð° Ð²ÐµÑ€Ñ�Ð¸Ð¹: %u\n"
 
-#: vms-alpha.c:7525
+#: vms-alpha.c:7705
 #, c-format
 msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
 msgstr " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
 
-#: vms-alpha.c:7531
+#: vms-alpha.c:7711
 #, c-format
 msgid " linker flags: %08x:"
 msgstr " Ñ„Ð»Ð°Ð³Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ°: %08x:"
 
-#: vms-alpha.c:7562
+#: vms-alpha.c:7742
 #, c-format
 msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 msgstr " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 
-#: vms-alpha.c:7568
+#: vms-alpha.c:7748
 #, c-format
 msgid " BPAGE: %u"
 msgstr " BPAGE: %u"
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:7755
 #, c-format
 msgid ", ext fixup offset: %u, no_opt psect off: %u"
 msgstr ", ext fixup offset: %u, no_opt psect off: %u"
 
-#: vms-alpha.c:7578
+#: vms-alpha.c:7758
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", Ð¿Ñ�ÐµÐ²Ð´Ð¾Ð½Ð¸Ð¼: %u\n"
 
-#: vms-alpha.c:7586
+#: vms-alpha.c:7766
 #, c-format
 msgid "system version array information:\n"
 msgstr "Ð¼Ð°Ñ�Ñ�Ð¸Ð² Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹:\n"
 
-#: vms-alpha.c:7590
+#: vms-alpha.c:7770
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº EIHVN\n"
 
-#: vms-alpha.c:7600
+#: vms-alpha.c:7780
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð²ÐµÑ€Ñ�Ð¸ÑŽ EIHVN\n"
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:7783
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:7787
 msgid "BASE_IMAGE       "
 msgstr "BASE_IMAGE       "
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:7790
 msgid "MEMORY_MANAGEMENT"
 msgstr "MEMORY_MANAGEMENT"
 
-#: vms-alpha.c:7613
+#: vms-alpha.c:7793
 msgid "IO               "
 msgstr "IO               "
 
-#: vms-alpha.c:7616
+#: vms-alpha.c:7796
 msgid "FILES_VOLUMES    "
 msgstr "FILES_VOLUMES    "
 
-#: vms-alpha.c:7619
+#: vms-alpha.c:7799
 msgid "PROCESS_SCHED    "
 msgstr "PROCESS_SCHED    "
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:7802
 msgid "SYSGEN           "
 msgstr "SYSGEN           "
 
-#: vms-alpha.c:7625
+#: vms-alpha.c:7805
 msgid "CLUSTERS_LOCKMGR "
 msgstr "CLUSTERS_LOCKMGR "
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:7808
 msgid "LOGICAL_NAMES    "
 msgstr "LOGICAL_NAMES    "
 
-#: vms-alpha.c:7631
+#: vms-alpha.c:7811
 msgid "SECURITY         "
 msgstr "SECURITY         "
 
-#: vms-alpha.c:7634
+#: vms-alpha.c:7814
 msgid "IMAGE_ACTIVATOR  "
 msgstr "IMAGE_ACTIVATOR  "
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:7817
 msgid "NETWORKS         "
 msgstr "NETWORKS         "
 
-#: vms-alpha.c:7640
+#: vms-alpha.c:7820
 msgid "COUNTERS         "
 msgstr "COUNTERS         "
 
-#: vms-alpha.c:7643
+#: vms-alpha.c:7823
 msgid "STABLE           "
 msgstr "STABLE           "
 
-#: vms-alpha.c:7646
+#: vms-alpha.c:7826
 msgid "MISC             "
 msgstr "MISC             "
 
-#: vms-alpha.c:7649
+#: vms-alpha.c:7829
 msgid "CPU              "
 msgstr "CPU              "
 
-#: vms-alpha.c:7652
+#: vms-alpha.c:7832
 msgid "VOLATILE         "
 msgstr "VOLATILE         "
 
-#: vms-alpha.c:7655
+#: vms-alpha.c:7835
 msgid "SHELL            "
 msgstr "SHELL            "
 
-#: vms-alpha.c:7658
+#: vms-alpha.c:7838
 msgid "POSIX            "
 msgstr "POSIX            "
 
-#: vms-alpha.c:7661
+#: vms-alpha.c:7841
 msgid "MULTI_PROCESSING "
 msgstr "MULTI_PROCESSING "
 
-#: vms-alpha.c:7664
+#: vms-alpha.c:7844
 msgid "GALAXY           "
 msgstr "GALAXY           "
 
-#: vms-alpha.c:7667
+#: vms-alpha.c:7847
 msgid "*unknown*        "
 msgstr "*Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾*        "
 
-#: vms-alpha.c:7683 vms-alpha.c:7958
+#: vms-alpha.c:7863 vms-alpha.c:8137
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ EIHA\n"
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:7866
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr "Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°:  (Ñ€Ð°Ð·Ð¼ÐµÑ€=%u)\n"
 
-#: vms-alpha.c:7689
+#: vms-alpha.c:7869
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr " ÐŸÐµÑ€Ð²Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7693
+#: vms-alpha.c:7873
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr " Ð’Ñ‚Ð¾Ñ€Ð¾Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7697
+#: vms-alpha.c:7877
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr " Ð¢Ñ€ÐµÑ‚Ð¸Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7701
+#: vms-alpha.c:7881
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr " Ð§ÐµÑ‚Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7705
+#: vms-alpha.c:7885
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr " ÐžÐ±Ñ‰Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7716
+#: vms-alpha.c:7896
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ EIHI\n"
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:7900
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr "Ð˜Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u)\n"
 
-#: vms-alpha.c:7723
+#: vms-alpha.c:7903
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr " Ð¸Ð¼Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°       : %.*s\n"
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:7905
 #, c-format
 msgid " link time        : %s\n"
 msgstr " Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ : %s\n"
 
-#: vms-alpha.c:7727
+#: vms-alpha.c:7907
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " Ð¸Ð´ÐµÐ½Ñ‚-Ñ€ Ð¾Ð±Ñ€Ð°Ð·Ð°      : %.*s\n"
 
-#: vms-alpha.c:7729
+#: vms-alpha.c:7909
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " Ð¸Ð´ÐµÐ½Ñ‚-Ñ€ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ°: %.*s\n"
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:7911
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr " Ð¸Ð´ÐµÐ½Ñ‚-Ñ€ Ñ�Ð±Ð¾Ñ€ÐºÐ¸ Ð¾Ð±Ñ€Ð°Ð·Ð°: %.*s\n"
 
-#: vms-alpha.c:7741
+#: vms-alpha.c:7921
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ EIHS\n"
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:7925
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² & Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u)\n"
 
-#: vms-alpha.c:7751
+#: vms-alpha.c:7931
 #, c-format
 msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
 msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: vbn: %u, Ñ€Ð°Ð·Ð¼ÐµÑ€: %u (0x%x)\n"
 
-#: vms-alpha.c:7756
+#: vms-alpha.c:7936
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr " Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: vbn: %u, Ð·Ð°Ð¿Ð¸Ñ�ÐµÐ¹: %u\n"
 
-#: vms-alpha.c:7761
+#: vms-alpha.c:7941
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹: vbn: %u, Ñ€Ð°Ð·Ð¼ÐµÑ€: %u\n"
 
-#: vms-alpha.c:7774
+#: vms-alpha.c:7954
 #, c-format
 msgid "cannot read EISD\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ EISD\n"
 
-#: vms-alpha.c:7785
+#: vms-alpha.c:7965
 #, c-format
 msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
 msgstr "Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u, Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: %u)\n"
 
-#: vms-alpha.c:7793
+#: vms-alpha.c:7973
 #, c-format
 msgid " section: base: 0x%08x%08x size: 0x%08x\n"
 msgstr " Ñ€Ð°Ð·Ð´ÐµÐ»: Ð±Ð°Ð·Ð°: 0x%08x%08x Ñ€Ð°Ð·Ð¼ÐµÑ€: 0x%08x\n"
 
-#: vms-alpha.c:7798
+#: vms-alpha.c:7978
 #, c-format
 msgid " flags: 0x%04x"
 msgstr " Ñ„Ð»Ð°Ð³Ð¸: 0x%04x"
 
-#: vms-alpha.c:7836
+#: vms-alpha.c:8016
 #, c-format
 msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 msgstr " vbn: %u, pfc: %u, matchctl: %u Ñ‚Ð¸Ð¿: %u ("
 
-#: vms-alpha.c:7842
+#: vms-alpha.c:8022
 msgid "NORMAL"
 msgstr "NORMAL"
 
-#: vms-alpha.c:7845
+#: vms-alpha.c:8025
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:8028
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7851
+#: vms-alpha.c:8031
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7854
+#: vms-alpha.c:8034
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7857
+#: vms-alpha.c:8037
 msgid "USRSTACK"
 msgstr "USRSTACK"
 
-#: vms-alpha.c:7863
+#: vms-alpha.c:8043
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7866
+#: vms-alpha.c:8046
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " Ð¸Ð´ÐµÐ½-Ñ€: 0x%08x, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7876
+#: vms-alpha.c:8056
 #, c-format
 msgid "cannot read DMT\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ DMT\n"
 
-#: vms-alpha.c:7880
+#: vms-alpha.c:8060
 #, c-format
 msgid "Debug module table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹:\n"
 
-#: vms-alpha.c:7889
+#: vms-alpha.c:8069
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº DMT\n"
 
-#: vms-alpha.c:7895
+#: vms-alpha.c:8075
 #, c-format
 msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
 msgstr " Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¼Ð¾Ð´ÑƒÐ»Ñ�: 0x%08x, Ñ€Ð°Ð·Ð¼ÐµÑ€: 0x%08x, (%u psects)\n"
 
-#: vms-alpha.c:7905
+#: vms-alpha.c:8085
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ DMT psect\n"
 
-#: vms-alpha.c:7909
+#: vms-alpha.c:8089
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr "  Ð½Ð°Ñ‡Ð°Ð»Ð¾ psect: 0x%08x, Ð´Ð»Ð¸Ð½Ð°: %u\n"
 
-#: vms-alpha.c:7922
+#: vms-alpha.c:8102
 #, c-format
 msgid "cannot read DST\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ DST\n"
 
-#: vms-alpha.c:7932
+#: vms-alpha.c:8112
 #, c-format
 msgid "cannot read GST\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ GST\n"
 
-#: vms-alpha.c:7936
+#: vms-alpha.c:8116
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²:\n"
 
-#: vms-alpha.c:7965
+#: vms-alpha.c:8143
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr "Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ‚Ð¾Ñ€ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u)\n"
 
-#: vms-alpha.c:7969
+#: vms-alpha.c:8147
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr "  iaflink : 0x%08x %08x\n"
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8151
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr "  fixuplnk: 0x%08x %08x\n"
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8154
 #, c-format
 msgid "  size : %u\n"
 msgstr "  Ñ€Ð°Ð·Ð¼ÐµÑ€: %u\n"
 
-#: vms-alpha.c:7978
+#: vms-alpha.c:8156
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr "  Ñ„Ð»Ð°Ð³Ð¸: 0x%08x\n"
 
-#: vms-alpha.c:7983
+#: vms-alpha.c:8161
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7988
+#: vms-alpha.c:8166
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8171
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8174
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:8000
+#: vms-alpha.c:8178
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:8003
+#: vms-alpha.c:8181
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8184
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:8008
+#: vms-alpha.c:8186
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:8016
+#: vms-alpha.c:8194
 #, c-format
 msgid " Shareable images:\n"
 msgstr " ÐžÐ±Ñ‰Ð¸Ðµ Ð¾Ð±Ñ€Ð°Ð·Ñ‹:\n"
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8199
 #, c-format
 msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
 msgstr "  %u: Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, Ñ„Ð»Ð°Ð³Ð¸: 0x%02x, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:8028
+#: vms-alpha.c:8206
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr " Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ñ‹Ñ… Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹:\n"
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8211
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr " Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ñ‹Ñ… Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹:\n"
 
-#: vms-alpha.c:8038
+#: vms-alpha.c:8216
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr " Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾ Ñ�Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ .address:\n"
 
-#: vms-alpha.c:8043
+#: vms-alpha.c:8221
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr " Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾ Ñ�Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ .address:\n"
 
-#: vms-alpha.c:8048
+#: vms-alpha.c:8226
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr " Ð¡Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ðµ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð°Ð´Ñ€ÐµÑ�Ð° ÐºÐ¾Ð´Ð°:\n"
 
-#: vms-alpha.c:8053
+#: vms-alpha.c:8231
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr " Ð¡Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ðµ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… Ð¿Ð°Ñ€:\n"
 
-#: vms-alpha.c:8062
+#: vms-alpha.c:8240
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ (%u Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²):\n"
 
-#: vms-alpha.c:8068
+#: vms-alpha.c:8246
 #, c-format
 msgid "  base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "
 msgstr "  Ð±Ð°Ð·Ð°: 0x%08x %08x, Ñ€Ð°Ð·Ð¼ÐµÑ€: 0x%08x, prot: 0x%08x "
 
 #. FIXME: we do not yet support relocatable link.  It is not obvious
 #. how to do it for debug infos.
-#: vms-alpha.c:8908
+#: vms-alpha.c:9123
 msgid "%P: relocatable link is not supported\n"
 msgstr "%P: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
 
-#: vms-alpha.c:8979
+#: vms-alpha.c:9194
 #, c-format
 msgid "%P: multiple entry points: in modules %pB and %pB\n"
 msgstr "%P: Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ñ‚Ð¾Ñ‡ÐµÐº Ð²Ñ…Ð¾Ð´Ð°: Ð² Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… %pB Ð¸ %pB\n"
 
-#: vms-lib.c:1445
+#: vms-lib.c:1525
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð· Â«%sÂ» Ð¸Ð· Â«%sÂ»"
 
-#: vms-misc.c:361
+#: vms-misc.c:367
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr "Ð’Ñ‹Ð·Ð¾Ð² _bfd_vms_output_counted Ñ� Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾Ð¼ Ð±Ð°Ð¹Ñ‚"
 
-#: vms-misc.c:366
+#: vms-misc.c:372
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "Ð’Ñ‹Ð·Ð¾Ð² _bfd_vms_output_counted Ñ�Ð¾ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾Ð¼ Ð±Ð°Ð¹Ñ‚"
 
@@ -7731,172 +8085,209 @@ msgstr "%pB: Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚ XCO
 msgid "%pB: dynamic object with no .loader section"
 msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚ Ð±ÐµÐ· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .loader"
 
-#: xcofflink.c:1413
+#: xcofflink.c:1417
 #, c-format
 msgid "%pB: `%s' has line numbers but no enclosing section"
 msgstr "%pB: Â«%sÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾Ðº, Ð½Ð¾ Ð² Ð¾Ð±Ñ€Ð°Ð¼Ð»Ñ�ÑŽÑ‰ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ"
 
-#: xcofflink.c:1466
+#: xcofflink.c:1470
 #, c-format
 msgid "%pB: class %d symbol `%s' has no aux entries"
 msgstr "%pB: ÐºÐ»Ð°Ñ�Ñ� %d Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² aux"
 
-#: xcofflink.c:1489
+#: xcofflink.c:1493
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized csect type %d"
 msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ csect: %d"
 
-#: xcofflink.c:1502
+#: xcofflink.c:1506
 #, c-format
 msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
 msgstr "%pB: Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» XTY_ER Â«%sÂ»: ÐºÐ»Ð°Ñ�Ñ� %d scnum %d scnlen %<PRId64>"
 
-#: xcofflink.c:1533
+#: xcofflink.c:1537
 #, c-format
 msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
 msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» XMC_TC0 Â«%sÂ» Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð¾Ð¼ %d scnlen %<PRId64>"
 
-#: xcofflink.c:1680
+#: xcofflink.c:1684
 #, c-format
 msgid "%pB: csect `%s' not in enclosing section"
 msgstr "%pB: csect Â«%sÂ» Ð½Ðµ Ð² Ð¾Ð±Ñ€Ð°Ð¼Ð»Ñ�ÑŽÑ‰ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ"
 
-#: xcofflink.c:1788
+#: xcofflink.c:1792
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¹ XTY_LD Â«%sÂ»"
 
-#: xcofflink.c:2109
+#: xcofflink.c:2113
 #, c-format
 msgid "%pB: reloc %s:%<PRId64> not in csect"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s:%<PRId64> Ð½Ðµ Ð² csect"
 
-#: xcofflink.c:3196
+#: xcofflink.c:3193
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: Ð½ÐµÑ‚ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
 
-#: xcofflink.c:3301
+#: xcofflink.c:3298
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
 
-#: xcofflink.c:3680
+#: xcofflink.c:3677
 msgid "error: undefined symbol __rtinit"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» __rtinit"
 
-#: xcofflink.c:4060
+#: xcofflink.c:4055
 #, c-format
 msgid "%pB: loader reloc in unrecognized section `%s'"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ° Ð² Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%sÂ»"
 
-#: xcofflink.c:4072
+#: xcofflink.c:4067
 #, c-format
 msgid "%pB: `%s' in loader reloc but not loader sym"
 msgstr "%pB: Â«%sÂ» Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ°, Ð½Ð¾ Ð½Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ°"
 
-#: xcofflink.c:4089
+#: xcofflink.c:4084
 #, c-format
 msgid "%pB: loader reloc in read-only section %pA"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�"
 
-#: xcofflink.c:5113
+#: xcofflink.c:5112
 #, c-format
 msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ TOC: %<PRIx64> > 0x10000; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� -mminimal-toc"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5031
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2872
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»: 0x%02x"
+
+#: elfnn-aarch64.c:5246
 #, c-format
 msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 835769 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5112
+#: elfnn-aarch64.c:5338
 #, c-format
 msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 843419 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5641
+#: elfnn-aarch64.c:5351
+msgid "%pB: error: erratum 843419 immediate 0x%"
+msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 843419 Ð² 0x%"
+
+#: elfnn-aarch64.c:5899
 #, c-format
 msgid "%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ», ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ñ€Ð¸Ð²Ñ�Ð·Ð°Ð½ Ð¸Ð·Ð²Ð½Ðµ, Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5732
+#: elfnn-aarch64.c:5990
 #, c-format
 msgid "%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol"
 msgstr "%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð±ÑƒÐ´ÐµÑ‚ Ñ€Ð°Ð²Ð½Ð° NULL, ÐµÑ�Ð»Ð¸ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6830
+#: elfnn-aarch64.c:6103 elfnn-aarch64.c:6140
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS %s Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
+
+#: elfnn-aarch64.c:7125
 msgid "too many GOT entries for -fpic, please recompile with -fPIC"
 msgstr "Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² GOT Ð´Ð»Ñ� -fpic: Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIC"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6858
+#: elfnn-aarch64.c:7153
 msgid "one possible cause of this error is that the symbol is being referenced in the indicated code as if it had a larger alignment than was declared where it was defined"
 msgstr "Ð¾Ð´Ð½Ð¾Ð¹ Ð¸Ð· Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ñ… Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ Ñ�Ñ‚Ð¾Ð¹ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾, Ñ‡Ñ‚Ð¾ Ð² ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼ ÐºÐ¾Ð´Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ñ� Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸ÐµÐ¼, Ñ‡ÐµÐ¼ Ð±Ñ‹Ð»Ð¾ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¾ Ð² ÐµÐ³Ð¾ Ð¼ÐµÑ�Ñ‚Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ�"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7443
+#: elfnn-aarch64.c:7720
 #, c-format
 msgid "%pB: relocation %s against `%s' can not be used when making a shared object"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:182
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:217
+#: elfnn-riscv.c:187 elfnn-riscv.c:222
 #, c-format
 msgid "%pB: warning: RVE PLT generation not supported"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� RVE PLT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2311
+#: elfnn-riscv.c:1977
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pcrel_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼"
+
+#: elfnn-riscv.c:2198
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC\n"
+
+#: elfnn-riscv.c:2208
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%%X%%P: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»\n"
+
+#: elfnn-riscv.c:2247
 msgid "%X%P: internal error: out of range error\n"
 msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2315
+#: elfnn-riscv.c:2252
 msgid "%X%P: internal error: unsupported relocation error\n"
 msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2325
+#: elfnn-riscv.c:2258
+msgid "dangerous relocation error"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
+
+#: elfnn-riscv.c:2264
 msgid "%X%P: internal error: unknown error\n"
 msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2711
+#: elfnn-riscv.c:2630
 #, c-format
-msgid "error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%d"
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ ISA Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� Â«%sÂ». %d.%d vs %d.%d"
+msgid "error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%d"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ ISA Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� Â«%sÂ». %d.%d Ð¸ %d.%d"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2729
+#: elfnn-riscv.c:2648
 #, c-format
-msgid "error: %pB: corrupted ISA string '%s'.first letter should be 'i' or 'e' but got '%s'."
+msgid "error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but got '%s'."
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Â«%sÂ». ÐŸÐµÑ€Ð²Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Â«iÂ» Ð¸Ð»Ð¸ Â«eÂ», Ð½Ð¾ Ð¸Ð¼ÐµÐµÐ¼ Â«%sÂ»."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2773
+#: elfnn-riscv.c:2692
 #, c-format
 msgid "error: %pB: Mis-matched ISA string to merge '%s' and '%s'."
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ ISA Ð´Ð»Ñ� Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� Â«%sÂ» Ð¸ Â«%sÂ»."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2921
+#: elfnn-riscv.c:2893
 #, c-format
 msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)."
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA (%s) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ (%s)."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2946
+#: elfnn-riscv.c:2913
 #, c-format
 msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)."
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: XLEN Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… (%u) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ð¼Ð¸ (%u)."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2954
+#: elfnn-riscv.c:2921
 #, c-format
-msgid "error: %pB: Unspported XLEN (%u), you mightusing wrong emulation."
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ XLEN (%u), Ð²Ñ‹Ñ€Ð¾Ñ�Ñ‚Ð½Ð¾, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ñ�."
+msgid "error: %pB: Unsupported XLEN (%u), you might be using wrong emulation."
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ XLEN (%u), Ð²ÐµÑ€Ð¾Ñ�Ñ‚Ð½Ð¾, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ñ�."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3039
+#: elfnn-riscv.c:3035
 #, c-format
-msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� priv spec (Ñ�Ñ‚Ð°Ñ€ÑˆÐ°Ñ�/Ð¼Ð»Ð°Ð´ÑˆÐ°Ñ�/Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ)."
+msgid "warning: %pB use privilege spec version %u.%u.%u but the output use version %u.%u.%u."
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½ÑƒÑŽ Ð²ÐµÑ€Ñ�Ð¸ÑŽ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ %u.%u.%u, Ð½Ð¾ Ð´Ð»Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %u.%u.%u."
+
+#: elfnn-riscv.c:3053
+msgid "warning: privilege spec version 1.9.1 can not be linked with other spec versions."
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ 1.9.1 Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ� Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ñ�Ð¼Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¹."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3055
+#: elfnn-riscv.c:3081
 #, c-format
 msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned."
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°, Ð½Ð¾ Ð´Ð»Ñ� Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð° Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3096
+#: elfnn-riscv.c:3122
 #, c-format
 msgid ""
 "%pB: ABI is incompatible with that of the selected emulation:\n"
@@ -7905,111 +8296,111 @@ msgstr ""
 "%pB: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ð¸:\n"
 "  Ñ†ÐµÐ»ÑŒ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Â«%sÂ»"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3119
+#: elfnn-riscv.c:3176
 #, c-format
 msgid "%pB: can't link %s modules with %s modules"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3129
+#: elfnn-riscv.c:3186
 #, c-format
 msgid "%pB: can't link RVE with other target"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ RVE Ñ� Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ†ÐµÐ»ÑŒÑŽ"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3630
+#: elfnn-riscv.c:3724
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-byte boundary, but only %<PRId64> present"
 msgstr "%pB(%pA+%#<PRIx64>): Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� %<PRId64> Ð±Ð°Ð¹Ñ‚ Ð´Ð»Ñ� Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ� Ð¿Ð¾ %<PRId64>-Ð±Ð°Ð¹Ñ‚Ð½Ð¾Ð¹ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ, Ð½Ð¾ ÐµÑ�Ñ‚ÑŒ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ %<PRId64>"
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
+#: peXXigen.c:164
 #, c-format
 msgid "%pB: unable to find name for empty section"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¸Ð¼Ñ� Ð¿ÑƒÑ�Ñ‚Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
 
-#: peigen.c:183 pepigen.c:183 pex64igen.c:183
+#: peXXigen.c:191
 #, c-format
 msgid "%pB: out of memory creating name for empty section"
 msgstr "%pB: Ð½Ðµ Ñ…Ð²Ð°Ñ‚Ð°ÐµÑ‚ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð¸Ð¼ÐµÐ½Ð¸ Ð¿ÑƒÑ�Ñ‚Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
 
-#: peigen.c:194 pepigen.c:194 pex64igen.c:194
+#: peXXigen.c:201
 #, c-format
 msgid "%pB: unable to create fake empty section"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ„Ð¸ÐºÑ‚Ð¸Ð²Ð½Ñ‹Ð¹ Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»"
 
-#: peigen.c:532 pepigen.c:532 pex64igen.c:532
+#: peXXigen.c:539
 #, c-format
-msgid "%pB: aout header specifies an invalid number of data-directory entries: %ld"
-msgstr "%pB: Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ aout ÑƒÐºÐ°Ð·Ð°Ð½ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ…: %ld"
+msgid "%pB: aout header specifies an invalid number of data-directory entries: %u"
+msgstr "%pB: Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ aout ÑƒÐºÐ°Ð·Ð°Ð½ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ…: %u"
 
-#: peigen.c:1091 pepigen.c:1091 pex64igen.c:1091
+#: peXXigen.c:1088
 #, c-format
 msgid "%pB: line number overflow: 0x%lx > 0xffff"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½ÑƒÐ¼ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ñ�Ñ‚Ñ€Ð¾Ðº: 0x%lx > 0xffff"
 
-#: peigen.c:1235 pepigen.c:1235 pex64igen.c:1235
+#: peXXigen.c:1241
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° [.edata (Ð¸Ð»Ð¸ Ð³Ð´Ðµ Ð¾Ð½ Ð½Ð°ÑˆÑ‘Ð»Ñ�Ñ�)]"
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1242
 msgid "Import Directory [parts of .idata]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° [Ñ‡Ð°Ñ�Ñ‚ÑŒ .idata]"
 
-#: peigen.c:1237 pepigen.c:1237 pex64igen.c:1237
+#: peXXigen.c:1243
 msgid "Resource Directory [.rsrc]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð¾Ð² [.rsrc]"
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1244
 msgid "Exception Directory [.pdata]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¸Ñ�ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ [.pdata]"
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1245
 msgid "Security Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸"
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1246
 msgid "Base Relocation Directory [.reloc]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� [.reloc]"
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1247
 msgid "Debug Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸"
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1248
 msgid "Description Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ð¹"
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1249
 msgid "Special Directory"
 msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³"
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1250
 msgid "Thread Storage Directory [.tls]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ð° Ð½Ð¸Ñ‚ÐµÐ¹ [.tls]"
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1251
 msgid "Load Configuration Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸"
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1252
 msgid "Bound Import Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°"
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1253
 msgid "Import Address Table Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾Ð²"
 
-#: peigen.c:1248 pepigen.c:1248 pex64igen.c:1248
+#: peXXigen.c:1254
 msgid "Delay Import Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ñ‚Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°"
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1255
 msgid "CLR Runtime Header"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ� CLR"
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1256
 msgid "Reserved"
 msgstr "Ð—Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾"
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1316
 #, c-format
 msgid ""
 "\n"
@@ -8018,7 +8409,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°, Ð½Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð´ÐµÐ», Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð¾Ð½Ð° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚Ñ�Ñ�\n"
 
-#: peigen.c:1316 pepigen.c:1316 pex64igen.c:1316
+#: peXXigen.c:1322
 #, c-format
 msgid ""
 "\n"
@@ -8027,7 +8418,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð±ÐµÐ· Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾\n"
 
-#: peigen.c:1323 pepigen.c:1323 pex64igen.c:1323
+#: peXXigen.c:1329
 #, c-format
 msgid ""
 "\n"
@@ -8036,7 +8427,7 @@ msgstr ""
 "\n"
 "Ð’ %s Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%lx\n"
 
-#: peigen.c:1365 pepigen.c:1365 pex64igen.c:1365
+#: peXXigen.c:1369
 #, c-format
 msgid ""
 "\n"
@@ -8045,12 +8436,12 @@ msgstr ""
 "\n"
 "Ð�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %04lx\n"
 
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
+#: peXXigen.c:1373
 #, c-format
 msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
 msgstr "\tcode-base %08lx toc (Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹/Ñ€ÐµÐ°Ð»ÑŒÐ½Ñ‹Ð¹) %08lx/%08lx\n"
 
-#: peigen.c:1377 pepigen.c:1377 pex64igen.c:1377
+#: peXXigen.c:1380
 #, c-format
 msgid ""
 "\n"
@@ -8059,7 +8450,7 @@ msgstr ""
 "\n"
 "Ð�ÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° reldata! ÐžÐ¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÑŒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ð½Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½.\n"
 
-#: peigen.c:1382 pepigen.c:1382 pex64igen.c:1382
+#: peXXigen.c:1385
 #, c-format
 msgid ""
 "\n"
@@ -8068,7 +8459,7 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° (Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» %s)\n"
 
-#: peigen.c:1385 pepigen.c:1385 pex64igen.c:1385
+#: peXXigen.c:1388
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -8077,7 +8468,7 @@ msgstr ""
 " vma:            Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð°    ÐžÑ‚Ð¼ÐµÑ‚ÐºÐ°   Ð¦ÐµÐ¿Ð¾Ñ‡ÐºÐ°    Ð˜Ð¼Ñ�       ÐŸÐµÑ€Ð²Ñ‹Ð¹\n"
 "                  Ð£ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹  Ð’Ñ€ÐµÐ¼ÐµÐ½Ð¸   ÐŸÐµÑ€ÐµÑ�Ñ‹Ð»ÐºÐ¸  DLL       Ð¨Ð»ÑŽÐ·\n"
 
-#: peigen.c:1435 pepigen.c:1435 pex64igen.c:1435
+#: peXXigen.c:1437
 #, c-format
 msgid ""
 "\n"
@@ -8086,12 +8477,12 @@ msgstr ""
 "\n"
 "\tÐ˜Ð¼Ñ� DLL: %.*s\n"
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1453
 #, c-format
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
 msgstr "\tvma:  Hint/Ord Ð˜Ð¼Ñ�-Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° ÐŸÑ€Ð¸Ð²Ñ�Ð·Ð°Ð½-Ðº\n"
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1478
 #, c-format
 msgid ""
 "\n"
@@ -8100,13 +8491,12 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¿ÐµÑ€Ð²Ñ‹Ð¹ ÑˆÐ»ÑŽÐ·, Ð½Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð´ÐµÐ», Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð¾Ð½ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚Ñ�Ñ�\n"
 
-#: peigen.c:1520 peigen.c:1559 pepigen.c:1520 pepigen.c:1559 pex64igen.c:1520
-#: pex64igen.c:1559
+#: peXXigen.c:1522 peXXigen.c:1561
 #, c-format
 msgid "\t<corrupt: 0x%04lx>"
 msgstr "\t<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾: 0x%04lx>"
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1654
 #, c-format
 msgid ""
 "\n"
@@ -8115,7 +8505,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð°, Ð½Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð´ÐµÐ», Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð¾Ð½Ð° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚Ñ�Ñ�\n"
 
-#: peigen.c:1658 pepigen.c:1658 pex64igen.c:1658
+#: peXXigen.c:1660
 #, c-format
 msgid ""
 "\n"
@@ -8124,7 +8514,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð±ÐµÐ· Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾\n"
 
-#: peigen.c:1669 pepigen.c:1669 pex64igen.c:1669
+#: peXXigen.c:1671
 #, c-format
 msgid ""
 "\n"
@@ -8133,7 +8523,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ð¾Ð½Ð° Ð½Ðµ Ð¿Ð¾Ð¼ÐµÑ‰Ð°ÐµÑ‚Ñ�Ñ� Ð² Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ»\n"
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1682
 #, c-format
 msgid ""
 "\n"
@@ -8142,7 +8532,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ð¾Ð½Ð° Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ°Ñ� (%d)\n"
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1688
 #, c-format
 msgid ""
 "\n"
@@ -8151,7 +8541,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%lx\n"
 
-#: peigen.c:1714 pepigen.c:1714 pex64igen.c:1714
+#: peXXigen.c:1716
 #, c-format
 msgid ""
 "\n"
@@ -8162,67 +8552,67 @@ msgstr ""
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° (Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» %s)\n"
 "\n"
 
-#: peigen.c:1718 pepigen.c:1718 pex64igen.c:1718
+#: peXXigen.c:1720
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
 msgstr "Ð¤Ð»Ð°Ð³Ð¸ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° \t\t\t%lx\n"
 
-#: peigen.c:1721 pepigen.c:1721 pex64igen.c:1721
+#: peXXigen.c:1723
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
 msgstr "ÐœÐµÑ‚ÐºÐ° Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸/Ð´Ð°Ñ‚Ñ‹ \t\t%lx\n"
 
-#: peigen.c:1725 pepigen.c:1725 pex64igen.c:1725
+#: peXXigen.c:1727
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr "Ð¡Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹/ÐœÐ»Ð°Ð´ÑˆÐ¸Ð¹ \t\t\t%d/%d\n"
 
-#: peigen.c:1728 pepigen.c:1728 pex64igen.c:1728
+#: peXXigen.c:1730
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Ð˜Ð¼Ñ� \t\t\t\t"
 
-#: peigen.c:1739 pepigen.c:1739 pex64igen.c:1739
+#: peXXigen.c:1741
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr "Ð�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ \t\t\t%ld\n"
 
-#: peigen.c:1742 pepigen.c:1742 pex64igen.c:1742
+#: peXXigen.c:1744
 #, c-format
 msgid "Number in:\n"
 msgstr "Ð�Ð¾Ð¼ÐµÑ€ Ð²:\n"
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1747
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² \t\t%08lx\n"
 
-#: peigen.c:1749 pepigen.c:1749 pex64igen.c:1749
+#: peXXigen.c:1751
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° [ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½/Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð²]\t%08lx\n"
 
-#: peigen.c:1752 pepigen.c:1752 pex64igen.c:1752
+#: peXXigen.c:1754
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾Ð²\n"
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1757
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² \t\t"
 
-#: peigen.c:1760 pepigen.c:1760 pex64igen.c:1760
+#: peXXigen.c:1762
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½ \t\t"
 
-#: peigen.c:1765 pepigen.c:1765 pex64igen.c:1765
+#: peXXigen.c:1767
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² \t\t\t"
 
-#: peigen.c:1779 pepigen.c:1779 pex64igen.c:1779
+#: peXXigen.c:1781
 #, c-format
 msgid ""
 "\n"
@@ -8231,20 +8621,20 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² -- Ð�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %ld\n"
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1790
 #, c-format
 msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\tÐ�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² rva (0x%lx) Ð¸Ð»Ð¸ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² (0x%lx)\n"
 
-#: peigen.c:1807 pepigen.c:1807 pex64igen.c:1807
+#: peXXigen.c:1809
 msgid "Forwarder RVA"
 msgstr "ÐŸÐµÑ€ÐµÐ°Ð´Ñ€ÐµÑ�ÑƒÐµÐ¼Ñ‹Ð¹ RVA"
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1821
 msgid "Export RVA"
 msgstr "Ð­ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ RVA"
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1828
 #, c-format
 msgid ""
 "\n"
@@ -8253,29 +8643,27 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° [Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð²/ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½]\n"
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1836
 #, c-format
 msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\tÐ�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½ (0x%lx) Ð¸Ð»Ð¸ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² (0x%lx)\n"
 
-#: peigen.c:1841 pepigen.c:1841 pex64igen.c:1841
+#: peXXigen.c:1843
 #, c-format
 msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\tÐ�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð¾Ð±Ñ‹Ñ‡Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° rva (0x%lx) Ð¸Ð»Ð¸ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² (0x%lx)\n"
 
-#: peigen.c:1855 pepigen.c:1855 pex64igen.c:1855
+#: peXXigen.c:1857
 #, c-format
 msgid "\t[%4ld] <corrupt offset: %lx>\n"
 msgstr "\t[%4ld] <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: %lx>\n"
 
-#: peigen.c:1909 peigen.c:2106 pepigen.c:1909 pepigen.c:2106 pex64igen.c:1909
-#: pex64igen.c:2106
+#: peXXigen.c:1911 peXXigen.c:2107
 #, c-format
 msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ, Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .pdata (%ld) Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ %d\n"
 
-#: peigen.c:1913 peigen.c:2110 pepigen.c:1913 pepigen.c:2110 pex64igen.c:1913
-#: pex64igen.c:2110
+#: peXXigen.c:1915 peXXigen.c:2111
 #, c-format
 msgid ""
 "\n"
@@ -8284,12 +8672,12 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ (Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» .pdata)\n"
 
-#: peigen.c:1916 pepigen.c:1916 pex64igen.c:1916
+#: peXXigen.c:1918
 #, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
 msgstr " vma:\t\t\tÐ�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�  ÐšÐ¾Ð½ÐµÑ‡Ð½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�   Ð Ð°Ñ�ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ�\n"
 
-#: peigen.c:1918 pepigen.c:1918 pex64igen.c:1918
+#: peXXigen.c:1920
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -8298,27 +8686,27 @@ msgstr ""
 " vma:\t\tÐ�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹  ÐšÐ¾Ð½ÐµÑ‡Ð½Ñ‹Ð¹   EH          EH       Ð�Ð´Ñ€ÐµÑ�         ÐœÐ°Ñ�ÐºÐ°\n"
 "     \t\tÐ�Ð´Ñ€ÐµÑ�      Ð�Ð´Ñ€ÐµÑ�      ÐžÐ±Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ðº  Ð”Ð°Ð½Ð½Ñ‹Ðµ   ÐšÐ¾Ð½Ñ†Ð°ÐŸÑ€Ð¾Ð»Ð¾Ð³Ð°  Ð˜Ñ�ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ�\n"
 
-#: peigen.c:1931 pepigen.c:1931 pex64igen.c:1931
+#: peXXigen.c:1933
 #, c-format
 msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
 msgstr "Ð’Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .pdata (%ld) Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ‡ÐµÐ¼ Ñ€ÐµÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ (%ld)\n"
 
-#: peigen.c:2001 pepigen.c:2001 pex64igen.c:2001
+#: peXXigen.c:2002
 #, c-format
 msgid " Register save millicode"
 msgstr " ÐœÐ¸Ð»Ð»Ð¸ÐºÐ¾Ð´ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°"
 
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
+#: peXXigen.c:2005
 #, c-format
 msgid " Register restore millicode"
 msgstr " ÐœÐ¸Ð»Ð»Ð¸ÐºÐ¾Ð´ Ð²Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°"
 
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
+#: peXXigen.c:2008
 #, c-format
 msgid " Glue code sequence"
 msgstr " ÐŸÐ¾Ñ�Ð»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð²Ñ�Ð·ÑƒÑŽÑ‰ÐµÐ³Ð¾ ÐºÐ¾Ð´Ð°"
 
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2113
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
@@ -8327,7 +8715,7 @@ msgstr ""
 " vma:\t\tÐ�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð”Ð»Ð¸Ð½Ð°    Ð”Ð»Ð¸Ð½Ð°   Ð¤Ð»Ð°Ð³Ð¸       ÐžÐ±Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ðº EH\n"
 "     \t\tÐ�Ð´Ñ€ÐµÑ�     ÐŸÑ€Ð¾Ð»Ð¾Ð³Ð°  Ð¤ÑƒÐ½ÐºÑ†Ð¸Ð¸ 32b exc     Ð˜Ñ�ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ Ð”Ð°Ð½Ð½Ñ‹Ðµ\n"
 
-#: peigen.c:2234 pepigen.c:2234 pex64igen.c:2234
+#: peXXigen.c:2234
 #, c-format
 msgid ""
 "\n"
@@ -8338,7 +8726,7 @@ msgstr ""
 "\n"
 "Ð�Ð°Ñ‡Ð°Ð»Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð² PE-Ñ„Ð°Ð¹Ð»Ðµ (Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» .reloc)\n"
 
-#: peigen.c:2264 pepigen.c:2264 pex64igen.c:2264
+#: peXXigen.c:2263
 #, c-format
 msgid ""
 "\n"
@@ -8347,62 +8735,62 @@ msgstr ""
 "\n"
 "Ð’Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: %08lx Ð Ð°Ð·Ð¼ÐµÑ€ Ð±Ð»Ð¾ÐºÐ° %ld (0x%lx) Ð§Ð¸Ñ�Ð»Ð¾ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ %ld\n"
 
-#: peigen.c:2282 pepigen.c:2282 pex64igen.c:2282
+#: peXXigen.c:2281
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr "\tÐ¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %4d Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %4x [%4lx] %s"
 
-#: peigen.c:2343 pepigen.c:2343 pex64igen.c:2343
+#: peXXigen.c:2342
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr "%03x %*.s Ð­Ð»ÐµÐ¼ÐµÐ½Ñ‚: "
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2366
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr "Ð¸Ð¼Ñ�: [Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: %08lx Ð´Ð»Ð¸Ð½Ð° %d]: "
 
-#: peigen.c:2387 pepigen.c:2387 pex64igen.c:2387
+#: peXXigen.c:2386
 #, c-format
 msgid "<corrupt string length: %#x>\n"
 msgstr "<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ð´Ð»Ð¸Ð½Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#x>\n"
 
-#: peigen.c:2397 pepigen.c:2397 pex64igen.c:2397
+#: peXXigen.c:2396
 #, c-format
 msgid "<corrupt string offset: %#lx>\n"
 msgstr "<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#lx>\n"
 
-#: peigen.c:2402 pepigen.c:2402 pex64igen.c:2402
+#: peXXigen.c:2401
 #, c-format
 msgid "ID: %#08lx"
 msgstr "ID: %#08lx"
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2404
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: %#08lx\n"
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2426
 #, c-format
 msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
 msgstr "%03x %*.s  Ð»Ð¸Ñ�Ñ‚: Ð°Ð´Ñ€ÐµÑ�: %#08lx, Ñ€Ð°Ð·Ð¼ÐµÑ€: %#08lx, ÐºÐ¾Ð´Ð¾Ð²Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°: %d\n"
 
-#: peigen.c:2469 pepigen.c:2469 pex64igen.c:2469
+#: peXXigen.c:2468
 #, c-format
 msgid "<unknown directory type: %d>\n"
 msgstr "<Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°: %d>\n"
 
-#: peigen.c:2477 pepigen.c:2477 pex64igen.c:2477
+#: peXXigen.c:2476
 #, c-format
 msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
 msgstr " Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð°: Ð¡Ð¸Ð¼Ð²Ð¾Ð»: %d, Ð’Ñ€ÐµÐ¼Ñ�: %08lx, Ð’ÐµÑ€Ñ�Ð¸Ñ�: %d/%d, ÐšÐ¾Ð»-Ð²Ð¾ Ð¸Ð¼Ñ‘Ð½: %d, ID: %d\n"
 
-#: peigen.c:2566 pepigen.c:2566 pex64igen.c:2566
+#: peXXigen.c:2564
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr "ÐžÐ±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» .rsrc!\n"
 
-#: peigen.c:2590 pepigen.c:2590 pex64igen.c:2590
+#: peXXigen.c:2588
 #, c-format
 msgid ""
 "\n"
@@ -8411,17 +8799,17 @@ msgstr ""
 "\n"
 "ÐŸÐ Ð•Ð”Ð£ÐŸÐ Ð•Ð–Ð”Ð•Ð�Ð˜Ð•: Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .rsrc â€” Ð±ÑƒÐ´ÑƒÑ‚ Ð¿Ñ€Ð¾Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ñ‹ Windows:\n"
 
-#: peigen.c:2596 pepigen.c:2596 pex64igen.c:2596
+#: peXXigen.c:2594
 #, c-format
 msgid " String table starts at offset: %#03x\n"
 msgstr " Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ñ‚Ñ€Ð¾Ðº Ð½Ð°Ñ‡Ð¸Ð½Ð°ÐµÑ‚Ñ�Ñ� Ñ�Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#03x\n"
 
-#: peigen.c:2599 pepigen.c:2599 pex64igen.c:2599
+#: peXXigen.c:2597
 #, c-format
 msgid " Resources start at offset: %#03x\n"
 msgstr " Ð ÐµÑ�ÑƒÑ€Ñ�Ñ‹ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#03x\n"
 
-#: peigen.c:2651 pepigen.c:2651 pex64igen.c:2651
+#: peXXigen.c:2654
 #, c-format
 msgid ""
 "\n"
@@ -8430,7 +8818,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³, Ð½Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð´ÐµÐ», Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð¾Ð½ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚Ñ�Ñ�\n"
 
-#: peigen.c:2657 pepigen.c:2657 pex64igen.c:2657
+#: peXXigen.c:2660
 #, c-format
 msgid ""
 "\n"
@@ -8439,7 +8827,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð² %s, Ð½Ð¾ Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð±ÐµÐ· Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾\n"
 
-#: peigen.c:2664 pepigen.c:2664 pex64igen.c:2664
+#: peXXigen.c:2667
 #, c-format
 msgid ""
 "\n"
@@ -8448,7 +8836,7 @@ msgstr ""
 "\n"
 "ÐžÑˆÐ¸Ð±ÐºÐ°: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ� Ñ� Ð°Ð´Ñ€ÐµÑ�Ð°, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»\n"
 
-#: peigen.c:2669 pepigen.c:2669 pex64igen.c:2669
+#: peXXigen.c:2672
 #, c-format
 msgid ""
 "\n"
@@ -8459,22 +8847,22 @@ msgstr ""
 "Ð’ %s Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%lx\n"
 "\n"
 
-#: peigen.c:2676 pepigen.c:2676 pex64igen.c:2676
+#: peXXigen.c:2679
 #, c-format
 msgid "The debug data size field in the data directory is too big for the section"
 msgstr "ÐŸÐ¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ðµ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
 
-#: peigen.c:2681 pepigen.c:2681 pex64igen.c:2681
+#: peXXigen.c:2684
 #, c-format
 msgid "Type                Size     Rva      Offset\n"
 msgstr "Ð¢Ð¸Ð¿                Ð Ð°Ð·Ð¼ÐµÑ€     Rva      Ð¡Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ\n"
 
-#: peigen.c:2729 pepigen.c:2729 pex64igen.c:2729
+#: peXXigen.c:2731
 #, c-format
 msgid "(format %c%c%c%c signature %s age %ld)\n"
 msgstr "(Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ %c%c%c%c Ð¿Ð¾Ð´Ð¿Ð¸Ñ�ÑŒ %s Ð²Ð¾Ð·Ñ€Ð°Ñ�Ñ‚ %ld)\n"
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2741
 #, c-format
 msgid "The debug directory size is not a multiple of the debug directory entry size\n"
 msgstr "Ð Ð°Ð·Ð¼ÐµÑ€ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°\n"
@@ -8482,7 +8870,7 @@ msgstr "Ð Ð°Ð·Ð¼ÐµÑ€ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð
 #. The MS dumpbin program reportedly ands with 0xff0f before
 #. printing the characteristics field.  Not sure why.  No reason to
 #. emulate it here.
-#: peigen.c:2757 pepigen.c:2757 pex64igen.c:2757
+#: peXXigen.c:2825
 #, c-format
 msgid ""
 "\n"
@@ -8491,97 +8879,124 @@ msgstr ""
 "\n"
 "Ð¥Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ¸ 0x%x\n"
 
-#: peigen.c:2993 pepigen.c:2993 pex64igen.c:2993
+#: peXXigen.c:3072
 #, c-format
 msgid "%pB: Data Directory size (%lx) exceeds space left in section (%<PRIx64>)"
 msgstr "%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ… (%lx) Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐµÑ�Ñ� Ð¼ÐµÑ�Ñ‚Ð¾ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%<PRIx64>)"
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
+#: peXXigen.c:3104
 msgid "failed to update file offsets in debug directory"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð¼ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ðµ"
 
-#: peigen.c:3033 pepigen.c:3033 pex64igen.c:3033
+#: peXXigen.c:3112
 #, c-format
 msgid "%pB: failed to read debug data section"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ…"
 
-#: peigen.c:3849 pepigen.c:3849 pex64igen.c:3849
+#: peXXigen.c:3928
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð°: %d"
 
-#: peigen.c:3984 pepigen.c:3984 pex64igen.c:3984
+#: peXXigen.c:4063
 msgid ".rsrc merge failure: multiple non-default manifests"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð°Ð½Ð¸Ñ„ÐµÑ�Ñ‚Ð¾Ð² Ð½Ðµ Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ"
 
-#: peigen.c:4002 pepigen.c:4002 pex64igen.c:4002
+#: peXXigen.c:4081
 msgid ".rsrc merge failure: a directory matches a leaf"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð»Ð¸Ñ�Ñ‚Ð¾Ð¼"
 
-#: peigen.c:4044 pepigen.c:4044 pex64igen.c:4044
+#: peXXigen.c:4123
 msgid ".rsrc merge failure: duplicate leaf"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ð»Ð¸Ñ�Ñ‚"
 
-#: peigen.c:4046 pepigen.c:4046 pex64igen.c:4046
+#: peXXigen.c:4125
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ð»Ð¸Ñ�Ñ‚: %s"
 
-#: peigen.c:4112 pepigen.c:4112 pex64igen.c:4112
+#: peXXigen.c:4191
 msgid ".rsrc merge failure: dirs with differing characteristics"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¸ Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ð¼ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ°Ð¼Ð¸"
 
-#: peigen.c:4119 pepigen.c:4119 pex64igen.c:4119
+#: peXXigen.c:4198
 msgid ".rsrc merge failure: differing directory versions"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð²ÐµÑ€Ñ�Ð¸Ð¸ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð² Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‚Ñ�Ñ�"
 
 #. Corrupted .rsrc section - cannot merge.
-#: peigen.c:4236 pepigen.c:4236 pex64igen.c:4236
+#: peXXigen.c:4315
 #, c-format
 msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ñ€Ð°Ð·Ð´ÐµÐ» .rsrc Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½"
 
-#: peigen.c:4244 pepigen.c:4244 pex64igen.c:4244
+#: peXXigen.c:4323
 #, c-format
 msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ rsrc: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .rsrc"
 
-#: peigen.c:4383 pepigen.c:4383 pex64igen.c:4383
+#: peXXigen.c:4462
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[1], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$2"
 
-#: peigen.c:4403 pepigen.c:4403 pex64igen.c:4403
+#: peXXigen.c:4482
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[1], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$4"
 
-#: peigen.c:4424 pepigen.c:4424 pex64igen.c:4424
+#: peXXigen.c:4503
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[12], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$5"
 
-#: peigen.c:4444 pepigen.c:4444 pex64igen.c:4444
+#: peXXigen.c:4523
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$6"
 
-#: peigen.c:4486 pepigen.c:4486 pex64igen.c:4486
+#: peXXigen.c:4565
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$6"
 
-#: peigen.c:4511 pepigen.c:4511 pex64igen.c:4511
+#: peXXigen.c:4590
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[9], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ __tls_used"
 
+#~ msgid "%pB: corrupt symbol count: %#<PRIx64>"
+#~ msgstr "%pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: %#<PRIx64>"
+
+#~ msgid "%pB: not enough memory to allocate space for %#<PRIx64> symbols of size %#<PRIx64>"
+#~ msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð¼ÐµÑ�Ñ‚Ð° Ð´Ð»Ñ� %#<PRIx64> Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ %#<PRIx64>"
+
+#~ msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
+#~ msgstr "%pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð³Ñ€ÑƒÐ¿Ð¿: %#<PRIx64>"
+
+#~ msgid "error: %pB version reference section is too large (%#<PRIx64> bytes)"
+#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ€Ð°Ð·Ð´ÐµÐ» Ð²ÐµÑ€Ñ�Ð¸Ð¹ Ñ�Ñ�Ñ‹Ð»Ð¾Ðº %pB Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸Ðº (%#<PRIx64> Ð±Ð°Ð¹Ñ‚)"
+
+#~ msgid "unexpected STO_SH5_ISA32 on local symbol is not handled"
+#~ msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ STO_SH5_ISA32 Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+
+#~ msgid "%P%X: read-only segment has dynamic IFUNC relocations; recompile with %s\n"
+#~ msgstr "%P%X: Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�, Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� IFUNC; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� %s\n"
+
+#~ msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
+#~ msgstr "bfd_mach_o_read_symtab_symbols: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"
+
+#~ msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
+#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� priv spec (Ñ�Ñ‚Ð°Ñ€ÑˆÐ°Ñ�/Ð¼Ð»Ð°Ð´ÑˆÐ°Ñ�/Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ)."
+
+#~ msgid "unsupported relocation type %#x"
+#~ msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#x"
+
+#~ msgid "%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC"
+#~ msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC"
+
 #~ msgid "%H: call to `%pT' lacks nop, can't restore toc; recompile with -fPIC\n"
 #~ msgstr "%H: Ð²Ñ‹Ð·Ð¾Ð² Â«%pTÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½Ðµ nop, Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ toc; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC\n"
 
-#~ msgid "error: %pB: <corrupt x86 ISA used size: 0x%x>"
-#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° x86 ISA: 0x%x>"
-
 #~ msgid "error: %pB: <corrupt x86 ISA needed size: 0x%x>"
 #~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° x86 ISA: 0x%x>"
 
@@ -8672,9 +9087,6 @@ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿
 #~ msgid "unsupported reloc type"
 #~ msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
-#~ msgid "SH Error: unknown reloc type %d"
-#~ msgstr "ÐžÑˆÐ¸Ð±ÐºÐ° SH: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d"
-
 #~ msgid "Unrecognized reloc type 0x%x"
 #~ msgstr "Ð�ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� 0x%x"
 
@@ -8731,9 +9143,6 @@ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿
 #~ msgid "%B: invalid AVR reloc number: %d"
 #~ msgstr "%B: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� AVR: %d"
 
-#~ msgid "%B: unsupported relocation type %d"
-#~ msgstr "%B: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d"
-
 #~ msgid "Unsupported CR16 relocation type: 0x%x\n"
 #~ msgstr "Ð�ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� CR16: 0x%x\n"
 
@@ -8776,9 +9185,6 @@ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿
 #~ msgid "%B: unrecognised I370 reloc number: %d"
 #~ msgstr "%B: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� I370: %d"
 
-#~ msgid "%B: unknown relocation type %d for symbol %s"
-#~ msgstr "%B: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
-
 #~ msgid "%B: Relocation %s is not yet supported for symbol %s."
 #~ msgstr "%B: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð¿Ð¾ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s."
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/SRC-POTFILES.in ./bfd/po/SRC-POTFILES.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/SRC-POTFILES.in	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/po/SRC-POTFILES.in	2021-05-21 01:57:23.000000000 +0000
@@ -3,7 +3,6 @@ aix5ppc-core.c
 aout-cris.c
 aout-ns32k.c
 aout-target.h
-aout-tic30.c
 aout32.c
 aout64.c
 aoutx.h
@@ -32,7 +31,6 @@ coff-stgo32.c
 coff-tic30.c
 coff-tic4x.c
 coff-tic54x.c
-coff-tic80.c
 coff-x86_64.c
 coff-z80.c
 coff-z8k.c
@@ -100,7 +98,6 @@ cpu-ns32k.c
 cpu-or1k.c
 cpu-pdp11.c
 cpu-pj.c
-cpu-plugin.c
 cpu-powerpc.c
 cpu-pru.c
 cpu-riscv.c
@@ -117,7 +114,6 @@ cpu-tic30.c
 cpu-tic4x.c
 cpu-tic54x.c
 cpu-tic6x.c
-cpu-tic80.c
 cpu-tilegx.c
 cpu-tilepro.c
 cpu-v850.c
@@ -238,6 +234,7 @@ elf32-xc16x.c
 elf32-xgate.c
 elf32-xstormy16.c
 elf32-xtensa.c
+elf32-z80.c
 elf32.c
 elf64-alpha.c
 elf64-bpf.c
@@ -317,7 +314,6 @@ pe-arm-wince.c
 pe-arm.c
 pe-i386.c
 pe-mcore.c
-pe-ppc.c
 pe-sh.c
 pe-x86_64.c
 pef-traceback.h
@@ -328,7 +324,6 @@ pei-arm.c
 pei-i386.c
 pei-ia64.c
 pei-mcore.c
-pei-ppc.c
 pei-sh.c
 pei-x86_64.c
 peicode.h
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/sr.gmo ./bfd/po/sr.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/sr.gmo	2020-03-07 02:11:48.000000000 +0000
+++ ./bfd/po/sr.gmo	2021-05-21 02:00:24.000000000 +0000
@@ -1,65 +1,143 @@
-Þ•wÔ+KŒW¸t¹tÆtßtþtu$(u3Mu�uŽu%®uÔuAäu&&vMvfvv˜v¨v Çvèvw!w8wKw*cw9Žw6Èw;ÿw;xFMx6”x:Ëx5yJ<y)‡yG±yLùy)FzLpz½zÓzDêzG/{w{–{¨{¼{Ô{3ó{'|0>|o||�|+©|+Õ|+}#-}Q}i}r}~}œ}³}Ê}ê}~ ~;~[~t~�~¥~½~,Ñ~þ~'?Ve{•1¬Þïü€.€#F€+j€&–€5½€ó€�%�;�U�n�…�$›�À�Ù�ù�‚$&‚K‚_‚t‚<�‚Ê‚Ù‚
è‚ö‚
-ƒ "ƒCƒ^ƒnƒŽƒªƒÊƒãƒüƒ„*„F„X„&j„‘„0¥„Ö„"ê„	
……#*…N…g…x…‘…"ª…Í…"á…#†#(†L†#a†#…†©†¶†¼†Ä†É†
-æ†ñ†ö†!ü† ‡?‡D‡I‡i‡‰‡Ž‡¢‡!§‡É‡Ð‡Ö‡Û‡à‡æ‡ê‡ï‡ˆ$ˆ)ˆIˆ]ˆB}ˆÀˆàˆåˆêˆñˆ÷ˆüˆ‰‰‰%‰>‰R‰c‰t‰…‰–‰§‰¿‰	Î‰
Ø‰
æ‰
-ô‰
-ÿ‰
-
-Š
-Š Š
-5Š$@Š
-eŠ#pŠ%”Š
-ºŠÅŠ×ŠêŠ$‹'‹E‹!_‹�‹–‹
-¥‹
°‹	¾‹È‹
-Ù‹ä‹ë‹ŒŒ/Œ>ŒUŒpŒŒ˜Œ§Œ®Œ(¾Œ/çŒ�)�+8�d�A€�Â�Ü�ö�Ž8%Ž^ŽvŽ‹Ž&¥ŽÌŽëŽ2�?9�&y� �(¿�"è��*+�6V�{��r	‘x|‘õ‘5’A’DN’*“’7¾’$ö’'“*C“!n“=�“AÎ“E”V”%u”D›”à”.þ”,-•*Z•%…•4«•à•>ÿ•Q>–G�–8Ø–	—J—5f—8œ—(Õ—,þ—P+˜E|˜FÂ˜F	™OP™H ™3é™<š%ZšA€šnÂšK1›7}›*µ›8à›.œ<Hœ9…œ@¿œH�BI�JŒ�B×�TžTožTÄž‰Ÿ<£ŸmàŸ[N Pª <û D8¡^}¡DÜ¡€!¢1¢¢JÔ¢I£>i£m¨£6¤aM¤¯¤·¤7Ë¤!¥#%¥8I¥)‚¥.¬¥0Û¥>¦>K¦/Š¦/º¦Fê¦>1§-p§(ž§Ç§7å§1¨0O¨/€¨)°¨/Ú¨;
-©<F©Aƒ©<Å©,ª//ª-_ª&�ª3´ª3èªO«Wl«OÄ«o¬+„¬5°¬#æ¬7
-­EB­>ˆ­2Ç­:ú­U5®2‹®(¾®+ç®¯7-¯<e¯?¢¯Qâ¯34°'h°=�°<Î°"±M.±K|±DÈ±!
²:/²7j²¢².À²ï²1³A³'^³%†³ ¬³EÍ³4´HH´?‘´<Ñ´Gµ>Vµ-•µ<Ãµ7¶18¶8j¶2£¶+Ö¶/·^2·]‘·7ï·'¸+G¸Ls¸+À¸ì¸
-¹#¹C¹+^¹5Š¹@À¹@ºIBºIŒº9Öº$»,5»'b»=Š»QÈ»D¼1_¼5‘¼Ç¼2ä¼.½?F½.†½ µ½AÖ½E¾:^¾$™¾9¾¾5ø¾&.¿&U¿4|¿1±¿$ã¿$À/-À%]À<ƒÀ*ÀÀ'ëÀ3Á&GÁnÁ4ŠÁ¿Á4ÞÁÂ.*Â(YÂ*‚Â6­Â2äÂ5Ã8MÃW†ÃZÞÃB9Ä5|Ä=²Ä<ðÄ(-Å-VÅ0„ÅµÅPÏÅ  Æ@AÆk‚Æ4îÆ;#Ç$_Ç'„Ç¬Ç2ÉÇOüÇKLÈG˜È`àÈAAÉYƒÉSÝÉ<1ÊgnÊaÖÊl8ËF¥Ë-ìË2Ì(MÌ3vÌ1ªÌ-ÜÌD
-ÍBOÍ6’Í*ÉÍ#ôÍ2Î.KÎ*zÎ(¥Î]ÎÎJ,ÏwÏ’Ï4¬ÏDáÏC&ÐCjÐE®Ð^ôÐ]SÑ)±Ñ+ÛÑ$Ò),Ò7VÒ9ŽÒ&ÈÒ&ïÒ2Ó+IÓ=uÓ,³ÓàÓ+þÓ*Ô-@Ô+nÔšÔ¹Ô*ØÔ2Õ"6Õ#YÕ"}Õ- Õ,ÎÕGûÕGCÖG‹Ö(ÓÖ@üÖD=×3‚×2¶×`é×2JØ7}Ø5µØ/ëØ*Ù1FÙ;xÙ&´ÙWÛÙ-3Ú+aÚ-�Ú»Ú)ÙÚ%Û2)Û2\Û=�Û;ÍÛB	ÜALÜ:ŽÜ2ÉÜ?üÜ<Ý›\Ý6øÝ6/ÞAfÞG¨Þ6ðÞ='ß:eß: ßDÛß8 à9YàC“à:×à7á8Já9ƒá,½á6êá!â;=â:yâ.´â/ãâã13ã%eã$‹ã9°ãOêã#:ä,^ä1‹äC½ä6å"8å2[å/Žå(¾å&çå%æ)4æ ^æHæ4Èæ'ýæ1%ç;Wç>“ç%Òç7øç(0è5Yè'�è8·è>ðè /éPé!né �é'±ébÙé)<ê=fêG¤ê%ìê*ë0=ë&në&•ë7¼ë7ôë8,ì0eì9–ì6Ðì/íC7íQ{íÍíííüíî2'î&Zî.�î°îM¿îT
ï2bï|•ï(ð[;ð+—ð/Ãð(óðRñFoñF¶ñ:ýñ68òDoò(´ò7Ýò*ó-@ó0nóAŸóHáó>*ô+iôI•ô;ßôõ;;õ;wõ.³õ.âõ=öIOö.™ö/Èö@øö*9÷)d÷;Ž÷Ê÷>è÷B'øljø@×ø?ùGXùF ùJçùH2úK{úGÇúBûXRû4«û/àûNü0_ü(�ü/¹üéüüüý0"ý=SýD‘ý0Öý5þ)=þ7gþŸþ¹þ'Øþ&ÿ['ÿGƒÿOËÿ9U>u2´5çP=n<¬/éo]‰ç
û	
#%4\Z;·ó;H	ak}•¦,³àô
-/!/Q2�9´#î'2:3m¡;±í/DYk~•²Ï	í"÷+#F,j:—Òä.	4/	?d	=¤		â	"ì	
-&
-/
-3
-F
-X
-j
-'|
-¤
- Á
-#â
-  2S$q$–'»%ã'	1Oo"�²Â×ì
)
C
#Y
#}
-¡
8Ï
2A;'}.¥YÔ_.;Ž)Ê!ô$;HP%™¿5Ü
-'"2Ug€›°½Ì
êø/
-+:8fŸ
-µÀß'ñ+.I-xG¦3î""AId%®Ôçù":L$e*Š+µáþ5FXj€’²ÌÝìþ	
-/":%]ƒ�žµÑçù2Rfx�-®Üî/O)d/Ž¾Ðâé!ð.,An:Š%Å%ëC*=nC¬=ð".[Q?­í))S\vw*î&+Rr„‹(’»'Íõ*J#b$†,«.Ø, .4 c "€ ,£ .Ð !ÿ 1!!0S!2„!,·!.ä!#"7"W"(k"/”"!Ä"æ"(##,#+P#|#,•# Â#ã#ü#$0$P$#o$-“$"Á$ä$ö$%!%:%O%a%2|%$¯%&Ô%û%	&!%&DG&DŒ&/Ñ&'/'?C'ƒ'”'´'Ë'7Þ'(J(‰j(7ô(,)*F)q)‰)¡)·)È)Þ)#û)%*E*X*u*’*J¤*Jï*J:+I…+:Ï+;
-,:F,E�,6Ç,+þ,;*-Ff-Q­-/ÿ-B/.@r.;³.Kï..;/Fj/a±/=0&Q0.x0/§0-×0/1i51DŸ1dä1.I2,x2F¥2fì2CS3—3#¶3@Ú3847T4Œ4˜¬4	E5O5k5}5�5<¤52á5.6C6K6b6z6d’6÷66
-7=A7g7bç7=J8Eˆ81Î8(9$)9N94d9'™9$Á97æ9:/:G:^:o:‡:Ÿ:±:Ã:Õ:ç:;;.;?;W;v;2•;È;-á;+<+;<*g<	’<	œ<
-¦<
-±<¼<Ñ<à<õ<=1	=;=Z='y="¡=Ä=â=÷=>,>]K>=©>(ç>Z?Zk?EÆ?A@GN@W–@Wî@9FA9€A-ºA4èA9B4WB2ŒB7¿B5÷B7-CBeCE¨CBîCC1DAuD.·D2æD E[:E@–E:×E#F=6F<tF%±FN×F-&GOTG;¤G àG>H9@H
-zH1…H&·H&ÞH!I'I,FIJsI7¾I
öIJJ+J>J7QJ6‰JÀJ$àJ"KA(KjK,ˆK2µKèK¾øK»·LsMŽM©MBÉMDN*QNL|NÉNÞNŒíNzO0‚O9³OíOPPP3P:P2VPO‰PÙP*øP #QDQbQoQ ‰QªQ¾QÓQéQýQR*RGRXRlRNtRÃR#ÇRëR6S:S ZS8{S´SÆSÖSÞSóSTT/TBTLUT ¢TDÃTPUYUkU~U3™U!ÍUïU"öUV)V8V%KV'qV$™V*¾VéV0W,6WcW�W›W£W
»W%ÉWïW'X/XIXcXzXŒX£X7ºXòXY Y2YEYYYmYƒY™Y-¸Y)æY>ZgOZx·Z-0[!^[7€[¸[!Ñ[;ó[0/\5`\<–\<Ó\2]/C].s]=¢]/à]6^,G^-t^¢`*²`0Ý`2a-AaNoam¾a,b6=bGtb¼b|Õb?Rc+’c!¾c'àcd1d3Pd2„d-·dåd"e0$e\Uea²e{fL�f$ÝfšgZ�gaøgWZh|²hA/isqixåi?^jvžjk$0krUk€Èk;Il!…l§l3»l/ïlLm lm_�mímnnF/nFvnF½n5o#:o^ogo/so2£oÖo.õo,$p(Qp.zp1©p!Ûp0ýp .q%Oq%uqI›qåq'õq!r'?rgr%‚r¨rÈrFèr/sOs%\s%‚s!¨s;ÊsLtASt[•t3ñt,%u,Ru-u­uÍuëu=v%Fv4lv*¡v%Ìv?òv$2w&Ww*~w<©wæwõw
xx,)x8Vx+�x»x:Òx4
y1Byty%’y¸yÔyIày*zEzG`z¨zNÅz{=({f{w{#Š{)®{Ø{ ø{ |1:|l|;€|#¼|#à|$}#)}#M}q}Š}�}˜}-�}Ë}ã}è}0î}4~T~Y~'^~-†~´~¹~Õ~@Ú~"(-28<+A)m—)œÆ+áj
€)x€¢€§€¬€³€¹€¾€7Å€ý€�<�7I�����¹�Õ�ñ�
‚!)‚K‚X‚i‚
z‚
ˆ‚
–‚
-¤‚$¯‚ Ô‚Qõ‚Gƒ~ZƒtÙƒ N„Co„³„/Ó„H…3L…/€…B°…)ó… †>†#T†x†$‡†¬†	Ä†-Î†&ü†C#‡-g‡/•‡9Å‡ÿ‡3ˆ
Pˆ^ˆeˆV‚ˆ`Ùˆ#:‰^‰H{‰,Ä‰�ñ‰4�Š*¶Š!áŠ‹P#‹#t‹/˜‹4È‹?ý‹:=Œ&xŒWŸŒp÷ŒEh�@®�Aï�51Ž6gŽAžŽ\àŽÆ=�Æ�·Ë�+ƒ‘`¯‘’r ’D“’SØ’E,“Rr“FÅ“>”{K”€Ç”dH•?­•`í•qN–>À–Xÿ–JX—@£—Hä—W-˜>…˜rÄ˜‡7™‰¿™tIš	¾švÈšW?›a—›[ù›`Uœ�¶œuF�x¼�x5ž�®žz0ŸZ«Ÿu G| |Ä ½A¡‰ÿ¡c‰¢Kí¢b9£Xœ£cõ£ZY¤r´¤'¥t§¥�¦lž¦œ§œ¨§—E¨Ý¨cá©×Eª¼«�Ú«}k¬‘é¬Ã{­�?®ùÁ®b»¯˜°�·°vH±Ú¿±bš²ºý²¸³(À³té³=^´;œ´tØ´XMµM¦µOôµrD¶r·¶q*·^œ·„û·e€¸Wæ¸D>¹.ƒ¹p²¹d#ºYˆºpâºPS»p¤»V¼|l¼Yé¼|C½UÀ½Y¾hp¾BÙ¾d¿d�¿¢æ¿�‰À˜Áÿ³ÁY³Âf
ÃXtÃbÍÃz0Äo«Ä]ÅlyÅªæÅb‘ÆPôÆTEÇ1šÇiÌÇ�6È~¸ÈŠ7ÉSÂÉ>ÊvUÊvÌÊ0CËˆtËaýË\_Ì-¼ÌsêÌg^Í2ÆÍ\ùÍ@VÎY—Î;ñÎ:-Ï9hÏ0¢ÏrÓÏ_FÐ…¦Ðs,Ñi Ñ
-ÒyŠÒPÓOUÓp¥ÓhÔtÔbôÔtWÕNÌÕ�Öœ¹ÖbV×5¹×Uï×EØNÅØ7Ù*LÙFwÙ)¾ÙNèÙS7Úq‹ÚqýÚœoÛœÜn©ÜFÝM_ÝN­ÝpüÝ‚mÞtðÞLeßm²ß= à\^à^»à`áX{áDÔá~â“˜âq,ãGžãzæãjaäNÌäPållåTÙåF.æJuæSÀæPçXeçL¾çKèVWèH®è1÷ès)éA�é]ßé.=ê^lêKËê_ëzwëxòë}kì�éì³zíº.î‰éî}sïhñïƒZðcÞð]BñR ñ7óñŠ+òC¶òxúò¸sól,ô™ôBõH\õ@¥õcæõªJö†õö…|÷ÑøvÔøÅKù¹ú‡ËúÄSû¾üÉ×üƒ¡ýa%þd‡þ@ìþc-ÿR‘ÿIäÿp.pŸjT{ZÐ_+X‹VäP;¸ŒmE&³%Úlymxçx`zÙ“T’èS{UÏG%	Rm	^À	d
-D„
-IÉ
-UPi†º^A: XÛ)4
P^
B¯
>ò
?1TqKÆFGY@¡EâD(›mu	›Jfšæh�Oêº:YõdOo´h$[�né€XRÙ‘,^¾Q_oKÏSLoT¼u’‡� ª¯Kžû~šo/‰8¹|ò |o!}ì!ƒj"_î"dN#`³#a$uv$^ì$`K%t¬%`!&^‚&^á&y@'pº'g+(5“(rÉ(n<)U«)Z*5\*^’*Fñ*K8+b„+rç+?Z,Rš,_í,ŒM-tÚ-:O._Š.|ê.Og/U·/O
0T]0A²0±ô0Z¦1B2bD2t§23?œ3^Ü3_;4^›4Hú4YC5n�5C6<P6K�6EÙ6j7ãŠ7on8zÞ8pY9KÊ9Z:Mq:<¿:Uü:`R;Z³;]<Gl<]´<[=Tn=mÃ=™1>cË>'/?3W?-‹?a¹?C@__@¿@—Î@§fAWBÛfBRBCœ•CT2D\‡DWäDš<Ez×EzRFZÍFŽ(G\·GHHh]HQÆHJIrcI‚ÖIŽYJ}èJPfK�·KsGLH»LtMtyM\îM\KN}¨NŠ&OL±OPþOˆOPGØPS QvtQ9ëQu%R›RºSuÖSsLT€ÀTAUƒÁUwEV’½V…PWwÖW¦NX~õXctY{ØYeTZBºZRýZ(P[y[™[\·[s\ˆ\W]_`]CÀ]Z^-_^?�^BÍ^?_�P_uà_ˆV`Uß`E5aw{aXóaZLbœ§b}DctÂch7d¿ dª`ef)f;fXfsfU�f¶æfw�g"h?8hxh;{h·h2Ïhii24igiƒif—iþi&j)BjNljf»jr"k€•kSlWjllÂly/m ©mqÊm(<n en†n#�n$³n$Øn!ýn"o2Bo;uo/±o0áopQ'pZypTÔpX)qz‚qýqAr\^rh»rf$sh‹s!ôsCt.Zt‰tšt,¡t.ÎtýtuB*u(mu?–uAÖu(v/AvAqv:³v6îv6%w9\w7–w9Îw/x18x1jx4œx1Ñx4y68y2oy0¢ySÓy#'z?KzN‹zUÚzv0{j§{Q|Vd|Q»|°
}›¾}pZ~MË~:0T&…r¬P€4p€d¥€&
-�1�XB�%›�/Á�7ñ�8)‚(b‚$‹‚*°‚Û‚ú‚Šƒ]£ƒd„*f„‘„?ž„Þ„5ü„2…8F…M…BÍ…o†_€†=à†9‡}X‡LÖ‡%#ˆ'Iˆ?qˆ?±ˆñˆ+‰*=‰dh‰cÍ‰@1Š%rŠj˜Š‹‹4‹P‹;f‹4¢‹(×‹ŒŒ3Œ:ŒJŒ9`ŒšŒR²ŒO�U�k�ƒ�, �Í�í�3Ž5Ž1UŽ‡Ž�Ž¹Ž2ÖŽU	�_�w�‹�'¥�;Í�,	�Z6�`‘�ò�#‘/‘6‘;=‘Jy‘HÄ‘-
’G;’4ƒ’4¸’(í’p“y‡“”k�”@í”¸.•†ç•4n–5£–XÙ–2—3I—¾}—S<˜�˜F®˜Võ˜L™e™l™Ts™È™?ä™1$š1Vš3ˆš(¼šJåš=0›Qn›WÀ›QœWjœ3Âœ:öœQ1�Wƒ�?Û�RžYnž_ÈžQ(ŸWzŸDÒŸ4 L Ek V± 1¡':¡:b¡:�¡NØ¡&'¢CN¢9’¢+Ì¢4ø¢-£9J£/„£F´£Nû£FJ¤*‘¤&¼¤/ã¤6¥/J¥-z¥7¨¥cà¥HD¦`�¦Bî¦1§H@§‰§	¨s‰¨.ý¨`,©”�©"ª9=ª/wª-§ª‚ÕªX«†a«áè«eÊ¬00­da­2Æ­+ù­5%®0[®5Œ®:Â®4ý®72¯'j¯7’¯:Ê¯°—#°�»°‰I±�Ó±uc²gÙ²pA³Œ²³p?´w°´˜(µ¼Áµæ~¶¦e·•¸Â¢¸˜e¹¹þ¹n¸º¼'»ä»‡æ¼]n½lÌ½T9¾_Ž¾aî¾ºP¿À±‹Àb=Á` ÁŽÂ°�Â{AÃD½ÃRÄ†UÄtÜÄeQÅ9·ÅñÅ	ùÆ#Ç''Ç'OÇ+wÇm£ÇTÈNfÈµÈ6ÂÈ&ùÈ, É�MÉ%ëÉRÊOdÊ±´Ê¤fËYÌfeÌFÌÌ=Í>QÍ*�Ít»Í]0ÎMŽÎ|ÜÎ(YÏ9‚Ï8¼Ï(õÏ9Ð5XÐ)ŽÐ)¸Ð)âÐ)Ñ;6Ñ7rÑ)ªÑ(ÔÑ3ýÑL1ÒB~ÒPÁÒ0Ó[CÓYŸÓYùÓPSÔ¤Ô»ÔÒÔêÔ!Õ$Õ3ÕHÕWÕR`Õ4³Õ,èÕRÖQhÖBºÖ2ýÖ0×3I×d}×§â×fŠØMñØ¨?Ù¢èÙu‹ÚxÛkzÛ×æÛ×¾Üp–ÝzÞm‚Þ\ðÞaMß\¯ßeà‹ràhþà‹gá~óá�râŽã‰�ã†äV äX÷äBPå«“åu?æzµæN0çpçmðçE^èš¤èO?é«�éo;êE«êgñêbYë¼ëbËëR.ìT�ìIÖìG íZhí”ÃízXîÓî5ñî'ï;ïNïjaïqÌï@>ðBð8ÂðŽûð@ŠñOËñ[òwòa—ò[ùó6Uõ=ŒõHÊõxötŒöh÷—j÷&ø)øEøMùZbùK½ù7	úAú^ú7uú­ú.¼úiëú¬UûBüWEü;�üYÙü3ý2KýO~ý)Îý*øý+#þ(Oþ+xþ,¤þ+Ñþýþ.ÿLÿvcÿÚÿ@áÿ-"jP=»<ùc6)š.Äó/.@oƒ—ª¯½4m˜¢„;À&ß7m>P¬ý7
-BR-aO�QßD1\v9ÓP
S^5²3è	//	_	T	5Ô	M
-
-7X
-4�
-6Å
-)ü
-4&)[g…Ví$D!i"‹#®#Ò%ö%
8B
\{
TØ
…-÷³«R®RrT7ÇJÿgJb²vmŒmú^hSÇ\}xjöfaUÈ�ÝgóAX]˜1Ð�rb:Yð
-kê4ÏrGJêæ‘(äOÒªqúçîß/ièB_Œ¾Snwx½RŽÐ	[ïÌT+‚ÿ| Ì¡†c2ºÐFÀí?\ÿJM>ŸAqÀŸ²VýIÔ^š­Ç/rÒä—Ô£HÈ®²è‡bHÔGûì¾Ãn™�®–%­ÊñIkc¶“2<Êº�¥Y´§X5“$
\7÷àã²©æEéãšz´V|ÓòˆK­˜EouÄ$VJK¡»†>Ûì¨
-èñ¢â&	¨k'¸sØv.9¤b†át ˜Ýioðõ[½ÖašŽœžÄQ8‘@ «³dÍ¬zØ8ÅêCt”idþBf–§ž*oÃìËEÞ—ôþ]ºcl0ÑÎ¹\8¼,)œ™�\PõíÁmT±ê�•¬BÇY‰;]¤0ayON£�X6³ÖSu:1r€3"‡n	ö±[rƒÓ=§^=IåMÄ$%X¶<¾”p-á:Á¬�Â@3üRÉOÅeÅµŸ¹ç{÷Œ^ñö›	¶¦¥=e´ç(UˆhD¸Üã5…27e*sôù.é4äMXW	OP_eÉQÛèjÅkLë‚Œ™©1SÅ½³6,Jœ:¿P.’Ö˜Ñ*ë¸ÝU}jt#Ùat~8<ÿ­0!¦uüVÆZ	;�Í³÷ù¬+`ø°`Ê@ÈØ¹ $µ°_Ö£G€‰lò~¯¹!ÞÙ{;…Àóq{M’ˆ¿¼URÇ(!¢C(þïv‹¿JLnIjÒskmswŠG#(?ë¥#"@q�¨Ü’÷+!„Ç‹J6ÒÎÈÚ]‡d'Ô„p¶OÂbîÂ]žÈ›Z
V�x\˜�¦·zur²Á‚Œ™GX;¼ÚˆS?&=xÕ-#©òHEoNcõgÁ¨pÞù*œ¾6«�óúF‡Æ1òdRÆ'
-ÖýeUWC·–>-ËNàÌzé›ZŽ»–K»•ƒi%`Ä¡Ã:h¤¤.k
-n KÛZ*¤w³(I&já ßí/º&A·L�+‘·�å—o4)%6žßûð"ú`‹vâû€ï9úZ}Õ‘,®vzø9+Žní…­â×š=
g)jÊtþUŒiw¿
-ƒ”‚QáW¸Ú2¡m«±!¥÷ûÚ>¢¾+°aYž’d_À€pý_Šæ„ôµ±Ÿ¯ÞÎgÔ½Ûô’gPÿ,•é?�à,Ù
‰ŸÌ§A@á�530^fÌ{¯ú<«×µ5ZRx�-hùBN)…PÒußR „å/�Amyv2€véD>ÝOøNýË8lº±´/›|$Á'D\œIÐ~ãø‹¦ï"V‹Ú;Qùf�l/Š-�Äh$Õ
pÇË—FðàfH"9hâg6ø4”ƒªª}×²Ù|S-°^9%õeØ�a<EWD<ÏÕÎ%•ÿ[puwèìÙh�ÈDyû!£Í:§†; Ym5·bß¥”}ÜÑªWÊÑ…Þöä¦¯8°qñ~]ŠAF)d«Y7M[là—Õ}4ëw�ÂKóC‰F¬ˆ„•"ë>fU3¢f3GØN*ÀÉô
`ñóÎ[îT¸ö¹b»–2FÃÉ7å|Ó.t†TÑ
-?T“Hi.M›µÓîìCEçƒLoòÐqs¢ËÆŽy&®#D™âõ‘'ý`{ðÝ0¯Âüa�x9BC½#¡‚BQÉ“ä¿&ŠªÃ×ÛLüþsLÍ¨y ãç1æ'31K´@QÏ5‡T4Ü©Ó)¶‰Wíl7ÏcH®©S_î¼Ü7æï×~ÍÏ^üåšm »“öPc=,?Æê0¼ j£	    TLS: %A	Export Address Table 			Export Address Table 		%08lx
-	Name Pointer Table 			Ordinal Table 				[Name Pointer/Ordinal] Table	%08lx
+Þ•q0¸3I	@gdŒ‚|Œ„Žì¦
í¦û¦§(§AG§?‰§:É§¨¨.¨$M¨3r¨
¦¨´¨%Ô¨ú¨ü¨A©&P©w©�©©©Â©Ò© ñ©ª2ªKªbªoªP‚ªÓª*ëª9«6P«;‡«Ã«FÕ«6¬6S¬:Š¬5Å¬,û¬D(­Nm­J¼­)®G1®:y®B´®L÷®)D¯Bn¯L±¯þ¯°D+°Gp°¸°×°é°ý°±*±3I±}±”±0¦±×±ç±÷±+²+=²+i²#•²¹²Ñ²Ú²ø²(³?8³>x³%·³&Ý³(´)-´GW´7Ÿ´×´î´µ+µDµ_µµ˜µ³µÉµáµõµ¶,&¶S¶c¶|¶”¶«¶º¶Ð¶å¶ÿ¶·1+·]·n·{·’·­·#Å·+é·&¸5<¸r¸‡¸Ÿ¸¹¸Ï¸é¸¹¹/¹$D¹i¹‚¹¢¹º¹$Ï¹ô¹ºº<6ºsº‚º
‘ºŸº³ºÈº àº»»,»L»h»ˆ»¡»º»Í»*à»¼¼&/¼V¼0j¼›¼"¯¼	Ò¼Ü¼#ï¼½,½=½V½"o½’½"¦½#É½#í½¾#&¾#J¾n¾{¾™¾·¾½¾Ê¾Ò¾×¾
+ô¾ÿ¾¿!
+¿ ,¿M¿R¿W¿o¿�¿¯¿´¿È¿!Í¿ï¿ÀÀ
ÀÀÀÀ!À&ÀBÀ"[À~ÀƒÀ£À·À&×ÀBþÀAÁaÁfÁkÁrÁxÁ}Á�Á–Á®ÁÂÁÉÁâÁöÁÂÂ)Â:ÂKÂcÂ	rÂ
|Â
ŠÂ
+˜Â
+£Â
+®Â
+¹Â
+ÄÂ$ÏÂ
+ôÂ#ÿÂ
+#Ã.Ã@Ã!XÃzÃ�Ã
+žÃ
©Ã	·ÃÁÃ
+ÒÃÝÃäÃüÃÄ(Ä7ÄNÄiÄxÄ‘Ä Ä§ÄÇÄ(×Ä/Å0ÅBÅ+QÅ}ÅA™ÅÛÅõÅÆ)Æ8>ÆwÆ�Æ¤Æ&¾ÆåÆÇ2Ç?RÇ&’Ç¹Ç(ØÇÈ"È7È*WÈ6‚È{¹Èr5Éx¨É!Êe7Ê7�Ê:ÕÊË?"Ë@bËU£Ë`ùËbZÌq½Ì/ÍOÍ&mÍ”Íœ®ÍDKÎ'�Î,¸Î1åÎ'Ï$?Ï/dÏ-”Ï0ÂÏ&óÏ8ÐSÐ=sÐ9±Ð:ëÐ6&Ñ6]Ñ”Ñ/´Ñ5äÑ+Ò$FÒ6kÒ"¢Ò&ÅÒ6ìÒ=#Ó:aÓ:œÓD×Ó8Ô9UÔC�Ô:ÓÔ7Õ8FÕ@ÕGÀÕ9Ö,BÖ0oÖ# ÖÄÖ=ßÖ-×6K×‚×7ž×;Ö×:Ø"MØ3pØ%¤Ø.ÊØùØ0Ù1JÙ'|Ù¤ÙEÂÙ8Ú(AÚcjÚ4ÎÚ&Û2*Û&]Ûk„Û*ðÛ4Ü]PÜ8®ÜçÜOÝbVÝ,¹Ý+æÝ)ÞY<Þ0–Þ=ÇÞ3ß29ßBlßL¯ßüß4à)Oà$yà3žà9Òà6á/CáDsá&¸áWßáU7âI�â+×â8ã%<ã(bã&‹ã,²ã#ßã>äBBäB…äÈä'èäEå9Vå4�å3ÅåJùå(Dæ;mæ©æ0ÈæDùæ.>ç9mç?§ç?çç2'è8ZèS“è'çè.é,>é'ké6“é ÊéYëé/Eê4uêNªêªùêI¤ë9îë3(ì¾\ì<í<XíF•íPÜío-î>�îFÜî`#ï~„ïFð‚Jð[Íð3)ñ@]ñMžñmìñ7Zò#’ò¶ò(Ìò&õò+ó5Hó~ó“ó8§ó"àó$ô'(ô9PôCŠô!Îô!ðô*õ/=õ1mõ/Ÿõ/Ïõ0ÿõ*0ö0[ö<ŒöiÉö=3÷Bq÷=´÷-ò÷. ø8Oø:ˆøFÃø?
+ùVJù(¡ù>Êù;	ú=Eú4ƒú#¸úLÜúI)û8sû+¬û8Øû2ü9Dü:~ü3¹ü,íüuý �ý.±ý.àýJþ0ZþB‹þ/Îþ,þþ'+ÿ%Sÿ,yÿN¦ÿõÿCJS@žJß**%U<{1¸ êl<x<µ+ò,:Hg6°AçA)Jk>¶JõJ@<‹.È(÷l v�A6F}4›0Ð+A-3o@£!ä#	.*	BY	Fœ	4ã	%
+:>
+2y
+*¬
+9×
+C(UC~:ÂTýJR5�4Ó6
/?
/o
&Ÿ
&Æ
5í
'#0K5|(²3Û%&5\'|=¤#â+32(f@�CÐ5'J,rgŸ4m<Aª@ìH-GvK¾I
+LTH¡CêY.5ˆ0¾4ïM$Nr1Á)ó)/G)w+¡7Í3699pXª[C_6£>Ú=*W.‚2±[ä&@-g,•ÂÝ/ø(($Q0v'§8Ï"A+)m=—#Õ@ù2:+m"™5¼<ò'/%W(}R¦?ùF9 3€ 1´ Dæ H+!Dt!K¹!a"sg"BÛ"‚#T¡#=ö#b4$b—$gú$gb%0Ê%(û%4$&5Y&)�&3¹&-í&/'HK'F”'7Û'G(+[($‡(2¬(.ß(/)+>))j)-”)^Â)K!*Fm*´*"Ð*ó*5+(D+Em+D³+Dø+F=,_„,^ä,"C-*f-+‘-8½-:ö-'1.;Y.8•.'Î.'ö.3/>R/-‘/,¿/ì/I0U0r0.�0/¿0ï0$1341h1F†1&Í1!ô1625M2)ƒ2­2Ç2æ2+3 ,3$M3.r3.¡3%Ð3)ö3\ 4D}4HÂ4D5LP5X�5Hö5)?6*i6 ”65µ69ë6@%7+f76’7\É7A&8.h8M—83å8=9HW9< 98Ý93:4J:4:0´:@å:1&;BX;L›;Aè;L*<8w<B°<+ó<2=<R=3�=XÃ=P>.m>`œ>&ý>P$?\u?XÒ?/+@p[@AÌ@+AK:A.†A,µA%âAB3(B2\B�B4¯BJäB?/C@oCW°C=D*FD5qD%§DBÍD%E46E>kE<ªECçEB+F;nF3ªF'ÞFGH9HKHZH!oH‘H$§HÌH1ßHVIIhII²I<üI9JLJ`JrJŒJ
 J'®JÖJ
âJðJ%K\'K;„KÀKÒKèKëKLL	.L8LJL[L,hL•L©L¿LRÛL".M+QM%}M5£M2ÙM4N/AN/qN3¡N(ÕN2þN31O+eO&‘O"¸OÛO(øO/!P/QP1�P8³P#ìP'Q28Q3kQŸQ;¯QëQòQúQRR&R.RBRWRlR~R‘R¨R¿RÜRîRS	+S5SSS	hS"rS•S§S)ÃS/íS"T@TWT`TlTpTƒT•T§T'¹TáT þT#UCU]U oU�UH®U1÷U#)V,MV@zVX»VaW:vW.±W7àW1X;JX(†X:¯X,êX-Y-EYsY2’YÅYÕYêYÿYZ),ZVZ!lZ$ŽZI³ZýZ5[P[
+e[Cp[I´[þ[\\ \
>\L\ ^\A\Á\/Ý\+
]89]r]$ˆ]!­]1Ï]^ ^+?^k^^˜^
+¥^°^BÏ^_%$_J_\_.z_-©_G×_3`S`"r`•`§`$À`å`!a$a56ala	~aˆaša°aÐaêabb'b	.b8b=bIbXbob‹b¡b³bÓbìbc c2cJc-hc–c¨cºcÎcèc'ýc%d4dFdXd_d!fdˆd:¤d%ßd%e+eADe;†eCÂe=fCDf=ˆf"Æf7éf<!g<^g)›g5Ågûghvh*–hÁh'Óhûh
iii
+*i(5i^i'pi˜iµiÍiíi#j$)j,Nj.{j,ªj.×jk"#k,Fk.sk!¢k1Äk0ök2'l,Zl.‡l#¶lÚlúl(m/7m!gm‰m(¦m#Ïm+ómn,8n en†nŸn¿nÓnón#o-6o"do‡o™o¬o¸oÍo&ßo	pFp/Wp‡pJ˜pMãp1qQqhq{q-˜qÆqÏq×qAãq>%rdrAvr7¸rBðr!3sUs˜ust*t<tNt#ct2‡t.ºt#ét
uu'u7u?u:Xu+“u#¿uãuöuv'v,?v:lv§v	¿vdÉv.w6AwMxwMÆw<xgQxb¹x<y1Yy(‹y$´yÙy/ïy+zKzgz�zžz>ºz<ùz6{4R{'‡{$¯{Ô{å{ý{|%|=|U|g|y|‹|�|·|Ò|ä|õ|
},}2K}~}'˜}LÀ}4
~7B~0z~'«~Ó~ó~-+M+y*¥	Ð	Ú
+ä
+ïú€*€9€N€]€1b€”€/´€ä€ �'$�"L�&o�0–�Ç�å�ú�‚9!‚[‚,p‚a�‚9ÿ‚)9ƒCcƒI§ƒEñƒY7„Y‘„;ë„;'…Nc…/²…5â…:†5S†4‰†9¾†7ø†90‡Dj‡G¯‡D÷‡E<ˆC‚ˆ-Æˆ4ôˆ?)‰:i‰F¤‰;ë‰F'Š9nŠ*¨Š6ÓŠ/
+‹;:‹3v‹%ª‹1Ð‹!ŒV$Œ\{ŒAØŒ1�?L�:Œ�7Ç�>ÿ�$>ŽIcŽ­Ž/ÊŽOúŽPJ�3›� Ï�?ð�:0�&k�
+’�0��%Î�"ô�%‘0=‘!n‘�‘©‘Ä‘Ù‘æ‘Oõ‘E’,d’7‘’
É’×’1æ’“,“?“R“)o“*™“,Ä“6ñ“(”$H”_m”"Í”(ð”A•[•,y•2¦•HÙ•"–2–
+C–$N–s–†–¼¦–¹c—˜//˜_˜z˜˜˜*¸˜Lã˜20™-c™)‘™"»™Þ™ñ™šš4*š_š0gš%˜š9¾šøš<
+›=G›3…›5¹›2ï›7"œBZœL�œêœûœ��%�A�HH�‘�4”�É�Ò�
+é�ô�2ž-CžOqžÁžàž"åž*Ÿ%3Ÿ YŸzŸ˜Ÿ ŸC¿Ÿ¤ ¨ µ  Ï ð ù 
¡"¡8¡N¡e¡‚¡“¡¥¡¹¡*Á¡Nì¡[;¢—¢A›¢Ý¢ü¢£1£6I£€£  £8Á£+ú£&¤9¤I¤Q¤f¤~¤’¤¦¤º¤Í¤
à¤î¤L¥ U¥v¥D•¥PÚ¥+¦=¦2X¦$‹¦°¦Ð¦5ã¦§!4§V§]§2e§F˜§,ß§/¨(<¨e¨"w¨š¨ª¨M¹¨9©;A©7}©µ©Í©ê©ù©,ª$9ªJ^ª)©ª(Óª%üª("«K«
+g«,r«Ÿ«)¹«ã«¬¬3¬;¬S¬)k¬•¬
«¬#¹¬Ý¬'õ¬­.­D­^­{­•­#¡­%Å­ë­®®1®7H®€®œ®µ®Ê®Ü®ï®¯¯-¯JC¯JŽ¯JÙ¯I$°:n°©°-È°;ö°+2±@^±<Ÿ±1Ü±8²8G²U€².Ö²>³ID³hŽ³y÷³>q´N°´Iÿ´dIµ0®µ;ßµ8¶FT¶5›¶&Ñ¶.ø¶-'·.U·0„·<µ·!ò·¸!-¸)O¸Iy¸`Ã¸.$¹,S¹h€¹Eé¹0/º6`ºk—ºE»I»&g»IŽ»#Ø»<ü»<9¼ev¼QÜ¼2.½/a½/‘½4Á½=ö½94¾0n¾7Ÿ¾'×¾=ÿ¾6=¿@t¿µ¿Õ¿,Ù¿HÀOÂ`Â*}Â0¨ÂrÙÂzLÃeÇÃ2-Ä-`Ä-ŽÄN¼ÄmÅyÅ6‹ÅGÂÅ
+ÆÆ|*Æ?§Æ+çÆ!Ç'5Ç]Ç1sÇ3¥Ç2ÙÇ-È:ÈVÈ"qÈ“”È0(É\YÉa¶É{ÊM”Ê$âÊšËZ¢Ë]ýËa[ÌW½ÌZÍ„pÍ�õÍ|†ÎAÏsEÏW¹ÏcÐxuÐ?îÐa.Ñv�ÑÒ$"ÒrGÒ€ºÒ;;Ó!wÓ™Ó3­ÓáÓ/ûÓL+Ô xÔ™Ô_¸ÔÕ.Õ>ÕFZÕF¡ÕFèÕ5/Ö#eÖ‰Ö/’Ö2ÂÖCõÖV9×U�×<æ×;#Ø>_Ø?žØjÞØgIÙ±Ù.ÐÙ,ÿÙ(,Ú.UÚ1„Ú!¶Ú0ØÚ 	Û%*Û%PÛ#vÛ#šÛI¾ÛÜ'Ü!@Ü'bÜŠÜ%¥Ü'ËÜóÜÝ!3ÝFUÝœÝ¼Ý%ÉÝ%ïÝ!Þ;7ÞLsÞAÀÞ[ß^ß3zß,®ß,Ûß-à6àVàtà!‘à=³à%ñà4á*Lá%wá?�á$Ýá&â*)â<Tâ‘â â
¯â½âÔâ,ôâ8!ã+Zã†ã:�ã4Øã1
ä?ä%]äƒä™äIµäÿäåG5å}åNšåéå=ýå;æLæ#_æ)ƒæ­æ Íæ îæ1çAç;Uç#‘ç#µç$Ùç#þç#"èFè6_è8–èÏèÕèíèõè-úè(é@éEé0Ké4|é±é¶é1»é'íé-êCêHêdê@iê ªêËêÒêØêÝêâêèêìê+ñê)ë>Gë†ë)‹ëµë+ÐëCüëj@ì)«ìÕìÚìßìæìììñìí!í70íhí<oí7¬íäíîî8îTîpî!Œî®î»îÌî
Ýî
ëî
ùî
+ï ïQ3ï…ï~˜ï ðC8ð/|ðB¬ð)ïð ñ:ñ#Pñtñ$ƒñ¨ñ	Àñ-Êñ&øñCò-cò/‘ò9Áòûò3ó
LóZó5aó—óV´ó`ô#lô�ôH­ô,öô�#õ4³õ*èõ!ö5öPUö#¦ö/Êö4úö?/÷:o÷&ª÷WÑ÷p)øEšø@àøA!ù"cù5†ù6¼ùAóù\5úÆ’úÆYû· ü+ØüÖý^Ûýd:þŸþoºþn*ÿ“™ÿ’-’À°S/44Wi%Á9ç�!M¯WýSUM©I÷gAS©^ýK\^¨@sHo¼d,	|‘	
+7Ž
+\Æ
+q#x•K{ZOÖT&
_{
dÛ
`@a¡u^y`Øt9`®^^n�Í”[yðpjVÛ>22qz¤^g~5æpr�n<oZ¬YUa5·]í_K;«9ç�!u¯k%ä‘fvLÝO*<z·E¸YþàX]9 ?— ˜× Ôp!KE"J‘"JÜ"µ'#UÝ#j3$Jž$Ié$p3%‡¤%5,&]b&?À&G'VH']Ÿ'[ý'TY(n®(9)ÊW)�"*wÀ*E8+T~+FÓ+S,Fn,Hµ,@þ,|?-�¼-e>.@¤.bå.rH/s»/x/0k¨0Ô1”é1ƒ~2?3ZB3Ž�3W,4e„4pê4x[5aÔ5r66Ž©6N87L‡7BÔ7J8Yb8@¼8˜ý8C–9cÚ9Ž>:(Í:‹ö;u‚<Zø<€S=aÔ>a6?p˜?“	@Ù�@wA“÷AÅ‹BûQCƒMDûÑD¼ÍEdŠFxïF‡hGÚðGcËHL/I)|IM¦ICôI_8JP˜J)éJ'Ku;K>±K<ðKD-LurLoèL7XM7�MYÈMN"NPqN[ÂN[ObzOQÝOb/PZ’P²íP€ QY!R€{RhüRjeScÐSb4T{—TpU«„U?0VwpVYèVzBWn½W1,Xb^X…ÁXiGYR±YqZivZuàZgV[c¾[u"\˜\B�]Yà]Y:^‚”^Z_dr_Z×_^2`C‘`AÕ`Oa˜ga+b„,b�±bBc�Âc[SdM¯dtýd`reGÓeüfuguŽgYh*^hO‰h’ÙhTlirÁir4j�§j~Ek‹Äk�PlqîlO`mO°m×náØn‰ºonDpB³p^öp`UqH¶qvÿq\vraÓr95s;os[«st”‡t`uH}ubÆuU)vUvœÕv†rw9ùw†3xqºx§,y™Ôycnz\Òzk/{]›{Uù{RO|a¢|Z}Q_}b±}m~Q‚~VÔ~G+Ls;ÀUüYR€E¬€Mò€c@�L¤�wñ�€i‚Xê‚ICƒG�ƒÎÕƒs¤„»…vÔ…tK†�À†€B‡„Ã‡xHˆ“Áˆ†U‰xÜ‰§UŠýŠd}‹Sâ‹’6Œ’ÉŒf\�IÃ�C
Ž_QŽL±Ž`þŽ{_�pÛ�~L�‘Ë�´]‘»’ŠÎ’~Y“lØ“…E”eË”^1•T�•Ãå•I©–Vó–UJ—8 —2Ù—\˜Wi˜EÁ˜S™][™j¹™C$š|hšNåš‚4›=·›õ›quœFçœE.�mt�€â�^cžCÂžIŸ‹PŸuÜŸ�R dÔ X9¡˜’¡†+¢w²¢ *£ÒË£ùž¤w˜¥¦º#§ˆÞ§¹g¨¿!©¾á©Ä ªde«?Ê«f
+¬eq¬B×¬T­Go­K·­t®tx®mí®Œ[¯Uè¯[>°bš°Vý°YT±W®±Q²UX²¹®²nh³^×³'6´.^´&�´m´´M"µzpµyëµye¶{ß¶”[·“ð·E„¸LÊ¸T¹_l¹eÌ¹I2ºt|ºhñºEZ»J »Vë»‡B¼_Ê¼Y*½3„½—¸½7P¾Cˆ¾YÌ¾]&¿@„¿>Å¿RÀ<WÀs”À:Á1CÁUuÁ`ËÁN,Â:{Â>¶Â6õÂM,Ã>zÃH¹ÃTÄRWÄ>ªÄDéÄ�.Å‰¿ÅœIÆræÆ…YÇ«ßÇœ‹ÈK(ÉEtÉFºÉZÊm\ÊyÊÊZDË[ŸË ûË€œÌQÍœoÍZÎjgÎ€ÒÎhSÏe¼Ïh"Ðq‹ÐnýÐilÑtÖÑOKÒj›ÒuÓj|Ó}çÓReÔq¸Ô\*Õo‡Õ�÷ÕdyÖ¥ÞÖ�„×eØº{ØR6Ùš‰Ù–$Ú’»Ú`NÛÀ¯Û|pÜQíÜ{?Ý`»ÝWÞKtÞ8ÀÞvùÞSpßMÄß]àopà\ààq=á‰¯á~9âS¸âkã@xã|¹ãJ6äZ�ä“Üä�på¡æ°£æŸTçôç?tèñ´èc¦ê
+ë'!ë3IëE}ë-Ãë[ñë$MìZrì¤Íìƒríƒöíbzî(Ýîï&ï-Dïrï�ï9¢ïÜïùïðU1ð¶‡ðw>ñ"¶ñ?Ùñò;òXò2pò£ò¸òÕòñòfóló&‰ó4°ó|åó8bôG›ô:ãôWõWvõcÎõO2öO‚ö^ÒöC1÷Fu÷G¼÷Jø?Oø9�ø5ÉøQÿøNQùa ùlúzoúNêúR9ûgŒûtôû iüqŠü
+üüý(ý =ý
+^ýiý#vý$šý$¿ý!äý"þ2)þ2\þ;�þ"Ëþ0îþ1ÿQÿ?dÿ2¤ÿ×ÿQìÿ>A]\ŸfüCc.§Ö ç,.9h€B•(Ø?AA(ƒ/¬AÜ=s\jÐN;TŠuß¯U�d£iuriè|R	LÏ	o
+aŒ
+]î
+PL:�SØ1,4^6“2Ê0ýS.
#‚
:¦
,á
s4‚d·&CoZ�Ê%X~†&Ž"µØ4ö…+@±Šòz}dø*]kˆoôhdUÍY#€}Mþ)Lv‘?ž€Þ_3}±8ÅMþBLo�_ÿ=_9�×+÷&#@JB‹%Îjô_w–¯;Ë4/<l‹Ÿ¦
+¶Á×ï,9Y3m¡1Áó	%2BUuËã÷',9Mf´Í#æ
+  ; )T G~ 4Æ 4û (0!ŒY!‹æ!„r"y÷"q#kñ#@]$dž$u%uy%Vï%nF&µ&3Ì&¾'V¿'(J4((˜(Ÿ(¦(Ã(Tã(8)?T)1”)1Æ)3ø)(,*JU*= *QÞ*W0+Qˆ+WÚ+32,:f,Q¡,Wó,?K-R‹-YÞ-_8.Q˜.Wê.DB/4‡/¼/EÛ/V!01x0'ª0:Ò0:
1NH1&—1C¾192+<24h2�29º2/ô2F$3Nk3Fº3*4/,41\4/Ž4-¾4`ì4M5�\5`Þ5?6œZ6¯÷69§7/á7-85?8Eu8»8Ä8×8zî8ki9Õ9}ó9cq:~Õ:KT;9 ;Ú;#â<'='.=+V=I‚=TÌ=N!>?p>°>É>â>þ>6?jB?Z­?T@]@.w@&¦@%Í@Vó@zJA,ÅA!òA�B%²BRØB�+C�­CN/D±~D¤0EXÕEF.F=uF>³F*òFHGMfG>´G8óGF,H@sHs´Hq(IBšItÝI]RJM°J(þJ9'K8aK(šK9ÃK5ýK)3L)]L)‡L)±L;ÛL7M)OM(yM3¢MLÖMB#NPfN1·NOéN�9ObÇOk*P_–POöP:FQ+�Q3­Q[áQY=RY—RPñRBSYSpSˆS! S!ÂSäSóSTTR T5sTS©T,ýT4*UR_UQ²UlVYqVBËV2WAW3ZWvŽW&Xd,XÒ‘XbdYNÇYzZg‘Z~ùZÙx[ÙR\r,]|Ÿ]¬^oÉ^]9_q—_m	`gw`�ß`jma�Øa€fb�çb�wc‹dˆ”d]eX{e`Ôen5fw¤f{g{˜gahSvhwÊhWBilšiYj7ajO™jCéj¢-k¬Ðkv}ljôlr_m|ÒmiOno¹nO)o†yo<pQ=p«�pœ;qRØqE+rhqrcÚrQ>s�saŸsQtXStS¬t‚uIƒu/Íu7ýu85v(nv$—vŒ¼vGIwZ‘wzìwgx…x{¤x y4yGy3ZyjŽyjùy_dzqÄz@6{Bw{®º{8i|O¢|Žò|@�}OÂ}[~vn~å~ &KD%�=¶_ôYT�'®‚NÖ‚6%ƒ?\ƒHœƒhåƒ—N„_æ„JF…K‘…=Ý…†#;†&_†††¡¢†D‡ZY‡U´‡K
+ˆVˆwlˆ~äˆZc‰l¾‰f+Šo’Šn‹rq‹(ä‹7
ŒEŒbŒ7yŒ±Œ�ÀŒP�iU�¿�9Õ�Ž.'ŽiVŽaÀŽ¬"�BÏ�
+�R�Wp�OÈ�:‘YS‘­‘:Ç‘r’u’|“2”“OÇ“”)+”*U”+€”+¬”,Ø”+•1• Q•.r•¡•N¸•v–¸~–7—ˆ>—4Ç—3ü—80˜-i˜j—˜=™<@™c}™Zá™*<š.gš–š/³š&ãš.
+›9›M›a›t›‡›7£›¯Û›4‹œPÀœ˜�„ª�/ž7Nžc†žHêžB3Ÿ&vŸb�Ÿ7 P8 ‰ 
– [¤ �¡H‚¡sË¡G?¢.‡¢7¶¢î¢þ¢s
£V�£fØ£‚?¤/Â¤>ò¤"1¥-T¥a‚¥Hä¥†-¦b´¦U§Em§`³§9¨N¨Sd¨,¸¨cå¨5I©3©2³©æ©1ù©/+ªB[ª5žªÔªXôª5M«Mƒ«0Ñ«5¬78¬:p¬4«¬à¬/÷¬7'­5_­6•­)Ì­)ö­g ®4ˆ®V½®$¯!9¯"[¯#~¯#¢¯%Æ¯%ì¯›°‘®°�@±“Î±yb²8Ü²\³gr³VÚ³‡1´r¹´[,µsˆµrüµªo¶z·›•·Â1¸øô¸í¹›ñº¶�»ÂD¼
+½U¾lh¾^Õ¾�4¿p¶¿S'ÀS{ÀZÏÀ`*Áb‹Á\îÁRKÂ7žÂJÖÂU!ÃowÃ¢çÃbŠÄ`íÄ²NÅ}ÆbÆwâÆ¼ZÇ€ÈC˜ÈOÜÈµ,ÉRâÉm5Êm£Ê³Ë›ÅË^aÌSÀÌ]ÍWrÍ}ÊÍuHÎk¾Îa*ÏiŒÏ’öÏd‰Ð–îÐD…ÑÊÑUÏÑðÄþ˜×až)¸¬Ñµa-š‹ð±Â¥¹ß™þ=Šˆ[aá][îW˜)Õ��»ÒôyWÚ.êàÒ4°¥š´B[ÒEN�zŸ—ûß0Ô¿
Øï3æ…~çÖ®àZCÑØö®’6þNtó„þ°ý±ïºæ¯[iKƒìuÝÉìá›Å®!�V¯z1Aúañmó.RÜâRüG¢?�c8ƒííñu
+ÂaL€Z“`#qËï c0NË®`³Î&Fx„—\ÿ‹j¼èÕf‹=Ú;p„)KÉVmòƒûý¿KùQ>FAµ(ÍÂ/ƒ5–·<
+ü_-…‰&@èíØ¾Ç·‡hÎkk¶Ï]w£ K§Iîßéäk�Kä� sDzç1‡Y×dëZ“ÚCyÌÐZž…qVÚ+{ÄŽÙ$T¬ð1q@›Â©e¬ðîeñõ”Wg²–Å”–0³	¯¬‘“ƒgÿ¤ÃýJûi±@€0*!�qÿí'Üá	•Š÷FxC<ÂnAÐKcd•%gLpÉ˜r3NÛê$â°Ú
+Ô¡Hùµ@jÅ2nœX8‡{ÝÏcÈ™Y¹Ä¥âYüQWÛ–�eB'=ÀÐÖ”vï£é­…ŽPh¯DÌQ»ÀL3u‡/Ýbý×Ï¼n«²nk}¾‰ H¥ø;/êB9q;ÉIRa(Í”
+ðÇêôVý°½¦I¦¿Óe7T½ÛeófÉþÓD¼Mc,ÁÓ¼Œ]§º#6ort"$1àãO
+/%ŸOXÖ'_§ooú\¹ÓTo3Dö]ò�<÷yd.9{p9¨×?Pˆ^m¶=ÊŒ.q7|î+¸¥Ì¸#@HbCÙ�ÕF)\çšáv-�Ù•Ô*†Äá»“È“¾c#¤Mì&«‰!X>f€ƒõs’OEyç†‰ÊlçmŸ�æ¦â]ôánB»¨2�ŒIà;Êçäå	’>Þåû"¤¦|?7ílì‹}ZœU:E�Tq?�|ä»0ljk•F,Ó':œ‹Uy-Oìñ^|VÎã¢*”{E½éõÂ�SyÔÇÆ0Ž°MwI§ÆrI^Q44ªÖöX]Æf”&'<�’c;x¢¶<¾ÙÃ4‰/~R3±N7Ð‘OÕÁÃÆÔò52òØù³OoV%îòÆ5ü)s+€Q¥ûfRõsŒö, (ˆ§8è‚˜,U 2`Ãž�YËL:ÞJó¸€ÇH3$}d¨�ÉD´ãå6VÄ-™%£±ÜŸ·X£ÑÒ¬Ã÷ÀÛÌˆã*"÷i>¹/ØI¨ŠÌ~£(ÏwP[$?(~×¸èÏ¦U«:Szv%bm³_ó•~Y¼CšSôSë•Ê{ŒS«Mg¹‹H†Ä½pv›åºü&*âò`4iXµ.x¤1×tô¶ñ07—Åx�l»ˆ÷W&
+ÞnÑª¡¾$eB-55¡ÍRAj9¡UCÎå1´~ö¸,uB€\oŸ™^__, AÎZ£}†HrÑ²U—„› ;F�ìÐ%ŠÛ*4N#˜lG·ª_Ÿ,‘:
ÀüÌÍd}LãD{hEªhÛëÞÿœÀW&nù9­¶­ÚAêXv68*LhJrRèg]œ1.øÆ‘ïý¢ºG�þ`œ"� :mTÞ„éðÁ;p�Å)Ùt…–Ü|bºû�Î¢˜ÿ$hlzŽxÜ­Ò6ø´ÀÇ6sîJ=ñ‚µózèZrP95SØújõ¯`CÍw\Š_›—ˆd(‘U¢‚½mpÍâWÿ³¨t‚³8²­>å[�g<ÐÊ^MSäj.äö­’µbšFÁGÖùø°NP=w+í¶92!¿«(Gæ‚±^k?ž Êé#¡ïÞ™/	©‚bß7!õŠQvº¾i‘†?h©+·«†Å
<AË"4™“uP"kGã
OÔ´!|8éfÙMÝ:ú¿YÝªÈßžMfŽ'›@@Ë ž[JD!²\à>`wª²Ó uæ¨¦…o	®�´ŒÈ¿KŽ\e^#J"ëløH}¤7Çëad
§’–š¤ù3¹æBTÁ+Õ�—E¼-‡stÕYP÷Ü©Ã¡Q)5‰b½‡ê©ß6·Á	%È'©
8„ôJÒ=+>
 Lg¯Ý®úëúÏÈpÑË�Ti2
+2Ö	Gøijà¬E%Ò,Ò3ÒŒ�¨�¼�Ð�ä�ø�‘ ‘4‘H‘\‘p‘„‘˜‘´‘È‘ä‘ø‘’ ’4’H’\’p’„’˜’¬’È’Ü’ð’“0“L“`“t“ˆ“œ“¸“Ì“à“ô“”$”8”L”`”t”ˆ”œ”°”Ä”à”ü”•$•H•\•p•„•˜•¬•À•Ü•ø•–(–<–P–d–x–Œ– –´–È–Ü–ð–——,—@—T—h—|—�—¬—È—Ü—ð—˜ ˜4˜H˜\˜p˜„˜˜˜¬˜À˜Ü˜ø˜™(™D™X™l™€™œ™¸™Ô™è™ü™š,š@šTšhš|š�š¤š¸šÔšèšüš›,›@›T›h›|›¨›¼›Ø›ì›œœ(œ<œPœdœxœŒœ œ´œÈœäœøœ�(�<�P�d�x�Œ� �´�È�Ü�ø�ž ž<ž`ž|ž�ž¤ž¸žÌžèžüžŸ$Ÿ@ŸTŸhŸ|Ÿ�Ÿ¤Ÿ¸ŸÌŸàŸôŸ , @ T x Œ   ´ È Ü ð ¡(¡D¡X¡l¡€¡”¡¨¡¼¡Ð¡ä¡ø¡¢ ¢4¢H¢\¢p¢„¢˜¢¬¢À¢Ü¢ø¢£ £<£P£d£x£Œ£ £´£È£Ü£ð£¤(¤<¤X¤t¤ˆ¤œ¤°¤Ì¤è¤¥¥,¥H¥\¥p¥„¥˜¥¬¥À¥Ô¥è¥¦¦,¦@¦\¦p¦„¦˜¦¬¦Ø¦:Òÿÿÿÿ\Ò"ÿÿÿÿ’Ò ÿÿÿÿ¹Ò5ÿÿÿÿõÒ%ÿÿÿÿ!Ó)ÿÿÿÿQÓ(ÿÿÿÿ€Ó/ÿÿÿÿ¶ÓÿÿÿÿÒÓ'ÿÿÿÿÔ-ÿÿÿÿ.ÔÿÿÿÿKÔÿÿÿÿvÔ $ÿÿÿÿÂÔ ÿÿÿÿêÔ%ÿÿÿÿ'Õÿÿÿÿ[Õ*ÿÿÿÿ†Õ.ÿÿÿÿ¶Õ)1ÿÿÿÿÖ%ÿÿÿÿ6Ö9ÿÿÿÿpÖ1ÿÿÿÿ¢Ö
+2ÿÿÿÿÞÖ"ÿÿÿÿ×3ÿÿÿÿF×ÿÿÿÿm×9ÿÿÿÿ½×%ÿÿÿÿð×
+HÿÿÿÿDØ
+/ÿÿÿÿ›Ø)ÿÿÿÿÜØ
+6ÿÿÿÿÙ
+>ÿÿÿÿdÙ
+0ÿÿÿÿžÙ
+FÿÿÿÿîÙ
+ÿÿÿÿ0Ú
++ÿÿÿÿeÚ
+ÿÿÿÿ�Ú
+"ÿÿÿÿ¹Ú@)ÿÿÿÿ(Û
+/ÿÿÿÿaÛ
+ ÿÿÿÿ‹Û-ÿÿÿÿÒÛ6ÿÿÿÿÜ6ÿÿÿÿiÜ
+7ÿÿÿÿªÜ
+?ÿÿÿÿóÜ
+ÿÿÿÿÝ4ÿÿÿÿeÝ+ÿÿÿÿ�Ý-ÿÿÿÿ×Ý3ÿÿÿÿÞ0ÿÿÿÿRÞ 0ÿÿÿÿÒÞ
+-ÿÿÿÿ	ß(ÿÿÿÿEß
+-ÿÿÿÿ|ßÿÿÿÿ®ß6ÿÿÿÿëß>ÿÿÿÿ0à#ÿÿÿÿ[àÿÿÿÿ—àÿÿÿÿÓà
+2ÿÿÿÿá
+.ÿÿÿÿGáFÿÿÿÿŽá
+2ÿÿÿÿÊá
+2ÿÿÿÿâ
+2ÿÿÿÿBâ
+2ÿÿÿÿ~â
+2ÿÿÿÿºâ
+2ÿÿÿÿöâFÿÿÿÿ=ã
+9ÿÿÿÿ€ã
+7ÿÿÿÿÁã
+9ÿÿÿÿäFÿÿÿÿKäFÿÿÿÿ’ä	2ÿÿÿÿÍä+ÿÿÿÿÿä.ÿÿÿÿ4å+ÿÿÿÿfå-ÿÿÿÿ›å0ÿÿÿÿéå"ÿÿÿÿ(æ!ÿÿÿÿ[æ
+*ÿÿÿÿ‘æ
+AÿÿÿÿÜæ
+dÿÿÿÿJç
+$ÿÿÿÿxç1ÿÿÿÿ´ç1ÿÿÿÿæç
+ÿÿÿÿè5ÿÿÿÿQè&ÿÿÿÿ…è=ÿÿÿÿÕè&ÿÿÿÿ)é+ÿÿÿÿhéÿÿÿÿœé]ÿÿÿÿ	ê!5ÿÿÿÿ`êKÿÿÿÿ¬ê<"ÿÿÿÿ
+ë$ÿÿÿÿCë7
+ÿÿÿÿ…ëÿÿÿÿÍë;ÿÿÿÿ5ì?ÿÿÿÿ“ìÿÿÿÿ¼ì2ÿÿÿÿöìÿÿÿÿ'íÿÿÿÿYí=ÿÿÿÿ¨íIÿÿÿÿî(ÿÿÿÿIîIÿÿÿÿ¬î!ÿÿÿÿâî!ÿÿÿÿïÿÿÿÿCï+ÿÿÿÿpï=ÿÿÿÿ®ï5ÿÿÿÿäï@ÿÿÿÿ)ð7ÿÿÿÿað-ÿÿÿÿ�ðÿÿÿÿ¬ð-ÿÿÿÿéð
+"	ÿÿÿÿ<ñ?ÿÿÿÿ}ñ8ÿÿÿÿ¾ñBOÿÿÿÿOò<ÿÿÿÿ’ò\ÿÿÿÿõòOÿÿÿÿKó\ÿÿÿÿ®óQÿÿÿÿôhÿÿÿÿuô&ÿÿÿÿ¢ôiÿÿÿÿõQÿÿÿÿdõ6ÿÿÿÿ›õ:ÿÿÿÿðõ8I
ÿÿÿÿ~ö2
ÿÿÿÿ½ö+:ÿÿÿÿ$÷6?ÿÿÿÿ™÷Zÿÿÿÿ÷÷WÿÿÿÿPøRDÿÿÿÿæøTÿÿÿÿ;ùzÿÿÿÿ¶ùVÿÿÿÿ
ú
+Yÿÿÿÿpú>ÿÿÿÿÍúcÿÿÿÿ1ûÿÿÿÿpû/ÿÿÿÿüEÿÿÿÿü
+•ÿÿÿÿ ý
+0hÿÿÿÿÄýdÿÿÿÿGþ
+gÿÿÿÿ¸þ
+tÿÿÿÿ6ÿ
+bÿÿÿÿ¢ÿ
+…ÿÿÿÿ1
+9/ÿÿÿÿ£
+Mÿÿÿÿú
+QÿÿÿÿU
+Vÿÿÿÿµ|UÿÿÿÿŒ
+Pÿÿÿÿæ
+Aÿÿÿÿ1(\ÿÿÿÿµj0ÿÿÿÿOj(ÿÿÿÿá
+rÿÿÿÿ]
+kÿÿÿÿÒ
+=ÿÿÿÿmÿÿÿÿ¡_
ÿÿÿÿ[
ÿÿÿÿygÿÿÿÿá^3ÿÿÿÿr71(HÿÿÿÿJ	
+[ÿÿÿÿ¯	L'ÿÿÿÿ"
+
+\ÿÿÿÿˆ
+.5ÿÿÿÿë
+hÿÿÿÿZ|ÿÿÿÿÝRÿÿÿÿ7E%ÿÿÿÿ¨E%ÿÿÿÿ

+kÿÿÿÿŽ

+Wÿÿÿÿï
gÿÿÿÿW
+Wÿÿÿÿ¸
+Wÿÿÿÿ
+Wÿÿÿÿz
+YÿÿÿÿÝ
+Yÿÿÿÿ@
+Yÿÿÿÿ£gÿÿÿÿ
+^ÿÿÿÿs
+\ÿÿÿÿÙ
+^ÿÿÿÿAgÿÿÿÿ©gÿÿÿÿ	Yÿÿÿÿs\ÿÿÿÿÖfÿÿÿÿC]ÿÿÿÿ§bÿÿÿÿ6]ÿÿÿÿ®6Iÿÿÿÿ-<ÿÿÿÿ†
+Tÿÿÿÿæ
+ÿÿÿÿo
+³ÿÿÿÿ,
+Nÿÿÿÿ„gÿÿÿÿökÿÿÿÿb
+)ÿÿÿÿ•7`ÿÿÿÿ,PÿÿÿÿŠqÿÿÿÿH5ÿÿÿÿ¤\ÿÿÿÿ)#@ÿÿÿÿŒ³ÿÿÿÿX;Yÿÿÿÿð†ÿÿÿÿwi4ÿÿÿÿ8ÿÿÿÿiyÿÿÿÿò@ ÿÿÿÿm 4iÿÿÿÿ"!=kÿÿÿÿÊ!Gÿÿÿÿ"Tÿÿÿÿ†"+1ÿÿÿÿâ".5ÿÿÿÿE#‡ÿÿÿÿç#)hÿÿÿÿx$2ÿÿÿÿÉ$/hÿÿÿÿ`%!^ÿÿÿÿß%^ÿÿÿÿQ&3ÿÿÿÿ¥&Hÿÿÿÿï&uÿÿÿÿh'XÿÿÿÿÁ'mÿÿÿÿ3(bÿÿÿÿ–(Pÿÿÿÿç(! ÿÿÿÿ()8Zÿÿÿÿº)
+@/ÿÿÿÿN*‘ÿÿÿÿ	    TLS: %pA	<corrupt: 0x%04lx>	Export Address Table 			Export Address Table 		%08lx
+	Invalid Export Address Table rva (0x%lx) or entry count (0x%lx)
+	Invalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)
+	Invalid Ordinal Table rva (0x%lx) or entry count (0x%lx)
+	Name Pointer Table 			Ordinal Table 				[%4ld] <corrupt offset: %lx>
+	[Name Pointer/Ordinal] Table	%08lx
 	code-base %08lx toc (loadable/actual) %08lx/%08lx
-	non-TLS: %A	reloc %4d offset %4x [%4lx] %s	vma:  Hint/Ord Member-Name Bound-To
+	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:  Hint/Ord Member-Name Bound-To
+
 
-	DLL Name: %s
+	DLL Name: %.*s
 
 
 PE File Base Relocations (interpreted .reloc section contents)
@@ -76,8 +154,12 @@ PE File Base Relocations (interpreted .r
 
 Characteristics 0x%x
 
+Dump of %s
+
 Dynamic Section:
 
+Error: section %s contains the debug data starting address but it is too small
+
 Exec Auxiliary Header
 
 Export Address Table -- Ordinal Base %ld
@@ -95,20 +177,35 @@ Stack size for functions.  Annotations:
 The Export Tables (interpreted %s section contents)
 
 
+The Function Table (interpreted %s section contents)
+
 The Function Table (interpreted .pdata section contents)
 
 The Import Tables (interpreted %s section contents)
 
+There is a debug directory in %s at 0x%lx
+
+
+There is a debug directory in %s, but that section has no contents
+
+There is a debug directory, but the section containing it could not be found
+
 There is a first thunk, but the section containing it could not be found
 
 There is an export table in %s at 0x%lx
 
 There is an export table in %s, but it does not fit into that section
 
+There is an export table in %s, but it is too small (%d)
+
+There is an export table in %s, but that section has no contents
+
 There is an export table, but the section containing it could not be found
 
 There is an import table in %s at 0x%lx
 
+There is an import table in %s, but that section has no contents
+
 There is an import table, but the section containing it could not be found
 
 Version References:
@@ -124,9 +221,11 @@ WARNING: Extra data in .rsrc section - i
 ppcboot header:
         pc: 0x%08x
     *unhandled* cmd %u
+    address: 0x%08x
     address: 0x%08x, size: %u
     flags: %u, address: 0x%08x, pd-address: 0x%08x
     global name: %.*s
+    len: %u bits
     linkage index: %u, replacement insn: 0x%08x
     name: %.*s
     pc: 0x%08x
@@ -136,8 +235,16 @@ ppcboot header:
     psect idx 3: %u, offset 3: 0x%08x %08x
     psect: %u, offset: 0x%08x %08x
     routine name: %.*s
-   %02u    %s%s %s
-   (type: %3u, size: 4+%3u):    *unhandled* cmd %u
+   %02u    (type: %3u, size: 4+%3u):    *unhandled* cmd %u
+   Error: The compile date is truncated
+   Error: The length is less than the length of an EEOM record
+   Error: The length is less than the length of an EMH record
+   Error: The module name is missing
+   Error: The module name is too long
+   Error: The module version is missing
+   Error: The module version is too long
+   Error: The record length is less than the size of an EMH_MHD record
+   Error: length larger than remaining space in record
    alignment  : 2**%u
    alloc (len)   : %u (0x%08x)
    alloc (len): %u (0x%08x)
@@ -149,6 +256,8 @@ ppcboot header:
    compiler   : %.*s
    completion code: %u
    copyright: %.*s
+   cpusubtype: %#lx%s
+   cputype:    %#lx (%s)
    declfile: len: %u, flags: %u, fileid: %u
    deflines %u
    entity name   : %.*s
@@ -156,7 +265,9 @@ ppcboot header:
    error severity: %x
    file: %.*s
    filename   : %.*s
-   flags         : 0x%08x   flags      : 0x%04x   flags: %d, language: %u, major: %u, minor: %u
+   filetype:   %#lx
+   flags         : 0x%08x   flags      : 0x%04x   flags:      %#lx
+   flags: %d, language: %u, major: %u, minor: %u
    flags: 0x%04x   formfeed
    id match      : %x
    image offset  : 0x%08x
@@ -165,6 +276,7 @@ ppcboot header:
    linkage index: %u, procedure name: %.*s
    linkage index: %u, procedure: %.*s
    linkage index: %u, psect: %u, offset: 0x%08x %08x
+   magic:      %#lx
    max record size: %u
    module name    : %.*s
    module name: %.*s
@@ -172,6 +284,7 @@ ppcboot header:
    name          : %.*s
    name        : %.*s
    name       : %.*s
+   ncmds:      %#lx
    number of cond linkage pairs: %u
    object name   : %.*s
    offset: 0x%08x, val: 0x%08x
@@ -186,6 +299,7 @@ ppcboot header:
    setlnum %u
    setrec %u
    signature: %.*s
+   sizeocmds:  %#lx
    structure level: %u
    symbol vector offset: 0x%08x
    symvec offset : 0x%08x
@@ -195,8 +309,8 @@ ppcboot header:
    transfer address   : 0x%08x
    vector      : 0x%08x
    version mask: 0x%08x
+   version:    %x
   %s (len=%u+%u):
-  %s: 0x%v
   %u: size: %u, flags: 0x%02x, name: %.*s
   EEOM (len=%u):
   EGSD (len=%u):
@@ -218,17 +332,20 @@ ppcboot header:
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   size : %u
- %08x 0x%08x 64B <EABI version unrecognised> BPAGE: %u COM COMM Change Protection (%u entries):
+  the input  file's flags: %s  the output file's flags: %s %08x (<unknown>) 0x%08x 64B <EABI version unrecognised> BPAGE: %u COM COMM Change Protection (%u entries):
  Code Address Reference Fixups:
- DEF EXE First address : 0x%08x 0x%08x
+ DEF EXE FPU support required:  First address : 0x%08x 0x%08x
  Fourth address: 0x%08x 0x%08x
  GBL Glue code sequence LIB Linkage Pairs Reference Fixups:
- NOMOD NORM OVR PIC QVAL RD REL Register restore millicode Register save millicode SHR Second address: 0x%08x 0x%08x
+ MACH-O header:
+ NOMOD NORM OVR PIC QVAL RD REL Register restore millicode Register save millicode Resources start at offset: %#03x
+ SHR Second address: 0x%08x 0x%08x
  Shareable images:
  Shared image  : 0x%08x 0x%08x
+ String table starts at offset: %#03x
  Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d
  Third address : 0x%08x 0x%08x
- UNI VEC VECEP WEAK WRT [BE8] [FPA float format] [G10] [LE8] [Maverick float format] [VFP float format] [Version1 EABI] [Version2 EABI] [Version3 EABI] [Version4 EABI] [Version5 EABI] [XGATE RAM offsetting] [abi unknown] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [absolute position] [d-float] [dynamic symbols use segment index] [fix dep] [floats passed in float registers] [floats passed in integer registers] [g-float] [hard-float ABI] [has entry point] [interworking enabled] [interworking flag not initialised] [interworking not supported] [interworking supported] [mapping symbols precede others] [memory=bank-model] [memory=flat] [new ABI] [no abi set] [nonpic] [not 32bitmode] [old ABI] [pic] [position independent] [relocatable executable] [soft-float ABI] [software FP] [sorted symbol table] [symbols have a _ prefix] [unknown ISA] [unsorted symbol table] [v10 and v32] [v32] corrupted GST
+ UNI VEC VECEP WEAK WRT [64-bit doubles] [BE8] [FDPIC ABI supplement] [FPA float format] [LE8] [Maverick float format] [VFP float format] [Version1 EABI] [Version2 EABI] [Version3 EABI] [Version4 EABI] [Version5 EABI] [XGATE RAM offsetting] [abi unknown] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [d-float] [dynamic symbols use segment index] [fix dep] [floats passed in float registers] [g-float] [hard-float ABI] [interworking enabled] [mapping symbols precede others] [memory=bank-model] [memory=flat] [new ABI] [no abi set] [nonpic] [not 32bitmode] [old ABI] [pic] [position independent] [relocatable executable] [soft-float ABI] [software FP] [sorted symbol table] [symbols have a _ prefix] [unknown ISA] [unsorted symbol table] [v10 and v32] [v32] alignment of 8-byte entities:  corrupted GST
  debug module table : vbn: %u, size: %u
  debug symbol table : vbn: %u, size: %u (0x%x)
  fixup info rva:  flags: 0x%04x global symbol table: vbn: %u, records: %u
@@ -248,7 +365,7 @@ ppcboot header:
  quad-word .address reference fixups:
  quad-word relocation fixups:
  section: base: 0x%08x%08x size: 0x%08x
- type: %3u, len: %3u (at 0x%08x):  unhandled EOBJ record type %u
+ size of doubles:  type: %3u, len: %3u (at 0x%08x):  unhandled EOBJ record type %u
  vbn: %u, pfc: %u, matchctl: %u type: %u ( vma:			Begin Address    End Address      Unwind Info
  vma:		Begin    End      EH       EH       PrologEnd  Exception
      		Address  Address  Handler  Data     Address    Mask
@@ -256,45 +373,45 @@ ppcboot header:
      		Address  Length   Length   32b exc  Handler   Data
  vma:            Hint    Time      Forward  DLL       First
                  Table   Stamp     Chain    Name      Thunk
-#<Invalid error code>%*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d
-%*.s Entry: %A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections%A has both ordered and unordered sections%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)
-%A:0x%v not found in function table
-%B (%s): Section flag %s (0x%x) ignored%B and %B are for different configurations%B and %B are for different cores%B contains CRIS v32 code, incompatible with previous objects%B contains non-CRIS-v32 code, incompatible with previous objects%B has has both the current and legacy Tag_MPextension_use attributes%B is not allowed to define %s%B section %A exceeds stub group size%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section%B uses unknown e_flags 0x%lx%B(%A): error: call to undefined function '%s'%B(%A): internal error: dangerous relocation%B(%A): internal error: out of range error%B(%A): internal error: unknown error%B(%A): internal error: unsupported relocation error%B(%A): invalid property table%B(%A): unsafe PID relocation %s at 0x%08lx (against %s in %s)%B(%A): warning: relax is suppressed for sections of alignment %d-bytes > 4-byte.%B(%A): warning: unaligned access to symbol '%s' in the small data area%B(%A): warning: unaligned small data access of type %d.%B(%A+0x%%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link%B(%A+0x%lx): %s relocation against SEC_MERGE section%B(%A+0x%lx): %s relocation against external symbol "%s"%B(%A+0x%lx): %s used with TLS symbol %s%B(%A+0x%lx): %s used with non-TLS symbol %s%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group relocations%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object%B(%A+0x%lx): R_METAG_TLS_LE/IENONPIC relocation not permitted in shared object%B(%A+0x%lx): R_NIOS2_TLS_LE16 relocation not permitted in shared object%B(%A+0x%lx): Stabs entry has invalid string index.%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section%B(%A+0x%lx): cannot handle %s for %s%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%B(%A+0x%lx): could not decode instruction; possible configuration mismatch%B(%A+0x%lx): invalid instruction for TLS relocation %s%B(%A+0x%lx): reloc against `%s': error %d%B(%A+0x%lx): relocation offset out of range (size=0x%x)%B(%A+0x%lx): unexpected fix for %s relocation%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'%B(%A+0x%lx): unresolvable relocation against symbol `%s'%B(%A+0x%lx):unexpected ARM instruction '0x%x' in TLS trampoline%B(%A+0x%lx):unexpected ARM instruction '0x%x' referenced by TLS_GOTDESC%B(%A+0x%lx):unexpected Thumb instruction '0x%x' in TLS trampoline%B(%A+0x%lx):unexpected Thumb instruction '0x%x' referenced by TLS_GOTDESC%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete
-%B(%s): warning: interworking not enabled.
-  first occurrence: %B: ARM call to Thumb%B(%s): warning: interworking not enabled.
-  first occurrence: %B: Thumb call to ARM%B(%s): warning: interworking not enabled.
-  first occurrence: %B: arm call to thumb%B(%s): warning: interworking not enabled.
-  first occurrence: %B: thumb call to arm
-  consider relinking with --support-old-code enabled%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'%B, section %A:
-  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC%B, section %A:
-  relocation %s should not be used in a shared object; recompile with -fPIC%B, section %A:
-  v10/v32 compatible object %s must not contain a PIC relocation%B, section %A: No PLT for relocation %s against symbol `%s'%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?%B, section %A: relocation %s is not allowed for global symbol: `%s'%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?%B, section %A: relocation %s with no GOT created%B, section %A: relocation %s with non-zero addend %d against local symbol%B, section %A: relocation %s with non-zero addend %d against symbol `%s'%B, section %A: unresolvable relocation %s against symbol `%s'%B, section `%A', to symbol `%s':
-  relocation %s should not be used in a shared object; recompile with -fPIC%B: !samegp reloc against symbol without .prologue: %s%B: %A+0x%lx: Unsupported jump between ISA modes; consider recompiling with interlinking enabled.%B: %s
-%B: %s not absolute%B: %s' accessed both as normal and thread local symbol%B: %s: invalid needed version %d%B: %s: invalid version %u (max %d)%B: '%s' accessed both as normal and thread local symbol%B: .got subsegment exceeds 64K (size %d)%B: .opd is not a regular array of opd entries%B: .preinit_array section is not allowed in DSO%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32%B: 0x%lx: fatal: reloc overflow while relaxing%B: 0x%lx: fatal: unaligned %s relocation 0x%lx%B: 0x%lx: fatal: unaligned branch target for relax-support relocation%B: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x%B: 0x%lx: warning: bad R_SH_USES load offset%B: 0x%lx: warning: bad R_SH_USES offset%B: 0x%lx: warning: bad count%B: 0x%lx: warning: could not find expected COUNT reloc%B: 0x%lx: warning: could not find expected reloc%B: 0x%lx: warning: symbol in unexpected section%B: @gprel relocation against dynamic symbol %s%B: @internal branch to dynamic symbol %s%B: @pcrel relocation against dynamic symbol %s%B: ABI is incompatible with that of the selected emulation%B: ABI mismatch: linking %s module with previous %s modules%B: ABI version %ld is not compatible with ABI version %ld output%B: ASE mismatch: linking %s module with previous %s modules%B: Alignment mismatch with previous modules%B: Architecture mismatch with previous modules%B: BE8 images only valid in big-endian mode.%B: Bad relocation record imported: %d%B: CALL15 reloc at 0x%lx not against global symbol%B: CALL16 reloc at 0x%lx not against global symbol%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000).%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch.%B: Cannot handle compressed Alpha binaries.
-   Use compiler flags, or objZ, to generate uncompressed binaries.%B: Cannot link together %s and %s objects.%B: Corrupt size field in group section header: 0x%lx%B: Failed to add renamed symbol %s%B: Function descriptor relocation with non-zero addend%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d%B: GOT overflow: Number of relocations with 8-bit offset > %d%B: GOT reloc at 0x%lx not expected in executables%B: IMPORT AS directive for %s conceals previous IMPORT AS%B: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte%B: Instruction set mismatch with previous modules%B: Invalid relocation type imported: %d%B: Malformed reloc detected for section %s%B: Nested OMIT_FP in %A.%B: No symbol version section for versioned symbol `%s'%B: Not enough room for program headers, try linking with -N%B: Only registers %%g[2367] can be declared using STT_REGISTER%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive%B: Relocation %s (%d) is not currently supported.
-%B: Relocations in generic ELF (EM: %d)%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined%B: TLS local exec code cannot be linked into shared objects%B: TLS sections are not adjacent:%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed%B: The first section in the PT_DYNAMIC segment is not the .dynamic section%B: The target (%s) of an %s relocation is in the wrong section (%A)%B: Too many sections: %d (>= %d)%B: Unable to sort relocs - they are in more than one size%B: Unable to sort relocs - they are of an unknown size%B: Unhandled import type; %x%B: Unknown mandatory EABI object attribute %d%B: Unknown relocation type %d
-%B: Unknown section type in a.out.adobe file: %x
-%B: Unmatched OMIT_FP in %A.%B: Unrecognised .directive command: %s%B: Unrecognised import name type; %x%B: Unrecognised import type; %x%B: Unrecognised machine type (0x%x) in Import Library Format archive%B: Unrecognized storage class %d for %s symbol `%s'%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s%B: Warning: Thumb BLX instruction targets thumb function '%s'.%B: Warning: bad `%s' option size %u smaller than its header%B: Warning: cannot determine the target function for stub section `%s'%B: Warning: thumb mode PLT generation not currently supported%B: XMC_TC0 symbol `%s' is class %d scnlen %d%B: `%A' offset of %ld from `%A' beyond the range of ADDIUPC%B: `%s' accessed both as FDPIC and thread local symbol%B: `%s' accessed both as normal and FDPIC symbol%B: `%s' accessed both as normal and thread local symbol%B: `%s' has line numbers but no enclosing section%B: `%s' in loader reloc but not loader sym%B: `ld -r' not supported with PE MIPS objects
-%B: addend -0x%x in relocation %s against symbol `%s' at 0x%lx in section `%A' is out of range%B: addend 0x%x in relocation %s against symbol `%s' at 0x%lx in section `%A' is out of range%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d%B: bad pair/reflo after refhi
-%B: bad reloc address 0x%lx in section `%A'%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'%B: bad section length in ihex_read_section%B: bad string table size %lu%B: bad symbol index: %d%B: cannot create stub entry %s%B: change in gp: BRSGP %s%B: class %d symbol `%s' has no aux entries%B: compiled for a 64 bit system and target is 32 bit%B: compiled for a big endian system and target is little endian%B: compiled for a little endian system and target is big endian%B: compiled normally and linked with modules compiled with -mrelocatable%B: compiled with -mrelocatable and linked with modules compiled normally%B: could not find output section %A for input section %A%B: could not find output section %s%B: could not read contents of section `%A'
-%B: csect `%s' not in enclosing section%B: don't know how to handle OS specific section `%s' [0x%8x]%B: don't know how to handle allocated, application specific section `%s' [0x%8x]%B: don't know how to handle processor specific section `%s' [0x%8x]%B: don't know how to handle section `%s' [0x%8x]%B: dtp-relative relocation against dynamic symbol %s%B: duplicate export stub %s%B: duplicate section `%A' has different contents
-%B: duplicate section `%A' has different size
-%B: endianness incompatible with that of the selected emulation%B: error: ABI mismatch with previous modules.%B: error: Cannot set _ITB_BASE_%B: error: Cortex-A8 erratum stub is allocated in unsafe location%B: error: Cortex-A8 erratum stub out of range (input file too large)%B: error: Instruction set mismatch with previous modules.%B: error: VFP11 veneer out of range%B: error: unaligned relocation type %d at %08x reloc %p
-%B: error: unknown mandatory EABI object attribute %d%B: error: unknown relocation type %d.%B: file class %s incompatible with %s%B: gp-relative relocation against dynamic symbol %s%B: hidden symbol `%s' in %B is referenced by DSO%B: hidden symbol `%s' isn't defined%B: ignoring duplicate section `%A'
-%B: illegal relocation type %d at address 0x%lx%B: illegal symbol index in reloc: %d%B: incompatible machine type. Output is 0x%x. Input is 0x%x%B: indirect symbol `%s' to `%s' is a loop%B: internal error in ihex_read_section%B: internal symbol `%s' in %B is referenced by DSO%B: internal symbol `%s' isn't defined%B: invalid SHT_GROUP entry%B: invalid link %lu for reloc section %s (index %u)%B: invalid relocation type %d%B: invalid string offset %u >= %lu for section `%s'%B: jump too far away
-%B: linking %s module with previous %s modules%B: linking 32-bit code with 64-bit code%B: linking 64-bit files with 32-bit files%B: linking UltraSPARC specific with HAL specific code%B: linking auto-pic files with non-auto-pic files%B: linking big-endian files with little-endian files%B: linking constant-gp files with non-constant-gp files%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%B: linking files compiled for HCS12 with others compiled for HC12%B: linking little endian files with big endian files%B: linking non-pic code in a position independent executable%B: linking trap-on-NULL-dereference with non-trapping files%B: loader reloc in read-only section %A%B: loader reloc in unrecognized section `%s'%B: local symbol `%s' in %B is referenced by DSO%B: misplaced XTY_LD `%s'%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'.%B: no group info for section %A%B: non-pic code with imm relocation against dynamic symbol `%s'%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the object file has no symbol table%B: pc-relative relocation against dynamic symbol %s%B: pc-relative relocation against undefined weak symbol %s%B: probably compiled without -fPIC?%B: protected symbol `%s' isn't defined%B: reloc %s:%d not in csect%B: reloc against a non-existant symbol index: %ld%B: relocation %s against %s `%s' can not be used when making a shared object%s%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%B: relocation %s against symbol `%s' isn't supported in x32 mode%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s%B: relocation %s can not be used when making a shared object; recompile with -fPIC%B: relocation %s cannot be used when making a shared object%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend%B: relocation size mismatch in %B section %A%B: relocs in section `%A', but it has no contents%B: section %A lma %#lx adjusted to %#lx%B: section %s: string table overflow at offset %ld%B: section `%A' can't be allocated in segment %d%B: sh_link [%d] in section `%A' is incorrect%B: sh_link of section `%A' points to discarded section `%A' of `%B'%B: sh_link of section `%A' points to removed section `%A' of `%B'%B: size field is zero in Import Library Format header%B: speculation fixup to dynamic symbol %s%B: stack size specified and %s set%B: string not null terminated in ILF object file.%B: symbol `%s' has unrecognized csect type %d%B: symbol `%s' has unrecognized smclas %d%B: symbol `%s' required but not present%B: taking the address of protected function '%s' cannot be done when making a shared library%B: the target (%s) of a %s relocation is in the wrong output section (%s)%B: too many sections (%d)%B: too many sections: %u%B: tp-relative relocation against dynamic symbol %s%B: unable to fill in DataDictionary[12] because .idata$5 is missing%B: unable to fill in DataDictionary[1] because .idata$2 is missing%B: unable to fill in DataDictionary[1] because .idata$4 is missing%B: unable to fill in DataDictionary[9] because __tls_used is missing%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing%B: unable to find ARM glue '%s' for `%s'%B: unable to find THUMB glue '%s' for `%s'%B: unable to find VFP11 veneer `%s'%B: unable to get decompressed section %A%B: unable to initialize compress status for section %s%B: unable to initialize decompress status for section %s%B: undefined reference to symbol '%s'%B: undefined sym `%s' in .opd section%B: undefined symbol on R_PPC64_TOCSAVE relocation%B: unexpected ATN type %d in external part%B: unexpected redefinition of indirect versioned symbol `%s'%B: unexpected reloc type %u in .opd section%B: unexpected type after ATN%B: unhandled dynamic relocation against %s%B: unimplemented %s
-%B: unimplemented ATI record %u for symbol %u%B: unknown [%d] section `%s' in group [%s]%B: unknown load command 0x%lx%B: unknown relocation type %d%B: unknown/unsupported relocation type %d%B: unrecognized relocation (0x%x) in section `%A'%B: unsupported relocation type %i%B: unsupported relocation type %i
-%B: unsupported relocation type %s%B: unsupported relocation: ALPHA_R_GPRELHIGH%B: unsupported relocation: ALPHA_R_GPRELLOW%B: uses _-prefixed symbols, but writing file with non-prefixed symbols%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)%B: uses non-prefixed symbols, but writing file with _-prefixed symbols%B: version node not found for symbol %s%B: warning: COMDAT symbol '%s' does not match section name '%s'%B: warning: Empty loadable segment detected, is this intentional ?
-%B: warning: Endian mismatch with previous modules.%B: warning: Incompatible elf-versions %s and  %s.%B: warning: Older version of object file encountered, Please recompile with current tool chain.%B: warning: allocated section `%s' not in segment%B: warning: duplicate line number information for `%s'%B: warning: illegal symbol index %ld in line numbers%B: warning: illegal symbol index %ld in relocs%B: warning: line number table read failed%B: warning: linking PIC files with non-PIC files%B: warning: linking abicalls files with non-abicalls files%B: warning: relocate SDA_BASE failed.%B: warning: selected VFP11 erratum workaround is not necessary for target architecture%B: warning: sh_link not set for section `%A'%B: warning: unaligned access to GOT entry.%B: warning: unknown EABI object attribute %d%B:%A%s exceeds overlay size
-%B:%A: Warning: deprecated Red Hat reloc %B:%d: Bad checksum in S-record file
-%B:%d: Unexpected character `%s' in S-record file
-%B:%d: unexpected character `%s' in Intel Hex file%B:%u: bad checksum in Intel Hex file (expected %u, found %u)%B:%u: bad extended address record length in Intel Hex file%B:%u: bad extended linear address record length in Intel Hex file%B:%u: bad extended linear start address length in Intel Hex file%B:%u: bad extended start address length in Intel Hex file%B:%u: unrecognized ihex type %u in Intel Hex file%C: warning: relocation to "%s" references a different segment
+#<invalid error code>%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC
+%%X%%P: unresolvable %s relocation against symbol `%s'
+%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d
+%03x %*.s Entry: %C: warning: relocation to "%s" references a different segment
+%F%P: %pB(%pA): error: need linked-to section for --gc-sections
+%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.
+%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%F%P: Could not assign group %pA target %pA to an output section. Retry without --enable-non-contiguous-regions.
 %F%P: already_linked_table: %E
-%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%B' can not be used when making an executable; recompile with -fPIE and relink with -pie
+%F%P: auto overlay error: %E
+%F%P: can not build overlay stubs: %E
+%F%P: corrupt input: %pB
+%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%pB' can not be used when making an executable; recompile with -fPIE and relink with -pie
+%F%P: failed to convert GOTPCREL relocation; relink with --no-relax
+%F%P: failed to create BND PLT section
+%F%P: failed to create GNU property section
+%F%P: failed to create GOT PLT .eh_frame section
+%F%P: failed to create GOT PLT section
+%F%P: failed to create GOT sections
+%F%P: failed to create IBT-enabled PLT section
+%F%P: failed to create PLT .eh_frame section
+%F%P: failed to create VxWorks dynamic sections
+%F%P: failed to create ifunc sections
+%F%P: failed to create the second PLT .eh_frame section
+%F%pA: failed to align section
+%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'
+%F%pB: PC-relative offset overflow in PLT entry for `%s'
+%F%pB: branch displacement overflow in PLT entry for `%s'
 %H __tls_get_addr lost arg, TLS optimization disabled
 %H arg lost __tls_get_addr, TLS optimization disabled
-%H: R_FRV_FUNCDESC references dynamic symbol with nonzero addend
-%H: R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend
+%H: %s against `%pT': error %d
+%H: %s for indirect function `%pT' unsupported
+%H: %s references dynamic symbol with nonzero addend
+%H: %s references optimized away TOC entry
+%H: %s reloc against `%s': error %d
+%H: %s reloc unsupported in shared libraries and PIEs
+%H: %s used with TLS symbol `%pT'
+%H: %s used with non-TLS symbol `%pT'
 %H: R_FRV_GETTLSOFF not applied to a call instruction
 %H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction
 %H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction
@@ -306,102 +423,117 @@ ppcboot header:
 %H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction
 %H: R_FRV_TLSMOFFHI not applied to a sethi instruction
 %H: R_FRV_TLSOFF_RELAX not applied to an ld instruction
+%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)
+%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)
 %H: cannot emit dynamic relocations in read-only section
 %H: cannot emit fixups in read-only section
+%H: error: %s against `%s' not a multiple of %u
+%H: error: %s not a multiple of %u
+%H: fixup branch overflow
+%H: got/toc optimization is not supported for %s instruction
+%H: non-zero addend on %s reloc against `%s'
 %H: reloc against `%s' references a different segment
 %H: reloc against `%s': %s
+%H: relocation %s for indirect function %s unsupported
 %H: relocation references symbol not defined in the module
 %H: relocation to `%s+%v' may have caused the error above
+%H: unresolvable %s against `%pT'
+%H: unresolvable %s relocation against symbol `%s'
+%H: warning: %s unexpected insn %#x.
 %P%F: --relax and -r may not be used together
-%P%F: failed creating ex9.it %s hash table: %E
 %P%X: can not read symbols: %E
-%P%X: read-only segment has dynamic relocations.
-%P: %B: %s is not supported for `%T'
-%P: %B: cannot create stub entry %s
-%P: %B: relocation %s is not yet supported for symbol %s
-%P: %B: the target (%s) of a %s relocation is in the wrong output section (%s)
-%P: %B: unexpected relocation type
-%P: %B: unknown relocation type %d for `%T'
-%P: %B: unknown relocation type %d for symbol %s
-%P: %B: warning: relocation against `%s' in readonly section `%A'.
-%P: %B: warning: relocation in readonly section `%A'.
-%P: %H: %s against `%T': error %d
-%P: %H: %s for indirect function `%T' unsupported
-%P: %H: %s references optimized away TOC entry
-%P: %H: %s reloc against `%s': error %d
-%P: %H: %s reloc against local symbol
-%P: %H: %s used with TLS symbol `%T'
-%P: %H: %s used with non-TLS symbol `%T'
-%P: %H: @local call to ifunc %s
-%P: %H: call to `%T' lacks nop, can't restore toc; recompile with -fPIC
-%P: %H: error: %s against `%s' not a multiple of %u
-%P: %H: error: %s not a multiple of %u
-%P: %H: non-zero addend on %s reloc against `%s'
-%P: %H: relocation %s for indirect function %s unsupported
-%P: %H: toc optimization is not supported for %s instruction.
-%P: %H: unresolvable %s against `%T'
-%P: %H: unresolvable %s relocation against symbol `%s'
-%P: %s not defined in linker created %s
-%P: %s offset too large for .eh_frame sdata4 encoding%P: .opd not allowed in ABI version %d
-%P: DW_EH_PE_datarel unspecified for this architecture.
-%P: alternate ELF machine code found (%d) in %B, expecting %d
-%P: bss-plt forced by profiling
-%P: bss-plt forced due to %B
-%P: can't build branch stub `%s'
-%P: can't find branch stub `%s'
-%P: cannot find opd entry toc for `%T'
-%P: copy reloc against `%T' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc
-%P: dynreloc miscount for %B, section %A
-%P: error in %B(%A); no .eh_frame_hdr table will be created.
-%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.
-%P: linkage table error against `%T'
-%P: long branch stub `%s' offset overflow
-%P: multiple entry points: in modules %B and %B
+%P%X: read-only segment has dynamic relocations
+%P: %H: error: %s with unexpected instruction %x
+%P: %pB: %s is not supported for `%pT'
+%P: %pB: warning: missing %s
+%P: %pB: warning: relocation against `%s' in read-only section `%pA'
+%P: %pB: warning: relocation in read-only section `%pA'
+%P: cannot find opd entry toc for `%pT'
+%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc
+%P: copy reloc against protected `%pT' is dangerous
+%P: linkage table error against `%pT'
+%P: multiple entry points: in modules %pB and %pB
 %P: relocatable link is not supported
-%P: stubs don't match calculated size
-%P: symbol '%s' has invalid st_other for ABI version 1
-%P: warning: creating a DT_TEXTREL in a shared object.
+%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s
+%P: warning: creating DT_TEXTREL in a PIE
+%P: warning: creating DT_TEXTREL in a shared object
+%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime
 %X%C: relocation to "%s" references a different segment
-%X%P: %B(%A): relocation "%R" goes out of range
-%X%P: overlay section %A does not start on a cache line.
-%X%P: overlay section %A is larger than a cache line.
-%X%P: overlay section %A is not in cache area.
-%X%P: overlay sections %A and %A do not start at the same address.
-%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B
-%s defined on removed toc entry%s duplicated
+%X%H: @local call to ifunc %s
+%X%H: cannot convert branch between ISA modes to JALX: relocation out of range
+%X%H: relocation %s against `%s' cannot be used when making a shared object; recompile with -fPIC
+%X%H: unsupported JALX to the same ISA mode
+%X%H: unsupported branch between ISA modes
+%X%H: unsupported bss-plt -fPIC ifunc %s
+%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled
+%X%P: %H: %s relocation unsupported for bss-plt
+%X%P: %pB(%pA): error: relocation for offset %V has no value
+%X%P: %pB(%pA): relocation "%pR" goes out of range
+%X%P: %pB(%pA): relocation "%pR" is not supported
+%X%P: %pB(%pA): relocation "%pR" returns an unrecognized value %x
+%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation
+%X%P: %pB: error: missing %s
+%X%P: attempted static link of dynamic object `%pB'
+%X%P: internal error: out of range error
+%X%P: internal error: unknown error
+%X%P: internal error: unsupported relocation error
+%X%P: overlay section %pA does not start on a cache line
+%X%P: overlay section %pA is larger than a cache line
+%X%P: overlay section %pA is not in cache area
+%X%P: overlay sections %pA and %pA do not start at the same address
+%X%P: stack/lrlive analysis error: %E
+%X%P: text relocations and GNU indirect functions will result in a segfault at runtime
+%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB
+%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections%pA has both ordered and unordered sections%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)
+%pA:0x%v not found in function table
+%pB (%s): section flag %s (%#lx) ignored%pB .opd not allowed in ABI version %d%pB and %pB are for different configurations%pB and %pB are for different cores%pB contains CRIS v32 code, incompatible with previous objects%pB contains non-CRIS-v32 code, incompatible with previous objects%pB has both the current and legacy Tag_MPextension_use attributes%pB is not allowed to define %s%pB section %pA exceeds stub group size%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section%pB uses 64-bit long double, %pB uses 128-bit long double%pB uses AltiVec vector ABI, %pB uses SPE vector ABI%pB uses IBM long double, %pB uses IEEE long double%pB uses double-precision hard float, %pB uses single-precision hard float%pB uses hard float, %pB uses soft float%pB uses r3/r4 for small structure returns, %pB uses memory%pB uses unknown e_flags 0x%lx%pB(%pA): error: call to undefined function '%s'%pB(%pA): error: internal relocs missing for secondary reloc section%pB(%pA): error: reloc table entry %u is empty%pB(%pA): error: secondary reloc %u is of an unknown type%pB(%pA): error: secondary reloc %u references a deleted symbol%pB(%pA): error: secondary reloc %u references a missing symbol%pB(%pA): error: secondary reloc section is empty!%pB(%pA): error: secondary reloc section processed twice%pB(%pA): info section index cannot be set because the section is not in the output%pB(%pA): info section index is invalid%pB(%pA): internal error: dangerous relocation%pB(%pA): internal error: out of range error%pB(%pA): internal error: unknown error%pB(%pA): internal error: unsupported relocation error%pB(%pA): invalid property table%pB(%pA): link section cannot be set because the output file does not have a symbol table%pB(%pA): multiple TLS models are not supported%pB(%pA): relocation %d has invalid symbol index %ld%pB(%pA): shared library symbol %s encountered whilst performing a static link%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction%pB(%pA): warning: unaligned access to symbol '%s' in the small data area%pB(%pA): warning: unaligned small data access of type %d%pB(%pA+%#lx): stabs entry has invalid string index%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete
+%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s%pB, section %pA:
+  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC%pB, section %pA: no PLT for relocation %s against symbol `%s'%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for global symbol: `%s'%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC%pB, section %pA: relocation %s with no GOT created%pB, section %pA: unresolvable relocation %s against symbol `%s'%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC%pB: !samegp reloc against symbol without .prologue: %s%pB: %pA invalid input section size%pB: %pA not in order%pB: %pA points past end of text section%pB: %pA: reloc overflow: %#x > 0xffff%pB: %s flag mismatch with previous modules%pB: %s local symbol at index %lu (>= sh_info of %lu)%pB: %s not absolute%pB: %s unsupported%pB: %s' accessed both as normal and thread local symbol%pB: %s: invalid needed version %d%pB: %s: invalid version %u (max %d)%pB: %s: reloc overflow: 0x%lx > 0xffff%pB: '%s' accessed both as normal and thread local symbol%pB: --in-implib only supported for Secure Gateway import libraries%pB: .gnu.version_d invalid entry%pB: .gnu.version_r invalid entry%pB: .got subsegment exceeds 64K (size %d)%pB: .opd is not a regular array of opd entries%pB: .preinit_array section is not allowed in DSO%pB: .rsrc merge failure: corrupt .rsrc section%pB: .rsrc merge failure: unexpected .rsrc size%pB: @gprel relocation against dynamic symbol %s%pB: @internal branch to dynamic symbol %s%pB: @pcrel relocation against dynamic symbol %s%pB: ABI is incompatible with that of the selected emulation%pB: ABI is incompatible with that of the selected emulation:
+  target emulation `%s' does not match `%s'%pB: ABI mismatch: linking %s module with previous %s modules%pB: ABI version %ld is not compatible with ABI version %ld output%pB: ASE mismatch: linking %s module with previous %s modules%pB: BE8 images only valid in big-endian mode%pB: Cannot handle relocation value size of %d%pB: Function descriptor relocation with non-zero addend%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d%pB: GOT overflow: number of relocations with 8-bit offset > %d%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections%pB: TLS local exec code cannot be linked into shared objects%pB: TLS relocation %s against undefined symbol `%s'%pB: TLS sections are not adjacent:%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead.%pB: XCOFF shared object when not producing XCOFF output%pB: __gp does not cover short data segment%pB: `%s' accessed both as FDPIC and thread local symbol%pB: `%s' accessed both as normal and FDPIC symbol%pB: `%s' accessed both as normal and thread local symbol%pB: `%s' and its special symbol are in different sections%pB: `%s' has line numbers but no enclosing section%pB: `%s' in loader reloc but not loader sym%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)%pB: absent standard symbol `%s'%pB: addend should be zero for got relocations%pB: addend should be zero for plt relocations%pB: aout header specifies an invalid number of data-directory entries: %u%pB: architecture mismatch with previous modules%pB: attempt to load strings from a non-string section (number %d)%pB: attempt to mix FDPIC and non-FDPIC objects%pB: attempt to write out unknown reloc type%pB: bad relocation record imported: %d%pB: bad relocation section name `%s'%pB: bad section length in ihex_read_section%pB: bad symbol definition: `Main' set to %s rather than the start address %s
+%pB: bad symbol index: %d%pB: base-plus-offset relocation against register symbol: %s in %pA%pB: base-plus-offset relocation against register symbol: (unknown) in %pA%pB: can not represent section `%pA' in a.out object file format%pB: can not represent section for symbol `%s' in a.out object file format%pB: can't link %s modules with %s modules%pB: can't link RVE with other target%pB: cannot allocate file name for file number %d, %d bytes
+%pB: cannot allocate memory for local GOT entries%pB: cannot create stub entry %s%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot link fdpic object file into non-fdpic executable%pB: cannot link non-fdpic object file into fdpic executable%pB: cannot link together %s and %s objects%pB: change in gp: BRSGP %s%pB: class %d symbol `%s' has no aux entries%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s%pB: compiled for a 64 bit system and target is 32 bit%pB: compiled for a big endian system and target is little endian%pB: compiled for a little endian system and target is big endian%pB: compiled normally and linked with modules compiled with -mrelocatable%pB: compiled with %s and linked with modules compiled with %s%pB: compiled with %s and linked with modules that use non-pic relocations%pB: compiled with -mrelocatable and linked with modules compiled normally%pB: could not find output section %pA for input section %pA%pB: could not read contents of section `%pA'
+%pB: csect `%s' not in enclosing section%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object%pB: directive LOCAL valid only with a register or absolute value%pB: dtp-relative relocation against dynamic symbol %s%pB: duplicate export stub %s%pB: duplicate section `%pA' has different contents
+%pB: duplicate section `%pA' has different size
+%pB: dynamic object with no .loader section%pB: dynamic relocation against `%pT' in read-only section `%pA'
+%pB: dynamic relocation in read-only section `%pA'
+%pB: endianness incompatible with that of the selected emulation%pB: entry function `%s' is empty%pB: entry function `%s' not output%pB: error: ABI mismatch with previous modules%pB: error: Cortex-A8 erratum stub is allocated in unsafe location%pB: error: Cortex-A8 erratum stub out of range (input file too large)%pB: error: PHDR segment not covered by LOAD segment%pB: error: VFP11 veneer out of range%pB: error: alignment power %d of section `%pA' is too big%pB: error: attribute section '%pA' too big: %#llx%pB: error: cannot create STM32L4XX veneer%pB: error: debug data ends beyond end of debug directory%pB: error: erratum 835769 stub out of range (input file too large)%pB: error: erratum 843419 immediate 0x%%pB: error: erratum 843419 stub out of range (input file too large)%pB: error: instruction set mismatch with previous modules%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file%pB: error: non-load segment %d includes file header and/or program header%pB: error: search_nds32_elf_blank reports wrong node%pB: error: unexpected symbol '%s' in COMDAT section%pB: error: unknown mandatory EABI object attribute %d%pB: failed to find info section for section %d%pB: failed to find link section for section %d%pB: failed to generate import library%pB: failed to read debug data section%pB: fatal: generic symbols retrieved before relaxing%pB: file class %s incompatible with %s%pB: gotoff relocation against dynamic symbol %s%pB: gp-relative relocation against dynamic symbol %s%pB: group section '%pA' has no contents%pB: hidden symbol `%s' in %pB is referenced by DSO%pB: hidden symbol `%s' isn't defined%pB: ignoring duplicate section `%pA'
+%pB: illegal section name `%pA'%pB: illegal symbol index %ld in relocs%pB: incompatible machine type; output is 0x%x; input is 0x%x%pB: incorrect size for symbol `%s'%pB: indirect symbol `%s' to `%s' is a loop%pB: instruction set mismatch with previous modules%pB: internal error in ihex_read_section%pB: internal error, internal register section %pA had contents
+%pB: internal error, symbol table changed size from %d to %d words
+%pB: internal symbol `%s' in %pB is referenced by DSO%pB: internal symbol `%s' isn't defined%pB: invalid entry in SHT_GROUP section [%u]%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions%pB: invalid link %u for reloc section %s (index %u)%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)
+%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote
+%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx
+%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo
+%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc
+%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx
+%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d
+%pB: invalid mmo file: file name for number %d was not specified before use
+%pB: invalid mmo file: file number %d `%s', was already entered as `%s'
+%pB: invalid mmo file: initialization value for $255 is not `Main'
+%pB: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx
+%pB: invalid mmo file: lop_end not last item in file
+%pB: invalid mmo file: unsupported lopcode `%d'
+%pB: invalid sh_link field (%d) in section number %d%pB: invalid special symbol `%s'; it must be a global or weak function symbol%pB: invalid standard symbol `%s'; it must be a global or weak function symbol%pB: invalid symbol table: duplicate symbol `%s'
+%pB: invalid version offset %lx (max %lx)%pB: line number overflow: 0x%lx > 0xffff%pB: linking %s module with previous %s modules%pB: linking 32-bit code with 64-bit code%pB: linking 64-bit files with 32-bit files%pB: linking UltraSPARC specific with HAL specific code%pB: linking auto-pic files with non-auto-pic files%pB: linking big-endian files with little-endian files%pB: linking constant-gp files with non-constant-gp files%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%pB: linking files compiled for HCS12 with others compiled for HC12%pB: linking little endian files with big endian files%pB: linking non-pic code in a position independent executable%pB: linking trap-on-NULL-dereference with non-trapping files%pB: loader reloc in read-only section %pA%pB: loader reloc in unrecognized section `%s'%pB: local symbol `%s' in %pB is referenced by DSO%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol%pB: machine flag conflict with target%pB: malformed reloc detected for section %pA%pB: malformed reloc detected for section %s%pB: misplaced XTY_LD `%s'%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no core to allocate section name %s%pB: no group info for section '%pA'%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: no valid group sections found%pB: non-pic code with imm relocation against dynamic symbol `%s'%pB: non-pic relocation against symbol %s%pB: not enough room for program headers, try linking with -N%pB: not enough version information%pB: only registers %%g[2367] can be declared using STT_REGISTER%pB: out of memory creating name for empty section%pB: out of memory in _bfd_elf_get_property%pB: page size is too large (0x%x)%pB: pc-relative relocation against dynamic symbol %s%pB: pc-relative relocation against undefined weak symbol %s%pB: plugin needed to handle lto object%pB: probably compiled without -fPIC?%pB: protected symbol `%s' isn't defined%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive%pB: register relocation against non-register symbol: %s in %pA%pB: register relocation against non-register symbol: (unknown) in %pA%pB: reloc against a non-existent symbol index: %ld%pB: relocatable link from %s to %s not supported%pB: relocation %s against %s%s`%s' can not be used when making %s%s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported%pB: relocation %s against `%s' can not be used when making a shared object%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against symbol `%s' isn't supported in x32 mode%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC%pB: relocation %s can not be used when making a shared object; recompile with -fPIC%pB: relocation %s cannot be used when making a shared object%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object%pB: relocation size mismatch in %pB section %pA%pB: relocations in generic ELF (EM: %d)%pB: relocs in section `%pA', but it has no contents%pB: section %pA: string table overflow at offset %ld%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %d%pB: section group entry number %u is corrupt%pB: sh_link [%d] in section `%pA' is incorrect%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'%pB: size field is zero in Import Library Format header%pB: special symbol `%s' only allowed for ARMv8-M architecture or later%pB: speculation fixup to dynamic symbol %s%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: support for local dynamic not implemented%pB: symbol `%s' has unrecognized csect type %d%pB: symbol `%s' has unrecognized smclas %d%pB: symbol `%s' required but not present%pB: symbol indicates overlay (not supported)%pB: taking the address of protected function '%s' cannot be done when making a shared library%pB: the target (%s) of a %s relocation is in the wrong output section (%s)%pB: the target (%s) of an %s relocation is in the wrong section (%pA)%pB: too many sections (%d)%pB: too many sections: %d (>= %d)%pB: too many sections: %u%pB: tp-relative relocation against dynamic symbol %s%pB: unable to create fake empty section%pB: unable to fill in DataDictionary[12] because .idata$5 is missing%pB: unable to fill in DataDictionary[1] because .idata$2 is missing%pB: unable to fill in DataDictionary[1] because .idata$4 is missing%pB: unable to fill in DataDictionary[9] because __tls_used is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing%pB: unable to find %s veneer `%s'%pB: unable to find name for empty section%pB: unable to get decompressed section %pA%pB: unable to initialize compress status for section %s%pB: unable to initialize decompress status for section %s%pB: unable to load COMDAT section name%pB: unable to sort relocs - they are in more than one size%pB: unable to sort relocs - they are of an unknown size%pB: undefined reference to symbol '%s'%pB: undefined sym `%s' in .opd section%pB: undefined symbol on R_PPC64_TOCSAVE relocation%pB: unexpected redefinition of indirect versioned symbol `%s'%pB: unexpected reloc type %u in .opd section%pB: unhandled dynamic relocation against %s%pB: unhandled import type; %x%pB: unhandled sparc machine value '%lu' detected during write processing%pB: unknown architecture %s%pB: unknown load command %#x%pB: unknown mandatory ARC object attribute %d%pB: unknown mandatory EABI object attribute %d%pB: unknown relocation type %d%pB: unknown type [%#x] section `%s'%pB: unknown type [%#x] section `%s' in group [%pA]%pB: unmatched OMIT_FP in %pA%pB: unrecognised machine type (0x%x) in Import Library Format archive%pB: unrecognized import name type; %x%pB: unrecognized import type; %x%pB: unrecognized relocation type %#x in section `%pA'%pB: unrecognized storage class %d for %s symbol `%s'%pB: unsupported AOUT relocation size: %d%pB: unsupported arch %#x%pB: unsupported bfd mach %#lx%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported transition from %s to %s%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
+%pB: uses %s instructions while previous modules use %s instructions%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols%pB: uses different e_flags (%#x) fields than previous modules (%#x)%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)%pB: uses instructions which are incompatible with instructions used in previous modules%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols%pB: version node not found for symbol %s%pB: visibility of symbol `%s' has changed%pB: warning core file truncated%pB: warning: %pA: line number overflow: %#x > 0xffff%pB: warning: %s BLX instruction targets %s function '%s'%pB: warning: %s relocation against symbol `%s' from %pA section%pB: warning: %s unsupported in shared mode%pB: warning: %s: line number overflow: 0x%lx > 0xffff%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section.%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: RVE PLT generation not supported%pB: warning: Weak TLS is implementation defined and may not work as expected%pB: warning: allocated section `%s' not in segment%pB: warning: bad `%s' option size %u smaller than its header%pB: warning: cannot determine the target function for stub section `%s'%pB: warning: claims to have 0xffff relocs, without overflow%pB: warning: duplicate line number information for `%s'%pB: warning: endian mismatch with previous modules%pB: warning: ignoring section flag %s in section %s%pB: warning: illegal symbol in line number entry %d%pB: warning: illegal symbol index %ld in relocs%pB: warning: illegal symbol index 0x%lx in line number entry %d%pB: warning: incompatible elf-versions %s and %s%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)%pB: warning: line number count (%#lx) exceeds section size (%#lx)%pB: warning: line number table read failed%pB: warning: linking PIC files with non-PIC files%pB: warning: linking abicalls files with non-abicalls files%pB: warning: loop in section dependencies detected%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u%pB: warning: multiple symbol tables detected - ignoring the table in section %u%pB: warning: no symbol for section '%s' found%pB: warning: older version of object file encountered, please recompile with current tool chain%pB: warning: relocate SDA_BASE failed%pB: warning: secondary relocation section '%s' for section %pA found - ignoring%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture%pB: warning: sh_link not set for section `%pA'%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
+%pB: warning: thumb-1 mode PLT generation not currently supported%pB: warning: unaligned access to GOT entry%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)%pB: warning: unknown EABI object attribute %d%pB: will not resolve runtime TLS relocation%pB:%d: bad checksum in S-record file%pB:%d: byte count %d too small%pB:%d: unexpected character `%s' in Intel Hex file%pB:%d: unexpected character `%s' in S-record file%pB:%pA%s exceeds overlay size
+%pB:%pA: %s and %s must be in the same input section%pB:%pA: error: attempting to write into an unallocated compressed section%pB:%pA: error: attempting to write over the end of the section%pB:%pA: error: attempting to write section into an empty buffer%pB:%pA: error: relocation references symbol %s which was removed by garbage collection%pB:%pA: error: try relinking with --gc-keep-exported enabled%pB:%pA: table %s missing corresponding %s%pB:%pA: table entry %s not word-aligned within table%pB:%pA: table entry %s outside table%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s%pB:%s has both normal and TLS relocs%pB:%s section %s: alignment 2**%u not representable%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)%pB:%u: bad extended address record length in Intel Hex file%pB:%u: bad extended linear address record length in Intel Hex file%pB:%u: bad extended linear start address length in Intel Hex file%pB:%u: bad extended start address length in Intel Hex file%pB:%u: unrecognized ihex type %u in Intel Hex file%pcrel_lo section symbol with an addend%s  branch         %lu
+  branch toc adj %lu
+  branch notoc   %lu
+  branch both    %lu
+  long branch    %lu
+  long toc adj   %lu
+  long notoc     %lu
+  long both      %lu
+  plt call       %lu
+  plt call save  %lu
+  plt call notoc %lu
+  plt call both  %lu
+  global entry   %lu%s defined on removed toc entry%s divide by zero%s duplicated
 %s duplicated in %s
-%s in overlay section%s(%s): relocation %d has invalid symbol index %ld%s: %s: reloc overflow: 0x%lx > 0xffff%s: .rsrc merge failure: corrupt .rsrc section%s: 0x%v 0x%v
-%s: Bad symbol definition: `Main' set to %s rather than the start address %s
-%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file
-%s: GAS error: unexpected PTB insn with R_SH_PT_16%s: Internal inconsistency error for value for
- linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx
-%s: Invalid relocation type exported: %d%s: LOCAL directive: Register $%ld is not a local register.  First global register is $%ld.%s: Malformed reloc detected for section %s%s: No core to allocate a symbol %d bytes long
-%s: No core to allocate section name %s
-%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A%s: TLS definition in %B section %A mismatches non-TLS reference in %B%s: TLS reference in %B mismatches non-TLS definition in %B section %A%s: TLS reference in %B mismatches non-TLS reference in %B%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry%s: The target (%s) of an %s relocation is in the wrong section (%s)%s: Unsupported transition from %s to %s%s: XCOFF shared object when not producing XCOFF output%s: __gp does not cover short data segment%s: access beyond end of merged section (%ld)%s: address 0x%s out of range for Intel Hex file%s: base-plus-offset relocation against register symbol: %s in %s%s: base-plus-offset relocation against register symbol: (unknown) in %s%s: can not represent section `%s' in a.out object file format%s: can not represent section `%s' in oasys%s: can not represent section for symbol `%s' in a.out object file format%s: cannot allocate file name for file number %d, %d bytes
-%s: cannot create stub entry %s%s: cannot link fdpic object file into non-fdpic executable%s: cannot link non-fdpic object file into fdpic executable%s: compiled as 32-bit object and %s is 64-bit%s: compiled as 64-bit object and %s is 32-bit%s: compiled with %s and linked with modules compiled with %s%s: compiled with %s and linked with modules that use non-pic relocations%s: could not write out added .cranges entries%s: could not write out sorted .cranges entries%s: directive LOCAL valid only with a register or absolute value%s: dynamic object with no .loader section%s: encountered datalabel symbol in input%s: error: unaligned relocation type %d at %08x reloc %08x
-%s: illegal section name `%s'%s: internal error, internal register section %s had contents
-%s: internal error, symbol table changed size from %d to %d words
-%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)
-%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote
-%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx
-%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo
-%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc
-%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx
-%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d
-%s: invalid mmo file: file name for number %d was not specified before use
-%s: invalid mmo file: file number %d `%s', was already entered as `%s'
-%s: invalid mmo file: initialization value for $255 is not `Main'
-%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx
-%s: invalid mmo file: lop_end not last item in file
-%s: invalid mmo file: unsupported lopcode `%d'
-%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx
-%s: invalid symbol table: duplicate symbol `%s'
-%s: line number overflow: 0x%lx > 0xffff%s: no initialized registers; section length 0
-%s: no such symbol%s: not implemented%s: not supported%s: object size does not match that of target %s%s: register relocation against non-register symbol: %s in %s%s: register relocation against non-register symbol: (unknown) in %s%s: relocatable link from %s to %s not supported%s: short data segment overflowed (0x%lx >= 0x400000)%s: string too long (%d chars, max 65535)%s: too many initialized registers; section length %ld
-%s: undefined version: %s%s: unknown relocation type %d%s: unrecognized symbol `%s' flags 0x%x%s: unsupported relocation type 0x%02x%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
-%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)%s: version count (%ld) does not match symbol count (%ld)%s: warning core file truncated%s: warning: %s relocation against symbol `%s' from %s section%s: warning: %s relocation to 0x%x from %s section%s: warning: %s: line number overflow: 0x%lx > 0xffff%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld%s: warning: PLT addend of %d to `%s' from %s section ignored%s: warning: cannot deal R_NDS32_25_ABS_RELA in shared mode.%s: warning: illegal symbol index %ld in relocs%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
-%s: warning: unaligned small data access. For entry: {%d, %d, %d}, addr = 0x%x, align = 0x%x.(at bit offset %u)
+%s has both normal and TLS relocs%s in overlay section%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA%s: TLS reference in %pB mismatches non-TLS reference in %pB%s: no such symbol%s: not implemented%s: not supported%s: undefined version: %s(at bit offset %u)
 (descriptor)
+(format %c%c%c%c signature %s age %ld)
 (no value)
 (not active)
 (not allocated)
@@ -410,48 +542,53 @@ ppcboot header:
 )
 *** check this relocation %s*unhandled*
 *unhandled* dst type %u
-*unknown**unknown*        , 8-byte data alignment, Value: %#08lx
+*unknown**unknown*        , Value: %#08lx
 , alias: %u
 , ext fixup offset: %u, no_opt psect off: %u, subtype: %u (%s)
-, symbol vector rva: - %s is G10, %s is not.got section not immediately after .plt section.rsrc merge failure: a directory matches a leaf.rsrc merge failure: differing directory versions
-.rsrc merge failure: dirs with differing characteristics
-.rsrc merge failure: duplicate leaf.rsrc merge failure: duplicate leaf: %s.rsrc merge failure: duplicate string resource: %d.rsrc merge failure: multiple non-default manifests32-bit double, 32bits gp relative relocation occurs for an external symbol64 bits *unhandled*
-64-bit double, : %u.%u
-: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC<Unrecognised flag bits set><corrupt string length: %#x><corrupt string offset: %#lx><unknown>@pltoff reloc against local symbolArchive has no index; run ranlib to add oneArchive object file in wrong formatAttempt to convert L32R/CALLX to CALL failedAttempt to do relocatable link with %s input and %s outputBASE_IMAGE       BFD %s assertion fail %s:%dBFD %s internal error, aborting at %s line %d
-BFD %s internal error, aborting at %s line %d in %s
-BFD Link Error: branch (PC rel16) to section (%s) not supportedBFD Link Error: jump (PC rel26) to section (%s) not supportedBad valueBase Relocation Directory [.reloc]Bound Import DirectoryBounds:
-CLICLR Runtime HeaderCLUSTERS_LOCKMGR COUNTERS         CPU              CTL_AUGRB (augment relocation base) %u
+, symbol vector rva: - %pB is 64-bit, %pB is not-march=%s: %s ISA extension not in alphabetical order: '%s' must come before '%s'.-march=%s: %s must separate with _-march=%s: Duplicate %s ISA extension: '%s'-march=%s: Expect number after `%dp'.-march=%s: ISA string is not in canonical order. `%c'-march=%s: ISA string must begin with rv32 or rv64-march=%s: Invalid or unknown %s ISA extension: '%s'-march=%s: `d' extension requires `f' extension-march=%s: `q' extension requires `d' extension-march=%s: first ISA subset must be `e', `i' or `g'-march=%s: rv%de is not a valid base ISA-march=%s: rv32 does not support the `q' extension-march=%s: rv32e does not support the `f' extension-march=%s: unexpected ISA string at end: %s-march=%s: unsupported ISA subset `%c'-mips32r2 -mfp64 (12 callee-saved).eh_frame_hdr entry overflow.eh_frame_hdr refers to overlapping FDEs.got section not immediately after .plt section.rsrc merge failure: a directory matches a leaf.rsrc merge failure: differing directory versions.rsrc merge failure: dirs with differing characteristics.rsrc merge failure: duplicate leaf.rsrc merge failure: duplicate leaf: %s.rsrc merge failure: duplicate string resource: %d.rsrc merge failure: multiple non-default manifests32-bit double, 32bits gp relative relocation occurs for an external symbol4-byte4-bytes64 bits *unhandled*
+64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC; recompile with -fPIE<Unrecognised flag bits set><corrupt info> %s<corrupt string length: %#x>
+<corrupt string offset: %#lx>
+<corrupt><unknown directory type: %d>
+<unknown mask flags><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBFD %s internal error, aborting at %s:%d
+BFD %s internal error, aborting at %s:%d in %s
+Base Relocation Directory [.reloc]Bound Import DirectoryBounds:
+CACHE use: CLICLR Runtime HeaderCLUSTERS_LOCKMGR COUNTERS         CPU              CTL_AUGRB (augment relocation base) %u
 CTL_DFLOC (define location)
 CTL_SETRB (set relocation base)
 CTL_STKDL (stack defined location)
 CTL_STLOC (set location)
 Copyright Header
 Corrupt .rsrc section detected!
-DSO missing from command lineDST__K_BEG_STMT_MODE not implementedDST__K_END_STMT_MODE not implementedDST__K_RESET_LINUM_INCR not implementedDST__K_SET_LINUM_INCR not implementedDST__K_SET_LINUM_INCR_W not implementedDST__K_SET_PC not implementedDST__K_SET_PC_L not implementedDST__K_SET_PC_W not implementedDST__K_SET_STMTNUM not implementedDebug DirectoryDebug module table:
+DSO missing from command lineDWARF error: DW_AT_comp_dir attribute encountered with a non-string formDWARF error: abstract instance recursion detectedDWARF error: can't find %s section.DWARF error: could not find abbrev number %uDWARF error: could not find variable specification at offset %lxDWARF error: found address size '%u', this reader can not handle sizes greater than '%u'DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 informationDWARF error: info pointer extends beyond end of attributesDWARF error: invalid abstract instance DIE refDWARF error: invalid maximum operations per instructionDWARF error: invalid or unhandled FORM value: %#xDWARF error: line info unsupported segment selector size %uDWARF error: mangled line number sectionDWARF error: mangled line number section (bad file number)DWARF error: ran out of room reading opcodesDWARF error: ran out of room reading prologueDWARF error: unhandled .debug_line version %dDWARF error: zero format countDW_EH_PE_datarel unspecified for this architectureDebug DirectoryDebug module table:
 Debug symbol table:
 Delay Import DirectoryDeprecated %s called
 Deprecated %s called at %s line %d in %s
-Description DirectoryDwarf Error: Bad abbrev number: %u.Dwarf Error: Can't find %s section.Dwarf Error: Could not find abbrev number %u.Dwarf Error: Invalid maximum operations per instruction.Dwarf Error: Invalid or unhandled FORM value: %#x.Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu).Dwarf Error: Unable to read alt ref %u.Dwarf Error: Unhandled .debug_line version %d.Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'.Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information.Dwarf Error: mangled line number section (bad file number).Dwarf Error: mangled line number section.EIHD: (size: %u, nbr blocks: %u)
+Description DirectoryEIHD: (size: %u, nbr blocks: %u)
 Entry offset        = 0x%.8lx (%ld)
-Error reading %s: %sError: %B has both the current and legacy Tag_MPextension_use attributesErrors encountered processing file %sException Directory [.pdata]Export Directory [.edata (or where ever we found it)]Export Flags 			%lx
-Export RVAFAILED to find previous HI16 relocFILES_VOLUMES    File format is ambiguousFile format not recognizedFile in wrong formatFile too bigFile truncatedFlag field          = 0x%.2x
-Forwarder RVAGALAXY           GP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
-ID: %#08lxIDC - Ident Consistency check
-IMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supported.
-IO               Image activation:  (size=%u)
+Error: %pB has both the current and legacy Tag_MPextension_use attributesException Directory [.pdata]Export Directory [.edata (or where ever we found it)]Export Flags 			%lx
+Export RVAFDE encoding in %pB(%pA) prevents .eh_frame_hdr table being createdFDPIC does not yet support %s relocation to become dynamic for executableFILES_VOLUMES    FPU-2.0FPU-3.0Flag field          = 0x%.2x
+Forwarder RVAGALAXY           GNU_MBIND section is unsupportedGOT and PLT relocations cannot be fixed with a non dynamic linkerGOT table size out of rangeGP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
+Hard float (32-bit CPU, 64-bit FPU)
+Hard float (32-bit CPU, Any FPU)
+Hard float (MIPS32r2 64-bit FPU 12 callee-saved)
+Hard float (double precision)
+Hard float (single precision)
+Hard float compat (32-bit CPU, 64-bit FPU)
+Hard or soft float
+IBT and SHSTK propertiesIBT propertyID: %#08lxIDC - Ident Consistency check
+IFUNC symbol %s in dynamic symbol table - IFUNCS are not supportedIMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supportedIO               Image activation:  (size=%u)
 Image activator fixup: (major: %u, minor: %u)
 Image identification: (major: %u, minor: %u)
 Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)
 Image symbol & debug table: (major: %u, minor: %u)
-Import Address Table DirectoryImport Directory [parts of .idata]Internal inconsistency: remaining %u != max %u.
-  Please report this bug.Invalid TARGET2 relocation type '%s'.Invalid bfd targetInvalid operationInvalid section index in ETIRJALX to a non-word-aligned addressLOGICAL_NAMES    Language Processor Name
+Import Address Table DirectoryImport Directory [parts of .idata]LOGICAL_NAMES    Language Processor Name
 Length              = 0x%.8lx (%ld)
-Linker: cannot init ex9 hash table error 
-Linker: error cannot fixed ex9 relocation 
-Load Configuration DirectoryMEMORY_MANAGEMENTMIPS16 and microMIPS functions cannot call each otherMISC             MULTI_PROCESSING Major/Minor 			%d/%d
-Malformed archiveMaximum stack required is 0x%v
-MeP: howto %d has type %dMemory exhaustedModule header
-NETWORKS         NORMALName 				No errorNo more archived filesNo symbolsNonrepresentable section on outputNot enough memory to sort relocationsNumber in:
+Load Configuration DirectoryLocal IFUNC function `%s' in %pB
+MEMORY_MANAGEMENTMIPS16 and microMIPS functions cannot call each otherMISC             MMU use: MULTI_PROCESSING Major/Minor 			%d/%d
+Maximum stack required is 0x%v
+MeP: howto %d has type %dMerging program properties
+Module header
+NETWORKS         NORMALName 				NoneNumber in:
 OPR_ADD (add)
 OPR_AND (logical and)
 OPR_ASH (arithmetic shift)
@@ -467,21 +604,22 @@ ppcboot header:
 OPR_REDEF (redefine symbol to curr location)
 OPR_ROT (rotate)
 OPR_SEL (select)
-OPR_SUB (substract)
+OPR_SUB (subtract)
 OPR_USH (unsigned shift)
-Object module NOT error-free !
 Ordinal Base 			%ld
-Output file requires shared library `%s'
-Output file requires shared library `%s.so.%s'
-POSIX            PROCESS_SCHED    PRVFXDPRVPICPSC - Program section definition
-PTA mismatch: a SHcompact address (bit 0 == 0)PTB mismatch: a SHmedia address (bit 0 == 1)Partition name      = "%s"
+PC-relative load from unaligned addressPIE executablePOSIX            PROCESS_SCHED    PRVFXDPRVPICPSC - Program section definition
+Partition name      = "%s"
 Partition[%d] end    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 Partition[%d] length = 0x%.8lx (%ld)
 Partition[%d] sector = 0x%.8lx (%ld)
 Please report this bug.
-RL78/G10 ABI conflict: cannot link G10 and non-G10 objects togetherR_BFIN_FUNCDESC references dynamic symbol with nonzero addendR_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addendR_FRV_TLSMOFFLO not applied to a setlo or setlos instruction
-Reading archive file mod timestampReference to the far symbol `%s' using a wrong relocation may result in incorrect executionRegister %%g%d used incompatibly: %s in %B, previously %s in %BRegister section has contents
-Relocation for non-REL psectRemoving unused section '%s' in file '%B'ReservedResource Directory [.rsrc]S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your codeSDA relocation when _SDA_BASE_ not definedSECURITY         SEC_RELOC with no relocs in section %sSH Error: unknown reloc type %dSHELL            SHRFXDSHRPICSPSC - Shared Image Program section def
+RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pBRL78 ABI conflict: cannot link %s file %pB with %s file %pBRL78 merge conflict: cannot link 32-bit and 64-bit objects togetherR_BFIN_FUNCDESC references dynamic symbol with nonzero addendR_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addendR_FRV_TLSMOFFLO not applied to a setlo or setlos instruction
+Reading archive file mod timestampRemoved property %W to merge %pB (0x%v) and %pB (0x%v)
+Removed property %W to merge %pB (0x%v) and %pB (not found)
+Removed property %W to merge %pB (not found) and %pB (0x%v)
+Removed property %W to merge %pB and %pB
+Removed property %W to merge %pB and %pB (not found)
+ReservedResource Directory [.rsrc]S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your codeSDA relocation when _SDA_BASE_ not definedSECURITY         SEC_RELOC with no relocs in section %pASHELL            SHRFXDSHRPICSHSTK propertySIMD use: SPSC - Shared Image Program section def
 STABLE           STA_CKARG (compare procedure argument)
 STA_GBL (stack global) %.*s
 STA_LI (stack literal)
@@ -524,28 +662,31 @@ ppcboot header:
 SYMG - Universal symbol definition
 SYMM - Global symbol definition with version
 SYMV - Vectored symbol definition
-SYSGEN           Section has no contentsSecurity DirectorySize error in section %sSource Files Header
-Special DirectorySpurious ALPHA_R_BSR relocStack analysis will ignore the call from %s to %s
-Stack overflow (%d) in _bfd_vms_pushStack size for call graph root nodes.
-Stack underflow in _bfd_vms_popStrides:
-Symbol %s not defined for fixups
-Symbol `%s' has differing types: %s in %B, previously REGISTER in %BSymbol `%s' has differing types: REGISTER in %B, previously %s in %BSymbol needs debug section which does not existSystem call errorTLS relocation invalid without dynamic sectionsTOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compilingTable Addresses
+SYSGEN           Security DirectorySoft float
+Source Files Header
+Special DirectoryStack size for call graph root nodes.
+Strides:
+Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pBTLS relocation invalid without dynamic sectionsTable Addresses
+The debug data size field in the data directory is too big for the sectionThe debug directory size is not a multiple of the debug directory entry size
 Thread Storage Directory [.tls]Time/Date stamp 		%lx
 Title Text Header
-Try enabling relaxation to avoid relocation truncationsUSRSTACKUnable to find equivalent output section for symbol '%s' from section '%s'Unable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because the offset (%d) is out of the allowed range, -32678 to 32767.
-Unexpected STO_SH5_ISA32 on local symbol is not handledUnexpected machine numberUnhandled OSF/1 core file section type %d
-Unhandled relocation %sUnknown EGSD subtype %dUnknown basic type %dUnknown reloc %sUnknown reloc %s + %sUnknown symbol in command %sUnrecognized INPUT_SECTION_FLAG %s
-Unrecognized TI COFF target id '0x%x'Unrecognized relocUnrecognized reloc type 0x%xUnsupported .stab relocationVOLATILE         Variable `%s' can only be in one of the small, zero, and tiny data regionsVariable `%s' cannot be in both small and tiny data regions simultaneouslyVariable `%s' cannot be in both small and zero data regions simultaneouslyVariable `%s' cannot be in both zero and tiny data regions simultaneouslyVariable `%s' cannot occupy in multiple small data regionsWarning, .pdata section size (%ld) is not a multiple of %d
-Warning: %B does not support interworking, whereas %B doesWarning: %B is truncated: expected core file size >= %lu, found: %lu.Warning: %B supports interworking, whereas %B does notWarning: %B uses %s (set by %B), %B uses %sWarning: %B uses %s (set by %B), %B uses unknown MSA ABI %dWarning: %B uses %s (set by %B), %B uses unknown floating point ABI %dWarning: %B uses double-precision hard float, %B uses single-precision hard floatWarning: %B uses hard float, %B uses soft floatWarning: %B uses r3/r4 for small structure returns, %B uses memoryWarning: %B uses soft float, %B uses single-precision hard floatWarning: %B uses unknown MSA ABI %d (set by %B), %B uses %sWarning: %B uses unknown MSA ABI %d (set by %B), %B uses unknown MSA ABI %dWarning: %B uses unknown floating point ABI %dWarning: %B uses unknown floating point ABI %d (set by %B), %B uses %sWarning: %B uses unknown floating point ABI %d (set by %B), %B uses unknown floating point ABI %dWarning: %B uses unknown small structure return convention %dWarning: %B uses unknown vector ABI %dWarning: %B uses vector ABI "%s", %B uses "%s"Warning: %B: Conflicting platform configurationWarning: %B: Unknown EABI object attribute %dWarning: %B: Unknown MSPABI object attribute %dWarning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with itWarning: Clearing the interworking flag of %B due to outside requestWarning: Not setting interworking flag of %B since it has already been specified as non-interworkingWarning: RL78_SYM reloc with an unknown symbolWarning: RX_SYM reloc with an unknown symbolWarning: Writing section `%s' to huge (ie negative) file offset 0x%lx.Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %AWarning: alignment %u of symbol `%s' in %B is smaller than %u in %BWarning: fixup count mismatch
-Warning: gc-sections option ignoredWarning: size of symbol `%s' changed from %lu in %B to %lu in %BWarning: type of symbol `%s' changed from %d to %d in %BWarning: writing archive was slow: rewriting timestamp
-Writing updated armap timestampXGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code.[%u]: %u
-[%u]: Lower: %u, upper: %u
-[abi=16-bit int, [abi=32-bit int, [whose name is lost]\%B: Warning: Arm BLX instruction targets Arm function '%s'._bfd_vms_output_counted called with too many bytes_bfd_vms_output_counted called with zero bytesaddressaddress not word alignarsize: %u, a0: 0x%08x
-bad section index in %sbanked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)base: %u, pos: %u
-bfd_mach_o_canonicalize_symtab: unable to load symbolsbfd_mach_o_read_symtab_symbol: name out of range (%lu >= %lu)bfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid section %d (max %lu): setting to undefinedbfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid type field 0x%x: setting to undefinedbfd_mach_o_read_symtab_symbol: unable to read %d bytes at %lubfd_mach_o_read_symtab_symbols: unable to allocate memory for symbolsbfd_mach_o_scan: unknown architecture 0x%lx/0x%lxbfd_pef_scan: unknown architecture 0x%lxblkbeg: address: 0x%08x, name: %.*s
+Too many unwind codes (%ld)
+Type                Size     Rva      Offset
+USRSTACKUnknownUnknown: %xUpdated property %W (%v) to merge %pB (0x%v) and %pB (not found)
+Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)
+VOLATILE         Virtual size of .pdata section (%ld) larger than real size (%ld)
+Warning: %s section size (%ld) is not a multiple of %d
+Warning: %s section size (%ld) is smaller than virtual size (%ld)
+Warning: %s section size is zero
+Writing updated armap timestampXGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code.[%u]: Lower: %u, upper: %u
+[abi=16-bit int, [abi=32-bit int, [whose name is lost]__tls_get_addr call offset overflow_bfd_vms_output_counted called with too many bytes_bfd_vms_output_counted called with zero bytes`%s' refers to a non entry functiona PDE objecta PIE objecta shared objectaddressaddress not word alignedalternate ELF machine code found (%d) in %pB, expecting %darchive has no index; run ranlib to add onearchive object file in wrong formatarray descriptor:
+array, dim: %u, bitmap: arsize: %u, a0: 0x%08x
+atomic, type=0x%02x %s
+attempt to convert L32R/CALLX to CALL failedattempt to do relocatable link with %s input and %s outputbad section index in %sbad valuebanked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)base: %u, pos: %u
+bfd_mach_o_canonicalize_symtab: unable to load symbolsbfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)bfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid section %d (max %lu): setting to undefinedbfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid type field 0x%x: setting to undefinedbfd_mach_o_read_symtab_symbol: unable to read %d bytes at %ubfd_mach_o_scan: unknown architecture 0x%lx/0x%lxbfd_pef_scan: unknown architecture 0x%lxblkbeg: address: 0x%08x, name: %.*s
 blkend: size: 0x%08x
-cannot emit dynamic relocations in read-only sectioncannot emit fixups in read-only sectioncannot find EMH in first GST record
-cannot handle R_MEM_INDIRECT reloc when using %s outputcannot read DMT
+branch (PC rel16) to section (%s) not supportedbranch to a non-instruction-aligned addressbss-plt forced by profilingbss-plt forced due to %pBcan't build branch stub `%s'can't find branch stub `%s'cannot convert a branch to JALX for a non-word-aligned addresscannot convert a jump to JALX for a non-word-aligned addresscannot create stub entry %scannot emit dynamic relocations in read-only sectioncannot emit fixups in read-only sectioncannot find EMH in first GST record
+cannot read DMT
 cannot read DMT header
 cannot read DMT psect
 cannot read DST
@@ -563,78 +704,87 @@ ppcboot header:
 cannot read GST record header
 cannot read GST record length
 class: %u, dtype: %u, length: %u, pointer: 0x%08x
-corrupt %s section in %Bcould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcould not open shared image '%s' from '%s'cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dangerous relocationdelta pc +%-4ddelta_pc_l: +0x%08x
+corrupt %s section in %pBcorrupt EEOM record - size is too smallcorrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)corrupt EGSD record type %d: size (%#x) is too smallcorrupt EGSD record: its psindx field is too big (%#lx)corrupt EGSD record: its size (%#x) is too smallcorrupt EIHD record - size is too smallcorrupt ETIR record encounteredcorrupt vms valuecould not find section %scould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcould not open shared image '%s' from '%s'cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dangerous relocationdangerous relocation errordelta pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
 descdimct: %u, aflags: 0x%02x, digits: %u, scale: %u
-discarded output section: `%A'discontiguous range (nbr: %u)
-dynamic relocation in read-only sectiondynamic variable `%s' is zero sizeenumbeg, len: %u, name: %.*s
+discarded output section: `%pA'discarding zero address range FDE in %pB(%pA).
+discontiguous range (nbr: %u)
+dst_define_location %u too largedynamic relocation in read-only sectiondynamic variable `%s' is zero sizedynreloc miscount for %pB, section %pAentry function `%s' disappeared from secure codeenumbeg, len: %u, name: %.*s
 enumelt, name: %.*s
 enumend
 epilog: flags: %u, count: %u
-error reading cpu type from elf private dataerror: %B contains a reloc (0x%s) for section %A that references a non-existent global symbolerror: %B does not use Maverick instructions, whereas %B doeserror: %B is already in final BE8 formaterror: %B is compiled as absolute position code, whereas target %B is position independenterror: %B is compiled as position independent code, whereas target %B is absolute positionerror: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%derror: %B is compiled for APCS-%d, whereas target %B uses APCS-%derror: %B is compiled for the EP9312, whereas %B is compiled for XScaleerror: %B passes floats in float registers, whereas %B passes them in integer registerserror: %B passes floats in integer registers, whereas %B passes them in float registerserror: %B requires more array alignment than %B preserveserror: %B requires more stack alignment than %B preserveserror: %B uses %s instructions but %B uses %serror: %B uses FPA instructions, whereas %B does noterror: %B uses Maverick instructions, whereas %B does noterror: %B uses VFP instructions, whereas %B does noterror: %B uses VFP register arguments, %B does noterror: %B uses hardware FP, whereas %B uses software FPerror: %B uses iWMMXt register arguments, %B does noterror: %B uses software FP, whereas %B uses hardware FPerror: %B uses the %s code model whereas %B uses the %s code modelerror: %B uses the %s data model but %B only uses MSP430 instructionserror: %B uses the %s data model whereas %B uses the %s data modelerror: %B uses the large code model but %B uses MSP430 instructionserror: %B uses the small code model but %B uses the %s data modelerror: %B: Conflicting CPU architectures %d/%derror: %B: Conflicting architecture profiles %c/%cerror: %B: Conflicting use of R9error: %B: Object has vendor-specific contents that must be processed by the '%s' toolchainerror: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'error: %B: SB relative addressing conflicts with use of R9error: %B: Unknown CPU architectureerror: %B: size of section %A is not multiple of address sizeerror: %B: unable to merge virtualization attributes with %Berror: Can't find symbol: _SDA_BASE_.error: Source object %B has EABI version %d, but target %B has EABI version %derror: fp16 format mismatch between %B and %Berror: inappropriate relocation type for shared library (did you forget -fpic?)error: required section '%s' not found in the linker scripterror: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %Berror: unknown Tag_ABI_array_object_alignment value in %Bexecutablefailed to allocate space for new APUinfo section.failed to compute new APUinfo section.failed to install new APUinfo section.fatal error while creating .fixupgeneric linker can't handle %sglobal pointer relative address out of rangeglobal pointer relative relocation at address 0x%08x when _gp not defined
-global pointer relative relocation when _gp not definedhidden symbolignoring reloc %s
-incr_linum(b): +%u
+error in %pB(%pA); no .eh_frame_hdr table will be createderror reading %s: %serror reading cpu type from elf private dataerror: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memoryerror: %pB does not use %s instructions, whereas %pB doeserror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %pB is compiled for the EP9312, whereas %pB is compiled for XScaleerror: %pB needs 8-byte alignment but %pB is set for 4-byte alignmenterror: %pB passes floats in float registers, whereas %pB passes them in integer registerserror: %pB passes floats in integer registers, whereas %pB passes them in float registerserror: %pB requires more array alignment than %pB preserveserror: %pB requires more stack alignment than %pB preserveserror: %pB use %u-byte stack aligned but the output use %u-byte stack aligned.error: %pB uses %s instructions but %pB uses %serror: %pB uses %s instructions, whereas %pB does noterror: %pB uses 64-bit doubles but %pB uses 32-bit doubleserror: %pB uses FPU-3.0 but %pB only supports FPU-2.0error: %pB uses VFP register arguments, %pB does noterror: %pB uses hardware FP, whereas %pB uses software FPerror: %pB uses iWMMXt register arguments, %pB does noterror: %pB uses software FP, whereas %pB uses hardware FPerror: %pB uses the %s code model whereas %pB uses the %s code modelerror: %pB uses the %s data model but %pB only uses MSP430 instructionserror: %pB uses the %s data model whereas %pB uses the %s data modelerror: %pB uses the large code model but %pB uses MSP430 instructionserror: %pB uses the small code model but %pB uses the %s data modelerror: %pB: <corrupt AArch64 used size: 0x%x>error: %pB: <corrupt x86 property (0x%x) size: 0x%x>error: %pB: ISA string of input (%s) doesn't match output (%s).error: %pB: Mis-matched ISA string to merge '%s' and '%s'.error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%derror: %pB: SB relative addressing conflicts with use of R9error: %pB: Unsupported XLEN (%u), you might be using wrong emulation.error: %pB: XLEN of input (%u) doesn't match output (%u).error: %pB: big-endian R2 is not supportederror: %pB: cannot mix rf16 with full register set %pBerror: %pB: conflicting CPU architectures %d/%derror: %pB: conflicting ISA extension attributes %s with %serror: %pB: conflicting architecture profiles %c/%cerror: %pB: conflicting attributes %serror: %pB: conflicting attributes %s: %s with %serror: %pB: conflicting use of R9error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but got '%s'.error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchainerror: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'error: %pB: old incompatible object file detectederror: %pB: size of section %pA is not multiple of address sizeerror: %pB: unable to merge CPU base attributes %s with %serror: %pB: unable to merge ISA extension attributes %serror: %pB: unable to merge virtualization attributes with %pBerror: %pB: unknown CPU architectureerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: fp16 format mismatch between %pB and %pBerror: inappropriate relocation type for shared library (did you forget -fpic?)error: source object %pB has EABI version %d, but target %pB has EABI version %derror: the ARC4 architecture is no longer supportederror: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %pBerror: unknown Tag_ABI_array_object_alignment value in %pBerrors encountered processing file %pBexecutablefailed to allocate space for new APUinfo sectionfailed to compute new APUinfo sectionfailed to find previous HI16 relocfailed to install new APUinfo sectionfailed to update file offsets in debug directoryfatal error while creating .fixupfile format is ambiguousfile format not recognizedfile in wrong formatfile too bigfile truncatedfurther warnings about FDE encoding preventing .eh_frame_hdr generation droppedgeneric linker can't handle %sglobal pointer relative address out of rangeglobal pointer relative relocation when _gp not definedhidden symbolhidden symbol incompatible cputypes in mach-o files: %ld vs %ldincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
-internal error: addend should be zero for R_LM32_16_GOTinternal error: branch/jump to an odd address detectedinternal error: dangerous errorinternal error: dangerous relocationinternal error: out of range errorinternal error: suspicious relocation type used in shared libraryinternal error: unknown errorinternal error: unsupported relocation errorinternal inconsistency in size of .got.loc sectioninternal symbolinvalid input relocation when producing non-ELF, non-mmo format output.
- Please use the objcopy program to convert from ELF or mmo,
- or assemble using "-no-expand" (for gcc, "-Wa,-no-expand"invalid input relocation when producing non-ELF, non-mmo format output.
- Please use the objcopy program to convert from ELF or mmo,
- or compile using the gcc-option "-mno-base-addresses".invalid relocation addressinvalid relocation type %dinvalid use of %s with contextsip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx).ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx).ip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.line num  (len: %u)
-linkable imagelinker stubs in %u group%s
-  branch       %lu
-  toc adjust   %lu
-  long branch  %lu
-  long toc adj %lu
-  plt call     %lu
-  plt call toc %luliteralliteral relocation occurs for an external symbolmach-o: there are too many sections (%d) maximum is 255,
-mep: no reloc for code %dmodbeg
+indirect, defined at 0x%08x
+internal error: RL78 reloc stack overflowinternal error: RL78 reloc stack underflowinternal error: addend should be zero for %sinternal error: branch/jump to an odd address detectedinternal error: dangerous errorinternal error: dangerous relocationinternal error: merge of architecture '%s' with architecture '%s' produced unknown architectureinternal error: out of range errorinternal error: relocation not supportedinternal error: suspicious relocation type used in shared libraryinternal error: unknown errorinternal error: unsupported relocation errorinternal inconsistency in size of .got.loc sectioninternal inconsistency: remaining %lu != max %lu; please report this buginternal symbolinternal symbol invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or assemble using "-no-expand" (for gcc, "-Wa,-no-expand"invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or compile using the gcc-option "-mno-base-addresses".invalid operationinvalid output section for .eh_frame_entry: %pAinvalid relocation addressinvalid section index in ETIRinvalid use of %s with contextsip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.is this version of the linker - %s - out of date ?jump (PC rel26) to section (%s) not supportedjump to a non-instruction-aligned addressjump to a non-word-aligned addresslabel, name: %.*s
+len: %2u, kind: %2u line num  (len: %u)
+linkable imagelinker stubs in %u group
+linker stubs in %u groups
+literalliteral relocation occurs for an external symbollong branch stub `%s' offset overflowmach-o: there are too many sections (%u) maximum is 255,
+malformed archivemalformed mach-o ARM half sectdiff reloc: invalid length: %dmalformed mach-o ARM local sectdiff reloc: invalid length: %dmalformed mach-o ARM reloc pair: invalid length: %dmalformed mach-o ARM reloc pair: reloc is first relocmalformed mach-o ARM reloc: unknown reloc type: %dmalformed mach-o ARM sectdiff reloc: invalid length: %dmalformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)malformed mach-o reloc: section index is greater than the number of sectionsmemory exhaustedmep: no reloc for code %dmodbeg
 modend
-name: [val: %08lx len %d]: nativenon-contiguous array of %s
-non-dynamic relocations refer to dynamic symbol %snon-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store
-non-zero addend in @fptr relocnot enough GOT space for local GOT entriesnot mapping: data=%lx mapped=%d
+name: [val: %08lx len %d]: nativenew entry function(s) introduced but no output import library specified:nono address assigned to the veneers output section %sno errorno more archived filesno symbolsnon-contiguous array of %s
+non-dynamic relocations refer to dynamic symbol %snon-dynamic symbol %s in dynamic symbol tablenon-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store
+non-zero addend in @fptr relocnonenonrepresentable section on outputnot enough GOT space for local GOT entriesnot enough memory to sort relocationsnot mapping: data=%lx mapped=%d
 not mapping: env var not set
-out of rangeoverflow after relaxationoverlay stub relocation overflowprivate flags = %lxprivate flags = %lx:private flags = %lx: private flags = %x:private flags = 0x%lxprivate flags = 0x%lx:prolog: bkpt address 0x%08x
-protected symbolrecbeg: name: %.*s
+not setobject module not error-free !offset of veneer for entry function `%s' not a multiple of its sizeone possible cause of this error is that the symbol is being referenced in the indicated code as if it had a larger alignment than was declared where it was definedout of rangeoverflow after relaxationoverlay stub relocation overflowpointer
+private flags = %lxprivate flags = %lx:private flags = %lx: private flags = 0x%lxprivate flags = 0x%lx:prolog: bkpt address 0x%08x
+protected symbolprotected symbol recbeg: name: %.*s
 recend
-reference to a banked address [%lx:%04lx] in the normal address space at %04lxregrelocation `%s' not yet implementedrelocation out of rangerelocation references symbol not defined in the modulerelocation requires zero addendrelocation should be even numberrelocations between different segments are not supportedreopening %B: %s
+record is too small for symbol name lengthreference to a banked address [%lx:%04lx] in the normal address space at %04lxreference to the far symbol `%s' using a wrong relocation may result in incorrect executionregregister %%g%d used incompatibly: %s in %pB, previously %s in %pBregister section has contents
+reloc (%d) is *UNKNOWN*relocation for non-REL psectrelocation out of rangerelocation references symbol not defined in the modulerelocation requires zero addendrelocation should be even numberrelocations between different segments are not supportedremoving unused section '%pA' in file '%pB'reopening %pB: %s
 reserved cmd %drtnbeg
 rtnend: size 0x%08x
-septyp, name: %.*s
+section has no contentsseptyp, name: %.*s
 set_abs_pc: 0x%08x
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-small-data section exceeds 64KB; lower small-data size limit (see option -G)som_sizeof_headers unimplementedsorry, no support for duplicate object files in auto-overlay script
+shared objectsize error in section %pAsmall-data section exceeds 64KB; lower small-data size limit (see option -G)som_sizeof_headers unimplementedsorry, cannot handle this filesorry, no support for duplicate object files in auto-overlay script
 sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands.source (len: %u)
-standard data: %s
-static procedure (no name)stub entry for %s cannot load .plt, dp offset = %ldstubs don't match calculated sizesymbolsystem version array information:
-term(b): 0x%02xterm_w: 0x%04xtypspec (len: %u)
-unable to find ARM glue '%s' for '%s'unable to find THUMB glue '%s' for '%s'unable to read in %s section from %Bunable to write unknown load command 0x%lxunaligned bit-string of %s
-uncertain calling convention for non-COFF symbolundefined %s reference in complex symbol: %sunhandled egsd entry type %u
+spurious ALPHA_R_BSR relocstack analysis will ignore the call from %s to %s
+stack overflow (%d) in _bfd_vms_pushstack underflow in _bfd_vms_popstandard data: %s
+start address of `%s' is different from previous linkstatic procedure (no name)stubs don't match calculated sizesymbolsymbol symbol '%s' has invalid st_other for ABI version 1symbol `%s' has differing types: REGISTER in %pB, previously %s in %pBsymbol binding STB_GNU_UNIQUE is unsupportedsymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is unsupportedsystem call errorsystem version array information:
+term(b): 0x%02xterm_w: 0x%04xthe bfin target does not currently support the generation of copy relocationsthere is a conflict merging the ELF header flags from %pBtoo many GOT entries for -fpic, please recompile with -fPICtry enabling relaxation to avoid relocation truncationstype spec for element:
+type spec for subscript %u:
+typed pointer
+typspec (len: %u)
+unable to allocate data for load command %#xunable to find %s glue '%s' for '%s'unable to find equivalent output section for symbol '%s' from section '%s'unable to layout unknown load command %#xunable to read EIHS record at offset %#xunable to read in %s section from %pBunable to write unknown load command %#xunaligned bit-string of %s
+undefined undefined %s reference in complex symbol: %sunexpected machine numberunhandled OSF/1 core file section type %dunhandled egsd entry type %u
 unhandled emh subtype %u
-unknownunknown ETIR command %dunknown errorunknown header byte-order value 0x%lxunknown line command %dunknown operator '%c' in complex symbolunknown source command %dunknown v850 architectureunsupported STA cmd %sunsupported relocunsupported reloc typeunsupported relocationunsupported relocation between data/insn address spacesusing multiple gp valuesv850 E3 architecturev850 architecturev850e architecturev850e1 architecturev850e2 architecturev850e2v3 architecturev850e3v5 architecturevflags: 0x%02x, value: 0x%08x vma:			BeginAddress	 EndAddress	  UnwindData
-warning: %B and %B differ in wchar_t sizewarning: %B and %B differ in whether code is compiled for DSBTwarning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may failwarning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may failwarning: %B: local symbol `%s' has no sectionwarning: %s exceeds section size
-warning: %s has a corrupt string table index - ignoringwarning: %s overlaps %s
-warning: %s section has zero sizewarning: .pdata section size (%ld) is not a multiple of %d
-warning: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %Bwarning: generating a shared library containing non-PIC codewarning: generating a shared library containing non-PID codewarning: relocation references a different segmentwarning: section '%s' is being made into a notewarning: section `%A' type changed to PROGBITSwarning: type and size of dynamic symbol `%s' are not definedwarning: unable to set size of %s section in %Bwarning: unable to update contents of %s section in %syou are not allowed to define %s in a scriptProject-Id-Version: bfd-2.24.90
+unhandled relocation %sunknownunknown EGSD subtype %dunknown ETIR command %dunknown attribute for symbol `%s': 0x%02xunknown basic type %dunknown errorunknown header byte-order value %#xunknown line command %dunknown operator '%c' in complex symbolunknown reloc %sunknown reloc %s + %sunknown source command %dunknown symbol in command %sunknown v850 architectureunknown: %xunrecognized INPUT_SECTION_FLAG %s
+unrecognized TI COFF target id '0x%x'unsupported .stab relocationunsupported STA cmd %sunsupported relocunsupported relocationunsupported relocation between data/insn address spacesunsupported relocation typeusing multiple gp valuesv850 E3 architecturev850 architecturev850e architecturev850e1 architecturev850e2 architecturev850e2v3 architecturev850e3v5 architecturevariable `%s' can only be in one of the small, zero, and tiny data regionsvariable `%s' cannot be in both small and tiny data regions simultaneouslyvariable `%s' cannot be in both small and zero data regions simultaneouslyvariable `%s' cannot be in both zero and tiny data regions simultaneouslyvariable `%s' cannot occupy in multiple small data regionsvflags: 0x%02x, value: 0x%08x vma:			BeginAddress	 EndAddress	  UnwindData
+warning, .pdata section size (%ld) is not a multiple of %d
+warning: %pB and %pB differ in wchar_t sizewarning: %pB and %pB differ in whether code is compiled for DSBTwarning: %pB does not support interworking, whereas %pB doeswarning: %pB has a corrupt section with a size (%warning: %pB has a corrupt string table index - ignoringwarning: %pB supports interworking, whereas %pB does notwarning: %pB use privilege spec version %u.%u.%u but the output use version %u.%u.%u.warning: %pB uses %s (set by %pB), %pB uses %swarning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may failwarning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may failwarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB: conflicting platform configurationwarning: %pB: conflicting platform configuration %s with %swarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lxwarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%xwarning: %pB: corrupt no copy on protected size: 0x%xwarning: %pB: corrupt stack size: 0x%xwarning: %pB: local symbol `%s' has no sectionwarning: %pB: unknown ARC object attribute %dwarning: %pB: unknown EABI object attribute %dwarning: %pB: unknown MSPABI object attribute %dwarning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%xwarning: %s exceeds section size
+warning: %s overlaps %s
+warning: %s section has zero sizewarning: %s should be used rather than %swarning: --enable-non-contiguous-regions discards section `%s' from '%s'
+warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: RL78_SYM reloc with an unknown symbolwarning: RX_SYM reloc with an unknown symbolwarning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pAwarning: alignment %u of symbol `%s' in %pB is smaller than %u in %pBwarning: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %pBwarning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with itwarning: clearing the interworking flag of %pB due to outside requestwarning: corrupt unwind data
+warning: discarding dynamic section %swarning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%swarning: gc-sections option ignoredwarning: generating a shared library containing non-PIC codewarning: generating a shared library containing non-PID codewarning: not setting interworking flag of %pB since it has already been specified as non-interworkingwarning: privilege spec version 1.9.1 can not be linked with other spec versions.warning: relocation references a different segmentwarning: section '%s' is being made into a notewarning: section `%pA' type changed to PROGBITSwarning: symbol `%s' is both section and non-sectionwarning: type and size of dynamic symbol `%s' are not definedwarning: type of symbol `%s' changed from %d to %d in %pBwarning: unable to set size of %s section in %pBwarning: unable to update contents of %s section in %pBwarning: unrecognized arch eflag '%#lx'warning: unset or old architecture flags; use default machinewarning: writing archive was slow: rewriting timestampwarning: writing section `%pA' at huge (ie negative) file offsetwarning: xdata section corrupt
+yesyou are not allowed to define %s in a scriptProject-Id-Version: bfd-2.34.90
 Report-Msgid-Bugs-To: bug-binutils@gnu.org
-POT-Creation-Date: 2014-02-10 09:42+1030
-PO-Revision-Date: 2016-05-29 17:48+0200
+POT-Creation-Date: 2020-07-04 10:26+0100
+PO-Revision-Date: 2020-07-30 10:38+0200
 Last-Translator: ÐœÐ¸Ñ€Ð¾Ñ�Ð»Ð°Ð² Ð�Ð¸ÐºÐ¾Ð»Ð¸Ñ› <miroslavnikolic@rocketmail.com>
 Language-Team: Serbian <(nothing)>
 Language: sr
-X-Bugs: Report translation errors to the Language-Team address.
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);
-	    Ð¢Ð›Ð¡: %A	Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° 			Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° 		%08lx
-	Ð¢Ð°Ð±ÐµÐ»Ð° Ð½Ð°Ð·Ð¸Ð²Ð° Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° 			Ð¢Ð°Ð±ÐµÐ»Ð° Ñ€ÐµÐ´Ð½Ð¸Ñ… Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð° 				Ð¢Ð°Ð±ÐµÐ»Ð° [Ð�Ð°Ð·Ð¸Ð² Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°/Ñ€ÐµÐ´Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]	%08lx
+X-Generator: Virtaal 0.7.1
+X-Bugs: Report translation errors to the Language-Team address.
+	    Ð¢Ð›Ð¡: %pA	<Ð¾ÑˆÑ‚ÐµÑ›ÐµÑšÐµ: 0x%04lx>	Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° 			Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° 		%08lx
+	Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° â€žrvaâ€œ (0x%lx) Ð¸Ð»Ð¸ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° (0x%lx)
+	Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð½Ð°Ð·Ð¸Ð²Ð° Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° â€žrvaâ€œ (0x%lx) Ð¸Ð»Ð¸ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° (0x%lx)
+	Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ€ÐµÐ´Ð½Ð¾Ð³ â€žrvaâ€œ (0x%lx) Ð¸Ð»Ð¸ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° (0x%lx)
+	Ð¢Ð°Ð±ÐµÐ»Ð° Ð½Ð°Ð·Ð¸Ð²Ð° Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° 			Ð¢Ð°Ð±ÐµÐ»Ð° Ñ€ÐµÐ´Ð½Ð¸Ñ… Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð° 				[%4ld] <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: %lx>
+	Ð¢Ð°Ð±ÐµÐ»Ð° [Ð�Ð°Ð·Ð¸Ð² Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°/Ñ€ÐµÐ´Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]	%08lx
 	Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° %08lx ÐºÐ¾Ð´Ð½Ðµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ (ÑƒÑ‡Ð¸Ñ‚Ñ™Ð¸Ð²Ð°/Ð°ÐºÑ‚ÑƒÐµÐ»Ð½Ð°) %08lx/%08lx
-	Ð½Ðµ-Ð¢Ð›Ð¡: %A	Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ %4d Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %4x [%4lx] %s	vma:  Ð�Ð°Ñ˜Ð°Ð²Ð°/Ð ÐµÐ´Ð½Ð¸ Ð�Ð°Ð·Ð¸Ð² Ñ‡Ð»Ð°Ð½Ð° Ð¡Ð²ÐµÐ·Ð°Ð½-Ð·Ð°
+	Ð½Ðµ-Ð¢Ð›Ð¡: %pA	Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ %4d Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %4x [%4lx] %s	vma:  Ð�Ð°Ñ˜Ð°Ð²Ð°/Ð ÐµÐ´Ð½Ð¸ Ð�Ð°Ð·Ð¸Ð² Ñ‡Ð»Ð°Ð½Ð° Ð¡Ð²ÐµÐ·Ð°Ð½-Ð·Ð°
+
 
-	Ð”Ð›Ð› Ð½Ð°Ð·Ð¸Ð²: %s
+	â€žDLLâ€œ Ð½Ð°Ð·Ð¸Ð²: %.*s
 
 
 ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ ÐŸÐ• Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž.relocâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°)
@@ -651,8 +801,12 @@ Plural-Forms: nplurals=3; plural=(n%10==
 
 ÐžÑ�Ð¾Ð±ÐµÐ½Ð¾Ñ�Ñ‚Ð¸ 0x%x
 
+Ð˜Ð·Ð»Ð°Ð· Ð·Ð° â€ž%sâ€œ
+
 Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº:
 
+Ð“Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ð°Ð»Ð¸ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸
+
 ÐŸÐ¾Ð¼Ð¾Ñ›Ð½Ð¾ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ
 
 Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° â€”â€” ÐžÑ�Ð½Ð¾Ð²Ð° Ñ€ÐµÐ´Ð½Ð¸Ñ… Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð° %ld
@@ -661,7 +815,7 @@ Plural-Forms: nplurals=3; plural=(n%10==
 
 Ð�ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°! ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð½.
 
-ÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
+ÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d]  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°:
 
@@ -670,20 +824,35 @@ Plural-Forms: nplurals=3; plural=(n%10==
 Ð¢Ð°Ð±ÐµÐ»Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)
 
 
+Ð¢Ð°Ð±ÐµÐ»Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)
+
 Ð¢Ð°Ð±ÐµÐ»Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ)
 
 Ð¢Ð°Ð±ÐµÐ»Ðµ ÑƒÐ²Ð¾Ð·Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)
 
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx
+
+
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ñ‚Ð°Ñ˜ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°
+
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ð³Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸
+
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð¿Ñ€Ð²Ð¸ Ð¿Ð¾Ñ‚Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ð³Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸
 
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx
 
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ñ‚Ð°Ð½Ðµ Ñƒ Ñ‚Ð°Ñ˜ Ð¾Ð´ÐµÑ™Ð°Ðº
 
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð° (%d)
+
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜
+
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸
 
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx
 
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜
+
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸
 
 Ð£Ð¿ÑƒÑ‚Ð° Ð¸Ð·Ð´Ð°ÑšÐ°:
@@ -699,9 +868,11 @@ Plural-Forms: nplurals=3; plural=(n%10==
 Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ â€žppcbootâ€œ:
         pc: 0x%08x
     *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%uâ€œ
+    Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x
     Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u
     Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %u, Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð¿Ð´-Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x
     Ð¾Ð¿ÑˆÑ‚Ð¸ Ð½Ð°Ð·Ð¸Ð²: %.*s
+    Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u Ð±Ð¸Ñ‚Ð°
     Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: 0x%08x
     Ð½Ð°Ð·Ð¸Ð²: %.*s
     pc: 0x%08x
@@ -711,8 +882,16 @@ Plural-Forms: nplurals=3; plural=(n%10==
     Ð¸Ð½Ð´ÐµÐºÑ� Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° 3: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ 3: 0x%08x %08x
     Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%08x %08x
     Ð½Ð°Ð·Ð¸Ð² Ñ€ÑƒÑ‚Ð¸Ð½Ðµ : %.*s
-   %02u    %s%s %s
-   (Ð²Ñ€Ñ�Ñ‚Ð°: %3u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 4+%3u):    *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%uâ€œ
+   %02u    (Ð²Ñ€Ñ�Ñ‚Ð°: %3u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 4+%3u):    *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%uâ€œ
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð”Ð°Ñ‚ÑƒÐ¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ° Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð´ÑƒÐ¶Ð¸Ð½Ðµ â€žEEOMâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ°
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð´ÑƒÐ¶Ð¸Ð½Ðµ â€žEMHâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ°
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð˜Ð·Ð´Ð°ÑšÐµ Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð˜Ð·Ð´Ð°ÑšÐµ Ð¼Ð¾Ð´ÑƒÐ»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³Ð¾
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ�Ð½Ð¸Ð¼ÐºÐ° Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ â€žEMH_MHDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ°
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð»Ð¾Ð³ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ñƒ Ñ�Ð½Ð¸Ð¼ÐºÑƒ
    Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ : 2**%u
    Ð´Ð¾Ð´ÐµÐ»Ð° (Ð´ÑƒÐ¶Ð¸Ð½Ð°)  : %u (0x%08x)
    Ð´Ð¾Ð´ÐµÐ»Ð° (Ð´ÑƒÐ¶Ð¸Ð½Ð°): %u (0x%08x)
@@ -724,6 +903,8 @@ Plural-Forms: nplurals=3; plural=(n%10==
    Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð»Ð°Ñ†  : %.*s
    Ð´Ð¾Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐµ ÐºÐ¾Ð´Ð°: %u
    Ð°ÑƒÑ‚Ð¾Ñ€Ñ�ÐºÐ° Ð¿Ñ€Ð°Ð²Ð°: %.*s
+   Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° Ñ†Ð¿Ñ˜: %#lx%s
+   Ð²Ñ€Ñ�Ñ‚Ð° Ñ†Ð¿Ñ˜:    %#lx (%s)
    declfile: Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %u, Ð¸Ð´ Ð¿Ð¾Ñ™Ð°: %u
    deflines %u
    Ð½Ð°Ð·Ð¸Ð² ÐµÐ½Ñ‚Ð¸Ñ‚ÐµÑ‚Ð°  : %.*s
@@ -731,7 +912,9 @@ Plural-Forms: nplurals=3; plural=(n%10==
    Ð¾Ð·Ð±Ð¸Ñ™Ð½Ð¾Ñ�Ñ‚ Ð³Ñ€ÐµÑˆÐºÐµ: %x
    Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: %.*s
    Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ: %.*s
-   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%08x   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%04x   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %d, Ñ˜ÐµÐ·Ð¸Ðº: %u, Ð²ÐµÑ›Ð¸: %u, Ð¼Ð°ÑšÐ¸: %u
+   Ð²Ñ€Ñ�Ñ‚Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ:   %#lx
+   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%08x   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%04x   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ:      %#lx
+   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %d, Ñ˜ÐµÐ·Ð¸Ðº: %u, Ð²ÐµÑ›Ð¸: %u, Ð¼Ð°ÑšÐ¸: %u
    Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%04x   formfeed
    Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð°ÑšÐµ Ð¸Ð´-Ð° : %x
    Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ�Ð»Ð¸ÐºÐµ: 0x%08x
@@ -740,6 +923,7 @@ Plural-Forms: nplurals=3; plural=(n%10==
    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð½Ð°Ð·Ð¸Ð² Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿ÐºÐ°: %.*s
    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°Ðº: %.*s
    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%08x %08x
+   Ð¼Ð°Ð³Ð¸Ñ˜Ð°:      %#lx
    Ð½Ð°Ñ˜Ð². Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð±ÐµÐ»ÐµÐ¶ÐµÑšÐ°: %u
    Ð½Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð°           : %.*s
    Ð½Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð°           : %.*s
@@ -747,6 +931,7 @@ Plural-Forms: nplurals=3; plural=(n%10==
    Ð½Ð°Ð·Ð¸Ð²           : %.*s
    Ð½Ð°Ð·Ð¸Ð²         : %.*s
    Ð½Ð°Ð·Ð¸Ð²        : %.*s
+   Ð±Ñ€Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸:      %#lx
    Ð±Ñ€Ð¾Ñ˜ â€žcondâ€œ Ð¿Ð°Ñ€Ð¾Ð²Ð° Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u
    Ð½Ð°Ð·Ð¸Ð² Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°  : %.*s
    Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%08x, Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: 0x%08x
@@ -761,6 +946,7 @@ Plural-Forms: nplurals=3; plural=(n%10==
    setlnum %u
    setrec %u
    Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ�: %.*s
+   Ð²ÐµÐ»Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸:  %#lx
    Ð½Ð¸Ð²Ð¾ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ         : %u
    Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: 0x%08x
    Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ�Ð¸Ð¼Ð²ÐµÐº-Ð° : 0x%08x
@@ -770,8 +956,8 @@ Plural-Forms: nplurals=3; plural=(n%10==
    Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ½Ð¾Ñ�Ð°          : 0x%08x
    Ð²ÐµÐºÑ‚Ð¾Ñ€     : 0x%08x
    Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ðµ: 0x%08x
+   Ð¸Ð·Ð´Ð°ÑšÐµ:  %x
   %s (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u+%u):
-  %s: 0x%v
   %u: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: 0x%02x, Ð½Ð°Ð·Ð¸Ð²: %.*s
   EEOM (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):
   EGSD (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):
@@ -793,17 +979,20 @@ Plural-Forms: nplurals=3; plural=(n%10==
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° : %u
- %08x 0x%08x 64B <Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ> Ð‘Ð¡Ð¢Ð Ð�Ð�Ð˜Ð¦Ð�: %u COM COMM ÐŸÑ€Ð¾Ð¼ÐµÐ½Ð° Ð·Ð°ÑˆÑ‚Ð¸Ñ‚Ðµ (%u ÑƒÐ½Ð¾Ñ�Ð°):
+  Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ ÑƒÐ»Ð°Ð·Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ: %s  Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¸Ð·Ð»Ð°Ð·Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ: %s %08x (<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾>) 0x%08x 64B <Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ> Ð‘Ð¡Ð¢Ð Ð�Ð�Ð˜Ð¦Ð�: %u COM COMM ÐŸÑ€Ð¾Ð¼ÐµÐ½Ð° Ð·Ð°ÑˆÑ‚Ð¸Ñ‚Ðµ (%u ÑƒÐ½Ð¾Ñ�Ð°):
  Ð˜Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ ÑƒÐ¿ÑƒÑ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ ÐºÐ¾Ð´Ð°:
- DEF EXE ÐŸÑ€Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x
+ DEF EXE â€žFPUâ€œ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ° Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð°:  ÐŸÑ€Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x
  Ð§ÐµÑ‚Ð²Ñ€Ñ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x
  GBL Ð�Ð¸Ð· ÐºÐ¾Ð´Ð° Ð»ÐµÐ¿ÐºÐ° LIB Ð˜Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ ÑƒÐ¿ÑƒÑ‚Ðµ Ð¿Ð°Ñ€Ð¾Ð²Ð° Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°:
- NOMOD NORM OVR PIC QVAL RD REL Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ð²Ñ€Ð°Ñ›Ð° Ð¼Ð¸Ð»Ð¸ÐºÐ¾Ð´ Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ñ‡ÑƒÐ²Ð° Ð¼Ð¸Ð»Ð¸ÐºÐ¾Ð´ SHR Ð”Ñ€ÑƒÐ³Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x
+ â€žMACH-Oâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ:
+ NOMOD NORM OVR PIC QVAL RD REL Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ð²Ñ€Ð°Ñ›Ð° Ð¼Ð¸Ð»Ð¸ÐºÐ¾Ð´ Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ñ‡ÑƒÐ²Ð° Ð¼Ð¸Ð»Ð¸ÐºÐ¾Ð´ Ð˜Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ð° Ð¿Ð¾Ñ‡Ð¸ÑšÑƒ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ: %#03x
+ SHR Ð”Ñ€ÑƒÐ³Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x
  Ð”ÐµÑ™Ð¸Ð²Ðµ Ñ�Ð»Ð¸ÐºÐµ:
  Ð”ÐµÑ™ÐµÐ½Ð° Ñ�Ð»Ð¸ÐºÐ°   : 0x%08x 0x%08x
+ Ð¢Ð°Ð±ÐµÐ»Ð° Ð½Ð¸Ñ�ÐºÐµ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ: %#03x
  Ð¢Ð°Ð±ÐµÐ»Ð°: Ð—Ð½Ð°Ðº: %d, Ð’Ñ€ÐµÐ¼Ðµ: %08lx, Ð˜Ð·Ð´: %d/%d, Ð‘Ñ€Ð¾Ñ˜ Ð½Ð°Ð·Ð¸Ð²Ð°: %d, Ð˜Ð”-Ð¾Ð²Ð¸: %d
  Ð¢Ñ€ÐµÑ›Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x
- UNI VEC VECEP WEAK WRT [BE8] [â€žFPAâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°] [Ð“10] [LE8] [â€žMaverickâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°] [â€žVFPâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°] [Ð˜Ð·Ð´Ð°ÑšÐµ1 â€žEABIâ€œ] [Ð˜Ð·Ð´Ð°ÑšÐµ2 â€žEABIâ€œ] [Ð˜Ð·Ð´Ð°ÑšÐµ3 â€žEABIâ€œ] [Ð˜Ð·Ð´Ð°ÑšÐµ4 â€žEABIâ€œ] [Ð˜Ð·Ð´Ð°ÑšÐµ5 â€žEABIâ€œ] [XGATE RAM Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜] [Ð°Ð±Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾] [Ð°Ð±Ð¸=64] [Ð°Ð±Ð¸=EABI32] [Ð°Ð±Ð¸=EABI64] [Ð°Ð±Ð¸=N32] [Ð°Ð±Ð¸=O32] [Ð°Ð±Ð¸=O64] [abiv%ld] [Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜] [d-Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·] [Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°] [Ñ„Ð¸ÐºÑ� Ð´ÑƒÐ±] [Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÐµÐ½Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸] [Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÐµÐ½Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸] [g-Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·] [â€žABIâ€œ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¾Ð³ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°] [Ð¸Ð¼Ð° Ñ‚Ð°Ñ‡ÐºÑƒ ÑƒÐ»Ð°Ð·Ð°] [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾] [Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð°] [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾] [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾] [Ð¼Ð°Ð¿Ð¸Ñ€Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð°] [Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð°=Ð¼Ð¾Ð´ÐµÐ»-Ð³Ñ€ÑƒÐ¿Ðµ] [Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð°=Ð¾Ð±Ð¸Ñ‡Ð½Ð¾] [Ð½Ð¾Ð²Ð¸ â€žABIâ€œ] [Ð°Ð±Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾] [Ð½Ðµ-Ð¿Ð¸Ñ†] [Ð½Ð¸Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ€ÐµÐ¶Ð¸Ð¼] [Ñ�Ñ‚Ð°Ñ€Ð¸ â€žABIâ€œ] [Ð¿Ð¸Ðº] [Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ñ‚Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°] [Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð°] [â€žABIâ€œ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¾Ð³ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°] [Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·] [Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ñ€ÐµÑ’ÐµÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°] [Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ðµ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ðµ â€ž _ â€œ] [Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð˜Ð¡Ð�] [Ñ‚Ð°Ð±ÐµÐ»Ð° Ð½ÐµÑ�Ñ€ÐµÑ’ÐµÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°] [v10 Ð¸ v32] [v32] Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ â€žGSTâ€œ
+ UNI VEC VECEP WEAK WRT [doubles de 64 bits] [BE8] [â€žFDPIC ABIâ€œ Ð´Ð¾Ð´Ð°Ñ‚Ð°Ðº] [â€žFPAâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°] [LE8] [â€žMaverickâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°] [â€žVFPâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°] [Ð˜Ð·Ð´Ð°ÑšÐµ1 â€žEABIâ€œ] [Ð˜Ð·Ð´Ð°ÑšÐµ2 â€žEABIâ€œ] [Ð˜Ð·Ð´Ð°ÑšÐµ3 â€žEABIâ€œ] [Ð˜Ð·Ð´Ð°ÑšÐµ4 â€žEABIâ€œ] [Ð˜Ð·Ð´Ð°ÑšÐµ5 â€žEABIâ€œ] [XGATE RAM Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜] [Ð°Ð±Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾] [Ð°Ð±Ð¸=64] [Ð°Ð±Ð¸=EABI32] [Ð°Ð±Ð¸=EABI64] [Ð°Ð±Ð¸=N32] [Ð°Ð±Ð¸=O32] [Ð°Ð±Ð¸=O64] [abiv%ld] [d-Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·] [Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°] [Ñ„Ð¸ÐºÑ� Ð´ÑƒÐ±] [Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÐµÐ½Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸] [g-Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·] [â€žABIâ€œ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¾Ð³ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°] [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾] [Ð¼Ð°Ð¿Ð¸Ñ€Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð°] [Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð°=Ð¼Ð¾Ð´ÐµÐ»-Ð³Ñ€ÑƒÐ¿Ðµ] [Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð°=Ð¾Ð±Ð¸Ñ‡Ð½Ð¾] [Ð½Ð¾Ð²Ð¸ â€žABIâ€œ] [Ð°Ð±Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾] [Ð½Ðµ-Ð¿Ð¸Ñ†] [Ð½Ð¸Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ€ÐµÐ¶Ð¸Ð¼] [Ñ�Ñ‚Ð°Ñ€Ð¸ â€žABIâ€œ] [Ð¿Ð¸Ðº] [Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ñ‚Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°] [Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð°] [â€žABIâ€œ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¾Ð³ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°] [Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·] [Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ñ€ÐµÑ’ÐµÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°] [Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ðµ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ðµ â€ž _ â€œ] [Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð˜Ð¡Ð�] [Ñ‚Ð°Ð±ÐµÐ»Ð° Ð½ÐµÑ�Ñ€ÐµÑ’ÐµÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°] [v10 Ð¸ v32] [v32] Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ 8-Ð±Ð¸Ñ‚Ð½Ð¸Ñ… ÐµÐ½Ñ‚Ð¸Ñ‚ÐµÑ‚Ð°:  Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ â€žGSTâ€œ
  Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°: Ð²Ð±Ð½: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u
  Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° : Ð²Ð±Ð½: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u (0x%x)
  Ð¿Ð¾Ð¿Ñ€Ð°Ð²ÐºÐ° Ð¸Ð½Ñ„Ð¾ Ñ€Ð²Ð°:  Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ : 0x%04x Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: Ð²Ð±Ð½: %u, Ð·Ð°Ð¿Ð¸Ñ�Ð¸: %u
@@ -823,7 +1012,7 @@ Plural-Forms: nplurals=3; plural=(n%10==
  Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ â€ž.addressâ€œ ÑƒÐ¿ÑƒÑ‚Ðµ Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾-Ñ€ÐµÑ‡Ð¸:
  Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾-Ñ€ÐµÑ‡Ð¸:
  Ð¾Ð´ÐµÑ™Ð°Ðº: Ð¾Ñ�Ð½Ð¾Ð²Ð°: 0x%08x%08x Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%08x
- Ð²Ñ€Ñ�Ñ‚Ð°: %3u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %3u (Ð¿Ñ€Ð¸ 0x%08x):  Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð² â€žEOBJâ€œ ÑƒÐ½Ð¾Ñ� Ð²Ñ€Ñ�Ñ‚Ðµ %u
+ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´ÑƒÐ±Ð»ÐµÑ€Ð°:  Ð²Ñ€Ñ�Ñ‚Ð°: %3u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %3u (Ð¿Ñ€Ð¸ 0x%08x):  Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð² â€žEOBJâ€œ ÑƒÐ½Ð¾Ñ� Ð²Ñ€Ñ�Ñ‚Ðµ %u
  Ð²Ð±Ð½: %u, Ð¿Ñ„Ñ†: %u, Ð¿Ð¾Ñ€ÐµÐ´Ð¸_Ñ†Ñ‚Ð»: %u Ð²Ñ€Ñ�Ñ‚Ð°: %u ( vma:			Ð�Ð´Ñ€ÐµÑ�Ð° Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ°	 Ð�Ð´Ñ€ÐµÑ�Ð° ÐºÑ€Ð°Ñ˜Ð°		Ð˜Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸
  vma:		ÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº    ÐšÑ€Ð°Ñ˜      EH       EH       ÐšÑ€Ð°Ñ˜ Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ð°  Ð˜Ð·ÑƒÐ·ÐµÑ‚Ð°Ðº
      		Ð�Ð´Ñ€ÐµÑ�Ð°  Ð�Ð´Ñ€ÐµÑ�Ð°  Ð ÑƒÐºÐ¾Ð²Ð°Ð»Ð°Ñ†  ÐŸÐ¾Ð´Ð°Ñ†Ð¸     Ð�Ð´Ñ€ÐµÑ�Ð°    ÐœÐ°Ñ�ÐºÐ°
@@ -831,45 +1020,45 @@ Plural-Forms: nplurals=3; plural=(n%10==
      		Ð�Ð´Ñ€ÐµÑ�Ð°  Ð”ÑƒÐ¶Ð¸Ð½Ð°   Ð”ÑƒÐ¶Ð¸Ð½Ð°   32b Ð¸Ð·Ð²Ñ€  Ð ÑƒÐºÐ¾Ð²Ð»Ð°Ñ†   ÐŸÐ¾Ð´Ð°Ñ†Ð¸
  vma:            Ð�Ð°Ñ˜Ð°Ð²Ð°    Ð’Ñ€ÐµÐ¼Ðµ     Ð�Ð°Ð¿Ñ€ÐµÐ´    Ð”Ð›Ð›       ÐŸÑ€Ð²Ð¸
                  Ð¢Ð°Ð±ÐµÐ»Ð°   ÐžÑ‚Ð¸Ñ�Ð°Ðº  Ð›Ð°Ð½Ð°Ñ†   Ð�Ð°Ð·Ð¸Ð²       ÐŸÐ¾Ñ‚Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼
-#<Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð³Ñ€ÐµÑˆÐºÐµ>%*.s  Ð›Ð¸Ñ�Ñ‚: Ð�Ð´Ñ€ÐµÑ�Ð°: %#08lx, Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %#08lx, ÐšÐ¾Ð´Ð½Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°: %d
-%*.s ÑƒÐ½Ð¾Ñ�: â€ž%Aâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ [â€ž%Aâ€œ Ñƒ â€ž%Bâ€œ] Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ [â€ž%Aâ€œ Ñƒ â€ž%Bâ€œ] Ð¾Ð´ÐµÑ™Ð°Ðºâ€ž%Aâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº%A:0x%v â€žlrlive .brinfoâ€œ (%u) Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ (%u)
-â€ž%A:0x%vâ€œ Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ
-%B (%s): Ð—Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (0x%x) Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ Ñ�Ñƒ Ð·Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐ°â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ Ñ�Ñƒ Ð·Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð°â€ž%Bâ€ž Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žCRIS v32â€œ ÐºÐ¾Ð´ ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°â€ž%Bâ€ž Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-â€žCRIS-v32â€œ ÐºÐ¾Ð´ ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°â€ž%Bâ€œ Ð¿Ð¾Ñ�ÐµÐ´ÑƒÑ˜Ðµ Ð¸ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸ Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸ â€žTag_MPextension_useâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚â€ž%Bâ€œ Ð½ÐµÐ¼Ð° Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ â€ž%sâ€œâ€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð³Ñ€ÑƒÐ¿Ðµ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ°â€ž%Bâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð±Ñ€Ð¾Ñ˜ %lu ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žSHT_SYMTAB_SHNDXâ€œâ€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€že_flagsâ€œ 0x%lx%B(%A): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð·Ð¸Ð² Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%B(%A): Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð²Ð»Ð°Ñ�Ð½Ð¸ÑˆÑ‚Ð²Ð°%B(%A): Ð½ÐµÑ�Ð¸Ð³ÑƒÑ€Ð½Ð¾ ÐŸÐ˜Ð” Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð° 0x%08lx (Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñƒ â€ž%sâ€œ)%B(%A): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ð¸Ñ�Ð½ÑƒÑ‚Ð¾ Ð·Ð° Ð¾Ð´ÐµÑ™ÐºÐµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° %d-Ð±Ð°Ñ˜Ñ‚Ð° > 4-Ð±Ð°Ñ˜Ñ‚Ð°.%B(%A): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°%B(%A): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¸Ð¼ Ð¼Ð°Ð»Ð¸Ð¼ Ð¿Ð¾Ð´Ð°Ñ†Ð¸Ð¼Ð° Ð²Ñ€Ñ�Ñ‚Ðµ â€ž%dâ€œ.%B(%A+0x%%B(%A+0x%lx): Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° â€ž%sâ€œ Ð·Ð° â€žinsn 0x%xâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñƒ Ð½Ðµ-Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð²ÐµÐ·Ð¸%B(%A+0x%lx): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSEC_MERGEâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°%B(%A+0x%lx): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B(%A+0x%lx): â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ�Ð° â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%sâ€œ%B(%A+0x%lx): â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ�Ð° â€žÐ½Ðµ-TLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%sâ€œ%B(%A+0x%lx): Ð”Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ðµ Ñ�Ñƒ Ñ�Ð°Ð¼Ð¾ â€žADDâ€œ Ð¸Ð»Ð¸ â€žSUBâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€žALUâ€œ Ð³Ñ€ÑƒÐ¿Ðµ%B(%A+0x%lx): ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð´ÐµÑ™ÐµÑšÐ° 0x%lx Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð³Ñ€ÑƒÐ¿Ðµ â€ž%sâ€œ%B(%A+0x%lx): â€žR_68K_TLS_LE32â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°%B(%A+0x%lx): â€žR_ARM_TLS_LE32â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°%B(%A+0x%lx): â€žR_METAG_TLS_LE/IENONPICâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°%B(%A+0x%lx): â€žR_NIOS2_TLS_LE16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°%B(%A+0x%lx): Ð£Ð½Ð¾Ñ� Ð¾ÐºÑ€ÑšÐ°ÐºÐ° Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð½Ð¸Ñ�ÐºÐµ.%B(%A+0x%lx): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÐ½ÐµÑ�ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ%B(%A+0x%lx): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ%B(%A+0x%lx): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ñ�Ñ‚Ð¸Ð³Ð½ÐµÐ¼ â€ž%sâ€œ, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-ffunction-sectionsâ€œ%B(%A+0x%lx): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ Ð·Ð° â€žXTENSA_ASM_SIMPLIFYâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ; Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾%B(%A+0x%lx): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ; Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾%B(%A+0x%lx): Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ð·Ð° Ð¢Ð›Ð¡ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ%B(%A+0x%lx): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d%B(%A+0x%lx): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°=0x%x)%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° Ð·Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ%B(%A+0x%lx): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B(%A+0x%lx): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žARMâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž0x%xâ€œ Ñƒ â€žTLSâ€œ Ñ‚Ñ€Ð°Ð¼Ð±ÑƒÐ»Ð¸Ð½Ð¸%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žARMâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž0x%xâ€œ Ð½Ð° ÐºÐ¾Ñ˜Ñƒ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žTLS_GOTDESCâ€œ%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žThumbâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž0x%xâ€œ Ñƒ â€žTLSâ€œ Ñ‚Ñ€Ð°Ð¼Ð±ÑƒÐ»Ð¸Ð½Ð¸%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žThumbâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž0x%xâ€œ Ð½Ð° ÐºÐ¾Ñ˜Ñƒ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žTLS_GOTDESCâ€œ%B(%A+0x%v): Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-ÐºÐ¾Ð´Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%B(%A)â€œ, Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ñ‚Ð¿ÑƒÐ½Ð°
-%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.
-  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žARMâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ð½Ð° â€žThumbâ€œ%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.
-  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žThumbâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ð½Ð° â€žARMâ€œ%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.
-  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žarmâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° â€žthumbâ€œ%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.
-  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žthumbâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° â€žarmâ€œ
-  Ñ€Ð°Ð·Ð¼Ð¾Ñ‚Ñ€Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ â€ž--support-old-codeâ€œ%B(%s+0x%lx): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œâ€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ:
-  Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ñ‚Ð¸Ð¿Ð¸Ñ‡Ð½Ð¾ Ð¼ÐµÑˆÐ°ÑšÐµ Ð¾Ð¿Ñ†Ð¸Ñ˜Ð°, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œâ€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ:
-  Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ðµ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œâ€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ:
-  v10/v32 Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ â€ž%sâ€œ Ð½Ðµ Ñ�Ð¼Ðµ Ð´Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žPICâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµâ€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð�ÐµÐ¼Ð° â€žPLTâ€œ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œâ€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð�ÐµÐ¼Ð° Ð½Ð¸ â€žPLTâ€œ Ð½Ð¸ â€žGOTâ€œ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œâ€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ñƒ ÑƒÐ¿ÑƒÑ‚Ñƒ ÐºÐ° â€ž%sâ€œ, Ð¼Ð¾Ð¶Ð´Ð° Ñ˜Ðµ Ð´Ð¾ÑˆÐ»Ð¾ Ð´Ð¾ Ð¼ÐµÑˆÐ°ÑšÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ˜Ðµ?â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: â€ž%sâ€œâ€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ, ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð¸Ð·Ð²Ð°Ð½ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°, Ð¼Ð¾Ð¶Ð´Ð° Ñ˜Ðµ Ð´Ð¾ÑˆÐ»Ð¾ Ð´Ð¾ Ð¼ÐµÑˆÐ°ÑšÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ˜Ðµ?â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð±ÐµÐ· Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð³ â€žGOTâ€œâ€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ %d Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ %d Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œâ€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œâ€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ, ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ:
-  Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ðµ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%B: â€ž!samegpâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð±ÐµÐ· â€ž.prologueâ€œ-Ð°: %s%B: %A+0x%lx: Ð�ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�ÐºÐ¾Ðº Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ð˜Ð¡Ð� Ñ€ÐµÐ¶Ð¸Ð¼Ð°; Ñ€Ð°Ð·Ð¼Ð¾Ñ‚Ñ€Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ Ð¼ÐµÑ’ÑƒÐ¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµÐ¼.%B: %s
-%B: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸%B: %s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ %d%B: %s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ %u (Ð½Ð°Ñ˜Ð². %d)%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸%B: Ð¿Ð¾Ð´-Ð¿Ð¾Ð´ÐµÐ¾Ðº â€ž.gotâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ 64K (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ %d)%B: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ñ€ÐµÐ³ÑƒÐ»Ð°Ñ€Ð°Ð½ Ð½Ð¸Ð· ÑƒÐ½Ð¾Ñ�Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð°%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž.preinit_arrayâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ñƒ â€žDSOâ€œ-Ñƒ%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: â€žR_SH_PSHAâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%dâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ñƒ -32..32%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: â€žR_SH_PSHLâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%dâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ñƒ -32..32%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ 0x%lx%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ñ†Ð¸Ñ™ Ð³Ñ€Ð°Ð½Ðµ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_SH_USESâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ â€žinsnâ€œ 0x%x%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€žR_SH_USESâ€œ%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ â€žR_SH_USESâ€œ%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žCOUNTâ€œ%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ˜Ðµ Ñƒ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ%B: â€ž@gprelâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B: â€ž@internalâ€œ Ð³Ñ€Ð°Ð½Ð° ÐºÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ%B: â€ž@pcrelâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B: Ð�Ð‘Ð˜ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ%B: Ð�Ð‘Ð˜ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°%B: Ð�Ð‘Ð˜ Ð¸Ð·Ð´Ð°ÑšÐµ %ld Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ Ñ�Ð° Ð�Ð‘Ð˜-Ñ˜ÐµÐ¼ Ð¸Ð·Ð´Ð°ÑšÐ° %ld%B: Ð�Ð¡Ð• Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°%B: ÐŸÐ¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%B: Ð�Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%B: â€žBE8â€œ Ñ�Ð»Ð¸ÐºÐµ Ñ�Ñƒ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ðµ Ñ�Ð°Ð¼Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸.%B: Ð£Ð²ÐµÐ·ÐµÐ½ Ñ˜Ðµ Ð»Ð¾Ñˆ Ñ�Ð½Ð¸Ð¼Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d%B: â€žCALL15â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° 0x%lx Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%B: â€žCALL16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° 0x%lx Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÑƒÐ¿Ð¾Ñ€ÐµÑ’ÑƒÑ˜ÑƒÑ›Ðµ â€žLO16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼ â€žbrâ€œ (%s) Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¾Ð¼ 0x%lx (> 0x1000000).%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼ â€žbrâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ. ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ â€žbrlâ€œ Ð¸Ð»Ð¸ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ð³Ñ€Ð°Ð½Ñƒ.%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ñ�Ð°Ð¶ÐµÑ‚Ð¸Ð¼ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð¸Ð¼ Ð�Ð»Ñ„Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°.
-   ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð¾Ñ†Ð°, Ð¸Ð»Ð¸ â€žobjZâ€œ, Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð½ÐµÑ�Ð°Ð¶ÐµÑ‚Ðµ Ð±Ð¸Ð½Ð°Ñ€Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ.%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ â€ž%sâ€œ Ð¸ â€ž%sâ€œ.%B: ÐžÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ: 0x%lx%B: Ð�Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´Ð°Ð¼ Ð¿Ñ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%B: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼%B: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð‘Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8- Ð¸Ð»Ð¸ 16-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d%B: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð‘Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d%B: â€žGOTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° 0x%lx Ð½Ð¸Ñ˜Ðµ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ñƒ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸Ð¼%B: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° Ð£Ð’Ð•Ð—Ð˜ ÐšÐ�Ðž Ð·Ð° â€ž%sâ€œ Ð·Ð°Ñ�ÐµÑšÑƒÑ˜Ðµ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ Ð£Ð’Ð•Ð—Ð˜ ÐšÐ�Ðž%B: Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° â€žISRâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°: Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð° %u Ð±Ð°Ñ˜Ñ‚Ð°; Ñ‚ÐµÐºÑƒÑ›Ð° %u Ð±Ð°Ñ˜Ñ‚Ð°%B: Ð¡ÐºÑƒÐ¿ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%B: Ð£Ð²ÐµÐ·ÐµÐ½Ð° Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d%B: ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%B: Ð£Ð³Ð½ÐµÐ¶Ñ’ÐµÐ½Ð¾ â€žOMIT_FPâ€œ Ñƒ â€ž%Aâ€œ.%B: Ð�ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¸Ð·Ð´Ð°ÑšÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð·Ð° Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%B: Ð�ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð° Ð·Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼, Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÑ‚Ðµ Ñ�Ð° â€ž-Nâ€œ%B: Ð¡Ð°Ð¼Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸ â€ž%%g[2367]â€œ Ð¼Ð¾Ð³Ñƒ Ð±Ð¸Ñ‚Ð¸ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ�Ð°Ð½Ð¸ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žSTT_REGISTERâ€œ%B: ÐŸÐ¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ð»Ð¸ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°%B: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ (%d) Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾.
-%B: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð¿ÑˆÑ‚ÐµÐ¼ â€žELFâ€œ-Ñƒ (EM: %d)%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ðµ Ð¾Ð´Ð½Ð¾Ñ�Ð¸ Ð½Ð° â€žSBâ€œ Ð°Ð»Ð¸ â€ž__c6xabi_DSBT_BASEâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾%B: Ð¢Ð›Ð¡ Ð¼ÐµÑ�Ð½Ð¸ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ ÐºÐ¾Ð´ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°%B: Ð¢Ð›Ð¡ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð½Ð¸Ñ�Ñƒ Ñ�ÑƒÑ�ÐµÐ´Ð½Ð¸:%B: Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾ â€žTLSâ€œ Ð¿Ñ€ÐµÐ»Ð°Ð· Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð¿Ñ€Ð¸ 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ%B: ÐŸÑ€Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ â€žPT_DYNAMICâ€œ Ð½Ð¸Ñ˜Ðµ â€ž.dynamicâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº%B: ÐœÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%A)%B: ÐŸÑ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %d (>= %d)%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð¸Ð¼Ð°Ñ˜Ñƒ Ð²Ð¸ÑˆÐµ Ð¾Ð´ Ñ˜ÐµÐ´Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ñ�Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ%B: Ð�ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° ÑƒÐ²Ð¾Ð·Ð°; %x%B: ÐžÐ±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ
-%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€ža.out.adobeâ€œ: %x
-%B: Ð�ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€žOMIT_FPâ€œ Ñƒ â€ž%Aâ€œ.%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž.directiveâ€œ: %s%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð½Ð°Ð·Ð¸Ð² Ð²Ñ€Ñ�Ñ‚Ðµ ÑƒÐ²Ð¾Ð·Ð°; %x%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° ÑƒÐ²Ð¾Ð·Ð°; %x%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° ÐºÐ»Ð°Ñ�Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° â€ž%dâ€œ Ð·Ð° â€ž%sâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð—Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€žIMAGE_SCN_MEM_NOT_PAGEDâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žThumb BLXâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ†Ð¸Ñ™Ð° Ð½Ð° â€žthumbâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ.%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð¿Ñ†Ð¸Ñ˜Ðµ â€ž%sâ€œ %u Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð°%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð´Ñ€ÐµÐ´Ð¸Ð¼ Ñ†Ð¸Ñ™Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žPLTâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ñƒ â€žthumbâ€œ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%B: â€žXMC_TC0â€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ñ†Ð½Ð´ÑƒÐ¶Ð¸Ð½Ðµ %d%B: â€ž%Aâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %ld Ð¸Ð· â€ž%Aâ€œ Ð¸Ð·Ð° Ð¾Ð¿Ñ�ÐµÐ³Ð° â€žADDIUPCâ€œ%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ â€žFDPICâ€œ-Ñƒ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€žFDPICâ€œ%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸%B: â€ž%sâ€œ Ð¸Ð¼Ð° Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ñ€ÐµÐ´Ð¾Ð²Ð° Ð°Ð»Ð¸ Ð½Ðµ Ð¸ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº%B: â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð°%B: â€žld -râ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð° â€žPE MIPSâ€œ
-%B: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº -0x%x Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%B: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº 0x%x Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%B: Ð»Ð¾Ñˆ â€žXTY_ERâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ñ†Ð±Ñ€Ð¾Ñ˜ %d Ñ�Ñ†Ð½Ð´ÑƒÐ¶Ð¸Ð½Ðµ %d%B: Ð»Ð¾ÑˆÐµ â€žpair/refloâ€œ Ð½Ð°ÐºÐ¾Ð½ â€žrefhiâ€œ
-%B: Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ%B: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° (0x%lx >= 0x%lx) Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ%B: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ%B: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ð·Ð° %lu%B: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %d%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ%B: Ð¸Ð·Ð¼ÐµÐ½Ð° Ñƒ â€žgpâ€œ-Ñƒ: BRSGP %s%B: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð¼Ð¾Ñ›Ð½Ð¸Ñ… ÑƒÐ½Ð¾Ñ�Ð°%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð¼Ð°Ð»Ð° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð²ÐµÐ»Ð¸ÐºÐ° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ ÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ð¸Ð¼ Ð¿ÑƒÑ‚ÐµÐ¼ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž-mrelocatableâ€œ%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž-mrelocatableâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ ÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ð¸Ð¼ Ð¿ÑƒÑ‚ÐµÐ¼%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð·Ð° ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œ
-%B: Ñ†-Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›ÐµÐ¼ Ð¾Ð´ÐµÑ™ÐºÑƒ%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½, Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]%B: â€ždtpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡Ð¸ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð¸Ð·Ð²Ð¾Ð·Ð° â€ž%sâ€œ%B: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜
-%B: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ
-%B: ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ð‘Ð˜ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°.%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð´ÐµÑ�Ð¸Ð¼ â€ž_ITB_BASE_â€œ%B: Ð³Ñ€ÐµÑˆÐºÐ°: ÐžÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð½ÐµÐ±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ñ˜ Ð»Ð¾ÐºÐ°Ñ†Ð¸Ñ˜Ð¸%B: Ð³Ñ€ÐµÑˆÐºÐ°: ÐžÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¡ÐºÑƒÐ¿ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°.%B: Ð³Ñ€ÐµÑˆÐºÐ°: â€žVFP11â€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð½Ð° %08x Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%pâ€œ
-%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ.%B: ÐºÐ»Ð°Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° â€ž%sâ€œ%B: â€žgpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B: Ð½Ð° Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%Bâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ%B: Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½%B: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ
-%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %d Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ 0x%lx%B: Ð½ÐµÐ´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ: %d%B: Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ. Ð˜Ð·Ð»Ð°Ð· Ñ˜Ðµ 0x%x, Ð° ÑƒÐ»Ð°Ð· 0x%x%B: Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÐºÐ° â€ž%sâ€œ Ñ˜Ðµ Ð¿ÐµÑ‚Ñ™Ð°%B: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ%B: Ð½Ð° ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%Bâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ%B: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ� â€žSHT_GROUPâ€œ%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ·Ð° â€ž%luâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ (Ð¸Ð½Ð´ÐµÐºÑ� â€ž%uâ€œ)%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ â€ž%u >= %luâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%B: Ñ�ÐºÐ¾Ðº Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð´Ð°Ð»ÐµÐºÐ¾
-%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ 32-Ð±Ð¸Ñ‚Ð½Ð¸ ÐºÐ¾Ð´ Ñ�Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ ÐºÐ¾Ð´Ð¾Ð¼%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ð° 32-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ ÐºÐ¾Ð´ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ â€žUltraSPARCâ€œ-Ñƒ Ñ�Ð° ÐºÐ¾Ð´Ð¾Ð¼ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð¸Ð¼ â€žHALâ€œ-Ñƒ%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€žÐ°ÑƒÑ‚Ð¾-Ð¿Ð¸Ðºâ€œ-Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° â€žÐ½Ðµ-Ð°ÑƒÑ‚Ð¾-Ð¿Ð¸Ðºâ€œ-Ð°%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸ Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€žÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ð³-Ð³Ð¿â€œ-Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° â€žÐ½Ðµ-ÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ð³-Ð³Ð¿â€œ-Ð°%B: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 16 Ð±Ð¸Ñ‚Ð° (-mshort) Ð° Ð´Ñ€ÑƒÐ³Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 32 Ð±Ð¸Ñ‚Ð°%B: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 32 Ð±Ð¸Ñ‚Ð° (-fshort-double) Ð° Ð´Ñ€ÑƒÐ³Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 64 Ð±Ð¸Ñ‚Ð°%B: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° â€žHCS12â€œ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸Ð¼ Ð·Ð° â€žHC12â€œ%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸ Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð½Ðµ-Ð¿Ð¸Ðº ÐºÐ¾Ð´ Ñƒ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð¼ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ð¼ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð·Ð°Ñ…Ð²Ð°Ñ‚-Ð½Ð°-Ð�Ð˜Ð¨Ð¢Ð�Ð’Ð�ÐžÐˆ-Ð´ÐµÑ€ÐµÑ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ñ�Ð° Ð½Ðµ-Ð·Ð°Ñ…Ð²Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ â€ž%Aâ€œ%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ%B: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%Bâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ%B: Ð»Ð¾ÑˆÐµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ â€žXTY_LDâ€œ â€ž%sâ€œ%B: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¢Ð›Ð¡ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ.%B: Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ%B: Ð½Ðµ-Ð¿Ð¸Ðº ÐºÐ¾Ð´ Ñ�Ð° â€žimmâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ¼ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B: Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (0x%lx) Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ ÐºÐ°Ð´Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ¼Ð° Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%B: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð»Ð°Ð±Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B: Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð±ÐµÐ· â€ž-fPICâ€œ?%B: Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s:%dâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ†-Ð¾Ð´ÐµÑ™ÐºÑƒ%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›ÐµÐ³ Ð¸Ð½Ð´ÐµÐºÑ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %ld%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%s%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð¸Ð¼Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº: %d%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¾Ð´Ñ€Ð°Ð´Ð¸%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%B: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ x32%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ â€ž%sâ€œ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%s%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOTOFFâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOTOFFâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_X86_64_GOTOFF64â€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° â€ž%A+0x%xâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼%B: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ, Ð°Ð»Ð¸ Ð½ÐµÐ¼Ð° Ð½Ð¸ÐºÐ°ÐºÐ²Ð¾Ð³ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%A lma %#lxâ€œ Ñ˜Ðµ Ð´Ð¾Ñ‚ÐµÑ€Ð°Ð½ Ð½Ð° %#lx%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐ¸ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ %ld%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð´ÐµÐ»Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ %d%B: â€žsh_link [%d]â€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾%B: â€žsh_linkâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œ ÑƒÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¾Ð´ â€ž%Bâ€œ%B: â€žsh_linkâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œ ÑƒÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° ÑƒÐºÐ»Ð¾ÑšÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¾Ð´ â€ž%Bâ€œ%B: Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñ˜Ðµ Ð½ÑƒÐ»Ð° Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°%B: Ñ€Ð°Ð·Ð¼Ð°Ñ‚Ñ€Ð°Ð¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÑƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¸ â€ž%sâ€œ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð°%B: Ð½Ð¸Ñ�ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ð½ÑƒÐ»Ð¾Ð¼ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ Ð˜Ð›Ð¤ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°.%B: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ñ†Ñ�ÐµÐºÑ‚Ð¾Ñ€Ð° â€ž%dâ€œ%B: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ ÐºÐ»Ð°Ñ�Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%dâ€œ%B: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð°Ð½%B: ÑƒÐ·Ð¸Ð¼Ð°ÑšÐµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ%B: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)%B: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%d)%B: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %u%B: â€žtpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[12] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$5â€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[1] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$2â€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[1] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$4â€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[9] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž__tls_usedâ€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[PE_IMPORT_ADDRESS_TABLE (12)] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$6â€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[PE_IMPORT_ADDRESS_TABLE(12)] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$6â€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žARMâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žTHUMBâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€žVFP11â€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ â€ž%sâ€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð±Ð°Ð²Ð¸Ð¼ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ�Ð°Ð¶Ð¸Ð¼Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¸Ð²Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%B: Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° ÑƒÐ¿ÑƒÑ‚Ð° ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ%B: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ%B: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð° â€žR_PPC64_TOCSAVEâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð�Ð¢Ð� Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œ Ñƒ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð¼ Ð´ÐµÐ»Ñƒ%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°ÑšÐµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%uâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð½Ð°ÐºÐ¾Ð½ Ð�Ð¢Ð�-Ð°%B: Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ%B: Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ â€ž%sâ€œ
-%B: Ð½ÐµÐ¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¸ Ð�Ð¢Ð˜ Ð·Ð°Ð¿Ð¸Ñ� â€ž%uâ€œ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%uâ€œ%B: [%d] Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ð³Ñ€ÑƒÐ¿Ð¸ [%s]%B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° 0x%lx%B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ%B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð°/Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ%B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (0x%x) Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ%B: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%iâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°%B: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%iâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°
-%B: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %s Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°%B: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: â€žALPHA_R_GRELHIGHâ€œ%B: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: â€žALPHA_R_GRELLOWâ€œ%B: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ â€ž_â€œ, Ð°Ð»Ð¸ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸Ð¼Ð° Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð°%B: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (0x%lx) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (0x%lx)%B: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð°, Ð°Ð»Ð¸ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸Ð¼Ð° Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ â€ž_â€œ%B: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñ‡Ð²Ð¾Ñ€ Ð¸Ð·Ð´Ð°ÑšÐ° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žCOMDATâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð° Ñ�Ð° Ð½Ð°Ð·Ð¸Ð²Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¿Ð¾Ð´ÐµÐ¾Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸, Ð´Ð° Ð»Ð¸ Ñ˜Ðµ Ñ‚Ð¾ Ð½Ð°Ð¼ÐµÑ€Ð°Ð²Ð°Ð½Ð¾ ?
-%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐšÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°.%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐµÐ»Ñ„ Ð¸Ð·Ð´Ð°ÑšÐ° %s Ð¸ %s Ð½Ð¸Ñ�Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð°.%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð�Ð°Ð¸ÑˆÐ°Ð¾ Ñ�Ð°Ð¼ Ð½Ð° Ñ�Ñ‚Ð°Ñ€Ð¸Ñ˜Ðµ Ð¸Ð·Ð´Ð°ÑšÐµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°, Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° Ñ‚ÐµÐºÑƒÑ›Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ Ð°Ð»Ð°Ñ‚Ð°.%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº Ð¾ Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ€ÐµÐ´Ð° Ð·Ð° â€ž%sâ€œ%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð¸Ð¼Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ð° Ð½Ðµ-â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð½Ðµ-Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð°%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žSDA_BASEâ€œ.%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ð¾ Ñ€ÐµÑˆÐµÑšÐµ â€žVFP11â€œ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ñ†Ð¸Ñ™Ð½Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žsh_linkâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ ÑƒÐ½Ð¾Ñ�Ñƒ â€žGOTâ€œ.%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚â€ž%B:%A%sâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°
-%B:%A: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð ÐµÐ´ Ð¥ÐµÑ‚Ð° %B:%d: Ð›Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ Ð¡-Ð·Ð°Ð¿Ð¸Ñ�Ð°
-%B:%d: Ð�ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ Ð¡-Ð·Ð°Ð¿Ð¸Ñ�Ð°
-%B:%d: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%B:%u: Ð»Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… %u, Ð½Ð°Ñ’Ð¾Ñ… %u)%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%B:%u: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žihexâ€œ Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%C: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
+#<Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð³Ñ€ÐµÑˆÐºÐµ>%%X%%P: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ
+%%X%%P: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ
+%03x%*.s  Ð›Ð¸Ñ�Ñ‚: Ð�Ð´Ñ€ÐµÑ�Ð°: %#08lx, Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %#08lx, ÐšÐ¾Ð´Ð½Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°: %d
+â€ž%03x %*.sâ€œ ÑƒÐ½Ð¾Ñ�: %C: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
+%F%P: %pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ˜Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½-Ð½Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° â€ž--gc-sectionsâ€œ
+%F%P: %pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ñ˜Ðµ Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½
+%F%P: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ â€ž%pAâ€œ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ. ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð±ÐµÐ· â€ž--enable-non-contiguous-regionsâ€œ.
+%F%P: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ â€ž%pAâ€œ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ. ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð±ÐµÐ· â€ž--enable-non-contiguous-regionsâ€œ.
+%F%P: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð³Ñ€ÑƒÐ¿Ðµ â€ž%pAâ€œ Ð¼ÐµÑ‚Ñƒ â€ž%pAâ€œ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ. ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð±ÐµÐ· â€ž--enable-non-contiguous-regionsâ€œ.
 %F%P: Ð²ÐµÑ›_Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð°_Ñ‚Ð°Ð±ÐµÐ»Ð°: %E
-%F%P: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ð° Ñ˜ÐµÐ´Ð½Ð°ÐºÐ¾ÑˆÑ›Ñƒ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ â€ž%Bâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ; Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° â€ž-fPIEâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ¶Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° â€ž-pieâ€œ
+%F%P: Ð³Ñ€ÐµÑˆÐºÐ° Ñ�Ð°Ð¼Ð¾Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°: %E
+%F%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐµ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Eâ€œ
+%F%P: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ ÑƒÐ½Ð¾Ñ�: %pB
+%F%P: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ð° Ñ˜ÐµÐ´Ð½Ð°ÐºÐ¾ÑˆÑ›Ñƒ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ â€ž%pBâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ; Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° â€ž-fPIEâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ¶Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° â€ž-pieâ€œ
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žGOTPCRELâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ð¾Ð²ÐµÐ¶Ð¸Ñ‚Ðµ Ñ�Ð° â€ž--no-relaxâ€œ
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žBND PLTâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð“Ð�Ð£ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žGOT .eh_frameâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žGOT PLTâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žGOTâ€œ Ð¾Ð´ÐµÑ™ÐºÐµ
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žIBTâ€œ-Ð¾Ð¼ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½ â€žPLTâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žPLT .eh_frameâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žVxWorksâ€œ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐµ Ð¾Ð´ÐµÑ™ÐºÐµ
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žifuncâ€œ Ð¾Ð´ÐµÑ™ÐºÐµ
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð´Ñ€ÑƒÐ³Ð¸ â€žPLT .eh_frameâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%pA: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žPCâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ñƒ â€žGOT PLTâ€œ ÑƒÐ½Ð¾Ñ�Ñƒ Ð·Ð° â€ž%sâ€œ
+%F%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žPCâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ñƒ â€žPLTâ€œ ÑƒÐ½Ð¾Ñ�Ñƒ Ð·Ð° â€ž%sâ€œ
+%F%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ€Ð°Ð·Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð³Ñ€Ð°Ð½Ðµ Ñƒ â€žPLTâ€œ ÑƒÐ½Ð¾Ñ�Ñƒ Ð·Ð° â€ž%sâ€œ
 â€ž%Hâ€œ â€ž__tls_get_addrâ€œ Ñ˜Ðµ Ð¸Ð·Ð³ÑƒÐ±Ð¸Ð¾ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚, Ð¢Ð›Ð¡ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½Ð°
-Ð�Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ â€ž%Hâ€œ Ñ˜Ðµ Ð¸Ð·Ð³ÑƒÐ±Ð¸Ð¾ â€ž__tls_get_addrâ€œ, Ð¢Ð›Ð¡ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½Ð°
-%H: â€žR_FRV_FUNCDESCâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼
-%H: â€žR_FRV_FUNCDESC_VALUEâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼
+Ð�Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ â€ž%Hâ€œ Ñ˜Ðµ Ð¸Ð·Ð³ÑƒÐ±Ð¸Ð¾ â€ž__tls_get_addrâ€œ, â€žTLSâ€œ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½Ð°
+%H: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d
+%H: â€ž%sâ€œ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%pTâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾
+%H: â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼
+%H: â€ž%sâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð¾Ð¼ Ð¾Ð´Ñ�Ñ‚Ñ€Ð°ÑšÐµÐ½Ð¸ ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°
+%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d
+%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð¸ â€žPIEâ€œ-Ð¸Ð¼Ð°
+%H: â€ž%sâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ�Ð° â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%pTâ€œ
+%H: â€ž%sâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ�Ð° Ð½Ðµ-â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%pTâ€œ
 %H: â€žR_FRV_GETTLSOFFâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ Ð¿Ð¾Ð·Ð¸Ð²Ð°
 %H: â€žR_FRV_GETTLSOFF_RELAXâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žcalllâ€œ
 %H: â€žR_FRV_GOTTLSDESC12â€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žlddiâ€œ
@@ -881,102 +1070,117 @@ Plural-Forms: nplurals=3; plural=(n%10==
 %H: â€žR_FRV_TLSDESC_RELAXâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žlddâ€œ
 %H: â€žR_FRV_TLSMOFFHIâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žsethiâ€œ
 %H: â€žR_FRV_TLSOFF_RELAXâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žldâ€œ
+%H: Ð¿Ð¾Ð·Ð¸Ð²Ñƒ Ð·Ð° â€ž%pTâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€žnopâ€œ, Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð²Ñ€Ð°Ñ‚Ð¸Ð¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°; (plt call stub)
+%H: Ð¿Ð¾Ð·Ð¸Ð²Ñƒ Ð·Ð° â€ž%pTâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€žnopâ€œ, Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð²Ñ€Ð°Ñ‚Ð¸Ð¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°; (toc save/adjust stub)
 %H: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ
 %H: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ
+%H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ â€ž%uâ€œ
+%H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ â€ž%uâ€œ
+%H: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žfixupâ€œ Ð³Ñ€Ð°Ð½Ðµ
+%H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð·Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ
+%H: Ð½Ðµ Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ð½Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ
 %H: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
 %H: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: %s
+%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾
 %H: â€žÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñƒ
 %H: â€žÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%s+%vâ€œ Ñ˜Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð¿Ñ€Ð¾ÑƒÐ·Ñ€Ð¾ÐºÐ¾Ð²Ð°Ð»Ð¾ Ð³Ð¾Ñ€ÑšÑƒ Ð³Ñ€ÐµÑˆÐºÑƒ
+%H: â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ
+%H: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ
+%H: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%#xâ€œ.
 %P%F: â€ž--relaxâ€œ Ð¸ â€ž-râ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾
-%P%F: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žex9.it %sâ€œ Ñ…ÐµÑˆ Ñ‚Ð°Ð±ÐµÐ»Ñƒ: %E
 %P%X: Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ‡Ð¸Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ: %E
-%P%X: Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð¸Ð¼Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°.
-%P: %B: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%Tâ€œ
-%P: %B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ
-%P: %B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ˜Ð¾Ñˆ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ
-%P: %B: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)
-%P: %B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°
-%P: %B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð·Ð° â€ž%Tâ€œ
-%P: %B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ
-%P: %B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ.
-%P: %B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ.
-%P: %H: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%Tâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d
-%P: %H: â€ž%sâ€œ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%Tâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾
-%P: %H: â€ž%sâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð¾Ð¼ Ð¾Ð´Ñ�Ñ‚Ñ€Ð°ÑšÐµÐ½Ð¸ ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°
-%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d
-%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°
-%P: %H: â€ž%sâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ�Ð° Ð¢Ð›Ð¡ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%Tâ€œ
-%P: %H: â€ž%sâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ�Ð° Ð½Ðµ-Ð¢Ð›Ð¡ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%Tâ€œ
-%P: %H: Ð¿Ð¾Ð·Ð¸Ð² â€ž@localâ€œ Ð·Ð° i-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ
-%P: %H: Ð¿Ð¾Ð·Ð¸Ð²Ñƒ Ð·Ð° â€ž%Tâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€žnopâ€œ, Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð²Ñ€Ð°Ñ‚Ð¸Ð¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ
-%P: %H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ â€ž%uâ€œ
-%P: %H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ â€ž%uâ€œ
-%P: %H: Ð½Ðµ Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ð½Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ
-%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾
-%P: %H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð·Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ.
-%P: %H: â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%Tâ€œ
-%P: %H: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ
-%P: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñƒ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ñƒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¼ â€ž%sâ€œ
-%P: â€ž%sâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº Ð·Ð° â€ž.eh_frame sdata4â€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ%P: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½ Ñƒ Ð�Ð‘Ð˜-Ñ˜Ñƒ Ð¸Ð·Ð´Ð°ÑšÐµ %d
-%P: â€žDW_EH_PE_datarelâ€œ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð²Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ.
-%P: Ð½Ð°Ñ’Ð¾Ñ… Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð¸ â€žELFâ€œ Ð¼Ð°ÑˆÐ¸Ð½Ñ�ÐºÐ¸ ÐºÐ¾Ð´ (%d) Ñƒ â€ž%Bâ€œ, Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… â€ž%dâ€œ
-%P: â€žbss-pltâ€œ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ð¸Ñ™ÐµÐ½Ð¾ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ�Ð°ÑšÐµÐ¼
-%P: â€žbss-pltâ€œ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ð¸Ñ™ÐµÐ½Ð¾ Ð·Ð±Ð¾Ð³ â€ž%Bâ€œ
-%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ
-%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ
-%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° Ð·Ð° â€ž%Tâ€œ
-%P: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ð²Ð°ÑšÐ° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%Tâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð»ÐµÑšÐ¾ â€žpltâ€œ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµ; Ð¸Ð·Ð±ÐµÐ³Ð°Ð²Ð°Ñ˜Ñ‚Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ â€žLD_BIND_NOW=1â€œ Ð¸Ð»Ð¸ Ð½Ð°Ð´Ð¾Ð³Ñ€Ð°Ð´Ð¸Ñ‚Ðµ Ð³Ñ†Ñ†
-%P: Ð³Ñ€ÐµÑˆÐºÐ° Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð·Ð° â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ
-%P: Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€ž%B(%A)â€œ; Ð½ÐµÑ›Ðµ Ð±Ð¸Ñ‚Ð¸ Ð½Ð°Ð¿Ñ€Ð°Ð²Ñ™ÐµÐ½Ð° Ð½Ð¸Ñ˜ÐµÐ´Ð½Ð° â€ž.eh_frame_hdrâ€œ Ñ‚Ð°Ð±ÐµÐ»Ð°.
-%P: Ñ„Ð´Ðµ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ Ñƒ â€ž%B(%A)â€œ Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ â€ž.eh_frame_hdrâ€œ Ñ‚Ð°Ð±ÐµÐ»Ðµ.
-%P: Ð³Ñ€ÐµÑˆÐºÐ° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%Tâ€œ
-%P: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ð´ÑƒÐ³Ð¾Ð³ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ
-%P: Ñ‚Ð°Ñ‡ÐºÐµ Ð²Ð¸ÑˆÐµ ÑƒÐ½Ð¾Ñ�Ð°: Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ
+%P%X: Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð¸Ð¼Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°
+%P: %H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ñ�Ð° Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼ â€ž%xâ€œ
+%P: %pB: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð·Ð° â€ž%pTâ€œ
+%P: %pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž%sâ€œ
+%P: %pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ
+%P: %pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ
+%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° Ð·Ð° â€ž%pTâ€œ
+%P: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ð²Ð°ÑšÐ° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð»ÐµÑšÐ¾ â€žpltâ€œ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµ; Ð¸Ð·Ð±ÐµÐ³Ð°Ð²Ð°Ñ˜Ñ‚Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ â€žLD_BIND_NOW=1â€œ Ð¸Ð»Ð¸ Ð½Ð°Ð´Ð¾Ð³Ñ€Ð°Ð´Ð¸Ñ‚Ðµ Ð³Ñ†Ñ†
+%P: ÑƒÐ¼Ð½Ð¾Ð¶Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ð³ â€ž%pTâ€œ Ñ˜Ðµ Ð¾Ð¿Ð°Ñ�Ð½Ð¾
+%P: Ð³Ñ€ÐµÑˆÐºÐ° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ
+%P: Ñ‚Ð°Ñ‡ÐºÐµ Ð²Ð¸ÑˆÐµ ÑƒÐ½Ð¾Ñ�Ð°: Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ
 %P: Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð²ÐµÐ·Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°
-%P: Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜Ñƒ Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ñ‚Ð¾Ñ˜ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸
-%P: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ â€žst_otherâ€œ Ð·Ð° Ð�Ð‘Ð˜ Ð¸Ð·Ð´Ð°ÑšÐµ 1
-%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ.
+%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð“Ð�Ð£-Ð¾Ð²Ðµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ�Ð° â€žDT_TEXTRELâ€œ Ð¼Ð¾Ð³Ñƒ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð¸Ñ€Ð°Ñ‚Ð¸ Ð½ÐµÑƒÑ�Ð¿ÐµÑ…Ð¾Ð¼ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ˜Ðµ Ñƒ Ð²Ñ€ÐµÐ¼Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž%sâ€œ
+%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ â€žPIEâ€œ
+%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ
+%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð¸ Ð“Ð�Ð£-Ð¾Ð²Ðµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ð¼Ð¾Ð³Ñƒ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð¸Ñ€Ð°Ñ‚Ð¸ Ð½ÐµÑƒÑ�Ð¿ÐµÑ…Ð¾Ð¼ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ˜Ðµ Ñƒ Ð²Ñ€ÐµÐ¼Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°
 %X%C: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
-%X%P: %B(%A): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%Râ€œ Ð¸Ð´Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°
-%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ.
-%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ñ€ÐµÐ´Ð° Ð¾Ñ�Ñ‚Ð°Ð²Ðµ.
-%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ.
-%X%P: Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ð¸ â€ž%Aâ€œ Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸ÑšÑƒ Ð½Ð° Ð¸Ñ�Ñ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸.
-%Xâ€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿ÑƒÑ‚Ð½Ð¾ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ð¾Ð´ â€ž%Bâ€œ: Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñ˜Ðµ Ñƒ Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ð¾Ð´ â€ž%Bâ€œ
-â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð½Ð° ÑƒÐºÐ»Ð¾ÑšÐµÐ½Ð¾Ð¼ ÑƒÐ½Ð¾Ñ�Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¾
+%X%H: Ð¿Ð¾Ð·Ð¸Ð² â€ž@localâ€œ Ð·Ð° i-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ
+%X%H: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð³Ñ€Ð°Ð½Ðµ Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€žISAâ€œ Ñ€ÐµÐ¶Ð¸Ð¼Ð° Ñƒ â€žJALXâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°
+%X%H: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ
+%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žJALXâ€œ Ñƒ Ð¸Ñ�Ñ‚Ð¾Ð¼ â€žISAâ€œ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ
+%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð³Ñ€Ð°Ð½Ð° Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€žISAâ€œ Ñ€ÐµÐ¶Ð¸Ð¼Ð°
+%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žbss-pltâ€œ â€ž-fPICâ€œ â€žifuncâ€œ â€ž%sâ€œ
+%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�ÐºÐ¾Ðº Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€žISAâ€œ Ñ€ÐµÐ¶Ð¸Ð¼Ð°; Ñ€Ð°Ð·Ð¼Ð¾Ñ‚Ñ€Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ Ð¼ÐµÑ’ÑƒÐ¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµÐ¼
+%X%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð·Ð° â€žbss-pltâ€œ
+%X%P: %pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ â€ž%Vâ€œ Ð½ÐµÐ¼Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚
+%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%pRâ€œ Ð¸Ð´Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°
+%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%pRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾
+%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%pRâ€œ Ñ˜Ðµ Ð²Ñ€Ð°Ñ‚Ð¸Ð»Ð¾ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%xâ€œ
+%X%P: %pB: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žglibcâ€œ-Ð¾Ð¼ ÐºÐ°Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ
+%X%P: %pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž%sâ€œ
+%X%P: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ… Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐºÑƒ Ð²ÐµÐ·Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€ž%pBâ€œ
+%X%P: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°
+%X%P: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°
+%X%P: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾
+%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ
+%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ñ€ÐµÐ´Ð° Ð¾Ñ�Ñ‚Ð°Ð²Ðµ
+%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ
+%X%P: Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ð¸ â€ž%pAâ€œ Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸ÑšÑƒ Ð½Ð° Ð¸Ñ�Ñ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸
+%X%P: Ð³Ñ€ÐµÑˆÐºÐ° â€žstack/lrliveâ€œ Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ: %E
+%X%P: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð¸ Ð“Ð�Ð£-Ð¾Ð²Ðµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ›Ðµ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð¸Ñ€Ð°Ñ‚Ð¸ Ð½ÐµÑƒÑ�Ð¿ÐµÑ…Ð¾Ð¼ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ˜Ðµ Ñƒ Ð²Ñ€ÐµÐ¼Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°
+%Xâ€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿ÑƒÑ‚Ð½Ð¾ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ: Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñ˜Ðµ Ñƒ Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ
+â€ž%pAâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ [â€ž%pAâ€œ Ñƒ â€ž%pBâ€œ] Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ [â€ž%pAâ€œ Ñƒ â€ž%pBâ€œ] Ð¾Ð´ÐµÑ™Ð°Ðºâ€ž%pAâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº%pA:0x%v â€žlrlive .brinfoâ€œ (%u) Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ (%u)
+â€ž%pA:0x%vâ€œ Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ
+%pB (%s): Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (%#lx) Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°%pB: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½ Ñƒ â€žABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %dâ€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ñ�Ñƒ Ð·Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐ°â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ñ�Ñƒ Ð·Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð°â€ž%pBâ€ž Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žCRIS v32â€œ ÐºÐ¾Ð´ ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°â€ž%pBâ€ž Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-â€žCRIS-v32â€œ ÐºÐ¾Ð´ ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°â€ž%pBâ€œ Ð¿Ð¾Ñ�ÐµÐ´ÑƒÑ˜Ðµ Ð¸ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸ Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸ â€žTag_MPextension_useâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚â€ž%pBâ€œ Ð½ÐµÐ¼Ð° Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ â€ž%sâ€œâ€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð³Ñ€ÑƒÐ¿Ðµ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ°â€ž%pBâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð±Ñ€Ð¾Ñ˜ %lu ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žSHT_SYMTAB_SHNDXâ€œâ€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð», â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 128-Ð±Ð¸Ñ‚Ð½Ð¸ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð»â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žAltiVecâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€ â€žABIâ€œ, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žSPEâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€ â€žABIâ€œâ€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žIBMâ€œ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð», â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žIEEEâ€œ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð»â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ð´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ñ˜ÐµÐ´Ð½Ðµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žr3/r4â€œ Ð·Ð° Ð¼Ð°Ð»Ðµ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ðµ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒâ€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€že_flagsâ€œ 0x%lx%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð·Ð¸Ð² Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð¸ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ñƒ Ð·Ð° Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð°%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° %u Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð°Ð½%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ %u Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÑˆÑ‚Ð°Ñ˜ %u ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð±Ñ€Ð¸Ñ�Ð°Ð½ Ñ�Ð¸Ð¼Ð±Ð¾Ð»%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÑˆÑ‚Ð°Ñ˜ %u ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð°Ð½!%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ñ˜Ðµ Ð¾Ð±Ñ€Ð°Ñ’ÐµÐ½ Ð´Ð²Ð° Ð¿ÑƒÑ‚Ð°%pB(%pA): Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ñ‚Ð¸ Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¸Ð·Ð»Ð°Ð·Ñƒ%pB(%pA): Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%pB(%pA): Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð²Ð»Ð°Ñ�Ð½Ð¸ÑˆÑ‚Ð²Ð°%pB(%pA): Ð¾Ð´ÐµÑ™Ð°Ðº Ð²ÐµÐ·Ðµ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ñ‚Ð¸ Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð¸Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð½ÐµÐ¼Ð° Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%pB(%pA): Ð²Ð¸ÑˆÐµ â€žTLSâ€œ Ð¼Ð¾Ð´ÐµÐ»Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%dâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld%pB(%pA): Ð½Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð¾Ð±Ð°Ð²Ñ™Ð°ÑšÐ° Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐºÐµ Ð²ÐµÐ·Ðµ%pB(%pA): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð´ÑƒÐ³Ðµ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐµ Ð³Ñ€Ð°Ð½Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ðµ Ñ�Ñƒ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ â€žSHF_ARM_PURECODEâ€œ Ð¾Ð´ÐµÑ™ÐºÐ¾Ð¼ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ†Ð¸Ñ™ÐµÐ²Ðµ M-Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð° ÐºÐ¾Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÑƒÑ˜Ñƒ â€žmovwâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ%pB(%pA): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°%pB(%pA): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¸Ð¼ Ð¼Ð°Ð»Ð¸Ð¼ Ð¿Ð¾Ð´Ð°Ñ†Ð¸Ð¼Ð° Ð²Ñ€Ñ�Ñ‚Ðµ â€ž%dâ€œ%pB(%pA+%#lx): ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€ÑšÐ°ÐºÐ° Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð½Ð¸Ñ�ÐºÐµ%pB(%pA+%#x): Ð³Ñ€ÐµÑˆÐºÐ°: Ð²Ð¸ÑˆÐµÑ�Ñ‚Ñ€ÑƒÐºÐ¾ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐµ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñƒ Ð½Ðµ-Ð¿Ð¾Ñ�Ð»ÐµÐ´ÑšÐ¾Ñ˜ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¸ â€žITâ€œ Ð±Ð»Ð¾ÐºÐ°: â€žSTM32L4XXâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ â€žgccâ€œ Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-mrestrict-itâ€œ Ð·Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ñ�Ð°Ð¼Ð¾ Ñ˜ÐµÐ´Ð½Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ Ð¿Ð¾ â€žITâ€œ Ð±Ð»Ð¾ÐºÑƒ%pB(%pA+0x%lx): Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž16Aâ€œ Ñ�Ñ‚Ð¸Ð»Ð° Ð½Ð° â€ž0x%08x insnâ€œ%pB(%pA+0x%lx): Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž16Dâ€œ Ñ�Ñ‚Ð¸Ð»Ð° Ð½Ð° â€ž0x%08x insnâ€œ%pB(%pA+0x%v): Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-ÐºÐ¾Ð´Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pB(%pA)â€œ, Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ñ‚Ð¿ÑƒÐ½Ð°
+%pB(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾; Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %pB: â€ž%sâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° â€ž%sâ€œâ€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ:
+  Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ñ‚Ð¸Ð¿Ð¸Ñ‡Ð½Ð¾ Ð¼ÐµÑˆÐ°ÑšÐµ Ð¾Ð¿Ñ†Ð¸Ñ˜Ð°, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œâ€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð½ÐµÐ¼Ð° â€žPLTâ€œ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œâ€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð½ÐµÐ¼Ð° Ð½Ð¸ â€žPLTâ€œ Ð½Ð¸ â€žGOTâ€œ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œâ€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ñƒ ÑƒÐ¿ÑƒÑ‚Ñƒ ÐºÐ° â€ž%sâ€œ, Ð¼Ð¾Ð¶Ð´Ð° Ñ˜Ðµ Ð´Ð¾ÑˆÐ»Ð¾ Ð´Ð¾ Ð¼ÐµÑˆÐ°ÑšÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ˜Ðµ?â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ, ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð¸Ð·Ð²Ð°Ð½ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°, Ð¼Ð¾Ð¶Ð´Ð° Ñ˜Ðµ Ð´Ð¾ÑˆÐ»Ð¾ Ð´Ð¾ Ð¼ÐµÑˆÐ°ÑšÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ˜Ðµ?â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: â€ž%sâ€œâ€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ, ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð¸Ð·Ð²Ð°Ð½ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°, Ð¼Ð¾Ð¶Ð´Ð° Ñ˜Ðµ Ð´Ð¾ÑˆÐ»Ð¾ Ð´Ð¾ Ð¼ÐµÑˆÐ°ÑšÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ˜Ðµ?â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ðµ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œâ€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð±ÐµÐ· Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð³ â€žGOTâ€œâ€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œâ€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: v10/v32 Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð½Ðµ Ñ�Ð¼Ðµ Ð´Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žPICâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµâ€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ, ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ðµ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%pB: â€ž!samegpâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð±ÐµÐ· â€ž.prologueâ€œ-Ð°: %s%pB: â€ž%pAâ€œ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™Ð°Ðº ÑƒÐ»Ð°Ð·Ð°%pB: â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÑƒ%pB: â€ž%pAâ€œ Ñ‚Ð°Ñ‡Ð°ÐºÐ° Ð¿Ñ€ÐµÐ»Ð°Ð·Ð¸ ÐºÑ€Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ‚ÐµÐºÑ�Ñ‚Ð°%pB: %pA: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %#x > 0xffff%pB: â€ž%sâ€œ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%pB: â€ž%sâ€œ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Ð¸Ð½Ð´ÐµÐºÑ�Ñƒ %lu (>= sh_info %lu)%pB: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾%pB: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸%pB: %s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ %d%pB: %s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ %u (Ð½Ð°Ñ˜Ð². %d)%pB: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: 0x%lx > 0xffff%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸%pB: â€ž--in-implibâ€œ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ð·Ð° â€žSecure Gatewayâ€œ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ½Ð¾Ñ�Ð°%pB: â€ž.gnu.version_dâ€œ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ�%pB: â€ž.gnu.version_râ€œ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ�%pB: Ð¿Ð¾Ð´-Ð¿Ð¾Ð´ÐµÐ¾Ðº â€ž.gotâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ 64K (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ %d)%pB: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ñ€ÐµÐ³ÑƒÐ»Ð°Ñ€Ð°Ð½ Ð½Ð¸Ð· ÑƒÐ½Ð¾Ñ�Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð°%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž.preinit_arrayâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ñƒ â€žDSOâ€œ-Ñƒ%pB: Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº%pB: Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº%pB: â€ž@gprelâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: â€ž@internalâ€œ Ð³Ñ€Ð°Ð½Ð° ÐºÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ%pB: â€ž@pcrelâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: â€žABIâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ%pB: â€žABIâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ Ñ�Ð° Ð¾Ð½Ð¸Ð¼ Ð¸Ð· Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ:
+  Ñ†Ð¸Ñ™Ð½Ð° ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð° Ñ�Ð° â€ž%sâ€œ%pB: â€žABIâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°%pB: â€žABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %ld Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ Ñ�Ð° â€žABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐ° %ld%pB: â€žASEâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°%pB: â€žBE8â€œ Ñ�Ð»Ð¸ÐºÐµ Ñ�Ñƒ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ðµ Ñ�Ð°Ð¼Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¾Ð¼ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾Ð´ %d%pB: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼%pB: â€žGNU_MBINDâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€žsh_infoâ€œ Ð¿Ð¾Ñ™Ðµ: %d%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð±Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8- Ð¸Ð»Ð¸ 16-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð±Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° â€žISRâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°: Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð° %u Ð±Ð°Ñ˜Ñ‚Ð°; Ñ‚ÐµÐºÑƒÑ›Ð° %u Ð±Ð°Ñ˜Ñ‚Ð°%pB: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð¿ÑˆÑ‚ÐµÐ¼ â€žELFâ€œ-Ñƒ (EM: %d)%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ðµ Ð¾Ð´Ð½Ð¾Ñ�Ð¸ Ð½Ð° â€žSBâ€œ Ð°Ð»Ð¸ â€ž__c6xabi_DSBT_BASEâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾%pB: â€žSHT_GROUPâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº [Ð¸Ð½Ð´ÐµÐºÑ� %d] Ð½ÐµÐ¼Ð° â€žSHF_GROUPâ€œ Ð¾Ð´ÐµÑ™ÐºÐµ%pB: â€žTLSâ€œ Ð¼ÐµÑ�Ð½Ð¸ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ ÐºÐ¾Ð´ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°%pB: â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð¢Ð›Ð¡ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð½Ð¸Ñ�Ñƒ Ñ�ÑƒÑ�ÐµÐ´Ð½Ð¸:%pB: ÐŸÑ€Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ â€žPT_DYNAMICâ€œ Ð½Ð¸Ñ˜Ðµ â€ž.dynamicâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº%pB: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€ÑƒÐºÑƒÑ˜ÐµÐ¼ Ñ�Ð° Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° %x Ñƒ Ð•Ð›Ð¤ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ.  ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ›Ñƒ â€žABSâ€œ.%pB: â€žXCOFFâ€œ Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ ÐºÐ°Ð´Ð° Ñ�Ðµ Ð½Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ â€žXCOFFâ€œ Ð¸Ð·Ð»Ð°Ð·%pB: â€ž__gpâ€œ Ð½Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ ÐºÑ€Ð°Ñ‚ÐºÐ¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ â€žFDPICâ€œ-Ñƒ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€žFDPICâ€œ%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸%pB: â€ž%sâ€œ Ð¸ ÑšÐµÐ½ Ñ�Ð¿ÐµÑ†Ð¸Ñ˜Ð°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ñƒ Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ñ†Ð¸Ð¼Ð°%pB: â€ž%sâ€œ Ð¸Ð¼Ð° Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ñ€ÐµÐ´Ð¾Ð²Ð° Ð°Ð»Ð¸ Ð½Ðµ Ð¸ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº%pB: â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð°%pB: â€ž%sâ€œ Ð½Ðµ-â€žPLTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÑ†Ð¸ Ð¸ ÐºÐ¾Ð¼Ðµ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ñ™ÐµÐ½Ð¾ Ð¸Ð· Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð³ (Ð´Ð° Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° â€ž-fPICâ€œ ?)%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%pB: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€žgotâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°%pB: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€žpltâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°%pB: â€žaoutâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð½Ð°Ð²Ð¾Ð´Ð¸ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ°Ð½ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°: %u%pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð¼ Ð½Ð¸Ñ�ÐºÐµ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° Ð½Ðµ-Ð½Ð¸Ñ�ÐºÐµ (Ð±Ñ€Ð¾Ñ˜ %d)%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑˆÐ°Ð¼ â€žFDPICâ€œ Ð¸ Ð½Ðµ-â€žFDPICâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°%pB: ÑƒÐ²ÐµÐ·ÐµÐ½ Ñ˜Ðµ Ð»Ð¾Ñˆ Ñ�Ð½Ð¸Ð¼Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d%pB: Ð»Ð¾Ñˆ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ%pB: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ%pB: Ð»Ð¾ÑˆÐ° Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: â€žMainâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð½Ð° â€ž%sâ€œ ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%sâ€œ
+%pB: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %d%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð¿Ð»ÑƒÑ� Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: â€ž%sâ€œ Ñƒ â€ž%pAâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð¿Ð»ÑƒÑ� Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: (Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾) Ñƒ â€ž%pAâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ â€ža.outâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ža.outâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ðµ Ñ�Ð° â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€žRVEâ€œ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¾Ð¼ Ð¼ÐµÑ‚Ð¾Ð¼%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð·Ð° Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ %d, %d Ð±Ð°Ñ˜Ñ‚Ð°
+%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ Ð·Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ â€žGOTâ€œ ÑƒÐ½Ð¾Ñ�Ð¸%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ñ�Ð°Ð¶ÐµÑ‚Ð¸Ð¼ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð¸Ð¼ Ð�Ð»Ñ„Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð¾Ñ†Ð°, Ð¸Ð»Ð¸ â€žobjZâ€œ, Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð½ÐµÑ�Ð°Ð¶ÐµÑ‚Ðµ Ð±Ð¸Ð½Ð°Ñ€Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ â€žfdpicâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ Ð½Ðµ-â€žfdpicâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ñƒ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ð½Ðµ-â€žfdpicâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ â€žfdpicâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ñƒ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ â€ž%sâ€œ Ð¸ â€ž%sâ€œ%pB: Ð¸Ð·Ð¼ÐµÐ½Ð° Ñƒ â€žgpâ€œ-Ñƒ: BRSGP %s%pB: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð¼Ð¾Ñ›Ð½Ð¸Ñ… ÑƒÐ½Ð¾Ñ�Ð°%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž%s -mtune=%sâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž%s -mtune=%sâ€œ%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð¼Ð°Ð»Ð° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð²ÐµÐ»Ð¸ÐºÐ° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ ÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ð¸Ð¼ Ð¿ÑƒÑ‚ÐµÐ¼ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž-mrelocatableâ€œ%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž%sâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž%sâ€œ%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž%sâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ Ð½Ðµ-â€žpicâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž-mrelocatableâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ ÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ð¸Ð¼ Ð¿ÑƒÑ‚ÐµÐ¼%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð·Ð° ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ
+%pB: Ñ†-Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›ÐµÐ¼ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ â€žGOTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð±ÐµÐ· Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ â€žGOTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOT32Xâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð±ÐµÐ· Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° â€žLOCALâ€œ Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ñ�Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼ Ð¸Ð»Ð¸ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð¼ Ð²Ñ€ÐµÐ´Ð½Ð¾ÑˆÑ›Ñƒ%pB: â€ždtpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð¸Ð·Ð²Ð¾Ð·Ð° â€ž%sâ€œ%pB: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜
+%pB: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ
+%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð±ÐµÐ· â€ž.loaderâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ
+%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ %pA
+%pB: ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ%pB: Ñ„ÑƒÐ½ÐºÑ†Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð½Ð°%pB: Ñ„ÑƒÐ½ÐºÑ†Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ð·Ð»Ð°Ð·%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žABIâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð½ÐµÐ±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ñ˜ Ð»Ð¾ÐºÐ°Ñ†Ð¸Ñ˜Ð¸%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žPHDRâ€œ Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²ÐµÐ½ â€žLOADâ€œ Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ¾Ð¼%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žVFP11â€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð½Ð°Ð³Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° %d Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ðµ â€ž%pAâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº: %#llx%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žSTM32L4XXâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð´Ð°Ñ†Ð¸ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñ�Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð°Ñ˜Ñƒ Ð¸Ð·Ð²Ð°Ð½ ÐºÑ€Ð°Ñ˜Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ 835769 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð³Ñ€ÐµÑˆÐºÐ° 843419 Ð¸Ð·Ñ€Ð°Ð²Ð½Ð¾ 0x%%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ 843419 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐºÑƒÐ¿ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð·Ð° â€ž%sâ€œ; Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½ Ñƒ Ñ€Ð°Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð½Ðµ-ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° %d ÑƒÐºÑ™ÑƒÑ‡ÑƒÑ˜Ðµ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¸/Ð¸Ð»Ð¸ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žsearch_nds32_elf_blankâ€œ Ð¸Ð·Ð²ÐµÑˆÑ‚Ð°Ð²Ð° Ð¾ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ñ‡Ð²Ð¾Ñ€Ñƒ%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€žCOMDATâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº %d%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð²ÐµÐ·Ðµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº %d%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ ÑƒÐ²Ð¾Ð·Ð½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°%pB: ÐºÐ¾Ð±Ð½Ð¾: Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ½Ð¸ Ð¿Ñ€Ðµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°%pB: ÐºÐ»Ð°Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° â€ž%sâ€œ%pB: â€žgotoffâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: â€žgpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð¾Ð´ÐµÑ™Ð°Ðº Ð³Ñ€ÑƒÐ¿Ðµ â€ž%pAâ€œ Ð½ÐµÐ¼Ð° Ð½Ð¸ÐºÐ°ÐºÐ²Ð¾Ð³ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°%pB: Ð½Ð° Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ%pB: Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½%pB: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°%pB: Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ; Ð¸Ð·Ð»Ð°Ð· Ñ˜Ðµ 0x%x, Ð° ÑƒÐ»Ð°Ð· 0x%x%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%pB: Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÐºÐ° â€ž%sâ€œ Ñ˜Ðµ Ð¿ÐµÑ‚Ñ™Ð°%pB: Ñ�ÐºÑƒÐ¿ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%pB: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ%pB: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°, ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° â€ž%pAâ€œ Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜
+%pB: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°, Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¸Ð· %d Ñƒ %d Ñ€ÐµÑ‡Ð¸
+%pB: Ð½Ð° ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ%pB: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ� Ñƒ â€žSHT_GROUPâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ [%u]%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ� Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ½Ð¾Ñ�Ð°: â€ž%sâ€œ; Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸, Ð¾Ð¿ÑˆÑ‚Ð¸ Ð¸ Ð´Ð° Ñ�Ðµ Ð¾Ð´Ð½Ð¾Ñ�Ð¸ Ð½Ð° â€žThumbâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ·Ð° â€ž%uâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ (Ð¸Ð½Ð´ÐµÐºÑ� â€ž%uâ€œ)%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: YZ â€žlop_endâ€œ-Ð° (%ld) Ð½Ð¸Ñ˜Ðµ Ñ˜ÐµÐ´Ð½Ð°ÐºÐ¾ Ñ�Ð° Ð±Ñ€Ð¾Ñ˜ÐµÐ¼ Ñ‚ÐµÑ‚Ñ€Ð°Ñ�Ð° Ð´Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾Ð³ â€žlop_stabâ€œ-Ð° (%ld)
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… YZ = 1 Ð´Ð¾Ð±Ð¸Ñ… YZ = %d Ð·Ð° â€žlop_quoteâ€œ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… y = 0 Ð´Ð¾Ð±Ð¸Ñ… y = %d Ð·Ð° â€žlop_fixrxâ€œ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 1 Ð¸Ð»Ð¸ z = 2, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_fixoâ€œ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 1 Ð¸Ð»Ð¸ z = 2, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_locâ€œ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 16 Ð¸Ð»Ð¸ z = 24, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_fixrxâ€œ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¿Ð¾Ñ™Ðµ y Ð¸ z â€žlop_stabâ€œ-Ð° Ð½Ð¸Ñ˜Ðµ Ð½ÑƒÐ»Ð°, y: %d, z: %d
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð·Ð° Ð±Ñ€Ð¾Ñ˜ %d Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½ Ð¿Ñ€Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ðµ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ %d â€ž%sâ€œ, Ñ˜Ðµ Ð²ÐµÑ› ÑƒÐ½ÐµÑˆÐµÐ½ ÐºÐ°Ð¾ â€ž%sâ€œ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°ÑšÐ° Ð·Ð° $255 Ð½Ð¸Ñ˜Ðµ â€žMainâ€œ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð²Ð¾Ð´ÐµÑ›Ð¸ Ð±Ð°Ñ˜Ñ‚ Ñ€ÐµÑ‡Ð¸ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ 0 Ð¸Ð»Ð¸ 1, Ð´Ð¾Ð±Ð¸Ñ… %d Ð·Ð° â€žlop_fixrxâ€œ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: â€žlop_endâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ð»ÐµÐ´ÑšÐ° Ñ�Ñ‚Ð°Ð²ÐºÐ° Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð»Ð¾Ð¿ÐºÐ¾Ð´ â€ž%dâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€žsh_linkâ€œ Ð¿Ð¾Ñ™Ðµ (%d) Ñƒ Ð±Ñ€Ð¾Ñ˜Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° %d%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ�Ð¿ÐµÑ†Ð¸Ñ˜Ð°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ; Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ð¸Ð»Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð»Ð°Ð±Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ; Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ð¸Ð»Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð»Ð°Ð±Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¸Ð·Ð´Ð°ÑšÐ° %lx (Ð½Ð°Ñ˜Ð². %lx)%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ 32-Ð±Ð¸Ñ‚Ð½Ð¸ ÐºÐ¾Ð´ Ñ�Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ ÐºÐ¾Ð´Ð¾Ð¼%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ð° 32-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ ÐºÐ¾Ð´ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ â€žUltraSPARCâ€œ-Ñƒ Ñ�Ð° ÐºÐ¾Ð´Ð¾Ð¼ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð¸Ð¼ â€žHALâ€œ-Ñƒ%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°ÑƒÑ‚Ð¾-â€žpicâ€œ-Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð½Ðµ-Ð°ÑƒÑ‚Ð¾-â€žpicâ€œ%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸ Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€žÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ð³-Ð³Ð¿â€œ-Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° â€žÐ½Ðµ-ÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ð³-Ð³Ð¿â€œ-Ð°%pB: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 16 Ð±Ð¸Ñ‚Ð° (-mshort) Ð° Ð´Ñ€ÑƒÐ³Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 32 Ð±Ð¸Ñ‚Ð°%pB: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 32 Ð±Ð¸Ñ‚Ð° (-fshort-double) Ð° Ð´Ñ€ÑƒÐ³Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 64 Ð±Ð¸Ñ‚Ð°%pB: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° â€žHCS12â€œ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸Ð¼ Ð·Ð° â€žHC12â€œ%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸ Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð½Ðµ-â€žpicâ€œ ÐºÐ¾Ð´ Ñƒ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð¼ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ð¼ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð·Ð°Ñ…Ð²Ð°Ñ‚-Ð½Ð°-Ð�Ð˜Ð¨Ð¢Ð�Ð’Ð�ÐžÐˆ-Ð´ÐµÑ€ÐµÑ„ÐµÑ€ÐµÐ½Ñ†Ð¸ Ñ�Ð° Ð½Ðµ-Ð·Ð°Ñ…Ð²Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ â€ž%pAâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ%pB: Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð±Ð¸Ñ›Ðµ â€žNULLâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%pB: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ñ†Ð¸Ñ™ÐµÐ¼%pB: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ%pB: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%pB: Ð»Ð¾ÑˆÐµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ â€žXTY_LDâ€œ â€ž%sâ€œ%pB: ÑƒÐ³Ð½ÐµÐ¶Ñ’ÐµÐ½Ð¾ â€žOMIT_FPâ€œ Ñƒ â€ž%pAâ€œ%pB: Ð½ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð´ÑƒÐ³Ð¾Ð³ %d Ð±Ð°Ñ˜Ñ‚Ð°%pB: Ð½ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ð½Ð°Ð·Ð¸Ð²Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ%pB: Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ%pB: Ð½ÐµÐ¼Ð° Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð¸Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€Ð°; Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° 0
+%pB: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° ÑƒÐ²Ð¾Ð·Ð½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ%pB: Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¸Ð·Ð´Ð°ÑšÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð·Ð° Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%pB: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ðµ Ð¾Ð´ÐµÑ™ÐºÐµ Ð³Ñ€ÑƒÐ¿Ðµ%pB: Ð½Ðµ-â€žpicâ€œ ÐºÐ¾Ð´ Ñ�Ð° â€žimmâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ¼ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: â€žnon-picâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð° Ð·Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼, Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÑ‚Ðµ Ñ�Ð° â€ž-Nâ€œ%pB: Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¾ Ð¸Ð·Ð´Ð°ÑšÑƒ%pB: Ñ�Ð°Ð¼Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸ â€ž%%g[2367]â€œ Ð¼Ð¾Ð³Ñƒ Ð±Ð¸Ñ‚Ð¸ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ�Ð°Ð½Ð¸ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žSTT_REGISTERâ€œ%pB: Ð¿Ð¾Ð½ÐµÑ�Ñ‚Ð°Ð»Ð¾ Ñ˜Ðµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÑƒ Ð½Ð°Ð·Ð¸Ð²Ð° Ð·Ð° Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº%pB: Ð½ÐµÐ¼Ð° Ð²Ð¸ÑˆÐµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ñƒ â€ž_bfd_elf_get_propertyâ€œ%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° (0x%x)%pB: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð»Ð°Ð±Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ˜Ðµ Ð¿Ñ€Ð¸ÐºÑ™ÑƒÑ‡Ð°Ðº Ð·Ð° Ñ€ÑƒÐºÐ¾Ð²Ð°ÑšÐµ â€žltoâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¾Ð¼%pB: Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð±ÐµÐ· â€ž-fPICâ€œ?%pB: Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½%pB: Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ð»Ð¸ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð½Ðµ-Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: â€ž%sâ€œ Ñƒ â€ž%pAâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð½Ðµ-Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: (Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾) Ñƒ â€ž%pAâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›ÐµÐ³ Ð¸Ð½Ð´ÐµÐºÑ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %ld%pB: Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð²ÐµÐ·Ð° Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%s%sâ€œ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž%s%sâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¾Ð´Ñ€Ð°Ð´Ð¸%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž%sâ€œ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%pB: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ x32%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ ÐºÐ¾Ñ˜Ð° Ñ�Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ð²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð¿Ð¾Ñ™Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOTOFFâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOTOFFâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_X86_64_GOTOFF64â€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_X86_64_GOTOFF64â€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð¿ÑˆÑ‚ÐµÐ¼ â€žELFâ€œ-Ñƒ (EM: %d)%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ, Ð°Ð»Ð¸ Ð½ÐµÐ¼Ð° Ð½Ð¸ÐºÐ°ÐºÐ²Ð¾Ð³ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐ¸ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ %ld%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žVTENTRYâ€œ ÑƒÐ½Ð¾Ñ�%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð´ÐµÐ»Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ %d%pB: Ð±Ñ€Ð¾Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° ÑƒÐ½Ð¾Ñ�Ð° Ð³Ñ€ÑƒÐ¿Ðµ %u Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½%pB: â€žsh_link [%d]â€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾%pB: â€žsh_linkâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ ÑƒÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ%pB: â€žsh_linkâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ ÑƒÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° ÑƒÐºÐ»Ð¾ÑšÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ%pB: Ð¿Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñ˜Ðµ Ð½ÑƒÐ»Ð° Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°%pB: Ñ�Ð¿ÐµÑ†Ð¸Ñ˜Ð°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ñ�Ð°Ð¼Ð¾ Ð·Ð° â€žARMv8-Mâ€œ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ Ð¸Ð»Ð¸ Ð½Ð¾Ð²Ð¸Ñ˜Ñƒ%pB: Ñ€Ð°Ð·Ð¼Ð°Ñ‚Ñ€Ð°Ð¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÑƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¸ â€ž%sâ€œ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð°%pB: Ð½Ð¸Ñ�ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ð½ÑƒÐ»Ð¾Ð¼ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€žILFâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ° Ð·Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð°%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ñ†Ñ�ÐµÐºÑ‚Ð¾Ñ€Ð° â€ž%dâ€œ%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ ÐºÐ»Ð°Ñ�Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%dâ€œ%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð°Ð½%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð° Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ (Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾)%pB: ÑƒÐ·Ð¸Ð¼Ð°ÑšÐµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ%pB: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)%pB: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%pA)%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%d)%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %d (>= %d)%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %u%pB: â€žtpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð»Ð°Ð¶Ð½Ð¸ Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[12] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$5â€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[1] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$2â€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[1] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$4â€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[9] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž__tls_usedâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[PE_IMPORT_ADDRESS_TABLE (12)] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$6â€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[PE_IMPORT_ADDRESS_TABLE(12)] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$6â€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€ž%sâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ â€ž%sâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ð·Ð¸Ð² Ð·Ð° Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð±Ð°Ð²Ð¸Ð¼ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ�Ð°Ð¶Ð¸Ð¼Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¸Ð²Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð¼ â€žCOMDATâ€œ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ°%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð¸Ð¼Ð°Ñ˜Ñƒ Ð²Ð¸ÑˆÐµ Ð¾Ð´ Ñ˜ÐµÐ´Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ñ�Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ%pB: Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° ÑƒÐ¿ÑƒÑ‚Ð° ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ%pB: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð° â€žR_PPC64_TOCSAVEâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ%pB: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°ÑšÐµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%uâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° ÑƒÐ²Ð¾Ð·Ð°; %x%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žsparcâ€œ Ð¼Ð°ÑˆÐ¸Ð½Ðµ â€ž%luâ€œ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð° Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð¾Ð±Ñ€Ð°Ñ’Ð¸Ð²Ð°ÑšÐ° Ð¿Ð¸Ñ�Ð°ÑšÐ°%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€ž%sâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€ž%dâ€œ Ð¾Ð±Ð°Ð²ÐµÐ·Ð½Ð¾Ð³ â€žARCâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° [%#x] Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° [%#x] Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ð³Ñ€ÑƒÐ¿Ð¸ [%pA]%pB: Ð½ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€žOMIT_FPâ€œ Ñƒ â€ž%pAâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð½Ð°Ð·Ð¸Ð² Ð²Ñ€Ñ�Ñ‚Ðµ ÑƒÐ²Ð¾Ð·Ð°; %x%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° ÑƒÐ²Ð¾Ð·Ð°; %x%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %#x Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° ÐºÐ»Ð°Ñ�Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° â€ž%dâ€œ Ð·Ð° â€ž%sâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€žAOUTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€ž%#xâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð±Ñ„Ð´ Ð¿Ð¾ÐºÐ»Ð°Ð¿Ð°ÑšÐµ â€ž%#lxâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ð¾ÐºÐ»Ð°Ð¿Ð°ÑšÐµ â€ž%#xâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¸ Ð½Ðµ-â€žPICâ€œ Ð¿Ð¾Ð·Ð¸Ð² Ð·Ð° â€žIFUNCâ€œ â€ž%sâ€œ%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° â€ž%#xâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð¸Ð·Ð²ÐµÐ·ÐµÐ½Ð°: %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ ÑƒÐ²ÐµÐ·ÐµÐ½Ð°: %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ð¿Ñ€ÐµÐ»Ð°Ð·Ð°Ðº Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ ÑˆÐ¸Ñ€Ð¾ÐºÐ¸ Ð½Ð¸Ð· Ð·Ð½Ð°ÐºÐ° 0x%02X 0x%02X Ð½Ð°ÐºÐ¾Ð½ Ð½Ð°Ð·Ð¸Ð²Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° ÐºÐ¾Ñ˜Ð¸ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ñ�Ð° â€ž%sâ€œ
+%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ Ð´Ð¾Ðº Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ â€ž_â€œ, Ð°Ð»Ð¸ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸Ð¼Ð° Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð°%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (%#x) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (%#x)%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (%#x) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (%#x)%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ ÐºÐ¾Ñ˜Ðµ Ð½Ð¸Ñ�Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ðµ Ñ�Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð°Ð¼Ð° ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¸Ð¼ Ñƒ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð°, Ð°Ð»Ð¸ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸Ð¼Ð° Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ â€ž_â€œ%pB: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñ‡Ð²Ð¾Ñ€ Ð¸Ð·Ð´Ð°ÑšÐ° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%pB: Ð²Ð¸Ð´Ñ™Ð¸Ð²Ð¾Ñ�Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜ÐµÐ·Ð³Ñ€Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pA: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: %#x > 0xffff%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%s BLXâ€œ Ñ†Ð¸Ñ™Ð° Ð½Ð° â€ž%sâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žBTIâ€œ Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾ â€ž-z force-btiâ€œ-Ñ˜ÐµÐ¼ ÐºÐ°Ð´Ð° Ñ�Ð²Ð¸ ÑƒÐ½Ð¾Ñ�Ð¸ Ð½ÐµÐ¼Ð°Ñ˜Ñƒ â€žBTIâ€œ Ñƒ â€žNOTEâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ.%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žCOMDATâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð° Ñ�Ð° Ð½Ð°Ð·Ð¸Ð²Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRVE PLTâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð»Ð°Ð±Ð¾ â€žTLSâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð° Ð¸ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ Ñ€Ð°Ð´Ð¸Ñ‚Ð¸ ÐºÐ°Ð¾ ÑˆÑ‚Ð¾ Ñ�Ðµ Ð¾Ñ‡ÐµÐºÑƒÑ˜Ðµ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð¿Ñ†Ð¸Ñ˜Ðµ â€ž%sâ€œ %u Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð´Ñ€ÐµÐ´Ð¸Ð¼ Ñ†Ð¸Ñ™Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ñ‚Ð²Ñ€Ñ’ÑƒÑ˜ÐµÐ¼ 0xffff Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°, Ð±ÐµÐ· Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐ°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº Ð¾ Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ€ÐµÐ´Ð° Ð·Ð° â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ ÑƒÐ½Ð¾Ñ�Ñƒ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° %d%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° 0x%lx Ñƒ ÑƒÐ½Ð¾Ñ�Ñƒ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° %d%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐµÐ»Ñ„ Ð¸Ð·Ð´Ð°ÑšÐ° %s Ð¸ %s Ð½Ð¸Ñ�Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾ â€žASEâ€œ Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€že_flagsâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾ â€žFP ABIâ€œ Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€ž.gnu.attributesâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾ â€žISAâ€œ Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€že_flagsâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð° â€žISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€že_flagsâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žisymMaxâ€œ (%ld) Ñ˜Ðµ Ð²ÐµÑ›Ðµ Ð¾Ð´ â€žifdMaxâ€œ (%ld)%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð¾Ð²Ð° (%#lx) Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° (%#lx)%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ð° Ð½Ðµ-â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð½Ðµ-Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿ÐµÑ‚Ñ™Ð° Ñƒ Ð·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸Ð¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð²Ð¸ÑˆÐµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ñ… Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ %u%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð²Ð¸ÑˆÐµ Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ %u%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ð¸ÑˆÐ°Ð¾ Ñ�Ð°Ð¼ Ð½Ð° Ñ�Ñ‚Ð°Ñ€Ð¸Ñ˜Ðµ Ð¸Ð·Ð´Ð°ÑšÐµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°, Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° Ñ‚ÐµÐºÑƒÑ›Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ Ð°Ð»Ð°Ñ‚Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žSDA_BASEâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ñ’Ð¾Ñ… Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ð¾ Ñ€ÐµÑˆÐµÑšÐµ â€žSTM32L4XXâ€œ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ñ†Ð¸Ñ™Ð½Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ð¾ Ñ€ÐµÑˆÐµÑšÐµ â€žVFP11â€œ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ñ†Ð¸Ñ™Ð½Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žsh_linkâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð²ÐµÐ»Ð¸ÐºÐ° Ð·Ð° â€žmmoâ€œ, Ð²ÐµÑ›Ð° Ð¾Ð´ 65535 32-Ð±Ð¸Ñ‚Ð½Ð¸Ñ… Ñ€ÐµÑ‡Ð¸: %d.  Ð¡Ð°Ð¼Ð¾ â€žMainâ€œ Ð±Ð¸Ñ›Ðµ Ð´Ð°Ñ‚Ð¾.
+%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žPLTâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ñƒ â€žthumb-1â€œ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ ÑƒÐ½Ð¾Ñ�Ñƒ â€žGOTâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ñƒ â€žflags2â€œ Ð¿Ð¾Ñ™Ñƒ â€ž.MIPS.abiflagsâ€œ-Ð° (0x%lx)%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚%pB: Ð½ÐµÑ›Ñƒ Ñ€ÐµÑˆÐ¸Ñ‚Ð¸ Ð²Ñ€ÐµÐ¼Ðµ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°ÑšÐ° â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°%pB:%d: Ð»Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ S-Ð·Ð°Ð¿Ð¸Ñ�Ð°%pB:%d: Ð±Ñ€Ð¾Ñ˜ Ð±Ð°Ñ˜Ñ‚Ð° â€ž%dâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸%pB:%d: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%pB:%d: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ S-Ð·Ð°Ð¿Ð¸Ñ�Ð°â€ž%pB:%pA%sâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°
+%pB:%pA: â€ž%sâ€œ Ð¸ â€ž%sâ€œ Ð¼Ð¾Ñ€Ð°Ñ˜Ñƒ Ð±Ð¸Ñ‚Ð¸ Ñƒ Ð¸Ñ�Ñ‚Ð¾Ð¼ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¿Ð¸ÑˆÐµÐ¼ Ñƒ Ð½ÐµÐ´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ñ�Ð°Ð¶ÐµÑ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¿Ð¸ÑˆÐµÐ¼ Ð¿Ñ€ÐµÐºÐ¾ ÐºÑ€Ð°Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ°%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÐ¿Ð¸ÑˆÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ Ð¿Ñ€Ð°Ð·Ð½Ñƒ Ð¼ÐµÑ’ÑƒÐ¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÐ¿ÑƒÑ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ ÑƒÐºÐ»Ð¾ÑšÐµÐ½ Ñ�ÐºÑƒÐ¿Ñ™Ð°ÑšÐµÐ¼ Ð¾Ñ‚Ð¿Ð°Ð´Ð°%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ â€ž--gc-keep-exportedâ€œ%pB:%pA: Ñ‚Ð°Ð±ÐµÐ»Ð¸ â€ž%sâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€ž%sâ€œ%pB:%pA: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ¼ Ñ€ÐµÑ‡Ð¸ ÑƒÐ½ÑƒÑ‚Ð°Ñ€ Ñ‚Ð°Ð±ÐµÐ»Ðµ%pB:%pA: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ â€ž%sâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ñ‚Ð°Ð±ÐµÐ»Ðµ%pB:%pA: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð ÐµÐ´ Ð¥ÐµÑ‚Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñƒ: %s%pB: â€ž%sâ€œ Ð¸Ð¼Ð° Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾ Ð¸ â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ%pB:%s Ð¾Ð´ÐµÑ™Ð°Ðº %s: Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ 2**%u Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚Ð¸%pB:%u: Ð»Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… %u, Ð½Ð°Ñ’Ð¾Ñ… %u)%pB:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%pB:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%pB:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%pB:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%pB:%u: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žihexâ€œ Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%pcrel_loâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼%s  Ð³Ñ€Ð°Ð½Ð°                           %lu
+  Ð³Ñ€Ð°Ð½Ð° Ñ�Ð°Ð´Ñ€. Ð¿Ð¾Ñ€Ð°Ð².   %lu
+  Ð³Ñ€Ð°Ð½Ð° Ð½Ðµ-Ñ�Ð°Ð´Ñ€.       %lu
+  Ð³Ñ€Ð°Ð½Ð° Ð¾Ð±Ð°            %lu
+  Ð´ÑƒÐ³Ð¾ Ð³Ñ€Ð°Ð½Ð°           %lu
+  Ð´ÑƒÐ³Ð¾ Ñ�Ð°Ð´Ñ€. Ð¿Ð¾Ñ€Ð°Ð².    %lu
+  Ð´ÑƒÐ³Ð¾ Ð½Ðµ-Ñ�Ð°Ð´Ñ€.        %lu
+  Ð´ÑƒÐ³Ð¾ Ð¾Ð±Ð°             %lu
+  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð²            %lu
+  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð² Ñ�Ð°Ñ‡ÑƒÐ²Ð°Ñ˜    %lu
+  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-Ñ�Ð°Ð´Ñ€.   %lu
+  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð² Ð¾Ð±Ð°        %lu
+  Ð¾Ð¿ÑˆÑ‚Ð¸ ÑƒÐ½Ð¾Ñ�           %luâ€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð½Ð° ÑƒÐºÐ»Ð¾ÑšÐµÐ½Ð¾Ð¼ ÑƒÐ½Ð¾Ñ�Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°%s Ð´ÐµÐ»Ð¸ Ð½ÑƒÐ»Ð¾Ð¼â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¾
 â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¾ Ñƒ â€ž%sâ€œ
-â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°%s(%s): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%dâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld%s: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: 0x%lx > 0xffff%s: Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº%s: 0x%v 0x%v
-%s: Ð›Ð¾ÑˆÐ° Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: â€žMainâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð½Ð° â€ž%sâ€œ ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%sâ€œ
-%s: Ð“Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð·Ð° â€ž%sâ€œ; Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½ Ñƒ Ñ€Ð°Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸
-%s: Ð“Ð�Ð¡ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ ÐŸÐ¢Ð‘ â€žinsnâ€œ Ñ�Ð° â€žR_SH_PT_16â€œ%s: Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð·Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð·Ð°
- Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡ÐµÐ¼: Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾: 0x%lx%08lx != Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾: 0x%lx%08lx
-%s: Ð˜Ð·Ð²ÐµÐ·ÐµÐ½Ð° Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d%s: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° â€žLOCALâ€œ: Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ â€ž$%ldâ€œ Ð½Ð¸Ñ˜Ðµ Ð¼ÐµÑ�Ð½Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€.  ÐŸÑ€Ð²Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ñ˜Ðµ â€ž$%ldâ€œ.%s: ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%s: Ð�ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð´ÑƒÐ³Ð¾Ð³ %d Ð±Ð°Ñ˜Ñ‚Ð°
-%s: Ð�ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ð½Ð°Ð·Ð¸Ð²Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ
-%s: Ð¢Ð›Ð¡ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¸ Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ%s: Ð¢Ð›Ð¡ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%Bâ€œ%s: Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%Bâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¸ Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ%s: Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%Bâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%Bâ€œ%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð½Ð° 0x%x Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÐºÐ¾Ñ˜Ð¸ Ð½Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² ÑƒÐ½Ð¾Ñ�%s: ÐœÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)%s: ÐŸÑ€ÐµÐ»Ð°Ð·Ð°Ðº Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½%s: â€žXCOFFâ€œ Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ ÐºÐ°Ð´Ð° Ñ�Ðµ Ð½Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ â€žXCOFFâ€œ Ð¸Ð·Ð»Ð°Ð·%s: â€ž__gpâ€œ Ð½Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ ÐºÑ€Ð°Ñ‚ÐºÐ¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°%s: Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð¸Ð·Ð° ÐºÑ€Ð°Ñ˜Ð° Ñ�Ñ‚Ð¾Ð¿Ñ™ÐµÐ½Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° (%ld)%s: Ð°Ð´Ñ€ÐµÑ�Ð° 0x%s Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ñƒ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð¿Ð»ÑƒÑ� Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: â€ž%sâ€œ Ñƒ â€ž%sâ€œ%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð¿Ð»ÑƒÑ� Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: (Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾) Ñƒ â€ž%sâ€œ%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ â€ža.outâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ â€žoasysâ€œ%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ža.outâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð·Ð° Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ %d, %d Ð±Ð°Ñ˜Ñ‚Ð°
-%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð¿Ñ€Ð¸Ð²Ð¸Ð´Ð½Ð¸ ÑƒÐ½Ð¾Ñ� â€ž%sâ€œ%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ â€žfdpicâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ Ð½Ðµ-â€žfdpicâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ñƒ%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ð½Ðµ-â€žfdpicâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ â€žfdpicâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ñƒ%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 64-Ð±Ð¸Ñ‚Ð½Ð¸%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž%sâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž%sâ€œ%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž%sâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ Ð½Ðµ-â€žPICâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð´Ð¾Ð´Ð°Ñ‚Ðµ â€ž.crangesâ€œ ÑƒÐ½Ð¾Ñ�Ðµ%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð½Ðµ â€ž.crangesâ€œ ÑƒÐ½Ð¾Ñ�Ðµ%s: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° â€žLOCALâ€œ Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ñ�Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼ Ð¸Ð»Ð¸ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð¼ Ð²Ñ€ÐµÐ´Ð½Ð¾ÑˆÑ›Ñƒ%s: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð±ÐµÐ· â€ž.loaderâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°%s: Ð½Ð°Ð¸ÑˆÐ°Ð¾ Ñ�Ð°Ð¼ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð°Ñ‚Ð¿Ð¸Ñ�Ð° Ð´Ð°Ñ‚ÑƒÐ¼Ð° Ñƒ ÑƒÐ»Ð°Ð·Ñƒ%s: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð½Ð° %08x Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ %08x
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ%s: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°, ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° â€ž%sâ€œ Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜
-%s: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°, Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¸Ð· %d Ñƒ %d Ñ€ÐµÑ‡Ð¸
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: YZ â€žlop_endâ€œ-Ð° (%ld) Ð½Ð¸Ñ˜Ðµ Ñ˜ÐµÐ´Ð½Ð°ÐºÐ¾ Ñ�Ð° Ð±Ñ€Ð¾Ñ˜ÐµÐ¼ Ñ‚ÐµÑ‚Ñ€Ð°Ñ�Ð° Ð´Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾Ð³ â€žlop_stabâ€œ-Ð° (%ld)
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… YZ = 1 Ð´Ð¾Ð±Ð¸Ñ… YZ = %d Ð·Ð° â€žlop_quoteâ€œ
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… y = 0 Ð´Ð¾Ð±Ð¸Ñ… y = %d Ð·Ð° â€žlop_fixrxâ€œ
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 1 Ð¸Ð»Ð¸ z = 2, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_fixoâ€œ
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 1 Ð¸Ð»Ð¸ z = 2, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_locâ€œ
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 16 Ð¸Ð»Ð¸ z = 24, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_fixrxâ€œ
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¿Ð¾Ñ™Ðµ y Ð¸ z â€žlop_stabâ€œ-Ð° Ð½Ð¸Ñ˜Ðµ Ð½ÑƒÐ»Ð°, y: %d, z: %d
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð·Ð° Ð±Ñ€Ð¾Ñ˜ %d Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½ Ð¿Ñ€Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ðµ
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ %d â€ž%sâ€œ, Ñ˜Ðµ Ð²ÐµÑ› ÑƒÐ½ÐµÑˆÐµÐ½ ÐºÐ°Ð¾ â€ž%sâ€œ
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°ÑšÐ° Ð·Ð° $255 Ð½Ð¸Ñ˜Ðµ â€žMainâ€œ
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð²Ð¾Ð´ÐµÑ›Ð¸ Ð±Ð°Ñ˜Ñ‚ Ñ€ÐµÑ‡Ð¸ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ 0 Ð¸Ð»Ð¸ 1, Ð´Ð¾Ð±Ð¸Ñ… %d Ð·Ð° â€žlop_fixrxâ€œ
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: â€žlop_endâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ð»ÐµÐ´ÑšÐ° Ñ�Ñ‚Ð°Ð²ÐºÐ° Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð»Ð¾Ð¿ÐºÐ¾Ð´ â€ž%dâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð° Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ðµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÑƒÐ¶Ð¸Ð½Ðµ %ld: 0x%lx%08lx
-%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ
-%s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff%s: Ð½ÐµÐ¼Ð° Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð¸Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€Ð°; Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° 0
-%s: Ð½ÐµÐ¼Ð° Ñ‚Ð°ÐºÐ²Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%s: Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾%s: Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%s: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ Ñ†Ð¸Ñ™Ð° â€ž%sâ€œ%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð½Ðµ-Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: â€ž%sâ€œ Ñƒ â€ž%sâ€œ%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð½Ðµ-Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: (Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾) Ñƒ â€ž%sâ€œ%s: Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð²ÐµÐ·Ð° Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°%s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° ÐºÑ€Ð°Ñ‚ÐºÐ¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (0x%lx >= 0x400000)%s: Ð½Ð¸Ñ�ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³Ð° (%d Ð·Ð½Ð°ÐºÐ°, Ð½Ð°Ñ˜Ð². 65535)%s: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð¸Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€Ð°; Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° %ld
-%s: Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ: %s%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ 0x%x%s: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° 0x%02x%s: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ ÑˆÐ¸Ñ€Ð¾ÐºÐ¸ Ð½Ð¸Ð· Ð·Ð½Ð°ÐºÐ° 0x%02X 0x%02X Ð½Ð°ÐºÐ¾Ð½ Ð½Ð°Ð·Ð¸Ð²Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° ÐºÐ¾Ñ˜Ð¸ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ñ�Ð° â€ž%sâ€œ
-%s: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (0x%lx) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (0x%lx)%s: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (0x%lx) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (0x%lx)%s: Ð±Ñ€Ð¾Ñ˜ Ð¸Ð·Ð´Ð°ÑšÐ° (%ld) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (%ld)%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜ÐµÐ·Ð³Ñ€Ð°%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ 0x%x Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žGOTâ€œ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº â€ž%ldâ€œ-Ð° Ð·Ð° â€ž%sâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾Ð¼ â€žGOTâ€œ Ñ�Ð°Ð±Ð¸Ñ€ÐºÑƒ â€ž%ldâ€œ-Ð°%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žPLTâ€œ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº â€ž%dâ€œ-Ð° Ð·Ð° â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€žR_NDS32_25_ABS_RELAâ€œ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ.%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð²ÐµÐ»Ð¸ÐºÐ° Ð·Ð° â€žmmoâ€œ, Ð²ÐµÑ›Ð° Ð¾Ð´ 65535 32-Ð±Ð¸Ñ‚Ð½Ð¸Ñ… Ñ€ÐµÑ‡Ð¸: %d.  Ð¡Ð°Ð¼Ð¾ â€žMainâ€œ Ð±Ð¸Ñ›Ðµ Ð´Ð°Ñ‚Ð¾.
-%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°. Ð—Ð° ÑƒÐ½Ð¾Ñ�: {%d, %d, %d}, Ð°Ð´Ñ€ÐµÑ�Ð° = 0x%x, Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ = 0x%x.(Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð±Ð¸Ñ‚Ð° %u)
+â€ž%sâ€œ Ð¸Ð¼Ð° Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾ Ð¸ â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµâ€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñƒ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ñƒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¼ â€ž%pAâ€œâ€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾â€ž%sâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº Ð·Ð° â€ž.eh_frame sdata4â€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ%s: â€žTLSâ€œ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-â€žTLSâ€œ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¸ Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ%s: â€žTLSâ€œ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-â€žTLSâ€œ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%pBâ€œ%s: â€žTLSâ€œ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%pBâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-â€žTLSâ€œ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¸ Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ%s: â€žTLSâ€œ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%pBâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-â€žTLSâ€œ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%pBâ€œ%s: Ð½ÐµÐ¼Ð° Ñ‚Ð°ÐºÐ²Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%s: Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾%s: Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%s: Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ: %s(Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð±Ð¸Ñ‚Ð° %u)
 (Ð¾Ð¿Ð¸Ñ�Ð½Ð¸Ðº)
+(Ð·Ð°Ð¿Ð¸Ñ� %c%c%c%c Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ� %s Ñ�Ñ‚Ð°Ñ€Ð¾Ñ�Ñ‚ %ld)
 (Ð±ÐµÐ· Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸)
 (Ð½Ð¸Ñ˜Ðµ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾)
 (Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¾)
@@ -985,48 +1189,53 @@ Plural-Forms: nplurals=3; plural=(n%10==
 )
 *** Ð¿Ñ€Ð¾Ð²ÐµÑ€Ð°Ð²Ð° Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ*Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð¾*
 *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð´Ñ�Ñ‚ Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ
-*Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾**Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾*        , 8-Ð±Ð¸Ñ‚Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°, Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: %#08lx
+*Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾**Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾*        , Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: %#08lx
 , Ð°Ð»Ð¸Ñ˜Ð°Ñ�: %u
 , Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ�Ð¿Ð¾Ñ™Ð½Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° â€žno_optâ€œ-Ð°: %u, Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð°: %u (%s)
-, Ð²ÐµÐºÑ‚Ð¾Ñ€ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€Ð²Ð°: â€” â€ž%sâ€œ Ñ˜Ðµ Ð“10, â€ž%sâ€œ Ð½Ð¸Ñ˜ÐµÐ¾Ð´ÐµÑ™Ð°Ðº â€ž.gotâ€œ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ð¼Ð°Ñ… Ð½Ð°ÐºÐ¾Ð½ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pltâ€œÐ�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð»Ð¸Ñ�Ñ‚ÑƒÐ�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¸Ð·Ð´Ð°ÑšÐ° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ñƒ
-Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð¸ Ñ�Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ Ð¾Ñ�Ð¾Ð±ÐµÐ½Ð¾Ñ�Ñ‚Ð¸Ð¼Ð°
-Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð»Ð¸Ñ�Ñ‚Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð»Ð¸Ñ�Ñ‚: %sÐ�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¸Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ðµ Ð½Ð¸Ñ�ÐºÐµ: %dÐ�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð½Ðµ-Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°Ð½Ð¸Ñ… Ð¸Ñ�Ð¿Ð¾Ñ™Ð°Ð²Ð°ÑšÐ°32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¼ÐµÑˆÐ¾Ð²Ð¸Ñ‚Ð¸, Ð´Ð¾ÑˆÐ»Ð¾ Ñ˜Ðµ Ð´Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³ Ð³Ð¿ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°64 Ð±Ð¸Ñ‚Ð° *Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾*
-64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¼ÐµÑˆÐ¾Ð²Ð¸Ñ‚Ð¸, : %u.%u
-: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32râ€œ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32r2â€œ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32rxâ€œ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žn1â€œ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žn1hâ€œ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ<Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ñ�ÐºÑƒÐ¿ Ð±Ð¸Ñ‚Ð¾Ð²Ð° Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ><Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð½Ð¸Ñ�ÐºÐµ: %#x><Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ: %#lx><Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾>â€ž@pltoffâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°Ð�Ñ€Ñ…Ð¸Ð²Ð° Ð½ÐµÐ¼Ð° Ð¸Ð½Ð´ÐµÐºÑ�; Ð¿Ð¾ÐºÑ€ÐµÐ½Ð¸Ñ‚Ðµ â€žranlibâ€œ Ð´Ð° Ð³Ð° Ð´Ð¾Ð´Ð°Ñ‚ÐµÐ”Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð°Ñ€Ñ…Ð¸Ð²Ðµ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜ Ð¿Ñ€ÐµÑ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€žL32R/CALLXâ€œ Ñƒ â€žCALLâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ÐŸÐ¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¾Ð´Ñ€Ð°Ð´Ð¸Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ñƒ Ð²ÐµÐ·Ñƒ Ñ�Ð° â€ž%sâ€œ ÑƒÐ»Ð°Ð·Ð¾Ð¼ Ð¸ â€ž%sâ€œ Ð¸Ð·Ð»Ð°Ð·Ð¾Ð¼Ð¡Ð›Ð˜ÐšÐ�_ÐžÐ¡Ð�ÐžÐ’Ð•       â€žBFDâ€œ â€ž%sâ€œ Ñ‚Ð²Ñ€Ð´ÑšÐ° Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð° â€ž%sâ€œ:%dÐ£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð”-Ð° %s, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð¿Ñ€Ð¸ â€ž%sâ€œ %d. Ñ€ÐµÐ´Ñƒ
-Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð”-Ð° %s, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð¿Ñ€Ð¸ â€ž%sâ€œ %d. Ñ€ÐµÐ´Ñƒ Ñƒ â€ž%sâ€œ
-Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð” Ð²ÐµÐ·Ðµ: Ð³Ñ€Ð°Ð½Ð°ÑšÐµ (PC rel16) Ñƒ Ð¾Ð´ÐµÑ™Ð°Ðº (%s) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð” Ð²ÐµÐ·Ðµ: ÑƒÑ�ÐºÐ°ÐºÐ°ÑšÐµ (PC rel26) Ñƒ Ð¾Ð´ÐµÑ™Ð°Ðº (%s) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ÐŸÐ¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾Ñ�Ð½Ð¾Ð²Ðµ [.reloc]Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ ÑƒÐ²Ð¾Ð·Ð° Ñ�Ð²ÐµÐ·Ð°Ð“Ñ€Ð°Ð½Ð¸Ñ†Ðµ:
-ÐšÐ›Ð˜Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¦Ð›Ð  Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°ÐœÐ“Ð Ð—Ð�ÐšÐ‰Ð£Ð§Ð�Ð’Ð�ÐŠÐ•_ÐšÐ›Ð�Ð¡Ð¢Ð•Ð Ð� Ð‘Ð ÐžÐˆÐ�Ð§Ð˜         Ð¦ÐŸÐ£              CTL_AUGRB (Ð¿Ð¾Ð²ÐµÑ›Ð°Ð²Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°) %u
+, Ð²ÐµÐºÑ‚Ð¾Ñ€ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€Ð²Ð°: â€” â€ž%pBâ€œ Ñ˜Ðµ 64-Ð±Ð¸Ñ‚Ð½Ð¾, â€ž%pBâ€œ Ð½Ð¸Ñ˜Ðµ-march=%s: â€ž%s ISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð°Ð·Ð±ÑƒÑ‡Ð½Ð¸Ð¼ Ñ€ÐµÐ´Ð¾Ð¼: â€ž%sâ€œ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¿Ñ€Ðµ â€ž%sâ€œ.-march=%s: â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° Ñ€Ð°Ð·Ð´Ð²Ð¾Ñ˜Ð¸Ñ‚Ð¸ _-march=%s: Ð”Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ¾ â€ž%s ISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ: â€ž%sâ€œ-march=%s: ÐžÑ‡ÐµÐºÑƒÑ˜ÐµÐ¼ Ð±Ñ€Ð¾Ñ˜ Ð½Ð°ÐºÐ¾Ð½ â€ž%dpâ€œ.-march=%s: â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ñƒ ÐºÐ°Ð½Ð¾Ð½Ñ�ÐºÐ¾Ð¼ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÑƒ. â€ž%câ€œ-march=%s: â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° Ð¼Ð¾Ñ€Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð¸ Ñ�Ð° â€žrv32â€œ Ð¸Ð»Ð¸ â€žrv64â€œ-march=%s: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¸Ð»Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€ž%s ISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ: â€ž%sâ€œ-march=%s: â€ždâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žfâ€œ-march=%s: â€žqâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ždâ€œ-march=%s: Ð¿Ñ€Ð²Ð¸ â€žISAâ€œ Ð¿Ð¾Ð´Ñ�ÐºÑƒÐ¿ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ â€žeâ€œ, â€žiâ€œ Ð¸Ð»Ð¸ â€žgâ€œ-march=%s: â€žrv%deâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð±Ð°Ð·Ð° â€žISAâ€œ-march=%s: â€žrv32â€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žqâ€œ-march=%s: â€žrv32eâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žfâ€œ-march=%s: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° Ð½Ð° ÐºÑ€Ð°Ñ˜Ñƒ: %s-march=%s: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ â€žISAâ€œ Ð¿Ð¾Ð´Ñ�ÐºÑƒÐ¿ â€ž%câ€œ-mips32r2 -mfp64 (12 Ð¿Ð¾Ð·Ð¸Ð²Ð°Ð¾Ñ†Ð°-Ñ�Ð°Ñ‡ÑƒÐ²Ð°Ð½Ð¾)Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€ž.eh_frame_hdrâ€œ ÑƒÐ½Ð¾Ñ�Ð°â€ž.eh_frame_hdrâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°Ñ˜ÑƒÑ›Ðµ â€žFDEâ€œ-Ð¾Ð²ÐµÐ¾Ð´ÐµÑ™Ð°Ðº â€ž.gotâ€œ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ð¼Ð°Ñ… Ð½Ð°ÐºÐ¾Ð½ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pltâ€œÐ½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð»Ð¸Ñ�Ñ‚ÑƒÐ½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¸Ð·Ð´Ð°ÑšÐ° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜ÑƒÐ½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð¸ Ñ�Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ Ð¾Ñ�Ð¾Ð±ÐµÐ½Ð¾Ñ�Ñ‚Ð¸Ð¼Ð°Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð»Ð¸Ñ�Ñ‚Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð»Ð¸Ñ�Ñ‚: %sÐ½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¸Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ðµ Ð½Ð¸Ñ�ÐºÐµ: %dÐ½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð½Ðµ-Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°Ð½Ð¸Ñ… Ð¸Ñ�Ð¿Ð¾Ñ™Ð°Ð²Ð°ÑšÐ°32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¼ÐµÑˆÐ¾Ð²Ð¸Ñ‚Ð¸, Ð´Ð¾ÑˆÐ»Ð¾ Ñ˜Ðµ Ð´Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³ Ð³Ð¿ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°4-Ð±Ð¸Ñ‚Ð°4-Ð±Ð°Ñ˜Ñ‚Ð°64 Ð±Ð¸Ñ‚Ð° *Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾*
+64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¼ÐµÑˆÐ¾Ð²Ð¸Ñ‚Ð¸, 8-Ð±Ð¸Ñ‚Ð°8-Ð±Ð°Ñ˜Ñ‚Ð°: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32râ€œ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32r2â€œ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32rxâ€œ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žn1â€œ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žn1hâ€œ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPIEâ€œ<Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ñ�ÐºÑƒÐ¿ Ð±Ð¸Ñ‚Ð¾Ð²Ð° Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ><Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸> %s<Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð½Ð¸Ñ�ÐºÐµ: %#x>
+<Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ: %#lx>
+<Ð¾ÑˆÑ‚ÐµÑ›ÐµÑšÐµ><Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð°: %d>
+<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¼Ð°Ñ�ÐºÐµ><Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾>â€ž@pltoffâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°Ð¡Ð›Ð˜ÐšÐ�_ÐžÐ¡Ð�ÐžÐ’Ð•       â€žBFDâ€œ â€ž%sâ€œ Ñ‚Ð²Ñ€Ð´ÑšÐ° Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð° â€ž%sâ€œ:%dÐ£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° â€žBFDâ€œ %s, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð¿Ñ€Ð¸ â€ž%sâ€œ %d. Ñ€ÐµÐ´Ñƒ
+Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° â€žBFDâ€œ %s, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð½Ð° â€ž%sâ€œ %d. Ñ€ÐµÐ´Ñƒ Ñƒ â€ž%sâ€œ
+Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾Ñ�Ð½Ð¾Ð²Ðµ [.reloc]Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ ÑƒÐ²Ð¾Ð·Ð° Ñ�Ð²ÐµÐ·Ð°Ð“Ñ€Ð°Ð½Ð¸Ñ†Ðµ:
+â€žCACHEâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ: CLIÐ—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¦Ð›Ð  Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°ÐœÐ“Ð Ð—Ð�ÐšÐ‰Ð£Ð§Ð�Ð’Ð�ÐŠÐ•_ÐšÐ›Ð�Ð¡Ð¢Ð•Ð Ð� Ð‘Ð ÐžÐˆÐ�Ð§Ð˜         Ð¦ÐŸÐˆ              CTL_AUGRB (Ð¿Ð¾Ð²ÐµÑ›Ð°Ð²Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°) %u
 CTL_DFLOC (Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ Ð¼ÐµÑ�Ñ‚Ð¾)
 CTL_SETRB (Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°)
 CTL_STKDL (Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ¾Ð¼ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð¾)
 CTL_STLOC (Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð° Ð¼ÐµÑ�Ñ‚Ð¾)
 Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð°ÑƒÑ‚Ð¾Ñ€Ñ�ÐºÐ¸Ñ… Ð¿Ñ€Ð°Ð²Ð°
 ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº!
-Ð”Ð¡Ðž Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½Ð° Ð»Ð¸Ð½Ð¸Ñ˜Ð¸ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸â€žDST__K_BEG_STMT_MODEâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾â€žDST__K_END_STMT_MODEâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾â€žDST__K_RESET_LINUM_INCRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾â€žDST__K_SET_LINUM_INCRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾â€žDST__K_SET_LINUM_INCR_Wâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾â€žDST__K_SET_PCâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾â€žDST__K_SET_PC_Lâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾â€žDST__K_SET_PC_Wâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾â€žDST__K_SET_STMTNUMâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°Ð¢Ð°Ð±ÐµÐ»Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°:
+â€žDSOâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½Ð° Ð»Ð¸Ð½Ð¸Ñ˜Ð¸ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ð° â€žDW_AT_comp_dirâ€œ Ñ˜Ðµ Ð½Ð°Ñ’ÐµÐ½Ð° Ñ�Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¾Ð¼ Ð½Ðµ-Ð½Ð¸Ñ�ÐºÐµâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ±Ð°Ñ‡ÐµÑšÐµ Ð°Ð¿Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¾Ð³ Ð¿Ñ€Ð¸Ð¼ÐµÑ€ÐºÐ° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ.â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¸ Ð±Ñ€Ð¾Ñ˜ %uâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´Ñ€ÐµÐ´Ð±Ñƒ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ðµ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ %lxâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%uâ€œ, Ð¾Ð²Ð°Ñ˜ Ñ‡Ð¸Ñ‚Ð°Ñ‡ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ€Ð°Ð´Ð¸ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°Ð¼Ð° Ð²ÐµÑ›Ð¸Ð¼ Ð¾Ð´ â€ž%uâ€œâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… â€žDWARFâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ â€ž%uâ€œ, Ð¾Ð²Ð°Ñ˜ Ñ‡Ð¸Ñ‚Ð°Ñ‡ Ñ€Ð°Ð´Ð¸ Ñ�Ð°Ð¼Ð¾ Ñ�Ð° Ð¿Ð¾Ð´Ð°Ñ†Ð¸Ð¼Ð° Ð¸Ð·Ð´Ð°ÑšÐ° 2, 3, 4 Ð¸ 5â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð½Ñ„Ð¾ ÑƒÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ ÐºÑ€Ð°Ñ˜ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð°Ð¿Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð°Ð½ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð°Ðº â€žDIEâ€œ ÑƒÐ¿ÑƒÑ‚Ðµâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð° Ð¿Ð¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¸â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð»Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žFORMâ€œ: %#xâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¸Ð·Ð±Ð¸Ñ€Ð°Ñ‡Ð° Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ€ÐµÐ´Ð° %uâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½ (Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ)â€žDWARFÐ´ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð½ÐµÑ�Ñ‚Ð°Ð»Ð¾ Ñ˜Ðµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ñ‡Ð¸Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð¿ÐºÐ¾Ð´Ð¾Ð²Ðµâ€žDWARFÐ´ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð½ÐµÑ�Ñ‚Ð°Ð»Ð¾ Ñ˜Ðµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ñ‡Ð¸Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ð¿Ñ€Ð¾Ð»Ð¾Ð³â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ â€ž.debug_lineâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %dâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÑƒÐ»Ñ‚Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð·Ð°Ð¿Ð¸Ñ�Ð°â€žDW_EH_PE_datarelâ€œ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð²Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€ÑƒÐ”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°Ð¢Ð°Ð±ÐµÐ»Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°:
 Ð¢Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°:
 Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð·Ð°Ñ�Ñ‚Ð¾Ñ˜Ð° ÑƒÐ²Ð¾Ð·Ð°Ð—Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾
 Ð—Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñƒ â€ž%sâ€œ %d. Ñ€ÐµÐ´ Ñƒ â€ž%sâ€œ
-Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¾Ð¿Ð¸Ñ�Ð°â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð›Ð¾Ñˆ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¸ Ð±Ñ€Ð¾Ñ˜: %u.â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ.â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¸ Ð±Ñ€Ð¾Ñ˜ %u.â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð° Ð¿Ð¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¸.â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð»Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žFORMâ€œ: %#x.â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: ÐŸÐ¾Ð¼ÐµÑ€Ð°Ñ˜ (%lu) Ñ˜Ðµ >= Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ %s (%lu).â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žaltâ€œ ÑƒÐ¿ÑƒÑ‚Ñƒ %u.â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ â€ž.debug_lineâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d.â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ñ’Ð¾Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%uâ€œ, Ð¾Ð²Ð°Ñ˜ Ñ‡Ð¸Ñ‚Ð°Ñ‡ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ€Ð°Ð´Ð¸ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°Ð¼Ð° Ð²ÐµÑ›Ð¸Ð¼ Ð¾Ð´ â€ž%uâ€œ.â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ñ’Ð¾Ñ… â€žDWARFâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ â€ž%uâ€œ, Ð¾Ð²Ð°Ñ˜ Ñ‡Ð¸Ñ‚Ð°Ñ‡ Ñ€Ð°Ð´Ð¸ Ñ�Ð°Ð¼Ð¾ Ñ�Ð° Ð¿Ð¾Ð´Ð°Ñ†Ð¸Ð¼Ð° Ð¸Ð·Ð´Ð°ÑšÐ° 2, 3 Ð¸ 4.â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð‘Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½ (Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ).â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð‘Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½.EIHD: (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð±Ñ€Ð¾Ñ˜ Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°: %u)
-ÐŸÐ¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÐ½Ð¾Ñ�Ð°       = 0x%.8lx (%ld)
-Ð“Ñ€ÐµÑˆÐºÐ° Ñ‡Ð¸Ñ‚Ð°ÑšÐ° â€ž%sâ€œ: %sÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð¿Ð¾Ñ�ÐµÐ´ÑƒÑ˜Ðµ Ð¸ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸ Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸ â€žTag_MPextension_useâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð�Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐµ Ñ‚Ð¾ÐºÐ¾Ð¼ Ð¾Ð±Ñ€Ð°Ð´Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œÐ”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·ÑƒÐ·ÐµÑ‚Ð°ÐºÐ° [.pdata]Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·Ð²Ð¾Ð·Ð° [â€ž.edataâ€œ (Ð¸Ð»Ð¸ Ñ‚Ð°Ð¼Ð¾ Ð³Ð´Ðµ Ñ�Ð¼Ð¾ Ð³Ð° Ð½Ð°ÑˆÐ»Ð¸)]Ð—Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° 		%lx
-RVA Ð¸Ð·Ð²Ð¾Ð·Ð°Ð�Ð˜Ð¡Ð�Ðœ Ð£Ð¡ÐŸÐ•Ðž Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žHI16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ’ÐžÐ›Ð£ÐœÐ•Ð�Ð˜_Ð”Ð�Ð¢ÐžÐ¢Ð•ÐšÐ�    Ð—Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜Ðµ Ð½ÐµÑ˜Ð°Ñ�Ð°Ð½Ð—Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð”Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ”Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°Ð”Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¾ÐºÑ€ÑšÐµÐ½Ð°ÐŸÐ¾Ñ™Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ      = 0x%.2x
-RVA Ð¿Ñ€ÐµÐ¾Ñ�Ð»ÐµÑ’Ð¸Ð²Ð°Ñ‡Ð°Ð“Ð�Ð›Ð�ÐšÐ¡Ð˜ÐˆÐ�           Ð£Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ˜Ðµ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð“ÐŸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾â€žGPDISPâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð½Ð°ÑˆÐ»Ð¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žldahâ€œ Ð¸ â€žldaâ€œÐ¢Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿ÑˆÑ‚Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°:
-Ð˜Ð”: %#08lxIDC â€” ÐŸÑ€Ð¾Ð²ÐµÑ€Ð° Ð´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐ°
-ÐŸÐžÐšÐ Ð•Ð¢Ð�Ð§_Ð¡Ð›Ð˜ÐšÐ•  â€žINPUT_SECTION_FLAGSâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾.
-Ð£Ð˜               Ð�ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð°ÑšÐµ Ñ�Ð»Ð¸ÐºÐµ:  (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°=%u)
+Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¾Ð¿Ð¸Ñ�Ð°EIHD: (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð±Ñ€Ð¾Ñ˜ Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°: %u)
+ÐŸÐ¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÐ½Ð¾Ñ�Ð°   = 0x%.8lx (%ld)
+Ð“Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¿Ð¾Ñ�ÐµÐ´ÑƒÑ˜Ðµ Ð¸ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸ Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸ â€žTag_MPextension_useâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·ÑƒÐ·ÐµÑ‚Ð°ÐºÐ° [.pdata]Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·Ð²Ð¾Ð·Ð° [â€ž.edataâ€œ (Ð¸Ð»Ð¸ Ñ‚Ð°Ð¼Ð¾ Ð³Ð´Ðµ Ñ�Ð¼Ð¾ Ð³Ð° Ð½Ð°ÑˆÐ»Ð¸)]Ð—Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° 		%lx
+â€žRVAâ€œ Ð¸Ð·Ð²Ð¾Ð·Ð°â€žFDEâ€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ Ñƒ â€ž%pB(%pA)â€œ Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ â€ž.eh_frame_hdrâ€œ Ñ‚Ð°Ð±ÐµÐ»Ðµâ€žFDPICâ€œ Ñ˜Ð¾Ñˆ ÑƒÐ²ÐµÐº Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð´Ð° Ð±Ð¸ Ð¿Ð¾Ñ�Ñ‚Ð°Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð·Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½ÐµÐ’ÐžÐ›Ð£ÐœÐ•Ð�Ð˜_Ð”Ð�Ð¢ÐžÐ¢Ð•ÐšÐ�    FPU-2.0FPU-3.0ÐŸÐ¾Ñ™Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  = 0x%.2x
+â€žRVAâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’Ð¸Ð²Ð°Ñ‡Ð°Ð“Ð�Ð›Ð�ÐšÐ¡Ð˜ÐˆÐ�           â€žGNU_MBINDâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½â€žGOTâ€œ Ð¸ â€žPLTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ Ñ�Ð° Ð½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ð¼ ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ÐµÐ¼Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€žGOTâ€œ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ˜Ðµ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾â€žGPDISPâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð½Ð°ÑˆÐ»Ð¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žldahâ€œ Ð¸ â€žldaâ€œÐ¢Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿ÑˆÑ‚Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°:
+Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ð¸Ñ‚Ð½Ð¸ â€žFPUâ€œ)
+Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, Ð±Ð¸Ð»Ð¾ ÐºÐ¾Ñ˜Ð¸ â€žFPUâ€œ)
+Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (â€žMIPS32r2â€œ 64-Ð±Ð¸Ñ‚Ð° â€žFPU 12 callee-savedâ€œ)
+Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (Ð´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ° Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚)
+Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (Ñ˜ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ° Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚)
+Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¾ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð¼ Ð·Ð°Ñ€ÐµÐ·Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ (32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ð¸Ñ‚Ð½Ð¸ â€žFPUâ€œ)
+Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¸Ð»Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·
+â€žIBTâ€œ Ð¸ â€žSHSTKâ€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°â€žIBTâ€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾Ð˜Ð”: %#08lxIDC â€” ÐŸÑ€Ð¾Ð²ÐµÑ€Ð° Ð´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐ°
+â€žIFUNCâ€ž Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€“ â€žIFUNCSâ€œ Ð½Ð¸Ñ�Ñƒ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ÐµÐŸÐžÐšÐ Ð•Ð¢Ð�Ð§_Ð¡Ð›Ð˜ÐšÐ•  â€žINPUT_SECTION_FLAGSâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾Ð£Ð˜               Ð�ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð°ÑšÐµ Ñ�Ð»Ð¸ÐºÐµ:  (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°=%u)
 Ð˜Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°Ñ‡Ð° Ñ�Ð»Ð¸ÐºÐµ: (Ð²ÐµÑ›Ð¸: %u, Ð¼Ð°ÑšÐ¸: %u)
 ÐŸÑ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°ÑšÐµ Ñ�Ð»Ð¸ÐºÐµ: (Ð²ÐµÑ›Ðµ: %u, Ð¼Ð°ÑšÐµ: %u)
 ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð»Ð¸ÐºÐµ: (Ð²ÐµÑ›Ð¸: %u, Ð¼Ð°ÑšÐ¸: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: %u)
 Ð¡Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð»Ð¸ÐºÐµ Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°: (Ð²ÐµÑ›Ðµ: %u, Ð¼Ð°ÑšÐµ: %u)
-Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ðµ ÑƒÐ²Ð¾Ð·Ð° Ð°Ð´Ñ€ÐµÑ�ÐµÐ”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ ÑƒÐ²Ð¾Ð·Ð° [Ð´ÐµÐ¾ â€ž.idataâ€œ]Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚: Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ñ˜Ðµ %u != Ð½Ð°Ñ˜Ð². %u.
-  ÐŸÑ€Ð¸Ñ˜Ð°Ð²Ð¸Ñ‚Ðµ Ð¾Ð²Ñƒ Ð³Ñ€ÐµÑˆÐºÑƒ.Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žTARGET2â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ.Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ†Ð¸Ñ™ Ð±Ñ„Ð´-Ð°Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð°Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žETIRâ€œ-Ñƒâ€žJALXâ€œ Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜ÑƒÐ›ÐžÐ“Ð˜Ð§ÐšÐ˜_Ð�Ð�Ð—Ð˜Ð’Ð˜    Ð�Ð°Ð·Ð¸Ð² Ñ˜ÐµÐ·Ð¸ÐºÐ° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°
-Ð”ÑƒÐ¶Ð¸Ð½Ð°              = 0x%.8lx (%ld)
-ÐŸÐ¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ð³Ñ€ÐµÑˆÐºÑƒ â€žex9â€œ Ñ…ÐµÑˆ Ñ‚Ð°Ð±ÐµÐ»Ðµ 
-ÐŸÐ¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡: Ð³Ñ€ÐµÑˆÐºÐ° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸ â€žex9â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ 
-Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐ° ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ°Ð£ÐŸÐ Ð�Ð’Ð‰Ð�ÐŠÐ•_ÐœÐ•ÐœÐžÐ Ð˜ÐˆÐžÐœÐ¤ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€žMIPS16â€œ Ð¸ â€žmicroMIPSâ€œ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð·Ð¸Ð²Ð°Ñ˜Ñƒ Ñ˜ÐµÐ´Ð½Ð° Ð´Ñ€ÑƒÐ³ÑƒÐ Ð�Ð—Ð�Ðž             Ð’Ð˜Ð¨Ð•_ÐžÐ‘Ð Ð�Ð”Ð�Ðž Ð’ÐµÑ›Ð¸/ÐœÐ°ÑšÐ¸ 			%d/%d
-Ð›Ð¾ÑˆÐ° Ð°Ñ€Ñ…Ð¸Ð²Ð°Ð�Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº Ñ˜Ðµ 0x%v
-MeP: â€žhowtoâ€œ â€ž%dâ€œ Ð¸Ð¼Ð° Ð²Ñ€Ñ�Ñ‚Ñƒ â€ž%dâ€œÐœÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�Ñ†Ñ€Ð¿Ñ™ÐµÐ½Ð°Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¼Ð¾Ð´ÑƒÐ»Ð°
-ÐœÐ Ð•Ð–Ð•         NORMALÐ�Ð°Ð·Ð¸Ð² 				Ð�ÐµÐ¼Ð° Ð³Ñ€ÐµÑˆÐºÐµÐ�ÐµÐ¼Ð° Ð²Ð¸ÑˆÐµ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð°Ð½Ð¸Ñ… Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð�ÐµÐ¼Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°Ð�Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸ÐºÐ°Ð·Ð°Ñ‚Ð¸Ð�ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð·Ð° Ñ€ÐµÑ’Ð°ÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°Ð‘Ñ€Ð¾Ñ˜ ÑƒÐ»Ð°Ð·Ð°:
+Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ðµ ÑƒÐ²Ð¾Ð·Ð° Ð°Ð´Ñ€ÐµÑ�ÐµÐ”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ ÑƒÐ²Ð¾Ð·Ð° [Ð´ÐµÐ¾ â€ž.idataâ€œ]Ð›ÐžÐ“Ð˜Ð§ÐšÐ˜_Ð�Ð�Ð—Ð˜Ð’Ð˜    Ð�Ð°Ð·Ð¸Ð² Ñ˜ÐµÐ·Ð¸ÐºÐ° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°
+Ð”ÑƒÐ¶Ð¸Ð½Ð°          = 0x%.8lx (%ld)
+Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐ° ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ°Ð›Ð¾ÐºÐ°Ð»Ð½Ð° â€žIFUNCâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ
+Ð£ÐŸÐ Ð�Ð’Ð‰Ð�ÐŠÐ•_ÐœÐ•ÐœÐžÐ Ð˜ÐˆÐžÐœÐ¤ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€žMIPS16â€œ Ð¸ â€žmicroMIPSâ€œ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð·Ð¸Ð²Ð°Ñ˜Ñƒ Ñ˜ÐµÐ´Ð½Ð° Ð´Ñ€ÑƒÐ³ÑƒÐ Ð�Ð—Ð�Ðž             â€žMMUâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ: Ð’Ð˜Ð¨Ð•_ÐžÐ‘Ð Ð�Ð”Ð�Ðž Ð’ÐµÑ›Ð¸/ÐœÐ°ÑšÐ¸ 			%d/%d
+Ð�Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº Ñ˜Ðµ 0x%v
+MeP: â€žhowtoâ€œ â€ž%dâ€œ Ð¸Ð¼Ð° Ð²Ñ€Ñ�Ñ‚Ñƒ â€ž%dâ€œÐ¡Ñ‚Ð°Ð¿Ð°Ð¼ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°
+Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¼Ð¾Ð´ÑƒÐ»Ð°
+ÐœÐ Ð•Ð–Ð•         NORMALÐ�Ð°Ð·Ð¸Ð² 				Ð�Ð¸ÑˆÑ‚Ð°Ð‘Ñ€Ð¾Ñ˜ ÑƒÐ»Ð°Ð·Ð°:
 OPR_ADD (Ð·Ð±Ñ€Ð°Ñ˜Ð°)
 OPR_AND (Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¾ Ð˜)
 OPR_ASH (Ð°Ñ€Ð¸Ñ‚Ð¼ÐµÑ‚Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ð¼Ð°Ðº)
@@ -1044,19 +1253,20 @@ Plural-Forms: nplurals=3; plural=(n%10==
 OPR_SEL (Ð±Ð¸Ñ€Ð°)
 OPR_SUB (Ð¾Ð´ÑƒÐ·Ð¸Ð¼Ð°)
 OPR_USH (Ð¿Ð¾Ð¼Ð°Ðº Ð±ÐµÐ· Ð·Ð½Ð°ÐºÐ°)
-ÐœÐ¾Ð´ÑƒÐ» Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð�Ð˜ÐˆÐ• Ð±ÐµÐ· Ð³Ñ€ÐµÑˆÐ°ÐºÐ° !
 Ñ�ÐžÑ�Ð½Ð¾Ð²Ð° Ñ€ÐµÐ´Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°		%ld
-Ð˜Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ â€ž%sâ€œ
-Ð˜Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ â€ž%s.so.%sâ€œ
-ÐŸÐžÐ¡Ð˜ÐšÐ¡            Ð—Ð�ÐšÐ�Ð—Ð�Ð�Ð˜_ÐŸÐ ÐžÐ¦Ð•Ð¡Ð˜    PRVFXDPRVPICPSC â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°
-ÐŸÐ¢Ð� Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð°Ð´Ñ€ÐµÑ�Ð° â€žSHcompactâ€œ (Ð±Ð¸Ñ‚ 0 == 0)ÐŸÐ¢Ð‘ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð°Ð´Ñ€ÐµÑ�Ð° â€žSHmediaâ€œ (Ð±Ð¸Ñ‚ 0 == 1)Ð�Ð°Ð·Ð¸Ð² Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ     = â€ž%sâ€œ
+â€žPCâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¸ ÑƒÑ‚Ð¾Ð²Ð°Ñ€ Ð¸Ð· Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµâ€žPIEâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð°ÐŸÐžÐ¡Ð˜ÐšÐ¡            Ð—Ð�ÐšÐ�Ð—Ð�Ð�Ð˜_ÐŸÐ ÐžÐ¦Ð•Ð¡Ð˜    PRVFXDPRVPICPSC â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°
+Ð�Ð°Ð·Ð¸Ð² Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ = â€ž%sâ€œ
 ÐšÑ€Ð°Ñ˜ Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d]   = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 Ð”ÑƒÐ¶Ð¸Ð½Ð° Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d] = 0x%.8lx (%ld)
 ÐžÐ´ÐµÑ™Ð°Ðº Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d] = 0x%.8lx (%ld)
 ÐŸÑ€Ð¸Ñ˜Ð°Ð²Ð¸Ñ‚Ðµ Ð¾Ð²Ñƒ Ð³Ñ€ÐµÑˆÐºÑƒ.
-â€žABI RL78/G10â€œ Ñ�ÑƒÐºÐ¾Ð±: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ Ð“10 Ð¸ Ð½Ðµ-Ð“10 Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµâ€žR_BFIN_FUNCDESCâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼â€žR_BFIN_FUNCDESC_VALUEâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼R_FRV_TLSMOFFLOâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žsetloâ€œ Ð¸Ð»Ð¸ â€žsetlosâ€œ
-Ð§Ð¸Ñ‚Ð°Ð¼ Ð²Ñ€ÐµÐ¼Ðµ Ñ€ÐµÐ¶Ð¸Ð¼Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°Ñ€Ñ…Ð¸Ð²ÐµÐ£Ð¿ÑƒÑ›Ð¸Ð²Ð°ÑšÐµ Ð½Ð° Ð´Ð°Ð»ÐµÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¾Ð¼ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð½ÐµÑ‚Ð°Ñ‡Ð½Ð¾Ð³ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ â€ž%%g%dâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½ Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾: â€ž%sâ€œ Ñƒ â€ž%Bâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€ž%sâ€œ Ñƒ â€ž%Bâ€œÐžÐ´ÐµÑ™Ð°Ðº Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜
-ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð½Ðµ-Ð Ð•Ð› Ð¿-Ð¾Ð´ÐµÑ™Ð°ÐºÐ£ÐºÐ»Ð°ÑšÐ°Ð¼ Ð½ÐµÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€ž%Bâ€œÐ ÐµÐ·ÐµÑ€Ð²Ð¸Ñ�Ð°Ð½Ð¾Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ð° [.rsrc]Ð�Ð´Ñ€ÐµÑ�Ð° â€žS12â€œ (%lx) Ð½Ð¸Ñ˜Ðµ ÑƒÐ½ÑƒÑ‚Ð°Ñ€ Ð´ÐµÑ™ÐµÐ½Ðµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ (0x2000-0x4000), Ñ�Ñ‚Ð¾Ð³Ð° Ð¼Ð¾Ñ€Ð°Ñ‚Ðµ Ñ€ÑƒÑ‡Ð½Ð¾ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð¸Ñ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ñƒ Ñƒ Ð²Ð°ÑˆÐµÐ¼ ÐºÐ¾Ð´ÑƒÐ¡Ð”Ð� Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÐºÐ°Ð´Ð° â€ž_SDA_BASE_â€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð‘Ð•Ð—Ð‘Ð•Ð”Ð�ÐžÐ¡Ð¢         â€žSEC_RELOCâ€œ Ð½ÐµÐ¼Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œÐ“Ñ€ÐµÑˆÐºÐ° ÑˆÐºÐ¾Ñ™ÐºÐµ: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œÐ¨ÐšÐžÐ‰ÐšÐ�            SHRFXDSHRPICSPSC â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° Ð´ÐµÑ™ÐµÐ½Ðµ Ñ�Ð»Ð¸ÐºÐµ
+â€žRL78 ABIâ€œ Ñ�ÑƒÐºÐ¾Ð±: â€žG10â€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° â€ž%pBâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÐ²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð° â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼ â€ž%pBâ€œâ€žABI RL78â€œ Ñ�ÑƒÐºÐ¾Ð±: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ â€ž%pBâ€œ Ñ�Ð° â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼ â€ž%pBâ€œâ€žRL78â€œ Ñ�ÑƒÐºÐ¾Ð± Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ðµ Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµâ€žR_BFIN_FUNCDESCâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼â€žR_BFIN_FUNCDESC_VALUEâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼R_FRV_TLSMOFFLOâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žsetloâ€œ Ð¸Ð»Ð¸ â€žsetlosâ€œ
+Ð§Ð¸Ñ‚Ð°Ð¼ Ð²Ñ€ÐµÐ¼Ðµ Ñ€ÐµÐ¶Ð¸Ð¼Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°Ñ€Ñ…Ð¸Ð²ÐµÐ£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (0x%v) Ð¸ â€ž%pBâ€œ (0x%v)
+Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (0x%v) Ð¸ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾)
+Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾) Ð¸ â€ž%pBâ€œ (0x%v)
+Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ
+Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾)
+Ð ÐµÐ·ÐµÑ€Ð²Ð¸Ñ�Ð°Ð½Ð¾Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ð° [.rsrc]Ð�Ð´Ñ€ÐµÑ�Ð° â€žS12â€œ (%lx) Ð½Ð¸Ñ˜Ðµ ÑƒÐ½ÑƒÑ‚Ð°Ñ€ Ð´ÐµÑ™ÐµÐ½Ðµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ (0x2000-0x4000), Ñ�Ñ‚Ð¾Ð³Ð° Ð¼Ð¾Ñ€Ð°Ñ‚Ðµ Ñ€ÑƒÑ‡Ð½Ð¾ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð¸Ñ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ñƒ Ñƒ Ð²Ð°ÑˆÐµÐ¼ ÐºÐ¾Ð´Ñƒâ€žSDAâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÐºÐ°Ð´Ð° â€ž_SDA_BASE_â€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð‘Ð•Ð—Ð‘Ð•Ð”Ð�ÐžÐ¡Ð¢         â€žSEC_RELOCâ€œ Ñ˜Ðµ Ð±ÐµÐ· Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œÐ¨ÐšÐžÐ‰ÐšÐ�            SHRFXDSHRPICâ€žSHSTKâ€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾â€žSIMDâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ: SPSC â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° Ð´ÐµÑ™ÐµÐ½Ðµ Ñ�Ð»Ð¸ÐºÐµ
 Ð¡Ð¢Ð�Ð‘Ð˜Ð›Ð�Ðž           STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿ÐºÐ° Ð¿Ð¾Ñ€ÐµÑ’ÐµÑšÐ°)
 STA_GBL (Ð¾Ð¿ÑˆÑ‚Ð¾Ñ�Ñ‚ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°) %.*s
 STA_LI (Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ñ�Ñ‚ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)
@@ -1099,28 +1309,31 @@ Plural-Forms: nplurals=3; plural=(n%10==
 SYMG â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° ÑƒÐ½Ð¸Ð²ÐµÑ€Ð·Ð°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°
 SYMM â€” ÐžÐ¿ÑˆÑ‚Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ð¾Ð¼
 SYMV â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°
-Ð¡Ð¢Ð’Ð�Ð Ð�ÐŠÐ•_Ð¡Ð˜Ð¡Ð¢Ð•ÐœÐ�           ÐžÐ´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ÐµÐ”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸Ð“Ñ€ÐµÑˆÐºÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œÐ—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¸Ð·Ð²Ð¾Ñ€Ð°
-Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ð¾Ñ�ÐµÐ±Ð½Ð¾Ñ�Ñ‚Ð¸ÐŸÑ€Ð¸Ð²Ð¸Ð´Ð½Ð¾ â€žALPHA_R_BSRâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ�Ð½Ð°Ð»Ð¸Ð·Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ›Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð·Ð¸Ð² Ð¾Ð´ â€ž%sâ€œ Ð´Ð¾ â€ž%sâ€œ
-ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° (%d) Ñƒ â€ž_bfd_vms_pushâ€œ-ÑƒÐ’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ð·Ð° Ð¿Ð¾Ð·Ð¸Ð² Ñ‡Ð²Ð¾Ñ€Ð¾Ð²Ð° ÐºÐ¾Ñ€ÐµÐ½Ð° Ð³Ñ€Ð°Ñ„Ð¸ÐºÐ°.
-ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñƒ â€ž_bfd_vms_popâ€œ-ÑƒÐšÐ¾Ñ€Ð°Ñ†Ð¸:
-Ð¡Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð·Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ
-Ð¡Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ: â€ž%sâ€œ Ñƒ â€ž%Bâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žREGISTERâ€œ Ñƒ â€ž%Bâ€œÐ¡Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ: â€žREGISTERâ€œ Ñƒ â€ž%Bâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€ž%sâ€œ Ñƒ â€ž%Bâ€œÐ¡Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° ÑƒÐºÐ»Ð°ÑšÐ°ÑšÐµ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° ÐºÐ¾Ñ˜Ð¸ Ð½Ðµ Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ˜Ð¸Ð“Ñ€ÐµÑˆÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ�ÐºÐ¾Ð³ Ð¿Ð¾Ð·Ð¸Ð²Ð°Ð¢Ð›Ð¡ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ñ… Ð¾Ð´ÐµÑ™Ð°ÐºÐ°ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°: 0x%lx > 0x10000; Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ñ�Ð° â€ž-mminimal-tocâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð°
+Ð¡Ð¢Ð’Ð�Ð Ð�ÐŠÐ•_Ð¡Ð˜Ð¡Ð¢Ð•ÐœÐ�           Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸Ð¡Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·
+Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¸Ð·Ð²Ð¾Ñ€Ð°
+Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ð¾Ñ�ÐµÐ±Ð½Ð¾Ñ�Ñ‚Ð¸Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ð·Ð° Ð¿Ð¾Ð·Ð¸Ð² Ñ‡Ð²Ð¾Ñ€Ð¾Ð²Ð° ÐºÐ¾Ñ€ÐµÐ½Ð° Ð³Ñ€Ð°Ñ„Ð¸ÐºÐ°.
+ÐšÐ¾Ñ€Ð°Ñ†Ð¸:
+Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ: â€ž%sâ€œ Ñƒ â€ž%pBâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žREGISTERâ€œ Ñƒ â€ž%pBâ€œÐ¢Ð›Ð¡ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ñ… Ð¾Ð´ÐµÑ™Ð°ÐºÐ°Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð°
+ÐŸÐ¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ñƒ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°ÐºÐ’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ ÑƒÐ½Ð¾Ñ�Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°
 Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð½Ð¸Ñ‚Ð¸ [.tls]ÐžÑ‚Ð¸Ñ�Ð°Ðº Ð²Ñ€ÐµÐ¼ÐµÐ½Ð°/Ð´Ð°Ñ‚ÑƒÐ¼Ð° 		%lx
 Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð½Ð°Ñ�Ð»Ð¾Ð²Ð°
-ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð´Ð° ÑƒÐºÑ™ÑƒÑ‡Ð¸Ñ‚Ðµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐµ Ð´Ð° Ð±Ð¸Ñ�Ñ‚Ðµ Ð¸Ð·Ð±ÐµÐ³Ð»Ð¸ Ñ�ÐºÑ€Ð°Ñ›Ð¸Ð²Ð°ÑšÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°USRSTACKÐ�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÐµÐºÐ²Ð¸Ð²Ð°Ð»ÐµÐ½Ñ‚Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œÐ�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ñ�Ñ‚Ð¸Ð³Ð½ÐµÐ¼ â€ž%sâ€œ (Ð½Ð° 0x%08x) Ð¸Ð· Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° (Ð½Ð° 0x%08x) Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ (%d) Ð¸Ð·Ð²Ð°Ð½ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾Ð³ Ð¾Ð¿Ñ�ÐµÐ³Ð°, Ð¾Ð´ -32678 Ð´Ð¾ 32767.
-Ð�ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ â€žSTO_SH5_ISA32â€œ Ð½Ð° Ð¼ÐµÑ�Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€Ð°Ñ’ÐµÐ½Ð¾Ð�ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð¼Ð°ÑˆÐ¸Ð½Ñ�ÐºÐ¸ Ð±Ñ€Ð¾Ñ˜Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð²Ñ€Ñ�Ñ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° %d Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ OSF/1 Ñ˜ÐµÐ·Ð³Ñ€Ð°
-Ð�ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œÐ�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° EGSD Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° %dÐ�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œÐ�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œÐ�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s + %sâ€œÐ�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸ â€ž%sâ€œâ€žINPUT_SECTION_FLAG %sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾
-Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¸Ð´ â€žTI COFFâ€œ Ñ†Ð¸Ñ™Ð° â€ž0x%xâ€œÐ�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° 0x%xÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž.stabâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ÐŸÐ ÐžÐœÐ•Ð�Ð‰Ð˜Ð’Ðž         Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%sâ€œ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ Ñ˜ÐµÐ´Ð½Ð¾Ð¼ Ð¾Ð´ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸  Ð¼Ð°Ð»Ð¸Ñ…, Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð¼Ð°Ð»Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð¼Ð°Ð»Ð¸Ñ… Ð¸ Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð·Ð°ÑƒÐ·Ð¼Ðµ Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d
-Ð£ÐŸÐžÐ—ÐžÐ Ð•ÐŠÐ•: â€ž%Bâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%Bâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¾: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜ÐµÐ·Ð³Ñ€Ð° >= %lu, Ð½Ð°Ñ’Ð¾Ñ…: %lu.Ð£ÐŸÐžÐ—ÐžÐ Ð•ÐŠÐ•: â€ž%Bâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%Bâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ ÐœÐ¡Ð� Ð�Ð‘Ð˜ â€ž%dâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð�Ð‘Ð˜ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ð´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ñ˜ÐµÐ´Ð½Ðµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žr3/r4â€œ Ð·Ð° Ð¼Ð°Ð»Ðµ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ðµ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜ÑƒÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ñ˜ÐµÐ´Ð½Ðµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ ÐœÐ¡Ð� Ð�Ð‘Ð˜ â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ ÐœÐ¡Ð� Ð�Ð‘Ð˜ â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ ÐœÐ¡Ð� Ð�Ð‘Ð˜ â€ž%dâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%dâ€œ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð�Ð‘Ð˜ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð�Ð‘Ð˜ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð�Ð‘Ð˜ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð¾Ð´Ð³Ð¾Ð²Ð¾Ñ€ Ð¼Ð°Ð»Ð¾Ð³ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ð° Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ â€ž%dâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%dâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%sâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %B: ÐŸÐ¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ðµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±ÑƒÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %B: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %B: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žMSPABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð§Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%Bâ€œ Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð½ÐµÐ¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¸ ÐºÐ¾Ð´ Ñƒ â€ž%Bâ€œ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñ�Ð° ÑšÐ¸Ð¼Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð£ÐºÐ»Ð°ÑšÐ°Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%Bâ€œ ÑƒÑ�Ð»ÐµÐ´ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ñ�Ð¿Ð¾Ñ™Ð°Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð�Ð¸Ñ�Ð°Ð¼ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%Bâ€œ Ð¿Ð¾ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð²ÐµÑ› Ð½Ð°Ð²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ Ð½ÐµÐ¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¾Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRL78_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRX_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð£Ð¿Ð¸Ñ� Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº (Ð½Ð¿Ñ€. Ð½ÐµÐ³Ð°Ñ‚Ð¸Ð²Ð°Ð½) Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ 0x%lx.Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%Bâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ðµ Ð¾Ð´ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° (%u) ÑšÐµÐ³Ð¾Ð²Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%Bâ€œ Ñ˜Ðµ Ð¼Ð°ÑšÐµ Ð¾Ð´ â€ž%uâ€œ Ñƒ â€ž%Bâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð±Ñ€Ð¾Ñ˜ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°
-Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð¿Ñ†Ð¸Ñ˜Ð° â€žgcâ€œ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ð¸Ð· â€ž%luâ€œ Ñƒ â€ž%Bâ€œ Ñƒ â€ž%luâ€œ Ñƒ â€ž%Bâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ð¸Ð· â€ž%dâ€œ Ñƒ â€ž%dâ€œ Ð·Ð° â€ž%Bâ€œÐ£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ¿Ð¸Ñ� Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ñƒ Ñ˜Ðµ Ñ�Ð¿Ð¾Ñ€: Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÑƒÐ¿Ð¸Ñ�ÑƒÑ˜ÐµÐ¼ Ð²Ñ€ÐµÐ¼Ðµ
-Ð£Ð¿Ð¸Ñ�ÑƒÑ˜ÐµÐ¼ Ð¾Ñ�Ð²ÐµÐ¶ÐµÐ½Ð¾ Ð²Ñ€ÐµÐ¼Ðµ Ð°Ñ€Ð¼Ð°Ð¿Ð°Ð�Ð´Ñ€ÐµÑ�Ð° â€žXGATEâ€œ (%lx) Ð½Ð¸Ñ˜Ðµ ÑƒÐ½ÑƒÑ‚Ð°Ñ€ Ð´ÐµÑ™ÐµÐ½Ðµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ (0xE000-0xFFFF), Ñ�Ñ‚Ð¾Ð³Ð° Ð¼Ð¾Ñ€Ð°Ñ‚Ðµ Ñ€ÑƒÑ‡Ð½Ð¾ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð¸Ñ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ñƒ, Ð¸ Ð¿Ð¾ Ð¼Ð¾Ð³ÑƒÑ›Ñ�Ñ‚Ð²Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ñ‚Ðµ Ñ�Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð¾Ð¼ Ñƒ Ð²Ð°ÑˆÐµÐ¼ ÐºÐ¾Ð´Ñƒ.[%u]: %u
-[%u]: Ð”Ð¾ÑšÐ°: %u, Ð³Ð¾Ñ€ÑšÐ°: %u
-[Ð°Ð±Ð¸=16-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ†ÐµÐ¾ Ð±Ñ€Ð¾Ñ˜, [Ð°Ð±Ð¸=32-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ†ÐµÐ¾ Ð±Ñ€Ð¾Ñ˜, [Ñ‡Ð¸Ñ˜Ð¸ Ð½Ð°Ð·Ð¸Ð² Ñ˜Ðµ Ð¸Ð·Ð³ÑƒÐ±Ñ™ÐµÐ½]\%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€žArm BLXâ€œ Ñ†Ð¸Ñ™Ð° Ð½Ð° Ð�Ñ€Ð¼ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ.â€ž_bfd_vms_output_countedâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñ�Ð° Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°â€ž_bfd_vms_output_countedâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñ�Ð° Ð½ÑƒÐ»Ð° Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°Ð°Ð´Ñ€ÐµÑ�Ð°Ð°Ð´Ñ€ÐµÑ�Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð¿Ð¾ Ñ€ÐµÑ‡Ð¸Ð°Ñ€-Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, a0: 0x%08x
-Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€ž%sâ€œÐ³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° [%lx:%04lx] (%lx) Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¸Ñ�Ñ‚Ð¾Ñ˜ Ð³Ñ€ÑƒÐ¿Ð¸ ÐºÐ°Ð¾ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð° Ð³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° [%lx:%04lx] (%lx)Ð¾Ñ�Ð½Ð¾Ð²Ð°: %u, Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜: %u
-bfd_mach_o_canonicalize_symtab: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµbfd_mach_o_read_symtab_symbol: Ð½Ð°Ð·Ð¸Ð² Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (%lu >= %lu)bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ¾ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%dâ€œ (Ð½Ð°Ñ˜Ð². %lu): Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð°Ð¼ Ð½Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ¾ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ™Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ 0x%x: Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð°Ð¼ Ð½Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾bfd_mach_o_read_symtab_symbol: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ %d Ð±Ð°Ñ˜Ñ‚Ð° Ð½Ð° %lubfd_mach_o_read_symtab_symbols: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµbfd_mach_o_scan: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lx/0x%lxbfd_pef_scan: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lxÐ±Ð»Ðº Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº: Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð½Ð°Ð·Ð¸Ð²: %.*s
+ÐŸÑ€ÐµÐ²Ð¸ÑˆÐµ Ð¸Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ… ÐºÐ¾Ð´Ð¾Ð²Ð° (%ld)
+Ð’Ñ€Ñ�Ñ‚Ð°              Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°     Rva      ÐŸÐ¾Ð¼ÐµÑ€Ð°Ñ˜
+USRSTACKÐ�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾: %xÐžÑ�Ð²ÐµÐ¶ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ (%v) Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (0x%v) Ð¸ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾)
+ÐžÑ�Ð²ÐµÐ¶ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ (0x%v) Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (0x%v) Ð¸ â€ž%pBâ€œ (0x%v)
+ÐŸÐ ÐžÐœÐ•Ð�Ð‰Ð˜Ð’Ðž         Ð’Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€ž.pdataâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° (%ld) Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ñ�Ñ‚Ð²Ð°Ñ€Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ (%ld)
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (%ld) Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð²Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ (%ld)
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ
+Ð£Ð¿Ð¸Ñ�ÑƒÑ˜ÐµÐ¼ Ð¾Ñ�Ð²ÐµÐ¶ÐµÐ½Ð¾ Ð²Ñ€ÐµÐ¼Ðµ Ð°Ñ€Ð¼Ð°Ð¿Ð°Ð�Ð´Ñ€ÐµÑ�Ð° â€žXGATEâ€œ (%lx) Ð½Ð¸Ñ˜Ðµ ÑƒÐ½ÑƒÑ‚Ð°Ñ€ Ð´ÐµÑ™ÐµÐ½Ðµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ (0xE000-0xFFFF), Ñ�Ñ‚Ð¾Ð³Ð° Ð¼Ð¾Ñ€Ð°Ñ‚Ðµ Ñ€ÑƒÑ‡Ð½Ð¾ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð¸Ñ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ñƒ, Ð¸ Ð¿Ð¾ Ð¼Ð¾Ð³ÑƒÑ›Ñ�Ñ‚Ð²Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ñ‚Ðµ Ñ�Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð¾Ð¼ Ñƒ Ð²Ð°ÑˆÐµÐ¼ ÐºÐ¾Ð´Ñƒ.[%u]: Ð”Ð¾ÑšÐ°: %u, Ð³Ð¾Ñ€ÑšÐ°: %u
+[Ð°Ð±Ð¸=16-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ†ÐµÐ¾ Ð±Ñ€Ð¾Ñ˜, [Ð°Ð±Ð¸=32-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ†ÐµÐ¾ Ð±Ñ€Ð¾Ñ˜, [Ñ‡Ð¸Ñ˜Ð¸ Ð½Ð°Ð·Ð¸Ð² Ñ˜Ðµ Ð¸Ð·Ð³ÑƒÐ±Ñ™ÐµÐ½]Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° â€ž__tls_get_addrâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð°â€ž_bfd_vms_output_countedâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñ�Ð° Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°â€ž_bfd_vms_output_countedâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñ�Ð° Ð½ÑƒÐ»Ð° Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°â€ž%sâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½Ðµ ÑƒÐ»Ð°Ð·Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒâ€žPDEâ€œ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚â€žPIEâ€œ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚Ð°Ð´Ñ€ÐµÑ�Ð°Ð°Ð´Ñ€ÐµÑ�Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð¿Ð¾ Ñ€ÐµÑ‡Ð¸Ð½Ð°Ñ’Ð¾Ñ… Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð¸ â€žELFâ€œ Ð¼Ð°ÑˆÐ¸Ð½Ñ�ÐºÐ¸ ÐºÐ¾Ð´ (%d) Ñƒ â€ž%pBâ€œ, Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… â€ž%dâ€œÐ°Ñ€Ñ…Ð¸Ð²Ð° Ð½ÐµÐ¼Ð° Ð¸Ð½Ð´ÐµÐºÑ�; Ð¿Ð¾ÐºÑ€ÐµÐ½Ð¸Ñ‚Ðµ â€žranlibâ€œ Ð´Ð° Ð³Ð° Ð´Ð¾Ð´Ð°Ñ‚ÐµÐ´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð°Ñ€Ñ…Ð¸Ð²Ðµ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ¾Ð¿Ð¸Ñ�Ð½Ð¸Ðº Ð½Ð¸Ð·Ð°:
+Ð½Ð¸Ð·, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð±Ð¸Ñ‚Ð¼Ð°Ð¿Ð°: Ð°Ñ€-Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, a0: 0x%08x
+Ð°Ñ‚Ð¾Ð¼Ñ�ÐºÐ¸, Ð²Ñ€Ñ�Ñ‚Ð°=0x%02x %s
+Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜ Ð¿Ñ€ÐµÑ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€žL32R/CALLXâ€œ Ñƒ â€žCALLâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¾Ð´Ñ€Ð°Ð´Ð¸Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ñƒ Ð²ÐµÐ·Ñƒ Ñ�Ð° â€ž%sâ€œ ÑƒÐ»Ð°Ð·Ð¾Ð¼ Ð¸ â€ž%sâ€œ Ð¸Ð·Ð»Ð°Ð·Ð¾Ð¼Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€ž%sâ€œÐ¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° [%lx:%04lx] (%lx) Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¸Ñ�Ñ‚Ð¾Ñ˜ Ð³Ñ€ÑƒÐ¿Ð¸ ÐºÐ°Ð¾ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð° Ð³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° [%lx:%04lx] (%lx)Ð¾Ñ�Ð½Ð¾Ð²Ð°: %u, Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜: %u
+bfd_mach_o_canonicalize_symtab: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµbfd_mach_o_read_section_32: Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€Ð°Ð²Ð°ÑšÐ°: %#lx, ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ 32 ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ Ñ‚Ð¾Ð³Ð°bfd_mach_o_read_section_64: Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€Ð°Ð²Ð°ÑšÐ°: %#lx, ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ 32 ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ Ñ‚Ð¾Ð³Ð°bfd_mach_o_read_symtab_symbol: Ð½Ð°Ð·Ð¸Ð² Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (%lu >= %u)bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ¾ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%dâ€œ (Ð½Ð°Ñ˜Ð². %lu): Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð°Ð¼ Ð½Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ¾ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ™Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ 0x%x: Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð°Ð¼ Ð½Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾bfd_mach_o_read_symtab_symbol: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ %d Ð±Ð°Ñ˜Ñ‚Ð° Ð½Ð° %ubfd_mach_o_scan: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lx/0x%lxbfd_pef_scan: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lxÐ±Ð»Ðº Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº: Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð½Ð°Ð·Ð¸Ð²: %.*s
 Ð±Ð»Ðº ÐºÑ€Ð°Ñ˜: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%08x
-Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€žEMHâ€œ Ñƒ Ð¿Ñ€Ð²Ð¾Ð¼ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ
-Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€žR_MEM_INDIRECTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ¼ ÐºÐ°Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ â€ž%sâ€œ Ð¸Ð·Ð»Ð°Ð·Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ
+Ð³Ñ€Ð°Ð½Ð°ÑšÐµ (PC rel16) Ñƒ Ð¾Ð´ÐµÑ™Ð°Ðº (%s) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾Ð³Ñ€Ð°Ð½Ð° Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼â€žbss-pltâ€œ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ð¸Ñ™ÐµÐ½Ð¾ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ�Ð°ÑšÐµÐ¼â€žbss-pltâ€œ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ð¸Ñ™ÐµÐ½Ð¾ Ð·Ð±Ð¾Ð³ â€ž%pBâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð³Ñ€Ð°Ð½Ñƒ Ñƒ â€žJALXâ€œ Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜ÑƒÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ñ�ÐºÐ¾Ðº Ñƒ â€žJALXâ€œ Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜ÑƒÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€žEMHâ€œ Ñƒ Ð¿Ñ€Ð²Ð¾Ð¼ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ
+Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDSTâ€œ
@@ -1138,58 +1351,68 @@ Plural-Forms: nplurals=3; plural=(n%10==
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð°
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð´ÑƒÐ¶Ð¸Ð½Ñƒ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð°
 ÐºÐ»Ð°Ñ�Ð°: %u, Ð´-Ð²Ñ€Ñ�Ñ‚Ð°: %u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡: 0x%08x
-Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€ž%sâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ â€ž%Bâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__ctbpâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__epâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__gpâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ñ�Ð»Ð¸ÐºÑƒ â€ž%sâ€œ Ð¸Ð· â€ž%sâ€œÐ¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC11]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HCS12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=XGATE]Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµdelta pc +%-4ddelta_pc_l: +0x%08x
+Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€ž%sâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ â€ž%pBâ€œÐ¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEEOMâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº â€“ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ° %d: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð»Ð¾Ð³ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° (%#x)Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ° %d: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº: ÑšÐµÐ³Ð¾Ð²Ð¾ â€žpsindxâ€œ Ð¿Ð¾Ñ™Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ (%#lx)Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº: ÑšÐµÐ³Ð¾Ð²Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEIHDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº â€“ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°Ð½Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€žETIRâ€œ Ñ�Ð½Ð¸Ð¼Ð°ÐºÐ¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° â€žvmsâ€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__ctbpâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__epâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__gpâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ñ�Ð»Ð¸ÐºÑƒ â€ž%sâ€œ Ð¸Ð· â€ž%sâ€œÐ¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC11]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HCS12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=XGATE]Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµdelta pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
 Ð¾Ð¿Ð¸Ñ�Ð´Ð¸Ð¼Ñ†Ñ‚: %u, Ð°-Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: 0x%02x, Ñ†Ð¸Ñ„Ñ€Ðµ: %u, Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°: %u
-Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð°: â€ž%Aâ€œÐ½ÐµÐ¿Ñ€ÐµÐºÐ¸Ð´Ð½Ð¸ Ð¾Ð¿Ñ�ÐµÐ³ (Ð±Ñ€.: %u)
-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµÐ´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½ÐµÐ¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ°, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð½Ð°Ð·Ð¸Ð²: %.*s
+Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð°: â€ž%pAâ€œÐ¾Ð´Ð±Ð°Ñ†ÑƒÑ˜ÐµÐ¼ Ð½ÑƒÐ»Ñ‚Ð¸ Ð¾Ð¿Ñ�ÐµÐ³ Ð°Ð´Ñ€ÐµÑ�Ðµ â€žFDEâ€œ Ñƒ â€ž%pB(%pA)â€œ.
+Ð½ÐµÐ¿Ñ€ÐµÐºÐ¸Ð´Ð½Ð¸ Ð¾Ð¿Ñ�ÐµÐ³ (Ð±Ñ€.: %u)
+â€ždst_define_location %uâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµÐ´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½ÐµÐ³Ñ€ÐµÑˆÐºÐ° Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð·Ð° â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œÑ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÑ�Ñ‚Ð°Ð»Ð° Ð¸Ð· Ð±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ð³ ÐºÐ¾Ð´Ð°Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ°, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð½Ð°Ð·Ð¸Ð²: %.*s
 ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð¸ Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ°, Ð½Ð°Ð·Ð¸Ð²: %.*s
 ÐºÑ€Ð°Ñ˜ Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ°
 ÐµÐ¿Ð¸Ð»Ð¾Ð³: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %u, Ð±Ñ€Ð¾Ñ˜: %u
-Ð³Ñ€ÐµÑˆÐºÐ° Ñ‡Ð¸Ñ‚Ð°ÑšÐ° Ð²Ñ€Ñ�Ñ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ð¸Ð· Ð»Ð¸Ñ‡Ð½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° ÐµÐ»Ñ„-Ð°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (0x%s) Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ ÐºÐ¾Ñ˜Ð¸ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½Ðµ-Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð½Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žMaverickâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%Bâ€œ Ð´Ð°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð²ÐµÑ› Ñƒ Ð·Ð°Ð²Ñ€ÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ â€žBE8â€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ ÐºÐ¾Ð´ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°, Ð´Ð¾Ðº Ñ˜Ðµ Ñ†Ð¸Ñ™ â€ž%Bâ€œ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ñ‚Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ ÐºÐ¾Ð´ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°, Ð´Ð¾Ðº Ñ˜Ðµ Ñ†Ð¸Ñ™ â€ž%Bâ€œ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° Ð�ÐŸÐ¦Ð¡-%d, Ð´Ð¾Ðº Ñ˜Ðµ â€ž%Bâ€œ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° Ð�ÐŸÐ¦Ð¡-%dÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žAPCS-%dâ€œ, Ð´Ð¾Ðº Ñ†Ð¸Ñ™Ð½Ð¸ â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žAPCS-%dâ€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° EP9312, Ð´Ð¾Ðº Ñ˜Ðµ â€ž%Bâ€œ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° XScaleÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%Bâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%Bâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½Ð¸Ð·Ð° Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ â€ž%Bâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ â€ž%Bâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ð°Ð»Ð¸ â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žFPAâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%Bâ€œ Ð½ÐµÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žMaverickâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%Bâ€œ Ð½ÐµÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žVFPâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%Bâ€œ Ð½ÐµÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ðµ â€žVFPâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°, Ð° â€ž%Bâ€œ Ð½ÐµÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, Ð´Ð¾Ðº â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ðµ â€žiWMMXtâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°, Ð° â€ž%Bâ€œ Ð½ÐµÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, Ð´Ð¾Ðº â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ ÐºÐ¾Ð´Ð° Ð´Ð¾Ðº â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ ÐºÐ¾Ð´Ð°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð°Ð»Ð¸ â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žMSP430â€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð´Ð¾Ðº â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð²ÐµÐ»Ð¸ÐºÐ¸ Ð¼Ð¾Ð´ÐµÐ» ÐºÐ¾Ð´Ð° Ð°Ð»Ð¸ â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žMSP430â€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸ Ð¼Ð¾Ð´ÐµÐ» ÐºÐ¾Ð´Ð° Ð°Ð»Ð¸ â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð³Ñ€ÐµÑˆÐºÐ°: %B: Ð�Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° %d/%d Ñ�Ñƒ Ñƒ Ñ�ÑƒÐºÐ¾Ð±ÑƒÐ³Ñ€ÐµÑˆÐºÐ°: %B: Ð£ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%c/%câ€œÐ³Ñ€ÐµÑˆÐºÐ°: %B: Ð£ Ñ�Ð¸ÐºÐ¾Ð±Ñƒ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ â€žR9â€œÐ³Ñ€ÐµÑˆÐºÐ°: %B: ÐžÐ±Ñ˜ÐµÐºÐ°Ñ‚ Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¿Ñ€Ð¾Ð´Ð°Ð²Ñ†Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ ÐºÐ¾Ñ˜Ð¸ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ñ’ÐµÐ½ Ð°Ð»Ð°Ñ‚Ð½Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %B: ÐžÐ·Ð½Ð°ÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€ž%d, %sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð·Ð½Ð°ÐºÐ¾Ð¼ â€ž%d, %sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %B: Ð ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ â€žSBâ€œ Ð°Ð´Ñ€ÐµÑ�Ð¸Ñ€Ð°ÑšÐµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žR9â€œÐ³Ñ€ÐµÑˆÐºÐ°: %B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°Ð³Ñ€ÐµÑˆÐºÐ°: %B: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�ÐµÐ³Ñ€ÐµÑˆÐºÐ°: %B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ Ð²Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ðµ Ñ�Ð° â€ž%Bâ€œÐ³Ñ€ÐµÑˆÐºÐ°: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: _SDA_BASE_.Ð³Ñ€ÐµÑˆÐºÐ°: Ð˜Ð·Ð²Ð¾Ñ€Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ â€ž%Bâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d, Ð°Ð»Ð¸ Ñ†Ð¸Ñ™Ð½Ð¸ â€ž%Bâ€œ Ð¸Ð¼Ð° â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %dÐ³Ñ€ÐµÑˆÐºÐ°: â€žfp16â€œ Ð·Ð°Ð¿Ð¸Ñ� Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ñ‚Ð¸ Ð·Ð° â€ž%Bâ€œ Ð¸ â€ž%Bâ€œÐ³Ñ€ÐµÑˆÐºÐ°: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð° Ð·Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ (Ð´Ð° Ð»Ð¸ Ñ�Ñ‚Ðµ Ð·Ð°Ð±Ð¾Ñ€Ð°Ð²Ð¸Ð»Ð¸ â€ž-fpicâ€œ?)Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñ‚Ñ€Ð°Ð¶ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž__rtinitâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žTag_ABI_array_object_align_expectedâ€œ Ñƒ â€ž%Bâ€œÐ³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žTag_ABI_array_object_alignmentâ€œ Ñƒ â€ž%Bâ€œÐ¸Ð·Ð²Ñ€ÑˆÐ½Ð°Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€ Ð·Ð° Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ.Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ.Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð½Ñ�Ñ‚Ð°Ð»Ð¸Ñ€Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ.ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž.fixupâ€œ-Ð°Ð¾Ð¿ÑˆÑ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ€Ð°Ð´Ð¸ Ñ�Ð° â€ž%sâ€œÑ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ 0x%08x ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾
-Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ
-incr_linum(b): +%u
+Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€ž%pB(%pA)â€œ; Ð½ÐµÑ›Ðµ Ð±Ð¸Ñ‚Ð¸ Ð½Ð°Ð¿Ñ€Ð°Ð²Ñ™ÐµÐ½Ð° Ð½Ð¸Ñ˜ÐµÐ´Ð½Ð° â€ž.eh_frame_hdrâ€œ Ñ‚Ð°Ð±ÐµÐ»Ð°Ð³Ñ€ÐµÑˆÐºÐ° Ñ‡Ð¸Ñ‚Ð°ÑšÐ° â€ž%sâ€œ: %sÐ³Ñ€ÐµÑˆÐºÐ° Ñ‡Ð¸Ñ‚Ð°ÑšÐ° Ð²Ñ€Ñ�Ñ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ð¸Ð· Ð»Ð¸Ñ‡Ð½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° ÐµÐ»Ñ„-Ð°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¼Ð¾Ð¶Ðµ Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð³Ð¾Ñ€ÑšÑƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚ Ð·Ð° Ð¿Ð¾Ð´Ð°Ñ‚ÐºÐµ, Ð°Ð»Ð¸ â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð° Ð´Ð° Ñ�Ñƒ Ð¿Ð¾Ð´Ð°Ñ†Ð¸ Ð¸Ñ�ÐºÑ™ÑƒÑ‡Ð¸Ð²Ð¾ Ñƒ Ð´Ð¾ÑšÐ¾Ñ˜ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð½Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%pBâ€œ Ð´Ð°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ñ˜Ðµ Ð²ÐµÑ› Ñƒ Ð·Ð°Ð²Ñ€ÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ â€žBE8â€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žAPCS-%dâ€œ, Ð´Ð¾Ðº Ñ†Ð¸Ñ™Ð½Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žAPCS-%dâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° EP9312, Ð´Ð¾Ðº Ñ˜Ðµ %pB Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žXScaleâ€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBÐ´ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° 8-Ð±Ð¸Ñ‚Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð°Ð»Ð¸ Ñ˜Ðµ â€ž%pBâ€œ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ð½Ð° 4-Ð±Ð¸Ñ‚Ð½Ð¾Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½Ð¸Ð·Ð° Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ â€ž%pBâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ â€ž%pBâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ð½ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº Ð°Ð»Ð¸ Ð¸Ð·Ð»Ð°Ð· ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ð½ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº.Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%pBâ€œ Ð½ÐµÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð´ÑƒÐ±Ð»ÐµÑ€Ðµ Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 32-Ð±Ð¸Ñ‚Ð½ÐµÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žFPU-3.0â€œ Ð°Ð»Ð¸ â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ñ�Ð°Ð¼Ð¾ â€žFPU-2.0â€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ðµ â€žVFPâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°, Ð° â€ž%pBâ€œ Ð½ÐµÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, Ð´Ð¾Ðº â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ðµ â€žiWMMXtâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°, Ð° â€ž%pBâ€œ Ð½ÐµÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, Ð´Ð¾Ðº â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ ÐºÐ¾Ð´Ð° Ð´Ð¾Ðº â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ ÐºÐ¾Ð´Ð°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žMSP430â€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð´Ð¾Ðº â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð²ÐµÐ»Ð¸ÐºÐ¸ Ð¼Ð¾Ð´ÐµÐ» ÐºÐ¾Ð´Ð° Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žMSP430â€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸ Ð¼Ð¾Ð´ÐµÐ» ÐºÐ¾Ð´Ð° Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð³Ñ€ÐµÑˆÐºÐ°: %pB: <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° â€žAArch64â€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%x>Ð³Ñ€ÐµÑˆÐºÐ°: %pB: <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ x86 Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ (0x%x) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ: 0x%x>Ð³Ñ€ÐµÑˆÐºÐ°: %pB: â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° ÑƒÐ»Ð°Ð·Ð° (%s) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ (%s).Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð° â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%sâ€œ Ð¸ â€ž%sâ€œ.Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€žISAâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ Ð·Ð° â€ž%sâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ. %d.%d vs %d.%dÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ â€žSBâ€œ Ð°Ð´Ñ€ÐµÑ�Ð¸Ñ€Ð°ÑšÐµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žR9â€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žXLENâ€œ (%u), Ð¼Ð¾Ð¶Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ñƒ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ñƒ.Ð³Ñ€ÐµÑˆÐºÐ°: %pB: â€žXLENâ€œ Ð½Ð¸Ñ�ÐºÐ° ÑƒÐ»Ð°Ð·Ð° (%u) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ (%u).Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð²ÐµÐ»Ð¸ÐºÐ° ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ â€žR2â€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑˆÐ°Ð¼ â€žrf16â€œ Ñ�Ð° Ð¿ÑƒÐ½Ð¸Ð¼ Ñ�ÐºÑƒÐ¿Ð¾Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° â€ž%pBâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° %d/%d Ñ�Ñƒ Ñƒ Ñ�ÑƒÐºÐ¾Ð±ÑƒÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ â€žISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð£ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%c/%câ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�ÑƒÐºÐ¾Ð± Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�ÑƒÐºÐ¾Ð± Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° â€ž%sâ€œ: â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ â€žR9â€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° â€ž%sâ€œ. ÐŸÑ€Ð²Ð¾ Ñ�Ð»Ð¾Ð²Ð¾ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ â€žiâ€œ Ð¸Ð»Ð¸ â€žeâ€œ Ð°Ð»Ð¸ Ð´Ð¾Ð±Ð¸Ñ… â€ž%sâ€œ.Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¿Ñ€Ð¾Ð´Ð°Ð²Ñ†Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ ÐºÐ¾Ñ˜Ð¸ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ñ’ÐµÐ½ Ð°Ð»Ð°Ñ‚Ð½Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð¾Ð·Ð½Ð°ÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€ž%d, %sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð·Ð½Ð°ÐºÐ¾Ð¼ â€ž%d, %sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�Ñ‚Ð°Ñ€Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð°Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�ÐµÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ðµ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ â€žISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ Ð²Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ðµ Ñ�Ð° â€ž%pBâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÐ²ÐµÐ¶ÐµÐ¼ â€ž%pBâ€œ Ñ�Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð¼ â€ž%pBâ€œ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€ÐµÐ³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %sÐ³Ñ€ÐµÑˆÐºÐ°: â€žfp16â€œ Ð·Ð°Ð¿Ð¸Ñ� Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ñ‚Ð¸ Ð·Ð° â€ž%pBâ€œ Ð¸ â€ž%pBâ€œÐ³Ñ€ÐµÑˆÐºÐ°: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð° Ð·Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ (Ð´Ð° Ð»Ð¸ Ñ�Ñ‚Ðµ Ð·Ð°Ð±Ð¾Ñ€Ð°Ð²Ð¸Ð»Ð¸ â€ž-fpicâ€œ?)Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð¾Ñ€Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ â€ž%pBâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d, Ð°Ð»Ð¸ Ñ†Ð¸Ñ™Ð½Ð¸ â€ž%pBâ€œ Ð¸Ð¼Ð° â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %dÐ³Ñ€ÐµÑˆÐºÐ°: â€žARC4â€œ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð²Ð¸ÑˆÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž__rtinitâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žTag_ABI_array_object_align_expectedâ€œ Ñƒ â€ž%pBâ€œÐ³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žTag_ABI_array_object_alignmentâ€œ Ñƒ â€ž%pBâ€œÐ½Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐµ Ñ‚Ð¾ÐºÐ¾Ð¼ Ð¾Ð±Ñ€Ð°Ð´Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%pBâ€œÐ¸Ð·Ð²Ñ€ÑˆÐ½Ð°Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€ Ð·Ð° Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œÐ½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œÐ½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žHI16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð½Ñ�Ñ‚Ð°Ð»Ð¸Ñ€Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œÐ½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñƒ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ñƒ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž.fixupâ€œ-Ð°Ð·Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜Ðµ Ð½ÐµÑ˜Ð°Ñ�Ð°Ð½Ð·Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¾ÐºÑ€ÑšÐµÐ½Ð°Ð±ÑƒÐ´ÑƒÑ›Ð° ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐ° Ð¾ â€žFDEâ€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÑƒ Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð° Ð¾Ð´Ð±Ð°Ñ†Ð¸Ð²Ð°ÑšÐµ â€ž.eh_frame_hdrâ€œ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ˜ÐµÐ¾Ð¿ÑˆÑ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ€Ð°Ð´Ð¸ Ñ�Ð° â€ž%sâ€œÑ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ñƒ â€žmach-oâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°: â€ž%ldâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%ldâ€œincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
-ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€žR_LM32_16_GOTâ€œÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð³Ñ€Ð°Ð½Ð°ÑšÐµ/Ñ�ÐºÐ¾Ðº Ð½Ð° Ð½ÐµÐ¿Ð°Ñ€Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�ÑƒÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð³Ñ€ÐµÑˆÐºÐ° Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÑƒÐ¼ÑšÐ¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð° Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÑ†Ð¸ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.got.locâ€œÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ»Ð°Ð·Ð° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð´Ð°Ð²Ð°ÑšÐ° Ð½Ðµ-â€žELFâ€œ, Ð½Ðµ-â€žmmoâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¸Ð·Ð»Ð°Ð·Ð°.
- ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ â€žobjcopyâ€œ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð¸Ð· â€žELFâ€œ-Ð° Ð¸Ð»Ð¸ â€žmmoâ€œ-Ð°,
- Ð¸Ð»Ð¸ Ñ�Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚ÐµÑ›Ð¸ â€ž-no-expandâ€œ (Ð·Ð° Ð³Ñ†Ñ†, â€ž-Wa,-no-expandâ€œ)Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ»Ð°Ð·Ð° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð´Ð°Ð²Ð°ÑšÐ° Ð½Ðµ-â€žELFâ€œ, Ð½Ðµ-â€žmmoâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¸Ð·Ð»Ð°Ð·Ð°.
- ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ â€žobjcopyâ€œ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð¸Ð· â€žELFâ€œ-Ð° Ð¸Ð»Ð¸ â€žmmoâ€œ-Ð°,
- Ð¸Ð»Ð¸ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚ÐµÑ›Ð¸ Ð³Ñ†Ñ†-Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-mno-base-addressesâ€œ.Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ð° â€ž%sâ€œ Ñ�Ð° ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð¼ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€žip2kâ€œ: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð½Ð° 0x%08lx (Ñ†Ð¸Ñ™ = 0x%08lx).ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€žip2kâ€œ: Ñ�ÑƒÐ²Ð¸ÑˆÐ½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð½Ð° 0x%08lx (Ñ†Ð¸Ñ™ = 0x%08lx).Ñ€ÐµÐ»Ð°ÐºÑ�ÐµÑ€ â€žip2kâ€œ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ Ñ˜Ðµ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ñ€ÐµÐ±Ð°Ñ†Ð¸Ð²Ð°Ñ‡Ð°.Ñ€ÐµÐ»Ð°ÐºÑ�ÐµÑ€ â€žip2kâ€œ: Ð¿Ñ€ÐµÐ±Ð°Ñ†Ð¸Ð²Ð°ÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð±ÐµÐ· Ð¿Ð¾Ñ‚Ð¿ÑƒÐ½Ð¾Ð³ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð°ÑšÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ.Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð°  (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)
-Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð° Ñ�Ð»Ð¸ÐºÐ°Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ â€ž%uâ€œ Ð³Ñ€ÑƒÐ¿Ð° â€ž%sâ€œ
-  Ð³Ñ€Ð°Ð½Ð°            %lu
-  Ñ‚Ð°Ñ� ÑƒÑ€ÐµÑ’ÐµÑšÐµ      %lu
-  Ð´ÑƒÐ³Ð° Ð±Ñ€Ð°Ð½Ð°       %lu
-  ÑƒÑ€ÐµÑ’ÐµÑšÐµ Ð´ÑƒÐ³Ðµ Ñ‚Ð°Ñ� %lu
-  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð²        %lu
-  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ñ‚Ð°Ñ�   %luÐ´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ñ�Ñ‚Ð´Ð¾ÑˆÐ»Ð¾ Ñ˜Ðµ Ð´Ð¾ Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°mach-o: Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%d) Ð½Ð°Ñ˜Ð²Ð¸ÑˆÐµ Ñ˜Ðµ 255,
-mep: Ð½ÐµÐ¼Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð·Ð° ÐºÐ¾Ð´ â€ž%dâ€œÐ¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð¼Ð¾Ð´ÑƒÐ»Ð°
+Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ð½Ð¾, Ð¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ð½Ð° 0x%08x
+ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žRL78â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð´ÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žRL78â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€ž%sâ€œÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð³Ñ€Ð°Ð½Ð°ÑšÐµ/Ñ�ÐºÐ¾Ðº Ð½Ð° Ð½ÐµÐ¿Ð°Ñ€Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�ÑƒÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð³Ñ€ÐµÑˆÐºÐ° Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%sâ€œ Ñ�Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾Ð¼ â€ž%sâ€œ Ñ˜Ðµ Ð´Ð°Ð»Ð¾ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€ÑƒÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÑƒÐ¼ÑšÐ¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð° Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÑ†Ð¸ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.got.locâ€œÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚: Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ñ˜Ðµ %lu != max %lu; Ð¿Ñ€Ð¸Ñ˜Ð°Ð²Ð¸Ñ‚Ðµ Ð¾Ð²Ñƒ Ð³Ñ€ÐµÑˆÐºÑƒÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€ž%sâ€œÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žTARGET2â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ†Ð¸Ñ™ Ð±Ñ„Ð´-Ð°Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ»Ð°Ð·Ð° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð´Ð°Ð²Ð°ÑšÐ° Ð½Ðµ-â€žELFâ€œ, Ð½Ðµ-â€žmmoâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¸Ð·Ð»Ð°Ð·Ð°; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ â€žobjcopyâ€œ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð¸Ð· â€žELFâ€œ-Ð° Ð¸Ð»Ð¸ â€žmmoâ€œ-Ð°, Ð¸Ð»Ð¸ Ñ�Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚ÐµÑ›Ð¸ â€ž-no-expandâ€œ (Ð·Ð° Ð³Ñ†Ñ†, â€ž-Wa,-no-expandâ€œ)Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ»Ð°Ð·Ð° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð´Ð°Ð²Ð°ÑšÐ° Ð½Ðµ-â€žELFâ€œ, Ð½Ðµ-â€žmmoâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¸Ð·Ð»Ð°Ð·Ð°; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ â€žobjcopyâ€œ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð¸Ð· â€žELFâ€œ-Ð° Ð¸Ð»Ð¸ â€žmmoâ€œ-Ð°, Ð¸Ð»Ð¸ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚ÐµÑ›Ð¸ Ð³Ñ†Ñ†-Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-mno-base-addressesâ€œ.Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð°Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð° Ð·Ð° â€ž.eh_frame_entryâ€œ: %pAÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žETIRâ€œ-ÑƒÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ð° â€ž%sâ€œ Ñ�Ð° ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð¼Ñ€ÐµÐ»Ð°ÐºÑ�ÐµÑ€ â€žip2kâ€œ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ Ñ˜Ðµ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ñ€ÐµÐ±Ð°Ñ†Ð¸Ð²Ð°Ñ‡Ð°.Ñ€ÐµÐ»Ð°ÐºÑ�ÐµÑ€ â€žip2kâ€œ: Ð¿Ñ€ÐµÐ±Ð°Ñ†Ð¸Ð²Ð°ÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð±ÐµÐ· Ð¿Ð¾Ñ‚Ð¿ÑƒÐ½Ð¾Ð³ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð°ÑšÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ.Ð´Ð° Ð½Ð¸Ñ˜Ðµ Ð¾Ð²Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° â€“ %s â€“ Ð¼Ð°Ð»Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ ?ÑƒÑ�ÐºÐ°ÐºÐ°ÑšÐµ (PC rel26) Ñƒ Ð¾Ð´ÐµÑ™Ð°Ðº (%s) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾Ñ�ÐºÐ¾Ðº Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼Ñ�ÐºÐ¾Ðº Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜ÑƒÐ½Ð°Ñ‚Ð¿Ð¸Ñ�, Ð½Ð°Ð·Ð¸Ð²: %.*s
+Ð´ÑƒÐ¶Ð¸Ð½Ð°: %2u, Ð²Ñ€Ñ�Ñ‚Ð°: %2u Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð°  (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)
+Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð° Ñ�Ð»Ð¸ÐºÐ°Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð¸
+Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ %u Ð³Ñ€ÑƒÐ¿Ðµ
+Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð°
+Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ñ�Ñ‚Ð´Ð¾ÑˆÐ»Ð¾ Ñ˜Ðµ Ð´Ð¾ Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ð´ÑƒÐ³Ð¾Ð³ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œmach-o: Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%u) Ð½Ð°Ñ˜Ð²Ð¸ÑˆÐµ Ñ˜Ðµ 255,
+Ð»Ð¾ÑˆÐ° Ð°Ñ€Ñ…Ð¸Ð²Ð°Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð¿Ð¾Ð»ÑƒÑ�ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð»Ð¸ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %dÐ»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð»Ð¸ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %dÐ»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð¿Ð°Ñ€ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %dÐ»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð¿Ð°Ñ€ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð¿Ñ€Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ»Ð¾ÑˆÐµ â€žmach-o ARMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %dÐ»Ð¾Ñˆ â€žmach-o ARMâ€œ Ñ�ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð»Ð¸ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %dÐ»Ð¾ÑˆÐµ â€žmach-o ARMâ€œ Ð²Ð°Ð½Ð¸Ð»Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %d (pcrel: %d)Ð»Ð¾ÑˆÐµ â€žmach-oâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ð±Ñ€Ð¾Ñ˜Ð° Ð¾Ð´ÐµÑ™Ð°ÐºÐ°Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�Ñ†Ñ€Ð¿Ñ™ÐµÐ½Ð°mep: Ð½ÐµÐ¼Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð·Ð° ÐºÐ¾Ð´ â€ž%dâ€œÐ¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð¼Ð¾Ð´ÑƒÐ»Ð°
 ÐºÑ€Ð°Ñ˜ Ð¼Ð¾Ð´ÑƒÐ»Ð°
-Ð½Ð°Ð·Ð¸Ð²: [Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: %08lx Ð´ÑƒÐ¶Ð¸Ð½Ð° %d]: Ð¸Ð·Ð²Ð¾Ñ€Ð½Ð°Ð½Ð¸Ð· â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð½ÐµÐ¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð½
-Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ñƒ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œÐ½Ðµ-Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°Ñ˜ÑƒÑ›Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° 0x%v Ð¿Ð»ÑƒÑ� Ð½Ð°Ñ˜Ð²ÐµÑ›Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° 0x%v Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ðµ Ð¼ÐµÑ�Ð½Ð¾ Ñ�Ð¿Ñ€ÐµÐ¼Ð¸ÑˆÑ‚Ðµ
-Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñƒ â€ž@fptrâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒÐ½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ â€žGOTâ€œ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ð·Ð° Ð¼ÐµÑ�Ð½Ðµ ÑƒÐ½Ð¾Ñ�Ðµ â€žGOTâ€œÐ½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº=%lx  Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð½=%d
+Ð½Ð°Ð·Ð¸Ð²: [Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: %08lx Ð´ÑƒÐ¶Ð¸Ð½Ð° %d]: Ð¸Ð·Ð²Ð¾Ñ€Ð½Ð°Ð½Ð¾Ð²Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚Ð¸Ð³Ð»Ð° Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾ ÑƒÐ»Ð°Ð·Ð½Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°:Ð½ÐµÐ½Ð¸Ñ˜ÐµÐ´Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐµ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œÐ½ÐµÐ¼Ð° Ð³Ñ€ÐµÑˆÐºÐµÐ½ÐµÐ¼Ð° Ð²Ð¸ÑˆÐµ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð°Ð½Ð¸Ñ… Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð½ÐµÐ¼Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°Ð½Ð¸Ð· â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð½ÐµÐ¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð½
+Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ñƒ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œÐ½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°Ð½Ðµ-Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°Ñ˜ÑƒÑ›Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° 0x%v Ð¿Ð»ÑƒÑ� Ð½Ð°Ñ˜Ð²ÐµÑ›Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° 0x%v Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ðµ Ð¼ÐµÑ�Ð½Ð¾ Ñ�Ð¿Ñ€ÐµÐ¼Ð¸ÑˆÑ‚Ðµ
+Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñƒ â€ž@fptrâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒÐ½Ð¸ÑˆÑ‚Ð°Ð½Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸ÐºÐ°Ð·Ð°Ñ‚Ð¸Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ â€žGOTâ€œ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ð·Ð° Ð¼ÐµÑ�Ð½Ðµ ÑƒÐ½Ð¾Ñ�Ðµ â€žGOTâ€œÐ½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð·Ð° Ñ€ÐµÑ’Ð°ÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°Ð½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº=%lx Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð½=%d
 Ð½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° Ð¾ÐºÑ€ÑƒÐ¶ÐµÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð°
-Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð½Ð°ÐºÐ¾Ð½ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð¿Ñ€ÐµÐºÑ€Ð¸Ð²Ð°ÑšÐ°Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lxÐ¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx:Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx: Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ =%x:Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lxÐ¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lx:Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð±ÐºÐ¿Ñ‚ Ð°Ð´Ñ€ÐµÑ�Ð° 0x%08x
-Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð°: Ð½Ð°Ð·Ð¸Ð²: %.*s
+Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾Ð¼Ð¾Ð´ÑƒÐ» Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð±ÐµÐ· Ð³Ñ€ÐµÑˆÐ°ÐºÐ° !Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐµ Ð·Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ðº Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½ÐµÑ˜ÐµÐ´Ð°Ð½ Ð¾Ð´ Ð¼Ð¾Ð³ÑƒÑ›Ð¸Ñ… Ñ€Ð°Ð·Ð»Ð¾Ð³Ð° Ð¾Ð²Ðµ Ð³Ñ€ÐµÑˆÐºÐµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð´Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÐ¿ÑƒÑ‚Ð°Ð½ Ñƒ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼ ÐºÐ¾Ð´Ñƒ Ð¸Ð¼Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð¾Ð±Ñ˜Ð°Ð²Ñ™ÐµÐ½Ð¾ Ñ‚Ð°Ð¼Ð¾ Ð³Ð´Ðµ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð½Ð°ÐºÐ¾Ð½ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð¿Ñ€ÐµÐºÑ€Ð¸Ð²Ð°ÑšÐ°Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡
+Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lxÐ¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx:Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx: Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lxÐ¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lx:Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð±ÐºÐ¿Ñ‚ Ð°Ð´Ñ€ÐµÑ�Ð° 0x%08x
+Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð°: Ð½Ð°Ð·Ð¸Ð²: %.*s
 ÐºÑ€Ð°Ñ˜ Ð·Ð°Ð¿Ð¸Ñ�Ð°
-ÑƒÐ¿ÑƒÑ‚Ð° Ð½Ð° Ð³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ [%lx:%04lx] Ñƒ Ð¾Ð±Ð¸Ñ‡Ð½Ð¾Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð½Ð° %04lxÑ€ÐµÐ³Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ˜Ð¾Ñˆ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»ÑƒÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°ÐºÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ñ€ÐµÐ±Ð° Ð±Ð¸Ñ‚Ð¸ Ð¿Ð°Ñ€Ð°Ð½ Ð±Ñ€Ð¾Ñ˜Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ñ… Ñ�ÐµÐ³Ð¼ÐµÐ½Ð°Ñ‚Ð° Ð½Ð¸Ñ�Ñƒ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¾Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€ž%Bâ€œ: %s
+Ñ�Ð½Ð¸Ð¼Ð°Ðº Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸ Ð·Ð° Ð´ÑƒÐ¶Ð¸Ð½Ñƒ Ð½Ð°Ð·Ð¸Ð²Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°ÑƒÐ¿ÑƒÑ‚Ð° Ð½Ð° Ð³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ [%lx:%04lx] Ñƒ Ð¾Ð±Ð¸Ñ‡Ð½Ð¾Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð½Ð° %04lxÑƒÐ¿ÑƒÑ›Ð¸Ð²Ð°ÑšÐµ Ð½Ð° Ð´Ð°Ð»ÐµÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¾Ð¼ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð½ÐµÑ‚Ð°Ñ‡Ð½Ð¾Ð³ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°Ñ€ÐµÐ³Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ â€ž%%g%dâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½ Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾: â€ž%sâ€œ Ñƒ â€ž%pBâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€ž%sâ€œ Ñƒ â€ž%pBâ€œÐ¾Ð´ÐµÑ™Ð°Ðº Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜
+Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (%d) Ñ˜Ðµ *Ð�Ð•ÐŸÐžÐ—Ð�Ð�Ð¢Ðž*Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð½Ðµ-â€žRELâ€œ Ð¿-Ð¾Ð´ÐµÑ™Ð°ÐºÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»ÑƒÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°ÐºÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ñ€ÐµÐ±Ð° Ð±Ð¸Ñ‚Ð¸ Ð¿Ð°Ñ€Ð°Ð½ Ð±Ñ€Ð¾Ñ˜Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ñ… Ñ�ÐµÐ³Ð¼ÐµÐ½Ð°Ñ‚Ð° Ð½Ð¸Ñ�Ñƒ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°ÑƒÐºÐ»Ð°ÑšÐ°Ð¼ Ð½ÐµÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€ž%pBâ€œÐ¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¾Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€ž%pBâ€œ: %s
 Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ�Ð°Ð½Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%dâ€œÐ¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ñ€ÑƒÑ‚Ð¸Ð½Ðµ
 ÐºÑ€Ð°Ñ˜ Ñ€ÑƒÑ‚Ð¸Ð½Ðµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° 0x%08x
-Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²ÐºÐµ, Ð½Ð°Ð·Ð¸Ð²: %.*s
+Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ÐµÐ²Ñ€Ñ�Ñ‚Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²ÐºÐµ, Ð½Ð°Ð·Ð¸Ð²: %.*s
 set_abs_pc: 0x%08x
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-Ð¾Ð´ÐµÑ™Ð°Ðº Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ 64KB; Ð´Ð¾ÑšÐ° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (Ð²Ð¸Ð´Ð¸Ñ‚Ðµ Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-Gâ€œ)â€žsom_sizeof_headersâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾Ð¸Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ, Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð·Ð° ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾-Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°
+Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚Ð³Ñ€ÐµÑˆÐºÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œÐ¾Ð´ÐµÑ™Ð°Ðº Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ 64KB; Ð´Ð¾ÑšÐ° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (Ð²Ð¸Ð´Ð¸Ñ‚Ðµ Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-Gâ€œ)â€žsom_sizeof_headersâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾Ð¸Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ, Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð¾Ð²Ð¾Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼Ð¸Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ, Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð·Ð° ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾-Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°
 Ð¸Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ: â€žmodtabâ€œ, â€žtocâ€œ Ð¸ â€žextrefsymsâ€œ Ñ˜Ð¾Ñˆ Ð½Ð¸Ñ�Ñƒ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¸ Ð·Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ðµ â€ždysymtabâ€œ.Ð¸Ð·Ð²Ð¾Ñ€ (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)
-Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸: %s
-Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°Ðº (Ð±ÐµÐ· Ð½Ð°Ð·Ð¸Ð²Ð°)ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð·Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð° â€ž.pltâ€œ, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ â€ždpâ€œ = %ldÐ¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜Ñƒ Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ñ‚Ð¾Ñ˜ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð½Ð¸Ð· Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ðµ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð°:
-term(b): 0x%02xterm_w: 0x%04xÐ¾Ð´Ñ€ÐµÐ´Ð±Ð° Ð²Ñ€Ñ�Ñ‚Ðµ (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)
-Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žARMâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žTHUMBâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ Ð¸Ð· â€ž%Bâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° 0x%lxÐ½Ð¸Ñ�ÐºÐ° Ð±Ð¸Ñ‚Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð°
-Ð½ÐµÑ�Ð¸Ð³ÑƒÑ€Ð°Ð½ Ð´Ð¾Ð³Ð¾Ð²Ð¾Ñ€ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ð·Ð° Ð½Ðµ-â€žCOFFâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° â€ž%sâ€œ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ Ñ�Ð»Ð¾Ð¶ÐµÐ½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ: %sÐ½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð² â€žegsdâ€œ ÑƒÐ½Ð¾Ñ� Ð²Ñ€Ñ�Ñ‚Ðµ %u
+Ð¿Ñ€Ð¸Ð²Ð¸Ð´Ð½Ð¾ â€žALPHA_R_BSRâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ°Ð½Ð°Ð»Ð¸Ð·Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ›Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð·Ð¸Ð² Ð¾Ð´ â€ž%sâ€œ Ð´Ð¾ â€ž%sâ€œ
+Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° (%d) Ñƒ â€ž_bfd_vms_pushâ€œ-ÑƒÐ¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñƒ â€ž_bfd_vms_popâ€œ-ÑƒÑ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸: %s
+Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð° â€ž%sâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ðµ Ð²ÐµÐ·ÐµÑ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°Ðº (Ð±ÐµÐ· Ð½Ð°Ð·Ð¸Ð²Ð°)Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜Ñƒ Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ñ‚Ð¾Ñ˜ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ â€žst_otherâ€œ Ð·Ð° Ð�Ð‘Ð˜ Ð¸Ð·Ð´Ð°ÑšÐµ 1Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ: â€žREGISTERâ€œ Ñƒ â€ž%pBâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€ž%sâ€œ Ñƒ â€ž%pBâ€œÑ�Ð²ÐµÐ·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€žSTB_GNU_UNIQUEâ€œ Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° ÑƒÐºÐ»Ð°ÑšÐ°ÑšÐµ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° ÐºÐ¾Ñ˜Ð¸ Ð½Ðµ Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ˜Ð¸Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€žSTT_GNU_IFUNCâ€œ Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾Ð³Ñ€ÐµÑˆÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ�ÐºÐ¾Ð³ Ð¿Ð¾Ð·Ð¸Ð²Ð°Ð½Ð¸Ð· Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ðµ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð°:
+term(b): 0x%02xterm_w: 0x%04xâ€žbfinâ€œ Ñ†Ð¸Ñ™ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ð²Ð°ÑšÐ°Ñ�ÑƒÐºÐ¾Ð± Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐ° Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° â€žELFâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð° Ð¸Ð· â€ž%pBâ€œÐ¿Ñ€ÐµÐ²Ð¸ÑˆÐµ â€žGOTâ€œ ÑƒÐ½Ð¾Ñ�Ð° Ð·Ð° â€ž-fpicâ€œ, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œÐ¿Ð¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð´Ð° ÑƒÐºÑ™ÑƒÑ‡Ð¸Ñ‚Ðµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐµ Ð´Ð° Ð±Ð¸Ñ�Ñ‚Ðµ Ð¸Ð·Ð±ÐµÐ³Ð»Ð¸ Ñ�ÐºÑ€Ð°Ñ›Ð¸Ð²Ð°ÑšÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°Ð¾Ð´Ñ€ÐµÐ´Ð±Ð° Ð²Ñ€Ñ�Ñ‚Ðµ Ð·Ð° ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚:
+Ð¾Ð´Ñ€ÐµÐ´Ð±Ð° Ð²Ñ€Ñ�Ñ‚Ðµ Ð·Ð° Ð¿Ð¾Ð´Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñƒ â€ž%uâ€œ:
+ÑƒÐºÑƒÑ†Ð°Ð½Ð¸ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡
+Ð¾Ð´Ñ€ÐµÐ´Ð±Ð° Ð²Ñ€Ñ�Ñ‚Ðµ (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)
+Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¿Ð¾Ð´Ð°Ñ‚ÐºÐµ Ð·Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€ž%sâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÐµÐºÐ²Ð¸Ð²Ð°Ð»ÐµÐ½Ñ‚Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¸ÐºÐ°Ð¶ÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHSâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ â€ž%#xâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ Ð¸Ð· â€ž%pBâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œÐ½Ð¸Ñ�ÐºÐ° Ð±Ð¸Ñ‚Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð°
+Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° â€ž%sâ€œ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ Ñ�Ð»Ð¾Ð¶ÐµÐ½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ: %sÐ½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð¼Ð°ÑˆÐ¸Ð½ÐµÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð²Ñ€Ñ�Ñ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° %d Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ OSF/1 Ñ˜ÐµÐ·Ð³Ñ€Ð°Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð² â€žegsdâ€œ ÑƒÐ½Ð¾Ñ� Ð²Ñ€Ñ�Ñ‚Ðµ %u
 Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° emh Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ
-Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žETIRâ€œ Ð½Ð°Ñ€ÐµÐ´Ð±Ð° %dÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÐ° Ð±Ð°Ñ˜Ñ‚Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð° 0x%lxÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ñ€ÐµÐ´Ð½Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%dâ€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ â€ž%câ€œ Ñƒ Ñ�Ð»Ð¾Ð¶ÐµÐ½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»ÑƒÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° Ð¸Ð·Ð²Ð¾Ñ€Ð° â€ž%dâ€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850â€œÐ½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° â€žSTAâ€œ Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%sâ€œÐ½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ñ€Ð°Ð·Ð¼Ð°ÐºÐ° Ð°Ð´Ñ€ÐµÑ�Ðµ â€ždata/insnâ€œÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850 E3â€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850â€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850eâ€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e1â€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e2â€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e2v3â€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e3v5â€œÐ²-Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: 0x%02x, Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: 0x%08x vma:			Ð�Ð´Ñ€ÐµÑ�Ð° Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ°	 Ð�Ð´Ñ€ÐµÑ�Ð° ÐºÑ€Ð°Ñ˜Ð°	  Ð˜Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸
-ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ Ð¸Ð¼Ð°Ñ˜Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ðµ â€žwchar_tâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ñƒ Ð¿Ð¾ Ñ‚Ð¾Ð¼Ðµ Ð´Ð° Ð»Ð¸ Ñ˜Ðµ ÐºÐ¾Ð´ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žDSBTâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %s Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ° Ð¾Ð½Ð´Ð° Ñ›Ðµ Ð¸Ð·Ð»Ð°Ð· Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %s Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ°. ÐšÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ° ÐºÑ€Ð¾Ð· Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ ÑƒÑ�Ð¿ÐµÑ‚Ð¸ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¸ â€žwchar_tâ€œ Ð¾Ð½Ð´Ð° Ñ›Ðµ Ð¸Ð·Ð»Ð°Ð· Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¸ â€žwchar_tâ€œ. ÐšÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ â€žwchar_tâ€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ ÐºÑ€Ð¾Ð· Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ ÑƒÑ�Ð¿ÐµÑ‚Ð¸ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %B: Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™Ð°ÐºÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ°
-ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¸Ð¼Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐµ â€” Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð° â€ž%sâ€œ
-ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½ÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d
-ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜ Ð¸Ð·Ð²Ð¾Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñ�ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ â€ž%Bâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ ÐºÐ¾Ñ˜Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-ÐŸÐ˜Ð¦ ÐºÐ¾Ð´ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ ÐºÐ¾Ñ˜Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-ÐŸÐ˜Ð” ÐºÐ¾Ð´ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½ Ñƒ Ð±ÐµÐ»ÐµÑˆÐºÑƒÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° â€ž%Aâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ñƒ â€žPROGBITSâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ�Ñƒ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñƒ â€ž%Bâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž%sâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€ž%sâ€œÐ²Ð¸ Ð½ÐµÐ¼Ð°Ñ‚Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµÑ‚Ðµ â€ž%sâ€œ Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸
\ No newline at end of file
+Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žEGSDâ€œ Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° %dÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žETIRâ€œ Ð½Ð°Ñ€ÐµÐ´Ð±Ð° %dÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ: 0x%02xÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÐ° Ð±Ð°Ñ˜Ñ‚Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð° â€ž%#xâ€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ñ€ÐµÐ´Ð½Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%dâ€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ â€ž%câ€œ Ñƒ Ñ�Ð»Ð¾Ð¶ÐµÐ½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»ÑƒÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s + %sâ€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° Ð¸Ð·Ð²Ð¾Ñ€Ð° â€ž%dâ€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸ â€ž%sâ€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850â€œÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾: %xÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žINPUT_SECTION_FLAG %sâ€œ
+Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¸Ð´ â€žTI COFFâ€œ Ñ†Ð¸Ñ™Ð° â€ž0x%xâ€œÐ½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€ž.stabâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° â€žSTAâ€œ Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%sâ€œÐ½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ñ€Ð°Ð·Ð¼Ð°ÐºÐ° Ð°Ð´Ñ€ÐµÑ�Ðµ â€ždata/insnâ€œÐ½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850 E3â€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850â€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850eâ€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e1â€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e2â€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e2v3â€œÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e3v5â€œÐ¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ Ñ˜ÐµÐ´Ð½Ð¾Ð¼ Ð¾Ð´ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸  Ð¼Ð°Ð»Ð¸Ñ…, Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð¼Ð°Ð»Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð¼Ð°Ð»Ð¸Ñ… Ð¸ Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð·Ð°ÑƒÐ·Ð¼Ðµ Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°Ð²-Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: 0x%02x, Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: 0x%08x vma:			Ð�Ð´Ñ€ÐµÑ�Ð° Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ°	 Ð�Ð´Ñ€ÐµÑ�Ð° ÐºÑ€Ð°Ñ˜Ð°	  Ð˜Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ð¸Ð¼Ð°Ñ˜Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ðµ â€žwchar_tâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ñƒ Ð¿Ð¾ Ñ‚Ð¾Ð¼Ðµ Ð´Ð° Ð»Ð¸ Ñ˜Ðµ ÐºÐ¾Ð´ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žDSBTâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¾Ð¼ (%ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐµ â€” Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%pBâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¾Ð²Ð°Ð½Ð¾ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐµ â€ž%u.%u.%uâ€œ Ð°Ð»Ð¸ Ð¸Ð·Ð»Ð°Ð· ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð·Ð´Ð°ÑšÐµ â€ž%u.%u.%uâ€œ.ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žMSA ABIâ€œ â€ž%dâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ â€žABIâ€œ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %s Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ° Ð¾Ð½Ð´Ð° Ñ›Ðµ Ð¸Ð·Ð»Ð°Ð· Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %s Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ°; ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ° ÐºÑ€Ð¾Ð· Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ ÑƒÑ�Ð¿ÐµÑ‚Ð¸ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¸ â€žwchar_tâ€œ Ð¾Ð½Ð´Ð° Ñ›Ðµ Ð¸Ð·Ð»Ð°Ð· Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¸ â€žwchar_tâ€œ; ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ â€žwchar_tâ€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ ÐºÑ€Ð¾Ð· Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ ÑƒÑ�Ð¿ÐµÑ‚Ð¸ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žMSA ABIâ€œ â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žMSA ABIâ€œ â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žMSA ABI %dâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ â€žABIâ€œ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ â€žABIâ€œ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ â€žABIâ€œ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ðµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±ÑƒÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ðµ â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ â€žGNU_PROPERTY_TYPEâ€œ (%ld) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ: %#lxÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ â€žGNU_PROPERTY_TYPEâ€œ (%ld) Ð²Ñ€Ñ�Ñ‚Ð° (0x%x) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°: 0x%xÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÑšÐµ Ð½Ðµ ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ð²Ð° Ð½Ð° Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ñ˜ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ: 0x%xÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°: 0x%xÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™Ð°ÐºÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€ž%dâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€žARCâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žMSPABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žGNU_PROPERTY_TYPEâ€œ (%ld) Ð²Ñ€Ñ�Ñ‚Ð°: 0x%xÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ°
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð° â€ž%sâ€œ
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½ÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ñ�Ðµ Ñ‚Ñ€ÐµÐ±Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž--enable-non-contiguous-regionsâ€œ Ð¾Ð´Ð±Ð°Ñ†ÑƒÑ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð¸Ð· â€ž%sâ€œ
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž--plt-localentryâ€œ Ñ˜Ðµ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð¾ Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð±ÐµÐ· â€žld.soâ€œ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð·Ð° Ð¾Ñ‚ÐºÑ€Ð¸Ð²Ð°ÑšÐµ â€žABIâ€œ Ð¿Ñ€ÐµÑ�Ñ‚ÑƒÐ¿Ð°ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRL78_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRX_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ðµ Ð¾Ð´ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° (%u) ÑšÐµÐ³Ð¾Ð²Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ Ñ˜Ðµ Ð¼Ð°ÑšÐµ Ð¾Ð´ â€ž%uâ€œ Ñƒ â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜ Ð¸Ð·Ð²Ð¾Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñ�ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ‡Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%pBâ€œ Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð½ÐµÐ¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¸ ÐºÐ¾Ð´ Ñƒ â€ž%pBâ€œ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñ�Ð° ÑšÐ¸Ð¼ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐºÐ»Ð°ÑšÐ°Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%pBâ€œ ÑƒÑ�Ð»ÐµÐ´ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ñ�Ð¿Ð¾Ñ™Ð°ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ Ð¸Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´Ð±Ð°Ñ†ÑƒÑ˜ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€œ%pBâ€œ-Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€žck%sâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ñ†Ð¸Ñ™Ð½Ð¸Ð¼ â€žck%sâ€œ, ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ â€žck%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð¿Ñ†Ð¸Ñ˜Ð° â€žgcâ€œ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ ÐºÐ¾Ñ˜Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-ÐŸÐ˜Ð¦ ÐºÐ¾Ð´ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ ÐºÐ¾Ñ˜Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-ÐŸÐ˜Ð” ÐºÐ¾Ð´ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ�Ð°Ð¼ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%pBâ€œ Ð¿Ð¾ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð²ÐµÑ› Ð½Ð°Ð²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ Ð½Ðµ-Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¾ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¾Ð²Ð°Ð½Ð¾ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐµ 1.9.1 Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¸Ð¼ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐ¸Ð¼Ð°.ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½ Ñƒ Ð±ÐµÐ»ÐµÑˆÐºÑƒÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° â€ž%pAâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ñƒ â€žPROGBITSâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°ÐºÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ�Ñƒ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ð¸Ð· â€ž%dâ€œ Ñƒ â€ž%dâ€œ Ð·Ð° â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñƒ â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž%sâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ %pBÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žeâ€œ-Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%#lxâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ð´ÐµÑˆÐµÐ½Ðµ Ð¸Ð»Ð¸ Ñ�Ñ‚Ð°Ñ€Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ñƒ Ð¼Ð°ÑˆÐ¸Ð½ÑƒÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ¿Ð¸Ñ� Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ñƒ Ñ˜Ðµ Ñ�Ð¿Ð¾Ñ€: Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÑƒÐ¿Ð¸Ñ�ÑƒÑ˜ÐµÐ¼ Ð²Ñ€ÐµÐ¼ÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº ÑƒÐ¿Ð¸Ñ�Ð¸Ð²Ð°ÑšÐ° â€ž%pAâ€œ Ð½Ð° Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾Ð¼ (Ð½Ð¿Ñ€. Ð½ÐµÐ³Ð°Ñ‚Ð¸Ð²Ð°Ð½) Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ…-Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°
+Ð´Ð°Ð²Ð¸ Ð½ÐµÐ¼Ð°Ñ‚Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµÑ‚Ðµ â€ž%sâ€œ Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸PRIu64PRIx64PRId64%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: %#: warning: bad R_SH_USES offset%pB: %#: warning: R_SH_USES points to unrecognized insn %#x%pB: %#: warning: bad R_SH_USES load offset%pB: %#: warning: could not find expected reloc%pB: %#: warning: symbol in unexpected section%pB: %#: warning: could not find expected COUNT reloc%pB: %#: warning: bad count%pB: %#: fatal: reloc overflow while relaxing%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: bad reloc address %# in section `%pA'error: %pB(%pA) section size (%# bytes) is larger than file size (%# bytes)error: %pB(%pA) is too large (%# bytes)DWARF error: offset (%) greater than or equal to %s size (%)DWARF error: data count (%) larger than buffer sizeDWARF error: unknown format content type %DWARF error: line info section is too small (%)DWARF error: line info data is bigger (%#) than the space remaining in the section (%#lx)DWARF error: unable to read alt ref %DWARF error: unable to locate abstract instance DIE ref %%pB: error: attribute section length too small: %%pB(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%pB: invalid size field in group section header: %#%pB: section %pA lma %# adjusted to %#%pB: warning: empty loadable segment detected at vaddr=%#, is this intentional?%pB: warning: segment alignment of %# is too large%pB(%pA+%#): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): CMEM relocation to `%s+%#' is invalid, 16 MSB should be %#x (value is %#)ERROR: CMSE stub (%s section) too far (%#) from destination (%#)%pB(%pA+%#): unexpected %s instruction '%#lx' in TLS trampoline%pB(%pA+%#): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC%pB(%pA+%#): %s relocation not permitted in shared object%pB(%pA+%#): only ADD or SUB instructions are allowed for ALU group relocations%pB(%pA+%#): overflow whilst splitting %# for group relocation %s%pB(%pA+%#): %s relocation against SEC_MERGE section%pB(%pA+%#): %s used with TLS symbol %s%pB(%pA+%#): %s used with non-TLS symbol %s%pB(%#): error: cannot create STM32L4XX veneer; jump out of range by % bytes; cannot encode branch instruction%pB(%pA+%#): unresolvable relocation against symbol `%s'%pB(%pA+%#): reloc against `%s': error %d%pB: relocation at `%pA+%#' references symbol `%s' with nonzero addend%pB, section %pA: relocation %s with non-zero addend % against local symbol%pB, section %pA: relocation %s with non-zero addend % against symbol `%s'%pB(%pA+%#): cannot reach %s, recompile with -ffunction-sections%pB(%pA+%#): %s fixup for insn %#x is not supported in a non-shared link%pB(%pA+%#): cannot handle %s for %s%pB: TLS transition from %s to %s against `%s' at %# in section `%pA' failedip2k linker: missing page instruction at %# (dest = %#)ip2k linker: redundant page instruction at %# (dest = %#)%pB: warning: %s points to unrecognized reloc at %#global pointer relative relocation at address %# when _gp not defined
+unable to reach %s (at %#) from the global pointer (at %#) because the offset (%) is out of the allowed range, -32678 to 32767
+%pB(%pA+%#): error: %s with unexpected instruction %#x%pB(%pA): unsafe PID relocation %s at %# (against %s in %s)%pB(%pA+%#): invalid instruction for TLS relocation %s%pB: CALL15 reloc at %# not against global symbol%pB: %#: warning: R_SH_USES points to unrecognized insn 0x%x%pB: %#: fatal: unaligned branch target for relax-support relocation%pB: %#: fatal: unaligned %s relocation %#%pB: %#: fatal: R_SH_PSHA relocation % not in range -32..32%pB: %#: fatal: R_SH_PSHL relocation % not in range -32..32%pB(%pA+%#): cannot emit fixup to `%s' in read-only section%pB(%pA+%#): %s relocation against external symbol "%s"%pB(%pA): offset in relocation for GD->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd4??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xc7??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xd1??)%pB(%pA+%#): unexpected instruction %#04X (expected 0x310c)%pB(%pA+%#): unexpected instruction %#04X (expected 0x410b)%pB(%pA+%#): unexpected instruction %#04X (expected 0x34cc)%pB(%pA): offset in relocation for IE->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd0??: mov.l)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?12: stc)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?ce: mov.l)%pB(%pA): offset in relocation for GD->IE translation is too small: %#%pB(%pA): offset in relocation for LD->LE translation is too small: %#%pB(%s+%#): unresolvable %s relocation against symbol `%s'%pB: %#: warning: %s points to unrecognized insns%pB: %#: warning: %s points to unrecognized insn %#x%pB: %#: warning: %s points to unrecognized reloc%pB: %#: warning: %s points to unrecognized reloc %#%pB: warning: GOT addend of % to `%s' does not match previous GOT addend of %%pB: warning: PLT addend of % to `%s' from %pA section ignored%pB: warning: %s relocation to %# from %pA section%pB(%pA+%#): relocation offset out of range (size=%#)%pB(%pA+%#): could not decode instruction; possible configuration mismatch%pB(%pA+%#): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%pB(%pA+%#): unexpected fix for %s relocation%pB: %pA+%#: warning: %s relocation against unexpected insnstub entry for %s cannot load .plt, dp offset = %%pB(%pA+%#): cannot reach %s%pB: can't relax br at %# in section `%pA'; please use brl or indirect branch%pB: short data segment overflowed (%# >= 0x400000)%pB: missing TLS section for relocation %s against `%s' at %# in section `%pA'.%pB: Can't relax br (%s) to `%s' at %# in section `%pA' with size %# (> 0x1000000).warning: size of symbol `%s' changed from % in %pB to % in %pB%pB(%pA): relocation % has invalid symbol index %ld%pB: Internal inconsistency error for value for
+ linker-allocated global register: linked: %# != relaxed: %#%pB: LOCAL directive: register $% is not a local register; first global register is $%%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %%pB: addend %s%#x in relocation %s against symbol `%s' at %# in section `%pA' is out of range%pB: version count (%) does not match symbol count (%ld)warning: %pB is truncated: expected core file size >= %, found: %%pB: bad reloc symbol index (%# >= %#lx) for offset %# in section `%pA'%pB: non-zero symbol index (%#) for offset %# in section `%pA' when the object file has no symbol tableerror: %pB contains a reloc (%#) for section %pA that references a non-existent global symbol%pB: %pA+%#: no symbol found for INHERIT%pB: incorrect `.reginfo' section size; expected %, got %%pB: GOT reloc at %# not expected in executables%pB: CALL16 reloc at %# not against global symbol%pB: can't find matching LO16 reloc against `%s' for %s at %# in section `%pA'%pB: `%pA' entry VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB: `%pA' offset of % from `%pA' beyond the range of ADDIUPC%pB: `%pA' start VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB 64-bit address %# out of range for Intel Hex file%pB: address %# out of range for Intel Hex filesection address (%#) below start of segment (%#)%pB: access beyond end of merged section (%)%pB: attempt to emit contents at non-multiple-of-4 address %#%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %%pB: XMC_TC0 symbol `%s' is class %d scnlen %%pB: reloc %s:% not in csectTOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%pB: Data Directory size (%lx) exceeds space left in section (%)%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ â€ž% >= %â€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ñ�Ð° â€ž%#â€œ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð±ÐµÐ· ÑƒÐ½Ð¾Ñ�Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ â€žR_SH_USESâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_SH_USESâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ â€žinsnâ€œ %#x%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€žR_SH_USESâ€œ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ˜Ðµ Ñƒ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žCOUNTâ€œ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜%pB: %#: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %d Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ %#%pB: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ð·Ð° %%pB: Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB(%pA) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° (%# Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°) Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ (%# Ð±Ð°Ñ˜Ñ‚Ð°)Ð³Ñ€ÐµÑˆÐºÐ°: %pB(%pA) Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ (%# Ð±Ð°Ñ˜Ñ‚Ð°)â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ (%) Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¸Ð»Ð¸ Ñ˜ÐµÐ´Ð½Ð°Ðº Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ %s (%)â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (%) Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼ÐµÑ’ÑƒÐ¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° â€ž%â€œâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ€ÐµÐ´Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸ (%)â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ€ÐµÐ´Ð° Ñ˜Ðµ Ð²ÐµÑ›Ð¸ (%#) Ð¾Ð´ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð»Ð¾Ð³ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ (%#lx)â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žaltâ€œ ÑƒÐ¿ÑƒÑ‚Ñƒ %â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ Ð°Ð¿Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð°Ðº â€žDIEâ€œ ÑƒÐ¿ÑƒÑ‚Ðµ %%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°: %%pB(%pA+%#): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ â€ž%u >= %â€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ: %#%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pA lma %#â€œ Ñ˜Ðµ Ð´Ð¾Ñ‚ÐµÑ€Ð°Ð½ Ð½Ð° %#%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¿Ð¾Ð´ÐµÐ¾Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ñ˜Ðµ Ð½Ð° â€žvaddr=%#â€œ, Ð´Ð° Ð»Ð¸ Ñ˜Ðµ Ñ‚Ð¾ Ð½Ð°Ð¼ÐµÑ€Ð°Ð²Ð°Ð½Ð¾?%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° Ð·Ð° â€ž%#â€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾%pB(%pA+%#): â€žCMEMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾, â€ž16 MSBâ€œ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ â€ž%#xâ€œ (Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ñ˜Ðµ %#)%pB(%pA+%#): â€žCMEMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° â€ž%s+%#â€œ Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾, â€ž16 MSBâ€œ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ â€ž%#xâ€œ (Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ñ˜Ðµ %#)Ð“Ð Ð•Ð¨ÐšÐ�: â€žCMSEâ€œ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº (Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ) Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð´Ð°Ð»ÐµÐºÐ¾ (%#) Ð¾Ð´ Ð¿Ð´Ñ€ÐµÐ´Ð¸ÑˆÑ‚Ð° (%#)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#lxâ€œ Ñƒ â€žTLSâ€œ Ñ‚Ñ€Ð°Ð¼Ð±ÑƒÐ»Ð¸Ð½Ð¸%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#lxâ€œ Ð½Ð° ÐºÐ¾Ñ˜Ñƒ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žTLS_GOTDESCâ€œ%pB(%pA+%#): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°%pB(%pA+%#): Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ðµ Ñ�Ñƒ Ñ�Ð°Ð¼Ð¾ â€žADDâ€œ Ð¸Ð»Ð¸ â€žSUBâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€žALUâ€œ Ð³Ñ€ÑƒÐ¿Ðµ%pB(%pA+%#): Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð´ÐµÑ™ÐµÑšÐ° %# Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð³Ñ€ÑƒÐ¿Ðµ â€ž%sâ€œ%pB(%pA+%#): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSEC_MERGEâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°%pB(%pA+%#): â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ�Ð° â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%sâ€œ%pB(%pA+%#): â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ�Ð° â€žÐ½Ðµ-TLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%sâ€œ%pB(%#): Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žSTM32L4XXâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ; Ð¸Ñ�ÐºÐ¾Ñ‡Ð¸Ñ… Ð¸Ð· Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° % Ð±Ð°Ñ˜Ñ‚Ð°; Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ Ð³Ñ€Ð°Ð½Ðµ%pB(%pA+%#): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB(%pA+%#): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° â€ž%pA+%#â€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ % Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ % Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB(%pA+%#): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ñ�Ñ‚Ð¸Ð³Ð½ÐµÐ¼ â€ž%sâ€œ, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-ffunction-sectionsâ€œ%pB(%pA+%#): Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° â€ž%sâ€œ Ð·Ð° â€žinsn %#xâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñƒ Ð½Ðµ-Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð²ÐµÐ·Ð¸%pB(%pA+%#): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ%pB: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾ â€žTLSâ€œ Ð¿Ñ€ÐµÐ»Ð°Ð· Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð¿Ñ€Ð¸ %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€žip2kâ€œ: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð½Ð° %# (Ñ†Ð¸Ñ™ = %#)ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€žip2kâ€œ: Ñ�ÑƒÐ²Ð¸ÑˆÐ½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð½Ð° %# (Ñ†Ð¸Ñ™ = %#)%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %#Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ %# ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾
+Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ñ�Ñ‚Ð¸Ð³Ð½ÐµÐ¼ â€ž%sâ€œ (Ð½Ð° %#) Ð¸Ð· Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° (Ð½Ð° %#) Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ (%) Ð¸Ð·Ð²Ð°Ð½ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾Ð³ Ð¾Ð¿Ñ�ÐµÐ³Ð°, Ð¾Ð´ -32678 Ð´Ð¾ 32767
+%pB(%pA+%#): Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ñ�Ð° Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼ â€ž%#xâ€œ%pB(%pA): Ð½ÐµÑ�Ð¸Ð³ÑƒÑ€Ð½Ð¾ â€žPIDâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð° %# (Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñƒ â€ž%sâ€œ)%pB(%pA+%#): Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ð·Ð° â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ%pB: â€žCALL15â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %# Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_SH_USESâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð»Ð°Ðº 0x%x%pB: %#: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ñ†Ð¸Ñ™ Ð³Ñ€Ð°Ð½Ðµ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°%pB: %#: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ %#%pB: %#: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: â€žR_SH_PSHAâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%#â€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ñƒ -32..32%pB: %#: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: â€žR_SH_PSHLâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%#â€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ñƒ -32..32%pB(%pA+%#): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÐ½ÐµÑ�ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ%pB(%pA+%#): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB(%pA): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð·Ð° â€žGD->LEâ€œ Ð¿Ñ€ÐµÐ²Ð¾Ð´ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸: %#%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xd4??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xc7??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xd1??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x310c??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x410b??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x34cc??)%pB(%pA): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð·Ð° â€žIE->LEâ€œ Ð¿Ñ€ÐµÐ²Ð¾Ð´ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸: %#%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xd0??: mov.l)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x0?12: stc)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x0?ce: mov.l)%pB(%pA): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð·Ð° â€žGD->IEâ€œ Ð¿Ñ€ÐµÐ²Ð¾Ð´ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸: %#%pB(%pA): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð·Ð° â€žLD->LEâ€œ Ð¿Ñ€ÐµÐ²Ð¾Ð´ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸: %#%pB(%s+%#): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð½Ð°Ðº%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%#xâ€œ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%#â€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žGOTâ€œ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº â€ž%â€œ-Ð° Ð·Ð° â€ž%sâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾Ð¼ â€žGOTâ€œ Ñ�Ð°Ð±Ð¸Ñ€ÐºÑƒ â€ž%â€œ-Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žPLTâ€œ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº â€ž%â€œ-Ð° Ð·Ð° â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ %# Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ%pB(%pA+%#): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°=%#)%pB(%pA+%#): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ; Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾%pB(%pA+%#): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ Ð·Ð° â€žXTENSA_ASM_SIMPLIFYâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ; Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° Ð·Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ%pB: %pA+%#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð³ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð·Ð½Ð°ÐºÐ°ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð·Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð° â€ž.pltâ€œ, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ â€ždpâ€œ = %%pB(%pA+%#): Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ñ�Ñ‚Ð¸Ñ›Ð¸ â€ž%sâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼ â€žbrâ€œ Ð½Ð° %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ â€žbrlâ€œ Ð¸Ð»Ð¸ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ð³Ñ€Ð°Ð½Ñƒ%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° ÐºÑ€Ð°Ñ‚ÐºÐ¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (%# >= 0x400000)%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€žTLSâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð½Ð° %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ.%pB: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼ â€žbrâ€œ (%s) Ñƒ â€ž%sâ€œ Ð½Ð° %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¾Ð¼ %# (> 0x1000000).ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ð¸Ð· â€ž%â€œ Ñƒ â€ž%pBâ€œ Ñƒ â€ž%â€œ Ñƒ â€ž%pBâ€œ%pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%â€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld%pB: Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð·Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð·Ð°
+ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡ÐµÐ¼: Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾: %# != Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾: %#%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° â€žLOCALâ€œ: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ â€ž$%â€œ Ð½Ð¸Ñ˜Ðµ Ð¼ÐµÑ�Ð½Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€; Ð¿Ñ€Ð²Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ñ˜Ðµ â€ž$%â€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð¸Ð¼Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº: %%pB: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº %s%#x Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð° %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%pB: Ð±Ñ€Ð¾Ñ˜ Ð¸Ð·Ð´Ð°ÑšÐ° (%) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (%ld)ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¾: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜ÐµÐ·Ð³Ñ€Ð° >= %, Ð½Ð°Ñ’Ð¾Ñ…: %%pB: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° (%# >= %#lx) Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ%pB: Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (%#) Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ°Ð´Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ¼Ð° Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (%#) Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½Ðµ-Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»%pB: %pA+%#: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° â€žINHERITâ€œ%pB: Ð½ÐµÑ‚Ð°Ñ‡Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€ž.reginfoâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°; Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… %, Ð°Ð»Ð¸ Ð´Ð¾Ð±Ð¸Ñ… %%pB: â€žGOTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %# Ð½Ð¸Ñ˜Ðµ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ñƒ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸Ð¼%pB: â€žCALL16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %# Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÑƒÐ¿Ð¾Ñ€ÐµÑ’ÑƒÑ˜ÑƒÑ›Ðµ â€žLO16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ Ð½Ð° %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ%pB: â€ž%pAâ€œ ÑƒÐ½Ð¾Ñ� â€žVMAâ€œ Ð¾Ð´ %# Ð²Ð°Ð½ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ â€ž-Ttext-segment=...â€œ%pB: â€ž%pAâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ % Ð¸Ð· â€ž%pAâ€œ Ð¸Ð·Ð° Ð¾Ð¿Ñ�ÐµÐ³Ð° â€žADDIUPCâ€œ%pB: â€ž%pAâ€œ Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº â€žVMAâ€œ Ð¾Ð´ %# Ð²Ð°Ð½ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ â€ž-Ttext-segment=...â€œ%pB 64-Ð±Ð¸Ñ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° %# Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ñƒ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ%pB: Ð°Ð´Ñ€ÐµÑ�Ð° %# Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ñƒ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒÐ°Ð´Ñ€ÐµÑ�Ð° Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° (%#) Ñ˜Ðµ Ð¸Ñ�Ð¿Ð¾Ð´ Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ° Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° (%#)%pB: Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð¸Ð·Ð° ÐºÑ€Ð°Ñ˜Ð° Ñ�Ñ‚Ð¾Ð¿Ñ™ÐµÐ½Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° (%)%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ… Ð´Ð° ÐµÐ¼Ð¸Ñ‚ÑƒÑ˜ÐµÐ¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ ÐºÐ¾Ñ˜Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ 4 â€ž%#â€œ%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð¸Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€Ð°; Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° %%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð° Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ðµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÑƒÐ¶Ð¸Ð½Ðµ %: %#%pB: Ð»Ð¾Ñˆ â€žXTY_ERâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ñ†Ð±Ñ€Ð¾Ñ˜ %d Ñ�Ñ†Ð½Ð´ÑƒÐ¶Ð¸Ð½Ðµ %%pB: â€žXMC_TC0â€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ñ†Ð½Ð´ÑƒÐ¶Ð¸Ð½Ðµ %%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s:%â€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ†-Ð¾Ð´ÐµÑ™ÐºÑƒÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°: %# > 0x10000; Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ñ�Ð° â€ž-mminimal-tocâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°%pB(%pA+%#): % Ð±Ð°Ñ˜Ñ‚Ð° Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½Ð° %-Ð±Ð°Ñ˜Ñ‚Ð½Ñƒ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ, Ð°Ð»Ð¸ Ñ�Ð°Ð¼Ð¾ % Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð½Ð¾%pB: Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (%lx) Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€ Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð¾ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ (%)
\ No newline at end of file
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/sr.po ./bfd/po/sr.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/sr.po	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/po/sr.po	2021-05-21 01:57:23.000000000 +0000
@@ -1,594 +1,694 @@
-# Messages franÃ§ais pour GNU concernant bfd.
-# Copyright (C) 2014 Free Software Foundation, Inc.
+# Serbian  translation of bfd.
+# Copyright Â© 2014 Free Software Foundation, Inc.
 # This file is distributed under the same license as the binutils package.
-# ÐœÐ¸Ñ€Ð¾Ñ�Ð»Ð°Ð² Ð�Ð¸ÐºÐ¾Ð»Ð¸Ñ› <miroslavnikolic@rocketmail.com>, 2016.
+# ÐœÐ¸Ñ€Ð¾Ñ�Ð»Ð°Ð² Ð�Ð¸ÐºÐ¾Ð»Ð¸Ñ› <miroslavnikolic@rocketmail.com>, 2016â€“2020.
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd-2.24.90\n"
+"Project-Id-Version: bfd-2.34.90\n"
 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2014-02-10 09:42+1030\n"
-"PO-Revision-Date: 2016-05-29 17:48+0200\n"
+"POT-Creation-Date: 2020-07-04 10:26+0100\n"
+"PO-Revision-Date: 2020-07-30 10:38+0200\n"
 "Last-Translator: ÐœÐ¸Ñ€Ð¾Ñ�Ð»Ð°Ð² Ð�Ð¸ÐºÐ¾Ð»Ð¸Ñ› <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
 "Language: sr\n"
-"X-Bugs: Report translation errors to the Language-Team address.\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Virtaal 0.7.1\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 
-#: aout-adobe.c:127
-msgid "%B: Unknown section type in a.out.adobe file: %x\n"
-msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€ža.out.adobeâ€œ: %x\n"
-
-#: aout-cris.c:200
-#, c-format
-msgid "%s: Invalid relocation type exported: %d"
-msgstr "%s: Ð˜Ð·Ð²ÐµÐ·ÐµÐ½Ð° Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d"
-
-#: aout-cris.c:243
-msgid "%B: Invalid relocation type imported: %d"
-msgstr "%B: Ð£Ð²ÐµÐ·ÐµÐ½Ð° Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d"
+#: aout-cris.c:196
+#, c-format
+msgid "%pB: unsupported relocation type exported: %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð¸Ð·Ð²ÐµÐ·ÐµÐ½Ð°: %#x"
+
+#: aout-cris.c:242
+#, c-format
+msgid "%pB: unsupported relocation type imported: %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ ÑƒÐ²ÐµÐ·ÐµÐ½Ð°: %#x"
 
 #: aout-cris.c:254
-msgid "%B: Bad relocation record imported: %d"
-msgstr "%B: Ð£Ð²ÐµÐ·ÐµÐ½ Ñ˜Ðµ Ð»Ð¾Ñˆ Ñ�Ð½Ð¸Ð¼Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d"
+#, c-format
+msgid "%pB: bad relocation record imported: %d"
+msgstr "%pB: ÑƒÐ²ÐµÐ·ÐµÐ½ Ñ˜Ðµ Ð»Ð¾Ñˆ Ñ�Ð½Ð¸Ð¼Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d"
 
-#: aoutx.h:1273 aoutx.h:1611
+#: aoutx.h:1265 aoutx.h:1613 pdp11.c:1236 pdp11.c:1510
 #, c-format
-msgid "%s: can not represent section `%s' in a.out object file format"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ â€ža.outâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+msgid "%pB: can not represent section `%pA' in a.out object file format"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ â€ža.outâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
 
-#: aoutx.h:1577
+#: aoutx.h:1577 pdp11.c:1482
 #, c-format
-msgid "%s: can not represent section for symbol `%s' in a.out object file format"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ža.outâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+msgid "%pB: can not represent section for symbol `%s' in a.out object file format"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ža.outâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
 
-#: aoutx.h:1579 vms-alpha.c:7564
+#: aoutx.h:1580 vms-alpha.c:8040
 msgid "*unknown*"
 msgstr "*Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾*"
 
-#: aoutx.h:4018 aoutx.h:4344
-msgid "%P: %B: unexpected relocation type\n"
-msgstr "%P: %B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°\n"
+#: aoutx.h:1716 pdp11.c:1578
+#, c-format
+msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ â€ž%<PRIu64> >= %<PRIu64>â€œ"
+
+#: aoutx.h:1963
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€žAOUTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d"
+
+#: aoutx.h:2412 aoutx.h:2430 pdp11.c:2058
+#, c-format
+msgid "%pB: attempt to write out unknown reloc type"
+msgstr "%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+
+#: aoutx.h:4087 pdp11.c:3441
+#, c-format
+msgid "%pB: unsupported relocation type"
+msgstr "%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+
+#. Unknown relocation.
+#: aoutx.h:4408 coff-alpha.c:601 coff-alpha.c:1512 coff-rs6000.c:2758
+#: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:279 elf-hppa.h:798
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:532
+#: elf32-arm.c:1985 elf32-avr.c:962 elf32-bfin.c:1062 elf32-bfin.c:4677
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:990 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:372 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6239 elf32-ft32.c:306 elf32-h8300.c:302 elf32-i386.c:400
+#: elf32-ip2k.c:1240 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2232 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:389 elf32-metag.c:874 elf32-microblaze.c:692
+#: elf32-microblaze.c:965 elf32-mips.c:2229 elf32-moxie.c:137
+#: elf32-msp430.c:653 elf32-msp430.c:663 elf32-mt.c:241 elf32-nds32.c:3237
+#: elf32-nds32.c:3263 elf32-nds32.c:5033 elf32-nios2.c:3022 elf32-or1k.c:1040
+#: elf32-pj.c:326 elf32-ppc.c:901 elf32-ppc.c:914 elf32-pru.c:423
+#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:296
+#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:163 elf32-tic6x.c:1498
+#: elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537 elf32-tic6x.c:2583
+#: elf32-tilepro.c:800 elf32-v850.c:1898 elf32-v850.c:1920 elf32-v850.c:4270
+#: elf32-vax.c:290 elf32-visium.c:481 elf32-wasm32.c:105 elf32-xc16x.c:250
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:522
+#: elf32-xtensa.c:556 elf32-z80.c:331 elf64-alpha.c:1113 elf64-alpha.c:4067
+#: elf64-alpha.c:4215 elf64-bpf.c:322 elf64-ia64-vms.c:254
+#: elf64-ia64-vms.c:3429 elf64-mips.c:3958 elf64-mips.c:3974 elf64-mmix.c:1264
+#: elf64-nfp.c:238 elf64-ppc.c:1014 elf64-ppc.c:1366 elf64-ppc.c:1375
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:281 elfn32-mips.c:3786
+#: elfxx-ia64.c:324 elfxx-riscv.c:954 elfxx-sparc.c:589 elfxx-sparc.c:639
+#: elfxx-tilegx.c:909 elfxx-tilegx.c:949 elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2313 elfnn-ia64.c:213 elfnn-ia64.c:3824
+#, c-format
+msgid "%pB: unsupported relocation type %#x"
+msgstr "%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° â€ž%#xâ€œ"
+
+#: aoutx.h:5435 pdp11.c:3864
+#, c-format
+msgid "%pB: relocatable link from %s to %s not supported"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð²ÐµÐ·Ð° Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
 
-#: aoutx.h:5375
+#: arc-got.h:69
 #, c-format
-msgid "%s: relocatable link from %s to %s not supported"
-msgstr "%s: Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð²ÐµÐ·Ð° Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ Ð·Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ â€žGOTâ€œ ÑƒÐ½Ð¾Ñ�Ð¸"
 
 #: archive.c:2249
-msgid "Warning: writing archive was slow: rewriting timestamp\n"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ¿Ð¸Ñ� Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ñƒ Ñ˜Ðµ Ñ�Ð¿Ð¾Ñ€: Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÑƒÐ¿Ð¸Ñ�ÑƒÑ˜ÐµÐ¼ Ð²Ñ€ÐµÐ¼Ðµ\n"
+msgid "warning: writing archive was slow: rewriting timestamp"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ¿Ð¸Ñ� Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ñƒ Ñ˜Ðµ Ñ�Ð¿Ð¾Ñ€: Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÑƒÐ¿Ð¸Ñ�ÑƒÑ˜ÐµÐ¼ Ð²Ñ€ÐµÐ¼Ðµ"
+
+#: archive.c:2316 archive.c:2376 elflink.c:4545 linker.c:1428
+#, c-format
+msgid "%pB: plugin needed to handle lto object"
+msgstr "%pB: Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ˜Ðµ Ð¿Ñ€Ð¸ÐºÑ™ÑƒÑ‡Ð°Ðº Ð·Ð° Ñ€ÑƒÐºÐ¾Ð²Ð°ÑšÐµ â€žltoâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¾Ð¼"
 
-#: archive.c:2549
+#: archive.c:2602
 msgid "Reading archive file mod timestamp"
 msgstr "Ð§Ð¸Ñ‚Ð°Ð¼ Ð²Ñ€ÐµÐ¼Ðµ Ñ€ÐµÐ¶Ð¸Ð¼Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°Ñ€Ñ…Ð¸Ð²Ðµ"
 
-#: archive.c:2573
+#: archive.c:2626
 msgid "Writing updated armap timestamp"
 msgstr "Ð£Ð¿Ð¸Ñ�ÑƒÑ˜ÐµÐ¼ Ð¾Ñ�Ð²ÐµÐ¶ÐµÐ½Ð¾ Ð²Ñ€ÐµÐ¼Ðµ Ð°Ñ€Ð¼Ð°Ð¿Ð°"
 
-#: bfd.c:411
-msgid "No error"
-msgstr "Ð�ÐµÐ¼Ð° Ð³Ñ€ÐµÑˆÐºÐµ"
-
-#: bfd.c:412
-msgid "System call error"
-msgstr "Ð“Ñ€ÐµÑˆÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ�ÐºÐ¾Ð³ Ð¿Ð¾Ð·Ð¸Ð²Ð°"
-
-#: bfd.c:413
-msgid "Invalid bfd target"
-msgstr "Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ†Ð¸Ñ™ Ð±Ñ„Ð´-Ð°"
-
-#: bfd.c:414
-msgid "File in wrong format"
-msgstr "Ð”Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ"
-
-#: bfd.c:415
-msgid "Archive object file in wrong format"
-msgstr "Ð”Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð°Ñ€Ñ…Ð¸Ð²Ðµ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ"
-
-#: bfd.c:416
-msgid "Invalid operation"
-msgstr "Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð°"
-
-#: bfd.c:417
-msgid "Memory exhausted"
-msgstr "ÐœÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�Ñ†Ñ€Ð¿Ñ™ÐµÐ½Ð°"
-
-#: bfd.c:418
-msgid "No symbols"
-msgstr "Ð�ÐµÐ¼Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
-
-#: bfd.c:419
-msgid "Archive has no index; run ranlib to add one"
-msgstr "Ð�Ñ€Ñ…Ð¸Ð²Ð° Ð½ÐµÐ¼Ð° Ð¸Ð½Ð´ÐµÐºÑ�; Ð¿Ð¾ÐºÑ€ÐµÐ½Ð¸Ñ‚Ðµ â€žranlibâ€œ Ð´Ð° Ð³Ð° Ð´Ð¾Ð´Ð°Ñ‚Ðµ"
-
-#: bfd.c:420
-msgid "No more archived files"
-msgstr "Ð�ÐµÐ¼Ð° Ð²Ð¸ÑˆÐµ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð°Ð½Ð¸Ñ… Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°"
-
-#: bfd.c:421
-msgid "Malformed archive"
-msgstr "Ð›Ð¾ÑˆÐ° Ð°Ñ€Ñ…Ð¸Ð²Ð°"
+#: bfd.c:677
+msgid "no error"
+msgstr "Ð½ÐµÐ¼Ð° Ð³Ñ€ÐµÑˆÐºÐµ"
+
+#: bfd.c:678
+msgid "system call error"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ�ÐºÐ¾Ð³ Ð¿Ð¾Ð·Ð¸Ð²Ð°"
+
+#: bfd.c:679
+msgid "invalid bfd target"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ†Ð¸Ñ™ Ð±Ñ„Ð´-Ð°"
+
+#: bfd.c:680
+msgid "file in wrong format"
+msgstr "Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ"
+
+#: bfd.c:681
+msgid "archive object file in wrong format"
+msgstr "Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð°Ñ€Ñ…Ð¸Ð²Ðµ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ"
+
+#: bfd.c:682
+msgid "invalid operation"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð°"
+
+#: bfd.c:683
+msgid "memory exhausted"
+msgstr "Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�Ñ†Ñ€Ð¿Ñ™ÐµÐ½Ð°"
+
+#: bfd.c:684
+msgid "no symbols"
+msgstr "Ð½ÐµÐ¼Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: bfd.c:685
+msgid "archive has no index; run ranlib to add one"
+msgstr "Ð°Ñ€Ñ…Ð¸Ð²Ð° Ð½ÐµÐ¼Ð° Ð¸Ð½Ð´ÐµÐºÑ�; Ð¿Ð¾ÐºÑ€ÐµÐ½Ð¸Ñ‚Ðµ â€žranlibâ€œ Ð´Ð° Ð³Ð° Ð´Ð¾Ð´Ð°Ñ‚Ðµ"
+
+#: bfd.c:686
+msgid "no more archived files"
+msgstr "Ð½ÐµÐ¼Ð° Ð²Ð¸ÑˆÐµ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð°Ð½Ð¸Ñ… Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°"
+
+#: bfd.c:687
+msgid "malformed archive"
+msgstr "Ð»Ð¾ÑˆÐ° Ð°Ñ€Ñ…Ð¸Ð²Ð°"
 
-#: bfd.c:422
+#: bfd.c:688
 msgid "DSO missing from command line"
-msgstr "Ð”Ð¡Ðž Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½Ð° Ð»Ð¸Ð½Ð¸Ñ˜Ð¸ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸"
+msgstr "â€žDSOâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½Ð° Ð»Ð¸Ð½Ð¸Ñ˜Ð¸ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸"
 
-#: bfd.c:423
-msgid "File format not recognized"
-msgstr "Ð—Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚"
+#: bfd.c:689
+msgid "file format not recognized"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚"
 
-#: bfd.c:424
-msgid "File format is ambiguous"
-msgstr "Ð—Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜Ðµ Ð½ÐµÑ˜Ð°Ñ�Ð°Ð½"
+#: bfd.c:690
+msgid "file format is ambiguous"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜Ðµ Ð½ÐµÑ˜Ð°Ñ�Ð°Ð½"
 
-#: bfd.c:425
-msgid "Section has no contents"
-msgstr "ÐžÐ´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ðµ"
+#: bfd.c:691
+msgid "section has no contents"
+msgstr "Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ðµ"
 
-#: bfd.c:426
-msgid "Nonrepresentable section on output"
-msgstr "Ð�Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸ÐºÐ°Ð·Ð°Ñ‚Ð¸"
+#: bfd.c:692
+msgid "nonrepresentable section on output"
+msgstr "Ð½Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸ÐºÐ°Ð·Ð°Ñ‚Ð¸"
 
-#: bfd.c:427
-msgid "Symbol needs debug section which does not exist"
-msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° ÑƒÐºÐ»Ð°ÑšÐ°ÑšÐµ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° ÐºÐ¾Ñ˜Ð¸ Ð½Ðµ Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ˜Ð¸"
+#: bfd.c:693
+msgid "symbol needs debug section which does not exist"
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° ÑƒÐºÐ»Ð°ÑšÐ°ÑšÐµ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° ÐºÐ¾Ñ˜Ð¸ Ð½Ðµ Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ˜Ð¸"
 
-#: bfd.c:428
-msgid "Bad value"
-msgstr "ÐŸÐ¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚"
+#: bfd.c:694
+msgid "bad value"
+msgstr "Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚"
 
-#: bfd.c:429
-msgid "File truncated"
-msgstr "Ð”Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¾ÐºÑ€ÑšÐµÐ½Ð°"
+#: bfd.c:695
+msgid "file truncated"
+msgstr "Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¾ÐºÑ€ÑšÐµÐ½Ð°"
 
-#: bfd.c:430
-msgid "File too big"
-msgstr "Ð”Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°"
+#: bfd.c:696
+msgid "file too big"
+msgstr "Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°"
 
-#: bfd.c:431
+#: bfd.c:697
+msgid "sorry, cannot handle this file"
+msgstr "Ð¸Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ, Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð¾Ð²Ð¾Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼"
+
+#: bfd.c:698
 #, c-format
-msgid "Error reading %s: %s"
-msgstr "Ð“Ñ€ÐµÑˆÐºÐ° Ñ‡Ð¸Ñ‚Ð°ÑšÐ° â€ž%sâ€œ: %s"
+msgid "error reading %s: %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ñ‡Ð¸Ñ‚Ð°ÑšÐ° â€ž%sâ€œ: %s"
 
-#: bfd.c:432
-msgid "#<Invalid error code>"
-msgstr "#<Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð³Ñ€ÐµÑˆÐºÐµ>"
+#: bfd.c:699
+msgid "#<invalid error code>"
+msgstr "#<Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð³Ñ€ÐµÑˆÐºÐµ>"
 
-#: bfd.c:1046
+#: bfd.c:1658
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "â€žBFDâ€œ â€ž%sâ€œ Ñ‚Ð²Ñ€Ð´ÑšÐ° Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð° â€ž%sâ€œ:%d"
 
-#: bfd.c:1058
+#: bfd.c:1671
 #, c-format
-msgid "BFD %s internal error, aborting at %s line %d in %s\n"
-msgstr "Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð”-Ð° %s, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð¿Ñ€Ð¸ â€ž%sâ€œ %d. Ñ€ÐµÐ´Ñƒ Ñƒ â€ž%sâ€œ\n"
+msgid "BFD %s internal error, aborting at %s:%d in %s\n"
+msgstr "Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° â€žBFDâ€œ %s, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð½Ð° â€ž%sâ€œ %d. Ñ€ÐµÐ´Ñƒ Ñƒ â€ž%sâ€œ\n"
 
-#: bfd.c:1062
+#: bfd.c:1676
 #, c-format
-msgid "BFD %s internal error, aborting at %s line %d\n"
-msgstr "Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð”-Ð° %s, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð¿Ñ€Ð¸ â€ž%sâ€œ %d. Ñ€ÐµÐ´Ñƒ\n"
+msgid "BFD %s internal error, aborting at %s:%d\n"
+msgstr "Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° â€žBFDâ€œ %s, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð¿Ñ€Ð¸ â€ž%sâ€œ %d. Ñ€ÐµÐ´Ñƒ\n"
 
-#: bfd.c:1064
+#: bfd.c:1678
 msgid "Please report this bug.\n"
 msgstr "ÐŸÑ€Ð¸Ñ˜Ð°Ð²Ð¸Ñ‚Ðµ Ð¾Ð²Ñƒ Ð³Ñ€ÐµÑˆÐºÑƒ.\n"
 
-#: bfdwin.c:206
+#: bfdwin.c:207
 #, c-format
 msgid "not mapping: data=%lx mapped=%d\n"
-msgstr "Ð½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº=%lx  Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð½=%d\n"
+msgstr "Ð½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº=%lx Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð½=%d\n"
 
-#: bfdwin.c:209
+#: bfdwin.c:210
 #, c-format
 msgid "not mapping: env var not set\n"
 msgstr "Ð½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° Ð¾ÐºÑ€ÑƒÐ¶ÐµÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð°\n"
 
-#: binary.c:271
+#: binary.c:276
 #, c-format
-msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx."
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð£Ð¿Ð¸Ñ� Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº (Ð½Ð¿Ñ€. Ð½ÐµÐ³Ð°Ñ‚Ð¸Ð²Ð°Ð½) Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ 0x%lx."
-
-#: bout.c:1146 elf-m10300.c:2665 elf32-avr.c:1706 elf32-frv.c:5641
-#: elf64-ia64-vms.c:354 elfxx-sparc.c:2869 reloc.c:7324 reloc16.c:160
-#: elf32-ia64.c:351 elf64-ia64.c:351
-msgid "%P%F: --relax and -r may not be used together\n"
-msgstr "%P%F: â€ž--relaxâ€œ Ð¸ â€ž-râ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾\n"
-
-#: cache.c:253
-msgid "reopening %B: %s\n"
-msgstr "Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¾Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€ž%Bâ€œ: %s\n"
+msgid "warning: writing section `%pA' at huge (ie negative) file offset"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº ÑƒÐ¿Ð¸Ñ�Ð¸Ð²Ð°ÑšÐ° â€ž%pAâ€œ Ð½Ð° Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾Ð¼ (Ð½Ð¿Ñ€. Ð½ÐµÐ³Ð°Ñ‚Ð¸Ð²Ð°Ð½) Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ"
 
-#: coff-alpha.c:452
-msgid ""
-"%B: Cannot handle compressed Alpha binaries.\n"
-"   Use compiler flags, or objZ, to generate uncompressed binaries."
-msgstr ""
-"%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ñ�Ð°Ð¶ÐµÑ‚Ð¸Ð¼ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð¸Ð¼ Ð�Ð»Ñ„Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°.\n"
-"   ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð¾Ñ†Ð°, Ð¸Ð»Ð¸ â€žobjZâ€œ, Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð½ÐµÑ�Ð°Ð¶ÐµÑ‚Ðµ Ð±Ð¸Ð½Ð°Ñ€Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ."
+#: cache.c:271
+#, c-format
+msgid "reopening %pB: %s\n"
+msgstr "Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¾Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€ž%pBâ€œ: %s\n"
 
-#: coff-alpha.c:603
-msgid "%B: unknown/unsupported relocation type %d"
-msgstr "%B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð°/Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+#: coff-alpha.c:450
+#, c-format
+msgid "%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ñ�Ð°Ð¶ÐµÑ‚Ð¸Ð¼ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð¸Ð¼ Ð�Ð»Ñ„Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð¾Ñ†Ð°, Ð¸Ð»Ð¸ â€žobjZâ€œ, Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð½ÐµÑ�Ð°Ð¶ÐµÑ‚Ðµ Ð±Ð¸Ð½Ð°Ñ€Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ"
 
-#: coff-alpha.c:852 coff-alpha.c:889 coff-alpha.c:1973 coff-mips.c:946
+#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1954 coff-mips.c:953
 msgid "GP relative relocation used when GP not defined"
-msgstr "Ð£Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ˜Ðµ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
+msgstr "ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ˜Ðµ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: coff-alpha.c:1450
+#: coff-alpha.c:1441
 msgid "using multiple gp values"
 msgstr "ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°"
 
-#: coff-alpha.c:1509
-msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH"
-msgstr "%B: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: â€žALPHA_R_GRELHIGHâ€œ"
+#: coff-alpha.c:1499 coff-alpha.c:1505 elf.c:9431 elf32-mcore.c:100
+#: elf32-mcore.c:455 elf32-ppc.c:7596 elf32-ppc.c:8747 elf64-ppc.c:15962
+#, c-format
+msgid "%pB: %s unsupported"
+msgstr "%pB: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
 
-#: coff-alpha.c:1516
-msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW"
-msgstr "%B: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: â€žALPHA_R_GRELLOWâ€œ"
+#: coff-go32.c:156 coffswap.h:785
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff"
 
-#: coff-alpha.c:1523 elf32-m32r.c:2443 elf64-alpha.c:4083 elf64-alpha.c:4233
-#: elf64-ia64-vms.c:3429 elf32-ia64.c:3836 elf64-ia64.c:3836
-msgid "%B: unknown relocation type %d"
-msgstr "%B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+#: coff-mips.c:643 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
+#: elf64-mips.c:3451 elfn32-mips.c:3276
+msgid "GP relative relocation when _gp not defined"
+msgstr "Ð ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: coff-arm.c:1034
+#: coff-rs6000.c:2844
 #, c-format
-msgid "%B: unable to find THUMB glue '%s' for `%s'"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žTHUMBâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ñ�Ð° â€ž%#<PRIx64>â€œ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð±ÐµÐ· ÑƒÐ½Ð¾Ñ�Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°"
 
-#: coff-arm.c:1063
+#: coff-rs6000.c:3607 coff64-rs6000.c:2153
 #, c-format
-msgid "%B: unable to find ARM glue '%s' for `%s'"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žARMâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+msgid "%pB: symbol `%s' has unrecognized smclas %d"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ ÐºÐ»Ð°Ñ�Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%dâ€œ"
 
-#: coff-arm.c:1365 elf32-arm.c:7141
+#: coff-sh.c:778 elf32-sh.c:521
 #, c-format
-msgid ""
-"%B(%s): warning: interworking not enabled.\n"
-"  first occurrence: %B: arm call to thumb"
-msgstr ""
-"%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.\n"
-"  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žarmâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° â€žthumbâ€œ"
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ â€žR_SH_USESâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜"
 
-#: coff-arm.c:1455
+#: coff-sh.c:789
 #, c-format
-msgid ""
-"%B(%s): warning: interworking not enabled.\n"
-"  first occurrence: %B: thumb call to arm\n"
-"  consider relinking with --support-old-code enabled"
-msgstr ""
-"%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.\n"
-"  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žthumbâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° â€žarmâ€œ\n"
-"  Ñ€Ð°Ð·Ð¼Ð¾Ñ‚Ñ€Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ â€ž--support-old-codeâ€œ"
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_SH_USESâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ â€žinsnâ€œ %#x"
 
-#: coff-arm.c:1750 coff-tic80.c:673 cofflink.c:3168
-msgid "%B: bad reloc address 0x%lx in section `%A'"
-msgstr "%B: Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ"
+#: coff-sh.c:807 elf32-sh.c:552
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€žR_SH_USESâ€œ"
 
-#: coff-arm.c:2075
-msgid "%B: illegal symbol index in reloc: %d"
-msgstr "%B: Ð½ÐµÐ´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ: %d"
+#: coff-sh.c:832 elf32-sh.c:568
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: coff-arm.c:2206
+#: coff-sh.c:849 elf32-sh.c:597
 #, c-format
-msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° Ð�ÐŸÐ¦Ð¡-%d, Ð´Ð¾Ðº Ñ˜Ðµ â€ž%Bâ€œ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° Ð�ÐŸÐ¦Ð¡-%d"
+msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ˜Ðµ Ñƒ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
 
-#: coff-arm.c:2222 elf32-arm.c:16123
+#: coff-sh.c:975 elf32-sh.c:727
 #, c-format
-msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%Bâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸"
+msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žCOUNTâ€œ"
 
-#: coff-arm.c:2225 elf32-arm.c:16127
+#: coff-sh.c:985 elf32-sh.c:738
 #, c-format
-msgid "error: %B passes floats in integer registers, whereas %B passes them in float registers"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%Bâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸"
+msgid "%pB: %#<PRIx64>: warning: bad count"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜"
 
-#: coff-arm.c:2239
+#: coff-sh.c:1356 coff-sh.c:2644 elf32-sh.c:1138 elf32-sh.c:1505
 #, c-format
-msgid "error: %B is compiled as position independent code, whereas target %B is absolute position"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ ÐºÐ¾Ð´ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°, Ð´Ð¾Ðº Ñ˜Ðµ Ñ†Ð¸Ñ™ â€ž%Bâ€œ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜"
+msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
+msgstr "%pB: %#<PRIx64>: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
 
-#: coff-arm.c:2242
+#: coff-sh.c:1451
 #, c-format
-msgid "error: %B is compiled as absolute position code, whereas target %B is position independent"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ ÐºÐ¾Ð´ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°, Ð´Ð¾Ðº Ñ˜Ðµ Ñ†Ð¸Ñ™ â€ž%Bâ€œ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ñ‚Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°"
+msgid "%pB: fatal: generic symbols retrieved before relaxing"
+msgstr "%pB: ÐºÐ¾Ð±Ð½Ð¾: Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ½Ð¸ Ð¿Ñ€Ðµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
 
-#: coff-arm.c:2270 elf32-arm.c:16192
+#: coff-sh.c:2781 cofflink.c:2948
 #, c-format
-msgid "Warning: %B supports interworking, whereas %B does not"
-msgstr "Ð£ÐŸÐžÐ—ÐžÐ Ð•ÐŠÐ•: â€ž%Bâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%Bâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°"
+msgid "%pB: illegal symbol index %ld in relocs"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°"
 
-#: coff-arm.c:2273 elf32-arm.c:16198
+#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5085
 #, c-format
-msgid "Warning: %B does not support interworking, whereas %B does"
-msgstr "Ð£ÐŸÐžÐ—ÐžÐ Ð•ÐŠÐ•: â€ž%Bâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%Bâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°"
+msgid "%pB: warning: illegal symbol index %ld in relocs"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°"
 
-#: coff-arm.c:2297
+#: coffcode.h:961
 #, c-format
-msgid "private flags = %x:"
-msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ =%x:"
+msgid "%pB: unable to load COMDAT section name"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð¼ â€žCOMDATâ€œ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ°"
 
-#: coff-arm.c:2305 elf32-arm.c:12119
+#. Malformed input files can trigger this test.
+#. cf PR 21781.
+#: coffcode.h:996
 #, c-format
-msgid " [floats passed in float registers]"
-msgstr " [Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÐµÐ½Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸]"
+msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€žCOMDATâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ"
 
-#: coff-arm.c:2307
+#: coffcode.h:1008
 #, c-format
-msgid " [floats passed in integer registers]"
-msgstr " [Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÐµÐ½Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸]"
+msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žCOMDATâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð° Ñ�Ð° Ð½Ð°Ð·Ð¸Ð²Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
 
-#: coff-arm.c:2310 elf32-arm.c:12122
+#: coffcode.h:1018
 #, c-format
-msgid " [position independent]"
-msgstr " [Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ñ‚Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°]"
+msgid "%pB: warning: no symbol for section '%s' found"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#: coff-arm.c:2312
+#. Generate a warning message rather using the 'unhandled'
+#. variable as this will allow some .sys files generate by
+#. other toolchains to be processed.  See bugzilla issue 196.
+#: coffcode.h:1249
 #, c-format
-msgid " [absolute position]"
-msgstr " [Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜]"
+msgid "%pB: warning: ignoring section flag %s in section %s"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ"
 
-#: coff-arm.c:2316
+#: coffcode.h:1318
 #, c-format
-msgid " [interworking flag not initialised]"
-msgstr " [Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð°]"
+msgid "%pB (%s): section flag %s (%#lx) ignored"
+msgstr "%pB (%s): Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (%#lx) Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°"
 
-#: coff-arm.c:2318
+#: coffcode.h:1934 coffcode.h:1999
 #, c-format
-msgid " [interworking supported]"
-msgstr " [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾]"
+msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ñ‚Ð²Ñ€Ñ’ÑƒÑ˜ÐµÐ¼ 0xffff Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°, Ð±ÐµÐ· Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐ°"
 
-#: coff-arm.c:2320
+#: coffcode.h:2365
 #, c-format
-msgid " [interworking not supported]"
-msgstr " [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾]"
+msgid "unrecognized TI COFF target id '0x%x'"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¸Ð´ â€žTI COFFâ€œ Ñ†Ð¸Ñ™Ð° â€ž0x%xâ€œ"
 
-#: coff-arm.c:2366 elf32-arm.c:11104
+#: coffcode.h:2643
 #, c-format
-msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð�Ð¸Ñ�Ð°Ð¼ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%Bâ€œ Ð¿Ð¾ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð²ÐµÑ› Ð½Ð°Ð²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ Ð½ÐµÐ¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¾"
+msgid "%pB: reloc against a non-existent symbol index: %ld"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›ÐµÐ³ Ð¸Ð½Ð´ÐµÐºÑ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %ld"
 
-#: coff-arm.c:2370 elf32-arm.c:11108
+#: coffcode.h:2951
 #, c-format
-msgid "Warning: Clearing the interworking flag of %B due to outside request"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð£ÐºÐ»Ð°ÑšÐ°Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%Bâ€œ ÑƒÑ�Ð»ÐµÐ´ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ñ�Ð¿Ð¾Ñ™Ð°"
+msgid "%pB: page size is too large (0x%x)"
+msgstr "%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° (0x%x)"
 
-#: coff-h8300.c:1096
+#: coffcode.h:3111
 #, c-format
-msgid "cannot handle R_MEM_INDIRECT reloc when using %s output"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€žR_MEM_INDIRECTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ¼ ÐºÐ°Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ â€ž%sâ€œ Ð¸Ð·Ð»Ð°Ð·"
+msgid "%pB: too many sections (%d)"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%d)"
 
-#: coff-i860.c:147
+#: coffcode.h:3530
 #, c-format
-msgid "relocation `%s' not yet implemented"
-msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ˜Ð¾Ñˆ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+msgid "%pB: section %pA: string table overflow at offset %ld"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐ¸ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ %ld"
 
-#: coff-i860.c:605 coff-tic54x.c:365 coffcode.h:5209
-msgid "%B: warning: illegal symbol index %ld in relocs"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°"
+#: coffcode.h:3630
+#, c-format
+msgid "%pB:%s section %s: alignment 2**%u not representable"
+msgstr "%pB:%s Ð¾Ð´ÐµÑ™Ð°Ðº %s: Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ 2**%u Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚Ð¸"
 
-#: coff-i960.c:124 coff-i960.c:480
-msgid "uncertain calling convention for non-COFF symbol"
-msgstr "Ð½ÐµÑ�Ð¸Ð³ÑƒÑ€Ð°Ð½ Ð´Ð¾Ð³Ð¾Ð²Ð¾Ñ€ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ð·Ð° Ð½Ðµ-â€žCOFFâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
+#: coffcode.h:4329
+#, c-format
+msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð¾Ð²Ð° (%#lx) Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° (%#lx)"
 
-#: coff-m68k.c:484 elf32-bfin.c:5556 elf32-cr16.c:2853 elf32-m68k.c:4632
-msgid "unsupported reloc type"
-msgstr "Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+#: coffcode.h:4349
+#, c-format
+msgid "%pB: warning: line number table read failed"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ"
 
-#: coff-mips.c:636 elf32-mips.c:1637 elf32-score.c:431 elf32-score7.c:330
-#: elf64-mips.c:2925 elfn32-mips.c:2737
-msgid "GP relative relocation when _gp not defined"
-msgstr "Ð ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð“ÐŸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
+#: coffcode.h:4383 coffcode.h:4397
+#, c-format
+msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° 0x%lx Ñƒ ÑƒÐ½Ð¾Ñ�Ñƒ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° %d"
 
-#: coff-or32.c:216
-msgid "Unrecognized reloc"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: coffcode.h:4411
+#, c-format
+msgid "%pB: warning: illegal symbol in line number entry %d"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ ÑƒÐ½Ð¾Ñ�Ñƒ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° %d"
 
-#: coff-rs6000.c:2802
+#: coffcode.h:4424
 #, c-format
-msgid "%s: unsupported relocation type 0x%02x"
-msgstr "%s: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° 0x%02x"
+msgid "%pB: warning: duplicate line number information for `%s'"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº Ð¾ Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ€ÐµÐ´Ð° Ð·Ð° â€ž%sâ€œ"
 
-#: coff-rs6000.c:2887
+#: coffcode.h:4845
 #, c-format
-msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"
-msgstr "%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð½Ð° 0x%x Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÐºÐ¾Ñ˜Ð¸ Ð½Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² ÑƒÐ½Ð¾Ñ�"
+msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° ÐºÐ»Ð°Ñ�Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° â€ž%dâ€œ Ð·Ð° â€ž%sâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
 
-#: coff-rs6000.c:3638 coff64-rs6000.c:2117
-msgid "%B: symbol `%s' has unrecognized smclas %d"
-msgstr "%B: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ ÐºÐ»Ð°Ñ�Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%dâ€œ"
+#: coffcode.h:4975
+#, c-format
+msgid "warning: %pB: local symbol `%s' has no section"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: coff-sh.c:506
+#: coffcode.h:5125
 #, c-format
-msgid "SH Error: unknown reloc type %d"
-msgstr "Ð“Ñ€ÐµÑˆÐºÐ° ÑˆÐºÐ¾Ñ™ÐºÐµ: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %d Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ %#<PRIx64>"
 
-#: coff-tic4x.c:184 coff-tic54x.c:279 coff-tic80.c:440
+#: coffgen.c:179 elf.c:1236
 #, c-format
-msgid "Unrecognized reloc type 0x%x"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° 0x%x"
+msgid "%pB: unable to initialize compress status for section %s"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ�Ð°Ð¶Ð¸Ð¼Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#: coff-tic4x.c:227
+#: coffgen.c:203 elf.c:1247
 #, c-format
-msgid "%s: warning: illegal symbol index %ld in relocs"
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°"
+msgid "%pB: unable to initialize decompress status for section %s"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¸Ð²Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#: coff-w65.c:355
+#: coffgen.c:1704
 #, c-format
-msgid "ignoring reloc %s\n"
-msgstr "Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ\n"
+msgid "%pB: bad string table size %<PRIu64>"
+msgstr "%pB: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ð·Ð° %<PRIu64>"
 
-#: coffcode.h:1005
-msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žCOMDATâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð° Ñ�Ð° Ð½Ð°Ð·Ð¸Ð²Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
+#: coffgen.c:1876 coffgen.c:1936 coffgen.c:1954 cofflink.c:2024 elf.c:1921
+#: xcofflink.c:4500
+msgid "<corrupt>"
+msgstr "<Ð¾ÑˆÑ‚ÐµÑ›ÐµÑšÐµ>"
 
-#. Generate a warning message rather using the 'unhandled'
-#. variable as this will allow some .sys files generate by
-#. other toolchains to be processed.  See bugzilla issue 196.
-#: coffcode.h:1230
-msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s"
-msgstr "%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð—Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€žIMAGE_SCN_MEM_NOT_PAGEDâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ"
+#: coffgen.c:2085
+#, c-format
+msgid "<corrupt info> %s"
+msgstr "<Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸> %s"
 
-#: coffcode.h:1297
-msgid "%B (%s): Section flag %s (0x%x) ignored"
-msgstr "%B (%s): Ð—Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (0x%x) Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°"
+#: coffgen.c:2675 elflink.c:14624 linker.c:2956
+msgid "%F%P: already_linked_table: %E\n"
+msgstr "%F%P: Ð²ÐµÑ›_Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð°_Ñ‚Ð°Ð±ÐµÐ»Ð°: %E\n"
 
-#: coffcode.h:2439
+#: coffgen.c:3016 elflink.c:13617
 #, c-format
-msgid "Unrecognized TI COFF target id '0x%x'"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¸Ð´ â€žTI COFFâ€œ Ñ†Ð¸Ñ™Ð° â€ž0x%xâ€œ"
+msgid "removing unused section '%pA' in file '%pB'"
+msgstr "ÑƒÐºÐ»Ð°ÑšÐ°Ð¼ Ð½ÐµÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€ž%pBâ€œ"
 
-#: coffcode.h:2753
-msgid "%B: reloc against a non-existant symbol index: %ld"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›ÐµÐ³ Ð¸Ð½Ð´ÐµÐºÑ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %ld"
+#: coffgen.c:3093 elflink.c:13835
+msgid "warning: gc-sections option ignored"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð¿Ñ†Ð¸Ñ˜Ð° â€žgcâ€œ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°"
 
-#: coffcode.h:3311
-msgid "%B: too many sections (%d)"
-msgstr "%B: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%d)"
+#: cofflink.c:366
+#, c-format
+msgid "warning: symbol `%s' is both section and non-section"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: coffcode.h:3729
-msgid "%B: section %s: string table overflow at offset %ld"
-msgstr "%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐ¸ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ %ld"
+#: cofflink.c:471 elf64-ia64-vms.c:5200 elflink.c:5131
+#, c-format
+msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ð¸Ð· â€ž%dâ€œ Ñƒ â€ž%dâ€œ Ð·Ð° â€ž%pBâ€œ"
 
-#: coffcode.h:4534
-msgid "%B: warning: line number table read failed"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ"
+#: cofflink.c:2352
+#, c-format
+msgid "%pB: relocs in section `%pA', but it has no contents"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ, Ð°Ð»Ð¸ Ð½ÐµÐ¼Ð° Ð½Ð¸ÐºÐ°ÐºÐ²Ð¾Ð³ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°"
 
-#: coffcode.h:4564
-msgid "%B: warning: illegal symbol index %ld in line numbers"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð¸Ð¼Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°"
+#: cofflink.c:2415 elflink.c:11082
+#, c-format
+msgid "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB\n"
+msgstr "%Xâ€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿ÑƒÑ‚Ð½Ð¾ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ: Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñ˜Ðµ Ñƒ Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ\n"
 
-#: coffcode.h:4578
-msgid "%B: warning: duplicate line number information for `%s'"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº Ð¾ Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ€ÐµÐ´Ð° Ð·Ð° â€ž%sâ€œ"
+#: cofflink.c:2717
+#, c-format
+msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
+msgstr "%pB: %pA: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %#x > 0xffff"
 
-#: coffcode.h:4978
-msgid "%B: Unrecognized storage class %d for %s symbol `%s'"
-msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° ÐºÐ»Ð°Ñ�Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° â€ž%dâ€œ Ð·Ð° â€ž%sâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+#: cofflink.c:2725
+#, c-format
+msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pA: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: %#x > 0xffff"
 
-#: coffcode.h:5104
-msgid "warning: %B: local symbol `%s' has no section"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %B: Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™Ð°Ðº"
+#: cofflink.c:3110
+#, c-format
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgstr "%pB: Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
 
-#: coffcode.h:5248
-msgid "%B: illegal relocation type %d at address 0x%lx"
-msgstr "%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %d Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ 0x%lx"
+#: coffswap.h:799
+#, c-format
+msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
+msgstr "%pB: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: 0x%lx > 0xffff"
 
-#: coffgen.c:179 elf.c:1030
-msgid "%B: unable to initialize compress status for section %s"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ�Ð°Ð¶Ð¸Ð¼Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+#: compress.c:271
+#, c-format
+msgid "error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size (%#<PRIx64> bytes)"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB(%pA) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° (%#<PRIx64> Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°) Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ (%#<PRIx64> Ð±Ð°Ñ˜Ñ‚Ð°)"
 
-#: coffgen.c:199 elf.c:1050
-msgid "%B: unable to initialize decompress status for section %s"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¸Ð²Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+#: compress.c:282
+#, c-format
+msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB(%pA) Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ (%#<PRIx64> Ð±Ð°Ñ˜Ñ‚Ð°)"
 
-#: coffgen.c:1685
-msgid "%B: bad string table size %lu"
-msgstr "%B: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ð·Ð° %lu"
+#: cpu-arm.c:303 cpu-arm.c:315
+#, c-format
+msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° EP9312, Ð´Ð¾Ðº Ñ˜Ðµ %pB Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žXScaleâ€œ"
 
-#: coffgen.c:2608 elflink.c:12906 linker.c:3136
-msgid "%F%P: already_linked_table: %E\n"
-msgstr "%F%P: Ð²ÐµÑ›_Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð°_Ñ‚Ð°Ð±ÐµÐ»Ð°: %E\n"
+#: cpu-arm.c:451
+#, c-format
+msgid "warning: unable to update contents of %s section in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž%sâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ %pB"
 
-#: cofflink.c:533 elf64-ia64-vms.c:5173 elflink.c:4356
-msgid "Warning: type of symbol `%s' changed from %d to %d in %B"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ð¸Ð· â€ž%dâ€œ Ñƒ â€ž%dâ€œ Ð·Ð° â€ž%Bâ€œ"
+#: dwarf2.c:543
+#, c-format
+msgid "DWARF error: can't find %s section."
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ."
 
-#: cofflink.c:2416
-msgid "%B: relocs in section `%A', but it has no contents"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ, Ð°Ð»Ð¸ Ð½ÐµÐ¼Ð° Ð½Ð¸ÐºÐ°ÐºÐ²Ð¾Ð³ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°"
+#: dwarf2.c:578
+#, c-format
+msgid "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ (%<PRIu64>) Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¸Ð»Ð¸ Ñ˜ÐµÐ´Ð½Ð°Ðº Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ %s (%<PRIu64>)"
 
-#: cofflink.c:2478 elflink.c:9711
-msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n"
-msgstr "%Xâ€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿ÑƒÑ‚Ð½Ð¾ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ð¾Ð´ â€ž%Bâ€œ: Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñ˜Ðµ Ñƒ Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ð¾Ð´ â€ž%Bâ€œ\n"
+#: dwarf2.c:1165
+msgid "DWARF error: info pointer extends beyond end of attributes"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð½Ñ„Ð¾ ÑƒÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ ÐºÑ€Ð°Ñ˜ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°"
 
-#: cofflink.c:2777 coffswap.h:826
+#: dwarf2.c:1333
 #, c-format
-msgid "%s: %s: reloc overflow: 0x%lx > 0xffff"
-msgstr "%s: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: 0x%lx > 0xffff"
+msgid "DWARF error: invalid or unhandled FORM value: %#x"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð»Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žFORMâ€œ: %#x"
 
-#: cofflink.c:2786 coffswap.h:812
-#, c-format
-msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff"
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff"
+#: dwarf2.c:1646
+msgid "DWARF error: mangled line number section (bad file number)"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½ (Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ)"
 
-#: cpu-arm.c:190 cpu-arm.c:201
-msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° EP9312, Ð´Ð¾Ðº Ñ˜Ðµ â€ž%Bâ€œ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° XScale"
+#: dwarf2.c:1994
+msgid "DWARF error: zero format count"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÑƒÐ»Ñ‚Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð·Ð°Ð¿Ð¸Ñ�Ð°"
 
-#: cpu-arm.c:334
+#: dwarf2.c:2004
 #, c-format
-msgid "warning: unable to update contents of %s section in %s"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž%sâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€ž%sâ€œ"
+msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (%<PRIx64>) Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼ÐµÑ’ÑƒÐ¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ"
 
-#: dwarf2.c:514
+#: dwarf2.c:2045
 #, c-format
-msgid "Dwarf Error: Can't find %s section."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ."
+msgid "DWARF error: unknown format content type %<PRIu64>"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° â€ž%<PRIu64>â€œ"
 
-#: dwarf2.c:543
+#: dwarf2.c:2112
+#, c-format
+msgid "DWARF error: line info section is too small (%<PRId64>)"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ€ÐµÐ´Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸ (%<PRId64>)"
+
+#: dwarf2.c:2142
 #, c-format
-msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: ÐŸÐ¾Ð¼ÐµÑ€Ð°Ñ˜ (%lu) Ñ˜Ðµ >= Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ %s (%lu)."
+msgid "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining in the section (%#lx)"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ€ÐµÐ´Ð° Ñ˜Ðµ Ð²ÐµÑ›Ð¸ (%#<PRIx64>) Ð¾Ð´ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð»Ð¾Ð³ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ (%#lx)"
 
-#: dwarf2.c:1071
+#: dwarf2.c:2155
 #, c-format
-msgid "Dwarf Error: Invalid or unhandled FORM value: %#x."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð»Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žFORMâ€œ: %#x."
+msgid "DWARF error: unhandled .debug_line version %d"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ â€ž.debug_lineâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d"
 
-#: dwarf2.c:1332
-msgid "Dwarf Error: mangled line number section (bad file number)."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð‘Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½ (Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ)."
+#: dwarf2.c:2165
+msgid "DWARF error: ran out of room reading prologue"
+msgstr "â€žDWARFÐ´ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð½ÐµÑ�Ñ‚Ð°Ð»Ð¾ Ñ˜Ðµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ñ‡Ð¸Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ð¿Ñ€Ð¾Ð»Ð¾Ð³"
 
-#: dwarf2.c:1590
+#: dwarf2.c:2183
 #, c-format
-msgid "Dwarf Error: Unhandled .debug_line version %d."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ â€ž.debug_lineâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d."
+msgid "DWARF error: line info unsupported segment selector size %u"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¸Ð·Ð±Ð¸Ñ€Ð°Ñ‡Ð° Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ€ÐµÐ´Ð° %u"
+
+#: dwarf2.c:2210
+msgid "DWARF error: invalid maximum operations per instruction"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð° Ð¿Ð¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¸"
 
-#: dwarf2.c:1612
-msgid "Dwarf Error: Invalid maximum operations per instruction."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð° Ð¿Ð¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¸."
+#: dwarf2.c:2229
+msgid "DWARF error: ran out of room reading opcodes"
+msgstr "â€žDWARFÐ´ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð½ÐµÑ�Ñ‚Ð°Ð»Ð¾ Ñ˜Ðµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ñ‡Ð¸Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð¿ÐºÐ¾Ð´Ð¾Ð²Ðµ"
 
-#: dwarf2.c:1807
-msgid "Dwarf Error: mangled line number section."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð‘Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½."
+#: dwarf2.c:2420
+msgid "DWARF error: mangled line number section"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½"
 
-#: dwarf2.c:2160
+#: dwarf2.c:2905
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ±Ð°Ñ‡ÐµÑšÐµ Ð°Ð¿Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¾Ð³ Ð¿Ñ€Ð¸Ð¼ÐµÑ€ÐºÐ° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾"
+
+#: dwarf2.c:2939 dwarf2.c:3033
+msgid "DWARF error: invalid abstract instance DIE ref"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð°Ð¿Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð°Ð½ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð°Ðº â€žDIEâ€œ ÑƒÐ¿ÑƒÑ‚Ðµ"
+
+#: dwarf2.c:2955
 #, c-format
-msgid "Dwarf Error: Unable to read alt ref %u."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žaltâ€œ ÑƒÐ¿ÑƒÑ‚Ñƒ %u."
+msgid "DWARF error: unable to read alt ref %<PRIu64>"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žaltâ€œ ÑƒÐ¿ÑƒÑ‚Ñƒ %<PRIu64>"
 
-#: dwarf2.c:2179 dwarf2.c:2299 dwarf2.c:2595
+#: dwarf2.c:3011
 #, c-format
-msgid "Dwarf Error: Could not find abbrev number %u."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¸ Ð±Ñ€Ð¾Ñ˜ %u."
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ Ð°Ð¿Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð°Ðº â€žDIEâ€œ ÑƒÐ¿ÑƒÑ‚Ðµ %<PRIu64>"
 
-#: dwarf2.c:2551
+#: dwarf2.c:3050 dwarf2.c:3232 dwarf2.c:3618
 #, c-format
-msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ñ’Ð¾Ñ… â€žDWARFâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ â€ž%uâ€œ, Ð¾Ð²Ð°Ñ˜ Ñ‡Ð¸Ñ‚Ð°Ñ‡ Ñ€Ð°Ð´Ð¸ Ñ�Ð°Ð¼Ð¾ Ñ�Ð° Ð¿Ð¾Ð´Ð°Ñ†Ð¸Ð¼Ð° Ð¸Ð·Ð´Ð°ÑšÐ° 2, 3 Ð¸ 4."
+msgid "DWARF error: could not find abbrev number %u"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¸ Ð±Ñ€Ð¾Ñ˜ %u"
 
-#: dwarf2.c:2560
+#: dwarf2.c:3381
 #, c-format
-msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ñ’Ð¾Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%uâ€œ, Ð¾Ð²Ð°Ñ˜ Ñ‡Ð¸Ñ‚Ð°Ñ‡ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ€Ð°Ð´Ð¸ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°Ð¼Ð° Ð²ÐµÑ›Ð¸Ð¼ Ð¾Ð´ â€ž%uâ€œ."
+msgid "DWARF error: could not find variable specification at offset %lx"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´Ñ€ÐµÐ´Ð±Ñƒ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ðµ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ %lx"
 
-#: dwarf2.c:2586
+#: dwarf2.c:3537
 #, c-format
-msgid "Dwarf Error: Bad abbrev number: %u."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð›Ð¾Ñˆ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¸ Ð±Ñ€Ð¾Ñ˜: %u."
+msgid "DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 information"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… â€žDWARFâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ â€ž%uâ€œ, Ð¾Ð²Ð°Ñ˜ Ñ‡Ð¸Ñ‚Ð°Ñ‡ Ñ€Ð°Ð´Ð¸ Ñ�Ð°Ð¼Ð¾ Ñ�Ð° Ð¿Ð¾Ð´Ð°Ñ†Ð¸Ð¼Ð° Ð¸Ð·Ð´Ð°ÑšÐ° 2, 3, 4 Ð¸ 5"
 
-#: ecoff.c:1233
+#: dwarf2.c:3581
 #, c-format
-msgid "Unknown basic type %d"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œ"
+msgid "DWARF error: found address size '%u', this reader can not handle sizes greater than '%u'"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%uâ€œ, Ð¾Ð²Ð°Ñ˜ Ñ‡Ð¸Ñ‚Ð°Ñ‡ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ€Ð°Ð´Ð¸ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°Ð¼Ð° Ð²ÐµÑ›Ð¸Ð¼ Ð¾Ð´ â€ž%uâ€œ"
+
+#: dwarf2.c:3685
+msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ð° â€žDW_AT_comp_dirâ€œ Ñ˜Ðµ Ð½Ð°Ñ’ÐµÐ½Ð° Ñ�Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¾Ð¼ Ð½Ðµ-Ð½Ð¸Ñ�ÐºÐµ"
 
-#: ecoff.c:1490
+#: ecoff.c:982
+#, c-format
+msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žisymMaxâ€œ (%ld) Ñ˜Ðµ Ð²ÐµÑ›Ðµ Ð¾Ð´ â€žifdMaxâ€œ (%ld)"
+
+#: ecoff.c:1279
+#, c-format
+msgid "unknown basic type %d"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œ"
+
+#: ecoff.c:1536
 #, c-format
 msgid ""
 "\n"
@@ -597,7 +697,7 @@ msgstr ""
 "\n"
 "      ÐŸÐ¾Ñ�Ð»ÐµÐ´ÑšÐ¸+1 Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1497 ecoff.c:1500
+#: ecoff.c:1543 ecoff.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -606,7 +706,7 @@ msgstr ""
 "\n"
 "      ÐŸÑ€Ð²Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1512
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
@@ -615,7 +715,7 @@ msgstr ""
 "\n"
 "      ÐŸÐ¾Ñ�Ð»ÐµÐ´ÑšÐ¸+1 Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %-7ld   Ð’Ñ€Ñ�Ñ‚Ð°:  %s"
 
-#: ecoff.c:1519
+#: ecoff.c:1566
 #, c-format
 msgid ""
 "\n"
@@ -624,7 +724,7 @@ msgstr ""
 "\n"
 "      Ð›Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1527
+#: ecoff.c:1574
 #, c-format
 msgid ""
 "\n"
@@ -633,7 +733,7 @@ msgstr ""
 "\n"
 "      struct; ÐŸÐ¾Ñ�Ð»ÐµÐ´ÑšÐ¸+1 Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1532
+#: ecoff.c:1579
 #, c-format
 msgid ""
 "\n"
@@ -642,7 +742,7 @@ msgstr ""
 "\n"
 "      union; ÐŸÐ¾Ñ�Ð»ÐµÐ´ÑšÐ¸+1 Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1537
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
@@ -651,7 +751,7 @@ msgstr ""
 "\n"
 "      enum; ÐŸÐ¾Ñ�Ð»ÐµÐ´ÑšÐ¸+1 Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1543
+#: ecoff.c:1590
 #, c-format
 msgid ""
 "\n"
@@ -660,138 +760,319 @@ msgstr ""
 "\n"
 "      Ð’Ñ€Ñ�Ñ‚Ð°: %s"
 
-#: elf-attrs.c:573
-msgid "error: %B: Object has vendor-specific contents that must be processed by the '%s' toolchain"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %B: ÐžÐ±Ñ˜ÐµÐºÐ°Ñ‚ Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¿Ñ€Ð¾Ð´Ð°Ð²Ñ†Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ ÐºÐ¾Ñ˜Ð¸ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ñ’ÐµÐ½ Ð°Ð»Ð°Ñ‚Ð½Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ â€ž%sâ€œ"
-
-#: elf-attrs.c:582
-msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %B: ÐžÐ·Ð½Ð°ÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€ž%d, %sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð·Ð½Ð°ÐºÐ¾Ð¼ â€ž%d, %sâ€œ"
-
-#: elf-eh-frame.c:921
-msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n"
-msgstr "%P: Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€ž%B(%A)â€œ; Ð½ÐµÑ›Ðµ Ð±Ð¸Ñ‚Ð¸ Ð½Ð°Ð¿Ñ€Ð°Ð²Ñ™ÐµÐ½Ð° Ð½Ð¸Ñ˜ÐµÐ´Ð½Ð° â€ž.eh_frame_hdrâ€œ Ñ‚Ð°Ð±ÐµÐ»Ð°.\n"
-
-#: elf-eh-frame.c:1193
-msgid "%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n"
-msgstr "%P: Ñ„Ð´Ðµ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ Ñƒ â€ž%B(%A)â€œ Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ â€ž.eh_frame_hdrâ€œ Ñ‚Ð°Ð±ÐµÐ»Ðµ.\n"
-
-#: elf-eh-frame.c:1612
-msgid "%P: DW_EH_PE_datarel unspecified for this architecture.\n"
-msgstr "%P: â€žDW_EH_PE_datarelâ€œ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð²Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ.\n"
-
-#: elf-ifunc.c:135
-msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%B' can not be used when making an executable; recompile with -fPIE and relink with -pie\n"
-msgstr "%F%P: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ð° Ñ˜ÐµÐ´Ð½Ð°ÐºÐ¾ÑˆÑ›Ñƒ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ â€ž%Bâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ; Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° â€ž-fPIEâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ¶Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° â€ž-pieâ€œ\n"
-
-#: elf-m10200.c:430 elf-m10300.c:2164 elf32-avr.c:1256 elf32-bfin.c:3220
-#: elf32-cr16.c:1484 elf32-cr16c.c:780 elf32-cris.c:2016 elf32-crx.c:922
-#: elf32-d10v.c:513 elf32-epiphany.c:557 elf32-fr30.c:589 elf32-frv.c:4039
-#: elf32-h8300.c:525 elf32-i860.c:1212 elf32-ip2k.c:1468 elf32-iq2000.c:688
-#: elf32-lm32.c:1160 elf32-m32c.c:553 elf32-m32r.c:3066 elf32-m68hc1x.c:1283
-#: elf32-mep.c:535 elf32-metag.c:1992 elf32-microblaze.c:1560
-#: elf32-moxie.c:282 elf32-mt.c:395 elf32-nds32.c:4910 elf32-openrisc.c:404
-#: elf32-score.c:2729 elf32-score7.c:2537 elf32-spu.c:5041
-#: elf32-tilepro.c:3666 elf32-v850.c:2281 elf32-xstormy16.c:936
-#: elf64-mmix.c:1538 elfxx-tilegx.c:4051
+#: elf-attrs.c:449
+#, c-format
+msgid "%pB: error: attribute section '%pA' too big: %#llx"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ðµ â€ž%pAâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº: %#llx"
+
+#: elf-attrs.c:490
+#, c-format
+msgid "%pB: error: attribute section length too small: %<PRId64>"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°: %<PRId64>"
+
+#: elf-attrs.c:618
+#, c-format
+msgid "error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchain"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¿Ñ€Ð¾Ð´Ð°Ð²Ñ†Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ ÐºÐ¾Ñ˜Ð¸ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ñ’ÐµÐ½ Ð°Ð»Ð°Ñ‚Ð½Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ â€ž%sâ€œ"
+
+#: elf-attrs.c:628
+#, c-format
+msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð¾Ð·Ð½Ð°ÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€ž%d, %sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð·Ð½Ð°ÐºÐ¾Ð¼ â€ž%d, %sâ€œ"
+
+#: elf-eh-frame.c:944
+#, c-format
+msgid "discarding zero address range FDE in %pB(%pA).\n"
+msgstr "Ð¾Ð´Ð±Ð°Ñ†ÑƒÑ˜ÐµÐ¼ Ð½ÑƒÐ»Ñ‚Ð¸ Ð¾Ð¿Ñ�ÐµÐ³ Ð°Ð´Ñ€ÐµÑ�Ðµ â€žFDEâ€œ Ñƒ â€ž%pB(%pA)â€œ.\n"
+
+#: elf-eh-frame.c:1049
+#, c-format
+msgid "error in %pB(%pA); no .eh_frame_hdr table will be created"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€ž%pB(%pA)â€œ; Ð½ÐµÑ›Ðµ Ð±Ð¸Ñ‚Ð¸ Ð½Ð°Ð¿Ñ€Ð°Ð²Ñ™ÐµÐ½Ð° Ð½Ð¸Ñ˜ÐµÐ´Ð½Ð° â€ž.eh_frame_hdrâ€œ Ñ‚Ð°Ð±ÐµÐ»Ð°"
+
+#: elf-eh-frame.c:1539
+#, c-format
+msgid "FDE encoding in %pB(%pA) prevents .eh_frame_hdr table being created"
+msgstr "â€žFDEâ€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ Ñƒ â€ž%pB(%pA)â€œ Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ â€ž.eh_frame_hdrâ€œ Ñ‚Ð°Ð±ÐµÐ»Ðµ"
+
+#: elf-eh-frame.c:1546
+msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"
+msgstr "Ð±ÑƒÐ´ÑƒÑ›Ð° ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐ° Ð¾ â€žFDEâ€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÑƒ Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð° Ð¾Ð´Ð±Ð°Ñ†Ð¸Ð²Ð°ÑšÐµ â€ž.eh_frame_hdrâ€œ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ðµ"
+
+#: elf-eh-frame.c:1866
+#, c-format
+msgid "%pB: %pA not in order"
+msgstr "%pB: â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÑƒ"
+
+#: elf-eh-frame.c:1880
+#, c-format
+msgid "%pB: %pA invalid input section size"
+msgstr "%pB: â€ž%pAâ€œ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™Ð°Ðº ÑƒÐ»Ð°Ð·Ð°"
+
+#: elf-eh-frame.c:1888
+#, c-format
+msgid "%pB: %pA points past end of text section"
+msgstr "%pB: â€ž%pAâ€œ Ñ‚Ð°Ñ‡Ð°ÐºÐ° Ð¿Ñ€ÐµÐ»Ð°Ð·Ð¸ ÐºÑ€Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ‚ÐµÐºÑ�Ñ‚Ð°"
+
+#: elf-eh-frame.c:2141
+msgid "DW_EH_PE_datarel unspecified for this architecture"
+msgstr "â€žDW_EH_PE_datarelâ€œ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð²Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
+
+#: elf-eh-frame.c:2312
+#, c-format
+msgid "invalid output section for .eh_frame_entry: %pA"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð° Ð·Ð° â€ž.eh_frame_entryâ€œ: %pA"
+
+#: elf-eh-frame.c:2335
+#, c-format
+msgid "invalid contents in %pA section"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
+
+#: elf-eh-frame.c:2491
+msgid ".eh_frame_hdr entry overflow"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€ž.eh_frame_hdrâ€œ ÑƒÐ½Ð¾Ñ�Ð°"
+
+#: elf-eh-frame.c:2493
+msgid ".eh_frame_hdr refers to overlapping FDEs"
+msgstr "â€ž.eh_frame_hdrâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°Ñ˜ÑƒÑ›Ðµ â€žFDEâ€œ-Ð¾Ð²Ðµ"
+
+#: elf-ifunc.c:144
+#, c-format
+msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%pB' can not be used when making an executable; recompile with -fPIE and relink with -pie\n"
+msgstr "%F%P: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ð° Ñ˜ÐµÐ´Ð½Ð°ÐºÐ¾ÑˆÑ›Ñƒ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ â€ž%pBâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ; Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° â€ž-fPIEâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ¶Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° â€ž-pieâ€œ\n"
+
+#: elf-m10200.c:434 elf-m10300.c:2145 elf32-avr.c:1508 elf32-bfin.c:3126
+#: elf32-cr16.c:1464 elf32-cris.c:2033 elf32-crx.c:920 elf32-d10v.c:510
+#: elf32-epiphany.c:562 elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:494
+#: elf32-h8300.c:523 elf32-ip2k.c:1477 elf32-iq2000.c:691 elf32-lm32.c:1069
+#: elf32-m32c.c:624 elf32-m32r.c:2860 elf32-m68hc1x.c:1272 elf32-mep.c:526
+#: elf32-metag.c:1986 elf32-microblaze.c:1627 elf32-moxie.c:288 elf32-mt.c:402
+#: elf32-nds32.c:6048 elf32-or1k.c:1817 elf32-score.c:2734 elf32-score7.c:2543
+#: elf32-spu.c:5083 elf32-tilepro.c:3380 elf32-v850.c:2290 elf32-visium.c:680
+#: elf32-xstormy16.c:929 elf64-bpf.c:512 elf64-mmix.c:1541 elfxx-tilegx.c:3744
 msgid "internal error: out of range error"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
 
-#: elf-m10200.c:434 elf-m10300.c:2168 elf32-avr.c:1260 elf32-bfin.c:3224
-#: elf32-cr16.c:1488 elf32-cr16c.c:784 elf32-cris.c:2020 elf32-crx.c:926
-#: elf32-d10v.c:517 elf32-fr30.c:593 elf32-frv.c:4043 elf32-h8300.c:529
-#: elf32-i860.c:1216 elf32-iq2000.c:692 elf32-lm32.c:1164 elf32-m32c.c:557
-#: elf32-m32r.c:3070 elf32-m68hc1x.c:1287 elf32-mep.c:539 elf32-metag.c:1996
-#: elf32-microblaze.c:1564 elf32-moxie.c:286 elf32-msp430.c:1321
-#: elf32-nds32.c:4914 elf32-openrisc.c:408 elf32-score.c:2733
-#: elf32-score7.c:2541 elf32-spu.c:5045 elf32-tilepro.c:3670 elf32-v850.c:2285
-#: elf32-xstormy16.c:940 elf64-mmix.c:1542 elfxx-mips.c:9995
-#: elfxx-tilegx.c:4055
+#: elf-m10200.c:438 elf-m10300.c:2149 elf32-avr.c:1512 elf32-bfin.c:3130
+#: elf32-cr16.c:1468 elf32-cris.c:2037 elf32-crx.c:924 elf32-d10v.c:514
+#: elf32-fr30.c:598 elf32-frv.c:4052 elf32-ft32.c:498 elf32-h8300.c:527
+#: elf32-iq2000.c:695 elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2864
+#: elf32-m68hc1x.c:1276 elf32-mep.c:530 elf32-metag.c:1990
+#: elf32-microblaze.c:1631 elf32-moxie.c:292 elf32-msp430.c:1371
+#: elf32-nds32.c:6052 elf32-or1k.c:1821 elf32-score.c:2738 elf32-score7.c:2547
+#: elf32-spu.c:5087 elf32-tilepro.c:3384 elf32-v850.c:2294 elf32-visium.c:684
+#: elf32-xstormy16.c:933 elf64-mmix.c:1545 elfxx-mips.c:10576
+#: elfxx-tilegx.c:3748
 msgid "internal error: unsupported relocation error"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
 
-#: elf-m10200.c:438 elf32-cr16.c:1492 elf32-cr16c.c:788 elf32-crx.c:930
-#: elf32-d10v.c:521 elf32-h8300.c:533 elf32-lm32.c:1168 elf32-m32r.c:3074
-#: elf32-m68hc1x.c:1291 elf32-microblaze.c:1568 elf32-nds32.c:4918
-#: elf32-score.c:2737 elf32-score7.c:2545 elf32-spu.c:5049
+#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-crx.c:928 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2868 elf32-m68hc1x.c:1280
+#: elf32-microblaze.c:1635 elf32-nds32.c:6056 elf32-score.c:2742
+#: elf32-score7.c:2551 elf32-spu.c:5091
 msgid "internal error: dangerous error"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð³Ñ€ÐµÑˆÐºÐ° Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸"
 
-#: elf-m10200.c:442 elf-m10300.c:2184 elf32-avr.c:1268 elf32-bfin.c:3232
-#: elf32-cr16.c:1496 elf32-cr16c.c:792 elf32-cris.c:2028 elf32-crx.c:934
-#: elf32-d10v.c:525 elf32-epiphany.c:572 elf32-fr30.c:601 elf32-frv.c:4051
-#: elf32-h8300.c:537 elf32-i860.c:1224 elf32-ip2k.c:1483 elf32-iq2000.c:700
-#: elf32-lm32.c:1172 elf32-m32c.c:565 elf32-m32r.c:3078 elf32-m68hc1x.c:1295
-#: elf32-mep.c:547 elf32-metag.c:2004 elf32-microblaze.c:1572
-#: elf32-moxie.c:294 elf32-msp430.c:1329 elf32-mt.c:403 elf32-nds32.c:4922
-#: elf32-openrisc.c:416 elf32-score.c:2746 elf32-score7.c:2549
-#: elf32-spu.c:5053 elf32-tilepro.c:3678 elf32-v850.c:2305
-#: elf32-xstormy16.c:948 elf64-mmix.c:1550 elfxx-tilegx.c:4063
+#: elf-m10200.c:446 elf-m10300.c:2166 elf32-avr.c:1520 elf32-bfin.c:3138
+#: elf32-cr16.c:1476 elf32-cris.c:2045 elf32-crx.c:932 elf32-d10v.c:522
+#: elf32-epiphany.c:577 elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:506
+#: elf32-h8300.c:535 elf32-ip2k.c:1492 elf32-iq2000.c:703 elf32-lm32.c:1081
+#: elf32-m32c.c:636 elf32-m32r.c:2872 elf32-m68hc1x.c:1284 elf32-mep.c:538
+#: elf32-metag.c:1998 elf32-microblaze.c:1639 elf32-moxie.c:300
+#: elf32-msp430.c:1379 elf32-mt.c:410 elf32-nds32.c:6060 elf32-or1k.c:1829
+#: elf32-score.c:2751 elf32-score7.c:2555 elf32-spu.c:5095
+#: elf32-tilepro.c:3392 elf32-v850.c:2314 elf32-visium.c:692
+#: elf32-xstormy16.c:941 elf64-bpf.c:525 elf64-mmix.c:1553 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°"
 
-#: elf-m10300.c:1021
+#: elf-m10300.c:1029
 #, c-format
-msgid "%s: Unsupported transition from %s to %s"
-msgstr "%s: ÐŸÑ€ÐµÐ»Ð°Ð·Ð°Ðº Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½"
+msgid "%pB: unsupported transition from %s to %s"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ð¿Ñ€ÐµÐ»Ð°Ð·Ð°Ðº Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ"
 
-#: elf-m10300.c:1213
-msgid "%B: %s' accessed both as normal and thread local symbol"
-msgstr "%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
-
-#: elf-m10300.c:2108 elf32-arm.c:10632 elf32-i386.c:4363 elf32-m32r.c:2558
-#: elf32-m68k.c:4120 elf32-s390.c:3303 elf32-sh.c:4109 elf32-tilepro.c:3569
-#: elf32-xtensa.c:3063 elf64-s390.c:3229 elf64-sh64.c:1640 elf64-x86-64.c:4463
-#: elfxx-sparc.c:3904 elfxx-tilegx.c:3974
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:4450
-msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'"
-msgstr "%B(%A+0x%lx): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf-m10300.c:1196
+#, c-format
+msgid "%pB: %s' accessed both as normal and thread local symbol"
+msgstr "%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
+
+#: elf-m10300.c:2092 elf32-arm.c:13400 elf32-i386.c:3403 elf32-m32r.c:2354
+#: elf32-m68k.c:3931 elf32-s390.c:3082 elf32-sh.c:3677 elf32-tilepro.c:3283
+#: elf32-xtensa.c:3023 elf64-s390.c:3031 elf64-x86-64.c:4062
+#: elfxx-sparc.c:3795 elfxx-tilegx.c:3667 elfnn-aarch64.c:5505
+#: elfnn-aarch64.c:7102
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf-m10300.c:2173
+#: elf-m10300.c:2154
 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
 msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð° Ð·Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ (Ð´Ð° Ð»Ð¸ Ñ�Ñ‚Ðµ Ð·Ð°Ð±Ð¾Ñ€Ð°Ð²Ð¸Ð»Ð¸ â€ž-fpicâ€œ?)"
 
-#: elf-m10300.c:2176
-msgid "%B: taking the address of protected function '%s' cannot be done when making a shared library"
-msgstr "%B: ÑƒÐ·Ð¸Ð¼Ð°ÑšÐµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ"
+#: elf-m10300.c:2158
+#, c-format
+msgid "%pB: taking the address of protected function '%s' cannot be done when making a shared library"
+msgstr "%pB: ÑƒÐ·Ð¸Ð¼Ð°ÑšÐµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ"
 
-#: elf-m10300.c:2179
+#: elf-m10300.c:2161
 msgid "internal error: suspicious relocation type used in shared library"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÑƒÐ¼ÑšÐ¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð° Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÑ†Ð¸"
 
-#: elf.c:343
-msgid "%B: invalid string offset %u >= %lu for section `%s'"
-msgstr "%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ â€ž%u >= %luâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
-
-#: elf.c:455
-msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
-msgstr "â€ž%Bâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð±Ñ€Ð¾Ñ˜ %lu ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žSHT_SYMTAB_SHNDXâ€œ"
-
-#: elf.c:611
-msgid "%B: Corrupt size field in group section header: 0x%lx"
-msgstr "%B: ÐžÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ: 0x%lx"
-
-#: elf.c:647
-msgid "%B: invalid SHT_GROUP entry"
-msgstr "%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ� â€žSHT_GROUPâ€œ"
-
-#: elf.c:717
-msgid "%B: no group info for section %A"
-msgstr "%B: Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
-
-#: elf.c:746 elf.c:3144 elflink.c:10290
-msgid "%B: warning: sh_link not set for section `%A'"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žsh_linkâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
-
-#: elf.c:765
-msgid "%B: sh_link [%d] in section `%A' is incorrect"
-msgstr "%B: â€žsh_link [%d]â€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾"
-
-#: elf.c:800
-msgid "%B: unknown [%d] section `%s' in group [%s]"
-msgstr "%B: [%d] Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ð³Ñ€ÑƒÐ¿Ð¸ [%s]"
+#: elf-m10300.c:2647 elf32-avr.c:2489 elf32-frv.c:5620 elf64-ia64-vms.c:364
+#: elfxx-sparc.c:2683 reloc.c:8244 reloc16.c:155 elfnn-ia64.c:364
+msgid "%P%F: --relax and -r may not be used together\n"
+msgstr "%P%F: â€ž--relaxâ€œ Ð¸ â€ž-râ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾\n"
+
+#: elf-properties.c:65
+#, c-format
+msgid "%pB: out of memory in _bfd_elf_get_property"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ð²Ð¸ÑˆÐµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ñƒ â€ž_bfd_elf_get_propertyâ€œ"
+
+#: elf-properties.c:91
+#, c-format
+msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ â€žGNU_PROPERTY_TYPEâ€œ (%ld) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ: %#lx"
+
+#: elf-properties.c:112
+#, c-format
+msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ â€žGNU_PROPERTY_TYPEâ€œ (%ld) Ð²Ñ€Ñ�Ñ‚Ð° (0x%x) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°: 0x%x"
+
+#: elf-properties.c:151
+#, c-format
+msgid "warning: %pB: corrupt stack size: 0x%x"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°: 0x%x"
+
+#: elf-properties.c:169
+#, c-format
+msgid "warning: %pB: corrupt no copy on protected size: 0x%x"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÑšÐµ Ð½Ðµ ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ð²Ð° Ð½Ð° Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ñ˜ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ: 0x%x"
+
+#: elf-properties.c:186
+#, c-format
+msgid "warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žGNU_PROPERTY_TYPEâ€œ (%ld) Ð²Ñ€Ñ�Ñ‚Ð°: 0x%x"
+
+#: elf-properties.c:301
+msgid "Removed property %W to merge %pB (0x%v) and %pB (0x%v)\n"
+msgstr "Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (0x%v) Ð¸ â€ž%pBâ€œ (0x%v)\n"
+
+#: elf-properties.c:307
+msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
+msgstr "Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (0x%v) Ð¸ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾)\n"
+
+#: elf-properties.c:316 elf-properties.c:394
+msgid "Removed property %W to merge %pB and %pB\n"
+msgstr "Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ\n"
+
+#: elf-properties.c:320
+msgid "Removed property %W to merge %pB and %pB (not found)\n"
+msgstr "Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾)\n"
+
+#: elf-properties.c:337
+msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
+msgstr "ÐžÑ�Ð²ÐµÐ¶ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ (0x%v) Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (0x%v) Ð¸ â€ž%pBâ€œ (0x%v)\n"
+
+#: elf-properties.c:346
+msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
+msgstr "ÐžÑ�Ð²ÐµÐ¶ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ (%v) Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (0x%v) Ð¸ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾)\n"
+
+#: elf-properties.c:388
+msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
+msgstr "Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾) Ð¸ â€ž%pBâ€œ (0x%v)\n"
+
+#. Merge .note.gnu.property sections.
+#: elf-properties.c:550 elf-properties.c:552
+msgid "\n"
+msgstr "\n"
+
+#: elf-properties.c:551
+msgid "Merging program properties\n"
+msgstr "Ð¡Ñ‚Ð°Ð¿Ð°Ð¼ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°\n"
+
+#. PR 17512: file: f057ec89.
+#: elf.c:336
+#, c-format
+msgid "%pB: attempt to load strings from a non-string section (number %d)"
+msgstr "%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð¼ Ð½Ð¸Ñ�ÐºÐµ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° Ð½Ðµ-Ð½Ð¸Ñ�ÐºÐµ (Ð±Ñ€Ð¾Ñ˜ %d)"
+
+#: elf.c:361
+#, c-format
+msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ â€ž%u >= %<PRIu64>â€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+
+#: elf.c:513 elfnn-aarch64.c:8096
+#, c-format
+msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
+msgstr "â€ž%pBâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð±Ñ€Ð¾Ñ˜ %lu ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žSHT_SYMTAB_SHNDXâ€œ"
+
+#: elf.c:675
+#, c-format
+msgid "%pB: invalid size field in group section header: %#<PRIx64>"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ: %#<PRIx64>"
+
+#: elf.c:720
+#, c-format
+msgid "%pB: invalid entry in SHT_GROUP section [%u]"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ� Ñƒ â€žSHT_GROUPâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ [%u]"
+
+#: elf.c:739
+#, c-format
+msgid "%pB: no valid group sections found"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ðµ Ð¾Ð´ÐµÑ™ÐºÐµ Ð³Ñ€ÑƒÐ¿Ðµ"
+
+#. See PR 21957 for a reproducer.
+#: elf.c:768
+#, c-format
+msgid "%pB: group section '%pA' has no contents"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº Ð³Ñ€ÑƒÐ¿Ðµ â€ž%pAâ€œ Ð½ÐµÐ¼Ð° Ð½Ð¸ÐºÐ°ÐºÐ²Ð¾Ð³ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°"
+
+#: elf.c:829
+#, c-format
+msgid "%pB: no group info for section '%pA'"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
+
+#: elf.c:859 elf.c:3955
+#, c-format
+msgid "%pB: warning: sh_link not set for section `%pA'"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žsh_linkâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
+
+#: elf.c:879
+#, c-format
+msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
+msgstr "%pB: â€žsh_link [%d]â€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾"
+
+#: elf.c:892
+#, c-format
+msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
+msgstr "%pB: â€žSHT_GROUPâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº [Ð¸Ð½Ð´ÐµÐºÑ� %d] Ð½ÐµÐ¼Ð° â€žSHF_GROUPâ€œ Ð¾Ð´ÐµÑ™ÐºÐµ"
 
-#: elf.c:1174
+#: elf.c:913
+#, c-format
+msgid "%pB: section group entry number %u is corrupt"
+msgstr "%pB: Ð±Ñ€Ð¾Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° ÑƒÐ½Ð¾Ñ�Ð° Ð³Ñ€ÑƒÐ¿Ðµ %u Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½"
+
+#: elf.c:936
+#, c-format
+msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° [%#x] Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ð³Ñ€ÑƒÐ¿Ð¸ [%pA]"
+
+#: elf.c:1438
+#, c-format
+msgid "%pB: invalid sh_link field (%d) in section number %d"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€žsh_linkâ€œ Ð¿Ð¾Ñ™Ðµ (%d) Ñƒ Ð±Ñ€Ð¾Ñ˜Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° %d"
+
+#: elf.c:1454
+#, c-format
+msgid "%pB: failed to find link section for section %d"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð²ÐµÐ·Ðµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº %d"
+
+#: elf.c:1481
+#, c-format
+msgid "%pB: failed to find info section for section %d"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº %d"
+
+#: elf.c:1653
 #, c-format
 msgid ""
 "\n"
@@ -800,7 +1081,7 @@ msgstr ""
 "\n"
 "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°:\n"
 
-#: elf.c:1216
+#: elf.c:1695
 #, c-format
 msgid ""
 "\n"
@@ -809,7 +1090,7 @@ msgstr ""
 "\n"
 "Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº:\n"
 
-#: elf.c:1352
+#: elf.c:1836
 #, c-format
 msgid ""
 "\n"
@@ -818,7 +1099,7 @@ msgstr ""
 "\n"
 "Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¸Ð·Ð´Ð°ÑšÐ°:\n"
 
-#: elf.c:1377
+#: elf.c:1861
 #, c-format
 msgid ""
 "\n"
@@ -827,1797 +1108,2440 @@ msgstr ""
 "\n"
 "Ð£Ð¿ÑƒÑ‚Ð° Ð¸Ð·Ð´Ð°ÑšÐ°:\n"
 
-#: elf.c:1382
+#: elf.c:1866
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð°Ð½Ð¾ Ð¸Ð· â€ž%sâ€œ:\n"
 
-#: elf.c:1807
-msgid "%B: invalid link %lu for reloc section %s (index %u)"
-msgstr "%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ·Ð° â€ž%luâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ (Ð¸Ð½Ð´ÐµÐºÑ� â€ž%uâ€œ)"
+#: elf.c:2082
+#, c-format
+msgid "%pB: warning: loop in section dependencies detected"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿ÐµÑ‚Ñ™Ð° Ñƒ Ð·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸Ð¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð°"
 
-#: elf.c:1977
-msgid "%B: don't know how to handle allocated, application specific section `%s' [0x%8x]"
-msgstr "%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½, Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]"
+#: elf.c:2190
+#, c-format
+msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð²Ð¸ÑˆÐµ Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ %u"
 
-#: elf.c:1989
-msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]"
-msgstr "%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]"
+#: elf.c:2274
+#, c-format
+msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð²Ð¸ÑˆÐµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ñ… Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ %u"
 
-#: elf.c:2000
-msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]"
-msgstr "%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]"
+#: elf.c:2387
+#, c-format
+msgid "%pB: invalid link %u for reloc section %s (index %u)"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ·Ð° â€ž%uâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ (Ð¸Ð½Ð´ÐµÐºÑ� â€ž%uâ€œ)"
 
-#: elf.c:2010
-msgid "%B: don't know how to handle section `%s' [0x%8x]"
-msgstr "%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]"
+#: elf.c:2478
+#, c-format
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ñ’Ð¾Ñ… Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼"
 
-#: elf.c:2648
+#: elf.c:2562 elf.c:2577 elf.c:2588 elf.c:2601
 #, c-format
-msgid "warning: section `%A' type changed to PROGBITS"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° â€ž%Aâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ñƒ â€žPROGBITSâ€œ"
+msgid "%pB: unknown type [%#x] section `%s'"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° [%#x] Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#: elf.c:3015
-msgid "%B: too many sections: %u"
-msgstr "%B: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %u"
+#: elf.c:3308
+#, c-format
+msgid "%pB: error: alignment power %d of section `%pA' is too big"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð½Ð°Ð³Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° %d Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°"
 
-#: elf.c:3101
-msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'"
-msgstr "%B: â€žsh_linkâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œ ÑƒÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¾Ð´ â€ž%Bâ€œ"
+#: elf.c:3341
+#, c-format
+msgid "warning: section `%pA' type changed to PROGBITS"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° â€ž%pAâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ñƒ â€žPROGBITSâ€œ"
 
-#: elf.c:3124
-msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'"
-msgstr "%B: â€žsh_linkâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œ ÑƒÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° ÑƒÐºÐ»Ð¾ÑšÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¾Ð´ â€ž%Bâ€œ"
+#: elf.c:3824
+#, c-format
+msgid "%pB: too many sections: %u"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %u"
 
-#: elf.c:4126
-msgid "%B: TLS sections are not adjacent:"
-msgstr "%B: Ð¢Ð›Ð¡ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð½Ð¸Ñ�Ñƒ Ñ�ÑƒÑ�ÐµÐ´Ð½Ð¸:"
+#: elf.c:3909
+#, c-format
+msgid "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
+msgstr "%pB: â€žsh_linkâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ ÑƒÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ"
 
-#: elf.c:4133
+#: elf.c:3934
 #, c-format
-msgid "\t    TLS: %A"
-msgstr "\t    Ð¢Ð›Ð¡: %A"
+msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
+msgstr "%pB: â€žsh_linkâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ ÑƒÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° ÑƒÐºÐ»Ð¾ÑšÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ"
 
-#: elf.c:4137
+#: elf.c:4495
 #, c-format
-msgid "\tnon-TLS: %A"
-msgstr "\tÐ½Ðµ-Ð¢Ð›Ð¡: %A"
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
+msgstr "%pB: â€žGNU_MBINDâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€žsh_infoâ€œ Ð¿Ð¾Ñ™Ðµ: %d"
 
-#: elf.c:4596
-msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section"
-msgstr "%B: ÐŸÑ€Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ â€žPT_DYNAMICâ€œ Ð½Ð¸Ñ˜Ðµ â€ž.dynamicâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
+#: elf.c:5086
+#, c-format
+msgid "%pB: TLS sections are not adjacent:"
+msgstr "%pB: Ð¢Ð›Ð¡ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð½Ð¸Ñ�Ñƒ Ñ�ÑƒÑ�ÐµÐ´Ð½Ð¸:"
 
-#: elf.c:4621
-msgid "%B: Not enough room for program headers, try linking with -N"
-msgstr "%B: Ð�ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð° Ð·Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼, Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÑ‚Ðµ Ñ�Ð° â€ž-Nâ€œ"
+#: elf.c:5093
+#, c-format
+msgid "\t    TLS: %pA"
+msgstr "\t    Ð¢Ð›Ð¡: %pA"
 
-#: elf.c:4707
-msgid "%B: section %A lma %#lx adjusted to %#lx"
-msgstr "%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%A lma %#lxâ€œ Ñ˜Ðµ Ð´Ð¾Ñ‚ÐµÑ€Ð°Ð½ Ð½Ð° %#lx"
+#: elf.c:5097
+#, c-format
+msgid "\tnon-TLS: %pA"
+msgstr "\tÐ½Ðµ-Ð¢Ð›Ð¡: %pA"
 
-#: elf.c:4843
-msgid "%B: section `%A' can't be allocated in segment %d"
-msgstr "%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð´ÐµÐ»Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ %d"
+#: elf.c:5687
+#, c-format
+msgid "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
+msgstr "%pB: ÐŸÑ€Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ â€žPT_DYNAMICâ€œ Ð½Ð¸Ñ˜Ðµ â€ž.dynamicâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: elf.c:4892
-msgid "%B: warning: allocated section `%s' not in segment"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ"
+#: elf.c:5713
+#, c-format
+msgid "%pB: not enough room for program headers, try linking with -N"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð° Ð·Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼, Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÑ‚Ðµ Ñ�Ð° â€ž-Nâ€œ"
 
-#: elf.c:5473
-msgid "%B: symbol `%s' required but not present"
-msgstr "%B: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð°Ð½"
+#: elf.c:5830
+#, c-format
+msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pA lma %#<PRIx64>â€œ Ñ˜Ðµ Ð´Ð¾Ñ‚ÐµÑ€Ð°Ð½ Ð½Ð° %#<PRIx64>"
 
-#: elf.c:5811
-msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¿Ð¾Ð´ÐµÐ¾Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸, Ð´Ð° Ð»Ð¸ Ñ˜Ðµ Ñ‚Ð¾ Ð½Ð°Ð¼ÐµÑ€Ð°Ð²Ð°Ð½Ð¾ ?\n"
+#. The fix for this error is usually to edit the linker script being
+#. used and set up the program headers manually.  Either that or
+#. leave room for the headers at the start of the SECTIONS.
+#: elf.c:5967
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žPHDRâ€œ Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²ÐµÐ½ â€žLOADâ€œ Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ¾Ð¼"
 
-#: elf.c:6867
+#: elf.c:6007
 #, c-format
-msgid "Unable to find equivalent output section for symbol '%s' from section '%s'"
-msgstr "Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÐµÐºÐ²Ð¸Ð²Ð°Ð»ÐµÐ½Ñ‚Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
+msgid "%pB: section `%pA' can't be allocated in segment %d"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð´ÐµÐ»Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ %d"
 
-#: elf.c:7915
-msgid "%B: unsupported relocation type %s"
-msgstr "%B: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %s Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+#: elf.c:6139
+#, c-format
+msgid "%pB: warning: allocated section `%s' not in segment"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ"
 
-#: elf32-arm.c:3722 elf32-arm.c:7051
-msgid ""
-"%B(%s): warning: interworking not enabled.\n"
-"  first occurrence: %B: Thumb call to ARM"
-msgstr ""
-"%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.\n"
-"  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žThumbâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ð½Ð° â€žARMâ€œ"
+#: elf.c:6300
+#, c-format
+msgid "%pB: error: non-load segment %d includes file header and/or program header"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð½Ðµ-ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° %d ÑƒÐºÑ™ÑƒÑ‡ÑƒÑ˜Ðµ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¸/Ð¸Ð»Ð¸ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°"
 
-#: elf32-arm.c:3769
-msgid ""
-"%B(%s): warning: interworking not enabled.\n"
-"  first occurrence: %B: ARM call to Thumb"
-msgstr ""
-"%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.\n"
-"  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žARMâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ð½Ð° â€žThumbâ€œ"
+#: elf.c:6804
+#, c-format
+msgid "%pB: symbol `%s' required but not present"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð°Ð½"
+
+#: elf.c:7147
+#, c-format
+msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¿Ð¾Ð´ÐµÐ¾Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ñ˜Ðµ Ð½Ð° â€žvaddr=%#<PRIx64>â€œ, Ð´Ð° Ð»Ð¸ Ñ˜Ðµ Ñ‚Ð¾ Ð½Ð°Ð¼ÐµÑ€Ð°Ð²Ð°Ð½Ð¾?"
 
-#: elf32-arm.c:3988 elf32-arm.c:5433
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:2324
+#: elf.c:7773
 #, c-format
-msgid "%s: cannot create stub entry %s"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð¿Ñ€Ð¸Ð²Ð¸Ð´Ð½Ð¸ ÑƒÐ½Ð¾Ñ� â€ž%sâ€œ"
+msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° Ð·Ð° â€ž%#<PRIx64>â€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾"
 
-#: elf32-arm.c:5549
+#: elf.c:8286
 #, c-format
-msgid "unable to find THUMB glue '%s' for '%s'"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žTHUMBâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr "%pB: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€ÑƒÐºÑƒÑ˜ÐµÐ¼ Ñ�Ð° Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° %x Ñƒ Ð•Ð›Ð¤ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ.  ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ›Ñƒ â€žABSâ€œ."
 
-#: elf32-arm.c:5585
+#: elf.c:8316
 #, c-format
-msgid "unable to find ARM glue '%s' for '%s'"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žARMâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÐµÐºÐ²Ð¸Ð²Ð°Ð»ÐµÐ½Ñ‚Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
 
-#: elf32-arm.c:6123
-msgid "%B: BE8 images only valid in big-endian mode."
-msgstr "%B: â€žBE8â€œ Ñ�Ð»Ð¸ÐºÐµ Ñ�Ñƒ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ðµ Ñ�Ð°Ð¼Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸."
+#: elf.c:8703
+#, c-format
+msgid "%pB: .gnu.version_r invalid entry"
+msgstr "%pB: â€ž.gnu.version_râ€œ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ�"
+
+#: elf.c:8836
+#, c-format
+msgid "%pB: .gnu.version_d invalid entry"
+msgstr "%pB: â€ž.gnu.version_dâ€œ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ�"
+
+#: elf.c:9293
+#, c-format
+msgid "%pB:%pA: error: attempting to write into an unallocated compressed section"
+msgstr "%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¿Ð¸ÑˆÐµÐ¼ Ñƒ Ð½ÐµÐ´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ñ�Ð°Ð¶ÐµÑ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+
+#: elf.c:9302
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr "%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¿Ð¸ÑˆÐµÐ¼ Ð¿Ñ€ÐµÐºÐ¾ ÐºÑ€Ð°Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ°"
+
+#: elf.c:9313
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr "%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÐ¿Ð¸ÑˆÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ Ð¿Ñ€Ð°Ð·Ð½Ñƒ Ð¼ÐµÑ’ÑƒÐ¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ"
+
+#: elf.c:12430
+msgid "GNU_MBIND section is unsupported"
+msgstr "â€žGNU_MBINDâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½"
+
+#: elf.c:12432
+msgid "symbol type STT_GNU_IFUNC is unsupported"
+msgstr "Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€žSTT_GNU_IFUNCâ€œ Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+
+#: elf.c:12434
+msgid "symbol binding STB_GNU_UNIQUE is unsupported"
+msgstr "Ñ�Ð²ÐµÐ·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€žSTB_GNU_UNIQUEâ€œ Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+
+#: elf.c:12618 elf64-sparc.c:123 elfcode.h:1482
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr "%pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%dâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld"
+
+#: elf.c:12692
+#, c-format
+msgid "%pB(%pA): link section cannot be set because the output file does not have a symbol table"
+msgstr "%pB(%pA): Ð¾Ð´ÐµÑ™Ð°Ðº Ð²ÐµÐ·Ðµ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ñ‚Ð¸ Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð¸Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð½ÐµÐ¼Ð° Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: elf.c:12704
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½"
+
+#: elf.c:12718
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr "%pB(%pA): Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ñ‚Ð¸ Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¸Ð·Ð»Ð°Ð·Ñƒ"
+
+#: elf.c:12784
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ñ˜Ðµ Ð¾Ð±Ñ€Ð°Ñ’ÐµÐ½ Ð´Ð²Ð° Ð¿ÑƒÑ‚Ð°"
+
+#: elf.c:12796
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð°Ð½!"
+
+#: elf.c:12819
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð¸ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ñƒ Ð·Ð° Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð°"
+
+#: elf.c:12838
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %u is empty"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° %u Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð°Ð½"
+
+#: elf.c:12863
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a missing symbol"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÑˆÑ‚Ð°Ñ˜ %u ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
+
+#: elf.c:12880
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a deleted symbol"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÑˆÑ‚Ð°Ñ˜ %u ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð±Ñ€Ð¸Ñ�Ð°Ð½ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
+
+#: elf.c:12893
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u is of an unknown type"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ %u Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ"
+
+#: elf32-arc.c:455 elf32-frv.c:6611 elf32-iq2000.c:868 elf32-m32c.c:914
+#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3205 elf32-visium.c:844
+#: elf64-ppc.c:5291
+#, c-format
+msgid "private flags = 0x%lx:"
+msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lx:"
+
+#: elf32-arc.c:642
+#, c-format
+msgid "warning: %pB: conflicting platform configuration %s with %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ðµ â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° â€ž%sâ€œ"
+
+#: elf32-arc.c:661
+#, c-format
+msgid "error: %pB: unable to merge CPU base attributes %s with %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ðµ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œ"
+
+#: elf32-arc.c:698
+#, c-format
+msgid "error: %pB: unable to merge ISA extension attributes %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ â€žISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° â€ž%sâ€œ"
+
+#: elf32-arc.c:722
+#, c-format
+msgid "error: %pB: conflicting ISA extension attributes %s with %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ â€žISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œ"
+
+#: elf32-arc.c:762
+#, c-format
+msgid "error: %pB: cannot mix rf16 with full register set %pB"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑˆÐ°Ð¼ â€žrf16â€œ Ñ�Ð° Ð¿ÑƒÐ½Ð¸Ð¼ Ñ�ÐºÑƒÐ¿Ð¾Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° â€ž%pBâ€œ"
+
+#: elf32-arc.c:790
+#, c-format
+msgid "error: %pB: conflicting attributes %s: %s with %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�ÑƒÐºÐ¾Ð± Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° â€ž%sâ€œ: â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œ"
+
+#: elf32-arc.c:817
+#, c-format
+msgid "error: %pB: conflicting attributes %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�ÑƒÐºÐ¾Ð± Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° â€ž%sâ€œ"
+
+#: elf32-arc.c:922
+#, c-format
+msgid "error: attempting to link %pB with a binary %pB of different architecture"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÐ²ÐµÐ¶ÐµÐ¼ â€ž%pBâ€œ Ñ�Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð¼ â€ž%pBâ€œ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ"
+
+#: elf32-arc.c:938 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1391
+#: elf32-ppc.c:3867 elf64-sparc.c:722 elfxx-mips.c:15513
+#, c-format
+msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (%#x) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (%#x)"
+
+#: elf32-arc.c:1027
+msgid "error: the ARC4 architecture is no longer supported"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€žARC4â€œ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð²Ð¸ÑˆÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+
+#: elf32-arc.c:1033
+msgid "warning: unset or old architecture flags; use default machine"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ð´ÐµÑˆÐµÐ½Ðµ Ð¸Ð»Ð¸ Ñ�Ñ‚Ð°Ñ€Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ñƒ Ð¼Ð°ÑˆÐ¸Ð½Ñƒ"
+
+#: elf32-arc.c:1159
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
+msgstr "%pB(%pA+%#<PRIx64>): â€žCMEMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾, â€ž16 MSBâ€œ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ â€ž%#xâ€œ (Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ñ˜Ðµ %#<PRIx64>)"
+
+#: elf32-arc.c:1170
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s+%#<PRIx64>' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
+msgstr "%pB(%pA+%#<PRIx64>): â€žCMEMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° â€ž%s+%#<PRIx64>â€œ Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾, â€ž16 MSBâ€œ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ â€ž%#xâ€œ (Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ñ˜Ðµ %#<PRIx64>)"
+
+#: elf32-arc.c:1885
+msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
+msgstr "â€žGOTâ€œ Ð¸ â€žPLTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ Ñ�Ð° Ð½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ð¼ ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ÐµÐ¼"
+
+#: elf32-arc.c:1909 elf32-rl78.c:1098 elf32-rx.c:1475
+#, c-format
+msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
+msgstr "%pB(%pA): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+
+#: elf32-arc.c:1914 elf32-rl78.c:1103 elf32-rx.c:1480
+#, c-format
+msgid "%pB(%pA): internal error: out of range error"
+msgstr "%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+
+#: elf32-arc.c:1919 elf32-rl78.c:1108 elf32-rx.c:1485
+#, c-format
+msgid "%pB(%pA): internal error: unsupported relocation error"
+msgstr "%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+
+#: elf32-arc.c:1924 elf32-rl78.c:1113 elf32-rx.c:1490
+#, c-format
+msgid "%pB(%pA): internal error: dangerous relocation"
+msgstr "%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elf32-arc.c:1929 elf32-rl78.c:1118 elf32-rx.c:1495
+#, c-format
+msgid "%pB(%pA): internal error: unknown error"
+msgstr "%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°"
+
+#: elf32-arc.c:2022 elf32-arc.c:2090 elf32-arm.c:15513 elf32-metag.c:2253
+#: elf32-nds32.c:5498 elfnn-aarch64.c:7739 elfnn-riscv.c:483
+#, c-format
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
+
+#: elf32-arc.c:2909
+#, c-format
+msgid "%pB: unknown mandatory ARC object attribute %d"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€ž%dâ€œ Ð¾Ð±Ð°Ð²ÐµÐ·Ð½Ð¾Ð³ â€žARCâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: elf32-arc.c:2917
+#, c-format
+msgid "warning: %pB: unknown ARC object attribute %d"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€ž%dâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€žARCâ€œ"
+
+#: elf32-arm.c:4307 elf32-arm.c:4341 elf32-arm.c:4360 elf32-arm.c:4412
+#, c-format
+msgid "%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction"
+msgstr "%pB(%pA): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð´ÑƒÐ³Ðµ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐµ Ð³Ñ€Ð°Ð½Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ðµ Ñ�Ñƒ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ â€žSHF_ARM_PURECODEâ€œ Ð¾Ð´ÐµÑ™ÐºÐ¾Ð¼ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ†Ð¸Ñ™ÐµÐ²Ðµ M-Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð° ÐºÐ¾Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÑƒÑ˜Ñƒ â€žmovwâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ"
+
+#: elf32-arm.c:4372 elf32-arm.c:4426 elf32-arm.c:9116 elf32-arm.c:9206
+#, c-format
+msgid "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s"
+msgstr "%pB(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾; Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %pB: â€ž%sâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° â€ž%sâ€œ"
+
+#: elf32-arm.c:4552
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr "Ð“Ð Ð•Ð¨ÐšÐ�: â€žCMSEâ€œ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº (Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ) Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð´Ð°Ð»ÐµÐºÐ¾ (%#<PRIx64>) Ð¾Ð´ Ð¿Ð´Ñ€ÐµÐ´Ð¸ÑˆÑ‚Ð° (%#<PRIx64>)"
+
+#: elf32-arm.c:4721
+#, c-format
+msgid "no address assigned to the veneers output section %s"
+msgstr "Ð½Ð¸Ñ˜ÐµÐ´Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐµ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
+
+#: elf32-arm.c:4796 elf32-arm.c:6943 elf32-csky.c:3172 elf32-hppa.c:584
+#: elf32-m68hc1x.c:165 elf32-metag.c:1182 elf32-nios2.c:2204 elf64-ppc.c:3775
+#: elfnn-aarch64.c:3190
+#, c-format
+msgid "%pB: cannot create stub entry %s"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ"
+
+#: elf32-arm.c:5017 elf32-csky.c:3514 elf32-hppa.c:734 elf32-m68hc11.c:422
+#: elf32-m68hc12.c:542 elf32-metag.c:3347 elf32-nios2.c:2497 elf64-ppc.c:11315
+#: elfnn-aarch64.c:3259
+msgid "%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ â€ž%pAâ€œ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ. ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð±ÐµÐ· â€ž--enable-non-contiguous-regionsâ€œ.\n"
+
+#: elf32-arm.c:5987
+#, c-format
+msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
+msgstr "%pB: Ñ�Ð¿ÐµÑ†Ð¸Ñ˜Ð°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ñ�Ð°Ð¼Ð¾ Ð·Ð° â€žARMv8-Mâ€œ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ Ð¸Ð»Ð¸ Ð½Ð¾Ð²Ð¸Ñ˜Ñƒ"
+
+#: elf32-arm.c:5996
+#, c-format
+msgid "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ�Ð¿ÐµÑ†Ð¸Ñ˜Ð°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ; Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ð¸Ð»Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð»Ð°Ð±Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ"
+
+#: elf32-arm.c:6035
+#, c-format
+msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function symbol"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ; Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ð¸Ð»Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð»Ð°Ð±Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ"
+
+#: elf32-arm.c:6041
+#, c-format
+msgid "%pB: absent standard symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+
+#: elf32-arm.c:6053
+#, c-format
+msgid "%pB: `%s' and its special symbol are in different sections"
+msgstr "%pB: â€ž%sâ€œ Ð¸ ÑšÐµÐ½ Ñ�Ð¿ÐµÑ†Ð¸Ñ˜Ð°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ñƒ Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ñ†Ð¸Ð¼Ð°"
+
+#: elf32-arm.c:6065
+#, c-format
+msgid "%pB: entry function `%s' not output"
+msgstr "%pB: Ñ„ÑƒÐ½ÐºÑ†Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ð·Ð»Ð°Ð·"
+
+#: elf32-arm.c:6072
+#, c-format
+msgid "%pB: entry function `%s' is empty"
+msgstr "%pB: Ñ„ÑƒÐ½ÐºÑ†Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð½Ð°"
+
+#: elf32-arm.c:6201
+#, c-format
+msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
+msgstr "%pB: â€ž--in-implibâ€œ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ð·Ð° â€žSecure Gatewayâ€œ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ½Ð¾Ñ�Ð°"
+
+#: elf32-arm.c:6250
+#, c-format
+msgid "%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ� Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ½Ð¾Ñ�Ð°: â€ž%sâ€œ; Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸, Ð¾Ð¿ÑˆÑ‚Ð¸ Ð¸ Ð´Ð° Ñ�Ðµ Ð¾Ð´Ð½Ð¾Ñ�Ð¸ Ð½Ð° â€žThumbâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ"
+
+#: elf32-arm.c:6272
+#, c-format
+msgid "entry function `%s' disappeared from secure code"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÑ�Ñ‚Ð°Ð»Ð° Ð¸Ð· Ð±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ð³ ÐºÐ¾Ð´Ð°"
+
+#: elf32-arm.c:6296
+#, c-format
+msgid "`%s' refers to a non entry function"
+msgstr "â€ž%sâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½Ðµ ÑƒÐ»Ð°Ð·Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ"
+
+#: elf32-arm.c:6311
+#, c-format
+msgid "%pB: visibility of symbol `%s' has changed"
+msgstr "%pB: Ð²Ð¸Ð´Ñ™Ð¸Ð²Ð¾Ñ�Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð°"
+
+#: elf32-arm.c:6320
+#, c-format
+msgid "%pB: incorrect size for symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+
+#: elf32-arm.c:6339
+#, c-format
+msgid "offset of veneer for entry function `%s' not a multiple of its size"
+msgstr "Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐµ Ð·Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ðº Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
+
+#: elf32-arm.c:6359
+msgid "new entry function(s) introduced but no output import library specified:"
+msgstr "Ð½Ð¾Ð²Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚Ð¸Ð³Ð»Ð° Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾ ÑƒÐ»Ð°Ð·Ð½Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°:"
+
+#: elf32-arm.c:6367
+#, c-format
+msgid "start address of `%s' is different from previous link"
+msgstr "Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð° â€ž%sâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ðµ Ð²ÐµÐ·Ðµ"
+
+#: elf32-arm.c:7076 elf32-arm.c:7111
+#, c-format
+msgid "unable to find %s glue '%s' for '%s'"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€ž%sâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+
+#: elf32-arm.c:7822
+#, c-format
+msgid "%pB: BE8 images only valid in big-endian mode"
+msgstr "%pB: â€žBE8â€œ Ñ�Ð»Ð¸ÐºÐµ Ñ�Ñƒ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ðµ Ñ�Ð°Ð¼Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸"
 
 #. Give a warning, but do as the user requests anyway.
-#: elf32-arm.c:6353
-msgid "%B: warning: selected VFP11 erratum workaround is not necessary for target architecture"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ð¾ Ñ€ÐµÑˆÐµÑšÐµ â€žVFP11â€œ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ñ†Ð¸Ñ™Ð½Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
-
-#: elf32-arm.c:6897 elf32-arm.c:6917
-msgid "%B: unable to find VFP11 veneer `%s'"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€žVFP11â€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ â€ž%sâ€œ"
-
-#: elf32-arm.c:6966
-#, c-format
-msgid "Invalid TARGET2 relocation type '%s'."
-msgstr "Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žTARGET2â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ."
-
-#. PR ld/16017: Do not generate ARM instructions for
-#. the PLT if compiling for a thumb-only target.
-#.
-#. FIXME: We ought to be able to generate thumb PLT instructions...
-#: elf32-arm.c:7696
-msgid "%B: Warning: thumb mode PLT generation not currently supported"
-msgstr "%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žPLTâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ñƒ â€žthumbâ€œ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
-
-#: elf32-arm.c:7909
-msgid "%B(%A+0x%lx):unexpected Thumb instruction '0x%x' in TLS trampoline"
-msgstr "%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žThumbâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž0x%xâ€œ Ñƒ â€žTLSâ€œ Ñ‚Ñ€Ð°Ð¼Ð±ÑƒÐ»Ð¸Ð½Ð¸"
-
-#: elf32-arm.c:7948
-msgid "%B(%A+0x%lx):unexpected ARM instruction '0x%x' in TLS trampoline"
-msgstr "%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žARMâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž0x%xâ€œ Ñƒ â€žTLSâ€œ Ñ‚Ñ€Ð°Ð¼Ð±ÑƒÐ»Ð¸Ð½Ð¸"
-
-#: elf32-arm.c:8412
-msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'."
-msgstr "\\%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€žArm BLXâ€œ Ñ†Ð¸Ñ™Ð° Ð½Ð° Ð�Ñ€Ð¼ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ."
-
-#: elf32-arm.c:8831
-msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'."
-msgstr "%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žThumb BLXâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ†Ð¸Ñ™Ð° Ð½Ð° â€žthumbâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ."
-
-#: elf32-arm.c:9672
-msgid "%B(%A+0x%lx):unexpected Thumb instruction '0x%x' referenced by TLS_GOTDESC"
-msgstr "%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žThumbâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž0x%xâ€œ Ð½Ð° ÐºÐ¾Ñ˜Ñƒ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žTLS_GOTDESCâ€œ"
-
-#: elf32-arm.c:9695
-msgid "%B(%A+0x%lx):unexpected ARM instruction '0x%x' referenced by TLS_GOTDESC"
-msgstr "%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žARMâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž0x%xâ€œ Ð½Ð° ÐºÐ¾Ñ˜Ñƒ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žTLS_GOTDESCâ€œ"
-
-#: elf32-arm.c:9724
-msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object"
-msgstr "%B(%A+0x%lx): â€žR_ARM_TLS_LE32â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
-
-#: elf32-arm.c:9937
-msgid "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group relocations"
-msgstr "%B(%A+0x%lx): Ð”Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ðµ Ñ�Ñƒ Ñ�Ð°Ð¼Ð¾ â€žADDâ€œ Ð¸Ð»Ð¸ â€žSUBâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€žALUâ€œ Ð³Ñ€ÑƒÐ¿Ðµ"
-
-#: elf32-arm.c:9977 elf32-arm.c:10065 elf32-arm.c:10149 elf32-arm.c:10235
-msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s"
-msgstr "%B(%A+0x%lx): ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð´ÐµÑ™ÐµÑšÐ° 0x%lx Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð³Ñ€ÑƒÐ¿Ðµ â€ž%sâ€œ"
-
-#: elf32-arm.c:10474 elf32-sh.c:3994 elf64-sh64.c:1544
-msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section"
-msgstr "%B(%A+0x%lx): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSEC_MERGEâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°"
-
-#: elf32-arm.c:10585 elf32-m68k.c:4155 elf32-xtensa.c:2799
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:4192
-msgid "%B(%A+0x%lx): %s used with TLS symbol %s"
-msgstr "%B(%A+0x%lx): â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ�Ð° â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%sâ€œ"
-
-#: elf32-arm.c:10586 elf32-m68k.c:4156 elf32-xtensa.c:2800
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:4193
-msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s"
-msgstr "%B(%A+0x%lx): â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ�Ð° â€žÐ½Ðµ-TLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%sâ€œ"
+#: elf32-arm.c:8049
+#, c-format
+msgid "%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ð¾ Ñ€ÐµÑˆÐµÑšÐµ â€žVFP11â€œ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ñ†Ð¸Ñ™Ð½Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
+
+#: elf32-arm.c:8076
+#, c-format
+msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ð¾ Ñ€ÐµÑˆÐµÑšÐµ â€žSTM32L4XXâ€œ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ñ†Ð¸Ñ™Ð½Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
 
-#: elf32-arm.c:10666 elf32-tic6x.c:2736
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:4481
+#: elf32-arm.c:8612 elf32-arm.c:8632 elf32-arm.c:8699 elf32-arm.c:8718
+#, c-format
+msgid "%pB: unable to find %s veneer `%s'"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€ž%sâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ â€ž%sâ€œ"
+
+#: elf32-arm.c:8925
+#, c-format
+msgid "%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block"
+msgstr "%pB(%pA+%#x): Ð³Ñ€ÐµÑˆÐºÐ°: Ð²Ð¸ÑˆÐµÑ�Ñ‚Ñ€ÑƒÐºÐ¾ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐµ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñƒ Ð½Ðµ-Ð¿Ð¾Ñ�Ð»ÐµÐ´ÑšÐ¾Ñ˜ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¸ â€žITâ€œ Ð±Ð»Ð¾ÐºÐ°: â€žSTM32L4XXâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ â€žgccâ€œ Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-mrestrict-itâ€œ Ð·Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ñ�Ð°Ð¼Ð¾ Ñ˜ÐµÐ´Ð½Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ Ð¿Ð¾ â€žITâ€œ Ð±Ð»Ð¾ÐºÑƒ"
+
+#: elf32-arm.c:9023
+#, c-format
+msgid "invalid TARGET2 relocation type '%s'"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žTARGET2â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ"
+
+#. FIXME: We ought to be able to generate thumb-1 PLT
+#. instructions...
+#: elf32-arm.c:9825
+#, c-format
+msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žPLTâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ñƒ â€žthumb-1â€œ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+
+#: elf32-arm.c:10135 elf32-arm.c:10177
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#lxâ€œ Ñƒ â€žTLSâ€œ Ñ‚Ñ€Ð°Ð¼Ð±ÑƒÐ»Ð¸Ð½Ð¸"
+
+#: elf32-arm.c:10521
+msgid "shared object"
+msgstr "Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+
+#: elf32-arm.c:10524
+msgid "PIE executable"
+msgstr "â€žPIEâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð°"
+
+#: elf32-arm.c:10527
+#, c-format
+msgid "%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž%sâ€œ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
+
+#: elf32-arm.c:10664 elf32-arm.c:11091
+#, c-format
+msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%s BLXâ€œ Ñ†Ð¸Ñ™Ð° Ð½Ð° â€ž%sâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ"
+
+#: elf32-arm.c:12003 elf32-arm.c:12029
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#lxâ€œ Ð½Ð° ÐºÐ¾Ñ˜Ñƒ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žTLS_GOTDESCâ€œ"
+
+#: elf32-arm.c:12075 elf32-csky.c:4746 elf32-m68k.c:3735 elf32-metag.c:1915
+#: elf32-nios2.c:4385
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
+msgstr "%pB(%pA+%#<PRIx64>): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+
+#: elf32-arm.c:12289
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group relocations"
+msgstr "%pB(%pA+%#<PRIx64>): Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ðµ Ñ�Ñƒ Ñ�Ð°Ð¼Ð¾ â€žADDâ€œ Ð¸Ð»Ð¸ â€žSUBâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€žALUâ€œ Ð³Ñ€ÑƒÐ¿Ðµ"
+
+#: elf32-arm.c:12330 elf32-arm.c:12422 elf32-arm.c:12510 elf32-arm.c:12600
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group relocation %s"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð´ÐµÑ™ÐµÑšÐ° %#<PRIx64> Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð³Ñ€ÑƒÐ¿Ðµ â€ž%sâ€œ"
+
+#: elf32-arm.c:13232 elf32-sh.c:3571
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
+msgstr "%pB(%pA+%#<PRIx64>): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSEC_MERGEâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°"
+
+#: elf32-arm.c:13345 elf32-m68k.c:3968 elf32-xtensa.c:2761
+#: elfnn-aarch64.c:6829
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
+msgstr "%pB(%pA+%#<PRIx64>): â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ�Ð° â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%sâ€œ"
+
+#: elf32-arm.c:13347 elf32-m68k.c:3970 elf32-xtensa.c:2763
+#: elfnn-aarch64.c:6831
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
+msgstr "%pB(%pA+%#<PRIx64>): â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ�Ð° â€žÐ½Ðµ-TLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%sâ€œ"
+
+#: elf32-arm.c:13430 elf32-tic6x.c:2649 elfnn-aarch64.c:7166
 msgid "out of range"
 msgstr "Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
 
-#: elf32-arm.c:10670 elf32-nios2.c:3525 elf32-tic6x.c:2740
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:4485
+#: elf32-arm.c:13434 elf32-nios2.c:4519 elf32-pru.c:936 elf32-tic6x.c:2653
+#: elfnn-aarch64.c:7170
 msgid "unsupported relocation"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: elf32-arm.c:10678 elf32-nios2.c:3535 elf32-tic6x.c:2748
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:4493
+#: elf32-arm.c:13442 elf32-nios2.c:4529 elf32-pru.c:946 elf32-tic6x.c:2661
+#: elfnn-aarch64.c:7178
 msgid "unknown error"
 msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°"
 
-#: elf32-arm.c:11153
-msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð§Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%Bâ€œ Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð½ÐµÐ¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¸ ÐºÐ¾Ð´ Ñƒ â€ž%Bâ€œ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñ�Ð° ÑšÐ¸Ð¼"
-
-#: elf32-arm.c:11240
-msgid "%B: Unknown mandatory EABI object attribute %d"
-msgstr "%B: ÐžÐ±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
-
-#: elf32-arm.c:11248
-msgid "Warning: %B: Unknown EABI object attribute %d"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %B: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
-
-#: elf32-arm.c:11449
-msgid "error: %B: Unknown CPU architecture"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°"
-
-#: elf32-arm.c:11487
-msgid "error: %B: Conflicting CPU architectures %d/%d"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %B: Ð�Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° %d/%d Ñ�Ñƒ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ"
-
-#: elf32-arm.c:11576
-msgid "Error: %B has both the current and legacy Tag_MPextension_use attributes"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð¿Ð¾Ñ�ÐµÐ´ÑƒÑ˜Ðµ Ð¸ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸ Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸ â€žTag_MPextension_useâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚"
-
-#: elf32-arm.c:11601
-msgid "error: %B uses VFP register arguments, %B does not"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ðµ â€žVFPâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°, Ð° â€ž%Bâ€œ Ð½Ðµ"
-
-#: elf32-arm.c:11747
-msgid "error: %B: unable to merge virtualization attributes with %B"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ Ð²Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ðµ Ñ�Ð° â€ž%Bâ€œ"
-
-#: elf32-arm.c:11773
-msgid "error: %B: Conflicting architecture profiles %c/%c"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %B: Ð£ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%c/%câ€œ"
-
-#: elf32-arm.c:11877
-msgid "Warning: %B: Conflicting platform configuration"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %B: ÐŸÐ¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ðµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ"
-
-#: elf32-arm.c:11886
-msgid "error: %B: Conflicting use of R9"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %B: Ð£ Ñ�Ð¸ÐºÐ¾Ð±Ñƒ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ â€žR9â€œ"
-
-#: elf32-arm.c:11898
-msgid "error: %B: SB relative addressing conflicts with use of R9"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %B: Ð ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ â€žSBâ€œ Ð°Ð´Ñ€ÐµÑ�Ð¸Ñ€Ð°ÑšÐµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žR9â€œ"
-
-#: elf32-arm.c:11911
-msgid "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¸ â€žwchar_tâ€œ Ð¾Ð½Ð´Ð° Ñ›Ðµ Ð¸Ð·Ð»Ð°Ð· Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¸ â€žwchar_tâ€œ. ÐšÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ â€žwchar_tâ€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ ÐºÑ€Ð¾Ð· Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ ÑƒÑ�Ð¿ÐµÑ‚Ð¸"
-
-#: elf32-arm.c:11942
-msgid "warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %s Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ° Ð¾Ð½Ð´Ð° Ñ›Ðµ Ð¸Ð·Ð»Ð°Ð· Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %s Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ°. ÐšÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ° ÐºÑ€Ð¾Ð· Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ ÑƒÑ�Ð¿ÐµÑ‚Ð¸"
-
-#: elf32-arm.c:11954
-msgid "error: %B uses iWMMXt register arguments, %B does not"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ðµ â€žiWMMXtâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°, Ð° â€ž%Bâ€œ Ð½Ðµ"
-
-#: elf32-arm.c:11971
-msgid "error: fp16 format mismatch between %B and %B"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€žfp16â€œ Ð·Ð°Ð¿Ð¸Ñ� Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ñ‚Ð¸ Ð·Ð° â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ"
-
-#: elf32-arm.c:12007
-msgid "%B has has both the current and legacy Tag_MPextension_use attributes"
-msgstr "â€ž%Bâ€œ Ð¿Ð¾Ñ�ÐµÐ´ÑƒÑ˜Ðµ Ð¸ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸ Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸ â€žTag_MPextension_useâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚"
+#: elf32-arm.c:13920
+#, c-format
+msgid "warning: not setting interworking flag of %pB since it has already been specified as non-interworking"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ�Ð°Ð¼ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%pBâ€œ Ð¿Ð¾ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð²ÐµÑ› Ð½Ð°Ð²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ Ð½Ðµ-Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¾"
+
+#: elf32-arm.c:13924
+#, c-format
+msgid "warning: clearing the interworking flag of %pB due to outside request"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐºÐ»Ð°ÑšÐ°Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%pBâ€œ ÑƒÑ�Ð»ÐµÐ´ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ñ�Ð¿Ð¾Ñ™Ð°"
+
+#: elf32-arm.c:13969
+#, c-format
+msgid "warning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ‡Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%pBâ€œ Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð½ÐµÐ¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¸ ÐºÐ¾Ð´ Ñƒ â€ž%pBâ€œ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñ�Ð° ÑšÐ¸Ð¼"
+
+#: elf32-arm.c:14056
+#, c-format
+msgid "%pB: unknown mandatory EABI object attribute %d"
+msgstr "%pB: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
+
+#: elf32-arm.c:14064
+#, c-format
+msgid "warning: %pB: unknown EABI object attribute %d"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
+
+#: elf32-arm.c:14364
+#, c-format
+msgid "error: %pB: unknown CPU architecture"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°"
+
+#: elf32-arm.c:14402 elf32-nios2.c:2953
+#, c-format
+msgid "error: %pB: conflicting CPU architectures %d/%d"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° %d/%d Ñ�Ñƒ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ"
+
+#: elf32-arm.c:14499
+#, c-format
+msgid "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr "Ð“Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¿Ð¾Ñ�ÐµÐ´ÑƒÑ˜Ðµ Ð¸ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸ Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸ â€žTag_MPextension_useâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚"
+
+#: elf32-arm.c:14528
+#, c-format
+msgid "error: %pB uses VFP register arguments, %pB does not"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ðµ â€žVFPâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°, Ð° â€ž%pBâ€œ Ð½Ðµ"
+
+#: elf32-arm.c:14687
+#, c-format
+msgid "error: %pB: unable to merge virtualization attributes with %pB"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ Ð²Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ðµ Ñ�Ð° â€ž%pBâ€œ"
+
+#: elf32-arm.c:14713
+#, c-format
+msgid "error: %pB: conflicting architecture profiles %c/%c"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð£ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%c/%câ€œ"
+
+#: elf32-arm.c:14852
+#, c-format
+msgid "warning: %pB: conflicting platform configuration"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ðµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ"
+
+#: elf32-arm.c:14861
+#, c-format
+msgid "error: %pB: conflicting use of R9"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ â€žR9â€œ"
+
+#: elf32-arm.c:14873
+#, c-format
+msgid "error: %pB: SB relative addressing conflicts with use of R9"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ â€žSBâ€œ Ð°Ð´Ñ€ÐµÑ�Ð¸Ñ€Ð°ÑšÐµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žR9â€œ"
+
+#: elf32-arm.c:14886
+#, c-format
+msgid "warning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¸ â€žwchar_tâ€œ Ð¾Ð½Ð´Ð° Ñ›Ðµ Ð¸Ð·Ð»Ð°Ð· Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¸ â€žwchar_tâ€œ; ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ â€žwchar_tâ€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ ÐºÑ€Ð¾Ð· Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ ÑƒÑ�Ð¿ÐµÑ‚Ð¸"
+
+#: elf32-arm.c:14917
+#, c-format
+msgid "warning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %s Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ° Ð¾Ð½Ð´Ð° Ñ›Ðµ Ð¸Ð·Ð»Ð°Ð· Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %s Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ°; ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð½Ð°Ð±Ñ€Ð°Ñ˜Ð°ÑšÐ° ÐºÑ€Ð¾Ð· Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ ÑƒÑ�Ð¿ÐµÑ‚Ð¸"
+
+#: elf32-arm.c:14929
+#, c-format
+msgid "error: %pB uses iWMMXt register arguments, %pB does not"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ðµ â€žiWMMXtâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°, Ð° â€ž%pBâ€œ Ð½Ðµ"
+
+#: elf32-arm.c:14946
+#, c-format
+msgid "error: fp16 format mismatch between %pB and %pB"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€žfp16â€œ Ð·Ð°Ð¿Ð¸Ñ� Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ñ‚Ð¸ Ð·Ð° â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ"
+
+#: elf32-arm.c:14982
+#, c-format
+msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr "â€ž%pBâ€œ Ð¿Ð¾Ñ�ÐµÐ´ÑƒÑ˜Ðµ Ð¸ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸ Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸ â€žTag_MPextension_useâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚"
 
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
 #. Ignore init flag - it may not be set, despite the flags field containing valid data.
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
-#: elf32-arm.c:12095 elf32-bfin.c:4949 elf32-cris.c:4139 elf32-m68hc1x.c:1427
-#: elf32-m68k.c:1195 elf32-score.c:4004 elf32-score7.c:3808 elf32-vax.c:529
-#: elf32-xgate.c:674 elfxx-mips.c:14955
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:4645
+#: elf32-arm.c:15069 elf32-bfin.c:4719 elf32-cris.c:3861 elf32-m68hc1x.c:1416
+#: elf32-m68k.c:1267 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
+#: elf32-xgate.c:494 elfxx-mips.c:16199 elfnn-aarch64.c:7332
 #, c-format
 msgid "private flags = %lx:"
 msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx:"
 
-#: elf32-arm.c:12104
+#: elf32-arm.c:15078
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾]"
 
-#: elf32-arm.c:12112
+#: elf32-arm.c:15086
 #, c-format
 msgid " [VFP float format]"
 msgstr " [â€žVFPâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]"
 
-#: elf32-arm.c:12114
+#: elf32-arm.c:15088
 #, c-format
 msgid " [Maverick float format]"
 msgstr " [â€žMaverickâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]"
 
-#: elf32-arm.c:12116
+#: elf32-arm.c:15090
 #, c-format
 msgid " [FPA float format]"
 msgstr " [â€žFPAâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]"
 
-#: elf32-arm.c:12125
+#: elf32-arm.c:15093
+#, c-format
+msgid " [floats passed in float registers]"
+msgstr " [Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÐµÐ½Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸]"
+
+#: elf32-arm.c:15096 elf32-arm.c:15182
+#, c-format
+msgid " [position independent]"
+msgstr " [Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ñ‚Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°]"
+
+#: elf32-arm.c:15099
 #, c-format
 msgid " [new ABI]"
 msgstr " [Ð½Ð¾Ð²Ð¸ â€žABIâ€œ]"
 
-#: elf32-arm.c:12128
+#: elf32-arm.c:15102
 #, c-format
 msgid " [old ABI]"
 msgstr " [Ñ�Ñ‚Ð°Ñ€Ð¸ â€žABIâ€œ]"
 
-#: elf32-arm.c:12131
+#: elf32-arm.c:15105
 #, c-format
 msgid " [software FP]"
 msgstr " [Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·]"
 
-#: elf32-arm.c:12140
+#: elf32-arm.c:15114
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [Ð˜Ð·Ð´Ð°ÑšÐµ1 â€žEABIâ€œ]"
 
-#: elf32-arm.c:12143 elf32-arm.c:12154
+#: elf32-arm.c:15117 elf32-arm.c:15128
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ñ€ÐµÑ’ÐµÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°]"
 
-#: elf32-arm.c:12145 elf32-arm.c:12156
+#: elf32-arm.c:15119 elf32-arm.c:15130
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [Ñ‚Ð°Ð±ÐµÐ»Ð° Ð½ÐµÑ�Ñ€ÐµÑ’ÐµÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°]"
 
-#: elf32-arm.c:12151
+#: elf32-arm.c:15125
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [Ð˜Ð·Ð´Ð°ÑšÐµ2 â€žEABIâ€œ]"
 
-#: elf32-arm.c:12159
+#: elf32-arm.c:15133
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°]"
 
-#: elf32-arm.c:12162
+#: elf32-arm.c:15136
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [Ð¼Ð°Ð¿Ð¸Ñ€Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð°]"
 
-#: elf32-arm.c:12169
+#: elf32-arm.c:15143
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [Ð˜Ð·Ð´Ð°ÑšÐµ3 â€žEABIâ€œ]"
 
-#: elf32-arm.c:12173
+#: elf32-arm.c:15147
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [Ð˜Ð·Ð´Ð°ÑšÐµ4 â€žEABIâ€œ]"
 
-#: elf32-arm.c:12177
+#: elf32-arm.c:15151
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [Ð˜Ð·Ð´Ð°ÑšÐµ5 â€žEABIâ€œ]"
 
-#: elf32-arm.c:12180
+#: elf32-arm.c:15154
 #, c-format
 msgid " [soft-float ABI]"
 msgstr " [â€žABIâ€œ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¾Ð³ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°]"
 
-#: elf32-arm.c:12183
+#: elf32-arm.c:15157
 #, c-format
 msgid " [hard-float ABI]"
 msgstr " [â€žABIâ€œ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¾Ð³ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°]"
 
-#: elf32-arm.c:12189
+#: elf32-arm.c:15163
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:12192
+#: elf32-arm.c:15166
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:12198
+#: elf32-arm.c:15172
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ>"
 
-#: elf32-arm.c:12205
+#: elf32-arm.c:15179
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð°]"
 
-#: elf32-arm.c:12208
+#: elf32-arm.c:15185
 #, c-format
-msgid " [has entry point]"
-msgstr " [Ð¸Ð¼Ð° Ñ‚Ð°Ñ‡ÐºÑƒ ÑƒÐ»Ð°Ð·Ð°]"
+msgid " [FDPIC ABI supplement]"
+msgstr " [â€žFDPIC ABIâ€œ Ð´Ð¾Ð´Ð°Ñ‚Ð°Ðº]"
 
-#: elf32-arm.c:12213 /src/binutils-gdb/bfd/elfnn-aarch64.c:4648
+#: elf32-arm.c:15190 elfnn-aarch64.c:7335
 #, c-format
 msgid "<Unrecognised flag bits set>"
 msgstr "<Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ñ�ÐºÑƒÐ¿ Ð±Ð¸Ñ‚Ð¾Ð²Ð° Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ>"
 
-#: elf32-arm.c:12522 elf32-i386.c:1452 elf32-s390.c:1005 elf32-tic6x.c:2812
-#: elf32-tilepro.c:1511 elf32-xtensa.c:999 elf64-s390.c:927
-#: elf64-x86-64.c:1467 elfxx-sparc.c:1415 elfxx-tilegx.c:1728
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:5038
-msgid "%B: bad symbol index: %d"
-msgstr "%B: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %d"
-
-#: elf32-arm.c:12674 elf32-metag.c:2283 elf64-x86-64.c:1593
-#: elf64-x86-64.c:1771 elfxx-mips.c:8482
-msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
-
-#: elf32-arm.c:13796
-#, c-format
-msgid "Errors encountered processing file %s"
-msgstr "Ð�Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐµ Ñ‚Ð¾ÐºÐ¾Ð¼ Ð¾Ð±Ñ€Ð°Ð´Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ"
-
-#: elf32-arm.c:14230
-#, c-format
-msgid "error: required section '%s' not found in the linker script"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñ‚Ñ€Ð°Ð¶ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°"
-
-#: elf32-arm.c:15252
-msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location"
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: ÐžÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð½ÐµÐ±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ñ˜ Ð»Ð¾ÐºÐ°Ñ†Ð¸Ñ˜Ð¸"
+#: elf32-arm.c:15307 elf32-i386.c:1524 elf32-s390.c:925 elf32-tic6x.c:2724
+#: elf32-tilepro.c:1443 elf32-xtensa.c:1093 elf64-s390.c:847
+#: elf64-x86-64.c:1902 elfxx-sparc.c:1386 elfxx-tilegx.c:1664
+#: elfnn-aarch64.c:7606 elfnn-riscv.c:525
+#, c-format
+msgid "%pB: bad symbol index: %d"
+msgstr "%pB: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %d"
+
+#: elf32-arm.c:15696
+#, c-format
+msgid "FDPIC does not yet support %s relocation to become dynamic for executable"
+msgstr "â€žFDPICâ€œ Ñ˜Ð¾Ñˆ ÑƒÐ²ÐµÐº Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð´Ð° Ð±Ð¸ Ð¿Ð¾Ñ�Ñ‚Ð°Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð·Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ"
+
+#: elf32-arm.c:16939
+#, c-format
+msgid "errors encountered processing file %pB"
+msgstr "Ð½Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐµ Ñ‚Ð¾ÐºÐ¾Ð¼ Ð¾Ð±Ñ€Ð°Ð´Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%pBâ€œ"
+
+#: elf32-arm.c:17326 elflink.c:12818 elflink.c:12865
+#, c-format
+msgid "could not find section %s"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+
+#: elf32-arm.c:18550
+#, c-format
+msgid "%pB: error: Cortex-A8 erratum stub is allocated in unsafe location"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð½ÐµÐ±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ñ˜ Ð»Ð¾ÐºÐ°Ñ†Ð¸Ñ˜Ð¸"
 
 #. There's not much we can do apart from complain if this
 #. happens.
-#: elf32-arm.c:15279
-msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)"
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: ÐžÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)"
-
-#: elf32-arm.c:15373 elf32-arm.c:15395
-msgid "%B: error: VFP11 veneer out of range"
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: â€žVFP11â€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
-
-#: elf32-arm.c:16020
-msgid "error: %B is already in final BE8 format"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð²ÐµÑ› Ñƒ Ð·Ð°Ð²Ñ€ÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ â€žBE8â€œ"
-
-#: elf32-arm.c:16096
-msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð˜Ð·Ð²Ð¾Ñ€Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ â€ž%Bâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d, Ð°Ð»Ð¸ Ñ†Ð¸Ñ™Ð½Ð¸ â€ž%Bâ€œ Ð¸Ð¼Ð° â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d"
-
-#: elf32-arm.c:16112
-msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žAPCS-%dâ€œ, Ð´Ð¾Ðº Ñ†Ð¸Ñ™Ð½Ð¸ â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žAPCS-%dâ€œ"
-
-#: elf32-arm.c:16137
-msgid "error: %B uses VFP instructions, whereas %B does not"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žVFPâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%Bâ€œ Ð½Ðµ"
-
-#: elf32-arm.c:16141
-msgid "error: %B uses FPA instructions, whereas %B does not"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žFPAâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%Bâ€œ Ð½Ðµ"
-
-#: elf32-arm.c:16151
-msgid "error: %B uses Maverick instructions, whereas %B does not"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žMaverickâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%Bâ€œ Ð½Ðµ"
-
-#: elf32-arm.c:16155
-msgid "error: %B does not use Maverick instructions, whereas %B does"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð½Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žMaverickâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%Bâ€œ Ð´Ð°"
-
-#: elf32-arm.c:16174
-msgid "error: %B uses software FP, whereas %B uses hardware FP"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, Ð´Ð¾Ðº â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸"
-
-#: elf32-arm.c:16178
-msgid "error: %B uses hardware FP, whereas %B uses software FP"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, Ð´Ð¾Ðº â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸"
-
-#: elf32-avr.c:1264 elf32-bfin.c:3228 elf32-cris.c:2024 elf32-epiphany.c:568
-#: elf32-fr30.c:597 elf32-frv.c:4047 elf32-i860.c:1220 elf32-ip2k.c:1479
-#: elf32-iq2000.c:696 elf32-m32c.c:561 elf32-mep.c:543 elf32-metag.c:2000
-#: elf32-moxie.c:290 elf32-msp430.c:1325 elf32-mt.c:399 elf32-openrisc.c:412
-#: elf32-tilepro.c:3674 elf32-v850.c:2289 elf32-xstormy16.c:944
-#: elf64-mmix.c:1546 elfxx-tilegx.c:4059
+#: elf32-arm.c:18577
+#, c-format
+msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)"
+
+#: elf32-arm.c:19404 elf32-arm.c:19426
+#, c-format
+msgid "%pB: error: VFP11 veneer out of range"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žVFP11â€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+
+#: elf32-arm.c:19477
+#, c-format
+msgid "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range by %<PRId64> bytes; cannot encode branch instruction"
+msgstr "%pB(%#<PRIx64>): Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žSTM32L4XXâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ; Ð¸Ñ�ÐºÐ¾Ñ‡Ð¸Ñ… Ð¸Ð· Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° %<PRId64> Ð±Ð°Ñ˜Ñ‚Ð°; Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ Ð³Ñ€Ð°Ð½Ðµ"
+
+#: elf32-arm.c:19516
+#, c-format
+msgid "%pB: error: cannot create STM32L4XX veneer"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žSTM32L4XXâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ"
+
+#: elf32-arm.c:20600
+#, c-format
+msgid "error: %pB is already in final BE8 format"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ñ˜Ðµ Ð²ÐµÑ› Ñƒ Ð·Ð°Ð²Ñ€ÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ â€žBE8â€œ"
+
+#: elf32-arm.c:20676
+#, c-format
+msgid "error: source object %pB has EABI version %d, but target %pB has EABI version %d"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð¾Ñ€Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ â€ž%pBâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d, Ð°Ð»Ð¸ Ñ†Ð¸Ñ™Ð½Ð¸ â€ž%pBâ€œ Ð¸Ð¼Ð° â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d"
+
+#: elf32-arm.c:20691
+#, c-format
+msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žAPCS-%dâ€œ, Ð´Ð¾Ðº Ñ†Ð¸Ñ™Ð½Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žAPCS-%dâ€œ"
+
+#: elf32-arm.c:20701
+#, c-format
+msgid "error: %pB passes floats in float registers, whereas %pB passes them in integer registers"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸"
+
+#: elf32-arm.c:20705
+#, c-format
+msgid "error: %pB passes floats in integer registers, whereas %pB passes them in float registers"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸"
+
+#: elf32-arm.c:20715 elf32-arm.c:20719 elf32-arm.c:20729
+#, c-format
+msgid "error: %pB uses %s instructions, whereas %pB does not"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%pBâ€œ Ð½Ðµ"
+
+#: elf32-arm.c:20733
+#, c-format
+msgid "error: %pB does not use %s instructions, whereas %pB does"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð½Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%pBâ€œ Ð´Ð°"
+
+#: elf32-arm.c:20752
+#, c-format
+msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, Ð´Ð¾Ðº â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸"
+
+#: elf32-arm.c:20756
+#, c-format
+msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, Ð´Ð¾Ðº â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸"
+
+#: elf32-arm.c:20770
+#, c-format
+msgid "warning: %pB supports interworking, whereas %pB does not"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%pBâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°"
+
+#: elf32-arm.c:20776
+#, c-format
+msgid "warning: %pB does not support interworking, whereas %pB does"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°"
+
+#: elf32-avr.c:1516 elf32-bfin.c:3134 elf32-cris.c:2041 elf32-epiphany.c:573
+#: elf32-fr30.c:602 elf32-frv.c:4056 elf32-ft32.c:502 elf32-ip2k.c:1488
+#: elf32-iq2000.c:699 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1994
+#: elf32-moxie.c:296 elf32-msp430.c:1375 elf32-mt.c:406 elf32-or1k.c:1825
+#: elf32-tilepro.c:3388 elf32-v850.c:2298 elf32-visium.c:688
+#: elf32-xstormy16.c:937 elf64-bpf.c:521 elf64-mmix.c:1549 elfxx-tilegx.c:3752
 msgid "internal error: dangerous relocation"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: elf32-avr.c:2476 elf32-hppa.c:578 elf32-m68hc1x.c:160 elf32-metag.c:1197
-#: elf32-nios2.c:1357
-msgid "%B: cannot create stub entry %s"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ"
+#: elf32-avr.c:3327 elfnn-aarch64.c:3221
+#, c-format
+msgid "cannot create stub entry %s"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ"
 
 #: elf32-bfin.c:107 elf32-bfin.c:363
 msgid "relocation should be even number"
 msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ñ€ÐµÐ±Ð° Ð±Ð¸Ñ‚Ð¸ Ð¿Ð°Ñ€Ð°Ð½ Ð±Ñ€Ð¾Ñ˜"
 
-#: elf32-bfin.c:1601
-msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'"
-msgstr "%B(%A+0x%lx): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
-
-#: elf32-bfin.c:1634 elf32-i386.c:4406 elf32-m68k.c:4197 elf32-s390.c:3364
-#: elf64-s390.c:3290 elf64-x86-64.c:4506
-msgid "%B(%A+0x%lx): reloc against `%s': error %d"
-msgstr "%B(%A+0x%lx): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d"
-
-#: elf32-bfin.c:2732
-msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° â€ž%A+0x%xâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
+#: elf32-bfin.c:1584
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf32-bfin.c:1616 elf32-i386.c:3443 elf32-m68k.c:4008 elf32-s390.c:3140
+#: elf64-s390.c:3089 elf64-x86-64.c:4112
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d"
+
+#: elf32-bfin.c:2641
+#, c-format
+msgid "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero addend"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° â€ž%pA+%#<PRIx64>â€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
 
-#: elf32-bfin.c:2748
+#: elf32-bfin.c:2658
 msgid "relocation references symbol not defined in the module"
 msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñƒ"
 
-#: elf32-bfin.c:2845
+#: elf32-bfin.c:2755
 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
 msgstr "â€žR_BFIN_FUNCDESCâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
 
-#: elf32-bfin.c:2886 elf32-bfin.c:3009
+#: elf32-bfin.c:2795 elf32-bfin.c:2916
 msgid "cannot emit fixups in read-only section"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ"
 
-#: elf32-bfin.c:2917 elf32-bfin.c:3047 elf32-lm32.c:1095 elf32-sh.c:4913
+#: elf32-bfin.c:2825 elf32-bfin.c:2953 elf32-lm32.c:1006 elf32-sh.c:4389
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ"
 
-#: elf32-bfin.c:2967
+#: elf32-bfin.c:2875
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
 msgstr "â€žR_BFIN_FUNCDESC_VALUEâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
 
-#: elf32-bfin.c:3132
+#: elf32-bfin.c:3038
 msgid "relocations between different segments are not supported"
 msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ñ… Ñ�ÐµÐ³Ð¼ÐµÐ½Ð°Ñ‚Ð° Ð½Ð¸Ñ�Ñƒ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
 
-#: elf32-bfin.c:3133
+#: elf32-bfin.c:3039
 msgid "warning: relocation references a different segment"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚"
 
-#: elf32-bfin.c:4907
-msgid "%B: unsupported relocation type %i"
-msgstr "%B: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%iâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
-
-#: elf32-bfin.c:4995 elf32-frv.c:6600
+#: elf32-bfin.c:4770 elf32-frv.c:6584
 #, c-format
-msgid "%s: cannot link non-fdpic object file into fdpic executable"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ð½Ðµ-â€žfdpicâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ â€žfdpicâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ñƒ"
+msgid "%pB: cannot link non-fdpic object file into fdpic executable"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ð½Ðµ-â€žfdpicâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ â€žfdpicâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ñƒ"
 
-#: elf32-bfin.c:4999 elf32-frv.c:6604
+#: elf32-bfin.c:4774 elf32-frv.c:6588
 #, c-format
-msgid "%s: cannot link fdpic object file into non-fdpic executable"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ â€žfdpicâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ Ð½Ðµ-â€žfdpicâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ñƒ"
+msgid "%pB: cannot link fdpic object file into non-fdpic executable"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ â€žfdpicâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ Ð½Ðµ-â€žfdpicâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ñƒ"
 
-#: elf32-bfin.c:5153
+#: elf32-bfin.c:4924
 #, c-format
 msgid "*** check this relocation %s"
 msgstr "*** Ð¿Ñ€Ð¾Ð²ÐµÑ€Ð°Ð²Ð° Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
 
-#: elf32-cris.c:1110
-msgid "%B, section %A: unresolvable relocation %s against symbol `%s'"
-msgstr "â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
-
-#: elf32-cris.c:1172
-msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'"
-msgstr "â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð�ÐµÐ¼Ð° Ð½Ð¸ â€žPLTâ€œ Ð½Ð¸ â€žGOTâ€œ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
-
-#: elf32-cris.c:1174
-msgid "%B, section %A: No PLT for relocation %s against symbol `%s'"
-msgstr "â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð�ÐµÐ¼Ð° â€žPLTâ€œ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf32-bfin.c:5040
+msgid "the bfin target does not currently support the generation of copy relocations"
+msgstr "â€žbfinâ€œ Ñ†Ð¸Ñ™ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ð²Ð°ÑšÐ°"
+
+#: elf32-bfin.c:5334 elf32-cr16.c:2731 elf32-m68k.c:4422
+msgid "unsupported relocation type"
+msgstr "Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+
+#: elf32-cris.c:1119
+#, c-format
+msgid "%pB, section %pA: unresolvable relocation %s against symbol `%s'"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf32-cris.c:1184
+#, c-format
+msgid "%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð½ÐµÐ¼Ð° Ð½Ð¸ â€žPLTâ€œ Ð½Ð¸ â€žGOTâ€œ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf32-cris.c:1187
+#, c-format
+msgid "%pB, section %pA: no PLT for relocation %s against symbol `%s'"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð½ÐµÐ¼Ð° â€žPLTâ€œ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf32-cris.c:1180 elf32-cris.c:1313 elf32-cris.c:1573 elf32-cris.c:1656
-#: elf32-cris.c:1809 elf32-tic6x.c:2645
+#: elf32-cris.c:1193 elf32-cris.c:1326 elf32-cris.c:1591 elf32-cris.c:1674
+#: elf32-cris.c:1827 elf32-tic6x.c:2560
 msgid "[whose name is lost]"
 msgstr "[Ñ‡Ð¸Ñ˜Ð¸ Ð½Ð°Ð·Ð¸Ð² Ñ˜Ðµ Ð¸Ð·Ð³ÑƒÐ±Ñ™ÐµÐ½]"
 
-#: elf32-cris.c:1299 elf32-tic6x.c:2630
-msgid "%B, section %A: relocation %s with non-zero addend %d against local symbol"
-msgstr "â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ %d Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
-
-#: elf32-cris.c:1307 elf32-cris.c:1650 elf32-cris.c:1803 elf32-tic6x.c:2638
-msgid "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'"
-msgstr "â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ %d Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
-
-#: elf32-cris.c:1333
-msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'"
-msgstr "â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: â€ž%sâ€œ"
-
-#: elf32-cris.c:1349
-msgid "%B, section %A: relocation %s with no GOT created"
-msgstr "â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð±ÐµÐ· Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð³ â€žGOTâ€œ"
+#: elf32-cris.c:1311 elf32-tic6x.c:2544
+#, c-format
+msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against local symbol"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ %<PRId64> Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2553
+#, c-format
+msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ %<PRId64> Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf32-cris.c:1347
+#, c-format
+msgid "%pB, section %pA: relocation %s is not allowed for global symbol: `%s'"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: â€ž%sâ€œ"
+
+#: elf32-cris.c:1364
+#, c-format
+msgid "%pB, section %pA: relocation %s with no GOT created"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð±ÐµÐ· Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð³ â€žGOTâ€œ"
 
 #. We shouldn't get here for GCC-emitted code.
-#: elf32-cris.c:1564
-msgid "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?"
-msgstr "â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ñƒ ÑƒÐ¿ÑƒÑ‚Ñƒ ÐºÐ° â€ž%sâ€œ, Ð¼Ð¾Ð¶Ð´Ð° Ñ˜Ðµ Ð´Ð¾ÑˆÐ»Ð¾ Ð´Ð¾ Ð¼ÐµÑˆÐ°ÑšÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ˜Ðµ?"
-
-#: elf32-cris.c:1937
-msgid "%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?"
-msgstr "â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ, ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð¸Ð·Ð²Ð°Ð½ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°, Ð¼Ð¾Ð¶Ð´Ð° Ñ˜Ðµ Ð´Ð¾ÑˆÐ»Ð¾ Ð´Ð¾ Ð¼ÐµÑˆÐ°ÑšÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ˜Ðµ?"
+#: elf32-cris.c:1581
+#, c-format
+msgid "%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ñƒ ÑƒÐ¿ÑƒÑ‚Ñƒ ÐºÐ° â€ž%sâ€œ, Ð¼Ð¾Ð¶Ð´Ð° Ñ˜Ðµ Ð´Ð¾ÑˆÐ»Ð¾ Ð´Ð¾ Ð¼ÐµÑˆÐ°ÑšÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ˜Ðµ?"
+
+#: elf32-cris.c:1584
+#, c-format
+msgid "%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ, ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð¸Ð·Ð²Ð°Ð½ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°, Ð¼Ð¾Ð¶Ð´Ð° Ñ˜Ðµ Ð´Ð¾ÑˆÐ»Ð¾ Ð´Ð¾ Ð¼ÐµÑˆÐ°ÑšÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ˜Ðµ?"
+
+#: elf32-cris.c:1955
+#, c-format
+msgid "%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ, ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð¸Ð·Ð²Ð°Ð½ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°, Ð¼Ð¾Ð¶Ð´Ð° Ñ˜Ðµ Ð´Ð¾ÑˆÐ»Ð¾ Ð´Ð¾ Ð¼ÐµÑˆÐ°ÑšÐ° Ð´ÐµÐºÐ»Ð°Ñ€Ð°Ñ†Ð¸Ñ˜Ðµ?"
 
-#: elf32-cris.c:1990
+#: elf32-cris.c:2008
 msgid "(too many global variables for -fpic: recompile with -fPIC)"
 msgstr "(Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð¿ÑˆÑ‚Ð¸Ñ… Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð¸Ñ… Ð·Ð° â€ž-fpicâ€œ: Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ)"
 
-#: elf32-cris.c:1997
+#: elf32-cris.c:2015
 msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)"
 msgstr "(Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸ Ð½Ð¸Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¸ Ð·Ð° â€ž-fpicâ€œ Ð¸Ð»Ð¸ â€ž-msmall-tlsâ€œ: Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ Ð¸Ð»Ð¸ â€ž-mno-small-tlsâ€œ)"
 
-#: elf32-cris.c:3234
-msgid ""
-"%B, section %A:\n"
-"  v10/v32 compatible object %s must not contain a PIC relocation"
-msgstr ""
-"â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ:\n"
-"  v10/v32 Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ â€ž%sâ€œ Ð½Ðµ Ñ�Ð¼Ðµ Ð´Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žPICâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: elf32-cris.c:3050
+#, c-format
+msgid "%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: v10/v32 Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð½Ðµ Ñ�Ð¼Ðµ Ð´Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žPICâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: elf32-cris.c:3342
+#: elf32-cris.c:3104
+#, c-format
 msgid ""
-"%B, section %A:\n"
+"%pB, section %pA:\n"
 "  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC"
 msgstr ""
-"â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ:\n"
+"â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ:\n"
 "  Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ñ‚Ð¸Ð¿Ð¸Ñ‡Ð½Ð¾ Ð¼ÐµÑˆÐ°ÑšÐµ Ð¾Ð¿Ñ†Ð¸Ñ˜Ð°, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
 
-#: elf32-cris.c:3556
-msgid ""
-"%B, section %A:\n"
-"  relocation %s should not be used in a shared object; recompile with -fPIC"
-msgstr ""
-"â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ:\n"
-"  Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ðµ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
+#: elf32-cris.c:3322
+#, c-format
+msgid "%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ðµ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
 
-#: elf32-cris.c:3978
-msgid ""
-"%B, section `%A', to symbol `%s':\n"
-"  relocation %s should not be used in a shared object; recompile with -fPIC"
-msgstr ""
-"â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ, ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ:\n"
-"  Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ðµ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
+#: elf32-cris.c:3700
+#, c-format
+msgid "%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC"
+msgstr "â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ, ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ðµ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
 
-#: elf32-cris.c:4091
-msgid "Unexpected machine number"
-msgstr "Ð�ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð¼Ð°ÑˆÐ¸Ð½Ñ�ÐºÐ¸ Ð±Ñ€Ð¾Ñ˜"
+#: elf32-cris.c:3812
+msgid "unexpected machine number"
+msgstr "Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð¼Ð°ÑˆÐ¸Ð½Ðµ"
 
-#: elf32-cris.c:4142
+#: elf32-cris.c:3864
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr " [Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ðµ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ðµ â€ž _ â€œ]"
 
-#: elf32-cris.c:4145
+#: elf32-cris.c:3867
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 Ð¸ v32]"
 
-#: elf32-cris.c:4148
+#: elf32-cris.c:3870
 #, c-format
 msgid " [v32]"
 msgstr " [v32]"
 
-#: elf32-cris.c:4191
-msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols"
-msgstr "%B: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ â€ž_â€œ, Ð°Ð»Ð¸ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸Ð¼Ð° Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð°"
-
-#: elf32-cris.c:4192
-msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols"
-msgstr "%B: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð°, Ð°Ð»Ð¸ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸Ð¼Ð° Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ â€ž_â€œ"
-
-#: elf32-cris.c:4211
-msgid "%B contains CRIS v32 code, incompatible with previous objects"
-msgstr "â€ž%Bâ€ž Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žCRIS v32â€œ ÐºÐ¾Ð´ ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
-
-#: elf32-cris.c:4213
-msgid "%B contains non-CRIS-v32 code, incompatible with previous objects"
-msgstr "â€ž%Bâ€ž Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-â€žCRIS-v32â€œ ÐºÐ¾Ð´ ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+#: elf32-cris.c:3914
+#, c-format
+msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ â€ž_â€œ, Ð°Ð»Ð¸ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸Ð¼Ð° Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð°"
+
+#: elf32-cris.c:3915
+#, c-format
+msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð°, Ð°Ð»Ð¸ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸Ð¼Ð° Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ â€ž_â€œ"
+
+#: elf32-cris.c:3934
+#, c-format
+msgid "%pB contains CRIS v32 code, incompatible with previous objects"
+msgstr "â€ž%pBâ€ž Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žCRIS v32â€œ ÐºÐ¾Ð´ ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+
+#: elf32-cris.c:3936
+#, c-format
+msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
+msgstr "â€ž%pBâ€ž Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-â€žCRIS-v32â€œ ÐºÐ¾Ð´ ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+
+#: elf32-csky.c:2022
+msgid "GOT table size out of range"
+msgstr "Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€žGOTâ€œ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+
+#: elf32-csky.c:2802
+#, c-format
+msgid "warning: unrecognized arch eflag '%#lx'"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žeâ€œ-Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%#lxâ€œ"
+
+#: elf32-csky.c:2862
+#, c-format
+msgid "%pB: machine flag conflict with target"
+msgstr "%pB: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ñ†Ð¸Ñ™ÐµÐ¼"
+
+#: elf32-csky.c:2875
+#, c-format
+msgid "warning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€œ%pBâ€œ-Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€žck%sâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ñ†Ð¸Ñ™Ð½Ð¸Ð¼ â€žck%sâ€œ, ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ â€žck%sâ€œ"
 
-#: elf32-dlx.c:142
+#. The r_type is error, not support it.
+#: elf32-csky.c:4118 elf32-i386.c:350
 #, c-format
-msgid "BFD Link Error: branch (PC rel16) to section (%s) not supported"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð” Ð²ÐµÐ·Ðµ: Ð³Ñ€Ð°Ð½Ð°ÑšÐµ (PC rel16) Ñƒ Ð¾Ð´ÐµÑ™Ð°Ðº (%s) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+msgid "%pB: unsupported relocation type: %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %#x"
+
+#: elf32-dlx.c:141
+#, c-format
+msgid "branch (PC rel16) to section (%s) not supported"
+msgstr "Ð³Ñ€Ð°Ð½Ð°ÑšÐµ (PC rel16) Ñƒ Ð¾Ð´ÐµÑ™Ð°Ðº (%s) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
 
 #: elf32-dlx.c:204
 #, c-format
-msgid "BFD Link Error: jump (PC rel26) to section (%s) not supported"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð” Ð²ÐµÐ·Ðµ: ÑƒÑ�ÐºÐ°ÐºÐ°ÑšÐµ (PC rel26) Ñƒ Ð¾Ð´ÐµÑ™Ð°Ðº (%s) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+msgid "jump (PC rel26) to section (%s) not supported"
+msgstr "ÑƒÑ�ÐºÐ°ÐºÐ°ÑšÐµ (PC rel26) Ñƒ Ð¾Ð´ÐµÑ™Ð°Ðº (%s) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
 
 #. Only if it's not an unresolved symbol.
-#: elf32-epiphany.c:564 elf32-ip2k.c:1475
+#: elf32-epiphany.c:569 elf32-ip2k.c:1484
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ñ€Ð°Ð·Ð¼Ð°ÐºÐ° Ð°Ð´Ñ€ÐµÑ�Ðµ â€ždata/insnâ€œ"
 
-#: elf32-frv.c:1460 elf32-frv.c:1609
+#: elf32-frv.c:1452 elf32-frv.c:1603
 msgid "relocation requires zero addend"
 msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº"
 
-#: elf32-frv.c:2822
+#: elf32-frv.c:2832
+#, c-format
 msgid "%H: relocation to `%s+%v' may have caused the error above\n"
 msgstr "%H: â€žÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%s+%vâ€œ Ñ˜Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð¿Ñ€Ð¾ÑƒÐ·Ñ€Ð¾ÐºÐ¾Ð²Ð°Ð»Ð¾ Ð³Ð¾Ñ€ÑšÑƒ Ð³Ñ€ÐµÑˆÐºÑƒ\n"
 
-#: elf32-frv.c:2839
+#: elf32-frv.c:2849
 msgid "%H: relocation references symbol not defined in the module\n"
 msgstr "%H: â€žÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñƒ\n"
 
-#: elf32-frv.c:2915
+#: elf32-frv.c:2925
 msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
 msgstr "%H: â€žR_FRV_GETTLSOFFâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ Ð¿Ð¾Ð·Ð¸Ð²Ð°\n"
 
-#: elf32-frv.c:2956
+#: elf32-frv.c:2966
 msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
 msgstr "%H: â€žR_FRV_GOTTLSDESC12â€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žlddiâ€œ\n"
 
-#: elf32-frv.c:3027
+#: elf32-frv.c:3037
 msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
 msgstr "%H: â€žR_FRV_GOTTLSDESCHIâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žsethiâ€œ\n"
 
-#: elf32-frv.c:3064
+#: elf32-frv.c:3074
 msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
 msgstr "%H: â€žR_FRV_GOTTLSDESCLOâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žsetloâ€œ Ð¸Ð»Ð¸ â€žsetlosâ€œ\n"
 
-#: elf32-frv.c:3111
+#: elf32-frv.c:3121
 msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
 msgstr "%H: â€žR_FRV_TLSDESC_RELAXâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žlddâ€œ\n"
 
-#: elf32-frv.c:3195
+#: elf32-frv.c:3205
 msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
 msgstr "%H: â€žR_FRV_GETTLSOFF_RELAXâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žcalllâ€œ\n"
 
-#: elf32-frv.c:3249
+#: elf32-frv.c:3259
 msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
 msgstr "%H: â€žR_FRV_GOTTLSOFF12â€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žldiâ€œ\n"
 
-#: elf32-frv.c:3279
+#: elf32-frv.c:3289
 msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
 msgstr "%H: â€žR_FRV_GOTTLSOFFHIâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žsethiâ€œ\n"
 
-#: elf32-frv.c:3308
+#: elf32-frv.c:3318
 msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
 msgstr "%H: â€žR_FRV_GOTTLSOFFLOâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žsetloâ€œ Ð¸Ð»Ð¸ â€žsetlosâ€œ\n"
 
-#: elf32-frv.c:3338
+#: elf32-frv.c:3348
 msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
 msgstr "%H: â€žR_FRV_TLSOFF_RELAXâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žldâ€œ\n"
 
-#: elf32-frv.c:3383
+#: elf32-frv.c:3393
 msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
 msgstr "%H: â€žR_FRV_TLSMOFFHIâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žsethiâ€œ\n"
 
-#: elf32-frv.c:3410
+#: elf32-frv.c:3420
 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
 msgstr "R_FRV_TLSMOFFLOâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€žsetloâ€œ Ð¸Ð»Ð¸ â€žsetlosâ€œ\n"
 
-#: elf32-frv.c:3531
-msgid "%H: R_FRV_FUNCDESC references dynamic symbol with nonzero addend\n"
-msgstr "%H: â€žR_FRV_FUNCDESCâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼\n"
+#: elf32-frv.c:3541 elf32-frv.c:3661
+msgid "%H: %s references dynamic symbol with nonzero addend\n"
+msgstr "%H: â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼\n"
 
-#: elf32-frv.c:3572 elf32-frv.c:3694
+#: elf32-frv.c:3582 elf32-frv.c:3703
 msgid "%H: cannot emit fixups in read-only section\n"
 msgstr "%H: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ\n"
 
-#: elf32-frv.c:3603 elf32-frv.c:3737
+#: elf32-frv.c:3612 elf32-frv.c:3745
 msgid "%H: cannot emit dynamic relocations in read-only section\n"
 msgstr "%H: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ\n"
 
-#: elf32-frv.c:3652
-msgid "%H: R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend\n"
-msgstr "%H: â€žR_FRV_FUNCDESC_VALUEâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼\n"
-
-#: elf32-frv.c:3908
+#: elf32-frv.c:3917
+#, c-format
 msgid "%H: reloc against `%s' references a different segment\n"
 msgstr "%H: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
 
-#: elf32-frv.c:4058
+#: elf32-frv.c:4068
+#, c-format
 msgid "%H: reloc against `%s': %s\n"
 msgstr "%H: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: %s\n"
 
-#: elf32-frv.c:6265
-msgid "%B: unsupported relocation type %i\n"
-msgstr "%B: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%iâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°\n"
+#: elf32-frv.c:6495
+#, c-format
+msgid "%pB: compiled with %s and linked with modules that use non-pic relocations"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž%sâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ Ð½Ðµ-â€žpicâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
 
-#: elf32-frv.c:6514
+#: elf32-frv.c:6549 elf32-iq2000.c:830 elf32-m32c.c:876
 #, c-format
-msgid "%s: compiled with %s and linked with modules that use non-pic relocations"
-msgstr "%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž%sâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ Ð½Ðµ-â€žPICâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+msgid "%pB: compiled with %s and linked with modules compiled with %s"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž%sâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž%sâ€œ"
 
-#: elf32-frv.c:6567 elf32-iq2000.c:828 elf32-m32c.c:812
+#: elf32-frv.c:6562
 #, c-format
-msgid "%s: compiled with %s and linked with modules compiled with %s"
-msgstr "%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž%sâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž%sâ€œ"
+msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (%#x) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (%#x)"
 
-#: elf32-frv.c:6579
+#: elf32-gen.c:71
 #, c-format
-msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)"
-msgstr "%s: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (0x%lx) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (0x%lx)"
+msgid "%pB: relocations in generic ELF (EM: %d)"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð¿ÑˆÑ‚ÐµÐ¼ â€žELFâ€œ-Ñƒ (EM: %d)"
+
+#: elf32-hppa.c:763 elf32-hppa.c:844 elf64-ppc.c:11859
+msgid "%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ â€ž%pAâ€œ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ. ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð±ÐµÐ· â€ž--enable-non-contiguous-regionsâ€œ.\n"
 
-#: elf32-frv.c:6627 elf32-iq2000.c:865 elf32-m32c.c:848 elf32-mt.c:561
-#: elf32-rl78.c:1069 elf32-rx.c:3040 elf64-ppc.c:5839
+#: elf32-hppa.c:865 elf32-hppa.c:3407
 #, c-format
-msgid "private flags = 0x%lx:"
-msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lx:"
+msgid "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ñ�Ñ‚Ð¸Ð³Ð½ÐµÐ¼ â€ž%sâ€œ, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-ffunction-sectionsâ€œ"
+
+#: elf32-hppa.c:1243
+#, c-format
+msgid "%pB: relocation %s can not be used when making a shared object; recompile with -fPIC"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
+
+#: elf32-hppa.c:2584
+#, c-format
+msgid "%pB: duplicate export stub %s"
+msgstr "%pB: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð¸Ð·Ð²Ð¾Ð·Ð° â€ž%sâ€œ"
+
+#: elf32-hppa.c:3240
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared link"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° â€ž%sâ€œ Ð·Ð° â€žinsn %#xâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñƒ Ð½Ðµ-Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð²ÐµÐ·Ð¸"
+
+#: elf32-hppa.c:4036
+#, c-format
+msgid "%s has both normal and TLS relocs"
+msgstr "â€ž%sâ€œ Ð¸Ð¼Ð° Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾ Ð¸ â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: elf32-gen.c:69 elf64-gen.c:69
-msgid "%B: Relocations in generic ELF (EM: %d)"
-msgstr "%B: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð¿ÑˆÑ‚ÐµÐ¼ â€žELFâ€œ-Ñƒ (EM: %d)"
-
-#: elf32-hppa.c:830 elf32-hppa.c:3592
-msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections"
-msgstr "%B(%A+0x%lx): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ñ�Ñ‚Ð¸Ð³Ð½ÐµÐ¼ â€ž%sâ€œ, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-ffunction-sectionsâ€œ"
-
-#: elf32-hppa.c:1268
-msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
-
-#: elf32-hppa.c:2781
-msgid "%B: duplicate export stub %s"
-msgstr "%B: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡Ð¸ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð¸Ð·Ð²Ð¾Ð·Ð° â€ž%sâ€œ"
-
-#: elf32-hppa.c:3427
-msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link"
-msgstr "%B(%A+0x%lx): Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° â€ž%sâ€œ Ð·Ð° â€žinsn 0x%xâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñƒ Ð½Ðµ-Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð²ÐµÐ·Ð¸"
-
-#: elf32-hppa.c:4279
-msgid "%B(%A+0x%lx): cannot handle %s for %s"
-msgstr "%B(%A+0x%lx): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+#: elf32-hppa.c:4054
+#, c-format
+msgid "%pB:%s has both normal and TLS relocs"
+msgstr "%pB: â€ž%sâ€œ Ð¸Ð¼Ð° Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾ Ð¸ â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elf32-hppa.c:4113
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
 
-#: elf32-hppa.c:4598
+#: elf32-hppa.c:4417
 msgid ".got section not immediately after .plt section"
 msgstr "Ð¾Ð´ÐµÑ™Ð°Ðº â€ž.gotâ€œ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ð¼Ð°Ñ… Ð½Ð°ÐºÐ¾Ð½ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pltâ€œ"
 
-#. Unknown relocation.
-#: elf32-i386.c:380 elf32-m68k.c:353 elf32-ppc.c:2035 elf32-s390.c:345
-#: elf32-tic6x.c:2667 elf64-ppc.c:2427 elf64-s390.c:371 elf64-x86-64.c:281
-msgid "%B: invalid relocation type %d"
-msgstr "%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
-
-#: elf32-i386.c:1394 elf64-x86-64.c:1410
-msgid "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed"
-msgstr "%B: Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾ â€žTLSâ€œ Ð¿Ñ€ÐµÐ»Ð°Ð· Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð¿Ñ€Ð¸ 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ"
-
-#: elf32-i386.c:1642 elf32-s390.c:1233 elf32-sh.c:6263 elf32-tilepro.c:1627
-#: elf32-xtensa.c:1176 elf64-s390.c:1166 elfxx-sparc.c:1596
-#: elfxx-tilegx.c:1836
-msgid "%B: `%s' accessed both as normal and thread local symbol"
-msgstr "%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
-
-#: elf32-i386.c:2500 elf64-x86-64.c:2582
-msgid "%P: %B: warning: relocation against `%s' in readonly section `%A'.\n"
-msgstr "%P: %B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ.\n"
-
-#: elf32-i386.c:2740 elf64-x86-64.c:2820
-msgid "%P: %B: warning: relocation in readonly section `%A'.\n"
-msgstr "%P: %B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ.\n"
-
-#: elf32-i386.c:3207 elf32-tilepro.c:2873 elf64-x86-64.c:3275
-#: elfxx-tilegx.c:3172 /src/binutils-gdb/bfd/elfnn-aarch64.c:4099
-msgid "%B: unrecognized relocation (0x%x) in section `%A'"
-msgstr "%B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (0x%x) Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ"
-
-#: elf32-i386.c:3368 elf64-x86-64.c:3380 elfxx-sparc.c:3150
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:3496
-msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¾Ð´Ñ€Ð°Ð´Ð¸"
+#: elf32-i386.c:1169 elf64-x86-64.c:1382
+#, c-format
+msgid "%pB: TLS transition from %s to %s against `%s' at %#<PRIx64> in section `%pA' failed"
+msgstr "%pB: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾ â€žTLSâ€œ Ð¿Ñ€ÐµÐ»Ð°Ð· Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð¿Ñ€Ð¸ %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
+
+#: elf32-i386.c:1272
+#, c-format
+msgid "%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object"
+msgstr "%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ â€žGOTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOT32Xâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð±ÐµÐ· Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
 
-#: elf32-i386.c:3610 elf64-x86-64.c:3777
+#: elf32-i386.c:1721 elf32-s390.c:1153 elf32-sh.c:5494 elf32-tilepro.c:1556
+#: elf32-xtensa.c:1265 elf64-s390.c:1085 elfxx-sparc.c:1555
+#: elfxx-tilegx.c:1769 elfnn-riscv.c:437
+#, c-format
+msgid "%pB: `%s' accessed both as normal and thread local symbol"
+msgstr "%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
+
+#: elf32-i386.c:1793
+#, c-format
+msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¸ Ð½Ðµ-â€žPICâ€œ Ð¿Ð¾Ð·Ð¸Ð² Ð·Ð° â€žIFUNCâ€œ â€ž%sâ€œ"
+
+#: elf32-i386.c:2373 elf64-x86-64.c:2721
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+
+#: elf32-i386.c:2406 elf32-i386.c:3654 elf32-i386.c:3795 elf64-x86-64.c:2778
+#: elf64-x86-64.c:4285 elf64-x86-64.c:4441
+#, c-format
+msgid "Local IFUNC function `%s' in %pB\n"
+msgstr "Ð›Ð¾ÐºÐ°Ð»Ð½Ð° â€žIFUNCâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ\n"
+
+#: elf32-i386.c:2563
+#, c-format
+msgid "%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object"
+msgstr "%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ â€žGOTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð±ÐµÐ· Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+
+#: elf32-i386.c:2598 elf64-x86-64.c:2977
 msgid "hidden symbol"
 msgstr "Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
 
-#: elf32-i386.c:3613 elf64-x86-64.c:3780
+#: elf32-i386.c:2601 elf64-x86-64.c:2980
 msgid "internal symbol"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
 
-#: elf32-i386.c:3616 elf64-x86-64.c:3783
+#: elf32-i386.c:2604 elf64-x86-64.c:2983
 msgid "protected symbol"
 msgstr "Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
 
-#: elf32-i386.c:3619 elf64-x86-64.c:3786
+#: elf32-i386.c:2607 elf64-x86-64.c:2986
 msgid "symbol"
 msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
 
-#: elf32-i386.c:3624
-msgid "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOTOFFâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
-
-#: elf32-i386.c:3635
-msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOTOFFâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+#: elf32-i386.c:2613
+#, c-format
+msgid "%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOTOFFâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
 
-#: elf32-i386.c:4923 elf32-tilepro.c:3923 elf64-x86-64.c:4964
-#: elfxx-tilegx.c:4326 /src/binutils-gdb/bfd/elfnn-aarch64.c:7105
+#: elf32-i386.c:2626
 #, c-format
-msgid "discarded output section: `%A'"
-msgstr "Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð°: â€ž%Aâ€œ"
+msgid "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOTOFFâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
 
-#: elf32-ip2k.c:857 elf32-ip2k.c:863 elf32-ip2k.c:930 elf32-ip2k.c:936
+#: elf32-ip2k.c:855 elf32-ip2k.c:861 elf32-ip2k.c:928 elf32-ip2k.c:934
 msgid "ip2k relaxer: switch table without complete matching relocation information."
 msgstr "Ñ€ÐµÐ»Ð°ÐºÑ�ÐµÑ€ â€žip2kâ€œ: Ð¿Ñ€ÐµÐ±Ð°Ñ†Ð¸Ð²Ð°ÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð±ÐµÐ· Ð¿Ð¾Ñ‚Ð¿ÑƒÐ½Ð¾Ð³ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð°ÑšÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ."
 
-#: elf32-ip2k.c:880 elf32-ip2k.c:963
+#: elf32-ip2k.c:878 elf32-ip2k.c:961
 msgid "ip2k relaxer: switch table header corrupt."
 msgstr "Ñ€ÐµÐ»Ð°ÐºÑ�ÐµÑ€ â€žip2kâ€œ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ Ñ˜Ðµ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ñ€ÐµÐ±Ð°Ñ†Ð¸Ð²Ð°Ñ‡Ð°."
 
-#: elf32-ip2k.c:1292
-#, c-format
-msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)."
-msgstr "ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€žip2kâ€œ: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð½Ð° 0x%08lx (Ñ†Ð¸Ñ™ = 0x%08lx)."
-
-#: elf32-ip2k.c:1308
+#: elf32-ip2k.c:1297
 #, c-format
-msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)."
-msgstr "ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€žip2kâ€œ: Ñ�ÑƒÐ²Ð¸ÑˆÐ½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð½Ð° 0x%08lx (Ñ†Ð¸Ñ™ = 0x%08lx)."
+msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr "ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€žip2kâ€œ: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð½Ð° %#<PRIx64> (Ñ†Ð¸Ñ™ = %#<PRIx64>)"
 
-#: elf32-iq2000.c:841 elf32-m32c.c:824
+#: elf32-ip2k.c:1316
 #, c-format
-msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
-msgstr "%s: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (0x%lx) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (0x%lx)"
+msgid "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr "ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€žip2kâ€œ: Ñ�ÑƒÐ²Ð¸ÑˆÐ½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð½Ð° %#<PRIx64> (Ñ†Ð¸Ñ™ = %#<PRIx64>)"
 
-#: elf32-lm32.c:698 elf32-nios2.c:2191
+#: elf32-lm32.c:608 elf32-nios2.c:3148
 msgid "global pointer relative relocation when _gp not defined"
 msgstr "Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: elf32-lm32.c:753 elf32-nios2.c:2623
+#: elf32-lm32.c:663 elf32-nios2.c:3585
 msgid "global pointer relative address out of range"
 msgstr "Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
 
-#: elf32-lm32.c:1049
-msgid "internal error: addend should be zero for R_LM32_16_GOT"
-msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€žR_LM32_16_GOTâ€œ"
+#: elf32-lm32.c:959
+#, c-format
+msgid "internal error: addend should be zero for %s"
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€ž%sâ€œ"
 
-#: elf32-m32r.c:1453
+#: elf32-m32r.c:1471
 msgid "SDA relocation when _SDA_BASE_ not defined"
-msgstr "Ð¡Ð”Ð� Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÐºÐ°Ð´Ð° â€ž_SDA_BASE_â€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
+msgstr "â€žSDAâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÐºÐ°Ð´Ð° â€ž_SDA_BASE_â€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: elf32-m32r.c:3003
-msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)"
-msgstr "%B: ÐœÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%A)"
+#: elf32-m32r.c:2799 elf32-microblaze.c:1097 elf32-microblaze.c:1145
+#, c-format
+msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)"
+msgstr "%pB: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%pA)"
 
-#: elf32-m32r.c:3529
-msgid "%B: Instruction set mismatch with previous modules"
-msgstr "%B: Ð¡ÐºÑƒÐ¿ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
+#: elf32-m32r.c:3302
+#, c-format
+msgid "%pB: instruction set mismatch with previous modules"
+msgstr "%pB: Ñ�ÐºÑƒÐ¿ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
 
-#: elf32-m32r.c:3550 elf32-nds32.c:5636
+#: elf32-m32r.c:3323 elf32-nds32.c:6855
 #, c-format
 msgid "private flags = %lx"
 msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx"
 
-#: elf32-m32r.c:3555
+#: elf32-m32r.c:3328
 #, c-format
 msgid ": m32r instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32râ€œ"
 
-#: elf32-m32r.c:3556
+#: elf32-m32r.c:3329
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32rxâ€œ"
 
-#: elf32-m32r.c:3557
+#: elf32-m32r.c:3330
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32r2â€œ"
 
-#: elf32-m68hc1x.c:1114
+#: elf32-m68hc1x.c:1136
 #, c-format
-msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
-msgstr "Ð£Ð¿ÑƒÑ›Ð¸Ð²Ð°ÑšÐµ Ð½Ð° Ð´Ð°Ð»ÐµÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¾Ð¼ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð½ÐµÑ‚Ð°Ñ‡Ð½Ð¾Ð³ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°"
+msgid "reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
+msgstr "ÑƒÐ¿ÑƒÑ›Ð¸Ð²Ð°ÑšÐµ Ð½Ð° Ð´Ð°Ð»ÐµÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¾Ð¼ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð½ÐµÑ‚Ð°Ñ‡Ð½Ð¾Ð³ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°"
 
-#: elf32-m68hc1x.c:1150
+#: elf32-m68hc1x.c:1167
 #, c-format
 msgid "XGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code."
 msgstr "Ð�Ð´Ñ€ÐµÑ�Ð° â€žXGATEâ€œ (%lx) Ð½Ð¸Ñ˜Ðµ ÑƒÐ½ÑƒÑ‚Ð°Ñ€ Ð´ÐµÑ™ÐµÐ½Ðµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ (0xE000-0xFFFF), Ñ�Ñ‚Ð¾Ð³Ð° Ð¼Ð¾Ñ€Ð°Ñ‚Ðµ Ñ€ÑƒÑ‡Ð½Ð¾ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð¸Ñ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ñƒ, Ð¸ Ð¿Ð¾ Ð¼Ð¾Ð³ÑƒÑ›Ñ�Ñ‚Ð²Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ñ‚Ðµ Ñ�Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð¾Ð¼ Ñƒ Ð²Ð°ÑˆÐµÐ¼ ÐºÐ¾Ð´Ñƒ."
 
-#: elf32-m68hc1x.c:1170
+#: elf32-m68hc1x.c:1183
 #, c-format
 msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)"
 msgstr "Ð³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° [%lx:%04lx] (%lx) Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¸Ñ�Ñ‚Ð¾Ñ˜ Ð³Ñ€ÑƒÐ¿Ð¸ ÐºÐ°Ð¾ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð° Ð³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° [%lx:%04lx] (%lx)"
 
-#: elf32-m68hc1x.c:1190
+#: elf32-m68hc1x.c:1198
 #, c-format
 msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
 msgstr "ÑƒÐ¿ÑƒÑ‚Ð° Ð½Ð° Ð³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ [%lx:%04lx] Ñƒ Ð¾Ð±Ð¸Ñ‡Ð½Ð¾Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð½Ð° %04lx"
 
-#: elf32-m68hc1x.c:1237
+#: elf32-m68hc1x.c:1234
 #, c-format
 msgid "S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your code"
 msgstr "Ð�Ð´Ñ€ÐµÑ�Ð° â€žS12â€œ (%lx) Ð½Ð¸Ñ˜Ðµ ÑƒÐ½ÑƒÑ‚Ð°Ñ€ Ð´ÐµÑ™ÐµÐ½Ðµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ (0x2000-0x4000), Ñ�Ñ‚Ð¾Ð³Ð° Ð¼Ð¾Ñ€Ð°Ñ‚Ðµ Ñ€ÑƒÑ‡Ð½Ð¾ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð¸Ñ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ñƒ Ñƒ Ð²Ð°ÑˆÐµÐ¼ ÐºÐ¾Ð´Ñƒ"
 
-#: elf32-m68hc1x.c:1370
-msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
-msgstr "%B: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 16 Ð±Ð¸Ñ‚Ð° (-mshort) Ð° Ð´Ñ€ÑƒÐ³Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 32 Ð±Ð¸Ñ‚Ð°"
-
-#: elf32-m68hc1x.c:1377
-msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
-msgstr "%B: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 32 Ð±Ð¸Ñ‚Ð° (-fshort-double) Ð° Ð´Ñ€ÑƒÐ³Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 64 Ð±Ð¸Ñ‚Ð°"
-
-#: elf32-m68hc1x.c:1386
-msgid "%B: linking files compiled for HCS12 with others compiled for HC12"
-msgstr "%B: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° â€žHCS12â€œ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸Ð¼ Ð·Ð° â€žHC12â€œ"
-
-#: elf32-m68hc1x.c:1402 elf32-ppc.c:4776 elf64-sparc.c:706 elfxx-mips.c:14817
-msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
-msgstr "%B: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (0x%lx) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (0x%lx)"
+#: elf32-m68hc1x.c:1358
+#, c-format
+msgid "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
+msgstr "%pB: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 16 Ð±Ð¸Ñ‚Ð° (-mshort) Ð° Ð´Ñ€ÑƒÐ³Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 32 Ð±Ð¸Ñ‚Ð°"
 
-#: elf32-m68hc1x.c:1430 elf32-xgate.c:677
+#: elf32-m68hc1x.c:1365
+#, c-format
+msgid "%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
+msgstr "%pB: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 32 Ð±Ð¸Ñ‚Ð° (-fshort-double) Ð° Ð´Ñ€ÑƒÐ³Ðµ Ð·Ð° Ñ†ÐµÐ»Ðµ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ð¾Ð´ 64 Ð±Ð¸Ñ‚Ð°"
+
+#: elf32-m68hc1x.c:1374
+#, c-format
+msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
+msgstr "%pB: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° â€žHCS12â€œ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸Ð¼ Ð·Ð° â€žHC12â€œ"
+
+#: elf32-m68hc1x.c:1419 elf32-xgate.c:497
 #, c-format
 msgid "[abi=32-bit int, "
 msgstr "[Ð°Ð±Ð¸=32-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ†ÐµÐ¾ Ð±Ñ€Ð¾Ñ˜, "
 
-#: elf32-m68hc1x.c:1432 elf32-xgate.c:679
+#: elf32-m68hc1x.c:1421 elf32-xgate.c:499
 #, c-format
 msgid "[abi=16-bit int, "
 msgstr "[Ð°Ð±Ð¸=16-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ†ÐµÐ¾ Ð±Ñ€Ð¾Ñ˜, "
 
-#: elf32-m68hc1x.c:1435 elf32-xgate.c:682
+#: elf32-m68hc1x.c:1424 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
 msgstr "64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¼ÐµÑˆÐ¾Ð²Ð¸Ñ‚Ð¸, "
 
-#: elf32-m68hc1x.c:1437 elf32-xgate.c:684
+#: elf32-m68hc1x.c:1426 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr "32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¼ÐµÑˆÐ¾Ð²Ð¸Ñ‚Ð¸, "
 
-#: elf32-m68hc1x.c:1440
+#: elf32-m68hc1x.c:1429
 #, c-format
 msgid "cpu=HC11]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC11]"
 
-#: elf32-m68hc1x.c:1442
+#: elf32-m68hc1x.c:1431
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HCS12]"
 
-#: elf32-m68hc1x.c:1444
+#: elf32-m68hc1x.c:1433
 #, c-format
 msgid "cpu=HC12]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC12]"
 
-#: elf32-m68hc1x.c:1447
+#: elf32-m68hc1x.c:1436
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð°=Ð¼Ð¾Ð´ÐµÐ»-Ð³Ñ€ÑƒÐ¿Ðµ]"
 
-#: elf32-m68hc1x.c:1449
+#: elf32-m68hc1x.c:1438
 #, c-format
 msgid " [memory=flat]"
 msgstr " [Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð°=Ð¾Ð±Ð¸Ñ‡Ð½Ð¾]"
 
-#: elf32-m68hc1x.c:1452
+#: elf32-m68hc1x.c:1441
 #, c-format
 msgid " [XGATE RAM offsetting]"
 msgstr " [XGATE RAM Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜]"
 
-#: elf32-m68k.c:1210 elf32-m68k.c:1211 vms-alpha.c:7207 vms-alpha.c:7222
+#: elf32-m68k.c:1159 elf32-m68k.c:1167 elf32-ppc.c:3583 elf32-ppc.c:3591
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·"
+
+#: elf32-m68k.c:1282 elf32-m68k.c:1283 vms-alpha.c:7664 vms-alpha.c:7680
 msgid "unknown"
 msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾"
 
-#: elf32-m68k.c:1674
-msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d"
-msgstr "%B: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð‘Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d"
-
-#: elf32-m68k.c:1680
-msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d"
-msgstr "%B: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð‘Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8- Ð¸Ð»Ð¸ 16-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d"
-
-#: elf32-m68k.c:3921
-msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object"
-msgstr "%B(%A+0x%lx): â€žR_68K_TLS_LE32â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
-
-#: elf32-mcore.c:99 elf32-mcore.c:442
-msgid "%B: Relocation %s (%d) is not currently supported.\n"
-msgstr "%B: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ (%d) Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾.\n"
-
-#: elf32-mcore.c:428
-msgid "%B: Unknown relocation type %d\n"
-msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ\n"
+#: elf32-m68k.c:1733
+#, c-format
+msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
+msgstr "%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð±Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d"
+
+#: elf32-m68k.c:1740
+#, c-format
+msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
+msgstr "%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð±Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8- Ð¸Ð»Ð¸ 16-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d"
 
 #. Pacify gcc -Wall.
-#: elf32-mep.c:157
+#: elf32-mep.c:139
 #, c-format
 msgid "mep: no reloc for code %d"
 msgstr "mep: Ð½ÐµÐ¼Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð·Ð° ÐºÐ¾Ð´ â€ž%dâ€œ"
 
-#: elf32-mep.c:163
+#: elf32-mep.c:146
 #, c-format
 msgid "MeP: howto %d has type %d"
 msgstr "MeP: â€žhowtoâ€œ â€ž%dâ€œ Ð¸Ð¼Ð° Ð²Ñ€Ñ�Ñ‚Ñƒ â€ž%dâ€œ"
 
-#: elf32-mep.c:632
-msgid "%B and %B are for different cores"
-msgstr "â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ Ñ�Ñƒ Ð·Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð°"
-
-#: elf32-mep.c:649
-msgid "%B and %B are for different configurations"
-msgstr "â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ Ñ�Ñƒ Ð·Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐ°"
+#: elf32-mep.c:622
+#, c-format
+msgid "%pB and %pB are for different cores"
+msgstr "â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ñ�Ñƒ Ð·Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð°"
 
-#: elf32-mep.c:686
+#: elf32-mep.c:641
+#, c-format
+msgid "%pB and %pB are for different configurations"
+msgstr "â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ñ�Ñƒ Ð·Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐ°"
+
+#: elf32-mep.c:679
 #, c-format
 msgid "private flags = 0x%lx"
 msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lx"
 
-#: elf32-metag.c:1921
-msgid "%B(%A+0x%lx): R_METAG_TLS_LE/IENONPIC relocation not permitted in shared object"
-msgstr "%B(%A+0x%lx): â€žR_METAG_TLS_LE/IENONPICâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
-
-#: elf32-microblaze.c:950
+#: elf32-metag.c:1859
 #, c-format
-msgid "%s: unknown relocation type %d"
-msgstr "%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+msgid "%pB(%pA): multiple TLS models are not supported"
+msgstr "%pB(%pA): Ð²Ð¸ÑˆÐµ â€žTLSâ€œ Ð¼Ð¾Ð´ÐµÐ»Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
 
-#: elf32-microblaze.c:1076 elf32-microblaze.c:1121
+#: elf32-metag.c:1862
 #, c-format
-msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)"
-msgstr "%s: ÐœÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)"
+msgid "%pB(%pA): shared library symbol %s encountered whilst performing a static link"
+msgstr "%pB(%pA): Ð½Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð¾Ð±Ð°Ð²Ñ™Ð°ÑšÐ° Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐºÐµ Ð²ÐµÐ·Ðµ"
 
-#: elf32-microblaze.c:1484 elf32-tilepro.c:3320 elfxx-sparc.c:3526
-#: elfxx-tilegx.c:3729
-msgid "%B: probably compiled without -fPIC?"
-msgstr "%B: Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð±ÐµÐ· â€ž-fPICâ€œ?"
+#: elf32-microblaze.c:1540 elf32-tilepro.c:3029 elfxx-sparc.c:3427
+#: elfxx-tilegx.c:3417
+#, c-format
+msgid "%pB: probably compiled without -fPIC?"
+msgstr "%pB: Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð±ÐµÐ· â€ž-fPICâ€œ?"
 
-#: elf32-mips.c:1670 elf64-mips.c:2990 elfn32-mips.c:2793
+#: elf32-mips.c:1775 elf64-mips.c:3516 elfn32-mips.c:3332
 msgid "literal relocation occurs for an external symbol"
 msgstr "Ð´Ð¾ÑˆÐ»Ð¾ Ñ˜Ðµ Ð´Ð¾ Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
 
-#: elf32-mips.c:1717 elf32-score.c:570 elf32-score7.c:469 elf64-mips.c:3033
-#: elfn32-mips.c:2834
+#: elf32-mips.c:1822 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:3559
+#: elfn32-mips.c:3373
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr "Ð´Ð¾ÑˆÐ»Ð¾ Ñ˜Ðµ Ð´Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³ Ð³Ð¿ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
 
-#: elf32-msp430.c:801 elf32-msp430.c:1109
-msgid "Try enabling relaxation to avoid relocation truncations"
-msgstr "ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð´Ð° ÑƒÐºÑ™ÑƒÑ‡Ð¸Ñ‚Ðµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐµ Ð´Ð° Ð±Ð¸Ñ�Ñ‚Ðµ Ð¸Ð·Ð±ÐµÐ³Ð»Ð¸ Ñ�ÐºÑ€Ð°Ñ›Ð¸Ð²Ð°ÑšÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+#: elf32-msp430.c:846 elf32-msp430.c:1160
+msgid "try enabling relaxation to avoid relocation truncations"
+msgstr "Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð´Ð° ÑƒÐºÑ™ÑƒÑ‡Ð¸Ñ‚Ðµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐµ Ð´Ð° Ð±Ð¸Ñ�Ñ‚Ðµ Ð¸Ð·Ð±ÐµÐ³Ð»Ð¸ Ñ�ÐºÑ€Ð°Ñ›Ð¸Ð²Ð°ÑšÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
 
-#: elf32-msp430.c:1317
+#: elf32-msp430.c:1367
 msgid "internal error: branch/jump to an odd address detected"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð³Ñ€Ð°Ð½Ð°ÑšÐµ/Ñ�ÐºÐ¾Ðº Ð½Ð° Ð½ÐµÐ¿Ð°Ñ€Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ"
 
-#: elf32-msp430.c:2221
-msgid "Warning: %B: Unknown MSPABI object attribute %d"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %B: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žMSPABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
+#: elf32-msp430.c:2532
+#, c-format
+msgid "warning: %pB: unknown MSPABI object attribute %d"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žMSPABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
 
-#: elf32-msp430.c:2312
-msgid "error: %B uses %s instructions but %B uses %s"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ð°Ð»Ð¸ â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
+#: elf32-msp430.c:2633
+#, c-format
+msgid "error: %pB uses %s instructions but %pB uses %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
 
-#: elf32-msp430.c:2324
-msgid "error: %B uses the %s code model whereas %B uses the %s code model"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ ÐºÐ¾Ð´Ð° Ð´Ð¾Ðº â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ ÐºÐ¾Ð´Ð°"
+#: elf32-msp430.c:2645
+#, c-format
+msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ ÐºÐ¾Ð´Ð° Ð´Ð¾Ðº â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ ÐºÐ¾Ð´Ð°"
 
-#: elf32-msp430.c:2336
-msgid "error: %B uses the large code model but %B uses MSP430 instructions"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð²ÐµÐ»Ð¸ÐºÐ¸ Ð¼Ð¾Ð´ÐµÐ» ÐºÐ¾Ð´Ð° Ð°Ð»Ð¸ â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žMSP430â€œ"
+#: elf32-msp430.c:2658
+#, c-format
+msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð²ÐµÐ»Ð¸ÐºÐ¸ Ð¼Ð¾Ð´ÐµÐ» ÐºÐ¾Ð´Ð° Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žMSP430â€œ"
 
-#: elf32-msp430.c:2346
-msgid "error: %B uses the %s data model whereas %B uses the %s data model"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð´Ð¾Ðº â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+#: elf32-msp430.c:2669
+#, c-format
+msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð´Ð¾Ðº â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
 
-#: elf32-msp430.c:2358
-msgid "error: %B uses the small code model but %B uses the %s data model"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸ Ð¼Ð¾Ð´ÐµÐ» ÐºÐ¾Ð´Ð° Ð°Ð»Ð¸ â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+#: elf32-msp430.c:2682
+#, c-format
+msgid "error: %pB uses the small code model but %pB uses the %s data model"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸ Ð¼Ð¾Ð´ÐµÐ» ÐºÐ¾Ð´Ð° Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
 
-#: elf32-msp430.c:2369
-msgid "error: %B uses the %s data model but %B only uses MSP430 instructions"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð°Ð»Ð¸ â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žMSP430â€œ"
+#: elf32-msp430.c:2694
+#, c-format
+msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼Ð¾Ð´ÐµÐ» â€ž%sâ€œ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žMSP430â€œ"
 
-#: elf32-nds32.c:2921
-msgid "error: Can't find symbol: _SDA_BASE_."
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: _SDA_BASE_."
+#: elf32-msp430.c:2719
+#, c-format
+msgid "error: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memory"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¼Ð¾Ð¶Ðµ Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð³Ð¾Ñ€ÑšÑƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚ Ð·Ð° Ð¿Ð¾Ð´Ð°Ñ‚ÐºÐµ, Ð°Ð»Ð¸ â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð° Ð´Ð° Ñ�Ñƒ Ð¿Ð¾Ð´Ð°Ñ†Ð¸ Ð¸Ñ�ÐºÑ™ÑƒÑ‡Ð¸Ð²Ð¾ Ñƒ Ð´Ð¾ÑšÐ¾Ñ˜ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð¸"
 
-#: elf32-nds32.c:4142
-msgid "%B: error: unknown relocation type %d."
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ."
+#: elf32-nds32.c:3625
+#, c-format
+msgid "error: can't find symbol: %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %s"
 
-#: elf32-nds32.c:4584
+#: elf32-nds32.c:5528
 #, c-format
-msgid "%s: warning: cannot deal R_NDS32_25_ABS_RELA in shared mode."
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€žR_NDS32_25_ABS_RELAâ€œ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ."
+msgid "%pB: warning: %s unsupported in shared mode"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ"
 
-#: elf32-nds32.c:4716
-msgid "%B: warning: unaligned access to GOT entry."
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ ÑƒÐ½Ð¾Ñ�Ñƒ â€žGOTâ€œ."
+#: elf32-nds32.c:5654
+#, c-format
+msgid "%pB: warning: unaligned access to GOT entry"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ ÑƒÐ½Ð¾Ñ�Ñƒ â€žGOTâ€œ"
 
-#: elf32-nds32.c:4758
-msgid "%B: warning: relocate SDA_BASE failed."
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žSDA_BASEâ€œ."
+#: elf32-nds32.c:5695
+#, c-format
+msgid "%pB: warning: relocate SDA_BASE failed"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žSDA_BASEâ€œ"
 
-#: elf32-nds32.c:4779
-msgid "%B(%A): warning: unaligned small data access of type %d."
-msgstr "%B(%A): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¸Ð¼ Ð¼Ð°Ð»Ð¸Ð¼ Ð¿Ð¾Ð´Ð°Ñ†Ð¸Ð¼Ð° Ð²Ñ€Ñ�Ñ‚Ðµ â€ž%dâ€œ."
+#: elf32-nds32.c:5717
+#, c-format
+msgid "%pB(%pA): warning: unaligned small data access of type %d"
+msgstr "%pB(%pA): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¸Ð¼ Ð¼Ð°Ð»Ð¸Ð¼ Ð¿Ð¾Ð´Ð°Ñ†Ð¸Ð¼Ð° Ð²Ñ€Ñ�Ñ‚Ðµ â€ž%dâ€œ"
 
-#: elf32-nds32.c:5446
-msgid "%B: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
-msgstr "%B: Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° â€žISRâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°: Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð° %u Ð±Ð°Ñ˜Ñ‚Ð°; Ñ‚ÐµÐºÑƒÑ›Ð° %u Ð±Ð°Ñ˜Ñ‚Ð°"
+#: elf32-nds32.c:6643
+#, c-format
+msgid "%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
+msgstr "%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° â€žISRâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°: Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð° %u Ð±Ð°Ñ˜Ñ‚Ð°; Ñ‚ÐµÐºÑƒÑ›Ð° %u Ð±Ð°Ñ˜Ñ‚Ð°"
 
-#: elf32-nds32.c:5489
-msgid "%B: warning: Endian mismatch with previous modules."
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐšÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°."
+#: elf32-nds32.c:6691
+#, c-format
+msgid "%pB: warning: endian mismatch with previous modules"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
 
-#: elf32-nds32.c:5499
-msgid "%B: warning: Older version of object file encountered, Please recompile with current tool chain."
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð�Ð°Ð¸ÑˆÐ°Ð¾ Ñ�Ð°Ð¼ Ð½Ð° Ñ�Ñ‚Ð°Ñ€Ð¸Ñ˜Ðµ Ð¸Ð·Ð´Ð°ÑšÐµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°, Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° Ñ‚ÐµÐºÑƒÑ›Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ Ð°Ð»Ð°Ñ‚Ð°."
+#: elf32-nds32.c:6705
+#, c-format
+msgid "%pB: warning: older version of object file encountered, please recompile with current tool chain"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ð¸ÑˆÐ°Ð¾ Ñ�Ð°Ð¼ Ð½Ð° Ñ�Ñ‚Ð°Ñ€Ð¸Ñ˜Ðµ Ð¸Ð·Ð´Ð°ÑšÐµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°, Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° Ñ‚ÐµÐºÑƒÑ›Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ Ð°Ð»Ð°Ñ‚Ð°"
 
-#: elf32-nds32.c:5577
-msgid "%B: error: ABI mismatch with previous modules."
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ð‘Ð˜ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°."
+#: elf32-nds32.c:6793
+#, c-format
+msgid "%pB: error: ABI mismatch with previous modules"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žABIâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
 
-#: elf32-nds32.c:5588
-msgid "%B: error: Instruction set mismatch with previous modules."
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¡ÐºÑƒÐ¿ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°."
+#: elf32-nds32.c:6803
+#, c-format
+msgid "%pB: error: instruction set mismatch with previous modules"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐºÑƒÐ¿ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
 
-#: elf32-nds32.c:5612
-msgid "%B: warning: Incompatible elf-versions %s and  %s."
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐµÐ»Ñ„ Ð¸Ð·Ð´Ð°ÑšÐ° %s Ð¸ %s Ð½Ð¸Ñ�Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð°."
+#: elf32-nds32.c:6830
+#, c-format
+msgid "%pB: warning: incompatible elf-versions %s and %s"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐµÐ»Ñ„ Ð¸Ð·Ð´Ð°ÑšÐ° %s Ð¸ %s Ð½Ð¸Ñ�Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð°"
 
-#: elf32-nds32.c:5642
+#: elf32-nds32.c:6861
 #, c-format
 msgid ": n1 instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žn1â€œ"
 
-#: elf32-nds32.c:5645
+#: elf32-nds32.c:6864
 #, c-format
 msgid ": n1h instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žn1hâ€œ"
 
-#: elf32-nds32.c:8147
-msgid "%B: %s\n"
-msgstr "%B: %s\n"
-
-#: elf32-nds32.c:8449
-msgid "%B(%A): warning: relax is suppressed for sections of alignment %d-bytes > 4-byte."
-msgstr "%B(%A): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ð¸Ñ�Ð½ÑƒÑ‚Ð¾ Ð·Ð° Ð¾Ð´ÐµÑ™ÐºÐµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° %d-Ð±Ð°Ñ˜Ñ‚Ð° > 4-Ð±Ð°Ñ˜Ñ‚Ð°."
-
-#: elf32-nds32.c:8502
-msgid "%B: error: Cannot set _ITB_BASE_"
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð´ÐµÑ�Ð¸Ð¼ â€ž_ITB_BASE_â€œ"
-
-#: elf32-nds32.c:11384
-msgid "%B: Nested OMIT_FP in %A."
-msgstr "%B: Ð£Ð³Ð½ÐµÐ¶Ñ’ÐµÐ½Ð¾ â€žOMIT_FPâ€œ Ñƒ â€ž%Aâ€œ."
-
-#: elf32-nds32.c:11401
-msgid "%B: Unmatched OMIT_FP in %A."
-msgstr "%B: Ð�ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€žOMIT_FPâ€œ Ñƒ â€ž%Aâ€œ."
+#: elf32-nds32.c:9316
+#, c-format
+msgid "%pB: error: search_nds32_elf_blank reports wrong node"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žsearch_nds32_elf_blankâ€œ Ð¸Ð·Ð²ÐµÑˆÑ‚Ð°Ð²Ð° Ð¾ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ñ‡Ð²Ð¾Ñ€Ñƒ"
 
-#: elf32-nds32.c:13357
-msgid "Linker: cannot init ex9 hash table error \n"
-msgstr "ÐŸÐ¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ð³Ñ€ÐµÑˆÐºÑƒ â€žex9â€œ Ñ…ÐµÑˆ Ñ‚Ð°Ð±ÐµÐ»Ðµ \n"
+#: elf32-nds32.c:9576
+#, c-format
+msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %#<PRIx64>"
 
-#: elf32-nds32.c:13790 elf32-nds32.c:13804
-msgid "Linker: error cannot fixed ex9 relocation \n"
-msgstr "ÐŸÐ¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡: Ð³Ñ€ÐµÑˆÐºÐ° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸ â€žex9â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ \n"
+#: elf32-nds32.c:12839
+#, c-format
+msgid "%pB: nested OMIT_FP in %pA"
+msgstr "%pB: ÑƒÐ³Ð½ÐµÐ¶Ñ’ÐµÐ½Ð¾ â€žOMIT_FPâ€œ Ñƒ â€ž%pAâ€œ"
 
-#: elf32-nds32.c:14015
+#: elf32-nds32.c:12858
 #, c-format
-msgid "%s: warning: unaligned small data access. For entry: {%d, %d, %d}, addr = 0x%x, align = 0x%x."
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°. Ð—Ð° ÑƒÐ½Ð¾Ñ�: {%d, %d, %d}, Ð°Ð´Ñ€ÐµÑ�Ð° = 0x%x, Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ = 0x%x."
+msgid "%pB: unmatched OMIT_FP in %pA"
+msgstr "%pB: Ð½ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€žOMIT_FPâ€œ Ñƒ â€ž%pAâ€œ"
 
-#: elf32-nds32.c:14047
-msgid "%P%F: failed creating ex9.it %s hash table: %E\n"
-msgstr "%P%F: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žex9.it %sâ€œ Ñ…ÐµÑˆ Ñ‚Ð°Ð±ÐµÐ»Ñƒ: %E\n"
+#: elf32-nds32.c:13140 reloc.c:8470
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%pRâ€œ Ð¸Ð´Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°\n"
 
-#: elf32-nios2.c:2861
+#: elf32-nios2.c:2937
 #, c-format
-msgid "global pointer relative relocation at address 0x%08x when _gp not defined\n"
-msgstr "Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ 0x%08x ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾\n"
+msgid "error: %pB: big-endian R2 is not supported"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð²ÐµÐ»Ð¸ÐºÐ° ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ â€žR2â€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
 
-#: elf32-nios2.c:2878
+#: elf32-nios2.c:3829
 #, c-format
-msgid "Unable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because the offset (%d) is out of the allowed range, -32678 to 32767.\n"
-msgstr "Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ñ�Ñ‚Ð¸Ð³Ð½ÐµÐ¼ â€ž%sâ€œ (Ð½Ð° 0x%08x) Ð¸Ð· Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° (Ð½Ð° 0x%08x) Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ (%d) Ð¸Ð·Ð²Ð°Ð½ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾Ð³ Ð¾Ð¿Ñ�ÐµÐ³Ð°, Ð¾Ð´ -32678 Ð´Ð¾ 32767.\n"
+msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+msgstr "Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ %#<PRIx64> ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾\n"
 
-#: elf32-nios2.c:3392
-msgid "%B(%A+0x%lx): R_NIOS2_TLS_LE16 relocation not permitted in shared object"
-msgstr "%B(%A+0x%lx): â€žR_NIOS2_TLS_LE16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+#: elf32-nios2.c:3859
+#, c-format
+msgid "unable to reach %s (at %#<PRIx64>) from the global pointer (at %#<PRIx64>) because the offset (%<PRId64>) is out of the allowed range, -32678 to 32767\n"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ñ�Ñ‚Ð¸Ð³Ð½ÐµÐ¼ â€ž%sâ€œ (Ð½Ð° %#<PRIx64>) Ð¸Ð· Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° (Ð½Ð° %#<PRIx64>) Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ (%<PRId64>) Ð¸Ð·Ð²Ð°Ð½ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾Ð³ Ð¾Ð¿Ñ�ÐµÐ³Ð°, Ð¾Ð´ -32678 Ð´Ð¾ 32767\n"
 
-#: elf32-nios2.c:3520
+#: elf32-nios2.c:4514 elf32-pru.c:931
 msgid "relocation out of range"
 msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
 
-#: elf32-nios2.c:3530 elf32-tic6x.c:2744
+#: elf32-nios2.c:4524 elf32-pru.c:941 elf32-tic6x.c:2657
 msgid "dangerous relocation"
 msgstr "Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: elf32-nios2.c:4529
+#: elf32-nios2.c:5367
 #, c-format
 msgid "dynamic variable `%s' is zero size"
 msgstr "Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
 
-#: elf32-ppc.c:2100
+#: elf32-or1k.c:1210
+#, c-format
+msgid "%pB: Cannot handle relocation value size of %d"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¾Ð¼ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾Ð´ %d"
+
+#: elf32-or1k.c:1317
+#, c-format
+msgid "%pB: unknown relocation type %d"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+
+#: elf32-or1k.c:1371
+#, c-format
+msgid "%pB: addend should be zero for plt relocations"
+msgstr "%pB: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€žpltâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+
+#: elf32-or1k.c:1476
+#, c-format
+msgid "%pB: addend should be zero for got relocations"
+msgstr "%pB: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€žgotâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+
+#: elf32-or1k.c:1493
+#, c-format
+msgid "%pB: gotoff relocation against dynamic symbol %s"
+msgstr "%pB: â€žgotoffâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf32-or1k.c:1510 elf64-alpha.c:4421 elf64-alpha.c:4565
+#, c-format
+msgid "%pB: pc-relative relocation against dynamic symbol %s"
+msgstr "%pB: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf32-or1k.c:1524
+#, c-format
+msgid "%pB: non-pic relocation against symbol %s"
+msgstr "%pB: â€žnon-picâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf32-or1k.c:1608
+#, c-format
+msgid "%pB: support for local dynamic not implemented"
+msgstr "%pB: Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ° Ð·Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð°"
+
+#: elf32-or1k.c:1787
+#, c-format
+msgid "%pB: will not resolve runtime TLS relocation"
+msgstr "%pB: Ð½ÐµÑ›Ñƒ Ñ€ÐµÑˆÐ¸Ñ‚Ð¸ Ð²Ñ€ÐµÐ¼Ðµ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°ÑšÐ° â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+
+#: elf32-or1k.c:2120
+#, c-format
+msgid "%pB: bad relocation section name `%s'"
+msgstr "%pB: Ð»Ð¾Ñˆ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ"
+
+#: elf32-or1k.c:3181
+#, c-format
+msgid "%pB: %s flag mismatch with previous modules"
+msgstr "%pB: â€ž%sâ€œ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
+
+#: elf32-ppc.c:989
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr "Ð¾Ð¿ÑˆÑ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ€Ð°Ð´Ð¸ Ñ�Ð° â€ž%sâ€œ"
 
-#: elf32-ppc.c:2642
-msgid "corrupt %s section in %B"
-msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€ž%sâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ â€ž%Bâ€œ"
-
-#: elf32-ppc.c:2661
-msgid "unable to read in %s section from %B"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ Ð¸Ð· â€ž%Bâ€œ"
-
-#: elf32-ppc.c:2702
-msgid "warning: unable to set size of %s section in %B"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñƒ â€ž%Bâ€œ"
-
-#: elf32-ppc.c:2752
-msgid "failed to allocate space for new APUinfo section."
-msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€ Ð·Ð° Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ."
-
-#: elf32-ppc.c:2771
-msgid "failed to compute new APUinfo section."
-msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ."
-
-#: elf32-ppc.c:2774
-msgid "failed to install new APUinfo section."
-msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð½Ñ�Ñ‚Ð°Ð»Ð¸Ñ€Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ."
-
-#: elf32-ppc.c:3844
-msgid "%B: relocation %s cannot be used when making a shared object"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
-
-#. It does not make sense to have a procedure linkage
-#. table entry for a local symbol.
-#: elf32-ppc.c:4218
-msgid "%P: %H: %s reloc against local symbol\n"
-msgstr "%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°\n"
-
-#: elf32-ppc.c:4299
-msgid "%P: %H: @local call to ifunc %s\n"
-msgstr "%P: %H: Ð¿Ð¾Ð·Ð¸Ð² â€ž@localâ€œ Ð·Ð° i-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ\n"
-
-#: elf32-ppc.c:4588 elf32-ppc.c:4603
-msgid "Warning: %B uses hard float, %B uses soft float"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·"
-
-#: elf32-ppc.c:4591 elf32-ppc.c:4595
-msgid "Warning: %B uses double-precision hard float, %B uses single-precision hard float"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ð´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ñ˜ÐµÐ´Ð½Ðµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸"
-
-#: elf32-ppc.c:4599
-msgid "Warning: %B uses soft float, %B uses single-precision hard float"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ñ˜ÐµÐ´Ð½Ðµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸"
-
-#: elf32-ppc.c:4606 elf32-ppc.c:4610
-msgid "Warning: %B uses unknown floating point ABI %d"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%dâ€œ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°"
-
-#: elf32-ppc.c:4652 elf32-ppc.c:4656
-msgid "Warning: %B uses unknown vector ABI %d"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%dâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°"
-
-#: elf32-ppc.c:4660
-msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\""
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%sâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
-
-#: elf32-ppc.c:4677 elf32-ppc.c:4680
-msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žr3/r4â€œ Ð·Ð° Ð¼Ð°Ð»Ðµ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ðµ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ"
-
-#: elf32-ppc.c:4683 elf32-ppc.c:4687
-msgid "Warning: %B uses unknown small structure return convention %d"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð¾Ð´Ð³Ð¾Ð²Ð¾Ñ€ Ð¼Ð°Ð»Ð¾Ð³ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ð° Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ â€ž%dâ€œ"
-
-#: elf32-ppc.c:4741
-msgid "%B: compiled with -mrelocatable and linked with modules compiled normally"
-msgstr "%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž-mrelocatableâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ ÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ð¸Ð¼ Ð¿ÑƒÑ‚ÐµÐ¼"
-
-#: elf32-ppc.c:4749
-msgid "%B: compiled normally and linked with modules compiled with -mrelocatable"
-msgstr "%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ ÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ð¸Ð¼ Ð¿ÑƒÑ‚ÐµÐ¼ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž-mrelocatableâ€œ"
-
-#: elf32-ppc.c:4872
-msgid "%P: bss-plt forced due to %B\n"
-msgstr "%P: â€žbss-pltâ€œ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ð¸Ñ™ÐµÐ½Ð¾ Ð·Ð±Ð¾Ð³ â€ž%Bâ€œ\n"
-
-#: elf32-ppc.c:4875
-msgid "%P: bss-plt forced by profiling\n"
-msgstr "%P: â€žbss-pltâ€œ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ð¸Ñ™ÐµÐ½Ð¾ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ�Ð°ÑšÐµÐ¼\n"
+#: elf32-ppc.c:1628
+#, c-format
+msgid "corrupt %s section in %pB"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€ž%sâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ â€ž%pBâ€œ"
+
+#: elf32-ppc.c:1647
+#, c-format
+msgid "unable to read in %s section from %pB"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ Ð¸Ð· â€ž%pBâ€œ"
+
+#: elf32-ppc.c:1689
+#, c-format
+msgid "warning: unable to set size of %s section in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ"
+
+#: elf32-ppc.c:1738
+msgid "failed to allocate space for new APUinfo section"
+msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€ Ð·Ð° Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ"
+
+#: elf32-ppc.c:1757
+msgid "failed to compute new APUinfo section"
+msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ"
+
+#: elf32-ppc.c:1760
+msgid "failed to install new APUinfo section"
+msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð½Ñ�Ñ‚Ð°Ð»Ð¸Ñ€Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ"
+
+#: elf32-ppc.c:2861
+#, c-format
+msgid "%pB: relocation %s cannot be used when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: elf32-ppc.c:3599 elf32-ppc.c:3607
+#, c-format
+msgid "%pB uses double-precision hard float, %pB uses single-precision hard float"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ð´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ñ˜ÐµÐ´Ð½Ðµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸"
+
+#: elf32-ppc.c:3629 elf32-ppc.c:3637
+#, c-format
+msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð», â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 128-Ð±Ð¸Ñ‚Ð½Ð¸ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð»"
+
+#: elf32-ppc.c:3645 elf32-ppc.c:3653
+#, c-format
+msgid "%pB uses IBM long double, %pB uses IEEE long double"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žIBMâ€œ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð», â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žIEEEâ€œ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð»"
+
+#: elf32-ppc.c:3720 elf32-ppc.c:3729
+#, c-format
+msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žAltiVecâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€ â€žABIâ€œ, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žSPEâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€ â€žABIâ€œ"
+
+#: elf32-ppc.c:3758 elf32-ppc.c:3767
+#, c-format
+msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žr3/r4â€œ Ð·Ð° Ð¼Ð°Ð»Ðµ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ðµ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ"
+
+#: elf32-ppc.c:3831
+#, c-format
+msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž-mrelocatableâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ ÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ð¸Ð¼ Ð¿ÑƒÑ‚ÐµÐ¼"
+
+#: elf32-ppc.c:3839
+#, c-format
+msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ ÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ð¸Ð¼ Ð¿ÑƒÑ‚ÐµÐ¼ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž-mrelocatableâ€œ"
+
+#: elf32-ppc.c:3908
+#, c-format
+msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
+msgstr "%pB(%pA+0x%lx): Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž16Aâ€œ Ñ�Ñ‚Ð¸Ð»Ð° Ð½Ð° â€ž0x%08x insnâ€œ"
+
+#: elf32-ppc.c:3927
+#, c-format
+msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
+msgstr "%pB(%pA+0x%lx): Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž16Dâ€œ Ñ�Ñ‚Ð¸Ð»Ð° Ð½Ð° â€ž0x%08x insnâ€œ"
+
+#: elf32-ppc.c:4030
+#, c-format
+msgid "bss-plt forced due to %pB"
+msgstr "â€žbss-pltâ€œ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ð¸Ñ™ÐµÐ½Ð¾ Ð·Ð±Ð¾Ð³ â€ž%pBâ€œ"
+
+#: elf32-ppc.c:4032
+msgid "bss-plt forced by profiling"
+msgstr "â€žbss-pltâ€œ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ð¸Ñ™ÐµÐ½Ð¾ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ�Ð°ÑšÐµÐ¼"
 
 #. Uh oh, we didn't find the expected call.  We
 #. could just mark this symbol to exclude it
 #. from tls optimization but it's safer to skip
 #. the entire optimization.
-#: elf32-ppc.c:5369 elf64-ppc.c:8371
+#: elf32-ppc.c:4606 elf64-ppc.c:8252
+#, c-format
 msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
-msgstr "Ð�Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ â€ž%Hâ€œ Ñ˜Ðµ Ð¸Ð·Ð³ÑƒÐ±Ð¸Ð¾ â€ž__tls_get_addrâ€œ, Ð¢Ð›Ð¡ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½Ð°\n"
+msgstr "Ð�Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ â€ž%Hâ€œ Ñ˜Ðµ Ð¸Ð·Ð³ÑƒÐ±Ð¸Ð¾ â€ž__tls_get_addrâ€œ, â€žTLSâ€œ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½Ð°\n"
 
-#: elf32-ppc.c:7927
-msgid "%P: %B: unknown relocation type %d for symbol %s\n"
-msgstr "%P: %B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ\n"
+#: elf32-ppc.c:5513 elf32-sh.c:3023 elf32-tilepro.c:2256 elfxx-sparc.c:2453
+#: elfxx-tilegx.c:2496
+#, c-format
+msgid "%pB: dynamic relocation in read-only section `%pA'\n"
+msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ %pA\n"
 
-#: elf32-ppc.c:8191
-msgid "%P: %H: non-zero addend on %s reloc against `%s'\n"
-msgstr "%P: %H: Ð½Ðµ Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ð½Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ\n"
+#: elf32-ppc.c:7356
+msgid "%P: %H: error: %s with unexpected instruction %x\n"
+msgstr "%P: %H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ñ�Ð° Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼ â€ž%xâ€œ\n"
 
-#: elf32-ppc.c:8389
-msgid "%P: %H: relocation %s for indirect function %s unsupported\n"
-msgstr "%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
+#: elf32-ppc.c:7393
+msgid "%H: fixup branch overflow\n"
+msgstr "%H: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žfixupâ€œ Ð³Ñ€Ð°Ð½Ðµ\n"
 
-#: elf32-ppc.c:8646 elf32-ppc.c:8676 elf32-ppc.c:8767
-msgid "%P: %B: the target (%s) of a %s relocation is in the wrong output section (%s)\n"
-msgstr "%P: %B: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)\n"
+#: elf32-ppc.c:7433 elf32-ppc.c:7469
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
+msgstr "%pB(%pA+%#<PRIx64>): Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ñ�Ð° Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼ â€ž%#xâ€œ"
 
-#: elf32-ppc.c:8854
-msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)"
-msgstr "%B: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)"
+#: elf32-ppc.c:7533
+#, c-format
+msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
+msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žbss-pltâ€œ â€ž-fPICâ€œ â€žifuncâ€œ â€ž%sâ€œ\n"
 
-#: elf32-ppc.c:8958
-msgid "%P: %B: relocation %s is not yet supported for symbol %s\n"
-msgstr "%P: %B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ˜Ð¾Ñˆ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ\n"
+#: elf32-ppc.c:7572 elf64-ppc.c:16848
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr "%H: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%#xâ€œ.\n"
 
-#: elf32-ppc.c:9038
-msgid "%P: %H: error: %s against `%s' not a multiple of %u\n"
-msgstr "%P: %H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ â€ž%uâ€œ\n"
+#: elf32-ppc.c:7881
+#, c-format
+msgid "%H: non-zero addend on %s reloc against `%s'\n"
+msgstr "%H: Ð½Ðµ Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ð½Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ\n"
 
-#: elf32-ppc.c:9067
-msgid "%P: %H: unresolvable %s relocation against symbol `%s'\n"
-msgstr "%P: %H: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ\n"
+#. @local on an ifunc does not really make sense since
+#. the ifunc resolver can take you anywhere.  More
+#. seriously, calls to ifuncs must go through a plt call
+#. stub, and for pic the plt call stubs uses r30 to
+#. access the PLT.  The problem is that a call that is
+#. local won't have the +32k reloc addend trick marking
+#. -fPIC code, so the linker won't know whether r30 is
+#. _GLOBAL_OFFSET_TABLE_ or pointing into a .got2 section.
+#: elf32-ppc.c:7913
+#, c-format
+msgid "%X%H: @local call to ifunc %s\n"
+msgstr "%X%H: Ð¿Ð¾Ð·Ð¸Ð² â€ž@localâ€œ Ð·Ð° i-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ\n"
 
-#: elf32-ppc.c:9114
-msgid "%P: %H: %s reloc against `%s': error %d\n"
-msgstr "%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d\n"
+#: elf32-ppc.c:8091
+#, c-format
+msgid "%H: relocation %s for indirect function %s unsupported\n"
+msgstr "%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
+
+#: elf32-ppc.c:8425 elf32-ppc.c:8456 elf32-ppc.c:8547 elf32-ppc.c:8643
+#, c-format
+msgid "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
+msgstr "%pB: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)"
+
+#: elf32-ppc.c:8773 elf32-ppc.c:8791
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
+msgstr "%X%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð·Ð° â€žbss-pltâ€œ\n"
+
+#: elf32-ppc.c:8872
+#, c-format
+msgid "%H: error: %s against `%s' not a multiple of %u\n"
+msgstr "%H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ â€ž%uâ€œ\n"
+
+#: elf32-ppc.c:8901
+#, c-format
+msgid "%H: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%H: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ\n"
 
-#: elf32-ppc.c:9750
-msgid "%P: %s not defined in linker created %s\n"
-msgstr "%P: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñƒ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ñƒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¼ â€ž%sâ€œ\n"
+#: elf32-ppc.c:8982
+#, c-format
+msgid "%H: %s reloc against `%s': error %d\n"
+msgstr "%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d\n"
 
-#: elf32-rl78.c:784
-msgid "Warning: RL78_SYM reloc with an unknown symbol"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRL78_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼"
+#: elf32-ppc.c:9872
+msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n"
+msgstr "%X%P: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð¸ Ð“Ð�Ð£-Ð¾Ð²Ðµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ›Ðµ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð¸Ñ€Ð°Ñ‚Ð¸ Ð½ÐµÑƒÑ�Ð¿ÐµÑ…Ð¾Ð¼ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ˜Ðµ Ñƒ Ð²Ñ€ÐµÐ¼Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°\n"
 
-#: elf32-rl78.c:952 elf32-rx.c:1324
-msgid "%B(%A): error: call to undefined function '%s'"
-msgstr "%B(%A): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð·Ð¸Ð² Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ"
+#: elf32-ppc.c:9876 elf64-ppc.c:17398
+msgid "%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime\n"
+msgstr "%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð¸ Ð“Ð�Ð£-Ð¾Ð²Ðµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ð¼Ð¾Ð³Ñƒ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð¸Ñ€Ð°Ñ‚Ð¸ Ð½ÐµÑƒÑ�Ð¿ÐµÑ…Ð¾Ð¼ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ˜Ðµ Ñƒ Ð²Ñ€ÐµÐ¼Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°\n"
 
-#: elf32-rl78.c:966 elf32-rx.c:1338
-msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area"
-msgstr "%B(%A): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+#: elf32-ppc.c:9921
+#, c-format
+msgid "%s not defined in linker created %pA"
+msgstr "â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñƒ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ñƒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¼ â€ž%pAâ€œ"
 
-#: elf32-rl78.c:970 elf32-rx.c:1342
-msgid "%B(%A): internal error: out of range error"
-msgstr "%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+#: elf32-pru.c:582 elf32-pru.c:1475
+#, c-format
+msgid "error: %pB: old incompatible object file detected"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�Ñ‚Ð°Ñ€Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð°"
 
-#: elf32-rl78.c:974 elf32-rx.c:1346
-msgid "%B(%A): internal error: unsupported relocation error"
-msgstr "%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+#: elf32-rl78.c:372
+msgid "internal error: RL78 reloc stack overflow"
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žRL78â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°"
 
-#: elf32-rl78.c:978 elf32-rx.c:1350
-msgid "%B(%A): internal error: dangerous relocation"
-msgstr "%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: elf32-rl78.c:383
+msgid "internal error: RL78 reloc stack underflow"
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð´ÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žRL78â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°"
 
-#: elf32-rl78.c:982 elf32-rx.c:1354
-msgid "%B(%A): internal error: unknown error"
-msgstr "%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°"
+#: elf32-rl78.c:1053
+msgid "warning: RL78_SYM reloc with an unknown symbol"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRL78_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼"
 
-#: elf32-rl78.c:1043
-msgid "RL78/G10 ABI conflict: cannot link G10 and non-G10 objects together"
-msgstr "â€žABI RL78/G10â€œ Ñ�ÑƒÐºÐ¾Ð±: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ Ð“10 Ð¸ Ð½Ðµ-Ð“10 Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ"
+#: elf32-rl78.c:1084 elf32-rx.c:1461
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð·Ð¸Ð² Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ"
 
-#: elf32-rl78.c:1046 elf32-rl78.c:1049
+#: elf32-rl78.c:1205
 #, c-format
-msgid "- %s is G10, %s is not"
-msgstr "â€” â€ž%sâ€œ Ñ˜Ðµ Ð“10, â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ"
+msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
+msgstr "â€žRL78 ABIâ€œ Ñ�ÑƒÐºÐ¾Ð±: â€žG10â€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° â€ž%pBâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÐ²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð° â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼ â€ž%pBâ€œ"
 
-#: elf32-rl78.c:1072
+#: elf32-rl78.c:1222
 #, c-format
-msgid " [G10]"
-msgstr " [Ð“10]"
+msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
+msgstr "â€žABI RL78â€œ Ñ�ÑƒÐºÐ¾Ð±: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ â€ž%pBâ€œ Ñ�Ð° â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼ â€ž%pBâ€œ"
+
+#: elf32-rl78.c:1231
+msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
+msgstr "â€žRL78â€œ Ñ�ÑƒÐºÐ¾Ð± Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ðµ Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ"
 
-#: elf32-rx.c:563
-msgid "%B:%A: Warning: deprecated Red Hat reloc "
-msgstr "%B:%A: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð ÐµÐ´ Ð¥ÐµÑ‚Ð° "
+#: elf32-rl78.c:1235 elf32-rl78.c:1239
+#, c-format
+msgid "- %pB is 64-bit, %pB is not"
+msgstr "â€” â€ž%pBâ€œ Ñ˜Ðµ 64-Ð±Ð¸Ñ‚Ð½Ð¾, â€ž%pBâ€œ Ð½Ð¸Ñ˜Ðµ"
+
+#: elf32-rl78.c:1266
+#, c-format
+msgid " [64-bit doubles]"
+msgstr " [doubles de 64 bits]"
+
+#: elf32-rx.c:607
+#, c-format
+msgid "%pB:%pA: table entry %s outside table"
+msgstr "%pB:%pA: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ â€ž%sâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ñ‚Ð°Ð±ÐµÐ»Ðµ"
+
+#: elf32-rx.c:614
+#, c-format
+msgid "%pB:%pA: table entry %s not word-aligned within table"
+msgstr "%pB:%pA: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ¼ Ñ€ÐµÑ‡Ð¸ ÑƒÐ½ÑƒÑ‚Ð°Ñ€ Ñ‚Ð°Ð±ÐµÐ»Ðµ"
+
+#: elf32-rx.c:689
+#, c-format
+msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
+msgstr "%pB:%pA: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð ÐµÐ´ Ð¥ÐµÑ‚Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñƒ: %s"
 
 #. Check for unsafe relocs in PID mode.  These are any relocs where
 #. an absolute address is being computed.  There are special cases
 #. for relocs against symbols that are known to be referenced in
 #. crt0.o before the PID base address register has been initialised.
-#: elf32-rx.c:581
-msgid "%B(%A): unsafe PID relocation %s at 0x%08lx (against %s in %s)"
-msgstr "%B(%A): Ð½ÐµÑ�Ð¸Ð³ÑƒÑ€Ð½Ð¾ ÐŸÐ˜Ð” Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð° 0x%08lx (Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñƒ â€ž%sâ€œ)"
-
-#: elf32-rx.c:1157
-msgid "Warning: RX_SYM reloc with an unknown symbol"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRX_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼"
-
-#: elf32-s390.c:2292 elf64-s390.c:2244
-msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s"
-msgstr "%B(%A+0x%lx): Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ð·Ð° Ð¢Ð›Ð¡ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
+#: elf32-rx.c:709
+#, c-format
+msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
+msgstr "%pB(%pA): Ð½ÐµÑ�Ð¸Ð³ÑƒÑ€Ð½Ð¾ â€žPIDâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð° %#<PRIx64> (Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñƒ â€ž%sâ€œ)"
+
+#: elf32-rx.c:1293
+msgid "warning: RX_SYM reloc with an unknown symbol"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRX_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼"
 
-#: elf32-score.c:1520 elf32-score7.c:1379 elfxx-mips.c:3642
+#: elf32-rx.c:3173
+#, c-format
+msgid "there is a conflict merging the ELF header flags from %pB"
+msgstr "Ñ�ÑƒÐºÐ¾Ð± Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐ° Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° â€žELFâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð° Ð¸Ð· â€ž%pBâ€œ"
+
+#: elf32-rx.c:3176
+#, c-format
+msgid "  the input  file's flags: %s"
+msgstr "  Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ ÑƒÐ»Ð°Ð·Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ: %s"
+
+#: elf32-rx.c:3178
+#, c-format
+msgid "  the output file's flags: %s"
+msgstr "  Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¸Ð·Ð»Ð°Ð·Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ: %s"
+
+#: elf32-rx.c:3784
+#, c-format
+msgid "%pB:%pA: table %s missing corresponding %s"
+msgstr "%pB:%pA: Ñ‚Ð°Ð±ÐµÐ»Ð¸ â€ž%sâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€ž%sâ€œ"
+
+#: elf32-rx.c:3792
+#, c-format
+msgid "%pB:%pA: %s and %s must be in the same input section"
+msgstr "%pB:%pA: â€ž%sâ€œ Ð¸ â€ž%sâ€œ Ð¼Ð¾Ñ€Ð°Ñ˜Ñƒ Ð±Ð¸Ñ‚Ð¸ Ñƒ Ð¸Ñ�Ñ‚Ð¾Ð¼ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+
+#: elf32-s390.c:2011 elf64-s390.c:1965
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ð·Ð° â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
+
+#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3800
 msgid "not enough GOT space for local GOT entries"
 msgstr "Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ â€žGOTâ€œ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ð·Ð° Ð¼ÐµÑ�Ð½Ðµ ÑƒÐ½Ð¾Ñ�Ðµ â€žGOTâ€œ"
 
-#: elf32-score.c:2742
-msgid "address not word align"
+#: elf32-score.c:2747
+msgid "address not word aligned"
 msgstr "Ð°Ð´Ñ€ÐµÑ�Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð¿Ð¾ Ñ€ÐµÑ‡Ð¸"
 
-#: elf32-score.c:2827 elf32-score7.c:2631
+#: elf32-score.c:2828 elf32-score7.c:2633
 #, c-format
-msgid "%s: Malformed reloc detected for section %s"
-msgstr "%s: ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+msgid "%pB: malformed reloc detected for section %pA"
+msgstr "%pB: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
 
-#: elf32-score.c:2882 elf32-score7.c:2686
-msgid "%B: CALL15 reloc at 0x%lx not against global symbol"
-msgstr "%B: â€žCALL15â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° 0x%lx Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+#: elf32-score.c:2882 elf32-score7.c:2687
+#, c-format
+msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
+msgstr "%pB: â€žCALL15â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %#<PRIx64> Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
 
-#: elf32-score.c:4007 elf32-score7.c:3811
+#: elf32-score.c:4003 elf32-score7.c:3808
 #, c-format
 msgid " [pic]"
 msgstr " [Ð¿Ð¸Ðº]"
 
-#: elf32-score.c:4011 elf32-score7.c:3815
+#: elf32-score.c:4007 elf32-score7.c:3812
 #, c-format
 msgid " [fix dep]"
 msgstr " [Ñ„Ð¸ÐºÑ� Ð´ÑƒÐ±]"
 
-#: elf32-score.c:4053 elf32-score7.c:3857
-msgid "%B: warning: linking PIC files with non-PIC files"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ð° Ð½Ðµ-â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°"
-
-#: elf32-sh-symbian.c:130
-msgid "%B: IMPORT AS directive for %s conceals previous IMPORT AS"
-msgstr "%B: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° Ð£Ð’Ð•Ð—Ð˜ ÐšÐ�Ðž Ð·Ð° â€ž%sâ€œ Ð·Ð°Ñ�ÐµÑšÑƒÑ˜Ðµ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ Ð£Ð’Ð•Ð—Ð˜ ÐšÐ�Ðž"
-
-#: elf32-sh-symbian.c:383
-msgid "%B: Unrecognised .directive command: %s"
-msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž.directiveâ€œ: %s"
-
-#: elf32-sh-symbian.c:500
-msgid "%B: Failed to add renamed symbol %s"
-msgstr "%B: Ð�Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´Ð°Ð¼ Ð¿Ñ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
-
-#: elf32-sh.c:569
-msgid "%B: 0x%lx: warning: bad R_SH_USES offset"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ â€žR_SH_USESâ€œ"
-
-#: elf32-sh.c:581
-msgid "%B: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_SH_USESâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ â€žinsnâ€œ 0x%x"
-
-#: elf32-sh.c:598
-msgid "%B: 0x%lx: warning: bad R_SH_USES load offset"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€žR_SH_USESâ€œ"
-
-#: elf32-sh.c:613
-msgid "%B: 0x%lx: warning: could not find expected reloc"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
-
-#: elf32-sh.c:641
-msgid "%B: 0x%lx: warning: symbol in unexpected section"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ˜Ðµ Ñƒ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
-
-#: elf32-sh.c:767
-msgid "%B: 0x%lx: warning: could not find expected COUNT reloc"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žCOUNTâ€œ"
-
-#: elf32-sh.c:776
-msgid "%B: 0x%lx: warning: bad count"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜"
-
-#: elf32-sh.c:1180 elf32-sh.c:1550
-msgid "%B: 0x%lx: fatal: reloc overflow while relaxing"
-msgstr "%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
-
-#: elf32-sh.c:3939 elf64-sh64.c:1514
-msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled"
-msgstr "Ð�ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ â€žSTO_SH5_ISA32â€œ Ð½Ð° Ð¼ÐµÑ�Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€Ð°Ñ’ÐµÐ½Ð¾"
-
-#: elf32-sh.c:4190
-msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation"
-msgstr "%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ñ†Ð¸Ñ™ Ð³Ñ€Ð°Ð½Ðµ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
-
-#: elf32-sh.c:4223 elf32-sh.c:4238
-msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx"
-msgstr "%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ 0x%lx"
-
-#: elf32-sh.c:4252
-msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32"
-msgstr "%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: â€žR_SH_PSHAâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%dâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ñƒ -32..32"
-
-#: elf32-sh.c:4266
-msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32"
-msgstr "%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: â€žR_SH_PSHLâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%dâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ñƒ -32..32"
-
-#: elf32-sh.c:4410 elf32-sh.c:4886
-msgid "%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section"
-msgstr "%B(%A+0x%lx): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÐ½ÐµÑ�ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ"
-
-#: elf32-sh.c:4993
-msgid "%B(%A+0x%lx): %s relocation against external symbol \"%s\""
-msgstr "%B(%A+0x%lx): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf32-score.c:4054 elf32-score7.c:3859
+#, c-format
+msgid "%pB: warning: linking PIC files with non-PIC files"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ð° Ð½Ðµ-â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°"
 
-#: elf32-sh.c:5466
+#: elf32-sh.c:533
 #, c-format
-msgid "%X%C: relocation to \"%s\" references a different segment\n"
-msgstr "%X%C: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_SH_USESâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð»Ð°Ðº 0x%x"
 
-#: elf32-sh.c:5472
+#: elf32-sh.c:3758
 #, c-format
-msgid "%C: warning: relocation to \"%s\" references a different segment\n"
-msgstr "%C: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
+msgid "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
+msgstr "%pB: %#<PRIx64>: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ñ†Ð¸Ñ™ Ð³Ñ€Ð°Ð½Ðµ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
+
+#: elf32-sh.c:3788 elf32-sh.c:3804
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
+msgstr "%pB: %#<PRIx64>: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ %#<PRIx64>"
+
+#: elf32-sh.c:3820
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
+msgstr "%pB: %#<PRIx64>: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: â€žR_SH_PSHAâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%#<PRId64>â€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ñƒ -32..32"
+
+#: elf32-sh.c:3836
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
+msgstr "%pB: %#<PRIx64>: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: â€žR_SH_PSHLâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%#<PRId64>â€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ñƒ -32..32"
+
+#: elf32-sh.c:3966 elf32-sh.c:4361
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÐ½ÐµÑ�ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ"
+
+#: elf32-sh.c:4464
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
+msgstr "%pB(%pA+%#<PRIx64>): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf32-sh.c:4583
+#, c-format
+msgid "%pB(%pA): offset in relocation for GD->LE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð·Ð° â€žGD->LEâ€œ Ð¿Ñ€ÐµÐ²Ð¾Ð´ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸: %#<PRIx64>"
+
+#. The backslash is to prevent bogus trigraph detection.
+#: elf32-sh.c:4601
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xd4??)"
+
+#: elf32-sh.c:4609
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xc7??)"
+
+#: elf32-sh.c:4616
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xd1??)"
+
+#: elf32-sh.c:4623
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x310c??)"
 
-#: elf32-sh.c:6254 elf32-sh.c:6337
-msgid "%B: `%s' accessed both as normal and FDPIC symbol"
-msgstr "%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€žFDPICâ€œ"
+#: elf32-sh.c:4630
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x410b??)"
+
+#: elf32-sh.c:4637
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x34cc??)"
 
-#: elf32-sh.c:6259 elf32-sh.c:6341
-msgid "%B: `%s' accessed both as FDPIC and thread local symbol"
-msgstr "%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ â€žFDPICâ€œ-Ñƒ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
+#: elf32-sh.c:4672
+#, c-format
+msgid "%pB(%pA): offset in relocation for IE->LE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð·Ð° â€žIE->LEâ€œ Ð¿Ñ€ÐµÐ²Ð¾Ð´ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸: %#<PRIx64>"
 
-#: elf32-sh.c:6289
-msgid "%B: Function descriptor relocation with non-zero addend"
-msgstr "%B: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
+#: elf32-sh.c:4690
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xd0??: mov.l)"
+
+#: elf32-sh.c:4699
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x0?12: stc)"
 
-#: elf32-sh.c:6525 elf64-alpha.c:4661
-msgid "%B: TLS local exec code cannot be linked into shared objects"
-msgstr "%B: Ð¢Ð›Ð¡ Ð¼ÐµÑ�Ð½Ð¸ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ ÐºÐ¾Ð´ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+#: elf32-sh.c:4706
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x0?ce: mov.l)"
 
-#: elf32-sh64.c:224 elf64-sh64.c:2318
+#: elf32-sh.c:4821
 #, c-format
-msgid "%s: compiled as 32-bit object and %s is 64-bit"
-msgstr "%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 64-Ð±Ð¸Ñ‚Ð½Ð¸"
+msgid "%pB(%pA): offset in relocation for GD->IE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð·Ð° â€žGD->IEâ€œ Ð¿Ñ€ÐµÐ²Ð¾Ð´ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸: %#<PRIx64>"
 
-#: elf32-sh64.c:227 elf64-sh64.c:2321
+#: elf32-sh.c:4889
 #, c-format
-msgid "%s: compiled as 64-bit object and %s is 32-bit"
-msgstr "%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸"
+msgid "%pB(%pA): offset in relocation for LD->LE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð·Ð° â€žLD->LEâ€œ Ð¿Ñ€ÐµÐ²Ð¾Ð´ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸: %#<PRIx64>"
 
-#: elf32-sh64.c:229 elf64-sh64.c:2323
+#: elf32-sh.c:5017
 #, c-format
-msgid "%s: object size does not match that of target %s"
-msgstr "%s: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ Ñ†Ð¸Ñ™Ð° â€ž%sâ€œ"
+msgid "%X%C: relocation to \"%s\" references a different segment\n"
+msgstr "%X%C: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
 
-#: elf32-sh64.c:452 elf64-sh64.c:2839
+#: elf32-sh.c:5024
 #, c-format
-msgid "%s: encountered datalabel symbol in input"
-msgstr "%s: Ð½Ð°Ð¸ÑˆÐ°Ð¾ Ñ�Ð°Ð¼ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð°Ñ‚Ð¿Ð¸Ñ�Ð° Ð´Ð°Ñ‚ÑƒÐ¼Ð° Ñƒ ÑƒÐ»Ð°Ð·Ñƒ"
+msgid "%C: warning: relocation to \"%s\" references a different segment\n"
+msgstr "%C: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
 
-#: elf32-sh64.c:529
-msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
-msgstr "ÐŸÐ¢Ð‘ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð°Ð´Ñ€ÐµÑ�Ð° â€žSHmediaâ€œ (Ð±Ð¸Ñ‚ 0 == 1)"
+#: elf32-sh.c:5483 elf32-sh.c:5565
+#, c-format
+msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
+msgstr "%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€žFDPICâ€œ"
 
-#: elf32-sh64.c:532
-msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
-msgstr "ÐŸÐ¢Ð� Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð°Ð´Ñ€ÐµÑ�Ð° â€žSHcompactâ€œ (Ð±Ð¸Ñ‚ 0 == 0)"
+#: elf32-sh.c:5489 elf32-sh.c:5570
+#, c-format
+msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
+msgstr "%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ â€žFDPICâ€œ-Ñƒ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
 
-#: elf32-sh64.c:550
+#: elf32-sh.c:5520
 #, c-format
-msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16"
-msgstr "%s: Ð“Ð�Ð¡ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ ÐŸÐ¢Ð‘ â€žinsnâ€œ Ñ�Ð° â€žR_SH_PT_16â€œ"
+msgid "%pB: Function descriptor relocation with non-zero addend"
+msgstr "%pB: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
 
-#: elf32-sh64.c:599
-msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n"
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð½Ð° %08x Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%pâ€œ\n"
+#: elf32-sh.c:5727 elf64-alpha.c:4657
+#, c-format
+msgid "%pB: TLS local exec code cannot be linked into shared objects"
+msgstr "%pB: â€žTLSâ€œ Ð¼ÐµÑ�Ð½Ð¸ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ ÐºÐ¾Ð´ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
 
-#: elf32-sh64.c:675
+#: elf32-sh.c:5842
 #, c-format
-msgid "%s: could not write out added .cranges entries"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð´Ð¾Ð´Ð°Ñ‚Ðµ â€ž.crangesâ€œ ÑƒÐ½Ð¾Ñ�Ðµ"
+msgid "%pB: uses %s instructions while previous modules use %s instructions"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ Ð´Ð¾Ðº Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ"
 
-#: elf32-sh64.c:735
+#: elf32-sh.c:5854
 #, c-format
-msgid "%s: could not write out sorted .cranges entries"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð½Ðµ â€ž.crangesâ€œ ÑƒÐ½Ð¾Ñ�Ðµ"
+msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%sâ€œ Ñ�Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾Ð¼ â€ž%sâ€œ Ñ˜Ðµ Ð´Ð°Ð»Ð¾ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
 
-#: elf32-sparc.c:90
-msgid "%B: compiled for a 64 bit system and target is 32 bit"
-msgstr "%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸"
+#: elf32-sh.c:5895
+#, c-format
+msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ ÐºÐ¾Ñ˜Ðµ Ð½Ð¸Ñ�Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ðµ Ñ�Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð°Ð¼Ð° ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¸Ð¼ Ñƒ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
 
-#: elf32-sparc.c:103
-msgid "%B: linking little endian files with big endian files"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸ Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸"
+#: elf32-sh.c:5908
+#, c-format
+msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
+msgstr "%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑˆÐ°Ð¼ â€žFDPICâ€œ Ð¸ Ð½Ðµ-â€žFDPICâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ"
 
-#: elf32-spu.c:716
-msgid "%X%P: overlay section %A does not start on a cache line.\n"
-msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ.\n"
+#: elf32-sparc.c:89
+#, c-format
+msgid "%pB: compiled for a 64 bit system and target is 32 bit"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸"
 
-#: elf32-spu.c:724
-msgid "%X%P: overlay section %A is larger than a cache line.\n"
-msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ñ€ÐµÐ´Ð° Ð¾Ñ�Ñ‚Ð°Ð²Ðµ.\n"
+#: elf32-sparc.c:102
+#, c-format
+msgid "%pB: linking little endian files with big endian files"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸ Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸"
 
-#: elf32-spu.c:744
-msgid "%X%P: overlay section %A is not in cache area.\n"
-msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ.\n"
+#: elf32-sparc.c:157
+#, c-format
+msgid "%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žsparcâ€œ Ð¼Ð°ÑˆÐ¸Ð½Ðµ â€ž%luâ€œ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð° Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð¾Ð±Ñ€Ð°Ñ’Ð¸Ð²Ð°ÑšÐ° Ð¿Ð¸Ñ�Ð°ÑšÐ°"
 
-#: elf32-spu.c:784
-msgid "%X%P: overlay sections %A and %A do not start at the same address.\n"
-msgstr "%X%P: Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ð¸ â€ž%Aâ€œ Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸ÑšÑƒ Ð½Ð° Ð¸Ñ�Ñ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸.\n"
+#: elf32-spu.c:735
+msgid "%X%P: overlay section %pA does not start on a cache line\n"
+msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ\n"
 
-#: elf32-spu.c:1008
-msgid "warning: call to non-function symbol %s defined in %B"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñ�ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ â€ž%Bâ€œ"
+#: elf32-spu.c:743
+msgid "%X%P: overlay section %pA is larger than a cache line\n"
+msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ñ€ÐµÐ´Ð° Ð¾Ñ�Ñ‚Ð°Ð²Ðµ\n"
 
-#: elf32-spu.c:1358
-msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
-msgstr "%A:0x%v â€žlrlive .brinfoâ€œ (%u) Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ (%u)\n"
+#: elf32-spu.c:763
+msgid "%X%P: overlay section %pA is not in cache area\n"
+msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ\n"
 
-#: elf32-spu.c:1877
-msgid "%B is not allowed to define %s"
-msgstr "â€ž%Bâ€œ Ð½ÐµÐ¼Ð° Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ â€ž%sâ€œ"
+#: elf32-spu.c:804
+#, c-format
+msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n"
+msgstr "%X%P: Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ð¸ â€ž%pAâ€œ Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸ÑšÑƒ Ð½Ð° Ð¸Ñ�Ñ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸\n"
 
-#: elf32-spu.c:1885
+#: elf32-spu.c:1030
+#, c-format
+msgid "warning: call to non-function symbol %s defined in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñ�ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ â€ž%pBâ€œ"
+
+#: elf32-spu.c:1380
+#, c-format
+msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
+msgstr "%pA:0x%v â€žlrlive .brinfoâ€œ (%u) Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ (%u)\n"
+
+#: elf32-spu.c:1910
+#, c-format
+msgid "%pB is not allowed to define %s"
+msgstr "â€ž%pBâ€œ Ð½ÐµÐ¼Ð° Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ â€ž%sâ€œ"
+
+#: elf32-spu.c:1918
 #, c-format
 msgid "you are not allowed to define %s in a script"
 msgstr "Ð²Ð¸ Ð½ÐµÐ¼Ð°Ñ‚Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµÑ‚Ðµ â€ž%sâ€œ Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸"
 
-#: elf32-spu.c:1919
+#: elf32-spu.c:1952
 #, c-format
 msgid "%s in overlay section"
 msgstr "â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°"
 
-#: elf32-spu.c:1948
+#: elf32-spu.c:1981
 msgid "overlay stub relocation overflow"
 msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð¿Ñ€ÐµÐºÑ€Ð¸Ð²Ð°ÑšÐ°"
 
-#: elf32-spu.c:1957
+#: elf32-spu.c:1990 elf64-ppc.c:14496
 msgid "stubs don't match calculated size"
 msgstr "Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜Ñƒ Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ñ‚Ð¾Ñ˜ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸"
 
-#: elf32-spu.c:2539
+#: elf32-spu.c:2573
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð° â€ž%sâ€œ\n"
 
-#: elf32-spu.c:2555
+#: elf32-spu.c:2589
 #, c-format
 msgid "warning: %s exceeds section size\n"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ°\n"
 
-#: elf32-spu.c:2586
-msgid "%A:0x%v not found in function table\n"
-msgstr "â€ž%A:0x%vâ€œ Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ\n"
-
-#: elf32-spu.c:2726
-msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n"
-msgstr "%B(%A+0x%v): Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-ÐºÐ¾Ð´Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%B(%A)â€œ, Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ñ‚Ð¿ÑƒÐ½Ð°\n"
-
-#: elf32-spu.c:3294
+#: elf32-spu.c:2621
 #, c-format
-msgid "Stack analysis will ignore the call from %s to %s\n"
-msgstr "Ð�Ð½Ð°Ð»Ð¸Ð·Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ›Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð·Ð¸Ð² Ð¾Ð´ â€ž%sâ€œ Ð´Ð¾ â€ž%sâ€œ\n"
+msgid "%pA:0x%v not found in function table\n"
+msgstr "â€ž%pA:0x%vâ€œ Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ\n"
 
-#: elf32-spu.c:3985
-msgid "  %s: 0x%v\n"
-msgstr "  %s: 0x%v\n"
+#: elf32-spu.c:2762
+#, c-format
+msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
+msgstr "%pB(%pA+0x%v): Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-ÐºÐ¾Ð´Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pB(%pA)â€œ, Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ñ‚Ð¿ÑƒÐ½Ð°\n"
 
-#: elf32-spu.c:3986
-msgid "%s: 0x%v 0x%v\n"
-msgstr "%s: 0x%v 0x%v\n"
+#: elf32-spu.c:3328
+#, c-format
+msgid "stack analysis will ignore the call from %s to %s\n"
+msgstr "Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ›Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð·Ð¸Ð² Ð¾Ð´ â€ž%sâ€œ Ð´Ð¾ â€ž%sâ€œ\n"
 
-#: elf32-spu.c:3991
+#: elf32-spu.c:4025
 msgid "  calls:\n"
 msgstr "  Ð¿Ð¾Ð·Ð¸Ð²Ð¸:\n"
 
-#: elf32-spu.c:3999
-#, c-format
-msgid "   %s%s %s\n"
-msgstr "   %s%s %s\n"
-
-#: elf32-spu.c:4304
+#: elf32-spu.c:4340
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¾ Ñƒ â€ž%sâ€œ\n"
 
-#: elf32-spu.c:4308
+#: elf32-spu.c:4344
 #, c-format
 msgid "%s duplicated\n"
 msgstr "â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¾\n"
 
-#: elf32-spu.c:4315
+#: elf32-spu.c:4351
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr "Ð¸Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ, Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð·Ð° ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾-Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°\n"
 
-#: elf32-spu.c:4356
+#: elf32-spu.c:4393
+#, c-format
 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n"
 msgstr "Ð½Ðµ-Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°Ñ˜ÑƒÑ›Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° 0x%v Ð¿Ð»ÑƒÑ� Ð½Ð°Ñ˜Ð²ÐµÑ›Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° 0x%v Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ðµ Ð¼ÐµÑ�Ð½Ð¾ Ñ�Ð¿Ñ€ÐµÐ¼Ð¸ÑˆÑ‚Ðµ\n"
 
-#: elf32-spu.c:4511
-msgid "%B:%A%s exceeds overlay size\n"
-msgstr "â€ž%B:%A%sâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°\n"
+#: elf32-spu.c:4549
+#, c-format
+msgid "%pB:%pA%s exceeds overlay size\n"
+msgstr "â€ž%pB:%pA%sâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°\n"
+
+#: elf32-spu.c:4690
+msgid "%F%P: auto overlay error: %E\n"
+msgstr "%F%P: Ð³Ñ€ÐµÑˆÐºÐ° Ñ�Ð°Ð¼Ð¾Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°: %E\n"
 
-#: elf32-spu.c:4673
+#: elf32-spu.c:4711
 msgid "Stack size for call graph root nodes.\n"
 msgstr "Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ð·Ð° Ð¿Ð¾Ð·Ð¸Ð² Ñ‡Ð²Ð¾Ñ€Ð¾Ð²Ð° ÐºÐ¾Ñ€ÐµÐ½Ð° Ð³Ñ€Ð°Ñ„Ð¸ÐºÐ°.\n"
 
-#: elf32-spu.c:4674
+#: elf32-spu.c:4712
 msgid ""
 "\n"
 "Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
@@ -2625,1477 +3549,2375 @@ msgstr ""
 "\n"
 "Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ð·Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ.  Ð�Ð°Ð¿Ð¾Ð¼ÐµÐ½Ðµ: â€ž*â€œ Ð½Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº, â€žtâ€œ Ð¿Ð¾Ð·Ð¸Ð² Ð¾Ñ�Ñ‚Ð°Ñ‚ÐºÐ°\n"
 
-#: elf32-spu.c:4684
+#: elf32-spu.c:4722
 msgid "Maximum stack required is 0x%v\n"
 msgstr "Ð�Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº Ñ˜Ðµ 0x%v\n"
 
-#: elf32-spu.c:4775
+#: elf32-spu.c:4741
+msgid "%X%P: stack/lrlive analysis error: %E\n"
+msgstr "%X%P: Ð³Ñ€ÐµÑˆÐºÐ° â€žstack/lrliveâ€œ Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ: %E\n"
+
+#: elf32-spu.c:4744
+msgid "%F%P: can not build overlay stubs: %E\n"
+msgstr "%F%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐµ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Eâ€œ\n"
+
+#: elf32-spu.c:4813
 msgid "fatal error while creating .fixup"
 msgstr "ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž.fixupâ€œ-Ð°"
 
-#: elf32-spu.c:5005
-msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'"
-msgstr "%B(%s+0x%lx): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf32-spu.c:5049
+#, c-format
+msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr "%pB(%s+%#<PRIx64>): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf32-tic6x.c:1600
+#: elf32-tic6x.c:1588
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ ÐºÐ¾Ñ˜Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-ÐŸÐ˜Ð¦ ÐºÐ¾Ð´"
 
-#: elf32-tic6x.c:1605
+#: elf32-tic6x.c:1593
 msgid "warning: generating a shared library containing non-PID code"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ ÐºÐ¾Ñ˜Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-ÐŸÐ˜Ð” ÐºÐ¾Ð´"
 
-#: elf32-tic6x.c:2524
-msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ðµ Ð¾Ð´Ð½Ð¾Ñ�Ð¸ Ð½Ð° â€žSBâ€œ Ð°Ð»Ð¸ â€ž__c6xabi_DSBT_BASEâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
+#: elf32-tic6x.c:2434
+#, c-format
+msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ðµ Ð¾Ð´Ð½Ð¾Ñ�Ð¸ Ð½Ð° â€žSBâ€œ Ð°Ð»Ð¸ â€ž__c6xabi_DSBT_BASEâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: elf32-tic6x.c:3648
-msgid "%B: error: unknown mandatory EABI object attribute %d"
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
+#: elf32-tic6x.c:3511
+#, c-format
+msgid "%pB: error: unknown mandatory EABI object attribute %d"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
+
+#: elf32-tic6x.c:3520
+#, c-format
+msgid "%pB: warning: unknown EABI object attribute %d"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
 
-#: elf32-tic6x.c:3656
-msgid "%B: warning: unknown EABI object attribute %d"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
+#: elf32-tic6x.c:3638 elf32-tic6x.c:3647
+#, c-format
+msgid "error: %pB requires more stack alignment than %pB preserves"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ â€ž%pBâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸"
 
-#: elf32-tic6x.c:3768 elf32-tic6x.c:3776
-msgid "error: %B requires more stack alignment than %B preserves"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ â€ž%Bâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸"
+#: elf32-tic6x.c:3657 elf32-tic6x.c:3666
+#, c-format
+msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žTag_ABI_array_object_alignmentâ€œ Ñƒ â€ž%pBâ€œ"
 
-#: elf32-tic6x.c:3786 elf32-tic6x.c:3795
-msgid "error: unknown Tag_ABI_array_object_alignment value in %B"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žTag_ABI_array_object_alignmentâ€œ Ñƒ â€ž%Bâ€œ"
+#: elf32-tic6x.c:3675 elf32-tic6x.c:3684
+#, c-format
+msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žTag_ABI_array_object_align_expectedâ€œ Ñƒ â€ž%pBâ€œ"
 
-#: elf32-tic6x.c:3804 elf32-tic6x.c:3813
-msgid "error: unknown Tag_ABI_array_object_align_expected value in %B"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žTag_ABI_array_object_align_expectedâ€œ Ñƒ â€ž%Bâ€œ"
+#: elf32-tic6x.c:3693 elf32-tic6x.c:3701
+#, c-format
+msgid "error: %pB requires more array alignment than %pB preserves"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½Ð¸Ð·Ð° Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ â€ž%pBâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸"
 
-#: elf32-tic6x.c:3821 elf32-tic6x.c:3828
-msgid "error: %B requires more array alignment than %B preserves"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½Ð¸Ð·Ð° Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ â€ž%Bâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸"
+#: elf32-tic6x.c:3724
+#, c-format
+msgid "warning: %pB and %pB differ in wchar_t size"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ð¸Ð¼Ð°Ñ˜Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ðµ â€žwchar_tâ€œ"
 
-#: elf32-tic6x.c:3850
-msgid "warning: %B and %B differ in wchar_t size"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ Ð¸Ð¼Ð°Ñ˜Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ðµ â€žwchar_tâ€œ"
+#: elf32-tic6x.c:3743
+#, c-format
+msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ñƒ Ð¿Ð¾ Ñ‚Ð¾Ð¼Ðµ Ð´Ð° Ð»Ð¸ Ñ˜Ðµ ÐºÐ¾Ð´ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žDSBTâ€œ"
 
-#: elf32-tic6x.c:3868
-msgid "warning: %B and %B differ in whether code is compiled for DSBT"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ñƒ Ð¿Ð¾ Ñ‚Ð¾Ð¼Ðµ Ð´Ð° Ð»Ð¸ Ñ˜Ðµ ÐºÐ¾Ð´ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žDSBTâ€œ"
+#: elf32-tilepro.c:3635 elfxx-tilegx.c:4019 elfxx-x86.c:1393
+#: elfnn-aarch64.c:9704 elfnn-riscv.c:2522
+#, c-format
+msgid "discarded output section: `%pA'"
+msgstr "Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð°: â€ž%pAâ€œ"
 
-#: elf32-v850.c:157
+#: elf32-v850.c:152
 #, c-format
-msgid "Variable `%s' cannot occupy in multiple small data regions"
-msgstr "Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð·Ð°ÑƒÐ·Ð¼Ðµ Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+msgid "variable `%s' cannot occupy in multiple small data regions"
+msgstr "Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð·Ð°ÑƒÐ·Ð¼Ðµ Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
 
-#: elf32-v850.c:160
+#: elf32-v850.c:155
 #, c-format
-msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions"
-msgstr "Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%sâ€œ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ Ñ˜ÐµÐ´Ð½Ð¾Ð¼ Ð¾Ð´ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸  Ð¼Ð°Ð»Ð¸Ñ…, Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+msgid "variable `%s' can only be in one of the small, zero, and tiny data regions"
+msgstr "Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ Ñ˜ÐµÐ´Ð½Ð¾Ð¼ Ð¾Ð´ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸  Ð¼Ð°Ð»Ð¸Ñ…, Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
 
-#: elf32-v850.c:163
+#: elf32-v850.c:158
 #, c-format
-msgid "Variable `%s' cannot be in both small and zero data regions simultaneously"
-msgstr "Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð¼Ð°Ð»Ð¸Ñ… Ð¸ Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+msgid "variable `%s' cannot be in both small and zero data regions simultaneously"
+msgstr "Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð¼Ð°Ð»Ð¸Ñ… Ð¸ Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
 
-#: elf32-v850.c:166
+#: elf32-v850.c:161
 #, c-format
-msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously"
-msgstr "Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð¼Ð°Ð»Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+msgid "variable `%s' cannot be in both small and tiny data regions simultaneously"
+msgstr "Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð¼Ð°Ð»Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
 
-#: elf32-v850.c:169
+#: elf32-v850.c:164
 #, c-format
-msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously"
-msgstr "Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+msgid "variable `%s' cannot be in both zero and tiny data regions simultaneously"
+msgstr "Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¸Ñ�Ñ‚Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾ Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸Ð¼Ð° Ð½ÑƒÐ»Ñ‚Ð¸Ñ… Ð¸ Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
 
-#: elf32-v850.c:467
-msgid "FAILED to find previous HI16 reloc"
-msgstr "Ð�Ð˜Ð¡Ð�Ðœ Ð£Ð¡ÐŸÐ•Ðž Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žHI16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: elf32-v850.c:462
+msgid "failed to find previous HI16 reloc"
+msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žHI16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: elf32-v850.c:2293
+#: elf32-v850.c:2302
 msgid "could not locate special linker symbol __gp"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__gpâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°"
 
-#: elf32-v850.c:2297
+#: elf32-v850.c:2306
 msgid "could not locate special linker symbol __ep"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__epâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°"
 
-#: elf32-v850.c:2301
+#: elf32-v850.c:2310
 msgid "could not locate special linker symbol __ctbp"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__ctbpâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°"
 
-#: elf32-v850.c:2471 elf32-v850.c:2534
-msgid "%B: Architecture mismatch with previous modules"
-msgstr "%B: Ð�Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
-
-#: elf32-v850.c:2478
-msgid "%B: Alignment mismatch with previous modules"
-msgstr "%B: ÐŸÐ¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
+#: elf32-v850.c:2531
+#, c-format
+msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBÐ´ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° 8-Ð±Ð¸Ñ‚Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð°Ð»Ð¸ Ñ˜Ðµ â€ž%pBâ€œ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ð½Ð° 4-Ð±Ð¸Ñ‚Ð½Ð¾"
+
+#: elf32-v850.c:2547
+#, c-format
+msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð´ÑƒÐ±Ð»ÐµÑ€Ðµ Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 32-Ð±Ð¸Ñ‚Ð½Ðµ"
+
+#: elf32-v850.c:2562
+#, c-format
+msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žFPU-3.0â€œ Ð°Ð»Ð¸ â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ñ�Ð°Ð¼Ð¾ â€žFPU-2.0â€œ"
+
+#: elf32-v850.c:2594
+#, c-format
+msgid " alignment of 8-byte entities: "
+msgstr " Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ 8-Ð±Ð¸Ñ‚Ð½Ð¸Ñ… ÐµÐ½Ñ‚Ð¸Ñ‚ÐµÑ‚Ð°: "
+
+#: elf32-v850.c:2597
+#, c-format
+msgid "4-byte"
+msgstr "4-Ð±Ð¸Ñ‚Ð°"
+
+#: elf32-v850.c:2598
+#, c-format
+msgid "8-byte"
+msgstr "8-Ð±Ð¸Ñ‚Ð°"
+
+#: elf32-v850.c:2599 elf32-v850.c:2611
+#, c-format
+msgid "not set"
+msgstr "Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾"
+
+#: elf32-v850.c:2600 elf32-v850.c:2612 elf32-v850.c:2624 elf32-v850.c:2635
+#: elf32-v850.c:2646 elf32-v850.c:2657
+#, c-format
+msgid "unknown: %x"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾: %x"
+
+#: elf32-v850.c:2606
+#, c-format
+msgid " size of doubles: "
+msgstr " Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´ÑƒÐ±Ð»ÐµÑ€Ð°: "
+
+#: elf32-v850.c:2609
+#, c-format
+msgid "4-bytes"
+msgstr "4-Ð±Ð°Ñ˜Ñ‚Ð°"
+
+#: elf32-v850.c:2610
+#, c-format
+msgid "8-bytes"
+msgstr "8-Ð±Ð°Ñ˜Ñ‚Ð°"
+
+#: elf32-v850.c:2618
+#, c-format
+msgid " FPU support required: "
+msgstr " â€žFPUâ€œ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ° Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð°: "
+
+#: elf32-v850.c:2621
+#, c-format
+msgid "FPU-2.0"
+msgstr "FPU-2.0"
+
+#: elf32-v850.c:2622
+#, c-format
+msgid "FPU-3.0"
+msgstr "FPU-3.0"
+
+#: elf32-v850.c:2623
+#, c-format
+msgid "none"
+msgstr "Ð½Ð¸ÑˆÑ‚Ð°"
+
+#: elf32-v850.c:2630
+#, c-format
+msgid "SIMD use: "
+msgstr "â€žSIMDâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ: "
+
+#: elf32-v850.c:2633 elf32-v850.c:2644 elf32-v850.c:2655
+#, c-format
+msgid "yes"
+msgstr "Ð´Ð°"
+
+#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#, c-format
+msgid "no"
+msgstr "Ð½Ðµ"
+
+#: elf32-v850.c:2641
+#, c-format
+msgid "CACHE use: "
+msgstr "â€žCACHEâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ: "
+
+#: elf32-v850.c:2652
+#, c-format
+msgid "MMU use: "
+msgstr "â€žMMUâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ: "
+
+#: elf32-v850.c:2819 elf32-v850.c:2875
+#, c-format
+msgid "%pB: architecture mismatch with previous modules"
+msgstr "%pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
 
 #. xgettext:c-format.
-#: elf32-v850.c:2553
+#: elf32-v850.c:2893
 #, c-format
 msgid "private flags = %lx: "
 msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx: "
 
-#: elf32-v850.c:2558
+#: elf32-v850.c:2898
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850â€œ"
 
-#: elf32-v850.c:2560
+#: elf32-v850.c:2900
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850 E3â€œ"
 
-#: elf32-v850.c:2562 elf32-v850.c:2572
+#: elf32-v850.c:2902 elf32-v850.c:2909
 #, c-format
 msgid "v850 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850â€œ"
 
-#: elf32-v850.c:2565
-#, c-format
-msgid ", 8-byte data alignment"
-msgstr ", 8-Ð±Ð¸Ñ‚Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
-
-#: elf32-v850.c:2573
+#: elf32-v850.c:2910
 #, c-format
 msgid "v850e architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850eâ€œ"
 
-#: elf32-v850.c:2574
+#: elf32-v850.c:2911
 #, c-format
 msgid "v850e1 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e1â€œ"
 
-#: elf32-v850.c:2575
+#: elf32-v850.c:2912
 #, c-format
 msgid "v850e2 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e2â€œ"
 
-#: elf32-v850.c:2576
+#: elf32-v850.c:2913
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e2v3â€œ"
 
-#: elf32-v850.c:2577
+#: elf32-v850.c:2914
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e3v5â€œ"
 
-#: elf32-vax.c:532
+#: elf32-v850.c:3612 elf32-v850.c:3851
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð½Ð°Ðº"
+
+#: elf32-v850.c:3622 elf32-v850.c:3861
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%#xâ€œ"
+
+#: elf32-v850.c:3668 elf32-v850.c:3896
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elf32-v850.c:3708
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%#<PRIx64>â€œ"
+
+#: elf32-vax.c:540
 #, c-format
 msgid " [nonpic]"
 msgstr " [Ð½Ðµ-Ð¿Ð¸Ñ†]"
 
-#: elf32-vax.c:535
+#: elf32-vax.c:543
 #, c-format
 msgid " [d-float]"
 msgstr " [d-Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·]"
 
-#: elf32-vax.c:538
+#: elf32-vax.c:546
 #, c-format
 msgid " [g-float]"
 msgstr " [g-Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·]"
 
-#: elf32-vax.c:656
+#: elf32-vax.c:632
 #, c-format
-msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld"
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žGOTâ€œ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº â€ž%ldâ€œ-Ð° Ð·Ð° â€ž%sâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾Ð¼ â€žGOTâ€œ Ñ�Ð°Ð±Ð¸Ñ€ÐºÑƒ â€ž%ldâ€œ-Ð°"
+msgid "%pB: warning: GOT addend of %<PRId64> to `%s' does not match previous GOT addend of %<PRId64>"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žGOTâ€œ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº â€ž%<PRId64>â€œ-Ð° Ð·Ð° â€ž%sâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾Ð¼ â€žGOTâ€œ Ñ�Ð°Ð±Ð¸Ñ€ÐºÑƒ â€ž%<PRId64>â€œ-Ð°"
 
-#: elf32-vax.c:1543
+#: elf32-vax.c:1389
 #, c-format
-msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored"
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žPLTâ€œ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº â€ž%dâ€œ-Ð° Ð·Ð° â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½"
+msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žPLTâ€œ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº â€ž%<PRId64>â€œ-Ð° Ð·Ð° â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½"
 
-#: elf32-vax.c:1668
+#: elf32-vax.c:1515
 #, c-format
-msgid "%s: warning: %s relocation against symbol `%s' from %s section"
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
+msgid "%pB: warning: %s relocation against symbol `%s' from %pA section"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ"
 
-#: elf32-vax.c:1674
+#: elf32-vax.c:1522
 #, c-format
-msgid "%s: warning: %s relocation to 0x%x from %s section"
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ 0x%x Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
+msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ %#<PRIx64> Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ"
 
-#: elf32-xgate.c:686
+#: elf32-visium.c:824
+#, c-format
+msgid "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž%s -mtune=%sâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž%s -mtune=%sâ€œ"
+
+#: elf32-xgate.c:506
 #, c-format
 msgid "cpu=XGATE]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=XGATE]"
 
-#: elf32-xgate.c:688
+#: elf32-xgate.c:508
 #, c-format
 msgid "error reading cpu type from elf private data"
 msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ñ‡Ð¸Ñ‚Ð°ÑšÐ° Ð²Ñ€Ñ�Ñ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ð¸Ð· Ð»Ð¸Ñ‡Ð½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° ÐµÐ»Ñ„-Ð°"
 
-#: elf32-xstormy16.c:455 elf64-ia64-vms.c:2072 elf32-ia64.c:2330
-#: elf64-ia64.c:2330
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2074 elfnn-ia64.c:2343
 msgid "non-zero addend in @fptr reloc"
 msgstr "Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñƒ â€ž@fptrâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ"
 
-#: elf32-xtensa.c:908
-msgid "%B(%A): invalid property table"
-msgstr "%B(%A): Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð²Ð»Ð°Ñ�Ð½Ð¸ÑˆÑ‚Ð²Ð°"
-
-#: elf32-xtensa.c:2774
-msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)"
-msgstr "%B(%A+0x%lx): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°=0x%x)"
+#: elf32-xtensa.c:1001
+#, c-format
+msgid "%pB(%pA): invalid property table"
+msgstr "%pB(%pA): Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð²Ð»Ð°Ñ�Ð½Ð¸ÑˆÑ‚Ð²Ð°"
 
-#: elf32-xtensa.c:2853 elf32-xtensa.c:2974
+#: elf32-xtensa.c:2733
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°=%#<PRIx64>)"
+
+#: elf32-xtensa.c:2816 elf32-xtensa.c:2939
 msgid "dynamic relocation in read-only section"
 msgstr "Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ"
 
-#: elf32-xtensa.c:2950
+#: elf32-xtensa.c:2916
 msgid "TLS relocation invalid without dynamic sections"
 msgstr "Ð¢Ð›Ð¡ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ñ… Ð¾Ð´ÐµÑ™Ð°ÐºÐ°"
 
-#: elf32-xtensa.c:3169
+#: elf32-xtensa.c:3126
 msgid "internal inconsistency in size of .got.loc section"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.got.locâ€œ"
 
-#: elf32-xtensa.c:3482
-msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x"
-msgstr "%B: Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ. Ð˜Ð·Ð»Ð°Ð· Ñ˜Ðµ 0x%x, Ð° ÑƒÐ»Ð°Ð· 0x%x"
-
-#: elf32-xtensa.c:4713 elf32-xtensa.c:4721
-msgid "Attempt to convert L32R/CALLX to CALL failed"
-msgstr "ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜ Ð¿Ñ€ÐµÑ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€žL32R/CALLXâ€œ Ñƒ â€žCALLâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾"
-
-#: elf32-xtensa.c:6330 elf32-xtensa.c:6406 elf32-xtensa.c:7522
-msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch"
-msgstr "%B(%A+0x%lx): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ; Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾"
-
-#: elf32-xtensa.c:7262
-msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
-msgstr "%B(%A+0x%lx): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ Ð·Ð° â€žXTENSA_ASM_SIMPLIFYâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ; Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾"
+#: elf32-xtensa.c:3432
+#, c-format
+msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
+msgstr "%pB: Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ; Ð¸Ð·Ð»Ð°Ð· Ñ˜Ðµ 0x%x, Ð° ÑƒÐ»Ð°Ð· 0x%x"
+
+#: elf32-xtensa.c:4726 elf32-xtensa.c:4734
+msgid "attempt to convert L32R/CALLX to CALL failed"
+msgstr "Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜ Ð¿Ñ€ÐµÑ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€žL32R/CALLXâ€œ Ñƒ â€žCALLâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾"
+
+#: elf32-xtensa.c:6559 elf32-xtensa.c:6638 elf32-xtensa.c:8064
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ; Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾"
+
+#: elf32-xtensa.c:7805
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ Ð·Ð° â€žXTENSA_ASM_SIMPLIFYâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ; Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾"
 
-#: elf32-xtensa.c:9022
+#: elf32-xtensa.c:9663
 msgid "invalid relocation address"
 msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
 
-#: elf32-xtensa.c:9071
+#: elf32-xtensa.c:9754
 msgid "overflow after relaxation"
 msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð½Ð°ÐºÐ¾Ð½ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
 
-#: elf32-xtensa.c:10203
-msgid "%B(%A+0x%lx): unexpected fix for %s relocation"
-msgstr "%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° Ð·Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: elf32-xtensa.c:10900
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° Ð·Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elf32-z80.c:473
+#, c-format
+msgid "%pB: unsupported bfd mach %#lx"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð±Ñ„Ð´ Ð¿Ð¾ÐºÐ»Ð°Ð¿Ð°ÑšÐµ â€ž%#lxâ€œ"
+
+#: elf32-z80.c:518
+#, c-format
+msgid "%pB: unsupported mach %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ð¾ÐºÐ»Ð°Ð¿Ð°ÑšÐµ â€ž%#xâ€œ"
+
+#: elf32-z80.c:546
+#, c-format
+msgid "%pB: unsupported arch %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€ž%#xâ€œ"
 
-#: elf64-alpha.c:474
+#: elf64-alpha.c:473
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr "â€žGPDISPâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð½Ð°ÑˆÐ»Ð¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žldahâ€œ Ð¸ â€žldaâ€œ"
 
-#: elf64-alpha.c:2503
-msgid "%B: .got subsegment exceeds 64K (size %d)"
-msgstr "%B: Ð¿Ð¾Ð´-Ð¿Ð¾Ð´ÐµÐ¾Ðº â€ž.gotâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ 64K (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ %d)"
-
-#: elf64-alpha.c:4396 elf64-alpha.c:4408
-msgid "%B: gp-relative relocation against dynamic symbol %s"
-msgstr "%B: â€žgpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
-
-#: elf64-alpha.c:4434 elf64-alpha.c:4574
-msgid "%B: pc-relative relocation against dynamic symbol %s"
-msgstr "%B: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
-
-#: elf64-alpha.c:4462
-msgid "%B: change in gp: BRSGP %s"
-msgstr "%B: Ð¸Ð·Ð¼ÐµÐ½Ð° Ñƒ â€žgpâ€œ-Ñƒ: BRSGP %s"
+#: elf64-alpha.c:1999 elf64-alpha.c:2694 elflink.c:14885
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ\n"
+
+#: elf64-alpha.c:2451
+#, c-format
+msgid "%pB: .got subsegment exceeds 64K (size %d)"
+msgstr "%pB: Ð¿Ð¾Ð´-Ð¿Ð¾Ð´ÐµÐ¾Ðº â€ž.gotâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ 64K (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ %d)"
+
+#: elf64-alpha.c:2989 elf64-alpha.c:3183
+#, c-format
+msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
+msgstr "%pB: %pA+%#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð³ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð·Ð½Ð°ÐºÐ°"
+
+#: elf64-alpha.c:4381 elf64-alpha.c:4394
+#, c-format
+msgid "%pB: gp-relative relocation against dynamic symbol %s"
+msgstr "%pB: â€žgpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf64-alpha.c:4487
+#: elf64-alpha.c:4450
+#, c-format
+msgid "%pB: change in gp: BRSGP %s"
+msgstr "%pB: Ð¸Ð·Ð¼ÐµÐ½Ð° Ñƒ â€žgpâ€œ-Ñƒ: BRSGP %s"
+
+#: elf64-alpha.c:4475 mach-o.c:616 elfnn-riscv.c:485
 msgid "<unknown>"
 msgstr "<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾>"
 
-#: elf64-alpha.c:4492
-msgid "%B: !samegp reloc against symbol without .prologue: %s"
-msgstr "%B: â€ž!samegpâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð±ÐµÐ· â€ž.prologueâ€œ-Ð°: %s"
+#: elf64-alpha.c:4481
+#, c-format
+msgid "%pB: !samegp reloc against symbol without .prologue: %s"
+msgstr "%pB: â€ž!samegpâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð±ÐµÐ· â€ž.prologueâ€œ-Ð°: %s"
+
+#: elf64-alpha.c:4539
+#, c-format
+msgid "%pB: unhandled dynamic relocation against %s"
+msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ"
+
+#: elf64-alpha.c:4574
+#, c-format
+msgid "%pB: pc-relative relocation against undefined weak symbol %s"
+msgstr "%pB: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð»Ð°Ð±Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf64-alpha.c:4549
-msgid "%B: unhandled dynamic relocation against %s"
-msgstr "%B: Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ"
+#: elf64-alpha.c:4640
+#, c-format
+msgid "%pB: dtp-relative relocation against dynamic symbol %s"
+msgstr "%pB: â€ždtpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf64-alpha.c:4581
-msgid "%B: pc-relative relocation against undefined weak symbol %s"
-msgstr "%B: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð»Ð°Ð±Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf64-alpha.c:4665
+#, c-format
+msgid "%pB: tp-relative relocation against dynamic symbol %s"
+msgstr "%pB: â€žtpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf64-alpha.c:4645
-msgid "%B: dtp-relative relocation against dynamic symbol %s"
-msgstr "%B: â€ždtpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:517
+msgid "internal error: relocation not supported"
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
 
-#: elf64-alpha.c:4668
-msgid "%B: tp-relative relocation against dynamic symbol %s"
-msgstr "%B: â€žtpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf64-gen.c:71
+#, c-format
+msgid "%pB: Relocations in generic ELF (EM: %d)"
+msgstr "%pB: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð¿ÑˆÑ‚ÐµÐ¼ â€žELFâ€œ-Ñƒ (EM: %d)"
 
-#: elf64-hppa.c:2084
+#: elf64-hppa.c:2032
 #, c-format
-msgid "stub entry for %s cannot load .plt, dp offset = %ld"
-msgstr "ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð·Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð° â€ž.pltâ€œ, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ â€ždpâ€œ = %ld"
+msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
+msgstr "ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð·Ð° â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð° â€ž.pltâ€œ, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ â€ždpâ€œ = %<PRId64>"
 
-#: elf64-hppa.c:3280
-msgid "%B(%A+0x%"
-msgstr "%B(%A+0x%"
+#: elf64-hppa.c:3236
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ñ�Ñ‚Ð¸Ñ›Ð¸ â€ž%sâ€œ"
 
-#: elf64-ia64-vms.c:587 elf32-ia64.c:619 elf64-ia64.c:619
-msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch."
-msgstr "%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼ â€žbrâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ. ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ â€žbrlâ€œ Ð¸Ð»Ð¸ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ð³Ñ€Ð°Ð½Ñƒ."
+#: elf64-ia64-vms.c:598 elfnn-ia64.c:639
+#, c-format
+msgid "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or indirect branch"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼ â€žbrâ€œ Ð½Ð° %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ â€žbrlâ€œ Ð¸Ð»Ð¸ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ð³Ñ€Ð°Ð½Ñƒ"
 
-#: elf64-ia64-vms.c:2027 elf32-ia64.c:2278 elf64-ia64.c:2278
+#: elf64-ia64-vms.c:2029 elfnn-ia64.c:2291
 msgid "@pltoff reloc against local symbol"
 msgstr "â€ž@pltoffâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
 
-#: elf64-ia64-vms.c:3279 elf32-ia64.c:3684 elf64-ia64.c:3684
+#: elf64-ia64-vms.c:3281 elfnn-ia64.c:3674
 #, c-format
-msgid "%s: short data segment overflowed (0x%lx >= 0x400000)"
-msgstr "%s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° ÐºÑ€Ð°Ñ‚ÐºÐ¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (0x%lx >= 0x400000)"
+msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
+msgstr "%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° ÐºÑ€Ð°Ñ‚ÐºÐ¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (%#<PRIx64> >= 0x400000)"
 
-#: elf64-ia64-vms.c:3290 elf32-ia64.c:3695 elf64-ia64.c:3695
+#: elf64-ia64-vms.c:3291 elfnn-ia64.c:3684
 #, c-format
-msgid "%s: __gp does not cover short data segment"
-msgstr "%s: â€ž__gpâ€œ Ð½Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ ÐºÑ€Ð°Ñ‚ÐºÐ¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+msgid "%pB: __gp does not cover short data segment"
+msgstr "%pB: â€ž__gpâ€œ Ð½Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ ÐºÑ€Ð°Ñ‚ÐºÐ¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
 
-#: elf64-ia64-vms.c:3555 elf32-ia64.c:3962 elf64-ia64.c:3962
-msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'"
-msgstr "%B: Ð½Ðµ-Ð¿Ð¸Ðº ÐºÐ¾Ð´ Ñ�Ð° â€žimmâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ¼ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf64-ia64-vms.c:3561 elfnn-ia64.c:3958
+#, c-format
+msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
+msgstr "%pB: Ð½Ðµ-â€žpicâ€œ ÐºÐ¾Ð´ Ñ�Ð° â€žimmâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ¼ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf64-ia64-vms.c:3617 elf32-ia64.c:4029 elf64-ia64.c:4029
-msgid "%B: @gprel relocation against dynamic symbol %s"
-msgstr "%B: â€ž@gprelâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf64-ia64-vms.c:3625 elfnn-ia64.c:4026
+#, c-format
+msgid "%pB: @gprel relocation against dynamic symbol %s"
+msgstr "%pB: â€ž@gprelâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf64-ia64-vms.c:3676 elf32-ia64.c:4092 elf64-ia64.c:4092
-msgid "%B: linking non-pic code in a position independent executable"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð½Ðµ-Ð¿Ð¸Ðº ÐºÐ¾Ð´ Ñƒ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð¼ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ð¼ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°"
+#: elf64-ia64-vms.c:3684 elfnn-ia64.c:4089
+#, c-format
+msgid "%pB: linking non-pic code in a position independent executable"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð½Ðµ-â€žpicâ€œ ÐºÐ¾Ð´ Ñƒ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð¼ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ð¼ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°"
 
-#: elf64-ia64-vms.c:3777 elf32-ia64.c:4229 elf64-ia64.c:4229
-msgid "%B: @internal branch to dynamic symbol %s"
-msgstr "%B: â€ž@internalâ€œ Ð³Ñ€Ð°Ð½Ð° ÐºÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ"
+#: elf64-ia64-vms.c:3786 elfnn-ia64.c:4227
+#, c-format
+msgid "%pB: @internal branch to dynamic symbol %s"
+msgstr "%pB: â€ž@internalâ€œ Ð³Ñ€Ð°Ð½Ð° ÐºÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ"
 
-#: elf64-ia64-vms.c:3779 elf32-ia64.c:4231 elf64-ia64.c:4231
-msgid "%B: speculation fixup to dynamic symbol %s"
-msgstr "%B: Ñ€Ð°Ð·Ð¼Ð°Ñ‚Ñ€Ð°Ð¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÑƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf64-ia64-vms.c:3789 elfnn-ia64.c:4230
+#, c-format
+msgid "%pB: speculation fixup to dynamic symbol %s"
+msgstr "%pB: Ñ€Ð°Ð·Ð¼Ð°Ñ‚Ñ€Ð°Ð¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÑƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf64-ia64-vms.c:3781 elf32-ia64.c:4233 elf64-ia64.c:4233
-msgid "%B: @pcrel relocation against dynamic symbol %s"
-msgstr "%B: â€ž@pcrelâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf64-ia64-vms.c:3792 elfnn-ia64.c:4233
+#, c-format
+msgid "%pB: @pcrel relocation against dynamic symbol %s"
+msgstr "%pB: â€ž@pcrelâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf64-ia64-vms.c:3905 elf32-ia64.c:4430 elf64-ia64.c:4430
+#: elf64-ia64-vms.c:3916 elfnn-ia64.c:4430
 msgid "unsupported reloc"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: elf64-ia64-vms.c:3942 elf32-ia64.c:4468 elf64-ia64.c:4468
-msgid "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'."
-msgstr "%B: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¢Ð›Ð¡ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ."
+#: elf64-ia64-vms.c:3953 elfnn-ia64.c:4468
+#, c-format
+msgid "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in section `%pA'."
+msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€žTLSâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð½Ð° %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ."
 
-#: elf64-ia64-vms.c:3957 elf32-ia64.c:4483 elf64-ia64.c:4483
-msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)."
-msgstr "%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼ â€žbrâ€œ (%s) Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¾Ð¼ 0x%lx (> 0x1000000)."
+#: elf64-ia64-vms.c:3970 elfnn-ia64.c:4485
+#, c-format
+msgid "%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size %#<PRIx64> (> 0x1000000)."
+msgstr "%pB: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼ â€žbrâ€œ (%s) Ñƒ â€ž%sâ€œ Ð½Ð° %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¾Ð¼ %#<PRIx64> (> 0x1000000)."
 
-#: elf64-ia64-vms.c:4246 elf32-ia64.c:4745 elf64-ia64.c:4745
-msgid "%B: linking trap-on-NULL-dereference with non-trapping files"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð·Ð°Ñ…Ð²Ð°Ñ‚-Ð½Ð°-Ð�Ð˜Ð¨Ð¢Ð�Ð’Ð�ÐžÐˆ-Ð´ÐµÑ€ÐµÑ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ñ�Ð° Ð½Ðµ-Ð·Ð°Ñ…Ð²Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°"
+#: elf64-ia64-vms.c:4266 elfnn-ia64.c:4746
+#, c-format
+msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð·Ð°Ñ…Ð²Ð°Ñ‚-Ð½Ð°-Ð�Ð˜Ð¨Ð¢Ð�Ð’Ð�ÐžÐˆ-Ð´ÐµÑ€ÐµÑ„ÐµÑ€ÐµÐ½Ñ†Ð¸ Ñ�Ð° Ð½Ðµ-Ð·Ð°Ñ…Ð²Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°"
 
-#: elf64-ia64-vms.c:4255 elf32-ia64.c:4754 elf64-ia64.c:4754
-msgid "%B: linking big-endian files with little-endian files"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸ Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸"
+#: elf64-ia64-vms.c:4275 elfnn-ia64.c:4755
+#, c-format
+msgid "%pB: linking big-endian files with little-endian files"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸ Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸"
 
-#: elf64-ia64-vms.c:4264 elf32-ia64.c:4763 elf64-ia64.c:4763
-msgid "%B: linking 64-bit files with 32-bit files"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ð° 32-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°"
+#: elf64-ia64-vms.c:4284 elfnn-ia64.c:4764
+#, c-format
+msgid "%pB: linking 64-bit files with 32-bit files"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ð° 32-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°"
 
-#: elf64-ia64-vms.c:4273 elf32-ia64.c:4772 elf64-ia64.c:4772
-msgid "%B: linking constant-gp files with non-constant-gp files"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€žÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ð³-Ð³Ð¿â€œ-Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° â€žÐ½Ðµ-ÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ð³-Ð³Ð¿â€œ-Ð°"
+#: elf64-ia64-vms.c:4293 elfnn-ia64.c:4773
+#, c-format
+msgid "%pB: linking constant-gp files with non-constant-gp files"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€žÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ð³-Ð³Ð¿â€œ-Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° â€žÐ½Ðµ-ÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ð³-Ð³Ð¿â€œ-Ð°"
 
-#: elf64-ia64-vms.c:4283 elf32-ia64.c:4782 elf64-ia64.c:4782
-msgid "%B: linking auto-pic files with non-auto-pic files"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€žÐ°ÑƒÑ‚Ð¾-Ð¿Ð¸Ðºâ€œ-Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° â€žÐ½Ðµ-Ð°ÑƒÑ‚Ð¾-Ð¿Ð¸Ðºâ€œ-Ð°"
+#: elf64-ia64-vms.c:4303 elfnn-ia64.c:4783
+#, c-format
+msgid "%pB: linking auto-pic files with non-auto-pic files"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°ÑƒÑ‚Ð¾-â€žpicâ€œ-Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð½Ðµ-Ð°ÑƒÑ‚Ð¾-â€žpicâ€œ"
 
-#: elf64-ia64-vms.c:5125 elflink.c:4299
-msgid "Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %A"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%Bâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ðµ Ð¾Ð´ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° (%u) ÑšÐµÐ³Ð¾Ð²Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œ"
+#: elf64-ia64-vms.c:5150 elflink.c:5072
+#, c-format
+msgid "warning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pA"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ðµ Ð¾Ð´ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° (%u) ÑšÐµÐ³Ð¾Ð²Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ"
 
-#: elf64-ia64-vms.c:5131 elflink.c:4305
-msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%Bâ€œ Ñ˜Ðµ Ð¼Ð°ÑšÐµ Ð¾Ð´ â€ž%uâ€œ Ñƒ â€ž%Bâ€œ"
+#: elf64-ia64-vms.c:5157 elflink.c:5079
+#, c-format
+msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ Ñ˜Ðµ Ð¼Ð°ÑšÐµ Ð¾Ð´ â€ž%uâ€œ Ñƒ â€ž%pBâ€œ"
 
-#: elf64-ia64-vms.c:5146 elflink.c:4321
-msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ð¸Ð· â€ž%luâ€œ Ñƒ â€ž%Bâ€œ Ñƒ â€ž%luâ€œ Ñƒ â€ž%Bâ€œ"
+#: elf64-ia64-vms.c:5173 elflink.c:5096
+#, c-format
+msgid "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ð¸Ð· â€ž%<PRIx64>â€œ Ñƒ â€ž%pBâ€œ Ñƒ â€ž%<PRIx64>â€œ Ñƒ â€ž%pBâ€œ"
 
-#: elf64-mmix.c:986
-msgid ""
-"invalid input relocation when producing non-ELF, non-mmo format output.\n"
-" Please use the objcopy program to convert from ELF or mmo,\n"
-" or assemble using \"-no-expand\" (for gcc, \"-Wa,-no-expand\""
-msgstr ""
-"Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ»Ð°Ð·Ð° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð´Ð°Ð²Ð°ÑšÐ° Ð½Ðµ-â€žELFâ€œ, Ð½Ðµ-â€žmmoâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¸Ð·Ð»Ð°Ð·Ð°.\n"
-" ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ â€žobjcopyâ€œ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð¸Ð· â€žELFâ€œ-Ð° Ð¸Ð»Ð¸ â€žmmoâ€œ-Ð°,\n"
-" Ð¸Ð»Ð¸ Ñ�Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚ÐµÑ›Ð¸ â€ž-no-expandâ€œ (Ð·Ð° Ð³Ñ†Ñ†, â€ž-Wa,-no-expandâ€œ)"
+#: elf64-mips.c:4095
+#, c-format
+msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
+msgstr "%pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%<PRIx64>â€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld"
 
-#: elf64-mmix.c:1170
-msgid ""
-"invalid input relocation when producing non-ELF, non-mmo format output.\n"
-" Please use the objcopy program to convert from ELF or mmo,\n"
-" or compile using the gcc-option \"-mno-base-addresses\"."
-msgstr ""
-"Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ»Ð°Ð·Ð° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð´Ð°Ð²Ð°ÑšÐ° Ð½Ðµ-â€žELFâ€œ, Ð½Ðµ-â€žmmoâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¸Ð·Ð»Ð°Ð·Ð°.\n"
-" ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ â€žobjcopyâ€œ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð¸Ð· â€žELFâ€œ-Ð° Ð¸Ð»Ð¸ â€žmmoâ€œ-Ð°,\n"
-" Ð¸Ð»Ð¸ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚ÐµÑ›Ð¸ Ð³Ñ†Ñ†-Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-mno-base-addressesâ€œ."
+#: elf64-mmix.c:984
+msgid "invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or assemble using \"-no-expand\" (for gcc, \"-Wa,-no-expand\""
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ»Ð°Ð·Ð° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð´Ð°Ð²Ð°ÑšÐ° Ð½Ðµ-â€žELFâ€œ, Ð½Ðµ-â€žmmoâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¸Ð·Ð»Ð°Ð·Ð°; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ â€žobjcopyâ€œ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð¸Ð· â€žELFâ€œ-Ð° Ð¸Ð»Ð¸ â€žmmoâ€œ-Ð°, Ð¸Ð»Ð¸ Ñ�Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚ÐµÑ›Ð¸ â€ž-no-expandâ€œ (Ð·Ð° Ð³Ñ†Ñ†, â€ž-Wa,-no-expandâ€œ)"
+
+#: elf64-mmix.c:1168
+msgid "invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or compile using the gcc-option \"-mno-base-addresses\"."
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ»Ð°Ð·Ð° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð´Ð°Ð²Ð°ÑšÐ° Ð½Ðµ-â€žELFâ€œ, Ð½Ðµ-â€žmmoâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¸Ð·Ð»Ð°Ð·Ð°; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ â€žobjcopyâ€œ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð¸Ð· â€žELFâ€œ-Ð° Ð¸Ð»Ð¸ â€žmmoâ€œ-Ð°, Ð¸Ð»Ð¸ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚ÐµÑ›Ð¸ Ð³Ñ†Ñ†-Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-mno-base-addressesâ€œ."
 
-#: elf64-mmix.c:1196
+#: elf64-mmix.c:1195
 #, c-format
 msgid ""
-"%s: Internal inconsistency error for value for\n"
-" linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx\n"
+"%pB: Internal inconsistency error for value for\n"
+" linker-allocated global register: linked: %#<PRIx64> != relaxed: %#<PRIx64>"
 msgstr ""
-"%s: Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð·Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð·Ð°\n"
-" Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡ÐµÐ¼: Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾: 0x%lx%08lx != Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾: 0x%lx%08lx\n"
+"%pB: Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð·Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð·Ð°\n"
+" Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡ÐµÐ¼: Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾: %#<PRIx64> != Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾: %#<PRIx64>"
 
-#: elf64-mmix.c:1618
+#: elf64-mmix.c:1619
 #, c-format
-msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s"
-msgstr "%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð¿Ð»ÑƒÑ� Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: (Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾) Ñƒ â€ž%sâ€œ"
+msgid "%pB: base-plus-offset relocation against register symbol: (unknown) in %pA"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð¿Ð»ÑƒÑ� Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: (Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾) Ñƒ â€ž%pAâ€œ"
 
-#: elf64-mmix.c:1623
+#: elf64-mmix.c:1625
 #, c-format
-msgid "%s: base-plus-offset relocation against register symbol: %s in %s"
-msgstr "%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð¿Ð»ÑƒÑ� Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: â€ž%sâ€œ Ñƒ â€ž%sâ€œ"
+msgid "%pB: base-plus-offset relocation against register symbol: %s in %pA"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð¿Ð»ÑƒÑ� Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: â€ž%sâ€œ Ñƒ â€ž%pAâ€œ"
 
-#: elf64-mmix.c:1667
+#: elf64-mmix.c:1670
 #, c-format
-msgid "%s: register relocation against non-register symbol: (unknown) in %s"
-msgstr "%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð½Ðµ-Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: (Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾) Ñƒ â€ž%sâ€œ"
+msgid "%pB: register relocation against non-register symbol: (unknown) in %pA"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð½Ðµ-Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: (Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾) Ñƒ â€ž%pAâ€œ"
 
-#: elf64-mmix.c:1672
+#: elf64-mmix.c:1676
 #, c-format
-msgid "%s: register relocation against non-register symbol: %s in %s"
-msgstr "%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð½Ðµ-Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: â€ž%sâ€œ Ñƒ â€ž%sâ€œ"
+msgid "%pB: register relocation against non-register symbol: %s in %pA"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð½Ðµ-Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: â€ž%sâ€œ Ñƒ â€ž%pAâ€œ"
 
-#: elf64-mmix.c:1709
+#: elf64-mmix.c:1713
 #, c-format
-msgid "%s: directive LOCAL valid only with a register or absolute value"
-msgstr "%s: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° â€žLOCALâ€œ Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ñ�Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼ Ð¸Ð»Ð¸ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð¼ Ð²Ñ€ÐµÐ´Ð½Ð¾ÑˆÑ›Ñƒ"
+msgid "%pB: directive LOCAL valid only with a register or absolute value"
+msgstr "%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° â€žLOCALâ€œ Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ñ�Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼ Ð¸Ð»Ð¸ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð¼ Ð²Ñ€ÐµÐ´Ð½Ð¾ÑˆÑ›Ñƒ"
 
-#: elf64-mmix.c:1739
+#: elf64-mmix.c:1742
 #, c-format
-msgid "%s: LOCAL directive: Register $%ld is not a local register.  First global register is $%ld."
-msgstr "%s: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° â€žLOCALâ€œ: Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ â€ž$%ldâ€œ Ð½Ð¸Ñ˜Ðµ Ð¼ÐµÑ�Ð½Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€.  ÐŸÑ€Ð²Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ñ˜Ðµ â€ž$%ldâ€œ."
+msgid "%pB: LOCAL directive: register $%<PRId64> is not a local register; first global register is $%<PRId64>"
+msgstr "%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° â€žLOCALâ€œ: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ â€ž$%<PRId64>â€œ Ð½Ð¸Ñ˜Ðµ Ð¼ÐµÑ�Ð½Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€; Ð¿Ñ€Ð²Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ñ˜Ðµ â€ž$%<PRId64>â€œ"
 
-#: elf64-mmix.c:2198
+#: elf64-mmix.c:2167
 #, c-format
-msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n"
-msgstr "%s: Ð“Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð·Ð° â€ž%sâ€œ; Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½ Ñƒ Ñ€Ð°Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸\n"
+msgid "%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð·Ð° â€ž%sâ€œ; Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½ Ñƒ Ñ€Ð°Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
 
-#: elf64-mmix.c:2252
-msgid "Register section has contents\n"
-msgstr "ÐžÐ´ÐµÑ™Ð°Ðº Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
+#: elf64-mmix.c:2222
+msgid "register section has contents\n"
+msgstr "Ð¾Ð´ÐµÑ™Ð°Ðº Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
 
-#: elf64-mmix.c:2441
+#: elf64-mmix.c:2412
 #, c-format
-msgid ""
-"Internal inconsistency: remaining %u != max %u.\n"
-"  Please report this bug."
-msgstr ""
-"Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚: Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ñ˜Ðµ %u != Ð½Ð°Ñ˜Ð². %u.\n"
-"  ÐŸÑ€Ð¸Ñ˜Ð°Ð²Ð¸Ñ‚Ðµ Ð¾Ð²Ñƒ Ð³Ñ€ÐµÑˆÐºÑƒ."
+msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚: Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ñ˜Ðµ %lu != max %lu; Ð¿Ñ€Ð¸Ñ˜Ð°Ð²Ð¸Ñ‚Ðµ Ð¾Ð²Ñƒ Ð³Ñ€ÐµÑˆÐºÑƒ"
 
-#: elf64-ppc.c:4463
-msgid "%P: %B: cannot create stub entry %s\n"
-msgstr "%P: %B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ\n"
+#: elf64-ppc.c:1342
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ñ�Ðµ Ñ‚Ñ€ÐµÐ±Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ â€ž%sâ€œ"
+
+#: elf64-ppc.c:4101
+#, c-format
+msgid "symbol '%s' has invalid st_other for ABI version 1"
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ â€žst_otherâ€œ Ð·Ð° Ð�Ð‘Ð˜ Ð¸Ð·Ð´Ð°ÑšÐµ 1"
 
-#: elf64-ppc.c:4810
-msgid "%P: symbol '%s' has invalid st_other for ABI version 1\n"
-msgstr "%P: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ â€žst_otherâ€œ Ð·Ð° Ð�Ð‘Ð˜ Ð¸Ð·Ð´Ð°ÑšÐµ 1\n"
+#: elf64-ppc.c:4281
+#, c-format
+msgid "%pB .opd not allowed in ABI version %d"
+msgstr "%pB: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½ Ñƒ â€žABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d"
 
-#: elf64-ppc.c:5170
-msgid "%P: .opd not allowed in ABI version %d\n"
-msgstr "%P: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½ Ñƒ Ð�Ð‘Ð˜-Ñ˜Ñƒ Ð¸Ð·Ð´Ð°ÑšÐµ %d\n"
+#: elf64-ppc.c:4852
+#, c-format
+msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
+msgstr "%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð¸ â€žPIEâ€œ-Ð¸Ð¼Ð°\n"
 
-#: elf64-ppc.c:5809
-msgid "%B uses unknown e_flags 0x%lx"
-msgstr "â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€že_flagsâ€œ 0x%lx"
+#: elf64-ppc.c:5260
+#, c-format
+msgid "%pB uses unknown e_flags 0x%lx"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€že_flagsâ€œ 0x%lx"
 
-#: elf64-ppc.c:5816
-msgid "%B: ABI version %ld is not compatible with ABI version %ld output"
-msgstr "%B: Ð�Ð‘Ð˜ Ð¸Ð·Ð´Ð°ÑšÐµ %ld Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ Ñ�Ð° Ð�Ð‘Ð˜-Ñ˜ÐµÐ¼ Ð¸Ð·Ð´Ð°ÑšÐ° %ld"
+#: elf64-ppc.c:5268
+#, c-format
+msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
+msgstr "%pB: â€žABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %ld Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ Ñ�Ð° â€žABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐ° %ld"
 
-#: elf64-ppc.c:5843
+#: elf64-ppc.c:5295
 #, c-format
 msgid " [abiv%ld]"
 msgstr " [abiv%ld]"
 
-#: elf64-ppc.c:7007
-msgid "%P: copy reloc against `%T' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
-msgstr "%P: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ð²Ð°ÑšÐ° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%Tâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð»ÐµÑšÐ¾ â€žpltâ€œ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµ; Ð¸Ð·Ð±ÐµÐ³Ð°Ð²Ð°Ñ˜Ñ‚Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ â€žLD_BIND_NOW=1â€œ Ð¸Ð»Ð¸ Ð½Ð°Ð´Ð¾Ð³Ñ€Ð°Ð´Ð¸Ñ‚Ðµ Ð³Ñ†Ñ†\n"
-
-#: elf64-ppc.c:7270
-msgid "%B: undefined symbol on R_PPC64_TOCSAVE relocation"
-msgstr "%B: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð° â€žR_PPC64_TOCSAVEâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ"
-
-#: elf64-ppc.c:7499
-msgid "%P: dynreloc miscount for %B, section %A\n"
-msgstr "%P: Ð³Ñ€ÐµÑˆÐºÐ° Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð·Ð° â€ž%Bâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ\n"
-
-#: elf64-ppc.c:7583
-msgid "%B: .opd is not a regular array of opd entries"
-msgstr "%B: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ñ€ÐµÐ³ÑƒÐ»Ð°Ñ€Ð°Ð½ Ð½Ð¸Ð· ÑƒÐ½Ð¾Ñ�Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð°"
-
-#: elf64-ppc.c:7592
-msgid "%B: unexpected reloc type %u in .opd section"
-msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%uâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ"
-
-#: elf64-ppc.c:7613
-msgid "%B: undefined sym `%s' in .opd section"
-msgstr "%B: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+#: elf64-ppc.c:6574
+msgid "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
+msgstr "%P: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ð²Ð°ÑšÐ° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð»ÐµÑšÐ¾ â€žpltâ€œ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµ; Ð¸Ð·Ð±ÐµÐ³Ð°Ð²Ð°Ñ˜Ñ‚Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ â€žLD_BIND_NOW=1â€œ Ð¸Ð»Ð¸ Ð½Ð°Ð´Ð¾Ð³Ñ€Ð°Ð´Ð¸Ñ‚Ðµ Ð³Ñ†Ñ†\n"
 
-#: elf64-ppc.c:8177
+#: elf64-ppc.c:6841
+#, c-format
+msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
+msgstr "%pB: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð° â€žR_PPC64_TOCSAVEâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ"
+
+#: elf64-ppc.c:7089
+#, c-format
+msgid "dynreloc miscount for %pB, section %pA"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð·Ð° â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
+
+#: elf64-ppc.c:7178
+#, c-format
+msgid "%pB: .opd is not a regular array of opd entries"
+msgstr "%pB: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ñ€ÐµÐ³ÑƒÐ»Ð°Ñ€Ð°Ð½ Ð½Ð¸Ð· ÑƒÐ½Ð¾Ñ�Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð°"
+
+#: elf64-ppc.c:7188
+#, c-format
+msgid "%pB: unexpected reloc type %u in .opd section"
+msgstr "%pB: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%uâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+
+#: elf64-ppc.c:7210
+#, c-format
+msgid "%pB: undefined sym `%s' in .opd section"
+msgstr "%pB: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+
+#: elf64-ppc.c:7697
+msgid "warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž--plt-localentryâ€œ Ñ˜Ðµ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð¾ Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð±ÐµÐ· â€žld.soâ€œ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð·Ð° Ð¾Ñ‚ÐºÑ€Ð¸Ð²Ð°ÑšÐµ â€žABIâ€œ Ð¿Ñ€ÐµÑ�Ñ‚ÑƒÐ¿Ð°"
+
+#: elf64-ppc.c:8017
 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
 msgstr "â€ž%Hâ€œ â€ž__tls_get_addrâ€œ Ñ˜Ðµ Ð¸Ð·Ð³ÑƒÐ±Ð¸Ð¾ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚, Ð¢Ð›Ð¡ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½Ð°\n"
 
-#: elf64-ppc.c:8516 elf64-ppc.c:9139
+#: elf64-ppc.c:8417 elf64-ppc.c:9130
 #, c-format
 msgid "%s defined on removed toc entry"
 msgstr "â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð½Ð° ÑƒÐºÐ»Ð¾ÑšÐµÐ½Ð¾Ð¼ ÑƒÐ½Ð¾Ñ�Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°"
 
-#: elf64-ppc.c:8868
-msgid "%P: %H: toc optimization is not supported for %s instruction.\n"
-msgstr "%P: %H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð·Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ.\n"
-
-#: elf64-ppc.c:9096
-msgid "%P: %H: %s references optimized away TOC entry\n"
-msgstr "%P: %H: â€ž%sâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð¾Ð¼ Ð¾Ð´Ñ�Ñ‚Ñ€Ð°ÑšÐµÐ½Ð¸ ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°\n"
-
-#: elf64-ppc.c:10394
-msgid "%P: cannot find opd entry toc for `%T'\n"
-msgstr "%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° Ð·Ð° â€ž%Tâ€œ\n"
-
-#: elf64-ppc.c:10479
-msgid "%P: long branch stub `%s' offset overflow\n"
-msgstr "%P: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ð´ÑƒÐ³Ð¾Ð³ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ\n"
-
-#: elf64-ppc.c:10538
-msgid "%P: can't find branch stub `%s'\n"
-msgstr "%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ\n"
-
-#: elf64-ppc.c:10602 elf64-ppc.c:10749 elf64-ppc.c:12416
-msgid "%P: linkage table error against `%T'\n"
-msgstr "%P: Ð³Ñ€ÐµÑˆÐºÐ° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%Tâ€œ\n"
-
-#: elf64-ppc.c:10940
-msgid "%P: can't build branch stub `%s'\n"
-msgstr "%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ\n"
-
-#: elf64-ppc.c:11748
-msgid "%B section %A exceeds stub group size"
-msgstr "â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð³Ñ€ÑƒÐ¿Ðµ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ°"
-
-#: elf64-ppc.c:12662 elf64-ppc.c:12697
-msgid "%P: %s offset too large for .eh_frame sdata4 encoding"
-msgstr "%P: â€ž%sâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº Ð·Ð° â€ž.eh_frame sdata4â€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ"
-
-#: elf64-ppc.c:12758
-msgid "%P: stubs don't match calculated size\n"
-msgstr "%P: Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜Ñƒ Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ñ‚Ð¾Ñ˜ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸\n"
-
-#: elf64-ppc.c:12770
-#, c-format
-msgid ""
-"linker stubs in %u group%s\n"
-"  branch       %lu\n"
-"  toc adjust   %lu\n"
-"  long branch  %lu\n"
-"  long toc adj %lu\n"
-"  plt call     %lu\n"
-"  plt call toc %lu"
-msgstr ""
-"Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ â€ž%uâ€œ Ð³Ñ€ÑƒÐ¿Ð° â€ž%sâ€œ\n"
-"  Ð³Ñ€Ð°Ð½Ð°            %lu\n"
-"  Ñ‚Ð°Ñ� ÑƒÑ€ÐµÑ’ÐµÑšÐµ      %lu\n"
-"  Ð´ÑƒÐ³Ð° Ð±Ñ€Ð°Ð½Ð°       %lu\n"
-"  ÑƒÑ€ÐµÑ’ÐµÑšÐµ Ð´ÑƒÐ³Ðµ Ñ‚Ð°Ñ� %lu\n"
-"  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð²        %lu\n"
-"  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ñ‚Ð°Ñ�   %lu"
-
-#: elf64-ppc.c:13096
-msgid "%P: %H: %s used with TLS symbol `%T'\n"
-msgstr "%P: %H: â€ž%sâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ�Ð° Ð¢Ð›Ð¡ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%Tâ€œ\n"
-
-#: elf64-ppc.c:13097
-msgid "%P: %H: %s used with non-TLS symbol `%T'\n"
-msgstr "%P: %H: â€ž%sâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ�Ð° Ð½Ðµ-Ð¢Ð›Ð¡ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%Tâ€œ\n"
-
-#: elf64-ppc.c:13675
-msgid "%P: %H: call to `%T' lacks nop, can't restore toc; recompile with -fPIC\n"
-msgstr "%P: %H: Ð¿Ð¾Ð·Ð¸Ð²Ñƒ Ð·Ð° â€ž%Tâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€žnopâ€œ, Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð²Ñ€Ð°Ñ‚Ð¸Ð¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ\n"
-
-#: elf64-ppc.c:13793
-msgid "%P: %B: unknown relocation type %d for `%T'\n"
-msgstr "%P: %B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð·Ð° â€ž%Tâ€œ\n"
-
-#: elf64-ppc.c:14310
-msgid "%P: %H: %s for indirect function `%T' unsupported\n"
-msgstr "%P: %H: â€ž%sâ€œ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%Tâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
-
-#: elf64-ppc.c:14417
-msgid "%P: %B: %s is not supported for `%T'\n"
-msgstr "%P: %B: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%Tâ€œ\n"
-
-#: elf64-ppc.c:14565
-msgid "%P: %H: error: %s not a multiple of %u\n"
-msgstr "%P: %H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ â€ž%uâ€œ\n"
-
-#: elf64-ppc.c:14586
-msgid "%P: %H: unresolvable %s against `%T'\n"
-msgstr "%P: %H: â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%Tâ€œ\n"
-
-#: elf64-ppc.c:14644
-msgid "%P: %H: %s against `%T': error %d\n"
-msgstr "%P: %H: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%Tâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d\n"
-
-#: elf64-sh64.c:1686
-#, c-format
-msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n"
-msgstr "%s: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð½Ð° %08x Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ %08x\n"
-
-#: elf64-sparc.c:446
-msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER"
-msgstr "%B: Ð¡Ð°Ð¼Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸ â€ž%%g[2367]â€œ Ð¼Ð¾Ð³Ñƒ Ð±Ð¸Ñ‚Ð¸ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ�Ð°Ð½Ð¸ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žSTT_REGISTERâ€œ"
-
-#: elf64-sparc.c:466
-msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B"
-msgstr "Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ â€ž%%g%dâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½ Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾: â€ž%sâ€œ Ñƒ â€ž%Bâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€ž%sâ€œ Ñƒ â€ž%Bâ€œ"
-
-#: elf64-sparc.c:489
-msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B"
-msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ: â€žREGISTERâ€œ Ñƒ â€ž%Bâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€ž%sâ€œ Ñƒ â€ž%Bâ€œ"
-
-#: elf64-sparc.c:534
-msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B"
-msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ: â€ž%sâ€œ Ñƒ â€ž%Bâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žREGISTERâ€œ Ñƒ â€ž%Bâ€œ"
-
-#: elf64-sparc.c:687
-msgid "%B: linking UltraSPARC specific with HAL specific code"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ ÐºÐ¾Ð´ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ â€žUltraSPARCâ€œ-Ñƒ Ñ�Ð° ÐºÐ¾Ð´Ð¾Ð¼ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð¸Ð¼ â€žHALâ€œ-Ñƒ"
-
-#: elf64-x86-64.c:1530
-msgid "%B: relocation %s against symbol `%s' isn't supported in x32 mode"
-msgstr "%B: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ x32"
-
-#: elf64-x86-64.c:1688
-msgid "%B: '%s' accessed both as normal and thread local symbol"
-msgstr "%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
-
-#: elf64-x86-64.c:3405 /src/binutils-gdb/bfd/elfnn-aarch64.c:3511
-msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð¸Ð¼Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº: %d"
-
-#: elf64-x86-64.c:3667
-msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_X86_64_GOTOFF64â€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+#: elf64-ppc.c:9087
+#, c-format
+msgid "%H: %s references optimized away TOC entry\n"
+msgstr "%H: â€ž%sâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð¾Ð¼ Ð¾Ð´Ñ�Ñ‚Ñ€Ð°ÑšÐµÐ½Ð¸ ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°\n"
+
+#: elf64-ppc.c:9308
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr "%H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð·Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ\n"
+
+#: elf64-ppc.c:10135
+#, c-format
+msgid "warning: discarding dynamic section %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´Ð±Ð°Ñ†ÑƒÑ˜ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#: elf64-x86-64.c:3787
+#: elf64-ppc.c:11277
+msgid "%P: cannot find opd entry toc for `%pT'\n"
+msgstr "%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° Ð·Ð° â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:11323 elf64-ppc.c:11867
+msgid "%F%P: Could not assign group %pA target %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð³Ñ€ÑƒÐ¿Ðµ â€ž%pAâ€œ Ð¼ÐµÑ‚Ñƒ â€ž%pAâ€œ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ. ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð±ÐµÐ· â€ž--enable-non-contiguous-regionsâ€œ.\n"
+
+#: elf64-ppc.c:11385
+#, c-format
+msgid "long branch stub `%s' offset overflow"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ð´ÑƒÐ³Ð¾Ð³ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ"
+
+#: elf64-ppc.c:11412
+#, c-format
+msgid "can't find branch stub `%s'"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ"
+
+#: elf64-ppc.c:11476 elf64-ppc.c:11743 elf64-ppc.c:13972
+#, c-format
+msgid "%P: linkage table error against `%pT'\n"
+msgstr "%P: Ð³Ñ€ÐµÑˆÐºÐ° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:11939
+#, c-format
+msgid "can't build branch stub `%s'"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ"
+
+#: elf64-ppc.c:12920
+#, c-format
+msgid "%pB section %pA exceeds stub group size"
+msgstr "â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð³Ñ€ÑƒÐ¿Ðµ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ°"
+
+#: elf64-ppc.c:14153
+msgid "__tls_get_addr call offset overflow"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° â€ž__tls_get_addrâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð°"
+
+#: elf64-ppc.c:14455 elf64-ppc.c:14474
+#, c-format
+msgid "%s offset too large for .eh_frame sdata4 encoding"
+msgstr "â€ž%sâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº Ð·Ð° â€ž.eh_frame sdata4â€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ"
+
+#: elf64-ppc.c:14506
+#, c-format
+msgid "linker stubs in %u group\n"
+msgid_plural "linker stubs in %u groups\n"
+msgstr[0] "Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð¸\n"
+msgstr[1] "Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ %u Ð³Ñ€ÑƒÐ¿Ðµ\n"
+msgstr[2] "Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð°\n"
+
+#: elf64-ppc.c:14513
+#, c-format
+msgid ""
+"%s  branch         %lu\n"
+"  branch toc adj %lu\n"
+"  branch notoc   %lu\n"
+"  branch both    %lu\n"
+"  long branch    %lu\n"
+"  long toc adj   %lu\n"
+"  long notoc     %lu\n"
+"  long both      %lu\n"
+"  plt call       %lu\n"
+"  plt call save  %lu\n"
+"  plt call notoc %lu\n"
+"  plt call both  %lu\n"
+"  global entry   %lu"
+msgstr ""
+"%s  Ð³Ñ€Ð°Ð½Ð°                           %lu\n"
+"  Ð³Ñ€Ð°Ð½Ð° Ñ�Ð°Ð´Ñ€. Ð¿Ð¾Ñ€Ð°Ð².   %lu\n"
+"  Ð³Ñ€Ð°Ð½Ð° Ð½Ðµ-Ñ�Ð°Ð´Ñ€.       %lu\n"
+"  Ð³Ñ€Ð°Ð½Ð° Ð¾Ð±Ð°            %lu\n"
+"  Ð´ÑƒÐ³Ð¾ Ð³Ñ€Ð°Ð½Ð°           %lu\n"
+"  Ð´ÑƒÐ³Ð¾ Ñ�Ð°Ð´Ñ€. Ð¿Ð¾Ñ€Ð°Ð².    %lu\n"
+"  Ð´ÑƒÐ³Ð¾ Ð½Ðµ-Ñ�Ð°Ð´Ñ€.        %lu\n"
+"  Ð´ÑƒÐ³Ð¾ Ð¾Ð±Ð°             %lu\n"
+"  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð²            %lu\n"
+"  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð² Ñ�Ð°Ñ‡ÑƒÐ²Ð°Ñ˜    %lu\n"
+"  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-Ñ�Ð°Ð´Ñ€.   %lu\n"
+"  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð² Ð¾Ð±Ð°        %lu\n"
+"  Ð¾Ð¿ÑˆÑ‚Ð¸ ÑƒÐ½Ð¾Ñ�           %lu"
+
+#: elf64-ppc.c:14913
+#, c-format
+msgid "%H: %s used with TLS symbol `%pT'\n"
+msgstr "%H: â€ž%sâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ�Ð° â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:14915
+#, c-format
+msgid "%H: %s used with non-TLS symbol `%pT'\n"
+msgstr "%H: â€ž%sâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ�Ð° Ð½Ðµ-â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:15670
+#, c-format
+msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
+msgstr "%H: Ð¿Ð¾Ð·Ð¸Ð²Ñƒ Ð·Ð° â€ž%pTâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€žnopâ€œ, Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð²Ñ€Ð°Ñ‚Ð¸Ð¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°; (plt call stub)\n"
+
+#: elf64-ppc.c:15676
+#, c-format
+msgid "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
+msgstr "%H: Ð¿Ð¾Ð·Ð¸Ð²Ñƒ Ð·Ð° â€ž%pTâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€žnopâ€œ, Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð²Ñ€Ð°Ñ‚Ð¸Ð¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°; (toc save/adjust stub)\n"
+
+#: elf64-ppc.c:16564
+#, c-format
+msgid "%H: %s for indirect function `%pT' unsupported\n"
+msgstr "%H: â€ž%sâ€œ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%pTâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
+
+#: elf64-ppc.c:16649
+#, c-format
+msgid "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr "%X%P: %pB: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žglibcâ€œ-Ð¾Ð¼ ÐºÐ°Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ\n"
+
+#: elf64-ppc.c:16704
+#, c-format
+msgid "%P: %pB: %s is not supported for `%pT'\n"
+msgstr "%P: %pB: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð·Ð° â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:16963
+#, c-format
+msgid "%H: error: %s not a multiple of %u\n"
+msgstr "%H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ â€ž%uâ€œ\n"
+
+#: elf64-ppc.c:16986
+#, c-format
+msgid "%H: unresolvable %s against `%pT'\n"
+msgstr "%H: â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:17131
+#, c-format
+msgid "%H: %s against `%pT': error %d\n"
+msgstr "%H: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d\n"
+
+#: elf64-s390.c:2446
+#, c-format
+msgid "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)"
+msgstr "%pB: â€ž%sâ€œ Ð½Ðµ-â€žPLTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÑ†Ð¸ Ð¸ ÐºÐ¾Ð¼Ðµ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ñ™ÐµÐ½Ð¾ Ð¸Ð· Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð³ (Ð´Ð° Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° â€ž-fPICâ€œ ?)"
+
+#: elf64-sparc.c:478
+#, c-format
+msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
+msgstr "%pB: Ñ�Ð°Ð¼Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸ â€ž%%g[2367]â€œ Ð¼Ð¾Ð³Ñƒ Ð±Ð¸Ñ‚Ð¸ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ�Ð°Ð½Ð¸ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žSTT_REGISTERâ€œ"
+
+#: elf64-sparc.c:499
+#, c-format
+msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
+msgstr "Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ â€ž%%g%dâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½ Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾: â€ž%sâ€œ Ñƒ â€ž%pBâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€ž%sâ€œ Ñƒ â€ž%pBâ€œ"
+
+#: elf64-sparc.c:523
+#, c-format
+msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ: â€žREGISTERâ€œ Ñƒ â€ž%pBâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€ž%sâ€œ Ñƒ â€ž%pBâ€œ"
+
+#: elf64-sparc.c:570
+#, c-format
+msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ: â€ž%sâ€œ Ñƒ â€ž%pBâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žREGISTERâ€œ Ñƒ â€ž%pBâ€œ"
+
+#: elf64-sparc.c:702
+#, c-format
+msgid "%pB: linking UltraSPARC specific with HAL specific code"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ ÐºÐ¾Ð´ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ â€žUltraSPARCâ€œ-Ñƒ Ñ�Ð° ÐºÐ¾Ð´Ð¾Ð¼ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð¸Ð¼ â€žHALâ€œ-Ñƒ"
+
+#: elf64-x86-64.c:1417
+msgid "hidden symbol "
+msgstr "Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» "
+
+#: elf64-x86-64.c:1420
+msgid "internal symbol "
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» "
+
+#: elf64-x86-64.c:1423 elf64-x86-64.c:1427
+msgid "protected symbol "
+msgstr "Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» "
+
+#: elf64-x86-64.c:1429
+msgid "symbol "
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð» "
+
+#: elf64-x86-64.c:1435
+msgid "undefined "
+msgstr "Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ "
+
+#: elf64-x86-64.c:1445
+msgid "a shared object"
+msgstr "Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+
+#: elf64-x86-64.c:1447
 msgid "; recompile with -fPIC"
 msgstr "; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
 
-#: elf64-x86-64.c:3792
-msgid "%B: relocation %s against %s `%s' can not be used when making a shared object%s"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%s"
+#: elf64-x86-64.c:1452
+msgid "a PIE object"
+msgstr "â€žPIEâ€œ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+
+#: elf64-x86-64.c:1454
+msgid "a PDE object"
+msgstr "â€žPDEâ€œ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+
+#: elf64-x86-64.c:1456
+msgid "; recompile with -fPIE"
+msgstr "; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPIEâ€œ"
+
+#: elf64-x86-64.c:1460
+#, c-format
+msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%s%sâ€œ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž%s%sâ€œ"
+
+#: elf64-x86-64.c:1968
+#, c-format
+msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
+msgstr "%pB: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ x32"
+
+#: elf64-x86-64.c:2124
+#, c-format
+msgid "%pB: '%s' accessed both as normal and thread local symbol"
+msgstr "%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
+
+#: elf64-x86-64.c:2747 elfnn-aarch64.c:5546
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %<PRId64>"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð¸Ð¼Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº: %<PRId64>"
+
+#: elf64-x86-64.c:2992
+#, c-format
+msgid "%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_X86_64_GOTOFF64â€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+
+#: elf64-x86-64.c:3006
+#, c-format
+msgid "%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_X86_64_GOTOFF64â€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
 
-#: elf64-x86-64.c:3794
-msgid "%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ â€ž%sâ€œ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%s"
+#: elf64-x86-64.c:3283
+#, c-format
+msgid "%pB: addend %s%#x in relocation %s against symbol `%s' at %#<PRIx64> in section `%pA' is out of range"
+msgstr "%pB: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº %s%#x Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð° %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
 
-#: elf64-x86-64.c:3900
-msgid "%B: addend -0x%x in relocation %s against symbol `%s' at 0x%lx in section `%A' is out of range"
-msgstr "%B: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº -0x%x Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+#: elf64-x86-64.c:3417 elflink.c:13267
+msgid "%F%P: corrupt input: %pB\n"
+msgstr "%F%P: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ ÑƒÐ½Ð¾Ñ�: %pB\n"
 
-#: elf64-x86-64.c:3908
-msgid "%B: addend 0x%x in relocation %s against symbol `%s' at 0x%lx in section `%A' is out of range"
-msgstr "%B: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº 0x%x Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+#: elf64-x86-64.c:4101
+msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žGOTPCRELâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ð¾Ð²ÐµÐ¶Ð¸Ñ‚Ðµ Ñ�Ð° â€ž--no-relaxâ€œ\n"
 
-#: elfcode.h:760
+#: elf64-x86-64.c:4259
 #, c-format
-msgid "warning: %s has a corrupt string table index - ignoring"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¸Ð¼Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐµ â€” Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼"
+msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgstr "%F%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žPCâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ñƒ â€žPLTâ€œ ÑƒÐ½Ð¾Ñ�Ñƒ Ð·Ð° â€ž%sâ€œ\n"
 
-#: elfcode.h:1186
+#: elf64-x86-64.c:4322
 #, c-format
-msgid "%s: version count (%ld) does not match symbol count (%ld)"
-msgstr "%s: Ð±Ñ€Ð¾Ñ˜ Ð¸Ð·Ð´Ð°ÑšÐ° (%ld) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (%ld)"
+msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgstr "%F%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ€Ð°Ð·Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð³Ñ€Ð°Ð½Ðµ Ñƒ â€žPLTâ€œ ÑƒÐ½Ð¾Ñ�Ñƒ Ð·Ð° â€ž%sâ€œ\n"
 
-#: elfcode.h:1440
+#: elf64-x86-64.c:4375
 #, c-format
-msgid "%s(%s): relocation %d has invalid symbol index %ld"
-msgstr "%s(%s): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%dâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld"
+msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgstr "%F%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žPCâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ñƒ â€žGOT PLTâ€œ ÑƒÐ½Ð¾Ñ�Ñƒ Ð·Ð° â€ž%sâ€œ\n"
 
-#: elfcore.h:305
-msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu."
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¾: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜ÐµÐ·Ð³Ñ€Ð° >= %lu, Ð½Ð°Ñ’Ð¾Ñ…: %lu."
+#: elfcode.h:326
+msgid "warning: %pB has a corrupt section with a size (%"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¾Ð¼ (%"
 
-#: elflink.c:1143
-msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A"
-msgstr "%s: Ð¢Ð›Ð¡ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¸ Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
+#: elfcode.h:768
+#, c-format
+msgid "warning: %pB has a corrupt string table index - ignoring"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐµ â€” Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼"
 
-#: elflink.c:1148
-msgid "%s: TLS reference in %B mismatches non-TLS reference in %B"
-msgstr "%s: Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%Bâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%Bâ€œ"
+#: elfcode.h:1228
+#, c-format
+msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
+msgstr "%pB: Ð±Ñ€Ð¾Ñ˜ Ð¸Ð·Ð´Ð°ÑšÐ° (%<PRId64>) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (%ld)"
 
-#: elflink.c:1153
-msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B"
-msgstr "%s: Ð¢Ð›Ð¡ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%Bâ€œ"
+#: elfcore.h:308
+#, c-format
+msgid "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: %<PRIu64>"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¾: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜ÐµÐ·Ð³Ñ€Ð° >= %<PRIx64>, Ð½Ð°Ñ’Ð¾Ñ…: %<PRIx64>"
 
-#: elflink.c:1158
-msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A"
-msgstr "%s: Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%Bâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¸ Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
+#: elflink.c:1362
+#, c-format
+msgid "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA"
+msgstr "%s: â€žTLSâ€œ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-â€žTLSâ€œ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¸ Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
 
-#: elflink.c:1763
-msgid "%B: unexpected redefinition of indirect versioned symbol `%s'"
-msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°ÑšÐµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elflink.c:1368
+#, c-format
+msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
+msgstr "%s: â€žTLSâ€œ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%pBâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-â€žTLSâ€œ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%pBâ€œ"
 
-#: elflink.c:2066
-msgid "%B: version node not found for symbol %s"
-msgstr "%B: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñ‡Ð²Ð¾Ñ€ Ð¸Ð·Ð´Ð°ÑšÐ° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+#: elflink.c:1374
+#, c-format
+msgid "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
+msgstr "%s: â€žTLSâ€œ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-â€žTLSâ€œ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%pBâ€œ"
 
-#: elflink.c:2157
-msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'"
-msgstr "%B: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° (0x%lx >= 0x%lx) Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ"
+#: elflink.c:1380
+#, c-format
+msgid "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
+msgstr "%s: â€žTLSâ€œ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%pBâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-â€žTLSâ€œ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¸ Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
 
-#: elflink.c:2168
-msgid "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the object file has no symbol table"
-msgstr "%B: Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (0x%lx) Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ ÐºÐ°Ð´Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ¼Ð° Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+#: elflink.c:2071
+#, c-format
+msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°ÑšÐµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elflink.c:2358
-msgid "%B: relocation size mismatch in %B section %A"
-msgstr "%B: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
+#: elflink.c:2448
+#, c-format
+msgid "%pB: version node not found for symbol %s"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñ‡Ð²Ð¾Ñ€ Ð¸Ð·Ð´Ð°ÑšÐ° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
 
-#: elflink.c:2640
+#: elflink.c:2539
+#, c-format
+msgid "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in section `%pA'"
+msgstr "%pB: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° (%#<PRIx64> >= %#lx) Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
+
+#: elflink.c:2551
+#, c-format
+msgid "%pB: non-zero symbol index (%#<PRIx64>) for offset %#<PRIx64> in section `%pA' when the object file has no symbol table"
+msgstr "%pB: Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (%#<PRIx64>) Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ°Ð´Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ¼Ð° Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: elflink.c:2740
+#, c-format
+msgid "%pB: relocation size mismatch in %pB section %pA"
+msgstr "%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
+
+#: elflink.c:3069
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ�Ñƒ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ðµ"
 
-#: elflink.c:3403
-msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n"
-msgstr "%P: Ð½Ð°Ñ’Ð¾Ñ… Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð¸ â€žELFâ€œ Ð¼Ð°ÑˆÐ¸Ð½Ñ�ÐºÐ¸ ÐºÐ¾Ð´ (%d) Ñƒ â€ž%Bâ€œ, Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… â€ž%dâ€œ\n"
-
-#: elflink.c:4032
-msgid "%B: %s: invalid version %u (max %d)"
-msgstr "%B: %s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ %u (Ð½Ð°Ñ˜Ð². %d)"
-
-#: elflink.c:4068
-msgid "%B: %s: invalid needed version %d"
-msgstr "%B: %s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ %d"
-
-#: elflink.c:4452
-msgid "%B: undefined reference to symbol '%s'"
-msgstr "%B: Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° ÑƒÐ¿ÑƒÑ‚Ð° ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ"
-
-#: elflink.c:5523
-msgid "%B: stack size specified and %s set"
-msgstr "%B: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¸ â€ž%sâ€œ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð°"
-
-#: elflink.c:5526
-msgid "%B: %s not absolute"
-msgstr "%B: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾"
+#: elflink.c:3129
+msgid "%P: copy reloc against protected `%pT' is dangerous\n"
+msgstr "%P: ÑƒÐ¼Ð½Ð¾Ð¶Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ð³ â€ž%pTâ€œ Ñ˜Ðµ Ð¾Ð¿Ð°Ñ�Ð½Ð¾\n"
+
+#: elflink.c:4064
+#, c-format
+msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
+msgstr "Ð½Ð°Ñ’Ð¾Ñ… Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð¸ â€žELFâ€œ Ð¼Ð°ÑˆÐ¸Ð½Ñ�ÐºÐ¸ ÐºÐ¾Ð´ (%d) Ñƒ â€ž%pBâ€œ, Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… â€ž%dâ€œ"
+
+#: elflink.c:4534
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¸Ð·Ð´Ð°ÑšÐ° %lx (Ð½Ð°Ñ˜Ð². %lx)"
+
+#: elflink.c:4602
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr "%pB: â€ž%sâ€œ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Ð¸Ð½Ð´ÐµÐºÑ�Ñƒ %lu (>= sh_info %lu)"
 
-#: elflink.c:5824
+#: elflink.c:4750
+#, c-format
+msgid "%pB: not enough version information"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¾ Ð¸Ð·Ð´Ð°ÑšÑƒ"
+
+#: elflink.c:4788
+#, c-format
+msgid "%pB: %s: invalid version %u (max %d)"
+msgstr "%pB: %s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ %u (Ð½Ð°Ñ˜Ð². %d)"
+
+#: elflink.c:4825
+#, c-format
+msgid "%pB: %s: invalid needed version %d"
+msgstr "%pB: %s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ %d"
+
+#: elflink.c:5231
+#, c-format
+msgid "%pB: undefined reference to symbol '%s'"
+msgstr "%pB: Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° ÑƒÐ¿ÑƒÑ‚Ð° ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ"
+
+#: elflink.c:6315
+#, c-format
+msgid "%pB: stack size specified and %s set"
+msgstr "%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¸ â€ž%sâ€œ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð°"
+
+#: elflink.c:6319
+#, c-format
+msgid "%pB: %s not absolute"
+msgstr "%pB: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾"
+
+#: elflink.c:6516
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ: %s"
 
-#: elflink.c:5892
-msgid "%B: .preinit_array section is not allowed in DSO"
-msgstr "%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž.preinit_arrayâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ñƒ â€žDSOâ€œ-Ñƒ"
+#: elflink.c:7088
+#, c-format
+msgid "%pB: .preinit_array section is not allowed in DSO"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž.preinit_arrayâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ñƒ â€žDSOâ€œ-Ñƒ"
 
-#: elflink.c:7657
+#: elflink.c:8602
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr "Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° â€ž%sâ€œ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ Ñ�Ð»Ð¾Ð¶ÐµÐ½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ: %s"
 
-#: elflink.c:7811
+#: elflink.c:8757
 #, c-format
 msgid "unknown operator '%c' in complex symbol"
 msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ â€ž%câ€œ Ñƒ Ñ�Ð»Ð¾Ð¶ÐµÐ½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ"
 
-#: elflink.c:8165 elflink.c:8182 elflink.c:8219 elflink.c:8236
-msgid "%B: Unable to sort relocs - they are in more than one size"
-msgstr "%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð¸Ð¼Ð°Ñ˜Ñƒ Ð²Ð¸ÑˆÐµ Ð¾Ð´ Ñ˜ÐµÐ´Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
+#. PR 21524: Let the user know if a symbol was removed by garbage collection.
+#: elflink.c:9095
+#, c-format
+msgid "%pB:%pA: error: relocation references symbol %s which was removed by garbage collection"
+msgstr "%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÐ¿ÑƒÑ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ ÑƒÐºÐ»Ð¾ÑšÐµÐ½ Ñ�ÐºÑƒÐ¿Ñ™Ð°ÑšÐµÐ¼ Ð¾Ñ‚Ð¿Ð°Ð´Ð°"
+
+#: elflink.c:9098
+#, c-format
+msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
+msgstr "%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ â€ž--gc-keep-exportedâ€œ"
+
+#: elflink.c:9343 elflink.c:9361 elflink.c:9400 elflink.c:9418
+#, c-format
+msgid "%pB: unable to sort relocs - they are in more than one size"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð¸Ð¼Ð°Ñ˜Ñƒ Ð²Ð¸ÑˆÐµ Ð¾Ð´ Ñ˜ÐµÐ´Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
+
+#. The section size is not divisible by either -
+#. something is wrong.
+#: elflink.c:9377 elflink.c:9434
+#, c-format
+msgid "%pB: unable to sort relocs - they are of an unknown size"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ñ�Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
 
-#: elflink.c:8196 elflink.c:8250
-msgid "%B: Unable to sort relocs - they are of an unknown size"
-msgstr "%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ñ�Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
+#: elflink.c:9486
+msgid "not enough memory to sort relocations"
+msgstr "Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð·Ð° Ñ€ÐµÑ’Ð°ÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
 
-#: elflink.c:8301
-msgid "Not enough memory to sort relocations"
-msgstr "Ð�ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð·Ð° Ñ€ÐµÑ’Ð°ÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+#: elflink.c:9767
+#, c-format
+msgid "%pB: too many sections: %d (>= %d)"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %d (>= %d)"
+
+#: elflink.c:10043
+#, c-format
+msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: Ð½Ð° ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
 
-#: elflink.c:8494
-msgid "%B: Too many sections: %d (>= %d)"
-msgstr "%B: ÐŸÑ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %d (>= %d)"
+#: elflink.c:10046
+#, c-format
+msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: Ð½Ð° Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
 
-#: elflink.c:8775
-msgid "%B: internal symbol `%s' in %B is referenced by DSO"
-msgstr "%B: Ð½Ð° ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%Bâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
+#: elflink.c:10049
+#, c-format
+msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
 
-#: elflink.c:8777
-msgid "%B: hidden symbol `%s' in %B is referenced by DSO"
-msgstr "%B: Ð½Ð° Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%Bâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
+#: elflink.c:10135
+#, c-format
+msgid "%pB: could not find output section %pA for input section %pA"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð·Ð° ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
 
-#: elflink.c:8779
-msgid "%B: local symbol `%s' in %B is referenced by DSO"
-msgstr "%B: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%Bâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
+#: elflink.c:10289
+#, c-format
+msgid "%pB: protected symbol `%s' isn't defined"
+msgstr "%pB: Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: elflink.c:8890
-msgid "%B: could not find output section %A for input section %A"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð·Ð° ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
+#: elflink.c:10292
+#, c-format
+msgid "%pB: internal symbol `%s' isn't defined"
+msgstr "%pB: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: elflink.c:9013
-msgid "%B: protected symbol `%s' isn't defined"
-msgstr "%B: Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
+#: elflink.c:10295
+#, c-format
+msgid "%pB: hidden symbol `%s' isn't defined"
+msgstr "%pB: Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: elflink.c:9015
-msgid "%B: internal symbol `%s' isn't defined"
-msgstr "%B: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
+#: elflink.c:10327
+#, c-format
+msgid "%pB: no symbol version section for versioned symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¸Ð·Ð´Ð°ÑšÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð·Ð° Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
 
-#: elflink.c:9017
-msgid "%B: hidden symbol `%s' isn't defined"
-msgstr "%B: Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
+#: elflink.c:10699
+#, c-format
+msgid "warning: --enable-non-contiguous-regions discards section `%s' from '%s'\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž--enable-non-contiguous-regionsâ€œ Ð¾Ð´Ð±Ð°Ñ†ÑƒÑ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð¸Ð· â€ž%sâ€œ\n"
 
-#: elflink.c:9043
-msgid "%B: No symbol version section for versioned symbol `%s'"
-msgstr "%B: Ð�ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¸Ð·Ð´Ð°ÑšÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð·Ð° Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+#: elflink.c:10951
+#, c-format
+msgid "error: %pB: size of section %pA is not multiple of address size"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ"
 
-#: elflink.c:9598
-msgid "error: %B: size of section %A is not multiple of address size"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %B: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ"
+#: elflink.c:10996
+#, c-format
+msgid "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a non-existent global symbol"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (%#<PRIx64>) Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½Ðµ-Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
 
-#: elflink.c:9645
-msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (0x%s) Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ ÐºÐ¾Ñ˜Ð¸ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½Ðµ-Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
+#: elflink.c:11739
+#, c-format
+msgid "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
+msgstr "â€ž%pAâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ [â€ž%pAâ€œ Ñƒ â€ž%pBâ€œ] Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ [â€ž%pAâ€œ Ñƒ â€ž%pBâ€œ] Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: elflink.c:10369
-msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections"
-msgstr "â€ž%Aâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ [â€ž%Aâ€œ Ñƒ â€ž%Bâ€œ] Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ [â€ž%Aâ€œ Ñƒ â€ž%Bâ€œ] Ð¾Ð´ÐµÑ™Ð°Ðº"
+#: elflink.c:11745
+#, c-format
+msgid "%pA has both ordered and unordered sections"
+msgstr "â€ž%pAâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: elflink.c:10374
+#: elflink.c:11851
 #, c-format
-msgid "%A has both ordered and unordered sections"
-msgstr "â€ž%Aâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº"
+msgid "%pB: no symbol found for import library"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° ÑƒÐ²Ð¾Ð·Ð½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ"
 
-#: elflink.c:10982
-msgid "%B: file class %s incompatible with %s"
-msgstr "%B: ÐºÐ»Ð°Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° â€ž%sâ€œ"
+#: elflink.c:12488
+#, c-format
+msgid "%pB: file class %s incompatible with %s"
+msgstr "%pB: ÐºÐ»Ð°Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° â€ž%sâ€œ"
 
-#: elflink.c:11303 elflink.c:11347
-msgid "%B: could not find output section %s"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+#: elflink.c:12704
+#, c-format
+msgid "%pB: failed to generate import library"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ ÑƒÐ²Ð¾Ð·Ð½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ"
 
-#: elflink.c:11308
+#: elflink.c:12823
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
 
-#: elflink.c:11353
+#: elflink.c:12871
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½ Ñƒ Ð±ÐµÐ»ÐµÑˆÐºÑƒ"
 
-#: elflink.c:11419
-msgid "%P%X: read-only segment has dynamic relocations.\n"
-msgstr "%P%X: Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð¸Ð¼Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°.\n"
-
-#: elflink.c:11422
-msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n"
-msgstr "%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ.\n"
+#: elflink.c:12964
+msgid "%P%X: read-only segment has dynamic relocations\n"
+msgstr "%P%X: Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð¸Ð¼Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°\n"
+
+#: elflink.c:12967
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
+msgstr "%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ\n"
+
+#: elflink.c:12970
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr "%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ â€žPIEâ€œ\n"
 
-#: elflink.c:11545
+#: elflink.c:13095
 msgid "%P%X: can not read symbols: %E\n"
 msgstr "%P%X: Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ‡Ð¸Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ: %E\n"
 
-#: elflink.c:11989
-msgid "Removing unused section '%s' in file '%B'"
-msgstr "Ð£ÐºÐ»Ð°ÑšÐ°Ð¼ Ð½ÐµÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€ž%Bâ€œ"
+#: elflink.c:13500
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%F%P: %pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ˜Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½-Ð½Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° â€ž--gc-sectionsâ€œ\n"
+
+#: elflink.c:13961
+#, c-format
+msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
+msgstr "%pB: %pA+%#<PRIx64>: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° â€žINHERITâ€œ"
+
+#: elflink.c:14002
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žVTENTRYâ€œ ÑƒÐ½Ð¾Ñ�"
+
+#: elflink.c:14145
+#, c-format
+msgid "unrecognized INPUT_SECTION_FLAG %s\n"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žINPUT_SECTION_FLAG %sâ€œ\n"
+
+#: elflink.c:14891
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr "%P: %pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ\n"
+
+#: elflink.c:14980
+msgid "%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s\n"
+msgstr "%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð“Ð�Ð£-Ð¾Ð²Ðµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ�Ð° â€žDT_TEXTRELâ€œ Ð¼Ð¾Ð³Ñƒ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð¸Ñ€Ð°Ñ‚Ð¸ Ð½ÐµÑƒÑ�Ð¿ÐµÑ…Ð¾Ð¼ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ˜Ðµ Ñƒ Ð²Ñ€ÐµÐ¼Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž%sâ€œ\n"
+
+#: elfxx-aarch64.c:477
+#, c-format
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð»Ð°Ð±Ð¾ â€žTLSâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð° Ð¸ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ Ñ€Ð°Ð´Ð¸Ñ‚Ð¸ ÐºÐ°Ð¾ ÑˆÑ‚Ð¾ Ñ�Ðµ Ð¾Ñ‡ÐµÐºÑƒÑ˜Ðµ"
+
+#: elfxx-aarch64.c:738 elfnn-aarch64.c:9902 elfnn-aarch64.c:9909
+#, c-format
+msgid "%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section."
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žBTIâ€œ Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾ â€ž-z force-btiâ€œ-Ñ˜ÐµÐ¼ ÐºÐ°Ð´Ð° Ñ�Ð²Ð¸ ÑƒÐ½Ð¾Ñ�Ð¸ Ð½ÐµÐ¼Ð°Ñ˜Ñƒ â€žBTIâ€œ Ñƒ â€žNOTEâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ."
+
+#: elfxx-aarch64.c:758 elfxx-x86.c:2554
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð“Ð�Ð£ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°\n"
 
-#: elflink.c:12200
-msgid "Warning: gc-sections option ignored"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð¿Ñ†Ð¸Ñ˜Ð° â€žgcâ€œ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°"
+#: elfxx-aarch64.c:762 elfxx-x86.c:2559
+#, c-format
+msgid "%F%pA: failed to align section\n"
+msgstr "%F%pA: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
 
-#: elflink.c:12489
+#: elfxx-aarch64.c:812
 #, c-format
-msgid "Unrecognized INPUT_SECTION_FLAG %s\n"
-msgstr "â€žINPUT_SECTION_FLAG %sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾\n"
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° â€žAArch64â€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%x>"
 
-#: elfxx-mips.c:1419
+#: elfxx-mips.c:1507
 msgid "static procedure (no name)"
 msgstr "Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°Ðº (Ð±ÐµÐ· Ð½Ð°Ð·Ð¸Ð²Ð°)"
 
-#: elfxx-mips.c:5476
+#: elfxx-mips.c:5782
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€žMIPS16â€œ Ð¸ â€žmicroMIPSâ€œ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð·Ð¸Ð²Ð°Ñ˜Ñƒ Ñ˜ÐµÐ´Ð½Ð° Ð´Ñ€ÑƒÐ³Ñƒ"
 
-#: elfxx-mips.c:6087
-msgid "%B: %A+0x%lx: Unsupported jump between ISA modes; consider recompiling with interlinking enabled."
-msgstr "%B: %A+0x%lx: Ð�ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�ÐºÐ¾Ðº Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ð˜Ð¡Ð� Ñ€ÐµÐ¶Ð¸Ð¼Ð°; Ñ€Ð°Ð·Ð¼Ð¾Ñ‚Ñ€Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ Ð¼ÐµÑ’ÑƒÐ¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµÐ¼."
-
-#: elfxx-mips.c:6756 elfxx-mips.c:6979
-msgid "%B: Warning: bad `%s' option size %u smaller than its header"
-msgstr "%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð¿Ñ†Ð¸Ñ˜Ðµ â€ž%sâ€œ %u Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð°"
-
-#: elfxx-mips.c:7734 elfxx-mips.c:7859
-msgid "%B: Warning: cannot determine the target function for stub section `%s'"
-msgstr "%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð´Ñ€ÐµÐ´Ð¸Ð¼ Ñ†Ð¸Ñ™Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ"
-
-#: elfxx-mips.c:7990
-msgid "%B: Malformed reloc detected for section %s"
-msgstr "%B: ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
-
-#: elfxx-mips.c:8065
-msgid "%B: GOT reloc at 0x%lx not expected in executables"
-msgstr "%B: â€žGOTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° 0x%lx Ð½Ð¸Ñ˜Ðµ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ñƒ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸Ð¼"
-
-#: elfxx-mips.c:8199
-msgid "%B: CALL16 reloc at 0x%lx not against global symbol"
-msgstr "%B: â€žCALL16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° 0x%lx Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+#: elfxx-mips.c:6547
+msgid "%X%H: unsupported JALX to the same ISA mode\n"
+msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žJALXâ€œ Ñƒ Ð¸Ñ�Ñ‚Ð¾Ð¼ â€žISAâ€œ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ\n"
+
+#: elfxx-mips.c:6580
+msgid "%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
+msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�ÐºÐ¾Ðº Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€žISAâ€œ Ñ€ÐµÐ¶Ð¸Ð¼Ð°; Ñ€Ð°Ð·Ð¼Ð¾Ñ‚Ñ€Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ Ð¼ÐµÑ’ÑƒÐ¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµÐ¼\n"
+
+#: elfxx-mips.c:6625
+msgid "%X%H: cannot convert branch between ISA modes to JALX: relocation out of range\n"
+msgstr "%X%H: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð³Ñ€Ð°Ð½Ðµ Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€žISAâ€œ Ñ€ÐµÐ¶Ð¸Ð¼Ð° Ñƒ â€žJALXâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°\n"
+
+#: elfxx-mips.c:6637
+msgid "%X%H: unsupported branch between ISA modes\n"
+msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð³Ñ€Ð°Ð½Ð° Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€žISAâ€œ Ñ€ÐµÐ¶Ð¸Ð¼Ð°\n"
+
+#: elfxx-mips.c:7286
+#, c-format
+msgid "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
+msgstr "%pB: Ð½ÐµÑ‚Ð°Ñ‡Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€ž.reginfoâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°; Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… %<PRIu64>, Ð°Ð»Ð¸ Ð´Ð¾Ð±Ð¸Ñ… %<PRIu64>"
+
+#: elfxx-mips.c:7330 elfxx-mips.c:7567
+#, c-format
+msgid "%pB: warning: bad `%s' option size %u smaller than its header"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð¿Ñ†Ð¸Ñ˜Ðµ â€ž%sâ€œ %u Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð°"
+
+#: elfxx-mips.c:8374 elfxx-mips.c:8500
+#, c-format
+msgid "%pB: warning: cannot determine the target function for stub section `%s'"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð´Ñ€ÐµÐ´Ð¸Ð¼ Ñ†Ð¸Ñ™Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ"
+
+#: elfxx-mips.c:8632
+#, c-format
+msgid "%pB: malformed reloc detected for section %s"
+msgstr "%pB: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+
+#: elfxx-mips.c:8731
+#, c-format
+msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
+msgstr "%pB: â€žGOTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %#<PRIx64> Ð½Ð¸Ñ˜Ðµ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ñƒ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸Ð¼"
 
-#: elfxx-mips.c:8977
+#: elfxx-mips.c:8871
+#, c-format
+msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
+msgstr "%pB: â€žCALL16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %#<PRIx64> Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: elfxx-mips.c:9174
+#, c-format
+msgid "%X%H: relocation %s against `%s' cannot be used when making a shared object; recompile with -fPIC\n"
+msgstr "%X%H: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ\n"
+
+#: elfxx-mips.c:9300
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr "â€žIFUNCâ€ž Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€“ â€žIFUNCSâ€œ Ð½Ð¸Ñ�Ñƒ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ðµ"
+
+#: elfxx-mips.c:9303
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: elfxx-mips.c:9523
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr "Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ñƒ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
 
-#: elfxx-mips.c:9877
-msgid "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'"
-msgstr "%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÑƒÐ¿Ð¾Ñ€ÐµÑ’ÑƒÑ˜ÑƒÑ›Ðµ â€žLO16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ Ð½Ð° 0x%lx Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ"
+#: elfxx-mips.c:10457
+#, c-format
+msgid "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in section `%pA'"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÑƒÐ¿Ð¾Ñ€ÐµÑ’ÑƒÑ˜ÑƒÑ›Ðµ â€žLO16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ Ð½Ð° %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
 
-#: elfxx-mips.c:10016
+#: elfxx-mips.c:10597
 msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
 msgstr "Ð¾Ð´ÐµÑ™Ð°Ðº Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ 64KB; Ð´Ð¾ÑšÐ° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (Ð²Ð¸Ð´Ð¸Ñ‚Ðµ Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-Gâ€œ)"
 
-#: elfxx-mips.c:10035
-msgid "JALX to a non-word-aligned address"
-msgstr "â€žJALXâ€œ Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜Ñƒ"
-
-#: elfxx-mips.c:10402 elfxx-mips.c:10966
-msgid "%B: `%A' offset of %ld from `%A' beyond the range of ADDIUPC"
-msgstr "%B: â€ž%Aâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %ld Ð¸Ð· â€ž%Aâ€œ Ð¸Ð·Ð° Ð¾Ð¿Ñ�ÐµÐ³Ð° â€žADDIUPCâ€œ"
-
-#: elfxx-mips.c:13990
-#, c-format
-msgid "%s: illegal section name `%s'"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
-
-#: elfxx-mips.c:14375 elfxx-mips.c:14381 elfxx-mips.c:14387 elfxx-mips.c:14407
-#: elfxx-mips.c:14413 elfxx-mips.c:14419 elfxx-mips.c:14441 elfxx-mips.c:14460
-#: elfxx-mips.c:14467 elfxx-mips.c:14474
-msgid "Warning: %B uses %s (set by %B), %B uses %s"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
-
-#: elfxx-mips.c:14394 elfxx-mips.c:14426 elfxx-mips.c:14447 elfxx-mips.c:14480
-msgid "Warning: %B uses %s (set by %B), %B uses unknown floating point ABI %d"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð�Ð‘Ð˜ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ"
-
-#: elfxx-mips.c:14493 elfxx-mips.c:14501 elfxx-mips.c:14509 elfxx-mips.c:14517
-msgid "Warning: %B uses unknown floating point ABI %d (set by %B), %B uses %s"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð�Ð‘Ð˜ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
-
-#: elfxx-mips.c:14525
-msgid "Warning: %B uses unknown floating point ABI %d (set by %B), %B uses unknown floating point ABI %d"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð�Ð‘Ð˜ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð�Ð‘Ð˜ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ"
-
-#: elfxx-mips.c:14548
-msgid "Warning: %B uses %s (set by %B), %B uses unknown MSA ABI %d"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ ÐœÐ¡Ð� Ð�Ð‘Ð˜ â€ž%dâ€œ"
-
-#: elfxx-mips.c:14559
-msgid "Warning: %B uses unknown MSA ABI %d (set by %B), %B uses %s"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ ÐœÐ¡Ð� Ð�Ð‘Ð˜ â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
-
-#: elfxx-mips.c:14567
-msgid "Warning: %B uses unknown MSA ABI %d (set by %B), %B uses unknown MSA ABI %d"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ ÐœÐ¡Ð� Ð�Ð‘Ð˜ â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%Bâ€œ), â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ ÐœÐ¡Ð� Ð�Ð‘Ð˜ â€ž%dâ€œ"
-
-#: elfxx-mips.c:14599
-msgid "%B: endianness incompatible with that of the selected emulation"
-msgstr "%B: ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ"
-
-#: elfxx-mips.c:14610
-msgid "%B: ABI is incompatible with that of the selected emulation"
-msgstr "%B: Ð�Ð‘Ð˜ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ"
-
-#: elfxx-mips.c:14694
-msgid "%B: warning: linking abicalls files with non-abicalls files"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð½Ðµ-Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð°"
-
-#: elfxx-mips.c:14711
-msgid "%B: linking 32-bit code with 64-bit code"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ 32-Ð±Ð¸Ñ‚Ð½Ð¸ ÐºÐ¾Ð´ Ñ�Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ ÐºÐ¾Ð´Ð¾Ð¼"
-
-#: elfxx-mips.c:14739 elfxx-mips.c:14802
-msgid "%B: linking %s module with previous %s modules"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
-
-#: elfxx-mips.c:14762
-msgid "%B: ABI mismatch: linking %s module with previous %s modules"
-msgstr "%B: Ð�Ð‘Ð˜ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
-
-#: elfxx-mips.c:14786
-msgid "%B: ASE mismatch: linking %s module with previous %s modules"
-msgstr "%B: Ð�Ð¡Ð• Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
+#: elfxx-mips.c:10616
+msgid "cannot convert a jump to JALX for a non-word-aligned address"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ñ�ÐºÐ¾Ðº Ñƒ â€žJALXâ€œ Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜Ñƒ"
+
+#: elfxx-mips.c:10619
+msgid "jump to a non-word-aligned address"
+msgstr "Ñ�ÐºÐ¾Ðº Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜Ñƒ"
+
+#: elfxx-mips.c:10620
+msgid "jump to a non-instruction-aligned address"
+msgstr "Ñ�ÐºÐ¾Ðº Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼"
+
+#: elfxx-mips.c:10623
+msgid "cannot convert a branch to JALX for a non-word-aligned address"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð³Ñ€Ð°Ð½Ñƒ Ñƒ â€žJALXâ€œ Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜Ñƒ"
+
+#: elfxx-mips.c:10625
+msgid "branch to a non-instruction-aligned address"
+msgstr "Ð³Ñ€Ð°Ð½Ð° Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼"
+
+#: elfxx-mips.c:10627
+msgid "PC-relative load from unaligned address"
+msgstr "â€žPCâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¸ ÑƒÑ‚Ð¾Ð²Ð°Ñ€ Ð¸Ð· Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ"
+
+#: elfxx-mips.c:10927
+#, c-format
+msgid "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
+msgstr "%pB: â€ž%pAâ€œ ÑƒÐ½Ð¾Ñ� â€žVMAâ€œ Ð¾Ð´ %#<PRIx64> Ð²Ð°Ð½ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ â€ž-Ttext-segment=...â€œ"
+
+#: elfxx-mips.c:11042 elfxx-mips.c:11629
+#, c-format
+msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
+msgstr "%pB: â€ž%pAâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %<PRId64> Ð¸Ð· â€ž%pAâ€œ Ð¸Ð·Ð° Ð¾Ð¿Ñ�ÐµÐ³Ð° â€žADDIUPCâ€œ"
+
+#: elfxx-mips.c:11601
+#, c-format
+msgid "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
+msgstr "%pB: â€ž%pAâ€œ Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº â€žVMAâ€œ Ð¾Ð´ %#<PRIx64> Ð²Ð°Ð½ 32-Ð±Ð¸Ñ‚Ð½Ð¾Ð³ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ â€ž-Ttext-segment=...â€œ"
+
+#: elfxx-mips.c:14556
+#, c-format
+msgid "%pB: unknown architecture %s"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€ž%sâ€œ"
+
+#: elfxx-mips.c:15090
+#, c-format
+msgid "%pB: illegal section name `%pA'"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ"
+
+#: elfxx-mips.c:15367
+#, c-format
+msgid "%pB: warning: linking abicalls files with non-abicalls files"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð½Ðµ-Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð°"
+
+#: elfxx-mips.c:15384
+#, c-format
+msgid "%pB: linking 32-bit code with 64-bit code"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ 32-Ð±Ð¸Ñ‚Ð½Ð¸ ÐºÐ¾Ð´ Ñ�Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ ÐºÐ¾Ð´Ð¾Ð¼"
 
-#: elfxx-mips.c:14958
+#: elfxx-mips.c:15416 elfxx-mips.c:15482 elfxx-mips.c:15497
+#, c-format
+msgid "%pB: linking %s module with previous %s modules"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
+
+#: elfxx-mips.c:15440
+#, c-format
+msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
+msgstr "%pB: â€žABIâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
+
+#: elfxx-mips.c:15465
+#, c-format
+msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
+msgstr "%pB: â€žASEâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
+
+#: elfxx-mips.c:15599
+#, c-format
+msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %d"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ â€žABIâ€œ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ â€žABIâ€œ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ"
+
+#: elfxx-mips.c:15605
+#, c-format
+msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ â€žABIâ€œ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
+
+#: elfxx-mips.c:15611
+#, c-format
+msgid "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ â€žABIâ€œ Ñ‚Ð°Ñ‡ÐºÑƒ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð° â€ž%dâ€œ"
+
+#: elfxx-mips.c:15625
+#, c-format
+msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
+
+#: elfxx-mips.c:15644
+#, c-format
+msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žMSA ABIâ€œ â€ž%dâ€œ"
+
+#: elfxx-mips.c:15656
+#, c-format
+msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žMSA ABIâ€œ â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
+
+#: elfxx-mips.c:15665
+#, c-format
+msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %d"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žMSA ABIâ€œ â€ž%dâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žMSA ABI %dâ€œ"
+
+#: elfxx-mips.c:15727
+#, c-format
+msgid "%pB: endianness incompatible with that of the selected emulation"
+msgstr "%pB: ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ"
+
+#: elfxx-mips.c:15741
+#, c-format
+msgid "%pB: ABI is incompatible with that of the selected emulation"
+msgstr "%pB: â€žABIâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ"
+
+#: elfxx-mips.c:15794
+#, c-format
+msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾ â€žISAâ€œ Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€že_flagsâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ"
+
+#: elfxx-mips.c:15799
+#, c-format
+msgid "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾ â€žFP ABIâ€œ Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€ž.gnu.attributesâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ"
+
+#: elfxx-mips.c:15803
+#, c-format
+msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾ â€žASEâ€œ Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€že_flagsâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ"
+
+#: elfxx-mips.c:15810
+#, c-format
+msgid "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð° â€žISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€že_flagsâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ"
+
+#: elfxx-mips.c:15814
+#, c-format
+msgid "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ñƒ â€žflags2â€œ Ð¿Ð¾Ñ™Ñƒ â€ž.MIPS.abiflagsâ€œ-Ð° (0x%lx)"
+
+#: elfxx-mips.c:16005
+msgid "-mips32r2 -mfp64 (12 callee-saved)"
+msgstr "-mips32r2 -mfp64 (12 Ð¿Ð¾Ð·Ð¸Ð²Ð°Ð¾Ñ†Ð°-Ñ�Ð°Ñ‡ÑƒÐ²Ð°Ð½Ð¾)"
+
+#: elfxx-mips.c:16067 elfxx-mips.c:16078
+msgid "None"
+msgstr "Ð�Ð¸ÑˆÑ‚Ð°"
+
+#: elfxx-mips.c:16069 elfxx-mips.c:16138
+msgid "Unknown"
+msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾"
+
+#: elfxx-mips.c:16149
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¸Ð»Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·\n"
+
+#: elfxx-mips.c:16152
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (Ð´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ° Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚)\n"
+
+#: elfxx-mips.c:16155
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (Ñ˜ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ° Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚)\n"
+
+#: elfxx-mips.c:16158
+#, c-format
+msgid "Soft float\n"
+msgstr "Ð¡Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·\n"
+
+#: elfxx-mips.c:16161
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (â€žMIPS32r2â€œ 64-Ð±Ð¸Ñ‚Ð° â€žFPU 12 callee-savedâ€œ)\n"
+
+#: elfxx-mips.c:16164
+#, c-format
+msgid "Hard float (32-bit CPU, Any FPU)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, Ð±Ð¸Ð»Ð¾ ÐºÐ¾Ñ˜Ð¸ â€žFPUâ€œ)\n"
+
+#: elfxx-mips.c:16167
+#, c-format
+msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ð¸Ñ‚Ð½Ð¸ â€žFPUâ€œ)\n"
+
+#: elfxx-mips.c:16170
+#, c-format
+msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¾ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð¼ Ð·Ð°Ñ€ÐµÐ·Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ (32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ð¸Ñ‚Ð½Ð¸ â€žFPUâ€œ)\n"
+
+#: elfxx-mips.c:16202
 #, c-format
 msgid " [abi=O32]"
 msgstr " [Ð°Ð±Ð¸=O32]"
 
-#: elfxx-mips.c:14960
+#: elfxx-mips.c:16204
 #, c-format
 msgid " [abi=O64]"
 msgstr " [Ð°Ð±Ð¸=O64]"
 
-#: elfxx-mips.c:14962
+#: elfxx-mips.c:16206
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [Ð°Ð±Ð¸=EABI32]"
 
-#: elfxx-mips.c:14964
+#: elfxx-mips.c:16208
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [Ð°Ð±Ð¸=EABI64]"
 
-#: elfxx-mips.c:14966
+#: elfxx-mips.c:16210
 #, c-format
 msgid " [abi unknown]"
 msgstr " [Ð°Ð±Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾]"
 
-#: elfxx-mips.c:14968
+#: elfxx-mips.c:16212
 #, c-format
 msgid " [abi=N32]"
 msgstr " [Ð°Ð±Ð¸=N32]"
 
-#: elfxx-mips.c:14970
+#: elfxx-mips.c:16214
 #, c-format
 msgid " [abi=64]"
 msgstr " [Ð°Ð±Ð¸=64]"
 
-#: elfxx-mips.c:14972
+#: elfxx-mips.c:16216
 #, c-format
 msgid " [no abi set]"
 msgstr " [Ð°Ð±Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾]"
 
-#: elfxx-mips.c:14993
+#: elfxx-mips.c:16241
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð˜Ð¡Ð�]"
 
-#: elfxx-mips.c:15013
+#: elfxx-mips.c:16261
 #, c-format
 msgid " [not 32bitmode]"
 msgstr " [Ð½Ð¸Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ€ÐµÐ¶Ð¸Ð¼]"
 
-#: elfxx-sparc.c:640
+#: elfxx-riscv.c:1063
+#, c-format
+msgid "-march=%s: Expect number after `%dp'."
+msgstr "-march=%s: ÐžÑ‡ÐµÐºÑƒÑ˜ÐµÐ¼ Ð±Ñ€Ð¾Ñ˜ Ð½Ð°ÐºÐ¾Ð½ â€ž%dpâ€œ."
+
+#: elfxx-riscv.c:1174
 #, c-format
-msgid "invalid relocation type %d"
-msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+msgid "-march=%s: rv%de is not a valid base ISA"
+msgstr "-march=%s: â€žrv%deâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð±Ð°Ð·Ð° â€žISAâ€œ"
 
-#: elfxx-tilegx.c:4433
-msgid "%B: Cannot link together %s and %s objects."
-msgstr "%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ â€ž%sâ€œ Ð¸ â€ž%sâ€œ."
+#: elfxx-riscv.c:1214
+#, c-format
+msgid "-march=%s: first ISA subset must be `e', `i' or `g'"
+msgstr "-march=%s: Ð¿Ñ€Ð²Ð¸ â€žISAâ€œ Ð¿Ð¾Ð´Ñ�ÐºÑƒÐ¿ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ â€žeâ€œ, â€žiâ€œ Ð¸Ð»Ð¸ â€žgâ€œ"
 
-#: i386linux.c:418 m68klinux.c:421 sparclinux.c:414
+#: elfxx-riscv.c:1242
 #, c-format
-msgid "Output file requires shared library `%s'\n"
-msgstr "Ð˜Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ â€ž%sâ€œ\n"
+msgid "-march=%s: unsupported ISA subset `%c'"
+msgstr "-march=%s: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ â€žISAâ€œ Ð¿Ð¾Ð´Ñ�ÐºÑƒÐ¿ â€ž%câ€œ"
 
-#: i386linux.c:426 m68klinux.c:429 sparclinux.c:422
+#: elfxx-riscv.c:1245
 #, c-format
-msgid "Output file requires shared library `%s.so.%s'\n"
-msgstr "Ð˜Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ â€ž%s.so.%sâ€œ\n"
+msgid "-march=%s: ISA string is not in canonical order. `%c'"
+msgstr "-march=%s: â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ñƒ ÐºÐ°Ð½Ð¾Ð½Ñ�ÐºÐ¾Ð¼ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÑƒ. â€ž%câ€œ"
 
-#: i386linux.c:613 i386linux.c:663 m68klinux.c:618 m68klinux.c:666
-#: sparclinux.c:609 sparclinux.c:659
+#: elfxx-riscv.c:1364
 #, c-format
-msgid "Symbol %s not defined for fixups\n"
-msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð·Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ\n"
+msgid "-march=%s: Invalid or unknown %s ISA extension: '%s'"
+msgstr "-march=%s: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¸Ð»Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€ž%s ISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ: â€ž%sâ€œ"
 
-#: i386linux.c:687 m68klinux.c:690 sparclinux.c:683
-msgid "Warning: fixup count mismatch\n"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð±Ñ€Ð¾Ñ˜ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°\n"
+#: elfxx-riscv.c:1375
+#, c-format
+msgid "-march=%s: Duplicate %s ISA extension: '%s'"
+msgstr "-march=%s: Ð”Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ¾ â€ž%s ISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ: â€ž%sâ€œ"
 
-#: ieee.c:158
+#: elfxx-riscv.c:1386
 #, c-format
-msgid "%s: string too long (%d chars, max 65535)"
-msgstr "%s: Ð½Ð¸Ñ�ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³Ð° (%d Ð·Ð½Ð°ÐºÐ°, Ð½Ð°Ñ˜Ð². 65535)"
+msgid "-march=%s: %s ISA extension not in alphabetical order: '%s' must come before '%s'."
+msgstr "-march=%s: â€ž%s ISAâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð°Ð·Ð±ÑƒÑ‡Ð½Ð¸Ð¼ Ñ€ÐµÐ´Ð¾Ð¼: â€ž%sâ€œ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¿Ñ€Ðµ â€ž%sâ€œ."
 
-#: ieee.c:285
+#: elfxx-riscv.c:1407
 #, c-format
-msgid "%s: unrecognized symbol `%s' flags 0x%x"
-msgstr "%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ 0x%x"
+msgid "-march=%s: %s must separate with _"
+msgstr "-march=%s: â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° Ñ€Ð°Ð·Ð´Ð²Ð¾Ñ˜Ð¸Ñ‚Ð¸ _"
 
-#: ieee.c:791
-msgid "%B: unimplemented ATI record %u for symbol %u"
-msgstr "%B: Ð½ÐµÐ¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¸ Ð�Ð¢Ð˜ Ð·Ð°Ð¿Ð¸Ñ� â€ž%uâ€œ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%uâ€œ"
+#: elfxx-riscv.c:1523
+#, c-format
+msgid "-march=%s: ISA string must begin with rv32 or rv64"
+msgstr "-march=%s: â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° Ð¼Ð¾Ñ€Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð¸ Ñ�Ð° â€žrv32â€œ Ð¸Ð»Ð¸ â€žrv64â€œ"
 
-#: ieee.c:815
-msgid "%B: unexpected ATN type %d in external part"
-msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð�Ð¢Ð� Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œ Ñƒ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð¼ Ð´ÐµÐ»Ñƒ"
+#: elfxx-riscv.c:1544
+#, c-format
+msgid "-march=%s: unexpected ISA string at end: %s"
+msgstr "-march=%s: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° Ð½Ð° ÐºÑ€Ð°Ñ˜Ñƒ: %s"
 
-#: ieee.c:837
-msgid "%B: unexpected type after ATN"
-msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð½Ð°ÐºÐ¾Ð½ Ð�Ð¢Ð�-Ð°"
+#: elfxx-riscv.c:1553
+#, c-format
+msgid "-march=%s: rv32e does not support the `f' extension"
+msgstr "-march=%s: â€žrv32eâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žfâ€œ"
 
-#: ihex.c:230
-msgid "%B:%d: unexpected character `%s' in Intel Hex file"
-msgstr "%B:%d: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+#: elfxx-riscv.c:1562
+#, c-format
+msgid "-march=%s: `d' extension requires `f' extension"
+msgstr "-march=%s: â€ždâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žfâ€œ"
 
-#: ihex.c:337
-msgid "%B:%u: bad checksum in Intel Hex file (expected %u, found %u)"
-msgstr "%B:%u: Ð»Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… %u, Ð½Ð°Ñ’Ð¾Ñ… %u)"
+#: elfxx-riscv.c:1571
+#, c-format
+msgid "-march=%s: `q' extension requires `d' extension"
+msgstr "-march=%s: â€žqâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ždâ€œ"
+
+#: elfxx-riscv.c:1579
+#, c-format
+msgid "-march=%s: rv32 does not support the `q' extension"
+msgstr "-march=%s: â€žrv32â€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žqâ€œ"
+
+#: elfxx-sparc.c:3002 elfnn-aarch64.c:5530
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¾Ð´Ñ€Ð°Ð´Ð¸"
+
+#: elfxx-tilegx.c:4128
+#, c-format
+msgid "%pB: cannot link together %s and %s objects"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ â€ž%sâ€œ Ð¸ â€ž%sâ€œ"
+
+#: elfxx-x86.c:976
+#, c-format
+msgid "%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%F%P: %pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ñ˜Ðµ Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½\n"
+
+#: elfxx-x86.c:1058
+msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
+msgstr "%P: %pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ\n"
+
+#: elfxx-x86.c:2314
+#, c-format
+msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ x86 Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ (0x%x) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ: 0x%x>"
+
+#: elfxx-x86.c:2580
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž%sâ€œ\n"
+
+#: elfxx-x86.c:2582
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž%sâ€œ\n"
 
-#: ihex.c:392
-msgid "%B:%u: bad extended address record length in Intel Hex file"
-msgstr "%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+#: elfxx-x86.c:2605
+msgid "IBT and SHSTK properties"
+msgstr "â€žIBTâ€œ Ð¸ â€žSHSTKâ€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°"
 
-#: ihex.c:409
-msgid "%B:%u: bad extended start address length in Intel Hex file"
-msgstr "%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+#: elfxx-x86.c:2607
+msgid "IBT property"
+msgstr "â€žIBTâ€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾"
 
-#: ihex.c:426
-msgid "%B:%u: bad extended linear address record length in Intel Hex file"
-msgstr "%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+#: elfxx-x86.c:2609
+msgid "SHSTK property"
+msgstr "â€žSHSTKâ€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾"
 
-#: ihex.c:443
-msgid "%B:%u: bad extended linear start address length in Intel Hex file"
-msgstr "%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+#: elfxx-x86.c:2753
+msgid "%F%P: failed to create VxWorks dynamic sections\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žVxWorksâ€œ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐµ Ð¾Ð´ÐµÑ™ÐºÐµ\n"
 
-#: ihex.c:460
-msgid "%B:%u: unrecognized ihex type %u in Intel Hex file"
-msgstr "%B:%u: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žihexâ€œ Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+#: elfxx-x86.c:2762
+msgid "%F%P: failed to create GOT sections\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žGOTâ€œ Ð¾Ð´ÐµÑ™ÐºÐµ\n"
 
-#: ihex.c:579
-msgid "%B: internal error in ihex_read_section"
-msgstr "%B: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ"
+#: elfxx-x86.c:2780
+msgid "%F%P: failed to create ifunc sections\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žifuncâ€œ Ð¾Ð´ÐµÑ™ÐºÐµ\n"
 
-#: ihex.c:613
-msgid "%B: bad section length in ihex_read_section"
-msgstr "%B: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ"
+#: elfxx-x86.c:2817
+msgid "%F%P: failed to create GOT PLT section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žGOT PLTâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
 
-#: ihex.c:826
+#: elfxx-x86.c:2836
+msgid "%F%P: failed to create IBT-enabled PLT section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žIBTâ€œ-Ð¾Ð¼ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½ â€žPLTâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:2850
+msgid "%F%P: failed to create BND PLT section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žBND PLTâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:2870
+msgid "%F%P: failed to create PLT .eh_frame section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žPLT .eh_frameâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:2883
+msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žGOT .eh_frameâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:2897
+msgid "%F%P: failed to create the second PLT .eh_frame section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð´Ñ€ÑƒÐ³Ð¸ â€žPLT .eh_frameâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:2939
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr "%X%P: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ… Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐºÑƒ Ð²ÐµÐ·Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€ž%pBâ€œ\n"
+
+#: ihex.c:230
 #, c-format
-msgid "%s: address 0x%s out of range for Intel Hex file"
-msgstr "%s: Ð°Ð´Ñ€ÐµÑ�Ð° 0x%s Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ñƒ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ"
+msgid "%pB:%d: unexpected character `%s' in Intel Hex file"
+msgstr "%pB:%d: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
 
-#: libbfd.c:863
-msgid "%B: unable to get decompressed section %A"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð±Ð°Ð²Ð¸Ð¼ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
+#: ihex.c:338
+#, c-format
+msgid "%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"
+msgstr "%pB:%u: Ð»Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… %u, Ð½Ð°Ñ’Ð¾Ñ… %u)"
+
+#: ihex.c:393
+#, c-format
+msgid "%pB:%u: bad extended address record length in Intel Hex file"
+msgstr "%pB:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
 
-#: libbfd.c:1012
-msgid "%B: compiled for a big endian system and target is little endian"
-msgstr "%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð¼Ð°Ð»Ð° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚"
+#: ihex.c:411
+#, c-format
+msgid "%pB:%u: bad extended start address length in Intel Hex file"
+msgstr "%pB:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
 
-#: libbfd.c:1014
-msgid "%B: compiled for a little endian system and target is big endian"
-msgstr "%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð²ÐµÐ»Ð¸ÐºÐ° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚"
+#: ihex.c:429
+#, c-format
+msgid "%pB:%u: bad extended linear address record length in Intel Hex file"
+msgstr "%pB:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+
+#: ihex.c:447
+#, c-format
+msgid "%pB:%u: bad extended linear start address length in Intel Hex file"
+msgstr "%pB:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
 
-#: libbfd.c:1043
+#: ihex.c:465
+#, c-format
+msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
+msgstr "%pB:%u: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žihexâ€œ Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+
+#: ihex.c:581
+#, c-format
+msgid "%pB: internal error in ihex_read_section"
+msgstr "%pB: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ"
+
+#: ihex.c:614
+#, c-format
+msgid "%pB: bad section length in ihex_read_section"
+msgstr "%pB: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ"
+
+#: ihex.c:785
+#, c-format
+msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
+msgstr "%pB 64-Ð±Ð¸Ñ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° %#<PRIx64> Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ñƒ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ"
+
+#: ihex.c:843
+#, c-format
+msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
+msgstr "%pB: Ð°Ð´Ñ€ÐµÑ�Ð° %#<PRIx64> Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ñƒ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ"
+
+#: libbfd.c:884
+#, c-format
+msgid "%pB: unable to get decompressed section %pA"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð±Ð°Ð²Ð¸Ð¼ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
+
+#: libbfd.c:1048
 #, c-format
 msgid "Deprecated %s called at %s line %d in %s\n"
 msgstr "Ð—Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñƒ â€ž%sâ€œ %d. Ñ€ÐµÐ´ Ñƒ â€ž%sâ€œ\n"
 
-#: libbfd.c:1046
+#: libbfd.c:1051
 #, c-format
 msgid "Deprecated %s called\n"
 msgstr "Ð—Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾\n"
 
-#: linker.c:1873
-msgid "%B: indirect symbol `%s' to `%s' is a loop"
-msgstr "%B: Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÐºÐ° â€ž%sâ€œ Ñ˜Ðµ Ð¿ÐµÑ‚Ñ™Ð°"
+#: linker.c:1696
+#, c-format
+msgid "%pB: indirect symbol `%s' to `%s' is a loop"
+msgstr "%pB: Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÐºÐ° â€ž%sâ€œ Ñ˜Ðµ Ð¿ÐµÑ‚Ñ™Ð°"
+
+#: linker.c:2567
+#, c-format
+msgid "attempt to do relocatable link with %s input and %s output"
+msgstr "Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¾Ð´Ñ€Ð°Ð´Ð¸Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ñƒ Ð²ÐµÐ·Ñƒ Ñ�Ð° â€ž%sâ€œ ÑƒÐ»Ð°Ð·Ð¾Ð¼ Ð¸ â€ž%sâ€œ Ð¸Ð·Ð»Ð°Ð·Ð¾Ð¼"
 
-#: linker.c:2750
+#: linker.c:2852
 #, c-format
-msgid "Attempt to do relocatable link with %s input and %s output"
-msgstr "ÐŸÐ¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¾Ð´Ñ€Ð°Ð´Ð¸Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ñƒ Ð²ÐµÐ·Ñƒ Ñ�Ð° â€ž%sâ€œ ÑƒÐ»Ð°Ð·Ð¾Ð¼ Ð¸ â€ž%sâ€œ Ð¸Ð·Ð»Ð°Ð·Ð¾Ð¼"
+msgid "%pB: ignoring duplicate section `%pA'\n"
+msgstr "%pB: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ\n"
 
-#: linker.c:3035
-msgid "%B: ignoring duplicate section `%A'\n"
-msgstr "%B: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ\n"
+#: linker.c:2862 linker.c:2872
+#, c-format
+msgid "%pB: duplicate section `%pA' has different size\n"
+msgstr "%pB: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ\n"
 
-#: linker.c:3044 linker.c:3053
-msgid "%B: duplicate section `%A' has different size\n"
-msgstr "%B: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ\n"
+#: linker.c:2881 linker.c:2887
+#, c-format
+msgid "%pB: could not read contents of section `%pA'\n"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ\n"
 
-#: linker.c:3061 linker.c:3066
-msgid "%B: could not read contents of section `%A'\n"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œ\n"
+#: linker.c:2892
+#, c-format
+msgid "%pB: duplicate section `%pA' has different contents\n"
+msgstr "%pB: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
 
-#: linker.c:3070
-msgid "%B: duplicate section `%A' has different contents\n"
-msgstr "%B: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
+#: linker.c:3404
+#, c-format
+msgid "%pB: compiled for a big endian system and target is little endian"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð¼Ð°Ð»Ð° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚"
 
-#: mach-o.c:648
-msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
-msgstr "bfd_mach_o_canonicalize_symtab: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ"
+#: linker.c:3407
+#, c-format
+msgid "%pB: compiled for a little endian system and target is big endian"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð²ÐµÐ»Ð¸ÐºÐ° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚"
+
+#: mach-o-arm.c:172
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr "Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð¿Ð°Ñ€ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð¿Ñ€Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: mach-o-arm.c:188
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr "Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð¿Ð°Ñ€ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %d"
 
-#: mach-o.c:1918
+#: mach-o-arm.c:203
 #, c-format
-msgid "mach-o: there are too many sections (%d) maximum is 255,\n"
-msgstr "mach-o: Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%d) Ð½Ð°Ñ˜Ð²Ð¸ÑˆÐµ Ñ˜Ðµ 255,\n"
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr "Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ñ�ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð»Ð¸ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %d"
 
-#: mach-o.c:2017
+#: mach-o-arm.c:218
 #, c-format
-msgid "unable to write unknown load command 0x%lx"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° 0x%lx"
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr "Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð»Ð¸ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %d"
 
-#: mach-o.c:2272
+#: mach-o-arm.c:233
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr "Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð¿Ð¾Ð»ÑƒÑ�ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð»Ð¸ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:265
+#, c-format
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr "Ð»Ð¾ÑˆÐµ â€žmach-o ARMâ€œ Ð²Ð°Ð½Ð¸Ð»Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %d (pcrel: %d)"
+
+#: mach-o-arm.c:329
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr "Ð»Ð¾ÑˆÐµ â€žmach-o ARMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d"
+
+#: mach-o.c:633
+#, c-format
+msgid "<unknown mask flags>"
+msgstr "<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¼Ð°Ñ�ÐºÐµ>"
+
+#: mach-o.c:688
+msgid " (<unknown>)"
+msgstr " (<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾>)"
+
+#: mach-o.c:699
+#, c-format
+msgid " MACH-O header:\n"
+msgstr " â€žMACH-Oâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ:\n"
+
+#: mach-o.c:700
+#, c-format
+msgid "   magic:      %#lx\n"
+msgstr "   Ð¼Ð°Ð³Ð¸Ñ˜Ð°:      %#lx\n"
+
+#: mach-o.c:701
+#, c-format
+msgid "   cputype:    %#lx (%s)\n"
+msgstr "   Ð²Ñ€Ñ�Ñ‚Ð° Ñ†Ð¿Ñ˜:    %#lx (%s)\n"
+
+#: mach-o.c:703
+#, c-format
+msgid "   cpusubtype: %#lx%s\n"
+msgstr "   Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° Ñ†Ð¿Ñ˜: %#lx%s\n"
+
+#: mach-o.c:705
+#, c-format
+msgid "   filetype:   %#lx\n"
+msgstr "   Ð²Ñ€Ñ�Ñ‚Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ:   %#lx\n"
+
+#: mach-o.c:706
+#, c-format
+msgid "   ncmds:      %#lx\n"
+msgstr "   Ð±Ñ€Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸:      %#lx\n"
+
+#: mach-o.c:707
+#, c-format
+msgid "   sizeocmds:  %#lx\n"
+msgstr "   Ð²ÐµÐ»Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸:  %#lx\n"
+
+#: mach-o.c:708
+#, c-format
+msgid "   flags:      %#lx\n"
+msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ:      %#lx\n"
+
+#: mach-o.c:709
+#, c-format
+msgid "   version:    %x\n"
+msgstr "   Ð¸Ð·Ð´Ð°ÑšÐµ:  %x\n"
+
+#. Urg - what has happened ?
+#: mach-o.c:744
+#, c-format
+msgid "incompatible cputypes in mach-o files: %ld vs %ld"
+msgstr "Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ñƒ â€žmach-oâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°: â€ž%ldâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%ldâ€œ"
+
+#: mach-o.c:913
+msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
+msgstr "bfd_mach_o_canonicalize_symtab: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ"
+
+#: mach-o.c:1505
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr "Ð»Ð¾ÑˆÐµ â€žmach-oâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ð±Ñ€Ð¾Ñ˜Ð° Ð¾Ð´ÐµÑ™Ð°ÐºÐ°"
+
+#: mach-o.c:2139
 msgid "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands."
 msgstr "Ð¸Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ: â€žmodtabâ€œ, â€žtocâ€œ Ð¸ â€žextrefsymsâ€œ Ñ˜Ð¾Ñˆ Ð½Ð¸Ñ�Ñƒ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¸ Ð·Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ðµ â€ždysymtabâ€œ."
 
-#: mach-o.c:2898
+#: mach-o.c:2587
+#, c-format
+msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
+msgstr "mach-o: Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%u) Ð½Ð°Ñ˜Ð²Ð¸ÑˆÐµ Ñ˜Ðµ 255,\n"
+
+#: mach-o.c:2694
+#, c-format
+msgid "unable to allocate data for load command %#x"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¿Ð¾Ð´Ð°Ñ‚ÐºÐµ Ð·Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œ"
+
+#: mach-o.c:2799
+#, c-format
+msgid "unable to write unknown load command %#x"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œ"
+
+#: mach-o.c:2983
+#, c-format
+msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
+msgstr "Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° (%#<PRIx64>) Ñ˜Ðµ Ð¸Ñ�Ð¿Ð¾Ð´ Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ° Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° (%#<PRIx64>)"
+
+#: mach-o.c:3125
+#, c-format
+msgid "unable to layout unknown load command %#x"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¸ÐºÐ°Ð¶ÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œ"
+
+#: mach-o.c:3660
+#, c-format
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 instead"
+msgstr "bfd_mach_o_read_section_32: Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€Ð°Ð²Ð°ÑšÐ°: %#lx, ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ 32 ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ Ñ‚Ð¾Ð³Ð°"
+
+#: mach-o.c:3703
+#, c-format
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 instead"
+msgstr "bfd_mach_o_read_section_64: Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€Ð°Ð²Ð°ÑšÐ°: %#lx, ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ 32 ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ Ñ‚Ð¾Ð³Ð°"
+
+#: mach-o.c:3754
 #, c-format
-msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %lu"
-msgstr "bfd_mach_o_read_symtab_symbol: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ %d Ð±Ð°Ñ˜Ñ‚Ð° Ð½Ð° %lu"
+msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
+msgstr "bfd_mach_o_read_symtab_symbol: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ %d Ð±Ð°Ñ˜Ñ‚Ð° Ð½Ð° %u"
 
-#: mach-o.c:2916
+#: mach-o.c:3773
 #, c-format
-msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %lu)"
-msgstr "bfd_mach_o_read_symtab_symbol: Ð½Ð°Ð·Ð¸Ð² Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (%lu >= %lu)"
+msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
+msgstr "bfd_mach_o_read_symtab_symbol: Ð½Ð°Ð·Ð¸Ð² Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (%lu >= %u)"
 
-#: mach-o.c:2997
+#: mach-o.c:3856
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d (max %lu): setting to undefined"
 msgstr "bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ¾ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%dâ€œ (Ð½Ð°Ñ˜Ð². %lu): Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð°Ð¼ Ð½Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: mach-o.c:3013
+#: mach-o.c:3875
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x%x: setting to undefined"
 msgstr "bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ¾ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ™Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ 0x%x: Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð°Ð¼ Ð½Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: mach-o.c:3085
-msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
-msgstr "bfd_mach_o_read_symtab_symbols: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ"
-
-#: mach-o.c:3915
-msgid "%B: unknown load command 0x%lx"
-msgstr "%B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° 0x%lx"
+#: mach-o.c:5064
+#, c-format
+msgid "%pB: unknown load command %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œ"
 
-#: mach-o.c:4107
+#: mach-o.c:5263
 #, c-format
 msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
 msgstr "bfd_mach_o_scan: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lx/0x%lx"
 
-#: mach-o.c:4204
+#: mach-o.c:5385
 #, c-format
-msgid "unknown header byte-order value 0x%lx"
-msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÐ° Ð±Ð°Ñ˜Ñ‚Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð° 0x%lx"
+msgid "unknown header byte-order value %#x"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÐ° Ð±Ð°Ñ˜Ñ‚Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð° â€ž%#xâ€œ"
 
-#: merge.c:832
+#: merge.c:895
 #, c-format
-msgid "%s: access beyond end of merged section (%ld)"
-msgstr "%s: Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð¸Ð·Ð° ÐºÑ€Ð°Ñ˜Ð° Ñ�Ñ‚Ð¾Ð¿Ñ™ÐµÐ½Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° (%ld)"
+msgid "%pB: access beyond end of merged section (%<PRId64>)"
+msgstr "%pB: Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð¸Ð·Ð° ÐºÑ€Ð°Ñ˜Ð° Ñ�Ñ‚Ð¾Ð¿Ñ™ÐµÐ½Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° (%<PRId64>)"
 
-#: mmo.c:455
+#: mmo.c:476
 #, c-format
-msgid "%s: No core to allocate section name %s\n"
-msgstr "%s: Ð�ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ð½Ð°Ð·Ð¸Ð²Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ\n"
+msgid "%pB: no core to allocate section name %s"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ð½Ð°Ð·Ð¸Ð²Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
 
-#: mmo.c:530
+#: mmo.c:541
 #, c-format
-msgid "%s: No core to allocate a symbol %d bytes long\n"
-msgstr "%s: Ð�ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð´ÑƒÐ³Ð¾Ð³ %d Ð±Ð°Ñ˜Ñ‚Ð°\n"
+msgid "%pB: no core to allocate a symbol %d bytes long"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð´ÑƒÐ³Ð¾Ð³ %d Ð±Ð°Ñ˜Ñ‚Ð°"
 
-#: mmo.c:1189
+#: mmo.c:952
 #, c-format
-msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°ÑšÐ° Ð·Ð° $255 Ð½Ð¸Ñ˜Ðµ â€žMainâ€œ\n"
+msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
+msgstr "%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ… Ð´Ð° ÐµÐ¼Ð¸Ñ‚ÑƒÑ˜ÐµÐ¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ ÐºÐ¾Ñ˜Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ 4 â€ž%#<PRIx64>â€œ"
 
-#: mmo.c:1334
+#: mmo.c:1248
 #, c-format
-msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
-msgstr "%s: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ ÑˆÐ¸Ñ€Ð¾ÐºÐ¸ Ð½Ð¸Ð· Ð·Ð½Ð°ÐºÐ° 0x%02X 0x%02X Ð½Ð°ÐºÐ¾Ð½ Ð½Ð°Ð·Ð¸Ð²Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° ÐºÐ¾Ñ˜Ð¸ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ñ�Ð° â€ž%sâ€œ\n"
+msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°ÑšÐ° Ð·Ð° $255 Ð½Ð¸Ñ˜Ðµ â€žMainâ€œ\n"
 
-#: mmo.c:1568
+#: mmo.c:1395
 #, c-format
-msgid "%s: invalid mmo file: unsupported lopcode `%d'\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð»Ð¾Ð¿ÐºÐ¾Ð´ â€ž%dâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½\n"
+msgid "%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ ÑˆÐ¸Ñ€Ð¾ÐºÐ¸ Ð½Ð¸Ð· Ð·Ð½Ð°ÐºÐ° 0x%02X 0x%02X Ð½Ð°ÐºÐ¾Ð½ Ð½Ð°Ð·Ð¸Ð²Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° ÐºÐ¾Ñ˜Ð¸ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ñ�Ð° â€ž%sâ€œ\n"
 
-#: mmo.c:1578
+#: mmo.c:1628
 #, c-format
-msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… YZ = 1 Ð´Ð¾Ð±Ð¸Ñ… YZ = %d Ð·Ð° â€žlop_quoteâ€œ\n"
+msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð»Ð¾Ð¿ÐºÐ¾Ð´ â€ž%dâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½\n"
 
-#: mmo.c:1614
+#: mmo.c:1639
 #, c-format
-msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 1 Ð¸Ð»Ð¸ z = 2, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_locâ€œ\n"
+msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… YZ = 1 Ð´Ð¾Ð±Ð¸Ñ… YZ = %d Ð·Ð° â€žlop_quoteâ€œ\n"
 
-#: mmo.c:1660
+#: mmo.c:1679
 #, c-format
-msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 1 Ð¸Ð»Ð¸ z = 2, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_fixoâ€œ\n"
+msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 1 Ð¸Ð»Ð¸ z = 2, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_locâ€œ\n"
 
-#: mmo.c:1699
+#: mmo.c:1730
 #, c-format
-msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… y = 0 Ð´Ð¾Ð±Ð¸Ñ… y = %d Ð·Ð° â€žlop_fixrxâ€œ\n"
+msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 1 Ð¸Ð»Ð¸ z = 2, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_fixoâ€œ\n"
 
-#: mmo.c:1708
+#: mmo.c:1771
 #, c-format
-msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 16 Ð¸Ð»Ð¸ z = 24, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_fixrxâ€œ\n"
+msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… y = 0 Ð´Ð¾Ð±Ð¸Ñ… y = %d Ð·Ð° â€žlop_fixrxâ€œ\n"
 
-#: mmo.c:1731
+#: mmo.c:1782
 #, c-format
-msgid "%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð²Ð¾Ð´ÐµÑ›Ð¸ Ð±Ð°Ñ˜Ñ‚ Ñ€ÐµÑ‡Ð¸ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ 0 Ð¸Ð»Ð¸ 1, Ð´Ð¾Ð±Ð¸Ñ… %d Ð·Ð° â€žlop_fixrxâ€œ\n"
+msgid "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… z = 16 Ð¸Ð»Ð¸ z = 24, Ð´Ð¾Ð±Ð¸Ñ… z = %d Ð·Ð° â€žlop_fixrxâ€œ\n"
 
-#: mmo.c:1754
+#: mmo.c:1807
 #, c-format
-msgid "%s: cannot allocate file name for file number %d, %d bytes\n"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð·Ð° Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ %d, %d Ð±Ð°Ñ˜Ñ‚Ð°\n"
+msgid "%pB: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð²Ð¾Ð´ÐµÑ›Ð¸ Ð±Ð°Ñ˜Ñ‚ Ñ€ÐµÑ‡Ð¸ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ 0 Ð¸Ð»Ð¸ 1, Ð´Ð¾Ð±Ð¸Ñ… %d Ð·Ð° â€žlop_fixrxâ€œ\n"
 
-#: mmo.c:1774
+#: mmo.c:1832
 #, c-format
-msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ %d â€ž%sâ€œ, Ñ˜Ðµ Ð²ÐµÑ› ÑƒÐ½ÐµÑˆÐµÐ½ ÐºÐ°Ð¾ â€ž%sâ€œ\n"
+msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð·Ð° Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ %d, %d Ð±Ð°Ñ˜Ñ‚Ð°\n"
 
-#: mmo.c:1787
+#: mmo.c:1854
 #, c-format
-msgid "%s: invalid mmo file: file name for number %d was not specified before use\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð·Ð° Ð±Ñ€Ð¾Ñ˜ %d Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½ Ð¿Ñ€Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ðµ\n"
+msgid "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ %d â€ž%sâ€œ, Ñ˜Ðµ Ð²ÐµÑ› ÑƒÐ½ÐµÑˆÐµÐ½ ÐºÐ°Ð¾ â€ž%sâ€œ\n"
 
-#: mmo.c:1893
+#: mmo.c:1868
 #, c-format
-msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¿Ð¾Ñ™Ðµ y Ð¸ z â€žlop_stabâ€œ-Ð° Ð½Ð¸Ñ˜Ðµ Ð½ÑƒÐ»Ð°, y: %d, z: %d\n"
+msgid "%pB: invalid mmo file: file name for number %d was not specified before use\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð·Ð° Ð±Ñ€Ð¾Ñ˜ %d Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½ Ð¿Ñ€Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ðµ\n"
 
-#: mmo.c:1929
+#: mmo.c:1975
 #, c-format
-msgid "%s: invalid mmo file: lop_end not last item in file\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: â€žlop_endâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ð»ÐµÐ´ÑšÐ° Ñ�Ñ‚Ð°Ð²ÐºÐ° Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸\n"
+msgid "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð¿Ð¾Ñ™Ðµ y Ð¸ z â€žlop_stabâ€œ-Ð° Ð½Ð¸Ñ˜Ðµ Ð½ÑƒÐ»Ð°, y: %d, z: %d\n"
 
-#: mmo.c:1942
+#: mmo.c:2012
 #, c-format
-msgid "%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: YZ â€žlop_endâ€œ-Ð° (%ld) Ð½Ð¸Ñ˜Ðµ Ñ˜ÐµÐ´Ð½Ð°ÐºÐ¾ Ñ�Ð° Ð±Ñ€Ð¾Ñ˜ÐµÐ¼ Ñ‚ÐµÑ‚Ñ€Ð°Ñ�Ð° Ð´Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾Ð³ â€žlop_stabâ€œ-Ð° (%ld)\n"
+msgid "%pB: invalid mmo file: lop_end not last item in file\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: â€žlop_endâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ð»ÐµÐ´ÑšÐ° Ñ�Ñ‚Ð°Ð²ÐºÐ° Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸\n"
 
-#: mmo.c:2652
+#: mmo.c:2026
 #, c-format
-msgid "%s: invalid symbol table: duplicate symbol `%s'\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ\n"
+msgid "%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: YZ â€žlop_endâ€œ-Ð° (%ld) Ð½Ð¸Ñ˜Ðµ Ñ˜ÐµÐ´Ð½Ð°ÐºÐ¾ Ñ�Ð° Ð±Ñ€Ð¾Ñ˜ÐµÐ¼ Ñ‚ÐµÑ‚Ñ€Ð°Ñ�Ð° Ð´Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾Ð³ â€žlop_stabâ€œ-Ð° (%ld)\n"
 
-#: mmo.c:2892
+#: mmo.c:2735
 #, c-format
-msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n"
-msgstr "%s: Ð›Ð¾ÑˆÐ° Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: â€žMainâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð½Ð° â€ž%sâ€œ ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%sâ€œ\n"
+msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ\n"
 
-#: mmo.c:2984
+#: mmo.c:2978
 #, c-format
-msgid "%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð²ÐµÐ»Ð¸ÐºÐ° Ð·Ð° â€žmmoâ€œ, Ð²ÐµÑ›Ð° Ð¾Ð´ 65535 32-Ð±Ð¸Ñ‚Ð½Ð¸Ñ… Ñ€ÐµÑ‡Ð¸: %d.  Ð¡Ð°Ð¼Ð¾ â€žMainâ€œ Ð±Ð¸Ñ›Ðµ Ð´Ð°Ñ‚Ð¾.\n"
+msgid "%pB: bad symbol definition: `Main' set to %s rather than the start address %s\n"
+msgstr "%pB: Ð»Ð¾ÑˆÐ° Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: â€žMainâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð½Ð° â€ž%sâ€œ ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%sâ€œ\n"
 
-#: mmo.c:3029
+#: mmo.c:3077
 #, c-format
-msgid "%s: internal error, symbol table changed size from %d to %d words\n"
-msgstr "%s: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°, Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¸Ð· %d Ñƒ %d Ñ€ÐµÑ‡Ð¸\n"
+msgid "%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð²ÐµÐ»Ð¸ÐºÐ° Ð·Ð° â€žmmoâ€œ, Ð²ÐµÑ›Ð° Ð¾Ð´ 65535 32-Ð±Ð¸Ñ‚Ð½Ð¸Ñ… Ñ€ÐµÑ‡Ð¸: %d.  Ð¡Ð°Ð¼Ð¾ â€žMainâ€œ Ð±Ð¸Ñ›Ðµ Ð´Ð°Ñ‚Ð¾.\n"
 
-#: mmo.c:3081
+#: mmo.c:3123
 #, c-format
-msgid "%s: internal error, internal register section %s had contents\n"
-msgstr "%s: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°, ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° â€ž%sâ€œ Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
+msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
+msgstr "%pB: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°, Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¸Ð· %d Ñƒ %d Ñ€ÐµÑ‡Ð¸\n"
 
-#: mmo.c:3132
+#: mmo.c:3176
 #, c-format
-msgid "%s: no initialized registers; section length 0\n"
-msgstr "%s: Ð½ÐµÐ¼Ð° Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð¸Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€Ð°; Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° 0\n"
+msgid "%pB: internal error, internal register section %pA had contents\n"
+msgstr "%pB: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°, ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° â€ž%pAâ€œ Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
 
-#: mmo.c:3138
+#: mmo.c:3227
 #, c-format
-msgid "%s: too many initialized registers; section length %ld\n"
-msgstr "%s: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð¸Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€Ð°; Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° %ld\n"
+msgid "%pB: no initialized registers; section length 0\n"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð¸Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€Ð°; Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° 0\n"
 
-#: mmo.c:3143
+#: mmo.c:3234
 #, c-format
-msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð° Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ðµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÑƒÐ¶Ð¸Ð½Ðµ %ld: 0x%lx%08lx\n"
+msgid "%pB: too many initialized registers; section length %<PRId64>"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð¸Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€Ð°; Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° %<PRId64>"
 
-#: oasys.c:881
+#: mmo.c:3239
 #, c-format
-msgid "%s: can not represent section `%s' in oasys"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ â€žoasysâ€œ"
+msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð° Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ðµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÑƒÐ¶Ð¸Ð½Ðµ %<PRId64>: %#<PRIx64>"
 
-#: osf-core.c:128
+#: osf-core.c:127
 #, c-format
-msgid "Unhandled OSF/1 core file section type %d\n"
-msgstr "Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð²Ñ€Ñ�Ñ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° %d Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ OSF/1 Ñ˜ÐµÐ·Ð³Ñ€Ð°\n"
+msgid "unhandled OSF/1 core file section type %d"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð²Ñ€Ñ�Ñ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° %d Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ OSF/1 Ñ˜ÐµÐ·Ð³Ñ€Ð°"
 
-#: pe-mips.c:607
-msgid "%B: `ld -r' not supported with PE MIPS objects\n"
-msgstr "%B: â€žld -râ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð° â€žPE MIPSâ€œ\n"
+#: pdp11.c:1588
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð° Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ (Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾)"
+
+#: pef.c:530
+#, c-format
+msgid "bfd_pef_scan: unknown architecture 0x%lx"
+msgstr "bfd_pef_scan: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lx"
 
-#. OK, at this point the following variables are set up:
-#. src = VMA of the memory we're fixing up
-#. mem = pointer to memory we're fixing up
-#. val = VMA of what we need to refer to.
-#: pe-mips.c:719
-msgid "%B: unimplemented %s\n"
-msgstr "%B: Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ â€ž%sâ€œ\n"
+#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220 pei-x86_64.c:243
+#: pei-x86_64.c:253 pei-x86_64.c:278 pei-x86_64.c:290 pei-x86_64.c:304
+#: pei-x86_64.c:322 pei-x86_64.c:334 pei-x86_64.c:346
+#, c-format
+msgid "warning: corrupt unwind data\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ Ð¸Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸\n"
 
-#: pe-mips.c:745
-msgid "%B: jump too far away\n"
-msgstr "%B: Ñ�ÐºÐ¾Ðº Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð´Ð°Ð»ÐµÐºÐ¾\n"
+#. PR 17512: file: 2245-7442-0.004.
+#: pei-x86_64.c:367
+#, c-format
+msgid "Unknown: %x"
+msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾: %x"
 
-#: pe-mips.c:771
-msgid "%B: bad pair/reflo after refhi\n"
-msgstr "%B: Ð»Ð¾ÑˆÐµ â€žpair/refloâ€œ Ð½Ð°ÐºÐ¾Ð½ â€žrefhiâ€œ\n"
+#: pei-x86_64.c:418 pei-x86_64.c:428 pei-x86_64.c:437
+#, c-format
+msgid "warning: xdata section corrupt\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ…-Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°\n"
 
-#: pef.c:522
+#: pei-x86_64.c:492
 #, c-format
-msgid "bfd_pef_scan: unknown architecture 0x%lx"
-msgstr "bfd_pef_scan: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lx"
+msgid "Too many unwind codes (%ld)\n"
+msgstr "ÐŸÑ€ÐµÐ²Ð¸ÑˆÐµ Ð¸Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ… ÐºÐ¾Ð´Ð¾Ð²Ð° (%ld)\n"
 
-#: pei-x86_64.c:469
+#: pei-x86_64.c:582
 #, c-format
-msgid "warning: .pdata section size (%ld) is not a multiple of %d\n"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d\n"
+msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d\n"
 
-#: pei-x86_64.c:474 peigen.c:1626 peigen.c:1809 pepigen.c:1626 pepigen.c:1809
-#: pex64igen.c:1626 pex64igen.c:1809
+#: pei-x86_64.c:589
+#, c-format
+msgid "Warning: %s section size is zero\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ\n"
+
+#: pei-x86_64.c:604
+#, c-format
+msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (%ld) Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð²Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ (%ld)\n"
+
+#: pei-x86_64.c:613
 #, c-format
 msgid ""
 "\n"
-"The Function Table (interpreted .pdata section contents)\n"
+"The Function Table (interpreted %s section contents)\n"
 msgstr ""
 "\n"
-"Ð¢Ð°Ð±ÐµÐ»Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ)\n"
+"Ð¢Ð°Ð±ÐµÐ»Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)\n"
 
-#: pei-x86_64.c:476
+#: pei-x86_64.c:616
 #, c-format
 msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
 msgstr "vma:\t\t\tÐ�Ð´Ñ€ÐµÑ�Ð° Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ°\t Ð�Ð´Ñ€ÐµÑ�Ð° ÐºÑ€Ð°Ñ˜Ð°\t  Ð˜Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸\n"
 
+#: pei-x86_64.c:745
+#, c-format
+msgid ""
+"\n"
+"Dump of %s\n"
+msgstr ""
+"\n"
+"Ð˜Ð·Ð»Ð°Ð· Ð·Ð° â€ž%sâ€œ\n"
+
 #. XXX code yet to be written.
-#: peicode.h:758
-msgid "%B: Unhandled import type; %x"
-msgstr "%B: Ð�ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° ÑƒÐ²Ð¾Ð·Ð°; %x"
-
-#: peicode.h:763
-msgid "%B: Unrecognised import type; %x"
-msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° ÑƒÐ²Ð¾Ð·Ð°; %x"
-
-#: peicode.h:777
-msgid "%B: Unrecognised import name type; %x"
-msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð½Ð°Ð·Ð¸Ð² Ð²Ñ€Ñ�Ñ‚Ðµ ÑƒÐ²Ð¾Ð·Ð°; %x"
-
-#: peicode.h:1173
-msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive"
-msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°"
-
-#: peicode.h:1185
-msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive"
-msgstr "%B: ÐŸÐ¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ð»Ð¸ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°"
-
-#: peicode.h:1203
-msgid "%B: size field is zero in Import Library Format header"
-msgstr "%B: Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñ˜Ðµ Ð½ÑƒÐ»Ð° Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°"
-
-#: peicode.h:1234
-msgid "%B: string not null terminated in ILF object file."
-msgstr "%B: Ð½Ð¸Ñ�ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ð½ÑƒÐ»Ð¾Ð¼ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ Ð˜Ð›Ð¤ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°."
+#: peicode.h:796
+#, c-format
+msgid "%pB: unhandled import type; %x"
+msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° ÑƒÐ²Ð¾Ð·Ð°; %x"
+
+#: peicode.h:802
+#, c-format
+msgid "%pB: unrecognized import type; %x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° ÑƒÐ²Ð¾Ð·Ð°; %x"
+
+#: peicode.h:817
+#, c-format
+msgid "%pB: unrecognized import name type; %x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð½Ð°Ð·Ð¸Ð² Ð²Ñ€Ñ�Ñ‚Ðµ ÑƒÐ²Ð¾Ð·Ð°; %x"
+
+#: peicode.h:1225
+#, c-format
+msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°"
+
+#: peicode.h:1238
+#, c-format
+msgid "%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive"
+msgstr "%pB: Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ð»Ð¸ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°"
+
+#: peicode.h:1256
+#, c-format
+msgid "%pB: size field is zero in Import Library Format header"
+msgstr "%pB: Ð¿Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñ˜Ðµ Ð½ÑƒÐ»Ð° Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°"
+
+#: peicode.h:1282
+#, c-format
+msgid "%pB: string not null terminated in ILF object file"
+msgstr "%pB: Ð½Ð¸Ñ�ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ð½ÑƒÐ»Ð¾Ð¼ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€žILFâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: peicode.h:1338
+#, c-format
+msgid "%pB: error: debug data ends beyond end of debug directory"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð´Ð°Ñ†Ð¸ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñ�Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð°Ñ˜Ñƒ Ð¸Ð·Ð²Ð°Ð½ ÐºÑ€Ð°Ñ˜Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°"
 
-#: ppcboot.c:391
+#: ppcboot.c:392
 #, c-format
 msgid ""
 "\n"
@@ -4104,64 +5926,86 @@ msgstr ""
 "\n"
 "Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ â€žppcbootâ€œ:\n"
 
-#: ppcboot.c:392
+#: ppcboot.c:393
 #, c-format
 msgid "Entry offset        = 0x%.8lx (%ld)\n"
-msgstr "ÐŸÐ¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÐ½Ð¾Ñ�Ð°       = 0x%.8lx (%ld)\n"
+msgstr "ÐŸÐ¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÐ½Ð¾Ñ�Ð°   = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:394
+#: ppcboot.c:395
 #, c-format
 msgid "Length              = 0x%.8lx (%ld)\n"
-msgstr "Ð”ÑƒÐ¶Ð¸Ð½Ð°              = 0x%.8lx (%ld)\n"
+msgstr "Ð”ÑƒÐ¶Ð¸Ð½Ð°          = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:398
+#: ppcboot.c:399
 #, c-format
 msgid "Flag field          = 0x%.2x\n"
-msgstr "ÐŸÐ¾Ñ™Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ      = 0x%.2x\n"
+msgstr "ÐŸÐ¾Ñ™Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  = 0x%.2x\n"
 
-#: ppcboot.c:404
+#: ppcboot.c:405
 #, c-format
 msgid "Partition name      = \"%s\"\n"
-msgstr "Ð�Ð°Ð·Ð¸Ð² Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ     = â€ž%sâ€œ\n"
+msgstr "Ð�Ð°Ð·Ð¸Ð² Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ = â€ž%sâ€œ\n"
 
-#: ppcboot.c:423
+#: ppcboot.c:425
 #, c-format
 msgid ""
 "\n"
 "Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 msgstr ""
 "\n"
-"ÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+"ÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d]  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
-#: ppcboot.c:429
+#: ppcboot.c:432
 #, c-format
 msgid "Partition[%d] end    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 msgstr "ÐšÑ€Ð°Ñ˜ Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d]   = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
-#: ppcboot.c:435
+#: ppcboot.c:439
 #, c-format
 msgid "Partition[%d] sector = 0x%.8lx (%ld)\n"
 msgstr "ÐžÐ´ÐµÑ™Ð°Ðº Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d] = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:437
+#: ppcboot.c:443
 #, c-format
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr "Ð”ÑƒÐ¶Ð¸Ð½Ð° Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d] = 0x%.8lx (%ld)\n"
 
-#: reloc.c:7371
-msgid "INPUT_SECTION_FLAGS are not supported.\n"
-msgstr "â€žINPUT_SECTION_FLAGSâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾.\n"
+#: reloc.c:8291
+msgid "INPUT_SECTION_FLAGS are not supported"
+msgstr "â€žINPUT_SECTION_FLAGSâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+
+#: reloc.c:8392
+#, c-format
+msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
+msgstr "%X%P: %pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ â€ž%Vâ€œ Ð½ÐµÐ¼Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚\n"
+
+#: reloc.c:8480
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%pRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
+
+#: reloc.c:8489
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%pRâ€œ Ñ˜Ðµ Ð²Ñ€Ð°Ñ‚Ð¸Ð»Ð¾ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%xâ€œ\n"
+
+#: reloc.c:8551
+#, c-format
+msgid "%pB: unrecognized relocation type %#x in section `%pA'"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %#x Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
 
-#: reloc.c:7526
-msgid "%X%P: %B(%A): relocation \"%R\" goes out of range\n"
-msgstr "%X%P: %B(%A): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%Râ€œ Ð¸Ð´Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°\n"
+#. PR 21803: Suggest the most likely cause of this error.
+#: reloc.c:8555
+#, c-format
+msgid "is this version of the linker - %s - out of date ?"
+msgstr "Ð´Ð° Ð½Ð¸Ñ˜Ðµ Ð¾Ð²Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° â€“ %s â€“ Ð¼Ð°Ð»Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ ?"
 
-#: rs6000-core.c:448
+#: rs6000-core.c:471
 #, c-format
-msgid "%s: warning core file truncated"
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜ÐµÐ·Ð³Ñ€Ð°"
+msgid "%pB: warning core file truncated"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜ÐµÐ·Ð³Ñ€Ð°"
 
-#: som.c:5471
+#: som.c:5497
 #, c-format
 msgid ""
 "\n"
@@ -4170,52 +6014,106 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ð¼Ð¾Ñ›Ð½Ð¾ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ\n"
 
-#: som.c:5776
+#: som.c:5806
 msgid "som_sizeof_headers unimplemented"
 msgstr "â€žsom_sizeof_headersâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#: srec.c:261
-msgid "%B:%d: Unexpected character `%s' in S-record file\n"
-msgstr "%B:%d: Ð�ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ Ð¡-Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
-
-#: srec.c:567 srec.c:600
-msgid "%B:%d: Bad checksum in S-record file\n"
-msgstr "%B:%d: Ð›Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ Ð¡-Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
+#: srec.c:260
+#, c-format
+msgid "%pB:%d: unexpected character `%s' in S-record file"
+msgstr "%pB:%d: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ S-Ð·Ð°Ð¿Ð¸Ñ�Ð°"
+
+#: srec.c:488
+#, c-format
+msgid "%pB:%d: byte count %d too small"
+msgstr "%pB:%d: Ð±Ñ€Ð¾Ñ˜ Ð±Ð°Ñ˜Ñ‚Ð° â€ž%dâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸"
+
+#: srec.c:580 srec.c:614
+#, c-format
+msgid "%pB:%d: bad checksum in S-record file"
+msgstr "%pB:%d: Ð»Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ S-Ð·Ð°Ð¿Ð¸Ñ�Ð°"
 
 #: stabs.c:279
-msgid "%B(%A+0x%lx): Stabs entry has invalid string index."
-msgstr "%B(%A+0x%lx): Ð£Ð½Ð¾Ñ� Ð¾ÐºÑ€ÑšÐ°ÐºÐ° Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð½Ð¸Ñ�ÐºÐµ."
+#, c-format
+msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
+msgstr "%pB(%pA+%#lx): ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€ÑšÐ°ÐºÐ° Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð½Ð¸Ñ�ÐºÐµ"
+
+#: syms.c:1085
+msgid "unsupported .stab relocation"
+msgstr "Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€ž.stabâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: vms-alpha.c:480
+msgid "corrupt EIHD record - size is too small"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEIHDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº â€“ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°"
+
+#: vms-alpha.c:666
+#, c-format
+msgid "unable to read EIHS record at offset %#x"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHSâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ â€ž%#xâ€œ"
 
-#: syms.c:1079
-msgid "Unsupported .stab relocation"
-msgstr "ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž.stabâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+#: vms-alpha.c:1158
+msgid "record is too small for symbol name length"
+msgstr "Ñ�Ð½Ð¸Ð¼Ð°Ðº Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸ Ð·Ð° Ð´ÑƒÐ¶Ð¸Ð½Ñƒ Ð½Ð°Ð·Ð¸Ð²Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
 
-#: vms-alpha.c:1294
+#: vms-alpha.c:1191
 #, c-format
-msgid "Unknown EGSD subtype %d"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° EGSD Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° %d"
+msgid "corrupt EGSD record: its size (%#x) is too small"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº: ÑšÐµÐ³Ð¾Ð²Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°"
 
-#: vms-alpha.c:1325
+#: vms-alpha.c:1215
 #, c-format
-msgid "Stack overflow (%d) in _bfd_vms_push"
-msgstr "ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° (%d) Ñƒ â€ž_bfd_vms_pushâ€œ-Ñƒ"
+msgid "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ° %d: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð»Ð¾Ð³ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° (%#x)"
 
-#: vms-alpha.c:1338
-msgid "Stack underflow in _bfd_vms_pop"
-msgstr "ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñƒ â€ž_bfd_vms_popâ€œ-Ñƒ"
+#: vms-alpha.c:1225
+#, c-format
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ° %d: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°"
+
+#: vms-alpha.c:1367
+#, c-format
+msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº: ÑšÐµÐ³Ð¾Ð²Ð¾ â€žpsindxâ€œ Ð¿Ð¾Ñ™Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ (%#lx)"
+
+#: vms-alpha.c:1443
+#, c-format
+msgid "unknown EGSD subtype %d"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žEGSDâ€œ Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° %d"
+
+#: vms-alpha.c:1476
+#, c-format
+msgid "stack overflow (%d) in _bfd_vms_push"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° (%d) Ñƒ â€ž_bfd_vms_pushâ€œ-Ñƒ"
+
+#: vms-alpha.c:1490
+msgid "stack underflow in _bfd_vms_pop"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñƒ â€ž_bfd_vms_popâ€œ-Ñƒ"
+
+#: vms-alpha.c:1564
+#, c-format
+msgid "dst_define_location %u too large"
+msgstr "â€ždst_define_location %uâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾"
 
 #. These names have not yet been added to this switch statement.
-#: vms-alpha.c:1575
+#: vms-alpha.c:1765
 #, c-format
 msgid "unknown ETIR command %d"
 msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žETIRâ€œ Ð½Ð°Ñ€ÐµÐ´Ð±Ð° %d"
 
-#: vms-alpha.c:1762
+#: vms-alpha.c:1796
+msgid "corrupt vms value"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° â€žvmsâ€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚"
+
+#: vms-alpha.c:1927
+msgid "corrupt ETIR record encountered"
+msgstr "Ð½Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€žETIRâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº"
+
+#: vms-alpha.c:1989
 #, c-format
 msgid "bad section index in %s"
 msgstr "Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€ž%sâ€œ"
 
-#: vms-alpha.c:1775
+#: vms-alpha.c:2003
 #, c-format
 msgid "unsupported STA cmd %s"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° â€žSTAâ€œ Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%sâ€œ"
@@ -4225,1388 +6123,1480 @@ msgstr "Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° â€žSTAâ€œ Ð
 #. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-alpha.c:1951 vms-alpha.c:1982 vms-alpha.c:2229
+#: vms-alpha.c:2211 vms-alpha.c:2242 vms-alpha.c:2337 vms-alpha.c:2557
 #, c-format
 msgid "%s: not supported"
 msgstr "%s: Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
 
-#: vms-alpha.c:1957
+#: vms-alpha.c:2217
 #, c-format
 msgid "%s: not implemented"
 msgstr "%s: Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#: vms-alpha.c:2213
+#: vms-alpha.c:2382 vms-alpha.c:2397
+#, c-format
+msgid "invalid %s"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€ž%sâ€œ"
+
+#. Divide by zero is supposed to give a result of zero,
+#. and a non-fatal warning message.
+#: vms-alpha.c:2457
+#, c-format
+msgid "%s divide by zero"
+msgstr "%s Ð´ÐµÐ»Ð¸ Ð½ÑƒÐ»Ð¾Ð¼"
+
+#: vms-alpha.c:2523
 #, c-format
 msgid "invalid use of %s with contexts"
 msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ð° â€ž%sâ€œ Ñ�Ð° ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð¼"
 
-#: vms-alpha.c:2247
+#: vms-alpha.c:2581
 #, c-format
 msgid "reserved cmd %d"
 msgstr "Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ�Ð°Ð½Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%dâ€œ"
 
-#: vms-alpha.c:2332
-msgid "Object module NOT error-free !\n"
-msgstr "ÐœÐ¾Ð´ÑƒÐ» Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð�Ð˜ÐˆÐ• Ð±ÐµÐ· Ð³Ñ€ÐµÑˆÐ°ÐºÐ° !\n"
+#: vms-alpha.c:2665
+msgid "corrupt EEOM record - size is too small"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEEOMâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº â€“ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°"
+
+#: vms-alpha.c:2674
+msgid "object module not error-free !"
+msgstr "Ð¼Ð¾Ð´ÑƒÐ» Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð±ÐµÐ· Ð³Ñ€ÐµÑˆÐ°ÐºÐ° !"
 
-#: vms-alpha.c:3657
+#: vms-alpha.c:4001
 #, c-format
-msgid "SEC_RELOC with no relocs in section %s"
-msgstr "â€žSEC_RELOCâ€œ Ð½ÐµÐ¼Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ"
+msgid "SEC_RELOC with no relocs in section %pA"
+msgstr "â€žSEC_RELOCâ€œ Ñ˜Ðµ Ð±ÐµÐ· Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
 
-#: vms-alpha.c:3709 vms-alpha.c:3922
+#: vms-alpha.c:4053 vms-alpha.c:4268
 #, c-format
-msgid "Size error in section %s"
-msgstr "Ð“Ñ€ÐµÑˆÐºÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ"
+msgid "size error in section %pA"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
 
-#: vms-alpha.c:3868
-msgid "Spurious ALPHA_R_BSR reloc"
-msgstr "ÐŸÑ€Ð¸Ð²Ð¸Ð´Ð½Ð¾ â€žALPHA_R_BSRâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: vms-alpha.c:4213
+msgid "spurious ALPHA_R_BSR reloc"
+msgstr "Ð¿Ñ€Ð¸Ð²Ð¸Ð´Ð½Ð¾ â€žALPHA_R_BSRâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: vms-alpha.c:3909
+#: vms-alpha.c:4254
 #, c-format
-msgid "Unhandled relocation %s"
-msgstr "Ð�ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
+msgid "unhandled relocation %s"
+msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
 
-#: vms-alpha.c:4199
+#: vms-alpha.c:4551
 #, c-format
 msgid "unknown source command %d"
 msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° Ð¸Ð·Ð²Ð¾Ñ€Ð° â€ž%dâ€œ"
 
-#: vms-alpha.c:4260
-msgid "DST__K_SET_LINUM_INCR not implemented"
-msgstr "â€žDST__K_SET_LINUM_INCRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
-
-#: vms-alpha.c:4266
-msgid "DST__K_SET_LINUM_INCR_W not implemented"
-msgstr "â€žDST__K_SET_LINUM_INCR_Wâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
-
-#: vms-alpha.c:4272
-msgid "DST__K_RESET_LINUM_INCR not implemented"
-msgstr "â€žDST__K_RESET_LINUM_INCRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
-
-#: vms-alpha.c:4278
-msgid "DST__K_BEG_STMT_MODE not implemented"
-msgstr "â€žDST__K_BEG_STMT_MODEâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
-
-#: vms-alpha.c:4284
-msgid "DST__K_END_STMT_MODE not implemented"
-msgstr "â€žDST__K_END_STMT_MODEâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
-
-#: vms-alpha.c:4311
-msgid "DST__K_SET_PC not implemented"
-msgstr "â€žDST__K_SET_PCâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
-
-#: vms-alpha.c:4317
-msgid "DST__K_SET_PC_W not implemented"
-msgstr "â€žDST__K_SET_PC_Wâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
-
-#: vms-alpha.c:4323
-msgid "DST__K_SET_PC_L not implemented"
-msgstr "â€žDST__K_SET_PC_Lâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
-
-#: vms-alpha.c:4329
-msgid "DST__K_SET_STMTNUM not implemented"
-msgstr "â€žDST__K_SET_STMTNUMâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+#: vms-alpha.c:4612 vms-alpha.c:4618 vms-alpha.c:4624 vms-alpha.c:4630
+#: vms-alpha.c:4636 vms-alpha.c:4663 vms-alpha.c:4669 vms-alpha.c:4675
+#: vms-alpha.c:4681
+#, c-format
+msgid "%s not implemented"
+msgstr "â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#: vms-alpha.c:4372
+#: vms-alpha.c:4724
 #, c-format
 msgid "unknown line command %d"
 msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ñ€ÐµÐ´Ð½Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%dâ€œ"
 
-#: vms-alpha.c:4846 vms-alpha.c:4863 vms-alpha.c:4877 vms-alpha.c:4892
-#: vms-alpha.c:4904 vms-alpha.c:4915 vms-alpha.c:4927
+#: vms-alpha.c:5188 vms-alpha.c:5206 vms-alpha.c:5221 vms-alpha.c:5237
+#: vms-alpha.c:5250 vms-alpha.c:5262 vms-alpha.c:5275
 #, c-format
-msgid "Unknown reloc %s + %s"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s + %sâ€œ"
+msgid "unknown reloc %s + %s"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s + %sâ€œ"
 
-#: vms-alpha.c:4982
+#: vms-alpha.c:5330
 #, c-format
-msgid "Unknown reloc %s"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
+msgid "unknown reloc %s"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
 
-#: vms-alpha.c:4995
-msgid "Invalid section index in ETIR"
-msgstr "Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žETIRâ€œ-Ñƒ"
+#: vms-alpha.c:5344
+msgid "invalid section index in ETIR"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žETIRâ€œ-Ñƒ"
 
-#: vms-alpha.c:5002
-msgid "Relocation for non-REL psect"
-msgstr "ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð½Ðµ-Ð Ð•Ð› Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº"
+#: vms-alpha.c:5353
+msgid "relocation for non-REL psect"
+msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð½Ðµ-â€žRELâ€œ Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: vms-alpha.c:5049
+#: vms-alpha.c:5402
 #, c-format
-msgid "Unknown symbol in command %s"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸ â€ž%sâ€œ"
+msgid "unknown symbol in command %s"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸ â€ž%sâ€œ"
 
-#: vms-alpha.c:5564
+#: vms-alpha.c:5816
+#, c-format
+msgid "reloc (%d) is *UNKNOWN*"
+msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (%d) Ñ˜Ðµ *Ð�Ð•ÐŸÐžÐ—Ð�Ð�Ð¢Ðž*"
+
+#: vms-alpha.c:5932
 #, c-format
 msgid "  EMH %u (len=%u): "
 msgstr "  EMH %u (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u): "
 
-#: vms-alpha.c:5573
+#: vms-alpha.c:5937
+#, c-format
+msgid "   Error: The length is less than the length of an EMH record\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð´ÑƒÐ¶Ð¸Ð½Ðµ â€žEMHâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ°\n"
+
+#: vms-alpha.c:5954
+#, c-format
+msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ�Ð½Ð¸Ð¼ÐºÐ° Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ â€žEMH_MHDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ°\n"
+
+#: vms-alpha.c:5957
 #, c-format
 msgid "Module header\n"
 msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¼Ð¾Ð´ÑƒÐ»Ð°\n"
 
-#: vms-alpha.c:5574
+#: vms-alpha.c:5958
 #, c-format
 msgid "   structure level: %u\n"
 msgstr "   Ð½Ð¸Ð²Ð¾ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ         : %u\n"
 
-#: vms-alpha.c:5575
+#: vms-alpha.c:5959
 #, c-format
 msgid "   max record size: %u\n"
 msgstr "   Ð½Ð°Ñ˜Ð². Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð±ÐµÐ»ÐµÐ¶ÐµÑšÐ°: %u\n"
 
-#: vms-alpha.c:5578
+#: vms-alpha.c:5965
+#, c-format
+msgid "   Error: The module name is missing\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ\n"
+
+#: vms-alpha.c:5971
+#, c-format
+msgid "   Error: The module name is too long\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³\n"
+
+#: vms-alpha.c:5974
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð°           : %.*s\n"
 
-#: vms-alpha.c:5580
+#: vms-alpha.c:5978
+#, c-format
+msgid "   Error: The module version is missing\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð˜Ð·Ð´Ð°ÑšÐµ Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ\n"
+
+#: vms-alpha.c:5984
+#, c-format
+msgid "   Error: The module version is too long\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð˜Ð·Ð´Ð°ÑšÐµ Ð¼Ð¾Ð´ÑƒÐ»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³Ð¾\n"
+
+#: vms-alpha.c:5987
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   Ð¸Ð·Ð´Ð°ÑšÐµ Ð¼Ð¾Ð´ÑƒÐ»Ð°          : %.*s\n"
 
-#: vms-alpha.c:5582
+#: vms-alpha.c:5990
+#, c-format
+msgid "   Error: The compile date is truncated\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð”Ð°Ñ‚ÑƒÐ¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ° Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½\n"
+
+#: vms-alpha.c:5992
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr "   Ð´Ð°Ñ‚ÑƒÐ¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°        : %.17s\n"
 
-#: vms-alpha.c:5587
+#: vms-alpha.c:5997
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Ð�Ð°Ð·Ð¸Ð² Ñ˜ÐµÐ·Ð¸ÐºÐ° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°\n"
 
-#: vms-alpha.c:5588
+#: vms-alpha.c:5998
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² Ñ˜ÐµÐ·Ð¸ÐºÐ°: %.*s\n"
 
-#: vms-alpha.c:5595
+#: vms-alpha.c:6002
 #, c-format
 msgid "Source Files Header\n"
 msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¸Ð·Ð²Ð¾Ñ€Ð°\n"
 
-#: vms-alpha.c:5596
+#: vms-alpha.c:6003
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: %.*s\n"
 
-#: vms-alpha.c:5603
+#: vms-alpha.c:6007
 #, c-format
 msgid "Title Text Header\n"
 msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð½Ð°Ñ�Ð»Ð¾Ð²Ð°\n"
 
-#: vms-alpha.c:5604
+#: vms-alpha.c:6008
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   Ð½Ð°Ñ�Ð»Ð¾Ð²: %.*s\n"
 
-#: vms-alpha.c:5611
+#: vms-alpha.c:6012
 #, c-format
 msgid "Copyright Header\n"
 msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð°ÑƒÑ‚Ð¾Ñ€Ñ�ÐºÐ¸Ñ… Ð¿Ñ€Ð°Ð²Ð°\n"
 
-#: vms-alpha.c:5612
+#: vms-alpha.c:6013
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   Ð°ÑƒÑ‚Ð¾Ñ€Ñ�ÐºÐ° Ð¿Ñ€Ð°Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:5618
+#: vms-alpha.c:6017
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° emh Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ\n"
 
-#: vms-alpha.c:5628
+#: vms-alpha.c:6027
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):\n"
 
-#: vms-alpha.c:5629
+#: vms-alpha.c:6032
+#, c-format
+msgid "   Error: The length is less than the length of an EEOM record\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð´ÑƒÐ¶Ð¸Ð½Ðµ â€žEEOMâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ°\n"
+
+#: vms-alpha.c:6036
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr "   Ð±Ñ€Ð¾Ñ˜ â€žcondâ€œ Ð¿Ð°Ñ€Ð¾Ð²Ð° Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u\n"
 
-#: vms-alpha.c:5631
+#: vms-alpha.c:6038
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   Ð´Ð¾Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐµ ÐºÐ¾Ð´Ð°: %u\n"
 
-#: vms-alpha.c:5635
+#: vms-alpha.c:6042
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¿Ñ€ÐµÐ½Ð¾Ñ�Ð°: 0x%02x\n"
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:6043
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr "   Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¿Ñ€ÐµÐ½Ð¾Ñ�Ð° : %u\n"
 
-#: vms-alpha.c:5638
+#: vms-alpha.c:6045
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ½Ð¾Ñ�Ð°          : 0x%08x\n"
 
-#: vms-alpha.c:5647
+#: vms-alpha.c:6054
 msgid " WEAK"
 msgstr " WEAK"
 
-#: vms-alpha.c:5649
+#: vms-alpha.c:6056
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5651
+#: vms-alpha.c:6058
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5653 vms-alpha.c:5674
+#: vms-alpha.c:6060 vms-alpha.c:6081
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5655
+#: vms-alpha.c:6062
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5657
+#: vms-alpha.c:6064
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5659
+#: vms-alpha.c:6066
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5661
+#: vms-alpha.c:6068
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5668
+#: vms-alpha.c:6075
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5670
+#: vms-alpha.c:6077
 msgid " LIB"
 msgstr " LIB"
 
-#: vms-alpha.c:5672
+#: vms-alpha.c:6079
 msgid " OVR"
 msgstr " OVR"
 
-#: vms-alpha.c:5676
+#: vms-alpha.c:6083
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5678
+#: vms-alpha.c:6085
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5680
+#: vms-alpha.c:6087
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5682
+#: vms-alpha.c:6089
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5684
+#: vms-alpha.c:6091
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5686
+#: vms-alpha.c:6093
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5688
+#: vms-alpha.c:6095
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5690
+#: vms-alpha.c:6097
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5692
+#: vms-alpha.c:6099
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5701
+#: vms-alpha.c:6108
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):\n"
 
-#: vms-alpha.c:5713
+#: vms-alpha.c:6121
 #, c-format
 msgid "  EGSD entry %2u (type: %u, len: %u): "
 msgstr "  â€žEGSDâ€œ ÑƒÐ½Ð¾Ñ� â€ž%2uâ€œ (Ð²Ñ€Ñ�Ñ‚Ð°ype: %u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u): "
 
-#: vms-alpha.c:5725
+#: vms-alpha.c:6127 vms-alpha.c:6378
+#, c-format
+msgid "   Error: length larger than remaining space in record\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð»Ð¾Ð³ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ñƒ Ñ�Ð½Ð¸Ð¼ÐºÑƒ\n"
+
+#: vms-alpha.c:6139
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr "PSC â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°\n"
 
-#: vms-alpha.c:5726 vms-alpha.c:5743
+#: vms-alpha.c:6140 vms-alpha.c:6157
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ : 2**%u\n"
 
-#: vms-alpha.c:5727 vms-alpha.c:5744
+#: vms-alpha.c:6141 vms-alpha.c:6158
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%04x"
 
-#: vms-alpha.c:5731
+#: vms-alpha.c:6145
 #, c-format
 msgid "   alloc (len): %u (0x%08x)\n"
 msgstr "   Ð´Ð¾Ð´ÐµÐ»Ð° (Ð´ÑƒÐ¶Ð¸Ð½Ð°): %u (0x%08x)\n"
 
-#: vms-alpha.c:5732 vms-alpha.c:5789 vms-alpha.c:5838
+#: vms-alpha.c:6146 vms-alpha.c:6203 vms-alpha.c:6252
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð²        : %.*s\n"
 
-#: vms-alpha.c:5742
+#: vms-alpha.c:6156
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr "SPSC â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° Ð´ÐµÑ™ÐµÐ½Ðµ Ñ�Ð»Ð¸ÐºÐµ\n"
 
-#: vms-alpha.c:5748
+#: vms-alpha.c:6162
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr "   Ð´Ð¾Ð´ÐµÐ»Ð° (Ð´ÑƒÐ¶Ð¸Ð½Ð°)  : %u (0x%08x)\n"
 
-#: vms-alpha.c:5749
+#: vms-alpha.c:6163
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ�Ð»Ð¸ÐºÐµ: 0x%08x\n"
 
-#: vms-alpha.c:5751
+#: vms-alpha.c:6165
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ�Ð¸Ð¼Ð²ÐµÐº-Ð° : 0x%08x\n"
 
-#: vms-alpha.c:5753
+#: vms-alpha.c:6167
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð²           : %.*s\n"
 
-#: vms-alpha.c:5766
+#: vms-alpha.c:6180
 #, c-format
 msgid "SYM - Global symbol definition\n"
 msgstr "SYM â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°\n"
 
-#: vms-alpha.c:5767 vms-alpha.c:5827 vms-alpha.c:5848 vms-alpha.c:5867
+#: vms-alpha.c:6181 vms-alpha.c:6241 vms-alpha.c:6262 vms-alpha.c:6281
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%04x"
 
-#: vms-alpha.c:5770
+#: vms-alpha.c:6184
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ°: 0x%08x\n"
 
-#: vms-alpha.c:5774
+#: vms-alpha.c:6188
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�Ð° ÐºÐ¾Ð´Ð°: 0x%08x\n"
 
-#: vms-alpha.c:5776
+#: vms-alpha.c:6190
 #, c-format
 msgid "   psect index for entry point : %u\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° Ð·Ð° Ñ‚Ð°Ñ‡ÐºÑƒ ÑƒÐ½Ð¾Ñ�Ð°: %u\n"
 
-#: vms-alpha.c:5779 vms-alpha.c:5855 vms-alpha.c:5874
+#: vms-alpha.c:6193 vms-alpha.c:6269 vms-alpha.c:6288
 #, c-format
 msgid "   psect index : %u\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° : %u\n"
 
-#: vms-alpha.c:5781 vms-alpha.c:5857 vms-alpha.c:5876
+#: vms-alpha.c:6195 vms-alpha.c:6271 vms-alpha.c:6290
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð²         : %.*s\n"
 
-#: vms-alpha.c:5788
+#: vms-alpha.c:6202
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM â€” Ð£Ð¿ÑƒÑ‚Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°\n"
 
-#: vms-alpha.c:5800
+#: vms-alpha.c:6214
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr "IDC â€” ÐŸÑ€Ð¾Ð²ÐµÑ€Ð° Ð´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐ°\n"
 
-#: vms-alpha.c:5801
+#: vms-alpha.c:6215
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%08x"
 
-#: vms-alpha.c:5805
+#: vms-alpha.c:6219
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð°ÑšÐµ Ð¸Ð´-Ð° : %x\n"
 
-#: vms-alpha.c:5807
+#: vms-alpha.c:6221
 #, c-format
 msgid "   error severity: %x\n"
 msgstr "   Ð¾Ð·Ð±Ð¸Ñ™Ð½Ð¾Ñ�Ñ‚ Ð³Ñ€ÐµÑˆÐºÐµ: %x\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:6224
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² ÐµÐ½Ñ‚Ð¸Ñ‚ÐµÑ‚Ð°  : %.*s\n"
 
-#: vms-alpha.c:5812
+#: vms-alpha.c:6226
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°  : %.*s\n"
 
-#: vms-alpha.c:5815
+#: vms-alpha.c:6229
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð¾Ð³ : 0x%08x\n"
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:6232
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   Ð°Ñ�ÐºÑ€Ð¸ ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ   : %.*s\n"
 
-#: vms-alpha.c:5826
+#: vms-alpha.c:6240
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° ÑƒÐ½Ð¸Ð²ÐµÑ€Ð·Ð°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°\n"
 
-#: vms-alpha.c:5830
+#: vms-alpha.c:6244
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: 0x%08x\n"
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6246
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr "   Ñ‚Ð°Ñ‡ÐºÐ° ÑƒÐ½Ð¾Ñ�Ð°: 0x%08x\n"
 
-#: vms-alpha.c:5834
+#: vms-alpha.c:6248
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   Ð¾Ð¿Ð¸Ñ�Ð½Ð¸Ðº Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð° : 0x%08x\n"
 
-#: vms-alpha.c:5836
+#: vms-alpha.c:6250
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ°: %u\n"
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6261
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°\n"
 
-#: vms-alpha.c:5851
+#: vms-alpha.c:6265
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   Ð²ÐµÐºÑ‚Ð¾Ñ€     : 0x%08x\n"
 
-#: vms-alpha.c:5853 vms-alpha.c:5872
+#: vms-alpha.c:6267 vms-alpha.c:6286
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ°: %u\n"
 
-#: vms-alpha.c:5866
+#: vms-alpha.c:6280
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr "SYMM â€” ÐžÐ¿ÑˆÑ‚Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ð¾Ð¼\n"
 
-#: vms-alpha.c:5870
+#: vms-alpha.c:6284
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr "   Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ðµ: 0x%08x\n"
 
-#: vms-alpha.c:5881
+#: vms-alpha.c:6295
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð² â€žegsdâ€œ ÑƒÐ½Ð¾Ñ� Ð²Ñ€Ñ�Ñ‚Ðµ %u\n"
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6330
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr "    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: 0x%08x\n"
 
-#: vms-alpha.c:5918
+#: vms-alpha.c:6334
 #, c-format
 msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
 msgstr "    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° 1: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ 1: 0x%08x %08x\n"
 
-#: vms-alpha.c:5922
+#: vms-alpha.c:6339
 #, c-format
 msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
 msgstr "    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° 2: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ 2: 0x%08x %08x\n"
 
-#: vms-alpha.c:5927
+#: vms-alpha.c:6345
 #, c-format
 msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
 msgstr "    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° 3: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ 3: 0x%08x %08x\n"
 
-#: vms-alpha.c:5932
+#: vms-alpha.c:6350
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "    Ð¾Ð¿ÑˆÑ‚Ð¸ Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:5942
+#: vms-alpha.c:6361
 #, c-format
 msgid "  %s (len=%u+%u):\n"
 msgstr "  %s (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u+%u):\n"
 
-#: vms-alpha.c:5957
+#: vms-alpha.c:6383
 #, c-format
 msgid "   (type: %3u, size: 4+%3u): "
 msgstr "   (Ð²Ñ€Ñ�Ñ‚Ð°: %3u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 4+%3u): "
 
-#: vms-alpha.c:5961
+#: vms-alpha.c:6387
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr "STA_GBL (Ð¾Ð¿ÑˆÑ‚Ð¾Ñ�Ñ‚ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°) %.*s\n"
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6391
 #, c-format
 msgid "STA_LW (stack longword) 0x%08x\n"
 msgstr "STA_LW (Ð´ÑƒÐ³Ð° Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°) 0x%08x\n"
 
-#: vms-alpha.c:5969
+#: vms-alpha.c:6395
 #, c-format
 msgid "STA_QW (stack quadword) 0x%08x %08x\n"
 msgstr "STA_QW (Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°) 0x%08x %08x\n"
 
-#: vms-alpha.c:5974
+#: vms-alpha.c:6400
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr "STA_PQ (Ð¾Ñ�Ð½Ð¾Ð²Ð° Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜)\n"
 
-#: vms-alpha.c:5975
+#: vms-alpha.c:6402
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr "    Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%08x %08x\n"
 
-#: vms-alpha.c:5981
+#: vms-alpha.c:6408
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr "STA_LI (Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ñ�Ñ‚ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)\n"
 
-#: vms-alpha.c:5984
+#: vms-alpha.c:6411
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr "STA_MOD (Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)\n"
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6414
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr "STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿ÐºÐ° Ð¿Ð¾Ñ€ÐµÑ’ÐµÑšÐ°)\n"
 
-#: vms-alpha.c:5991
+#: vms-alpha.c:6418
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð±Ð°Ñ˜Ñ‚)\n"
 
-#: vms-alpha.c:5994
+#: vms-alpha.c:6421
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ñ€ÐµÑ‡)\n"
 
-#: vms-alpha.c:5997
+#: vms-alpha.c:6424
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð´ÑƒÐ³Ñƒ Ñ€ÐµÑ‡)\n"
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6427
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾Ñ€ÐµÑ‡)\n"
 
-#: vms-alpha.c:6006
+#: vms-alpha.c:6433
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr "STO_IMMR (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð°Ð»Ð½Ð¾ Ð¿Ð¾Ð½Ð°Ð²Ñ™Ð°ÑšÐµ) %u Ð±Ð°Ñ˜Ñ‚Ð°\n"
 
-#: vms-alpha.c:6013
+#: vms-alpha.c:6440
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¾Ð¿ÑˆÑ‚Ðµ) %.*s\n"
 
-#: vms-alpha.c:6017
+#: vms-alpha.c:6444
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr "STO_CA (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ ÐºÐ¾Ð´Ð°) %.*s\n"
 
-#: vms-alpha.c:6021
+#: vms-alpha.c:6448
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr "STO_RB (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ñƒ Ð³Ñ€Ð°Ð½Ñƒ)\n"
 
-#: vms-alpha.c:6024
+#: vms-alpha.c:6451
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr "STO_AB (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ñƒ Ð³Ñ€Ð°Ð½Ñƒ)\n"
 
-#: vms-alpha.c:6027
+#: vms-alpha.c:6454
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr "STO_OFF (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº)\n"
 
-#: vms-alpha.c:6033
+#: vms-alpha.c:6460
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr "STO_IMM (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð°Ð»Ð½Ð¾) %u Ð±Ð°Ñ˜Ñ‚Ð°\n"
 
-#: vms-alpha.c:6040
+#: vms-alpha.c:6467
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr "STO_GBL_LW (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¾Ð¿ÑˆÑ‚Ñƒ Ð´ÑƒÐ³Ñƒ Ñ€ÐµÑ‡) %.*s\n"
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6471
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr "STO_OFF (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð›ÐŸ Ñ�Ð° Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ�Ð¾Ð¼ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿ÐºÐ°)\n"
 
-#: vms-alpha.c:6047
+#: vms-alpha.c:6474
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr "STO_BR_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ�Ñ‚ Ð³Ñ€Ð°Ð½Ðµ) *ÑƒÑ€Ð°Ð´Ð¸Ñ‚Ð¸*\n"
 
-#: vms-alpha.c:6050
+#: vms-alpha.c:6477
 #, c-format
 msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
 msgstr "STO_BR_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð³Ñ€Ð°Ð½Ðµ) *ÑƒÑ€Ð°Ð´Ð¸Ñ‚Ð¸*\n"
 
-#: vms-alpha.c:6054
+#: vms-alpha.c:6481
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr "OPR_NOP (Ð±ÐµÐ· Ñ€Ð°Ð´ÑšÐµ)\n"
 
-#: vms-alpha.c:6057
+#: vms-alpha.c:6484
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr "OPR_ADD (Ð·Ð±Ñ€Ð°Ñ˜Ð°)\n"
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6487
 #, c-format
-msgid "OPR_SUB (substract)\n"
+msgid "OPR_SUB (subtract)\n"
 msgstr "OPR_SUB (Ð¾Ð´ÑƒÐ·Ð¸Ð¼Ð°)\n"
 
-#: vms-alpha.c:6063
+#: vms-alpha.c:6490
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (Ð¼Ð½Ð¾Ð¶Ð¸)\n"
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6493
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (Ð´ÐµÐ»Ð¸)\n"
 
-#: vms-alpha.c:6069
+#: vms-alpha.c:6496
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr "OPR_AND (Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¾ Ð˜)\n"
 
-#: vms-alpha.c:6072
+#: vms-alpha.c:6499
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr "OPR_IOR (Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¾ ÑƒÐºÑ™ÑƒÑ‡Ð¸Ð²Ð¾ Ð˜Ð›Ð˜)\n"
 
-#: vms-alpha.c:6075
+#: vms-alpha.c:6502
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr "OPR_EOR (Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¾ Ð¸Ñ�ÐºÑ™ÑƒÑ‡Ð¸Ð²Ð¾ Ð˜Ð›Ð˜)\n"
 
-#: vms-alpha.c:6078
+#: vms-alpha.c:6505
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (Ð½ÐµÐ³Ð°Ñ†Ð¸Ñ˜Ð°)\n"
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6508
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (ÐºÐ¾Ð¼Ð¿Ð»ÐµÐ¼ÐµÐ½Ñ‚)\n"
 
-#: vms-alpha.c:6084
+#: vms-alpha.c:6511
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (ÑƒÐ¼ÐµÑ›Ðµ Ð¿Ð¾Ñ™Ðµ)\n"
 
-#: vms-alpha.c:6087
+#: vms-alpha.c:6514
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (Ð°Ñ€Ð¸Ñ‚Ð¼ÐµÑ‚Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ð¼Ð°Ðº)\n"
 
-#: vms-alpha.c:6090
+#: vms-alpha.c:6517
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (Ð¿Ð¾Ð¼Ð°Ðº Ð±ÐµÐ· Ð·Ð½Ð°ÐºÐ°)\n"
 
-#: vms-alpha.c:6093
+#: vms-alpha.c:6520
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (Ð¾ÐºÑ€ÐµÑ›Ðµ)\n"
 
-#: vms-alpha.c:6096
+#: vms-alpha.c:6523
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (Ð±Ð¸Ñ€Ð°)\n"
 
-#: vms-alpha.c:6099
+#: vms-alpha.c:6526
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr "OPR_REDEF (Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ‚ÐµÐºÑƒÑ›Ðµ Ð»Ð¾ÐºÐ°Ñ†Ð¸Ñ˜Ðµ)\n"
 
-#: vms-alpha.c:6102
+#: vms-alpha.c:6529
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr "OPR_REDEF (Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ñ�Ñ‚)\n"
 
-#: vms-alpha.c:6106
+#: vms-alpha.c:6533
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr "STC_LP (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¿Ð°Ñ€ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ° ÑƒÑ�Ð»Ð¾Ð²Ð°)\n"
 
-#: vms-alpha.c:6110
+#: vms-alpha.c:6537
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr "STC_LP_PSB (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¿Ð°Ñ€ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ° ÑƒÑ�Ð»Ð¾Ð²Ð° + Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6111
+#: vms-alpha.c:6539
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°Ðº: %.*s\n"
 
-#: vms-alpha.c:6114
+#: vms-alpha.c:6542
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ�: %.*s\n"
 
-#: vms-alpha.c:6117
+#: vms-alpha.c:6545
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ�Ñ‚ ÑƒÑ�Ð»Ð¾Ð²Ð°)\n"
 
-#: vms-alpha.c:6118
+#: vms-alpha.c:6547
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¾Ð¿ÑˆÑ‚Ðµ: %.*s\n"
 
-#: vms-alpha.c:6122
+#: vms-alpha.c:6551
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr "STC_GCA (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ ÐºÐ¾Ð´Ð° ÑƒÑ�Ð»Ð¾Ð²Ð°)\n"
 
-#: vms-alpha.c:6123
+#: vms-alpha.c:6553
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð½Ð°Ð·Ð¸Ð² Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿ÐºÐ°: %.*s\n"
 
-#: vms-alpha.c:6127
+#: vms-alpha.c:6557
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr "STC_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÑ�Ð»Ð¾Ð²Ð°)\n"
 
-#: vms-alpha.c:6129
+#: vms-alpha.c:6560
 #, c-format
 msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%08x %08x\n"
 
-#: vms-alpha.c:6136
+#: vms-alpha.c:6567
 #, c-format
 msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
 msgstr "STC_NOP_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žNOPâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸)\n"
 
-#: vms-alpha.c:6140
+#: vms-alpha.c:6571
 #, c-format
 msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
 msgstr "STC_NOP_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žNOPâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¿-Ð¾Ð´ÐµÑ™ÐºÑƒ + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜)\n"
 
-#: vms-alpha.c:6144
+#: vms-alpha.c:6575
 #, c-format
 msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
 msgstr "STC_BSR_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žBSRâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸)\n"
 
-#: vms-alpha.c:6148
+#: vms-alpha.c:6579
 #, c-format
 msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
 msgstr "STC_BSR_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žBSRâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¿-Ð¾Ð´ÐµÑ™ÐºÑƒ + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜)\n"
 
-#: vms-alpha.c:6152
+#: vms-alpha.c:6583
 #, c-format
 msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
 msgstr "STC_LDA_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žLDAâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸)\n"
 
-#: vms-alpha.c:6156
+#: vms-alpha.c:6587
 #, c-format
 msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
 msgstr "STC_LDA_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žLDAâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¿-Ð¾Ð´ÐµÑ™ÐºÑƒ + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜)\n"
 
-#: vms-alpha.c:6160
+#: vms-alpha.c:6591
 #, c-format
 msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
 msgstr "STC_BOH_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žBOHâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸)\n"
 
-#: vms-alpha.c:6164
+#: vms-alpha.c:6595
 #, c-format
 msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
 msgstr "STC_BOH_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žBOHâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¿-Ð¾Ð´ÐµÑ™ÐºÑƒ + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜)\n"
 
-#: vms-alpha.c:6169
+#: vms-alpha.c:6600
 #, c-format
 msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
 msgstr "STC_NBH_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° ÑƒÑ�Ð»Ð¾Ð² Ð¸Ð»Ð¸ Ð½Ð°Ñ˜Ð°Ð²Ñƒ Ð½Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸)\n"
 
-#: vms-alpha.c:6173
+#: vms-alpha.c:6604
 #, c-format
 msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
 msgstr "STC_NBH_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° ÑƒÑ�Ð»Ð¾Ð² Ð¸Ð»Ð¸ Ð½Ð°Ñ˜Ð°Ð²Ñƒ Ð½Ð° Ð¿-Ð¾Ð´ÐµÑ™ÐºÑƒ + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜)\n"
 
-#: vms-alpha.c:6177
+#: vms-alpha.c:6608
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr "CTL_SETRB (Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°)\n"
 
-#: vms-alpha.c:6183
+#: vms-alpha.c:6614
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr "CTL_AUGRB (Ð¿Ð¾Ð²ÐµÑ›Ð°Ð²Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°) %u\n"
 
-#: vms-alpha.c:6187
+#: vms-alpha.c:6618
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ Ð¼ÐµÑ�Ñ‚Ð¾)\n"
 
-#: vms-alpha.c:6190
+#: vms-alpha.c:6621
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð° Ð¼ÐµÑ�Ñ‚Ð¾)\n"
 
-#: vms-alpha.c:6193
+#: vms-alpha.c:6624
 #, c-format
 msgid "CTL_STKDL (stack defined location)\n"
 msgstr "CTL_STKDL (Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ¾Ð¼ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð¾)\n"
 
-#: vms-alpha.c:6196 vms-alpha.c:6610
+#: vms-alpha.c:6627 vms-alpha.c:7051 vms-alpha.c:7177
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð¾*\n"
 
-#: vms-alpha.c:6226 vms-alpha.c:6265
+#: vms-alpha.c:6657 vms-alpha.c:6696
 #, c-format
 msgid "cannot read GST record length\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð´ÑƒÐ¶Ð¸Ð½Ñƒ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6247
+#: vms-alpha.c:6678
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€žEMHâ€œ Ñƒ Ð¿Ñ€Ð²Ð¾Ð¼ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ\n"
 
-#: vms-alpha.c:6273
+#: vms-alpha.c:6704
 #, c-format
 msgid "cannot read GST record header\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
 
-#: vms-alpha.c:6286
+#: vms-alpha.c:6717
 #, c-format
 msgid " corrupted GST\n"
 msgstr " Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ â€žGSTâ€œ\n"
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6725
 #, c-format
 msgid "cannot read GST record\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�\n"
 
-#: vms-alpha.c:6323
+#: vms-alpha.c:6754
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr " Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð² â€žEOBJâ€œ ÑƒÐ½Ð¾Ñ� Ð²Ñ€Ñ�Ñ‚Ðµ %u\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6778
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr "  Ð±Ñ€Ð¾Ñ˜ Ð±Ð¸Ñ‚Ð°: %u, Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6359
+#: vms-alpha.c:6792
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr "   Ð¼Ð°Ð¿Ð° Ð±Ð¸Ñ‚Ð°: 0x%08x (ÑƒÐºÑƒÐ¿Ð½Ð¾: %u):\n"
 
-#: vms-alpha.c:6366
+#: vms-alpha.c:6799
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6391
+#: vms-alpha.c:6825
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr "  Ñ�Ð»Ð¸ÐºÐ° %u (%u ÑƒÐ½Ð¾Ñ�Ð°)\n"
 
-#: vms-alpha.c:6396
+#: vms-alpha.c:6831
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%08x, Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: 0x%08x\n"
 
-#: vms-alpha.c:6417
+#: vms-alpha.c:6853
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr "  Ñ�Ð»Ð¸ÐºÐ° %u (%u ÑƒÐ½Ð¾Ñ�Ð°), Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜:\n"
 
-#: vms-alpha.c:6424
+#: vms-alpha.c:6860
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6546
+#: vms-alpha.c:6982
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr "64 Ð±Ð¸Ñ‚Ð° *Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾*\n"
 
-#: vms-alpha.c:6550
+#: vms-alpha.c:6987
 #, c-format
 msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
 msgstr "ÐºÐ»Ð°Ñ�Ð°: %u, Ð´-Ð²Ñ€Ñ�Ñ‚Ð°: %u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡: 0x%08x\n"
 
-#: vms-alpha.c:6561
+#: vms-alpha.c:6998
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr "Ð½Ð¸Ð· â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð½ÐµÐ¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð½\n"
 
-#: vms-alpha.c:6565
+#: vms-alpha.c:7003
 #, c-format
 msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
 msgstr "Ð´Ð¸Ð¼Ñ†Ñ‚: %u, Ð°-Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: 0x%02x, Ñ†Ð¸Ñ„Ñ€Ðµ: %u, Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°: %u\n"
 
-#: vms-alpha.c:6569
+#: vms-alpha.c:7008
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr "Ð°Ñ€-Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6573
+#: vms-alpha.c:7012
 #, c-format
 msgid "Strides:\n"
 msgstr "ÐšÐ¾Ñ€Ð°Ñ†Ð¸:\n"
 
-#: vms-alpha.c:6578
-#, c-format
-msgid "[%u]: %u\n"
-msgstr "[%u]: %u\n"
-
-#: vms-alpha.c:6583
+#: vms-alpha.c:7022
 #, c-format
 msgid "Bounds:\n"
 msgstr "Ð“Ñ€Ð°Ð½Ð¸Ñ†Ðµ:\n"
 
-#: vms-alpha.c:6588
+#: vms-alpha.c:7028
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr "[%u]: Ð”Ð¾ÑšÐ°: %u, Ð³Ð¾Ñ€ÑšÐ°: %u\n"
 
-#: vms-alpha.c:6600
+#: vms-alpha.c:7040
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr "Ð½Ð¸Ñ�ÐºÐ° Ð±Ð¸Ñ‚Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð°\n"
 
-#: vms-alpha.c:6604
+#: vms-alpha.c:7045
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "Ð¾Ñ�Ð½Ð¾Ð²Ð°: %u, Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜: %u\n"
 
-#: vms-alpha.c:6624
+#: vms-alpha.c:7066
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr "Ð²-Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: 0x%02x, Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: 0x%08x "
 
-#: vms-alpha.c:6630
+#: vms-alpha.c:7072
 #, c-format
 msgid "(no value)\n"
 msgstr "(Ð±ÐµÐ· Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸)\n"
 
-#: vms-alpha.c:6633
+#: vms-alpha.c:7075
 #, c-format
 msgid "(not active)\n"
 msgstr "(Ð½Ð¸Ñ˜Ðµ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾)\n"
 
-#: vms-alpha.c:6636
+#: vms-alpha.c:7078
 #, c-format
 msgid "(not allocated)\n"
 msgstr "(Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¾)\n"
 
-#: vms-alpha.c:6639
+#: vms-alpha.c:7081
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(Ð¾Ð¿Ð¸Ñ�Ð½Ð¸Ðº)\n"
 
-#: vms-alpha.c:6643
+#: vms-alpha.c:7085
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(Ð¿Ñ€Ð°Ñ‚ÐµÑ›Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚)\n"
 
-#: vms-alpha.c:6646
+#: vms-alpha.c:7088
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ˜Ð° Ñ�Ð»ÐµÐ´ÐµÑ›Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸)\n"
 
-#: vms-alpha.c:6649
+#: vms-alpha.c:7091
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr "(Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð±Ð¸Ñ‚Ð° %u)\n"
 
-#: vms-alpha.c:6652
+#: vms-alpha.c:7095
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr "(Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€: %u, Ñ€Ð°Ð·Ð¼ÐµÑˆÑ‚Ð°Ñ˜: %u, Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾: %u, Ð²Ñ€Ñ�Ñ‚Ð°: "
 
-#: vms-alpha.c:6659
+#: vms-alpha.c:7102
 msgid "literal"
 msgstr "Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ñ�Ñ‚"
 
-#: vms-alpha.c:6662
+#: vms-alpha.c:7105
 msgid "address"
 msgstr "Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: vms-alpha.c:6665
+#: vms-alpha.c:7108
 msgid "desc"
 msgstr "Ð¾Ð¿Ð¸Ñ�"
 
-#: vms-alpha.c:6668
+#: vms-alpha.c:7111
 msgid "reg"
 msgstr "Ñ€ÐµÐ³"
 
-#: vms-alpha.c:6743
+#: vms-alpha.c:7128
+#, c-format
+msgid "len: %2u, kind: %2u "
+msgstr "Ð´ÑƒÐ¶Ð¸Ð½Ð°: %2u, Ð²Ñ€Ñ�Ñ‚Ð°: %2u "
+
+#: vms-alpha.c:7134
+#, c-format
+msgid "atomic, type=0x%02x %s\n"
+msgstr "Ð°Ñ‚Ð¾Ð¼Ñ�ÐºÐ¸, Ð²Ñ€Ñ�Ñ‚Ð°=0x%02x %s\n"
+
+#: vms-alpha.c:7138
+#, c-format
+msgid "indirect, defined at 0x%08x\n"
+msgstr "Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ð½Ð¾, Ð¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ð½Ð° 0x%08x\n"
+
+#: vms-alpha.c:7142
+#, c-format
+msgid "typed pointer\n"
+msgstr "ÑƒÐºÑƒÑ†Ð°Ð½Ð¸ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡\n"
+
+#: vms-alpha.c:7146
+#, c-format
+msgid "pointer\n"
+msgstr "Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡\n"
+
+#: vms-alpha.c:7154
+#, c-format
+msgid "array, dim: %u, bitmap: "
+msgstr "Ð½Ð¸Ð·, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð±Ð¸Ñ‚Ð¼Ð°Ð¿Ð°: "
+
+#: vms-alpha.c:7161
+#, c-format
+msgid "array descriptor:\n"
+msgstr "Ð¾Ð¿Ð¸Ñ�Ð½Ð¸Ðº Ð½Ð¸Ð·Ð°:\n"
+
+#: vms-alpha.c:7168
+#, c-format
+msgid "type spec for element:\n"
+msgstr "Ð¾Ð´Ñ€ÐµÐ´Ð±Ð° Ð²Ñ€Ñ�Ñ‚Ðµ Ð·Ð° ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚:\n"
+
+#: vms-alpha.c:7170
+#, c-format
+msgid "type spec for subscript %u:\n"
+msgstr "Ð¾Ð´Ñ€ÐµÐ´Ð±Ð° Ð²Ñ€Ñ�Ñ‚Ðµ Ð·Ð° Ð¿Ð¾Ð´Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñƒ â€ž%uâ€œ:\n"
+
+#: vms-alpha.c:7188
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr "Ð¢Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°:\n"
 
-#: vms-alpha.c:6754
+#: vms-alpha.c:7199
 #, c-format
 msgid "cannot read DST header\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žGSTâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ\n"
 
-#: vms-alpha.c:6759
+#: vms-alpha.c:7205
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr " Ð²Ñ€Ñ�Ñ‚Ð°: %3u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %3u (Ð¿Ñ€Ð¸ 0x%08x): "
 
-#: vms-alpha.c:6773
+#: vms-alpha.c:7219
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDSTâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»\n"
 
-#: vms-alpha.c:6816
+#: vms-alpha.c:7262
 #, c-format
 msgid "standard data: %s\n"
 msgstr "Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸: %s\n"
 
-#: vms-alpha.c:6819 vms-alpha.c:6903
+#: vms-alpha.c:7265 vms-alpha.c:7353
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6826
+#: vms-alpha.c:7272
 #, c-format
 msgid "modbeg\n"
 msgstr "Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð¼Ð¾Ð´ÑƒÐ»Ð°\n"
 
-#: vms-alpha.c:6827
+#: vms-alpha.c:7274
 #, c-format
 msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
 msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %d, Ñ˜ÐµÐ·Ð¸Ðº: %u, Ð²ÐµÑ›Ð¸: %u, Ð¼Ð°ÑšÐ¸: %u\n"
 
-#: vms-alpha.c:6833 vms-alpha.c:7099
+#: vms-alpha.c:7280 vms-alpha.c:7554
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð°           : %.*s\n"
 
-#: vms-alpha.c:6836
+#: vms-alpha.c:7283
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð»Ð°Ñ†  : %.*s\n"
 
-#: vms-alpha.c:6841
+#: vms-alpha.c:7288
 #, c-format
 msgid "modend\n"
 msgstr "ÐºÑ€Ð°Ñ˜ Ð¼Ð¾Ð´ÑƒÐ»Ð°\n"
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7295
 msgid "rtnbeg\n"
 msgstr "Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ñ€ÑƒÑ‚Ð¸Ð½Ðµ\n"
 
-#: vms-alpha.c:6849
+#: vms-alpha.c:7297
 #, c-format
 msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
 msgstr "    Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %u, Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð¿Ð´-Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6854
+#: vms-alpha.c:7302
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr "    Ð½Ð°Ð·Ð¸Ð² Ñ€ÑƒÑ‚Ð¸Ð½Ðµ : %.*s\n"
 
-#: vms-alpha.c:6862
+#: vms-alpha.c:7310
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr "ÐºÑ€Ð°Ñ˜ Ñ€ÑƒÑ‚Ð¸Ð½Ðµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° 0x%08x\n"
 
-#: vms-alpha.c:6870
+#: vms-alpha.c:7318
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr "Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð±ÐºÐ¿Ñ‚ Ð°Ð´Ñ€ÐµÑ�Ð° 0x%08x\n"
 
-#: vms-alpha.c:6878
+#: vms-alpha.c:7327
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr "ÐµÐ¿Ð¸Ð»Ð¾Ð³: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %u, Ð±Ñ€Ð¾Ñ˜: %u\n"
 
-#: vms-alpha.c:6887
+#: vms-alpha.c:7337
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr "Ð±Ð»Ðº Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº: Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6896
+#: vms-alpha.c:7346
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr "Ð±Ð»Ðº ÐºÑ€Ð°Ñ˜: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6902
+#: vms-alpha.c:7352
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "Ð¾Ð´Ñ€ÐµÐ´Ð±Ð° Ð²Ñ€Ñ�Ñ‚Ðµ (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:6909
+#: vms-alpha.c:7359
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr "Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²ÐºÐµ, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6918
+#: vms-alpha.c:7368
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr "Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð°: Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7370
+#, c-format
+msgid "    len: %u bits\n"
+msgstr "    Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u Ð±Ð¸Ñ‚Ð°\n"
+
+#: vms-alpha.c:7375
 #, c-format
 msgid "recend\n"
 msgstr "ÐºÑ€Ð°Ñ˜ Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7379
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr "Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ°, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6932
+#: vms-alpha.c:7383
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr "ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð¸ Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ°, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6936
+#: vms-alpha.c:7387
 #, c-format
 msgid "enumend\n"
 msgstr "ÐºÑ€Ð°Ñ˜ Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ°\n"
 
-#: vms-alpha.c:6953
+#: vms-alpha.c:7392
+#, c-format
+msgid "label, name: %.*s\n"
+msgstr "Ð½Ð°Ñ‚Ð¿Ð¸Ñ�, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
+
+#: vms-alpha.c:7394
+#, c-format
+msgid "    address: 0x%08x\n"
+msgstr "    Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x\n"
+
+#: vms-alpha.c:7404
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "Ð½ÐµÐ¿Ñ€ÐµÐºÐ¸Ð´Ð½Ð¸ Ð¾Ð¿Ñ�ÐµÐ³ (Ð±Ñ€.: %u)\n"
 
-#: vms-alpha.c:6955
+#: vms-alpha.c:7407
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u\n"
 
-#: vms-alpha.c:6965
+#: vms-alpha.c:7417
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð°  (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:6982
+#: vms-alpha.c:7434
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:6989
+#: vms-alpha.c:7441
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:6995
+#: vms-alpha.c:7447
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7001
+#: vms-alpha.c:7453
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7007
+#: vms-alpha.c:7459
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7012
+#: vms-alpha.c:7464
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7017
+#: vms-alpha.c:7469
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7022
+#: vms-alpha.c:7474
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7026
+#: vms-alpha.c:7478
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7031
+#: vms-alpha.c:7483
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7033
+#: vms-alpha.c:7485
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7038
+#: vms-alpha.c:7490
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7040
+#: vms-alpha.c:7492
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7046
+#: vms-alpha.c:7498
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "delta pc +%-4d"
 
-#: vms-alpha.c:7049
+#: vms-alpha.c:7502
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x Ñ€ÐµÐ´: %5u\n"
 
-#: vms-alpha.c:7054
+#: vms-alpha.c:7507
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%uâ€œ\n"
 
-#: vms-alpha.c:7069
+#: vms-alpha.c:7522
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "Ð¸Ð·Ð²Ð¾Ñ€ (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7083
+#: vms-alpha.c:7537
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
 msgstr "   declfile: Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %u, Ð¸Ð´ Ð¿Ð¾Ñ™Ð°: %u\n"
 
-#: vms-alpha.c:7087
+#: vms-alpha.c:7542
 #, c-format
 msgid "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 msgstr "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 
-#: vms-alpha.c:7096
+#: vms-alpha.c:7551
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ: %.*s\n"
 
-#: vms-alpha.c:7105
+#: vms-alpha.c:7560
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7110 vms-alpha.c:7115
+#: vms-alpha.c:7565 vms-alpha.c:7570
 #, c-format
 msgid "   setrec %u\n"
 msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7120 vms-alpha.c:7125
+#: vms-alpha.c:7575 vms-alpha.c:7580
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7130 vms-alpha.c:7135
+#: vms-alpha.c:7585 vms-alpha.c:7590
 #, c-format
 msgid "   deflines %u\n"
 msgstr "   deflines %u\n"
 
-#: vms-alpha.c:7139
+#: vms-alpha.c:7594
 #, c-format
 msgid "   formfeed\n"
 msgstr "   formfeed\n"
 
-#: vms-alpha.c:7143
+#: vms-alpha.c:7598
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%uâ€œ\n"
 
-#: vms-alpha.c:7155
+#: vms-alpha.c:7610
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "*Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð´Ñ�Ñ‚ Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ\n"
 
-#: vms-alpha.c:7187
+#: vms-alpha.c:7642
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHDâ€œ\n"
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7646
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr "EIHD: (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð±Ñ€Ð¾Ñ˜ Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°: %u)\n"
 
-#: vms-alpha.c:7193
+#: vms-alpha.c:7650
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " Ð²ÐµÑ›Ð¸ Ð¸Ð´: %u, Ð¼Ð°ÑšÐ¸ Ð¸Ð´: %u\n"
 
-#: vms-alpha.c:7201
+#: vms-alpha.c:7658
 msgid "executable"
 msgstr "Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð°"
 
-#: vms-alpha.c:7204
+#: vms-alpha.c:7661
 msgid "linkable image"
 msgstr "Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð° Ñ�Ð»Ð¸ÐºÐ°"
 
-#: vms-alpha.c:7210
+#: vms-alpha.c:7668
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð»Ð¸ÐºÐµ: %u (%s)"
 
-#: vms-alpha.c:7216
+#: vms-alpha.c:7674
 msgid "native"
 msgstr "Ð¸Ð·Ð²Ð¾Ñ€Ð½Ð°"
 
-#: vms-alpha.c:7219
+#: vms-alpha.c:7677
 msgid "CLI"
-msgstr "ÐšÐ›Ð˜"
+msgstr "CLI"
 
-#: vms-alpha.c:7225
+#: vms-alpha.c:7684
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð°: %u (%s)\n"
 
-#: vms-alpha.c:7231
+#: vms-alpha.c:7691
 #, c-format
 msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 msgstr " Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð¸: Ð¸Ñ�Ð´: %u, Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾: %u, Ð¿Ñ€Ð¾Ñ‡ Ñ�Ð¸Ð¼Ð±: %u, Ð¸Ð´ Ñ�Ð»Ð¸ÐºÐµ: %u, Ð·Ð°ÐºÑ€Ð¿Ð°: %u\n"
 
-#: vms-alpha.c:7235
+#: vms-alpha.c:7695
 #, c-format
 msgid " fixup info rva: "
 msgstr " Ð¿Ð¾Ð¿Ñ€Ð°Ð²ÐºÐ° Ð¸Ð½Ñ„Ð¾ Ñ€Ð²Ð°: "
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7697
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", Ð²ÐµÐºÑ‚Ð¾Ñ€ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€Ð²Ð°: "
 
-#: vms-alpha.c:7240
+#: vms-alpha.c:7700
 #, c-format
 msgid ""
 "\n"
@@ -5615,624 +7605,803 @@ msgstr ""
 "\n"
 " Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ð·Ð° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ðµ: %u\n"
 
-#: vms-alpha.c:7244
+#: vms-alpha.c:7705
 #, c-format
 msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
 msgstr " Ð±Ñ€Ð¾Ñ˜ Ð£/Ð˜ Ñ�Ð»Ð¸ÐºÐµ: %u, Ð±Ñ€. ÐºÐ°Ð½Ð°Ð»Ð°: %u, Ñ€ÐµÐº Ð¿Ñ€Ð¸: %08x%08x\n"
 
-#: vms-alpha.c:7250
+#: vms-alpha.c:7711
 #, c-format
 msgid " linker flags: %08x:"
 msgstr " Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°: %08x:"
 
-#: vms-alpha.c:7280
+#: vms-alpha.c:7742
 #, c-format
 msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 msgstr " ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ: 0x%08x, Ð²ÐµÑ€Ð·Ð¸Ñ˜Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð°: 0x%08x, Ð¿Ð¾ÐºÐ»Ð¾Ð¿Ñ™ÐµÐ½Ð¾ ÐºÑ‚Ñ€Ð»: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¸Ð¼Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°: %u\n"
 
-#: vms-alpha.c:7286
+#: vms-alpha.c:7748
 #, c-format
 msgid " BPAGE: %u"
 msgstr " Ð‘Ð¡Ð¢Ð Ð�Ð�Ð˜Ð¦Ð�: %u"
 
-#: vms-alpha.c:7292
+#: vms-alpha.c:7755
 #, c-format
 msgid ", ext fixup offset: %u, no_opt psect off: %u"
 msgstr ", Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ�Ð¿Ð¾Ñ™Ð½Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° â€žno_optâ€œ-Ð°: %u"
 
-#: vms-alpha.c:7295
+#: vms-alpha.c:7758
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", Ð°Ð»Ð¸Ñ˜Ð°Ñ�: %u\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7766
 #, c-format
 msgid "system version array information:\n"
 msgstr "Ð½Ð¸Ð· Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ðµ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð°:\n"
 
-#: vms-alpha.c:7307
+#: vms-alpha.c:7770
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHVNâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ\n"
 
-#: vms-alpha.c:7317
+#: vms-alpha.c:7780
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHVNâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ\n"
 
-#: vms-alpha.c:7320
+#: vms-alpha.c:7783
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7324
+#: vms-alpha.c:7787
 msgid "BASE_IMAGE       "
 msgstr "Ð¡Ð›Ð˜ÐšÐ�_ÐžÐ¡Ð�ÐžÐ’Ð•       "
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7790
 msgid "MEMORY_MANAGEMENT"
 msgstr "Ð£ÐŸÐ Ð�Ð’Ð‰Ð�ÐŠÐ•_ÐœÐ•ÐœÐžÐ Ð˜ÐˆÐžÐœ"
 
-#: vms-alpha.c:7330
+#: vms-alpha.c:7793
 msgid "IO               "
 msgstr "Ð£Ð˜               "
 
-#: vms-alpha.c:7333
+#: vms-alpha.c:7796
 msgid "FILES_VOLUMES    "
 msgstr "Ð’ÐžÐ›Ð£ÐœÐ•Ð�Ð˜_Ð”Ð�Ð¢ÐžÐ¢Ð•ÐšÐ�    "
 
-#: vms-alpha.c:7336
+#: vms-alpha.c:7799
 msgid "PROCESS_SCHED    "
 msgstr "Ð—Ð�ÐšÐ�Ð—Ð�Ð�Ð˜_ÐŸÐ ÐžÐ¦Ð•Ð¡Ð˜    "
 
-#: vms-alpha.c:7339
+#: vms-alpha.c:7802
 msgid "SYSGEN           "
 msgstr "Ð¡Ð¢Ð’Ð�Ð Ð�ÐŠÐ•_Ð¡Ð˜Ð¡Ð¢Ð•ÐœÐ�           "
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7805
 msgid "CLUSTERS_LOCKMGR "
 msgstr "ÐœÐ“Ð Ð—Ð�ÐšÐ‰Ð£Ð§Ð�Ð’Ð�ÐŠÐ•_ÐšÐ›Ð�Ð¡Ð¢Ð•Ð Ð� "
 
-#: vms-alpha.c:7345
+#: vms-alpha.c:7808
 msgid "LOGICAL_NAMES    "
 msgstr "Ð›ÐžÐ“Ð˜Ð§ÐšÐ˜_Ð�Ð�Ð—Ð˜Ð’Ð˜    "
 
-#: vms-alpha.c:7348
+#: vms-alpha.c:7811
 msgid "SECURITY         "
 msgstr "Ð‘Ð•Ð—Ð‘Ð•Ð”Ð�ÐžÐ¡Ð¢         "
 
-#: vms-alpha.c:7351
+#: vms-alpha.c:7814
 msgid "IMAGE_ACTIVATOR  "
 msgstr "ÐŸÐžÐšÐ Ð•Ð¢Ð�Ð§_Ð¡Ð›Ð˜ÐšÐ•  "
 
-#: vms-alpha.c:7354
+#: vms-alpha.c:7817
 msgid "NETWORKS         "
 msgstr "ÐœÐ Ð•Ð–Ð•         "
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7820
 msgid "COUNTERS         "
 msgstr "Ð‘Ð ÐžÐˆÐ�Ð§Ð˜         "
 
-#: vms-alpha.c:7360
+#: vms-alpha.c:7823
 msgid "STABLE           "
 msgstr "Ð¡Ð¢Ð�Ð‘Ð˜Ð›Ð�Ðž           "
 
-#: vms-alpha.c:7363
+#: vms-alpha.c:7826
 msgid "MISC             "
 msgstr "Ð Ð�Ð—Ð�Ðž             "
 
-#: vms-alpha.c:7366
+#: vms-alpha.c:7829
 msgid "CPU              "
-msgstr "Ð¦ÐŸÐ£              "
+msgstr "Ð¦ÐŸÐˆ              "
 
-#: vms-alpha.c:7369
+#: vms-alpha.c:7832
 msgid "VOLATILE         "
 msgstr "ÐŸÐ ÐžÐœÐ•Ð�Ð‰Ð˜Ð’Ðž         "
 
-#: vms-alpha.c:7372
+#: vms-alpha.c:7835
 msgid "SHELL            "
 msgstr "Ð¨ÐšÐžÐ‰ÐšÐ�            "
 
-#: vms-alpha.c:7375
+#: vms-alpha.c:7838
 msgid "POSIX            "
 msgstr "ÐŸÐžÐ¡Ð˜ÐšÐ¡            "
 
-#: vms-alpha.c:7378
+#: vms-alpha.c:7841
 msgid "MULTI_PROCESSING "
 msgstr "Ð’Ð˜Ð¨Ð•_ÐžÐ‘Ð Ð�Ð”Ð�Ðž "
 
-#: vms-alpha.c:7381
+#: vms-alpha.c:7844
 msgid "GALAXY           "
 msgstr "Ð“Ð�Ð›Ð�ÐšÐ¡Ð˜ÐˆÐ�           "
 
-#: vms-alpha.c:7384
+#: vms-alpha.c:7847
 msgid "*unknown*        "
 msgstr "*Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾*        "
 
-#: vms-alpha.c:7387
-#, c-format
-msgid ": %u.%u\n"
-msgstr ": %u.%u\n"
-
-#: vms-alpha.c:7400 vms-alpha.c:7659
+#: vms-alpha.c:7863 vms-alpha.c:8137
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHAâ€œ\n"
 
-#: vms-alpha.c:7403
+#: vms-alpha.c:7866
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr "Ð�ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð°ÑšÐµ Ñ�Ð»Ð¸ÐºÐµ:  (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°=%u)\n"
 
-#: vms-alpha.c:7405
+#: vms-alpha.c:7869
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr " ÐŸÑ€Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7408
+#: vms-alpha.c:7873
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr " Ð”Ñ€ÑƒÐ³Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7411
+#: vms-alpha.c:7877
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr " Ð¢Ñ€ÐµÑ›Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:7881
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr " Ð§ÐµÑ‚Ð²Ñ€Ñ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7417
+#: vms-alpha.c:7885
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr " Ð”ÐµÑ™ÐµÐ½Ð° Ñ�Ð»Ð¸ÐºÐ°   : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7428
+#: vms-alpha.c:7896
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHIâ€œ\n"
 
-#: vms-alpha.c:7431
+#: vms-alpha.c:7900
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr "ÐŸÑ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°ÑšÐµ Ñ�Ð»Ð¸ÐºÐµ: (Ð²ÐµÑ›Ðµ: %u, Ð¼Ð°ÑšÐµ: %u)\n"
 
-#: vms-alpha.c:7434
+#: vms-alpha.c:7903
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr " Ð½Ð°Ð·Ð¸Ð² Ñ�Ð»Ð¸ÐºÐµ    : %.*s\n"
 
-#: vms-alpha.c:7436
+#: vms-alpha.c:7905
 #, c-format
 msgid " link time        : %s\n"
 msgstr " Ð²Ñ€ÐµÐ¼Ðµ Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°  : %s\n"
 
-#: vms-alpha.c:7438
+#: vms-alpha.c:7907
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ Ñ�Ð»Ð¸ÐºÐµ       : %.*s\n"
 
-#: vms-alpha.c:7440
+#: vms-alpha.c:7909
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°       : %.*s\n"
 
-#: vms-alpha.c:7442
+#: vms-alpha.c:7911
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr " ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ Ð¸Ð·Ð³Ñ€Ð°Ð´ÑšÐµ Ñ�Ð»Ð¸ÐºÐµ: %.*s\n"
 
-#: vms-alpha.c:7452
+#: vms-alpha.c:7921
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHSâ€œ\n"
 
-#: vms-alpha.c:7455
+#: vms-alpha.c:7925
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð»Ð¸ÐºÐµ Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°: (Ð²ÐµÑ›Ðµ: %u, Ð¼Ð°ÑšÐµ: %u)\n"
 
-#: vms-alpha.c:7460
+#: vms-alpha.c:7931
 #, c-format
 msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
 msgstr " Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° : Ð²Ð±Ð½: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u (0x%x)\n"
 
-#: vms-alpha.c:7464
+#: vms-alpha.c:7936
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr " Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: Ð²Ð±Ð½: %u, Ð·Ð°Ð¿Ð¸Ñ�Ð¸: %u\n"
 
-#: vms-alpha.c:7468
+#: vms-alpha.c:7941
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr " Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°: Ð²Ð±Ð½: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u\n"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:7954
 #, c-format
 msgid "cannot read EISD\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEISDâ€œ\n"
 
-#: vms-alpha.c:7491
+#: vms-alpha.c:7965
 #, c-format
 msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
 msgstr "ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð»Ð¸ÐºÐµ: (Ð²ÐµÑ›Ð¸: %u, Ð¼Ð°ÑšÐ¸: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: %u)\n"
 
-#: vms-alpha.c:7498
+#: vms-alpha.c:7973
 #, c-format
 msgid " section: base: 0x%08x%08x size: 0x%08x\n"
 msgstr " Ð¾Ð´ÐµÑ™Ð°Ðº: Ð¾Ñ�Ð½Ð¾Ð²Ð°: 0x%08x%08x Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%08x\n"
 
-#: vms-alpha.c:7503
+#: vms-alpha.c:7978
 #, c-format
 msgid " flags: 0x%04x"
 msgstr " Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ : 0x%04x"
 
-#: vms-alpha.c:7540
+#: vms-alpha.c:8016
 #, c-format
 msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 msgstr " Ð²Ð±Ð½: %u, Ð¿Ñ„Ñ†: %u, Ð¿Ð¾Ñ€ÐµÐ´Ð¸_Ñ†Ñ‚Ð»: %u Ð²Ñ€Ñ�Ñ‚Ð°: %u ("
 
-#: vms-alpha.c:7546
+#: vms-alpha.c:8022
 msgid "NORMAL"
 msgstr "NORMAL"
 
-#: vms-alpha.c:7549
+#: vms-alpha.c:8025
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7552
+#: vms-alpha.c:8028
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7555
+#: vms-alpha.c:8031
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7558
+#: vms-alpha.c:8034
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7561
+#: vms-alpha.c:8037
 msgid "USRSTACK"
 msgstr "USRSTACK"
 
-#: vms-alpha.c:7567
+#: vms-alpha.c:8043
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7569
+#: vms-alpha.c:8046
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ: 0x%08x, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:7579
+#: vms-alpha.c:8056
 #, c-format
 msgid "cannot read DMT\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ\n"
 
-#: vms-alpha.c:7583
+#: vms-alpha.c:8060
 #, c-format
 msgid "Debug module table:\n"
 msgstr "Ð¢Ð°Ð±ÐµÐ»Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°:\n"
 
-#: vms-alpha.c:7592
+#: vms-alpha.c:8069
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ\n"
 
-#: vms-alpha.c:7597
+#: vms-alpha.c:8075
 #, c-format
 msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
 msgstr " Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¼Ð¾Ð´ÑƒÐ»Ð°: 0x%08x, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%08x, (%u Ð¿-Ð¾Ð´ÐµÑ™Ð°ÐºÐ°)\n"
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:8085
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº\n"
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:8089
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr "  Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ°: 0x%08x, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u\n"
 
-#: vms-alpha.c:7623
+#: vms-alpha.c:8102
 #, c-format
 msgid "cannot read DST\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDSTâ€œ\n"
 
-#: vms-alpha.c:7633
+#: vms-alpha.c:8112
 #, c-format
 msgid "cannot read GST\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žGSTâ€œ\n"
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:8116
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Ð¢Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿ÑˆÑ‚Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°:\n"
 
-#: vms-alpha.c:7665
+#: vms-alpha.c:8143
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr "Ð˜Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°Ñ‡Ð° Ñ�Ð»Ð¸ÐºÐµ: (Ð²ÐµÑ›Ð¸: %u, Ð¼Ð°ÑšÐ¸: %u)\n"
 
-#: vms-alpha.c:7668
+#: vms-alpha.c:8147
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr "  Ð¸Ð°Ñ„ Ð²ÐµÐ·Ð° : 0x%08x %08x\n"
 
-#: vms-alpha.c:7671
+#: vms-alpha.c:8151
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr "  Ð²ÐµÐ·Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ: 0x%08x %08x\n"
 
-#: vms-alpha.c:7674
+#: vms-alpha.c:8154
 #, c-format
 msgid "  size : %u\n"
 msgstr "  Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° : %u\n"
 
-#: vms-alpha.c:7676
+#: vms-alpha.c:8156
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr "  Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%08x\n"
 
-#: vms-alpha.c:7680
+#: vms-alpha.c:8161
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7684
+#: vms-alpha.c:8166
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7688
+#: vms-alpha.c:8171
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7691
+#: vms-alpha.c:8174
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:7694
+#: vms-alpha.c:8178
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:7696
+#: vms-alpha.c:8181
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:7699
+#: vms-alpha.c:8184
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:7701
+#: vms-alpha.c:8186
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:7709
+#: vms-alpha.c:8194
 #, c-format
 msgid " Shareable images:\n"
 msgstr " Ð”ÐµÑ™Ð¸Ð²Ðµ Ñ�Ð»Ð¸ÐºÐµ:\n"
 
-#: vms-alpha.c:7713
+#: vms-alpha.c:8199
 #, c-format
 msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
 msgstr "  %u: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: 0x%02x, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:8206
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr " Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾-Ñ€ÐµÑ‡Ð¸:\n"
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:8211
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr " Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð´ÑƒÐ³Ðµ-Ñ€ÐµÑ‡Ð¸:\n"
 
-#: vms-alpha.c:7730
+#: vms-alpha.c:8216
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr " Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ â€ž.addressâ€œ ÑƒÐ¿ÑƒÑ‚Ðµ Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾-Ñ€ÐµÑ‡Ð¸:\n"
 
-#: vms-alpha.c:7735
+#: vms-alpha.c:8221
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr " Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ â€ž.addressâ€œ ÑƒÐ¿ÑƒÑ‚Ðµ Ð´ÑƒÐ³Ðµ-Ñ€ÐµÑ‡Ð¸:\n"
 
-#: vms-alpha.c:7740
+#: vms-alpha.c:8226
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr " Ð˜Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ ÑƒÐ¿ÑƒÑ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ ÐºÐ¾Ð´Ð°:\n"
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:8231
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr " Ð˜Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ ÑƒÐ¿ÑƒÑ‚Ðµ Ð¿Ð°Ñ€Ð¾Ð²Ð° Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°:\n"
 
-#: vms-alpha.c:7754
+#: vms-alpha.c:8240
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " ÐŸÑ€Ð¾Ð¼ÐµÐ½Ð° Ð·Ð°ÑˆÑ‚Ð¸Ñ‚Ðµ (%u ÑƒÐ½Ð¾Ñ�Ð°):\n"
 
-#: vms-alpha.c:7759
+#: vms-alpha.c:8246
 #, c-format
 msgid "  base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "
 msgstr "  Ð¾Ñ�Ð½Ð¾Ð²Ð°: 0x%08x %08x, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%08x, Ð·Ð°ÑˆÑ‚Ð¸Ñ‚Ð°: 0x%08x "
 
 #. FIXME: we do not yet support relocatable link.  It is not obvious
 #. how to do it for debug infos.
-#: vms-alpha.c:8599
+#: vms-alpha.c:9123
 msgid "%P: relocatable link is not supported\n"
 msgstr "%P: Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð²ÐµÐ·Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°\n"
 
-#: vms-alpha.c:8669
-msgid "%P: multiple entry points: in modules %B and %B\n"
-msgstr "%P: Ñ‚Ð°Ñ‡ÐºÐµ Ð²Ð¸ÑˆÐµ ÑƒÐ½Ð¾Ñ�Ð°: Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° â€ž%Bâ€œ Ð¸ â€ž%Bâ€œ\n"
+#: vms-alpha.c:9194
+#, c-format
+msgid "%P: multiple entry points: in modules %pB and %pB\n"
+msgstr "%P: Ñ‚Ð°Ñ‡ÐºÐµ Ð²Ð¸ÑˆÐµ ÑƒÐ½Ð¾Ñ�Ð°: Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ\n"
 
-#: vms-lib.c:1444
+#: vms-lib.c:1525
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ñ�Ð»Ð¸ÐºÑƒ â€ž%sâ€œ Ð¸Ð· â€ž%sâ€œ"
 
-#: vms-misc.c:360
+#: vms-misc.c:367
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr "â€ž_bfd_vms_output_countedâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñ�Ð° Ð½ÑƒÐ»Ð° Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°"
 
-#: vms-misc.c:365
+#: vms-misc.c:372
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "â€ž_bfd_vms_output_countedâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñ�Ð° Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°"
 
-#: xcofflink.c:824
+#: xcofflink.c:832
 #, c-format
-msgid "%s: XCOFF shared object when not producing XCOFF output"
-msgstr "%s: â€žXCOFFâ€œ Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ ÐºÐ°Ð´Ð° Ñ�Ðµ Ð½Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ â€žXCOFFâ€œ Ð¸Ð·Ð»Ð°Ð·"
+msgid "%pB: XCOFF shared object when not producing XCOFF output"
+msgstr "%pB: â€žXCOFFâ€œ Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ ÐºÐ°Ð´Ð° Ñ�Ðµ Ð½Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ â€žXCOFFâ€œ Ð¸Ð·Ð»Ð°Ð·"
 
-#: xcofflink.c:845
+#: xcofflink.c:853
 #, c-format
-msgid "%s: dynamic object with no .loader section"
-msgstr "%s: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð±ÐµÐ· â€ž.loaderâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°"
+msgid "%pB: dynamic object with no .loader section"
+msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð±ÐµÐ· â€ž.loaderâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°"
 
-#: xcofflink.c:1404
-msgid "%B: `%s' has line numbers but no enclosing section"
-msgstr "%B: â€ž%sâ€œ Ð¸Ð¼Ð° Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ñ€ÐµÐ´Ð¾Ð²Ð° Ð°Ð»Ð¸ Ð½Ðµ Ð¸ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº"
+#: xcofflink.c:1417
+#, c-format
+msgid "%pB: `%s' has line numbers but no enclosing section"
+msgstr "%pB: â€ž%sâ€œ Ð¸Ð¼Ð° Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ñ€ÐµÐ´Ð¾Ð²Ð° Ð°Ð»Ð¸ Ð½Ðµ Ð¸ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: xcofflink.c:1456
-msgid "%B: class %d symbol `%s' has no aux entries"
-msgstr "%B: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð¼Ð¾Ñ›Ð½Ð¸Ñ… ÑƒÐ½Ð¾Ñ�Ð°"
+#: xcofflink.c:1470
+#, c-format
+msgid "%pB: class %d symbol `%s' has no aux entries"
+msgstr "%pB: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð¼Ð¾Ñ›Ð½Ð¸Ñ… ÑƒÐ½Ð¾Ñ�Ð°"
 
-#: xcofflink.c:1478
-msgid "%B: symbol `%s' has unrecognized csect type %d"
-msgstr "%B: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ñ†Ñ�ÐµÐºÑ‚Ð¾Ñ€Ð° â€ž%dâ€œ"
+#: xcofflink.c:1493
+#, c-format
+msgid "%pB: symbol `%s' has unrecognized csect type %d"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ñ†Ñ�ÐµÐºÑ‚Ð¾Ñ€Ð° â€ž%dâ€œ"
 
-#: xcofflink.c:1490
-msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d"
-msgstr "%B: Ð»Ð¾Ñˆ â€žXTY_ERâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ñ†Ð±Ñ€Ð¾Ñ˜ %d Ñ�Ñ†Ð½Ð´ÑƒÐ¶Ð¸Ð½Ðµ %d"
+#: xcofflink.c:1506
+#, c-format
+msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
+msgstr "%pB: Ð»Ð¾Ñˆ â€žXTY_ERâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ñ†Ð±Ñ€Ð¾Ñ˜ %d Ñ�Ñ†Ð½Ð´ÑƒÐ¶Ð¸Ð½Ðµ %<PRId64>"
 
-#: xcofflink.c:1519
-msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d"
-msgstr "%B: â€žXMC_TC0â€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ñ†Ð½Ð´ÑƒÐ¶Ð¸Ð½Ðµ %d"
+#: xcofflink.c:1537
+#, c-format
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
+msgstr "%pB: â€žXMC_TC0â€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ñ†Ð½Ð´ÑƒÐ¶Ð¸Ð½Ðµ %<PRId64>"
 
-#: xcofflink.c:1665
-msgid "%B: csect `%s' not in enclosing section"
-msgstr "%B: Ñ†-Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›ÐµÐ¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+#: xcofflink.c:1684
+#, c-format
+msgid "%pB: csect `%s' not in enclosing section"
+msgstr "%pB: Ñ†-Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›ÐµÐ¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
 
-#: xcofflink.c:1772
-msgid "%B: misplaced XTY_LD `%s'"
-msgstr "%B: Ð»Ð¾ÑˆÐµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ â€žXTY_LDâ€œ â€ž%sâ€œ"
+#: xcofflink.c:1792
+#, c-format
+msgid "%pB: misplaced XTY_LD `%s'"
+msgstr "%pB: Ð»Ð¾ÑˆÐµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ â€žXTY_LDâ€œ â€ž%sâ€œ"
 
-#: xcofflink.c:2091
-msgid "%B: reloc %s:%d not in csect"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s:%dâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ†-Ð¾Ð´ÐµÑ™ÐºÑƒ"
+#: xcofflink.c:2113
+#, c-format
+msgid "%pB: reloc %s:%<PRId64> not in csect"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s:%<PRId64>â€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ†-Ð¾Ð´ÐµÑ™ÐºÑƒ"
 
-#: xcofflink.c:3182
+#: xcofflink.c:3193
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: Ð½ÐµÐ¼Ð° Ñ‚Ð°ÐºÐ²Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
 
-#: xcofflink.c:3287
+#: xcofflink.c:3298
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜ Ð¸Ð·Ð²Ð¾Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: xcofflink.c:3666
+#: xcofflink.c:3677
 msgid "error: undefined symbol __rtinit"
 msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž__rtinitâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: xcofflink.c:4045
-msgid "%B: loader reloc in unrecognized section `%s'"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ"
+#: xcofflink.c:4055
+#, c-format
+msgid "%pB: loader reloc in unrecognized section `%s'"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ"
+
+#: xcofflink.c:4067
+#, c-format
+msgid "%pB: `%s' in loader reloc but not loader sym"
+msgstr "%pB: â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð°"
+
+#: xcofflink.c:4084
+#, c-format
+msgid "%pB: loader reloc in read-only section %pA"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ â€ž%pAâ€œ"
+
+#: xcofflink.c:5112
+#, c-format
+msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
+msgstr "ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°: %#<PRIx64> > 0x10000; Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ñ�Ð° â€ž-mminimal-tocâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°"
+
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2872
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ: 0x%02x"
+
+#: elfnn-aarch64.c:5246
+#, c-format
+msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ 835769 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)"
+
+#: elfnn-aarch64.c:5338
+#, c-format
+msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ 843419 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)"
+
+#: elfnn-aarch64.c:5351
+msgid "%pB: error: erratum 843419 immediate 0x%"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð³Ñ€ÐµÑˆÐºÐ° 843419 Ð¸Ð·Ñ€Ð°Ð²Ð½Ð¾ 0x%"
+
+#: elfnn-aarch64.c:5899
+#, c-format
+msgid "%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ ÐºÐ¾Ñ˜Ð° Ñ�Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ð²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð¿Ð¾Ñ™Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
+
+#: elfnn-aarch64.c:5990
+#, c-format
+msgid "%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol"
+msgstr "%pB: Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð±Ð¸Ñ›Ðµ â€žNULLâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: elfnn-aarch64.c:6103 elfnn-aarch64.c:6140
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr "%pB: â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elfnn-aarch64.c:7125
+msgid "too many GOT entries for -fpic, please recompile with -fPIC"
+msgstr "Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ â€žGOTâ€œ ÑƒÐ½Ð¾Ñ�Ð° Ð·Ð° â€ž-fpicâ€œ, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
+
+#: elfnn-aarch64.c:7153
+msgid "one possible cause of this error is that the symbol is being referenced in the indicated code as if it had a larger alignment than was declared where it was defined"
+msgstr "Ñ˜ÐµÐ´Ð°Ð½ Ð¾Ð´ Ð¼Ð¾Ð³ÑƒÑ›Ð¸Ñ… Ñ€Ð°Ð·Ð»Ð¾Ð³Ð° Ð¾Ð²Ðµ Ð³Ñ€ÐµÑˆÐºÐµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð´Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÐ¿ÑƒÑ‚Ð°Ð½ Ñƒ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼ ÐºÐ¾Ð´Ñƒ Ð¸Ð¼Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð¾Ð±Ñ˜Ð°Ð²Ñ™ÐµÐ½Ð¾ Ñ‚Ð°Ð¼Ð¾ Ð³Ð´Ðµ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
+
+#: elfnn-aarch64.c:7720
+#, c-format
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: elfnn-riscv.c:187 elfnn-riscv.c:222
+#, c-format
+msgid "%pB: warning: RVE PLT generation not supported"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRVE PLTâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+
+#: elfnn-riscv.c:1977
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%pcrel_loâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
+
+#: elfnn-riscv.c:2198
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ\n"
+
+#: elfnn-riscv.c:2208
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%%X%%P: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ\n"
+
+#: elfnn-riscv.c:2247
+msgid "%X%P: internal error: out of range error\n"
+msgstr "%X%P: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°\n"
+
+#: elfnn-riscv.c:2252
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr "%X%P: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
+
+#: elfnn-riscv.c:2258
+msgid "dangerous relocation error"
+msgstr "Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elfnn-riscv.c:2264
+msgid "%X%P: internal error: unknown error\n"
+msgstr "%X%P: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°\n"
+
+#: elfnn-riscv.c:2630
+#, c-format
+msgid "error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%d"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€žISAâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ Ð·Ð° â€ž%sâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ. %d.%d vs %d.%d"
+
+#: elfnn-riscv.c:2648
+#, c-format
+msgid "error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but got '%s'."
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° â€ž%sâ€œ. ÐŸÑ€Ð²Ð¾ Ñ�Ð»Ð¾Ð²Ð¾ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ â€žiâ€œ Ð¸Ð»Ð¸ â€žeâ€œ Ð°Ð»Ð¸ Ð´Ð¾Ð±Ð¸Ñ… â€ž%sâ€œ."
+
+#: elfnn-riscv.c:2692
+#, c-format
+msgid "error: %pB: Mis-matched ISA string to merge '%s' and '%s'."
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð° â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%sâ€œ Ð¸ â€ž%sâ€œ."
+
+#: elfnn-riscv.c:2893
+#, c-format
+msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)."
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: â€žISAâ€œ Ð½Ð¸Ñ�ÐºÐ° ÑƒÐ»Ð°Ð·Ð° (%s) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ (%s)."
+
+#: elfnn-riscv.c:2913
+#, c-format
+msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)."
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: â€žXLENâ€œ Ð½Ð¸Ñ�ÐºÐ° ÑƒÐ»Ð°Ð·Ð° (%u) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ (%u)."
+
+#: elfnn-riscv.c:2921
+#, c-format
+msgid "error: %pB: Unsupported XLEN (%u), you might be using wrong emulation."
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žXLENâ€œ (%u), Ð¼Ð¾Ð¶Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ñƒ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ñƒ."
+
+#: elfnn-riscv.c:3035
+#, c-format
+msgid "warning: %pB use privilege spec version %u.%u.%u but the output use version %u.%u.%u."
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¾Ð²Ð°Ð½Ð¾ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐµ â€ž%u.%u.%uâ€œ Ð°Ð»Ð¸ Ð¸Ð·Ð»Ð°Ð· ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð·Ð´Ð°ÑšÐµ â€ž%u.%u.%uâ€œ."
+
+#: elfnn-riscv.c:3053
+msgid "warning: privilege spec version 1.9.1 can not be linked with other spec versions."
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¾Ð²Ð°Ð½Ð¾ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐµ 1.9.1 Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¸Ð¼ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐ¸Ð¼Ð°."
 
-#: xcofflink.c:4056
-msgid "%B: `%s' in loader reloc but not loader sym"
-msgstr "%B: â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð°"
+#: elfnn-riscv.c:3081
+#, c-format
+msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned."
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ð½ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº Ð°Ð»Ð¸ Ð¸Ð·Ð»Ð°Ð· ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ %u-Ð±Ð°Ñ˜Ñ‚Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ð½ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº."
+
+#: elfnn-riscv.c:3122
+#, c-format
+msgid ""
+"%pB: ABI is incompatible with that of the selected emulation:\n"
+"  target emulation `%s' does not match `%s'"
+msgstr ""
+"%pB: â€žABIâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ Ñ�Ð° Ð¾Ð½Ð¸Ð¼ Ð¸Ð· Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ:\n"
+"  Ñ†Ð¸Ñ™Ð½Ð° ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð° Ñ�Ð° â€ž%sâ€œ"
+
+#: elfnn-riscv.c:3176
+#, c-format
+msgid "%pB: can't link %s modules with %s modules"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ðµ Ñ�Ð° â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
 
-#: xcofflink.c:4072
-msgid "%B: loader reloc in read-only section %A"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ â€ž%Aâ€œ"
+#: elfnn-riscv.c:3186
+#, c-format
+msgid "%pB: can't link RVE with other target"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€žRVEâ€œ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¾Ð¼ Ð¼ÐµÑ‚Ð¾Ð¼"
+
+#: elfnn-riscv.c:3724
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-byte boundary, but only %<PRId64> present"
+msgstr "%pB(%pA+%#<PRIx64>): %<PRId64> Ð±Ð°Ñ˜Ñ‚Ð° Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½Ð° %<PRId64>-Ð±Ð°Ñ˜Ñ‚Ð½Ñƒ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ, Ð°Ð»Ð¸ Ñ�Ð°Ð¼Ð¾ %<PRId64> Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð½Ð¾"
+
+#: peXXigen.c:164
+#, c-format
+msgid "%pB: unable to find name for empty section"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ð·Ð¸Ð² Ð·Ð° Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: peXXigen.c:191
+#, c-format
+msgid "%pB: out of memory creating name for empty section"
+msgstr "%pB: Ð¿Ð¾Ð½ÐµÑ�Ñ‚Ð°Ð»Ð¾ Ñ˜Ðµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÑƒ Ð½Ð°Ð·Ð¸Ð²Ð° Ð·Ð° Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: xcofflink.c:5094
+#: peXXigen.c:201
 #, c-format
-msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling"
-msgstr "ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°: 0x%lx > 0x10000; Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ñ�Ð° â€ž-mminimal-tocâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°"
+msgid "%pB: unable to create fake empty section"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð»Ð°Ð¶Ð½Ð¸ Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: peigen.c:1009 pepigen.c:1009 pex64igen.c:1009
+#: peXXigen.c:539
 #, c-format
-msgid "%s: line number overflow: 0x%lx > 0xffff"
-msgstr "%s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff"
+msgid "%pB: aout header specifies an invalid number of data-directory entries: %u"
+msgstr "%pB: â€žaoutâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð½Ð°Ð²Ð¾Ð´Ð¸ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ°Ð½ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°: %u"
 
-#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036
+#: peXXigen.c:1088
+#, c-format
+msgid "%pB: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff"
+
+#: peXXigen.c:1241
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·Ð²Ð¾Ð·Ð° [â€ž.edataâ€œ (Ð¸Ð»Ð¸ Ñ‚Ð°Ð¼Ð¾ Ð³Ð´Ðµ Ñ�Ð¼Ð¾ Ð³Ð° Ð½Ð°ÑˆÐ»Ð¸)]"
 
-#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037
+#: peXXigen.c:1242
 msgid "Import Directory [parts of .idata]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ ÑƒÐ²Ð¾Ð·Ð° [Ð´ÐµÐ¾ â€ž.idataâ€œ]"
 
-#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038
+#: peXXigen.c:1243
 msgid "Resource Directory [.rsrc]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ð° [.rsrc]"
 
-#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039
+#: peXXigen.c:1244
 msgid "Exception Directory [.pdata]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·ÑƒÐ·ÐµÑ‚Ð°ÐºÐ° [.pdata]"
 
-#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040
+#: peXXigen.c:1245
 msgid "Security Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸"
 
-#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041
+#: peXXigen.c:1246
 msgid "Base Relocation Directory [.reloc]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾Ñ�Ð½Ð¾Ð²Ðµ [.reloc]"
 
-#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042
+#: peXXigen.c:1247
 msgid "Debug Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°"
 
-#: peigen.c:1043 pepigen.c:1043 pex64igen.c:1043
+#: peXXigen.c:1248
 msgid "Description Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¾Ð¿Ð¸Ñ�Ð°"
 
-#: peigen.c:1044 pepigen.c:1044 pex64igen.c:1044
+#: peXXigen.c:1249
 msgid "Special Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ð¾Ñ�ÐµÐ±Ð½Ð¾Ñ�Ñ‚Ð¸"
 
-#: peigen.c:1045 pepigen.c:1045 pex64igen.c:1045
+#: peXXigen.c:1250
 msgid "Thread Storage Directory [.tls]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð½Ð¸Ñ‚Ð¸ [.tls]"
 
-#: peigen.c:1046 pepigen.c:1046 pex64igen.c:1046
+#: peXXigen.c:1251
 msgid "Load Configuration Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐ° ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ°"
 
-#: peigen.c:1047 pepigen.c:1047 pex64igen.c:1047
+#: peXXigen.c:1252
 msgid "Bound Import Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ ÑƒÐ²Ð¾Ð·Ð° Ñ�Ð²ÐµÐ·Ð°"
 
-#: peigen.c:1048 pepigen.c:1048 pex64igen.c:1048
+#: peXXigen.c:1253
 msgid "Import Address Table Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ðµ ÑƒÐ²Ð¾Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ðµ"
 
-#: peigen.c:1049 pepigen.c:1049 pex64igen.c:1049
+#: peXXigen.c:1254
 msgid "Delay Import Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð·Ð°Ñ�Ñ‚Ð¾Ñ˜Ð° ÑƒÐ²Ð¾Ð·Ð°"
 
-#: peigen.c:1050 pepigen.c:1050 pex64igen.c:1050
+#: peXXigen.c:1255
 msgid "CLR Runtime Header"
 msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¦Ð›Ð  Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°"
 
-#: peigen.c:1051 pepigen.c:1051 pex64igen.c:1051
+#: peXXigen.c:1256
 msgid "Reserved"
 msgstr "Ð ÐµÐ·ÐµÑ€Ð²Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: peigen.c:1111 pepigen.c:1111 pex64igen.c:1111
+#: peXXigen.c:1316
 #, c-format
 msgid ""
 "\n"
@@ -6241,7 +8410,16 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸\n"
 
-#: peigen.c:1116 pepigen.c:1116 pex64igen.c:1116
+#: peXXigen.c:1322
+#, c-format
+msgid ""
+"\n"
+"There is an import table in %s, but that section has no contents\n"
+msgstr ""
+"\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
+
+#: peXXigen.c:1329
 #, c-format
 msgid ""
 "\n"
@@ -6250,7 +8428,7 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx\n"
 
-#: peigen.c:1158 pepigen.c:1158 pex64igen.c:1158
+#: peXXigen.c:1369
 #, c-format
 msgid ""
 "\n"
@@ -6259,12 +8437,12 @@ msgstr ""
 "\n"
 "ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ð½Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸: %04lx\n"
 
-#: peigen.c:1161 pepigen.c:1161 pex64igen.c:1161
+#: peXXigen.c:1373
 #, c-format
 msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
 msgstr "\tÑ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° %08lx ÐºÐ¾Ð´Ð½Ðµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ (ÑƒÑ‡Ð¸Ñ‚Ñ™Ð¸Ð²Ð°/Ð°ÐºÑ‚ÑƒÐµÐ»Ð½Ð°) %08lx/%08lx\n"
 
-#: peigen.c:1169 pepigen.c:1169 pex64igen.c:1169
+#: peXXigen.c:1380
 #, c-format
 msgid ""
 "\n"
@@ -6273,7 +8451,7 @@ msgstr ""
 "\n"
 "Ð�ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°! ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð½.\n"
 
-#: peigen.c:1174 pepigen.c:1174 pex64igen.c:1174
+#: peXXigen.c:1385
 #, c-format
 msgid ""
 "\n"
@@ -6282,7 +8460,7 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±ÐµÐ»Ðµ ÑƒÐ²Ð¾Ð·Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)\n"
 
-#: peigen.c:1177 pepigen.c:1177 pex64igen.c:1177
+#: peXXigen.c:1388
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -6291,21 +8469,21 @@ msgstr ""
 " vma:            Ð�Ð°Ñ˜Ð°Ð²Ð°    Ð’Ñ€ÐµÐ¼Ðµ     Ð�Ð°Ð¿Ñ€ÐµÐ´    Ð”Ð›Ð›       ÐŸÑ€Ð²Ð¸\n"
 "                 Ð¢Ð°Ð±ÐµÐ»Ð°   ÐžÑ‚Ð¸Ñ�Ð°Ðº  Ð›Ð°Ð½Ð°Ñ†   Ð�Ð°Ð·Ð¸Ð²       ÐŸÐ¾Ñ‚Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼\n"
 
-#: peigen.c:1225 pepigen.c:1225 pex64igen.c:1225
+#: peXXigen.c:1437
 #, c-format
 msgid ""
 "\n"
-"\tDLL Name: %s\n"
+"\tDLL Name: %.*s\n"
 msgstr ""
 "\n"
-"\tÐ”Ð›Ð› Ð½Ð°Ð·Ð¸Ð²: %s\n"
+"\tâ€žDLLâ€œ Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1453
 #, c-format
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
 msgstr "\tvma:  Ð�Ð°Ñ˜Ð°Ð²Ð°/Ð ÐµÐ´Ð½Ð¸ Ð�Ð°Ð·Ð¸Ð² Ñ‡Ð»Ð°Ð½Ð° Ð¡Ð²ÐµÐ·Ð°Ð½-Ð·Ð°\n"
 
-#: peigen.c:1261 pepigen.c:1261 pex64igen.c:1261
+#: peXXigen.c:1478
 #, c-format
 msgid ""
 "\n"
@@ -6314,7 +8492,12 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð¿Ñ€Ð²Ð¸ Ð¿Ð¾Ñ‚Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ð³Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸\n"
 
-#: peigen.c:1423 pepigen.c:1423 pex64igen.c:1423
+#: peXXigen.c:1522 peXXigen.c:1561
+#, c-format
+msgid "\t<corrupt: 0x%04lx>"
+msgstr "\t<Ð¾ÑˆÑ‚ÐµÑ›ÐµÑšÐµ: 0x%04lx>"
+
+#: peXXigen.c:1654
 #, c-format
 msgid ""
 "\n"
@@ -6323,7 +8506,16 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸\n"
 
-#: peigen.c:1432 pepigen.c:1432 pex64igen.c:1432
+#: peXXigen.c:1660
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but that section has no contents\n"
+msgstr ""
+"\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
+
+#: peXXigen.c:1671
 #, c-format
 msgid ""
 "\n"
@@ -6332,7 +8524,16 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ñ‚Ð°Ð½Ðµ Ñƒ Ñ‚Ð°Ñ˜ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
 
-#: peigen.c:1438 pepigen.c:1438 pex64igen.c:1438
+#: peXXigen.c:1682
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but it is too small (%d)\n"
+msgstr ""
+"\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð° (%d)\n"
+
+#: peXXigen.c:1688
 #, c-format
 msgid ""
 "\n"
@@ -6341,7 +8542,7 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx\n"
 
-#: peigen.c:1466 pepigen.c:1466 pex64igen.c:1466
+#: peXXigen.c:1716
 #, c-format
 msgid ""
 "\n"
@@ -6352,67 +8553,67 @@ msgstr ""
 "Ð¢Ð°Ð±ÐµÐ»Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)\n"
 "\n"
 
-#: peigen.c:1470 pepigen.c:1470 pex64igen.c:1470
+#: peXXigen.c:1720
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
 msgstr "Ð—Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° \t\t%lx\n"
 
-#: peigen.c:1473 pepigen.c:1473 pex64igen.c:1473
+#: peXXigen.c:1723
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
 msgstr "ÐžÑ‚Ð¸Ñ�Ð°Ðº Ð²Ñ€ÐµÐ¼ÐµÐ½Ð°/Ð´Ð°Ñ‚ÑƒÐ¼Ð° \t\t%lx\n"
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1727
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr "Ð’ÐµÑ›Ð¸/ÐœÐ°ÑšÐ¸ \t\t\t%d/%d\n"
 
-#: peigen.c:1479 pepigen.c:1479 pex64igen.c:1479
+#: peXXigen.c:1730
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Ð�Ð°Ð·Ð¸Ð² \t\t\t\t"
 
-#: peigen.c:1485 pepigen.c:1485 pex64igen.c:1485
+#: peXXigen.c:1741
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr "Ñ�ÐžÑ�Ð½Ð¾Ð²Ð° Ñ€ÐµÐ´Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°\t\t%ld\n"
 
-#: peigen.c:1488 pepigen.c:1488 pex64igen.c:1488
+#: peXXigen.c:1744
 #, c-format
 msgid "Number in:\n"
 msgstr "Ð‘Ñ€Ð¾Ñ˜ ÑƒÐ»Ð°Ð·Ð°:\n"
 
-#: peigen.c:1491 pepigen.c:1491 pex64igen.c:1491
+#: peXXigen.c:1747
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
 msgstr "\tÐ¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° \t\t%08lx\n"
 
-#: peigen.c:1495 pepigen.c:1495 pex64igen.c:1495
+#: peXXigen.c:1751
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
 msgstr "\tÐ¢Ð°Ð±ÐµÐ»Ð° [Ð�Ð°Ð·Ð¸Ð² Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°/Ñ€ÐµÐ´Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]\t%08lx\n"
 
-#: peigen.c:1498 pepigen.c:1498 pex64igen.c:1498
+#: peXXigen.c:1754
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð°\n"
 
-#: peigen.c:1501 pepigen.c:1501 pex64igen.c:1501
+#: peXXigen.c:1757
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr "\tÐ¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° \t\t"
 
-#: peigen.c:1506 pepigen.c:1506 pex64igen.c:1506
+#: peXXigen.c:1762
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr "\tÐ¢Ð°Ð±ÐµÐ»Ð° Ð½Ð°Ð·Ð¸Ð²Ð° Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° \t\t"
 
-#: peigen.c:1511 pepigen.c:1511 pex64igen.c:1511
+#: peXXigen.c:1767
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tÐ¢Ð°Ð±ÐµÐ»Ð° Ñ€ÐµÐ´Ð½Ð¸Ñ… Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð° \t\t\t"
 
-#: peigen.c:1525 pepigen.c:1525 pex64igen.c:1525
+#: peXXigen.c:1781
 #, c-format
 msgid ""
 "\n"
@@ -6421,15 +8622,20 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° â€”â€” ÐžÑ�Ð½Ð¾Ð²Ð° Ñ€ÐµÐ´Ð½Ð¸Ñ… Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð° %ld\n"
 
-#: peigen.c:1544 pepigen.c:1544 pex64igen.c:1544
+#: peXXigen.c:1790
+#, c-format
+msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr "\tÐ�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° â€žrvaâ€œ (0x%lx) Ð¸Ð»Ð¸ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° (0x%lx)\n"
+
+#: peXXigen.c:1809
 msgid "Forwarder RVA"
-msgstr "RVA Ð¿Ñ€ÐµÐ¾Ñ�Ð»ÐµÑ’Ð¸Ð²Ð°Ñ‡Ð°"
+msgstr "â€žRVAâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’Ð¸Ð²Ð°Ñ‡Ð°"
 
-#: peigen.c:1555 pepigen.c:1555 pex64igen.c:1555
+#: peXXigen.c:1821
 msgid "Export RVA"
-msgstr "RVA Ð¸Ð·Ð²Ð¾Ð·Ð°"
+msgstr "â€žRVAâ€œ Ð¸Ð·Ð²Ð¾Ð·Ð°"
 
-#: peigen.c:1562 pepigen.c:1562 pex64igen.c:1562
+#: peXXigen.c:1828
 #, c-format
 msgid ""
 "\n"
@@ -6438,18 +8644,41 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±ÐµÐ»Ð° [Ð ÐµÐ´Ð½Ð¸/Ð�Ð°Ð·Ð¸Ð² Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°]\n"
 
-#: peigen.c:1622 peigen.c:1805 pepigen.c:1622 pepigen.c:1805 pex64igen.c:1622
-#: pex64igen.c:1805
+#: peXXigen.c:1836
+#, c-format
+msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr "\tÐ�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð½Ð°Ð·Ð¸Ð²Ð° Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° â€žrvaâ€œ (0x%lx) Ð¸Ð»Ð¸ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° (0x%lx)\n"
+
+#: peXXigen.c:1843
+#, c-format
+msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr "\tÐ�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ€ÐµÐ´Ð½Ð¾Ð³ â€žrvaâ€œ (0x%lx) Ð¸Ð»Ð¸ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° (0x%lx)\n"
+
+#: peXXigen.c:1857
+#, c-format
+msgid "\t[%4ld] <corrupt offset: %lx>\n"
+msgstr "\t[%4ld] <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: %lx>\n"
+
+#: peXXigen.c:1911 peXXigen.c:2107
 #, c-format
-msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d\n"
+msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d\n"
+
+#: peXXigen.c:1915 peXXigen.c:2111
+#, c-format
+msgid ""
+"\n"
+"The Function Table (interpreted .pdata section contents)\n"
+msgstr ""
+"\n"
+"Ð¢Ð°Ð±ÐµÐ»Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ)\n"
 
-#: peigen.c:1629 pepigen.c:1629 pex64igen.c:1629
+#: peXXigen.c:1918
 #, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
 msgstr " vma:\t\t\tÐ�Ð´Ñ€ÐµÑ�Ð° Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ°\t Ð�Ð´Ñ€ÐµÑ�Ð° ÐºÑ€Ð°Ñ˜Ð°\t\tÐ˜Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸\n"
 
-#: peigen.c:1631 pepigen.c:1631 pex64igen.c:1631
+#: peXXigen.c:1920
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -6458,22 +8687,27 @@ msgstr ""
 " vma:\t\tÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº    ÐšÑ€Ð°Ñ˜      EH       EH       ÐšÑ€Ð°Ñ˜ Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ð°  Ð˜Ð·ÑƒÐ·ÐµÑ‚Ð°Ðº\n"
 "     \t\tÐ�Ð´Ñ€ÐµÑ�Ð°  Ð�Ð´Ñ€ÐµÑ�Ð°  Ð ÑƒÐºÐ¾Ð²Ð°Ð»Ð°Ñ†  ÐŸÐ¾Ð´Ð°Ñ†Ð¸     Ð�Ð´Ñ€ÐµÑ�Ð°    ÐœÐ°Ñ�ÐºÐ°\n"
 
-#: peigen.c:1705 pepigen.c:1705 pex64igen.c:1705
+#: peXXigen.c:1933
+#, c-format
+msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
+msgstr "Ð’Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€ž.pdataâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° (%ld) Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ñ�Ñ‚Ð²Ð°Ñ€Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ (%ld)\n"
+
+#: peXXigen.c:2002
 #, c-format
 msgid " Register save millicode"
 msgstr " Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ñ‡ÑƒÐ²Ð° Ð¼Ð¸Ð»Ð¸ÐºÐ¾Ð´"
 
-#: peigen.c:1708 pepigen.c:1708 pex64igen.c:1708
+#: peXXigen.c:2005
 #, c-format
 msgid " Register restore millicode"
 msgstr " Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ð²Ñ€Ð°Ñ›Ð° Ð¼Ð¸Ð»Ð¸ÐºÐ¾Ð´"
 
-#: peigen.c:1711 pepigen.c:1711 pex64igen.c:1711
+#: peXXigen.c:2008
 #, c-format
 msgid " Glue code sequence"
 msgstr " Ð�Ð¸Ð· ÐºÐ¾Ð´Ð° Ð»ÐµÐ¿ÐºÐ°"
 
-#: peigen.c:1811 pepigen.c:1811 pex64igen.c:1811
+#: peXXigen.c:2113
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
@@ -6482,7 +8716,7 @@ msgstr ""
 " vma:\t\tÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº    ÐŸÑ€Ð¾Ð»Ð¾Ð³   Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° Ð—Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ    Ð˜Ð·ÑƒÐ·ÐµÑ‚Ð°Ðº Ð•Ð¥\n"
 "     \t\tÐ�Ð´Ñ€ÐµÑ�Ð°  Ð”ÑƒÐ¶Ð¸Ð½Ð°   Ð”ÑƒÐ¶Ð¸Ð½Ð°   32b Ð¸Ð·Ð²Ñ€  Ð ÑƒÐºÐ¾Ð²Ð»Ð°Ñ†   ÐŸÐ¾Ð´Ð°Ñ†Ð¸\n"
 
-#: peigen.c:1937 pepigen.c:1937 pex64igen.c:1937
+#: peXXigen.c:2234
 #, c-format
 msgid ""
 "\n"
@@ -6493,7 +8727,7 @@ msgstr ""
 "\n"
 "ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ ÐŸÐ• Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž.relocâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°)\n"
 
-#: peigen.c:1966 pepigen.c:1966 pex64igen.c:1966
+#: peXXigen.c:2263
 #, c-format
 msgid ""
 "\n"
@@ -6502,57 +8736,62 @@ msgstr ""
 "\n"
 "Ð’Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: %08lx Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´Ð»Ð¾Ð¼ÐºÐ° %ld (0x%lx) Ð‘Ñ€Ð¾Ñ˜ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ¸ %ld\n"
 
-#: peigen.c:1979 pepigen.c:1979 pex64igen.c:1979
+#: peXXigen.c:2281
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr "\tÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ %4d Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %4x [%4lx] %s"
 
-#: peigen.c:2023 pepigen.c:2023 pex64igen.c:2023
+#: peXXigen.c:2342
 #, c-format
-msgid "%*.s Entry: "
-msgstr "%*.s ÑƒÐ½Ð¾Ñ�: "
+msgid "%03x %*.s Entry: "
+msgstr "â€ž%03x %*.sâ€œ ÑƒÐ½Ð¾Ñ�: "
 
-#: peigen.c:2043 pepigen.c:2043 pex64igen.c:2043
+#: peXXigen.c:2366
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr "Ð½Ð°Ð·Ð¸Ð²: [Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: %08lx Ð´ÑƒÐ¶Ð¸Ð½Ð° %d]: "
 
-#: peigen.c:2054 pepigen.c:2054 pex64igen.c:2054
+#: peXXigen.c:2386
 #, c-format
-msgid "<corrupt string length: %#x>"
-msgstr "<Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð½Ð¸Ñ�ÐºÐµ: %#x>"
+msgid "<corrupt string length: %#x>\n"
+msgstr "<Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð½Ð¸Ñ�ÐºÐµ: %#x>\n"
 
-#: peigen.c:2057 pepigen.c:2057 pex64igen.c:2057
+#: peXXigen.c:2396
 #, c-format
-msgid "<corrupt string offset: %#lx>"
-msgstr "<Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ: %#lx>"
+msgid "<corrupt string offset: %#lx>\n"
+msgstr "<Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ: %#lx>\n"
 
-#: peigen.c:2060 pepigen.c:2060 pex64igen.c:2060
+#: peXXigen.c:2401
 #, c-format
 msgid "ID: %#08lx"
 msgstr "Ð˜Ð”: %#08lx"
 
-#: peigen.c:2063 pepigen.c:2063 pex64igen.c:2063
+#: peXXigen.c:2404
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: %#08lx\n"
 
-#: peigen.c:2074 pepigen.c:2074 pex64igen.c:2074
+#: peXXigen.c:2426
+#, c-format
+msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
+msgstr "%03x%*.s  Ð›Ð¸Ñ�Ñ‚: Ð�Ð´Ñ€ÐµÑ�Ð°: %#08lx, Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %#08lx, ÐšÐ¾Ð´Ð½Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°: %d\n"
+
+#: peXXigen.c:2468
 #, c-format
-msgid "%*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
-msgstr "%*.s  Ð›Ð¸Ñ�Ñ‚: Ð�Ð´Ñ€ÐµÑ�Ð°: %#08lx, Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %#08lx, ÐšÐ¾Ð´Ð½Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°: %d\n"
+msgid "<unknown directory type: %d>\n"
+msgstr "<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð°: %d>\n"
 
-#: peigen.c:2116 pepigen.c:2116 pex64igen.c:2116
+#: peXXigen.c:2476
 #, c-format
 msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
 msgstr " Ð¢Ð°Ð±ÐµÐ»Ð°: Ð—Ð½Ð°Ðº: %d, Ð’Ñ€ÐµÐ¼Ðµ: %08lx, Ð˜Ð·Ð´: %d/%d, Ð‘Ñ€Ð¾Ñ˜ Ð½Ð°Ð·Ð¸Ð²Ð°: %d, Ð˜Ð”-Ð¾Ð²Ð¸: %d\n"
 
-#: peigen.c:2204 pepigen.c:2204 pex64igen.c:2204
+#: peXXigen.c:2564
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr "ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº!\n"
 
-#: peigen.c:2220 pepigen.c:2220 pex64igen.c:2220
+#: peXXigen.c:2588
 #, c-format
 msgid ""
 "\n"
@@ -6561,10 +8800,78 @@ msgstr ""
 "\n"
 "Ð£ÐŸÐžÐ—ÐžÐ Ð•ÐŠÐ•: Ð’Ð¸ÑˆÐ°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñƒ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ â€“ Ð’Ð¸Ð½Ð´Ð¾ÑƒÐ· Ñ›Ðµ Ð¸Ñ… Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€Ð¸Ñ‚Ð¸:\n"
 
+#: peXXigen.c:2594
+#, c-format
+msgid " String table starts at offset: %#03x\n"
+msgstr " Ð¢Ð°Ð±ÐµÐ»Ð° Ð½Ð¸Ñ�ÐºÐµ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ: %#03x\n"
+
+#: peXXigen.c:2597
+#, c-format
+msgid " Resources start at offset: %#03x\n"
+msgstr " Ð˜Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ð° Ð¿Ð¾Ñ‡Ð¸ÑšÑƒ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ: %#03x\n"
+
+#: peXXigen.c:2654
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory, but the section containing it could not be found\n"
+msgstr ""
+"\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ð³Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸\n"
+
+#: peXXigen.c:2660
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory in %s, but that section has no contents\n"
+msgstr ""
+"\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ñ‚Ð°Ñ˜ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°\n"
+
+#: peXXigen.c:2667
+#, c-format
+msgid ""
+"\n"
+"Error: section %s contains the debug data starting address but it is too small\n"
+msgstr ""
+"\n"
+"Ð“Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ð°Ð»Ð¸ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸\n"
+
+#: peXXigen.c:2672
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory in %s at 0x%lx\n"
+"\n"
+msgstr ""
+"\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx\n"
+"\n"
+
+#: peXXigen.c:2679
+#, c-format
+msgid "The debug data size field in the data directory is too big for the section"
+msgstr "ÐŸÐ¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ñƒ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: peXXigen.c:2684
+#, c-format
+msgid "Type                Size     Rva      Offset\n"
+msgstr "Ð’Ñ€Ñ�Ñ‚Ð°              Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°     Rva      ÐŸÐ¾Ð¼ÐµÑ€Ð°Ñ˜\n"
+
+#: peXXigen.c:2731
+#, c-format
+msgid "(format %c%c%c%c signature %s age %ld)\n"
+msgstr "(Ð·Ð°Ð¿Ð¸Ñ� %c%c%c%c Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ� %s Ñ�Ñ‚Ð°Ñ€Ð¾Ñ�Ñ‚ %ld)\n"
+
+#: peXXigen.c:2741
+#, c-format
+msgid "The debug directory size is not a multiple of the debug directory entry size\n"
+msgstr "Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ ÑƒÐ½Ð¾Ñ�Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°\n"
+
 #. The MS dumpbin program reportedly ands with 0xff0f before
 #. printing the characteristics field.  Not sure why.  No reason to
 #. emulate it here.
-#: peigen.c:2243 pepigen.c:2243 pex64igen.c:2243
+#: peXXigen.c:2825
 #, c-format
 msgid ""
 "\n"
@@ -6573,65 +8880,502 @@ msgstr ""
 "\n"
 "ÐžÑ�Ð¾Ð±ÐµÐ½Ð¾Ñ�Ñ‚Ð¸ 0x%x\n"
 
-#: peigen.c:3194 pepigen.c:3194 pex64igen.c:3194
+#: peXXigen.c:3072
+#, c-format
+msgid "%pB: Data Directory size (%lx) exceeds space left in section (%<PRIx64>)"
+msgstr "%pB: Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (%lx) Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€ Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð¾ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ (%<PRIx64>)"
+
+#: peXXigen.c:3104
+msgid "failed to update file offsets in debug directory"
+msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñƒ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ñƒ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°"
+
+#: peXXigen.c:3112
+#, c-format
+msgid "%pB: failed to read debug data section"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°"
+
+#: peXXigen.c:3928
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
-msgstr "Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¸Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ðµ Ð½Ð¸Ñ�ÐºÐµ: %d"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¸Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ðµ Ð½Ð¸Ñ�ÐºÐµ: %d"
 
-#: peigen.c:3329 pepigen.c:3329 pex64igen.c:3329
+#: peXXigen.c:4063
 msgid ".rsrc merge failure: multiple non-default manifests"
-msgstr "Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð½Ðµ-Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°Ð½Ð¸Ñ… Ð¸Ñ�Ð¿Ð¾Ñ™Ð°Ð²Ð°ÑšÐ°"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð½Ðµ-Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°Ð½Ð¸Ñ… Ð¸Ñ�Ð¿Ð¾Ñ™Ð°Ð²Ð°ÑšÐ°"
 
-#: peigen.c:3347 pepigen.c:3347 pex64igen.c:3347
+#: peXXigen.c:4081
 msgid ".rsrc merge failure: a directory matches a leaf"
-msgstr "Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð»Ð¸Ñ�Ñ‚Ñƒ"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð»Ð¸Ñ�Ñ‚Ñƒ"
 
-#: peigen.c:3389 pepigen.c:3389 pex64igen.c:3389
+#: peXXigen.c:4123
 msgid ".rsrc merge failure: duplicate leaf"
-msgstr "Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð»Ð¸Ñ�Ñ‚"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð»Ð¸Ñ�Ñ‚"
 
-#: peigen.c:3391 pepigen.c:3391 pex64igen.c:3391
+#: peXXigen.c:4125
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
-msgstr "Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð»Ð¸Ñ�Ñ‚: %s"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð»Ð¸Ñ�Ñ‚: %s"
 
-#: peigen.c:3457 pepigen.c:3457 pex64igen.c:3457
-msgid ".rsrc merge failure: dirs with differing characteristics\n"
-msgstr "Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð¸ Ñ�Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ Ð¾Ñ�Ð¾Ð±ÐµÐ½Ð¾Ñ�Ñ‚Ð¸Ð¼Ð°\n"
-
-#: peigen.c:3464 pepigen.c:3464 pex64igen.c:3464
-msgid ".rsrc merge failure: differing directory versions\n"
-msgstr "Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¸Ð·Ð´Ð°ÑšÐ° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ñƒ\n"
+#: peXXigen.c:4191
+msgid ".rsrc merge failure: dirs with differing characteristics"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð¸ Ñ�Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ Ð¾Ñ�Ð¾Ð±ÐµÐ½Ð¾Ñ�Ñ‚Ð¸Ð¼Ð°"
+
+#: peXXigen.c:4198
+msgid ".rsrc merge failure: differing directory versions"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¸Ð·Ð´Ð°ÑšÐ° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ñƒ"
 
 #. Corrupted .rsrc section - cannot merge.
-#: peigen.c:3537 pepigen.c:3537 pex64igen.c:3537
+#: peXXigen.c:4315
+#, c-format
+msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
+msgstr "%pB: Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: peXXigen.c:4323
+#, c-format
+msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
+msgstr "%pB: Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: peXXigen.c:4462
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[1] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$2â€œ"
+
+#: peXXigen.c:4482
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[1] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$4â€œ"
+
+#: peXXigen.c:4503
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[12] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$5â€œ"
+
+#: peXXigen.c:4523
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[PE_IMPORT_ADDRESS_TABLE (12)] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$6â€œ"
+
+#: peXXigen.c:4565
 #, c-format
-msgid "%s: .rsrc merge failure: corrupt .rsrc section"
-msgstr "%s: Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
+msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[PE_IMPORT_ADDRESS_TABLE(12)] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$6â€œ"
+
+#: peXXigen.c:4590
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[9] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž__tls_usedâ€œ"
+
+#~ msgid "%pB: corrupt symbol count: %#<PRIx64>"
+#~ msgstr "%pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð±Ñ€Ð¾Ñ˜ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %#<PRIx64>"
+
+#~ msgid "%pB: not enough memory to allocate space for %#<PRIx64> symbols of size %#<PRIx64>"
+#~ msgstr "%pB: Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ð·Ð° %#<PRIx64> Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ %#<PRIx64>"
+
+#~ msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
+#~ msgstr "%pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ Ð¿Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ: %#<PRIx64>"
+
+#~ msgid "error: %pB version reference section is too large (%#<PRIx64> bytes)"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº ÑƒÐ¿ÑƒÑ‚Ðµ Ð¸Ð·Ð´Ð°ÑšÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº (%#<PRIx64> Ð±Ð°Ñ˜Ñ‚Ð°)"
+
+#~ msgid "unexpected STO_SH5_ISA32 on local symbol is not handled"
+#~ msgstr "Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ â€žSTO_SH5_ISA32â€œ Ð½Ð° Ð¼ÐµÑ�Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€Ð°Ñ’ÐµÐ½Ð¾"
+
+#~ msgid "%P%X: read-only segment has dynamic IFUNC relocations; recompile with %s\n"
+#~ msgstr "%P%X: Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð¸Ð¼Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° â€žIFUNCâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž%sâ€œ\n"
+
+#~ msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
+#~ msgstr "bfd_mach_o_read_symtab_symbols: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ"
+
+#~ msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�ÑƒÐºÐ¾Ð±Ñ™Ð°Ð²Ð°Ñ˜ÑƒÑ›Ðµ Ð»Ð¸Ñ‡Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ Ð¾Ð´Ñ€ÐµÐ´Ð±Ðµ (major/minor/revision)."
+
+#~ msgid "%B: Unknown section type in a.out.adobe file: %x\n"
+#~ msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€ža.out.adobeâ€œ: %x\n"
+
+#~ msgid "%s: Invalid relocation type exported: %d"
+#~ msgstr "%s: Ð˜Ð·Ð²ÐµÐ·ÐµÐ½Ð° Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d"
+
+#~ msgid "%B: Invalid relocation type imported: %d"
+#~ msgstr "%B: Ð£Ð²ÐµÐ·ÐµÐ½Ð° Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d"
+
+#~ msgid "%P: %B: unexpected relocation type\n"
+#~ msgstr "%P: %B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°\n"
 
-#: peigen.c:3673 pepigen.c:3673 pex64igen.c:3673
-msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[1] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$2â€œ"
-
-#: peigen.c:3693 pepigen.c:3693 pex64igen.c:3693
-msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[1] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$4â€œ"
-
-#: peigen.c:3714 pepigen.c:3714 pex64igen.c:3714
-msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[12] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$5â€œ"
-
-#: peigen.c:3734 pepigen.c:3734 pex64igen.c:3734
-msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[PE_IMPORT_ADDRESS_TABLE (12)] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$6â€œ"
-
-#: peigen.c:3776 pepigen.c:3776 pex64igen.c:3776
-msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[PE_IMPORT_ADDRESS_TABLE(12)] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$6â€œ"
-
-#: peigen.c:3801 pepigen.c:3801 pex64igen.c:3801
-msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[9] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž__tls_usedâ€œ"
+#~ msgid "%B: unknown/unsupported relocation type %d"
+#~ msgstr "%B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð°/Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+
+#~ msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH"
+#~ msgstr "%B: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: â€žALPHA_R_GRELHIGHâ€œ"
+
+#~ msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW"
+#~ msgstr "%B: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: â€žALPHA_R_GRELLOWâ€œ"
+
+#~ msgid "%B: unable to find THUMB glue '%s' for `%s'"
+#~ msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žTHUMBâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+
+#~ msgid "%B: unable to find ARM glue '%s' for `%s'"
+#~ msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žARMâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+
+#~ msgid ""
+#~ "%B(%s): warning: interworking not enabled.\n"
+#~ "  first occurrence: %B: thumb call to arm\n"
+#~ "  consider relinking with --support-old-code enabled"
+#~ msgstr ""
+#~ "%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.\n"
+#~ "  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žthumbâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° â€žarmâ€œ\n"
+#~ "  Ñ€Ð°Ð·Ð¼Ð¾Ñ‚Ñ€Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ â€ž--support-old-codeâ€œ"
+
+#~ msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° Ð�ÐŸÐ¦Ð¡-%d, Ð´Ð¾Ðº Ñ˜Ðµ â€ž%Bâ€œ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° Ð�ÐŸÐ¦Ð¡-%d"
+
+#~ msgid "error: %B is compiled as position independent code, whereas target %B is absolute position"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ ÐºÐ¾Ð´ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°, Ð´Ð¾Ðº Ñ˜Ðµ Ñ†Ð¸Ñ™ â€ž%Bâ€œ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜"
+
+#~ msgid "error: %B is compiled as absolute position code, whereas target %B is position independent"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ ÐºÐ¾Ð´ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°, Ð´Ð¾Ðº Ñ˜Ðµ Ñ†Ð¸Ñ™ â€ž%Bâ€œ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ñ‚Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°"
+
+#~ msgid "private flags = %x:"
+#~ msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ =%x:"
+
+#~ msgid " [floats passed in integer registers]"
+#~ msgstr " [Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÐµÐ½Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸]"
+
+#~ msgid " [absolute position]"
+#~ msgstr " [Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜]"
+
+#~ msgid " [interworking flag not initialised]"
+#~ msgstr " [Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð°]"
+
+#~ msgid " [interworking supported]"
+#~ msgstr " [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾]"
+
+#~ msgid " [interworking not supported]"
+#~ msgstr " [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾]"
+
+#~ msgid "cannot handle R_MEM_INDIRECT reloc when using %s output"
+#~ msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€žR_MEM_INDIRECTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ¼ ÐºÐ°Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ â€ž%sâ€œ Ð¸Ð·Ð»Ð°Ð·"
+
+#~ msgid "relocation `%s' not yet implemented"
+#~ msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ˜Ð¾Ñˆ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+
+#~ msgid "uncertain calling convention for non-COFF symbol"
+#~ msgstr "Ð½ÐµÑ�Ð¸Ð³ÑƒÑ€Ð°Ð½ Ð´Ð¾Ð³Ð¾Ð²Ð¾Ñ€ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ð·Ð° Ð½Ðµ-â€žCOFFâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
+
+#~ msgid "unsupported reloc type"
+#~ msgstr "Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+
+#~ msgid "Unrecognized reloc"
+#~ msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#~ msgid "%s: unsupported relocation type 0x%02x"
+#~ msgstr "%s: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° 0x%02x"
+
+#~ msgid "Unrecognized reloc type 0x%x"
+#~ msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° 0x%x"
+
+#~ msgid "%s: warning: illegal symbol index %ld in relocs"
+#~ msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°"
+
+#~ msgid "ignoring reloc %s\n"
+#~ msgstr "Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ\n"
+
+#~ msgid "Dwarf Error: Bad abbrev number: %u."
+#~ msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð›Ð¾Ñˆ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¸ Ð±Ñ€Ð¾Ñ˜: %u."
+
+#~ msgid "%B: don't know how to handle allocated, application specific section `%s' [0x%8x]"
+#~ msgstr "%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½, Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]"
+
+#~ msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]"
+#~ msgstr "%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]"
+
+#~ msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]"
+#~ msgstr "%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]"
+
+#~ msgid "%B: don't know how to handle section `%s' [0x%8x]"
+#~ msgstr "%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]"
+
+#~ msgid ""
+#~ "%B(%s): warning: interworking not enabled.\n"
+#~ "  first occurrence: %B: Thumb call to ARM"
+#~ msgstr ""
+#~ "%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.\n"
+#~ "  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žThumbâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ð½Ð° â€žARMâ€œ"
+
+#~ msgid ""
+#~ "%B(%s): warning: interworking not enabled.\n"
+#~ "  first occurrence: %B: ARM call to Thumb"
+#~ msgstr ""
+#~ "%B(%s): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾.\n"
+#~ "  Ð¿Ñ€Ð²Ð¾ Ð¿Ð¾Ñ˜Ð°Ð²Ñ™Ð¸Ð²Ð°ÑšÐµ: %B: â€žARMâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ð½Ð° â€žThumbâ€œ"
+
+#~ msgid "unable to find THUMB glue '%s' for '%s'"
+#~ msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žTHUMBâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+
+#~ msgid "%B(%A+0x%lx):unexpected Thumb instruction '0x%x' in TLS trampoline"
+#~ msgstr "%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žThumbâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž0x%xâ€œ Ñƒ â€žTLSâ€œ Ñ‚Ñ€Ð°Ð¼Ð±ÑƒÐ»Ð¸Ð½Ð¸"
+
+#~ msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'."
+#~ msgstr "%B: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žThumb BLXâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ†Ð¸Ñ™Ð° Ð½Ð° â€žthumbâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ."
+
+#~ msgid "%B(%A+0x%lx):unexpected Thumb instruction '0x%x' referenced by TLS_GOTDESC"
+#~ msgstr "%B(%A+0x%lx): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€žThumbâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž0x%xâ€œ Ð½Ð° ÐºÐ¾Ñ˜Ñƒ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žTLS_GOTDESCâ€œ"
+
+#~ msgid " [has entry point]"
+#~ msgstr " [Ð¸Ð¼Ð° Ñ‚Ð°Ñ‡ÐºÑƒ ÑƒÐ»Ð°Ð·Ð°]"
+
+#~ msgid "error: required section '%s' not found in the linker script"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñ‚Ñ€Ð°Ð¶ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°"
+
+#~ msgid "error: %B uses FPA instructions, whereas %B does not"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žFPAâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%Bâ€œ Ð½Ðµ"
+
+#~ msgid "error: %B uses Maverick instructions, whereas %B does not"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žMaverickâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%Bâ€œ Ð½Ðµ"
+
+#~ msgid "%B: unsupported relocation type %i"
+#~ msgstr "%B: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%iâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+
+#~ msgid "%H: R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend\n"
+#~ msgstr "%H: â€žR_FRV_FUNCDESC_VALUEâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼\n"
+
+#~ msgid "%B: unsupported relocation type %i\n"
+#~ msgstr "%B: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%iâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°\n"
+
+#~ msgid "%B: invalid relocation type %d"
+#~ msgstr "%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+
+#~ msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
+#~ msgstr "%s: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (0x%lx) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (0x%lx)"
+
+#~ msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object"
+#~ msgstr "%B(%A+0x%lx): â€žR_68K_TLS_LE32â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+
+#~ msgid "%B: Relocation %s (%d) is not currently supported.\n"
+#~ msgstr "%B: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ (%d) Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾.\n"
+
+#~ msgid "%B: Unknown relocation type %d\n"
+#~ msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ\n"
+
+#~ msgid "%B(%A+0x%lx): R_METAG_TLS_LE/IENONPIC relocation not permitted in shared object"
+#~ msgstr "%B(%A+0x%lx): â€žR_METAG_TLS_LE/IENONPICâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+
+#~ msgid "%s: unknown relocation type %d"
+#~ msgstr "%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+
+#~ msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)"
+#~ msgstr "%s: ÐœÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)"
+
+#~ msgid "%B: %s\n"
+#~ msgstr "%B: %s\n"
+
+#~ msgid "%B(%A): warning: relax is suppressed for sections of alignment %d-bytes > 4-byte."
+#~ msgstr "%B(%A): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ð¸Ñ�Ð½ÑƒÑ‚Ð¾ Ð·Ð° Ð¾Ð´ÐµÑ™ÐºÐµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° %d-Ð±Ð°Ñ˜Ñ‚Ð° > 4-Ð±Ð°Ñ˜Ñ‚Ð°."
+
+#~ msgid "%B: error: Cannot set _ITB_BASE_"
+#~ msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð´ÐµÑ�Ð¸Ð¼ â€ž_ITB_BASE_â€œ"
+
+#~ msgid "Linker: cannot init ex9 hash table error \n"
+#~ msgstr "ÐŸÐ¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ð³Ñ€ÐµÑˆÐºÑƒ â€žex9â€œ Ñ…ÐµÑˆ Ñ‚Ð°Ð±ÐµÐ»Ðµ \n"
+
+#~ msgid "Linker: error cannot fixed ex9 relocation \n"
+#~ msgstr "ÐŸÐ¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡: Ð³Ñ€ÐµÑˆÐºÐ° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸ â€žex9â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ \n"
+
+#~ msgid "%s: warning: unaligned small data access. For entry: {%d, %d, %d}, addr = 0x%x, align = 0x%x."
+#~ msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°. Ð—Ð° ÑƒÐ½Ð¾Ñ�: {%d, %d, %d}, Ð°Ð´Ñ€ÐµÑ�Ð° = 0x%x, Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ = 0x%x."
+
+#~ msgid "%P%F: failed creating ex9.it %s hash table: %E\n"
+#~ msgstr "%P%F: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žex9.it %sâ€œ Ñ…ÐµÑˆ Ñ‚Ð°Ð±ÐµÐ»Ñƒ: %E\n"
+
+#~ msgid "%B(%A+0x%lx): R_NIOS2_TLS_LE16 relocation not permitted in shared object"
+#~ msgstr "%B(%A+0x%lx): â€žR_NIOS2_TLS_LE16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+
+#~ msgid "%P: %H: %s reloc against local symbol\n"
+#~ msgstr "%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°\n"
+
+#~ msgid "Warning: %B uses soft float, %B uses single-precision hard float"
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ñ˜ÐµÐ´Ð½Ðµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸"
+
+#~ msgid "Warning: %B uses unknown floating point ABI %d"
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%dâ€œ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°"
+
+#~ msgid "Warning: %B uses unknown vector ABI %d"
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%dâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°"
+
+#~ msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\""
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%sâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
+
+#~ msgid "Warning: %B uses unknown small structure return convention %d"
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð¾Ð´Ð³Ð¾Ð²Ð¾Ñ€ Ð¼Ð°Ð»Ð¾Ð³ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ð° Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ â€ž%dâ€œ"
+
+#~ msgid "%P: %B: the target (%s) of a %s relocation is in the wrong output section (%s)\n"
+#~ msgstr "%P: %B: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)\n"
+
+#~ msgid " [G10]"
+#~ msgstr " [Ð“10]"
+
+#~ msgid "%s: Malformed reloc detected for section %s"
+#~ msgstr "%s: ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+
+#~ msgid "%B: IMPORT AS directive for %s conceals previous IMPORT AS"
+#~ msgstr "%B: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° Ð£Ð’Ð•Ð—Ð˜ ÐšÐ�Ðž Ð·Ð° â€ž%sâ€œ Ð·Ð°Ñ�ÐµÑšÑƒÑ˜Ðµ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ Ð£Ð’Ð•Ð—Ð˜ ÐšÐ�Ðž"
+
+#~ msgid "%B: Unrecognised .directive command: %s"
+#~ msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž.directiveâ€œ: %s"
+
+#~ msgid "%s: compiled as 32-bit object and %s is 64-bit"
+#~ msgstr "%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 64-Ð±Ð¸Ñ‚Ð½Ð¸"
+
+#~ msgid "%s: compiled as 64-bit object and %s is 32-bit"
+#~ msgstr "%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸"
+
+#~ msgid "%s: object size does not match that of target %s"
+#~ msgstr "%s: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ Ñ†Ð¸Ñ™Ð° â€ž%sâ€œ"
+
+#~ msgid "%s: encountered datalabel symbol in input"
+#~ msgstr "%s: Ð½Ð°Ð¸ÑˆÐ°Ð¾ Ñ�Ð°Ð¼ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð°Ñ‚Ð¿Ð¸Ñ�Ð° Ð´Ð°Ñ‚ÑƒÐ¼Ð° Ñƒ ÑƒÐ»Ð°Ð·Ñƒ"
+
+#~ msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
+#~ msgstr "ÐŸÐ¢Ð‘ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð°Ð´Ñ€ÐµÑ�Ð° â€žSHmediaâ€œ (Ð±Ð¸Ñ‚ 0 == 1)"
+
+#~ msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
+#~ msgstr "ÐŸÐ¢Ð� Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð°Ð´Ñ€ÐµÑ�Ð° â€žSHcompactâ€œ (Ð±Ð¸Ñ‚ 0 == 0)"
+
+#~ msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16"
+#~ msgstr "%s: Ð“Ð�Ð¡ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ ÐŸÐ¢Ð‘ â€žinsnâ€œ Ñ�Ð° â€žR_SH_PT_16â€œ"
+
+#~ msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n"
+#~ msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð½Ð° %08x Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%pâ€œ\n"
+
+#~ msgid "%s: could not write out added .cranges entries"
+#~ msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð´Ð¾Ð´Ð°Ñ‚Ðµ â€ž.crangesâ€œ ÑƒÐ½Ð¾Ñ�Ðµ"
+
+#~ msgid "%s: could not write out sorted .cranges entries"
+#~ msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð½Ðµ â€ž.crangesâ€œ ÑƒÐ½Ð¾Ñ�Ðµ"
+
+#~ msgid "  %s: 0x%v\n"
+#~ msgstr "  %s: 0x%v\n"
+
+#~ msgid "%s: 0x%v 0x%v\n"
+#~ msgstr "%s: 0x%v 0x%v\n"
+
+#~ msgid "   %s%s %s\n"
+#~ msgstr "   %s%s %s\n"
+
+#~ msgid ", 8-byte data alignment"
+#~ msgstr ", 8-Ð±Ð¸Ñ‚Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+
+#~ msgid "%B(%A+0x%"
+#~ msgstr "%B(%A+0x%"
+
+#~ msgid "%P: %B: cannot create stub entry %s\n"
+#~ msgstr "%P: %B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ\n"
+
+#~ msgid "%P: stubs don't match calculated size\n"
+#~ msgstr "%P: Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜Ñƒ Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ñ‚Ð¾Ñ˜ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸\n"
+
+#~ msgid ""
+#~ "linker stubs in %u group%s\n"
+#~ "  branch       %lu\n"
+#~ "  toc adjust   %lu\n"
+#~ "  long branch  %lu\n"
+#~ "  long toc adj %lu\n"
+#~ "  plt call     %lu\n"
+#~ "  plt call toc %lu"
+#~ msgstr ""
+#~ "Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ â€ž%uâ€œ Ð³Ñ€ÑƒÐ¿Ð° â€ž%sâ€œ\n"
+#~ "  Ð³Ñ€Ð°Ð½Ð°            %lu\n"
+#~ "  Ñ‚Ð°Ñ� ÑƒÑ€ÐµÑ’ÐµÑšÐµ      %lu\n"
+#~ "  Ð´ÑƒÐ³Ð° Ð±Ñ€Ð°Ð½Ð°       %lu\n"
+#~ "  ÑƒÑ€ÐµÑ’ÐµÑšÐµ Ð´ÑƒÐ³Ðµ Ñ‚Ð°Ñ� %lu\n"
+#~ "  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð²        %lu\n"
+#~ "  Ð¿Ð»Ñ‚ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ñ‚Ð°Ñ�   %lu"
+
+#~ msgid "%P: %B: unknown relocation type %d for `%T'\n"
+#~ msgstr "%P: %B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð·Ð° â€ž%Tâ€œ\n"
+
+#~ msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n"
+#~ msgstr "%s: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð½Ð° %08x Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ %08x\n"
+
+#~ msgid "%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s"
+#~ msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ â€ž%sâ€œ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%s"
+
+#~ msgid "invalid relocation type %d"
+#~ msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+
+#~ msgid "Output file requires shared library `%s'\n"
+#~ msgstr "Ð˜Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ â€ž%sâ€œ\n"
+
+#~ msgid "Output file requires shared library `%s.so.%s'\n"
+#~ msgstr "Ð˜Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ â€ž%s.so.%sâ€œ\n"
+
+#~ msgid "Symbol %s not defined for fixups\n"
+#~ msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð·Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ\n"
+
+#~ msgid "Warning: fixup count mismatch\n"
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð±Ñ€Ð¾Ñ˜ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°\n"
+
+#~ msgid "%s: string too long (%d chars, max 65535)"
+#~ msgstr "%s: Ð½Ð¸Ñ�ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³Ð° (%d Ð·Ð½Ð°ÐºÐ°, Ð½Ð°Ñ˜Ð². 65535)"
+
+#~ msgid "%s: unrecognized symbol `%s' flags 0x%x"
+#~ msgstr "%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ 0x%x"
+
+#~ msgid "%B: unimplemented ATI record %u for symbol %u"
+#~ msgstr "%B: Ð½ÐµÐ¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¸ Ð�Ð¢Ð˜ Ð·Ð°Ð¿Ð¸Ñ� â€ž%uâ€œ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%uâ€œ"
+
+#~ msgid "%B: unexpected ATN type %d in external part"
+#~ msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð�Ð¢Ð� Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œ Ñƒ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð¼ Ð´ÐµÐ»Ñƒ"
+
+#~ msgid "%B: unexpected type after ATN"
+#~ msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð½Ð°ÐºÐ¾Ð½ Ð�Ð¢Ð�-Ð°"
+
+#~ msgid "%s: can not represent section `%s' in oasys"
+#~ msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ â€žoasysâ€œ"
+
+#~ msgid "%B: `ld -r' not supported with PE MIPS objects\n"
+#~ msgstr "%B: â€žld -râ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð° â€žPE MIPSâ€œ\n"
+
+#~ msgid "%B: unimplemented %s\n"
+#~ msgstr "%B: Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ â€ž%sâ€œ\n"
+
+#~ msgid "%B: jump too far away\n"
+#~ msgstr "%B: Ñ�ÐºÐ¾Ðº Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð´Ð°Ð»ÐµÐºÐ¾\n"
+
+#~ msgid "%B: bad pair/reflo after refhi\n"
+#~ msgstr "%B: Ð»Ð¾ÑˆÐµ â€žpair/refloâ€œ Ð½Ð°ÐºÐ¾Ð½ â€žrefhiâ€œ\n"
+
+#~ msgid "DST__K_SET_LINUM_INCR not implemented"
+#~ msgstr "â€žDST__K_SET_LINUM_INCRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+
+#~ msgid "DST__K_SET_LINUM_INCR_W not implemented"
+#~ msgstr "â€žDST__K_SET_LINUM_INCR_Wâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+
+#~ msgid "DST__K_RESET_LINUM_INCR not implemented"
+#~ msgstr "â€žDST__K_RESET_LINUM_INCRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+
+#~ msgid "DST__K_BEG_STMT_MODE not implemented"
+#~ msgstr "â€žDST__K_BEG_STMT_MODEâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+
+#~ msgid "DST__K_END_STMT_MODE not implemented"
+#~ msgstr "â€žDST__K_END_STMT_MODEâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+
+#~ msgid "DST__K_SET_PC not implemented"
+#~ msgstr "â€žDST__K_SET_PCâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+
+#~ msgid "DST__K_SET_PC_W not implemented"
+#~ msgstr "â€žDST__K_SET_PC_Wâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+
+#~ msgid "DST__K_SET_PC_L not implemented"
+#~ msgstr "â€žDST__K_SET_PC_Lâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+
+#~ msgid "DST__K_SET_STMTNUM not implemented"
+#~ msgstr "â€žDST__K_SET_STMTNUMâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+
+#~ msgid "[%u]: %u\n"
+#~ msgstr "[%u]: %u\n"
+
+#~ msgid ": %u.%u\n"
+#~ msgstr ": %u.%u\n"
 
 #~ msgid ""
 #~ "%B(%s): warning: interworking not enabled.\n"
@@ -6643,15 +9387,9 @@ msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ
 #~ msgid "DIV usage mismatch between %B and %B"
 #~ msgstr "incohÃ©rence d'utilisation de DIV entre %B et %B"
 
-#~ msgid "%B: bad relocation section name `%s'"
-#~ msgstr "%B: nom de section de rÃ©adressage erronÃ© Â«Â %sÂ Â»"
-
 #~ msgid "%P: dynamic variable `%s' is zero size\n"
 #~ msgstr "%P: la variable dynamique Â«Â %sÂ Â» a une taille nulle\n"
 
-#~ msgid " [64-bit doubles]"
-#~ msgstr " [doubles de 64 bits]"
-
 #~ msgid " [dsp]"
 #~ msgstr " [dsp]"
 
@@ -6679,24 +9417,6 @@ msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ
 #~ msgid "bfd_mach_o_read_dysymtab_symbol: unable to read %lu bytes at %lu"
 #~ msgstr "bfd_mach_o_read_dysymtab_symbol: impossible de lire %lu octets Ã  %lu"
 
-#~ msgid "Mach-O header:\n"
-#~ msgstr "En-tÃªte Mach-O:\n"
-
-#~ msgid " magic     : %08lx\n"
-#~ msgstr " magique    : %08lx\n"
-
-#~ msgid " cputype   : %08lx (%s)\n"
-#~ msgstr " typecpu    : %08lx (%s)\n"
-
-#~ msgid " filetype  : %08lx (%s)\n"
-#~ msgstr " typefichier: %08lx (%s)\n"
-
-#~ msgid " ncmds     : %08lx (%lu)\n"
-#~ msgstr " ncmds     : %08lx (%lu)\n"
-
-#~ msgid " sizeofcmds: %08lx\n"
-#~ msgstr " taillecmds: %08lx\n"
-
 #~ msgid " flags     : %08lx ("
 #~ msgstr " fanions   : %08lx ("
 
@@ -6712,21 +9432,12 @@ msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ
 #~ msgid "Symbol %s replaced by %s\n"
 #~ msgstr "Symbole %s remplacÃ© par %s\n"
 
-#~ msgid "%B(%A+0x%lx): cannot reach %s"
-#~ msgstr "%B(%A+0x%lx): ne peut atteindre %s"
-
-#~ msgid "%B: warning: ignoring duplicate section `%A'\n"
-#~ msgstr "%B: attention: ignore la section dupliquÃ©e Â«%AÂ»\n"
-
 #~ msgid "%B: warning: duplicate section `%A' has different size\n"
 #~ msgstr "%B: attention: section dupliquÃ©e Â«%AÂ» avec des tailles diffÃ©rentes\n"
 
 #~ msgid "relocation references a different segment"
 #~ msgstr "la relocalisation fait rÃ©fÃ©rence Ã  un segment diffÃ©rent"
 
-#~ msgid "%B: relocation type %d not implemented"
-#~ msgstr "%B: relocalisation de type %d pas implÃ©mentÃ©e"
-
 #~ msgid "warning: %B and %B differ in position-dependence of data addressing"
 #~ msgstr "attention: %B et %B divergent sur la dÃ©pendance de la position de l'adressage des donnÃ©es"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/uk.gmo ./bfd/po/uk.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/uk.gmo	2020-03-07 02:11:48.000000000 +0000
+++ ./bfd/po/uk.gmo	2021-05-21 02:00:24.000000000 +0000
@@ -1,134 +1,142 @@
-Þ•01Ûbl…€„…„‡dŸ
eŸsŸ‡Ÿ ŸA¿Ÿ? :A | “ ¦ $Å 3ê 
¡,¡%L¡r¡t¡A†¡&È¡ï¡¢!¢:¢J¢ i¢Š¢ª¢Ã¢Ú¢ç¢Pú¢K£*c£9Ž£6È£;ÿ£;¤FM¤6”¤6Ë¤:¥5=¥,s¥D ¥Nå¥J4¦)¦G©¦:ñ¦B,§Lo§)¼§Bæ§L)¨v¨Œ¨D£¨Gè¨0©O©a©u©�©¢©3Á©õ©ª0ªOª_ªoª+‰ª+µª+áª#
«1«I«R«p«(‡«?°«>ð«%/¬&U¬(|¬)¥¬GÏ¬7­O­f­†­£­¼­×­÷­®+®A®Y®m®„®,ž®Ë®Û®ô®¯#¯2¯H¯]¯w¯Ž¯1£¯Õ¯æ¯ó¯
-°%°#=°+a°&�°5´°ê°ÿ°±1±G±a±z±‘±§±$¼±á±ú±²2²$G²l²€²•²<®²ë²ú²
	³³+³@³ X³y³”³¤³Ä³à³´´2´E´*X´ƒ´•´&§´Î´0â´µ"'µJµ	[¶e¶#x¶œ¶µ¶Æ¶ß¶"ø¶·"/·#R·#v·š·#¯·#Ó·÷·¸"¸@¸F¸S¸[¸`¸
-}¸ˆ¸�¸!“¸ µ¸Ö¸Û¸à¸ø¸¹8¹=¹Q¹!V¹x¹‰¹�¹–¹›¹ ¹¦¹ª¹¯¹Ë¹"ä¹ºº,º@º&`ºB‡ºÊºêºïºôºûº»»»»7»K»R»k»»�»¡»²»Ã»Ô»ì»	û»
¼
¼
-!¼
-,¼
-7¼
-B¼
-M¼$X¼
-}¼#ˆ¼
-¬¼·¼É¼!á¼½½
-'½
2½	@½J½
-[½f½m½…½Ÿ½±½À½×½ò½¾¾)¾0¾P¾(`¾/‰¾¹¾Ë¾+Ú¾¿A"¿d¿~¿˜¿²¿8Ç¿ÀÀ-À&GÀnÀ�À2¨À?ÛÀ&ÁBÁ(aÁŠÁ"�ÁÀÁ*àÁ6Â{BÂr¾Âx1ÃªÃ:ÀÃûÃ?
ÄMÄmÄ&‹Ä²ÄœÌÄDiÅ'®Å,ÖÅ1Æ'5Æ$]Æ/‚Æ-²Æ0àÆ&Ç88ÇqÇ=‘Ç9ÏÇ:	È6DÈ6{È²È/ÒÈ5É+8É$dÉ6‰É"ÀÉ&ãÉ6
-Ê=AÊ:Ê:ºÊDõÊ8:Ë9sËC­Ë:ñË7,Ì8dÌ@�ÌGÞÌ9&Í,`Í0�Í#¾ÍâÍ-ýÍ6+ÎbÎ7~Î;¶Î:òÎ9-Ï"gÏ3ŠÏ%¾Ï.äÏÐL3Ð0€Ð.±Ð1àÐ'ÑE:Ñ8€Ñ(¹ÑcâÑ4FÒ&{Ò2¢Ò&ÕÒ6üÒ]3Ó8‘ÓÊÓOéÓb9Ô,œÔ+ÉÔ)õÔYÕ=yÕ3·Õ2ëÕBÖ)aÖ$‹Ö3°Ö9äÖ6×/U×D…×&Ê×Wñ×UIØIŸØ+éØ8Ù%NÙ(tÙ&�Ù,ÄÙ#ñÙ>ÚBTÚB—ÚÚÚ'úÚE"Û9hÛ4¢Û3×ÛJÜ(VÜ;Ü»Ü0ÚÜ.Ý,:Ý'gÝ6�Ý ÆÝ/çÝ4ÞNLÞª›ÞIFß9�ß3Êß¾þß<½à<úàF7áP~áoÏá>?âF~â`Åâ~&ãF¥ã‚ìã[oä3Ëä@ÿäM@åmŽå7üå#4æXæ(næ&—æ+¾æêæÿæ8ç"Lç$oç'”ç9¼çCöç!:è!\è*~è/©è1Ùè/é/;é0ké*œé0Çé<øéi5ê=ŸêBÝê= ë-^ë.Œë8»ë9ôëF.ì?uìVµì(í>5í;tí=°í#îíLî8_î+˜î8Äî2ýî90ï:jï3¥ï,Ùïuð |ð.�ð.ÌðKûð0GñBxñ/»ñ,ëñ'ò%@ò,fòN“òâòCüòJ@ó@‹óJÌó*ô%Bô<hô ¥ôlÆô<3õ<põ+­õÙõ,õõH"ö6köA¢öAäöJ&÷>q÷J°÷Jû÷<Fø.ƒø(²ølÛøvHùA¿ù6ú8ú4Vú0‹ú+¼úAèú3*û@^û!Ÿû#Áû.åûBüFWü4žü%Óü:ùü24ý*gý9’ýCÌýCþ:TþT�þJäþ5/ÿ4eÿ6šÿ/Ñÿ/&1&X5'µ0Ý5(D3m%¡&Çî'=6#t+˜3Ä(ø@!Cb5¦'Ü,g14™mÎA<@~H¿GKPIœLæH3C|YÀ50P4�M¶N	1S	)…	/¯	)ß	+	
-75
-3m
-6¡
-9Ø
-X[kCÇ6>B=�*¿.ê2
[L
&¨
-Ï
,ý
*E/`(�$¹0Þ'87"pA“)Õ=ÿ@=2~+±"Ý5<6's%›(ÁRê?=F}3Ä1øD*HoD¸KýaI`«sB€‚ÃTF=›bÙb<gŸg0o( 4É5þ34-h/–HÆF7VGŽ+Ö$2'.Z/‰+¹)å^KnFº"@5[(‘EºDDEFŠ_Ñ^1"�*³+Þ8
- :C '~ ;¦ 8â '!'C!3k!>Ÿ!-Þ!,"9"X"u".“"/Â"ò"$#37#k#F‰#&Ð#!÷#6$5P$+†$ ²$$Ó$.ø$.'%%V%)|%\¦%D&HH&D‘&LÖ&X#'H|')Å'*ï' (5;(9q(@«(+ì(6)AO).‘)3À)=ô)H2*<{*8¸*3ñ*4%+4Z+0�+@À+1,B3,Lv,AÃ,L-8R-B‹-+Î-2ú-<-.3j.Xž.P÷..H/`w/&Ø/\ÿ/X\0/µ0på0AV1+˜1KÄ1.2,?2%l2’23²22æ23493Wn3=Æ3*45/4%e4B‹4%Î44ô4>)5<h5C¥5Bé5;,63h6œ6¼6Ë6!à67$7=71P7V‚7IÙ7I#8<m8ª8½8Ñ8ã8ý8
9'9G9
S9a9%r9\˜9;õ91:C:Y:\:y:†:	Ÿ:©:»:Ì:,Ù:;;0;"L;o;(Œ;/µ;/å;1<8G<#€<'¤<2Ì<3ÿ<3=;C==†=Ž=£=³=º=Â=Ö=ë=>>%><>Y>k>‰>	¨>²>Ð>	å>"ï>?$?)@?/j?"š?½?Ô?Ý?é?í?@@$@'6@^@ {@#œ@À@Ú@ ì@
AH+A1tA#¦A,ÊAX÷AaPB:²B.íB7C1TC;†C(ÂC:ëC,&D-SD-�D¯D2ÎDEE&E;ERE)hE’E!¨E$ÊEIïE9F5VFŒF
-¡FC¬FIðF:GLGTG\G
zGˆGAšGÜG/øG+(H8TH�H$£H!ÈH1êHI;I+ZI†I
-šI¥IÄI%ÖIüIJ.,J-[JG‰J3ÑJK"$KGKYK$rK—K!´KÖK5èKL	0L:LLLbL‚LœL¸LÇLÙL	àLêLïLûL
-M!M=MSMeM…MžM¾MÒMäMüM-NHNZNlN€NšN'¯N×NæNøN
-OO!O:O:VO%‘O%·OÝOAöO;8PCtP=¸PCöP=:Q"xQ7›Q<ÓQ<R)MR5wR­R¶RvÑR*HSsS'…S­S¿SÆS
-ÍS(ØST'T;TXTpT�T#¨T$ÌT,ñT.U,MU.zU©U"ÆU,éU.V!EV1gV0™V2ÊV,ýV.*W#YW}W�W(±W/ÚW!
-X,X(IX#rX+–XÂX,ÛX Y)YBYbYvY–Y#µY-ÙY"Z*Z<ZOZ[ZpZ&‚Z	©ZF³Z/úZ*[J;[M†[Ô[ô[\\-;\i\r\z\A†\>È\]A]7[]B“]!Ö]ø]˜^±^Í^ß^ñ^2_.9_#h_Œ_™_¦_¶_¾_:×_+`#>`b`u`Ž`¦`,¾`:ë`&a	>adHa­a6ÀaM÷aMEb<“bgÐbb8c<›cEØc1d(Pd$ydžd/´d+äde,eFece>e<¾eûe4f'Lf$tf™fªfÂfÙfêfgg,g>gPgbg|g—g©gºgÒgñg2hCh']h7…h0½hDîh,3i'`iˆi¨iºi-Ôi+j+.j*Zj	…j	�j
-™j
-¤j¯jÄjÓjèj÷j1üj.k/Nk~k'�k"Åk&èk0l@l^lsl|l9šlÔl,él9m)PmCzmI¾mEnYNnY¨n;o;>oNzo/Éo5ùo:/p5jp4 p9Õp7q9GqD�qGÆqDrESrC™r4Ýr?s:RsG�s;ÕsAt9St*�t6¸t/ït;u3[u%�u1µuAçu!)vUKv\¡vAþv1@w?rw:²w7íw>%x$dxI‰xÓx/ðxO yPpy3Áy õy?z:Vz&‘z
-¸z0Ãz%ôz"{%={0c{!”{¶{Ï{ê{ÿ{|O|k|,Š|J·|7}
:}H}1W}‰}�}°}Ã})à}*
-~,5~6b~™~$¹~_Þ~">Aa£,Á2îH!€j€z€$‹€°€Ã€¼ã€¹ �Z‚/l‚œ‚·‚Õ‚*õ‚L ƒ2mƒ- ƒ)Îƒ"øƒ„.„C„X„4g„œ„0¤„%Õ„9û„5…G…X…r…z…‚…ž…H¥…î…4ñ…&†/†
-F†Q†2m†O †ð†‡"‡*7‡%b‡ ˆ‡©‡Ç‡Ï‡Cî‡¤2ˆ×ˆäˆ þˆ‰(‰<‰Q‰g‰}‰”‰±‰Â‰Ô‰è‰Nð‰[?Š›ŠAŸŠáŠ‹‹5‹6M‹„‹ ¤‹8Å‹+þ‹*Œ=ŒMŒUŒjŒ‚Œ–ŒªŒ¾ŒÑŒ
äŒòŒL� Y�Dz�P¿�Ž"Ž2=Ž$pŽ•ŽµŽ5ÈŽþŽ!�;�B�2J�F}�/Ä�ô�"�)�9�MH�9–�;Ð�7‘D‘\‘y‘ˆ‘,›‘$È‘Jí‘)8’ˆb’(ë’%“(:“c“
-“,Š“7·“ï“)	”3”Q”k”ƒ”‹”£”»”
Ñ”#ß”•'•C•T•j•„•¡•»•#Ç•%ë•–.–E–W–7n–¦–Â–â–û–—"—5—I—]—s—J‰—JÔ—J˜Ij˜:´˜ï˜-™;<™+x™@¤™<å™1"š8Tš8�š.Æš>õšI4›h~›yç›>aœN œIïœd9�0ž�;Ï�8žFDž5‹ž&Áž.èž-Ÿ.EŸ0tŸ<¥Ÿ!âŸ ! `? .  ,Ï hü Ee¡0«¡6Ü¡k¢E¢Å¢&ã¢I
-£#T£<x£<µ£eò£2X¤/‹¤/»¤4ë¤= ¥9^¥0˜¥7É¥'¦=)¦6g¦@ž¦ß¦ÿ¦,§S0§
„© ’©8³©>ì©ˆ+ª‰´ª‚>«9Á«"û«/¬\N¬[«¬­8­NO­ž­ ­u¸­:.®*i®%”®+º®æ®0ø®2)¯1\¯/Ž¯#¾¯
â¯$ð¯©°<¿°pü°km±gÙ±IA²&‹²§²²_Z³Sº³W´]f´YÄ´kµ}Šµ‚¶S‹¶•ß¶yu·oï·ˆ_¸Qè¸m:¹{¨¹'$º$Lº…qº}÷º]u»Ó»ñ»-¼3¼+M¼Hy¼&Â¼"é¼]½j½€½�½7°½7è½7 ¾%X¾(~¾§¾'°¾,Ø¾>¿XD¿W�¿?õ¿F5ÀA|ÀH¾ÀfÁinÁ#ØÁ'üÁ'$ÂLÂ$jÂ?�Â!ÏÂ&ñÂÃ#8Ã'\Ã#„Ã¨ÃLÇÃÄ%$Ä!JÄ-lÄšÄ­ÄÍÄ!èÄ
-Å*ÅPDÅ•Å±Å(¾Å'çÅ ÆG0ÆVxÆGÏÆOÇgÇ(|Ç$¥Ç!ÊÇ%ìÇÈ0ÈLÈgÈKƒÈ%ÏÈ4õÈ&*ÉQÉ?lÉ¬ÉÇÉ äÉ<ÊBÊQÊ
`ÊnÊ…Ê#¡Ê4ÅÊúÊË@6Ë1wË0©ËÚË#ùËÌ6ÌCNÌ’Ì©Ì2ÀÌóÌ;ÍHÍG\Í,¤ÍÑÎäÎ#÷ÎÏ4ÏPÏ$iÏ7ŽÏÆÏ3ÚÏ#Ð#2ÐVÐ#nÐ#’Ð¶Ð;ÊÐ8Ñ?ÑEÑ[ÑcÑ-hÑ
-–Ñ¡Ñ¦Ñ.¬Ñ*ÛÑÒÒ*Ò(;Ò.dÒ“ÒB˜ÒÛÒNàÒ/ÓKÓRÓXÓ]ÓbÓhÓlÓ7qÓ5©ÓIßÓ)Ô(.Ô;WÔ,“ÔVÀÔkÕ(ƒÕ¬Õ±Õ¶Õ½ÕÃÕÈÕâÕ!éÕÖ%Ö,ÖKÖeÖ{Ö‘Ö§Ö½Ö6ÓÖ
-×	$×
.×
<×
-J×
-U×
-`×
-k×
-v×_�×á×{ø×
-tØ5Ø1µØHçØ10Ù,bÙ�Ù"¡ÙÄÙÐÙíÙÚ-ÚQ6Ú7ˆÚÀÚ;ÙÚ1ÛGÛ?aÛ¡Û±Û=¸ÛöÛQÜ^eÜ,ÄÜñÜQÝ6]ÝA”Ý@ÖÝ#Þ$;Þ`Þ�~Þ&ß73ß,kßI˜ßDâß'àGBàBŠàKÍàFá=`ážá1µáIçá,1âP^â¹¯â¸iã­"ä/Ðäfågåw�åùå6æMPæ6žæ\Õæˆ2è@»èUüèJRé@�é>ÞéZêFxêU¿ê@ëSVë;ªëeæëaLìd®ìaíouí+åísîn…îrôîAgïš©ïHDðQ�ð\ßðR<ñN�ñOÞñ].òLŒòNÙò\(óN…óLÔóL!ô‘nôŽõ¨�õ�8öDÖö6÷bR÷Wµ÷a
ø/oø~Ÿøvù›•ùm1ú0ŸúUÐúS&ûVzû@Ñû¸ü†Ëü`RýS³ýJþ˜Rþ‰ëþKuÿÏÁÿu‘OQW{©{%î¡_�#ðÂæ×V¾X:nÈ©irzÜ^Wm¶U$	Iz	lÄ	e1
-]—
-eõ
-|[:ØË‡ß�g
kõ
wa@ÙPNkLº<mDŠ²o='­TÕw*›¢t>ƒ³7‡?³ÇL{UÈXXwLÐoF�^Ôj3ºž:YŒ”p!l’oÿmomÝ|K�ÈäV e;!t¡!¶"÷Í"ˆÅ#äN$¬3%Pà%g1&u™&É'PÙ'U*(*€(]«(U	)[_)$»)6à)²*MÊ*H+Va+³¸+…l,5ò,5(-]^-F¼-V.]Z._¸.T/Um/TÃ/I0�b0ó0`s1Ô1KT2c 2j3do3�Ô3vV4ÌÍ4<š5b×5T:6¡�6317_e7^Å7L$8®q8| 9½�9p[:zÌ:zG;Â;?á<T!=Tv=�Ë=cM>r±>S$?Sx?VÌ?V#@Jz@’Å@9XAt’A„B~ŒB“CUŸCJõC|@DJ½DE‚F‚‘FLGaGU�Gq×GzIH¼ÄH¾�I�@JcÎJ—2K�ÊKŠXLNãLC2MüvM
-sN³~Ob2PF•PJÜPL'QEtQ“ºQ‚NR{ÑR=MSH‹SbÔSš7TÞÒT^±UIVsZVqÎVT@W�•WÛ%XÛY§ÝY�…Z¢#[gÆ[Z.\k‰\Sõ\]I]W§]^ÿ]�^^;à^T_aq_IÓ_^`E|`@Â`<aW@ar˜a>bUJb— b;8cytc{îc^jdEÉdGeÖWeq.fž fs?go³g}#h|¡h€ikŸi’j~žj�k®ŸkhNlh·lV m¡wm²nfÌnI3oW}oZÕob0pl“p‚q¢ƒqh&r²�rBs_Ot ¯t‰PuoÚu†JvlÑv\>wÄ›w[`xq¼xp.y>Ÿy%ÞyfzSkzL¿zt{`�{kâ{IN|j˜|V}—Z}oò}žb~SCUa™vûLr€2¿€Cò€™6�‡Ð�—X‚\ð‚�MƒˆÏƒlX„zÅ„»@…äü…äá†ïÆ‡€¶ˆ27‰ÔjŠª?‹Úê‹äÅŒßª�éŠŽct�<Ø�r�gˆ�^ð�WO‘E§‘gí‘eU’\»’¯“qÈ“J:”w…”^ý”]\•Uº•E–ÔV–Ž+—|º—67˜2n˜4¡˜aÖ˜Z8™o“™nšnršpáš‰R›ˆÜ›@eœT¦œSûœjO�tº�P/ž~€žrÿžGrŸIºŸT ‡Y Wá c9¡S�¡/ñ¡B!¢Yd¢Z¾¢8£=R£P�£4á£j¤E�¤CÇ¤[¥cg¥HË¥A¦EV¦_œ¦]ü¦EZ§@ §¬á§ŸŽ¨µ.©yä©Š^ª¶éª» «K\¬<¨¬=å¬b#­`†­uç­s]®cÑ®t5¯hª¯�°z•°˜±p©±q²†Œ²k³m³qí³‚_´Nâ´\1µgŽµ\öµoS¶LÃ¶®·j¿·}*¸o¨¸n¹°‡¹›8º`Ôºô5»M*¼ºx¼¶3½`ê½âK¾�.¿ZÌ¿t'ÀYœÀgöÀW^ÁC¶ÁiúÁSdÂ;¸ÂjôÂ¬_Ã‘ÄDžÄxãÄ?\Å‚œÅhÆnˆÆž÷Æ�–Çž$È¦ÃÈ•jÉ^Ê>_ÊžÊ"·ÊdÚÊ%?ËVeË¼ËYÛË�5ÌxÃÌx<ÍcµÍ*ÎDÎ2dÎ+—Î+ÃÎïÎ3Ï;ÏXÏnÏ*‰Ï«´Ï€`Ð$áÐ3Ñ:Ñ6=ÑtÑ;�ÑËÑÞÑøÑÒK.ÒzÒ%“Ò+¹ÒSåÒ39ÓRmÓQÀÓaÔjtÔrßÔRRÕV¥ÕfüÕgcÖËÖ€äÖe×x×,‰×¶×Ï×â×ó×	Ø Ø7ØQØ?lØE¬Ø"òØ:Ù;PÙŒÙ1£Ù8ÕÙÚK!ÚmÚRÚWÒÚ]*Û?ˆÛ<ÈÛ
-Ü Ü1Ü+5ÜaÜsÜ…ÜH—Ü8àÜIÝFcÝ4ªÝ1ßÝ<Þ9NÞkˆÞeôÞGZßY¢ßÆüßÁÃàl…ápòáocâuÓâŠIãUÔã‚*äv­äg$å[ŒåHèåO1æ%�æ<§æ<äæ@!ç)bçDŒçÑç>íç0,è]è*Ýèoé1xéªéiÉé²3êæêøêë*ë 3ëTë�fëa÷ëgYìNÁìVí4gígœígî£lîOïO`ï€°ïE1ð
wðQ…ð×ðBéð,ñ4>ñusñTéñ‰>òxÈòAAó?ƒóÃó'Õó+ýó>)ô4hô�ôY¯ô	õõ:õ/LõM|õ/Êõ<úõ 7öXöjöqö
-€ö‹ö›ö ¹ö,Úö÷'÷5A÷)w÷3¡÷Õ÷!ñ÷"ø26ø]iø&Çøîøù*$ù1OùU�ù#×ùûù
úú&ú=-ú'kúG“ú2Ûú2û>Aûf€ûfçû†NüvÕü|LýVÉýP þ_qþpÑþpBÿQ³ÿio'Šæ²A™Û;í);BIdiÎEà+&%R/x"¨0Ë:ü]7K•]áK?9‹DÅ]
-GhO°bkcYÏ])K‡>ÓH	&[	m‚	nð	7_
-5—
-?Í
-:
RH%›MÁ7%GFm&´AÛ@
H^
T§
Lü
I[+y)¥!Ï\ñNl[aÈ*¦I•ð9†(À5é96Y�™¬uÃf9 w²^*~‰MOV4¦'Û#$CohbØC;�Ÿ¼?Ép	fzVá#8A\ž%¶XÜr54¨#ÝÌ%ÎYôžNžíoŒ¹ü´¶[k {Ç EC!<‰!/Æ!ö!\"`q"HÒ"@#U\#M²#™$�š$E*%£p%˜&H­&+ö&>"'1a'+“'>¿'8þ',7(,d(,‘(,¾(@ë(:,),g)+”)6À)K÷)GC*H‹*-Ô*M+oP+\À+q,S�,Mã,71-)i-0“-jÄ-h/.h˜.l/n/…/œ/´/+Ì/ø/0%0408=0Fv0W½0.1tD1K¹1q2Pw2.È2÷23;3XW32°3€ã3dd4`É4e*5U�5¤æ5«‹6¦77}Þ7{\8ÙØ8l²9]:˜}:v;s�;p<vr<pé<ŠZ=˜å=Ž~>�
?‹ž?`*@�‹@tA}‘AŒB¦œB“CCw×C�ODUÝD[3ER�E;âEEFŠdFDïF˜4GÏÍGh�HjIlqIvÞIiUJr¿JO2Kˆ‚KALpML¦¾L¯eMQN>gN\¦NWOJ[O¦OH½OFPOMPH�PeæPTLQ5¡Q1×Q1	R%;RaR•{ROS�aS”òSq‡T%ùT"USBU–UªU½UBÐU`V\tV\ÑV….WF´WNûWÌJXNY�fYBZeGZ]­Z˜['¤["Ì[Gï[/7\7g\§Ÿ\¨G^ð__`8l`8¥`JÞ`w)a¨¡a`Jbc«bVcLfc³cÑc,îc#do?d¯eo¾eX.fˆ‡f?g Pg9qg«g³g9»gõg«h¸h`½hi;4ipi!Œio®iÏjCîj
-2kI=kX‡kaàkDBl_‡lçlHmuLm>ÂmoIo]ioÇo%Ûo&p'(p'Pp(xp'¡p#Ép ípq(qŒ0qÑ½q�r|–rAs3Us9‰s7ÃsqûsNmtO¼tpub}u,àu,
v:vBv%_v…vŸv³vÇvÚvív6
-w¦Aw.èw¸x‹Ðx$\y3�ygµy9z3Wz"‹zc®z7{RJ{�{
¬{cº{l|_‹|2ë|<}[}k}Žz}}	~o‡~�÷~4…Kº*€1€dJ€G¯€˜÷€h��ù�Lƒ=eƒb£ƒ6„=„YW„v±„0(…ZY…H´…@ý…B>†�†(’†(»†-ä†‡X2‡1‹‡S½‡*ˆ/<ˆ5lˆ4¢ˆ,×ˆ‰2‰^L‰9«‰3å‰3Š3MŠi�Š<ëŠ@(‹Ci‹­‹Ì‹è‹Œ#ŒAŒaŒž�Œ� �‡®�“6ŽhÊŽ)3�H]�b¦�]	�zg�|â�b_‘zÂ‘z=’z¸’–3“ÙÊ“(¤”-Í•—û–±“—ÓE˜™W8ša�š_òšwR›tÊ›Q?œ`‘œWòœXJ�Z£�bþ�Laž5®žLäž¼1Ÿ`îŸ^O ´® qc¡rÕ¡{H¢äÄ¢�©£O9¤S‰¤ÃÝ¤Q¡¥¬ó¥¬ ¦ðM§v>¨Xµ¨T©_c©uÃ©Z9ª”ª`«ju«Ðà«“±¬³E­Bù­<®7C®ßÎ¿Ciq¯ž$Š¨6¸ŒÔ9õ¹í¹Ä"Àg!f5Ý”­;›Î¬¾×Æ
-ƒTW­0§y2!'(ê�)Ý
-ªE69	Ç`Z‹—EÄÖê{8¦J5„÷”�ž‡I£r€dŠÊ<ÆxkUámÜ‚x´¡[×ºå§û8ÇR)Ä»°q�¿õÿU³�Û³÷ëÃ"D}sÖ/WòF[šƒ|y0Vôë,ëµäÕ²$².ÿ;Y}_Îó„¼Ê!Hø×<\Œð¤´Àsˆh¡…fæˆ«ÁÄÏÜ,*‘wØºúa:ë©Î„' ðí~Mà‚báZó
Èc:Q3(;ÿ÷4G&ÉCN±µÞ&"PL%‹Cç?æ‰
-æýµ”Õ‡r±Ê¡Y†`�”¥Uôa›BÉUÙðlñe/—lwÝæ6î“Ÿ¥õh›>Lþ�:’’øõ¢“#VÔ¸Ÿ¿pxŠÍ~­a·ÃxC•QSt#Ú<â¡ÒïÈé@»ã�eûPÔ—jˆËñ%‰	S~LÃ°ãXOù$,3{)ã@šnÅcËAŸ�5Œ3§‚åb×À3µÅ-ÈXŠuZ=©zRí0[FÔD:wºËaÞ›Õ=ú¨
¦®N9®ä �ñ¿5šÜ­Kn8¶¾ŸKäÊ½	.l2ÜŠBAtø?�öãm®ƒÆÖLëz !x–gW˜ùÖ¶ÉÌVÄøIZ¸4O™¶:»«þžŽ€Iåÿ=©ÝþÌc‰•N¡þí�ªù[‡V¥v¬xÆòñ‘³Y$Ž‡Ž˜D Ê…•J®Íg+†û²Ð¨·ÒèØ3é�ozŸÝeo2ŽV•Ñïn(·êi0¬#+°]Õèû`|iFeî�åªo<Mq6î*>Tà&§ìÎÀ6Ç‹€"o¸Eæ¶NY’½Žð7vKø{£Óë8‡@–ªÂý*„*?	1GAù 5uç‡_>úÂÐ#ìž«Kü™å9«ð¥Ï`…^B£7Ù¢ï£1žè2â>ÆþÅÐ¬¶ví–9'Å¹Ñz|ÜÛÁõµ¢ï-OÒÌh²ÂvW€U‘ÏËà+òA%Ç&œ´%z«S2#—¤Nsî¾d“?pÕ0ãbÍÈ³ãR¦H£“(—ÏÑAž¤	]r¢¹âjI:â�81GXÚ§-ô±
-‘wÈå^}°h¹4ù¥�—íPÂn¼è8pÌ1êf<ká]RX2[Ï#¼½vrÔª¹ß™,Ùü_mƒ¨Ãh�ôw@]¼‰	JÛO·Ê vQ¼†Ð”˜/g¥ƒç^œ©ÉÁÒWd^¤)Úi!üÞ–JmI;'¿ê ÿüÅ$
Ú•{;š
.5qÉy /öÓw¸qX�ûNö™†ÛE>k�Ëà=øþB©ÿ¸�´–ªuÖ-‰óÓsGŒÈý^4iâ¡ôùÐºY-Û/•�ç¦Bf%Üîõ,e»è	fE]|T½®FöfÌìkÇ´ý4ÙÝÑÏBtóÞ?éÍœ~ØF¯ÁSpQé ÓŸ�ì“(ˆÛT²Øèæ|³=÷k¯z·ö¨Ž_9W²mP_J¼Ó­Øáô &C/MDºJß](CÖÍK†sjE¿…lc\‹ä�@˜17ð}Éé F[OÓaÔ+òÐ»PºZX™ctM¢â„SŒj
-çKìo{p
-7œýÌHU+áYj‹³Ã¬äßMïÙR_.ns˜‚)$
?îG×�=.cœM´'ouk†L@±�yöÒ^T›Ú}�\*Á1¦¯0tšò÷yH±Ò…tg÷ý¤­‹‘4>…ÞbÑl¨u-ú‚g&óm°«A–{¾q §SR×”ï’›OQà¾‘ÃVD3Z¢6àeúPdÑç½"Daê~·7ÆÎj+Š£‰dn½b
Ú!»’‚Hñó\r
À¦üœ�Ë’ÇÍhyÂˆµ¤H\Áìr7~uˆL®€l™˜.Þñû�iéIÙá€ü)
-òÂ|šß¾Ä±“b„À\%�*TƒQ¶¬p�¯©d`}`;<ä�G¯úØÅ',°ÕŒ"ß{®‚®‰®„‰ ‰´‰È‰Ü‰ð‰ŠŠ,Š@ŠTŠhŠ|Š�Š¬ŠÀŠÔŠðŠ‹‹,‹@‹T‹h‹|‹�‹¤‹¸‹Ô‹è‹ü‹Œ<ŒPŒdŒxŒŒŒ¨Œ¼ŒÐŒäŒ��(�<�P�d�x�Œ� �´�Ð�ì�ŽŽ(Ž<ŽPŽdŽxŽ”Ž°ŽÌŽàŽôŽ��0�D�X�l�€�”�¨�¼�Ð�ä�ø�� �4�H�d�€�”�¨�Ä�Ø�ì�‘‘(‘<‘P‘d‘x‘”‘°‘Ä‘à‘ü‘’$’8’T’p’Œ’ ’´’Ð’ä’ø’“ “4“H“\“p“Œ“ “´“È“ä“ø“” ”4”`”t”�”¤”¸”Ì”à”ô”••0•D•X•l•€•œ•°•Ä•à•ô•––0–D–X–l–€–”–¨–Ä–Ø–ì–—,—@—T—h—|—˜—¬—À—Ô—ð—˜˜,˜@˜T˜h˜|˜�˜¤˜À˜Ü˜ð˜™™,™@™T™h™„™ ™¼™Ð™ä™ø™š š4šHš\špš„š˜š¬šÀšÔšèšüš›$›8›T›p›„›˜›´›È›Ü›ð›œœ,œ@œTœhœ„œ œ´œÐœìœ��(�D�`�|���¤�À�Ô�è�ü�ž$ž8žLž`ž|ž�ž¤ž¸žÔžèžüžŸ$ŸPŸ�®ÿÿÿÿ²®"ÿÿÿÿè® ÿÿÿÿ¯5ÿÿÿÿK¯%ÿÿÿÿw¯)ÿÿÿÿ§¯(ÿÿÿÿÖ¯/ÿÿÿÿ°ÿÿÿÿ(°'ÿÿÿÿV°ÿÿÿÿ�°-ÿÿÿÿ¯°ÿÿÿÿÍ°/ÿÿÿÿ±ÿÿÿÿ-± ÿÿÿÿU±%ÿÿÿÿ’±ÿÿÿÿÆ±*ÿÿÿÿñ±.ÿÿÿÿ!²)1ÿÿÿÿ{²%ÿÿÿÿ¡²1ÿÿÿÿÓ²
-2ÿÿÿÿ³"ÿÿÿÿC³3ÿÿÿÿw³3ÿÿÿÿ«³ÿÿÿÿÒ³9ÿÿÿÿ"´%ÿÿÿÿU´
-Hÿÿÿÿ©´
-/ÿÿÿÿµ
-6ÿÿÿÿ@µ
->ÿÿÿÿˆµ
-0ÿÿÿÿÂµ
-Fÿÿÿÿ¶
-ÿÿÿÿT¶
-+ÿÿÿÿ‰¶
-ÿÿÿÿ±¶
-"ÿÿÿÿÝ¶@)ÿÿÿÿL·
-/ÿÿÿÿ…·
- ÿÿÿÿ¯·-ÿÿÿÿö·6ÿÿÿÿB¸6ÿÿÿÿ�¸
-7ÿÿÿÿÎ¸
-?ÿÿÿÿ¹
-ÿÿÿÿ<¹4ÿÿÿÿ‰¹+ÿÿÿÿÁ¹-ÿÿÿÿû¹3ÿÿÿÿ/º
--ÿÿÿÿfº(ÿÿÿÿ¢º
--ÿÿÿÿÙºÿÿÿÿ»6ÿÿÿÿH»>ÿÿÿÿ�»#ÿÿÿÿ¸»ÿÿÿÿô»ÿÿÿÿ0¼
-2ÿÿÿÿl¼
-.ÿÿÿÿ¤¼Fÿÿÿÿë¼
-2ÿÿÿÿ'½
-2ÿÿÿÿc½
-2ÿÿÿÿŸ½
-2ÿÿÿÿÛ½
-2ÿÿÿÿ¾
-2ÿÿÿÿS¾Fÿÿÿÿš¾
-9ÿÿÿÿÝ¾
-7ÿÿÿÿ¿
-9ÿÿÿÿa¿Fÿÿÿÿ¨¿Fÿÿÿÿï¿	2ÿÿÿÿ*À+ÿÿÿÿ\À.ÿÿÿÿ‘À+ÿÿÿÿÃÀ-ÿÿÿÿøÀ0ÿÿÿÿFÁ"ÿÿÿÿ…Á!ÿÿÿÿ¸Á
-*ÿÿÿÿîÁ
-Aÿÿÿÿ9Â
-dÿÿÿÿ§Â
-$ÿÿÿÿÕÂ1ÿÿÿÿÃ1ÿÿÿÿCÃ
-ÿÿÿÿ`Ã5ÿÿÿÿ®Ã&ÿÿÿÿâÃ=ÿÿÿÿ2Ä&ÿÿÿÿ†Ä+ÿÿÿÿÅÄÿÿÿÿùÄ]ÿÿÿÿfÅ!5ÿÿÿÿ½ÅKÿÿÿÿ	Æ<"ÿÿÿÿgÆ$ÿÿÿÿ Æ7
-ÿÿÿÿâÆÿÿÿÿ*Ç;ÿÿÿÿ’Ç?ÿÿÿÿðÇÿÿÿÿÈ2ÿÿÿÿSÈÿÿÿÿ„Èÿÿÿÿ¶È=ÿÿÿÿÉIÿÿÿÿhÉ(ÿÿÿÿ¦ÉIÿÿÿÿ	Ê!ÿÿÿÿ?Ê!ÿÿÿÿoÊÿÿÿÿ Ê+ÿÿÿÿÍÊ=ÿÿÿÿË5ÿÿÿÿAË@ÿÿÿÿ†Ë7ÿÿÿÿ¾Ë-ÿÿÿÿìËÿÿÿÿ	Ì-ÿÿÿÿFÌ
-"	ÿÿÿÿ™Ì?ÿÿÿÿÚÌ2ÿÿÿÿÍ6Eÿÿÿÿ�ÍJÿÿÿÿÞÍjÿÿÿÿOÎcÿÿÿÿ¹Îgÿÿÿÿ'ÏVÿÿÿÿ„ÏmÿÿÿÿøÏDÿÿÿÿCÐ‡ÿÿÿÿÑÐ>ÿÿÿÿ*ÑSÿÿÿÿ~ÑAÿÿÿÿÀÑX#ÿÿÿÿ<ÒDÿÿÿÿ�Ò9ÿÿÿÿÉÒ'?ÿÿÿÿ2ÓI/ÿÿÿÿªÓMÿÿÿÿøÓ_ÿÿÿÿYÔLDÿÿÿÿéÔlÿÿÿÿVÕaÿÿÿÿ¸Õ
-TÿÿÿÿÖ>ÿÿÿÿsÖlÿÿÿÿàÖlÿÿÿÿM×ÿÿÿÿ‹×~ÿÿÿÿ!ØKÿÿÿÿŠØ
-uÿÿÿÿÙ
-+Mÿÿÿÿ�Ù
-RÿÿÿÿëÙ
-fÿÿÿÿ[Ú
-qÿÿÿÿÖÚ
-}ÿÿÿÿ]Û
-F<ÿÿÿÿéÛ
-?ÿÿÿÿ2Ü
-Bÿÿÿÿ~Ü
-KÿÿÿÿÓÜ£dÿÿÿÿàÝ
-Qÿÿÿÿ;Þ
-=ÿÿÿÿ‚Þ'\ÿÿÿÿß\/ÿÿÿÿ�ß\!ÿÿÿÿ
à
-aÿÿÿÿxà
-ÀÿÿÿÿBá
-5ÿÿÿÿ�áC9ÿÿÿÿýámÿÿÿÿŠâbÿÿÿÿãcÿÿÿÿqã
-OÿÿÿÿÊãDÿÿÿÿ#ä
-Rÿÿÿÿä(;ÿÿÿÿâäkÿÿÿÿTåÄÿÿÿÿæWÿÿÿÿ~æE$ÿÿÿÿîæE$ÿÿÿÿ^ç
-¨ÿÿÿÿè
-MÿÿÿÿgèrÿÿÿÿÚè
-Pÿÿÿÿ4é
-PÿÿÿÿŽé
-Pÿÿÿÿèé
-PÿÿÿÿBê
-Pÿÿÿÿœê
-Pÿÿÿÿöêrÿÿÿÿië
-WÿÿÿÿÊë
-Uÿÿÿÿ)ì
-WÿÿÿÿŠìrÿÿÿÿýìrÿÿÿÿpí	TÿÿÿÿÍí_ÿÿÿÿ3îcÿÿÿÿ�îYÿÿÿÿýî`ÿÿÿÿeï3Tÿÿÿÿíï3>ÿÿÿÿ^ð@ÿÿÿÿµð
-Wÿÿÿÿñ
-‰ÿÿÿÿ«ñ
-»ÿÿÿÿpò
-RÿÿÿÿÌòmÿÿÿÿDójÿÿÿÿ¯ó
-)ÿÿÿÿâóK„ÿÿÿÿ±ôJÿÿÿÿ	õuÿÿÿÿšõ\1ÿÿÿÿ7öPÿÿÿÿ�ö"Hÿÿÿÿ÷ã ÿÿÿÿø0hÿÿÿÿ¥øƒÿÿÿÿ)ùlpÿÿÿÿú'KÿÿÿÿwútÿÿÿÿûP$ÿÿÿÿ‘û9rÿÿÿÿXü=|ÿÿÿÿý6ÿÿÿÿRýUÿÿÿÿ¶ý%Dÿÿÿÿþ(;ÿÿÿÿ‚þvÿÿÿÿÿ�ÿÿÿÿÎÿPÿÿÿÿ="�ÿÿÿÿü$XÿÿÿÿxXÿÿÿÿä4ÿÿÿÿ8Mÿÿÿÿ‡ZÿÿÿÿâwÿÿÿÿZƒÿÿÿÿâ€ÿÿÿÿcTÿÿÿÿ¸ ÿÿÿÿç ]ÿÿÿÿd
-49ÿÿÿÿñŒÿÿÿÿ	    TLS: %pA	<corrupt: 0x%04lx>	Export Address Table 			Export Address Table 		%08lx
+Þ•q0¸3I	@gdŒ‚|Œ„Žì¦
í¦û¦§(§AG§?‰§:É§¨¨.¨$M¨3r¨
¦¨´¨%Ô¨ú¨ü¨A©&P©w©�©©©Â©Ò© ñ©ª2ªKªbªoªP‚ªÓª*ëª9«6P«;‡«Ã«FÕ«6¬6S¬:Š¬5Å¬,û¬D(­Nm­J¼­)®G1®:y®B´®L÷®)D¯Bn¯L±¯þ¯°D+°Gp°¸°×°é°ý°±*±3I±}±”±0¦±×±ç±÷±+²+=²+i²#•²¹²Ñ²Ú²ø²(³?8³>x³%·³&Ý³(´)-´GW´7Ÿ´×´î´µ+µDµ_µµ˜µ³µÉµáµõµ¶,&¶S¶c¶|¶”¶«¶º¶Ð¶å¶ÿ¶·1+·]·n·{·’·­·#Å·+é·&¸5<¸r¸‡¸Ÿ¸¹¸Ï¸é¸¹¹/¹$D¹i¹‚¹¢¹º¹$Ï¹ô¹ºº<6ºsº‚º
‘ºŸº³ºÈº àº»»,»L»h»ˆ»¡»º»Í»*à»¼¼&/¼V¼0j¼›¼"¯¼	Ò¼Ü¼#ï¼½,½=½V½"o½’½"¦½#É½#í½¾#&¾#J¾n¾{¾™¾·¾½¾Ê¾Ò¾×¾
+ô¾ÿ¾¿!
+¿ ,¿M¿R¿W¿o¿�¿¯¿´¿È¿!Í¿ï¿ÀÀ
ÀÀÀÀ!À&ÀBÀ"[À~ÀƒÀ£À·À&×ÀBþÀAÁaÁfÁkÁrÁxÁ}Á�Á–Á®ÁÂÁÉÁâÁöÁÂÂ)Â:ÂKÂcÂ	rÂ
|Â
ŠÂ
+˜Â
+£Â
+®Â
+¹Â
+ÄÂ$ÏÂ
+ôÂ#ÿÂ
+#Ã.Ã@Ã!XÃzÃ�Ã
+žÃ
©Ã	·ÃÁÃ
+ÒÃÝÃäÃüÃÄ(Ä7ÄNÄiÄxÄ‘Ä Ä§ÄÇÄ(×Ä/Å0ÅBÅ+QÅ}ÅA™ÅÛÅõÅÆ)Æ8>ÆwÆ�Æ¤Æ&¾ÆåÆÇ2Ç?RÇ&’Ç¹Ç(ØÇÈ"È7È*WÈ6‚È{¹Èr5Éx¨É!Êe7Ê7�Ê:ÕÊË?"Ë@bËU£Ë`ùËbZÌq½Ì/ÍOÍ&mÍ”Íœ®ÍDKÎ'�Î,¸Î1åÎ'Ï$?Ï/dÏ-”Ï0ÂÏ&óÏ8ÐSÐ=sÐ9±Ð:ëÐ6&Ñ6]Ñ”Ñ/´Ñ5äÑ+Ò$FÒ6kÒ"¢Ò&ÅÒ6ìÒ=#Ó:aÓ:œÓD×Ó8Ô9UÔC�Ô:ÓÔ7Õ8FÕ@ÕGÀÕ9Ö,BÖ0oÖ# ÖÄÖ=ßÖ-×6K×‚×7ž×;Ö×:Ø"MØ3pØ%¤Ø.ÊØùØ0Ù1JÙ'|Ù¤ÙEÂÙ8Ú(AÚcjÚ4ÎÚ&Û2*Û&]Ûk„Û*ðÛ4Ü]PÜ8®ÜçÜOÝbVÝ,¹Ý+æÝ)ÞY<Þ0–Þ=ÇÞ3ß29ßBlßL¯ßüß4à)Oà$yà3žà9Òà6á/CáDsá&¸áWßáU7âI�â+×â8ã%<ã(bã&‹ã,²ã#ßã>äBBäB…äÈä'èäEå9Vå4�å3ÅåJùå(Dæ;mæ©æ0ÈæDùæ.>ç9mç?§ç?çç2'è8ZèS“è'çè.é,>é'ké6“é ÊéYëé/Eê4uêNªêªùêI¤ë9îë3(ì¾\ì<í<XíF•íPÜío-î>�îFÜî`#ï~„ïFð‚Jð[Íð3)ñ@]ñMžñmìñ7Zò#’ò¶ò(Ìò&õò+ó5Hó~ó“ó8§ó"àó$ô'(ô9PôCŠô!Îô!ðô*õ/=õ1mõ/Ÿõ/Ïõ0ÿõ*0ö0[ö<ŒöiÉö=3÷Bq÷=´÷-ò÷. ø8Oø:ˆøFÃø?
+ùVJù(¡ù>Êù;	ú=Eú4ƒú#¸úLÜúI)û8sû+¬û8Øû2ü9Dü:~ü3¹ü,íüuý �ý.±ý.àýJþ0ZþB‹þ/Îþ,þþ'+ÿ%Sÿ,yÿN¦ÿõÿCJS@žJß**%U<{1¸ êl<x<µ+ò,:Hg6°AçA)Jk>¶JõJ@<‹.È(÷l v�A6F}4›0Ð+A-3o@£!ä#	.*	BY	Fœ	4ã	%
+:>
+2y
+*¬
+9×
+C(UC~:ÂTýJR5�4Ó6
/?
/o
&Ÿ
&Æ
5í
'#0K5|(²3Û%&5\'|=¤#â+32(f@�CÐ5'J,rgŸ4m<Aª@ìH-GvK¾I
+LTH¡CêY.5ˆ0¾4ïM$Nr1Á)ó)/G)w+¡7Í3699pXª[C_6£>Ú=*W.‚2±[ä&@-g,•ÂÝ/ø(($Q0v'§8Ï"A+)m=—#Õ@ù2:+m"™5¼<ò'/%W(}R¦?ùF9 3€ 1´ Dæ H+!Dt!K¹!a"sg"BÛ"‚#T¡#=ö#b4$b—$gú$gb%0Ê%(û%4$&5Y&)�&3¹&-í&/'HK'F”'7Û'G(+[($‡(2¬(.ß(/)+>))j)-”)^Â)K!*Fm*´*"Ð*ó*5+(D+Em+D³+Dø+F=,_„,^ä,"C-*f-+‘-8½-:ö-'1.;Y.8•.'Î.'ö.3/>R/-‘/,¿/ì/I0U0r0.�0/¿0ï0$1341h1F†1&Í1!ô1625M2)ƒ2­2Ç2æ2+3 ,3$M3.r3.¡3%Ð3)ö3\ 4D}4HÂ4D5LP5X�5Hö5)?6*i6 ”65µ69ë6@%7+f76’7\É7A&8.h8M—83å8=9HW9< 98Ý93:4J:4:0´:@å:1&;BX;L›;Aè;L*<8w<B°<+ó<2=<R=3�=XÃ=P>.m>`œ>&ý>P$?\u?XÒ?/+@p[@AÌ@+AK:A.†A,µA%âAB3(B2\B�B4¯BJäB?/C@oCW°C=D*FD5qD%§DBÍD%E46E>kE<ªECçEB+F;nF3ªF'ÞFGH9HKHZH!oH‘H$§HÌH1ßHVIIhII²I<üI9JLJ`JrJŒJ
 J'®JÖJ
âJðJ%K\'K;„KÀKÒKèKëKLL	.L8LJL[L,hL•L©L¿LRÛL".M+QM%}M5£M2ÙM4N/AN/qN3¡N(ÕN2þN31O+eO&‘O"¸OÛO(øO/!P/QP1�P8³P#ìP'Q28Q3kQŸQ;¯QëQòQúQRR&R.RBRWRlR~R‘R¨R¿RÜRîRS	+S5SSS	hS"rS•S§S)ÃS/íS"T@TWT`TlTpTƒT•T§T'¹TáT þT#UCU]U oU�UH®U1÷U#)V,MV@zVX»VaW:vW.±W7àW1X;JX(†X:¯X,êX-Y-EYsY2’YÅYÕYêYÿYZ),ZVZ!lZ$ŽZI³ZýZ5[P[
+e[Cp[I´[þ[\\ \
>\L\ ^\A\Á\/Ý\+
]89]r]$ˆ]!­]1Ï]^ ^+?^k^^˜^
+¥^°^BÏ^_%$_J_\_.z_-©_G×_3`S`"r`•`§`$À`å`!a$a56ala	~aˆaša°aÐaêabb'b	.b8b=bIbXbob‹b¡b³bÓbìbc c2cJc-hc–c¨cºcÎcèc'ýc%d4dFdXd_d!fdˆd:¤d%ßd%e+eADe;†eCÂe=fCDf=ˆf"Æf7éf<!g<^g)›g5Ågûghvh*–hÁh'Óhûh
iii
+*i(5i^i'pi˜iµiÍiíi#j$)j,Nj.{j,ªj.×jk"#k,Fk.sk!¢k1Äk0ök2'l,Zl.‡l#¶lÚlúl(m/7m!gm‰m(¦m#Ïm+ómn,8n en†nŸn¿nÓnón#o-6o"do‡o™o¬o¸oÍo&ßo	pFp/Wp‡pJ˜pMãp1qQqhq{q-˜qÆqÏq×qAãq>%rdrAvr7¸rBðr!3sUs˜ust*t<tNt#ct2‡t.ºt#ét
uu'u7u?u:Xu+“u#¿uãuöuv'v,?v:lv§v	¿vdÉv.w6AwMxwMÆw<xgQxb¹x<y1Yy(‹y$´yÙy/ïy+zKzgz�zžz>ºz<ùz6{4R{'‡{$¯{Ô{å{ý{|%|=|U|g|y|‹|�|·|Ò|ä|õ|
},}2K}~}'˜}LÀ}4
~7B~0z~'«~Ó~ó~-+M+y*¥	Ð	Ú
+ä
+ïú€*€9€N€]€1b€”€/´€ä€ �'$�"L�&o�0–�Ç�å�ú�‚9!‚[‚,p‚a�‚9ÿ‚)9ƒCcƒI§ƒEñƒY7„Y‘„;ë„;'…Nc…/²…5â…:†5S†4‰†9¾†7ø†90‡Dj‡G¯‡D÷‡E<ˆC‚ˆ-Æˆ4ôˆ?)‰:i‰F¤‰;ë‰F'Š9nŠ*¨Š6ÓŠ/
+‹;:‹3v‹%ª‹1Ð‹!ŒV$Œ\{ŒAØŒ1�?L�:Œ�7Ç�>ÿ�$>ŽIcŽ­Ž/ÊŽOúŽPJ�3›� Ï�?ð�:0�&k�
+’�0��%Î�"ô�%‘0=‘!n‘�‘©‘Ä‘Ù‘æ‘Oõ‘E’,d’7‘’
É’×’1æ’“,“?“R“)o“*™“,Ä“6ñ“(”$H”_m”"Í”(ð”A•[•,y•2¦•HÙ•"–2–
+C–$N–s–†–¼¦–¹c—˜//˜_˜z˜˜˜*¸˜Lã˜20™-c™)‘™"»™Þ™ñ™šš4*š_š0gš%˜š9¾šøš<
+›=G›3…›5¹›2ï›7"œBZœL�œêœûœ��%�A�HH�‘�4”�É�Ò�
+é�ô�2ž-CžOqžÁžàž"åž*Ÿ%3Ÿ YŸzŸ˜Ÿ ŸC¿Ÿ¤ ¨ µ  Ï ð ù 
¡"¡8¡N¡e¡‚¡“¡¥¡¹¡*Á¡Nì¡[;¢—¢A›¢Ý¢ü¢£1£6I£€£  £8Á£+ú£&¤9¤I¤Q¤f¤~¤’¤¦¤º¤Í¤
à¤î¤L¥ U¥v¥D•¥PÚ¥+¦=¦2X¦$‹¦°¦Ð¦5ã¦§!4§V§]§2e§F˜§,ß§/¨(<¨e¨"w¨š¨ª¨M¹¨9©;A©7}©µ©Í©ê©ù©,ª$9ªJ^ª)©ª(Óª%üª("«K«
+g«,r«Ÿ«)¹«ã«¬¬3¬;¬S¬)k¬•¬
«¬#¹¬Ý¬'õ¬­.­D­^­{­•­#¡­%Å­ë­®®1®7H®€®œ®µ®Ê®Ü®ï®¯¯-¯JC¯JŽ¯JÙ¯I$°:n°©°-È°;ö°+2±@^±<Ÿ±1Ü±8²8G²U€².Ö²>³ID³hŽ³y÷³>q´N°´Iÿ´dIµ0®µ;ßµ8¶FT¶5›¶&Ñ¶.ø¶-'·.U·0„·<µ·!ò·¸!-¸)O¸Iy¸`Ã¸.$¹,S¹h€¹Eé¹0/º6`ºk—ºE»I»&g»IŽ»#Ø»<ü»<9¼ev¼QÜ¼2.½/a½/‘½4Á½=ö½94¾0n¾7Ÿ¾'×¾=ÿ¾6=¿@t¿µ¿Õ¿,Ù¿OÀ
VÂ dÂ8…Â>¾ÂˆýÂ‰†Ã‚Ä9“Ä"ÍÄ/ðÄ\ Å[}ÅÙÅ8èÅN!ÆpÆrÆuŠÆ:Ç*;Ç%fÇ+ŒÇ¸Ç0ÊÇ2ûÇ1.È/`È#�È
´È$ÂÈ©çÈ<‘ÉpÎÉk?Êg«ÊIË&]Ë§„Ë_,ÌSŒÌWàÌ]8ÍY–ÍkðÍ}\Î‚ÚÎS]Ï•±ÏyGÐoÁÐˆ1ÑQºÑmÒ{zÒ'öÒ$Ó…CÓ}ÉÓ]GÔ¥ÔÃÔ-×ÔÕ+ÕHKÕ&”Õ"»Õ]ÞÕ<ÖRÖbÖ7‚Ö7ºÖ7òÖ%*×(P×y×'‚×,ª×>××XØWoØ?ÇØFÙANÙH�ÙfÙÙi@Ú#ªÚ'ÎÚ'öÚÛ$<Û?aÛ!¡Û&ÃÛêÛ#
+Ü'.Ü#VÜzÜL™ÜæÜ%öÜ!Ý->ÝlÝÝŸÝ!ºÝÜÝüÝPÞgÞƒÞ(�Þ'¹Þ áÞGßVJßG¡ßOéß9à(Nà$wà!œà%¾àäàáá9áKUá%¡á4Çá&üá#â?>â~â™â ¶â<×âã#ã
2ã@ãWã#sã4—ãÌãëã@ä1Iä0{ä¬ä#ËäïäåC ådå{å2’åÅå;ÞåæG.ævæ‰æ#œæÀæÙæõæ$ç73çkç3ç#³ç#×çûç#è#7è[è;oè8«èäèêèéé-
é
+;éFéKé.Qé*€é«é°é*µé(àé.	ê8êB=ê€êN…êÔêðê÷êýêëë
ëë7ë5NëI„ëÎë(Óë;üë,8ìVeìk¼ì((íQíVí[íbíhímí‡í!Ží°íÊíÑíðí
+î î6îLîbî6xî¯î	Éî
Óî
áî
+ïî
+úî
+ï
+ï
+ï_&ï†ï{�ï
+ð5$ð1ZðHŒð1Õð,ñ4ñ"Fñiñuñ’ñ¦ñ-­ñQÛñ7-òeò;~ò1ºòìò?óFóVó=]ó›óQ¸ó^
+ô,iô–ôQ°ô6õA9õ@{õ#¼õ$àõö�#ö&±ö7Øö,÷I=÷D‡÷Ì÷Gç÷B/øKrøF¾ø=ùCù1ZùIŒù,ÖùPú¹Tú¸û­Çû/uüè¥üYŽýfèýOþwiþtáþŠVÿ•áÿ™wºÌ6ìM#6q\¨ˆ@ŽUÏJ%@p>±ZðFKU’@èS);}e¹ad�aæoH	+¸	sä	nX
+rÇ
+A:š|HQ`\²R
Nb
O±
]L_N¬\ûNXL§Lô‘AŽÓ¨b�D©6îb%qˆWúaR/´~ävc›Ú0vU§SýVQ@¨†éSpJÄ9˜I‰âKlÏ¸uˆOþQN{ þC{_îÛ_Ê#* ÂN æ!Vø!XO":¨"Èã"b¬#i$zy$^ô$mS%†Á%1H&nz&Ué&I?'l‰'eö']\(eº(| ):�)ËØ)‡¤*�,+kº+w&,@ž,Pß,N0-L-<Ì-m	.Šw.o/'r/Tš/wï/›g0t1ƒx1ü1‡3³Œ3L@4U�4”ã4_x5xØ5ˆQ6„Ú6c_7lÃ7¢08HÓ8X9Xu9LÎ9o:F‹:¼Ò:^�;jî;ºY<:=ŒO>pÜ>lM?oº?m*Am˜A|B�ƒBäCeöCt\D¶ÑD÷ˆEˆ€Fä	G¬îGP›HgìHuTIÉÊIP”JUåJ*;K]fKUÄK[LRvL$ÉL6îL²%MMØMH&NVoN³ÆN…zO5P56P]lPFÊPVQ]hQ_ÆQT&RU{RTÑRI&S�pST`�TâTKbUc®UjVe}V�ãVveWÌÜW<©XbæXTIY¡žYm@Z3®Z_âZ›B[^Þ[L=\®Š\|9]½¶]pt^zå^z`_Û_?ú`T:aT�a€äacebrÉbS<cS�cVäcV;dJ’d’Ýd9petªe„f~¤f“#gU·gJ
h|Xh`ÕhJ6i�i‚‡j‚
+kL�kÚkUúkqPlzÂl¼=m¾úm�¹ncGo—«o�CpŠÑpN\qC«qüïq
+ìr³÷sb«tFuJUuL uEíu“3v‚Çv{Jw=ÆwHxbMxš°xÞKy^*zI‰zsÓzqG{T¹{�|Ûž|Sz}ÛÎ}§ª~�R¢ðg“€Zû€kV�SÂ�]‚Wt‚^Ì‚�+ƒ;­ƒTéƒa>„I „^ê„EI…@�…<Ð…W
†re†>Ø†U‡—m‡;ˆyAˆ{»ˆ^7‰E–‰GÜ‰Ö$ŠqûŠžm‹sŒo€Œ}ðŒ|n�€ë�klŽ’ØŽ~k��ê�®l�h‘h„‘Ví‘¡D’²æ’f™“g”Ih”W²”Z
+•be•lÈ•‚5–¢¸–h[—²Ä—w˜_„™ ä™‰…šo›†›lœ\sœÄÐœ[•�qñ�pcž>Ôž%Ÿf9ŸS ŸLôŸtA `¶ k¡Iƒ¡jÍ¡V8¢—�¢B'£oj£žÚ£Sy¤CÍ¤a¥vs¥Lê¥27¦Cj¦™®¦‡H§—Ð§\h¨�Å¨ˆG©lÐ©z=ª»¸ªät«ïY¬€I­2Ê­Ôý®ªÒ¯Ú}°äX±ß=²é³c´<k´r¨´gµDƒµ^ÈµW'¶E¶gÅ¶e-·\“·¯ð·q ¸J¹w]¹^Õ¹]4ºU’ºEèºe.»Ô”»Ži¼|ø¼6u½2¬½4ß½a¾Zv¾oÑ¾nA¿n°¿pÀ‰�ÀˆÁ@£ÁTäÁS9Âj�ÂtøÂPmÃ~¾Ãr=ÄG°ÄIøÄTBÅ‡—ÅWÆcwÆSÛÆ™/Ç/ÉÇBùÇY<ÈZ–È8ñÈ=*ÉPhÉ4¹ÉjîÉEYÊCŸÊ[ãÊc?ËP£Ë<ôË@1Ì;rÌH®ÌA÷ÌE9Í_Í]ßÍE=Î@ƒÎ¬ÄÎŸqÏµÐyÇÐŠAÑ¶ÌÑ»ƒÒK?Ó<‹Ó=ÈÓbÔ`iÔuÊÔs@Õc´Õ—Öt°Öh%×ÌŽ×�[ØzÝØ˜XÙpñÙqbÚ†ÔÚk[ÛmÇÛq5Ü‚§ÜN*Ý\yÝgÖÝ\>Þo›ÞLß®Xßjà}ràoðàn`á°Ïá›€â`ãô}ãMräœÀäº]å¶æ`Ïæâ0ç�èZ±ètéY�égÛéWCêC›êißêSIë;�ëjÙëzDìS¿ìhí¬|í‘)îD»îxï?yï‚¹ïh<ðn¥ðžñ�³ñžAò¦àò•‡ó^ô;|ô.¸ô>çõ&öFö"_öd‚ö%çöV
÷d÷Yƒ÷�Ý÷xkøxäøc]ù*Áùìù2ú+?ú+kú—ú3¯úãúûû*1û«\û€ü$‰ü3®üâü6åüý;7ýsý†ý ý¼ýKÖý"þ%;þ+aþ|�þM
+ÿCXÿ;œÿ`ØÿI9[ƒQßQ1\ƒ<à\]zKØG$Sl3ÀRôQGa™jûrfRÙV,fƒgêR€kìÿ,=Viz�§¾Ø?ó?3	Es	"¹	:Ü	;
+S
+1j
+8œ
+Õ
+Kè
+4RFW™]ñ?O<�
+Ì ×ø+ü(
:
L
H^
8§
Ià
F*4q1¦<Ø9kOe»G!YitÃÆ8ÁÿlÁp.oŸuŠ…U‚fvég`[ÈH$Om%½<ã< @])žDÈ
>)0h™*oD1´æi²o"4<*D o�G¢�êa{gÝNEV”4ëg gˆ£ðO” Oä €4!Eµ!#û!"
:"QH"‡š""#B4#w#4‰#u¾#T4$‰‰$x%AŒ%?Î%&' &+H&>t&4³&è&Yú&T'f'…'/—'MÇ'/(<E( ‚(£(µ(¼(
+Ë(Ö(æ( ),%)R)r)5Œ))Â)3ì) *!<*"^*2�*]´*&+9+O+*o+1š+UÌ+#",F,X,j,q,=x,'¶,GÞ,2&-2Y->Œ-fË-f2.†™.v /|—/V0Pk0_¼0p1p�1Qþ1iP2º2'Õ2æý2Aä3&4;84t4†4�4”4±4dÑ465EH5+Ž5%º5/à5"6036:d6]Ÿ6Ký6]I7K§79ó7D-8]r8GÐ8O9bh9kË9Y7:]‘:Kï:>;;Hz;&Ã;mê;nX<7Ç<5ÿ<?5=:u=R°=%>M)>7w>%¯>FÕ>&?AC?@…?HÆ?T@Ld@±@Ã@+á@)
A!7A\YA¶AlÃAa0B’B¦±B•XC9îC((D5QD9‡D6ÁDøDEEu+Ef¡EFwF^’F~ñFMpGO¾G4H'CIkI‹I$«IYÐIo*JbšJCýJAKQKaK~K?‹KpËKf<LV£L#úLAM`M%xMXžMr÷M4jN#ŸNÌÃN%�OY¶OžPž¯PoNQ¹¾Q´xR[-SE‰S<ÏS/T<T\ZT`·THU@aUU¢UMøU™FV�àVEpW£¶W˜ZXHóX+<Y>hY1§Y+ÙY>Z8DZ,}Z,ªZ,×Z,[@1[:r[,­[+Ú[6\K=\G‰\HÑ\-]MH]}–]_^ot^\ä^MA_7�_)Ç_0ñ_j"`h�`hö`l_aÌaãaúab+*b:Vb‘b©b¾bÍb8ÖbFcWVc.®c3ÝctdK†dqÒdPDe.•eÄeße;èeX$f2}f€°fá1gdh`xheÙhU?i¤•i«:j¦æj}�k{lÙ‡llam]Îm˜,nvÅns<op°ov!pp˜pŠ	q˜”qŽ-r�¼r‹MscÙs`=t�žtt/u}¤uŒ"v¦¯v“Vwwêw�bxUðx[FyR¢y;õyE1zDwz˜¼zÏU{h%|jŽ|lù|vf}iÝ}rG~Oº~ˆ
+A“pÕ¦F€¯í€Q��>ï�\.‚W‹‚Jã‚.ƒHEƒFŽƒOÕƒH%„en„TÔ„5)…1_…1‘…%Ã…é…•†O™†�é†qz‡%ì‡"ˆS5ˆ‰ˆ�ˆ°ˆBÃˆ`‰\g‰\Ä‰…!ŠF§ŠNîŠÌ=‹N
+ŒhYŒ�ÂŒB`�e£�]	Ž˜gŽ'�"(�K�Ge�/­�7Ý�§�¨½‘f“_‚“8â“8”JT”wŸ”¨•`À•c!–V…–LÜ–)—G—,d—#‘—oµ—%™o4™X¤™ˆý™?†š–Æš”]›}ò›qpœƒâœf�“æ��zž Ÿ99ŸsŸ{Ÿ9ƒŸ½Ÿ«ÔŸ€ `… æ ;ü 8¡!T¡ov¡`æ¡ÏG¢C£
+[£If£X°£a	¤Dk¤_°¤¥H,¥uu¥>ë¥*§IH§]’§ð§%¨&*¨'Q¨'y¨(¡¨'Ê¨#ò¨ ©7©Q©SY©Œ­©Ñ:ª«|«A�«3Ò«9¬7@¬qx¬Nê¬O9­p‰­bú­,]®,Š®·®¿®%Ü®¯¯0¯D¯W¯j¯6‡¯¦¾¯.e°D”°¸Ù°‹’±$²3C²gw²9ß²3³"M³cp³7Ô³R´_´
n´c|´là´eMµ_³µV¶2j¶<�¶Ú¶ê¶Žù¶}ˆ·o¸�v¸4¹K9¹*…¹°¹dÉ¹G.º˜vºh»Lx»=Å»b¼6f¼�¼Y·¼0½ZB½H�½@æ½B'¾j¾({¾(¤¾AÍ¾-¿=¿X]¿1¶¿Sè¿*<À/gÀ5—À4ÍÀ,Á/Á2DÁ^wÁ9ÖÁ3Â3DÂ3xÂi¬Â<ÃCSÃ—Ã¶ÃÒÃïÃ
Ä+ÄKÄžkÄ�
+Å‡˜Å“ Æh´Æ)ÇHGÇb�Ç]óÇzQÈ|ÌÈbIÉz¬Éz'ÊÞ¢Êz�Ë–üËÙ“Ì(mÍ-–Î—ÄÏ±\ÐÓÑâÑWÓaYÓ_»ÓwÔt“ÔQÕ`ZÕW»ÕXÖZlÖbÇÖL*×5w×L­×Pú×iKØ¼µØ`rÙ^ÓÙ´2ÚqçÚrYÛ{ÌÛäHÜ�-ÝO½ÝS
ÞÃaÞQ%ß¬wß¬$àðÑàÁÂáv„âXûâTTã_©ãu	äZäÚä`Zåj»åÐ&æ“÷æ³‹çB?è‚è7‰èðÄþ˜×až)¸¬Ñµa-š‹ð±Â¥¹ß™þ=Šˆ[aá][îW˜)Õ��»ÒôyWÚ.êàÒ4°¥š´B[ÒEN�zŸ—ûß0Ô¿
Øï3æ…~çÖ®àZCÑØö®’6þNtó„þ°ý±ïºæ¯[iKƒìuÝÉìá›Å®!�V¯z1Aúañmó.RÜâRüG¢?�c8ƒííñu
+ÂaL€Z“`#qËï c0NË®`³Î&Fx„—\ÿ‹j¼èÕf‹=Ú;p„)KÉVmòƒûý¿KùQ>FAµ(ÍÂ/ƒ5–·<
+ü_-…‰&@èíØ¾Ç·‡hÎkk¶Ï]w£ K§Iîßéäk�Kä� sDzç1‡Y×dëZ“ÚCyÌÐZž…qVÚ+{ÄŽÙ$T¬ð1q@›Â©e¬ðîeñõ”Wg²–Å”–0³	¯¬‘“ƒgÿ¤ÃýJûi±@€0*!�qÿí'Üá	•Š÷FxC<ÂnAÐKcd•%gLpÉ˜r3NÛê$â°Ú
+Ô¡Hùµ@jÅ2nœX8‡{ÝÏcÈ™Y¹Ä¥âYüQWÛ–�eB'=ÀÐÖ”vï£é­…ŽPh¯DÌQ»ÀL3u‡/Ýbý×Ï¼n«²nk}¾‰ H¥ø;/êB9q;ÉIRa(Í”
+ðÇêôVý°½¦I¦¿Óe7T½ÛeófÉþÓD¼Mc,ÁÓ¼Œ]§º#6ort"$1àãO
+/%ŸOXÖ'_§ooú\¹ÓTo3Dö]ò�<÷yd.9{p9¨×?Pˆ^m¶=ÊŒ.q7|î+¸¥Ì¸#@HbCÙ�ÕF)\çšáv-�Ù•Ô*†Äá»“È“¾c#¤Mì&«‰!X>f€ƒõs’OEyç†‰ÊlçmŸ�æ¦â]ôánB»¨2�ŒIà;Êçäå	’>Þåû"¤¦|?7ílì‹}ZœU:E�Tq?�|ä»0ljk•F,Ó':œ‹Uy-Oìñ^|VÎã¢*”{E½éõÂ�SyÔÇÆ0Ž°MwI§ÆrI^Q44ªÖöX]Æf”&'<�’c;x¢¶<¾ÙÃ4‰/~R3±N7Ð‘OÕÁÃÆÔò52òØù³OoV%îòÆ5ü)s+€Q¥ûfRõsŒö, (ˆ§8è‚˜,U 2`Ãž�YËL:ÞJó¸€ÇH3$}d¨�ÉD´ãå6VÄ-™%£±ÜŸ·X£ÑÒ¬Ã÷ÀÛÌˆã*"÷i>¹/ØI¨ŠÌ~£(ÏwP[$?(~×¸èÏ¦U«:Szv%bm³_ó•~Y¼CšSôSë•Ê{ŒS«Mg¹‹H†Ä½pv›åºü&*âò`4iXµ.x¤1×tô¶ñ07—Åx�l»ˆ÷W&
+ÞnÑª¡¾$eB-55¡ÍRAj9¡UCÎå1´~ö¸,uB€\oŸ™^__, AÎZ£}†HrÑ²U—„› ;F�ìÐ%ŠÛ*4N#˜lG·ª_Ÿ,‘:
ÀüÌÍd}LãD{hEªhÛëÞÿœÀW&nù9­¶­ÚAêXv68*LhJrRèg]œ1.øÆ‘ïý¢ºG�þ`œ"� :mTÞ„éðÁ;p�Å)Ùt…–Ü|bºû�Î¢˜ÿ$hlzŽxÜ­Ò6ø´ÀÇ6sîJ=ñ‚µózèZrP95SØújõ¯`CÍw\Š_›—ˆd(‘U¢‚½mpÍâWÿ³¨t‚³8²­>å[�g<ÐÊ^MSäj.äö­’µbšFÁGÖùø°NP=w+í¶92!¿«(Gæ‚±^k?ž Êé#¡ïÞ™/	©‚bß7!õŠQvº¾i‘†?h©+·«†Å
<AË"4™“uP"kGã
OÔ´!|8éfÙMÝ:ú¿YÝªÈßžMfŽ'›@@Ë ž[JD!²\à>`wª²Ó uæ¨¦…o	®�´ŒÈ¿KŽ\e^#J"ëløH}¤7Çëad
§’–š¤ù3¹æBTÁ+Õ�—E¼-‡stÕYP÷Ü©Ã¡Q)5‰b½‡ê©ß6·Á	%È'©
8„ôJÒ=+>
 Lg¯Ý®úëúÏÈpÑË�Ti2
+2Ö	Gøijà¬EÁèÈèÏèŒ�¨�¼�Ð�ä�ø�‘ ‘4‘H‘\‘p‘„‘˜‘´‘È‘ä‘ø‘’ ’4’H’\’p’„’˜’¬’È’Ü’ð’“0“L“`“t“ˆ“œ“¸“Ì“à“ô“”$”8”L”`”t”ˆ”œ”°”Ä”à”ü”•$•H•\•p•„•˜•¬•À•Ü•ø•–(–<–P–d–x–Œ– –´–È–Ü–ð–——,—@—T—h—|—�—¬—È—Ü—ð—˜ ˜4˜H˜\˜p˜„˜˜˜¬˜À˜Ü˜ø˜™(™D™X™l™€™œ™¸™Ô™è™ü™š,š@šTšhš|š�š¤š¸šÔšèšüš›,›@›T›h›|›¨›¼›Ø›ì›œœ(œ<œPœdœxœŒœ œ´œÈœäœøœ�(�<�P�d�x�Œ� �´�È�Ü�ø�ž ž<ž`ž|ž�ž¤ž¸žÌžèžüžŸ$Ÿ@ŸTŸhŸ|Ÿ�Ÿ¤Ÿ¸ŸÌŸàŸôŸ , @ T x Œ   ´ È Ü ð ¡(¡D¡X¡l¡€¡”¡¨¡¼¡Ð¡ä¡ø¡¢ ¢4¢H¢\¢p¢„¢˜¢¬¢À¢Ü¢ø¢£ £<£P£d£x£Œ£ £´£È£Ü£ð£¤(¤<¤X¤t¤ˆ¤œ¤°¤Ì¤è¤¥¥,¥H¥\¥p¥„¥˜¥¬¥À¥Ô¥è¥¦¦,¦@¦\¦p¦„¦˜¦¬¦Ø¦Öèÿÿÿÿøè"ÿÿÿÿ.é ÿÿÿÿUé5ÿÿÿÿ‘é%ÿÿÿÿ½é)ÿÿÿÿíé(ÿÿÿÿê/ÿÿÿÿRêÿÿÿÿnê'ÿÿÿÿœê-ÿÿÿÿÊêÿÿÿÿçêÿÿÿÿë $ÿÿÿÿ^ë ÿÿÿÿ†ë%ÿÿÿÿÃëÿÿÿÿ÷ë*ÿÿÿÿ"ì.ÿÿÿÿRì)1ÿÿÿÿ¬ì%ÿÿÿÿÒì9ÿÿÿÿí1ÿÿÿÿ>í
+2ÿÿÿÿzí"ÿÿÿÿ®í3ÿÿÿÿâíÿÿÿÿ	î9ÿÿÿÿYî%ÿÿÿÿŒî
+Hÿÿÿÿàî
+/ÿÿÿÿ7ï)ÿÿÿÿxï
+6ÿÿÿÿ¸ï
+>ÿÿÿÿð
+0ÿÿÿÿ:ð
+FÿÿÿÿŠð
+ÿÿÿÿÌð
++ÿÿÿÿñ
+ÿÿÿÿ)ñ
+"ÿÿÿÿUñ@)ÿÿÿÿÄñ
+/ÿÿÿÿýñ
+ ÿÿÿÿ'ò-ÿÿÿÿnò6ÿÿÿÿºò6ÿÿÿÿó
+7ÿÿÿÿFó
+?ÿÿÿÿ�ó
+ÿÿÿÿ´ó4ÿÿÿÿô+ÿÿÿÿ9ô-ÿÿÿÿsô3ÿÿÿÿ§ô0ÿÿÿÿîô 0ÿÿÿÿnõ
+-ÿÿÿÿ¥õ(ÿÿÿÿáõ
+-ÿÿÿÿöÿÿÿÿJö6ÿÿÿÿ‡ö>ÿÿÿÿÌö#ÿÿÿÿ÷öÿÿÿÿ3÷ÿÿÿÿo÷
+2ÿÿÿÿ«÷
+.ÿÿÿÿã÷Fÿÿÿÿ*ø
+2ÿÿÿÿfø
+2ÿÿÿÿ¢ø
+2ÿÿÿÿÞø
+2ÿÿÿÿù
+2ÿÿÿÿVù
+2ÿÿÿÿ’ùFÿÿÿÿÙù
+9ÿÿÿÿú
+7ÿÿÿÿ]ú
+9ÿÿÿÿ úFÿÿÿÿçúFÿÿÿÿ.û	2ÿÿÿÿiû+ÿÿÿÿ›û.ÿÿÿÿÐû+ÿÿÿÿü-ÿÿÿÿ7ü0ÿÿÿÿ…ü"ÿÿÿÿÄü!ÿÿÿÿ÷ü
+*ÿÿÿÿ-ý
+Aÿÿÿÿxý
+dÿÿÿÿæý
+$ÿÿÿÿþ1ÿÿÿÿPþ1ÿÿÿÿ‚þ
+ÿÿÿÿŸþ5ÿÿÿÿíþ&ÿÿÿÿ!ÿ=ÿÿÿÿqÿ&ÿÿÿÿÅÿ+ÿÿÿÿÿÿÿÿ8]ÿÿÿÿ¥!5ÿÿÿÿüKÿÿÿÿH<"ÿÿÿÿ¦$ÿÿÿÿß7
+ÿÿÿÿ!ÿÿÿÿi;ÿÿÿÿÑ?ÿÿÿÿ/ÿÿÿÿX2ÿÿÿÿ’ÿÿÿÿÃÿÿÿÿõ=ÿÿÿÿDIÿÿÿÿ§(ÿÿÿÿåIÿÿÿÿH!ÿÿÿÿ~!ÿÿÿÿ®ÿÿÿÿß+ÿÿÿÿ=ÿÿÿÿJ5ÿÿÿÿ€@ÿÿÿÿÅ7ÿÿÿÿý-ÿÿÿÿ+ÿÿÿÿH-ÿÿÿÿ…
+"	ÿÿÿÿØ?ÿÿÿÿ2ÿÿÿÿQ6EÿÿÿÿÌJÿÿÿÿ	jÿÿÿÿŽ	cÿÿÿÿø	gÿÿÿÿf
+VÿÿÿÿÃ
+mÿÿÿÿ7Dÿÿÿÿ‚‡ÿÿÿÿSÿÿÿÿdDÿÿÿÿ©>ÿÿÿÿ
8=ÿÿÿÿ†
9ÿÿÿÿÎ
'?ÿÿÿÿ7I/ÿÿÿÿ¯Mÿÿÿÿý_ÿÿÿÿ^LDÿÿÿÿîlÿÿÿÿ[�ÿÿÿÿùaÿÿÿÿ[
+Tÿÿÿÿ¹>ÿÿÿÿlÿÿÿÿƒÿÿÿÿÁ~ÿÿÿÿWKÿÿÿÿÀ
+uÿÿÿÿA
++MÿÿÿÿÅX#ÿÿÿÿB
+Rÿÿÿÿž
+fÿÿÿÿ
+qÿÿÿÿ‰
+}ÿÿÿÿ
+F<ÿÿÿÿœ
+?ÿÿÿÿå
+Bÿÿÿÿ1
+Kÿÿÿÿ†£dÿÿÿÿ“
+Qÿÿÿÿî
+=ÿÿÿÿ5'\ÿÿÿÿ¸\/ÿÿÿÿC\!ÿÿÿÿÀ
+aÿÿÿÿ+
+Àÿÿÿÿõ
+5ÿÿÿÿ4C9ÿÿÿÿ°mÿÿÿÿ=bÿÿÿÿ¿cÿÿÿÿ$h)ÿÿÿÿµ<H(kÿÿÿÿÌ 
+Oÿÿÿÿ%!Dÿÿÿÿ~!
+RÿÿÿÿÚ!(;ÿÿÿÿ="kÿÿÿÿ¯"Äÿÿÿÿz#WÿÿÿÿÙ#E$ÿÿÿÿI$E$ÿÿÿÿ¹$
+¨ÿÿÿÿk%
+MÿÿÿÿÂ%rÿÿÿÿ5&
+Pÿÿÿÿ�&
+Pÿÿÿÿé&
+PÿÿÿÿC'
+Pÿÿÿÿ�'
+Pÿÿÿÿ÷'
+PÿÿÿÿQ(rÿÿÿÿÄ(
+Wÿÿÿÿ%)
+Uÿÿÿÿ„)
+Wÿÿÿÿå)rÿÿÿÿX*rÿÿÿÿË*	Tÿÿÿÿ(+_ÿÿÿÿŽ+cÿÿÿÿø+YÿÿÿÿX,`ÿÿÿÿÀ,3TÿÿÿÿH-3>ÿÿÿÿ¹-@ÿÿÿÿ.
+Wÿÿÿÿs.
+‰ÿÿÿÿ/
+»ÿÿÿÿË/
+Rÿÿÿÿ'0mÿÿÿÿŸ0jÿÿÿÿ
+1
+)ÿÿÿÿ=1K„ÿÿÿÿ2Jÿÿÿÿd2uÿÿÿÿõ2\1ÿÿÿÿ’3Pÿÿÿÿø3"Hÿÿÿÿb4ã ÿÿÿÿf50hÿÿÿÿ6ƒÿÿÿÿ„6lpÿÿÿÿ`7'KÿÿÿÿÒ7tÿÿÿÿ]8P$ÿÿÿÿì89rÿÿÿÿ³9=|ÿÿÿÿl:6ÿÿÿÿ­:Uÿÿÿÿ;%Dÿÿÿÿz;(;ÿÿÿÿÝ;vÿÿÿÿn<�ÿÿÿÿ)=Pÿÿÿÿ˜="�ÿÿÿÿW>$XÿÿÿÿÓ>Xÿÿÿÿ??4ÿÿÿÿ“?Mÿÿÿÿâ?Zÿÿÿÿ=@wÿÿÿÿµ@ƒÿÿÿÿ=A€ÿÿÿÿ¾ATÿÿÿÿB ÿÿÿÿBB ]ÿÿÿÿ¿B
+49ÿÿÿÿLCŒÿÿÿÿ	    TLS: %pA	<corrupt: 0x%04lx>	Export Address Table 			Export Address Table 		%08lx
 	Invalid Export Address Table rva (0x%lx) or entry count (0x%lx)
 	Invalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)
 	Invalid Ordinal Table rva (0x%lx) or entry count (0x%lx)
@@ -317,19 +325,7 @@ ppcboot header:
   EGSD (len=%u):
   EGSD entry %2u (type: %u, len: %u):   EMH %u (len=%u):   base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x   base_va : 0x%08x
   bitcount: %u, base addr: 0x%08x
-  branch         %lu
-  branch toc adj %lu
-  branch notoc   %lu
-  branch both    %lu
-  long branch    %lu
-  long toc adj   %lu
-  long notoc     %lu
-  long both      %lu
-  plt call       %lu
-  plt call save  %lu
-  plt call notoc %lu
-  plt call both  %lu
-  global entry   %lu  calls:
+  calls:
   chgprtoff : %5u
   codeadroff: %5u, lpfixoff  : %5u
   fixuplnk: 0x%08x %08x
@@ -386,8 +382,15 @@ ppcboot header:
      		Address  Length   Length   32b exc  Handler   Data
  vma:            Hint    Time      Forward  DLL       First
                  Table   Stamp     Chain    Name      Thunk
-#<invalid error code>%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d
+#<invalid error code>%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC
+%%X%%P: unresolvable %s relocation against symbol `%s'
+%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d
 %03x %*.s Entry: %C: warning: relocation to "%s" references a different segment
+%F%P: %pB(%pA): error: need linked-to section for --gc-sections
+%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.
+%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%F%P: Could not assign group %pA target %pA to an output section. Retry without --enable-non-contiguous-regions.
 %F%P: already_linked_table: %E
 %F%P: auto overlay error: %E
 %F%P: can not build overlay stubs: %E
@@ -436,23 +439,22 @@ ppcboot header:
 %H: error: %s against `%s' not a multiple of %u
 %H: error: %s not a multiple of %u
 %H: fixup branch overflow
+%H: got/toc optimization is not supported for %s instruction
 %H: non-zero addend on %s reloc against `%s'
 %H: reloc against `%s' references a different segment
 %H: reloc against `%s': %s
 %H: relocation %s for indirect function %s unsupported
 %H: relocation references symbol not defined in the module
 %H: relocation to `%s+%v' may have caused the error above
-%H: toc optimization is not supported for %s instruction
 %H: unresolvable %s against `%pT'
 %H: unresolvable %s relocation against symbol `%s'
 %H: warning: %s unexpected insn %#x.
 %P%F: --relax and -r may not be used together
 %P%X: can not read symbols: %E
-%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC
 %P%X: read-only segment has dynamic relocations
-%P: %H: %s relocation unsupported for bss-plt
 %P: %H: error: %s with unexpected instruction %x
 %P: %pB: %s is not supported for `%pT'
+%P: %pB: warning: missing %s
 %P: %pB: warning: relocation against `%s' in read-only section `%pA'
 %P: %pB: warning: relocation in read-only section `%pA'
 %P: cannot find opd entry toc for `%pT'
@@ -461,7 +463,9 @@ ppcboot header:
 %P: linkage table error against `%pT'
 %P: multiple entry points: in modules %pB and %pB
 %P: relocatable link is not supported
-%P: warning: creating a DT_TEXTREL in a shared object
+%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s
+%P: warning: creating DT_TEXTREL in a PIE
+%P: warning: creating DT_TEXTREL in a shared object
 %P: warning: text relocations and GNU indirect functions may result in a segfault at runtime
 %X%C: relocation to "%s" references a different segment
 %X%H: @local call to ifunc %s
@@ -471,10 +475,14 @@ ppcboot header:
 %X%H: unsupported branch between ISA modes
 %X%H: unsupported bss-plt -fPIC ifunc %s
 %X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled
+%X%P: %H: %s relocation unsupported for bss-plt
 %X%P: %pB(%pA): error: relocation for offset %V has no value
 %X%P: %pB(%pA): relocation "%pR" goes out of range
 %X%P: %pB(%pA): relocation "%pR" is not supported
 %X%P: %pB(%pA): relocation "%pR" returns an unrecognized value %x
+%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation
+%X%P: %pB: error: missing %s
+%X%P: attempted static link of dynamic object `%pB'
 %X%P: internal error: out of range error
 %X%P: internal error: unknown error
 %X%P: internal error: unsupported relocation error
@@ -487,17 +495,17 @@ ppcboot header:
 %X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB
 %pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections%pA has both ordered and unordered sections%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)
 %pA:0x%v not found in function table
-%pB (%s): section flag %s (%#lx) ignored%pB .opd not allowed in ABI version %d%pB and %pB are for different configurations%pB and %pB are for different cores%pB contains CRIS v32 code, incompatible with previous objects%pB contains non-CRIS-v32 code, incompatible with previous objects%pB has both the current and legacy Tag_MPextension_use attributes%pB is not allowed to define %s%pB section %pA exceeds stub group size%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section%pB uses 64-bit long double, %pB uses 128-bit long double%pB uses AltiVec vector ABI, %pB uses SPE vector ABI%pB uses IBM long double, %pB uses IEEE long double%pB uses double-precision hard float, %pB uses single-precision hard float%pB uses hard float, %pB uses soft float%pB uses r3/r4 for small structure returns, %pB uses memory%pB uses unknown e_flags 0x%lx%pB(%pA): error: call to undefined function '%s'%pB(%pA): internal error: dangerous relocation%pB(%pA): internal error: out of range error%pB(%pA): internal error: unknown error%pB(%pA): internal error: unsupported relocation error%pB(%pA): invalid property table%pB(%pA): multiple TLS models are not supported%pB(%pA): relocation %d has invalid symbol index %ld%pB(%pA): shared library symbol %s encountered whilst performing a static link%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction%pB(%pA): warning: unaligned access to symbol '%s' in the small data area%pB(%pA): warning: unaligned small data access of type %d%pB(%pA+%#lx): stabs entry has invalid string index%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete
+%pB (%s): section flag %s (%#lx) ignored%pB .opd not allowed in ABI version %d%pB and %pB are for different configurations%pB and %pB are for different cores%pB contains CRIS v32 code, incompatible with previous objects%pB contains non-CRIS-v32 code, incompatible with previous objects%pB has both the current and legacy Tag_MPextension_use attributes%pB is not allowed to define %s%pB section %pA exceeds stub group size%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section%pB uses 64-bit long double, %pB uses 128-bit long double%pB uses AltiVec vector ABI, %pB uses SPE vector ABI%pB uses IBM long double, %pB uses IEEE long double%pB uses double-precision hard float, %pB uses single-precision hard float%pB uses hard float, %pB uses soft float%pB uses r3/r4 for small structure returns, %pB uses memory%pB uses unknown e_flags 0x%lx%pB(%pA): error: call to undefined function '%s'%pB(%pA): error: internal relocs missing for secondary reloc section%pB(%pA): error: reloc table entry %u is empty%pB(%pA): error: secondary reloc %u is of an unknown type%pB(%pA): error: secondary reloc %u references a deleted symbol%pB(%pA): error: secondary reloc %u references a missing symbol%pB(%pA): error: secondary reloc section is empty!%pB(%pA): error: secondary reloc section processed twice%pB(%pA): info section index cannot be set because the section is not in the output%pB(%pA): info section index is invalid%pB(%pA): internal error: dangerous relocation%pB(%pA): internal error: out of range error%pB(%pA): internal error: unknown error%pB(%pA): internal error: unsupported relocation error%pB(%pA): invalid property table%pB(%pA): link section cannot be set because the output file does not have a symbol table%pB(%pA): multiple TLS models are not supported%pB(%pA): relocation %d has invalid symbol index %ld%pB(%pA): shared library symbol %s encountered whilst performing a static link%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction%pB(%pA): warning: unaligned access to symbol '%s' in the small data area%pB(%pA): warning: unaligned small data access of type %d%pB(%pA+%#lx): stabs entry has invalid string index%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete
 %pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s%pB, section %pA:
-  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC%pB, section %pA: no PLT for relocation %s against symbol `%s'%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for global symbol: `%s'%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC%pB, section %pA: relocation %s with no GOT created%pB, section %pA: unresolvable relocation %s against symbol `%s'%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC%pB: !samegp reloc against symbol without .prologue: %s%pB: %pA invalid input section size%pB: %pA not in order%pB: %pA points past end of text section%pB: %pA: reloc overflow: %#x > 0xffff%pB: %s flag mismatch with previous modules%pB: %s not absolute%pB: %s unsupported%pB: %s' accessed both as normal and thread local symbol%pB: %s: invalid needed version %d%pB: %s: invalid version %u (max %d)%pB: %s: reloc overflow: 0x%lx > 0xffff%pB: '%s' accessed both as normal and thread local symbol%pB: --in-implib only supported for Secure Gateway import libraries%pB: .gnu.version_d invalid entry%pB: .gnu.version_r invalid entry%pB: .got subsegment exceeds 64K (size %d)%pB: .opd is not a regular array of opd entries%pB: .preinit_array section is not allowed in DSO%pB: .rsrc merge failure: corrupt .rsrc section%pB: .rsrc merge failure: unexpected .rsrc size%pB: @gprel relocation against dynamic symbol %s%pB: @internal branch to dynamic symbol %s%pB: @pcrel relocation against dynamic symbol %s%pB: ABI is incompatible with that of the selected emulation%pB: ABI is incompatible with that of the selected emulation:
-  target emulation `%s' does not match `%s'%pB: ABI mismatch: linking %s module with previous %s modules%pB: ABI version %ld is not compatible with ABI version %ld output%pB: ASE mismatch: linking %s module with previous %s modules%pB: BE8 images only valid in big-endian mode%pB: Cannot handle relocation value size of %d%pB: Function descriptor relocation with non-zero addend%pB: GNU_MBIN section `%pA' has invalid sh_info field: %d%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d%pB: GOT overflow: number of relocations with 8-bit offset > %d%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections%pB: TLS local exec code cannot be linked into shared objects%pB: TLS sections are not adjacent:%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: XCOFF shared object when not producing XCOFF output%pB: __gp does not cover short data segment%pB: `%s' accessed both as FDPIC and thread local symbol%pB: `%s' accessed both as normal and FDPIC symbol%pB: `%s' accessed both as normal and thread local symbol%pB: `%s' and its special symbol are in different sections%pB: `%s' has line numbers but no enclosing section%pB: `%s' in loader reloc but not loader sym%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)%pB: absent standard symbol `%s'%pB: addend should be zero for got relocations%pB: addend should be zero for plt relocations%pB: aout header specifies an invalid number of data-directory entries: %ld%pB: architecture mismatch with previous modules%pB: attempt to load strings from a non-string section (number %d)%pB: attempt to mix FDPIC and non-FDPIC objects%pB: attempt to write out unknown reloc type%pB: bad relocation record imported: %d%pB: bad relocation section name `%s'%pB: bad section length in ihex_read_section%pB: bad symbol definition: `Main' set to %s rather than the start address %s
+  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC%pB, section %pA: no PLT for relocation %s against symbol `%s'%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?%pB, section %pA: relocation %s is not allowed for global symbol: `%s'%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC%pB, section %pA: relocation %s with no GOT created%pB, section %pA: unresolvable relocation %s against symbol `%s'%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC%pB: !samegp reloc against symbol without .prologue: %s%pB: %pA invalid input section size%pB: %pA not in order%pB: %pA points past end of text section%pB: %pA: reloc overflow: %#x > 0xffff%pB: %s flag mismatch with previous modules%pB: %s local symbol at index %lu (>= sh_info of %lu)%pB: %s not absolute%pB: %s unsupported%pB: %s' accessed both as normal and thread local symbol%pB: %s: invalid needed version %d%pB: %s: invalid version %u (max %d)%pB: %s: reloc overflow: 0x%lx > 0xffff%pB: '%s' accessed both as normal and thread local symbol%pB: --in-implib only supported for Secure Gateway import libraries%pB: .gnu.version_d invalid entry%pB: .gnu.version_r invalid entry%pB: .got subsegment exceeds 64K (size %d)%pB: .opd is not a regular array of opd entries%pB: .preinit_array section is not allowed in DSO%pB: .rsrc merge failure: corrupt .rsrc section%pB: .rsrc merge failure: unexpected .rsrc size%pB: @gprel relocation against dynamic symbol %s%pB: @internal branch to dynamic symbol %s%pB: @pcrel relocation against dynamic symbol %s%pB: ABI is incompatible with that of the selected emulation%pB: ABI is incompatible with that of the selected emulation:
+  target emulation `%s' does not match `%s'%pB: ABI mismatch: linking %s module with previous %s modules%pB: ABI version %ld is not compatible with ABI version %ld output%pB: ASE mismatch: linking %s module with previous %s modules%pB: BE8 images only valid in big-endian mode%pB: Cannot handle relocation value size of %d%pB: Function descriptor relocation with non-zero addend%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d%pB: GOT overflow: number of relocations with 8-bit offset > %d%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections%pB: TLS local exec code cannot be linked into shared objects%pB: TLS relocation %s against undefined symbol `%s'%pB: TLS sections are not adjacent:%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead.%pB: XCOFF shared object when not producing XCOFF output%pB: __gp does not cover short data segment%pB: `%s' accessed both as FDPIC and thread local symbol%pB: `%s' accessed both as normal and FDPIC symbol%pB: `%s' accessed both as normal and thread local symbol%pB: `%s' and its special symbol are in different sections%pB: `%s' has line numbers but no enclosing section%pB: `%s' in loader reloc but not loader sym%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)%pB: absent standard symbol `%s'%pB: addend should be zero for got relocations%pB: addend should be zero for plt relocations%pB: aout header specifies an invalid number of data-directory entries: %u%pB: architecture mismatch with previous modules%pB: attempt to load strings from a non-string section (number %d)%pB: attempt to mix FDPIC and non-FDPIC objects%pB: attempt to write out unknown reloc type%pB: bad relocation record imported: %d%pB: bad relocation section name `%s'%pB: bad section length in ihex_read_section%pB: bad symbol definition: `Main' set to %s rather than the start address %s
 %pB: bad symbol index: %d%pB: base-plus-offset relocation against register symbol: %s in %pA%pB: base-plus-offset relocation against register symbol: (unknown) in %pA%pB: can not represent section `%pA' in a.out object file format%pB: can not represent section for symbol `%s' in a.out object file format%pB: can't link %s modules with %s modules%pB: can't link RVE with other target%pB: cannot allocate file name for file number %d, %d bytes
-%pB: cannot create stub entry %s%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot link fdpic object file into non-fdpic executable%pB: cannot link non-fdpic object file into fdpic executable%pB: cannot link together %s and %s objects%pB: change in gp: BRSGP %s%pB: class %d symbol `%s' has no aux entries%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s%pB: compiled for a 64 bit system and target is 32 bit%pB: compiled for a big endian system and target is little endian%pB: compiled for a little endian system and target is big endian%pB: compiled normally and linked with modules compiled with -mrelocatable%pB: compiled with %s and linked with modules compiled with %s%pB: compiled with %s and linked with modules that use non-pic relocations%pB: compiled with -mrelocatable and linked with modules compiled normally%pB: could not find output section %pA for input section %pA%pB: could not read contents of section `%pA'
+%pB: cannot allocate memory for local GOT entries%pB: cannot create stub entry %s%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot link fdpic object file into non-fdpic executable%pB: cannot link non-fdpic object file into fdpic executable%pB: cannot link together %s and %s objects%pB: change in gp: BRSGP %s%pB: class %d symbol `%s' has no aux entries%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s%pB: compiled for a 64 bit system and target is 32 bit%pB: compiled for a big endian system and target is little endian%pB: compiled for a little endian system and target is big endian%pB: compiled normally and linked with modules compiled with -mrelocatable%pB: compiled with %s and linked with modules compiled with %s%pB: compiled with %s and linked with modules that use non-pic relocations%pB: compiled with -mrelocatable and linked with modules compiled normally%pB: could not find output section %pA for input section %pA%pB: could not read contents of section `%pA'
 %pB: csect `%s' not in enclosing section%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object%pB: directive LOCAL valid only with a register or absolute value%pB: dtp-relative relocation against dynamic symbol %s%pB: duplicate export stub %s%pB: duplicate section `%pA' has different contents
 %pB: duplicate section `%pA' has different size
 %pB: dynamic object with no .loader section%pB: dynamic relocation against `%pT' in read-only section `%pA'
 %pB: dynamic relocation in read-only section `%pA'
-%pB: endianness incompatible with that of the selected emulation%pB: entry function `%s' is empty%pB: entry function `%s' not output%pB: error: ABI mismatch with previous modules%pB: error: Cortex-A8 erratum stub is allocated in unsafe location%pB: error: Cortex-A8 erratum stub out of range (input file too large)%pB: error: PHDR segment not covered by LOAD segment%pB: error: VFP11 veneer out of range%pB: error: alignment power %d of section `%pA' is too big%pB: error: attribute section '%pA' too big: %#llx%pB: error: cannot create STM32L4XX veneer%pB: error: debug data ends beyond end of debug directory%pB: error: erratum 835769 stub out of range (input file too large)%pB: error: erratum 843419 stub out of range (input file too large)%pB: error: instruction set mismatch with previous modules%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file%pB: error: non-load segment %d includes file header and/or program header%pB: error: search_nds32_elf_blank reports wrong node%pB: error: unexpected symbol '%s' in COMDAT section%pB: error: unknown mandatory EABI object attribute %d%pB: failed to find info section for section %d%pB: failed to find link section for section %d%pB: failed to generate import library%pB: failed to read debug data section%pB: fatal: generic symbols retrieved before relaxing%pB: file class %s incompatible with %s%pB: gotoff relocation against dynamic symbol %s%pB: gp-relative relocation against dynamic symbol %s%pB: group section '%pA' has no contents%pB: hidden symbol `%s' in %pB is referenced by DSO%pB: hidden symbol `%s' isn't defined%pB: ignoring duplicate section `%pA'
+%pB: endianness incompatible with that of the selected emulation%pB: entry function `%s' is empty%pB: entry function `%s' not output%pB: error: ABI mismatch with previous modules%pB: error: Cortex-A8 erratum stub is allocated in unsafe location%pB: error: Cortex-A8 erratum stub out of range (input file too large)%pB: error: PHDR segment not covered by LOAD segment%pB: error: VFP11 veneer out of range%pB: error: alignment power %d of section `%pA' is too big%pB: error: attribute section '%pA' too big: %#llx%pB: error: cannot create STM32L4XX veneer%pB: error: debug data ends beyond end of debug directory%pB: error: erratum 835769 stub out of range (input file too large)%pB: error: erratum 843419 immediate 0x%%pB: error: erratum 843419 stub out of range (input file too large)%pB: error: instruction set mismatch with previous modules%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file%pB: error: non-load segment %d includes file header and/or program header%pB: error: search_nds32_elf_blank reports wrong node%pB: error: unexpected symbol '%s' in COMDAT section%pB: error: unknown mandatory EABI object attribute %d%pB: failed to find info section for section %d%pB: failed to find link section for section %d%pB: failed to generate import library%pB: failed to read debug data section%pB: fatal: generic symbols retrieved before relaxing%pB: file class %s incompatible with %s%pB: gotoff relocation against dynamic symbol %s%pB: gp-relative relocation against dynamic symbol %s%pB: group section '%pA' has no contents%pB: hidden symbol `%s' in %pB is referenced by DSO%pB: hidden symbol `%s' isn't defined%pB: ignoring duplicate section `%pA'
 %pB: illegal section name `%pA'%pB: illegal symbol index %ld in relocs%pB: incompatible machine type; output is 0x%x; input is 0x%x%pB: incorrect size for symbol `%s'%pB: indirect symbol `%s' to `%s' is a loop%pB: instruction set mismatch with previous modules%pB: internal error in ihex_read_section%pB: internal error, internal register section %pA had contents
 %pB: internal error, symbol table changed size from %d to %d words
 %pB: internal symbol `%s' in %pB is referenced by DSO%pB: internal symbol `%s' isn't defined%pB: invalid entry in SHT_GROUP section [%u]%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions%pB: invalid link %u for reloc section %s (index %u)%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)
@@ -514,11 +522,23 @@ ppcboot header:
 %pB: invalid mmo file: lop_end not last item in file
 %pB: invalid mmo file: unsupported lopcode `%d'
 %pB: invalid sh_link field (%d) in section number %d%pB: invalid special symbol `%s'; it must be a global or weak function symbol%pB: invalid standard symbol `%s'; it must be a global or weak function symbol%pB: invalid symbol table: duplicate symbol `%s'
-%pB: line number overflow: 0x%lx > 0xffff%pB: linking %s module with previous %s modules%pB: linking 32-bit code with 64-bit code%pB: linking 64-bit files with 32-bit files%pB: linking UltraSPARC specific with HAL specific code%pB: linking auto-pic files with non-auto-pic files%pB: linking big-endian files with little-endian files%pB: linking constant-gp files with non-constant-gp files%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%pB: linking files compiled for HCS12 with others compiled for HC12%pB: linking little endian files with big endian files%pB: linking non-pic code in a position independent executable%pB: linking trap-on-NULL-dereference with non-trapping files%pB: loader reloc in read-only section %pA%pB: loader reloc in unrecognized section `%s'%pB: local symbol `%s' in %pB is referenced by DSO%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol%pB: machine flag conflict with target%pB: malformed reloc detected for section %pA%pB: malformed reloc detected for section %s%pB: misplaced XTY_LD `%s'%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no core to allocate section name %s%pB: no group info for section '%pA'%pB: no initialized registers; section length 0
-%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: no valid group sections found%pB: non-pic code with imm relocation against dynamic symbol `%s'%pB: non-pic relocation against symbol %s%pB: not enough room for program headers, try linking with -N%pB: only registers %%g[2367] can be declared using STT_REGISTER%pB: out of memory creating name for empty section%pB: out of memory in _bfd_elf_get_property%pB: page size is too large (0x%x)%pB: pc-relative relocation against dynamic symbol %s%pB: pc-relative relocation against undefined weak symbol %s%pB: plugin needed to handle lto object%pB: probably compiled without -fPIC?%pB: protected symbol `%s' isn't defined%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive%pB: register relocation against non-register symbol: %s in %pA%pB: register relocation against non-register symbol: (unknown) in %pA%pB: reloc against a non-existent symbol index: %ld%pB: relocatable link from %s to %s not supported%pB: relocation %s against %s%s`%s' can not be used when making %s%s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported%pB: relocation %s against `%s' can not be used when making a shared object%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against symbol `%s' isn't supported in x32 mode%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC%pB: relocation %s can not be used when making a shared object; recompile with -fPIC%pB: relocation %s cannot be used when making a shared object%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object%pB: relocation size mismatch in %pB section %pA%pB: relocations in generic ELF (EM: %d)%pB: relocs in section `%pA', but it has no contents%pB: section %pA: string table overflow at offset %ld%pB: section `%pA' can't be allocated in segment %d%pB: section group entry number %u is corrupt%pB: sh_link [%d] in section `%pA' is incorrect%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'%pB: size field is zero in Import Library Format header%pB: special symbol `%s' only allowed for ARMv8-M architecture or later%pB: speculation fixup to dynamic symbol %s%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: support for local dynamic not implemented%pB: symbol `%s' has unrecognized csect type %d%pB: symbol `%s' has unrecognized smclas %d%pB: symbol `%s' required but not present%pB: taking the address of protected function '%s' cannot be done when making a shared library%pB: the target (%s) of a %s relocation is in the wrong output section (%s)%pB: the target (%s) of an %s relocation is in the wrong section (%pA)%pB: too many sections (%d)%pB: too many sections: %d (>= %d)%pB: too many sections: %u%pB: tp-relative relocation against dynamic symbol %s%pB: unable to create fake empty section%pB: unable to fill in DataDictionary[12] because .idata$5 is missing%pB: unable to fill in DataDictionary[1] because .idata$2 is missing%pB: unable to fill in DataDictionary[1] because .idata$4 is missing%pB: unable to fill in DataDictionary[9] because __tls_used is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing%pB: unable to find %s veneer `%s'%pB: unable to find name for empty section%pB: unable to get decompressed section %pA%pB: unable to initialize compress status for section %s%pB: unable to initialize decompress status for section %s%pB: unable to load COMDAT section name%pB: unable to sort relocs - they are in more than one size%pB: unable to sort relocs - they are of an unknown size%pB: undefined reference to symbol '%s'%pB: undefined sym `%s' in .opd section%pB: undefined symbol on R_PPC64_TOCSAVE relocation%pB: unexpected redefinition of indirect versioned symbol `%s'%pB: unexpected reloc type %u in .opd section%pB: unhandled dynamic relocation against %s%pB: unhandled import type; %x%pB: unknown architecture %s%pB: unknown load command %#x%pB: unknown mandatory ARC object attribute %d%pB: unknown mandatory EABI object attribute %d%pB: unknown relocation type %d%pB: unknown type [%#x] section `%s'%pB: unknown type [%#x] section `%s' in group [%pA]%pB: unmatched OMIT_FP in %pA%pB: unrecognised machine type (0x%x) in Import Library Format archive%pB: unrecognized import name type; %x%pB: unrecognized import type; %x%pB: unrecognized relocation type %#x in section `%pA'%pB: unrecognized storage class %d for %s symbol `%s'%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported transition from %s to %s%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
-%pB: uses %s instructions while previous modules use %s instructions%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols%pB: uses different e_flags (%#x) fields than previous modules (%#x)%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)%pB: uses instructions which are incompatible with instructions used in previous modules%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols%pB: version node not found for symbol %s%pB: visibility of symbol `%s' has changed%pB: warning core file truncated%pB: warning: %pA: line number overflow: %#x > 0xffff%pB: warning: %s BLX instruction targets %s function '%s'%pB: warning: %s relocation against symbol `%s' from %pA section%pB: warning: %s unsupported in shared mode%pB: warning: %s: line number overflow: 0x%lx > 0xffff%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: RVE PLT generation not supported%pB: warning: allocated section `%s' not in segment%pB: warning: bad `%s' option size %u smaller than its header%pB: warning: cannot determine the target function for stub section `%s'%pB: warning: claims to have 0xffff relocs, without overflow%pB: warning: duplicate line number information for `%s'%pB: warning: endian mismatch with previous modules%pB: warning: ignoring section flag %s in section %s%pB: warning: illegal symbol in line number entry %d%pB: warning: illegal symbol index %ld in relocs%pB: warning: illegal symbol index 0x%lx in line number entry %d%pB: warning: incompatible elf-versions %s and %s%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)%pB: warning: line number count (%#lx) exceeds section size (%#lx)%pB: warning: line number table read failed%pB: warning: linking PIC files with non-PIC files%pB: warning: linking abicalls files with non-abicalls files%pB: warning: loop in section dependencies detected%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u%pB: warning: multiple symbol tables detected - ignoring the table in section %u%pB: warning: no symbol for section '%s' found%pB: warning: older version of object file encountered, please recompile with current tool chain%pB: warning: relocate SDA_BASE failed%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture%pB: warning: sh_link not set for section `%pA'%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
+%pB: invalid version offset %lx (max %lx)%pB: line number overflow: 0x%lx > 0xffff%pB: linking %s module with previous %s modules%pB: linking 32-bit code with 64-bit code%pB: linking 64-bit files with 32-bit files%pB: linking UltraSPARC specific with HAL specific code%pB: linking auto-pic files with non-auto-pic files%pB: linking big-endian files with little-endian files%pB: linking constant-gp files with non-constant-gp files%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%pB: linking files compiled for HCS12 with others compiled for HC12%pB: linking little endian files with big endian files%pB: linking non-pic code in a position independent executable%pB: linking trap-on-NULL-dereference with non-trapping files%pB: loader reloc in read-only section %pA%pB: loader reloc in unrecognized section `%s'%pB: local symbol `%s' in %pB is referenced by DSO%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol%pB: machine flag conflict with target%pB: malformed reloc detected for section %pA%pB: malformed reloc detected for section %s%pB: misplaced XTY_LD `%s'%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no core to allocate section name %s%pB: no group info for section '%pA'%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: no valid group sections found%pB: non-pic code with imm relocation against dynamic symbol `%s'%pB: non-pic relocation against symbol %s%pB: not enough room for program headers, try linking with -N%pB: not enough version information%pB: only registers %%g[2367] can be declared using STT_REGISTER%pB: out of memory creating name for empty section%pB: out of memory in _bfd_elf_get_property%pB: page size is too large (0x%x)%pB: pc-relative relocation against dynamic symbol %s%pB: pc-relative relocation against undefined weak symbol %s%pB: plugin needed to handle lto object%pB: probably compiled without -fPIC?%pB: protected symbol `%s' isn't defined%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive%pB: register relocation against non-register symbol: %s in %pA%pB: register relocation against non-register symbol: (unknown) in %pA%pB: reloc against a non-existent symbol index: %ld%pB: relocatable link from %s to %s not supported%pB: relocation %s against %s%s`%s' can not be used when making %s%s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported%pB: relocation %s against `%s' can not be used when making a shared object%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against symbol `%s' isn't supported in x32 mode%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC%pB: relocation %s can not be used when making a shared object; recompile with -fPIC%pB: relocation %s cannot be used when making a shared object%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object%pB: relocation size mismatch in %pB section %pA%pB: relocations in generic ELF (EM: %d)%pB: relocs in section `%pA', but it has no contents%pB: section %pA: string table overflow at offset %ld%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %d%pB: section group entry number %u is corrupt%pB: sh_link [%d] in section `%pA' is incorrect%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'%pB: size field is zero in Import Library Format header%pB: special symbol `%s' only allowed for ARMv8-M architecture or later%pB: speculation fixup to dynamic symbol %s%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: support for local dynamic not implemented%pB: symbol `%s' has unrecognized csect type %d%pB: symbol `%s' has unrecognized smclas %d%pB: symbol `%s' required but not present%pB: symbol indicates overlay (not supported)%pB: taking the address of protected function '%s' cannot be done when making a shared library%pB: the target (%s) of a %s relocation is in the wrong output section (%s)%pB: the target (%s) of an %s relocation is in the wrong section (%pA)%pB: too many sections (%d)%pB: too many sections: %d (>= %d)%pB: too many sections: %u%pB: tp-relative relocation against dynamic symbol %s%pB: unable to create fake empty section%pB: unable to fill in DataDictionary[12] because .idata$5 is missing%pB: unable to fill in DataDictionary[1] because .idata$2 is missing%pB: unable to fill in DataDictionary[1] because .idata$4 is missing%pB: unable to fill in DataDictionary[9] because __tls_used is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing%pB: unable to find %s veneer `%s'%pB: unable to find name for empty section%pB: unable to get decompressed section %pA%pB: unable to initialize compress status for section %s%pB: unable to initialize decompress status for section %s%pB: unable to load COMDAT section name%pB: unable to sort relocs - they are in more than one size%pB: unable to sort relocs - they are of an unknown size%pB: undefined reference to symbol '%s'%pB: undefined sym `%s' in .opd section%pB: undefined symbol on R_PPC64_TOCSAVE relocation%pB: unexpected redefinition of indirect versioned symbol `%s'%pB: unexpected reloc type %u in .opd section%pB: unhandled dynamic relocation against %s%pB: unhandled import type; %x%pB: unhandled sparc machine value '%lu' detected during write processing%pB: unknown architecture %s%pB: unknown load command %#x%pB: unknown mandatory ARC object attribute %d%pB: unknown mandatory EABI object attribute %d%pB: unknown relocation type %d%pB: unknown type [%#x] section `%s'%pB: unknown type [%#x] section `%s' in group [%pA]%pB: unmatched OMIT_FP in %pA%pB: unrecognised machine type (0x%x) in Import Library Format archive%pB: unrecognized import name type; %x%pB: unrecognized import type; %x%pB: unrecognized relocation type %#x in section `%pA'%pB: unrecognized storage class %d for %s symbol `%s'%pB: unsupported AOUT relocation size: %d%pB: unsupported arch %#x%pB: unsupported bfd mach %#lx%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported transition from %s to %s%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
+%pB: uses %s instructions while previous modules use %s instructions%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols%pB: uses different e_flags (%#x) fields than previous modules (%#x)%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)%pB: uses instructions which are incompatible with instructions used in previous modules%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols%pB: version node not found for symbol %s%pB: visibility of symbol `%s' has changed%pB: warning core file truncated%pB: warning: %pA: line number overflow: %#x > 0xffff%pB: warning: %s BLX instruction targets %s function '%s'%pB: warning: %s relocation against symbol `%s' from %pA section%pB: warning: %s unsupported in shared mode%pB: warning: %s: line number overflow: 0x%lx > 0xffff%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section.%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: RVE PLT generation not supported%pB: warning: Weak TLS is implementation defined and may not work as expected%pB: warning: allocated section `%s' not in segment%pB: warning: bad `%s' option size %u smaller than its header%pB: warning: cannot determine the target function for stub section `%s'%pB: warning: claims to have 0xffff relocs, without overflow%pB: warning: duplicate line number information for `%s'%pB: warning: endian mismatch with previous modules%pB: warning: ignoring section flag %s in section %s%pB: warning: illegal symbol in line number entry %d%pB: warning: illegal symbol index %ld in relocs%pB: warning: illegal symbol index 0x%lx in line number entry %d%pB: warning: incompatible elf-versions %s and %s%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)%pB: warning: line number count (%#lx) exceeds section size (%#lx)%pB: warning: line number table read failed%pB: warning: linking PIC files with non-PIC files%pB: warning: linking abicalls files with non-abicalls files%pB: warning: loop in section dependencies detected%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u%pB: warning: multiple symbol tables detected - ignoring the table in section %u%pB: warning: no symbol for section '%s' found%pB: warning: older version of object file encountered, please recompile with current tool chain%pB: warning: relocate SDA_BASE failed%pB: warning: secondary relocation section '%s' for section %pA found - ignoring%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture%pB: warning: sh_link not set for section `%pA'%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
 %pB: warning: thumb-1 mode PLT generation not currently supported%pB: warning: unaligned access to GOT entry%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)%pB: warning: unknown EABI object attribute %d%pB: will not resolve runtime TLS relocation%pB:%d: bad checksum in S-record file%pB:%d: byte count %d too small%pB:%d: unexpected character `%s' in Intel Hex file%pB:%d: unexpected character `%s' in S-record file%pB:%pA%s exceeds overlay size
-%pB:%pA: %s and %s must be in the same input section%pB:%pA: error: relocation references symbol %s which was removed by garbage collection%pB:%pA: error: try relinking with --gc-keep-exported enabled%pB:%pA: table %s missing corresponding %s%pB:%pA: table entry %s not word-aligned within table%pB:%pA: table entry %s outside table%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s%pB:%s has both normal and TLS relocs%pB:%s section %s: alignment 2**%u not representable%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)%pB:%u: bad extended address record length in Intel Hex file%pB:%u: bad extended linear address record length in Intel Hex file%pB:%u: bad extended linear start address length in Intel Hex file%pB:%u: bad extended start address length in Intel Hex file%pB:%u: unrecognized ihex type %u in Intel Hex file%s defined on removed toc entry%s duplicated
+%pB:%pA: %s and %s must be in the same input section%pB:%pA: error: attempting to write into an unallocated compressed section%pB:%pA: error: attempting to write over the end of the section%pB:%pA: error: attempting to write section into an empty buffer%pB:%pA: error: relocation references symbol %s which was removed by garbage collection%pB:%pA: error: try relinking with --gc-keep-exported enabled%pB:%pA: table %s missing corresponding %s%pB:%pA: table entry %s not word-aligned within table%pB:%pA: table entry %s outside table%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s%pB:%s has both normal and TLS relocs%pB:%s section %s: alignment 2**%u not representable%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)%pB:%u: bad extended address record length in Intel Hex file%pB:%u: bad extended linear address record length in Intel Hex file%pB:%u: bad extended linear start address length in Intel Hex file%pB:%u: bad extended start address length in Intel Hex file%pB:%u: unrecognized ihex type %u in Intel Hex file%pcrel_lo section symbol with an addend%s  branch         %lu
+  branch toc adj %lu
+  branch notoc   %lu
+  branch both    %lu
+  long branch    %lu
+  long toc adj   %lu
+  long notoc     %lu
+  long both      %lu
+  plt call       %lu
+  plt call save  %lu
+  plt call notoc %lu
+  plt call both  %lu
+  global entry   %lu%s defined on removed toc entry%s divide by zero%s duplicated
 %s duplicated in %s
 %s has both normal and TLS relocs%s in overlay section%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA%s: TLS reference in %pB mismatches non-TLS reference in %pB%s: no such symbol%s: not implemented%s: not supported%s: undefined version: %s(at bit offset %u)
 (descriptor)
@@ -534,8 +554,8 @@ ppcboot header:
 *unknown**unknown*        , Value: %#08lx
 , alias: %u
 , ext fixup offset: %u, no_opt psect off: %u, subtype: %u (%s)
-, symbol vector rva: - %pB is 64-bit, %pB is not-mips32r2 -mfp64 (12 callee-saved).eh_frame_hdr entry overflow.eh_frame_hdr refers to overlapping FDEs.got section not immediately after .plt section.rsrc merge failure: a directory matches a leaf.rsrc merge failure: differing directory versions.rsrc merge failure: dirs with differing characteristics.rsrc merge failure: duplicate leaf.rsrc merge failure: duplicate leaf: %s.rsrc merge failure: duplicate string resource: %d.rsrc merge failure: multiple non-default manifests32-bit double, 32bits gp relative relocation occurs for an external symbol4-byte4-bytes64 bits *unhandled*
-64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC<Unrecognised flag bits set><corrupt info> %s<corrupt string length: %#x>
+, symbol vector rva: - %pB is 64-bit, %pB is not-march=%s: %s ISA extension not in alphabetical order: '%s' must come before '%s'.-march=%s: %s must separate with _-march=%s: Duplicate %s ISA extension: '%s'-march=%s: Expect number after `%dp'.-march=%s: ISA string is not in canonical order. `%c'-march=%s: ISA string must begin with rv32 or rv64-march=%s: Invalid or unknown %s ISA extension: '%s'-march=%s: `d' extension requires `f' extension-march=%s: `q' extension requires `d' extension-march=%s: first ISA subset must be `e', `i' or `g'-march=%s: rv%de is not a valid base ISA-march=%s: rv32 does not support the `q' extension-march=%s: rv32e does not support the `f' extension-march=%s: unexpected ISA string at end: %s-march=%s: unsupported ISA subset `%c'-mips32r2 -mfp64 (12 callee-saved).eh_frame_hdr entry overflow.eh_frame_hdr refers to overlapping FDEs.got section not immediately after .plt section.rsrc merge failure: a directory matches a leaf.rsrc merge failure: differing directory versions.rsrc merge failure: dirs with differing characteristics.rsrc merge failure: duplicate leaf.rsrc merge failure: duplicate leaf: %s.rsrc merge failure: duplicate string resource: %d.rsrc merge failure: multiple non-default manifests32-bit double, 32bits gp relative relocation occurs for an external symbol4-byte4-bytes64 bits *unhandled*
+64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC; recompile with -fPIE<Unrecognised flag bits set><corrupt info> %s<corrupt string length: %#x>
 <corrupt string offset: %#lx>
 <corrupt><unknown directory type: %d>
 <unknown mask flags><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBFD %s internal error, aborting at %s:%d
@@ -548,7 +568,7 @@ ppcboot header:
 CTL_STLOC (set location)
 Copyright Header
 Corrupt .rsrc section detected!
-DSO missing from command lineDWARF error: DW_AT_comp_dir attribute encountered with a non-string formDWARF error: abstract instance recursion detectedDWARF error: can't find %s section.DWARF error: could not find abbrev number %uDWARF error: found address size '%u', this reader can not handle sizes greater than '%u'DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 informationDWARF error: info pointer extends beyond end of attributesDWARF error: invalid abstract instance DIE refDWARF error: invalid maximum operations per instructionDWARF error: invalid or unhandled FORM value: %#xDWARF error: line info unsupported segment selector size %uDWARF error: mangled line number sectionDWARF error: mangled line number section (bad file number)DWARF error: ran out of room reading opcodesDWARF error: ran out of room reading prologueDWARF error: unhandled .debug_line version %dDWARF error: zero format countDW_EH_PE_datarel unspecified for this architectureDebug DirectoryDebug module table:
+DSO missing from command lineDWARF error: DW_AT_comp_dir attribute encountered with a non-string formDWARF error: abstract instance recursion detectedDWARF error: can't find %s section.DWARF error: could not find abbrev number %uDWARF error: could not find variable specification at offset %lxDWARF error: found address size '%u', this reader can not handle sizes greater than '%u'DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 informationDWARF error: info pointer extends beyond end of attributesDWARF error: invalid abstract instance DIE refDWARF error: invalid maximum operations per instructionDWARF error: invalid or unhandled FORM value: %#xDWARF error: line info unsupported segment selector size %uDWARF error: mangled line number sectionDWARF error: mangled line number section (bad file number)DWARF error: ran out of room reading opcodesDWARF error: ran out of room reading prologueDWARF error: unhandled .debug_line version %dDWARF error: zero format countDW_EH_PE_datarel unspecified for this architectureDebug DirectoryDebug module table:
 Debug symbol table:
 Delay Import DirectoryDeprecated %s called
 Deprecated %s called at %s line %d in %s
@@ -556,7 +576,7 @@ ppcboot header:
 Entry offset        = 0x%.8lx (%ld)
 Error: %pB has both the current and legacy Tag_MPextension_use attributesException Directory [.pdata]Export Directory [.edata (or where ever we found it)]Export Flags 			%lx
 Export RVAFDE encoding in %pB(%pA) prevents .eh_frame_hdr table being createdFDPIC does not yet support %s relocation to become dynamic for executableFILES_VOLUMES    FPU-2.0FPU-3.0Flag field          = 0x%.2x
-Forwarder RVAGALAXY           GOT and PLT relocations cannot be fixed with a non dynamic linkerGOT table size out of rangeGP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
+Forwarder RVAGALAXY           GNU_MBIND section is unsupportedGOT and PLT relocations cannot be fixed with a non dynamic linkerGOT table size out of rangeGP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
 Hard float (32-bit CPU, 64-bit FPU)
 Hard float (32-bit CPU, Any FPU)
 Hard float (MIPS32r2 64-bit FPU 12 callee-saved)
@@ -564,8 +584,8 @@ ppcboot header:
 Hard float (single precision)
 Hard float compat (32-bit CPU, 64-bit FPU)
 Hard or soft float
-ID: %#08lxIDC - Ident Consistency check
-IMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supportedIO               Image activation:  (size=%u)
+IBT and SHSTK propertiesIBT propertyID: %#08lxIDC - Ident Consistency check
+IFUNC symbol %s in dynamic symbol table - IFUNCS are not supportedIMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supportedIO               Image activation:  (size=%u)
 Image activator fixup: (major: %u, minor: %u)
 Image identification: (major: %u, minor: %u)
 Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)
@@ -608,7 +628,7 @@ ppcboot header:
 Removed property %W to merge %pB (not found) and %pB (0x%v)
 Removed property %W to merge %pB and %pB
 Removed property %W to merge %pB and %pB (not found)
-ReservedResource Directory [.rsrc]S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your codeSDA relocation when _SDA_BASE_ not definedSECURITY         SEC_RELOC with no relocs in section %pASHELL            SHRFXDSHRPICSIMD use: SPSC - Shared Image Program section def
+ReservedResource Directory [.rsrc]S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your codeSDA relocation when _SDA_BASE_ not definedSECURITY         SEC_RELOC with no relocs in section %pASHELL            SHRFXDSHRPICSHSTK propertySIMD use: SPSC - Shared Image Program section def
 STABLE           STA_CKARG (compare procedure argument)
 STA_GBL (stack global) %.*s
 STA_LI (stack literal)
@@ -668,11 +688,11 @@ ppcboot header:
 Warning: %s section size (%ld) is smaller than virtual size (%ld)
 Warning: %s section size is zero
 Writing updated armap timestampXGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code.[%u]: Lower: %u, upper: %u
-[abi=16-bit int, [abi=32-bit int, [whose name is lost]_bfd_vms_output_counted called with too many bytes_bfd_vms_output_counted called with zero bytes`%s' refers to a non entry functiona PDE objecta PIE objecta shared objectaddressaddress not word alignedalternate ELF machine code found (%d) in %pB, expecting %darchive has no index; run ranlib to add onearchive object file in wrong formatarray descriptor:
+[abi=16-bit int, [abi=32-bit int, [whose name is lost]__tls_get_addr call offset overflow_bfd_vms_output_counted called with too many bytes_bfd_vms_output_counted called with zero bytes`%s' refers to a non entry functiona PDE objecta PIE objecta shared objectaddressaddress not word alignedalternate ELF machine code found (%d) in %pB, expecting %darchive has no index; run ranlib to add onearchive object file in wrong formatarray descriptor:
 array, dim: %u, bitmap: arsize: %u, a0: 0x%08x
 atomic, type=0x%02x %s
 attempt to convert L32R/CALLX to CALL failedattempt to do relocatable link with %s input and %s outputbad section index in %sbad valuebanked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)base: %u, pos: %u
-bfd_mach_o_canonicalize_symtab: unable to load symbolsbfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)bfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid section %d (max %lu): setting to undefinedbfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid type field 0x%x: setting to undefinedbfd_mach_o_read_symtab_symbol: unable to read %d bytes at %ubfd_mach_o_read_symtab_symbols: unable to allocate memory for symbolsbfd_mach_o_scan: unknown architecture 0x%lx/0x%lxbfd_pef_scan: unknown architecture 0x%lxblkbeg: address: 0x%08x, name: %.*s
+bfd_mach_o_canonicalize_symtab: unable to load symbolsbfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 insteadbfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)bfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid section %d (max %lu): setting to undefinedbfd_mach_o_read_symtab_symbol: symbol "%s" specified invalid type field 0x%x: setting to undefinedbfd_mach_o_read_symtab_symbol: unable to read %d bytes at %ubfd_mach_o_scan: unknown architecture 0x%lx/0x%lxbfd_pef_scan: unknown architecture 0x%lxblkbeg: address: 0x%08x, name: %.*s
 blkend: size: 0x%08x
 branch (PC rel16) to section (%s) not supportedbranch to a non-instruction-aligned addressbss-plt forced by profilingbss-plt forced due to %pBcan't build branch stub `%s'can't find branch stub `%s'cannot convert a branch to JALX for a non-word-aligned addresscannot convert a jump to JALX for a non-word-aligned addresscannot create stub entry %scannot emit dynamic relocations in read-only sectioncannot emit fixups in read-only sectioncannot find EMH in first GST record
 cannot read DMT
@@ -693,36 +713,35 @@ ppcboot header:
 cannot read GST record header
 cannot read GST record length
 class: %u, dtype: %u, length: %u, pointer: 0x%08x
-corrupt %s section in %pBcorrupt EEOM record - size is too smallcorrupt EGSD record: its psindx field is too big (%#lx)corrupt EGSD record: its size (%#x) is too smallcorrupt EGSD record: size (%#x) is larger than remaining space (%#x)corrupt EGSD record: size (%#x) is too smallcorrupt EIHD record - size is too smallcorrupt ETIR record encounteredcorrupt vms valuecould not find section %scould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcould not open shared image '%s' from '%s'cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dangerous relocationdelta pc +%-4ddelta_pc_l: +0x%08x
+corrupt %s section in %pBcorrupt EEOM record - size is too smallcorrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)corrupt EGSD record type %d: size (%#x) is too smallcorrupt EGSD record: its psindx field is too big (%#lx)corrupt EGSD record: its size (%#x) is too smallcorrupt EIHD record - size is too smallcorrupt ETIR record encounteredcorrupt vms valuecould not find section %scould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcould not open shared image '%s' from '%s'cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dangerous relocationdangerous relocation errordelta pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
 descdimct: %u, aflags: 0x%02x, digits: %u, scale: %u
 discarded output section: `%pA'discarding zero address range FDE in %pB(%pA).
 discontiguous range (nbr: %u)
-dynamic relocation in read-only sectiondynamic variable `%s' is zero sizedynreloc miscount for %pB, section %pAentry function `%s' disappeared from secure codeenumbeg, len: %u, name: %.*s
+dst_define_location %u too largedynamic relocation in read-only sectiondynamic variable `%s' is zero sizedynreloc miscount for %pB, section %pAentry function `%s' disappeared from secure codeenumbeg, len: %u, name: %.*s
 enumelt, name: %.*s
 enumend
 epilog: flags: %u, count: %u
-error in %pB(%pA); no .eh_frame_hdr table will be createderror reading %s: %serror reading cpu type from elf private dataerror: %pB does not use %s instructions, whereas %pB doeserror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %pB is compiled for the EP9312, whereas %pB is compiled for XScaleerror: %pB needs 8-byte alignment but %pB is set for 4-byte alignmenterror: %pB passes floats in float registers, whereas %pB passes them in integer registerserror: %pB passes floats in integer registers, whereas %pB passes them in float registerserror: %pB requires more array alignment than %pB preserveserror: %pB requires more stack alignment than %pB preserveserror: %pB use %u-byte stack aligned but the output use %u-byte stack aligned.error: %pB uses %s instructions but %pB uses %serror: %pB uses %s instructions, whereas %pB does noterror: %pB uses 64-bit doubles but %pB uses 32-bit doubleserror: %pB uses FPU-3.0 but %pB only supports FPU-2.0error: %pB uses VFP register arguments, %pB does noterror: %pB uses hardware FP, whereas %pB uses software FPerror: %pB uses iWMMXt register arguments, %pB does noterror: %pB uses software FP, whereas %pB uses hardware FPerror: %pB uses the %s code model whereas %pB uses the %s code modelerror: %pB uses the %s data model but %pB only uses MSP430 instructionserror: %pB uses the %s data model whereas %pB uses the %s data modelerror: %pB uses the large code model but %pB uses MSP430 instructionserror: %pB uses the small code model but %pB uses the %s data modelerror: %pB: <corrupt x86 property (0x%x) size: 0x%x>error: %pB: ISA string of input (%s) doesn't match output (%s).error: %pB: Mis-matched ISA string to merge '%s' and '%s'.error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%derror: %pB: SB relative addressing conflicts with use of R9error: %pB: Unspported XLEN (%u), you mightusing wrong emulation.error: %pB: XLEN of input (%u) doesn't match output (%u).error: %pB: big-endian R2 is not supportederror: %pB: cannot mix rf16 with full register set %pBerror: %pB: conflicting CPU architectures %d/%derror: %pB: conflicting ISA extension attributes %s with %serror: %pB: conflicting architecture profiles %c/%cerror: %pB: conflicting attributes %serror: %pB: conflicting attributes %s: %s with %serror: %pB: conflicting priv spec version (major/minor/revision).error: %pB: conflicting use of R9error: %pB: corrupted ISA string '%s'.first letter should be 'i' or 'e' but got '%s'.error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchainerror: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'error: %pB: old incompatible object file detectederror: %pB: size of section %pA is not multiple of address sizeerror: %pB: unable to merge CPU base attributes %s with %serror: %pB: unable to merge ISA extension attributes %serror: %pB: unable to merge virtualization attributes with %pBerror: %pB: unknown CPU architectureerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: fp16 format mismatch between %pB and %pBerror: inappropriate relocation type for shared library (did you forget -fpic?)error: source object %pB has EABI version %d, but target %pB has EABI version %derror: the ARC4 architecture is no longer supportederror: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %pBerror: unknown Tag_ABI_array_object_alignment value in %pBerrors encountered processing file %pBexecutablefailed to allocate space for new APUinfo sectionfailed to compute new APUinfo sectionfailed to find previous HI16 relocfailed to install new APUinfo sectionfailed to update file offsets in debug directoryfatal error while creating .fixupfile format is ambiguousfile format not recognizedfile in wrong formatfile too bigfile truncatedfurther warnings about FDE encoding preventing .eh_frame_hdr generation droppedgeneric linker can't handle %sglobal pointer relative address out of rangeglobal pointer relative relocation at address 0x%08x when _gp not defined
-global pointer relative relocation when _gp not definedhidden symbolhidden symbol incompatible cputypes in mach-o files: %ld vs %ldincr_linum(b): +%u
+error in %pB(%pA); no .eh_frame_hdr table will be createderror reading %s: %serror reading cpu type from elf private dataerror: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memoryerror: %pB does not use %s instructions, whereas %pB doeserror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %pB is compiled for the EP9312, whereas %pB is compiled for XScaleerror: %pB needs 8-byte alignment but %pB is set for 4-byte alignmenterror: %pB passes floats in float registers, whereas %pB passes them in integer registerserror: %pB passes floats in integer registers, whereas %pB passes them in float registerserror: %pB requires more array alignment than %pB preserveserror: %pB requires more stack alignment than %pB preserveserror: %pB use %u-byte stack aligned but the output use %u-byte stack aligned.error: %pB uses %s instructions but %pB uses %serror: %pB uses %s instructions, whereas %pB does noterror: %pB uses 64-bit doubles but %pB uses 32-bit doubleserror: %pB uses FPU-3.0 but %pB only supports FPU-2.0error: %pB uses VFP register arguments, %pB does noterror: %pB uses hardware FP, whereas %pB uses software FPerror: %pB uses iWMMXt register arguments, %pB does noterror: %pB uses software FP, whereas %pB uses hardware FPerror: %pB uses the %s code model whereas %pB uses the %s code modelerror: %pB uses the %s data model but %pB only uses MSP430 instructionserror: %pB uses the %s data model whereas %pB uses the %s data modelerror: %pB uses the large code model but %pB uses MSP430 instructionserror: %pB uses the small code model but %pB uses the %s data modelerror: %pB: <corrupt AArch64 used size: 0x%x>error: %pB: <corrupt x86 property (0x%x) size: 0x%x>error: %pB: ISA string of input (%s) doesn't match output (%s).error: %pB: Mis-matched ISA string to merge '%s' and '%s'.error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%derror: %pB: SB relative addressing conflicts with use of R9error: %pB: Unsupported XLEN (%u), you might be using wrong emulation.error: %pB: XLEN of input (%u) doesn't match output (%u).error: %pB: big-endian R2 is not supportederror: %pB: cannot mix rf16 with full register set %pBerror: %pB: conflicting CPU architectures %d/%derror: %pB: conflicting ISA extension attributes %s with %serror: %pB: conflicting architecture profiles %c/%cerror: %pB: conflicting attributes %serror: %pB: conflicting attributes %s: %s with %serror: %pB: conflicting use of R9error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but got '%s'.error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchainerror: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'error: %pB: old incompatible object file detectederror: %pB: size of section %pA is not multiple of address sizeerror: %pB: unable to merge CPU base attributes %s with %serror: %pB: unable to merge ISA extension attributes %serror: %pB: unable to merge virtualization attributes with %pBerror: %pB: unknown CPU architectureerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: fp16 format mismatch between %pB and %pBerror: inappropriate relocation type for shared library (did you forget -fpic?)error: source object %pB has EABI version %d, but target %pB has EABI version %derror: the ARC4 architecture is no longer supportederror: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %pBerror: unknown Tag_ABI_array_object_alignment value in %pBerrors encountered processing file %pBexecutablefailed to allocate space for new APUinfo sectionfailed to compute new APUinfo sectionfailed to find previous HI16 relocfailed to install new APUinfo sectionfailed to update file offsets in debug directoryfatal error while creating .fixupfile format is ambiguousfile format not recognizedfile in wrong formatfile too bigfile truncatedfurther warnings about FDE encoding preventing .eh_frame_hdr generation droppedgeneric linker can't handle %sglobal pointer relative address out of rangeglobal pointer relative relocation when _gp not definedhidden symbolhidden symbol incompatible cputypes in mach-o files: %ld vs %ldincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
 indirect, defined at 0x%08x
-internal error: RL78 reloc stack overflowinternal error: RL78 reloc stack underflowinternal error: addend should be zero for %sinternal error: branch/jump to an odd address detectedinternal error: dangerous errorinternal error: dangerous relocationinternal error: merge of architecture '%s' with architecture '%s' produced unknown architectureinternal error: out of range errorinternal error: suspicious relocation type used in shared libraryinternal error: unknown errorinternal error: unsupported relocation errorinternal inconsistency in size of .got.loc sectioninternal inconsistency: remaining %lu != max %lu; please report this buginternal symbolinternal symbol invalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or assemble using "-no-expand" (for gcc, "-Wa,-no-expand"invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or compile using the gcc-option "-mno-base-addresses".invalid operationinvalid output section for .eh_frame_entry: %pAinvalid relocation addressinvalid section index in ETIRinvalid use of %s with contextsip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.is this version of the linker - %s - out of date ?jump (PC rel26) to section (%s) not supportedjump to a non-instruction-aligned addressjump to a non-word-aligned addresslabel, name: %.*s
+internal error: RL78 reloc stack overflowinternal error: RL78 reloc stack underflowinternal error: addend should be zero for %sinternal error: branch/jump to an odd address detectedinternal error: dangerous errorinternal error: dangerous relocationinternal error: merge of architecture '%s' with architecture '%s' produced unknown architectureinternal error: out of range errorinternal error: relocation not supportedinternal error: suspicious relocation type used in shared libraryinternal error: unknown errorinternal error: unsupported relocation errorinternal inconsistency in size of .got.loc sectioninternal inconsistency: remaining %lu != max %lu; please report this buginternal symbolinternal symbol invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or assemble using "-no-expand" (for gcc, "-Wa,-no-expand"invalid input relocation when producing non-ELF, non-mmo format output; please use the objcopy program to convert from ELF or mmo, or compile using the gcc-option "-mno-base-addresses".invalid operationinvalid output section for .eh_frame_entry: %pAinvalid relocation addressinvalid section index in ETIRinvalid use of %s with contextsip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.is this version of the linker - %s - out of date ?jump (PC rel26) to section (%s) not supportedjump to a non-instruction-aligned addressjump to a non-word-aligned addresslabel, name: %.*s
 len: %2u, kind: %2u line num  (len: %u)
 linkable imagelinker stubs in %u group
 linker stubs in %u groups
 literalliteral relocation occurs for an external symbollong branch stub `%s' offset overflowmach-o: there are too many sections (%u) maximum is 255,
-malformed archivememory exhaustedmep: no reloc for code %dmodbeg
+malformed archivemalformed mach-o ARM half sectdiff reloc: invalid length: %dmalformed mach-o ARM local sectdiff reloc: invalid length: %dmalformed mach-o ARM reloc pair: invalid length: %dmalformed mach-o ARM reloc pair: reloc is first relocmalformed mach-o ARM reloc: unknown reloc type: %dmalformed mach-o ARM sectdiff reloc: invalid length: %dmalformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)malformed mach-o reloc: section index is greater than the number of sectionsmemory exhaustedmep: no reloc for code %dmodbeg
 modend
 name: [val: %08lx len %d]: nativenew entry function(s) introduced but no output import library specified:nono address assigned to the veneers output section %sno errorno more archived filesno symbolsnon-contiguous array of %s
-non-dynamic relocations refer to dynamic symbol %snon-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store
+non-dynamic relocations refer to dynamic symbol %snon-dynamic symbol %s in dynamic symbol tablenon-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store
 non-zero addend in @fptr relocnonenonrepresentable section on outputnot enough GOT space for local GOT entriesnot enough memory to sort relocationsnot mapping: data=%lx mapped=%d
 not mapping: env var not set
 not setobject module not error-free !offset of veneer for entry function `%s' not a multiple of its sizeone possible cause of this error is that the symbol is being referenced in the indicated code as if it had a larger alignment than was declared where it was definedout of rangeoverflow after relaxationoverlay stub relocation overflowpointer
 private flags = %lxprivate flags = %lx:private flags = %lx: private flags = 0x%lxprivate flags = 0x%lx:prolog: bkpt address 0x%08x
 protected symbolprotected symbol recbeg: name: %.*s
 recend
-reference to a banked address [%lx:%04lx] in the normal address space at %04lxreference to the far symbol `%s' using a wrong relocation may result in incorrect executionregregister %%g%d used incompatibly: %s in %pB, previously %s in %pBregister section has contents
+record is too small for symbol name lengthreference to a banked address [%lx:%04lx] in the normal address space at %04lxreference to the far symbol `%s' using a wrong relocation may result in incorrect executionregregister %%g%d used incompatibly: %s in %pB, previously %s in %pBregister section has contents
 reloc (%d) is *UNKNOWN*relocation for non-REL psectrelocation out of rangerelocation references symbol not defined in the modulerelocation requires zero addendrelocation should be even numberrelocations between different segments are not supportedremoving unused section '%pA' in file '%pB'reopening %pB: %s
 reserved cmd %drtnbeg
 rtnend: size 0x%08x
@@ -731,39 +750,39 @@ ppcboot header:
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-shared objectsize error in section %pAsmall-data section exceeds 64KB; lower small-data size limit (see option -G)som_sizeof_headers unimplementedsorry, no support for duplicate object files in auto-overlay script
+shared objectsize error in section %pAsmall-data section exceeds 64KB; lower small-data size limit (see option -G)som_sizeof_headers unimplementedsorry, cannot handle this filesorry, no support for duplicate object files in auto-overlay script
 sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands.source (len: %u)
 spurious ALPHA_R_BSR relocstack analysis will ignore the call from %s to %s
 stack overflow (%d) in _bfd_vms_pushstack underflow in _bfd_vms_popstandard data: %s
-start address of `%s' is different from previous linkstatic procedure (no name)stubs don't match calculated sizesymbolsymbol symbol '%s' has invalid st_other for ABI version 1symbol `%s' has differing types: REGISTER in %pB, previously %s in %pBsymbol needs debug section which does not existsystem call errorsystem version array information:
+start address of `%s' is different from previous linkstatic procedure (no name)stubs don't match calculated sizesymbolsymbol symbol '%s' has invalid st_other for ABI version 1symbol `%s' has differing types: REGISTER in %pB, previously %s in %pBsymbol binding STB_GNU_UNIQUE is unsupportedsymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is unsupportedsystem call errorsystem version array information:
 term(b): 0x%02xterm_w: 0x%04xthe bfin target does not currently support the generation of copy relocationsthere is a conflict merging the ELF header flags from %pBtoo many GOT entries for -fpic, please recompile with -fPICtry enabling relaxation to avoid relocation truncationstype spec for element:
 type spec for subscript %u:
 typed pointer
 typspec (len: %u)
-unable to allocate data for load command %#xunable to find %s glue '%s' for '%s'unable to find equivalent output section for symbol '%s' from section '%s'unable to layout unknown load command %#xunable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because the offset (%d) is out of the allowed range, -32678 to 32767
-unable to read EIHS record at offset %#xunable to read in %s section from %pBunable to write unknown load command %#xunaligned bit-string of %s
-undefined undefined %s reference in complex symbol: %sunexpected STO_SH5_ISA32 on local symbol is not handledunexpected machine numberunhandled OSF/1 core file section type %dunhandled egsd entry type %u
+unable to allocate data for load command %#xunable to find %s glue '%s' for '%s'unable to find equivalent output section for symbol '%s' from section '%s'unable to layout unknown load command %#xunable to read EIHS record at offset %#xunable to read in %s section from %pBunable to write unknown load command %#xunaligned bit-string of %s
+undefined undefined %s reference in complex symbol: %sunexpected machine numberunhandled OSF/1 core file section type %dunhandled egsd entry type %u
 unhandled emh subtype %u
-unhandled relocation %sunknownunknown EGSD subtype %dunknown ETIR command %dunknown basic type %dunknown errorunknown header byte-order value %#xunknown line command %dunknown operator '%c' in complex symbolunknown reloc %sunknown reloc %s + %sunknown source command %dunknown symbol in command %sunknown v850 architectureunknown: %xunrecognized INPUT_SECTION_FLAG %s
-unrecognized TI COFF target id '0x%x'unsupported .stab relocationunsupported STA cmd %sunsupported relocunsupported relocationunsupported relocation between data/insn address spacesunsupported relocation typeunsupported relocation type %#xusing multiple gp valuesv850 E3 architecturev850 architecturev850e architecturev850e1 architecturev850e2 architecturev850e2v3 architecturev850e3v5 architecturevariable `%s' can only be in one of the small, zero, and tiny data regionsvariable `%s' cannot be in both small and tiny data regions simultaneouslyvariable `%s' cannot be in both small and zero data regions simultaneouslyvariable `%s' cannot be in both zero and tiny data regions simultaneouslyvariable `%s' cannot occupy in multiple small data regionsvflags: 0x%02x, value: 0x%08x vma:			BeginAddress	 EndAddress	  UnwindData
+unhandled relocation %sunknownunknown EGSD subtype %dunknown ETIR command %dunknown attribute for symbol `%s': 0x%02xunknown basic type %dunknown errorunknown header byte-order value %#xunknown line command %dunknown operator '%c' in complex symbolunknown reloc %sunknown reloc %s + %sunknown source command %dunknown symbol in command %sunknown v850 architectureunknown: %xunrecognized INPUT_SECTION_FLAG %s
+unrecognized TI COFF target id '0x%x'unsupported .stab relocationunsupported STA cmd %sunsupported relocunsupported relocationunsupported relocation between data/insn address spacesunsupported relocation typeusing multiple gp valuesv850 E3 architecturev850 architecturev850e architecturev850e1 architecturev850e2 architecturev850e2v3 architecturev850e3v5 architecturevariable `%s' can only be in one of the small, zero, and tiny data regionsvariable `%s' cannot be in both small and tiny data regions simultaneouslyvariable `%s' cannot be in both small and zero data regions simultaneouslyvariable `%s' cannot be in both zero and tiny data regions simultaneouslyvariable `%s' cannot occupy in multiple small data regionsvflags: 0x%02x, value: 0x%08x vma:			BeginAddress	 EndAddress	  UnwindData
 warning, .pdata section size (%ld) is not a multiple of %d
-warning: %pB and %pB differ in wchar_t sizewarning: %pB and %pB differ in whether code is compiled for DSBTwarning: %pB does not support interworking, whereas %pB doeswarning: %pB has a corrupt section with a size (%warning: %pB has a corrupt string table index - ignoringwarning: %pB supports interworking, whereas %pB does notwarning: %pB uses %s (set by %pB), %pB uses %swarning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may failwarning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may failwarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB: conflicting platform configurationwarning: %pB: conflicting platform configuration %s with %swarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lxwarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%xwarning: %pB: corrupt no copy on protected size: 0x%xwarning: %pB: corrupt stack size: 0x%xwarning: %pB: local symbol `%s' has no sectionwarning: %pB: unknown ARC object attribute %dwarning: %pB: unknown EABI object attribute %dwarning: %pB: unknown MSPABI object attribute %dwarning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%xwarning: %s exceeds section size
+warning: %pB and %pB differ in wchar_t sizewarning: %pB and %pB differ in whether code is compiled for DSBTwarning: %pB does not support interworking, whereas %pB doeswarning: %pB has a corrupt section with a size (%warning: %pB has a corrupt string table index - ignoringwarning: %pB supports interworking, whereas %pB does notwarning: %pB use privilege spec version %u.%u.%u but the output use version %u.%u.%u.warning: %pB uses %s (set by %pB), %pB uses %swarning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may failwarning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may failwarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %dwarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %swarning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %dwarning: %pB: conflicting platform configurationwarning: %pB: conflicting platform configuration %s with %swarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lxwarning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%xwarning: %pB: corrupt no copy on protected size: 0x%xwarning: %pB: corrupt stack size: 0x%xwarning: %pB: local symbol `%s' has no sectionwarning: %pB: unknown ARC object attribute %dwarning: %pB: unknown EABI object attribute %dwarning: %pB: unknown MSPABI object attribute %dwarning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%xwarning: %s exceeds section size
 warning: %s overlaps %s
-warning: %s section has zero sizewarning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: RL78_SYM reloc with an unknown symbolwarning: RX_SYM reloc with an unknown symbolwarning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pAwarning: alignment %u of symbol `%s' in %pB is smaller than %u in %pBwarning: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %pBwarning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with itwarning: clearing the interworking flag of %pB due to outside requestwarning: corrupt unwind data
-warning: discarding dynamic section %swarning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%swarning: gc-sections option ignoredwarning: generating a shared library containing non-PIC codewarning: generating a shared library containing non-PID codewarning: not setting interworking flag of %pB since it has already been specified as non-interworkingwarning: relocation references a different segmentwarning: section '%s' is being made into a notewarning: section `%pA' type changed to PROGBITSwarning: symbol `%s' is both section and non-sectionwarning: type and size of dynamic symbol `%s' are not definedwarning: type of symbol `%s' changed from %d to %d in %pBwarning: unable to set size of %s section in %pBwarning: unable to update contents of %s section in %pBwarning: unrecognized arch eflag '%#lx'warning: unset or old architecture flags; use default machinewarning: writing archive was slow: rewriting timestampwarning: writing section `%pA' at huge (ie negative) file offsetwarning: xdata section corrupt
-yesyou are not allowed to define %s in a scriptProject-Id-Version: bfd 2.31.90
+warning: %s section has zero sizewarning: %s should be used rather than %swarning: --enable-non-contiguous-regions discards section `%s' from '%s'
+warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: RL78_SYM reloc with an unknown symbolwarning: RX_SYM reloc with an unknown symbolwarning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pAwarning: alignment %u of symbol `%s' in %pB is smaller than %u in %pBwarning: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %pBwarning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with itwarning: clearing the interworking flag of %pB due to outside requestwarning: corrupt unwind data
+warning: discarding dynamic section %swarning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%swarning: gc-sections option ignoredwarning: generating a shared library containing non-PIC codewarning: generating a shared library containing non-PID codewarning: not setting interworking flag of %pB since it has already been specified as non-interworkingwarning: privilege spec version 1.9.1 can not be linked with other spec versions.warning: relocation references a different segmentwarning: section '%s' is being made into a notewarning: section `%pA' type changed to PROGBITSwarning: symbol `%s' is both section and non-sectionwarning: type and size of dynamic symbol `%s' are not definedwarning: type of symbol `%s' changed from %d to %d in %pBwarning: unable to set size of %s section in %pBwarning: unable to update contents of %s section in %pBwarning: unrecognized arch eflag '%#lx'warning: unset or old architecture flags; use default machinewarning: writing archive was slow: rewriting timestampwarning: writing section `%pA' at huge (ie negative) file offsetwarning: xdata section corrupt
+yesyou are not allowed to define %s in a scriptProject-Id-Version: bfd 2.34.90
 Report-Msgid-Bugs-To: bug-binutils@gnu.org
-POT-Creation-Date: 2019-01-19 16:30+0000
-PO-Revision-Date: 2019-01-20 11:34+0200
+POT-Creation-Date: 2020-07-04 10:26+0100
+PO-Revision-Date: 2020-07-04 18:20+0300
 Last-Translator: Yuri Chornoivan <yurchor@ukr.net>
-Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>
+Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>
 Language: uk
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 X-Bugs: Report translation errors to the Language-Team address.
 Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
-X-Generator: Lokalize 2.0
+X-Generator: Lokalize 20.07.70
 	    TLS: %pA	<Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾: 0x%04lx>	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� 			Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� 		%08lx
 	Ð�ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ rva (0x%lx) Ð°Ð±Ð¾ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² (0x%lx) Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð°Ð´Ñ€ÐµÑ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�
 	Ð�ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ rva (0x%lx) Ð°Ð±Ð¾ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² (0x%lx) Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸
@@ -952,19 +971,7 @@ X-Generator: Lokalize 2.0
   EGSD (Ð´Ð¾Ð²Ð¶=%u):
   Ð·Ð°Ð¿Ð¸Ñ� EGSD %2u (Ñ‚Ð¸Ð¿: %u, Ð´Ð¾Ð²Ð¶: %u):   EMH %u (Ð´Ð¾Ð²Ð¶=%u):   Ð¾Ñ�Ð½.: 0x%08x %08x, Ñ€Ð¾Ð·Ð¼: 0x%08x,  Ð·Ð°Ñ….: 0x%08x   base_va : 0x%08x
   ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð±Ñ–Ñ‚Ñ–Ð²: %u, Ð±Ð°Ð·Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x
-  Ð³Ñ–Ð»ÐºÐ°          %lu
-  toc adj Ð³Ñ–Ð»ÐºÐ¸  %lu
-  notoc Ð³Ñ–Ð»ÐºÐ¸    %lu
-  both Ð³Ñ–Ð»ÐºÐ¸     %lu
-  long branch    %lu
-  long toc adj   %lu
-  long notoc     %lu
-  long both      %lu
-  plt call       %lu
-  plt call save  %lu
-  plt call notoc %lu
-  plt call both  %lu
-  Ð·Ð°Ð³. Ð·Ð°Ð¿Ð¸Ñ�     %lu  Ð²Ð¸ÐºÐ»Ð¸ÐºÐ¸:
+  Ð²Ð¸ÐºÐ»Ð¸ÐºÐ¸:
   chgprtoff : %5u
   codeadroff: %5u, lpfixoff  : %5u
   fixuplnk: 0x%08x %08x
@@ -1021,8 +1028,15 @@ X-Generator: Lokalize 2.0
      		Ð°Ð´Ñ€ÐµÑ�Ð°   Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ñƒ  Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—  32Ð± Ð²Ð¸Ðº. Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½ÑŒ EH
  vma:            Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð§Ð°Ñ�Ð¾Ð²Ð°    Ð›Ð°Ð½Ñ†ÑŽÐ¶Ð¾Ðº Ð�Ð°Ð·Ð²Ð°     ÐŸÐµÑ€ÑˆÐ¸Ð¹
                  Ð²ÐºÐ°Ð·.   ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐºÐ°  Ñ�Ð¿Ñ€Ñ�Ð¼.   DLL       ÑˆÐ»ÑŽÐ·
-#<Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸>%03x Ð›Ð¸Ñ�Ñ‚Ð¾Ðº %*.s: Ð°Ð´Ñ€ÐµÑ�Ð°: %#08lx, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %#08lx, ÐºÐ¾Ð´Ð¾Ð²Ð° Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ°: %d
+#<Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸>%%X%%P: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC
+%%X%%P: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»
+%03x Ð›Ð¸Ñ�Ñ‚Ð¾Ðº %*.s: Ð°Ð´Ñ€ÐµÑ�Ð°: %#08lx, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %#08lx, ÐºÐ¾Ð´Ð¾Ð²Ð° Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ°: %d
 Ð’Ñ…Ñ–Ð´ Ð´Ð¾ %03x %*.s: %C: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚
+%F%P: %pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð»Ñ� --gc-sections Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð¿Ñ€Ð¸Ñ”Ð´Ð½Ð°Ð½Ð¸Ð¹ (linked-to) Ñ€Ð¾Ð·Ð´Ñ–Ð»
+%F%P: %pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾
+%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð²'Ñ�Ð·Ð°Ñ‚Ð¸ %pA Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ�. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð±ÐµÐ· --enable-non-contiguous-regions.
+%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð²'Ñ�Ð·Ð°Ñ‚Ð¸ Â«%pAÂ» Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ�. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð±ÐµÐ· --enable-non-contiguous-regions.
+F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð²'Ñ�Ð·Ð°Ñ‚Ð¸ Ð³Ñ€ÑƒÐ¿Ñƒ %pA Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %pA Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ�. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð±ÐµÐ· --enable-non-contiguous-regions.
 %F%P: already_linked_table: %E
 %F%P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð°Ð²Ñ‚Ð¾Ð½Ð°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ�: %E
 %F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ð½Ð°ÐºÐ»Ð°Ð´Ð½Ñ– ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸: %E
@@ -1071,23 +1085,22 @@ X-Generator: Lokalize 2.0
 %H: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ %u
 %H: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ %u
 %H: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ñ–Ð· Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾ÑŽ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¾ÑŽ
+%H: Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— got/toc
 %H: Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ñ‚Ð¾Ðº Ð´Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»
 %H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚
 %H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: %s
 %H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
 %H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ–
 %H: Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ� Ð¿Ñ€Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ, Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ðµ Ð²Ð¸Ñ‰Ðµ, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ÐµÐ½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ Ð´Ð¾ Â«%s+%vÂ»
-%H: Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— toc
 %H: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ %s Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»
 %H: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»
 %H: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s, Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#x.
 %P%F: --relax Ñ– -r Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾
 %P%X: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸: %E
-%P%X: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�, Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� IFUNC. Ð¡Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ð· -fPIC
 %P%X: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�, Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�
-%P: %H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð»Ñ� bss-plt Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
 %P: %H: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ñ–Ð· Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾ÑŽ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ %x
 %P: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð´Ð»Ñ� Â«%pTÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
+%P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ %s
 %P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»
 %P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Â«%pAÂ»
 `%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� opd Ñƒ toc Ð´Ð»Ñ� Â«%pTÂ»
@@ -1096,6 +1109,8 @@ X-Generator: Lokalize 2.0
 %P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»
 %P: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð¾Ñ‡Ð¾Ðº Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… %pB Ñ– %pB
 %P: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñ�Ñ‚ÑŽ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
+%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ñ… Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ GNU Ñ–Ð· DT_TEXTREL Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ— Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿ÑƒÑ�ÐºÑƒ; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· %s
+%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ DT_TEXTREL Ñƒ PIE
 %P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ DT_TEXTREL Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�
 %P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚ÐµÐºÑ�Ñ‚Ñƒ Ñ– Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ñ… Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ GNU Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ— Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿ÑƒÑ�ÐºÑƒ
 %X%C: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚
@@ -1106,10 +1121,14 @@ X-Generator: Lokalize 2.0
 %X%H: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð¼Ñ–Ð¶ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA
 %X%H: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° bss-plt -fPIC ifunc %s
 %X%H: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð¼Ñ–Ð¶ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ð· ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼ Ð²Ð·Ð°Ñ”Ð¼Ð½Ð¸Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼
+%X%P: %H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð»Ñ� bss-plt Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
 %X%P: %pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð·Ñ�ÑƒÐ²Ñƒ %V Ð½Ðµ Ð¼Ð°Ñ” Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�
 %X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%pRÂ» Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ
 %X%P: %pB(%pA): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%pRÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
 %X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%pRÂ» Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°Ñ” Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %x
+%X%P: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ñ‰Ð¾Ð´Ð¾ %pT Ñ�Ðº Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ glibc
+%X%P: %pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ %s
+%X%P: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¾Ð±'Ñ”ÐºÑ‚Ð° Â«%pBÂ»
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�
@@ -1122,18 +1141,18 @@ X-Generator: Lokalize 2.0
 Ð�Ð° %XÂ«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» %pB: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð²Ñ–Ð´ÐºÐ¸Ð½ÑƒÑ‚Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» %pB
 %pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ [Â«%pAÂ» Ñƒ %pB] Ñ– Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ [Â«%pAÂ» Ñƒ %pB] Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸%pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ– Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸%pA:0x%v .brinfo lrlive (%u) Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�Ñ”Ñ‚ÑŒÑ�Ñ� Ð²Ñ–Ð´ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ ÑˆÐ»Ñ�Ñ…Ð¾Ð¼ Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ (%u)
 %pA:0x%v Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹
-%pB (%s): Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s (%#lx) Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾.opd %pB Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ— ABI %d%pB Ñ– %pB Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ€Ñ–Ð·Ð½Ð¸Ñ… ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹%pB Ñ– %pB Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ�Ð´ÐµÑ€Ñƒ %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´ v32 CRIS, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸Ñƒ %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ñ” ÐºÐ¾Ð´Ð¾Ð¼ v32 CRIS, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸Ð´Ð»Ñ� %pB Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð¾Ð±Ð¸Ð´Ð²Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Tag_MPextension_use, current Ñ– legacy%pB Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ‚Ð¸ %sÐ Ð¾Ð·Ð´Ñ–Ð» %pB, %pA, Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð³Ñ€ÑƒÐ¿Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²%pB Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %lu Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð» SHT_SYMTAB_SHNDX, Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ 64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– Ð´Ð¾Ð²Ð³Ñ– Ñ†Ñ–Ð»Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ–Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ, Ð° Ñƒ %pB â€” 128-Ð±Ñ–Ñ‚Ð¾Ð²Ñ–%pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÐºÑ‚Ð¾Ñ€Ð½Ð¸Ð¹ ABI AltiVec, %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÐºÑ‚Ð¾Ñ€Ð½Ð¸Ð¹ ABI SPEÑƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð´Ð¾Ð²Ð³Ñ– Ñ†Ñ–Ð»Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ–Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ IBM, Ð° Ñƒ %pB â€” IEEEÑƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ, Ð° Ñƒ %pB â€” Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ð»Ñ� Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽÑƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ», Ð° Ñƒ %pB â€” Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð°Ñƒ %pB r3/r4 Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð´Ð»Ñ� Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ� Ð¼Ð°Ð»Ð¸Ñ… Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€, Ð° Ñƒ %pB Ð´Ð»Ñ� Ñ†ÑŒÐ¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ%pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� e_flags 0x%lx%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸ÐºÐ»Ð¸Ðº Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ»%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB(%pA): Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹%pB(%pA): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ¾Ñ… Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹ TLS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %ld%pB(%pA): Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� %s%pB(%pA): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð´Ð¾Ð²Ð³Ð¸Ñ… Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ñ… Ð³Ñ–Ð»Ð¾Ðº Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð°Ñ… Ñ–Ð· Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ SHF_ARM_PURECODE Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ†Ñ–Ð»ÐµÐ¹ Ð· Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÐµÐ¼ M, Ñƒ Ñ�ÐºÐ¸Ñ… Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ movw.%pB(%pA): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ð¼Ð°Ð»Ñ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ…%pB(%pA): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñƒ %d%pB(%pA+%#lx): Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– stabs Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ñ�Ð´ÐºÐ°%pB(%pA+%#x): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½ÑŒ Ñƒ Ð½ÐµÐ¾Ñ�Ñ‚Ð°Ð½Ð½Ñ–Ð¹ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— Ð±Ð»Ð¾ÐºÑƒ IT: Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾. Ð¡ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ gcc -mrestrict-it, Ñ‰Ð¾Ð± Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð¾Ð´Ð½Ñƒ  Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ Ð½Ð° Ð±Ð»Ð¾Ðº IT.%pB(%pA+0x%lx): Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð¸Ð»ÑŽ 16A Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— 0x%08x%pB(%pA+0x%lx): Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð¸Ð»ÑŽ 16D Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— 0x%08x%pB(%pA+0x%v): Ð²Ð¸ÐºÐ»Ð¸Ðº Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, %pB(%pA), Ð°Ð½Ð°Ð»Ñ–Ð· Ñ” Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¸Ð¼
+%pB (%s): Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s (%#lx) Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾.opd %pB Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ— ABI %d%pB Ñ– %pB Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ€Ñ–Ð·Ð½Ð¸Ñ… ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹%pB Ñ– %pB Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ�Ð´ÐµÑ€Ñƒ %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´ v32 CRIS, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸Ñƒ %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ñ” ÐºÐ¾Ð´Ð¾Ð¼ v32 CRIS, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸Ð´Ð»Ñ� %pB Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð¾Ð±Ð¸Ð´Ð²Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Tag_MPextension_use, current Ñ– legacy%pB Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ‚Ð¸ %sÐ Ð¾Ð·Ð´Ñ–Ð» %pB, %pA, Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð³Ñ€ÑƒÐ¿Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²%pB Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %lu Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð» SHT_SYMTAB_SHNDX, Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ 64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– Ð´Ð¾Ð²Ð³Ñ– Ñ†Ñ–Ð»Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ–Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ, Ð° Ñƒ %pB â€” 128-Ð±Ñ–Ñ‚Ð¾Ð²Ñ–%pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÐºÑ‚Ð¾Ñ€Ð½Ð¸Ð¹ ABI AltiVec, %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÐºÑ‚Ð¾Ñ€Ð½Ð¸Ð¹ ABI SPEÑƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð´Ð¾Ð²Ð³Ñ– Ñ†Ñ–Ð»Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ–Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ IBM, Ð° Ñƒ %pB â€” IEEEÑƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ, Ð° Ñƒ %pB â€” Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ð»Ñ� Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽÑƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ», Ð° Ñƒ %pB â€” Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð°Ñƒ %pB r3/r4 Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð´Ð»Ñ� Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ� Ð¼Ð°Ð»Ð¸Ñ… Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€, Ð° Ñƒ %pB Ð´Ð»Ñ� Ñ†ÑŒÐ¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ%pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� e_flags 0x%lx%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸ÐºÐ»Ð¸Ðº Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ»%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ %u Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¼%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %u Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %u Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %u Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¾Ð³Ð¾ Ð½ÐµÐ¼Ð°Ñ”%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¼!%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾ Ð´Ð²Ñ–Ñ‡Ñ–%pB(%pA): Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÐ²Ð°Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ info, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ñ†ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð½ÐµÐ¼Ð°Ñ” Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ–%pB(%pA): Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸Ðº Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ info Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB(%pA): Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹%pB(%pA): Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÐ²Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð² Ð½ÐµÐ¼Ð°Ñ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²%pB(%pA): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ¾Ñ… Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹ TLS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %ld%pB(%pA): Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� %s%pB(%pA): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð´Ð¾Ð²Ð³Ð¸Ñ… Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ñ… Ð³Ñ–Ð»Ð¾Ðº Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð°Ñ… Ñ–Ð· Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ SHF_ARM_PURECODE Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ†Ñ–Ð»ÐµÐ¹ Ð· Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÐµÐ¼ M, Ñƒ Ñ�ÐºÐ¸Ñ… Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ movw.%pB(%pA): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ð¼Ð°Ð»Ñ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ…%pB(%pA): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñƒ %d%pB(%pA+%#lx): Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– stabs Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ñ�Ð´ÐºÐ°%pB(%pA+%#x): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½ÑŒ Ñƒ Ð½ÐµÐ¾Ñ�Ñ‚Ð°Ð½Ð½Ñ–Ð¹ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— Ð±Ð»Ð¾ÐºÑƒ IT: Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾. Ð¡ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ gcc -mrestrict-it, Ñ‰Ð¾Ð± Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð¾Ð´Ð½Ñƒ  Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ Ð½Ð° Ð±Ð»Ð¾Ðº IT.%pB(%pA+0x%lx): Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð¸Ð»ÑŽ 16A Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— 0x%08x%pB(%pA+0x%lx): Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð¸Ð»ÑŽ 16D Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— 0x%08x%pB(%pA+0x%v): Ð²Ð¸ÐºÐ»Ð¸Ðº Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, %pB(%pA), Ð°Ð½Ð°Ð»Ñ–Ð· Ñ” Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¸Ð¼
 %pB(%s): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ð½Ðµ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾; Ð¿ÐµÑ€ÑˆÐ° Ð·Ð³Ð°Ð´ÐºÐ°: %pB: Ð²Ð¸ÐºÐ»Ð¸Ðº %s Ð´Ð¾ %s%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA:
   Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ñ” ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–; Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾ÑŽ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð¾ÑŽ Ñ” ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð², Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ñ–Ð»ÑŽÐ¹Ñ‚Ðµ Ð· -fPIC%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð½ÐµÐ¼Ð°Ñ” PLT Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð½ÐµÐ¼Ð°Ñ” Ð½Ñ– PLT, Ð½Ñ– GOT Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– %s Ñ” Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Â«%sÂ», Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾, Ð°Ð´Ñ€ÐµÑ�Ð½Ð° Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ° Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ�?%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ–Ð· Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾ÑŽ Ð²Ð¸Ð´Ð¸Ð¼Ñ–Ñ�Ñ‚ÑŽ. ÐœÐ¾Ð¶Ð»Ð¸Ð²Ð¾, Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ–?%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð»Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: Â«%sÂ»%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ð¾Ð·Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¾ÑŽ. ÐœÐ¾Ð¶Ð»Ð¸Ð²Ð¾, Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ–?%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA:
-  Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ñ–Ð»ÑŽÐ¹Ñ‚Ðµ Ð· -fPIC%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð±ÐµÐ· Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð³Ð¾ GOT%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¾Ð±â€™Ñ”ÐºÑ‚ Ð²ÐµÑ€Ñ�Ñ–Ñ— 10/32 Ð½Ðµ Ð¿Ð¾Ð²Ð¸Ð½ÐµÐ½ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� PIC%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ñ–Ð»ÑŽÐ¹Ñ‚Ðµ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� !samegp Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð±ÐµÐ· .prologue: %s%pB: %pA Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…%pB: %pA Ñ” Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¼%pB: %pA Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x > 0xffff%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ� %s Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼%pB: %s Ð½Ðµ Ñ” Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¸Ð¼%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ‚Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: %s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð²ÐµÑ€Ñ�Ñ–Ñ— %d%pB: %s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ�, %u (Ð¼Ð°ÐºÑ�Ð¸Ð¼ÑƒÐ¼ â€” %d)%pB: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: 0x%lx > 0xffff'%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ‚Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ --in-implib Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐº Secure Gateway%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� .gnu.version_d%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� .gnu.version_r%pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿Ñ–Ð´Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° .got Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 64ÐºÐ‘ (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ â€” %d)%pB: .opd Ð½Ðµ Ñ” Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¸Ð¼ Ð¼Ð°Ñ�Ð¸Ð²Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² opd%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .preinit_array Ñƒ DSO%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .rsrc%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ .rsrc%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� @gprel Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� @internal Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� @pcrel Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: ABI Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· ABI Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾Ñ— ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—%pB: ABI Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ñ–Ð· Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾ÑŽ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ”ÑŽ:
-  Ñ†Ñ–Ð»ÑŒ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—, Â«%sÂ», Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Â«%sÂ»%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ABI: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: Ð²ÐµÑ€Ñ�Ñ–Ñ� ABI %ld Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾ÑŽ Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ ABI %ld Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñƒ%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ASE: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: Ð¾Ð±Ñ€Ð°Ð·Ð¸ BE8 Ñ” Ñ‡Ð¸Ð½Ð½Ð¸Ð¼Ð¸ Ð»Ð¸ÑˆÐµ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– big-endian%pB: Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ %d%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼%pB: Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– GNU_MBIN Â«%pAÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ð»Ðµ sh_info: %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� GOT: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð· 8- Ð°Ð±Ð¾ 16-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ > %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� GOT: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð· 8-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ > %d%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð² Ð²ÐµÐºÑ‚Ð¾Ñ€Ñ–Ð² ISR Ñ–Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ– Ñ” %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸, Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ– Ñ” %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¼Ñƒ ELF (EM: %d)%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ SB, Ð°Ð»Ðµ __c6xabi_DSBT_BASE Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» SHT_GROUP [Ñ–Ð½Ð´ÐµÐºÑ� %d] Ð½Ðµ Ð¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² SHF_GROUP%pB: Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ TLS Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ TLS Ð½Ðµ Ñ” Ñ�ÑƒÑ�Ñ–Ð´Ð½Ñ–Ð¼Ð¸:%pB: Ð¿ÐµÑ€ÑˆÐ¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– PT_DYNAMIC Ð½Ðµ Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ .dynamic%pB: Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚ XCOFF, Ñ…Ð¾Ñ‡Ð° Ð´Ð°Ð½Ñ– XCOFF Ð½Ðµ Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑŽÑ‚ÑŒÑ�Ñ�%pB: __gp Ð½Ðµ Ð²ÐºÑ€Ð¸Ð²Ð°Ñ” ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° Ð´Ð°Ð½Ð¸Ñ…%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ FDPIC, Ñ‚Ð°Ðº Ñ– Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ‚Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ FDPIC%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ‚Ð°Ðº Ñ– Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: Â«%sÂ» Ñ– Ñ—Ñ— Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°ÑŽÑ‚ÑŒ Ñƒ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð°Ñ….%pB: Â«%sÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ð¾Ð¼ÐµÑ€Ð¸ Ñ€Ñ�Ð´ÐºÑ–Ð², Ð°Ð»Ðµ Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: Â«%sÂ» Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð°, Ð°Ð»Ðµ Ð½Ðµ Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ñ… Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-PLT Â«%sÂ» Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñƒ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ– Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð³Ð¾ Ð· Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° (Ñ�Ð»Ñ–Ð´ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» Ñ–Ð· -fPIC ?)%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ».%pB: Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ got Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼%pB: Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ plt Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼%pB: Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº aout Ð²ÐºÐ°Ð·ÑƒÑ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñƒ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ…: %ld%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ–Ð· Ð½ÐµÑ€Ñ�Ð´ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (Ð½Ð¾Ð¼ÐµÑ€ %d)%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ�ÑƒÐ¼Ñ–Ñˆ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–Ð² FDPIC Ñ– Ð½Ðµ-FDPIC%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð²Ð¸Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %d%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð½Ð°Ð·Ð²Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%sÂ»%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ ihex_read_section%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: Â«MainÂ» Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñƒ %s, Ð° Ð½Ðµ Ñƒ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %s
+  Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ñ–Ð»ÑŽÐ¹Ñ‚Ðµ Ð· -fPIC%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð±ÐµÐ· Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð³Ð¾ GOT%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¾Ð±â€™Ñ”ÐºÑ‚ Ð²ÐµÑ€Ñ�Ñ–Ñ— 10/32 Ð½Ðµ Ð¿Ð¾Ð²Ð¸Ð½ÐµÐ½ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� PIC%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ñ–Ð»ÑŽÐ¹Ñ‚Ðµ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� !samegp Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð±ÐµÐ· .prologue: %s%pB: %pA Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…%pB: %pA Ñ” Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¼%pB: %pA Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x > 0xffff%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ� %s Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ñ–Ð· Ñ–Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu (>= sh_info %lu)%pB: %s Ð½Ðµ Ñ” Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¸Ð¼%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ‚Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: %s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð²ÐµÑ€Ñ�Ñ–Ñ— %d%pB: %s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ�, %u (Ð¼Ð°ÐºÑ�Ð¸Ð¼ÑƒÐ¼ â€” %d)%pB: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: 0x%lx > 0xffff'%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ‚Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ --in-implib Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐº Secure Gateway%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� .gnu.version_d%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� .gnu.version_r%pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿Ñ–Ð´Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° .got Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 64ÐºÐ‘ (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ â€” %d)%pB: .opd Ð½Ðµ Ñ” Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¸Ð¼ Ð¼Ð°Ñ�Ð¸Ð²Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² opd%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .preinit_array Ñƒ DSO%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .rsrc%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ .rsrc%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� @gprel Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� @internal Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� @pcrel Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: ABI Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· ABI Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾Ñ— ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—%pB: ABI Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ñ–Ð· Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾ÑŽ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ”ÑŽ:
+  Ñ†Ñ–Ð»ÑŒ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—, Â«%sÂ», Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Â«%sÂ»%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ABI: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: Ð²ÐµÑ€Ñ�Ñ–Ñ� ABI %ld Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾ÑŽ Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ ABI %ld Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñƒ%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ASE: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: Ð¾Ð±Ñ€Ð°Ð·Ð¸ BE8 Ñ” Ñ‡Ð¸Ð½Ð½Ð¸Ð¼Ð¸ Ð»Ð¸ÑˆÐµ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– big-endian%pB: Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ %d%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼%pB: Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– GNU_MBIND Â«%pAÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ð»Ðµ sh_info: %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� GOT: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð· 8- Ð°Ð±Ð¾ 16-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ > %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� GOT: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð· 8-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ > %d%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð² Ð²ÐµÐºÑ‚Ð¾Ñ€Ñ–Ð² ISR Ñ–Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ– Ñ” %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸, Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ– Ñ” %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¼Ñƒ ELF (EM: %d)%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ SB, Ð°Ð»Ðµ __c6xabi_DSBT_BASE Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» SHT_GROUP [Ñ–Ð½Ð´ÐµÐºÑ� %d] Ð½Ðµ Ð¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² SHF_GROUP%pB: Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ TLS Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ TLS Ð½Ðµ Ñ” Ñ�ÑƒÑ�Ñ–Ð´Ð½Ñ–Ð¼Ð¸:%pB: Ð¿ÐµÑ€ÑˆÐ¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– PT_DYNAMIC Ð½Ðµ Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ .dynamic%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %x Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ– ELF. Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ð·Ð°Ð¼Ñ–Ñ�Ñ‚ÑŒ Ð½ÑŒÐ¾Ð³Ð¾ ABS.%pB: Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚ XCOFF, Ñ…Ð¾Ñ‡Ð° Ð´Ð°Ð½Ñ– XCOFF Ð½Ðµ Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑŽÑ‚ÑŒÑ�Ñ�%pB: __gp Ð½Ðµ Ð²ÐºÑ€Ð¸Ð²Ð°Ñ” ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° Ð´Ð°Ð½Ð¸Ñ…%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ FDPIC, Ñ‚Ð°Ðº Ñ– Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ‚Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ FDPIC%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ‚Ð°Ðº Ñ– Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: Â«%sÂ» Ñ– Ñ—Ñ— Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°ÑŽÑ‚ÑŒ Ñƒ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð°Ñ….%pB: Â«%sÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ð¾Ð¼ÐµÑ€Ð¸ Ñ€Ñ�Ð´ÐºÑ–Ð², Ð°Ð»Ðµ Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: Â«%sÂ» Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð°, Ð°Ð»Ðµ Ð½Ðµ Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ñ… Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-PLT Â«%sÂ» Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñƒ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ– Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð³Ð¾ Ð· Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° (Ñ�Ð»Ñ–Ð´ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» Ñ–Ð· -fPIC ?)%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ».%pB: Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ got Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼%pB: Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ plt Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼%pB: Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº aout Ð²ÐºÐ°Ð·ÑƒÑ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñƒ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ…: %u%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ–Ð· Ð½ÐµÑ€Ñ�Ð´ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (Ð½Ð¾Ð¼ÐµÑ€ %d)%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ�ÑƒÐ¼Ñ–Ñˆ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–Ð² FDPIC Ñ– Ð½Ðµ-FDPIC%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð²Ð¸Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %d%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð½Ð°Ð·Ð²Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%sÂ»%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ ihex_read_section%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: Â«MainÂ» Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñƒ %s, Ð° Ð½Ðµ Ñƒ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %s
 %pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: %d%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð°-Ð¿Ð»ÑŽÑ�-Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ: %s Ñƒ %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð°-Ð¿Ð»ÑŽÑ�-Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ: (Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ) Ñƒ %pA%pB: Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² a.out Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ%pB: Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² a.out Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ%pB: Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ– %s Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ RVE Ñ–Ð· Ñ–Ð½ÑˆÐ¾ÑŽ Ñ†Ñ–Ð»Ð»ÑŽ%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d, %d Ð±Ð°Ð¹Ñ‚Ñ–Ð²
-%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %s%pB: Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ° Ñ�Ñ‚Ð¸Ñ�Ð½ÑƒÑ‚Ð¸Ñ… Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Alpha Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð°. Ð¡ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ�Ð¼Ð¸ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñ�Ñ‚Ð¾Ñ€Ð° Ð°Ð±Ð¾ objZ Ð´Ð»Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð½ÐµÑ�Ñ‚Ð¸Ñ�Ð½ÐµÐ½Ð¸Ñ… Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð².%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» fdpic Ð´Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ-fdpic%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ð½Ðµ-fdpic Ð´Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° fdpic%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸ %s Ñ‚Ð° %s%pB: Ð·Ð¼Ñ–Ð½Ð° Ñƒ gp: BRSGP %s%pB: ÐºÐ»Ð°Ñ� %d, Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¼Ð°Ñ” Ð´Ð¾Ð¿Ð¾Ð¼Ñ–Ð¶Ð½Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ %s -mtune=%s Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ %s -mtune=%s%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¾Ñ— Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸, Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¾ÑŽ Ð¶ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ” 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð°%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸ Ð· Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð², Ð° Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ñ” Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸ Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð², Ð° Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ñ” Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð·Ñ– Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ð· -mrelocatable%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð· %s Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ð· %s%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð· %s Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñƒ Ñ�ÐºÐ¸Ñ… Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-pic%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð· -mrelocatable Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %pA Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %pA%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»
+%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ– Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ– Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GOT%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %s%pB: Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ° Ñ�Ñ‚Ð¸Ñ�Ð½ÑƒÑ‚Ð¸Ñ… Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Alpha Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð°. Ð¡ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ�Ð¼Ð¸ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñ�Ñ‚Ð¾Ñ€Ð° Ð°Ð±Ð¾ objZ Ð´Ð»Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð½ÐµÑ�Ñ‚Ð¸Ñ�Ð½ÐµÐ½Ð¸Ñ… Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð².%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» fdpic Ð´Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ-fdpic%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ð½Ðµ-fdpic Ð´Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° fdpic%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸ %s Ñ‚Ð° %s%pB: Ð·Ð¼Ñ–Ð½Ð° Ñƒ gp: BRSGP %s%pB: ÐºÐ»Ð°Ñ� %d, Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¼Ð°Ñ” Ð´Ð¾Ð¿Ð¾Ð¼Ñ–Ð¶Ð½Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ %s -mtune=%s Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ %s -mtune=%s%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¾Ñ— Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸, Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¾ÑŽ Ð¶ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ” 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð°%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸ Ð· Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð², Ð° Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ñ” Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸ Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð², Ð° Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ñ” Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð·Ñ– Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ð· -mrelocatable%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð· %s Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ð· %s%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð· %s Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñƒ Ñ�ÐºÐ¸Ñ… Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-pic%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð· -mrelocatable Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %pA Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %pA%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»
 %pB: csect Â«%sÂ» Ð½Ðµ Ñƒ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–%pB: Ð±ÐµÐ·Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´Ð½Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð±ÐµÐ· Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð±ÐµÐ·Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´Ð½Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOT R_386_GOT32X Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð±ÐµÐ· Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ñƒ LOCAL Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð·Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼Ð¸ Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°Ñ… Ð°Ð±Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¸Ð¼Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼Ð¸%pB: dtp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� %s%pB: Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð¼Ð°Ñ” Ñ–Ð½ÑˆÐ¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚
 %pB: Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð¼Ð°Ñ” Ñ–Ð½ÑˆÐ¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€
 %pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚ Ð±ÐµÐ· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .loader%pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�
 %pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�
-%pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾Ñ— ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—%pB: Ð²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾ÑŽ%pB: Ð²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð¸Ñ…%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ABI Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Cortex-A8 Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð¾ Ð·Ð° Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Cortex-A8 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÐ° VFP11 Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ñ‚ÐµÐ¿Ñ–Ð½ÑŒ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %d Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Â«%pAÂ» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ: %#llx%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ñ– Ð´Ð°Ð½Ñ– Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 835769 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 843419 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð½Ð°Ð±Ð¾Ñ€Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ñ†ÑŒÐ¾Ð³Ð¾ Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð°Ð¼ ÐºÐ¾Ð¼Ð°Ð½Ð´ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Â«%sÂ»; Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº %s Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñƒ Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ %d Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ” Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ„Ð°Ð¹Ð»Ð° Ñ–/Ð°Ð±Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: search_nds32_elf_blank Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»Ñ�Ñ” Ð¿Ñ€Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²ÑƒÐ·Ð¾Ð»%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– COMDAT%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI, %d%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð·Ð²â€™Ñ�Ð·ÐºÑ–Ð² Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÑƒ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…%pB: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð´Ð¾ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ%pB: ÐºÐ»Ð°Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² %s Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· %s%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� gotoff Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: gp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð¸Ñ…%pB: Ð½Ð° Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO%pB: Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾%pB: Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»
+%pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾Ñ— ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—%pB: Ð²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾ÑŽ%pB: Ð²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð¸Ñ…%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ABI Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Cortex-A8 Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð¾ Ð·Ð° Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Cortex-A8 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÐ° VFP11 Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ñ‚ÐµÐ¿Ñ–Ð½ÑŒ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %d Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Â«%pAÂ» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ: %#llx%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ñ– Ð´Ð°Ð½Ñ– Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 835769 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ€Ð¾Ð¼Ñ–Ð¶Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð´Ð»Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 843419 0x%%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 843419 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð½Ð°Ð±Ð¾Ñ€Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ñ†ÑŒÐ¾Ð³Ð¾ Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð°Ð¼ ÐºÐ¾Ð¼Ð°Ð½Ð´ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Â«%sÂ»; Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº %s Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñƒ Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ %d Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ” Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ„Ð°Ð¹Ð»Ð° Ñ–/Ð°Ð±Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: search_nds32_elf_blank Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»Ñ�Ñ” Ð¿Ñ€Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²ÑƒÐ·Ð¾Ð»%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– COMDAT%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI, %d%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð·Ð²â€™Ñ�Ð·ÐºÑ–Ð² Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÑƒ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…%pB: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð´Ð¾ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ%pB: ÐºÐ»Ð°Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² %s Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· %s%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� gotoff Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: gp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð¸Ñ…%pB: Ð½Ð° Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO%pB: Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾%pB: Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»
 %pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Â«%pAÂ»%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %ld Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ñ…%pB: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ‚Ð¸Ð¿Ð¸ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€. Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� â€” 0x%x. Ð’Ñ…Ñ–Ð´Ð½Ñ– Ð´Ð°Ð½Ñ– â€” 0x%x%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ» Ñ” Ñ†Ð¸ÐºÐ»Ð¾Ð¼%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð½Ð°Ð±Ð¾Ñ€Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ñ†ÑŒÐ¾Ð³Ð¾ Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð°Ð¼ ÐºÐ¾Ð¼Ð°Ð½Ð´ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ ihex_read_section%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², %pA, Ð¼Ñ–Ñ�Ñ‚Ð¸Ð² Ð´Ð°Ð½Ñ–
 %pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð· %d Ð´Ð¾ %d Ñ�Ð»Ñ–Ð²
 %pB: Ð½Ð° Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– SHT_GROUP [%u]%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸: Â«%sÂ»; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¸Ð¼, Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¼ Ñ– Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ‚Ð¸Ñ�Ñ� Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Thumb.%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� %u Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s (Ñ–Ð½Ð´ÐµÐºÑ� %u)%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: YZ lop_end (%ld) Ð½Ðµ Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ñ‚ÐµÑ‚Ñ€Ð°Ð´ Ð´Ð¾ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ lop_stab (%ld)
@@ -1150,11 +1169,23 @@ X-Generator: Lokalize 2.0
 %pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: lop_end Ð½Ðµ Ñ” Ð¾Ñ�Ñ‚Ð°Ð½Ð½Ñ–Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ð¾Ð¼ Ñƒ Ñ„Ð°Ð¹Ð»Ñ–
 %pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� lopcode, Â«%dÂ»
 %pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ð»Ðµ sh_link (%d) Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»; Ñ†Ðµ Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ñ— Ð°Ð±Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»; Ñ†Ðµ Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ (global) Ð°Ð±Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¸Ð¹ (weak) Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—.%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»
-%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²; 0x%lx > 0xffff%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÑ”Ð¼Ð¾ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ %s Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ Ð· 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ ÐºÐ¾Ð´Ð¾Ð¼%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð· 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� UltraSPARC-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ‚Ð° HAL-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð· Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¸Ð¼ pic Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ pic%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð·Ñ– Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð·Ñ– Ñ�Ñ‚Ð°Ð»Ð¸Ð¼ gp Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð·Ñ– Ð·Ð¼Ñ–Ð½Ð½Ð¸Ð¼ gp%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ñ– Ñ„Ð°Ð¹Ð»Ð¸ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� 16-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ†Ñ–Ð»Ð¸Ñ… (-mshort), Ð° Ñ€ÐµÑˆÑ‚Ñƒ Ñ„Ð°Ð¹Ð»Ñ–Ð² â€” Ð´Ð»Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ†Ñ–Ð»Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ»%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ñ– Ñ„Ð°Ð¹Ð»Ð¸ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ (-fshort-double), Ð° Ñ–Ð½ÑˆÑ– â€” Ð´Ð»Ñ� 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ.%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ñ– Ñ„Ð°Ð¹Ð»Ð¸ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� HCS12, Ñ–Ð½ÑˆÑ– Ð¶ â€” Ð´Ð»Ñ� HC12%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð· Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-pic ÐºÐ¾Ð´Ñƒ Ñƒ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð· Ð½ÐµÐ·Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¼ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� trap-on-NULL-dereference Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ� (trapping)%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð° Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�, %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð° Ñƒ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%sÂ»%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ñ–Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ” NULL Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ñ�Ñ‚Ð¾Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ–Ð· Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼%pB: Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ– Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ�%pB: Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ– Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ�%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ� XTY_LD Â«%sÂ»%pB: Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ðµ OMIT_FP Ñƒ %pA.%pB: Ð½ÐµÐ¼Ð°Ñ” Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¾ÑŽ %d Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: Ð½ÐµÐ¼Ð°Ñ” Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ð½Ð°Ð·Ð²Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s%pB: Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð³Ñ€ÑƒÐ¿Ð¸ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” 0
-%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ Â«%sÂ»%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ð³Ñ€ÑƒÐ¿Ð¸%pB: Ð½Ðµ-pic ÐºÐ¾Ð´ Ð· Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ imm Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-pic Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¼Ñ–Ñ�Ñ†Ñ� Ð´Ð»Ñ� Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð² Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸, Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· -N%pB: Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ STT_REGISTER Ð¼Ð¾Ð¶Ð½Ð° Ð¾Ð³Ð¾Ð»Ð¾ÑˆÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ %%g[2367]%pB: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ð´Ð»Ñ� Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð»Ñ�Ð½ÐºÐ¸ Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ– Ñƒ _bfd_elf_get_property%pB: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ (0x%x)%pB: pc-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: pc-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¾Ð±'Ñ”ÐºÑ‚Ð° lto Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð´Ð¾Ð´Ð°Ñ‚Ð¾Ðº%pB: Ð¹Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð±ÐµÐ· -fPIC?%pB: Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾%pB: Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹, Ð°Ð»Ðµ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ (0x%x) Ñƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Import Library Format%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–: %s Ñƒ %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–: (Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ) Ñƒ %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð½ÐµÑ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¸Ð¼ Ñ–Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: %ld%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ñ… Ð´Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ Ð· %s Ð´Ð¾ %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ %s%sÂ«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� %s%s%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ STT_GNU_IFUNC Â«%sÂ» Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ”Ñ‚ÑŒÑ�Ñ� %s%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ STT_GNU_IFUNC Â«%sÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ð°Ð±Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� %s; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– x32 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÑƒÐ²Ð°Ñ‚Ð¸Ñ�Ñ� Ð·Ð·Ð¾Ð²Ð½Ñ–, Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ R_386_GOTOFF Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— %s Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_386_GOTOFF Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ %s, Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ R_X86_64_GOTOFF64 Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— %s Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_X86_64_GOTOFF64 Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ %s, Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pB %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¼Ñƒ ELF (EM: %d)%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð·Ð¼Ñ–Ñ�Ñ‚Ñƒ%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² Ð·Ð° Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ %ld%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¾ Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– %d%pB: Ð·Ð°Ð¿Ð¸Ñ� Ð³Ñ€ÑƒÐ¿Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ñ–Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %u Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾%pB: sh_link [%d] Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼%pB: sh_link Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð²Ñ–Ð´ÐºÐ¸Ð½ÑƒÑ‚Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Â«%pBÂ»%pB: sh_link Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Â«%pBÂ»%pB: Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Import Library Format Ð¿Ð¾Ð»Ðµ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼%pB: Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ ARMv8-M Ñ– Ð½Ð¾Ð²Ñ–ÑˆÐ¸Ñ… Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€%pB: Ð·Ð´Ð¾Ð³Ð°Ð´ÐºÐ° Ñ‰Ð¾Ð´Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ñ— Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ñ�Ñ‚ÐµÐºÐ° Ñ– Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %s%pB: Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– ILF Ñ€Ñ�Ð´Ð¾Ðº Ð½Ðµ Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ñ— Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸ Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ csect %d%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð³Ð¾ smclas %d%pB: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ð°Ð»Ðµ Ð¹Ð¾Ð³Ð¾ Ð½ÐµÐ¼Ð°Ñ”%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%s) Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� (%s)%pB: Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%s) Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%pA)%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² (%d)%pB: Ð·Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²: %d (>= %d)%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² %u%pB: tp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[12], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$5%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[1], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$2%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[1], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$4%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[9], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” __tls_used%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$6%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ .idata$6 Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ”%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ %s Â«%sÂ»%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð°Ð½ Ñ�Ñ‚Ð¸Ñ�ÐºÐ°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð°Ð½ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ COMDAT%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: Ñ—Ñ…Ð½Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð½Ðµ Ñ” Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ð¸Ð¼Ð¸%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: Ñ—Ñ…Ð½Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ–%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .opd%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– R_PPC64_TOCSAVE%pB: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð½ÐµÐ¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð²ÐµÑ€Ñ�Ñ–Ñ—, Â«%sÂ»%pB: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, %u, Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .opd%pB: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ %s%pB: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %s%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#x%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ARC %d%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI %d%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ [%#x], Â«%sÂ»%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿, [%#x], Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ» Ñƒ Ð³Ñ€ÑƒÐ¿Ñ– [%pA]%pB: OMIT_FP Ð±ÐµÐ· Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸ÐºÐ° Ñƒ %pA.%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ (0x%x) Ñƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Import Library Format%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚Ð¸Ð¿Ñƒ %#x Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ÐºÐ»Ð°Ñ� Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %d Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s Â«%sÂ»%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð²Ð¸ÐºÐ»Ð¸Ðº Ð±ÐµÐ· PIC IFUNC Â«%sÂ»%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x%pB: ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x%pB: Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð· %s Ð´Ð¾ %s%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° ÑˆÐ¸Ñ€Ð¾ÐºÐ° Ð¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² 0x%02X 0x%02X Ð¿Ñ–Ñ�Ð»Ñ� Ð½Ð°Ð·Ð²Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ð¿Ð¾Ñ‡Ð¸Ð½Ð°ÑŽÑ‡Ð¸ Ð· Â«%sÂ»
-%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s, Ñ…Ð¾Ñ‡Ð° Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð¾Ð¼ Â«_Â», Ð°Ð»Ðµ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ñ–Ð²%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½ÑˆÑ– Ð¿Ð¾Ð»Ñ� e_flags (%#x) Ð½Ñ–Ð¶ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½ÑˆÑ– Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ– Ð¿Ð¾Ð»Ñ� e_flags (%#x) Ð½Ñ–Ð¶ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ�Ð¼Ð¸, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¸Ð¼Ð¸ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð° Â«_Â», Ð°Ð»Ðµ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ð¼Ð¸ Ð· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð°Ð¼Ð¸ Â«_Â»%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ð²ÑƒÐ·Ð»Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ— Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð²Ð¸Ð´Ð¸Ð¼Ñ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ„Ð°Ð¹Ð» core Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ°: %#x > 0xffff%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s BLX Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ %s Â«%sÂ».%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ°: 0x%lx > 0xffff%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» COMDAT Â«%sÂ» Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð½Ð°Ð·Ð²Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� PLT RVE Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Â«%sÂ», %u, Ð¼ÐµÐ½ÑˆÐ¸Ð¹ Ð·Ð° Ð¹Ð¾Ð³Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°, Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð¼Ð¾Ð³Ð° Ñ‰Ð¾Ð´Ð¾ 0xffff Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ�%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð² Ð´Ð»Ñ� Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ–Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ° %d%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %ld Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ñ…%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ 0x%lx Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ° %d%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ð²ÐµÑ€Ñ�Ñ–Ñ— elf, %s Ñ‚Ð° %s%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ ASE Ð¼Ñ–Ð¶ e_flags Ñ– .MIPS.abiflags%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ ABI FP Ð¼Ñ–Ð¶ .gnu.attributes Ñ– .MIPS.abiflags%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ ISA Ð¼Ñ–Ð¶ e_flags Ñ– .MIPS.abiflags%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½ÑŒ ISA Ð¼Ñ–Ð¶ e_flags Ñ– .MIPS.abiflags%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: isymMax (%ld) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” ifdMax (%ld)%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² (%#lx) Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð¼Ñ–Ñ�Ñ†Ðµ Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð² Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%#lx)%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð· Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² PIC Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÑ– Ð½Ðµ Ñ” Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ PIC%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² abicalls Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· abicalls%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ†Ð¸ÐºÐ»ÐµÐ½Ñ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñ�Ñ‚ÐµÐ¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %u%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %u%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ�Ñ‚Ð°Ñ€Ñ–ÑˆÑƒ Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°. Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¼ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð².%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� SDA_BASE%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ð¹ Ñ�Ð¿Ð¾Ñ�Ñ–Ð± ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ STM32L4XX Ð½Ðµ Ñ” Ð½ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ð¸Ð¼ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ð¹ Ñ�Ð¿Ð¾Ñ�Ñ–Ð± ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ VFP11 Ð½Ðµ Ñ” Ð½ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ð¸Ð¼ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ sh_link Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ Ð´Ð»Ñ� mmo, Ñ—Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 65535 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ�Ð»Ð¾Ð²Ð°: %d. Ð‘ÑƒÐ´Ðµ Ð²Ð¸Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Â«MainÂ».
+%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ð²ÐµÑ€Ñ�Ñ–Ñ— %lx (Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¸Ð¹ â€” %lx)%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²; 0x%lx > 0xffff%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÑ”Ð¼Ð¾ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ %s Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ Ð· 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ ÐºÐ¾Ð´Ð¾Ð¼%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð· 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� UltraSPARC-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ‚Ð° HAL-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð· Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¸Ð¼ pic Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ pic%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð·Ñ– Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð·Ñ– Ñ�Ñ‚Ð°Ð»Ð¸Ð¼ gp Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð·Ñ– Ð·Ð¼Ñ–Ð½Ð½Ð¸Ð¼ gp%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ñ– Ñ„Ð°Ð¹Ð»Ð¸ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� 16-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ†Ñ–Ð»Ð¸Ñ… (-mshort), Ð° Ñ€ÐµÑˆÑ‚Ñƒ Ñ„Ð°Ð¹Ð»Ñ–Ð² â€” Ð´Ð»Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ†Ñ–Ð»Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ»%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ñ– Ñ„Ð°Ð¹Ð»Ð¸ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ (-fshort-double), Ð° Ñ–Ð½ÑˆÑ– â€” Ð´Ð»Ñ� 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ.%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ñ– Ñ„Ð°Ð¹Ð»Ð¸ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� HCS12, Ñ–Ð½ÑˆÑ– Ð¶ â€” Ð´Ð»Ñ� HC12%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð· Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-pic ÐºÐ¾Ð´Ñƒ Ñƒ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð· Ð½ÐµÐ·Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¼ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� trap-on-NULL-dereference Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ� (trapping)%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð° Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�, %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð° Ñƒ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%sÂ»%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ñ–Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ” NULL Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ñ�Ñ‚Ð¾Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ–Ð· Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼%pB: Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ– Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ�%pB: Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ– Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ�%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ� XTY_LD Â«%sÂ»%pB: Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ðµ OMIT_FP Ñƒ %pA.%pB: Ð½ÐµÐ¼Ð°Ñ” Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¾ÑŽ %d Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: Ð½ÐµÐ¼Ð°Ñ” Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ð½Ð°Ð·Ð²Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s%pB: Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð³Ñ€ÑƒÐ¿Ð¸ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” 0
+%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ Â«%sÂ»%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ð³Ñ€ÑƒÐ¿Ð¸%pB: Ð½Ðµ-pic ÐºÐ¾Ð´ Ð· Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ imm Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-pic Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¼Ñ–Ñ�Ñ†Ñ� Ð´Ð»Ñ� Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð² Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸, Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· -N%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½Ñ– Ð²Ñ–Ð´Ð¾Ð¼Ð¾Ñ�Ñ‚Ñ– Ñ‰Ð¾Ð´Ð¾ Ð²ÐµÑ€Ñ�Ñ–Ñ—%pB: Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ STT_REGISTER Ð¼Ð¾Ð¶Ð½Ð° Ð¾Ð³Ð¾Ð»Ð¾ÑˆÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ %%g[2367]%pB: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ð´Ð»Ñ� Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð»Ñ�Ð½ÐºÐ¸ Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ– Ñƒ _bfd_elf_get_property%pB: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ (0x%x)%pB: pc-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: pc-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¾Ð±'Ñ”ÐºÑ‚Ð° lto Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð´Ð¾Ð´Ð°Ñ‚Ð¾Ðº%pB: Ð¹Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð±ÐµÐ· -fPIC?%pB: Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾%pB: Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹, Ð°Ð»Ðµ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ (0x%x) Ñƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Import Library Format%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–: %s Ñƒ %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–: (Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ) Ñƒ %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð½ÐµÑ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¸Ð¼ Ñ–Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: %ld%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ñ… Ð´Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ Ð· %s Ð´Ð¾ %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ %s%sÂ«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� %s%s%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ STT_GNU_IFUNC Â«%sÂ» Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ”Ñ‚ÑŒÑ�Ñ� %s%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ STT_GNU_IFUNC Â«%sÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ð°Ð±Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� %s; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– x32 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÑƒÐ²Ð°Ñ‚Ð¸Ñ�Ñ� Ð·Ð·Ð¾Ð²Ð½Ñ–, Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ R_386_GOTOFF Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— %s Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_386_GOTOFF Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ %s, Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ R_X86_64_GOTOFF64 Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— %s Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_X86_64_GOTOFF64 Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ %s, Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pB %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¼Ñƒ ELF (EM: %d)%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð·Ð¼Ñ–Ñ�Ñ‚Ñƒ%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² Ð·Ð° Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ %ld%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ»: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� VTENTRY%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¾ Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– %d%pB: Ð·Ð°Ð¿Ð¸Ñ� Ð³Ñ€ÑƒÐ¿Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ñ–Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %u Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾%pB: sh_link [%d] Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼%pB: sh_link Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð²Ñ–Ð´ÐºÐ¸Ð½ÑƒÑ‚Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Â«%pBÂ»%pB: sh_link Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Â«%pBÂ»%pB: Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Import Library Format Ð¿Ð¾Ð»Ðµ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼%pB: Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ ARMv8-M Ñ– Ð½Ð¾Ð²Ñ–ÑˆÐ¸Ñ… Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€%pB: Ð·Ð´Ð¾Ð³Ð°Ð´ÐºÐ° Ñ‰Ð¾Ð´Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ñ— Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ñ�Ñ‚ÐµÐºÐ° Ñ– Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %s%pB: Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– ILF Ñ€Ñ�Ð´Ð¾Ðº Ð½Ðµ Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ñ— Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸ Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ csect %d%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð³Ð¾ smclas %d%pB: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ð°Ð»Ðµ Ð¹Ð¾Ð³Ð¾ Ð½ÐµÐ¼Ð°Ñ”%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½Ð°ÐºÐ»Ð°Ð´ÐºÑƒ (Ð½ÐµÐ¼Ð°Ñ” Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð½Ð°ÐºÐ»Ð°Ð´Ð¾Ðº)%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%s) Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� (%s)%pB: Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%s) Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%pA)%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² (%d)%pB: Ð·Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²: %d (>= %d)%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² %u%pB: tp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[12], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$5%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[1], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$2%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[1], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$4%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[9], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” __tls_used%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$6%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ .idata$6 Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ”%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ %s Â«%sÂ»%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð°Ð½ Ñ�Ñ‚Ð¸Ñ�ÐºÐ°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð°Ð½ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ COMDAT%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: Ñ—Ñ…Ð½Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð½Ðµ Ñ” Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ð¸Ð¼Ð¸%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: Ñ—Ñ…Ð½Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ–%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .opd%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– R_PPC64_TOCSAVE%pB: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð½ÐµÐ¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð²ÐµÑ€Ñ�Ñ–Ñ—, Â«%sÂ»%pB: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, %u, Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .opd%pB: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ %s%pB: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x%pB: Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ sparc Â«%luÂ»%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %s%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#x%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ARC %d%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI %d%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ [%#x], Â«%sÂ»%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿, [%#x], Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ» Ñƒ Ð³Ñ€ÑƒÐ¿Ñ– [%pA]%pB: OMIT_FP Ð±ÐµÐ· Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸ÐºÐ° Ñƒ %pA.%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ (0x%x) Ñƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Import Library Format%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚Ð¸Ð¿Ñƒ %#x Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ÐºÐ»Ð°Ñ� Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %d Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s Â«%sÂ»%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� AOUT: %d%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� mach bfd %#lx%pB: Ð½Ð°Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� mach %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð²Ð¸ÐºÐ»Ð¸Ðº Ð±ÐµÐ· PIC IFUNC Â«%sÂ»%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x%pB: ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x%pB: Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð· %s Ð´Ð¾ %s%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° ÑˆÐ¸Ñ€Ð¾ÐºÐ° Ð¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² 0x%02X 0x%02X Ð¿Ñ–Ñ�Ð»Ñ� Ð½Ð°Ð·Ð²Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ð¿Ð¾Ñ‡Ð¸Ð½Ð°ÑŽÑ‡Ð¸ Ð· Â«%sÂ»
+%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s, Ñ…Ð¾Ñ‡Ð° Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð¾Ð¼ Â«_Â», Ð°Ð»Ðµ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ñ–Ð²%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½ÑˆÑ– Ð¿Ð¾Ð»Ñ� e_flags (%#x) Ð½Ñ–Ð¶ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½ÑˆÑ– Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ– Ð¿Ð¾Ð»Ñ� e_flags (%#x) Ð½Ñ–Ð¶ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ�Ð¼Ð¸, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¸Ð¼Ð¸ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð° Â«_Â», Ð°Ð»Ðµ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ð¼Ð¸ Ð· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð°Ð¼Ð¸ Â«_Â»%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ð²ÑƒÐ·Ð»Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ— Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð²Ð¸Ð´Ð¸Ð¼Ñ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ„Ð°Ð¹Ð» core Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ°: %#x > 0xffff%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s BLX Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ %s Â«%sÂ».%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ°: 0x%lx > 0xffff%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: BTI Ð²Ð¼Ð¸ÐºÐ°Ñ”Ñ‚ÑŒÑ�Ñ� -z force-bti, Ñ�ÐºÑ‰Ð¾ ÑƒÑ�Ñ– Ð²Ñ…Ñ–Ð´Ð½Ñ– Ð´Ð°Ð½Ñ– Ð½Ðµ Ð¼Ð°ÑŽÑ‚ÑŒ BTI Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– NOTE.%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» COMDAT Â«%sÂ» Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð½Ð°Ð·Ð²Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� PLT RVE Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð»Ð°Ð±ÐºÐ¸Ñ… TLS Ð·Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð²Ñ–Ð´ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ– Ð¼Ð¾Ð¶Ðµ Ð½Ðµ Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ñ‚Ð¸ Ñ‚Ð°Ðº, Ñ�Ðº Ð²Ð¸ Ð½Ð° Ñ‚Ðµ Ñ�Ð¿Ð¾Ð´Ñ–Ð²Ð°Ñ”Ñ‚ÐµÑ�Ñ�%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Â«%sÂ», %u, Ð¼ÐµÐ½ÑˆÐ¸Ð¹ Ð·Ð° Ð¹Ð¾Ð³Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°, Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð¼Ð¾Ð³Ð° Ñ‰Ð¾Ð´Ð¾ 0xffff Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ�%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð² Ð´Ð»Ñ� Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ–Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ° %d%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %ld Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ñ…%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ 0x%lx Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ° %d%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ð²ÐµÑ€Ñ�Ñ–Ñ— elf, %s Ñ‚Ð° %s%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ ASE Ð¼Ñ–Ð¶ e_flags Ñ– .MIPS.abiflags%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ ABI FP Ð¼Ñ–Ð¶ .gnu.attributes Ñ– .MIPS.abiflags%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ ISA Ð¼Ñ–Ð¶ e_flags Ñ– .MIPS.abiflags%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½ÑŒ ISA Ð¼Ñ–Ð¶ e_flags Ñ– .MIPS.abiflags%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: isymMax (%ld) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” ifdMax (%ld)%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² (%#lx) Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð¼Ñ–Ñ�Ñ†Ðµ Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð² Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%#lx)%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð· Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² PIC Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÑ– Ð½Ðµ Ñ” Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ PIC%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² abicalls Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· abicalls%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ†Ð¸ÐºÐ»ÐµÐ½Ñ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñ�Ñ‚ÐµÐ¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %u%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %u%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ�Ñ‚Ð°Ñ€Ñ–ÑˆÑƒ Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°. Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¼ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð².%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� SDA_BASE%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ð¹ Ñ�Ð¿Ð¾Ñ�Ñ–Ð± ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ STM32L4XX Ð½Ðµ Ñ” Ð½ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ð¸Ð¼ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ð¹ Ñ�Ð¿Ð¾Ñ�Ñ–Ð± ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ VFP11 Ð½Ðµ Ñ” Ð½ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ð¸Ð¼ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ sh_link Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ Ð´Ð»Ñ� mmo, Ñ—Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 65535 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ�Ð»Ð¾Ð²Ð°: %d. Ð‘ÑƒÐ´Ðµ Ð²Ð¸Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Â«MainÂ».
 %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ–Ð¹ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� PLT Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– thumb-1%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GOT%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñƒ Ð¿Ð¾Ð»Ñ– flags2 .MIPS.abiflags (0x%lx)%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI, %d%pB: Ð½Ðµ Ð±ÑƒÐ´Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–%pB:%d: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð° Ñ�ÑƒÐ¼Ð° Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² S%pB:%d: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² %d Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ%pB:%d: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%pB:%d: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² S%pB:%pA%s Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸
-%pB:%pA: %s Ñ– %s Ð¼Ð°ÑŽÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s, Ñ�ÐºÐ¸Ð¹ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð·Ð°Ñ�Ð¾Ð±Ð¾Ð¼ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ñ�Ð¼Ñ–Ñ‚Ñ‚Ñ�%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼ --gc-keep-exported%pB:%pA: Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð½ÐµÐ¼Ð°Ñ” Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ %s%pB:%pA: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð° Ð²Ñ�ÐµÑ€ÐµÐ´Ð¸Ð½Ñ– Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–%pB:%pA: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð¿Ð¾Ð·Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÑŽ%pB:%pA: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¸Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Red Hat %s, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´Ð»Ñ� %s%pB:%s Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS%pB:%s Ñ€Ð¾Ð·Ð´Ñ–Ð» %s: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� 2**%u Ð½Ðµ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ�%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð° Ñ�ÑƒÐ¼Ð° Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel (Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� %u, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %u)%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð»Ñ–Ð½Ñ–Ð¹Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð»Ñ–Ð½Ñ–Ð¹Ð½Ð¾Ñ— Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%pB:%u: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ ihex %u Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%s Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– toc%s Ð´ÑƒÐ±Ð»ÑŒÐ¾Ð²Ð°Ð½Ð¾
+%pB:%pA: %s Ñ– %s Ð¼Ð°ÑŽÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ñ‚Ð¸Ñ�Ð½ÐµÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð¾ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ð±ÑƒÑ„ÐµÑ€Ð°%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s, Ñ�ÐºÐ¸Ð¹ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð·Ð°Ñ�Ð¾Ð±Ð¾Ð¼ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ñ�Ð¼Ñ–Ñ‚Ñ‚Ñ�%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼ --gc-keep-exported%pB:%pA: Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð½ÐµÐ¼Ð°Ñ” Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ %s%pB:%pA: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð° Ð²Ñ�ÐµÑ€ÐµÐ´Ð¸Ð½Ñ– Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–%pB:%pA: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð¿Ð¾Ð·Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÑŽ%pB:%pA: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¸Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Red Hat %s, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´Ð»Ñ� %s%pB:%s Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS%pB:%s Ñ€Ð¾Ð·Ð´Ñ–Ð» %s: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� 2**%u Ð½Ðµ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ�%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð° Ñ�ÑƒÐ¼Ð° Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel (Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� %u, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %u)%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð»Ñ–Ð½Ñ–Ð¹Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð»Ñ–Ð½Ñ–Ð¹Ð½Ð¾Ñ— Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%pB:%u: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ ihex %u Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– IntelÑ�Ð¸Ð¼Ð²Ð¾Ð» Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pcrel_lo Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼%s  Ð³Ñ–Ð»ÐºÐ°          %lu
+  toc adj Ð³Ñ–Ð»ÐºÐ¸  %lu
+  notoc Ð³Ñ–Ð»ÐºÐ¸    %lu
+  both Ð³Ñ–Ð»ÐºÐ¸     %lu
+  long branch    %lu
+  long toc adj   %lu
+  long notoc     %lu
+  long both      %lu
+  plt call       %lu
+  plt call save  %lu
+  plt call notoc %lu
+  plt call both  %lu
+  Ð·Ð°Ð³. Ð·Ð°Ð¿Ð¸Ñ�     %lu%s Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– toc%s Ð´Ñ–Ð»ÐµÐ½Ð½Ñ� Ð½Ð° Ð½ÑƒÐ»ÑŒ%s Ð´ÑƒÐ±Ð»ÑŒÐ¾Ð²Ð°Ð½Ð¾
 %s Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ñƒ %s
 %s Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS%s Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸%s Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÑƒ, Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¼Ñƒ %pA%s Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ %s Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ Ð´Ð»Ñ� ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� sdata4 .eh_frame%s: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� TLS Ñƒ %pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA, Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð½Ðµ-TLS Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pB %pA%s: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� TLS Ñƒ %pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA, Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�Ð¼ Ð½Ðµ-TLS Ñƒ %pB%s: Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� TLS Ñƒ %pB Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð½Ðµ-TLS Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pB %pA%s: Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� TLS Ñƒ %pB Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�Ð¼ Ð½Ðµ-TLS Ñƒ %pB%s: Ð½ÐµÐ¼Ð°Ñ” Ñ‚Ð°ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%s: Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾%s: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%s: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ�: %s(Ð·Ð° Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ Ñƒ Ð±Ñ–Ñ‚Ð°Ñ… %u)
 (Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€)
@@ -1170,8 +1201,8 @@ X-Generator: Lokalize 2.0
 *Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾**Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾*       , Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: %#08lx
 , Ð¿Ñ�ÐµÐ²Ð´Ð¾Ð½Ñ–Ð¼: %u
 , Ð·Ñ�ÑƒÐ² Ñ€Ð¾Ð·ÑˆÐ¸Ñ€. Ð¿Ñ€Ð¸Ð²â€™Ð·Ñ�ÐºÐ¸: %u, Ð·Ñ�ÑƒÐ² psect no_opt: %u, Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿: %u (%s)
-, Ð²ÐµÐºÑ‚Ð¾Ñ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² rva: - %pB Ñ” 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼, Ð° %pB â€” Ð½Ñ–-mips32r2 -mfp64 (12 Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ñ… Ð´Ð»Ñ� Ð²Ð¸ÐºÐ»Ð¸ÐºÑ–Ð² Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²)Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñƒ .eh_frame_hdr.eh_frame_hdr Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° FDE, Ñ�ÐºÑ– Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ð²Ð°ÑŽÑ‚ÑŒÑ�Ñ�Ð Ð¾Ð·Ð´Ñ–Ð» .got Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ .pltÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð»Ð¸Ñ�Ñ‚Ð¾ÐºÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð½Ð¾Ñ�Ñ‚Ñ– Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ�Ñ… ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñ–Ð²Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¸ Ð· Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ°Ð¼Ð¸Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð»Ð¸Ñ�Ñ‚ÐºÑ–Ð²Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð»Ð¸Ñ�Ñ‚ÐºÑ–Ð²: %sÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ñ€ÐµÑ�ÑƒÑ€Ñ� Ð· Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ€Ñ�Ð´ÐºÑ–Ð²: %dÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð½ÐµÑ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… Ð¼Ð°Ð½Ñ–Ñ„ÐµÑ�Ñ‚Ñ–Ð²32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ double, Ð²Ñ–Ð´Ð±ÑƒÐ²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ gp-Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ–64 Ð±Ñ–Ñ‚Ð¸ *Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ”Ñ‚ÑŒÑ�Ñ�*
-64-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ double, 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ–: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32r: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32r2: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32rx: Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— n1: Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— n1h; Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· -fPIC<Ð�ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ð½Ð°Ð±Ñ–Ñ€ Ð±Ñ–Ñ‚Ñ–Ð² Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–Ð²><Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ñ– Ð´Ð°Ð½Ñ–> %s<Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ°: %#x>
+, Ð²ÐµÐºÑ‚Ð¾Ñ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² rva: - %pB Ñ” 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼, Ð° %pB â€” Ð½Ñ–-march=%s: Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %s Ð½Ðµ Ñƒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð·Ð° Ð°Ð±ÐµÑ‚ÐºÐ¾ÑŽ: Â«%sÂ» Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð¿ÐµÑ€ÐµÐ´ Â«%sÂ».-march=%s: %s Ñ�Ð»Ñ–Ð´ Ð²Ñ–Ð´Ð¾ÐºÑ€ÐµÐ¼Ð»ÑŽÐ²Ð°Ñ‚Ð¸ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ _-march=%s: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %s: Â«%sÂ»-march=%s: Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Ñ‡Ð¸Ñ�Ð»Ð¾ Ð¿Ñ–Ñ�Ð»Ñ� Â«%dpÂ».-march=%s: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð·Ð°Ð¿Ð¸Ñ�Ð°Ð½Ð¾ Ð½Ðµ Ñƒ ÐºÐ°Ð½Ð¾Ð½Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ. Â«%cÂ»-march=%s: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð¼Ð°Ñ” Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ‚Ð¸Ñ�Ñ� Ð· rv32 Ð°Ð±Ð¾ rv64-march=%s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð°Ð±Ð¾ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %s: Â«%sÂ»-march=%s: Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«dÂ» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«fÂ»-march=%s: Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«qÂ» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«dÂ»-march=%s: Ð¿ÐµÑ€ÑˆÐ¾ÑŽ Ð¿Ñ–Ð´Ð¼Ð½Ð¾Ð¶Ð¸Ð½Ð¾ÑŽ ISA Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Â«eÂ», Â«iÂ» Ð°Ð±Ð¾ Â«gÂ»-march=%s: rv%de Ð½Ðµ Ñ” ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ ISA Ð¾Ñ�Ð½Ð¾Ð²Ð¸-march=%s: Ñƒ rv32 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«qÂ»-march=%s: Ñƒ rv32e Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«fÂ»-march=%s: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº ISA Ð½Ð°Ð¿Ñ€Ð¸ÐºÑ–Ð½Ñ†Ñ–: %s-march=%s: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ñ–Ð´Ð¼Ð½Ð¾Ð¶Ð¸Ð½Ð° ISA Â«%cÂ»-mips32r2 -mfp64 (12 Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ñ… Ð´Ð»Ñ� Ð²Ð¸ÐºÐ»Ð¸ÐºÑ–Ð² Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²)Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñƒ .eh_frame_hdr.eh_frame_hdr Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° FDE, Ñ�ÐºÑ– Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ð²Ð°ÑŽÑ‚ÑŒÑ�Ñ�Ð Ð¾Ð·Ð´Ñ–Ð» .got Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ .pltÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð»Ð¸Ñ�Ñ‚Ð¾ÐºÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð½Ð¾Ñ�Ñ‚Ñ– Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ�Ñ… ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñ–Ð²Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¸ Ð· Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ°Ð¼Ð¸Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð»Ð¸Ñ�Ñ‚ÐºÑ–Ð²Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð»Ð¸Ñ�Ñ‚ÐºÑ–Ð²: %sÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ñ€ÐµÑ�ÑƒÑ€Ñ� Ð· Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ€Ñ�Ð´ÐºÑ–Ð²: %dÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð½ÐµÑ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… Ð¼Ð°Ð½Ñ–Ñ„ÐµÑ�Ñ‚Ñ–Ð²32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ double, Ð²Ñ–Ð´Ð±ÑƒÐ²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ gp-Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ–64 Ð±Ñ–Ñ‚Ð¸ *Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ”Ñ‚ÑŒÑ�Ñ�*
+64-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ double, 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ–: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32r: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32r2: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32rx: Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— n1: Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— n1h; Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· -fPIC; Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· -fPIE<Ð�ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ð½Ð°Ð±Ñ–Ñ€ Ð±Ñ–Ñ‚Ñ–Ð² Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–Ð²><Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ñ– Ð´Ð°Ð½Ñ–> %s<Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ°: %#x>
 <Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ°: %#lx>
 <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾><Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ: %d>
 <Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð¼Ð°Ñ�ÐºÑƒÐ²Ð°Ð½Ð½Ñ�><Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð°>Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� @pltoff Ñ‰Ð¾Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒBASE_IMAGE       ÐžÐ¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŽ BFD %s Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ %s:%dÐ’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° BFD %s, Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ñ”Ð¼Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %s:%d
@@ -1184,7 +1215,7 @@ X-Generator: Lokalize 2.0
 CTL_STLOC (Ð²ÐºÐ°Ð·Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ�)
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÑŒÐºÐ¸Ñ… Ð¿Ñ€Ð°Ð²
 Ð’Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .rsrc!
-Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ñ�Ð´ÐºÑƒ Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ DSOÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ DW_AT_comp_dir Ñ–Ð· Ð½ÐµÑ€Ñ�Ð´ÐºÐ¾Ð²Ð¾ÑŽ Ñ„Ð¾Ñ€Ð¼Ð¾ÑŽÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ€ÐµÐºÑƒÑ€Ñ�Ñ–ÑŽ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¼ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€Ð¾Ð¼ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s.ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %uÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð°Ð´Ñ€ÐµÑ�Ð¸ Â«%uÂ», Ð²Ñ‚Ñ–Ð¼ Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð², Ñ‰Ð¾ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑŽÑ‚ÑŒ Â«%uÂ»ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð²ÐµÑ€Ñ�Ñ–ÑŽ DWARF Â«%uÂ», Ð°Ð»Ðµ Ñƒ Ñ†Ñ–Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÑƒ Ð»Ð¸ÑˆÐµ Ð²ÐµÑ€Ñ�Ñ–Ð¹ Ð´Ð°Ð½Ð¸Ñ… 2, 3 Ñ– 4ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº Ð½Ð° Ð´Ð°Ð½Ñ– Ð²Ð¸Ñ…Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° ÐºÑ–Ð½ÐµÑ†ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð²ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¹ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ DIEÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð° ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð´Ñ–Ð¹ Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´ÑƒÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð°Ð±Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� FORM: %#xÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð°Ñ€Ñ–Ð°Ð½Ñ‚Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ–Ð² %u Ñƒ Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÐ°ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð² (Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð°)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� ÐºÐ¾Ð´Ñ–Ð² Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð²Ñ�Ñ‚ÑƒÐ¿ÑƒÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð° Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð²ÐµÑ€Ñ�Ñ–Ñ� .debug_line, %dÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒDW_EH_PE_datarel Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ†Ñ–Ñ”Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²:
+Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ñ�Ð´ÐºÑƒ Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ DSOÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ DW_AT_comp_dir Ñ–Ð· Ð½ÐµÑ€Ñ�Ð´ÐºÐ¾Ð²Ð¾ÑŽ Ñ„Ð¾Ñ€Ð¼Ð¾ÑŽÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ€ÐµÐºÑƒÑ€Ñ�Ñ–ÑŽ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¼ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€Ð¾Ð¼ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s.ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %uÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–ÑŽ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ… Ð·Ñ– Ð·Ñ�ÑƒÐ²Ð¾Ð¼ %lxÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð°Ð´Ñ€ÐµÑ�Ð¸ Â«%uÂ», Ð²Ñ‚Ñ–Ð¼ Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð², Ñ‰Ð¾ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑŽÑ‚ÑŒ Â«%uÂ»ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð²ÐµÑ€Ñ�Ñ–ÑŽ DWARF Â«%uÂ», Ð°Ð»Ðµ Ñƒ Ñ†Ñ–Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÑƒ Ð»Ð¸ÑˆÐµ Ð²ÐµÑ€Ñ�Ñ–Ð¹ Ð´Ð°Ð½Ð¸Ñ… 2, 3 Ñ– 4ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº Ð½Ð° Ð´Ð°Ð½Ñ– Ð²Ð¸Ñ…Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° ÐºÑ–Ð½ÐµÑ†ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð²ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¹ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ DIEÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð° ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð´Ñ–Ð¹ Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´ÑƒÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð°Ð±Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� FORM: %#xÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð°Ñ€Ñ–Ð°Ð½Ñ‚Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ–Ð² %u Ñƒ Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÐ°ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð² (Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð°)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� ÐºÐ¾Ð´Ñ–Ð² Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð²Ñ�Ñ‚ÑƒÐ¿ÑƒÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð° Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð²ÐµÑ€Ñ�Ñ–Ñ� .debug_line, %dÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒDW_EH_PE_datarel Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ†Ñ–Ñ”Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²:
 Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ�:
 ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�Ð’Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñƒ %s
 Ð’Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñƒ %s Ñƒ %s, Ñ€Ñ�Ð´Ð¾Ðº %d Ñƒ %s
@@ -1192,7 +1223,7 @@ X-Generator: Lokalize 2.0
 Ð’Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð²Ñ…Ð¾Ð´Ñƒ       = 0x%.8lx (%ld)
 ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð»Ñ� %pB Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð¾Ð±Ð¸Ð´Ð²Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Tag_MPextension_use, current Ñ– legacyÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½ÑŒ [.pdata]ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� [.edata (Ð°Ð±Ð¾ Ñ–Ð½ÑˆÐµ Ð¼Ñ–Ñ�Ñ†Ðµ, Ð´Ðµ Ð¹Ð¾Ð³Ð¾ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)]ÐŸÑ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�		%lx
 Ð•ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ð¹ RVAÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� FDE Ñƒ %pB(%pA) Ð¿ÐµÑ€ÐµÑˆÐºÐ¾Ð´Ð¶Ð°Ñ” Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– .eh_frame_hdrÐ£ FDPIC Ñ‰Ðµ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð´Ð»Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð²FILES_VOLUMES    FPU-2.0FPU-3.0ÐŸÐ¾Ð»Ðµ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–Ð²      = 0x%.2x
-ÐŸÐµÑ€ÐµÑ�Ð¿Ñ€Ñ�Ð¼Ð¾Ð²Ð½Ð¸Ð¹ RVAGALAXY           ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOT Ñ– PLT Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¾, Ñ�ÐºÑ‰Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ñ” Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¼Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– GOT Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GP, Ð²Ñ‚Ñ–Ð¼, GP Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GP, Ð°Ð»Ðµ _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ GPDISP Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— ldah Ñ– ldaÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²:
+ÐŸÐµÑ€ÐµÑ�Ð¿Ñ€Ñ�Ð¼Ð¾Ð²Ð½Ð¸Ð¹ RVAGALAXY           Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ GNU_MBIND Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOT Ñ– PLT Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¾, Ñ�ÐºÑ‰Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ñ” Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¼Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– GOT Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GP, Ð²Ñ‚Ñ–Ð¼, GP Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GP, Ð°Ð»Ðµ _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ GPDISP Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— ldah Ñ– ldaÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²:
 Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ FPU)
 Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, Ð±ÑƒÐ´ÑŒ-Ñ�ÐºÐ¸Ð¹ FPU)
 Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ñ�Ð¿Ñ–Ð²Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€ MIPS32r2, 12 Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ñ… Ð´Ð»Ñ� Ð²Ð¸ÐºÐ»Ð¸ÐºÑ–Ð² Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²)
@@ -1200,8 +1231,8 @@ X-Generator: Lokalize 2.0
 Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð° Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŒ)
 Ð¡ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾Ñ— Ñ€ÑƒÑ…Ð¾Ð¼Ð¾Ñ— ÐºÑ€Ð°Ð¿ÐºÐ¸ (32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ FPU)
 Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð°Ð±Ð¾ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ°
-Ð†Ð´.: %#08lxIDC â€” Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ° ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¾Ñ�Ñ‚Ñ– Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñ–Ð²
-IMAGE_ACTIVATOR  ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ INPUT_SECTION_FLAGS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾IO               Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ� Ð¾Ð±Ñ€Ð°Ð·Ñƒ:  (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€=%u)
+Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– IBT Ñ– SHSTKÐ²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ IBTÐ†Ð´.: %#08lxIDC â€” Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ° ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¾Ñ�Ñ‚Ñ– Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñ–Ð²
+Ð¡Ð¸Ð¼Ð²Ð¾Ð» IFUNC %s Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ IFUNCS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾IMAGE_ACTIVATOR  ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ INPUT_SECTION_FLAGS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾IO               Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ� Ð¾Ð±Ñ€Ð°Ð·Ñƒ:  (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€=%u)
 ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ° Ð°Ð´Ñ€ÐµÑ�Ð¸ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ‚Ð¾Ñ€Ð° Ð¾Ð±Ñ€Ð°Ð·Ñƒ: (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°: %u, Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�: %u)
 Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ð¾Ð±Ñ€Ð°Ð·Ñƒ: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð¾Ð»Ð¾Ð´ÑˆÐ¸Ð¹: %u)
 Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¾Ð±Ñ€Ð°Ð·Ñƒ: (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°: %u, Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�: %u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u, Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿: %u)
@@ -1244,7 +1275,7 @@ X-Generator: Lokalize 2.0
 Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB (Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾) Ð· %pB (0x%v)
 Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB Ð· %pB
 Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB Ð· %pB (Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)
-Ð—Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¾Ð²Ð°Ð½Ð¾ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ€ÐµÑ�ÑƒÑ€Ñ�Ñ–Ð² [.rsrc]Ð�Ð´Ñ€ÐµÑ�Ð° S12 (%lx) Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð° Ð¿Ð¾Ð·Ð° RAM Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� (0x2000-x4000), Ñ‚Ð¾Ð¼Ñƒ Ð²Ð°Ð¼ Ñ�Ð»Ñ–Ð´ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ Ð²Ð°ÑˆÐ¾Ð¼Ñƒ ÐºÐ¾Ð´Ñ–Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� SDA Ð±ÐµÐ· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� _SDA_BASE_SECURITY         SEC_RELOC Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pASHELL            SHRFXDSHRPICÐ’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� SIMD: SPSC â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ñƒ
+Ð—Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¾Ð²Ð°Ð½Ð¾ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ€ÐµÑ�ÑƒÑ€Ñ�Ñ–Ð² [.rsrc]Ð�Ð´Ñ€ÐµÑ�Ð° S12 (%lx) Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð° Ð¿Ð¾Ð·Ð° RAM Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� (0x2000-x4000), Ñ‚Ð¾Ð¼Ñƒ Ð²Ð°Ð¼ Ñ�Ð»Ñ–Ð´ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ Ð²Ð°ÑˆÐ¾Ð¼Ñƒ ÐºÐ¾Ð´Ñ–Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� SDA Ð±ÐµÐ· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� _SDA_BASE_SECURITY         SEC_RELOC Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pASHELL            SHRFXDSHRPICÐ²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ SHSTKÐ’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� SIMD: SPSC â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ñƒ
 STABLE           STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ Ð¿Ð¾Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð½Ñ�)
 STA_GBL (Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ñ‚ÐµÐº) %.*s
 STA_LI (Ñ�Ñ‚ÐµÐº Ð»Ñ–Ñ‚ÐµÑ€Ð°Ð»Ñ–Ð²)
@@ -1304,11 +1335,11 @@ X-Generator: Lokalize 2.0
 ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s (%ld) Ñ” Ð¼ÐµÐ½ÑˆÐ¸Ð¼ Ð·Ð° Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%ld)
 ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼
 Ð—Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾Ñ— Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ñ— Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ¸ armapÐ�Ð´Ñ€ÐµÑ�Ð° XGATE (%lx) Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð° Ð¿Ð¾Ð·Ð° RAM Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� (0xE000-0xFFFF), Ñ‚Ð¾Ð¼Ñƒ Ð²Ð°Ð¼ Ñ�Ð»Ñ–Ð´ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñ–, Ð¹Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾, ÐºÐµÑ€ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¾ÑŽ Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ñƒ Ð²Ð°ÑˆÐ¾Ð¼Ñƒ ÐºÐ¾Ð´Ñ–.[%u]: Ð½Ð¸Ð¶Ð½Ñ�: %u, Ð²ÐµÑ€Ñ…Ð½Ñ�: %u
-[abi=16-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ñ†Ñ–Ð»Ðµ, [abi=32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ñ†Ñ–Ð»Ðµ, [Ñ‡Ð¸ÑŽ Ð½Ð°Ð·Ð²Ñƒ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾]_bfd_vms_output_counted Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð´Ð»Ñ� Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾Ñ— ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ð±Ð°Ð¹Ñ‚Ñ–Ð²_bfd_vms_output_counted Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð´Ð»Ñ� Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ñ— ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ð±Ð°Ð¹Ñ‚Ñ–Ð²Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Ð±ÐµÐ· Ð²Ñ…Ð¾Ð´ÑƒÐ¾Ð±'Ñ”ÐºÑ‚ PDEÐ¾Ð±'Ñ”ÐºÑ‚ PIEÑ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð°Ð´Ñ€ÐµÑ�Ð°Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð·Ð° Ð¼ÐµÐ¶ÐµÑŽ Ñ�Ð»Ð¾Ð²Ð°Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¸Ð¹ ÐºÐ¾Ð´ ELF (%d) Ñƒ %pB, Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� %dÑƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ°; Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ñ–Ñ‚ÑŒ ranlib, Ñ‰Ð¾Ð± Ð¹Ð¾Ð³Ð¾ Ð´Ð¾Ð´Ð°Ñ‚Ð¸Ð°Ñ€Ñ…Ñ–Ð²Ð½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ð¼Ð°Ñ�Ð¸Ð²Ñƒ:
+[abi=16-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ñ†Ñ–Ð»Ðµ, [abi=32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ñ†Ñ–Ð»Ðµ, [Ñ‡Ð¸ÑŽ Ð½Ð°Ð·Ð²Ñƒ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾]Ð²Ð¸ÐºÐ»Ð¸Ðº __tls_get_addr Ð¿Ñ€Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ_bfd_vms_output_counted Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð´Ð»Ñ� Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾Ñ— ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ð±Ð°Ð¹Ñ‚Ñ–Ð²_bfd_vms_output_counted Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð´Ð»Ñ� Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ñ— ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ð±Ð°Ð¹Ñ‚Ñ–Ð²Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Ð±ÐµÐ· Ð²Ñ…Ð¾Ð´ÑƒÐ¾Ð±'Ñ”ÐºÑ‚ PDEÐ¾Ð±'Ñ”ÐºÑ‚ PIEÑ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð°Ð´Ñ€ÐµÑ�Ð°Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð·Ð° Ð¼ÐµÐ¶ÐµÑŽ Ñ�Ð»Ð¾Ð²Ð°Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¸Ð¹ ÐºÐ¾Ð´ ELF (%d) Ñƒ %pB, Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� %dÑƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ°; Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ñ–Ñ‚ÑŒ ranlib, Ñ‰Ð¾Ð± Ð¹Ð¾Ð³Ð¾ Ð´Ð¾Ð´Ð°Ñ‚Ð¸Ð°Ñ€Ñ…Ñ–Ð²Ð½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ð¼Ð°Ñ�Ð¸Ð²Ñƒ:
 Ð¼Ð°Ñ�Ð¸Ð², Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð½Ñ–Ñ�Ñ‚ÑŒ: %u, Ð±Ñ–Ñ‚Ð¾Ð²Ð° ÐºÐ°Ñ€Ñ‚Ð°: arsize: %u, a0: 0x%08x
 Ð°Ñ‚Ð¾Ð¼Ð°Ñ€Ð½Ð¸Ð¹, Ñ‚Ð¸Ð¿=0x%02x %s
 Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� L32R/CALLX Ð½Ð° CALL Ð·Ð°Ð·Ð½Ð°Ð»Ð° Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð·Ð²â€™Ñ�Ð·ÐºÑƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· Ð²Ñ…Ñ–Ð´Ð½Ð¸Ð¼ %s Ñ– Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ð¼ %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð·Ð°Ð½ÐµÑ�ÐµÐ½Ð° Ð´Ð¾ Ð±Ð°Ð½ÐºÑƒ Ð°Ð´Ñ€ÐµÑ�Ð° [%lx:%04lx] (%lx) Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ð±Ð°Ð½ÐºÑƒ Ð· Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ, Ð·Ð°Ð½ÐµÑ�ÐµÐ½Ð¾ÑŽ Ð´Ð¾ Ð±Ð°Ð½ÐºÑƒ, [%lx:%04lx] (%lx)Ð¾Ñ�Ð½Ð¾Ð²Ð°: %u, Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ�: %u
-bfd_mach_o_canonicalize_symtab: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸bfd_mach_o_read_section_32: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: %#lx, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ð·Ð°Ð¼Ñ–Ñ�Ñ‚ÑŒ Ð½ÑŒÐ¾Ð³Ð¾ 32bfd_mach_o_read_section_32: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: %#lx, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ð·Ð°Ð¼Ñ–Ñ�Ñ‚ÑŒ Ð½ÑŒÐ¾Ð³Ð¾ 32bfd_mach_o_read_symtab_symbol: Ð½Ð°Ð·Ð²Ð° Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ (%lu >= %u)bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %d (max %lu): Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÑ”Ð¼Ð¾ Ñƒ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ð¾Ð»Ñ� 0x%x: Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÑ”Ð¼Ð¾ Ñƒ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�bfd_mach_o_read_symtab_symbol: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ %d Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñƒ %ubfd_mach_o_read_symtab_symbols: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÑŒ Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²bfd_mach_o_scan: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°, 0x%lx/0x%lxbfd_pef_scan: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°, 0x%lxblkbeg: Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð½Ð°Ð·Ð²Ð°: %.*s
+bfd_mach_o_canonicalize_symtab: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸bfd_mach_o_read_section_32: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: %#lx, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ð·Ð°Ð¼Ñ–Ñ�Ñ‚ÑŒ Ð½ÑŒÐ¾Ð³Ð¾ 32bfd_mach_o_read_section_32: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: %#lx, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ð·Ð°Ð¼Ñ–Ñ�Ñ‚ÑŒ Ð½ÑŒÐ¾Ð³Ð¾ 32bfd_mach_o_read_symtab_symbol: Ð½Ð°Ð·Ð²Ð° Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ (%lu >= %u)bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %d (max %lu): Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÑ”Ð¼Ð¾ Ñƒ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ð¾Ð»Ñ� 0x%x: Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÑ”Ð¼Ð¾ Ñƒ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�bfd_mach_o_read_symtab_symbol: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ %d Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñƒ %ubfd_mach_o_scan: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°, 0x%lx/0x%lxbfd_pef_scan: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°, 0x%lxblkbeg: Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð½Ð°Ð·Ð²Ð°: %.*s
 blkend: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 0x%08x
 Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� (PC rel16) Ð´Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%s) Ð½Ðµ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÑ”Ñ‚ÑŒÑ�Ñ�Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ð¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ bss-pltÐ¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ bss-plt Ñ‡ÐµÑ€ÐµÐ· %pBÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð±ÑƒÐ´ÑƒÐ²Ð°Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Â«%sÂ»Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Â«%sÂ»Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð½Ð° JALX Ð´Ð»Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸, Ñ�ÐºÑƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð°Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð½Ð° JALX Ð´Ð»Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸, Ñ�ÐºÑƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð°Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %sÐ½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð°Ð´Ñ€ÐµÑ�Ð½Ñƒ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÑƒ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ EMH Ñƒ Ð¿ÐµÑ€ÑˆÐ¾Ð¼Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– GST
 Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ DMT
@@ -1329,38 +1360,37 @@ X-Generator: Lokalize 2.0
 Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GST
 Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GST
 ÐºÐ»Ð°Ñ�: %u, dtype: %u, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u, Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº: 0x%08x
-Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ñƒ %pBÐ¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EEOM: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ð²Ð¼Ñ–Ñ�Ñ‚ Ð¹Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ� psindx Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (%#lx)Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ð¹Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ð·Ð° Ð·Ð°Ð»Ð¸ÑˆÐ¾Ðº Ð¼Ñ–Ñ�Ñ†Ñ� (%#x)Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EIHD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� ETIRÐ¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� vmsÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %sÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __ctbpÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __epÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __gpÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ð· Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Â«%sÂ» Ð· Â«%sÂ»Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC11]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HCS12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=XGATE]Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¿Ñ€Ð¸Ñ€Ñ–Ñ�Ñ‚ pc +%-4ddelta_pc_l: +0x%08x
+Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ñƒ %pBÐ¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EEOM: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð¸Ð¿Ñƒ %d EGSD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ð·Ð° Ð·Ð°Ð»Ð¸ÑˆÐ¾Ðº Ð¼Ñ–Ñ�Ñ†Ñ� (%#x)Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð¸Ð¿Ñƒ %d EGSD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ð²Ð¼Ñ–Ñ�Ñ‚ Ð¹Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ� psindx Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (%#lx)Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ð¹Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EIHD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� ETIRÐ¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� vmsÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %sÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __ctbpÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __epÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __gpÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ð· Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Â«%sÂ» Ð· Â«%sÂ»Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC11]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HCS12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=XGATE]Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¿Ñ€Ð¸Ñ€Ñ–Ñ�Ñ‚ pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
 Ð´ÐµÑ�Ðºdimct: %u, aflags: 0x%02x, Ñ†Ð¸Ñ„Ñ€: %u, ÑˆÐºÐ°Ð»Ð°: %u
 Ð²Ñ–Ð´ÐºÐ¸Ð½ÑƒÑ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…: Â«%pAÂ»Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ñ”Ð¼Ð¾ FDE Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ� Ñƒ %pB(%pA).
 Ñ€Ð¾Ð·Ñ€Ð¸Ð²Ð½Ð¸Ð¹ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ (nbr: %u)
-Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð° Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð¼Ð°Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñƒ Ð¾Ð±Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� %pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pAÐ²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ð·Ð½Ð¸ÐºÐ»Ð° Ð· Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒenumbeg, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u, Ð½Ð°Ð·Ð²Ð°: %.*s
+dst_define_location %u Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð° Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð¼Ð°Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñƒ Ð¾Ð±Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� %pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pAÐ²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ð·Ð½Ð¸ÐºÐ»Ð° Ð· Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒenumbeg, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u, Ð½Ð°Ð·Ð²Ð°: %.*s
 enumelt, Ð½Ð°Ð·Ð²Ð°: %.*s
 enumend
 ÐµÐ¿Ñ–Ð»Ð¾Ð³: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: %u, Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº: %u
- Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ %pB(%pA); Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ .eh_frame_hdr Ð½Ðµ Ð±ÑƒÐ´Ðµ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� %s: %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ‚Ð¸Ð¿Ñƒ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ð· Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… elfÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ %s, Ð° Ñƒ %pB â€” Ñ‚Ð°ÐºÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñƒ Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– BE8Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� APCS-%d, Ñ‚Ð¾Ð´Ñ– Ñ�Ðº %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” APCS-%dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� EP9312, Ð° %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� XScaleÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ %pB Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½Ð° 4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ‡Ð¸Ñ�Ð»Ð° Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ Ð´Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð° %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ—Ñ… Ñƒ Ñ†Ñ–Ð»Ð¾Ñ‡Ð¸Ñ�ÐµÐ»ÑŒÐ½Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ†Ñ–Ð»Ñ– Ñ‡Ð¸Ñ�Ð»Ð° Ð´Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð° %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ—Ñ… Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð±Ñ–Ð»ÑŒÑˆÐ¾Ð³Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ�Ð¸Ð²Ñƒ, Ð½Ñ–Ð¶ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¾ Ñƒ %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð±Ñ–Ð»ÑŒÑˆÐ¾Ð³Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ°, Ð½Ñ–Ð¶ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¾ Ñƒ %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ñ–Ð· Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ�Ñ‚ÐµÐºÐ°, Ð° Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ñ–Ð· Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ�Ñ‚ÐµÐºÐ°.Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s, Ð°Ð»Ðµ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ %s, Ð° Ñƒ %pB â€” Ð½Ñ–Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ 64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– Ð´Ñ–Ð¹Ñ�Ð½Ñ– Ñ‡Ð¸Ñ�Ð»Ð° Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾Ñ— Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚Ñ–, Ð° Ñƒ %pB â€” 32-Ð±Ñ–Ñ‚Ð¾Ð²Ñ–Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ FPU-3.0, Ð°Ð»Ðµ Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð»Ð¸ÑˆÐµ FPU-2.0Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ VFP, Ð° Ñƒ %pB â€” Ð½Ñ–Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ñ– FP, Ð° Ñƒ %pB â€” Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ñ– FPÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸-Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ iWMMXt, Ð° Ñƒ %pB â€” Ð½Ñ–Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ñ– FP, Ð° Ñƒ %pB â€” Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ñ– FPÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ñƒ %s, Ñ‚Ð¾Ð´Ñ– Ñ�Ðº %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ñƒ %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %s, Ð° Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð»Ð¸ÑˆÐµ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— MSP430Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %s, Ñ‚Ð¾Ð´Ñ– Ñ�Ðº %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð²ÐµÐ»Ð¸ÐºÐ¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ, Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— MSP430Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð¼Ð°Ð»Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ, Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– (0x%x) x86: 0x%x>Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ–Ð· Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s).Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ñ�Ð´ÐºÐ°Ñ… ISA Ð·Ð°Ð²Ð°Ð¶Ð°Ñ” Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½ÑŽ Â«%sÂ» Ð· Â«%sÂ».Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð²ÐµÑ€Ñ�Ñ–Ñ— ISA Ð´Ð»Ñ� Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«%sÂ». %d.%d, Ð° Ð½Ðµ %d.%dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð°Ñ†Ñ–Ñ— SB ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ð· Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼ R9Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� XLEN (%u). Ð™Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾, Ð²Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚Ðµ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ñƒ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–ÑŽ.Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: XLEN Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð·Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð´Ð»Ñ� Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u).Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² R2 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ rf16 Ñ– Ð¿Ð¾Ð²Ð½Ð¸Ð¹ Ð½Ð°Ð±Ñ–Ñ€ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð² %d/%dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA, %s Ð· %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»Ñ–Ð² Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€, %c/%cÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² %s: %s Ð· %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð²ÐµÑ€Ñ�Ñ–Ð¹ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— priv (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°/Ð¿Ñ€Ð¾Ð¼Ñ–Ð¶Ð½Ð°/Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�).Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ñƒ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ– R9Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº ISA Â«%sÂ». ÐŸÐµÑ€ÑˆÐ¾ÑŽ Ð»Ñ–Ñ‚ÐµÑ€Ð¾ÑŽ Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Â«iÂ» Ð°Ð±Ð¾ Â«eÂ», Ð° Ð¼Ð°Ñ”Ð¼Ð¾ Â«%sÂ».Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð´Ð°Ð½Ñ– Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–, Ñ†Ñ– Ð´Ð°Ð½Ñ– Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² Â«%sÂ»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¼Ñ–Ñ‚ÐºÐ° Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Â«%d, %sÂ» Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð° Ð· Ð¼Ñ–Ñ‚ÐºÐ¾ÑŽ Â«%d, %sÂ»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¸Ð¹ Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ Ð±Ð°Ð·Ð¾Ð²Ñ– Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° %s Ð· %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð· %pB Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²ÐµÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� %pB Ð·Ñ– Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¼ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ %pB Ñ–Ð½ÑˆÐ¾Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ð¾Ñ�Ñ‚Ñ– Ñƒ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ– Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� fp16 Ð¼Ñ–Ð¶ %pB Ñ‚Ð° %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� (Ð·Ð°Ð±ÑƒÐ»Ð¸ -fpic?)Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±â€™Ñ”ÐºÑ‚-Ð´Ð¶ÐµÑ€ÐµÐ»Ð¾, %pB, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÑ€Ñ�Ñ–ÑŽ EABI %d, Ð° Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�, %pB, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÑ€Ñ�Ñ–ÑŽ EABI %dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ ARC4 Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð¾Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» __rtinitÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Tag_ABI_array_object_align_expected Ñƒ %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Tag_ABI_array_object_alignment Ñƒ %pBÐ¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ„Ð°Ð¹Ð»Ð° Ñ�Ñ‚Ð°Ð»Ð¸Ñ�Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸, %pBÐ²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfoÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfoÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� HI16Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfoÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ñ�ÑƒÐ²Ð¸ Ñ„Ð°Ð¹Ð»Ñ–Ð² Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð·Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� .fixupÑ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ñ” Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¸Ð¼Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ñ„Ð°Ð¹Ð» Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–Ñ„Ð°Ð¹Ð» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼Ñ„Ð°Ð¹Ð» Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÑ– Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� FDE, Ñ�ÐºÐµ Ð·Ð°Ð²Ð°Ð¶Ð°Ñ” Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ .eh_frame_hdr, Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ‚Ð¸ %sÐ²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ 0x%08x, Ð²Ñ‚Ñ–Ð¼, _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾
-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð±ÐµÐ· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� _gpÐ¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ‚Ð¸Ð¿Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð² Ñƒ Ñ„Ð°Ð¹Ð»Ð°Ñ… mach-o: %ld Ñ– %ldincr_linum(b): +%u
+ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ %pB(%pA); Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ .eh_frame_hdr Ð½Ðµ Ð±ÑƒÐ´Ðµ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� %s: %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ‚Ð¸Ð¿Ñƒ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ð· Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… elfÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ð¾Ð¶Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð²ÐµÑ€Ñ…Ð½ÑŽ Ð´Ñ–Ð»Ñ�Ð½ÐºÑƒ Ð´Ð°Ð½Ð¸Ñ…, Ð°Ð»Ðµ %pB Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ñ‚Ðµ, Ñ‰Ð¾ Ð´Ð°Ð½Ñ– Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð¾ Ð»Ð¸ÑˆÐµ Ñƒ Ð½Ð¸Ð¶Ð½Ñ–Ð¹ Ð´Ñ–Ð»Ñ�Ð½Ñ†Ñ– Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ–Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ %s, Ð° Ñƒ %pB â€” Ñ‚Ð°ÐºÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñƒ Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– BE8Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� APCS-%d, Ñ‚Ð¾Ð´Ñ– Ñ�Ðº %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” APCS-%dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� EP9312, Ð° %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� XScaleÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ %pB Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½Ð° 4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ‡Ð¸Ñ�Ð»Ð° Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ Ð´Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð° %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ—Ñ… Ñƒ Ñ†Ñ–Ð»Ð¾Ñ‡Ð¸Ñ�ÐµÐ»ÑŒÐ½Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ†Ñ–Ð»Ñ– Ñ‡Ð¸Ñ�Ð»Ð° Ð´Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð° %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ—Ñ… Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð±Ñ–Ð»ÑŒÑˆÐ¾Ð³Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ�Ð¸Ð²Ñƒ, Ð½Ñ–Ð¶ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¾ Ñƒ %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð±Ñ–Ð»ÑŒÑˆÐ¾Ð³Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ°, Ð½Ñ–Ð¶ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¾ Ñƒ %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ñ–Ð· Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ�Ñ‚ÐµÐºÐ°, Ð° Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ñ–Ð· Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ�Ñ‚ÐµÐºÐ°.Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s, Ð°Ð»Ðµ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ %s, Ð° Ñƒ %pB â€” Ð½Ñ–Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ 64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– Ð´Ñ–Ð¹Ñ�Ð½Ñ– Ñ‡Ð¸Ñ�Ð»Ð° Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾Ñ— Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚Ñ–, Ð° Ñƒ %pB â€” 32-Ð±Ñ–Ñ‚Ð¾Ð²Ñ–Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ FPU-3.0, Ð°Ð»Ðµ Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð»Ð¸ÑˆÐµ FPU-2.0Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ VFP, Ð° Ñƒ %pB â€” Ð½Ñ–Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ñ– FP, Ð° Ñƒ %pB â€” Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ñ– FPÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸-Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ iWMMXt, Ð° Ñƒ %pB â€” Ð½Ñ–Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ñ– FP, Ð° Ñƒ %pB â€” Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ñ– FPÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ñƒ %s, Ñ‚Ð¾Ð´Ñ– Ñ�Ðº %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ñƒ %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %s, Ð° Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð»Ð¸ÑˆÐµ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— MSP430Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %s, Ñ‚Ð¾Ð´Ñ– Ñ�Ðº %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð²ÐµÐ»Ð¸ÐºÐ¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ, Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— MSP430Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð¼Ð°Ð»Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ, Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾Ð³Ð¾ AArch64: 0x%x>Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– (0x%x) x86: 0x%x>Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ–Ð· Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s).Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ñ�Ð´ÐºÐ°Ñ… ISA Ð·Ð°Ð²Ð°Ð¶Ð°Ñ” Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½ÑŽ Â«%sÂ» Ð· Â«%sÂ».Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð²ÐµÑ€Ñ�Ñ–Ñ— ISA Ð´Ð»Ñ� Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«%sÂ». %d.%d, Ð° Ð½Ðµ %d.%dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð°Ñ†Ñ–Ñ— SB ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ð· Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼ R9Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� XLEN (%u). Ð™Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾, Ð²Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚Ðµ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ñƒ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–ÑŽ.Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: XLEN Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð·Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð´Ð»Ñ� Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u).Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² R2 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ rf16 Ñ– Ð¿Ð¾Ð²Ð½Ð¸Ð¹ Ð½Ð°Ð±Ñ–Ñ€ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð² %d/%dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA, %s Ð· %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»Ñ–Ð² Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€, %c/%cÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² %s: %s Ð· %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ñƒ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ– R9Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº ISA Â«%sÂ». ÐŸÐµÑ€ÑˆÐ¾ÑŽ Ð»Ñ–Ñ‚ÐµÑ€Ð¾ÑŽ Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Â«iÂ» Ð°Ð±Ð¾ Â«eÂ», Ð° Ð¼Ð°Ñ”Ð¼Ð¾ Â«%sÂ».Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð´Ð°Ð½Ñ– Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–, Ñ†Ñ– Ð´Ð°Ð½Ñ– Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² Â«%sÂ»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¼Ñ–Ñ‚ÐºÐ° Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Â«%d, %sÂ» Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð° Ð· Ð¼Ñ–Ñ‚ÐºÐ¾ÑŽ Â«%d, %sÂ»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¸Ð¹ Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ Ð±Ð°Ð·Ð¾Ð²Ñ– Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° %s Ð· %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð· %pB Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²ÐµÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� %pB Ð·Ñ– Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¼ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ %pB Ñ–Ð½ÑˆÐ¾Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ð¾Ñ�Ñ‚Ñ– Ñƒ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ– Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� fp16 Ð¼Ñ–Ð¶ %pB Ñ‚Ð° %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� (Ð·Ð°Ð±ÑƒÐ»Ð¸ -fpic?)Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±â€™Ñ”ÐºÑ‚-Ð´Ð¶ÐµÑ€ÐµÐ»Ð¾, %pB, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÑ€Ñ�Ñ–ÑŽ EABI %d, Ð° Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�, %pB, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÑ€Ñ�Ñ–ÑŽ EABI %dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ ARC4 Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð¾Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» __rtinitÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Tag_ABI_array_object_align_expected Ñƒ %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Tag_ABI_array_object_alignment Ñƒ %pBÐ¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ„Ð°Ð¹Ð»Ð° Ñ�Ñ‚Ð°Ð»Ð¸Ñ�Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸, %pBÐ²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfoÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfoÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� HI16Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfoÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ñ�ÑƒÐ²Ð¸ Ñ„Ð°Ð¹Ð»Ñ–Ð² Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð·Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� .fixupÑ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ñ” Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¸Ð¼Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ñ„Ð°Ð¹Ð» Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–Ñ„Ð°Ð¹Ð» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼Ñ„Ð°Ð¹Ð» Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÑ– Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� FDE, Ñ�ÐºÐµ Ð·Ð°Ð²Ð°Ð¶Ð°Ñ” Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ .eh_frame_hdr, Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ‚Ð¸ %sÐ²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð±ÐµÐ· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� _gpÐ¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ‚Ð¸Ð¿Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð² Ñƒ Ñ„Ð°Ð¹Ð»Ð°Ñ… mach-o: %ld Ñ– %ldincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
 Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ‚ÑƒÑ‚: 0x%08x
-Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ RL78Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ RL78Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð»Ñ� %sÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð°Ð±Ð¾ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½ÐµÐ¿Ð°Ñ€Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Â«%sÂ» Ð· Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾ÑŽ Â«%sÂ» Ð¿Ñ€Ð¸Ð·Ð²ÐµÐ»Ð¾ Ð´Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ð¾Ð·Ñ€Ñ–Ð»Ð¸Ð²Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð½ÐµÐ¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð°Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .got.locÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð½ÐµÑƒÐ·Ð³Ð¾Ð´Ð¶ÐµÐ½Ñ–Ñ�Ñ‚ÑŒ: Ð·Ð°Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� %lu != Ð¼Ð°ÐºÑ�. %lu; Ð±ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ñ‚Ðµ Ð¿Ñ€Ð¾ Ñ†ÑŽ Ð²Ð°Ð´ÑƒÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ TARGET2, Â«%sÂ»Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� bfdÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pAÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð²Ñ…Ñ–Ð´Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð½Ðµ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– ELF Ñ– Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð½Ðµ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– mmo. Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¾ÑŽ objcopy Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð· ELF Ð°Ð±Ð¾ mmo Ð°Ð±Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼ Â«-no-expandÂ» (Ð´Ð»Ñ� gcc Â«-Wa,-no-expandÂ»)Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð²Ñ…Ñ–Ð´Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð½Ðµ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– ELF Ñ– Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð½Ðµ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– mmo. Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¾ÑŽ objcopy Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð· ELF Ð°Ð±Ð¾ mmo Ð°Ð±Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° gcc Â«-mno-base-addressesÂ».Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ñ–Ñ�Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñƒ .eh_frame_entry: %pAÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ ETIRÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� %s Ð· ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð°Ð¼Ð¸ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ ip2k: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½ÑŒÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ ip2k: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½ÑŒ Ð±ÐµÐ· Ð¿Ð¾Ð²Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñ�Ñ‚Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ.Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾, Ñ†Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° - %s - Ñ” Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¾ÑŽ?Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ñƒ (PC rel26) Ð´Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%s)Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ�Ð»Ð¾Ð²Ð¾Ð¼ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð¼Ñ–Ñ‚ÐºÐ°, Ð½Ð°Ð·Ð²Ð°: %.*s
+Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ RL78Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ RL78Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð»Ñ� %sÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð°Ð±Ð¾ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½ÐµÐ¿Ð°Ñ€Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Â«%sÂ» Ð· Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾ÑŽ Â«%sÂ» Ð¿Ñ€Ð¸Ð·Ð²ÐµÐ»Ð¾ Ð´Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ð¾Ð·Ñ€Ñ–Ð»Ð¸Ð²Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð½ÐµÐ¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð°Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .got.locÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð½ÐµÑƒÐ·Ð³Ð¾Ð´Ð¶ÐµÐ½Ñ–Ñ�Ñ‚ÑŒ: Ð·Ð°Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� %lu != Ð¼Ð°ÐºÑ�. %lu; Ð±ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ñ‚Ðµ Ð¿Ñ€Ð¾ Ñ†ÑŽ Ð²Ð°Ð´ÑƒÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ %sÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ TARGET2, Â«%sÂ»Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� bfdÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pAÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð²Ñ…Ñ–Ð´Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð½Ðµ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– ELF Ñ– Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð½Ðµ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– mmo. Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¾ÑŽ objcopy Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð· ELF Ð°Ð±Ð¾ mmo Ð°Ð±Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼ Â«-no-expandÂ» (Ð´Ð»Ñ� gcc Â«-Wa,-no-expandÂ»)Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð²Ñ…Ñ–Ð´Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð½Ðµ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– ELF Ñ– Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð½Ðµ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– mmo. Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¾ÑŽ objcopy Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð· ELF Ð°Ð±Ð¾ mmo Ð°Ð±Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° gcc Â«-mno-base-addressesÂ».Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ñ–Ñ�Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñƒ .eh_frame_entry: %pAÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ ETIRÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� %s Ð· ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð°Ð¼Ð¸ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ ip2k: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½ÑŒÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ ip2k: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½ÑŒ Ð±ÐµÐ· Ð¿Ð¾Ð²Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñ�Ñ‚Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ.Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾, Ñ†Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° - %s - Ñ” Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¾ÑŽ?Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ñƒ (PC rel26) Ð´Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%s)Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ�Ð»Ð¾Ð²Ð¾Ð¼ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð¼Ñ–Ñ‚ÐºÐ°, Ð½Ð°Ð·Ð²Ð°: %.*s
 Ð´Ð¾Ð²Ð¶.: %2u, Ñ‚Ð¸Ð¿: %2u Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ñ�Ð´ÐºÐ°  (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u)
 ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ñ–
 ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð°Ñ…
 ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð°Ñ…
 ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ñ–
 Ð»Ñ–Ñ‚ÐµÑ€Ð°Ð»Ð²Ñ–Ð´Ð±ÑƒÐ²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð±ÑƒÐºÐ²Ð°Ð»ÑŒÐ½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° Ð´Ð¾Ð²Ð³Ð¾Ñ— Ð³Ñ–Ð»ÐºÐ¸, Â«%sÂ»mach-o: Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² (%u), Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð° ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” 255,
-Ð°Ñ€Ñ…Ñ–Ð² Ð· Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼Ð¿Ð°Ð¼'Ñ�Ñ‚ÑŒ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð¾mep: Ð½ÐµÐ¼Ð°Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� ÐºÐ¾Ð´Ñƒ %dmodbeg
+Ð°Ñ€Ñ…Ñ–Ð² Ð· Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð°Ñ€Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð°Ñ€Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ mach-o ARM: reloc Ñ” Ð¿ÐµÑ€ÑˆÐ¸Ð¼ relocÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� mach-o ARM: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %d (pcrel: %d)Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� mach-o: Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²Ð¿Ð°Ð¼'Ñ�Ñ‚ÑŒ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð¾mep: Ð½ÐµÐ¼Ð°Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� ÐºÐ¾Ð´Ñƒ %dmodbeg
 modend
 Ð½Ð°Ð·Ð²Ð°: [Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: %08lx Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° %d]: Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ð¹Ð²Ð¿Ñ€Ð¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð¾ Ð½Ð¾Ð²Ñ– Ð²Ñ…Ñ–Ð´Ð½Ñ– Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—, Ð°Ð»Ðµ Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…:Ð½Ñ–Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð½Ð°Ð·Ð¾Ð²Ð½Ñ– %s Ð½Ðµ Ð¿Ð¾Ð²â€™Ñ�Ð·Ð°Ð½Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð±ÐµÐ· Ð¿Ð¾Ð¼Ð¸Ð»Ð¾ÐºÐ±Ñ–Ð»ÑŒÑˆÐµ Ð°Ñ€Ñ…Ñ–Ð²Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð½ÐµÐ¼Ð°Ñ”Ð½ÐµÐ¼Ð°Ñ” Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²Ñ€Ð¾Ð·Ñ€Ð¸Ð²Ð½Ð¸Ð¹ Ð¼Ð°Ñ�Ð¸Ð² %s
-Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°ÑŽÑ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», %sÑ�ÑƒÐ¼Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ 0x%v Ð±ÐµÐ· Ð¾Ð²ÐµÑ€Ð»ÐµÑŽ Ñ‚Ð° Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¾Ð²ÐµÑ€Ð»ÐµÑŽ 0x%v Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑŽÑ‚ÑŒ Ð¼Ñ–Ñ�Ñ‚ÐºÑ–Ñ�Ñ‚ÑŒ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ñ…Ð¾Ð²Ð¸Ñ‰Ð° Ð´Ð°Ð½Ð¸Ñ…
+Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°ÑŽÑ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», %sÐ½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²Ñ�ÑƒÐ¼Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ 0x%v Ð±ÐµÐ· Ð¾Ð²ÐµÑ€Ð»ÐµÑŽ Ñ‚Ð° Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¾Ð²ÐµÑ€Ð»ÐµÑŽ 0x%v Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑŽÑ‚ÑŒ Ð¼Ñ–Ñ�Ñ‚ÐºÑ–Ñ�Ñ‚ÑŒ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ñ…Ð¾Ð²Ð¸Ñ‰Ð° Ð´Ð°Ð½Ð¸Ñ…
 Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– @fptrÐ½ÐµÐ¼Ð°Ñ”Ñ€Ð¾Ð·Ð´Ñ–Ð», Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð»Ñ� Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ GOT Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² GOTÐ½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ð´Ð»Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒÐ½Ðµ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð´Ð°Ð½Ñ–=%lx Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾=%d
 Ð½Ðµ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð·Ð¼Ñ–Ð½Ð½Ñƒ Ñ�ÐµÑ€ÐµÐ´Ð¾Ð²Ð¸Ñ‰Ð° var
 Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ– Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸!Ð·Ñ�ÑƒÐ² Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÐ¸ Ð´Ð»Ñ� Ð²Ñ…Ñ–Ð´Ð½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ» Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ—Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ÑƒÐ¾Ð´Ð½Ñ–Ñ”ÑŽ Ñ–Ð· Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¸Ñ… Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ Ñ†Ñ–Ñ”Ñ— Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ” Ñ‚Ðµ, Ñ‰Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ ÐºÐ¾Ð´Ñ– Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ðº, Ð½Ð°Ñ‡Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¼Ð°Ñ” Ð±Ñ–Ð»ÑŒÑˆÐµ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�, Ð½Ñ–Ð¶ Ð±ÑƒÐ»Ð¾ Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð¾ Ñ‚Ð°Ð¼, Ð´Ðµ Ð¹Ð¾Ð³Ð¾ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ñ�Ð»Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ÑƒÐ¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº
 Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lxÐ·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx:Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx: Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = 0x%lxÐ·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = 0x%lx:Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð°Ð´Ñ€ÐµÑ�Ð° bkpt 0x%08x
 Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» recbeg: Ð½Ð°Ð·Ð²Ð°: %.*s
 recend
-Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð·Ð°Ð½ÐµÑ�ÐµÐ½Ñƒ Ð´Ð¾ Ð±Ð°Ð½ÐºÑƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ [%lx:%04lx] Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñ– Ð°Ð´Ñ€ÐµÑ�, %04lxÐ¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº Ñƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ–.Ñ€ÐµÐ³Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ %%g%d: %s Ñƒ %pB, Ñ€Ð°Ð½Ñ–ÑˆÐµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %s Ñƒ %pBÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð´Ð°Ð½Ñ–
+Ð·Ð°Ð¿Ð¸Ñ� Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼ Ð´Ð»Ñ� Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ Ð½Ð°Ð·Ð²Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð·Ð°Ð½ÐµÑ�ÐµÐ½Ñƒ Ð´Ð¾ Ð±Ð°Ð½ÐºÑƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ [%lx:%04lx] Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñ– Ð°Ð´Ñ€ÐµÑ�, %04lxÐ¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº Ñƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ–.Ñ€ÐµÐ³Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ %%g%d: %s Ñƒ %pB, Ñ€Ð°Ð½Ñ–ÑˆÐµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %s Ñƒ %pBÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð´Ð°Ð½Ñ–
 Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%d) Ñ” *Ð�Ð•Ð’Ð†Ð”ÐžÐœÐ˜Ðœ*Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� psect, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ñ” RELÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾ÐºÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿Ð°Ñ€Ð½Ð¸Ð¼ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ñ–Ð¶ Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð²Ð¸Ð»ÑƒÑ‡Ð°Ñ”Ð¼Ð¾ Ð½ÐµÐ²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Â«%pBÂ»Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ� %pB: %s
 Ð·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¾Ð²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %drtnbeg
 rtnend: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ 0x%08x
@@ -1369,26 +1399,30 @@ X-Generator: Lokalize 2.0
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ– Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pAÑ€Ð¾Ð·Ð´Ñ–Ð» Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 64 ÐºÐ‘; Ð½Ð¸Ð¶Ñ‡Ð¸Ð¹ Ð·Ð° Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (Ð´Ð¸Ð². Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)som_sizeof_headers Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾Ð²Ð¸Ð±Ð°Ñ‡Ñ‚Ðµ, Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñ– Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ð½Ð°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð².
+Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ– Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pAÑ€Ð¾Ð·Ð´Ñ–Ð» Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 64 ÐºÐ‘; Ð½Ð¸Ð¶Ñ‡Ð¸Ð¹ Ð·Ð° Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (Ð´Ð¸Ð². Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)som_sizeof_headers Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾Ð²Ð¸Ð±Ð°Ñ‡Ñ‚Ðµ, Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ†ÐµÐ¹ Ñ„Ð°Ð¹Ð»Ð²Ð¸Ð±Ð°Ñ‡Ñ‚Ðµ, Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñ– Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ð½Ð°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð².
 Ð²Ð¸Ð±ÐµÑ‡Ñ‚Ðµ, modtab, toc Ñ‚Ð° extrefsyms Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´ dysymtab Ñƒ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ–Ð¹ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ‰Ðµ Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾.Ð´Ð¶ÐµÑ€ÐµÐ»Ð¾ (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u)
 Ñ„Ð°Ð»ÑŒÑˆÐ¸Ð²Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ALPHA_R_BSRÐ¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ Ñ�Ñ‚ÐµÐºÐ° Ð±ÑƒÐ´Ðµ Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾ Ð²Ð¸ÐºÐ»Ð¸Ðº Ð· %s Ð´Ð¾ %s
 Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° (%d) Ñƒ _bfd_vms_pushÐ¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ñƒ _bfd_vms_popÑ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ– Ð´Ð°Ð½Ñ–: %s
-Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Â«%sÂ» Ñ” Ñ–Ð½ÑˆÐ¾ÑŽ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° (Ð±ÐµÐ· Ð½Ð°Ð·Ð²Ð¸)ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸ Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°ÑŽÑ‚ÑŒ Ð¾Ð±Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ÑƒÑ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÑ�Ð¸Ð¼Ð²Ð¾Ð» Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¼Ð°Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� st_other Ð´Ð»Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ— ABI 1Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñ–Ð²: REGISTER Ñƒ %pB Ñ– %s Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñƒ %pBÑ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸, Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒÐ¼Ð°Ñ�Ð¸Ð² Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸:
+Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Â«%sÂ» Ñ” Ñ–Ð½ÑˆÐ¾ÑŽ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° (Ð±ÐµÐ· Ð½Ð°Ð·Ð²Ð¸)ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸ Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°ÑŽÑ‚ÑŒ Ð¾Ð±Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ÑƒÑ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÑ�Ð¸Ð¼Ð²Ð¾Ð» Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¼Ð°Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� st_other Ð´Ð»Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ— ABI 1Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñ–Ð²: REGISTER Ñƒ %pB Ñ– %s Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñƒ %pBÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿Ñ€Ð¸Ð²'Ñ�Ð·ÐºÐ¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð¾ STB_GNU_UNIQUE Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸, Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ‚Ð¸Ð¿Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² STT_GNU_IFUNC Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒÐ¼Ð°Ñ�Ð¸Ð² Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸:
 term(b): 0x%02xterm_w: 0x%04xÑƒ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ–Ð¹ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ†Ñ–Ð»Ñ– bfin Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF Ð· %pB Ð²Ð¸Ð½Ð¸Ðº ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚Ð·Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² GOT Ð´Ð»Ñ� -fpic. Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð· -fPICÑ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–ÑŽ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð´Ð»Ñ� ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ� Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒÑ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ñ‚Ð¸Ð¿Ñƒ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð°:
 Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ñ‚Ð¸Ð¿Ñƒ Ð´Ð»Ñ� Ñ�Ð¿Ð¸Ñ�ÐºÑƒ Ñ–Ð½Ð´ÐµÐºÑ�Ñ–Ð² %u:
 Ñ‚Ð¸Ð¿Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº
 typspec (Ð´Ð¾Ð²Ð¶.: %u)
-Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð´Ð°Ð½Ñ– Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� %#xÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ»Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ñ–Ð²Ð½Ð¾Ñ†Ñ–Ð½Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#xÐ½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð´Ð¾Ñ�Ñ�Ð³Ñ‚Ð¸ %s (Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ 0x%08x) Ñ–Ð· Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° (Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ 0x%08x), Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� (%d) Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ, Ð²Ñ–Ð´ -32678 Ð´Ð¾ 32767.
-Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� EIHS Ð·Ñ– Ð·Ñ�ÑƒÐ²Ð¾Ð¼ %#xÑ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ Ð· %pBÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#xÐ½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº %s
-Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�, %s, Ñƒ Ñ�ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–: %sÐ½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ STO_SH5_ISA32 Ð½Ð°Ð´ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¼Ð°ÑˆÐ¸Ð½Ð¸Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ„Ð°Ð¹Ð»Ð° core OSF/1, %dÐ½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ egsd, %u
+Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð´Ð°Ð½Ñ– Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� %#xÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ»Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ñ–Ð²Ð½Ð¾Ñ†Ñ–Ð½Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#xÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� EIHS Ð·Ñ– Ð·Ñ�ÑƒÐ²Ð¾Ð¼ %#xÑ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ Ð· %pBÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#xÐ½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº %s
+Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�, %s, Ñƒ Ñ�ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–: %sÐ½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¼Ð°ÑˆÐ¸Ð½Ð¸Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ„Ð°Ð¹Ð»Ð° core OSF/1, %dÐ½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ egsd, %u
 Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿ emh, %u
-Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %sÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿ EGSD, %dÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ETIR, %dÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ %dÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ, %#xÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %dÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€, Â«%cÂ», Ñƒ Ñ�ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %sÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s + %sÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %dÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ– %sÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾: %xÐ½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ INPUT_SECTION_FLAG, %s
-Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� TI COFF, Â«0x%xÂ»Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� .stabÐ½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° STA, %sÐ½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ñ–Ð¶ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸ Ð°Ð´Ñ€ÐµÑ� data Ñ‚Ð° insnÐ½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#xÐ²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ gpÐ°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850 E3Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850eÐ°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e1Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2v3Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e3v5Ð·Ð¼Ñ–Ð½Ð½Ñƒ Â«%sÂ» Ð¼Ð¾Ð¶Ð½Ð° Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ñƒ Ð¾Ð´Ð½Ñ–Ð¹ Ð· Ð¼Ð°Ð»Ð¸Ñ…, Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ñ… Ñ– Ð¼Ð°Ð»ÑŽÑ�Ñ–Ð½ÑŒÐºÐ¸Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð¸Ñ…Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸Ñ�Ñ� Ñƒ Ð¼Ð°Ð»Ñ–Ð¹ Ñ– Ð¼Ð°Ð»ÑŽÑ�Ñ–Ð½ÑŒÐºÑ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ… Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸Ñ�Ñ� Ñƒ Ð¼Ð°Ð»Ñ–Ð¹ Ñ– Ð½ÑƒÐ»ÑŒÐ¾Ð²Ñ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ… Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸Ñ�Ñ� Ñƒ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ñ–Ð¹ Ñ– Ð¼Ð°Ð»ÑŽÑ�Ñ–Ð½ÑŒÐºÑ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ… Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð°Ð¹Ð¼Ð°Ñ‚Ð¸ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð¼Ð°Ð»Ð¸Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð¸Ñ…vflags: 0x%02x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: 0x%08x vma:			ÐŸÐ¾Ñ‡Ð°Ñ‚ÐºÐ�Ð´Ñ€ÐµÑ�Ð°	 ÐšÑ–Ð½Ñ†Ð�Ð´Ñ€ÐµÑ�Ð°s	  Ð”Ð°Ð½Ñ–Unwind
+Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %sÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿ EGSD, %dÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ETIR, %dÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»: 0x%02xÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ %dÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ, %#xÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %dÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€, Â«%cÂ», Ñƒ Ñ�ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %sÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s + %sÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %dÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ– %sÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾: %xÐ½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ INPUT_SECTION_FLAG, %s
+Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� TI COFF, Â«0x%xÂ»Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� .stabÐ½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° STA, %sÐ½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ñ–Ð¶ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸ Ð°Ð´Ñ€ÐµÑ� data Ñ‚Ð° insnÐ½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ gpÐ°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850 E3Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850eÐ°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e1Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2v3Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e3v5Ð·Ð¼Ñ–Ð½Ð½Ñƒ Â«%sÂ» Ð¼Ð¾Ð¶Ð½Ð° Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ñƒ Ð¾Ð´Ð½Ñ–Ð¹ Ð· Ð¼Ð°Ð»Ð¸Ñ…, Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ñ… Ñ– Ð¼Ð°Ð»ÑŽÑ�Ñ–Ð½ÑŒÐºÐ¸Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð¸Ñ…Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸Ñ�Ñ� Ñƒ Ð¼Ð°Ð»Ñ–Ð¹ Ñ– Ð¼Ð°Ð»ÑŽÑ�Ñ–Ð½ÑŒÐºÑ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ… Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸Ñ�Ñ� Ñƒ Ð¼Ð°Ð»Ñ–Ð¹ Ñ– Ð½ÑƒÐ»ÑŒÐ¾Ð²Ñ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ… Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸Ñ�Ñ� Ñƒ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ñ–Ð¹ Ñ– Ð¼Ð°Ð»ÑŽÑ�Ñ–Ð½ÑŒÐºÑ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ… Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð°Ð¹Ð¼Ð°Ñ‚Ð¸ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð¼Ð°Ð»Ð¸Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð¸Ñ…vflags: 0x%02x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: 0x%08x vma:			ÐŸÐ¾Ñ‡Ð°Ñ‚ÐºÐ�Ð´Ñ€ÐµÑ�Ð°	 ÐšÑ–Ð½Ñ†Ð�Ð´Ñ€ÐµÑ�Ð°s	  Ð”Ð°Ð½Ñ–Unwind
 Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .pdata (%ld) Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ %d
-Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ñ– %pB Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�ÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¾Ð¼ wchar_tÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ñ– %pB Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�ÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° Ñ‚Ð¸Ð¼, Ñ‡Ð¸ Ð±ÑƒÐ»Ð¾ Ñ—Ñ… Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� DSBTÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸, Ð° Ñƒ %pB Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ (%Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸Ðº Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² %pB Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ñ‚ÑŒÑ�Ñ�Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ, Ð° Ñƒ %pB Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA, %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ð´Ð»Ñ� Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð· Ñ‡Ð¸Ñ�Ð»Ð°Ð¼Ð¸ Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÐ¸ %s, Ñ…Ð¾Ñ‡Ð° Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÐ¸ %s; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑ–Ð² Ð¼Ñ–Ð¶ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸ Ð¼Ð¾Ð¶Ðµ Ð·Ð°Ð·Ð½Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹ wchar_t, Ñ…Ð¾Ñ‡Ð° Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹ wchar_t; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ wchar_t Ð¼Ñ–Ð¶ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸ Ð¼Ð¾Ð¶Ðµ Ð·Ð°Ð·Ð½Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA, %d, (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA %d (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA, %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð· Ñ‡Ð¸Ñ�Ð»Ð°Ð¼Ð¸ Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %d, (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð· Ñ‡Ð¸Ñ�Ð»Ð°Ð¼Ð¸ Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %d, (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ð´Ð»Ñ� Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼, %s Ð· %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ GNU_PROPERTY_TYPE (%ld), Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %#lxÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ GNU_PROPERTY_TYPE (%ld), Ñ‚Ð¸Ð¿ (0x%x), Ð¾Ð±Ñ�Ñ�Ð³ Ð´Ð°Ð½Ð¸Ñ…: 0x%xÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Â«Ð½Ðµ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ñ‚Ð¸ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½ÐµÂ», Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 0x%xÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚ÐµÐºÐ°: 0x%xÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ARC %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° MSPABI %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ GNU_PROPERTY_TYPE (%ld): 0x%xÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ
+Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ñ– %pB Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�ÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¾Ð¼ wchar_tÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ñ– %pB Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�ÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° Ñ‚Ð¸Ð¼, Ñ‡Ð¸ Ð±ÑƒÐ»Ð¾ Ñ—Ñ… Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� DSBTÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸, Ð° Ñƒ %pB Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ (%Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸Ðº Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² %pB Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ñ‚ÑŒÑ�Ñ�Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ, Ð° Ñƒ %pB Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— Ð¿Ñ€Ð°Ð² Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ %u.%u.%u, Ð°Ð»Ðµ Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ� %u.%u.%u.Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA, %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ð´Ð»Ñ� Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð· Ñ‡Ð¸Ñ�Ð»Ð°Ð¼Ð¸ Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÐ¸ %s, Ñ…Ð¾Ñ‡Ð° Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÐ¸ %s; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑ–Ð² Ð¼Ñ–Ð¶ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸ Ð¼Ð¾Ð¶Ðµ Ð·Ð°Ð·Ð½Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹ wchar_t, Ñ…Ð¾Ñ‡Ð° Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹ wchar_t; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ wchar_t Ð¼Ñ–Ð¶ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸ Ð¼Ð¾Ð¶Ðµ Ð·Ð°Ð·Ð½Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA, %d, (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA %d (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA, %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð· Ñ‡Ð¸Ñ�Ð»Ð°Ð¼Ð¸ Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %d, (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð· Ñ‡Ð¸Ñ�Ð»Ð°Ð¼Ð¸ Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %d, (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ð´Ð»Ñ� Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼, %s Ð· %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ GNU_PROPERTY_TYPE (%ld), Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %#lxÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ GNU_PROPERTY_TYPE (%ld), Ñ‚Ð¸Ð¿ (0x%x), Ð¾Ð±Ñ�Ñ�Ð³ Ð´Ð°Ð½Ð¸Ñ…: 0x%xÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Â«Ð½Ðµ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ñ‚Ð¸ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½ÐµÂ», Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 0x%xÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚ÐµÐºÐ°: 0x%xÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ARC %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° MSPABI %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ GNU_PROPERTY_TYPE (%ld): 0x%xÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ
 Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ð²Ð°Ñ” %s
-Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: --plt-localentry Ð¾Ñ�Ð¾Ð±Ð»Ð¸Ð²Ð¾ Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ð¹, Ñ�ÐºÑ‰Ð¾ Ñƒ ld.so Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð½Ñ� Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½ÑŒ ABIÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� RL78_SYM Ð· Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� RX_SYM Ð· Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %u Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� (%u) Ð¹Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pAÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %u Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB Ñ” Ð¼ÐµÐ½ÑˆÐ¸Ð¼ Ð·Ð° %u Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¿Ñ€Ð¾Ð±Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ»Ð¸Ðº Ð½ÐµÑ„ÑƒÐ½ÐºÑ†Ñ–Ð¾Ð½Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %s, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ñ�Ñ‚Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð· Ð½Ð¸Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´, Ñ�ÐºÐ¸Ð¹ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸, Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ñ�Ñ‚Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB Ñƒ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´ÑŒ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚ Ð·Ð·Ð¾Ð²Ð½Ñ–Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ð´Ð°Ð½Ñ– Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ�
-Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ñ”Ð¼Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ„Ð°Ð¹Ð»Ð° %pB ck%s ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†ÐµÐ¼ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� ck%s, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ ck%sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gc-sections Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ�ÐºÐ° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· PICÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ�ÐºÐ° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· PIDÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð¹Ð¾Ð³Ð¾ Ð²Ð¶Ðµ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ‚Ð°Ðº, Ñ‰Ð¾Ð± Ð²Ñ–Ð½ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½Ñ�Ð² Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚ÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾ Ð½Ð° Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð½Ð° PROGBITSÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ” Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ– Ð¿Ð¾Ð·Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð· %d Ð½Ð° %d Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ e-Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸, Â«%#lxÂ»Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð°Ð±Ð¾ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñ–; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ñ‚Ð¸Ð¿Ð¾Ð²Ñƒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ð²Ñƒ Ð±ÑƒÐ»Ð¾ Ð¿Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¸Ð¼: Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ�ÑƒÑ”Ð¼Ð¾ Ñ‡Ð°Ñ�Ð¾Ð²Ñƒ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð·Ð° Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (Ñ‚Ð¾Ð±Ñ‚Ð¾ Ð²Ñ–Ð´â€™Ñ”Ð¼Ð½Ð¸Ð¼) Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ Ñƒ Ñ„Ð°Ð¹Ð»Ñ–Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» xdata
-Ñ‚Ð°ÐºÐ½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ‚Ð¸ %s Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñ–PRIu64PRIx64PRId64%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: %#: warning: bad R_SH_USES offset%pB: %#: warning: R_SH_USES points to unrecognized insn %#x%pB: %#: warning: bad R_SH_USES load offset%pB: %#: warning: could not find expected reloc%pB: %#: warning: symbol in unexpected section%pB: %#: warning: could not find expected COUNT reloc%pB: %#: warning: bad count%pB: %#: fatal: reloc overflow while relaxing%pB: bad reloc address %# in section `%pA'%pB: illegal relocation type %d at address %#%pB: corrupt symbol count: %#%pB: not enough memory to allocate space for %# symbols of size %#%pB: bad string table size %error: %pB(%pA) is too large (%# bytes)DWARF error: offset (%) greater than or equal to %s size (%)DWARF error: data count (%) larger than buffer sizeDWARF error: unknown format content type %DWARF error: line info section is too small (%)DWARF error: line info data is bigger (%#) than the space remaining in the section (%#lx)DWARF error: unable to read alt ref %%pB: error: attribute section length too small: %%pB(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%pB: corrupt size field in group section header: %#%pB: invalid size field in group section header: %#%pB: section %pA lma %# adjusted to %#%pB: warning: empty loadable segment detected at vaddr=%#, is this intentional?%pB: warning: segment alignment of %# is too large%pB(%pA+%#): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): CMEM relocation to `%s+%#' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): unexpected %s instruction '%#lx' in TLS trampoline%pB(%pA+%#): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC%pB(%pA+%#): %s relocation not permitted in shared object%pB(%pA+%#): only ADD or SUB instructions are allowed for ALU group relocations%pB(%pA+%#): overflow whilst splitting %# for group relocation %s%pB(%pA+%#): %s relocation against SEC_MERGE section%pB(%pA+%#): %s used with TLS symbol %s%pB(%pA+%#): %s used with non-TLS symbol %s%pB(%#): error: cannot create STM32L4XX veneer; jump out of range by % bytes; cannot encode branch instruction%pB(%pA+%#): unresolvable relocation against symbol `%s'%pB(%pA+%#): reloc against `%s': error %d%pB: relocation at `%pA+%#' references symbol `%s' with nonzero addend%pB, section %pA: relocation %s with non-zero addend % against local symbol%pB, section %pA: relocation %s with non-zero addend % against symbol `%s'%pB(%pA+%#): cannot reach %s, recompile with -ffunction-sections%pB(%pA+%#): %s fixup for insn %#x is not supported in a non-shared link%pB(%pA+%#): cannot handle %s for %s%pB: TLS transition from %s to %s against `%s' at %# in section `%pA' failedip2k linker: missing page instruction at %# (dest = %#)ip2k linker: redundant page instruction at %# (dest = %#)%pB: warning: %s points to unrecognized reloc at %#%pB(%pA+%#): error: %s with unexpected instruction %#x%pB(%pA): unsafe PID relocation %s at %# (against %s in %s)%pB(%pA+%#): invalid instruction for TLS relocation %s%pB: CALL15 reloc at %# not against global symbol%pB: %#: warning: R_SH_USES points to unrecognized insn 0x%x%pB: %#: fatal: unaligned branch target for relax-support relocation%pB: %#: fatal: unaligned %s relocation %#%pB: %#: fatal: R_SH_PSHA relocation % not in range -32..32%pB: %#: fatal: R_SH_PSHL relocation % not in range -32..32%pB(%pA+%#): cannot emit fixup to `%s' in read-only section%pB(%pA+%#): %s relocation against external symbol "%s"%pB(%pA): offset in relocation for GD->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd4??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xc7??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xd1??)%pB(%pA+%#): unexpected instruction %#04X (expected 0x310c)%pB(%pA+%#): unexpected instruction %#04X (expected 0x410b)%pB(%pA+%#): unexpected instruction %#04X (expected 0x34cc)%pB(%pA): offset in relocation for IE->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd0??: mov.l)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?12: stc)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?ce: mov.l)%pB(%pA): offset in relocation for GD->IE translation is too small: %#%pB(%pA): offset in relocation for LD->LE translation is too small: %#%pB(%s+%#): unresolvable %s relocation against symbol `%s'%pB: %#: warning: %s points to unrecognized insns%pB: %#: warning: %s points to unrecognized insn %#x%pB: %#: warning: %s points to unrecognized reloc%pB: %#: warning: %s points to unrecognized reloc %#%pB: warning: GOT addend of % to `%s' does not match previous GOT addend of %%pB: warning: PLT addend of % to `%s' from %pA section ignored%pB: warning: %s relocation to %# from %pA section%pB(%pA+%#): relocation offset out of range (size=%#)%pB(%pA+%#): could not decode instruction; possible configuration mismatch%pB(%pA+%#): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%pB(%pA+%#): unexpected fix for %s relocation%pB: %pA+%#: warning: %s relocation against unexpected insnstub entry for %s cannot load .plt, dp offset = %%pB(%pA+%#): cannot reach %s%pB: can't relax br at %# in section `%pA'; please use brl or indirect branch%pB: short data segment overflowed (%# >= 0x400000)%pB: missing TLS section for relocation %s against `%s' at %# in section `%pA'.%pB: Can't relax br (%s) to `%s' at %# in section `%pA' with size %# (> 0x1000000).warning: size of symbol `%s' changed from % in %pB to % in %pB%pB(%pA): relocation % has invalid symbol index %ld%pB: Internal inconsistency error for value for
- linker-allocated global register: linked: %# != relaxed: %#%pB: LOCAL directive: register $% is not a local register; first global register is $%%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %%pB: addend %s%#x in relocation %s against symbol `%s' at %# in section `%pA' is out of range%pB: version count (%) does not match symbol count (%ld)warning: %pB is truncated: expected core file size >= %, found: %%pB: bad reloc symbol index (%# >= %#lx) for offset %# in section `%pA'%pB: non-zero symbol index (%#) for offset %# in section `%pA' when the object file has no symbol tableerror: %pB contains a reloc (%#) for section %pA that references a non-existent global symbol%pB: %pA+%#: no symbol found for INHERIT%pB: incorrect `.reginfo' section size; expected %, got %%pB: GOT reloc at %# not expected in executables%pB: CALL16 reloc at %# not against global symbol%pB: can't find matching LO16 reloc against `%s' for %s at %# in section `%pA'%pB: `%pA' entry VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB: `%pA' offset of % from `%pA' beyond the range of ADDIUPC%pB: `%pA' start VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB 64-bit address %# out of range for Intel Hex file%pB: address %# out of range for Intel Hex filesection address (%#) below start of segment (%#)%pB: access beyond end of merged section (%)%pB: attempt to emit contents at non-multiple-of-4 address %#%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %%pB: XMC_TC0 symbol `%s' is class %d scnlen %%pB: reloc %s:% not in csectTOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%pB: Data Directory size (%lx) exceeds space left in section (%)%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ñ€Ñ�Ð´ÐºÐ°, % >= %%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TOC Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð½ÐµÐ¼Ð°Ñ” Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñƒ TOC%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ R_SH_USES%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: R_SH_USES Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ %#x%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� R_SH_USES%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� COUNT%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#%pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: %#%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ– Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ð¼Ñ–Ñ�Ñ†Ñ� Ð´Ð»Ñ� %# Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ %#%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² %Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB(%pA) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (%# Ð±Ð°Ð¹Ñ‚Ñ–Ð²)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ (%) Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ð°Ð±Ð¾ Ñ€Ñ–Ð²Ð½Ð¸Ð¼ Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ %s (%).ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° Ð´Ð°Ð½Ð¸Ñ… (%) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð±ÑƒÑ„ÐµÑ€Ð°ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ %ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼ (%)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð´Ð°Ð½Ñ– Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼Ð¸ (%#) Ð·Ð° Ð¼Ñ–Ñ�Ñ†Ðµ, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%#lx)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� %%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ: %%pB(%pA+%#): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ€Ñ�Ð´ÐºÐ°, %u >= %, Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»%pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ñ– Ð´Ð°Ð½Ñ– Ð¿Ð¾Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð³Ñ€ÑƒÐ¿: %#%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñ– Ð´Ð°Ð½Ñ– Ð¿Ð¾Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð³Ñ€ÑƒÐ¿: %#%pB: (Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA) lma %# Ñ�ÐºÐ¾Ñ€Ð¸Ð³Ð¾Ð²Ð°Ð½Ð¾ Ð´Ð¾ %#%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¹ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð·Ð° vaddr=%#, Ñ‚Ð°Ðº Ñ– Ñ‚Ñ€ÐµÐ±Ð°?%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° %# Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CMEM Ð´Ð¾ Â«%sÂ» Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼, 16 MSB Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %#)%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CMEM Ð´Ð¾ Â«%s+%#Â» Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼, 16 MSB Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %#)%pB(%pA+%#):  Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s, Â«%#lxÂ», Ñƒ Ñ‚Ñ€Ð°Ð¼Ð¿Ð»Ñ–Ð½Ñ– TLS%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s, Â«%#lxÂ», Ð½Ð° Ñ�ÐºÑƒ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� TLS_GOTDESC%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾%pB(%pA+%#): Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð³Ñ€ÑƒÐ¿ ALU Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ ADD Ð°Ð±Ð¾ SUB%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ð¿Ð¾Ð´Ñ–Ð»Ñƒ %# Ð· Ð¼ÐµÑ‚Ð¾ÑŽ Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ SEC_MERGE%pB(%pA+%#): %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ TLS %s%pB(%pA+%#): %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð¿Ð¾Ð·Ð° TLS %s%pB(%#): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX. ÐŸÐµÑ€ÐµÑ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ Ð½Ð° % Ð±Ð°Ð¹Ñ‚Ñ–Ð². ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ.%pB(%pA+%#): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° %d%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Â«%pA+%#Â» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼, %, Ñ‰Ð¾Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼, %, Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´Ð¾Ñ�Ñ�Ð³Ñ‚Ð¸ %s, Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -ffunction-sections%pB(%pA+%#): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ñ— Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ %s Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %#x Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ– Ð½ÐµÑ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ %s Ð´Ð»Ñ� %s%pB: Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� TLS Ð· %s Ð´Ð¾ %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð·Ð°Ð·Ð½Ð°Ð»Ð¾ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº ip2k: Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— Ñ‰Ð¾Ð´Ð¾ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ Ñƒ %# (Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� = %#).ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº ip2k: Ð·Ð°Ð¹Ð²Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� Ñ‰Ð¾Ð´Ð¾ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ Ñƒ %# (Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� = %#).%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¾ %#.%pB(%pA+%#): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ñ–Ð· Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾ÑŽ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ %#x%pB(%pA): Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� PID %s Ð´Ð¾ %# (Ñ‰Ð¾Ð´Ð¾ %s Ñƒ %s)%pB(%pA+%#): Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS %s%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CALL15 Ñƒ %# Ð½Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: R_SH_USES Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ 0x%x%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ðµ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¾ÑŽ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s, %#%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_SH_PSHA % Ð½Ðµ Ñƒ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ– -32..32%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_SH_PSHL % Ð½Ðµ Ñƒ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ– -32..32%pB(%pA+%#): Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð°Ð´Ñ€ÐµÑ�Ð½Ñƒ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÑƒ Ð´Ð¾ Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð·Ð° Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ»%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— GD->LE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd4??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xc7??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd1??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x310c)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x410b)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x34cc)%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— IE->LE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd0??: mov.l)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x0?12: stc)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x0?ce: mov.l)%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— GD->IE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— LD->LE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#%pB(%s+%#): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñ– Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ %#x%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¾ %#%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº GOT % Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð¼Ñƒ Ð´Ð¾Ð´Ð°Ð½ÐºÑƒ GOT %%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº PLT % Ð´Ð¾ Â«%sÂ» Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð¾ %# Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA%pB(%pA+%#): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€=%#)%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð° Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� XTENSA_ASM_SIMPLIFY, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð° Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s%pB: %pA+%#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾Ñ— Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—ÑˆÐ°Ð±Ð»Ð¾Ð½ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð»Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‚Ð¸ .plt, Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ dp = %%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´Ð¾Ñ�Ñ�Ð³Ñ‚Ð¸ %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ br Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ». Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� brl Ð°Ð±Ð¾ Ð½ÐµÐ¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ�Ð¼.%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð¾ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð´Ð°Ð½Ð¸Ñ… (%# >= 0x400000)%pB: Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ TLS Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ».%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ br (%s) Ð´Ð¾ Â«%sÂ» Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð· Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¾Ð¼ %# (> 0x1000000).Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð· % Ñƒ %pB Ð½Ð° % Ñƒ %pB%pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� % Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %ld%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡ÐµÑ€ÐµÐ· Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŽ Ð½ÐµÐ¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�
+Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ %s, Ð° Ð½Ðµ %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: --enable-non-contiguous-regions Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð· Â«%sÂ»
+Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: --plt-localentry Ð¾Ñ�Ð¾Ð±Ð»Ð¸Ð²Ð¾ Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ð¹, Ñ�ÐºÑ‰Ð¾ Ñƒ ld.so Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð½Ñ� Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½ÑŒ ABIÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� RL78_SYM Ð· Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� RX_SYM Ð· Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %u Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� (%u) Ð¹Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pAÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %u Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB Ñ” Ð¼ÐµÐ½ÑˆÐ¸Ð¼ Ð·Ð° %u Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¿Ñ€Ð¾Ð±Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ»Ð¸Ðº Ð½ÐµÑ„ÑƒÐ½ÐºÑ†Ñ–Ð¾Ð½Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %s, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ñ�Ñ‚Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð· Ð½Ð¸Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´, Ñ�ÐºÐ¸Ð¹ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸, Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ñ�Ñ‚Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB Ñƒ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´ÑŒ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚ Ð·Ð·Ð¾Ð²Ð½Ñ–Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ð´Ð°Ð½Ñ– Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ�
+Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ñ”Ð¼Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ„Ð°Ð¹Ð»Ð° %pB ck%s ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†ÐµÐ¼ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� ck%s, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ ck%sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gc-sections Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ�ÐºÐ° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· PICÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ�ÐºÐ° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· PIDÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð¹Ð¾Ð³Ð¾ Ð²Ð¶Ðµ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ‚Ð°Ðº, Ñ‰Ð¾Ð± Ð²Ñ–Ð½ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½Ñ�Ð² Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚ÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— Ð¿Ñ€Ð°Ð² Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ 1.9.1 Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð· Ñ–Ð½ÑˆÐ¸Ð¼Ð¸ Ð²ÐµÑ€Ñ�Ñ–Ñ�Ð¼Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ð¹.Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾ Ð½Ð° Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð½Ð° PROGBITSÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ” Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ– Ð¿Ð¾Ð·Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð· %d Ð½Ð° %d Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ e-Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸, Â«%#lxÂ»Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð°Ð±Ð¾ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñ–; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ñ‚Ð¸Ð¿Ð¾Ð²Ñƒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ð²Ñƒ Ð±ÑƒÐ»Ð¾ Ð¿Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¸Ð¼: Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ�ÑƒÑ”Ð¼Ð¾ Ñ‡Ð°Ñ�Ð¾Ð²Ñƒ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð·Ð° Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (Ñ‚Ð¾Ð±Ñ‚Ð¾ Ð²Ñ–Ð´â€™Ñ”Ð¼Ð½Ð¸Ð¼) Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ Ñƒ Ñ„Ð°Ð¹Ð»Ñ–Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» xdata
+Ñ‚Ð°ÐºÐ½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ‚Ð¸ %s Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñ–PRIu64PRIx64PRId64%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: %#: warning: bad R_SH_USES offset%pB: %#: warning: R_SH_USES points to unrecognized insn %#x%pB: %#: warning: bad R_SH_USES load offset%pB: %#: warning: could not find expected reloc%pB: %#: warning: symbol in unexpected section%pB: %#: warning: could not find expected COUNT reloc%pB: %#: warning: bad count%pB: %#: fatal: reloc overflow while relaxing%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: bad reloc address %# in section `%pA'error: %pB(%pA) section size (%# bytes) is larger than file size (%# bytes)error: %pB(%pA) is too large (%# bytes)DWARF error: offset (%) greater than or equal to %s size (%)DWARF error: data count (%) larger than buffer sizeDWARF error: unknown format content type %DWARF error: line info section is too small (%)DWARF error: line info data is bigger (%#) than the space remaining in the section (%#lx)DWARF error: unable to read alt ref %DWARF error: unable to locate abstract instance DIE ref %%pB: error: attribute section length too small: %%pB(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%pB: invalid size field in group section header: %#%pB: section %pA lma %# adjusted to %#%pB: warning: empty loadable segment detected at vaddr=%#, is this intentional?%pB: warning: segment alignment of %# is too large%pB(%pA+%#): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#)%pB(%pA+%#): CMEM relocation to `%s+%#' is invalid, 16 MSB should be %#x (value is %#)ERROR: CMSE stub (%s section) too far (%#) from destination (%#)%pB(%pA+%#): unexpected %s instruction '%#lx' in TLS trampoline%pB(%pA+%#): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC%pB(%pA+%#): %s relocation not permitted in shared object%pB(%pA+%#): only ADD or SUB instructions are allowed for ALU group relocations%pB(%pA+%#): overflow whilst splitting %# for group relocation %s%pB(%pA+%#): %s relocation against SEC_MERGE section%pB(%pA+%#): %s used with TLS symbol %s%pB(%pA+%#): %s used with non-TLS symbol %s%pB(%#): error: cannot create STM32L4XX veneer; jump out of range by % bytes; cannot encode branch instruction%pB(%pA+%#): unresolvable relocation against symbol `%s'%pB(%pA+%#): reloc against `%s': error %d%pB: relocation at `%pA+%#' references symbol `%s' with nonzero addend%pB, section %pA: relocation %s with non-zero addend % against local symbol%pB, section %pA: relocation %s with non-zero addend % against symbol `%s'%pB(%pA+%#): cannot reach %s, recompile with -ffunction-sections%pB(%pA+%#): %s fixup for insn %#x is not supported in a non-shared link%pB(%pA+%#): cannot handle %s for %s%pB: TLS transition from %s to %s against `%s' at %# in section `%pA' failedip2k linker: missing page instruction at %# (dest = %#)ip2k linker: redundant page instruction at %# (dest = %#)%pB: warning: %s points to unrecognized reloc at %#global pointer relative relocation at address %# when _gp not defined
+unable to reach %s (at %#) from the global pointer (at %#) because the offset (%) is out of the allowed range, -32678 to 32767
+%pB(%pA+%#): error: %s with unexpected instruction %#x%pB(%pA): unsafe PID relocation %s at %# (against %s in %s)%pB(%pA+%#): invalid instruction for TLS relocation %s%pB: CALL15 reloc at %# not against global symbol%pB: %#: warning: R_SH_USES points to unrecognized insn 0x%x%pB: %#: fatal: unaligned branch target for relax-support relocation%pB: %#: fatal: unaligned %s relocation %#%pB: %#: fatal: R_SH_PSHA relocation % not in range -32..32%pB: %#: fatal: R_SH_PSHL relocation % not in range -32..32%pB(%pA+%#): cannot emit fixup to `%s' in read-only section%pB(%pA+%#): %s relocation against external symbol "%s"%pB(%pA): offset in relocation for GD->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd4??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xc7??)%pB(%pA+%#): unexpected instruction %#04X (expected 0xd1??)%pB(%pA+%#): unexpected instruction %#04X (expected 0x310c)%pB(%pA+%#): unexpected instruction %#04X (expected 0x410b)%pB(%pA+%#): unexpected instruction %#04X (expected 0x34cc)%pB(%pA): offset in relocation for IE->LE translation is too small: %#%pB(%pA+%#): unexpected instruction %#04X (expected 0xd0??: mov.l)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?12: stc)%pB(%pA+%#): unexpected instruction %#04X (expected 0x0?ce: mov.l)%pB(%pA): offset in relocation for GD->IE translation is too small: %#%pB(%pA): offset in relocation for LD->LE translation is too small: %#%pB(%s+%#): unresolvable %s relocation against symbol `%s'%pB: %#: warning: %s points to unrecognized insns%pB: %#: warning: %s points to unrecognized insn %#x%pB: %#: warning: %s points to unrecognized reloc%pB: %#: warning: %s points to unrecognized reloc %#%pB: warning: GOT addend of % to `%s' does not match previous GOT addend of %%pB: warning: PLT addend of % to `%s' from %pA section ignored%pB: warning: %s relocation to %# from %pA section%pB(%pA+%#): relocation offset out of range (size=%#)%pB(%pA+%#): could not decode instruction; possible configuration mismatch%pB(%pA+%#): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%pB(%pA+%#): unexpected fix for %s relocation%pB: %pA+%#: warning: %s relocation against unexpected insnstub entry for %s cannot load .plt, dp offset = %%pB(%pA+%#): cannot reach %s%pB: can't relax br at %# in section `%pA'; please use brl or indirect branch%pB: short data segment overflowed (%# >= 0x400000)%pB: missing TLS section for relocation %s against `%s' at %# in section `%pA'.%pB: Can't relax br (%s) to `%s' at %# in section `%pA' with size %# (> 0x1000000).warning: size of symbol `%s' changed from % in %pB to % in %pB%pB(%pA): relocation % has invalid symbol index %ld%pB: Internal inconsistency error for value for
+ linker-allocated global register: linked: %# != relaxed: %#%pB: LOCAL directive: register $% is not a local register; first global register is $%%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %%pB: addend %s%#x in relocation %s against symbol `%s' at %# in section `%pA' is out of range%pB: version count (%) does not match symbol count (%ld)warning: %pB is truncated: expected core file size >= %, found: %%pB: bad reloc symbol index (%# >= %#lx) for offset %# in section `%pA'%pB: non-zero symbol index (%#) for offset %# in section `%pA' when the object file has no symbol tableerror: %pB contains a reloc (%#) for section %pA that references a non-existent global symbol%pB: %pA+%#: no symbol found for INHERIT%pB: incorrect `.reginfo' section size; expected %, got %%pB: GOT reloc at %# not expected in executables%pB: CALL16 reloc at %# not against global symbol%pB: can't find matching LO16 reloc against `%s' for %s at %# in section `%pA'%pB: `%pA' entry VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB: `%pA' offset of % from `%pA' beyond the range of ADDIUPC%pB: `%pA' start VMA of %# outside the 32-bit range supported; consider using `-Ttext-segment=...'%pB 64-bit address %# out of range for Intel Hex file%pB: address %# out of range for Intel Hex filesection address (%#) below start of segment (%#)%pB: access beyond end of merged section (%)%pB: attempt to emit contents at non-multiple-of-4 address %#%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %%pB: XMC_TC0 symbol `%s' is class %d scnlen %%pB: reloc %s:% not in csectTOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%pB: Data Directory size (%lx) exceeds space left in section (%)%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ñ€Ñ�Ð´ÐºÐ°, % >= %%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TOC Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð½ÐµÐ¼Ð°Ñ” Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñƒ TOC%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ R_SH_USES%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: R_SH_USES Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ %#x%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� R_SH_USES%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� COUNT%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² %%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pB(%pA) (%# Ð±Ð°Ð¹Ñ‚Ñ–Ð²) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ„Ð°Ð¹Ð»Ð° (%# Ð±Ð°Ð¹Ñ‚Ñ–Ð²)Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB(%pA) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (%# Ð±Ð°Ð¹Ñ‚Ñ–Ð²)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ (%) Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ð°Ð±Ð¾ Ñ€Ñ–Ð²Ð½Ð¸Ð¼ Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ %s (%).ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° Ð´Ð°Ð½Ð¸Ñ… (%) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð±ÑƒÑ„ÐµÑ€Ð°ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ %ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼ (%)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð´Ð°Ð½Ñ– Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼Ð¸ (%#) Ð·Ð° Ð¼Ñ–Ñ�Ñ†Ðµ, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%#lx)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� %ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¹ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ DIE %%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ: %%pB(%pA+%#): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ€Ñ�Ð´ÐºÐ°, %u >= %, Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñ– Ð´Ð°Ð½Ñ– Ð¿Ð¾Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð³Ñ€ÑƒÐ¿: %#%pB: (Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA) lma %# Ñ�ÐºÐ¾Ñ€Ð¸Ð³Ð¾Ð²Ð°Ð½Ð¾ Ð´Ð¾ %#%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¹ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð·Ð° vaddr=%#, Ñ‚Ð°Ðº Ñ– Ñ‚Ñ€ÐµÐ±Ð°?%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° %# Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CMEM Ð´Ð¾ Â«%sÂ» Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼, 16 MSB Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %#)%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CMEM Ð´Ð¾ Â«%s+%#Â» Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼, 16 MSB Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %#)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº CMSE (Ñ€Ð¾Ð·Ð´Ñ–Ð» %s) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð´Ð°Ð»ÐµÐºÐ¸Ð¼ (%#) Ð²Ñ–Ð´ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%#)%pB(%pA+%#):  Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s, Â«%#lxÂ», Ñƒ Ñ‚Ñ€Ð°Ð¼Ð¿Ð»Ñ–Ð½Ñ– TLS%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s, Â«%#lxÂ», Ð½Ð° Ñ�ÐºÑƒ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� TLS_GOTDESC%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾%pB(%pA+%#): Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð³Ñ€ÑƒÐ¿ ALU Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ ADD Ð°Ð±Ð¾ SUB%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ð¿Ð¾Ð´Ñ–Ð»Ñƒ %# Ð· Ð¼ÐµÑ‚Ð¾ÑŽ Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ SEC_MERGE%pB(%pA+%#): %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ TLS %s%pB(%pA+%#): %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð¿Ð¾Ð·Ð° TLS %s%pB(%#): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX. ÐŸÐµÑ€ÐµÑ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ Ð½Ð° % Ð±Ð°Ð¹Ñ‚Ñ–Ð². ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ.%pB(%pA+%#): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° %d%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Â«%pA+%#Â» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼, %, Ñ‰Ð¾Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼, %, Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´Ð¾Ñ�Ñ�Ð³Ñ‚Ð¸ %s, Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -ffunction-sections%pB(%pA+%#): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ñ— Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ %s Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %#x Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ– Ð½ÐµÑ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ %s Ð´Ð»Ñ� %s%pB: Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� TLS Ð· %s Ð´Ð¾ %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð·Ð°Ð·Ð½Ð°Ð»Ð¾ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº ip2k: Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— Ñ‰Ð¾Ð´Ð¾ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ Ñƒ %# (Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� = %#).ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº ip2k: Ð·Ð°Ð¹Ð²Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� Ñ‰Ð¾Ð´Ð¾ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ Ñƒ %# (Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� = %#).%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¾ %#.Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#, Ð²Ñ‚Ñ–Ð¼, _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾
+Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð´Ð¾Ñ�Ñ�Ð³Ñ‚Ð¸ %s (Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#) Ñ–Ð· Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° (Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#), Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� (%#) Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ, Ð²Ñ–Ð´ -32678 Ð´Ð¾ 32767.
+%pB(%pA+%#): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ñ–Ð· Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾ÑŽ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ %#x%pB(%pA): Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� PID %s Ð´Ð¾ %# (Ñ‰Ð¾Ð´Ð¾ %s Ñƒ %s)%pB(%pA+%#): Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS %s%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CALL15 Ñƒ %# Ð½Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: R_SH_USES Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ 0x%x%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ðµ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¾ÑŽ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s, %#%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_SH_PSHA % Ð½Ðµ Ñƒ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ– -32..32%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_SH_PSHL % Ð½Ðµ Ñƒ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ– -32..32%pB(%pA+%#): Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð°Ð´Ñ€ÐµÑ�Ð½Ñƒ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÑƒ Ð´Ð¾ Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð·Ð° Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ»%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— GD->LE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd4??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xc7??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd1??)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x310c)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x410b)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x34cc)%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— IE->LE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd0??: mov.l)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x0?12: stc)%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x0?ce: mov.l)%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— GD->IE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— LD->LE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#%pB(%s+%#): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñ– Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ %#x%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¾ %#%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº GOT % Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð¼Ñƒ Ð´Ð¾Ð´Ð°Ð½ÐºÑƒ GOT %%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº PLT % Ð´Ð¾ Â«%sÂ» Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð¾ %# Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA%pB(%pA+%#): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€=%#)%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð° Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� XTENSA_ASM_SIMPLIFY, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð° Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹%pB(%pA+%#): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s%pB: %pA+%#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾Ñ— Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—ÑˆÐ°Ð±Ð»Ð¾Ð½ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð»Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‚Ð¸ .plt, Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ dp = %%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´Ð¾Ñ�Ñ�Ð³Ñ‚Ð¸ %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ br Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ». Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� brl Ð°Ð±Ð¾ Ð½ÐµÐ¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ�Ð¼.%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð¾ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð´Ð°Ð½Ð¸Ñ… (%# >= 0x400000)%pB: Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ TLS Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ».%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ br (%s) Ð´Ð¾ Â«%sÂ» Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð· Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¾Ð¼ %# (> 0x1000000).Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð· % Ñƒ %pB Ð½Ð° % Ñƒ %pB%pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� % Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %ld%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡ÐµÑ€ÐµÐ· Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŽ Ð½ÐµÐ¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�
  Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ¾Ð¼ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾: %# != Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾: %#%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° LOCAL: Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€ $% Ð½Ðµ Ñ” Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¼ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¾Ð¼. ÐŸÐµÑ€ÑˆÐ¸Ð¼ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¼ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¾Ð¼ Ñ” $%.%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ STT_GNU_IFUNC, Â«%sÂ», Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº: %%pB: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº %s%#x Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ%pB: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ð²ÐµÑ€Ñ�Ñ–Ñ— (%) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ (%ld)Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾: Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° >= %, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾: %.%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%# >= %#lx) Ð´Ð»Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»%pB: Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ (%#) Ð´Ð»Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð°Ð»Ðµ Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%#) Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA, Ñ�ÐºÐµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”%pB: %pA+%#: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð»Ñ� INHERIT%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«.reginfoÂ»; Ð¼Ð°Ð² Ð±ÑƒÑ‚Ð¸ %, Ð¼Ð°Ñ”Ð¼Ð¾ %%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOT Ñƒ %# Ñ” Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¼ Ñƒ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñ…%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CALL16 Ñƒ %# Ð½Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� LO16 Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð´Ð»Ñ� %s Ñƒ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»%pB: Ð·Ð°Ð¿Ð¸Ñ� Â«%pAÂ» VMA %# Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð¿Ð¾Ð·Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¼ 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ�Ñ� Â«-Ttext-segment=...Â»%pB: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� Â«%pAÂ» % Ð· Â«%pAÂ» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ ADDIUPC%pB: Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº Â«%pAÂ» VMA %# Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð¿Ð¾Ð·Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¼ 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ�Ñ� Â«-Ttext-segment=...Â»%pB: 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° %# Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° Intel%pB: Ð°Ð´Ñ€ÐµÑ�Ð° %# Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° IntelÐ°Ð´Ñ€ÐµÑ�Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%) Ð½Ð¸Ð¶Ñ‡Ðµ Ð·Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° (%)%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%)%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð½Ð°Ð´Ñ–Ñ�Ð»Ð°Ñ‚Ð¸ Ð´Ð°Ð½Ñ– Ð½Ð° Ð½ÐµÐºÑ€Ð°Ñ‚Ð½Ñƒ Ð´Ð¾ 4 Ð°Ð´Ñ€ÐµÑ�Ñƒ %#%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²; Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ â€” %%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð´Ð»Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ %: %#%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» XTY_ER Â«%sÂ»: ÐºÐ»Ð°Ñ� %d, Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» XMC_TC0 Â«%sÂ» Ñ” ÐºÐ»Ð°Ñ�Ð¾Ð¼ %d, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s:% Ð½Ðµ Ñƒ csectÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� TOC: %# > 0x10000; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -mminimal-toc Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ�%pB(%pA+%#): Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ñ– % Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð´Ð»Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ð½Ð° %-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ð¼ÐµÐ¶Ñƒ, Ð²Ñ‚Ñ–Ð¼, Ð¼Ð°Ñ”Ð¼Ð¾ Ð»Ð¸ÑˆÐµ %%pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ… (%lx) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¼Ñ–Ñ�Ñ†Ñ�, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%)
\ No newline at end of file
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/uk.po ./bfd/po/uk.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/po/uk.po	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/po/uk.po	2021-05-21 01:57:23.000000000 +0000
@@ -2,239 +2,252 @@
 # Copyright (C) 2012 Free Software Foundation, Inc.
 # This file is distributed under the same license as the binutils package.
 #
-# Yuri Chornoivan <yurchor@ukr.net>, 2012, 2014, 2017, 2018, 2019.
+# Yuri Chornoivan <yurchor@ukr.net>, 2012, 2014, 2017, 2018, 2019, 2020.
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd 2.31.90\n"
+"Project-Id-Version: bfd 2.34.90\n"
 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2019-01-19 16:30+0000\n"
-"PO-Revision-Date: 2019-01-20 11:34+0200\n"
+"POT-Creation-Date: 2020-07-04 10:26+0100\n"
+"PO-Revision-Date: 2020-07-04 18:20+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
-"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
 "Language: uk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 20.07.70\n"
 
-#: aout-cris.c:200
+#: aout-cris.c:196
 #, c-format
 msgid "%pB: unsupported relocation type exported: %#x"
 msgstr "%pB: ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x"
 
-#: aout-cris.c:244
+#: aout-cris.c:242
 #, c-format
 msgid "%pB: unsupported relocation type imported: %#x"
 msgstr "%pB: Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x"
 
-#: aout-cris.c:256
+#: aout-cris.c:254
 #, c-format
 msgid "%pB: bad relocation record imported: %d"
 msgstr "%pB: Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %d"
 
-#: aoutx.h:1265 aoutx.h:1618 pdp11.c:1138 pdp11.c:1399
+#: aoutx.h:1265 aoutx.h:1613 pdp11.c:1236 pdp11.c:1510
 #, c-format
 msgid "%pB: can not represent section `%pA' in a.out object file format"
 msgstr "%pB: Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² a.out Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ"
 
-#: aoutx.h:1582 pdp11.c:1371
+#: aoutx.h:1577 pdp11.c:1482
 #, c-format
 msgid "%pB: can not represent section for symbol `%s' in a.out object file format"
 msgstr "%pB: Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² a.out Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ"
 
-#: aoutx.h:1585 vms-alpha.c:7860
+#: aoutx.h:1580 vms-alpha.c:8040
 msgid "*unknown*"
 msgstr "*Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾*"
 
-#: aoutx.h:1721
+#: aoutx.h:1716 pdp11.c:1578
 #, c-format
 msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ñ€Ñ�Ð´ÐºÐ°, %<PRIu64> >= %<PRIu64>"
 
-#: aoutx.h:2412 aoutx.h:2430
+#: aoutx.h:1963
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� AOUT: %d"
+
+#: aoutx.h:2412 aoutx.h:2430 pdp11.c:2058
 #, c-format
 msgid "%pB: attempt to write out unknown reloc type"
 msgstr "%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð²Ð¸Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: aoutx.h:4086
+#: aoutx.h:4087 pdp11.c:3441
 #, c-format
 msgid "%pB: unsupported relocation type"
 msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
 #. Unknown relocation.
-#: aoutx.h:4407 coff-alpha.c:601 coff-alpha.c:1514 coff-rs6000.c:2772
+#: aoutx.h:4408 coff-alpha.c:601 coff-alpha.c:1512 coff-rs6000.c:2758
 #: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:279 elf-hppa.h:798
-#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:517
-#: elf32-arm.c:1943 elf32-avr.c:964 elf32-bfin.c:1061 elf32-bfin.c:4698
-#: elf32-cr16.c:653 elf32-cr16.c:683 elf32-cr16c.c:186 elf32-cris.c:467
-#: elf32-crx.c:429 elf32-csky.c:989 elf32-d10v.c:234 elf32-d30v.c:522
-#: elf32-d30v.c:544 elf32-dlx.c:548 elf32-epiphany.c:376 elf32-fr30.c:381
-#: elf32-frv.c:2558 elf32-frv.c:6262 elf32-ft32.c:306 elf32-h8300.c:302
-#: elf32-i386.c:401 elf32-ip2k.c:1245 elf32-iq2000.c:442 elf32-lm32.c:539
-#: elf32-m32c.c:305 elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2417
-#: elf32-m68hc11.c:390 elf32-m68hc12.c:510 elf32-m68k.c:352 elf32-mcore.c:354
-#: elf32-mcore.c:440 elf32-mep.c:389 elf32-metag.c:878 elf32-microblaze.c:692
-#: elf32-microblaze.c:969 elf32-mips.c:2229 elf32-moxie.c:137
-#: elf32-msp430.c:648 elf32-msp430.c:658 elf32-mt.c:241 elf32-nds32.c:3236
-#: elf32-nds32.c:3262 elf32-nds32.c:5173 elf32-nios2.c:3015 elf32-or1k.c:1037
-#: elf32-pj.c:325 elf32-ppc.c:898 elf32-ppc.c:911 elf32-pru.c:420
-#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:292
-#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:160 elf32-tic6x.c:1508
-#: elf32-tic6x.c:1518 elf32-tic6x.c:1537 elf32-tic6x.c:1547 elf32-tic6x.c:2642
-#: elf32-tilepro.c:803 elf32-v850.c:1899 elf32-v850.c:1921 elf32-v850.c:4270
-#: elf32-vax.c:290 elf32-visium.c:482 elf32-wasm32.c:105 elf32-xc16x.c:250
-#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:459
-#: elf32-xtensa.c:493 elf64-alpha.c:1112 elf64-alpha.c:4101 elf64-alpha.c:4249
-#: elf64-ia64-vms.c:254 elf64-ia64-vms.c:3440 elf64-mips.c:3958
-#: elf64-mips.c:3974 elf64-mmix.c:1264 elf64-nfp.c:238 elf64-ppc.c:921
-#: elf64-ppc.c:1209 elf64-ppc.c:1218 elf64-s390.c:328 elf64-s390.c:378
-#: elf64-x86-64.c:285 elfn32-mips.c:3786 elfxx-ia64.c:324 elfxx-riscv.c:955
-#: elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:912 elfxx-tilegx.c:952
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:2125
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:2223
-#: elf32-ia64.c:210 elf32-ia64.c:3862 elf64-ia64.c:210 elf64-ia64.c:3862
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:812 elf32-arc.c:532
+#: elf32-arm.c:1985 elf32-avr.c:962 elf32-bfin.c:1062 elf32-bfin.c:4677
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:990 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:372 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6239 elf32-ft32.c:306 elf32-h8300.c:302 elf32-i386.c:400
+#: elf32-ip2k.c:1240 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2232 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:389 elf32-metag.c:874 elf32-microblaze.c:692
+#: elf32-microblaze.c:965 elf32-mips.c:2229 elf32-moxie.c:137
+#: elf32-msp430.c:653 elf32-msp430.c:663 elf32-mt.c:241 elf32-nds32.c:3237
+#: elf32-nds32.c:3263 elf32-nds32.c:5033 elf32-nios2.c:3022 elf32-or1k.c:1040
+#: elf32-pj.c:326 elf32-ppc.c:901 elf32-ppc.c:914 elf32-pru.c:423
+#: elf32-rl78.c:291 elf32-rx.c:313 elf32-rx.c:322 elf32-s12z.c:296
+#: elf32-s390.c:347 elf32-sh.c:438 elf32-spu.c:163 elf32-tic6x.c:1498
+#: elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537 elf32-tic6x.c:2583
+#: elf32-tilepro.c:800 elf32-v850.c:1898 elf32-v850.c:1920 elf32-v850.c:4270
+#: elf32-vax.c:290 elf32-visium.c:481 elf32-wasm32.c:105 elf32-xc16x.c:250
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:522
+#: elf32-xtensa.c:556 elf32-z80.c:331 elf64-alpha.c:1113 elf64-alpha.c:4067
+#: elf64-alpha.c:4215 elf64-bpf.c:322 elf64-ia64-vms.c:254
+#: elf64-ia64-vms.c:3429 elf64-mips.c:3958 elf64-mips.c:3974 elf64-mmix.c:1264
+#: elf64-nfp.c:238 elf64-ppc.c:1014 elf64-ppc.c:1366 elf64-ppc.c:1375
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:281 elfn32-mips.c:3786
+#: elfxx-ia64.c:324 elfxx-riscv.c:954 elfxx-sparc.c:589 elfxx-sparc.c:639
+#: elfxx-tilegx.c:909 elfxx-tilegx.c:949 elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2313 elfnn-ia64.c:213 elfnn-ia64.c:3824
 #, c-format
 msgid "%pB: unsupported relocation type %#x"
 msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x"
 
-#: aoutx.h:5434 pdp11.c:3694
+#: aoutx.h:5435 pdp11.c:3864
 #, c-format
 msgid "%pB: relocatable link from %s to %s not supported"
 msgstr "%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ñ… Ð´Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ Ð· %s Ð´Ð¾ %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: archive.c:2214
+#: arc-got.h:69
+#, c-format
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ– Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ– Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GOT"
+
+#: archive.c:2249
 msgid "warning: writing archive was slow: rewriting timestamp"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ð²Ñƒ Ð±ÑƒÐ»Ð¾ Ð¿Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¸Ð¼: Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ�ÑƒÑ”Ð¼Ð¾ Ñ‡Ð°Ñ�Ð¾Ð²Ñƒ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÑƒ"
 
-#: archive.c:2330 linker.c:1429
+#: archive.c:2316 archive.c:2376 elflink.c:4545 linker.c:1428
 #, c-format
 msgid "%pB: plugin needed to handle lto object"
 msgstr "%pB: Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¾Ð±'Ñ”ÐºÑ‚Ð° lto Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð´Ð¾Ð´Ð°Ñ‚Ð¾Ðº"
 
-#: archive.c:2559
+#: archive.c:2602
 msgid "Reading archive file mod timestamp"
 msgstr "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ñ— Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ¸ mod Ð°Ñ€Ñ…Ñ–Ð²Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°"
 
-#: archive.c:2583
+#: archive.c:2626
 msgid "Writing updated armap timestamp"
 msgstr "Ð—Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾Ñ— Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ñ— Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ¸ armap"
 
-#: bfd.c:449
+#: bfd.c:677
 msgid "no error"
 msgstr "Ð±ÐµÐ· Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº"
 
-#: bfd.c:450
+#: bfd.c:678
 msgid "system call error"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ"
 
-#: bfd.c:451
+#: bfd.c:679
 msgid "invalid bfd target"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� bfd"
 
-#: bfd.c:452
+#: bfd.c:680
 msgid "file in wrong format"
 msgstr "Ñ„Ð°Ð¹Ð» Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–"
 
-#: bfd.c:453
+#: bfd.c:681
 msgid "archive object file in wrong format"
 msgstr "Ð°Ñ€Ñ…Ñ–Ð²Ð½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–"
 
-#: bfd.c:454
+#: bfd.c:682
 msgid "invalid operation"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ñ–Ñ�"
 
-#: bfd.c:455
+#: bfd.c:683
 msgid "memory exhausted"
 msgstr "Ð¿Ð°Ð¼'Ñ�Ñ‚ÑŒ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð¾"
 
-#: bfd.c:456
+#: bfd.c:684
 msgid "no symbols"
 msgstr "Ð½ÐµÐ¼Ð°Ñ” Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"
 
-#: bfd.c:457
+#: bfd.c:685
 msgid "archive has no index; run ranlib to add one"
 msgstr "Ñƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ°; Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ñ–Ñ‚ÑŒ ranlib, Ñ‰Ð¾Ð± Ð¹Ð¾Ð³Ð¾ Ð´Ð¾Ð´Ð°Ñ‚Ð¸"
 
-#: bfd.c:458
+#: bfd.c:686
 msgid "no more archived files"
 msgstr "Ð±Ñ–Ð»ÑŒÑˆÐµ Ð°Ñ€Ñ…Ñ–Ð²Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð½ÐµÐ¼Ð°Ñ”"
 
-#: bfd.c:459
+#: bfd.c:687
 msgid "malformed archive"
 msgstr "Ð°Ñ€Ñ…Ñ–Ð² Ð· Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼"
 
-#: bfd.c:460
+#: bfd.c:688
 msgid "DSO missing from command line"
 msgstr "Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ñ�Ð´ÐºÑƒ Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ DSO"
 
-#: bfd.c:461
+#: bfd.c:689
 msgid "file format not recognized"
 msgstr "Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾"
 
-#: bfd.c:462
+#: bfd.c:690
 msgid "file format is ambiguous"
 msgstr "Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ñ” Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¸Ð¼"
 
-#: bfd.c:463
+#: bfd.c:691
 msgid "section has no contents"
 msgstr "Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ðµ Ð¼Ð°Ñ” Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒ"
 
-#: bfd.c:464
+#: bfd.c:692
 msgid "nonrepresentable section on output"
 msgstr "Ñ€Ð¾Ð·Ð´Ñ–Ð», Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð»Ñ� Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…"
 
-#: bfd.c:465
+#: bfd.c:693
 msgid "symbol needs debug section which does not exist"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸, Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”"
 
-#: bfd.c:466
+#: bfd.c:694
 msgid "bad value"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�"
 
-#: bfd.c:467
+#: bfd.c:695
 msgid "file truncated"
 msgstr "Ñ„Ð°Ð¹Ð» Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾"
 
-#: bfd.c:468
+#: bfd.c:696
 msgid "file too big"
 msgstr "Ñ„Ð°Ð¹Ð» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼"
 
-#: bfd.c:469
+#: bfd.c:697
+msgid "sorry, cannot handle this file"
+msgstr "Ð²Ð¸Ð±Ð°Ñ‡Ñ‚Ðµ, Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ†ÐµÐ¹ Ñ„Ð°Ð¹Ð»"
+
+#: bfd.c:698
 #, c-format
 msgid "error reading %s: %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� %s: %s"
 
-#: bfd.c:470
+#: bfd.c:699
 msgid "#<invalid error code>"
 msgstr "#<Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸>"
 
-#: bfd.c:1429
+#: bfd.c:1658
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŽ BFD %s Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ %s:%d"
 
-#: bfd.c:1442
+#: bfd.c:1671
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d in %s\n"
 msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° BFD %s, Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ñ”Ð¼Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %s:%d Ñƒ %s\n"
 
-#: bfd.c:1447
+#: bfd.c:1676
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d\n"
 msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° BFD %s, Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ñ”Ð¼Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %s:%d\n"
 
-#: bfd.c:1449
+#: bfd.c:1678
 msgid "Please report this bug.\n"
 msgstr "Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ñ‚Ðµ Ð¿Ñ€Ð¾ Ñ†ÑŽ Ð²Ð°Ð´Ñƒ.\n"
 
-#: bfdwin.c:206
+#: bfdwin.c:207
 #, c-format
 msgid "not mapping: data=%lx mapped=%d\n"
 msgstr "Ð½Ðµ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð´Ð°Ð½Ñ–=%lx Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾=%d\n"
 
-#: bfdwin.c:209
+#: bfdwin.c:210
 #, c-format
 msgid "not mapping: env var not set\n"
 msgstr "Ð½Ðµ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð·Ð¼Ñ–Ð½Ð½Ñƒ Ñ�ÐµÑ€ÐµÐ´Ð¾Ð²Ð¸Ñ‰Ð° var\n"
@@ -254,118 +267,113 @@ msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ
 msgid "%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries"
 msgstr "%pB: Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ° Ñ�Ñ‚Ð¸Ñ�Ð½ÑƒÑ‚Ð¸Ñ… Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Alpha Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð°. Ð¡ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ�Ð¼Ð¸ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñ�Ñ‚Ð¾Ñ€Ð° Ð°Ð±Ð¾ objZ Ð´Ð»Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð½ÐµÑ�Ñ‚Ð¸Ñ�Ð½ÐµÐ½Ð¸Ñ… Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð²."
 
-#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1957 coff-mips.c:950
+#: coff-alpha.c:850 coff-alpha.c:887 coff-alpha.c:1954 coff-mips.c:953
 msgid "GP relative relocation used when GP not defined"
 msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GP, Ð²Ñ‚Ñ–Ð¼, GP Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: coff-alpha.c:1443
+#: coff-alpha.c:1441
 msgid "using multiple gp values"
 msgstr "Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ gp"
 
-#: coff-alpha.c:1501 coff-alpha.c:1507 elf.c:9100 elf32-mcore.c:100
-#: elf32-mcore.c:455 elf32-ppc.c:7697 elf32-ppc.c:8829 elf64-ppc.c:14411
+#: coff-alpha.c:1499 coff-alpha.c:1505 elf.c:9431 elf32-mcore.c:100
+#: elf32-mcore.c:455 elf32-ppc.c:7596 elf32-ppc.c:8747 elf64-ppc.c:15962
 #, c-format
 msgid "%pB: %s unsupported"
 msgstr "%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: coff-mips.c:640 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
+#: coff-go32.c:156 coffswap.h:785
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ°: 0x%lx > 0xffff"
+
+#: coff-mips.c:643 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
 #: elf64-mips.c:3451 elfn32-mips.c:3276
 msgid "GP relative relocation when _gp not defined"
 msgstr "Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GP, Ð°Ð»Ðµ _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: coff-rs6000.c:2858
+#: coff-rs6000.c:2844
 #, c-format
 msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TOC Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64> Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð½ÐµÐ¼Ð°Ñ” Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñƒ TOC"
 
-#: coff-rs6000.c:3620 coff64-rs6000.c:2145
+#: coff-rs6000.c:3607 coff64-rs6000.c:2153
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized smclas %d"
 msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð³Ð¾ smclas %d"
 
-#: coff-sh.c:780 elf32-sh.c:521
+#: coff-sh.c:778 elf32-sh.c:521
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ R_SH_USES"
 
-#: coff-sh.c:791
+#: coff-sh.c:789
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: R_SH_USES Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ %#x"
 
-#: coff-sh.c:809 elf32-sh.c:552
+#: coff-sh.c:807 elf32-sh.c:552
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� R_SH_USES"
 
-#: coff-sh.c:834 elf32-sh.c:568
+#: coff-sh.c:832 elf32-sh.c:568
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: coff-sh.c:851 elf32-sh.c:597
+#: coff-sh.c:849 elf32-sh.c:597
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–"
 
-#: coff-sh.c:977 elf32-sh.c:727
+#: coff-sh.c:975 elf32-sh.c:727
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� COUNT"
 
-#: coff-sh.c:987 elf32-sh.c:738
+#: coff-sh.c:985 elf32-sh.c:738
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad count"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº"
 
-#: coff-sh.c:1359 coff-sh.c:2647 elf32-sh.c:1142 elf32-sh.c:1512
+#: coff-sh.c:1356 coff-sh.c:2644 elf32-sh.c:1138 elf32-sh.c:1505
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
 msgstr "%pB: %#<PRIx64>: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
 
-#: coff-sh.c:1454
+#: coff-sh.c:1451
 #, c-format
 msgid "%pB: fatal: generic symbols retrieved before relaxing"
 msgstr "%pB: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð´Ð¾ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
 
-#: coff-sh.c:2785 cofflink.c:2965
+#: coff-sh.c:2781 cofflink.c:2948
 #, c-format
 msgid "%pB: illegal symbol index %ld in relocs"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %ld Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ñ…"
 
-#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5010
+#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5085
 #, c-format
 msgid "%pB: warning: illegal symbol index %ld in relocs"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %ld Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ñ…"
 
-#: coff-tic80.c:441
-#, c-format
-msgid "unsupported relocation type %#x"
-msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x"
-
-#: coff-tic80.c:672 cofflink.c:3127
-#, c-format
-msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
-msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»"
-
-#: coffcode.h:954
+#: coffcode.h:961
 #, c-format
 msgid "%pB: unable to load COMDAT section name"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ COMDAT"
 
 #. Malformed input files can trigger this test.
 #. cf PR 21781.
-#: coffcode.h:989
+#: coffcode.h:996
 #, c-format
 msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– COMDAT"
 
-#: coffcode.h:1001
+#: coffcode.h:1008
 #, c-format
 msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» COMDAT Â«%sÂ» Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð½Ð°Ð·Ð²Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»"
 
-#: coffcode.h:1011
+#: coffcode.h:1018
 #, c-format
 msgid "%pB: warning: no symbol for section '%s' found"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»"
@@ -373,311 +381,315 @@ msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð
 #. Generate a warning message rather using the 'unhandled'
 #. variable as this will allow some .sys files generate by
 #. other toolchains to be processed.  See bugzilla issue 196.
-#: coffcode.h:1237
+#: coffcode.h:1249
 #, c-format
 msgid "%pB: warning: ignoring section flag %s in section %s"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s"
 
-#: coffcode.h:1306
+#: coffcode.h:1318
 #, c-format
 msgid "%pB (%s): section flag %s (%#lx) ignored"
 msgstr "%pB (%s): Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s (%#lx) Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾"
 
-#: coffcode.h:1917
+#: coffcode.h:1934 coffcode.h:1999
 #, c-format
 msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð¼Ð¾Ð³Ð° Ñ‰Ð¾Ð´Ð¾ 0xffff Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ�"
 
-#: coffcode.h:2315
+#: coffcode.h:2365
 #, c-format
 msgid "unrecognized TI COFF target id '0x%x'"
 msgstr "Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� TI COFF, Â«0x%xÂ»"
 
-#: coffcode.h:2599
+#: coffcode.h:2643
 #, c-format
 msgid "%pB: reloc against a non-existent symbol index: %ld"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð½ÐµÑ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¸Ð¼ Ñ–Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: %ld"
 
-#: coffcode.h:2910
+#: coffcode.h:2951
 #, c-format
 msgid "%pB: page size is too large (0x%x)"
 msgstr "%pB: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ (0x%x)"
 
-#: coffcode.h:3070
+#: coffcode.h:3111
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr "%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² (%d)"
 
-#: coffcode.h:3489
+#: coffcode.h:3530
 #, c-format
 msgid "%pB: section %pA: string table overflow at offset %ld"
 msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² Ð·Ð° Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ %ld"
 
-#: coffcode.h:3589
+#: coffcode.h:3630
 #, c-format
 msgid "%pB:%s section %s: alignment 2**%u not representable"
 msgstr "%pB:%s Ñ€Ð¾Ð·Ð´Ñ–Ð» %s: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� 2**%u Ð½Ðµ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ�"
 
-#: coffcode.h:4276
+#: coffcode.h:4329
 #, c-format
 msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² (%#lx) Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð¼Ñ–Ñ�Ñ†Ðµ Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð² Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%#lx)"
 
-#: coffcode.h:4291
+#: coffcode.h:4349
 #, c-format
 msgid "%pB: warning: line number table read failed"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð· Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²"
 
-#: coffcode.h:4325 coffcode.h:4339
+#: coffcode.h:4383 coffcode.h:4397
 #, c-format
 msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ 0x%lx Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ° %d"
 
-#: coffcode.h:4353
+#: coffcode.h:4411
 #, c-format
 msgid "%pB: warning: illegal symbol in line number entry %d"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ° %d"
 
-#: coffcode.h:4366
+#: coffcode.h:4424
 #, c-format
 msgid "%pB: warning: duplicate line number information for `%s'"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð² Ð´Ð»Ñ� Â«%sÂ»"
 
-#: coffcode.h:4774
+#: coffcode.h:4845
 #, c-format
 msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ÐºÐ»Ð°Ñ� Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %d Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s Â«%sÂ»"
 
-#: coffcode.h:4904
+#: coffcode.h:4975
 #, c-format
 msgid "warning: %pB: local symbol `%s' has no section"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: coffcode.h:5050
+#: coffcode.h:5125
 #, c-format
 msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64>"
 
-#: coffgen.c:178 elf.c:1216
+#: coffgen.c:179 elf.c:1236
 #, c-format
 msgid "%pB: unable to initialize compress status for section %s"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð°Ð½ Ñ�Ñ‚Ð¸Ñ�ÐºÐ°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s"
 
-#: coffgen.c:202 elf.c:1227
+#: coffgen.c:203 elf.c:1247
 #, c-format
 msgid "%pB: unable to initialize decompress status for section %s"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð°Ð½ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s"
 
-#: coffgen.c:1657
-#, c-format
-msgid "%pB: corrupt symbol count: %#<PRIx64>"
-msgstr "%pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: %#<PRIx64>"
-
-#. PR 21013: Provide an error message when the alloc fails.
-#: coffgen.c:1666
-#, c-format
-msgid "%pB: not enough memory to allocate space for %#<PRIx64> symbols of size %#<PRIx64>"
-msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ– Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ð¼Ñ–Ñ�Ñ†Ñ� Ð´Ð»Ñ� %#<PRIx64> Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ %#<PRIx64>"
-
-#: coffgen.c:1735
+#: coffgen.c:1704
 #, c-format
 msgid "%pB: bad string table size %<PRIu64>"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² %<PRIu64>"
 
-#: coffgen.c:1912 coffgen.c:1972 coffgen.c:1990 cofflink.c:2045 elf.c:1882
-#: xcofflink.c:4505
+#: coffgen.c:1876 coffgen.c:1936 coffgen.c:1954 cofflink.c:2024 elf.c:1921
+#: xcofflink.c:4500
 msgid "<corrupt>"
 msgstr "<Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾>"
 
-#: coffgen.c:2114
+#: coffgen.c:2085
 #, c-format
 msgid "<corrupt info> %s"
 msgstr "<Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ñ– Ð´Ð°Ð½Ñ–> %s"
 
-#: coffgen.c:2693 elflink.c:14322 linker.c:2959
+#: coffgen.c:2675 elflink.c:14624 linker.c:2956
 msgid "%F%P: already_linked_table: %E\n"
 msgstr "%F%P: already_linked_table: %E\n"
 
-#: coffgen.c:3034 elflink.c:13324
+#: coffgen.c:3016 elflink.c:13617
 #, c-format
 msgid "removing unused section '%pA' in file '%pB'"
 msgstr "Ð²Ð¸Ð»ÑƒÑ‡Ð°Ñ”Ð¼Ð¾ Ð½ÐµÐ²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Â«%pBÂ»"
 
-#: coffgen.c:3111 elflink.c:13542
+#: coffgen.c:3093 elflink.c:13835
 msgid "warning: gc-sections option ignored"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gc-sections Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾"
 
-#: cofflink.c:352
+#: cofflink.c:366
 #, c-format
 msgid "warning: symbol `%s' is both section and non-section"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ” Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ– Ð¿Ð¾Ð·Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼"
 
-#: cofflink.c:454 elf64-ia64-vms.c:5203 elflink.c:4953
+#: cofflink.c:471 elf64-ia64-vms.c:5200 elflink.c:5131
 #, c-format
 msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð· %d Ð½Ð° %d Ñƒ %pB"
 
-#: cofflink.c:2373
+#: cofflink.c:2352
 #, c-format
 msgid "%pB: relocs in section `%pA', but it has no contents"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð·Ð¼Ñ–Ñ�Ñ‚Ñƒ"
 
-#: cofflink.c:2436 elflink.c:10810
+#: cofflink.c:2415 elflink.c:11082
 #, c-format
 msgid "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB\n"
 msgstr "Ð�Ð° %XÂ«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» %pB: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð²Ñ–Ð´ÐºÐ¸Ð½ÑƒÑ‚Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» %pB\n"
 
-#: cofflink.c:2734
+#: cofflink.c:2717
 #, c-format
 msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
 msgstr "%pB: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x > 0xffff"
 
-#: cofflink.c:2742
+#: cofflink.c:2725
 #, c-format
 msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ°: %#x > 0xffff"
 
-#: coffswap.h:789
+#: cofflink.c:3110
 #, c-format
-msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
-msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ°: 0x%lx > 0xffff"
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»"
 
-#: coffswap.h:803
+#: coffswap.h:799
 #, c-format
 msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr "%pB: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: 0x%lx > 0xffff"
 
-#: compress.c:260
+#: compress.c:271
+#, c-format
+msgid "error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size (%#<PRIx64> bytes)"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pB(%pA) (%#<PRIx64> Ð±Ð°Ð¹Ñ‚Ñ–Ð²) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ„Ð°Ð¹Ð»Ð° (%#<PRIx64> Ð±Ð°Ð¹Ñ‚Ñ–Ð²)"
+
+#: compress.c:282
 #, c-format
 msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB(%pA) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (%#<PRIx64> Ð±Ð°Ð¹Ñ‚Ñ–Ð²)"
 
-#: cpu-arm.c:298 cpu-arm.c:310
+#: cpu-arm.c:303 cpu-arm.c:315
 #, c-format
 msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� EP9312, Ð° %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� XScale"
 
-#: cpu-arm.c:446
+#: cpu-arm.c:451
 #, c-format
 msgid "warning: unable to update contents of %s section in %pB"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñƒ %pB"
 
-#: dwarf2.c:544
+#: dwarf2.c:543
 #, c-format
 msgid "DWARF error: can't find %s section."
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s."
 
-#: dwarf2.c:579
+#: dwarf2.c:578
 #, c-format
 msgid "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ (%<PRIu64>) Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ð°Ð±Ð¾ Ñ€Ñ–Ð²Ð½Ð¸Ð¼ Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ %s (%<PRIu64>)."
 
-#: dwarf2.c:1107
+#: dwarf2.c:1165
 msgid "DWARF error: info pointer extends beyond end of attributes"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº Ð½Ð° Ð´Ð°Ð½Ñ– Ð²Ð¸Ñ…Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° ÐºÑ–Ð½ÐµÑ†ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð²"
 
-#: dwarf2.c:1275
+#: dwarf2.c:1333
 #, c-format
 msgid "DWARF error: invalid or unhandled FORM value: %#x"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð°Ð±Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� FORM: %#x"
 
-#: dwarf2.c:1581
+#: dwarf2.c:1646
 msgid "DWARF error: mangled line number section (bad file number)"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð² (Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð°)"
 
-#: dwarf2.c:1926
+#: dwarf2.c:1994
 msgid "DWARF error: zero format count"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ"
 
-#: dwarf2.c:1936
+#: dwarf2.c:2004
 #, c-format
 msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° Ð´Ð°Ð½Ð¸Ñ… (%<PRIx64>) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð±ÑƒÑ„ÐµÑ€Ð°"
 
-#: dwarf2.c:1977
+#: dwarf2.c:2045
 #, c-format
 msgid "DWARF error: unknown format content type %<PRIu64>"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ %<PRIu64>"
 
-#: dwarf2.c:2057
+#: dwarf2.c:2112
 #, c-format
 msgid "DWARF error: line info section is too small (%<PRId64>)"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼ (%<PRId64>)"
 
-#: dwarf2.c:2087
+#: dwarf2.c:2142
 #, c-format
 msgid "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining in the section (%#lx)"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð´Ð°Ð½Ñ– Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼Ð¸ (%#<PRIx64>) Ð·Ð° Ð¼Ñ–Ñ�Ñ†Ðµ, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%#lx)"
 
-#: dwarf2.c:2100
+#: dwarf2.c:2155
 #, c-format
 msgid "DWARF error: unhandled .debug_line version %d"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð° Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð²ÐµÑ€Ñ�Ñ–Ñ� .debug_line, %d"
 
-#: dwarf2.c:2110
+#: dwarf2.c:2165
 msgid "DWARF error: ran out of room reading prologue"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð²Ñ�Ñ‚ÑƒÐ¿Ñƒ"
 
-#: dwarf2.c:2128
+#: dwarf2.c:2183
 #, c-format
 msgid "DWARF error: line info unsupported segment selector size %u"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð°Ñ€Ñ–Ð°Ð½Ñ‚Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ–Ð² %u Ñƒ Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÐ°"
 
-#: dwarf2.c:2155
+#: dwarf2.c:2210
 msgid "DWARF error: invalid maximum operations per instruction"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð° ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð´Ñ–Ð¹ Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ"
 
-#: dwarf2.c:2174
+#: dwarf2.c:2229
 msgid "DWARF error: ran out of room reading opcodes"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� ÐºÐ¾Ð´Ñ–Ð² Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹"
 
-#: dwarf2.c:2347
+#: dwarf2.c:2420
 msgid "DWARF error: mangled line number section"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²"
 
-#: dwarf2.c:2852 dwarf2.c:2913
+#: dwarf2.c:2905
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ€ÐµÐºÑƒÑ€Ñ�Ñ–ÑŽ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¼ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€Ð¾Ð¼"
+
+#: dwarf2.c:2939 dwarf2.c:3033
 msgid "DWARF error: invalid abstract instance DIE ref"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¹ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ DIE"
 
-#: dwarf2.c:2889
+#: dwarf2.c:2955
 #, c-format
 msgid "DWARF error: unable to read alt ref %<PRIu64>"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� %<PRIu64>"
 
-#: dwarf2.c:2930 dwarf2.c:3103 dwarf2.c:3457
+#: dwarf2.c:3011
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¹ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ DIE %<PRIu64>"
+
+#: dwarf2.c:3050 dwarf2.c:3232 dwarf2.c:3618
 #, c-format
 msgid "DWARF error: could not find abbrev number %u"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %u"
 
-#: dwarf2.c:2947
-msgid "DWARF error: abstract instance recursion detected"
-msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ€ÐµÐºÑƒÑ€Ñ�Ñ–ÑŽ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¼ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€Ð¾Ð¼"
+#: dwarf2.c:3381
+#, c-format
+msgid "DWARF error: could not find variable specification at offset %lx"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–ÑŽ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ… Ð·Ñ– Ð·Ñ�ÑƒÐ²Ð¾Ð¼ %lx"
 
-#: dwarf2.c:3376
+#: dwarf2.c:3537
 #, c-format
 msgid "DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 information"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð²ÐµÑ€Ñ�Ñ–ÑŽ DWARF Â«%uÂ», Ð°Ð»Ðµ Ñƒ Ñ†Ñ–Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÑƒ Ð»Ð¸ÑˆÐµ Ð²ÐµÑ€Ñ�Ñ–Ð¹ Ð´Ð°Ð½Ð¸Ñ… 2, 3 Ñ– 4"
 
-#: dwarf2.c:3420
+#: dwarf2.c:3581
 #, c-format
 msgid "DWARF error: found address size '%u', this reader can not handle sizes greater than '%u'"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð°Ð´Ñ€ÐµÑ�Ð¸ Â«%uÂ», Ð²Ñ‚Ñ–Ð¼ Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð², Ñ‰Ð¾ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑŽÑ‚ÑŒ Â«%uÂ»"
 
-#: dwarf2.c:3523
+#: dwarf2.c:3685
 msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ DW_AT_comp_dir Ñ–Ð· Ð½ÐµÑ€Ñ�Ð´ÐºÐ¾Ð²Ð¾ÑŽ Ñ„Ð¾Ñ€Ð¼Ð¾ÑŽ"
 
-#: ecoff.c:971
+#: ecoff.c:982
 #, c-format
 msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: isymMax (%ld) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” ifdMax (%ld)"
 
-#: ecoff.c:1268
+#: ecoff.c:1279
 #, c-format
 msgid "unknown basic type %d"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ %d"
 
-#: ecoff.c:1525
+#: ecoff.c:1536
 #, c-format
 msgid ""
 "\n"
@@ -686,7 +698,7 @@ msgstr ""
 "\n"
 "      Ð¡Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼: %ld"
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1543 ecoff.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -695,7 +707,7 @@ msgstr ""
 "\n"
 "      ÐŸÐµÑ€ÑˆÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %ld"
 
-#: ecoff.c:1548
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
@@ -704,7 +716,7 @@ msgstr ""
 "\n"
 "      Ð¡Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼: %-7ld   Ð¢Ð¸Ð¿:  %s"
 
-#: ecoff.c:1555
+#: ecoff.c:1566
 #, c-format
 msgid ""
 "\n"
@@ -713,7 +725,7 @@ msgstr ""
 "\n"
 "      Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %ld"
 
-#: ecoff.c:1563
+#: ecoff.c:1574
 #, c-format
 msgid ""
 "\n"
@@ -722,7 +734,7 @@ msgstr ""
 "\n"
 "      struct; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼: %ld"
 
-#: ecoff.c:1568
+#: ecoff.c:1579
 #, c-format
 msgid ""
 "\n"
@@ -731,7 +743,7 @@ msgstr ""
 "\n"
 "      union; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼: %ld"
 
-#: ecoff.c:1573
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
@@ -740,7 +752,7 @@ msgstr ""
 "\n"
 "      enum; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼: %ld"
 
-#: ecoff.c:1579
+#: ecoff.c:1590
 #, c-format
 msgid ""
 "\n"
@@ -749,22 +761,22 @@ msgstr ""
 "\n"
 "      Ð¢Ð¸Ð¿: %s"
 
-#: elf-attrs.c:446
+#: elf-attrs.c:449
 #, c-format
 msgid "%pB: error: attribute section '%pA' too big: %#llx"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Â«%pAÂ» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ: %#llx"
 
-#: elf-attrs.c:487
+#: elf-attrs.c:490
 #, c-format
 msgid "%pB: error: attribute section length too small: %<PRId64>"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ: %<PRId64>"
 
-#: elf-attrs.c:615
+#: elf-attrs.c:618
 #, c-format
 msgid "error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchain"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð´Ð°Ð½Ñ– Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–, Ñ†Ñ– Ð´Ð°Ð½Ñ– Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² Â«%sÂ»"
 
-#: elf-attrs.c:625
+#: elf-attrs.c:628
 #, c-format
 msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¼Ñ–Ñ‚ÐºÐ° Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Â«%d, %sÂ» Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð° Ð· Ð¼Ñ–Ñ‚ÐºÐ¾ÑŽ Â«%d, %sÂ»"
@@ -788,91 +800,90 @@ msgstr "ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� FDE Ñƒ %pB(%p
 msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"
 msgstr "Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÑ– Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� FDE, Ñ�ÐºÐµ Ð·Ð°Ð²Ð°Ð¶Ð°Ñ” Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ .eh_frame_hdr, Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾"
 
-#: elf-eh-frame.c:1868
+#: elf-eh-frame.c:1866
 #, c-format
 msgid "%pB: %pA not in order"
 msgstr "%pB: %pA Ñ” Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¼"
 
-#: elf-eh-frame.c:1882
+#: elf-eh-frame.c:1880
 #, c-format
 msgid "%pB: %pA invalid input section size"
 msgstr "%pB: %pA Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…"
 
-#: elf-eh-frame.c:1890
+#: elf-eh-frame.c:1888
 #, c-format
 msgid "%pB: %pA points past end of text section"
 msgstr "%pB: %pA Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: elf-eh-frame.c:2139
+#: elf-eh-frame.c:2141
 msgid "DW_EH_PE_datarel unspecified for this architecture"
 msgstr "DW_EH_PE_datarel Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ†Ñ–Ñ”Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸"
 
-#: elf-eh-frame.c:2309
+#: elf-eh-frame.c:2312
 #, c-format
 msgid "invalid output section for .eh_frame_entry: %pA"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñƒ .eh_frame_entry: %pA"
 
-#: elf-eh-frame.c:2332
+#: elf-eh-frame.c:2335
 #, c-format
 msgid "invalid contents in %pA section"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pA"
 
-#: elf-eh-frame.c:2488
+#: elf-eh-frame.c:2491
 msgid ".eh_frame_hdr entry overflow"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñƒ .eh_frame_hdr"
 
-#: elf-eh-frame.c:2490
+#: elf-eh-frame.c:2493
 msgid ".eh_frame_hdr refers to overlapping FDEs"
 msgstr ".eh_frame_hdr Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° FDE, Ñ�ÐºÑ– Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ð²Ð°ÑŽÑ‚ÑŒÑ�Ñ�"
 
-#: elf-ifunc.c:149
+#: elf-ifunc.c:144
 #, c-format
 msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%pB' can not be used when making an executable; recompile with -fPIE and relink with -pie\n"
 msgstr "%F%P: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» STT_GNU_IFUNC Â«%sÂ» Ð· Ñ€Ñ–Ð²Ð½Ñ–Ñ�Ñ‚ÑŽ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ñƒ Â«%pBÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°; Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ñƒ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñ�Ñ†Ñ–ÑŽ Ð· -fPIE Ñ– Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� -pie\n"
 
-#: elf-m10200.c:434 elf-m10300.c:2147 elf32-avr.c:1510 elf32-bfin.c:3127
-#: elf32-cr16.c:1464 elf32-cr16c.c:783 elf32-cris.c:2033 elf32-crx.c:925
-#: elf32-d10v.c:512 elf32-epiphany.c:566 elf32-fr30.c:594 elf32-frv.c:4049
-#: elf32-ft32.c:494 elf32-h8300.c:523 elf32-ip2k.c:1482 elf32-iq2000.c:693
-#: elf32-lm32.c:1112 elf32-m32c.c:624 elf32-m32r.c:3045 elf32-m68hc1x.c:1266
-#: elf32-mep.c:526 elf32-metag.c:1990 elf32-microblaze.c:1631
-#: elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6189 elf32-or1k.c:1759
-#: elf32-score.c:2733 elf32-score7.c:2542 elf32-spu.c:5083
-#: elf32-tilepro.c:3506 elf32-v850.c:2291 elf32-visium.c:681
-#: elf32-xstormy16.c:931 elf64-mmix.c:1541 elfxx-tilegx.c:3870
+#: elf-m10200.c:434 elf-m10300.c:2145 elf32-avr.c:1508 elf32-bfin.c:3126
+#: elf32-cr16.c:1464 elf32-cris.c:2033 elf32-crx.c:920 elf32-d10v.c:510
+#: elf32-epiphany.c:562 elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:494
+#: elf32-h8300.c:523 elf32-ip2k.c:1477 elf32-iq2000.c:691 elf32-lm32.c:1069
+#: elf32-m32c.c:624 elf32-m32r.c:2860 elf32-m68hc1x.c:1272 elf32-mep.c:526
+#: elf32-metag.c:1986 elf32-microblaze.c:1627 elf32-moxie.c:288 elf32-mt.c:402
+#: elf32-nds32.c:6048 elf32-or1k.c:1817 elf32-score.c:2734 elf32-score7.c:2543
+#: elf32-spu.c:5083 elf32-tilepro.c:3380 elf32-v850.c:2290 elf32-visium.c:680
+#: elf32-xstormy16.c:929 elf64-bpf.c:512 elf64-mmix.c:1541 elfxx-tilegx.c:3744
 msgid "internal error: out of range error"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ"
 
-#: elf-m10200.c:438 elf-m10300.c:2151 elf32-avr.c:1514 elf32-bfin.c:3131
-#: elf32-cr16.c:1468 elf32-cr16c.c:787 elf32-cris.c:2037 elf32-crx.c:929
-#: elf32-d10v.c:516 elf32-fr30.c:598 elf32-frv.c:4053 elf32-ft32.c:498
-#: elf32-h8300.c:527 elf32-iq2000.c:697 elf32-lm32.c:1116 elf32-m32c.c:628
-#: elf32-m32r.c:3049 elf32-m68hc1x.c:1270 elf32-mep.c:530 elf32-metag.c:1994
-#: elf32-microblaze.c:1635 elf32-moxie.c:292 elf32-msp430.c:1362
-#: elf32-nds32.c:6193 elf32-or1k.c:1763 elf32-score.c:2737 elf32-score7.c:2546
-#: elf32-spu.c:5087 elf32-tilepro.c:3510 elf32-v850.c:2295 elf32-visium.c:685
-#: elf32-xstormy16.c:935 elf64-mmix.c:1545 elfxx-mips.c:10469
-#: elfxx-tilegx.c:3874
+#: elf-m10200.c:438 elf-m10300.c:2149 elf32-avr.c:1512 elf32-bfin.c:3130
+#: elf32-cr16.c:1468 elf32-cris.c:2037 elf32-crx.c:924 elf32-d10v.c:514
+#: elf32-fr30.c:598 elf32-frv.c:4052 elf32-ft32.c:498 elf32-h8300.c:527
+#: elf32-iq2000.c:695 elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2864
+#: elf32-m68hc1x.c:1276 elf32-mep.c:530 elf32-metag.c:1990
+#: elf32-microblaze.c:1631 elf32-moxie.c:292 elf32-msp430.c:1371
+#: elf32-nds32.c:6052 elf32-or1k.c:1821 elf32-score.c:2738 elf32-score7.c:2547
+#: elf32-spu.c:5087 elf32-tilepro.c:3384 elf32-v850.c:2294 elf32-visium.c:684
+#: elf32-xstormy16.c:933 elf64-mmix.c:1545 elfxx-mips.c:10576
+#: elfxx-tilegx.c:3748
 msgid "internal error: unsupported relocation error"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-cr16c.c:791 elf32-crx.c:933
-#: elf32-d10v.c:520 elf32-h8300.c:531 elf32-lm32.c:1120 elf32-m32r.c:3053
-#: elf32-m68hc1x.c:1274 elf32-microblaze.c:1639 elf32-nds32.c:6197
-#: elf32-score.c:2741 elf32-score7.c:2550 elf32-spu.c:5091
+#: elf-m10200.c:442 elf32-cr16.c:1472 elf32-crx.c:928 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2868 elf32-m68hc1x.c:1280
+#: elf32-microblaze.c:1635 elf32-nds32.c:6056 elf32-score.c:2742
+#: elf32-score7.c:2551 elf32-spu.c:5091
 msgid "internal error: dangerous error"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°"
 
-#: elf-m10200.c:446 elf-m10300.c:2168 elf32-avr.c:1522 elf32-bfin.c:3139
-#: elf32-cr16.c:1476 elf32-cr16c.c:795 elf32-cris.c:2045 elf32-crx.c:937
-#: elf32-d10v.c:524 elf32-epiphany.c:581 elf32-fr30.c:606 elf32-frv.c:4061
-#: elf32-ft32.c:506 elf32-h8300.c:535 elf32-ip2k.c:1497 elf32-iq2000.c:705
-#: elf32-lm32.c:1124 elf32-m32c.c:636 elf32-m32r.c:3057 elf32-m68hc1x.c:1278
-#: elf32-mep.c:538 elf32-metag.c:2002 elf32-microblaze.c:1643
-#: elf32-moxie.c:300 elf32-msp430.c:1370 elf32-mt.c:410 elf32-nds32.c:6201
-#: elf32-or1k.c:1771 elf32-score.c:2750 elf32-score7.c:2554 elf32-spu.c:5095
-#: elf32-tilepro.c:3518 elf32-v850.c:2315 elf32-visium.c:693
-#: elf32-xstormy16.c:943 elf64-mmix.c:1553 elfxx-tilegx.c:3882
+#: elf-m10200.c:446 elf-m10300.c:2166 elf32-avr.c:1520 elf32-bfin.c:3138
+#: elf32-cr16.c:1476 elf32-cris.c:2045 elf32-crx.c:932 elf32-d10v.c:522
+#: elf32-epiphany.c:577 elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:506
+#: elf32-h8300.c:535 elf32-ip2k.c:1492 elf32-iq2000.c:703 elf32-lm32.c:1081
+#: elf32-m32c.c:636 elf32-m32r.c:2872 elf32-m68hc1x.c:1284 elf32-mep.c:538
+#: elf32-metag.c:1998 elf32-microblaze.c:1639 elf32-moxie.c:300
+#: elf32-msp430.c:1379 elf32-mt.c:410 elf32-nds32.c:6060 elf32-or1k.c:1829
+#: elf32-score.c:2751 elf32-score7.c:2555 elf32-spu.c:5095
+#: elf32-tilepro.c:3392 elf32-v850.c:2314 elf32-visium.c:692
+#: elf32-xstormy16.c:941 elf64-bpf.c:525 elf64-mmix.c:1553 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°"
 
@@ -881,38 +892,35 @@ msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ
 msgid "%pB: unsupported transition from %s to %s"
 msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð· %s Ð´Ð¾ %s"
 
-#: elf-m10300.c:1198
+#: elf-m10300.c:1196
 #, c-format
 msgid "%pB: %s' accessed both as normal and thread local symbol"
 msgstr "%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ‚Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf-m10300.c:2094 elf32-arm.c:13246 elf32-i386.c:3409 elf32-m32r.c:2539
-#: elf32-m68k.c:3899 elf32-s390.c:3211 elf32-sh.c:3800 elf32-tilepro.c:3409
-#: elf32-xtensa.c:2965 elf64-s390.c:3161 elf64-x86-64.c:3846
-#: elfxx-sparc.c:3906 elfxx-tilegx.c:3793
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5261
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6807
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2279
+#: elf-m10300.c:2092 elf32-arm.c:13400 elf32-i386.c:3403 elf32-m32r.c:2354
+#: elf32-m68k.c:3931 elf32-s390.c:3082 elf32-sh.c:3677 elf32-tilepro.c:3283
+#: elf32-xtensa.c:3023 elf64-s390.c:3031 elf64-x86-64.c:4062
+#: elfxx-sparc.c:3795 elfxx-tilegx.c:3667 elfnn-aarch64.c:5505
+#: elfnn-aarch64.c:7102
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: elf-m10300.c:2156
+#: elf-m10300.c:2154
 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� (Ð·Ð°Ð±ÑƒÐ»Ð¸ -fpic?)"
 
-#: elf-m10300.c:2160
+#: elf-m10300.c:2158
 #, c-format
 msgid "%pB: taking the address of protected function '%s' cannot be done when making a shared library"
 msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf-m10300.c:2163
+#: elf-m10300.c:2161
 msgid "internal error: suspicious relocation type used in shared library"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ð¾Ð·Ñ€Ñ–Ð»Ð¸Ð²Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf-m10300.c:2649 elf32-avr.c:2492 elf32-frv.c:5641 elf64-ia64-vms.c:364
-#: elfxx-sparc.c:2795 reloc.c:8185 reloc16.c:155 elf32-ia64.c:361
-#: elf64-ia64.c:361
+#: elf-m10300.c:2647 elf32-avr.c:2489 elf32-frv.c:5620 elf64-ia64-vms.c:364
+#: elfxx-sparc.c:2683 reloc.c:8244 reloc16.c:155 elfnn-ia64.c:364
 msgid "%P%F: --relax and -r may not be used together\n"
 msgstr "%P%F: --relax Ñ– -r Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾\n"
 
@@ -954,7 +962,7 @@ msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ
 msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
 msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB (0x%v) Ð· %pB (Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)\n"
 
-#: elf-properties.c:316 elf-properties.c:396
+#: elf-properties.c:316 elf-properties.c:394
 msgid "Removed property %W to merge %pB and %pB\n"
 msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB Ð· %pB\n"
 
@@ -962,115 +970,110 @@ msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ
 msgid "Removed property %W to merge %pB and %pB (not found)\n"
 msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB Ð· %pB (Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)\n"
 
-#: elf-properties.c:339
+#: elf-properties.c:337
 msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
 msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W (0x%v) Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB (0x%v) Ð· %pB (0x%v)\n"
 
-#: elf-properties.c:348
+#: elf-properties.c:346
 msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
 msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W (%v) Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB (0x%v) Ð· %pB (Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)\n"
 
-#: elf-properties.c:390
+#: elf-properties.c:388
 msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
 msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB (Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾) Ð· %pB (0x%v)\n"
 
 #. Merge .note.gnu.property sections.
-#: elf-properties.c:552 elf-properties.c:554
+#: elf-properties.c:550 elf-properties.c:552
 msgid "\n"
 msgstr "\n"
 
-#: elf-properties.c:553
+#: elf-properties.c:551
 msgid "Merging program properties\n"
 msgstr "Ð’Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ�\n"
 
 #. PR 17512: file: f057ec89.
-#: elf.c:345
+#: elf.c:336
 #, c-format
 msgid "%pB: attempt to load strings from a non-string section (number %d)"
 msgstr "%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ–Ð· Ð½ÐµÑ€Ñ�Ð´ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (Ð½Ð¾Ð¼ÐµÑ€ %d)"
 
-#: elf.c:360
+#: elf.c:361
 #, c-format
 msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ€Ñ�Ð´ÐºÐ°, %u >= %<PRIu64>, Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»"
 
-#: elf.c:499 /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7891
+#: elf.c:513 elfnn-aarch64.c:8096
 #, c-format
 msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
 msgstr "%pB Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %lu Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð» SHT_SYMTAB_SHNDX, Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”"
 
-#: elf.c:664
-#, c-format
-msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
-msgstr "%pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ñ– Ð´Ð°Ð½Ñ– Ð¿Ð¾Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð³Ñ€ÑƒÐ¿: %#<PRIx64>"
-
-#: elf.c:680
+#: elf.c:675
 #, c-format
 msgid "%pB: invalid size field in group section header: %#<PRIx64>"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñ– Ð´Ð°Ð½Ñ– Ð¿Ð¾Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð³Ñ€ÑƒÐ¿: %#<PRIx64>"
 
-#: elf.c:728
+#: elf.c:720
 #, c-format
 msgid "%pB: invalid entry in SHT_GROUP section [%u]"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– SHT_GROUP [%u]"
 
-#: elf.c:747
+#: elf.c:739
 #, c-format
 msgid "%pB: no valid group sections found"
 msgstr "%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ð³Ñ€ÑƒÐ¿Ð¸"
 
 #. See PR 21957 for a reproducer.
-#: elf.c:776
+#: elf.c:768
 #, c-format
 msgid "%pB: group section '%pA' has no contents"
 msgstr "%pB: Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð¸Ñ…"
 
-#: elf.c:837
+#: elf.c:829
 #, c-format
 msgid "%pB: no group info for section '%pA'"
 msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð³Ñ€ÑƒÐ¿Ð¸ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»"
 
-#: elf.c:868 elf.c:3886 elflink.c:11403
+#: elf.c:859 elf.c:3955
 #, c-format
 msgid "%pB: warning: sh_link not set for section `%pA'"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ sh_link Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»"
 
-#: elf.c:888
+#: elf.c:879
 #, c-format
 msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
 msgstr "%pB: sh_link [%d] Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼"
 
-#: elf.c:901
+#: elf.c:892
 #, c-format
 msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
 msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» SHT_GROUP [Ñ–Ð½Ð´ÐµÐºÑ� %d] Ð½Ðµ Ð¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² SHF_GROUP"
 
-#: elf.c:922
+#: elf.c:913
 #, c-format
 msgid "%pB: section group entry number %u is corrupt"
 msgstr "%pB: Ð·Ð°Ð¿Ð¸Ñ� Ð³Ñ€ÑƒÐ¿Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ñ–Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %u Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾"
 
-#: elf.c:945
+#: elf.c:936
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿, [%#x], Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ» Ñƒ Ð³Ñ€ÑƒÐ¿Ñ– [%pA]"
 
-#: elf.c:1408
+#: elf.c:1438
 #, c-format
 msgid "%pB: invalid sh_link field (%d) in section number %d"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ð»Ðµ sh_link (%d) Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d"
 
-#: elf.c:1424
+#: elf.c:1454
 #, c-format
 msgid "%pB: failed to find link section for section %d"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð·Ð²â€™Ñ�Ð·ÐºÑ–Ð² Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d"
 
-#: elf.c:1451
+#: elf.c:1481
 #, c-format
 msgid "%pB: failed to find info section for section %d"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d"
 
-#: elf.c:1623
+#: elf.c:1653
 #, c-format
 msgid ""
 "\n"
@@ -1079,7 +1082,7 @@ msgstr ""
 "\n"
 "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸:\n"
 
-#: elf.c:1665
+#: elf.c:1695
 #, c-format
 msgid ""
 "\n"
@@ -1088,7 +1091,7 @@ msgstr ""
 "\n"
 "Ð”Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»:\n"
 
-#: elf.c:1806
+#: elf.c:1836
 #, c-format
 msgid ""
 "\n"
@@ -1097,7 +1100,7 @@ msgstr ""
 "\n"
 "Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²ÐµÑ€Ñ�Ñ–Ð¹:\n"
 
-#: elf.c:1831
+#: elf.c:1861
 #, c-format
 msgid ""
 "\n"
@@ -1106,577 +1109,678 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ—:\n"
 
-#: elf.c:1836
+#: elf.c:1866
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ñ– %s:\n"
 
-#: elf.c:2037
+#: elf.c:2082
 #, c-format
 msgid "%pB: warning: loop in section dependencies detected"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ†Ð¸ÐºÐ»ÐµÐ½Ñ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñ�Ñ‚ÐµÐ¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: elf.c:2145
+#: elf.c:2190
 #, c-format
 msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %u"
 
-#: elf.c:2229
+#: elf.c:2274
 #, c-format
 msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %u"
 
-#: elf.c:2342
+#: elf.c:2387
 #, c-format
 msgid "%pB: invalid link %u for reloc section %s (index %u)"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� %u Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s (Ñ–Ð½Ð´ÐµÐºÑ� %u)"
 
-#: elf.c:2504 elf.c:2519 elf.c:2530 elf.c:2543
+#: elf.c:2478
+#, c-format
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾"
+
+#: elf.c:2562 elf.c:2577 elf.c:2588 elf.c:2601
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ [%#x], Â«%sÂ»"
 
-#: elf.c:3248
+#: elf.c:3308
 #, c-format
 msgid "%pB: error: alignment power %d of section `%pA' is too big"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ñ‚ÐµÐ¿Ñ–Ð½ÑŒ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %d Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ"
 
-#: elf.c:3278
+#: elf.c:3341
 #, c-format
 msgid "warning: section `%pA' type changed to PROGBITS"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð½Ð° PROGBITS"
 
-#: elf.c:3754
+#: elf.c:3824
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr "%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² %u"
 
-#: elf.c:3839
+#: elf.c:3909
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
 msgstr "%pB: sh_link Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð²Ñ–Ð´ÐºÐ¸Ð½ÑƒÑ‚Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Â«%pBÂ»"
 
-#: elf.c:3864
+#: elf.c:3934
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
 msgstr "%pB: sh_link Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Â«%pBÂ»"
 
-#: elf.c:4430
+#: elf.c:4495
 #, c-format
-msgid "%pB: GNU_MBIN section `%pA' has invalid sh_info field: %d"
-msgstr "%pB: Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– GNU_MBIN Â«%pAÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ð»Ðµ sh_info: %d"
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
+msgstr "%pB: Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– GNU_MBIND Â«%pAÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ð»Ðµ sh_info: %d"
 
-#: elf.c:5013
+#: elf.c:5086
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ TLS Ð½Ðµ Ñ” Ñ�ÑƒÑ�Ñ–Ð´Ð½Ñ–Ð¼Ð¸:"
 
-#: elf.c:5020
+#: elf.c:5093
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr "\t    TLS: %pA"
 
-#: elf.c:5024
+#: elf.c:5097
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr "\tÐ½Ðµ-TLS: %pA"
 
-#: elf.c:5538
+#: elf.c:5687
 #, c-format
 msgid "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
 msgstr "%pB: Ð¿ÐµÑ€ÑˆÐ¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– PT_DYNAMIC Ð½Ðµ Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ .dynamic"
 
-#: elf.c:5566
+#: elf.c:5713
 #, c-format
 msgid "%pB: not enough room for program headers, try linking with -N"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¼Ñ–Ñ�Ñ†Ñ� Ð´Ð»Ñ� Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð² Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸, Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· -N"
 
-#: elf.c:5654
+#: elf.c:5830
 #, c-format
 msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
 msgstr "%pB: (Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA) lma %#<PRIx64> Ñ�ÐºÐ¾Ñ€Ð¸Ð³Ð¾Ð²Ð°Ð½Ð¾ Ð´Ð¾ %#<PRIx64>"
 
-#: elf.c:5791
+#. The fix for this error is usually to edit the linker script being
+#. used and set up the program headers manually.  Either that or
+#. leave room for the headers at the start of the SECTIONS.
+#: elf.c:5967
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD"
+
+#: elf.c:6007
 #, c-format
 msgid "%pB: section `%pA' can't be allocated in segment %d"
 msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¾ Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– %d"
 
-#: elf.c:5839
+#: elf.c:6139
 #, c-format
 msgid "%pB: warning: allocated section `%s' not in segment"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°"
 
-#: elf.c:6072
+#: elf.c:6300
 #, c-format
 msgid "%pB: error: non-load segment %d includes file header and/or program header"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ %d Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ” Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ„Ð°Ð¹Ð»Ð° Ñ–/Ð°Ð±Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸"
 
-#. The fix for this error is usually to edit the linker script being
-#. used and set up the program headers manually.  Either that or
-#. leave room for the headers at the start of the SECTIONS.
-#: elf.c:6249
-#, c-format
-msgid "%pB: error: PHDR segment not covered by LOAD segment"
-msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD"
-
-#: elf.c:6606
+#: elf.c:6804
 #, c-format
 msgid "%pB: symbol `%s' required but not present"
 msgstr "%pB: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ð°Ð»Ðµ Ð¹Ð¾Ð³Ð¾ Ð½ÐµÐ¼Ð°Ñ”"
 
-#: elf.c:6949
+#: elf.c:7147
 #, c-format
 msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¹ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð·Ð° vaddr=%#<PRIx64>, Ñ‚Ð°Ðº Ñ– Ñ‚Ñ€ÐµÐ±Ð°?"
 
-#: elf.c:7574
+#: elf.c:7773
 #, c-format
 msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° %#<PRIx64> Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼"
 
-#: elf.c:8073
+#: elf.c:8286
+#, c-format
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %x Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ– ELF. Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ð·Ð°Ð¼Ñ–Ñ�Ñ‚ÑŒ Ð½ÑŒÐ¾Ð³Ð¾ ABS."
+
+#: elf.c:8316
 #, c-format
 msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ñ–Ð²Ð½Ð¾Ñ†Ñ–Ð½Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»"
 
-#: elf.c:8421
+#: elf.c:8703
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� .gnu.version_r"
 
-#: elf.c:8548
+#: elf.c:8836
 #, c-format
 msgid "%pB: .gnu.version_d invalid entry"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� .gnu.version_d"
 
-#: elf32-arc.c:440 elf32-frv.c:6630 elf32-iq2000.c:870 elf32-m32c.c:914
-#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3199 elf32-visium.c:841
-#: elf64-ppc.c:4950
+#: elf.c:9293
+#, c-format
+msgid "%pB:%pA: error: attempting to write into an unallocated compressed section"
+msgstr "%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ñ‚Ð¸Ñ�Ð½ÐµÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
+
+#: elf.c:9302
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr "%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
+
+#: elf.c:9313
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr "%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð¾ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ð±ÑƒÑ„ÐµÑ€Ð°"
+
+#: elf.c:12430
+msgid "GNU_MBIND section is unsupported"
+msgstr "Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ GNU_MBIND Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+
+#: elf.c:12432
+msgid "symbol type STT_GNU_IFUNC is unsupported"
+msgstr "Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ‚Ð¸Ð¿Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² STT_GNU_IFUNC Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+
+#: elf.c:12434
+msgid "symbol binding STB_GNU_UNIQUE is unsupported"
+msgstr "Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿Ñ€Ð¸Ð²'Ñ�Ð·ÐºÐ¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð¾ STB_GNU_UNIQUE Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+
+#: elf.c:12618 elf64-sparc.c:123 elfcode.h:1482
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %ld"
+
+#: elf.c:12692
+#, c-format
+msgid "%pB(%pA): link section cannot be set because the output file does not have a symbol table"
+msgstr "%pB(%pA): Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÐ²Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð² Ð½ÐµÐ¼Ð°Ñ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"
+
+#: elf.c:12704
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸Ðº Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ info Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼"
+
+#: elf.c:12718
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr "%pB(%pA): Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÐ²Ð°Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ info, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ñ†ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð½ÐµÐ¼Ð°Ñ” Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ–"
+
+#: elf.c:12784
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾ Ð´Ð²Ñ–Ñ‡Ñ–"
+
+#: elf.c:12796
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¼!"
+
+#: elf.c:12819
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ"
+
+#: elf.c:12838
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %u is empty"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ %u Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¼"
+
+#: elf.c:12863
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a missing symbol"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %u Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¾Ð³Ð¾ Ð½ÐµÐ¼Ð°Ñ”"
+
+#: elf.c:12880
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u references a deleted symbol"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %u Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾"
+
+#: elf.c:12893
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %u is of an unknown type"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %u Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ"
+
+#: elf32-arc.c:455 elf32-frv.c:6611 elf32-iq2000.c:868 elf32-m32c.c:914
+#: elf32-mt.c:562 elf32-rl78.c:1260 elf32-rx.c:3205 elf32-visium.c:844
+#: elf64-ppc.c:5291
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = 0x%lx:"
 
-#: elf32-arc.c:627
+#: elf32-arc.c:642
 #, c-format
 msgid "warning: %pB: conflicting platform configuration %s with %s"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼, %s Ð· %s"
 
-#: elf32-arc.c:646
+#: elf32-arc.c:661
 #, c-format
 msgid "error: %pB: unable to merge CPU base attributes %s with %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ Ð±Ð°Ð·Ð¾Ð²Ñ– Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° %s Ð· %s"
 
-#: elf32-arc.c:683
+#: elf32-arc.c:698
 #, c-format
 msgid "error: %pB: unable to merge ISA extension attributes %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %s"
 
-#: elf32-arc.c:707
+#: elf32-arc.c:722
 #, c-format
 msgid "error: %pB: conflicting ISA extension attributes %s with %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA, %s Ð· %s"
 
-#: elf32-arc.c:747
+#: elf32-arc.c:762
 #, c-format
 msgid "error: %pB: cannot mix rf16 with full register set %pB"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ rf16 Ñ– Ð¿Ð¾Ð²Ð½Ð¸Ð¹ Ð½Ð°Ð±Ñ–Ñ€ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² %pB"
 
-#: elf32-arc.c:775
+#: elf32-arc.c:790
 #, c-format
 msgid "error: %pB: conflicting attributes %s: %s with %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² %s: %s Ð· %s"
 
-#: elf32-arc.c:802
+#: elf32-arc.c:817
 #, c-format
 msgid "error: %pB: conflicting attributes %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² %s"
 
-#: elf32-arc.c:907
+#: elf32-arc.c:922
 #, c-format
 msgid "error: attempting to link %pB with a binary %pB of different architecture"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� %pB Ð·Ñ– Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¼ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ %pB Ñ–Ð½ÑˆÐ¾Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸"
 
-#: elf32-arc.c:923 elf32-iq2000.c:846 elf32-m32c.c:889 elf32-m68hc1x.c:1385
-#: elf32-ppc.c:3865 elf64-sparc.c:711 elfxx-mips.c:15354
+#: elf32-arc.c:938 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1391
+#: elf32-ppc.c:3867 elf64-sparc.c:722 elfxx-mips.c:15513
 #, c-format
 msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½ÑˆÑ– Ð¿Ð¾Ð»Ñ� e_flags (%#x) Ð½Ñ–Ð¶ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)"
 
-#: elf32-arc.c:1012
+#: elf32-arc.c:1027
 msgid "error: the ARC4 architecture is no longer supported"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ ARC4 Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð¾"
 
-#: elf32-arc.c:1018
+#: elf32-arc.c:1033
 msgid "warning: unset or old architecture flags; use default machine"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð°Ð±Ð¾ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñ–; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ñ‚Ð¸Ð¿Ð¾Ð²Ñƒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
 
-#: elf32-arc.c:1151
+#: elf32-arc.c:1159
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CMEM Ð´Ð¾ Â«%sÂ» Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼, 16 MSB Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %#<PRIx64>)"
 
-#: elf32-arc.c:1162
+#: elf32-arc.c:1170
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s+%#<PRIx64>' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CMEM Ð´Ð¾ Â«%s+%#<PRIx64>Â» Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼, 16 MSB Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ %#x (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %#<PRIx64>)"
 
-#: elf32-arc.c:1876
+#: elf32-arc.c:1885
 msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
 msgstr "ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOT Ñ– PLT Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¾, Ñ�ÐºÑ‰Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ñ” Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¼"
 
-#: elf32-arc.c:1900 elf32-rl78.c:1098 elf32-rx.c:1470
+#: elf32-arc.c:1909 elf32-rl78.c:1098 elf32-rx.c:1475
 #, c-format
 msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
 msgstr "%pB(%pA): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ð¼Ð°Ð»Ñ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ…"
 
-#: elf32-arc.c:1905 elf32-rl78.c:1103 elf32-rx.c:1475
+#: elf32-arc.c:1914 elf32-rl78.c:1103 elf32-rx.c:1480
 #, c-format
 msgid "%pB(%pA): internal error: out of range error"
 msgstr "%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ"
 
-#: elf32-arc.c:1910 elf32-rl78.c:1108 elf32-rx.c:1480
+#: elf32-arc.c:1919 elf32-rl78.c:1108 elf32-rx.c:1485
 #, c-format
 msgid "%pB(%pA): internal error: unsupported relocation error"
 msgstr "%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-arc.c:1915 elf32-rl78.c:1113 elf32-rx.c:1485
+#: elf32-arc.c:1924 elf32-rl78.c:1113 elf32-rx.c:1490
 #, c-format
 msgid "%pB(%pA): internal error: dangerous relocation"
 msgstr "%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-arc.c:1920 elf32-rl78.c:1118 elf32-rx.c:1490
+#: elf32-arc.c:1929 elf32-rl78.c:1118 elf32-rx.c:1495
 #, c-format
 msgid "%pB(%pA): internal error: unknown error"
 msgstr "%pB(%pA): Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°"
 
-#: elf32-arc.c:2013 elf32-arc.c:2081 elf32-arm.c:15323 elf32-metag.c:2257
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7462
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:497
+#: elf32-arc.c:2022 elf32-arc.c:2090 elf32-arm.c:15513 elf32-metag.c:2253
+#: elf32-nds32.c:5498 elfnn-aarch64.c:7739 elfnn-riscv.c:483
 #, c-format
 msgid "%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC"
 
-#: elf32-arc.c:2949
+#: elf32-arc.c:2909
 #, c-format
 msgid "%pB: unknown mandatory ARC object attribute %d"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ARC %d"
 
-#: elf32-arc.c:2957
+#: elf32-arc.c:2917
 #, c-format
 msgid "warning: %pB: unknown ARC object attribute %d"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ARC %d"
 
-#: elf32-arm.c:4304 elf32-arm.c:4338 elf32-arm.c:4357 elf32-arm.c:4409
+#: elf32-arm.c:4307 elf32-arm.c:4341 elf32-arm.c:4360 elf32-arm.c:4412
 #, c-format
 msgid "%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE section attribute is only supported for M-profile targets that implement the movw instruction"
 msgstr "%pB(%pA): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð´Ð¾Ð²Ð³Ð¸Ñ… Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ñ… Ð³Ñ–Ð»Ð¾Ðº Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð°Ñ… Ñ–Ð· Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ SHF_ARM_PURECODE Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ†Ñ–Ð»ÐµÐ¹ Ð· Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÐµÐ¼ M, Ñƒ Ñ�ÐºÐ¸Ñ… Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ movw."
 
-#: elf32-arm.c:4369 elf32-arm.c:4423 elf32-arm.c:9093 elf32-arm.c:9183
+#: elf32-arm.c:4372 elf32-arm.c:4426 elf32-arm.c:9116 elf32-arm.c:9206
 #, c-format
 msgid "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s"
 msgstr "%pB(%s): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ð½Ðµ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾; Ð¿ÐµÑ€ÑˆÐ° Ð·Ð³Ð°Ð´ÐºÐ°: %pB: Ð²Ð¸ÐºÐ»Ð¸Ðº %s Ð´Ð¾ %s"
 
-#: elf32-arm.c:4697
+#: elf32-arm.c:4552
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº CMSE (Ñ€Ð¾Ð·Ð´Ñ–Ð» %s) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð´Ð°Ð»ÐµÐºÐ¸Ð¼ (%#<PRIx64>) Ð²Ñ–Ð´ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%#<PRIx64>)"
+
+#: elf32-arm.c:4721
 #, c-format
 msgid "no address assigned to the veneers output section %s"
 msgstr "Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð½Ð°Ð·Ð¾Ð²Ð½Ñ– %s Ð½Ðµ Ð¿Ð¾Ð²â€™Ñ�Ð·Ð°Ð½Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elf32-arm.c:4772 elf32-arm.c:6909 elf32-csky.c:3287 elf32-hppa.c:579
-#: elf32-m68hc1x.c:165 elf32-metag.c:1186 elf32-nios2.c:2208 elf64-ppc.c:3501
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3098
+#: elf32-arm.c:4796 elf32-arm.c:6943 elf32-csky.c:3172 elf32-hppa.c:584
+#: elf32-m68hc1x.c:165 elf32-metag.c:1182 elf32-nios2.c:2204 elf64-ppc.c:3775
+#: elfnn-aarch64.c:3190
 #, c-format
 msgid "%pB: cannot create stub entry %s"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %s"
 
-#: elf32-arm.c:5957
+#: elf32-arm.c:5017 elf32-csky.c:3514 elf32-hppa.c:734 elf32-m68hc11.c:422
+#: elf32-m68hc12.c:542 elf32-metag.c:3347 elf32-nios2.c:2497 elf64-ppc.c:11315
+#: elfnn-aarch64.c:3259
+msgid "%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð²'Ñ�Ð·Ð°Ñ‚Ð¸ Â«%pAÂ» Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ�. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð±ÐµÐ· --enable-non-contiguous-regions.\n"
+
+#: elf32-arm.c:5987
 #, c-format
 msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
 msgstr "%pB: Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ ARMv8-M Ñ– Ð½Ð¾Ð²Ñ–ÑˆÐ¸Ñ… Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€"
 
-#: elf32-arm.c:5966
+#: elf32-arm.c:5996
 #, c-format
 msgid "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»; Ñ†Ðµ Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ñ— Ð°Ð±Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—"
 
-#: elf32-arm.c:6005
+#: elf32-arm.c:6035
 #, c-format
 msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function symbol"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»; Ñ†Ðµ Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ (global) Ð°Ð±Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¸Ð¹ (weak) Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—."
 
-#: elf32-arm.c:6011
+#: elf32-arm.c:6041
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»."
 
-#: elf32-arm.c:6023
+#: elf32-arm.c:6053
 #, c-format
 msgid "%pB: `%s' and its special symbol are in different sections"
 msgstr "%pB: Â«%sÂ» Ñ– Ñ—Ñ— Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°ÑŽÑ‚ÑŒ Ñƒ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð°Ñ…."
 
-#: elf32-arm.c:6035
+#: elf32-arm.c:6065
 #, c-format
 msgid "%pB: entry function `%s' not output"
 msgstr "%pB: Ð²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð¸Ñ…"
 
-#: elf32-arm.c:6042
+#: elf32-arm.c:6072
 #, c-format
 msgid "%pB: entry function `%s' is empty"
 msgstr "%pB: Ð²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾ÑŽ"
 
-#: elf32-arm.c:6171
+#: elf32-arm.c:6201
 #, c-format
 msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
 msgstr "%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ --in-implib Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐº Secure Gateway"
 
-#: elf32-arm.c:6217
+#: elf32-arm.c:6250
 #, c-format
 msgid "%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸: Â«%sÂ»; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¸Ð¼, Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¼ Ñ– Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ‚Ð¸Ñ�Ñ� Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Thumb."
 
-#: elf32-arm.c:6239
+#: elf32-arm.c:6272
 #, c-format
 msgid "entry function `%s' disappeared from secure code"
 msgstr "Ð²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ð·Ð½Ð¸ÐºÐ»Ð° Ð· Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ"
 
-#: elf32-arm.c:6263
+#: elf32-arm.c:6296
 #, c-format
 msgid "`%s' refers to a non entry function"
 msgstr "Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Ð±ÐµÐ· Ð²Ñ…Ð¾Ð´Ñƒ"
 
-#: elf32-arm.c:6278
+#: elf32-arm.c:6311
 #, c-format
 msgid "%pB: visibility of symbol `%s' has changed"
 msgstr "%pB: Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð²Ð¸Ð´Ð¸Ð¼Ñ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: elf32-arm.c:6287
+#: elf32-arm.c:6320
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: elf32-arm.c:6306
+#: elf32-arm.c:6339
 #, c-format
 msgid "offset of veneer for entry function `%s' not a multiple of its size"
 msgstr "Ð·Ñ�ÑƒÐ² Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÐ¸ Ð´Ð»Ñ� Ð²Ñ…Ñ–Ð´Ð½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ» Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ—Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
 
-#: elf32-arm.c:6326
+#: elf32-arm.c:6359
 msgid "new entry function(s) introduced but no output import library specified:"
 msgstr "Ð²Ð¿Ñ€Ð¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð¾ Ð½Ð¾Ð²Ñ– Ð²Ñ…Ñ–Ð´Ð½Ñ– Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—, Ð°Ð»Ðµ Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…:"
 
-#: elf32-arm.c:6334
+#: elf32-arm.c:6367
 #, c-format
 msgid "start address of `%s' is different from previous link"
 msgstr "Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Â«%sÂ» Ñ” Ñ–Ð½ÑˆÐ¾ÑŽ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�"
 
-#: elf32-arm.c:7042 elf32-arm.c:7078
+#: elf32-arm.c:7076 elf32-arm.c:7111
 #, c-format
 msgid "unable to find %s glue '%s' for '%s'"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ»"
 
-#: elf32-arm.c:7793
+#: elf32-arm.c:7822
 #, c-format
 msgid "%pB: BE8 images only valid in big-endian mode"
 msgstr "%pB: Ð¾Ð±Ñ€Ð°Ð·Ð¸ BE8 Ñ” Ñ‡Ð¸Ð½Ð½Ð¸Ð¼Ð¸ Ð»Ð¸ÑˆÐµ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– big-endian"
 
 #. Give a warning, but do as the user requests anyway.
-#: elf32-arm.c:8024
+#: elf32-arm.c:8049
 #, c-format
 msgid "%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ð¹ Ñ�Ð¿Ð¾Ñ�Ñ–Ð± ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ VFP11 Ð½Ðµ Ñ” Ð½ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ð¸Ð¼ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�"
 
-#: elf32-arm.c:8051
+#: elf32-arm.c:8076
 #, c-format
 msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ð¹ Ñ�Ð¿Ð¾Ñ�Ñ–Ð± ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ STM32L4XX Ð½Ðµ Ñ” Ð½ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ð¸Ð¼ Ð´Ð»Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�"
 
-#: elf32-arm.c:8588 elf32-arm.c:8608 elf32-arm.c:8674 elf32-arm.c:8693
+#: elf32-arm.c:8612 elf32-arm.c:8632 elf32-arm.c:8699 elf32-arm.c:8718
 #, c-format
 msgid "%pB: unable to find %s veneer `%s'"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ %s Â«%sÂ»"
 
-#: elf32-arm.c:8900
+#: elf32-arm.c:8925
 #, c-format
 msgid "%pB(%pA+%#x): error: multiple load detected in non-last IT block instruction: STM32L4XX veneer cannot be generated; use gcc option -mrestrict-it to generate only one instruction per IT block"
 msgstr "%pB(%pA+%#x): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½ÑŒ Ñƒ Ð½ÐµÐ¾Ñ�Ñ‚Ð°Ð½Ð½Ñ–Ð¹ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— Ð±Ð»Ð¾ÐºÑƒ IT: Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾. Ð¡ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ gcc -mrestrict-it, Ñ‰Ð¾Ð± Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð¾Ð´Ð½Ñƒ  Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ Ð½Ð° Ð±Ð»Ð¾Ðº IT."
 
-#: elf32-arm.c:9000
+#: elf32-arm.c:9023
 #, c-format
 msgid "invalid TARGET2 relocation type '%s'"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ TARGET2, Â«%sÂ»"
 
 #. FIXME: We ought to be able to generate thumb-1 PLT
 #. instructions...
-#: elf32-arm.c:9802
+#: elf32-arm.c:9825
 #, c-format
 msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ–Ð¹ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� PLT Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– thumb-1"
 
-#: elf32-arm.c:10106 elf32-arm.c:10148
+#: elf32-arm.c:10135 elf32-arm.c:10177
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
 msgstr "%pB(%pA+%#<PRIx64>):  Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s, Â«%#lxÂ», Ñƒ Ñ‚Ñ€Ð°Ð¼Ð¿Ð»Ñ–Ð½Ñ– TLS"
 
-#: elf32-arm.c:10492
+#: elf32-arm.c:10521
 msgid "shared object"
 msgstr "Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚"
 
-#: elf32-arm.c:10495
+#: elf32-arm.c:10524
 msgid "PIE executable"
 msgstr "Ð’Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» PIE"
 
-#: elf32-arm.c:10498
+#: elf32-arm.c:10527
 #, c-format
 msgid "%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ð°Ð±Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� %s; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC"
 
-#: elf32-arm.c:10635 elf32-arm.c:11062
+#: elf32-arm.c:10664 elf32-arm.c:11091
 #, c-format
 msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s BLX Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ %s Â«%sÂ»."
 
-#: elf32-arm.c:11975 elf32-arm.c:12001
+#: elf32-arm.c:12003 elf32-arm.c:12029
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s, Â«%#lxÂ», Ð½Ð° Ñ�ÐºÑƒ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� TLS_GOTDESC"
 
-#: elf32-arm.c:12047 elf32-csky.c:4853 elf32-m68k.c:3703 elf32-metag.c:1919
-#: elf32-nios2.c:4366
+#: elf32-arm.c:12075 elf32-csky.c:4746 elf32-m68k.c:3735 elf32-metag.c:1915
+#: elf32-nios2.c:4385
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾"
 
-#: elf32-arm.c:12261
+#: elf32-arm.c:12289
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group relocations"
 msgstr "%pB(%pA+%#<PRIx64>): Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð³Ñ€ÑƒÐ¿ ALU Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ ADD Ð°Ð±Ð¾ SUB"
 
-#: elf32-arm.c:12302 elf32-arm.c:12394 elf32-arm.c:12482 elf32-arm.c:12572
+#: elf32-arm.c:12330 elf32-arm.c:12422 elf32-arm.c:12510 elf32-arm.c:12600
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group relocation %s"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ð¿Ð¾Ð´Ñ–Ð»Ñƒ %#<PRIx64> Ð· Ð¼ÐµÑ‚Ð¾ÑŽ Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s"
 
-#: elf32-arm.c:13078 elf32-sh.c:3689
+#: elf32-arm.c:13232 elf32-sh.c:3571
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ SEC_MERGE"
 
-#: elf32-arm.c:13191 elf32-m68k.c:3936 elf32-xtensa.c:2703
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6534
+#: elf32-arm.c:13345 elf32-m68k.c:3968 elf32-xtensa.c:2761
+#: elfnn-aarch64.c:6829
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
 msgstr "%pB(%pA+%#<PRIx64>): %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ TLS %s"
 
-#: elf32-arm.c:13193 elf32-m68k.c:3938 elf32-xtensa.c:2705
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6536
+#: elf32-arm.c:13347 elf32-m68k.c:3970 elf32-xtensa.c:2763
+#: elfnn-aarch64.c:6831
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
 msgstr "%pB(%pA+%#<PRIx64>): %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð¿Ð¾Ð·Ð° TLS %s"
 
-#: elf32-arm.c:13276 elf32-tic6x.c:2708
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6871
+#: elf32-arm.c:13430 elf32-tic6x.c:2649 elfnn-aarch64.c:7166
 msgid "out of range"
 msgstr "Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼"
 
-#: elf32-arm.c:13280 elf32-nios2.c:4500 elf32-pru.c:933 elf32-tic6x.c:2712
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6875
+#: elf32-arm.c:13434 elf32-nios2.c:4519 elf32-pru.c:936 elf32-tic6x.c:2653
+#: elfnn-aarch64.c:7170
 msgid "unsupported relocation"
 msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-arm.c:13288 elf32-nios2.c:4510 elf32-pru.c:943 elf32-tic6x.c:2720
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6883
+#: elf32-arm.c:13442 elf32-nios2.c:4529 elf32-pru.c:946 elf32-tic6x.c:2661
+#: elfnn-aarch64.c:7178
 msgid "unknown error"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°"
 
-#: elf32-arm.c:13764
+#: elf32-arm.c:13920
 #, c-format
 msgid "warning: not setting interworking flag of %pB since it has already been specified as non-interworking"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð¹Ð¾Ð³Ð¾ Ð²Ð¶Ðµ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ‚Ð°Ðº, Ñ‰Ð¾Ð± Ð²Ñ–Ð½ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½Ñ�Ð² Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ"
 
-#: elf32-arm.c:13768
+#: elf32-arm.c:13924
 #, c-format
 msgid "warning: clearing the interworking flag of %pB due to outside request"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ñ�Ñ‚Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB Ñƒ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´ÑŒ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚ Ð·Ð·Ð¾Ð²Ð½Ñ–"
 
-#: elf32-arm.c:13813
+#: elf32-arm.c:13969
 #, c-format
 msgid "warning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ñ�Ñ‚Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð· Ð½Ð¸Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´, Ñ�ÐºÐ¸Ð¹ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸, Ñƒ %pB"
 
-#: elf32-arm.c:13900
+#: elf32-arm.c:14056
 #, c-format
 msgid "%pB: unknown mandatory EABI object attribute %d"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI %d"
 
-#: elf32-arm.c:13908
+#: elf32-arm.c:14064
 #, c-format
 msgid "warning: %pB: unknown EABI object attribute %d"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI %d"
 
-#: elf32-arm.c:14175
+#: elf32-arm.c:14364
 #, c-format
 msgid "error: %pB: unknown CPU architecture"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°"
 
-#: elf32-arm.c:14213 elf32-nios2.c:2946
+#: elf32-arm.c:14402 elf32-nios2.c:2953
 #, c-format
 msgid "error: %pB: conflicting CPU architectures %d/%d"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð² %d/%d"
 
-#: elf32-arm.c:14310
+#: elf32-arm.c:14499
 #, c-format
 msgid "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð»Ñ� %pB Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð¾Ð±Ð¸Ð´Ð²Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Tag_MPextension_use, current Ñ– legacy"
 
-#: elf32-arm.c:14339
+#: elf32-arm.c:14528
 #, c-format
 msgid "error: %pB uses VFP register arguments, %pB does not"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ VFP, Ð° Ñƒ %pB â€” Ð½Ñ–"
 
-#: elf32-arm.c:14497
+#: elf32-arm.c:14687
 #, c-format
 msgid "error: %pB: unable to merge virtualization attributes with %pB"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð· %pB Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ"
 
-#: elf32-arm.c:14523
+#: elf32-arm.c:14713
 #, c-format
 msgid "error: %pB: conflicting architecture profiles %c/%c"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»Ñ–Ð² Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€, %c/%c"
 
-#: elf32-arm.c:14662
+#: elf32-arm.c:14852
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼"
 
-#: elf32-arm.c:14671
+#: elf32-arm.c:14861
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ñƒ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ– R9"
 
-#: elf32-arm.c:14683
+#: elf32-arm.c:14873
 #, c-format
 msgid "error: %pB: SB relative addressing conflicts with use of R9"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð°Ñ†Ñ–Ñ— SB ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ð· Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼ R9"
 
-#: elf32-arm.c:14696
+#: elf32-arm.c:14886
 #, c-format
 msgid "warning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹ wchar_t, Ñ…Ð¾Ñ‡Ð° Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹ wchar_t; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ wchar_t Ð¼Ñ–Ð¶ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸ Ð¼Ð¾Ð¶Ðµ Ð·Ð°Ð·Ð½Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–"
 
-#: elf32-arm.c:14727
+#: elf32-arm.c:14917
 #, c-format
 msgid "warning: %pB uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÐ¸ %s, Ñ…Ð¾Ñ‡Ð° Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÐ¸ %s; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑ–Ð² Ð¼Ñ–Ð¶ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸ Ð¼Ð¾Ð¶Ðµ Ð·Ð°Ð·Ð½Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–"
 
-#: elf32-arm.c:14739
+#: elf32-arm.c:14929
 #, c-format
 msgid "error: %pB uses iWMMXt register arguments, %pB does not"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸-Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ iWMMXt, Ð° Ñƒ %pB â€” Ð½Ñ–"
 
-#: elf32-arm.c:14756
+#: elf32-arm.c:14946
 #, c-format
 msgid "error: fp16 format mismatch between %pB and %pB"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ð¾Ñ�Ñ‚Ñ– Ñƒ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ– Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� fp16 Ð¼Ñ–Ð¶ %pB Ñ‚Ð° %pB"
 
-#: elf32-arm.c:14792
+#: elf32-arm.c:14982
 #, c-format
 msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr "Ð´Ð»Ñ� %pB Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð¾Ð±Ð¸Ð´Ð²Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Tag_MPextension_use, current Ñ– legacy"
@@ -1686,345 +1790,330 @@ msgstr "Ð´Ð»Ñ� %pB Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¾
 #. Ignore init flag - it may not be set, despite the flags field containing valid data.
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
-#: elf32-arm.c:14879 elf32-bfin.c:4740 elf32-cris.c:3908 elf32-m68hc1x.c:1410
-#: elf32-m68k.c:1201 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
-#: elf32-xgate.c:494 elfxx-mips.c:16037
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7037
+#: elf32-arm.c:15069 elf32-bfin.c:4719 elf32-cris.c:3861 elf32-m68hc1x.c:1416
+#: elf32-m68k.c:1267 elf32-score.c:4000 elf32-score7.c:3805 elf32-vax.c:537
+#: elf32-xgate.c:494 elfxx-mips.c:16199 elfnn-aarch64.c:7332
 #, c-format
 msgid "private flags = %lx:"
 msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx:"
 
-#: elf32-arm.c:14888
+#: elf32-arm.c:15078
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ]"
 
-#: elf32-arm.c:14896
+#: elf32-arm.c:15086
 #, c-format
 msgid " [VFP float format]"
 msgstr " [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float VFP]"
 
-#: elf32-arm.c:14898
+#: elf32-arm.c:15088
 #, c-format
 msgid " [Maverick float format]"
 msgstr " [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float Maverick]"
 
-#: elf32-arm.c:14900
+#: elf32-arm.c:15090
 #, c-format
 msgid " [FPA float format]"
 msgstr " [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float FPA]"
 
-#: elf32-arm.c:14903
+#: elf32-arm.c:15093
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr " [Ñ‡Ð¸Ñ�Ð»Ð° Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ Ð¿ÐµÑ€ÐµÐ´Ð°Ð½Ð¾ Ð´Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ]"
 
-#: elf32-arm.c:14906 elf32-arm.c:14992
+#: elf32-arm.c:15096 elf32-arm.c:15182
 #, c-format
 msgid " [position independent]"
 msgstr " [Ð½ÐµÐ·Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¹ Ð²Ñ–Ð´ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ—]"
 
-#: elf32-arm.c:14909
+#: elf32-arm.c:15099
 #, c-format
 msgid " [new ABI]"
 msgstr " [Ð½Ð¾Ð²Ð¸Ð¹ ABI]"
 
-#: elf32-arm.c:14912
+#: elf32-arm.c:15102
 #, c-format
 msgid " [old ABI]"
 msgstr " [Ñ�Ñ‚Ð°Ñ€Ð¸Ð¹ ABI]"
 
-#: elf32-arm.c:14915
+#: elf32-arm.c:15105
 #, c-format
 msgid " [software FP]"
 msgstr " [Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð° FP]"
 
-#: elf32-arm.c:14924
+#: elf32-arm.c:15114
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ñ–Ñ�1 EABI]"
 
-#: elf32-arm.c:14927 elf32-arm.c:14938
+#: elf32-arm.c:15117 elf32-arm.c:15128
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²]"
 
-#: elf32-arm.c:14929 elf32-arm.c:14940
+#: elf32-arm.c:15119 elf32-arm.c:15130
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²]"
 
-#: elf32-arm.c:14935
+#: elf32-arm.c:15125
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ñ–Ñ�2 EABI]"
 
-#: elf32-arm.c:14943
+#: elf32-arm.c:15133
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°]"
 
-#: elf32-arm.c:14946
+#: elf32-arm.c:15136
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ´ÑƒÑŽÑ‚ÑŒ Ñ–Ð½ÑˆÐ¸Ð¼]"
 
-#: elf32-arm.c:14953
+#: elf32-arm.c:15143
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ñ–Ñ�3 EABI]"
 
-#: elf32-arm.c:14957
+#: elf32-arm.c:15147
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ñ–Ñ�4 EABI]"
 
-#: elf32-arm.c:14961
+#: elf32-arm.c:15151
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ñ–Ñ�5 EABI]"
 
-#: elf32-arm.c:14964
+#: elf32-arm.c:15154
 #, c-format
 msgid " [soft-float ABI]"
 msgstr " [ABI Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ñ— Ñ€ÑƒÑ…Ð¾Ð¼Ð¾Ñ— ÐºÑ€Ð°Ð¿ÐºÐ¸]"
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:15157
 #, c-format
 msgid " [hard-float ABI]"
 msgstr " [ABI Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾Ñ— Ñ€ÑƒÑ…Ð¾Ð¼Ð¾Ñ— ÐºÑ€Ð°Ð¿ÐºÐ¸]"
 
-#: elf32-arm.c:14973
+#: elf32-arm.c:15163
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:14976
+#: elf32-arm.c:15166
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:14982
+#: elf32-arm.c:15172
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ� EABI>"
 
-#: elf32-arm.c:14989
+#: elf32-arm.c:15179
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»]"
 
-#: elf32-arm.c:14995
+#: elf32-arm.c:15185
 #, c-format
 msgid " [FDPIC ABI supplement]"
 msgstr " [Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� ABI FDPIC]"
 
-#: elf32-arm.c:15000
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7040
+#: elf32-arm.c:15190 elfnn-aarch64.c:7335
 #, c-format
 msgid "<Unrecognised flag bits set>"
 msgstr "<Ð�ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ð½Ð°Ð±Ñ–Ñ€ Ð±Ñ–Ñ‚Ñ–Ð² Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–Ð²>"
 
-#: elf32-arm.c:15117 elf32-i386.c:1529 elf32-s390.c:960 elf32-tic6x.c:2783
-#: elf32-tilepro.c:1479 elf32-xtensa.c:1029 elf64-s390.c:882
-#: elf64-x86-64.c:1865 elfxx-sparc.c:1422 elfxx-tilegx.c:1700
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7329
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:539
+#: elf32-arm.c:15307 elf32-i386.c:1524 elf32-s390.c:925 elf32-tic6x.c:2724
+#: elf32-tilepro.c:1443 elf32-xtensa.c:1093 elf64-s390.c:847
+#: elf64-x86-64.c:1902 elfxx-sparc.c:1386 elfxx-tilegx.c:1664
+#: elfnn-aarch64.c:7606 elfnn-riscv.c:525
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: %d"
 
-#: elf32-arm.c:15508
+#: elf32-arm.c:15696
 #, c-format
 msgid "FDPIC does not yet support %s relocation to become dynamic for executable"
 msgstr "Ð£ FDPIC Ñ‰Ðµ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð´Ð»Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð²"
 
-#: elf32-arm.c:16558 elf32-csky.c:1931 elf32-hppa.c:2090 elf32-lm32.c:1998
-#: elf32-m32r.c:2110 elf32-metag.c:2797 elf32-nds32.c:4330 elf32-or1k.c:2858
-#: elf32-ppc.c:5469 elf32-s390.c:1854 elf32-sh.c:2975 elf32-tic6x.c:3252
-#: elf32-tilepro.c:2245 elf64-ppc.c:9023 elf64-s390.c:1791 elfxx-sparc.c:2435
-#: elfxx-tilegx.c:2491 elfxx-x86.c:571
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:8677
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:1142
-#, c-format
-msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
-msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�\n"
-
-#: elf32-arm.c:16854
+#: elf32-arm.c:16939
 #, c-format
 msgid "errors encountered processing file %pB"
 msgstr "Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ„Ð°Ð¹Ð»Ð° Ñ�Ñ‚Ð°Ð»Ð¸Ñ�Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸, %pB"
 
-#: elf32-arm.c:17301 elflink.c:12556 elflink.c:12603
+#: elf32-arm.c:17326 elflink.c:12818 elflink.c:12865
 #, c-format
 msgid "could not find section %s"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s"
 
-#: elf32-arm.c:18512
+#: elf32-arm.c:18550
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub is allocated in unsafe location"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Cortex-A8 Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð¾ Ð·Ð° Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ"
 
 #. There's not much we can do apart from complain if this
 #. happens.
-#: elf32-arm.c:18539
+#: elf32-arm.c:18577
 #, c-format
 msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Cortex-A8 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)"
 
-#: elf32-arm.c:19366 elf32-arm.c:19388
+#: elf32-arm.c:19404 elf32-arm.c:19426
 #, c-format
 msgid "%pB: error: VFP11 veneer out of range"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÐ° VFP11 Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼"
 
-#: elf32-arm.c:19439
+#: elf32-arm.c:19477
 #, c-format
 msgid "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range by %<PRId64> bytes; cannot encode branch instruction"
 msgstr "%pB(%#<PRIx64>): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX. ÐŸÐµÑ€ÐµÑ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ Ð½Ð° %<PRId64> Ð±Ð°Ð¹Ñ‚Ñ–Ð². ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ."
 
-#: elf32-arm.c:19478
+#: elf32-arm.c:19516
 #, c-format
 msgid "%pB: error: cannot create STM32L4XX veneer"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX"
 
-#: elf32-arm.c:20567
+#: elf32-arm.c:20600
 #, c-format
 msgid "error: %pB is already in final BE8 format"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñƒ Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– BE8"
 
-#: elf32-arm.c:20643
+#: elf32-arm.c:20676
 #, c-format
 msgid "error: source object %pB has EABI version %d, but target %pB has EABI version %d"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±â€™Ñ”ÐºÑ‚-Ð´Ð¶ÐµÑ€ÐµÐ»Ð¾, %pB, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÑ€Ñ�Ñ–ÑŽ EABI %d, Ð° Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�, %pB, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÑ€Ñ�Ñ–ÑŽ EABI %d"
 
-#: elf32-arm.c:20658
+#: elf32-arm.c:20691
 #, c-format
 msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� APCS-%d, Ñ‚Ð¾Ð´Ñ– Ñ�Ðº %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” APCS-%d"
 
-#: elf32-arm.c:20668
+#: elf32-arm.c:20701
 #, c-format
 msgid "error: %pB passes floats in float registers, whereas %pB passes them in integer registers"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ‡Ð¸Ñ�Ð»Ð° Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ Ð´Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð° %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ—Ñ… Ñƒ Ñ†Ñ–Ð»Ð¾Ñ‡Ð¸Ñ�ÐµÐ»ÑŒÐ½Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸"
 
-#: elf32-arm.c:20672
+#: elf32-arm.c:20705
 #, c-format
 msgid "error: %pB passes floats in integer registers, whereas %pB passes them in float registers"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ†Ñ–Ð»Ñ– Ñ‡Ð¸Ñ�Ð»Ð° Ð´Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð° %pB Ð¿ÐµÑ€ÐµÐ´Ð°Ñ” Ñ—Ñ… Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ"
 
-#: elf32-arm.c:20682 elf32-arm.c:20686 elf32-arm.c:20696
+#: elf32-arm.c:20715 elf32-arm.c:20719 elf32-arm.c:20729
 #, c-format
 msgid "error: %pB uses %s instructions, whereas %pB does not"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ %s, Ð° Ñƒ %pB â€” Ð½Ñ–"
 
-#: elf32-arm.c:20700
+#: elf32-arm.c:20733
 #, c-format
 msgid "error: %pB does not use %s instructions, whereas %pB does"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ %s, Ð° Ñƒ %pB â€” Ñ‚Ð°Ðº"
 
-#: elf32-arm.c:20719
+#: elf32-arm.c:20752
 #, c-format
 msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ñ– FP, Ð° Ñƒ %pB â€” Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ñ– FP"
 
-#: elf32-arm.c:20723
+#: elf32-arm.c:20756
 #, c-format
 msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ñ– FP, Ð° Ñƒ %pB â€” Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ñ– FP"
 
-#: elf32-arm.c:20737
+#: elf32-arm.c:20770
 #, c-format
 msgid "warning: %pB supports interworking, whereas %pB does not"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ, Ð° Ñƒ %pB Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-arm.c:20743
+#: elf32-arm.c:20776
 #, c-format
 msgid "warning: %pB does not support interworking, whereas %pB does"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸, Ð° Ñƒ %pB Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-avr.c:1518 elf32-bfin.c:3135 elf32-cris.c:2041 elf32-epiphany.c:577
-#: elf32-fr30.c:602 elf32-frv.c:4057 elf32-ft32.c:502 elf32-ip2k.c:1493
-#: elf32-iq2000.c:701 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1998
-#: elf32-moxie.c:296 elf32-msp430.c:1366 elf32-mt.c:406 elf32-or1k.c:1767
-#: elf32-tilepro.c:3514 elf32-v850.c:2299 elf32-visium.c:689
-#: elf32-xstormy16.c:939 elf64-mmix.c:1549 elfxx-tilegx.c:3878
+#: elf32-avr.c:1516 elf32-bfin.c:3134 elf32-cris.c:2041 elf32-epiphany.c:573
+#: elf32-fr30.c:602 elf32-frv.c:4056 elf32-ft32.c:502 elf32-ip2k.c:1488
+#: elf32-iq2000.c:699 elf32-m32c.c:632 elf32-mep.c:534 elf32-metag.c:1994
+#: elf32-moxie.c:296 elf32-msp430.c:1375 elf32-mt.c:406 elf32-or1k.c:1825
+#: elf32-tilepro.c:3388 elf32-v850.c:2298 elf32-visium.c:688
+#: elf32-xstormy16.c:937 elf64-bpf.c:521 elf64-mmix.c:1549 elfxx-tilegx.c:3752
 msgid "internal error: dangerous relocation"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-avr.c:3327
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3126
+#: elf32-avr.c:3327 elfnn-aarch64.c:3221
 #, c-format
 msgid "cannot create stub entry %s"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %s"
 
-#: elf32-bfin.c:106 elf32-bfin.c:362
+#: elf32-bfin.c:107 elf32-bfin.c:363
 msgid "relocation should be even number"
 msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿Ð°Ñ€Ð½Ð¸Ð¼ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼"
 
-#: elf32-bfin.c:1585
+#: elf32-bfin.c:1584
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: elf32-bfin.c:1617 elf32-i386.c:3449 elf32-m68k.c:3976 elf32-s390.c:3269
-#: elf64-s390.c:3219 elf64-x86-64.c:3896
+#: elf32-bfin.c:1616 elf32-i386.c:3443 elf32-m68k.c:4008 elf32-s390.c:3140
+#: elf64-s390.c:3089 elf64-x86-64.c:4112
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° %d"
 
-#: elf32-bfin.c:2638
+#: elf32-bfin.c:2641
 #, c-format
 msgid "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero addend"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Â«%pA+%#<PRIx64>Â» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼"
 
-#: elf32-bfin.c:2655
+#: elf32-bfin.c:2658
 msgid "relocation references symbol not defined in the module"
 msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ–"
 
-#: elf32-bfin.c:2752
+#: elf32-bfin.c:2755
 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
 msgstr "R_BFIN_FUNCDESC Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼"
 
-#: elf32-bfin.c:2793 elf32-bfin.c:2916
+#: elf32-bfin.c:2795 elf32-bfin.c:2916
 msgid "cannot emit fixups in read-only section"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð°Ð´Ñ€ÐµÑ�Ð½Ñƒ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÑƒ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-bfin.c:2824 elf32-bfin.c:2954 elf32-lm32.c:1049 elf32-sh.c:4511
+#: elf32-bfin.c:2825 elf32-bfin.c:2953 elf32-lm32.c:1006 elf32-sh.c:4389
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-bfin.c:2874
+#: elf32-bfin.c:2875
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
 msgstr "R_BFIN_FUNCDESC_VALUE Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼"
 
-#: elf32-bfin.c:3039
+#: elf32-bfin.c:3038
 msgid "relocations between different segments are not supported"
 msgstr "Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ñ–Ð¶ Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-bfin.c:3040
+#: elf32-bfin.c:3039
 msgid "warning: relocation references a different segment"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚"
 
-#: elf32-bfin.c:4787 elf32-frv.c:6603
+#: elf32-bfin.c:4770 elf32-frv.c:6584
 #, c-format
 msgid "%pB: cannot link non-fdpic object file into fdpic executable"
 msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ð½Ðµ-fdpic Ð´Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° fdpic"
 
-#: elf32-bfin.c:4791 elf32-frv.c:6607
+#: elf32-bfin.c:4774 elf32-frv.c:6588
 #, c-format
 msgid "%pB: cannot link fdpic object file into non-fdpic executable"
 msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» fdpic Ð´Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ-fdpic"
 
-#: elf32-bfin.c:4941
+#: elf32-bfin.c:4924
 #, c-format
 msgid "*** check this relocation %s"
 msgstr "*** Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ñ‚Ðµ Ñ†Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %s"
 
-#: elf32-bfin.c:5057
+#: elf32-bfin.c:5040
 msgid "the bfin target does not currently support the generation of copy relocations"
 msgstr "Ñƒ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ–Ð¹ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ†Ñ–Ð»Ñ– bfin Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-bfin.c:5351 elf32-cr16.c:2803 elf32-m68k.c:4390
+#: elf32-bfin.c:5334 elf32-cr16.c:2731 elf32-m68k.c:4422
 msgid "unsupported relocation type"
 msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
@@ -2044,16 +2133,16 @@ msgid "%pB, section %pA: no PLT for relo
 msgstr "%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð½ÐµÐ¼Ð°Ñ” PLT Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
 #: elf32-cris.c:1193 elf32-cris.c:1326 elf32-cris.c:1591 elf32-cris.c:1674
-#: elf32-cris.c:1827 elf32-tic6x.c:2619
+#: elf32-cris.c:1827 elf32-tic6x.c:2560
 msgid "[whose name is lost]"
 msgstr "[Ñ‡Ð¸ÑŽ Ð½Ð°Ð·Ð²Ñƒ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾]"
 
-#: elf32-cris.c:1311 elf32-tic6x.c:2603
+#: elf32-cris.c:1311 elf32-tic6x.c:2544
 #, c-format
 msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against local symbol"
 msgstr "%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼, %<PRId64>, Ñ‰Ð¾Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2612
+#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2553
 #, c-format
 msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
 msgstr "%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼, %<PRId64>, Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
@@ -2113,71 +2202,71 @@ msgstr ""
 "%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA:\n"
 "  Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ñ–Ð»ÑŽÐ¹Ñ‚Ðµ Ð· -fPIC"
 
-#: elf32-cris.c:3747
+#: elf32-cris.c:3700
 #, c-format
 msgid "%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr "%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ñ–Ð»ÑŽÐ¹Ñ‚Ðµ Ð· -fPIC"
 
-#: elf32-cris.c:3860
+#: elf32-cris.c:3812
 msgid "unexpected machine number"
 msgstr "Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¼Ð°ÑˆÐ¸Ð½Ð¸"
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3864
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr " [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ� _]"
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3867
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 Ñ‚Ð° v32]"
 
-#: elf32-cris.c:3917
+#: elf32-cris.c:3870
 #, c-format
 msgid " [v32]"
 msgstr " [v32]"
 
-#: elf32-cris.c:3961
+#: elf32-cris.c:3914
 #, c-format
 msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð¾Ð¼ Â«_Â», Ð°Ð»Ðµ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ñ–Ð²"
 
-#: elf32-cris.c:3962
+#: elf32-cris.c:3915
 #, c-format
 msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð° Â«_Â», Ð°Ð»Ðµ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ð¼Ð¸ Ð· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð°Ð¼Ð¸ Â«_Â»"
 
-#: elf32-cris.c:3981
+#: elf32-cris.c:3934
 #, c-format
 msgid "%pB contains CRIS v32 code, incompatible with previous objects"
 msgstr "Ñƒ %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´ v32 CRIS, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸"
 
-#: elf32-cris.c:3983
+#: elf32-cris.c:3936
 #, c-format
 msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
 msgstr "Ñƒ %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ñ” ÐºÐ¾Ð´Ð¾Ð¼ v32 CRIS, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸"
 
-#: elf32-csky.c:2066
+#: elf32-csky.c:2022
 msgid "GOT table size out of range"
 msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– GOT Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ"
 
-#: elf32-csky.c:2917
+#: elf32-csky.c:2802
 #, c-format
 msgid "warning: unrecognized arch eflag '%#lx'"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ e-Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸, Â«%#lxÂ»"
 
-#: elf32-csky.c:2977
+#: elf32-csky.c:2862
 #, c-format
 msgid "%pB: machine flag conflict with target"
 msgstr "%pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ–Ð· Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼"
 
-#: elf32-csky.c:2990
+#: elf32-csky.c:2875
 #, c-format
 msgid "warning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%s"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ„Ð°Ð¹Ð»Ð° %pB ck%s ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†ÐµÐ¼ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� ck%s, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ ck%s"
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4225 elf32-i386.c:351
+#: elf32-csky.c:4118 elf32-i386.c:350
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x"
@@ -2193,7 +2282,7 @@ msgid "jump (PC rel26) to section (%s) n
 msgstr "Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ñƒ (PC rel26) Ð´Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%s)"
 
 #. Only if it's not an unresolved symbol.
-#: elf32-epiphany.c:573 elf32-ip2k.c:1489
+#: elf32-epiphany.c:569 elf32-ip2k.c:1484
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ñ–Ð¶ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸ Ð°Ð´Ñ€ÐµÑ� data Ñ‚Ð° insn"
 
@@ -2201,96 +2290,96 @@ msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿Ð
 msgid "relocation requires zero addend"
 msgstr "Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº"
 
-#: elf32-frv.c:2829
+#: elf32-frv.c:2832
 #, c-format
 msgid "%H: relocation to `%s+%v' may have caused the error above\n"
 msgstr "%H: Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ� Ð¿Ñ€Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ, Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ðµ Ð²Ð¸Ñ‰Ðµ, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ÐµÐ½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ Ð´Ð¾ Â«%s+%vÂ»\n"
 
-#: elf32-frv.c:2846
+#: elf32-frv.c:2849
 msgid "%H: relocation references symbol not defined in the module\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ–\n"
 
-#: elf32-frv.c:2922
+#: elf32-frv.c:2925
 msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
 msgstr "%H: R_FRV_GETTLSOFF Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ (call)\n"
 
-#: elf32-frv.c:2963
+#: elf32-frv.c:2966
 msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESC12 Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ lddi\n"
 
-#: elf32-frv.c:3034
+#: elf32-frv.c:3037
 msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESCHI Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ sethi\n"
 
-#: elf32-frv.c:3071
+#: elf32-frv.c:3074
 msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
 msgstr "%H: R_FRV_GOTTLSDESCLO Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ setlo Ð°Ð±Ð¾ setlos\n"
 
-#: elf32-frv.c:3118
+#: elf32-frv.c:3121
 msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
 msgstr "%H: R_FRV_TLSDESC_RELAX Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ ldd\n"
 
-#: elf32-frv.c:3202
+#: elf32-frv.c:3205
 msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
 msgstr "%H: R_FRV_GETTLSOFF_RELAX Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ calll\n"
 
-#: elf32-frv.c:3256
+#: elf32-frv.c:3259
 msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFF12 Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ ldi\n"
 
-#: elf32-frv.c:3286
+#: elf32-frv.c:3289
 msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFFHI Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ sethi\n"
 
-#: elf32-frv.c:3315
+#: elf32-frv.c:3318
 msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
 msgstr "%H: R_FRV_GOTTLSOFFLO Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ setlo Ð°Ð±Ð¾ setlos\n"
 
-#: elf32-frv.c:3345
+#: elf32-frv.c:3348
 msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
 msgstr "%H: R_FRV_TLSOFF_RELAX Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ ld\n"
 
-#: elf32-frv.c:3390
+#: elf32-frv.c:3393
 msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
 msgstr "%H: R_FRV_TLSMOFFHI Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ sethi\n"
 
-#: elf32-frv.c:3417
+#: elf32-frv.c:3420
 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
 msgstr "R_FRV_TLSMOFFLO Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ setlo Ð°Ð±Ð¾ setlos\n"
 
-#: elf32-frv.c:3538 elf32-frv.c:3660
+#: elf32-frv.c:3541 elf32-frv.c:3661
 msgid "%H: %s references dynamic symbol with nonzero addend\n"
 msgstr "%H: %s Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼\n"
 
-#: elf32-frv.c:3580 elf32-frv.c:3703
+#: elf32-frv.c:3582 elf32-frv.c:3703
 msgid "%H: cannot emit fixups in read-only section\n"
 msgstr "%H: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð°Ð´Ñ€ÐµÑ�Ð½Ñƒ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÑƒ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�\n"
 
-#: elf32-frv.c:3611 elf32-frv.c:3746
+#: elf32-frv.c:3612 elf32-frv.c:3745
 msgid "%H: cannot emit dynamic relocations in read-only section\n"
 msgstr "%H: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�\n"
 
-#: elf32-frv.c:3918
+#: elf32-frv.c:3917
 #, c-format
 msgid "%H: reloc against `%s' references a different segment\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚\n"
 
-#: elf32-frv.c:4069
+#: elf32-frv.c:4068
 #, c-format
 msgid "%H: reloc against `%s': %s\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: %s\n"
 
-#: elf32-frv.c:6514
+#: elf32-frv.c:6495
 #, c-format
 msgid "%pB: compiled with %s and linked with modules that use non-pic relocations"
 msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð· %s Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñƒ Ñ�ÐºÐ¸Ñ… Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-pic"
 
-#: elf32-frv.c:6568 elf32-iq2000.c:832 elf32-m32c.c:876
+#: elf32-frv.c:6549 elf32-iq2000.c:830 elf32-m32c.c:876
 #, c-format
 msgid "%pB: compiled with %s and linked with modules compiled with %s"
 msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð· %s Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ð· %s"
 
-#: elf32-frv.c:6581
+#: elf32-frv.c:6562
 #, c-format
 msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½ÑˆÑ– Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ– Ð¿Ð¾Ð»Ñ� e_flags (%#x) Ð½Ñ–Ð¶ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)"
@@ -2300,137 +2389,140 @@ msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚Ñ
 msgid "%pB: relocations in generic ELF (EM: %d)"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¼Ñƒ ELF (EM: %d)"
 
-#: elf32-hppa.c:834 elf32-hppa.c:3511
+#: elf32-hppa.c:763 elf32-hppa.c:844 elf64-ppc.c:11859
+msgid "%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð²'Ñ�Ð·Ð°Ñ‚Ð¸ %pA Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ�. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð±ÐµÐ· --enable-non-contiguous-regions.\n"
+
+#: elf32-hppa.c:865 elf32-hppa.c:3407
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´Ð¾Ñ�Ñ�Ð³Ñ‚Ð¸ %s, Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -ffunction-sections"
 
-#: elf32-hppa.c:1248
+#: elf32-hppa.c:1243
 #, c-format
 msgid "%pB: relocation %s can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC"
 
-#: elf32-hppa.c:2688
+#: elf32-hppa.c:2584
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr "%pB: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� %s"
 
-#: elf32-hppa.c:3344
+#: elf32-hppa.c:3240
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared link"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ñ— Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ %s Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %#x Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ– Ð½ÐµÑ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-hppa.c:4140
+#: elf32-hppa.c:4036
 #, c-format
 msgid "%s has both normal and TLS relocs"
 msgstr "%s Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS"
 
-#: elf32-hppa.c:4158
+#: elf32-hppa.c:4054
 #, c-format
 msgid "%pB:%s has both normal and TLS relocs"
 msgstr "%pB:%s Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS"
 
-#: elf32-hppa.c:4217
+#: elf32-hppa.c:4113
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ %s Ð´Ð»Ñ� %s"
 
-#: elf32-hppa.c:4521
+#: elf32-hppa.c:4417
 msgid ".got section not immediately after .plt section"
 msgstr "Ð Ð¾Ð·Ð´Ñ–Ð» .got Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ .plt"
 
-#: elf32-i386.c:1178 elf64-x86-64.c:1377
+#: elf32-i386.c:1169 elf64-x86-64.c:1382
 #, c-format
 msgid "%pB: TLS transition from %s to %s against `%s' at %#<PRIx64> in section `%pA' failed"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� TLS Ð· %s Ð´Ð¾ %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð·Ð°Ð·Ð½Ð°Ð»Ð¾ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–"
 
-#: elf32-i386.c:1269
+#: elf32-i386.c:1272
 #, c-format
 msgid "%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object"
 msgstr "%pB: Ð±ÐµÐ·Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´Ð½Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOT R_386_GOT32X Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð±ÐµÐ· Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-i386.c:1726 elf32-s390.c:1188 elf32-sh.c:5662 elf32-tilepro.c:1592
-#: elf32-xtensa.c:1203 elf64-s390.c:1120 elfxx-sparc.c:1591
-#: elfxx-tilegx.c:1805
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:451
+#: elf32-i386.c:1721 elf32-s390.c:1153 elf32-sh.c:5494 elf32-tilepro.c:1556
+#: elf32-xtensa.c:1265 elf64-s390.c:1085 elfxx-sparc.c:1555
+#: elfxx-tilegx.c:1769 elfnn-riscv.c:437
 #, c-format
 msgid "%pB: `%s' accessed both as normal and thread local symbol"
 msgstr "%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ‚Ð°Ðº Ñ– Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-i386.c:1798
+#: elf32-i386.c:1793
 #, c-format
 msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
 msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð²Ð¸ÐºÐ»Ð¸Ðº Ð±ÐµÐ· PIC IFUNC Â«%sÂ»"
 
-#: elf32-i386.c:2379 elf64-x86-64.c:2670
+#: elf32-i386.c:2373 elf64-x86-64.c:2721
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
 msgstr "%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ STT_GNU_IFUNC Â«%sÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-i386.c:2412 elf32-i386.c:3660 elf32-i386.c:3801 elf64-x86-64.c:2727
-#: elf64-x86-64.c:4069 elf64-x86-64.c:4225
+#: elf32-i386.c:2406 elf32-i386.c:3654 elf32-i386.c:3795 elf64-x86-64.c:2778
+#: elf64-x86-64.c:4285 elf64-x86-64.c:4441
 #, c-format
 msgid "Local IFUNC function `%s' in %pB\n"
 msgstr "Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� IFUNC Â«%sÂ» Ñƒ %pB\n"
 
-#: elf32-i386.c:2569
+#: elf32-i386.c:2563
 #, c-format
 msgid "%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object"
 msgstr "%pB: Ð±ÐµÐ·Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´Ð½Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð±ÐµÐ· Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-i386.c:2604 elf64-x86-64.c:2919
+#: elf32-i386.c:2598 elf64-x86-64.c:2977
 msgid "hidden symbol"
 msgstr "Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2922
+#: elf32-i386.c:2601 elf64-x86-64.c:2980
 msgid "internal symbol"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-i386.c:2610 elf64-x86-64.c:2925
+#: elf32-i386.c:2604 elf64-x86-64.c:2983
 msgid "protected symbol"
 msgstr "Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-i386.c:2613 elf64-x86-64.c:2928
+#: elf32-i386.c:2607 elf64-x86-64.c:2986
 msgid "symbol"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-i386.c:2619
+#: elf32-i386.c:2613
 #, c-format
 msgid "%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_386_GOTOFF Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ %s, Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-i386.c:2632
+#: elf32-i386.c:2626
 #, c-format
 msgid "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"
 msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ R_386_GOTOFF Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— %s Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-ip2k.c:856 elf32-ip2k.c:862 elf32-ip2k.c:929 elf32-ip2k.c:935
+#: elf32-ip2k.c:855 elf32-ip2k.c:861 elf32-ip2k.c:928 elf32-ip2k.c:934
 msgid "ip2k relaxer: switch table without complete matching relocation information."
 msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ ip2k: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½ÑŒ Ð±ÐµÐ· Ð¿Ð¾Ð²Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñ�Ñ‚Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ."
 
-#: elf32-ip2k.c:879 elf32-ip2k.c:962
+#: elf32-ip2k.c:878 elf32-ip2k.c:961
 msgid "ip2k relaxer: switch table header corrupt."
 msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ ip2k: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½ÑŒ"
 
-#: elf32-ip2k.c:1302
+#: elf32-ip2k.c:1297
 #, c-format
 msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº ip2k: Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— Ñ‰Ð¾Ð´Ð¾ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ Ñƒ %#<PRIx64> (Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� = %#<PRIx64>)."
 
-#: elf32-ip2k.c:1321
+#: elf32-ip2k.c:1316
 #, c-format
 msgid "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº ip2k: Ð·Ð°Ð¹Ð²Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� Ñ‰Ð¾Ð´Ð¾ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ Ñƒ %#<PRIx64> (Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� = %#<PRIx64>)."
 
-#: elf32-lm32.c:651 elf32-nios2.c:3141
+#: elf32-lm32.c:608 elf32-nios2.c:3148
 msgid "global pointer relative relocation when _gp not defined"
 msgstr "Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð±ÐµÐ· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� _gp"
 
-#: elf32-lm32.c:706 elf32-nios2.c:3578
+#: elf32-lm32.c:663 elf32-nios2.c:3585
 msgid "global pointer relative address out of range"
 msgstr "Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ"
 
-#: elf32-lm32.c:1002
+#: elf32-lm32.c:959
 #, c-format
 msgid "internal error: addend should be zero for %s"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð»Ñ� %s"
@@ -2439,136 +2531,141 @@ msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ
 msgid "SDA relocation when _SDA_BASE_ not defined"
 msgstr "Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� SDA Ð±ÐµÐ· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� _SDA_BASE_"
 
-#: elf32-m32r.c:2984 elf32-microblaze.c:1101 elf32-microblaze.c:1149
+#: elf32-m32r.c:2799 elf32-microblaze.c:1097 elf32-microblaze.c:1145
 #, c-format
 msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)"
 msgstr "%pB: Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%s) Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%pA)"
 
-#: elf32-m32r.c:3487
+#: elf32-m32r.c:3302
 #, c-format
 msgid "%pB: instruction set mismatch with previous modules"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð½Ð°Ð±Ð¾Ñ€Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ñ†ÑŒÐ¾Ð³Ð¾ Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð°Ð¼ ÐºÐ¾Ð¼Ð°Ð½Ð´ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²"
 
-#: elf32-m32r.c:3508 elf32-nds32.c:6992
+#: elf32-m32r.c:3323 elf32-nds32.c:6855
 #, c-format
 msgid "private flags = %lx"
 msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx"
 
-#: elf32-m32r.c:3513
+#: elf32-m32r.c:3328
 #, c-format
 msgid ": m32r instructions"
 msgstr ": ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32r"
 
-#: elf32-m32r.c:3514
+#: elf32-m32r.c:3329
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32rx"
 
-#: elf32-m32r.c:3515
+#: elf32-m32r.c:3330
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32r2"
 
-#: elf32-m68hc1x.c:1116
+#: elf32-m68hc1x.c:1136
 #, c-format
 msgid "reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
 msgstr "Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº Ñƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ–."
 
-#: elf32-m68hc1x.c:1150
+#: elf32-m68hc1x.c:1167
 #, c-format
 msgid "XGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you must manually offset the address, and possibly manage the page, in your code."
 msgstr "Ð�Ð´Ñ€ÐµÑ�Ð° XGATE (%lx) Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð° Ð¿Ð¾Ð·Ð° RAM Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� (0xE000-0xFFFF), Ñ‚Ð¾Ð¼Ñƒ Ð²Ð°Ð¼ Ñ�Ð»Ñ–Ð´ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñ–, Ð¹Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾, ÐºÐµÑ€ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¾ÑŽ Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ñƒ Ð²Ð°ÑˆÐ¾Ð¼Ñƒ ÐºÐ¾Ð´Ñ–."
 
-#: elf32-m68hc1x.c:1168
+#: elf32-m68hc1x.c:1183
 #, c-format
 msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)"
 msgstr "Ð·Ð°Ð½ÐµÑ�ÐµÐ½Ð° Ð´Ð¾ Ð±Ð°Ð½ÐºÑƒ Ð°Ð´Ñ€ÐµÑ�Ð° [%lx:%04lx] (%lx) Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ð±Ð°Ð½ÐºÑƒ Ð· Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ, Ð·Ð°Ð½ÐµÑ�ÐµÐ½Ð¾ÑŽ Ð´Ð¾ Ð±Ð°Ð½ÐºÑƒ, [%lx:%04lx] (%lx)"
 
-#: elf32-m68hc1x.c:1184
+#: elf32-m68hc1x.c:1198
 #, c-format
 msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
 msgstr "Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð·Ð°Ð½ÐµÑ�ÐµÐ½Ñƒ Ð´Ð¾ Ð±Ð°Ð½ÐºÑƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ [%lx:%04lx] Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñ– Ð°Ð´Ñ€ÐµÑ�, %04lx"
 
-#: elf32-m68hc1x.c:1225
+#: elf32-m68hc1x.c:1234
 #, c-format
 msgid "S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your code"
 msgstr "Ð�Ð´Ñ€ÐµÑ�Ð° S12 (%lx) Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð° Ð¿Ð¾Ð·Ð° RAM Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� (0x2000-x4000), Ñ‚Ð¾Ð¼Ñƒ Ð²Ð°Ð¼ Ñ�Ð»Ñ–Ð´ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ Ð²Ð°ÑˆÐ¾Ð¼Ñƒ ÐºÐ¾Ð´Ñ–"
 
-#: elf32-m68hc1x.c:1352
+#: elf32-m68hc1x.c:1358
 #, c-format
 msgid "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ñ– Ñ„Ð°Ð¹Ð»Ð¸ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� 16-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ†Ñ–Ð»Ð¸Ñ… (-mshort), Ð° Ñ€ÐµÑˆÑ‚Ñƒ Ñ„Ð°Ð¹Ð»Ñ–Ð² â€” Ð´Ð»Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ†Ñ–Ð»Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ»"
 
-#: elf32-m68hc1x.c:1359
+#: elf32-m68hc1x.c:1365
 #, c-format
 msgid "%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ñ– Ñ„Ð°Ð¹Ð»Ð¸ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ (-fshort-double), Ð° Ñ–Ð½ÑˆÑ– â€” Ð´Ð»Ñ� 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ."
 
-#: elf32-m68hc1x.c:1368
+#: elf32-m68hc1x.c:1374
 #, c-format
 msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ñ– Ñ„Ð°Ð¹Ð»Ð¸ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� HCS12, Ñ–Ð½ÑˆÑ– Ð¶ â€” Ð´Ð»Ñ� HC12"
 
-#: elf32-m68hc1x.c:1413 elf32-xgate.c:497
+#: elf32-m68hc1x.c:1419 elf32-xgate.c:497
 #, c-format
 msgid "[abi=32-bit int, "
 msgstr "[abi=32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ñ†Ñ–Ð»Ðµ, "
 
-#: elf32-m68hc1x.c:1415 elf32-xgate.c:499
+#: elf32-m68hc1x.c:1421 elf32-xgate.c:499
 #, c-format
 msgid "[abi=16-bit int, "
 msgstr "[abi=16-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ñ†Ñ–Ð»Ðµ, "
 
-#: elf32-m68hc1x.c:1418 elf32-xgate.c:502
+#: elf32-m68hc1x.c:1424 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
 msgstr "64-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ double, "
 
-#: elf32-m68hc1x.c:1420 elf32-xgate.c:504
+#: elf32-m68hc1x.c:1426 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr "32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ double, "
 
-#: elf32-m68hc1x.c:1423
+#: elf32-m68hc1x.c:1429
 #, c-format
 msgid "cpu=HC11]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC11]"
 
-#: elf32-m68hc1x.c:1425
+#: elf32-m68hc1x.c:1431
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HCS12]"
 
-#: elf32-m68hc1x.c:1427
+#: elf32-m68hc1x.c:1433
 #, c-format
 msgid "cpu=HC12]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC12]"
 
-#: elf32-m68hc1x.c:1430
+#: elf32-m68hc1x.c:1436
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ=Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð· Ð±Ð°Ð½ÐºÐ°Ð¼Ð¸]"
 
-#: elf32-m68hc1x.c:1432
+#: elf32-m68hc1x.c:1438
 #, c-format
 msgid " [memory=flat]"
 msgstr " [Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ=Ð¿Ð»Ð¾Ñ�ÐºÐ° Ð¼Ð¾Ð´ÐµÐ»ÑŒ]"
 
-#: elf32-m68hc1x.c:1435
+#: elf32-m68hc1x.c:1441
 #, c-format
 msgid " [XGATE RAM offsetting]"
 msgstr " [Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ RAM XGATE]"
 
-#: elf32-m68k.c:1216 elf32-m68k.c:1217 vms-alpha.c:7484 vms-alpha.c:7500
+#: elf32-m68k.c:1159 elf32-m68k.c:1167 elf32-ppc.c:3583 elf32-ppc.c:3591
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr "Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ», Ð° Ñƒ %pB â€” Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð°"
+
+#: elf32-m68k.c:1282 elf32-m68k.c:1283 vms-alpha.c:7664 vms-alpha.c:7680
 msgid "unknown"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾"
 
-#: elf32-m68k.c:1660
+#: elf32-m68k.c:1733
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� GOT: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð· 8-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ > %d"
 
-#: elf32-m68k.c:1667
+#: elf32-m68k.c:1740
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� GOT: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð· 8- Ð°Ð±Ð¾ 16-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ > %d"
@@ -2599,18 +2696,18 @@ msgstr "%pB Ñ– %pB Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾
 msgid "private flags = 0x%lx"
 msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = 0x%lx"
 
-#: elf32-metag.c:1863
+#: elf32-metag.c:1859
 #, c-format
 msgid "%pB(%pA): multiple TLS models are not supported"
 msgstr "%pB(%pA): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ¾Ñ… Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹ TLS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-metag.c:1866
+#: elf32-metag.c:1862
 #, c-format
 msgid "%pB(%pA): shared library symbol %s encountered whilst performing a static link"
 msgstr "%pB(%pA): Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� %s"
 
-#: elf32-microblaze.c:1544 elf32-tilepro.c:3155 elfxx-sparc.c:3538
-#: elfxx-tilegx.c:3543
+#: elf32-microblaze.c:1540 elf32-tilepro.c:3029 elfxx-sparc.c:3427
+#: elfxx-tilegx.c:3417
 #, c-format
 msgid "%pB: probably compiled without -fPIC?"
 msgstr "%pB: Ð¹Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð±ÐµÐ· -fPIC?"
@@ -2624,320 +2721,315 @@ msgstr "Ð²Ñ–Ð´Ð±ÑƒÐ²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð±ÑƒÐºÐ
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr "Ð²Ñ–Ð´Ð±ÑƒÐ²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ gp-Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-msp430.c:837 elf32-msp430.c:1151
+#: elf32-msp430.c:846 elf32-msp430.c:1160
 msgid "try enabling relaxation to avoid relocation truncations"
 msgstr "Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–ÑŽ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð´Ð»Ñ� ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ� Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ"
 
-#: elf32-msp430.c:1358
+#: elf32-msp430.c:1367
 msgid "internal error: branch/jump to an odd address detected"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð°Ð±Ð¾ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½ÐµÐ¿Ð°Ñ€Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elf32-msp430.c:2357
+#: elf32-msp430.c:2532
 #, c-format
 msgid "warning: %pB: unknown MSPABI object attribute %d"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° MSPABI %d"
 
-#: elf32-msp430.c:2456
+#: elf32-msp430.c:2633
 #, c-format
 msgid "error: %pB uses %s instructions but %pB uses %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s, Ð°Ð»Ðµ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s"
 
-#: elf32-msp430.c:2468
+#: elf32-msp430.c:2645
 #, c-format
 msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ñƒ %s, Ñ‚Ð¾Ð´Ñ– Ñ�Ðº %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ ÐºÐ¾Ð´Ñƒ %s"
 
-#: elf32-msp430.c:2480
+#: elf32-msp430.c:2658
 #, c-format
 msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð²ÐµÐ»Ð¸ÐºÐ¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ, Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— MSP430"
 
-#: elf32-msp430.c:2491
+#: elf32-msp430.c:2669
 #, c-format
 msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %s, Ñ‚Ð¾Ð´Ñ– Ñ�Ðº %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %s"
 
-#: elf32-msp430.c:2503
+#: elf32-msp430.c:2682
 #, c-format
 msgid "error: %pB uses the small code model but %pB uses the %s data model"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð¼Ð°Ð»Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ, Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %s"
 
-#: elf32-msp430.c:2515
+#: elf32-msp430.c:2694
 #, c-format
 msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð´Ð°Ð½Ð¸Ñ… %s, Ð° Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð»Ð¸ÑˆÐµ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— MSP430"
 
-#: elf32-nds32.c:3624
+#: elf32-msp430.c:2719
 #, c-format
-msgid "error: can't find symbol: %s"
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %s"
+msgid "error: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memory"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ð¾Ð¶Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð²ÐµÑ€Ñ…Ð½ÑŽ Ð´Ñ–Ð»Ñ�Ð½ÐºÑƒ Ð´Ð°Ð½Ð¸Ñ…, Ð°Ð»Ðµ %pB Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ñ‚Ðµ, Ñ‰Ð¾ Ð´Ð°Ð½Ñ– Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð¾ Ð»Ð¸ÑˆÐµ Ñƒ Ð½Ð¸Ð¶Ð½Ñ–Ð¹ Ð´Ñ–Ð»Ñ�Ð½Ñ†Ñ– Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ–"
 
-#: elf32-nds32.c:5639
+#: elf32-nds32.c:3625
 #, c-format
-msgid "%pB: relocation %s against `%s' can not be used whenmaking a shared object; recompile with -fPIC"
-msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC"
+msgid "error: can't find symbol: %s"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %s"
 
-#: elf32-nds32.c:5669
+#: elf32-nds32.c:5528
 #, c-format
 msgid "%pB: warning: %s unsupported in shared mode"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-nds32.c:5795
+#: elf32-nds32.c:5654
 #, c-format
 msgid "%pB: warning: unaligned access to GOT entry"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GOT"
 
-#: elf32-nds32.c:5836
+#: elf32-nds32.c:5695
 #, c-format
 msgid "%pB: warning: relocate SDA_BASE failed"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� SDA_BASE"
 
-#: elf32-nds32.c:5858
+#: elf32-nds32.c:5717
 #, c-format
 msgid "%pB(%pA): warning: unaligned small data access of type %d"
 msgstr "%pB(%pA): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñƒ %d"
 
-#: elf32-nds32.c:6784
+#: elf32-nds32.c:6643
 #, c-format
 msgid "%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð² Ð²ÐµÐºÑ‚Ð¾Ñ€Ñ–Ð² ISR Ñ–Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ– Ñ” %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸, Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ– Ñ” %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸"
 
-#: elf32-nds32.c:6828
+#: elf32-nds32.c:6691
 #, c-format
 msgid "%pB: warning: endian mismatch with previous modules"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ–Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
-#: elf32-nds32.c:6842
+#: elf32-nds32.c:6705
 #, c-format
 msgid "%pB: warning: older version of object file encountered, please recompile with current tool chain"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ�Ñ‚Ð°Ñ€Ñ–ÑˆÑƒ Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°. Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¼ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð²."
 
-#: elf32-nds32.c:6930
+#: elf32-nds32.c:6793
 #, c-format
 msgid "%pB: error: ABI mismatch with previous modules"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ABI Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
-#: elf32-nds32.c:6940
+#: elf32-nds32.c:6803
 #, c-format
 msgid "%pB: error: instruction set mismatch with previous modules"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð½Ð°Ð±Ð¾Ñ€Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ñ†ÑŒÐ¾Ð³Ð¾ Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð°Ð¼ ÐºÐ¾Ð¼Ð°Ð½Ð´ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²"
 
-#: elf32-nds32.c:6967
+#: elf32-nds32.c:6830
 #, c-format
 msgid "%pB: warning: incompatible elf-versions %s and %s"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ð²ÐµÑ€Ñ�Ñ–Ñ— elf, %s Ñ‚Ð° %s"
 
-#: elf32-nds32.c:6998
+#: elf32-nds32.c:6861
 #, c-format
 msgid ": n1 instructions"
 msgstr ": Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— n1"
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:6864
 #, c-format
 msgid ": n1h instructions"
 msgstr ": Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— n1h"
 
-#: elf32-nds32.c:9462
+#: elf32-nds32.c:9316
 #, c-format
 msgid "%pB: error: search_nds32_elf_blank reports wrong node"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: search_nds32_elf_blank Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»Ñ�Ñ” Ð¿Ñ€Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²ÑƒÐ·Ð¾Ð»"
 
-#: elf32-nds32.c:9722
+#: elf32-nds32.c:9576
 #, c-format
 msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¾ %#<PRIx64>."
 
-#: elf32-nds32.c:12975
+#: elf32-nds32.c:12839
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
 msgstr "%pB: Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ðµ OMIT_FP Ñƒ %pA."
 
-#: elf32-nds32.c:12994
+#: elf32-nds32.c:12858
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
 msgstr "%pB: OMIT_FP Ð±ÐµÐ· Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸ÐºÐ° Ñƒ %pA."
 
-#: elf32-nds32.c:13275 reloc.c:8410
+#: elf32-nds32.c:13140 reloc.c:8470
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
 msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%pRÂ» Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ\n"
 
-#: elf32-nios2.c:2930
+#: elf32-nios2.c:2937
 #, c-format
 msgid "error: %pB: big-endian R2 is not supported"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² R2 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-nios2.c:3822
+#: elf32-nios2.c:3829
 #, c-format
-msgid "global pointer relative relocation at address 0x%08x when _gp not defined\n"
-msgstr "Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ 0x%08x, Ð²Ñ‚Ñ–Ð¼, _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾\n"
+msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+msgstr "Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64>, Ð²Ñ‚Ñ–Ð¼, _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾\n"
 
-#: elf32-nios2.c:3842
+#: elf32-nios2.c:3859
 #, c-format
-msgid "unable to reach %s (at 0x%08x) from the global pointer (at 0x%08x) because the offset (%d) is out of the allowed range, -32678 to 32767\n"
-msgstr "Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð´Ð¾Ñ�Ñ�Ð³Ñ‚Ð¸ %s (Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ 0x%08x) Ñ–Ð· Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° (Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ 0x%08x), Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� (%d) Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ, Ð²Ñ–Ð´ -32678 Ð´Ð¾ 32767.\n"
+msgid "unable to reach %s (at %#<PRIx64>) from the global pointer (at %#<PRIx64>) because the offset (%<PRId64>) is out of the allowed range, -32678 to 32767\n"
+msgstr "Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð´Ð¾Ñ�Ñ�Ð³Ñ‚Ð¸ %s (Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64>) Ñ–Ð· Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° (Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64>), Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� (%#<PRId64>) Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ, Ð²Ñ–Ð´ -32678 Ð´Ð¾ 32767.\n"
 
-#: elf32-nios2.c:4495 elf32-pru.c:928
+#: elf32-nios2.c:4514 elf32-pru.c:931
 msgid "relocation out of range"
 msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ"
 
-#: elf32-nios2.c:4505 elf32-pru.c:938 elf32-tic6x.c:2716
+#: elf32-nios2.c:4524 elf32-pru.c:941 elf32-tic6x.c:2657
 msgid "dangerous relocation"
 msgstr "Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-nios2.c:5378
+#: elf32-nios2.c:5367
 #, c-format
 msgid "dynamic variable `%s' is zero size"
 msgstr "Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð° Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð¼Ð°Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€"
 
-#: elf32-or1k.c:1177
+#: elf32-or1k.c:1210
 #, c-format
 msgid "%pB: Cannot handle relocation value size of %d"
 msgstr "%pB: Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ %d"
 
-#: elf32-or1k.c:1286
+#: elf32-or1k.c:1317
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d"
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1371
 #, c-format
 msgid "%pB: addend should be zero for plt relocations"
 msgstr "%pB: Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ plt Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼"
 
-#: elf32-or1k.c:1445
+#: elf32-or1k.c:1476
 #, c-format
 msgid "%pB: addend should be zero for got relocations"
 msgstr "%pB: Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ got Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼"
 
-#: elf32-or1k.c:1462
+#: elf32-or1k.c:1493
 #, c-format
 msgid "%pB: gotoff relocation against dynamic symbol %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� gotoff Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf32-or1k.c:1479 elf64-alpha.c:4455 elf64-alpha.c:4599
+#: elf32-or1k.c:1510 elf64-alpha.c:4421 elf64-alpha.c:4565
 #, c-format
 msgid "%pB: pc-relative relocation against dynamic symbol %s"
 msgstr "%pB: pc-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf32-or1k.c:1493
+#: elf32-or1k.c:1524
 #, c-format
 msgid "%pB: non-pic relocation against symbol %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-pic Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf32-or1k.c:1577
+#: elf32-or1k.c:1608
 #, c-format
 msgid "%pB: support for local dynamic not implemented"
 msgstr "%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ñ— Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸ Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾"
 
-#: elf32-or1k.c:1729
+#: elf32-or1k.c:1787
 #, c-format
 msgid "%pB: will not resolve runtime TLS relocation"
 msgstr "%pB: Ð½Ðµ Ð±ÑƒÐ´Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–"
 
-#: elf32-or1k.c:2074
+#: elf32-or1k.c:2120
 #, c-format
 msgid "%pB: bad relocation section name `%s'"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð½Ð°Ð·Ð²Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%sÂ»"
 
-#: elf32-or1k.c:3218
+#: elf32-or1k.c:3181
 #, c-format
 msgid "%pB: %s flag mismatch with previous modules"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ� %s Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼"
 
-#: elf32-ppc.c:986
+#: elf32-ppc.c:989
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr "Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ‚Ð¸ %s"
 
-#: elf32-ppc.c:1617
+#: elf32-ppc.c:1628
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ñƒ %pB"
 
-#: elf32-ppc.c:1637
+#: elf32-ppc.c:1647
 #, c-format
 msgid "unable to read in %s section from %pB"
 msgstr "Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ Ð· %pB"
 
-#: elf32-ppc.c:1679
+#: elf32-ppc.c:1689
 #, c-format
 msgid "warning: unable to set size of %s section in %pB"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %pB"
 
-#: elf32-ppc.c:1729
+#: elf32-ppc.c:1738
 msgid "failed to allocate space for new APUinfo section"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfo"
 
-#: elf32-ppc.c:1748
+#: elf32-ppc.c:1757
 msgid "failed to compute new APUinfo section"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfo"
 
-#: elf32-ppc.c:1751
+#: elf32-ppc.c:1760
 msgid "failed to install new APUinfo section"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfo"
 
-#: elf32-ppc.c:2853
+#: elf32-ppc.c:2861
 #, c-format
 msgid "%pB: relocation %s cannot be used when making a shared object"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-ppc.c:3587 elf32-ppc.c:3595
-#, c-format
-msgid "%pB uses hard float, %pB uses soft float"
-msgstr "Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ», Ð° Ñƒ %pB â€” Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð°"
-
-#: elf32-ppc.c:3603 elf32-ppc.c:3611
+#: elf32-ppc.c:3599 elf32-ppc.c:3607
 #, c-format
 msgid "%pB uses double-precision hard float, %pB uses single-precision hard float"
 msgstr "Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ, Ð° Ñƒ %pB â€” Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ð»Ñ� Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ"
 
-#: elf32-ppc.c:3630 elf32-ppc.c:3638
+#: elf32-ppc.c:3629 elf32-ppc.c:3637
 #, c-format
 msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
 msgstr "Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ 64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– Ð´Ð¾Ð²Ð³Ñ– Ñ†Ñ–Ð»Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ–Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ, Ð° Ñƒ %pB â€” 128-Ð±Ñ–Ñ‚Ð¾Ð²Ñ–"
 
-#: elf32-ppc.c:3646 elf32-ppc.c:3654
+#: elf32-ppc.c:3645 elf32-ppc.c:3653
 #, c-format
 msgid "%pB uses IBM long double, %pB uses IEEE long double"
 msgstr "Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð´Ð¾Ð²Ð³Ñ– Ñ†Ñ–Ð»Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ–Ð· Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾ÑŽ Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŽ IBM, Ð° Ñƒ %pB â€” IEEE"
 
-#: elf32-ppc.c:3721 elf32-ppc.c:3730
+#: elf32-ppc.c:3720 elf32-ppc.c:3729
 #, c-format
 msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
 msgstr "%pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÐºÑ‚Ð¾Ñ€Ð½Ð¸Ð¹ ABI AltiVec, %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÐºÑ‚Ð¾Ñ€Ð½Ð¸Ð¹ ABI SPE"
 
-#: elf32-ppc.c:3759 elf32-ppc.c:3768
+#: elf32-ppc.c:3758 elf32-ppc.c:3767
 #, c-format
 msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
 msgstr "Ñƒ %pB r3/r4 Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð´Ð»Ñ� Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ� Ð¼Ð°Ð»Ð¸Ñ… Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€, Ð° Ñƒ %pB Ð´Ð»Ñ� Ñ†ÑŒÐ¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ"
 
-#: elf32-ppc.c:3829
+#: elf32-ppc.c:3831
 #, c-format
 msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
 msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð· -mrelocatable Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–"
 
-#: elf32-ppc.c:3837
+#: elf32-ppc.c:3839
 #, c-format
 msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
 msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ð· -mrelocatable"
 
-#: elf32-ppc.c:3906
+#: elf32-ppc.c:3908
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
 msgstr "%pB(%pA+0x%lx): Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð¸Ð»ÑŽ 16A Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— 0x%08x"
 
-#: elf32-ppc.c:3925
+#: elf32-ppc.c:3927
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
 msgstr "%pB(%pA+0x%lx): Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚Ð¸Ð»ÑŽ 16D Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— 0x%08x"
 
-#: elf32-ppc.c:4028
+#: elf32-ppc.c:4030
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr "Ð¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ bss-plt Ñ‡ÐµÑ€ÐµÐ· %pB"
 
-#: elf32-ppc.c:4030
+#: elf32-ppc.c:4032
 msgid "bss-plt forced by profiling"
 msgstr "Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ð¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ bss-plt"
 
@@ -2945,40 +3037,40 @@ msgstr "Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ð¿Ñ€Ð
 #. could just mark this symbol to exclude it
 #. from tls optimization but it's safer to skip
 #. the entire optimization.
-#: elf32-ppc.c:4606 elf64-ppc.c:7724
+#: elf32-ppc.c:4606 elf64-ppc.c:8252
 #, c-format
 msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
 msgstr "%H: Ñƒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” __tls_get_addr, Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–ÑŽ TLS Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾.\n"
 
-#: elf32-ppc.c:5577 elf32-sh.c:3078 elf32-tilepro.c:2339 elfxx-sparc.c:2534
-#: elfxx-tilegx.c:2579
+#: elf32-ppc.c:5513 elf32-sh.c:3023 elf32-tilepro.c:2256 elfxx-sparc.c:2453
+#: elfxx-tilegx.c:2496
 #, c-format
 msgid "%pB: dynamic relocation in read-only section `%pA'\n"
 msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�\n"
 
-#: elf32-ppc.c:7457
+#: elf32-ppc.c:7356
 msgid "%P: %H: error: %s with unexpected instruction %x\n"
 msgstr "%P: %H: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ñ–Ð· Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾ÑŽ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ %x\n"
 
-#: elf32-ppc.c:7494
+#: elf32-ppc.c:7393
 msgid "%H: fixup branch overflow\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ñ–Ð· Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾ÑŽ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¾ÑŽ\n"
 
-#: elf32-ppc.c:7534 elf32-ppc.c:7570
+#: elf32-ppc.c:7433 elf32-ppc.c:7469
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ñ–Ð· Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾ÑŽ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ %#x"
 
-#: elf32-ppc.c:7634
+#: elf32-ppc.c:7533
 #, c-format
 msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° bss-plt -fPIC ifunc %s\n"
 
-#: elf32-ppc.c:7673 elf64-ppc.c:15220
+#: elf32-ppc.c:7572 elf64-ppc.c:16848
 msgid "%H: warning: %s unexpected insn %#x.\n"
 msgstr "%H: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s, Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#x.\n"
 
-#: elf32-ppc.c:7985
+#: elf32-ppc.c:7881
 #, c-format
 msgid "%H: non-zero addend on %s reloc against `%s'\n"
 msgstr "%H: Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ñ‚Ð¾Ðº Ð´Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»\n"
@@ -2991,54 +3083,54 @@ msgstr "%H: Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð
 #. local won't have the +32k reloc addend trick marking
 #. -fPIC code, so the linker won't know whether r30 is
 #. _GLOBAL_OFFSET_TABLE_ or pointing into a .got2 section.
-#: elf32-ppc.c:8017
+#: elf32-ppc.c:7913
 #, c-format
 msgid "%X%H: @local call to ifunc %s\n"
 msgstr "%X%H: Ð²Ð¸ÐºÐ»Ð¸Ðº @local ifunc %s\n"
 
-#: elf32-ppc.c:8187
+#: elf32-ppc.c:8091
 #, c-format
 msgid "%H: relocation %s for indirect function %s unsupported\n"
 msgstr "%H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
 
-#: elf32-ppc.c:8515 elf32-ppc.c:8546 elf32-ppc.c:8637 elf32-ppc.c:8725
+#: elf32-ppc.c:8425 elf32-ppc.c:8456 elf32-ppc.c:8547 elf32-ppc.c:8643
 #, c-format
 msgid "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
 msgstr "%pB: Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%s) Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� (%s)"
 
-#: elf32-ppc.c:8855 elf32-ppc.c:8873
-msgid "%P: %H: %s relocation unsupported for bss-plt\n"
-msgstr "%P: %H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð»Ñ� bss-plt Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
+#: elf32-ppc.c:8773 elf32-ppc.c:8791
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
+msgstr "%X%P: %H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð»Ñ� bss-plt Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
 
-#: elf32-ppc.c:8954
+#: elf32-ppc.c:8872
 #, c-format
 msgid "%H: error: %s against `%s' not a multiple of %u\n"
 msgstr "%H: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ð´Ð»Ñ� Â«%sÂ» Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ %u\n"
 
-#: elf32-ppc.c:8983
+#: elf32-ppc.c:8901
 #, c-format
 msgid "%H: unresolvable %s relocation against symbol `%s'\n"
 msgstr "%H: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»\n"
 
-#: elf32-ppc.c:9064
+#: elf32-ppc.c:8982
 #, c-format
 msgid "%H: %s reloc against `%s': error %d\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° %d\n"
 
-#: elf32-ppc.c:9959 elf64-ppc.c:15715
+#: elf32-ppc.c:9872
 msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n"
 msgstr "%X%P: Ð¿Ð¾Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚ÐµÐºÑ�Ñ‚Ñƒ Ñ– Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ñ… Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ GNU Ð¿Ñ€Ð¸Ð·Ð²ÐµÐ´Ðµ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ— Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿ÑƒÑ�ÐºÑƒ\n"
 
-#: elf32-ppc.c:9963 elf64-ppc.c:15719
+#: elf32-ppc.c:9876 elf64-ppc.c:17398
 msgid "%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime\n"
 msgstr "%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚ÐµÐºÑ�Ñ‚Ñƒ Ñ– Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ñ… Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ GNU Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ— Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿ÑƒÑ�ÐºÑƒ\n"
 
-#: elf32-ppc.c:10008
+#: elf32-ppc.c:9921
 #, c-format
 msgid "%s not defined in linker created %pA"
 msgstr "%s Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÑƒ, Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¼Ñƒ %pA"
 
-#: elf32-pru.c:579 elf32-pru.c:1472
+#: elf32-pru.c:582 elf32-pru.c:1475
 #, c-format
 msgid "error: %pB: old incompatible object file detected"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¸Ð¹ Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»"
@@ -3055,7 +3147,7 @@ msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ
 msgid "warning: RL78_SYM reloc with an unknown symbol"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� RL78_SYM Ð· Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: elf32-rl78.c:1084 elf32-rx.c:1456
+#: elf32-rl78.c:1084 elf32-rx.c:1461
 #, c-format
 msgid "%pB(%pA): error: call to undefined function '%s'"
 msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸ÐºÐ»Ð¸Ðº Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ»"
@@ -3084,17 +3176,17 @@ msgstr "- %pB Ñ” 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼, Ð° %
 msgid " [64-bit doubles]"
 msgstr " [64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– double]"
 
-#: elf32-rx.c:605
+#: elf32-rx.c:607
 #, c-format
 msgid "%pB:%pA: table entry %s outside table"
 msgstr "%pB:%pA: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð¿Ð¾Ð·Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÑŽ"
 
-#: elf32-rx.c:612
+#: elf32-rx.c:614
 #, c-format
 msgid "%pB:%pA: table entry %s not word-aligned within table"
 msgstr "%pB:%pA: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð° Ð²Ñ�ÐµÑ€ÐµÐ´Ð¸Ð½Ñ– Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–"
 
-#: elf32-rx.c:684
+#: elf32-rx.c:689
 #, c-format
 msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
 msgstr "%pB:%pA: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¸Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Red Hat %s, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´Ð»Ñ� %s"
@@ -3103,59 +3195,59 @@ msgstr "%pB:%pA: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ
 #. an absolute address is being computed.  There are special cases
 #. for relocs against symbols that are known to be referenced in
 #. crt0.o before the PID base address register has been initialised.
-#: elf32-rx.c:704
+#: elf32-rx.c:709
 #, c-format
 msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
 msgstr "%pB(%pA): Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� PID %s Ð´Ð¾ %#<PRIx64> (Ñ‰Ð¾Ð´Ð¾ %s Ñƒ %s)"
 
-#: elf32-rx.c:1288
+#: elf32-rx.c:1293
 msgid "warning: RX_SYM reloc with an unknown symbol"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� RX_SYM Ð· Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: elf32-rx.c:3167
+#: elf32-rx.c:3173
 #, c-format
 msgid "there is a conflict merging the ELF header flags from %pB"
 msgstr "Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF Ð· %pB Ð²Ð¸Ð½Ð¸Ðº ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚"
 
-#: elf32-rx.c:3170
+#: elf32-rx.c:3176
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr "  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ñ„Ð°Ð¹Ð»Ð° Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…: %s"
 
-#: elf32-rx.c:3172
+#: elf32-rx.c:3178
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr "  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ñ„Ð°Ð¹Ð»Ð° Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð²: %s"
 
-#: elf32-rx.c:3792
+#: elf32-rx.c:3784
 #, c-format
 msgid "%pB:%pA: table %s missing corresponding %s"
 msgstr "%pB:%pA: Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð½ÐµÐ¼Ð°Ñ” Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ %s"
 
-#: elf32-rx.c:3800
+#: elf32-rx.c:3792
 #, c-format
 msgid "%pB:%pA: %s and %s must be in the same input section"
 msgstr "%pB:%pA: %s Ñ– %s Ð¼Ð°ÑŽÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…"
 
-#: elf32-s390.c:2140 elf64-s390.c:2095
+#: elf32-s390.c:2011 elf64-s390.c:1965
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS %s"
 
-#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3754
+#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3800
 msgid "not enough GOT space for local GOT entries"
 msgstr "Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ GOT Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² GOT"
 
-#: elf32-score.c:2746
+#: elf32-score.c:2747
 msgid "address not word aligned"
 msgstr "Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð·Ð° Ð¼ÐµÐ¶ÐµÑŽ Ñ�Ð»Ð¾Ð²Ð°"
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2828 elf32-score7.c:2633
 #, c-format
 msgid "%pB: malformed reloc detected for section %pA"
 msgstr "%pB: Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ– Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ�"
 
-#: elf32-score.c:2881 elf32-score7.c:2686
+#: elf32-score.c:2882 elf32-score7.c:2687
 #, c-format
 msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CALL15 Ñƒ %#<PRIx64> Ð½Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
@@ -3170,7 +3262,7 @@ msgstr " [pic]"
 msgid " [fix dep]"
 msgstr " [Ñ„Ñ–ÐºÑ�. Ñ€Ð¾Ð·Ñ‚.]"
 
-#: elf32-score.c:4050 elf32-score7.c:3855
+#: elf32-score.c:4054 elf32-score7.c:3859
 #, c-format
 msgid "%pB: warning: linking PIC files with non-PIC files"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² PIC Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÑ– Ð½Ðµ Ñ” Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ PIC"
@@ -3180,152 +3272,148 @@ msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð
 msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: R_SH_USES Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ 0x%x"
 
-#: elf32-sh.c:3633
-msgid "unexpected STO_SH5_ISA32 on local symbol is not handled"
-msgstr "Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ STO_SH5_ISA32 Ð½Ð°Ð´ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾"
-
-#: elf32-sh.c:3880
+#: elf32-sh.c:3758
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
 msgstr "%pB: %#<PRIx64>: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ðµ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¾ÑŽ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
 
-#: elf32-sh.c:3910 elf32-sh.c:3926
+#: elf32-sh.c:3788 elf32-sh.c:3804
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s, %#<PRIx64>"
 
-#: elf32-sh.c:3942
+#: elf32-sh.c:3820
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
 msgstr "%pB: %#<PRIx64>: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_SH_PSHA %<PRId64> Ð½Ðµ Ñƒ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ– -32..32"
 
-#: elf32-sh.c:3958
+#: elf32-sh.c:3836
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
 msgstr "%pB: %#<PRIx64>: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_SH_PSHL %<PRId64> Ð½Ðµ Ñƒ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ– -32..32"
 
-#: elf32-sh.c:4088 elf32-sh.c:4483
+#: elf32-sh.c:3966 elf32-sh.c:4361
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð°Ð´Ñ€ÐµÑ�Ð½Ñƒ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÑƒ Ð´Ð¾ Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-sh.c:4586
+#: elf32-sh.c:4464
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð·Ð° Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ»"
 
-#: elf32-sh.c:4705
+#: elf32-sh.c:4583
 #, c-format
 msgid "%pB(%pA): offset in relocation for GD->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— GD->LE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#<PRIx64>"
 
 #. The backslash is to prevent bogus trigraph detection.
-#: elf32-sh.c:4723
+#: elf32-sh.c:4601
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd4??)"
 
-#: elf32-sh.c:4731
+#: elf32-sh.c:4609
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xc7??)"
 
-#: elf32-sh.c:4738
+#: elf32-sh.c:4616
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd1??)"
 
-#: elf32-sh.c:4745
+#: elf32-sh.c:4623
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x310c)"
 
-#: elf32-sh.c:4752
+#: elf32-sh.c:4630
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x410b)"
 
-#: elf32-sh.c:4759
+#: elf32-sh.c:4637
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x34cc)"
 
-#: elf32-sh.c:4794
+#: elf32-sh.c:4672
 #, c-format
 msgid "%pB(%pA): offset in relocation for IE->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— IE->LE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#<PRIx64>"
 
-#: elf32-sh.c:4812
+#: elf32-sh.c:4690
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd0??: mov.l)"
 
-#: elf32-sh.c:4821
+#: elf32-sh.c:4699
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x0?12: stc)"
 
-#: elf32-sh.c:4828
+#: elf32-sh.c:4706
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x0?ce: mov.l)"
 
-#: elf32-sh.c:4943
+#: elf32-sh.c:4821
 #, c-format
 msgid "%pB(%pA): offset in relocation for GD->IE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— GD->IE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#<PRIx64>"
 
-#: elf32-sh.c:5011
+#: elf32-sh.c:4889
 #, c-format
 msgid "%pB(%pA): offset in relocation for LD->LE translation is too small: %#<PRIx64>"
 msgstr "%pB(%pA): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð´Ð»Ñ� Ñ‚Ñ€Ð°Ð½Ñ�Ð»Ñ�Ñ†Ñ–Ñ— LD->LE Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼: %#<PRIx64>"
 
-#: elf32-sh.c:5139
+#: elf32-sh.c:5017
 #, c-format
 msgid "%X%C: relocation to \"%s\" references a different segment\n"
 msgstr "%X%C: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚\n"
 
-#: elf32-sh.c:5146
+#: elf32-sh.c:5024
 #, c-format
 msgid "%C: warning: relocation to \"%s\" references a different segment\n"
 msgstr "%C: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚\n"
 
-#: elf32-sh.c:5651 elf32-sh.c:5733
+#: elf32-sh.c:5483 elf32-sh.c:5565
 #, c-format
 msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
 msgstr "%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ‚Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ FDPIC"
 
-#: elf32-sh.c:5657 elf32-sh.c:5738
+#: elf32-sh.c:5489 elf32-sh.c:5570
 #, c-format
 msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
 msgstr "%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ FDPIC, Ñ‚Ð°Ðº Ñ– Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-sh.c:5688
+#: elf32-sh.c:5520
 #, c-format
 msgid "%pB: Function descriptor relocation with non-zero addend"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼"
 
-#: elf32-sh.c:5895 elf64-alpha.c:4691
+#: elf32-sh.c:5727 elf64-alpha.c:4657
 #, c-format
 msgid "%pB: TLS local exec code cannot be linked into shared objects"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ TLS Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-sh.c:6010
+#: elf32-sh.c:5842
 #, c-format
 msgid "%pB: uses %s instructions while previous modules use %s instructions"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s, Ñ…Ð¾Ñ‡Ð° Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s"
 
-#: elf32-sh.c:6022
+#: elf32-sh.c:5854
 #, c-format
 msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Â«%sÂ» Ð· Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾ÑŽ Â«%sÂ» Ð¿Ñ€Ð¸Ð·Ð²ÐµÐ»Ð¾ Ð´Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸"
 
-#: elf32-sh.c:6059
+#: elf32-sh.c:5895
 #, c-format
 msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ�Ð¼Ð¸, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¸Ð¼Ð¸ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…"
 
-#: elf32-sh.c:6072
+#: elf32-sh.c:5908
 #, c-format
 msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
 msgstr "%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ�ÑƒÐ¼Ñ–Ñˆ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–Ð² FDPIC Ñ– Ð½Ðµ-FDPIC"
@@ -3340,118 +3428,123 @@ msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� 64-Ð±
 msgid "%pB: linking little endian files with big endian files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð· Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
-#: elf32-spu.c:732
+#: elf32-sparc.c:157
+#, c-format
+msgid "%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr "%pB: Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ sparc Â«%luÂ»"
+
+#: elf32-spu.c:735
 msgid "%X%P: overlay section %pA does not start on a cache line\n"
 msgstr "%X%P: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸ %pA Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ€Ñ�Ð´ÐºÐ° ÐºÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ�\n"
 
-#: elf32-spu.c:740
+#: elf32-spu.c:743
 msgid "%X%P: overlay section %pA is larger than a cache line\n"
 msgstr "%X%P: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸ %pA Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ð·Ð° Ñ€Ñ�Ð´Ð¾Ðº ÐºÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ�\n"
 
-#: elf32-spu.c:760
+#: elf32-spu.c:763
 msgid "%X%P: overlay section %pA is not in cache area\n"
 msgstr "%X%P: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸ %pA Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– ÐºÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ�\n"
 
-#: elf32-spu.c:801
+#: elf32-spu.c:804
 #, c-format
 msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n"
 msgstr "%X%P: Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸, Ñ‰Ð¾ Ð½Ð°ÐºÐ»Ð°Ð´Ð°ÑŽÑ‚ÑŒÑ�Ñ�, %pA Ñ– %pA, Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸Ð½Ð°ÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° Ð¾Ð´Ð½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ\n"
 
-#: elf32-spu.c:1027
+#: elf32-spu.c:1030
 #, c-format
 msgid "warning: call to non-function symbol %s defined in %pB"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ»Ð¸Ðº Ð½ÐµÑ„ÑƒÐ½ÐºÑ†Ñ–Ð¾Ð½Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %s, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñƒ %pB"
 
-#: elf32-spu.c:1377
+#: elf32-spu.c:1380
 #, c-format
 msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
 msgstr "%pA:0x%v .brinfo lrlive (%u) Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�Ñ”Ñ‚ÑŒÑ�Ñ� Ð²Ñ–Ð´ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ ÑˆÐ»Ñ�Ñ…Ð¾Ð¼ Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ (%u)\n"
 
-#: elf32-spu.c:1909
+#: elf32-spu.c:1910
 #, c-format
 msgid "%pB is not allowed to define %s"
 msgstr "%pB Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ‚Ð¸ %s"
 
-#: elf32-spu.c:1917
+#: elf32-spu.c:1918
 #, c-format
 msgid "you are not allowed to define %s in a script"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ‚Ð¸ %s Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñ–"
 
-#: elf32-spu.c:1951
+#: elf32-spu.c:1952
 #, c-format
 msgid "%s in overlay section"
 msgstr "%s Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸"
 
-#: elf32-spu.c:1980
+#: elf32-spu.c:1981
 msgid "overlay stub relocation overflow"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸"
 
-#: elf32-spu.c:1989 elf64-ppc.c:13230
+#: elf32-spu.c:1990 elf64-ppc.c:14496
 msgid "stubs don't match calculated size"
 msgstr "ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸ Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°ÑŽÑ‚ÑŒ Ð¾Ð±Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
 
-#: elf32-spu.c:2572
+#: elf32-spu.c:2573
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ð²Ð°Ñ” %s\n"
 
-#: elf32-spu.c:2588
+#: elf32-spu.c:2589
 #, c-format
 msgid "warning: %s exceeds section size\n"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ\n"
 
-#: elf32-spu.c:2620
+#: elf32-spu.c:2621
 #, c-format
 msgid "%pA:0x%v not found in function table\n"
 msgstr "%pA:0x%v Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹\n"
 
-#: elf32-spu.c:2761
+#: elf32-spu.c:2762
 #, c-format
 msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
 msgstr "%pB(%pA+0x%v): Ð²Ð¸ÐºÐ»Ð¸Ðº Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, %pB(%pA), Ð°Ð½Ð°Ð»Ñ–Ð· Ñ” Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¸Ð¼\n"
 
-#: elf32-spu.c:3330
+#: elf32-spu.c:3328
 #, c-format
 msgid "stack analysis will ignore the call from %s to %s\n"
 msgstr "Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ Ñ�Ñ‚ÐµÐºÐ° Ð±ÑƒÐ´Ðµ Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾ Ð²Ð¸ÐºÐ»Ð¸Ðº Ð· %s Ð´Ð¾ %s\n"
 
-#: elf32-spu.c:4027
+#: elf32-spu.c:4025
 msgid "  calls:\n"
 msgstr "  Ð²Ð¸ÐºÐ»Ð¸ÐºÐ¸:\n"
 
-#: elf32-spu.c:4341
+#: elf32-spu.c:4340
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "%s Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ñƒ %s\n"
 
-#: elf32-spu.c:4345
+#: elf32-spu.c:4344
 #, c-format
 msgid "%s duplicated\n"
 msgstr "%s Ð´ÑƒÐ±Ð»ÑŒÐ¾Ð²Ð°Ð½Ð¾\n"
 
-#: elf32-spu.c:4352
+#: elf32-spu.c:4351
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr "Ð²Ð¸Ð±Ð°Ñ‡Ñ‚Ðµ, Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñ– Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ð½Ð°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð².\n"
 
-#: elf32-spu.c:4394
+#: elf32-spu.c:4393
 #, c-format
 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n"
 msgstr "Ñ�ÑƒÐ¼Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ 0x%v Ð±ÐµÐ· Ð¾Ð²ÐµÑ€Ð»ÐµÑŽ Ñ‚Ð° Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¾Ð²ÐµÑ€Ð»ÐµÑŽ 0x%v Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑŽÑ‚ÑŒ Ð¼Ñ–Ñ�Ñ‚ÐºÑ–Ñ�Ñ‚ÑŒ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ñ…Ð¾Ð²Ð¸Ñ‰Ð° Ð´Ð°Ð½Ð¸Ñ…\n"
 
-#: elf32-spu.c:4550
+#: elf32-spu.c:4549
 #, c-format
 msgid "%pB:%pA%s exceeds overlay size\n"
 msgstr "%pB:%pA%s Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸\n"
 
-#: elf32-spu.c:4691
+#: elf32-spu.c:4690
 msgid "%F%P: auto overlay error: %E\n"
 msgstr "%F%P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð°Ð²Ñ‚Ð¾Ð½Ð°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ�: %E\n"
 
-#: elf32-spu.c:4712
+#: elf32-spu.c:4711
 msgid "Stack size for call graph root nodes.\n"
 msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚ÐµÐºÐ° Ð´Ð»Ñ� ÐºÐ¾Ñ€ÐµÐ½ÐµÐ²Ð¸Ñ… Ð²ÑƒÐ·Ð»Ñ–Ð² Ð³Ñ€Ð°Ñ„Ñƒ Ð²Ð¸ÐºÐ»Ð¸ÐºÑ–Ð².\n"
 
-#: elf32-spu.c:4713
+#: elf32-spu.c:4712
 msgid ""
 "\n"
 "Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
@@ -3459,19 +3552,19 @@ msgstr ""
 "\n"
 "Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚ÐµÐºÐ° Ð´Ð»Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹. ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: Â«*Â» Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð° Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ� Ñƒ Ñ�Ñ‚ÐµÐºÑƒ, Â«tÂ» Ñ…Ð²Ð¾Ñ�Ñ‚Ð¾Ð²Ð¸Ð¹ Ð²Ð¸ÐºÐ»Ð¸Ðº\n"
 
-#: elf32-spu.c:4723
+#: elf32-spu.c:4722
 msgid "Maximum stack required is 0x%v\n"
 msgstr "ÐœÐ°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚ÐµÐºÐ° â€” 0x%v\n"
 
-#: elf32-spu.c:4742
+#: elf32-spu.c:4741
 msgid "%X%P: stack/lrlive analysis error: %E\n"
 msgstr "%X%P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ Ñ�Ñ‚ÐµÐºÐ°/lrlive: %E\n"
 
-#: elf32-spu.c:4745
+#: elf32-spu.c:4744
 msgid "%F%P: can not build overlay stubs: %E\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ð½Ð°ÐºÐ»Ð°Ð´Ð½Ñ– ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸: %E\n"
 
-#: elf32-spu.c:4814
+#: elf32-spu.c:4813
 msgid "fatal error while creating .fixup"
 msgstr "ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� .fixup"
 
@@ -3480,275 +3573,274 @@ msgstr "ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°
 msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr "%pB(%s+%#<PRIx64>): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: elf32-tic6x.c:1628
+#: elf32-tic6x.c:1588
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ�ÐºÐ° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· PIC"
 
-#: elf32-tic6x.c:1633
+#: elf32-tic6x.c:1593
 msgid "warning: generating a shared library containing non-PID code"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ�ÐºÐ° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· PID"
 
-#: elf32-tic6x.c:2493
+#: elf32-tic6x.c:2434
 #, c-format
 msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ SB, Ð°Ð»Ðµ __c6xabi_DSBT_BASE Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-tic6x.c:3629
+#: elf32-tic6x.c:3511
 #, c-format
 msgid "%pB: error: unknown mandatory EABI object attribute %d"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI, %d"
 
-#: elf32-tic6x.c:3638
+#: elf32-tic6x.c:3520
 #, c-format
 msgid "%pB: warning: unknown EABI object attribute %d"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI, %d"
 
-#: elf32-tic6x.c:3752 elf32-tic6x.c:3761
+#: elf32-tic6x.c:3638 elf32-tic6x.c:3647
 #, c-format
 msgid "error: %pB requires more stack alignment than %pB preserves"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð±Ñ–Ð»ÑŒÑˆÐ¾Ð³Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ°, Ð½Ñ–Ð¶ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¾ Ñƒ %pB"
 
-#: elf32-tic6x.c:3771 elf32-tic6x.c:3780
+#: elf32-tic6x.c:3657 elf32-tic6x.c:3666
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Tag_ABI_array_object_alignment Ñƒ %pB"
 
-#: elf32-tic6x.c:3789 elf32-tic6x.c:3798
+#: elf32-tic6x.c:3675 elf32-tic6x.c:3684
 #, c-format
 msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Tag_ABI_array_object_align_expected Ñƒ %pB"
 
-#: elf32-tic6x.c:3807 elf32-tic6x.c:3815
+#: elf32-tic6x.c:3693 elf32-tic6x.c:3701
 #, c-format
 msgid "error: %pB requires more array alignment than %pB preserves"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð±Ñ–Ð»ÑŒÑˆÐ¾Ð³Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ�Ð¸Ð²Ñƒ, Ð½Ñ–Ð¶ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¾ Ñƒ %pB"
 
-#: elf32-tic6x.c:3838
+#: elf32-tic6x.c:3724
 #, c-format
 msgid "warning: %pB and %pB differ in wchar_t size"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ñ– %pB Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�ÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¾Ð¼ wchar_t"
 
-#: elf32-tic6x.c:3857
+#: elf32-tic6x.c:3743
 #, c-format
 msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ñ– %pB Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�ÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° Ñ‚Ð¸Ð¼, Ñ‡Ð¸ Ð±ÑƒÐ»Ð¾ Ñ—Ñ… Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� DSBT"
 
-#: elf32-tilepro.c:3761 elfxx-tilegx.c:4145 elfxx-x86.c:1432
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:9530
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2579
+#: elf32-tilepro.c:3635 elfxx-tilegx.c:4019 elfxx-x86.c:1393
+#: elfnn-aarch64.c:9704 elfnn-riscv.c:2522
 #, c-format
 msgid "discarded output section: `%pA'"
 msgstr "Ð²Ñ–Ð´ÐºÐ¸Ð½ÑƒÑ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…: Â«%pAÂ»"
 
-#: elf32-v850.c:153
+#: elf32-v850.c:152
 #, c-format
 msgid "variable `%s' cannot occupy in multiple small data regions"
 msgstr "Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð°Ð¹Ð¼Ð°Ñ‚Ð¸ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð¼Ð°Ð»Ð¸Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð¸Ñ…"
 
-#: elf32-v850.c:156
+#: elf32-v850.c:155
 #, c-format
 msgid "variable `%s' can only be in one of the small, zero, and tiny data regions"
 msgstr "Ð·Ð¼Ñ–Ð½Ð½Ñƒ Â«%sÂ» Ð¼Ð¾Ð¶Ð½Ð° Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ñƒ Ð¾Ð´Ð½Ñ–Ð¹ Ð· Ð¼Ð°Ð»Ð¸Ñ…, Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ñ… Ñ– Ð¼Ð°Ð»ÑŽÑ�Ñ–Ð½ÑŒÐºÐ¸Ñ… Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÐµÐ¹ Ð´Ð°Ð½Ð¸Ñ…"
 
-#: elf32-v850.c:159
+#: elf32-v850.c:158
 #, c-format
 msgid "variable `%s' cannot be in both small and zero data regions simultaneously"
 msgstr "Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸Ñ�Ñ� Ñƒ Ð¼Ð°Ð»Ñ–Ð¹ Ñ– Ð½ÑƒÐ»ÑŒÐ¾Ð²Ñ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ… Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾"
 
-#: elf32-v850.c:162
+#: elf32-v850.c:161
 #, c-format
 msgid "variable `%s' cannot be in both small and tiny data regions simultaneously"
 msgstr "Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸Ñ�Ñ� Ñƒ Ð¼Ð°Ð»Ñ–Ð¹ Ñ– Ð¼Ð°Ð»ÑŽÑ�Ñ–Ð½ÑŒÐºÑ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ… Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾"
 
-#: elf32-v850.c:165
+#: elf32-v850.c:164
 #, c-format
 msgid "variable `%s' cannot be in both zero and tiny data regions simultaneously"
 msgstr "Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ‚Ð¸Ñ�Ñ� Ñƒ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ñ–Ð¹ Ñ– Ð¼Ð°Ð»ÑŽÑ�Ñ–Ð½ÑŒÐºÑ–Ð¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð´Ð°Ð½Ð¸Ñ… Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾"
 
-#: elf32-v850.c:463
+#: elf32-v850.c:462
 msgid "failed to find previous HI16 reloc"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� HI16"
 
-#: elf32-v850.c:2303
+#: elf32-v850.c:2302
 msgid "could not locate special linker symbol __gp"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __gp"
 
-#: elf32-v850.c:2307
+#: elf32-v850.c:2306
 msgid "could not locate special linker symbol __ep"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __ep"
 
-#: elf32-v850.c:2311
+#: elf32-v850.c:2310
 msgid "could not locate special linker symbol __ctbp"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __ctbp"
 
-#: elf32-v850.c:2532
+#: elf32-v850.c:2531
 #, c-format
 msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ %pB Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½Ð° 4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-v850.c:2548
+#: elf32-v850.c:2547
 #, c-format
 msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ 64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– Ð´Ñ–Ð¹Ñ�Ð½Ñ– Ñ‡Ð¸Ñ�Ð»Ð° Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾Ñ— Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚Ñ–, Ð° Ñƒ %pB â€” 32-Ð±Ñ–Ñ‚Ð¾Ð²Ñ–"
 
-#: elf32-v850.c:2563
+#: elf32-v850.c:2562
 #, c-format
 msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ FPU-3.0, Ð°Ð»Ðµ Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð»Ð¸ÑˆÐµ FPU-2.0"
 
-#: elf32-v850.c:2595
+#: elf32-v850.c:2594
 #, c-format
 msgid " alignment of 8-byte entities: "
 msgstr " Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²: "
 
-#: elf32-v850.c:2598
+#: elf32-v850.c:2597
 #, c-format
 msgid "4-byte"
 msgstr "4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹"
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2598
 #, c-format
 msgid "8-byte"
 msgstr "8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹"
 
-#: elf32-v850.c:2600 elf32-v850.c:2612
+#: elf32-v850.c:2599 elf32-v850.c:2611
 #, c-format
 msgid "not set"
 msgstr "Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾"
 
-#: elf32-v850.c:2601 elf32-v850.c:2613 elf32-v850.c:2625 elf32-v850.c:2636
-#: elf32-v850.c:2647 elf32-v850.c:2658
+#: elf32-v850.c:2600 elf32-v850.c:2612 elf32-v850.c:2624 elf32-v850.c:2635
+#: elf32-v850.c:2646 elf32-v850.c:2657
 #, c-format
 msgid "unknown: %x"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾: %x"
 
-#: elf32-v850.c:2607
+#: elf32-v850.c:2606
 #, c-format
 msgid " size of doubles: "
 msgstr " Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ double: "
 
-#: elf32-v850.c:2610
+#: elf32-v850.c:2609
 #, c-format
 msgid "4-bytes"
 msgstr "4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ–"
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2610
 #, c-format
 msgid "8-bytes"
 msgstr "8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ–"
 
-#: elf32-v850.c:2619
+#: elf32-v850.c:2618
 #, c-format
 msgid " FPU support required: "
 msgstr " ÐŸÐ¾Ñ‚Ñ€Ñ–Ð±Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° FPU: "
 
-#: elf32-v850.c:2622
+#: elf32-v850.c:2621
 #, c-format
 msgid "FPU-2.0"
 msgstr "FPU-2.0"
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2622
 #, c-format
 msgid "FPU-3.0"
 msgstr "FPU-3.0"
 
-#: elf32-v850.c:2624
+#: elf32-v850.c:2623
 #, c-format
 msgid "none"
 msgstr "Ð½ÐµÐ¼Ð°Ñ”"
 
-#: elf32-v850.c:2631
+#: elf32-v850.c:2630
 #, c-format
 msgid "SIMD use: "
 msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� SIMD: "
 
-#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#: elf32-v850.c:2633 elf32-v850.c:2644 elf32-v850.c:2655
 #, c-format
 msgid "yes"
 msgstr "Ñ‚Ð°Ðº"
 
-#: elf32-v850.c:2635 elf32-v850.c:2646 elf32-v850.c:2657
+#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
 #, c-format
 msgid "no"
 msgstr "Ð½Ñ–"
 
-#: elf32-v850.c:2642
+#: elf32-v850.c:2641
 #, c-format
 msgid "CACHE use: "
 msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� CACHE: "
 
-#: elf32-v850.c:2653
+#: elf32-v850.c:2652
 #, c-format
 msgid "MMU use: "
 msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� MMU: "
 
-#: elf32-v850.c:2820 elf32-v850.c:2876
+#: elf32-v850.c:2819 elf32-v850.c:2875
 #, c-format
 msgid "%pB: architecture mismatch with previous modules"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
 #. xgettext:c-format.
-#: elf32-v850.c:2894
+#: elf32-v850.c:2893
 #, c-format
 msgid "private flags = %lx: "
 msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx: "
 
-#: elf32-v850.c:2899
+#: elf32-v850.c:2898
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850"
 
-#: elf32-v850.c:2901
+#: elf32-v850.c:2900
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850 E3"
 
-#: elf32-v850.c:2903 elf32-v850.c:2910
+#: elf32-v850.c:2902 elf32-v850.c:2909
 #, c-format
 msgid "v850 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850"
 
-#: elf32-v850.c:2911
+#: elf32-v850.c:2910
 #, c-format
 msgid "v850e architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e"
 
-#: elf32-v850.c:2912
+#: elf32-v850.c:2911
 #, c-format
 msgid "v850e1 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e1"
 
-#: elf32-v850.c:2913
+#: elf32-v850.c:2912
 #, c-format
 msgid "v850e2 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2"
 
-#: elf32-v850.c:2914
+#: elf32-v850.c:2913
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2v3"
 
-#: elf32-v850.c:2915
+#: elf32-v850.c:2914
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e3v5"
 
-#: elf32-v850.c:3609 elf32-v850.c:3848
+#: elf32-v850.c:3612 elf32-v850.c:3851
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñ– Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—"
 
-#: elf32-v850.c:3619 elf32-v850.c:3858
+#: elf32-v850.c:3622 elf32-v850.c:3861
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ %#x"
 
-#: elf32-v850.c:3665 elf32-v850.c:3893
+#: elf32-v850.c:3668 elf32-v850.c:3896
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-v850.c:3705
+#: elf32-v850.c:3708
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¾ %#<PRIx64>"
@@ -3773,22 +3865,22 @@ msgstr " [g-float]"
 msgid "%pB: warning: GOT addend of %<PRId64> to `%s' does not match previous GOT addend of %<PRId64>"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº GOT %<PRId64> Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð¼Ñƒ Ð´Ð¾Ð´Ð°Ð½ÐºÑƒ GOT %<PRId64>"
 
-#: elf32-vax.c:1446
+#: elf32-vax.c:1389
 #, c-format
 msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº PLT %<PRId64> Ð´Ð¾ Â«%sÂ» Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾"
 
-#: elf32-vax.c:1572
+#: elf32-vax.c:1515
 #, c-format
 msgid "%pB: warning: %s relocation against symbol `%s' from %pA section"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA"
 
-#: elf32-vax.c:1579
+#: elf32-vax.c:1522
 #, c-format
 msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð¾ %#<PRIx64> Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA"
 
-#: elf32-visium.c:821
+#: elf32-visium.c:824
 #, c-format
 msgid "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
 msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ %s -mtune=%s Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ %s -mtune=%s"
@@ -3803,238 +3895,261 @@ msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=XGATE]"
 msgid "error reading cpu type from elf private data"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ‚Ð¸Ð¿Ñƒ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ð· Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… elf"
 
-#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2085 elf32-ia64.c:2353
-#: elf64-ia64.c:2353
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2074 elfnn-ia64.c:2343
 msgid "non-zero addend in @fptr reloc"
 msgstr "Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– @fptr"
 
-#: elf32-xtensa.c:937
+#: elf32-xtensa.c:1001
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr "%pB(%pA): Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹"
 
-#: elf32-xtensa.c:2675
+#: elf32-xtensa.c:2733
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€=%#<PRIx64>)"
 
-#: elf32-xtensa.c:2758 elf32-xtensa.c:2881
+#: elf32-xtensa.c:2816 elf32-xtensa.c:2939
 msgid "dynamic relocation in read-only section"
 msgstr "Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-xtensa.c:2858
+#: elf32-xtensa.c:2916
 msgid "TLS relocation invalid without dynamic sections"
 msgstr "ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²"
 
-#: elf32-xtensa.c:3070
+#: elf32-xtensa.c:3126
 msgid "internal inconsistency in size of .got.loc section"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð½ÐµÐ¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð°Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .got.loc"
 
-#: elf32-xtensa.c:3377
+#: elf32-xtensa.c:3432
 #, c-format
 msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
 msgstr "%pB: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ‚Ð¸Ð¿Ð¸ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€. Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� â€” 0x%x. Ð’Ñ…Ñ–Ð´Ð½Ñ– Ð´Ð°Ð½Ñ– â€” 0x%x"
 
-#: elf32-xtensa.c:4608 elf32-xtensa.c:4616
+#: elf32-xtensa.c:4726 elf32-xtensa.c:4734
 msgid "attempt to convert L32R/CALLX to CALL failed"
 msgstr "Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� L32R/CALLX Ð½Ð° CALL Ð·Ð°Ð·Ð½Ð°Ð»Ð° Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–"
 
-#: elf32-xtensa.c:6444 elf32-xtensa.c:6523 elf32-xtensa.c:7899
+#: elf32-xtensa.c:6559 elf32-xtensa.c:6638 elf32-xtensa.c:8064
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð° Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹"
 
-#: elf32-xtensa.c:7638
+#: elf32-xtensa.c:7805
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� XTENSA_ASM_SIMPLIFY, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð° Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹"
 
-#: elf32-xtensa.c:9493
+#: elf32-xtensa.c:9663
 msgid "invalid relocation address"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-xtensa.c:9543
+#: elf32-xtensa.c:9754
 msgid "overflow after relaxation"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ñ�Ð»Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
 
-#: elf32-xtensa.c:10689
+#: elf32-xtensa.c:10900
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s"
 
-#: elf64-alpha.c:472
+#: elf32-z80.c:473
+#, c-format
+msgid "%pB: unsupported bfd mach %#lx"
+msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� mach bfd %#lx"
+
+#: elf32-z80.c:518
+#, c-format
+msgid "%pB: unsupported mach %#x"
+msgstr "%pB: Ð½Ð°Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� mach %#x"
+
+#: elf32-z80.c:546
+#, c-format
+msgid "%pB: unsupported arch %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %#x"
+
+#: elf64-alpha.c:473
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr "ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ GPDISP Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— ldah Ñ– lda"
 
-#: elf64-alpha.c:2463
+#: elf64-alpha.c:1999 elf64-alpha.c:2694 elflink.c:14885
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�\n"
+
+#: elf64-alpha.c:2451
 #, c-format
 msgid "%pB: .got subsegment exceeds 64K (size %d)"
 msgstr "%pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿Ñ–Ð´Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° .got Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 64ÐºÐ‘ (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ â€” %d)"
 
-#: elf64-alpha.c:3018 elf64-alpha.c:3214
+#: elf64-alpha.c:2989 elf64-alpha.c:3183
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
 msgstr "%pB: %pA+%#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾Ñ— Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—"
 
-#: elf64-alpha.c:4415 elf64-alpha.c:4428
+#: elf64-alpha.c:4381 elf64-alpha.c:4394
 #, c-format
 msgid "%pB: gp-relative relocation against dynamic symbol %s"
 msgstr "%pB: gp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-alpha.c:4484
+#: elf64-alpha.c:4450
 #, c-format
 msgid "%pB: change in gp: BRSGP %s"
 msgstr "%pB: Ð·Ð¼Ñ–Ð½Ð° Ñƒ gp: BRSGP %s"
 
-#: elf64-alpha.c:4509 mach-o.c:615
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:499
+#: elf64-alpha.c:4475 mach-o.c:616 elfnn-riscv.c:485
 msgid "<unknown>"
 msgstr "<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð°>"
 
-#: elf64-alpha.c:4515
+#: elf64-alpha.c:4481
 #, c-format
 msgid "%pB: !samegp reloc against symbol without .prologue: %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� !samegp Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð±ÐµÐ· .prologue: %s"
 
-#: elf64-alpha.c:4573
+#: elf64-alpha.c:4539
 #, c-format
 msgid "%pB: unhandled dynamic relocation against %s"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ %s"
 
-#: elf64-alpha.c:4608
+#: elf64-alpha.c:4574
 #, c-format
 msgid "%pB: pc-relative relocation against undefined weak symbol %s"
 msgstr "%pB: pc-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-alpha.c:4674
+#: elf64-alpha.c:4640
 #, c-format
 msgid "%pB: dtp-relative relocation against dynamic symbol %s"
 msgstr "%pB: dtp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-alpha.c:4699
+#: elf64-alpha.c:4665
 #, c-format
 msgid "%pB: tp-relative relocation against dynamic symbol %s"
 msgstr "%pB: tp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:517
+msgid "internal error: relocation not supported"
+msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+
 #: elf64-gen.c:71
 #, c-format
 msgid "%pB: Relocations in generic ELF (EM: %d)"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¼Ñƒ ELF (EM: %d)"
 
-#: elf64-hppa.c:2081
+#: elf64-hppa.c:2032
 #, c-format
 msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
 msgstr "ÑˆÐ°Ð±Ð»Ð¾Ð½ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð»Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‚Ð¸ .plt, Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ dp = %<PRId64>"
 
-#: elf64-hppa.c:3286
+#: elf64-hppa.c:3236
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´Ð¾Ñ�Ñ�Ð³Ñ‚Ð¸ %s"
 
-#: elf64-ia64-vms.c:598 elf32-ia64.c:636 elf64-ia64.c:636
+#: elf64-ia64-vms.c:598 elfnn-ia64.c:639
 #, c-format
 msgid "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or indirect branch"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ br Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ». Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� brl Ð°Ð±Ð¾ Ð½ÐµÐ¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ�Ð¼."
 
-#: elf64-ia64-vms.c:2040 elf32-ia64.c:2301 elf64-ia64.c:2301
+#: elf64-ia64-vms.c:2029 elfnn-ia64.c:2291
 msgid "@pltoff reloc against local symbol"
 msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� @pltoff Ñ‰Ð¾Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf64-ia64-vms.c:3292 elf32-ia64.c:3712 elf64-ia64.c:3712
+#: elf64-ia64-vms.c:3281 elfnn-ia64.c:3674
 #, c-format
 msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð¾ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð´Ð°Ð½Ð¸Ñ… (%#<PRIx64> >= 0x400000)"
 
-#: elf64-ia64-vms.c:3302 elf32-ia64.c:3722 elf64-ia64.c:3722
+#: elf64-ia64-vms.c:3291 elfnn-ia64.c:3684
 #, c-format
 msgid "%pB: __gp does not cover short data segment"
 msgstr "%pB: __gp Ð½Ðµ Ð²ÐºÑ€Ð¸Ð²Ð°Ñ” ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° Ð´Ð°Ð½Ð¸Ñ…"
 
-#: elf64-ia64-vms.c:3572 elf32-ia64.c:3996 elf64-ia64.c:3996
+#: elf64-ia64-vms.c:3561 elfnn-ia64.c:3958
 #, c-format
 msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
 msgstr "%pB: Ð½Ðµ-pic ÐºÐ¾Ð´ Ð· Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ imm Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: elf64-ia64-vms.c:3636 elf32-ia64.c:4064 elf64-ia64.c:4064
+#: elf64-ia64-vms.c:3625 elfnn-ia64.c:4026
 #, c-format
 msgid "%pB: @gprel relocation against dynamic symbol %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� @gprel Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-ia64-vms.c:3695 elf32-ia64.c:4127 elf64-ia64.c:4127
+#: elf64-ia64-vms.c:3684 elfnn-ia64.c:4089
 #, c-format
 msgid "%pB: linking non-pic code in a position independent executable"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-pic ÐºÐ¾Ð´Ñƒ Ñƒ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð· Ð½ÐµÐ·Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¼ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼"
 
-#: elf64-ia64-vms.c:3797 elf32-ia64.c:4265 elf64-ia64.c:4265
+#: elf64-ia64-vms.c:3786 elfnn-ia64.c:4227
 #, c-format
 msgid "%pB: @internal branch to dynamic symbol %s"
 msgstr "%pB: Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� @internal Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-ia64-vms.c:3800 elf32-ia64.c:4268 elf64-ia64.c:4268
+#: elf64-ia64-vms.c:3789 elfnn-ia64.c:4230
 #, c-format
 msgid "%pB: speculation fixup to dynamic symbol %s"
 msgstr "%pB: Ð·Ð´Ð¾Ð³Ð°Ð´ÐºÐ° Ñ‰Ð¾Ð´Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ñ— Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-ia64-vms.c:3803 elf32-ia64.c:4271 elf64-ia64.c:4271
+#: elf64-ia64-vms.c:3792 elfnn-ia64.c:4233
 #, c-format
 msgid "%pB: @pcrel relocation against dynamic symbol %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� @pcrel Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-ia64-vms.c:3927 elf32-ia64.c:4468 elf64-ia64.c:4468
+#: elf64-ia64-vms.c:3916 elfnn-ia64.c:4430
 msgid "unsupported reloc"
 msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf64-ia64-vms.c:3964 elf32-ia64.c:4506 elf64-ia64.c:4506
+#: elf64-ia64-vms.c:3953 elfnn-ia64.c:4468
 #, c-format
 msgid "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in section `%pA'."
 msgstr "%pB: Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ TLS Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»."
 
-#: elf64-ia64-vms.c:3981 elf32-ia64.c:4523 elf64-ia64.c:4523
+#: elf64-ia64-vms.c:3970 elfnn-ia64.c:4485
 #, c-format
 msgid "%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size %#<PRIx64> (> 0x1000000)."
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ br (%s) Ð´Ð¾ Â«%sÂ» Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð· Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¾Ð¼ %#<PRIx64> (> 0x1000000)."
 
-#: elf64-ia64-vms.c:4273 elf32-ia64.c:4781 elf64-ia64.c:4781
+#: elf64-ia64-vms.c:4266 elfnn-ia64.c:4746
 #, c-format
 msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� trap-on-NULL-dereference Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ� (trapping)"
 
-#: elf64-ia64-vms.c:4282 elf32-ia64.c:4790 elf64-ia64.c:4790
+#: elf64-ia64-vms.c:4275 elfnn-ia64.c:4755
 #, c-format
 msgid "%pB: linking big-endian files with little-endian files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð·Ñ– Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
-#: elf64-ia64-vms.c:4291 elf32-ia64.c:4799 elf64-ia64.c:4799
+#: elf64-ia64-vms.c:4284 elfnn-ia64.c:4764
 #, c-format
 msgid "%pB: linking 64-bit files with 32-bit files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð· 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸"
 
-#: elf64-ia64-vms.c:4300 elf32-ia64.c:4808 elf64-ia64.c:4808
+#: elf64-ia64-vms.c:4293 elfnn-ia64.c:4773
 #, c-format
 msgid "%pB: linking constant-gp files with non-constant-gp files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð·Ñ– Ñ�Ñ‚Ð°Ð»Ð¸Ð¼ gp Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð·Ñ– Ð·Ð¼Ñ–Ð½Ð½Ð¸Ð¼ gp"
 
-#: elf64-ia64-vms.c:4310 elf32-ia64.c:4818 elf64-ia64.c:4818
+#: elf64-ia64-vms.c:4303 elfnn-ia64.c:4783
 #, c-format
 msgid "%pB: linking auto-pic files with non-auto-pic files"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð· Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¸Ð¼ pic Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ pic"
 
-#: elf64-ia64-vms.c:5153 elflink.c:4894
+#: elf64-ia64-vms.c:5150 elflink.c:5072
 #, c-format
 msgid "warning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pA"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %u Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� (%u) Ð¹Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA"
 
-#: elf64-ia64-vms.c:5160 elflink.c:4901
+#: elf64-ia64-vms.c:5157 elflink.c:5079
 #, c-format
 msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %u Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB Ñ” Ð¼ÐµÐ½ÑˆÐ¸Ð¼ Ð·Ð° %u Ñƒ %pB"
 
-#: elf64-ia64-vms.c:5176 elflink.c:4918
+#: elf64-ia64-vms.c:5173 elflink.c:5096
 #, c-format
 msgid "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %pB"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð· %<PRIu64> Ñƒ %pB Ð½Ð° %<PRIu64> Ñƒ %pB"
 
-#: elf64-mips.c:4098
+#: elf64-mips.c:4095
 #, c-format
 msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
 msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %<PRIu64> Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %ld"
@@ -4081,147 +4196,160 @@ msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€Ðµ
 msgid "%pB: directive LOCAL valid only with a register or absolute value"
 msgstr "%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ñƒ LOCAL Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð·Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼Ð¸ Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°Ñ… Ð°Ð±Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¸Ð¼Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼Ð¸"
 
-#: elf64-mmix.c:1744
+#: elf64-mmix.c:1742
 #, c-format
 msgid "%pB: LOCAL directive: register $%<PRId64> is not a local register; first global register is $%<PRId64>"
 msgstr "%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° LOCAL: Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€ $%<PRId64> Ð½Ðµ Ñ” Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¼ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¾Ð¼. ÐŸÐµÑ€ÑˆÐ¸Ð¼ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¼ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¾Ð¼ Ñ” $%<PRId64>."
 
-#: elf64-mmix.c:2173
+#: elf64-mmix.c:2167
 #, c-format
 msgid "%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Â«%sÂ»; Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº %s Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñƒ Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»"
 
-#: elf64-mmix.c:2228
+#: elf64-mmix.c:2222
 msgid "register section has contents\n"
 msgstr "Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð´Ð°Ð½Ñ–\n"
 
-#: elf64-mmix.c:2418
+#: elf64-mmix.c:2412
 #, c-format
 msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð½ÐµÑƒÐ·Ð³Ð¾Ð´Ð¶ÐµÐ½Ñ–Ñ�Ñ‚ÑŒ: Ð·Ð°Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� %lu != Ð¼Ð°ÐºÑ�. %lu; Ð±ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ñ‚Ðµ Ð¿Ñ€Ð¾ Ñ†ÑŽ Ð²Ð°Ð´Ñƒ"
 
-#: elf64-ppc.c:3827
+#: elf64-ppc.c:1342
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ %s, Ð° Ð½Ðµ %s"
+
+#: elf64-ppc.c:4101
 #, c-format
 msgid "symbol '%s' has invalid st_other for ABI version 1"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¼Ð°Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� st_other Ð´Ð»Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ— ABI 1"
 
-#: elf64-ppc.c:4002
+#: elf64-ppc.c:4281
 #, c-format
 msgid "%pB .opd not allowed in ABI version %d"
 msgstr ".opd %pB Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ— ABI %d"
 
-#: elf64-ppc.c:4523
+#: elf64-ppc.c:4852
 #, c-format
 msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
 msgstr "%H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ°Ñ… Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ– PIE\n"
 
-#: elf64-ppc.c:4919
+#: elf64-ppc.c:5260
 #, c-format
 msgid "%pB uses unknown e_flags 0x%lx"
 msgstr "%pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� e_flags 0x%lx"
 
-#: elf64-ppc.c:4927
+#: elf64-ppc.c:5268
 #, c-format
 msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
 msgstr "%pB: Ð²ÐµÑ€Ñ�Ñ–Ñ� ABI %ld Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾ÑŽ Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ ABI %ld Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñƒ"
 
-#: elf64-ppc.c:4954
+#: elf64-ppc.c:5295
 #, c-format
 msgid " [abiv%ld]"
 msgstr " [abiv%ld]"
 
-#: elf64-ppc.c:6145
+#: elf64-ppc.c:6574
 msgid "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
 msgstr "%P: ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� plt; Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÐ¹Ñ‚Ðµ LD_BIND_NOW=1 Ð°Ð±Ð¾ Ð¾Ð½Ð¾Ð²Ñ–Ñ‚ÑŒ gcc\n"
 
-#: elf64-ppc.c:6417
+#: elf64-ppc.c:6841
 #, c-format
 msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
 msgstr "%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– R_PPC64_TOCSAVE"
 
-#: elf64-ppc.c:6644
+#: elf64-ppc.c:7089
 #, c-format
 msgid "dynreloc miscount for %pB, section %pA"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñƒ Ð¾Ð±Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� %pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA"
 
-#: elf64-ppc.c:6733
+#: elf64-ppc.c:7178
 #, c-format
 msgid "%pB: .opd is not a regular array of opd entries"
 msgstr "%pB: .opd Ð½Ðµ Ñ” Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¸Ð¼ Ð¼Ð°Ñ�Ð¸Ð²Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² opd"
 
-#: elf64-ppc.c:6743
+#: elf64-ppc.c:7188
 #, c-format
 msgid "%pB: unexpected reloc type %u in .opd section"
 msgstr "%pB: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, %u, Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .opd"
 
-#: elf64-ppc.c:6765
+#: elf64-ppc.c:7210
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr "%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .opd"
 
-#: elf64-ppc.c:7249
+#: elf64-ppc.c:7697
 msgid "warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: --plt-localentry Ð¾Ñ�Ð¾Ð±Ð»Ð¸Ð²Ð¾ Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ð¹, Ñ�ÐºÑ‰Ð¾ Ñƒ ld.so Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð½Ñ� Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½ÑŒ ABI"
 
-#: elf64-ppc.c:7499
+#: elf64-ppc.c:8017
 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
 msgstr "%H __tls_get_addr Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚, Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–ÑŽ TLS Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾\n"
 
-#: elf64-ppc.c:7876 elf64-ppc.c:8513
+#: elf64-ppc.c:8417 elf64-ppc.c:9130
 #, c-format
 msgid "%s defined on removed toc entry"
 msgstr "%s Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– toc"
 
-#: elf64-ppc.c:8241
-#, c-format
-msgid "%H: toc optimization is not supported for %s instruction\n"
-msgstr "%H: Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— toc\n"
-
-#: elf64-ppc.c:8470
+#: elf64-ppc.c:9087
 #, c-format
 msgid "%H: %s references optimized away TOC entry\n"
 msgstr "%H: %s Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° ÑƒÑ�ÑƒÐ½ÑƒÑ‚Ð¸Ð¹ Ñƒ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ– Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð·Ð°Ð¿Ð¸Ñ� TOC\n"
 
-#: elf64-ppc.c:9301
+#: elf64-ppc.c:9308
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr "%H: Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— got/toc\n"
+
+#: elf64-ppc.c:10135
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ñ”Ð¼Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s"
 
-#: elf64-ppc.c:10215
+#: elf64-ppc.c:11277
 msgid "%P: cannot find opd entry toc for `%pT'\n"
 msgstr "`%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� opd Ñƒ toc Ð´Ð»Ñ� Â«%pTÂ»\n"
 
-#: elf64-ppc.c:10303
+#: elf64-ppc.c:11323 elf64-ppc.c:11867
+msgid "%F%P: Could not assign group %pA target %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð²'Ñ�Ð·Ð°Ñ‚Ð¸ Ð³Ñ€ÑƒÐ¿Ñƒ %pA Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %pA Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ�. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð±ÐµÐ· --enable-non-contiguous-regions.\n"
+
+#: elf64-ppc.c:11385
 #, c-format
 msgid "long branch stub `%s' offset overflow"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° Ð´Ð¾Ð²Ð³Ð¾Ñ— Ð³Ñ–Ð»ÐºÐ¸, Â«%sÂ»"
 
-#: elf64-ppc.c:10330
+#: elf64-ppc.c:11412
 #, c-format
 msgid "can't find branch stub `%s'"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Â«%sÂ»"
 
-#: elf64-ppc.c:10394 elf64-ppc.c:10642 elf64-ppc.c:12791
+#: elf64-ppc.c:11476 elf64-ppc.c:11743 elf64-ppc.c:13972
 #, c-format
 msgid "%P: linkage table error against `%pT'\n"
 msgstr "%P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»\n"
 
-#: elf64-ppc.c:10820
+#: elf64-ppc.c:11939
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð±ÑƒÐ´ÑƒÐ²Ð°Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Â«%sÂ»"
 
-#: elf64-ppc.c:11779
+#: elf64-ppc.c:12920
 #, c-format
 msgid "%pB section %pA exceeds stub group size"
 msgstr "Ð Ð¾Ð·Ð´Ñ–Ð» %pB, %pA, Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð³Ñ€ÑƒÐ¿Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²"
 
-#: elf64-ppc.c:13189 elf64-ppc.c:13208
+#: elf64-ppc.c:14153
+msgid "__tls_get_addr call offset overflow"
+msgstr "Ð²Ð¸ÐºÐ»Ð¸Ðº __tls_get_addr Ð¿Ñ€Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ"
+
+#: elf64-ppc.c:14455 elf64-ppc.c:14474
 #, c-format
 msgid "%s offset too large for .eh_frame sdata4 encoding"
 msgstr "Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ %s Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ Ð´Ð»Ñ� ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� sdata4 .eh_frame"
 
-#: elf64-ppc.c:13244
+#: elf64-ppc.c:14506
 #, c-format
 msgid "linker stubs in %u group\n"
 msgid_plural "linker stubs in %u groups\n"
@@ -4230,10 +4358,10 @@ msgstr[1] "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº
 msgstr[2] "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð°Ñ…\n"
 msgstr[3] "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ñ–\n"
 
-#: elf64-ppc.c:13248
+#: elf64-ppc.c:14513
 #, c-format
 msgid ""
-"  branch         %lu\n"
+"%s  branch         %lu\n"
 "  branch toc adj %lu\n"
 "  branch notoc   %lu\n"
 "  branch both    %lu\n"
@@ -4247,7 +4375,7 @@ msgid ""
 "  plt call both  %lu\n"
 "  global entry   %lu"
 msgstr ""
-"  Ð³Ñ–Ð»ÐºÐ°          %lu\n"
+"%s  Ð³Ñ–Ð»ÐºÐ°          %lu\n"
 "  toc adj Ð³Ñ–Ð»ÐºÐ¸  %lu\n"
 "  notoc Ð³Ñ–Ð»ÐºÐ¸    %lu\n"
 "  both Ð³Ñ–Ð»ÐºÐ¸     %lu\n"
@@ -4261,178 +4389,185 @@ msgstr ""
 "  plt call both  %lu\n"
 "  Ð·Ð°Ð³. Ð·Ð°Ð¿Ð¸Ñ�     %lu"
 
-#: elf64-ppc.c:13583
+#: elf64-ppc.c:14913
 #, c-format
 msgid "%H: %s used with TLS symbol `%pT'\n"
 msgstr "%H: %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ TLS Â«%pTÂ»\n"
 
-#: elf64-ppc.c:13585
+#: elf64-ppc.c:14915
 #, c-format
 msgid "%H: %s used with non-TLS symbol `%pT'\n"
 msgstr "%H: %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð¿Ð¾Ð·Ð° TLS Â«%pTÂ»\n"
 
-#: elf64-ppc.c:14245
+#: elf64-ppc.c:15670
 #, c-format
 msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
 msgstr "%P: %H: Ñƒ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ Â«%pTÂ» Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” nop, Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� toc Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ (Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð²Ð¸ÐºÐ»Ð¸Ðº plt)\n"
 
-#: elf64-ppc.c:14251
+#: elf64-ppc.c:15676
 #, c-format
 msgid "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
 msgstr "%P: %H: Ñƒ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ Â«%pTÂ» Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” nop, Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� toc Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ (Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ðµ save/adjust toc)\n"
 
-#: elf64-ppc.c:14985
+#: elf64-ppc.c:16564
 #, c-format
 msgid "%H: %s for indirect function `%pT' unsupported\n"
 msgstr "%H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð´Ð»Ñ� Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%pTÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
 
-#: elf64-ppc.c:15097
+#: elf64-ppc.c:16649
+#, c-format
+msgid "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr "%X%P: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ñ‰Ð¾Ð´Ð¾ %pT Ñ�Ðº Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ glibc\n"
+
+#: elf64-ppc.c:16704
 #, c-format
 msgid "%P: %pB: %s is not supported for `%pT'\n"
 msgstr "%P: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð´Ð»Ñ� Â«%pTÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
 
-#: elf64-ppc.c:15326
+#: elf64-ppc.c:16963
 #, c-format
 msgid "%H: error: %s not a multiple of %u\n"
 msgstr "%H: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ %u\n"
 
-#: elf64-ppc.c:15349
+#: elf64-ppc.c:16986
 #, c-format
 msgid "%H: unresolvable %s against `%pT'\n"
 msgstr "%H: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ %s Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»\n"
 
-#: elf64-ppc.c:15446
+#: elf64-ppc.c:17131
 #, c-format
 msgid "%H: %s against `%pT': error %d\n"
 msgstr "%H: %s Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° %d\n"
 
-#: elf64-s390.c:2576
+#: elf64-s390.c:2446
 #, c-format
 msgid "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-PLT Â«%sÂ» Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñƒ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ– Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð³Ð¾ Ð· Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° (Ñ�Ð»Ñ–Ð´ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» Ñ–Ð· -fPIC ?)"
 
-#: elf64-sparc.c:109 elfcode.h:1471
-#, c-format
-msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
-msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %ld"
-
-#: elf64-sparc.c:467
+#: elf64-sparc.c:478
 #, c-format
 msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
 msgstr "%pB: Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ STT_REGISTER Ð¼Ð¾Ð¶Ð½Ð° Ð¾Ð³Ð¾Ð»Ð¾ÑˆÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ %%g[2367]"
 
-#: elf64-sparc.c:488
+#: elf64-sparc.c:499
 #, c-format
 msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
 msgstr "Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ %%g%d: %s Ñƒ %pB, Ñ€Ð°Ð½Ñ–ÑˆÐµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %s Ñƒ %pB"
 
-#: elf64-sparc.c:512
+#: elf64-sparc.c:523
 #, c-format
 msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñ–Ð²: REGISTER Ñƒ %pB Ñ– %s Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñƒ %pB"
 
-#: elf64-sparc.c:559
+#: elf64-sparc.c:570
 #, c-format
 msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
 msgstr "Ð¡Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñ–Ð²: %s Ñƒ %pB Ñ– REGISTER Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñƒ %pB"
 
-#: elf64-sparc.c:691
+#: elf64-sparc.c:702
 #, c-format
 msgid "%pB: linking UltraSPARC specific with HAL specific code"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� UltraSPARC-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ‚Ð° HAL-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ"
 
-#: elf64-x86-64.c:1412
+#: elf64-x86-64.c:1417
 msgid "hidden symbol "
 msgstr "Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1420
 msgid "internal symbol "
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1423 elf64-x86-64.c:1427
 msgid "protected symbol "
 msgstr "Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1429
 msgid "symbol "
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1425 elf64-x86-64.c:1435
-msgid "; recompile with -fPIC"
-msgstr "; Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· -fPIC"
-
-#: elf64-x86-64.c:1430
+#: elf64-x86-64.c:1435
 msgid "undefined "
 msgstr "Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ "
 
-#: elf64-x86-64.c:1439
+#: elf64-x86-64.c:1445
 msgid "a shared object"
 msgstr "Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚"
 
-#: elf64-x86-64.c:1441
+#: elf64-x86-64.c:1447
+msgid "; recompile with -fPIC"
+msgstr "; Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· -fPIC"
+
+#: elf64-x86-64.c:1452
 msgid "a PIE object"
 msgstr "Ð¾Ð±'Ñ”ÐºÑ‚ PIE"
 
-#: elf64-x86-64.c:1443
+#: elf64-x86-64.c:1454
 msgid "a PDE object"
 msgstr "Ð¾Ð±'Ñ”ÐºÑ‚ PDE"
 
-#: elf64-x86-64.c:1446
+#: elf64-x86-64.c:1456
+msgid "; recompile with -fPIE"
+msgstr "; Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· -fPIE"
+
+#: elf64-x86-64.c:1460
 #, c-format
 msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ %s%sÂ«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� %s%s"
 
-#: elf64-x86-64.c:1931
+#: elf64-x86-64.c:1968
 #, c-format
 msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
 msgstr "%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– x32 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf64-x86-64.c:2073
+#: elf64-x86-64.c:2124
 #, c-format
 msgid "%pB: '%s' accessed both as normal and thread local symbol"
 msgstr "'%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ‚Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf64-x86-64.c:2696
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5302
+#: elf64-x86-64.c:2747 elfnn-aarch64.c:5546
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %<PRId64>"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ STT_GNU_IFUNC, Â«%sÂ», Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº: %<PRId64>"
 
-#: elf64-x86-64.c:2934
+#: elf64-x86-64.c:2992
 #, c-format
 msgid "%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_X86_64_GOTOFF64 Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ %s, Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf64-x86-64.c:2948
+#: elf64-x86-64.c:3006
 #, c-format
 msgid "%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object"
 msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ R_X86_64_GOTOFF64 Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— %s Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf64-x86-64.c:3208
+#: elf64-x86-64.c:3283
 #, c-format
 msgid "%pB: addend %s%#x in relocation %s against symbol `%s' at %#<PRIx64> in section `%pA' is out of range"
 msgstr "%pB: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº %s%#x Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ"
 
-#: elf64-x86-64.c:3885
+#: elf64-x86-64.c:3417 elflink.c:13267
+msgid "%F%P: corrupt input: %pB\n"
+msgstr "%F%P: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ñ– Ð²Ñ…Ñ–Ð´Ð½Ñ– Ð´Ð°Ð½Ñ–: %pB\n"
+
+#: elf64-x86-64.c:4101
 msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOTPCREL; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ¹Ñ‚Ðµ Ð· --no-relax\n"
 
-#: elf64-x86-64.c:4043
+#: elf64-x86-64.c:4259
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
 msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT Ð´Ð»Ñ� Â«%sÂ»\n"
 
-#: elf64-x86-64.c:4106
+#: elf64-x86-64.c:4322
 #, c-format
 msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
 msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� Ð³Ñ–Ð»Ð¾Ðº Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT Ð´Ð»Ñ� Â«%sÂ»\n"
 
-#: elf64-x86-64.c:4159
+#: elf64-x86-64.c:4375
 #, c-format
 msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
 msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT GOT Ð´Ð»Ñ� Â«%sÂ»\n"
 
-#: elfcode.h:323
+#: elfcode.h:326
 msgid "warning: %pB has a corrupt section with a size (%"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ (%"
 
@@ -4441,656 +4576,813 @@ msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼
 msgid "warning: %pB has a corrupt string table index - ignoring"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸Ðº Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² %pB Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ñ‚ÑŒÑ�Ñ�"
 
-#: elfcode.h:1212
+#: elfcode.h:1228
 #, c-format
 msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
 msgstr "%pB: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ð²ÐµÑ€Ñ�Ñ–Ñ— (%<PRId64>) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ (%ld)"
 
-#: elfcore.h:300
+#: elfcore.h:308
 #, c-format
 msgid "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: %<PRIu64>"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾: Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° >= %<PRIu64>, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾: %<PRIu64>."
 
-#: elflink.c:1367
+#: elflink.c:1362
 #, c-format
 msgid "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA"
 msgstr "%s: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� TLS Ñƒ %pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA, Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð½Ðµ-TLS Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pB %pA"
 
-#: elflink.c:1373
+#: elflink.c:1368
 #, c-format
 msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
 msgstr "%s: Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� TLS Ñƒ %pB Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�Ð¼ Ð½Ðµ-TLS Ñƒ %pB"
 
-#: elflink.c:1379
+#: elflink.c:1374
 #, c-format
 msgid "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
 msgstr "%s: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� TLS Ñƒ %pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA, Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�Ð¼ Ð½Ðµ-TLS Ñƒ %pB"
 
-#: elflink.c:1385
+#: elflink.c:1380
 #, c-format
 msgid "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
 msgstr "%s: Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� TLS Ñƒ %pB Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð½Ðµ-TLS Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pB %pA"
 
-#: elflink.c:2075
+#: elflink.c:2071
 #, c-format
 msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr "%pB: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð½ÐµÐ¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð²ÐµÑ€Ñ�Ñ–Ñ—, Â«%sÂ»"
 
-#: elflink.c:2452
+#: elflink.c:2448
 #, c-format
 msgid "%pB: version node not found for symbol %s"
 msgstr "%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ð²ÑƒÐ·Ð»Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ— Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elflink.c:2541
+#: elflink.c:2539
 #, c-format
 msgid "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in section `%pA'"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%#<PRIx64> >= %#lx) Ð´Ð»Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»"
 
-#: elflink.c:2553
+#: elflink.c:2551
 #, c-format
 msgid "%pB: non-zero symbol index (%#<PRIx64>) for offset %#<PRIx64> in section `%pA' when the object file has no symbol table"
 msgstr "%pB: Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ (%#<PRIx64>) Ð´Ð»Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð°Ð»Ðµ Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"
 
-#: elflink.c:2744
+#: elflink.c:2740
 #, c-format
 msgid "%pB: relocation size mismatch in %pB section %pA"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pB %pA"
 
-#: elflink.c:3066
+#: elflink.c:3069
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elflink.c:3128
+#: elflink.c:3129
 msgid "%P: copy reloc against protected `%pT' is dangerous\n"
 msgstr "%P: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ‰Ð¾Ð´Ð¾ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Â«%pTÂ» Ñ” Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ð¼\n"
 
-#: elflink.c:3932
+#: elflink.c:4064
 #, c-format
 msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
 msgstr "Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¸Ð¹ ÐºÐ¾Ð´ ELF (%d) Ñƒ %pB, Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� %d"
 
-#: elflink.c:4598
+#: elflink.c:4534
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ð²ÐµÑ€Ñ�Ñ–Ñ— %lx (Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¸Ð¹ â€” %lx)"
+
+#: elflink.c:4602
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr "%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ñ–Ð· Ñ–Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu (>= sh_info %lu)"
+
+#: elflink.c:4750
+#, c-format
+msgid "%pB: not enough version information"
+msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½Ñ– Ð²Ñ–Ð´Ð¾Ð¼Ð¾Ñ�Ñ‚Ñ– Ñ‰Ð¾Ð´Ð¾ Ð²ÐµÑ€Ñ�Ñ–Ñ—"
+
+#: elflink.c:4788
 #, c-format
 msgid "%pB: %s: invalid version %u (max %d)"
 msgstr "%pB: %s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ�, %u (Ð¼Ð°ÐºÑ�Ð¸Ð¼ÑƒÐ¼ â€” %d)"
 
-#: elflink.c:4635
+#: elflink.c:4825
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr "%pB: %s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð²ÐµÑ€Ñ�Ñ–Ñ— %d"
 
-#: elflink.c:5054
+#: elflink.c:5231
 #, c-format
 msgid "%pB: undefined reference to symbol '%s'"
 msgstr "%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
 
-#: elflink.c:6130
+#: elflink.c:6315
 #, c-format
 msgid "%pB: stack size specified and %s set"
 msgstr "%pB: Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ñ�Ñ‚ÐµÐºÐ° Ñ– Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %s"
 
-#: elflink.c:6134
+#: elflink.c:6319
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr "%pB: %s Ð½Ðµ Ñ” Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¸Ð¼"
 
-#: elflink.c:6331
+#: elflink.c:6516
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ�: %s"
 
-#: elflink.c:6902
+#: elflink.c:7088
 #, c-format
 msgid "%pB: .preinit_array section is not allowed in DSO"
 msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .preinit_array Ñƒ DSO"
 
-#: elflink.c:8359
+#: elflink.c:8602
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr "Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�, %s, Ñƒ Ñ�ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–: %s"
 
-#: elflink.c:8514
+#: elflink.c:8757
 #, c-format
 msgid "unknown operator '%c' in complex symbol"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€, Â«%cÂ», Ñƒ Ñ�ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–"
 
 #. PR 21524: Let the user know if a symbol was removed by garbage collection.
-#: elflink.c:8852
+#: elflink.c:9095
 #, c-format
 msgid "%pB:%pA: error: relocation references symbol %s which was removed by garbage collection"
 msgstr "%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s, Ñ�ÐºÐ¸Ð¹ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð·Ð°Ñ�Ð¾Ð±Ð¾Ð¼ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ñ�Ð¼Ñ–Ñ‚Ñ‚Ñ�"
 
-#: elflink.c:8855
+#: elflink.c:9098
 #, c-format
 msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
 msgstr "%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼ --gc-keep-exported"
 
-#: elflink.c:9091 elflink.c:9109 elflink.c:9148 elflink.c:9166
+#: elflink.c:9343 elflink.c:9361 elflink.c:9400 elflink.c:9418
 #, c-format
 msgid "%pB: unable to sort relocs - they are in more than one size"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: Ñ—Ñ…Ð½Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð½Ðµ Ñ” Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ð¸Ð¼Ð¸"
 
 #. The section size is not divisible by either -
 #. something is wrong.
-#: elflink.c:9125 elflink.c:9182
+#: elflink.c:9377 elflink.c:9434
 #, c-format
 msgid "%pB: unable to sort relocs - they are of an unknown size"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: Ñ—Ñ…Ð½Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ–"
 
-#: elflink.c:9234
+#: elflink.c:9486
 msgid "not enough memory to sort relocations"
 msgstr "Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ð´Ð»Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ"
 
-#: elflink.c:9502
+#: elflink.c:9767
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr "%pB: Ð·Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²: %d (>= %d)"
 
-#: elflink.c:9782
+#: elflink.c:10043
 #, c-format
 msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO"
 
-#: elflink.c:9785
+#: elflink.c:10046
 #, c-format
 msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO"
 
-#: elflink.c:9788
+#: elflink.c:10049
 #, c-format
 msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO"
 
-#: elflink.c:9874
+#: elflink.c:10135
 #, c-format
 msgid "%pB: could not find output section %pA for input section %pA"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %pA Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %pA"
 
-#: elflink.c:10028
+#: elflink.c:10289
 #, c-format
 msgid "%pB: protected symbol `%s' isn't defined"
 msgstr "%pB: Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elflink.c:10031
+#: elflink.c:10292
 #, c-format
 msgid "%pB: internal symbol `%s' isn't defined"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elflink.c:10034
+#: elflink.c:10295
 #, c-format
 msgid "%pB: hidden symbol `%s' isn't defined"
 msgstr "%pB: Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elflink.c:10066
+#: elflink.c:10327
 #, c-format
 msgid "%pB: no symbol version section for versioned symbol `%s'"
 msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ Â«%sÂ»"
 
-#: elflink.c:10679
+#: elflink.c:10699
+#, c-format
+msgid "warning: --enable-non-contiguous-regions discards section `%s' from '%s'\n"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: --enable-non-contiguous-regions Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð· Â«%sÂ»\n"
+
+#: elflink.c:10951
 #, c-format
 msgid "error: %pB: size of section %pA is not multiple of address size"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elflink.c:10724
+#: elflink.c:10996
 #, c-format
 msgid "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a non-existent global symbol"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%#<PRIx64>) Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA, Ñ�ÐºÐµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”"
 
-#: elflink.c:11484
+#: elflink.c:11739
 #, c-format
 msgid "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
 msgstr "%pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ [Â«%pAÂ» Ñƒ %pB] Ñ– Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ [Â«%pAÂ» Ñƒ %pB] Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸"
 
-#: elflink.c:11490
+#: elflink.c:11745
 #, c-format
 msgid "%pA has both ordered and unordered sections"
 msgstr "%pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ– Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸"
 
-#: elflink.c:11592
+#: elflink.c:11851
 #, c-format
 msgid "%pB: no symbol found for import library"
 msgstr "%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elflink.c:12225
+#: elflink.c:12488
 #, c-format
 msgid "%pB: file class %s incompatible with %s"
 msgstr "%pB: ÐºÐ»Ð°Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² %s Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· %s"
 
-#: elflink.c:12442
+#: elflink.c:12704
 #, c-format
 msgid "%pB: failed to generate import library"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÑƒ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elflink.c:12561
+#: elflink.c:12823
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼"
 
-#: elflink.c:12609
+#: elflink.c:12871
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾ Ð½Ð° Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÑƒ"
 
-#: elflink.c:12701
+#: elflink.c:12964
 msgid "%P%X: read-only segment has dynamic relocations\n"
 msgstr "%P%X: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�, Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�\n"
 
-#: elflink.c:12704
-msgid "%P: warning: creating a DT_TEXTREL in a shared object\n"
+#: elflink.c:12967
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
 msgstr "%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ DT_TEXTREL Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�\n"
 
-#: elflink.c:12829
+#: elflink.c:12970
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr "%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ DT_TEXTREL Ñƒ PIE\n"
+
+#: elflink.c:13095
 msgid "%P%X: can not read symbols: %E\n"
 msgstr "%P%X: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸: %E\n"
 
-#: elflink.c:13002
-msgid "%F%P: corrupt input: %pB\n"
-msgstr "%F%P: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ñ– Ð²Ñ…Ñ–Ð´Ð½Ñ– Ð´Ð°Ð½Ñ–: %pB\n"
+#: elflink.c:13500
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%F%P: %pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð»Ñ� --gc-sections Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð¿Ñ€Ð¸Ñ”Ð´Ð½Ð°Ð½Ð¸Ð¹ (linked-to) Ñ€Ð¾Ð·Ð´Ñ–Ð»\n"
 
-#: elflink.c:13668
+#: elflink.c:13961
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
 msgstr "%pB: %pA+%#<PRIx64>: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð»Ñ� INHERIT"
 
-#: elflink.c:13844
+#: elflink.c:14002
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ»: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� VTENTRY"
+
+#: elflink.c:14145
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr "Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ INPUT_SECTION_FLAG, %s\n"
 
-#: elfxx-mips.c:1450
+#: elflink.c:14891
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr "%P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»\n"
+
+#: elflink.c:14980
+msgid "%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s\n"
+msgstr "%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ñ… Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ GNU Ñ–Ð· DT_TEXTREL Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ— Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿ÑƒÑ�ÐºÑƒ; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· %s\n"
+
+#: elfxx-aarch64.c:477
+#, c-format
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð»Ð°Ð±ÐºÐ¸Ñ… TLS Ð·Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð²Ñ–Ð´ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ– Ð¼Ð¾Ð¶Ðµ Ð½Ðµ Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ñ‚Ð¸ Ñ‚Ð°Ðº, Ñ�Ðº Ð²Ð¸ Ð½Ð° Ñ‚Ðµ Ñ�Ð¿Ð¾Ð´Ñ–Ð²Ð°Ñ”Ñ‚ÐµÑ�Ñ�"
+
+#: elfxx-aarch64.c:738 elfnn-aarch64.c:9902 elfnn-aarch64.c:9909
+#, c-format
+msgid "%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section."
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: BTI Ð²Ð¼Ð¸ÐºÐ°Ñ”Ñ‚ÑŒÑ�Ñ� -z force-bti, Ñ�ÐºÑ‰Ð¾ ÑƒÑ�Ñ– Ð²Ñ…Ñ–Ð´Ð½Ñ– Ð´Ð°Ð½Ñ– Ð½Ðµ Ð¼Ð°ÑŽÑ‚ÑŒ BTI Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– NOTE."
+
+#: elfxx-aarch64.c:758 elfxx-x86.c:2554
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹ GNU\n"
+
+#: elfxx-aarch64.c:762 elfxx-x86.c:2559
+#, c-format
+msgid "%F%pA: failed to align section\n"
+msgstr "%F%pA: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€\n"
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾Ð³Ð¾ AArch64: 0x%x>"
+
+#: elfxx-mips.c:1507
 msgid "static procedure (no name)"
 msgstr "Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° (Ð±ÐµÐ· Ð½Ð°Ð·Ð²Ð¸)"
 
-#: elfxx-mips.c:5718
+#: elfxx-mips.c:5782
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ— MIPS16 Ñ– microMIPS Ð½Ðµ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ñ‚Ð¸ Ð¾Ð´Ð½Ð° Ð¾Ð´Ð½Ñƒ"
 
-#: elfxx-mips.c:6485
+#: elfxx-mips.c:6547
 msgid "%X%H: unsupported JALX to the same ISA mode\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ JALX Ð´Ð¾ Ñ‚Ð¾Ð³Ð¾ Ñ�Ð°Ð¼Ð¾Ð³Ð¾ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ ISA\n"
 
-#: elfxx-mips.c:6518
+#: elfxx-mips.c:6580
 msgid "%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð¼Ñ–Ð¶ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ð· ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼ Ð²Ð·Ð°Ñ”Ð¼Ð½Ð¸Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼\n"
 
-#: elfxx-mips.c:6563
+#: elfxx-mips.c:6625
 msgid "%X%H: cannot convert branch between ISA modes to JALX: relocation out of range\n"
 msgstr "%X%H: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÑŽÐ²Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð¼Ñ–Ð¶ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA Ð½Ð° JALX: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ\n"
 
-#: elfxx-mips.c:6575
+#: elfxx-mips.c:6637
 msgid "%X%H: unsupported branch between ISA modes\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð¼Ñ–Ð¶ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA\n"
 
-#: elfxx-mips.c:7223
+#: elfxx-mips.c:7286
 #, c-format
 msgid "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«.reginfoÂ»; Ð¼Ð°Ð² Ð±ÑƒÑ‚Ð¸ %<PRIu64>, Ð¼Ð°Ñ”Ð¼Ð¾ %<PRIu64>"
 
-#: elfxx-mips.c:7267 elfxx-mips.c:7502
+#: elfxx-mips.c:7330 elfxx-mips.c:7567
 #, c-format
 msgid "%pB: warning: bad `%s' option size %u smaller than its header"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Â«%sÂ», %u, Ð¼ÐµÐ½ÑˆÐ¸Ð¹ Ð·Ð° Ð¹Ð¾Ð³Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº"
 
-#: elfxx-mips.c:8300 elfxx-mips.c:8426
+#: elfxx-mips.c:8374 elfxx-mips.c:8500
 #, c-format
 msgid "%pB: warning: cannot determine the target function for stub section `%s'"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°, Â«%sÂ»"
 
-#: elfxx-mips.c:8558
+#: elfxx-mips.c:8632
 #, c-format
 msgid "%pB: malformed reloc detected for section %s"
 msgstr "%pB: Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ– Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ�"
 
-#: elfxx-mips.c:8658
+#: elfxx-mips.c:8731
 #, c-format
 msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOT Ñƒ %#<PRIx64> Ñ” Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¼ Ñƒ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñ…"
 
-#: elfxx-mips.c:8796
+#: elfxx-mips.c:8871
 #, c-format
 msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CALL16 Ñƒ %#<PRIx64> Ð½Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elfxx-mips.c:9086
+#: elfxx-mips.c:9174
 #, c-format
 msgid "%X%H: relocation %s against `%s' cannot be used when making a shared object; recompile with -fPIC\n"
 msgstr "%X%H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC\n"
 
-#: elfxx-mips.c:9422
+#: elfxx-mips.c:9300
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr "Ð¡Ð¸Ð¼Ð²Ð¾Ð» IFUNC %s Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ IFUNCS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+
+#: elfxx-mips.c:9303
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"
+
+#: elfxx-mips.c:9523
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr "Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°ÑŽÑ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», %s"
 
-#: elfxx-mips.c:10350
+#: elfxx-mips.c:10457
 #, c-format
 msgid "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in section `%pA'"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� LO16 Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð´Ð»Ñ� %s Ñƒ %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»"
 
-#: elfxx-mips.c:10490
+#: elfxx-mips.c:10597
 msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
 msgstr "Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 64 ÐºÐ‘; Ð½Ð¸Ð¶Ñ‡Ð¸Ð¹ Ð·Ð° Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (Ð´Ð¸Ð². Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)"
 
-#: elfxx-mips.c:10509
+#: elfxx-mips.c:10616
 msgid "cannot convert a jump to JALX for a non-word-aligned address"
 msgstr "Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð½Ð° JALX Ð´Ð»Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸, Ñ�ÐºÑƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð°"
 
-#: elfxx-mips.c:10512
+#: elfxx-mips.c:10619
 msgid "jump to a non-word-aligned address"
 msgstr "Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ�Ð»Ð¾Ð²Ð¾Ð¼ Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elfxx-mips.c:10513
+#: elfxx-mips.c:10620
 msgid "jump to a non-instruction-aligned address"
 msgstr "Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elfxx-mips.c:10516
+#: elfxx-mips.c:10623
 msgid "cannot convert a branch to JALX for a non-word-aligned address"
 msgstr "Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð½Ð° JALX Ð´Ð»Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸, Ñ�ÐºÑƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð°"
 
-#: elfxx-mips.c:10518
+#: elfxx-mips.c:10625
 msgid "branch to a non-instruction-aligned address"
 msgstr "Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elfxx-mips.c:10520
+#: elfxx-mips.c:10627
 msgid "PC-relative load from unaligned address"
 msgstr "Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ð· Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elfxx-mips.c:10798
+#: elfxx-mips.c:10927
 #, c-format
 msgid "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
 msgstr "%pB: Ð·Ð°Ð¿Ð¸Ñ� Â«%pAÂ» VMA %#<PRIx64> Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð¿Ð¾Ð·Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¼ 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ�Ñ� Â«-Ttext-segment=...Â»"
 
-#: elfxx-mips.c:10911 elfxx-mips.c:11484
+#: elfxx-mips.c:11042 elfxx-mips.c:11629
 #, c-format
 msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
 msgstr "%pB: Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� Â«%pAÂ» %<PRId64> Ð· Â«%pAÂ» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ ADDIUPC"
 
-#: elfxx-mips.c:11456
+#: elfxx-mips.c:11601
 #, c-format
 msgid "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
 msgstr "%pB: Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº Â«%pAÂ» VMA %#<PRIx64> Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð¿Ð¾Ð·Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¼ 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ñ�ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ�Ñ� Â«-Ttext-segment=...Â»"
 
-#: elfxx-mips.c:14397
+#: elfxx-mips.c:14556
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %s"
 
-#: elfxx-mips.c:14931
+#: elfxx-mips.c:15090
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Â«%pAÂ»"
 
-#: elfxx-mips.c:15208
+#: elfxx-mips.c:15367
 #, c-format
 msgid "%pB: warning: linking abicalls files with non-abicalls files"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² abicalls Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· abicalls"
 
-#: elfxx-mips.c:15225
+#: elfxx-mips.c:15384
 #, c-format
 msgid "%pB: linking 32-bit code with 64-bit code"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ Ð· 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ ÐºÐ¾Ð´Ð¾Ð¼"
 
-#: elfxx-mips.c:15257 elfxx-mips.c:15323 elfxx-mips.c:15338
+#: elfxx-mips.c:15416 elfxx-mips.c:15482 elfxx-mips.c:15497
 #, c-format
 msgid "%pB: linking %s module with previous %s modules"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÑ”Ð¼Ð¾ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ %s Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s"
 
-#: elfxx-mips.c:15281
+#: elfxx-mips.c:15440
 #, c-format
 msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ABI: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s"
 
-#: elfxx-mips.c:15306
+#: elfxx-mips.c:15465
 #, c-format
 msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ASE: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s"
 
-#: elfxx-mips.c:15440
+#: elfxx-mips.c:15599
 #, c-format
 msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %d"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð· Ñ‡Ð¸Ñ�Ð»Ð°Ð¼Ð¸ Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %d, (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ð´Ð»Ñ� Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %d"
 
-#: elfxx-mips.c:15446
+#: elfxx-mips.c:15605
 #, c-format
 msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð· Ñ‡Ð¸Ñ�Ð»Ð°Ð¼Ð¸ Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %d, (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s"
 
-#: elfxx-mips.c:15452
+#: elfxx-mips.c:15611
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI Ð´Ð»Ñ� Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð· Ñ‡Ð¸Ñ�Ð»Ð°Ð¼Ð¸ Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ, %d"
 
-#: elfxx-mips.c:15466
+#: elfxx-mips.c:15625
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s"
 
-#: elfxx-mips.c:15485
+#: elfxx-mips.c:15644
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA, %d"
 
-#: elfxx-mips.c:15497
+#: elfxx-mips.c:15656
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA, %d, (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s"
 
-#: elfxx-mips.c:15506
+#: elfxx-mips.c:15665
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA %d (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %pB), Ð° %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ABI MSA, %d"
 
-#: elfxx-mips.c:15568
+#: elfxx-mips.c:15727
 #, c-format
 msgid "%pB: endianness incompatible with that of the selected emulation"
 msgstr "%pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾Ñ— ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—"
 
-#: elfxx-mips.c:15582
+#: elfxx-mips.c:15741
 #, c-format
 msgid "%pB: ABI is incompatible with that of the selected emulation"
 msgstr "%pB: ABI Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· ABI Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾Ñ— ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—"
 
-#: elfxx-mips.c:15634
+#: elfxx-mips.c:15794
 #, c-format
 msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ ISA Ð¼Ñ–Ð¶ e_flags Ñ– .MIPS.abiflags"
 
-#: elfxx-mips.c:15639
+#: elfxx-mips.c:15799
 #, c-format
 msgid "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ ABI FP Ð¼Ñ–Ð¶ .gnu.attributes Ñ– .MIPS.abiflags"
 
-#: elfxx-mips.c:15643
+#: elfxx-mips.c:15803
 #, c-format
 msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ ASE Ð¼Ñ–Ð¶ e_flags Ñ– .MIPS.abiflags"
 
-#: elfxx-mips.c:15650
+#: elfxx-mips.c:15810
 #, c-format
 msgid "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½ÑŒ ISA Ð¼Ñ–Ð¶ e_flags Ñ– .MIPS.abiflags"
 
-#: elfxx-mips.c:15654
+#: elfxx-mips.c:15814
 #, c-format
 msgid "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñƒ Ð¿Ð¾Ð»Ñ– flags2 .MIPS.abiflags (0x%lx)"
 
-#: elfxx-mips.c:15843
+#: elfxx-mips.c:16005
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr "-mips32r2 -mfp64 (12 Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ñ… Ð´Ð»Ñ� Ð²Ð¸ÐºÐ»Ð¸ÐºÑ–Ð² Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²)"
 
-#: elfxx-mips.c:15905 elfxx-mips.c:15916
+#: elfxx-mips.c:16067 elfxx-mips.c:16078
 msgid "None"
 msgstr "Ð�ÐµÐ¼Ð°Ñ”"
 
-#: elfxx-mips.c:15907 elfxx-mips.c:15976
+#: elfxx-mips.c:16069 elfxx-mips.c:16138
 msgid "Unknown"
 msgstr "Ð�ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹"
 
-#: elfxx-mips.c:15987
+#: elfxx-mips.c:16149
 #, c-format
 msgid "Hard or soft float\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð°Ð±Ð¾ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ°\n"
 
-#: elfxx-mips.c:15990
+#: elfxx-mips.c:16152
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð° Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŒ)\n"
 
-#: elfxx-mips.c:15993
+#: elfxx-mips.c:16155
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð° Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŒ)\n"
 
-#: elfxx-mips.c:15996
+#: elfxx-mips.c:16158
 #, c-format
 msgid "Soft float\n"
 msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ°\n"
 
-#: elfxx-mips.c:15999
+#: elfxx-mips.c:16161
 #, c-format
 msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ñ�Ð¿Ñ–Ð²Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€ MIPS32r2, 12 Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ñ… Ð´Ð»Ñ� Ð²Ð¸ÐºÐ»Ð¸ÐºÑ–Ð² Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²)\n"
 
-#: elfxx-mips.c:16002
+#: elfxx-mips.c:16164
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, Ð±ÑƒÐ´ÑŒ-Ñ�ÐºÐ¸Ð¹ FPU)\n"
 
-#: elfxx-mips.c:16005
+#: elfxx-mips.c:16167
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ FPU)\n"
 
-#: elfxx-mips.c:16008
+#: elfxx-mips.c:16170
 #, c-format
 msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
 msgstr "Ð¡ÑƒÐ¼Ñ–Ñ�Ð½Ñ–Ñ�Ñ‚ÑŒ Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾Ñ— Ñ€ÑƒÑ…Ð¾Ð¼Ð¾Ñ— ÐºÑ€Ð°Ð¿ÐºÐ¸ (32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ FPU)\n"
 
-#: elfxx-mips.c:16040
+#: elfxx-mips.c:16202
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:16042
+#: elfxx-mips.c:16204
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:16044
+#: elfxx-mips.c:16206
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:16046
+#: elfxx-mips.c:16208
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:16048
+#: elfxx-mips.c:16210
 #, c-format
 msgid " [abi unknown]"
 msgstr " [Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ abi]"
 
-#: elfxx-mips.c:16050
+#: elfxx-mips.c:16212
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:16052
+#: elfxx-mips.c:16214
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:16054
+#: elfxx-mips.c:16216
 #, c-format
 msgid " [no abi set]"
 msgstr " [Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ abi]"
 
-#: elfxx-mips.c:16079
+#: elfxx-mips.c:16241
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ISA]"
 
-#: elfxx-mips.c:16099
+#: elfxx-mips.c:16261
 #, c-format
 msgid " [not 32bitmode]"
 msgstr " [Ð½Ðµ 32-Ð±Ñ–Ñ‚.Ñ€ÐµÐ¶Ð¸Ð¼]"
 
-#: elfxx-sparc.c:3113
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5286
+#: elfxx-riscv.c:1063
+#, c-format
+msgid "-march=%s: Expect number after `%dp'."
+msgstr "-march=%s: Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Ñ‡Ð¸Ñ�Ð»Ð¾ Ð¿Ñ–Ñ�Ð»Ñ� Â«%dpÂ»."
+
+#: elfxx-riscv.c:1174
+#, c-format
+msgid "-march=%s: rv%de is not a valid base ISA"
+msgstr "-march=%s: rv%de Ð½Ðµ Ñ” ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ ISA Ð¾Ñ�Ð½Ð¾Ð²Ð¸"
+
+#: elfxx-riscv.c:1214
+#, c-format
+msgid "-march=%s: first ISA subset must be `e', `i' or `g'"
+msgstr "-march=%s: Ð¿ÐµÑ€ÑˆÐ¾ÑŽ Ð¿Ñ–Ð´Ð¼Ð½Ð¾Ð¶Ð¸Ð½Ð¾ÑŽ ISA Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Â«eÂ», Â«iÂ» Ð°Ð±Ð¾ Â«gÂ»"
+
+#: elfxx-riscv.c:1242
+#, c-format
+msgid "-march=%s: unsupported ISA subset `%c'"
+msgstr "-march=%s: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ñ–Ð´Ð¼Ð½Ð¾Ð¶Ð¸Ð½Ð° ISA Â«%cÂ»"
+
+#: elfxx-riscv.c:1245
+#, c-format
+msgid "-march=%s: ISA string is not in canonical order. `%c'"
+msgstr "-march=%s: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð·Ð°Ð¿Ð¸Ñ�Ð°Ð½Ð¾ Ð½Ðµ Ñƒ ÐºÐ°Ð½Ð¾Ð½Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ. Â«%cÂ»"
+
+#: elfxx-riscv.c:1364
+#, c-format
+msgid "-march=%s: Invalid or unknown %s ISA extension: '%s'"
+msgstr "-march=%s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð°Ð±Ð¾ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %s: Â«%sÂ»"
+
+#: elfxx-riscv.c:1375
+#, c-format
+msgid "-march=%s: Duplicate %s ISA extension: '%s'"
+msgstr "-march=%s: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %s: Â«%sÂ»"
+
+#: elfxx-riscv.c:1386
+#, c-format
+msgid "-march=%s: %s ISA extension not in alphabetical order: '%s' must come before '%s'."
+msgstr "-march=%s: Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %s Ð½Ðµ Ñƒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð·Ð° Ð°Ð±ÐµÑ‚ÐºÐ¾ÑŽ: Â«%sÂ» Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð¿ÐµÑ€ÐµÐ´ Â«%sÂ»."
+
+#: elfxx-riscv.c:1407
+#, c-format
+msgid "-march=%s: %s must separate with _"
+msgstr "-march=%s: %s Ñ�Ð»Ñ–Ð´ Ð²Ñ–Ð´Ð¾ÐºÑ€ÐµÐ¼Ð»ÑŽÐ²Ð°Ñ‚Ð¸ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ _"
+
+#: elfxx-riscv.c:1523
+#, c-format
+msgid "-march=%s: ISA string must begin with rv32 or rv64"
+msgstr "-march=%s: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð¼Ð°Ñ” Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ‚Ð¸Ñ�Ñ� Ð· rv32 Ð°Ð±Ð¾ rv64"
+
+#: elfxx-riscv.c:1544
+#, c-format
+msgid "-march=%s: unexpected ISA string at end: %s"
+msgstr "-march=%s: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº ISA Ð½Ð°Ð¿Ñ€Ð¸ÐºÑ–Ð½Ñ†Ñ–: %s"
+
+#: elfxx-riscv.c:1553
+#, c-format
+msgid "-march=%s: rv32e does not support the `f' extension"
+msgstr "-march=%s: Ñƒ rv32e Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«fÂ»"
+
+#: elfxx-riscv.c:1562
+#, c-format
+msgid "-march=%s: `d' extension requires `f' extension"
+msgstr "-march=%s: Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«dÂ» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«fÂ»"
+
+#: elfxx-riscv.c:1571
+#, c-format
+msgid "-march=%s: `q' extension requires `d' extension"
+msgstr "-march=%s: Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«qÂ» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«dÂ»"
+
+#: elfxx-riscv.c:1579
+#, c-format
+msgid "-march=%s: rv32 does not support the `q' extension"
+msgstr "-march=%s: Ñƒ rv32 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«qÂ»"
+
+#: elfxx-sparc.c:3002 elfnn-aarch64.c:5530
 #, c-format
 msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ STT_GNU_IFUNC Â«%sÂ» Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ”Ñ‚ÑŒÑ�Ñ� %s"
 
-#: elfxx-tilegx.c:4254
+#: elfxx-tilegx.c:4128
 #, c-format
 msgid "%pB: cannot link together %s and %s objects"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸ %s Ñ‚Ð° %s"
 
-#: elfxx-x86.c:578
+#: elfxx-x86.c:976
 #, c-format
-msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
-msgstr "%P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»\n"
+msgid "%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%F%P: %pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾\n"
 
-#: elfxx-x86.c:1027
+#: elfxx-x86.c:1058
 msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
 msgstr "%P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Â«%pAÂ»\n"
 
-#: elfxx-x86.c:1383
-msgid "%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC\n"
-msgstr "%P%X: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�, Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� IFUNC. Ð¡Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ð· -fPIC\n"
-
-#: elfxx-x86.c:2384
+#: elfxx-x86.c:2314
 #, c-format
 msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– (0x%x) x86: 0x%x>"
 
-#: elfxx-x86.c:2609
-msgid "%F%P: failed to create GNU property section\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹ GNU\n"
+#: elfxx-x86.c:2580
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ %s\n"
+
+#: elfxx-x86.c:2582
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ %s\n"
+
+#: elfxx-x86.c:2605
+msgid "IBT and SHSTK properties"
+msgstr "Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– IBT Ñ– SHSTK"
+
+#: elfxx-x86.c:2607
+msgid "IBT property"
+msgstr "Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ IBT"
 
-#: elfxx-x86.c:2614
-#, c-format
-msgid "%F%pA: failed to align section\n"
-msgstr "%F%pA: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€\n"
+#: elfxx-x86.c:2609
+msgid "SHSTK property"
+msgstr "Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ SHSTK"
 
-#: elfxx-x86.c:2760
+#: elfxx-x86.c:2753
 msgid "%F%P: failed to create VxWorks dynamic sections\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ VxWorks\n"
 
-#: elfxx-x86.c:2769
+#: elfxx-x86.c:2762
 msgid "%F%P: failed to create GOT sections\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ GOT\n"
 
-#: elfxx-x86.c:2787
+#: elfxx-x86.c:2780
 msgid "%F%P: failed to create ifunc sections\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ ifunc\n"
 
-#: elfxx-x86.c:2828
+#: elfxx-x86.c:2817
 msgid "%F%P: failed to create GOT PLT section\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT GOT\n"
 
-#: elfxx-x86.c:2849
+#: elfxx-x86.c:2836
 msgid "%F%P: failed to create IBT-enabled PLT section\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT Ñ–Ð· ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼ IBT\n"
 
-#: elfxx-x86.c:2864
+#: elfxx-x86.c:2850
 msgid "%F%P: failed to create BND PLT section\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT BND\n"
 
-#: elfxx-x86.c:2885
+#: elfxx-x86.c:2870
 msgid "%F%P: failed to create PLT .eh_frame section\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT\n"
 
-#: elfxx-x86.c:2898
+#: elfxx-x86.c:2883
 msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT GOT\n"
 
-#: elfxx-x86.c:2912
+#: elfxx-x86.c:2897
 msgid "%F%P: failed to create the second PLT .eh_frame section\n"
 msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT\n"
 
+#: elfxx-x86.c:2939
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr "%X%P: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¾Ð±'Ñ”ÐºÑ‚Ð° Â«%pBÂ»\n"
+
 #: ihex.c:230
 #, c-format
 msgid "%pB:%d: unexpected character `%s' in Intel Hex file"
@@ -5101,67 +5393,67 @@ msgstr "%pB:%d: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹
 msgid "%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"
 msgstr "%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð° Ñ�ÑƒÐ¼Ð° Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel (Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� %u, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %u)"
 
-#: ihex.c:394
+#: ihex.c:393
 #, c-format
 msgid "%pB:%u: bad extended address record length in Intel Hex file"
 msgstr "%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel"
 
-#: ihex.c:412
+#: ihex.c:411
 #, c-format
 msgid "%pB:%u: bad extended start address length in Intel Hex file"
 msgstr "%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel"
 
-#: ihex.c:430
+#: ihex.c:429
 #, c-format
 msgid "%pB:%u: bad extended linear address record length in Intel Hex file"
 msgstr "%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð»Ñ–Ð½Ñ–Ð¹Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel"
 
-#: ihex.c:448
+#: ihex.c:447
 #, c-format
 msgid "%pB:%u: bad extended linear start address length in Intel Hex file"
 msgstr "%pB:%u: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ñ— Ð»Ñ–Ð½Ñ–Ð¹Ð½Ð¾Ñ— Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel"
 
-#: ihex.c:466
+#: ihex.c:465
 #, c-format
 msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
 msgstr "%pB:%u: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ ihex %u Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel"
 
-#: ihex.c:585
+#: ihex.c:581
 #, c-format
 msgid "%pB: internal error in ihex_read_section"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ ihex_read_section"
 
-#: ihex.c:619
+#: ihex.c:614
 #, c-format
 msgid "%pB: bad section length in ihex_read_section"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ ihex_read_section"
 
-#: ihex.c:793
+#: ihex.c:785
 #, c-format
 msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
 msgstr "%pB: 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° %#<PRIx64> Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° Intel"
 
-#: ihex.c:852
+#: ihex.c:843
 #, c-format
 msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
 msgstr "%pB: Ð°Ð´Ñ€ÐµÑ�Ð° %#<PRIx64> Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° Intel"
 
-#: libbfd.c:937
+#: libbfd.c:884
 #, c-format
 msgid "%pB: unable to get decompressed section %pA"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA"
 
-#: libbfd.c:1101
+#: libbfd.c:1048
 #, c-format
 msgid "Deprecated %s called at %s line %d in %s\n"
 msgstr "Ð’Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñƒ %s Ñƒ %s, Ñ€Ñ�Ð´Ð¾Ðº %d Ñƒ %s\n"
 
-#: libbfd.c:1104
+#: libbfd.c:1051
 #, c-format
 msgid "Deprecated %s called\n"
 msgstr "Ð’Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñƒ %s\n"
 
-#: linker.c:1697
+#: linker.c:1696
 #, c-format
 msgid "%pB: indirect symbol `%s' to `%s' is a loop"
 msgstr "%pB: Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ» Ñ” Ñ†Ð¸ÐºÐ»Ð¾Ð¼"
@@ -5171,179 +5463,213 @@ msgstr "%pB: Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð
 msgid "attempt to do relocatable link with %s input and %s output"
 msgstr "Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð·Ð²â€™Ñ�Ð·ÐºÑƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· Ð²Ñ…Ñ–Ð´Ð½Ð¸Ð¼ %s Ñ– Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ð¼ %s"
 
-#: linker.c:2853
+#: linker.c:2852
 #, c-format
 msgid "%pB: ignoring duplicate section `%pA'\n"
 msgstr "%pB: Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»\n"
 
-#: linker.c:2863 linker.c:2873
+#: linker.c:2862 linker.c:2872
 #, c-format
 msgid "%pB: duplicate section `%pA' has different size\n"
 msgstr "%pB: Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð¼Ð°Ñ” Ñ–Ð½ÑˆÐ¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€\n"
 
-#: linker.c:2882 linker.c:2888
+#: linker.c:2881 linker.c:2887
 #, c-format
 msgid "%pB: could not read contents of section `%pA'\n"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»\n"
 
-#: linker.c:2893
+#: linker.c:2892
 #, c-format
 msgid "%pB: duplicate section `%pA' has different contents\n"
 msgstr "%pB: Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð¼Ð°Ñ” Ñ–Ð½ÑˆÐ¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚\n"
 
-#: linker.c:3407
+#: linker.c:3404
 #, c-format
 msgid "%pB: compiled for a big endian system and target is little endian"
 msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸ Ð· Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð², Ð° Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ñ” Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
-#: linker.c:3410
+#: linker.c:3407
 #, c-format
 msgid "%pB: compiled for a little endian system and target is big endian"
 msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸ Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð², Ð° Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ñ” Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð·Ñ– Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
-#: mach-o.c:632
+#: mach-o-arm.c:172
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð°Ñ€Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ mach-o ARM: reloc Ñ” Ð¿ÐµÑ€ÑˆÐ¸Ð¼ reloc"
+
+#: mach-o-arm.c:188
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð°Ñ€Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:203
+#, c-format
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:218
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:233
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:265
+#, c-format
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %d (pcrel: %d)"
+
+#: mach-o-arm.c:329
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� mach-o ARM: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %d"
+
+#: mach-o.c:633
 #, c-format
 msgid "<unknown mask flags>"
 msgstr "<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð¼Ð°Ñ�ÐºÑƒÐ²Ð°Ð½Ð½Ñ�>"
 
-#: mach-o.c:687
+#: mach-o.c:688
 msgid " (<unknown>)"
 msgstr " (<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾>)"
 
-#: mach-o.c:698
+#: mach-o.c:699
 #, c-format
 msgid " MACH-O header:\n"
 msgstr "Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº MACH-O:\n"
 
-#: mach-o.c:699
+#: mach-o.c:700
 #, c-format
 msgid "   magic:      %#lx\n"
 msgstr "  magic:       %#lx\n"
 
-#: mach-o.c:700
+#: mach-o.c:701
 #, c-format
 msgid "   cputype:    %#lx (%s)\n"
 msgstr " Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¾Ñ†. : %#lx (%s)\n"
 
-#: mach-o.c:702
+#: mach-o.c:703
 #, c-format
 msgid "   cpusubtype: %#lx%s\n"
 msgstr " Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¾Ñ†.: %#lx (%s)\n"
 
-#: mach-o.c:704
+#: mach-o.c:705
 #, c-format
 msgid "   filetype:   %#lx\n"
 msgstr " Ñ‚Ð¸Ð¿ Ñ„Ð°Ð¹Ð»Ð° : %#lx\n"
 
-#: mach-o.c:705
+#: mach-o.c:706
 #, c-format
 msgid "   ncmds:      %#lx\n"
 msgstr " ÐºÑ‚ÑŒ_ÐºÐ¾Ð¼Ð°Ð½Ð´: %#lx\n"
 
-#: mach-o.c:706
+#: mach-o.c:707
 #, c-format
 msgid "   sizeocmds:  %#lx\n"
 msgstr " Ñ€Ð¾Ð·Ð¼Ñ–Ñ€_ÐºÐ¼Ð´: %#lx\n"
 
-#: mach-o.c:707
+#: mach-o.c:708
 #, c-format
 msgid "   flags:      %#lx\n"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: %lx\n"
 
-#: mach-o.c:708
+#: mach-o.c:709
 #, c-format
 msgid "   version:    %x\n"
 msgstr "  Ð²ÐµÑ€Ñ�Ñ–Ñ�:      %x\n"
 
 #. Urg - what has happened ?
-#: mach-o.c:743
+#: mach-o.c:744
 #, c-format
 msgid "incompatible cputypes in mach-o files: %ld vs %ld"
 msgstr "Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ‚Ð¸Ð¿Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð² Ñƒ Ñ„Ð°Ð¹Ð»Ð°Ñ… mach-o: %ld Ñ– %ld"
 
-#: mach-o.c:912
+#: mach-o.c:913
 msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
 msgstr "bfd_mach_o_canonicalize_symtab: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸"
 
-#: mach-o.c:2108
+#: mach-o.c:1505
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� mach-o: Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²"
+
+#: mach-o.c:2139
 msgid "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands."
 msgstr "Ð²Ð¸Ð±ÐµÑ‡Ñ‚Ðµ, modtab, toc Ñ‚Ð° extrefsyms Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´ dysymtab Ñƒ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ–Ð¹ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ‰Ðµ Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾."
 
-#: mach-o.c:2554
+#: mach-o.c:2587
 #, c-format
 msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
 msgstr "mach-o: Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² (%u), Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð° ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” 255,\n"
 
-#: mach-o.c:2661
+#: mach-o.c:2694
 #, c-format
 msgid "unable to allocate data for load command %#x"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð´Ð°Ð½Ñ– Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� %#x"
 
-#: mach-o.c:2766
+#: mach-o.c:2799
 #, c-format
 msgid "unable to write unknown load command %#x"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#x"
 
-#: mach-o.c:2950
+#: mach-o.c:2983
 #, c-format
 msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
 msgstr "Ð°Ð´Ñ€ÐµÑ�Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%<PRIx64>) Ð½Ð¸Ð¶Ñ‡Ðµ Ð·Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° (%<PRIx64>)"
 
-#: mach-o.c:3092
+#: mach-o.c:3125
 #, c-format
 msgid "unable to layout unknown load command %#x"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#x"
 
-#: mach-o.c:3628
+#: mach-o.c:3660
 #, c-format
 msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 instead"
 msgstr "bfd_mach_o_read_section_32: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: %#lx, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ð·Ð°Ð¼Ñ–Ñ�Ñ‚ÑŒ Ð½ÑŒÐ¾Ð³Ð¾ 32"
 
-#: mach-o.c:3671
+#: mach-o.c:3703
 #, c-format
 msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 instead"
 msgstr "bfd_mach_o_read_section_32: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: %#lx, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ð·Ð°Ð¼Ñ–Ñ�Ñ‚ÑŒ Ð½ÑŒÐ¾Ð³Ð¾ 32"
 
-#: mach-o.c:3722
+#: mach-o.c:3754
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
 msgstr "bfd_mach_o_read_symtab_symbol: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ %d Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñƒ %u"
 
-#: mach-o.c:3741
+#: mach-o.c:3773
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
 msgstr "bfd_mach_o_read_symtab_symbol: Ð½Ð°Ð·Ð²Ð° Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ (%lu >= %u)"
 
-#: mach-o.c:3824
+#: mach-o.c:3856
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d (max %lu): setting to undefined"
 msgstr "bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %d (max %lu): Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÑ”Ð¼Ð¾ Ñƒ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�"
 
-#: mach-o.c:3843
+#: mach-o.c:3875
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x%x: setting to undefined"
 msgstr "bfd_mach_o_read_symtab_symbol: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ð¾Ð»Ñ� 0x%x: Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÑ”Ð¼Ð¾ Ñƒ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�"
 
-#: mach-o.c:3920
-msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
-msgstr "bfd_mach_o_read_symtab_symbols: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÑŒ Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"
-
-#: mach-o.c:4931
+#: mach-o.c:5064
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#x"
 
-#: mach-o.c:5122
+#: mach-o.c:5263
 #, c-format
 msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
 msgstr "bfd_mach_o_scan: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°, 0x%lx/0x%lx"
 
-#: mach-o.c:5227
+#: mach-o.c:5385
 #, c-format
 msgid "unknown header byte-order value %#x"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ, %#x"
 
-#: merge.c:878
+#: merge.c:895
 #, c-format
 msgid "%pB: access beyond end of merged section (%<PRId64>)"
 msgstr "%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%<PRId64>)"
@@ -5358,122 +5684,122 @@ msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð´Ð
 msgid "%pB: no core to allocate a symbol %d bytes long"
 msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¾ÑŽ %d Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
-#: mmo.c:955
+#: mmo.c:952
 #, c-format
 msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
 msgstr "%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð½Ð°Ð´Ñ–Ñ�Ð»Ð°Ñ‚Ð¸ Ð´Ð°Ð½Ñ– Ð½Ð° Ð½ÐµÐºÑ€Ð°Ñ‚Ð½Ñƒ Ð´Ð¾ 4 Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>"
 
-#: mmo.c:1252
+#: mmo.c:1248
 #, c-format
 msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð´Ð»Ñ� $255 Ð½Ðµ Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” Â«MainÂ»\n"
 
-#: mmo.c:1399
+#: mmo.c:1395
 #, c-format
 msgid "%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
 msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° ÑˆÐ¸Ñ€Ð¾ÐºÐ° Ð¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² 0x%02X 0x%02X Ð¿Ñ–Ñ�Ð»Ñ� Ð½Ð°Ð·Ð²Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ð¿Ð¾Ñ‡Ð¸Ð½Ð°ÑŽÑ‡Ð¸ Ð· Â«%sÂ»\n"
 
-#: mmo.c:1633
+#: mmo.c:1628
 #, c-format
 msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� lopcode, Â«%dÂ»\n"
 
-#: mmo.c:1644
+#: mmo.c:1639
 #, c-format
 msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� YZ = 1, Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ YZ = %d Ð´Ð»Ñ� lop_quote\n"
 
-#: mmo.c:1682
+#: mmo.c:1679
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� z = 1 Ð°Ð±Ð¾ z = 2, Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ z = %d Ð´Ð»Ñ� lop_loc\n"
 
-#: mmo.c:1733
+#: mmo.c:1730
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� z = 1 Ð°Ð±Ð¾ z = 2, Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ z = %d Ð´Ð»Ñ� lop_fixo\n"
 
-#: mmo.c:1774
+#: mmo.c:1771
 #, c-format
 msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� y=0, Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ y = %d Ð´Ð»Ñ� lop_fixrx\n"
 
-#: mmo.c:1785
+#: mmo.c:1782
 #, c-format
 msgid "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� z = 16 Ð°Ð±Ð¾ z = 24, Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ z = %d Ð´Ð»Ñ� lop_fixrx\n"
 
-#: mmo.c:1810
+#: mmo.c:1807
 #, c-format
 msgid "%pB: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ð¼ Ð±Ð°Ð¹Ñ‚Ð¾Ð¼ Ñ�Ð»Ð¾Ð²Ð° Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ 0 Ð°Ð±Ð¾ 1, Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ Ð¶ %d Ð´Ð»Ñ� lop_fixrx\n"
 
-#: mmo.c:1835
+#: mmo.c:1832
 #, c-format
 msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d, %d Ð±Ð°Ð¹Ñ‚Ñ–Ð²\n"
 
-#: mmo.c:1857
+#: mmo.c:1854
 #, c-format
 msgid "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð° %d, Â«%sÂ», ÑƒÐ¶Ðµ Ð·Ð´Ñ–Ð¹Ñ�Ð½ÐµÐ½Ð¾ Ð²Ñ…Ñ–Ð´ Ñ�Ðº Ñƒ Â«%sÂ»\n"
 
-#: mmo.c:1871
+#: mmo.c:1868
 #, c-format
 msgid "%pB: invalid mmo file: file name for number %d was not specified before use\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð½Ð°Ð·Ð²Ñƒ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° %d Ð½Ðµ Ð±ÑƒÐ»Ð¾ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð´Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�\n"
 
-#: mmo.c:1978
+#: mmo.c:1975
 #, c-format
 msgid "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð¿Ð¾Ð»Ñ� y Ñ– z lop_stab Ñ” Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼Ð¸, y: %d, z: %d\n"
 
-#: mmo.c:2015
+#: mmo.c:2012
 #, c-format
 msgid "%pB: invalid mmo file: lop_end not last item in file\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: lop_end Ð½Ðµ Ñ” Ð¾Ñ�Ñ‚Ð°Ð½Ð½Ñ–Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ð¾Ð¼ Ñƒ Ñ„Ð°Ð¹Ð»Ñ–\n"
 
-#: mmo.c:2029
+#: mmo.c:2026
 #, c-format
 msgid "%pB: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: YZ lop_end (%ld) Ð½Ðµ Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ñ‚ÐµÑ‚Ñ€Ð°Ð´ Ð´Ð¾ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ lop_stab (%ld)\n"
 
-#: mmo.c:2740
+#: mmo.c:2735
 #, c-format
 msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»\n"
 
-#: mmo.c:2983
+#: mmo.c:2978
 #, c-format
 msgid "%pB: bad symbol definition: `Main' set to %s rather than the start address %s\n"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: Â«MainÂ» Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñƒ %s, Ð° Ð½Ðµ Ñƒ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %s\n"
 
-#: mmo.c:3082
+#: mmo.c:3077
 #, c-format
 msgid "%pB: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ Ð´Ð»Ñ� mmo, Ñ—Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 65535 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ�Ð»Ð¾Ð²Ð°: %d. Ð‘ÑƒÐ´Ðµ Ð²Ð¸Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Â«MainÂ».\n"
 
-#: mmo.c:3128
+#: mmo.c:3123
 #, c-format
 msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð· %d Ð´Ð¾ %d Ñ�Ð»Ñ–Ð²\n"
 
-#: mmo.c:3181
+#: mmo.c:3176
 #, c-format
 msgid "%pB: internal error, internal register section %pA had contents\n"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², %pA, Ð¼Ñ–Ñ�Ñ‚Ð¸Ð² Ð´Ð°Ð½Ñ–\n"
 
-#: mmo.c:3232
+#: mmo.c:3227
 #, c-format
 msgid "%pB: no initialized registers; section length 0\n"
 msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” 0\n"
 
-#: mmo.c:3239
+#: mmo.c:3234
 #, c-format
 msgid "%pB: too many initialized registers; section length %<PRId64>"
 msgstr "%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²; Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ â€” %<PRId64>"
 
-#: mmo.c:3244
+#: mmo.c:3239
 #, c-format
 msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð´Ð»Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ %<PRId64>: %#<PRIx64>"
@@ -5483,48 +5809,55 @@ msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¿Ð¾Ñ‡
 msgid "unhandled OSF/1 core file section type %d"
 msgstr "Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ„Ð°Ð¹Ð»Ð° core OSF/1, %d"
 
-#: pef.c:527
+#: pdp11.c:1588
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½Ð°ÐºÐ»Ð°Ð´ÐºÑƒ (Ð½ÐµÐ¼Ð°Ñ” Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð½Ð°ÐºÐ»Ð°Ð´Ð¾Ðº)"
+
+#: pef.c:530
 #, c-format
 msgid "bfd_pef_scan: unknown architecture 0x%lx"
 msgstr "bfd_pef_scan: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°, 0x%lx"
 
-#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220
+#: pei-x86_64.c:177 pei-x86_64.c:191 pei-x86_64.c:220 pei-x86_64.c:243
+#: pei-x86_64.c:253 pei-x86_64.c:278 pei-x86_64.c:290 pei-x86_64.c:304
+#: pei-x86_64.c:322 pei-x86_64.c:334 pei-x86_64.c:346
 #, c-format
 msgid "warning: corrupt unwind data\n"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ð´Ð°Ð½Ñ– Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ�\n"
 
 #. PR 17512: file: 2245-7442-0.004.
-#: pei-x86_64.c:315
+#: pei-x86_64.c:367
 #, c-format
 msgid "Unknown: %x"
 msgstr "Ð�ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹: %x"
 
-#: pei-x86_64.c:365 pei-x86_64.c:375 pei-x86_64.c:384
+#: pei-x86_64.c:418 pei-x86_64.c:428 pei-x86_64.c:437
 #, c-format
 msgid "warning: xdata section corrupt\n"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» xdata\n"
 
-#: pei-x86_64.c:439
+#: pei-x86_64.c:492
 #, c-format
 msgid "Too many unwind codes (%ld)\n"
 msgstr "Ð—Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ ÐºÐ¾Ð´Ñ–Ð² Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ� (%ld)\n"
 
-#: pei-x86_64.c:529
+#: pei-x86_64.c:582
 #, c-format
 msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
 msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s (%ld) Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ %d\n"
 
-#: pei-x86_64.c:536
+#: pei-x86_64.c:589
 #, c-format
 msgid "Warning: %s section size is zero\n"
 msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼\n"
 
-#: pei-x86_64.c:551
+#: pei-x86_64.c:604
 #, c-format
 msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"
 msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s (%ld) Ñ” Ð¼ÐµÐ½ÑˆÐ¸Ð¼ Ð·Ð° Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%ld)\n"
 
-#: pei-x86_64.c:560
+#: pei-x86_64.c:613
 #, c-format
 msgid ""
 "\n"
@@ -5533,12 +5866,12 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ (Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s)\n"
 
-#: pei-x86_64.c:563
+#: pei-x86_64.c:616
 #, c-format
 msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
 msgstr "vma:\t\t\tÐŸÐ¾Ñ‡Ð°Ñ‚ÐºÐ�Ð´Ñ€ÐµÑ�Ð°\t ÐšÑ–Ð½Ñ†Ð�Ð´Ñ€ÐµÑ�Ð°s\t  Ð”Ð°Ð½Ñ–Unwind\n"
 
-#: pei-x86_64.c:692
+#: pei-x86_64.c:745
 #, c-format
 msgid ""
 "\n"
@@ -5548,42 +5881,42 @@ msgstr ""
 "Ð”Ð°Ð¼Ð¿ %s\n"
 
 #. XXX code yet to be written.
-#: peicode.h:775
+#: peicode.h:796
 #, c-format
 msgid "%pB: unhandled import type; %x"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x"
 
-#: peicode.h:781
+#: peicode.h:802
 #, c-format
 msgid "%pB: unrecognized import type; %x"
 msgstr "%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x"
 
-#: peicode.h:796
+#: peicode.h:817
 #, c-format
 msgid "%pB: unrecognized import name type; %x"
 msgstr "%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x"
 
-#: peicode.h:1211
+#: peicode.h:1225
 #, c-format
 msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
 msgstr "%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ (0x%x) Ñƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Import Library Format"
 
-#: peicode.h:1224
+#: peicode.h:1238
 #, c-format
 msgid "%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive"
 msgstr "%pB: Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹, Ð°Ð»Ðµ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ (0x%x) Ñƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Import Library Format"
 
-#: peicode.h:1242
+#: peicode.h:1256
 #, c-format
 msgid "%pB: size field is zero in Import Library Format header"
 msgstr "%pB: Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Import Library Format Ð¿Ð¾Ð»Ðµ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼"
 
-#: peicode.h:1274
+#: peicode.h:1282
 #, c-format
 msgid "%pB: string not null terminated in ILF object file"
 msgstr "%pB: Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– ILF Ñ€Ñ�Ð´Ð¾Ðº Ð½Ðµ Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: peicode.h:1330
+#: peicode.h:1338
 #, c-format
 msgid "%pB: error: debug data ends beyond end of debug directory"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ñ– Ð´Ð°Ð½Ñ– Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ"
@@ -5641,32 +5974,32 @@ msgstr "Ð¡ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ[%d]
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr "Ð”Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ[%d] = 0x%.8lx (%ld)\n"
 
-#: reloc.c:8232
+#: reloc.c:8291
 msgid "INPUT_SECTION_FLAGS are not supported"
 msgstr "ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ INPUT_SECTION_FLAGS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: reloc.c:8333
+#: reloc.c:8392
 #, c-format
 msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
 msgstr "%X%P: %pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð·Ñ�ÑƒÐ²Ñƒ %V Ð½Ðµ Ð¼Ð°Ñ” Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�\n"
 
-#: reloc.c:8420
+#: reloc.c:8480
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
 msgstr "%X%P: %pB(%pA): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%pRÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
 
-#: reloc.c:8429
+#: reloc.c:8489
 #, c-format
 msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
 msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%pRÂ» Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°Ñ” Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %x\n"
 
-#: reloc.c:8491
+#: reloc.c:8551
 #, c-format
 msgid "%pB: unrecognized relocation type %#x in section `%pA'"
 msgstr "%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚Ð¸Ð¿Ñƒ %#x Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»"
 
 #. PR 21803: Suggest the most likely cause of this error.
-#: reloc.c:8495
+#: reloc.c:8555
 #, c-format
 msgid "is this version of the linker - %s - out of date ?"
 msgstr "Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾, Ñ†Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° - %s - Ñ” Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¾ÑŽ?"
@@ -5676,7 +6009,7 @@ msgstr "Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾, Ñ†Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ
 msgid "%pB: warning core file truncated"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ„Ð°Ð¹Ð» core Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾"
 
-#: som.c:5478
+#: som.c:5497
 #, c-format
 msgid ""
 "\n"
@@ -5685,7 +6018,7 @@ msgstr ""
 "\n"
 "Ð”Ð¾Ð¿Ð¾Ð¼Ñ–Ð¶Ð½Ð¸Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�\n"
 
-#: som.c:5787
+#: som.c:5806
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾"
 
@@ -5699,7 +6032,7 @@ msgstr "%pB:%d: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹
 msgid "%pB:%d: byte count %d too small"
 msgstr "%pB:%d: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² %d Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ"
 
-#: srec.c:581 srec.c:615
+#: srec.c:580 srec.c:614
 #, c-format
 msgid "%pB:%d: bad checksum in S-record file"
 msgstr "%pB:%d: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð° Ñ�ÑƒÐ¼Ð° Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² S"
@@ -5709,73 +6042,82 @@ msgstr "%pB:%d: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° ÐºÐ¾Ð
 msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
 msgstr "%pB(%pA+%#lx): Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– stabs Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ñ�Ð´ÐºÐ°"
 
-#: syms.c:1091
+#: syms.c:1085
 msgid "unsupported .stab relocation"
 msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� .stab"
 
-#: vms-alpha.c:479
+#: vms-alpha.c:480
 msgid "corrupt EIHD record - size is too small"
 msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EIHD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼"
 
-#: vms-alpha.c:660
+#: vms-alpha.c:666
 #, c-format
 msgid "unable to read EIHS record at offset %#x"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� EIHS Ð·Ñ– Ð·Ñ�ÑƒÐ²Ð¾Ð¼ %#x"
 
-#: vms-alpha.c:1173
+#: vms-alpha.c:1158
+msgid "record is too small for symbol name length"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ� Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼ Ð´Ð»Ñ� Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ Ð½Ð°Ð·Ð²Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
+
+#: vms-alpha.c:1191
 #, c-format
 msgid "corrupt EGSD record: its size (%#x) is too small"
 msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ð¹Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼"
 
-#: vms-alpha.c:1197
+#: vms-alpha.c:1215
 #, c-format
-msgid "corrupt EGSD record: size (%#x) is larger than remaining space (%#x)"
-msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ð·Ð° Ð·Ð°Ð»Ð¸ÑˆÐ¾Ðº Ð¼Ñ–Ñ�Ñ†Ñ� (%#x)"
+msgid "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
+msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð¸Ð¿Ñƒ %d EGSD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ð·Ð° Ð·Ð°Ð»Ð¸ÑˆÐ¾Ðº Ð¼Ñ–Ñ�Ñ†Ñ� (%#x)"
 
-#: vms-alpha.c:1205
+#: vms-alpha.c:1225
 #, c-format
-msgid "corrupt EGSD record: size (%#x) is too small"
-msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼"
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
+msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð¸Ð¿Ñƒ %d EGSD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼"
 
-#: vms-alpha.c:1334 vms-alpha.c:1350 vms-alpha.c:1390
+#: vms-alpha.c:1367
 #, c-format
 msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
 msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ð²Ð¼Ñ–Ñ�Ñ‚ Ð¹Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ� psindx Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (%#lx)"
 
-#: vms-alpha.c:1419
+#: vms-alpha.c:1443
 #, c-format
 msgid "unknown EGSD subtype %d"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿ EGSD, %d"
 
-#: vms-alpha.c:1452
+#: vms-alpha.c:1476
 #, c-format
 msgid "stack overflow (%d) in _bfd_vms_push"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° (%d) Ñƒ _bfd_vms_push"
 
-#: vms-alpha.c:1465
+#: vms-alpha.c:1490
 msgid "stack underflow in _bfd_vms_pop"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ñƒ _bfd_vms_pop"
 
+#: vms-alpha.c:1564
+#, c-format
+msgid "dst_define_location %u too large"
+msgstr "dst_define_location %u Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼"
+
 #. These names have not yet been added to this switch statement.
-#: vms-alpha.c:1707
+#: vms-alpha.c:1765
 #, c-format
 msgid "unknown ETIR command %d"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ETIR, %d"
 
-#: vms-alpha.c:1738
+#: vms-alpha.c:1796
 msgid "corrupt vms value"
 msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� vms"
 
-#: vms-alpha.c:1866
+#: vms-alpha.c:1927
 msgid "corrupt ETIR record encountered"
 msgstr "Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� ETIR"
 
-#: vms-alpha.c:1923
+#: vms-alpha.c:1989
 #, c-format
 msgid "bad section index in %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ %s"
 
-#: vms-alpha.c:1936
+#: vms-alpha.c:2003
 #, c-format
 msgid "unsupported STA cmd %s"
 msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° STA, %s"
@@ -5785,1468 +6127,1480 @@ msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° ÐºÐ
 #. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-alpha.c:2116 vms-alpha.c:2147 vms-alpha.c:2238 vms-alpha.c:2396
+#: vms-alpha.c:2211 vms-alpha.c:2242 vms-alpha.c:2337 vms-alpha.c:2557
 #, c-format
 msgid "%s: not supported"
 msgstr "%s: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: vms-alpha.c:2122
+#: vms-alpha.c:2217
 #, c-format
 msgid "%s: not implemented"
 msgstr "%s: Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾"
 
-#: vms-alpha.c:2380
+#: vms-alpha.c:2382 vms-alpha.c:2397
+#, c-format
+msgid "invalid %s"
+msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ %s"
+
+#. Divide by zero is supposed to give a result of zero,
+#. and a non-fatal warning message.
+#: vms-alpha.c:2457
+#, c-format
+msgid "%s divide by zero"
+msgstr "%s Ð´Ñ–Ð»ÐµÐ½Ð½Ñ� Ð½Ð° Ð½ÑƒÐ»ÑŒ"
+
+#: vms-alpha.c:2523
 #, c-format
 msgid "invalid use of %s with contexts"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� %s Ð· ÐºÐ¾Ð½Ñ‚ÐµÐºÑ�Ñ‚Ð°Ð¼Ð¸"
 
-#: vms-alpha.c:2414
+#: vms-alpha.c:2581
 #, c-format
 msgid "reserved cmd %d"
 msgstr "Ð·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¾Ð²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %d"
 
-#: vms-alpha.c:2498
+#: vms-alpha.c:2665
 msgid "corrupt EEOM record - size is too small"
 msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EEOM: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼"
 
-#: vms-alpha.c:2507
+#: vms-alpha.c:2674
 msgid "object module not error-free !"
 msgstr "Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ– Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸!"
 
-#: vms-alpha.c:3831
+#: vms-alpha.c:4001
 #, c-format
 msgid "SEC_RELOC with no relocs in section %pA"
 msgstr "SEC_RELOC Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pA"
 
-#: vms-alpha.c:3883 vms-alpha.c:4097
+#: vms-alpha.c:4053 vms-alpha.c:4268
 #, c-format
 msgid "size error in section %pA"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ– Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pA"
 
-#: vms-alpha.c:4043
+#: vms-alpha.c:4213
 msgid "spurious ALPHA_R_BSR reloc"
 msgstr "Ñ„Ð°Ð»ÑŒÑˆÐ¸Ð²Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ALPHA_R_BSR"
 
-#: vms-alpha.c:4084
+#: vms-alpha.c:4254
 #, c-format
 msgid "unhandled relocation %s"
 msgstr "Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s"
 
-#: vms-alpha.c:4377
+#: vms-alpha.c:4551
 #, c-format
 msgid "unknown source command %d"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %d"
 
-#: vms-alpha.c:4438 vms-alpha.c:4444 vms-alpha.c:4450 vms-alpha.c:4456
-#: vms-alpha.c:4462 vms-alpha.c:4489 vms-alpha.c:4495 vms-alpha.c:4501
-#: vms-alpha.c:4507
+#: vms-alpha.c:4612 vms-alpha.c:4618 vms-alpha.c:4624 vms-alpha.c:4630
+#: vms-alpha.c:4636 vms-alpha.c:4663 vms-alpha.c:4669 vms-alpha.c:4675
+#: vms-alpha.c:4681
 #, c-format
 msgid "%s not implemented"
 msgstr "%s Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾"
 
-#: vms-alpha.c:4550
+#: vms-alpha.c:4724
 #, c-format
 msgid "unknown line command %d"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %d"
 
-#: vms-alpha.c:5010 vms-alpha.c:5028 vms-alpha.c:5043 vms-alpha.c:5059
-#: vms-alpha.c:5072 vms-alpha.c:5084 vms-alpha.c:5097
+#: vms-alpha.c:5188 vms-alpha.c:5206 vms-alpha.c:5221 vms-alpha.c:5237
+#: vms-alpha.c:5250 vms-alpha.c:5262 vms-alpha.c:5275
 #, c-format
 msgid "unknown reloc %s + %s"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s + %s"
 
-#: vms-alpha.c:5152
+#: vms-alpha.c:5330
 #, c-format
 msgid "unknown reloc %s"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s"
 
-#: vms-alpha.c:5166
+#: vms-alpha.c:5344
 msgid "invalid section index in ETIR"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ ETIR"
 
-#: vms-alpha.c:5175
+#: vms-alpha.c:5353
 msgid "relocation for non-REL psect"
 msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� psect, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ñ” REL"
 
-#: vms-alpha.c:5222
+#: vms-alpha.c:5402
 #, c-format
 msgid "unknown symbol in command %s"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ– %s"
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:5816
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%d) Ñ” *Ð�Ð•Ð’Ð†Ð”ÐžÐœÐ˜Ðœ*"
 
-#: vms-alpha.c:5752
+#: vms-alpha.c:5932
 #, c-format
 msgid "  EMH %u (len=%u): "
 msgstr "  EMH %u (Ð´Ð¾Ð²Ð¶=%u): "
 
-#: vms-alpha.c:5757
+#: vms-alpha.c:5937
 #, c-format
 msgid "   Error: The length is less than the length of an EMH record\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EMH\n"
 
-#: vms-alpha.c:5774
+#: vms-alpha.c:5954
 #, c-format
 msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EMH_MHD\n"
 
-#: vms-alpha.c:5777
+#: vms-alpha.c:5957
 #, c-format
 msgid "Module header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:5958
 #, c-format
 msgid "   structure level: %u\n"
 msgstr "   Ñ€Ñ–Ð²ÐµÐ½ÑŒ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚. : %u\n"
 
-#: vms-alpha.c:5779
+#: vms-alpha.c:5959
 #, c-format
 msgid "   max record size: %u\n"
 msgstr "   Ð¼Ð°ÐºÑ�. Ñ€Ð¾Ð·Ð¼. Ð·Ð°Ð¿Ð¸Ñ�Ñƒ: %u\n"
 
-#: vms-alpha.c:5785
+#: vms-alpha.c:5965
 #, c-format
 msgid "   Error: The module name is missing\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð½Ð°Ð·Ð²Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5791
+#: vms-alpha.c:5971
 #, c-format
 msgid "   Error: The module name is too long\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ð°Ð·Ð²Ð° Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð´Ð¾Ð²Ð³Ð¾ÑŽ\n"
 
-#: vms-alpha.c:5794
+#: vms-alpha.c:5974
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° Ð¼Ð¾Ð´ÑƒÐ»Ñ�   : %.*s\n"
 
-#: vms-alpha.c:5798
+#: vms-alpha.c:5978
 #, c-format
 msgid "   Error: The module version is missing\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5804
+#: vms-alpha.c:5984
 #, c-format
 msgid "   Error: The module version is too long\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð²ÐµÑ€Ñ�Ñ–Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð´Ð¾Ð²Ð³Ð¾ÑŽ\n"
 
-#: vms-alpha.c:5807
+#: vms-alpha.c:5987
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   Ð²ÐµÑ€Ñ�Ñ–Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�  : %.*s\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:5990
 #, c-format
 msgid "   Error: The compile date is truncated\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð°Ñ‚Ñƒ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾\n"
 
-#: vms-alpha.c:5812
+#: vms-alpha.c:5992
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr "   Ð´Ð°Ñ‚Ð° Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ�  : %.17s\n"
 
-#: vms-alpha.c:5817
+#: vms-alpha.c:5997
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Ð�Ð°Ð·Ð²Ð° Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¼Ð¾Ð²Ð¸\n"
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:5998
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° Ð¼Ð¾Ð²Ð¸   : %.*s\n"
 
-#: vms-alpha.c:5822
+#: vms-alpha.c:6002
 #, c-format
 msgid "Source Files Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ„Ð°Ð¹Ð»Ñ–Ð² ÐºÐ¾Ð´Ñƒ\n"
 
-#: vms-alpha.c:5823
+#: vms-alpha.c:6003
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   Ñ„Ð°Ð¹Ð»: %.*s\n"
 
-#: vms-alpha.c:5827
+#: vms-alpha.c:6007
 #, c-format
 msgid "Title Text Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ‚Ð¸Ñ‚ÑƒÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ñ‚ÐµÐºÑ�Ñ‚Ñƒ\n"
 
-#: vms-alpha.c:5828
+#: vms-alpha.c:6008
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº: %.*s\n"
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6012
 #, c-format
 msgid "Copyright Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÑŒÐºÐ¸Ñ… Ð¿Ñ€Ð°Ð²\n"
 
-#: vms-alpha.c:5833
+#: vms-alpha.c:6013
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÑŒÐºÑ– Ð¿Ñ€Ð°Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:5837
+#: vms-alpha.c:6017
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr "Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿ emh, %u\n"
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6027
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (Ð´Ð¾Ð²Ð¶=%u):\n"
 
-#: vms-alpha.c:5852
+#: vms-alpha.c:6032
 #, c-format
 msgid "   Error: The length is less than the length of an EEOM record\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EEOM\n"
 
-#: vms-alpha.c:5856
+#: vms-alpha.c:6036
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr "   ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿Ð°Ñ€ ÑƒÐ¼Ð¾Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u\n"
 
-#: vms-alpha.c:5858
+#: vms-alpha.c:6038
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   ÐºÐ¾Ð´ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ�: %u\n"
 
-#: vms-alpha.c:5862
+#: vms-alpha.c:6042
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸: 0x%02x\n"
 
-#: vms-alpha.c:5863
+#: vms-alpha.c:6043
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr "   psect Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸: %u\n"
 
-#: vms-alpha.c:5865
+#: vms-alpha.c:6045
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� : 0x%08x\n"
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:6054
 msgid " WEAK"
 msgstr " WEAK"
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:6056
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5878
+#: vms-alpha.c:6058
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5880 vms-alpha.c:5901
+#: vms-alpha.c:6060 vms-alpha.c:6081
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:6062
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5884
+#: vms-alpha.c:6064
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5886
+#: vms-alpha.c:6066
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6068
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:6075
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5897
+#: vms-alpha.c:6077
 msgid " LIB"
 msgstr " LIB"
 
-#: vms-alpha.c:5899
+#: vms-alpha.c:6079
 msgid " OVR"
 msgstr " OVR"
 
-#: vms-alpha.c:5903
+#: vms-alpha.c:6083
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5905
+#: vms-alpha.c:6085
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:6087
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:6089
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5911
+#: vms-alpha.c:6091
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5913
+#: vms-alpha.c:6093
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6095
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5917
+#: vms-alpha.c:6097
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:6099
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5928
+#: vms-alpha.c:6108
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (Ð´Ð¾Ð²Ð¶=%u):\n"
 
-#: vms-alpha.c:5941
+#: vms-alpha.c:6121
 #, c-format
 msgid "  EGSD entry %2u (type: %u, len: %u): "
 msgstr "  Ð·Ð°Ð¿Ð¸Ñ� EGSD %2u (Ñ‚Ð¸Ð¿: %u, Ð´Ð¾Ð²Ð¶: %u): "
 
-#: vms-alpha.c:5947 vms-alpha.c:6198
+#: vms-alpha.c:6127 vms-alpha.c:6378
 #, c-format
 msgid "   Error: length larger than remaining space in record\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð¼Ñ–Ñ�Ñ†Ðµ, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–\n"
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6139
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr "PSC â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸\n"
 
-#: vms-alpha.c:5960 vms-alpha.c:5977
+#: vms-alpha.c:6140 vms-alpha.c:6157
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: 2**%u\n"
 
-#: vms-alpha.c:5961 vms-alpha.c:5978
+#: vms-alpha.c:6141 vms-alpha.c:6158
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–    : 0x%04x"
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6145
 #, c-format
 msgid "   alloc (len): %u (0x%08x)\n"
 msgstr "   alloc (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°): %u (0x%08x)\n"
 
-#: vms-alpha.c:5966 vms-alpha.c:6023 vms-alpha.c:6072
+#: vms-alpha.c:6146 vms-alpha.c:6203 vms-alpha.c:6252
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°      : %.*s\n"
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6156
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr "SPSC â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ñƒ\n"
 
-#: vms-alpha.c:5982
+#: vms-alpha.c:6162
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr "   alloc (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°): %u (0x%08x)\n"
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6163
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¾Ð±Ñ€Ð°Ð·Ñƒ: 0x%08x\n"
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6165
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr "   Ð·Ñ�ÑƒÐ² symvec   : 0x%08x\n"
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6167
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°         : %.*s\n"
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6180
 #, c-format
 msgid "SYM - Global symbol definition\n"
 msgstr "SYM â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²\n"
 
-#: vms-alpha.c:6001 vms-alpha.c:6061 vms-alpha.c:6082 vms-alpha.c:6101
+#: vms-alpha.c:6181 vms-alpha.c:6241 vms-alpha.c:6262 vms-alpha.c:6281
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: 0x%04x"
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6184
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr "   Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ psect: 0x%08x\n"
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6188
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�Ð° ÐºÐ¾Ð´Ñƒ: 0x%08x\n"
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6190
 #, c-format
 msgid "   psect index for entry point : %u\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� psect Ð´Ð»Ñ� Ñ‚Ð¾Ñ‡ÐºÐ¸ Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ�: %u\n"
 
-#: vms-alpha.c:6013 vms-alpha.c:6089 vms-alpha.c:6108
+#: vms-alpha.c:6193 vms-alpha.c:6269 vms-alpha.c:6288
 #, c-format
 msgid "   psect index : %u\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� psect: %u\n"
 
-#: vms-alpha.c:6015 vms-alpha.c:6091 vms-alpha.c:6110
+#: vms-alpha.c:6195 vms-alpha.c:6271 vms-alpha.c:6290
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°       : %.*s\n"
 
-#: vms-alpha.c:6022
+#: vms-alpha.c:6202
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM â€” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸\n"
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6214
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr "IDC â€” Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ° ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¾Ñ�Ñ‚Ñ– Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñ–Ð²\n"
 
-#: vms-alpha.c:6035
+#: vms-alpha.c:6215
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–      : 0x%08x"
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6219
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   Ñ–Ð´. Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñ�Ñ‚Ñ–: %x\n"
 
-#: vms-alpha.c:6041
+#: vms-alpha.c:6221
 #, c-format
 msgid "   error severity: %x\n"
 msgstr "   ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸: %x\n"
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6224
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð°: %.*s\n"
 
-#: vms-alpha.c:6046
+#: vms-alpha.c:6226
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° : %.*s\n"
 
-#: vms-alpha.c:6049
+#: vms-alpha.c:6229
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   Ð´Ð²Ñ–Ð¹Ðº. Ñ–Ð´ÐµÐ½Ñ‚. : 0x%08x\n"
 
-#: vms-alpha.c:6052
+#: vms-alpha.c:6232
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   Ñ–Ð´ÐµÐ½Ñ‚. ascii  : %.*s\n"
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6240
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG â€” Ð£Ð½Ñ–Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²\n"
 
-#: vms-alpha.c:6064
+#: vms-alpha.c:6244
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr "   Ð·Ñ�ÑƒÐ² Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: 0x%08x\n"
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6246
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr "   Ñ‚Ð¾Ñ‡ÐºÐ° Ð²Ñ…Ð¾Ð´Ñƒ: 0x%08x\n"
 
-#: vms-alpha.c:6068
+#: vms-alpha.c:6248
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   Ð´ÐµÑ�ÐºÑ€. Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñƒ: 0x%08x\n"
 
-#: vms-alpha.c:6070
+#: vms-alpha.c:6250
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� psect: %u\n"
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6261
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð·Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ\n"
 
-#: vms-alpha.c:6085
+#: vms-alpha.c:6265
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   Ð²ÐµÐºÑ‚Ð¾Ñ€      : 0x%08x\n"
 
-#: vms-alpha.c:6087 vms-alpha.c:6106
+#: vms-alpha.c:6267 vms-alpha.c:6286
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ psect: %u\n"
 
-#: vms-alpha.c:6100
+#: vms-alpha.c:6280
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr "SYMM â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ\n"
 
-#: vms-alpha.c:6104
+#: vms-alpha.c:6284
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr "   Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ñ�Ñ–Ñ—: 0x%08x\n"
 
-#: vms-alpha.c:6115
+#: vms-alpha.c:6295
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr "Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ egsd, %u\n"
 
-#: vms-alpha.c:6150
+#: vms-alpha.c:6330
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr "    Ñ–Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u, Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ�-Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº: 0x%08x\n"
 
-#: vms-alpha.c:6154
+#: vms-alpha.c:6334
 #, c-format
 msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
 msgstr "    Ñ–Ð½Ð´. psect 1: %u, Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ 1: 0x%08x %08x\n"
 
-#: vms-alpha.c:6159
+#: vms-alpha.c:6339
 #, c-format
 msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
 msgstr "    Ñ–Ð½Ð´. psect 2: %u, Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ 2: 0x%08x %08x\n"
 
-#: vms-alpha.c:6165
+#: vms-alpha.c:6345
 #, c-format
 msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
 msgstr "    Ñ–Ð½Ð´. psect 3: %u, Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ 3: 0x%08x %08x\n"
 
-#: vms-alpha.c:6170
+#: vms-alpha.c:6350
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "    Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð° Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:6181
+#: vms-alpha.c:6361
 #, c-format
 msgid "  %s (len=%u+%u):\n"
 msgstr "  %s (Ð´Ð¾Ð²Ð¶=%u+%u):\n"
 
-#: vms-alpha.c:6203
+#: vms-alpha.c:6383
 #, c-format
 msgid "   (type: %3u, size: 4+%3u): "
 msgstr "   (Ñ‚Ð¸Ð¿: %3u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 4+%3u): "
 
-#: vms-alpha.c:6207
+#: vms-alpha.c:6387
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr "STA_GBL (Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ñ‚ÐµÐº) %.*s\n"
 
-#: vms-alpha.c:6211
+#: vms-alpha.c:6391
 #, c-format
 msgid "STA_LW (stack longword) 0x%08x\n"
 msgstr "STA_LW (Ñ�Ñ‚ÐµÐº Ð´Ð¾Ð²Ð³Ð¸Ñ… Ñ�Ð»Ñ–Ð²) 0x%08x\n"
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6395
 #, c-format
 msgid "STA_QW (stack quadword) 0x%08x %08x\n"
 msgstr "STA_QW (Ñ�Ñ‚ÐµÐº Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ð¸Ñ… Ñ�Ð»Ñ–Ð²) 0x%08x %08x\n"
 
-#: vms-alpha.c:6220
+#: vms-alpha.c:6400
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr "STA_PQ (Ñ�Ñ‚ÐµÐº Ð¾Ñ�Ð½Ð¾Ð²Ð¸ psect + Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6222
+#: vms-alpha.c:6402
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr "    psect: %u, Ð·Ñ�ÑƒÐ²: 0x%08x %08x\n"
 
-#: vms-alpha.c:6228
+#: vms-alpha.c:6408
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr "STA_LI (Ñ�Ñ‚ÐµÐº Ð»Ñ–Ñ‚ÐµÑ€Ð°Ð»Ñ–Ð²)\n"
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6411
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr "STA_MOD (Ñ�Ñ‚ÐµÐº Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²)\n"
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6414
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr "STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ Ð¿Ð¾Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6238
+#: vms-alpha.c:6418
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ Ð±Ð°Ð¹Ñ‚)\n"
 
-#: vms-alpha.c:6241
+#: vms-alpha.c:6421
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ñ�Ð»Ð¾Ð²Ð¾)\n"
 
-#: vms-alpha.c:6244
+#: vms-alpha.c:6424
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ longword)\n"
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6427
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ quadword)\n"
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6433
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr "STO_IMMR (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ð½ÐµÐ³Ð°Ð¹Ð½Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ�) %u Ð±Ð°Ð¹Ñ‚Ñ–Ð²\n"
 
-#: vms-alpha.c:6260
+#: vms-alpha.c:6440
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ðµ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ�) %.*s\n"
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6444
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr "STO_CA (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° ÐºÐ¾Ð´Ñƒ) %.*s\n"
 
-#: vms-alpha.c:6268
+#: vms-alpha.c:6448
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr "STO_RB (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6271
+#: vms-alpha.c:6451
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr "STO_AB (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ðµ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6274
+#: vms-alpha.c:6454
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr "STO_OFF (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ñ‰Ð¾Ð´Ð¾ psect)\n"
 
-#: vms-alpha.c:6280
+#: vms-alpha.c:6460
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr "STO_IMM (Ð½ÐµÐ³Ð°Ð¹Ð½Ðµ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ�) %u Ð±Ð°Ð¹Ñ‚\n"
 
-#: vms-alpha.c:6287
+#: vms-alpha.c:6467
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr "STO_GBL_LW (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ðµ longword) %.*s\n"
 
-#: vms-alpha.c:6291
+#: vms-alpha.c:6471
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr "STO_OFF (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ� LP Ð· Ð¿Ñ–Ð´Ð¿Ð¸Ñ�Ð¾Ð¼ Ð¿Ñ–Ð´Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸)\n"
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6474
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr "STO_BR_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ðµ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ�) *Ñ‰Ðµ Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾*\n"
 
-#: vms-alpha.c:6297
+#: vms-alpha.c:6477
 #, c-format
 msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
 msgstr "STO_BR_PS (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ psect Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� + Ð·Ñ�ÑƒÐ²) *Ñ‰Ðµ Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾*\n"
 
-#: vms-alpha.c:6301
+#: vms-alpha.c:6481
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr "OPR_NOP (Ð±ÐµÐ· Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ—)\n"
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6484
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr "OPR_ADD (Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6307
+#: vms-alpha.c:6487
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr "OPR_SUB (Ð²Ñ–Ð´Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6310
+#: vms-alpha.c:6490
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (Ð¼Ð½Ð¾Ð¶ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6313
+#: vms-alpha.c:6493
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (Ð´Ñ–Ð»ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6316
+#: vms-alpha.c:6496
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr "OPR_AND (Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ðµ Â«Ð†Â»)\n"
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6499
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr "OPR_IOR (Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡Ð½Ðµ Â«Ð�Ð‘ÐžÂ»)\n"
 
-#: vms-alpha.c:6322
+#: vms-alpha.c:6502
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr "OPR_EOR (Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ðµ Ð²Ð¸ÐºÐ»ÑŽÑ‡Ð½Ðµ Â«Ð�Ð‘ÐžÂ»)\n"
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6505
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (Ð·Ð°Ð¿ÐµÑ€ÐµÑ‡ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6508
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6511
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (Ð²Ñ�Ñ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ� Ð¿Ð¾Ð»Ñ�)\n"
 
-#: vms-alpha.c:6334
+#: vms-alpha.c:6514
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸Ñ‡Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6337
+#: vms-alpha.c:6517
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (Ð±ÐµÐ·Ð·Ð½Ð°ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6340
+#: vms-alpha.c:6520
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (Ñ†Ð¸ÐºÐ»Ñ–Ñ‡Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6343
+#: vms-alpha.c:6523
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (Ð²Ð¸Ð±Ñ–Ñ€)\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6526
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr "OPR_REDEF (Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð¾ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ— Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ—)\n"
 
-#: vms-alpha.c:6349
+#: vms-alpha.c:6529
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr "OPR_REDEF (Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð»Ñ–Ñ‚ÐµÑ€Ð°Ð»Ð°)\n"
 
-#: vms-alpha.c:6353
+#: vms-alpha.c:6533
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr "STC_LP (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° Ð¿Ð°Ñ€Ð° ÑƒÐ¼Ð¾Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6357
+#: vms-alpha.c:6537
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr "STC_LP_PSB (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° Ð¿Ð°Ñ€Ð° ÑƒÐ¼Ð¾Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� + Ð¿Ñ–Ð´Ð¿Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6359
+#: vms-alpha.c:6539
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u, Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°: %.*s\n"
 
-#: vms-alpha.c:6362
+#: vms-alpha.c:6542
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   Ð¿Ñ–Ð´Ð¿Ð¸Ñ�: %.*s\n"
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6545
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð° ÑƒÐ¼Ð¾Ð²Ð°)\n"
 
-#: vms-alpha.c:6367
+#: vms-alpha.c:6547
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u, Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹: %.*s\n"
 
-#: vms-alpha.c:6371
+#: vms-alpha.c:6551
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr "STC_GCA (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° ÑƒÐ¼Ð¾Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ)\n"
 
-#: vms-alpha.c:6373
+#: vms-alpha.c:6553
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u, Ð½Ð°Ð·Ð²Ð° Ð¿Ñ–Ð´Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %.*s\n"
 
-#: vms-alpha.c:6377
+#: vms-alpha.c:6557
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr "STC_PS (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ psect + Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6380
+#: vms-alpha.c:6560
 #, c-format
 msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u, psect: %u, Ð·Ñ�ÑƒÐ²: 0x%08x %08x\n"
 
-#: vms-alpha.c:6387
+#: vms-alpha.c:6567
 #, c-format
 msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
 msgstr "STC_NOP_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ NOP Ð·Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ)\n"
 
-#: vms-alpha.c:6391
+#: vms-alpha.c:6571
 #, c-format
 msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
 msgstr "STC_NOP_PS (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ NOP Ð·Ð° psect + Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6395
+#: vms-alpha.c:6575
 #, c-format
 msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
 msgstr "STC_BSR_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ BSR Ð·Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ)\n"
 
-#: vms-alpha.c:6399
+#: vms-alpha.c:6579
 #, c-format
 msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
 msgstr "STC_BSR_PS (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ BSR Ð·Ð° psect + Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6403
+#: vms-alpha.c:6583
 #, c-format
 msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
 msgstr "STC_LDA_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ LDA Ð·Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ)\n"
 
-#: vms-alpha.c:6407
+#: vms-alpha.c:6587
 #, c-format
 msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
 msgstr "STC_LDA_PS (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° ÑƒÐ¼Ð¾Ð²Ð½Ð° LDA Ð·Ð° psect + Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6411
+#: vms-alpha.c:6591
 #, c-format
 msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
 msgstr "STC_BOH_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ BOH Ð·Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ)\n"
 
-#: vms-alpha.c:6415
+#: vms-alpha.c:6595
 #, c-format
 msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
 msgstr "STC_BOH_PS (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ BOH Ð·Ð° psect + Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6420
+#: vms-alpha.c:6600
 #, c-format
 msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
 msgstr "STC_NBH_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° ÑƒÐ¼Ð¾Ð²Ð° Ð°Ð±Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²ÐºÐ° Ð·Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ)\n"
 
-#: vms-alpha.c:6424
+#: vms-alpha.c:6604
 #, c-format
 msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
 msgstr "STC_NBH_PS (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° ÑƒÐ¼Ð¾Ð²Ð° Ð°Ð±Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²ÐºÐ° Ð·Ð° psect + Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6428
+#: vms-alpha.c:6608
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr "CTL_SETRB (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6434
+#: vms-alpha.c:6614
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr "CTL_AUGRB (Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�) %u\n"
 
-#: vms-alpha.c:6438
+#: vms-alpha.c:6618
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6441
+#: vms-alpha.c:6621
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (Ð²ÐºÐ°Ð·Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6444
+#: vms-alpha.c:6624
 #, c-format
 msgid "CTL_STKDL (stack defined location)\n"
 msgstr "CTL_STKDL (Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ�, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ñ�Ñ‚ÐµÐºÐ¾Ð¼)\n"
 
-#: vms-alpha.c:6447 vms-alpha.c:6871 vms-alpha.c:6997
+#: vms-alpha.c:6627 vms-alpha.c:7051 vms-alpha.c:7177
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾*\n"
 
-#: vms-alpha.c:6477 vms-alpha.c:6516
+#: vms-alpha.c:6657 vms-alpha.c:6696
 #, c-format
 msgid "cannot read GST record length\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GST\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6498
+#: vms-alpha.c:6678
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ EMH Ñƒ Ð¿ÐµÑ€ÑˆÐ¾Ð¼Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– GST\n"
 
-#: vms-alpha.c:6524
+#: vms-alpha.c:6704
 #, c-format
 msgid "cannot read GST record header\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GST\n"
 
-#: vms-alpha.c:6537
+#: vms-alpha.c:6717
 #, c-format
 msgid " corrupted GST\n"
 msgstr " Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ GST\n"
 
-#: vms-alpha.c:6545
+#: vms-alpha.c:6725
 #, c-format
 msgid "cannot read GST record\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� GST\n"
 
-#: vms-alpha.c:6574
+#: vms-alpha.c:6754
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr " Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EOBJ, %u\n"
 
-#: vms-alpha.c:6598
+#: vms-alpha.c:6778
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr "  ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð±Ñ–Ñ‚Ñ–Ð²: %u, Ð±Ð°Ð·Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6612
+#: vms-alpha.c:6792
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr "   Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·: 0x%08x (Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº: %u):\n"
 
-#: vms-alpha.c:6619
+#: vms-alpha.c:6799
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6645
+#: vms-alpha.c:6825
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr "  Ð¾Ð±Ñ€Ð°Ð· %u (%u Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²)\n"
 
-#: vms-alpha.c:6651
+#: vms-alpha.c:6831
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr "   Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿: 0x%08x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: 0x%08x\n"
 
-#: vms-alpha.c:6673
+#: vms-alpha.c:6853
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr "  Ð¾Ð±Ñ€Ð°Ð· %u (%u Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²), Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¸:\n"
 
-#: vms-alpha.c:6680
+#: vms-alpha.c:6860
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6802
+#: vms-alpha.c:6982
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr "64 Ð±Ñ–Ñ‚Ð¸ *Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ”Ñ‚ÑŒÑ�Ñ�*\n"
 
-#: vms-alpha.c:6807
+#: vms-alpha.c:6987
 #, c-format
 msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
 msgstr "ÐºÐ»Ð°Ñ�: %u, dtype: %u, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u, Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº: 0x%08x\n"
 
-#: vms-alpha.c:6818
+#: vms-alpha.c:6998
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr "Ñ€Ð¾Ð·Ñ€Ð¸Ð²Ð½Ð¸Ð¹ Ð¼Ð°Ñ�Ð¸Ð² %s\n"
 
-#: vms-alpha.c:6823
+#: vms-alpha.c:7003
 #, c-format
 msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
 msgstr "dimct: %u, aflags: 0x%02x, Ñ†Ð¸Ñ„Ñ€: %u, ÑˆÐºÐ°Ð»Ð°: %u\n"
 
-#: vms-alpha.c:6828
+#: vms-alpha.c:7008
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr "arsize: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6832
+#: vms-alpha.c:7012
 #, c-format
 msgid "Strides:\n"
 msgstr "ÐšÑ€Ð¾ÐºÐ¸:\n"
 
-#: vms-alpha.c:6842
+#: vms-alpha.c:7022
 #, c-format
 msgid "Bounds:\n"
 msgstr "ÐœÐµÐ¶Ñ–:\n"
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7028
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr "[%u]: Ð½Ð¸Ð¶Ð½Ñ�: %u, Ð²ÐµÑ€Ñ…Ð½Ñ�: %u\n"
 
-#: vms-alpha.c:6860
+#: vms-alpha.c:7040
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr "Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº %s\n"
 
-#: vms-alpha.c:6865
+#: vms-alpha.c:7045
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "Ð¾Ñ�Ð½Ð¾Ð²Ð°: %u, Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ�: %u\n"
 
-#: vms-alpha.c:6886
+#: vms-alpha.c:7066
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr "vflags: 0x%02x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: 0x%08x "
 
-#: vms-alpha.c:6892
+#: vms-alpha.c:7072
 #, c-format
 msgid "(no value)\n"
 msgstr "(Ð½ÐµÐ¼Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6895
+#: vms-alpha.c:7075
 #, c-format
 msgid "(not active)\n"
 msgstr "(Ð½ÐµÐ°ÐºÑ‚Ð¸Ð²Ð½Ðµ)\n"
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7078
 #, c-format
 msgid "(not allocated)\n"
 msgstr "(Ð½Ðµ Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð¾)\n"
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7081
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€)\n"
 
-#: vms-alpha.c:6905
+#: vms-alpha.c:7085
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(Ñ…Ð²Ð¾Ñ�Ñ‚Ð¾Ð²Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7088
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(Ð´Ð°Ð»Ñ– Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ)\n"
 
-#: vms-alpha.c:6911
+#: vms-alpha.c:7091
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr "(Ð·Ð° Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ Ñƒ Ð±Ñ–Ñ‚Ð°Ñ… %u)\n"
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7095
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr "(Ñ€ÐµÐ³: %u, disp: %u, indir: %u, Ñ‚Ð¸Ð¿: "
 
-#: vms-alpha.c:6922
+#: vms-alpha.c:7102
 msgid "literal"
 msgstr "Ð»Ñ–Ñ‚ÐµÑ€Ð°Ð»"
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7105
 msgid "address"
 msgstr "Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7108
 msgid "desc"
 msgstr "Ð´ÐµÑ�Ðº"
 
-#: vms-alpha.c:6931
+#: vms-alpha.c:7111
 msgid "reg"
 msgstr "Ñ€ÐµÐ³"
 
-#: vms-alpha.c:6948
+#: vms-alpha.c:7128
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr "Ð´Ð¾Ð²Ð¶.: %2u, Ñ‚Ð¸Ð¿: %2u "
 
-#: vms-alpha.c:6954
+#: vms-alpha.c:7134
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr "Ð°Ñ‚Ð¾Ð¼Ð°Ñ€Ð½Ð¸Ð¹, Ñ‚Ð¸Ð¿=0x%02x %s\n"
 
-#: vms-alpha.c:6958
+#: vms-alpha.c:7138
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr "Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ‚ÑƒÑ‚: 0x%08x\n"
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7142
 #, c-format
 msgid "typed pointer\n"
 msgstr "Ñ‚Ð¸Ð¿Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº\n"
 
-#: vms-alpha.c:6966
+#: vms-alpha.c:7146
 #, c-format
 msgid "pointer\n"
 msgstr "Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº\n"
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7154
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr "Ð¼Ð°Ñ�Ð¸Ð², Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð½Ñ–Ñ�Ñ‚ÑŒ: %u, Ð±Ñ–Ñ‚Ð¾Ð²Ð° ÐºÐ°Ñ€Ñ‚Ð°: "
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7161
 #, c-format
 msgid "array descriptor:\n"
 msgstr "Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ð¼Ð°Ñ�Ð¸Ð²Ñƒ:\n"
 
-#: vms-alpha.c:6988
+#: vms-alpha.c:7168
 #, c-format
 msgid "type spec for element:\n"
 msgstr "Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ñ‚Ð¸Ð¿Ñƒ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð°:\n"
 
-#: vms-alpha.c:6990
+#: vms-alpha.c:7170
 #, c-format
 msgid "type spec for subscript %u:\n"
 msgstr "Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ñ‚Ð¸Ð¿Ñƒ Ð´Ð»Ñ� Ñ�Ð¿Ð¸Ñ�ÐºÑƒ Ñ–Ð½Ð´ÐµÐºÑ�Ñ–Ð² %u:\n"
 
-#: vms-alpha.c:7008
+#: vms-alpha.c:7188
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ�:\n"
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7199
 #, c-format
 msgid "cannot read DST header\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº DST\n"
 
-#: vms-alpha.c:7025
+#: vms-alpha.c:7205
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr " Ñ‚Ð¸Ð¿: %3u, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %3u (Ð·Ð° 0x%08x): "
 
-#: vms-alpha.c:7039
+#: vms-alpha.c:7219
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð» DST\n"
 
-#: vms-alpha.c:7082
+#: vms-alpha.c:7262
 #, c-format
 msgid "standard data: %s\n"
 msgstr "Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ– Ð´Ð°Ð½Ñ–: %s\n"
 
-#: vms-alpha.c:7085 vms-alpha.c:7173
+#: vms-alpha.c:7265 vms-alpha.c:7353
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7092
+#: vms-alpha.c:7272
 #, c-format
 msgid "modbeg\n"
 msgstr "modbeg\n"
 
-#: vms-alpha.c:7094
+#: vms-alpha.c:7274
 #, c-format
 msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: %d, Ð¼Ð¾Ð²Ð°: %u, Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð¾Ð»Ð¾Ð´ÑˆÐ¸Ð¹: %u\n"
 
-#: vms-alpha.c:7100 vms-alpha.c:7374
+#: vms-alpha.c:7280 vms-alpha.c:7554
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° Ð¼Ð¾Ð´ÑƒÐ»Ñ�: %.*s\n"
 
-#: vms-alpha.c:7103
+#: vms-alpha.c:7283
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñ�Ñ‚Ð¾Ñ€ : %.*s\n"
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7288
 #, c-format
 msgid "modend\n"
 msgstr "modend\n"
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7295
 msgid "rtnbeg\n"
 msgstr "rtnbeg\n"
 
-#: vms-alpha.c:7117
+#: vms-alpha.c:7297
 #, c-format
 msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
 msgstr "    Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: %u, Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, pd-Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x\n"
 
-#: vms-alpha.c:7122
+#: vms-alpha.c:7302
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr "    Ð½Ð°Ð·Ð²Ð° Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸: %.*s\n"
 
-#: vms-alpha.c:7130
+#: vms-alpha.c:7310
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr "rtnend: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ 0x%08x\n"
 
-#: vms-alpha.c:7138
+#: vms-alpha.c:7318
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr "Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð°Ð´Ñ€ÐµÑ�Ð° bkpt 0x%08x\n"
 
-#: vms-alpha.c:7147
+#: vms-alpha.c:7327
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr "ÐµÐ¿Ñ–Ð»Ð¾Ð³: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: %u, Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº: %u\n"
 
-#: vms-alpha.c:7157
+#: vms-alpha.c:7337
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr "blkbeg: Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7166
+#: vms-alpha.c:7346
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr "blkend: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 0x%08x\n"
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7352
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "typspec (Ð´Ð¾Ð²Ð¶.: %u)\n"
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7359
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr "septyp, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7368
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr "recbeg: Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7370
 #, c-format
 msgid "    len: %u bits\n"
 msgstr "    Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u Ð±Ñ–Ñ‚Ñ–Ð²\n"
 
-#: vms-alpha.c:7195
+#: vms-alpha.c:7375
 #, c-format
 msgid "recend\n"
 msgstr "recend\n"
 
-#: vms-alpha.c:7199
+#: vms-alpha.c:7379
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr "enumbeg, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7203
+#: vms-alpha.c:7383
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr "enumelt, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7387
 #, c-format
 msgid "enumend\n"
 msgstr "enumend\n"
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7392
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr "Ð¼Ñ–Ñ‚ÐºÐ°, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7394
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr "    Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x\n"
 
-#: vms-alpha.c:7224
+#: vms-alpha.c:7404
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "Ñ€Ð¾Ð·Ñ€Ð¸Ð²Ð½Ð¸Ð¹ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ (nbr: %u)\n"
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7407
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u\n"
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7417
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ñ�Ð´ÐºÐ°  (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7434
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:7261
+#: vms-alpha.c:7441
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:7267
+#: vms-alpha.c:7447
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7273
+#: vms-alpha.c:7453
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7279
+#: vms-alpha.c:7459
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7284
+#: vms-alpha.c:7464
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7289
+#: vms-alpha.c:7469
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7294
+#: vms-alpha.c:7474
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7478
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7483
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7485
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7310
+#: vms-alpha.c:7490
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7312
+#: vms-alpha.c:7492
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7318
+#: vms-alpha.c:7498
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "Ð¿Ñ€Ð¸Ñ€Ñ–Ñ�Ñ‚ pc +%-4d"
 
-#: vms-alpha.c:7322
+#: vms-alpha.c:7502
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x Ñ€Ñ�Ð´Ð¾Ðº: %5u\n"
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7507
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    *Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð°* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u\n"
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7522
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "Ð´Ð¶ÐµÑ€ÐµÐ»Ð¾ (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7537
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
 msgstr "   declfile: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u, Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: %u, Ñ–Ð´. Ñ„Ð°Ð¹Ð»Ð°: %u\n"
 
-#: vms-alpha.c:7362
+#: vms-alpha.c:7542
 #, c-format
 msgid "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 msgstr "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
 
-#: vms-alpha.c:7371
+#: vms-alpha.c:7551
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° Ñ„Ð°Ð¹Ð»Ð°: %.*s\n"
 
-#: vms-alpha.c:7380
+#: vms-alpha.c:7560
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7385 vms-alpha.c:7390
+#: vms-alpha.c:7565 vms-alpha.c:7570
 #, c-format
 msgid "   setrec %u\n"
 msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7395 vms-alpha.c:7400
+#: vms-alpha.c:7575 vms-alpha.c:7580
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7405 vms-alpha.c:7410
+#: vms-alpha.c:7585 vms-alpha.c:7590
 #, c-format
 msgid "   deflines %u\n"
 msgstr "   deflines %u\n"
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:7594
 #, c-format
 msgid "   formfeed\n"
 msgstr "   formfeed\n"
 
-#: vms-alpha.c:7418
+#: vms-alpha.c:7598
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   *Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð°* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u\n"
 
-#: vms-alpha.c:7430
+#: vms-alpha.c:7610
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "*Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹* Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�, %u\n"
 
-#: vms-alpha.c:7462
+#: vms-alpha.c:7642
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ EIHD\n"
 
-#: vms-alpha.c:7466
+#: vms-alpha.c:7646
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr "EIHD: (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u, ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð±Ð»Ð¾ÐºÑ–Ð²: %u)\n"
 
-#: vms-alpha.c:7470
+#: vms-alpha.c:7650
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " majorid: %u, minorid: %u\n"
 
-#: vms-alpha.c:7478
+#: vms-alpha.c:7658
 msgid "executable"
 msgstr "Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:7661
 msgid "linkable image"
 msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·"
 
-#: vms-alpha.c:7488
+#: vms-alpha.c:7668
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " Ñ‚Ð¸Ð¿ Ð¾Ð±Ñ€Ð°Ð·Ñƒ: %u (%s)"
 
-#: vms-alpha.c:7494
+#: vms-alpha.c:7674
 msgid "native"
 msgstr "Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ð¹"
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:7677
 msgid "CLI"
 msgstr "CLI"
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:7684
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿: %u (%s)\n"
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:7691
 #, c-format
 msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 msgstr " Ð·Ñ�ÑƒÐ²Ð¸: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 
-#: vms-alpha.c:7515
+#: vms-alpha.c:7695
 #, c-format
 msgid " fixup info rva: "
 msgstr " Ð´Ð°Ð½Ñ– Ñ‰Ð¾Ð´Ð¾ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ rva: "
 
-#: vms-alpha.c:7517
+#: vms-alpha.c:7697
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", Ð²ÐµÐºÑ‚Ð¾Ñ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² rva: "
 
-#: vms-alpha.c:7520
+#: vms-alpha.c:7700
 #, c-format
 msgid ""
 "\n"
@@ -7255,474 +7609,474 @@ msgstr ""
 "\n"
 " Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¼Ð°Ñ�Ð¸Ð²Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ—: %u\n"
 
-#: vms-alpha.c:7525
+#: vms-alpha.c:7705
 #, c-format
 msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
 msgstr " Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ�-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð¾Ð±Ñ€Ð°Ð·Ñƒ: %u, Ðº-Ñ‚ÑŒ ÐºÐ°Ð½Ð°Ð»Ñ–Ð²: %u, Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð½Ñ–Ñ�Ñ‚ÑŒ: %08x%08x\n"
 
-#: vms-alpha.c:7531
+#: vms-alpha.c:7711
 #, c-format
 msgid " linker flags: %08x:"
 msgstr " Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ°: %08x:"
 
-#: vms-alpha.c:7562
+#: vms-alpha.c:7742
 #, c-format
 msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 msgstr " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 
-#: vms-alpha.c:7568
+#: vms-alpha.c:7748
 #, c-format
 msgid " BPAGE: %u"
 msgstr " BPAGE: %u"
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:7755
 #, c-format
 msgid ", ext fixup offset: %u, no_opt psect off: %u"
 msgstr ", Ð·Ñ�ÑƒÐ² Ñ€Ð¾Ð·ÑˆÐ¸Ñ€. Ð¿Ñ€Ð¸Ð²â€™Ð·Ñ�ÐºÐ¸: %u, Ð·Ñ�ÑƒÐ² psect no_opt: %u"
 
-#: vms-alpha.c:7578
+#: vms-alpha.c:7758
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", Ð¿Ñ�ÐµÐ²Ð´Ð¾Ð½Ñ–Ð¼: %u\n"
 
-#: vms-alpha.c:7586
+#: vms-alpha.c:7766
 #, c-format
 msgid "system version array information:\n"
 msgstr "Ð¼Ð°Ñ�Ð¸Ð² Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸:\n"
 
-#: vms-alpha.c:7590
+#: vms-alpha.c:7770
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº EIHVN\n"
 
-#: vms-alpha.c:7600
+#: vms-alpha.c:7780
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð²ÐµÑ€Ñ�Ñ–ÑŽ EIHVN\n"
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:7783
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:7787
 msgid "BASE_IMAGE       "
 msgstr "BASE_IMAGE       "
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:7790
 msgid "MEMORY_MANAGEMENT"
 msgstr "MEMORY_MANAGEMENT"
 
-#: vms-alpha.c:7613
+#: vms-alpha.c:7793
 msgid "IO               "
 msgstr "IO               "
 
-#: vms-alpha.c:7616
+#: vms-alpha.c:7796
 msgid "FILES_VOLUMES    "
 msgstr "FILES_VOLUMES    "
 
-#: vms-alpha.c:7619
+#: vms-alpha.c:7799
 msgid "PROCESS_SCHED    "
 msgstr "PROCESS_SCHED    "
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:7802
 msgid "SYSGEN           "
 msgstr "SYSGEN           "
 
-#: vms-alpha.c:7625
+#: vms-alpha.c:7805
 msgid "CLUSTERS_LOCKMGR "
 msgstr "CLUSTERS_LOCKMGR "
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:7808
 msgid "LOGICAL_NAMES    "
 msgstr "LOGICAL_NAMES    "
 
-#: vms-alpha.c:7631
+#: vms-alpha.c:7811
 msgid "SECURITY         "
 msgstr "SECURITY         "
 
-#: vms-alpha.c:7634
+#: vms-alpha.c:7814
 msgid "IMAGE_ACTIVATOR  "
 msgstr "IMAGE_ACTIVATOR  "
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:7817
 msgid "NETWORKS         "
 msgstr "NETWORKS         "
 
-#: vms-alpha.c:7640
+#: vms-alpha.c:7820
 msgid "COUNTERS         "
 msgstr "COUNTERS         "
 
-#: vms-alpha.c:7643
+#: vms-alpha.c:7823
 msgid "STABLE           "
 msgstr "STABLE           "
 
-#: vms-alpha.c:7646
+#: vms-alpha.c:7826
 msgid "MISC             "
 msgstr "MISC             "
 
-#: vms-alpha.c:7649
+#: vms-alpha.c:7829
 msgid "CPU              "
 msgstr "CPU              "
 
-#: vms-alpha.c:7652
+#: vms-alpha.c:7832
 msgid "VOLATILE         "
 msgstr "VOLATILE         "
 
-#: vms-alpha.c:7655
+#: vms-alpha.c:7835
 msgid "SHELL            "
 msgstr "SHELL            "
 
-#: vms-alpha.c:7658
+#: vms-alpha.c:7838
 msgid "POSIX            "
 msgstr "POSIX            "
 
-#: vms-alpha.c:7661
+#: vms-alpha.c:7841
 msgid "MULTI_PROCESSING "
 msgstr "MULTI_PROCESSING "
 
-#: vms-alpha.c:7664
+#: vms-alpha.c:7844
 msgid "GALAXY           "
 msgstr "GALAXY           "
 
-#: vms-alpha.c:7667
+#: vms-alpha.c:7847
 msgid "*unknown*        "
 msgstr "*Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾*       "
 
-#: vms-alpha.c:7683 vms-alpha.c:7958
+#: vms-alpha.c:7863 vms-alpha.c:8137
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ EIHA\n"
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:7866
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr "Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ� Ð¾Ð±Ñ€Ð°Ð·Ñƒ:  (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€=%u)\n"
 
-#: vms-alpha.c:7689
+#: vms-alpha.c:7869
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr " ÐŸÐµÑ€ÑˆÐ° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7693
+#: vms-alpha.c:7873
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr " Ð”Ñ€ÑƒÐ³Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7697
+#: vms-alpha.c:7877
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr " Ð¢Ñ€ÐµÑ‚Ñ� Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7701
+#: vms-alpha.c:7881
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr " Ð§ÐµÑ‚Ð²ÐµÑ€Ñ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7705
+#: vms-alpha.c:7885
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr " Ð¡Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7716
+#: vms-alpha.c:7896
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ EIHI\n"
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:7900
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr "Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ð¾Ð±Ñ€Ð°Ð·Ñƒ: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð¾Ð»Ð¾Ð´ÑˆÐ¸Ð¹: %u)\n"
 
-#: vms-alpha.c:7723
+#: vms-alpha.c:7903
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr " Ð½Ð°Ð·Ð²Ð° Ð¾Ð±Ñ€Ð°Ð·Ñƒ     : %.*s\n"
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:7905
 #, c-format
 msgid " link time        : %s\n"
 msgstr " Ñ‡Ð°Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� : %s\n"
 
-#: vms-alpha.c:7727
+#: vms-alpha.c:7907
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " Ñ–Ð´. Ð¾Ð±Ñ€Ð°Ð·Ñƒ         : %.*s\n"
 
-#: vms-alpha.c:7729
+#: vms-alpha.c:7909
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " Ñ–Ð´. ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ°: %.*s\n"
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:7911
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr " Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð¾Ð±Ñ€Ð°Ð·Ñƒ: %.*s\n"
 
-#: vms-alpha.c:7741
+#: vms-alpha.c:7921
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ EIHS\n"
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:7925
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð¾Ð±Ñ€Ð°Ð·Ñƒ (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°: %u, Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�: %u)\n"
 
-#: vms-alpha.c:7751
+#: vms-alpha.c:7931
 #, c-format
 msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
 msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: vbn: %u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u (0x%x)\n"
 
-#: vms-alpha.c:7756
+#: vms-alpha.c:7936
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: vbn: %u, Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²: %u\n"
 
-#: vms-alpha.c:7761
+#: vms-alpha.c:7941
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²: vbn: %u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u\n"
 
-#: vms-alpha.c:7774
+#: vms-alpha.c:7954
 #, c-format
 msgid "cannot read EISD\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ EISD\n"
 
-#: vms-alpha.c:7785
+#: vms-alpha.c:7965
 #, c-format
 msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
 msgstr "Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¾Ð±Ñ€Ð°Ð·Ñƒ: (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°: %u, Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�: %u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u, Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿: %u)\n"
 
-#: vms-alpha.c:7793
+#: vms-alpha.c:7973
 #, c-format
 msgid " section: base: 0x%08x%08x size: 0x%08x\n"
 msgstr " Ñ€Ð¾Ð·Ð´Ñ–Ð»: Ð¾Ñ�Ð½Ð¾Ð²Ð°: 0x%08x%08x Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 0x%08x\n"
 
-#: vms-alpha.c:7798
+#: vms-alpha.c:7978
 #, c-format
 msgid " flags: 0x%04x"
 msgstr " Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: 0x%04x"
 
-#: vms-alpha.c:7836
+#: vms-alpha.c:8016
 #, c-format
 msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 msgstr " vbn: %u, pfc: %u, matchctl: %u Ñ‚Ð¸Ð¿: %u ("
 
-#: vms-alpha.c:7842
+#: vms-alpha.c:8022
 msgid "NORMAL"
 msgstr "NORMAL"
 
-#: vms-alpha.c:7845
+#: vms-alpha.c:8025
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:8028
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7851
+#: vms-alpha.c:8031
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7854
+#: vms-alpha.c:8034
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7857
+#: vms-alpha.c:8037
 msgid "USRSTACK"
 msgstr "USRSTACK"
 
-#: vms-alpha.c:7863
+#: vms-alpha.c:8043
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7866
+#: vms-alpha.c:8046
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€: 0x%08x, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7876
+#: vms-alpha.c:8056
 #, c-format
 msgid "cannot read DMT\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ DMT\n"
 
-#: vms-alpha.c:7880
+#: vms-alpha.c:8060
 #, c-format
 msgid "Debug module table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²:\n"
 
-#: vms-alpha.c:7889
+#: vms-alpha.c:8069
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº DMT\n"
 
-#: vms-alpha.c:7895
+#: vms-alpha.c:8075
 #, c-format
 msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
 msgstr " Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¼Ð¾Ð´ÑƒÐ»Ñ�: 0x%08x, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 0x%08x, (%u psect)\n"
 
-#: vms-alpha.c:7905
+#: vms-alpha.c:8085
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ psect DMT\n"
 
-#: vms-alpha.c:7909
+#: vms-alpha.c:8089
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr "  Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº psect: 0x%08x, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u\n"
 
-#: vms-alpha.c:7922
+#: vms-alpha.c:8102
 #, c-format
 msgid "cannot read DST\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ DST\n"
 
-#: vms-alpha.c:7932
+#: vms-alpha.c:8112
 #, c-format
 msgid "cannot read GST\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ GST\n"
 
-#: vms-alpha.c:7936
+#: vms-alpha.c:8116
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²:\n"
 
-#: vms-alpha.c:7965
+#: vms-alpha.c:8143
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr "ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ° Ð°Ð´Ñ€ÐµÑ�Ð¸ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ‚Ð¾Ñ€Ð° Ð¾Ð±Ñ€Ð°Ð·Ñƒ: (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°: %u, Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�: %u)\n"
 
-#: vms-alpha.c:7969
+#: vms-alpha.c:8147
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr "  iaflink : 0x%08x %08x\n"
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8151
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr "  fixuplnk: 0x%08x %08x\n"
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8154
 #, c-format
 msgid "  size : %u\n"
 msgstr "  Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u\n"
 
-#: vms-alpha.c:7978
+#: vms-alpha.c:8156
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr "  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: 0x%08x\n"
 
-#: vms-alpha.c:7983
+#: vms-alpha.c:8161
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7988
+#: vms-alpha.c:8166
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8171
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8174
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:8000
+#: vms-alpha.c:8178
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:8003
+#: vms-alpha.c:8181
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8184
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:8008
+#: vms-alpha.c:8186
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:8016
+#: vms-alpha.c:8194
 #, c-format
 msgid " Shareable images:\n"
 msgstr " ÐžÐ±Ñ€Ð°Ð·Ð¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�:\n"
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8199
 #, c-format
 msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
 msgstr "  %u: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u, Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: 0x%02x, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:8028
+#: vms-alpha.c:8206
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr " Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñƒ Ñ‡Ð¾Ñ‚Ð¸Ñ€Ð¸ Ñ�Ð»Ð¾Ð²Ð°:\n"
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8211
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr " Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñƒ Ð´Ð¾Ð²Ð³Ðµ Ñ�Ð»Ð¾Ð²Ð¾:\n"
 
-#: vms-alpha.c:8038
+#: vms-alpha.c:8216
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr " Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ .address Ñƒ Ñ‡Ð¾Ñ‚Ð¸Ñ€Ð¸ Ñ�Ð»Ð¾Ð²Ð°:\n"
 
-#: vms-alpha.c:8043
+#: vms-alpha.c:8221
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr " Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ .address Ñƒ Ð´Ð¾Ð²Ð³Ðµ Ñ�Ð»Ð¾Ð²Ð¾:\n"
 
-#: vms-alpha.c:8048
+#: vms-alpha.c:8226
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr " ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð°Ð´Ñ€ÐµÑ� ÐºÐ¾Ð´Ñƒ:\n"
 
-#: vms-alpha.c:8053
+#: vms-alpha.c:8231
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr " ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ Ð½Ð° Ð¿Ð°Ñ€Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�:\n"
 
-#: vms-alpha.c:8062
+#: vms-alpha.c:8240
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " Ð—Ð¼Ñ–Ð½Ð° Ð·Ð°Ñ…Ð¸Ñ�Ñ‚Ñƒ (%u Ð·Ð°Ð¿Ð¸Ñ�Ð¸):\n"
 
-#: vms-alpha.c:8068
+#: vms-alpha.c:8246
 #, c-format
 msgid "  base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "
 msgstr "  Ð¾Ñ�Ð½.: 0x%08x %08x, Ñ€Ð¾Ð·Ð¼: 0x%08x,  Ð·Ð°Ñ….: 0x%08x "
 
 #. FIXME: we do not yet support relocatable link.  It is not obvious
 #. how to do it for debug infos.
-#: vms-alpha.c:8908
+#: vms-alpha.c:9123
 msgid "%P: relocatable link is not supported\n"
 msgstr "%P: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñ�Ñ‚ÑŽ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
 
-#: vms-alpha.c:8979
+#: vms-alpha.c:9194
 #, c-format
 msgid "%P: multiple entry points: in modules %pB and %pB\n"
 msgstr "%P: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð¾Ñ‡Ð¾Ðº Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… %pB Ñ– %pB\n"
 
-#: vms-lib.c:1445
+#: vms-lib.c:1525
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ð· Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Â«%sÂ» Ð· Â«%sÂ»"
 
-#: vms-misc.c:361
+#: vms-misc.c:367
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr "_bfd_vms_output_counted Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð´Ð»Ñ� Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ñ— ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
-#: vms-misc.c:366
+#: vms-misc.c:372
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "_bfd_vms_output_counted Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð´Ð»Ñ� Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾Ñ— ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
@@ -7736,172 +8090,209 @@ msgstr "%pB: Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±â€™Ñ”Ð
 msgid "%pB: dynamic object with no .loader section"
 msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚ Ð±ÐµÐ· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .loader"
 
-#: xcofflink.c:1413
+#: xcofflink.c:1417
 #, c-format
 msgid "%pB: `%s' has line numbers but no enclosing section"
 msgstr "%pB: Â«%sÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ð¾Ð¼ÐµÑ€Ð¸ Ñ€Ñ�Ð´ÐºÑ–Ð², Ð°Ð»Ðµ Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: xcofflink.c:1466
+#: xcofflink.c:1470
 #, c-format
 msgid "%pB: class %d symbol `%s' has no aux entries"
 msgstr "%pB: ÐºÐ»Ð°Ñ� %d, Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¼Ð°Ñ” Ð´Ð¾Ð¿Ð¾Ð¼Ñ–Ð¶Ð½Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²"
 
-#: xcofflink.c:1489
+#: xcofflink.c:1493
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized csect type %d"
 msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ csect %d"
 
-#: xcofflink.c:1502
+#: xcofflink.c:1506
 #, c-format
 msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» XTY_ER Â«%sÂ»: ÐºÐ»Ð°Ñ� %d, Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %<PRId64>"
 
-#: xcofflink.c:1533
+#: xcofflink.c:1537
 #, c-format
 msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
 msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» XMC_TC0 Â«%sÂ» Ñ” ÐºÐ»Ð°Ñ�Ð¾Ð¼ %d, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %<PRId64>"
 
-#: xcofflink.c:1680
+#: xcofflink.c:1684
 #, c-format
 msgid "%pB: csect `%s' not in enclosing section"
 msgstr "%pB: csect Â«%sÂ» Ð½Ðµ Ñƒ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–"
 
-#: xcofflink.c:1788
+#: xcofflink.c:1792
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ� XTY_LD Â«%sÂ»"
 
-#: xcofflink.c:2109
+#: xcofflink.c:2113
 #, c-format
 msgid "%pB: reloc %s:%<PRId64> not in csect"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s:%<PRId64> Ð½Ðµ Ñƒ csect"
 
-#: xcofflink.c:3196
+#: xcofflink.c:3193
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: Ð½ÐµÐ¼Ð°Ñ” Ñ‚Ð°ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: xcofflink.c:3301
+#: xcofflink.c:3298
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¿Ñ€Ð¾Ð±Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: xcofflink.c:3680
+#: xcofflink.c:3677
 msgid "error: undefined symbol __rtinit"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» __rtinit"
 
-#: xcofflink.c:4060
+#: xcofflink.c:4055
 #, c-format
 msgid "%pB: loader reloc in unrecognized section `%s'"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð° Ñƒ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%sÂ»"
 
-#: xcofflink.c:4072
+#: xcofflink.c:4067
 #, c-format
 msgid "%pB: `%s' in loader reloc but not loader sym"
 msgstr "%pB: Â«%sÂ» Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð°, Ð°Ð»Ðµ Ð½Ðµ Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ñ… Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�"
 
-#: xcofflink.c:4089
+#: xcofflink.c:4084
 #, c-format
 msgid "%pB: loader reloc in read-only section %pA"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð° Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�, %pA"
 
-#: xcofflink.c:5113
+#: xcofflink.c:5112
 #, c-format
 msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
 msgstr "ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� TOC: %#<PRIx64> > 0x10000; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -mminimal-toc Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ�"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5031
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2872
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»: 0x%02x"
+
+#: elfnn-aarch64.c:5246
 #, c-format
 msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 835769 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5112
+#: elfnn-aarch64.c:5338
 #, c-format
 msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 843419 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5641
+#: elfnn-aarch64.c:5351
+msgid "%pB: error: erratum 843419 immediate 0x%"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ€Ð¾Ð¼Ñ–Ð¶Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð´Ð»Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 843419 0x%"
+
+#: elfnn-aarch64.c:5899
 #, c-format
 msgid "%pB: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÑƒÐ²Ð°Ñ‚Ð¸Ñ�Ñ� Ð·Ð·Ð¾Ð²Ð½Ñ–, Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:5732
+#: elfnn-aarch64.c:5990
 #, c-format
 msgid "%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol"
 msgstr "%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ñ–Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ” NULL Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ñ�Ñ‚Ð¾Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6830
+#: elfnn-aarch64.c:6103 elfnn-aarch64.c:6140
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
+
+#: elfnn-aarch64.c:7125
 msgid "too many GOT entries for -fpic, please recompile with -fPIC"
 msgstr "Ð·Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² GOT Ð´Ð»Ñ� -fpic. Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð· -fPIC"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6858
+#: elfnn-aarch64.c:7153
 msgid "one possible cause of this error is that the symbol is being referenced in the indicated code as if it had a larger alignment than was declared where it was defined"
 msgstr "Ð¾Ð´Ð½Ñ–Ñ”ÑŽ Ñ–Ð· Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¸Ñ… Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ Ñ†Ñ–Ñ”Ñ— Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ” Ñ‚Ðµ, Ñ‰Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ ÐºÐ¾Ð´Ñ– Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ðº, Ð½Ð°Ñ‡Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¼Ð°Ñ” Ð±Ñ–Ð»ÑŒÑˆÐµ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�, Ð½Ñ–Ð¶ Ð±ÑƒÐ»Ð¾ Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð¾ Ñ‚Ð°Ð¼, Ð´Ðµ Ð¹Ð¾Ð³Ð¾ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:7443
+#: elfnn-aarch64.c:7720
 #, c-format
 msgid "%pB: relocation %s against `%s' can not be used when making a shared object"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:182
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:217
+#: elfnn-riscv.c:187 elfnn-riscv.c:222
 #, c-format
 msgid "%pB: warning: RVE PLT generation not supported"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� PLT RVE Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2311
+#: elfnn-riscv.c:1977
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pcrel_lo Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼"
+
+#: elfnn-riscv.c:2198
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC\n"
+
+#: elfnn-riscv.c:2208
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%%X%%P: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»\n"
+
+#: elfnn-riscv.c:2247
 msgid "%X%P: internal error: out of range error\n"
 msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2315
+#: elfnn-riscv.c:2252
 msgid "%X%P: internal error: unsupported relocation error\n"
 msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2325
+#: elfnn-riscv.c:2258
+msgid "dangerous relocation error"
+msgstr "Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
+
+#: elfnn-riscv.c:2264
 msgid "%X%P: internal error: unknown error\n"
 msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2711
+#: elfnn-riscv.c:2630
 #, c-format
-msgid "error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%d"
+msgid "error: %pB: Mis-matched ISA version for '%s' extension. %d.%d vs %d.%d"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð²ÐµÑ€Ñ�Ñ–Ñ— ISA Ð´Ð»Ñ� Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«%sÂ». %d.%d, Ð° Ð½Ðµ %d.%d"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2729
+#: elfnn-riscv.c:2648
 #, c-format
-msgid "error: %pB: corrupted ISA string '%s'.first letter should be 'i' or 'e' but got '%s'."
+msgid "error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' but got '%s'."
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº ISA Â«%sÂ». ÐŸÐµÑ€ÑˆÐ¾ÑŽ Ð»Ñ–Ñ‚ÐµÑ€Ð¾ÑŽ Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Â«iÂ» Ð°Ð±Ð¾ Â«eÂ», Ð° Ð¼Ð°Ñ”Ð¼Ð¾ Â«%sÂ»."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2773
+#: elfnn-riscv.c:2692
 #, c-format
 msgid "error: %pB: Mis-matched ISA string to merge '%s' and '%s'."
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ñ�Ð´ÐºÐ°Ñ… ISA Ð·Ð°Ð²Ð°Ð¶Ð°Ñ” Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½ÑŽ Â«%sÂ» Ð· Â«%sÂ»."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2921
+#: elfnn-riscv.c:2893
 #, c-format
 msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)."
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ–Ð· Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s)."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2946
+#: elfnn-riscv.c:2913
 #, c-format
 msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)."
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: XLEN Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð·Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð´Ð»Ñ� Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u)."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2954
+#: elfnn-riscv.c:2921
 #, c-format
-msgid "error: %pB: Unspported XLEN (%u), you mightusing wrong emulation."
+msgid "error: %pB: Unsupported XLEN (%u), you might be using wrong emulation."
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� XLEN (%u). Ð™Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾, Ð²Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚Ðµ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ñƒ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–ÑŽ."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3039
+#: elfnn-riscv.c:3035
 #, c-format
-msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð²ÐµÑ€Ñ�Ñ–Ð¹ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— priv (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°/Ð¿Ñ€Ð¾Ð¼Ñ–Ð¶Ð½Ð°/Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�)."
+msgid "warning: %pB use privilege spec version %u.%u.%u but the output use version %u.%u.%u."
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— Ð¿Ñ€Ð°Ð² Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ %u.%u.%u, Ð°Ð»Ðµ Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ� %u.%u.%u."
+
+#: elfnn-riscv.c:3053
+msgid "warning: privilege spec version 1.9.1 can not be linked with other spec versions."
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— Ð¿Ñ€Ð°Ð² Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ 1.9.1 Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð· Ñ–Ð½ÑˆÐ¸Ð¼Ð¸ Ð²ÐµÑ€Ñ�Ñ–Ñ�Ð¼Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ð¹."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3055
+#: elfnn-riscv.c:3081
 #, c-format
 msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned."
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ñ–Ð· Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ�Ñ‚ÐµÐºÐ°, Ð° Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ñ–Ð· Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ�Ñ‚ÐµÐºÐ°."
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3096
+#: elfnn-riscv.c:3122
 #, c-format
 msgid ""
 "%pB: ABI is incompatible with that of the selected emulation:\n"
@@ -7910,111 +8301,111 @@ msgstr ""
 "%pB: ABI Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ñ–Ð· Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾ÑŽ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ”ÑŽ:\n"
 "  Ñ†Ñ–Ð»ÑŒ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—, Â«%sÂ», Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Â«%sÂ»"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3119
+#: elfnn-riscv.c:3176
 #, c-format
 msgid "%pB: can't link %s modules with %s modules"
 msgstr "%pB: Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ– %s Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3129
+#: elfnn-riscv.c:3186
 #, c-format
 msgid "%pB: can't link RVE with other target"
 msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ RVE Ñ–Ð· Ñ–Ð½ÑˆÐ¾ÑŽ Ñ†Ñ–Ð»Ð»ÑŽ"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3630
+#: elfnn-riscv.c:3724
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-byte boundary, but only %<PRId64> present"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ñ– %<PRId64> Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð´Ð»Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ð½Ð° %<PRId64>-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ð¼ÐµÐ¶Ñƒ, Ð²Ñ‚Ñ–Ð¼, Ð¼Ð°Ñ”Ð¼Ð¾ Ð»Ð¸ÑˆÐµ %<PRId64>"
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
+#: peXXigen.c:164
 #, c-format
 msgid "%pB: unable to find name for empty section"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: peigen.c:183 pepigen.c:183 pex64igen.c:183
+#: peXXigen.c:191
 #, c-format
 msgid "%pB: out of memory creating name for empty section"
 msgstr "%pB: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ð´Ð»Ñ� Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: peigen.c:194 pepigen.c:194 pex64igen.c:194
+#: peXXigen.c:201
 #, c-format
 msgid "%pB: unable to create fake empty section"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»"
 
-#: peigen.c:532 pepigen.c:532 pex64igen.c:532
+#: peXXigen.c:539
 #, c-format
-msgid "%pB: aout header specifies an invalid number of data-directory entries: %ld"
-msgstr "%pB: Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº aout Ð²ÐºÐ°Ð·ÑƒÑ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñƒ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ…: %ld"
+msgid "%pB: aout header specifies an invalid number of data-directory entries: %u"
+msgstr "%pB: Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº aout Ð²ÐºÐ°Ð·ÑƒÑ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñƒ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ…: %u"
 
-#: peigen.c:1091 pepigen.c:1091 pex64igen.c:1091
+#: peXXigen.c:1088
 #, c-format
 msgid "%pB: line number overflow: 0x%lx > 0xffff"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²; 0x%lx > 0xffff"
 
-#: peigen.c:1235 pepigen.c:1235 pex64igen.c:1235
+#: peXXigen.c:1241
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� [.edata (Ð°Ð±Ð¾ Ñ–Ð½ÑˆÐµ Ð¼Ñ–Ñ�Ñ†Ðµ, Ð´Ðµ Ð¹Ð¾Ð³Ð¾ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)]"
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1242
 msgid "Import Directory [parts of .idata]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� [Ñ‡Ð°Ñ�Ñ‚Ð¸Ð½Ð¸ .idata]"
 
-#: peigen.c:1237 pepigen.c:1237 pex64igen.c:1237
+#: peXXigen.c:1243
 msgid "Resource Directory [.rsrc]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ€ÐµÑ�ÑƒÑ€Ñ�Ñ–Ð² [.rsrc]"
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1244
 msgid "Exception Directory [.pdata]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½ÑŒ [.pdata]"
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1245
 msgid "Security Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð°Ñ…Ð¸Ñ�Ñ‚Ñƒ"
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1246
 msgid "Base Relocation Directory [.reloc]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� [.reloc]"
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1247
 msgid "Debug Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸"
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1248
 msgid "Description Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð¿Ð¸Ñ�Ñ–Ð²"
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1249
 msgid "Special Directory"
 msgstr "ÐžÑ�Ð¾Ð±Ð»Ð¸Ð²Ð¸Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³"
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1250
 msgid "Thread Storage Directory [.tls]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑ–Ð² [.tls]"
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1251
 msgid "Load Configuration Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ"
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1252
 msgid "Bound Import Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ð¸Ð¼ÑƒÑˆÐµÐ½Ð¾Ð³Ð¾ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1253
 msgid "Import Address Table Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð°Ð´Ñ€ÐµÑ�"
 
-#: peigen.c:1248 pepigen.c:1248 pex64igen.c:1248
+#: peXXigen.c:1254
 msgid "Delay Import Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1255
 msgid "CLR Runtime Header"
 msgstr "Ð”Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº CLR"
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1256
 msgid "Reserved"
 msgstr "Ð—Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¾Ð²Ð°Ð½Ð¾"
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1316
 #, c-format
 msgid ""
 "\n"
@@ -8023,7 +8414,7 @@ msgstr ""
 "\n"
 "Ð†Ñ�Ð½ÑƒÑ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ñ—Ñ— Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾\n"
 
-#: peigen.c:1316 pepigen.c:1316 pex64igen.c:1316
+#: peXXigen.c:1322
 #, c-format
 msgid ""
 "\n"
@@ -8032,7 +8423,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ñ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ…\n"
 
-#: peigen.c:1323 pepigen.c:1323 pex64igen.c:1323
+#: peXXigen.c:1329
 #, c-format
 msgid ""
 "\n"
@@ -8041,7 +8432,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ 0x%lx\n"
 
-#: peigen.c:1365 pepigen.c:1365 pex64igen.c:1365
+#: peXXigen.c:1369
 #, c-format
 msgid ""
 "\n"
@@ -8050,12 +8441,12 @@ msgstr ""
 "\n"
 "Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð¾ Ð·Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %04lx\n"
 
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
+#: peXXigen.c:1373
 #, c-format
 msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
 msgstr "\ttoc Ð¾Ñ�Ð½Ð¾Ð²Ð¸ ÐºÐ¾Ð´Ñƒ %08lx (Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð½Ð¸Ð¹/Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ð¹) %08lx/%08lx\n"
 
-#: peigen.c:1377 pepigen.c:1377 pex64igen.c:1377
+#: peXXigen.c:1380
 #, c-format
 msgid ""
 "\n"
@@ -8064,7 +8455,7 @@ msgstr ""
 "\n"
 "Ð�ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ reldata! Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¾.\n"
 
-#: peigen.c:1382 pepigen.c:1382 pex64igen.c:1382
+#: peXXigen.c:1385
 #, c-format
 msgid ""
 "\n"
@@ -8073,7 +8464,7 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� (Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s)\n"
 
-#: peigen.c:1385 pepigen.c:1385 pex64igen.c:1385
+#: peXXigen.c:1388
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -8082,7 +8473,7 @@ msgstr ""
 " vma:            Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð§Ð°Ñ�Ð¾Ð²Ð°    Ð›Ð°Ð½Ñ†ÑŽÐ¶Ð¾Ðº Ð�Ð°Ð·Ð²Ð°     ÐŸÐµÑ€ÑˆÐ¸Ð¹\n"
 "                 Ð²ÐºÐ°Ð·.   ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐºÐ°  Ñ�Ð¿Ñ€Ñ�Ð¼.   DLL       ÑˆÐ»ÑŽÐ·\n"
 
-#: peigen.c:1435 pepigen.c:1435 pex64igen.c:1435
+#: peXXigen.c:1437
 #, c-format
 msgid ""
 "\n"
@@ -8091,12 +8482,12 @@ msgstr ""
 "\n"
 "\tÐ�Ð°Ð·Ð²Ð° DLL: %.*s\n"
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1453
 #, c-format
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
 msgstr "\tvma:  Ð’ÐºÐ°Ð·/ÐŸÐ¾Ñ€ Ð�Ð°Ð·Ð²Ð°-ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·Ð°Ð½Ð¾-Ð´Ð¾\n"
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1478
 #, c-format
 msgid ""
 "\n"
@@ -8105,13 +8496,12 @@ msgstr ""
 "\n"
 "Ð†Ñ�Ð½ÑƒÑ” Ð·Ð°Ð¿Ð¸Ñ� Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ñƒ, Ð°Ð»Ðµ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ð¹Ð¾Ð³Ð¾ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾\n"
 
-#: peigen.c:1520 peigen.c:1559 pepigen.c:1520 pepigen.c:1559 pex64igen.c:1520
-#: pex64igen.c:1559
+#: peXXigen.c:1522 peXXigen.c:1561
 #, c-format
 msgid "\t<corrupt: 0x%04lx>"
 msgstr "\t<Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾: 0x%04lx>"
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1654
 #, c-format
 msgid ""
 "\n"
@@ -8120,7 +8510,7 @@ msgstr ""
 "\n"
 "Ð†Ñ�Ð½ÑƒÑ” Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ñ—Ñ— Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾\n"
 
-#: peigen.c:1658 pepigen.c:1658 pex64igen.c:1658
+#: peXXigen.c:1660
 #, c-format
 msgid ""
 "\n"
@@ -8129,7 +8519,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ñ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ…\n"
 
-#: peigen.c:1669 pepigen.c:1669 pex64igen.c:1669
+#: peXXigen.c:1671
 #, c-format
 msgid ""
 "\n"
@@ -8138,7 +8528,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñ—Ñ— Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–\n"
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1682
 #, c-format
 msgid ""
 "\n"
@@ -8147,7 +8537,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ð²Ð¾Ð½Ð° Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ (%d)\n"
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1688
 #, c-format
 msgid ""
 "\n"
@@ -8156,7 +8546,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ 0x%lx\n"
 
-#: peigen.c:1714 pepigen.c:1714 pex64igen.c:1714
+#: peXXigen.c:1716
 #, c-format
 msgid ""
 "\n"
@@ -8166,67 +8556,67 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ– ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� (Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s)\n"
 
-#: peigen.c:1718 pepigen.c:1718 pex64igen.c:1718
+#: peXXigen.c:1720
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
 msgstr "ÐŸÑ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�\t\t%lx\n"
 
-#: peigen.c:1721 pepigen.c:1721 pex64igen.c:1721
+#: peXXigen.c:1723
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
 msgstr "ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐºÐ° Ñ‡Ð°Ñ�Ñƒ/Ð´Ð°Ñ‚Ð¸\t\t%lx\n"
 
-#: peigen.c:1725 pepigen.c:1725 pex64igen.c:1725
+#: peXXigen.c:1727
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr "ÐžÑ�Ð½Ð¾Ð²Ð½Ð°/ÐœÐ¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� \t\t\t%d/%d\n"
 
-#: peigen.c:1728 pepigen.c:1728 pex64igen.c:1728
+#: peXXigen.c:1730
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Ð�Ð°Ð·Ð²Ð°\t\t\t\t"
 
-#: peigen.c:1739 pepigen.c:1739 pex64igen.c:1739
+#: peXXigen.c:1741
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr "ÐžÑ�Ð½Ð¾Ð²Ð° Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ�\t\t%ld\n"
 
-#: peigen.c:1742 pepigen.c:1742 pex64igen.c:1742
+#: peXXigen.c:1744
 #, c-format
 msgid "Number in:\n"
 msgstr "Ð�Ð¾Ð¼ÐµÑ€ Ñƒ:\n"
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1747
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� \t\t%08lx\n"
 
-#: peigen.c:1749 pepigen.c:1749 pex64igen.c:1749
+#: peXXigen.c:1751
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� [Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð°Ð·Ð²/Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð²]\t%08lx\n"
 
-#: peigen.c:1752 pepigen.c:1752 pex64igen.c:1752
+#: peXXigen.c:1754
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ‡Ð½Ñ– Ð°Ð´Ñ€ÐµÑ�Ð¸\n"
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1757
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� \t\t"
 
-#: peigen.c:1760 pepigen.c:1760 pex64igen.c:1760
+#: peXXigen.c:1762
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸ \t\t"
 
-#: peigen.c:1765 pepigen.c:1765 pex64igen.c:1765
+#: peXXigen.c:1767
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² \t\t\t"
 
-#: peigen.c:1779 pepigen.c:1779 pex64igen.c:1779
+#: peXXigen.c:1781
 #, c-format
 msgid ""
 "\n"
@@ -8235,20 +8625,20 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� â€” Ð¾Ñ�Ð½Ð¾Ð²Ð° Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð²: %ld\n"
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1790
 #, c-format
 msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\tÐ�ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ rva (0x%lx) Ð°Ð±Ð¾ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² (0x%lx) Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð°Ð´Ñ€ÐµÑ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�\n"
 
-#: peigen.c:1807 pepigen.c:1807 pex64igen.c:1807
+#: peXXigen.c:1809
 msgid "Forwarder RVA"
 msgstr "ÐŸÐµÑ€ÐµÑ�Ð¿Ñ€Ñ�Ð¼Ð¾Ð²Ð½Ð¸Ð¹ RVA"
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1821
 msgid "Export RVA"
 msgstr "Ð•ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ð¹ RVA"
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1828
 #, c-format
 msgid ""
 "\n"
@@ -8257,29 +8647,27 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� [Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð²/Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸]\n"
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1836
 #, c-format
 msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\tÐ�ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ rva (0x%lx) Ð°Ð±Ð¾ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² (0x%lx) Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸\n"
 
-#: peigen.c:1841 pepigen.c:1841 pex64igen.c:1841
+#: peXXigen.c:1843
 #, c-format
 msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
 msgstr "\tÐ�ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ rva (0x%lx) Ð°Ð±Ð¾ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² (0x%lx) Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…\n"
 
-#: peigen.c:1855 pepigen.c:1855 pex64igen.c:1855
+#: peXXigen.c:1857
 #, c-format
 msgid "\t[%4ld] <corrupt offset: %lx>\n"
 msgstr "\t[%4ld] <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ñ�ÑƒÐ²: %lx>\n"
 
-#: peigen.c:1909 peigen.c:2106 pepigen.c:1909 pepigen.c:2106 pex64igen.c:1909
-#: pex64igen.c:2106
+#: peXXigen.c:1911 peXXigen.c:2107
 #, c-format
 msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .pdata (%ld) Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ %d\n"
 
-#: peigen.c:1913 peigen.c:2110 pepigen.c:1913 pepigen.c:2110 pex64igen.c:1913
-#: pex64igen.c:2110
+#: peXXigen.c:1915 peXXigen.c:2111
 #, c-format
 msgid ""
 "\n"
@@ -8288,12 +8676,12 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ (Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .pdata)\n"
 
-#: peigen.c:1916 pepigen.c:1916 pex64igen.c:1916
+#: peXXigen.c:1918
 #, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
 msgstr " vma:\t\t\tÐŸÐ¾Ñ‡Ð°Ñ‚. Ð°Ð´Ñ€ÐµÑ�Ð°    ÐšÑ–Ð½Ñ†. Ð°Ð´Ñ€ÐµÑ�Ð°      Ð”Ð°Ð½Ñ– unwind\n"
 
-#: peigen.c:1918 pepigen.c:1918 pex64igen.c:1918
+#: peXXigen.c:1920
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -8302,27 +8690,27 @@ msgstr ""
 " vma:\t\tÐŸÐ¾Ñ‡.     ÐšÑ–Ð½Ñ†.    ÐžÐ±Ñ€Ð¾Ð±Ð½Ð¸Ðº Ð”Ð°Ð½Ñ–     Ð�Ð´Ñ€ÐµÑ�Ð°     ÐœÐ°Ñ�ÐºÐ°\n"
 "     \t\tÐ°Ð´Ñ€ÐµÑ�Ð°   Ð°Ð´Ñ€ÐµÑ�Ð°   EH       EH       ÐºÑ–Ð½Ñ†. Ð¿Ñ€Ð¾Ð».Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ�\n"
 
-#: peigen.c:1931 pepigen.c:1931 pex64igen.c:1931
+#: peXXigen.c:1933
 #, c-format
 msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
 msgstr "Ð’Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .pdata (%ld) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%ld)\n"
 
-#: peigen.c:2001 pepigen.c:2001 pex64igen.c:2001
+#: peXXigen.c:2002
 #, c-format
 msgid " Register save millicode"
 msgstr " ÐœÑ–Ð»Ñ–ÐºÐ¾Ð´ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°"
 
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
+#: peXXigen.c:2005
 #, c-format
 msgid " Register restore millicode"
 msgstr " ÐœÑ–Ð»Ñ–ÐºÐ¾Ð´ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°"
 
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
+#: peXXigen.c:2008
 #, c-format
 msgid " Glue code sequence"
 msgstr " ÐŸÐ¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ð·â€™Ñ”Ð´Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ"
 
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2113
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
@@ -8331,7 +8719,7 @@ msgstr ""
 " vma:\t\tÐŸÐ¾Ñ‡.     Ð”Ð¾Ð²Ð¶Ð¸Ð½Ð°  Ð”Ð¾Ð²Ð¶Ð¸Ð½Ð°  ÐŸÑ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– ÐžÐ±Ñ€Ð¾Ð±Ð½Ð¸Ðº  Ð”Ð°Ð½Ñ–\n"
 "     \t\tÐ°Ð´Ñ€ÐµÑ�Ð°   Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ñƒ  Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—  32Ð± Ð²Ð¸Ðº. Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½ÑŒ EH\n"
 
-#: peigen.c:2234 pepigen.c:2234 pex64igen.c:2234
+#: peXXigen.c:2234
 #, c-format
 msgid ""
 "\n"
@@ -8342,7 +8730,7 @@ msgstr ""
 "\n"
 "ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ñ„Ð°Ð¹Ð»Ð° PE (Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .reloc)\n"
 
-#: peigen.c:2264 pepigen.c:2264 pex64igen.c:2264
+#: peXXigen.c:2263
 #, c-format
 msgid ""
 "\n"
@@ -8351,62 +8739,62 @@ msgstr ""
 "\n"
 "Ð’Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: %08lx, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð°: %ld (0x%lx), ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·Ð¾Ðº: %ld\n"
 
-#: peigen.c:2282 pepigen.c:2282 pex64igen.c:2282
+#: peXXigen.c:2281
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr "\tÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %4d Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ %4x [%4lx] %s"
 
-#: peigen.c:2343 pepigen.c:2343 pex64igen.c:2343
+#: peXXigen.c:2342
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr "Ð’Ñ…Ñ–Ð´ Ð´Ð¾ %03x %*.s: "
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2366
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr "Ð½Ð°Ð·Ð²Ð°: [Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: %08lx Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° %d]: "
 
-#: peigen.c:2387 pepigen.c:2387 pex64igen.c:2387
+#: peXXigen.c:2386
 #, c-format
 msgid "<corrupt string length: %#x>\n"
 msgstr "<Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ°: %#x>\n"
 
-#: peigen.c:2397 pepigen.c:2397 pex64igen.c:2397
+#: peXXigen.c:2396
 #, c-format
 msgid "<corrupt string offset: %#lx>\n"
 msgstr "<Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ°: %#lx>\n"
 
-#: peigen.c:2402 pepigen.c:2402 pex64igen.c:2402
+#: peXXigen.c:2401
 #, c-format
 msgid "ID: %#08lx"
 msgstr "Ð†Ð´.: %#08lx"
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2404
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: %#08lx\n"
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2426
 #, c-format
 msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
 msgstr "%03x Ð›Ð¸Ñ�Ñ‚Ð¾Ðº %*.s: Ð°Ð´Ñ€ÐµÑ�Ð°: %#08lx, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %#08lx, ÐºÐ¾Ð´Ð¾Ð²Ð° Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ°: %d\n"
 
-#: peigen.c:2469 pepigen.c:2469 pex64igen.c:2469
+#: peXXigen.c:2468
 #, c-format
 msgid "<unknown directory type: %d>\n"
 msgstr "<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ: %d>\n"
 
-#: peigen.c:2477 pepigen.c:2477 pex64igen.c:2477
+#: peXXigen.c:2476
 #, c-format
 msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
 msgstr " Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ�: Ñ…Ð°Ñ€.: %d, Ñ‡Ð°Ñ�: %08lx, Ð²ÐµÑ€Ñ�Ñ–Ñ�: %d/%d, Ñ‡Ð¸Ñ�Ð»Ð¾Ð²Ñ– Ð½Ð°Ð·Ð²Ð¸: %d, Ñ–Ð´.: %d\n"
 
-#: peigen.c:2566 pepigen.c:2566 pex64igen.c:2566
+#: peXXigen.c:2564
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr "Ð’Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .rsrc!\n"
 
-#: peigen.c:2590 pepigen.c:2590 pex64igen.c:2590
+#: peXXigen.c:2588
 #, c-format
 msgid ""
 "\n"
@@ -8415,17 +8803,17 @@ msgstr ""
 "\n"
 "ÐŸÐžÐŸÐ•Ð Ð•Ð”Ð–Ð•Ð�Ð�Ð¯: Ð·Ð°Ð¹Ð²Ñ– Ð´Ð°Ð½Ñ– Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .rsrc â€” Ñ—Ñ… Ð±ÑƒÐ´Ðµ Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾ Windows:\n"
 
-#: peigen.c:2596 pepigen.c:2596 pex64igen.c:2596
+#: peXXigen.c:2594
 #, c-format
 msgid " String table starts at offset: %#03x\n"
 msgstr " Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ€Ñ�Ð´ÐºÑ–Ð² Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ‚Ð°ÐºÐ¸Ð¼ Ð·Ñ�ÑƒÐ²Ð¾Ð¼: %#03x\n"
 
-#: peigen.c:2599 pepigen.c:2599 pex64igen.c:2599
+#: peXXigen.c:2597
 #, c-format
 msgid " Resources start at offset: %#03x\n"
 msgstr " Ð ÐµÑ�ÑƒÑ€Ñ�Ð¸ Ð¿Ð¾Ñ‡Ð¸Ð½Ð°ÑŽÑ‚ÑŒÑ�Ñ� Ð· Ñ‚Ð°ÐºÐ¸Ð¼ Ð·Ñ�ÑƒÐ²Ð¾Ð¼: %#03x\n"
 
-#: peigen.c:2651 pepigen.c:2651 pex64igen.c:2651
+#: peXXigen.c:2654
 #, c-format
 msgid ""
 "\n"
@@ -8434,7 +8822,7 @@ msgstr ""
 "\n"
 "Ð†Ñ�Ð½ÑƒÑ” ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸, Ð°Ð»Ðµ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ð¹Ð¾Ð³Ð¾ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾\n"
 
-#: peigen.c:2657 pepigen.c:2657 pex64igen.c:2657
+#: peXXigen.c:2660
 #, c-format
 msgid ""
 "\n"
@@ -8443,7 +8831,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ñ” ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ…\n"
 
-#: peigen.c:2664 pepigen.c:2664 pex64igen.c:2664
+#: peXXigen.c:2667
 #, c-format
 msgid ""
 "\n"
@@ -8452,7 +8840,7 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…, Ð°Ð»Ðµ Ð²Ð¾Ð½Ð° Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ\n"
 
-#: peigen.c:2669 pepigen.c:2669 pex64igen.c:2669
+#: peXXigen.c:2672
 #, c-format
 msgid ""
 "\n"
@@ -8463,22 +8851,22 @@ msgstr ""
 "Ð’Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ñƒ %s Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ 0x%lx\n"
 "\n"
 
-#: peigen.c:2676 pepigen.c:2676 pex64igen.c:2676
+#: peXXigen.c:2679
 #, c-format
 msgid "The debug data size field in the data directory is too big for the section"
 msgstr "ÐŸÐ¾Ð»Ðµ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð·Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ Ð´Ð»Ñ� Ñ†ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: peigen.c:2681 pepigen.c:2681 pex64igen.c:2681
+#: peXXigen.c:2684
 #, c-format
 msgid "Type                Size     Rva      Offset\n"
 msgstr "Ð¢Ð¸Ð¿                 Ð Ð¾Ð·Ð¼     Rva      Ð—Ñ�ÑƒÐ²\n"
 
-#: peigen.c:2729 pepigen.c:2729 pex64igen.c:2729
+#: peXXigen.c:2731
 #, c-format
 msgid "(format %c%c%c%c signature %s age %ld)\n"
 msgstr "(Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ %c%c%c%c Ð¿Ñ–Ð´Ð¿Ð¸Ñ� %s Ð²Ñ–Ðº %ld)\n"
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2741
 #, c-format
 msgid "The debug directory size is not a multiple of the debug directory entry size\n"
 msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸\n"
@@ -8486,7 +8874,7 @@ msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´
 #. The MS dumpbin program reportedly ands with 0xff0f before
 #. printing the characteristics field.  Not sure why.  No reason to
 #. emulate it here.
-#: peigen.c:2757 pepigen.c:2757 pex64igen.c:2757
+#: peXXigen.c:2825
 #, c-format
 msgid ""
 "\n"
@@ -8495,105 +8883,87 @@ msgstr ""
 "\n"
 "Ð¥Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ¸ 0x%x\n"
 
-#: peigen.c:2993 pepigen.c:2993 pex64igen.c:2993
+#: peXXigen.c:3072
 #, c-format
 msgid "%pB: Data Directory size (%lx) exceeds space left in section (%<PRIx64>)"
 msgstr "%pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ… (%lx) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¼Ñ–Ñ�Ñ†Ñ�, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%<PRIx64>)"
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
+#: peXXigen.c:3104
 msgid "failed to update file offsets in debug directory"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ñ�ÑƒÐ²Ð¸ Ñ„Ð°Ð¹Ð»Ñ–Ð² Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð·Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸"
 
-#: peigen.c:3033 pepigen.c:3033 pex64igen.c:3033
+#: peXXigen.c:3112
 #, c-format
 msgid "%pB: failed to read debug data section"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…"
 
-#: peigen.c:3849 pepigen.c:3849 pex64igen.c:3849
+#: peXXigen.c:3928
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ñ€ÐµÑ�ÑƒÑ€Ñ� Ð· Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ€Ñ�Ð´ÐºÑ–Ð²: %d"
 
-#: peigen.c:3984 pepigen.c:3984 pex64igen.c:3984
+#: peXXigen.c:4063
 msgid ".rsrc merge failure: multiple non-default manifests"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð½ÐµÑ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… Ð¼Ð°Ð½Ñ–Ñ„ÐµÑ�Ñ‚Ñ–Ð²"
 
-#: peigen.c:4002 pepigen.c:4002 pex64igen.c:4002
+#: peXXigen.c:4081
 msgid ".rsrc merge failure: a directory matches a leaf"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð»Ð¸Ñ�Ñ‚Ð¾Ðº"
 
-#: peigen.c:4044 pepigen.c:4044 pex64igen.c:4044
+#: peXXigen.c:4123
 msgid ".rsrc merge failure: duplicate leaf"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð»Ð¸Ñ�Ñ‚ÐºÑ–Ð²"
 
-#: peigen.c:4046 pepigen.c:4046 pex64igen.c:4046
+#: peXXigen.c:4125
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð»Ð¸Ñ�Ñ‚ÐºÑ–Ð²: %s"
 
-#: peigen.c:4112 pepigen.c:4112 pex64igen.c:4112
+#: peXXigen.c:4191
 msgid ".rsrc merge failure: dirs with differing characteristics"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¸ Ð· Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ°Ð¼Ð¸"
 
-#: peigen.c:4119 pepigen.c:4119 pex64igen.c:4119
+#: peXXigen.c:4198
 msgid ".rsrc merge failure: differing directory versions"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð½Ð¾Ñ�Ñ‚Ñ– Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ�Ñ… ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñ–Ð²"
 
 #. Corrupted .rsrc section - cannot merge.
-#: peigen.c:4236 pepigen.c:4236 pex64igen.c:4236
+#: peXXigen.c:4315
 #, c-format
 msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .rsrc"
 
-#: peigen.c:4244 pepigen.c:4244 pex64igen.c:4244
+#: peXXigen.c:4323
 #, c-format
 msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ .rsrc"
 
-#: peigen.c:4383 pepigen.c:4383 pex64igen.c:4383
+#: peXXigen.c:4462
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[1], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$2"
 
-#: peigen.c:4403 pepigen.c:4403 pex64igen.c:4403
+#: peXXigen.c:4482
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[1], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$4"
 
-#: peigen.c:4424 pepigen.c:4424 pex64igen.c:4424
+#: peXXigen.c:4503
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[12], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$5"
 
-#: peigen.c:4444 pepigen.c:4444 pex64igen.c:4444
+#: peXXigen.c:4523
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$6"
 
-#: peigen.c:4486 pepigen.c:4486 pex64igen.c:4486
+#: peXXigen.c:4565
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ .idata$6 Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ”"
 
-#: peigen.c:4511 pepigen.c:4511 pex64igen.c:4511
+#: peXXigen.c:4590
 #, c-format
 msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[9], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” __tls_used"
-
-#~ msgid "%H: call to `%pT' lacks nop, can't restore toc; recompile with -fPIC\n"
-#~ msgstr "%H: Ñƒ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ Â«%pTÂ» Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” nop, Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� toc Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ; Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð· -fPIC\n"
-
-#~ msgid "error: %pB: <corrupt x86 ISA used size: 0x%x>"
-#~ msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾Ð³Ð¾ ISA x86: 0x%x>"
-
-#~ msgid "error: %pB: <corrupt x86 ISA needed size: 0x%x>"
-#~ msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ð³Ð¾ ISA x86: 0x%x>"
-
-#~ msgid "%pB: can't link hard-float modules with soft-float modules"
-#~ msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ– Ñ–Ð· Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾ÑŽ Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ Ñ–Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ Ñ–Ð· Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾ÑŽ Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ"
-
-#~ msgid "%pB(%pA+%#<PRIx64>): Unable to clear RISCV_PCREL_HI20 reloc for corresponding RISCV_PCREL_LO12 reloc"
-#~ msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ñ‡Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ RISCV_PCREL_HI20 relocfor, Ñ‰Ð¾ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½ÑŽ RISCV_PCREL_LO12"
-
-#~ msgid "%pB: Data Directory size (%#lx) is negative"
-#~ msgstr "%pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ… (%#lx) Ñ” Ð²Ñ–Ð´'Ñ”Ð¼Ð½Ð¸Ð¼"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/PORTING ./bfd/PORTING
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/PORTING	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/PORTING	2021-05-21 01:57:23.000000000 +0000
@@ -82,7 +82,7 @@ TARGETNAME
 	The name of the target, for run-time lookups.
 	Usually "a.out-<target>"
 
-Copyright (C) 2012-2019 Free Software Foundation, Inc.
+Copyright (C) 2012-2020 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ppcboot.c ./bfd/ppcboot.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ppcboot.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/ppcboot.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for PPCbug boot records.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
    Written by Michael Meissner, Cygnus Support, <meissner@cygnus.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -102,7 +102,7 @@ ppcboot_mkobject (bfd *abfd)
 {
   if (!ppcboot_get_tdata (abfd))
     {
-      bfd_size_type amt = sizeof (ppcboot_data_t);
+      size_t amt = sizeof (ppcboot_data_t);
       ppcboot_set_tdata (abfd, bfd_zalloc (abfd, amt));
     }
 
@@ -130,7 +130,7 @@ ppcboot_set_arch_mach (bfd *abfd,
    was not defaulted.  That is, it must be explicitly specified as
    being ppcboot.  */
 
-static const bfd_target *
+static bfd_cleanup
 ppcboot_object_p (bfd *abfd)
 {
   struct stat statbuf;
@@ -207,7 +207,7 @@ ppcboot_object_p (bfd *abfd)
   memcpy (&tdata->header, &hdr, sizeof (ppcboot_hdr_t));
 
   ppcboot_set_arch_mach (abfd, bfd_arch_powerpc, 0L);
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 #define ppcboot_close_and_cleanup _bfd_generic_close_and_cleanup
@@ -276,7 +276,7 @@ ppcboot_canonicalize_symtab (bfd *abfd,
   asection *sec = ppcboot_get_tdata (abfd)->sec;
   asymbol *syms;
   unsigned int i;
-  bfd_size_type amt = PPCBOOT_SYMS * sizeof (asymbol);
+  size_t amt = PPCBOOT_SYMS * sizeof (asymbol);
 
   syms = (asymbol *) bfd_alloc (abfd, amt);
   if (syms == NULL)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ptrace-core.c ./bfd/ptrace-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/ptrace-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/ptrace-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD backend for core files which use the ptrace_user structure
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
    The structure of this file is based on trad-core.c written by John Gilmore
    of Cygnus Support.
    Modified to work with the ptrace_user structure by Kevin A. Buettner.
@@ -55,13 +55,13 @@ int ptrace_unix_core_file_failing_signal
 #define ptrace_unix_core_file_pid _bfd_nocore_core_file_pid
 static void swap_abort (void);
 
-const bfd_target *
+bfd_cleanup
 ptrace_unix_core_file_p (bfd *abfd)
 {
   int val;
   struct ptrace_user u;
   struct trad_core_struct *rawptr;
-  bfd_size_type amt;
+  size_t amt;
   flagword flags;
 
   val = bfd_bread ((void *)&u, (bfd_size_type) sizeof u, abfd);
@@ -124,7 +124,7 @@ ptrace_unix_core_file_p (bfd *abfd)
   core_datasec (abfd)->alignment_power = 2;
   core_regsec (abfd)->alignment_power = 2;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  fail:
   bfd_release (abfd, abfd->tdata.any);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/README ./bfd/README
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/README	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/README	2021-05-21 01:57:23.000000000 +0000
@@ -48,7 +48,7 @@ gcc manual.
 Bug reports without patches will be remembered, but they may never get
 fixed until somebody volunteers to fix them.
 
-Copyright (C) 2012-2019 Free Software Foundation, Inc.
+Copyright (C) 2012-2020 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/reloc16.c ./bfd/reloc16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/reloc16.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/reloc16.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* 8 and 16 bit COFF relocation functions, for BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/reloc.c ./bfd/reloc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/reloc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/reloc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for handling relocation entries.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -432,8 +432,9 @@ DESCRIPTION
 .
 */
 
-/* N_ONES produces N one bits, without overflowing machine arithmetic.  */
-#define N_ONES(n) (((((bfd_vma) 1 << ((n) - 1)) - 1) << 1) | 1)
+/* N_ONES produces N one bits, without undefined behaviour for N
+   between zero and the number of bits in a bfd_vma.  */
+#define N_ONES(n) ((n) == 0 ? 0 : ((bfd_vma) 1 << ((n) - 1) << 1) - 1)
 
 /*
 FUNCTION
@@ -466,6 +467,9 @@ bfd_check_overflow (enum complain_overfl
   bfd_vma fieldmask, addrmask, signmask, ss, a;
   bfd_reloc_status_type flag = bfd_reloc_ok;
 
+  if (bitsize == 0)
+    return flag;
+
   /* Note: BITSIZE should always be <= ADDRSIZE, but in case it's not,
      we'll be permissive: extra bits in the field mask will
      automatically extend the address mask for purposes of the
@@ -3025,13 +3029,13 @@ ENUMX
 ENUMX
   BFD_RELOC_PPC64_DTPREL34
 ENUMX
-  BFD_RELOC_PPC64_GOT_TLSGD34
+  BFD_RELOC_PPC64_GOT_TLSGD_PCREL34
 ENUMX
-  BFD_RELOC_PPC64_GOT_TLSLD34
+  BFD_RELOC_PPC64_GOT_TLSLD_PCREL34
 ENUMX
-  BFD_RELOC_PPC64_GOT_TPREL34
+  BFD_RELOC_PPC64_GOT_TPREL_PCREL34
 ENUMX
-  BFD_RELOC_PPC64_GOT_DTPREL34
+  BFD_RELOC_PPC64_GOT_DTPREL_PCREL34
 ENUMX
   BFD_RELOC_PPC64_TLS_PCREL
 ENUMDOC
@@ -6363,6 +6367,11 @@ ENUMX
   BFD_RELOC_MSP430_PREL31
 ENUMX
   BFD_RELOC_MSP430_SYM_DIFF
+ENUMX
+  BFD_RELOC_MSP430_SET_ULEB128
+ENUMX
+  BFD_RELOC_MSP430_SUB_ULEB128
+
 ENUMDOC
   msp430 specific relocation codes
 
@@ -6556,6 +6565,8 @@ ENUMX
 ENUMX
   BFD_RELOC_XTENSA_DIFF32
 ENUMDOC
+  Xtensa relocations for backward compatibility.  These have been replaced
+  by BFD_RELOC_XTENSA_PDIFF and BFD_RELOC_XTENSA_NDIFF.
   Xtensa relocations to mark the difference of two local symbols.
   These are only needed to support linker relaxation and can be ignored
   when not relaxing.  The field is set to the value of the difference
@@ -6668,11 +6679,61 @@ ENUMX
   BFD_RELOC_XTENSA_TLS_CALL
 ENUMDOC
   Xtensa TLS relocations.
+ENUM
+  BFD_RELOC_XTENSA_PDIFF8
+ENUMX
+  BFD_RELOC_XTENSA_PDIFF16
+ENUMX
+  BFD_RELOC_XTENSA_PDIFF32
+ENUMX
+  BFD_RELOC_XTENSA_NDIFF8
+ENUMX
+  BFD_RELOC_XTENSA_NDIFF16
+ENUMX
+  BFD_RELOC_XTENSA_NDIFF32
+ENUMDOC
+  Xtensa relocations to mark the difference of two local symbols.
+  These are only needed to support linker relaxation and can be ignored
+  when not relaxing.  The field is set to the value of the difference
+  assuming no relaxation.  The relocation encodes the position of the
+  subtracted symbol so the linker can determine whether to adjust the field
+  value.  PDIFF relocations are used for positive differences, NDIFF
+  relocations are used for negative differences.  The difference value
+  is treated as unsigned with these relocation types, giving full
+  8/16 value ranges.
 
 ENUM
   BFD_RELOC_Z80_DISP8
 ENUMDOC
   8 bit signed offset in (ix+d) or (iy+d).
+ENUM
+  BFD_RELOC_Z80_BYTE0
+ENUMDOC
+  First 8 bits of multibyte (32, 24 or 16 bit) value.
+ENUM
+  BFD_RELOC_Z80_BYTE1
+ENUMDOC
+  Second 8 bits of multibyte (32, 24 or 16 bit) value.
+ENUM
+  BFD_RELOC_Z80_BYTE2
+ENUMDOC
+  Third 8 bits of multibyte (32 or 24 bit) value.
+ENUM
+  BFD_RELOC_Z80_BYTE3
+ENUMDOC
+  Fourth 8 bits of multibyte (32 bit) value.
+ENUM
+  BFD_RELOC_Z80_WORD0
+ENUMDOC
+  Lowest 16 bits of multibyte (32 or 24 bit) value.
+ENUM
+  BFD_RELOC_Z80_WORD1
+ENUMDOC
+  Highest 16 bits of multibyte (32 or 24 bit) value.
+ENUM
+  BFD_RELOC_Z80_16_BE
+ENUMDOC
+  Like BFD_RELOC_16 but big-endian.
 
 ENUM
   BFD_RELOC_Z8K_DISP7
@@ -8446,7 +8507,7 @@ bfd_generic_get_relocated_section_conten
   free (reloc_vector);
   return data;
 
-error_return:
+ error_return:
   free (reloc_vector);
   return NULL;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/rs6000-core.c ./bfd/rs6000-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/rs6000-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/rs6000-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* IBM RS/6000 "XCOFF" back-end for BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Metin G. Ozisik, Mimi Phuong-Thao Vo, and John Gilmore.
    Archive support from Damon A. Permezel.
    Contributed by IBM Corporation and Cygnus Support.
@@ -277,7 +277,7 @@ typedef union
 /* Define prototypes for certain functions, to avoid a compiler warning
    saying that they are missing.  */
 
-const bfd_target * rs6000coff_core_p (bfd *abfd);
+const bfd_cleanup rs6000coff_core_p (bfd *abfd);
 bfd_boolean rs6000coff_core_file_matches_executable_p (bfd *core_bfd,
 						       bfd *exec_bfd);
 char * rs6000coff_core_file_failing_command (bfd *abfd);
@@ -332,7 +332,7 @@ make_bfd_asection (bfd *abfd, const char
 /* Decide if a given bfd represents a `core' file or not. There really is no
    magic number or anything like, in rs6000coff.  */
 
-const bfd_target *
+bfd_cleanup
 rs6000coff_core_p (bfd *abfd)
 {
   CoreHdr core;
@@ -686,7 +686,7 @@ rs6000coff_core_p (bfd *abfd)
   }
 #endif
 
-  return abfd->xvec;		/* This is garbage for now.  */
+  return _bfd_no_cleanup;
 
  fail:
   bfd_release (abfd, abfd->tdata.any);
@@ -759,11 +759,11 @@ rs6000coff_core_file_matches_executable_
     }
 
   str1 = strrchr (path, '/');
-  str2 = strrchr (exec_bfd->filename, '/');
+  str2 = strrchr (bfd_get_filename (exec_bfd), '/');
 
   /* step over character '/' */
   str1 = str1 != NULL ? str1 + 1 : path;
-  str2 = str2 != NULL ? str2 + 1 : exec_bfd->filename;
+  str2 = str2 != NULL ? str2 + 1 : bfd_get_filename (exec_bfd);
 
   if (strcmp (str1, str2) == 0)
     ret = TRUE;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/sco5-core.c ./bfd/sco5-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/sco5-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/sco5-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back end for SCO5 core files (U-area and raw sections)
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
    Written by Jouke Numan <jnuman@hiscom.nl>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -71,7 +71,7 @@ static struct user *
 read_uarea (bfd *abfd, int filepos)
 {
   struct sco5_core_struct *rawptr;
-  bfd_size_type amt = sizeof (struct sco5_core_struct);
+  size_t amt = sizeof (struct sco5_core_struct);
 
   rawptr = (struct sco5_core_struct *) bfd_zmalloc (amt);
   if (rawptr == NULL)
@@ -101,7 +101,7 @@ read_uarea (bfd *abfd, int filepos)
   return &rawptr->u;
 }
 
-const bfd_target *
+bfd_cleanup
 sco5_core_file_p (bfd *abfd)
 {
   int coffset_siz, val, nsecs, cheadoffs;
@@ -172,7 +172,7 @@ sco5_core_file_p (bfd *abfd)
 			      (file_ptr) coffsets.u_stack))
 	goto fail;
 
-      return abfd->xvec;		/* Done for version 1 */
+      return _bfd_no_cleanup;		/* Done for version 1 */
     }
 
   /* Immediately before coreoffsets region is a long with offset in core
@@ -300,7 +300,7 @@ sco5_core_file_p (bfd *abfd)
 
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  fail:
   if (abfd->tdata.any)
@@ -372,12 +372,16 @@ const bfd_target core_sco5_vec =
       sco5_core_file_p			/* a core file */
     },
     {				/* bfd_set_format */
-      _bfd_bool_bfd_false_error, bfd_false,
-      _bfd_bool_bfd_false_error, bfd_false
+      _bfd_bool_bfd_false_error,
+      _bfd_bool_bfd_false_error,
+      _bfd_bool_bfd_false_error,
+      _bfd_bool_bfd_false_error
     },
     {				/* bfd_write_contents */
-      _bfd_bool_bfd_false_error, bfd_false,
-      _bfd_bool_bfd_false_error, bfd_false
+      _bfd_bool_bfd_false_error,
+      _bfd_bool_bfd_false_error,
+      _bfd_bool_bfd_false_error,
+      _bfd_bool_bfd_false_error
     },
 
     BFD_JUMP_TABLE_GENERIC (_bfd_generic),
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/section.c ./bfd/section.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/section.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/section.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Object file "section" support for the BFD library.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -154,6 +154,10 @@ CODE_FRAGMENT
 .  {* A unique sequence number.  *}
 .  unsigned int id;
 .
+.  {* A unique section number which can be used by assembler to
+.     distinguish different sections with the same section name.  *}
+.  unsigned int section_id;
+.
 .  {* Which section in the bfd; 0..n-1 as sections are created in a bfd.  *}
 .  unsigned int index;
 .
@@ -287,6 +291,10 @@ CODE_FRAGMENT
 .     else up the line will take care of it later.  *}
 .#define SEC_LINKER_CREATED           0x100000
 .
+.  {* This section contains a section ID to distinguish different
+.     sections with the same section name.  *}
+.#define SEC_ASSEMBLER_SECTION_ID     0x100000
+.
 .  {* This section should not be subject to garbage collection.
 .     Also set to inform the linker that this section should not be
 .     listed in the link map as discarded.  *}
@@ -536,11 +544,17 @@ CODE_FRAGMENT
 .  {* Early in the link process, map_head and map_tail are used to build
 .     a list of input sections attached to an output section.  Later,
 .     output sections use these fields for a list of bfd_link_order
-.     structs.  *}
+.     structs.  The linked_to_symbol_name field is for ELF assembler
+.     internal use.  *}
 .  union {
 .    struct bfd_link_order *link_order;
 .    struct bfd_section *s;
+.    const char *linked_to_symbol_name;
 .  } map_head, map_tail;
+. {* Points to the output section this section is already assigned to, if any.
+.    This is used when support for non-contiguous memory regions is enabled.  *}
+. struct bfd_section *already_assigned;
+.
 .} asection;
 .
 .{* Relax table contains information about instructions which can
@@ -674,7 +688,9 @@ CODE_FRAGMENT
 .static inline bfd_boolean
 .bfd_is_const_section (const asection *sec)
 .{
-.  return sec >= bfd_abs_section_ptr && sec <= bfd_ind_section_ptr;
+.  return (sec >= _bfd_std_section
+.          && sec < _bfd_std_section + (sizeof (_bfd_std_section)
+.                                       / sizeof (_bfd_std_section[0])));
 .}
 .
 .{* Return TRUE if input section SEC has been discarded.  *}
@@ -688,41 +704,42 @@ CODE_FRAGMENT
 .}
 .
 .#define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS)			\
-.  {* name, id,  index, next, prev, flags, user_set_vma,            *}	\
-.  {  NAME, IDX, 0,     NULL, NULL, FLAGS, 0,				\
+.  {* name, id,  section_id, index, next, prev, flags, user_set_vma, *}	\
+.  {  NAME, IDX, 0,          0,     NULL, NULL, FLAGS, 0,		\
 .									\
-.  {* linker_mark, linker_has_input, gc_mark, decompress_status,    *}	\
+.  {* linker_mark, linker_has_input, gc_mark, decompress_status,     *}	\
 .     0,           0,                1,       0,			\
 .									\
-.  {* segment_mark, sec_info_type, use_rela_p,                      *}	\
+.  {* segment_mark, sec_info_type, use_rela_p,                       *}	\
 .     0,            0,             0,					\
 .									\
-.  {* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,   *}	\
+.  {* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,    *}	\
 .     0,        0,        0,        0,        0,        0,		\
 .									\
-.  {* vma, lma, size, rawsize, compressed_size, relax, relax_count, *}	\
+.  {* vma, lma, size, rawsize, compressed_size, relax, relax_count,  *}	\
 .     0,   0,   0,    0,       0,               0,     0,		\
 .									\
-.  {* output_offset, output_section, alignment_power,               *}	\
+.  {* output_offset, output_section, alignment_power,                *}	\
 .     0,             &SEC,           0,					\
 .									\
-.  {* relocation, orelocation, reloc_count, filepos, rel_filepos,   *}	\
+.  {* relocation, orelocation, reloc_count, filepos, rel_filepos,    *}	\
 .     NULL,       NULL,        0,           0,       0,			\
 .									\
-.  {* line_filepos, userdata, contents, lineno, lineno_count,       *}	\
+.  {* line_filepos, userdata, contents, lineno, lineno_count,        *}	\
 .     0,            NULL,     NULL,     NULL,   0,			\
 .									\
-.  {* entsize, kept_section, moving_line_filepos,		     *}	\
-.     0,       NULL,	      0,					\
+.  {* entsize, kept_section, moving_line_filepos,                    *}	\
+.     0,       NULL,         0,						\
 .									\
-.  {* target_index, used_by_bfd, constructor_chain, owner,          *}	\
+.  {* target_index, used_by_bfd, constructor_chain, owner,           *}	\
 .     0,            NULL,        NULL,              NULL,		\
 .									\
-.  {* symbol,                    symbol_ptr_ptr,                    *}	\
+.  {* symbol,                    symbol_ptr_ptr,                     *}	\
 .     (struct bfd_symbol *) SYM, &SEC.symbol,				\
 .									\
-.  {* map_head, map_tail                                            *}	\
-.     { NULL }, { NULL }						\
+.  {* map_head, map_tail, already_assigned                           *}	\
+.     { NULL }, { NULL }, NULL						\
+.									\
 .    }
 .
 .{* We use a macro to initialize the static asymbol structures because
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/simple.c ./bfd/simple.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/simple.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/simple.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* simple.c -- BFD simple client routines
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
    Contributed by MontaVista Software, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -242,8 +242,7 @@ bfd_simple_get_relocated_section_content
 				   * saved_offsets.section_count);
   if (saved_offsets.sections == NULL)
     {
-      if (data)
-	free (data);
+      free (data);
       _bfd_generic_link_hash_table_free (abfd);
       abfd->link.next = link_next;
       return NULL;
@@ -267,7 +266,7 @@ bfd_simple_get_relocated_section_content
 						 outbuf,
 						 0,
 						 symbol_table);
-  if (contents == NULL && data != NULL)
+  if (contents == NULL)
     free (data);
 
   bfd_map_over_sections (abfd, simple_restore_output_info, &saved_offsets);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/som.c ./bfd/som.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/som.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/som.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* bfd back-end for HP PA-RISC SOM objects.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Contributed by the Center for Software Science at the
    University of Utah.
@@ -37,7 +37,7 @@ static bfd_boolean som_mkobject (bfd *);
 static bfd_boolean som_is_space (asection *);
 static bfd_boolean som_is_subspace (asection *);
 static int compare_subspaces (const void *, const void *);
-static unsigned long som_compute_checksum (struct som_external_header *);
+static uint32_t som_compute_checksum (struct som_external_header *);
 static bfd_boolean som_build_and_write_symbol_table (bfd *);
 static unsigned int som_slurp_symbol_table (bfd *);
 
@@ -1425,7 +1425,7 @@ hppa_som_gen_reloc_type (bfd *abfd,
       /* The difference of two symbols needs *very* special handling.  */
       if (sym_diff)
 	{
-	  bfd_size_type amt = sizeof (int);
+	  size_t amt = sizeof (int);
 
 	  final_types[0] = bfd_alloc (abfd, amt);
 	  final_types[1] = bfd_alloc (abfd, amt);
@@ -1509,7 +1509,7 @@ hppa_som_gen_reloc_type (bfd *abfd,
       /* The difference of two symbols needs *very* special handling.  */
       if (sym_diff)
 	{
-	  bfd_size_type amt = sizeof (int);
+	  size_t amt = sizeof (int);
 
 	  final_types[0] = bfd_alloc (abfd, amt);
 	  final_types[1] = bfd_alloc (abfd, amt);
@@ -1548,7 +1548,7 @@ hppa_som_gen_reloc_type (bfd *abfd,
 	/* If we have short and long pcrel modes, then generate the proper
 	   mode selector, then the pcrel relocation.  Redundant selectors
 	   will be eliminated as the relocs are sized and emitted.  */
-	bfd_size_type amt = sizeof (int);
+	size_t amt = sizeof (int);
 
 	final_types[0] = bfd_alloc (abfd, amt);
 	if (!final_types[0])
@@ -1945,7 +1945,7 @@ som_swap_lst_header_in (struct som_exter
 /* Perform some initialization for an object.  Save results of this
    initialization in the BFD.  */
 
-static const bfd_target *
+static bfd_cleanup
 som_object_setup (bfd *abfd,
 		  struct som_header *file_hdrp,
 		  struct som_exec_auxhdr *aux_hdrp,
@@ -2060,7 +2060,7 @@ som_object_setup (bfd *abfd,
 				  + current_offset);
   obj_som_exec_data (abfd)->system_id = file_hdrp->system_id;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 /* Convert all of the space and subspace info into BFD sections.  Each space
@@ -2074,23 +2074,25 @@ setup_sections (bfd *abfd,
 		struct som_header *file_hdr,
 		unsigned long current_offset)
 {
-  char *space_strings;
+  char *space_strings = NULL;
   unsigned int space_index, i;
   unsigned int total_subspaces = 0;
   asection **subspace_sections = NULL;
   asection *section;
-  bfd_size_type amt;
+  size_t amt;
 
   /* First, read in space names.  */
   amt = file_hdr->space_strings_size;
-  space_strings = bfd_malloc (amt + 1);
-  if (space_strings == NULL && amt != 0)
-    goto error_return;
-
+  if (amt == (size_t) -1)
+    {
+      bfd_set_error (bfd_error_no_memory);
+      goto error_return;
+    }
   if (bfd_seek (abfd, current_offset + file_hdr->space_strings_location,
 		SEEK_SET) != 0)
     goto error_return;
-  if (bfd_bread (space_strings, amt, abfd) != amt)
+  space_strings = (char *) _bfd_malloc_and_read (abfd, amt + 1, amt);
+  if (space_strings == NULL)
     goto error_return;
   /* Make sure that the string table is NUL terminated.  */
   space_strings[amt] = 0;
@@ -2195,6 +2197,9 @@ setup_sections (bfd *abfd,
 	  som_swap_subspace_dictionary_in (&ext_subspace, &subspace);
 
 	  /* Setup the subspace name string.  */
+	  if (subspace.name >= file_hdr->space_strings_size)
+	    goto error_return;
+
 	  subspace_name = subspace.name + space_strings;
 
 	  amt = strlen (subspace_name) + 1;
@@ -2339,8 +2344,11 @@ setup_sections (bfd *abfd,
     }
   /* Now that we've read in all the subspace records, we need to assign
      a target index to each subspace.  */
-  amt = total_subspaces;
-  amt *= sizeof (asection *);
+  if (_bfd_mul_overflow (total_subspaces, sizeof (asection *), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      goto error_return;
+    }
   subspace_sections = bfd_malloc (amt);
   if (subspace_sections == NULL)
     goto error_return;
@@ -2361,27 +2369,20 @@ setup_sections (bfd *abfd,
   for (i = 0; i < total_subspaces; i++)
     subspace_sections[i]->target_index = i;
 
-  if (space_strings != NULL)
-    free (space_strings);
-
-  if (subspace_sections != NULL)
-    free (subspace_sections);
-
+  free (space_strings);
+  free (subspace_sections);
   return TRUE;
 
  error_return:
-  if (space_strings != NULL)
-    free (space_strings);
-
-  if (subspace_sections != NULL)
-    free (subspace_sections);
+  free (space_strings);
+  free (subspace_sections);
   return FALSE;
 }
 
 
 /* Read in a SOM object and make it into a BFD.  */
 
-static const bfd_target *
+static bfd_cleanup
 som_object_p (bfd *abfd)
 {
   struct som_external_header ext_file_hdr;
@@ -2390,7 +2391,7 @@ som_object_p (bfd *abfd)
   unsigned long current_offset = 0;
   struct som_external_lst_header ext_lst_header;
   struct som_external_som_entry ext_som_entry;
-  bfd_size_type amt;
+  size_t amt;
   unsigned int loc;
 #define ENTRY_SIZE sizeof (struct som_external_som_entry)
 
@@ -2545,7 +2546,7 @@ som_prep_headers (bfd *abfd)
 {
   struct som_header *file_hdr;
   asection *section;
-  bfd_size_type amt = sizeof (struct som_header);
+  size_t amt = sizeof (struct som_header);
 
   /* Make and attach a file header to the BFD.  */
   file_hdr = bfd_zalloc (abfd, amt);
@@ -2795,13 +2796,16 @@ compare_subspaces (const void *arg1, con
 
 /* Perform various work in preparation for emitting the fixup stream.  */
 
-static void
+static bfd_boolean
 som_prep_for_fixups (bfd *abfd, asymbol **syms, unsigned long num_syms)
 {
   unsigned long i;
   asection *section;
   asymbol **sorted_syms;
-  bfd_size_type amt;
+  size_t amt;
+
+  if (num_syms == 0)
+    return TRUE;
 
   /* Most SOM relocations involving a symbol have a length which is
      dependent on the index of the symbol.  So symbols which are
@@ -2873,9 +2877,14 @@ som_prep_for_fixups (bfd *abfd, asymbol
 
   /* Sort a copy of the symbol table, rather than the canonical
      output symbol table.  */
-  amt = num_syms;
-  amt *= sizeof (asymbol *);
+  if (_bfd_mul_overflow (num_syms, sizeof (asymbol *), &amt))
+    {
+      bfd_set_error (bfd_error_no_memory);
+      return FALSE;
+    }
   sorted_syms = bfd_zalloc (abfd, amt);
+  if (sorted_syms == NULL)
+    return FALSE;
   memcpy (sorted_syms, syms, num_syms * sizeof (asymbol *));
   qsort (sorted_syms, num_syms, sizeof (asymbol *), compare_syms);
   obj_som_sorted_syms (abfd) = sorted_syms;
@@ -2891,6 +2900,7 @@ som_prep_for_fixups (bfd *abfd, asymbol
       else
 	som_symbol_data (sorted_syms[i])->index = i;
     }
+  return TRUE;
 }
 
 static bfd_boolean
@@ -2907,7 +2917,7 @@ som_write_fixups (bfd *abfd,
   unsigned int subspace_reloc_size = 0;
   unsigned int num_spaces = obj_som_file_hdr (abfd)->space_total;
   asection *section = abfd->sections;
-  bfd_size_type amt;
+  size_t amt;
 
   memset (tmp_space, 0, SOM_TMP_BUFSIZE);
   p = tmp_space;
@@ -3313,7 +3323,7 @@ som_write_space_strings (bfd *abfd,
   char *p = tmp_space;
   unsigned int strings_size = 0;
   asection *section;
-  bfd_size_type amt;
+  size_t amt;
   bfd_size_type res;
 
   if (tmp_space == NULL)
@@ -3425,7 +3435,7 @@ som_write_symbol_strings (bfd *abfd,
   char *tmp_space = bfd_malloc (tmp_space_size);
   char *p = tmp_space;
   unsigned int strings_size = 0;
-  bfd_size_type amt;
+  size_t amt;
   bfd_size_type res;
 
   if (tmp_space == NULL)
@@ -3955,7 +3965,7 @@ som_finish_writing (bfd *abfd)
   asection *section;
   unsigned long current_offset;
   unsigned int strings_size, total_reloc_size;
-  bfd_size_type amt;
+  size_t amt;
   struct som_external_header ext_header;
 
   /* We must set up the version identifier here as objcopy/strip copy
@@ -4009,9 +4019,10 @@ som_finish_writing (bfd *abfd)
   current_offset += strings_size;
 
   /* Do prep work before handling fixups.  */
-  som_prep_for_fixups (abfd,
-		       bfd_get_outsymbols (abfd),
-		       bfd_get_symcount (abfd));
+  if (!som_prep_for_fixups (abfd,
+			    bfd_get_outsymbols (abfd),
+			    bfd_get_symcount (abfd)))
+    return FALSE;
 
   /* At the end of the file is the fixup stream which starts on a
      word boundary.  */
@@ -4273,14 +4284,15 @@ som_finish_writing (bfd *abfd)
 
 /* Compute and return the checksum for a SOM file header.  */
 
-static unsigned long
+static uint32_t
 som_compute_checksum (struct som_external_header *hdr)
 {
-  unsigned long checksum, count, i;
-  unsigned long *buffer = (unsigned long *) hdr;
+  size_t count, i;
+  uint32_t checksum;
+  uint32_t *buffer = (uint32_t *) hdr;
 
   checksum = 0;
-  count = sizeof (struct som_external_header) / 4;
+  count = sizeof (*hdr) / sizeof (*buffer);
   for (i = 0; i < count; i++)
     checksum ^= *(buffer + i);
 
@@ -4456,13 +4468,19 @@ som_build_and_write_symbol_table (bfd *a
   struct som_external_symbol_dictionary_record *som_symtab = NULL;
   unsigned int i;
   bfd_size_type symtab_size;
+  size_t amt;
 
   /* Compute total symbol table size and allocate a chunk of memory
      to hold the symbol table as we build it.  */
-  symtab_size = num_syms;
-  symtab_size *= sizeof (struct som_external_symbol_dictionary_record);
-  som_symtab = bfd_zmalloc (symtab_size);
-  if (som_symtab == NULL && symtab_size != 0)
+  if (_bfd_mul_overflow (num_syms,
+			 sizeof (struct som_external_symbol_dictionary_record),
+			 &amt))
+    {
+      bfd_set_error (bfd_error_no_memory);
+      return FALSE;
+    }
+  som_symtab = bfd_zmalloc (amt);
+  if (som_symtab == NULL && num_syms != 0)
     goto error_return;
 
   /* Walk over each symbol.  */
@@ -4500,17 +4518,18 @@ som_build_and_write_symbol_table (bfd *a
   /* Everything is ready, seek to the right location and
      scribble out the symbol table.  */
   if (bfd_seek (abfd, symtab_location, SEEK_SET) != 0)
-    return FALSE;
+    goto error_return;
 
+  symtab_size = num_syms;
+  symtab_size *= sizeof (struct som_external_symbol_dictionary_record);
   if (bfd_bwrite ((void *) som_symtab, symtab_size, abfd) != symtab_size)
     goto error_return;
 
-  if (som_symtab != NULL)
-    free (som_symtab);
+  free (som_symtab);
   return TRUE;
+
  error_return:
-  if (som_symtab != NULL)
-    free (som_symtab);
+  free (som_symtab);
   return FALSE;
 }
 
@@ -4555,15 +4574,11 @@ som_slurp_string_table (bfd *abfd)
     }
 
   /* Allocate and read in the string table.  */
-  amt = obj_som_stringtab_size (abfd);
-  stringtab = bfd_zmalloc (amt);
-  if (stringtab == NULL)
-    return FALSE;
-
   if (bfd_seek (abfd, obj_som_str_filepos (abfd), SEEK_SET) != 0)
     return FALSE;
-
-  if (bfd_bread (stringtab, amt, abfd) != amt)
+  amt = obj_som_stringtab_size (abfd);
+  stringtab = (char *) _bfd_malloc_and_read (abfd, amt, amt);
+  if (stringtab == NULL)
     return FALSE;
 
   /* Save our results and return success.  */
@@ -4632,12 +4647,12 @@ bfd_section_from_som_symbol
 static unsigned int
 som_slurp_symbol_table (bfd *abfd)
 {
-  int symbol_count = bfd_get_symcount (abfd);
-  int symsize = sizeof (struct som_external_symbol_dictionary_record);
+  unsigned int symbol_count = bfd_get_symcount (abfd);
+  size_t symsize = sizeof (struct som_external_symbol_dictionary_record);
   char *stringtab;
   struct som_external_symbol_dictionary_record *buf = NULL, *bufp, *endbufp;
-  som_symbol_type *sym, *symbase;
-  bfd_size_type amt;
+  som_symbol_type *sym, *symbase = NULL;
+  size_t amt;
 
   /* Return saved value if it exists.  */
   if (obj_som_symtab (abfd) != NULL)
@@ -4652,21 +4667,26 @@ som_slurp_symbol_table (bfd *abfd)
 
   stringtab = obj_som_stringtab (abfd);
 
-  amt = symbol_count;
-  amt *= sizeof (som_symbol_type);
-  symbase = bfd_zmalloc (amt);
-  if (symbase == NULL)
-    goto error_return;
-
   /* Read in the external SOM representation.  */
-  amt = symbol_count;
-  amt *= symsize;
-  buf = bfd_malloc (amt);
-  if (buf == NULL && amt != 0)
-    goto error_return;
+  if (_bfd_mul_overflow (symbol_count, symsize, &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      goto error_return;
+    }
   if (bfd_seek (abfd, obj_som_sym_filepos (abfd), SEEK_SET) != 0)
     goto error_return;
-  if (bfd_bread (buf, amt, abfd) != amt)
+  buf = (struct som_external_symbol_dictionary_record *)
+    _bfd_malloc_and_read (abfd, amt, amt);
+  if (buf == NULL)
+    goto error_return;
+
+  if (_bfd_mul_overflow (symbol_count, sizeof (som_symbol_type), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      goto error_return;
+    }
+  symbase = bfd_zmalloc (amt);
+  if (symbase == NULL)
     goto error_return;
 
   /* Iterate over all the symbols and internalize them.  */
@@ -4803,13 +4823,12 @@ som_slurp_symbol_table (bfd *abfd)
   /* Save our results and return success.  */
   obj_som_symtab (abfd) = symbase;
  successful_return:
-  if (buf != NULL)
-    free (buf);
+  free (buf);
   return (TRUE);
 
  error_return:
-  if (buf != NULL)
-    free (buf);
+  free (symbase);
+  free (buf);
   return FALSE;
 }
 
@@ -4841,7 +4860,7 @@ som_canonicalize_symtab (bfd *abfd, asym
 static asymbol *
 som_make_empty_symbol (bfd *abfd)
 {
-  bfd_size_type amt = sizeof (som_symbol_type);
+  size_t amt = sizeof (som_symbol_type);
   som_symbol_type *new_symbol_type = bfd_zalloc (abfd, amt);
 
   if (new_symbol_type == NULL)
@@ -5204,8 +5223,7 @@ som_set_reloc_info (unsigned char *fixup
 		      if (!bfd_malloc_and_get_section (section->owner, section,
 						       &contents))
 			{
-			  if (contents != NULL)
-			    free (contents);
+			  free (contents);
 			  return (unsigned) -1;
 			}
 		      section->contents = contents;
@@ -5255,7 +5273,7 @@ som_slurp_reloc_table (bfd *abfd,
   unsigned int fixup_stream_size;
   arelent *internal_relocs;
   unsigned int num_relocs;
-  bfd_size_type amt;
+  size_t amt;
 
   fixup_stream_size = som_section_data (section)->reloc_size;
   /* If there were no relocations, then there is nothing to do.  */
@@ -5266,17 +5284,13 @@ som_slurp_reloc_table (bfd *abfd,
      parsed.  We must do so now to know how many relocations exist.  */
   if (section->reloc_count == (unsigned) -1)
     {
-      amt = fixup_stream_size;
-      external_relocs = bfd_malloc (amt);
-      if (external_relocs == NULL)
-	return FALSE;
       /* Read in the external forms.  */
-      if (bfd_seek (abfd,
-		    obj_som_reloc_filepos (abfd) + section->rel_filepos,
-		    SEEK_SET)
-	  != 0)
+      if (bfd_seek (abfd, obj_som_reloc_filepos (abfd) + section->rel_filepos,
+		    SEEK_SET) != 0)
 	return FALSE;
-      if (bfd_bread (external_relocs, amt, abfd) != amt)
+      amt = fixup_stream_size;
+      external_relocs = _bfd_malloc_and_read (abfd, amt, amt);
+      if (external_relocs == NULL)
 	return FALSE;
 
       /* Let callers know how many relocations found.
@@ -5299,9 +5313,12 @@ som_slurp_reloc_table (bfd *abfd,
   if (section->relocation != NULL)
     return TRUE;
 
-  amt = num_relocs;
-  amt *= sizeof (arelent);
-  internal_relocs = bfd_zalloc (abfd, (amt));
+  if (_bfd_mul_overflow (num_relocs, sizeof (arelent), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  internal_relocs = bfd_zalloc (abfd, amt);
   if (internal_relocs == NULL)
     return FALSE;
 
@@ -5373,7 +5390,7 @@ som_new_section_hook (bfd *abfd, asectio
 {
   if (!newsect->used_by_bfd)
     {
-      bfd_size_type amt = sizeof (struct som_section_data_struct);
+      size_t amt = sizeof (struct som_section_data_struct);
 
       newsect->used_by_bfd = bfd_zalloc (abfd, amt);
       if (!newsect->used_by_bfd)
@@ -5419,7 +5436,7 @@ som_bfd_copy_private_section_data (bfd *
 				   bfd *obfd,
 				   asection *osection)
 {
-  bfd_size_type amt;
+  size_t amt;
 
   /* One day we may try to grok other private data.  */
   if (ibfd->xvec->flavour != bfd_target_som_flavour
@@ -5438,8 +5455,18 @@ som_bfd_copy_private_section_data (bfd *
 
   /* Reparent if necessary.  */
   if (som_section_data (osection)->copy_data->container)
-    som_section_data (osection)->copy_data->container =
-      som_section_data (osection)->copy_data->container->output_section;
+    {
+      if (som_section_data (osection)->copy_data->container->output_section)
+	som_section_data (osection)->copy_data->container =
+	  som_section_data (osection)->copy_data->container->output_section;
+      else
+	{
+	  /* User has specified a subspace without its containing space.  */
+	  _bfd_error_handler (_("%pB[%pA]: no output section for space %pA"),
+	    obfd, osection, som_section_data (osection)->copy_data->container);
+	  return FALSE;
+	}
+    }
 
   return TRUE;
 }
@@ -5527,7 +5554,7 @@ bfd_som_set_section_attributes (asection
   /* Allocate memory to hold the magic information.  */
   if (som_section_data (section)->copy_data == NULL)
     {
-      bfd_size_type amt = sizeof (struct som_copyable_section_data_struct);
+      size_t amt = sizeof (struct som_copyable_section_data_struct);
 
       som_section_data (section)->copy_data = bfd_zalloc (section->owner, amt);
       if (som_section_data (section)->copy_data == NULL)
@@ -5557,7 +5584,7 @@ bfd_som_set_subsection_attributes (asect
   /* Allocate memory to hold the magic information.  */
   if (som_section_data (section)->copy_data == NULL)
     {
-      bfd_size_type amt = sizeof (struct som_copyable_section_data_struct);
+      size_t amt = sizeof (struct som_copyable_section_data_struct);
 
       som_section_data (section)->copy_data = bfd_zalloc (section->owner, amt);
       if (som_section_data (section)->copy_data == NULL)
@@ -5591,7 +5618,7 @@ bfd_som_set_symbol_type (asymbol *symbol
 bfd_boolean
 bfd_som_attach_aux_hdr (bfd *abfd, int type, char *string)
 {
-  bfd_size_type amt;
+  size_t amt;
 
   if (type == VERSION_AUX_ID)
     {
@@ -5612,7 +5639,7 @@ bfd_som_attach_aux_hdr (bfd *abfd, int t
     }
   else if (type == COPYRIGHT_AUX_ID)
     {
-      int len = strlen (string);
+      size_t len = strlen (string);
       int pad = 0;
 
       if (len % 4)
@@ -5882,24 +5909,25 @@ som_bfd_count_ar_symbols (bfd *abfd,
 {
   unsigned int i;
   unsigned char *hash_table;
-  bfd_size_type amt;
+  size_t amt;
   file_ptr lst_filepos;
 
   lst_filepos = bfd_tell (abfd) - sizeof (struct som_external_lst_header);
 
-  amt = lst_header->hash_size * 4;
-  hash_table = bfd_malloc (amt);
-  if (hash_table == NULL && amt != 0)
+  /* Read in the hash table.  The hash table is an array of 32-bit
+     file offsets which point to the hash chains.  */
+  if (_bfd_mul_overflow (lst_header->hash_size, 4, &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  hash_table = _bfd_malloc_and_read (abfd, amt, amt);
+  if (hash_table == NULL && lst_header->hash_size != 0)
     goto error_return;
 
   /* Don't forget to initialize the counter!  */
   *count = 0;
 
-  /* Read in the hash table.  The has table is an array of 32bit file offsets
-     which point to the hash chains.  */
-  if (bfd_bread ((void *) hash_table, amt, abfd) != amt)
-    goto error_return;
-
   /* Walk each chain counting the number of symbols found on that particular
      chain.  */
   for (i = 0; i < lst_header->hash_size; i++)
@@ -5930,6 +5958,15 @@ som_bfd_count_ar_symbols (bfd *abfd,
 	  if (next_entry == 0)
 	    break;
 
+	  /* Assume symbols on a chain are in increasing file offset
+	     order.  Otherwise we can loop here with fuzzed input.  */
+	  if (next_entry < hash_val + sizeof (ext_lst_symbol))
+	    {
+	      bfd_set_error (bfd_error_bad_value);
+	      goto error_return;
+	    }
+	  hash_val = next_entry;
+
 	  /* Seek to the next symbol.  */
 	  if (bfd_seek (abfd, lst_filepos + next_entry, SEEK_SET) != 0)
 	    goto error_return;
@@ -5942,13 +5979,11 @@ som_bfd_count_ar_symbols (bfd *abfd,
 	  (*count)++;
 	}
     }
-  if (hash_table != NULL)
-    free (hash_table);
+  free (hash_table);
   return TRUE;
 
  error_return:
-  if (hash_table != NULL)
-    free (hash_table);
+  free (hash_table);
   return FALSE;
 }
 
@@ -5964,19 +5999,21 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
   carsym *set = syms[0];
   unsigned char *hash_table;
   struct som_external_som_entry *som_dict = NULL;
-  bfd_size_type amt;
+  size_t amt;
   file_ptr lst_filepos;
   unsigned int string_loc;
 
   lst_filepos = bfd_tell (abfd) - sizeof (struct som_external_lst_header);
-  amt = lst_header->hash_size * 4;
-  hash_table = bfd_malloc (amt);
-  if (hash_table == NULL && amt != 0)
-    goto error_return;
 
   /* Read in the hash table.  The has table is an array of 32bit file offsets
      which point to the hash chains.  */
-  if (bfd_bread ((void *) hash_table, amt, abfd) != amt)
+  if (_bfd_mul_overflow (lst_header->hash_size, 4, &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  hash_table = _bfd_malloc_and_read (abfd, amt, amt);
+  if (hash_table == NULL && lst_header->hash_size != 0)
     goto error_return;
 
   /* Seek to and read in the SOM dictionary.  We will need this to fill
@@ -5984,12 +6021,15 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
   if (bfd_seek (abfd, lst_filepos + lst_header->dir_loc, SEEK_SET) != 0)
     goto error_return;
 
-  amt = lst_header->module_count * sizeof (struct som_external_som_entry);
-  som_dict = bfd_malloc (amt);
-  if (som_dict == NULL && amt != 0)
-    goto error_return;
-
-  if (bfd_bread ((void *) som_dict, amt, abfd) != amt)
+  if (_bfd_mul_overflow (lst_header->module_count,
+			 sizeof (struct som_external_som_entry), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      goto error_return;
+    }
+  som_dict = (struct som_external_som_entry *)
+    _bfd_malloc_and_read (abfd, amt, amt);
+  if (som_dict == NULL && lst_header->module_count != 0)
     goto error_return;
 
   string_loc = lst_header->string_loc;
@@ -5999,9 +6039,10 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
     {
       struct som_external_lst_symbol_record lst_symbol;
       unsigned int hash_val;
-      unsigned int len;
+      size_t len;
       unsigned char ext_len[4];
       char *name;
+      unsigned int ndx;
 
       /* An empty chain has zero as it's file offset.  */
       hash_val = bfd_getb32 (hash_table + 4 * i);
@@ -6032,20 +6073,27 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
       len = bfd_getb32 (ext_len);
 
       /* Allocate space for the name and null terminate it too.  */
-      name = bfd_zalloc (abfd, (bfd_size_type) len + 1);
+      if (len == (size_t) -1)
+	{
+	  bfd_set_error (bfd_error_no_memory);
+	  goto error_return;
+	}
+      name = (char *) _bfd_alloc_and_read (abfd, len + 1, len);
       if (!name)
 	goto error_return;
-      if (bfd_bread (name, (bfd_size_type) len, abfd) != len)
-	goto error_return;
-
       name[len] = 0;
       set->name = name;
 
       /* Fill in the file offset.  Note that the "location" field points
 	 to the SOM itself, not the ar_hdr in front of it.  */
-      set->file_offset =
-	bfd_getb32 (som_dict[bfd_getb32 (lst_symbol.som_index)].location)
-	- sizeof (struct ar_hdr);
+      ndx = bfd_getb32 (lst_symbol.som_index);
+      if (ndx >= lst_header->module_count)
+	{
+	  bfd_set_error (bfd_error_bad_value);
+	  goto error_return;
+	}
+      set->file_offset
+	= bfd_getb32 (som_dict[ndx].location) - sizeof (struct ar_hdr);
 
       /* Go to the next symbol.  */
       set++;
@@ -6076,20 +6124,27 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
 	  len = bfd_getb32 (ext_len);
 
 	  /* Allocate space for the name and null terminate it too.  */
-	  name = bfd_zalloc (abfd, (bfd_size_type) len + 1);
+	  if (len == (size_t) -1)
+	    {
+	      bfd_set_error (bfd_error_no_memory);
+	      goto error_return;
+	    }
+	  name = (char *) _bfd_alloc_and_read (abfd, len + 1, len);
 	  if (!name)
 	    goto error_return;
-
-	  if (bfd_bread (name, (bfd_size_type) len, abfd) != len)
-	    goto error_return;
 	  name[len] = 0;
 	  set->name = name;
 
 	  /* Fill in the file offset.  Note that the "location" field points
 	     to the SOM itself, not the ar_hdr in front of it.  */
-	  set->file_offset =
-	    bfd_getb32 (som_dict[bfd_getb32 (lst_symbol.som_index)].location)
-	    - sizeof (struct ar_hdr);
+	  ndx = bfd_getb32 (lst_symbol.som_index);
+	  if (ndx >= lst_header->module_count)
+	    {
+	      bfd_set_error (bfd_error_bad_value);
+	      goto error_return;
+	    }
+	  set->file_offset
+	    = bfd_getb32 (som_dict[ndx].location) - sizeof (struct ar_hdr);
 
 	  /* Go on to the next symbol.  */
 	  set++;
@@ -6097,17 +6152,13 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
     }
   /* If we haven't died by now, then we successfully read the entire
      archive symbol table.  */
-  if (hash_table != NULL)
-    free (hash_table);
-  if (som_dict != NULL)
-    free (som_dict);
+  free (hash_table);
+  free (som_dict);
   return TRUE;
 
  error_return:
-  if (hash_table != NULL)
-    free (hash_table);
-  if (som_dict != NULL)
-    free (som_dict);
+  free (hash_table);
+  free (som_dict);
   return FALSE;
 }
 
@@ -6122,7 +6173,7 @@ som_slurp_armap (bfd *abfd)
   unsigned int parsed_size;
   struct artdata *ardata = bfd_ardata (abfd);
   char nextname[17];
-  bfd_size_type amt = 16;
+  size_t amt = 16;
   int i = bfd_bread ((void *) nextname, amt, abfd);
 
   /* Special cases.  */
@@ -6191,8 +6242,11 @@ som_slurp_armap (bfd *abfd)
 
   /* Initialize the cache and allocate space for the library symbols.  */
   ardata->cache = 0;
-  amt = ardata->symdef_count;
-  amt *= sizeof (carsym);
+  if (_bfd_mul_overflow (ardata->symdef_count, sizeof (carsym), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
   ardata->symdefs = bfd_alloc (abfd, amt);
   if (!ardata->symdefs)
     return FALSE;
@@ -6320,23 +6374,38 @@ som_bfd_ar_write_symbol_stuff (bfd *abfd
   struct som_external_som_entry *som_dict = NULL;
   struct som_external_lst_symbol_record **last_hash_entry = NULL;
   unsigned int curr_som_offset, som_index = 0;
-  bfd_size_type amt;
+  size_t amt;
   unsigned int module_count;
   unsigned int hash_size;
 
   hash_size = bfd_getb32 (lst.hash_size);
-  amt = hash_size * 4;
+  if (_bfd_mul_overflow (hash_size, 4, &amt))
+    {
+      bfd_set_error (bfd_error_no_memory);
+      return FALSE;
+    }
   hash_table = bfd_zmalloc (amt);
   if (hash_table == NULL && hash_size != 0)
     goto error_return;
 
   module_count = bfd_getb32 (lst.module_count);
-  amt = module_count * sizeof (struct som_external_som_entry);
+  if (_bfd_mul_overflow (module_count,
+			 sizeof (struct som_external_som_entry), &amt))
+    {
+      bfd_set_error (bfd_error_no_memory);
+      goto error_return;
+    }
   som_dict = bfd_zmalloc (amt);
   if (som_dict == NULL && module_count != 0)
     goto error_return;
 
-  amt = hash_size * sizeof (struct som_external_lst_symbol_record *);
+  if (_bfd_mul_overflow (hash_size,
+			 sizeof (struct som_external_lst_symbol_record *),
+			 &amt))
+    {
+      bfd_set_error (bfd_error_no_memory);
+      goto error_return;
+    }
   last_hash_entry = bfd_zmalloc (amt);
   if (last_hash_entry == NULL && hash_size != 0)
     goto error_return;
@@ -6365,12 +6434,16 @@ som_bfd_ar_write_symbol_stuff (bfd *abfd
   curr_som_offset = (curr_som_offset + 0x1) & ~0x1;
 
   /* FIXME should be done with buffers just like everything else...  */
-  amt = nsyms;
-  amt *= sizeof (struct som_external_lst_symbol_record);
+  if (_bfd_mul_overflow (nsyms,
+			 sizeof (struct som_external_lst_symbol_record), &amt))
+    {
+      bfd_set_error (bfd_error_no_memory);
+      goto error_return;
+    }
   lst_syms = bfd_malloc (amt);
   if (lst_syms == NULL && nsyms != 0)
     goto error_return;
-  strings = bfd_malloc ((bfd_size_type) string_size);
+  strings = bfd_malloc (string_size);
   if (strings == NULL && string_size != 0)
     goto error_return;
 
@@ -6515,17 +6588,17 @@ som_bfd_ar_write_symbol_stuff (bfd *abfd
     }
 
   /* Now scribble out the hash table.  */
-  amt = hash_size * 4;
+  amt = (size_t) hash_size * 4;
   if (bfd_bwrite ((void *) hash_table, amt, abfd) != amt)
     goto error_return;
 
   /* Then the SOM dictionary.  */
-  amt = module_count * sizeof (struct som_external_som_entry);
+  amt = (size_t) module_count * sizeof (struct som_external_som_entry);
   if (bfd_bwrite ((void *) som_dict, amt, abfd) != amt)
     goto error_return;
 
   /* The library symbols.  */
-  amt = nsyms * sizeof (struct som_external_lst_symbol_record);
+  amt = (size_t) nsyms * sizeof (struct som_external_lst_symbol_record);
   if (bfd_bwrite ((void *) lst_syms, amt, abfd) != amt)
     goto error_return;
 
@@ -6534,29 +6607,19 @@ som_bfd_ar_write_symbol_stuff (bfd *abfd
   if (bfd_bwrite ((void *) strings, amt, abfd) != amt)
     goto error_return;
 
-  if (hash_table != NULL)
-    free (hash_table);
-  if (som_dict != NULL)
-    free (som_dict);
-  if (last_hash_entry != NULL)
-    free (last_hash_entry);
-  if (lst_syms != NULL)
-    free (lst_syms);
-  if (strings != NULL)
-    free (strings);
+  free (hash_table);
+  free (som_dict);
+  free (last_hash_entry);
+  free (lst_syms);
+  free (strings);
   return TRUE;
 
  error_return:
-  if (hash_table != NULL)
-    free (hash_table);
-  if (som_dict != NULL)
-    free (som_dict);
-  if (last_hash_entry != NULL)
-    free (last_hash_entry);
-  if (lst_syms != NULL)
-    free (lst_syms);
-  if (strings != NULL)
-    free (strings);
+  free (hash_table);
+  free (som_dict);
+  free (last_hash_entry);
+  free (lst_syms);
+  free (strings);
 
   return FALSE;
 }
@@ -6578,12 +6641,12 @@ som_write_armap (bfd *abfd,
   struct ar_hdr hdr;
   struct som_external_lst_header lst;
   unsigned char *p;
-  bfd_size_type amt;
+  size_t amt;
   unsigned int csum;
   unsigned int module_count;
 
   /* We'll use this for the archive's date and mode later.  */
-  if (stat (abfd->filename, &statbuf) != 0)
+  if (stat (bfd_get_filename (abfd), &statbuf) != 0)
     {
       bfd_set_error (bfd_error_system_call);
       return FALSE;
@@ -6708,7 +6771,7 @@ som_bfd_free_cached_info (bfd *abfd)
     {
       asection *o;
 
-#define FREE(x) if (x != NULL) { free (x); x = NULL; }
+#define FREE(x) do { free (x); x = NULL; } while (0)
       /* Free the native string and symbol tables.  */
       FREE (obj_som_symtab (abfd));
       FREE (obj_som_stringtab (abfd));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/som.h ./bfd/som.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/som.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/som.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* HP PA-RISC SOM object file format:  definitions internal to BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
 
    Contributed by the Center for Software Science at the
    University of Utah (pa-gdb-bugs@cs.utah.edu).
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/srec.c ./bfd/srec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/srec.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/srec.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for s-record objects.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -493,8 +493,7 @@ srec_scan (bfd *abfd)
 
 	    if (bytes * 2 > bufsize)
 	      {
-		if (buf != NULL)
-		  free (buf);
+		free (buf);
 		buf = (bfd_byte *) bfd_malloc ((bfd_size_type) bytes * 2);
 		if (buf == NULL)
 		  goto error_return;
@@ -550,7 +549,7 @@ srec_scan (bfd *abfd)
 		  {
 		    char secbuf[20];
 		    char *secname;
-		    bfd_size_type amt;
+		    size_t amt;
 		    flagword flags;
 
 		    sprintf (secbuf, ".sec%d", bfd_count_sections (abfd) + 1);
@@ -618,9 +617,7 @@ srec_scan (bfd *abfd)
 		    goto error_return;
 		  }
 
-		if (buf != NULL)
-		  free (buf);
-
+		free (buf);
 		return TRUE;
 	      }
 	  }
@@ -631,22 +628,18 @@ srec_scan (bfd *abfd)
   if (error)
     goto error_return;
 
-  if (buf != NULL)
-    free (buf);
-
+  free (buf);
   return TRUE;
 
  error_return:
-  if (symbuf != NULL)
-    free (symbuf);
-  if (buf != NULL)
-    free (buf);
+  free (symbuf);
+  free (buf);
   return FALSE;
 }
 
 /* Check whether an existing file is an S-record file.  */
 
-static const bfd_target *
+static bfd_cleanup
 srec_object_p (bfd *abfd)
 {
   void * tdata_save;
@@ -676,12 +669,12 @@ srec_object_p (bfd *abfd)
   if (abfd->symcount > 0)
     abfd->flags |= HAS_SYMS;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 /* Check whether an existing file is an S-record file with symbols.  */
 
-static const bfd_target *
+static bfd_cleanup
 symbolsrec_object_p (bfd *abfd)
 {
   void * tdata_save;
@@ -711,7 +704,7 @@ symbolsrec_object_p (bfd *abfd)
   if (abfd->symcount > 0)
     abfd->flags |= HAS_SYMS;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 /* Read in the contents of a section in an S-record file.  */
@@ -751,8 +744,7 @@ srec_read_section (bfd *abfd, asection *
 
       if (bytes * 2 > bufsize)
 	{
-	  if (buf != NULL)
-	    free (buf);
+	  free (buf);
 	  buf = (bfd_byte *) bfd_malloc ((bfd_size_type) bytes * 2);
 	  if (buf == NULL)
 	    goto error_return;
@@ -768,8 +760,7 @@ srec_read_section (bfd *abfd, asection *
 	{
 	default:
 	  BFD_ASSERT (sofar == section->size);
-	  if (buf != NULL)
-	    free (buf);
+	  free (buf);
 	  return TRUE;
 
 	case '3':
@@ -793,8 +784,7 @@ srec_read_section (bfd *abfd, asection *
 	    {
 	      /* We've come to the end of this section.  */
 	      BFD_ASSERT (sofar == section->size);
-	      if (buf != NULL)
-		free (buf);
+	      free (buf);
 	      return TRUE;
 	    }
 
@@ -817,14 +807,11 @@ srec_read_section (bfd *abfd, asection *
 
   BFD_ASSERT (sofar == section->size);
 
-  if (buf != NULL)
-    free (buf);
-
+  free (buf);
   return TRUE;
 
  error_return:
-  if (buf != NULL)
-    free (buf);
+  free (buf);
   return FALSE;
 }
 
@@ -1015,15 +1002,15 @@ srec_write_record (bfd *abfd,
 static bfd_boolean
 srec_write_header (bfd *abfd)
 {
-  unsigned int len = strlen (abfd->filename);
+  unsigned int len = strlen (bfd_get_filename (abfd));
 
   /* I'll put an arbitrary 40 char limit on header size.  */
   if (len > 40)
     len = 40;
 
   return srec_write_record (abfd, 0, (bfd_vma) 0,
-			    (bfd_byte *) abfd->filename,
-			    (bfd_byte *) abfd->filename + len);
+			    (bfd_byte *) bfd_get_filename (abfd),
+			    (bfd_byte *) bfd_get_filename (abfd) + len);
 }
 
 static bfd_boolean
@@ -1089,9 +1076,9 @@ srec_write_symbols (bfd *abfd)
       bfd_size_type len;
       asymbol **table = bfd_get_outsymbols (abfd);
 
-      len = strlen (abfd->filename);
+      len = strlen (bfd_get_filename (abfd));
       if (bfd_bwrite ("$$ ", (bfd_size_type) 3, abfd) != 3
-	  || bfd_bwrite (abfd->filename, len, abfd) != len
+	  || bfd_bwrite (bfd_get_filename (abfd), len, abfd) != len
 	  || bfd_bwrite ("\r\n", (bfd_size_type) 2, abfd) != 2)
 	return FALSE;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/stabs.c ./bfd/stabs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/stabs.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/stabs.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Stabs in sections linking support.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -494,10 +494,8 @@ _bfd_link_section_stabs (bfd *abfd,
   return TRUE;
 
  error_return:
-  if (stabbuf != NULL)
-    free (stabbuf);
-  if (stabstrbuf != NULL)
-    free (stabstrbuf);
+  free (stabbuf);
+  free (stabstrbuf);
   return FALSE;
 }
 
@@ -648,8 +646,7 @@ _bfd_discard_section_stabs (bfd *abfd,
   return skip > 0;
 
  error_return:
-  if (stabbuf != NULL)
-    free (stabbuf);
+  free (stabbuf);
   return FALSE;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/stab-syms.c ./bfd/stab-syms.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/stab-syms.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/stab-syms.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Table of stab names for the BFD library.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/syms.c ./bfd/syms.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/syms.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/syms.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic symbol-table support for the BFD library.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -538,7 +538,7 @@ DESCRIPTION
 asymbol *
 _bfd_generic_make_empty_symbol (bfd *abfd)
 {
-  bfd_size_type amt = sizeof (asymbol);
+  size_t amt = sizeof (asymbol);
   asymbol *new_symbol = (asymbol *) bfd_zalloc (abfd, amt);
   if (new_symbol)
     new_symbol->the_bfd = abfd;
@@ -565,30 +565,15 @@ struct section_to_type
   char type;
 };
 
-/* Map section names to POSIX/BSD single-character symbol types.
+/* Map special section names to POSIX/BSD single-character symbol types.
    This table is probably incomplete.  It is sorted for convenience of
    adding entries.  Since it is so short, a linear search is used.  */
 static const struct section_to_type stt[] =
 {
-  {".bss", 'b'},
-  {"code", 't'},		/* MRI .text */
-  {".data", 'd'},
-  {"*DEBUG*", 'N'},
-  {".debug", 'N'},		/* MSVC's .debug (non-standard debug syms) */
   {".drectve", 'i'},		/* MSVC's .drective section */
   {".edata", 'e'},		/* MSVC's .edata (export) section */
-  {".fini", 't'},		/* ELF fini section */
   {".idata", 'i'},		/* MSVC's .idata (import) section */
-  {".init", 't'},		/* ELF init section */
   {".pdata", 'p'},		/* MSVC's .pdata (stack unwind) section */
-  {".rdata", 'r'},		/* Read only data.  */
-  {".rodata", 'r'},		/* Read only data.  */
-  {".sbss", 's'},		/* Small BSS (uninitialized data).  */
-  {".scommon", 'c'},		/* Small common.  */
-  {".sdata", 'g'},		/* Small initialized data.  */
-  {".text", 't'},
-  {"vars", 'd'},		/* MRI .data */
-  {"zerovars", 'b'},		/* MRI .bss */
   {0, 0}
 };
 
@@ -596,8 +581,7 @@ static const struct section_to_type stt[
    section S, or '?' for an unknown COFF section.
 
    Check for leading strings which match, followed by a number, '.',
-   or '$' so .text5 matches the .text entry, but .init_array doesn't
-   match the .init entry.  */
+   or '$' so .idata5 matches the .idata entry.  */
 
 static char
 coff_section_type (const char *s)
@@ -619,7 +603,7 @@ coff_section_type (const char *s)
    SECTION, or '?' for an unknown section.  This uses section flags to
    identify sections.
 
-   FIXME These types are unhandled: c, i, e, p.  If we handled these also,
+   FIXME These types are unhandled: e, i, p.  If we handled these also,
    we could perhaps obsolete coff_section_type.  */
 
 static char
@@ -668,7 +652,12 @@ bfd_decode_symclass (asymbol *symbol)
   char c;
 
   if (symbol->section && bfd_is_com_section (symbol->section))
-    return 'C';
+    {
+      if (symbol->section->flags & SEC_SMALL_DATA)
+	return 'c';
+      else
+	return 'C';
+    }
   if (bfd_is_und_section (symbol->section))
     {
       if (symbol->flags & BSF_WEAK)
@@ -705,9 +694,9 @@ bfd_decode_symclass (asymbol *symbol)
     c = 'a';
   else if (symbol->section)
     {
-      c = decode_section_type (symbol->section);
+      c = coff_section_type (symbol->section->name);
       if (c == '?')
-	c = coff_section_type (symbol->section->name);
+	c = decode_section_type (symbol->section);
     }
   else
     return '?';
@@ -841,8 +830,7 @@ _bfd_generic_read_minisymbols (bfd *abfd
 
  error_return:
   bfd_set_error (bfd_error_no_symbols);
-  if (syms != NULL)
-    free (syms);
+  free (syms);
   return -1;
 }
 
@@ -1065,8 +1053,7 @@ _bfd_stab_section_find_nearest_line (bfd
 					    symbols);
       if (reloc_count < 0)
 	{
-	  if (reloc_vector != NULL)
-	    free (reloc_vector);
+	  free (reloc_vector);
 	  return FALSE;
 	}
       if (reloc_count > 0)
@@ -1097,8 +1084,7 @@ _bfd_stab_section_find_nearest_line (bfd
 		  _bfd_error_handler
 		    (_("unsupported .stab relocation"));
 		  bfd_set_error (bfd_error_invalid_operation);
-		  if (reloc_vector != NULL)
-		    free (reloc_vector);
+		  free (reloc_vector);
 		  return FALSE;
 		}
 
@@ -1110,8 +1096,7 @@ _bfd_stab_section_find_nearest_line (bfd
 	    }
 	}
 
-      if (reloc_vector != NULL)
-	free (reloc_vector);
+      free (reloc_vector);
 
       /* First time through this function, build a table matching
 	 function VM addresses to stabs, then sort based on starting
@@ -1479,6 +1464,7 @@ _bfd_nosymbols_get_symbol_info (bfd *abf
 const char *
 _bfd_nosymbols_get_symbol_version_string (bfd *abfd,
 					  asymbol *symbol ATTRIBUTE_UNUSED,
+					  bfd_boolean base_p ATTRIBUTE_UNUSED,
 					  bfd_boolean *hidden ATTRIBUTE_UNUSED)
 {
   return (const char *) _bfd_ptr_bfd_null_error (abfd);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/sysdep.h ./bfd/sysdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/sysdep.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/sysdep.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* sysdep.h -- handle host dependencies for the BFD library
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -187,7 +187,7 @@ size_t strnlen (const char *, size_t);
 
    This is because the code in this directory is used to build a
    library which will be linked with code in other directories to form
-   programs.  We want to maintain a seperate translation file for this
+   programs.  We want to maintain a separate translation file for this
    directory however, rather than being forced to merge it with that
    of any program linked to libbfd.  This is a library, so it cannot
    depend on the catalog currently loaded.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/targets.c ./bfd/targets.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/targets.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/targets.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic target-file-type support for the BFD library.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2020 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -176,6 +176,8 @@ DESCRIPTION
 .{* Forward declaration.  *}
 .typedef struct flag_info flag_info;
 .
+.typedef void (*bfd_cleanup) (bfd *);
+.
 .typedef struct bfd_target
 .{
 .  {* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  *}
@@ -240,9 +242,9 @@ DESCRIPTION
 .  {* Format dependent routines: these are vectors of entry points
 .     within the target vector structure, one for each format to check.  *}
 .
-.  {* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  *}
-.  const struct bfd_target *
-.	       (*_bfd_check_format[bfd_type_end]) (bfd *);
+.  {* Check the format of a file being read.  Return a <<bfd_cleanup>> on
+.     success or zero on failure.  *}
+.  bfd_cleanup (*_bfd_check_format[bfd_type_end]) (bfd *);
 .
 .  {* Set the format of a file being written.  *}
 .  bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
@@ -390,9 +392,10 @@ BFD_JUMP_TABLE macros.
 .#define bfd_get_symbol_info(b,p,e) \
 .	BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
 .  const char *(*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *,
+.						  bfd_boolean,
 .						  bfd_boolean *);
-.#define bfd_get_symbol_version_string(b,s,h) \
-.	BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))
+.#define bfd_get_symbol_version_string(b,s,p,h) \
+.	BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,p,h))
 .  bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
 .  bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
 .  alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
@@ -733,12 +736,12 @@ extern const bfd_target i386_coff_go32st
 extern const bfd_target i386_coff_lynx_vec;
 extern const bfd_target i386_elf32_vec;
 extern const bfd_target i386_elf32_fbsd_vec;
-extern const bfd_target i386_elf32_nacl_vec;
 extern const bfd_target i386_elf32_sol2_vec;
 extern const bfd_target i386_elf32_vxworks_vec;
 extern const bfd_target i386_mach_o_vec;
 extern const bfd_target i386_msdos_vec;
 extern const bfd_target i386_pe_vec;
+extern const bfd_target i386_pe_big_vec;
 extern const bfd_target i386_pei_vec;
 extern const bfd_target iamcu_elf32_vec;
 extern const bfd_target ia64_elf32_be_vec;
@@ -835,10 +838,6 @@ extern const bfd_target powerpc_elf32_vx
 extern const bfd_target powerpc_elf64_vec;
 extern const bfd_target powerpc_elf64_le_vec;
 extern const bfd_target powerpc_elf64_fbsd_vec;
-extern const bfd_target powerpc_pe_vec;
-extern const bfd_target powerpc_pe_le_vec;
-extern const bfd_target powerpc_pei_vec;
-extern const bfd_target powerpc_pei_le_vec;
 extern const bfd_target powerpc_xcoff_vec;
 extern const bfd_target pru_elf32_vec;
 extern const bfd_target riscv_elf32_vec;
@@ -879,7 +878,6 @@ extern const bfd_target sparc_elf64_fbsd
 extern const bfd_target sparc_elf64_sol2_vec;
 extern const bfd_target spu_elf32_vec;
 extern const bfd_target sym_vec;
-extern const bfd_target tic30_aout_vec;
 extern const bfd_target tic30_coff_vec;
 extern const bfd_target tic4x_coff0_vec;
 extern const bfd_target tic4x_coff0_beh_vec;
@@ -899,7 +897,6 @@ extern const bfd_target tic6x_elf32_c600
 extern const bfd_target tic6x_elf32_c6000_le_vec;
 extern const bfd_target tic6x_elf32_linux_be_vec;
 extern const bfd_target tic6x_elf32_linux_le_vec;
-extern const bfd_target tic80_coff_vec;
 extern const bfd_target tilegx_elf32_be_vec;
 extern const bfd_target tilegx_elf32_le_vec;
 extern const bfd_target tilegx_elf64_be_vec;
@@ -916,15 +913,13 @@ extern const bfd_target wasm_vec;
 extern const bfd_target wasm32_elf32_vec;
 extern const bfd_target x86_64_coff_vec;
 extern const bfd_target x86_64_elf32_vec;
-extern const bfd_target x86_64_elf32_nacl_vec;
 extern const bfd_target x86_64_elf64_vec;
 extern const bfd_target x86_64_elf64_cloudabi_vec;
 extern const bfd_target x86_64_elf64_fbsd_vec;
-extern const bfd_target x86_64_elf64_nacl_vec;
 extern const bfd_target x86_64_elf64_sol2_vec;
 extern const bfd_target x86_64_mach_o_vec;
 extern const bfd_target x86_64_pe_vec;
-extern const bfd_target x86_64_pe_be_vec;
+extern const bfd_target x86_64_pe_big_vec;
 extern const bfd_target x86_64_pei_vec;
 extern const bfd_target xc16x_elf32_vec;
 extern const bfd_target xgate_elf32_vec;
@@ -932,6 +927,7 @@ extern const bfd_target xstormy16_elf32_
 extern const bfd_target xtensa_elf32_be_vec;
 extern const bfd_target xtensa_elf32_le_vec;
 extern const bfd_target z80_coff_vec;
+extern const bfd_target z80_elf32_vec;
 extern const bfd_target z8k_coff_vec;
 
 /* These are always included.  */
@@ -1082,12 +1078,12 @@ static const bfd_target * const _bfd_tar
 	&i386_coff_lynx_vec,
 	&i386_elf32_vec,
 	&i386_elf32_fbsd_vec,
-	&i386_elf32_nacl_vec,
 	&i386_elf32_sol2_vec,
 	&i386_elf32_vxworks_vec,
 	&i386_mach_o_vec,
 	&i386_msdos_vec,
 	&i386_pe_vec,
+	&i386_pe_big_vec,
 	&i386_pei_vec,
 
 	&iamcu_elf32_vec,
@@ -1229,10 +1225,6 @@ static const bfd_target * const _bfd_tar
 	&powerpc_elf64_le_vec,
 	&powerpc_elf64_fbsd_vec,
 #endif
-	&powerpc_pe_vec,
-	&powerpc_pe_le_vec,
-	&powerpc_pei_vec,
-	&powerpc_pei_le_vec,
 #if 0
 	/* This has the same magic number as RS/6000.  */
 	&powerpc_xcoff_vec,
@@ -1296,7 +1288,6 @@ static const bfd_target * const _bfd_tar
 
 	&sym_vec,
 
-	&tic30_aout_vec,
 	&tic30_coff_vec,
 	&tic54x_coff0_beh_vec,
 	&tic54x_coff0_vec,
@@ -1306,7 +1297,6 @@ static const bfd_target * const _bfd_tar
 	&tic54x_coff2_vec,
 	&tic6x_elf32_be_vec,
 	&tic6x_elf32_le_vec,
-	&tic80_coff_vec,
 
 	&tilegx_elf32_be_vec,
 	&tilegx_elf32_le_vec,
@@ -1333,15 +1323,13 @@ static const bfd_target * const _bfd_tar
 #ifdef BFD64
 	&x86_64_coff_vec,
 	&x86_64_elf32_vec,
-	&x86_64_elf32_nacl_vec,
 	&x86_64_elf64_vec,
 	&x86_64_elf64_cloudabi_vec,
 	&x86_64_elf64_fbsd_vec,
-	&x86_64_elf64_nacl_vec,
 	&x86_64_elf64_sol2_vec,
 	&x86_64_mach_o_vec,
 	&x86_64_pe_vec,
-	&x86_64_pe_be_vec,
+	&x86_64_pe_big_vec,
 	&x86_64_pei_vec,
 #endif
 
@@ -1355,6 +1343,7 @@ static const bfd_target * const _bfd_tar
 	&xtensa_elf32_le_vec,
 
 	&z80_coff_vec,
+	&z80_elf32_vec,
 
 	&z8k_coff_vec,
 #endif /* not SELECT_VECS */
@@ -1687,8 +1676,7 @@ bfd_get_target_info (const char *target_
 	    _bfd_find_arch_match (tname, arches, def_target_arch);
 	}
 
-      if (arches)
-	free (arches);
+      free (arches);
     }
   return target_vec;
 }
@@ -1711,7 +1699,7 @@ const char **
 bfd_target_list (void)
 {
   int vec_length = 0;
-  bfd_size_type amt;
+  size_t amt;
   const bfd_target * const *target;
   const  char **name_list, **name_ptr;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/tekhex.c ./bfd/tekhex.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/tekhex.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/tekhex.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD backend for Extended Tektronix Hex Format  objects.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -428,7 +428,7 @@ first_phase (bfd *abfd, int type, char *
 	    case '8':
 	      /* Symbols, add to section.  */
 	      {
-		bfd_size_type amt = sizeof (tekhex_symbol_type);
+		size_t amt = sizeof (tekhex_symbol_type);
 		tekhex_symbol_type *new_symbol = (tekhex_symbol_type *)
 		    bfd_alloc (abfd, amt);
 		char stype = (*src);
@@ -525,7 +525,7 @@ pass_over (bfd *abfd, bfd_boolean (*func
 
       /* Find first '%'.  */
       is_eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1);
-      while (*src != '%' && !is_eof)
+      while (!is_eof && *src != '%')
 	is_eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1);
 
       if (is_eof)
@@ -600,7 +600,7 @@ tekhex_mkobject (bfd *abfd)
 /* Return TRUE if the file looks like it's in TekHex format. Just look
    for a percent sign and some hex digits.  */
 
-static const bfd_target *
+static bfd_cleanup
 tekhex_object_p (bfd *abfd)
 {
   char b[4];
@@ -619,7 +619,7 @@ tekhex_object_p (bfd *abfd)
   if (!pass_over (abfd, first_phase))
     return NULL;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 static void
@@ -912,7 +912,7 @@ tekhex_sizeof_headers (bfd *abfd ATTRIBU
 static asymbol *
 tekhex_make_empty_symbol (bfd *abfd)
 {
-  bfd_size_type amt = sizeof (struct tekhex_symbol_struct);
+  size_t amt = sizeof (struct tekhex_symbol_struct);
   tekhex_symbol_type *new_symbol = (tekhex_symbol_type *) bfd_zalloc (abfd,
 								      amt);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/TODO ./bfd/TODO
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/TODO	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/TODO	2021-05-21 01:57:23.000000000 +0000
@@ -20,7 +20,7 @@ Things that still need to be done: -*- T
 
  o - upgrade the reloc handling as per Steve's suggestion.
 
-Copyright (C) 2012-2019 Free Software Foundation, Inc.
+Copyright (C) 2012-2020 Free Software Foundation, Inc.
 
 Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/trad-core.c ./bfd/trad-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/trad-core.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/trad-core.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back end for traditional Unix core files (U-area and raw sections)
-   Copyright (C) 1988-2019 Free Software Foundation, Inc.
+   Copyright (C) 1988-2020 Free Software Foundation, Inc.
    Written by John Gilmore of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -71,13 +71,13 @@ struct trad_core_struct
 
 /* Handle 4.2-style (and perhaps also sysV-style) core dump file.  */
 
-static const bfd_target *
+static bfd_cleanup
 trad_unix_core_file_p (bfd *abfd)
 {
   int val;
   struct user u;
   struct trad_core_struct *rawptr;
-  bfd_size_type amt;
+  size_t amt;
   flagword flags;
 
 #ifdef TRAD_CORE_USER_OFFSET
@@ -220,7 +220,7 @@ trad_unix_core_file_p (bfd *abfd)
   core_datasec (abfd)->alignment_power = 2;
   core_regsec (abfd)->alignment_power = 2;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  fail:
   bfd_release (abfd, abfd->tdata.any);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vax1knetbsd.c ./bfd/vax1knetbsd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vax1knetbsd.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/vax1knetbsd.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for NetBSD/VAX (1K page size) a.out-ish binaries.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vaxnetbsd.c ./bfd/vaxnetbsd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vaxnetbsd.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/vaxnetbsd.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for NetBSD/VAX (4K page size) a.out-ish binaries.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/verilog.c ./bfd/verilog.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/verilog.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/verilog.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for verilog hex memory dump files.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
    Written by Anthony Green <green@moxielogic.com>
 
    This file is part of BFD, the Binary File Descriptor library.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/version.h ./bfd/version.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/version.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/version.h	2021-05-21 01:57:23.000000000 +0000
@@ -16,7 +16,7 @@
 
    In releases, the date is not included in either version strings or
    sonames.  */
-#define BFD_VERSION_DATE 20200307
+#define BFD_VERSION_DATE 20210521
 #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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/version.m4 ./bfd/version.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/version.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/version.m4	2021-05-21 01:57:23.000000000 +0000
@@ -1 +1 @@
-m4_define([BFD_VERSION], [2.33.50])
+m4_define([BFD_VERSION], [2.35.50])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vms-alpha.c ./bfd/vms-alpha.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vms-alpha.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/vms-alpha.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* vms.c -- BFD back-end for EVAX (openVMS/Alpha) files.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    Initial version written by Klaus Kaempf (kkaempf@rmi.de)
    Major rewrite by Adacore.
@@ -34,6 +34,7 @@
 */
 
 #include "sysdep.h"
+#include <limits.h>
 #include "bfd.h"
 #include "bfdlink.h"
 #include "libbfd.h"
@@ -71,6 +72,9 @@
 
 
 #define MIN(a,b) ((a) < (b) ? (a) : (b))
+#ifndef CHAR_BIT
+#define CHAR_BIT 8
+#endif
 
 /* The r_type field in a reloc is one of the following values.  */
 #define ALPHA_R_IGNORE		0
@@ -368,14 +372,16 @@ struct vms_private_data_struct *bfd_vms_
 
 static int vms_get_remaining_object_record (bfd *, unsigned int);
 static bfd_boolean _bfd_vms_slurp_object_records (bfd * abfd);
-static void alpha_vms_add_fixup_lp (struct bfd_link_info *, bfd *, bfd *);
-static void alpha_vms_add_fixup_ca (struct bfd_link_info *, bfd *, bfd *);
-static void alpha_vms_add_fixup_qr (struct bfd_link_info *, bfd *, bfd *,
-				    bfd_vma);
-static void alpha_vms_add_fixup_lr (struct bfd_link_info *, unsigned int,
-				    bfd_vma);
-static void alpha_vms_add_lw_reloc (struct bfd_link_info *);
-static void alpha_vms_add_qw_reloc (struct bfd_link_info *);
+static bfd_boolean alpha_vms_add_fixup_lp (struct bfd_link_info *,
+					   bfd *, bfd *);
+static bfd_boolean alpha_vms_add_fixup_ca (struct bfd_link_info *,
+					   bfd *, bfd *);
+static bfd_boolean alpha_vms_add_fixup_qr (struct bfd_link_info *,
+					   bfd *, bfd *, bfd_vma);
+static bfd_boolean alpha_vms_add_fixup_lr (struct bfd_link_info *,
+					   unsigned int, bfd_vma);
+static bfd_boolean alpha_vms_add_lw_reloc (struct bfd_link_info *);
+static bfd_boolean alpha_vms_add_qw_reloc (struct bfd_link_info *);
 
 struct vector_type
 {
@@ -401,17 +407,12 @@ struct vector_type
 
 /* Be sure there is room for a new element.  */
 
-static void vector_grow1 (struct vector_type *vec, size_t elsz);
+static void *vector_grow1 (struct vector_type *vec, size_t elsz);
 
 /* Allocate room for a new element and return its address.  */
 
 #define VEC_APPEND(VEC, TYPE)					\
-  (vector_grow1 (&VEC, sizeof (TYPE)), &VEC_EL(VEC, TYPE, (VEC).nbr_el++))
-
-/* Append an element.  */
-
-#define VEC_APPEND_EL(VEC, TYPE, EL)		\
-  (*(VEC_APPEND (VEC, TYPE)) = EL)
+  ((TYPE *) vector_grow1 (&VEC, sizeof (TYPE)))
 
 struct alpha_vms_vma_ref
 {
@@ -503,6 +504,7 @@ _bfd_vms_slurp_eihd (bfd *abfd, unsigned
   vms_debug2 ((4, "EIHD size %d imgtype %d symvva 0x%lx eisd %d eihs %d\n",
 	       size, imgtype, (unsigned long)symvva,
 	       *eisd_offset, *eihs_offset));
+  (void) size;
 
   return TRUE;
 }
@@ -529,12 +531,12 @@ _bfd_vms_slurp_eisd (bfd *abfd, unsigned
       asection *section;
       flagword bfd_flags;
 
-      /* PR 17512: file: 3d9e9fe9.
-	 12 is the offset of the eisdsize field from the start of the record (8)
-	 plus the size of the eisdsize field (4).  */
-      if (offset >= PRIV (recrd.rec_size) - 12)
+      /* PR 17512: file: 3d9e9fe9.  */
+      if (offset > PRIV (recrd.rec_size)
+	  || (PRIV (recrd.rec_size) - offset
+	      < offsetof (struct vms_eisd, eisdsize) + 4))
 	return FALSE;
-      eisd = (struct vms_eisd *)(PRIV (recrd.rec) + offset);
+      eisd = (struct vms_eisd *) (PRIV (recrd.rec) + offset);
       rec_size = bfd_getl32 (eisd->eisdsize);
       if (rec_size == 0)
 	break;
@@ -547,11 +549,10 @@ _bfd_vms_slurp_eisd (bfd *abfd, unsigned
 	}
 
       /* Make sure that there is enough data present in the record.  */
-      /* FIXME: Should we use sizeof (struct vms_eisd) rather than just 32 here ?  */
-      if (rec_size < 32)
+      if (rec_size < offsetof (struct vms_eisd, type) + 1)
 	return FALSE;
       /* Make sure that the record is not too big either.  */
-      if (offset + rec_size >= PRIV (recrd.rec_size))
+      if (rec_size > PRIV (recrd.rec_size) - offset)
 	return FALSE;
 
       offset += rec_size;
@@ -592,13 +593,16 @@ _bfd_vms_slurp_eisd (bfd *abfd, unsigned
 
       if (flags & EISD__M_GBL)
 	{
-	  if (rec_size < offsetof (struct vms_eisd, gblnam))
+	  if (rec_size <= offsetof (struct vms_eisd, gblnam))
 	    return FALSE;
 	  else if (rec_size < sizeof (struct vms_eisd))
-	    name = _bfd_vms_save_counted_string (eisd->gblnam,
+	    name = _bfd_vms_save_counted_string (abfd, eisd->gblnam,
 						 rec_size - offsetof (struct vms_eisd, gblnam));
 	  else
-	    name = _bfd_vms_save_counted_string (eisd->gblnam, EISD__K_GBLNAMLEN);
+	    name = _bfd_vms_save_counted_string (abfd, eisd->gblnam,
+						 EISD__K_GBLNAMLEN);
+	  if (name == NULL || name[0] == 0)
+	    return FALSE;
 	  bfd_flags |= SEC_COFF_SHARED_LIBRARY;
 	  bfd_flags &= ~(SEC_ALLOC | SEC_LOAD);
 	}
@@ -610,7 +614,9 @@ _bfd_vms_slurp_eisd (bfd *abfd, unsigned
 	{
 	  const char *pfx;
 
-	  name = (char*) bfd_alloc (abfd, 32);
+	  name = (char *) bfd_alloc (abfd, 32);
+	  if (name == NULL)
+	    return FALSE;
 	  if (flags & EISD__M_DZRO)
 	    pfx = "BSS";
 	  else if (flags & EISD__M_EXE)
@@ -861,7 +867,7 @@ vms_get_remaining_object_record (bfd *ab
   if (to_read > PRIV (recrd.buf_size))
     {
       PRIV (recrd.buf)
-	= (unsigned char *) bfd_realloc (PRIV (recrd.buf), to_read);
+	= (unsigned char *) bfd_realloc_or_free (PRIV (recrd.buf), to_read);
       if (PRIV (recrd.buf) == NULL)
 	return 0;
       PRIV (recrd.buf_size) = to_read;
@@ -924,36 +930,39 @@ _bfd_vms_slurp_ehdr (bfd *abfd)
       PRIV (hdr_data).hdr_l_recsiz = bfd_getl32 (vms_rec + 16);
       if ((vms_rec + 20 + vms_rec[20] + 1) >= end)
 	goto fail;
-      PRIV (hdr_data).hdr_t_name   = _bfd_vms_save_counted_string (vms_rec + 20, vms_rec[20]);
+      PRIV (hdr_data).hdr_t_name
+	= _bfd_vms_save_counted_string (abfd, vms_rec + 20, vms_rec[20]);
       ptr = vms_rec + 20 + vms_rec[20] + 1;
       if ((ptr + *ptr + 1) >= end)
 	goto fail;
-      PRIV (hdr_data).hdr_t_version =_bfd_vms_save_counted_string (ptr, *ptr);
+      PRIV (hdr_data).hdr_t_version
+	= _bfd_vms_save_counted_string (abfd, ptr, *ptr);
       ptr += *ptr + 1;
       if (ptr + 17 >= end)
 	goto fail;
-      PRIV (hdr_data).hdr_t_date = _bfd_vms_save_sized_string (ptr, 17);
+      PRIV (hdr_data).hdr_t_date
+	= _bfd_vms_save_sized_string (abfd, ptr, 17);
       break;
 
     case EMH__C_LNM:
       if (vms_rec + PRIV (recrd.rec_size - 6) > end)
 	goto fail;
-      PRIV (hdr_data).hdr_c_lnm =
-	_bfd_vms_save_sized_string (vms_rec, PRIV (recrd.rec_size - 6));
+      PRIV (hdr_data).hdr_c_lnm
+	= _bfd_vms_save_sized_string (abfd, vms_rec, PRIV (recrd.rec_size - 6));
       break;
 
     case EMH__C_SRC:
       if (vms_rec + PRIV (recrd.rec_size - 6) > end)
 	goto fail;
-      PRIV (hdr_data).hdr_c_src =
-	_bfd_vms_save_sized_string (vms_rec, PRIV (recrd.rec_size - 6));
+      PRIV (hdr_data).hdr_c_src
+	= _bfd_vms_save_sized_string (abfd, vms_rec, PRIV (recrd.rec_size - 6));
       break;
 
     case EMH__C_TTL:
       if (vms_rec + PRIV (recrd.rec_size - 6) > end)
 	goto fail;
-      PRIV (hdr_data).hdr_c_ttl =
-	_bfd_vms_save_sized_string (vms_rec, PRIV (recrd.rec_size - 6));
+      PRIV (hdr_data).hdr_c_ttl
+	= _bfd_vms_save_sized_string (abfd, vms_rec, PRIV (recrd.rec_size - 6));
       break;
 
     case EMH__C_CPR:
@@ -1121,7 +1130,7 @@ add_symbol_entry (bfd *abfd, struct vms_
       else
 	{
 	  PRIV (max_sym_count) *= 2;
-	  PRIV (syms) = bfd_realloc
+	  PRIV (syms) = bfd_realloc_or_free
 	    (PRIV (syms),
 	     (PRIV (max_sym_count) * sizeof (struct vms_symbol_entry *)));
 	}
@@ -1137,12 +1146,20 @@ add_symbol_entry (bfd *abfd, struct vms_
    Return NULL in case of error.  */
 
 static struct vms_symbol_entry *
-add_symbol (bfd *abfd, const unsigned char *ascic)
+add_symbol (bfd *abfd, const unsigned char *ascic, unsigned int max)
 {
   struct vms_symbol_entry *entry;
-  int len;
+  unsigned int len;
 
   len = *ascic++;
+  max -= 1;
+  if (len > max)
+    {
+      _bfd_error_handler (_("record is too small for symbol name length"));
+      bfd_set_error (bfd_error_bad_value);
+      return NULL;
+    }
+
   entry = (struct vms_symbol_entry *)bfd_zalloc (abfd, sizeof (*entry) + len);
   if (entry == NULL)
     return NULL;
@@ -1164,7 +1181,8 @@ _bfd_vms_slurp_egsd (bfd *abfd)
   int gsd_type;
   unsigned int gsd_size;
   unsigned char *vms_rec;
-  unsigned long base_addr;
+  bfd_vma base_addr;
+  long psindx;
 
   vms_debug2 ((2, "EGSD\n"));
 
@@ -1180,7 +1198,7 @@ _bfd_vms_slurp_egsd (bfd *abfd)
   PRIV (recrd.rec_size) -= 8;
 
   /* Calculate base address for each section.  */
-  base_addr = 0L;
+  base_addr = 0;
 
   while (PRIV (recrd.rec_size) > 4)
     {
@@ -1194,16 +1212,19 @@ _bfd_vms_slurp_egsd (bfd *abfd)
       /* PR 21615: Check for size overflow.  */
       if (PRIV (recrd.rec_size) < gsd_size)
 	{
-	  _bfd_error_handler (_("corrupt EGSD record: size (%#x) is larger than remaining space (%#x)"),
-			      gsd_size, PRIV (recrd.rec_size));
+	  _bfd_error_handler (_("corrupt EGSD record type %d: size (%#x) "
+				"is larger than remaining space (%#x)"),
+			      gsd_type, gsd_size, PRIV (recrd.rec_size));
 	  bfd_set_error (bfd_error_bad_value);
 	  return FALSE;
 	}
 
       if (gsd_size < 4)
 	{
-	  _bfd_error_handler (_("corrupt EGSD record: size (%#x) is too small"),
-			      gsd_size);
+	too_small:
+	  _bfd_error_handler (_("corrupt EGSD record type %d: size (%#x) "
+				"is too small"),
+			      gsd_type, gsd_size);
 	  bfd_set_error (bfd_error_bad_value);
 	  return FALSE;
 	}
@@ -1213,10 +1234,12 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 	case EGSD__C_PSC:
 	  /* Program section definition.  */
 	  {
-	    struct vms_egps *egps = (struct vms_egps *)vms_rec;
+	    struct vms_egps *egps = (struct vms_egps *) vms_rec;
 	    flagword new_flags, vms_flags;
 	    asection *section;
 
+	    if (offsetof (struct vms_egps, flags) + 2 > gsd_size)
+	      goto too_small;
 	    vms_flags = bfd_getl16 (egps->flags);
 
 	    if ((vms_flags & EGPS__V_REL) == 0)
@@ -1228,9 +1251,15 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 	    else
 	      {
 		char *name;
-		unsigned long align_addr;
+		bfd_vma align_addr;
+		size_t left;
 
-		name = _bfd_vms_save_counted_string (&egps->namlng, gsd_size - 4);
+		if (offsetof (struct vms_egps, namlng) >= gsd_size)
+		  goto too_small;
+		left = gsd_size - offsetof (struct vms_egps, namlng);
+		name = _bfd_vms_save_counted_string (abfd, &egps->namlng, left);
+		if (name == NULL || name[0] == 0)
+		  return FALSE;
 
 		section = bfd_make_section (abfd, name);
 		if (!section)
@@ -1238,12 +1267,13 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 
 		section->filepos = 0;
 		section->size = bfd_getl32 (egps->alloc);
-		section->alignment_power = egps->align;
+		section->alignment_power = egps->align & 31;
 
 		vms_section_data (section)->flags = vms_flags;
 		vms_section_data (section)->no_flags = 0;
 
-		new_flags = vms_secflag_by_name (evax_section_flags, name,
+		new_flags = vms_secflag_by_name (evax_section_flags,
+						 section->name,
 						 section->size > 0);
 		if (section->size > 0)
 		  new_flags |= SEC_LOAD;
@@ -1265,10 +1295,9 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 		  return FALSE;
 
 		/* Give a non-overlapping vma to non absolute sections.  */
-		align_addr = (1 << section->alignment_power);
-		if ((base_addr % align_addr) != 0)
-		  base_addr += (align_addr - (base_addr % align_addr));
-		section->vma = (bfd_vma)base_addr;
+		align_addr = (bfd_vma) 1 << section->alignment_power;
+		base_addr = (base_addr + align_addr - 1) & -align_addr;
+		section->vma = base_addr;
 		base_addr += section->size;
 	      }
 
@@ -1292,18 +1321,22 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 
 	case EGSD__C_SYM:
 	  {
-	    int nameoff;
+	    unsigned int nameoff;
 	    struct vms_symbol_entry *entry;
 	    struct vms_egsy *egsy = (struct vms_egsy *) vms_rec;
 	    flagword old_flags;
 
+	    if (offsetof (struct vms_egsy, flags) + 2 > gsd_size)
+	      goto too_small;
 	    old_flags = bfd_getl16 (egsy->flags);
 	    if (old_flags & EGSY__V_DEF)
 	      nameoff = ESDF__B_NAMLNG;
 	    else
 	      nameoff = ESRF__B_NAMLNG;
 
-	    entry = add_symbol (abfd, vms_rec + nameoff);
+	    if (nameoff >= gsd_size)
+	      goto too_small;
+	    entry = add_symbol (abfd, vms_rec + nameoff, gsd_size - nameoff);
 	    if (entry == NULL)
 	      return FALSE;
 
@@ -1320,8 +1353,7 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 
 	    if (old_flags & EGSY__V_DEF)
 	      {
-		struct vms_esdf *esdf = (struct vms_esdf *)vms_rec;
-		long psindx;
+		struct vms_esdf *esdf = (struct vms_esdf *) vms_rec;
 
 		entry->value = bfd_getl64 (esdf->value);
 		if (PRIV (sections) == NULL)
@@ -1331,7 +1363,9 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 		/* PR 21813: Check for an out of range index.  */
 		if (psindx < 0 || psindx >= (int) PRIV (section_count))
 		  {
-		    _bfd_error_handler (_("corrupt EGSD record: its psindx field is too big (%#lx)"),
+		  bad_psindx:
+		    _bfd_error_handler (_("corrupt EGSD record: its psindx "
+					  "field is too big (%#lx)"),
 					psindx);
 		    bfd_set_error (bfd_error_bad_value);
 		    return FALSE;
@@ -1344,14 +1378,9 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 
 		    entry->code_value = bfd_getl64 (esdf->code_address);
 		    psindx = bfd_getl32 (esdf->ca_psindx);
-		/* PR 21813: Check for an out of range index.  */
+		    /* PR 21813: Check for an out of range index.  */
 		    if (psindx < 0 || psindx >= (int) PRIV (section_count))
-		      {
-			_bfd_error_handler (_("corrupt EGSD record: its psindx field is too big (%#lx)"),
-					    psindx);
-			bfd_set_error (bfd_error_bad_value);
-			return FALSE;
-		      }
+		      goto bad_psindx;
 		    entry->code_section = PRIV (sections)[psindx];
 		  }
 	      }
@@ -1363,11 +1392,13 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 	    struct vms_symbol_entry *entry;
 	    struct vms_egst *egst = (struct vms_egst *)vms_rec;
 	    flagword old_flags;
+	    unsigned int nameoff = offsetof (struct vms_egst, namlng);
 
 	    old_flags = bfd_getl16 (egst->header.flags);
 
-	    entry = add_symbol (abfd, &egst->namlng);
-
+	    if (nameoff >= gsd_size)
+	      goto too_small;
+	    entry = add_symbol (abfd, &egst->namlng, gsd_size - nameoff);
 	    if (entry == NULL)
 	      return FALSE;
 
@@ -1379,19 +1410,12 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 
 	    if (old_flags & EGSY__V_REL)
 	      {
-		long psindx;
-
 		if (PRIV (sections) == NULL)
 		  return FALSE;
 		psindx = bfd_getl32 (egst->psindx);
 		/* PR 21813: Check for an out of range index.  */
 		if (psindx < 0 || psindx >= (int) PRIV (section_count))
-		  {
-		    _bfd_error_handler (_("corrupt EGSD record: its psindx field is too big (%#lx)"),
-					psindx);
-		    bfd_set_error (bfd_error_bad_value);
-		    return FALSE;
-		  }
+		  goto bad_psindx;
 		entry->section = PRIV (sections)[psindx];
 	      }
 	    else
@@ -1437,7 +1461,7 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 
 /* Push value and section index.  */
 
-static void
+static bfd_boolean
 _bfd_vms_push (bfd *abfd, bfd_vma val, unsigned int reloc)
 {
   vms_debug2 ((4, "<push %08lx (0x%08x) at %d>\n",
@@ -1450,26 +1474,28 @@ _bfd_vms_push (bfd *abfd, bfd_vma val, u
     {
       bfd_set_error (bfd_error_bad_value);
       _bfd_error_handler (_("stack overflow (%d) in _bfd_vms_push"), PRIV (stackptr));
-      exit (1);
+      return FALSE;
     }
+  return TRUE;
 }
 
 /* Pop value and section index.  */
 
-static void
+static bfd_boolean
 _bfd_vms_pop (bfd *abfd, bfd_vma *val, unsigned int *rel)
 {
   if (PRIV (stackptr) == 0)
     {
       bfd_set_error (bfd_error_bad_value);
       _bfd_error_handler (_("stack underflow in _bfd_vms_pop"));
-      exit (1);
+      return FALSE;
     }
   PRIV (stackptr)--;
   *val = PRIV (stack[PRIV (stackptr)]).value;
   *rel = PRIV (stack[PRIV (stackptr)]).reloc;
 
   vms_debug2 ((4, "<pop %08lx (0x%08x)>\n", (unsigned long)*val, *rel));
+  return TRUE;
 }
 
 /* Routines to fill sections contents during tir/etir read.  */
@@ -1526,40 +1552,62 @@ image_inc_ptr (bfd *abfd, bfd_vma offset
 
 /* Save current DST location counter under specified index.  */
 
-static void
+static bfd_boolean
 dst_define_location (bfd *abfd, unsigned int loc)
 {
   vms_debug2 ((4, "dst_define_location (%d)\n", (int)loc));
 
+  if (loc > 1 << 24)
+    {
+      /* 16M entries ought to be plenty.  */
+      bfd_set_error (bfd_error_bad_value);
+      _bfd_error_handler (_("dst_define_location %u too large"), loc);
+      return FALSE;
+    }
+
   /* Grow the ptr offset table if necessary.  */
   if (loc + 1 > PRIV (dst_ptr_offsets_count))
     {
-      PRIV (dst_ptr_offsets) = bfd_realloc (PRIV (dst_ptr_offsets),
-					   (loc + 1) * sizeof (unsigned int));
+      PRIV (dst_ptr_offsets)
+	= bfd_realloc_or_free (PRIV (dst_ptr_offsets),
+			       (loc + 1) * sizeof (unsigned int));
+      if (PRIV (dst_ptr_offsets) == NULL)
+	return FALSE;
       PRIV (dst_ptr_offsets_count) = loc + 1;
     }
 
   PRIV (dst_ptr_offsets)[loc] = PRIV (image_offset);
+  return TRUE;
 }
 
 /* Restore saved DST location counter from specified index.  */
 
-static void
+static bfd_boolean
 dst_restore_location (bfd *abfd, unsigned int loc)
 {
   vms_debug2 ((4, "dst_restore_location (%d)\n", (int)loc));
 
-  PRIV (image_offset) = PRIV (dst_ptr_offsets)[loc];
+  if (loc < PRIV (dst_ptr_offsets_count))
+    {
+      PRIV (image_offset) = PRIV (dst_ptr_offsets)[loc];
+      return TRUE;
+    }
+  return FALSE;
 }
 
 /* Retrieve saved DST location counter from specified index.  */
 
-static unsigned int
-dst_retrieve_location (bfd *abfd, unsigned int loc)
+static bfd_boolean
+dst_retrieve_location (bfd *abfd, bfd_vma *loc)
 {
-  vms_debug2 ((4, "dst_retrieve_location (%d)\n", (int)loc));
+  vms_debug2 ((4, "dst_retrieve_location (%d)\n", (int) *loc));
 
-  return PRIV (dst_ptr_offsets)[loc];
+  if (*loc < PRIV (dst_ptr_offsets_count))
+    {
+      *loc = PRIV (dst_ptr_offsets)[*loc];
+      return TRUE;
+    }
+  return FALSE;
 }
 
 /* Write multiple bytes to section image.  */
@@ -1567,29 +1615,39 @@ dst_retrieve_location (bfd *abfd, unsign
 static bfd_boolean
 image_write (bfd *abfd, unsigned char *ptr, unsigned int size)
 {
+  asection *sec = PRIV (image_section);
+  size_t off = PRIV (image_offset);
+
+  /* Check bounds.  */
+  if (off > sec->size
+      || size > sec->size - off)
+    {
+      bfd_set_error (bfd_error_bad_value);
+      return FALSE;
+    }
+
 #if VMS_DEBUG
   _bfd_vms_debug (8, "image_write from (%p, %d) to (%ld)\n", ptr, size,
-		  (long)PRIV (image_offset));
-  _bfd_hexdump (9, ptr, size, 0);
+		  (long) off));
 #endif
 
   if (PRIV (image_section)->contents != NULL)
+    memcpy (sec->contents + off, ptr, size);
+  else
     {
-      asection *sec = PRIV (image_section);
-      file_ptr off = PRIV (image_offset);
-
-      /* Check bounds.  */
-      if (off > (file_ptr)sec->size
-	  || size > (file_ptr)sec->size
-	  || off + size > (file_ptr)sec->size)
-	{
-	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
-	}
-
-      memcpy (sec->contents + off, ptr, size);
+      unsigned int i;
+      for (i = 0; i < size; i++)
+	if (ptr[i] != 0)
+	  {
+	    bfd_set_error (bfd_error_bad_value);
+	    return FALSE;
+	  }
     }
 
+#if VMS_DEBUG
+  _bfd_hexdump (9, ptr, size, 0);
+#endif
+
   PRIV (image_offset) += size;
   return TRUE;
 }
@@ -1837,10 +1895,10 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
   unsigned char *ptr;
   unsigned int length;
   unsigned char *maxptr;
-  bfd_vma op1;
-  bfd_vma op2;
-  unsigned int rel1;
-  unsigned int rel2;
+  bfd_vma op1 = 0;
+  bfd_vma op2 = 0;
+  unsigned int rel1 = RELC_NONE;
+  unsigned int rel2 = RELC_NONE;
   struct alpha_vms_link_hash_entry *h;
 
   PRIV (recrd.rec) += ETIR__C_HEADER_SIZE;
@@ -1854,24 +1912,29 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 
   while (ptr < maxptr)
     {
-      int cmd = bfd_getl16 (ptr);
-      int cmd_length = bfd_getl16 (ptr + 2);
+      int cmd, cmd_length;
 
-      ptr += 4;
+      if (ptr + 4 > maxptr)
+	goto corrupt_etir;
+
+      cmd = bfd_getl16 (ptr);
+      cmd_length = bfd_getl16 (ptr + 2);
 
       /* PR 21589 and 21579: Check for a corrupt ETIR record.  */
-      if (cmd_length < 4 || (ptr + cmd_length > maxptr + 4))
+      if (cmd_length < 4 || ptr + cmd_length > maxptr)
 	{
 	corrupt_etir:
 	  _bfd_error_handler (_("corrupt ETIR record encountered"));
 	  bfd_set_error (bfd_error_bad_value);
 	  return FALSE;
 	}
+      ptr += 4;
+      cmd_length -= 4;
 
 #if VMS_DEBUG
       _bfd_vms_debug (4, "etir: %s(%d)\n",
 		      _bfd_vms_etir_name (cmd), cmd);
-      _bfd_hexdump (8, ptr, cmd_length - 4, 0);
+      _bfd_hexdump (8, ptr, cmd_length, 0);
 #endif
 
       switch (cmd)
@@ -1881,8 +1944,9 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 
 	     stack 32 bit value of symbol (high bits set to 0).  */
 	case ETIR__C_STA_GBL:
-	  _bfd_vms_get_value (abfd, ptr, maxptr, info, &op1, &h);
-	  _bfd_vms_push (abfd, op1, alpha_vms_sym_to_ctxt (h));
+	  _bfd_vms_get_value (abfd, ptr, ptr + cmd_length, info, &op1, &h);
+	  if (!_bfd_vms_push (abfd, op1, alpha_vms_sym_to_ctxt (h)))
+	    return FALSE;
 	  break;
 
 	  /* Stack longword
@@ -1890,9 +1954,10 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 
 	     stack 32 bit value, sign extend to 64 bit.  */
 	case ETIR__C_STA_LW:
-	  if (ptr + 4 >= maxptr)
+	  if (cmd_length < 4)
 	    goto corrupt_etir;
-	  _bfd_vms_push (abfd, bfd_getl32 (ptr), RELC_NONE);
+	  if (!_bfd_vms_push (abfd, bfd_getl32 (ptr), RELC_NONE))
+	    return FALSE;
 	  break;
 
 	  /* Stack quadword
@@ -1900,9 +1965,10 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 
 	     stack 64 bit value of symbol.  */
 	case ETIR__C_STA_QW:
-	  if (ptr + 8 >= maxptr)
+	  if (cmd_length < 8)
 	    goto corrupt_etir;
-	  _bfd_vms_push (abfd, bfd_getl64 (ptr), RELC_NONE);
+	  if (!_bfd_vms_push (abfd, bfd_getl64 (ptr), RELC_NONE))
+	    return FALSE;
 	  break;
 
 	  /* Stack psect base plus quadword offset
@@ -1915,7 +1981,7 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	  {
 	    int psect;
 
-	    if (ptr + 12 >= maxptr)
+	    if (cmd_length < 12)
 	      goto corrupt_etir;
 	    psect = bfd_getl32 (ptr);
 	    if ((unsigned int) psect >= PRIV (section_count))
@@ -1926,7 +1992,8 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 		return FALSE;
 	      }
 	    op1 = bfd_getl64 (ptr + 4);
-	    _bfd_vms_push (abfd, op1, psect | RELC_SEC_BASE);
+	    if (!_bfd_vms_push (abfd, op1, psect | RELC_SEC_BASE))
+	      return FALSE;
 	  }
 	  break;
 
@@ -1941,25 +2008,30 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	  /* Store byte: pop stack, write byte
 	     arg: -.  */
 	case ETIR__C_STO_B:
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (rel1 != RELC_NONE)
 	    goto bad_context;
-	  image_write_b (abfd, (unsigned int) op1 & 0xff);
+	  if (!image_write_b (abfd, (unsigned int) op1 & 0xff))
+	    return FALSE;
 	  break;
 
 	  /* Store word: pop stack, write word
 	     arg: -.  */
 	case ETIR__C_STO_W:
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (rel1 != RELC_NONE)
 	    goto bad_context;
-	  image_write_w (abfd, (unsigned int) op1 & 0xffff);
+	  if (!image_write_w (abfd, (unsigned int) op1 & 0xffff))
+	    return FALSE;
 	  break;
 
 	  /* Store longword: pop stack, write longword
 	     arg: -.  */
 	case ETIR__C_STO_LW:
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (rel1 & RELC_SEC_BASE)
 	    {
 	      op1 = alpha_vms_fix_sec_rel (abfd, info, rel1, op1);
@@ -1967,22 +2039,26 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	    }
 	  else if (rel1 & RELC_SHR_BASE)
 	    {
-	      alpha_vms_add_fixup_lr (info, rel1 & RELC_MASK, op1);
+	      if (!alpha_vms_add_fixup_lr (info, rel1 & RELC_MASK, op1))
+		return FALSE;
 	      rel1 = RELC_NONE;
 	    }
 	  if (rel1 != RELC_NONE)
 	    {
 	      if (rel1 != RELC_REL)
 		abort ();
-	      alpha_vms_add_lw_reloc (info);
+	      if (!alpha_vms_add_lw_reloc (info))
+		return FALSE;
 	    }
-	  image_write_l (abfd, op1);
+	  if (!image_write_l (abfd, op1))
+	    return FALSE;
 	  break;
 
 	  /* Store quadword: pop stack, write quadword
 	     arg: -.  */
 	case ETIR__C_STO_QW:
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (rel1 & RELC_SEC_BASE)
 	    {
 	      op1 = alpha_vms_fix_sec_rel (abfd, info, rel1, op1);
@@ -1994,9 +2070,11 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	    {
 	      if (rel1 != RELC_REL)
 		abort ();
-	      alpha_vms_add_qw_reloc (info);
+	      if (!alpha_vms_add_qw_reloc (info))
+		return FALSE;
 	    }
-	  image_write_q (abfd, op1);
+	  if (!image_write_q (abfd, op1))
+	    return FALSE;
 	  break;
 
 	  /* Store immediate repeated: pop stack for repeat count
@@ -2006,43 +2084,53 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	  {
 	    int size;
 
-	    if (ptr + 4 >= maxptr)
+	    if (cmd_length < 4)
 	      goto corrupt_etir;
 	    size = bfd_getl32 (ptr);
-	    _bfd_vms_pop (abfd, &op1, &rel1);
+	    if (size > cmd_length - 4)
+	      goto corrupt_etir;
+	    if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	      return FALSE;
 	    if (rel1 != RELC_NONE)
 	      goto bad_context;
+	    if (size == 0)
+	      break;
+	    op1 &= 0xffffffff;
 	    while (op1-- > 0)
-	      image_write (abfd, ptr + 4, size);
+	      if (!image_write (abfd, ptr + 4, size))
+		return FALSE;
 	  }
 	  break;
 
 	  /* Store global: write symbol value
 	     arg: cs	global symbol name.  */
 	case ETIR__C_STO_GBL:
-	  _bfd_vms_get_value (abfd, ptr, maxptr, info, &op1, &h);
+	  _bfd_vms_get_value (abfd, ptr, ptr + cmd_length, info, &op1, &h);
 	  if (h && h->sym)
 	    {
 	      if (h->sym->typ == EGSD__C_SYMG)
 		{
-		  alpha_vms_add_fixup_qr
-		    (info, abfd, h->sym->owner, h->sym->symbol_vector);
+		  if (!alpha_vms_add_fixup_qr (info, abfd, h->sym->owner,
+					       h->sym->symbol_vector))
+		    return FALSE;
 		  op1 = 0;
 		}
 	      else
 		{
 		  op1 = alpha_vms_get_sym_value (h->sym->section,
 						 h->sym->value);
-		  alpha_vms_add_qw_reloc (info);
+		  if (!alpha_vms_add_qw_reloc (info))
+		    return FALSE;
 		}
 	    }
-	  image_write_q (abfd, op1);
+	  if (!image_write_q (abfd, op1))
+	    return FALSE;
 	  break;
 
 	  /* Store code address: write address of entry point
 	     arg: cs	global symbol name (procedure).  */
 	case ETIR__C_STO_CA:
-	  _bfd_vms_get_value (abfd, ptr, maxptr, info, &op1, &h);
+	  _bfd_vms_get_value (abfd, ptr, ptr + cmd_length, info, &op1, &h);
 	  if (h && h->sym)
 	    {
 	      if (h->sym->flags & EGSY__V_NORM)
@@ -2050,14 +2138,16 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 		  /* That's really a procedure.  */
 		  if (h->sym->typ == EGSD__C_SYMG)
 		    {
-		      alpha_vms_add_fixup_ca (info, abfd, h->sym->owner);
+		      if (!alpha_vms_add_fixup_ca (info, abfd, h->sym->owner))
+			return FALSE;
 		      op1 = h->sym->symbol_vector;
 		    }
 		  else
 		    {
 		      op1 = alpha_vms_get_sym_value (h->sym->code_section,
 						     h->sym->code_value);
-		      alpha_vms_add_qw_reloc (info);
+		      if (!alpha_vms_add_qw_reloc (info))
+			return FALSE;
 		    }
 		}
 	      else
@@ -2066,20 +2156,23 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 		  abort ();
 		}
 	    }
-	  image_write_q (abfd, op1);
+	  if (!image_write_q (abfd, op1))
+	    return FALSE;
 	  break;
 
 	  /* Store offset to psect: pop stack, add low 32 bits to base of psect
 	     arg: none.  */
 	case ETIR__C_STO_OFF:
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 
 	  if (!(rel1 & RELC_SEC_BASE))
 	    abort ();
 
 	  op1 = alpha_vms_fix_sec_rel (abfd, info, rel1, op1);
 	  rel1 = RELC_REL;
-	  image_write_q (abfd, op1);
+	  if (!image_write_q (abfd, op1))
+	    return FALSE;
 	  break;
 
 	  /* Store immediate
@@ -2089,10 +2182,11 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	  {
 	    unsigned int size;
 
-	    if (ptr + 4 >= maxptr)
+	    if (cmd_length < 4)
 	      goto corrupt_etir;
 	    size = bfd_getl32 (ptr);
-	    image_write (abfd, ptr + 4, size);
+	    if (!image_write (abfd, ptr + 4, size))
+	      return FALSE;
 	  }
 	  break;
 
@@ -2103,11 +2197,12 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	     store global longword: store 32bit value of symbol
 	     arg: cs	symbol name.  */
 	case ETIR__C_STO_GBL_LW:
-	  _bfd_vms_get_value (abfd, ptr, maxptr, info, &op1, &h);
+	  _bfd_vms_get_value (abfd, ptr, ptr + cmd_length, info, &op1, &h);
 #if 0
 	  abort ();
 #endif
-	  image_write_l (abfd, op1);
+	  if (!image_write_l (abfd, op1))
+	    return FALSE;
 	  break;
 
 	case ETIR__C_STO_RB:
@@ -2156,12 +2251,15 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	     da	signature.  */
 
 	case ETIR__C_STC_LP_PSB:
-	  _bfd_vms_get_value (abfd, ptr + 4, maxptr, info, &op1, &h);
+	  if (cmd_length < 4)
+	    goto corrupt_etir;
+	  _bfd_vms_get_value (abfd, ptr + 4, ptr + cmd_length, info, &op1, &h);
 	  if (h && h->sym)
 	    {
 	      if (h->sym->typ == EGSD__C_SYMG)
 		{
-		  alpha_vms_add_fixup_lp (info, abfd, h->sym->owner);
+		  if (!alpha_vms_add_fixup_lp (info, abfd, h->sym->owner))
+		    return FALSE;
 		  op1 = h->sym->symbol_vector;
 		  op2 = 0;
 		}
@@ -2179,8 +2277,9 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	      op1 = 0;
 	      op2 = 0;
 	    }
-	  image_write_q (abfd, op1);
-	  image_write_q (abfd, op2);
+	  if (!image_write_q (abfd, op1)
+	      || !image_write_q (abfd, op2))
+	    return FALSE;
 	  break;
 
 	  /* 205 Store-conditional NOP at address of global
@@ -2243,7 +2342,8 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	  /* Det relocation base: pop stack, set image location counter
 	     arg: none.  */
 	case ETIR__C_CTL_SETRB:
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (!(rel1 & RELC_SEC_BASE))
 	    abort ();
 	  image_set_ptr (abfd, op1, rel1 & RELC_MASK, info);
@@ -2252,7 +2352,7 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	  /* Augment relocation base: increment image location counter by offset
 	     arg: lw	offset value.  */
 	case ETIR__C_CTL_AUGRB:
-	  if (ptr + 4 >= maxptr)
+	  if (cmd_length < 4)
 	    goto corrupt_etir;
 	  op1 = bfd_getl32 (ptr);
 	  image_inc_ptr (abfd, op1);
@@ -2261,46 +2361,65 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	  /* Define location: pop index, save location counter under index
 	     arg: none.  */
 	case ETIR__C_CTL_DFLOC:
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (rel1 != RELC_NONE)
 	    goto bad_context;
-	  dst_define_location (abfd, op1);
+	  if (!dst_define_location (abfd, op1))
+	    return FALSE;
 	  break;
 
 	  /* Set location: pop index, restore location counter from index
 	     arg: none.  */
 	case ETIR__C_CTL_STLOC:
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (rel1 != RELC_NONE)
 	    goto bad_context;
-	  dst_restore_location (abfd, op1);
+	  if (!dst_restore_location (abfd, op1))
+	    {
+	      bfd_set_error (bfd_error_bad_value);
+	      _bfd_error_handler (_("invalid %s"), "ETIR__C_CTL_STLOC");
+	      return FALSE;
+	    }
 	  break;
 
 	  /* Stack defined location: pop index, push location counter from index
 	     arg: none.  */
 	case ETIR__C_CTL_STKDL:
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (rel1 != RELC_NONE)
 	    goto bad_context;
-	  _bfd_vms_push (abfd, dst_retrieve_location (abfd, op1), RELC_NONE);
+	  if (!dst_retrieve_location (abfd, &op1))
+	    {
+	      bfd_set_error (bfd_error_bad_value);
+	      _bfd_error_handler (_("invalid %s"), "ETIR__C_CTL_STKDL");
+	      return FALSE;
+	    }
+	  if (!_bfd_vms_push (abfd, op1, RELC_NONE))
+	    return FALSE;
 	  break;
 
 	case ETIR__C_OPR_NOP:      /* No-op.  */
 	  break;
 
 	case ETIR__C_OPR_ADD:      /* Add.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
-	  _bfd_vms_pop (abfd, &op2, &rel2);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1)
+	      || !_bfd_vms_pop (abfd, &op2, &rel2))
+	    return FALSE;
 	  if (rel1 == RELC_NONE && rel2 != RELC_NONE)
 	    rel1 = rel2;
 	  else if (rel1 != RELC_NONE && rel2 != RELC_NONE)
 	    goto bad_context;
-	  _bfd_vms_push (abfd, op1 + op2, rel1);
+	  if (!_bfd_vms_push (abfd, op1 + op2, rel1))
+	    return FALSE;
 	  break;
 
 	case ETIR__C_OPR_SUB:      /* Subtract.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
-	  _bfd_vms_pop (abfd, &op2, &rel2);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1)
+	      || !_bfd_vms_pop (abfd, &op2, &rel2))
+	    return FALSE;
 	  if (rel1 == RELC_NONE && rel2 != RELC_NONE)
 	    rel1 = rel2;
 	  else if ((rel1 & RELC_SEC_BASE) && (rel2 & RELC_SEC_BASE))
@@ -2311,69 +2430,93 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	    }
 	  else if (rel1 != RELC_NONE && rel2 != RELC_NONE)
 	    goto bad_context;
-	  _bfd_vms_push (abfd, op2 - op1, rel1);
+	  if (!_bfd_vms_push (abfd, op2 - op1, rel1))
+	    return FALSE;
 	  break;
 
 	case ETIR__C_OPR_MUL:      /* Multiply.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
-	  _bfd_vms_pop (abfd, &op2, &rel2);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1)
+	      || !_bfd_vms_pop (abfd, &op2, &rel2))
+	    return FALSE;
 	  if (rel1 != RELC_NONE || rel2 != RELC_NONE)
 	    goto bad_context;
-	  _bfd_vms_push (abfd, op1 * op2, RELC_NONE);
+	  if (!_bfd_vms_push (abfd, op1 * op2, RELC_NONE))
+	    return FALSE;
 	  break;
 
 	case ETIR__C_OPR_DIV:      /* Divide.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
-	  _bfd_vms_pop (abfd, &op2, &rel2);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1)
+	      || !_bfd_vms_pop (abfd, &op2, &rel2))
+	    return FALSE;
 	  if (rel1 != RELC_NONE || rel2 != RELC_NONE)
 	    goto bad_context;
-	  if (op2 == 0)
-	    _bfd_vms_push (abfd, 0, RELC_NONE);
+	  if (op1 == 0)
+	    {
+	      /* Divide by zero is supposed to give a result of zero,
+		 and a non-fatal warning message.  */
+	      _bfd_error_handler (_("%s divide by zero"), "ETIR__C_OPR_DIV");
+	      if (!_bfd_vms_push (abfd, 0, RELC_NONE))
+		return FALSE;
+	    }
 	  else
-	    _bfd_vms_push (abfd, op2 / op1, RELC_NONE);
+	    {
+	      if (!_bfd_vms_push (abfd, op2 / op1, RELC_NONE))
+		return FALSE;
+	    }
 	  break;
 
 	case ETIR__C_OPR_AND:      /* Logical AND.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
-	  _bfd_vms_pop (abfd, &op2, &rel2);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1)
+	      || !_bfd_vms_pop (abfd, &op2, &rel2))
+	    return FALSE;
 	  if (rel1 != RELC_NONE || rel2 != RELC_NONE)
 	    goto bad_context;
-	  _bfd_vms_push (abfd, op1 & op2, RELC_NONE);
+	  if (!_bfd_vms_push (abfd, op1 & op2, RELC_NONE))
+	    return FALSE;
 	  break;
 
 	case ETIR__C_OPR_IOR:      /* Logical inclusive OR.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
-	  _bfd_vms_pop (abfd, &op2, &rel2);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1)
+	      || !_bfd_vms_pop (abfd, &op2, &rel2))
+	    return FALSE;
 	  if (rel1 != RELC_NONE || rel2 != RELC_NONE)
 	    goto bad_context;
-	  _bfd_vms_push (abfd, op1 | op2, RELC_NONE);
+	  if (!_bfd_vms_push (abfd, op1 | op2, RELC_NONE))
+	    return FALSE;
 	  break;
 
 	case ETIR__C_OPR_EOR:      /* Logical exclusive OR.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
-	  _bfd_vms_pop (abfd, &op2, &rel2);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1)
+	      || !_bfd_vms_pop (abfd, &op2, &rel2))
+	    return FALSE;
 	  if (rel1 != RELC_NONE || rel2 != RELC_NONE)
 	    goto bad_context;
-	  _bfd_vms_push (abfd, op1 ^ op2, RELC_NONE);
+	  if (!_bfd_vms_push (abfd, op1 ^ op2, RELC_NONE))
+	    return FALSE;
 	  break;
 
 	case ETIR__C_OPR_NEG:      /* Negate.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (rel1 != RELC_NONE)
 	    goto bad_context;
-	  _bfd_vms_push (abfd, -op1, RELC_NONE);
+	  if (!_bfd_vms_push (abfd, -op1, RELC_NONE))
+	    return FALSE;
 	  break;
 
 	case ETIR__C_OPR_COM:      /* Complement.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (rel1 != RELC_NONE)
 	    goto bad_context;
-	  _bfd_vms_push (abfd, ~op1, RELC_NONE);
+	  if (!_bfd_vms_push (abfd, ~op1, RELC_NONE))
+	    return FALSE;
 	  break;
 
 	case ETIR__C_OPR_ASH:      /* Arithmetic shift.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
-	  _bfd_vms_pop (abfd, &op2, &rel2);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1)
+	      || !_bfd_vms_pop (abfd, &op2, &rel2))
+	    return FALSE;
 	  if (rel1 != RELC_NONE || rel2 != RELC_NONE)
 	    {
 	    bad_context:
@@ -2381,11 +2524,29 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 				  _bfd_vms_etir_name (cmd));
 	      return FALSE;
 	    }
-	  if ((int)op2 < 0)		/* Shift right.  */
-	    op1 >>= -(int)op2;
-	  else			/* Shift left.  */
-	    op1 <<= (int)op2;
-	  _bfd_vms_push (abfd, op1, RELC_NONE); /* FIXME: sym.  */
+	  if ((bfd_signed_vma) op2 < 0)
+	    {
+	      /* Shift right.  */
+	      bfd_vma sign;
+	      op2 = -op2;
+	      if (op2 >= CHAR_BIT * sizeof (op1))
+		op2 = CHAR_BIT * sizeof (op1) - 1;
+	      /* op1 = (bfd_signed_vma) op1 >> op2; */
+	      sign = op1 & ((bfd_vma) 1 << (CHAR_BIT * sizeof (op1) - 1));
+	      op1 >>= op2;
+	      sign >>= op2;
+	      op1 = (op1 ^ sign) - sign;
+	    }
+	  else
+	    {
+	      /* Shift left.  */
+	      if (op2 >= CHAR_BIT * sizeof (op1))
+		op1 = 0;
+	      else
+		op1 <<= op2;
+	    }
+	  if (!_bfd_vms_push (abfd, op1, RELC_NONE)) /* FIXME: sym.  */
+	    return FALSE;
 	  break;
 
 	case ETIR__C_OPR_INSV:      /* Insert field.   */
@@ -2399,14 +2560,20 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	  break;
 
 	case ETIR__C_OPR_SEL:      /* Select.  */
-	  _bfd_vms_pop (abfd, &op1, &rel1);
+	  if (!_bfd_vms_pop (abfd, &op1, &rel1))
+	    return FALSE;
 	  if (op1 & 0x01L)
-	    _bfd_vms_pop (abfd, &op1, &rel1);
+	    {
+	      if (!_bfd_vms_pop (abfd, &op1, &rel1))
+		return FALSE;
+	    }
 	  else
 	    {
-	      _bfd_vms_pop (abfd, &op1, &rel1);
-	      _bfd_vms_pop (abfd, &op2, &rel2);
-	      _bfd_vms_push (abfd, op1, rel1);
+	      if (!_bfd_vms_pop (abfd, &op1, &rel1)
+		  || !_bfd_vms_pop (abfd, &op2, &rel2))
+		return FALSE;
+	      if (!_bfd_vms_push (abfd, op1, rel1))
+		return FALSE;
 	    }
 	  break;
 
@@ -2416,7 +2583,7 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	  break;
 	}
 
-      ptr += cmd_length - 4;
+      ptr += cmd_length;
     }
 
   return TRUE;
@@ -2527,7 +2694,7 @@ _bfd_vms_slurp_eeom (bfd *abfd)
 static bfd_boolean
 _bfd_vms_slurp_object_records (bfd * abfd)
 {
-  bfd_boolean err;
+  bfd_boolean ok;
   int type;
 
   do
@@ -2544,27 +2711,27 @@ _bfd_vms_slurp_object_records (bfd * abf
       switch (type)
 	{
 	case EOBJ__C_EMH:
-	  err = _bfd_vms_slurp_ehdr (abfd);
+	  ok = _bfd_vms_slurp_ehdr (abfd);
 	  break;
 	case EOBJ__C_EEOM:
-	  err = _bfd_vms_slurp_eeom (abfd);
+	  ok = _bfd_vms_slurp_eeom (abfd);
 	  break;
 	case EOBJ__C_EGSD:
-	  err = _bfd_vms_slurp_egsd (abfd);
+	  ok = _bfd_vms_slurp_egsd (abfd);
 	  break;
 	case EOBJ__C_ETIR:
-	  err = TRUE; /* _bfd_vms_slurp_etir (abfd); */
+	  ok = TRUE; /* _bfd_vms_slurp_etir (abfd); */
 	  break;
 	case EOBJ__C_EDBG:
-	  err = _bfd_vms_slurp_edbg (abfd);
+	  ok = _bfd_vms_slurp_edbg (abfd);
 	  break;
 	case EOBJ__C_ETBT:
-	  err = _bfd_vms_slurp_etbt (abfd);
+	  ok = _bfd_vms_slurp_etbt (abfd);
 	  break;
 	default:
-	  err = FALSE;
+	  ok = FALSE;
 	}
-      if (!err)
+      if (!ok)
 	{
 	  vms_debug2 ((2, "slurp type %d failed\n", type));
 	  return FALSE;
@@ -2579,7 +2746,7 @@ _bfd_vms_slurp_object_records (bfd * abf
 static bfd_boolean
 vms_initialize (bfd * abfd)
 {
-  bfd_size_type amt;
+  size_t amt;
 
   amt = sizeof (struct vms_private_data_struct);
   abfd->tdata.any = bfd_zalloc (abfd, amt);
@@ -2601,10 +2768,26 @@ vms_initialize (bfd * abfd)
   return FALSE;
 }
 
+/* Free malloc'd memory.  */
+
+static void
+alpha_vms_free_private (bfd *abfd)
+{
+  struct module *module;
+
+  free (PRIV (recrd.buf));
+  free (PRIV (sections));
+  free (PRIV (syms));
+  free (PRIV (dst_ptr_offsets));
+
+  for (module = PRIV (modules); module; module = module->next)
+    free (module->file_table);
+}
+
 /* Check the format for a file being read.
    Return a (bfd_target *) if it's an object file or zero if not.  */
 
-static const struct bfd_target *
+static bfd_cleanup
 alpha_vms_object_p (bfd *abfd)
 {
   void *tdata_save = abfd->tdata.any;
@@ -2615,10 +2798,13 @@ alpha_vms_object_p (bfd *abfd)
 
   /* Allocate alpha-vms specific data.  */
   if (!vms_initialize (abfd))
-    goto error_ret;
+    {
+      abfd->tdata.any = tdata_save;
+      return NULL;
+    }
 
   if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET))
-    goto err_wrong_format;
+    goto error_ret;
 
   /* The first challenge with VMS is to discover the kind of the file.
 
@@ -2637,27 +2823,17 @@ alpha_vms_object_p (bfd *abfd)
      2 bytes size repeated) and 12 bytes for images (4 bytes major id,
      4 bytes minor id, 4 bytes length).  */
   test_len = 12;
-
-  /* Size the main buffer.  */
-  buf = (unsigned char *) bfd_malloc (test_len);
+  buf = _bfd_malloc_and_read (abfd, test_len, test_len);
   if (buf == NULL)
     goto error_ret;
   PRIV (recrd.buf) = buf;
   PRIV (recrd.buf_size) = test_len;
-
-  /* Initialize the record pointer.  */
   PRIV (recrd.rec) = buf;
 
-  if (bfd_bread (buf, test_len, abfd) != test_len)
-    goto err_wrong_format;
-
   /* Is it an image?  */
   if ((bfd_getl32 (buf) == EIHD__K_MAJORID)
       && (bfd_getl32 (buf + 4) == EIHD__K_MINORID))
     {
-      unsigned int to_read;
-      unsigned int read_so_far;
-      unsigned int remaining;
       unsigned int eisd_offset, eihs_offset;
 
       /* Extract the header size.  */
@@ -2667,44 +2843,25 @@ alpha_vms_object_p (bfd *abfd)
       if (PRIV (recrd.rec_size) == 0)
 	PRIV (recrd.rec_size) = sizeof (struct vms_eihd);
 
-      if (PRIV (recrd.rec_size) > PRIV (recrd.buf_size))
-	{
-	  buf = bfd_realloc_or_free (buf, PRIV (recrd.rec_size));
-
-	  if (buf == NULL)
-	    {
-	      PRIV (recrd.buf) = NULL;
-	      goto error_ret;
-	    }
-	  PRIV (recrd.buf) = buf;
-	  PRIV (recrd.buf_size) = PRIV (recrd.rec_size);
-	}
-
       /* PR 21813: Check for a truncated record.  */
-      if (PRIV (recrd.rec_size < test_len))
-	goto error_ret;
-      /* Read the remaining record.  */
-      remaining = PRIV (recrd.rec_size) - test_len;
-      to_read = MIN (VMS_BLOCK_SIZE - test_len, remaining);
-      read_so_far = test_len;
-
-      while (remaining > 0)
-	{
-	  if (bfd_bread (buf + read_so_far, to_read, abfd) != to_read)
-	    goto err_wrong_format;
+      /* PR 17512: file: 7d7c57c2.  */
+      if (PRIV (recrd.rec_size) < sizeof (struct vms_eihd))
+	goto err_wrong_format;
 
-	  read_so_far += to_read;
-	  remaining -= to_read;
+      if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET))
+	goto error_ret;
 
-	  to_read = MIN (VMS_BLOCK_SIZE, remaining);
-	}
+      free (PRIV (recrd.buf));
+      PRIV (recrd.buf) = NULL;
+      buf = _bfd_malloc_and_read (abfd, PRIV (recrd.rec_size),
+				  PRIV (recrd.rec_size));
+      if (buf == NULL)
+	goto error_ret;
 
-      /* Reset the record pointer.  */
+      PRIV (recrd.buf) = buf;
+      PRIV (recrd.buf_size) = PRIV (recrd.rec_size);
       PRIV (recrd.rec) = buf;
 
-      /* PR 17512: file: 7d7c57c2.  */
-      if (PRIV (recrd.rec_size) < sizeof (struct vms_eihd))
-	goto error_ret;
       vms_debug2 ((2, "file type is image\n"));
 
       if (!_bfd_vms_slurp_eihd (abfd, &eisd_offset, &eihs_offset))
@@ -2749,14 +2906,13 @@ alpha_vms_object_p (bfd *abfd)
   if (! bfd_default_set_arch_mach (abfd, bfd_arch_alpha, 0))
     goto err_wrong_format;
 
-  return abfd->xvec;
+  return alpha_vms_free_private;
 
  err_wrong_format:
   bfd_set_error (bfd_error_wrong_format);
 
  error_ret:
-  if (PRIV (recrd.buf))
-    free (PRIV (recrd.buf));
+  alpha_vms_free_private (abfd);
   if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL)
     bfd_release (abfd, abfd->tdata.any);
   abfd->tdata.any = tdata_save;
@@ -2855,22 +3011,36 @@ _bfd_vms_write_eeom (bfd *abfd)
   return TRUE;
 }
 
-static void
+static void *
 vector_grow1 (struct vector_type *vec, size_t elsz)
 {
-  if (vec->nbr_el + 1 < vec->max_el)
-    return;
-
-  if (vec->max_el == 0)
+  if (vec->nbr_el >= vec->max_el)
     {
-      vec->max_el = 16;
-      vec->els = bfd_malloc2 (vec->max_el, elsz);
-    }
-  else
-    {
-      vec->max_el *= 2;
-      vec->els = bfd_realloc2 (vec->els, vec->max_el, elsz);
+      if (vec->max_el == 0)
+	{
+	  vec->max_el = 16;
+	  vec->els = bfd_malloc (vec->max_el * elsz);
+	}
+      else
+	{
+	  size_t amt;
+	  if (vec->max_el > -1u / 2)
+	    {
+	      bfd_set_error (bfd_error_file_too_big);
+	      return NULL;
+	    }
+	  vec->max_el *= 2;
+	  if (_bfd_mul_overflow (vec->max_el, elsz, &amt))
+	    {
+	      bfd_set_error (bfd_error_file_too_big);
+	      return NULL;
+	    }
+	  vec->els = bfd_realloc_or_free (vec->els, amt);
+	}
     }
+  if (vec->els == NULL)
+    return NULL;
+  return (char *) vec->els + elsz * vec->nbr_el++;
 }
 
 /* Bump ABFD file position to next block.  */
@@ -4170,7 +4340,7 @@ new_module (bfd *abfd)
 
 /* Parse debug info for a module and internalize it.  */
 
-static void
+static bfd_boolean
 parse_module (bfd *abfd, struct module *module, unsigned char *ptr,
 	      int length)
 {
@@ -4204,7 +4374,7 @@ parse_module (bfd *abfd, struct module *
 	{
 	case DST__K_MODBEG:
 	  module->name
-	    = _bfd_vms_save_counted_string (ptr + DST_S_B_MODBEG_NAME,
+	    = _bfd_vms_save_counted_string (abfd, ptr + DST_S_B_MODBEG_NAME,
 					    maxptr - (ptr + DST_S_B_MODBEG_NAME));
 
 	  curr_pc = 0;
@@ -4222,7 +4392,7 @@ parse_module (bfd *abfd, struct module *
 	  funcinfo = (struct funcinfo *)
 	    bfd_zalloc (abfd, sizeof (struct funcinfo));
 	  funcinfo->name
-	    = _bfd_vms_save_counted_string (ptr + DST_S_B_RTNBEG_NAME,
+	    = _bfd_vms_save_counted_string (abfd, ptr + DST_S_B_RTNBEG_NAME,
 					    maxptr - (ptr + DST_S_B_RTNBEG_NAME));
 	  funcinfo->low = bfd_getl32 (ptr + DST_S_L_RTNBEG_ADDRESS);
 	  funcinfo->next = module->func_table;
@@ -4273,19 +4443,20 @@ parse_module (bfd *abfd, struct module *
 		  {
 		    unsigned int fileid
 		      = bfd_getl16 (src_ptr + DST_S_W_SRC_DF_FILEID);
-		    char *filename
-		      = _bfd_vms_save_counted_string (src_ptr + DST_S_B_SRC_DF_FILENAME,
-						      (ptr + rec_length) -
-						      (src_ptr + DST_S_B_SRC_DF_FILENAME)
-						      );
+		    char *filename = _bfd_vms_save_counted_string
+		      (abfd,
+		       src_ptr + DST_S_B_SRC_DF_FILENAME,
+		       ptr + rec_length - (src_ptr + DST_S_B_SRC_DF_FILENAME));
 
 		    while (fileid >= module->file_table_count)
 		      {
 			module->file_table_count *= 2;
 			module->file_table
-			  = bfd_realloc (module->file_table,
-					 module->file_table_count
-					   * sizeof (struct fileinfo));
+			  = bfd_realloc_or_free (module->file_table,
+						 module->file_table_count
+						 * sizeof (struct fileinfo));
+			if (module->file_table == NULL)
+			  return FALSE;
 		      }
 
 		    module->file_table [fileid].name = filename;
@@ -4607,6 +4778,7 @@ parse_module (bfd *abfd, struct module *
      because parsing can be either performed at module creation
      or deferred until debug info is consumed.  */
   SET_MODULE_PARSED (module);
+  return TRUE;
 }
 
 /* Build the list of modules for the specified BFD.  */
@@ -4684,7 +4856,8 @@ build_module_list (bfd *abfd)
 	return NULL;
 
       module = new_module (abfd);
-      parse_module (abfd, module, PRIV (dst_section)->contents, -1);
+      if (!parse_module (abfd, module, PRIV (dst_section)->contents, -1))
+	return NULL;
       list = module;
     }
 
@@ -4709,17 +4882,19 @@ module_find_nearest_line (bfd *abfd, str
     {
       unsigned int size = module->size;
       unsigned int modbeg = PRIV (dst_section)->filepos + module->modbeg;
-      unsigned char *buffer = (unsigned char *) bfd_malloc (module->size);
+      unsigned char *buffer;
 
       if (bfd_seek (abfd, modbeg, SEEK_SET) != 0
-	  || bfd_bread (buffer, size, abfd) != size)
+	  || (buffer = _bfd_malloc_and_read (abfd, size, size)) == NULL)
 	{
 	  bfd_set_error (bfd_error_no_debug_section);
 	  return FALSE;
 	}
 
-      parse_module (abfd, module, buffer, size);
+      ret = parse_module (abfd, module, buffer, size);
       free (buffer);
+      if (!ret)
+	return ret;
     }
 
   /* Find out the function (if any) that contains the address.  */
@@ -5193,8 +5368,10 @@ alpha_vms_slurp_relocs (bfd *abfd)
 		else
 		  {
 		    vms_sec->reloc_max *= 2;
-		    sec->relocation = bfd_realloc
+		    sec->relocation = bfd_realloc_or_free
 		      (sec->relocation, vms_sec->reloc_max * sizeof (arelent));
+		    if (sec->relocation == NULL)
+		      return FALSE;
 		  }
 	      }
 	    reloc = &sec->relocation[sec->reloc_count];
@@ -6615,7 +6792,7 @@ evax_bfd_print_relocation_records (FILE
 	  fprintf (file, _("   bitmap: 0x%08x (count: %u):\n"), val, count);
 
 	  for (k = 0; k < 32; k++)
-	    if (val & (1 << k))
+	    if (val & (1u << k))
 	      {
 		if (n == 0)
 		  fputs ("   ", file);
@@ -7036,8 +7213,8 @@ evax_bfd_print_dst (struct bfd *abfd, un
       dst_size -= len;
       off += len;
       len -= sizeof (dsth);
-      buf = bfd_malloc (len);
-      if (bfd_bread (buf, len, abfd) != len)
+      buf = _bfd_malloc_and_read (abfd, len, len);
+      if (buf == NULL)
 	{
 	  fprintf (file, _("cannot read DST symbol\n"));
 	  return;
@@ -7952,14 +8129,12 @@ evax_bfd_print_image (bfd *abfd, FILE *f
       unsigned int codeadroff;
       unsigned int lpfixoff;
       unsigned int chgprtoff;
+      file_ptr f_off = (file_ptr) (eiaf_vbn - 1) * VMS_BLOCK_SIZE;
 
-      buf = bfd_malloc (eiaf_size);
-
-      if (bfd_seek (abfd, (file_ptr) (eiaf_vbn - 1) * VMS_BLOCK_SIZE, SEEK_SET)
-	  || bfd_bread (buf, eiaf_size, abfd) != eiaf_size)
+      if (bfd_seek (abfd, f_off, SEEK_SET) != 0
+	  || (buf = _bfd_malloc_and_read (abfd, eiaf_size, eiaf_size)) == NULL)
 	{
 	  fprintf (file, _("cannot read EIHA\n"));
-	  free (buf);
 	  return;
 	}
       eiaf = (struct vms_eiaf *)buf;
@@ -8236,41 +8411,49 @@ alpha_vms_sizeof_headers (bfd *abfd ATTR
 
 /* Add a linkage pair fixup at address SECT + OFFSET to SHLIB. */
 
-static void
+static bfd_boolean
 alpha_vms_add_fixup_lp (struct bfd_link_info *info, bfd *src, bfd *shlib)
 {
   struct alpha_vms_shlib_el *sl;
   asection *sect = PRIV2 (src, image_section);
   file_ptr offset = PRIV2 (src, image_offset);
+  bfd_vma *p;
 
   sl = &VEC_EL (alpha_vms_link_hash (info)->shrlibs,
 		struct alpha_vms_shlib_el, PRIV2 (shlib, shr_index));
   sl->has_fixups = TRUE;
-  VEC_APPEND_EL (sl->lp, bfd_vma,
-		 sect->output_section->vma + sect->output_offset + offset);
+  p = VEC_APPEND (sl->lp, bfd_vma);
+  if (p == NULL)
+    return FALSE;
+  *p = sect->output_section->vma + sect->output_offset + offset;
   sect->output_section->flags |= SEC_RELOC;
+  return TRUE;
 }
 
 /* Add a code address fixup at address SECT + OFFSET to SHLIB. */
 
-static void
+static bfd_boolean
 alpha_vms_add_fixup_ca (struct bfd_link_info *info, bfd *src, bfd *shlib)
 {
   struct alpha_vms_shlib_el *sl;
   asection *sect = PRIV2 (src, image_section);
   file_ptr offset = PRIV2 (src, image_offset);
+  bfd_vma *p;
 
   sl = &VEC_EL (alpha_vms_link_hash (info)->shrlibs,
 		struct alpha_vms_shlib_el, PRIV2 (shlib, shr_index));
   sl->has_fixups = TRUE;
-  VEC_APPEND_EL (sl->ca, bfd_vma,
-		 sect->output_section->vma + sect->output_offset + offset);
+  p = VEC_APPEND (sl->ca, bfd_vma);
+  if (p == NULL)
+    return FALSE;
+  *p = sect->output_section->vma + sect->output_offset + offset;
   sect->output_section->flags |= SEC_RELOC;
+  return TRUE;
 }
 
 /* Add a quad word relocation fixup at address SECT + OFFSET to SHLIB. */
 
-static void
+static bfd_boolean
 alpha_vms_add_fixup_qr (struct bfd_link_info *info, bfd *src,
 			bfd *shlib, bfd_vma vec)
 {
@@ -8283,30 +8466,35 @@ alpha_vms_add_fixup_qr (struct bfd_link_
 		struct alpha_vms_shlib_el, PRIV2 (shlib, shr_index));
   sl->has_fixups = TRUE;
   r = VEC_APPEND (sl->qr, struct alpha_vms_vma_ref);
+  if (r == NULL)
+    return FALSE;
   r->vma = sect->output_section->vma + sect->output_offset + offset;
   r->ref = vec;
   sect->output_section->flags |= SEC_RELOC;
+  return TRUE;
 }
 
-static void
+static bfd_boolean
 alpha_vms_add_fixup_lr (struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			unsigned int shr ATTRIBUTE_UNUSED,
 			bfd_vma vec ATTRIBUTE_UNUSED)
 {
   /* Not yet supported.  */
-  abort ();
+  return FALSE;
 }
 
 /* Add relocation.  FIXME: Not yet emitted.  */
 
-static void
+static bfd_boolean
 alpha_vms_add_lw_reloc (struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
+  return FALSE;
 }
 
-static void
+static bfd_boolean
 alpha_vms_add_qw_reloc (struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
+  return FALSE;
 }
 
 static struct bfd_hash_entry *
@@ -8336,13 +8524,34 @@ alpha_vms_link_hash_newfunc (struct bfd_
   return (struct bfd_hash_entry *) ret;
 }
 
+static void
+alpha_vms_bfd_link_hash_table_free (bfd *abfd)
+{
+  struct alpha_vms_link_hash_table *t;
+  unsigned i;
+
+  t = (struct alpha_vms_link_hash_table *) abfd->link.hash;
+  for (i = 0; i < VEC_COUNT (t->shrlibs); i++)
+    {
+      struct alpha_vms_shlib_el *shlib;
+
+      shlib = &VEC_EL (t->shrlibs, struct alpha_vms_shlib_el, i);
+      free (&VEC_EL (shlib->ca, bfd_vma, 0));
+      free (&VEC_EL (shlib->lp, bfd_vma, 0));
+      free (&VEC_EL (shlib->qr, struct alpha_vms_vma_ref, 0));
+    }
+  free (&VEC_EL (t->shrlibs, struct alpha_vms_shlib_el, 0));
+
+  _bfd_generic_link_hash_table_free (abfd);
+}
+
 /* Create an Alpha/VMS link hash table.  */
 
 static struct bfd_link_hash_table *
 alpha_vms_bfd_link_hash_table_create (bfd *abfd)
 {
   struct alpha_vms_link_hash_table *ret;
-  bfd_size_type amt = sizeof (struct alpha_vms_link_hash_table);
+  size_t amt = sizeof (struct alpha_vms_link_hash_table);
 
   ret = (struct alpha_vms_link_hash_table *) bfd_malloc (amt);
   if (ret == NULL)
@@ -8357,6 +8566,7 @@ alpha_vms_bfd_link_hash_table_create (bf
 
   VEC_INIT (ret->shrlibs);
   ret->fixup = NULL;
+  ret->root.hash_table_free = alpha_vms_bfd_link_hash_table_free;
 
   return &ret->root;
 }
@@ -8411,6 +8621,8 @@ alpha_vms_link_add_object_symbols (bfd *
 
       shlib = VEC_APPEND (alpha_vms_link_hash (info)->shrlibs,
 			  struct alpha_vms_shlib_el);
+      if (shlib == NULL)
+	return FALSE;
       shlib->abfd = abfd;
       VEC_INIT (shlib->ca);
       VEC_INIT (shlib->lp);
@@ -9283,35 +9495,24 @@ vms_close_and_cleanup (bfd * abfd)
   if (abfd == NULL || abfd->tdata.any == NULL)
     return TRUE;
 
-  if (abfd->format == bfd_archive)
+  if (abfd->format == bfd_object)
     {
-      bfd_release (abfd, abfd->tdata.any);
-      abfd->tdata.any = NULL;
-      return TRUE;
-    }
-
-  if (PRIV (recrd.buf) != NULL)
-    free (PRIV (recrd.buf));
-
-  if (PRIV (sections) != NULL)
-    free (PRIV (sections));
-
-  bfd_release (abfd, abfd->tdata.any);
-  abfd->tdata.any = NULL;
+      alpha_vms_free_private (abfd);
 
 #ifdef VMS
-  if (abfd->direction == write_direction)
-    {
-      /* Last step on VMS is to convert the file to variable record length
-	 format.  */
-      if (!bfd_cache_close (abfd))
-	return FALSE;
-      if (!_bfd_vms_convert_to_var_unix_filename (abfd->filename))
-	return FALSE;
-    }
+      if (abfd->direction == write_direction)
+	{
+	  /* Last step on VMS is to convert the file to variable record length
+	     format.  */
+	  if (!bfd_cache_close (abfd))
+	    return FALSE;
+	  if (!_bfd_vms_convert_to_var_unix_filename (abfd->filename))
+	    return FALSE;
+	}
 #endif
+    }
 
-  return TRUE;
+  return _bfd_generic_close_and_cleanup (abfd);
 }
 
 /* Called when a new section is created.  */
@@ -9319,7 +9520,7 @@ vms_close_and_cleanup (bfd * abfd)
 static bfd_boolean
 vms_new_section_hook (bfd * abfd, asection *section)
 {
-  bfd_size_type amt;
+  size_t amt;
 
   vms_debug2 ((1, "vms_new_section_hook (%p, [%u]%s)\n",
 	       abfd, section->index, section->name));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vms.h ./bfd/vms.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vms.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/vms.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* vms.h -- Header file for VMS (Alpha and Vax) support.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    Main header file.
 
@@ -98,7 +98,7 @@ struct evax_private_udata_struct
 
 /* vms-misc.c.  */
 
-#define VMS_DEBUG 1
+#define VMS_DEBUG 0
 
 #if VMS_DEBUG
 extern void _bfd_vms_debug (int, char *, ...) ATTRIBUTE_PRINTF_2;
@@ -118,8 +118,8 @@ extern void vms_time_t_to_vms_time (time
 extern void vms_get_time (unsigned int *hi, unsigned int *lo);
 extern void vms_raw_get_time (unsigned char *buf);
 
-extern char * _bfd_vms_save_sized_string (unsigned char *, unsigned);
-extern char * _bfd_vms_save_counted_string (unsigned char *, unsigned);
+extern char * _bfd_vms_save_sized_string (bfd *, unsigned char *, size_t);
+extern char * _bfd_vms_save_counted_string (bfd *, unsigned char *, size_t);
 extern void   _bfd_vms_output_begin (struct vms_rec_wr *, int);
 extern void   _bfd_vms_output_alignment (struct vms_rec_wr *, int);
 extern void   _bfd_vms_output_begin_subrec (struct vms_rec_wr *, int);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vms-lib.c ./bfd/vms-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vms-lib.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/vms-lib.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* BFD back-end for VMS archive files.
 
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2020 Free Software Foundation, Inc.
    Written by Tristan Gingold <gingold@adacore.com>, AdaCore.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -120,6 +120,9 @@ struct carsym_mem
   /* Maximum number of entries.  */
   unsigned int max;
 
+  /* Do not allocate more that this number of entries.  */
+  unsigned int limit;
+
   /* If true, the table was reallocated on the heap.  If false, it is still
      in the BFD's objalloc.  */
   bfd_boolean realloced;
@@ -134,12 +137,25 @@ vms_add_index (struct carsym_mem *cs, ch
   if (cs->nbr == cs->max)
     {
       struct carsym *n;
+      size_t amt;
 
+      if (cs->max > -33u / 2 || cs->max >= cs->limit)
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  return FALSE;
+	}
       cs->max = 2 * cs->max + 32;
+      if (cs->max > cs->limit)
+	cs->max = cs->limit;
+      if (_bfd_mul_overflow (cs->max, sizeof (struct carsym), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  return FALSE;
+	}
 
       if (!cs->realloced)
 	{
-	  n = bfd_malloc2 (cs->max, sizeof (struct carsym));
+	  n = bfd_malloc (amt);
 	  if (n == NULL)
 	    return FALSE;
 	  memcpy (n, cs->idx, cs->nbr * sizeof (struct carsym));
@@ -147,7 +163,7 @@ vms_add_index (struct carsym_mem *cs, ch
 	}
       else
 	{
-	  n = bfd_realloc_or_free (cs->idx, cs->nbr * sizeof (struct carsym));
+	  n = bfd_realloc_or_free (cs->idx, amt);
 	  if (n == NULL)
 	    return FALSE;
 	}
@@ -226,12 +242,20 @@ vms_write_block (bfd *abfd, unsigned int
    If the entry is indirect, recurse.  */
 
 static bfd_boolean
-vms_traverse_index (bfd *abfd, unsigned int vbn, struct carsym_mem *cs)
+vms_traverse_index (bfd *abfd, unsigned int vbn, struct carsym_mem *cs,
+		    unsigned int recur_count)
 {
   struct vms_indexdef indexdef;
   file_ptr off;
   unsigned char *p;
   unsigned char *endp;
+  unsigned int n;
+
+  if (recur_count == 100)
+    {
+      bfd_set_error (bfd_error_bad_value);
+      return FALSE;
+    }
 
   /* Read the index block.  */
   BFD_ASSERT (sizeof (indexdef) == VMS_BLOCK_SIZE);
@@ -240,7 +264,10 @@ vms_traverse_index (bfd *abfd, unsigned
 
   /* Traverse it.  */
   p = &indexdef.keys[0];
-  endp = p + bfd_getl16 (indexdef.used);
+  n = bfd_getl16 (indexdef.used);
+  if (n > sizeof (indexdef.keys))
+    return FALSE;
+  endp = p + n;
   while (p < endp)
     {
       unsigned int idx_vbn;
@@ -250,7 +277,8 @@ vms_traverse_index (bfd *abfd, unsigned
       unsigned int flags;
 
       /* Extract key length.  */
-      if (bfd_libdata (abfd)->ver == LBR_MAJORID)
+      if (bfd_libdata (abfd)->ver == LBR_MAJORID
+	  && offsetof (struct vms_idx, keyname) <= (size_t) (endp - p))
 	{
 	  struct vms_idx *ridx = (struct vms_idx *)p;
 
@@ -261,7 +289,8 @@ vms_traverse_index (bfd *abfd, unsigned
 	  flags = 0;
 	  keyname = ridx->keyname;
 	}
-      else if (bfd_libdata (abfd)->ver == LBR_ELFMAJORID)
+      else if (bfd_libdata (abfd)->ver == LBR_ELFMAJORID
+	       && offsetof (struct vms_elfidx, keyname) <= (size_t) (endp - p))
 	{
 	  struct vms_elfidx *ridx = (struct vms_elfidx *)p;
 
@@ -281,11 +310,13 @@ vms_traverse_index (bfd *abfd, unsigned
 
       /* Point to the next index entry.  */
       p = keyname + keylen;
+      if (p > endp)
+	return FALSE;
 
       if (idx_off == RFADEF__C_INDEX)
 	{
 	  /* Indirect entry.  Recurse.  */
-	  if (!vms_traverse_index (abfd, idx_vbn, cs))
+	  if (!vms_traverse_index (abfd, idx_vbn, cs, recur_count + 1))
 	    return FALSE;
 	}
       else
@@ -322,11 +353,17 @@ vms_traverse_index (bfd *abfd, unsigned
 
 		  if (!vms_read_block (abfd, kvbn, kblk))
 		    return FALSE;
+		  if (koff > sizeof (kblk) - sizeof (struct vms_kbn))
+		    return FALSE;
 		  kbn = (struct vms_kbn *)(kblk + koff);
 		  klen = bfd_getl16 (kbn->keylen);
+		  if (klen > sizeof (kblk) - koff)
+		    return FALSE;
 		  kvbn = bfd_getl32 (kbn->rfa.vbn);
 		  koff = bfd_getl16 (kbn->rfa.offset);
 
+		  if (noff + klen > keylen)
+		    return FALSE;
 		  memcpy (name + noff, kbn + 1, klen);
 		  noff += klen;
 		}
@@ -357,7 +394,7 @@ vms_traverse_index (bfd *abfd, unsigned
 		  || bfd_bread (&lhs, sizeof (lhs), abfd) != sizeof (lhs))
 		return FALSE;
 
-	      /* FIXME: this adds extra entries that were not accounted.  */
+	      /* These extra entries may cause reallocation of CS.  */
 	      if (!vms_add_indexes_from_list (abfd, cs, name, &lhs.ng_g_rfa))
 		return FALSE;
 	      if (!vms_add_indexes_from_list (abfd, cs, name, &lhs.ng_wk_rfa))
@@ -386,6 +423,8 @@ vms_lib_read_index (bfd *abfd, int idx,
   struct vms_idd idd;
   unsigned int flags;
   unsigned int vbn;
+  ufile_ptr filesize;
+  size_t amt;
   struct carsym *csbuf;
   struct carsym_mem csm;
 
@@ -400,20 +439,33 @@ vms_lib_read_index (bfd *abfd, int idx,
       || !(flags & IDD__FLAGS_VARLENIDX))
     return NULL;
 
-  csbuf = bfd_alloc (abfd, *nbrel * sizeof (struct carsym));
-  if (csbuf == NULL)
-    return NULL;
-
-  csm.max = *nbrel;
+  filesize = bfd_get_file_size (abfd);
   csm.nbr = 0;
+  csm.max = *nbrel;
+  csm.limit = -1u;
   csm.realloced = FALSE;
-  csm.idx = csbuf;
+  if (filesize != 0)
+    {
+      /* Put an upper bound based on a file full of single char keys.
+	 This is to prevent fuzzed binary silliness.  It is easily
+	 possible to set up loops over file blocks that add syms
+	 without end.  */
+      if (filesize / (sizeof (struct vms_rfa) + 2) <= -1u)
+	csm.limit = filesize / (sizeof (struct vms_rfa) + 2);
+    }
+  if (csm.max > csm.limit)
+    csm.max = csm.limit;
+  if (_bfd_mul_overflow (csm.max, sizeof (struct carsym), &amt))
+    return NULL;
+  csm.idx = csbuf = bfd_alloc (abfd, amt);
+  if (csm.idx == NULL)
+    return NULL;
 
   /* Note: if the index is empty, there is no block to traverse.  */
   vbn = bfd_getl32 (idd.vbn);
-  if (vbn != 0 && !vms_traverse_index (abfd, vbn, &csm))
+  if (vbn != 0 && !vms_traverse_index (abfd, vbn, &csm, 0))
     {
-      if (csm.realloced && csm.idx != NULL)
+      if (csm.realloced)
 	free (csm.idx);
 
       /* Note: in case of error, we can free what was allocated on the
@@ -431,14 +483,15 @@ vms_lib_read_index (bfd *abfd, int idx,
 	return NULL;
       memcpy (csbuf, csm.idx, csm.nbr * sizeof (struct carsym));
       free (csm.idx);
-      *nbrel = csm.nbr;
+      csm.idx = csbuf;
     }
-  return csbuf;
+  *nbrel = csm.nbr;
+  return csm.idx;
 }
 
 /* Standard function.  */
 
-static const bfd_target *
+static bfd_cleanup
 _bfd_vms_lib_archive_p (bfd *abfd, enum vms_lib_kind kind)
 {
   struct vms_lhd lhd;
@@ -557,14 +610,11 @@ _bfd_vms_lib_archive_p (bfd *abfd, enum
 	  != sizeof (buf_reclen))
 	goto err;
       reclen = bfd_getl32 (buf_reclen);
-      buf = bfd_malloc (reclen);
+      if (reclen < sizeof (struct vms_dcxmap))
+	goto err;
+      buf = _bfd_malloc_and_read (abfd, reclen, reclen);
       if (buf == NULL)
 	goto err;
-      if (bfd_bread (buf, reclen, abfd) != reclen)
-	{
-	  free (buf);
-	  goto err;
-	}
       map = (struct vms_dcxmap *)buf;
       tdata->nbr_dcxsbm = bfd_getl16 (map->nsubs);
       sbm_off = bfd_getl16 (map->sub0);
@@ -572,39 +622,57 @@ _bfd_vms_lib_archive_p (bfd *abfd, enum
 	(abfd, tdata->nbr_dcxsbm * sizeof (struct dcxsbm_desc));
       for (i = 0; i < tdata->nbr_dcxsbm; i++)
 	{
-	  struct vms_dcxsbm *sbm = (struct vms_dcxsbm *) (buf + sbm_off);
+	  struct vms_dcxsbm *sbm;
 	  struct dcxsbm_desc *sbmdesc = &tdata->dcxsbm[i];
 	  unsigned int sbm_len;
 	  unsigned int sbm_sz;
 	  unsigned int off;
-	  unsigned char *data = (unsigned char *)sbm;
 	  unsigned char *buf1;
 	  unsigned int l, j;
 
+	  if (sbm_off > reclen
+	      || reclen - sbm_off < sizeof (struct vms_dcxsbm))
+	    {
+	    err_free_buf:
+	      free (buf);
+	      goto err;
+	    }
+	  sbm = (struct vms_dcxsbm *) (buf + sbm_off);
 	  sbm_sz = bfd_getl16 (sbm->size);
 	  sbm_off += sbm_sz;
-	  BFD_ASSERT (sbm_off <= reclen);
+	  if (sbm_off > reclen)
+	    goto err_free_buf;
 
 	  sbmdesc->min_char = sbm->min_char;
 	  BFD_ASSERT (sbmdesc->min_char == 0);
 	  sbmdesc->max_char = sbm->max_char;
 	  sbm_len = sbmdesc->max_char - sbmdesc->min_char + 1;
 	  l = (2 * sbm_len + 7) / 8;
-	  BFD_ASSERT
-	    (sbm_sz >= sizeof (struct vms_dcxsbm) + l + 3 * sbm_len
-	     || (tdata->nbr_dcxsbm == 1
-		 && sbm_sz >= sizeof (struct vms_dcxsbm) + l + sbm_len));
+	  if (sbm_sz < sizeof (struct vms_dcxsbm) + l + sbm_len
+	      || (tdata->nbr_dcxsbm > 1
+		  && sbm_sz < sizeof (struct vms_dcxsbm) + l + 3 * sbm_len))
+	    goto err_free_buf;
 	  sbmdesc->flags = (unsigned char *)bfd_alloc (abfd, l);
-	  memcpy (sbmdesc->flags, data + bfd_getl16 (sbm->flags), l);
+	  off = bfd_getl16 (sbm->flags);
+	  if (off > sbm_sz
+	      || sbm_sz - off < l)
+	    goto err_free_buf;
+	  memcpy (sbmdesc->flags, (bfd_byte *) sbm + off, l);
 	  sbmdesc->nodes = (unsigned char *)bfd_alloc (abfd, 2 * sbm_len);
-	  memcpy (sbmdesc->nodes, data + bfd_getl16 (sbm->nodes), 2 * sbm_len);
+	  off = bfd_getl16 (sbm->nodes);
+	  if (off > sbm_sz
+	      || sbm_sz - off < 2 * sbm_len)
+	    goto err_free_buf;
+	  memcpy (sbmdesc->nodes, (bfd_byte *) sbm + off, 2 * sbm_len);
 	  off = bfd_getl16 (sbm->next);
 	  if (off != 0)
 	    {
+	      if (off > sbm_sz
+		  || sbm_sz - off < 2 * sbm_len)
+		goto err_free_buf;
 	      /* Read the 'next' array.  */
-	      sbmdesc->next = (unsigned short *)bfd_alloc
-		(abfd, sbm_len * sizeof (unsigned short));
-	      buf1 = data + off;
+	      sbmdesc->next = (unsigned short *) bfd_alloc (abfd, 2 * sbm_len);
+	      buf1 = (bfd_byte *) sbm + off;
 	      for (j = 0; j < sbm_len; j++)
 		sbmdesc->next[j] = bfd_getl16 (buf1 + j * 2);
 	    }
@@ -627,7 +695,7 @@ _bfd_vms_lib_archive_p (bfd *abfd, enum
   if (tdata->type == LBR__C_TYP_ESHSTB || tdata->type == LBR__C_TYP_ISHSTB)
     abfd->is_thin_archive = TRUE;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  err:
   bfd_release (abfd, tdata);
@@ -637,7 +705,7 @@ _bfd_vms_lib_archive_p (bfd *abfd, enum
 
 /* Standard function for alpha libraries.  */
 
-const bfd_target *
+bfd_cleanup
 _bfd_vms_lib_alpha_archive_p (bfd *abfd)
 {
   return _bfd_vms_lib_archive_p (abfd, vms_lib_alpha);
@@ -645,7 +713,7 @@ _bfd_vms_lib_alpha_archive_p (bfd *abfd)
 
 /* Standard function for ia64 libraries.  */
 
-const bfd_target *
+bfd_cleanup
 _bfd_vms_lib_ia64_archive_p (bfd *abfd)
 {
   return _bfd_vms_lib_archive_p (abfd, vms_lib_ia64);
@@ -653,7 +721,7 @@ _bfd_vms_lib_ia64_archive_p (bfd *abfd)
 
 /* Standard function for text libraries.  */
 
-static const bfd_target *
+static bfd_cleanup
 _bfd_vms_lib_txt_archive_p (bfd *abfd)
 {
   return _bfd_vms_lib_archive_p (abfd, vms_lib_txt);
@@ -1386,6 +1454,12 @@ _bfd_vms_lib_get_module (bfd *abfd, unsi
       break;
     }
   bfd_set_filename (res, newname);
+  free (newname);
+  if (bfd_get_filename (res) == NULL)
+    {
+      bfd_close (res);
+      return NULL;
+    }
 
   tdata->cache[modidx] = res;
 
@@ -1425,7 +1499,7 @@ bfd *
 _bfd_vms_lib_get_imagelib_file (bfd *el)
 {
   bfd *archive = el->my_archive;
-  const char *modname = el->filename;
+  const char *modname = bfd_get_filename (el);
   int modlen = strlen (modname);
   char *filename;
   int j;
@@ -1451,7 +1525,7 @@ _bfd_vms_lib_get_imagelib_file (bfd *el)
     {
       /* xgettext:c-format */
       _bfd_error_handler(_("could not open shared image '%s' from '%s'"),
-			 filename, archive->filename);
+			 filename, bfd_get_filename (archive));
       bfd_release (archive, filename);
       return NULL;
     }
@@ -1973,8 +2047,7 @@ _bfd_vms_lib_build_map (unsigned int nbr
 	{
 	  if (storage > syms_max)
 	    {
-	      if (syms_max > 0)
-		free (syms);
+	      free (syms);
 	      syms_max = storage;
 	      syms = (asymbol **) bfd_malloc (syms_max);
 	      if (syms == NULL)
@@ -2025,10 +2098,8 @@ _bfd_vms_lib_build_map (unsigned int nbr
   return TRUE;
 
  error_return:
-  if (syms_max > 0)
-    free (syms);
-  if (map != NULL)
-    free (map);
+  free (syms);
+  free (map);
   return FALSE;
 }
 
@@ -2086,7 +2157,7 @@ _bfd_vms_lib_write_archive_contents (bfd
       unsigned int nl;
 
       modules[i].abfd = current;
-      modules[i].name = vms_get_module_name (current->filename, FALSE);
+      modules[i].name = vms_get_module_name (bfd_get_filename (current), FALSE);
       modules[i].ref = 1;
 
       /* FIXME: silently truncate long names ?  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vms-misc.c ./bfd/vms-misc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/vms-misc.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/vms-misc.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 /* vms-misc.c -- BFD back-end for VMS/VAX (openVMS/VAX) and
    EVAX (openVMS/Alpha) files.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    Miscellaneous functions.
 
@@ -139,13 +139,19 @@ _bfd_hexdump (int level, unsigned char *
    Size is string size (size of record).  */
 
 char *
-_bfd_vms_save_sized_string (unsigned char *str, unsigned int size)
+_bfd_vms_save_sized_string (bfd *abfd, unsigned char *str, size_t size)
 {
-  char *newstr = bfd_malloc ((bfd_size_type) size + 1);
+  char *newstr;
 
+  if (size == (size_t) -1)
+    {
+      bfd_set_error (bfd_error_no_memory);
+      return NULL;
+    }
+  newstr = bfd_alloc (abfd, size + 1);
   if (newstr == NULL)
     return NULL;
-  memcpy (newstr, (char *) str, (size_t) size);
+  memcpy (newstr, str, size);
   newstr[size] = 0;
 
   return newstr;
@@ -155,13 +161,13 @@ _bfd_vms_save_sized_string (unsigned cha
    PTR points to size byte on entry.  */
 
 char *
-_bfd_vms_save_counted_string (unsigned char *ptr, unsigned int maxlen)
+_bfd_vms_save_counted_string (bfd *abfd, unsigned char *ptr, size_t maxlen)
 {
   unsigned int len = *ptr++;
 
   if (len > maxlen)
     return NULL;
-  return _bfd_vms_save_sized_string (ptr, len);
+  return _bfd_vms_save_sized_string (abfd, ptr, len);
 }
 
 /* Object output routines.   */
@@ -586,8 +592,8 @@ vms_time_to_time_t (unsigned int hi, uns
 void
 vms_time_t_to_vms_time (time_t ut, unsigned int *hi, unsigned int *lo)
 {
-  unsigned short val[4];
-  unsigned short tmp[4];
+  unsigned int val[4];
+  unsigned int tmp[4];
   unsigned int carry;
   int i;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/warning.m4 ./bfd/warning.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/warning.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/warning.m4	2021-05-21 01:57:23.000000000 +0000
@@ -1,6 +1,6 @@
 dnl Common configure.ac fragment
 dnl
-dnl   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+dnl   Copyright (C) 2012-2020 Free Software Foundation, Inc.
 dnl
 dnl This file is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/wasm-module.c ./bfd/wasm-module.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/wasm-module.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/wasm-module.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for WebAssembly modules.
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
 
    Based on srec.c, mmo.c, and binary.c
 
@@ -111,18 +111,28 @@ wasm_read_leb128 (bfd *		  abfd,
   unsigned int num_read = 0;
   unsigned int shift = 0;
   unsigned char byte = 0;
-  bfd_boolean success = FALSE;
+  int status = 1;
 
   while (bfd_bread (&byte, 1, abfd) == 1)
     {
       num_read++;
 
-      result |= ((bfd_vma) (byte & 0x7f)) << shift;
+      if (shift < sizeof (result) * 8)
+	{
+	  result |= ((bfd_vma) (byte & 0x7f)) << shift;
+	  if ((result >> shift) != (byte & 0x7f))
+	    /* Overflow.  */
+	    status |= 2;
+	  shift += 7;
+	}
+      else if ((byte & 0x7f) != 0)
+	status |= 2;
 
-      shift += 7;
       if ((byte & 0x80) == 0)
 	{
-	  success = TRUE;
+	  status &= ~1;
+	  if (sign && (shift < 8 * sizeof (result)) && (byte & 0x40))
+	    result |= -((bfd_vma) 1 << shift);
 	  break;
 	}
     }
@@ -130,10 +140,7 @@ wasm_read_leb128 (bfd *		  abfd,
   if (length_return != NULL)
     *length_return = num_read;
   if (error_return != NULL)
-    *error_return = ! success;
-
-  if (sign && (shift < 8 * sizeof (result)) && (byte & 0x40))
-    result |= -((bfd_vma) 1 << shift);
+    *error_return = status != 0;
 
   return result;
 }
@@ -238,17 +245,12 @@ wasm_scan_name_function_section (bfd *ab
   tdata_type *tdata = abfd->tdata.any;
   asymbol *symbols = NULL;
   sec_ptr space_function_index;
-
-  if (! asect)
-    return FALSE;
-
-  if (strcmp (asect->name, WASM_NAME_SECTION) != 0)
-    return FALSE;
+  size_t amt;
 
   p = asect->contents;
   end = asect->contents + asect->size;
 
-  if (! p)
+  if (!p)
     return FALSE;
 
   while (p < end)
@@ -265,7 +267,7 @@ wasm_scan_name_function_section (bfd *ab
 
       READ_LEB128 (payload_size, p, end);
 
-      if (p > p + payload_size)
+      if (payload_size > (size_t) (end - p))
 	return FALSE;
 
       p += payload_size;
@@ -276,10 +278,7 @@ wasm_scan_name_function_section (bfd *ab
 
   READ_LEB128 (payload_size, p, end);
 
-  if (p > p + payload_size)
-    return FALSE;
-
-  if (p + payload_size > end)
+  if (payload_size > (size_t) (end - p))
     return FALSE;
 
   end = p + payload_size;
@@ -287,22 +286,29 @@ wasm_scan_name_function_section (bfd *ab
   READ_LEB128 (symcount, p, end);
 
   /* Sanity check: each symbol has at least two bytes.  */
-  if (symcount > payload_size/2)
+  if (symcount > payload_size / 2)
     return FALSE;
 
   tdata->symcount = symcount;
 
-  space_function_index = bfd_make_section_with_flags
-    (abfd, WASM_SECTION_FUNCTION_INDEX, SEC_READONLY | SEC_CODE);
+  space_function_index
+    = bfd_make_section_with_flags (abfd, WASM_SECTION_FUNCTION_INDEX,
+				   SEC_READONLY | SEC_CODE);
 
-  if (! space_function_index)
-    space_function_index = bfd_get_section_by_name (abfd, WASM_SECTION_FUNCTION_INDEX);
+  if (!space_function_index)
+    space_function_index
+      = bfd_get_section_by_name (abfd, WASM_SECTION_FUNCTION_INDEX);
 
-  if (! space_function_index)
+  if (!space_function_index)
     return FALSE;
 
-  symbols = bfd_zalloc (abfd, tdata->symcount * sizeof (asymbol));
-  if (! symbols)
+  if (_bfd_mul_overflow (tdata->symcount, sizeof (asymbol), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return FALSE;
+    }
+  symbols = bfd_alloc (abfd, amt);
+  if (!symbols)
     return FALSE;
 
   for (symcount = 0; p < end && symcount < tdata->symcount; symcount++)
@@ -315,14 +321,15 @@ wasm_scan_name_function_section (bfd *ab
       READ_LEB128 (idx, p, end);
       READ_LEB128 (len, p, end);
 
-      if (p + len < p || p + len > end)
+      if (len > (size_t) (end - p))
 	goto error_return;
 
-      name = bfd_zalloc (abfd, len + 1);
-      if (! name)
+      name = bfd_alloc (abfd, len + 1);
+      if (!name)
 	goto error_return;
 
       memcpy (name, p, len);
+      name[len] = 0;
       p += len;
 
       sym = &symbols[symcount];
@@ -343,8 +350,6 @@ wasm_scan_name_function_section (bfd *ab
   return TRUE;
 
  error_return:
-  while (symcount)
-    bfd_release (abfd, (void *)symbols[--symcount].name);
   bfd_release (abfd, symbols);
   return FALSE;
 }
@@ -379,13 +384,12 @@ wasm_scan (bfd *abfd)
   bfd_vma vma = 0x80000000;
   int section_code;
   unsigned int bytes_read;
-  char *name = NULL;
   asection *bfdsec;
 
   if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
     goto error_return;
 
-  if (! wasm_read_header (abfd, &error))
+  if (!wasm_read_header (abfd, &error))
     goto error_return;
 
   while ((section_code = wasm_read_byte (abfd, &error)) != EOF)
@@ -394,69 +398,66 @@ wasm_scan (bfd *abfd)
 	{
 	  const char *sname = wasm_section_code_to_name (section_code);
 
-	  if (! sname)
+	  if (!sname)
 	    goto error_return;
 
-	  name = strdup (sname);
-	  bfdsec = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
+	  bfdsec = bfd_make_section_anyway_with_flags (abfd, sname,
+						       SEC_HAS_CONTENTS);
 	  if (bfdsec == NULL)
 	    goto error_return;
-	  name = NULL;
 
-	  bfdsec->vma = vma;
-	  bfdsec->lma = vma;
 	  bfdsec->size = wasm_read_leb128 (abfd, &error, &bytes_read, FALSE);
 	  if (error)
 	    goto error_return;
-	  bfdsec->filepos = bfd_tell (abfd);
-	  bfdsec->alignment_power = 0;
 	}
       else
 	{
 	  bfd_vma payload_len;
-	  file_ptr section_start;
 	  bfd_vma namelen;
+	  char *name;
 	  char *prefix = WASM_SECTION_PREFIX;
-	  char *p;
-	  int ret;
+	  size_t prefixlen = strlen (prefix);
+	  ufile_ptr filesize;
 
 	  payload_len = wasm_read_leb128 (abfd, &error, &bytes_read, FALSE);
 	  if (error)
 	    goto error_return;
-	  section_start = bfd_tell (abfd);
 	  namelen = wasm_read_leb128 (abfd, &error, &bytes_read, FALSE);
-	  if (error || namelen > payload_len)
-	    goto error_return;
-	  name = bfd_zmalloc (namelen + strlen (prefix) + 1);
-	  if (! name)
+	  if (error || bytes_read > payload_len
+	      || namelen > payload_len - bytes_read)
 	    goto error_return;
-	  p = name;
-	  ret = sprintf (p, "%s", prefix);
-	  if (ret < 0 || (bfd_vma) ret != strlen (prefix))
+	  payload_len -= namelen + bytes_read;
+	  filesize = bfd_get_file_size (abfd);
+	  if (filesize != 0 && namelen > filesize)
+	    {
+	      bfd_set_error (bfd_error_file_truncated);
+	      return FALSE;
+	    }
+	  name = bfd_alloc (abfd, namelen + prefixlen + 1);
+	  if (!name)
 	    goto error_return;
-	  p += ret;
-	  if (bfd_bread (p, namelen, abfd) != namelen)
+	  memcpy (name, prefix, prefixlen);
+	  if (bfd_bread (name + prefixlen, namelen, abfd) != namelen)
 	    goto error_return;
+	  name[prefixlen + namelen] = 0;
 
-	  bfdsec = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
+	  bfdsec = bfd_make_section_anyway_with_flags (abfd, name,
+						       SEC_HAS_CONTENTS);
 	  if (bfdsec == NULL)
 	    goto error_return;
-	  name = NULL;
 
-	  bfdsec->vma = vma;
-	  bfdsec->lma = vma;
-	  bfdsec->filepos = bfd_tell (abfd);
-	  bfdsec->size = section_start + payload_len - bfdsec->filepos;
-	  bfdsec->alignment_power = 0;
+	  bfdsec->size = payload_len;
 	}
 
+      bfdsec->vma = vma;
+      bfdsec->lma = vma;
+      bfdsec->alignment_power = 0;
+      bfdsec->filepos = bfd_tell (abfd);
       if (bfdsec->size != 0)
 	{
-	  bfdsec->contents = bfd_zalloc (abfd, bfdsec->size);
-	  if (! bfdsec->contents)
-	    goto error_return;
-
-	  if (bfd_bread (bfdsec->contents, bfdsec->size, abfd) != bfdsec->size)
+	  bfdsec->contents = _bfd_alloc_and_read (abfd, bfdsec->size,
+						  bfdsec->size);
+	  if (!bfdsec->contents)
 	    goto error_return;
 	}
 
@@ -471,12 +472,6 @@ wasm_scan (bfd *abfd)
   return TRUE;
 
  error_return:
-  if (name)
-    free (name);
-
-  for (bfdsec = abfd->sections; bfdsec; bfdsec = bfdsec->next)
-    free ((void *) bfdsec->name);
-
   return FALSE;
 }
 
@@ -700,7 +695,7 @@ wasm_canonicalize_symtab (bfd *abfd, asy
 static asymbol *
 wasm_make_empty_symbol (bfd *abfd)
 {
-  bfd_size_type amt = sizeof (asymbol);
+  size_t amt = sizeof (asymbol);
   asymbol *new_symbol = (asymbol *) bfd_zalloc (abfd, amt);
 
   if (! new_symbol)
@@ -739,30 +734,37 @@ wasm_get_symbol_info (bfd *abfd ATTRIBUT
 
 /* Check whether ABFD is a WebAssembly module; if so, scan it.  */
 
-static const bfd_target *
+static bfd_cleanup
 wasm_object_p (bfd *abfd)
 {
   bfd_boolean error;
+  asection *s;
 
   if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
     return NULL;
 
-  if (! wasm_read_header (abfd, &error))
+  if (!wasm_read_header (abfd, &error))
     {
       bfd_set_error (bfd_error_wrong_format);
       return NULL;
     }
 
-  if (! wasm_mkobject (abfd) || ! wasm_scan (abfd))
+  if (!wasm_mkobject (abfd))
     return NULL;
 
-  if (! bfd_default_set_arch_mach (abfd, bfd_arch_wasm32, 0))
-    return NULL;
+  if (!wasm_scan (abfd)
+      || !bfd_default_set_arch_mach (abfd, bfd_arch_wasm32, 0))
+    {
+      bfd_release (abfd, abfd->tdata.any);
+      abfd->tdata.any = NULL;
+      return NULL;
+    }
 
-  if (wasm_scan_name_function_section (abfd, bfd_get_section_by_name (abfd, WASM_NAME_SECTION)))
+  s = bfd_get_section_by_name (abfd, WASM_NAME_SECTION);
+  if (s != NULL && wasm_scan_name_function_section (abfd, s))
     abfd->flags |= HAS_SYMS;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 /* BFD_JUMP_TABLE_WRITE */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/wasm-module.h ./bfd/wasm-module.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/wasm-module.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/wasm-module.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for WebAssembly modules.
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xcofflink.c ./bfd/xcofflink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xcofflink.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/xcofflink.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* POWER/PowerPC XCOFF linker support.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
    Written by Ian Lance Taylor <ian@cygnus.com>, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -214,7 +214,7 @@ xcoff_get_section_contents (bfd *abfd, a
 {
   if (coff_section_data (abfd, sec) == NULL)
     {
-      bfd_size_type amt = sizeof (struct coff_section_tdata);
+      size_t amt = sizeof (struct coff_section_tdata);
 
       sec->used_by_bfd = bfd_zalloc (abfd, amt);
       if (sec->used_by_bfd == NULL)
@@ -227,8 +227,7 @@ xcoff_get_section_contents (bfd *abfd, a
 
       if (! bfd_malloc_and_get_section (abfd, sec, &contents))
 	{
-	  if (contents != NULL)
-	    free (contents);
+	  free (contents);
 	  return FALSE;
 	}
       coff_section_data (abfd, sec)->contents = contents;
@@ -526,7 +525,7 @@ xcoff_get_archive_info (struct bfd_link_
   entryp = *slot;
   if (!entryp)
     {
-      entryp = bfd_zalloc (archive, sizeof (entry));
+      entryp = bfd_zalloc (info->output_bfd, sizeof (entry));
       if (!entryp)
 	return NULL;
 
@@ -593,7 +592,7 @@ struct bfd_link_hash_table *
 _bfd_xcoff_bfd_link_hash_table_create (bfd *abfd)
 {
   struct xcoff_link_hash_table *ret;
-  bfd_size_type amt = sizeof (* ret);
+  size_t amt = sizeof (* ret);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -764,7 +763,7 @@ xcoff_set_import_path (struct bfd_link_i
       if (*pp == NULL)
 	{
 	  struct xcoff_import_file *n;
-	  bfd_size_type amt = sizeof (* n);
+	  size_t amt = sizeof (*n);
 
 	  n = bfd_alloc (info->output_bfd, amt);
 	  if (n == NULL)
@@ -1000,7 +999,7 @@ xcoff_link_add_dynamic_symbols (bfd *abf
 
   if (abfd->my_archive == NULL || bfd_is_thin_archive (abfd->my_archive))
     {
-      if (!bfd_xcoff_split_import_path (abfd, abfd->filename,
+      if (!bfd_xcoff_split_import_path (abfd, bfd_get_filename (abfd),
 					&n->path, &n->file))
 	return FALSE;
       n->member = "";
@@ -1013,7 +1012,8 @@ xcoff_link_add_dynamic_symbols (bfd *abf
       if (!archive_info->impfile)
 	{
 	  if (!bfd_xcoff_split_import_path (archive_info->archive,
-					    archive_info->archive->filename,
+					    bfd_get_filename (archive_info
+							      ->archive),
 					    &archive_info->imppath,
 					    &archive_info->impfile))
 	    return FALSE;
@@ -1317,14 +1317,17 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	{
 	  bfd_byte *linenos;
 
-	  amt = linesz * o->lineno_count;
-	  linenos = bfd_malloc (amt);
+	  if (bfd_seek (abfd, o->line_filepos, SEEK_SET) != 0)
+	    goto error_return;
+	  if (_bfd_mul_overflow (linesz, o->lineno_count, &amt))
+	    {
+	      bfd_set_error (bfd_error_file_too_big);
+	      goto error_return;
+	    }
+	  linenos = _bfd_malloc_and_read (abfd, amt, amt);
 	  if (linenos == NULL)
 	    goto error_return;
 	  reloc_info[o->target_index].linenos = linenos;
-	  if (bfd_seek (abfd, o->line_filepos, SEEK_SET) != 0
-	      || bfd_bread (linenos, amt, abfd) != amt)
-	    goto error_return;
 	}
     }
 
@@ -2175,7 +2178,6 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	  /* If we are not keeping memory, free the reloc information.  */
 	  if (! info->keep_memory
 	      && coff_section_data (abfd, o) != NULL
-	      && coff_section_data (abfd, o)->relocs != NULL
 	      && ! coff_section_data (abfd, o)->keep_relocs)
 	    {
 	      free (coff_section_data (abfd, o)->relocs);
@@ -2185,11 +2187,8 @@ xcoff_link_add_symbols (bfd *abfd, struc
 
       /* Free up the line numbers.  FIXME: We could cache these
 	 somewhere for the final link, to avoid reading them again.  */
-      if (reloc_info[o->target_index].linenos != NULL)
-	{
-	  free (reloc_info[o->target_index].linenos);
-	  reloc_info[o->target_index].linenos = NULL;
-	}
+      free (reloc_info[o->target_index].linenos);
+      reloc_info[o->target_index].linenos = NULL;
     }
 
   free (reloc_info);
@@ -2203,10 +2202,8 @@ xcoff_link_add_symbols (bfd *abfd, struc
     {
       for (o = abfd->sections; o != NULL; o = o->next)
 	{
-	  if (reloc_info[o->target_index].csects != NULL)
-	    free (reloc_info[o->target_index].csects);
-	  if (reloc_info[o->target_index].linenos != NULL)
-	    free (reloc_info[o->target_index].linenos);
+	  free (reloc_info[o->target_index].csects);
+	  free (reloc_info[o->target_index].linenos);
 	}
       free (reloc_info);
     }
@@ -2520,7 +2517,7 @@ xcoff_find_function (struct bfd_link_inf
     {
       char *fnname;
       struct xcoff_link_hash_entry *hfn;
-      bfd_size_type amt;
+      size_t amt;
 
       amt = strlen (h->root.root.string) + 2;
       fnname = bfd_malloc (amt);
@@ -2688,9 +2685,17 @@ xcoff_need_ldrel_p (struct bfd_link_info
     case R_RLA:
       /* Absolute relocations against absolute symbols can be
 	 resolved statically.  */
-      if (h != NULL && bfd_is_abs_symbol (&h->root))
-	return FALSE;
-
+      if (h != NULL
+	  && (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	  && !h->root.rel_from_abs)
+	{
+	  asection *sec = h->root.u.def.section;
+	  if (bfd_is_abs_section (sec)
+	      || (sec != NULL
+		  && bfd_is_abs_section (sec->output_section)))
+	    return FALSE;
+	}
       return TRUE;
     }
 }
@@ -2901,7 +2906,7 @@ xcoff_mark_symbol_by_name (struct bfd_li
 static bfd_boolean
 xcoff_mark (struct bfd_link_info *info, asection *sec)
 {
-  if (bfd_is_abs_section (sec)
+  if (bfd_is_const_section (sec)
       || (sec->flags & SEC_MARK) != 0)
     return TRUE;
 
@@ -2981,7 +2986,6 @@ xcoff_mark (struct bfd_link_info *info,
 
 	  if (! info->keep_memory
 	      && coff_section_data (sec->owner, sec) != NULL
-	      && coff_section_data (sec->owner, sec)->relocs != NULL
 	      && ! coff_section_data (sec->owner, sec)->keep_relocs)
 	    {
 	      free (coff_section_data (sec->owner, sec)->relocs);
@@ -3044,7 +3048,7 @@ bfd_xcoff_link_record_set (bfd *output_b
 {
   struct xcoff_link_hash_entry *h = (struct xcoff_link_hash_entry *) harg;
   struct xcoff_link_size_list *n;
-  bfd_size_type amt;
+  size_t amt;
 
   if (bfd_get_flavour (output_bfd) != bfd_target_xcoff_flavour)
     return TRUE;
@@ -3122,9 +3126,7 @@ bfd_xcoff_import_symbol (bfd *output_bfd
 
   if (val != (bfd_vma) -1)
     {
-      if (h->root.type == bfd_link_hash_defined
-	  && (!bfd_is_abs_symbol (&h->root)
-	      || h->root.u.def.value != val))
+      if (h->root.type == bfd_link_hash_defined)
 	(*info->callbacks->multiple_definition) (info, &h->root, output_bfd,
 						 bfd_abs_section_ptr, val);
 
@@ -3214,7 +3216,13 @@ bfd_xcoff_link_count_reloc (bfd *output_
 }
 
 /* This function is called for each symbol to which the linker script
-   assigns a value.  */
+   assigns a value.
+   FIXME: In cases like the linker test ld-scripts/defined5 where a
+   symbol is defined both by an input object file and the script,
+   the script definition doesn't override the object file definition
+   as is usual for other targets.  At least not when the symbol is
+   output.  Other uses of the symbol value by the linker do use the
+   script value.  */
 
 bfd_boolean
 bfd_xcoff_record_link_assignment (bfd *output_bfd,
@@ -3292,7 +3300,7 @@ static bfd_boolean
 xcoff_build_ldsym (struct xcoff_loader_info *ldinfo,
 		   struct xcoff_link_hash_entry *h)
 {
-  bfd_size_type amt;
+  size_t amt;
 
   /* Warn if this symbol is exported but not defined.  */
   if ((h->flags & XCOFF_EXPORT) != 0
@@ -3640,7 +3648,7 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
   bfd *sub;
   struct bfd_strtab_hash *debug_strtab;
   bfd_byte *debug_contents = NULL;
-  bfd_size_type amt;
+  size_t amt;
 
   if (bfd_get_flavour (output_bfd) != bfd_target_xcoff_flavour)
     {
@@ -3967,10 +3975,8 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
   return TRUE;
 
  error_return:
-  if (ldinfo.strings != NULL)
-    free (ldinfo.strings);
-  if (debug_contents != NULL)
-    free (debug_contents);
+  free (ldinfo.strings);
+  free (debug_contents);
   return FALSE;
 }
 
@@ -4782,7 +4788,7 @@ xcoff_link_input_bfd (struct xcoff_final
 	{
 	  bfd_size_type sz = o->rawsize ? o->rawsize : o->size;
 	  if (!bfd_get_section_contents (input_bfd, o, flinfo->contents, 0, sz))
-	    return FALSE;
+	    goto err_out;
 	  contents = flinfo->contents;
 	}
 
@@ -4804,7 +4810,7 @@ xcoff_link_input_bfd (struct xcoff_final
 			      (flinfo->section_info[target_index].relocs
 			       + o->output_section->reloc_count)));
 	  if (internal_relocs == NULL)
-	    return FALSE;
+	    goto err_out;
 
 	  /* Call processor specific code to relocate the section
 	     contents.  */
@@ -4814,7 +4820,7 @@ xcoff_link_input_bfd (struct xcoff_final
 					   internal_relocs,
 					   flinfo->internal_syms,
 					   xcoff_data (input_bfd)->csects))
-	    return FALSE;
+	    goto err_out;
 
 	  offset = o->output_section->vma + o->output_offset - o->vma;
 	  irel = internal_relocs;
@@ -4861,12 +4867,12 @@ xcoff_link_input_bfd (struct xcoff_final
 			{
 			  struct xcoff_toc_rel_hash *n;
 			  struct xcoff_link_section_info *si;
-			  bfd_size_type amt;
+			  size_t amt;
 
 			  amt = sizeof (* n);
 			  n = bfd_alloc (flinfo->output_bfd, amt);
 			  if (n == NULL)
-			    return FALSE;
+			    goto err_out;
 			  si = flinfo->section_info + target_index;
 			  n->next = si->toc_rel_hashes;
 			  n->h = h;
@@ -4948,7 +4954,7 @@ xcoff_link_input_bfd (struct xcoff_final
 				      (input_bfd, is, buf));
 
 			      if (name == NULL)
-				return FALSE;
+				goto err_out;
 
 			      (*flinfo->info->callbacks->unattached_reloc)
 				(flinfo->info, name,
@@ -4972,7 +4978,7 @@ xcoff_link_input_bfd (struct xcoff_final
 		  if (!xcoff_create_ldrel (output_bfd, flinfo,
 					   o->output_section, input_bfd,
 					   irel, sec, h))
-		    return FALSE;
+		    goto err_out;
 		}
 	    }
 
@@ -4983,7 +4989,7 @@ xcoff_link_input_bfd (struct xcoff_final
       if (! bfd_set_section_contents (output_bfd, o->output_section,
 				      contents, (file_ptr) o->output_offset,
 				      o->size))
-	return FALSE;
+	goto err_out;
     }
 
   obj_coff_keep_syms (input_bfd) = keep_syms;
@@ -4995,6 +5001,10 @@ xcoff_link_input_bfd (struct xcoff_final
     }
 
   return TRUE;
+
+ err_out:
+  obj_coff_keep_syms (input_bfd) = keep_syms;
+  return FALSE;
 }
 
 #undef N_TMASK
@@ -6199,31 +6209,16 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
     }
 
   /* Free up the buffers used by xcoff_link_input_bfd.  */
-  if (flinfo.internal_syms != NULL)
-    {
-      free (flinfo.internal_syms);
-      flinfo.internal_syms = NULL;
-    }
-  if (flinfo.sym_indices != NULL)
-    {
-      free (flinfo.sym_indices);
-      flinfo.sym_indices = NULL;
-    }
-  if (flinfo.linenos != NULL)
-    {
-      free (flinfo.linenos);
-      flinfo.linenos = NULL;
-    }
-  if (flinfo.contents != NULL)
-    {
-      free (flinfo.contents);
-      flinfo.contents = NULL;
-    }
-  if (flinfo.external_relocs != NULL)
-    {
-      free (flinfo.external_relocs);
-      flinfo.external_relocs = NULL;
-    }
+  free (flinfo.internal_syms);
+  flinfo.internal_syms = NULL;
+  free (flinfo.sym_indices);
+  flinfo.sym_indices = NULL;
+  free (flinfo.linenos);
+  flinfo.linenos = NULL;
+  free (flinfo.contents);
+  flinfo.contents = NULL;
+  free (flinfo.external_relocs);
+  flinfo.external_relocs = NULL;
 
   /* The value of the last C_FILE symbol is supposed to be -1.  Write
      it out again.  */
@@ -6242,11 +6237,8 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
      input files.  */
   bfd_hash_traverse (&info->hash->table, xcoff_write_global_symbol, &flinfo);
 
-  if (flinfo.outsyms != NULL)
-    {
-      free (flinfo.outsyms);
-      flinfo.outsyms = NULL;
-    }
+  free (flinfo.outsyms);
+  flinfo.outsyms = NULL;
 
   /* Now that we have written out all the global symbols, we know the
      symbol indices to use for relocs against them, and we can finally
@@ -6328,11 +6320,8 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 	goto error_return;
     }
 
-  if (external_relocs != NULL)
-    {
-      free (external_relocs);
-      external_relocs = NULL;
-    }
+  free (external_relocs);
+  external_relocs = NULL;
 
   /* Free up the section information.  */
   if (flinfo.section_info != NULL)
@@ -6341,10 +6330,8 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 
       for (i = 0; i < abfd->section_count; i++)
 	{
-	  if (flinfo.section_info[i].relocs != NULL)
-	    free (flinfo.section_info[i].relocs);
-	  if (flinfo.section_info[i].rel_hashes != NULL)
-	    free (flinfo.section_info[i].rel_hashes);
+	  free (flinfo.section_info[i].relocs);
+	  free (flinfo.section_info[i].rel_hashes);
 	}
       free (flinfo.section_info);
       flinfo.section_info = NULL;
@@ -6352,7 +6339,9 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 
   /* Write out the loader section contents.  */
   o = xcoff_hash_table (info)->loader_section;
-  if (o)
+  if (o != NULL
+      && o->size != 0
+      && o->output_section != bfd_abs_section_ptr)
     {
       BFD_ASSERT ((bfd_byte *) flinfo.ldrel
 		  == (xcoff_hash_table (info)->loader_section->contents
@@ -6364,19 +6353,25 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 
   /* Write out the magic sections.  */
   o = xcoff_hash_table (info)->linkage_section;
-  if (o->size > 0
+  if (o != NULL
+      && o->size != 0
+      && o->output_section != bfd_abs_section_ptr
       && ! bfd_set_section_contents (abfd, o->output_section, o->contents,
 				     (file_ptr) o->output_offset,
 				     o->size))
     goto error_return;
   o = xcoff_hash_table (info)->toc_section;
-  if (o->size > 0
+  if (o != NULL
+      && o->size != 0
+      && o->output_section != bfd_abs_section_ptr
       && ! bfd_set_section_contents (abfd, o->output_section, o->contents,
 				     (file_ptr) o->output_offset,
 				     o->size))
     goto error_return;
   o = xcoff_hash_table (info)->descriptor_section;
-  if (o->size > 0
+  if (o != NULL
+      && o->size != 0
+      && o->output_section != bfd_abs_section_ptr
       && ! bfd_set_section_contents (abfd, o->output_section, o->contents,
 				     (file_ptr) o->output_offset,
 				     o->size))
@@ -6399,7 +6394,9 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 
   /* Write out the debugging string table.  */
   o = xcoff_hash_table (info)->debug_section;
-  if (o != NULL)
+  if (o != NULL
+      && o->size != 0
+      && o->output_section != bfd_abs_section_ptr)
     {
       struct bfd_strtab_hash *debug_strtab;
 
@@ -6429,27 +6426,18 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 
       for (i = 0; i < abfd->section_count; i++)
 	{
-	  if (flinfo.section_info[i].relocs != NULL)
-	    free (flinfo.section_info[i].relocs);
-	  if (flinfo.section_info[i].rel_hashes != NULL)
-	    free (flinfo.section_info[i].rel_hashes);
+	  free (flinfo.section_info[i].relocs);
+	  free (flinfo.section_info[i].rel_hashes);
 	}
       free (flinfo.section_info);
     }
 
-  if (flinfo.internal_syms != NULL)
-    free (flinfo.internal_syms);
-  if (flinfo.sym_indices != NULL)
-    free (flinfo.sym_indices);
-  if (flinfo.outsyms != NULL)
-    free (flinfo.outsyms);
-  if (flinfo.linenos != NULL)
-    free (flinfo.linenos);
-  if (flinfo.contents != NULL)
-    free (flinfo.contents);
-  if (flinfo.external_relocs != NULL)
-    free (flinfo.external_relocs);
-  if (external_relocs != NULL)
-    free (external_relocs);
+  free (flinfo.internal_syms);
+  free (flinfo.sym_indices);
+  free (flinfo.outsyms);
+  free (flinfo.linenos);
+  free (flinfo.contents);
+  free (flinfo.external_relocs);
+  free (external_relocs);
   return FALSE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xcofflink.h ./bfd/xcofflink.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xcofflink.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/xcofflink.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* POWER/PowerPC XCOFF linker support.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xsym.c ./bfd/xsym.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xsym.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/xsym.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* xSYM symbol-file support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -127,24 +127,12 @@ bfd_sym_valid (bfd *abfd)
 unsigned char *
 bfd_sym_read_name_table (bfd *abfd, bfd_sym_header_block *dshb)
 {
-  unsigned char *rstr;
-  long ret;
   size_t table_size = dshb->dshb_nte.dti_page_count * dshb->dshb_page_size;
   size_t table_offset = dshb->dshb_nte.dti_first_page * dshb->dshb_page_size;
 
-  rstr = bfd_alloc (abfd, table_size);
-  if (rstr == NULL)
-    return rstr;
-
-  bfd_seek (abfd, table_offset, SEEK_SET);
-  ret = bfd_bread (rstr, table_size, abfd);
-  if (ret < 0 || (unsigned long) ret != table_size)
-    {
-      bfd_release (abfd, rstr);
-      return NULL;
-    }
-
-  return rstr;
+  if (bfd_seek (abfd, table_offset, SEEK_SET) != 0)
+    return FALSE;
+  return _bfd_alloc_and_read (abfd, table_size, table_size);
 }
 
 void
@@ -1808,22 +1796,11 @@ bfd_sym_print_type_information_table_ent
 
   fprintf (f, "\n            ");
 
-  buf = malloc (entry->physical_size);
-  if (buf == NULL)
-    {
-      fprintf (f, "[ERROR]\n");
-      return;
-    }
-  if (bfd_seek (abfd, entry->offset, SEEK_SET) < 0)
-    {
-      fprintf (f, "[ERROR]\n");
-      free (buf);
-      return;
-    }
-  if (bfd_bread (buf, entry->physical_size, abfd) != entry->physical_size)
+  if (bfd_seek (abfd, entry->offset, SEEK_SET) != 0
+      || (buf = _bfd_malloc_and_read (abfd, entry->physical_size,
+				      entry->physical_size)) == NULL)
     {
       fprintf (f, "[ERROR]\n");
-      free (buf);
       return;
     }
 
@@ -2253,7 +2230,7 @@ bfd_sym_scan (bfd *abfd, bfd_sym_version
   return 0;
 }
 
-const bfd_target *
+bfd_cleanup
 bfd_sym_object_p (bfd *abfd)
 {
   bfd_sym_version version = -1;
@@ -2270,7 +2247,7 @@ bfd_sym_object_p (bfd *abfd)
   if (bfd_sym_scan (abfd, version, mdata) != 0)
     goto wrong;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  wrong:
   bfd_set_error (bfd_error_wrong_format);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xsym.h ./bfd/xsym.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xsym.h	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/xsym.h	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* xSYM symbol-file support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -686,7 +686,7 @@ extern void bfd_sym_display_type_informa
   (bfd *, FILE *);
 extern int bfd_sym_scan
   (bfd *, bfd_sym_version, bfd_sym_data_struct *);
-extern const bfd_target * bfd_sym_object_p
+extern bfd_cleanup bfd_sym_object_p
   (bfd *);
 extern void bfd_sym_get_symbol_info
   (bfd *, asymbol *, symbol_info *);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xtensa-isa.c ./bfd/xtensa-isa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xtensa-isa.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/xtensa-isa.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Configurable Xtensa ISA support.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -223,7 +223,7 @@ xtensa_insnbuf_from_chars (xtensa_isa is
       int word_inx = byte_to_word_index (i);
       int bit_inx = byte_to_bit_index (i);
 
-      insn[word_inx] |= (*cp & 0xff) << bit_inx;
+      insn[word_inx] |= (unsigned) (*cp & 0xff) << bit_inx;
     }
 }
 
@@ -340,43 +340,26 @@ xtensa_isa_free (xtensa_isa isa)
      the memory allocated by xtensa_isa_init and restore the xtensa_isa
      structure to its initial state.  */
 
-  if (intisa->opname_lookup_table)
-    {
-      free (intisa->opname_lookup_table);
-      intisa->opname_lookup_table = 0;
-    }
+  free (intisa->opname_lookup_table);
+  intisa->opname_lookup_table = 0;
 
-  if (intisa->state_lookup_table)
-    {
-      free (intisa->state_lookup_table);
-      intisa->state_lookup_table = 0;
-    }
+  free (intisa->state_lookup_table);
+  intisa->state_lookup_table = 0;
+
+  free (intisa->sysreg_lookup_table);
+  intisa->sysreg_lookup_table = 0;
 
-  if (intisa->sysreg_lookup_table)
-    {
-      free (intisa->sysreg_lookup_table);
-      intisa->sysreg_lookup_table = 0;
-    }
   for (n = 0; n < 2; n++)
     {
-      if (intisa->sysreg_table[n])
-	{
-	  free (intisa->sysreg_table[n]);
-	  intisa->sysreg_table[n] = 0;
-	}
+      free (intisa->sysreg_table[n]);
+      intisa->sysreg_table[n] = 0;
     }
 
-  if (intisa->interface_lookup_table)
-    {
-      free (intisa->interface_lookup_table);
-      intisa->interface_lookup_table = 0;
-    }
+  free (intisa->interface_lookup_table);
+  intisa->interface_lookup_table = 0;
 
-  if (intisa->funcUnit_lookup_table)
-    {
-      free (intisa->funcUnit_lookup_table);
-      intisa->funcUnit_lookup_table = 0;
-    }
+  free (intisa->funcUnit_lookup_table);
+  intisa->funcUnit_lookup_table = 0;
 }
 
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xtensa-modules.c ./bfd/xtensa-modules.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/bfd/xtensa-modules.c	2020-03-07 02:07:41.000000000 +0000
+++ ./bfd/xtensa-modules.c	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 /* Xtensa configuration-specific ISA information.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/ChangeLog ./ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/ChangeLog	2020-03-07 02:07:41.000000000 +0000
+++ ./ChangeLog	2021-05-21 01:57:23.000000000 +0000
@@ -1,16 +1,158 @@
-2020-02-01  Sergio Durigan Junior  <sergiodj@redhat.com>
+2020-07-24  Aaron Merey  <amerey@redhat.com>
 
-	* configure.ac: Don't abort the build if trying to build GDB in tree
-	_and_ invoking with '--enable-src-release-build'.
-	* configure: Regenerate.
-	* src-release.sh (do_proto_toplev): Invoke 'configure' using
-	'--enable-src-release-build'.
-
-2020-01-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* configure.ac: Abort the build with an error if trying to build
-	GDB in tree.
-	* configure: Regenerate.
+	* configure: Rebuild.
+	* configure.ac: Remove AC_DEBUGINFOD.
+
+2020-07-04  Nick Clifton  <nickc@redhat.com>
+
+	Binutils 2.35 branch created.
+
+2020-04-21  Stephen Casner  <casner@acm.org>
+
+	PR 25830
+	* configure.ac (noconfigdirs): Exclude gdb & gprof for pdp11.
+	* configure: Rebuild.
+
+2020-03-12  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in: Rebuild.
+	* Makefile.def (gdbserver): Depend on gdbsupport.
+
+2020-03-12  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in: Rebuild.
+	* Makefile.def (gdbsupport): Don't depend on bfd.
+
+2020-03-12  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in: Rebuild.
+	* Makefile.def (gdbsupport): Depend on intl.
+
+2020-02-17  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* configure.ac (configdirs): Add gnulib and gdbsupport when building
+	gdbserver.
+
+2020-02-14  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in: Rebuild.
+	* Makefile.def: Make gdbserver require gnulib and libiberty.
+
+2020-02-07  Tom Tromey  <tom@tromey.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* src-release.sh (GDB_SUPPORT_DIRS): Add gdbserver.
+	* gdbserver: New directory, moved from gdb/gdbserver.
+	* configure.ac (host_tools): Add gdbserver.
+	Only build gdbserver on certain systems.
+	* Makefile.in, configure: Rebuild.
+	* Makefile.def (host_modules, dependencies): Add gdbserver.
+	* MAINTAINERS: Add gdbserver.
+
+2020-01-28  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* src-release.sh (getver): Look for gdbsupport's
+	create-version.sh script at the current directory if tool is
+	"gdb".
+
+2020-01-19  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* remote-sim.c (gdbsim_target::wait): Return
+	sim_data->remote_sim_ptid instead of inferior_ptid.
+
+2020-01-18  Nick Clifton  <nickc@redhat.com>
+
+	Binutils 2.34 branch created.
+
+2020-01-18  Nick Clifton  <nickc@redhat.com>
+
+	Synchronize top level configure files with master version:
+
+	2020-01-01  Ben Elliston  <bje@gnu.org>
+
+	* config.guess: Update copyright years.
+	* config.sub: Likewise.
+
+	2019-12-21  Ben Elliston  <bje@gnu.org>
+
+	* config.guess (set_cc_for_build): Prevent multiple calls by
+	checking if $tmp is already set. We can't check CC_FOR_BUILD as
+	the user may set it externally. Thanks to TorbjÃ¶rn Granlund for
+	the bug report.
+
+	2019-12-21  TorbjÃ¶rn Granlund  <tg@gmplib.org>
+
+	* config.guess (alpha:Linux:*:*): Guard against missing
+	/proc/cpuinfo by redirecting standard error to /dev/null.
+
+	2019-09-12  Daniel Bittman  <danielbittman1@gmail.com>
+
+	* config.guess (*:Twizzler:*:*): New.
+	* config.sub (-twizzler*): New.
+
+	2019-07-24  Ben Elliston  <bje@gnu.org>
+
+	* config.guess (mips:OSF1:*.*): Whitespace cleanup.
+
+	2019-06-30  Ben Elliston  <bje@gnu.org>
+
+	* config.sub (case $os): Match nsk* and powerunix. Don't later
+	match nsk* and set os=nsk which removes the OS version number.
+
+	2019-06-30  Ben Elliston  <bje@gnu.org>
+
+	* config.sub: Recognise os108*.
+
+	2019-06-26  Ben Elliston  <bje@gnu.org>
+
+	* config.sub (hp300): Set $os to hpux.
+
+	2019-06-26  Ben Elliston  <bje@gnu.org>
+
+	* config.sub (vsta): Move into alphabetical order.
+
+	2019-06-10  Ben Elliston  <bje@gnu.org>
+
+	* config.guess (*:OS108:*:*): Recognise new OS.
+
+	2019-05-28  Ben Elliston  <bje@gnu.org>
+
+	* config.guess (*:Darwin:*:*): Run xcode-select to determine if a
+	system compiler is installed. If not, do not run set_cc_for_build,
+	as the default cc will open a dialog box asking to install
+	Xcode. If no C compiler is available, guess based on uname -p and
+	uname -m.
+
+	2019-05-28  Ben Elliston  <bje@gnu.org>
+
+	* config.guess (*:Darwin:*:*): Simplify UNAME_PROCESSOR.
+
+2020-01-17  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.def: Add dependencies of all-gdbsupport on all-bfd.
+	* Makefile.in: Re-generate.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* src-release.sh (GDB_SUPPORT_DIRS): Add gdbsupport.
+	* MAINTAINERS: Add gdbsupport.
+	* configure: Rebuild.
+	* configure.ac (configdirs): Add gdbsupport.
+	* gdbsupport: New directory, move from gdb/gdbsupport.
+	* Makefile.def (host_modules, dependencies): Add gnulib.
+	* Makefile.in: Rebuild.
+
+2020-01-09  Aaron Merey  <amerey@redhat.com>
+
+        * config/debuginfod.m4: New file. Add macro AC_DEBUGINFOD. Adds
+        new configure option --with-debuginfod.
+        * configure: Regenerate.
+        * configure.ac: Call AC_DEBUGINFOD.
+
+2019-12-26  Christian Biesinger  <cbiesinger@google.com>
+
+	* .gitignore: Add perf.data and perf.data.old.
 
 2019-10-17  Sergio Durigan Junior  <sergiodj@redhat.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/ax_count_cpus.m4 ./config/ax_count_cpus.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/ax_count_cpus.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/ax_count_cpus.m4	2021-05-21 01:57:23.000000000 +0000
@@ -0,0 +1,101 @@
+# ===========================================================================
+#      https://www.gnu.org/software/autoconf-archive/ax_count_cpus.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_COUNT_CPUS([ACTION-IF-DETECTED],[ACTION-IF-NOT-DETECTED])
+#
+# DESCRIPTION
+#
+#   Attempt to count the number of logical processor cores (including
+#   virtual and HT cores) currently available to use on the machine and
+#   place detected value in CPU_COUNT variable.
+#
+#   On successful detection, ACTION-IF-DETECTED is executed if present. If
+#   the detection fails, then ACTION-IF-NOT-DETECTED is triggered. The
+#   default ACTION-IF-NOT-DETECTED is to set CPU_COUNT to 1.
+#
+# LICENSE
+#
+#   Copyright (c) 2014,2016 Karlson2k (Evgeny Grin) <k2k@narod.ru>
+#   Copyright (c) 2012 Brian Aker <brian@tangent.org>
+#   Copyright (c) 2008 Michael Paul Bailey <jinxidoru@byu.net>
+#   Copyright (c) 2008 Christophe Tournayre <turn3r@users.sourceforge.net>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 22
+
+  AC_DEFUN([AX_COUNT_CPUS],[dnl
+      AC_REQUIRE([AC_CANONICAL_HOST])dnl
+      AC_REQUIRE([AC_PROG_EGREP])dnl
+      AC_MSG_CHECKING([the number of available CPUs])
+      CPU_COUNT="0"
+
+      # Try generic methods
+
+      # 'getconf' is POSIX utility, but '_NPROCESSORS_ONLN' and
+      # 'NPROCESSORS_ONLN' are platform-specific
+      command -v getconf >/dev/null 2>&1 && \
+        CPU_COUNT=`getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null` || CPU_COUNT="0"
+      AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null || ! command -v nproc >/dev/null 2>&1]],[[: # empty]],[dnl
+        # 'nproc' is part of GNU Coreutils and is widely available
+        CPU_COUNT=`OMP_NUM_THREADS='' nproc 2>/dev/null` || CPU_COUNT=`nproc 2>/dev/null` || CPU_COUNT="0"
+      ])dnl
+
+      AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null]],[[: # empty]],[dnl
+        # Try platform-specific preferred methods
+        AS_CASE([[$host_os]],dnl
+          [[*linux*]],[[CPU_COUNT=`lscpu -p 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+,' -c` || CPU_COUNT="0"]],dnl
+          [[*darwin*]],[[CPU_COUNT=`sysctl -n hw.logicalcpu 2>/dev/null` || CPU_COUNT="0"]],dnl
+          [[freebsd*]],[[command -v sysctl >/dev/null 2>&1 && CPU_COUNT=`sysctl -n kern.smp.cpus 2>/dev/null` || CPU_COUNT="0"]],dnl
+          [[netbsd*]], [[command -v sysctl >/dev/null 2>&1 && CPU_COUNT=`sysctl -n hw.ncpuonline 2>/dev/null` || CPU_COUNT="0"]],dnl
+          [[solaris*]],[[command -v psrinfo >/dev/null 2>&1 && CPU_COUNT=`psrinfo 2>/dev/null | $EGREP -e '^@<:@0-9@:>@.*on-line' -c 2>/dev/null` || CPU_COUNT="0"]],dnl
+          [[mingw*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]],dnl
+          [[msys*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]],dnl
+          [[cygwin*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]]dnl
+        )dnl
+      ])dnl
+
+      AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null || ! command -v sysctl >/dev/null 2>&1]],[[: # empty]],[dnl
+        # Try less preferred generic method
+        # 'hw.ncpu' exist on many platforms, but not on GNU/Linux
+        CPU_COUNT=`sysctl -n hw.ncpu 2>/dev/null` || CPU_COUNT="0"
+      ])dnl
+
+      AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null]],[[: # empty]],[dnl
+      # Try platform-specific fallback methods
+      # They can be less accurate and slower then preferred methods
+        AS_CASE([[$host_os]],dnl
+          [[*linux*]],[[CPU_COUNT=`$EGREP -e '^processor' -c /proc/cpuinfo 2>/dev/null` || CPU_COUNT="0"]],dnl
+          [[*darwin*]],[[CPU_COUNT=`system_profiler SPHardwareDataType 2>/dev/null | $EGREP -i -e 'number of cores:'|cut -d : -f 2 -s|tr -d ' '` || CPU_COUNT="0"]],dnl
+          [[freebsd*]],[[CPU_COUNT=`dmesg 2>/dev/null| $EGREP -e '^cpu@<:@0-9@:>@+: '|sort -u|$EGREP -e '^' -c` || CPU_COUNT="0"]],dnl
+          [[netbsd*]], [[CPU_COUNT=`command -v cpuctl >/dev/null 2>&1 && cpuctl list 2>/dev/null| $EGREP -e '^@<:@0-9@:>@+ .* online ' -c` || \
+                           CPU_COUNT=`dmesg 2>/dev/null| $EGREP -e '^cpu@<:@0-9@:>@+ at'|sort -u|$EGREP -e '^' -c` || CPU_COUNT="0"]],dnl
+          [[solaris*]],[[command -v kstat >/dev/null 2>&1 && CPU_COUNT=`kstat -m cpu_info -s state -p 2>/dev/null | $EGREP -c -e 'on-line'` || \
+                           CPU_COUNT=`kstat -m cpu_info 2>/dev/null | $EGREP -c -e 'module: cpu_info'` || CPU_COUNT="0"]],dnl
+          [[mingw*]],[AS_IF([[CPU_COUNT=`reg query 'HKLM\\Hardware\\Description\\System\\CentralProcessor' 2>/dev/null | $EGREP -e '\\\\@<:@0-9@:>@+$' -c`]],dnl
+                        [[: # empty]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]])],dnl
+          [[msys*]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]],dnl
+          [[cygwin*]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]]dnl
+        )dnl
+      ])dnl
+
+      AS_IF([[test "x$CPU_COUNT" != "x0" && test "$CPU_COUNT" -gt 0 2>/dev/null]],[dnl
+          AC_MSG_RESULT([[$CPU_COUNT]])
+          m4_ifvaln([$1],[$1],)dnl
+        ],[dnl
+          m4_ifval([$2],[dnl
+            AS_UNSET([[CPU_COUNT]])
+            AC_MSG_RESULT([[unable to detect]])
+            $2
+          ], [dnl
+            CPU_COUNT="1"
+            AC_MSG_RESULT([[unable to detect (assuming 1)]])
+          ])dnl
+        ])dnl
+      ])dnl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/bootstrap-lto-lean.mk ./config/bootstrap-lto-lean.mk
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/bootstrap-lto-lean.mk	1970-01-01 00:00:00.000000000 +0000
+++ ./config/bootstrap-lto-lean.mk	2021-05-21 01:57:23.000000000 +0000
@@ -0,0 +1,17 @@
+# This option enables LTO for stage4 and LTO for generators in stage3 with profiledbootstrap.
+# Otherwise, LTO is used in only stage3.
+
+STAGE3_CFLAGS += -flto=jobserver
+override STAGEtrain_CFLAGS := $(filter-out -flto=jobserver,$(STAGEtrain_CFLAGS))
+STAGEtrain_GENERATOR_CFLAGS += -flto=jobserver
+STAGEfeedback_CFLAGS += -flto=jobserver
+
+# assumes the host supports the linker plugin
+LTO_AR = $$r/$(HOST_SUBDIR)/prev-gcc/gcc-ar$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/
+LTO_RANLIB = $$r/$(HOST_SUBDIR)/prev-gcc/gcc-ranlib$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/
+
+LTO_EXPORTS = AR="$(LTO_AR)"; export AR; \
+	      RANLIB="$(LTO_RANLIB)"; export RANLIB;
+LTO_FLAGS_TO_PASS = AR="$(LTO_AR)" RANLIB="$(LTO_RANLIB)"
+
+do-compare = /bin/true
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/bootstrap-lto.mk ./config/bootstrap-lto.mk
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/bootstrap-lto.mk	2020-03-07 02:07:41.000000000 +0000
+++ ./config/bootstrap-lto.mk	2021-05-21 01:57:23.000000000 +0000
@@ -15,3 +15,4 @@ LTO_EXPORTS = AR="$(LTO_AR)"; export AR;
 LTO_FLAGS_TO_PASS = AR="$(LTO_AR)" RANLIB="$(LTO_RANLIB)"
 
 do-compare = $(SHELL) $(srcdir)/contrib/compare-lto $$f1 $$f2
+extra-compare = gcc/lto1$(exeext)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/bootstrap-Og.mk ./config/bootstrap-Og.mk
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/bootstrap-Og.mk	1970-01-01 00:00:00.000000000 +0000
+++ ./config/bootstrap-Og.mk	2021-05-21 01:57:23.000000000 +0000
@@ -0,0 +1 @@
+BOOT_CFLAGS := -Og $(filter-out -O%, $(BOOT_CFLAGS))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/cet.m4 ./config/cet.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/cet.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./config/cet.m4	2021-05-21 01:57:23.000000000 +0000
@@ -3,16 +3,19 @@ dnl GCC_CET_FLAGS
 dnl    (SHELL-CODE_HANDLER)
 dnl
 AC_DEFUN([GCC_CET_FLAGS],[dnl
-GCC_ENABLE(cet, no, ,[enable Intel CET in target libraries],
+GCC_ENABLE(cet, auto, ,[enable Intel CET in target libraries],
 	   permit yes|no|auto)
 AC_MSG_CHECKING([for CET support])
 
+# NB: Avoid nested save_CFLAGS and save_LDFLAGS.
 case "$host" in
   i[[34567]]86-*-linux* | x86_64-*-linux*)
     case "$enable_cet" in
       auto)
 	# Check if target supports multi-byte NOPs
-	# and if assembler supports CET insn.
+	# and if compiler and assembler support CET insn.
+	cet_save_CFLAGS="$CFLAGS"
+	CFLAGS="$CFLAGS -fcf-protection"
 	AC_COMPILE_IFELSE(
 	 [AC_LANG_PROGRAM(
 	  [],
@@ -25,6 +28,7 @@ asm ("setssbsy");
 	  ])],
 	 [enable_cet=yes],
 	 [enable_cet=no])
+	CFLAGS="$cet_save_CFLAGS"
 	;;
       yes)
 	# Check if assembler supports CET.
@@ -48,3 +52,127 @@ else
   AC_MSG_RESULT([no])
 fi
 ])
+
+dnl
+dnl GCC_CET_HOST_FLAGS
+dnl    (SHELL-CODE_HANDLER)
+dnl
+AC_DEFUN([GCC_CET_HOST_FLAGS],[dnl
+GCC_ENABLE(cet, auto, ,[enable Intel CET in host libraries],
+	   permit yes|no|auto)
+AC_MSG_CHECKING([for CET support])
+
+case "$host" in
+  i[[34567]]86-*-linux* | x86_64-*-linux*)
+    may_have_cet=yes
+    cet_save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -fcf-protection"
+    case "$enable_cet" in
+      auto)
+	# Check if target supports multi-byte NOPs
+	# and if compiler and assembler support CET.
+	AC_COMPILE_IFELSE(
+	 [AC_LANG_PROGRAM(
+	  [],
+	  [
+#if !defined(__SSE2__)
+#error target does not support multi-byte NOPs
+#else
+asm ("setssbsy");
+#endif
+	  ])],
+	 [enable_cet=yes],
+	 [enable_cet=no])
+	;;
+      yes)
+	# Check if compiler and assembler support CET.
+	AC_COMPILE_IFELSE(
+	 [AC_LANG_PROGRAM(
+	  [],
+	  [asm ("setssbsy");])],
+	 [support_cet=yes],
+	 [support_cet=no])
+	if test $support_cet = "no"; then
+	  if test x$enable_bootstrap != xno \
+	     && test -z "${with_build_subdir}" \
+	     && (test ! -f ../stage_current \
+	         || test `cat ../stage_current` != "stage1"); then
+	    # Require CET support only for the final GCC build.
+	    AC_MSG_ERROR([compiler and assembler with CET support are required for --enable-cet])
+	  else
+	    # Don't enable CET without CET support for non-bootstrap
+	    # build, in stage1 nor for build support.
+	    enable_cet=no
+	  fi
+	fi
+	;;
+    esac
+    CFLAGS="$cet_save_CFLAGS"
+    ;;
+  *)
+    may_have_cet=no
+    enable_cet=no
+    ;;
+esac
+
+cet_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -fcf-protection=none"
+cet_save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS -Wl,-z,ibt,-z,shstk"
+if test x$may_have_cet = xyes; then
+  # Check whether -fcf-protection=none -Wl,-z,ibt,-z,shstk work.
+  AC_TRY_LINK(
+    [],[return 0;],
+    [may_have_cet=yes],
+    [may_have_cet=no])
+fi
+
+if test x$may_have_cet = xyes; then
+  if test x$cross_compiling = xno; then
+    AC_TRY_RUN([
+static void
+foo (void)
+{
+}
+
+static void
+__attribute__ ((noinline, noclone))
+xxx (void (*f) (void))
+{
+  f ();
+}
+
+static void
+__attribute__ ((noinline, noclone))
+bar (void)
+{
+  xxx (foo);
+}
+
+int
+main ()
+{
+  bar ();
+  return 0;
+}
+    ],
+    [have_cet=no],
+    [have_cet=yes])
+    if test x$enable_cet = xno -a x$have_cet = xyes; then
+      AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
+    fi
+  fi
+else
+  # Enable CET in cross compiler if possible so that it will run on both
+  # CET and non-CET hosts.
+  have_cet=yes
+fi
+if test x$enable_cet = xyes; then
+  $1="-fcf-protection"
+  AC_MSG_RESULT([yes])
+else
+  AC_MSG_RESULT([no])
+fi
+CFLAGS="$cet_save_CFLAGS"
+LDFLAGS="$cet_save_LDFLAGS"
+])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/ChangeLog ./config/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/ChangeLog	2020-03-07 02:07:41.000000000 +0000
+++ ./config/ChangeLog	2021-05-21 01:57:23.000000000 +0000
@@ -1,3 +1,111 @@
+2020-09-08  Alan Modra  <amodra@gmail.com>
+
+	Sync from gcc
+	2020-07-15  H.J. Lu  <hjl.tools@gmail.com>
+	PR bootstrap/96202
+	* cet.m4 (GCC_CET_HOST_FLAGS): Don't enable CET without CET
+	support in stage1 nor for build support.
+
+2020-07-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* largefile.m4 (ACX_LARGEFILE) <sparc-*-solaris*|i?86-*-solaris*>:
+	Check for <sys/procfs.h> incompatilibity with large-file support
+	on Solaris.
+	Only disable large-file support and perhaps plugins if needed.
+	Set, substitute LARGEFILE_CPPFLAGS if so.
+
+2020-07-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/26301
+	* pkg.m4 (PKG_CHECK_MODULES): Use AC_TRY_LINK only if
+	$pkg_failed = no.
+
+2020-07-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/26301
+	* pkg.m4 (PKG_CHECK_MODULES): Add AC_TRY_LINK to check if
+	$pkg_cv_[]$1[]_LIBS works.
+
+2020-07-24  Aaron Merey  <amerey@redhat.com>
+
+	* debuginfod.m4: use PKG_CHECK_MODULES.
+	* pkg.m4: New file.
+
+2020-07-04  Nick Clifton  <nickc@redhat.com>
+
+	Binutils 2.35 branch created.
+
+2020-06-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+	Sync with GCC
+	2020-05-29  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR bootstrap/95413
+	* cet.m4: Replace save_CFLAGS and save_LDFLAGS with
+	cet_save_CFLAGS and cet_save_LDFLAGS.
+
+2020-05-16  H.J. Lu  <hongjiu.lu@intel.com>
+
+	Sync with GCC
+	2020-05-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR bootstrap/95147
+	* cet.m4 (GCC_CET_FLAGS): Also check if -fcf-protection works
+	when defaulting to auto.
+
+	2020-05-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* cet.m4 (GCC_CET_FLAGS): Change default to auto.
+
+2020-05-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+	Sync with GCC
+	2020-05-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR bootstrap/94998
+	* cet.m4 (GCC_CET_HOST_FLAGS): Enable CET in cross compiler if
+	possible.
+
+2020-04-29  H.J. Lu  <hongjiu.lu@intel.com>
+
+	Sync with GCC
+	2020-04-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR bootstrap/94739
+	* cet.m4 (GCC_CET_HOST_FLAGS): Add -fcf-protection=none to
+	-Wl,-z,ibt,-z,shstk.  Check whether -fcf-protection=none
+	-Wl,-z,ibt,-z,shstk works first.
+
+	2020-04-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR bootstrap/94739
+	* cet.m4 (GCC_CET_HOST_FLAGS): New.
+
+	2020-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+	PR libfortran/94694
+	PR libfortran/94586
+	* math.m4 (GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1,
+	GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2): New.
+
+2020-02-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ax_count_cpus.m4: New file, backported from GCC.
+	* bootstrap-Og.mk: New file, backported from GCC.
+	* bootstrap-lto-lean.mk: New file, backported from GCC.
+	* bootstrap-lto.mk: Changes backported from GCC.
+	* futex.m4: Changes backported from GCC.
+	* gthr.m4: Changes backported from GCC.
+	* lib-link.m4: Changes backported from GCC.
+	* mh-mingw: Changes backported from GCC.
+	* no-executables.m4: Changes backported from GCC.
+	* tls.m4: Changes backported from GCC.
+	* toolexeclibdir.m4: New file, backported from GCC.
+
+2020-01-18  Nick Clifton  <nickc@redhat.com>
+
+	Binutils 2.34 branch created.
+
 2019-09-09  Phil Blundell  <pb@pbcl.net>
 
 	binutils 2.33 branch created.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/debuginfod.m4 ./config/debuginfod.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/debuginfod.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/debuginfod.m4	2021-05-21 01:57:23.000000000 +0000
@@ -0,0 +1,30 @@
+dnl Copyright (C) 1997-2020 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License.  As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+m4_include([../config/pkg.m4])
+
+AC_DEFUN([AC_DEBUGINFOD],
+[
+# Handle optional debuginfod support
+AC_ARG_WITH([debuginfod],
+  AC_HELP_STRING([--with-debuginfod], [Enable debuginfo lookups with debuginfod (auto/yes/no)]),
+  [], [with_debuginfod=auto])
+AC_MSG_CHECKING([whether to use debuginfod])
+AC_MSG_RESULT([$with_debuginfod])
+
+if test "x$with_debuginfod" != xno; then
+  PKG_CHECK_MODULES([DEBUGINFOD], [libdebuginfod >= 0.179],
+    [AC_DEFINE([HAVE_LIBDEBUGINFOD], [1], [Define to 1 if debuginfod is enabled.])],
+    [if test "x$with_debuginfod" = xyes; then
+       AC_MSG_ERROR(["--with-debuginfod was given, but libdebuginfod is missing or unusable."])
+     else
+       AC_MSG_WARN([libdebuginfod is missing or unusable; some features may be unavailable.])
+     fi])
+else
+  AC_MSG_WARN([debuginfod support disabled; some features may be unavailable.])
+fi
+])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/futex.m4 ./config/futex.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/futex.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./config/futex.m4	2021-05-21 01:57:23.000000000 +0000
@@ -9,7 +9,7 @@ AC_DEFUN([GCC_LINUX_FUTEX],[dnl
 GCC_ENABLE(linux-futex,default, ,[use the Linux futex system call],
 	   permit yes|no|default)
 case "$target" in
-  *-linux*)
+  *-linux* | *-uclinux*)
     case "$enable_linux_futex" in
       default)
 	# If headers don't have gettid/futex syscalls definition, then
@@ -22,6 +22,7 @@ case "$target" in
 	AC_LINK_IFELSE(
 	 [AC_LANG_PROGRAM(
 	  [#include <sys/syscall.h>
+	   #include <unistd.h>
 	   int lk;],
 	  [syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);])],
 	  [save_LIBS="$LIBS"
@@ -48,6 +49,7 @@ If so, please configure with --disable-l
 	AC_LINK_IFELSE(
 	 [AC_LANG_PROGRAM(
 	  [#include <sys/syscall.h>
+	   #include <unistd.h>
 	   int lk;],
 	  [syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);])],[],
 	  [AC_MSG_ERROR([SYS_gettid and SYS_futex required for --enable-linux-futex])])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/gthr.m4 ./config/gthr.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/gthr.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./config/gthr.m4	2021-05-21 01:57:23.000000000 +0000
@@ -13,6 +13,7 @@ AC_DEFUN([GCC_AC_THREAD_HEADER],
 case $1 in
     aix)	thread_header=config/rs6000/gthr-aix.h ;;
     dce)	thread_header=config/pa/gthr-dce.h ;;
+    gcn)	thread_header=config/gcn/gthr-gcn.h ;;
     lynx)	thread_header=config/gthr-lynx.h ;;
     mipssde)	thread_header=config/mips/gthr-mipssde.h ;;
     posix)	thread_header=gthr-posix.h ;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/largefile.m4 ./config/largefile.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/largefile.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./config/largefile.m4	2021-05-21 01:57:23.000000000 +0000
@@ -1,5 +1,5 @@
 # This macro wraps AC_SYS_LARGEFILE with one exception for Solaris.
-# PR 9992/binutils: We have to replicate everywhere the behaviour of
+# PR binutils/9992: We have to replicate everywhere the behaviour of
 # bfd's configure script so that all the directories agree on the size
 # of structures used to describe files.
 
@@ -16,17 +16,38 @@ AC_REQUIRE([AC_CANONICAL_TARGET])
 AC_PLUGINS
 
 case "${host}" in
-changequote(,)dnl
-  sparc-*-solaris*|i[3-7]86-*-solaris*)
-changequote([,])dnl
-    # On native 32bit sparc and ia32 solaris, large-file and procfs support
-    # are mutually exclusive; and without procfs support, the bfd/ elf module
-    # cannot provide certain routines such as elfcore_write_prpsinfo
-    # or elfcore_write_prstatus.  So unless the user explicitly requested
-    # large-file support through the --enable-largefile switch, disable
-    # large-file support in favor of procfs support.
-    test "${target}" = "${host}" -a "x$plugins" = xno \
-      && : ${enable_largefile="no"}
+  sparc-*-solaris*|i?86-*-solaris*)
+    # On native 32-bit Solaris/SPARC and x86, large-file and procfs support
+    # were mutually exclusive until Solaris 11.3.  Without procfs support,
+    # the bfd/ elf module cannot provide certain routines such as
+    # elfcore_write_prpsinfo or elfcore_write_prstatus.  So unless the user
+    # explicitly requested large-file support through the
+    # --enable-largefile switch, disable large-file support in favor of
+    # procfs support.
+    #
+    # Check if <sys/procfs.h> is incompatible with large-file support.
+    AC_TRY_COMPILE([#define _FILE_OFFSET_BITS 64
+#define _STRUCTURED_PROC 1
+#include <sys/procfs.h>], , acx_cv_procfs_lfs=yes, acx_cv_procfs_lfs=no)
+    #
+    # Forcefully disable large-file support only if necessary, gdb is in
+    # tree and enabled.
+    if test "${target}" = "${host}" -a "$acx_cv_procfs_lfs" = no \
+         -a -d $srcdir/../gdb -a "$enable_gdb" != no; then
+      : ${enable_largefile="no"}
+      if test "$plugins" = yes; then
+	AC_MSG_WARN([
+plugin support disabled; require large-file support which is incompatible with GDB.])
+	plugins=no
+      fi
+    fi
+    #
+    # Explicitly undef _FILE_OFFSET_BITS if enable_largefile=no for the
+    # benefit of g++ 9+ which predefines it on Solaris.
+    if test "$enable_largefile" = no; then
+      LARGEFILE_CPPFLAGS="-U_FILE_OFFSET_BITS"
+      AC_SUBST(LARGEFILE_CPPFLAGS)
+    fi
     ;;
 esac
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/lib-link.m4 ./config/lib-link.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/lib-link.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./config/lib-link.m4	2021-05-21 01:57:23.000000000 +0000
@@ -150,6 +150,11 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
       fi
     fi
 ])
+  AC_LIB_ARG_WITH([lib$1-type],
+[  --with-lib$1-type=TYPE     type of library to search for (auto/static/shared) ],
+  [ with_lib$1_type=$withval ], [ with_lib$1_type=auto ])
+  lib_type=`eval echo \$with_lib$1_type`
+
   dnl Search the library and its dependencies in $additional_libdir and
   dnl $LDFLAGS. Using breadth-first-seach.
   LIB[]NAME=
@@ -195,13 +200,13 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
           found_so=
           found_a=
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
               found_dir="$additional_libdir"
               found_so="$additional_libdir/lib$name.$shlibext"
               if test -f "$additional_libdir/lib$name.la"; then
                 found_la="$additional_libdir/lib$name.la"
               fi
-            else
+            elif test x$lib_type != xshared; then
               if test -f "$additional_libdir/lib$name.$libext"; then
                 found_dir="$additional_libdir"
                 found_a="$additional_libdir/lib$name.$libext"
@@ -217,13 +222,13 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
                     found_dir="$dir"
                     found_so="$dir/lib$name.$shlibext"
                     if test -f "$dir/lib$name.la"; then
                       found_la="$dir/lib$name.la"
                     fi
-                  else
+                  elif test x$lib_type != xshared; then
                     if test -f "$dir/lib$name.$libext"; then
                       found_dir="$dir"
                       found_a="$dir/lib$name.$libext"
@@ -487,8 +492,13 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
             dnl known to the linker and runtime loader. (All the system
             dnl directories known to the linker should also be known to the
             dnl runtime loader, otherwise the system is severely misconfigured.)
-            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+              LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+            else
+              LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l:lib$name.$libext"
+              LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l:lib$name.$libext"
+            fi
           fi
         fi
       fi
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/math.m4 ./config/math.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/math.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./config/math.m4	2021-05-21 01:57:23.000000000 +0000
@@ -48,3 +48,67 @@ main ()
                        [Define to 1 if you have the `$1' function.])
   fi
 ])
+
+dnl GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1([name], [type])
+dnl
+dnl Check if math function NAME fallback for function with single
+dnl TYPE argument and TYPE result can be implemented using
+dnl __builtin_NAME expanded inline without needing unavailable math
+dnl library function.
+AC_DEFUN([GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1],
+[
+  AC_REQUIRE([GCC_CHECK_LIBM])
+if test $gcc_cv_math_func_$1 = no; then
+  AC_CACHE_CHECK([for inline __builtin_$1], [gcc_cv_math_inline_builtin_$1],
+		 [AC_LINK_IFELSE([AC_LANG_SOURCE([
+$2
+$1_fallback ($2 x)
+{
+  return __builtin_$1 (x);
+}
+
+int
+main ()
+{
+  return 0;
+}
+])],
+[gcc_cv_math_inline_builtin_$1=yes],
+[gcc_cv_math_inline_builtin_$1=no])])
+  if test $gcc_cv_math_inline_builtin_$1 = yes; then
+    AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_INLINE_BUILTIN_$1),[1],
+	      [Define to 1 if `__builtin_$1' is expanded inline.])
+  fi
+fi])
+
+dnl GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2([name], [type])
+dnl
+dnl Check if math function NAME fallback for function with two
+dnl TYPE arguments and TYPE result can be implemented using
+dnl __builtin_NAME expanded inline without needing unavailable math
+dnl library function.
+AC_DEFUN([GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2],
+[
+  AC_REQUIRE([GCC_CHECK_LIBM])
+if test $gcc_cv_math_func_$1 = no; then
+  AC_CACHE_CHECK([for inline __builtin_$1], [gcc_cv_math_inline_builtin_$1],
+		 [AC_LINK_IFELSE([AC_LANG_SOURCE([
+$2
+$1_fallback ($2 x, $2 y)
+{
+  return __builtin_$1 (x, y);
+}
+
+int
+main ()
+{
+  return 0;
+}
+])],
+[gcc_cv_math_inline_builtin_$1=yes],
+[gcc_cv_math_inline_builtin_$1=no])])
+  if test $gcc_cv_math_inline_builtin_$1 = yes; then
+    AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_INLINE_BUILTIN_$1),[1],
+	      [Define to 1 if `__builtin_$1' is expanded inline.])
+  fi
+fi])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/mh-mingw ./config/mh-mingw
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/mh-mingw	2020-03-07 02:07:41.000000000 +0000
+++ ./config/mh-mingw	2021-05-21 01:57:23.000000000 +0000
@@ -2,6 +2,11 @@
 # Vista (see PR33281 for details).
 BOOT_CFLAGS += -D__USE_MINGW_ACCESS -Wno-pedantic-ms-format
 CFLAGS += -D__USE_MINGW_ACCESS
+STAGE1_CXXFLAGS += -D__USE_MINGW_ACCESS
+STAGE2_CXXFLAGS += -D__USE_MINGW_ACCESS
+STAGE3_CXXFLAGS += -D__USE_MINGW_ACCESS
+STAGE4_CXXFLAGS += -D__USE_MINGW_ACCESS
+
 # Increase stack limit to a figure based on the Linux default, with 4MB added
 # as GCC turns out to need that much more to pass all the limits-* tests.
 LDFLAGS += -Wl,--stack,12582912
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/no-executables.m4 ./config/no-executables.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/no-executables.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./config/no-executables.m4	2021-05-21 01:57:23.000000000 +0000
@@ -25,7 +25,9 @@ AC_BEFORE([$0], [_AC_COMPILER_EXEEXT])
 AC_BEFORE([$0], [AC_LINK_IFELSE])
 
 m4_define([_AC_COMPILER_EXEEXT],
-[AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
+[AC_LANG_CONFTEST([AC_LANG_PROGRAM(
+		     [#include <stdio.h>],
+		     [printf ("hello world\n");])])
 # FIXME: Cleanup?
 AS_IF([AC_TRY_EVAL(ac_link)], [gcc_no_link=no], [gcc_no_link=yes])
 if test x$gcc_no_link = xyes; then
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/pkg.m4 ./config/pkg.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/pkg.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/pkg.m4	2021-05-21 01:57:23.000000000 +0000
@@ -0,0 +1,283 @@
+# pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
+# serial 12 (pkg-config-0.29.2)
+
+dnl Copyright Â© 2004 Scott James Remnant <scott@netsplit.com>.
+dnl Copyright Â© 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+dnl 02111-1307, USA.
+dnl
+dnl As a special exception to the GNU General Public License, if you
+dnl distribute this file as part of a program that contains a
+dnl configuration script generated by Autoconf, you may include it under
+dnl the same distribution terms that you use for the rest of that
+dnl program.
+
+dnl PKG_PREREQ(MIN-VERSION)
+dnl -----------------------
+dnl Since: 0.29
+dnl
+dnl Verify that the version of the pkg-config macros are at least
+dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+dnl installed version of pkg-config, this checks the developer's version
+dnl of pkg.m4 when generating configure.
+dnl
+dnl To ensure that this macro is defined, also add:
+dnl m4_ifndef([PKG_PREREQ],
+dnl     [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+dnl
+dnl See the "Since" comment for each macro you use to see what version
+dnl of the macros you require.
+m4_defun([PKG_PREREQ],
+[m4_define([PKG_MACROS_VERSION], [0.29.2])
+m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
+    [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
+])dnl PKG_PREREQ
+
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+dnl ----------------------------------
+dnl Since: 0.16
+dnl
+dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+dnl first found in the path. Checks that the version of pkg-config found
+dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+dnl used since that's the first version where most current features of
+dnl pkg-config existed.
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=m4_default([$1], [0.9.0])
+	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+		PKG_CONFIG=""
+	fi
+fi[]dnl
+])dnl PKG_PROG_PKG_CONFIG
+
+dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------------------------------
+dnl Since: 0.18
+dnl
+dnl Check to see whether a particular set of modules exists. Similar to
+dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+dnl
+dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+dnl only at the first occurence in configure.ac, so if the first place
+dnl it's called might be skipped (such as if it is within an "if", you
+dnl have to call PKG_CHECK_EXISTS manually
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_default([$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+dnl ---------------------------------------------
+dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+dnl pkg_failed based on the result.
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes ],
+		     [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])dnl _PKG_CONFIG
+
+dnl _PKG_SHORT_ERRORS_SUPPORTED
+dnl ---------------------------
+dnl Internal check to see if pkg-config supports short errors.
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])dnl _PKG_SHORT_ERRORS_SUPPORTED
+
+
+dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl   [ACTION-IF-NOT-FOUND])
+dnl --------------------------------------------------------------
+dnl Since: 0.4.0
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $2])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+dnl Check whether $pkg_cv_[]$1[]_LIBS works.
+if test $pkg_failed = no; then
+  pkg_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $pkg_cv_[]$1[]_LIBS"
+  AC_TRY_LINK([],[], [], [pkg_failed=yes])
+  LDFLAGS=$pkg_save_LDFLAGS
+fi
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+        AC_MSG_RESULT([no])
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+        else
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+	m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+        ])
+elif test $pkg_failed = untried; then
+        AC_MSG_RESULT([no])
+	m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
+else
+	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+	$3
+fi[]dnl
+])dnl PKG_CHECK_MODULES
+
+
+dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl   [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------------------
+dnl Since: 0.29
+dnl
+dnl Checks for existence of MODULES and gathers its build flags with
+dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+dnl and VARIABLE-PREFIX_LIBS from --libs.
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+dnl configure.ac.
+AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+_save_PKG_CONFIG=$PKG_CONFIG
+PKG_CONFIG="$PKG_CONFIG --static"
+PKG_CHECK_MODULES($@)
+PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+])dnl PKG_CHECK_MODULES_STATIC
+
+
+dnl PKG_INSTALLDIR([DIRECTORY])
+dnl -------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable pkgconfigdir as the location where a module
+dnl should install pkg-config .pc files. By default the directory is
+dnl $libdir/pkgconfig, but the default can be changed by passing
+dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+dnl parameter.
+AC_DEFUN([PKG_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([pkgconfigdir],
+    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+    [with_pkgconfigdir=]pkg_default)
+AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_INSTALLDIR
+
+
+dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+dnl --------------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+dnl module should install arch-independent pkg-config .pc files. By
+dnl default the directory is $datadir/pkgconfig, but the default can be
+dnl changed by passing DIRECTORY. The user can override through the
+dnl --with-noarch-pkgconfigdir parameter.
+AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([noarch-pkgconfigdir],
+    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+    [with_noarch_pkgconfigdir=]pkg_default)
+AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_NOARCH_INSTALLDIR
+
+
+dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------
+dnl Since: 0.28
+dnl
+dnl Retrieves the value of the pkg-config variable for the given module.
+AC_DEFUN([PKG_CHECK_VAR],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$5], [$4])dnl
+])dnl PKG_CHECK_VAR
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/tls.m4 ./config/tls.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/tls.m4	2020-03-07 02:07:41.000000000 +0000
+++ ./config/tls.m4	2021-05-21 01:57:23.000000000 +0000
@@ -76,7 +76,7 @@ AC_DEFUN([GCC_CHECK_TLS], [
 	  dnl Shared library options may depend on the host; this check
 	  dnl is only known to be needed for GNU/Linux.
 	  case $host in
-	    *-*-linux*)
+	    *-*-linux* | -*-uclinuxfdpic*)
 	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
 	      ;;
 	  esac
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/toolexeclibdir.m4 ./config/toolexeclibdir.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config/toolexeclibdir.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/toolexeclibdir.m4	2021-05-21 01:57:23.000000000 +0000
@@ -0,0 +1,31 @@
+dnl toolexeclibdir override support.
+dnl Copyright (C) 2020  Free Software Foundation, Inc.
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3, or (at your option)
+dnl any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; see the file COPYING3.  If not see
+dnl <http://www.gnu.org/licenses/>.
+
+AC_DEFUN([GCC_WITH_TOOLEXECLIBDIR],
+[AC_ARG_WITH(toolexeclibdir,
+  [AS_HELP_STRING([--with-toolexeclibdir=DIR],
+		  [install libraries built with a cross compiler within DIR])],
+  [dnl
+case ${with_toolexeclibdir} in
+  /)
+    ;;
+  */)
+    with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'`
+    ;;
+esac],
+  [with_toolexeclibdir=no])
+])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config.guess ./config.guess
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config.guess	2020-03-07 02:07:41.000000000 +0000
+++ ./config.guess	2021-05-21 01:57:23.000000000 +0000
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2019 Free Software Foundation, Inc.
+#   Copyright 1992-2020 Free Software Foundation, Inc.
 
-timestamp='2019-04-28'
+timestamp='2020-01-01'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2019 Free Software Foundation, Inc.
+Copyright 1992-2020 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -99,6 +99,8 @@ tmp=
 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
 
 set_cc_for_build() {
+    # prevent multiple calls if $tmp is already set
+    test "$tmp" && return 0
     : "${TMPDIR=/tmp}"
     # shellcheck disable=SC2039
     { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
@@ -262,6 +264,9 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
     *:SolidBSD:*:*)
 	echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
 	exit ;;
+    *:OS108:*:*)
+	echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
+	exit ;;
     macppc:MirBSD:*:*)
 	echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
 	exit ;;
@@ -271,12 +276,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
     *:Sortix:*:*)
 	echo "$UNAME_MACHINE"-unknown-sortix
 	exit ;;
+    *:Twizzler:*:*)
+	echo "$UNAME_MACHINE"-unknown-twizzler
+	exit ;;
     *:Redox:*:*)
 	echo "$UNAME_MACHINE"-unknown-redox
 	exit ;;
     mips:OSF1:*.*)
-        echo mips-dec-osf1
-        exit ;;
+	echo mips-dec-osf1
+	exit ;;
     alpha:OSF1:*:*)
 	case $UNAME_RELEASE in
 	*4.0)
@@ -918,7 +926,7 @@ EOF
 	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
 	  EV5)   UNAME_MACHINE=alphaev5 ;;
 	  EV56)  UNAME_MACHINE=alphaev56 ;;
 	  PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -1325,38 +1333,39 @@ EOF
 	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
 	exit ;;
     *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	set_cc_for_build
-	if test "$UNAME_PROCESSOR" = unknown ; then
-	    UNAME_PROCESSOR=powerpc
+	UNAME_PROCESSOR=`uname -p`
+	case $UNAME_PROCESSOR in
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	if command -v xcode-select > /dev/null 2> /dev/null && \
+		! xcode-select --print-path > /dev/null 2> /dev/null ; then
+	    # Avoid executing cc if there is no toolchain installed as
+	    # cc will be a stub that puts up a graphical alert
+	    # prompting the user to install developer tools.
+	    CC_FOR_BUILD=no_compiler_found
+	else
+	    set_cc_for_build
 	fi
-	if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
-	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-		       grep IS_64BIT_ARCH >/dev/null
-		then
-		    case $UNAME_PROCESSOR in
-			i386) UNAME_PROCESSOR=x86_64 ;;
-			powerpc) UNAME_PROCESSOR=powerpc64 ;;
-		    esac
-		fi
-		# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-		if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-		       grep IS_PPC >/dev/null
-		then
-		    UNAME_PROCESSOR=powerpc
-		fi
+	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		   grep IS_64BIT_ARCH >/dev/null
+	    then
+		case $UNAME_PROCESSOR in
+		    i386) UNAME_PROCESSOR=x86_64 ;;
+		    powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		esac
+	    fi
+	    # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+	    if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+		   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		   grep IS_PPC >/dev/null
+	    then
+		UNAME_PROCESSOR=powerpc
 	    fi
 	elif test "$UNAME_PROCESSOR" = i386 ; then
-	    # Avoid executing cc on OS X 10.9, as it ships with a stub
-	    # that puts up a graphical alert prompting to install
-	    # developer tools.  Any system running Mac OS X 10.7 or
-	    # later (Darwin 11 and later) is required to have a 64-bit
-	    # processor. This is not true of the ARM version of Darwin
-	    # that Apple uses in portable devices.
-	    UNAME_PROCESSOR=x86_64
+	    # uname -m returns i386 or x86_64
+	    UNAME_PROCESSOR=$UNAME_MACHINE
 	fi
 	echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
 	exit ;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config.sub ./config.sub
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/config.sub	2020-03-07 02:07:41.000000000 +0000
+++ ./config.sub	2021-05-21 01:57:23.000000000 +0000
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2019 Free Software Foundation, Inc.
+#   Copyright 1992-2020 Free Software Foundation, Inc.
 
-timestamp='2019-05-23'
+timestamp='2020-01-01'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patch
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2019 Free Software Foundation, Inc.
+Copyright 1992-2020 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -337,17 +337,14 @@ case $1 in
 				basic_machine=m88k-harris
 				os=sysv3
 				;;
-			hp300)
+			hp300 | hp300hpux)
 				basic_machine=m68k-hp
+				os=hpux
 				;;
 			hp300bsd)
 				basic_machine=m68k-hp
 				os=bsd
 				;;
-			hp300hpux)
-				basic_machine=m68k-hp
-				os=hpux
-				;;
 			hppaosf)
 				basic_machine=hppa1.1-hp
 				os=osf
@@ -360,10 +357,6 @@ case $1 in
 				basic_machine=i386-mach
 				os=mach
 				;;
-			vsta)
-				basic_machine=i386-pc
-				os=vsta
-				;;
 			isi68 | isi)
 				basic_machine=m68k-isi
 				os=sysv
@@ -612,6 +605,10 @@ case $1 in
 				basic_machine=vax-dec
 				os=vms
 				;;
+			vsta)
+				basic_machine=i386-pc
+				os=vsta
+				;;
 			vxworks960)
 				basic_machine=i960-wrs
 				os=vxworks
@@ -1346,11 +1343,11 @@ case $os in
 	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
 	     | sym* | kopensolaris* | plan9* \
 	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-	     | aos* | aros* | cloudabi* | sortix* \
+	     | aos* | aros* | cloudabi* | sortix* | twizzler* \
 	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
 	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
 	     | knetbsd* | mirbsd* | netbsd* \
-	     | bitrig* | openbsd* | solidbsd* | libertybsd* \
+	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
 	     | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
 	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
 	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
@@ -1368,7 +1365,8 @@ case $os in
 	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
 	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
 	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi*)
+	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+	     | nsk* | powerunix)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	qnx*)
@@ -1452,9 +1450,6 @@ case $os in
 	ns2)
 		os=nextstep2
 		;;
-	nsk*)
-		os=nsk
-		;;
 	# Preserve the version number of sinix5.
 	sinix5.*)
 		os=`echo $os | sed -e 's|sinix|sysv|'`
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/configure ./configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/configure	2020-03-07 02:07:41.000000000 +0000
+++ ./configure	2021-05-21 01:57:23.000000000 +0000
@@ -2279,23 +2279,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-if test x"${enable_gdb}" != x"no" -a x"${enable_src_release_build}" != x"yes"; then
-  # For this branch, we do not support building GDB in-tree.
-  # Try to detect whether we are in this situation or not by
-  # searching for a couple of known files in the source directory.
-  if test -f gnulib/update-gnulib.sh -a -f gdb/ChangeLog; then
-    as_fn_error $? "GDB must be configured and built in a directory separate from its sources.
-
-To do so, create a dedicated directory for your GDB build and invoke
-the configure script from that directory:
-
-      $ mkdir build
-      $ cd build
-      $ <full path to your sources>/gdb-VERSION/configure [etc...]
-      $ make" "$LINENO" 5
-  fi
-fi
-
 progname=$0
 # if PWD already has a value, it is probably wrong.
 if test -n "$PWD" ; then PWD=`${PWDCMD-pwd}`; fi
@@ -2798,7 +2781,7 @@ host_libs="intl libiberty opcodes bfd re
 # binutils, gas and ld appear in that order because it makes sense to run
 # "make check" in that particular order.
 # If --enable-gold is used, "gold" may replace "ld".
-host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools"
+host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools"
 
 # these libraries are built for the target environment, and are built after
 # the host libraries and the host tools (which may be a cross compiler)
@@ -3505,6 +3488,25 @@ case "${target}" in
     ;;
 esac
 
+# Only allow gdbserver on some systems.
+if test -d ${srcdir}/gdbserver; then
+    if test x$enable_gdbserver = x; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdbserver support" >&5
+$as_echo_n "checking for gdbserver support... " >&6; }
+	if (srcdir=${srcdir}/gdbserver; \
+		. ${srcdir}/configure.srv; \
+		test -n "$UNSUPPORTED")
+	then
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	    noconfigdirs="$noconfigdirs gdbserver"
+	else
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	fi
+    fi
+fi
+
 # Disable libgo for some systems where it is known to not work.
 # For testing, you can easily override this with --enable-libgo.
 if test x$enable_libgo = x; then
@@ -3824,6 +3826,9 @@ case "${target}" in
     noconfigdirs="$noconfigdirs ld gas gdb gprof sim"
     noconfigdirs="$noconfigdirs $target_libraries"
     ;;
+  pdp11-*-*)
+    noconfigdirs="$noconfigdirs gdb gprof"
+    ;;
   powerpc-*-aix*)
     # copied from rs6000-*-* entry
     noconfigdirs="$noconfigdirs gprof"
@@ -7223,13 +7228,17 @@ esac
 CONFIGURE_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-configure-/g`
 INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g`
 
-# gdb depends on gnulib, but as nothing else does, only include it if
-# gdb is built.
-if echo " ${configdirs} " | grep " gdb " > /dev/null 2>&1 ; then
-  # The Makefile provides the ordering, so it's enough here to add
-  # gnulib to the list.
-  configdirs="${configdirs} gnulib"
-fi
+# gdb and gdbserver depend on gnulib and gdbsupport, but as nothing
+# else does, only include them if one of these is built.  The Makefile
+# provides the ordering, so it's enough here to add to the list.
+case " ${configdirs} " in
+  *\ gdb\ *)
+    configdirs="${configdirs} gnulib gdbsupport"
+    ;;
+  *\ gdbserver\ *)
+    configdirs="${configdirs} gnulib gdbsupport"
+    ;;
+esac
 
 # Strip out unwanted targets.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/configure.ac ./configure.ac
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/configure.ac	2020-03-07 02:11:44.000000000 +0000
+++ ./configure.ac	2021-05-21 02:00:23.000000000 +0000
@@ -1,6 +1,6 @@
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
 #   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
-#   2014, 2015, 2016, 2019 Free Software Foundation, Inc.
+#   2014, 2015, 2016, 2019, 2020 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -33,23 +33,6 @@ m4_include([config/isl.m4])
 AC_INIT(move-if-change)
 AC_DISABLE_OPTION_CHECKING
 
-if test x"${enable_gdb}" != x"no" -a x"${enable_src_release_build}" != x"yes"; then
-  # For this branch, we do not support building GDB in-tree.
-  # Try to detect whether we are in this situation or not by
-  # searching for a couple of known files in the source directory.
-  if test -f gnulib/update-gnulib.sh -a -f gdb/ChangeLog; then
-    AC_MSG_ERROR([GDB must be configured and built in a directory separate from its sources.
-
-To do so, create a dedicated directory for your GDB build and invoke
-the configure script from that directory:
-
-      $ mkdir build
-      $ cd build
-      $ <full path to your sources>/gdb-VERSION/configure [[etc...]]
-      $ make])
-  fi
-fi
-
 progname=$0
 # if PWD already has a value, it is probably wrong.
 if test -n "$PWD" ; then PWD=`${PWDCMD-pwd}`; fi
@@ -156,7 +139,7 @@ host_libs="intl libiberty opcodes bfd re
 # binutils, gas and ld appear in that order because it makes sense to run
 # "make check" in that particular order.
 # If --enable-gold is used, "gold" may replace "ld".
-host_tools="flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools"
+host_tools="flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools"
 
 # these libraries are built for the target environment, and are built after
 # the host libraries and the host tools (which may be a cross compiler)
@@ -798,6 +781,22 @@ case "${target}" in
     ;;
 esac
 
+# Only allow gdbserver on some systems.
+if test -d ${srcdir}/gdbserver; then
+    if test x$enable_gdbserver = x; then
+	AC_MSG_CHECKING([for gdbserver support])
+	if (srcdir=${srcdir}/gdbserver; \
+		. ${srcdir}/configure.srv; \
+		test -n "$UNSUPPORTED")
+	then
+	    AC_MSG_RESULT([no])
+	    noconfigdirs="$noconfigdirs gdbserver"
+	else
+	    AC_MSG_RESULT([yes])
+	fi
+    fi
+fi
+
 # Disable libgo for some systems where it is known to not work.
 # For testing, you can easily override this with --enable-libgo.
 if test x$enable_libgo = x; then
@@ -1117,6 +1116,9 @@ case "${target}" in
     noconfigdirs="$noconfigdirs ld gas gdb gprof sim"
     noconfigdirs="$noconfigdirs $target_libraries"
     ;;
+  pdp11-*-*)
+    noconfigdirs="$noconfigdirs gdb gprof"
+    ;;
   powerpc-*-aix*)
     # copied from rs6000-*-* entry
     noconfigdirs="$noconfigdirs gprof"
@@ -2743,13 +2745,17 @@ esac
 CONFIGURE_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-configure-/g`
 INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g`
 
-# gdb depends on gnulib, but as nothing else does, only include it if
-# gdb is built.
-if echo " ${configdirs} " | grep " gdb " > /dev/null 2>&1 ; then
-  # The Makefile provides the ordering, so it's enough here to add
-  # gnulib to the list.
-  configdirs="${configdirs} gnulib"
-fi
+# gdb and gdbserver depend on gnulib and gdbsupport, but as nothing
+# else does, only include them if one of these is built.  The Makefile
+# provides the ordering, so it's enough here to add to the list.
+case " ${configdirs} " in
+  *\ gdb\ *)
+    configdirs="${configdirs} gnulib gdbsupport"
+    ;;
+  *\ gdbserver\ *)
+    configdirs="${configdirs} gnulib gdbsupport"
+    ;;
+esac
 
 # Strip out unwanted targets.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/contrib/ChangeLog ./contrib/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/contrib/ChangeLog	2020-03-07 02:07:41.000000000 +0000
+++ ./contrib/ChangeLog	2021-05-21 01:57:23.000000000 +0000
@@ -1,3 +1,8 @@
+2020-05-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dg-extract-results.py: Update from gcc repo.
+	* dg-extract-results.sh: Likewise.
+
 2019-10-21  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* dg-extract-results.py: Update from gcc repo.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/contrib/dg-extract-results.py ./contrib/dg-extract-results.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/contrib/dg-extract-results.py	2020-03-07 02:07:41.000000000 +0000
+++ ./contrib/dg-extract-results.py	2021-05-21 01:57:23.000000000 +0000
@@ -117,7 +117,7 @@ class Prog:
         self.tool_re = re.compile (r'^\t\t=== (.*) tests ===$')
         self.result_re = re.compile (r'^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED'
                                      r'|WARNING|ERROR|UNSUPPORTED|UNTESTED'
-                                     r'|KFAIL|KPASS):\s*(.+)')
+                                     r'|KFAIL|KPASS|PATH|DUPLICATE):\s*(.+)')
         self.completed_re = re.compile (r'.* completed at (.*)')
         # Pieces of text to write at the head of the output.
         # start_line is a pair in which the first element is a datetime
@@ -143,7 +143,9 @@ class Prog:
             '# of known failures\t\t',
             '# of untested testcases\t\t',
             '# of unresolved testcases\t',
-            '# of unsupported tests\t\t'
+            '# of unsupported tests\t\t',
+            '# of paths in test names\t',
+            '# of duplicate test names\t'
         ]
         self.runs = dict()
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/contrib/dg-extract-results.sh ./contrib/dg-extract-results.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/contrib/dg-extract-results.sh	2020-03-07 02:07:41.000000000 +0000
+++ ./contrib/dg-extract-results.sh	2021-05-21 01:57:23.000000000 +0000
@@ -326,7 +326,7 @@ BEGIN {
   }
 }
 /^\t\t=== .* ===$/ { curvar = ""; next }
-/^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|WARNING|ERROR|UNSUPPORTED|UNTESTED|KFAIL|KPASS):/ {
+/^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|WARNING|ERROR|UNSUPPORTED|UNTESTED|KFAIL|KPASS|PATH|DUPLICATE):/ {
   testname=\$2
   # Ugly hack for gfortran.dg/dg.exp
   if ("$TOOL" == "gfortran" && testname ~ /^gfortran.dg\/g77\//)
@@ -400,6 +400,7 @@ BEGIN {
   variant="$VAR"
   tool="$TOOL"
   passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kpasscnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0; dgerrorcnt=0;
+  pathcnt=0; dupcnt=0
   curvar=""; insummary=0
 }
 /^Running target /		{ curvar = \$3; next }
@@ -414,6 +415,8 @@ BEGIN {
 /^# of untested testcases/	{ if (insummary == 1) untstcnt += \$5; next; }
 /^# of unresolved testcases/	{ if (insummary == 1) unrescnt += \$5; next; }
 /^# of unsupported tests/	{ if (insummary == 1) unsupcnt += \$5; next; }
+/^# of paths in test names/	{ if (insummary == 1) pathcnt += \$7; next; }
+/^# of duplicate test names/	{ if (insummary == 1) dupcnt += \$6; next; }
 /^$/				{ if (insummary == 1)
 				    { insummary = 0; curvar = "" }
 				  next
@@ -431,6 +434,8 @@ END {
   if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt)
   if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt)
   if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt)
+  if (pathcnt != 0) printf ("# of paths in test names\t%d\n", pathcnt)
+  if (dupcnt != 0) printf ("# of duplicate test names\t%d\n", dupcnt)
 }
 EOF
 
@@ -452,6 +457,7 @@ cat << EOF > $TOTAL_AWK
 BEGIN {
   tool="$TOOL"
   passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0; dgerrorcnt=0
+  pathcnt=0; dupcnt=0
 }
 /^# of DejaGnu errors/		{ dgerrorcnt += \$5 }
 /^# of expected passes/		{ passcnt += \$5 }
@@ -463,6 +469,8 @@ BEGIN {
 /^# of untested testcases/	{ untstcnt += \$5 }
 /^# of unresolved testcases/	{ unrescnt += \$5 }
 /^# of unsupported tests/	{ unsupcnt += \$5 }
+/^# of paths in test names/	{ pathcnt += \$7 }
+/^# of duplicate test names/	{ dupcnt += \$6 }
 END {
   printf ("\n\t\t=== %s Summary ===\n\n", tool)
   if (dgerrorcnt != 0) printf ("# of DejaGnu errors\t\t%d\n", dgerrorcnt)
@@ -475,6 +483,8 @@ END {
   if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt)
   if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt)
   if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt)
+  if (pathcnt != 0) printf ("# of paths in test names\t%d\n", pathcnt)
+  if (dupcnt != 0) printf ("# of duplicate test names\t%d\n", dupcnt)
 }
 EOF
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/bpf.cpu ./cpu/bpf.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/bpf.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/bpf.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -32,8 +32,12 @@
   (name bpf)
   (comment "Linux kernel BPF")
   (insn-lsb0? #t)
-  (machs bpf)
-  (isas ebpfle ebpfbe))
+  ;; XXX explain the default-alignment setting is for the simulator.
+  ;; It is confusing that the simulator follows the emulated memory
+  ;; access conventions for fetching instructions by pieces...
+  (default-alignment unaligned)
+  (machs bpf xbpf)
+  (isas ebpfle ebpfbe xbpfle xbpfbe))
 
 ;;;; The ISAs
 
@@ -94,34 +98,46 @@
     ;; Length of an unknown instruction.  Used by disassembly and by the
     ;; simulator's invalid insn handler.
     (default-insn-bitsize 64)
-    ;; Number of bits of insn that can be initially fetched.  XXX this
-    ;; should be 64 (the size of the smallest insn) but until CGEN
-    ;; gets fixed to place constant fields in their own words, we have
-    ;; to use this workaround to avoid the opcode byte to be placed at
-    ;; the wrong side of the instruction when assembling in
-    ;; big-endian.
-    (base-insn-bitsize 8)))
+    ;; Number of bits of insn that can be initially fetched.  This is
+    ;; the size of the smallest insn.
+    (base-insn-bitsize 64)))
 
 (define-bpf-isa le)
 (define-bpf-isa be)
 
-(define-pmacro all-isas () (ISA ebpfle,ebpfbe))
+(define-pmacro (define-xbpf-isa x-endian)
+  (define-isa
+    (name (.sym xbpf x-endian))
+    (comment "The xBPF instruction set")
+    (default-insn-word-bitsize 64)
+    (default-insn-bitsize 64)
+    (base-insn-bitsize 64)))
+
+(define-xbpf-isa le)
+(define-xbpf-isa be)
+
+(define-pmacro all-isas () (ISA ebpfle,ebpfbe,xbpfle,xbpfbe))
+(define-pmacro xbpf-isas () (ISA xbpfle,xbpfbe))
+
+(define-pmacro (endian-isas x-endian)
+  ((ISA (.sym ebpf x-endian) (.sym xbpf x-endian))))
 
 ;;;; Hardware Hierarchy
 
 ;;
-;;     bpf         architecture
-;;      |
-;;    bpfbf        cpu-family
-;;      |
-;;     bpf         machine
-;;      |
-;;   bpf-def       model
+;;         bpf            architecture
+;;          |
+;;        bpfbf           cpu-family
+;;      /       \
+;;     bpf     xbpf       machine
+;;      |       |
+;;   bpf-def  xbpf-def    model
 
 (define-cpu
   (name bpfbf)
   (comment "Linux kernel eBPF virtual CPU")
-  (word-bitsize 32))
+  (insn-endian big)
+  (word-bitsize 64))
 
 (define-mach
   (name bpf)
@@ -142,6 +158,25 @@
     () ; profile action (default)
     ))
 
+(define-mach
+  (name xbpf)
+  (comment "Experimental BPF")
+  (cpu bpfbf)
+  (isas ebpfle ebpfbe xbpfle xbpfbe))
+
+(define-model
+  (name xbpf-def)
+  (comment "xBPF default model")
+  (mach xbpf)
+  (unit u-exec "execution unit" ()
+    1 ; issue
+    1 ; done
+    () ; state
+    () ; inputs
+    () ; outputs
+    () ; profile action (default)
+    ))
+
 ;;;; Hardware Elements
 
 ;; eBPF programs can access 10 general-purpose registers which are
@@ -150,7 +185,7 @@
 (define-hardware
   (name h-gpr)
   (comment "General Purpose Registers")
-  (attrs all-isas (MACH bpf))
+  (attrs all-isas (MACH bpf xbpf))
   (type register DI (16))
   (indices keyword "%"
            ;; XXX the frame pointer fp is read-only, so it should
@@ -159,13 +194,19 @@
             (r0 0) (r1 1) (r2 2) (r3 3) (r4 4) (r5 5) (r6 6)
             (r7 7) (r8 8) (r9 9) (fp 10)
             ;; Additional names recognized when assembling.
-            (a 0) (ctx 6) (r10 10))))
+            (r0 0) (r6 6) (r10 10))))
 
 ;; The program counter.  CGEN requires it, even if it is not visible
 ;; to eBPF programs.
 
-(dnh h-pc "program counter" (PC PROFILE) (pc) () () ())
-
+(define-hardware
+  (name h-pc)
+  (comment "program counter")
+  (attrs PC PROFILE all-isas)
+  (type pc UDI)
+  (get () (raw-reg h-pc))
+  (set (newval) (set (raw-reg h-pc) newval)))
+  
 ;; A 64-bit h-sint to be used by the imm64 operand below.  XXX this
 ;; shouldn't be needed, as h-sint is supposed to be able to hold
 ;; 64-bit values.  However, in practice CGEN limits h-sint to 32 bits
@@ -222,7 +263,7 @@
 (define-normal-insn-enum insn-op-class "eBPF instruction class"
   (all-isas) OP_CLASS_ f-op-class
   ((LD    #b000) (LDX   #b001) (ST    #b010) (STX   #b011)
-   (ALU   #b100) (JMP   #b101) (ALU64 #b111)))
+   (ALU   #b100) (JMP   #b101) (JMP32 #b110) (ALU64 #b111)))
 
 ;; For load/store instructions, the 8-bit code field is subdivided in:
 ;;
@@ -252,11 +293,11 @@
 ;; NOT use registers, where endianness is irrelevant i.e. f-regs is a
 ;; constant 0 opcode.
 
-(dwf f-dstle "eBPF dst register field" ((ISA ebpfle)) 8 8 3 4 UINT)
-(dwf f-srcle "eBPF source register field" ((ISA ebpfle)) 8 8 7 4 UINT)
+(dwf f-dstle "eBPF dst register field" ((ISA ebpfle xbpfle)) 8 8 3 4 UINT)
+(dwf f-srcle "eBPF source register field" ((ISA ebpfle xbpfle)) 8 8 7 4 UINT)
 
-(dwf f-dstbe "eBPF dst register field" ((ISA ebpfbe)) 8 8 7 4 UINT)
-(dwf f-srcbe "eBPF source register field" ((ISA ebpfbe)) 8 8 3 4 UINT)
+(dwf f-dstbe "eBPF dst register field" ((ISA ebpfbe xbpfbe)) 8 8 7 4 UINT)
+(dwf f-srcbe "eBPF source register field" ((ISA ebpfbe xbpfbe)) 8 8 3 4 UINT)
 
 (dwf f-regs "eBPF registers field" (all-isas) 8 8 7 8 UINT)
 
@@ -266,7 +307,7 @@
 ;; difficulty: we put them in their own instruction word so the
 ;; byte-endianness will be properly applied.
 
-(dwf f-offset16 "eBPF offset field" (all-isas) 16 16 15 16 INT)
+(dwf f-offset16 "eBPF offset field" (all-isas) 16 16 15 16 HI)
 (dwf f-imm32 "eBPF 32-bit immediate field" (all-isas) 32 32 31 32 INT)
 
 ;; For the disjoint 64-bit signed immediate, however, we need to use a
@@ -288,19 +329,19 @@
                     (set (ifield f-imm64-a) (and (ifield f-imm64) (const #xffffffff)))))
   (extract (sequence ()
                      (set (ifield f-imm64)
-                          (or (sll DI (zext DI (ifield f-imm64-c)) (const 32))
-                              (zext DI (ifield f-imm64-a)))))))
+                          (or (sll UDI (zext UDI (ifield f-imm64-c)) (const 32))
+                              (zext UDI (ifield f-imm64-a)))))))
 
 ;;; Operands
 
 ;; A couple of source and destination register operands are defined
 ;; for each ISA: ebpfle and ebpfbe.
 
-(dno dstle "destination register" ((ISA ebpfle)) h-gpr f-dstle)
-(dno srcle "source register" ((ISA ebpfle)) h-gpr f-srcle)
+(dno dstle "destination register" ((ISA ebpfle xbpfle)) h-gpr f-dstle)
+(dno srcle "source register" ((ISA ebpfle xbpfle)) h-gpr f-srcle)
 
-(dno dstbe "destination register" ((ISA ebpfbe)) h-gpr f-dstbe)
-(dno srcbe "source register" ((ISA ebpfbe)) h-gpr f-srcbe)
+(dno dstbe "destination register" ((ISA ebpfbe xbpfbe)) h-gpr f-dstbe)
+(dno srcbe "source register" ((ISA ebpfbe xbpfbe)) h-gpr f-srcbe)
 
 ;; Jump instructions have a 16-bit PC-relative address.
 ;; CALL instructions have a 32-bit PC-relative address.
@@ -361,60 +402,101 @@
 ;;   ADD[32]{i,r}le for the little-endian ISA
 ;;   ADD[32]{i,r}be for the big-endian ISA
 ;;
-;; The `i' variants perform `src OP dst -> dst' operations.
-;; The `r' variants perform `dst OP imm32 -> dst' operations.
+;; The `i' variants perform `dst OP imm32 -> dst' operations.
+;; The `r' variants perform `dst OP src -> dst' operations.
 ;;
 ;; The variants with 32 in their name are of ALU class.  Otherwise
 ;; they are ALU64 class.
 
-(define-pmacro (define-alu-insn-un x-basename x-suffix x-op-class x-op-code x-endian)
+(define-pmacro (define-alu-insn-un x-basename x-suffix x-op-class x-op-code
+                 x-endian x-mode x-semop)
   (dni (.sym x-basename x-suffix x-endian)
        (.str x-basename x-suffix)
-       ((ISA (.sym ebpf x-endian)))
+       (endian-isas x-endian)
        (.str x-basename x-suffix " $dst" x-endian)
        (+ (f-imm32 0) (f-offset16 0) ((.sym f-src x-endian) 0) (.sym dst x-endian)
-          x-op-class OP_SRC_X x-op-code) () ()))
+          x-op-class OP_SRC_K x-op-code)
+       (set x-mode (.sym dst x-endian) (x-semop x-mode (.sym dst x-endian)))
+       ()))
 
-(define-pmacro (define-alu-insn-bin x-basename x-suffix x-op-class x-op-code x-endian)
+(define-pmacro (define-alu-insn-bin x-basename x-suffix x-op-class x-op-code
+                 x-endian x-mode x-semop)
   (begin
+    ;; dst = dst OP immediate
     (dni (.sym x-basename x-suffix "i" x-endian)
          (.str x-basename x-suffix " immediate")
-         ((ISA (.sym ebpf x-endian)))
+         (endian-isas x-endian)
          (.str x-basename x-suffix " $dst" x-endian ",$imm32")
          (+ imm32 (f-offset16 0) ((.sym f-src x-endian) 0) (.sym dst x-endian)
-            x-op-class OP_SRC_K x-op-code) () ())
+            x-op-class OP_SRC_K x-op-code)
+         (set x-mode (.sym dst x-endian) (x-semop x-mode (.sym dst x-endian) imm32))
+         ())
+    ;; dst = dst OP src
     (dni (.sym x-basename x-suffix "r" x-endian)
          (.str x-basename x-suffix " register")
-         ((ISA (.sym ebpf x-endian)))
+         (endian-isas x-endian)
          (.str x-basename x-suffix " $dst" x-endian ",$src" x-endian)
          (+ (f-imm32 0) (f-offset16 0) (.sym src x-endian) (.sym dst x-endian)
-            x-op-class OP_SRC_X x-op-code) () ())))
+            x-op-class OP_SRC_X x-op-code)
+         (set x-mode (.sym dst x-endian)
+                      (x-semop x-mode (.sym dst x-endian) (.sym src x-endian)))
+         ())))
 
-(define-pmacro (daiu x-basename x-op-code x-endian)
+(define-pmacro (define-alu-insn-mov x-basename x-suffix x-op-class x-op-code
+                 x-endian x-mode)
   (begin
-    (define-alu-insn-un x-basename "" OP_CLASS_ALU64 x-op-code x-endian)
-    (define-alu-insn-un x-basename "32" OP_CLASS_ALU x-op-code x-endian)))
+    (dni (.sym mov x-suffix "i" x-endian)
+         (.str mov x-suffix " immediate")
+         (endian-isas x-endian)
+         (.str x-basename x-suffix " $dst" x-endian ",$imm32")
+         (+ imm32 (f-offset16 0) ((.sym f-src x-endian) 0) (.sym dst x-endian)
+            x-op-class OP_SRC_K x-op-code)
+         (set x-mode (.sym dst x-endian) imm32)
+         ())
+    (dni (.sym mov x-suffix "r" x-endian)
+         (.str mov x-suffix " register")
+         (endian-isas x-endian)
+         (.str x-basename x-suffix " $dst" x-endian ",$src" x-endian)
+         (+ (f-imm32 0) (f-offset16 0) (.sym src x-endian) (.sym dst x-endian)
+            x-op-class OP_SRC_X x-op-code)
+         (set x-mode (.sym dst x-endian) (.sym src x-endian))
+         ())))
+
 
-(define-pmacro (daib x-basename x-op-code x-endian)
+;; Unary ALU instructions (neg)
+(define-pmacro (daiu x-basename x-op-code x-endian x-semop)
   (begin
-    (define-alu-insn-bin x-basename "" OP_CLASS_ALU64 x-op-code x-endian)
-    (define-alu-insn-bin x-basename "32" OP_CLASS_ALU x-op-code x-endian)))
+    (define-alu-insn-un x-basename "" OP_CLASS_ALU64 x-op-code x-endian DI x-semop)
+    (define-alu-insn-un x-basename "32" OP_CLASS_ALU x-op-code x-endian USI x-semop)))
+
+;; Binary ALU instructions (all the others)
+;; For ALU32: DST = (u32) DST OP (u32) SRC is correct semantics
+(define-pmacro (daib x-basename x-op-code x-endian x-semop)
+  (begin
+    (define-alu-insn-bin x-basename "" OP_CLASS_ALU64 x-op-code x-endian DI x-semop)
+    (define-alu-insn-bin x-basename "32" OP_CLASS_ALU x-op-code x-endian USI x-semop)))
+
+;; Move ALU instructions (mov)
+(define-pmacro (daim x-basename x-op-code x-endian)
+  (begin
+    (define-alu-insn-mov x-basename "" OP_CLASS_ALU64 x-op-code x-endian DI)
+    (define-alu-insn-mov x-basename "32" OP_CLASS_ALU x-op-code x-endian USI)))
 
 (define-pmacro (define-alu-instructions x-endian)
   (begin
-    (daib add OP_CODE_ADD x-endian)
-    (daib sub OP_CODE_SUB x-endian)
-    (daib mul OP_CODE_MUL x-endian)
-    (daib div OP_CODE_DIV x-endian)
-    (daib or  OP_CODE_OR x-endian)
-    (daib and OP_CODE_AND x-endian)
-    (daib lsh OP_CODE_LSH x-endian)
-    (daib rsh OP_CODE_RSH x-endian)
-    (daib mod OP_CODE_MOD x-endian)
-    (daib xor OP_CODE_XOR x-endian)
-    (daib mov OP_CODE_MOV x-endian)
-    (daib arsh OP_CODE_ARSH x-endian)
-    (daiu neg OP_CODE_NEG x-endian)))
+    (daib add OP_CODE_ADD x-endian add)
+    (daib sub OP_CODE_SUB x-endian sub)
+    (daib mul OP_CODE_MUL x-endian mul)
+    (daib div OP_CODE_DIV x-endian udiv)
+    (daib or  OP_CODE_OR x-endian or)
+    (daib and OP_CODE_AND x-endian and)
+    (daib lsh OP_CODE_LSH x-endian sll)
+    (daib rsh OP_CODE_RSH x-endian srl)
+    (daib mod OP_CODE_MOD x-endian umod)
+    (daib xor OP_CODE_XOR x-endian xor)
+    (daib arsh OP_CODE_ARSH x-endian sra)
+    (daiu neg OP_CODE_NEG x-endian neg)
+    (daim mov OP_CODE_MOV x-endian)))
 
 (define-alu-instructions le)
 (define-alu-instructions be)
@@ -435,10 +517,13 @@
 (define-pmacro (define-endian-insn x-suffix x-op-src x-endian)
   (dni (.sym "end" x-suffix x-endian)
        (.str "end" x-suffix " register")
-       ((ISA (.sym ebpf x-endian)))
+       (endian-isas x-endian)
        (.str "end" x-suffix " $dst" x-endian ",$endsize")
        (+  (f-offset16 0) ((.sym f-src x-endian) 0) (.sym dst x-endian) endsize
-           OP_CLASS_ALU x-op-src OP_CODE_END) () ()))
+           OP_CLASS_ALU x-op-src OP_CODE_END)
+       (set (.sym dst x-endian)
+            (c-call DI (.str "bpfbf_end" x-suffix) (.sym dst x-endian) endsize))
+       ()))
 
 (define-endian-insn "le" OP_SRC_K le)
 (define-endian-insn "be" OP_SRC_X le)
@@ -457,11 +542,13 @@
 (define-pmacro (define-lddw x-endian)
   (dni (.sym lddw x-endian)
        (.str "lddw" x-endian)
-       ((ISA (.sym ebpf x-endian)))
+       (endian-isas x-endian)
        (.str "lddw $dst" x-endian ",$imm64")
        (+ imm64 (f-offset16 0) ((.sym f-src x-endian) 0)
           (.sym dst x-endian)
-          OP_CLASS_LD OP_SIZE_DW OP_MODE_IMM) () ()))
+          OP_CLASS_LD OP_SIZE_DW OP_MODE_IMM)
+       (set DI (.sym dst x-endian) imm64)
+       ()))
 
 (define-lddw le)
 (define-lddw be)
@@ -471,19 +558,29 @@
 ;;
 ;; LDABS{w,h,b,dw}
 
-(define-pmacro (dlabs x-suffix x-size)
+(define-pmacro (dlabs x-suffix x-size x-smode)
   (dni (.sym "ldabs" x-suffix)
        (.str "ldabs" x-suffix)
        (all-isas)
        (.str "ldabs" x-suffix " $imm32")
        (+ imm32 (f-offset16 0) (f-regs 0)
           OP_CLASS_LD OP_MODE_ABS (.sym OP_SIZE_ x-size))
-       () ()))
-
-(dlabs "w" W)
-(dlabs "h" H)
-(dlabs "b" B)
-(dlabs "dw" DW)
+       (set x-smode
+            (reg x-smode h-gpr 0)
+            (mem x-smode
+                 (add DI
+                      (mem DI
+                           (add DI
+                                (reg DI h-gpr 6) ;; Pointer to struct sk_buff
+                                (c-call "bpfbf_skb_data_offset")))
+                      imm32)))
+       ;; XXX this clobbers R1-R5
+       ()))
+
+(dlabs "w" W SI)
+(dlabs "h" H HI)
+(dlabs "b" B QI)
+(dlabs "dw" DW DI)
 
 ;; The indirect load instructions are non-generic loads designed to be
 ;; used in socket filters.  They come in several variants:
@@ -491,21 +588,33 @@
 ;; LDIND{w,h,b,dw}le for the little-endian ISA
 ;; LDIND[w,h,b,dw}be for the big-endian ISA
 
-(define-pmacro (dlind x-suffix x-size x-endian)
+(define-pmacro (dlind x-suffix x-size x-endian x-smode)
   (dni (.sym "ldind" x-suffix x-endian)
        (.str "ldind" x-suffix)
-       ((ISA (.sym ebpf x-endian)))
+       (endian-isas x-endian)
        (.str "ldind" x-suffix " $src" x-endian ",$imm32")
        (+ imm32 (f-offset16 0) ((.sym f-dst x-endian) 0) (.sym src x-endian)
           OP_CLASS_LD OP_MODE_IND (.sym OP_SIZE_ x-size))
-       () ()))
+       (set x-smode
+            (reg x-smode h-gpr 0)
+            (mem x-smode
+                 (add DI
+                      (mem DI
+                           (add DI
+                                (reg DI h-gpr 6) ;; Pointer to struct sk_buff
+                                (c-call "bpfbf_skb_data_offset")))
+                      (add DI
+                           (.sym src x-endian)
+                           imm32))))
+       ;; XXX this clobbers R1-R5
+       ()))
 
 (define-pmacro (define-ldind x-endian)
   (begin    
-    (dlind "w" W x-endian)
-    (dlind "h" H x-endian)
-    (dlind "b" B x-endian)
-    (dlind "dw" DW x-endian)))
+    (dlind "w" W x-endian SI)
+    (dlind "h" H x-endian HI)
+    (dlind "b" B x-endian QI)
+    (dlind "dw" DW x-endian DI)))
 
 (define-ldind le)
 (define-ldind be)
@@ -520,35 +629,41 @@
 ;; Loads operate on [$SRC+-OFFSET] -> $DST
 ;; Stores operate on $SRC -> [$DST+-OFFSET]
 
-(define-pmacro (dxli x-basename x-suffix x-size x-endian)
+(define-pmacro (dxli x-basename x-suffix x-size x-endian x-mode)
   (dni (.sym x-basename x-suffix x-endian)
        (.str x-basename x-suffix)
-       ((ISA (.sym ebpf x-endian)))
+       (endian-isas x-endian)
        (.str x-basename x-suffix " $dst" x-endian ",[$src" x-endian "+$offset16]")
        (+ (f-imm32 0) offset16 (.sym src x-endian) (.sym dst x-endian)
           OP_CLASS_LDX (.sym OP_SIZE_ x-size) OP_MODE_MEM)
-       () ()))
+       (set x-mode
+            (.sym dst x-endian)
+            (mem x-mode (add DI (.sym src x-endian) offset16)))
+       ()))
 
-(define-pmacro (dxsi x-basename x-suffix x-size x-endian)
+(define-pmacro (dxsi x-basename x-suffix x-size x-endian x-mode)
   (dni (.sym x-basename x-suffix x-endian)
        (.str x-basename x-suffix)
-       ((ISA (.sym ebpf x-endian)))
+       (endian-isas x-endian)
        (.str x-basename x-suffix " [$dst" x-endian "+$offset16],$src" x-endian)
        (+ (f-imm32 0) offset16 (.sym src x-endian) (.sym dst x-endian)
           OP_CLASS_STX (.sym OP_SIZE_ x-size) OP_MODE_MEM)
-       () ()))
+       (set x-mode
+            (mem x-mode (add DI (.sym dst x-endian) offset16))
+            (.sym src x-endian)) ;; XXX address is section-relative
+       ()))
 
 (define-pmacro (define-ldstx-insns x-endian)
   (begin
-    (dxli "ldx" "w" W x-endian)
-    (dxli "ldx" "h" H x-endian)
-    (dxli "ldx" "b" B x-endian)
-    (dxli "ldx" "dw" DW x-endian)
-
-    (dxsi "stx" "w" W x-endian)
-    (dxsi "stx" "h" H x-endian)
-    (dxsi "stx" "b" B x-endian)
-    (dxsi "stx" "dw" DW x-endian)))
+    (dxli "ldx" "w" W x-endian SI)
+    (dxli "ldx" "h" H x-endian HI)
+    (dxli "ldx" "b" B x-endian QI)
+    (dxli "ldx" "dw" DW x-endian DI)
+
+    (dxsi "stx" "w" W x-endian SI)
+    (dxsi "stx" "h" H x-endian HI)
+    (dxsi "stx" "b" B x-endian QI)
+    (dxsi "stx" "dw" DW x-endian DI)))
 
 (define-ldstx-insns le)
 (define-ldstx-insns be)
@@ -559,20 +674,24 @@
 ;;  ST{b,h,w,dw}le for the little-endian ISA
 ;;  ST{b,h,w,dw}be for the big-endian ISA
 
-(define-pmacro (dsti x-suffix x-size x-endian)
+(define-pmacro (dsti x-suffix x-size x-endian x-mode)
   (dni (.sym "st" x-suffix x-endian)
        (.str "st" x-suffix)
-       ((ISA (.sym ebpf x-endian)))
+       (endian-isas x-endian)
        (.str "st" x-suffix " [$dst" x-endian "+$offset16],$imm32")
        (+ imm32 offset16 ((.sym f-src x-endian) 0) (.sym dst x-endian)
-          OP_CLASS_ST (.sym OP_SIZE_ x-size) OP_MODE_MEM) () ()))
+          OP_CLASS_ST (.sym OP_SIZE_ x-size) OP_MODE_MEM)
+       (set x-mode
+            (mem x-mode (add DI (.sym dst x-endian) offset16))
+            imm32) ;; XXX address is section-relative
+       ()))
 
 (define-pmacro (define-st-insns x-endian)
   (begin
-    (dsti "b" B x-endian)
-    (dsti "h" H x-endian)
-    (dsti "w" W x-endian)
-    (dsti "dw" DW x-endian)))
+    (dsti "b" B x-endian QI)
+    (dsti "h" H x-endian HI)
+    (dsti "w" W x-endian SI)
+    (dsti "dw" DW x-endian DI)))
 
 (define-st-insns le)
 (define-st-insns be)
@@ -583,78 +702,150 @@
 ;; registers.  Therefore, we need to define several variants in both
 ;; ISAs:
 ;;
-;;   J{eq,gt,ge,lt,le,set,ne,sgt,sge,slt,sle}{i,r}le for the
+;;   J{eq,gt,ge,lt,le,set,ne,sgt,sge,slt,sle}[32]{i,r}le for the
 ;;   little-endian ISA.
-;;   J{eq,gt,ge,lt,le,set,ne.sgt,sge,slt,sle}{i,r}be for the
+;;   J{eq,gt,ge,lt,le,set,ne.sgt,sge,slt,sle}[32]{i,r}be for the
 ;;   big-endian ISA.
 
-(define-pmacro (dcji x-cond x-op-code x-endian)
+(define-pmacro (define-cond-jump-insn x-cond x-suffix x-op-class x-op-code x-endian x-mode x-semop)
   (begin
-    (dni (.sym j x-cond i x-endian)
-         (.str j x-cond "i")
-         ((ISA (.sym ebpf x-endian)))
-         (.str "j" x-cond " $dst" x-endian ",$imm32,$disp16")
+    (dni (.sym j x-cond x-suffix i x-endian)
+         (.str j x-cond x-suffix " i")
+         (endian-isas x-endian)
+         (.str "j" x-cond x-suffix " $dst" x-endian ",$imm32,$disp16")
          (+ imm32 disp16 ((.sym f-src x-endian) 0) (.sym dst x-endian)
-            OP_CLASS_JMP OP_SRC_K (.sym OP_CODE_ x-op-code)) () ())
-    (dni (.sym j x-cond r x-endian)
-         (.str j x-cond "r")
-         ((ISA (.sym ebpf x-endian)))
-         (.str "j" x-cond " $dst" x-endian ",$src" x-endian ",$disp16")
+            x-op-class OP_SRC_K (.sym OP_CODE_ x-op-code))
+         (if VOID (x-semop x-mode (.sym dst x-endian) imm32)
+             (set DI
+                  (reg DI h-pc) (add DI (reg DI h-pc)
+                                     (mul DI (add HI disp16 1) 8))))
+         ())
+    (dni (.sym j x-cond x-suffix r x-endian)
+         (.str j x-cond x-suffix " r")
+         (endian-isas x-endian)
+         (.str "j" x-cond x-suffix " $dst" x-endian ",$src" x-endian ",$disp16")
          (+ (f-imm32 0) disp16 (.sym src x-endian) (.sym dst x-endian)
-            OP_CLASS_JMP OP_SRC_X (.sym OP_CODE_ x-op-code)) () ())))
+            x-op-class OP_SRC_X (.sym OP_CODE_ x-op-code))
+         (if VOID (x-semop x-mode (.sym dst x-endian) (.sym src x-endian))
+             (set DI
+                  (reg DI h-pc) (add DI (reg DI h-pc)
+                                     (mul DI (add HI disp16 1) 8))))
+         ())))
+
+(define-pmacro (dcji x-cond x-op-code x-endian x-semop)
+  (begin
+    (define-cond-jump-insn x-cond "" OP_CLASS_JMP x-op-code x-endian DI x-semop)
+    (define-cond-jump-insn x-cond "32" OP_CLASS_JMP32 x-op-code x-endian SI x-semop )))
 
 (define-pmacro (define-condjump-insns x-endian)
   (begin
-    (dcji "eq" JEQ x-endian)
-    (dcji "gt" JGT x-endian)
-    (dcji "ge" JGE x-endian)
-    (dcji "lt" JLT x-endian)
-    (dcji "le" JLE x-endian)
-    (dcji "set" JSET x-endian)
-    (dcji "ne" JNE x-endian)
-    (dcji "sgt" JSGT x-endian)
-    (dcji "sge" JSGE x-endian)
-    (dcji "slt" JSLT x-endian)
-    (dcji "sle" JSLE x-endian)))
+    (dcji "eq" JEQ x-endian eq)
+    (dcji "gt" JGT x-endian gtu)
+    (dcji "ge" JGE x-endian geu)
+    (dcji "lt" JLT x-endian ltu)
+    (dcji "le" JLE x-endian leu)
+    (dcji "set" JSET x-endian and)
+    (dcji "ne" JNE x-endian ne)
+    (dcji "sgt" JSGT x-endian gt)
+    (dcji "sge" JSGE x-endian ge)
+    (dcji "slt" JSLT x-endian lt)
+    (dcji "sle" JSLE x-endian le)))
 
 (define-condjump-insns le)
 (define-condjump-insns be)
 
-;; The jump-always, `call' and `exit' instructions dont make use of
-;; either source nor destination registers, so only one variant per
+;; The `call' instruction doesn't make use of registers, but the
+;; semantic routine should have access to the src register in order to
+;; properly interpret the meaning of disp32.  Therefore we need one
+;; version per ISA.
+
+(define-pmacro (define-call-insn x-endian)
+  (dni (.sym call x-endian)
+       "call"
+       (endian-isas x-endian)
+       "call $disp32"
+       (+ disp32 (f-offset16 0) (f-regs 0)
+          OP_CLASS_JMP OP_SRC_K OP_CODE_CALL)
+       (c-call VOID
+               "bpfbf_call" disp32 (ifield (.sym f-src x-endian)))
+       ()))
+
+(define-call-insn le)
+(define-call-insn be)
+
+(define-pmacro (define-callr-insn x-endian)
+  (dni (.sym callr x-endian)
+       "callr"
+       ((ISA (.sym xbpf x-endian)))
+       (.str "call $dst" x-endian)
+       (+ (f-imm32 0) (f-offset16 0) ((.sym f-src x-endian) 0) (.sym dst x-endian)
+          OP_CLASS_JMP OP_SRC_X OP_CODE_CALL)
+       (c-call VOID
+               "bpfbf_callr" (ifield (.sym f-dst x-endian)))
+       ()))
+
+(define-callr-insn le)
+(define-callr-insn be)
+
+;; The jump-always and `exit' instructions dont make use of either
+;; source nor destination registers, so only one variant per
 ;; instruction is defined.
 
 (dni ja "ja" (all-isas) "ja $disp16"
      (+ (f-imm32 0) disp16 (f-regs 0)
-        OP_CLASS_JMP OP_SRC_K OP_CODE_JA) () ())
-
-(dni call "call" (all-isas) "call $disp32"
-     (+ disp32 (f-offset16 0) (f-regs 0)
-        OP_CLASS_JMP OP_SRC_K OP_CODE_CALL) () ())
+        OP_CLASS_JMP OP_SRC_K OP_CODE_JA)
+     (set DI (reg DI h-pc) (add DI (reg DI h-pc)
+                                (mul DI (add HI disp16 1) 8)))
+     ())
 
 (dni "exit" "exit" (all-isas) "exit"
      (+ (f-imm32 0) (f-offset16 0) (f-regs 0)
-        OP_CLASS_JMP (f-op-src 0) OP_CODE_EXIT) () ())
+        OP_CLASS_JMP (f-op-src 0) OP_CODE_EXIT)
+     (c-call VOID "bpfbf_exit")
+     ())
 
 ;;; Atomic instructions
 
 ;; The atomic exchange-and-add instructions come in two flavors: one
 ;; for swapping 64-bit quantities and another for 32-bit quantities.
 
+(define-pmacro (sem-exchange-and-add x-endian x-mode)
+  (sequence VOID ((x-mode tmp))
+            ;; XXX acquire lock in simulator...  as a hardware element?
+            (set x-mode tmp (mem x-mode (add DI (.sym dst x-endian) offset16)))
+            (set x-mode
+                 (mem x-mode (add DI (.sym dst x-endian) offset16))
+                 (add x-mode tmp (.sym src x-endian)))))
+
 (define-pmacro (define-atomic-insns x-endian)
   (begin
     (dni (.str "xadddw" x-endian)
          "xadddw"
-         ((ISA (.sym ebpf x-endian)))
+         (endian-isas x-endian)
          (.str "xadddw [$dst" x-endian "+$offset16],$src" x-endian)
          (+ (f-imm32 0) (.sym src x-endian) (.sym dst x-endian)
-            offset16 OP_MODE_XADD OP_SIZE_DW OP_CLASS_STX) () ())
+            offset16 OP_MODE_XADD OP_SIZE_DW OP_CLASS_STX)
+         (sem-exchange-and-add x-endian DI)
+         ())
     (dni (.str "xaddw" x-endian)
          "xaddw"
-         ((ISA (.sym ebpf x-endian)))
+         (endian-isas x-endian)
          (.str "xaddw [$dst" x-endian "+$offset16],$src" x-endian)
          (+ (f-imm32 0) (.sym src x-endian) (.sym dst x-endian)
-            offset16 OP_MODE_XADD OP_SIZE_W OP_CLASS_STX) () ())))
+            offset16 OP_MODE_XADD OP_SIZE_W OP_CLASS_STX)
+         (sem-exchange-and-add x-endian SI)
+         ())))
 
 (define-atomic-insns le)
 (define-atomic-insns be)
+
+;;; Breakpoint instruction
+
+;; The brkpt instruction is used by the BPF simulator and it doesn't
+;; really belong to the eBPF instruction set.
+
+(dni "brkpt" "brkpt" (all-isas)  "brkpt"
+     (+ (f-imm32 0) (f-offset16 0) (f-regs 0)
+        OP_CLASS_ALU OP_SRC_X OP_CODE_NEG)
+     (c-call VOID "bpfbf_breakpoint")
+     ())
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/ChangeLog ./cpu/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/ChangeLog	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/ChangeLog	2021-05-21 01:57:23.000000000 +0000
@@ -1,3 +1,174 @@
+2020-09-08  David Faust  <david.faust@oracle.com>
+
+	* bpf.cpu (define-alu-instructions): Correct semantic operators
+	for div, mod to unsigned versions.
+
+2020-09-01  Alan Modra  <amodra@gmail.com>
+
+	* mep-core.cpu (f-8s8a2, f-12s4a2, f-17s16a2): Multiply signed
+	value by two rather than shifting left.
+	(f-24s5a2n): Similarly multiply signed f-24s5a2n-hi to extract.
+
+2020-08-26  David Faust  <david.faust@oracle.com>
+
+	* bpf.cpu (arch bpf): Add xbpf mach and isas.
+	(define-xbpf-isa) New pmacro.
+	(all-isas) Add xbpfle,xbpfbe.
+	(endian-isas): New pmacro.
+	(mach xbpf): New.
+	(model xbpf-def): Likewise.
+	(h-gpr): Add xbpf mach.
+	(f-dstle, f-srcle, dstle, srcle): Add xbpfle isa.
+	(f-dstbe, f-srcbe, dstbe, srcbe): Add xbpfbe isa.
+	(define-alu-insn-un): Use new endian-isas pmacro.
+	(define-alu-insn-bin, define-alu-insn-mov): Likewise.
+	(define-endian-insn, define-lddw): Likewise.
+	(dlind, dxli, dxsi, dsti): Likewise.
+	(define-cond-jump-insn, define-call-insn): Likewise.
+	(define-atomic-insns): Likewise.
+
+2020-07-04  Nick Clifton  <nickc@redhat.com>
+
+	Binutils 2.35 branch created.
+
+2020-06-25 David Faust  <david.faust@oracle.com>
+
+	* bpf.cpu (f-offset16): Change type from INT to HI.
+	(dxli): Simplify memory access.
+	(dxsi): Likewise.
+	(define-endian-insn): Update c-call in semantics.
+	(dlabs) Likewise.
+	(dlind) Likewise.
+
+2020-06-02  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* bpf.cpu (define-bpf-isa): Set base-insn-bitsize to 64.
+	* bpf.opc (bpf_print_insn): Do not set endian_code here.
+
+2020-06-02  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* mep.opc (print_slot_insn): Pass the insn endianness to
+	cgen_get_insn_value.
+
+2020-05-28  Jose E. Marchesi  <jose.marchesi@oracle.com>
+	    David Faust <david.faust@oracle.com>
+
+	* bpf.cpu (define-alu-insn-un): Add definitions of semantics.
+	(define-alu-insn-mov): Likewise.
+	(daib): Likewise.
+	(define-alu-instructions): Likewise.
+	(define-endian-insn): Likewise.
+	(define-lddw): Likewise.
+	(dlabs): Likewise.
+	(dlind): Likewise.
+	(dxli): Likewise.
+	(dxsi): Likewise.
+	(dsti): Likewise.
+	(define-ldstx-insns): Likewise.
+	(define-st-insns): Likewise.
+	(define-cond-jump-insn): Likewise.
+	(dcji): Likewise.
+	(define-condjump-insns): Likewise.
+	(define-call-insn): Likewise.
+	(ja): Likewise.
+	("exit"): Likewise.
+	(define-atomic-insns): Likewise.
+	(sem-exchange-and-add): New macro.
+	* bpf.cpu ("brkpt"): New instruction.
+	(bpfbf): Set word-bitsize to 32 and insn-endian big.
+	(h-gpr): Prefer r0 to `a' and r6 to `ctx'.
+	(h-pc): Expand definition.
+	* bpf.opc (bpf_print_insn): Set endian_code to BIG.
+
+2020-05-21  Alan Modra  <amodra@gmail.com>
+
+	* mep.opc (mep_cgen_expand_macros_and_parse_operand): Replace
+	"if (x) free (x)" with "free (x)".
+
+2020-05-19  Stafford Horne  <shorne@gmail.com>
+
+	PR 25184
+	* or1k.cpu (arch or1k): Remove or64 and or64nd machs.
+	(ORBIS-MACHS, ORFPX32-MACHS): Remove pmacros.
+	(cpu or1k64bf, mach or64, mach or64nd): Remove definitions.
+	* or1kcommon.cpu (h-fdr): Remove hardware.
+	* or1korfpx.cpu (rDDF, rADF, rBDF): Remove operand definitions.
+	(float-regreg-insn): Remove lf- mnemonic -d instruction pattern.
+	(float-setflag-insn-base): Remove lf-sf mnemonic -d pattern.
+	(float-cust-insn): Remove "lf-cust" cust-num "-d" pattern.
+	(lf-rem-d, lf-itof-d, lf-ftoi-d, lf-madd-d): Remove.
+
+2020-02-16  David Faust  <david.faust@oracle.com>
+
+	* bpf.cpu (define-cond-jump-insn): Renamed from djci.
+	(dcji) New version with support for JMP32
+
+2020-02-03  Alan Modra  <amodra@gmail.com>
+
+	* m32c.cpu (f-dsp-64-s16): Mask before shifting signed value.
+
+2020-02-01  Alan Modra  <amodra@gmail.com>
+
+	* frv.cpu (f-u12): Multiply rather than left shift signed values.
+	(f-label16, f-label24): Likewise.
+
+2020-01-30  Alan Modra  <amodra@gmail.com>
+
+	* m32c.cpu (f-src32-rn-unprefixed-QI): Shift before inverting.
+	(f-src32-rn-prefixed-QI, f-dst32-rn-unprefixed-QI): Likewise.
+	(f-dst32-rn-prefixed-QI): Likewise.
+	(f-dsp-32-s32): Mask before shifting left.
+	(f-dsp-48-u32, f-dsp-48-s32): Likewise.
+	(f-bitbase32-16-s11-unprefixed): Multiply signed field rather than
+	shifting left.
+	(f-bitbase32-24-s11-prefixed, f-bitbase32-24-s19-prefixed): Likewise.
+	(h-gr-SI): Mask before shifting.
+
+2020-01-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* bpf.cpu (define-alu-insn-un): The unary BPF instructions
+	(neg and neg32) use OP_SRC_K even if they operate only in
+	registers.
+
+2020-01-18  Nick Clifton  <nickc@redhat.com>
+
+	Binutils 2.34 branch created.
+
+2020-01-13  Alan Modra  <amodra@gmail.com>
+
+	* fr30.cpu (f-disp9, f-disp10, f-s10, f-rel9, f-rel12): Don't
+	left shift signed values.
+
+2020-01-06  Alan Modra  <amodra@gmail.com>
+
+	* m32c.cpu (f-dsp-8-u16, f-dsp-8-s16): Rearrange to mask any sign
+	bits before shifting rather than masking after shifting.
+	(f-dsp-16-u16, f-dsp-16-s16, f-dsp-32-u16, f-dsp-32-s16): Likewise.
+	(f-dsp-40-u16, f-dsp-40-s16, f-dsp-48-u16, f-dsp-48-s16): Likewise.
+	(f-dsp-64-u16, f-dsp-8-s24): Likewise.
+	(f-bitbase32-16-s19-unprefixed): Avoid signed left shift.
+
+2020-01-04  Alan Modra  <amodra@gmail.com>
+
+	* m32r.cpu (f-disp8): Avoid left shift of negative values.
+	(f-disp16, f-disp24): Likewise.
+
+2019-12-23  Alan Modra  <amodra@gmail.com>
+
+	* iq2000.cpu (f-offset): Avoid left shift of negative values.
+
+2019-12-20  Alan Modra  <amodra@gmail.com>
+
+	* or1korbis.cpu (f-disp26, f-disp21): Don't left shift negative values.
+
+2019-12-17  Alan Modra  <amodra@gmail.com>
+
+	* bpf.cpu (f-imm64): Avoid signed overflow.
+
+2019-12-16  Alan Modra  <amodra@gmail.com>
+
+	* xstormy16.cpu (f-rel12a): Avoid signed overflow.
+
 2019-12-11  Alan Modra  <amodra@gmail.com>
 
 	* epiphany.cpu (f-sdisp11): Don't sign extend with shifts.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/fr30.cpu ./cpu/fr30.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/fr30.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/fr30.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -193,15 +193,15 @@
 (df  f-disp8     "8 bit signed offset"   ()  4  8 INT #f #f)
 (df  f-disp9     "9 bit signed offset"   ()  4  8 INT
     ((value pc) (sra WI value (const 1)))
-    ((value pc) (sll WI value (const 1)))
+    ((value pc) (mul WI value (const 2)))
 )
 (df  f-disp10    "10 bit signed offset"  ()  4  8 INT
      ((value pc) (sra WI value (const 2)))
-     ((value pc) (sll WI value (const 2)))
+     ((value pc) (mul WI value (const 4)))
 )
 (df  f-s10       "10 bit signed offset"  ()  8  8 INT
      ((value pc) (sra WI value (const 2)))
-     ((value pc) (sll WI value (const 2)))
+     ((value pc) (mul WI value (const 4)))
 )
 (df  f-u10       "10 bit unsigned offset" ()  8  8 UINT
      ((value pc) (srl UWI value (const 2)))
@@ -209,7 +209,7 @@
 )
 (df  f-rel9 "9 pc relative signed offset" (PCREL-ADDR) 8 8 INT
      ((value pc) (sra WI (sub WI value (add WI pc (const 2))) (const 1)))
-     ((value pc) (add WI (sll WI value (const 1)) (add WI pc (const 2))))
+     ((value pc) (add WI (mul WI value (const 2)) (add WI pc (const 2))))
 )
 (dnf f-dir8      "8  bit direct address"  ()  8  8)
 (df  f-dir9      "9  bit direct address"  ()  8  8 UINT
@@ -222,7 +222,7 @@
 )
 (df  f-rel12     "12 bit pc relative signed offset" (PCREL-ADDR) 5 11 INT
      ((value pc) (sra WI (sub WI value (add WI pc (const 2))) (const 1)))
-     ((value pc) (add WI (sll WI value (const 1)) (add WI pc (const 2))))
+     ((value pc) (add WI (mul WI value (const 2)) (add WI pc (const 2))))
 )
 
 (dnf f-reglist_hi_st  "8 bit register mask for stm" () 8 8)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/frv.cpu ./cpu/frv.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/frv.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/frv.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -1984,7 +1984,7 @@
 		(set (ifield f-u12-l) (and (ifield f-u12) #x3f))
 		)
       (sequence () ; extract
-		(set (ifield f-u12) (or (sll (ifield f-u12-h) 6)
+		(set (ifield f-u12) (or (mul (ifield f-u12-h) 64)
 					(ifield f-u12-l)))
 		)
 )
@@ -2016,7 +2016,7 @@
 
 (df  f-label16    "18 bit pc relative signed offset" (PCREL-ADDR) 15 16 INT
      ((value pc) (sra WI (sub WI value pc) (const 2)))
-     ((value pc) (add WI (sll WI value (const 2)) pc))
+     ((value pc) (add WI (mul WI value (const 4)) pc))
 )
 
 (df   f-labelH6   "upper 6  bits of label24"  () 30  6 INT #f #f)
@@ -2034,9 +2034,9 @@
       ; extract
       (sequence ()
 		(set (ifield f-label24)
-		     (add (sll (or (sll (ifield f-labelH6) (const 18))
+		     (add (mul (or (mul (ifield f-labelH6) (sll 1 18))
 				   (ifield f-labelL18))
-			       (const 2))
+			       (const 4))
 			  pc)))
 )
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/iq2000.cpu ./cpu/iq2000.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/iq2000.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/iq2000.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -207,7 +207,7 @@
 (df  f-offset "pc offset field"                (PCREL-ADDR) 15 16 INT
      ; Actually, this is relative to the address of the delay slot.
      ((value pc) (sra SI (sub SI value pc) 2))
-     ((value pc) (add SI (sll SI value 2) (add pc 4))))
+     ((value pc) (add SI (mul SI value 4) (add pc 4))))
 
 ; Instruction fields that scarcely appear in instructions.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/m32c.cpu ./cpu/m32c.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/m32c.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/m32c.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -240,7 +240,7 @@
 ;   r1l      10'b    11'b
 ;   r1h      11'b    01'b
 (df  f-src32-rn-unprefixed-QI "source Rn QI for m32c" (MACH32 m32c-isa) 10 2 UINT
-     ((value pc) (or USI (and (sll (inv value) 1) 2) (and (srl value 1) 1))) ; insert
+     ((value pc) (or USI (and (inv (sll value 1)) 2) (and (srl value 1) 1))) ; insert
      ((value pc) (or USI (and (inv (srl value 1)) 1) (and (sll value 1) 2))) ; extract
 )
 ; QI mode gr encoding for m32c is different than for m16c. The hardware
@@ -252,7 +252,7 @@
 ;   r1l      10'b    11'b
 ;   r1h      11'b    01'b
 (df  f-src32-rn-prefixed-QI "source Rn QI for m32c" (MACH32 m32c-isa) 18 2 UINT
-     ((value pc) (or USI (and (sll (inv value) 1) 2) (and (srl value 1) 1))) ; insert
+     ((value pc) (or USI (and (inv (sll value 1)) 2) (and (srl value 1) 1))) ; insert
      ((value pc) (or USI (and (inv (srl value 1)) 1) (and (sll value 1) 2))) ; extract
 )
 ; HI mode gr encoding for m32c is different than for m16c. The hardware
@@ -316,11 +316,11 @@
 ;   r1l      10'b    11'b
 ;   r1h      11'b    01'b
 (df  f-dst32-rn-unprefixed-QI "destination Rn QI for m32c" (MACH32 m32c-isa) 8 2 UINT
-     ((value pc) (or USI (and (sll (inv value) 1) 2) (and (srl value 1) 1))) ; insert
+     ((value pc) (or USI (and (inv (sll value 1)) 2) (and (srl value 1) 1))) ; insert
      ((value pc) (or USI (and (inv (srl value 1)) 1) (and (sll value 1) 2))) ; extract
 )
 (df  f-dst32-rn-prefixed-QI "destination Rn QI for m32c" (MACH32 m32c-isa) 16 2 UINT
-     ((value pc) (or USI (and (sll (inv value) 1) 2) (and (srl value 1) 1))) ; insert
+     ((value pc) (or USI (and (inv (sll value 1)) 2) (and (srl value 1) 1))) ; insert
      ((value pc) (or USI (and (inv (srl value 1)) 1) (and (sll value 1) 2))) ; extract
 )
 ; HI mode gr encoding for m32c is different than for m16c. The hardware
@@ -436,42 +436,42 @@
 
 (df f-dsp-8-u16 "16 bit unsigned" (all-isas) 8 16 UINT
      ((value pc) (or UHI
-		     (and (srl value 8) #x00ff)
-		     (and (sll value 8) #xff00))) ; insert
+		     (and (srl value 8) #xff)
+		     (sll (and value #xff) 8))) ; insert
      ((value pc) (or UHI
-		     (and UHI (srl UHI value 8) #x00ff)
-		     (and UHI (sll UHI value 8) #xff00))) ; extract
+		     (and UHI (srl UHI value 8) #xff)
+		     (sll UHI (and UHI value #xff) 8))) ; extract
 )
 
 (df f-dsp-8-s16 "8 bit   signed" (all-isas) 8 16 INT
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00)))))	; insert
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8)))))	; insert
      ((value pc) (ext INT
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00)))))	; extract
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8)))))	; extract
 )
 
 (df f-dsp-16-u16 "16 bit unsigned" (all-isas) 16 16 UINT
      ((value pc) (or UHI
-		     (and (srl value 8) #x00ff)
-		     (and (sll value 8) #xff00))) ; insert
+		     (and (srl value 8) #xff)
+		     (sll (and value #xff) 8))) ; insert
      ((value pc) (or UHI
-		     (and UHI (srl UHI value 8) #x00ff)
-		     (and UHI (sll UHI value 8) #xff00))) ; extract
+		     (and UHI (srl UHI value 8) #xff)
+		     (sll UHI (and UHI value #xff) 8))) ; extract
 )
 
 (df f-dsp-16-s16 "16 bit   signed" (all-isas) 16 16 INT
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00))))) ; insert
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8))))) ; insert
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00))))) ; extract
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8))))) ; extract
 )
 
 (dnmf f-dsp-24-u16 "16 bit unsigned" (all-isas) UINT
@@ -504,79 +504,82 @@
 
 (df f-dsp-32-u16 "16 bit unsigned" (all-isas) 32 16 UINT
      ((value pc) (or UHI
-		     (and (srl value 8) #x00ff)
-		     (and (sll value 8) #xff00))) ; insert
+		     (and (srl value 8) #xff)
+		     (sll (and value #xff) 8))) ; insert
      ((value pc) (or UHI
-		     (and UHI (srl UHI value 8) #x00ff)
-		     (and UHI (sll UHI value 8) #xff00))) ; extract
+		     (and UHI (srl UHI value 8) #xff)
+		     (sll UHI (and UHI value #xff) 8))) ; extract
 )
 
 (df f-dsp-32-s16 "16 bit   signed" (all-isas) 32 16 INT
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00))))) ; insert
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8))))) ; insert
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00)))))	; extract
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8)))))	; extract
 )
 
 (df f-dsp-40-u16 "16 bit unsigned" (all-isas) 40 16 UINT
      ((value pc) (or UHI
-		     (and (srl value 8) #x00ff)
-		     (and (sll value 8) #xff00))) ; insert
+		     (and (srl value 8) #xff)
+		     (sll (and value #xff) 8))) ; insert
      ((value pc) (or UHI
-		     (and UHI (srl UHI value 8) #x00ff)
-		     (and UHI (sll UHI value 8) #xff00))) ; extract
+		     (and UHI (srl UHI value 8) #xff)
+		     (sll UHI (and UHI value #xff) 8))) ; extract
 )
 
 (df f-dsp-40-s16 "16 bit   signed" (all-isas) 40 16 INT
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00))))) ; insert
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8))))) ; insert
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00))))) ; extract
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8))))) ; extract
 )
 
 (df f-dsp-48-u16 "16 bit unsigned" (all-isas) 48 16 UINT
      ((value pc) (or UHI
-		     (and (srl value 8) #x00ff)
-		     (and (sll value 8) #xff00))) ; insert
+		     (and (srl value 8) #xff)
+		     (sll (and value #xff) 8))) ; insert
      ((value pc) (or UHI
-		     (and UHI (srl UHI value 8) #x00ff)
-		     (and UHI (sll UHI value 8) #xff00))) ; extract
+		     (and UHI (srl UHI value 8) #xff)
+		     (sll UHI (and UHI value #xff) 8))) ; extract
 )
 
 (df f-dsp-48-s16 "16 bit   signed" (all-isas) 48 16 INT
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00))))) ; insert
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8))))) ; insert
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00))))) ; extract
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8))))) ; extract
 )
 
 (df f-dsp-64-u16 "16 bit unsigned" (all-isas) 64 16 UINT
      ((value pc) (or UHI
-		     (and (srl value 8) #x00ff)
-		     (and (sll value 8) #xff00))) ; insert
+		     (and (srl value 8) #xff)
+		     (sll (and value #xff) 8))) ; insert
      ((value pc) (or UHI
-		     (and UHI (srl UHI value 8) #x00ff)
-		     (and UHI (sll UHI value 8) #xff00))) ; extract
+		     (and UHI (srl UHI value 8) #xff)
+		     (sll UHI (and UHI value #xff) 8))) ; extract
 )
 (df  f-dsp-8-s24 "24 bit signed" (all-isas) 8 24 INT
-     ((value pc) (or SI
-		     (or (and (srl value 16) #xff) (and value #xff00))
-		     (sll (ext INT (trunc QI (and value #xff))) 16)))
-     ((value pc) (or SI
-		     (or (and (srl value 16) #xff) (and value #xff00))
-		     (sll (ext INT (trunc QI (and value #xff))) 16)))
+     ((value pc) (sub SI (xor (or SI (or (and (srl value 16) #xff)
+					 (and value #xff00))
+				  (sll (and value #xff) 16))
+			      #x800000) #x800000))
+     ((value pc) (sub SI (xor (or SI
+				  (or (and (srl value 16) #xff)
+				      (and value #xff00))
+				  (sll (and value #xff) 16))
+			      #x800000) #x800000))
  )
 
 (df  f-dsp-8-u24 "24 bit unsigned" (all-isas) 8 24 UINT
@@ -717,22 +720,22 @@
       (ext INT
 	   (or SI
 	       (or SI
-		   (and (srl value 24) #x000000ff)
-		   (and (srl value 8)  #x0000ff00))
+		   (and (srl value 24) #x00ff)
+		   (and (srl value 8)  #xff00))
 	       (or SI
-		   (and (sll value 8)  #x00ff0000)
-		   (and (sll value 24) #xff000000)))))
+		   (sll (and value #xff00) 8)
+		   (sll (and value #x00ff) 24)))))
 
      ;; extract
      ((value pc)
       (ext INT
 	   (or SI
 	       (or SI
-		   (and (srl value 24) #x000000ff)
-		   (and (srl value 8)  #x0000ff00))
+		   (and (srl value 24) #x00ff)
+		   (and (srl value 8)  #xff00))
 	       (or SI
-		   (and (sll value 8)  #x00ff0000)
-		   (and (sll value 24) #xff000000)))))
+		   (sll (and value #xff00) 8)
+		   (sll (and value #x00ff) 24)))))
 )
 
 (dnmf f-dsp-48-u32 "32 bit unsigned" (all-isas) UINT
@@ -743,7 +746,7 @@
 		)
       (sequence () ; extract
 		(set (ifield f-dsp-48-u32) (or (and (ifield f-dsp-48-u16) #xffff)
-					       (and (sll (ifield f-dsp-64-u16) 16) #xffff0000)))
+					       (sll (and (ifield f-dsp-64-u16) #xffff) 16)))
 		)
 )
 
@@ -755,7 +758,7 @@
 		)
       (sequence () ; extract
 		(set (ifield f-dsp-48-s32) (or (and (ifield f-dsp-48-u16) #xffff)
-					       (and (sll (ifield f-dsp-64-u16) 16) #xffff0000)))
+					       (sll (and (ifield f-dsp-64-u16) #xffff) 16)))
 		)
 )
 
@@ -778,12 +781,12 @@
 (df f-dsp-64-s16 " 16 bit signed" (all-isas) 64 16 INT
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00))))) ; insert
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8))))) ; insert
      ((value pc) (ext INT 
 		      (trunc HI
-			     (or (and (srl value 8) #x00ff)
-				 (and (sll value 8) #xff00))))) ; extract
+			     (or (and (srl value 8) #xff)
+				 (sll (and value #xff) 8))))) ; extract
 )
 
 ;-------------------------------------------------------------
@@ -824,7 +827,7 @@
 		(set (ifield f-dsp-16-s8) (sra INT (ifield f-bitbase32-16-s11-unprefixed) 3))
 		)
       (sequence () ; extract
-		(set (ifield f-bitbase32-16-s11-unprefixed) (or (sll (ifield f-dsp-16-s8) 3)
+		(set (ifield f-bitbase32-16-s11-unprefixed) (or (mul (ifield f-dsp-16-s8) 8)
 								(ifield f-bitno32-unprefixed)))
 		)
 )
@@ -846,7 +849,7 @@
 		(set (ifield f-dsp-16-s16) (sra INT (ifield f-bitbase32-16-s19-unprefixed) 3))
 		)
       (sequence () ; extract
-		(set (ifield f-bitbase32-16-s19-unprefixed) (or (sll (ifield f-dsp-16-s16) 3)
+		(set (ifield f-bitbase32-16-s19-unprefixed) (or (mul (ifield f-dsp-16-s16) 8)
 								(ifield f-bitno32-unprefixed)))
 		)
 )
@@ -882,7 +885,7 @@
 		(set (ifield f-dsp-24-s8) (sra INT (ifield f-bitbase32-24-s11-prefixed) 3))
 		)
       (sequence () ; extract
-		(set (ifield f-bitbase32-24-s11-prefixed) (or (sll (ifield f-dsp-24-s8) 3)
+		(set (ifield f-bitbase32-24-s11-prefixed) (or (mul (ifield f-dsp-24-s8) 8)
 							      (ifield f-bitno32-prefixed)))
 		)
 )
@@ -910,7 +913,7 @@
 		)
       (sequence () ; extract
 		(set (ifield f-bitbase32-24-s19-prefixed) (or (sll (ifield f-dsp-24-u8) 3)
-							      (or (sll (ifield f-dsp-32-s8) 11)
+							      (or (mul (ifield f-dsp-32-s8) 2048)
 								  (ifield f-bitno32-prefixed))))
 		)
 )
@@ -1072,7 +1075,7 @@
   (indices keyword "" (("r2r0" 0) ("r3r1" 1)))
   (get (index) (or SI
 		   (and (reg h-gr index) #xffff)
-		   (and (sll (reg h-gr (add index 2)) 16) #xffff0000)))
+		   (sll (and (reg h-gr (add index 2)) #xffff) 16)))
   (set (index newval) (sequence ()
 				(set (reg h-gr index) (and newval #xffff))
 				(set (reg h-gr (add index 2)) (srl newval 16)))))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/m32r.cpu ./cpu/m32r.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/m32r.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/m32r.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -478,13 +478,13 @@
 (dnf f-hi16      "high 16 bits"        (SIGN-OPT) 16 16)
 (df f-disp8      "disp8, slot unknown" (PCREL-ADDR RELOC) 8 8 INT
     ((value pc) (sra WI (sub WI value (and WI pc (const -4))) (const 2)))
-    ((value pc) (add WI (sll WI value (const 2)) (and WI pc (const -4)))))
+    ((value pc) (add WI (mul WI value (const 4)) (and WI pc (const -4)))))
 (df f-disp16     "disp16"              (PCREL-ADDR RELOC) 16 16 INT
     ((value pc) (sra WI (sub WI value pc) (const 2)))
-    ((value pc) (add WI (sll WI value (const 2)) pc)))
+    ((value pc) (add WI (mul WI value (const 4)) pc)))
 (df f-disp24     "disp24"              (PCREL-ADDR RELOC) 8 24 INT
     ((value pc) (sra WI (sub WI value pc) (const 2)))
-    ((value pc) (add WI (sll WI value (const 2)) pc)))
+    ((value pc) (add WI (mul WI value (const 4)) pc)))
 
 (dnf f-op23      "op2.3"               ()  9 3)
 (dnf f-op3       "op3"                 () 14 2)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/mep-core.cpu ./cpu/mep-core.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/mep-core.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/mep-core.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -430,15 +430,15 @@
 
 (df f-8s8a2 "pc-rel addr (8 bits)"    (all-mep-core-isas PCREL-ADDR)  8  7 INT
     ((value pc) (sra SI (sub SI value    pc) 1))
-    ((value pc) (add SI (sll SI value 1) pc)))
+    ((value pc) (add SI (mul SI value 2) pc)))
 
 (df f-12s4a2 "pc-rel addr (12 bits)"  (all-mep-core-isas PCREL-ADDR)  4 11 INT
     ((value pc) (sra SI (sub SI value    pc) 1))
-    ((value pc) (add SI (sll SI value 1) pc)))
+    ((value pc) (add SI (mul SI value 2) pc)))
 
 (df f-17s16a2 "pc-rel addr (17 bits)" (all-mep-core-isas PCREL-ADDR) 16 16 INT
     ((value pc) (sra SI (sub SI value    pc) 1))
-    ((value pc) (add SI (sll SI value 1) pc)))
+    ((value pc) (add SI (mul SI value 2) pc)))
 
 (df f-24s5a2n-hi "24s5a2n hi 16s16" (all-mep-core-isas PCREL-ADDR) 16 16  INT #f #f)
 (df f-24s5a2n-lo "24s5a2n lo 7s5a2" (all-mep-core-isas PCREL-ADDR)  5  7 UINT #f #f)
@@ -456,7 +456,7 @@
 		    (set (ifield f-24s5a2n-hi)
 			 (sra INT (ifield f-24s5a2n) 8))))
   (extract (set (ifield f-24s5a2n)
-		(add SI (or (sll (ifield f-24s5a2n-hi) 8)
+		(add SI (or (mul (ifield f-24s5a2n-hi) 256)
 			    (sll (ifield f-24s5a2n-lo) 1))
 		     pc)))
   )
@@ -486,7 +486,7 @@
 (df f-7u9     "tp-rel b (7 bits)"      (all-mep-core-isas)  9  7 UINT #f #f)
 (df f-7u9a2   "tp-rel h (7 bits)"      (all-mep-core-isas)  9  6 UINT
     ((value pc) (srl SI value 1))
-    ((value pc) (sll SI value 1)))
+    ((value pc) (mul SI value 2)))
 (df f-7u9a4   "tp/sp-rel w (7 bits)"   (all-mep-core-isas)  9  5 UINT
     ((value pc) (srl SI value 2))
     ((value pc) (sll SI value 2)))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/mep.opc ./cpu/mep.opc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/mep.opc	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/mep.opc	2021-05-21 01:57:23.000000000 +0000
@@ -855,8 +855,7 @@ mep_cgen_expand_macros_and_parse_operand
 	*strp_in += (str - hold); 
     }
 
-  if (hold)
-    free (hold);
+  free (hold);
 
   return errmsg;
 }
@@ -1272,7 +1271,7 @@ print_slot_insn (CGEN_CPU_DESC cd,
   CGEN_INSN_INT insn_value;
   CGEN_EXTRACT_INFO ex_info;
 
-  insn_value = cgen_get_insn_value (cd, buf, 32);
+  insn_value = cgen_get_insn_value (cd, buf, 32, cd->insn_endian);
 
   /* Fill in ex_info fields like read_insn would.  Don't actually call
      read_insn, since the incoming buffer is already read (and possibly
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/or1kcommon.cpu ./cpu/or1kcommon.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/or1kcommon.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/or1kcommon.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -115,20 +115,6 @@
   )
 
 ;
-; Hardware: virtual registerts for FPU (double precision)
-;           mapped to GPRs
-;
-(define-hardware
-  (name h-fdr)
-  (comment "or64 floating point registers (double, virtual)")
-  (attrs VIRTUAL (MACH ORFPX64-MACHS))
-  (type register DF (32))
-  (indices keyword "" REG-INDICES)
-  (get (index) (subword DF (trunc DI (reg h-gpr index)) 0))
-  (set (index newval) (set UDI (reg h-gpr index) (zext UDI (subword DI newval 0))))
-  )
-
-;
 ; Register pairs are offset by 2 for registers r16 and above.  This is to
 ; be able to allow registers to be call saved in GCC across function calls.
 ;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/or1k.cpu ./cpu/or1k.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/or1k.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/or1k.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -31,7 +31,7 @@
   (comment "OpenRISC 1000")
   (default-alignment aligned)
   (insn-lsb0? #t)
-  (machs or32 or32nd or64 or64nd)
+  (machs or32 or32nd)
   (isas openrisc)
 )
 
@@ -44,10 +44,8 @@
   )
 
 (define-pmacro OR32-MACHS       or32,or32nd)
-(define-pmacro OR64-MACHS       or64,or64nd)
-(define-pmacro ORBIS-MACHS      or32,or32nd,or64,or64nd)
-(define-pmacro ORFPX32-MACHS    or32,or32nd,or64,or64nd)
-(define-pmacro ORFPX64-MACHS    or64,or64nd)
+(define-pmacro ORBIS-MACHS      or32,or32nd)
+(define-pmacro ORFPX32-MACHS    or32,or32nd)
 (define-pmacro ORFPX64A32-MACHS or32,or32nd) ; float64 for 32-bit machs
 
 (define-attr
@@ -99,33 +97,6 @@
         )
       )
     )
-
-(if (keep-mach? (or64 or64nd))
-    (begin
-      (define-cpu
-        (name or1k64bf)
-        (comment "OpenRISC 1000 64-bit CPU family")
-        (insn-endian big)
-        (data-endian big)
-        (word-bitsize 64)
-        (file-transform "64")
-        )
-
-      (define-mach
-        (name or64)
-        (comment "Generic OpenRISC 1000 64-bit CPU")
-        (cpu or1k64bf)
-        (bfd-name "or1k64")
-        )
-
-      (define-mach
-        (name or64nd)
-        (comment "Generic OpenRISC 1000 ND 64-bit CPU with no branch delay slot")
-        (cpu or1k64bf)
-        (bfd-name "or1k64nd")
-        )
-      )
-    )
 
 (include "or1kcommon.cpu")
 (include "or1korbis.cpu")
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/or1korbis.cpu ./cpu/or1korbis.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/or1korbis.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/or1korbis.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -76,7 +76,7 @@
     26
     INT
     ((value pc) (sra IAI (sub IAI value pc) (const 2)))
-    ((value pc) (add IAI (sll IAI value (const 2)) pc))
+    ((value pc) (add IAI (mul IAI value (const 4)) pc))
     )
 
 ; PC relative, 21-bit, 13 shifted to right, aligned.
@@ -91,7 +91,7 @@
     ((value pc)
      (sub IAI (sra IAI value (const 13)) (sra IAI pc (const 13))))
     ((value pc)
-     (sll IAI (add IAI value (sra IAI pc (const 13))) (const 13)))
+     (mul IAI (add IAI value (sra IAI pc (const 13))) (const 8192)))
     )
 
 ; Immediates.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/or1korfpx.cpu ./cpu/or1korfpx.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/or1korfpx.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/or1korfpx.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -84,10 +84,6 @@
 (dnop rASF "source register A (single floating point mode)"    ((MACH ORFPX32-MACHS)) h-fsr f-r2)
 (dnop rBSF "source register B (single floating point mode)"    ((MACH ORFPX32-MACHS)) h-fsr f-r3)
 
-(dnop rDDF "or64 destination register (double floating point mode)" ((MACH ORFPX64-MACHS)) h-fdr f-r1)
-(dnop rADF "or64 source register A (double floating point mode)"    ((MACH ORFPX64-MACHS)) h-fdr f-r2)
-(dnop rBDF "or64 source register B (double floating point mode)"    ((MACH ORFPX64-MACHS)) h-fdr f-r3)
-
 (define-pmacro (double-field-and-ops mnemonic reg offbit op-comment)
   (begin
     (define-multi-ifield
@@ -152,14 +148,6 @@
          (set SF rDSF (mnemonic SF rASF rBSF))
          ()
          )
-    (dni (.sym lf- mnemonic -d)
-         (.str "lf." mnemonic ".d reg/reg/reg")
-         ((MACH ORFPX64-MACHS))
-         (.str "lf." mnemonic ".d $rDDF,$rADF,$rBDF")
-         (+ OPC_FLOAT rDDF rADF rBDF (f-resv-10-3 0) (.sym OPC_FLOAT_REGREG_ (.upcase mnemonic) _D))
-         (set DF rDDF (mnemonic DF rADF rBDF))
-         ()
-         )
     (dni (.sym lf- mnemonic -d32)
          (.str "lf." mnemonic ".d regpair/regpair/regpair")
          ((MACH ORFPX64A32-MACHS))
@@ -185,15 +173,6 @@
      ()
      )
 
-(dni lf-rem-d
-     "lf.rem.d reg/reg/reg"
-     ((MACH ORFPX64-MACHS))
-     "lf.rem.d $rDDF,$rADF,$rBDF"
-     (+ OPC_FLOAT rDDF rADF rBDF (f-resv-10-3 0) OPC_FLOAT_REGREG_REM_D)
-     (set DF rDDF (rem DF rADF rBDF))
-     ()
-     )
-
 (dni lf-rem-d32
      "lf.rem.d regpair/regpair/regpair"
      ((MACH ORFPX64A32-MACHS))
@@ -221,15 +200,6 @@
      ()
      )
 
-(dni lf-itof-d
-     "lf.itof.d reg/reg"
-     ((MACH ORFPX64-MACHS))
-     "lf.itof.d $rDDF,$rA"
-     (+ OPC_FLOAT rDDF rA (f-r3 0) (f-resv-10-3 0) OPC_FLOAT_REGREG_ITOF_D)
-     (set DF rDDF (float DF (get-rounding-mode) rA))
-     ()
-     )
-
 (dni lf-itof-d32
      "lf.itof.d regpair/regpair"
      ((MACH ORFPX64A32-MACHS))
@@ -248,15 +218,6 @@
      ()
      )
 
-(dni lf-ftoi-d
-     "lf.ftoi.d reg/reg"
-     ((MACH ORFPX64-MACHS))
-     "lf.ftoi.d $rD,$rADF"
-     (+ OPC_FLOAT rD rADF (f-r3 0) (f-resv-10-3 0) OPC_FLOAT_REGREG_FTOI_D)
-     (set WI rD (fix WI (get-rounding-mode) rADF))
-     ()
-     )
-
 (dni lf-ftoi-d32
      "lf.ftoi.d regpair/regpair"
      ((MACH ORFPX64A32-MACHS))
@@ -276,14 +237,6 @@
          (symantics rtx-mnemonic SF rASF rBSF)
          ()
          )
-    (dni (.sym lf-sf mnemonic -d)
-         (.str "lf.sf" mnemonic ".d reg/reg")
-         ((MACH ORFPX64-MACHS))
-         (.str "lf.sf" mnemonic ".d $rADF,$rBDF")
-         (+ OPC_FLOAT (f-r1 0) rADF rBDF (f-resv-10-3 0) (.sym OPC_FLOAT_REGREG_SF (.upcase mnemonic) _D))
-         (symantics rtx-mnemonic DF rADF rBDF)
-         ()
-         )
     (dni (.sym lf-sf mnemonic -d32)
          (.str "lf.sf" mnemonic ".d regpair/regpair")
          ((MACH ORFPX64A32-MACHS))
@@ -336,15 +289,6 @@
      ()
      )
 
-(dni lf-madd-d
-     "lf.madd.d reg/reg/reg"
-     ((MACH ORFPX64-MACHS))
-     "lf.madd.d $rDDF,$rADF,$rBDF"
-     (+ OPC_FLOAT rDDF rADF rBDF (f-resv-10-3 0) OPC_FLOAT_REGREG_MADD_D)
-     (set DF rDDF (add DF (mul DF rADF rBDF) rDDF))
-     ()
-     )
-
 (dni lf-madd-d32
      "lf.madd.d regpair/regpair/regpair"
      ((MACH ORFPX64A32-MACHS))
@@ -364,14 +308,6 @@
          (nop)
          ()
          )
-    (dni (.sym "lf-cust" cust-num "-d")
-         (.str "lf.cust" cust-num ".d")
-         ((MACH ORFPX64-MACHS))
-         (.str "lf.cust" cust-num ".d")
-         (+ OPC_FLOAT (f-resv-25-5 0) rADF rBDF (f-resv-10-3 0) (.sym "OPC_FLOAT_REGREG_CUST" cust-num "_D"))
-         (nop)
-         ()
-         )
     (dni (.sym "lf-cust" cust-num "-d32")
          (.str "lf.cust" cust-num ".d")
          ((MACH ORFPX64A32-MACHS))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/xstormy16.cpu ./cpu/xstormy16.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/cpu/xstormy16.cpu	2020-03-07 02:07:41.000000000 +0000
+++ ./cpu/xstormy16.cpu	2021-05-21 01:57:23.000000000 +0000
@@ -393,7 +393,7 @@
   (length 11)
   (mode INT)
   (encode (value pc) (sra SI (sub SI value (add SI pc 2)) 1))
-  (decode (value pc) (add SI (sll value 1) (add SI pc 2)))
+  (decode (value pc) (add SI (mul value 2) (add SI pc 2)))
 )
 (dnop rel12a "12 bit relative address" () h-uint f-rel12a)
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/djunpack.bat ./djunpack.bat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/djunpack.bat	2020-03-07 02:11:49.000000000 +0000
+++ ./djunpack.bat	2021-05-21 02:00:27.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.1.90.20200307
-if "%GDBVER%"=="$package-9.1.90.20200307" GoTo EnvOk
+set GDBVER=$package-10.2.90.20210521
+if "%GDBVER%"=="$package-10.2.90.20210521" 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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/etc/ChangeLog ./etc/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/etc/ChangeLog	2020-03-07 02:07:41.000000000 +0000
+++ ./etc/ChangeLog	2021-05-21 01:57:23.000000000 +0000
@@ -1,3 +1,7 @@
+2020-01-15  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* texi2pod.pl: Handle @t{...} tags.
+
 2018-06-19  Simon Marchi  <simon.marchi@ericsson.com>
 
 	* configure.in: Remove AC_PREREQ.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/etc/texi2pod.pl ./etc/texi2pod.pl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/etc/texi2pod.pl	2020-03-07 02:07:41.000000000 +0000
+++ ./etc/texi2pod.pl	2021-05-21 01:57:23.000000000 +0000
@@ -381,6 +381,7 @@ sub postprocess
     s/\@file\{([^\}]*)\}/F<$1>/g;
     s/\@w\{([^\}]*)\}/S<$1>/g;
     s/\@(?:dmn|math)\{([^\}]*)\}/$1/g;
+    s/\@t\{([^\}]*)\}/$1/g;
 
     # keep references of the form @ref{...}, print them bold
     s/\@(?:ref)\{([^\}]*)\}/B<$1>/g;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch32-linux-nat.c ./gdb/aarch32-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch32-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch32-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch32-linux-nat.h ./gdb/aarch32-linux-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch32-linux-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch32-linux-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch32-tdep.c ./gdb/aarch32-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch32-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch32-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch32-tdep.h ./gdb/aarch32-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch32-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch32-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-fbsd-nat.c ./gdb/aarch64-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-fbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-fbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD/aarch64.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -124,8 +124,9 @@ aarch64_fbsd_nat_target::store_registers
     }
 }
 
+void _initialize_aarch64_fbsd_nat ();
 void
-_initialize_aarch64_fbsd_nat (void)
+_initialize_aarch64_fbsd_nat ()
 {
   add_inf_child_target (&the_aarch64_fbsd_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-fbsd-tdep.c ./gdb/aarch64-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-fbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-fbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD/aarch64.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -134,7 +134,7 @@ const struct regset aarch64_fbsd_fpregse
     regcache_supply_regset, regcache_collect_regset
   };
 
-/* Implement the "regset_from_core_section" gdbarch method.  */
+/* Implement the "iterate_over_regset_sections" gdbarch method.  */
 
 static void
 aarch64_fbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
@@ -170,8 +170,9 @@ aarch64_fbsd_init_abi (struct gdbarch_in
     (gdbarch, aarch64_fbsd_iterate_over_regset_sections);
 }
 
+void _initialize_aarch64_fbsd_tdep ();
 void
-_initialize_aarch64_fbsd_tdep (void)
+_initialize_aarch64_fbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_aarch64, 0, GDB_OSABI_FREEBSD,
 			  aarch64_fbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-fbsd-tdep.h ./gdb/aarch64-fbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-fbsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-fbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* FreeBSD/aarch64 target support, prototypes.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-linux-nat.c ./gdb/aarch64-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux AArch64.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -959,7 +959,7 @@ aarch64_linux_nat_target::thread_archite
 
   /* Find the current gdbarch the same way as process_stratum_target.  Only
      return it if the current vector length matches the one in the tdep.  */
-  inferior *inf = find_inferior_ptid (ptid);
+  inferior *inf = find_inferior_ptid (this, ptid);
   gdb_assert (inf != NULL);
   if (vq == gdbarch_tdep (inf->gdbarch)->vq)
     return inf->gdbarch;
@@ -970,7 +970,7 @@ aarch64_linux_nat_target::thread_archite
      unavailable, to distinguish from an unset value of 0.  */
   struct gdbarch_info info;
   gdbarch_info_init (&info);
-  info.bfd_arch_info = bfd_lookup_arch (bfd_arch_spu, bfd_mach_spu);
+  info.bfd_arch_info = bfd_lookup_arch (bfd_arch_aarch64, bfd_mach_aarch64);
   info.id = (int *) (vq == 0 ? -1 : vq);
   return gdbarch_find_by_info (info);
 }
@@ -996,8 +996,9 @@ triggers a breakpoint or watchpoint."),
 			   &maintenance_show_cmdlist);
 }
 
+void _initialize_aarch64_linux_nat ();
 void
-_initialize_aarch64_linux_nat (void)
+_initialize_aarch64_linux_nat ()
 {
   add_show_debug_regs_command ();
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-linux-tdep.c ./gdb/aarch64-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux AArch64.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -582,7 +582,7 @@ aarch64_linux_collect_sve_regset (const
 			    size - SVE_HEADER_SIZE);
 }
 
-/* Implement the "regset_from_core_section" gdbarch method.  */
+/* Implement the "iterate_over_regset_sections" gdbarch method.  */
 
 static void
 aarch64_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
@@ -1665,8 +1665,9 @@ aarch64_linux_init_abi (struct gdbarch_i
   set_gdbarch_gcc_target_options (gdbarch, aarch64_linux_gcc_target_options);
 }
 
+void _initialize_aarch64_linux_tdep ();
 void
-_initialize_aarch64_linux_tdep (void)
+_initialize_aarch64_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_aarch64, 0, GDB_OSABI_LINUX,
 			  aarch64_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-linux-tdep.h ./gdb/aarch64-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-linux-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-linux-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GNU/Linux on AArch64 target support, prototypes.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-newlib-tdep.c ./gdb/aarch64-newlib-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-newlib-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-newlib-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Newlib AArch64.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -36,8 +36,9 @@ aarch64_newlib_init_abi (struct gdbarch_
   tdep->jb_pc = 11;
 }
 
+void _initialize_aarch64_newlib_tdep ();
 void
-_initialize_aarch64_newlib_tdep (void)
+_initialize_aarch64_newlib_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_aarch64, 0, GDB_OSABI_NEWLIB,
 			  aarch64_newlib_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-ravenscar-thread.c ./gdb/aarch64-ravenscar-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-ravenscar-thread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-ravenscar-thread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ravenscar Aarch64 target support.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-ravenscar-thread.h ./gdb/aarch64-ravenscar-thread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-ravenscar-thread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-ravenscar-thread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ravenscar Aarch64 target support.
  
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-tdep.c ./gdb/aarch64-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for GDB on AArch64 systems.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -34,7 +34,7 @@
 #include "trad-frame.h"
 #include "objfiles.h"
 #include "dwarf2.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "gdbtypes.h"
 #include "prologue-value.h"
 #include "target-descriptions.h"
@@ -287,6 +287,12 @@ aarch64_analyze_prologue (struct gdbarch
 {
   enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
   int i;
+
+  /* Whether the stack has been set.  This should be true when we notice a SP
+     to FP move or if we are using the SP as the base register for storing
+     data, in case the FP is ommitted.  */
+  bool seen_stack_set = false;
+
   /* Track X registers and D registers in prologue.  */
   pv_t regs[AARCH64_X_REGISTER_COUNT + AARCH64_D_REGISTER_COUNT];
 
@@ -326,6 +332,10 @@ aarch64_analyze_prologue (struct gdbarch
 	      regs[rd] = pv_add_constant (regs[rn],
 					  -inst.operands[2].imm.value);
 	    }
+
+	  /* Did we move SP to FP?  */
+	  if (rn == AARCH64_SP_REGNUM && rd == AARCH64_FP_REGNUM)
+	    seen_stack_set = true;
 	}
       else if (inst.opcode->iclass == pcreladdr
 	       && inst.operands[1].type == AARCH64_OPND_ADDR_ADRP)
@@ -358,6 +368,12 @@ aarch64_analyze_prologue (struct gdbarch
       else if (inst.opcode->op == OP_MOVZ)
 	{
 	  gdb_assert (inst.operands[0].type == AARCH64_OPND_Rd);
+
+	  /* If this shows up before we set the stack, keep going.  Otherwise
+	     stop the analysis.  */
+	  if (seen_stack_set)
+	    break;
+
 	  regs[inst.operands[0].reg.regno] = pv_unknown ();
 	}
       else if (inst.opcode->iclass == log_shift
@@ -399,6 +415,10 @@ aarch64_analyze_prologue (struct gdbarch
 	  stack.store
 	    (pv_add_constant (regs[rn], inst.operands[1].addr.offset.imm),
 	     size, regs[rt]);
+
+	  /* Are we storing with SP as a base?  */
+	  if (rn == AARCH64_SP_REGNUM)
+	    seen_stack_set = true;
 	}
       else if ((inst.opcode->iclass == ldstpair_off
 		|| (inst.opcode->iclass == ldstpair_indexed
@@ -442,6 +462,10 @@ aarch64_analyze_prologue (struct gdbarch
 	  if (inst.operands[2].addr.writeback)
 	    regs[rn] = pv_add_constant (regs[rn], imm);
 
+	  /* Ignore the instruction that allocates stack space and sets
+	     the SP.  */
+	  if (rn == AARCH64_SP_REGNUM && !inst.operands[2].addr.writeback)
+	    seen_stack_set = true;
 	}
       else if ((inst.opcode->iclass == ldst_imm9 /* Signed immediate.  */
 		|| (inst.opcode->iclass == ldst_pos /* Unsigned immediate.  */
@@ -464,6 +488,10 @@ aarch64_analyze_prologue (struct gdbarch
 	  stack.store (pv_add_constant (regs[rn], imm), size, regs[rt]);
 	  if (inst.operands[1].addr.writeback)
 	    regs[rn] = pv_add_constant (regs[rn], imm);
+
+	  /* Are we storing with SP as a base?  */
+	  if (rn == AARCH64_SP_REGNUM)
+	    seen_stack_set = true;
 	}
       else if (inst.opcode->iclass == testbranch)
 	{
@@ -690,6 +718,117 @@ aarch64_analyze_prologue_test (void)
       }
   }
 
+  /* Test handling of movz before setting the frame pointer.  */
+  {
+    static const uint32_t insns[] = {
+      0xa9bf7bfd, /* stp     x29, x30, [sp, #-16]! */
+      0x52800020, /* mov     w0, #0x1 */
+      0x910003fd, /* mov     x29, sp */
+      0x528000a2, /* mov     w2, #0x5 */
+      0x97fffff8, /* bl      6e4 */
+    };
+
+    instruction_reader_test reader (insns);
+
+    trad_frame_reset_saved_regs (gdbarch, cache.saved_regs);
+    CORE_ADDR end = aarch64_analyze_prologue (gdbarch, 0, 128, &cache, reader);
+
+    /* We should stop at the 4th instruction.  */
+    SELF_CHECK (end == (4 - 1) * 4);
+    SELF_CHECK (cache.framereg == AARCH64_FP_REGNUM);
+    SELF_CHECK (cache.framesize == 16);
+  }
+
+  /* Test handling of movz/stp when using the stack pointer as frame
+     pointer.  */
+  {
+    static const uint32_t insns[] = {
+      0xa9bc7bfd, /* stp     x29, x30, [sp, #-64]! */
+      0x52800020, /* mov     w0, #0x1 */
+      0x290207e0, /* stp     w0, w1, [sp, #16] */
+      0xa9018fe2, /* stp     x2, x3, [sp, #24] */
+      0x528000a2, /* mov     w2, #0x5 */
+      0x97fffff8, /* bl      6e4 */
+    };
+
+    instruction_reader_test reader (insns);
+
+    trad_frame_reset_saved_regs (gdbarch, cache.saved_regs);
+    CORE_ADDR end = aarch64_analyze_prologue (gdbarch, 0, 128, &cache, reader);
+
+    /* We should stop at the 5th instruction.  */
+    SELF_CHECK (end == (5 - 1) * 4);
+    SELF_CHECK (cache.framereg == AARCH64_SP_REGNUM);
+    SELF_CHECK (cache.framesize == 64);
+  }
+
+  /* Test handling of movz/str when using the stack pointer as frame
+     pointer  */
+  {
+    static const uint32_t insns[] = {
+      0xa9bc7bfd, /* stp     x29, x30, [sp, #-64]! */
+      0x52800020, /* mov     w0, #0x1 */
+      0xb9002be4, /* str     w4, [sp, #40] */
+      0xf9001be5, /* str     x5, [sp, #48] */
+      0x528000a2, /* mov     w2, #0x5 */
+      0x97fffff8, /* bl      6e4 */
+    };
+
+    instruction_reader_test reader (insns);
+
+    trad_frame_reset_saved_regs (gdbarch, cache.saved_regs);
+    CORE_ADDR end = aarch64_analyze_prologue (gdbarch, 0, 128, &cache, reader);
+
+    /* We should stop at the 5th instruction.  */
+    SELF_CHECK (end == (5 - 1) * 4);
+    SELF_CHECK (cache.framereg == AARCH64_SP_REGNUM);
+    SELF_CHECK (cache.framesize == 64);
+  }
+
+  /* Test handling of movz/stur when using the stack pointer as frame
+     pointer.  */
+  {
+    static const uint32_t insns[] = {
+      0xa9bc7bfd, /* stp     x29, x30, [sp, #-64]! */
+      0x52800020, /* mov     w0, #0x1 */
+      0xb80343e6, /* stur    w6, [sp, #52] */
+      0xf80383e7, /* stur    x7, [sp, #56] */
+      0x528000a2, /* mov     w2, #0x5 */
+      0x97fffff8, /* bl      6e4 */
+    };
+
+    instruction_reader_test reader (insns);
+
+    trad_frame_reset_saved_regs (gdbarch, cache.saved_regs);
+    CORE_ADDR end = aarch64_analyze_prologue (gdbarch, 0, 128, &cache, reader);
+
+    /* We should stop at the 5th instruction.  */
+    SELF_CHECK (end == (5 - 1) * 4);
+    SELF_CHECK (cache.framereg == AARCH64_SP_REGNUM);
+    SELF_CHECK (cache.framesize == 64);
+  }
+
+  /* Test handling of movz when there is no frame pointer set or no stack
+     pointer used.  */
+  {
+    static const uint32_t insns[] = {
+      0xa9bf7bfd, /* stp     x29, x30, [sp, #-16]! */
+      0x52800020, /* mov     w0, #0x1 */
+      0x528000a2, /* mov     w2, #0x5 */
+      0x97fffff8, /* bl      6e4 */
+    };
+
+    instruction_reader_test reader (insns);
+
+    trad_frame_reset_saved_regs (gdbarch, cache.saved_regs);
+    CORE_ADDR end = aarch64_analyze_prologue (gdbarch, 0, 128, &cache, reader);
+
+    /* We should stop at the 4th instruction.  */
+    SELF_CHECK (end == (4 - 1) * 4);
+    SELF_CHECK (cache.framereg == AARCH64_SP_REGNUM);
+    SELF_CHECK (cache.framesize == 16);
+  }
+
   /* Test a prologue in which there is a return address signing instruction.  */
   if (tdep->has_pauth ())
     {
@@ -1201,6 +1340,39 @@ aarch64_execute_dwarf_cfa_vendor_op (str
   return false;
 }
 
+/* Used for matching BRK instructions for AArch64.  */
+static constexpr uint32_t BRK_INSN_MASK = 0xffe0001f;
+static constexpr uint32_t BRK_INSN_BASE = 0xd4200000;
+
+/* Implementation of gdbarch_program_breakpoint_here_p for aarch64.  */
+
+static bool
+aarch64_program_breakpoint_here_p (gdbarch *gdbarch, CORE_ADDR address)
+{
+  const uint32_t insn_len = 4;
+  gdb_byte target_mem[4];
+
+  /* Enable the automatic memory restoration from breakpoints while
+     we read the memory.  Otherwise we may find temporary breakpoints, ones
+     inserted by GDB, and flag them as permanent breakpoints.  */
+  scoped_restore restore_memory
+    = make_scoped_restore_show_memory_breakpoints (0);
+
+  if (target_read_memory (address, target_mem, insn_len) == 0)
+    {
+      uint32_t insn =
+	(uint32_t) extract_unsigned_integer (target_mem, insn_len,
+					     gdbarch_byte_order_for_code (gdbarch));
+
+      /* Check if INSN is a BRK instruction pattern.  There are multiple choices
+	 of such instructions with different immediate values.  Different OS'
+	 may use a different variation, but they have the same outcome.  */
+	return ((insn & BRK_INSN_MASK) == BRK_INSN_BASE);
+    }
+
+  return false;
+}
+
 /* When arguments must be pushed onto the stack, they go on in reverse
    order.  The code below implements a FILO (stack) to do this.  */
 
@@ -1221,7 +1393,7 @@ static ULONGEST
 aarch64_type_align (gdbarch *gdbarch, struct type *t)
 {
   t = check_typedef (t);
-  if (TYPE_CODE (t) == TYPE_CODE_ARRAY && TYPE_VECTOR (t))
+  if (t->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (t))
     {
       /* Use the natural alignment for vector types (the same for
 	 scalar type), but the maximum alignment is 128-bit.  */
@@ -1250,7 +1422,7 @@ aapcs_is_vfp_call_or_return_candidate_1
   if (type == nullptr)
     return -1;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_FLT:
       if (TYPE_LENGTH (type) > 16)
@@ -1259,7 +1431,7 @@ aapcs_is_vfp_call_or_return_candidate_1
       if (*fundamental_type == nullptr)
 	*fundamental_type = type;
       else if (TYPE_LENGTH (type) != TYPE_LENGTH (*fundamental_type)
-	       || TYPE_CODE (type) != TYPE_CODE (*fundamental_type))
+	       || type->code () != (*fundamental_type)->code ())
 	return -1;
 
       return 1;
@@ -1273,7 +1445,7 @@ aapcs_is_vfp_call_or_return_candidate_1
 	if (*fundamental_type == nullptr)
 	  *fundamental_type = target_type;
 	else if (TYPE_LENGTH (target_type) != TYPE_LENGTH (*fundamental_type)
-		 || TYPE_CODE (target_type) != TYPE_CODE (*fundamental_type))
+		 || target_type->code () != (*fundamental_type)->code ())
 	  return -1;
 
 	return 2;
@@ -1289,7 +1461,7 @@ aapcs_is_vfp_call_or_return_candidate_1
 	    if (*fundamental_type == nullptr)
 	      *fundamental_type = type;
 	    else if (TYPE_LENGTH (type) != TYPE_LENGTH (*fundamental_type)
-		     || TYPE_CODE (type) != TYPE_CODE (*fundamental_type))
+		     || type->code () != (*fundamental_type)->code ())
 	      return -1;
 
 	    return 1;
@@ -1313,13 +1485,13 @@ aapcs_is_vfp_call_or_return_candidate_1
       {
 	int count = 0;
 
-	for (int i = 0; i < TYPE_NFIELDS (type); i++)
+	for (int i = 0; i < type->num_fields (); i++)
 	  {
 	    /* Ignore any static fields.  */
-	    if (field_is_static (&TYPE_FIELD (type, i)))
+	    if (field_is_static (&type->field (i)))
 	      continue;
 
-	    struct type *member = check_typedef (TYPE_FIELD_TYPE (type, i));
+	    struct type *member = check_typedef (type->field (i).type ());
 
 	    int sub_count = aapcs_is_vfp_call_or_return_candidate_1
 			      (member, fundamental_type);
@@ -1416,7 +1588,7 @@ pass_in_x (struct gdbarch *gdbarch, stru
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   int len = TYPE_LENGTH (type);
-  enum type_code typecode = TYPE_CODE (type);
+  enum type_code typecode = type->code ();
   int regnum = AARCH64_X0_REGNUM + info->ngrn;
   const bfd_byte *buf = value_contents (arg);
 
@@ -1567,7 +1739,7 @@ pass_in_v_vfp_candidate (struct gdbarch
 			 struct aarch64_call_info *info, struct type *arg_type,
 			 struct value *arg)
 {
-  switch (TYPE_CODE (arg_type))
+  switch (arg_type->code ())
     {
     case TYPE_CODE_FLT:
       return pass_in_v (gdbarch, regcache, info, TYPE_LENGTH (arg_type),
@@ -1595,10 +1767,10 @@ pass_in_v_vfp_candidate (struct gdbarch
 
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
-      for (int i = 0; i < TYPE_NFIELDS (arg_type); i++)
+      for (int i = 0; i < arg_type->num_fields (); i++)
 	{
 	  /* Don't include static fields.  */
-	  if (field_is_static (&TYPE_FIELD (arg_type, i)))
+	  if (field_is_static (&arg_type->field (i)))
 	    continue;
 
 	  struct value *field = value_primitive_field (arg, 0, i, arg_type);
@@ -1703,7 +1875,7 @@ aarch64_push_dummy_call (struct gdbarch
 	  continue;
 	}
 
-      switch (TYPE_CODE (arg_type))
+      switch (arg_type->code ())
 	{
 	case TYPE_CODE_INT:
 	case TYPE_CODE_BOOL:
@@ -1934,7 +2106,7 @@ aarch64_vnv_type (struct gdbarch *gdbarc
 
   if (tdep->vnv_type == NULL)
     {
-      /* The other AArch64 psuedo registers (Q,D,H,S,B) refer to a single value
+      /* The other AArch64 pseudo registers (Q,D,H,S,B) refer to a single value
 	 slice from the non-pseudo vector registers.  However NEON V registers
 	 are always vector registers, and need constructing as such.  */
       const struct builtin_type *bt = builtin_type (gdbarch);
@@ -2087,12 +2259,12 @@ aarch64_extract_return_value (struct typ
 	  valbuf += len;
 	}
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_INT
-	   || TYPE_CODE (type) == TYPE_CODE_CHAR
-	   || TYPE_CODE (type) == TYPE_CODE_BOOL
-	   || TYPE_CODE (type) == TYPE_CODE_PTR
+  else if (type->code () == TYPE_CODE_INT
+	   || type->code () == TYPE_CODE_CHAR
+	   || type->code () == TYPE_CODE_BOOL
+	   || type->code () == TYPE_CODE_PTR
 	   || TYPE_IS_REFERENCE (type)
-	   || TYPE_CODE (type) == TYPE_CODE_ENUM)
+	   || type->code () == TYPE_CODE_ENUM)
     {
       /* If the type is a plain integer, then the access is
 	 straight-forward.  Otherwise we have to play around a bit
@@ -2200,12 +2372,12 @@ aarch64_store_return_value (struct type
 	  valbuf += len;
 	}
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_INT
-	   || TYPE_CODE (type) == TYPE_CODE_CHAR
-	   || TYPE_CODE (type) == TYPE_CODE_BOOL
-	   || TYPE_CODE (type) == TYPE_CODE_PTR
+  else if (type->code () == TYPE_CODE_INT
+	   || type->code () == TYPE_CODE_CHAR
+	   || type->code () == TYPE_CODE_BOOL
+	   || type->code () == TYPE_CODE_PTR
 	   || TYPE_IS_REFERENCE (type)
-	   || TYPE_CODE (type) == TYPE_CODE_ENUM)
+	   || type->code () == TYPE_CODE_ENUM)
     {
       if (TYPE_LENGTH (type) <= X_REGISTER_SIZE)
 	{
@@ -2261,9 +2433,9 @@ aarch64_return_value (struct gdbarch *gd
 		      gdb_byte *readbuf, const gdb_byte *writebuf)
 {
 
-  if (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-      || TYPE_CODE (valtype) == TYPE_CODE_UNION
-      || TYPE_CODE (valtype) == TYPE_CODE_ARRAY)
+  if (valtype->code () == TYPE_CODE_STRUCT
+      || valtype->code () == TYPE_CODE_UNION
+      || valtype->code () == TYPE_CODE_ARRAY)
     {
       if (aarch64_return_in_memory (gdbarch, valtype))
 	{
@@ -2735,9 +2907,10 @@ struct aarch64_displaced_step_closure :
 {
   /* It is true when condition instruction, such as B.CON, TBZ, etc,
      is being displaced stepping.  */
-  int cond = 0;
+  bool cond = false;
 
-  /* PC adjustment offset after displaced stepping.  */
+  /* PC adjustment offset after displaced stepping.  If 0, then we don't
+     write the PC back, assuming the PC is already the right address.  */
   int32_t pc_adjust = 0;
 };
 
@@ -2815,7 +2988,7 @@ aarch64_displaced_step_b_cond (const uns
   */
 
   emit_bcond (dsd->insn_buf, cond, 8);
-  dsd->dsc->cond = 1;
+  dsd->dsc->cond = true;
   dsd->dsc->pc_adjust = offset;
   dsd->insn_count = 1;
 }
@@ -2850,7 +3023,7 @@ aarch64_displaced_step_cb (const int32_t
   */
   emit_cb (dsd->insn_buf, is_cbnz, aarch64_register (rn, is64), 8);
   dsd->insn_count = 1;
-  dsd->dsc->cond = 1;
+  dsd->dsc->cond = true;
   dsd->dsc->pc_adjust = offset;
 }
 
@@ -2875,7 +3048,7 @@ aarch64_displaced_step_tb (const int32_t
   */
   emit_tb (dsd->insn_buf, is_tbnz, bit, aarch64_register (rt, 1), 8);
   dsd->insn_count = 1;
-  dsd->dsc->cond = 1;
+  dsd->dsc->cond = true;
   dsd->dsc->pc_adjust = offset;
 }
 
@@ -2965,7 +3138,7 @@ static const struct aarch64_insn_visitor
 
 /* Implement the "displaced_step_copy_insn" gdbarch method.  */
 
-struct displaced_step_closure *
+displaced_step_closure_up
 aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch,
 				  CORE_ADDR from, CORE_ADDR to,
 				  struct regcache *regs)
@@ -3019,7 +3192,8 @@ aarch64_displaced_step_copy_insn (struct
       dsc = NULL;
     }
 
-  return dsc.release ();
+  /* This is a work around for a problem with g++ 4.8.  */
+  return displaced_step_closure_up (dsc.release ());
 }
 
 /* Implement the "displaced_step_fixup" gdbarch method.  */
@@ -3032,11 +3206,20 @@ aarch64_displaced_step_fixup (struct gdb
 {
   aarch64_displaced_step_closure *dsc = (aarch64_displaced_step_closure *) dsc_;
 
+  ULONGEST pc;
+
+  regcache_cooked_read_unsigned (regs, AARCH64_PC_REGNUM, &pc);
+
+  if (debug_displaced)
+    debug_printf ("Displaced: PC after stepping: %s (was %s).\n",
+		  paddress (gdbarch, pc), paddress (gdbarch, to));
+
   if (dsc->cond)
     {
-      ULONGEST pc;
+      if (debug_displaced)
+	debug_printf ("Displaced: [Conditional] pc_adjust before: %d\n",
+		      dsc->pc_adjust);
 
-      regcache_cooked_read_unsigned (regs, AARCH64_PC_REGNUM, &pc);
       if (pc - to == 8)
 	{
 	  /* Condition is true.  */
@@ -3048,13 +3231,35 @@ aarch64_displaced_step_fixup (struct gdb
 	}
       else
 	gdb_assert_not_reached ("Unexpected PC value after displaced stepping");
+
+      if (debug_displaced)
+	debug_printf ("Displaced: [Conditional] pc_adjust after: %d\n",
+		      dsc->pc_adjust);
     }
 
+  if (debug_displaced)
+    debug_printf ("Displaced: %s PC by %d\n",
+		  dsc->pc_adjust? "adjusting" : "not adjusting",
+		  dsc->pc_adjust);
+
+
   if (dsc->pc_adjust != 0)
     {
+      /* Make sure the previous instruction was executed (that is, the PC
+	 has changed).  If the PC didn't change, then discard the adjustment
+	 offset.  Otherwise we may skip an instruction before its execution
+	 took place.  */
+      if ((pc - to) == 0)
+	{
+	  if (debug_displaced)
+	    debug_printf ("Displaced: PC did not move. Discarding PC "
+			  "adjustment.\n");
+	  dsc->pc_adjust = 0;
+	}
+
       if (debug_displaced)
 	{
-	  debug_printf ("displaced: fixup: set PC to %s:%d\n",
+	  debug_printf ("Displaced: fixup: set PC to %s:%d\n",
 			paddress (gdbarch, from), dsc->pc_adjust);
 	}
       regcache_cooked_write_unsigned (regs, AARCH64_PC_REGNUM,
@@ -3357,6 +3562,10 @@ aarch64_gdbarch_init (struct gdbarch_inf
   set_gdbarch_execute_dwarf_cfa_vendor_op (gdbarch,
 					   aarch64_execute_dwarf_cfa_vendor_op);
 
+  /* Permanent/Program breakpoint handling.  */
+  set_gdbarch_program_breakpoint_here_p (gdbarch,
+					 aarch64_program_breakpoint_here_p);
+
   /* Add some default predicates.  */
   frame_unwind_append_unwinder (gdbarch, &aarch64_stub_unwind);
   dwarf2_append_unwinders (gdbarch);
@@ -3406,8 +3615,9 @@ static void aarch64_process_record_test
 }
 #endif
 
+void _initialize_aarch64_tdep ();
 void
-_initialize_aarch64_tdep (void)
+_initialize_aarch64_tdep ()
 {
   gdbarch_register (bfd_arch_aarch64, aarch64_gdbarch_init,
 		    aarch64_dump_tdep);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-tdep.h ./gdb/aarch64-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aarch64-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aarch64-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for GDB on AArch64 systems.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -23,6 +23,7 @@
 #define AARCH64_TDEP_H
 
 #include "arch/aarch64.h"
+#include "infrun.h"
 
 /* Forward declarations.  */
 struct gdbarch;
@@ -106,7 +107,7 @@ const target_desc *aarch64_read_descript
 extern int aarch64_process_record (struct gdbarch *gdbarch,
                                struct regcache *regcache, CORE_ADDR addr);
 
-struct displaced_step_closure *
+displaced_step_closure_up
   aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch,
 				    CORE_ADDR from, CORE_ADDR to,
 				    struct regcache *regs);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/acinclude.m4 ./gdb/acinclude.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/acinclude.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/acinclude.m4	2021-05-21 01:57:24.000000000 +0000
@@ -10,13 +10,13 @@ m4_include(acx_configure_dir.m4)
 m4_include(transform.m4)
 
 # This gets AM_GDB_WARNINGS.
-m4_include(warning.m4)
+m4_include(../gdbsupport/warning.m4)
 
 # AM_GDB_UBSAN
 m4_include(sanitize.m4)
 
 # This gets GDB_AC_SELFTEST.
-m4_include(selftest.m4)
+m4_include(../gdbsupport/selftest.m4)
 
 dnl gdb/configure.in uses BFD_NEED_DECLARATION, so get its definition.
 m4_include(../bfd/bfd.m4)
@@ -24,6 +24,9 @@ m4_include(../bfd/bfd.m4)
 dnl This gets the standard macros.
 m4_include(../config/acinclude.m4)
 
+dnl This gets GCC_ENABLE.
+sinclude(../config/enable.m4)
+
 dnl This gets AC_PLUGINS, needed by ACX_LARGEFILE.
 m4_include(../config/plugins.m4)
 
@@ -63,7 +66,7 @@ m4_include([../config/iconv.m4])
 
 m4_include([../config/zlib.m4])
 
-m4_include([gdbsupport/common.m4])
+m4_include([../gdbsupport/common.m4])
 
 dnl For libiberty_INIT.
 m4_include(libiberty.m4)
@@ -80,7 +83,7 @@ m4_include([../config/ax_pthread.m4])
 ## From Franc,ois Pinard                     ##
 ## ----------------------------------------- ##
 
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/acx_configure_dir.m4 ./gdb/acx_configure_dir.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/acx_configure_dir.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/acx_configure_dir.m4	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-exp.c ./gdb/ada-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-exp.c	2020-03-07 02:11:12.000000000 +0000
+++ ./gdb/ada-exp.c	2021-05-21 02:00:05.000000000 +0000
@@ -1,21 +1,20 @@
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* Bison implementation for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   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/>.  */
 
@@ -28,13 +27,17 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -46,7 +49,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,14 +63,10 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 
 
-/* Copy the first part of user declarations.  */
-
-/* Line 189 of yacc.c  */
+/* First part of user prologue.  */
 #line 36 "ada-exp.y"
 
 
@@ -151,84 +150,100 @@ static struct type *type_boolean (struct
 static struct type *type_system_address (struct parser_state *);
 
 
+#line 154 "ada-exp.c.tmp"
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTRPTR nullptr
+#   else
+#    define YY_NULLPTRPTR 0
+#   endif
+#  else
+#   define YY_NULLPTRPTR ((void*)0)
+#  endif
+# endif
 
-/* Line 189 of yacc.c  */
-#line 157 "ada-exp.c.tmp"
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+#if YYDEBUG
+extern int yydebug;
 #endif
 
-
-/* Tokens.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     INT = 258,
-     NULL_PTR = 259,
-     CHARLIT = 260,
-     FLOAT = 261,
-     TRUEKEYWORD = 262,
-     FALSEKEYWORD = 263,
-     COLONCOLON = 264,
-     STRING = 265,
-     NAME = 266,
-     DOT_ID = 267,
-     DOT_ALL = 268,
-     DOLLAR_VARIABLE = 269,
-     ASSIGN = 270,
-     ELSE = 271,
-     THEN = 272,
-     XOR = 273,
-     OR = 274,
-     _AND_ = 275,
-     DOTDOT = 276,
-     IN = 277,
-     GEQ = 278,
-     LEQ = 279,
-     NOTEQUAL = 280,
-     UNARY = 281,
-     REM = 282,
-     MOD = 283,
-     NOT = 284,
-     ABS = 285,
-     STARSTAR = 286,
-     VAR = 287,
-     ARROW = 288,
-     TICK_LENGTH = 289,
-     TICK_LAST = 290,
-     TICK_FIRST = 291,
-     TICK_ADDRESS = 292,
-     TICK_ACCESS = 293,
-     TICK_MODULUS = 294,
-     TICK_MIN = 295,
-     TICK_MAX = 296,
-     TICK_VAL = 297,
-     TICK_TAG = 298,
-     TICK_SIZE = 299,
-     TICK_RANGE = 300,
-     TICK_POS = 301,
-     NEW = 302,
-     OTHERS = 303
-   };
-#endif
-/* Tokens.  */
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    INT = 258,                     /* INT  */
+    NULL_PTR = 259,                /* NULL_PTR  */
+    CHARLIT = 260,                 /* CHARLIT  */
+    FLOAT = 261,                   /* FLOAT  */
+    TRUEKEYWORD = 262,             /* TRUEKEYWORD  */
+    FALSEKEYWORD = 263,            /* FALSEKEYWORD  */
+    COLONCOLON = 264,              /* COLONCOLON  */
+    STRING = 265,                  /* STRING  */
+    NAME = 266,                    /* NAME  */
+    DOT_ID = 267,                  /* DOT_ID  */
+    DOT_ALL = 268,                 /* DOT_ALL  */
+    DOLLAR_VARIABLE = 269,         /* DOLLAR_VARIABLE  */
+    ASSIGN = 270,                  /* ASSIGN  */
+    _AND_ = 271,                   /* _AND_  */
+    OR = 272,                      /* OR  */
+    XOR = 273,                     /* XOR  */
+    THEN = 274,                    /* THEN  */
+    ELSE = 275,                    /* ELSE  */
+    NOTEQUAL = 276,                /* NOTEQUAL  */
+    LEQ = 277,                     /* LEQ  */
+    GEQ = 278,                     /* GEQ  */
+    IN = 279,                      /* IN  */
+    DOTDOT = 280,                  /* DOTDOT  */
+    UNARY = 281,                   /* UNARY  */
+    MOD = 282,                     /* MOD  */
+    REM = 283,                     /* REM  */
+    STARSTAR = 284,                /* STARSTAR  */
+    ABS = 285,                     /* ABS  */
+    NOT = 286,                     /* NOT  */
+    VAR = 287,                     /* VAR  */
+    ARROW = 288,                   /* ARROW  */
+    TICK_ACCESS = 289,             /* TICK_ACCESS  */
+    TICK_ADDRESS = 290,            /* TICK_ADDRESS  */
+    TICK_FIRST = 291,              /* TICK_FIRST  */
+    TICK_LAST = 292,               /* TICK_LAST  */
+    TICK_LENGTH = 293,             /* TICK_LENGTH  */
+    TICK_MAX = 294,                /* TICK_MAX  */
+    TICK_MIN = 295,                /* TICK_MIN  */
+    TICK_MODULUS = 296,            /* TICK_MODULUS  */
+    TICK_POS = 297,                /* TICK_POS  */
+    TICK_RANGE = 298,              /* TICK_RANGE  */
+    TICK_SIZE = 299,               /* TICK_SIZE  */
+    TICK_TAG = 300,                /* TICK_TAG  */
+    TICK_VAL = 301,                /* TICK_VAL  */
+    NEW = 302,                     /* NEW  */
+    OTHERS = 303                   /* OTHERS  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
+#endif
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define INT 258
 #define NULL_PTR 259
 #define CHARLIT 260
@@ -242,48 +257,44 @@ static struct type *type_system_address
 #define DOT_ALL 268
 #define DOLLAR_VARIABLE 269
 #define ASSIGN 270
-#define ELSE 271
-#define THEN 272
+#define _AND_ 271
+#define OR 272
 #define XOR 273
-#define OR 274
-#define _AND_ 275
-#define DOTDOT 276
-#define IN 277
+#define THEN 274
+#define ELSE 275
+#define NOTEQUAL 276
+#define LEQ 277
 #define GEQ 278
-#define LEQ 279
-#define NOTEQUAL 280
+#define IN 279
+#define DOTDOT 280
 #define UNARY 281
-#define REM 282
-#define MOD 283
-#define NOT 284
+#define MOD 282
+#define REM 283
+#define STARSTAR 284
 #define ABS 285
-#define STARSTAR 286
+#define NOT 286
 #define VAR 287
 #define ARROW 288
-#define TICK_LENGTH 289
-#define TICK_LAST 290
+#define TICK_ACCESS 289
+#define TICK_ADDRESS 290
 #define TICK_FIRST 291
-#define TICK_ADDRESS 292
-#define TICK_ACCESS 293
-#define TICK_MODULUS 294
+#define TICK_LAST 292
+#define TICK_LENGTH 293
+#define TICK_MAX 294
 #define TICK_MIN 295
-#define TICK_MAX 296
-#define TICK_VAL 297
-#define TICK_TAG 298
+#define TICK_MODULUS 296
+#define TICK_POS 297
+#define TICK_RANGE 298
 #define TICK_SIZE 299
-#define TICK_RANGE 300
-#define TICK_POS 301
+#define TICK_TAG 300
+#define TICK_VAL 301
 #define NEW 302
 #define OTHERS 303
 
-
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
 #line 120 "ada-exp.y"
 
     LONGEST lval;
@@ -301,51 +312,203 @@ typedef union YYSTYPE
     struct internalvar *ivar;
   
 
+#line 316 "ada-exp.c.tmp"
 
-/* Line 214 of yacc.c  */
-#line 307 "ada-exp.c.tmp"
-} YYSTYPE;
+};
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
+extern YYSTYPE yylval;
+
+int yyparse (void);
+
+
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_INT = 3,                        /* INT  */
+  YYSYMBOL_NULL_PTR = 4,                   /* NULL_PTR  */
+  YYSYMBOL_CHARLIT = 5,                    /* CHARLIT  */
+  YYSYMBOL_FLOAT = 6,                      /* FLOAT  */
+  YYSYMBOL_TRUEKEYWORD = 7,                /* TRUEKEYWORD  */
+  YYSYMBOL_FALSEKEYWORD = 8,               /* FALSEKEYWORD  */
+  YYSYMBOL_COLONCOLON = 9,                 /* COLONCOLON  */
+  YYSYMBOL_STRING = 10,                    /* STRING  */
+  YYSYMBOL_NAME = 11,                      /* NAME  */
+  YYSYMBOL_DOT_ID = 12,                    /* DOT_ID  */
+  YYSYMBOL_DOT_ALL = 13,                   /* DOT_ALL  */
+  YYSYMBOL_DOLLAR_VARIABLE = 14,           /* DOLLAR_VARIABLE  */
+  YYSYMBOL_ASSIGN = 15,                    /* ASSIGN  */
+  YYSYMBOL__AND_ = 16,                     /* _AND_  */
+  YYSYMBOL_OR = 17,                        /* OR  */
+  YYSYMBOL_XOR = 18,                       /* XOR  */
+  YYSYMBOL_THEN = 19,                      /* THEN  */
+  YYSYMBOL_ELSE = 20,                      /* ELSE  */
+  YYSYMBOL_21_ = 21,                       /* '='  */
+  YYSYMBOL_NOTEQUAL = 22,                  /* NOTEQUAL  */
+  YYSYMBOL_23_ = 23,                       /* '<'  */
+  YYSYMBOL_24_ = 24,                       /* '>'  */
+  YYSYMBOL_LEQ = 25,                       /* LEQ  */
+  YYSYMBOL_GEQ = 26,                       /* GEQ  */
+  YYSYMBOL_IN = 27,                        /* IN  */
+  YYSYMBOL_DOTDOT = 28,                    /* DOTDOT  */
+  YYSYMBOL_29_ = 29,                       /* '@'  */
+  YYSYMBOL_30_ = 30,                       /* '+'  */
+  YYSYMBOL_31_ = 31,                       /* '-'  */
+  YYSYMBOL_32_ = 32,                       /* '&'  */
+  YYSYMBOL_UNARY = 33,                     /* UNARY  */
+  YYSYMBOL_34_ = 34,                       /* '*'  */
+  YYSYMBOL_35_ = 35,                       /* '/'  */
+  YYSYMBOL_MOD = 36,                       /* MOD  */
+  YYSYMBOL_REM = 37,                       /* REM  */
+  YYSYMBOL_STARSTAR = 38,                  /* STARSTAR  */
+  YYSYMBOL_ABS = 39,                       /* ABS  */
+  YYSYMBOL_NOT = 40,                       /* NOT  */
+  YYSYMBOL_VAR = 41,                       /* VAR  */
+  YYSYMBOL_ARROW = 42,                     /* ARROW  */
+  YYSYMBOL_43_ = 43,                       /* '|'  */
+  YYSYMBOL_TICK_ACCESS = 44,               /* TICK_ACCESS  */
+  YYSYMBOL_TICK_ADDRESS = 45,              /* TICK_ADDRESS  */
+  YYSYMBOL_TICK_FIRST = 46,                /* TICK_FIRST  */
+  YYSYMBOL_TICK_LAST = 47,                 /* TICK_LAST  */
+  YYSYMBOL_TICK_LENGTH = 48,               /* TICK_LENGTH  */
+  YYSYMBOL_TICK_MAX = 49,                  /* TICK_MAX  */
+  YYSYMBOL_TICK_MIN = 50,                  /* TICK_MIN  */
+  YYSYMBOL_TICK_MODULUS = 51,              /* TICK_MODULUS  */
+  YYSYMBOL_TICK_POS = 52,                  /* TICK_POS  */
+  YYSYMBOL_TICK_RANGE = 53,                /* TICK_RANGE  */
+  YYSYMBOL_TICK_SIZE = 54,                 /* TICK_SIZE  */
+  YYSYMBOL_TICK_TAG = 55,                  /* TICK_TAG  */
+  YYSYMBOL_TICK_VAL = 56,                  /* TICK_VAL  */
+  YYSYMBOL_57_ = 57,                       /* '.'  */
+  YYSYMBOL_58_ = 58,                       /* '('  */
+  YYSYMBOL_59_ = 59,                       /* '['  */
+  YYSYMBOL_NEW = 60,                       /* NEW  */
+  YYSYMBOL_OTHERS = 61,                    /* OTHERS  */
+  YYSYMBOL_62_ = 62,                       /* ';'  */
+  YYSYMBOL_63_ = 63,                       /* ')'  */
+  YYSYMBOL_64_ = 64,                       /* '\''  */
+  YYSYMBOL_65_ = 65,                       /* ','  */
+  YYSYMBOL_66_ = 66,                       /* '{'  */
+  YYSYMBOL_67_ = 67,                       /* '}'  */
+  YYSYMBOL_68_ = 68,                       /* ']'  */
+  YYSYMBOL_YYACCEPT = 69,                  /* $accept  */
+  YYSYMBOL_start = 70,                     /* start  */
+  YYSYMBOL_exp1 = 71,                      /* exp1  */
+  YYSYMBOL_primary = 72,                   /* primary  */
+  YYSYMBOL_73_1 = 73,                      /* $@1  */
+  YYSYMBOL_save_qualifier = 74,            /* save_qualifier  */
+  YYSYMBOL_simple_exp = 75,                /* simple_exp  */
+  YYSYMBOL_arglist = 76,                   /* arglist  */
+  YYSYMBOL_relation = 77,                  /* relation  */
+  YYSYMBOL_exp = 78,                       /* exp  */
+  YYSYMBOL_and_exp = 79,                   /* and_exp  */
+  YYSYMBOL_and_then_exp = 80,              /* and_then_exp  */
+  YYSYMBOL_or_exp = 81,                    /* or_exp  */
+  YYSYMBOL_or_else_exp = 82,               /* or_else_exp  */
+  YYSYMBOL_xor_exp = 83,                   /* xor_exp  */
+  YYSYMBOL_tick_arglist = 84,              /* tick_arglist  */
+  YYSYMBOL_type_prefix = 85,               /* type_prefix  */
+  YYSYMBOL_opt_type_prefix = 86,           /* opt_type_prefix  */
+  YYSYMBOL_var_or_type = 87,               /* var_or_type  */
+  YYSYMBOL_block = 88,                     /* block  */
+  YYSYMBOL_aggregate = 89,                 /* aggregate  */
+  YYSYMBOL_aggregate_component_list = 90,  /* aggregate_component_list  */
+  YYSYMBOL_positional_list = 91,           /* positional_list  */
+  YYSYMBOL_component_groups = 92,          /* component_groups  */
+  YYSYMBOL_others = 93,                    /* others  */
+  YYSYMBOL_component_group = 94,           /* component_group  */
+  YYSYMBOL_component_associations = 95,    /* component_associations  */
+  YYSYMBOL_96_2 = 96,                      /* $@2  */
+  YYSYMBOL_97_3 = 97,                      /* $@3  */
+  YYSYMBOL_98_4 = 98,                      /* $@4  */
+  YYSYMBOL_99_5 = 99                       /* $@5  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
 
 
-/* Line 264 of yacc.c  */
-#line 319 "ada-exp.c.tmp"
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef short int yytype_int16;
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -353,55 +516,100 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_uint8 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
 #else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
 #endif
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if !defined yyoverflow
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
 
@@ -417,11 +625,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -429,8 +637,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -444,92 +652,93 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined xmalloc) \
-	     && (defined YYFREE || defined xfree)))
+             && (defined YYFREE || defined xfree)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC xmalloc
-#   if ! defined xmalloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xmalloc && ! defined EXIT_SUCCESS
 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE xfree
-#   if ! defined xfree && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xfree && ! defined EXIT_SUCCESS
 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYPTRDIFF_T yynewbytes;                                         \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
+      }                                                                 \
+    while (0)
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYPTRDIFF_T yyi;                      \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  57
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   770
+#define YYLAST   746
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  69
@@ -537,18 +746,22 @@ union yyalloc
 #define YYNNTS  31
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  122
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  233
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
 #define YYMAXUTOK   303
 
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex.  */
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -556,13 +769,13 @@ static const yytype_uint8 yytranslate[]
        2,     2,     2,     2,     2,     2,     2,     2,    32,    64,
       58,    63,    34,    30,    65,    31,    57,    35,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,    62,
-      22,    21,    23,     2,    29,     2,     2,     2,     2,     2,
+      23,    21,    24,     2,    29,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,    59,     2,    68,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    66,    42,    67,     2,     2,     2,     2,
+       2,     2,     2,    66,    43,    67,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -577,83 +790,15 @@ static const yytype_uint8 yytranslate[]
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    24,    25,    26,    27,
-      28,    33,    36,    37,    38,    39,    40,    41,    43,    44,
+      15,    16,    17,    18,    19,    20,    22,    25,    26,    27,
+      28,    33,    36,    37,    38,    39,    40,    41,    42,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    60,    61
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     5,     7,    11,    15,    18,    21,    26,
-      31,    32,    40,    41,    48,    55,    59,    61,    63,    65,
-      67,    70,    73,    76,    79,    80,    82,    86,    90,    96,
-     101,   105,   109,   113,   117,   121,   125,   129,   133,   137,
-     139,   143,   147,   151,   157,   163,   167,   174,   181,   186,
-     190,   194,   198,   200,   202,   204,   206,   208,   210,   214,
-     218,   223,   228,   232,   236,   241,   246,   250,   254,   257,
-     260,   264,   268,   272,   275,   278,   286,   294,   300,   306,
-     309,   310,   314,   316,   318,   319,   321,   323,   325,   327,
-     329,   331,   333,   336,   338,   341,   344,   348,   351,   355,
-     359,   361,   364,   367,   370,   374,   376,   378,   382,   386,
-     388,   389,   394,   398,   399,   406,   407,   412,   416,   417,
-     424,   427,   430
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      70,     0,    -1,    71,    -1,    78,    -1,    71,    62,    78,
-      -1,    72,    15,    78,    -1,    72,    13,    -1,    72,    12,
-      -1,    72,    58,    76,    63,    -1,    87,    58,    76,    63,
-      -1,    -1,    87,    64,    74,    73,    58,    78,    63,    -1,
-      -1,    72,    58,    75,    24,    75,    63,    -1,    87,    58,
-      75,    24,    75,    63,    -1,    58,    71,    63,    -1,    87,
-      -1,    14,    -1,    89,    -1,    72,    -1,    31,    75,    -1,
-      30,    75,    -1,    38,    75,    -1,    39,    75,    -1,    -1,
-      78,    -1,    11,    43,    78,    -1,    76,    65,    78,    -1,
-      76,    65,    11,    43,    78,    -1,    66,    87,    67,    72,
-      -1,    75,    40,    75,    -1,    75,    34,    75,    -1,    75,
-      35,    75,    -1,    75,    36,    75,    -1,    75,    37,    75,
-      -1,    75,    29,    75,    -1,    75,    30,    75,    -1,    75,
-      32,    75,    -1,    75,    31,    75,    -1,    75,    -1,    75,
-      21,    75,    -1,    75,    28,    75,    -1,    75,    27,    75,
-      -1,    75,    25,    75,    24,    75,    -1,    75,    25,    72,
-      55,    84,    -1,    75,    25,    87,    -1,    75,    38,    25,
-      75,    24,    75,    -1,    75,    38,    25,    72,    55,    84,
-      -1,    75,    38,    25,    87,    -1,    75,    26,    75,    -1,
-      75,    22,    75,    -1,    75,    23,    75,    -1,    77,    -1,
-      79,    -1,    80,    -1,    81,    -1,    82,    -1,    83,    -1,
-      77,    20,    77,    -1,    79,    20,    77,    -1,    77,    20,
-      17,    77,    -1,    80,    20,    17,    77,    -1,    77,    19,
-      77,    -1,    81,    19,    77,    -1,    77,    19,    16,    77,
-      -1,    82,    19,    16,    77,    -1,    77,    18,    77,    -1,
-      83,    18,    77,    -1,    72,    48,    -1,    72,    47,    -1,
-      72,    46,    84,    -1,    72,    45,    84,    -1,    72,    44,
-      84,    -1,    72,    54,    -1,    72,    53,    -1,    86,    50,
-      58,    78,    65,    78,    63,    -1,    86,    51,    58,    78,
-      65,    78,    63,    -1,    86,    56,    58,    78,    63,    -1,
-      85,    52,    58,    78,    63,    -1,    85,    49,    -1,    -1,
-      58,     3,    63,    -1,    87,    -1,    85,    -1,    -1,     3,
-      -1,     5,    -1,     6,    -1,     4,    -1,    10,    -1,     7,
-      -1,     8,    -1,    60,    11,    -1,    11,    -1,    88,    11,
-      -1,    11,    48,    -1,    88,    11,    48,    -1,    11,     9,
-      -1,    88,    11,     9,    -1,    58,    90,    63,    -1,    92,
-      -1,    91,    78,    -1,    91,    92,    -1,    78,    65,    -1,
-      91,    78,    65,    -1,    93,    -1,    94,    -1,    94,    65,
-      92,    -1,    61,    43,    78,    -1,    95,    -1,    -1,    11,
-      43,    96,    78,    -1,    75,    43,    78,    -1,    -1,    75,
-      24,    75,    43,    97,    78,    -1,    -1,    11,    42,    98,
-      95,    -1,    75,    42,    95,    -1,    -1,    75,    24,    75,
-      42,    99,    95,    -1,    34,    72,    -1,    32,    72,    -1,
-      72,    59,    78,    68,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+static const yytype_int16 yyrline[] =
 {
        0,   185,   185,   189,   190,   192,   197,   201,   206,   212,
      231,   231,   243,   247,   249,   257,   268,   278,   282,   285,
@@ -671,449 +816,409 @@ static const yytype_uint16 yyrline[] =
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "INT", "NULL_PTR", "CHARLIT", "FLOAT",
-  "TRUEKEYWORD", "FALSEKEYWORD", "COLONCOLON", "STRING", "NAME", "DOT_ID",
-  "DOT_ALL", "DOLLAR_VARIABLE", "ASSIGN", "ELSE", "THEN", "XOR", "OR",
-  "_AND_", "'='", "'<'", "'>'", "DOTDOT", "IN", "GEQ", "LEQ", "NOTEQUAL",
-  "'@'", "'+'", "'-'", "'&'", "UNARY", "'*'", "'/'", "REM", "MOD", "NOT",
-  "ABS", "STARSTAR", "VAR", "'|'", "ARROW", "TICK_LENGTH", "TICK_LAST",
-  "TICK_FIRST", "TICK_ADDRESS", "TICK_ACCESS", "TICK_MODULUS", "TICK_MIN",
-  "TICK_MAX", "TICK_VAL", "TICK_TAG", "TICK_SIZE", "TICK_RANGE",
-  "TICK_POS", "'.'", "'('", "'['", "NEW", "OTHERS", "';'", "')'", "'\\''",
-  "','", "'{'", "'}'", "']'", "$accept", "start", "exp1", "primary", "$@1",
-  "save_qualifier", "simple_exp", "arglist", "relation", "exp", "and_exp",
-  "and_then_exp", "or_exp", "or_else_exp", "xor_exp", "tick_arglist",
-  "type_prefix", "opt_type_prefix", "var_or_type", "block", "aggregate",
+  "\"end of file\"", "error", "\"invalid token\"", "INT", "NULL_PTR",
+  "CHARLIT", "FLOAT", "TRUEKEYWORD", "FALSEKEYWORD", "COLONCOLON",
+  "STRING", "NAME", "DOT_ID", "DOT_ALL", "DOLLAR_VARIABLE", "ASSIGN",
+  "_AND_", "OR", "XOR", "THEN", "ELSE", "'='", "NOTEQUAL", "'<'", "'>'",
+  "LEQ", "GEQ", "IN", "DOTDOT", "'@'", "'+'", "'-'", "'&'", "UNARY", "'*'",
+  "'/'", "MOD", "REM", "STARSTAR", "ABS", "NOT", "VAR", "ARROW", "'|'",
+  "TICK_ACCESS", "TICK_ADDRESS", "TICK_FIRST", "TICK_LAST", "TICK_LENGTH",
+  "TICK_MAX", "TICK_MIN", "TICK_MODULUS", "TICK_POS", "TICK_RANGE",
+  "TICK_SIZE", "TICK_TAG", "TICK_VAL", "'.'", "'('", "'['", "NEW",
+  "OTHERS", "';'", "')'", "'\\''", "','", "'{'", "'}'", "']'", "$accept",
+  "start", "exp1", "primary", "$@1", "save_qualifier", "simple_exp",
+  "arglist", "relation", "exp", "and_exp", "and_then_exp", "or_exp",
+  "or_else_exp", "xor_exp", "tick_arglist", "type_prefix",
+  "opt_type_prefix", "var_or_type", "block", "aggregate",
   "aggregate_component_list", "positional_list", "component_groups",
   "others", "component_group", "component_associations", "$@2", "$@3",
-  "$@4", "$@5", 0
+  "$@4", "$@5", YY_NULLPTRPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+#ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,    61,    60,    62,   276,   277,   278,   279,   280,    64,
+     275,    61,   276,    60,    62,   277,   278,   279,   280,    64,
       43,    45,    38,   281,    42,    47,   282,   283,   284,   285,
-     286,   287,   124,   288,   289,   290,   291,   292,   293,   294,
+     286,   287,   288,   124,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,    46,    40,    91,
      302,   303,    59,    41,    39,    44,   123,   125,    93
 };
-# endif
+#endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    69,    70,    71,    71,    71,    72,    72,    72,    72,
-      73,    72,    74,    72,    72,    72,    72,    72,    72,    75,
-      75,    75,    75,    75,    76,    76,    76,    76,    76,    72,
-      75,    75,    75,    75,    75,    75,    75,    75,    75,    77,
-      77,    77,    77,    77,    77,    77,    77,    77,    77,    77,
-      77,    77,    78,    78,    78,    78,    78,    78,    79,    79,
-      80,    80,    81,    81,    82,    82,    83,    83,    72,    72,
-      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-      84,    84,    85,    86,    86,    72,    72,    72,    72,    72,
-      72,    72,    72,    87,    87,    87,    87,    88,    88,    89,
-      90,    90,    90,    91,    91,    92,    92,    92,    93,    94,
-      96,    95,    95,    97,    95,    98,    95,    95,    99,    95,
-      72,    72,    72
-};
+#define YYPACT_NINF (-104)
+
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
+
+#define YYTABLE_NINF (-83)
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+#define yytable_value_is_error(Yyn) \
+  0
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
 {
-       0,     2,     1,     1,     3,     3,     2,     2,     4,     4,
-       0,     7,     0,     6,     6,     3,     1,     1,     1,     1,
-       2,     2,     2,     2,     0,     1,     3,     3,     5,     4,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     1,
-       3,     3,     3,     5,     5,     3,     6,     6,     4,     3,
-       3,     3,     1,     1,     1,     1,     1,     1,     3,     3,
-       4,     4,     3,     3,     4,     4,     3,     3,     2,     2,
-       3,     3,     3,     2,     2,     7,     7,     5,     5,     2,
-       0,     3,     1,     1,     0,     1,     1,     1,     1,     1,
-       1,     1,     2,     1,     2,     2,     3,     2,     3,     3,
-       1,     2,     2,     2,     3,     1,     1,     3,     3,     1,
-       0,     4,     3,     0,     6,     0,     4,     3,     0,     6,
-       2,     2,     4
+     430,  -104,  -104,  -104,  -104,  -104,  -104,  -104,     3,  -104,
+     430,   430,   544,   544,   430,   430,   289,    44,    49,    26,
+     -53,    -2,   679,    86,  -104,    50,    55,    48,    57,    74,
+     -28,    -1,   275,    61,  -104,  -104,  -104,   577,   219,   219,
+       9,     9,   219,   219,    54,    58,   -31,   616,    42,    45,
+     289,  -104,  -104,    46,  -104,  -104,    43,  -104,   430,  -104,
+    -104,   430,  -104,  -104,    59,    59,    59,  -104,  -104,   277,
+     430,   430,   430,   430,   430,   430,   430,   430,   430,   430,
+     430,   430,   430,   430,   430,   430,   430,    89,   353,   392,
+     430,   430,    94,   430,   100,   430,  -104,    63,    64,    65,
+      67,   277,  -104,    15,  -104,  -104,   430,  -104,   430,   430,
+     468,  -104,  -104,    62,  -104,   289,   544,  -104,  -104,   125,
+    -104,  -104,  -104,    -4,   639,   -57,  -104,    70,   117,   117,
+     117,   117,   117,   117,   149,   563,   174,   549,   219,   219,
+     219,    91,    91,    91,    91,    91,   430,   430,  -104,   430,
+    -104,  -104,  -104,   430,  -104,   430,  -104,   430,   430,   430,
+     430,   659,   -38,  -104,  -104,  -104,   430,   468,  -104,   339,
+    -104,   692,  -104,  -104,  -104,     9,    69,   430,   430,  -104,
+     506,  -104,    59,   430,   561,   708,   211,  -104,  -104,  -104,
+    -104,    81,    99,   102,    93,   430,  -104,    72,  -104,  -104,
+    -104,  -104,  -104,  -104,   105,    82,  -104,  -104,   117,    59,
+     430,  -104,   430,   430,  -104,   214,   430,   430,   468,  -104,
+     430,  -104,   117,   106,   107,  -104,   109,  -104,  -104,  -104,
+    -104,  -104,  -104
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint8 yydefact[] =
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_int8 yydefact[] =
 {
       84,    85,    88,    86,    87,    90,    91,    89,    93,    17,
       84,    84,    84,    84,    84,    84,    84,     0,     0,     0,
        2,    19,    39,    52,     3,    53,    54,    55,    56,    57,
       83,     0,    16,     0,    18,    97,    95,    19,    21,    20,
-     121,   120,    22,    23,    93,     0,     0,    39,     3,     0,
+     121,   120,    23,    22,    93,     0,     0,    39,     3,     0,
       84,   100,   105,   106,   109,    92,     0,     1,    84,     7,
-       6,    84,    80,    80,    80,    69,    68,    74,    73,    84,
+       6,    84,    68,    69,    80,    80,    80,    73,    74,    84,
       84,    84,    84,    84,    84,    84,    84,    84,    84,    84,
-      84,    84,    84,    84,    84,    84,     0,    84,    84,    84,
+      84,    84,    84,    84,    84,    84,    84,     0,    84,    84,
       84,    84,     0,    84,     0,    84,    79,     0,     0,     0,
-       0,    84,    12,    94,   115,   110,    84,    15,    84,    84,
+       0,    84,    12,    94,   110,   115,    84,    15,    84,    84,
       84,   103,    99,   101,   102,    84,    84,     4,     5,     0,
-      72,    71,    70,    93,    39,     0,    25,     0,    40,    50,
-      51,    19,     0,    16,    49,    42,    41,    35,    36,    38,
-      37,    31,    32,    33,    34,    84,    30,    66,    84,    62,
-      84,    58,    59,    84,    63,    84,    67,    84,    84,    84,
+      70,    71,    72,    93,    39,     0,    25,     0,    40,    41,
+      50,    51,    42,    49,    19,     0,    16,    35,    36,    38,
+      37,    31,    32,    34,    33,    30,    84,    84,    58,    84,
+      62,    66,    59,    84,    63,    84,    67,    84,    84,    84,
       84,    39,     0,    10,    98,    96,    84,    84,   108,     0,
-       0,   117,   112,   104,   107,    29,     0,    84,    84,     8,
-      84,   122,    80,    84,    19,     0,    16,    64,    60,    61,
-      65,     0,     0,     0,     0,    84,     9,     0,   116,   111,
-     118,   113,    81,    26,     0,    93,    27,    44,    43,    80,
+     112,     0,   117,   104,   107,    29,     0,    84,    84,     8,
+      84,   122,    80,    84,    19,     0,    16,    60,    64,    61,
+      65,     0,     0,     0,     0,    84,     9,     0,   111,   116,
+     113,   118,    81,    26,     0,    93,    27,    44,    43,    80,
       84,    78,    84,    84,    77,     0,    84,    84,    84,    13,
-      84,    47,    46,     0,     0,    14,     0,   119,   114,    28,
-      75,    76,    11
+      84,    47,    46,     0,     0,    14,     0,   114,   119,    28,
+      76,    75,    11
 };
 
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
 {
-      -1,    19,    20,    37,   197,   163,    22,   125,    23,   126,
-      25,    26,    27,    28,    29,   120,    30,    31,    32,    33,
-      34,    49,    50,    51,    52,    53,    54,   167,   218,   166,
-     217
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -104
-static const yytype_int16 yypact[] =
-{
-     424,  -104,  -104,  -104,  -104,  -104,  -104,  -104,    16,  -104,
-     424,   424,   118,   118,   424,   424,   286,    -7,     6,    31,
-     -26,   501,   674,    20,  -104,    28,    32,    22,    34,    42,
-     -44,   -21,    84,    57,  -104,  -104,  -104,   558,    63,    63,
-      -3,    -3,    63,    63,    23,    26,   -36,   611,     9,    27,
-     286,  -104,  -104,    29,  -104,  -104,    25,  -104,   424,  -104,
-    -104,   424,    35,    35,    35,  -104,  -104,  -104,  -104,   274,
-     424,   424,   424,   424,   424,   424,   424,   424,   424,   424,
-     424,   424,   424,   424,   424,   424,    71,   424,   424,   350,
-     387,   424,    91,   424,    85,   424,  -104,    53,    58,    59,
-      60,   274,  -104,    19,  -104,  -104,   424,  -104,   424,   461,
-     424,  -104,  -104,    50,  -104,   286,   118,  -104,  -104,   124,
-    -104,  -104,  -104,     3,   634,   -52,  -104,    70,   719,   719,
-     719,   521,   166,   173,   719,   719,   719,   730,    63,    63,
-      63,    99,    99,    99,    99,   424,    99,  -104,   424,  -104,
-     424,  -104,  -104,   424,  -104,   424,  -104,   424,   424,   424,
-     424,   654,   -41,  -104,  -104,  -104,   461,   424,  -104,   704,
-     689,  -104,  -104,  -104,  -104,    -3,    68,   424,   424,  -104,
-     498,  -104,    35,   424,   538,   215,   208,  -104,  -104,  -104,
-    -104,    78,    79,    80,    83,   424,  -104,    93,  -104,  -104,
-    -104,  -104,  -104,  -104,   339,    14,  -104,  -104,   719,    35,
-     424,  -104,   424,   424,  -104,   589,   424,   461,   424,  -104,
-     424,  -104,   719,    90,    92,  -104,    98,  -104,  -104,  -104,
-    -104,  -104,  -104
+    -104,  -104,   157,    17,  -104,  -104,     4,    75,   -54,     0,
+    -104,  -104,  -104,  -104,  -104,   -64,  -104,  -104,   -15,  -104,
+    -104,  -104,  -104,   -46,  -104,  -104,  -103,  -104,  -104,  -104,
+    -104
 };
 
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int8 yypgoto[] =
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
 {
-    -104,  -104,   127,    21,  -104,  -104,     4,    55,   -46,     0,
-    -104,  -104,  -104,  -104,  -104,   -62,  -104,  -104,   -15,  -104,
-    -104,  -104,  -104,   -43,  -104,  -104,  -103,  -104,  -104,  -104,
-    -104
+      -1,    19,    20,    37,   197,   163,    22,   125,    23,   126,
+      25,    26,    27,    28,    29,   120,    30,    31,    32,    33,
+      34,    49,    50,    51,    52,    53,    54,   166,   217,   167,
+     218
 };
 
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -83
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      24,   121,   122,    56,    55,    96,   171,   114,    97,    59,
-      60,   179,    35,   180,    38,    39,    48,     8,    42,    43,
-      47,    21,   196,    35,   180,    35,    58,   107,   164,    98,
-      99,    57,    35,    40,    41,   100,    58,    21,    88,    89,
-      90,    93,   147,   149,   151,   152,   177,   154,    91,   156,
-     113,    36,    92,    94,    47,    69,    70,   220,   117,   133,
-      95,   118,    36,   198,    36,   104,   105,   165,   103,   106,
-     127,    36,   174,   124,   111,   128,   129,   130,   132,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     112,   146,   116,   119,   115,   131,   145,    82,    83,    84,
-      85,   155,   187,    87,   188,   161,   168,   189,   153,   190,
-     172,   157,   169,   170,   227,   173,   158,   159,   160,   170,
-     207,     1,     2,     3,     4,     5,     6,   176,     7,     8,
-     186,   202,     9,   -82,   -82,   -82,   -82,   175,   181,    87,
-     -82,   211,   101,    46,   212,   213,   214,   221,   102,   185,
-      12,   216,    13,   230,     0,   231,   162,   191,   192,   193,
-     194,   232,     0,     0,     0,     0,   184,   199,     0,     0,
-     170,     0,     0,   -45,     0,     0,    16,   203,    17,     0,
-     206,     0,   204,     0,    18,     0,     0,   208,     0,     0,
-     183,   -45,   -45,   -45,     0,    78,    79,    80,    81,   215,
-      82,    83,    84,    85,     0,     0,    87,     0,   -48,     0,
-       0,     0,   223,   224,   222,     0,   226,     0,   228,     0,
-     229,   170,   -82,   -82,   -82,   -82,   -48,   -48,   -48,   -82,
-       0,   101,     0,     0,     0,   -45,   -45,   102,   -45,   210,
-       0,   -45,     0,     0,    78,    79,    80,    81,     0,    82,
-      83,    84,    85,     0,     0,    87,     0,   -82,   -82,   -82,
-     -82,     0,     0,     0,   -82,     0,   101,     0,     0,     0,
-     -48,   -48,   102,   -48,     0,     0,   -48,     1,     2,     3,
-       4,     5,     6,     0,     7,   123,     0,     0,     9,     1,
-       2,     3,     4,     5,     6,     0,     7,    44,     0,     0,
-       9,     0,     0,     0,    10,    11,    12,     0,    13,     0,
-       0,     0,    14,    15,     0,     0,    10,    11,    12,     0,
-      13,     0,     0,     0,    14,    15,     0,     0,     0,     0,
-       0,     0,    16,     0,    17,     0,     0,   -24,     0,   -24,
-      18,     0,     0,     0,    16,     0,    17,    45,     0,     0,
-       0,     0,    18,     1,     2,     3,     4,     5,     6,     0,
-       7,     8,     0,     0,     9,     0,   148,     0,    78,    79,
-      80,    81,     0,    82,    83,    84,    85,     0,     0,    87,
-      10,    11,    12,     0,    13,     0,     0,     0,    14,    15,
-       1,     2,     3,     4,     5,     6,     0,     7,     8,     0,
-       0,     9,   219,     0,   150,     0,     0,     0,    16,     0,
-      17,     0,     0,     0,     0,     0,    18,    10,    11,    12,
-       0,    13,     0,     0,     0,    14,    15,     1,     2,     3,
+      24,   121,   122,    56,   114,    35,   179,   172,   180,    58,
+      59,    60,    35,    61,    38,    39,    48,    21,    42,    43,
+      47,    59,    60,    96,   164,   196,    57,   180,    97,    40,
+      41,    58,   107,    21,   148,   150,   151,   152,   177,   154,
+      36,   156,    62,    63,    64,    65,    66,    36,    98,    99,
+     113,   100,    67,    68,    47,    55,    69,    70,   117,   165,
+       8,   118,   136,    35,   199,    93,    91,    69,    70,   174,
+     127,    92,   103,   124,    94,   128,   129,   130,   131,   132,
+     133,   135,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,    35,    95,   187,   134,   188,   104,   105,    36,   189,
+     106,   190,    88,    89,    90,   161,   168,   111,   112,   170,
+     116,   115,   169,   153,   171,   228,   146,   119,   207,   171,
+     155,   157,   158,   159,   220,   160,    36,   173,   176,    86,
+     216,   186,   202,   175,    78,    79,    80,    81,   181,    82,
+      83,    84,    85,    86,   211,   221,    78,    79,    80,    81,
+     185,    82,    83,    84,    85,    86,   214,   191,   192,   193,
+     194,    59,    60,   184,   212,     0,   198,   213,   219,   230,
+     231,   171,   232,    46,   -45,     0,   162,   203,     0,     0,
+     206,     0,   204,     0,     0,     0,     0,   208,     0,     0,
+     -45,   -45,   -45,    62,    63,    64,    65,    66,     0,   215,
+       0,     0,   182,    67,    68,     0,     0,    69,    70,     0,
+       0,   -48,   223,   224,   222,     0,   226,   227,     0,     0,
+     229,     0,   171,   -82,   -82,   -82,   -82,   -48,   -48,   -48,
+     -82,     0,   101,     0,     0,     0,   -45,   -45,   102,   -45,
+       0,     0,   -45,    78,    79,    80,    81,     0,    82,    83,
+      84,    85,    86,    82,    83,    84,    85,    86,     0,     0,
+     -82,   -82,   -82,   -82,     0,     0,     0,   -82,     0,   101,
+       0,     0,     0,   -48,   -48,   102,   -48,   225,     0,   -48,
+       1,     2,     3,     4,     5,     6,     0,     7,   123,     0,
+       0,     9,     1,     2,     3,     4,     5,     6,     0,     7,
+      44,     0,     0,     9,     0,     0,     0,    10,    11,    12,
+       0,    13,     0,     0,     0,     0,    14,    15,     0,    10,
+      11,    12,     0,    13,   -82,   -82,   -82,   -82,    14,    15,
+       0,   -82,     0,   101,     0,    16,     0,    17,     0,   102,
+     -24,     0,   -24,    18,     0,     0,     0,    16,     0,    17,
+      45,     0,     0,     0,     0,    18,     1,     2,     3,     4,
+       5,     6,     0,     7,     8,     0,     0,     9,    78,    79,
+      80,    81,   147,    82,    83,    84,    85,    86,     0,     0,
+       0,   200,   201,    10,    11,    12,     0,    13,     0,     0,
+       0,     0,    14,    15,     0,     1,     2,     3,     4,     5,
+       6,     0,     7,     8,     0,     0,     9,     0,     0,     0,
+       0,    16,   149,    17,     0,     0,     0,     0,     0,    18,
+       0,     0,    10,    11,    12,     0,    13,     0,     0,     0,
+       0,    14,    15,     1,     2,     3,     4,     5,     6,     0,
+       7,     8,     0,     0,     9,     0,     0,     0,     0,     0,
+      16,     0,    17,     0,     0,     0,     0,     0,    18,     0,
+      10,    11,    12,     0,    13,     0,     0,     0,     0,    14,
+      15,     1,     2,     3,     4,     5,     6,     0,     7,    44,
+       0,     0,     9,     0,     0,     0,     0,     0,    16,     0,
+      17,     0,     0,     0,     0,     0,    18,     0,    10,    11,
+      12,     0,    13,     0,     0,     0,     0,    14,    15,     1,
+       2,     3,     4,     5,     6,     0,     7,   205,     0,     0,
+       9,     0,     0,     0,     0,     0,    16,     0,    17,     0,
+       0,     0,     0,     0,    18,     0,    10,    11,    12,     0,
+      13,     0,     0,     0,     0,    14,    15,     1,     2,     3,
        4,     5,     6,     0,     7,     8,     0,     0,     9,     0,
-       0,     0,     0,     0,     0,    16,     0,    17,     0,     0,
-       0,     0,     0,    18,    10,    11,    12,     0,    13,     0,
-       0,     0,    14,    15,     1,     2,     3,     4,     5,     6,
-       0,     7,    44,     0,     0,     9,     0,     0,     0,     0,
-       0,     0,    16,     0,    17,     0,     0,     0,     0,     0,
-      18,    10,    11,    12,     0,    13,     0,     0,     0,    14,
-      15,     1,     2,     3,     4,     5,     6,     0,     7,   205,
-       0,     0,     9,    59,    60,     0,    61,     0,     0,    16,
-       0,    17,     0,     0,     0,     0,     0,    18,    10,    11,
-      12,     0,    13,    59,    60,     0,    14,    15,     0,     0,
-       0,     0,     0,     0,     0,    62,    63,    64,    65,    66,
-      59,    60,     0,     0,    67,    68,    16,     0,    17,    69,
-      70,     0,     0,     0,    18,    62,    63,    64,    65,    66,
-      59,    60,     0,     0,    67,    68,   182,     0,     0,    69,
-      70,     0,    62,    63,    64,    65,    66,     0,     0,     0,
-       0,    67,    68,   209,     0,     0,    69,    70,     0,     0,
-       0,     0,    62,    63,    64,    65,    66,     0,     0,     0,
-       0,    67,    68,     0,     0,     0,    69,    70,    78,    79,
-      80,    81,     0,    82,    83,    84,    85,     0,     0,    87,
-       0,     0,    71,    72,    73,   108,    74,    75,    76,    77,
-      78,    79,    80,    81,     0,    82,    83,    84,    85,    86,
-       0,    87,   225,   109,   110,    71,    72,    73,   178,    74,
-      75,    76,    77,    78,    79,    80,    81,     0,    82,    83,
-      84,    85,    86,     0,    87,    71,    72,    73,   195,    74,
-      75,    76,    77,    78,    79,    80,    81,     0,    82,    83,
-      84,    85,    86,     0,    87,    71,    72,    73,     0,    74,
-      75,    76,    77,    78,    79,    80,    81,     0,    82,    83,
-      84,    85,    86,   108,    87,     0,     0,     0,    78,    79,
-      80,    81,     0,    82,    83,    84,    85,     0,     0,    87,
-       0,   109,   110,    78,    79,    80,    81,     0,    82,    83,
-      84,    85,     0,     0,    87,     0,   200,   201,    78,    79,
-      80,    81,     0,    82,    83,    84,    85,     0,     0,    87,
-      79,    80,    81,     0,    82,    83,    84,    85,     0,     0,
-      87
+       0,     0,     0,     0,    16,     0,    17,     0,     0,     0,
+       0,     0,    18,    59,    60,     0,    12,     0,    13,    79,
+      80,    81,     0,    82,    83,    84,    85,    86,     0,    59,
+      60,   183,    78,    79,    80,    81,     0,    82,    83,    84,
+      85,    86,    16,     0,    17,    62,    63,    64,    65,    66,
+      18,     0,     0,     0,   209,    67,    68,     0,     0,    69,
+      70,    62,    63,    64,    65,    66,     0,     0,     0,     0,
+       0,    67,    68,     0,     0,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,   108,    78,    79,    80,    81,     0,
+      82,    83,    84,    85,    86,     0,    87,     0,   109,   110,
+      71,    72,    73,    74,    75,    76,    77,   178,    78,    79,
+      80,    81,     0,    82,    83,    84,    85,    86,     0,    87,
+      71,    72,    73,    74,    75,    76,    77,   195,    78,    79,
+      80,    81,     0,    82,    83,    84,    85,    86,     0,    87,
+      71,    72,    73,    74,    75,    76,    77,     0,    78,    79,
+      80,    81,     0,    82,    83,    84,    85,    86,     0,    87,
+     108,    78,    79,    80,    81,     0,    82,    83,    84,    85,
+      86,     0,     0,     0,   109,   110,   210,    78,    79,    80,
+      81,     0,    82,    83,    84,    85,    86
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    63,    64,    18,    11,    49,   109,    50,    52,    12,
-      13,    63,     9,    65,    10,    11,    16,    11,    14,    15,
-      16,     0,    63,     9,    65,     9,    62,    63,     9,    50,
-      51,     0,     9,    12,    13,    56,    62,    16,    18,    19,
-      20,    19,    88,    89,    90,    91,    43,    93,    20,    95,
-      50,    48,    20,    19,    50,    58,    59,    43,    58,    74,
-      18,    61,    48,   166,    48,    42,    43,    48,    11,    43,
-      70,    48,   115,    69,    65,    71,    72,    73,    74,    75,
+       0,    65,    66,    18,    50,     9,    63,   110,    65,    62,
+      12,    13,     9,    15,    10,    11,    16,     0,    14,    15,
+      16,    12,    13,    51,     9,    63,     0,    65,    56,    12,
+      13,    62,    63,    16,    88,    89,    90,    91,    42,    93,
+      44,    95,    44,    45,    46,    47,    48,    44,    49,    50,
+      50,    52,    54,    55,    50,    11,    58,    59,    58,    44,
+      11,    61,    77,     9,   167,    17,    16,    58,    59,   115,
+      70,    16,    11,    69,    17,    71,    72,    73,    74,    75,
       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      63,    87,    67,    58,    65,    74,    25,    34,    35,    36,
-      37,    16,   148,    40,   150,   101,   106,   153,    17,   155,
-     110,    58,   108,   109,   217,    65,    58,    58,    58,   115,
-     182,     3,     4,     5,     6,     7,     8,     3,    10,    11,
-     145,    63,    14,    49,    50,    51,    52,   116,    68,    40,
-      56,    63,    58,    16,    65,    65,    63,   209,    64,   145,
-      32,    58,    34,    63,    -1,    63,   101,   157,   158,   159,
-     160,    63,    -1,    -1,    -1,    -1,   145,   167,    -1,    -1,
-     166,    -1,    -1,     0,    -1,    -1,    58,   177,    60,    -1,
-     180,    -1,   178,    -1,    66,    -1,    -1,   183,    -1,    -1,
-      24,    18,    19,    20,    -1,    29,    30,    31,    32,   195,
-      34,    35,    36,    37,    -1,    -1,    40,    -1,     0,    -1,
-      -1,    -1,   212,   213,   210,    -1,   216,    -1,   218,    -1,
-     220,   217,    49,    50,    51,    52,    18,    19,    20,    56,
-      -1,    58,    -1,    -1,    -1,    62,    63,    64,    65,    24,
-      -1,    68,    -1,    -1,    29,    30,    31,    32,    -1,    34,
-      35,    36,    37,    -1,    -1,    40,    -1,    49,    50,    51,
-      52,    -1,    -1,    -1,    56,    -1,    58,    -1,    -1,    -1,
-      62,    63,    64,    65,    -1,    -1,    68,     3,     4,     5,
-       6,     7,     8,    -1,    10,    11,    -1,    -1,    14,     3,
-       4,     5,     6,     7,     8,    -1,    10,    11,    -1,    -1,
-      14,    -1,    -1,    -1,    30,    31,    32,    -1,    34,    -1,
-      -1,    -1,    38,    39,    -1,    -1,    30,    31,    32,    -1,
-      34,    -1,    -1,    -1,    38,    39,    -1,    -1,    -1,    -1,
-      -1,    -1,    58,    -1,    60,    -1,    -1,    63,    -1,    65,
-      66,    -1,    -1,    -1,    58,    -1,    60,    61,    -1,    -1,
-      -1,    -1,    66,     3,     4,     5,     6,     7,     8,    -1,
-      10,    11,    -1,    -1,    14,    -1,    16,    -1,    29,    30,
-      31,    32,    -1,    34,    35,    36,    37,    -1,    -1,    40,
-      30,    31,    32,    -1,    34,    -1,    -1,    -1,    38,    39,
+      86,     9,    18,   147,    77,   149,    42,    43,    44,   153,
+      42,   155,    16,    17,    18,   101,   106,    65,    63,   109,
+      67,    65,   108,    19,   110,   218,    27,    58,   182,   115,
+      20,    58,    58,    58,    42,    58,    44,    65,     3,    38,
+      58,   146,    63,   116,    29,    30,    31,    32,    68,    34,
+      35,    36,    37,    38,    63,   209,    29,    30,    31,    32,
+     146,    34,    35,    36,    37,    38,    63,   157,   158,   159,
+     160,    12,    13,   146,    65,    -1,   166,    65,    63,    63,
+      63,   167,    63,    16,     0,    -1,   101,   177,    -1,    -1,
+     180,    -1,   178,    -1,    -1,    -1,    -1,   183,    -1,    -1,
+      16,    17,    18,    44,    45,    46,    47,    48,    -1,   195,
+      -1,    -1,    53,    54,    55,    -1,    -1,    58,    59,    -1,
+      -1,     0,   212,   213,   210,    -1,   216,   217,    -1,    -1,
+     220,    -1,   218,    49,    50,    51,    52,    16,    17,    18,
+      56,    -1,    58,    -1,    -1,    -1,    62,    63,    64,    65,
+      -1,    -1,    68,    29,    30,    31,    32,    -1,    34,    35,
+      36,    37,    38,    34,    35,    36,    37,    38,    -1,    -1,
+      49,    50,    51,    52,    -1,    -1,    -1,    56,    -1,    58,
+      -1,    -1,    -1,    62,    63,    64,    65,    63,    -1,    68,
        3,     4,     5,     6,     7,     8,    -1,    10,    11,    -1,
-      -1,    14,    63,    -1,    17,    -1,    -1,    -1,    58,    -1,
-      60,    -1,    -1,    -1,    -1,    -1,    66,    30,    31,    32,
-      -1,    34,    -1,    -1,    -1,    38,    39,     3,     4,     5,
+      -1,    14,     3,     4,     5,     6,     7,     8,    -1,    10,
+      11,    -1,    -1,    14,    -1,    -1,    -1,    30,    31,    32,
+      -1,    34,    -1,    -1,    -1,    -1,    39,    40,    -1,    30,
+      31,    32,    -1,    34,    49,    50,    51,    52,    39,    40,
+      -1,    56,    -1,    58,    -1,    58,    -1,    60,    -1,    64,
+      63,    -1,    65,    66,    -1,    -1,    -1,    58,    -1,    60,
+      61,    -1,    -1,    -1,    -1,    66,     3,     4,     5,     6,
+       7,     8,    -1,    10,    11,    -1,    -1,    14,    29,    30,
+      31,    32,    19,    34,    35,    36,    37,    38,    -1,    -1,
+      -1,    42,    43,    30,    31,    32,    -1,    34,    -1,    -1,
+      -1,    -1,    39,    40,    -1,     3,     4,     5,     6,     7,
+       8,    -1,    10,    11,    -1,    -1,    14,    -1,    -1,    -1,
+      -1,    58,    20,    60,    -1,    -1,    -1,    -1,    -1,    66,
+      -1,    -1,    30,    31,    32,    -1,    34,    -1,    -1,    -1,
+      -1,    39,    40,     3,     4,     5,     6,     7,     8,    -1,
+      10,    11,    -1,    -1,    14,    -1,    -1,    -1,    -1,    -1,
+      58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    66,    -1,
+      30,    31,    32,    -1,    34,    -1,    -1,    -1,    -1,    39,
+      40,     3,     4,     5,     6,     7,     8,    -1,    10,    11,
+      -1,    -1,    14,    -1,    -1,    -1,    -1,    -1,    58,    -1,
+      60,    -1,    -1,    -1,    -1,    -1,    66,    -1,    30,    31,
+      32,    -1,    34,    -1,    -1,    -1,    -1,    39,    40,     3,
+       4,     5,     6,     7,     8,    -1,    10,    11,    -1,    -1,
+      14,    -1,    -1,    -1,    -1,    -1,    58,    -1,    60,    -1,
+      -1,    -1,    -1,    -1,    66,    -1,    30,    31,    32,    -1,
+      34,    -1,    -1,    -1,    -1,    39,    40,     3,     4,     5,
        6,     7,     8,    -1,    10,    11,    -1,    -1,    14,    -1,
-      -1,    -1,    -1,    -1,    -1,    58,    -1,    60,    -1,    -1,
-      -1,    -1,    -1,    66,    30,    31,    32,    -1,    34,    -1,
-      -1,    -1,    38,    39,     3,     4,     5,     6,     7,     8,
-      -1,    10,    11,    -1,    -1,    14,    -1,    -1,    -1,    -1,
-      -1,    -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,
-      66,    30,    31,    32,    -1,    34,    -1,    -1,    -1,    38,
-      39,     3,     4,     5,     6,     7,     8,    -1,    10,    11,
-      -1,    -1,    14,    12,    13,    -1,    15,    -1,    -1,    58,
-      -1,    60,    -1,    -1,    -1,    -1,    -1,    66,    30,    31,
-      32,    -1,    34,    12,    13,    -1,    38,    39,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,    48,
-      12,    13,    -1,    -1,    53,    54,    58,    -1,    60,    58,
-      59,    -1,    -1,    -1,    66,    44,    45,    46,    47,    48,
-      12,    13,    -1,    -1,    53,    54,    55,    -1,    -1,    58,
-      59,    -1,    44,    45,    46,    47,    48,    -1,    -1,    -1,
-      -1,    53,    54,    55,    -1,    -1,    58,    59,    -1,    -1,
-      -1,    -1,    44,    45,    46,    47,    48,    -1,    -1,    -1,
-      -1,    53,    54,    -1,    -1,    -1,    58,    59,    29,    30,
-      31,    32,    -1,    34,    35,    36,    37,    -1,    -1,    40,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    34,    35,    36,    37,    38,
-      -1,    40,    63,    42,    43,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    -1,    34,    35,
-      36,    37,    38,    -1,    40,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    -1,    34,    35,
-      36,    37,    38,    -1,    40,    21,    22,    23,    -1,    25,
-      26,    27,    28,    29,    30,    31,    32,    -1,    34,    35,
-      36,    37,    38,    24,    40,    -1,    -1,    -1,    29,    30,
-      31,    32,    -1,    34,    35,    36,    37,    -1,    -1,    40,
-      -1,    42,    43,    29,    30,    31,    32,    -1,    34,    35,
-      36,    37,    -1,    -1,    40,    -1,    42,    43,    29,    30,
-      31,    32,    -1,    34,    35,    36,    37,    -1,    -1,    40,
-      30,    31,    32,    -1,    34,    35,    36,    37,    -1,    -1,
-      40
+      -1,    -1,    -1,    -1,    58,    -1,    60,    -1,    -1,    -1,
+      -1,    -1,    66,    12,    13,    -1,    32,    -1,    34,    30,
+      31,    32,    -1,    34,    35,    36,    37,    38,    -1,    12,
+      13,    28,    29,    30,    31,    32,    -1,    34,    35,    36,
+      37,    38,    58,    -1,    60,    44,    45,    46,    47,    48,
+      66,    -1,    -1,    -1,    53,    54,    55,    -1,    -1,    58,
+      59,    44,    45,    46,    47,    48,    -1,    -1,    -1,    -1,
+      -1,    54,    55,    -1,    -1,    58,    59,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+      34,    35,    36,    37,    38,    -1,    40,    -1,    42,    43,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    -1,    34,    35,    36,    37,    38,    -1,    40,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    -1,    34,    35,    36,    37,    38,    -1,    40,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
+      31,    32,    -1,    34,    35,    36,    37,    38,    -1,    40,
+      28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
+      38,    -1,    -1,    -1,    42,    43,    28,    29,    30,    31,
+      32,    -1,    34,    35,    36,    37,    38
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
+static const yytype_int8 yystos[] =
 {
        0,     3,     4,     5,     6,     7,     8,    10,    11,    14,
-      30,    31,    32,    34,    38,    39,    58,    60,    66,    70,
+      30,    31,    32,    34,    39,    40,    58,    60,    66,    70,
       71,    72,    75,    77,    78,    79,    80,    81,    82,    83,
-      85,    86,    87,    88,    89,     9,    48,    72,    75,    75,
+      85,    86,    87,    88,    89,     9,    44,    72,    75,    75,
       72,    72,    75,    75,    11,    61,    71,    75,    78,    90,
       91,    92,    93,    94,    95,    11,    87,     0,    62,    12,
-      13,    15,    44,    45,    46,    47,    48,    53,    54,    58,
-      59,    21,    22,    23,    25,    26,    27,    28,    29,    30,
-      31,    32,    34,    35,    36,    37,    38,    40,    18,    19,
-      20,    20,    20,    19,    19,    18,    49,    52,    50,    51,
-      56,    58,    64,    11,    42,    43,    43,    63,    24,    42,
+      13,    15,    44,    45,    46,    47,    48,    54,    55,    58,
+      59,    21,    22,    23,    24,    25,    26,    27,    29,    30,
+      31,    32,    34,    35,    36,    37,    38,    40,    16,    17,
+      18,    16,    16,    17,    17,    18,    51,    56,    49,    50,
+      52,    58,    64,    11,    42,    43,    42,    63,    28,    42,
       43,    65,    63,    78,    92,    65,    67,    78,    78,    58,
       84,    84,    84,    11,    75,    76,    78,    78,    75,    75,
-      75,    72,    75,    87,    75,    75,    75,    75,    75,    75,
-      75,    75,    75,    75,    75,    25,    75,    77,    16,    77,
-      17,    77,    77,    17,    77,    16,    77,    58,    58,    58,
-      58,    75,    76,    74,     9,    48,    98,    96,    78,    75,
-      75,    95,    78,    65,    92,    72,     3,    43,    24,    63,
-      65,    68,    55,    24,    72,    75,    87,    77,    77,    77,
-      77,    78,    78,    78,    78,    24,    63,    73,    95,    78,
-      42,    43,    63,    78,    75,    11,    78,    84,    75,    55,
-      24,    63,    65,    65,    63,    75,    58,    99,    97,    63,
-      43,    84,    75,    78,    78,    63,    78,    95,    78,    78,
+      75,    75,    75,    75,    72,    75,    87,    75,    75,    75,
+      75,    75,    75,    75,    75,    75,    27,    19,    77,    20,
+      77,    77,    77,    19,    77,    20,    77,    58,    58,    58,
+      58,    75,    76,    74,     9,    44,    96,    98,    78,    75,
+      78,    75,    95,    65,    92,    72,     3,    42,    28,    63,
+      65,    68,    53,    28,    72,    75,    87,    77,    77,    77,
+      77,    78,    78,    78,    78,    28,    63,    73,    78,    95,
+      42,    43,    63,    78,    75,    11,    78,    84,    75,    53,
+      28,    63,    65,    65,    63,    75,    58,    97,    99,    63,
+      42,    84,    75,    78,    78,    63,    78,    78,    95,    78,
       63,    63,    63
 };
 
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
-
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_int8 yyr1[] =
+{
+       0,    69,    70,    71,    71,    71,    72,    72,    72,    72,
+      73,    72,    74,    72,    72,    72,    72,    72,    72,    75,
+      75,    75,    75,    75,    76,    76,    76,    76,    76,    72,
+      75,    75,    75,    75,    75,    75,    75,    75,    75,    77,
+      77,    77,    77,    77,    77,    77,    77,    77,    77,    77,
+      77,    77,    78,    78,    78,    78,    78,    78,    79,    79,
+      80,    80,    81,    81,    82,    82,    83,    83,    72,    72,
+      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
+      84,    84,    85,    86,    86,    72,    72,    72,    72,    72,
+      72,    72,    72,    87,    87,    87,    87,    88,    88,    89,
+      90,    90,    90,    91,    91,    92,    92,    92,    93,    94,
+      96,    95,    95,    97,    95,    98,    95,    95,    99,    95,
+      72,    72,    72
+};
 
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_int8 yyr2[] =
+{
+       0,     2,     1,     1,     3,     3,     2,     2,     4,     4,
+       0,     7,     0,     6,     6,     3,     1,     1,     1,     1,
+       2,     2,     2,     2,     0,     1,     3,     3,     5,     4,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     1,
+       3,     3,     3,     5,     5,     3,     6,     6,     4,     3,
+       3,     3,     1,     1,     1,     1,     1,     1,     3,     3,
+       4,     4,     3,     3,     4,     4,     3,     3,     2,     2,
+       3,     3,     3,     2,     2,     7,     7,     5,     5,     2,
+       0,     3,     1,     1,     0,     1,     1,     1,     1,     1,
+       1,     1,     2,     1,     2,     2,     3,     2,     3,     3,
+       1,     2,     2,     2,     3,     1,     1,     3,     3,     1,
+       0,     4,     3,     0,     6,     0,     4,     3,     0,     6,
+       2,     2,     4
+};
 
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
 
-#define YYFAIL		goto yyerrlab
+enum { YYENOMEM = -2 };
 
-#define YYRECOVERING()  (!!yyerrstatus)
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
-
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
 
 
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
-
+#define YYRECOVERING()  (!!yyerrstatus)
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
+
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -1123,80 +1228,65 @@ while (YYID (0))
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+# ifndef YY_LOCATION_PRINT
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+
+
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Kind, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
+
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yykind, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -1204,16 +1294,8 @@ yy_symbol_print (yyoutput, yytype, yyval
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1224,63 +1306,56 @@ yy_stack_print (yybottom, yytop)
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
 static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule)
 {
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
+      yy_symbol_print (stderr,
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)]);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1295,342 +1370,82 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
-
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
 
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
 
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
 
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
 
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
 static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  switch (yytype)
-    {
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
 
 /* The lookahead symbol.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
-
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+
+/*----------.
+| yyparse.  |
+`----------*/
+
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
-
-
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to xreallocate them elsewhere.  */
 
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize;
+
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
-
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -1638,133 +1453,147 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
   yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
-	/* Give user a chance to xreallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        yy_state_t *yyss1 = yyss;
+        YYSTYPE *yyvs1 = yyvs;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
+                    &yystacksize);
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yy_state_t *yyss1 = yyss;
+        union yyalloc *yyptr =
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      YYDPRINTF ((stderr, "Reading a token\n"));
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -1779,8 +1608,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -1792,13 +1621,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -1813,14 +1642,14 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -1833,988 +1662,854 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 4:
-
-/* Line 1455 of yacc.c  */
+  case 4:
 #line 191 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+                        { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+#line 1670 "ada-exp.c.tmp"
     break;
 
   case 5:
-
-/* Line 1455 of yacc.c  */
 #line 193 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 1676 "ada-exp.c.tmp"
     break;
 
   case 6:
-
-/* Line 1455 of yacc.c  */
 #line 198 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND); }
+                        { write_exp_elt_opcode (pstate, UNOP_IND); }
+#line 1682 "ada-exp.c.tmp"
     break;
 
   case 7:
-
-/* Line 1455 of yacc.c  */
 #line 202 "ada-exp.y"
-    { write_exp_op_with_string (pstate, STRUCTOP_STRUCT,
-						    (yyvsp[(2) - (2)].sval)); }
+                        { write_exp_op_with_string (pstate, STRUCTOP_STRUCT,
+						    (yyvsp[0].sval)); }
+#line 1689 "ada-exp.c.tmp"
     break;
 
   case 8:
-
-/* Line 1455 of yacc.c  */
 #line 207 "ada-exp.y"
-    {
+                        {
 			  write_exp_elt_opcode (pstate, OP_FUNCALL);
-			  write_exp_elt_longcst (pstate, (yyvsp[(3) - (4)].lval));
+			  write_exp_elt_longcst (pstate, (yyvsp[-1].lval));
 			  write_exp_elt_opcode (pstate, OP_FUNCALL);
 		        }
+#line 1699 "ada-exp.c.tmp"
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
 #line 213 "ada-exp.y"
-    {
-			  if ((yyvsp[(1) - (4)].tval) != NULL)
+                        {
+			  if ((yyvsp[-3].tval) != NULL)
 			    {
-			      if ((yyvsp[(3) - (4)].lval) != 1)
+			      if ((yyvsp[-1].lval) != 1)
 				error (_("Invalid conversion"));
 			      write_exp_elt_opcode (pstate, UNOP_CAST);
-			      write_exp_elt_type (pstate, (yyvsp[(1) - (4)].tval));
+			      write_exp_elt_type (pstate, (yyvsp[-3].tval));
 			      write_exp_elt_opcode (pstate, UNOP_CAST);
 			    }
 			  else
 			    {
 			      write_exp_elt_opcode (pstate, OP_FUNCALL);
-			      write_exp_elt_longcst (pstate, (yyvsp[(3) - (4)].lval));
+			      write_exp_elt_longcst (pstate, (yyvsp[-1].lval));
 			      write_exp_elt_opcode (pstate, OP_FUNCALL);
 			    }
 			}
+#line 1720 "ada-exp.c.tmp"
     break;
 
   case 10:
-
-/* Line 1455 of yacc.c  */
 #line 231 "ada-exp.y"
-    { type_qualifier = (yyvsp[(1) - (3)].tval); }
+                                                { type_qualifier = (yyvsp[-2].tval); }
+#line 1726 "ada-exp.c.tmp"
     break;
 
   case 11:
-
-/* Line 1455 of yacc.c  */
 #line 233 "ada-exp.y"
-    {
-			  if ((yyvsp[(1) - (7)].tval) == NULL)
+                        {
+			  if ((yyvsp[-6].tval) == NULL)
 			    error (_("Type required for qualification"));
 			  write_exp_elt_opcode (pstate, UNOP_QUAL);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (7)].tval));
+			  write_exp_elt_type (pstate, (yyvsp[-6].tval));
 			  write_exp_elt_opcode (pstate, UNOP_QUAL);
-			  type_qualifier = (yyvsp[(3) - (7)].tval);
+			  type_qualifier = (yyvsp[-4].tval);
 			}
+#line 1739 "ada-exp.c.tmp"
     break;
 
   case 12:
-
-/* Line 1455 of yacc.c  */
 #line 243 "ada-exp.y"
-    { (yyval.tval) = type_qualifier; }
+                        { (yyval.tval) = type_qualifier; }
+#line 1745 "ada-exp.c.tmp"
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
 #line 248 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, TERNOP_SLICE); }
+                        { write_exp_elt_opcode (pstate, TERNOP_SLICE); }
+#line 1751 "ada-exp.c.tmp"
     break;
 
   case 14:
-
-/* Line 1455 of yacc.c  */
 #line 250 "ada-exp.y"
-    { if ((yyvsp[(1) - (6)].tval) == NULL) 
+                        { if ((yyvsp[-5].tval) == NULL) 
                             write_exp_elt_opcode (pstate, TERNOP_SLICE);
 			  else
 			    error (_("Cannot slice a type"));
 			}
+#line 1761 "ada-exp.c.tmp"
     break;
 
   case 15:
-
-/* Line 1455 of yacc.c  */
 #line 257 "ada-exp.y"
-    { }
+                                { }
+#line 1767 "ada-exp.c.tmp"
     break;
 
   case 16:
-
-/* Line 1455 of yacc.c  */
 #line 269 "ada-exp.y"
-    { if ((yyvsp[(1) - (1)].tval) != NULL)
+                        { if ((yyvsp[0].tval) != NULL)
 			    {
 			      write_exp_elt_opcode (pstate, OP_TYPE);
-			      write_exp_elt_type (pstate, (yyvsp[(1) - (1)].tval));
+			      write_exp_elt_type (pstate, (yyvsp[0].tval));
 			      write_exp_elt_opcode (pstate, OP_TYPE);
 			    }
 			}
+#line 1779 "ada-exp.c.tmp"
     break;
 
   case 17:
-
-/* Line 1455 of yacc.c  */
 #line 279 "ada-exp.y"
-    { write_dollar_variable (pstate, (yyvsp[(1) - (1)].sval)); }
+                        { write_dollar_variable (pstate, (yyvsp[0].sval)); }
+#line 1785 "ada-exp.c.tmp"
     break;
 
   case 20:
-
-/* Line 1455 of yacc.c  */
 #line 289 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_NEG); }
+                        { write_exp_elt_opcode (pstate, UNOP_NEG); }
+#line 1791 "ada-exp.c.tmp"
     break;
 
   case 21:
-
-/* Line 1455 of yacc.c  */
 #line 293 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+                        { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+#line 1797 "ada-exp.c.tmp"
     break;
 
   case 22:
-
-/* Line 1455 of yacc.c  */
 #line 297 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+                        { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+#line 1803 "ada-exp.c.tmp"
     break;
 
   case 23:
-
-/* Line 1455 of yacc.c  */
 #line 301 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ABS); }
+                        { write_exp_elt_opcode (pstate, UNOP_ABS); }
+#line 1809 "ada-exp.c.tmp"
     break;
 
   case 24:
-
-/* Line 1455 of yacc.c  */
 #line 304 "ada-exp.y"
-    { (yyval.lval) = 0; }
+                        { (yyval.lval) = 0; }
+#line 1815 "ada-exp.c.tmp"
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
 #line 308 "ada-exp.y"
-    { (yyval.lval) = 1; }
+                        { (yyval.lval) = 1; }
+#line 1821 "ada-exp.c.tmp"
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
 #line 310 "ada-exp.y"
-    { (yyval.lval) = 1; }
+                        { (yyval.lval) = 1; }
+#line 1827 "ada-exp.c.tmp"
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
 #line 312 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(1) - (3)].lval) + 1; }
+                        { (yyval.lval) = (yyvsp[-2].lval) + 1; }
+#line 1833 "ada-exp.c.tmp"
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
 #line 314 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(1) - (5)].lval) + 1; }
+                        { (yyval.lval) = (yyvsp[-4].lval) + 1; }
+#line 1839 "ada-exp.c.tmp"
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
 #line 319 "ada-exp.y"
-    { 
-			  if ((yyvsp[(2) - (4)].tval) == NULL)
+                        { 
+			  if ((yyvsp[-2].tval) == NULL)
 			    error (_("Type required within braces in coercion"));
 			  write_exp_elt_opcode (pstate, UNOP_MEMVAL);
-			  write_exp_elt_type (pstate, (yyvsp[(2) - (4)].tval));
+			  write_exp_elt_type (pstate, (yyvsp[-2].tval));
 			  write_exp_elt_opcode (pstate, UNOP_MEMVAL);
 			}
+#line 1851 "ada-exp.c.tmp"
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
 #line 331 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EXP); }
+                        { write_exp_elt_opcode (pstate, BINOP_EXP); }
+#line 1857 "ada-exp.c.tmp"
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
 #line 335 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MUL); }
+                        { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 1863 "ada-exp.c.tmp"
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
 #line 339 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_DIV); }
+                        { write_exp_elt_opcode (pstate, BINOP_DIV); }
+#line 1869 "ada-exp.c.tmp"
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
 #line 343 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REM); }
+                        { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 1875 "ada-exp.c.tmp"
     break;
 
   case 34:
-
-/* Line 1455 of yacc.c  */
 #line 347 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MOD); }
+                        { write_exp_elt_opcode (pstate, BINOP_MOD); }
+#line 1881 "ada-exp.c.tmp"
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
 #line 351 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+                        { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+#line 1887 "ada-exp.c.tmp"
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
 #line 355 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ADD); }
+                        { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 1893 "ada-exp.c.tmp"
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
 #line 359 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_CONCAT); }
+                        { write_exp_elt_opcode (pstate, BINOP_CONCAT); }
+#line 1899 "ada-exp.c.tmp"
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
 #line 363 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUB); }
+                        { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 1905 "ada-exp.c.tmp"
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
 #line 370 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+                        { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 1911 "ada-exp.c.tmp"
     break;
 
   case 41:
-
-/* Line 1455 of yacc.c  */
 #line 374 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+                        { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 1917 "ada-exp.c.tmp"
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
 #line 378 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+                        { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+#line 1923 "ada-exp.c.tmp"
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
 #line 382 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, TERNOP_IN_RANGE); }
+                        { write_exp_elt_opcode (pstate, TERNOP_IN_RANGE); }
+#line 1929 "ada-exp.c.tmp"
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
 #line 384 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_IN_BOUNDS);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(5) - (5)].lval));
+                        { write_exp_elt_opcode (pstate, BINOP_IN_BOUNDS);
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].lval));
 			  write_exp_elt_opcode (pstate, BINOP_IN_BOUNDS);
 			}
+#line 1938 "ada-exp.c.tmp"
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
 #line 389 "ada-exp.y"
-    { 
-			  if ((yyvsp[(3) - (3)].tval) == NULL)
+                        { 
+			  if ((yyvsp[0].tval) == NULL)
 			    error (_("Right operand of 'in' must be type"));
 			  write_exp_elt_opcode (pstate, UNOP_IN_RANGE);
-		          write_exp_elt_type (pstate, (yyvsp[(3) - (3)].tval));
+		          write_exp_elt_type (pstate, (yyvsp[0].tval));
 		          write_exp_elt_opcode (pstate, UNOP_IN_RANGE);
 			}
+#line 1950 "ada-exp.c.tmp"
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
 #line 397 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, TERNOP_IN_RANGE);
+                        { write_exp_elt_opcode (pstate, TERNOP_IN_RANGE);
 		          write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT);
 			}
+#line 1958 "ada-exp.c.tmp"
     break;
 
   case 47:
-
-/* Line 1455 of yacc.c  */
 #line 401 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_IN_BOUNDS);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(6) - (6)].lval));
+                        { write_exp_elt_opcode (pstate, BINOP_IN_BOUNDS);
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].lval));
 			  write_exp_elt_opcode (pstate, BINOP_IN_BOUNDS);
 		          write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT);
 			}
+#line 1968 "ada-exp.c.tmp"
     break;
 
   case 48:
-
-/* Line 1455 of yacc.c  */
 #line 407 "ada-exp.y"
-    { 
-			  if ((yyvsp[(4) - (4)].tval) == NULL)
+                        { 
+			  if ((yyvsp[0].tval) == NULL)
 			    error (_("Right operand of 'in' must be type"));
 			  write_exp_elt_opcode (pstate, UNOP_IN_RANGE);
-		          write_exp_elt_type (pstate, (yyvsp[(4) - (4)].tval));
+		          write_exp_elt_type (pstate, (yyvsp[0].tval));
 		          write_exp_elt_opcode (pstate, UNOP_IN_RANGE);
 		          write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT);
 			}
+#line 1981 "ada-exp.c.tmp"
     break;
 
   case 49:
-
-/* Line 1455 of yacc.c  */
 #line 418 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+                        { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+#line 1987 "ada-exp.c.tmp"
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
 #line 422 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LESS); }
+                        { write_exp_elt_opcode (pstate, BINOP_LESS); }
+#line 1993 "ada-exp.c.tmp"
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
 #line 426 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GTR); }
+                        { write_exp_elt_opcode (pstate, BINOP_GTR); }
+#line 1999 "ada-exp.c.tmp"
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
 #line 439 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 2005 "ada-exp.c.tmp"
     break;
 
   case 59:
-
-/* Line 1455 of yacc.c  */
 #line 441 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 2011 "ada-exp.c.tmp"
     break;
 
   case 60:
-
-/* Line 1455 of yacc.c  */
 #line 446 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 2017 "ada-exp.c.tmp"
     break;
 
   case 61:
-
-/* Line 1455 of yacc.c  */
 #line 448 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 2023 "ada-exp.c.tmp"
     break;
 
   case 62:
-
-/* Line 1455 of yacc.c  */
 #line 453 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 2029 "ada-exp.c.tmp"
     break;
 
   case 63:
-
-/* Line 1455 of yacc.c  */
 #line 455 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 2035 "ada-exp.c.tmp"
     break;
 
   case 64:
-
-/* Line 1455 of yacc.c  */
 #line 460 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 2041 "ada-exp.c.tmp"
     break;
 
   case 65:
-
-/* Line 1455 of yacc.c  */
 #line 462 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 2047 "ada-exp.c.tmp"
     break;
 
   case 66:
-
-/* Line 1455 of yacc.c  */
 #line 466 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 2053 "ada-exp.c.tmp"
     break;
 
   case 67:
-
-/* Line 1455 of yacc.c  */
 #line 468 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 2059 "ada-exp.c.tmp"
     break;
 
   case 68:
-
-/* Line 1455 of yacc.c  */
 #line 480 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+                        { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+#line 2065 "ada-exp.c.tmp"
     break;
 
   case 69:
-
-/* Line 1455 of yacc.c  */
 #line 482 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR);
+                        { write_exp_elt_opcode (pstate, UNOP_ADDR);
 			  write_exp_elt_opcode (pstate, UNOP_CAST);
 			  write_exp_elt_type (pstate,
 					      type_system_address (pstate));
 			  write_exp_elt_opcode (pstate, UNOP_CAST);
 			}
+#line 2076 "ada-exp.c.tmp"
     break;
 
   case 70:
-
-/* Line 1455 of yacc.c  */
 #line 489 "ada-exp.y"
-    { write_int (pstate, (yyvsp[(3) - (3)].lval), type_int (pstate));
+                        { write_int (pstate, (yyvsp[0].lval), type_int (pstate));
 			  write_exp_elt_opcode (pstate, OP_ATR_FIRST); }
+#line 2083 "ada-exp.c.tmp"
     break;
 
   case 71:
-
-/* Line 1455 of yacc.c  */
 #line 492 "ada-exp.y"
-    { write_int (pstate, (yyvsp[(3) - (3)].lval), type_int (pstate));
+                        { write_int (pstate, (yyvsp[0].lval), type_int (pstate));
 			  write_exp_elt_opcode (pstate, OP_ATR_LAST); }
+#line 2090 "ada-exp.c.tmp"
     break;
 
   case 72:
-
-/* Line 1455 of yacc.c  */
 #line 495 "ada-exp.y"
-    { write_int (pstate, (yyvsp[(3) - (3)].lval), type_int (pstate));
+                        { write_int (pstate, (yyvsp[0].lval), type_int (pstate));
 			  write_exp_elt_opcode (pstate, OP_ATR_LENGTH); }
+#line 2097 "ada-exp.c.tmp"
     break;
 
   case 73:
-
-/* Line 1455 of yacc.c  */
 #line 498 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_SIZE); }
+                        { write_exp_elt_opcode (pstate, OP_ATR_SIZE); }
+#line 2103 "ada-exp.c.tmp"
     break;
 
   case 74:
-
-/* Line 1455 of yacc.c  */
 #line 500 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_TAG); }
+                        { write_exp_elt_opcode (pstate, OP_ATR_TAG); }
+#line 2109 "ada-exp.c.tmp"
     break;
 
   case 75:
-
-/* Line 1455 of yacc.c  */
 #line 502 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_MIN); }
+                        { write_exp_elt_opcode (pstate, OP_ATR_MIN); }
+#line 2115 "ada-exp.c.tmp"
     break;
 
   case 76:
-
-/* Line 1455 of yacc.c  */
 #line 504 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_MAX); }
+                        { write_exp_elt_opcode (pstate, OP_ATR_MAX); }
+#line 2121 "ada-exp.c.tmp"
     break;
 
   case 77:
-
-/* Line 1455 of yacc.c  */
 #line 506 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_POS); }
+                        { write_exp_elt_opcode (pstate, OP_ATR_POS); }
+#line 2127 "ada-exp.c.tmp"
     break;
 
   case 78:
-
-/* Line 1455 of yacc.c  */
 #line 508 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_VAL); }
+                        { write_exp_elt_opcode (pstate, OP_ATR_VAL); }
+#line 2133 "ada-exp.c.tmp"
     break;
 
   case 79:
-
-/* Line 1455 of yacc.c  */
 #line 510 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_MODULUS); }
+                        { write_exp_elt_opcode (pstate, OP_ATR_MODULUS); }
+#line 2139 "ada-exp.c.tmp"
     break;
 
   case 80:
-
-/* Line 1455 of yacc.c  */
 #line 514 "ada-exp.y"
-    { (yyval.lval) = 1; }
+                        { (yyval.lval) = 1; }
+#line 2145 "ada-exp.c.tmp"
     break;
 
   case 81:
-
-/* Line 1455 of yacc.c  */
 #line 516 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(2) - (3)].typed_val).val; }
+                        { (yyval.lval) = (yyvsp[-1].typed_val).val; }
+#line 2151 "ada-exp.c.tmp"
     break;
 
   case 82:
-
-/* Line 1455 of yacc.c  */
 #line 521 "ada-exp.y"
-    { 
-			  if ((yyvsp[(1) - (1)].tval) == NULL)
+                        { 
+			  if ((yyvsp[0].tval) == NULL)
 			    error (_("Prefix must be type"));
 			  write_exp_elt_opcode (pstate, OP_TYPE);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].tval));
+			  write_exp_elt_type (pstate, (yyvsp[0].tval));
 			  write_exp_elt_opcode (pstate, OP_TYPE); }
+#line 2162 "ada-exp.c.tmp"
     break;
 
   case 84:
-
-/* Line 1455 of yacc.c  */
 #line 532 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_TYPE);
+                        { write_exp_elt_opcode (pstate, OP_TYPE);
 			  write_exp_elt_type (pstate,
 					  parse_type (pstate)->builtin_void);
 			  write_exp_elt_opcode (pstate, OP_TYPE); }
+#line 2171 "ada-exp.c.tmp"
     break;
 
   case 85:
-
-/* Line 1455 of yacc.c  */
 #line 540 "ada-exp.y"
-    { write_int (pstate, (LONGEST) (yyvsp[(1) - (1)].typed_val).val, (yyvsp[(1) - (1)].typed_val).type); }
+                        { write_int (pstate, (LONGEST) (yyvsp[0].typed_val).val, (yyvsp[0].typed_val).type); }
+#line 2177 "ada-exp.c.tmp"
     break;
 
   case 86:
-
-/* Line 1455 of yacc.c  */
 #line 544 "ada-exp.y"
-    { write_int (pstate,
-			       convert_char_literal (type_qualifier, (yyvsp[(1) - (1)].typed_val).val),
+                  { write_int (pstate,
+			       convert_char_literal (type_qualifier, (yyvsp[0].typed_val).val),
 			       (type_qualifier == NULL) 
-			       ? (yyvsp[(1) - (1)].typed_val).type : type_qualifier);
+			       ? (yyvsp[0].typed_val).type : type_qualifier);
 		  }
+#line 2187 "ada-exp.c.tmp"
     break;
 
   case 87:
-
-/* Line 1455 of yacc.c  */
 #line 552 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FLOAT);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val_float).type);
-			  write_exp_elt_floatcst (pstate, (yyvsp[(1) - (1)].typed_val_float).val);
+                        { write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val_float).type);
+			  write_exp_elt_floatcst (pstate, (yyvsp[0].typed_val_float).val);
 			  write_exp_elt_opcode (pstate, OP_FLOAT);
 			}
+#line 2197 "ada-exp.c.tmp"
     break;
 
   case 88:
-
-/* Line 1455 of yacc.c  */
 #line 560 "ada-exp.y"
-    { write_int (pstate, 0, type_int (pstate)); }
+                        { write_int (pstate, 0, type_int (pstate)); }
+#line 2203 "ada-exp.c.tmp"
     break;
 
   case 89:
-
-/* Line 1455 of yacc.c  */
 #line 564 "ada-exp.y"
-    { 
-			  write_exp_op_with_string (pstate, OP_STRING, (yyvsp[(1) - (1)].sval));
+                        { 
+			  write_exp_op_with_string (pstate, OP_STRING, (yyvsp[0].sval));
 			}
+#line 2211 "ada-exp.c.tmp"
     break;
 
   case 90:
-
-/* Line 1455 of yacc.c  */
 #line 570 "ada-exp.y"
-    { write_int (pstate, 1, type_boolean (pstate)); }
+                        { write_int (pstate, 1, type_boolean (pstate)); }
+#line 2217 "ada-exp.c.tmp"
     break;
 
   case 91:
-
-/* Line 1455 of yacc.c  */
 #line 572 "ada-exp.y"
-    { write_int (pstate, 0, type_boolean (pstate)); }
+                        { write_int (pstate, 0, type_boolean (pstate)); }
+#line 2223 "ada-exp.c.tmp"
     break;
 
   case 92:
-
-/* Line 1455 of yacc.c  */
 #line 576 "ada-exp.y"
-    { error (_("NEW not implemented.")); }
+                        { error (_("NEW not implemented.")); }
+#line 2229 "ada-exp.c.tmp"
     break;
 
   case 93:
-
-/* Line 1455 of yacc.c  */
 #line 580 "ada-exp.y"
-    { (yyval.tval) = write_var_or_type (pstate, NULL, (yyvsp[(1) - (1)].sval)); }
+                                { (yyval.tval) = write_var_or_type (pstate, NULL, (yyvsp[0].sval)); }
+#line 2235 "ada-exp.c.tmp"
     break;
 
   case 94:
-
-/* Line 1455 of yacc.c  */
 #line 582 "ada-exp.y"
-    { (yyval.tval) = write_var_or_type (pstate, (yyvsp[(1) - (2)].bval), (yyvsp[(2) - (2)].sval)); }
+                                { (yyval.tval) = write_var_or_type (pstate, (yyvsp[-1].bval), (yyvsp[0].sval)); }
+#line 2241 "ada-exp.c.tmp"
     break;
 
   case 95:
-
-/* Line 1455 of yacc.c  */
 #line 584 "ada-exp.y"
-    { 
-			  (yyval.tval) = write_var_or_type (pstate, NULL, (yyvsp[(1) - (2)].sval));
+                        { 
+			  (yyval.tval) = write_var_or_type (pstate, NULL, (yyvsp[-1].sval));
 			  if ((yyval.tval) == NULL)
 			    write_exp_elt_opcode (pstate, UNOP_ADDR);
 			  else
 			    (yyval.tval) = lookup_pointer_type ((yyval.tval));
 			}
+#line 2253 "ada-exp.c.tmp"
     break;
 
   case 96:
-
-/* Line 1455 of yacc.c  */
 #line 592 "ada-exp.y"
-    { 
-			  (yyval.tval) = write_var_or_type (pstate, (yyvsp[(1) - (3)].bval), (yyvsp[(2) - (3)].sval));
+                        { 
+			  (yyval.tval) = write_var_or_type (pstate, (yyvsp[-2].bval), (yyvsp[-1].sval));
 			  if ((yyval.tval) == NULL)
 			    write_exp_elt_opcode (pstate, UNOP_ADDR);
 			  else
 			    (yyval.tval) = lookup_pointer_type ((yyval.tval));
 			}
+#line 2265 "ada-exp.c.tmp"
     break;
 
   case 97:
-
-/* Line 1455 of yacc.c  */
 #line 603 "ada-exp.y"
-    { (yyval.bval) = block_lookup (NULL, (yyvsp[(1) - (2)].sval).ptr); }
+                        { (yyval.bval) = block_lookup (NULL, (yyvsp[-1].sval).ptr); }
+#line 2271 "ada-exp.c.tmp"
     break;
 
   case 98:
-
-/* Line 1455 of yacc.c  */
 #line 605 "ada-exp.y"
-    { (yyval.bval) = block_lookup ((yyvsp[(1) - (3)].bval), (yyvsp[(2) - (3)].sval).ptr); }
+                        { (yyval.bval) = block_lookup ((yyvsp[-2].bval), (yyvsp[-1].sval).ptr); }
+#line 2277 "ada-exp.c.tmp"
     break;
 
   case 99:
-
-/* Line 1455 of yacc.c  */
 #line 610 "ada-exp.y"
-    {
+                        {
 			  write_exp_elt_opcode (pstate, OP_AGGREGATE);
-			  write_exp_elt_longcst (pstate, (yyvsp[(2) - (3)].lval));
+			  write_exp_elt_longcst (pstate, (yyvsp[-1].lval));
 			  write_exp_elt_opcode (pstate, OP_AGGREGATE);
 		        }
+#line 2287 "ada-exp.c.tmp"
     break;
 
   case 100:
-
-/* Line 1455 of yacc.c  */
 #line 618 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(1) - (1)].lval); }
+                                         { (yyval.lval) = (yyvsp[0].lval); }
+#line 2293 "ada-exp.c.tmp"
     break;
 
   case 101:
-
-/* Line 1455 of yacc.c  */
 #line 620 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_POSITIONAL);
-			  write_exp_elt_longcst (pstate, (yyvsp[(1) - (2)].lval));
+                        { write_exp_elt_opcode (pstate, OP_POSITIONAL);
+			  write_exp_elt_longcst (pstate, (yyvsp[-1].lval));
 			  write_exp_elt_opcode (pstate, OP_POSITIONAL);
-			  (yyval.lval) = (yyvsp[(1) - (2)].lval) + 1;
+			  (yyval.lval) = (yyvsp[-1].lval) + 1;
 			}
+#line 2303 "ada-exp.c.tmp"
     break;
 
   case 102:
-
-/* Line 1455 of yacc.c  */
 #line 626 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(1) - (2)].lval) + (yyvsp[(2) - (2)].lval); }
+                                         { (yyval.lval) = (yyvsp[-1].lval) + (yyvsp[0].lval); }
+#line 2309 "ada-exp.c.tmp"
     break;
 
   case 103:
-
-/* Line 1455 of yacc.c  */
 #line 631 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_POSITIONAL);
+                        { write_exp_elt_opcode (pstate, OP_POSITIONAL);
 			  write_exp_elt_longcst (pstate, 0);
 			  write_exp_elt_opcode (pstate, OP_POSITIONAL);
 			  (yyval.lval) = 1;
 			}
+#line 2319 "ada-exp.c.tmp"
     break;
 
   case 104:
-
-/* Line 1455 of yacc.c  */
 #line 637 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_POSITIONAL);
-			  write_exp_elt_longcst (pstate, (yyvsp[(1) - (3)].lval));
+                        { write_exp_elt_opcode (pstate, OP_POSITIONAL);
+			  write_exp_elt_longcst (pstate, (yyvsp[-2].lval));
 			  write_exp_elt_opcode (pstate, OP_POSITIONAL);
-			  (yyval.lval) = (yyvsp[(1) - (3)].lval) + 1; 
+			  (yyval.lval) = (yyvsp[-2].lval) + 1; 
 			}
+#line 2329 "ada-exp.c.tmp"
     break;
 
   case 105:
-
-/* Line 1455 of yacc.c  */
 #line 645 "ada-exp.y"
-    { (yyval.lval) = 1; }
+                                         { (yyval.lval) = 1; }
+#line 2335 "ada-exp.c.tmp"
     break;
 
   case 106:
-
-/* Line 1455 of yacc.c  */
 #line 646 "ada-exp.y"
-    { (yyval.lval) = 1; }
+                                         { (yyval.lval) = 1; }
+#line 2341 "ada-exp.c.tmp"
     break;
 
   case 107:
-
-/* Line 1455 of yacc.c  */
 #line 648 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(3) - (3)].lval) + 1; }
+                                         { (yyval.lval) = (yyvsp[0].lval) + 1; }
+#line 2347 "ada-exp.c.tmp"
     break;
 
   case 108:
-
-/* Line 1455 of yacc.c  */
 #line 652 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_OTHERS); }
+                        { write_exp_elt_opcode (pstate, OP_OTHERS); }
+#line 2353 "ada-exp.c.tmp"
     break;
 
   case 109:
-
-/* Line 1455 of yacc.c  */
 #line 657 "ada-exp.y"
-    {
+                        {
 			  write_exp_elt_opcode (pstate, OP_CHOICES);
-			  write_exp_elt_longcst (pstate, (yyvsp[(1) - (1)].lval));
+			  write_exp_elt_longcst (pstate, (yyvsp[0].lval));
 			  write_exp_elt_opcode (pstate, OP_CHOICES);
 		        }
+#line 2363 "ada-exp.c.tmp"
     break;
 
   case 110:
-
-/* Line 1455 of yacc.c  */
 #line 671 "ada-exp.y"
-    { write_name_assoc (pstate, (yyvsp[(1) - (2)].sval)); }
+                        { write_name_assoc (pstate, (yyvsp[-1].sval)); }
+#line 2369 "ada-exp.c.tmp"
     break;
 
   case 111:
-
-/* Line 1455 of yacc.c  */
 #line 672 "ada-exp.y"
-    { (yyval.lval) = 1; }
+                        { (yyval.lval) = 1; }
+#line 2375 "ada-exp.c.tmp"
     break;
 
   case 112:
-
-/* Line 1455 of yacc.c  */
 #line 674 "ada-exp.y"
-    { (yyval.lval) = 1; }
+                        { (yyval.lval) = 1; }
+#line 2381 "ada-exp.c.tmp"
     break;
 
   case 113:
-
-/* Line 1455 of yacc.c  */
 #line 676 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_DISCRETE_RANGE);
+                        { write_exp_elt_opcode (pstate, OP_DISCRETE_RANGE);
 			  write_exp_op_with_string (pstate, OP_NAME,
 						    empty_stoken);
 			}
+#line 2390 "ada-exp.c.tmp"
     break;
 
   case 114:
-
-/* Line 1455 of yacc.c  */
 #line 680 "ada-exp.y"
-    { (yyval.lval) = 1; }
+                        { (yyval.lval) = 1; }
+#line 2396 "ada-exp.c.tmp"
     break;
 
   case 115:
-
-/* Line 1455 of yacc.c  */
 #line 682 "ada-exp.y"
-    { write_name_assoc (pstate, (yyvsp[(1) - (2)].sval)); }
+                        { write_name_assoc (pstate, (yyvsp[-1].sval)); }
+#line 2402 "ada-exp.c.tmp"
     break;
 
   case 116:
-
-/* Line 1455 of yacc.c  */
 #line 683 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(4) - (4)].lval) + 1; }
+                                            { (yyval.lval) = (yyvsp[0].lval) + 1; }
+#line 2408 "ada-exp.c.tmp"
     break;
 
   case 117:
-
-/* Line 1455 of yacc.c  */
 #line 685 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(3) - (3)].lval) + 1; }
+                                            { (yyval.lval) = (yyvsp[0].lval) + 1; }
+#line 2414 "ada-exp.c.tmp"
     break;
 
   case 118:
-
-/* Line 1455 of yacc.c  */
 #line 687 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_DISCRETE_RANGE); }
+                        { write_exp_elt_opcode (pstate, OP_DISCRETE_RANGE); }
+#line 2420 "ada-exp.c.tmp"
     break;
 
   case 119:
-
-/* Line 1455 of yacc.c  */
 #line 688 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(6) - (6)].lval) + 1; }
+                                            { (yyval.lval) = (yyvsp[0].lval) + 1; }
+#line 2426 "ada-exp.c.tmp"
     break;
 
   case 120:
-
-/* Line 1455 of yacc.c  */
 #line 695 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND); }
+                        { write_exp_elt_opcode (pstate, UNOP_IND); }
+#line 2432 "ada-exp.c.tmp"
     break;
 
   case 121:
-
-/* Line 1455 of yacc.c  */
 #line 697 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+                        { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+#line 2438 "ada-exp.c.tmp"
     break;
 
   case 122:
-
-/* Line 1455 of yacc.c  */
 #line 699 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+                        { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+#line 2444 "ada-exp.c.tmp"
     break;
 
 
+#line 2448 "ada-exp.c.tmp"
 
-/* Line 1455 of yacc.c  */
-#line 2730 "ada-exp.c.tmp"
       default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -2826,14 +2521,12 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -2846,39 +2539,42 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -2891,6 +2587,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -2898,7 +2595,8 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+
+#if !defined yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2908,35 +2606,37 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
 
+  return yyresult;
+}
 
-/* Line 1675 of yacc.c  */
 #line 702 "ada-exp.y"
 
 
@@ -3345,7 +3045,7 @@ write_ambiguous_var (struct parser_state
 
   SYMBOL_DOMAIN (sym) = UNDEF_DOMAIN;
   sym->set_linkage_name (obstack_strndup (&temp_parse_space, name, len));
-  SYMBOL_LANGUAGE (sym) = language_ada;
+  sym->set_language (language_ada, nullptr);
 
   write_exp_elt_opcode (par_state, OP_VAR_VALUE);
   write_exp_elt_block (par_state, block);
@@ -3397,7 +3097,7 @@ get_symbol_field_type (struct symbol *sy
 
       fieldno = ada_get_field_index (type, field_name, 1);
       if (fieldno >= 0)
-        return TYPE_FIELD_TYPE (type, fieldno);
+        return type->field (fieldno).type ();
 
       subfield_name = field_name;
       while (*subfield_name != '\0' && *subfield_name != '.' 
@@ -3412,7 +3112,7 @@ get_symbol_field_type (struct symbol *sy
       if (fieldno < 0)
         return NULL;
 
-      type = TYPE_FIELD_TYPE (type, fieldno);
+      type = type->field (fieldno).type ();
       field_name = subfield_name;
     }
 
@@ -3625,7 +3325,7 @@ convert_char_literal (struct type *type,
   if (type == NULL)
     return val;
   type = check_typedef (type);
-  if (TYPE_CODE (type) != TYPE_CODE_ENUM)
+  if (type->code () != TYPE_CODE_ENUM)
     return val;
 
   if ((val >= 'a' && val <= 'z') || (val >= '0' && val <= '9'))
@@ -3633,7 +3333,7 @@ convert_char_literal (struct type *type,
   else
     xsnprintf (name, sizeof (name), "QU%02x", (int) val);
   size_t len = strlen (name);
-  for (f = 0; f < TYPE_NFIELDS (type); f += 1)
+  for (f = 0; f < type->num_fields (); f += 1)
     {
       /* Check the suffix because an enum constant in a package will
 	 have a name like "pkg__QUxx".  This is safe enough because we
@@ -3695,9 +3395,9 @@ type_system_address (struct parser_state
   return  type != NULL ? type : parse_type (par_state)->builtin_data_ptr;
 }
 
+void _initialize_ada_exp ();
 void
-_initialize_ada_exp (void)
+_initialize_ada_exp ()
 {
   obstack_init (&temp_parse_space);
 }
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-exp.y ./gdb/ada-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-exp.y	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ada-exp.y	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* YACC parser for Ada expressions, for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1106,7 +1106,7 @@ write_ambiguous_var (struct parser_state
 
   SYMBOL_DOMAIN (sym) = UNDEF_DOMAIN;
   sym->set_linkage_name (obstack_strndup (&temp_parse_space, name, len));
-  SYMBOL_LANGUAGE (sym) = language_ada;
+  sym->set_language (language_ada, nullptr);
 
   write_exp_elt_opcode (par_state, OP_VAR_VALUE);
   write_exp_elt_block (par_state, block);
@@ -1158,7 +1158,7 @@ get_symbol_field_type (struct symbol *sy
 
       fieldno = ada_get_field_index (type, field_name, 1);
       if (fieldno >= 0)
-        return TYPE_FIELD_TYPE (type, fieldno);
+        return type->field (fieldno).type ();
 
       subfield_name = field_name;
       while (*subfield_name != '\0' && *subfield_name != '.' 
@@ -1173,7 +1173,7 @@ get_symbol_field_type (struct symbol *sy
       if (fieldno < 0)
         return NULL;
 
-      type = TYPE_FIELD_TYPE (type, fieldno);
+      type = type->field (fieldno).type ();
       field_name = subfield_name;
     }
 
@@ -1386,7 +1386,7 @@ convert_char_literal (struct type *type,
   if (type == NULL)
     return val;
   type = check_typedef (type);
-  if (TYPE_CODE (type) != TYPE_CODE_ENUM)
+  if (type->code () != TYPE_CODE_ENUM)
     return val;
 
   if ((val >= 'a' && val <= 'z') || (val >= '0' && val <= '9'))
@@ -1394,7 +1394,7 @@ convert_char_literal (struct type *type,
   else
     xsnprintf (name, sizeof (name), "QU%02x", (int) val);
   size_t len = strlen (name);
-  for (f = 0; f < TYPE_NFIELDS (type); f += 1)
+  for (f = 0; f < type->num_fields (); f += 1)
     {
       /* Check the suffix because an enum constant in a package will
 	 have a name like "pkg__QUxx".  This is safe enough because we
@@ -1456,8 +1456,9 @@ type_system_address (struct parser_state
   return  type != NULL ? type : parse_type (par_state)->builtin_data_ptr;
 }
 
+void _initialize_ada_exp ();
 void
-_initialize_ada_exp (void)
+_initialize_ada_exp ()
 {
   obstack_init (&temp_parse_space);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-lang.c ./gdb/ada-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-lang.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ada-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ada language support routines for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -196,6 +196,8 @@ static LONGEST pos_atr (struct value *);
 
 static struct value *value_pos_atr (struct type *, struct value *);
 
+static struct value *val_atr (struct type *, LONGEST);
+
 static struct value *value_val_atr (struct type *, struct value *);
 
 static struct symbol *standard_lookup (const char *, const struct block *,
@@ -204,9 +206,6 @@ static struct symbol *standard_lookup (c
 static struct value *ada_search_struct_field (const char *, struct value *, int,
                                               struct type *);
 
-static struct value *ada_value_primitive_field (struct value *, int, int,
-                                                struct type *);
-
 static int find_struct_field (const char *, struct type *, int,
                               struct type **, int *, int *, int *, int *);
 
@@ -216,9 +215,6 @@ static int ada_resolve_function (struct
 
 static int ada_is_direct_array_type (struct type *);
 
-static void ada_language_arch_info (struct gdbarch *,
-				    struct language_arch_info *);
-
 static struct value *ada_index_struct_field (int, struct value *, int,
 					     struct type *);
 
@@ -332,23 +328,6 @@ static const char *known_auxiliary_funct
 static struct cmd_list_element *maint_set_ada_cmdlist;
 static struct cmd_list_element *maint_show_ada_cmdlist;
 
-/* Implement the "maintenance set ada" (prefix) command.  */
-
-static void
-maint_set_ada_cmd (const char *args, int from_tty)
-{
-  help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
-	     gdb_stdout);
-}
-
-/* Implement the "maintenance show ada" (prefix) command.  */
-
-static void
-maint_show_ada_cmd (const char *args, int from_tty)
-{
-  cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
-}
-
 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
 
 static bool ada_ignore_descriptive_types_p = false;
@@ -471,7 +450,7 @@ get_ada_pspace_data (struct program_spac
 static struct type *
 ada_typedef_target_type (struct type *type)
 {
-  while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+  while (type->code () == TYPE_CODE_TYPEDEF)
     type = TYPE_TARGET_TYPE (type);
   return type;
 }
@@ -509,33 +488,6 @@ add_angle_brackets (const char *str)
   return string_printf ("<%s>", str);
 }
 
-static const char *
-ada_get_gdb_completer_word_break_characters (void)
-{
-  return ada_completer_word_break_characters;
-}
-
-/* Print an array element index using the Ada syntax.  */
-
-static void
-ada_print_array_index (struct value *index_value, struct ui_file *stream,
-                       const struct value_print_options *options)
-{
-  LA_VALUE_PRINT (index_value, stream, options);
-  fprintf_filtered (stream, " => ");
-}
-
-/* la_watch_location_expression for Ada.  */
-
-static gdb::unique_xmalloc_ptr<char>
-ada_watch_location_expression (struct type *type, CORE_ADDR addr)
-{
-  type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
-  std::string name = type_to_string (type);
-  return gdb::unique_xmalloc_ptr<char>
-    (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
-}
-
 /* Assuming V points to an array of S objects,  make sure that it contains at
    least M objects, updating V and S as necessary.  */
 
@@ -591,13 +543,13 @@ ada_get_field_index (const struct type *
   int fieldno;
   struct type *struct_type = check_typedef ((struct type *) type);
 
-  for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
+  for (fieldno = 0; fieldno < struct_type->num_fields (); fieldno++)
     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
       return fieldno;
 
   if (!maybe_missing)
     error (_("Unable to find field %s in struct %s.  Aborting"),
-           field_name, TYPE_NAME (struct_type));
+           field_name, struct_type->name ());
 
   return -1;
 }
@@ -769,13 +721,27 @@ min_of_type (struct type *t)
 LONGEST
 ada_discrete_type_high_bound (struct type *type)
 {
-  type = resolve_dynamic_type (type, NULL, 0);
-  switch (TYPE_CODE (type))
+  type = resolve_dynamic_type (type, {}, 0);
+  switch (type->code ())
     {
     case TYPE_CODE_RANGE:
-      return TYPE_HIGH_BOUND (type);
+      {
+	const dynamic_prop &high = type->bounds ()->high;
+
+	if (high.kind () == PROP_CONST)
+	  return high.const_val ();
+	else
+	  {
+	    gdb_assert (high.kind () == PROP_UNDEFINED);
+
+	    /* This happens when trying to evaluate a type's dynamic bound
+	       without a live target.  There is nothing relevant for us to
+	       return here, so return 0.  */
+	    return 0;
+	  }
+      }
     case TYPE_CODE_ENUM:
-      return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
+      return TYPE_FIELD_ENUMVAL (type, type->num_fields () - 1);
     case TYPE_CODE_BOOL:
       return 1;
     case TYPE_CODE_CHAR:
@@ -790,11 +756,25 @@ ada_discrete_type_high_bound (struct typ
 LONGEST
 ada_discrete_type_low_bound (struct type *type)
 {
-  type = resolve_dynamic_type (type, NULL, 0);
-  switch (TYPE_CODE (type))
+  type = resolve_dynamic_type (type, {}, 0);
+  switch (type->code ())
     {
     case TYPE_CODE_RANGE:
-      return TYPE_LOW_BOUND (type);
+      {
+	const dynamic_prop &low = type->bounds ()->low;
+
+	if (low.kind () == PROP_CONST)
+	  return low.const_val ();
+	else
+	  {
+	    gdb_assert (low.kind () == PROP_UNDEFINED);
+
+	    /* This happens when trying to evaluate a type's dynamic bound
+	       without a live target.  There is nothing relevant for us to
+	       return here, so return 0.  */
+	    return 0;
+	  }
+      }
     case TYPE_CODE_ENUM:
       return TYPE_FIELD_ENUMVAL (type, 0);
     case TYPE_CODE_BOOL:
@@ -813,7 +793,7 @@ ada_discrete_type_low_bound (struct type
 static struct type *
 get_base_type (struct type *type)
 {
-  while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
+  while (type != NULL && type->code () == TYPE_CODE_RANGE)
     {
       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
         return type;
@@ -834,9 +814,9 @@ ada_get_decoded_value (struct value *val
 
   if (ada_is_array_descriptor_type (type)
       || (ada_is_constrained_packed_array_type (type)
-          && TYPE_CODE (type) != TYPE_CODE_PTR))
+          && type->code () != TYPE_CODE_PTR))
     {
-      if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
+      if (type->code () == TYPE_CODE_TYPEDEF)  /* array access type.  */
         value = ada_coerce_to_simple_array_ptr (value);
       else
         value = ada_coerce_to_simple_array (value);
@@ -896,18 +876,11 @@ ada_main_name (void)
 
   if (msym.minsym != NULL)
     {
-      CORE_ADDR main_program_name_addr;
-      int err_code;
-
-      main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
+      CORE_ADDR main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
       if (main_program_name_addr == 0)
         error (_("Invalid address for Ada main program name."));
 
-      target_read_string (main_program_name_addr, &main_program_name,
-                          1024, &err_code);
-
-      if (err_code != 0)
-        return NULL;
+      main_program_name = target_read_string (main_program_name_addr, 1024);
       return main_program_name.get ();
     }
 
@@ -1016,17 +989,17 @@ ada_encode (const char *decoded)
    to next call.  */
 
 static char *
-ada_fold_name (const char *name)
+ada_fold_name (gdb::string_view name)
 {
   static char *fold_buffer = NULL;
   static size_t fold_buffer_size = 0;
 
-  int len = strlen (name);
+  int len = name.size ();
   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
 
   if (name[0] == '\'')
     {
-      strncpy (fold_buffer, name + 1, len - 2);
+      strncpy (fold_buffer, name.data () + 1, len - 2);
       fold_buffer[len - 2] = '\000';
     }
   else
@@ -1376,7 +1349,7 @@ ada_decode_symbol (const struct general_
 
   if (!gsymbol->ada_mangled)
     {
-      std::string decoded = ada_decode (gsymbol->name);
+      std::string decoded = ada_decode (gsymbol->linkage_name ());
       struct obstack *obstack = gsymbol->language_specific.obstack;
 
       gsymbol->ada_mangled = 1;
@@ -1408,45 +1381,6 @@ ada_la_decode (const char *encoded, int
   return xstrdup (ada_decode (encoded).c_str ());
 }
 
-/* Implement la_sniff_from_mangled_name for Ada.  */
-
-static int
-ada_sniff_from_mangled_name (const char *mangled, char **out)
-{
-  std::string demangled = ada_decode (mangled);
-
-  *out = NULL;
-
-  if (demangled != mangled && demangled[0] != '<')
-    {
-      /* Set the gsymbol language to Ada, but still return 0.
-	 Two reasons for that:
-
-	 1. For Ada, we prefer computing the symbol's decoded name
-	 on the fly rather than pre-compute it, in order to save
-	 memory (Ada projects are typically very large).
-
-	 2. There are some areas in the definition of the GNAT
-	 encoding where, with a bit of bad luck, we might be able
-	 to decode a non-Ada symbol, generating an incorrect
-	 demangled name (Eg: names ending with "TB" for instance
-	 are identified as task bodies and so stripped from
-	 the decoded name returned).
-
-	 Returning 1, here, but not setting *DEMANGLED, helps us get a
-	 little bit of the best of both worlds.  Because we're last,
-	 we should not affect any of the other languages that were
-	 able to demangle the symbol before us; we get to correctly
-	 tag Ada symbols as such; and even if we incorrectly tagged a
-	 non-Ada symbol, which should be rare, any routing through the
-	 Ada language should be transparent (Ada tries to behave much
-	 like C/C++ with non-Ada symbols).  */
-      return 1;
-    }
-
-  return 0;
-}
-
 
 
                                 /* Arrays */
@@ -1481,7 +1415,7 @@ ada_fixup_array_indexes_type (struct typ
 
   if (index_desc_type == NULL)
     return;
-  gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
+  gdb_assert (index_desc_type->num_fields () > 0);
 
   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
      to check one field only, no need to check them all).  If not, return
@@ -1490,34 +1424,22 @@ ada_fixup_array_indexes_type (struct typ
      If our INDEX_DESC_TYPE was generated using the older encoding,
      the field type should be a meaningless integer type whose name
      is not equal to the field name.  */
-  if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
-      && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
+  if (index_desc_type->field (0).type ()->name () != NULL
+      && strcmp (index_desc_type->field (0).type ()->name (),
                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
     return;
 
   /* Fixup each field of INDEX_DESC_TYPE.  */
-  for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
+  for (i = 0; i < index_desc_type->num_fields (); i++)
    {
      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
 
      if (raw_type)
-       TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
+       index_desc_type->field (i).set_type (raw_type);
    }
 }
 
-/* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
-
-static const char *bound_name[] = {
-  "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
-  "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
-};
-
-/* Maximum number of array dimensions we are prepared to handle.  */
-
-#define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
-
-
 /* The desc_* routines return primitive portions of array descriptors
    (fat pointers).  */
 
@@ -1530,12 +1452,12 @@ desc_base_type (struct type *type)
   if (type == NULL)
     return NULL;
   type = ada_check_typedef (type);
-  if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+  if (type->code () == TYPE_CODE_TYPEDEF)
     type = ada_typedef_target_type (type);
 
   if (type != NULL
-      && (TYPE_CODE (type) == TYPE_CODE_PTR
-          || TYPE_CODE (type) == TYPE_CODE_REF))
+      && (type->code () == TYPE_CODE_PTR
+          || type->code () == TYPE_CODE_REF))
     return ada_check_typedef (TYPE_TARGET_TYPE (type));
   else
     return type;
@@ -1583,7 +1505,7 @@ thin_data_pntr (struct value *val)
 
   data_type = lookup_pointer_type (data_type);
 
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  if (type->code () == TYPE_CODE_PTR)
     return value_cast (data_type, value_copy (val));
   else
     return value_from_longest (data_type, value_address (val));
@@ -1595,7 +1517,7 @@ static int
 is_thick_pntr (struct type *type)
 {
   type = desc_base_type (type);
-  return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
+  return (type != NULL && type->code () == TYPE_CODE_STRUCT
           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
 }
 
@@ -1620,7 +1542,7 @@ desc_bounds_type (struct type *type)
       if (r != NULL)
         return ada_check_typedef (r);
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  else if (type->code () == TYPE_CODE_STRUCT)
     {
       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
       if (r != NULL)
@@ -1649,7 +1571,7 @@ desc_bounds (struct value *arr)
       /* NOTE: The following calculation is not really kosher, but
          since desc_type is an XVE-encoded type (and shouldn't be),
          the correct calculation is a real pain.  FIXME (and fix GCC).  */
-      if (TYPE_CODE (type) == TYPE_CODE_PTR)
+      if (type->code () == TYPE_CODE_PTR)
         addr = value_as_long (arr);
       else
         addr = value_address (arr);
@@ -1666,7 +1588,7 @@ desc_bounds (struct value *arr)
       struct type *p_bounds_type = value_type (p_bounds);
 
       if (p_bounds_type
-	  && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
+	  && p_bounds_type->code () == TYPE_CODE_PTR)
 	{
 	  struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
 
@@ -1704,7 +1626,7 @@ fat_pntr_bounds_bitsize (struct type *ty
   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
     return TYPE_FIELD_BITSIZE (type, 1);
   else
-    return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
+    return 8 * TYPE_LENGTH (ada_check_typedef (type->field (1).type ()));
 }
 
 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
@@ -1719,13 +1641,13 @@ desc_data_target_type (struct type *type
 
   /* NOTE: The following is bogus; see comment in desc_bounds.  */
   if (is_thin_pntr (type))
-    return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
+    return desc_base_type (thin_descriptor_type (type)->field (1).type ());
   else if (is_thick_pntr (type))
     {
       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
 
       if (data_type
-	  && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
+	  && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
 	return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
     }
 
@@ -1770,7 +1692,7 @@ fat_pntr_data_bitsize (struct type *type
   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
     return TYPE_FIELD_BITSIZE (type, 0);
   else
-    return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
+    return TARGET_CHAR_BIT * TYPE_LENGTH (type->field (0).type ());
 }
 
 /* If BOUNDS is an array-bounds structure (or pointer to one), return
@@ -1780,7 +1702,10 @@ fat_pntr_data_bitsize (struct type *type
 static struct value *
 desc_one_bound (struct value *bounds, int i, int which)
 {
-  return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
+  char bound_name[20];
+  xsnprintf (bound_name, sizeof (bound_name), "%cB%d",
+	     which ? 'U' : 'L', i - 1);
+  return value_struct_elt (&bounds, NULL, bound_name, NULL,
                            _("Bad GNAT array descriptor bounds"));
 }
 
@@ -1806,7 +1731,7 @@ desc_bound_bitsize (struct type *type, i
   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
   else
-    return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
+    return 8 * TYPE_LENGTH (type->field (2 * i + which - 2).type ());
 }
 
 /* If TYPE is the type of an array-bounds structure, the type of its
@@ -1817,8 +1742,12 @@ desc_index_type (struct type *type, int
 {
   type = desc_base_type (type);
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
-    return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
+  if (type->code () == TYPE_CODE_STRUCT)
+    {
+      char bound_name[20];
+      xsnprintf (bound_name, sizeof (bound_name), "LB%d", i - 1);
+      return lookup_struct_elt_type (type, bound_name, 1);
+    }
   else
     return NULL;
 }
@@ -1832,7 +1761,7 @@ desc_arity (struct type *type)
   type = desc_base_type (type);
 
   if (type != NULL)
-    return TYPE_NFIELDS (type) / 2;
+    return type->num_fields () / 2;
   return 0;
 }
 
@@ -1846,7 +1775,7 @@ ada_is_direct_array_type (struct type *t
   if (type == NULL)
     return 0;
   type = ada_check_typedef (type);
-  return (TYPE_CODE (type) == TYPE_CODE_ARRAY
+  return (type->code () == TYPE_CODE_ARRAY
           || ada_is_array_descriptor_type (type));
 }
 
@@ -1856,9 +1785,9 @@ ada_is_direct_array_type (struct type *t
 static int
 ada_is_array_type (struct type *type)
 {
-  while (type != NULL 
-	 && (TYPE_CODE (type) == TYPE_CODE_PTR 
-	     || TYPE_CODE (type) == TYPE_CODE_REF))
+  while (type != NULL
+	 && (type->code () == TYPE_CODE_PTR
+	     || type->code () == TYPE_CODE_REF))
     type = TYPE_TARGET_TYPE (type);
   return ada_is_direct_array_type (type);
 }
@@ -1871,10 +1800,10 @@ ada_is_simple_array_type (struct type *t
   if (type == NULL)
     return 0;
   type = ada_check_typedef (type);
-  return (TYPE_CODE (type) == TYPE_CODE_ARRAY
-          || (TYPE_CODE (type) == TYPE_CODE_PTR
-              && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
-                 == TYPE_CODE_ARRAY));
+  return (type->code () == TYPE_CODE_ARRAY
+	  || (type->code () == TYPE_CODE_PTR
+	      && (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ()
+		  == TYPE_CODE_ARRAY)));
 }
 
 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
@@ -1888,7 +1817,7 @@ ada_is_array_descriptor_type (struct typ
     return 0;
   type = ada_check_typedef (type);
   return (data_type != NULL
-	  && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
+	  && data_type->code () == TYPE_CODE_ARRAY
 	  && desc_arity (desc_bounds_type (type)) > 0);
 }
 
@@ -1902,7 +1831,7 @@ ada_is_bogus_array_descriptor (struct ty
 {
   return
     type != NULL
-    && TYPE_CODE (type) == TYPE_CODE_STRUCT
+    && type->code () == TYPE_CODE_STRUCT
     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
     && !ada_is_array_descriptor_type (type);
@@ -2098,7 +2027,7 @@ decode_packed_array_bitsize (struct type
   /* Access to arrays implemented as fat pointers are encoded as a typedef
      of the fat pointer type.  We need the name of the fat pointer type
      to do the decoding, so strip the typedef layer.  */
-  if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+  if (type->code () == TYPE_CODE_TYPEDEF)
     type = ada_typedef_target_type (type);
 
   raw_name = ada_type_name (ada_check_typedef (type));
@@ -2148,15 +2077,15 @@ constrained_packed_array_type (struct ty
   LONGEST low_bound, high_bound;
 
   type = ada_check_typedef (type);
-  if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
+  if (type->code () != TYPE_CODE_ARRAY)
     return type;
 
   index_type_desc = ada_find_parallel_type (type, "___XA");
   if (index_type_desc)
-    index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
+    index_type = to_fixed_range_type (index_type_desc->field (0).type (),
 				      NULL);
   else
-    index_type = TYPE_INDEX_TYPE (type);
+    index_type = type->index_type ();
 
   new_type = alloc_type_copy (type);
   new_elt_type =
@@ -2164,11 +2093,11 @@ constrained_packed_array_type (struct ty
 				   elt_bits);
   create_array_type (new_type, new_elt_type, index_type);
   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
-  TYPE_NAME (new_type) = ada_type_name (type);
+  new_type->set_name (ada_type_name (type));
 
-  if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
+  if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
        && is_dynamic_type (check_typedef (index_type)))
-      || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
+      || !get_discrete_bounds (index_type, &low_bound, &high_bound))
     low_bound = high_bound = 0;
   if (high_bound < low_bound)
     *elt_bits = TYPE_LENGTH (new_type) = 0;
@@ -2217,7 +2146,7 @@ decode_constrained_packed_array_type (st
     }
   shadow_type = check_typedef (shadow_type);
 
-  if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
+  if (shadow_type->code () != TYPE_CODE_ARRAY)
     {
       lim_warning (_("could not understand bounds "
 		     "information on packed array"));
@@ -2247,7 +2176,7 @@ decode_constrained_packed_array (struct
      and "value_ind" routines to perform the dereferencing, as opposed
      to using "ada_coerce_ref" or "ada_value_ind".  */
   arr = coerce_ref (arr);
-  if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
+  if (ada_check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
     arr = value_ind (arr);
 
   type = decode_constrained_packed_array_type (value_type (arr));
@@ -2303,18 +2232,18 @@ value_subscript_packed (struct value *ar
   elt_type = ada_check_typedef (value_type (arr));
   for (i = 0; i < arity; i += 1)
     {
-      if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
+      if (elt_type->code () != TYPE_CODE_ARRAY
           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
         error
           (_("attempt to do packed indexing of "
 	     "something other than a packed array"));
       else
         {
-          struct type *range_type = TYPE_INDEX_TYPE (elt_type);
+          struct type *range_type = elt_type->index_type ();
           LONGEST lowerbound, upperbound;
           LONGEST idx;
 
-          if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
+          if (!get_discrete_bounds (range_type, &lowerbound, &upperbound))
             {
               lim_warning (_("don't know bounds of array"));
               lowerbound = upperbound = 0;
@@ -2342,14 +2271,14 @@ value_subscript_packed (struct value *ar
 static int
 has_negatives (struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     default:
       return 0;
     case TYPE_CODE_INT:
       return !TYPE_UNSIGNED (type);
     case TYPE_CODE_RANGE:
-      return TYPE_LOW_BOUND (type) - TYPE_RANGE_DATA (type)->bias < 0;
+      return type->bounds ()->low.const_val () - type->bounds ()->bias < 0;
     }
 }
 
@@ -2525,7 +2454,7 @@ ada_value_primitive_packed_val (struct v
 			        staging.data (), staging.size (),
 				is_big_endian, has_negatives (type),
 				is_scalar);
-      type = resolve_dynamic_type (type, staging.data (), 0);
+      type = resolve_dynamic_type (type, staging, 0);
       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
 	{
 	  /* This happens when the length of the object is dynamic,
@@ -2627,8 +2556,8 @@ ada_value_assign (struct value *toval, s
 
   if (VALUE_LVAL (toval) == lval_memory
       && bits > 0
-      && (TYPE_CODE (type) == TYPE_CODE_FLT
-          || TYPE_CODE (type) == TYPE_CODE_STRUCT))
+      && (type->code () == TYPE_CODE_FLT
+          || type->code () == TYPE_CODE_STRUCT))
     {
       int len = (value_bitpos (toval)
 		 + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
@@ -2637,7 +2566,7 @@ ada_value_assign (struct value *toval, s
       struct value *val;
       CORE_ADDR to_addr = value_address (toval);
 
-      if (TYPE_CODE (type) == TYPE_CODE_FLT)
+      if (type->code () == TYPE_CODE_FLT)
         fromval = value_cast (type, fromval);
 
       read_memory (to_addr, buffer, len);
@@ -2718,7 +2647,7 @@ value_assign_to_component (struct value
 bool
 ada_is_access_to_unconstrained_array (struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
+  return (type->code () == TYPE_CODE_TYPEDEF
 	  && is_thick_pntr (ada_typedef_target_type (type)));
 }
 
@@ -2736,7 +2665,7 @@ ada_value_subscript (struct value *arr,
   elt = ada_coerce_to_simple_array (arr);
 
   elt_type = ada_check_typedef (value_type (elt));
-  if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
+  if (elt_type->code () == TYPE_CODE_ARRAY
       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
     return value_subscript_packed (elt, arity, ind);
 
@@ -2744,13 +2673,13 @@ ada_value_subscript (struct value *arr,
     {
       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
 
-      if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
+      if (elt_type->code () != TYPE_CODE_ARRAY)
         error (_("too many subscripts (%d expected)"), k);
 
       elt = value_subscript (elt, pos_atr (ind[k]));
 
       if (ada_is_access_to_unconstrained_array (saved_elt_type)
-	  && TYPE_CODE (value_type (elt)) != TYPE_CODE_TYPEDEF)
+	  && value_type (elt)->code () != TYPE_CODE_TYPEDEF)
 	{
 	  /* The element is a typedef to an unconstrained array,
 	     except that the value_subscript call stripped the
@@ -2793,22 +2722,20 @@ ada_value_ptr_subscript (struct value *a
   struct type *type
     = check_typedef (value_enclosing_type (array_ind));
 
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY
+  if (type->code () == TYPE_CODE_ARRAY
       && TYPE_FIELD_BITSIZE (type, 0) > 0)
     return value_subscript_packed (array_ind, arity, ind);
 
   for (k = 0; k < arity; k += 1)
     {
       LONGEST lwb, upb;
-      struct value *lwb_value;
 
-      if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
+      if (type->code () != TYPE_CODE_ARRAY)
         error (_("too many subscripts (%d expected)"), k);
       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
                         value_copy (arr));
-      get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
-      lwb_value = value_from_longest (value_type(ind[k]), lwb);
-      arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
+      get_discrete_bounds (type->index_type (), &lwb, &upb);
+      arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
       type = TYPE_TARGET_TYPE (type);
     }
 
@@ -2824,19 +2751,21 @@ ada_value_slice_from_ptr (struct value *
                           int low, int high)
 {
   struct type *type0 = ada_check_typedef (type);
-  struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
+  struct type *base_index_type = TYPE_TARGET_TYPE (type0->index_type ());
   struct type *index_type
     = create_static_range_type (NULL, base_index_type, low, high);
   struct type *slice_type = create_array_type_with_stride
 			      (NULL, TYPE_TARGET_TYPE (type0), index_type,
-			       get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
+			       type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
 			       TYPE_FIELD_BITSIZE (type0, 0));
-  int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
-  LONGEST base_low_pos, low_pos;
+  int base_low =  ada_discrete_type_low_bound (type0->index_type ());
+  gdb::optional<LONGEST> base_low_pos, low_pos;
   CORE_ADDR base;
 
-  if (!discrete_position (base_index_type, low, &low_pos)
-      || !discrete_position (base_index_type, base_low, &base_low_pos))
+  low_pos = discrete_position (base_index_type, low);
+  base_low_pos = discrete_position (base_index_type, base_low);
+
+  if (!low_pos.has_value () || !base_low_pos.has_value ())
     {
       warning (_("unable to get positions in slice, use bounds instead"));
       low_pos = low;
@@ -2844,7 +2773,7 @@ ada_value_slice_from_ptr (struct value *
     }
 
   base = value_as_address (array_ptr)
-    + ((low_pos - base_low_pos)
+    + ((*low_pos - *base_low_pos)
        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
   return value_at_lazy (slice_type, base);
 }
@@ -2854,17 +2783,20 @@ static struct value *
 ada_value_slice (struct value *array, int low, int high)
 {
   struct type *type = ada_check_typedef (value_type (array));
-  struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
+  struct type *base_index_type = TYPE_TARGET_TYPE (type->index_type ());
   struct type *index_type
-    = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
+    = create_static_range_type (NULL, type->index_type (), low, high);
   struct type *slice_type = create_array_type_with_stride
 			      (NULL, TYPE_TARGET_TYPE (type), index_type,
-			       get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
+			       type->dyn_prop (DYN_PROP_BYTE_STRIDE),
 			       TYPE_FIELD_BITSIZE (type, 0));
-  LONGEST low_pos, high_pos;
+  gdb::optional<LONGEST> low_pos, high_pos;
 
-  if (!discrete_position (base_index_type, low, &low_pos)
-      || !discrete_position (base_index_type, high, &high_pos))
+
+  low_pos = discrete_position (base_index_type, low);
+  high_pos = discrete_position (base_index_type, high);
+
+  if (!low_pos.has_value () || !high_pos.has_value ())
     {
       warning (_("unable to get positions in slice, use bounds instead"));
       low_pos = low;
@@ -2872,7 +2804,7 @@ ada_value_slice (struct value *array, in
     }
 
   return value_cast (slice_type,
-		     value_slice (array, low, high_pos - low_pos + 1));
+		     value_slice (array, low, *high_pos - *low_pos + 1));
 }
 
 /* If type is a record type in the form of a standard GNAT array
@@ -2891,10 +2823,10 @@ ada_array_arity (struct type *type)
   type = desc_base_type (type);
 
   arity = 0;
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     return desc_arity (desc_bounds_type (type));
   else
-    while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+    while (type->code () == TYPE_CODE_ARRAY)
       {
         arity += 1;
         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
@@ -2913,7 +2845,7 @@ ada_array_element_type (struct type *typ
 {
   type = desc_base_type (type);
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     {
       int k;
       struct type *p_array_type;
@@ -2934,9 +2866,9 @@ ada_array_element_type (struct type *typ
         }
       return p_array_type;
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  else if (type->code () == TYPE_CODE_ARRAY)
     {
-      while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
+      while (nindices != 0 && type->code () == TYPE_CODE_ARRAY)
         {
           type = TYPE_TARGET_TYPE (type);
           nindices -= 1;
@@ -2969,11 +2901,11 @@ ada_index_type (struct type *type, int n
 
       for (i = 1; i < n; i += 1)
         type = TYPE_TARGET_TYPE (type);
-      result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
+      result_type = TYPE_TARGET_TYPE (type->index_type ());
       /* FIXME: The stabs type r(0,0);bound;bound in an array type
          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
          perhaps stabsread.c would make more sense.  */
-      if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
+      if (result_type && result_type->code () == TYPE_CODE_UNDEF)
         result_type = NULL;
     }
   else
@@ -3006,7 +2938,7 @@ ada_array_bound_from_type (struct type *
   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
     return (LONGEST) - which;
 
-  if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
+  if (arr_type->code () == TYPE_CODE_PTR)
     type = TYPE_TARGET_TYPE (arr_type);
   else
     type = arr_type;
@@ -3025,7 +2957,7 @@ ada_array_bound_from_type (struct type *
     }
 
   if (index_type_desc != NULL)
-    index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
+    index_type = to_fixed_range_type (index_type_desc->field (n - 1).type (),
 				      NULL);
   else
     {
@@ -3034,7 +2966,7 @@ ada_array_bound_from_type (struct type *
       for (i = 1; i < n; i++)
 	elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
 
-      index_type = TYPE_INDEX_TYPE (elt_type);
+      index_type = elt_type->index_type ();
     }
 
   return
@@ -3053,7 +2985,7 @@ ada_array_bound (struct value *arr, int
 {
   struct type *arr_type;
 
-  if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
+  if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
     arr = value_ind (arr);
   arr_type = value_enclosing_type (arr);
 
@@ -3077,7 +3009,7 @@ ada_array_length (struct value *arr, int
   struct type *arr_type, *index_type;
   int low, high;
 
-  if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
+  if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
     arr = value_ind (arr);
   arr_type = value_enclosing_type (arr);
 
@@ -3100,7 +3032,7 @@ ada_array_length (struct value *arr, int
   if (index_type != NULL)
     {
       struct type *base_type;
-      if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
+      if (index_type->code () == TYPE_CODE_RANGE)
 	base_type = TYPE_TARGET_TYPE (index_type);
       else
 	base_type = index_type;
@@ -3121,7 +3053,7 @@ empty_array (struct type *arr_type, int
   struct type *arr_type0 = ada_check_typedef (arr_type);
   struct type *index_type
     = create_static_range_type
-        (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
+        (NULL, TYPE_TARGET_TYPE (arr_type0->index_type ()), low,
 	 high < low ? low - 1 : high);
   struct type *elt_type = ada_array_element_type (arr_type0, 1);
 
@@ -3228,25 +3160,25 @@ ada_print_symbol_signature (struct ui_fi
   fprintf_filtered (stream, "%s", sym->print_name ());
   if (!print_signatures
       || type == NULL
-      || TYPE_CODE (type) != TYPE_CODE_FUNC)
+      || type->code () != TYPE_CODE_FUNC)
     return;
 
-  if (TYPE_NFIELDS (type) > 0)
+  if (type->num_fields () > 0)
     {
       int i;
 
       fprintf_filtered (stream, " (");
-      for (i = 0; i < TYPE_NFIELDS (type); ++i)
+      for (i = 0; i < type->num_fields (); ++i)
 	{
 	  if (i > 0)
 	    fprintf_filtered (stream, "; ");
-	  ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
+	  ada_print_type (type->field (i).type (), NULL, stream, -1, 0,
 			  flags);
 	}
       fprintf_filtered (stream, ")");
     }
   if (TYPE_TARGET_TYPE (type) != NULL
-      && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+      && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
     {
       fprintf_filtered (stream, " return ");
       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
@@ -3409,7 +3341,7 @@ See set/show multiple-symbol."));
           int is_enumeral =
             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
              && SYMBOL_TYPE (syms[i].symbol) != NULL
-             && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
+             && SYMBOL_TYPE (syms[i].symbol)->code () == TYPE_CODE_ENUM);
 	  struct symtab *symtab = NULL;
 
 	  if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
@@ -3425,7 +3357,7 @@ See set/show multiple-symbol."));
 			       SYMBOL_LINE (syms[i].symbol));
 	    }
           else if (is_enumeral
-                   && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
+                   && SYMBOL_TYPE (syms[i].symbol)->name () != NULL)
             {
               printf_filtered (("[%d] "), i + first_choice);
               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
@@ -3461,28 +3393,6 @@ See set/show multiple-symbol."));
   return n_chosen;
 }
 
-/* Same as evaluate_type (*EXP), but resolves ambiguous symbol
-   references (marked by OP_VAR_VALUE nodes in which the symbol has an
-   undefined namespace) and converts operators that are
-   user-defined into appropriate function calls.  If CONTEXT_TYPE is
-   non-null, it provides a preferred result type [at the moment, only
-   type void has any effect---causing procedures to be preferred over
-   functions in calls].  A null CONTEXT_TYPE indicates that a non-void
-   return type is preferred.  May change (expand) *EXP.  */
-
-static void
-resolve (expression_up *expp, int void_context_p, int parse_completion,
-	 innermost_block_tracker *tracker)
-{
-  struct type *context_type = NULL;
-  int pc = 0;
-
-  if (void_context_p)
-    context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
-
-  resolve_subexp (expp, &pc, 1, context_type, parse_completion, tracker);
-}
-
 /* Resolve the operator of the subexpression beginning at
    position *POS of *EXPP.  "Resolving" consists of replacing
    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
@@ -3745,7 +3655,7 @@ resolve_subexp (expression_up *expp, int
         }
 
       if (deprocedure_p
-          && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
+          && (SYMBOL_TYPE (exp->elts[pc + 2].symbol)->code ()
               == TYPE_CODE_FUNC))
         {
           replace_operator_with_call (expp, pc, 0, 4,
@@ -3858,17 +3768,17 @@ ada_type_match (struct type *ftype, stru
   ftype = ada_check_typedef (ftype);
   atype = ada_check_typedef (atype);
 
-  if (TYPE_CODE (ftype) == TYPE_CODE_REF)
+  if (ftype->code () == TYPE_CODE_REF)
     ftype = TYPE_TARGET_TYPE (ftype);
-  if (TYPE_CODE (atype) == TYPE_CODE_REF)
+  if (atype->code () == TYPE_CODE_REF)
     atype = TYPE_TARGET_TYPE (atype);
 
-  switch (TYPE_CODE (ftype))
+  switch (ftype->code ())
     {
     default:
-      return TYPE_CODE (ftype) == TYPE_CODE (atype);
+      return ftype->code () == atype->code ();
     case TYPE_CODE_PTR:
-      if (TYPE_CODE (atype) == TYPE_CODE_PTR)
+      if (atype->code () == TYPE_CODE_PTR)
         return ada_type_match (TYPE_TARGET_TYPE (ftype),
                                TYPE_TARGET_TYPE (atype), 0);
       else
@@ -3877,7 +3787,7 @@ ada_type_match (struct type *ftype, stru
     case TYPE_CODE_INT:
     case TYPE_CODE_ENUM:
     case TYPE_CODE_RANGE:
-      switch (TYPE_CODE (atype))
+      switch (atype->code ())
         {
         case TYPE_CODE_INT:
         case TYPE_CODE_ENUM:
@@ -3888,20 +3798,20 @@ ada_type_match (struct type *ftype, stru
         }
 
     case TYPE_CODE_ARRAY:
-      return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
+      return (atype->code () == TYPE_CODE_ARRAY
               || ada_is_array_descriptor_type (atype));
 
     case TYPE_CODE_STRUCT:
       if (ada_is_array_descriptor_type (ftype))
-        return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
+        return (atype->code () == TYPE_CODE_ARRAY
                 || ada_is_array_descriptor_type (atype));
       else
-        return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
+        return (atype->code () == TYPE_CODE_STRUCT
                 && !ada_is_array_descriptor_type (atype));
 
     case TYPE_CODE_UNION:
     case TYPE_CODE_FLT:
-      return (TYPE_CODE (atype) == TYPE_CODE (ftype));
+      return (atype->code () == ftype->code ());
     }
 }
 
@@ -3917,12 +3827,12 @@ ada_args_match (struct symbol *func, str
   struct type *func_type = SYMBOL_TYPE (func);
 
   if (SYMBOL_CLASS (func) == LOC_CONST
-      && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
+      && func_type->code () == TYPE_CODE_ENUM)
     return (n_actuals == 0);
-  else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
+  else if (func_type == NULL || func_type->code () != TYPE_CODE_FUNC)
     return 0;
 
-  if (TYPE_NFIELDS (func_type) != n_actuals)
+  if (func_type->num_fields () != n_actuals)
     return 0;
 
   for (i = 0; i < n_actuals; i += 1)
@@ -3931,8 +3841,7 @@ ada_args_match (struct symbol *func, str
         return 0;
       else
         {
-          struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
-								   i));
+          struct type *ftype = ada_check_typedef (func_type->field (i).type ());
           struct type *atype = ada_check_typedef (value_type (actuals[i]));
 
           if (!ada_type_match (ftype, atype, 1))
@@ -3955,7 +3864,7 @@ return_match (struct type *func_type, st
   if (func_type == NULL)
     return 1;
 
-  if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
+  if (func_type->code () == TYPE_CODE_FUNC)
     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
   else
     return_type = get_base_type (func_type);
@@ -3964,12 +3873,12 @@ return_match (struct type *func_type, st
 
   context_type = get_base_type (context_type);
 
-  if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
+  if (return_type->code () == TYPE_CODE_ENUM)
     return context_type == NULL || return_type == context_type;
   else if (context_type == NULL)
-    return TYPE_CODE (return_type) != TYPE_CODE_VOID;
+    return return_type->code () != TYPE_CODE_VOID;
   else
-    return TYPE_CODE (return_type) == TYPE_CODE (context_type);
+    return return_type->code () == context_type->code ();
 }
 
 
@@ -4074,7 +3983,7 @@ numeric_type_p (struct type *type)
     return 0;
   else
     {
-      switch (TYPE_CODE (type))
+      switch (type->code ())
         {
         case TYPE_CODE_INT:
         case TYPE_CODE_FLT:
@@ -4097,7 +4006,7 @@ integer_type_p (struct type *type)
     return 0;
   else
     {
-      switch (TYPE_CODE (type))
+      switch (type->code ())
         {
         case TYPE_CODE_INT:
           return 1;
@@ -4119,7 +4028,7 @@ scalar_type_p (struct type *type)
     return 0;
   else
     {
-      switch (TYPE_CODE (type))
+      switch (type->code ())
         {
         case TYPE_CODE_INT:
         case TYPE_CODE_RANGE:
@@ -4141,7 +4050,7 @@ discrete_type_p (struct type *type)
     return 0;
   else
     {
-      switch (TYPE_CODE (type))
+      switch (type->code ())
         {
         case TYPE_CODE_INT:
         case TYPE_CODE_RANGE:
@@ -4362,26 +4271,26 @@ ada_value_struct_elt (struct value *arg,
 
   v = NULL;
   t1 = t = ada_check_typedef (value_type (arg));
-  if (TYPE_CODE (t) == TYPE_CODE_REF)
+  if (t->code () == TYPE_CODE_REF)
     {
       t1 = TYPE_TARGET_TYPE (t);
       if (t1 == NULL)
 	goto BadValue;
       t1 = ada_check_typedef (t1);
-      if (TYPE_CODE (t1) == TYPE_CODE_PTR)
+      if (t1->code () == TYPE_CODE_PTR)
         {
           arg = coerce_ref (arg);
           t = t1;
         }
     }
 
-  while (TYPE_CODE (t) == TYPE_CODE_PTR)
+  while (t->code () == TYPE_CODE_PTR)
     {
       t1 = TYPE_TARGET_TYPE (t);
       if (t1 == NULL)
 	goto BadValue;
       t1 = ada_check_typedef (t1);
-      if (TYPE_CODE (t1) == TYPE_CODE_PTR)
+      if (t1->code () == TYPE_CODE_PTR)
         {
           arg = value_ind (arg);
           t = t1;
@@ -4390,7 +4299,7 @@ ada_value_struct_elt (struct value *arg,
         break;
     }
 
-  if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
+  if (t1->code () != TYPE_CODE_STRUCT && t1->code () != TYPE_CODE_UNION)
     goto BadValue;
 
   if (t1 == t)
@@ -4401,7 +4310,7 @@ ada_value_struct_elt (struct value *arg,
       struct type *field_type;
       CORE_ADDR address;
 
-      if (TYPE_CODE (t) == TYPE_CODE_PTR)
+      if (t->code () == TYPE_CODE_PTR)
 	address = value_address (ada_value_ind (arg));
       else
 	address = value_address (ada_coerce_ref (arg));
@@ -4413,7 +4322,7 @@ ada_value_struct_elt (struct value *arg,
          a reference should mostly be transparent to the user.  */
 
       if (ada_is_tagged_type (t1, 0)
-          || (TYPE_CODE (t1) == TYPE_CODE_REF
+          || (t1->code () == TYPE_CODE_REF
               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
         {
           /* We first try to find the searched field in the current type.
@@ -4440,7 +4349,7 @@ ada_value_struct_elt (struct value *arg,
         {
           if (bit_size != 0)
             {
-              if (TYPE_CODE (t) == TYPE_CODE_REF)
+              if (t->code () == TYPE_CODE_REF)
                 arg = ada_coerce_ref (arg);
               else
                 arg = ada_value_ind (arg);
@@ -4477,24 +4386,24 @@ ada_convert_actual (struct value *actual
   struct type *actual_type = ada_check_typedef (value_type (actual));
   struct type *formal_type = ada_check_typedef (formal_type0);
   struct type *formal_target =
-    TYPE_CODE (formal_type) == TYPE_CODE_PTR
+    formal_type->code () == TYPE_CODE_PTR
     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
   struct type *actual_target =
-    TYPE_CODE (actual_type) == TYPE_CODE_PTR
+    actual_type->code () == TYPE_CODE_PTR
     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
 
   if (ada_is_array_descriptor_type (formal_target)
-      && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
+      && actual_target->code () == TYPE_CODE_ARRAY)
     return make_array_descriptor (formal_type, actual);
-  else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
-	   || TYPE_CODE (formal_type) == TYPE_CODE_REF)
+  else if (formal_type->code () == TYPE_CODE_PTR
+	   || formal_type->code () == TYPE_CODE_REF)
     {
       struct value *result;
 
-      if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
+      if (formal_target->code () == TYPE_CODE_ARRAY
           && ada_is_array_descriptor_type (actual_target))
 	result = desc_data (actual);
-      else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
+      else if (formal_type->code () != TYPE_CODE_PTR)
         {
           if (VALUE_LVAL (actual) != lval_memory)
             {
@@ -4513,7 +4422,7 @@ ada_convert_actual (struct value *actual
 	return actual;
       return value_cast_pointers (formal_type, result, 0);
     }
-  else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
+  else if (actual_type->code () == TYPE_CODE_PTR)
     return ada_value_ind (actual);
   else if (ada_is_aligner_type (formal_type))
     {
@@ -4582,20 +4491,20 @@ make_array_descriptor (struct type *type
   modify_field (value_type (descriptor),
 		value_contents_writeable (descriptor),
 		value_pointer (ensure_lval (arr),
-			       TYPE_FIELD_TYPE (desc_type, 0)),
+			       desc_type->field (0).type ()),
 		fat_pntr_data_bitpos (desc_type),
 		fat_pntr_data_bitsize (desc_type));
 
   modify_field (value_type (descriptor),
 		value_contents_writeable (descriptor),
 		value_pointer (bounds,
-			       TYPE_FIELD_TYPE (desc_type, 1)),
+			       desc_type->field (1).type ()),
 		fat_pntr_bounds_bitpos (desc_type),
 		fat_pntr_bounds_bitsize (desc_type));
 
   descriptor = ensure_lval (descriptor);
 
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  if (type->code () == TYPE_CODE_PTR)
     return value_addr (descriptor);
   else
     return descriptor;
@@ -4710,7 +4619,6 @@ cache_symbol (const char *name, domain_e
   struct ada_symbol_cache *sym_cache
     = ada_get_symbol_cache (current_program_space);
   int h;
-  char *copy;
   struct cache_entry *e;
 
   /* Symbols for builtin types don't have a block.
@@ -4733,9 +4641,7 @@ cache_symbol (const char *name, domain_e
   e = XOBNEW (&sym_cache->cache_space, cache_entry);
   e->next = sym_cache->root[h];
   sym_cache->root[h] = e;
-  e->name = copy
-    = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
-  strcpy (copy, name);
+  e->name = obstack_strdup (&sym_cache->cache_space, name);
   e->sym = sym;
   e->domain = domain;
   e->block = block;
@@ -4784,8 +4690,8 @@ is_nonfunction (struct block_symbol syms
   int i;
 
   for (i = 0; i < n; i += 1)
-    if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
-        && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
+    if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_FUNC
+        && (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM
             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
       return 1;
 
@@ -4801,10 +4707,10 @@ equiv_types (struct type *type0, struct
   if (type0 == type1)
     return 1;
   if (type0 == NULL || type1 == NULL
-      || TYPE_CODE (type0) != TYPE_CODE (type1))
+      || type0->code () != type1->code ())
     return 0;
-  if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
-       || TYPE_CODE (type0) == TYPE_CODE_ENUM)
+  if ((type0->code () == TYPE_CODE_STRUCT
+       || type0->code () == TYPE_CODE_ENUM)
       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
     return 1;
@@ -4837,7 +4743,7 @@ lesseq_defined_than (struct symbol *sym0
         int len0 = strlen (name0);
 
         return
-          TYPE_CODE (type0) == TYPE_CODE (type1)
+          type0->code () == type1->code ()
           && (equiv_types (type0, type1)
               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
                   && startswith (name1 + len0, "___XV")));
@@ -4986,7 +4892,7 @@ is_nondebugging_type (struct type *type)
 
    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
    types and that their number of enumerals is identical (in other
-   words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
+   words, type1->num_fields () == type2->num_fields ()).  */
 
 static int
 ada_identical_enum_types_p (struct type *type1, struct type *type2)
@@ -4999,13 +4905,13 @@ ada_identical_enum_types_p (struct type
      underlying value and name.  */
 
   /* All enums in the type should have an identical underlying value.  */
-  for (i = 0; i < TYPE_NFIELDS (type1); i++)
+  for (i = 0; i < type1->num_fields (); i++)
     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
       return 0;
 
   /* All enumerals should also have the same name (modulo any numerical
      suffix).  */
-  for (i = 0; i < TYPE_NFIELDS (type1); i++)
+  for (i = 0; i < type1->num_fields (); i++)
     {
       const char *name_1 = TYPE_FIELD_NAME (type1, i);
       const char *name_2 = TYPE_FIELD_NAME (type2, i);
@@ -5058,7 +4964,7 @@ symbols_are_identical_enums (const std::
 
   /* Quick check: All symbols should have an enum type.  */
   for (i = 0; i < syms.size (); i++)
-    if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
+    if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM)
       return 0;
 
   /* Quick check: They should all have the same value.  */
@@ -5068,8 +4974,8 @@ symbols_are_identical_enums (const std::
 
   /* Quick check: They should all have the same number of enumerals.  */
   for (i = 1; i < syms.size (); i++)
-    if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
-        != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
+    if (SYMBOL_TYPE (syms[i].symbol)->num_fields ()
+        != SYMBOL_TYPE (syms[0].symbol)->num_fields ())
       return 0;
 
   /* All the sanity checks passed, so we might have a set of
@@ -5146,8 +5052,8 @@ remove_extra_symbols (std::vector<struct
       
       if (remove_p)
 	syms->erase (syms->begin () + i);
-
-      i += 1;
+      else
+	i += 1;
     }
 
   /* If all the remaining symbols are identical enumerals, then
@@ -5181,7 +5087,7 @@ xget_renaming_scope (struct type *renami
      So, to extract the scope, we search for the "___XR" extension,
      and then backtrack until we find the first "__".  */
 
-  const char *name = TYPE_NAME (renaming_type);
+  const char *name = renaming_type->name ();
   const char *suffix = strstr (name, "___XR");
   const char *last;
 
@@ -5660,8 +5566,8 @@ add_nonlocal_symbols (struct obstack *ob
   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
     {
       const char *name = ada_lookup_name (lookup_name);
-      lookup_name_info name1 (std::string ("<_ada_") + name + '>',
-			      symbol_name_match_type::FULL);
+      std::string bracket_name = std::string ("<_ada_") + name + '>';
+      lookup_name_info name1 (bracket_name, symbol_name_match_type::FULL);
 
       for (objfile *objfile : current_program_space->objfiles ())
         {
@@ -5722,7 +5628,7 @@ ada_add_all_symbols (struct obstack *obs
       else
 	{
 	  /* In the !full_search case we're are being called by
-	     ada_iterate_over_symbols, and we don't want to search
+	     iterate_over_symbols, and we don't want to search
 	     superblocks.  */
 	  ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
 	}
@@ -5823,28 +5729,6 @@ ada_lookup_symbol_list (const char *name
   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
 }
 
-/* Implementation of the la_iterate_over_symbols method.  */
-
-static bool
-ada_iterate_over_symbols
-  (const struct block *block, const lookup_name_info &name,
-   domain_enum domain,
-   gdb::function_view<symbol_found_callback_ftype> callback)
-{
-  int ndefs, i;
-  std::vector<struct block_symbol> results;
-
-  ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
-
-  for (i = 0; i < ndefs; ++i)
-    {
-      if (!callback (&results[i]))
-	return false;
-    }
-
-  return true;
-}
-
 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
    to 1, but choosing the first symbol found if there are multiple
    choices.
@@ -5891,46 +5775,6 @@ ada_lookup_symbol (const char *name, con
   return info;
 }
 
-static struct block_symbol
-ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
-			    const char *name,
-                            const struct block *block,
-                            const domain_enum domain)
-{
-  struct block_symbol sym;
-
-  sym = ada_lookup_symbol (name, block_static_block (block), domain);
-  if (sym.symbol != NULL)
-    return sym;
-
-  /* If we haven't found a match at this point, try the primitive
-     types.  In other languages, this search is performed before
-     searching for global symbols in order to short-circuit that
-     global-symbol search if it happens that the name corresponds
-     to a primitive type.  But we cannot do the same in Ada, because
-     it is perfectly legitimate for a program to declare a type which
-     has the same name as a standard type.  If looking up a type in
-     that situation, we have traditionally ignored the primitive type
-     in favor of user-defined types.  This is why, unlike most other
-     languages, we search the primitive types this late and only after
-     having searched the global symbols without success.  */
-
-  if (domain == VAR_DOMAIN)
-    {
-      struct gdbarch *gdbarch;
-
-      if (block == NULL)
-	gdbarch = target_gdbarch ();
-      else
-	gdbarch = block_gdbarch (block);
-      sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
-      if (sym.symbol != NULL)
-	return sym;
-    }
-
-  return {};
-}
-
 
 /* True iff STR is a possible encoded suffix of a normal Ada name
    that is to be ignored for matching purposes.  Suffixes of parallel
@@ -6220,8 +6064,7 @@ ada_add_block_symbols (struct obstack *o
        sym != NULL;
        sym = block_iter_match_next (lookup_name, &iter))
     {
-      if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
-				 SYMBOL_DOMAIN (sym), domain))
+      if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
 	{
 	  if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
 	    {
@@ -6260,7 +6103,7 @@ ada_add_block_symbols (struct obstack *o
 
       ALL_BLOCK_SYMBOLS (block, iter, sym)
       {
-        if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
+        if (symbol_matches_domain (sym->language (),
                                    SYMBOL_DOMAIN (sym), domain))
           {
             int cmp;
@@ -6389,134 +6232,6 @@ ada_lookup_name_info::matches
   return true;
 }
 
-/* Add the list of possible symbol names completing TEXT to TRACKER.
-   WORD is the entire command on which completion is made.  */
-
-static void
-ada_collect_symbol_completion_matches (completion_tracker &tracker,
-				       complete_symbol_mode mode,
-				       symbol_name_match_type name_match_type,
-				       const char *text, const char *word,
-				       enum type_code code)
-{
-  struct symbol *sym;
-  const struct block *b, *surrounding_static_block = 0;
-  struct block_iterator iter;
-
-  gdb_assert (code == TYPE_CODE_UNDEF);
-
-  lookup_name_info lookup_name (text, name_match_type, true);
-
-  /* First, look at the partial symtab symbols.  */
-  expand_symtabs_matching (NULL,
-			   lookup_name,
-			   NULL,
-			   NULL,
-			   ALL_DOMAIN);
-
-  /* At this point scan through the misc symbol vectors and add each
-     symbol you find to the list.  Eventually we want to ignore
-     anything that isn't a text symbol (everything else will be
-     handled by the psymtab code above).  */
-
-  for (objfile *objfile : current_program_space->objfiles ())
-    {
-      for (minimal_symbol *msymbol : objfile->msymbols ())
-	{
-	  QUIT;
-
-	  if (completion_skip_symbol (mode, msymbol))
-	    continue;
-
-	  language symbol_language = MSYMBOL_LANGUAGE (msymbol);
-
-	  /* Ada minimal symbols won't have their language set to Ada.  If
-	     we let completion_list_add_name compare using the
-	     default/C-like matcher, then when completing e.g., symbols in a
-	     package named "pck", we'd match internal Ada symbols like
-	     "pckS", which are invalid in an Ada expression, unless you wrap
-	     them in '<' '>' to request a verbatim match.
-
-	     Unfortunately, some Ada encoded names successfully demangle as
-	     C++ symbols (using an old mangling scheme), such as "name__2Xn"
-	     -> "Xn::name(void)" and thus some Ada minimal symbols end up
-	     with the wrong language set.  Paper over that issue here.  */
-	  if (symbol_language == language_auto
-	      || symbol_language == language_cplus)
-	    symbol_language = language_ada;
-
-	  completion_list_add_name (tracker,
-				    symbol_language,
-				    msymbol->linkage_name (),
-				    lookup_name, text, word);
-	}
-    }
-
-  /* Search upwards from currently selected frame (so that we can
-     complete on local vars.  */
-
-  for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
-    {
-      if (!BLOCK_SUPERBLOCK (b))
-        surrounding_static_block = b;   /* For elmin of dups */
-
-      ALL_BLOCK_SYMBOLS (b, iter, sym)
-      {
-	if (completion_skip_symbol (mode, sym))
-	  continue;
-
-	completion_list_add_name (tracker,
-				  SYMBOL_LANGUAGE (sym),
-				  sym->linkage_name (),
-				  lookup_name, text, word);
-      }
-    }
-
-  /* Go through the symtabs and check the externs and statics for
-     symbols which match.  */
-
-  for (objfile *objfile : current_program_space->objfiles ())
-    {
-      for (compunit_symtab *s : objfile->compunits ())
-	{
-	  QUIT;
-	  b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
-	  ALL_BLOCK_SYMBOLS (b, iter, sym)
-	    {
-	      if (completion_skip_symbol (mode, sym))
-		continue;
-
-	      completion_list_add_name (tracker,
-					SYMBOL_LANGUAGE (sym),
-					sym->linkage_name (),
-					lookup_name, text, word);
-	    }
-	}
-    }
-
-  for (objfile *objfile : current_program_space->objfiles ())
-    {
-      for (compunit_symtab *s : objfile->compunits ())
-	{
-	  QUIT;
-	  b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
-	  /* Don't do this block twice.  */
-	  if (b == surrounding_static_block)
-	    continue;
-	  ALL_BLOCK_SYMBOLS (b, iter, sym)
-	    {
-	      if (completion_skip_symbol (mode, sym))
-		continue;
-
-	      completion_list_add_name (tracker,
-					SYMBOL_LANGUAGE (sym),
-					sym->linkage_name (),
-					lookup_name, text, word);
-	    }
-	}
-    }
-}
-
                                 /* Field Access */
 
 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
@@ -6527,10 +6242,10 @@ ada_is_dispatch_table_ptr_type (struct t
 {
   const char *name;
 
-  if (TYPE_CODE (type) != TYPE_CODE_PTR)
+  if (type->code () != TYPE_CODE_PTR)
     return 0;
 
-  name = TYPE_NAME (TYPE_TARGET_TYPE (type));
+  name = TYPE_TARGET_TYPE (type)->name ();
   if (name == NULL)
     return 0;
 
@@ -6542,7 +6257,7 @@ ada_is_dispatch_table_ptr_type (struct t
 static int
 ada_is_interface_tag (struct type *type)
 {
-  const char *name = TYPE_NAME (type);
+  const char *name = type->name ();
 
   if (name == NULL)
     return 0;
@@ -6556,7 +6271,7 @@ ada_is_interface_tag (struct type *type)
 int
 ada_is_ignored_field (struct type *type, int field_num)
 {
-  if (field_num < 0 || field_num > TYPE_NFIELDS (type))
+  if (field_num < 0 || field_num > type->num_fields ())
     return 1;
 
   /* Check the name of that field.  */
@@ -6583,8 +6298,8 @@ ada_is_ignored_field (struct type *type,
   /* If this is the dispatch table of a tagged type or an interface tag,
      then ignore.  */
   if (ada_is_tagged_type (type, 1)
-      && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
-	  || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
+      && (ada_is_dispatch_table_ptr_type (type->field (field_num).type ())
+	  || ada_is_interface_tag (type->field (field_num).type ())))
     return 1;
 
   /* Not a special field, so it should not be ignored.  */
@@ -6607,7 +6322,7 @@ ada_is_tag_type (struct type *type)
 {
   type = ada_check_typedef (type);
 
-  if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
+  if (type == NULL || type->code () != TYPE_CODE_PTR)
     return 0;
   else
     {
@@ -6671,10 +6386,10 @@ value_tag_from_contents_and_address (str
 static struct type *
 type_from_tag (struct value *tag)
 {
-  const char *type_name = ada_tag_name (tag);
+  gdb::unique_xmalloc_ptr<char> type_name = ada_tag_name (tag);
 
   if (type_name != NULL)
-    return ada_find_any_type (ada_encode (type_name));
+    return ada_find_any_type (ada_encode (type_name.get ()));
   return NULL;
 }
 
@@ -6697,8 +6412,7 @@ ada_tag_value_at_base_address (struct va
 
   /* It is the responsability of the caller to deref pointers.  */
 
-  if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
-      || TYPE_CODE (obj_type) == TYPE_CODE_REF)
+  if (obj_type->code () == TYPE_CODE_PTR || obj_type->code () == TYPE_CODE_REF)
     return obj;
 
   tag = ada_value_tag (obj);
@@ -6823,37 +6537,41 @@ ada_get_tsd_from_tag (struct value *tag)
 /* Given the TSD of a tag (type-specific data), return a string
    containing the name of the associated type.
 
-   The returned value is good until the next call.  May return NULL
-   if we are unable to determine the tag name.  */
+   May return NULL if we are unable to determine the tag name.  */
 
-static char *
+static gdb::unique_xmalloc_ptr<char>
 ada_tag_name_from_tsd (struct value *tsd)
 {
-  static char name[1024];
   char *p;
   struct value *val;
 
   val = ada_value_struct_elt (tsd, "expanded_name", 1);
   if (val == NULL)
     return NULL;
-  read_memory_string (value_as_address (val), name, sizeof (name) - 1);
-  for (p = name; *p != '\0'; p += 1)
-    if (isalpha (*p))
-      *p = tolower (*p);
-  return name;
+  gdb::unique_xmalloc_ptr<char> buffer
+    = target_read_string (value_as_address (val), INT_MAX);
+  if (buffer == nullptr)
+    return nullptr;
+
+  for (p = buffer.get (); *p != '\0'; ++p)
+    {
+      if (isalpha (*p))
+	*p = tolower (*p);
+    }
+
+  return buffer;
 }
 
 /* The type name of the dynamic type denoted by the 'tag value TAG, as
    a C string.
 
    Return NULL if the TAG is not an Ada tag, or if we were unable to
-   determine the name of that tag.  The result is good until the next
-   call.  */
+   determine the name of that tag.  */
 
-const char *
+gdb::unique_xmalloc_ptr<char>
 ada_tag_name (struct value *tag)
 {
-  char *name = NULL;
+  gdb::unique_xmalloc_ptr<char> name;
 
   if (!ada_is_tag_type (value_type (tag)))
     return NULL;
@@ -6890,16 +6608,16 @@ ada_parent_type (struct type *type)
 
   type = ada_check_typedef (type);
 
-  if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
+  if (type == NULL || type->code () != TYPE_CODE_STRUCT)
     return NULL;
 
-  for (i = 0; i < TYPE_NFIELDS (type); i += 1)
+  for (i = 0; i < type->num_fields (); i += 1)
     if (ada_is_parent_field (type, i))
       {
-        struct type *parent_type = TYPE_FIELD_TYPE (type, i);
+        struct type *parent_type = type->field (i).type ();
 
         /* If the _parent field is a pointer, then dereference it.  */
-        if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
+        if (parent_type->code () == TYPE_CODE_PTR)
           parent_type = TYPE_TARGET_TYPE (parent_type);
         /* If there is a parallel XVS type, get the actual base type.  */
         parent_type = ada_get_base_type (parent_type);
@@ -6964,11 +6682,11 @@ ada_is_variant_part (struct type *type,
   if (!ADA_TYPE_P (type))
     return 0;
 
-  struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
+  struct type *field_type = type->field (field_num).type ();
 
-  return (TYPE_CODE (field_type) == TYPE_CODE_UNION
-          || (is_dynamic_field (type, field_num)
-              && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
+  return (field_type->code () == TYPE_CODE_UNION
+	  || (is_dynamic_field (type, field_num)
+	      && (TYPE_TARGET_TYPE (field_type)->code ()
 		  == TYPE_CODE_UNION)));
 }
 
@@ -7011,7 +6729,7 @@ ada_variant_discrim_name (struct type *t
   const char *discrim_end;
   const char *discrim_start;
 
-  if (TYPE_CODE (type0) == TYPE_CODE_PTR)
+  if (type0->code () == TYPE_CODE_PTR)
     type = TYPE_TARGET_TYPE (type0);
   else
     type = type0;
@@ -7146,14 +6864,14 @@ ada_in_variant (LONGEST val, struct type
    fields.  FIELDNO says which field.   Differs from value_primitive_field
    only in that it can handle packed values of arbitrary type.  */
 
-static struct value *
+struct value *
 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
                            struct type *arg_type)
 {
   struct type *type;
 
   arg_type = ada_check_typedef (arg_type);
-  type = TYPE_FIELD_TYPE (arg_type, fieldno);
+  type = arg_type->field (fieldno).type ();
 
   /* Handle packed fields.  It might be that the field is not packed
      relative to its containing structure, but the structure itself is
@@ -7256,7 +6974,7 @@ find_struct_field (const char *name, str
   if (bit_size_p != NULL)
     *bit_size_p = 0;
 
-  for (i = 0; i < TYPE_NFIELDS (type); i += 1)
+  for (i = 0; i < type->num_fields (); i += 1)
     {
       int bit_pos = TYPE_FIELD_BITPOS (type, i);
       int fld_offset = offset + bit_pos / 8;
@@ -7284,7 +7002,7 @@ find_struct_field (const char *name, str
           int bit_size = TYPE_FIELD_BITSIZE (type, i);
 
 	  if (field_type_p != NULL)
-	    *field_type_p = TYPE_FIELD_TYPE (type, i);
+	    *field_type_p = type->field (i).type ();
 	  if (byte_offset_p != NULL)
 	    *byte_offset_p = fld_offset;
 	  if (bit_offset_p != NULL)
@@ -7295,7 +7013,7 @@ find_struct_field (const char *name, str
         }
       else if (ada_is_wrapper_field (type, i))
         {
-	  if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
+	  if (find_struct_field (name, type->field (i).type (), fld_offset,
 				 field_type_p, byte_offset_p, bit_offset_p,
 				 bit_size_p, index_p))
             return 1;
@@ -7306,11 +7024,11 @@ find_struct_field (const char *name, str
 	     fixed type?? */
           int j;
           struct type *field_type
-	    = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
+	    = ada_check_typedef (type->field (i).type ());
 
-          for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
+          for (j = 0; j < field_type->num_fields (); j += 1)
             {
-              if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
+              if (find_struct_field (name, field_type->field (j).type (),
                                      fld_offset
                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
                                      field_type_p, byte_offset_p,
@@ -7330,7 +7048,7 @@ find_struct_field (const char *name, str
       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
       int fld_offset = offset + bit_pos / 8;
 
-      if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
+      if (find_struct_field (name, type->field (parent_offset).type (),
                              fld_offset, field_type_p, byte_offset_p,
                              bit_offset_p, bit_size_p, index_p))
         return 1;
@@ -7368,7 +7086,7 @@ ada_search_struct_field (const char *nam
   int parent_offset = -1;
 
   type = ada_check_typedef (type);
-  for (i = 0; i < TYPE_NFIELDS (type); i += 1)
+  for (i = 0; i < type->num_fields (); i += 1)
     {
       const char *t_field_name = TYPE_FIELD_NAME (type, i);
 
@@ -7397,7 +7115,7 @@ ada_search_struct_field (const char *nam
           struct value *v =     /* Do not let indent join lines here.  */
             ada_search_struct_field (name, arg,
                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
-                                     TYPE_FIELD_TYPE (type, i));
+                                     type->field (i).type ());
 
           if (v != NULL)
             return v;
@@ -7407,17 +7125,16 @@ ada_search_struct_field (const char *nam
         {
 	  /* PNH: Do we ever get here?  See find_struct_field.  */
           int j;
-          struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
-									i));
+          struct type *field_type = ada_check_typedef (type->field (i).type ());
           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
 
-          for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
+          for (j = 0; j < field_type->num_fields (); j += 1)
             {
               struct value *v = ada_search_struct_field /* Force line
 							   break.  */
                 (name, arg,
                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
-                 TYPE_FIELD_TYPE (field_type, j));
+                 field_type->field (j).type ());
 
               if (v != NULL)
                 return v;
@@ -7432,7 +7149,7 @@ ada_search_struct_field (const char *nam
     {
       struct value *v = ada_search_struct_field (
 	name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
-	TYPE_FIELD_TYPE (type, parent_offset));
+	type->field (parent_offset).type ());
 
       if (v != NULL)
         return v;
@@ -7469,7 +7186,7 @@ ada_index_struct_field_1 (int *index_p,
   int i;
   type = ada_check_typedef (type);
 
-  for (i = 0; i < TYPE_NFIELDS (type); i += 1)
+  for (i = 0; i < type->num_fields (); i += 1)
     {
       if (TYPE_FIELD_NAME (type, i) == NULL)
         continue;
@@ -7478,7 +7195,7 @@ ada_index_struct_field_1 (int *index_p,
           struct value *v =     /* Do not let indent join lines here.  */
             ada_index_struct_field_1 (index_p, arg,
 				      offset + TYPE_FIELD_BITPOS (type, i) / 8,
-				      TYPE_FIELD_TYPE (type, i));
+				      type->field (i).type ());
 
           if (v != NULL)
             return v;
@@ -7544,15 +7261,14 @@ ada_lookup_struct_elt_type (struct type
     while (1)
       {
         type = ada_check_typedef (type);
-        if (TYPE_CODE (type) != TYPE_CODE_PTR
-            && TYPE_CODE (type) != TYPE_CODE_REF)
+        if (type->code () != TYPE_CODE_PTR && type->code () != TYPE_CODE_REF)
           break;
         type = TYPE_TARGET_TYPE (type);
       }
 
   if (type == NULL
-      || (TYPE_CODE (type) != TYPE_CODE_STRUCT
-          && TYPE_CODE (type) != TYPE_CODE_UNION))
+      || (type->code () != TYPE_CODE_STRUCT
+	  && type->code () != TYPE_CODE_UNION))
     {
       if (noerr)
         return NULL;
@@ -7563,7 +7279,7 @@ ada_lookup_struct_elt_type (struct type
 
   type = to_static_fixed_type (type);
 
-  for (i = 0; i < TYPE_NFIELDS (type); i += 1)
+  for (i = 0; i < type->num_fields (); i += 1)
     {
       const char *t_field_name = TYPE_FIELD_NAME (type, i);
       struct type *t;
@@ -7586,11 +7302,11 @@ ada_lookup_struct_elt_type (struct type
         }
 
       else if (field_name_match (t_field_name, name))
-	return TYPE_FIELD_TYPE (type, i);
+	return type->field (i).type ();
 
       else if (ada_is_wrapper_field (type, i))
         {
-          t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
+          t = ada_lookup_struct_elt_type (type->field (i).type (), name,
                                           0, 1);
           if (t != NULL)
 	    return t;
@@ -7599,10 +7315,9 @@ ada_lookup_struct_elt_type (struct type
       else if (ada_is_variant_part (type, i))
         {
           int j;
-          struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
-									i));
+          struct type *field_type = ada_check_typedef (type->field (i).type ());
 
-          for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
+          for (j = field_type->num_fields () - 1; j >= 0; j -= 1)
             {
 	      /* FIXME pnh 2008/01/26: We check for a field that is
 	         NOT wrapped in a struct, since the compiler sometimes
@@ -7612,10 +7327,9 @@ ada_lookup_struct_elt_type (struct type
 
 	      if (v_field_name != NULL 
 		  && field_name_match (v_field_name, name))
-		t = TYPE_FIELD_TYPE (field_type, j);
+		t = field_type->field (j).type ();
 	      else
-		t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
-								 j),
+		t = ada_lookup_struct_elt_type (field_type->field (j).type (),
 						name, 0, 1);
 
               if (t != NULL)
@@ -7632,7 +7346,7 @@ ada_lookup_struct_elt_type (struct type
       {
         struct type *t;
 
-        t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
+        t = ada_lookup_struct_elt_type (type->field (parent_offset).type (),
                                         name, 0, 1);
         if (t != NULL)
 	  return t;
@@ -7665,33 +7379,28 @@ is_unchecked_variant (struct type *var_t
 
 
 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
-   within a value of type OUTER_TYPE that is stored in GDB at
-   OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
+   within OUTER, determine which variant clause (field number in VAR_TYPE,
    numbering from 0) is applicable.  Returns -1 if none are.  */
 
 int
-ada_which_variant_applies (struct type *var_type, struct type *outer_type,
-                           const gdb_byte *outer_valaddr)
+ada_which_variant_applies (struct type *var_type, struct value *outer)
 {
   int others_clause;
   int i;
   const char *discrim_name = ada_variant_discrim_name (var_type);
-  struct value *outer;
   struct value *discrim;
   LONGEST discrim_val;
 
   /* Using plain value_from_contents_and_address here causes problems
      because we will end up trying to resolve a type that is currently
      being constructed.  */
-  outer = value_from_contents_and_address_unresolved (outer_type,
-						      outer_valaddr, 0);
   discrim = ada_value_struct_elt (outer, discrim_name, 1);
   if (discrim == NULL)
     return -1;
   discrim_val = value_as_long (discrim);
 
   others_clause = -1;
-  for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
+  for (i = 0; i < var_type->num_fields (); i += 1)
     {
       if (ada_is_others_clause (var_type, i))
         others_clause = i;
@@ -7760,7 +7469,7 @@ ada_value_ind (struct value *val0)
 static struct value *
 ada_coerce_ref (struct value *val0)
 {
-  if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
+  if (value_type (val0)->code () == TYPE_CODE_REF)
     {
       struct value *val = val0;
 
@@ -7775,15 +7484,6 @@ ada_coerce_ref (struct value *val0)
     return val0;
 }
 
-/* Return OFF rounded upward if necessary to a multiple of
-   ALIGNMENT (a power of 2).  */
-
-static unsigned int
-align_value (unsigned int off, unsigned int alignment)
-{
-  return (off + alignment - 1) & ~(alignment - 1);
-}
-
 /* Return the bit alignment required for field #F of template type TYPE.  */
 
 static unsigned int
@@ -7870,11 +7570,11 @@ ada_prefer_type (struct type *type0, str
     return 1;
   else if (type0 == NULL)
     return 0;
-  else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
+  else if (type1->code () == TYPE_CODE_VOID)
     return 1;
-  else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
+  else if (type0->code () == TYPE_CODE_VOID)
     return 0;
-  else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
+  else if (type1->name () == NULL && type0->name () != NULL)
     return 1;
   else if (ada_is_constrained_packed_array_type (type0))
     return 1;
@@ -7883,8 +7583,8 @@ ada_prefer_type (struct type *type0, str
     return 1;
   else
     {
-      const char *type0_name = TYPE_NAME (type0);
-      const char *type1_name = TYPE_NAME (type1);
+      const char *type0_name = type0->name ();
+      const char *type1_name = type1->name ();
 
       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
 	  && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
@@ -7901,7 +7601,7 @@ ada_type_name (struct type *type)
 {
   if (type == NULL)
     return NULL;
-  return TYPE_NAME (type);
+  return type->name ();
 }
 
 /* Search the list of "descriptive" types associated to TYPE for a type
@@ -8012,7 +7712,7 @@ dynamic_template_type (struct type *type
 {
   type = ada_check_typedef (type);
 
-  if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
+  if (type == NULL || type->code () != TYPE_CODE_STRUCT
       || ada_type_name (type) == NULL)
     return NULL;
   else
@@ -8035,7 +7735,7 @@ is_dynamic_field (struct type *templ_typ
   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
 
   return name != NULL
-    && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
+    && templ_type->field (field_num).type ()->code () == TYPE_CODE_PTR
     && strstr (name, "___XVL") != NULL;
 }
 
@@ -8047,10 +7747,10 @@ variant_field_index (struct type *type)
 {
   int f;
 
-  if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
+  if (type == NULL || type->code () != TYPE_CODE_STRUCT)
     return -1;
 
-  for (f = 0; f < TYPE_NFIELDS (type); f += 1)
+  for (f = 0; f < type->num_fields (); f += 1)
     {
       if (ada_is_variant_part (type, f))
         return f;
@@ -8065,11 +7765,9 @@ empty_record (struct type *templ)
 {
   struct type *type = alloc_type_copy (templ);
 
-  TYPE_CODE (type) = TYPE_CODE_STRUCT;
-  TYPE_NFIELDS (type) = 0;
-  TYPE_FIELDS (type) = NULL;
+  type->set_code (TYPE_CODE_STRUCT);
   INIT_NONE_SPECIFIC (type);
-  TYPE_NAME (type) = "<empty>";
+  type->set_name ("<empty>");
   TYPE_LENGTH (type) = 0;
   return type;
 }
@@ -8110,24 +7808,23 @@ ada_template_to_fixed_record_type_1 (str
      to be processed: unless keep_dynamic_fields, this includes only
      fields whose position and length are static will be processed.  */
   if (keep_dynamic_fields)
-    nfields = TYPE_NFIELDS (type);
+    nfields = type->num_fields ();
   else
     {
       nfields = 0;
-      while (nfields < TYPE_NFIELDS (type)
+      while (nfields < type->num_fields ()
              && !ada_is_variant_part (type, nfields)
              && !is_dynamic_field (type, nfields))
         nfields++;
     }
 
   rtype = alloc_type_copy (type);
-  TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
+  rtype->set_code (TYPE_CODE_STRUCT);
   INIT_NONE_SPECIFIC (rtype);
-  TYPE_NFIELDS (rtype) = nfields;
-  TYPE_FIELDS (rtype) = (struct field *)
-    TYPE_ALLOC (rtype, nfields * sizeof (struct field));
-  memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
-  TYPE_NAME (rtype) = ada_type_name (type);
+  rtype->set_num_fields (nfields);
+  rtype->set_fields
+   ((struct field *) TYPE_ZALLOC (rtype, nfields * sizeof (struct field)));
+  rtype->set_name (ada_type_name (type));
   TYPE_FIXED_INSTANCE (rtype) = 1;
 
   off = 0;
@@ -8136,9 +7833,9 @@ ada_template_to_fixed_record_type_1 (str
 
   for (f = 0; f < nfields; f += 1)
     {
-      off = align_value (off, field_alignment (type, f))
+      off = align_up (off, field_alignment (type, f))
 	+ TYPE_FIELD_BITPOS (type, f);
-      SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
+      SET_FIELD_BITPOS (rtype->field (f), off);
       TYPE_FIELD_BITSIZE (rtype, f) = 0;
 
       if (ada_is_variant_part (type, f))
@@ -8151,7 +7848,7 @@ ada_template_to_fixed_record_type_1 (str
 	  const gdb_byte *field_valaddr = valaddr;
 	  CORE_ADDR field_address = address;
 	  struct type *field_type =
-	    TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
+	    TYPE_TARGET_TYPE (type->field (f).type ());
 
           if (dval0 == NULL)
 	    {
@@ -8210,7 +7907,7 @@ ada_template_to_fixed_record_type_1 (str
 	     record size.  */
 	  ada_ensure_varsize_limit (field_type);
 
-	  TYPE_FIELD_TYPE (rtype, f) = field_type;
+	  rtype->field (f).set_type (field_type);
           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
 	  /* The multiplication can potentially overflow.  But because
 	     the field length has been size-checked just above, and
@@ -8219,7 +7916,7 @@ ada_template_to_fixed_record_type_1 (str
 	     adding overflow recovery code to this already complex code,
 	     we just assume that it's not going to happen.  */
           fld_bit_len =
-            TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
+            TYPE_LENGTH (rtype->field (f).type ()) * TARGET_CHAR_BIT;
         }
       else
         {
@@ -8233,20 +7930,20 @@ ada_template_to_fixed_record_type_1 (str
 	     structure, the typedef is the only clue which allows us
 	     to distinguish between the two options.  Stripping it
 	     would prevent us from printing this field appropriately.  */
-          TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
+          rtype->field (f).set_type (type->field (f).type ());
           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
           if (TYPE_FIELD_BITSIZE (type, f) > 0)
             fld_bit_len =
               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
           else
 	    {
-	      struct type *field_type = TYPE_FIELD_TYPE (type, f);
+	      struct type *field_type = type->field (f).type ();
 
 	      /* We need to be careful of typedefs when computing
 		 the length of our field.  If this is a typedef,
 		 get the length of the target type, not the length
 		 of the typedef.  */
-	      if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
+	      if (field_type->code () == TYPE_CODE_TYPEDEF)
 		field_type = ada_typedef_target_type (field_type);
 
               fld_bit_len =
@@ -8257,7 +7954,7 @@ ada_template_to_fixed_record_type_1 (str
         bit_len = off + fld_bit_len;
       off += fld_bit_len;
       TYPE_LENGTH (rtype) =
-        align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
+        align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
     }
 
   /* We handle the variant part, if any, at the end because of certain
@@ -8284,26 +7981,26 @@ ada_template_to_fixed_record_type_1 (str
 
       branch_type =
         to_fixed_variant_branch_type
-        (TYPE_FIELD_TYPE (type, variant_field),
+        (type->field (variant_field).type (),
          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
       if (branch_type == NULL)
         {
-          for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
-            TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
-          TYPE_NFIELDS (rtype) -= 1;
+          for (f = variant_field + 1; f < rtype->num_fields (); f += 1)
+            rtype->field (f - 1) = rtype->field (f);
+	  rtype->set_num_fields (rtype->num_fields () - 1);
         }
       else
         {
-          TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
+          rtype->field (variant_field).set_type (branch_type);
           TYPE_FIELD_NAME (rtype, variant_field) = "S";
           fld_bit_len =
-            TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
+            TYPE_LENGTH (rtype->field (variant_field).type ()) *
             TARGET_CHAR_BIT;
           if (off + fld_bit_len > bit_len)
             bit_len = off + fld_bit_len;
           TYPE_LENGTH (rtype) =
-            align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
+            align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
         }
     }
 
@@ -8315,17 +8012,17 @@ ada_template_to_fixed_record_type_1 (str
      the current RTYPE length might be good enough for our purposes.  */
   if (TYPE_LENGTH (type) <= 0)
     {
-      if (TYPE_NAME (rtype))
+      if (rtype->name ())
 	warning (_("Invalid type size for `%s' detected: %s."),
-		 TYPE_NAME (rtype), pulongest (TYPE_LENGTH (type)));
+		 rtype->name (), pulongest (TYPE_LENGTH (type)));
       else
 	warning (_("Invalid type size for <unnamed> detected: %s."),
 		 pulongest (TYPE_LENGTH (type)));
     }
   else
     {
-      TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
-                                         TYPE_LENGTH (type));
+      TYPE_LENGTH (rtype) = align_up (TYPE_LENGTH (rtype),
+				      TYPE_LENGTH (type));
     }
 
   value_free_to_mark (mark);
@@ -8371,7 +8068,7 @@ template_to_static_fixed_type (struct ty
 
   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
   type = type0;
-  nfields = TYPE_NFIELDS (type0);
+  nfields = type0->num_fields ();
 
   /* Whether or not we cloned TYPE0, cache the result so that we don't do
      recompute all over next time.  */
@@ -8379,7 +8076,7 @@ template_to_static_fixed_type (struct ty
 
   for (f = 0; f < nfields; f += 1)
     {
-      struct type *field_type = TYPE_FIELD_TYPE (type0, f);
+      struct type *field_type = type0->field (f).type ();
       struct type *new_type;
 
       if (is_dynamic_field (type0, f))
@@ -8396,18 +8093,22 @@ template_to_static_fixed_type (struct ty
 	  if (type == type0)
 	    {
 	      TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
-	      TYPE_CODE (type) = TYPE_CODE (type0);
+	      type->set_code (type0->code ());
 	      INIT_NONE_SPECIFIC (type);
-	      TYPE_NFIELDS (type) = nfields;
-	      TYPE_FIELDS (type) = (struct field *)
-		TYPE_ALLOC (type, nfields * sizeof (struct field));
-	      memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
+	      type->set_num_fields (nfields);
+
+	      field *fields =
+		((struct field *)
+		 TYPE_ALLOC (type, nfields * sizeof (struct field)));
+	      memcpy (fields, type0->fields (),
 		      sizeof (struct field) * nfields);
-	      TYPE_NAME (type) = ada_type_name (type0);
+	      type->set_fields (fields);
+
+	      type->set_name (ada_type_name (type0));
 	      TYPE_FIXED_INSTANCE (type) = 1;
 	      TYPE_LENGTH (type) = 0;
 	    }
-	  TYPE_FIELD_TYPE (type, f) = new_type;
+	  type->field (f).set_type (new_type);
 	  TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
 	}
     }
@@ -8430,7 +8131,7 @@ to_record_with_fixed_variant_part (struc
   struct value *dval;
   struct type *rtype;
   struct type *branch_type;
-  int nfields = TYPE_NFIELDS (type);
+  int nfields = type->num_fields ();
   int variant_field = variant_field_index (type);
 
   if (variant_field == -1)
@@ -8445,19 +8146,21 @@ to_record_with_fixed_variant_part (struc
     dval = dval0;
 
   rtype = alloc_type_copy (type);
-  TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
+  rtype->set_code (TYPE_CODE_STRUCT);
   INIT_NONE_SPECIFIC (rtype);
-  TYPE_NFIELDS (rtype) = nfields;
-  TYPE_FIELDS (rtype) =
+  rtype->set_num_fields (nfields);
+
+  field *fields =
     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
-  memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
-          sizeof (struct field) * nfields);
-  TYPE_NAME (rtype) = ada_type_name (type);
+  memcpy (fields, type->fields (), sizeof (struct field) * nfields);
+  rtype->set_fields (fields);
+
+  rtype->set_name (ada_type_name (type));
   TYPE_FIXED_INSTANCE (rtype) = 1;
   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
 
   branch_type = to_fixed_variant_branch_type
-    (TYPE_FIELD_TYPE (type, variant_field),
+    (type->field (variant_field).type (),
      cond_offset_host (valaddr,
                        TYPE_FIELD_BITPOS (type, variant_field)
                        / TARGET_CHAR_BIT),
@@ -8469,17 +8172,17 @@ to_record_with_fixed_variant_part (struc
       int f;
 
       for (f = variant_field + 1; f < nfields; f += 1)
-        TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
-      TYPE_NFIELDS (rtype) -= 1;
+        rtype->field (f - 1) = rtype->field (f);
+      rtype->set_num_fields (rtype->num_fields () - 1);
     }
   else
     {
-      TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
+      rtype->field (variant_field).set_type (branch_type);
       TYPE_FIELD_NAME (rtype, variant_field) = "S";
       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
     }
-  TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
+  TYPE_LENGTH (rtype) -= TYPE_LENGTH (type->field (variant_field).type ());
 
   value_free_to_mark (mark);
   return rtype;
@@ -8547,7 +8250,7 @@ to_fixed_variant_branch_type (struct typ
   struct type *templ_type;
   struct type *var_type;
 
-  if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
+  if (var_type0->code () == TYPE_CODE_PTR)
     var_type = TYPE_TARGET_TYPE (var_type0);
   else
     var_type = var_type0;
@@ -8559,22 +8262,20 @@ to_fixed_variant_branch_type (struct typ
 
   if (is_unchecked_variant (var_type, value_type (dval)))
       return var_type0;
-  which =
-    ada_which_variant_applies (var_type,
-                               value_type (dval), value_contents (dval));
+  which = ada_which_variant_applies (var_type, dval);
 
   if (which < 0)
     return empty_record (var_type);
   else if (is_dynamic_field (var_type, which))
     return to_fixed_record_type
-      (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
+      (TYPE_TARGET_TYPE (var_type->field (which).type ()),
        valaddr, address, dval);
-  else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
+  else if (variant_field_index (var_type->field (which).type ()) >= 0)
     return
       to_fixed_record_type
-      (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
+      (var_type->field (which).type (), valaddr, address, dval);
   else
-    return TYPE_FIELD_TYPE (var_type, which);
+    return var_type->field (which).type ();
 }
 
 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
@@ -8589,10 +8290,10 @@ ada_is_redundant_range_encoding (struct
   int n;
   LONGEST lo, hi;
 
-  gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
+  gdb_assert (range_type->code () == TYPE_CODE_RANGE);
 
-  if (TYPE_CODE (get_base_type (range_type))
-      != TYPE_CODE (get_base_type (encoding_type)))
+  if (get_base_type (range_type)->code ()
+      != get_base_type (encoding_type)->code ())
     {
       /* The compiler probably used a simple base type to describe
 	 the range type instead of the range's actual base type,
@@ -8605,23 +8306,23 @@ ada_is_redundant_range_encoding (struct
   if (is_dynamic_type (range_type))
     return 0;
 
-  if (TYPE_NAME (encoding_type) == NULL)
+  if (encoding_type->name () == NULL)
     return 0;
 
-  bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
+  bounds_str = strstr (encoding_type->name (), "___XDLU_");
   if (bounds_str == NULL)
     return 0;
 
   n = 8; /* Skip "___XDLU_".  */
   if (!ada_scan_number (bounds_str, n, &lo, &n))
     return 0;
-  if (TYPE_LOW_BOUND (range_type) != lo)
+  if (range_type->bounds ()->low.const_val () != lo)
     return 0;
 
   n += 2; /* Skip the "__" separator between the two bounds.  */
   if (!ada_scan_number (bounds_str, n, &hi, &n))
     return 0;
-  if (TYPE_HIGH_BOUND (range_type) != hi)
+  if (range_type->bounds ()->high.const_val () != hi)
     return 0;
 
   return 1;
@@ -8638,10 +8339,10 @@ ada_is_redundant_index_type_desc (struct
   struct type *this_layer = check_typedef (array_type);
   int i;
 
-  for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
+  for (i = 0; i < desc_type->num_fields (); i++)
     {
-      if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
-					    TYPE_FIELD_TYPE (desc_type, i)))
+      if (!ada_is_redundant_range_encoding (this_layer->index_type (),
+					    desc_type->field (i).type ()))
 	return 0;
       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
     }
@@ -8734,7 +8435,7 @@ to_fixed_array_type (struct type *type0,
         result = type0;
       else
         result = create_array_type (alloc_type_copy (type0),
-                                    elt_type, TYPE_INDEX_TYPE (type0));
+                                    elt_type, type0->index_type ());
     }
   else
     {
@@ -8742,7 +8443,7 @@ to_fixed_array_type (struct type *type0,
       struct type *elt_type0;
 
       elt_type0 = type0;
-      for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
+      for (i = index_type_desc->num_fields (); i > 0; i -= 1)
         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
 
       /* NOTE: result---the fixed version of elt_type0---should never
@@ -8760,10 +8461,10 @@ to_fixed_array_type (struct type *type0,
         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
 
       elt_type0 = type0;
-      for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
+      for (i = index_type_desc->num_fields () - 1; i >= 0; i -= 1)
         {
           struct type *range_type =
-            to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
+            to_fixed_range_type (index_type_desc->field (i).type (), dval);
 
           result = create_array_type (alloc_type_copy (elt_type0),
                                       result, range_type);
@@ -8776,7 +8477,7 @@ to_fixed_array_type (struct type *type0,
   /* We want to preserve the type name.  This can be useful when
      trying to get the type name of a value that has already been
      printed (for instance, if the user did "print VAR; whatis $".  */
-  TYPE_NAME (result) = TYPE_NAME (type0);
+  result->set_name (type0->name ());
 
   if (constrained_packed_array_p)
     {
@@ -8820,7 +8521,7 @@ ada_to_fixed_type_1 (struct type *type,
   if (!HAVE_GNAT_AUX_INFO (type))
     return type;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     default:
       return type;
@@ -8968,7 +8669,7 @@ ada_to_fixed_type (struct type *type, co
       only in that situation.  But this seems unnecessary so far, probably
       because we call check_typedef/ada_check_typedef pretty much everywhere.
       */
-  if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
+  if (type->code () == TYPE_CODE_TYPEDEF
       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
 	  == TYPE_MAIN_TYPE (fixed_type)))
     return type;
@@ -8992,7 +8693,7 @@ to_static_fixed_type (struct type *type0
 
   type0 = ada_check_typedef (type0);
 
-  switch (TYPE_CODE (type0))
+  switch (type0->code ())
     {
     default:
       return type0;
@@ -9018,9 +8719,9 @@ static_unwrap_type (struct type *type)
 {
   if (ada_is_aligner_type (type))
     {
-      struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
+      struct type *type1 = ada_check_typedef (type)->field (0).type ();
       if (ada_type_name (type1) == NULL)
-        TYPE_NAME (type1) = ada_type_name (type);
+	type1->set_name (ada_type_name (type));
 
       return static_unwrap_type (type1);
     }
@@ -9065,13 +8766,13 @@ ada_check_typedef (struct type *type)
     return type;
 
   type = check_typedef (type);
-  if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
+  if (type == NULL || type->code () != TYPE_CODE_ENUM
       || !TYPE_STUB (type)
-      || TYPE_NAME (type) == NULL)
+      || type->name () == NULL)
     return type;
   else
     {
-      const char *name = TYPE_NAME (type);
+      const char *name = type->name ();
       struct type *type1 = ada_find_any_type (name);
 
       if (type1 == NULL)
@@ -9081,7 +8782,7 @@ ada_check_typedef (struct type *type)
 	 stubs pointing to arrays, as we don't create symbols for array
 	 types, only for the typedef-to-array types).  If that's the case,
 	 strip the typedef layer.  */
-      if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
+      if (type1->code () == TYPE_CODE_TYPEDEF)
 	type1 = ada_check_typedef (type1);
 
       return type1;
@@ -9165,15 +8866,15 @@ pos_atr (struct value *arg)
 {
   struct value *val = coerce_ref (arg);
   struct type *type = value_type (val);
-  LONGEST result;
 
   if (!discrete_type_p (type))
     error (_("'POS only defined on discrete types"));
 
-  if (!discrete_position (type, value_as_long (val), &result))
+  gdb::optional<LONGEST> result = discrete_position (type, value_as_long (val));
+  if (!result.has_value ())
     error (_("enumeration value is invalid: can't find 'POS"));
 
-  return result;
+  return *result;
 }
 
 static struct value *
@@ -9185,6 +8886,21 @@ value_pos_atr (struct type *type, struct
 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
 
 static struct value *
+val_atr (struct type *type, LONGEST val)
+{
+  gdb_assert (discrete_type_p (type));
+  if (type->code () == TYPE_CODE_RANGE)
+    type = TYPE_TARGET_TYPE (type);
+  if (type->code () == TYPE_CODE_ENUM)
+    {
+      if (val < 0 || val >= type->num_fields ())
+        error (_("argument to 'VAL out of range"));
+      val = TYPE_FIELD_ENUMVAL (type, val);
+    }
+  return value_from_longest (type, val);
+}
+
+static struct value *
 value_val_atr (struct type *type, struct value *arg)
 {
   if (!discrete_type_p (type))
@@ -9192,16 +8908,7 @@ value_val_atr (struct type *type, struct
   if (!integer_type_p (value_type (arg)))
     error (_("'VAL requires integral argument"));
 
-  if (TYPE_CODE (type) == TYPE_CODE_ENUM)
-    {
-      long pos = value_as_long (arg);
-
-      if (pos < 0 || pos >= TYPE_NFIELDS (type))
-        error (_("argument to 'VAL out of range"));
-      return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
-    }
-  else
-    return value_from_longest (type, value_as_long (arg));
+  return val_atr (type, value_as_long (arg));
 }
 
 
@@ -9218,15 +8925,15 @@ ada_is_character_type (struct type *type
 
   /* If the type code says it's a character, then assume it really is,
      and don't check any further.  */
-  if (TYPE_CODE (type) == TYPE_CODE_CHAR)
+  if (type->code () == TYPE_CODE_CHAR)
     return true;
   
   /* Otherwise, assume it's a character type iff it is a discrete type
      with a known character type name.  */
   name = ada_type_name (type);
   return (name != NULL
-          && (TYPE_CODE (type) == TYPE_CODE_INT
-              || TYPE_CODE (type) == TYPE_CODE_RANGE)
+          && (type->code () == TYPE_CODE_INT
+              || type->code () == TYPE_CODE_RANGE)
           && (strcmp (name, "character") == 0
               || strcmp (name, "wide_character") == 0
               || strcmp (name, "wide_wide_character") == 0
@@ -9240,7 +8947,7 @@ ada_is_string_type (struct type *type)
 {
   type = ada_check_typedef (type);
   if (type != NULL
-      && TYPE_CODE (type) != TYPE_CODE_PTR
+      && type->code () != TYPE_CODE_PTR
       && (ada_is_simple_array_type (type)
           || ada_is_array_descriptor_type (type))
       && ada_array_arity (type) == 1)
@@ -9276,8 +8983,8 @@ ada_is_aligner_type (struct type *type)
   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
     return 0;
 
-  return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-          && TYPE_NFIELDS (type) == 1
+  return (type->code () == TYPE_CODE_STRUCT
+          && type->num_fields () == 1
           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
 }
 
@@ -9290,7 +8997,7 @@ ada_get_base_type (struct type *raw_type
   struct type *real_type_namer;
   struct type *raw_real_type;
 
-  if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
+  if (raw_type == NULL || raw_type->code () != TYPE_CODE_STRUCT)
     return raw_type;
 
   if (ada_is_aligner_type (raw_type))
@@ -9310,11 +9017,11 @@ ada_get_base_type (struct type *raw_type
 
   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
   if (real_type_namer == NULL
-      || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
-      || TYPE_NFIELDS (real_type_namer) != 1)
+      || real_type_namer->code () != TYPE_CODE_STRUCT
+      || real_type_namer->num_fields () != 1)
     return raw_type;
 
-  if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
+  if (real_type_namer->field (0).type ()->code () != TYPE_CODE_REF)
     {
       /* This is an older encoding form where the base type needs to be
 	 looked up by name.  We prefer the newer encoding because it is
@@ -9327,7 +9034,7 @@ ada_get_base_type (struct type *raw_type
     }
 
   /* The field in our XVS type is a reference to the base type.  */
-  return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
+  return TYPE_TARGET_TYPE (real_type_namer->field (0).type ());
 }
 
 /* The type of value designated by TYPE, with all aligners removed.  */
@@ -9336,7 +9043,7 @@ struct type *
 ada_aligned_type (struct type *type)
 {
   if (ada_is_aligner_type (type))
-    return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
+    return ada_aligned_type (type->field (0).type ());
   else
     return ada_get_base_type (type);
 }
@@ -9349,7 +9056,7 @@ const gdb_byte *
 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
 {
   if (ada_is_aligner_type (type))
-    return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
+    return ada_aligned_value_addr (type->field (0).type (),
                                    valaddr +
                                    TYPE_FIELD_BITPOS (type,
                                                       0) / TARGET_CHAR_BIT);
@@ -9445,7 +9152,7 @@ ada_enum_name (const char *name)
 static struct value *
 evaluate_subexp_type (struct expression *exp, int *pos)
 {
-  return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+  return evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
 }
 
 /* If VAL is wrapped in an aligner or subtype wrapper, return the
@@ -9462,7 +9169,7 @@ unwrap_value (struct value *val)
       struct type *val_type = ada_check_typedef (value_type (v));
 
       if (ada_type_name (val_type) == NULL)
-        TYPE_NAME (val_type) = ada_type_name (type);
+	val_type->set_name (ada_type_name (type));
 
       return unwrap_value (v);
     }
@@ -9502,7 +9209,7 @@ cast_to_fixed (struct type *type, struct
     return arg;
 
   struct value *scale = ada_scaling_factor (type);
-  if (ada_is_fixed_point_type (value_type (arg)))
+  if (ada_is_gnat_encoded_fixed_point_type (value_type (arg)))
     arg = cast_from_fixed (value_type (scale), arg);
   else
     arg = value_cast (value_type (scale), arg);
@@ -9553,9 +9260,9 @@ ada_promote_array_of_integrals (struct t
   /* Verify that both val and type are arrays of scalars, and
      that the size of val's elements is smaller than the size
      of type's element.  */
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
+  gdb_assert (type->code () == TYPE_CODE_ARRAY);
   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
-  gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
+  gdb_assert (value_type (val)->code () == TYPE_CODE_ARRAY);
   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
 	      > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
@@ -9591,15 +9298,15 @@ coerce_for_assign (struct type *type, st
   type2 = ada_check_typedef (type2);
   type = ada_check_typedef (type);
 
-  if (TYPE_CODE (type2) == TYPE_CODE_PTR
-      && TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type2->code () == TYPE_CODE_PTR
+      && type->code () == TYPE_CODE_ARRAY)
     {
       val = ada_value_ind (val);
       type2 = value_type (val);
     }
 
-  if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
-      && TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type2->code () == TYPE_CODE_ARRAY
+      && type->code () == TYPE_CODE_ARRAY)
     {
       if (!ada_same_array_size_p (type, type2))
 	error (_("cannot assign arrays of different length"));
@@ -9634,8 +9341,8 @@ ada_value_binop (struct value *arg1, str
   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
 
-  if (TYPE_CODE (type1) != TYPE_CODE_INT
-      || TYPE_CODE (type2) != TYPE_CODE_INT)
+  if (type1->code () != TYPE_CODE_INT
+      || type2->code () != TYPE_CODE_INT)
     return value_binop (arg1, arg2, op);
 
   switch (op)
@@ -9699,8 +9406,8 @@ ada_value_equal (struct value *arg1, str
       arg1_type = ada_check_typedef (value_type (arg1));
       arg2_type = ada_check_typedef (value_type (arg2));
 
-      if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
-          || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
+      if (arg1_type->code () != TYPE_CODE_ARRAY
+          || arg2_type->code () != TYPE_CODE_ARRAY)
         error (_("Attempt to compare array with non-array"));
       /* FIXME: The following works only for types whose
          representations use all bits (no padding or undefined bits)
@@ -9754,7 +9461,7 @@ assign_component (struct value *containe
   struct value *elt;
   struct type *lhs_type = check_typedef (value_type (lhs));
 
-  if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
+  if (lhs_type->code () == TYPE_CODE_ARRAY)
     {
       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
       struct value *index_val = value_from_longest (index_type, index);
@@ -9818,10 +9525,10 @@ assign_aggregate (struct value *containe
     {
       lhs = ada_coerce_to_simple_array (lhs);
       lhs_type = check_typedef (value_type (lhs));
-      low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
-      high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
+      low_index = lhs_type->bounds ()->low.const_val ();
+      high_index = lhs_type->bounds ()->high.const_val ();
     }
-  else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
+  else if (lhs_type->code () == TYPE_CODE_STRUCT)
     {
       low_index = 0;
       high_index = num_visible_fields (lhs_type) - 1;
@@ -10050,10 +9757,10 @@ ada_value_cast (struct type *type, struc
   if (type == ada_check_typedef (value_type (arg2)))
     return arg2;
 
-  if (ada_is_fixed_point_type (type))
+  if (ada_is_gnat_encoded_fixed_point_type (type))
     return cast_to_fixed (type, arg2);
 
-  if (ada_is_fixed_point_type (value_type (arg2)))
+  if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
     return cast_from_fixed (type, arg2);
 
   return value_cast (type, arg2);
@@ -10415,8 +10122,8 @@ ada_evaluate_subexp (struct type *expect
         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
         /* The result type will have code OP_STRING, bashed there from 
            OP_ARRAY.  Bash it back.  */
-        if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
-          TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
+        if (value_type (result)->code () == TYPE_CODE_STRING)
+          value_type (result)->set_code (TYPE_CODE_ARRAY);
         return result;
       }
 
@@ -10431,7 +10138,7 @@ ada_evaluate_subexp (struct type *expect
       return ada_evaluate_subexp (type, exp, pos, noside);
 
     case BINOP_ASSIGN:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (exp->elts[*pos].opcode == OP_AGGREGATE)
 	{
 	  arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
@@ -10453,9 +10160,9 @@ ada_evaluate_subexp (struct type *expect
 	{
 	  /* Nothing.  */
 	}
-      else if (ada_is_fixed_point_type (value_type (arg1)))
+      else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
         arg2 = cast_to_fixed (value_type (arg1), arg2);
-      else if (ada_is_fixed_point_type (value_type (arg2)))
+      else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
         error
           (_("Fixed-point values must be assigned to fixed-point variables"));
       else
@@ -10467,23 +10174,23 @@ ada_evaluate_subexp (struct type *expect
       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
-      if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
+      if (value_type (arg1)->code () == TYPE_CODE_PTR)
         return (value_from_longest
                  (value_type (arg1),
                   value_as_long (arg1) + value_as_long (arg2)));
-      if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
+      if (value_type (arg2)->code () == TYPE_CODE_PTR)
         return (value_from_longest
                  (value_type (arg2),
                   value_as_long (arg1) + value_as_long (arg2)));
-      if ((ada_is_fixed_point_type (value_type (arg1))
-           || ada_is_fixed_point_type (value_type (arg2)))
+      if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
+           || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
           && value_type (arg1) != value_type (arg2))
         error (_("Operands of fixed-point addition must have the same type"));
       /* Do the addition, and cast the result to the type of the first
          argument.  We cannot cast the result to a reference type, so if
          ARG1 is a reference type, find its underlying type.  */
       type = value_type (arg1);
-      while (TYPE_CODE (type) == TYPE_CODE_REF)
+      while (type->code () == TYPE_CODE_REF)
         type = TYPE_TARGET_TYPE (type);
       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
@@ -10493,16 +10200,16 @@ ada_evaluate_subexp (struct type *expect
       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
-      if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
+      if (value_type (arg1)->code () == TYPE_CODE_PTR)
         return (value_from_longest
                  (value_type (arg1),
                   value_as_long (arg1) - value_as_long (arg2)));
-      if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
+      if (value_type (arg2)->code () == TYPE_CODE_PTR)
         return (value_from_longest
                  (value_type (arg2),
                   value_as_long (arg1) - value_as_long (arg2)));
-      if ((ada_is_fixed_point_type (value_type (arg1))
-           || ada_is_fixed_point_type (value_type (arg2)))
+      if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
+           || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
           && value_type (arg1) != value_type (arg2))
         error (_("Operands of fixed-point subtraction "
 		 "must have the same type"));
@@ -10510,7 +10217,7 @@ ada_evaluate_subexp (struct type *expect
          argument.  We cannot cast the result to a reference type, so if
          ARG1 is a reference type, find its underlying type.  */
       type = value_type (arg1);
-      while (TYPE_CODE (type) == TYPE_CODE_REF)
+      while (type->code () == TYPE_CODE_REF)
         type = TYPE_TARGET_TYPE (type);
       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
@@ -10519,8 +10226,8 @@ ada_evaluate_subexp (struct type *expect
     case BINOP_DIV:
     case BINOP_REM:
     case BINOP_MOD:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
+      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
@@ -10531,9 +10238,9 @@ ada_evaluate_subexp (struct type *expect
       else
         {
           type = builtin_type (exp->gdbarch)->builtin_double;
-          if (ada_is_fixed_point_type (value_type (arg1)))
+          if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
             arg1 = cast_from_fixed (type, arg1);
-          if (ada_is_fixed_point_type (value_type (arg2)))
+          if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
             arg2 = cast_from_fixed (type, arg2);
           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
           return ada_value_binop (arg1, arg2, op);
@@ -10541,7 +10248,7 @@ ada_evaluate_subexp (struct type *expect
 
     case BINOP_EQUAL:
     case BINOP_NOTEQUAL:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
@@ -10558,10 +10265,10 @@ ada_evaluate_subexp (struct type *expect
       return value_from_longest (type, (LONGEST) tem);
 
     case UNOP_NEG:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
-      else if (ada_is_fixed_point_type (value_type (arg1)))
+      else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
         return value_cast (value_type (arg1), value_neg (arg1));
       else
 	{
@@ -10587,8 +10294,8 @@ ada_evaluate_subexp (struct type *expect
       {
         struct value *val;
 
-        arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
-        *pos = pc;
+	arg1 = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+	*pos = pc;
         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
 
         return value_cast (value_type (arg1), val);
@@ -10619,7 +10326,7 @@ ada_evaluate_subexp (struct type *expect
              The latter should be shown as usual (as a pointer), whereas
              a reference should mostly be transparent to the user.  */
           if (ada_is_tagged_type (type, 0)
-              || (TYPE_CODE (type) == TYPE_CODE_REF
+              || (type->code () == TYPE_CODE_REF
                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
 	    {
 	      /* Tagged types are a little special in the fact that the real
@@ -10639,9 +10346,9 @@ ada_evaluate_subexp (struct type *expect
 		 a fixed type would result in the loss of that type name,
 		 thus preventing us from printing the name of the ancestor
 		 type in the type description.  */
-	      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
+	      arg1 = evaluate_subexp (nullptr, exp, pos, EVAL_NORMAL);
 
-	      if (TYPE_CODE (type) != TYPE_CODE_REF)
+	      if (type->code () != TYPE_CODE_REF)
 		{
 		  struct type *actual_type;
 
@@ -10674,9 +10381,9 @@ ada_evaluate_subexp (struct type *expect
 	     For instance, a case statement in a variant record would be
 	     replaced by the relevant components based on the actual
 	     value of the discriminants.  */
-	  if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
+	  if ((type->code () == TYPE_CODE_STRUCT
 	       && dynamic_template_type (type) != NULL)
-	      || (TYPE_CODE (type) == TYPE_CODE_UNION
+	      || (type->code () == TYPE_CODE_UNION
 		  && ada_find_parallel_type (type, "___XVU") != NULL))
 	    {
 	      *pos += 4;
@@ -10702,8 +10409,8 @@ ada_evaluate_subexp (struct type *expect
       else
         {
           for (tem = 0; tem <= nargs; tem += 1)
-            argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-          argvec[tem] = 0;
+	    argvec[tem] = evaluate_subexp (nullptr, exp, pos, noside);
+	  argvec[tem] = 0;
 
           if (noside == EVAL_SKIP)
             goto nosideret;
@@ -10712,13 +10419,13 @@ ada_evaluate_subexp (struct type *expect
       if (ada_is_constrained_packed_array_type
 	  (desc_base_type (value_type (argvec[0]))))
         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
-      else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
+      else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
         /* This is a packed array that has already been fixed, and
 	   therefore already coerced to a simple array.  Nothing further
 	   to do.  */
         ;
-      else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
+      else if (value_type (argvec[0])->code () == TYPE_CODE_REF)
 	{
 	  /* Make sure we dereference references so that all the code below
 	     feels like it's really handling the referenced value.  Wrapping
@@ -10726,7 +10433,7 @@ ada_evaluate_subexp (struct type *expect
 	     well.  */
 	  argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
 	}
-      else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
+      else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
 	       && VALUE_LVAL (argvec[0]) == lval_memory)
 	argvec[0] = value_addr (argvec[0]);
 
@@ -10735,12 +10442,12 @@ ada_evaluate_subexp (struct type *expect
       /* Ada allows us to implicitly dereference arrays when subscripting
 	 them.  So, if this is an array typedef (encoding use for array
 	 access types encoded as fat pointers), strip it now.  */
-      if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+      if (type->code () == TYPE_CODE_TYPEDEF)
 	type = ada_typedef_target_type (type);
 
-      if (TYPE_CODE (type) == TYPE_CODE_PTR)
+      if (type->code () == TYPE_CODE_PTR)
         {
-          switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
+          switch (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ())
             {
             case TYPE_CODE_FUNC:
               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
@@ -10759,7 +10466,7 @@ ada_evaluate_subexp (struct type *expect
             }
         }
 
-      switch (TYPE_CODE (type))
+      switch (type->code ())
         {
         case TYPE_CODE_FUNC:
           if (noside == EVAL_AVOID_SIDE_EFFECTS)
@@ -10832,12 +10539,12 @@ ada_evaluate_subexp (struct type *expect
 
     case TERNOP_SLICE:
       {
-        struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-        struct value *low_bound_val =
-          evaluate_subexp (NULL_TYPE, exp, pos, noside);
-        struct value *high_bound_val =
-          evaluate_subexp (NULL_TYPE, exp, pos, noside);
-        LONGEST low_bound;
+	struct value *array = evaluate_subexp (nullptr, exp, pos, noside);
+	struct value *low_bound_val
+	  = evaluate_subexp (nullptr, exp, pos, noside);
+	struct value *high_bound_val
+	  = evaluate_subexp (nullptr, exp, pos, noside);
+	LONGEST low_bound;
         LONGEST high_bound;
 
         low_bound_val = coerce_ref (low_bound_val);
@@ -10850,7 +10557,7 @@ ada_evaluate_subexp (struct type *expect
 
         /* If this is a reference to an aligner type, then remove all
            the aligners.  */
-        if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
+        if (value_type (array)->code () == TYPE_CODE_REF
             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
           TYPE_TARGET_TYPE (value_type (array)) =
             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
@@ -10860,8 +10567,8 @@ ada_evaluate_subexp (struct type *expect
 
         /* If this is a reference to an array or an array lvalue,
            convert to a pointer.  */
-        if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
-            || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
+        if (value_type (array)->code () == TYPE_CODE_REF
+            || (value_type (array)->code () == TYPE_CODE_ARRAY
                 && VALUE_LVAL (array) == lval_memory))
           array = value_addr (array);
 
@@ -10875,8 +10582,8 @@ ada_evaluate_subexp (struct type *expect
 
         /* If we have more than one level of pointer indirection,
            dereference the value until we get only one level.  */
-        while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
-               && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
+        while (value_type (array)->code () == TYPE_CODE_PTR
+               && (TYPE_TARGET_TYPE (value_type (array))->code ()
                      == TYPE_CODE_PTR))
           array = value_ind (array);
 
@@ -10887,7 +10594,7 @@ ada_evaluate_subexp (struct type *expect
         if (!ada_is_simple_array_type (value_type (array)))
           error (_("cannot take slice of non-array"));
 
-        if (TYPE_CODE (ada_check_typedef (value_type (array)))
+        if (ada_check_typedef (value_type (array))->code ()
             == TYPE_CODE_PTR)
           {
             struct type *type0 = ada_check_typedef (value_type (array));
@@ -10915,13 +10622,13 @@ ada_evaluate_subexp (struct type *expect
 
     case UNOP_IN_RANGE:
       (*pos) += 2;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       type = check_typedef (exp->elts[pc + 1].type);
 
       if (noside == EVAL_SKIP)
         goto nosideret;
 
-      switch (TYPE_CODE (type))
+      switch (type->code ())
         {
         default:
           lim_warning (_("Membership test incompletely implemented; "
@@ -10930,8 +10637,10 @@ ada_evaluate_subexp (struct type *expect
 	  return value_from_longest (type, (LONGEST) 1);
 
         case TYPE_CODE_RANGE:
-	  arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
-	  arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
+	  arg2 = value_from_longest (type,
+				     type->bounds ()->low.const_val ());
+	  arg3 = value_from_longest (type,
+				     type->bounds ()->high.const_val ());
 	  binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
 	  binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
 	  type = language_bool_type (exp->language_defn, exp->gdbarch);
@@ -10945,8 +10654,8 @@ ada_evaluate_subexp (struct type *expect
 
     case BINOP_IN_BOUNDS:
       (*pos) += 2;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
+      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
 
       if (noside == EVAL_SKIP)
         goto nosideret;
@@ -10977,9 +10686,9 @@ ada_evaluate_subexp (struct type *expect
                                 || value_equal (arg2, arg1)));
 
     case TERNOP_IN_RANGE:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
+      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
+      arg3 = evaluate_subexp (nullptr, exp, pos, noside);
 
       if (noside == EVAL_SKIP)
         goto nosideret;
@@ -11002,14 +10711,14 @@ ada_evaluate_subexp (struct type *expect
 
         if (exp->elts[*pos].opcode == OP_TYPE)
           {
-            evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
-            arg1 = NULL;
+	    evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
+	    arg1 = NULL;
             type_arg = check_typedef (exp->elts[pc + 2].type);
           }
         else
           {
-            arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-            type_arg = NULL;
+	    arg1 = evaluate_subexp (nullptr, exp, pos, noside);
+	    type_arg = NULL;
           }
 
         if (exp->elts[*pos].opcode != OP_LONG)
@@ -11084,7 +10793,7 @@ ada_evaluate_subexp (struct type *expect
             const char *name = ada_type_name (type_arg);
 
             range_type = NULL;
-            if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
+            if (name != NULL && type_arg->code () != TYPE_CODE_ENUM)
               range_type = to_fixed_range_type (type_arg, NULL);
             if (range_type == NULL)
               range_type = type_arg;
@@ -11102,7 +10811,7 @@ ada_evaluate_subexp (struct type *expect
                 error (_("the 'length attribute applies only to array types"));
               }
           }
-        else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
+        else if (type_arg->code () == TYPE_CODE_FLT)
           error (_("unimplemented type attribute"));
         else
           {
@@ -11139,7 +10848,7 @@ ada_evaluate_subexp (struct type *expect
       }
 
     case OP_ATR_TAG:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
 
@@ -11150,9 +10859,9 @@ ada_evaluate_subexp (struct type *expect
 
     case OP_ATR_MIN:
     case OP_ATR_MAX:
-      evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
+      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
@@ -11168,8 +10877,8 @@ ada_evaluate_subexp (struct type *expect
       {
         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
 
-        evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
-        if (noside == EVAL_SKIP)
+	evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
+	if (noside == EVAL_SKIP)
           goto nosideret;
 
         if (!ada_is_modular_type (type_arg))
@@ -11181,8 +10890,8 @@ ada_evaluate_subexp (struct type *expect
 
 
     case OP_ATR_POS:
-      evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
       type = builtin_type (exp->gdbarch)->builtin_int;
@@ -11192,13 +10901,13 @@ ada_evaluate_subexp (struct type *expect
 	return value_pos_atr (type, arg1);
 
     case OP_ATR_SIZE:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       type = value_type (arg1);
 
       /* If the argument is a reference, then dereference its type, since
          the user is really asking for the size of the actual object,
          not the size of the pointer.  */
-      if (TYPE_CODE (type) == TYPE_CODE_REF)
+      if (type->code () == TYPE_CODE_REF)
         type = TYPE_TARGET_TYPE (type);
 
       if (noside == EVAL_SKIP)
@@ -11210,8 +10919,8 @@ ada_evaluate_subexp (struct type *expect
                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
 
     case OP_ATR_VAL:
-      evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       type = exp->elts[pc + 2].type;
       if (noside == EVAL_SKIP)
         goto nosideret;
@@ -11221,8 +10930,8 @@ ada_evaluate_subexp (struct type *expect
         return value_val_atr (type, arg1);
 
     case BINOP_EXP:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
+      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
@@ -11240,14 +10949,14 @@ ada_evaluate_subexp (struct type *expect
 	}
 
     case UNOP_PLUS:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
       else
         return arg1;
 
     case UNOP_ABS:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
@@ -11258,7 +10967,7 @@ ada_evaluate_subexp (struct type *expect
 
     case UNOP_IND:
       preeval_pos = *pos;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
       type = ada_check_typedef (value_type (arg1));
@@ -11273,22 +10982,22 @@ ada_evaluate_subexp (struct type *expect
                 error (_("Attempt to dereference null array pointer."));
               return value_at_lazy (arrType, 0);
             }
-          else if (TYPE_CODE (type) == TYPE_CODE_PTR
-                   || TYPE_CODE (type) == TYPE_CODE_REF
+          else if (type->code () == TYPE_CODE_PTR
+                   || type->code () == TYPE_CODE_REF
                    /* In C you can dereference an array to get the 1st elt.  */
-                   || TYPE_CODE (type) == TYPE_CODE_ARRAY)
+                   || type->code () == TYPE_CODE_ARRAY)
             {
             /* As mentioned in the OP_VAR_VALUE case, tagged types can
                only be determined by inspecting the object's tag.
                This means that we need to evaluate completely the
                expression in order to get its type.  */
 
-	      if ((TYPE_CODE (type) == TYPE_CODE_REF
-		   || TYPE_CODE (type) == TYPE_CODE_PTR)
+	      if ((type->code () == TYPE_CODE_REF
+		   || type->code () == TYPE_CODE_PTR)
 		  && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
 		{
-		  arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
-					  EVAL_NORMAL);
+		  arg1
+		    = evaluate_subexp (nullptr, exp, &preeval_pos, EVAL_NORMAL);
 		  type = value_type (ada_value_ind (arg1));
 		}
 	      else
@@ -11300,7 +11009,7 @@ ada_evaluate_subexp (struct type *expect
 	      ada_ensure_varsize_limit (type);
               return value_zero (type, lval_memory);
             }
-          else if (TYPE_CODE (type) == TYPE_CODE_INT)
+          else if (type->code () == TYPE_CODE_INT)
 	    {
 	      /* GDB allows dereferencing an int.  */
 	      if (expect_type == NULL)
@@ -11319,7 +11028,7 @@ ada_evaluate_subexp (struct type *expect
       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
       type = ada_check_typedef (value_type (arg1));
 
-      if (TYPE_CODE (type) == TYPE_CODE_INT)
+      if (type->code () == TYPE_CODE_INT)
           /* GDB allows dereferencing an int.  If we were given
              the expect_type, then use that as the target type.
              Otherwise, assume that the target type is an int.  */
@@ -11342,7 +11051,7 @@ ada_evaluate_subexp (struct type *expect
       tem = longest_to_int (exp->elts[pc + 1].longconst);
       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
       preeval_pos = *pos;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
         goto nosideret;
       if (noside == EVAL_AVOID_SIDE_EFFECTS)
@@ -11361,8 +11070,8 @@ ada_evaluate_subexp (struct type *expect
 
               if (type == NULL)
 		{
-		  arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
-					  EVAL_NORMAL);
+		  arg1
+		    = evaluate_subexp (nullptr, exp, &preeval_pos, EVAL_NORMAL);
 		  arg1 = ada_value_struct_elt (arg1,
 					       &exp->elts[pc + 2].string,
 					       0);
@@ -11433,10 +11142,10 @@ nosideret:
    Otherwise, return NULL.  */
 
 static const char *
-fixed_type_info (struct type *type)
+gnat_encoded_fixed_type_info (struct type *type)
 {
   const char *name = ada_type_name (type);
-  enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
+  enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : type->code ();
 
   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
     {
@@ -11448,7 +11157,7 @@ fixed_type_info (struct type *type)
         return tail + 5;
     }
   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
-    return fixed_type_info (TYPE_TARGET_TYPE (type));
+    return gnat_encoded_fixed_type_info (TYPE_TARGET_TYPE (type));
   else
     return NULL;
 }
@@ -11456,9 +11165,9 @@ fixed_type_info (struct type *type)
 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
 
 int
-ada_is_fixed_point_type (struct type *type)
+ada_is_gnat_encoded_fixed_point_type (struct type *type)
 {
-  return fixed_type_info (type) != NULL;
+  return gnat_encoded_fixed_type_info (type) != NULL;
 }
 
 /* Return non-zero iff TYPE represents a System.Address type.  */
@@ -11466,8 +11175,7 @@ ada_is_fixed_point_type (struct type *ty
 int
 ada_is_system_address_type (struct type *type)
 {
-  return (TYPE_NAME (type)
-          && strcmp (TYPE_NAME (type), "system__address") == 0);
+  return (type->name () && strcmp (type->name (), "system__address") == 0);
 }
 
 /* Assuming that TYPE is the representation of an Ada fixed-point
@@ -11485,9 +11193,9 @@ ada_scaling_type (struct type *type)
    delta cannot be determined.  */
 
 struct value *
-ada_delta (struct type *type)
+gnat_encoded_fixed_point_delta (struct type *type)
 {
-  const char *encoding = fixed_type_info (type);
+  const char *encoding = gnat_encoded_fixed_type_info (type);
   struct type *scale_type = ada_scaling_type (type);
 
   long long num, den;
@@ -11499,13 +11207,13 @@ ada_delta (struct type *type)
 			value_from_longest (scale_type, den), BINOP_DIV);
 }
 
-/* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
-   factor ('SMALL value) associated with the type.  */
+/* Assuming that ada_is_gnat_encoded_fixed_point_type (TYPE), return
+   the scaling factor ('SMALL value) associated with the type.  */
 
 struct value *
 ada_scaling_factor (struct type *type)
 {
-  const char *encoding = fixed_type_info (type);
+  const char *encoding = gnat_encoded_fixed_type_info (type);
   struct type *scale_type = ada_scaling_type (type);
 
   long long num0, den0, num1, den1;
@@ -11635,14 +11343,14 @@ to_fixed_range_type (struct type *raw_ty
   const char *subtype_info;
 
   gdb_assert (raw_type != NULL);
-  gdb_assert (TYPE_NAME (raw_type) != NULL);
+  gdb_assert (raw_type->name () != NULL);
 
-  if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
+  if (raw_type->code () == TYPE_CODE_RANGE)
     base_type = TYPE_TARGET_TYPE (raw_type);
   else
     base_type = raw_type;
 
-  name = TYPE_NAME (raw_type);
+  name = raw_type->name ();
   subtype_info = strstr (name, "___XD");
   if (subtype_info == NULL)
     {
@@ -11716,7 +11424,7 @@ to_fixed_range_type (struct type *raw_ty
          to match the size of the base_type, which is not what we want.
          Set it back to the original range type's length.  */
       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
-      TYPE_NAME (type) = name;
+      type->set_name (name);
       return type;
     }
 }
@@ -11739,8 +11447,8 @@ ada_is_modular_type (struct type *type)
 {
   struct type *subranged_type = get_base_type (type);
 
-  return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
-          && TYPE_CODE (subranged_type) == TYPE_CODE_INT
+  return (subranged_type != NULL && type->code () == TYPE_CODE_RANGE
+          && subranged_type->code () == TYPE_CODE_INT
           && TYPE_UNSIGNED (subranged_type));
 }
 
@@ -11749,7 +11457,14 @@ ada_is_modular_type (struct type *type)
 ULONGEST
 ada_modulus (struct type *type)
 {
-  return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
+  const dynamic_prop &high = type->bounds ()->high;
+
+  if (high.kind () == PROP_CONST)
+    return (ULONGEST) high.const_val () + 1;
+
+  /* If TYPE is unresolved, the high bound might be a location list.  Return
+     0, for lack of a better value to return.  */
+  return 0;
 }
 
 
@@ -12222,7 +11937,8 @@ ada_exception_message_1 (void)
     return NULL;
 
   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
-  read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
+  read_memory (value_address (e_msg_val), (gdb_byte *) e_msg.get (),
+	       e_msg_len);
   e_msg.get ()[e_msg_len] = '\0';
 
   return e_msg;
@@ -13117,7 +12833,7 @@ catch_assert_command (const char *arg_en
 static int
 ada_is_exception_sym (struct symbol *sym)
 {
-  const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
+  const char *type_name = SYMBOL_TYPE (sym)->name ();
 
   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
           && SYMBOL_CLASS (sym) != LOC_BLOCK
@@ -13702,7 +13418,7 @@ ada_print_subexp (struct expression *exp
     case OP_ATR_VAL:
       if (exp->elts[*pos].opcode == OP_TYPE)
         {
-          if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
+          if (exp->elts[*pos + 1].type->code () != TYPE_CODE_VOID)
             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
 			   &type_print_raw_options);
           *pos += 3;
@@ -13832,88 +13548,9 @@ enum ada_primitive_types {
   nr_ada_primitive_types
 };
 
-static void
-ada_language_arch_info (struct gdbarch *gdbarch,
-			struct language_arch_info *lai)
-{
-  const struct builtin_type *builtin = builtin_type (gdbarch);
-
-  lai->primitive_type_vector
-    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
-			      struct type *);
-
-  lai->primitive_type_vector [ada_primitive_type_int]
-    = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
-			 0, "integer");
-  lai->primitive_type_vector [ada_primitive_type_long]
-    = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
-			 0, "long_integer");
-  lai->primitive_type_vector [ada_primitive_type_short]
-    = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
-			 0, "short_integer");
-  lai->string_char_type
-    = lai->primitive_type_vector [ada_primitive_type_char]
-    = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
-  lai->primitive_type_vector [ada_primitive_type_float]
-    = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
-		       "float", gdbarch_float_format (gdbarch));
-  lai->primitive_type_vector [ada_primitive_type_double]
-    = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
-		       "long_float", gdbarch_double_format (gdbarch));
-  lai->primitive_type_vector [ada_primitive_type_long_long]
-    = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
-			 0, "long_long_integer");
-  lai->primitive_type_vector [ada_primitive_type_long_double]
-    = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
-		       "long_long_float", gdbarch_long_double_format (gdbarch));
-  lai->primitive_type_vector [ada_primitive_type_natural]
-    = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
-			 0, "natural");
-  lai->primitive_type_vector [ada_primitive_type_positive]
-    = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
-			 0, "positive");
-  lai->primitive_type_vector [ada_primitive_type_void]
-    = builtin->builtin_void;
-
-  lai->primitive_type_vector [ada_primitive_type_system_address]
-    = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
-				      "void"));
-  TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
-    = "system__address";
-
-  /* Create the equivalent of the System.Storage_Elements.Storage_Offset
-     type.  This is a signed integral type whose size is the same as
-     the size of addresses.  */
-  {
-    unsigned int addr_length = TYPE_LENGTH
-      (lai->primitive_type_vector [ada_primitive_type_system_address]);
-
-    lai->primitive_type_vector [ada_primitive_type_storage_offset]
-      = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
-			   "storage_offset");
-  }
-
-  lai->bool_type_symbol = NULL;
-  lai->bool_type_default = builtin->builtin_bool;
-}
 
 				/* Language vector */
 
-/* Not really used, but needed in the ada_language_defn.  */
-
-static void
-emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
-{
-  ada_emit_char (c, type, stream, quoter, 1);
-}
-
-static int
-parse (struct parser_state *ps)
-{
-  warnings_issued = 0;
-  return ada_parse (ps);
-}
-
 static const struct exp_descriptor ada_exp_descriptor = {
   ada_print_subexp,
   ada_operator_length,
@@ -13957,14 +13594,16 @@ do_exact_match (const char *symbol_searc
 
 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
 {
-  const std::string &user_name = lookup_name.name ();
+  gdb::string_view user_name = lookup_name.name ();
 
   if (user_name[0] == '<')
     {
       if (user_name.back () == '>')
-	m_encoded_name = user_name.substr (1, user_name.size () - 2);
+	m_encoded_name
+	  = gdb::to_string (user_name.substr (1, user_name.size () - 2));
       else
-	m_encoded_name = user_name.substr (1, user_name.size () - 1);
+	m_encoded_name
+	  = gdb::to_string (user_name.substr (1, user_name.size () - 1));
       m_encoded_p = true;
       m_verbatim_p = true;
       m_wild_match_p = false;
@@ -13974,19 +13613,19 @@ ada_lookup_name_info::ada_lookup_name_in
     {
       m_verbatim_p = false;
 
-      m_encoded_p = user_name.find ("__") != std::string::npos;
+      m_encoded_p = user_name.find ("__") != gdb::string_view::npos;
 
       if (!m_encoded_p)
 	{
-	  const char *folded = ada_fold_name (user_name.c_str ());
+	  const char *folded = ada_fold_name (user_name);
 	  const char *encoded = ada_encode_1 (folded, false);
 	  if (encoded != NULL)
 	    m_encoded_name = encoded;
 	  else
-	    m_encoded_name = user_name;
+	    m_encoded_name = gdb::to_string (user_name);
 	}
       else
-	m_encoded_name = user_name;
+	m_encoded_name = gdb::to_string (user_name);
 
       /* Handle the 'package Standard' special case.  See description
 	 of m_standard_p.  */
@@ -14033,12 +13672,12 @@ literal_symbol_name_matcher (const char
 			     const lookup_name_info &lookup_name,
 			     completion_match_result *comp_match_res)
 {
-  const std::string &name = lookup_name.name ();
+  gdb::string_view name_view = lookup_name.name ();
 
-  int cmp = (lookup_name.completion_mode ()
-	     ? strncmp (symbol_search_name, name.c_str (), name.size ())
-	     : strcmp (symbol_search_name, name.c_str ()));
-  if (cmp == 0)
+  if (lookup_name.completion_mode ()
+      ? (strncmp (symbol_search_name, name_view.data (),
+		  name_view.size ()) == 0)
+      : symbol_search_name == name_view)
     {
       if (comp_match_res != NULL)
 	comp_match_res->set_match (symbol_search_name);
@@ -14048,7 +13687,7 @@ literal_symbol_name_matcher (const char
     return false;
 }
 
-/* Implement the "la_get_symbol_name_matcher" language_defn method for
+/* Implement the "get_symbol_name_matcher" language_defn method for
    Ada.  */
 
 static symbol_name_matcher_ftype *
@@ -14070,32 +13709,15 @@ ada_get_symbol_name_matcher (const looku
     }
 }
 
-/* Implement the "la_read_var_value" language_defn method for Ada.  */
-
-static struct value *
-ada_read_var_value (struct symbol *var, const struct block *var_block,
-		    struct frame_info *frame)
-{
-  /* The only case where default_read_var_value is not sufficient
-     is when VAR is a renaming...  */
-  if (frame != nullptr)
-    {
-      const struct block *frame_block = get_frame_block (frame, NULL);
-      if (frame_block != nullptr && ada_is_renaming_symbol (var))
-	return ada_read_renaming_var_value (var, frame_block);
-    }
-
-  /* This is a typical case where we expect the default_read_var_value
-     function to work.  */
-  return default_read_var_value (var, var_block, frame);
-}
-
 static const char *ada_extensions[] =
 {
   ".adb", ".ads", ".a", ".ada", ".dg", NULL
 };
 
-extern const struct language_defn ada_language_defn = {
+/* Constant data that describes the Ada language.  */
+
+extern const struct language_data ada_language_data =
+{
   "ada",                        /* Language name */
   "Ada",
   language_ada,
@@ -14106,65 +13728,488 @@ extern const struct language_defn ada_la
   macro_expansion_no,
   ada_extensions,
   &ada_exp_descriptor,
-  parse,
-  resolve,
-  ada_printchar,                /* Print a character constant */
-  ada_printstr,                 /* Function to print string constant */
-  emit_char,                    /* Function to print single char (not used) */
-  ada_print_type,               /* Print a type using appropriate syntax */
-  ada_print_typedef,            /* Print a typedef using appropriate syntax */
-  ada_val_print,                /* Print a value using appropriate syntax */
-  ada_value_print,              /* Print a top-level value */
-  ada_read_var_value,		/* la_read_var_value */
-  NULL,                         /* Language specific skip_trampoline */
   NULL,                         /* name_of_this */
   true,                         /* la_store_sym_names_in_linkage_form_p */
-  ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
-  basic_lookup_transparent_type,        /* lookup_transparent_type */
-  ada_la_decode,                /* Language specific symbol demangler */
-  ada_sniff_from_mangled_name,
-  NULL,                         /* Language specific
-				   class_name_from_physname */
   ada_op_print_tab,             /* expression operators for printing */
   0,                            /* c-style arrays */
   1,                            /* String lower bound */
-  ada_get_gdb_completer_word_break_characters,
-  ada_collect_symbol_completion_matches,
-  ada_language_arch_info,
-  ada_print_array_index,
-  default_pass_by_reference,
-  ada_watch_location_expression,
-  ada_get_symbol_name_matcher,	/* la_get_symbol_name_matcher */
-  ada_iterate_over_symbols,
-  default_search_name_hash,
   &ada_varobj_ops,
-  NULL,
-  NULL,
-  ada_is_string_type,
   "(...)"			/* la_struct_too_deep_ellipsis */
 };
 
-/* Command-list for the "set/show ada" prefix command.  */
-static struct cmd_list_element *set_ada_list;
-static struct cmd_list_element *show_ada_list;
-
-/* Implement the "set ada" prefix command.  */
+/* Class representing the Ada language.  */
 
-static void
-set_ada_command (const char *arg, int from_tty)
+class ada_language : public language_defn
 {
-  printf_unfiltered (_(\
-"\"set ada\" must be followed by the name of a setting.\n"));
-  help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
-}
+public:
+  ada_language ()
+    : language_defn (language_ada, ada_language_data)
+  { /* Nothing.  */ }
+
+  /* Print an array element index using the Ada syntax.  */
+
+  void print_array_index (struct type *index_type,
+			  LONGEST index,
+			  struct ui_file *stream,
+			  const value_print_options *options) const override
+  {
+    struct value *index_value = val_atr (index_type, index);
 
-/* Implement the "show ada" prefix command.  */
+    LA_VALUE_PRINT (index_value, stream, options);
+    fprintf_filtered (stream, " => ");
+  }
 
-static void
-show_ada_command (const char *args, int from_tty)
-{
-  cmd_show_list (show_ada_list, from_tty, "");
-}
+  /* Implement the "read_var_value" language_defn method for Ada.  */
+
+  struct value *read_var_value (struct symbol *var,
+				const struct block *var_block,
+				struct frame_info *frame) const override
+  {
+    /* The only case where default_read_var_value is not sufficient
+       is when VAR is a renaming...  */
+    if (frame != nullptr)
+      {
+	const struct block *frame_block = get_frame_block (frame, NULL);
+	if (frame_block != nullptr && ada_is_renaming_symbol (var))
+	  return ada_read_renaming_var_value (var, frame_block);
+      }
+
+    /* This is a typical case where we expect the default_read_var_value
+       function to work.  */
+    return language_defn::read_var_value (var, var_block, frame);
+  }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    const struct builtin_type *builtin = builtin_type (gdbarch);
+
+    lai->primitive_type_vector
+      = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
+				struct type *);
+
+    lai->primitive_type_vector [ada_primitive_type_int]
+      = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
+			   0, "integer");
+    lai->primitive_type_vector [ada_primitive_type_long]
+      = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
+			   0, "long_integer");
+    lai->primitive_type_vector [ada_primitive_type_short]
+      = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
+			   0, "short_integer");
+    lai->string_char_type
+      = lai->primitive_type_vector [ada_primitive_type_char]
+      = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
+    lai->primitive_type_vector [ada_primitive_type_float]
+      = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
+			 "float", gdbarch_float_format (gdbarch));
+    lai->primitive_type_vector [ada_primitive_type_double]
+      = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
+			 "long_float", gdbarch_double_format (gdbarch));
+    lai->primitive_type_vector [ada_primitive_type_long_long]
+      = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
+			   0, "long_long_integer");
+    lai->primitive_type_vector [ada_primitive_type_long_double]
+      = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
+			 "long_long_float", gdbarch_long_double_format (gdbarch));
+    lai->primitive_type_vector [ada_primitive_type_natural]
+      = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
+			   0, "natural");
+    lai->primitive_type_vector [ada_primitive_type_positive]
+      = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
+			   0, "positive");
+    lai->primitive_type_vector [ada_primitive_type_void]
+      = builtin->builtin_void;
+
+    lai->primitive_type_vector [ada_primitive_type_system_address]
+      = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
+					"void"));
+    lai->primitive_type_vector [ada_primitive_type_system_address]
+      ->set_name ("system__address");
+
+    /* Create the equivalent of the System.Storage_Elements.Storage_Offset
+       type.  This is a signed integral type whose size is the same as
+       the size of addresses.  */
+    {
+      unsigned int addr_length = TYPE_LENGTH
+	(lai->primitive_type_vector [ada_primitive_type_system_address]);
+
+      lai->primitive_type_vector [ada_primitive_type_storage_offset]
+	= arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
+			     "storage_offset");
+    }
+
+    lai->bool_type_symbol = NULL;
+    lai->bool_type_default = builtin->builtin_bool;
+  }
+
+  /* See language.h.  */
+
+  bool iterate_over_symbols
+	(const struct block *block, const lookup_name_info &name,
+	 domain_enum domain,
+	 gdb::function_view<symbol_found_callback_ftype> callback) const override
+  {
+    std::vector<struct block_symbol> results;
+
+    ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
+    for (block_symbol &sym : results)
+      {
+	if (!callback (&sym))
+	  return false;
+      }
+
+    return true;
+  }
+
+  /* See language.h.  */
+  bool sniff_from_mangled_name (const char *mangled,
+				char **out) const override
+  {
+    std::string demangled = ada_decode (mangled);
+
+    *out = NULL;
+
+    if (demangled != mangled && demangled[0] != '<')
+      {
+	/* Set the gsymbol language to Ada, but still return 0.
+	   Two reasons for that:
+
+	   1. For Ada, we prefer computing the symbol's decoded name
+	   on the fly rather than pre-compute it, in order to save
+	   memory (Ada projects are typically very large).
+
+	   2. There are some areas in the definition of the GNAT
+	   encoding where, with a bit of bad luck, we might be able
+	   to decode a non-Ada symbol, generating an incorrect
+	   demangled name (Eg: names ending with "TB" for instance
+	   are identified as task bodies and so stripped from
+	   the decoded name returned).
+
+	   Returning true, here, but not setting *DEMANGLED, helps us get
+	   a little bit of the best of both worlds.  Because we're last,
+	   we should not affect any of the other languages that were
+	   able to demangle the symbol before us; we get to correctly
+	   tag Ada symbols as such; and even if we incorrectly tagged a
+	   non-Ada symbol, which should be rare, any routing through the
+	   Ada language should be transparent (Ada tries to behave much
+	   like C/C++ with non-Ada symbols).  */
+	return true;
+      }
+
+    return false;
+  }
+
+  /* See language.h.  */
+
+  char *demangle (const char *mangled, int options) const override
+  {
+    return ada_la_decode (mangled, options);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    ada_print_type (type, varstring, stream, show, level, flags);
+  }
+
+  /* See language.h.  */
+
+  const char *word_break_characters (void) const override
+  {
+    return ada_completer_word_break_characters;
+  }
+
+  /* See language.h.  */
+
+  void collect_symbol_completion_matches (completion_tracker &tracker,
+					  complete_symbol_mode mode,
+					  symbol_name_match_type name_match_type,
+					  const char *text, const char *word,
+					  enum type_code code) const override
+  {
+    struct symbol *sym;
+    const struct block *b, *surrounding_static_block = 0;
+    struct block_iterator iter;
+
+    gdb_assert (code == TYPE_CODE_UNDEF);
+
+    lookup_name_info lookup_name (text, name_match_type, true);
+
+    /* First, look at the partial symtab symbols.  */
+    expand_symtabs_matching (NULL,
+			     lookup_name,
+			     NULL,
+			     NULL,
+			     ALL_DOMAIN);
+
+    /* At this point scan through the misc symbol vectors and add each
+       symbol you find to the list.  Eventually we want to ignore
+       anything that isn't a text symbol (everything else will be
+       handled by the psymtab code above).  */
+
+    for (objfile *objfile : current_program_space->objfiles ())
+      {
+	for (minimal_symbol *msymbol : objfile->msymbols ())
+	  {
+	    QUIT;
+
+	    if (completion_skip_symbol (mode, msymbol))
+	      continue;
+
+	    language symbol_language = msymbol->language ();
+
+	    /* Ada minimal symbols won't have their language set to Ada.  If
+	       we let completion_list_add_name compare using the
+	       default/C-like matcher, then when completing e.g., symbols in a
+	       package named "pck", we'd match internal Ada symbols like
+	       "pckS", which are invalid in an Ada expression, unless you wrap
+	       them in '<' '>' to request a verbatim match.
+
+	       Unfortunately, some Ada encoded names successfully demangle as
+	       C++ symbols (using an old mangling scheme), such as "name__2Xn"
+	       -> "Xn::name(void)" and thus some Ada minimal symbols end up
+	       with the wrong language set.  Paper over that issue here.  */
+	    if (symbol_language == language_auto
+		|| symbol_language == language_cplus)
+	      symbol_language = language_ada;
+
+	    completion_list_add_name (tracker,
+				      symbol_language,
+				      msymbol->linkage_name (),
+				      lookup_name, text, word);
+	  }
+      }
+
+    /* Search upwards from currently selected frame (so that we can
+       complete on local vars.  */
+
+    for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
+      {
+	if (!BLOCK_SUPERBLOCK (b))
+	  surrounding_static_block = b;   /* For elmin of dups */
+
+	ALL_BLOCK_SYMBOLS (b, iter, sym)
+	  {
+	    if (completion_skip_symbol (mode, sym))
+	      continue;
+
+	    completion_list_add_name (tracker,
+				      sym->language (),
+				      sym->linkage_name (),
+				      lookup_name, text, word);
+	  }
+      }
+
+    /* Go through the symtabs and check the externs and statics for
+       symbols which match.  */
+
+    for (objfile *objfile : current_program_space->objfiles ())
+      {
+	for (compunit_symtab *s : objfile->compunits ())
+	  {
+	    QUIT;
+	    b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
+	    ALL_BLOCK_SYMBOLS (b, iter, sym)
+	      {
+		if (completion_skip_symbol (mode, sym))
+		  continue;
+
+		completion_list_add_name (tracker,
+					  sym->language (),
+					  sym->linkage_name (),
+					  lookup_name, text, word);
+	      }
+	  }
+      }
+
+    for (objfile *objfile : current_program_space->objfiles ())
+      {
+	for (compunit_symtab *s : objfile->compunits ())
+	  {
+	    QUIT;
+	    b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
+	    /* Don't do this block twice.  */
+	    if (b == surrounding_static_block)
+	      continue;
+	    ALL_BLOCK_SYMBOLS (b, iter, sym)
+	      {
+		if (completion_skip_symbol (mode, sym))
+		  continue;
+
+		completion_list_add_name (tracker,
+					  sym->language (),
+					  sym->linkage_name (),
+					  lookup_name, text, word);
+	      }
+	  }
+      }
+  }
+
+  /* See language.h.  */
+
+  gdb::unique_xmalloc_ptr<char> watch_location_expression
+	(struct type *type, CORE_ADDR addr) const override
+  {
+    type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
+    std::string name = type_to_string (type);
+    return gdb::unique_xmalloc_ptr<char>
+      (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
+  }
+
+  /* See language.h.  */
+
+  void value_print (struct value *val, struct ui_file *stream,
+		    const struct value_print_options *options) const override
+  {
+    return ada_value_print (val, stream, options);
+  }
+
+  /* See language.h.  */
+
+  void value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const override
+  {
+    return ada_value_print_inner (val, stream, recurse, options);
+  }
+
+  /* See language.h.  */
+
+  struct block_symbol lookup_symbol_nonlocal
+	(const char *name, const struct block *block,
+	 const domain_enum domain) const override
+  {
+    struct block_symbol sym;
+
+    sym = ada_lookup_symbol (name, block_static_block (block), domain);
+    if (sym.symbol != NULL)
+      return sym;
+
+    /* If we haven't found a match at this point, try the primitive
+       types.  In other languages, this search is performed before
+       searching for global symbols in order to short-circuit that
+       global-symbol search if it happens that the name corresponds
+       to a primitive type.  But we cannot do the same in Ada, because
+       it is perfectly legitimate for a program to declare a type which
+       has the same name as a standard type.  If looking up a type in
+       that situation, we have traditionally ignored the primitive type
+       in favor of user-defined types.  This is why, unlike most other
+       languages, we search the primitive types this late and only after
+       having searched the global symbols without success.  */
+
+    if (domain == VAR_DOMAIN)
+      {
+	struct gdbarch *gdbarch;
+
+	if (block == NULL)
+	  gdbarch = target_gdbarch ();
+	else
+	  gdbarch = block_gdbarch (block);
+	sym.symbol
+	  = language_lookup_primitive_type_as_symbol (this, gdbarch, name);
+	if (sym.symbol != NULL)
+	  return sym;
+      }
+
+    return {};
+  }
+
+  /* See language.h.  */
+
+  int parser (struct parser_state *ps) const override
+  {
+    warnings_issued = 0;
+    return ada_parse (ps);
+  }
+
+  /* See language.h.
+
+     Same as evaluate_type (*EXP), but resolves ambiguous symbol references
+     (marked by OP_VAR_VALUE nodes in which the symbol has an undefined
+     namespace) and converts operators that are user-defined into
+     appropriate function calls.  If CONTEXT_TYPE is non-null, it provides
+     a preferred result type [at the moment, only type void has any
+     effect---causing procedures to be preferred over functions in calls].
+     A null CONTEXT_TYPE indicates that a non-void return type is
+     preferred.  May change (expand) *EXP.  */
+
+  void post_parser (expression_up *expp, int void_context_p, int completing,
+		    innermost_block_tracker *tracker) const override
+  {
+    struct type *context_type = NULL;
+    int pc = 0;
+
+    if (void_context_p)
+      context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
+
+    resolve_subexp (expp, &pc, 1, context_type, completing, tracker);
+  }
+
+  /* See language.h.  */
+
+  void emitchar (int ch, struct type *chtype,
+		 struct ui_file *stream, int quoter) const override
+  {
+    ada_emit_char (ch, chtype, stream, quoter, 1);
+  }
+
+  /* See language.h.  */
+
+  void printchar (int ch, struct type *chtype,
+		  struct ui_file *stream) const override
+  {
+    ada_printchar (ch, chtype, stream);
+  }
+
+  /* See language.h.  */
+
+  void printstr (struct ui_file *stream, struct type *elttype,
+		 const gdb_byte *string, unsigned int length,
+		 const char *encoding, int force_ellipses,
+		 const struct value_print_options *options) const override
+  {
+    ada_printstr (stream, elttype, string, length, encoding,
+		  force_ellipses, options);
+  }
+
+  /* See language.h.  */
+
+  void print_typedef (struct type *type, struct symbol *new_symbol,
+		      struct ui_file *stream) const override
+  {
+    ada_print_typedef (type, new_symbol, stream);
+  }
+
+  /* See language.h.  */
+
+  bool is_string_type_p (struct type *type) const override
+  {
+    return ada_is_string_type (type);
+  }
+
+
+protected:
+  /* See language.h.  */
+
+  symbol_name_matcher_ftype *get_symbol_name_matcher_inner
+	(const lookup_name_info &lookup_name) const override
+  {
+    return ada_get_symbol_name_matcher (lookup_name);
+  }
+};
+
+/* Single instance of the Ada language class.  */
+
+static ada_language ada_language_defn;
+
+/* Command-list for the "set/show ada" prefix command.  */
+static struct cmd_list_element *set_ada_list;
+static struct cmd_list_element *show_ada_list;
 
 static void
 initialize_ada_catchpoint_ops (void)
@@ -14230,18 +14275,19 @@ ada_free_objfile_observer (struct objfil
   ada_clear_symbol_cache ();
 }
 
+void _initialize_ada_language ();
 void
-_initialize_ada_language (void)
+_initialize_ada_language ()
 {
   initialize_ada_catchpoint_ops ();
 
-  add_prefix_cmd ("ada", no_class, set_ada_command,
-                  _("Prefix command for changing Ada-specific settings."),
-                  &set_ada_list, "set ada ", 0, &setlist);
-
-  add_prefix_cmd ("ada", no_class, show_ada_command,
-                  _("Generic command for showing Ada-specific settings."),
-                  &show_ada_list, "show ada ", 0, &showlist);
+  add_basic_prefix_cmd ("ada", no_class,
+			_("Prefix command for changing Ada-specific settings."),
+			&set_ada_list, "set ada ", 0, &setlist);
+
+  add_show_prefix_cmd ("ada", no_class,
+		       _("Generic command for showing Ada-specific settings."),
+		       &show_ada_list, "show ada ", 0, &showlist);
 
   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
                            &trust_pad_over_xvs, _("\
@@ -14318,15 +14364,15 @@ Usage: info exceptions [REGEXP]\n\
 If a regular expression is passed as an argument, only those matching\n\
 the regular expression are listed."));
 
-  add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
-		  _("Set Ada maintenance-related variables."),
-                  &maint_set_ada_cmdlist, "maintenance set ada ",
-                  0/*allow-unknown*/, &maintenance_set_cmdlist);
-
-  add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
-		  _("Show Ada maintenance-related variables."),
-                  &maint_show_ada_cmdlist, "maintenance show ada ",
-                  0/*allow-unknown*/, &maintenance_show_cmdlist);
+  add_basic_prefix_cmd ("ada", class_maintenance,
+			_("Set Ada maintenance-related variables."),
+			&maint_set_ada_cmdlist, "maintenance set ada ",
+			0/*allow-unknown*/, &maintenance_set_cmdlist);
+
+  add_show_prefix_cmd ("ada", class_maintenance,
+		       _("Show Ada maintenance-related variables."),
+		       &maint_show_ada_cmdlist, "maintenance show ada ",
+		       0/*allow-unknown*/, &maintenance_show_cmdlist);
 
   add_setshow_boolean_cmd
     ("ignore-descriptive-types", class_maintenance,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-lang.h ./gdb/ada-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-lang.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ada-lang.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ada language support definitions for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -164,10 +164,10 @@ extern void ada_print_type (struct type
 extern void ada_print_typedef (struct type *type, struct symbol *new_symbol,
 			       struct ui_file *stream);
 
-extern void ada_val_print (struct type *, int, CORE_ADDR,
-			   struct ui_file *, int,
-			   struct value *,
-			   const struct value_print_options *);
+/* Implement la_value_print_inner for Ada.  */
+
+extern void ada_value_print_inner (struct value *, struct ui_file *, int,
+				   const struct value_print_options *);
 
 extern void ada_value_print (struct value *, struct ui_file *,
 			     const struct value_print_options *);
@@ -234,6 +234,11 @@ extern struct bound_minimal_symbol ada_l
 
 extern int ada_scan_number (const char *, int, LONGEST *, int *);
 
+extern struct value *ada_value_primitive_field (struct value *arg1,
+						int offset,
+						int fieldno,
+						struct type *arg_type);
+
 extern struct type *ada_parent_type (struct type *);
 
 extern int ada_is_ignored_field (struct type *, int);
@@ -255,7 +260,7 @@ extern int ada_is_tagged_type (struct ty
 
 extern int ada_is_tag_type (struct type *);
 
-extern const char *ada_tag_name (struct value *);
+extern gdb::unique_xmalloc_ptr<char> ada_tag_name (struct value *);
 
 extern struct value *ada_tag_value_at_base_address (struct value *obj);
 
@@ -276,16 +281,15 @@ extern struct type *ada_aligned_type (st
 extern const gdb_byte *ada_aligned_value_addr (struct type *,
 					       const gdb_byte *);
 
-extern int ada_is_fixed_point_type (struct type *);
+extern int ada_is_gnat_encoded_fixed_point_type (struct type *);
 
 extern int ada_is_system_address_type (struct type *);
 
-extern struct value *ada_delta (struct type *);
+extern struct value *gnat_encoded_fixed_point_delta (struct type *);
 
 extern struct value *ada_scaling_factor (struct type *);
 
-extern int ada_which_variant_applies (struct type *, struct type *,
-				      const gdb_byte *);
+extern int ada_which_variant_applies (struct type *, struct value *);
 
 extern struct type *ada_to_fixed_type (struct type *, const gdb_byte *,
 				       CORE_ADDR, struct value *,
@@ -371,9 +375,10 @@ extern struct ada_task_info *ada_get_tas
 
 extern int ada_get_task_number (thread_info *thread);
 
-typedef void (ada_task_list_iterator_ftype) (struct ada_task_info *task);
+typedef gdb::function_view<void (struct ada_task_info *task)>
+  ada_task_list_iterator_ftype;
 extern void iterate_over_live_ada_tasks
-  (ada_task_list_iterator_ftype *iterator);
+  (ada_task_list_iterator_ftype iterator);
 
 extern const char *ada_get_tcb_types_info (void);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-lex.c ./gdb/ada-lex.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-lex.c	2020-03-07 02:11:12.000000000 +0000
+++ ./gdb/ada-lex.c	2021-05-21 02:00:05.000000000 +0000
@@ -7,8 +7,8 @@
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 1
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -53,7 +53,6 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -84,27 +83,17 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
+#endif /* ! C99 */
 
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
+#endif /* ! FLEXINT_H */
 
-#ifdef YY_USE_CONST
+/* TODO: this is always defined, so inline it */
 #define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
 #else
-#define yyconst
+#define yynoreturn
 #endif
 
 /* Returned upon end-of-file. */
@@ -140,7 +129,15 @@ typedef unsigned int flex_uint32_t;
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
 #define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -152,6 +149,11 @@ typedef unsigned int flex_uint32_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
 extern int yyleng;
 
 extern FILE *yyin, *yyout;
@@ -161,13 +163,14 @@ extern FILE *yyin, *yyout;
 #define EOB_ACT_LAST_MATCH 2
 
     #define YY_LESS_LINENO(n)
+    #define YY_LINENO_REWIND_TO(ptr)
     
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
 	do \
 		{ \
 		/* Undo effects of setting up yytext. */ \
-        int yyless_macro_arg = (n); \
+        yy_size_t yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
 		*yy_cp = (yy_hold_char); \
 		YY_RESTORE_YY_MORE_OFFSET \
@@ -178,11 +181,6 @@ extern FILE *yyin, *yyout;
 
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -195,7 +193,7 @@ struct yy_buffer_state
 	/* Size of input buffer in bytes, not including room for EOB
 	 * characters.
 	 */
-	yy_size_t yy_buf_size;
+	int yy_buf_size;
 
 	/* Number of characters read into yy_ch_buf, not including EOB
 	 * characters.
@@ -251,7 +249,7 @@ struct yy_buffer_state
 /* Stack of input buffers. */
 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 
 /* We provide macros for accessing buffer states in case in the
  * future we want to put the buffer states in a more general
@@ -274,7 +272,7 @@ static int yy_n_chars;		/* number of cha
 int yyleng;
 
 /* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
+static char *yy_c_buf_p = NULL;
 static int yy_init = 0;		/* whether we need to initialize */
 static int yy_start = 0;	/* start state number */
 
@@ -331,12 +329,12 @@ void yyfree (void *  );
 
 /* Begin user sect3 */
 
-#define yywrap(n) 1
+#define yywrap() (/*CONSTCOND*/1)
 #define YY_SKIP_YYWRAP
 
 typedef unsigned char YY_CHAR;
 
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+FILE *yyin = NULL, *yyout = NULL;
 
 typedef int yy_state_type;
 
@@ -345,19 +343,22 @@ extern int yylineno;
 int yylineno = 1;
 
 extern char *yytext;
+#ifdef yytext_ptr
+#undef yytext_ptr
+#endif
 #define yytext_ptr yytext
 
 static yy_state_type yy_get_previous_state (void );
 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
 static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[]  );
+static void yynoreturn yy_fatal_error (yyconst char* msg  );
 
 /* Done after the current pattern has been matched and before the
  * corresponding action - sets up yytext.
  */
 #define YY_DO_BEFORE_ACTION \
 	(yytext_ptr) = yy_bp; \
-	yyleng = (size_t) (yy_cp - yy_bp); \
+	yyleng = (int) (yy_cp - yy_bp); \
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
@@ -398,7 +399,7 @@ static yyconst flex_int16_t yy_accept[20
        13,    0,   18,   10,   10,    0
     } ;
 
-static yyconst flex_int32_t yy_ec[256] =
+static yyconst YY_CHAR yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -430,7 +431,7 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[68] =
+static yyconst YY_CHAR yy_meta[68] =
     {   0,
         1,    2,    3,    4,    5,    6,    7,    8,    5,    9,
         5,    5,    5,    5,    5,    5,   10,    5,   11,   11,
@@ -441,7 +442,7 @@ static yyconst flex_int32_t yy_meta[68]
        16,   16,   16,   16,   16,   16,   16
     } ;
 
-static yyconst flex_int16_t yy_base[229] =
+static yyconst flex_uint16_t yy_base[229] =
     {   0,
         0,    0,  649,  638,  646, 1252, 1252, 1252,   62,    0,
      1252,  109, 1252, 1252,  623, 1252,  619,  175,  606,  174,
@@ -499,7 +500,7 @@ static yyconst flex_int16_t yy_def[229]
       206,  206,  206,  206,  206,  206,  206,  206
     } ;
 
-static yyconst flex_int16_t yy_nxt[1320] =
+static yyconst flex_uint16_t yy_nxt[1320] =
     {   0,
         6,    7,    8,    7,    6,    9,    6,   10,   11,   12,
        13,   14,   15,   11,   16,   17,   18,   19,   20,   21,
@@ -813,7 +814,7 @@ int yy_flex_debug = 0;
 char *yytext;
 #line 1 "ada-lex.l"
 /* FLEX lexer for Ada expressions, for GDB.
-   Copyright (C) 1994-2020 Free Software Foundation, Inc.
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -841,7 +842,9 @@ char *yytext;
 
 /* Some old versions of flex generate code that uses the "register" keyword,
    which clang warns about.  This was observed for example with flex 2.5.35,
-   as shipped with macOS 10.12.  */
+   as shipped with macOS 10.12.  The same happens with flex 2.5.37 and g++ 11
+   which defaults to ISO C++17, that does not allow register storage class
+   specifiers.  */
 DIAGNOSTIC_PUSH
 DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
 
@@ -884,7 +887,7 @@ static int find_dot_all (const char *);
 static int paren_depth;
 
 
-#line 888 "<stdout>"
+#line 891 "<stdout>"
 
 #define INITIAL 0
 #define BEFORE_QUAL_QUOTE 1
@@ -918,19 +921,19 @@ void yyset_extra (YY_EXTRA_TYPE user_def
 
 FILE *yyget_in (void );
 
-void yyset_in  (FILE * in_str  );
+void yyset_in  (FILE * _in_str  );
 
 FILE *yyget_out (void );
 
-void yyset_out  (FILE * out_str  );
+void yyset_out  (FILE * _out_str  );
 
-int yyget_leng (void );
+			int yyget_leng (void );
 
 char *yyget_text (void );
 
 int yyget_lineno (void );
 
-void yyset_lineno (int line_number  );
+void yyset_lineno (int _line_number  );
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -944,8 +947,12 @@ extern int yywrap (void );
 #endif
 #endif
 
+#ifndef YY_NO_UNPUT
+    
     static void yyunput (int c,char *buf_ptr  );
     
+#endif
+
 #ifndef yytext_ptr
 static void yy_flex_strncpy (char *,yyconst char *,int );
 #endif
@@ -966,7 +973,12 @@ static int input (void );
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
 #define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -974,7 +986,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -985,7 +997,7 @@ static int input (void );
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		unsigned n; \
+		int n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -998,7 +1010,7 @@ static int input (void );
 	else \
 		{ \
 		errno=0; \
-		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+		while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
 			{ \
 			if( errno != EINTR) \
 				{ \
@@ -1053,7 +1065,7 @@ extern int yylex (void);
 
 /* Code executed at the end of each rule. */
 #ifndef YY_BREAK
-#define YY_BREAK break;
+#define YY_BREAK /*LINTED*/break;
 #endif
 
 #define YY_RULE_SETUP \
@@ -1063,15 +1075,10 @@ extern int yylex (void);
  */
 YY_DECL
 {
-	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
-	register int yy_act;
+	yy_state_type yy_current_state;
+	char *yy_cp, *yy_bp;
+	int yy_act;
     
-#line 96 "ada-lex.l"
-
-
-#line 1074 "<stdout>"
-
 	if ( !(yy_init) )
 		{
 		(yy_init) = 1;
@@ -1098,7 +1105,13 @@ YY_DECL
 		yy_load_buffer_state( );
 		}
 
-	while ( 1 )		/* loops until end-of-file is reached */
+	{
+#line 98 "ada-lex.l"
+
+
+#line 1113 "<stdout>"
+
+	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
 		yy_cp = (yy_c_buf_p);
 
@@ -1114,7 +1127,7 @@ YY_DECL
 yy_match:
 		do
 			{
-			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
 			if ( yy_accept[yy_current_state] )
 				{
 				(yy_last_accepting_state) = yy_current_state;
@@ -1126,7 +1139,7 @@ yy_match:
 				if ( yy_current_state >= 207 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
 			++yy_cp;
 			}
 		while ( yy_base[yy_current_state] != 1252 );
@@ -1156,17 +1169,17 @@ do_action:	/* This label is used only to
 case 1:
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 98 "ada-lex.l"
+#line 100 "ada-lex.l"
 { }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 100 "ada-lex.l"
+#line 102 "ada-lex.l"
 { yyterminate(); }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 102 "ada-lex.l"
+#line 104 "ada-lex.l"
 {
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processInt (pstate, NULL, numbuf,
@@ -1175,7 +1188,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 108 "ada-lex.l"
+#line 110 "ada-lex.l"
 {
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processInt (pstate, NULL, numbuf, NULL);
@@ -1183,7 +1196,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 113 "ada-lex.l"
+#line 115 "ada-lex.l"
 {
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processInt (pstate, numbuf,
@@ -1193,7 +1206,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 120 "ada-lex.l"
+#line 122 "ada-lex.l"
 {
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processInt (pstate, numbuf, strchr (numbuf, '#') + 1,
@@ -1202,7 +1215,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 126 "ada-lex.l"
+#line 128 "ada-lex.l"
 {
 		  canonicalizeNumeral (numbuf, yytext+2);
 		  return processInt (pstate, "16#", numbuf, NULL);
@@ -1210,7 +1223,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 132 "ada-lex.l"
+#line 134 "ada-lex.l"
 {
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processReal (pstate, numbuf);
@@ -1218,7 +1231,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 137 "ada-lex.l"
+#line 139 "ada-lex.l"
 {
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processReal (pstate, numbuf);
@@ -1226,21 +1239,21 @@ YY_RULE_SETUP
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 142 "ada-lex.l"
+#line 144 "ada-lex.l"
 {
                    error (_("Based real literals not implemented yet."));
 		}
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 146 "ada-lex.l"
+#line 148 "ada-lex.l"
 {
                    error (_("Based real literals not implemented yet."));
 		}
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 150 "ada-lex.l"
+#line 152 "ada-lex.l"
 {
 		   yylval.typed_val.type = type_char (pstate);
 		   yylval.typed_val.val = yytext[1];
@@ -1249,7 +1262,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 156 "ada-lex.l"
+#line 158 "ada-lex.l"
 {
                    int v;
                    yylval.typed_val.type = type_char (pstate);
@@ -1260,7 +1273,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 164 "ada-lex.l"
+#line 166 "ada-lex.l"
 {
 	           yylval.sval = processString (yytext+1, yyleng-2);
 		   return STRING;
@@ -1268,14 +1281,14 @@ YY_RULE_SETUP
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 169 "ada-lex.l"
+#line 171 "ada-lex.l"
 {
                    error (_("ill-formed or non-terminated string literal"));
 		}
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 174 "ada-lex.l"
+#line 176 "ada-lex.l"
 {
                   rewind_to_char ('i');
 		  return 0;
@@ -1283,7 +1296,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 179 "ada-lex.l"
+#line 181 "ada-lex.l"
 {
                   rewind_to_char ('t');
 		  return 0;
@@ -1292,7 +1305,7 @@ YY_RULE_SETUP
 case 18:
 /* rule 18 can match eol */
 YY_RULE_SETUP
-#line 184 "ada-lex.l"
+#line 186 "ada-lex.l"
 {
                   /* This keyword signals the end of the expression and
                      will be processed separately.  */
@@ -1303,67 +1316,67 @@ YY_RULE_SETUP
 /* ADA KEYWORDS */
 case 19:
 YY_RULE_SETUP
-#line 193 "ada-lex.l"
+#line 195 "ada-lex.l"
 { return ABS; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 194 "ada-lex.l"
+#line 196 "ada-lex.l"
 { return _AND_; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 195 "ada-lex.l"
+#line 197 "ada-lex.l"
 { return ELSE; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 196 "ada-lex.l"
+#line 198 "ada-lex.l"
 { return IN; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 197 "ada-lex.l"
+#line 199 "ada-lex.l"
 { return MOD; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 198 "ada-lex.l"
+#line 200 "ada-lex.l"
 { return NEW; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 199 "ada-lex.l"
+#line 201 "ada-lex.l"
 { return NOT; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 200 "ada-lex.l"
+#line 202 "ada-lex.l"
 { return NULL_PTR; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 201 "ada-lex.l"
+#line 203 "ada-lex.l"
 { return OR; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 202 "ada-lex.l"
+#line 204 "ada-lex.l"
 { return OTHERS; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 203 "ada-lex.l"
+#line 205 "ada-lex.l"
 { return REM; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 204 "ada-lex.l"
+#line 206 "ada-lex.l"
 { return THEN; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 205 "ada-lex.l"
+#line 207 "ada-lex.l"
 { return XOR; }
 	YY_BREAK
 /* BOOLEAN "KEYWORDS" */
@@ -1373,70 +1386,70 @@ YY_RULE_SETUP
     making them keywords (when bare). */
 case 32:
 YY_RULE_SETUP
-#line 214 "ada-lex.l"
+#line 216 "ada-lex.l"
 { return TRUEKEYWORD; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 215 "ada-lex.l"
+#line 217 "ada-lex.l"
 { return FALSEKEYWORD; }
 	YY_BREAK
 /* ATTRIBUTES */
 case 34:
 /* rule 34 can match eol */
 YY_RULE_SETUP
-#line 219 "ada-lex.l"
+#line 221 "ada-lex.l"
 { BEGIN INITIAL; return processAttribute (yytext+1); }
 	YY_BREAK
 /* PUNCTUATION */
 case 35:
 YY_RULE_SETUP
-#line 223 "ada-lex.l"
+#line 225 "ada-lex.l"
 { return ARROW; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 224 "ada-lex.l"
+#line 226 "ada-lex.l"
 { return DOTDOT; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 225 "ada-lex.l"
+#line 227 "ada-lex.l"
 { return STARSTAR; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 226 "ada-lex.l"
+#line 228 "ada-lex.l"
 { return ASSIGN; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 227 "ada-lex.l"
+#line 229 "ada-lex.l"
 { return NOTEQUAL; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 228 "ada-lex.l"
+#line 230 "ada-lex.l"
 { return LEQ; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 229 "ada-lex.l"
+#line 231 "ada-lex.l"
 { return GEQ; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 231 "ada-lex.l"
+#line 233 "ada-lex.l"
 { BEGIN INITIAL; return '\''; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 233 "ada-lex.l"
+#line 235 "ada-lex.l"
 { return yytext[0]; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 235 "ada-lex.l"
+#line 237 "ada-lex.l"
 { if (paren_depth == 0 && pstate->comma_terminates)
 		    {
 		      rewind_to_char (',');
@@ -1448,12 +1461,12 @@ YY_RULE_SETUP
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 244 "ada-lex.l"
+#line 246 "ada-lex.l"
 { paren_depth += 1; return '('; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 245 "ada-lex.l"
+#line 247 "ada-lex.l"
 { if (paren_depth == 0)
 		    {
 		      rewind_to_char (')');
@@ -1469,13 +1482,13 @@ YY_RULE_SETUP
 case 47:
 /* rule 47 can match eol */
 YY_RULE_SETUP
-#line 257 "ada-lex.l"
+#line 259 "ada-lex.l"
 { return DOT_ALL; }
 	YY_BREAK
 case 48:
 /* rule 48 can match eol */
 YY_RULE_SETUP
-#line 259 "ada-lex.l"
+#line 261 "ada-lex.l"
 {
 	 	  yylval.sval = processId (yytext+1, yyleng-1);
 	          return DOT_ID;
@@ -1484,7 +1497,7 @@ YY_RULE_SETUP
 case 49:
 /* rule 49 can match eol */
 YY_RULE_SETUP
-#line 264 "ada-lex.l"
+#line 266 "ada-lex.l"
 {
                   int all_posn = find_dot_all (yytext);
 
@@ -1503,7 +1516,7 @@ YY_RULE_SETUP
 case 50:
 /* rule 50 can match eol */
 YY_RULE_SETUP
-#line 281 "ada-lex.l"
+#line 283 "ada-lex.l"
 {
                   yyless (yyleng - 2);
 		  yylval.sval = processId (yytext, yyleng);
@@ -1512,18 +1525,18 @@ YY_RULE_SETUP
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 287 "ada-lex.l"
+#line 289 "ada-lex.l"
 { return COLONCOLON; }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 289 "ada-lex.l"
+#line 291 "ada-lex.l"
 { return yytext[0]; }
 	YY_BREAK
 /* REGISTERS AND GDB CONVENIENCE VARIABLES */
 case 53:
 YY_RULE_SETUP
-#line 293 "ada-lex.l"
+#line 295 "ada-lex.l"
 {
 		  yylval.sval.ptr = yytext;
 		  yylval.sval.length = yyleng;
@@ -1533,15 +1546,15 @@ YY_RULE_SETUP
 /* CATCH-ALL ERROR CASE */
 case 54:
 YY_RULE_SETUP
-#line 301 "ada-lex.l"
+#line 303 "ada-lex.l"
 { error (_("Invalid character '%s' in expression."), yytext); }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 302 "ada-lex.l"
+#line 304 "ada-lex.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 1545 "<stdout>"
+#line 1558 "<stdout>"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(BEFORE_QUAL_QUOTE):
 	yyterminate();
@@ -1673,6 +1686,7 @@ case YY_STATE_EOF(BEFORE_QUAL_QUOTE):
 			"fatal flex scanner internal error--no action found" );
 	} /* end of action switch */
 		} /* end of scanning one token */
+	} /* end of user's declarations */
 } /* end of yylex */
 
 /* yy_get_next_buffer - try to read in a new buffer
@@ -1684,9 +1698,9 @@ case YY_STATE_EOF(BEFORE_QUAL_QUOTE):
  */
 static int yy_get_next_buffer (void)
 {
-    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	register char *source = (yytext_ptr);
-	register int number_to_move, i;
+    	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	char *source = (yytext_ptr);
+	yy_size_t number_to_move, i;
 	int ret_val;
 
 	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -1715,7 +1729,7 @@ static int yy_get_next_buffer (void)
 	/* Try to read more data. */
 
 	/* First move last chars to start of buffer. */
-	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+	number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
 
 	for ( i = 0; i < number_to_move; ++i )
 		*(dest++) = *(source++);
@@ -1735,7 +1749,7 @@ static int yy_get_next_buffer (void)
 			{ /* Not enough room in the buffer - grow it. */
 
 			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
 			int yy_c_buf_p_offset =
 				(int) ((yy_c_buf_p) - b->yy_ch_buf);
@@ -1751,11 +1765,11 @@ static int yy_get_next_buffer (void)
 
 				b->yy_ch_buf = (char *)
 					/* Include room in for 2 EOB chars. */
-					yyxrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+					yyxrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2)  );
 				}
 			else
 				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
+				b->yy_ch_buf = NULL;
 
 			if ( ! b->yy_ch_buf )
 				YY_FATAL_ERROR(
@@ -1773,7 +1787,7 @@ static int yy_get_next_buffer (void)
 
 		/* Read in more data. */
 		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-			(yy_n_chars), (size_t) num_to_read );
+			(yy_n_chars), num_to_read );
 
 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 		}
@@ -1797,10 +1811,10 @@ static int yy_get_next_buffer (void)
 	else
 		ret_val = EOB_ACT_CONTINUE_SCAN;
 
-	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+	if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
 		/* Extend the array by 50%, plus the number we really need. */
-		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyxrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+		int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyxrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size  );
 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
 	}
@@ -1818,14 +1832,14 @@ static int yy_get_next_buffer (void)
 
     static yy_state_type yy_get_previous_state (void)
 {
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
+	yy_state_type yy_current_state;
+	char *yy_cp;
     
 	yy_current_state = (yy_start);
 
 	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
 		{
-		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
 		if ( yy_accept[yy_current_state] )
 			{
 			(yy_last_accepting_state) = yy_current_state;
@@ -1837,7 +1851,7 @@ static int yy_get_next_buffer (void)
 			if ( yy_current_state >= 207 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
 		}
 
 	return yy_current_state;
@@ -1850,10 +1864,10 @@ static int yy_get_next_buffer (void)
  */
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 {
-	register int yy_is_jam;
-    	register char *yy_cp = (yy_c_buf_p);
+	int yy_is_jam;
+    	char *yy_cp = (yy_c_buf_p);
 
-	register YY_CHAR yy_c = 1;
+	YY_CHAR yy_c = 1;
 	if ( yy_accept[yy_current_state] )
 		{
 		(yy_last_accepting_state) = yy_current_state;
@@ -1865,15 +1879,17 @@ static int yy_get_next_buffer (void)
 		if ( yy_current_state >= 207 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
 	yy_is_jam = (yy_current_state == 206);
 
-	return yy_is_jam ? 0 : yy_current_state;
+		return yy_is_jam ? 0 : yy_current_state;
 }
 
-    static void yyunput (int c, register char * yy_bp )
+#ifndef YY_NO_UNPUT
+
+    static void yyunput (int c, char * yy_bp )
 {
-	register char *yy_cp;
+	char *yy_cp;
     
     yy_cp = (yy_c_buf_p);
 
@@ -1883,10 +1899,10 @@ static int yy_get_next_buffer (void)
 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 		{ /* need to shift things up to make room */
 		/* +2 for EOB chars. */
-		register int number_to_move = (yy_n_chars) + 2;
-		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+		int number_to_move = (yy_n_chars) + 2;
+		char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-		register char *source =
+		char *source =
 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
 
 		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
@@ -1895,7 +1911,7 @@ static int yy_get_next_buffer (void)
 		yy_cp += (int) (dest - source);
 		yy_bp += (int) (dest - source);
 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+			(yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
 
 		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
@@ -1908,6 +1924,8 @@ static int yy_get_next_buffer (void)
 	(yy_c_buf_p) = yy_cp;
 }
 
+#endif
+
 #ifndef YY_NO_INPUT
 #ifdef __cplusplus
     static int yyinput (void)
@@ -1956,7 +1974,7 @@ static int yy_get_next_buffer (void)
 				case EOB_ACT_END_OF_FILE:
 					{
 					if ( yywrap( ) )
-						return EOF;
+						return 0;
 
 					if ( ! (yy_did_buffer_switch_on_eof) )
 						YY_NEW_FILE;
@@ -2062,7 +2080,7 @@ static void yy_load_buffer_state  (void)
 	/* yy_ch_buf has to be 2 characters longer than the size given because
 	 * we need to put in 2 end-of-buffer characters.
 	 */
-	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
+	b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2)  );
 	if ( ! b->yy_ch_buf )
 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
@@ -2092,10 +2110,6 @@ static void yy_load_buffer_state  (void)
 	yyfree((void *) b  );
 }
 
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-    
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a yyrestart() or at EOF.
@@ -2216,7 +2230,7 @@ static void yyensure_buffer_stack (void)
 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
 		 * immediate xrealloc on the next call.
          */
-		num_to_alloc = 1;
+      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
 		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
 								(num_to_alloc * sizeof(struct yy_buffer_state*)
 								);
@@ -2233,7 +2247,7 @@ static void yyensure_buffer_stack (void)
 	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 
 		/* Increase the buffer to prepare for a possible push. */
-		int grow_size = 8 /* arbitrary grow size */;
+		yy_size_t grow_size = 8 /* arbitrary grow size */;
 
 		num_to_alloc = (yy_buffer_stack_max) + grow_size;
 		(yy_buffer_stack) = (struct yy_buffer_state**)yyxrealloc
@@ -2263,16 +2277,16 @@ YY_BUFFER_STATE yy_scan_buffer  (char *
 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
 		/* They forgot to leave room for the EOB's. */
-		return 0;
+		return NULL;
 
 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
 	if ( ! b )
 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
 
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_size = (int) (size - 2);	/* "- 2" to take care of EOB's */
 	b->yy_buf_pos = b->yy_ch_buf = base;
 	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
+	b->yy_input_file = NULL;
 	b->yy_n_chars = b->yy_buf_size;
 	b->yy_is_interactive = 0;
 	b->yy_at_bol = 1;
@@ -2295,13 +2309,13 @@ YY_BUFFER_STATE yy_scan_buffer  (char *
 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
 {
     
-	return yy_scan_bytes(yystr,strlen(yystr) );
+	return yy_scan_bytes(yystr,(int) strlen(yystr) );
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
  * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
@@ -2313,7 +2327,7 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst
 	int i;
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = _yybytes_len + 2;
+	n = (yy_size_t) (_yybytes_len + 2);
 	buf = (char *) yyalloc(n  );
 	if ( ! buf )
 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
@@ -2339,9 +2353,9 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yy_fatal_error (yyconst char* msg )
+static void yynoreturn yy_fatal_error (yyconst char* msg )
 {
-    	(void) fprintf( stderr, "%s\n", msg );
+			(void) fprintf( stderr, "%s\n", msg );
 	exit( YY_EXIT_FAILURE );
 }
 
@@ -2352,7 +2366,7 @@ static void yy_fatal_error (yyconst char
 	do \
 		{ \
 		/* Undo effects of setting up yytext. */ \
-        int yyless_macro_arg = (n); \
+        yy_size_t yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
 		yytext[yyleng] = (yy_hold_char); \
 		(yy_c_buf_p) = yytext + yyless_macro_arg; \
@@ -2407,29 +2421,29 @@ char *yyget_text  (void)
 }
 
 /** Set the current line number.
- * @param line_number
+ * @param _line_number line number
  * 
  */
-void yyset_lineno (int  line_number )
+void yyset_lineno (int  _line_number )
 {
     
-    yylineno = line_number;
+    yylineno = _line_number;
 }
 
 /** Set the input stream. This does not discard the current
  * input buffer.
- * @param in_str A readable stream.
+ * @param _in_str A readable stream.
  * 
  * @see yy_switch_to_buffer
  */
-void yyset_in (FILE *  in_str )
+void yyset_in (FILE *  _in_str )
 {
-        yyin = in_str ;
+        yyin = _in_str ;
 }
 
-void yyset_out (FILE *  out_str )
+void yyset_out (FILE *  _out_str )
 {
-        yyout = out_str ;
+        yyout = _out_str ;
 }
 
 int yyget_debug  (void)
@@ -2437,9 +2451,9 @@ int yyget_debug  (void)
         return yy_flex_debug;
 }
 
-void yyset_debug (int  bdebug )
+void yyset_debug (int  _bdebug )
 {
-        yy_flex_debug = bdebug ;
+        yy_flex_debug = _bdebug ;
 }
 
 static int yy_init_globals (void)
@@ -2448,10 +2462,10 @@ static int yy_init_globals (void)
      * This function is called from yylex_destroy(), so don't allocate here.
      */
 
-    (yy_buffer_stack) = 0;
+    (yy_buffer_stack) = NULL;
     (yy_buffer_stack_top) = 0;
     (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
+    (yy_c_buf_p) = NULL;
     (yy_init) = 0;
     (yy_start) = 0;
 
@@ -2460,8 +2474,8 @@ static int yy_init_globals (void)
     yyin = stdin;
     yyout = stdout;
 #else
-    yyin = (FILE *) 0;
-    yyout = (FILE *) 0;
+    yyin = NULL;
+    yyout = NULL;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
@@ -2499,7 +2513,8 @@ int yylex_destroy  (void)
 #ifndef yytext_ptr
 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 {
-	register int i;
+		
+	int i;
 	for ( i = 0; i < n; ++i )
 		s1[i] = s2[i];
 }
@@ -2508,7 +2523,7 @@ static void yy_flex_strncpy (char* s1, y
 #ifdef YY_NEED_STRLEN
 static int yy_flex_strlen (yyconst char * s )
 {
-	register int n;
+	int n;
 	for ( n = 0; s[n]; ++n )
 		;
 
@@ -2518,11 +2533,12 @@ static int yy_flex_strlen (yyconst char
 
 void *yyalloc (yy_size_t  size )
 {
-	return (void *) xmalloc( size );
+			return xmalloc(size);
 }
 
 void *yyxrealloc  (void * ptr, yy_size_t  size )
 {
+		
 	/* The cast to (char *) in the following accommodates both
 	 * implementations that use char* generic pointers, and those
 	 * that use void* generic pointers.  It works with the latter
@@ -2530,17 +2546,17 @@ void *yyxrealloc  (void * ptr, yy_size_t
 	 * any pointer type to void*, and deal with argument conversions
 	 * as though doing an assignment.
 	 */
-	return (void *) xrealloc( (char *) ptr, size );
+	return xrealloc(ptr, size);
 }
 
 void yyfree (void * ptr )
 {
-	xfree( (char *) ptr );	/* see yyxrealloc() for (char *) cast */
+			xfree( (char *) ptr );	/* see yyxrealloc() for (char *) cast */
 }
 
 #define YYTABLES_NAME "yytables"
 
-#line 302 "ada-lex.l"
+#line 304 "ada-lex.l"
 
 
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-lex.l ./gdb/ada-lex.l
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-lex.l	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ada-lex.l	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* FLEX lexer for Ada expressions, for GDB.
-   Copyright (C) 1994-2020 Free Software Foundation, Inc.
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -45,7 +45,9 @@ POSEXP  (e"+"?{NUM10})
 
 /* Some old versions of flex generate code that uses the "register" keyword,
    which clang warns about.  This was observed for example with flex 2.5.35,
-   as shipped with macOS 10.12.  */
+   as shipped with macOS 10.12.  The same happens with flex 2.5.37 and g++ 11
+   which defaults to ISO C++17, that does not allow register storage class
+   specifiers.  */
 DIAGNOSTIC_PUSH
 DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-operator.def ./gdb/ada-operator.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-operator.def	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ada-operator.def	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ada language operator definitions for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-tasks.c ./gdb/ada-tasks.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-tasks.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ada-tasks.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -376,7 +376,7 @@ ada_get_task_info_from_ptid (ptid_t ptid
    terminated yet.  */
 
 void
-iterate_over_live_ada_tasks (ada_task_list_iterator_ftype *iterator)
+iterate_over_live_ada_tasks (ada_task_list_iterator_ftype iterator)
 {
   struct ada_tasks_inferior_data *data;
 
@@ -430,10 +430,10 @@ read_fat_string_value (char *dest, struc
       array_fieldno = ada_get_field_index (type, "P_ARRAY", 0);
       bounds_fieldno = ada_get_field_index (type, "P_BOUNDS", 0);
 
-      bounds_type = TYPE_FIELD_TYPE (type, bounds_fieldno);
-      if (TYPE_CODE (bounds_type) == TYPE_CODE_PTR)
+      bounds_type = type->field (bounds_fieldno).type ();
+      if (bounds_type->code () == TYPE_CODE_PTR)
         bounds_type = TYPE_TARGET_TYPE (bounds_type);
-      if (TYPE_CODE (bounds_type) != TYPE_CODE_STRUCT)
+      if (bounds_type->code () != TYPE_CODE_STRUCT)
         error (_("Unknown task name format. Aborting"));
       upper_bound_fieldno = ada_get_field_index (bounds_type, "UB0", 0);
 
@@ -679,7 +679,8 @@ read_atcb (CORE_ADDR task_id, struct ada
 		  task_name = p + 2;
 
 	      /* Copy the task name.  */
-	      strncpy (task_info->name, task_name, sizeof (task_info->name));
+	      strncpy (task_info->name, task_name,
+		       sizeof (task_info->name) - 1);
 	      task_info->name[sizeof (task_info->name) - 1] = 0;
 	    }
 	  else
@@ -889,18 +890,19 @@ ada_tasks_inferior_data_sniffer (struct
 	  struct type *eltype = NULL;
 	  struct type *idxtype = NULL;
 
-	  if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+	  if (type->code () == TYPE_CODE_ARRAY)
 	    eltype = check_typedef (TYPE_TARGET_TYPE (type));
 	  if (eltype != NULL
-	      && TYPE_CODE (eltype) == TYPE_CODE_PTR)
-	    idxtype = check_typedef (TYPE_INDEX_TYPE (type));
+	      && eltype->code () == TYPE_CODE_PTR)
+	    idxtype = check_typedef (type->index_type ());
 	  if (idxtype != NULL
-	      && !TYPE_LOW_BOUND_UNDEFINED (idxtype)
-	      && !TYPE_HIGH_BOUND_UNDEFINED (idxtype))
+	      && idxtype->bounds ()->low.kind () != PROP_UNDEFINED
+	      && idxtype->bounds ()->high.kind () != PROP_UNDEFINED)
 	    {
 	      data->known_tasks_element = eltype;
 	      data->known_tasks_length =
-		TYPE_HIGH_BOUND (idxtype) - TYPE_LOW_BOUND (idxtype) + 1;
+		(idxtype->bounds ()->high.const_val ()
+		 - idxtype->bounds ()->low.const_val () + 1);
 	      return;
 	    }
 	}
@@ -932,7 +934,7 @@ ada_tasks_inferior_data_sniffer (struct
 	  /* Validate.  */
 	  struct type *type = check_typedef (SYMBOL_TYPE (sym));
 
-	  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+	  if (type->code () == TYPE_CODE_PTR)
 	    {
 	      data->known_tasks_element = type;
 	      return;
@@ -1128,7 +1130,7 @@ print_ada_task_info (struct ui_out *uiou
       if (uiout->is_mi_like_p ())
         {
 	  thread_info *thread = (ada_task_is_alive (task_info)
-				 ? find_thread_ptid (task_info->ptid)
+				 ? find_thread_ptid (inf, task_info->ptid)
 				 : nullptr);
 
 	  if (thread != NULL)
@@ -1343,7 +1345,7 @@ task_command_1 (const char *taskno_str,
      computed if target_get_ada_task_ptid has not been implemented for
      our target (yet).  Rather than cause an assertion error in that case,
      it's nicer for the user to just refuse to perform the task switch.  */
-  thread_info *tp = find_thread_ptid (task_info->ptid);
+  thread_info *tp = find_thread_ptid (inf, task_info->ptid);
   if (tp == NULL)
     error (_("Unable to compute thread ID for task %s.\n"
              "Cannot switch to this task."),
@@ -1432,9 +1434,7 @@ ada_tasks_new_objfile_observer (struct o
     {
       /* All objfiles are being cleared, so we should clear all
 	 our caches for all program spaces.  */
-      struct program_space *pspace;
-
-      for (pspace = program_spaces; pspace != NULL; pspace = pspace->next)
+      for (struct program_space *pspace : program_spaces)
         ada_tasks_invalidate_pspace_data (pspace);
     }
   else
@@ -1455,8 +1455,9 @@ ada_tasks_new_objfile_observer (struct o
       ada_tasks_invalidate_inferior_data (inf);
 }
 
+void _initialize_tasks ();
 void
-_initialize_tasks (void)
+_initialize_tasks ()
 {
   /* Attach various observers.  */
   gdb::observers::normal_stop.attach (ada_tasks_normal_stop_observer);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-typeprint.c ./gdb/ada-typeprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-typeprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ada-typeprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for printing Ada types for GDB, the GNU debugger.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -101,7 +101,7 @@ type_is_full_subrange_of_target_type (st
 {
   struct type *subtype;
 
-  if (TYPE_CODE (type) != TYPE_CODE_RANGE)
+  if (type->code () != TYPE_CODE_RANGE)
     return 0;
 
   subtype = TYPE_TARGET_TYPE (type);
@@ -146,7 +146,7 @@ print_range (struct type *type, struct u
 	type = TYPE_TARGET_TYPE (type);
     }
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_RANGE:
     case TYPE_CODE_ENUM:
@@ -180,8 +180,8 @@ print_range (struct type *type, struct u
       break;
     default:
       fprintf_filtered (stream, "%.*s",
-			ada_name_prefix_len (TYPE_NAME (type)),
-			TYPE_NAME (type));
+			ada_name_prefix_len (type->name ()),
+			type->name ());
       break;
     }
 }
@@ -208,7 +208,7 @@ print_range_bound (struct type *type, co
          to indicate default output when we detect that the bound is negative,
          and the type is a TYPE_CODE_INT.  The bound is negative when
          'm' is the last character of the number scanned in BOUNDS.  */
-      if (bounds[*n - 1] == 'm' && TYPE_CODE (type) == TYPE_CODE_INT)
+      if (bounds[*n - 1] == 'm' && type->code () == TYPE_CODE_INT)
 	type = NULL;
       ada_print_scalar (type, B, stream);
       if (bounds[*n] == '_')
@@ -267,10 +267,10 @@ print_range_type (struct type *raw_type,
   const char *subtype_info;
 
   gdb_assert (raw_type != NULL);
-  name = TYPE_NAME (raw_type);
+  name = raw_type->name ();
   gdb_assert (name != NULL);
 
-  if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
+  if (raw_type->code () == TYPE_CODE_RANGE)
     base_type = TYPE_TARGET_TYPE (raw_type);
   else
     base_type = raw_type;
@@ -312,7 +312,7 @@ print_range_type (struct type *raw_type,
 static void
 print_enum_type (struct type *type, struct ui_file *stream)
 {
-  int len = TYPE_NFIELDS (type);
+  int len = type->num_fields ();
   int i;
   LONGEST lastval;
 
@@ -326,7 +326,8 @@ print_enum_type (struct type *type, stru
       if (i)
 	fprintf_filtered (stream, ", ");
       wrap_here ("    ");
-      fputs_filtered (ada_enum_name (TYPE_FIELD_NAME (type, i)), stream);
+      fputs_styled (ada_enum_name (TYPE_FIELD_NAME (type, i)),
+		    variable_name_style.style (), stream);
       if (lastval != TYPE_FIELD_ENUMVAL (type, i))
 	{
 	  fprintf_filtered (stream, " => %s",
@@ -341,9 +342,9 @@ print_enum_type (struct type *type, stru
 /* Print representation of Ada fixed-point type TYPE on STREAM.  */
 
 static void
-print_fixed_point_type (struct type *type, struct ui_file *stream)
+print_gnat_encoded_fixed_point_type (struct type *type, struct ui_file *stream)
 {
-  struct value *delta = ada_delta (type);
+  struct value *delta = gnat_encoded_fixed_point_delta (type);
   struct value *small = ada_scaling_factor (type);
 
   if (delta == nullptr)
@@ -401,12 +402,12 @@ print_array_type (struct type *type, str
       bitsize = 0;
       if (range_desc_type == NULL)
 	{
-	  for (arr_type = type; TYPE_CODE (arr_type) == TYPE_CODE_ARRAY;
+	  for (arr_type = type; arr_type->code () == TYPE_CODE_ARRAY;
 	       arr_type = TYPE_TARGET_TYPE (arr_type))
 	    {
 	      if (arr_type != type)
 		fprintf_filtered (stream, ", ");
-	      print_range (TYPE_INDEX_TYPE (arr_type), stream,
+	      print_range (arr_type->index_type (), stream,
 			   0 /* bounds_prefered_p */);
 	      if (TYPE_FIELD_BITSIZE (arr_type, 0) > 0)
 		bitsize = TYPE_FIELD_BITSIZE (arr_type, 0);
@@ -416,14 +417,14 @@ print_array_type (struct type *type, str
 	{
 	  int k;
 
-	  n_indices = TYPE_NFIELDS (range_desc_type);
+	  n_indices = range_desc_type->num_fields ();
 	  for (k = 0, arr_type = type;
 	       k < n_indices;
 	       k += 1, arr_type = TYPE_TARGET_TYPE (arr_type))
 	    {
 	      if (k > 0)
 		fprintf_filtered (stream, ", ");
-	      print_range_type (TYPE_FIELD_TYPE (range_desc_type, k),
+	      print_range_type (range_desc_type->field (k).type (),
 				stream, 0 /* bounds_prefered_p */);
 	      if (TYPE_FIELD_BITSIZE (arr_type, 0) > 0)
 		bitsize = TYPE_FIELD_BITSIZE (arr_type, 0);
@@ -455,7 +456,7 @@ print_array_type (struct type *type, str
    values.  Return non-zero if the field is an encoding of
    discriminant values, as in a standard variant record, and 0 if the
    field is not so encoded (as happens with single-component variants
-   in types annotated with pragma Unchecked_Variant).  */
+   in types annotated with pragma Unchecked_Union).  */
 
 static int
 print_choices (struct type *type, int field_num, struct ui_file *stream,
@@ -548,13 +549,13 @@ print_variant_clauses (struct type *type
   struct type *var_type, *par_type;
   struct type *discr_type;
 
-  var_type = TYPE_FIELD_TYPE (type, field_num);
+  var_type = type->field (field_num).type ();
   discr_type = ada_variant_discrim_type (var_type, outer_type);
 
-  if (TYPE_CODE (var_type) == TYPE_CODE_PTR)
+  if (var_type->code () == TYPE_CODE_PTR)
     {
       var_type = TYPE_TARGET_TYPE (var_type);
-      if (var_type == NULL || TYPE_CODE (var_type) != TYPE_CODE_UNION)
+      if (var_type == NULL || var_type->code () != TYPE_CODE_UNION)
 	return;
     }
 
@@ -562,12 +563,12 @@ print_variant_clauses (struct type *type
   if (par_type != NULL)
     var_type = par_type;
 
-  for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
+  for (i = 0; i < var_type->num_fields (); i += 1)
     {
       fprintf_filtered (stream, "\n%*swhen ", level + 4, "");
       if (print_choices (var_type, i, stream, discr_type))
 	{
-	  if (print_record_field_types (TYPE_FIELD_TYPE (var_type, i),
+	  if (print_record_field_types (var_type->field (i).type (),
 					outer_type, stream, show, level + 4,
 					flags)
 	      <= 0)
@@ -593,7 +594,7 @@ print_variant_part (struct type *type, i
 		    const struct type_print_options *flags)
 {
   const char *variant
-    = ada_variant_discrim_name (TYPE_FIELD_TYPE (type, field_num));
+    = ada_variant_discrim_name (type->field (field_num).type ());
   if (*variant == '\0')
     variant = "?";
 
@@ -632,7 +633,7 @@ print_selected_record_field_types (struc
       if (ada_is_parent_field (type, i) || ada_is_ignored_field (type, i))
 	;
       else if (ada_is_wrapper_field (type, i))
-	flds += print_record_field_types (TYPE_FIELD_TYPE (type, i), type,
+	flds += print_record_field_types (type->field (i).type (), type,
 					  stream, show, level, flags);
       else if (ada_is_variant_part (type, i))
 	{
@@ -643,7 +644,7 @@ print_selected_record_field_types (struc
 	{
 	  flds += 1;
 	  fprintf_filtered (stream, "\n%*s", level + 4, "");
-	  ada_print_type (TYPE_FIELD_TYPE (type, i),
+	  ada_print_type (type->field (i).type (),
 			  TYPE_FIELD_NAME (type, i),
 			  stream, show - 1, level + 4, flags);
 	  fprintf_filtered (stream, ";");
@@ -653,6 +654,120 @@ print_selected_record_field_types (struc
   return flds;
 }
 
+static void print_record_field_types_dynamic
+  (const gdb::array_view<variant_part> &parts,
+   int from, int to, struct type *type, struct ui_file *stream,
+   int show, int level, const struct type_print_options *flags);
+
+/* Print the choices encoded by VARIANT on STREAM.  LEVEL is the
+   indentation level.  The type of the discriminant for VARIANT is
+   given by DISR_TYPE.  */
+
+static void
+print_choices (struct type *discr_type, const variant &variant,
+	       struct ui_file *stream, int level)
+{
+  fprintf_filtered (stream, "\n%*swhen ", level, "");
+  if (variant.is_default ())
+    fprintf_filtered (stream, "others");
+  else
+    {
+      bool first = true;
+      for (const discriminant_range &range : variant.discriminants)
+	{
+	  if (!first)
+	    fprintf_filtered (stream, " | ");
+	  first = false;
+
+	  ada_print_scalar (discr_type, range.low, stream);
+	  if (range.low != range.high)
+	    ada_print_scalar (discr_type, range.high, stream);
+	}
+    }
+
+  fprintf_filtered (stream, " =>");
+}
+
+/* Print a single variant part, PART, on STREAM.  TYPE is the
+   enclosing type.  SHOW, LEVEL, and FLAGS are the usual type-printing
+   settings.  This prints information about PART and the fields it
+   controls.  It returns the index of the next field that should be
+   shown -- that is, one after the last field printed by this
+   call.  */
+
+static int
+print_variant_part (const variant_part &part,
+		    struct type *type, struct ui_file *stream,
+		    int show, int level,
+		    const struct type_print_options *flags)
+{
+  struct type *discr_type = nullptr;
+  const char *name;
+  if (part.discriminant_index == -1)
+    name = "?";
+  else
+    {
+      name = TYPE_FIELD_NAME (type, part.discriminant_index);
+      discr_type = type->field (part.discriminant_index).type ();
+    }
+
+  fprintf_filtered (stream, "\n%*scase %s is", level + 4, "", name);
+
+  int last_field = -1;
+  for (const variant &variant : part.variants)
+    {
+      print_choices (discr_type, variant, stream, level + 8);
+
+      if (variant.first_field == variant.last_field)
+	fprintf_filtered (stream, " null;");
+      else
+	{
+	  print_record_field_types_dynamic (variant.parts,
+					    variant.first_field,
+					    variant.last_field, type, stream,
+					    show, level + 8, flags);
+	  last_field = variant.last_field;
+	}
+    }
+
+  fprintf_filtered (stream, "\n%*send case;", level + 4, "");
+
+  return last_field;
+}
+
+/* Print some fields of TYPE to STREAM.  SHOW, LEVEL, and FLAGS are
+   the usual type-printing settings.  PARTS is the array of variant
+   parts that correspond to the range of fields to be printed.  FROM
+   and TO are the range of fields to print.  */
+
+static void
+print_record_field_types_dynamic (const gdb::array_view<variant_part> &parts,
+				  int from, int to,
+				  struct type *type, struct ui_file *stream,
+				  int show, int level,
+				  const struct type_print_options *flags)
+{
+  int field = from;
+
+  for (const variant_part &part : parts)
+    {
+      if (part.variants.empty ())
+	continue;
+
+      /* Print any non-varying fields.  */
+      int first_varying = part.variants[0].first_field;
+      print_selected_record_field_types (type, type, field,
+					 first_varying - 1, stream,
+					 show, level, flags);
+
+      field = print_variant_part (part, type, stream, show, level, flags);
+    }
+
+  /* Print any trailing fields that we were asked to print.  */
+  print_selected_record_field_types (type, type, field, to - 1, stream, show,
+				     level, flags);
+}
+
 /* Print a description on STREAM of all fields of record or union type
    TYPE, as for print_selected_record_field_types, above.  */
 
@@ -661,8 +776,23 @@ print_record_field_types (struct type *t
 			  struct ui_file *stream, int show, int level,
 			  const struct type_print_options *flags)
 {
+  struct dynamic_prop *prop = type->dyn_prop (DYN_PROP_VARIANT_PARTS);
+  if (prop != nullptr)
+    {
+      if (prop->kind () == PROP_TYPE)
+	{
+	  type = prop->original_type ();
+	  prop = type->dyn_prop (DYN_PROP_VARIANT_PARTS);
+	}
+      gdb_assert (prop->kind () == PROP_VARIANT_PARTS);
+      print_record_field_types_dynamic (*prop->variant_parts (),
+					0, type->num_fields (),
+					type, stream, show, level, flags);
+      return type->num_fields ();
+    }
+
   return print_selected_record_field_types (type, outer_type,
-					    0, TYPE_NFIELDS (type) - 1,
+					    0, type->num_fields () - 1,
 					    stream, show, level, flags);
 }
    
@@ -733,7 +863,7 @@ print_unchecked_union_type (struct type
 {
   if (show < 0)
     fprintf_filtered (stream, "record (?) is ... end record");
-  else if (TYPE_NFIELDS (type) == 0)
+  else if (type->num_fields () == 0)
     fprintf_filtered (stream, "record (?) is null; end record");
   else
     {
@@ -741,11 +871,11 @@ print_unchecked_union_type (struct type
 
       fprintf_filtered (stream, "record (?) is\n%*scase ? is", level + 4, "");
 
-      for (i = 0; i < TYPE_NFIELDS (type); i += 1)
+      for (i = 0; i < type->num_fields (); i += 1)
 	{
 	  fprintf_filtered (stream, "\n%*swhen ? =>\n%*s", level + 8, "",
 			    level + 12, "");
-	  ada_print_type (TYPE_FIELD_TYPE (type, i),
+	  ada_print_type (type->field (i).type (),
 			  TYPE_FIELD_NAME (type, i),
 			  stream, show - 1, level + 12, flags);
 	  fprintf_filtered (stream, ";");
@@ -765,10 +895,10 @@ static void
 print_func_type (struct type *type, struct ui_file *stream, const char *name,
 		 const struct type_print_options *flags)
 {
-  int i, len = TYPE_NFIELDS (type);
+  int i, len = type->num_fields ();
 
   if (TYPE_TARGET_TYPE (type) != NULL
-      && TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID)
+      && TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_VOID)
     fprintf_filtered (stream, "procedure");
   else
     fprintf_filtered (stream, "function");
@@ -790,7 +920,7 @@ print_func_type (struct type *type, stru
 	      wrap_here ("    ");
 	    }
 	  fprintf_filtered (stream, "a%d: ", i + 1);
-	  ada_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0,
+	  ada_print_type (type->field (i).type (), "", stream, -1, 0,
 			  flags);
 	}
       fprintf_filtered (stream, ")");
@@ -798,7 +928,7 @@ print_func_type (struct type *type, stru
 
   if (TYPE_TARGET_TYPE (type) == NULL)
     fprintf_filtered (stream, " return <unknown return type>");
-  else if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+  else if (TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
     {
       fprintf_filtered (stream, " return ");
       ada_print_type (TYPE_TARGET_TYPE (type), "", stream, 0, 0, flags);
@@ -840,7 +970,7 @@ ada_print_type (struct type *type0, cons
   if (show > 0)
     type = ada_check_typedef (type);
 
-  if (is_var_decl && TYPE_CODE (type) != TYPE_CODE_FUNC)
+  if (is_var_decl && type->code () != TYPE_CODE_FUNC)
     fprintf_filtered (stream, "%.*s: ",
 		      ada_name_prefix_len (varstring), varstring);
 
@@ -854,10 +984,10 @@ ada_print_type (struct type *type0, cons
   if (ada_is_aligner_type (type))
     ada_print_type (ada_aligned_type (type), "", stream, show, level, flags);
   else if (ada_is_constrained_packed_array_type (type)
-	   && TYPE_CODE (type) != TYPE_CODE_PTR)
+	   && type->code () != TYPE_CODE_PTR)
     print_array_type (type, stream, show, level, flags);
   else
-    switch (TYPE_CODE (type))
+    switch (type->code ())
       {
       default:
 	fprintf_filtered (stream, "<");
@@ -882,8 +1012,8 @@ ada_print_type (struct type *type0, cons
 	fprintf_filtered (stream, "(false, true)");
 	break;
       case TYPE_CODE_INT:
-	if (ada_is_fixed_point_type (type))
-	  print_fixed_point_type (type, stream);
+	if (ada_is_gnat_encoded_fixed_point_type (type))
+	  print_gnat_encoded_fixed_point_type (type, stream);
 	else
 	  {
 	    const char *name = ada_type_name (type);
@@ -900,8 +1030,8 @@ ada_print_type (struct type *type0, cons
 	  }
 	break;
       case TYPE_CODE_RANGE:
-	if (ada_is_fixed_point_type (type))
-	  print_fixed_point_type (type, stream);
+	if (ada_is_gnat_encoded_fixed_point_type (type))
+	  print_gnat_encoded_fixed_point_type (type, stream);
 	else if (ada_is_modular_type (type))
 	  fprintf_filtered (stream, "mod %s", 
 			    int_string (ada_modulus (type), 10, 0, 0, 1));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-valprint.c ./gdb/ada-valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-valprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ada-valprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for printing Ada values for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -30,21 +30,19 @@
 #include "cli/cli-style.h"
 #include "gdbarch.h"
 
-static int print_field_values (struct type *, const gdb_byte *,
-			       int,
+static int print_field_values (struct value *, struct value *,
 			       struct ui_file *, int,
-			       struct value *,
 			       const struct value_print_options *,
-			       int, struct type *, int,
-			       const struct language_defn *);
+			       int, const struct language_defn *);
+
 
 
 /* Make TYPE unsigned if its range of values includes no negatives.  */
 static void
 adjust_type_signedness (struct type *type)
 {
-  if (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
-      && TYPE_LOW_BOUND (type) >= 0)
+  if (type != NULL && type->code () == TYPE_CODE_RANGE
+      && type->bounds ()->low.const_val () >= 0)
     TYPE_UNSIGNED (type) = 1;
 }
 
@@ -73,9 +71,9 @@ print_optional_low_bound (struct ui_file
   if (low_bound > high_bound)
     return 0;
 
-  index_type = TYPE_INDEX_TYPE (type);
+  index_type = type->index_type ();
 
-  while (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
+  while (index_type->code () == TYPE_CODE_RANGE)
     {
       /* We need to know what the base type is, in order to do the
          appropriate check below.  Otherwise, if this is a subrange
@@ -86,7 +84,7 @@ print_optional_low_bound (struct ui_file
     }
 
   /* Don't print the lower bound if it's the default one.  */
-  switch (TYPE_CODE (index_type))
+  switch (index_type->code ())
     {
     case TYPE_CODE_BOOL:
     case TYPE_CODE_CHAR:
@@ -94,8 +92,9 @@ print_optional_low_bound (struct ui_file
 	return 0;
       break;
     case TYPE_CODE_ENUM:
-      if (low_bound == TYPE_FIELD_ENUMVAL (index_type, 0))
+      if (low_bound == 0)
 	return 0;
+      low_bound = TYPE_FIELD_ENUMVAL (index_type, low_bound);
       break;
     case TYPE_CODE_UNDEF:
       index_type = NULL;
@@ -112,17 +111,15 @@ print_optional_low_bound (struct ui_file
 }
 
 /*  Version of val_print_array_elements for GNAT-style packed arrays.
-    Prints elements of packed array of type TYPE at bit offset
-    BITOFFSET from VALADDR on STREAM.  Formats according to OPTIONS and
-    separates with commas.  RECURSE is the recursion (nesting) level.
-    TYPE must have been decoded (as by ada_coerce_to_simple_array).  */
+    Prints elements of packed array of type TYPE from VALADDR on
+    STREAM.  Formats according to OPTIONS and separates with commas.
+    RECURSE is the recursion (nesting) level.  TYPE must have been
+    decoded (as by ada_coerce_to_simple_array).  */
 
 static void
 val_print_packed_array_elements (struct type *type, const gdb_byte *valaddr,
-				 int offset,
-				 int bitoffset, struct ui_file *stream,
+				 int offset, struct ui_file *stream,
 				 int recurse,
-				 struct value *val,
 				 const struct value_print_options *options)
 {
   unsigned int i;
@@ -134,51 +131,28 @@ val_print_packed_array_elements (struct
   LONGEST low = 0;
 
   elttype = TYPE_TARGET_TYPE (type);
-  index_type = TYPE_INDEX_TYPE (type);
+  index_type = type->index_type ();
 
   {
     LONGEST high;
-    struct type *base_index_type;
 
-    if (get_discrete_bounds (index_type, &low, &high) < 0)
+    if (!get_discrete_bounds (index_type, &low, &high))
       len = 1;
-    else
-      len = high - low + 1;
-
-    if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
-        base_index_type = TYPE_TARGET_TYPE (index_type);
-      else
-        base_index_type = index_type;
-
-    if (TYPE_CODE (base_index_type) == TYPE_CODE_ENUM)
+    else if (low > high)
       {
-        LONGEST low_pos, high_pos;
-
-        /* Non-contiguous enumerations types can by used as index types
-           so the array length is computed from the positions of the
-           first and last literal in the enumeration type, and not from
-           the values of these literals.  */
-
-        if (!discrete_position (base_index_type, low, &low_pos)
-          || !discrete_position (base_index_type, high, &high_pos))
-          {
-            warning (_("unable to get positions in array, use bounds instead"));
-            low_pos = low;
-            high_pos = high;
-          }
-
         /* The array length should normally be HIGH_POS - LOW_POS + 1.
            But in Ada we allow LOW_POS to be greater than HIGH_POS for
            empty arrays.  In that situation, the array length is just zero,
            not negative!  */
-
-        if (low_pos > high_pos)
-          len = 0;
-        else
-          len = high_pos - low_pos + 1;
+	len = 0;
       }
+    else
+      len = high - low + 1;
   }
 
+  if (index_type->code () == TYPE_CODE_RANGE)
+    index_type = TYPE_TARGET_TYPE (index_type);
+
   i = 0;
   annotate_array_section_begin (i, elttype);
 
@@ -199,6 +173,11 @@ val_print_packed_array_elements (struct
 	      fprintf_filtered (stream, ", ");
 	    }
 	}
+      else if (options->prettyformat_arrays)
+	{
+	  fprintf_filtered (stream, "\n");
+	  print_spaces_filtered (2 + 2 * recurse, stream);
+	}
       wrap_here (n_spaces (2 + 2 * recurse));
       maybe_print_array_index (index_type, i + low, stream, options);
 
@@ -230,9 +209,7 @@ val_print_packed_array_elements (struct
 	  struct value_print_options opts = *options;
 
 	  opts.deref_ref = 0;
-	  val_print (elttype,
-		     value_embedded_offset (v0), 0, stream,
-		     recurse + 1, v0, &opts, current_language);
+	  common_val_print (v0, stream, recurse + 1, &opts, current_language);
 	  annotate_elt_rep (i - i0);
 	  fprintf_filtered (stream, _(" %p[<repeats %u times>%p]"),
 			    metadata_style.style ().ptr (), i - i0, nullptr);
@@ -262,9 +239,8 @@ val_print_packed_array_elements (struct
 		  maybe_print_array_index (index_type, j + low,
 					   stream, options);
 		}
-	      val_print (elttype,
-			 value_embedded_offset (v0), 0, stream,
-			 recurse + 1, v0, &opts, current_language);
+	      common_val_print (v0, stream, recurse + 1, &opts,
+				current_language);
 	      annotate_elt ();
 	    }
 	}
@@ -279,12 +255,6 @@ val_print_packed_array_elements (struct
   value_free_to_mark (mark);
 }
 
-static struct type *
-printable_val_type (struct type *type, const gdb_byte *valaddr)
-{
-  return ada_to_fixed_type (ada_aligned_type (type), valaddr, 0, NULL, 1);
-}
-
 /* Print the character C on STREAM as part of the contents of a literal
    string whose delimiter is QUOTER.  TYPE_LEN is the length in bytes
    of the character.  */
@@ -404,11 +374,11 @@ ada_print_scalar (struct type *type, LON
 
   type = ada_check_typedef (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
 
     case TYPE_CODE_ENUM:
-      len = TYPE_NFIELDS (type);
+      len = type->num_fields ();
       for (i = 0; i < len; i++)
 	{
 	  if (TYPE_FIELD_ENUMVAL (type, i) == val)
@@ -418,7 +388,8 @@ ada_print_scalar (struct type *type, LON
 	}
       if (i < len)
 	{
-	  fputs_filtered (ada_enum_name (TYPE_FIELD_NAME (type, i)), stream);
+	  fputs_styled (ada_enum_name (TYPE_FIELD_NAME (type, i)),
+			variable_name_style.style (), stream);
 	}
       else
 	{
@@ -563,39 +534,33 @@ ada_printstr (struct ui_file *stream, st
 }
 
 static int
-print_variant_part (struct type *type, int field_num,
-		    const gdb_byte *valaddr, int offset,
+print_variant_part (struct value *value, int field_num,
+		    struct value *outer_value,
 		    struct ui_file *stream, int recurse,
-		    struct value *val,
 		    const struct value_print_options *options,
 		    int comma_needed,
-		    struct type *outer_type, int outer_offset,
 		    const struct language_defn *language)
 {
-  struct type *var_type = TYPE_FIELD_TYPE (type, field_num);
-  int which = ada_which_variant_applies (var_type, outer_type,
-					 valaddr + outer_offset);
+  struct type *type = value_type (value);
+  struct type *var_type = type->field (field_num).type ();
+  int which = ada_which_variant_applies (var_type, outer_value);
 
   if (which < 0)
     return 0;
-  else
-    return print_field_values
-      (TYPE_FIELD_TYPE (var_type, which),
-       valaddr,
-       offset + TYPE_FIELD_BITPOS (type, field_num) / HOST_CHAR_BIT
-       + TYPE_FIELD_BITPOS (var_type, which) / HOST_CHAR_BIT,
-       stream, recurse, val, options,
-       comma_needed, outer_type, outer_offset, language);
-}
-
-/* Print out fields of value at VALADDR + OFFSET having structure type TYPE.
-
-   TYPE, VALADDR, OFFSET, STREAM, RECURSE, and OPTIONS have the same
-   meanings as in ada_print_value and ada_val_print.
-
-   OUTER_TYPE and OUTER_OFFSET give type and address of enclosing
-   record (used to get discriminant values when printing variant
-   parts).
+
+  struct value *variant_field = value_field (value, field_num);
+  struct value *active_component = value_field (variant_field, which);
+  return print_field_values (active_component, outer_value, stream, recurse,
+			     options, comma_needed, language);
+}
+
+/* Print out fields of VALUE.
+
+   STREAM, RECURSE, and OPTIONS have the same meanings as in
+   ada_print_value and ada_value_print.
+
+   OUTER_VALUE gives the enclosing record (used to get discriminant
+   values when printing variant parts).
 
    COMMA_NEEDED is 1 if fields have been printed at the current recursion
    level, so that a comma is needed before any field printed by this
@@ -604,17 +569,16 @@ print_variant_part (struct type *type, i
    Returns 1 if COMMA_NEEDED or any fields were printed.  */
 
 static int
-print_field_values (struct type *type, const gdb_byte *valaddr,
-		    int offset, struct ui_file *stream, int recurse,
-		    struct value *val,
+print_field_values (struct value *value, struct value *outer_value,
+		    struct ui_file *stream, int recurse,
 		    const struct value_print_options *options,
 		    int comma_needed,
-		    struct type *outer_type, int outer_offset,
 		    const struct language_defn *language)
 {
   int i, len;
 
-  len = TYPE_NFIELDS (type);
+  struct type *type = value_type (value);
+  len = type->num_fields ();
 
   for (i = 0; i < len; i += 1)
     {
@@ -623,22 +587,19 @@ print_field_values (struct type *type, c
 
       if (ada_is_wrapper_field (type, i))
 	{
+	  struct value *field_val = ada_value_primitive_field (value, 0,
+							       i, type);
 	  comma_needed =
-	    print_field_values (TYPE_FIELD_TYPE (type, i),
-				valaddr,
-				(offset
-				 + TYPE_FIELD_BITPOS (type, i) / HOST_CHAR_BIT),
-				stream, recurse, val, options,
-				comma_needed, type, offset, language);
+	    print_field_values (field_val, field_val,
+				stream, recurse, options,
+				comma_needed, language);
 	  continue;
 	}
       else if (ada_is_variant_part (type, i))
 	{
 	  comma_needed =
-	    print_variant_part (type, i, valaddr,
-				offset, stream, recurse, val,
-				options, comma_needed,
-				outer_type, outer_offset, language);
+	    print_variant_part (value, i, outer_value, stream, recurse,
+				options, comma_needed, language);
 	  continue;
 	}
 
@@ -656,7 +617,7 @@ print_field_values (struct type *type, c
 	  wrap_here (n_spaces (2 + 2 * recurse));
 	}
 
-      annotate_field_begin (TYPE_FIELD_TYPE (type, i));
+      annotate_field_begin (type->field (i).type ());
       fprintf_filtered (stream, "%.*s",
 			ada_name_prefix_len (TYPE_FIELD_NAME (type, i)),
 			TYPE_FIELD_NAME (type, i));
@@ -680,18 +641,15 @@ print_field_values (struct type *type, c
 	      int bit_size = TYPE_FIELD_BITSIZE (type, i);
 	      struct value_print_options opts;
 
-	      adjust_type_signedness (TYPE_FIELD_TYPE (type, i));
+	      adjust_type_signedness (type->field (i).type ());
 	      v = ada_value_primitive_packed_val
-		    (NULL, valaddr,
-		     offset + bit_pos / HOST_CHAR_BIT,
+		    (value, nullptr,
+		     bit_pos / HOST_CHAR_BIT,
 		     bit_pos % HOST_CHAR_BIT,
-		     bit_size, TYPE_FIELD_TYPE (type, i));
+		     bit_size, type->field (i).type ());
 	      opts = *options;
 	      opts.deref_ref = 0;
-	      val_print (TYPE_FIELD_TYPE (type, i),
-			 value_embedded_offset (v), 0,
-			 stream, recurse + 1, v,
-			 &opts, language);
+	      common_val_print (v, stream, recurse + 1, &opts, language);
 	    }
 	}
       else
@@ -699,9 +657,9 @@ print_field_values (struct type *type, c
 	  struct value_print_options opts = *options;
 
 	  opts.deref_ref = 0;
-	  val_print (TYPE_FIELD_TYPE (type, i),
-		     (offset + TYPE_FIELD_BITPOS (type, i) / HOST_CHAR_BIT),
-		     0, stream, recurse + 1, val, &opts, language);
+
+	  struct value *v = value_field (value, i);
+	  common_val_print (v, stream, recurse + 1, &opts, language);
 	}
       annotate_field_end ();
     }
@@ -714,9 +672,8 @@ print_field_values (struct type *type, c
 
 static void
 ada_val_print_string (struct type *type, const gdb_byte *valaddr,
-		      int offset, int offset_aligned, CORE_ADDR address,
+		      int offset_aligned,
 		      struct ui_file *stream, int recurse,
-		      struct value *original_value,
 		      const struct value_print_options *options)
 {
   enum bfd_endian byte_order = type_byte_order (type);
@@ -734,9 +691,6 @@ ada_val_print_string (struct type *type,
   eltlen = TYPE_LENGTH (elttype);
   len = TYPE_LENGTH (type) / eltlen;
 
-  if (options->prettyformat_arrays)
-    print_spaces_filtered (2 + 2 * recurse, stream);
-
   /* If requested, look for the first null char and only print
      elements up to it.  */
   if (options->stop_print_at_null)
@@ -761,60 +715,49 @@ ada_val_print_string (struct type *type,
    thin pointers, etc).  */
 
 static void
-ada_val_print_gnat_array (struct type *type, const gdb_byte *valaddr,
-			  int offset, CORE_ADDR address,
+ada_val_print_gnat_array (struct value *val,
 			  struct ui_file *stream, int recurse,
-			  struct value *original_value,
 			  const struct value_print_options *options)
 {
-  struct value *mark = value_mark ();
-  struct value *val;
+  scoped_value_mark free_values;
+
+  struct type *type = ada_check_typedef (value_type (val));
 
-  val = value_from_contents_and_address (type, valaddr + offset, address);
   /* If this is a reference, coerce it now.  This helps taking care
      of the case where ADDRESS is meaningless because original_value
      was not an lval.  */
   val = coerce_ref (val);
-  if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
+  if (type->code () == TYPE_CODE_TYPEDEF)  /* array access type.  */
     val = ada_coerce_to_simple_array_ptr (val);
   else
     val = ada_coerce_to_simple_array (val);
   if (val == NULL)
     {
-      gdb_assert (TYPE_CODE (type) == TYPE_CODE_TYPEDEF);
+      gdb_assert (type->code () == TYPE_CODE_TYPEDEF);
       fprintf_filtered (stream, "0x0");
     }
   else
-    val_print (value_type (val),
-	       value_embedded_offset (val), value_address (val),
-	       stream, recurse, val, options,
-	       language_def (language_ada));
-  value_free_to_mark (mark);
+    common_val_print (val, stream, recurse, options,
+		      language_def (language_ada));
 }
 
-/* Implement Ada val_print'ing for the case where TYPE is
-   a TYPE_CODE_PTR.  */
+/* Implement Ada value_print'ing for the case where TYPE is a
+   TYPE_CODE_PTR.  */
 
 static void
-ada_val_print_ptr (struct type *type, const gdb_byte *valaddr,
-		   int offset, int offset_aligned, CORE_ADDR address,
-		   struct ui_file *stream, int recurse,
-		   struct value *original_value,
-		   const struct value_print_options *options)
+ada_value_print_ptr (struct value *val,
+		     struct ui_file *stream, int recurse,
+		     const struct value_print_options *options)
 {
-  val_print (type, offset, address, stream, recurse,
-	     original_value, options, language_def (language_c));
+  common_val_print (val, stream, recurse, options, language_def (language_c));
 
+  struct type *type = ada_check_typedef (value_type (val));
   if (ada_is_tag_type (type))
     {
-      struct value *val =
-	value_from_contents_and_address (type,
-					 valaddr + offset_aligned,
-					 address + offset_aligned);
-      const char *name = ada_tag_name (val);
+      gdb::unique_xmalloc_ptr<char> name = ada_tag_name (val);
 
       if (name != NULL)
-	fprintf_filtered (stream, " (%s)", name);
+	fprintf_filtered (stream, " (%s)", name.get ());
     }
 }
 
@@ -822,55 +765,37 @@ ada_val_print_ptr (struct type *type, co
    a TYPE_CODE_INT or TYPE_CODE_RANGE.  */
 
 static void
-ada_val_print_num (struct type *type, const gdb_byte *valaddr,
-		   int offset, int offset_aligned, CORE_ADDR address,
-		   struct ui_file *stream, int recurse,
-		   struct value *original_value,
-		   const struct value_print_options *options)
+ada_value_print_num (struct value *val, struct ui_file *stream, int recurse,
+		     const struct value_print_options *options)
 {
-  if (ada_is_fixed_point_type (type))
+  struct type *type = ada_check_typedef (value_type (val));
+  const gdb_byte *valaddr = value_contents_for_printing (val);
+
+  if (ada_is_gnat_encoded_fixed_point_type (type))
     {
       struct value *scale = ada_scaling_factor (type);
-      struct value *v = value_from_contents (type, valaddr + offset_aligned);
-      v = value_cast (value_type (scale), v);
-      v = value_binop (v, scale, BINOP_MUL);
+      val = value_cast (value_type (scale), val);
+      val = value_binop (val, scale, BINOP_MUL);
 
       const char *fmt = TYPE_LENGTH (type) < 4 ? "%.11g" : "%.17g";
       std::string str
-	= target_float_to_string (value_contents (v), value_type (v), fmt);
+	= target_float_to_string (value_contents (val), value_type (val), fmt);
       fputs_filtered (str.c_str (), stream);
       return;
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_RANGE
-	   && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ENUM
-	       || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_BOOL
-	       || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CHAR))
+  else if (type->code () == TYPE_CODE_RANGE
+	   && (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_ENUM
+	       || TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_BOOL
+	       || TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_CHAR))
     {
       /* For enum-valued ranges, we want to recurse, because we'll end
 	 up printing the constant's name rather than its numeric
 	 value.  Character and fixed-point types are also printed
 	 differently, so recuse for those as well.  */
       struct type *target_type = TYPE_TARGET_TYPE (type);
-
-      if (TYPE_LENGTH (type) != TYPE_LENGTH (target_type))
-	{
-	  /* Obscure case of range type that has different length from
-	     its base type.  Perform a conversion, or we will get a
-	     nonsense value.  Actually, we could use the same
-	     code regardless of lengths; I'm just avoiding a cast.  */
-	  struct value *v1
-	    = value_from_contents_and_address (type, valaddr + offset, 0);
-	  struct value *v = value_cast (target_type, v1);
-
-	  val_print (target_type,
-		     value_embedded_offset (v), 0, stream,
-		     recurse + 1, v, options,
-		     language_def (language_ada));
-	}
-      else
-	val_print (TYPE_TARGET_TYPE (type), offset,
-		   address, stream, recurse, original_value,
-		   options, language_def (language_ada));
+      val = value_cast (target_type, val);
+      common_val_print (val, stream, recurse + 1, options,
+			language_def (language_ada));
       return;
     }
   else
@@ -883,8 +808,7 @@ ada_val_print_num (struct type *type, co
 	  struct value_print_options opts = *options;
 
 	  opts.format = format;
-	  val_print_scalar_formatted (type, offset_aligned,
-				      original_value, &opts, 0, stream);
+	  value_print_scalar_formatted (val, &opts, 0, stream);
 	}
       else if (ada_is_system_address_type (type))
 	{
@@ -896,8 +820,7 @@ ada_val_print_num (struct type *type, co
 
 	  struct gdbarch *gdbarch = get_type_arch (type);
 	  struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
-	  CORE_ADDR addr = extract_typed_address (valaddr + offset_aligned,
-						  ptr_type);
+	  CORE_ADDR addr = extract_typed_address (valaddr, ptr_type);
 
 	  fprintf_filtered (stream, "(");
 	  type_print (type, "", stream, -1);
@@ -906,14 +829,13 @@ ada_val_print_num (struct type *type, co
 	}
       else
 	{
-	  val_print_scalar_formatted (type, offset_aligned,
-				      original_value, options, 0, stream);
+	  value_print_scalar_formatted (val, options, 0, stream);
 	  if (ada_is_character_type (type))
 	    {
 	      LONGEST c;
 
 	      fputs_filtered (" ", stream);
-	      c = unpack_long (type, valaddr + offset_aligned);
+	      c = unpack_long (type, valaddr);
 	      ada_printchar (c, type, stream);
 	    }
 	}
@@ -925,10 +847,7 @@ ada_val_print_num (struct type *type, co
    a TYPE_CODE_ENUM.  */
 
 static void
-ada_val_print_enum (struct type *type, const gdb_byte *valaddr,
-		    int offset, int offset_aligned, CORE_ADDR address,
-		    struct ui_file *stream, int recurse,
-		    struct value *original_value,
+ada_val_print_enum (struct value *value, struct ui_file *stream, int recurse,
 		    const struct value_print_options *options)
 {
   int i;
@@ -937,12 +856,15 @@ ada_val_print_enum (struct type *type, c
 
   if (options->format)
     {
-      val_print_scalar_formatted (type, offset_aligned,
-				  original_value, options, 0, stream);
+      value_print_scalar_formatted (value, options, 0, stream);
       return;
     }
 
-  len = TYPE_NFIELDS (type);
+  struct type *type = ada_check_typedef (value_type (value));
+  const gdb_byte *valaddr = value_contents_for_printing (value);
+  int offset_aligned = ada_aligned_value_addr (type, valaddr) - valaddr;
+
+  len = type->num_fields ();
   val = unpack_long (type, valaddr + offset_aligned);
   for (i = 0; i < len; i++)
     {
@@ -956,45 +878,26 @@ ada_val_print_enum (struct type *type, c
       const char *name = ada_enum_name (TYPE_FIELD_NAME (type, i));
 
       if (name[0] == '\'')
-	fprintf_filtered (stream, "%ld %s", (long) val, name);
+	fprintf_filtered (stream, "%ld %ps", (long) val,
+			  styled_string (variable_name_style.style (),
+					 name));
       else
-	fputs_filtered (name, stream);
+	fputs_styled (name, variable_name_style.style (), stream);
     }
   else
     print_longest (stream, 'd', 0, val);
 }
 
-/* Implement Ada val_print'ing for the case where TYPE is
-   a TYPE_CODE_FLT.  */
-
-static void
-ada_val_print_flt (struct type *type, const gdb_byte *valaddr,
-		   int offset, int offset_aligned, CORE_ADDR address,
-		   struct ui_file *stream, int recurse,
-		   struct value *original_value,
-		   const struct value_print_options *options)
-{
-  if (options->format)
-    {
-      val_print (type, offset, address, stream, recurse,
-		 original_value, options, language_def (language_c));
-      return;
-    }
-
-  ada_print_floating (valaddr + offset, type, stream);
-}
-
-/* Implement Ada val_print'ing for the case where TYPE is
-   a TYPE_CODE_STRUCT or TYPE_CODE_UNION.  */
+/* Implement Ada val_print'ing for the case where the type is
+   TYPE_CODE_STRUCT or TYPE_CODE_UNION.  */
 
 static void
-ada_val_print_struct_union
-  (struct type *type, const gdb_byte *valaddr, int offset,
-   int offset_aligned, CORE_ADDR address, struct ui_file *stream,
-   int recurse, struct value *original_value,
-   const struct value_print_options *options)
+ada_val_print_struct_union (struct value *value,
+			    struct ui_file *stream,
+			    int recurse,
+			    const struct value_print_options *options)
 {
-  if (ada_is_bogus_array_descriptor (type))
+  if (ada_is_bogus_array_descriptor (value_type (value)))
     {
       fprintf_filtered (stream, "(...?)");
       return;
@@ -1002,10 +905,8 @@ ada_val_print_struct_union
 
   fprintf_filtered (stream, "(");
 
-  if (print_field_values (type, valaddr, offset_aligned,
-			  stream, recurse, original_value, options,
-			  0, type, offset_aligned,
-			  language_def (language_ada)) != 0
+  if (print_field_values (value, value, stream, recurse, options,
+			  0, language_def (language_ada)) != 0
       && options->prettyformat)
     {
       fprintf_filtered (stream, "\n");
@@ -1015,22 +916,23 @@ ada_val_print_struct_union
   fprintf_filtered (stream, ")");
 }
 
-/* Implement Ada val_print'ing for the case where TYPE is
-   a TYPE_CODE_ARRAY.  */
+/* Implement Ada value_print'ing for the case where TYPE is a
+   TYPE_CODE_ARRAY.  */
 
 static void
-ada_val_print_array (struct type *type, const gdb_byte *valaddr,
-		     int offset, int offset_aligned, CORE_ADDR address,
-		     struct ui_file *stream, int recurse,
-		     struct value *original_value,
-		     const struct value_print_options *options)
+ada_value_print_array (struct value *val, struct ui_file *stream, int recurse,
+		       const struct value_print_options *options)
 {
+  struct type *type = ada_check_typedef (value_type (val));
+
   /* For an array of characters, print with string syntax.  */
   if (ada_is_string_type (type)
       && (options->format == 0 || options->format == 's'))
     {
-      ada_val_print_string (type, valaddr, offset, offset_aligned,
-			    address, stream, recurse, original_value,
+      const gdb_byte *valaddr = value_contents_for_printing (val);
+      int offset_aligned = ada_aligned_value_addr (type, valaddr) - valaddr;
+
+      ada_val_print_string (type, valaddr, offset_aligned, stream, recurse,
 			    options);
       return;
     }
@@ -1038,13 +940,14 @@ ada_val_print_array (struct type *type,
   fprintf_filtered (stream, "(");
   print_optional_low_bound (stream, type, options);
   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
-    val_print_packed_array_elements (type, valaddr, offset_aligned,
-				     0, stream, recurse,
-				     original_value, options);
+    {
+      const gdb_byte *valaddr = value_contents_for_printing (val);
+      int offset_aligned = ada_aligned_value_addr (type, valaddr) - valaddr;
+      val_print_packed_array_elements (type, valaddr, offset_aligned,
+				       stream, recurse, options);
+    }
   else
-    val_print_array_elements (type, offset_aligned, address,
-			      stream, recurse, original_value,
-			      options, 0);
+    value_print_array_elements (val, stream, recurse, options, 0);
   fprintf_filtered (stream, ")");
 }
 
@@ -1067,7 +970,7 @@ ada_val_print_ref (struct type *type, co
   struct value *deref_val;
   CORE_ADDR deref_val_int;
 
-  if (TYPE_CODE (elttype) == TYPE_CODE_UNDEF)
+  if (elttype->code () == TYPE_CODE_UNDEF)
     {
       fputs_styled ("<ref to undefined type>", metadata_style.style (),
 		    stream);
@@ -1107,109 +1010,101 @@ ada_val_print_ref (struct type *type, co
   if (value_lazy (deref_val))
     value_fetch_lazy (deref_val);
 
-  val_print (value_type (deref_val),
-	     value_embedded_offset (deref_val),
-	     value_address (deref_val), stream, recurse + 1,
-	     deref_val, options, language_def (language_ada));
+  common_val_print (deref_val, stream, recurse + 1,
+		    options, language_def (language_ada));
 }
 
-/* See the comment on ada_val_print.  This function differs in that it
-   does not catch evaluation errors (leaving that to ada_val_print).  */
+/* See the comment on ada_value_print.  This function differs in that
+   it does not catch evaluation errors (leaving that to
+   ada_value_print).  */
 
 static void
-ada_val_print_1 (struct type *type,
-		 int offset, CORE_ADDR address,
-		 struct ui_file *stream, int recurse,
-		 struct value *original_value,
-		 const struct value_print_options *options)
+ada_value_print_1 (struct value *val, struct ui_file *stream, int recurse,
+		   const struct value_print_options *options)
 {
-  int offset_aligned;
-  const gdb_byte *valaddr = value_contents_for_printing (original_value);
-
-  type = ada_check_typedef (type);
+  struct type *type = ada_check_typedef (value_type (val));
 
   if (ada_is_array_descriptor_type (type)
       || (ada_is_constrained_packed_array_type (type)
-	  && TYPE_CODE (type) != TYPE_CODE_PTR))
+	  && type->code () != TYPE_CODE_PTR))
     {
-      ada_val_print_gnat_array (type, valaddr, offset, address,
-				stream, recurse, original_value,
-				options);
+      ada_val_print_gnat_array (val, stream, recurse, options);
       return;
     }
 
-  offset_aligned = offset + ada_aligned_value_addr (type, valaddr) - valaddr;
-  type = printable_val_type (type, valaddr + offset_aligned);
-  type = resolve_dynamic_type (type, valaddr + offset_aligned,
-			       address + offset_aligned);
+  val = ada_to_fixed_value (val);
+  type = value_type (val);
+  struct type *saved_type = type;
 
-  switch (TYPE_CODE (type))
+  const gdb_byte *valaddr = value_contents_for_printing (val);
+  CORE_ADDR address = value_address (val);
+  gdb::array_view<const gdb_byte> view
+    = gdb::make_array_view (valaddr, TYPE_LENGTH (type));
+  type = ada_check_typedef (resolve_dynamic_type (type, view, address));
+  if (type != saved_type)
+    {
+      val = value_copy (val);
+      deprecated_set_value_type (val, type);
+    }
+
+  switch (type->code ())
     {
     default:
-      val_print (type, offset, address, stream, recurse,
-		 original_value, options, language_def (language_c));
+      common_val_print (val, stream, recurse, options,
+			language_def (language_c));
       break;
 
     case TYPE_CODE_PTR:
-      ada_val_print_ptr (type, valaddr, offset, offset_aligned,
-			 address, stream, recurse, original_value,
-			 options);
+      ada_value_print_ptr (val, stream, recurse, options);
       break;
 
     case TYPE_CODE_INT:
     case TYPE_CODE_RANGE:
-      ada_val_print_num (type, valaddr, offset, offset_aligned,
-			 address, stream, recurse, original_value,
-			 options);
+      ada_value_print_num (val, stream, recurse, options);
       break;
 
     case TYPE_CODE_ENUM:
-      ada_val_print_enum (type, valaddr, offset, offset_aligned,
-			  address, stream, recurse, original_value,
-			  options);
+      ada_val_print_enum (val, stream, recurse, options);
       break;
 
     case TYPE_CODE_FLT:
-      ada_val_print_flt (type, valaddr, offset, offset_aligned,
-			 address, stream, recurse, original_value,
-			 options);
+      if (options->format)
+	{
+	  common_val_print (val, stream, recurse, options,
+			    language_def (language_c));
+	  break;
+	}
+
+      ada_print_floating (valaddr, type, stream);
       break;
 
     case TYPE_CODE_UNION:
     case TYPE_CODE_STRUCT:
-      ada_val_print_struct_union (type, valaddr, offset, offset_aligned,
-				  address, stream, recurse,
-				  original_value, options);
+      ada_val_print_struct_union (val, stream, recurse, options);
       break;
 
     case TYPE_CODE_ARRAY:
-      ada_val_print_array (type, valaddr, offset, offset_aligned,
-			   address, stream, recurse, original_value,
-			   options);
+      ada_value_print_array (val, stream, recurse, options);
       return;
 
     case TYPE_CODE_REF:
-      ada_val_print_ref (type, valaddr, offset, offset_aligned,
-			 address, stream, recurse, original_value,
+      ada_val_print_ref (type, valaddr, 0, 0,
+			 address, stream, recurse, val,
 			 options);
       break;
     }
 }
 
-/* See val_print for a description of the various parameters of this
-   function; they are identical.  */
+/* See ada-lang.h.  */
 
 void
-ada_val_print (struct type *type,
-	       int embedded_offset, CORE_ADDR address,
-	       struct ui_file *stream, int recurse,
-	       struct value *val,
-	       const struct value_print_options *options)
+ada_value_print_inner (struct value *val, struct ui_file *stream,
+		       int recurse,
+		       const struct value_print_options *options)
 {
   try
     {
-      ada_val_print_1 (type, embedded_offset, address,
-		       stream, recurse, val, options);
+      ada_value_print_1 (val, stream, recurse, options);
     }
   catch (const gdb_exception_error &except)
     {
@@ -1224,17 +1119,16 @@ ada_value_print (struct value *val0, str
 		 const struct value_print_options *options)
 {
   struct value *val = ada_to_fixed_value (val0);
-  CORE_ADDR address = value_address (val);
   struct type *type = ada_check_typedef (value_type (val));
   struct value_print_options opts;
 
   /* If it is a pointer, indicate what it points to.  */
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  if (type->code () == TYPE_CODE_PTR)
     {
       /* Hack:  don't print (char *) for char strings.  Their
          type is indicated by the quoted string anyway.  */
       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) != sizeof (char)
-	  || TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_INT 
+	  || TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_INT
 	  || TYPE_UNSIGNED (TYPE_TARGET_TYPE (type)))
 	{
 	  fprintf_filtered (stream, "(");
@@ -1247,7 +1141,7 @@ ada_value_print (struct value *val0, str
       /* We do not print the type description unless TYPE is an array
 	 access type (this is encoded by the compiler as a typedef to
 	 a fat pointer - hence the check against TYPE_CODE_TYPEDEF).  */
-      if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+      if (type->code () == TYPE_CODE_TYPEDEF)
         {
 	  fprintf_filtered (stream, "(");
 	  type_print (type, "", stream, -1);
@@ -1264,7 +1158,5 @@ ada_value_print (struct value *val0, str
 
   opts = *options;
   opts.deref_ref = 1;
-  val_print (type,
-	     value_embedded_offset (val), address,
-	     stream, 0, val, &opts, current_language);
+  common_val_print (val, stream, 0, &opts, current_language);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-varobj.c ./gdb/ada-varobj.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ada-varobj.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ada-varobj.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* varobj support for Ada.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -63,10 +63,10 @@ static void
 ada_varobj_decode_var (struct value **value_ptr, struct type **type_ptr)
 {
   if (*value_ptr)
-    {
-      *value_ptr = ada_get_decoded_value (*value_ptr);
-      *type_ptr = ada_check_typedef (value_type (*value_ptr));
-    }
+    *value_ptr = ada_get_decoded_value (*value_ptr);
+
+  if (*value_ptr != nullptr)
+    *type_ptr = ada_check_typedef (value_type (*value_ptr));
   else
     *type_ptr = ada_get_decoded_type (*type_ptr);
 }
@@ -105,7 +105,7 @@ ada_varobj_struct_elt (struct value *par
       type = value_type (value);
     }
   else
-    type = TYPE_FIELD_TYPE (parent_type, fieldno);
+    type = parent_type->field (fieldno).type ();
 
   if (child_value)
     *child_value = value;
@@ -132,11 +132,11 @@ ada_varobj_ind (struct value *parent_val
 	 ada_get_decoded_value would have transformed our parent_type
 	 into a simple array pointer type.  */
       gdb_assert (parent_value == NULL);
-      gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF);
+      gdb_assert (parent_type->code () == TYPE_CODE_TYPEDEF);
 
       /* Decode parent_type by the equivalent pointer to (decoded)
 	 array.  */
-      while (TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF)
+      while (parent_type->code () == TYPE_CODE_TYPEDEF)
 	parent_type = TYPE_TARGET_TYPE (parent_type);
       parent_type = ada_coerce_to_simple_array_type (parent_type);
       parent_type = lookup_pointer_type (parent_type);
@@ -178,7 +178,7 @@ ada_varobj_simple_array_elt (struct valu
   if (parent_value)
     {
       struct value *index_value =
-	value_from_longest (TYPE_INDEX_TYPE (parent_type), elt_index);
+	value_from_longest (parent_type->index_type (), elt_index);
 
       value = ada_value_subscript (parent_value, 1, &index_value);
       type = value_type (value);
@@ -206,9 +206,11 @@ ada_varobj_adjust_for_child_access (stru
       one child (the struct), their children are the components of
       the struct/union type.  We handle this situation by dereferencing
       the (value, type) couple.  */
-  if (TYPE_CODE (*type) == TYPE_CODE_PTR
-      && (TYPE_CODE (TYPE_TARGET_TYPE (*type)) == TYPE_CODE_STRUCT
-          || TYPE_CODE (TYPE_TARGET_TYPE (*type)) == TYPE_CODE_UNION)
+  if ((*type)->code () == TYPE_CODE_PTR
+      && (TYPE_TARGET_TYPE (*type)->code () == TYPE_CODE_STRUCT
+          || TYPE_TARGET_TYPE (*type)->code () == TYPE_CODE_UNION)
+      && *value != nullptr
+      && value_as_address (*value) != 0
       && !ada_is_array_descriptor_type (TYPE_TARGET_TYPE (*type))
       && !ada_is_constrained_packed_array_type (TYPE_TARGET_TYPE (*type)))
     ada_varobj_ind (*value, *type, value, type);
@@ -234,7 +236,7 @@ ada_varobj_get_array_number_of_children
   LONGEST lo, hi;
 
   if (parent_value == NULL
-      && is_dynamic_type (TYPE_INDEX_TYPE (parent_type)))
+      && is_dynamic_type (parent_type->index_type ()))
     {
       /* This happens when listing the children of an object
 	 which does not exist in memory (Eg: when requesting
@@ -270,10 +272,10 @@ ada_varobj_get_struct_number_of_children
   int n_children = 0;
   int i;
 
-  gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (parent_type) == TYPE_CODE_UNION);
+  gdb_assert (parent_type->code () == TYPE_CODE_STRUCT
+	      || parent_type->code () == TYPE_CODE_UNION);
 
-  for (i = 0; i < TYPE_NFIELDS (parent_type); i++)
+  for (i = 0; i < parent_type->num_fields (); i++)
     {
       if (ada_is_ignored_field (parent_type, i))
 	continue;
@@ -329,8 +331,12 @@ ada_varobj_get_ptr_number_of_children (s
 
   /* Pointer to functions and to void do not have a child, since
      you cannot print what they point to.  */
-  if (TYPE_CODE (child_type) == TYPE_CODE_FUNC
-      || TYPE_CODE (child_type) == TYPE_CODE_VOID)
+  if (child_type->code () == TYPE_CODE_FUNC
+      || child_type->code () == TYPE_CODE_VOID)
+    return 0;
+
+  /* Only show children for non-null pointers.  */
+  if (parent_value == nullptr || value_as_address (parent_value) == 0)
     return 0;
 
   /* All other types have 1 child.  */
@@ -353,16 +359,16 @@ ada_varobj_get_number_of_children (struc
   if (ada_is_access_to_unconstrained_array (parent_type))
     return 1;
 
-  if (TYPE_CODE (parent_type) == TYPE_CODE_ARRAY)
+  if (parent_type->code () == TYPE_CODE_ARRAY)
     return ada_varobj_get_array_number_of_children (parent_value,
 						    parent_type);
 
-  if (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (parent_type) == TYPE_CODE_UNION)
+  if (parent_type->code () == TYPE_CODE_STRUCT
+      || parent_type->code () == TYPE_CODE_UNION)
     return ada_varobj_get_struct_number_of_children (parent_value,
 						     parent_type);
 
-  if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
+  if (parent_type->code () == TYPE_CODE_PTR)
     return ada_varobj_get_ptr_number_of_children (parent_value,
 						  parent_type);
 
@@ -418,10 +424,10 @@ ada_varobj_describe_struct_child (struct
   int fieldno;
   int childno = 0;
 
-  gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (parent_type) == TYPE_CODE_UNION);
+  gdb_assert (parent_type->code () == TYPE_CODE_STRUCT
+	      || parent_type->code () == TYPE_CODE_UNION);
 
-  for (fieldno = 0; fieldno < TYPE_NFIELDS (parent_type); fieldno++)
+  for (fieldno = 0; fieldno < parent_type->num_fields (); fieldno++)
     {
       if (ada_is_ignored_field (parent_type, fieldno))
 	continue;
@@ -587,9 +593,9 @@ ada_varobj_describe_simple_array_child (
   struct type *index_type;
   int real_index;
 
-  gdb_assert (TYPE_CODE (parent_type) == TYPE_CODE_ARRAY);
+  gdb_assert (parent_type->code () == TYPE_CODE_ARRAY);
 
-  index_type = TYPE_INDEX_TYPE (parent_type);
+  index_type = parent_type->index_type ();
   real_index = child_index + ada_discrete_type_low_bound (index_type);
 
   if (child_name)
@@ -627,11 +633,11 @@ ada_varobj_describe_simple_array_child (
       std::string decoded;
 
       /* If the index type is a range type, find the base type.  */
-      while (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
+      while (index_type->code () == TYPE_CODE_RANGE)
 	index_type = TYPE_TARGET_TYPE (index_type);
 
-      if (TYPE_CODE (index_type) == TYPE_CODE_ENUM
-	  || TYPE_CODE (index_type) == TYPE_CODE_BOOL)
+      if (index_type->code () == TYPE_CODE_ENUM
+	  || index_type->code () == TYPE_CODE_BOOL)
 	{
 	  index_type_name = ada_type_name (index_type);
 	  if (index_type_name)
@@ -693,7 +699,7 @@ ada_varobj_describe_child (struct value
       return;
     }
 
-  if (TYPE_CODE (parent_type) == TYPE_CODE_ARRAY)
+  if (parent_type->code () == TYPE_CODE_ARRAY)
     {
       ada_varobj_describe_simple_array_child
 	(parent_value, parent_type, parent_name, parent_path_expr,
@@ -702,8 +708,8 @@ ada_varobj_describe_child (struct value
       return;
     }
 
-  if (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (parent_type) == TYPE_CODE_UNION)
+  if (parent_type->code () == TYPE_CODE_STRUCT
+      || parent_type->code () == TYPE_CODE_UNION)
     {
       ada_varobj_describe_struct_child (parent_value, parent_type,
 					parent_name, parent_path_expr,
@@ -713,7 +719,7 @@ ada_varobj_describe_child (struct value
       return;
     }
 
-  if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
+  if (parent_type->code () == TYPE_CODE_PTR)
     {
       ada_varobj_describe_ptr_child (parent_value, parent_type,
 				     parent_name, parent_path_expr,
@@ -856,7 +862,7 @@ ada_varobj_get_value_of_variable (struct
 {
   ada_varobj_decode_var (&value, &type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
@@ -939,7 +945,7 @@ ada_value_is_changeable_p (const struct
   struct type *type = (var->value != nullptr
 		       ? value_type (var->value.get ()) : var->type);
 
-  if (TYPE_CODE (type) == TYPE_CODE_REF)
+  if (type->code () == TYPE_CODE_REF)
     type = TYPE_TARGET_TYPE (type);
 
   if (ada_is_access_to_unconstrained_array (type))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/addrmap.c ./gdb/addrmap.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/addrmap.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/addrmap.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* addrmap.c --- implementation of address map data structure.
 
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/addrmap.h ./gdb/addrmap.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/addrmap.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/addrmap.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* addrmap.h --- interface to address map data structure.
 
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/agent.c ./gdb/agent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/agent.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/agent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -74,8 +74,9 @@ agent_new_objfile (struct objfile *objfi
   agent_look_up_symbols (objfile);
 }
 
+void _initialize_agent ();
 void
-_initialize_agent (void)
+_initialize_agent ()
 {
   gdb::observers::new_objfile.attach (agent_new_objfile);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aix-thread.c ./gdb/aix-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/aix-thread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/aix-thread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low level interface for debugging AIX 4.3+ pthreads.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
    Written by Nick Duffek <nsd@redhat.com>.
 
    This file is part of GDB.
@@ -805,7 +805,11 @@ sync_threadlists (void)
 	  priv->pdtid = pbuf[pi].pdtid;
 	  priv->tid = pbuf[pi].tid;
 
-	  thread = add_thread_with_info (ptid_t (infpid, 0, pbuf[pi].pthid), priv);
+	  process_stratum_target *proc_target
+	    = current_inferior ()->process_target ();
+	  thread = add_thread_with_info (proc_target,
+					 ptid_t (infpid, 0, pbuf[pi].pthid),
+					 priv);
 
 	  pi++;
 	}
@@ -837,7 +841,9 @@ sync_threadlists (void)
 	    }
 	  else
 	    {
-	      thread = add_thread (pptid);
+	      process_stratum_target *proc_target
+		= current_inferior ()->process_target ();
+	      thread = add_thread (proc_target, pptid);
 
 	      aix_thread_info *priv = new aix_thread_info;
 	      thread->priv.reset (priv);
@@ -896,7 +902,7 @@ pd_update (int set_infpid)
     {
       ptid = thread->ptid;
       if (set_infpid)
-	inferior_ptid = ptid;
+	switch_to_thread (thread);
     }
   return ptid;
 }
@@ -1043,7 +1049,7 @@ aix_thread_target::resume (ptid_t ptid,
     }
   else
     {
-      thread = find_thread_ptid (ptid);
+      thread = find_thread_ptid (current_inferior (), ptid);
       if (!thread)
 	error (_("aix-thread resume: unknown pthread %ld"),
 	       ptid.lwp ());
@@ -1089,7 +1095,9 @@ aix_thread_target::wait (ptid_t ptid, st
   if (!pd_active && status->kind == TARGET_WAITKIND_STOPPED
       && status->value.sig == GDB_SIGNAL_TRAP)
     {
-      struct regcache *regcache = get_thread_regcache (ptid);
+      process_stratum_target *proc_target
+	= current_inferior ()->process_target ();
+      struct regcache *regcache = get_thread_regcache (proc_target, ptid);
       struct gdbarch *gdbarch = regcache->arch ();
 
       if (regcache_read_pc (regcache)
@@ -1354,7 +1362,7 @@ aix_thread_target::fetch_registers (stru
     beneath ()->fetch_registers (regcache, regno);
   else
     {
-      thread = find_thread_ptid (regcache->ptid ());
+      thread = find_thread_ptid (current_inferior (), regcache->ptid ());
       aix_thread_info *priv = get_aix_thread_info (thread);
       tid = priv->tid;
 
@@ -1692,7 +1700,7 @@ aix_thread_target::store_registers (stru
     beneath ()->store_registers (regcache, regno);
   else
     {
-      thread = find_thread_ptid (regcache->ptid ());
+      thread = find_thread_ptid (current_inferior (), regcache->ptid ());
       aix_thread_info *priv = get_aix_thread_info (thread);
       tid = priv->tid;
 
@@ -1740,7 +1748,9 @@ aix_thread_target::thread_alive (ptid_t
 
   /* We update the thread list every time the child stops, so all
      valid threads should be in the thread list.  */
-  return in_thread_list (ptid);
+  process_stratum_target *proc_target
+    = current_inferior ()->process_target ();
+  return in_thread_list (proc_target, ptid);
 }
 
 /* Return a printable representation of composite PID for use in
@@ -1824,8 +1834,9 @@ aix_thread_target::get_ada_task_ptid (lo
 /* Module startup initialization function, automagically called by
    init.c.  */
 
+void _initialize_aix_thread ();
 void
-_initialize_aix_thread (void)
+_initialize_aix_thread ()
 {
   /* Notice when object files get loaded and unloaded.  */
   gdb::observers::new_objfile.attach (new_objfile);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alloc.c ./gdb/alloc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alloc.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alloc.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Shared allocation functions for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-bsd-nat.c ./gdb/alpha-bsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-bsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alpha-bsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for Alpha BSD's.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,6 +17,8 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+/* We define this to get types like register_t.  */
+#define _KERNTYPES
 #include "defs.h"
 #include "inferior.h"
 #include "regcache.h"
@@ -24,26 +26,13 @@
 #include "alpha-tdep.h"
 #include "alpha-bsd-tdep.h"
 #include "inf-ptrace.h"
+#include "nbsd-nat.h"
 
 #include <sys/types.h>
 #include <sys/ptrace.h>
 #include <machine/reg.h>
 
-#ifdef HAVE_SYS_PROCFS_H
-#include <sys/procfs.h>
-#endif
-
-#ifndef HAVE_GREGSET_T
-typedef struct reg gregset_t;
-#endif
-
-#ifndef HAVE_FPREGSET_T 
-typedef struct fpreg fpregset_t; 
-#endif 
-
-#include "gregset.h"
-
-struct alpha_bsd_nat_target final : public inf_ptrace_target
+struct alpha_bsd_nat_target final : public nbsd_nat_target
 {
   void fetch_registers (struct regcache *, int) override;
   void store_registers (struct regcache *, int) override;
@@ -51,34 +40,6 @@ struct alpha_bsd_nat_target final : publ
 
 static alpha_bsd_nat_target the_alpha_bsd_nat_target;
 
-/* Provide *regset() wrappers around the generic Alpha BSD register
-   supply/fill routines.  */
-
-void
-supply_gregset (struct regcache *regcache, const gregset_t *gregsetp)
-{
-  alphabsd_supply_reg (regcache, (const char *) gregsetp, -1);
-}
-
-void
-fill_gregset (const struct regcache *regcache, gregset_t *gregsetp, int regno)
-{
-  alphabsd_fill_reg (regcache, (char *) gregsetp, regno);
-}
-
-void
-supply_fpregset (struct regcache *regcache, const fpregset_t *fpregsetp)
-{
-  alphabsd_supply_fpreg (regcache, (const char *) fpregsetp, -1);
-}
-
-void
-fill_fpregset (const struct regcache *regcache,
-	       fpregset_t *fpregsetp, int regno)
-{
-  alphabsd_fill_fpreg (regcache, (char *) fpregsetp, regno);
-}
-
 /* Determine if PT_GETREGS fetches this register.  */
 
 static int
@@ -94,12 +55,14 @@ getregs_supplies (int regno)
 void
 alpha_bsd_nat_target::fetch_registers (struct regcache *regcache, int regno)
 {
+  int lwp = regcache->ptid ().lwp ();
+
   if (regno == -1 || getregs_supplies (regno))
     {
       struct reg gregs;
 
       if (ptrace (PT_GETREGS, regcache->ptid ().pid (),
-		  (PTRACE_TYPE_ARG3) &gregs, 0) == -1)
+		  (PTRACE_TYPE_ARG3) &gregs, lwp) == -1)
 	perror_with_name (_("Couldn't get registers"));
 
       alphabsd_supply_reg (regcache, (char *) &gregs, regno);
@@ -113,7 +76,7 @@ alpha_bsd_nat_target::fetch_registers (s
       struct fpreg fpregs;
 
       if (ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
-		  (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+		  (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't get floating point status"));
 
       alphabsd_supply_fpreg (regcache, (char *) &fpregs, regno);
@@ -126,17 +89,19 @@ alpha_bsd_nat_target::fetch_registers (s
 void
 alpha_bsd_nat_target::store_registers (struct regcache *regcache, int regno)
 {
+  int lwp = regcache->ptid ().lwp ();
+
   if (regno == -1 || getregs_supplies (regno))
     {
       struct reg gregs;
       if (ptrace (PT_GETREGS, regcache->ptid ().pid (),
-                  (PTRACE_TYPE_ARG3) &gregs, 0) == -1)
+                  (PTRACE_TYPE_ARG3) &gregs, lwp) == -1)
         perror_with_name (_("Couldn't get registers"));
 
       alphabsd_fill_reg (regcache, (char *) &gregs, regno);
 
       if (ptrace (PT_SETREGS, regcache->ptid ().pid (),
-                  (PTRACE_TYPE_ARG3) &gregs, 0) == -1)
+                  (PTRACE_TYPE_ARG3) &gregs, lwp) == -1)
         perror_with_name (_("Couldn't write registers"));
 
       if (regno != -1)
@@ -149,13 +114,13 @@ alpha_bsd_nat_target::store_registers (s
       struct fpreg fpregs;
 
       if (ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
-		  (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+		  (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't get floating point status"));
 
       alphabsd_fill_fpreg (regcache, (char *) &fpregs, regno);
 
       if (ptrace (PT_SETFPREGS, regcache->ptid ().pid (),
-		  (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+		  (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't write floating point status"));
     }
 }
@@ -192,8 +157,9 @@ alphabsd_supply_pcb (struct regcache *re
 }
 
 
+void _initialize_alphabsd_nat ();
 void
-_initialize_alphabsd_nat (void)
+_initialize_alphabsd_nat ()
 {
   add_inf_child_target (&the_alpha_bsd_nat_target);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-bsd-tdep.c ./gdb/alpha-bsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-bsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alpha-bsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code Alpha BSD's.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-bsd-tdep.h ./gdb/alpha-bsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-bsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alpha-bsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for Alpha BSD's.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-linux-nat.c ./gdb/alpha-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alpha-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Low level Alpha GNU/Linux interface, for GDB when running native.
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -101,8 +101,9 @@ alpha_linux_nat_target::register_u_offse
     return FPR_BASE + regno - gdbarch_fp0_regnum (gdbarch);
 }
 
+void _initialize_alpha_linux_nat ();
 void
-_initialize_alpha_linux_nat (void)
+_initialize_alpha_linux_nat ()
 {
   linux_target = &the_alpha_linux_nat_target;
   add_inf_child_target (&the_alpha_linux_nat_target);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-linux-tdep.c ./gdb/alpha-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alpha-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-dependent code for GNU/Linux on Alpha.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -389,8 +389,9 @@ alpha_linux_init_abi (struct gdbarch_inf
 				    alpha_linux_gdb_signal_to_target);
 }
 
+void _initialize_alpha_linux_tdep ();
 void
-_initialize_alpha_linux_tdep (void)
+_initialize_alpha_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_alpha, 0, GDB_OSABI_LINUX,
                           alpha_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-mdebug-tdep.c ./gdb/alpha-mdebug-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-mdebug-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alpha-mdebug-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-dependent mdebug code for the ALPHA architecture.
-   Copyright (C) 1993-2020 Free Software Foundation, Inc.
+   Copyright (C) 1993-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-nbsd-tdep.c ./gdb/alpha-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alpha-nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/alpha.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Wasabi Systems, Inc.
 
@@ -258,6 +258,8 @@ alphanbsd_init_abi (struct gdbarch_info
   /* Hook into the MDEBUG frame unwinder.  */
   alpha_mdebug_init_abi (info, gdbarch);
 
+  nbsd_init_abi (info, gdbarch);
+
   /* NetBSD/alpha does not provide single step support via ptrace(2); we
      must use software single-stepping.  */
   set_gdbarch_software_single_step (gdbarch, alpha_software_single_step);
@@ -278,8 +280,9 @@ alphanbsd_init_abi (struct gdbarch_info
 }
 
 
+void _initialize_alphanbsd_tdep ();
 void
-_initialize_alphanbsd_tdep (void)
+_initialize_alphanbsd_tdep ()
 {
   /* Even though NetBSD/alpha used ELF since day one, it used the
      traditional a.out-style core dump format before NetBSD 1.6, but
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-obsd-tdep.c ./gdb/alpha-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-obsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alpha-obsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/alpha.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -126,8 +126,9 @@ alphaobsd_init_abi(struct gdbarch_info i
 }
 
 
+void _initialize_alphaobsd_tdep ();
 void
-_initialize_alphaobsd_tdep (void)
+_initialize_alphaobsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_alpha, 0, GDB_OSABI_OPENBSD,
                           alphaobsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-tdep.c ./gdb/alpha-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alpha-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the ALPHA architecture, for GDB, the GNU Debugger.
 
-   Copyright (C) 1993-2020 Free Software Foundation, Inc.
+   Copyright (C) 1993-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,7 @@
 #include "frame.h"
 #include "frame-unwind.h"
 #include "frame-base.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "inferior.h"
 #include "symtab.h"
 #include "value.h"
@@ -327,7 +327,7 @@ alpha_push_dummy_call (struct gdbarch *g
       struct type *arg_type = check_typedef (value_type (arg));
 
       /* Cast argument to long if necessary as the compiler does it too.  */
-      switch (TYPE_CODE (arg_type))
+      switch (arg_type->code ())
 	{
 	case TYPE_CODE_INT:
 	case TYPE_CODE_BOOL:
@@ -478,7 +478,7 @@ alpha_extract_return_value (struct type
   gdb_byte raw_buffer[ALPHA_REGISTER_SIZE];
   ULONGEST l;
 
-  switch (TYPE_CODE (valtype))
+  switch (valtype->code ())
     {
     case TYPE_CODE_FLT:
       switch (TYPE_LENGTH (valtype))
@@ -546,7 +546,7 @@ alpha_store_return_value (struct type *v
   gdb_byte raw_buffer[ALPHA_REGISTER_SIZE];
   ULONGEST l;
 
-  switch (TYPE_CODE (valtype))
+  switch (valtype->code ())
     {
     case TYPE_CODE_FLT:
       switch (TYPE_LENGTH (valtype))
@@ -614,7 +614,7 @@ alpha_return_value (struct gdbarch *gdba
 		    struct type *type, struct regcache *regcache,
 		    gdb_byte *readbuf, const gdb_byte *writebuf)
 {
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
 
   if ((code == TYPE_CODE_STRUCT
        || code == TYPE_CODE_UNION
@@ -1821,8 +1821,9 @@ alpha_dwarf2_init_abi (struct gdbarch_in
   frame_base_append_sniffer (gdbarch, dwarf2_frame_base_sniffer);
 }
 
+void _initialize_alpha_tdep ();
 void
-_initialize_alpha_tdep (void)
+_initialize_alpha_tdep ()
 {
 
   gdbarch_register (bfd_arch_alpha, alpha_gdbarch_init, NULL);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-tdep.h ./gdb/alpha-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/alpha-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/alpha-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Common target dependent code for GDB on Alpha systems.
-   Copyright (C) 1993-2020 Free Software Foundation, Inc.
+   Copyright (C) 1993-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-bsd-nat.c ./gdb/amd64-bsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-bsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-bsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for AMD64 BSD's.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -33,8 +33,24 @@
 #include "amd64-nat.h"
 #include "x86-bsd-nat.h"
 #include "inf-ptrace.h"
+#include "amd64-bsd-nat.h"
 
 
+static PTRACE_TYPE_RET
+gdb_ptrace (PTRACE_TYPE_ARG1 request, ptid_t ptid, PTRACE_TYPE_ARG3 addr,
+	    PTRACE_TYPE_ARG4 data)
+{
+#ifdef __NetBSD__
+  gdb_assert (data == 0);
+  /* Support for NetBSD threads: unlike other ptrace implementations in this
+     file, NetBSD requires that we pass both the pid and lwp.  */
+  return ptrace (request, ptid.pid (), addr, ptid.lwp ());
+#else
+  pid_t pid = get_ptrace_pid (ptid);
+  return ptrace (request, pid, addr, data);
+#endif
+}
+
 /* Fetch register REGNUM from the inferior.  If REGNUM is -1, do this
    for all registers (including the floating-point registers).  */
 
@@ -42,7 +58,7 @@ void
 amd64bsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  pid_t pid = get_ptrace_pid (regcache->ptid ());
+  ptid_t ptid = regcache->ptid ();
 #if defined(PT_GETFSBASE) || defined(PT_GETGSBASE)
   const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 #endif
@@ -51,7 +67,7 @@ amd64bsd_fetch_inferior_registers (struc
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PT_GETREGS, ptid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
 	perror_with_name (_("Couldn't get registers"));
 
       amd64_supply_native_gregset (regcache, &regs, -1);
@@ -64,7 +80,7 @@ amd64bsd_fetch_inferior_registers (struc
     {
       register_t base;
 
-      if (ptrace (PT_GETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+      if (gdb_ptrace (PT_GETFSBASE, ptid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
 	perror_with_name (_("Couldn't get segment register fs_base"));
 
       regcache->raw_supply (tdep->fsbase_regnum, &base);
@@ -77,7 +93,7 @@ amd64bsd_fetch_inferior_registers (struc
     {
       register_t base;
 
-      if (ptrace (PT_GETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+      if (gdb_ptrace (PT_GETGSBASE, ptid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
 	perror_with_name (_("Couldn't get segment register gs_base"));
 
       regcache->raw_supply (tdep->fsbase_regnum + 1, &base);
@@ -95,7 +111,7 @@ amd64bsd_fetch_inferior_registers (struc
       if (x86bsd_xsave_len != 0)
 	{
 	  xstateregs = alloca (x86bsd_xsave_len);
-	  if (ptrace (PT_GETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, 0)
+	  if (gdb_ptrace (PT_GETXSTATE, ptid, (PTRACE_TYPE_ARG3) xstateregs, 0)
 	      == -1)
 	    perror_with_name (_("Couldn't get extended state status"));
 
@@ -104,7 +120,7 @@ amd64bsd_fetch_inferior_registers (struc
 	}
 #endif
 
-      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (gdb_ptrace (PT_GETFPREGS, ptid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
 	perror_with_name (_("Couldn't get floating point status"));
 
       amd64_supply_fxsave (regcache, -1, &fpregs);
@@ -118,7 +134,7 @@ void
 amd64bsd_store_inferior_registers (struct regcache *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  pid_t pid = get_ptrace_pid (regcache->ptid ());
+  ptid_t ptid = regcache->ptid ();
 #if defined(PT_SETFSBASE) || defined(PT_SETGSBASE)
   const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 #endif
@@ -127,12 +143,12 @@ amd64bsd_store_inferior_registers (struc
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PT_GETREGS, ptid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
         perror_with_name (_("Couldn't get registers"));
 
       amd64_collect_native_gregset (regcache, &regs, regnum);
 
-      if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PT_SETREGS, ptid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
         perror_with_name (_("Couldn't write registers"));
 
       if (regnum != -1)
@@ -148,7 +164,7 @@ amd64bsd_store_inferior_registers (struc
       base = 0;
       regcache->raw_collect (tdep->fsbase_regnum, &base);
 
-      if (ptrace (PT_SETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+      if (gdb_ptrace (PT_SETFSBASE, ptid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
 	perror_with_name (_("Couldn't write segment register fs_base"));
       if (regnum != -1)
 	return;
@@ -163,7 +179,7 @@ amd64bsd_store_inferior_registers (struc
       base = 0;
       regcache->raw_collect (tdep->fsbase_regnum + 1, &base);
 
-      if (ptrace (PT_SETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+      if (gdb_ptrace (PT_SETGSBASE, ptid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
 	perror_with_name (_("Couldn't write segment register gs_base"));
       if (regnum != -1)
 	return;
@@ -179,25 +195,25 @@ amd64bsd_store_inferior_registers (struc
       if (x86bsd_xsave_len != 0)
 	{
 	  xstateregs = alloca (x86bsd_xsave_len);
-	  if (ptrace (PT_GETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, 0)
+	  if (gdb_ptrace (PT_GETXSTATE, ptid, (PTRACE_TYPE_ARG3) xstateregs, 0)
 	      == -1)
 	    perror_with_name (_("Couldn't get extended state status"));
 
 	  amd64_collect_xsave (regcache, regnum, xstateregs, 0);
 
-	  if (ptrace (PT_SETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs,
-		      x86bsd_xsave_len) == -1)
+	  if (gdb_ptrace (PT_SETXSTATE, ptid, (PTRACE_TYPE_ARG3) xstateregs,
+			  x86bsd_xsave_len) == -1)
 	    perror_with_name (_("Couldn't write extended state status"));
 	  return;
 	}
 #endif
 
-      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (gdb_ptrace (PT_GETFPREGS, ptid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
 	perror_with_name (_("Couldn't get floating point status"));
 
       amd64_collect_fxsave (regcache, regnum, &fpregs);
 
-      if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (gdb_ptrace (PT_SETFPREGS, ptid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
 	perror_with_name (_("Couldn't write floating point status"));
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-bsd-nat.h ./gdb/amd64-bsd-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-bsd-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-bsd-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for modern AMD64 BSD's.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-darwin-tdep.c ./gdb/amd64-darwin-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-darwin-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-darwin-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Darwin support for GDB, the GNU debugger.
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
 
    Contributed by Apple Computer, Inc.
 
@@ -36,7 +36,7 @@
 #include "i386-darwin-tdep.h"
 #include "solib.h"
 #include "solib-darwin.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 
 /* Offsets into the struct x86_thread_state64 where we'll find the saved regs.
    From <mach/i386/thread_status.h> and amd64-tdep.h.  */
@@ -116,8 +116,9 @@ x86_darwin_init_abi_64 (struct gdbarch_i
   set_solib_ops (gdbarch, &darwin_so_ops);
 }
 
+void _initialize_amd64_darwin_tdep ();
 void
-_initialize_amd64_darwin_tdep (void)
+_initialize_amd64_darwin_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
                           GDB_OSABI_DARWIN, x86_darwin_init_abi_64);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-darwin-tdep.h ./gdb/amd64-darwin-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-darwin-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-darwin-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Darwin x86-64.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-dicos-tdep.c ./gdb/amd64-dicos-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-dicos-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-dicos-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for DICOS running on x86-64's, for GDB.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -46,8 +46,9 @@ amd64_dicos_osabi_sniffer (bfd *abfd)
   return GDB_OSABI_UNKNOWN;
 }
 
+void _initialize_amd64_dicos_tdep ();
 void
-_initialize_amd64_dicos_tdep (void)
+_initialize_amd64_dicos_tdep ()
 {
   gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour,
 				  amd64_dicos_osabi_sniffer);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-fbsd-nat.c ./gdb/amd64-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-fbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-fbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD/amd64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -209,8 +209,9 @@ amd64_fbsd_nat_target::supports_stopped_
 }
 #endif
 
+void _initialize_amd64fbsd_nat ();
 void
-_initialize_amd64fbsd_nat (void)
+_initialize_amd64fbsd_nat ()
 {
   int offset;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-fbsd-tdep.c ./gdb/amd64-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-fbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-fbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD/amd64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -30,6 +30,7 @@
 #include "amd64-tdep.h"
 #include "fbsd-tdep.h"
 #include "solib-svr4.h"
+#include "inferior.h"
 
 /* Support for signal handlers.  */
 
@@ -212,7 +213,8 @@ amd64fbsd_get_thread_local_address (stru
 {
   struct regcache *regcache;
 
-  regcache = get_thread_arch_regcache (ptid, gdbarch);
+  regcache = get_thread_arch_regcache (current_inferior ()->process_target (),
+				       ptid, gdbarch);
 
   target_fetch_registers (regcache, AMD64_FSBASE_REGNUM);
 
@@ -268,8 +270,9 @@ amd64fbsd_init_abi (struct gdbarch_info
 					amd64fbsd_get_thread_local_address);
 }
 
+void _initialize_amd64fbsd_tdep ();
 void
-_initialize_amd64fbsd_tdep (void)
+_initialize_amd64fbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
 			  GDB_OSABI_FREEBSD, amd64fbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-linux-nat.c ./gdb/amd64-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux x86-64.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
    Contributed by Jiri Smid, SuSE Labs.
 
    This file is part of GDB.
@@ -259,30 +259,6 @@ amd64_linux_nat_target::fetch_registers
 
 	  amd64_supply_fxsave (regcache, -1, &fpregs);
 	}
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-      {
-	/* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
-	   fs_base and gs_base fields of user_regs_struct can be
-	   used directly.  */
-	unsigned long base;
-
-	if (regnum == -1 || regnum == AMD64_FSBASE_REGNUM)
-	  {
-	    if (ptrace (PTRACE_ARCH_PRCTL, tid, &base, ARCH_GET_FS) < 0)
-	      perror_with_name (_("Couldn't get segment register fs_base"));
-
-	    regcache->raw_supply (AMD64_FSBASE_REGNUM, &base);
-	  }
-
-	if (regnum == -1 || regnum == AMD64_GSBASE_REGNUM)
-	  {
-	    if (ptrace (PTRACE_ARCH_PRCTL, tid, &base, ARCH_GET_GS) < 0)
-	      perror_with_name (_("Couldn't get segment register gs_base"));
-
-	    regcache->raw_supply (AMD64_GSBASE_REGNUM, &base);
-	  }
-      }
-#endif
     }
 }
 
@@ -348,30 +324,6 @@ amd64_linux_nat_target::store_registers
 	  if (ptrace (PTRACE_SETFPREGS, tid, 0, (long) &fpregs) < 0)
 	    perror_with_name (_("Couldn't write floating point status"));
 	}
-
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-      {
-	/* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
-	   fs_base and gs_base fields of user_regs_struct can be
-	   used directly.  */
-	void *base;
-
-	if (regnum == -1 || regnum == AMD64_FSBASE_REGNUM)
-	  {
-	    regcache->raw_collect (AMD64_FSBASE_REGNUM, &base);
-
-	    if (ptrace (PTRACE_ARCH_PRCTL, tid, base, ARCH_SET_FS) < 0)
-	      perror_with_name (_("Couldn't write segment register fs_base"));
-	  }
-	if (regnum == -1 || regnum == AMD64_GSBASE_REGNUM)
-	  {
-
-	    regcache->raw_collect (AMD64_GSBASE_REGNUM, &base);
-	    if (ptrace (PTRACE_ARCH_PRCTL, tid, base, ARCH_SET_GS) < 0)
-	      perror_with_name (_("Couldn't write segment register gs_base"));
-	  }
-      }
-#endif
     }
 }
 
@@ -383,7 +335,7 @@ ps_err_e
 ps_get_thread_area (struct ps_prochandle *ph,
                     lwpid_t lwpid, int idx, void **base)
 {
-  if (gdbarch_bfd_arch_info (target_gdbarch ())->bits_per_word == 32)
+  if (gdbarch_bfd_arch_info (ph->thread->inf->gdbarch)->bits_per_word == 32)
     {
       unsigned int base_addr;
       ps_err_e result;
@@ -408,11 +360,7 @@ ps_get_thread_area (struct ps_prochandle
       switch (idx)
 	{
 	case FS:
-#ifdef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
 	    {
-	      /* PTRACE_ARCH_PRCTL is obsolete since 2.6.25, where the
-		 fs_base and gs_base fields of user_regs_struct can be
-		 used directly.  */
 	      unsigned long fs;
 	      errno = 0;
 	      fs = ptrace (PTRACE_PEEKUSER, lwpid,
@@ -423,12 +371,10 @@ ps_get_thread_area (struct ps_prochandle
 		  return PS_OK;
 		}
 	    }
-#endif
-	  if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_FS) == 0)
-	    return PS_OK;
+
 	  break;
+
 	case GS:
-#ifdef HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE
 	    {
 	      unsigned long gs;
 	      errno = 0;
@@ -440,10 +386,8 @@ ps_get_thread_area (struct ps_prochandle
 		  return PS_OK;
 		}
 	    }
-#endif
-	  if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_GS) == 0)
-	    return PS_OK;
 	  break;
+
 	default:                   /* Should not happen.  */
 	  return PS_BADADDR;
 	}
@@ -478,8 +422,9 @@ amd64_linux_nat_target::low_siginfo_fixu
     return false;
 }
 
+void _initialize_amd64_linux_nat ();
 void
-_initialize_amd64_linux_nat (void)
+_initialize_amd64_linux_nat ()
 {
   amd64_native_gregset32_reg_offset = amd64_linux_gregset32_reg_offset;
   amd64_native_gregset32_num_regs = I386_LINUX_NUM_REGS;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-linux-tdep.c ./gdb/amd64-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux x86-64.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
    Contributed by Jiri Smid, SuSE Labs.
 
    This file is part of GDB.
@@ -1846,8 +1846,7 @@ amd64_linux_init_abi_common(struct gdbar
   set_gdbarch_process_record_signal (gdbarch, amd64_linux_record_signal);
 
   set_gdbarch_get_siginfo_type (gdbarch, x86_linux_get_siginfo_type);
-  set_gdbarch_handle_segmentation_fault (gdbarch,
-					 i386_linux_handle_segmentation_fault);
+  set_gdbarch_report_signal_info (gdbarch, i386_linux_report_signal_info);
 }
 
 static void
@@ -2272,8 +2271,9 @@ amd64_x32_linux_init_abi (struct gdbarch
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
 }
 
+void _initialize_amd64_linux_tdep ();
 void
-_initialize_amd64_linux_tdep (void)
+_initialize_amd64_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
 			  GDB_OSABI_LINUX, amd64_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-linux-tdep.h ./gdb/amd64-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-linux-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-linux-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux AMD64.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-nat.c ./gdb/amd64-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for AMD64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -68,13 +68,6 @@ amd64_native_gregset_reg_offset (struct
   if (regnum >= num_regs)
     return -1;
 
-  /* Kernels that predate Linux 2.6.25 don't provide access to
-     these segment registers in user_regs_struct.   */
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-  if (regnum == AMD64_FSBASE_REGNUM || regnum == AMD64_GSBASE_REGNUM)
-    return -1;
-#endif
-
   return reg_offset[regnum];
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-nat.h ./gdb/amd64-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for AMD64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-nbsd-nat.c ./gdb/amd64-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-nbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-nbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for NetBSD/amd64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -56,8 +56,9 @@ static int amd64nbsd32_r_reg_offset[] =
 
 static amd64_bsd_nat_target<nbsd_nat_target> the_amd64_nbsd_nat_target;
 
+void _initialize_amd64nbsd_nat ();
 void
-_initialize_amd64nbsd_nat (void)
+_initialize_amd64nbsd_nat ()
 {
   amd64_native_gregset32_reg_offset = amd64nbsd32_r_reg_offset;
   amd64_native_gregset32_num_regs = ARRAY_SIZE (amd64nbsd32_r_reg_offset);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-nbsd-tdep.c ./gdb/amd64-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/amd64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -106,6 +106,7 @@ amd64nbsd_init_abi (struct gdbarch_info
 
   amd64_init_abi (info, gdbarch,
 		  amd64_target_description (X86_XSTATE_SSE_MASK, true));
+  nbsd_init_abi (info, gdbarch);
 
   tdep->jb_pc_offset = 7 * 8;
 
@@ -120,8 +121,9 @@ amd64nbsd_init_abi (struct gdbarch_info
     (gdbarch, svr4_lp64_fetch_link_map_offsets);
 }
 
+void _initialize_amd64nbsd_tdep ();
 void
-_initialize_amd64nbsd_tdep (void)
+_initialize_amd64nbsd_tdep ()
 {
   /* The NetBSD/amd64 native dependent code makes this assumption.  */
   gdb_assert (ARRAY_SIZE (amd64nbsd_r_reg_offset) == AMD64_NUM_GREGS);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-obsd-nat.c ./gdb/amd64-obsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-obsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-obsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for OpenBSD/amd64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -128,8 +128,9 @@ amd64obsd_supply_pcb (struct regcache *r
 
 static amd64_bsd_nat_target<obsd_nat_target> the_amd64_obsd_nat_target;
 
+void _initialize_amd64obsd_nat ();
 void
-_initialize_amd64obsd_nat (void)
+_initialize_amd64obsd_nat ()
 {
   amd64_native_gregset32_reg_offset = amd64obsd32_r_reg_offset;
   amd64_native_gregset32_num_regs = ARRAY_SIZE (amd64obsd32_r_reg_offset);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-obsd-tdep.c ./gdb/amd64-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-obsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-obsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/amd64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -448,8 +448,9 @@ amd64obsd_init_abi (struct gdbarch_info
   frame_unwind_prepend_unwinder (gdbarch, &amd64obsd_trapframe_unwind);
 }
 
+void _initialize_amd64obsd_tdep ();
 void
-_initialize_amd64obsd_tdep (void)
+_initialize_amd64obsd_tdep ()
 {
   /* The OpenBSD/amd64 native dependent code makes this assumption.  */
   gdb_assert (ARRAY_SIZE (amd64obsd_r_reg_offset) == AMD64_NUM_GREGS);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-sol2-tdep.c ./gdb/amd64-sol2-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-sol2-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-sol2-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for AMD64 Solaris.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    Contributed by Joseph Myers, CodeSourcery, LLC.
 
@@ -63,21 +63,6 @@ static int amd64_sol2_gregset_reg_offset
 };
 
 
-/* Return whether THIS_FRAME corresponds to a Solaris sigtramp
-   routine.  */
-
-static int
-amd64_sol2_sigtramp_p (struct frame_info *this_frame)
-{
-  CORE_ADDR pc = get_frame_pc (this_frame);
-  const char *name;
-
-  find_pc_partial_function (pc, &name, NULL, NULL);
-  return (name && (strcmp ("sigacthandler", name) == 0
-		   || strcmp (name, "ucbsigvechandler") == 0
-		   || strcmp (name, "__sighndlr") == 0));
-}
-
 /* Solaris doesn't have a 'struct sigcontext', but it does have a
    'mcontext_t' that contains the saved set of machine registers.  */
 
@@ -104,22 +89,21 @@ amd64_sol2_init_abi (struct gdbarch_info
   amd64_init_abi (info, gdbarch,
 		  amd64_target_description (X86_XSTATE_SSE_MASK, true));
 
-  tdep->sigtramp_p = amd64_sol2_sigtramp_p;
+  sol2_init_abi (info, gdbarch);
+
+  tdep->sigtramp_p = sol2_sigtramp_p;
   tdep->sigcontext_addr = amd64_sol2_mcontext_addr;
   tdep->sc_reg_offset = tdep->gregset_reg_offset;
   tdep->sc_num_regs = tdep->gregset_num_regs;
 
   /* Solaris uses SVR4-style shared libraries.  */
-  set_gdbarch_skip_solib_resolver (gdbarch, sol2_skip_solib_resolver);
   set_solib_svr4_fetch_link_map_offsets
     (gdbarch, svr4_lp64_fetch_link_map_offsets);
-
-  /* How to print LWP PTIDs from core files.  */
-  set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str);
 }
 
+void _initialize_amd64_sol2_tdep ();
 void
-_initialize_amd64_sol2_tdep (void)
+_initialize_amd64_sol2_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
 			  GDB_OSABI_SOLARIS, amd64_sol2_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-tdep.c ./gdb/amd64-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for AMD64.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    Contributed by Jiri Smid, SuSE Labs.
 
@@ -546,19 +546,19 @@ static void amd64_classify (struct type
 static bool
 amd64_has_unaligned_fields (struct type *type)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION)
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION)
     {
-      for (int i = 0; i < TYPE_NFIELDS (type); i++)
+      for (int i = 0; i < type->num_fields (); i++)
 	{
-	  struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i));
+	  struct type *subtype = check_typedef (type->field (i).type ());
 	  int bitpos = TYPE_FIELD_BITPOS (type, i);
 	  int align = type_align(subtype);
 
 	  /* Ignore static fields, empty fields (for example nested
 	     empty structures), and bitfields (these are handled by
 	     the caller).  */
-	  if (field_is_static (&TYPE_FIELD (type, i))
+	  if (field_is_static (&type->field (i))
 	      || (TYPE_FIELD_BITSIZE (type, i) == 0
 		  && TYPE_LENGTH (subtype) == 0)
 	      || TYPE_FIELD_PACKED (type, i))
@@ -587,7 +587,7 @@ amd64_classify_aggregate_field (struct t
 				enum amd64_reg_class theclass[2],
 				unsigned int bitoffset)
 {
-  struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i));
+  struct type *subtype = check_typedef (type->field (i).type ());
   int bitpos = bitoffset + TYPE_FIELD_BITPOS (type, i);
   int pos = bitpos / 64;
   enum amd64_reg_class subclass[2];
@@ -600,15 +600,15 @@ amd64_classify_aggregate_field (struct t
 
   /* Ignore static fields, or empty fields, for example nested
      empty structures.*/
-  if (field_is_static (&TYPE_FIELD (type, i)) || bitsize == 0)
+  if (field_is_static (&type->field (i)) || bitsize == 0)
     return;
 
-  if (TYPE_CODE (subtype) == TYPE_CODE_STRUCT
-      || TYPE_CODE (subtype) == TYPE_CODE_UNION)
+  if (subtype->code () == TYPE_CODE_STRUCT
+      || subtype->code () == TYPE_CODE_UNION)
     {
       /* Each field of an object is classified recursively.  */
       int j;
-      for (j = 0; j < TYPE_NFIELDS (subtype); j++)
+      for (j = 0; j < subtype->num_fields (); j++)
 	amd64_classify_aggregate_field (subtype, j, theclass, bitpos);
       return;
     }
@@ -667,7 +667,7 @@ amd64_classify_aggregate (struct type *t
         calculated according to the classes of the fields in the
         eightbyte: */
 
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type->code () == TYPE_CODE_ARRAY)
     {
       struct type *subtype = check_typedef (TYPE_TARGET_TYPE (type));
 
@@ -681,10 +681,10 @@ amd64_classify_aggregate (struct type *t
       int i;
 
       /* Structure or union.  */
-      gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
-		  || TYPE_CODE (type) == TYPE_CODE_UNION);
+      gdb_assert (type->code () == TYPE_CODE_STRUCT
+		  || type->code () == TYPE_CODE_UNION);
 
-      for (i = 0; i < TYPE_NFIELDS (type); i++)
+      for (i = 0; i < type->num_fields (); i++)
 	amd64_classify_aggregate_field (type, i, theclass, 0);
     }
 
@@ -708,7 +708,7 @@ amd64_classify_aggregate (struct type *t
 static void
 amd64_classify (struct type *type, enum amd64_reg_class theclass[2])
 {
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
   int len = TYPE_LENGTH (type);
 
   theclass[0] = theclass[1] = AMD64_NO_CLASS;
@@ -1465,7 +1465,7 @@ fixup_displaced_copy (struct gdbarch *gd
     }
 }
 
-struct displaced_step_closure *
+displaced_step_closure_up
 amd64_displaced_step_copy_insn (struct gdbarch *gdbarch,
 				CORE_ADDR from, CORE_ADDR to,
 				struct regcache *regs)
@@ -1474,8 +1474,8 @@ amd64_displaced_step_copy_insn (struct g
   /* Extra space for sentinels so fixup_{riprel,displaced_copy} don't have to
      continually watch for running off the end of the buffer.  */
   int fixup_sentinel_space = len;
-  amd64_displaced_step_closure *dsc
-    = new amd64_displaced_step_closure (len + fixup_sentinel_space);
+  std::unique_ptr<amd64_displaced_step_closure> dsc
+    (new amd64_displaced_step_closure (len + fixup_sentinel_space));
   gdb_byte *buf = &dsc->insn_buf[0];
   struct amd64_insn *details = &dsc->insn_details;
 
@@ -1500,7 +1500,7 @@ amd64_displaced_step_copy_insn (struct g
 
   /* Modify the insn to cope with the address where it will be executed from.
      In particular, handle any rip-relative addressing.	 */
-  fixup_displaced_copy (gdbarch, dsc, from, to, regs);
+  fixup_displaced_copy (gdbarch, dsc.get (), from, to, regs);
 
   write_memory (to, buf, len);
 
@@ -1511,7 +1511,8 @@ amd64_displaced_step_copy_insn (struct g
       displaced_step_dump_bytes (gdb_stdlog, buf, len);
     }
 
-  return dsc;
+  /* This is a work around for a problem with g++ 4.8.  */
+  return displaced_step_closure_up (dsc.release ());
 }
 
 static int
@@ -2361,6 +2362,9 @@ amd64_x32_analyze_stack_align (CORE_ADDR
       pushq %rbp        0x55
       movl %esp, %ebp   0x89 0xe5 (or 0x8b 0xec)
 
+   The `endbr64` instruction can be found before these sequences, and will be
+   skipped if found.
+
    Any function that doesn't start with one of these sequences will be
    assumed to have no prologue and thus no valid frame pointer in
    %rbp.  */
@@ -2371,6 +2375,8 @@ amd64_analyze_prologue (struct gdbarch *
 			struct amd64_frame_cache *cache)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  /* The `endbr64` instruction.  */
+  static const gdb_byte endbr64[4] = { 0xf3, 0x0f, 0x1e, 0xfa };
   /* There are two variations of movq %rsp, %rbp.  */
   static const gdb_byte mov_rsp_rbp_1[3] = { 0x48, 0x89, 0xe5 };
   static const gdb_byte mov_rsp_rbp_2[3] = { 0x48, 0x8b, 0xec };
@@ -2391,6 +2397,20 @@ amd64_analyze_prologue (struct gdbarch *
 
   op = read_code_unsigned_integer (pc, 1, byte_order);
 
+  /* Check for the `endbr64` instruction, skip it if found.  */
+  if (op == endbr64[0])
+    {
+      read_code (pc + 1, buf, 3);
+
+      if (memcmp (buf, &endbr64[1], 3) == 0)
+	pc += 4;
+
+      op = read_code_unsigned_integer (pc, 1, byte_order);
+    }
+
+  if (current_pc <= pc)
+    return current_pc;
+
   if (op == 0x55)		/* pushq %rbp */
     {
       /* Take into account that we've executed the `pushq %rbp' that
@@ -2413,7 +2433,7 @@ amd64_analyze_prologue (struct gdbarch *
 	  return pc + 4;
 	}
 
-      /* For X32, also check for `movq %esp, %ebp'.  */
+      /* For X32, also check for `movl %esp, %ebp'.  */
       if (gdbarch_ptr_bit (gdbarch) == 32)
 	{
 	  if (memcmp (buf, mov_esp_ebp_1, 2) == 0
@@ -2527,12 +2547,13 @@ amd64_skip_prologue (struct gdbarch *gdb
 	= skip_prologue_using_sal (gdbarch, func_addr);
       struct compunit_symtab *cust = find_pc_compunit_symtab (func_addr);
 
-      /* Clang always emits a line note before the prologue and another
-	 one after.  We trust clang to emit usable line notes.  */
+      /* LLVM backend (Clang/Flang) always emits a line note before the
+         prologue and another one after.  We trust clang to emit usable
+         line notes.  */
       if (post_prologue_pc
 	  && (cust != NULL
 	      && COMPUNIT_PRODUCER (cust) != NULL
-	      && startswith (COMPUNIT_PRODUCER (cust), "clang ")))
+	      && producer_is_llvm (COMPUNIT_PRODUCER (cust))))
         return std::max (start_pc, post_prologue_pc);
     }
 
@@ -3334,8 +3355,9 @@ amd64_target_description (uint64_t xcr0,
   return *tdesc;
 }
 
+void _initialize_amd64_tdep ();
 void
-_initialize_amd64_tdep (void)
+_initialize_amd64_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64, GDB_OSABI_NONE,
  			  amd64_none_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-tdep.h ./gdb/amd64-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent definitions for AMD64.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
    Contributed by Jiri Smid, SuSE Labs.
 
    This file is part of GDB.
@@ -26,6 +26,7 @@ struct frame_info;
 struct regcache;
 
 #include "i386-tdep.h"
+#include "infrun.h"
 
 /* Register numbers of various important registers.  */
 
@@ -87,7 +88,7 @@ enum amd64_regnum
 
 #define AMD64_NUM_REGS		(AMD64_GSBASE_REGNUM + 1)
 
-extern struct displaced_step_closure *amd64_displaced_step_copy_insn
+extern displaced_step_closure_up amd64_displaced_step_copy_insn
   (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to,
    struct regcache *regs);
 extern void amd64_displaced_step_fixup (struct gdbarch *gdbarch,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-windows-nat.c ./gdb/amd64-windows-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-windows-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-windows-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -23,7 +23,7 @@
 #include <windows.h>
 
 #define context_offset(x) (offsetof (CONTEXT, x))
-static const int mappings[] =
+const int amd64_mappings[] =
 {
   context_offset (Rax),
   context_offset (Rbx),
@@ -89,16 +89,15 @@ static const int mappings[] =
 
 /* segment_register_p_ftype implementation for amd64.  */
 
-static int
+int
 amd64_windows_segment_register_p (int regnum)
 {
   return regnum >= AMD64_CS_REGNUM && regnum <= AMD64_GS_REGNUM;
 }
 
+void _initialize_amd64_windows_nat ();
 void
-_initialize_amd64_windows_nat (void)
+_initialize_amd64_windows_nat ()
 {
-  windows_set_context_register_offsets (mappings);
-  windows_set_segment_register_p (amd64_windows_segment_register_p);
   x86_set_debug_register_length (8);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-windows-tdep.c ./gdb/amd64-windows-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/amd64-windows-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/amd64-windows-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -48,7 +48,7 @@ static int amd64_windows_dummy_call_inte
 static int
 amd64_windows_passed_by_integer_register (struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
       case TYPE_CODE_INT:
       case TYPE_CODE_ENUM:
@@ -76,8 +76,8 @@ amd64_windows_passed_by_integer_register
 static int
 amd64_windows_passed_by_xmm_register (struct type *type)
 {
-  return ((TYPE_CODE (type) == TYPE_CODE_FLT
-	   || TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
+  return ((type->code () == TYPE_CODE_FLT
+	   || type->code () == TYPE_CODE_DECFLOAT)
           && (TYPE_LENGTH (type) == 4 || TYPE_LENGTH (type) == 8));
 }
 
@@ -296,7 +296,7 @@ amd64_windows_return_value (struct gdbar
 
   /* See if our value is returned through a register.  If it is, then
      store the associated register number in REGNUM.  */
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
       case TYPE_CODE_FLT:
       case TYPE_CODE_DECFLOAT:
@@ -953,8 +953,7 @@ amd64_windows_find_unwind_info (struct g
   pe = pe_data (sec->objfile->obfd);
   dir = &pe->pe_opthdr.DataDirectory[PE_EXCEPTION_TABLE];
 
-  base = pe->pe_opthdr.ImageBase
-    + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
+  base = pe->pe_opthdr.ImageBase + objfile->text_section_offset ();
   *image_base = base;
 
   /* Find the entry.
@@ -1209,8 +1208,10 @@ amd64_windows_auto_wide_charset (void)
   return "UTF-16";
 }
 
+/* Common parts for gdbarch initialization for Windows and Cygwin on AMD64.  */
+
 static void
-amd64_windows_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+amd64_windows_init_abi_common (gdbarch_info info, struct gdbarch *gdbarch)
 {
   /* The dwarf2 unwinder (appended very early by i386_gdbarch_init) is
      preferred over the SEH one.  The reasons are:
@@ -1228,11 +1229,6 @@ amd64_windows_init_abi (struct gdbarch_i
   amd64_init_abi (info, gdbarch,
 		  amd64_target_description (X86_XSTATE_SSE_MASK, false));
 
-  windows_init_abi (info, gdbarch);
-
-  /* On Windows, "long"s are only 32bit.  */
-  set_gdbarch_long_bit (gdbarch, 32);
-
   /* Function calls.  */
   set_gdbarch_push_dummy_call (gdbarch, amd64_windows_push_dummy_call);
   set_gdbarch_return_value (gdbarch, amd64_windows_return_value);
@@ -1245,9 +1241,50 @@ amd64_windows_init_abi (struct gdbarch_i
   set_gdbarch_auto_wide_charset (gdbarch, amd64_windows_auto_wide_charset);
 }
 
+/* gdbarch initialization for Windows on AMD64.  */
+
+static void
+amd64_windows_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  amd64_windows_init_abi_common (info, gdbarch);
+  windows_init_abi (info, gdbarch);
+
+  /* On Windows, "long"s are only 32bit.  */
+  set_gdbarch_long_bit (gdbarch, 32);
+}
+
+/* gdbarch initialization for Cygwin on AMD64.  */
+
+static void
+amd64_cygwin_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  amd64_windows_init_abi_common (info, gdbarch);
+  cygwin_init_abi (info, gdbarch);
+}
+
+static gdb_osabi
+amd64_windows_osabi_sniffer (bfd *abfd)
+{
+  const char *target_name = bfd_get_target (abfd);
+
+  if (!streq (target_name, "pei-x86-64"))
+    return GDB_OSABI_UNKNOWN;
+
+  if (is_linked_with_cygwin_dll (abfd))
+    return GDB_OSABI_CYGWIN;
+
+  return GDB_OSABI_WINDOWS;
+}
+
+void _initialize_amd64_windows_tdep ();
 void
-_initialize_amd64_windows_tdep (void)
+_initialize_amd64_windows_tdep ()
 {
-  gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64, GDB_OSABI_CYGWIN,
+  gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64, GDB_OSABI_WINDOWS,
                           amd64_windows_init_abi);
+  gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64, GDB_OSABI_CYGWIN,
+                          amd64_cygwin_init_abi);
+
+  gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_coff_flavour,
+				  amd64_windows_osabi_sniffer);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/annotate.c ./gdb/annotate.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/annotate.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/annotate.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Annotation routines for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -435,7 +435,7 @@ annotate_source (const char *filename, i
 
 /* See annotate.h.  */
 
-void
+bool
 annotate_source_line (struct symtab *s, int line, int mid_statement,
 		      CORE_ADDR pc)
 {
@@ -443,16 +443,25 @@ annotate_source_line (struct symtab *s,
     {
       const std::vector<off_t> *offsets;
       if (!g_source_cache.get_line_charpos (s, &offsets))
-	return;
-
-      /* Don't index off the end of the line_charpos array.  */
+	return false;
       if (line > offsets->size ())
-	return;
+	return false;
 
       annotate_source (s->fullname, line, (int) (*offsets)[line - 1],
-		       mid_statement, get_objfile_arch (SYMTAB_OBJFILE (s)),
+		       mid_statement, SYMTAB_OBJFILE (s)->arch (),
 		       pc);
+
+      /* Update the current symtab and line.  */
+      symtab_and_line sal;
+      sal.pspace = SYMTAB_PSPACE (s);
+      sal.symtab = s;
+      sal.line = line;
+      set_current_source_symtab_and_line (sal);
+
+      return true;
     }
+
+  return false;
 }
 
 
@@ -614,8 +623,9 @@ breakpoint_changed (struct breakpoint *b
   annotate_breakpoints_invalid ();
 }
 
+void _initialize_annotate ();
 void
-_initialize_annotate (void)
+_initialize_annotate ()
 {
   gdb::observers::breakpoint_created.attach (breakpoint_changed);
   gdb::observers::breakpoint_deleted.attach (breakpoint_changed);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/annotate.h ./gdb/annotate.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/annotate.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/annotate.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Annotation routines for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -92,8 +92,20 @@ struct annotate_arg_emitter
    character position.
 
    MID_STATEMENT is nonzero if the PC is not at the beginning of that
-   line.  */
-extern void annotate_source_line (struct symtab *s, int line,
+   line.
+
+   The current symtab and line is updated to reflect S and LINE.
+
+   Return true if the annotation was printed and the current symtab and
+   line were updated, otherwise return false, which can happen if the
+   source file for S can't be found, or LINE is out of range.
+
+   This does leave GDB in the weird situation where, even when annotations
+   are on, we only sometimes print the annotation, and only sometimes
+   update the current symtab and line.  However, this particular annotation
+   has behaved this way for some time, and front ends that still use
+   annotations now depend on this behaviour.  */
+extern bool annotate_source_line (struct symtab *s, int line,
 				  int mid_statement, CORE_ADDR pc);
 
 extern void annotate_frame_begin (int, struct gdbarch *, CORE_ADDR);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch32.c ./gdb/arch/aarch32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch32.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/aarch32.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch32.h ./gdb/arch/aarch32.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch32.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/aarch32.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch64.c ./gdb/arch/aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch64.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/aarch64.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch64.h ./gdb/arch/aarch64.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch64.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/aarch64.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target-dependent functionality for AArch64.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch64-insn.c ./gdb/arch/aarch64-insn.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch64-insn.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/aarch64-insn.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch64-insn.h ./gdb/arch/aarch64-insn.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/aarch64-insn.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/aarch64-insn.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/amd64.c ./gdb/arch/amd64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/amd64.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/amd64.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/amd64.h ./gdb/arch/amd64.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/amd64.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/amd64.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arc.c ./gdb/arch/arc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arc.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/arc.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,123 @@
+/* Copyright (C) 2017-2021 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 "gdbsupport/common-defs.h"
+#include "arc.h"
+#include <stdlib.h>
+#include <unordered_map>
+#include <string>
+
+/* Target description features.  */
+#include "features/arc/v1-core.c"
+#include "features/arc/v1-aux.c"
+#include "features/arc/v2-core.c"
+#include "features/arc/v2-aux.c"
+
+#ifndef GDBSERVER
+#define STATIC_IN_GDB static
+#else
+#define STATIC_IN_GDB
+#endif
+
+STATIC_IN_GDB target_desc *
+arc_create_target_description (const struct arc_arch_features &features)
+{
+  /* Create a new target description.  */
+  target_desc *tdesc = allocate_target_description ();
+
+#ifndef IN_PROCESS_AGENT
+  std::string arch_name;
+
+  /* Architecture names here must match the ones in
+     ARCH_INFO_STRUCT in bfd/cpu-arc.c.  */
+  if (features.isa == ARC_ISA_ARCV1 && features.reg_size == 4)
+      arch_name = "arc:ARC700";
+  else if (features.isa == ARC_ISA_ARCV2 && features.reg_size == 4)
+      arch_name = "arc:ARCv2";
+  else
+    {
+      std::string msg = string_printf
+	("Cannot determine architecture: ISA=%d; bitness=%d",
+	 features.isa, 8 * features.reg_size);
+      gdb_assert_not_reached (msg.c_str ());
+    }
+
+  set_tdesc_architecture (tdesc, arch_name.c_str ());
+#endif
+
+  long regnum = 0;
+
+  switch (features.isa)
+    {
+    case ARC_ISA_ARCV1:
+      regnum = create_feature_arc_v1_core (tdesc, regnum);
+      regnum = create_feature_arc_v1_aux (tdesc, regnum);
+      break;
+    case ARC_ISA_ARCV2:
+      regnum = create_feature_arc_v2_core (tdesc, regnum);
+      regnum = create_feature_arc_v2_aux (tdesc, regnum);
+      break;
+    default:
+      std::string msg = string_printf
+	("Cannot choose target description XML: %d", features.isa);
+      gdb_assert_not_reached (msg.c_str ());
+    }
+
+  return tdesc;
+}
+
+#ifndef GDBSERVER
+
+/* Wrapper used by std::unordered_map to generate hash for features set.  */
+struct arc_arch_features_hasher
+{
+  std::size_t
+  operator() (const arc_arch_features &features) const noexcept
+  {
+    return features.hash ();
+  }
+};
+
+/* Cache of previously created target descriptions, indexed by the hash
+   of the features set used to create them.  */
+static std::unordered_map<arc_arch_features,
+			  const target_desc_up,
+			  arc_arch_features_hasher> arc_tdesc_cache;
+
+/* See arch/arc.h.  */
+
+const target_desc *
+arc_lookup_target_description (const struct arc_arch_features &features)
+{
+  /* Lookup in the cache first.  If found, return the pointer from the
+     "target_desc_up" type which is a "unique_ptr".  This should be fine
+     as the "arc_tdesc_cache" will persist until GDB terminates.  */
+  const auto it = arc_tdesc_cache.find (features);
+  if (it != arc_tdesc_cache.end ())
+    return it->second.get ();
+
+  target_desc *tdesc = arc_create_target_description (features);
+
+  /* Add the newly created target description to the repertoire.
+     PR build/27385: Use "target_desc_up ()" ctor explicitly.  */
+  arc_tdesc_cache.emplace (features, target_desc_up (tdesc));
+
+  return tdesc;
+}
+
+#endif /* !GDBSERVER */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arc.h ./gdb/arch/arc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/arc.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,87 @@
+/* Copyright (C) 2017-2021 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 ARCH_ARC_H
+#define ARCH_ARC_H
+
+#include "gdbsupport/tdesc.h"
+
+/* Supported ARC ISAs.  */
+enum arc_isa
+{
+  ARC_ISA_ARCV1 = 1,  /* a.k.a. ARCompact (ARC600, ARC700)  */
+  ARC_ISA_ARCV2	      /* such as ARC EM and ARC HS  */
+};
+
+struct arc_arch_features
+{
+  arc_arch_features (int reg_size, arc_isa isa)
+    : reg_size (reg_size), isa (isa)
+  {}
+
+  /* Register size in bytes.  Possible values are 4, and 8.  A 0 indicates
+     an uninitialised value.  */
+  const int reg_size;
+
+  /* See ARC_ISA enum.  */
+  const arc_isa isa;
+
+  /* Equality operator.  */
+  bool operator== (const struct arc_arch_features &rhs) const
+  {
+    return (reg_size == rhs.reg_size && isa == rhs.isa);
+  }
+
+  /* Inequality operator.  */
+  bool operator!= (const struct arc_arch_features &rhs) const
+  {
+    return !(*this == rhs);
+  }
+
+  /* Used by std::unordered_map to hash the feature sets.  The hash is
+     calculated in the manner below:
+     REG_SIZE |  ISA
+      5-bits  | 4-bits  */
+
+  std::size_t hash () const noexcept
+  {
+    std::size_t val = ((reg_size & 0x1f) << 8 | (isa & 0xf) << 0);
+    return val;
+  }
+};
+
+#ifdef GDBSERVER
+
+/* Create and return a target description that is compatible with FEATURES.
+   The only external client of this must be the gdbserver which manipulates
+   the returned data.  */
+
+target_desc *arc_create_target_description
+	(const struct arc_arch_features &features);
+
+#else
+
+/* Lookup the cache for a target description matching the FEATURES.
+   If nothing is found, then create one and return it.  */
+
+const target_desc *arc_lookup_target_description
+	(const struct arc_arch_features &features);
+
+#endif /* GDBSERVER */
+
+
+#endif /* ARCH_ARC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm.c ./gdb/arch/arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/arm.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for GDB on ARM systems.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -40,17 +40,6 @@ thumb_insn_size (unsigned short inst1)
 }
 
 /* See arm.h.  */
-
-int
-bitcount (unsigned long val)
-{
-  int nbits;
-  for (nbits = 0; val != 0; nbits++)
-    val &= val - 1;		/* Delete rightmost 1-bit in val.  */
-  return nbits;
-}
-
-/* See arm.h.  */
 
 int
 condition_true (unsigned long cond, unsigned long status_reg)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm-get-next-pcs.c ./gdb/arch/arm-get-next-pcs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm-get-next-pcs.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/arm-get-next-pcs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common code for ARM software single stepping support.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,6 +22,7 @@
 #include "gdbsupport/common-regcache.h"
 #include "arm.h"
 #include "arm-get-next-pcs.h"
+#include "count-one-bits.h"
 
 /* See arm-get-next-pcs.h.  */
 
@@ -408,8 +409,8 @@ thumb_get_next_pcs_raw (struct arm_get_n
 
       /* Fetch the saved PC from the stack.  It's stored above
          all of the other registers.  */
-      unsigned long offset = bitcount (bits (inst1, 0, 7))
-			     * ARM_INT_REGISTER_SIZE;
+      unsigned long offset
+	= count_one_bits (bits (inst1, 0, 7)) * ARM_INT_REGISTER_SIZE;
       sp = regcache_raw_get_unsigned (regcache, ARM_SP_REGNUM);
       nextpc = self->ops->read_mem_uint (sp + offset, 4, byte_order);
     }
@@ -496,7 +497,7 @@ thumb_get_next_pcs_raw (struct arm_get_n
 	      /* LDMIA or POP */
 	      if (!bit (inst2, 15))
 		load_pc = 0;
-	      offset = bitcount (inst2) * 4 - 4;
+	      offset = count_one_bits (inst2) * 4 - 4;
 	    }
 	  else if (!bit (inst1, 7) && bit (inst1, 8))
 	    {
@@ -864,7 +865,7 @@ arm_get_next_pcs_raw (struct arm_get_nex
 		    {
 		      /* up */
 		      unsigned long reglist = bits (this_instr, 0, 14);
-		      offset = bitcount (reglist) * 4;
+		      offset = count_one_bits_l (reglist) * 4;
 		      if (bit (this_instr, 24))		/* pre */
 			offset += 4;
 		    }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm-get-next-pcs.h ./gdb/arch/arm-get-next-pcs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm-get-next-pcs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/arm-get-next-pcs.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common code for ARM software single stepping support.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm.h ./gdb/arch/arm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/arm.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Common target dependent code for GDB on ARM systems.
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -31,6 +31,7 @@ enum gdb_regnum {
   ARM_SP_REGNUM = 13,		/* Contains address of top of stack */
   ARM_LR_REGNUM = 14,		/* address to return to from a function call */
   ARM_PC_REGNUM = 15,		/* Contains program counter */
+  /* F0..F7 are the fp registers for the (obsolete) FPA architecture.  */
   ARM_F0_REGNUM = 16,		/* first floating point register */
   ARM_F3_REGNUM = 19,		/* last floating point argument register */
   ARM_F7_REGNUM = 23, 		/* last floating point register */
@@ -159,9 +160,6 @@ int thumb_insn_size (unsigned short inst
 /* Returns true if the condition evaluates to true.  */
 int condition_true (unsigned long cond, unsigned long status_reg);
 
-/* Return number of 1-bits in VAL.  */
-int bitcount (unsigned long val);
-
 /* Return 1 if THIS_INSTR might change control flow, 0 otherwise.  */
 int arm_instruction_changes_pc (uint32_t this_instr);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm-linux.c ./gdb/arch/arm-linux.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm-linux.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/arm-linux.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for GNU/Linux on ARM systems.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm-linux.h ./gdb/arch/arm-linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/arm-linux.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/arm-linux.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for GNU/Linux on ARM systems.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/i386.c ./gdb/arch/i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/i386.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/i386.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/i386.h ./gdb/arch/i386.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/i386.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/i386.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/ppc-linux-common.c ./gdb/arch/ppc-linux-common.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/ppc-linux-common.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/ppc-linux-common.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for GNU/Linux on PPC systems.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/ppc-linux-common.h ./gdb/arch/ppc-linux-common.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/ppc-linux-common.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/ppc-linux-common.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for GNU/Linux on PPC systems.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/ppc-linux-tdesc.h ./gdb/arch/ppc-linux-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/ppc-linux-tdesc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/ppc-linux-tdesc.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target description declarations shared between gdb, gdbserver and IPA.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/riscv.c ./gdb/arch/riscv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/riscv.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/riscv.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2018-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,37 +25,17 @@
 #include "../features/riscv/32bit-fpu.c"
 #include "../features/riscv/64bit-fpu.c"
 
-/* Wrapper used by std::unordered_map to generate hash for feature set.  */
-struct riscv_gdbarch_features_hasher
-{
-  std::size_t
-  operator() (const riscv_gdbarch_features &features) const noexcept
-  {
-    return features.hash ();
-  }
-};
-
-/* Cache of previously seen target descriptions, indexed by the feature set
-   that created them.  */
-static std::unordered_map<riscv_gdbarch_features,
-                          target_desc *,
-                          riscv_gdbarch_features_hasher> riscv_tdesc_cache;
+#ifndef GDBSERVER
+#define STATIC_IN_GDB static
+#else
+#define STATIC_IN_GDB
+#endif
 
 /* See arch/riscv.h.  */
 
-const target_desc *
-riscv_create_target_description (struct riscv_gdbarch_features features)
+STATIC_IN_GDB target_desc *
+riscv_create_target_description (const struct riscv_gdbarch_features features)
 {
-  /* Have we seen this feature set before?  If we have return the same
-     target description.  GDB expects that if two target descriptions are
-     the same (in content terms) then they will actually be the same
-     instance.  This is important when trying to lookup gdbarch objects as
-     GDBARCH_LIST_LOOKUP_BY_INFO performs a pointer comparison on target
-     descriptions to find candidate gdbarch objects.  */
-  const auto it = riscv_tdesc_cache.find (features);
-  if (it != riscv_tdesc_cache.end ())
-    return it->second;
-
   /* Now we should create a new target description.  */
   target_desc *tdesc = allocate_target_description ();
 
@@ -93,8 +73,46 @@ riscv_create_target_description (struct
   else if (features.flen == 8)
     regnum = create_feature_riscv_64bit_fpu (tdesc, regnum);
 
-  /* Add to the cache.  */
-  riscv_tdesc_cache.emplace (features, tdesc);
+  return tdesc;
+}
+
+#ifndef GDBSERVER
+
+/* Wrapper used by std::unordered_map to generate hash for feature set.  */
+struct riscv_gdbarch_features_hasher
+{
+  std::size_t
+  operator() (const riscv_gdbarch_features &features) const noexcept
+  {
+    return features.hash ();
+  }
+};
+
+/* Cache of previously seen target descriptions, indexed by the feature set
+   that created them.  */
+static std::unordered_map<riscv_gdbarch_features,
+			  const target_desc_up,
+			  riscv_gdbarch_features_hasher> riscv_tdesc_cache;
+
+/* See arch/riscv.h.  */
+
+const target_desc *
+riscv_lookup_target_description (const struct riscv_gdbarch_features features)
+{
+  /* Lookup in the cache.  If we find it then return the pointer out of
+     the target_desc_up (which is a unique_ptr).  This is safe as the
+     riscv_tdesc_cache will exist until GDB exits.  */
+  const auto it = riscv_tdesc_cache.find (features);
+  if (it != riscv_tdesc_cache.end ())
+    return it->second.get ();
+
+  target_desc *tdesc = riscv_create_target_description (features);
+
+  /* Add to the cache.  Work around a problem with g++ 4.8 (PR96537):
+     Call the target_desc_up constructor explictly instead of implicitly.  */
+  riscv_tdesc_cache.emplace (features, target_desc_up (tdesc));
 
   return tdesc;
 }
+
+#endif /* !GDBSERVER */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/riscv.h ./gdb/arch/riscv.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/riscv.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/riscv.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target-dependent functionality for RISC-V
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -66,10 +66,28 @@ struct riscv_gdbarch_features
   }
 };
 
-/* Create and return a target description that is compatible with
-   FEATURES.  */
+#ifdef GDBSERVER
+
+/* Create and return a target description that is compatible with FEATURES.
+   This is only used directly from the gdbserver where the created target
+   description is modified after it is return.  */
+
+target_desc *riscv_create_target_description
+	(const struct riscv_gdbarch_features features);
+
+#else
+
+/* Lookup an already existing target description matching FEATURES, or
+   create a new target description if this is the first time we have seen
+   FEATURES.  For the same FEATURES the same target_desc is always
+   returned.  This is important when trying to lookup gdbarch objects as
+   GDBARCH_LIST_LOOKUP_BY_INFO performs a pointer comparison on target
+   descriptions to find candidate gdbarch objects.  */
+
+const target_desc *riscv_lookup_target_description
+	(const struct riscv_gdbarch_features features);
+
+#endif /* GDBSERVER */
 
-const target_desc *riscv_create_target_description
-	(struct riscv_gdbarch_features features);
 
 #endif /* ARCH_RISCV_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/tic6x.c ./gdb/arch/tic6x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/tic6x.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/tic6x.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/tic6x.h ./gdb/arch/tic6x.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/tic6x.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/tic6x.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/xtensa.h ./gdb/arch/xtensa.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch/xtensa.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch/xtensa.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common Target-dependent code for the Xtensa port of GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch-utils.c ./gdb/arch-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch-utils.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch-utils.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Dynamic architecture support for GDB, the GNU debugger.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -317,17 +317,17 @@ show_endian (struct ui_file *file, int f
   if (target_byte_order_user == BFD_ENDIAN_UNKNOWN)
     if (gdbarch_byte_order (get_current_arch ()) == BFD_ENDIAN_BIG)
       fprintf_unfiltered (file, _("The target endianness is set automatically "
-				  "(currently big endian)\n"));
+				  "(currently big endian).\n"));
     else
       fprintf_unfiltered (file, _("The target endianness is set automatically "
-				  "(currently little endian)\n"));
+				  "(currently little endian).\n"));
   else
     if (target_byte_order_user == BFD_ENDIAN_BIG)
       fprintf_unfiltered (file,
-			  _("The target is assumed to be big endian\n"));
+			  _("The target is set to big endian.\n"));
     else
       fprintf_unfiltered (file,
-			  _("The target is assumed to be little endian\n"));
+			  _("The target is set to little endian.\n"));
 }
 
 static void
@@ -476,11 +476,11 @@ show_architecture (struct ui_file *file,
 		   struct cmd_list_element *c, const char *value)
 {
   if (target_architecture_user == NULL)
-    fprintf_filtered (file, _("The target architecture is set "
-			      "automatically (currently %s)\n"),
+    fprintf_filtered (file, _("The target architecture is set to "
+			      "\"auto\" (currently \"%s\").\n"),
 		      gdbarch_bfd_arch_info (get_current_arch ())->printable_name);
   else
-    fprintf_filtered (file, _("The target architecture is assumed to be %s\n"),
+    fprintf_filtered (file, _("The target architecture is set to \"%s\".\n"),
 		      set_architecture_string);
 }
 
@@ -858,7 +858,7 @@ default_return_in_first_hidden_param_p (
   /* Usually, the return value's address is stored the in the "first hidden"
      parameter if the return value should be passed by reference, as
      specified in ABI.  */
-  return language_pass_by_reference (type);
+  return !(language_pass_by_reference (type).trivially_copyable);
 }
 
 int default_insn_is_call (struct gdbarch *gdbarch, CORE_ADDR addr)
@@ -876,6 +876,38 @@ int default_insn_is_jump (struct gdbarch
   return 0;
 }
 
+/*  See arch-utils.h.  */
+
+bool
+default_program_breakpoint_here_p (struct gdbarch *gdbarch,
+				   CORE_ADDR address)
+{
+  int len;
+  const gdb_byte *bpoint = gdbarch_breakpoint_from_pc (gdbarch, &address, &len);
+
+  /* Software breakpoints unsupported?  */
+  if (bpoint == nullptr)
+    return false;
+
+  gdb_byte *target_mem = (gdb_byte *) alloca (len);
+
+  /* Enable the automatic memory restoration from breakpoints while
+     we read the memory.  Otherwise we may find temporary breakpoints, ones
+     inserted by GDB, and flag them as permanent breakpoints.  */
+  scoped_restore restore_memory
+    = make_scoped_restore_show_memory_breakpoints (0);
+
+  if (target_read_memory (address, target_mem, len) == 0)
+    {
+      /* Check if this is a breakpoint instruction for this architecture,
+	 including ones used by GDB.  */
+      if (memcmp (target_mem, bpoint, len) == 0)
+	return true;
+    }
+
+  return false;
+}
+
 void
 default_skip_permanent_breakpoint (struct regcache *regcache)
 {
@@ -1004,8 +1036,25 @@ default_get_pc_address_flags (frame_info
   return "";
 }
 
+/* See arch-utils.h.  */
+void
+default_read_core_file_mappings (struct gdbarch *gdbarch,
+                                 struct bfd *cbfd,
+				 gdb::function_view<void (ULONGEST count)>
+				   pre_loop_cb,
+				 gdb::function_view<void (int num,
+				                          ULONGEST start,
+							  ULONGEST end,
+							  ULONGEST file_ofs,
+							  const char *filename,
+							  const void *other)>
+				   loop_cb)
+{
+}
+
+void _initialize_gdbarch_utils ();
 void
-_initialize_gdbarch_utils (void)
+_initialize_gdbarch_utils ()
 {
   add_setshow_enum_cmd ("endian", class_support,
 			endian_enum, &set_endian_string, 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch-utils.h ./gdb/arch-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arch-utils.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arch-utils.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Dynamic architecture support for GDB, the GNU debugger.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -228,6 +228,10 @@ extern int default_insn_is_call (struct
 extern int default_insn_is_ret (struct gdbarch *, CORE_ADDR);
 extern int default_insn_is_jump (struct gdbarch *, CORE_ADDR);
 
+/* Default implementation of gdbarch_program_breakpoint_here_p.  */
+extern bool default_program_breakpoint_here_p (struct gdbarch *gdbarch,
+					       CORE_ADDR addr);
+
 /* Do-nothing version of vsyscall_range.  Returns false.  */
 
 extern int default_vsyscall_range (struct gdbarch *gdbarch, struct mem_range *range);
@@ -276,4 +280,16 @@ extern ULONGEST default_type_align (stru
 extern std::string default_get_pc_address_flags (frame_info *frame,
 						 CORE_ADDR pc);
 
+/* Default implementation of gdbarch read_core_file_mappings method.  */
+extern void default_read_core_file_mappings (struct gdbarch *gdbarch,
+					     struct bfd *cbfd,
+					     gdb::function_view<void (ULONGEST count)>
+					       pre_loop_cb,
+					     gdb::function_view<void (int num,
+								      ULONGEST start,
+								      ULONGEST end,
+								      ULONGEST file_ofs,
+								      const char *filename,
+								      const void *other)>
+					       loop_cb);
 #endif /* ARCH_UTILS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arc-linux-tdep.c ./gdb/arc-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arc-linux-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arc-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,548 @@
+/* Target dependent code for GNU/Linux ARC.
+
+   Copyright 2020-2021 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/>.  */
+
+/* GDB header files.  */
+#include "defs.h"
+#include "linux-tdep.h"
+#include "objfiles.h"
+#include "opcode/arc.h"
+#include "osabi.h"
+#include "solib-svr4.h"
+
+/* ARC header files.  */
+#include "opcodes/arc-dis.h"
+#include "arc-linux-tdep.h"
+#include "arc-tdep.h"
+#include "arch/arc.h"
+
+#define REGOFF(offset) (offset * ARC_REGISTER_SIZE)
+
+/* arc_linux_core_reg_offsets[i] is the offset in the .reg section of GDB
+   regnum i.  Array index is an internal GDB register number, as defined in
+   arc-tdep.h:arc_regnum.
+
+   From include/uapi/asm/ptrace.h in the ARC Linux sources.  */
+
+/* The layout of this struct is tightly bound to "arc_regnum" enum
+   in arc-tdep.h.  Any change of order in there, must be reflected
+   here as well.  */
+static const int arc_linux_core_reg_offsets[] = {
+  /* R0 - R12.  */
+  REGOFF (22), REGOFF (21), REGOFF (20), REGOFF (19),
+  REGOFF (18), REGOFF (17), REGOFF (16), REGOFF (15),
+  REGOFF (14), REGOFF (13), REGOFF (12), REGOFF (11),
+  REGOFF (10),
+
+  /* R13 - R25.  */
+  REGOFF (37), REGOFF (36), REGOFF (35), REGOFF (34),
+  REGOFF (33), REGOFF (32), REGOFF (31), REGOFF (30),
+  REGOFF (29), REGOFF (28), REGOFF (27), REGOFF (26),
+  REGOFF (25),
+
+  REGOFF (9),			/* R26 (GP) */
+  REGOFF (8),			/* FP */
+  REGOFF (23),			/* SP */
+  ARC_OFFSET_NO_REGISTER,	/* ILINK */
+  ARC_OFFSET_NO_REGISTER,	/* R30 */
+  REGOFF (7),			/* BLINK */
+
+  /* R32 - R59.  */
+  ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER,
+  ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER,
+  ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER,
+  ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER,
+  ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER,
+  ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER,
+  ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER,
+  ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER,
+  ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER, ARC_OFFSET_NO_REGISTER,
+  ARC_OFFSET_NO_REGISTER,
+
+  REGOFF (4),			/* LP_COUNT */
+  ARC_OFFSET_NO_REGISTER,	/* RESERVED */
+  ARC_OFFSET_NO_REGISTER,	/* LIMM */
+  ARC_OFFSET_NO_REGISTER,	/* PCL */
+
+  REGOFF (39),			/* PC  */
+  REGOFF (5),			/* STATUS32 */
+  REGOFF (2),			/* LP_START */
+  REGOFF (3),			/* LP_END */
+  REGOFF (1),			/* BTA */
+  REGOFF (6)			/* ERET */
+};
+
+/* Implement the "cannot_fetch_register" gdbarch method.  */
+
+static int
+arc_linux_cannot_fetch_register (struct gdbarch *gdbarch, int regnum)
+{
+  /* Assume that register is readable if it is unknown.  */
+  switch (regnum)
+    {
+    case ARC_ILINK_REGNUM:
+    case ARC_RESERVED_REGNUM:
+    case ARC_LIMM_REGNUM:
+      return true;
+    case ARC_R30_REGNUM:
+    case ARC_R58_REGNUM:
+    case ARC_R59_REGNUM:
+      return !arc_mach_is_arcv2 (gdbarch);
+    }
+  return (regnum > ARC_BLINK_REGNUM) && (regnum < ARC_LP_COUNT_REGNUM);
+}
+
+/* Implement the "cannot_store_register" gdbarch method.  */
+
+static int
+arc_linux_cannot_store_register (struct gdbarch *gdbarch, int regnum)
+{
+  /* Assume that register is writable if it is unknown.  */
+  switch (regnum)
+    {
+    case ARC_ILINK_REGNUM:
+    case ARC_RESERVED_REGNUM:
+    case ARC_LIMM_REGNUM:
+    case ARC_PCL_REGNUM:
+      return true;
+    case ARC_R30_REGNUM:
+    case ARC_R58_REGNUM:
+    case ARC_R59_REGNUM:
+      return !arc_mach_is_arcv2 (gdbarch);
+    }
+  return (regnum > ARC_BLINK_REGNUM) && (regnum < ARC_LP_COUNT_REGNUM);
+}
+
+/* For ARC Linux, breakpoints use the 16-bit TRAP_S 1 instruction, which
+   is 0x3e78 (little endian) or 0x783e (big endian).  */
+
+static const gdb_byte arc_linux_trap_s_be[] = { 0x78, 0x3e };
+static const gdb_byte arc_linux_trap_s_le[] = { 0x3e, 0x78 };
+static const int trap_size = 2;   /* Number of bytes to insert "trap".  */
+
+/* Implement the "breakpoint_kind_from_pc" gdbarch method.  */
+
+static int
+arc_linux_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr)
+{
+  return trap_size;
+}
+
+/* Implement the "sw_breakpoint_from_kind" gdbarch method.  */
+
+static const gdb_byte *
+arc_linux_sw_breakpoint_from_kind (struct gdbarch *gdbarch,
+				   int kind, int *size)
+{
+  *size = kind;
+  return ((gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
+	  ? arc_linux_trap_s_be
+	  : arc_linux_trap_s_le);
+}
+
+/* Check for an atomic sequence of instructions beginning with an
+   LLOCK instruction and ending with a SCOND instruction.
+
+   These patterns are hand coded in libc's (glibc and uclibc). Take
+   a look at [1] for instance:
+
+   main+14: llock   r2,[r0]
+   main+18: brne.nt r2,0,main+30
+   main+22: scond   r3,[r0]
+   main+26: bne     main+14
+   main+30: mov_s   r0,0
+
+   If such a sequence is found, attempt to step over it.
+   A breakpoint is placed at the end of the sequence.
+
+   This function expects the INSN to be a "llock(d)" instruction.
+
+   [1]
+   https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/libc/ \
+     sysdeps/linux/arc/bits/atomic.h#n46
+   */
+
+static std::vector<CORE_ADDR>
+handle_atomic_sequence (arc_instruction insn, disassemble_info &di)
+{
+  const int atomic_seq_len = 24;    /* Instruction sequence length.  */
+  std::vector<CORE_ADDR> next_pcs;
+
+  /* Sanity check.  */
+  gdb_assert (insn.insn_class == LLOCK);
+
+  /* Data size we are dealing with: LLOCK vs. LLOCKD  */
+  arc_ldst_data_size llock_data_size_mode = insn.data_size_mode;
+  /* Indicator if any conditional branch is found in the sequence.  */
+  bool found_bc = false;
+  /* Becomes true if "LLOCK(D) .. SCOND(D)" sequence is found.  */
+  bool is_pattern_valid = false;
+
+  for (int insn_count = 0; insn_count < atomic_seq_len; ++insn_count)
+    {
+      arc_insn_decode (arc_insn_get_linear_next_pc (insn),
+		       &di, arc_delayed_print_insn, &insn);
+
+      if (insn.insn_class == BRCC)
+        {
+          /* If more than one conditional branch is found, this is not
+             the pattern we are interested in.  */
+          if (found_bc)
+	    break;
+	  found_bc = true;
+	  continue;
+        }
+
+      /* This is almost a happy ending.  */
+      if (insn.insn_class == SCOND)
+        {
+	  /* SCOND should match the LLOCK's data size.  */
+	  if (insn.data_size_mode == llock_data_size_mode)
+	    is_pattern_valid = true;
+	  break;
+        }
+    }
+
+  if (is_pattern_valid)
+    {
+      /* Get next instruction after scond(d).  There is no limm.  */
+      next_pcs.push_back (insn.address + insn.length);
+    }
+
+  return next_pcs;
+}
+
+/* Implement the "software_single_step" gdbarch method.  */
+
+static std::vector<CORE_ADDR>
+arc_linux_software_single_step (struct regcache *regcache)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  struct disassemble_info di = arc_disassemble_info (gdbarch);
+
+  /* Read current instruction.  */
+  struct arc_instruction curr_insn;
+  arc_insn_decode (regcache_read_pc (regcache), &di, arc_delayed_print_insn,
+		   &curr_insn);
+
+  if (curr_insn.insn_class == LLOCK)
+    return handle_atomic_sequence (curr_insn, di);
+
+  CORE_ADDR next_pc = arc_insn_get_linear_next_pc (curr_insn);
+  std::vector<CORE_ADDR> next_pcs;
+
+  /* For instructions with delay slots, the fall thru is not the
+     instruction immediately after the current instruction, but the one
+     after that.  */
+  if (curr_insn.has_delay_slot)
+    {
+      struct arc_instruction next_insn;
+      arc_insn_decode (next_pc, &di, arc_delayed_print_insn, &next_insn);
+      next_pcs.push_back (arc_insn_get_linear_next_pc (next_insn));
+    }
+  else
+    next_pcs.push_back (next_pc);
+
+  ULONGEST status32;
+  regcache_cooked_read_unsigned (regcache, gdbarch_ps_regnum (gdbarch),
+				 &status32);
+
+  if (curr_insn.is_control_flow)
+    {
+      CORE_ADDR branch_pc = arc_insn_get_branch_target (curr_insn);
+      if (branch_pc != next_pc)
+	next_pcs.push_back (branch_pc);
+    }
+  /* Is current instruction the last in a loop body?  */
+  else if (tdep->has_hw_loops)
+    {
+      /* If STATUS32.L is 1, then ZD-loops are disabled.  */
+      if ((status32 & ARC_STATUS32_L_MASK) == 0)
+	{
+	  ULONGEST lp_end, lp_start, lp_count;
+	  regcache_cooked_read_unsigned (regcache, ARC_LP_START_REGNUM,
+					 &lp_start);
+	  regcache_cooked_read_unsigned (regcache, ARC_LP_END_REGNUM, &lp_end);
+	  regcache_cooked_read_unsigned (regcache, ARC_LP_COUNT_REGNUM,
+					 &lp_count);
+
+	  if (arc_debug)
+	    {
+	      debug_printf ("arc-linux: lp_start = %s, lp_end = %s, "
+			    "lp_count = %s, next_pc = %s\n",
+			    paddress (gdbarch, lp_start),
+			    paddress (gdbarch, lp_end),
+			    pulongest (lp_count),
+			    paddress (gdbarch, next_pc));
+	    }
+
+	  if (next_pc == lp_end && lp_count > 1)
+	    {
+	      /* The instruction is in effect a jump back to the start of
+		 the loop.  */
+	      next_pcs.push_back (lp_start);
+	    }
+	}
+    }
+
+  /* Is this a delay slot?  Then next PC is in BTA register.  */
+  if ((status32 & ARC_STATUS32_DE_MASK) != 0)
+    {
+      ULONGEST bta;
+      regcache_cooked_read_unsigned (regcache, ARC_BTA_REGNUM, &bta);
+      next_pcs.push_back (bta);
+    }
+
+  return next_pcs;
+}
+
+/* Implement the "skip_solib_resolver" gdbarch method.
+
+   See glibc_skip_solib_resolver for details.  */
+
+static CORE_ADDR
+arc_linux_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
+{
+  /* For uClibc 0.9.26+.
+
+     An unresolved PLT entry points to "__dl_linux_resolve", which calls
+     "_dl_linux_resolver" to do the resolving and then eventually jumps to
+     the function.
+
+     So we look for the symbol `_dl_linux_resolver', and if we are there,
+     gdb sets a breakpoint at the return address, and continues.  */
+  struct bound_minimal_symbol resolver
+    = lookup_minimal_symbol ("_dl_linux_resolver", NULL, NULL);
+
+  if (arc_debug)
+    {
+      if (resolver.minsym != nullptr)
+	{
+	  CORE_ADDR res_addr = BMSYMBOL_VALUE_ADDRESS (resolver);
+	  debug_printf ("arc-linux: skip_solib_resolver (): "
+			"pc = %s, resolver at %s\n",
+			print_core_address (gdbarch, pc),
+			print_core_address (gdbarch, res_addr));
+	}
+      else
+	{
+	  debug_printf ("arc-linux: skip_solib_resolver (): "
+			"pc = %s, no resolver found\n",
+			print_core_address (gdbarch, pc));
+	}
+    }
+
+  if (resolver.minsym != nullptr && BMSYMBOL_VALUE_ADDRESS (resolver) == pc)
+    {
+      /* Find the return address.  */
+      return frame_unwind_caller_pc (get_current_frame ());
+    }
+  else
+    {
+      /* No breakpoint required.  */
+      return 0;
+    }
+}
+
+void
+arc_linux_supply_gregset (const struct regset *regset,
+			  struct regcache *regcache,
+			  int regnum, const void *gregs, size_t size)
+{
+  gdb_static_assert (ARC_LAST_REGNUM
+		     < ARRAY_SIZE (arc_linux_core_reg_offsets));
+
+  const bfd_byte *buf = (const bfd_byte *) gregs;
+
+  for (int reg = 0; reg <= ARC_LAST_REGNUM; reg++)
+      if (arc_linux_core_reg_offsets[reg] != ARC_OFFSET_NO_REGISTER)
+	regcache->raw_supply (reg, buf + arc_linux_core_reg_offsets[reg]);
+}
+
+void
+arc_linux_supply_v2_regset (const struct regset *regset,
+			    struct regcache *regcache, int regnum,
+			    const void *v2_regs, size_t size)
+{
+  const bfd_byte *buf = (const bfd_byte *) v2_regs;
+
+  /* user_regs_arcv2 is defined in linux arch/arc/include/uapi/asm/ptrace.h.  */
+  regcache->raw_supply (ARC_R30_REGNUM, buf);
+  regcache->raw_supply (ARC_R58_REGNUM, buf + REGOFF (1));
+  regcache->raw_supply (ARC_R59_REGNUM, buf + REGOFF (2));
+}
+
+/* Populate BUF with register REGNUM from the REGCACHE.  */
+
+static void
+collect_register (const struct regcache *regcache, struct gdbarch *gdbarch,
+		  int regnum, gdb_byte *buf)
+{
+  int offset;
+
+  /* Skip non-existing registers.  */
+  if (arc_linux_core_reg_offsets[regnum] == ARC_OFFSET_NO_REGISTER)
+    return;
+
+  /* The address where the execution has stopped is in pseudo-register
+     STOP_PC.  However, when kernel code is returning from the exception,
+     it uses the value from ERET register.  Since, TRAP_S (the breakpoint
+     instruction) commits, the ERET points to the next instruction.  In
+     other words: ERET != STOP_PC.  To jump back from the kernel code to
+     the correct address, ERET must be overwritten by GDB's STOP_PC.  Else,
+     the program will continue at the address after the current instruction.
+     */
+  if (regnum == gdbarch_pc_regnum (gdbarch))
+    offset = arc_linux_core_reg_offsets[ARC_ERET_REGNUM];
+  else
+    offset = arc_linux_core_reg_offsets[regnum];
+  regcache->raw_collect (regnum, buf + offset);
+}
+
+void
+arc_linux_collect_gregset (const struct regset *regset,
+			   const struct regcache *regcache,
+			   int regnum, void *gregs, size_t size)
+{
+  gdb_static_assert (ARC_LAST_REGNUM
+		     < ARRAY_SIZE (arc_linux_core_reg_offsets));
+
+  gdb_byte *buf = (gdb_byte *) gregs;
+  struct gdbarch *gdbarch = regcache->arch ();
+
+  /* regnum == -1 means writing all the registers.  */
+  if (regnum == -1)
+    for (int reg = 0; reg <= ARC_LAST_REGNUM; reg++)
+      collect_register (regcache, gdbarch, reg, buf);
+  else if (regnum <= ARC_LAST_REGNUM)
+    collect_register (regcache, gdbarch, regnum, buf);
+  else
+    gdb_assert_not_reached ("Invalid regnum in arc_linux_collect_gregset.");
+}
+
+void
+arc_linux_collect_v2_regset (const struct regset *regset,
+			     const struct regcache *regcache, int regnum,
+			     void *v2_regs, size_t size)
+{
+  bfd_byte *buf = (bfd_byte *) v2_regs;
+
+  regcache->raw_collect (ARC_R30_REGNUM, buf);
+  regcache->raw_collect (ARC_R58_REGNUM, buf + REGOFF (1));
+  regcache->raw_collect (ARC_R59_REGNUM, buf + REGOFF (2));
+}
+
+/* Linux regset definitions.  */
+
+static const struct regset arc_linux_gregset = {
+  arc_linux_core_reg_offsets,
+  arc_linux_supply_gregset,
+  arc_linux_collect_gregset,
+};
+
+static const struct regset arc_linux_v2_regset = {
+  NULL,
+  arc_linux_supply_v2_regset,
+  arc_linux_collect_v2_regset,
+};
+
+/* Implement the `iterate_over_regset_sections` gdbarch method.  */
+
+static void
+arc_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
+					iterate_over_regset_sections_cb *cb,
+					void *cb_data,
+					const struct regcache *regcache)
+{
+  /* There are 40 registers in Linux user_regs_struct, although some of
+     them are now just a mere paddings, kept to maintain binary
+     compatibility with older tools.  */
+  const int sizeof_gregset = 40 * ARC_REGISTER_SIZE;
+
+  cb (".reg", sizeof_gregset, sizeof_gregset, &arc_linux_gregset, NULL,
+      cb_data);
+  cb (".reg-arc-v2", ARC_LINUX_SIZEOF_V2_REGSET, ARC_LINUX_SIZEOF_V2_REGSET,
+      &arc_linux_v2_regset, NULL, cb_data);
+}
+
+/* Implement the `core_read_description` gdbarch method.  */
+
+static const struct target_desc *
+arc_linux_core_read_description (struct gdbarch *gdbarch,
+				 struct target_ops *target,
+				 bfd *abfd)
+{
+  arc_arch_features features
+    = arc_arch_features_create (abfd,
+				gdbarch_bfd_arch_info (gdbarch)->mach);
+  return arc_lookup_target_description (features);
+}
+
+/* Initialization specific to Linux environment.  */
+
+static void
+arc_linux_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+  if (arc_debug)
+    debug_printf ("arc-linux: GNU/Linux OS/ABI initialization.\n");
+
+  /* If we are using Linux, we have in uClibc
+     (libc/sysdeps/linux/arc/bits/setjmp.h):
+
+     typedef int __jmp_buf[13+1+1+1];    //r13-r25, fp, sp, blink
+
+     Where "blink" is a stored PC of a caller function.
+   */
+  tdep->jb_pc = 15;
+
+  linux_init_abi (info, gdbarch);
+
+  /* Set up target dependent GDB architecture entries.  */
+  set_gdbarch_cannot_fetch_register (gdbarch, arc_linux_cannot_fetch_register);
+  set_gdbarch_cannot_store_register (gdbarch, arc_linux_cannot_store_register);
+  set_gdbarch_breakpoint_kind_from_pc (gdbarch,
+				       arc_linux_breakpoint_kind_from_pc);
+  set_gdbarch_sw_breakpoint_from_kind (gdbarch,
+				       arc_linux_sw_breakpoint_from_kind);
+  set_gdbarch_fetch_tls_load_module_address (gdbarch,
+					     svr4_fetch_objfile_link_map);
+  set_gdbarch_software_single_step (gdbarch, arc_linux_software_single_step);
+  set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
+  set_gdbarch_skip_solib_resolver (gdbarch, arc_linux_skip_solib_resolver);
+  set_gdbarch_iterate_over_regset_sections
+    (gdbarch, arc_linux_iterate_over_regset_sections);
+  set_gdbarch_core_read_description (gdbarch, arc_linux_core_read_description);
+
+  /* GNU/Linux uses SVR4-style shared libraries, with 32-bit ints, longs
+     and pointers (ILP32).  */
+  set_solib_svr4_fetch_link_map_offsets (gdbarch,
+					 svr4_ilp32_fetch_link_map_offsets);
+}
+
+/* Suppress warning from -Wmissing-prototypes.  */
+extern initialize_file_ftype _initialize_arc_linux_tdep;
+
+void
+_initialize_arc_linux_tdep ()
+{
+  gdbarch_register_osabi (bfd_arch_arc, 0, GDB_OSABI_LINUX,
+			  arc_linux_init_osabi);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arc-linux-tdep.h ./gdb/arc-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arc-linux-tdep.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arc-linux-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,52 @@
+/* Target dependent code for GNU/Linux ARC.
+
+   Copyright 2020-2021 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 ARC_LINUX_TDEP_H
+#define ARC_LINUX_TDEP_H
+
+#include "gdbarch.h"
+#include "regset.h"
+
+#define ARC_LINUX_SIZEOF_V2_REGSET (3 * ARC_REGISTER_SIZE)
+
+/* Reads registers from the NT_PRSTATUS data array into the regcache.  */
+
+void arc_linux_supply_gregset (const struct regset *regset,
+			       struct regcache *regcache, int regnum,
+			       const void *gregs, size_t size);
+
+/* Reads regsiters from the NT_ARC_V2 data array into the regcache.  */
+
+void arc_linux_supply_v2_regset (const struct regset *regset,
+				 struct regcache *regcache, int regnum,
+				 const void *v2_regs, size_t size);
+
+/* Writes registers from the regcache into the NT_PRSTATUS data array.  */
+
+void arc_linux_collect_gregset (const struct regset *regset,
+				const struct regcache *regcache,
+				int regnum, void *gregs, size_t size);
+
+/* Writes registers from the regcache into the NT_ARC_V2 data array.  */
+
+void arc_linux_collect_v2_regset (const struct regset *regset,
+				  const struct regcache *regcache,
+				  int regnum, void *v2_regs, size_t size);
+
+#endif /* ARC_LINUX_TDEP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arc-newlib-tdep.c ./gdb/arc-newlib-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arc-newlib-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arc-newlib-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Newlib ARC.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
    Contributed by Synopsys Inc.
 
    This file is part of GDB.
@@ -56,8 +56,9 @@ arc_newlib_osabi_sniffer (bfd *abfd)
     return GDB_OSABI_UNKNOWN;
 }
 
+void _initialize_arc_newlib_tdep ();
 void
-_initialize_arc_newlib_tdep (void)
+_initialize_arc_newlib_tdep ()
 {
   gdbarch_register_osabi_sniffer (bfd_arch_arc, bfd_target_elf_flavour,
 				  arc_newlib_osabi_sniffer);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arc-tdep.c ./gdb/arc-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arc-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arc-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target dependent code for ARC architecture, for GDB.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 Free Software Foundation, Inc.
    Contributed by Synopsys Inc.
 
    This file is part of GDB.
@@ -21,27 +21,28 @@
 /* GDB header files.  */
 #include "defs.h"
 #include "arch-utils.h"
+#include "elf-bfd.h"
 #include "disasm.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
 #include "gdbcore.h"
 #include "gdbcmd.h"
 #include "objfiles.h"
+#include "osabi.h"
 #include "prologue-value.h"
+#include "target-descriptions.h"
 #include "trad-frame.h"
 
 /* ARC header files.  */
 #include "opcode/arc.h"
 #include "opcodes/arc-dis.h"
 #include "arc-tdep.h"
+#include "arch/arc.h"
 
 /* Standard headers.  */
 #include <algorithm>
-
-/* Default target descriptions.  */
-#include "features/arc-v2.c"
-#include "features/arc-arcompact.c"
+#include <sstream>
 
 /* The frame unwind cache for ARC.  */
 
@@ -92,57 +93,208 @@ int arc_debug;
 
 static struct cmd_list_element *maintenance_print_arc_list = NULL;
 
-/* XML target description features.  */
+/* A set of registers that we expect to find in a tdesc_feature.  These
+   are used in ARC_TDESC_INIT when processing the target description.  */
 
-static const char core_v2_feature_name[] = "org.gnu.gdb.arc.core.v2";
-static const char
-  core_reduced_v2_feature_name[] = "org.gnu.gdb.arc.core-reduced.v2";
-static const char
-  core_arcompact_feature_name[] = "org.gnu.gdb.arc.core.arcompact";
-static const char aux_minimal_feature_name[] = "org.gnu.gdb.arc.aux-minimal";
-
-/* XML target description known registers.  */
-
-static const char *const core_v2_register_names[] = {
-  "r0", "r1", "r2", "r3",
-  "r4", "r5", "r6", "r7",
-  "r8", "r9", "r10", "r11",
-  "r12", "r13", "r14", "r15",
-  "r16", "r17", "r18", "r19",
-  "r20", "r21", "r22", "r23",
-  "r24", "r25", "gp", "fp",
-  "sp", "ilink", "r30", "blink",
-  "r32", "r33", "r34", "r35",
-  "r36", "r37", "r38", "r39",
-  "r40", "r41", "r42", "r43",
-  "r44", "r45", "r46", "r47",
-  "r48", "r49", "r50", "r51",
-  "r52", "r53", "r54", "r55",
-  "r56", "r57", "accl", "acch",
-  "lp_count", "reserved", "limm", "pcl",
+struct arc_register_feature
+{
+  /* Information for a single register.  */
+  struct register_info
+  {
+    /* The GDB register number for this register.  */
+    int regnum;
+
+    /* List of names for this register.  The first name in this list is the
+       preferred name, the name GDB will use when describing this register.  */
+    std::vector<const char *> names;
+
+    /* When true, this register must be present in this feature set.  */
+    bool required_p;
+  };
+
+  /* The name for this feature.  This is the name used to find this feature
+     within the target description.  */
+  const char *name;
+
+  /* List of all the registers that we expect to encounter in this register
+     set.  */
+  std::vector<struct register_info> registers;
 };
 
-static const char *const aux_minimal_register_names[] = {
-  "pc", "status32",
+/* Obsolete feature names for backward compatibility.  */
+static const char *ARC_CORE_V1_OBSOLETE_FEATURE_NAME
+  = "org.gnu.gdb.arc.core.arcompact";
+static const char *ARC_CORE_V2_OBSOLETE_FEATURE_NAME
+  = "org.gnu.gdb.arc.core.v2";
+static const char *ARC_CORE_V2_REDUCED_OBSOLETE_FEATURE_NAME
+  = "org.gnu.gdb.arc.core-reduced.v2";
+static const char *ARC_AUX_OBSOLETE_FEATURE_NAME
+  = "org.gnu.gdb.arc.aux-minimal";
+/* Modern feature names.  */
+static const char *ARC_CORE_FEATURE_NAME = "org.gnu.gdb.arc.core";
+static const char *ARC_AUX_FEATURE_NAME = "org.gnu.gdb.arc.aux";
+
+/* ARCv1 (ARC600, ARC601, ARC700) general core registers feature set.
+   See also arc_update_acc_reg_names() for "accl/acch" names.  */
+
+static struct arc_register_feature arc_v1_core_reg_feature =
+{
+  ARC_CORE_FEATURE_NAME,
+  {
+    { ARC_R0_REGNUM + 0, { "r0" }, true },
+    { ARC_R0_REGNUM + 1, { "r1" }, true },
+    { ARC_R0_REGNUM + 2, { "r2" }, true },
+    { ARC_R0_REGNUM + 3, { "r3" }, true },
+    { ARC_R0_REGNUM + 4, { "r4" }, false },
+    { ARC_R0_REGNUM + 5, { "r5" }, false },
+    { ARC_R0_REGNUM + 6, { "r6" }, false },
+    { ARC_R0_REGNUM + 7, { "r7" }, false },
+    { ARC_R0_REGNUM + 8, { "r8" }, false },
+    { ARC_R0_REGNUM + 9, { "r9" }, false },
+    { ARC_R0_REGNUM + 10, { "r10" }, true },
+    { ARC_R0_REGNUM + 11, { "r11" }, true },
+    { ARC_R0_REGNUM + 12, { "r12" }, true },
+    { ARC_R0_REGNUM + 13, { "r13" }, true },
+    { ARC_R0_REGNUM + 14, { "r14" }, true },
+    { ARC_R0_REGNUM + 15, { "r15" }, true },
+    { ARC_R0_REGNUM + 16, { "r16" }, false },
+    { ARC_R0_REGNUM + 17, { "r17" }, false },
+    { ARC_R0_REGNUM + 18, { "r18" }, false },
+    { ARC_R0_REGNUM + 19, { "r19" }, false },
+    { ARC_R0_REGNUM + 20, { "r20" }, false },
+    { ARC_R0_REGNUM + 21, { "r21" }, false },
+    { ARC_R0_REGNUM + 22, { "r22" }, false },
+    { ARC_R0_REGNUM + 23, { "r23" }, false },
+    { ARC_R0_REGNUM + 24, { "r24" }, false },
+    { ARC_R0_REGNUM + 25, { "r25" }, false },
+    { ARC_R0_REGNUM + 26, { "gp" }, true },
+    { ARC_R0_REGNUM + 27, { "fp" }, true },
+    { ARC_R0_REGNUM + 28, { "sp" }, true },
+    { ARC_R0_REGNUM + 29, { "ilink1" }, false },
+    { ARC_R0_REGNUM + 30, { "ilink2" }, false },
+    { ARC_R0_REGNUM + 31, { "blink" }, true },
+    { ARC_R0_REGNUM + 32, { "r32" }, false },
+    { ARC_R0_REGNUM + 33, { "r33" }, false },
+    { ARC_R0_REGNUM + 34, { "r34" }, false },
+    { ARC_R0_REGNUM + 35, { "r35" }, false },
+    { ARC_R0_REGNUM + 36, { "r36" }, false },
+    { ARC_R0_REGNUM + 37, { "r37" }, false },
+    { ARC_R0_REGNUM + 38, { "r38" }, false },
+    { ARC_R0_REGNUM + 39, { "r39" }, false },
+    { ARC_R0_REGNUM + 40, { "r40" }, false },
+    { ARC_R0_REGNUM + 41, { "r41" }, false },
+    { ARC_R0_REGNUM + 42, { "r42" }, false },
+    { ARC_R0_REGNUM + 43, { "r43" }, false },
+    { ARC_R0_REGNUM + 44, { "r44" }, false },
+    { ARC_R0_REGNUM + 45, { "r45" }, false },
+    { ARC_R0_REGNUM + 46, { "r46" }, false },
+    { ARC_R0_REGNUM + 47, { "r47" }, false },
+    { ARC_R0_REGNUM + 48, { "r48" }, false },
+    { ARC_R0_REGNUM + 49, { "r49" }, false },
+    { ARC_R0_REGNUM + 50, { "r50" }, false },
+    { ARC_R0_REGNUM + 51, { "r51" }, false },
+    { ARC_R0_REGNUM + 52, { "r52" }, false },
+    { ARC_R0_REGNUM + 53, { "r53" }, false },
+    { ARC_R0_REGNUM + 54, { "r54" }, false },
+    { ARC_R0_REGNUM + 55, { "r55" }, false },
+    { ARC_R0_REGNUM + 56, { "r56" }, false },
+    { ARC_R0_REGNUM + 57, { "r57" }, false },
+    { ARC_R0_REGNUM + 58, { "r58", "accl" }, false },
+    { ARC_R0_REGNUM + 59, { "r59", "acch" }, false },
+    { ARC_R0_REGNUM + 60, { "lp_count" }, false },
+    { ARC_R0_REGNUM + 61, { "reserved" }, false },
+    { ARC_R0_REGNUM + 62, { "limm" }, false },
+    { ARC_R0_REGNUM + 63, { "pcl" }, true }
+  }
 };
 
-static const char *const core_arcompact_register_names[] = {
-  "r0", "r1", "r2", "r3",
-  "r4", "r5", "r6", "r7",
-  "r8", "r9", "r10", "r11",
-  "r12", "r13", "r14", "r15",
-  "r16", "r17", "r18", "r19",
-  "r20", "r21", "r22", "r23",
-  "r24", "r25", "gp", "fp",
-  "sp", "ilink1", "ilink2", "blink",
-  "r32", "r33", "r34", "r35",
-  "r36", "r37", "r38", "r39",
-  "r40", "r41", "r42", "r43",
-  "r44", "r45", "r46", "r47",
-  "r48", "r49", "r50", "r51",
-  "r52", "r53", "r54", "r55",
-  "r56", "r57", "r58", "r59",
-  "lp_count", "reserved", "limm", "pcl",
+/* ARCv2 (ARCHS) general core registers feature set.  See also
+   arc_update_acc_reg_names() for "accl/acch" names.  */
+
+static struct arc_register_feature arc_v2_core_reg_feature =
+{
+  ARC_CORE_FEATURE_NAME,
+  {
+    { ARC_R0_REGNUM + 0, { "r0" }, true },
+    { ARC_R0_REGNUM + 1, { "r1" }, true },
+    { ARC_R0_REGNUM + 2, { "r2" }, true },
+    { ARC_R0_REGNUM + 3, { "r3" }, true },
+    { ARC_R0_REGNUM + 4, { "r4" }, false },
+    { ARC_R0_REGNUM + 5, { "r5" }, false },
+    { ARC_R0_REGNUM + 6, { "r6" }, false },
+    { ARC_R0_REGNUM + 7, { "r7" }, false },
+    { ARC_R0_REGNUM + 8, { "r8" }, false },
+    { ARC_R0_REGNUM + 9, { "r9" }, false },
+    { ARC_R0_REGNUM + 10, { "r10" }, true },
+    { ARC_R0_REGNUM + 11, { "r11" }, true },
+    { ARC_R0_REGNUM + 12, { "r12" }, true },
+    { ARC_R0_REGNUM + 13, { "r13" }, true },
+    { ARC_R0_REGNUM + 14, { "r14" }, true },
+    { ARC_R0_REGNUM + 15, { "r15" }, true },
+    { ARC_R0_REGNUM + 16, { "r16" }, false },
+    { ARC_R0_REGNUM + 17, { "r17" }, false },
+    { ARC_R0_REGNUM + 18, { "r18" }, false },
+    { ARC_R0_REGNUM + 19, { "r19" }, false },
+    { ARC_R0_REGNUM + 20, { "r20" }, false },
+    { ARC_R0_REGNUM + 21, { "r21" }, false },
+    { ARC_R0_REGNUM + 22, { "r22" }, false },
+    { ARC_R0_REGNUM + 23, { "r23" }, false },
+    { ARC_R0_REGNUM + 24, { "r24" }, false },
+    { ARC_R0_REGNUM + 25, { "r25" }, false },
+    { ARC_R0_REGNUM + 26, { "gp" }, true },
+    { ARC_R0_REGNUM + 27, { "fp" }, true },
+    { ARC_R0_REGNUM + 28, { "sp" }, true },
+    { ARC_R0_REGNUM + 29, { "ilink" }, false },
+    { ARC_R0_REGNUM + 30, { "r30" }, true },
+    { ARC_R0_REGNUM + 31, { "blink" }, true },
+    { ARC_R0_REGNUM + 32, { "r32" }, false },
+    { ARC_R0_REGNUM + 33, { "r33" }, false },
+    { ARC_R0_REGNUM + 34, { "r34" }, false },
+    { ARC_R0_REGNUM + 35, { "r35" }, false },
+    { ARC_R0_REGNUM + 36, { "r36" }, false },
+    { ARC_R0_REGNUM + 37, { "r37" }, false },
+    { ARC_R0_REGNUM + 38, { "r38" }, false },
+    { ARC_R0_REGNUM + 39, { "r39" }, false },
+    { ARC_R0_REGNUM + 40, { "r40" }, false },
+    { ARC_R0_REGNUM + 41, { "r41" }, false },
+    { ARC_R0_REGNUM + 42, { "r42" }, false },
+    { ARC_R0_REGNUM + 43, { "r43" }, false },
+    { ARC_R0_REGNUM + 44, { "r44" }, false },
+    { ARC_R0_REGNUM + 45, { "r45" }, false },
+    { ARC_R0_REGNUM + 46, { "r46" }, false },
+    { ARC_R0_REGNUM + 47, { "r47" }, false },
+    { ARC_R0_REGNUM + 48, { "r48" }, false },
+    { ARC_R0_REGNUM + 49, { "r49" }, false },
+    { ARC_R0_REGNUM + 50, { "r50" }, false },
+    { ARC_R0_REGNUM + 51, { "r51" }, false },
+    { ARC_R0_REGNUM + 52, { "r52" }, false },
+    { ARC_R0_REGNUM + 53, { "r53" }, false },
+    { ARC_R0_REGNUM + 54, { "r54" }, false },
+    { ARC_R0_REGNUM + 55, { "r55" }, false },
+    { ARC_R0_REGNUM + 56, { "r56" }, false },
+    { ARC_R0_REGNUM + 57, { "r57" }, false },
+    { ARC_R0_REGNUM + 58, { "r58", "accl" }, false },
+    { ARC_R0_REGNUM + 59, { "r59", "acch" }, false },
+    { ARC_R0_REGNUM + 60, { "lp_count" }, false },
+    { ARC_R0_REGNUM + 61, { "reserved" }, false },
+    { ARC_R0_REGNUM + 62, { "limm" }, false },
+    { ARC_R0_REGNUM + 63, { "pcl" }, true }
+  }
+};
+
+/* The common auxiliary registers feature set.  The REGNUM field
+   must match the ARC_REGNUM enum in arc-tdep.h.  */
+
+static const struct arc_register_feature arc_common_aux_reg_feature =
+{
+  ARC_AUX_FEATURE_NAME,
+  {
+    { ARC_FIRST_AUX_REGNUM + 0, { "pc" }, true },
+    { ARC_FIRST_AUX_REGNUM + 1, { "status32" }, true },
+    { ARC_FIRST_AUX_REGNUM + 2, { "lp_start" }, false },
+    { ARC_FIRST_AUX_REGNUM + 3, { "lp_end" }, false },
+    { ARC_FIRST_AUX_REGNUM + 4, { "bta" }, false }
+  }
 };
 
 static char *arc_disassembler_options = NULL;
@@ -460,8 +612,7 @@ arc_write_pc (struct regcache *regcache,
   regcache_cooked_read_unsigned (regcache, gdbarch_ps_regnum (gdbarch),
 				 &status32);
 
-  /* Mask for DE bit is 0x40.  */
-  if (status32 & 0x40)
+  if ((status32 & ARC_STATUS32_DE_MASK) != 0)
     {
       if (arc_debug)
 	{
@@ -891,8 +1042,8 @@ arc_return_value (struct gdbarch *gdbarc
      function passes a hidden first parameter to the callee (in R0).  That
      parameter is the address at which the value being returned should be
      stored.  Otherwise, the result is returned in registers.  */
-  int is_struct_return = (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-			  || TYPE_CODE (valtype) == TYPE_CODE_UNION
+  int is_struct_return = (valtype->code () == TYPE_CODE_STRUCT
+			  || valtype->code () == TYPE_CODE_UNION
 			  || TYPE_LENGTH (valtype) > 2 * ARC_REGISTER_SIZE);
 
   if (arc_debug)
@@ -1715,200 +1866,282 @@ static const struct frame_base arc_norma
   arc_frame_base_address
 };
 
-/* Initialize target description for the ARC.
-
-   Returns TRUE if input tdesc was valid and in this case it will assign TDESC
-   and TDESC_DATA output parameters.  */
-
-static bool
-arc_tdesc_init (struct gdbarch_info info, const struct target_desc **tdesc,
-		struct tdesc_arch_data **tdesc_data)
+static enum arc_isa
+mach_type_to_arc_isa (const unsigned long mach)
 {
-  if (arc_debug)
-    debug_printf ("arc: Target description initialization.\n");
+  switch (mach)
+    {
+    case bfd_mach_arc_arc600:
+    case bfd_mach_arc_arc601:
+    case bfd_mach_arc_arc700:
+      return ARC_ISA_ARCV1;
+    case bfd_mach_arc_arcv2:
+      return ARC_ISA_ARCV2;
+    default:
+	internal_error (__FILE__, __LINE__,
+			_("unknown machine id %lu"), mach);
+    }
+}
 
-  const struct target_desc *tdesc_loc = info.target_desc;
+/* See arc-tdep.h.  */
 
-  /* Depending on whether this is ARCompact or ARCv2 we will assign
-     different default registers sets (which will differ in exactly two core
-     registers).  GDB will also refuse to accept register feature from invalid
-     ISA - v2 features can be used only with v2 ARChitecture.  We read
-     bfd_arch_info, which looks like to be a safe bet here, as it looks like it
-     is always initialized even when we don't pass any elf file to GDB at all
-     (it uses default arch in this case).  Also GDB will call this function
-     multiple times, and if XML target description file contains architecture
-     specifications, then GDB will set this architecture to info.bfd_arch_info,
-     overriding value from ELF file if they are different.  That means that,
-     where matters, this value is always our best guess on what CPU we are
-     debugging.  It has been noted that architecture specified in tdesc file
-     has higher precedence over ELF and even "set architecture" - that is,
-     using "set architecture" command will have no effect when tdesc has "arch"
-     tag.  */
-  /* Cannot use arc_mach_is_arcv2 (), because gdbarch is not created yet.  */
-  const int is_arcv2 = (info.bfd_arch_info->mach == bfd_mach_arc_arcv2);
-  bool is_reduced_rf;
-  const char *const *core_regs;
-  const char *core_feature_name;
+arc_arch_features
+arc_arch_features_create (const bfd *abfd, const unsigned long mach)
+{
+  /* Use 4 as a fallback value.  */
+  int reg_size = 4;
 
-  /* If target doesn't provide a description - use default one.  */
-  if (!tdesc_has_registers (tdesc_loc))
+  /* Try to guess the features parameters by looking at the binary to be
+     executed.  If the user is providing a binary that does not match the
+     target, then tough luck.  This is the last effort to makes sense of
+     what's going on.  */
+  if (abfd != nullptr && bfd_get_flavour (abfd) == bfd_target_elf_flavour)
     {
-      if (is_arcv2)
-	{
-	  tdesc_loc = tdesc_arc_v2;
-	  if (arc_debug)
-	    debug_printf ("arc: Using default register set for ARC v2.\n");
-	}
+      unsigned char eclass = elf_elfheader (abfd)->e_ident[EI_CLASS];
+
+      if (eclass == ELFCLASS32)
+	reg_size = 4;
+      else if (eclass == ELFCLASS64)
+	reg_size = 8;
       else
-	{
-	  tdesc_loc = tdesc_arc_arcompact;
-	  if (arc_debug)
-	    debug_printf ("arc: Using default register set for ARCompact.\n");
-	}
-    }
-  else
-    {
-      if (arc_debug)
-	debug_printf ("arc: Using provided register set.\n");
+	internal_error (__FILE__, __LINE__,
+			_("unknown ELF header class %d"), eclass);
     }
-  gdb_assert (tdesc_loc != NULL);
 
-  /* Now we can search for base registers.  Core registers can be either full
-     or reduced.  Summary:
+  /* MACH from a bfd_arch_info struct is used here.  It should be a safe
+     bet, as it looks like the struct is always initialized even when we
+     don't pass any elf file to GDB at all (it uses default arch in that
+     case).  */
+  arc_isa isa = mach_type_to_arc_isa (mach);
 
-     - core.v2 + aux-minimal
-     - core-reduced.v2 + aux-minimal
-     - core.arcompact + aux-minimal
+  return arc_arch_features (reg_size, isa);
+}
 
-     NB: It is entirely feasible to have ARCompact with reduced core regs, but
-     we ignore that because GCC doesn't support that and at the same time
-     ARCompact is considered obsolete, so there is not much reason to support
-     that.  */
-  const struct tdesc_feature *feature
-    = tdesc_find_feature (tdesc_loc, core_v2_feature_name);
-  if (feature != NULL)
-    {
-      /* Confirm that register and architecture match, to prevent accidents in
-	 some situations.  This code will trigger an error if:
+/* Look for obsolete core feature names in TDESC.  */
 
-	 1. XML tdesc doesn't specify arch explicitly, registers are for arch
-	 X, but ELF specifies arch Y.
+static const struct tdesc_feature *
+find_obsolete_core_names (const struct target_desc *tdesc)
+{
+  const struct tdesc_feature *feat = nullptr;
 
-	 2. XML tdesc specifies arch X, but contains registers for arch Y.
+  feat = tdesc_find_feature (tdesc, ARC_CORE_V1_OBSOLETE_FEATURE_NAME);
 
-	 It will not protect from case where XML or ELF specify arch X,
-	 registers are for the same arch X, but the real target is arch Y.  To
-	 detect this case we need to check IDENTITY register.  */
-      if (!is_arcv2)
-	{
-	  arc_print (_("Error: ARC v2 target description supplied for "
-		       "non-ARCv2 target.\n"));
-	  return false;
-	}
+  if (feat == nullptr)
+    feat = tdesc_find_feature (tdesc, ARC_CORE_V2_OBSOLETE_FEATURE_NAME);
+
+  if (feat == nullptr)
+    feat = tdesc_find_feature
+      (tdesc, ARC_CORE_V2_REDUCED_OBSOLETE_FEATURE_NAME);
 
-      is_reduced_rf = false;
-      core_feature_name = core_v2_feature_name;
-      core_regs = core_v2_register_names;
+  return feat;
+}
+
+/* Look for obsolete aux feature names in TDESC.  */
+
+static const struct tdesc_feature *
+find_obsolete_aux_names (const struct target_desc *tdesc)
+{
+  return tdesc_find_feature (tdesc, ARC_AUX_OBSOLETE_FEATURE_NAME);
+}
+
+/* Based on the MACH value, determines which core register features set
+   must be used.  */
+
+static arc_register_feature *
+determine_core_reg_feature_set (const unsigned long mach)
+{
+  switch (mach_type_to_arc_isa (mach))
+    {
+    case ARC_ISA_ARCV1:
+      return &arc_v1_core_reg_feature;
+    case ARC_ISA_ARCV2:
+      return &arc_v2_core_reg_feature;
+    default:
+      gdb_assert_not_reached
+        ("Unknown machine type to determine the core feature set.");
     }
-  else
+}
+
+/* At the moment, there is only 1 auxiliary register features set.
+   This is a place holder for future extendability.  */
+
+static const arc_register_feature *
+determine_aux_reg_feature_set ()
+{
+  return &arc_common_aux_reg_feature;
+}
+
+/* Update accumulator register names (ACCH/ACCL) for r58 and r59 in the
+   register sets.  The endianness determines the assignment:
+
+        ,------.------.
+        | acch | accl |
+   ,----|------+------|
+   | LE | r59  | r58  |
+   | BE | r58  | r59  |
+   `----^------^------'  */
+
+static void
+arc_update_acc_reg_names (const int byte_order)
+{
+  const char *r58_alias
+    = byte_order == BFD_ENDIAN_LITTLE ? "accl" : "acch";
+  const char *r59_alias
+    = byte_order == BFD_ENDIAN_LITTLE ? "acch" : "accl";
+
+  /* Subscript 1 must be OK because those registers have 2 names.  */
+  arc_v1_core_reg_feature.registers[ARC_R58_REGNUM].names[1] = r58_alias;
+  arc_v1_core_reg_feature.registers[ARC_R59_REGNUM].names[1] = r59_alias;
+  arc_v2_core_reg_feature.registers[ARC_R58_REGNUM].names[1] = r58_alias;
+  arc_v2_core_reg_feature.registers[ARC_R59_REGNUM].names[1] = r59_alias;
+}
+
+/* Go through all the registers in REG_SET and check if they exist
+   in FEATURE.  The TDESC_DATA is updated with the register number
+   in REG_SET if it is found in the feature.  If a required register
+   is not found, this function returns false.  */
+
+static bool
+arc_check_tdesc_feature (struct tdesc_arch_data *tdesc_data,
+			 const struct tdesc_feature *feature,
+			 const struct arc_register_feature *reg_set)
+{
+  for (const auto &reg : reg_set->registers)
     {
-      feature = tdesc_find_feature (tdesc_loc, core_reduced_v2_feature_name);
-      if (feature != NULL)
+      bool found = false;
+
+      for (const char *name : reg.names)
 	{
-	  if (!is_arcv2)
-	    {
-	      arc_print (_("Error: ARC v2 target description supplied for "
-			   "non-ARCv2 target.\n"));
-	      return false;
-	    }
+	  found
+	    = tdesc_numbered_register (feature, tdesc_data, reg.regnum, name);
 
-	  is_reduced_rf = true;
-	  core_feature_name = core_reduced_v2_feature_name;
-	  core_regs = core_v2_register_names;
+	  if (found)
+	    break;
 	}
-      else
+
+      if (!found && reg.required_p)
 	{
-	  feature = tdesc_find_feature (tdesc_loc,
-					core_arcompact_feature_name);
-	  if (feature != NULL)
-	    {
-	      if (is_arcv2)
-		{
-		  arc_print (_("Error: ARCompact target description supplied "
-			       "for non-ARCompact target.\n"));
-		  return false;
-		}
-
-	      is_reduced_rf = false;
-	      core_feature_name = core_arcompact_feature_name;
-	      core_regs = core_arcompact_register_names;
-	    }
-	  else
+	  std::ostringstream reg_names;
+	  for (std::size_t i = 0; i < reg.names.size(); ++i)
 	    {
-	      arc_print (_("Error: Couldn't find core register feature in "
-			   "supplied target description."));
-	      return false;
+	      if (i == 0)
+		reg_names << "'" << reg.names[0] << "'";
+	      else
+		reg_names << " or '" << reg.names[0] << "'";
 	    }
+	  arc_print (_("Error: Cannot find required register(s) %s "
+		       "in feature '%s'.\n"), reg_names.str ().c_str (),
+		       feature->name.c_str ());
+	  return false;
 	}
     }
 
-  struct tdesc_arch_data *tdesc_data_loc = tdesc_data_alloc ();
+  return true;
+}
 
-  gdb_assert (feature != NULL);
-  int valid_p = 1;
+/* Check for the existance of "lp_start" and "lp_end" in target description.
+   If both are present, assume there is hardware loop support in the target.
+   This can be improved by looking into "lpc_size" field of "isa_config"
+   auxiliary register.  */
 
-  for (int i = 0; i <= ARC_LAST_CORE_REGNUM; i++)
+static bool
+arc_check_for_hw_loops (const struct target_desc *tdesc,
+			struct tdesc_arch_data *data)
+{
+  const auto feature_aux = tdesc_find_feature (tdesc, ARC_AUX_FEATURE_NAME);
+  const auto aux_regset = determine_aux_reg_feature_set ();
+
+  if (feature_aux == nullptr)
+    return false;
+
+  bool hw_loop_p = false;
+  const auto lp_start_name =
+    aux_regset->registers[ARC_LP_START_REGNUM - ARC_FIRST_AUX_REGNUM].names[0];
+  const auto lp_end_name =
+    aux_regset->registers[ARC_LP_END_REGNUM - ARC_FIRST_AUX_REGNUM].names[0];
+
+  hw_loop_p = tdesc_numbered_register (feature_aux, data,
+				       ARC_LP_START_REGNUM, lp_start_name);
+  hw_loop_p &= tdesc_numbered_register (feature_aux, data,
+				       ARC_LP_END_REGNUM, lp_end_name);
+
+  return hw_loop_p;
+}
+
+/* Initialize target description for the ARC.
+
+   Returns true if input TDESC was valid and in this case it will assign TDESC
+   and TDESC_DATA output parameters.  */
+
+static bool
+arc_tdesc_init (struct gdbarch_info info, const struct target_desc **tdesc,
+		struct tdesc_arch_data **tdesc_data)
+{
+  const struct target_desc *tdesc_loc = info.target_desc;
+  if (arc_debug)
+    debug_printf ("arc: Target description initialization.\n");
+
+  /* If target doesn't provide a description, use the default ones.  */
+  if (!tdesc_has_registers (tdesc_loc))
     {
-      /* If rf16, then skip extra registers.  */
-      if (is_reduced_rf && ((i >= ARC_R4_REGNUM && i <= ARC_R9_REGNUM)
-			    || (i >= ARC_R16_REGNUM && i <= ARC_R25_REGNUM)))
-	continue;
-
-      valid_p = tdesc_numbered_register (feature, tdesc_data_loc, i,
-					 core_regs[i]);
-
-      /* - Ignore errors in extension registers - they are optional.
-	 - Ignore missing ILINK because it doesn't make sense for Linux.
-	 - Ignore missing ILINK2 when architecture is ARCompact, because it
-	 doesn't make sense for Linux targets.
-
-	 In theory those optional registers should be in separate features, but
-	 that would create numerous but tiny features, which looks like an
-	 overengineering of a rather simple task.  */
-      if (!valid_p && (i <= ARC_SP_REGNUM || i == ARC_BLINK_REGNUM
-		       || i == ARC_LP_COUNT_REGNUM || i == ARC_PCL_REGNUM
-		       || (i == ARC_R30_REGNUM && is_arcv2)))
-	{
-	  arc_print (_("Error: Cannot find required register `%s' in "
-		       "feature `%s'.\n"), core_regs[i], core_feature_name);
-	  tdesc_data_cleanup (tdesc_data_loc);
-	  return false;
-	}
+      arc_arch_features features
+	= arc_arch_features_create (info.abfd,
+				    info.bfd_arch_info->mach);
+      tdesc_loc = arc_lookup_target_description (features);
     }
+  gdb_assert (tdesc_loc != nullptr);
+
+  if (arc_debug)
+    debug_printf ("arc: Have got a target description\n");
 
-  /* Mandatory AUX registers are intentionally few and are common between
-     ARCompact and ARC v2, so same code can be used for both.  */
-  feature = tdesc_find_feature (tdesc_loc, aux_minimal_feature_name);
-  if (feature == NULL)
+  const struct tdesc_feature *feature_core
+    = tdesc_find_feature (tdesc_loc, ARC_CORE_FEATURE_NAME);
+  const struct tdesc_feature *feature_aux
+    = tdesc_find_feature (tdesc_loc, ARC_AUX_FEATURE_NAME);
+
+  /* Maybe there still is a chance to salvage the input.  */
+  if (feature_core == nullptr)
+    feature_core = find_obsolete_core_names (tdesc_loc);
+  if (feature_aux == nullptr)
+    feature_aux = find_obsolete_aux_names (tdesc_loc);
+
+  if (feature_core == nullptr)
     {
-      arc_print (_("Error: Cannot find required feature `%s' in supplied "
-		   "target description.\n"), aux_minimal_feature_name);
-      tdesc_data_cleanup (tdesc_data_loc);
+      arc_print (_("Error: Cannot find required feature '%s' in supplied "
+		   "target description.\n"), ARC_CORE_FEATURE_NAME);
       return false;
     }
 
-  for (int i = ARC_FIRST_AUX_REGNUM; i <= ARC_LAST_AUX_REGNUM; i++)
+  if (feature_aux == nullptr)
     {
-      const char *name = aux_minimal_register_names[i - ARC_FIRST_AUX_REGNUM];
-      valid_p = tdesc_numbered_register (feature, tdesc_data_loc, i, name);
-      if (!valid_p)
-	{
-	  arc_print (_("Error: Cannot find required register `%s' "
-		       "in feature `%s'.\n"),
-		     name, tdesc_feature_name (feature));
-	  tdesc_data_cleanup (tdesc_data_loc);
-	  return false;
-	}
+      arc_print (_("Error: Cannot find required feature '%s' in supplied "
+		   "target description.\n"), ARC_AUX_FEATURE_NAME);
+      return false;
+    }
+
+  const arc_register_feature *arc_core_reg_feature
+    = determine_core_reg_feature_set (info.bfd_arch_info->mach);
+  const arc_register_feature *arc_aux_reg_feature
+    = determine_aux_reg_feature_set ();
+
+  struct tdesc_arch_data *tdesc_data_loc = tdesc_data_alloc ();
+
+  arc_update_acc_reg_names (info.byte_order);
+
+  bool valid_p = arc_check_tdesc_feature (tdesc_data_loc,
+					  feature_core,
+					  arc_core_reg_feature);
+
+  valid_p &= arc_check_tdesc_feature (tdesc_data_loc,
+				      feature_aux,
+				      arc_aux_reg_feature);
+
+  if (!valid_p)
+    {
+      if (arc_debug)
+        debug_printf ("arc: Target description is not valid\n");
+      tdesc_data_cleanup (tdesc_data_loc);
+      return false;
     }
 
   *tdesc = tdesc_loc;
@@ -1922,7 +2155,7 @@ arc_tdesc_init (struct gdbarch_info info
 static ULONGEST
 arc_type_align (struct gdbarch *gdbarch, struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_FUNC:
@@ -1957,13 +2190,15 @@ arc_gdbarch_init (struct gdbarch_info in
     debug_printf ("arc: Architecture initialization.\n");
 
   if (!arc_tdesc_init (info, &tdesc, &tdesc_data))
-    return NULL;
+    return nullptr;
 
   /* Allocate the ARC-private target-dependent information structure, and the
      GDB target-independent information structure.  */
-  struct gdbarch_tdep *tdep = XCNEW (struct gdbarch_tdep);
+  gdb::unique_xmalloc_ptr<struct gdbarch_tdep> tdep
+    (XCNEW (struct gdbarch_tdep));
   tdep->jb_pc = -1; /* No longjmp support by default.  */
-  struct gdbarch *gdbarch = gdbarch_alloc (&info, tdep);
+  tdep->has_hw_loops = arc_check_for_hw_loops (tdesc, tdesc_data);
+  struct gdbarch *gdbarch = gdbarch_alloc (&info, tdep.release ());
 
   /* Data types.  */
   set_gdbarch_short_bit (gdbarch, 16);
@@ -2044,7 +2279,7 @@ arc_gdbarch_init (struct gdbarch_info in
      It can override functions set earlier.  */
   gdbarch_init_osabi (info, gdbarch);
 
-  if (tdep->jb_pc >= 0)
+  if (gdbarch_tdep (gdbarch)->jb_pc >= 0)
     set_gdbarch_get_longjmp_target (gdbarch, arc_get_longjmp_target);
 
   /* Disassembler options.  Enforce CPU if it was specified in XML target
@@ -2117,14 +2352,6 @@ arc_dump_tdep (struct gdbarch *gdbarch,
   fprintf_unfiltered (file, "arc_dump_tdep: jb_pc = %i\n", tdep->jb_pc);
 }
 
-/* Wrapper for "maintenance print arc" list of commands.  */
-
-static void
-maintenance_print_arc_command (const char *args, int from_tty)
-{
-  cmd_show_list (maintenance_print_arc_list, from_tty, "");
-}
-
 /* This command accepts single argument - address of instruction to
    disassemble.  */
 
@@ -2145,22 +2372,20 @@ dump_arc_instruction_command (const char
   arc_insn_dump (insn);
 }
 
+void _initialize_arc_tdep ();
 void
-_initialize_arc_tdep (void)
+_initialize_arc_tdep ()
 {
   gdbarch_register (bfd_arch_arc, arc_gdbarch_init, arc_dump_tdep);
 
-  initialize_tdesc_arc_v2 ();
-  initialize_tdesc_arc_arcompact ();
-
   /* Register ARC-specific commands with gdb.  */
 
   /* Add root prefix command for "maintenance print arc" commands.  */
-  add_prefix_cmd ("arc", class_maintenance, maintenance_print_arc_command,
-		  _("ARC-specific maintenance commands for printing GDB "
-		    "internal state."),
-		  &maintenance_print_arc_list, "maintenance print arc ", 0,
-		  &maintenanceprintlist);
+  add_show_prefix_cmd ("arc", class_maintenance,
+		       _("ARC-specific maintenance commands for printing GDB "
+			 "internal state."),
+		       &maintenance_print_arc_list, "maintenance print arc ",
+		       0, &maintenanceprintlist);
 
   add_cmd ("arc-instruction", class_maintenance,
 	   dump_arc_instruction_command,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arc-tdep.h ./gdb/arc-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arc-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arc-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target dependent code for ARC architecture, for GDB.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 Free Software Foundation, Inc.
    Contributed by Synopsys Inc.
 
    This file is part of GDB.
@@ -23,6 +23,8 @@
 
 /* Need disassemble_info.  */
 #include "dis-asm.h"
+#include "gdbarch.h"
+#include "arch/arc.h"
 
 /* To simplify GDB code this enum assumes that internal regnums should be same
    as architectural register numbers, i.e. PCL regnum is 63.  This allows to
@@ -34,7 +36,6 @@ enum arc_regnum
   {
     /* Core registers.  */
     ARC_R0_REGNUM = 0,
-    ARC_FIRST_CORE_REGNUM = ARC_R0_REGNUM,
     ARC_R1_REGNUM = 1,
     ARC_R4_REGNUM = 4,
     ARC_R7_REGNUM = 7,
@@ -53,6 +54,9 @@ enum arc_regnum
     ARC_R30_REGNUM,
     /* Return address from function.  */
     ARC_BLINK_REGNUM,
+    /* Accumulator registers.  */
+    ARC_R58_REGNUM = 58,
+    ARC_R59_REGNUM,
     /* Zero-delay loop counter.  */
     ARC_LP_COUNT_REGNUM = 60,
     /* Reserved register number.  There should never be a register with such
@@ -68,14 +72,23 @@ enum arc_regnum
     /* Program counter, aligned to 4-bytes, read-only.  */
     ARC_PCL_REGNUM,
     ARC_LAST_CORE_REGNUM = ARC_PCL_REGNUM,
+
     /* AUX registers.  */
     /* Actual program counter.  */
     ARC_PC_REGNUM,
     ARC_FIRST_AUX_REGNUM = ARC_PC_REGNUM,
     /* Status register.  */
     ARC_STATUS32_REGNUM,
-    ARC_LAST_REGNUM = ARC_STATUS32_REGNUM,
-    ARC_LAST_AUX_REGNUM = ARC_STATUS32_REGNUM,
+    /* Zero-delay loop start instruction.  */
+    ARC_LP_START_REGNUM,
+    /* Zero-delay loop next-after-last instruction.  */
+    ARC_LP_END_REGNUM,
+    /* Branch target address.  */
+    ARC_BTA_REGNUM,
+    /* Exception return address.  */
+    ARC_ERET_REGNUM,
+    ARC_LAST_AUX_REGNUM = ARC_ERET_REGNUM,
+    ARC_LAST_REGNUM = ARC_LAST_AUX_REGNUM,
 
     /* Additional ABI constants.  */
     ARC_FIRST_ARG_REGNUM = ARC_R0_REGNUM,
@@ -89,6 +102,14 @@ enum arc_regnum
    Longer registers are represented as pairs of 32-bit registers.  */
 #define ARC_REGISTER_SIZE  4
 
+/* STATUS32 register: hardware loops disabled bit.  */
+#define ARC_STATUS32_L_MASK (1 << 12)
+/* STATUS32 register: current instruction is a delay slot.  */
+#define ARC_STATUS32_DE_MASK (1 << 6)
+
+/* Special value for register offset arrays.  */
+#define ARC_OFFSET_NO_REGISTER (-1)
+
 #define arc_print(fmt, args...) fprintf_unfiltered (gdb_stdlog, fmt, ##args)
 
 extern int arc_debug;
@@ -100,6 +121,9 @@ struct gdbarch_tdep
   /* Offset to PC value in jump buffer.  If this is negative, longjmp
      support will be disabled.  */
   int jb_pc;
+
+  /* Whether target has hardware (aka zero-delay) loops.  */
+  bool has_hw_loops;
 };
 
 /* Utility functions used by other ARC-specific modules.  */
@@ -163,4 +187,9 @@ CORE_ADDR arc_insn_get_branch_target (co
 
 CORE_ADDR arc_insn_get_linear_next_pc (const struct arc_instruction &insn);
 
+/* Create an arc_arch_features instance from the provided data.  */
+
+arc_arch_features arc_arch_features_create (const bfd *abfd,
+					    const unsigned long mach);
+
 #endif /* ARC_TDEP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-bsd-tdep.c ./gdb/arm-bsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-bsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-bsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for ARM BSD's.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-fbsd-nat.c ./gdb/arm-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-fbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-fbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD/arm.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -143,8 +143,9 @@ arm_fbsd_nat_target::read_description ()
   return desc;
 }
 
+void _initialize_arm_fbsd_nat ();
 void
-_initialize_arm_fbsd_nat (void)
+_initialize_arm_fbsd_nat ()
 {
   add_inf_child_target (&the_arm_fbsd_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-fbsd-tdep.c ./gdb/arm-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-fbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-fbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD/arm.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -150,7 +150,7 @@ const struct regset arm_fbsd_vfpregset =
     regcache_supply_regset, regcache_collect_regset
   };
 
-/* Implement the "regset_from_core_section" gdbarch method.  */
+/* Implement the "iterate_over_regset_sections" gdbarch method.  */
 
 static void
 arm_fbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
@@ -235,8 +235,9 @@ arm_fbsd_init_abi (struct gdbarch_info i
   set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
 }
 
+void _initialize_arm_fbsd_tdep ();
 void
-_initialize_arm_fbsd_tdep (void)
+_initialize_arm_fbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_FREEBSD,
 			  arm_fbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-fbsd-tdep.h ./gdb/arm-fbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-fbsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-fbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* FreeBSD/arm target support, prototypes.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-linux-nat.c ./gdb/arm-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* GNU/Linux on ARM native support.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1299,8 +1299,9 @@ arm_linux_nat_target::low_new_fork (stru
   *child_state = *parent_state;
 }
 
+void _initialize_arm_linux_nat ();
 void
-_initialize_arm_linux_nat (void)
+_initialize_arm_linux_nat ()
 {
   /* Register the target.  */
   linux_target = &the_arm_linux_nat_target;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-linux-tdep.c ./gdb/arm-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GNU/Linux on ARM target support.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1103,12 +1103,13 @@ arm_catch_kernel_helper_return (struct g
    the program has stepped into a Linux kernel helper routine (which must be
    handled as a special case).  */
 
-static struct displaced_step_closure *
+static displaced_step_closure_up
 arm_linux_displaced_step_copy_insn (struct gdbarch *gdbarch,
 				    CORE_ADDR from, CORE_ADDR to,
 				    struct regcache *regs)
 {
-  arm_displaced_step_closure *dsc = new arm_displaced_step_closure;
+  std::unique_ptr<arm_displaced_step_closure> dsc
+    (new arm_displaced_step_closure);
 
   /* Detect when we enter an (inaccessible by GDB) Linux kernel helper, and
      stop at the return location.  */
@@ -1118,19 +1119,20 @@ arm_linux_displaced_step_copy_insn (stru
         fprintf_unfiltered (gdb_stdlog, "displaced: detected kernel helper "
 			    "at %.8lx\n", (unsigned long) from);
 
-      arm_catch_kernel_helper_return (gdbarch, from, to, regs, dsc);
+      arm_catch_kernel_helper_return (gdbarch, from, to, regs, dsc.get ());
     }
   else
     {
       /* Override the default handling of SVC instructions.  */
       dsc->u.svc.copy_svc_os = arm_linux_copy_svc;
 
-      arm_process_displaced_insn (gdbarch, from, to, regs, dsc);
+      arm_process_displaced_insn (gdbarch, from, to, regs, dsc.get ());
     }
 
-  arm_displaced_init_closure (gdbarch, from, to, dsc);
+  arm_displaced_init_closure (gdbarch, from, to, dsc.get ());
 
-  return dsc;
+  /* This is a work around for a problem with g++ 4.8.  */
+  return displaced_step_closure_up (dsc.release ());
 }
 
 /* Implementation of `gdbarch_stap_is_single_operand', as defined in
@@ -2001,8 +2003,9 @@ arm_linux_init_abi (struct gdbarch_info
   set_gdbarch_gcc_target_options (gdbarch, arm_linux_gcc_target_options);
 }
 
+void _initialize_arm_linux_tdep ();
 void
-_initialize_arm_linux_tdep (void)
+_initialize_arm_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_LINUX,
 			  arm_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-linux-tdep.h ./gdb/arm-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-linux-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-linux-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GNU/Linux on ARM target support, prototypes.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-nbsd-nat.c ./gdb/arm-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-nbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-nbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for BSD Unix running on ARM's, for GDB.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,6 +17,8 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+/* We define this to get types like register_t.  */
+#define _KERNTYPES
 #include "defs.h"
 #include "gdbcore.h"
 #include "inferior.h"
@@ -24,54 +26,39 @@
 #include "target.h"
 #include <sys/types.h>
 #include <sys/ptrace.h>
+#include <sys/sysctl.h>
 #include <machine/reg.h>
 #include <machine/frame.h>
 
 #include "arm-tdep.h"
+#include "arm-nbsd-tdep.h"
+#include "aarch32-tdep.h"
 #include "inf-ptrace.h"
+#include "nbsd-nat.h"
 
-class arm_netbsd_nat_target final : public inf_ptrace_target
+class arm_netbsd_nat_target final : public nbsd_nat_target
 {
 public:
   /* Add our register access methods.  */
   void fetch_registers (struct regcache *, int) override;
   void store_registers (struct regcache *, int) override;
+  const struct target_desc *read_description () override;
 };
 
 static arm_netbsd_nat_target the_arm_netbsd_nat_target;
 
 static void
-arm_supply_gregset (struct regcache *regcache, struct reg *gregset)
+arm_supply_vfpregset (struct regcache *regcache, struct fpreg *fpregset)
 {
-  int regno;
-  CORE_ADDR r_pc;
-
-  /* Integer registers.  */
-  for (regno = ARM_A1_REGNUM; regno < ARM_SP_REGNUM; regno++)
-    regcache->raw_supply (regno, (char *) &gregset->r[regno]);
-
-  regcache->raw_supply (ARM_SP_REGNUM, (char *) &gregset->r_sp);
-  regcache->raw_supply (ARM_LR_REGNUM, (char *) &gregset->r_lr);
-  /* This is ok: we're running native...  */
-  r_pc = gdbarch_addr_bits_remove (regcache->arch (), gregset->r_pc);
-  regcache->raw_supply (ARM_PC_REGNUM, (char *) &r_pc);
-
-  if (arm_apcs_32)
-    regcache->raw_supply (ARM_PS_REGNUM, (char *) &gregset->r_cpsr);
-  else
-    regcache->raw_supply (ARM_PS_REGNUM, (char *) &gregset->r_pc);
-}
-
-static void
-arm_supply_fparegset (struct regcache *regcache, struct fpreg *fparegset)
-{
-  int regno;
+  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+  if (tdep->vfp_register_count == 0)
+    return;
 
-  for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++)
-    regcache->raw_supply (regno,
-			  (char *) &fparegset->fpr[regno - ARM_F0_REGNUM]);
+  struct vfpreg &vfp = fpregset->fpr_vfp;
+  for (int regno = 0; regno <= tdep->vfp_register_count; regno++)
+    regcache->raw_supply (regno + ARM_D0_REGNUM, (char *) &vfp.vfp_regs[regno]);
 
-  regcache->raw_supply (ARM_FPS_REGNUM, (char *) &fparegset->fpr_fpsr);
+  regcache->raw_supply (ARM_FPSCR_REGNUM, (char *) &vfp.vfp_fpscr);
 }
 
 static void
@@ -79,76 +66,30 @@ fetch_register (struct regcache *regcach
 {
   struct reg inferior_registers;
   int ret;
+  int lwp = regcache->ptid ().lwp ();
 
   ret = ptrace (PT_GETREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
+		(PTRACE_TYPE_ARG3) &inferior_registers, lwp);
 
   if (ret < 0)
     {
       warning (_("unable to fetch general register"));
       return;
     }
-
-  switch (regno)
-    {
-    case ARM_SP_REGNUM:
-      regcache->raw_supply (ARM_SP_REGNUM, (char *) &inferior_registers.r_sp);
-      break;
-
-    case ARM_LR_REGNUM:
-      regcache->raw_supply (ARM_LR_REGNUM, (char *) &inferior_registers.r_lr);
-      break;
-
-    case ARM_PC_REGNUM:
-      /* This is ok: we're running native...  */
-      inferior_registers.r_pc = gdbarch_addr_bits_remove
-				  (regcache->arch (),
-				   inferior_registers.r_pc);
-      regcache->raw_supply (ARM_PC_REGNUM, (char *) &inferior_registers.r_pc);
-      break;
-
-    case ARM_PS_REGNUM:
-      if (arm_apcs_32)
-	regcache->raw_supply (ARM_PS_REGNUM,
-			      (char *) &inferior_registers.r_cpsr);
-      else
-	regcache->raw_supply (ARM_PS_REGNUM,
-			      (char *) &inferior_registers.r_pc);
-      break;
-
-    default:
-      regcache->raw_supply (regno, (char *) &inferior_registers.r[regno]);
-      break;
-    }
-}
-
-static void
-fetch_regs (struct regcache *regcache)
-{
-  struct reg inferior_registers;
-  int ret;
-  int regno;
-
-  ret = ptrace (PT_GETREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
-
-  if (ret < 0)
-    {
-      warning (_("unable to fetch general registers"));
-      return;
-    }
-
-  arm_supply_gregset (regcache, &inferior_registers);
+  arm_nbsd_supply_gregset (nullptr, regcache, regno, &inferior_registers,
+			   sizeof (inferior_registers));
 }
 
 static void
 fetch_fp_register (struct regcache *regcache, int regno)
 {
   struct fpreg inferior_fp_registers;
-  int ret;
+  int lwp = regcache->ptid ().lwp ();
 
-  ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
+  int ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
+		    (PTRACE_TYPE_ARG3) &inferior_fp_registers, lwp);
+
+  struct vfpreg &vfp = inferior_fp_registers.fpr_vfp;
 
   if (ret < 0)
     {
@@ -156,29 +97,29 @@ fetch_fp_register (struct regcache *regc
       return;
     }
 
-  switch (regno)
+  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+  if (regno == ARM_FPSCR_REGNUM && tdep->vfp_register_count != 0)
+    regcache->raw_supply (ARM_FPSCR_REGNUM, (char *) &vfp.vfp_fpscr);
+  else if (regno >= ARM_D0_REGNUM
+	   && regno <= ARM_D0_REGNUM + tdep->vfp_register_count)
     {
-    case ARM_FPS_REGNUM:
-      regcache->raw_supply (ARM_FPS_REGNUM,
-			    (char *) &inferior_fp_registers.fpr_fpsr);
-      break;
-
-    default:
-      regcache->raw_supply
-	(regno, (char *) &inferior_fp_registers.fpr[regno - ARM_F0_REGNUM]);
-      break;
+      regcache->raw_supply (regno,
+			    (char *) &vfp.vfp_regs[regno - ARM_D0_REGNUM]);
     }
+  else
+    warning (_("Invalid register number."));
 }
 
 static void
 fetch_fp_regs (struct regcache *regcache)
 {
   struct fpreg inferior_fp_registers;
+  int lwp = regcache->ptid ().lwp ();
   int ret;
   int regno;
 
   ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
+		(PTRACE_TYPE_ARG3) &inferior_fp_registers, lwp);
 
   if (ret < 0)
     {
@@ -186,11 +127,11 @@ fetch_fp_regs (struct regcache *regcache
       return;
     }
 
-  arm_supply_fparegset (regcache, &inferior_fp_registers);
+  arm_supply_vfpregset (regcache, &inferior_fp_registers);
 }
 
 void
-arm_nbsd_nat_target::fetch_registers (struct regcache *regcache, int regno)
+arm_netbsd_nat_target::fetch_registers (struct regcache *regcache, int regno)
 {
   if (regno >= 0)
     {
@@ -201,7 +142,7 @@ arm_nbsd_nat_target::fetch_registers (st
     }
   else
     {
-      fetch_regs (regcache);
+      fetch_register (regcache, -1);
       fetch_fp_regs (regcache);
     }
 }
@@ -212,10 +153,11 @@ store_register (const struct regcache *r
 {
   struct gdbarch *gdbarch = regcache->arch ();
   struct reg inferior_registers;
+  int lwp = regcache->ptid ().lwp ();
   int ret;
 
   ret = ptrace (PT_GETREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
+		(PTRACE_TYPE_ARG3) &inferior_registers, lwp);
 
   if (ret < 0)
     {
@@ -273,7 +215,7 @@ store_register (const struct regcache *r
     }
 
   ret = ptrace (PT_SETREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
+		(PTRACE_TYPE_ARG3) &inferior_registers, lwp);
 
   if (ret < 0)
     warning (_("unable to write register %d to inferior"), regno);
@@ -284,6 +226,7 @@ store_regs (const struct regcache *regca
 {
   struct gdbarch *gdbarch = regcache->arch ();
   struct reg inferior_registers;
+  int lwp = regcache->ptid ().lwp ();
   int ret;
   int regno;
 
@@ -315,7 +258,7 @@ store_regs (const struct regcache *regca
     }
 
   ret = ptrace (PT_SETREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
+		(PTRACE_TYPE_ARG3) &inferior_registers, lwp);
 
   if (ret < 0)
     warning (_("unable to store general registers"));
@@ -325,10 +268,10 @@ static void
 store_fp_register (const struct regcache *regcache, int regno)
 {
   struct fpreg inferior_fp_registers;
-  int ret;
-
-  ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
+  int lwp = regcache->ptid ().lwp ();
+  int ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
+		    (PTRACE_TYPE_ARG3) &inferior_fp_registers, lwp);
+  struct vfpreg &vfp = inferior_fp_registers.fpr_vfp;
 
   if (ret < 0)
     {
@@ -336,21 +279,20 @@ store_fp_register (const struct regcache
       return;
     }
 
-  switch (regno)
+  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+  if (regno == ARM_FPSCR_REGNUM && tdep->vfp_register_count != 0)
+    regcache->raw_collect (ARM_FPSCR_REGNUM, (char *) &vfp.vfp_fpscr);
+  else if (regno >= ARM_D0_REGNUM
+	   && regno <= ARM_D0_REGNUM + tdep->vfp_register_count)
     {
-    case ARM_FPS_REGNUM:
-      regcache->raw_collect (ARM_FPS_REGNUM,
-			     (char *) &inferior_fp_registers.fpr_fpsr);
-      break;
-
-    default:
-      regcache->raw_collect
-	(regno, (char *) &inferior_fp_registers.fpr[regno - ARM_F0_REGNUM]);
-      break;
+      regcache->raw_collect (regno,
+			     (char *) &vfp.vfp_regs[regno - ARM_D0_REGNUM]);
     }
+  else
+    warning (_("Invalid register number."));
 
   ret = ptrace (PT_SETFPREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
+		(PTRACE_TYPE_ARG3) &inferior_fp_registers, lwp);
 
   if (ret < 0)
     warning (_("unable to write register %d to inferior"), regno);
@@ -359,27 +301,28 @@ store_fp_register (const struct regcache
 static void
 store_fp_regs (const struct regcache *regcache)
 {
-  struct fpreg inferior_fp_registers;
-  int ret;
-  int regno;
-
+  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+  int lwp = regcache->ptid ().lwp ();
+  if (tdep->vfp_register_count == 0)
+    return;
 
-  for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++)
+  struct fpreg fpregs;
+  for (int regno = 0; regno <= tdep->vfp_register_count; regno++)
     regcache->raw_collect
-      (regno, (char *) &inferior_fp_registers.fpr[regno - ARM_F0_REGNUM]);
+      (regno + ARM_D0_REGNUM, (char *) &fpregs.fpr_vfp.vfp_regs[regno]);
 
-  regcache->raw_collect (ARM_FPS_REGNUM,
-			 (char *) &inferior_fp_registers.fpr_fpsr);
+  regcache->raw_collect (ARM_FPSCR_REGNUM,
+			 (char *) &fpregs.fpr_vfp.vfp_fpscr);
 
-  ret = ptrace (PT_SETFPREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
+  int ret = ptrace (PT_SETFPREGS, regcache->ptid ().pid (),
+		    (PTRACE_TYPE_ARG3) &fpregs, lwp);
 
   if (ret < 0)
     warning (_("unable to store floating-point registers"));
 }
 
 void
-arm_nbsd_nat_target::store_registers (struct regcache *regcache, int regno)
+arm_netbsd_nat_target::store_registers (struct regcache *regcache, int regno)
 {
   if (regno >= 0)
     {
@@ -395,59 +338,26 @@ arm_nbsd_nat_target::store_registers (st
     }
 }
 
-static void
-fetch_elfcore_registers (struct regcache *regcache,
-			 char *core_reg_sect, unsigned core_reg_size,
-			 int which, CORE_ADDR ignore)
-{
-  struct reg gregset;
-  struct fpreg fparegset;
-
-  switch (which)
-    {
-    case 0:	/* Integer registers.  */
-      if (core_reg_size != sizeof (struct reg))
-	warning (_("wrong size of register set in core file"));
-      else
-	{
-	  /* The memcpy may be unnecessary, but we can't really be sure
-	     of the alignment of the data in the core file.  */
-	  memcpy (&gregset, core_reg_sect, sizeof (gregset));
-	  arm_supply_gregset (regcache, &gregset);
-	}
-      break;
+const struct target_desc *
+arm_netbsd_nat_target::read_description ()
+{
+  int flag;
+  size_t len = sizeof (flag);
 
-    case 2:
-      if (core_reg_size != sizeof (struct fpreg))
-	warning (_("wrong size of FPA register set in core file"));
-      else
-	{
-	  /* The memcpy may be unnecessary, but we can't really be sure
-	     of the alignment of the data in the core file.  */
-	  memcpy (&fparegset, core_reg_sect, sizeof (fparegset));
-	  arm_supply_fparegset (regcache, &fparegset);
-	}
-      break;
+  if (sysctlbyname("machdep.fpu_present", &flag, &len, NULL, 0) != 0
+      || !flag)
+    return arm_read_description (ARM_FP_TYPE_NONE);
 
-    default:
-      /* Don't know what kind of register request this is; just ignore it.  */
-      break;
-    }
-}
+  len = sizeof(flag);
+  if (sysctlbyname("machdep.neon_present", &flag, &len, NULL, 0) == 0 && flag)
+    return aarch32_read_description ();
 
-static struct core_fns arm_netbsd_elfcore_fns =
-{
-  bfd_target_elf_flavour,		/* core_flavour.  */
-  default_check_format,			/* check_format.  */
-  default_core_sniffer,			/* core_sniffer.  */
-  fetch_elfcore_registers,		/* core_read_registers.  */
-  NULL
-};
+  return arm_read_description (ARM_FP_TYPE_VFPV3);
+}
 
+void _initialize_arm_netbsd_nat ();
 void
-_initialize_arm_netbsd_nat (void)
+_initialize_arm_netbsd_nat ()
 {
   add_inf_child_target (&the_arm_netbsd_nat_target);
-
-  deprecated_add_core_fns (&arm_netbsd_elfcore_fns);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-nbsd-tdep.c ./gdb/arm-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/arm.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,10 @@
 #include "osabi.h"
 
 #include "arch/arm.h"
+#include "arm-nbsd-tdep.h"
+#include "nbsd-tdep.h"
 #include "arm-tdep.h"
+#include "regset.h"
 #include "solib-svr4.h"
 
 /* Description of the longjmp buffer.  */
@@ -35,6 +38,75 @@ static const gdb_byte arm_nbsd_arm_be_br
 static const gdb_byte arm_nbsd_thumb_le_breakpoint[] = {0xfe, 0xde};
 static const gdb_byte arm_nbsd_thumb_be_breakpoint[] = {0xde, 0xfe};
 
+/* This matches struct reg from NetBSD's sys/arch/arm/include/reg.h:
+   https://github.com/NetBSD/src/blob/7c13e6e6773bb171f4ed3ed53013e9d24b3c1eac/sys/arch/arm/include/reg.h#L39
+ */
+struct arm_nbsd_reg
+{
+  uint32_t reg[13];
+  uint32_t sp;
+  uint32_t lr;
+  uint32_t pc;
+  uint32_t cpsr;
+};
+
+void
+arm_nbsd_supply_gregset (const struct regset *regset, struct regcache *regcache,
+			 int regnum, const void *gregs, size_t len)
+{
+  const arm_nbsd_reg *gregset = static_cast<const arm_nbsd_reg *>(gregs);
+  gdb_assert (len >= sizeof (arm_nbsd_reg));
+
+  /* Integer registers.  */
+  for (int i = ARM_A1_REGNUM; i < ARM_SP_REGNUM; i++)
+    if (regnum == -1 || regnum == i)
+      regcache->raw_supply (i, (char *) &gregset->reg[i]);
+
+  if (regnum == -1 || regnum == ARM_SP_REGNUM)
+    regcache->raw_supply (ARM_SP_REGNUM, (char *) &gregset->sp);
+
+  if (regnum == -1 || regnum == ARM_LR_REGNUM)
+    regcache->raw_supply (ARM_LR_REGNUM, (char *) &gregset->lr);
+
+  if (regnum == -1 || regnum == ARM_PC_REGNUM)
+    {
+      CORE_ADDR r_pc = gdbarch_addr_bits_remove (regcache->arch (), gregset->pc);
+      regcache->raw_supply (ARM_PC_REGNUM, (char *) &r_pc);
+    }
+
+  if (regnum == -1 || regnum == ARM_PS_REGNUM)
+    {
+      if (arm_apcs_32)
+	regcache->raw_supply (ARM_PS_REGNUM, (char *) &gregset->cpsr);
+      else
+	regcache->raw_supply (ARM_PS_REGNUM, (char *) &gregset->pc);
+    }
+}
+
+static const struct regset arm_nbsd_regset = {
+  nullptr,
+  arm_nbsd_supply_gregset,
+  /* We don't need a collect function because we only use this reading registers
+     (via iterate_over_regset_sections and fetch_regs/fetch_register).  */
+  nullptr,
+  0
+};
+
+static void
+arm_nbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
+				       iterate_over_regset_sections_cb *cb,
+				       void *cb_data,
+				       const struct regcache *regcache)
+{
+  cb (".reg", sizeof (arm_nbsd_reg), sizeof (arm_nbsd_reg), &arm_nbsd_regset,
+      NULL, cb_data);
+  /* cbiesinger/2020-02-12 -- as far as I can tell, ARM/NetBSD does
+     not write any floating point registers into the core file (tested
+     with NetBSD 9.1_RC1).  When it does, this function will need to read them,
+     and the arm-netbsd gdbarch will need a core_read_description function
+     to return the right description for them.  */
+}
+
 static void
 arm_netbsd_init_abi_common (struct gdbarch_info info,
 			    struct gdbarch *gdbarch)
@@ -66,10 +138,12 @@ arm_netbsd_init_abi_common (struct gdbar
   tdep->jb_pc = ARM_NBSD_JB_PC;
   tdep->jb_elt_size = ARM_NBSD_JB_ELEMENT_SIZE;
 
+  set_gdbarch_iterate_over_regset_sections
+    (gdbarch, arm_nbsd_iterate_over_regset_sections);
   /* Single stepping.  */
   set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
 }
-  
+
 static void
 arm_netbsd_elf_init_abi (struct gdbarch_info info,
 			 struct gdbarch *gdbarch)
@@ -77,6 +151,9 @@ arm_netbsd_elf_init_abi (struct gdbarch_
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
   arm_netbsd_init_abi_common (info, gdbarch);
+
+  nbsd_init_abi (info, gdbarch);
+
   if (tdep->fp_model == ARM_FLOAT_AUTO)
     tdep->fp_model = ARM_FLOAT_SOFT_VFP;
 
@@ -85,8 +162,9 @@ arm_netbsd_elf_init_abi (struct gdbarch_
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
 }
 
+void _initialize_arm_netbsd_tdep ();
 void
-_initialize_arm_netbsd_tdep (void)
+_initialize_arm_netbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_NETBSD,
                           arm_netbsd_elf_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-nbsd-tdep.h ./gdb/arm-nbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-nbsd-tdep.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arm-nbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,27 @@
+/* NetBSD/ARM support.
+
+   Copyright (C) 2020-2021 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 ARM_NBSD_TDEP_H
+#define ARM_NBSD_TDEP_H
+
+void arm_nbsd_supply_gregset
+  (const struct regset *regset, struct regcache *regcache,
+   int regnum, const void *gregs, size_t len);
+
+#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-obsd-tdep.c ./gdb/arm-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-obsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-obsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/arm.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -115,8 +115,9 @@ armobsd_init_abi (struct gdbarch_info in
     }
 }
 
+void _initialize_armobsd_tdep ();
 void
-_initialize_armobsd_tdep (void)
+_initialize_armobsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_OPENBSD,
 			  armobsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-pikeos-tdep.c ./gdb/arm-pikeos-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-pikeos-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-pikeos-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2016-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -81,8 +81,9 @@ arm_pikeos_osabi_sniffer (bfd *abfd)
     return GDB_OSABI_UNKNOWN;
 }
 
+void _initialize_arm_pikeos_tdep ();
 void
-_initialize_arm_pikeos_tdep (void)
+_initialize_arm_pikeos_tdep ()
 {
   /* Register the sniffer for the PikeOS targets.  */
   gdbarch_register_osabi_sniffer (bfd_arch_arm, bfd_target_elf_flavour,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-symbian-tdep.c ./gdb/arm-symbian-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-symbian-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-symbian-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* ARM Symbian OS target support.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -119,8 +119,9 @@ arm_symbian_osabi_sniffer (bfd *abfd)
   return GDB_OSABI_SYMBIAN;
 }
 
+void _initialize_arm_symbian_tdep ();
 void
-_initialize_arm_symbian_tdep (void)
+_initialize_arm_symbian_tdep ()
 {
   gdbarch_register_osabi_sniffer (bfd_arch_arm,
 				  bfd_target_elf_flavour,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-tdep.c ./gdb/arm-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for GDB on ARM systems.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -38,13 +38,14 @@
 #include "frame-base.h"
 #include "trad-frame.h"
 #include "objfiles.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "gdbtypes.h"
 #include "prologue-value.h"
 #include "remote.h"
 #include "target-descriptions.h"
 #include "user-regs.h"
 #include "observable.h"
+#include "count-one-bits.h"
 
 #include "arch/arm.h"
 #include "arch/arm-get-next-pcs.h"
@@ -59,6 +60,8 @@
 #include "record-full.h"
 #include <algorithm>
 
+#include "producer.h"
+
 #if GDB_SELF_TEST
 #include "gdbsupport/selftest.h"
 #endif
@@ -80,7 +83,7 @@ static bool arm_debug;
 
 struct arm_mapping_symbol
 {
-  bfd_vma value;
+  CORE_ADDR value;
   char type;
 
   bool operator< (const arm_mapping_symbol &other) const
@@ -466,7 +469,7 @@ arm_pc_is_thumb (struct gdbarch *gdbarch
 }
 
 /* Determine if the address specified equals any of these magic return
-   values, called EXC_RETURN, defined by the ARM v6-M and v7-M
+   values, called EXC_RETURN, defined by the ARM v6-M, v7-M and v8-M
    architectures.
 
    From ARMv6-M Reference Manual B1.5.8
@@ -497,13 +500,25 @@ arm_pc_is_thumb (struct gdbarch *gdbarch
    0xFFFFFFFD    Thread mode      Process         Basic
 
    For more details see "B1.5.8 Exception return behavior"
-   in both ARMv6-M and ARMv7-M Architecture Reference Manuals.  */
+   in both ARMv6-M and ARMv7-M Architecture Reference Manuals.
+
+   In the ARMv8-M Architecture Technical Reference also adds
+   for implementations without the Security Extension:
+
+   EXC_RETURN    Condition
+   0xFFFFFFB0    Return to Handler mode.
+   0xFFFFFFB8    Return to Thread mode using the main stack.
+   0xFFFFFFBC    Return to Thread mode using the process stack.  */
 
 static int
 arm_m_addr_is_magic (CORE_ADDR addr)
 {
   switch (addr)
     {
+      /* Values from ARMv8-M Architecture Technical Reference.  */
+      case 0xffffffb0:
+      case 0xffffffb8:
+      case 0xffffffbc:
       /* Values from Tables in B1.5.8 the EXC_RETURN definitions of
 	 the exception return behavior.  */
       case 0xffffffe1:
@@ -930,7 +945,7 @@ thumb_analyze_prologue (struct gdbarch *
 	       parameters from memory.  */
 	    ;
 
-	  else if ((insn & 0xffb0) == 0xe950	/* ldrd Rt, Rt2,
+	  else if ((insn & 0xff70) == 0xe950    /* ldrd Rt, Rt2,
 						   [Rn, #+/-imm] */
 		   && pv_is_register (regs[bits (insn, 0, 3)], ARM_SP_REGNUM))
 	    /* Similarly ignore dual loads from the stack.  */
@@ -1350,7 +1365,7 @@ arm_skip_prologue (struct gdbarch *gdbar
 	  && (cust == NULL
 	      || COMPUNIT_PRODUCER (cust) == NULL
 	      || startswith (COMPUNIT_PRODUCER (cust), "GNU ")
-	      || startswith (COMPUNIT_PRODUCER (cust), "clang ")))
+	      || producer_is_llvm (COMPUNIT_PRODUCER (cust))))
 	return post_prologue_pc;
 
       if (post_prologue_pc != 0)
@@ -1985,7 +2000,7 @@ struct frame_unwind arm_prologue_unwind
 
 struct arm_exidx_entry
 {
-  bfd_vma addr;
+  CORE_ADDR addr;
   gdb_byte *entry;
 
   bool operator< (const arm_exidx_entry &other) const
@@ -2920,14 +2935,64 @@ arm_m_exception_cache (struct frame_info
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   struct arm_prologue_cache *cache;
+  CORE_ADDR lr;
+  CORE_ADDR sp;
   CORE_ADDR unwound_sp;
   LONGEST xpsr;
+  uint32_t exc_return;
+  uint32_t process_stack_used;
+  uint32_t extended_frame_used;
+  uint32_t secure_stack_used;
 
   cache = FRAME_OBSTACK_ZALLOC (struct arm_prologue_cache);
   cache->saved_regs = trad_frame_alloc_saved_regs (this_frame);
 
-  unwound_sp = get_frame_register_unsigned (this_frame,
-					    ARM_SP_REGNUM);
+  /* ARMv7-M Architecture Reference "B1.5.6 Exception entry behavior"
+     describes which bits in LR that define which stack was used prior
+     to the exception and if FPU is used (causing extended stack frame).  */
+
+  lr = get_frame_register_unsigned (this_frame, ARM_LR_REGNUM);
+  sp = get_frame_register_unsigned (this_frame, ARM_SP_REGNUM);
+
+  /* Check EXC_RETURN indicator bits.  */
+  exc_return = (((lr >> 28) & 0xf) == 0xf);
+
+  /* Check EXC_RETURN bit SPSEL if Main or Thread (process) stack used.  */
+  process_stack_used = ((lr & (1 << 2)) != 0);
+  if (exc_return && process_stack_used)
+    {
+      /* Thread (process) stack used.
+         Potentially this could be other register defined by target, but PSP
+         can be considered a standard name for the "Process Stack Pointer".
+         To be fully aware of system registers like MSP and PSP, these could
+         be added to a separate XML arm-m-system-profile that is valid for
+         ARMv6-M and ARMv7-M architectures. Also to be able to debug eg a
+         corefile off-line, then these registers must be defined by GDB,
+         and also be included in the corefile regsets.  */
+
+      int psp_regnum = user_reg_map_name_to_regnum (gdbarch, "psp", -1);
+      if (psp_regnum == -1)
+        {
+          /* Thread (process) stack could not be fetched,
+             give warning and exit.  */
+
+          warning (_("no PSP thread stack unwinding supported."));
+
+          /* Terminate any further stack unwinding by refer to self.  */
+          cache->prev_sp = sp;
+          return cache;
+        }
+      else
+        {
+          /* Thread (process) stack used, use PSP as SP.  */
+          unwound_sp = get_frame_register_unsigned (this_frame, psp_regnum);
+        }
+    }
+  else
+    {
+      /* Main stack used, use MSP as SP.  */
+      unwound_sp = sp;
+    }
 
   /* The hardware saves eight 32-bit words, comprising xPSR,
      ReturnAddress, LR (R14), R12, R3, R2, R1, R0.  See details in
@@ -2937,15 +3002,62 @@ arm_m_exception_cache (struct frame_info
   cache->saved_regs[1].addr = unwound_sp + 4;
   cache->saved_regs[2].addr = unwound_sp + 8;
   cache->saved_regs[3].addr = unwound_sp + 12;
-  cache->saved_regs[12].addr = unwound_sp + 16;
-  cache->saved_regs[14].addr = unwound_sp + 20;
-  cache->saved_regs[15].addr = unwound_sp + 24;
+  cache->saved_regs[ARM_IP_REGNUM].addr = unwound_sp + 16;
+  cache->saved_regs[ARM_LR_REGNUM].addr = unwound_sp + 20;
+  cache->saved_regs[ARM_PC_REGNUM].addr = unwound_sp + 24;
   cache->saved_regs[ARM_PS_REGNUM].addr = unwound_sp + 28;
 
+  /* Check EXC_RETURN bit FTYPE if extended stack frame (FPU regs stored)
+     type used.  */
+  extended_frame_used = ((lr & (1 << 4)) == 0);
+  if (exc_return && extended_frame_used)
+    {
+      int i;
+      int fpu_regs_stack_offset;
+
+      /* This code does not take into account the lazy stacking, see "Lazy
+         context save of FP state", in B1.5.7, also ARM AN298, supported
+         by Cortex-M4F architecture.
+         To fully handle this the FPCCR register (Floating-point Context
+         Control Register) needs to be read out and the bits ASPEN and LSPEN
+         could be checked to setup correct lazy stacked FP registers.
+         This register is located at address 0xE000EF34.  */
+
+      /* Extended stack frame type used.  */
+      fpu_regs_stack_offset = unwound_sp + 0x20;
+      for (i = 0; i < 16; i++)
+        {
+          cache->saved_regs[ARM_D0_REGNUM + i].addr = fpu_regs_stack_offset;
+          fpu_regs_stack_offset += 4;
+        }
+      cache->saved_regs[ARM_FPSCR_REGNUM].addr = unwound_sp + 0x60;
+
+      /* Offset 0x64 is reserved.  */
+      cache->prev_sp = unwound_sp + 0x68;
+    }
+  else
+    {
+      /* Standard stack frame type used.  */
+      cache->prev_sp = unwound_sp + 0x20;
+    }
+
+  /* Check EXC_RETURN bit S if Secure or Non-secure stack used.  */
+  secure_stack_used = ((lr & (1 << 6)) != 0);
+  if (exc_return && secure_stack_used)
+    {
+      /* ARMv8-M Exception and interrupt handling is not considered here.
+	 In the ARMv8-M architecture also EXC_RETURN bit S is controlling if
+	 the Secure or Non-secure stack was used. To separate Secure and
+	 Non-secure stacks, processors that are based on the ARMv8-M
+	 architecture support 4 stack pointers: MSP_S, PSP_S, MSP_NS, PSP_NS.
+	 In addition, a stack limit feature is provided using stack limit
+	 registers (accessible using MSR and MRS instructions) in Privileged
+	 level.  */
+    }
+
   /* If bit 9 of the saved xPSR is set, then there is a four-byte
      aligner between the top of the 32-byte stack frame and the
      previous context's stack pointer.  */
-  cache->prev_sp = unwound_sp + 32;
   if (safe_read_memory_integer (unwound_sp + 28, 4, byte_order, &xpsr)
       && (xpsr & (1 << 9)) != 0)
     cache->prev_sp += 4;
@@ -3305,7 +3417,7 @@ static ULONGEST
 arm_type_align (gdbarch *gdbarch, struct type *t)
 {
   t = check_typedef (t);
-  if (TYPE_CODE (t) == TYPE_CODE_ARRAY && TYPE_VECTOR (t))
+  if (t->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (t))
     {
       /* Use the natural alignment for vector types (the same for
 	 scalar type), but the maximum alignment is 64-bit.  */
@@ -3392,7 +3504,7 @@ arm_vfp_cprc_sub_candidate (struct type
 			    enum arm_vfp_cprc_base_type *base_type)
 {
   t = check_typedef (t);
-  switch (TYPE_CODE (t))
+  switch (t->code ())
     {
     case TYPE_CODE_FLT:
       switch (TYPE_LENGTH (t))
@@ -3496,12 +3608,12 @@ arm_vfp_cprc_sub_candidate (struct type
 	int count = 0;
 	unsigned unitlen;
 	int i;
-	for (i = 0; i < TYPE_NFIELDS (t); i++)
+	for (i = 0; i < t->num_fields (); i++)
 	  {
 	    int sub_count = 0;
 
-	    if (!field_is_static (&TYPE_FIELD (t, i)))
-	      sub_count = arm_vfp_cprc_sub_candidate (TYPE_FIELD_TYPE (t, i),
+	    if (!field_is_static (&t->field (i)))
+	      sub_count = arm_vfp_cprc_sub_candidate (t->field (i).type (),
 						      base_type);
 	    if (sub_count == -1)
 	      return -1;
@@ -3525,9 +3637,9 @@ arm_vfp_cprc_sub_candidate (struct type
 	int count = 0;
 	unsigned unitlen;
 	int i;
-	for (i = 0; i < TYPE_NFIELDS (t); i++)
+	for (i = 0; i < t->num_fields (); i++)
 	  {
-	    int sub_count = arm_vfp_cprc_sub_candidate (TYPE_FIELD_TYPE (t, i),
+	    int sub_count = arm_vfp_cprc_sub_candidate (t->field (i).type (),
 							base_type);
 	    if (sub_count == -1)
 	      return -1;
@@ -3614,7 +3726,7 @@ arm_push_dummy_call (struct gdbarch *gdb
   /* Determine the type of this function and whether the VFP ABI
      applies.  */
   ftype = check_typedef (value_type (function));
-  if (TYPE_CODE (ftype) == TYPE_CODE_PTR)
+  if (ftype->code () == TYPE_CODE_PTR)
     ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
   use_vfp_abi = arm_vfp_abi_for_function (gdbarch, ftype);
 
@@ -3659,7 +3771,7 @@ arm_push_dummy_call (struct gdbarch *gdb
       arg_type = check_typedef (value_type (args[argnum]));
       len = TYPE_LENGTH (arg_type);
       target_type = TYPE_TARGET_TYPE (arg_type);
-      typecode = TYPE_CODE (arg_type);
+      typecode = arg_type->code ();
       val = value_contents (args[argnum]);
 
       align = type_align (arg_type);
@@ -3757,7 +3869,7 @@ arm_push_dummy_call (struct gdbarch *gdb
 	 the THUMB bit in it.  */
       if (TYPE_CODE_PTR == typecode
 	  && target_type != NULL
-	  && TYPE_CODE_FUNC == TYPE_CODE (check_typedef (target_type)))
+	  && TYPE_CODE_FUNC == check_typedef (target_type)->code ())
 	{
 	  CORE_ADDR regval = extract_unsigned_integer (val, len, byte_order);
 	  if (arm_pc_is_thumb (gdbarch, regval))
@@ -3919,7 +4031,7 @@ arm_neon_double_type (struct gdbarch *gd
       append_composite_type_field (t, "f64", elem);
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "neon_d";
+      t->set_name ("neon_d");
       tdep->neon_double_type = t;
     }
 
@@ -3958,7 +4070,7 @@ arm_neon_quad_type (struct gdbarch *gdba
       append_composite_type_field (t, "f64", init_vector_type (elem, 2));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "neon_q";
+      t->set_name ("neon_q");
       tdep->neon_quad_type = t;
     }
 
@@ -3989,7 +4101,7 @@ arm_register_type (struct gdbarch *gdbar
       struct type *t = tdesc_register_type (gdbarch, regnum);
 
       if (regnum >= ARM_D0_REGNUM && regnum < ARM_D0_REGNUM + 32
-	  && TYPE_CODE (t) == TYPE_CODE_FLT
+	  && t->code () == TYPE_CODE_FLT
 	  && gdbarch_tdep (gdbarch)->have_neon)
 	return arm_neon_double_type (gdbarch);
       else
@@ -5798,7 +5910,8 @@ cleanup_block_store_pc (struct gdbarch *
 {
   uint32_t status = displaced_read_reg (regs, dsc, ARM_PS_REGNUM);
   int store_executed = condition_true (dsc->u.block.cond, status);
-  CORE_ADDR pc_stored_at, transferred_regs = bitcount (dsc->u.block.regmask);
+  CORE_ADDR pc_stored_at, transferred_regs
+    = count_one_bits (dsc->u.block.regmask);
   CORE_ADDR stm_insn_addr;
   uint32_t pc_val;
   long offset;
@@ -5850,7 +5963,7 @@ cleanup_block_load_pc (struct gdbarch *g
   uint32_t status = displaced_read_reg (regs, dsc, ARM_PS_REGNUM);
   int load_executed = condition_true (dsc->u.block.cond, status);
   unsigned int mask = dsc->u.block.regmask, write_reg = ARM_PC_REGNUM;
-  unsigned int regs_loaded = bitcount (mask);
+  unsigned int regs_loaded = count_one_bits (mask);
   unsigned int num_to_shuffle = regs_loaded, clobbered;
 
   /* The method employed here will fail if the register list is fully populated
@@ -5982,7 +6095,7 @@ arm_copy_block_xfer (struct gdbarch *gdb
 	     contiguous chunk r0...rX before doing the transfer, then shuffling
 	     registers into the correct places in the cleanup routine.  */
 	  unsigned int regmask = insn & 0xffff;
-	  unsigned int num_in_list = bitcount (regmask), new_regmask;
+	  unsigned int num_in_list = count_one_bits (regmask), new_regmask;
 	  unsigned int i;
 
 	  for (i = 0; i < num_in_list; i++)
@@ -6084,7 +6197,7 @@ thumb2_copy_block_xfer (struct gdbarch *
       else
 	{
 	  unsigned int regmask = dsc->u.block.regmask;
-	  unsigned int num_in_list = bitcount (regmask), new_regmask;
+	  unsigned int num_in_list = count_one_bits (regmask), new_regmask;
 	  unsigned int i;
 
 	  for (i = 0; i < num_in_list; i++)
@@ -7102,7 +7215,7 @@ thumb_copy_pop_pc_16bit (struct gdbarch
     }
   else
     {
-      unsigned int num_in_list = bitcount (dsc->u.block.regmask);
+      unsigned int num_in_list = count_one_bits (dsc->u.block.regmask);
       unsigned int i;
       unsigned int new_regmask;
 
@@ -7803,7 +7916,7 @@ arm_extract_return_value (struct type *t
   struct gdbarch *gdbarch = regs->arch ();
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
 
-  if (TYPE_CODE_FLT == TYPE_CODE (type))
+  if (TYPE_CODE_FLT == type->code ())
     {
       switch (gdbarch_tdep (gdbarch)->fp_model)
 	{
@@ -7838,12 +7951,12 @@ arm_extract_return_value (struct type *t
 	  break;
 	}
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_INT
-	   || TYPE_CODE (type) == TYPE_CODE_CHAR
-	   || TYPE_CODE (type) == TYPE_CODE_BOOL
-	   || TYPE_CODE (type) == TYPE_CODE_PTR
+  else if (type->code () == TYPE_CODE_INT
+	   || type->code () == TYPE_CODE_CHAR
+	   || type->code () == TYPE_CODE_BOOL
+	   || type->code () == TYPE_CODE_PTR
 	   || TYPE_IS_REFERENCE (type)
-	   || TYPE_CODE (type) == TYPE_CODE_ENUM)
+	   || type->code () == TYPE_CODE_ENUM)
     {
       /* If the type is a plain integer, then the access is
 	 straight-forward.  Otherwise we have to play around a bit
@@ -7899,7 +8012,7 @@ arm_return_in_memory (struct gdbarch *gd
 
   /* Simple, non-aggregate types (ie not including vectors and
      complex) are always returned in a register (or registers).  */
-  code = TYPE_CODE (type);
+  code = type->code ();
   if (TYPE_CODE_STRUCT != code && TYPE_CODE_UNION != code
       && TYPE_CODE_ARRAY != code && TYPE_CODE_COMPLEX != code)
     return 0;
@@ -7968,13 +8081,12 @@ arm_return_in_memory (struct gdbarch *gd
 	     --> yes, nRc = 1
 	  */
 
-	  for (i = 0; i < TYPE_NFIELDS (type); i++)
+	  for (i = 0; i < type->num_fields (); i++)
 	    {
 	      enum type_code field_type_code;
 
 	      field_type_code
-		= TYPE_CODE (check_typedef (TYPE_FIELD_TYPE (type,
-							     i)));
+		= check_typedef (type->field (i).type ())->code ();
 
 	      /* Is it a floating point type field?  */
 	      if (field_type_code == TYPE_CODE_FLT)
@@ -8012,7 +8124,7 @@ arm_store_return_value (struct type *typ
   struct gdbarch *gdbarch = regs->arch ();
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
 
-  if (TYPE_CODE (type) == TYPE_CODE_FLT)
+  if (type->code () == TYPE_CODE_FLT)
     {
       gdb_byte buf[ARM_FP_REGISTER_SIZE];
 
@@ -8042,12 +8154,12 @@ arm_store_return_value (struct type *typ
 	  break;
 	}
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_INT
-	   || TYPE_CODE (type) == TYPE_CODE_CHAR
-	   || TYPE_CODE (type) == TYPE_CODE_BOOL
-	   || TYPE_CODE (type) == TYPE_CODE_PTR
+  else if (type->code () == TYPE_CODE_INT
+	   || type->code () == TYPE_CODE_CHAR
+	   || type->code () == TYPE_CODE_BOOL
+	   || type->code () == TYPE_CODE_PTR
 	   || TYPE_IS_REFERENCE (type)
-	   || TYPE_CODE (type) == TYPE_CODE_ENUM)
+	   || type->code () == TYPE_CODE_ENUM)
     {
       if (TYPE_LENGTH (type) <= 4)
 	{
@@ -8143,15 +8255,15 @@ arm_return_value (struct gdbarch *gdbarc
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
 
-  if (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-      || TYPE_CODE (valtype) == TYPE_CODE_UNION
-      || TYPE_CODE (valtype) == TYPE_CODE_ARRAY)
+  if (valtype->code () == TYPE_CODE_STRUCT
+      || valtype->code () == TYPE_CODE_UNION
+      || valtype->code () == TYPE_CODE_ARRAY)
     {
       if (tdep->struct_return == pcc_struct_return
 	  || arm_return_in_memory (gdbarch, valtype))
 	return RETURN_VALUE_STRUCT_CONVENTION;
     }
-  else if (TYPE_CODE (valtype) == TYPE_CODE_COMPLEX)
+  else if (valtype->code () == TYPE_CODE_COMPLEX)
     {
       if (arm_return_in_memory (gdbarch, valtype))
 	return RETURN_VALUE_STRUCT_CONVENTION;
@@ -8324,20 +8436,6 @@ arm_skip_stub (struct frame_info *frame,
 }
 
 static void
-set_arm_command (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\
-\"set arm\" must be followed by an apporpriate subcommand.\n"));
-  help_list (setarmcmdlist, "set arm ", all_commands, gdb_stdout);
-}
-
-static void
-show_arm_command (const char *args, int from_tty)
-{
-  cmd_show_list (showarmcmdlist, from_tty, "");
-}
-
-static void
 arm_update_current_architecture (void)
 {
   struct gdbarch_info info;
@@ -8870,11 +8968,13 @@ arm_gdbarch_init (struct gdbarch_info in
   enum arm_abi_kind arm_abi = arm_abi_global;
   enum arm_float_model fp_model = arm_fp_model;
   struct tdesc_arch_data *tdesc_data = NULL;
-  int i, is_m = 0;
-  int vfp_register_count = 0, have_vfp_pseudos = 0, have_neon_pseudos = 0;
-  int have_wmmx_registers = 0;
-  int have_neon = 0;
-  int have_fpa_registers = 1;
+  int i;
+  bool is_m = false;
+  int vfp_register_count = 0;
+  bool have_vfp_pseudos = false, have_neon_pseudos = false;
+  bool have_wmmx_registers = false;
+  bool have_neon = false;
+  bool have_fpa_registers = true;
   const struct target_desc *tdesc = info.target_desc;
 
   /* If we have an object to base this architecture on, try to determine
@@ -8991,7 +9091,7 @@ arm_gdbarch_init (struct gdbarch_info in
 		  && (attr_arch == TAG_CPU_ARCH_V6_M
 		      || attr_arch == TAG_CPU_ARCH_V6S_M
 		      || attr_profile == 'M'))
-		is_m = 1;
+		is_m = true;
 #endif
 	    }
 
@@ -9049,7 +9149,7 @@ arm_gdbarch_init (struct gdbarch_info in
 	  if (feature == NULL)
 	    return NULL;
 	  else
-	    is_m = 1;
+	    is_m = true;
 	}
 
       tdesc_data = tdesc_data_alloc ();
@@ -9095,7 +9195,7 @@ arm_gdbarch_init (struct gdbarch_info in
 	    }
 	}
       else
-	have_fpa_registers = 0;
+	have_fpa_registers = false;
 
       feature = tdesc_find_feature (tdesc,
 				    "org.gnu.gdb.xscale.iwmmxt");
@@ -9131,7 +9231,7 @@ arm_gdbarch_init (struct gdbarch_info in
 	      return NULL;
 	    }
 
-	  have_wmmx_registers = 1;
+	  have_wmmx_registers = true;
 	}
 
       /* If we have a VFP unit, check whether the single precision registers
@@ -9172,7 +9272,7 @@ arm_gdbarch_init (struct gdbarch_info in
 	    }
 
 	  if (tdesc_unnumbered_register (feature, "s0") == 0)
-	    have_vfp_pseudos = 1;
+	    have_vfp_pseudos = true;
 
 	  vfp_register_count = i;
 
@@ -9194,9 +9294,9 @@ arm_gdbarch_init (struct gdbarch_info in
 		 their type; otherwise (normally) provide them with
 		 the default type.  */
 	      if (tdesc_unnumbered_register (feature, "q0") == 0)
-		have_neon_pseudos = 1;
+		have_neon_pseudos = true;
 
-	      have_neon = 1;
+	      have_neon = true;
 	    }
 	}
     }
@@ -9468,7 +9568,21 @@ arm_dump_tdep (struct gdbarch *gdbarch,
   if (tdep == NULL)
     return;
 
-  fprintf_unfiltered (file, _("arm_dump_tdep: Lowest pc = 0x%lx"),
+  fprintf_unfiltered (file, _("arm_dump_tdep: fp_model = %i\n"),
+		      (int) tdep->fp_model);
+  fprintf_unfiltered (file, _("arm_dump_tdep: have_fpa_registers = %i\n"),
+		      (int) tdep->have_fpa_registers);
+  fprintf_unfiltered (file, _("arm_dump_tdep: have_wmmx_registers = %i\n"),
+		      (int) tdep->have_wmmx_registers);
+  fprintf_unfiltered (file, _("arm_dump_tdep: vfp_register_count = %i\n"),
+		      (int) tdep->vfp_register_count);
+  fprintf_unfiltered (file, _("arm_dump_tdep: have_vfp_pseudos = %i\n"),
+		      (int) tdep->have_vfp_pseudos);
+  fprintf_unfiltered (file, _("arm_dump_tdep: have_neon_pseudos = %i\n"),
+		      (int) tdep->have_neon_pseudos);
+  fprintf_unfiltered (file, _("arm_dump_tdep: have_neon = %i\n"),
+		      (int) tdep->have_neon);
+  fprintf_unfiltered (file, _("arm_dump_tdep: Lowest pc = 0x%lx\n"),
 		      (unsigned long) tdep->lowest_pc);
 }
 
@@ -9479,8 +9593,9 @@ static void arm_record_test (void);
 }
 #endif
 
+void _initialize_arm_tdep ();
 void
-_initialize_arm_tdep (void)
+_initialize_arm_tdep ()
 {
   long length;
   int i, j;
@@ -9498,13 +9613,13 @@ _initialize_arm_tdep (void)
 				  arm_elf_osabi_sniffer);
 
   /* Add root prefix command for all "set arm"/"show arm" commands.  */
-  add_prefix_cmd ("arm", no_class, set_arm_command,
-		  _("Various ARM-specific commands."),
-		  &setarmcmdlist, "set arm ", 0, &setlist);
-
-  add_prefix_cmd ("arm", no_class, show_arm_command,
-		  _("Various ARM-specific commands."),
-		  &showarmcmdlist, "show arm ", 0, &showlist);
+  add_basic_prefix_cmd ("arm", no_class,
+			_("Various ARM-specific commands."),
+			&setarmcmdlist, "set arm ", 0, &setlist);
+
+  add_show_prefix_cmd ("arm", no_class,
+		       _("Various ARM-specific commands."),
+		       &showarmcmdlist, "show arm ", 0, &showlist);
 
 
   arm_disassembler_options = xstrdup ("reg-names-std");
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-tdep.h ./gdb/arm-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Common target dependent code for GDB on ARM systems.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -95,19 +95,19 @@ struct gdbarch_tdep
 
   enum arm_float_model fp_model; /* Floating point calling conventions.  */
 
-  int have_fpa_registers;	/* Does the target report the FPA registers?  */
-  int have_wmmx_registers;	/* Does the target report the WMMX registers?  */
+  bool have_fpa_registers;	/* Does the target report the FPA registers?  */
+  bool have_wmmx_registers;	/* Does the target report the WMMX registers?  */
   /* The number of VFP registers reported by the target.  It is zero
      if VFP registers are not supported.  */
   int vfp_register_count;
-  int have_vfp_pseudos;		/* Are we synthesizing the single precision
+  bool have_vfp_pseudos;	/* Are we synthesizing the single precision
 				   VFP registers?  */
-  int have_neon_pseudos;	/* Are we synthesizing the quad precision
+  bool have_neon_pseudos;	/* Are we synthesizing the quad precision
 				   NEON registers?  Requires
 				   have_vfp_pseudos.  */
-  int have_neon;		/* Do we have a NEON unit?  */
+  bool have_neon;		/* Do we have a NEON unit?  */
 
-  int is_m;			/* Does the target follow the "M" profile.  */
+  bool is_m;			/* Does the target follow the "M" profile.  */
   CORE_ADDR lowest_pc;		/* Lowest address at which instructions 
 				   will appear.  */
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-wince-tdep.c ./gdb/arm-wince-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/arm-wince-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/arm-wince-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Target-dependent code for Windows CE running on ARM processors,
    for GDB.
 
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -154,8 +154,9 @@ arm_wince_osabi_sniffer (bfd *abfd)
   return GDB_OSABI_UNKNOWN;
 }
 
+void _initialize_arm_wince_tdep ();
 void
-_initialize_arm_wince_tdep (void)
+_initialize_arm_wince_tdep ()
 {
   gdbarch_register_osabi_sniffer (bfd_arch_arm, bfd_target_coff_flavour,
                                   arm_wince_osabi_sniffer);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/async-event.c ./gdb/async-event.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/async-event.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/async-event.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,329 @@
+/* Async events for the GDB event loop.
+   Copyright (C) 1999-2021 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 "async-event.h"
+
+#include "ser-event.h"
+#include "top.h"
+
+/* PROC is a function to be invoked when the READY flag is set.  This
+   happens when there has been a signal and the corresponding signal
+   handler has 'triggered' this async_signal_handler for execution.
+   The actual work to be done in response to a signal will be carried
+   out by PROC at a later time, within process_event.  This provides a
+   deferred execution of signal handlers.
+
+   Async_init_signals takes care of setting up such an
+   async_signal_handler for each interesting signal.  */
+
+struct async_signal_handler
+{
+  /* If ready, call this handler  from the main event loop, using
+     invoke_async_handler.  */
+  int ready;
+
+  /* Pointer to next handler.  */
+  struct async_signal_handler *next_handler;
+
+  /* Function to call to do the work.  */
+  sig_handler_func *proc;
+
+  /* Argument to PROC.  */
+  gdb_client_data client_data;
+};
+
+/* PROC is a function to be invoked when the READY flag is set.  This
+   happens when the event has been marked with
+   MARK_ASYNC_EVENT_HANDLER.  The actual work to be done in response
+   to an event will be carried out by PROC at a later time, within
+   process_event.  This provides a deferred execution of event
+   handlers.  */
+struct async_event_handler
+{
+  /* If ready, call this handler from the main event loop, using
+     invoke_event_handler.  */
+  int ready;
+
+  /* Pointer to next handler.  */
+  struct async_event_handler *next_handler;
+
+  /* Function to call to do the work.  */
+  async_event_handler_func *proc;
+
+  /* Argument to PROC.  */
+  gdb_client_data client_data;
+};
+
+/* All the async_signal_handlers gdb is interested in are kept onto
+   this list.  */
+static struct
+{
+  /* Pointer to first in handler list.  */
+  async_signal_handler *first_handler;
+
+  /* Pointer to last in handler list.  */
+  async_signal_handler *last_handler;
+}
+sighandler_list;
+
+/* All the async_event_handlers gdb is interested in are kept onto
+   this list.  */
+static struct
+{
+  /* Pointer to first in handler list.  */
+  async_event_handler *first_handler;
+
+  /* Pointer to last in handler list.  */
+  async_event_handler *last_handler;
+}
+async_event_handler_list;
+
+
+/* This event is signalled whenever an asynchronous handler needs to
+   defer an action to the event loop.  */
+static struct serial_event *async_signal_handlers_serial_event;
+
+/* Callback registered with ASYNC_SIGNAL_HANDLERS_SERIAL_EVENT.  */
+
+static void
+async_signals_handler (int error, gdb_client_data client_data)
+{
+  /* Do nothing.  Handlers are run by invoke_async_signal_handlers
+     from instead.  */
+}
+
+void
+initialize_async_signal_handlers (void)
+{
+  async_signal_handlers_serial_event = make_serial_event ();
+
+  add_file_handler (serial_event_fd (async_signal_handlers_serial_event),
+		    async_signals_handler, NULL);
+}
+
+
+
+/* Create an asynchronous handler, allocating memory for it.
+   Return a pointer to the newly created handler.
+   This pointer will be used to invoke the handler by 
+   invoke_async_signal_handler.
+   PROC is the function to call with CLIENT_DATA argument 
+   whenever the handler is invoked.  */
+async_signal_handler *
+create_async_signal_handler (sig_handler_func * proc,
+			     gdb_client_data client_data)
+{
+  async_signal_handler *async_handler_ptr;
+
+  async_handler_ptr = XNEW (async_signal_handler);
+  async_handler_ptr->ready = 0;
+  async_handler_ptr->next_handler = NULL;
+  async_handler_ptr->proc = proc;
+  async_handler_ptr->client_data = client_data;
+  if (sighandler_list.first_handler == NULL)
+    sighandler_list.first_handler = async_handler_ptr;
+  else
+    sighandler_list.last_handler->next_handler = async_handler_ptr;
+  sighandler_list.last_handler = async_handler_ptr;
+  return async_handler_ptr;
+}
+
+/* Mark the handler (ASYNC_HANDLER_PTR) as ready.  This information
+   will be used when the handlers are invoked, after we have waited
+   for some event.  The caller of this function is the interrupt
+   handler associated with a signal.  */
+void
+mark_async_signal_handler (async_signal_handler * async_handler_ptr)
+{
+  async_handler_ptr->ready = 1;
+  serial_event_set (async_signal_handlers_serial_event);
+}
+
+/* See event-loop.h.  */
+
+void
+clear_async_signal_handler (async_signal_handler *async_handler_ptr)
+{
+  async_handler_ptr->ready = 0;
+}
+
+/* See event-loop.h.  */
+
+int
+async_signal_handler_is_marked (async_signal_handler *async_handler_ptr)
+{
+  return async_handler_ptr->ready;
+}
+
+/* Call all the handlers that are ready.  Returns true if any was
+   indeed ready.  */
+
+int
+invoke_async_signal_handlers (void)
+{
+  async_signal_handler *async_handler_ptr;
+  int any_ready = 0;
+
+  /* We're going to handle all pending signals, so no need to wake up
+     the event loop again the next time around.  Note this must be
+     cleared _before_ calling the callbacks, to avoid races.  */
+  serial_event_clear (async_signal_handlers_serial_event);
+
+  /* Invoke all ready handlers.  */
+
+  while (1)
+    {
+      for (async_handler_ptr = sighandler_list.first_handler;
+	   async_handler_ptr != NULL;
+	   async_handler_ptr = async_handler_ptr->next_handler)
+	{
+	  if (async_handler_ptr->ready)
+	    break;
+	}
+      if (async_handler_ptr == NULL)
+	break;
+      any_ready = 1;
+      async_handler_ptr->ready = 0;
+      /* Async signal handlers have no connection to whichever was the
+	 current UI, and thus always run on the main one.  */
+      current_ui = main_ui;
+      (*async_handler_ptr->proc) (async_handler_ptr->client_data);
+    }
+
+  return any_ready;
+}
+
+/* Delete an asynchronous handler (ASYNC_HANDLER_PTR).
+   Free the space allocated for it.  */
+void
+delete_async_signal_handler (async_signal_handler ** async_handler_ptr)
+{
+  async_signal_handler *prev_ptr;
+
+  if (sighandler_list.first_handler == (*async_handler_ptr))
+    {
+      sighandler_list.first_handler = (*async_handler_ptr)->next_handler;
+      if (sighandler_list.first_handler == NULL)
+	sighandler_list.last_handler = NULL;
+    }
+  else
+    {
+      prev_ptr = sighandler_list.first_handler;
+      while (prev_ptr && prev_ptr->next_handler != (*async_handler_ptr))
+	prev_ptr = prev_ptr->next_handler;
+      gdb_assert (prev_ptr);
+      prev_ptr->next_handler = (*async_handler_ptr)->next_handler;
+      if (sighandler_list.last_handler == (*async_handler_ptr))
+	sighandler_list.last_handler = prev_ptr;
+    }
+  xfree ((*async_handler_ptr));
+  (*async_handler_ptr) = NULL;
+}
+
+/* Create an asynchronous event handler, allocating memory for it.
+   Return a pointer to the newly created handler.  PROC is the
+   function to call with CLIENT_DATA argument whenever the handler is
+   invoked.  */
+async_event_handler *
+create_async_event_handler (async_event_handler_func *proc,
+			    gdb_client_data client_data)
+{
+  async_event_handler *h;
+
+  h = XNEW (struct async_event_handler);
+  h->ready = 0;
+  h->next_handler = NULL;
+  h->proc = proc;
+  h->client_data = client_data;
+  if (async_event_handler_list.first_handler == NULL)
+    async_event_handler_list.first_handler = h;
+  else
+    async_event_handler_list.last_handler->next_handler = h;
+  async_event_handler_list.last_handler = h;
+  return h;
+}
+
+/* Mark the handler (ASYNC_HANDLER_PTR) as ready.  This information
+   will be used by gdb_do_one_event.  The caller will be whoever
+   created the event source, and wants to signal that the event is
+   ready to be handled.  */
+void
+mark_async_event_handler (async_event_handler *async_handler_ptr)
+{
+  async_handler_ptr->ready = 1;
+}
+
+/* See event-loop.h.  */
+
+void
+clear_async_event_handler (async_event_handler *async_handler_ptr)
+{
+  async_handler_ptr->ready = 0;
+}
+
+/* Check if asynchronous event handlers are ready, and call the
+   handler function for one that is.  */
+
+int
+check_async_event_handlers ()
+{
+  async_event_handler *async_handler_ptr;
+
+  for (async_handler_ptr = async_event_handler_list.first_handler;
+       async_handler_ptr != NULL;
+       async_handler_ptr = async_handler_ptr->next_handler)
+    {
+      if (async_handler_ptr->ready)
+	{
+	  async_handler_ptr->ready = 0;
+	  (*async_handler_ptr->proc) (async_handler_ptr->client_data);
+	  return 1;
+	}
+    }
+
+  return 0;
+}
+
+/* Delete an asynchronous handler (ASYNC_HANDLER_PTR).
+   Free the space allocated for it.  */
+void
+delete_async_event_handler (async_event_handler **async_handler_ptr)
+{
+  async_event_handler *prev_ptr;
+
+  if (async_event_handler_list.first_handler == *async_handler_ptr)
+    {
+      async_event_handler_list.first_handler
+	= (*async_handler_ptr)->next_handler;
+      if (async_event_handler_list.first_handler == NULL)
+	async_event_handler_list.last_handler = NULL;
+    }
+  else
+    {
+      prev_ptr = async_event_handler_list.first_handler;
+      while (prev_ptr && prev_ptr->next_handler != *async_handler_ptr)
+	prev_ptr = prev_ptr->next_handler;
+      gdb_assert (prev_ptr);
+      prev_ptr->next_handler = (*async_handler_ptr)->next_handler;
+      if (async_event_handler_list.last_handler == (*async_handler_ptr))
+	async_event_handler_list.last_handler = prev_ptr;
+    }
+  xfree (*async_handler_ptr);
+  *async_handler_ptr = NULL;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/async-event.h ./gdb/async-event.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/async-event.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/async-event.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,71 @@
+/* Async events for the GDB event loop.
+   Copyright (C) 1999-2021 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 ASYNC_EVENT_H
+#define ASYNC_EVENT_H
+
+#include "gdbsupport/event-loop.h"
+
+struct async_signal_handler;
+struct async_event_handler;
+typedef void (sig_handler_func) (gdb_client_data);
+typedef void (async_event_handler_func) (gdb_client_data);
+
+extern struct async_signal_handler *
+  create_async_signal_handler (sig_handler_func *proc, 
+			       gdb_client_data client_data);
+extern void delete_async_signal_handler (struct async_signal_handler **);
+
+/* Call the handler from HANDLER the next time through the event
+   loop.  */
+extern void mark_async_signal_handler (struct async_signal_handler *handler);
+
+/* Returns true if HANDLER is marked ready.  */
+
+extern int
+  async_signal_handler_is_marked (struct async_signal_handler *handler);
+
+/* Mark HANDLER as NOT ready.  */
+
+extern void clear_async_signal_handler (struct async_signal_handler *handler);
+
+/* Create and register an asynchronous event source in the event loop,
+   and set PROC as its callback.  CLIENT_DATA is passed as argument to
+   PROC upon its invocation.  Returns a pointer to an opaque structure
+   used to mark as ready and to later delete this event source from
+   the event loop.  */
+extern struct async_event_handler *
+  create_async_event_handler (async_event_handler_func *proc,
+			      gdb_client_data client_data);
+
+/* Remove the event source pointed by HANDLER_PTR created by
+   CREATE_ASYNC_EVENT_HANDLER from the event loop, and release it.  */
+extern void
+  delete_async_event_handler (struct async_event_handler **handler_ptr);
+
+/* Call the handler from HANDLER the next time through the event
+   loop.  */
+extern void mark_async_event_handler (struct async_event_handler *handler);
+
+/* Mark the handler (ASYNC_HANDLER_PTR) as NOT ready.  */
+
+extern void clear_async_event_handler (struct async_event_handler *handler);
+
+extern void initialize_async_signal_handlers (void);
+
+#endif /* ASYNC_EVENT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/auto-load.c ./gdb/auto-load.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/auto-load.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/auto-load.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB routines for supporting auto-loaded scripts.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -784,6 +784,13 @@ auto_load_objfile_script_1 (struct objfi
 					  "scripts-directory' path \"%s\".\n"),
 			    auto_load_dir);
 
+      /* Convert Windows file name from c:/dir/file to /c/dir/file.  */
+      if (HAS_DRIVE_SPEC (debugfile))
+	{
+	  debugfile_holder = STRIP_DRIVE_SPEC (debugfile);
+	  filename = std::string("\\") + debugfile[0] + debugfile_holder;
+	}
+
       for (const gdb::unique_xmalloc_ptr<char> &dir : vec)
 	{
 	  /* FILENAME is absolute, so we don't need a "/" here.  */
@@ -1460,15 +1467,6 @@ automatic loading of Python scripts."),
   return &retval;
 }
 
-/* Command "show auto-load" displays summary of all the current
-   "show auto-load " settings.  */
-
-static void
-show_auto_load_cmd (const char *args, int from_tty)
-{
-  cmd_show_list (*auto_load_show_cmdlist_get (), from_tty, "");
-}
-
 /* Initialize "show auto-load " commands prefix and return it.  */
 
 struct cmd_list_element **
@@ -1477,12 +1475,12 @@ auto_load_show_cmdlist_get (void)
   static struct cmd_list_element *retval;
 
   if (retval == NULL)
-    add_prefix_cmd ("auto-load", class_maintenance, show_auto_load_cmd, _("\
+    add_show_prefix_cmd ("auto-load", class_maintenance, _("\
 Show auto-loading specific settings.\n\
 Show configuration of various auto-load-specific variables such as\n\
 automatic loading of Python scripts."),
-		    &retval, "show auto-load ",
-		    0/*allow-unknown*/, &showlist);
+			 &retval, "show auto-load ",
+			 0/*allow-unknown*/, &showlist);
 
   return &retval;
 }
@@ -1530,8 +1528,9 @@ found and/or loaded."),
   return &retval;
 }
 
+void _initialize_auto_load ();
 void
-_initialize_auto_load (void)
+_initialize_auto_load ()
 {
   struct cmd_list_element *cmd;
   char *scripts_directory_help, *gdb_name_help, *python_name_help;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/auto-load.h ./gdb/auto-load.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/auto-load.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/auto-load.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB routines for supporting auto-loaded scripts.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/auxv.c ./gdb/auxv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/auxv.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/auxv.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Auxiliary vector support for GDB, the GNU debugger.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -248,34 +248,65 @@ memory_xfer_auxv (struct target_ops *ops
   return procfs_xfer_auxv (readbuf, writebuf, offset, len, xfered_len);
 }
 
-/* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
-   Return 0 if *READPTR is already at the end of the buffer.
-   Return -1 if there is insufficient buffer for a whole entry.
-   Return 1 if an entry was read into *TYPEP and *VALP.  */
-int
-default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
-		   gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
-{
-  const int sizeof_auxv_field = gdbarch_ptr_bit (target_gdbarch ())
-				/ TARGET_CHAR_BIT;
-  const enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
+/* This function compared to other auxv_parse functions: it takes the size of
+   the auxv type field as a parameter.  */
+
+static int
+generic_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr,
+		    gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp,
+		    int sizeof_auxv_type)
+{
+  struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
+  const int sizeof_auxv_val = TYPE_LENGTH (ptr_type);
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   gdb_byte *ptr = *readptr;
 
   if (endptr == ptr)
     return 0;
 
-  if (endptr - ptr < sizeof_auxv_field * 2)
+  if (endptr - ptr < 2 * sizeof_auxv_val)
     return -1;
 
-  *typep = extract_unsigned_integer (ptr, sizeof_auxv_field, byte_order);
-  ptr += sizeof_auxv_field;
-  *valp = extract_unsigned_integer (ptr, sizeof_auxv_field, byte_order);
-  ptr += sizeof_auxv_field;
+  *typep = extract_unsigned_integer (ptr, sizeof_auxv_type, byte_order);
+  /* Even if the auxv type takes less space than an auxv value, there is
+     padding after the type such that the value is aligned on a multiple of
+     its size (and this is why we advance by `sizeof_auxv_val` and not
+     `sizeof_auxv_type`).  */
+  ptr += sizeof_auxv_val;
+  *valp = extract_unsigned_integer (ptr, sizeof_auxv_val, byte_order);
+  ptr += sizeof_auxv_val;
 
   *readptr = ptr;
   return 1;
 }
 
+/* See auxv.h.  */
+
+int
+default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
+		    gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+{
+  struct gdbarch *gdbarch = target_gdbarch ();
+  struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
+  const int sizeof_auxv_type = TYPE_LENGTH (ptr_type);
+
+  return generic_auxv_parse (gdbarch, readptr, endptr, typep, valp,
+			     sizeof_auxv_type);
+}
+
+/* See auxv.h.  */
+
+int
+svr4_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr,
+		 gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+{
+  struct type *int_type = builtin_type (gdbarch)->builtin_int;
+  const int sizeof_auxv_type = TYPE_LENGTH (int_type);
+
+  return generic_auxv_parse (gdbarch, readptr, endptr, typep, valp,
+			     sizeof_auxv_type);
+}
+
 /* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
    Return 0 if *READPTR is already at the end of the buffer.
    Return -1 if there is insufficient buffer for a whole entry.
@@ -458,9 +489,21 @@ default_print_auxv_entry (struct gdbarch
 	   AUXV_FORMAT_HEX);
       TAG (AT_L1I_CACHESHAPE, _("L1 Instruction cache information"),
 	   AUXV_FORMAT_HEX);
+      TAG (AT_L1I_CACHESIZE, _("L1 Instruction cache size"), AUXV_FORMAT_HEX);
+      TAG (AT_L1I_CACHEGEOMETRY, _("L1 Instruction cache geometry"),
+	   AUXV_FORMAT_HEX);
       TAG (AT_L1D_CACHESHAPE, _("L1 Data cache information"), AUXV_FORMAT_HEX);
+      TAG (AT_L1D_CACHESIZE, _("L1 Data cache size"), AUXV_FORMAT_HEX);
+      TAG (AT_L1D_CACHEGEOMETRY, _("L1 Data cache geometry"),
+	   AUXV_FORMAT_HEX);
       TAG (AT_L2_CACHESHAPE, _("L2 cache information"), AUXV_FORMAT_HEX);
+      TAG (AT_L2_CACHESIZE, _("L2 cache size"), AUXV_FORMAT_HEX);
+      TAG (AT_L2_CACHEGEOMETRY, _("L2 cache geometry"), AUXV_FORMAT_HEX);
       TAG (AT_L3_CACHESHAPE, _("L3 cache information"), AUXV_FORMAT_HEX);
+      TAG (AT_L3_CACHESIZE, _("L3 cache size"), AUXV_FORMAT_HEX);
+      TAG (AT_L3_CACHEGEOMETRY, _("L3 cache geometry"), AUXV_FORMAT_HEX);
+      TAG (AT_MINSIGSTKSZ, _("Minimum stack size for signal delivery"),
+	   AUXV_FORMAT_HEX);
       TAG (AT_SUN_UID, _("Effective user ID"), AUXV_FORMAT_DEC);
       TAG (AT_SUN_RUID, _("Real user ID"), AUXV_FORMAT_DEC);
       TAG (AT_SUN_GID, _("Effective group ID"), AUXV_FORMAT_DEC);
@@ -546,8 +589,9 @@ info_auxv_command (const char *cmd, int
     }
 }
 
+void _initialize_auxv ();
 void
-_initialize_auxv (void)
+_initialize_auxv ()
 {
   add_info ("auxv", info_auxv_command,
 	    _("Display the inferior's auxiliary vector.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/auxv.h ./gdb/auxv.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/auxv.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/auxv.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Auxiliary vector support for GDB, the GNU debugger.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,12 +25,27 @@
 /* See "include/elf/common.h" for the definition of valid AT_* values.  */
 
 /* The default implementation of to_auxv_parse, used by the target
-   stack.  */
+   stack.
 
+   Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
+   Return 0 if *READPTR is already at the end of the buffer.
+   Return -1 if there is insufficient buffer for a whole entry.
+   Return 1 if an entry was read into *TYPEP and *VALP.  */
 extern int default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
 			       gdb_byte *endptr, CORE_ADDR *typep,
 			       CORE_ADDR *valp);
 
+/* The SVR4 psABI implementation of to_auxv_parse, that uses an int to
+   store the type rather than long as assumed by the default parser.
+
+   Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
+   Return 0 if *READPTR is already at the end of the buffer.
+   Return -1 if there is insufficient buffer for a whole entry.
+   Return 1 if an entry was read into *TYPEP and *VALP.  */
+extern int svr4_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr,
+			    gdb_byte *endptr, CORE_ADDR *typep,
+			    CORE_ADDR *valp);
+
 /* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
    Return 0 if *READPTR is already at the end of the buffer.
    Return -1 if there is insufficient buffer for a whole entry.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/avr-tdep.c ./gdb/avr-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/avr-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/avr-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Atmel AVR, for GDB.
 
-   Copyright (C) 1996-2020 Free Software Foundation, Inc.
+   Copyright (C) 1996-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -314,8 +314,8 @@ avr_address_to_pointer (struct gdbarch *
 			      avr_convert_iaddr_to_raw (addr));
     }
   /* Is it a code address?  */
-  else if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC
-	   || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_METHOD)
+  else if (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_FUNC
+	   || TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_METHOD)
     {
       /* A code pointer is word (16 bits) addressed.  We shift the address down
 	 by 1 bit to convert it to a pointer.  */
@@ -345,8 +345,8 @@ avr_pointer_to_address (struct gdbarch *
       return avr_make_iaddr (addr);
     }
   /* Is it a code address?  */
-  else if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC
-	   || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_METHOD
+  else if (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_FUNC
+	   || TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_METHOD
 	   || TYPE_CODE_SPACE (TYPE_TARGET_TYPE (type)))
     {
       /* A code pointer is word (16 bits) addressed so we shift it up
@@ -363,7 +363,10 @@ avr_integer_to_address (struct gdbarch *
 {
   ULONGEST addr = unpack_long (type, buf);
 
-  return avr_make_saddr (addr);
+  if (TYPE_DATA_SPACE (type))
+    return avr_make_saddr (addr);
+  else
+    return avr_make_iaddr (addr);
 }
 
 static CORE_ADDR
@@ -935,9 +938,9 @@ avr_return_value (struct gdbarch *gdbarc
      register holds the LSB.  */
   int lsb_reg;
 
-  if ((TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-       || TYPE_CODE (valtype) == TYPE_CODE_UNION
-       || TYPE_CODE (valtype) == TYPE_CODE_ARRAY)
+  if ((valtype->code () == TYPE_CODE_STRUCT
+       || valtype->code () == TYPE_CODE_UNION
+       || valtype->code () == TYPE_CODE_ARRAY)
       && TYPE_LENGTH (valtype) > 8)
     return RETURN_VALUE_STRUCT_CONVENTION;
 
@@ -1616,8 +1619,9 @@ avr_io_reg_read_command (const char *arg
     }
 }
 
+void _initialize_avr_tdep ();
 void
-_initialize_avr_tdep (void)
+_initialize_avr_tdep ()
 {
   register_gdbarch_init (bfd_arch_avr, avr_gdbarch_init);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ax_cxx_compile_stdcxx.m4 ./gdb/ax_cxx_compile_stdcxx.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ax_cxx_compile_stdcxx.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ax_cxx_compile_stdcxx.m4	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2020 Free Software Foundation, Inc.
+# Copyright (c) 2016-2021 Free Software Foundation, Inc.
 #
 # Originally based on the AX_CXX_COMPILE_STDCXX macro found at the url
 # below.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ax-gdb.c ./gdb/ax-gdb.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ax-gdb.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ax-gdb.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB-specific functions for operating on agent expressions.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -316,9 +316,9 @@ gen_trace_static_fields (struct agent_ex
 
   type = check_typedef (type);
 
-  for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
+  for (i = type->num_fields () - 1; i >= nbases; i--)
     {
-      if (field_is_static (&TYPE_FIELD (type, i)))
+      if (field_is_static (&type->field (i)))
 	{
 	  gen_static_field (ax, &value, type, i);
 	  if (value.optimized_out)
@@ -362,7 +362,7 @@ gen_traced_pop (struct agent_expr *ax, s
 {
   int string_trace = 0;
   if (ax->trace_string
-      && TYPE_CODE (value->type) == TYPE_CODE_PTR
+      && value->type->code () == TYPE_CODE_PTR
       && c_textual_element_type (check_typedef (TYPE_TARGET_TYPE (value->type)),
 				 's'))
     string_trace = 1;
@@ -429,8 +429,8 @@ gen_traced_pop (struct agent_expr *ax, s
 
   /* To trace C++ classes with static fields stored elsewhere.  */
   if (ax->tracing
-      && (TYPE_CODE (value->type) == TYPE_CODE_STRUCT
-	  || TYPE_CODE (value->type) == TYPE_CODE_UNION))
+      && (value->type->code () == TYPE_CODE_STRUCT
+	  || value->type->code () == TYPE_CODE_UNION))
     gen_trace_static_fields (ax, value->type);
 }
 
@@ -474,10 +474,10 @@ gen_fetch (struct agent_expr *ax, struct
       ax_trace_quick (ax, TYPE_LENGTH (type));
     }
 
-  if (TYPE_CODE (type) == TYPE_CODE_RANGE)
+  if (type->code () == TYPE_CODE_RANGE)
     type = TYPE_TARGET_TYPE (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_REF:
@@ -520,7 +520,7 @@ gen_fetch (struct agent_expr *ax, struct
 	 type.  Error out and give callers a chance to handle the failure
 	 gracefully.  */
       error (_("gen_fetch: Unsupported type code `%s'."),
-	     TYPE_NAME (type));
+	     type->name ());
     }
 }
 
@@ -775,10 +775,10 @@ require_rvalue (struct agent_expr *ax, s
   /* Only deal with scalars, structs and such may be too large
      to fit in a stack entry.  */
   value->type = check_typedef (value->type);
-  if (TYPE_CODE (value->type) == TYPE_CODE_ARRAY
-      || TYPE_CODE (value->type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (value->type) == TYPE_CODE_UNION
-      || TYPE_CODE (value->type) == TYPE_CODE_FUNC)
+  if (value->type->code () == TYPE_CODE_ARRAY
+      || value->type->code () == TYPE_CODE_STRUCT
+      || value->type->code () == TYPE_CODE_UNION
+      || value->type->code () == TYPE_CODE_FUNC)
     error (_("Value not scalar: cannot be an rvalue."));
 
   switch (value->kind)
@@ -831,7 +831,7 @@ gen_usual_unary (struct agent_expr *ax,
      the stack.  Should we tweak the type?  */
 
   /* Some types require special handling.  */
-  switch (TYPE_CODE (value->type))
+  switch (value->type->code ())
     {
       /* Functions get converted to a pointer to the function.  */
     case TYPE_CODE_FUNC:
@@ -943,8 +943,8 @@ gen_usual_arithmetic (struct agent_expr
 		      struct axs_value *value2)
 {
   /* Do the usual binary conversions.  */
-  if (TYPE_CODE (value1->type) == TYPE_CODE_INT
-      && TYPE_CODE (value2->type) == TYPE_CODE_INT)
+  if (value1->type->code () == TYPE_CODE_INT
+      && value2->type->code () == TYPE_CODE_INT)
     {
       /* The ANSI integral promotions seem to work this way: Order the
          integer types by size, and then by signedness: an n-bit
@@ -1003,7 +1003,7 @@ gen_cast (struct agent_expr *ax, struct
   /* Dereference typedefs.  */
   type = check_typedef (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_REF:
@@ -1070,7 +1070,7 @@ gen_ptradd (struct agent_expr *ax, struc
 	    struct axs_value *value1, struct axs_value *value2)
 {
   gdb_assert (pointer_type (value1->type));
-  gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT);
+  gdb_assert (value2->type->code () == TYPE_CODE_INT);
 
   gen_scale (ax, aop_mul, value1->type);
   ax_simple (ax, aop_add);
@@ -1086,7 +1086,7 @@ gen_ptrsub (struct agent_expr *ax, struc
 	    struct axs_value *value1, struct axs_value *value2)
 {
   gdb_assert (pointer_type (value1->type));
-  gdb_assert (TYPE_CODE (value2->type) == TYPE_CODE_INT);
+  gdb_assert (value2->type->code () == TYPE_CODE_INT);
 
   gen_scale (ax, aop_mul, value1->type);
   ax_simple (ax, aop_sub);
@@ -1158,8 +1158,8 @@ gen_binop (struct agent_expr *ax, struct
 	   int may_carry, const char *name)
 {
   /* We only handle INT op INT.  */
-  if ((TYPE_CODE (value1->type) != TYPE_CODE_INT)
-      || (TYPE_CODE (value2->type) != TYPE_CODE_INT))
+  if ((value1->type->code () != TYPE_CODE_INT)
+      || (value2->type->code () != TYPE_CODE_INT))
     error (_("Invalid combination of types in %s."), name);
 
   ax_simple (ax,
@@ -1175,8 +1175,8 @@ static void
 gen_logical_not (struct agent_expr *ax, struct axs_value *value,
 		 struct type *result_type)
 {
-  if (TYPE_CODE (value->type) != TYPE_CODE_INT
-      && TYPE_CODE (value->type) != TYPE_CODE_PTR)
+  if (value->type->code () != TYPE_CODE_INT
+      && value->type->code () != TYPE_CODE_PTR)
     error (_("Invalid type of operand to `!'."));
 
   ax_simple (ax, aop_log_not);
@@ -1187,7 +1187,7 @@ gen_logical_not (struct agent_expr *ax,
 static void
 gen_complement (struct agent_expr *ax, struct axs_value *value)
 {
-  if (TYPE_CODE (value->type) != TYPE_CODE_INT)
+  if (value->type->code () != TYPE_CODE_INT)
     error (_("Invalid type of operand to `~'."));
 
   ax_simple (ax, aop_bit_not);
@@ -1214,9 +1214,9 @@ gen_deref (struct axs_value *value)
      T" to "T", and mark the value as an lvalue in memory.  Leave it
      to the consumer to actually dereference it.  */
   value->type = check_typedef (TYPE_TARGET_TYPE (value->type));
-  if (TYPE_CODE (value->type) == TYPE_CODE_VOID)
+  if (value->type->code () == TYPE_CODE_VOID)
     error (_("Attempt to dereference a generic pointer."));
-  value->kind = ((TYPE_CODE (value->type) == TYPE_CODE_FUNC)
+  value->kind = ((value->type->code () == TYPE_CODE_FUNC)
 		 ? axs_rvalue : axs_lvalue_memory);
 }
 
@@ -1228,7 +1228,7 @@ gen_address_of (struct axs_value *value)
   /* Special case for taking the address of a function.  The ANSI
      standard describes this as a special case, too, so this
      arrangement is not without motivation.  */
-  if (TYPE_CODE (value->type) == TYPE_CODE_FUNC)
+  if (value->type->code () == TYPE_CODE_FUNC)
     /* The value's already an rvalue on the stack, so we just need to
        change the type.  */
     value->type = lookup_pointer_type (value->type);
@@ -1417,7 +1417,7 @@ gen_primitive_field (struct agent_expr *
 {
   /* Is this a bitfield?  */
   if (TYPE_FIELD_PACKED (type, fieldno))
-    gen_bitfield_ref (ax, value, TYPE_FIELD_TYPE (type, fieldno),
+    gen_bitfield_ref (ax, value, type->field (fieldno).type (),
 		      (offset * TARGET_CHAR_BIT
 		       + TYPE_FIELD_BITPOS (type, fieldno)),
 		      (offset * TARGET_CHAR_BIT
@@ -1428,7 +1428,7 @@ gen_primitive_field (struct agent_expr *
       gen_offset (ax, offset
 		  + TYPE_FIELD_BITPOS (type, fieldno) / TARGET_CHAR_BIT);
       value->kind = axs_lvalue_memory;
-      value->type = TYPE_FIELD_TYPE (type, fieldno);
+      value->type = type->field (fieldno).type ();
     }
 }
 
@@ -1444,7 +1444,7 @@ gen_struct_ref_recursive (struct agent_e
 
   type = check_typedef (type);
 
-  for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
+  for (i = type->num_fields () - 1; i >= nbases; i--)
     {
       const char *this_name = TYPE_FIELD_NAME (type, i);
 
@@ -1456,7 +1456,7 @@ gen_struct_ref_recursive (struct agent_e
 		 "this") will have been generated already, which will
 		 be unnecessary but not harmful if the static field is
 		 being handled as a global.  */
-	      if (field_is_static (&TYPE_FIELD (type, i)))
+	      if (field_is_static (&type->field (i)))
 		{
 		  gen_static_field (ax, value, type, i);
 		  if (value->optimized_out)
@@ -1518,8 +1518,8 @@ gen_struct_ref (struct agent_expr *ax, s
   type = check_typedef (value->type);
 
   /* This must yield a structure or a union.  */
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-      && TYPE_CODE (type) != TYPE_CODE_UNION)
+  if (type->code () != TYPE_CODE_STRUCT
+      && type->code () != TYPE_CODE_UNION)
     error (_("The left operand of `%s' is not a %s."),
 	   operator_name, operand_name);
 
@@ -1533,7 +1533,7 @@ gen_struct_ref (struct agent_expr *ax, s
   
   if (!found)
     error (_("Couldn't find member named `%s' in struct/union/class `%s'"),
-	   field, TYPE_NAME (type));
+	   field, type->name ());
 }
 
 static int
@@ -1551,7 +1551,7 @@ gen_static_field (struct agent_expr *ax,
     {
       ax_const_l (ax, TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
       value->kind = axs_lvalue_memory;
-      value->type = TYPE_FIELD_TYPE (type, fieldno);
+      value->type = type->field (fieldno).type ();
       value->optimized_out = 0;
     }
   else
@@ -1583,18 +1583,18 @@ gen_struct_elt_for_reference (struct age
   struct type *t = type;
   int i;
 
-  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
-      && TYPE_CODE (t) != TYPE_CODE_UNION)
+  if (t->code () != TYPE_CODE_STRUCT
+      && t->code () != TYPE_CODE_UNION)
     internal_error (__FILE__, __LINE__,
 		    _("non-aggregate type to gen_struct_elt_for_reference"));
 
-  for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
+  for (i = t->num_fields () - 1; i >= TYPE_N_BASECLASSES (t); i--)
     {
       const char *t_field_name = TYPE_FIELD_NAME (t, i);
 
       if (t_field_name && strcmp (t_field_name, fieldname) == 0)
 	{
-	  if (field_is_static (&TYPE_FIELD (t, i)))
+	  if (field_is_static (&t->field (i)))
 	    {
 	      gen_static_field (ax, value, t, i);
 	      if (value->optimized_out)
@@ -1629,7 +1629,7 @@ gen_namespace_elt (struct agent_expr *ax
 
   if (!found)
     error (_("No symbol \"%s\" in namespace \"%s\"."), 
-	   name, TYPE_NAME (curtype));
+	   name, curtype->name ());
 
   return found;
 }
@@ -1644,7 +1644,7 @@ static int
 gen_maybe_namespace_elt (struct agent_expr *ax, struct axs_value *value,
 			 const struct type *curtype, char *name)
 {
-  const char *namespace_name = TYPE_NAME (curtype);
+  const char *namespace_name = curtype->name ();
   struct block_symbol sym;
 
   sym = cp_lookup_symbol_namespace (namespace_name, name,
@@ -1668,7 +1668,7 @@ static int
 gen_aggregate_elt_ref (struct agent_expr *ax, struct axs_value *value,
 		       struct type *type, char *field)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
@@ -1716,7 +1716,7 @@ gen_repeat (struct expression *exp, unio
     if (!v)
       error (_("Right operand of `@' must be a "
 	       "constant, in agent expressions."));
-    if (TYPE_CODE (value_type (v)) != TYPE_CODE_INT)
+    if (value_type (v)->code () != TYPE_CODE_INT)
       error (_("Right operand of `@' must be an integer."));
     length = value_as_long (v);
     if (length <= 0)
@@ -1788,7 +1788,7 @@ gen_expr_for_cast (struct expression *ex
 	}
       else
 	gen_msym_var_ref (ax, value, (*pc)[2].msymbol, (*pc)[1].objfile);
-      if (TYPE_CODE (value->type) == TYPE_CODE_ERROR)
+      if (value->type->code () == TYPE_CODE_ERROR)
 	value->type = to_type;
       (*pc) += 4;
     }
@@ -2010,7 +2010,7 @@ gen_expr (struct expression *exp, union
 	error (_("`%s' has been optimized out, cannot use"),
 	       (*pc)[2].symbol->print_name ());
 
-      if (TYPE_CODE (value->type) == TYPE_CODE_ERROR)
+      if (value->type->code () == TYPE_CODE_ERROR)
 	error_unknown_type ((*pc)[2].symbol->print_name ());
 
       (*pc) += 4;
@@ -2019,7 +2019,7 @@ gen_expr (struct expression *exp, union
     case OP_VAR_MSYM_VALUE:
       gen_msym_var_ref (ax, value, (*pc)[2].msymbol, (*pc)[1].objfile);
 
-      if (TYPE_CODE (value->type) == TYPE_CODE_ERROR)
+      if (value->type->code () == TYPE_CODE_ERROR)
 	error_unknown_type ((*pc)[2].msymbol->linkage_name ());
 
       (*pc) += 4;
@@ -2230,7 +2230,7 @@ gen_expr (struct expression *exp, union
 
 	b = block_for_pc (ax->scope);
 	func = block_linkage_function (b);
-	lang = language_def (SYMBOL_LANGUAGE (func));
+	lang = language_def (func->language ());
 
 	sym = lookup_language_this (lang, b).symbol;
 	if (!sym)
@@ -2289,7 +2289,7 @@ gen_expr_binop_rest (struct expression *
   switch (op)
     {
     case BINOP_ADD:
-      if (TYPE_CODE (value1->type) == TYPE_CODE_INT
+      if (value1->type->code () == TYPE_CODE_INT
 	  && pointer_type (value2->type))
 	{
 	  /* Swap the values and proceed normally.  */
@@ -2297,7 +2297,7 @@ gen_expr_binop_rest (struct expression *
 	  gen_ptradd (ax, value, value2, value1);
 	}
       else if (pointer_type (value1->type)
-	       && TYPE_CODE (value2->type) == TYPE_CODE_INT)
+	       && value2->type->code () == TYPE_CODE_INT)
 	gen_ptradd (ax, value, value1, value2);
       else
 	gen_binop (ax, value, value1, value2,
@@ -2305,7 +2305,7 @@ gen_expr_binop_rest (struct expression *
       break;
     case BINOP_SUB:
       if (pointer_type (value1->type)
-	  && TYPE_CODE (value2->type) == TYPE_CODE_INT)
+	  && value2->type->code () == TYPE_CODE_INT)
 	gen_ptrsub (ax,value, value1, value2);
       else if (pointer_type (value1->type)
 	       && pointer_type (value2->type))
@@ -2351,12 +2351,12 @@ gen_expr_binop_rest (struct expression *
 	       an array or pointer type (like a plain int variable for
 	       example), then report this as an error.  */
 	    type = check_typedef (value1->type);
-	    if (TYPE_CODE (type) != TYPE_CODE_ARRAY
-		&& TYPE_CODE (type) != TYPE_CODE_PTR)
+	    if (type->code () != TYPE_CODE_ARRAY
+		&& type->code () != TYPE_CODE_PTR)
 	      {
-		if (TYPE_NAME (type))
+		if (type->name ())
 		  error (_("cannot subscript something of type `%s'"),
-			 TYPE_NAME (type));
+			 type->name ());
 		else
 		  error (_("cannot subscript requested type"));
 	      }
@@ -2743,8 +2743,9 @@ maint_agent_printf_command (const char *
 
 /* Initialization code.  */
 
+void _initialize_ax_gdb ();
 void
-_initialize_ax_gdb (void)
+_initialize_ax_gdb ()
 {
   add_cmd ("agent", class_maintenance, agent_command,
 	   _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ax-gdb.h ./gdb/ax-gdb.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ax-gdb.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ax-gdb.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* GDB-specific functions for operating on agent expressions
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ax-general.c ./gdb/ax-general.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ax-general.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ax-general.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Functions for manipulating expressions designed to be executed on the agent
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ax.h ./gdb/ax.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ax.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ax.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Definitions for expressions designed to be executed on the agent
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bcache.c ./gdb/bcache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bcache.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bcache.c	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
    Written by Fred Fish <fnf@cygnus.com>
    Rewritten by Jim Blandy <jimb@cygnus.com>
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -140,15 +140,15 @@ bcache::expand_hash_table ()
    returning an old entry.  */
 
 const void *
-bcache::insert (const void *addr, int length, int *added)
+bcache::insert (const void *addr, int length, bool *added)
 {
   unsigned long full_hash;
   unsigned short half_hash;
   int hash_index;
   struct bstring *s;
 
-  if (added)
-    *added = 0;
+  if (added != nullptr)
+    *added = false;
 
   /* Lazily initialize the obstack.  This can save quite a bit of
      memory in some cases.  */
@@ -203,8 +203,8 @@ bcache::insert (const void *addr, int le
     m_unique_size += length;
     m_structure_size += BSTRING_SIZE (length);
 
-    if (added)
-      *added = 1;
+    if (added != nullptr)
+      *added = true;
 
     return &newobj->d.data;
   }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bcache.h ./gdb/bcache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bcache.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bcache.h	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
    Written by Fred Fish <fnf@cygnus.com>
    Rewritten by Jim Blandy <jimb@cygnus.com>
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -161,12 +161,12 @@ struct bcache
   /* Find a copy of the LENGTH bytes at ADDR in BCACHE.  If BCACHE has
      never seen those bytes before, add a copy of them to BCACHE.  In
      either case, return a pointer to BCACHE's copy of that string.
-     Since the cached value is ment to be read-only, return a const
+     Since the cached value is meant to be read-only, return a const
      buffer.  If ADDED is not NULL, set *ADDED to true if the bytes
      were newly added to the cache, or to false if the bytes were
      found in the cache.  */
 
-  const void *insert (const void *addr, int length, int *added = nullptr);
+  const void *insert (const void *addr, int length, bool *added = nullptr);
 
   /* Print statistics on this bcache's memory usage and efficacity at
      eliminating duplication.  TYPE should be a string describing the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bfd-target.c ./gdb/bfd-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bfd-target.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bfd-target.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Very simple "bfd" target, for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -77,8 +77,7 @@ target_bfd::xfer_partial (target_object
 	return section_table_xfer_memory_partial (readbuf, writebuf,
 						  offset, len, xfered_len,
 						  m_table.sections,
-						  m_table.sections_end,
-						  NULL);
+						  m_table.sections_end);
       }
     default:
       return TARGET_XFER_E_IO;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bfd-target.h ./gdb/bfd-target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bfd-target.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bfd-target.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Very simple "bfd" target, for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bfin-linux-tdep.c ./gdb/bfin-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bfin-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bfin-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Analog Devices Blackfin processor, for GDB.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    Contributed by Analog Devices, Inc.
 
@@ -161,8 +161,9 @@ bfin_linux_init_abi (struct gdbarch_info
                                   bfin_linux_get_syscall_number);
 }
 
+void _initialize_bfin_linux_tdep ();
 void
-_initialize_bfin_linux_tdep (void)
+_initialize_bfin_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_bfin, 0, GDB_OSABI_LINUX,
                           bfin_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bfin-tdep.c ./gdb/bfin-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bfin-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bfin-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Analog Devices Blackfin processor, for GDB.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    Contributed by Analog Devices, Inc.
 
@@ -31,7 +31,7 @@
 #include "dis-asm.h"
 #include "sim-regno.h"
 #include "gdb/sim-bfin.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "symtab.h"
 #include "elf-bfd.h"
 #include "elf/bfin.h"
@@ -833,8 +833,9 @@ bfin_gdbarch_init (struct gdbarch_info i
   return gdbarch;
 }
 
+void _initialize_bfin_tdep ();
 void
-_initialize_bfin_tdep (void)
+_initialize_bfin_tdep ()
 {
   register_gdbarch_init (bfd_arch_bfin, bfin_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bfin-tdep.h ./gdb/bfin-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bfin-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bfin-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Analog Devices Blackfin processor, for GDB.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    Contributed by Analog Devices, Inc.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/block.c ./gdb/block.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/block.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/block.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Block-related functions for the GNU debugger, GDB.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -62,7 +62,7 @@ block_gdbarch (const struct block *block
   if (BLOCK_FUNCTION (block) != NULL)
     return symbol_arch (BLOCK_FUNCTION (block));
 
-  return get_objfile_arch (block_objfile (block));
+  return block_objfile (block)->arch ();
 }
 
 /* See block.h.  */
@@ -657,19 +657,18 @@ block_iter_match_next (const lookup_name
   return block_iter_match_step (iterator, name, 0);
 }
 
-/* Return true if symbol A is the best match possible for DOMAIN.  */
+/* See block.h.  */
 
-static bool
+bool
 best_symbol (struct symbol *a, const domain_enum domain)
 {
   return (SYMBOL_DOMAIN (a) == domain
 	  && SYMBOL_CLASS (a) != LOC_UNRESOLVED);
 }
 
-/* Return symbol B if it is a better match than symbol A for DOMAIN.
-   Otherwise return A.  */
+/* See block.h.  */
 
-static struct symbol *
+struct symbol *
 better_symbol (struct symbol *a, struct symbol *b, const domain_enum domain)
 {
   if (a == NULL)
@@ -729,7 +728,7 @@ block_lookup_symbol (const struct block
 	     STRUCT vs VAR domain symbols.  So if a matching symbol is found,
 	     make sure there is no "better" matching symbol, i.e., one with
 	     exactly the same domain.  PR 16253.  */
-	  if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
+	  if (symbol_matches_domain (sym->language (),
 				     SYMBOL_DOMAIN (sym), domain))
 	    other = better_symbol (other, sym, domain);
 	}
@@ -750,7 +749,7 @@ block_lookup_symbol (const struct block
 
       ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym)
 	{
-	  if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
+	  if (symbol_matches_domain (sym->language (),
 				     SYMBOL_DOMAIN (sym), domain))
 	    {
 	      sym_found = sym;
@@ -819,8 +818,7 @@ block_lookup_symbol_primary (const struc
 	 STRUCT vs VAR domain symbols.  So if a matching symbol is found,
 	 make sure there is no "better" matching symbol, i.e., one with
 	 exactly the same domain.  PR 16253.  */
-      if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
-				 SYMBOL_DOMAIN (sym), domain))
+      if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
 	other = better_symbol (other, sym, domain);
     }
 
@@ -847,8 +845,7 @@ block_find_symbol (const struct block *b
     {
       /* MATCHER is deliberately called second here so that it never sees
 	 a non-domain-matching symbol.  */
-      if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
-				 SYMBOL_DOMAIN (sym), domain)
+      if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain)
 	  && matcher (sym, data))
 	return sym;
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/blockframe.c ./gdb/blockframe.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/blockframe.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/blockframe.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Get info from stack frames; convert between frames, blocks,
    functions and pc values.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -191,7 +191,7 @@ find_pc_sect_containing_function (CORE_A
 
 static CORE_ADDR cache_pc_function_low = 0;
 static CORE_ADDR cache_pc_function_high = 0;
-static const char *cache_pc_function_name = 0;
+static const general_symbol_info *cache_pc_function_sym = nullptr;
 static struct obj_section *cache_pc_function_section = NULL;
 static const struct block *cache_pc_function_block = nullptr;
 
@@ -202,7 +202,7 @@ clear_pc_function_cache (void)
 {
   cache_pc_function_low = 0;
   cache_pc_function_high = 0;
-  cache_pc_function_name = (char *) 0;
+  cache_pc_function_sym = nullptr;
   cache_pc_function_section = NULL;
   cache_pc_function_block = nullptr;
 }
@@ -210,8 +210,10 @@ clear_pc_function_cache (void)
 /* See symtab.h.  */
 
 bool
-find_pc_partial_function (CORE_ADDR pc, const char **name, CORE_ADDR *address,
-			  CORE_ADDR *endaddr, const struct block **block)
+find_pc_partial_function_sym (CORE_ADDR pc,
+			      const struct general_symbol_info **sym,
+			      CORE_ADDR *address, CORE_ADDR *endaddr,
+			      const struct block **block)
 {
   struct obj_section *section;
   struct symbol *f;
@@ -236,19 +238,7 @@ find_pc_partial_function (CORE_ADDR pc,
     goto return_cached_value;
 
   msymbol = lookup_minimal_symbol_by_pc_section (mapped_pc, section);
-  for (objfile *objfile : current_program_space->objfiles ())
-    {
-      if (objfile->sf)
-	{
-	  compunit_symtab
-	    = objfile->sf->qf->find_pc_sect_compunit_symtab (objfile, msymbol,
-							     mapped_pc,
-							     section,
-							     0);
-	}
-      if (compunit_symtab != NULL)
-	break;
-    }
+  compunit_symtab = find_pc_sect_compunit_symtab (mapped_pc, section);
 
   if (compunit_symtab != NULL)
     {
@@ -269,7 +259,7 @@ find_pc_partial_function (CORE_ADDR pc,
 	{
 	  const struct block *b = SYMBOL_BLOCK_VALUE (f);
 
-	  cache_pc_function_name = f->linkage_name ();
+	  cache_pc_function_sym = f;
 	  cache_pc_function_section = section;
 	  cache_pc_function_block = b;
 
@@ -325,8 +315,8 @@ find_pc_partial_function (CORE_ADDR pc,
   if (msymbol.minsym == NULL)
     {
       /* No available symbol.  */
-      if (name != NULL)
-	*name = 0;
+      if (sym != nullptr)
+	*sym = 0;
       if (address != NULL)
 	*address = 0;
       if (endaddr != NULL)
@@ -337,7 +327,7 @@ find_pc_partial_function (CORE_ADDR pc,
     }
 
   cache_pc_function_low = BMSYMBOL_VALUE_ADDRESS (msymbol);
-  cache_pc_function_name = msymbol.minsym->linkage_name ();
+  cache_pc_function_sym = msymbol.minsym;
   cache_pc_function_section = section;
   cache_pc_function_high = minimal_symbol_upper_bound (msymbol);
   cache_pc_function_block = nullptr;
@@ -352,8 +342,8 @@ find_pc_partial_function (CORE_ADDR pc,
 	*address = cache_pc_function_low;
     }
 
-  if (name)
-    *name = cache_pc_function_name;
+  if (sym != nullptr)
+    *sym = cache_pc_function_sym;
 
   if (endaddr)
     {
@@ -380,6 +370,20 @@ find_pc_partial_function (CORE_ADDR pc,
 /* See symtab.h.  */
 
 bool
+find_pc_partial_function (CORE_ADDR pc, const char **name, CORE_ADDR *address,
+			  CORE_ADDR *endaddr, const struct block **block)
+{
+  const general_symbol_info *gsi;
+  bool r = find_pc_partial_function_sym (pc, &gsi, address, endaddr, block);
+  if (name != nullptr)
+    *name = r ? gsi->linkage_name () : nullptr;
+  return r;
+}
+
+
+/* See symtab.h.  */
+
+bool
 find_function_entry_range_from_pc (CORE_ADDR pc, const char **name,
 				   CORE_ADDR *address, CORE_ADDR *endaddr)
 {
@@ -441,11 +445,11 @@ find_gnu_ifunc_target_type (CORE_ADDR re
 
       /* If we found a pointer to function, then the resolved type
 	 is the type of the pointed-to function.  */
-      if (TYPE_CODE (resolver_ret_type) == TYPE_CODE_PTR)
+      if (resolver_ret_type->code () == TYPE_CODE_PTR)
 	{
 	  struct type *resolved_type
 	    = TYPE_TARGET_TYPE (resolver_ret_type);
-	  if (TYPE_CODE (check_typedef (resolved_type)) == TYPE_CODE_FUNC)
+	  if (check_typedef (resolved_type)->code () == TYPE_CODE_FUNC)
 	    return resolved_type;
 	}
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/block.h ./gdb/block.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/block.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/block.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code dealing with blocks for GDB.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -342,6 +342,16 @@ extern struct symbol *block_iter_match_f
 extern struct symbol *block_iter_match_next
   (const lookup_name_info &name, struct block_iterator *iterator);
 
+/* Return true if symbol A is the best match possible for DOMAIN.  */
+
+extern bool best_symbol (struct symbol *a, const domain_enum domain);
+
+/* Return symbol B if it is a better match than symbol A for DOMAIN.
+   Otherwise return A.  */
+
+extern struct symbol *better_symbol (struct symbol *a, struct symbol *b,
+				     const domain_enum domain);
+
 /* Search BLOCK for symbol NAME in DOMAIN.  */
 
 extern struct symbol *block_lookup_symbol (const struct block *block,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bpf-tdep.c ./gdb/bpf-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bpf-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/bpf-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,386 @@
+/* Target-dependent code for BPF.
+
+   Copyright (C) 2020-2021 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 "arch-utils.h"
+#include "dis-asm.h"
+#include "frame.h"
+#include "frame-unwind.h"
+#include "trad-frame.h"
+#include "symtab.h"
+#include "value.h"
+#include "gdbcmd.h"
+#include "breakpoint.h"
+#include "inferior.h"
+#include "regcache.h"
+#include "target.h"
+#include "dwarf2/frame.h"
+#include "osabi.h"
+#include "target-descriptions.h"
+#include "remote.h"
+
+
+/* eBPF registers.  */
+
+enum bpf_regnum
+{
+  BPF_R0_REGNUM,		/* return value */
+  BPF_R1_REGNUM,
+  BPF_R2_REGNUM,
+  BPF_R3_REGNUM,
+  BPF_R4_REGNUM,
+  BPF_R5_REGNUM,
+  BPF_R6_REGNUM,
+  BPF_R7_REGNUM,
+  BPF_R8_REGNUM,
+  BPF_R9_REGNUM,
+  BPF_R10_REGNUM,		/* sp */
+  BPF_PC_REGNUM,
+};
+
+#define BPF_NUM_REGS	(BPF_PC_REGNUM + 1)
+
+/* Target-dependent structure in gdbarch.  */
+struct gdbarch_tdep
+{
+};
+
+
+/* Internal debugging facilities.  */
+
+/* When this is set to non-zero debugging information will be
+   printed.  */
+
+static unsigned int bpf_debug_flag = 0;
+
+/* The show callback for 'show debug bpf'.  */
+
+static void
+show_bpf_debug (struct ui_file *file, int from_tty,
+	        struct cmd_list_element *c, const char *value)
+{
+  fprintf_filtered (file, _("Debugging of BPF is %s.\n"), value);
+}
+
+
+/* BPF registers.  */
+
+static const char *bpf_register_names[] =
+{
+  "r0",   "r1",  "r2",    "r3",   "r4",   "r5",   "r6",   "r7",
+  "r8",   "r9",  "r10",   "pc"
+};
+
+/* Return the name of register REGNUM.  */
+
+static const char *
+bpf_register_name (struct gdbarch *gdbarch, int reg)
+{
+  if (reg >= 0 && reg < BPF_NUM_REGS)
+    return bpf_register_names[reg];
+  return NULL;
+}
+
+/* Return the GDB type of register REGNUM.  */
+
+static struct type *
+bpf_register_type (struct gdbarch *gdbarch, int reg)
+{
+  if (reg == BPF_R10_REGNUM)
+    return builtin_type (gdbarch)->builtin_data_ptr;
+  else if (reg == BPF_PC_REGNUM)
+    return builtin_type (gdbarch)->builtin_func_ptr;
+  return builtin_type (gdbarch)->builtin_int64;
+}
+
+/* Return the GDB register number corresponding to DWARF's REG.  */
+
+static int
+bpf_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int reg)
+{
+  if (reg >= 0 && reg < BPF_NUM_REGS)
+    return reg;
+  return -1;
+}
+
+/* Implement the "print_insn" gdbarch method.  */
+
+static int
+bpf_gdb_print_insn (bfd_vma memaddr, disassemble_info *info)
+{
+  info->symbols = NULL;
+  return default_print_insn (memaddr, info);
+}
+
+
+/* Return PC of first real instruction of the function starting at
+   START_PC.  */
+
+static CORE_ADDR
+bpf_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
+{
+  fprintf_unfiltered (gdb_stdlog,
+		      "Skipping prologue: start_pc=%s\n",
+		      paddress (gdbarch, start_pc));
+  /* XXX: to be completed.  */
+  return start_pc + 0;
+}
+
+
+/* Frame unwinder.
+
+   XXX it is not clear how to unwind in eBPF, since the stack is not
+   guaranteed to be contiguous, and therefore no relative stack
+   addressing can be done in the callee in order to access the
+   caller's stack frame.  To explore with xBPF, which will relax this
+   restriction.  */
+
+/* Given THIS_FRAME, return its ID.  */
+
+static void
+bpf_frame_this_id (struct frame_info *this_frame,
+		   void **this_prologue_cache,
+		   struct frame_id *this_id)
+{
+  /* Note that THIS_ID defaults to the outermost frame if we don't set
+     anything here.  See frame.c:compute_frame_id.  */
+}
+
+/* Return the reason why we can't unwind past THIS_FRAME.  */
+
+static enum unwind_stop_reason
+bpf_frame_unwind_stop_reason (struct frame_info *this_frame,
+			      void **this_cache)
+{
+  return UNWIND_OUTERMOST;
+}
+
+/* Ask THIS_FRAME to unwind its register.  */
+
+static struct value *
+bpf_frame_prev_register (struct frame_info *this_frame,
+			 void **this_prologue_cache, int regnum)
+{
+  return frame_unwind_got_register (this_frame, regnum, regnum);
+}
+
+/* Frame unwinder machinery for BPF.  */
+
+static const struct frame_unwind bpf_frame_unwind =
+{
+  NORMAL_FRAME,
+  bpf_frame_unwind_stop_reason,
+  bpf_frame_this_id,
+  bpf_frame_prev_register,
+  NULL,
+  default_frame_sniffer
+};
+
+
+/* Breakpoints.  */
+
+/* Enum describing the different kinds of breakpoints.  We currently
+   just support one, implemented by the brkpt xbpf instruction.   */
+
+enum bpf_breakpoint_kinds
+{
+  BPF_BP_KIND_BRKPT = 0,
+};
+
+/* Implement the breakpoint_kind_from_pc gdbarch method.  */
+
+static int
+bpf_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *start_pc)
+{
+  /* We support just one kind of breakpoint.  */
+  return BPF_BP_KIND_BRKPT;
+}
+
+/* Implement the sw_breakpoint_from_kind gdbarch method.  */
+
+static const gdb_byte *
+bpf_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
+{
+  static unsigned char brkpt_insn[]
+    = {0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+  switch (kind)
+    {
+    case BPF_BP_KIND_BRKPT:
+      *size = 8;
+      return brkpt_insn;
+    default:
+      gdb_assert_not_reached ("unexpected BPF breakpoint kind");
+    }
+}
+
+
+/* Assuming THIS_FRAME is a dummy frame, return its frame ID.  */
+
+static struct frame_id
+bpf_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
+{
+  CORE_ADDR sp = get_frame_register_unsigned (this_frame,
+					      gdbarch_sp_regnum (gdbarch));
+  return frame_id_build (sp, get_frame_pc (this_frame));
+}
+
+/* Implement the push dummy call gdbarch callback.  */
+
+static CORE_ADDR
+bpf_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+		     struct regcache *regcache, CORE_ADDR bp_addr,
+		     int nargs, struct value **args, CORE_ADDR sp,
+		     function_call_return_method return_method,
+		     CORE_ADDR struct_addr)
+{
+  fprintf_unfiltered (gdb_stdlog, "Pushing dummy call: sp=%s\n",
+		      paddress (gdbarch, sp));
+  /* XXX writeme  */
+  return sp;
+}
+
+/* Extract a function return value of TYPE from REGCACHE,
+   and copy it into VALBUF.  */
+
+static void
+bpf_extract_return_value (struct type *type, struct regcache *regcache,
+			  gdb_byte *valbuf)
+{
+  int len = TYPE_LENGTH (type);
+  gdb_byte vbuf[8];
+
+  gdb_assert (len <= 8);
+  regcache->cooked_read (BPF_R0_REGNUM, vbuf);
+  memcpy (valbuf, vbuf + 8 - len, len);
+}
+
+/* Store the function return value of type TYPE from VALBUF into REGNAME.  */
+
+static void
+bpf_store_return_value (struct type *type, struct regcache *regcache,
+			const gdb_byte *valbuf)
+{
+  int len = TYPE_LENGTH (type);
+  gdb_byte vbuf[8];
+
+  gdb_assert (len <= 8);
+  memset (vbuf, 0, sizeof (vbuf));
+  memcpy (vbuf + 8 - len, valbuf, len);
+  regcache->cooked_write (BPF_R0_REGNUM, vbuf);
+}
+
+/* Handle function's return value.  */
+
+static enum return_value_convention
+bpf_return_value (struct gdbarch *gdbarch, struct value *function,
+		  struct type *type, struct regcache *regcache,
+		  gdb_byte *readbuf, const gdb_byte *writebuf)
+{
+  int len = TYPE_LENGTH (type);
+
+  if (len > 8)
+    return RETURN_VALUE_STRUCT_CONVENTION;
+
+  if (readbuf != NULL)
+    bpf_extract_return_value (type, regcache, readbuf);
+  if (writebuf != NULL)
+    bpf_store_return_value (type, regcache, writebuf);
+
+  return RETURN_VALUE_REGISTER_CONVENTION;
+}
+
+
+/* Initialize the current architecture based on INFO.  If possible, re-use an
+   architecture from ARCHES, which is a list of architectures already created
+   during this debugging session.  */
+
+static struct gdbarch *
+bpf_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+{
+  /* If there is already a candidate, use it.  */
+  arches = gdbarch_list_lookup_by_info (arches, &info);
+  if (arches != NULL)
+    return arches->gdbarch;
+
+  /* Allocate space for the new architecture.  */
+  struct gdbarch_tdep *tdep = XCNEW (struct gdbarch_tdep);
+  struct gdbarch *gdbarch = gdbarch_alloc (&info, tdep);
+
+  /* Information about registers, etc.  */
+  set_gdbarch_num_regs (gdbarch, BPF_NUM_REGS);
+  set_gdbarch_register_name (gdbarch, bpf_register_name);
+  set_gdbarch_register_type (gdbarch, bpf_register_type);
+
+  /* Register numbers of various important registers.  */
+  set_gdbarch_sp_regnum (gdbarch, BPF_R10_REGNUM);
+  set_gdbarch_pc_regnum (gdbarch, BPF_PC_REGNUM);
+
+  /* Map DWARF2 registers to GDB registers.  */
+  set_gdbarch_dwarf2_reg_to_regnum (gdbarch, bpf_dwarf2_reg_to_regnum);
+
+  /* Call dummy code.  */
+  set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
+  set_gdbarch_dummy_id (gdbarch, bpf_dummy_id);
+  set_gdbarch_push_dummy_call (gdbarch, bpf_push_dummy_call);
+
+  /* Returning results.  */
+  set_gdbarch_return_value (gdbarch, bpf_return_value);
+
+  /* Advance PC across function entry code.  */
+  set_gdbarch_skip_prologue (gdbarch, bpf_skip_prologue);
+
+  /* Stack grows downward.  */
+  set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
+
+  /* Breakpoint manipulation.  */
+  set_gdbarch_breakpoint_kind_from_pc (gdbarch, bpf_breakpoint_kind_from_pc);
+  set_gdbarch_sw_breakpoint_from_kind (gdbarch, bpf_sw_breakpoint_from_kind);
+
+  /* Frame handling.  */
+  set_gdbarch_frame_args_skip (gdbarch, 8);
+
+  /* Disassembly.  */
+  set_gdbarch_print_insn (gdbarch, bpf_gdb_print_insn);
+
+  /* Hook in ABI-specific overrides, if they have been registered.  */
+  gdbarch_init_osabi (info, gdbarch);
+
+  /* Install unwinders.  */
+  frame_unwind_append_unwinder (gdbarch, &bpf_frame_unwind);
+
+  return gdbarch;
+}
+
+void _initialize_bpf_tdep ();
+void
+_initialize_bpf_tdep (void)
+{
+  register_gdbarch_init (bfd_arch_bpf, bpf_gdbarch_init);
+
+  /* Add commands 'set/show debug bpf'.  */
+  add_setshow_zuinteger_cmd ("bpf", class_maintenance,
+			     &bpf_debug_flag,
+			     _("Set BPF debugging."),
+			     _("Show BPF debugging."),
+			     _("Enables BPF specific debugging output."),
+			     NULL,
+			     &show_bpf_debug,
+			     &setdebuglist, &showdebuglist);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/break-catch-sig.c ./gdb/break-catch-sig.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/break-catch-sig.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/break-catch-sig.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Everything about signal catchpoints, for GDB.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -181,12 +181,11 @@ static enum print_stop_action
 signal_catchpoint_print_it (bpstat bs)
 {
   struct breakpoint *b = bs->breakpoint_at;
-  ptid_t ptid;
   struct target_waitstatus last;
   const char *signal_name;
   struct ui_out *uiout = current_uiout;
 
-  get_last_target_status (&ptid, &last);
+  get_last_target_status (nullptr, nullptr, &last);
 
   signal_name = signal_to_name_or_int (last.value.sig);
 
@@ -425,8 +424,9 @@ initialize_signal_catchpoint_ops (void)
   ops->explains_signal = signal_catchpoint_explains_signal;
 }
 
+void _initialize_break_catch_sig ();
 void
-_initialize_break_catch_sig (void)
+_initialize_break_catch_sig ()
 {
   initialize_signal_catchpoint_ops ();
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/break-catch-syscall.c ./gdb/break-catch-syscall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/break-catch-syscall.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/break-catch-syscall.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Everything about syscall catchpoints, for GDB.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -182,12 +182,11 @@ print_it_catch_syscall (bpstat bs)
      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
      must print "called syscall" or "returned from syscall".  */
-  ptid_t ptid;
   struct target_waitstatus last;
   struct syscall s;
   struct gdbarch *gdbarch = bs->bp_location_at->gdbarch;
 
-  get_last_target_status (&ptid, &last);
+  get_last_target_status (nullptr, nullptr, &last);
 
   get_syscall_by_number (gdbarch, last.value.syscall_number, &s);
 
@@ -600,8 +599,9 @@ initialize_syscall_catchpoint_ops (void)
   ops->print_recreate = print_recreate_catch_syscall;
 }
 
+void _initialize_break_catch_syscall ();
 void
-_initialize_break_catch_syscall (void)
+_initialize_break_catch_syscall ()
 {
   initialize_syscall_catchpoint_ops ();
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/break-catch-throw.c ./gdb/break-catch-throw.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/break-catch-throw.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/break-catch-throw.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Everything about catch/throw catchpoints, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -156,26 +156,28 @@ check_status_exception_catchpoint (struc
   if (self->pattern == NULL)
     return;
 
+  const char *name = nullptr;
+  gdb::unique_xmalloc_ptr<char> canon;
   try
     {
       struct value *typeinfo_arg;
-      std::string canon;
 
       fetch_probe_arguments (NULL, &typeinfo_arg);
       type_name = cplus_typename_from_type_info (typeinfo_arg);
 
       canon = cp_canonicalize_string (type_name.c_str ());
-      if (!canon.empty ())
-	std::swap (type_name, canon);
+      name = (canon != nullptr
+	      ? canon.get ()
+	      : type_name.c_str ());
     }
   catch (const gdb_exception_error &e)
     {
       exception_print (gdb_stderr, e);
     }
 
-  if (!type_name.empty ())
+  if (name != nullptr)
     {
-      if (self->pattern->exec (type_name.c_str (), 0, NULL, 0) != 0)
+      if (self->pattern->exec (name, 0, NULL, 0) != 0)
 	bs->stop = 0;
     }
 }
@@ -532,8 +534,9 @@ initialize_throw_catchpoint_ops (void)
   ops->allocate_location = allocate_location_exception_catchpoint;
 }
 
+void _initialize_break_catch_throw ();
 void
-_initialize_break_catch_throw (void)
+_initialize_break_catch_throw ()
 {
   initialize_throw_catchpoint_ops ();
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/breakpoint.c ./gdb/breakpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/breakpoint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/breakpoint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Everything about breakpoints, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -89,7 +89,7 @@ static void map_breakpoint_numbers (cons
 static void breakpoint_re_set_default (struct breakpoint *);
 
 static void
-  create_sals_from_location_default (const struct event_location *location,
+  create_sals_from_location_default (struct event_location *location,
 				     struct linespec_result *canonical,
 				     enum bptype type_wanted);
 
@@ -104,7 +104,7 @@ static void create_breakpoints_sal_defau
 					    int, int, int, unsigned);
 
 static std::vector<symtab_and_line> decode_location_default
-  (struct breakpoint *b, const struct event_location *location,
+  (struct breakpoint *b, struct event_location *location,
    struct program_space *search_pspace);
 
 static int can_use_hardware_watchpoint
@@ -144,6 +144,10 @@ static void describe_other_breakpoints (
 static int watchpoint_locations_match (struct bp_location *loc1,
 				       struct bp_location *loc2);
 
+static int breakpoint_locations_match (struct bp_location *loc1,
+				       struct bp_location *loc2,
+				       bool sw_hw_bps_match = false);
+
 static int breakpoint_location_address_match (struct bp_location *bl,
 					      const struct address_space *aspace,
 					      CORE_ADDR addr);
@@ -389,7 +393,7 @@ breakpoints_should_be_inserted_now (void
 	 no threads under GDB's control yet.  */
       return 1;
     }
-  else if (target_has_execution)
+  else
     {
       if (always_inserted_mode)
 	{
@@ -398,8 +402,10 @@ breakpoints_should_be_inserted_now (void
 	  return 1;
 	}
 
-      if (threads_are_executing ())
-	return 1;
+      for (inferior *inf : all_inferiors ())
+	if (inf->has_execution ()
+	    && threads_are_executing (inf->process_target ()))
+	  return 1;
 
       /* Don't remove breakpoints yet if, even though all threads are
 	 stopped, we still have events to process.  */
@@ -828,68 +834,75 @@ void
 set_breakpoint_condition (struct breakpoint *b, const char *exp,
 			  int from_tty)
 {
-  xfree (b->cond_string);
-  b->cond_string = NULL;
-
-  if (is_watchpoint (b))
-    {
-      struct watchpoint *w = (struct watchpoint *) b;
-
-      w->cond_exp.reset ();
-    }
-  else
+  if (*exp == 0)
     {
-      struct bp_location *loc;
+      xfree (b->cond_string);
+      b->cond_string = nullptr;
 
-      for (loc = b->loc; loc; loc = loc->next)
+      if (is_watchpoint (b))
+	static_cast<watchpoint *> (b)->cond_exp.reset ();
+      else
 	{
-	  loc->cond.reset ();
+	  for (bp_location *loc = b->loc; loc != nullptr; loc = loc->next)
+	    {
+	      loc->cond.reset ();
 
-	  /* No need to free the condition agent expression
-	     bytecode (if we have one).  We will handle this
-	     when we go through update_global_location_list.  */
+	      /* No need to free the condition agent expression
+		 bytecode (if we have one).  We will handle this
+		 when we go through update_global_location_list.  */
+	    }
 	}
-    }
 
-  if (*exp == 0)
-    {
       if (from_tty)
 	printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
     }
   else
     {
-      const char *arg = exp;
-
-      /* I don't know if it matters whether this is the string the user
-	 typed in or the decompiled expression.  */
-      b->cond_string = xstrdup (arg);
-      b->condition_not_parsed = 0;
-
       if (is_watchpoint (b))
 	{
-	  struct watchpoint *w = (struct watchpoint *) b;
-
 	  innermost_block_tracker tracker;
-	  arg = exp;
-	  w->cond_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
-	  if (*arg)
+	  const char *arg = exp;
+	  expression_up new_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
+	  if (*arg != 0)
 	    error (_("Junk at end of expression"));
+	  watchpoint *w = static_cast<watchpoint *> (b);
+	  w->cond_exp = std::move (new_exp);
 	  w->cond_exp_valid_block = tracker.block ();
 	}
       else
 	{
-	  struct bp_location *loc;
+	  /* Parse and set condition expressions.  We make two passes.
+	     In the first, we parse the condition string to see if it
+	     is valid in all locations.  If so, the condition would be
+	     accepted.  So we go ahead and set the locations'
+	     conditions.  In case a failing case is found, we throw
+	     the error and the condition string will be rejected.
+	     This two-pass approach is taken to avoid setting the
+	     state of locations in case of a reject.  */
+	  for (bp_location *loc = b->loc; loc != nullptr; loc = loc->next)
+	    {
+	      const char *arg = exp;
+	      parse_exp_1 (&arg, loc->address,
+			   block_for_pc (loc->address), 0);
+	      if (*arg != 0)
+		error (_("Junk at end of expression"));
+	    }
 
-	  for (loc = b->loc; loc; loc = loc->next)
+	  /* If we reach here, the condition is valid at all locations.  */
+	  for (bp_location *loc = b->loc; loc != nullptr; loc = loc->next)
 	    {
-	      arg = exp;
+	      const char *arg = exp;
 	      loc->cond =
 		parse_exp_1 (&arg, loc->address,
 			     block_for_pc (loc->address), 0);
-	      if (*arg)
-		error (_("Junk at end of expression"));
 	    }
 	}
+
+      /* We know that the new condition parsed successfully.  The
+	 condition string of the breakpoint can be safely updated.  */
+      xfree (b->cond_string);
+      b->cond_string = xstrdup (exp);
+      b->condition_not_parsed = 0;
     }
   mark_breakpoint_modified (b);
 
@@ -1216,13 +1229,23 @@ commands_command_1 (const char *arg, int
 
   if (arg == NULL || !*arg)
     {
+      /* Argument not explicitly given.  Synthesize it.  */
       if (breakpoint_count - prev_breakpoint_count > 1)
 	new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
 				 breakpoint_count);
       else if (breakpoint_count > 0)
 	new_arg = string_printf ("%d", breakpoint_count);
-      arg = new_arg.c_str ();
     }
+  else
+    {
+      /* Create a copy of ARG.  This is needed because the "commands"
+	 command may be coming from a script.  In that case, the read
+	 line buffer is going to be overwritten in the lambda of
+	 'map_breakpoint_numbers' below when reading the next line
+	 before we are are done parsing the breakpoint numbers.  */
+      new_arg = arg;
+    }
+  arg = new_arg.c_str ();
 
   map_breakpoint_numbers
     (arg, [&] (breakpoint *b)
@@ -1804,8 +1827,8 @@ update_watchpoint (struct watchpoint *b,
 		 for it explicitly, never if they just happen to
 		 appear in the middle of some value chain.  */
 	      if (v == result
-		  || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
-		      && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
+		  || (vtype->code () != TYPE_CODE_STRUCT
+		      && vtype->code () != TYPE_CODE_ARRAY))
 		{
 		  CORE_ADDR addr;
 		  enum target_hw_bp_type type;
@@ -2022,13 +2045,8 @@ should_be_inserted (struct bp_location *
       && !(bl->owner->type == bp_single_step
 	   && thread_is_stepping_over_breakpoint (bl->owner->thread)))
     {
-      if (debug_infrun)
-	{
-	  fprintf_unfiltered (gdb_stdlog,
-			      "infrun: skipping breakpoint: "
-			      "stepping past insn at: %s\n",
-			      paddress (bl->gdbarch, bl->address));
-	}
+      infrun_debug_printf ("skipping breakpoint: stepping past insn at: %s",
+			   paddress (bl->gdbarch, bl->address));
       return 0;
     }
 
@@ -2037,14 +2055,9 @@ should_be_inserted (struct bp_location *
   if ((bl->loc_type == bp_loc_hardware_watchpoint)
       && stepping_past_nonsteppable_watchpoint ())
     {
-      if (debug_infrun)
-	{
-	  fprintf_unfiltered (gdb_stdlog,
-			      "infrun: stepping past non-steppable watchpoint. "
-			      "skipping watchpoint at %s:%d\n",
-			      paddress (bl->gdbarch, bl->address),
-			      bl->length);
-	}
+      infrun_debug_printf ("stepping past non-steppable watchpoint. "
+			   "skipping watchpoint at %s:%d\n",
+			   paddress (bl->gdbarch, bl->address), bl->length);
       return 0;
     }
 
@@ -2123,10 +2136,14 @@ build_target_condition_list (struct bp_l
     return;
 
   /* Do a first pass to check for locations with no assigned
-     conditions or conditions that fail to parse to a valid agent expression
-     bytecode.  If any of these happen, then it's no use to send conditions
-     to the target since this location will always trigger and generate a
-     response back to GDB.  */
+     conditions or conditions that fail to parse to a valid agent
+     expression bytecode.  If any of these happen, then it's no use to
+     send conditions to the target since this location will always
+     trigger and generate a response back to GDB.  Note we consider
+     all locations at the same address irrespective of type, i.e.,
+     even if the locations aren't considered duplicates (e.g.,
+     software breakpoint and hardware breakpoint at the same
+     address).  */
   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
     {
       loc = (*loc2p);
@@ -2175,8 +2192,12 @@ build_target_condition_list (struct bp_l
 	}
     }
 
-  /* No NULL conditions or failed bytecode generation.  Build a condition list
-     for this location's address.  */
+  /* No NULL conditions or failed bytecode generation.  Build a
+     condition list for this location's address.  If we have software
+     and hardware locations at the same address, they aren't
+     considered duplicates, but we still marge all the conditions
+     anyway, as it's simpler, and doesn't really make a practical
+     difference.  */
   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
     {
       loc = (*loc2p);
@@ -2294,9 +2315,9 @@ build_target_command_list (struct bp_loc
   if (dprintf_style != dprintf_style_agent)
     return;
 
-  /* For now, if we have any duplicate location that isn't a dprintf,
-     don't install the target-side commands, as that would make the
-     breakpoint not be reported to the core, and we'd lose
+  /* For now, if we have any location at the same address that isn't a
+     dprintf, don't install the target-side commands, as that would
+     make the breakpoint not be reported to the core, and we'd lose
      control.  */
   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
     {
@@ -2358,12 +2379,19 @@ build_target_command_list (struct bp_loc
 	}
     }
 
-  /* No NULL commands or failed bytecode generation.  Build a command list
-     for this location's address.  */
+  /* No NULL commands or failed bytecode generation.  Build a command
+     list for all duplicate locations at this location's address.
+     Note that here we must care for whether the breakpoint location
+     types are considered duplicates, otherwise, say, if we have a
+     software and hardware location at the same address, the target
+     could end up running the commands twice.  For the moment, we only
+     support targets-side commands with dprintf, but it doesn't hurt
+     to be pedantically correct in case that changes.  */
   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
     {
       loc = (*loc2p);
-      if (loc->owner->extra_string
+      if (breakpoint_locations_match (bl, loc)
+	  && loc->owner->extra_string
 	  && is_breakpoint (loc->owner)
 	  && loc->pspace->num == bl->pspace->num
 	  && loc->owner->enable_state == bp_enabled
@@ -2449,72 +2477,31 @@ insert_bp_location (struct bp_location *
       bl->needs_update = 0;
     }
 
+  /* If "set breakpoint auto-hw" is "on" and a software breakpoint was
+     set at a read-only address, then a breakpoint location will have
+     been changed to hardware breakpoint before we get here.  If it is
+     "off" however, error out before actually trying to insert the
+     breakpoint, with a nicer error message.  */
   if (bl->loc_type == bp_loc_software_breakpoint
-      || bl->loc_type == bp_loc_hardware_breakpoint)
+      && !automatic_hardware_breakpoints)
     {
-      if (bl->owner->type != bp_hardware_breakpoint)
-	{
-	  /* If the explicitly specified breakpoint type
-	     is not hardware breakpoint, check the memory map to see
-	     if the breakpoint address is in read only memory or not.
-
-	     Two important cases are:
-	     - location type is not hardware breakpoint, memory
-	     is readonly.  We change the type of the location to
-	     hardware breakpoint.
-	     - location type is hardware breakpoint, memory is
-	     read-write.  This means we've previously made the
-	     location hardware one, but then the memory map changed,
-	     so we undo.
-	     
-	     When breakpoints are removed, remove_breakpoints will use
-	     location types we've just set here, the only possible
-	     problem is that memory map has changed during running
-	     program, but it's not going to work anyway with current
-	     gdb.  */
-	  struct mem_region *mr 
-	    = lookup_mem_region (bl->target_info.reqstd_address);
-	  
-	  if (mr)
-	    {
-	      if (automatic_hardware_breakpoints)
-		{
-		  enum bp_loc_type new_type;
-		  
-		  if (mr->attrib.mode != MEM_RW)
-		    new_type = bp_loc_hardware_breakpoint;
-		  else 
-		    new_type = bp_loc_software_breakpoint;
-		  
-		  if (new_type != bl->loc_type)
-		    {
-		      static int said = 0;
+      mem_region *mr = lookup_mem_region (bl->address);
 
-		      bl->loc_type = new_type;
-		      if (!said)
-			{
-			  fprintf_filtered (gdb_stdout,
-					    _("Note: automatically using "
-					      "hardware breakpoints for "
-					      "read-only addresses.\n"));
-			  said = 1;
-			}
-		    }
-		}
-	      else if (bl->loc_type == bp_loc_software_breakpoint
-		       && mr->attrib.mode != MEM_RW)
-		{
-		  fprintf_unfiltered (tmp_error_stream,
-				      _("Cannot insert breakpoint %d.\n"
-					"Cannot set software breakpoint "
-					"at read-only address %s\n"),
-				      bl->owner->number,
-				      paddress (bl->gdbarch, bl->address));
-		  return 1;
-		}
-	    }
+      if (mr != nullptr && mr->attrib.mode != MEM_RW)
+	{
+	  fprintf_unfiltered (tmp_error_stream,
+			      _("Cannot insert breakpoint %d.\n"
+				"Cannot set software breakpoint "
+				"at read-only address %s\n"),
+			      bl->owner->number,
+			      paddress (bl->gdbarch, bl->address));
+	  return 1;
 	}
-        
+    }
+
+  if (bl->loc_type == bp_loc_software_breakpoint
+      || bl->loc_type == bp_loc_hardware_breakpoint)
+    {
       /* First check to see if we have to handle an overlay.  */
       if (overlay_debugging == ovly_off
 	  || bl->section == NULL
@@ -2828,7 +2815,11 @@ insert_breakpoints (void)
 
   /* Updating watchpoints creates new locations, so update the global
      location list.  Explicitly tell ugll to insert locations and
-     ignore breakpoints_always_inserted_mode.  */
+     ignore breakpoints_always_inserted_mode.  Also,
+     update_global_location_list tries to "upgrade" software
+     breakpoints to hardware breakpoints to handle "set breakpoint
+     auto-hw", so we need to call it even if we don't have new
+     locations.  */
   update_global_location_list (UGLL_INSERT);
 }
 
@@ -2887,7 +2878,7 @@ update_inserted_breakpoint_locations (vo
 	 if we aren't attached to any process yet, we should still
 	 insert breakpoints.  */
       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
-	  && inferior_ptid == null_ptid)
+	  && (inferior_ptid == null_ptid || !target_has_execution))
 	continue;
 
       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
@@ -2943,7 +2934,7 @@ insert_breakpoint_locations (void)
 	 if we aren't attached to any process yet, we should still
 	 insert breakpoints.  */
       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
-	  && inferior_ptid == null_ptid)
+	  && (inferior_ptid == null_ptid || !target_has_execution))
 	continue;
 
       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
@@ -3199,7 +3190,7 @@ create_overlay_event_breakpoint (void)
 	}
 
       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
-      b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
+      b = create_internal_breakpoint (objfile->arch (), addr,
                                       bp_overlay_event,
 				      &internal_breakpoint_ops);
       initialize_explicit_location (&explicit_loc);
@@ -3222,241 +3213,272 @@ create_overlay_event_breakpoint (void)
 static void
 create_longjmp_master_breakpoint (void)
 {
-  struct program_space *pspace;
-
   scoped_restore_current_program_space restore_pspace;
 
-  ALL_PSPACES (pspace)
-  {
-    set_current_program_space (pspace);
+  for (struct program_space *pspace : program_spaces)
+    {
+      set_current_program_space (pspace);
 
-    for (objfile *objfile : current_program_space->objfiles ())
-      {
-	int i;
-	struct gdbarch *gdbarch;
-	struct breakpoint_objfile_data *bp_objfile_data;
+      for (objfile *objfile : current_program_space->objfiles ())
+	{
+	  int i;
+	  struct gdbarch *gdbarch;
+	  struct breakpoint_objfile_data *bp_objfile_data;
 
-	gdbarch = get_objfile_arch (objfile);
+	  gdbarch = objfile->arch ();
 
-	bp_objfile_data = get_breakpoint_objfile_data (objfile);
+	  bp_objfile_data = get_breakpoint_objfile_data (objfile);
 
-	if (!bp_objfile_data->longjmp_searched)
-	  {
-	    std::vector<probe *> ret
-	      = find_probes_in_objfile (objfile, "libc", "longjmp");
+	  if (!bp_objfile_data->longjmp_searched)
+	    {
+	      std::vector<probe *> ret
+		= find_probes_in_objfile (objfile, "libc", "longjmp");
 
-	    if (!ret.empty ())
-	      {
-		/* We are only interested in checking one element.  */
-		probe *p = ret[0];
+	      if (!ret.empty ())
+		{
+		  /* We are only interested in checking one element.  */
+		  probe *p = ret[0];
 
-		if (!p->can_evaluate_arguments ())
-		  {
-		    /* We cannot use the probe interface here, because it does
-		       not know how to evaluate arguments.  */
-		    ret.clear ();
-		  }
-	      }
-	    bp_objfile_data->longjmp_probes = ret;
-	    bp_objfile_data->longjmp_searched = 1;
-	  }
+		  if (!p->can_evaluate_arguments ())
+		    {
+		      /* We cannot use the probe interface here,
+			 because it does not know how to evaluate
+			 arguments.  */
+		      ret.clear ();
+		    }
+		}
+	      bp_objfile_data->longjmp_probes = ret;
+	      bp_objfile_data->longjmp_searched = 1;
+	    }
 
-	if (!bp_objfile_data->longjmp_probes.empty ())
-	  {
-	    for (probe *p : bp_objfile_data->longjmp_probes)
-	      {
-		struct breakpoint *b;
+	  if (!bp_objfile_data->longjmp_probes.empty ())
+	    {
+	      for (probe *p : bp_objfile_data->longjmp_probes)
+		{
+		  struct breakpoint *b;
 
-		b = create_internal_breakpoint (gdbarch,
-						p->get_relocated_address (objfile),
-						bp_longjmp_master,
-						&internal_breakpoint_ops);
-		b->location = new_probe_location ("-probe-stap libc:longjmp");
-		b->enable_state = bp_disabled;
-	      }
+		  b = create_internal_breakpoint (gdbarch,
+						  p->get_relocated_address (objfile),
+						  bp_longjmp_master,
+						  &internal_breakpoint_ops);
+		  b->location = new_probe_location ("-probe-stap libc:longjmp");
+		  b->enable_state = bp_disabled;
+		}
 
-	    continue;
-	  }
+	      continue;
+	    }
 
-	if (!gdbarch_get_longjmp_target_p (gdbarch))
-	  continue;
+	  if (!gdbarch_get_longjmp_target_p (gdbarch))
+	    continue;
 
-	for (i = 0; i < NUM_LONGJMP_NAMES; i++)
-	  {
-	    struct breakpoint *b;
-	    const char *func_name;
-	    CORE_ADDR addr;
-	    struct explicit_location explicit_loc;
+	  for (i = 0; i < NUM_LONGJMP_NAMES; i++)
+	    {
+	      struct breakpoint *b;
+	      const char *func_name;
+	      CORE_ADDR addr;
+	      struct explicit_location explicit_loc;
 
-	    if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
-	      continue;
+	      if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
+		continue;
 
-	    func_name = longjmp_names[i];
-	    if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
-	      {
-		struct bound_minimal_symbol m;
+	      func_name = longjmp_names[i];
+	      if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
+		{
+		  struct bound_minimal_symbol m;
 
-		m = lookup_minimal_symbol_text (func_name, objfile);
-		if (m.minsym == NULL)
-		  {
-		    /* Prevent future lookups in this objfile.  */
-		    bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
-		    continue;
-		  }
-		bp_objfile_data->longjmp_msym[i] = m;
-	      }
+		  m = lookup_minimal_symbol_text (func_name, objfile);
+		  if (m.minsym == NULL)
+		    {
+		      /* Prevent future lookups in this objfile.  */
+		      bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
+		      continue;
+		    }
+		  bp_objfile_data->longjmp_msym[i] = m;
+		}
 
-	    addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
-	    b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
-					    &internal_breakpoint_ops);
-	    initialize_explicit_location (&explicit_loc);
-	    explicit_loc.function_name = ASTRDUP (func_name);
-	    b->location = new_explicit_location (&explicit_loc);
-	    b->enable_state = bp_disabled;
-	  }
-      }
-  }
+	      addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
+	      b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
+					      &internal_breakpoint_ops);
+	      initialize_explicit_location (&explicit_loc);
+	      explicit_loc.function_name = ASTRDUP (func_name);
+	      b->location = new_explicit_location (&explicit_loc);
+	      b->enable_state = bp_disabled;
+	    }
+	}
+    }
 }
 
 /* Create a master std::terminate breakpoint.  */
 static void
 create_std_terminate_master_breakpoint (void)
 {
-  struct program_space *pspace;
   const char *const func_name = "std::terminate()";
 
   scoped_restore_current_program_space restore_pspace;
 
-  ALL_PSPACES (pspace)
-  {
-    CORE_ADDR addr;
+  for (struct program_space *pspace : program_spaces)
+    {
+      CORE_ADDR addr;
 
-    set_current_program_space (pspace);
+      set_current_program_space (pspace);
 
-    for (objfile *objfile : current_program_space->objfiles ())
-      {
-	struct breakpoint *b;
-	struct breakpoint_objfile_data *bp_objfile_data;
-	struct explicit_location explicit_loc;
+      for (objfile *objfile : current_program_space->objfiles ())
+	{
+	  struct breakpoint *b;
+	  struct breakpoint_objfile_data *bp_objfile_data;
+	  struct explicit_location explicit_loc;
 
-	bp_objfile_data = get_breakpoint_objfile_data (objfile);
+	  bp_objfile_data = get_breakpoint_objfile_data (objfile);
 
-	if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
-	  continue;
+	  if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
+	    continue;
 
-	if (bp_objfile_data->terminate_msym.minsym == NULL)
-	  {
-	    struct bound_minimal_symbol m;
+	  if (bp_objfile_data->terminate_msym.minsym == NULL)
+	    {
+	      struct bound_minimal_symbol m;
 
-	    m = lookup_minimal_symbol (func_name, NULL, objfile);
-	    if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
-				     && MSYMBOL_TYPE (m.minsym) != mst_file_text))
-	      {
-		/* Prevent future lookups in this objfile.  */
-		bp_objfile_data->terminate_msym.minsym = &msym_not_found;
-		continue;
-	      }
-	    bp_objfile_data->terminate_msym = m;
-	  }
+	      m = lookup_minimal_symbol (func_name, NULL, objfile);
+	      if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
+				       && MSYMBOL_TYPE (m.minsym) != mst_file_text))
+		{
+		  /* Prevent future lookups in this objfile.  */
+		  bp_objfile_data->terminate_msym.minsym = &msym_not_found;
+		  continue;
+		}
+	      bp_objfile_data->terminate_msym = m;
+	    }
 
-	addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
-	b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
-					bp_std_terminate_master,
-					&internal_breakpoint_ops);
-	initialize_explicit_location (&explicit_loc);
-	explicit_loc.function_name = ASTRDUP (func_name);
-	b->location = new_explicit_location (&explicit_loc);
-	b->enable_state = bp_disabled;
-      }
-  }
+	  addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
+	  b = create_internal_breakpoint (objfile->arch (), addr,
+					  bp_std_terminate_master,
+					  &internal_breakpoint_ops);
+	  initialize_explicit_location (&explicit_loc);
+	  explicit_loc.function_name = ASTRDUP (func_name);
+	  b->location = new_explicit_location (&explicit_loc);
+	  b->enable_state = bp_disabled;
+	}
+    }
 }
 
-/* Install a master breakpoint on the unwinder's debug hook.  */
+/* Install a master breakpoint on the unwinder's debug hook for OBJFILE using a
+   probe.  Return true if a breakpoint was installed.  */
 
-static void
-create_exception_master_breakpoint (void)
+static bool
+create_exception_master_breakpoint_probe (objfile *objfile)
 {
-  const char *const func_name = "_Unwind_DebugHook";
+  struct breakpoint *b;
+  struct gdbarch *gdbarch;
+  struct breakpoint_objfile_data *bp_objfile_data;
 
-  for (objfile *objfile : current_program_space->objfiles ())
-    {
-      struct breakpoint *b;
-      struct gdbarch *gdbarch;
-      struct breakpoint_objfile_data *bp_objfile_data;
-      CORE_ADDR addr;
-      struct explicit_location explicit_loc;
+  bp_objfile_data = get_breakpoint_objfile_data (objfile);
 
-      bp_objfile_data = get_breakpoint_objfile_data (objfile);
+  /* We prefer the SystemTap probe point if it exists.  */
+  if (!bp_objfile_data->exception_searched)
+    {
+      std::vector<probe *> ret
+	= find_probes_in_objfile (objfile, "libgcc", "unwind");
 
-      /* We prefer the SystemTap probe point if it exists.  */
-      if (!bp_objfile_data->exception_searched)
+      if (!ret.empty ())
 	{
-	  std::vector<probe *> ret
-	    = find_probes_in_objfile (objfile, "libgcc", "unwind");
+	  /* We are only interested in checking one element.  */
+	  probe *p = ret[0];
 
-	  if (!ret.empty ())
+	  if (!p->can_evaluate_arguments ())
 	    {
-	      /* We are only interested in checking one element.  */
-	      probe *p = ret[0];
-
-	      if (!p->can_evaluate_arguments ())
-		{
-		  /* We cannot use the probe interface here, because it does
-		     not know how to evaluate arguments.  */
-		  ret.clear ();
-		}
+	      /* We cannot use the probe interface here, because it does
+		 not know how to evaluate arguments.  */
+	      ret.clear ();
 	    }
-	  bp_objfile_data->exception_probes = ret;
-	  bp_objfile_data->exception_searched = 1;
 	}
+      bp_objfile_data->exception_probes = ret;
+      bp_objfile_data->exception_searched = 1;
+    }
 
-      if (!bp_objfile_data->exception_probes.empty ())
-	{
-	  gdbarch = get_objfile_arch (objfile);
+  if (bp_objfile_data->exception_probes.empty ())
+    return false;
 
-	  for (probe *p : bp_objfile_data->exception_probes)
-	    {
-	      b = create_internal_breakpoint (gdbarch,
-					      p->get_relocated_address (objfile),
-					      bp_exception_master,
-					      &internal_breakpoint_ops);
-	      b->location = new_probe_location ("-probe-stap libgcc:unwind");
-	      b->enable_state = bp_disabled;
-	    }
+  gdbarch = objfile->arch ();
 
-	  continue;
-	}
+  for (probe *p : bp_objfile_data->exception_probes)
+    {
+      b = create_internal_breakpoint (gdbarch,
+				      p->get_relocated_address (objfile),
+				      bp_exception_master,
+				      &internal_breakpoint_ops);
+      b->location = new_probe_location ("-probe-stap libgcc:unwind");
+      b->enable_state = bp_disabled;
+    }
 
-      /* Otherwise, try the hook function.  */
+  return true;
+}
 
-      if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
-	continue;
+/* Install a master breakpoint on the unwinder's debug hook for OBJFILE using
+   _Unwind_DebugHook.  Return true if a breakpoint was installed.  */
 
-      gdbarch = get_objfile_arch (objfile);
+static bool
+create_exception_master_breakpoint_hook (objfile *objfile)
+{
+  const char *const func_name = "_Unwind_DebugHook";
+  struct breakpoint *b;
+  struct gdbarch *gdbarch;
+  struct breakpoint_objfile_data *bp_objfile_data;
+  CORE_ADDR addr;
+  struct explicit_location explicit_loc;
 
-      if (bp_objfile_data->exception_msym.minsym == NULL)
-	{
-	  struct bound_minimal_symbol debug_hook;
+  bp_objfile_data = get_breakpoint_objfile_data (objfile);
 
-	  debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
-	  if (debug_hook.minsym == NULL)
-	    {
-	      bp_objfile_data->exception_msym.minsym = &msym_not_found;
-	      continue;
-	    }
+  if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
+    return false;
 
-	  bp_objfile_data->exception_msym = debug_hook;
+  gdbarch = objfile->arch ();
+
+  if (bp_objfile_data->exception_msym.minsym == NULL)
+    {
+      struct bound_minimal_symbol debug_hook;
+
+      debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
+      if (debug_hook.minsym == NULL)
+	{
+	  bp_objfile_data->exception_msym.minsym = &msym_not_found;
+	  return false;
 	}
 
-      addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
-      addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
-						 current_top_target ());
-      b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
-				      &internal_breakpoint_ops);
-      initialize_explicit_location (&explicit_loc);
-      explicit_loc.function_name = ASTRDUP (func_name);
-      b->location = new_explicit_location (&explicit_loc);
-      b->enable_state = bp_disabled;
+      bp_objfile_data->exception_msym = debug_hook;
+    }
+
+  addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
+  addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
+					     current_top_target ());
+  b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
+				  &internal_breakpoint_ops);
+  initialize_explicit_location (&explicit_loc);
+  explicit_loc.function_name = ASTRDUP (func_name);
+  b->location = new_explicit_location (&explicit_loc);
+  b->enable_state = bp_disabled;
+
+  return true;
+}
+
+/* Install a master breakpoint on the unwinder's debug hook.  */
+
+static void
+create_exception_master_breakpoint (void)
+{
+  for (objfile *obj : current_program_space->objfiles ())
+    {
+      /* Skip separate debug object.  */
+      if (obj->separate_debug_objfile_backlink)
+	continue;
+
+      /* Try a probe kind breakpoint.  */
+      if (create_exception_master_breakpoint_probe (obj))
+	continue;
+
+      /* Iterate over main and separate debug objects and try an
+	 _Unwind_DebugHook kind breakpoint.  */
+      for (objfile *debug_objfile : obj->separate_debug_objfiles ())
+	if (create_exception_master_breakpoint_hook (debug_objfile))
+	  break;
     }
 }
 
@@ -5452,22 +5474,25 @@ bpstat_stop_status (const address_space
 }
 
 static void
-handle_jit_event (void)
+handle_jit_event (CORE_ADDR address)
 {
-  struct frame_info *frame;
   struct gdbarch *gdbarch;
 
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
+  infrun_debug_printf ("handling bp_jit_event");
 
   /* Switch terminal for any messages produced by
      breakpoint_re_set.  */
   target_terminal::ours_for_output ();
 
-  frame = get_current_frame ();
-  gdbarch = get_frame_arch (frame);
-
-  jit_event_handler (gdbarch);
+  gdbarch = get_frame_arch (get_current_frame ());
+  /* This event is caused by a breakpoint set in `jit_breakpoint_re_set`,
+     thus it is expected that its objectfile can be found through
+     minimal symbol lookup.  If it doesn't work (and assert fails), it
+     most likely means that `jit_breakpoint_re_set` was changes and this
+     function needs to be updated too.  */
+  bound_minimal_symbol jit_bp_sym = lookup_minimal_symbol_by_pc (address);
+  gdb_assert (jit_bp_sym.objfile != nullptr);
+  jit_event_handler (gdbarch, jit_bp_sym.objfile);
 
   target_terminal::inferior ();
 }
@@ -5668,7 +5693,7 @@ bpstat_run_callbacks (bpstat bs_head)
       switch (b->type)
 	{
 	case bp_jit_event:
-	  handle_jit_event ();
+	  handle_jit_event (bs->bp_location_at->address);
 	  break;
 	case bp_gnu_ifunc_resolver:
 	  gnu_ifunc_resolver_stop (b);
@@ -6086,7 +6111,7 @@ print_one_breakpoint_location (struct br
 	   there are several.  Always display for MI. */
 	if (allflag
 	    || (!gdbarch_has_global_breakpoints (target_gdbarch ())
-		&& (number_of_program_spaces () > 1
+		&& (program_spaces.size () > 1
 		    || number_of_inferiors () > 1)
 		/* LOC is for existing B, it cannot be in
 		   moribund_locations and thus having NULL OWNER.  */
@@ -6811,11 +6836,14 @@ tracepoint_locations_match (struct bp_lo
 
 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
    (bl_address_is_meaningful), returns true if LOC1 and LOC2 represent
-   the same location.  */
+   the same location.  If SW_HW_BPS_MATCH is true, then software
+   breakpoint locations and hardware breakpoint locations match,
+   otherwise they don't.  */
 
 static int
-breakpoint_locations_match (struct bp_location *loc1, 
-			    struct bp_location *loc2)
+breakpoint_locations_match (struct bp_location *loc1,
+			    struct bp_location *loc2,
+			    bool sw_hw_bps_match)
 {
   int hw_point1, hw_point2;
 
@@ -6833,9 +6861,12 @@ breakpoint_locations_match (struct bp_lo
   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
     return tracepoint_locations_match (loc1, loc2);
   else
-    /* We compare bp_location.length in order to cover ranged breakpoints.  */
+    /* We compare bp_location.length in order to cover ranged
+       breakpoints.  Keep this in sync with
+       bp_location_is_less_than.  */
     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
 				     loc2->pspace->aspace, loc2->address)
+	    && (loc1->loc_type == loc2->loc_type || sw_hw_bps_match)
 	    && loc1->length == loc2->length);
 }
 
@@ -7114,9 +7145,9 @@ struct gdbarch *
 get_sal_arch (struct symtab_and_line sal)
 {
   if (sal.section)
-    return get_objfile_arch (sal.section->objfile);
+    return sal.section->objfile->arch ();
   if (sal.symtab)
-    return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+    return SYMTAB_OBJFILE (sal.symtab)->arch ();
 
   return NULL;
 }
@@ -8513,7 +8544,62 @@ mention (struct breakpoint *b)
 }
 
 
-static int bp_loc_is_permanent (struct bp_location *loc);
+static bool bp_loc_is_permanent (struct bp_location *loc);
+
+/* Handle "set breakpoint auto-hw on".
+
+   If the explicitly specified breakpoint type is not hardware
+   breakpoint, check the memory map to see whether the breakpoint
+   address is in read-only memory.
+
+   - location type is not hardware breakpoint, memory is read-only.
+   We change the type of the location to hardware breakpoint.
+
+   - location type is hardware breakpoint, memory is read-write.  This
+   means we've previously made the location hardware one, but then the
+   memory map changed, so we undo.
+*/
+
+static void
+handle_automatic_hardware_breakpoints (bp_location *bl)
+{
+  if (automatic_hardware_breakpoints
+      && bl->owner->type != bp_hardware_breakpoint
+      && (bl->loc_type == bp_loc_software_breakpoint
+	  || bl->loc_type == bp_loc_hardware_breakpoint))
+    {
+      /* When breakpoints are removed, remove_breakpoints will use
+	 location types we've just set here, the only possible problem
+	 is that memory map has changed during running program, but
+	 it's not going to work anyway with current gdb.  */
+      mem_region *mr = lookup_mem_region (bl->address);
+
+      if (mr != nullptr)
+	{
+	  enum bp_loc_type new_type;
+
+	  if (mr->attrib.mode != MEM_RW)
+	    new_type = bp_loc_hardware_breakpoint;
+	  else
+	    new_type = bp_loc_software_breakpoint;
+
+	  if (new_type != bl->loc_type)
+	    {
+	      static bool said = false;
+
+	      bl->loc_type = new_type;
+	      if (!said)
+		{
+		  fprintf_filtered (gdb_stdout,
+				    _("Note: automatically using "
+				      "hardware breakpoints for "
+				      "read-only addresses.\n"));
+		  said = true;
+		}
+	    }
+	}
+    }
+}
 
 static struct bp_location *
 add_location_to_breakpoint (struct breakpoint *b,
@@ -8579,42 +8665,10 @@ add_location_to_breakpoint (struct break
 }
 
 
-/* See breakpoint.h.  */
-
-int
-program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
-{
-  int len;
-  CORE_ADDR addr;
-  const gdb_byte *bpoint;
-  gdb_byte *target_mem;
-
-  addr = address;
-  bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
-
-  /* Software breakpoints unsupported?  */
-  if (bpoint == NULL)
-    return 0;
+/* Return true if LOC is pointing to a permanent breakpoint,
+   return false otherwise.  */
 
-  target_mem = (gdb_byte *) alloca (len);
-
-  /* Enable the automatic memory restoration from breakpoints while
-     we read the memory.  Otherwise we could say about our temporary
-     breakpoints they are permanent.  */
-  scoped_restore restore_memory
-    = make_scoped_restore_show_memory_breakpoints (0);
-
-  if (target_read_memory (address, target_mem, len) == 0
-      && memcmp (target_mem, bpoint, len) == 0)
-    return 1;
-
-  return 0;
-}
-
-/* Return 1 if LOC is pointing to a permanent breakpoint,
-   return 0 otherwise.  */
-
-static int
+static bool
 bp_loc_is_permanent (struct bp_location *loc)
 {
   gdb_assert (loc != NULL);
@@ -8622,14 +8676,14 @@ bp_loc_is_permanent (struct bp_location
   /* If we have a non-breakpoint-backed catchpoint or a software
      watchpoint, just return 0.  We should not attempt to read from
      the addresses the locations of these breakpoint types point to.
-     program_breakpoint_here_p, below, will attempt to read
+     gdbarch_program_breakpoint_here_p, below, will attempt to read
      memory.  */
   if (!bl_address_is_meaningful (loc))
-    return 0;
+    return false;
 
   scoped_restore_current_pspace_and_thread restore_pspace_thread;
   switch_to_program_space_and_thread (loc->pspace);
-  return program_breakpoint_here_p (loc->gdbarch, loc->address);
+  return gdbarch_program_breakpoint_here_p (loc->gdbarch, loc->address);
 }
 
 /* Build a command list for the dprintf corresponding to the current
@@ -8940,7 +8994,7 @@ create_breakpoints_sal (struct gdbarch *
    the caller's responsibility to free them.  */
 
 static void
-parse_breakpoint_sals (const struct event_location *location,
+parse_breakpoint_sals (struct event_location *location,
 		       struct linespec_result *canonical)
 {
   struct symtab_and_line cursal;
@@ -9205,7 +9259,7 @@ breakpoint_ops_for_event_location (const
 
 int
 create_breakpoint (struct gdbarch *gdbarch,
-		   const struct event_location *location,
+		   struct event_location *location,
 		   const char *cond_string,
 		   int thread, const char *extra_string,
 		   int parse_extra,
@@ -10430,7 +10484,6 @@ static void
 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
 {
   struct watchpoint *w = (struct watchpoint *) b;
-  char tmp[40];
 
   switch (b->type)
     {
@@ -10448,8 +10501,8 @@ print_recreate_masked_watchpoint (struct
 		      _("Invalid hardware watchpoint type."));
     }
 
-  sprintf_vma (tmp, w->hw_wp_mask);
-  fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
+  fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string,
+		      phex (w->hw_wp_mask, sizeof (CORE_ADDR)));
   print_recreate_thread (b, fp);
 }
 
@@ -10728,7 +10781,7 @@ watch_command_1 (const char *arg, int ac
       CORE_ADDR addr = value_as_address (val.get ());
 
       w->exp_string_reparse
-	= current_language->la_watch_location_expression (t, addr).release ();
+	= current_language->watch_location_expression (t, addr).release ();
 
       w->exp_string = xstrprintf ("-location %.*s",
 				  (int) (exp_end - exp_start), exp_start);
@@ -10839,8 +10892,8 @@ can_use_hardware_watchpoint (const std::
 		 explicitly, never if they just happen to appear in a
 		 middle of some value chain.  */
 	      if (v == head
-		  || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
-		      && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
+		  || (vtype->code () != TYPE_CODE_STRUCT
+		      && vtype->code () != TYPE_CODE_ARRAY))
 		{
 		  CORE_ADDR vaddr = value_address (v);
 		  int len;
@@ -10932,20 +10985,15 @@ struct until_break_fsm : public thread_f
   /* The thread that was current when the command was executed.  */
   int thread;
 
-  /* The breakpoint set at the destination location.  */
-  breakpoint_up location_breakpoint;
-
-  /* Breakpoint set at the return address in the caller frame.  May be
-     NULL.  */
-  breakpoint_up caller_breakpoint;
+  /* The breakpoint set at the return address in the caller frame,
+     plus breakpoints at all the destination locations.  */
+  std::vector<breakpoint_up> breakpoints;
 
   until_break_fsm (struct interp *cmd_interp, int thread,
-		   breakpoint_up &&location_breakpoint,
-		   breakpoint_up &&caller_breakpoint)
+		   std::vector<breakpoint_up> &&breakpoints)
     : thread_fsm (cmd_interp),
       thread (thread),
-      location_breakpoint (std::move (location_breakpoint)),
-      caller_breakpoint (std::move (caller_breakpoint))
+      breakpoints (std::move (breakpoints))
   {
   }
 
@@ -10960,12 +11008,13 @@ struct until_break_fsm : public thread_f
 bool
 until_break_fsm::should_stop (struct thread_info *tp)
 {
-  if (bpstat_find_breakpoint (tp->control.stop_bpstat,
-			      location_breakpoint.get ()) != NULL
-      || (caller_breakpoint != NULL
-	  && bpstat_find_breakpoint (tp->control.stop_bpstat,
-				     caller_breakpoint.get ()) != NULL))
-    set_finished ();
+  for (const breakpoint_up &bp : breakpoints)
+    if (bpstat_find_breakpoint (tp->control.stop_bpstat,
+				bp.get ()) != NULL)
+      {
+	set_finished ();
+	break;
+      }
 
   return true;
 }
@@ -10977,8 +11026,7 @@ void
 until_break_fsm::clean_up (struct thread_info *)
 {
   /* Clean up our temporary breakpoints.  */
-  location_breakpoint.reset ();
-  caller_breakpoint.reset ();
+  breakpoints.clear ();
   delete_longjmp_breakpoint (thread);
 }
 
@@ -11016,16 +11064,12 @@ until_break_command (const char *arg, in
        : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
 			NULL, NULL, 0));
 
-  if (sals.size () != 1)
+  if (sals.empty ())
     error (_("Couldn't get information on specified line."));
 
-  symtab_and_line &sal = sals[0];
-
   if (*arg)
     error (_("Junk at end of arguments."));
 
-  resolve_sal_pc (&sal);
-
   tp = inferior_thread ();
   thread = tp->global_num;
 
@@ -11042,7 +11086,7 @@ until_break_command (const char *arg, in
   /* Keep within the current frame, or in frames called by the current
      one.  */
 
-  breakpoint_up caller_breakpoint;
+  std::vector<breakpoint_up> breakpoints;
 
   gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
 
@@ -11054,10 +11098,11 @@ until_break_command (const char *arg, in
       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
       sal2.pc = frame_unwind_caller_pc (frame);
       caller_gdbarch = frame_unwind_caller_arch (frame);
-      caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
-						    sal2,
-						    caller_frame_id,
-						    bp_until);
+
+      breakpoint_up caller_breakpoint
+	= set_momentary_breakpoint (caller_gdbarch, sal2,
+				    caller_frame_id, bp_until);
+      breakpoints.emplace_back (std::move (caller_breakpoint));
 
       set_longjmp_breakpoint (tp, caller_frame_id);
       lj_deleter.emplace (thread);
@@ -11066,21 +11111,24 @@ until_break_command (const char *arg, in
   /* set_momentary_breakpoint could invalidate FRAME.  */
   frame = NULL;
 
-  breakpoint_up location_breakpoint;
-  if (anywhere)
-    /* If the user told us to continue until a specified location,
-       we don't specify a frame at which we need to stop.  */
-    location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
-						    null_frame_id, bp_until);
-  else
-    /* Otherwise, specify the selected frame, because we want to stop
-       only at the very same frame.  */
-    location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
-						    stack_frame_id, bp_until);
+  /* If the user told us to continue until a specified location, we
+     don't specify a frame at which we need to stop.  Otherwise,
+     specify the selected frame, because we want to stop only at the
+     very same frame.  */
+  frame_id stop_frame_id = anywhere ? null_frame_id : stack_frame_id;
+
+  for (symtab_and_line &sal : sals)
+    {
+      resolve_sal_pc (&sal);
+
+      breakpoint_up location_breakpoint
+	= set_momentary_breakpoint (frame_gdbarch, sal,
+				    stop_frame_id, bp_until);
+      breakpoints.emplace_back (std::move (location_breakpoint));
+    }
 
   tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
-					std::move (location_breakpoint),
-					std::move (caller_breakpoint));
+					std::move (breakpoints));
 
   if (lj_deleter)
     lj_deleter->release ();
@@ -11245,19 +11293,8 @@ init_ada_exception_breakpoint (struct br
   b->language = language_ada;
 }
 
-static void
-catch_command (const char *arg, int from_tty)
-{
-  error (_("Catch requires an event name."));
-}
 
 
-static void
-tcatch_command (const char *arg, int from_tty)
-{
-  error (_("Catch requires an event name."));
-}
-
 /* Compare two breakpoints and return a strcmp-like result.  */
 
 static int
@@ -11482,6 +11519,18 @@ bp_location_is_less_than (const bp_locat
   if (a->permanent != b->permanent)
     return a->permanent > b->permanent;
 
+  /* Sort by type in order to make duplicate determination easier.
+     See update_global_location_list.  This is kept in sync with
+     breakpoint_locations_match.  */
+  if (a->loc_type < b->loc_type)
+    return true;
+
+  /* Likewise, for range-breakpoints, sort by length.  */
+  if (a->loc_type == bp_loc_hardware_breakpoint
+      && b->loc_type == bp_loc_hardware_breakpoint
+      && a->length < b->length)
+    return true;
+
   /* Make the internal GDB representation stable across GDB runs
      where A and B memory inside GDB can differ.  Breakpoint locations of
      the same type at the same address can be sorted in arbitrary order.  */
@@ -11656,6 +11705,7 @@ force_breakpoint_reinsertion (struct bp_
       loc->cond_bytecode.reset ();
     }
 }
+
 /* Called whether new breakpoints are created, or existing breakpoints
    deleted, to update the global location list and recompute which
    locations are duplicate of which.
@@ -11704,6 +11754,20 @@ update_global_location_list (enum ugll_i
   ALL_BREAKPOINTS (b)
     for (loc = b->loc; loc; loc = loc->next)
       *locp++ = loc;
+
+  /* See if we need to "upgrade" a software breakpoint to a hardware
+     breakpoint.  Do this before deciding whether locations are
+     duplicates.  Also do this before sorting because sorting order
+     depends on location type.  */
+  for (locp = bp_locations;
+       locp < bp_locations + bp_locations_count;
+       locp++)
+    {
+      loc = *locp;
+      if (!loc->inserted && should_be_inserted (loc))
+	handle_automatic_hardware_breakpoints (loc);
+    }
+
   std::sort (bp_locations, bp_locations + bp_locations_count,
 	     bp_location_is_less_than);
 
@@ -11807,6 +11871,9 @@ update_global_location_list (enum ugll_i
 		    {
 		      struct bp_location *loc2 = *loc2p;
 
+		      if (loc2 == old_loc)
+			continue;
+
 		      if (breakpoint_locations_match (loc2, old_loc))
 			{
 			  /* Read watchpoint locations are switched to
@@ -11821,8 +11888,7 @@ update_global_location_list (enum ugll_i
 			  /* loc2 is a duplicated location. We need to check
 			     if it should be inserted in case it will be
 			     unduplicated.  */
-			  if (loc2 != old_loc
-			      && unduplicated_should_be_inserted (loc2))
+			  if (unduplicated_should_be_inserted (loc2))
 			    {
 			      swap_insertion (old_loc, loc2);
 			      keep_in_target = 1;
@@ -11903,7 +11969,18 @@ update_global_location_list (enum ugll_i
 		 around.  We simply always ignore hardware watchpoint
 		 traps we can no longer explain.  */
 
-	      old_loc->events_till_retirement = 3 * (thread_count () + 1);
+	      process_stratum_target *proc_target = nullptr;
+	      for (inferior *inf : all_inferiors ())
+		if (inf->pspace == old_loc->pspace)
+		  {
+		    proc_target = inf->process_target ();
+		    break;
+		  }
+	      if (proc_target != nullptr)
+		old_loc->events_till_retirement
+		  = 3 * (thread_count (proc_target) + 1);
+	      else
+		old_loc->events_till_retirement = 1;
 	      old_loc->owner = NULL;
 
 	      moribund_locations.push_back (old_loc);
@@ -12235,7 +12312,7 @@ base_breakpoint_print_recreate (struct b
 
 static void
 base_breakpoint_create_sals_from_location
-  (const struct event_location *location,
+  (struct event_location *location,
    struct linespec_result *canonical,
    enum bptype type_wanted)
 {
@@ -12260,7 +12337,7 @@ base_breakpoint_create_breakpoints_sal (
 
 static std::vector<symtab_and_line>
 base_breakpoint_decode_location (struct breakpoint *b,
-				 const struct event_location *location,
+				 struct event_location *location,
 				 struct program_space *search_pspace)
 {
   internal_error_pure_virtual_called ();
@@ -12483,7 +12560,7 @@ bkpt_print_recreate (struct breakpoint *
 }
 
 static void
-bkpt_create_sals_from_location (const struct event_location *location,
+bkpt_create_sals_from_location (struct event_location *location,
 				struct linespec_result *canonical,
 				enum bptype type_wanted)
 {
@@ -12514,7 +12591,7 @@ bkpt_create_breakpoints_sal (struct gdba
 
 static std::vector<symtab_and_line>
 bkpt_decode_location (struct breakpoint *b,
-		      const struct event_location *location,
+		      struct event_location *location,
 		      struct program_space *search_pspace)
 {
   return decode_location_default (b, location, search_pspace);
@@ -12687,7 +12764,7 @@ bkpt_probe_remove_location (struct bp_lo
 }
 
 static void
-bkpt_probe_create_sals_from_location (const struct event_location *location,
+bkpt_probe_create_sals_from_location (struct event_location *location,
 				      struct linespec_result *canonical,
 				      enum bptype type_wanted)
 {
@@ -12701,7 +12778,7 @@ bkpt_probe_create_sals_from_location (co
 
 static std::vector<symtab_and_line>
 bkpt_probe_decode_location (struct breakpoint *b,
-			    const struct event_location *location,
+			    struct event_location *location,
 			    struct program_space *search_pspace)
 {
   std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
@@ -12795,7 +12872,7 @@ tracepoint_print_recreate (struct breakp
 }
 
 static void
-tracepoint_create_sals_from_location (const struct event_location *location,
+tracepoint_create_sals_from_location (struct event_location *location,
 				      struct linespec_result *canonical,
 				      enum bptype type_wanted)
 {
@@ -12826,7 +12903,7 @@ tracepoint_create_breakpoints_sal (struc
 
 static std::vector<symtab_and_line>
 tracepoint_decode_location (struct breakpoint *b,
-			    const struct event_location *location,
+			    struct event_location *location,
 			    struct program_space *search_pspace)
 {
   return decode_location_default (b, location, search_pspace);
@@ -12838,7 +12915,7 @@ struct breakpoint_ops tracepoint_breakpo
 
 static void
 tracepoint_probe_create_sals_from_location
-  (const struct event_location *location,
+  (struct event_location *location,
    struct linespec_result *canonical,
    enum bptype type_wanted)
 {
@@ -12848,7 +12925,7 @@ tracepoint_probe_create_sals_from_locati
 
 static std::vector<symtab_and_line>
 tracepoint_probe_decode_location (struct breakpoint *b,
-				  const struct event_location *location,
+				  struct event_location *location,
 				  struct program_space *search_pspace)
 {
   /* We use the same method for breakpoint on probes.  */
@@ -12929,7 +13006,7 @@ dprintf_after_condition_true (struct bps
    markers (`-m').  */
 
 static void
-strace_marker_create_sals_from_location (const struct event_location *location,
+strace_marker_create_sals_from_location (struct event_location *location,
 					 struct linespec_result *canonical,
 					 enum bptype type_wanted)
 {
@@ -12999,7 +13076,7 @@ strace_marker_create_breakpoints_sal (st
 
 static std::vector<symtab_and_line>
 strace_marker_decode_location (struct breakpoint *b,
-			       const struct event_location *location,
+			       struct event_location *location,
 			       struct program_space *search_pspace)
 {
   struct tracepoint *tp = (struct tracepoint *) b;
@@ -13528,11 +13605,20 @@ update_breakpoint_locations (struct brea
 	    if (have_ambiguous_names)
 	      {
 		for (; l; l = l->next)
-		  if (breakpoint_locations_match (e, l))
-		    {
-		      l->enabled = 0;
-		      break;
-		    }
+		  {
+		    /* Ignore software vs hardware location type at
+		       this point, because with "set breakpoint
+		       auto-hw", after a re-set, locations that were
+		       hardware can end up as software, or vice versa.
+		       As mentioned above, this is an heuristic and in
+		       practice should give the correct answer often
+		       enough.  */
+		    if (breakpoint_locations_match (e, l, true))
+		      {
+			l->enabled = 0;
+			break;
+		      }
+		  }
 	      }
 	    else
 	      {
@@ -13673,7 +13759,7 @@ breakpoint_re_set_default (struct breakp
    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
 
 static void
-create_sals_from_location_default (const struct event_location *location,
+create_sals_from_location_default (struct event_location *location,
 				   struct linespec_result *canonical,
 				   enum bptype type_wanted)
 {
@@ -13710,7 +13796,7 @@ create_breakpoints_sal_default (struct g
 
 static std::vector<symtab_and_line>
 decode_location_default (struct breakpoint *b,
-			 const struct event_location *location,
+			 struct event_location *location,
 			 struct program_space *search_pspace)
 {
   struct linespec_result canonical;
@@ -14355,16 +14441,6 @@ enable_delete_command (const char *args,
      });
 }
 
-static void
-set_breakpoint_cmd (const char *args, int from_tty)
-{
-}
-
-static void
-show_breakpoint_cmd (const char *args, int from_tty)
-{
-}
-
 /* Invalidate last known value of any hardware watchpoint if
    the memory which that value represents has been written to by
    GDB itself.  */
@@ -15138,14 +15214,6 @@ add_catch_command (const char *name, con
   set_cmd_completer (command, completer);
 }
 
-static void
-save_command (const char *arg, int from_tty)
-{
-  printf_unfiltered (_("\"save\" must be followed by "
-		       "the name of a save subcommand.\n"));
-  help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
-}
-
 struct breakpoint *
 iterate_over_breakpoints (gdb::function_view<bool (breakpoint *)> callback)
 {
@@ -15396,8 +15464,9 @@ static struct cmd_list_element *enablebr
 
 cmd_list_element *commands_cmd_element = nullptr;
 
+void _initialize_breakpoint ();
 void
-_initialize_breakpoint (void)
+_initialize_breakpoint ()
 {
   struct cmd_list_element *c;
 
@@ -15528,7 +15597,7 @@ A disabled breakpoint is not forgotten,
   add_com_alias ("dis", "disable", class_breakpoint, 1);
   add_com_alias ("disa", "disable", class_breakpoint, 1);
 
-  add_cmd ("breakpoints", class_alias, disable_command, _("\
+  add_cmd ("breakpoints", class_breakpoint, disable_command, _("\
 Disable all or some breakpoints.\n\
 Usage: disable breakpoints [BREAKPOINTNUM]...\n\
 Arguments are breakpoint numbers with spaces in between.\n\
@@ -15548,7 +15617,7 @@ Also a prefix command for deletion of ot
   add_com_alias ("d", "delete", class_breakpoint, 1);
   add_com_alias ("del", "delete", class_breakpoint, 1);
 
-  add_cmd ("breakpoints", class_alias, delete_command, _("\
+  add_cmd ("breakpoints", class_breakpoint, delete_command, _("\
 Delete all or some breakpoints or auto-display expressions.\n\
 Usage: delete breakpoints [BREAKPOINTNUM]...\n\
 Arguments are breakpoint numbers with spaces in between.\n\
@@ -15641,15 +15710,15 @@ Convenience variable \"$bpnum\" contains
 breakpoint set."),
 	   &maintenanceinfolist);
 
-  add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
+  add_basic_prefix_cmd ("catch", class_breakpoint, _("\
 Set catchpoints to catch events."),
-		  &catch_cmdlist, "catch ",
-		  0/*allow-unknown*/, &cmdlist);
+			&catch_cmdlist, "catch ",
+			0/*allow-unknown*/, &cmdlist);
 
-  add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
+  add_basic_prefix_cmd ("tcatch", class_breakpoint, _("\
 Set temporary catchpoints to catch events."),
-		  &tcatch_cmdlist, "tcatch ",
-		  0/*allow-unknown*/, &cmdlist);
+			&tcatch_cmdlist, "tcatch ",
+			0/*allow-unknown*/, &cmdlist);
 
   add_catch_command ("fork", _("Catch calls to fork."),
 		     catch_fork_command_1,
@@ -15736,10 +15805,10 @@ BREAK_ARGS_HELP ("trace") "\n\
 Do \"help tracepoints\" for info on other tracepoint commands."));
   set_cmd_completer (c, location_completer);
 
-  add_com_alias ("tp", "trace", class_alias, 0);
-  add_com_alias ("tr", "trace", class_alias, 1);
-  add_com_alias ("tra", "trace", class_alias, 1);
-  add_com_alias ("trac", "trace", class_alias, 1);
+  add_com_alias ("tp", "trace", class_breakpoint, 0);
+  add_com_alias ("tr", "trace", class_breakpoint, 1);
+  add_com_alias ("tra", "trace", class_breakpoint, 1);
+  add_com_alias ("trac", "trace", class_breakpoint, 1);
 
   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
 Set a fast tracepoint at specified location.\n\
@@ -15804,10 +15873,10 @@ The trace will end when the tracepoint h
 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
 
-  add_prefix_cmd ("save", class_breakpoint, save_command,
-		  _("Save breakpoint definitions as a script."),
-		  &save_cmdlist, "save ",
-		  0/*allow-unknown*/, &cmdlist);
+  add_basic_prefix_cmd ("save", class_breakpoint,
+			_("Save breakpoint definitions as a script."),
+			&save_cmdlist, "save ",
+			0/*allow-unknown*/, &cmdlist);
 
   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
 Save current breakpoint definitions as a script.\n\
@@ -15826,18 +15895,18 @@ Use the 'source' command in another debu
   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
   deprecate_cmd (c, "save tracepoints");
 
-  add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
+  add_basic_prefix_cmd ("breakpoint", class_maintenance, _("\
 Breakpoint specific settings.\n\
 Configure various breakpoint-specific variables such as\n\
 pending breakpoint behavior."),
-		  &breakpoint_set_cmdlist, "set breakpoint ",
-		  0/*allow-unknown*/, &setlist);
-  add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
+			&breakpoint_set_cmdlist, "set breakpoint ",
+			0/*allow-unknown*/, &setlist);
+  add_show_prefix_cmd ("breakpoint", class_maintenance, _("\
 Breakpoint specific settings.\n\
 Configure various breakpoint-specific variables such as\n\
 pending breakpoint behavior."),
-		  &breakpoint_show_cmdlist, "show breakpoint ",
-		  0/*allow-unknown*/, &showlist);
+		       &breakpoint_show_cmdlist, "show breakpoint ",
+		       0/*allow-unknown*/, &showlist);
 
   add_setshow_auto_boolean_cmd ("pending", no_class,
 				&pending_break_support, _("\
@@ -15891,7 +15960,7 @@ breakpoint conditions will be downloaded
 supports such feature) and conditions will be evaluated on the target's side.\n\
 If this is set to \"auto\" (default), this will be automatically set to\n\
 \"target\" if it supports condition evaluation, otherwise it will\n\
-be set to \"gdb\""),
+be set to \"host\"."),
 			   &set_condition_evaluation_mode,
 			   &show_condition_evaluation_mode,
 			   &breakpoint_set_cmdlist,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/breakpoint.h ./gdb/breakpoint.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/breakpoint.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/breakpoint.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Data structures associated with breakpoints in GDB.
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -609,7 +609,7 @@ struct breakpoint_ops
      `create_sals_from_location_default'.
 
      This function is called inside `create_breakpoint'.  */
-  void (*create_sals_from_location) (const struct event_location *location,
+  void (*create_sals_from_location) (struct event_location *location,
 				     struct linespec_result *canonical,
 				     enum bptype type_wanted);
 
@@ -636,7 +636,7 @@ struct breakpoint_ops
      This function is called inside `location_to_sals'.  */
   std::vector<symtab_and_line> (*decode_location)
     (struct breakpoint *b,
-     const struct event_location *location,
+     struct event_location *location,
      struct program_space *search_pspace);
 
   /* Return true if this breakpoint explains a signal.  See
@@ -1194,11 +1194,6 @@ enum breakpoint_here
 
 /* Prototypes for breakpoint-related functions.  */
 
-/* Return 1 if there's a program/permanent breakpoint planted in
-   memory at ADDRESS, return 0 otherwise.  */
-
-extern int program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address);
-
 extern enum breakpoint_here breakpoint_here_p (const address_space *,
 					       CORE_ADDR);
 
@@ -1391,7 +1386,7 @@ enum breakpoint_create_flags
    Returns true if any breakpoint was created; false otherwise.  */
 
 extern int create_breakpoint (struct gdbarch *gdbarch,
-			      const struct event_location *location,
+			      struct event_location *location,
 			      const char *cond_string, int thread,
 			      const char *extra_string,
 			      int parse_extra,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bsd-kvm.c ./gdb/bsd-kvm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bsd-kvm.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bsd-kvm.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* BSD Kernel Data Access Library (libkvm) interface.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -29,6 +29,7 @@
 #include "gdbcore.h"
 #include "inferior.h"          /* for get_exec_file */
 #include "gdbthread.h"
+#include "gdbsupport/pathstuff.h"
 
 #include <fcntl.h>
 #include <kvm.h>
@@ -106,7 +107,7 @@ static void
 bsd_kvm_target_open (const char *arg, int from_tty)
 {
   char errbuf[_POSIX2_LINE_MAX];
-  char *execfile = NULL;
+  const char *execfile = NULL;
   kvm_t *temp_kd;
   char *filename = NULL;
 
@@ -114,14 +115,13 @@ bsd_kvm_target_open (const char *arg, in
 
   if (arg)
     {
-      char *temp;
-
       filename = tilde_expand (arg);
       if (filename[0] != '/')
 	{
-	  temp = concat (current_directory, "/", filename, (char *)NULL);
+	  gdb::unique_xmalloc_ptr<char> temp (gdb_abspath (filename));
+
 	  xfree (filename);
-	  filename = temp;
+	  filename = temp.release ();
 	}
     }
 
@@ -136,8 +136,8 @@ bsd_kvm_target_open (const char *arg, in
   core_kd = temp_kd;
   push_target (&bsd_kvm_ops);
 
-  add_thread_silent (bsd_kvm_ptid);
-  inferior_ptid = bsd_kvm_ptid;
+  thread_info *thr = add_thread_silent (&bsd_kvm_ops, bsd_kvm_ptid);
+  switch_to_thread (thr);
 
   target_fetch_registers (get_current_regcache (), -1);
 
@@ -155,8 +155,8 @@ bsd_kvm_target::close ()
       core_kd = NULL;
     }
 
-  inferior_ptid = null_ptid;
-  discard_all_inferiors ();
+  switch_to_no_thread ();
+  exit_inferior_silent (current_inferior ());
 }
 
 static LONGEST
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bsd-kvm.h ./gdb/bsd-kvm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bsd-kvm.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bsd-kvm.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* BSD Kernel Data Access Library (libkvm) interface.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bsd-uthread.c ./gdb/bsd-uthread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bsd-uthread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bsd-uthread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* BSD user-level threads support.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -381,9 +381,11 @@ bsd_uthread_target::wait (ptid_t ptid, s
 {
   enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
   CORE_ADDR addr;
+  process_stratum_target *beneath
+    = as_process_stratum_target (this->beneath ());
 
   /* Pass the request to the layer beneath.  */
-  ptid = beneath ()->wait (ptid, status, options);
+  ptid = beneath->wait (ptid, status, options);
 
   /* If the process is no longer alive, there's no point in figuring
      out the thread ID.  It will fail anyway.  */
@@ -414,13 +416,13 @@ bsd_uthread_target::wait (ptid_t ptid, s
      ptid with tid set, then ptid is still the initial thread of
      the process.  Notify GDB core about it.  */
   if (inferior_ptid.tid () == 0
-      && ptid.tid () != 0 && !in_thread_list (ptid))
-    thread_change_ptid (inferior_ptid, ptid);
+      && ptid.tid () != 0 && !in_thread_list (beneath, ptid))
+    thread_change_ptid (beneath, inferior_ptid, ptid);
 
   /* Don't let the core see a ptid without a corresponding thread.  */
-  thread_info *thread = find_thread_ptid (ptid);
+  thread_info *thread = find_thread_ptid (beneath, ptid);
   if (thread == NULL || thread->state == THREAD_EXITED)
-    add_thread (ptid);
+    add_thread (beneath, ptid);
 
   return ptid;
 }
@@ -467,16 +469,18 @@ bsd_uthread_target::update_thread_list (
     {
       ptid_t ptid = ptid_t (pid, 0, addr);
 
-      thread_info *thread = find_thread_ptid (ptid);
+      process_stratum_target *proc_target
+	= as_process_stratum_target (this->beneath ());
+      thread_info *thread = find_thread_ptid (proc_target, ptid);
       if (thread == nullptr || thread->state == THREAD_EXITED)
 	{
 	  /* If INFERIOR_PTID doesn't have a tid member yet, then ptid
 	     is still the initial thread of the process.  Notify GDB
 	     core about it.  */
 	  if (inferior_ptid.tid () == 0)
-	    thread_change_ptid (inferior_ptid, ptid);
+	    thread_change_ptid (proc_target, inferior_ptid, ptid);
 	  else
-	    add_thread (ptid);
+	    add_thread (proc_target, ptid);
 	}
 
       addr = bsd_uthread_read_memory_address (addr + offset);
@@ -540,8 +544,9 @@ bsd_uthread_target::pid_to_str (ptid_t p
   return normal_pid_to_str (ptid);
 }
 
+void _initialize_bsd_uthread ();
 void
-_initialize_bsd_uthread (void)
+_initialize_bsd_uthread ()
 {
   bsd_uthread_data = gdbarch_data_register_pre_init (bsd_uthread_init);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bsd-uthread.h ./gdb/bsd-uthread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/bsd-uthread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/bsd-uthread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* BSD user-level threads support.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/btrace.c ./gdb/btrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/btrace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/btrace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Branch trace support for GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
@@ -1533,7 +1533,7 @@ btrace_compute_ftrace_1 (struct thread_i
       return;
     }
 
-  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
+  internal_error (__FILE__, __LINE__, _("Unknown branch trace format."));
 }
 
 static void
@@ -1592,7 +1592,8 @@ void
 btrace_enable (struct thread_info *tp, const struct btrace_config *conf)
 {
   if (tp->btrace.target != NULL)
-    return;
+    error (_("Recording already enabled on thread %s (%s)."),
+	   print_thread_id (tp), target_pid_to_str (tp->ptid).c_str ());
 
 #if !defined (HAVE_LIBIPT)
   if (conf->format == BTRACE_FORMAT_PT)
@@ -1604,9 +1605,9 @@ btrace_enable (struct thread_info *tp, c
 
   tp->btrace.target = target_enable_btrace (tp->ptid, conf);
 
-  /* We're done if we failed to enable tracing.  */
   if (tp->btrace.target == NULL)
-    return;
+    error (_("Failed to enable recording on thread %s (%s)."),
+	   print_thread_id (tp), target_pid_to_str (tp->ptid).c_str ());
 
   /* We need to undo the enable in case of errors.  */
   try
@@ -1651,7 +1652,8 @@ btrace_disable (struct thread_info *tp)
   struct btrace_thread_info *btp = &tp->btrace;
 
   if (btp->target == NULL)
-    return;
+    error (_("Recording not enabled on thread %s (%s)."),
+	   print_thread_id (tp), target_pid_to_str (tp->ptid).c_str ());
 
   DEBUG ("disable thread %s (%s)", print_thread_id (tp),
 	 target_pid_to_str (tp->ptid).c_str ());
@@ -1791,7 +1793,7 @@ btrace_stitch_trace (struct btrace_data
       return -1;
     }
 
-  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
+  internal_error (__FILE__, __LINE__, _("Unknown branch trace format."));
 }
 
 /* Clear the branch trace histories in BTINFO.  */
@@ -1908,11 +1910,12 @@ btrace_fetch (struct thread_info *tp, co
   if (btinfo->replay != NULL)
     return;
 
-  /* With CLI usage, TP->PTID always equals INFERIOR_PTID here.  Now that we
-     can store a gdb.Record object in Python referring to a different thread
-     than the current one, temporarily set INFERIOR_PTID.  */
-  scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
-  inferior_ptid = tp->ptid;
+  /* With CLI usage, TP is always the current thread when we get here.
+     However, since we can also store a gdb.Record object in Python
+     referring to a different thread than the current one, we need to
+     temporarily set the current thread.  */
+  scoped_restore_current_thread restore_thread;
+  switch_to_thread (tp);
 
   /* We should not be called on running or exited threads.  */
   gdb_assert (can_access_registers_thread (tp));
@@ -3228,7 +3231,7 @@ maint_btrace_packet_history_cmd (const c
   struct btrace_thread_info *btinfo;
   unsigned int size, begin, end, from, to;
 
-  thread_info *tp = find_thread_ptid (inferior_ptid);
+  thread_info *tp = find_thread_ptid (current_inferior (), inferior_ptid);
   if (tp == NULL)
     error (_("No thread."));
 
@@ -3358,51 +3361,6 @@ maint_btrace_clear_cmd (const char *args
   btrace_clear (tp);
 }
 
-/* The "maintenance btrace" command.  */
-
-static void
-maint_btrace_cmd (const char *args, int from_tty)
-{
-  help_list (maint_btrace_cmdlist, "maintenance btrace ", all_commands,
-	     gdb_stdout);
-}
-
-/* The "maintenance set btrace" command.  */
-
-static void
-maint_btrace_set_cmd (const char *args, int from_tty)
-{
-  help_list (maint_btrace_set_cmdlist, "maintenance set btrace ", all_commands,
-	     gdb_stdout);
-}
-
-/* The "maintenance show btrace" command.  */
-
-static void
-maint_btrace_show_cmd (const char *args, int from_tty)
-{
-  help_list (maint_btrace_show_cmdlist, "maintenance show btrace ",
-	     all_commands, gdb_stdout);
-}
-
-/* The "maintenance set btrace pt" command.  */
-
-static void
-maint_btrace_pt_set_cmd (const char *args, int from_tty)
-{
-  help_list (maint_btrace_pt_set_cmdlist, "maintenance set btrace pt ",
-	     all_commands, gdb_stdout);
-}
-
-/* The "maintenance show btrace pt" command.  */
-
-static void
-maint_btrace_pt_show_cmd (const char *args, int from_tty)
-{
-  help_list (maint_btrace_pt_show_cmdlist, "maintenance show btrace pt ",
-	     all_commands, gdb_stdout);
-}
-
 /* The "maintenance info btrace" command.  */
 
 static void
@@ -3471,36 +3429,39 @@ show_maint_btrace_pt_skip_pad  (struct u
 
 /* Initialize btrace maintenance commands.  */
 
+void _initialize_btrace ();
 void
-_initialize_btrace (void)
+_initialize_btrace ()
 {
   add_cmd ("btrace", class_maintenance, maint_info_btrace_cmd,
 	   _("Info about branch tracing data."), &maintenanceinfolist);
 
-  add_prefix_cmd ("btrace", class_maintenance, maint_btrace_cmd,
-		  _("Branch tracing maintenance commands."),
-		  &maint_btrace_cmdlist, "maintenance btrace ",
-		  0, &maintenancelist);
+  add_basic_prefix_cmd ("btrace", class_maintenance,
+			_("Branch tracing maintenance commands."),
+			&maint_btrace_cmdlist, "maintenance btrace ",
+			0, &maintenancelist);
 
-  add_prefix_cmd ("btrace", class_maintenance, maint_btrace_set_cmd, _("\
+  add_basic_prefix_cmd ("btrace", class_maintenance, _("\
 Set branch tracing specific variables."),
-                  &maint_btrace_set_cmdlist, "maintenance set btrace ",
-                  0, &maintenance_set_cmdlist);
+			&maint_btrace_set_cmdlist, "maintenance set btrace ",
+			0, &maintenance_set_cmdlist);
 
-  add_prefix_cmd ("pt", class_maintenance, maint_btrace_pt_set_cmd, _("\
+  add_basic_prefix_cmd ("pt", class_maintenance, _("\
 Set Intel Processor Trace specific variables."),
-                  &maint_btrace_pt_set_cmdlist, "maintenance set btrace pt ",
-                  0, &maint_btrace_set_cmdlist);
+			&maint_btrace_pt_set_cmdlist,
+			"maintenance set btrace pt ",
+			0, &maint_btrace_set_cmdlist);
 
-  add_prefix_cmd ("btrace", class_maintenance, maint_btrace_show_cmd, _("\
+  add_show_prefix_cmd ("btrace", class_maintenance, _("\
 Show branch tracing specific variables."),
-                  &maint_btrace_show_cmdlist, "maintenance show btrace ",
-                  0, &maintenance_show_cmdlist);
+		       &maint_btrace_show_cmdlist, "maintenance show btrace ",
+		       0, &maintenance_show_cmdlist);
 
-  add_prefix_cmd ("pt", class_maintenance, maint_btrace_pt_show_cmd, _("\
+  add_show_prefix_cmd ("pt", class_maintenance, _("\
 Show Intel Processor Trace specific variables."),
-                  &maint_btrace_pt_show_cmdlist, "maintenance show btrace pt ",
-                  0, &maint_btrace_show_cmdlist);
+		       &maint_btrace_pt_show_cmdlist,
+		       "maintenance show btrace pt ",
+		       0, &maint_btrace_show_cmdlist);
 
   add_setshow_boolean_cmd ("skip-pad", class_maintenance,
 			   &maint_btrace_pt_skip_pad, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/btrace.h ./gdb/btrace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/btrace.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/btrace.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Branch trace support for GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/build-id.c ./gdb/build-id.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/build-id.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/build-id.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* build-id-related functions.
 
-   Copyright (C) 1991-2020 Free Software Foundation, Inc.
+   Copyright (C) 1991-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -94,7 +94,7 @@ build_id_to_debug_bfd_1 (const std::stri
     }
 
   /* We expect to be silent on the non-existing files.  */
-  gdb_bfd_ref_ptr debug_bfd = gdb_bfd_open (filename.get (), gnutarget, -1);
+  gdb_bfd_ref_ptr debug_bfd = gdb_bfd_open (filename.get (), gnutarget);
 
   if (debug_bfd == NULL)
     {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/build-id.h ./gdb/build-id.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/build-id.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/build-id.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* build-id-related functions.
 
-   Copyright (C) 1991-2020 Free Software Foundation, Inc.
+   Copyright (C) 1991-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/buildsym.c ./gdb/buildsym.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/buildsym.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/buildsym.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support routines for building symbol tables in GDB's internal format.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -120,7 +120,7 @@ buildsym_compunit::get_macro_table ()
 {
   if (m_pending_macros == nullptr)
     m_pending_macros = new_macro_table (&m_objfile->per_bfd->storage_obstack,
-					&m_objfile->per_bfd->macro_cache,
+					&m_objfile->per_bfd->string_cache,
 					m_compunit_symtab);
   return m_pending_macros;
 }
@@ -135,7 +135,7 @@ add_symbol_to_list (struct symbol *symbo
   struct pending *link;
 
   /* If this is an alias for another symbol, don't add it.  */
-  if (symbol->name && symbol->name[0] == '#')
+  if (symbol->linkage_name () && symbol->linkage_name ()[0] == '#')
     return;
 
   /* We keep PENDINGSIZE symbols in each link of the list.  If we
@@ -213,7 +213,7 @@ buildsym_compunit::finish_block_internal
      CORE_ADDR start, CORE_ADDR end,
      int is_global, int expandable)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (m_objfile);
+  struct gdbarch *gdbarch = m_objfile->arch ();
   struct pending *next, *next1;
   struct block *block;
   struct pending_block *pblock;
@@ -254,7 +254,7 @@ buildsym_compunit::finish_block_internal
       SYMBOL_BLOCK_VALUE (symbol) = block;
       BLOCK_FUNCTION (block) = symbol;
 
-      if (TYPE_NFIELDS (ftype) <= 0)
+      if (ftype->num_fields () <= 0)
 	{
 	  /* No parameter type information is recorded with the
 	     function's type.  Set that from the type of the
@@ -271,9 +271,10 @@ buildsym_compunit::finish_block_internal
 	    }
 	  if (nparams > 0)
 	    {
-	      TYPE_NFIELDS (ftype) = nparams;
-	      TYPE_FIELDS (ftype) = (struct field *)
-		TYPE_ALLOC (ftype, nparams * sizeof (struct field));
+	      ftype->set_num_fields (nparams);
+	      ftype->set_fields
+		((struct field *)
+		 TYPE_ALLOC (ftype, nparams * sizeof (struct field)));
 
 	      iparams = 0;
 	      /* Here we want to directly access the dictionary, because
@@ -285,7 +286,7 @@ buildsym_compunit::finish_block_internal
 
 		  if (SYMBOL_IS_ARGUMENT (sym))
 		    {
-		      TYPE_FIELD_TYPE (ftype, iparams) = SYMBOL_TYPE (sym);
+		      ftype->field (iparams).set_type (SYMBOL_TYPE (sym));
 		      TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
 		      iparams++;
 		    }
@@ -666,16 +667,10 @@ buildsym_compunit::pop_subfile ()
 
 void
 buildsym_compunit::record_line (struct subfile *subfile, int line,
-				CORE_ADDR pc)
+				CORE_ADDR pc, bool is_stmt)
 {
   struct linetable_entry *e;
 
-  /* Ignore the dummy line number in libg.o */
-  if (line == 0xffff)
-    {
-      return;
-    }
-
   /* Make sure line vector exists and is big enough.  */
   if (!subfile->line_vector)
     {
@@ -687,7 +682,7 @@ buildsym_compunit::record_line (struct s
       m_have_line_numbers = true;
     }
 
-  if (subfile->line_vector->nitems + 1 >= subfile->line_vector_length)
+  if (subfile->line_vector->nitems >= subfile->line_vector_length)
     {
       subfile->line_vector_length *= 2;
       subfile->line_vector = (struct linetable *)
@@ -710,38 +705,23 @@ buildsym_compunit::record_line (struct s
      end of sequence markers.  All we lose is the ability to set
      breakpoints at some lines which contain no instructions
      anyway.  */
-  if (line == 0 && subfile->line_vector->nitems > 0)
+  if (line == 0)
     {
-      e = subfile->line_vector->item + subfile->line_vector->nitems - 1;
-      while (subfile->line_vector->nitems > 0 && e->pc == pc)
+      while (subfile->line_vector->nitems > 0)
 	{
-	  e--;
+	  e = subfile->line_vector->item + subfile->line_vector->nitems - 1;
+	  if (e->pc != pc)
+	    break;
 	  subfile->line_vector->nitems--;
 	}
     }
 
   e = subfile->line_vector->item + subfile->line_vector->nitems++;
   e->line = line;
+  e->is_stmt = is_stmt ? 1 : 0;
   e->pc = pc;
 }
 
-/* Needed in order to sort line tables from IBM xcoff files.  Sigh!  */
-
-static bool
-lte_is_less_than (const linetable_entry &ln1, const linetable_entry &ln2)
-{
-  /* Note: this code does not assume that CORE_ADDRs can fit in ints.
-     Please keep it that way.  */
-  if (ln1.pc < ln2.pc)
-    return true;
-
-  if (ln1.pc > ln2.pc)
-    return false;
-
-  /* If pc equal, sort by line.  I'm not sure whether this is optimum
-     behavior (see comment at struct linetable in symtab.h).  */
-  return ln1.line < ln2.line;
-}
 
 /* Subroutine of end_symtab to simplify it.  Look for a subfile that
    matches the main source file's basename.  If there is only one, and
@@ -959,14 +939,27 @@ buildsym_compunit::end_symtab_with_block
 	  linetablesize = sizeof (struct linetable) +
 	    subfile->line_vector->nitems * sizeof (struct linetable_entry);
 
-	  /* Like the pending blocks, the line table may be
-	     scrambled in reordered executables.  Sort it if
-	     OBJF_REORDERED is true.  */
+	  const auto lte_is_less_than
+	    = [] (const linetable_entry &ln1,
+		  const linetable_entry &ln2) -> bool
+	      {
+		if (ln1.pc == ln2.pc
+		    && ((ln1.line == 0) != (ln2.line == 0)))
+		  return ln1.line == 0;
+
+		return (ln1.pc < ln2.pc);
+	      };
+
+	  /* Like the pending blocks, the line table may be scrambled in
+	     reordered executables.  Sort it if OBJF_REORDERED is true.  It
+	     is important to preserve the order of lines at the same
+	     address, as this maintains the inline function caller/callee
+	     relationships, this is why std::stable_sort is used.  */
 	  if (m_objfile->flags & OBJF_REORDERED)
-	    std::sort (subfile->line_vector->item,
-		       subfile->line_vector->item
-			 + subfile->line_vector->nitems,
-		       lte_is_less_than);
+	    std::stable_sort (subfile->line_vector->item,
+			      subfile->line_vector->item
+			      + subfile->line_vector->nitems,
+			      lte_is_less_than);
 	}
 
       /* Allocate a symbol table if necessary.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/buildsym.h ./gdb/buildsym.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/buildsym.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/buildsym.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Build symbol tables in GDB's internal format.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -187,7 +187,8 @@ struct buildsym_compunit
 
   const char *pop_subfile ();
 
-  void record_line (struct subfile *subfile, int line, CORE_ADDR pc);
+  void record_line (struct subfile *subfile, int line, CORE_ADDR pc,
+		    bool is_stmt);
 
   struct compunit_symtab *get_compunit_symtab ()
   {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/buildsym-legacy.c ./gdb/buildsym-legacy.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/buildsym-legacy.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/buildsym-legacy.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Legacy support routines for building symbol tables in GDB's internal format.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -252,7 +252,9 @@ void
 record_line (struct subfile *subfile, int line, CORE_ADDR pc)
 {
   gdb_assert (buildsym_compunit != nullptr);
-  buildsym_compunit->record_line (subfile, line, pc);
+  /* Assume every line entry is a statement start, that is a good place to
+     put a breakpoint for that line number.  */
+  buildsym_compunit->record_line (subfile, line, pc, true);
 }
 
 /* Start a new symtab for a new source file in OBJFILE.  Called, for example,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/buildsym-legacy.h ./gdb/buildsym-legacy.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/buildsym-legacy.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/buildsym-legacy.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Build symbol tables in GDB's internal format - legacy APIs
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-exp.c ./gdb/c-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-exp.c	2020-03-07 02:11:12.000000000 +0000
+++ ./gdb/c-exp.c	2021-05-21 02:00:05.000000000 +0000
@@ -1,21 +1,20 @@
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* Bison implementation for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   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/>.  */
 
@@ -28,13 +27,17 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -46,7 +49,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,14 +63,10 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 
 
-/* Copy the first part of user declarations.  */
-
-/* Line 189 of yacc.c  */
+/* First part of user prologue.  */
 #line 36 "c-exp.y"
 
 
@@ -90,6 +89,7 @@
 #include "typeprint.h"
 #include "cp-abi.h"
 #include "type-stack.h"
+#include "target-float.h"
 
 #define parse_type(ps) builtin_type (ps->gdbarch ())
 
@@ -159,174 +159,198 @@ static void yyerror (const char *);
 static int type_aggregate_p (struct type *);
 
 
+#line 163 "c-exp.c.tmp"
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTRPTR nullptr
+#   else
+#    define YY_NULLPTRPTR 0
+#   endif
+#  else
+#   define YY_NULLPTRPTR ((void*)0)
+#  endif
+# endif
 
-/* Line 189 of yacc.c  */
-#line 165 "c-exp.c.tmp"
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+#if YYDEBUG
+extern int yydebug;
 #endif
 
-
-/* Tokens.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     INT = 258,
-     FLOAT = 259,
-     STRING = 260,
-     NSSTRING = 261,
-     SELECTOR = 262,
-     CHAR = 263,
-     NAME = 264,
-     UNKNOWN_CPP_NAME = 265,
-     COMPLETE = 266,
-     TYPENAME = 267,
-     CLASSNAME = 268,
-     OBJC_LBRAC = 269,
-     NAME_OR_INT = 270,
-     OPERATOR = 271,
-     STRUCT = 272,
-     CLASS = 273,
-     UNION = 274,
-     ENUM = 275,
-     SIZEOF = 276,
-     ALIGNOF = 277,
-     UNSIGNED = 278,
-     COLONCOLON = 279,
-     TEMPLATE = 280,
-     ERROR = 281,
-     NEW = 282,
-     DELETE = 283,
-     REINTERPRET_CAST = 284,
-     DYNAMIC_CAST = 285,
-     STATIC_CAST = 286,
-     CONST_CAST = 287,
-     ENTRY = 288,
-     TYPEOF = 289,
-     DECLTYPE = 290,
-     TYPEID = 291,
-     SIGNED_KEYWORD = 292,
-     LONG = 293,
-     SHORT = 294,
-     INT_KEYWORD = 295,
-     CONST_KEYWORD = 296,
-     VOLATILE_KEYWORD = 297,
-     DOUBLE_KEYWORD = 298,
-     DOLLAR_VARIABLE = 299,
-     ASSIGN_MODIFY = 300,
-     TRUEKEYWORD = 301,
-     FALSEKEYWORD = 302,
-     ABOVE_COMMA = 303,
-     OROR = 304,
-     ANDAND = 305,
-     NOTEQUAL = 306,
-     EQUAL = 307,
-     GEQ = 308,
-     LEQ = 309,
-     RSH = 310,
-     LSH = 311,
-     DECREMENT = 312,
-     INCREMENT = 313,
-     UNARY = 314,
-     DOT_STAR = 315,
-     ARROW_STAR = 316,
-     ARROW = 317,
-     BLOCKNAME = 318,
-     FILENAME = 319,
-     DOTDOTDOT = 320
-   };
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    INT = 258,                     /* INT  */
+    COMPLEX_INT = 259,             /* COMPLEX_INT  */
+    FLOAT = 260,                   /* FLOAT  */
+    COMPLEX_FLOAT = 261,           /* COMPLEX_FLOAT  */
+    STRING = 262,                  /* STRING  */
+    NSSTRING = 263,                /* NSSTRING  */
+    SELECTOR = 264,                /* SELECTOR  */
+    CHAR = 265,                    /* CHAR  */
+    NAME = 266,                    /* NAME  */
+    UNKNOWN_CPP_NAME = 267,        /* UNKNOWN_CPP_NAME  */
+    COMPLETE = 268,                /* COMPLETE  */
+    TYPENAME = 269,                /* TYPENAME  */
+    CLASSNAME = 270,               /* CLASSNAME  */
+    OBJC_LBRAC = 271,              /* OBJC_LBRAC  */
+    NAME_OR_INT = 272,             /* NAME_OR_INT  */
+    OPERATOR = 273,                /* OPERATOR  */
+    STRUCT = 274,                  /* STRUCT  */
+    CLASS = 275,                   /* CLASS  */
+    UNION = 276,                   /* UNION  */
+    ENUM = 277,                    /* ENUM  */
+    SIZEOF = 278,                  /* SIZEOF  */
+    ALIGNOF = 279,                 /* ALIGNOF  */
+    UNSIGNED = 280,                /* UNSIGNED  */
+    COLONCOLON = 281,              /* COLONCOLON  */
+    TEMPLATE = 282,                /* TEMPLATE  */
+    ERROR = 283,                   /* ERROR  */
+    NEW = 284,                     /* NEW  */
+    DELETE = 285,                  /* DELETE  */
+    REINTERPRET_CAST = 286,        /* REINTERPRET_CAST  */
+    DYNAMIC_CAST = 287,            /* DYNAMIC_CAST  */
+    STATIC_CAST = 288,             /* STATIC_CAST  */
+    CONST_CAST = 289,              /* CONST_CAST  */
+    ENTRY = 290,                   /* ENTRY  */
+    TYPEOF = 291,                  /* TYPEOF  */
+    DECLTYPE = 292,                /* DECLTYPE  */
+    TYPEID = 293,                  /* TYPEID  */
+    SIGNED_KEYWORD = 294,          /* SIGNED_KEYWORD  */
+    LONG = 295,                    /* LONG  */
+    SHORT = 296,                   /* SHORT  */
+    INT_KEYWORD = 297,             /* INT_KEYWORD  */
+    CONST_KEYWORD = 298,           /* CONST_KEYWORD  */
+    VOLATILE_KEYWORD = 299,        /* VOLATILE_KEYWORD  */
+    DOUBLE_KEYWORD = 300,          /* DOUBLE_KEYWORD  */
+    RESTRICT = 301,                /* RESTRICT  */
+    ATOMIC = 302,                  /* ATOMIC  */
+    FLOAT_KEYWORD = 303,           /* FLOAT_KEYWORD  */
+    COMPLEX = 304,                 /* COMPLEX  */
+    DOLLAR_VARIABLE = 305,         /* DOLLAR_VARIABLE  */
+    ASSIGN_MODIFY = 306,           /* ASSIGN_MODIFY  */
+    TRUEKEYWORD = 307,             /* TRUEKEYWORD  */
+    FALSEKEYWORD = 308,            /* FALSEKEYWORD  */
+    ABOVE_COMMA = 309,             /* ABOVE_COMMA  */
+    OROR = 310,                    /* OROR  */
+    ANDAND = 311,                  /* ANDAND  */
+    EQUAL = 312,                   /* EQUAL  */
+    NOTEQUAL = 313,                /* NOTEQUAL  */
+    LEQ = 314,                     /* LEQ  */
+    GEQ = 315,                     /* GEQ  */
+    LSH = 316,                     /* LSH  */
+    RSH = 317,                     /* RSH  */
+    UNARY = 318,                   /* UNARY  */
+    INCREMENT = 319,               /* INCREMENT  */
+    DECREMENT = 320,               /* DECREMENT  */
+    ARROW = 321,                   /* ARROW  */
+    ARROW_STAR = 322,              /* ARROW_STAR  */
+    DOT_STAR = 323,                /* DOT_STAR  */
+    BLOCKNAME = 324,               /* BLOCKNAME  */
+    FILENAME = 325,                /* FILENAME  */
+    DOTDOTDOT = 326                /* DOTDOTDOT  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
 #endif
-/* Tokens.  */
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define INT 258
-#define FLOAT 259
-#define STRING 260
-#define NSSTRING 261
-#define SELECTOR 262
-#define CHAR 263
-#define NAME 264
-#define UNKNOWN_CPP_NAME 265
-#define COMPLETE 266
-#define TYPENAME 267
-#define CLASSNAME 268
-#define OBJC_LBRAC 269
-#define NAME_OR_INT 270
-#define OPERATOR 271
-#define STRUCT 272
-#define CLASS 273
-#define UNION 274
-#define ENUM 275
-#define SIZEOF 276
-#define ALIGNOF 277
-#define UNSIGNED 278
-#define COLONCOLON 279
-#define TEMPLATE 280
-#define ERROR 281
-#define NEW 282
-#define DELETE 283
-#define REINTERPRET_CAST 284
-#define DYNAMIC_CAST 285
-#define STATIC_CAST 286
-#define CONST_CAST 287
-#define ENTRY 288
-#define TYPEOF 289
-#define DECLTYPE 290
-#define TYPEID 291
-#define SIGNED_KEYWORD 292
-#define LONG 293
-#define SHORT 294
-#define INT_KEYWORD 295
-#define CONST_KEYWORD 296
-#define VOLATILE_KEYWORD 297
-#define DOUBLE_KEYWORD 298
-#define DOLLAR_VARIABLE 299
-#define ASSIGN_MODIFY 300
-#define TRUEKEYWORD 301
-#define FALSEKEYWORD 302
-#define ABOVE_COMMA 303
-#define OROR 304
-#define ANDAND 305
-#define NOTEQUAL 306
-#define EQUAL 307
-#define GEQ 308
-#define LEQ 309
-#define RSH 310
-#define LSH 311
-#define DECREMENT 312
-#define INCREMENT 313
-#define UNARY 314
-#define DOT_STAR 315
-#define ARROW_STAR 316
-#define ARROW 317
-#define BLOCKNAME 318
-#define FILENAME 319
-#define DOTDOTDOT 320
-
-
-
+#define COMPLEX_INT 259
+#define FLOAT 260
+#define COMPLEX_FLOAT 261
+#define STRING 262
+#define NSSTRING 263
+#define SELECTOR 264
+#define CHAR 265
+#define NAME 266
+#define UNKNOWN_CPP_NAME 267
+#define COMPLETE 268
+#define TYPENAME 269
+#define CLASSNAME 270
+#define OBJC_LBRAC 271
+#define NAME_OR_INT 272
+#define OPERATOR 273
+#define STRUCT 274
+#define CLASS 275
+#define UNION 276
+#define ENUM 277
+#define SIZEOF 278
+#define ALIGNOF 279
+#define UNSIGNED 280
+#define COLONCOLON 281
+#define TEMPLATE 282
+#define ERROR 283
+#define NEW 284
+#define DELETE 285
+#define REINTERPRET_CAST 286
+#define DYNAMIC_CAST 287
+#define STATIC_CAST 288
+#define CONST_CAST 289
+#define ENTRY 290
+#define TYPEOF 291
+#define DECLTYPE 292
+#define TYPEID 293
+#define SIGNED_KEYWORD 294
+#define LONG 295
+#define SHORT 296
+#define INT_KEYWORD 297
+#define CONST_KEYWORD 298
+#define VOLATILE_KEYWORD 299
+#define DOUBLE_KEYWORD 300
+#define RESTRICT 301
+#define ATOMIC 302
+#define FLOAT_KEYWORD 303
+#define COMPLEX 304
+#define DOLLAR_VARIABLE 305
+#define ASSIGN_MODIFY 306
+#define TRUEKEYWORD 307
+#define FALSEKEYWORD 308
+#define ABOVE_COMMA 309
+#define OROR 310
+#define ANDAND 311
+#define EQUAL 312
+#define NOTEQUAL 313
+#define LEQ 314
+#define GEQ 315
+#define LSH 316
+#define RSH 317
+#define UNARY 318
+#define INCREMENT 319
+#define DECREMENT 320
+#define ARROW 321
+#define ARROW_STAR 322
+#define DOT_STAR 323
+#define BLOCKNAME 324
+#define FILENAME 325
+#define DOTDOTDOT 326
 
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
-#line 132 "c-exp.y"
+#line 133 "c-exp.y"
 
     LONGEST lval;
     struct {
@@ -354,20 +378,176 @@ typedef union YYSTYPE
     struct objc_class_str theclass;
   
 
+#line 382 "c-exp.c.tmp"
 
-/* Line 214 of yacc.c  */
-#line 360 "c-exp.c.tmp"
-} YYSTYPE;
+};
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
+extern YYSTYPE yylval;
+
+int yyparse (void);
+
+
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_INT = 3,                        /* INT  */
+  YYSYMBOL_COMPLEX_INT = 4,                /* COMPLEX_INT  */
+  YYSYMBOL_FLOAT = 5,                      /* FLOAT  */
+  YYSYMBOL_COMPLEX_FLOAT = 6,              /* COMPLEX_FLOAT  */
+  YYSYMBOL_STRING = 7,                     /* STRING  */
+  YYSYMBOL_NSSTRING = 8,                   /* NSSTRING  */
+  YYSYMBOL_SELECTOR = 9,                   /* SELECTOR  */
+  YYSYMBOL_CHAR = 10,                      /* CHAR  */
+  YYSYMBOL_NAME = 11,                      /* NAME  */
+  YYSYMBOL_UNKNOWN_CPP_NAME = 12,          /* UNKNOWN_CPP_NAME  */
+  YYSYMBOL_COMPLETE = 13,                  /* COMPLETE  */
+  YYSYMBOL_TYPENAME = 14,                  /* TYPENAME  */
+  YYSYMBOL_CLASSNAME = 15,                 /* CLASSNAME  */
+  YYSYMBOL_OBJC_LBRAC = 16,                /* OBJC_LBRAC  */
+  YYSYMBOL_NAME_OR_INT = 17,               /* NAME_OR_INT  */
+  YYSYMBOL_OPERATOR = 18,                  /* OPERATOR  */
+  YYSYMBOL_STRUCT = 19,                    /* STRUCT  */
+  YYSYMBOL_CLASS = 20,                     /* CLASS  */
+  YYSYMBOL_UNION = 21,                     /* UNION  */
+  YYSYMBOL_ENUM = 22,                      /* ENUM  */
+  YYSYMBOL_SIZEOF = 23,                    /* SIZEOF  */
+  YYSYMBOL_ALIGNOF = 24,                   /* ALIGNOF  */
+  YYSYMBOL_UNSIGNED = 25,                  /* UNSIGNED  */
+  YYSYMBOL_COLONCOLON = 26,                /* COLONCOLON  */
+  YYSYMBOL_TEMPLATE = 27,                  /* TEMPLATE  */
+  YYSYMBOL_ERROR = 28,                     /* ERROR  */
+  YYSYMBOL_NEW = 29,                       /* NEW  */
+  YYSYMBOL_DELETE = 30,                    /* DELETE  */
+  YYSYMBOL_REINTERPRET_CAST = 31,          /* REINTERPRET_CAST  */
+  YYSYMBOL_DYNAMIC_CAST = 32,              /* DYNAMIC_CAST  */
+  YYSYMBOL_STATIC_CAST = 33,               /* STATIC_CAST  */
+  YYSYMBOL_CONST_CAST = 34,                /* CONST_CAST  */
+  YYSYMBOL_ENTRY = 35,                     /* ENTRY  */
+  YYSYMBOL_TYPEOF = 36,                    /* TYPEOF  */
+  YYSYMBOL_DECLTYPE = 37,                  /* DECLTYPE  */
+  YYSYMBOL_TYPEID = 38,                    /* TYPEID  */
+  YYSYMBOL_SIGNED_KEYWORD = 39,            /* SIGNED_KEYWORD  */
+  YYSYMBOL_LONG = 40,                      /* LONG  */
+  YYSYMBOL_SHORT = 41,                     /* SHORT  */
+  YYSYMBOL_INT_KEYWORD = 42,               /* INT_KEYWORD  */
+  YYSYMBOL_CONST_KEYWORD = 43,             /* CONST_KEYWORD  */
+  YYSYMBOL_VOLATILE_KEYWORD = 44,          /* VOLATILE_KEYWORD  */
+  YYSYMBOL_DOUBLE_KEYWORD = 45,            /* DOUBLE_KEYWORD  */
+  YYSYMBOL_RESTRICT = 46,                  /* RESTRICT  */
+  YYSYMBOL_ATOMIC = 47,                    /* ATOMIC  */
+  YYSYMBOL_FLOAT_KEYWORD = 48,             /* FLOAT_KEYWORD  */
+  YYSYMBOL_COMPLEX = 49,                   /* COMPLEX  */
+  YYSYMBOL_DOLLAR_VARIABLE = 50,           /* DOLLAR_VARIABLE  */
+  YYSYMBOL_ASSIGN_MODIFY = 51,             /* ASSIGN_MODIFY  */
+  YYSYMBOL_TRUEKEYWORD = 52,               /* TRUEKEYWORD  */
+  YYSYMBOL_FALSEKEYWORD = 53,              /* FALSEKEYWORD  */
+  YYSYMBOL_54_ = 54,                       /* ','  */
+  YYSYMBOL_ABOVE_COMMA = 55,               /* ABOVE_COMMA  */
+  YYSYMBOL_56_ = 56,                       /* '='  */
+  YYSYMBOL_57_ = 57,                       /* '?'  */
+  YYSYMBOL_OROR = 58,                      /* OROR  */
+  YYSYMBOL_ANDAND = 59,                    /* ANDAND  */
+  YYSYMBOL_60_ = 60,                       /* '|'  */
+  YYSYMBOL_61_ = 61,                       /* '^'  */
+  YYSYMBOL_62_ = 62,                       /* '&'  */
+  YYSYMBOL_EQUAL = 63,                     /* EQUAL  */
+  YYSYMBOL_NOTEQUAL = 64,                  /* NOTEQUAL  */
+  YYSYMBOL_65_ = 65,                       /* '<'  */
+  YYSYMBOL_66_ = 66,                       /* '>'  */
+  YYSYMBOL_LEQ = 67,                       /* LEQ  */
+  YYSYMBOL_GEQ = 68,                       /* GEQ  */
+  YYSYMBOL_LSH = 69,                       /* LSH  */
+  YYSYMBOL_RSH = 70,                       /* RSH  */
+  YYSYMBOL_71_ = 71,                       /* '@'  */
+  YYSYMBOL_72_ = 72,                       /* '+'  */
+  YYSYMBOL_73_ = 73,                       /* '-'  */
+  YYSYMBOL_74_ = 74,                       /* '*'  */
+  YYSYMBOL_75_ = 75,                       /* '/'  */
+  YYSYMBOL_76_ = 76,                       /* '%'  */
+  YYSYMBOL_UNARY = 77,                     /* UNARY  */
+  YYSYMBOL_INCREMENT = 78,                 /* INCREMENT  */
+  YYSYMBOL_DECREMENT = 79,                 /* DECREMENT  */
+  YYSYMBOL_ARROW = 80,                     /* ARROW  */
+  YYSYMBOL_ARROW_STAR = 81,                /* ARROW_STAR  */
+  YYSYMBOL_82_ = 82,                       /* '.'  */
+  YYSYMBOL_DOT_STAR = 83,                  /* DOT_STAR  */
+  YYSYMBOL_84_ = 84,                       /* '['  */
+  YYSYMBOL_85_ = 85,                       /* '('  */
+  YYSYMBOL_BLOCKNAME = 86,                 /* BLOCKNAME  */
+  YYSYMBOL_FILENAME = 87,                  /* FILENAME  */
+  YYSYMBOL_DOTDOTDOT = 88,                 /* DOTDOTDOT  */
+  YYSYMBOL_89_ = 89,                       /* ')'  */
+  YYSYMBOL_90_ = 90,                       /* '!'  */
+  YYSYMBOL_91_ = 91,                       /* '~'  */
+  YYSYMBOL_92_ = 92,                       /* ']'  */
+  YYSYMBOL_93_ = 93,                       /* ':'  */
+  YYSYMBOL_94_ = 94,                       /* '{'  */
+  YYSYMBOL_95_ = 95,                       /* '}'  */
+  YYSYMBOL_YYACCEPT = 96,                  /* $accept  */
+  YYSYMBOL_start = 97,                     /* start  */
+  YYSYMBOL_type_exp = 98,                  /* type_exp  */
+  YYSYMBOL_exp1 = 99,                      /* exp1  */
+  YYSYMBOL_exp = 100,                      /* exp  */
+  YYSYMBOL_101_1 = 101,                    /* $@1  */
+  YYSYMBOL_102_2 = 102,                    /* $@2  */
+  YYSYMBOL_103_3 = 103,                    /* $@3  */
+  YYSYMBOL_msglist = 104,                  /* msglist  */
+  YYSYMBOL_msgarglist = 105,               /* msgarglist  */
+  YYSYMBOL_msgarg = 106,                   /* msgarg  */
+  YYSYMBOL_107_4 = 107,                    /* $@4  */
+  YYSYMBOL_108_5 = 108,                    /* $@5  */
+  YYSYMBOL_lcurly = 109,                   /* lcurly  */
+  YYSYMBOL_arglist = 110,                  /* arglist  */
+  YYSYMBOL_function_method = 111,          /* function_method  */
+  YYSYMBOL_function_method_void = 112,     /* function_method_void  */
+  YYSYMBOL_function_method_void_or_typelist = 113, /* function_method_void_or_typelist  */
+  YYSYMBOL_rcurly = 114,                   /* rcurly  */
+  YYSYMBOL_string_exp = 115,               /* string_exp  */
+  YYSYMBOL_block = 116,                    /* block  */
+  YYSYMBOL_variable = 117,                 /* variable  */
+  YYSYMBOL_qualified_name = 118,           /* qualified_name  */
+  YYSYMBOL_const_or_volatile = 119,        /* const_or_volatile  */
+  YYSYMBOL_single_qualifier = 120,         /* single_qualifier  */
+  YYSYMBOL_qualifier_seq_noopt = 121,      /* qualifier_seq_noopt  */
+  YYSYMBOL_qualifier_seq = 122,            /* qualifier_seq  */
+  YYSYMBOL_ptr_operator = 123,             /* ptr_operator  */
+  YYSYMBOL_124_6 = 124,                    /* $@6  */
+  YYSYMBOL_125_7 = 125,                    /* $@7  */
+  YYSYMBOL_ptr_operator_ts = 126,          /* ptr_operator_ts  */
+  YYSYMBOL_abs_decl = 127,                 /* abs_decl  */
+  YYSYMBOL_direct_abs_decl = 128,          /* direct_abs_decl  */
+  YYSYMBOL_array_mod = 129,                /* array_mod  */
+  YYSYMBOL_func_mod = 130,                 /* func_mod  */
+  YYSYMBOL_type = 131,                     /* type  */
+  YYSYMBOL_scalar_type = 132,              /* scalar_type  */
+  YYSYMBOL_typebase = 133,                 /* typebase  */
+  YYSYMBOL_type_name = 134,                /* type_name  */
+  YYSYMBOL_parameter_typelist = 135,       /* parameter_typelist  */
+  YYSYMBOL_nonempty_typelist = 136,        /* nonempty_typelist  */
+  YYSYMBOL_ptype = 137,                    /* ptype  */
+  YYSYMBOL_conversion_type_id = 138,       /* conversion_type_id  */
+  YYSYMBOL_conversion_declarator = 139,    /* conversion_declarator  */
+  YYSYMBOL_const_and_volatile = 140,       /* const_and_volatile  */
+  YYSYMBOL_const_or_volatile_noopt = 141,  /* const_or_volatile_noopt  */
+  YYSYMBOL_oper = 142,                     /* oper  */
+  YYSYMBOL_field_name = 143,               /* field_name  */
+  YYSYMBOL_name = 144,                     /* name  */
+  YYSYMBOL_name_not_typename = 145         /* name_not_typename  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
 
-/* Line 264 of yacc.c  */
-#line 159 "c-exp.y"
+/* Second part of user prologue.  */
+#line 160 "c-exp.y"
 
 /* YYSTYPE gets defined by %union */
 static int parse_number (struct parser_state *par_state,
@@ -383,39 +563,82 @@ static void c_print_token (FILE *file, i
 #define YYPRINT(FILE, TYPE, VALUE) c_print_token (FILE, TYPE, VALUE)
 #endif
 
+#line 567 "c-exp.c.tmp"
 
-/* Line 264 of yacc.c  */
-#line 389 "c-exp.c.tmp"
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
+#else
 typedef signed char yytype_int8;
+#endif
+
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
 #else
-typedef short int yytype_int8;
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef unsigned short int yytype_uint16;
+typedef short yytype_uint8;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
 #else
-typedef short int yytype_int16;
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -423,55 +646,100 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int16 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
 #else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if !defined yyoverflow
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
 
@@ -487,11 +755,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -499,8 +767,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -514,125 +782,130 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined xmalloc) \
-	     && (defined YYFREE || defined xfree)))
+             && (defined YYFREE || defined xfree)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC xmalloc
-#   if ! defined xmalloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xmalloc && ! defined EXIT_SUCCESS
 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE xfree
-#   if ! defined xfree && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xfree && ! defined EXIT_SUCCESS
 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYPTRDIFF_T yynewbytes;                                         \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
+      }                                                                 \
+    while (0)
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYPTRDIFF_T yyi;                      \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  171
+#define YYFINAL  177
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1712
+#define YYLAST   1741
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  90
+#define YYNTOKENS  96
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  50
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  275
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  432
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   320
-
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+#define YYNRULES  284
+/* YYNSTATES -- Number of states.  */
+#define YYNSTATES  441
+
+#define YYMAXUTOK   326
+
+
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex.  */
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    84,     2,     2,     2,    70,    56,     2,
-      76,    83,    68,    66,    48,    67,    74,    69,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    87,     2,
-      59,    50,    60,    51,    65,     2,     2,     2,     2,     2,
+       2,     2,     2,    90,     2,     2,     2,    76,    62,     2,
+      85,    89,    74,    72,    54,    73,    82,    75,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    93,     2,
+      65,    56,    66,    57,    71,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    75,     2,    86,    55,     2,     2,     2,     2,     2,
+       2,    84,     2,    92,    61,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    88,    54,    89,    85,     2,     2,     2,
+       2,     2,     2,    94,    60,    95,    91,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -650,911 +923,760 @@ static const yytype_uint8 yytranslate[]
       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,    49,    52,    53,    57,    58,    61,    62,
-      63,    64,    71,    72,    73,    77,    78,    79,    80,    81,
-      82
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    55,
+      58,    59,    63,    64,    67,    68,    69,    70,    77,    78,
+      79,    80,    81,    83,    86,    87,    88
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     5,     7,     9,    14,    19,    24,    26,
-      30,    33,    36,    39,    42,    45,    48,    51,    54,    57,
-      60,    65,    70,    73,    78,    82,    87,    91,    96,   102,
-     106,   110,   114,   119,   123,   128,   134,   138,   142,   147,
-     152,   153,   159,   160,   166,   167,   173,   175,   177,   179,
-     182,   186,   189,   192,   193,   199,   203,   204,   210,   212,
-     213,   215,   219,   225,   230,   232,   234,   236,   240,   242,
-     246,   251,   256,   260,   264,   268,   272,   276,   280,   284,
-     288,   292,   296,   300,   304,   308,   312,   316,   320,   324,
-     328,   332,   336,   342,   346,   350,   352,   354,   356,   358,
-     360,   362,   367,   372,   380,   388,   396,   404,   406,   409,
-     411,   413,   415,   417,   419,   421,   425,   428,   432,   436,
-     441,   447,   449,   452,   454,   457,   459,   460,   464,   466,
-     468,   470,   471,   472,   477,   478,   482,   484,   487,   489,
-     492,   494,   497,   499,   501,   505,   508,   510,   513,   515,
-     518,   521,   525,   529,   532,   536,   538,   540,   542,   544,
-     546,   549,   553,   556,   560,   564,   568,   571,   574,   578,
-     583,   587,   591,   596,   600,   605,   609,   614,   617,   621,
-     624,   628,   631,   635,   637,   640,   643,   646,   650,   653,
-     656,   660,   663,   666,   670,   673,   676,   680,   683,   685,
-     688,   690,   696,   699,   702,   704,   706,   708,   710,   712,
-     716,   718,   722,   724,   727,   730,   731,   734,   737,   740,
-     742,   744,   746,   749,   752,   757,   762,   767,   772,   775,
-     778,   781,   784,   787,   790,   793,   796,   799,   802,   805,
-     808,   811,   814,   817,   820,   823,   826,   829,   832,   835,
-     838,   841,   844,   847,   850,   853,   857,   861,   865,   868,
-     870,   872,   874,   876,   878,   880,   882,   884,   886,   888,
-     890,   892,   894,   896,   898,   900
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
-{
-      91,     0,    -1,    93,    -1,    92,    -1,   126,    -1,    34,
-      76,    94,    83,    -1,    34,    76,   126,    83,    -1,    35,
-      76,    94,    83,    -1,    94,    -1,    93,    48,    94,    -1,
-      68,    94,    -1,    56,    94,    -1,    67,    94,    -1,    66,
-      94,    -1,    84,    94,    -1,    85,    94,    -1,    72,    94,
-      -1,    71,    94,    -1,    94,    72,    -1,    94,    71,    -1,
-      36,    76,    94,    83,    -1,    36,    76,    92,    83,    -1,
-      21,    94,    -1,    22,    76,    92,    83,    -1,    94,    79,
-     137,    -1,    94,    79,   137,    11,    -1,    94,    79,    11,
-      -1,    94,    79,    85,   138,    -1,    94,    79,    85,   138,
-      11,    -1,    94,    79,   112,    -1,    94,    78,    94,    -1,
-      94,    74,   137,    -1,    94,    74,   137,    11,    -1,    94,
-      74,    11,    -1,    94,    74,    85,   138,    -1,    94,    74,
-      85,   138,    11,    -1,    94,    74,   112,    -1,    94,    77,
-      94,    -1,    94,    75,    93,    86,    -1,    94,    14,    93,
-      86,    -1,    -1,    14,    12,    95,    98,    86,    -1,    -1,
-      14,    13,    96,    98,    86,    -1,    -1,    14,    94,    97,
-      98,    86,    -1,   138,    -1,    99,    -1,   100,    -1,    99,
-     100,    -1,   138,    87,    94,    -1,    87,    94,    -1,    48,
-      94,    -1,    -1,    94,    76,   101,   104,    83,    -1,    94,
-      76,    83,    -1,    -1,    10,    76,   102,   104,    83,    -1,
-      88,    -1,    -1,    94,    -1,   104,    48,    94,    -1,    94,
-      76,   129,    83,   114,    -1,    94,    76,    83,   114,    -1,
-     105,    -1,   105,    -1,   106,    -1,   107,    24,   138,    -1,
-      89,    -1,   103,   104,   108,    -1,   103,    92,   108,    94,
-      -1,    76,    92,    83,    94,    -1,    76,    93,    83,    -1,
-      94,    65,    94,    -1,    94,    68,    94,    -1,    94,    69,
-      94,    -1,    94,    70,    94,    -1,    94,    66,    94,    -1,
-      94,    67,    94,    -1,    94,    64,    94,    -1,    94,    63,
-      94,    -1,    94,    58,    94,    -1,    94,    57,    94,    -1,
-      94,    62,    94,    -1,    94,    61,    94,    -1,    94,    59,
-      94,    -1,    94,    60,    94,    -1,    94,    56,    94,    -1,
-      94,    55,    94,    -1,    94,    54,    94,    -1,    94,    53,
-      94,    -1,    94,    52,    94,    -1,    94,    51,    94,    87,
-      94,    -1,    94,    50,    94,    -1,    94,    45,    94,    -1,
-       3,    -1,     8,    -1,    15,    -1,     4,    -1,   111,    -1,
-      44,    -1,     7,    76,   138,    83,    -1,    21,    76,   126,
-      83,    -1,    29,    59,    92,    60,    76,    94,    83,    -1,
-      31,    59,    92,    60,    76,    94,    83,    -1,    30,    59,
-      92,    60,    76,    94,    83,    -1,    32,    59,    92,    60,
-      76,    94,    83,    -1,     5,    -1,   109,     5,    -1,   109,
-      -1,     6,    -1,    46,    -1,    47,    -1,    80,    -1,    81,
-      -1,   110,    24,   138,    -1,   139,    33,    -1,   110,    24,
-     138,    -1,    12,    24,   138,    -1,    12,    24,    85,   138,
-      -1,    12,    24,   138,    24,   138,    -1,   112,    -1,    24,
-     139,    -1,   139,    -1,    65,     9,    -1,   135,    -1,    -1,
-     114,   113,   114,    -1,   115,    -1,   135,    -1,   116,    -1,
-      -1,    -1,   118,    68,   119,   117,    -1,    -1,    68,   120,
-     117,    -1,    56,    -1,    56,   118,    -1,    53,    -1,    53,
-     118,    -1,   118,    -1,   121,   123,    -1,   121,    -1,   123,
-      -1,    76,   122,    83,    -1,   123,   124,    -1,   124,    -1,
-     123,   125,    -1,   125,    -1,    75,    86,    -1,    14,    86,
-      -1,    75,     3,    86,    -1,    14,     3,    86,    -1,    76,
-      83,    -1,    76,   129,    83,    -1,   131,    -1,    12,    -1,
-      40,    -1,    38,    -1,    39,    -1,    38,    40,    -1,    38,
-      37,    40,    -1,    38,    37,    -1,    37,    38,    40,    -1,
-      23,    38,    40,    -1,    38,    23,    40,    -1,    38,    23,
-      -1,    38,    38,    -1,    38,    38,    40,    -1,    38,    38,
-      37,    40,    -1,    38,    38,    37,    -1,    37,    38,    38,
-      -1,    37,    38,    38,    40,    -1,    23,    38,    38,    -1,
-      23,    38,    38,    40,    -1,    38,    38,    23,    -1,    38,
-      38,    23,    40,    -1,    39,    40,    -1,    39,    37,    40,
-      -1,    39,    37,    -1,    23,    39,    40,    -1,    39,    23,
-      -1,    39,    23,    40,    -1,    43,    -1,    38,    43,    -1,
-      17,   138,    -1,    17,    11,    -1,    17,   138,    11,    -1,
-      18,   138,    -1,    18,    11,    -1,    18,   138,    11,    -1,
-      19,   138,    -1,    19,    11,    -1,    19,   138,    11,    -1,
-      20,   138,    -1,    20,    11,    -1,    20,   138,    11,    -1,
-      23,   128,    -1,    23,    -1,    37,   128,    -1,    37,    -1,
-      25,   138,    59,   126,    60,    -1,   116,   127,    -1,   127,
-     116,    -1,    12,    -1,    40,    -1,    38,    -1,    39,    -1,
-     130,    -1,   130,    48,    82,    -1,   126,    -1,   130,    48,
-     126,    -1,   127,    -1,   131,   122,    -1,   127,   133,    -1,
-      -1,   118,   133,    -1,    41,    42,    -1,    42,    41,    -1,
-     134,    -1,    41,    -1,    42,    -1,    16,    27,    -1,    16,
-      28,    -1,    16,    27,    75,    86,    -1,    16,    28,    75,
-      86,    -1,    16,    27,    14,    86,    -1,    16,    28,    14,
-      86,    -1,    16,    66,    -1,    16,    67,    -1,    16,    68,
-      -1,    16,    69,    -1,    16,    70,    -1,    16,    55,    -1,
-      16,    56,    -1,    16,    54,    -1,    16,    85,    -1,    16,
-      84,    -1,    16,    50,    -1,    16,    59,    -1,    16,    60,
-      -1,    16,    45,    -1,    16,    64,    -1,    16,    63,    -1,
-      16,    58,    -1,    16,    57,    -1,    16,    62,    -1,    16,
-      61,    -1,    16,    53,    -1,    16,    52,    -1,    16,    72,
-      -1,    16,    71,    -1,    16,    48,    -1,    16,    78,    -1,
-      16,    79,    -1,    16,    76,    83,    -1,    16,    75,    86,
-      -1,    16,    14,    86,    -1,    16,   132,    -1,   138,    -1,
-      43,    -1,    40,    -1,    38,    -1,    39,    -1,    37,    -1,
-      23,    -1,     9,    -1,    80,    -1,    12,    -1,    15,    -1,
-      10,    -1,   136,    -1,     9,    -1,    80,    -1,   136,    -1,
-      10,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+static const yytype_int16 yyrline[] =
 {
-       0,   277,   277,   278,   281,   285,   289,   295,   302,   303,
-     308,   312,   316,   320,   324,   328,   332,   336,   340,   344,
-     348,   352,   356,   360,   364,   370,   377,   387,   393,   400,
-     408,   412,   418,   425,   435,   441,   448,   456,   460,   464,
-     474,   473,   498,   497,   514,   513,   522,   524,   527,   528,
-     531,   533,   535,   542,   539,   553,   563,   562,   588,   592,
-     595,   599,   603,   624,   636,   643,   644,   647,   655,   658,
-     665,   669,   673,   679,   683,   687,   691,   695,   699,   703,
-     707,   711,   715,   719,   723,   727,   731,   735,   739,   743,
-     747,   751,   755,   759,   763,   770,   777,   786,   799,   806,
-     809,   815,   822,   841,   846,   850,   854,   861,   878,   896,
-     929,   938,   946,   956,   964,   970,   983,   998,  1017,  1030,
-    1054,  1063,  1064,  1094,  1172,  1179,  1180,  1183,  1186,  1187,
-    1191,  1192,  1197,  1196,  1200,  1199,  1202,  1204,  1206,  1208,
-    1212,  1219,  1221,  1222,  1225,  1227,  1235,  1243,  1250,  1258,
-    1260,  1262,  1264,  1268,  1273,  1285,  1299,  1301,  1304,  1307,
-    1310,  1313,  1316,  1319,  1322,  1325,  1328,  1331,  1334,  1337,
-    1340,  1343,  1346,  1349,  1352,  1355,  1358,  1361,  1364,  1367,
-    1370,  1373,  1376,  1379,  1384,  1389,  1394,  1400,  1406,  1411,
-    1417,  1423,  1428,  1434,  1440,  1444,  1449,  1455,  1458,  1461,
-    1464,  1470,  1475,  1477,  1481,  1482,  1489,  1496,  1506,  1508,
-    1517,  1526,  1533,  1534,  1541,  1545,  1546,  1549,  1550,  1553,
-    1557,  1559,  1563,  1565,  1567,  1569,  1571,  1573,  1575,  1577,
-    1579,  1581,  1583,  1585,  1587,  1589,  1591,  1593,  1595,  1597,
-    1599,  1601,  1641,  1643,  1645,  1647,  1649,  1651,  1653,  1655,
-    1657,  1659,  1661,  1663,  1665,  1667,  1669,  1671,  1673,  1696,
-    1697,  1698,  1699,  1700,  1701,  1702,  1705,  1706,  1707,  1708,
-    1709,  1710,  1713,  1714,  1722,  1735
+       0,   280,   280,   281,   284,   288,   292,   298,   305,   306,
+     311,   315,   319,   323,   327,   331,   335,   339,   343,   347,
+     351,   355,   359,   363,   367,   373,   380,   390,   396,   403,
+     411,   415,   421,   428,   438,   444,   451,   459,   463,   467,
+     477,   476,   501,   500,   517,   516,   525,   527,   530,   531,
+     534,   536,   538,   545,   542,   556,   566,   565,   591,   595,
+     598,   602,   606,   627,   639,   646,   647,   650,   658,   661,
+     668,   672,   676,   682,   686,   690,   694,   698,   702,   706,
+     710,   714,   718,   722,   726,   730,   734,   738,   742,   746,
+     750,   754,   758,   762,   766,   773,   780,   796,   805,   818,
+     825,   846,   849,   855,   862,   881,   886,   890,   894,   901,
+     918,   936,   969,   978,   986,   996,  1004,  1010,  1023,  1038,
+    1057,  1070,  1094,  1103,  1104,  1134,  1212,  1213,  1217,  1219,
+    1221,  1223,  1225,  1233,  1234,  1238,  1239,  1244,  1243,  1247,
+    1246,  1249,  1251,  1253,  1255,  1259,  1266,  1268,  1269,  1272,
+    1274,  1282,  1290,  1297,  1305,  1307,  1309,  1311,  1315,  1320,
+    1332,  1339,  1342,  1345,  1348,  1351,  1354,  1357,  1360,  1363,
+    1366,  1369,  1372,  1375,  1378,  1381,  1384,  1387,  1390,  1393,
+    1396,  1399,  1402,  1405,  1408,  1411,  1414,  1417,  1422,  1427,
+    1432,  1435,  1438,  1441,  1457,  1459,  1461,  1465,  1470,  1476,
+    1482,  1487,  1493,  1499,  1504,  1510,  1516,  1520,  1525,  1534,
+    1539,  1541,  1545,  1546,  1553,  1560,  1570,  1572,  1581,  1590,
+    1597,  1598,  1605,  1609,  1610,  1613,  1614,  1617,  1621,  1623,
+    1627,  1629,  1631,  1633,  1635,  1637,  1639,  1641,  1643,  1645,
+    1647,  1649,  1651,  1653,  1655,  1657,  1659,  1661,  1663,  1665,
+    1705,  1707,  1709,  1711,  1713,  1715,  1717,  1719,  1721,  1723,
+    1725,  1727,  1729,  1731,  1733,  1735,  1737,  1759,  1760,  1761,
+    1762,  1763,  1764,  1765,  1766,  1769,  1770,  1771,  1772,  1773,
+    1774,  1777,  1778,  1786,  1799
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "INT", "FLOAT", "STRING", "NSSTRING",
-  "SELECTOR", "CHAR", "NAME", "UNKNOWN_CPP_NAME", "COMPLETE", "TYPENAME",
-  "CLASSNAME", "OBJC_LBRAC", "NAME_OR_INT", "OPERATOR", "STRUCT", "CLASS",
-  "UNION", "ENUM", "SIZEOF", "ALIGNOF", "UNSIGNED", "COLONCOLON",
-  "TEMPLATE", "ERROR", "NEW", "DELETE", "REINTERPRET_CAST", "DYNAMIC_CAST",
+  "\"end of file\"", "error", "\"invalid token\"", "INT", "COMPLEX_INT",
+  "FLOAT", "COMPLEX_FLOAT", "STRING", "NSSTRING", "SELECTOR", "CHAR",
+  "NAME", "UNKNOWN_CPP_NAME", "COMPLETE", "TYPENAME", "CLASSNAME",
+  "OBJC_LBRAC", "NAME_OR_INT", "OPERATOR", "STRUCT", "CLASS", "UNION",
+  "ENUM", "SIZEOF", "ALIGNOF", "UNSIGNED", "COLONCOLON", "TEMPLATE",
+  "ERROR", "NEW", "DELETE", "REINTERPRET_CAST", "DYNAMIC_CAST",
   "STATIC_CAST", "CONST_CAST", "ENTRY", "TYPEOF", "DECLTYPE", "TYPEID",
   "SIGNED_KEYWORD", "LONG", "SHORT", "INT_KEYWORD", "CONST_KEYWORD",
-  "VOLATILE_KEYWORD", "DOUBLE_KEYWORD", "DOLLAR_VARIABLE", "ASSIGN_MODIFY",
+  "VOLATILE_KEYWORD", "DOUBLE_KEYWORD", "RESTRICT", "ATOMIC",
+  "FLOAT_KEYWORD", "COMPLEX", "DOLLAR_VARIABLE", "ASSIGN_MODIFY",
   "TRUEKEYWORD", "FALSEKEYWORD", "','", "ABOVE_COMMA", "'='", "'?'",
-  "OROR", "ANDAND", "'|'", "'^'", "'&'", "NOTEQUAL", "EQUAL", "'<'", "'>'",
-  "GEQ", "LEQ", "RSH", "LSH", "'@'", "'+'", "'-'", "'*'", "'/'", "'%'",
-  "DECREMENT", "INCREMENT", "UNARY", "'.'", "'['", "'('", "DOT_STAR",
-  "ARROW_STAR", "ARROW", "BLOCKNAME", "FILENAME", "DOTDOTDOT", "')'",
+  "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQUAL", "NOTEQUAL", "'<'", "'>'",
+  "LEQ", "GEQ", "LSH", "RSH", "'@'", "'+'", "'-'", "'*'", "'/'", "'%'",
+  "UNARY", "INCREMENT", "DECREMENT", "ARROW", "ARROW_STAR", "'.'",
+  "DOT_STAR", "'['", "'('", "BLOCKNAME", "FILENAME", "DOTDOTDOT", "')'",
   "'!'", "'~'", "']'", "':'", "'{'", "'}'", "$accept", "start", "type_exp",
   "exp1", "exp", "$@1", "$@2", "$@3", "msglist", "msgarglist", "msgarg",
   "$@4", "$@5", "lcurly", "arglist", "function_method",
   "function_method_void", "function_method_void_or_typelist", "rcurly",
-  "string_exp", "block", "variable", "qualified_name", "space_identifier",
-  "const_or_volatile", "cv_with_space_id",
-  "const_or_volatile_or_space_identifier_noopt",
-  "const_or_volatile_or_space_identifier", "ptr_operator", "$@6", "$@7",
-  "ptr_operator_ts", "abs_decl", "direct_abs_decl", "array_mod",
-  "func_mod", "type", "typebase", "type_name", "parameter_typelist",
-  "nonempty_typelist", "ptype", "conversion_type_id",
-  "conversion_declarator", "const_and_volatile", "const_or_volatile_noopt",
-  "oper", "field_name", "name", "name_not_typename", 0
+  "string_exp", "block", "variable", "qualified_name", "const_or_volatile",
+  "single_qualifier", "qualifier_seq_noopt", "qualifier_seq",
+  "ptr_operator", "$@6", "$@7", "ptr_operator_ts", "abs_decl",
+  "direct_abs_decl", "array_mod", "func_mod", "type", "scalar_type",
+  "typebase", "type_name", "parameter_typelist", "nonempty_typelist",
+  "ptype", "conversion_type_id", "conversion_declarator",
+  "const_and_volatile", "const_or_volatile_noopt", "oper", "field_name",
+  "name", "name_not_typename", YY_NULLPTRPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+#ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,    44,   303,
-      61,    63,   304,   305,   124,    94,    38,   306,   307,    60,
-      62,   308,   309,   310,   311,    64,    43,    45,    42,    47,
-      37,   312,   313,   314,    46,    91,    40,   315,   316,   317,
-     318,   319,   320,    41,    33,   126,    93,    58,   123,   125
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,    44,   309,    61,    63,   310,   311,
+     124,    94,    38,   312,   313,    60,    62,   314,   315,   316,
+     317,    64,    43,    45,    42,    47,    37,   318,   319,   320,
+     321,   322,    46,   323,    91,    40,   324,   325,   326,    41,
+      33,   126,    93,    58,   123,   125
 };
-# endif
+#endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    90,    91,    91,    92,    92,    92,    92,    93,    93,
-      94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
-      94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
-      94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
-      95,    94,    96,    94,    97,    94,    98,    98,    99,    99,
-     100,   100,   100,   101,    94,    94,   102,    94,   103,   104,
-     104,   104,   105,   106,    94,   107,   107,    94,   108,    94,
-      94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
-      94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
-      94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
-      94,    94,    94,    94,    94,    94,    94,   109,   109,    94,
-      94,    94,    94,   110,   110,   110,   111,   111,   112,   112,
-     112,   111,   111,   111,   113,   114,   114,   115,   116,   116,
-     117,   117,   119,   118,   120,   118,   118,   118,   118,   118,
-     121,   122,   122,   122,   123,   123,   123,   123,   123,   124,
-     124,   124,   124,   125,   125,   126,   127,   127,   127,   127,
-     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
-     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
-     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
-     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
-     127,   127,   127,   127,   128,   128,   128,   128,   129,   129,
-     130,   130,   131,   131,   132,   133,   133,   134,   134,   135,
-     135,   135,   136,   136,   136,   136,   136,   136,   136,   136,
-     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
-     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
-     136,   136,   136,   136,   136,   136,   136,   136,   136,   137,
-     137,   137,   137,   137,   137,   137,   138,   138,   138,   138,
-     138,   138,   139,   139,   139,   139
-};
+#define YYPACT_NINF (-324)
+
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+#define YYTABLE_NINF (-136)
+
+#define yytable_value_is_error(Yyn) \
+  0
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
 {
-       0,     2,     1,     1,     1,     4,     4,     4,     1,     3,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       4,     4,     2,     4,     3,     4,     3,     4,     5,     3,
-       3,     3,     4,     3,     4,     5,     3,     3,     4,     4,
-       0,     5,     0,     5,     0,     5,     1,     1,     1,     2,
-       3,     2,     2,     0,     5,     3,     0,     5,     1,     0,
-       1,     3,     5,     4,     1,     1,     1,     3,     1,     3,
-       4,     4,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     5,     3,     3,     1,     1,     1,     1,     1,
-       1,     4,     4,     7,     7,     7,     7,     1,     2,     1,
-       1,     1,     1,     1,     1,     3,     2,     3,     3,     4,
-       5,     1,     2,     1,     2,     1,     0,     3,     1,     1,
-       1,     0,     0,     4,     0,     3,     1,     2,     1,     2,
-       1,     2,     1,     1,     3,     2,     1,     2,     1,     2,
-       2,     3,     3,     2,     3,     1,     1,     1,     1,     1,
-       2,     3,     2,     3,     3,     3,     2,     2,     3,     4,
-       3,     3,     4,     3,     4,     3,     4,     2,     3,     2,
-       3,     2,     3,     1,     2,     2,     2,     3,     2,     2,
-       3,     2,     2,     3,     2,     2,     3,     2,     1,     2,
-       1,     5,     2,     2,     1,     1,     1,     1,     1,     3,
-       1,     3,     1,     2,     2,     0,     2,     2,     2,     1,
-       1,     1,     2,     2,     4,     4,     4,     4,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     3,     3,     3,     2,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1
+     407,  -324,  -324,  -324,  -324,  -324,  -324,   -56,  -324,  -324,
+     -43,    42,   591,  -324,   854,    78,   236,   259,   267,   683,
+     -20,    95,    29,    13,    28,    53,    86,    96,   -14,    -9,
+     105,   321,   588,    20,  -324,  -324,  -324,  -324,  -324,  -324,
+    -324,   326,  -324,  -324,  -324,   775,   180,   775,   775,   775,
+     775,   775,   407,   166,  -324,   775,   775,  -324,   198,  -324,
+     147,  1379,   407,   178,  -324,   185,   205,   188,  -324,  -324,
+    -324,  1670,    85,  -324,  -324,    85,   141,  -324,   184,    13,
+    -324,    52,    42,  -324,  1379,  -324,   128,    16,    18,  -324,
+    -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,
+    -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,
+    -324,  -324,  -324,  -324,   136,   153,  -324,  -324,   985,  -324,
+    -324,  -324,  -324,  -324,  -324,  -324,  -324,   223,  -324,   232,
+    -324,   238,  -324,   239,    42,   407,   208,  1634,  -324,    79,
+     213,  -324,  -324,  -324,  -324,  -324,   191,  1634,  1634,  1634,
+    1634,   499,   775,   407,   125,  -324,  -324,   215,   216,   171,
+    -324,  -324,   217,   225,  -324,  -324,   208,  -324,   208,   208,
+     208,   208,   208,   186,    -1,   208,   208,  -324,   775,   775,
+     775,   775,   775,   775,   775,   775,   775,   775,   775,   775,
+     775,   775,   775,   775,   775,   775,   775,   775,   775,   775,
+     775,   775,  -324,  -324,   221,   775,   284,   775,   775,  1021,
+     187,  1379,     2,    13,  -324,    13,    85,  -324,   197,    14,
+      11,   209,  -324,    19,   965,   220,    32,  -324,    39,  -324,
+    -324,  -324,   210,   775,    13,   274,    40,    40,    40,  -324,
+     211,   214,   226,   227,  -324,  -324,   143,  -324,  -324,  -324,
+    -324,  -324,   219,   224,   263,  -324,  -324,  1670,   249,   255,
+     261,   262,  1127,   244,  1163,   247,  1199,   295,  -324,  -324,
+    -324,   296,   297,  -324,  -324,  -324,   775,  -324,  1379,    -5,
+    1379,  1379,   890,  1440,  1474,  1501,   314,  1535,  1562,  1562,
+     484,   484,   484,   484,   576,   576,   668,   760,   760,   208,
+     208,   208,  -324,    42,  -324,  -324,  -324,  -324,  -324,  -324,
+    -324,    13,  -324,   329,  -324,    65,  -324,    13,  -324,   330,
+      65,     6,    35,   775,  -324,   257,   293,  -324,   775,   775,
+    -324,  -324,   323,   258,  -324,   220,   220,    85,   260,  -324,
+    -324,   266,   268,  -324,    39,  1057,  -324,  -324,  -324,    21,
+    -324,    13,   775,   775,   264,    40,  -324,   271,   277,   281,
+    -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,   325,
+     315,   316,   318,   319,  -324,  -324,  -324,  -324,  -324,  -324,
+    -324,  -324,   208,  -324,   775,   346,  -324,   392,  -324,  -324,
+     376,   379,  -324,  -324,  -324,    23,    64,  1093,   208,  1379,
+    -324,  -324,   116,  -324,  -324,  -324,    85,  -324,  -324,  1379,
+    1379,  -324,  -324,   271,   775,  -324,  -324,  -324,   775,   775,
+     775,   775,  1413,  -324,  -324,  -324,  -324,  -324,  -324,  -324,
+    -324,   116,  1379,  1235,  1271,  1307,  1343,  -324,  -324,  -324,
+    -324
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint16 yydefact[] =
-{
-     126,    95,    98,   107,   110,     0,    96,   272,   275,   156,
-       0,    97,   126,     0,     0,     0,     0,     0,     0,   198,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   200,
-     158,   159,   157,   220,   221,   183,   100,   111,   112,     0,
-       0,     0,     0,     0,     0,   126,   273,   114,     0,     0,
-      58,     0,     3,     2,     8,    59,    64,    66,     0,   109,
-       0,    99,   121,     0,   128,   126,     4,   212,   155,   219,
-     129,   274,   123,     0,    56,     0,    40,    42,    44,   156,
-       0,   222,   223,   241,   252,   238,   249,   248,   235,   233,
-     234,   245,   244,   239,   240,   247,   246,   243,   242,   228,
-     229,   230,   231,   232,   251,   250,     0,     0,   253,   254,
-     237,   236,   215,   258,   266,   270,   186,   268,   269,   267,
-     271,   185,   189,   188,   192,   191,   195,   194,     0,   126,
-      22,   126,   204,   206,   207,   205,   197,   275,   273,   122,
-       0,   126,   126,   126,   126,   126,     0,   126,   206,   207,
-     199,   166,   162,   167,   160,   184,   181,   179,   177,   217,
-     218,    11,    13,    12,    10,    17,    16,     0,     0,    14,
-      15,     1,     0,     0,     0,     0,     0,     0,     0,     0,
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_int16 yydefact[] =
+{
+       0,    95,    96,    99,   100,   109,   112,     0,    97,   281,
+     284,   194,     0,    98,     0,     0,     0,     0,     0,     0,
+       0,   191,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   193,   162,   163,   161,   128,   129,   187,   131,   130,
+     188,     0,   102,   113,   114,     0,     0,     0,     0,     0,
+       0,     0,     0,   282,   116,     0,     0,    58,     0,     3,
+       2,     8,    59,    64,    66,     0,   111,     0,   101,   123,
+     133,     0,     0,     4,   195,   220,   160,   283,   125,     0,
+      56,     0,    40,    42,    44,   194,     0,   230,   231,   249,
+     260,   246,   257,   256,   243,   241,   242,   252,   253,   247,
+     248,   254,   255,   250,   251,   236,   237,   238,   239,   240,
+     258,   259,   262,   261,     0,     0,   245,   244,   223,   266,
+     275,   279,   198,   277,   278,   276,   280,   197,   201,   200,
+     204,   203,   207,   206,     0,     0,    22,     0,   212,   214,
+     215,   213,   190,   284,   282,   124,     0,     0,     0,     0,
+       0,     0,     0,     0,   214,   215,   192,   170,   166,   171,
+     164,   189,   185,   183,   181,   196,    11,   132,    13,    12,
+      10,    16,    17,     0,     0,    14,    15,     1,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    19,    18,     0,     0,
-      53,     0,     0,     0,     0,    60,     0,     0,   108,     0,
-       0,   126,   202,   203,     0,   138,   136,   134,     0,   126,
-     140,   142,   213,   143,   146,   148,   116,     0,    59,     0,
-     118,     0,     0,     0,   257,     0,     0,     0,     0,   256,
-     255,   215,   214,   187,   190,   193,   196,     0,     0,   173,
-     164,   180,   126,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   171,   163,   165,   161,   175,   170,   168,   182,
-     178,     0,    72,     9,     0,    94,    93,     0,    91,    90,
-      89,    88,    87,    82,    81,    85,    86,    84,    83,    80,
-      79,    73,    77,    78,    74,    75,    76,    33,   268,   265,
-     264,   262,   263,   261,   260,     0,    36,    31,   259,     0,
-      55,    59,   210,     0,   208,    37,    30,    26,     0,    29,
-      24,    68,     0,     0,    69,    67,   117,   124,   127,   125,
-       0,   150,   139,   137,   131,     0,   149,   153,     0,     0,
-     132,   141,   126,   145,   147,   101,     0,   119,     0,     0,
-       0,     0,    47,    48,    46,     0,     0,   226,   224,   227,
-     225,   132,   216,   102,    23,   174,     0,     0,     0,     0,
-       0,     5,     6,     7,    21,    20,   172,   176,   169,    71,
-      39,     0,    34,    32,    38,    63,     0,   126,   126,    27,
-      25,    70,    61,   152,   130,   135,   151,   144,   154,   131,
-      57,   120,    52,    51,    41,    49,     0,     0,    43,    45,
-     201,     0,     0,     0,     0,    92,    35,    54,    62,   209,
-     211,    28,   133,    50,     0,     0,     0,     0,   103,   105,
-     104,   106
-};
-
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,    51,   167,   168,    54,   231,   232,   233,   351,   352,
-     353,   311,   228,    55,   206,    56,    57,    58,   322,    59,
-      60,    61,    62,   211,    63,    64,    65,   395,   220,   399,
-     334,   221,   222,   223,   224,   225,    66,    67,   136,   339,
-     314,    68,   113,   242,    69,    70,    71,   307,   354,    72
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    18,    19,     0,     0,     0,     0,     0,    53,
+       0,    60,     0,     0,   110,     0,   210,   134,   211,     0,
+     143,   141,   139,     0,     0,   145,   147,   221,   148,   151,
+     153,   118,     0,    59,     0,   120,     0,     0,     0,   265,
+       0,     0,     0,     0,   264,   263,   223,   222,   199,   202,
+     205,   208,     0,     0,   177,   168,   184,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   175,   167,   169,
+     165,   179,   174,   172,   186,   182,     0,    72,     9,     0,
+      94,    93,     0,    91,    90,    89,    88,    87,    81,    82,
+      85,    86,    83,    84,    79,    80,    73,    77,    78,    74,
+      75,    76,    26,   277,   274,   273,   271,   272,   270,   268,
+     269,     0,    29,    24,   267,    30,    33,     0,    36,    31,
+      37,     0,    55,    59,   218,     0,   216,    68,     0,     0,
+      69,    67,   119,     0,   155,   144,   142,   136,     0,   154,
+     158,     0,     0,   137,   146,     0,   150,   152,   103,     0,
+     121,     0,     0,     0,     0,    47,    48,    46,     0,     0,
+     234,   232,   235,   233,   137,   224,   104,    23,   178,     0,
+       0,     0,     0,     0,     5,     6,     7,    21,    20,   176,
+     180,   173,    71,    39,     0,    27,    25,    34,    32,    38,
+     228,   229,    63,   227,   126,     0,   127,     0,    70,    61,
+     157,   135,   140,   156,   149,   159,   136,    57,   122,    52,
+      51,    41,    49,     0,     0,    43,    45,   209,     0,     0,
+       0,     0,    92,    28,    35,   225,   226,    54,    62,   217,
+     219,   138,    50,     0,     0,     0,     0,   105,   107,   106,
+     108
 };
 
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -221
-static const yytype_int16 yypact[] =
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
 {
-     488,  -221,  -221,  -221,  -221,   -25,  -221,  -221,    -5,    49,
-     660,  -221,   907,    67,    77,   143,   200,   746,    24,   195,
-      27,   255,    31,    36,    51,    60,    54,    58,    80,   215,
-     165,   201,  -221,    97,   122,  -221,  -221,  -221,  -221,   832,
-     832,   832,   832,   832,   832,   488,   166,  -221,   832,   832,
-    -221,   194,  -221,   148,  1365,   402,   174,  -221,   175,   209,
-     196,  -221,  -221,   154,  -221,  1669,  -221,    76,    28,  -221,
-     157,  -221,   192,   255,  -221,    43,    49,  -221,  1365,  -221,
-     146,    30,    47,  -221,  -221,  -221,  -221,  -221,  -221,  -221,
-    -221,  -221,  -221,  -221,  -221,  -221,  -221,  -221,  -221,  -221,
-    -221,  -221,  -221,  -221,  -221,  -221,   151,   156,  -221,  -221,
-    -221,  -221,   644,  -221,  -221,  -221,  -221,  -221,  -221,  -221,
-    -221,   233,  -221,   238,  -221,   239,  -221,   245,    49,   488,
-     254,   349,  -221,    91,   218,  -221,  -221,  -221,  -221,  -221,
-     210,   349,   349,   349,   349,   574,   832,   488,   111,  -221,
-    -221,   226,   237,   220,  -221,  -221,   247,   248,  -221,  -221,
-    -221,   254,   254,   254,   254,   254,   254,   211,    19,   254,
-     254,  -221,   832,   832,   832,   832,   832,   832,   832,   832,
-     832,   832,   832,   832,   832,   832,   832,   832,   832,   832,
-     832,   832,   832,   832,   832,   832,  -221,  -221,   236,   832,
-    1024,   832,   832,   280,   189,  1365,   -32,   255,  -221,   255,
-     284,   -16,    76,  -221,    -1,   -33,   229,  -221,     5,  1015,
-     230,    50,  -221,    85,  -221,  -221,  -221,   216,   832,   255,
-     276,    53,    53,    53,  -221,   219,   221,   222,   223,  -221,
-    -221,   133,  -221,  -221,  -221,  -221,  -221,   227,   228,   264,
-    -221,  -221,  1669,   246,   262,   267,   274,  1096,   231,  1155,
-     241,  1190,   296,  -221,  -221,  -221,   301,   302,  -221,  -221,
-    -221,   832,  -221,  1365,   -26,  1365,  1365,   944,  1424,  1456,
-    1483,  1515,  1542,  1574,  1574,  1601,  1601,  1601,  1601,   385,
-     385,   471,   557,   557,   254,   254,   254,  -221,    49,  -221,
-    -221,  -221,  -221,  -221,  -221,   255,  -221,   332,  -221,   -20,
-      73,   832,  -221,   261,   298,   207,   207,  -221,   255,  -221,
-     336,  -221,   832,   832,  -221,  -221,   324,  -221,  -221,  -221,
-     266,  -221,   230,   230,    76,   268,  -221,  -221,   270,   272,
-    -221,    85,  1062,  -221,  -221,  -221,    26,  -221,   255,   832,
-     832,   271,    53,  -221,   263,   273,   277,  -221,  -221,  -221,
-    -221,  -221,  -221,  -221,  -221,  -221,   304,   282,   286,   294,
-     297,  -221,  -221,  -221,  -221,  -221,  -221,  -221,  -221,   254,
-    -221,   832,   345,  -221,  -221,  -221,    63,   -16,  1094,   364,
-    -221,   254,  1365,  -221,  -221,  -221,  -221,  -221,  -221,    76,
-    -221,  -221,  1365,  1365,  -221,  -221,   263,   832,  -221,  -221,
-    -221,   832,   832,   832,   832,  1397,  -221,  -221,  -221,  -221,
-    -221,  -221,  -221,  1365,  1225,  1260,  1295,  1330,  -221,  -221,
-    -221,  -221
+    -324,  -324,     5,    15,   -12,  -324,  -324,  -324,  -124,  -324,
+      80,  -324,  -324,  -324,  -220,  -324,  -324,  -324,   230,  -324,
+    -324,  -324,   -79,    41,   -71,   -72,  -323,  -116,  -324,  -324,
+    -324,   212,   235,  -224,  -222,  -123,   417,     9,   431,   254,
+    -324,  -324,  -324,   218,  -324,  -324,    -7,   265,     3,   443
 };
 
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
 {
-    -221,  -221,     1,    14,   -10,  -221,  -221,  -221,  -192,  -221,
-      25,  -221,  -221,  -221,  -213,  -221,  -221,  -221,   170,  -221,
-    -221,  -221,  -179,  -221,  -194,  -221,   -62,   -21,  -103,  -221,
-    -221,  -221,   160,   159,  -220,  -217,  -125,    15,   353,   193,
-    -221,  -221,  -221,   153,  -221,  -190,    -3,   197,    33,   375
+      -1,    58,   173,   174,    61,   236,   237,   238,   354,   355,
+     356,   323,   233,    62,   212,    63,    64,    65,   328,    66,
+      67,    68,    69,   392,    70,    71,    72,   225,   406,   337,
+     226,   227,   228,   229,   230,    73,    74,    75,   142,   342,
+     326,    76,   119,   247,   393,   394,    77,   313,   357,    78
 };
 
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -127
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      78,    52,   330,   343,   247,   213,   344,   130,   335,   241,
-     120,   120,   120,   120,    53,   346,   323,   328,   120,   306,
-     258,   329,   172,   216,   319,    33,    34,   112,   172,   161,
-     162,   163,   164,   165,   166,   217,     7,   137,   169,   170,
-     355,   356,   214,    12,   235,   205,   121,   123,   125,   127,
-     213,    73,   114,   115,   140,   117,   204,   321,   118,    12,
-     380,   237,   114,   115,   214,   117,   384,   172,   118,    12,
-     120,    74,   120,    75,   323,   312,   114,   115,   116,   117,
-     212,   215,   118,    12,   216,   331,   114,   115,   122,   117,
-     141,   336,   118,    12,   312,   142,   217,  -126,   386,   214,
-     131,   349,   272,   218,   219,   236,   227,   138,   230,   400,
-     143,   323,   332,   333,    33,    34,   385,    33,    34,   144,
-     329,   343,   238,   119,   344,   218,   219,   366,   229,   249,
-     145,   250,   248,   119,   146,   257,   259,   261,   241,   159,
-     350,  -126,   253,   254,   255,   256,   417,   119,   260,   262,
-     213,   263,   114,   115,   124,   117,   147,   119,   118,    12,
-     218,   342,   273,   160,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
-     291,   292,   293,   294,   295,   296,   215,   274,   151,   216,
-    -113,   315,   316,   418,   171,   120,   172,   329,   -65,   207,
-     120,   361,   152,   153,   120,   154,   120,   132,   155,   114,
-     115,   126,   117,   309,   208,   118,    12,   312,   205,   210,
-     209,   173,  -125,   119,   156,   226,   120,   132,   120,   120,
-     120,   308,   234,   133,   134,   135,   308,   239,   157,   240,
-     325,   158,   326,   266,   243,   114,   115,   297,   298,   244,
-     245,   118,    12,   148,   149,   135,   246,   267,   251,   299,
-     268,   379,   347,   420,   114,   115,   264,   117,   173,   252,
-     118,    12,   394,   300,   301,   302,   303,   265,   321,   304,
-     119,   198,   199,   200,   201,   202,   203,   269,   270,   114,
-     115,   317,   298,   327,   271,   118,    12,   217,   340,   345,
-     348,   205,   120,   299,   365,   357,   367,   358,   359,   360,
-     363,   364,   391,   392,   372,   120,   119,   300,   301,   302,
-     303,   305,   368,   304,   374,   196,   197,   369,   198,   199,
-     200,   201,   202,   203,   370,   119,   376,   394,   382,   402,
-     403,   377,   378,   383,   387,   120,   388,   390,  -115,   120,
-     407,   389,   393,   397,   396,   398,   416,   404,   411,   408,
-     119,    79,   412,   409,   410,   318,    13,    14,    15,    16,
-     413,   415,    19,   414,    21,   421,   324,   405,   422,   338,
-     341,   401,   150,    26,    27,   406,    29,    30,    31,    32,
-      33,    34,    35,   313,   362,   139,     0,   423,     0,   173,
-     320,   424,   425,   426,   427,     1,     2,     3,     4,     5,
-       6,     7,     8,     0,     9,     0,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,     0,     0,
-       0,    22,    23,    24,    25,     0,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,     0,    37,    38,
-     190,   191,   192,   193,   194,   195,   196,   197,    39,   198,
-     199,   200,   201,   202,   203,     0,     0,  -126,    40,    41,
-      42,     0,     0,    43,    44,     0,     0,     0,    45,     0,
-       0,     0,    46,    47,     0,   173,    48,    49,     0,     0,
-      50,     1,     2,     3,     4,     5,     6,     7,     8,     0,
-       9,     0,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,     0,     0,     0,    22,    23,    24,
-      25,     0,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,     0,    37,    38,     0,   191,   192,   193,
-     194,   195,   196,   197,    39,   198,   199,   200,   201,   202,
-     203,     0,     0,     0,    40,    41,    42,     0,     0,    43,
-      44,     0,     0,     0,    45,     0,     0,     0,    46,    47,
-       0,   173,    48,    49,     0,     0,    50,     1,     2,     3,
-       4,     5,     6,     7,     8,     0,     9,     0,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-       0,     0,     0,    22,    23,    24,    25,     0,     0,     0,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,     0,
-      37,    38,     0,     0,     0,   193,   194,   195,   196,   197,
-      39,   198,   199,   200,   201,   202,   203,     0,     0,     0,
-      40,    41,    42,     0,     0,    43,    44,     0,     0,     0,
-      45,     0,     0,     0,    46,    47,     0,     0,    48,    49,
-       0,     0,    50,     1,     2,     3,     4,     5,     6,     7,
-       8,     0,    76,    77,    10,    11,    12,     0,     0,     0,
-       0,    17,    18,     0,    20,    33,    34,     0,     0,    22,
-      23,    24,    25,     0,     0,     0,    28,   215,     0,     0,
-     216,     0,     0,     0,    36,     0,    37,    38,     0,  -126,
-       0,     0,   217,     0,     0,     0,    39,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    40,    41,    42,     0,
-       0,    43,    44,     0,     0,     0,    45,     0,     0,     0,
-      46,    47,     0,     0,    48,    49,     0,     0,    50,     1,
-       2,     3,     4,     5,     6,     7,     8,     0,   128,     0,
-      10,    11,    12,     0,     0,     0,     0,    17,    18,     0,
-      20,     0,     0,     0,     0,    22,    23,    24,    25,     0,
-       0,     0,    28,     0,     0,     0,     0,     0,     0,     0,
-      36,     0,    37,    38,     0,     0,     0,     0,     0,     0,
-       0,     0,    39,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    40,    41,    42,     0,     0,    43,    44,     0,
-       0,     0,   129,     0,     0,     0,    46,    47,     0,     0,
-      48,    49,     0,     0,    50,     1,     2,     3,     4,     5,
-       6,     7,     8,     0,   128,     0,    10,    11,    12,     0,
-       0,     0,     0,    17,    18,     0,    20,     0,     0,     0,
-       0,    22,    23,    24,    25,     0,     0,     0,    28,     0,
-       0,     0,     0,     0,     0,     0,    36,     0,    37,    38,
-       0,     0,     0,     0,     0,     0,     0,     0,    39,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    40,    41,
-      42,     0,     0,    43,    44,     0,     0,     0,    45,     0,
-       0,     0,    46,    47,     0,     0,    48,    49,     0,    79,
-      50,    80,     0,     0,    13,    14,    15,    16,     0,     0,
-      19,     0,    21,     0,    81,    82,     0,     0,     0,     0,
-       0,     0,     0,     0,    29,    30,    31,    32,    33,    34,
-      35,     0,    83,     0,     0,    84,     0,    85,   173,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,     0,    99,   100,   101,   102,   103,   104,   105,
-       0,     0,   106,   107,     0,   108,   109,     0,     0,   174,
-       0,   110,   111,     0,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,     0,   198,   199,
-     200,   201,   202,   203,     0,     0,     0,    79,     0,   214,
-       0,   381,    13,    14,    15,    16,    79,     0,    19,     0,
-      21,    13,    14,    15,    16,     0,     0,    19,     0,    21,
-       0,     0,    29,    30,    31,    32,    33,    34,    35,     0,
-       0,    29,    30,    31,    32,    33,    34,    35,   215,     0,
-       0,   216,     0,     0,    79,     0,     0,     0,     0,    13,
-      14,    15,    16,   217,     0,    19,     0,    21,     0,  -126,
-     218,   219,     0,     0,     0,     0,     0,     0,   337,    29,
-      30,    31,    32,    33,    34,    35,    79,   310,     0,     0,
-     173,    13,    14,    15,    16,     0,     0,    19,     0,    21,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    29,    30,    31,    32,    33,    34,    35,     0,     0,
-       0,   174,     0,     0,     0,   337,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   173,
-     198,   199,   200,   201,   202,   203,   419,     0,     0,   371,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     174,     0,     0,     0,   173,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,     0,   198,
-     199,   200,   201,   202,   203,   174,     0,     0,   373,   173,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+      84,   217,   246,   218,   346,    59,   347,   136,   126,   126,
+     126,   126,   252,   349,   402,    60,   126,   333,   127,   129,
+     131,   133,   338,   118,   120,   121,   146,   123,   263,    79,
+     124,    14,   240,   166,   242,   168,   169,   170,   171,   172,
+       9,   143,    80,   175,   176,   162,   218,    14,   219,   178,
+     211,   120,   121,   178,   123,   219,   329,   124,    14,   163,
+     178,  -127,   164,   120,   121,   137,   123,   210,    81,   124,
+      14,   151,   126,   221,   126,   329,   152,   329,   390,   391,
+     216,   179,   232,   431,   235,   222,   324,   383,   277,   120,
+     121,   122,   123,   147,   352,   124,    14,   327,   389,   125,
+     241,   324,   243,   395,   335,   336,   334,   390,   391,   138,
+     407,   339,   427,   358,   359,   144,   223,   224,   148,   254,
+     346,   255,   347,   223,   345,   312,   125,   318,    35,    36,
+     246,    38,    39,   353,   369,   139,   140,   141,   125,   262,
+     264,   266,   253,   234,   218,   204,   205,   206,   207,   208,
+     209,   149,   258,   259,   260,   261,    46,   219,   265,    35,
+      36,   150,    38,    39,   125,   267,   278,   268,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     153,   167,  -115,   315,   279,   320,   271,   126,   177,   126,
+     220,   178,   220,   221,   -65,   221,   126,   314,   126,   314,
+     272,   213,   214,   273,   215,   222,   331,   364,   332,   231,
+     239,   211,   324,   321,   179,   223,   224,   126,   244,   126,
+     126,   126,   120,   121,   302,   303,   248,   350,   124,    14,
+    -135,  -135,   245,  -135,  -135,   249,   304,   120,   121,   128,
+     123,   250,   251,   124,    14,   256,   257,   269,   270,   274,
+     305,   306,   307,   308,   382,   401,   309,   275,  -135,   310,
+     120,   121,   130,   123,   430,   276,   124,    14,   120,   121,
+     132,   123,   327,   222,   124,    14,   202,   203,   204,   205,
+     206,   207,   208,   209,   343,   120,   121,   316,   303,   348,
+     351,   124,    14,   360,   126,   368,   361,   125,   366,   304,
+     126,   211,   311,   367,   385,   370,   398,   399,   362,   363,
+     387,   371,   125,   305,   306,   307,   308,   372,   373,   309,
+     179,   217,   310,   375,   401,   138,   377,   379,   380,   381,
+     409,   410,   386,   388,   126,   125,   396,   397,   126,  -117,
+     400,    21,   403,   125,   408,   404,   411,   405,   413,   423,
+     217,   154,   155,   141,   414,    31,    32,    33,    34,   415,
+     125,    37,   422,   416,    40,   317,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   417,   202,   203,   204,   205,   206,   207,   208,   209,
+     418,   419,   432,   420,   421,   424,   433,   434,   435,   436,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+     425,    11,   426,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,   412,   341,   428,    24,    25,
+      26,    27,   330,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,   165,    43,
+      44,   344,   156,   325,   365,   145,     0,     0,     0,    45,
+       0,   319,     0,     0,     0,     0,     0,     0,    46,    47,
+      48,    49,     0,     0,     0,    50,    51,     0,     0,     0,
+       0,     0,    52,    53,    54,     0,     0,    55,    56,     0,
+     179,    57,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,     0,    11,     0,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,     0,     0,     0,
+      24,    25,    26,    27,     0,     0,     0,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+       0,    43,    44,   194,   195,   196,   197,   198,   199,   200,
+     201,    45,   202,   203,   204,   205,   206,   207,   208,   209,
+      46,    47,    48,    49,     0,     0,     0,    50,    51,     0,
+       0,     0,     0,     0,    52,    53,    54,     0,     0,    55,
+      56,     0,   179,    57,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,     0,    82,    83,    12,    13,    14,
+       0,     0,     0,   157,    19,    20,     0,    22,     0,     0,
+       0,     0,    24,    25,    26,    27,     0,   158,   159,    30,
+     160,     0,     0,   161,     0,     0,     0,     0,     0,     0,
+       0,    42,     0,    43,    44,     0,     0,   196,   197,   198,
+     199,   200,   201,    45,   202,   203,   204,   205,   206,   207,
+     208,   209,     0,    47,    48,    49,     0,     0,     0,    50,
+      51,     0,     0,     0,     0,     0,    52,    53,    54,     0,
+       0,    55,    56,     0,   179,    57,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,     0,   134,     0,    12,
+      13,    14,     0,     0,     0,     0,    19,    20,     0,    22,
+       0,     0,     0,     0,    24,    25,    26,    27,     0,     0,
+       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    42,     0,    43,    44,     0,     0,     0,
+     197,   198,   199,   200,   201,    45,   202,   203,   204,   205,
+     206,   207,   208,   209,     0,    47,    48,    49,     0,     0,
+       0,    50,    51,     0,     0,     0,     0,     0,   135,    53,
+      54,     0,     0,    55,    56,     0,   179,    57,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,     0,   134,
+       0,    12,    13,    14,     0,     0,     0,     0,    19,    20,
+       0,    22,     0,     0,     0,     0,    24,    25,    26,    27,
+       0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    42,     0,    43,    44,     0,
+       0,     0,     0,     0,   199,   200,   201,    45,   202,   203,
+     204,   205,   206,   207,   208,   209,     0,    47,    48,    49,
+       0,     0,     0,    50,    51,     0,     0,     0,     0,     0,
+      52,    53,    54,     0,     0,    55,    56,     0,    85,    57,
+      86,     0,     0,    15,    16,    17,    18,     0,     0,    21,
+       0,    23,     0,    87,    88,     0,     0,     0,     0,     0,
+       0,     0,     0,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,     0,    89,   179,     0,    90,     0,
+      91,     0,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,    46,   105,   106,   107,   108,
+     109,     0,   110,   111,   112,   113,     0,     0,   114,   115,
+       0,   180,     0,     0,   116,   117,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,     0,   198,   199,   200,   201,   202,   203,
-     174,     0,     0,   375,   173,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,     0,   198,
-     199,   200,   201,   202,   203,   174,     0,     0,   428,   173,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,     0,   198,   199,   200,   201,   202,   203,
-     174,     0,     0,   429,   173,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,     0,   198,
-     199,   200,   201,   202,   203,   174,     0,     0,   430,   173,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,     0,   198,   199,   200,   201,   202,   203,
-     174,   173,     0,   431,     0,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   173,   198,
-     199,   200,   201,   202,   203,     0,     0,     0,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+     195,   196,   197,   198,   199,   200,   201,     0,   202,   203,
+     204,   205,   206,   207,   208,   209,     0,     0,     0,    85,
+       0,   219,     0,   384,    15,    16,    17,    18,     0,     0,
+      21,     0,    23,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   220,     0,     0,   221,    35,    36,
+       0,    38,    39,     0,     0,    85,    46,     0,     0,   222,
+      15,    16,    17,    18,   220,     0,    21,   221,    23,   223,
+     224,     0,     0,     0,   340,     0,    46,     0,     0,   222,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    85,     0,     0,     0,     0,    15,    16,    17,    18,
+       0,     0,    21,     0,    23,     0,     0,     0,     0,     0,
+       0,     0,    46,     0,     0,     0,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    85,     0,     0,
+     322,     0,    15,    16,    17,    18,     0,     0,    21,     0,
+      23,     0,     0,     0,     0,     0,     0,     0,    46,     0,
+       0,     0,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,   179,     0,     0,   340,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    46,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   180,   179,
+       0,   429,     0,   181,   182,   183,   184,   185,   186,   187,
      188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     173,   198,   199,   200,   201,   202,   203,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   173,   198,   199,
-     200,   201,   202,   203,     0,     0,     0,     0,     0,     0,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   173,
-     198,   199,   200,   201,   202,   203,     0,     0,   180,   181,
+     198,   199,   200,   201,     0,   202,   203,   204,   205,   206,
+     207,   208,   209,     0,   180,   179,   374,     0,     0,   181,
      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   173,   198,   199,   200,
-     201,   202,   203,     0,     0,     0,     0,     0,     0,     0,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+       0,   202,   203,   204,   205,   206,   207,   208,   209,     0,
+     180,   179,   376,     0,     0,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,     0,   202,   203,   204,
+     205,   206,   207,   208,   209,     0,   180,   179,   378,     0,
        0,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   173,   198,
-     199,   200,   201,   202,   203,     0,     0,     0,     0,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   173,   198,   199,   200,   201,
-     202,   203,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,     0,   198,   199,
-     200,   201,   202,   203,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,     0,   198,   199,   200,   201,   202,
-     203,    79,     0,     0,     0,     0,    13,    14,    15,    16,
-       0,     0,    19,     0,    21,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    29,    30,    31,    32,
-      33,    34,    35
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,     0,   202,   203,   204,   205,   206,   207,   208,
+     209,     0,   180,   179,   437,     0,     0,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,     0,   202,
+     203,   204,   205,   206,   207,   208,   209,     0,   180,   179,
+     438,     0,     0,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,   200,   201,     0,   202,   203,   204,   205,   206,
+     207,   208,   209,     0,   180,   179,   439,     0,     0,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+       0,   202,   203,   204,   205,   206,   207,   208,   209,   179,
+     180,     0,   440,     0,     0,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,   179,   202,   203,   204,
+     205,   206,   207,   208,   209,     0,     0,     0,     0,     0,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+     179,   202,   203,   204,   205,   206,   207,   208,   209,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   179,   202,   203,
+     204,   205,   206,   207,   208,   209,     0,     0,     0,     0,
+       0,     0,     0,     0,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   179,   202,   203,   204,   205,   206,   207,   208,   209,
+       0,     0,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   198,   199,   200,   201,   179,   202,
+     203,   204,   205,   206,   207,   208,   209,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,     0,   202,   203,   204,   205,   206,   207,   208,
+     209,     0,     0,     0,     0,     0,     0,   190,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   201,     0,
+     202,   203,   204,   205,   206,   207,   208,   209,    85,     0,
+       0,     0,     0,    15,    16,    17,    18,     0,     0,    21,
+       0,    23,     0,     0,     0,     0,     0,     0,     0,     0,
+      28,    29,     0,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    85,     0,     0,     0,     0,    15,
+      16,    17,    18,     0,     0,    21,     0,    23,     0,     0,
+       0,     0,     0,     0,     0,    46,     0,     0,     0,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    46
 };
 
 static const yytype_int16 yycheck[] =
 {
-      10,     0,     3,   223,   129,    67,   223,    17,     3,   112,
-      13,    14,    15,    16,     0,   228,    48,   211,    21,   198,
-     145,   211,    48,    56,   203,    41,    42,    12,    48,    39,
-      40,    41,    42,    43,    44,    68,     9,    10,    48,    49,
-     232,   233,    14,    16,    14,    55,    13,    14,    15,    16,
-     112,    76,     9,    10,    21,    12,    55,    89,    15,    16,
-      86,    14,     9,    10,    14,    12,    86,    48,    15,    16,
-      73,    76,    75,    24,    48,   200,     9,    10,    11,    12,
-      65,    53,    15,    16,    56,    86,     9,    10,    11,    12,
-      59,    86,    15,    16,   219,    59,    68,    24,   311,    14,
-      76,    48,    83,    75,    76,    75,    73,    80,    75,    83,
-      59,    48,   215,   216,    41,    42,   310,    41,    42,    59,
-     310,   341,    75,    80,   341,    75,    76,   252,    85,    38,
-      76,    40,   131,    80,    76,   145,   146,   147,   241,    42,
-      87,    65,   141,   142,   143,   144,    83,    80,   147,    38,
-     212,    40,     9,    10,    11,    12,    76,    80,    15,    16,
-      75,    76,   172,    41,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,    53,   173,    23,    56,
-      24,   201,   202,   387,     0,   198,    48,   387,    24,    24,
-     203,    68,    37,    38,   207,    40,   209,    12,    43,     9,
-      10,    11,    12,   199,     5,    15,    16,   342,   228,    65,
-      24,    14,    65,    80,    23,    33,   229,    12,   231,   232,
-     233,   198,    86,    38,    39,    40,   203,    86,    37,    83,
-     207,    40,   209,    23,    11,     9,    10,    11,    12,    11,
-      11,    15,    16,    38,    39,    40,    11,    37,    40,    23,
-      40,   271,   229,   388,     9,    10,    40,    12,    14,    59,
-      15,    16,   334,    37,    38,    39,    40,    40,    89,    43,
-      80,    74,    75,    76,    77,    78,    79,    40,    40,     9,
-      10,    11,    12,     9,    83,    15,    16,    68,    68,    83,
-      24,   311,   305,    23,    40,    86,    60,    86,    86,    86,
-      83,    83,   322,   323,    83,   318,    80,    37,    38,    39,
-      40,    85,    60,    43,    83,    71,    72,    60,    74,    75,
-      76,    77,    78,    79,    60,    80,    40,   399,   305,   349,
-     350,    40,    40,    11,    83,   348,    48,    11,    24,   352,
-      87,   318,    86,    83,    86,    83,    11,    86,    76,    86,
-      80,    12,    76,    86,    60,    85,    17,    18,    19,    20,
-      76,   381,    23,    76,    25,    11,   206,   352,   399,   219,
-     221,   348,    29,    34,    35,   352,    37,    38,    39,    40,
-      41,    42,    43,   200,   241,    20,    -1,   407,    -1,    14,
-     203,   411,   412,   413,   414,     3,     4,     5,     6,     7,
-       8,     9,    10,    -1,    12,    -1,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    -1,    -1,
-      -1,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    -1,    46,    47,
-      65,    66,    67,    68,    69,    70,    71,    72,    56,    74,
-      75,    76,    77,    78,    79,    -1,    -1,    65,    66,    67,
-      68,    -1,    -1,    71,    72,    -1,    -1,    -1,    76,    -1,
-      -1,    -1,    80,    81,    -1,    14,    84,    85,    -1,    -1,
-      88,     3,     4,     5,     6,     7,     8,     9,    10,    -1,
-      12,    -1,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    -1,    -1,    -1,    29,    30,    31,
-      32,    -1,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    -1,    46,    47,    -1,    66,    67,    68,
-      69,    70,    71,    72,    56,    74,    75,    76,    77,    78,
-      79,    -1,    -1,    -1,    66,    67,    68,    -1,    -1,    71,
-      72,    -1,    -1,    -1,    76,    -1,    -1,    -1,    80,    81,
-      -1,    14,    84,    85,    -1,    -1,    88,     3,     4,     5,
-       6,     7,     8,     9,    10,    -1,    12,    -1,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      -1,    -1,    -1,    29,    30,    31,    32,    -1,    -1,    -1,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    -1,
-      46,    47,    -1,    -1,    -1,    68,    69,    70,    71,    72,
-      56,    74,    75,    76,    77,    78,    79,    -1,    -1,    -1,
-      66,    67,    68,    -1,    -1,    71,    72,    -1,    -1,    -1,
-      76,    -1,    -1,    -1,    80,    81,    -1,    -1,    84,    85,
-      -1,    -1,    88,     3,     4,     5,     6,     7,     8,     9,
-      10,    -1,    12,    13,    14,    15,    16,    -1,    -1,    -1,
-      -1,    21,    22,    -1,    24,    41,    42,    -1,    -1,    29,
-      30,    31,    32,    -1,    -1,    -1,    36,    53,    -1,    -1,
-      56,    -1,    -1,    -1,    44,    -1,    46,    47,    -1,    65,
-      -1,    -1,    68,    -1,    -1,    -1,    56,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    68,    -1,
-      -1,    71,    72,    -1,    -1,    -1,    76,    -1,    -1,    -1,
-      80,    81,    -1,    -1,    84,    85,    -1,    -1,    88,     3,
-       4,     5,     6,     7,     8,     9,    10,    -1,    12,    -1,
-      14,    15,    16,    -1,    -1,    -1,    -1,    21,    22,    -1,
-      24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    -1,
-      -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      44,    -1,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    66,    67,    68,    -1,    -1,    71,    72,    -1,
-      -1,    -1,    76,    -1,    -1,    -1,    80,    81,    -1,    -1,
-      84,    85,    -1,    -1,    88,     3,     4,     5,     6,     7,
-       8,     9,    10,    -1,    12,    -1,    14,    15,    16,    -1,
-      -1,    -1,    -1,    21,    22,    -1,    24,    -1,    -1,    -1,
-      -1,    29,    30,    31,    32,    -1,    -1,    -1,    36,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,    47,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
-      68,    -1,    -1,    71,    72,    -1,    -1,    -1,    76,    -1,
-      -1,    -1,    80,    81,    -1,    -1,    84,    85,    -1,    12,
-      88,    14,    -1,    -1,    17,    18,    19,    20,    -1,    -1,
-      23,    -1,    25,    -1,    27,    28,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    37,    38,    39,    40,    41,    42,
-      43,    -1,    45,    -1,    -1,    48,    -1,    50,    14,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    -1,    66,    67,    68,    69,    70,    71,    72,
-      -1,    -1,    75,    76,    -1,    78,    79,    -1,    -1,    45,
-      -1,    84,    85,    -1,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    -1,    74,    75,
-      76,    77,    78,    79,    -1,    -1,    -1,    12,    -1,    14,
-      -1,    87,    17,    18,    19,    20,    12,    -1,    23,    -1,
-      25,    17,    18,    19,    20,    -1,    -1,    23,    -1,    25,
-      -1,    -1,    37,    38,    39,    40,    41,    42,    43,    -1,
-      -1,    37,    38,    39,    40,    41,    42,    43,    53,    -1,
-      -1,    56,    -1,    -1,    12,    -1,    -1,    -1,    -1,    17,
-      18,    19,    20,    68,    -1,    23,    -1,    25,    -1,    65,
-      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    37,
-      38,    39,    40,    41,    42,    43,    12,    83,    -1,    -1,
-      14,    17,    18,    19,    20,    -1,    -1,    23,    -1,    25,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    37,    38,    39,    40,    41,    42,    43,    -1,    -1,
-      -1,    45,    -1,    -1,    -1,    83,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    14,
-      74,    75,    76,    77,    78,    79,    82,    -1,    -1,    83,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      45,    -1,    -1,    -1,    14,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    -1,    74,
-      75,    76,    77,    78,    79,    45,    -1,    -1,    83,    14,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    -1,    74,    75,    76,    77,    78,    79,
-      45,    -1,    -1,    83,    14,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    -1,    74,
-      75,    76,    77,    78,    79,    45,    -1,    -1,    83,    14,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    -1,    74,    75,    76,    77,    78,    79,
-      45,    -1,    -1,    83,    14,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    -1,    74,
-      75,    76,    77,    78,    79,    45,    -1,    -1,    83,    14,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
+      12,    72,   118,    75,   228,     0,   228,    19,    15,    16,
+      17,    18,   135,   233,   337,     0,    23,     3,    15,    16,
+      17,    18,     3,    14,    11,    12,    23,    14,   151,    85,
+      17,    18,    16,    45,    16,    47,    48,    49,    50,    51,
+      11,    12,    85,    55,    56,    25,   118,    18,    16,    54,
+      62,    11,    12,    54,    14,    16,    54,    17,    18,    39,
+      54,    26,    42,    11,    12,    85,    14,    62,    26,    17,
+      18,    85,    79,    62,    81,    54,    85,    54,    43,    44,
+      71,    16,    79,   406,    81,    74,   209,    92,    89,    11,
+      12,    13,    14,    65,    54,    17,    18,    95,    92,    86,
+      84,   224,    84,   323,   220,   221,    92,    43,    44,    14,
+      89,    92,    89,   237,   238,    86,    84,    85,    65,    40,
+     344,    42,   344,    84,    85,   204,    86,   206,    43,    44,
+     246,    46,    47,    93,   257,    40,    41,    42,    86,   151,
+     152,   153,   137,    91,   216,    80,    81,    82,    83,    84,
+      85,    65,   147,   148,   149,   150,    71,    16,   153,    43,
+      44,    65,    46,    47,    86,    40,   178,    42,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+      85,    11,    26,   205,   179,   207,    25,   204,     0,   206,
+      59,    54,    59,    62,    26,    62,   213,   204,   215,   206,
+      39,    26,     7,    42,    26,    74,   213,    74,   215,    35,
+      92,   233,   345,   208,    16,    84,    85,   234,    92,   236,
+     237,   238,    11,    12,    13,    14,    13,   234,    17,    18,
+      43,    44,    89,    46,    47,    13,    25,    11,    12,    13,
+      14,    13,    13,    17,    18,    42,    65,    42,    42,    42,
+      39,    40,    41,    42,   276,   337,    45,    42,    71,    48,
+      11,    12,    13,    14,   397,    89,    17,    18,    11,    12,
+      13,    14,    95,    74,    17,    18,    78,    79,    80,    81,
+      82,    83,    84,    85,    74,    11,    12,    13,    14,    89,
+      26,    17,    18,    92,   311,    42,    92,    86,    89,    25,
+     317,   323,    91,    89,   311,    66,   328,   329,    92,    92,
+     317,    66,    86,    39,    40,    41,    42,    66,    66,    45,
+      16,   402,    48,    89,   406,    14,    89,    42,    42,    42,
+     352,   353,    13,    13,   351,    86,    89,    54,   355,    26,
+      92,    25,    92,    86,   351,    89,    92,    89,   355,    13,
+     431,    40,    41,    42,    93,    39,    40,    41,    42,    92,
+      86,    45,   384,    92,    48,    91,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    66,    78,    79,    80,    81,    82,    83,    84,    85,
+      85,    85,   414,    85,    85,    13,   418,   419,   420,   421,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      44,    14,    43,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,   355,   224,   396,    31,    32,
+      33,    34,   212,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    41,    52,
+      53,   226,    31,   209,   246,    22,    -1,    -1,    -1,    62,
+      -1,   206,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
+      73,    74,    -1,    -1,    -1,    78,    79,    -1,    -1,    -1,
+      -1,    -1,    85,    86,    87,    -1,    -1,    90,    91,    -1,
+      16,    94,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    -1,    14,    -1,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    -1,
+      31,    32,    33,    34,    -1,    -1,    -1,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+      -1,    52,    53,    69,    70,    71,    72,    73,    74,    75,
+      76,    62,    78,    79,    80,    81,    82,    83,    84,    85,
+      71,    72,    73,    74,    -1,    -1,    -1,    78,    79,    -1,
+      -1,    -1,    -1,    -1,    85,    86,    87,    -1,    -1,    90,
+      91,    -1,    16,    94,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    -1,    14,    15,    16,    17,    18,
+      -1,    -1,    -1,    25,    23,    24,    -1,    26,    -1,    -1,
+      -1,    -1,    31,    32,    33,    34,    -1,    39,    40,    38,
+      42,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    50,    -1,    52,    53,    -1,    -1,    71,    72,    73,
+      74,    75,    76,    62,    78,    79,    80,    81,    82,    83,
+      84,    85,    -1,    72,    73,    74,    -1,    -1,    -1,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,    -1,
+      -1,    90,    91,    -1,    16,    94,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    -1,    14,    -1,    16,
+      17,    18,    -1,    -1,    -1,    -1,    23,    24,    -1,    26,
+      -1,    -1,    -1,    -1,    31,    32,    33,    34,    -1,    -1,
+      -1,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    50,    -1,    52,    53,    -1,    -1,    -1,
+      72,    73,    74,    75,    76,    62,    78,    79,    80,    81,
+      82,    83,    84,    85,    -1,    72,    73,    74,    -1,    -1,
+      -1,    78,    79,    -1,    -1,    -1,    -1,    -1,    85,    86,
+      87,    -1,    -1,    90,    91,    -1,    16,    94,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    -1,    14,
+      -1,    16,    17,    18,    -1,    -1,    -1,    -1,    23,    24,
+      -1,    26,    -1,    -1,    -1,    -1,    31,    32,    33,    34,
+      -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    53,    -1,
+      -1,    -1,    -1,    -1,    74,    75,    76,    62,    78,    79,
+      80,    81,    82,    83,    84,    85,    -1,    72,    73,    74,
+      -1,    -1,    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,
+      85,    86,    87,    -1,    -1,    90,    91,    -1,    14,    94,
+      16,    -1,    -1,    19,    20,    21,    22,    -1,    -1,    25,
+      -1,    27,    -1,    29,    30,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    -1,    51,    16,    -1,    54,    -1,
+      56,    -1,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    -1,    78,    79,    80,    81,    -1,    -1,    84,    85,
+      -1,    51,    -1,    -1,    90,    91,    56,    57,    58,    59,
       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    -1,    74,    75,    76,    77,    78,    79,
-      45,    14,    -1,    83,    -1,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    14,    74,
-      75,    76,    77,    78,    79,    -1,    -1,    -1,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+      70,    71,    72,    73,    74,    75,    76,    -1,    78,    79,
+      80,    81,    82,    83,    84,    85,    -1,    -1,    -1,    14,
+      -1,    16,    -1,    93,    19,    20,    21,    22,    -1,    -1,
+      25,    -1,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    59,    -1,    -1,    62,    43,    44,
+      -1,    46,    47,    -1,    -1,    14,    71,    -1,    -1,    74,
+      19,    20,    21,    22,    59,    -1,    25,    62,    27,    84,
+      85,    -1,    -1,    -1,    89,    -1,    71,    -1,    -1,    74,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    14,    -1,    -1,    -1,    -1,    19,    20,    21,    22,
+      -1,    -1,    25,    -1,    27,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    -1,    -1,    -1,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    14,    -1,    -1,
+      89,    -1,    19,    20,    21,    22,    -1,    -1,    25,    -1,
+      27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,
+      -1,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    16,    -1,    -1,    89,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    51,    16,
+      -1,    88,    -1,    56,    57,    58,    59,    60,    61,    62,
       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      14,    74,    75,    76,    77,    78,    79,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    14,    74,    75,
-      76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    14,
-      74,    75,    76,    77,    78,    79,    -1,    -1,    55,    56,
+      73,    74,    75,    76,    -1,    78,    79,    80,    81,    82,
+      83,    84,    85,    -1,    51,    16,    89,    -1,    -1,    56,
       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    14,    74,    75,    76,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      -1,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
+      51,    16,    89,    -1,    -1,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    -1,    78,    79,    80,
+      81,    82,    83,    84,    85,    -1,    51,    16,    89,    -1,
       -1,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    14,    74,
-      75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    14,    74,    75,    76,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    -1,    74,    75,
-      76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    -1,    74,    75,    76,    77,    78,
-      79,    12,    -1,    -1,    -1,    -1,    17,    18,    19,    20,
-      -1,    -1,    23,    -1,    25,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
-      41,    42,    43
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    -1,    78,    79,    80,    81,    82,    83,    84,
+      85,    -1,    51,    16,    89,    -1,    -1,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    -1,    78,
+      79,    80,    81,    82,    83,    84,    85,    -1,    51,    16,
+      89,    -1,    -1,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    -1,    78,    79,    80,    81,    82,
+      83,    84,    85,    -1,    51,    16,    89,    -1,    -1,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      -1,    78,    79,    80,    81,    82,    83,    84,    85,    16,
+      51,    -1,    89,    -1,    -1,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    16,    78,    79,    80,
+      81,    82,    83,    84,    85,    -1,    -1,    -1,    -1,    -1,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      16,    78,    79,    80,    81,    82,    83,    84,    85,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    16,    78,    79,
+      80,    81,    82,    83,    84,    85,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    16,    78,    79,    80,    81,    82,    83,    84,    85,
+      -1,    -1,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,    16,    78,
+      79,    80,    81,    82,    83,    84,    85,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    -1,    78,    79,    80,    81,    82,    83,    84,
+      85,    -1,    -1,    -1,    -1,    -1,    -1,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    -1,
+      78,    79,    80,    81,    82,    83,    84,    85,    14,    -1,
+      -1,    -1,    -1,    19,    20,    21,    22,    -1,    -1,    25,
+      -1,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      36,    37,    -1,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    14,    -1,    -1,    -1,    -1,    19,
+      20,    21,    22,    -1,    -1,    25,    -1,    27,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    71
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     3,     4,     5,     6,     7,     8,     9,    10,    12,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    29,    30,    31,    32,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,    46,    47,    56,
-      66,    67,    68,    71,    72,    76,    80,    81,    84,    85,
-      88,    91,    92,    93,    94,   103,   105,   106,   107,   109,
-     110,   111,   112,   114,   115,   116,   126,   127,   131,   134,
-     135,   136,   139,    76,    76,    24,    12,    13,    94,    12,
-      14,    27,    28,    45,    48,    50,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    66,
-      67,    68,    69,    70,    71,    72,    75,    76,    78,    79,
-      84,    85,   127,   132,     9,    10,    11,    12,    15,    80,
-     136,   138,    11,   138,    11,   138,    11,   138,    12,    76,
-      94,    76,    12,    38,    39,    40,   128,    10,    80,   139,
-     138,    59,    59,    59,    59,    76,    76,    76,    38,    39,
-     128,    23,    37,    38,    40,    43,    23,    37,    40,    42,
-      41,    94,    94,    94,    94,    94,    94,    92,    93,    94,
-      94,     0,    48,    14,    45,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    74,    75,
-      76,    77,    78,    79,    92,    94,   104,    24,     5,    24,
-      65,   113,   127,   116,    14,    53,    56,    68,    75,    76,
-     118,   121,   122,   123,   124,   125,    33,   138,   102,    85,
-     138,    95,    96,    97,    86,    14,    75,    14,    75,    86,
-      83,   118,   133,    11,    11,    11,    11,   126,    92,    38,
-      40,    40,    59,    92,    92,    92,    92,    94,   126,    94,
-      92,    94,    38,    40,    40,    40,    23,    37,    40,    40,
-      40,    83,    83,    94,    93,    94,    94,    94,    94,    94,
-      94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
-      94,    94,    94,    94,    94,    94,    94,    11,    12,    23,
-      37,    38,    39,    40,    43,    85,   112,   137,   138,    93,
-      83,   101,   126,   129,   130,    94,    94,    11,    85,   112,
-     137,    89,   108,    48,   108,   138,   138,     9,   114,   135,
-       3,    86,   118,   118,   120,     3,    86,    83,   122,   129,
-      68,   123,    76,   124,   125,    83,   104,   138,    24,    48,
-      87,    98,    99,   100,   138,    98,    98,    86,    86,    86,
-      86,    68,   133,    83,    83,    40,   126,    60,    60,    60,
-      60,    83,    83,    83,    83,    83,    40,    40,    40,    94,
-      86,    87,   138,    11,    86,   114,   104,    83,    48,   138,
-      11,    94,    94,    86,   116,   117,    86,    83,    83,   119,
-      83,   138,    94,    94,    86,   100,   138,    87,    86,    86,
-      60,    76,    76,    76,    76,    94,    11,    83,   114,    82,
-     126,    11,   117,    94,    94,    94,    94,    94,    83,    83,
-      83,    83
+       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    14,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    31,    32,    33,    34,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    52,    53,    62,    71,    72,    73,    74,
+      78,    79,    85,    86,    87,    90,    91,    94,    97,    98,
+      99,   100,   109,   111,   112,   113,   115,   116,   117,   118,
+     120,   121,   122,   131,   132,   133,   137,   142,   145,    85,
+      85,    26,    14,    15,   100,    14,    16,    29,    30,    51,
+      54,    56,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    72,    73,    74,    75,    76,
+      78,    79,    80,    81,    84,    85,    90,    91,   133,   138,
+      11,    12,    13,    14,    17,    86,   142,   144,    13,   144,
+      13,   144,    13,   144,    14,    85,   100,    85,    14,    40,
+      41,    42,   134,    12,    86,   145,   144,    65,    65,    65,
+      65,    85,    85,    85,    40,    41,   134,    25,    39,    40,
+      42,    45,    25,    39,    42,   132,   100,    11,   100,   100,
+     100,   100,   100,    98,    99,   100,   100,     0,    54,    16,
+      51,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    78,    79,    80,    81,    82,    83,    84,    85,
+      98,   100,   110,    26,     7,    26,   133,   120,   121,    16,
+      59,    62,    74,    84,    85,   123,   126,   127,   128,   129,
+     130,    35,   144,   108,    91,   144,   101,   102,   103,    92,
+      16,    84,    16,    84,    92,    89,   123,   139,    13,    13,
+      13,    13,   131,    98,    40,    42,    42,    65,    98,    98,
+      98,    98,   100,   131,   100,    98,   100,    40,    42,    42,
+      42,    25,    39,    42,    42,    42,    89,    89,   100,    99,
+     100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
+     100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
+     100,   100,    13,    14,    25,    39,    40,    41,    42,    45,
+      48,    91,   118,   143,   144,   100,    13,    91,   118,   143,
+     100,    99,    89,   107,   131,   135,   136,    95,   114,    54,
+     114,   144,   144,     3,    92,   123,   123,   125,     3,    92,
+      89,   127,   135,    74,   128,    85,   129,   130,    89,   110,
+     144,    26,    54,    93,   104,   105,   106,   144,   104,   104,
+      92,    92,    92,    92,    74,   139,    89,    89,    42,   131,
+      66,    66,    66,    66,    89,    89,    89,    89,    89,    42,
+      42,    42,   100,    92,    93,   144,    13,   144,    13,    92,
+      43,    44,   119,   140,   141,   110,    89,    54,   100,   100,
+      92,   121,   122,    92,    89,    89,   124,    89,   144,   100,
+     100,    92,   106,   144,    93,    92,    92,    66,    85,    85,
+      85,    85,   100,    13,    13,    44,    43,    89,   119,    88,
+     131,   122,   100,   100,   100,   100,   100,    89,    89,    89,
+      89
 };
 
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
-
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
-
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint8 yyr1[] =
+{
+       0,    96,    97,    97,    98,    98,    98,    98,    99,    99,
+     100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
+     100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
+     100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
+     101,   100,   102,   100,   103,   100,   104,   104,   105,   105,
+     106,   106,   106,   107,   100,   100,   108,   100,   109,   110,
+     110,   110,   111,   112,   100,   113,   113,   100,   114,   100,
+     100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
+     100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
+     100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
+     100,   100,   100,   100,   100,   100,   100,   100,   100,   115,
+     115,   100,   100,   100,   100,   116,   116,   116,   117,   117,
+     118,   118,   118,   117,   117,   117,   119,   119,   120,   120,
+     120,   120,   120,   121,   121,   122,   122,   124,   123,   125,
+     123,   123,   123,   123,   123,   126,   127,   127,   127,   128,
+     128,   128,   128,   128,   129,   129,   129,   129,   130,   130,
+     131,   132,   132,   132,   132,   132,   132,   132,   132,   132,
+     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
+     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
+     132,   132,   132,   132,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   134,   134,   134,   134,   135,   135,   136,   136,
+     137,   137,   138,   139,   139,   140,   140,   141,   141,   141,
+     142,   142,   142,   142,   142,   142,   142,   142,   142,   142,
+     142,   142,   142,   142,   142,   142,   142,   142,   142,   142,
+     142,   142,   142,   142,   142,   142,   142,   142,   142,   142,
+     142,   142,   142,   142,   142,   142,   142,   143,   143,   143,
+     143,   143,   143,   143,   143,   144,   144,   144,   144,   144,
+     144,   145,   145,   145,   145
+};
 
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_int8 yyr2[] =
+{
+       0,     2,     1,     1,     1,     4,     4,     4,     1,     3,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       4,     4,     2,     4,     3,     4,     3,     4,     5,     3,
+       3,     3,     4,     3,     4,     5,     3,     3,     4,     4,
+       0,     5,     0,     5,     0,     5,     1,     1,     1,     2,
+       3,     2,     2,     0,     5,     3,     0,     5,     1,     0,
+       1,     3,     5,     4,     1,     1,     1,     3,     1,     3,
+       4,     4,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     5,     3,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     4,     4,     7,     7,     7,     7,     1,
+       2,     1,     1,     1,     1,     1,     1,     3,     2,     3,
+       3,     4,     5,     1,     2,     1,     1,     0,     1,     1,
+       1,     1,     2,     1,     2,     1,     0,     0,     4,     0,
+       3,     1,     2,     1,     2,     1,     2,     1,     1,     3,
+       2,     1,     2,     1,     2,     2,     3,     3,     2,     3,
+       1,     1,     1,     1,     2,     3,     2,     3,     3,     3,
+       2,     2,     3,     4,     3,     3,     4,     3,     4,     3,
+       4,     2,     3,     2,     3,     2,     3,     1,     1,     2,
+       2,     1,     2,     1,     1,     1,     2,     2,     2,     3,
+       2,     2,     3,     2,     2,     3,     2,     2,     3,     5,
+       2,     2,     1,     1,     1,     1,     1,     3,     1,     3,
+       1,     2,     2,     0,     2,     2,     2,     1,     1,     1,
+       2,     2,     4,     4,     4,     4,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     3,     3,     3,     2,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1
+};
 
-#define YYFAIL		goto yyerrlab
 
-#define YYRECOVERING()  (!!yyerrstatus)
+enum { YYENOMEM = -2 };
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
-
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
 
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
 
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
 
+#define YYRECOVERING()  (!!yyerrstatus)
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
+
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -1564,80 +1686,65 @@ while (YYID (0))
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+# ifndef YY_LOCATION_PRINT
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+
+
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Kind, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
+
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yykind, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -1645,16 +1752,8 @@ yy_symbol_print (yyoutput, yytype, yyval
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1665,63 +1764,56 @@ yy_stack_print (yybottom, yytop)
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
 static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule)
 {
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
+      yy_symbol_print (stderr,
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)]);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1736,342 +1828,82 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
 
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
 
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
 
-  if (! yyres)
-    return yystrlen (yystr);
 
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
-  switch (yytype)
-    {
-
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
 
 /* The lookahead symbol.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
-
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+
+/*----------.
+| yyparse.  |
+`----------*/
+
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
-
-
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to xreallocate them elsewhere.  */
 
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize;
+
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
-
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -2079,133 +1911,147 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
   yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
-	/* Give user a chance to xreallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        yy_state_t *yyss1 = yyss;
+        YYSTYPE *yyvs1 = yyvs;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
+                    &yystacksize);
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yy_state_t *yyss1 = yyss;
+        union yyalloc *yyptr =
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      YYDPRINTF ((stderr, "Reading a token\n"));
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -2220,8 +2066,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -2233,13 +2079,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -2254,14 +2100,14 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -2274,309 +2120,272 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 4:
-
-/* Line 1455 of yacc.c  */
-#line 282 "c-exp.y"
-    { write_exp_elt_opcode(pstate, OP_TYPE);
-			  write_exp_elt_type(pstate, (yyvsp[(1) - (1)].tval));
+  case 4:
+#line 285 "c-exp.y"
+                        { write_exp_elt_opcode(pstate, OP_TYPE);
+			  write_exp_elt_type(pstate, (yyvsp[0].tval));
 			  write_exp_elt_opcode(pstate, OP_TYPE);}
+#line 2130 "c-exp.c.tmp"
     break;
 
   case 5:
-
-/* Line 1455 of yacc.c  */
-#line 286 "c-exp.y"
-    {
+#line 289 "c-exp.y"
+                        {
 			  write_exp_elt_opcode (pstate, OP_TYPEOF);
 			}
+#line 2138 "c-exp.c.tmp"
     break;
 
   case 6:
-
-/* Line 1455 of yacc.c  */
-#line 290 "c-exp.y"
-    {
+#line 293 "c-exp.y"
+                        {
 			  write_exp_elt_opcode (pstate, OP_TYPE);
-			  write_exp_elt_type (pstate, (yyvsp[(3) - (4)].tval));
+			  write_exp_elt_type (pstate, (yyvsp[-1].tval));
 			  write_exp_elt_opcode (pstate, OP_TYPE);
 			}
+#line 2148 "c-exp.c.tmp"
     break;
 
   case 7:
-
-/* Line 1455 of yacc.c  */
-#line 296 "c-exp.y"
-    {
+#line 299 "c-exp.y"
+                        {
 			  write_exp_elt_opcode (pstate, OP_DECLTYPE);
 			}
+#line 2156 "c-exp.c.tmp"
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
-#line 304 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+#line 307 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+#line 2162 "c-exp.c.tmp"
     break;
 
   case 10:
-
-/* Line 1455 of yacc.c  */
-#line 309 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND); }
+#line 312 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_IND); }
+#line 2168 "c-exp.c.tmp"
     break;
 
   case 11:
-
-/* Line 1455 of yacc.c  */
-#line 313 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+#line 316 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+#line 2174 "c-exp.c.tmp"
     break;
 
   case 12:
-
-/* Line 1455 of yacc.c  */
-#line 317 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_NEG); }
+#line 320 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_NEG); }
+#line 2180 "c-exp.c.tmp"
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
-#line 321 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+#line 324 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+#line 2186 "c-exp.c.tmp"
     break;
 
   case 14:
-
-/* Line 1455 of yacc.c  */
-#line 325 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+#line 328 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+#line 2192 "c-exp.c.tmp"
     break;
 
   case 15:
-
-/* Line 1455 of yacc.c  */
-#line 329 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_COMPLEMENT); }
+#line 332 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_COMPLEMENT); }
+#line 2198 "c-exp.c.tmp"
     break;
 
   case 16:
-
-/* Line 1455 of yacc.c  */
-#line 333 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PREINCREMENT); }
+#line 336 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_PREINCREMENT); }
+#line 2204 "c-exp.c.tmp"
     break;
 
   case 17:
-
-/* Line 1455 of yacc.c  */
-#line 337 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PREDECREMENT); }
+#line 340 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_PREDECREMENT); }
+#line 2210 "c-exp.c.tmp"
     break;
 
   case 18:
-
-/* Line 1455 of yacc.c  */
-#line 341 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_POSTINCREMENT); }
+#line 344 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_POSTINCREMENT); }
+#line 2216 "c-exp.c.tmp"
     break;
 
   case 19:
-
-/* Line 1455 of yacc.c  */
-#line 345 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_POSTDECREMENT); }
+#line 348 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_POSTDECREMENT); }
+#line 2222 "c-exp.c.tmp"
     break;
 
   case 20:
-
-/* Line 1455 of yacc.c  */
-#line 349 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_TYPEID); }
+#line 352 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_TYPEID); }
+#line 2228 "c-exp.c.tmp"
     break;
 
   case 21:
-
-/* Line 1455 of yacc.c  */
-#line 353 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_TYPEID); }
+#line 356 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_TYPEID); }
+#line 2234 "c-exp.c.tmp"
     break;
 
   case 22:
-
-/* Line 1455 of yacc.c  */
-#line 357 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+#line 360 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+#line 2240 "c-exp.c.tmp"
     break;
 
   case 23:
-
-/* Line 1455 of yacc.c  */
-#line 361 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ALIGNOF); }
+#line 364 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_ALIGNOF); }
+#line 2246 "c-exp.c.tmp"
     break;
 
   case 24:
-
-/* Line 1455 of yacc.c  */
-#line 365 "c-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			  write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
+#line 368 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, STRUCTOP_PTR);
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+#line 2254 "c-exp.c.tmp"
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
-#line 371 "c-exp.y"
-    { pstate->mark_struct_expression ();
+#line 374 "c-exp.y"
+                        { pstate->mark_struct_expression ();
 			  write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			  write_exp_string (pstate, (yyvsp[(3) - (4)].sval));
+			  write_exp_string (pstate, (yyvsp[-1].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+#line 2263 "c-exp.c.tmp"
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
-#line 378 "c-exp.y"
-    { struct stoken s;
+#line 381 "c-exp.y"
+                        { struct stoken s;
 			  pstate->mark_struct_expression ();
 			  write_exp_elt_opcode (pstate, STRUCTOP_PTR);
 			  s.ptr = "";
 			  s.length = 0;
 			  write_exp_string (pstate, s);
 			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+#line 2275 "c-exp.c.tmp"
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
-#line 388 "c-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			  write_destructor_name (pstate, (yyvsp[(4) - (4)].sval));
+#line 391 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, STRUCTOP_PTR);
+			  write_destructor_name (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+#line 2283 "c-exp.c.tmp"
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
-#line 394 "c-exp.y"
-    { pstate->mark_struct_expression ();
+#line 397 "c-exp.y"
+                        { pstate->mark_struct_expression ();
 			  write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			  write_destructor_name (pstate, (yyvsp[(4) - (5)].sval));
+			  write_destructor_name (pstate, (yyvsp[-1].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+#line 2292 "c-exp.c.tmp"
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
-#line 401 "c-exp.y"
-    { /* exp->type::name becomes exp->*(&type::name) */
+#line 404 "c-exp.y"
+                        { /* exp->type::name becomes exp->*(&type::name) */
 			  /* Note: this doesn't work if name is a
 			     static member!  FIXME */
 			  write_exp_elt_opcode (pstate, UNOP_ADDR);
 			  write_exp_elt_opcode (pstate, STRUCTOP_MPTR); }
+#line 2302 "c-exp.c.tmp"
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
-#line 409 "c-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_MPTR); }
+#line 412 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, STRUCTOP_MPTR); }
+#line 2308 "c-exp.c.tmp"
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
-#line 413 "c-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
+#line 416 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 2316 "c-exp.c.tmp"
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
-#line 419 "c-exp.y"
-    { pstate->mark_struct_expression ();
+#line 422 "c-exp.y"
+                        { pstate->mark_struct_expression ();
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, (yyvsp[(3) - (4)].sval));
+			  write_exp_string (pstate, (yyvsp[-1].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 2325 "c-exp.c.tmp"
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
-#line 426 "c-exp.y"
-    { struct stoken s;
+#line 429 "c-exp.y"
+                        { struct stoken s;
 			  pstate->mark_struct_expression ();
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
 			  s.ptr = "";
 			  s.length = 0;
 			  write_exp_string (pstate, s);
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 2337 "c-exp.c.tmp"
     break;
 
   case 34:
-
-/* Line 1455 of yacc.c  */
-#line 436 "c-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_destructor_name (pstate, (yyvsp[(4) - (4)].sval));
+#line 439 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+			  write_destructor_name (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 2345 "c-exp.c.tmp"
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
-#line 442 "c-exp.y"
-    { pstate->mark_struct_expression ();
+#line 445 "c-exp.y"
+                        { pstate->mark_struct_expression ();
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_destructor_name (pstate, (yyvsp[(4) - (5)].sval));
+			  write_destructor_name (pstate, (yyvsp[-1].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 2354 "c-exp.c.tmp"
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
-#line 449 "c-exp.y"
-    { /* exp.type::name becomes exp.*(&type::name) */
+#line 452 "c-exp.y"
+                        { /* exp.type::name becomes exp.*(&type::name) */
 			  /* Note: this doesn't work if name is a
 			     static member!  FIXME */
 			  write_exp_elt_opcode (pstate, UNOP_ADDR);
 			  write_exp_elt_opcode (pstate, STRUCTOP_MEMBER); }
+#line 2364 "c-exp.c.tmp"
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
-#line 457 "c-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_MEMBER); }
+#line 460 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, STRUCTOP_MEMBER); }
+#line 2370 "c-exp.c.tmp"
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
-#line 461 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+#line 464 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+#line 2376 "c-exp.c.tmp"
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
-#line 465 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+#line 468 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+#line 2382 "c-exp.c.tmp"
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
-#line 474 "c-exp.y"
-    {
+#line 477 "c-exp.y"
+                        {
 			  CORE_ADDR theclass;
 
-			  std::string copy = copy_name ((yyvsp[(2) - (2)].tsym).stoken);
+			  std::string copy = copy_name ((yyvsp[0].tsym).stoken);
 			  theclass = lookup_objc_class (pstate->gdbarch (),
 							copy.c_str ());
 			  if (theclass == 0)
@@ -2589,120 +2398,107 @@ yyreduce:
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			  start_msglist();
 			}
+#line 2403 "c-exp.c.tmp"
     break;
 
   case 41:
-
-/* Line 1455 of yacc.c  */
-#line 491 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
+#line 494 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
 			  end_msglist (pstate);
 			  write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
 			}
+#line 2412 "c-exp.c.tmp"
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
-#line 498 "c-exp.y"
-    {
+#line 501 "c-exp.y"
+                        {
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate,
 					    parse_type (pstate)->builtin_int);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(2) - (2)].theclass).theclass);
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].theclass).theclass);
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			  start_msglist();
 			}
+#line 2425 "c-exp.c.tmp"
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
-#line 507 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
+#line 510 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
 			  end_msglist (pstate);
 			  write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
 			}
+#line 2434 "c-exp.c.tmp"
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
-#line 514 "c-exp.y"
-    { start_msglist(); }
+#line 517 "c-exp.y"
+                        { start_msglist(); }
+#line 2440 "c-exp.c.tmp"
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
-#line 516 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
+#line 519 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
 			  end_msglist (pstate);
 			  write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
 			}
+#line 2449 "c-exp.c.tmp"
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
-#line 523 "c-exp.y"
-    { add_msglist(&(yyvsp[(1) - (1)].sval), 0); }
+#line 526 "c-exp.y"
+                        { add_msglist(&(yyvsp[0].sval), 0); }
+#line 2455 "c-exp.c.tmp"
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
-#line 532 "c-exp.y"
-    { add_msglist(&(yyvsp[(1) - (3)].sval), 1); }
+#line 535 "c-exp.y"
+                        { add_msglist(&(yyvsp[-2].sval), 1); }
+#line 2461 "c-exp.c.tmp"
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
-#line 534 "c-exp.y"
-    { add_msglist(0, 1);   }
+#line 537 "c-exp.y"
+                        { add_msglist(0, 1);   }
+#line 2467 "c-exp.c.tmp"
     break;
 
   case 52:
-
-/* Line 1455 of yacc.c  */
-#line 536 "c-exp.y"
-    { add_msglist(0, 0);   }
+#line 539 "c-exp.y"
+                        { add_msglist(0, 0);   }
+#line 2473 "c-exp.c.tmp"
     break;
 
   case 53:
-
-/* Line 1455 of yacc.c  */
-#line 542 "c-exp.y"
-    { pstate->start_arglist (); }
+#line 545 "c-exp.y"
+                        { pstate->start_arglist (); }
+#line 2479 "c-exp.c.tmp"
     break;
 
   case 54:
-
-/* Line 1455 of yacc.c  */
-#line 544 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FUNCALL);
+#line 547 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_FUNCALL);
 			  write_exp_elt_longcst (pstate,
 						 pstate->end_arglist ());
 			  write_exp_elt_opcode (pstate, OP_FUNCALL); }
+#line 2488 "c-exp.c.tmp"
     break;
 
   case 55:
-
-/* Line 1455 of yacc.c  */
-#line 554 "c-exp.y"
-    { pstate->start_arglist ();
+#line 557 "c-exp.y"
+                        { pstate->start_arglist ();
 			  write_exp_elt_opcode (pstate, OP_FUNCALL);
 			  write_exp_elt_longcst (pstate,
 						 pstate->end_arglist ());
 			  write_exp_elt_opcode (pstate, OP_FUNCALL); }
+#line 2498 "c-exp.c.tmp"
     break;
 
   case 56:
-
-/* Line 1455 of yacc.c  */
-#line 563 "c-exp.y"
-    {
+#line 566 "c-exp.y"
+                        {
 			  /* This could potentially be a an argument defined
 			     lookup function (Koenig).  */
 			  write_exp_elt_opcode (pstate, OP_ADL_FUNC);
@@ -2710,7 +2506,7 @@ yyreduce:
 			    (pstate, pstate->expression_context_block);
 			  write_exp_elt_sym (pstate,
 					     NULL); /* Placeholder.  */
-			  write_exp_string (pstate, (yyvsp[(1) - (2)].ssym).stoken);
+			  write_exp_string (pstate, (yyvsp[-1].ssym).stoken);
 			  write_exp_elt_opcode (pstate, OP_ADL_FUNC);
 
 			/* This is to save the value of arglist_len
@@ -2718,47 +2514,42 @@ yyreduce:
 
 			  pstate->start_arglist ();
 			}
+#line 2519 "c-exp.c.tmp"
     break;
 
   case 57:
-
-/* Line 1455 of yacc.c  */
-#line 580 "c-exp.y"
-    {
+#line 583 "c-exp.y"
+                        {
 			  write_exp_elt_opcode (pstate, OP_FUNCALL);
 			  write_exp_elt_longcst (pstate,
 						 pstate->end_arglist ());
 			  write_exp_elt_opcode (pstate, OP_FUNCALL);
 			}
+#line 2530 "c-exp.c.tmp"
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
-#line 589 "c-exp.y"
-    { pstate->start_arglist (); }
+#line 592 "c-exp.y"
+                        { pstate->start_arglist (); }
+#line 2536 "c-exp.c.tmp"
     break;
 
   case 60:
-
-/* Line 1455 of yacc.c  */
-#line 596 "c-exp.y"
-    { pstate->arglist_len = 1; }
+#line 599 "c-exp.y"
+                        { pstate->arglist_len = 1; }
+#line 2542 "c-exp.c.tmp"
     break;
 
   case 61:
-
-/* Line 1455 of yacc.c  */
-#line 600 "c-exp.y"
-    { pstate->arglist_len++; }
+#line 603 "c-exp.y"
+                        { pstate->arglist_len++; }
+#line 2548 "c-exp.c.tmp"
     break;
 
   case 62:
-
-/* Line 1455 of yacc.c  */
-#line 604 "c-exp.y"
-    {
-			  std::vector<struct type *> *type_list = (yyvsp[(3) - (5)].tvec);
+#line 607 "c-exp.y"
+                        {
+			  std::vector<struct type *> *type_list = (yyvsp[-2].tvec);
 			  LONGEST len = type_list->size ();
 
 			  write_exp_elt_opcode (pstate, TYPE_INSTANCE);
@@ -2775,13 +2566,12 @@ yyreduce:
 			  write_exp_elt_longcst(pstate, len);
 			  write_exp_elt_opcode (pstate, TYPE_INSTANCE);
 			}
+#line 2571 "c-exp.c.tmp"
     break;
 
   case 63:
-
-/* Line 1455 of yacc.c  */
-#line 625 "c-exp.y"
-    { write_exp_elt_opcode (pstate, TYPE_INSTANCE);
+#line 628 "c-exp.y"
+                       { write_exp_elt_opcode (pstate, TYPE_INSTANCE);
 			 /* See above.  */
 			 write_exp_elt_longcst
 			   (pstate,
@@ -2790,285 +2580,291 @@ yyreduce:
 			 write_exp_elt_longcst (pstate, 0);
 			 write_exp_elt_opcode (pstate, TYPE_INSTANCE);
 		       }
+#line 2585 "c-exp.c.tmp"
     break;
 
   case 67:
-
-/* Line 1455 of yacc.c  */
-#line 648 "c-exp.y"
-    {
+#line 651 "c-exp.y"
+                        {
 			  write_exp_elt_opcode (pstate, OP_FUNC_STATIC_VAR);
-			  write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, OP_FUNC_STATIC_VAR);
 			}
+#line 2595 "c-exp.c.tmp"
     break;
 
   case 68:
-
-/* Line 1455 of yacc.c  */
-#line 656 "c-exp.y"
-    { (yyval.lval) = pstate->end_arglist () - 1; }
+#line 659 "c-exp.y"
+                        { (yyval.lval) = pstate->end_arglist () - 1; }
+#line 2601 "c-exp.c.tmp"
     break;
 
   case 69:
-
-/* Line 1455 of yacc.c  */
-#line 659 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ARRAY);
+#line 662 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_ARRAY);
 			  write_exp_elt_longcst (pstate, (LONGEST) 0);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(3) - (3)].lval));
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].lval));
 			  write_exp_elt_opcode (pstate, OP_ARRAY); }
+#line 2610 "c-exp.c.tmp"
     break;
 
   case 70:
-
-/* Line 1455 of yacc.c  */
-#line 666 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_MEMVAL_TYPE); }
+#line 669 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_MEMVAL_TYPE); }
+#line 2616 "c-exp.c.tmp"
     break;
 
   case 71:
-
-/* Line 1455 of yacc.c  */
-#line 670 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+#line 673 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+#line 2622 "c-exp.c.tmp"
     break;
 
   case 72:
-
-/* Line 1455 of yacc.c  */
-#line 674 "c-exp.y"
-    { }
+#line 677 "c-exp.y"
+                        { }
+#line 2628 "c-exp.c.tmp"
     break;
 
   case 73:
-
-/* Line 1455 of yacc.c  */
-#line 680 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+#line 683 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+#line 2634 "c-exp.c.tmp"
     break;
 
   case 74:
-
-/* Line 1455 of yacc.c  */
-#line 684 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 687 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 2640 "c-exp.c.tmp"
     break;
 
   case 75:
-
-/* Line 1455 of yacc.c  */
-#line 688 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_DIV); }
+#line 691 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_DIV); }
+#line 2646 "c-exp.c.tmp"
     break;
 
   case 76:
-
-/* Line 1455 of yacc.c  */
-#line 692 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 695 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 2652 "c-exp.c.tmp"
     break;
 
   case 77:
-
-/* Line 1455 of yacc.c  */
-#line 696 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 699 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 2658 "c-exp.c.tmp"
     break;
 
   case 78:
-
-/* Line 1455 of yacc.c  */
-#line 700 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 703 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 2664 "c-exp.c.tmp"
     break;
 
   case 79:
-
-/* Line 1455 of yacc.c  */
-#line 704 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LSH); }
+#line 707 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LSH); }
+#line 2670 "c-exp.c.tmp"
     break;
 
   case 80:
-
-/* Line 1455 of yacc.c  */
-#line 708 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_RSH); }
+#line 711 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_RSH); }
+#line 2676 "c-exp.c.tmp"
     break;
 
   case 81:
-
-/* Line 1455 of yacc.c  */
-#line 712 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 715 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 2682 "c-exp.c.tmp"
     break;
 
   case 82:
-
-/* Line 1455 of yacc.c  */
-#line 716 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 719 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 2688 "c-exp.c.tmp"
     break;
 
   case 83:
-
-/* Line 1455 of yacc.c  */
-#line 720 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+#line 723 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+#line 2694 "c-exp.c.tmp"
     break;
 
   case 84:
-
-/* Line 1455 of yacc.c  */
-#line 724 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+#line 727 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+#line 2700 "c-exp.c.tmp"
     break;
 
   case 85:
-
-/* Line 1455 of yacc.c  */
-#line 728 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LESS); }
+#line 731 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LESS); }
+#line 2706 "c-exp.c.tmp"
     break;
 
   case 86:
-
-/* Line 1455 of yacc.c  */
-#line 732 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GTR); }
+#line 735 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_GTR); }
+#line 2712 "c-exp.c.tmp"
     break;
 
   case 87:
-
-/* Line 1455 of yacc.c  */
-#line 736 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 739 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 2718 "c-exp.c.tmp"
     break;
 
   case 88:
-
-/* Line 1455 of yacc.c  */
-#line 740 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 743 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 2724 "c-exp.c.tmp"
     break;
 
   case 89:
-
-/* Line 1455 of yacc.c  */
-#line 744 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 747 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 2730 "c-exp.c.tmp"
     break;
 
   case 90:
-
-/* Line 1455 of yacc.c  */
-#line 748 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 751 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 2736 "c-exp.c.tmp"
     break;
 
   case 91:
-
-/* Line 1455 of yacc.c  */
-#line 752 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 755 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 2742 "c-exp.c.tmp"
     break;
 
   case 92:
-
-/* Line 1455 of yacc.c  */
-#line 756 "c-exp.y"
-    { write_exp_elt_opcode (pstate, TERNOP_COND); }
+#line 759 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, TERNOP_COND); }
+#line 2748 "c-exp.c.tmp"
     break;
 
   case 93:
-
-/* Line 1455 of yacc.c  */
-#line 760 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 763 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 2754 "c-exp.c.tmp"
     break;
 
   case 94:
-
-/* Line 1455 of yacc.c  */
-#line 764 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
-			  write_exp_elt_opcode (pstate, (yyvsp[(2) - (3)].opcode));
+#line 767 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
+			  write_exp_elt_opcode (pstate, (yyvsp[-1].opcode));
 			  write_exp_elt_opcode (pstate,
 						BINOP_ASSIGN_MODIFY); }
+#line 2763 "c-exp.c.tmp"
     break;
 
   case 95:
-
-/* Line 1455 of yacc.c  */
-#line 771 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val_int).type);
-			  write_exp_elt_longcst (pstate, (LONGEST) ((yyvsp[(1) - (1)].typed_val_int).val));
+#line 774 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val_int).type);
+			  write_exp_elt_longcst (pstate, (LONGEST) ((yyvsp[0].typed_val_int).val));
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 2772 "c-exp.c.tmp"
     break;
 
   case 96:
+#line 781 "c-exp.y"
+                        {
+			  write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_type (pstate, TYPE_TARGET_TYPE ((yyvsp[0].typed_val_int).type));
+			  write_exp_elt_longcst (pstate, 0);
+			  write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_type (pstate, TYPE_TARGET_TYPE ((yyvsp[0].typed_val_int).type));
+			  write_exp_elt_longcst (pstate, (LONGEST) ((yyvsp[0].typed_val_int).val));
+			  write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_opcode (pstate, OP_COMPLEX);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val_int).type);
+			  write_exp_elt_opcode (pstate, OP_COMPLEX);
+			}
+#line 2790 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 778 "c-exp.y"
-    {
+  case 97:
+#line 797 "c-exp.y"
+                        {
 			  struct stoken_vector vec;
 			  vec.len = 1;
-			  vec.tokens = &(yyvsp[(1) - (1)].tsval);
-			  write_exp_string_vector (pstate, (yyvsp[(1) - (1)].tsval).type, &vec);
+			  vec.tokens = &(yyvsp[0].tsval);
+			  write_exp_string_vector (pstate, (yyvsp[0].tsval).type, &vec);
 			}
+#line 2801 "c-exp.c.tmp"
     break;
 
-  case 97:
-
-/* Line 1455 of yacc.c  */
-#line 787 "c-exp.y"
-    { YYSTYPE val;
-			  parse_number (pstate, (yyvsp[(1) - (1)].ssym).stoken.ptr,
-					(yyvsp[(1) - (1)].ssym).stoken.length, 0, &val);
+  case 98:
+#line 806 "c-exp.y"
+                        { YYSTYPE val;
+			  parse_number (pstate, (yyvsp[0].ssym).stoken.ptr,
+					(yyvsp[0].ssym).stoken.length, 0, &val);
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate, val.typed_val_int.type);
 			  write_exp_elt_longcst (pstate,
 					    (LONGEST) val.typed_val_int.val);
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			}
+#line 2815 "c-exp.c.tmp"
     break;
 
-  case 98:
-
-/* Line 1455 of yacc.c  */
-#line 800 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FLOAT);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val_float).type);
-			  write_exp_elt_floatcst (pstate, (yyvsp[(1) - (1)].typed_val_float).val);
+  case 99:
+#line 819 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val_float).type);
+			  write_exp_elt_floatcst (pstate, (yyvsp[0].typed_val_float).val);
 			  write_exp_elt_opcode (pstate, OP_FLOAT); }
+#line 2824 "c-exp.c.tmp"
     break;
 
   case 100:
-
-/* Line 1455 of yacc.c  */
-#line 810 "c-exp.y"
-    {
-			  write_dollar_variable (pstate, (yyvsp[(1) - (1)].sval));
+#line 826 "c-exp.y"
+                        {
+			  struct type *underlying
+			    = TYPE_TARGET_TYPE ((yyvsp[0].typed_val_float).type);
+
+			  write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_type (pstate, underlying);
+			  gdb_byte val[16];
+			  target_float_from_host_double (val, underlying, 0);
+			  write_exp_elt_floatcst (pstate, val);
+			  write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_type (pstate, underlying);
+			  write_exp_elt_floatcst (pstate, (yyvsp[0].typed_val_float).val);
+			  write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_opcode (pstate, OP_COMPLEX);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val_float).type);
+			  write_exp_elt_opcode (pstate, OP_COMPLEX);
 			}
+#line 2847 "c-exp.c.tmp"
     break;
 
-  case 101:
+  case 102:
+#line 850 "c-exp.y"
+                        {
+			  write_dollar_variable (pstate, (yyvsp[0].sval));
+			}
+#line 2855 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 816 "c-exp.y"
-    {
+  case 103:
+#line 856 "c-exp.y"
+                        {
 			  write_exp_elt_opcode (pstate, OP_OBJC_SELECTOR);
-			  write_exp_string (pstate, (yyvsp[(3) - (4)].sval));
+			  write_exp_string (pstate, (yyvsp[-1].sval));
 			  write_exp_elt_opcode (pstate, OP_OBJC_SELECTOR); }
+#line 2864 "c-exp.c.tmp"
     break;
 
-  case 102:
-
-/* Line 1455 of yacc.c  */
-#line 823 "c-exp.y"
-    { struct type *type = (yyvsp[(3) - (4)].tval);
+  case 104:
+#line 863 "c-exp.y"
+                        { struct type *type = (yyvsp[-1].tval);
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate, lookup_signed_typename
 					      (pstate->language (),
@@ -3084,44 +2880,39 @@ yyreduce:
 			  write_exp_elt_longcst (pstate,
 						 (LONGEST) TYPE_LENGTH (type));
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 2885 "c-exp.c.tmp"
     break;
 
-  case 103:
-
-/* Line 1455 of yacc.c  */
-#line 842 "c-exp.y"
-    { write_exp_elt_opcode (pstate,
+  case 105:
+#line 882 "c-exp.y"
+                        { write_exp_elt_opcode (pstate,
 						UNOP_REINTERPRET_CAST); }
+#line 2892 "c-exp.c.tmp"
     break;
 
-  case 104:
-
-/* Line 1455 of yacc.c  */
-#line 847 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+  case 106:
+#line 887 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+#line 2898 "c-exp.c.tmp"
     break;
 
-  case 105:
-
-/* Line 1455 of yacc.c  */
-#line 851 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_DYNAMIC_CAST); }
+  case 107:
+#line 891 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_DYNAMIC_CAST); }
+#line 2904 "c-exp.c.tmp"
     break;
 
-  case 106:
-
-/* Line 1455 of yacc.c  */
-#line 855 "c-exp.y"
-    { /* We could do more error checking here, but
+  case 108:
+#line 895 "c-exp.y"
+                        { /* We could do more error checking here, but
 			     it doesn't seem worthwhile.  */
 			  write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+#line 2912 "c-exp.c.tmp"
     break;
 
-  case 107:
-
-/* Line 1455 of yacc.c  */
-#line 862 "c-exp.y"
-    {
+  case 109:
+#line 902 "c-exp.y"
+                        {
 			  /* We copy the string here, and not in the
 			     lexer, to guarantee that we do not leak a
 			     string.  Note that we follow the
@@ -3131,18 +2922,17 @@ yyreduce:
 			  (yyval.svec).len = 1;
 			  (yyval.svec).tokens = vec;
 
-			  vec->type = (yyvsp[(1) - (1)].tsval).type;
-			  vec->length = (yyvsp[(1) - (1)].tsval).length;
-			  vec->ptr = (char *) xmalloc ((yyvsp[(1) - (1)].tsval).length + 1);
-			  memcpy (vec->ptr, (yyvsp[(1) - (1)].tsval).ptr, (yyvsp[(1) - (1)].tsval).length + 1);
+			  vec->type = (yyvsp[0].tsval).type;
+			  vec->length = (yyvsp[0].tsval).length;
+			  vec->ptr = (char *) xmalloc ((yyvsp[0].tsval).length + 1);
+			  memcpy (vec->ptr, (yyvsp[0].tsval).ptr, (yyvsp[0].tsval).length + 1);
 			}
+#line 2932 "c-exp.c.tmp"
     break;
 
-  case 108:
-
-/* Line 1455 of yacc.c  */
-#line 879 "c-exp.y"
-    {
+  case 110:
+#line 919 "c-exp.y"
+                        {
 			  /* Note that we NUL-terminate here, but just
 			     for convenience.  */
 			  char *p;
@@ -3150,26 +2940,25 @@ yyreduce:
 			  (yyval.svec).tokens = XRESIZEVEC (struct typed_stoken,
 						  (yyval.svec).tokens, (yyval.svec).len);
 
-			  p = (char *) xmalloc ((yyvsp[(2) - (2)].tsval).length + 1);
-			  memcpy (p, (yyvsp[(2) - (2)].tsval).ptr, (yyvsp[(2) - (2)].tsval).length + 1);
+			  p = (char *) xmalloc ((yyvsp[0].tsval).length + 1);
+			  memcpy (p, (yyvsp[0].tsval).ptr, (yyvsp[0].tsval).length + 1);
 
-			  (yyval.svec).tokens[(yyval.svec).len - 1].type = (yyvsp[(2) - (2)].tsval).type;
-			  (yyval.svec).tokens[(yyval.svec).len - 1].length = (yyvsp[(2) - (2)].tsval).length;
+			  (yyval.svec).tokens[(yyval.svec).len - 1].type = (yyvsp[0].tsval).type;
+			  (yyval.svec).tokens[(yyval.svec).len - 1].length = (yyvsp[0].tsval).length;
 			  (yyval.svec).tokens[(yyval.svec).len - 1].ptr = p;
 			}
+#line 2952 "c-exp.c.tmp"
     break;
 
-  case 109:
-
-/* Line 1455 of yacc.c  */
-#line 897 "c-exp.y"
-    {
+  case 111:
+#line 937 "c-exp.y"
+                        {
 			  int i;
 			  c_string_type type = C_STRING;
 
-			  for (i = 0; i < (yyvsp[(1) - (1)].svec).len; ++i)
+			  for (i = 0; i < (yyvsp[0].svec).len; ++i)
 			    {
-			      switch ((yyvsp[(1) - (1)].svec).tokens[i].type)
+			      switch ((yyvsp[0].svec).tokens[i].type)
 				{
 				case C_STRING:
 				  break;
@@ -3177,9 +2966,9 @@ yyreduce:
 				case C_STRING_16:
 				case C_STRING_32:
 				  if (type != C_STRING
-				      && type != (yyvsp[(1) - (1)].svec).tokens[i].type)
+				      && type != (yyvsp[0].svec).tokens[i].type)
 				    error (_("Undefined string concatenation."));
-				  type = (enum c_string_type_values) (yyvsp[(1) - (1)].svec).tokens[i].type;
+				  type = (enum c_string_type_values) (yyvsp[0].svec).tokens[i].type;
 				  break;
 				default:
 				  /* internal error */
@@ -3188,108 +2977,100 @@ yyreduce:
 				}
 			    }
 
-			  write_exp_string_vector (pstate, type, &(yyvsp[(1) - (1)].svec));
-			  for (i = 0; i < (yyvsp[(1) - (1)].svec).len; ++i)
-			    xfree ((yyvsp[(1) - (1)].svec).tokens[i].ptr);
-			  xfree ((yyvsp[(1) - (1)].svec).tokens);
+			  write_exp_string_vector (pstate, type, &(yyvsp[0].svec));
+			  for (i = 0; i < (yyvsp[0].svec).len; ++i)
+			    xfree ((yyvsp[0].svec).tokens[i].ptr);
+			  xfree ((yyvsp[0].svec).tokens);
 			}
+#line 2987 "c-exp.c.tmp"
     break;
 
-  case 110:
-
-/* Line 1455 of yacc.c  */
-#line 932 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_OBJC_NSSTRING);
-			  write_exp_string (pstate, (yyvsp[(1) - (1)].sval));
+  case 112:
+#line 972 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_OBJC_NSSTRING);
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, OP_OBJC_NSSTRING); }
+#line 2995 "c-exp.c.tmp"
     break;
 
-  case 111:
-
-/* Line 1455 of yacc.c  */
-#line 939 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
+  case 113:
+#line 979 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_LONG);
                           write_exp_elt_type (pstate,
 					  parse_type (pstate)->builtin_bool);
                           write_exp_elt_longcst (pstate, (LONGEST) 1);
                           write_exp_elt_opcode (pstate, OP_LONG); }
+#line 3005 "c-exp.c.tmp"
     break;
 
-  case 112:
-
-/* Line 1455 of yacc.c  */
-#line 947 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
+  case 114:
+#line 987 "c-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_LONG);
                           write_exp_elt_type (pstate,
 					  parse_type (pstate)->builtin_bool);
                           write_exp_elt_longcst (pstate, (LONGEST) 0);
                           write_exp_elt_opcode (pstate, OP_LONG); }
+#line 3015 "c-exp.c.tmp"
     break;
 
-  case 113:
-
-/* Line 1455 of yacc.c  */
-#line 957 "c-exp.y"
-    {
-			  if ((yyvsp[(1) - (1)].ssym).sym.symbol)
-			    (yyval.bval) = SYMBOL_BLOCK_VALUE ((yyvsp[(1) - (1)].ssym).sym.symbol);
+  case 115:
+#line 997 "c-exp.y"
+                        {
+			  if ((yyvsp[0].ssym).sym.symbol)
+			    (yyval.bval) = SYMBOL_BLOCK_VALUE ((yyvsp[0].ssym).sym.symbol);
 			  else
 			    error (_("No file or function \"%s\"."),
-				   copy_name ((yyvsp[(1) - (1)].ssym).stoken).c_str ());
+				   copy_name ((yyvsp[0].ssym).stoken).c_str ());
 			}
+#line 3027 "c-exp.c.tmp"
     break;
 
-  case 114:
-
-/* Line 1455 of yacc.c  */
-#line 965 "c-exp.y"
-    {
-			  (yyval.bval) = (yyvsp[(1) - (1)].bval);
+  case 116:
+#line 1005 "c-exp.y"
+                        {
+			  (yyval.bval) = (yyvsp[0].bval);
 			}
+#line 3035 "c-exp.c.tmp"
     break;
 
-  case 115:
-
-/* Line 1455 of yacc.c  */
-#line 971 "c-exp.y"
-    {
-			  std::string copy = copy_name ((yyvsp[(3) - (3)].sval));
+  case 117:
+#line 1011 "c-exp.y"
+                        {
+			  std::string copy = copy_name ((yyvsp[0].sval));
 			  struct symbol *tem
-			    = lookup_symbol (copy.c_str (), (yyvsp[(1) - (3)].bval),
+			    = lookup_symbol (copy.c_str (), (yyvsp[-2].bval),
 					     VAR_DOMAIN, NULL).symbol;
 
 			  if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
 			    error (_("No function \"%s\" in specified context."),
 				   copy.c_str ());
 			  (yyval.bval) = SYMBOL_BLOCK_VALUE (tem); }
+#line 3050 "c-exp.c.tmp"
     break;
 
-  case 116:
-
-/* Line 1455 of yacc.c  */
-#line 984 "c-exp.y"
-    { struct symbol *sym = (yyvsp[(1) - (2)].ssym).sym.symbol;
+  case 118:
+#line 1024 "c-exp.y"
+                        { struct symbol *sym = (yyvsp[-1].ssym).sym.symbol;
 
 			  if (sym == NULL || !SYMBOL_IS_ARGUMENT (sym)
 			      || !symbol_read_needs_frame (sym))
 			    error (_("@entry can be used only for function "
 				     "parameters, not for \"%s\""),
-				   copy_name ((yyvsp[(1) - (2)].ssym).stoken).c_str ());
+				   copy_name ((yyvsp[-1].ssym).stoken).c_str ());
 
 			  write_exp_elt_opcode (pstate, OP_VAR_ENTRY_VALUE);
 			  write_exp_elt_sym (pstate, sym);
 			  write_exp_elt_opcode (pstate, OP_VAR_ENTRY_VALUE);
 			}
+#line 3067 "c-exp.c.tmp"
     break;
 
-  case 117:
-
-/* Line 1455 of yacc.c  */
-#line 999 "c-exp.y"
-    {
-			  std::string copy = copy_name ((yyvsp[(3) - (3)].sval));
+  case 119:
+#line 1039 "c-exp.y"
+                        {
+			  std::string copy = copy_name ((yyvsp[0].sval));
 			  struct block_symbol sym
-			    = lookup_symbol (copy.c_str (), (yyvsp[(1) - (3)].bval),
+			    = lookup_symbol (copy.c_str (), (yyvsp[-2].bval),
 					     VAR_DOMAIN, NULL);
 
 			  if (sym.symbol == 0)
@@ -3302,14 +3083,13 @@ yyreduce:
 			  write_exp_elt_block (pstate, sym.block);
 			  write_exp_elt_sym (pstate, sym.symbol);
 			  write_exp_elt_opcode (pstate, OP_VAR_VALUE); }
+#line 3088 "c-exp.c.tmp"
     break;
 
-  case 118:
-
-/* Line 1455 of yacc.c  */
-#line 1018 "c-exp.y"
-    {
-			  struct type *type = (yyvsp[(1) - (3)].tsym).type;
+  case 120:
+#line 1058 "c-exp.y"
+                        {
+			  struct type *type = (yyvsp[-2].tsym).type;
 			  type = check_typedef (type);
 			  if (!type_aggregate_p (type))
 			    error (_("`%s' is not defined as an aggregate type."),
@@ -3317,17 +3097,16 @@ yyreduce:
 
 			  write_exp_elt_opcode (pstate, OP_SCOPE);
 			  write_exp_elt_type (pstate, type);
-			  write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, OP_SCOPE);
 			}
+#line 3105 "c-exp.c.tmp"
     break;
 
-  case 119:
-
-/* Line 1455 of yacc.c  */
-#line 1031 "c-exp.y"
-    {
-			  struct type *type = (yyvsp[(1) - (4)].tsym).type;
+  case 121:
+#line 1071 "c-exp.y"
+                        {
+			  struct type *type = (yyvsp[-3].tsym).type;
 			  struct stoken tmp_token;
 			  char *buf;
 
@@ -3335,40 +3114,38 @@ yyreduce:
 			  if (!type_aggregate_p (type))
 			    error (_("`%s' is not defined as an aggregate type."),
 				   TYPE_SAFE_NAME (type));
-			  buf = (char *) alloca ((yyvsp[(4) - (4)].sval).length + 2);
+			  buf = (char *) alloca ((yyvsp[0].sval).length + 2);
 			  tmp_token.ptr = buf;
-			  tmp_token.length = (yyvsp[(4) - (4)].sval).length + 1;
+			  tmp_token.length = (yyvsp[0].sval).length + 1;
 			  buf[0] = '~';
-			  memcpy (buf+1, (yyvsp[(4) - (4)].sval).ptr, (yyvsp[(4) - (4)].sval).length);
+			  memcpy (buf+1, (yyvsp[0].sval).ptr, (yyvsp[0].sval).length);
 			  buf[tmp_token.length] = 0;
 
 			  /* Check for valid destructor name.  */
-			  destructor_name_p (tmp_token.ptr, (yyvsp[(1) - (4)].tsym).type);
+			  destructor_name_p (tmp_token.ptr, (yyvsp[-3].tsym).type);
 			  write_exp_elt_opcode (pstate, OP_SCOPE);
 			  write_exp_elt_type (pstate, type);
 			  write_exp_string (pstate, tmp_token);
 			  write_exp_elt_opcode (pstate, OP_SCOPE);
 			}
+#line 3133 "c-exp.c.tmp"
     break;
 
-  case 120:
-
-/* Line 1455 of yacc.c  */
-#line 1055 "c-exp.y"
-    {
-			  std::string copy = copy_name ((yyvsp[(3) - (5)].sval));
+  case 122:
+#line 1095 "c-exp.y"
+                        {
+			  std::string copy = copy_name ((yyvsp[-2].sval));
 			  error (_("No type \"%s\" within class "
 				   "or namespace \"%s\"."),
-				 copy.c_str (), TYPE_SAFE_NAME ((yyvsp[(1) - (5)].tsym).type));
+				 copy.c_str (), TYPE_SAFE_NAME ((yyvsp[-4].tsym).type));
 			}
+#line 3144 "c-exp.c.tmp"
     break;
 
-  case 122:
-
-/* Line 1455 of yacc.c  */
-#line 1065 "c-exp.y"
-    {
-			  std::string name = copy_name ((yyvsp[(2) - (2)].ssym).stoken);
+  case 124:
+#line 1105 "c-exp.y"
+                        {
+			  std::string name = copy_name ((yyvsp[0].ssym).stoken);
 			  struct symbol *sym;
 			  struct bound_minimal_symbol msymbol;
 
@@ -3394,13 +3171,12 @@ yyreduce:
 			    error (_("No symbol \"%s\" in current context."),
 				   name.c_str ());
 			}
+#line 3176 "c-exp.c.tmp"
     break;
 
-  case 123:
-
-/* Line 1455 of yacc.c  */
-#line 1095 "c-exp.y"
-    { struct block_symbol sym = (yyvsp[(1) - (1)].ssym).sym;
+  case 125:
+#line 1135 "c-exp.y"
+                        { struct block_symbol sym = (yyvsp[0].ssym).sym;
 
 			  if (sym.symbol)
 			    {
@@ -3424,7 +3200,7 @@ yyreduce:
 				  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
 				}
 			    }
-			  else if ((yyvsp[(1) - (1)].ssym).is_a_field_of_this)
+			  else if ((yyvsp[0].ssym).is_a_field_of_this)
 			    {
 			      /* C++: it hangs off of `this'.  Must
 			         not inadvertently convert from a method call
@@ -3433,12 +3209,12 @@ yyreduce:
 			      write_exp_elt_opcode (pstate, OP_THIS);
 			      write_exp_elt_opcode (pstate, OP_THIS);
 			      write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			      write_exp_string (pstate, (yyvsp[(1) - (1)].ssym).stoken);
+			      write_exp_string (pstate, (yyvsp[0].ssym).stoken);
 			      write_exp_elt_opcode (pstate, STRUCTOP_PTR);
 			    }
 			  else
 			    {
-			      std::string arg = copy_name ((yyvsp[(1) - (1)].ssym).stoken);
+			      std::string arg = copy_name ((yyvsp[0].ssym).stoken);
 
 			      bound_minimal_symbol msymbol
 				= lookup_bound_minimal_symbol (arg.c_str ());
@@ -3475,851 +3251,798 @@ yyreduce:
 				write_exp_msymbol (pstate, msymbol);
 			    }
 			}
+#line 3256 "c-exp.c.tmp"
     break;
 
-  case 124:
-
-/* Line 1455 of yacc.c  */
-#line 1173 "c-exp.y"
-    {
-		  cpstate->type_stack.insert (pstate,
-					      copy_name ((yyvsp[(2) - (2)].ssym).stoken).c_str ());
-		}
+  case 128:
+#line 1218 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_const); }
+#line 3262 "c-exp.c.tmp"
     break;
 
-  case 132:
-
-/* Line 1455 of yacc.c  */
-#line 1197 "c-exp.y"
-    { cpstate->type_stack.insert (tp_pointer); }
+  case 129:
+#line 1220 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_volatile); }
+#line 3268 "c-exp.c.tmp"
     break;
 
-  case 134:
-
-/* Line 1455 of yacc.c  */
-#line 1200 "c-exp.y"
-    { cpstate->type_stack.insert (tp_pointer); }
+  case 130:
+#line 1222 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_atomic); }
+#line 3274 "c-exp.c.tmp"
     break;
 
-  case 136:
+  case 131:
+#line 1224 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_restrict); }
+#line 3280 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1203 "c-exp.y"
-    { cpstate->type_stack.insert (tp_reference); }
+  case 132:
+#line 1226 "c-exp.y"
+                {
+		  cpstate->type_stack.insert (pstate,
+					      copy_name ((yyvsp[0].ssym).stoken).c_str ());
+		}
+#line 3289 "c-exp.c.tmp"
     break;
 
   case 137:
-
-/* Line 1455 of yacc.c  */
-#line 1205 "c-exp.y"
-    { cpstate->type_stack.insert (tp_reference); }
+#line 1244 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_pointer); }
+#line 3295 "c-exp.c.tmp"
     break;
 
-  case 138:
+  case 139:
+#line 1247 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_pointer); }
+#line 3301 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1207 "c-exp.y"
-    { cpstate->type_stack.insert (tp_rvalue_reference); }
+  case 141:
+#line 1250 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_reference); }
+#line 3307 "c-exp.c.tmp"
     break;
 
-  case 139:
+  case 142:
+#line 1252 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_reference); }
+#line 3313 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1209 "c-exp.y"
-    { cpstate->type_stack.insert (tp_rvalue_reference); }
+  case 143:
+#line 1254 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_rvalue_reference); }
+#line 3319 "c-exp.c.tmp"
     break;
 
-  case 140:
+  case 144:
+#line 1256 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_rvalue_reference); }
+#line 3325 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1213 "c-exp.y"
-    {
+  case 145:
+#line 1260 "c-exp.y"
+                        {
 			  (yyval.type_stack) = cpstate->type_stack.create ();
 			  cpstate->type_stacks.emplace_back ((yyval.type_stack));
 			}
+#line 3334 "c-exp.c.tmp"
     break;
 
-  case 141:
-
-/* Line 1455 of yacc.c  */
-#line 1220 "c-exp.y"
-    { (yyval.type_stack) = (yyvsp[(2) - (2)].type_stack)->append ((yyvsp[(1) - (2)].type_stack)); }
+  case 146:
+#line 1267 "c-exp.y"
+                        { (yyval.type_stack) = (yyvsp[0].type_stack)->append ((yyvsp[-1].type_stack)); }
+#line 3340 "c-exp.c.tmp"
     break;
 
-  case 144:
-
-/* Line 1455 of yacc.c  */
-#line 1226 "c-exp.y"
-    { (yyval.type_stack) = (yyvsp[(2) - (3)].type_stack); }
+  case 149:
+#line 1273 "c-exp.y"
+                        { (yyval.type_stack) = (yyvsp[-1].type_stack); }
+#line 3346 "c-exp.c.tmp"
     break;
 
-  case 145:
-
-/* Line 1455 of yacc.c  */
-#line 1228 "c-exp.y"
-    {
-			  cpstate->type_stack.push ((yyvsp[(1) - (2)].type_stack));
-			  cpstate->type_stack.push ((yyvsp[(2) - (2)].lval));
+  case 150:
+#line 1275 "c-exp.y"
+                        {
+			  cpstate->type_stack.push ((yyvsp[-1].type_stack));
+			  cpstate->type_stack.push ((yyvsp[0].lval));
 			  cpstate->type_stack.push (tp_array);
 			  (yyval.type_stack) = cpstate->type_stack.create ();
 			  cpstate->type_stacks.emplace_back ((yyval.type_stack));
 			}
+#line 3358 "c-exp.c.tmp"
     break;
 
-  case 146:
-
-/* Line 1455 of yacc.c  */
-#line 1236 "c-exp.y"
-    {
-			  cpstate->type_stack.push ((yyvsp[(1) - (1)].lval));
+  case 151:
+#line 1283 "c-exp.y"
+                        {
+			  cpstate->type_stack.push ((yyvsp[0].lval));
 			  cpstate->type_stack.push (tp_array);
 			  (yyval.type_stack) = cpstate->type_stack.create ();
 			  cpstate->type_stacks.emplace_back ((yyval.type_stack));
 			}
+#line 3369 "c-exp.c.tmp"
     break;
 
-  case 147:
-
-/* Line 1455 of yacc.c  */
-#line 1244 "c-exp.y"
-    {
-			  cpstate->type_stack.push ((yyvsp[(1) - (2)].type_stack));
-			  cpstate->type_stack.push ((yyvsp[(2) - (2)].tvec));
+  case 152:
+#line 1291 "c-exp.y"
+                        {
+			  cpstate->type_stack.push ((yyvsp[-1].type_stack));
+			  cpstate->type_stack.push ((yyvsp[0].tvec));
 			  (yyval.type_stack) = cpstate->type_stack.create ();
 			  cpstate->type_stacks.emplace_back ((yyval.type_stack));
 			}
+#line 3380 "c-exp.c.tmp"
     break;
 
-  case 148:
-
-/* Line 1455 of yacc.c  */
-#line 1251 "c-exp.y"
-    {
-			  cpstate->type_stack.push ((yyvsp[(1) - (1)].tvec));
+  case 153:
+#line 1298 "c-exp.y"
+                        {
+			  cpstate->type_stack.push ((yyvsp[0].tvec));
 			  (yyval.type_stack) = cpstate->type_stack.create ();
 			  cpstate->type_stacks.emplace_back ((yyval.type_stack));
 			}
+#line 3390 "c-exp.c.tmp"
     break;
 
-  case 149:
-
-/* Line 1455 of yacc.c  */
-#line 1259 "c-exp.y"
-    { (yyval.lval) = -1; }
+  case 154:
+#line 1306 "c-exp.y"
+                        { (yyval.lval) = -1; }
+#line 3396 "c-exp.c.tmp"
     break;
 
-  case 150:
-
-/* Line 1455 of yacc.c  */
-#line 1261 "c-exp.y"
-    { (yyval.lval) = -1; }
+  case 155:
+#line 1308 "c-exp.y"
+                        { (yyval.lval) = -1; }
+#line 3402 "c-exp.c.tmp"
     break;
 
-  case 151:
-
-/* Line 1455 of yacc.c  */
-#line 1263 "c-exp.y"
-    { (yyval.lval) = (yyvsp[(2) - (3)].typed_val_int).val; }
+  case 156:
+#line 1310 "c-exp.y"
+                        { (yyval.lval) = (yyvsp[-1].typed_val_int).val; }
+#line 3408 "c-exp.c.tmp"
     break;
 
-  case 152:
-
-/* Line 1455 of yacc.c  */
-#line 1265 "c-exp.y"
-    { (yyval.lval) = (yyvsp[(2) - (3)].typed_val_int).val; }
+  case 157:
+#line 1312 "c-exp.y"
+                        { (yyval.lval) = (yyvsp[-1].typed_val_int).val; }
+#line 3414 "c-exp.c.tmp"
     break;
 
-  case 153:
-
-/* Line 1455 of yacc.c  */
-#line 1269 "c-exp.y"
-    {
+  case 158:
+#line 1316 "c-exp.y"
+                        {
 			  (yyval.tvec) = new std::vector<struct type *>;
 			  cpstate->type_lists.emplace_back ((yyval.tvec));
 			}
+#line 3423 "c-exp.c.tmp"
     break;
 
-  case 154:
-
-/* Line 1455 of yacc.c  */
-#line 1274 "c-exp.y"
-    { (yyval.tvec) = (yyvsp[(2) - (3)].tvec); }
-    break;
-
-  case 156:
-
-/* Line 1455 of yacc.c  */
-#line 1300 "c-exp.y"
-    { (yyval.tval) = (yyvsp[(1) - (1)].tsym).type; }
+  case 159:
+#line 1321 "c-exp.y"
+                        { (yyval.tvec) = (yyvsp[-1].tvec); }
+#line 3429 "c-exp.c.tmp"
     break;
 
-  case 157:
-
-/* Line 1455 of yacc.c  */
-#line 1302 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 161:
+#line 1340 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "int"); }
+#line 3436 "c-exp.c.tmp"
     break;
 
-  case 158:
-
-/* Line 1455 of yacc.c  */
-#line 1305 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 162:
+#line 1343 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long"); }
+#line 3443 "c-exp.c.tmp"
     break;
 
-  case 159:
-
-/* Line 1455 of yacc.c  */
-#line 1308 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 163:
+#line 1346 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "short"); }
+#line 3450 "c-exp.c.tmp"
     break;
 
-  case 160:
-
-/* Line 1455 of yacc.c  */
-#line 1311 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 164:
+#line 1349 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long"); }
+#line 3457 "c-exp.c.tmp"
     break;
 
-  case 161:
-
-/* Line 1455 of yacc.c  */
-#line 1314 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 165:
+#line 1352 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long"); }
+#line 3464 "c-exp.c.tmp"
     break;
 
-  case 162:
-
-/* Line 1455 of yacc.c  */
-#line 1317 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 166:
+#line 1355 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long"); }
+#line 3471 "c-exp.c.tmp"
     break;
 
-  case 163:
-
-/* Line 1455 of yacc.c  */
-#line 1320 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 167:
+#line 1358 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long"); }
+#line 3478 "c-exp.c.tmp"
     break;
 
-  case 164:
-
-/* Line 1455 of yacc.c  */
-#line 1323 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+  case 168:
+#line 1361 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long"); }
+#line 3485 "c-exp.c.tmp"
     break;
 
-  case 165:
-
-/* Line 1455 of yacc.c  */
-#line 1326 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+  case 169:
+#line 1364 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long"); }
+#line 3492 "c-exp.c.tmp"
     break;
 
-  case 166:
-
-/* Line 1455 of yacc.c  */
-#line 1329 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+  case 170:
+#line 1367 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long"); }
+#line 3499 "c-exp.c.tmp"
     break;
 
-  case 167:
-
-/* Line 1455 of yacc.c  */
-#line 1332 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 171:
+#line 1370 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3506 "c-exp.c.tmp"
     break;
 
-  case 168:
-
-/* Line 1455 of yacc.c  */
-#line 1335 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 172:
+#line 1373 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3513 "c-exp.c.tmp"
     break;
 
-  case 169:
-
-/* Line 1455 of yacc.c  */
-#line 1338 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 173:
+#line 1376 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3520 "c-exp.c.tmp"
     break;
 
-  case 170:
-
-/* Line 1455 of yacc.c  */
-#line 1341 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 174:
+#line 1379 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3527 "c-exp.c.tmp"
     break;
 
-  case 171:
-
-/* Line 1455 of yacc.c  */
-#line 1344 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 175:
+#line 1382 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3534 "c-exp.c.tmp"
     break;
 
-  case 172:
-
-/* Line 1455 of yacc.c  */
-#line 1347 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 176:
+#line 1385 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3541 "c-exp.c.tmp"
     break;
 
-  case 173:
-
-/* Line 1455 of yacc.c  */
-#line 1350 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+  case 177:
+#line 1388 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long long"); }
+#line 3548 "c-exp.c.tmp"
     break;
 
-  case 174:
-
-/* Line 1455 of yacc.c  */
-#line 1353 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+  case 178:
+#line 1391 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long long"); }
+#line 3555 "c-exp.c.tmp"
     break;
 
-  case 175:
-
-/* Line 1455 of yacc.c  */
-#line 1356 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+  case 179:
+#line 1394 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long long"); }
+#line 3562 "c-exp.c.tmp"
     break;
 
-  case 176:
-
-/* Line 1455 of yacc.c  */
-#line 1359 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+  case 180:
+#line 1397 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long long"); }
+#line 3569 "c-exp.c.tmp"
     break;
 
-  case 177:
-
-/* Line 1455 of yacc.c  */
-#line 1362 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 181:
+#line 1400 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "short"); }
+#line 3576 "c-exp.c.tmp"
     break;
 
-  case 178:
-
-/* Line 1455 of yacc.c  */
-#line 1365 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 182:
+#line 1403 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "short"); }
+#line 3583 "c-exp.c.tmp"
     break;
 
-  case 179:
-
-/* Line 1455 of yacc.c  */
-#line 1368 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+  case 183:
+#line 1406 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "short"); }
+#line 3590 "c-exp.c.tmp"
     break;
 
-  case 180:
-
-/* Line 1455 of yacc.c  */
-#line 1371 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+  case 184:
+#line 1409 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "short"); }
+#line 3597 "c-exp.c.tmp"
     break;
 
-  case 181:
-
-/* Line 1455 of yacc.c  */
-#line 1374 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+  case 185:
+#line 1412 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "short"); }
+#line 3604 "c-exp.c.tmp"
     break;
 
-  case 182:
-
-/* Line 1455 of yacc.c  */
-#line 1377 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+  case 186:
+#line 1415 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "short"); }
+#line 3611 "c-exp.c.tmp"
     break;
 
-  case 183:
-
-/* Line 1455 of yacc.c  */
-#line 1380 "c-exp.y"
-    { (yyval.tval) = lookup_typename (pstate->language (),
+  case 187:
+#line 1418 "c-exp.y"
+                        { (yyval.tval) = lookup_typename (pstate->language (),
 						"double",
 						NULL,
 						0); }
+#line 3620 "c-exp.c.tmp"
     break;
 
-  case 184:
+  case 188:
+#line 1423 "c-exp.y"
+                        { (yyval.tval) = lookup_typename (pstate->language (),
+						"float",
+						NULL,
+						0); }
+#line 3629 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1385 "c-exp.y"
-    { (yyval.tval) = lookup_typename (pstate->language (),
+  case 189:
+#line 1428 "c-exp.y"
+                        { (yyval.tval) = lookup_typename (pstate->language (),
 						"long double",
 						NULL,
 						0); }
+#line 3638 "c-exp.c.tmp"
     break;
 
-  case 185:
+  case 190:
+#line 1433 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+							 (yyvsp[0].tsym).type->name ()); }
+#line 3645 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1390 "c-exp.y"
-    { (yyval.tval)
-			    = lookup_struct (copy_name ((yyvsp[(2) - (2)].sval)).c_str (),
-					     pstate->expression_context_block);
+  case 191:
+#line 1436 "c-exp.y"
+                        { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+							 "int"); }
+#line 3652 "c-exp.c.tmp"
+    break;
+
+  case 192:
+#line 1439 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
+						       (yyvsp[0].tsym).type->name ()); }
+#line 3659 "c-exp.c.tmp"
+    break;
+
+  case 193:
+#line 1442 "c-exp.y"
+                        { (yyval.tval) = lookup_signed_typename (pstate->language (),
+						       "int"); }
+#line 3666 "c-exp.c.tmp"
+    break;
+
+  case 194:
+#line 1458 "c-exp.y"
+                        { (yyval.tval) = (yyvsp[0].tsym).type; }
+#line 3672 "c-exp.c.tmp"
+    break;
+
+  case 195:
+#line 1460 "c-exp.y"
+                        { (yyval.tval) = (yyvsp[0].tval); }
+#line 3678 "c-exp.c.tmp"
+    break;
+
+  case 196:
+#line 1462 "c-exp.y"
+                        {
+			  (yyval.tval) = init_complex_type (nullptr, (yyvsp[0].tval));
 			}
+#line 3686 "c-exp.c.tmp"
     break;
 
-  case 186:
+  case 197:
+#line 1466 "c-exp.y"
+                        { (yyval.tval)
+			    = lookup_struct (copy_name ((yyvsp[0].sval)).c_str (),
+					     pstate->expression_context_block);
+			}
+#line 3695 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1395 "c-exp.y"
-    {
+  case 198:
+#line 1471 "c-exp.y"
+                        {
 			  pstate->mark_completion_tag (TYPE_CODE_STRUCT,
 						       "", 0);
 			  (yyval.tval) = NULL;
 			}
+#line 3705 "c-exp.c.tmp"
     break;
 
-  case 187:
-
-/* Line 1455 of yacc.c  */
-#line 1401 "c-exp.y"
-    {
+  case 199:
+#line 1477 "c-exp.y"
+                        {
 			  pstate->mark_completion_tag (TYPE_CODE_STRUCT,
-						       (yyvsp[(2) - (3)].sval).ptr, (yyvsp[(2) - (3)].sval).length);
+						       (yyvsp[-1].sval).ptr, (yyvsp[-1].sval).length);
 			  (yyval.tval) = NULL;
 			}
+#line 3715 "c-exp.c.tmp"
     break;
 
-  case 188:
-
-/* Line 1455 of yacc.c  */
-#line 1407 "c-exp.y"
-    { (yyval.tval) = lookup_struct
-			    (copy_name ((yyvsp[(2) - (2)].sval)).c_str (),
+  case 200:
+#line 1483 "c-exp.y"
+                        { (yyval.tval) = lookup_struct
+			    (copy_name ((yyvsp[0].sval)).c_str (),
 			     pstate->expression_context_block);
 			}
+#line 3724 "c-exp.c.tmp"
     break;
 
-  case 189:
-
-/* Line 1455 of yacc.c  */
-#line 1412 "c-exp.y"
-    {
+  case 201:
+#line 1488 "c-exp.y"
+                        {
 			  pstate->mark_completion_tag (TYPE_CODE_STRUCT,
 						       "", 0);
 			  (yyval.tval) = NULL;
 			}
+#line 3734 "c-exp.c.tmp"
     break;
 
-  case 190:
-
-/* Line 1455 of yacc.c  */
-#line 1418 "c-exp.y"
-    {
+  case 202:
+#line 1494 "c-exp.y"
+                        {
 			  pstate->mark_completion_tag (TYPE_CODE_STRUCT,
-						       (yyvsp[(2) - (3)].sval).ptr, (yyvsp[(2) - (3)].sval).length);
+						       (yyvsp[-1].sval).ptr, (yyvsp[-1].sval).length);
 			  (yyval.tval) = NULL;
 			}
+#line 3744 "c-exp.c.tmp"
     break;
 
-  case 191:
-
-/* Line 1455 of yacc.c  */
-#line 1424 "c-exp.y"
-    { (yyval.tval)
-			    = lookup_union (copy_name ((yyvsp[(2) - (2)].sval)).c_str (),
+  case 203:
+#line 1500 "c-exp.y"
+                        { (yyval.tval)
+			    = lookup_union (copy_name ((yyvsp[0].sval)).c_str (),
 					    pstate->expression_context_block);
 			}
+#line 3753 "c-exp.c.tmp"
     break;
 
-  case 192:
-
-/* Line 1455 of yacc.c  */
-#line 1429 "c-exp.y"
-    {
+  case 204:
+#line 1505 "c-exp.y"
+                        {
 			  pstate->mark_completion_tag (TYPE_CODE_UNION,
 						       "", 0);
 			  (yyval.tval) = NULL;
 			}
+#line 3763 "c-exp.c.tmp"
     break;
 
-  case 193:
-
-/* Line 1455 of yacc.c  */
-#line 1435 "c-exp.y"
-    {
+  case 205:
+#line 1511 "c-exp.y"
+                        {
 			  pstate->mark_completion_tag (TYPE_CODE_UNION,
-						       (yyvsp[(2) - (3)].sval).ptr, (yyvsp[(2) - (3)].sval).length);
+						       (yyvsp[-1].sval).ptr, (yyvsp[-1].sval).length);
 			  (yyval.tval) = NULL;
 			}
+#line 3773 "c-exp.c.tmp"
     break;
 
-  case 194:
-
-/* Line 1455 of yacc.c  */
-#line 1441 "c-exp.y"
-    { (yyval.tval) = lookup_enum (copy_name ((yyvsp[(2) - (2)].sval)).c_str (),
+  case 206:
+#line 1517 "c-exp.y"
+                        { (yyval.tval) = lookup_enum (copy_name ((yyvsp[0].sval)).c_str (),
 					    pstate->expression_context_block);
 			}
+#line 3781 "c-exp.c.tmp"
     break;
 
-  case 195:
-
-/* Line 1455 of yacc.c  */
-#line 1445 "c-exp.y"
-    {
+  case 207:
+#line 1521 "c-exp.y"
+                        {
 			  pstate->mark_completion_tag (TYPE_CODE_ENUM, "", 0);
 			  (yyval.tval) = NULL;
 			}
+#line 3790 "c-exp.c.tmp"
     break;
 
-  case 196:
-
-/* Line 1455 of yacc.c  */
-#line 1450 "c-exp.y"
-    {
-			  pstate->mark_completion_tag (TYPE_CODE_ENUM, (yyvsp[(2) - (3)].sval).ptr,
-						       (yyvsp[(2) - (3)].sval).length);
+  case 208:
+#line 1526 "c-exp.y"
+                        {
+			  pstate->mark_completion_tag (TYPE_CODE_ENUM, (yyvsp[-1].sval).ptr,
+						       (yyvsp[-1].sval).length);
 			  (yyval.tval) = NULL;
 			}
+#line 3800 "c-exp.c.tmp"
     break;
 
-  case 197:
-
-/* Line 1455 of yacc.c  */
-#line 1456 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
-							 TYPE_NAME((yyvsp[(2) - (2)].tsym).type)); }
-    break;
-
-  case 198:
-
-/* Line 1455 of yacc.c  */
-#line 1459 "c-exp.y"
-    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
-							 "int"); }
-    break;
-
-  case 199:
-
-/* Line 1455 of yacc.c  */
-#line 1462 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
-						       TYPE_NAME((yyvsp[(2) - (2)].tsym).type)); }
-    break;
-
-  case 200:
-
-/* Line 1455 of yacc.c  */
-#line 1465 "c-exp.y"
-    { (yyval.tval) = lookup_signed_typename (pstate->language (),
-						       "int"); }
-    break;
-
-  case 201:
-
-/* Line 1455 of yacc.c  */
-#line 1471 "c-exp.y"
-    { (yyval.tval) = lookup_template_type
-			    (copy_name((yyvsp[(2) - (5)].sval)).c_str (), (yyvsp[(4) - (5)].tval),
+  case 209:
+#line 1535 "c-exp.y"
+                        { (yyval.tval) = lookup_template_type
+			    (copy_name((yyvsp[-3].sval)).c_str (), (yyvsp[-1].tval),
 			     pstate->expression_context_block);
 			}
+#line 3809 "c-exp.c.tmp"
     break;
 
-  case 202:
-
-/* Line 1455 of yacc.c  */
-#line 1476 "c-exp.y"
-    { (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[(2) - (2)].tval)); }
+  case 210:
+#line 1540 "c-exp.y"
+                        { (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[0].tval)); }
+#line 3815 "c-exp.c.tmp"
     break;
 
-  case 203:
-
-/* Line 1455 of yacc.c  */
-#line 1478 "c-exp.y"
-    { (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[(1) - (2)].tval)); }
+  case 211:
+#line 1542 "c-exp.y"
+                        { (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[-1].tval)); }
+#line 3821 "c-exp.c.tmp"
     break;
 
-  case 205:
-
-/* Line 1455 of yacc.c  */
-#line 1483 "c-exp.y"
-    {
+  case 213:
+#line 1547 "c-exp.y"
+                {
 		  (yyval.tsym).stoken.ptr = "int";
 		  (yyval.tsym).stoken.length = 3;
 		  (yyval.tsym).type = lookup_signed_typename (pstate->language (),
 						    "int");
 		}
+#line 3832 "c-exp.c.tmp"
     break;
 
-  case 206:
-
-/* Line 1455 of yacc.c  */
-#line 1490 "c-exp.y"
-    {
+  case 214:
+#line 1554 "c-exp.y"
+                {
 		  (yyval.tsym).stoken.ptr = "long";
 		  (yyval.tsym).stoken.length = 4;
 		  (yyval.tsym).type = lookup_signed_typename (pstate->language (),
 						    "long");
 		}
+#line 3843 "c-exp.c.tmp"
     break;
 
-  case 207:
-
-/* Line 1455 of yacc.c  */
-#line 1497 "c-exp.y"
-    {
+  case 215:
+#line 1561 "c-exp.y"
+                {
 		  (yyval.tsym).stoken.ptr = "short";
 		  (yyval.tsym).stoken.length = 5;
 		  (yyval.tsym).type = lookup_signed_typename (pstate->language (),
 						    "short");
 		}
+#line 3854 "c-exp.c.tmp"
     break;
 
-  case 208:
-
-/* Line 1455 of yacc.c  */
-#line 1507 "c-exp.y"
-    { check_parameter_typelist ((yyvsp[(1) - (1)].tvec)); }
+  case 216:
+#line 1571 "c-exp.y"
+                        { check_parameter_typelist ((yyvsp[0].tvec)); }
+#line 3860 "c-exp.c.tmp"
     break;
 
-  case 209:
-
-/* Line 1455 of yacc.c  */
-#line 1509 "c-exp.y"
-    {
-			  (yyvsp[(1) - (3)].tvec)->push_back (NULL);
-			  check_parameter_typelist ((yyvsp[(1) - (3)].tvec));
-			  (yyval.tvec) = (yyvsp[(1) - (3)].tvec);
+  case 217:
+#line 1573 "c-exp.y"
+                        {
+			  (yyvsp[-2].tvec)->push_back (NULL);
+			  check_parameter_typelist ((yyvsp[-2].tvec));
+			  (yyval.tvec) = (yyvsp[-2].tvec);
 			}
+#line 3870 "c-exp.c.tmp"
     break;
 
-  case 210:
-
-/* Line 1455 of yacc.c  */
-#line 1518 "c-exp.y"
-    {
+  case 218:
+#line 1582 "c-exp.y"
+                {
 		  std::vector<struct type *> *typelist
 		    = new std::vector<struct type *>;
 		  cpstate->type_lists.emplace_back (typelist);
 
-		  typelist->push_back ((yyvsp[(1) - (1)].tval));
+		  typelist->push_back ((yyvsp[0].tval));
 		  (yyval.tvec) = typelist;
 		}
+#line 3883 "c-exp.c.tmp"
     break;
 
-  case 211:
-
-/* Line 1455 of yacc.c  */
-#line 1527 "c-exp.y"
-    {
-		  (yyvsp[(1) - (3)].tvec)->push_back ((yyvsp[(3) - (3)].tval));
-		  (yyval.tvec) = (yyvsp[(1) - (3)].tvec);
+  case 219:
+#line 1591 "c-exp.y"
+                {
+		  (yyvsp[-2].tvec)->push_back ((yyvsp[0].tval));
+		  (yyval.tvec) = (yyvsp[-2].tvec);
 		}
+#line 3892 "c-exp.c.tmp"
     break;
 
-  case 213:
-
-/* Line 1455 of yacc.c  */
-#line 1535 "c-exp.y"
-    {
-		  cpstate->type_stack.push ((yyvsp[(2) - (2)].type_stack));
-		  (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[(1) - (2)].tval));
+  case 221:
+#line 1599 "c-exp.y"
+                {
+		  cpstate->type_stack.push ((yyvsp[0].type_stack));
+		  (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[-1].tval));
 		}
+#line 3901 "c-exp.c.tmp"
     break;
 
-  case 214:
-
-/* Line 1455 of yacc.c  */
-#line 1542 "c-exp.y"
-    { (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[(1) - (2)].tval)); }
+  case 222:
+#line 1606 "c-exp.y"
+                { (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[-1].tval)); }
+#line 3907 "c-exp.c.tmp"
     break;
 
-  case 219:
-
-/* Line 1455 of yacc.c  */
-#line 1554 "c-exp.y"
-    { cpstate->type_stack.insert (tp_const);
+  case 227:
+#line 1618 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_const);
 			  cpstate->type_stack.insert (tp_volatile);
 			}
+#line 3915 "c-exp.c.tmp"
     break;
 
-  case 220:
-
-/* Line 1455 of yacc.c  */
-#line 1558 "c-exp.y"
-    { cpstate->type_stack.insert (tp_const); }
+  case 228:
+#line 1622 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_const); }
+#line 3921 "c-exp.c.tmp"
     break;
 
-  case 221:
-
-/* Line 1455 of yacc.c  */
-#line 1560 "c-exp.y"
-    { cpstate->type_stack.insert (tp_volatile); }
+  case 229:
+#line 1624 "c-exp.y"
+                        { cpstate->type_stack.insert (tp_volatile); }
+#line 3927 "c-exp.c.tmp"
     break;
 
-  case 222:
-
-/* Line 1455 of yacc.c  */
-#line 1564 "c-exp.y"
-    { (yyval.sval) = operator_stoken (" new"); }
+  case 230:
+#line 1628 "c-exp.y"
+                        { (yyval.sval) = operator_stoken (" new"); }
+#line 3933 "c-exp.c.tmp"
     break;
 
-  case 223:
-
-/* Line 1455 of yacc.c  */
-#line 1566 "c-exp.y"
-    { (yyval.sval) = operator_stoken (" delete"); }
+  case 231:
+#line 1630 "c-exp.y"
+                        { (yyval.sval) = operator_stoken (" delete"); }
+#line 3939 "c-exp.c.tmp"
     break;
 
-  case 224:
-
-/* Line 1455 of yacc.c  */
-#line 1568 "c-exp.y"
-    { (yyval.sval) = operator_stoken (" new[]"); }
+  case 232:
+#line 1632 "c-exp.y"
+                        { (yyval.sval) = operator_stoken (" new[]"); }
+#line 3945 "c-exp.c.tmp"
     break;
 
-  case 225:
-
-/* Line 1455 of yacc.c  */
-#line 1570 "c-exp.y"
-    { (yyval.sval) = operator_stoken (" delete[]"); }
+  case 233:
+#line 1634 "c-exp.y"
+                        { (yyval.sval) = operator_stoken (" delete[]"); }
+#line 3951 "c-exp.c.tmp"
     break;
 
-  case 226:
-
-/* Line 1455 of yacc.c  */
-#line 1572 "c-exp.y"
-    { (yyval.sval) = operator_stoken (" new[]"); }
+  case 234:
+#line 1636 "c-exp.y"
+                        { (yyval.sval) = operator_stoken (" new[]"); }
+#line 3957 "c-exp.c.tmp"
     break;
 
-  case 227:
-
-/* Line 1455 of yacc.c  */
-#line 1574 "c-exp.y"
-    { (yyval.sval) = operator_stoken (" delete[]"); }
+  case 235:
+#line 1638 "c-exp.y"
+                        { (yyval.sval) = operator_stoken (" delete[]"); }
+#line 3963 "c-exp.c.tmp"
     break;
 
-  case 228:
-
-/* Line 1455 of yacc.c  */
-#line 1576 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("+"); }
+  case 236:
+#line 1640 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("+"); }
+#line 3969 "c-exp.c.tmp"
     break;
 
-  case 229:
-
-/* Line 1455 of yacc.c  */
-#line 1578 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("-"); }
+  case 237:
+#line 1642 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("-"); }
+#line 3975 "c-exp.c.tmp"
     break;
 
-  case 230:
-
-/* Line 1455 of yacc.c  */
-#line 1580 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("*"); }
+  case 238:
+#line 1644 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("*"); }
+#line 3981 "c-exp.c.tmp"
     break;
 
-  case 231:
-
-/* Line 1455 of yacc.c  */
-#line 1582 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("/"); }
+  case 239:
+#line 1646 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("/"); }
+#line 3987 "c-exp.c.tmp"
     break;
 
-  case 232:
-
-/* Line 1455 of yacc.c  */
-#line 1584 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("%"); }
+  case 240:
+#line 1648 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("%"); }
+#line 3993 "c-exp.c.tmp"
     break;
 
-  case 233:
-
-/* Line 1455 of yacc.c  */
-#line 1586 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("^"); }
+  case 241:
+#line 1650 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("^"); }
+#line 3999 "c-exp.c.tmp"
     break;
 
-  case 234:
-
-/* Line 1455 of yacc.c  */
-#line 1588 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("&"); }
+  case 242:
+#line 1652 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("&"); }
+#line 4005 "c-exp.c.tmp"
     break;
 
-  case 235:
-
-/* Line 1455 of yacc.c  */
-#line 1590 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("|"); }
+  case 243:
+#line 1654 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("|"); }
+#line 4011 "c-exp.c.tmp"
     break;
 
-  case 236:
-
-/* Line 1455 of yacc.c  */
-#line 1592 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("~"); }
+  case 244:
+#line 1656 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("~"); }
+#line 4017 "c-exp.c.tmp"
     break;
 
-  case 237:
-
-/* Line 1455 of yacc.c  */
-#line 1594 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("!"); }
+  case 245:
+#line 1658 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("!"); }
+#line 4023 "c-exp.c.tmp"
     break;
 
-  case 238:
-
-/* Line 1455 of yacc.c  */
-#line 1596 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("="); }
+  case 246:
+#line 1660 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("="); }
+#line 4029 "c-exp.c.tmp"
     break;
 
-  case 239:
-
-/* Line 1455 of yacc.c  */
-#line 1598 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("<"); }
+  case 247:
+#line 1662 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("<"); }
+#line 4035 "c-exp.c.tmp"
     break;
 
-  case 240:
-
-/* Line 1455 of yacc.c  */
-#line 1600 "c-exp.y"
-    { (yyval.sval) = operator_stoken (">"); }
+  case 248:
+#line 1664 "c-exp.y"
+                        { (yyval.sval) = operator_stoken (">"); }
+#line 4041 "c-exp.c.tmp"
     break;
 
-  case 241:
-
-/* Line 1455 of yacc.c  */
-#line 1602 "c-exp.y"
-    { const char *op = " unknown";
-			  switch ((yyvsp[(2) - (2)].opcode))
+  case 249:
+#line 1666 "c-exp.y"
+                        { const char *op = " unknown";
+			  switch ((yyvsp[0].opcode))
 			    {
 			    case BINOP_RSH:
 			      op = ">>=";
@@ -4357,333 +4080,286 @@ yyreduce:
 
 			  (yyval.sval) = operator_stoken (op);
 			}
-    break;
-
-  case 242:
-
-/* Line 1455 of yacc.c  */
-#line 1642 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("<<"); }
-    break;
-
-  case 243:
-
-/* Line 1455 of yacc.c  */
-#line 1644 "c-exp.y"
-    { (yyval.sval) = operator_stoken (">>"); }
-    break;
-
-  case 244:
-
-/* Line 1455 of yacc.c  */
-#line 1646 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("=="); }
-    break;
-
-  case 245:
-
-/* Line 1455 of yacc.c  */
-#line 1648 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("!="); }
-    break;
-
-  case 246:
-
-/* Line 1455 of yacc.c  */
-#line 1650 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("<="); }
-    break;
-
-  case 247:
-
-/* Line 1455 of yacc.c  */
-#line 1652 "c-exp.y"
-    { (yyval.sval) = operator_stoken (">="); }
-    break;
-
-  case 248:
-
-/* Line 1455 of yacc.c  */
-#line 1654 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("&&"); }
-    break;
-
-  case 249:
-
-/* Line 1455 of yacc.c  */
-#line 1656 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("||"); }
+#line 4085 "c-exp.c.tmp"
     break;
 
   case 250:
-
-/* Line 1455 of yacc.c  */
-#line 1658 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("++"); }
+#line 1706 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("<<"); }
+#line 4091 "c-exp.c.tmp"
     break;
 
   case 251:
-
-/* Line 1455 of yacc.c  */
-#line 1660 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("--"); }
+#line 1708 "c-exp.y"
+                        { (yyval.sval) = operator_stoken (">>"); }
+#line 4097 "c-exp.c.tmp"
     break;
 
   case 252:
-
-/* Line 1455 of yacc.c  */
-#line 1662 "c-exp.y"
-    { (yyval.sval) = operator_stoken (","); }
+#line 1710 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("=="); }
+#line 4103 "c-exp.c.tmp"
     break;
 
   case 253:
-
-/* Line 1455 of yacc.c  */
-#line 1664 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("->*"); }
+#line 1712 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("!="); }
+#line 4109 "c-exp.c.tmp"
     break;
 
   case 254:
-
-/* Line 1455 of yacc.c  */
-#line 1666 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("->"); }
+#line 1714 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("<="); }
+#line 4115 "c-exp.c.tmp"
     break;
 
   case 255:
-
-/* Line 1455 of yacc.c  */
-#line 1668 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("()"); }
+#line 1716 "c-exp.y"
+                        { (yyval.sval) = operator_stoken (">="); }
+#line 4121 "c-exp.c.tmp"
     break;
 
   case 256:
-
-/* Line 1455 of yacc.c  */
-#line 1670 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("[]"); }
+#line 1718 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("&&"); }
+#line 4127 "c-exp.c.tmp"
     break;
 
   case 257:
-
-/* Line 1455 of yacc.c  */
-#line 1672 "c-exp.y"
-    { (yyval.sval) = operator_stoken ("[]"); }
+#line 1720 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("||"); }
+#line 4133 "c-exp.c.tmp"
     break;
 
   case 258:
+#line 1722 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("++"); }
+#line 4139 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1674 "c-exp.y"
-    { string_file buf;
-
-			  c_print_type ((yyvsp[(2) - (2)].tval), NULL, &buf, -1, 0,
-					&type_print_raw_options);
-
-			  /* This also needs canonicalization.  */
-			  std::string canon
-			    = cp_canonicalize_string (buf.c_str ());
-			  if (canon.empty ())
-			    canon = std::move (buf.string ());
-			  (yyval.sval) = operator_stoken ((" " + canon).c_str ());
-			}
+  case 259:
+#line 1724 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("--"); }
+#line 4145 "c-exp.c.tmp"
     break;
 
   case 260:
-
-/* Line 1455 of yacc.c  */
-#line 1697 "c-exp.y"
-    { (yyval.sval) = typename_stoken ("double"); }
+#line 1726 "c-exp.y"
+                        { (yyval.sval) = operator_stoken (","); }
+#line 4151 "c-exp.c.tmp"
     break;
 
   case 261:
-
-/* Line 1455 of yacc.c  */
-#line 1698 "c-exp.y"
-    { (yyval.sval) = typename_stoken ("int"); }
+#line 1728 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("->*"); }
+#line 4157 "c-exp.c.tmp"
     break;
 
   case 262:
-
-/* Line 1455 of yacc.c  */
-#line 1699 "c-exp.y"
-    { (yyval.sval) = typename_stoken ("long"); }
+#line 1730 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("->"); }
+#line 4163 "c-exp.c.tmp"
     break;
 
   case 263:
-
-/* Line 1455 of yacc.c  */
-#line 1700 "c-exp.y"
-    { (yyval.sval) = typename_stoken ("short"); }
+#line 1732 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("()"); }
+#line 4169 "c-exp.c.tmp"
     break;
 
   case 264:
-
-/* Line 1455 of yacc.c  */
-#line 1701 "c-exp.y"
-    { (yyval.sval) = typename_stoken ("signed"); }
+#line 1734 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("[]"); }
+#line 4175 "c-exp.c.tmp"
     break;
 
   case 265:
-
-/* Line 1455 of yacc.c  */
-#line 1702 "c-exp.y"
-    { (yyval.sval) = typename_stoken ("unsigned"); }
+#line 1736 "c-exp.y"
+                        { (yyval.sval) = operator_stoken ("[]"); }
+#line 4181 "c-exp.c.tmp"
     break;
 
   case 266:
+#line 1738 "c-exp.y"
+                        { string_file buf;
 
-/* Line 1455 of yacc.c  */
-#line 1705 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
-    break;
-
-  case 267:
+			  c_print_type ((yyvsp[0].tval), NULL, &buf, -1, 0,
+					&type_print_raw_options);
+			  std::string name = std::move (buf.string ());
 
-/* Line 1455 of yacc.c  */
-#line 1706 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+			  /* This also needs canonicalization.  */
+			  gdb::unique_xmalloc_ptr<char> canon
+			    = cp_canonicalize_string (name.c_str ());
+			  if (canon != nullptr)
+			    name = canon.get ();
+			  (yyval.sval) = operator_stoken ((" " + name).c_str ());
+			}
+#line 4199 "c-exp.c.tmp"
     break;
 
   case 268:
-
-/* Line 1455 of yacc.c  */
-#line 1707 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].tsym).stoken; }
+#line 1760 "c-exp.y"
+                               { (yyval.sval) = typename_stoken ("double"); }
+#line 4205 "c-exp.c.tmp"
     break;
 
   case 269:
-
-/* Line 1455 of yacc.c  */
-#line 1708 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+#line 1761 "c-exp.y"
+                              { (yyval.sval) = typename_stoken ("float"); }
+#line 4211 "c-exp.c.tmp"
     break;
 
   case 270:
-
-/* Line 1455 of yacc.c  */
-#line 1709 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+#line 1762 "c-exp.y"
+                            { (yyval.sval) = typename_stoken ("int"); }
+#line 4217 "c-exp.c.tmp"
     break;
 
   case 271:
+#line 1763 "c-exp.y"
+                     { (yyval.sval) = typename_stoken ("long"); }
+#line 4223 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1710 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].sval); }
+  case 272:
+#line 1764 "c-exp.y"
+                      { (yyval.sval) = typename_stoken ("short"); }
+#line 4229 "c-exp.c.tmp"
+    break;
+
+  case 273:
+#line 1765 "c-exp.y"
+                               { (yyval.sval) = typename_stoken ("signed"); }
+#line 4235 "c-exp.c.tmp"
     break;
 
   case 274:
+#line 1766 "c-exp.y"
+                         { (yyval.sval) = typename_stoken ("unsigned"); }
+#line 4241 "c-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1723 "c-exp.y"
-    {
+  case 275:
+#line 1769 "c-exp.y"
+                     { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 4247 "c-exp.c.tmp"
+    break;
+
+  case 276:
+#line 1770 "c-exp.y"
+                          { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 4253 "c-exp.c.tmp"
+    break;
+
+  case 277:
+#line 1771 "c-exp.y"
+                         { (yyval.sval) = (yyvsp[0].tsym).stoken; }
+#line 4259 "c-exp.c.tmp"
+    break;
+
+  case 278:
+#line 1772 "c-exp.y"
+                             { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 4265 "c-exp.c.tmp"
+    break;
+
+  case 279:
+#line 1773 "c-exp.y"
+                                  { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 4271 "c-exp.c.tmp"
+    break;
+
+  case 280:
+#line 1774 "c-exp.y"
+                     { (yyval.sval) = (yyvsp[0].sval); }
+#line 4277 "c-exp.c.tmp"
+    break;
+
+  case 283:
+#line 1787 "c-exp.y"
+                        {
 			  struct field_of_this_result is_a_field_of_this;
 
-			  (yyval.ssym).stoken = (yyvsp[(1) - (1)].sval);
+			  (yyval.ssym).stoken = (yyvsp[0].sval);
 			  (yyval.ssym).sym
-			    = lookup_symbol ((yyvsp[(1) - (1)].sval).ptr,
+			    = lookup_symbol ((yyvsp[0].sval).ptr,
 					     pstate->expression_context_block,
 					     VAR_DOMAIN,
 					     &is_a_field_of_this);
 			  (yyval.ssym).is_a_field_of_this
 			    = is_a_field_of_this.type != NULL;
 			}
+#line 4294 "c-exp.c.tmp"
     break;
 
 
+#line 4298 "c-exp.c.tmp"
 
-/* Line 1455 of yacc.c  */
-#line 4599 "c-exp.c.tmp"
       default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -4695,14 +4371,12 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -4715,39 +4389,42 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -4760,6 +4437,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -4767,7 +4445,8 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+
+#if !defined yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -4777,36 +4456,38 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
 
+  return yyresult;
+}
 
-/* Line 1675 of yacc.c  */
-#line 1738 "c-exp.y"
+#line 1802 "c-exp.y"
 
 
 /* Like write_exp_string, but prepends a '~'.  */
@@ -4860,10 +4541,10 @@ typename_stoken (const char *type)
 static int
 type_aggregate_p (struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	  || TYPE_CODE (type) == TYPE_CODE_UNION
-	  || TYPE_CODE (type) == TYPE_CODE_NAMESPACE
-	  || (TYPE_CODE (type) == TYPE_CODE_ENUM
+  return (type->code () == TYPE_CODE_STRUCT
+	  || type->code () == TYPE_CODE_UNION
+	  || type->code () == TYPE_CODE_NAMESPACE
+	  || (type->code () == TYPE_CODE_ENUM
 	      && TYPE_DECLARED_CLASS (type)));
 }
 
@@ -4878,7 +4559,7 @@ check_parameter_typelist (std::vector<st
   for (ix = 0; ix < params->size (); ++ix)
     {
       type = (*params)[ix];
-      if (type != NULL && TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
+      if (type != NULL && check_typedef (type)->code () == TYPE_CODE_VOID)
 	{
 	  if (ix == 0)
 	    {
@@ -4917,7 +4598,10 @@ parse_number (struct parser_state *par_s
   /* Number of "L" suffixes encountered.  */
   int long_p = 0;
 
-  /* We have found a "L" or "U" suffix.  */
+  /* Imaginary number.  */
+  bool imaginary_p = false;
+
+  /* We have found a "L" or "U" (or "i") suffix.  */
   int found_suffix = 0;
 
   ULONGEST high_bit;
@@ -4930,6 +4614,12 @@ parse_number (struct parser_state *par_s
 
   if (parsed_float)
     {
+      if (len >= 1 && p[len - 1] == 'i')
+	{
+	  imaginary_p = true;
+	  --len;
+	}
+
       /* Handle suffixes for decimal floating-point: "df", "dd" or "dl".  */
       if (len >= 2 && p[len - 2] == 'd' && p[len - 1] == 'f')
 	{
@@ -4973,7 +4663,12 @@ parse_number (struct parser_state *par_s
 			putithere->typed_val_float.type,
 			putithere->typed_val_float.val))
         return ERROR;
-      return FLOAT;
+
+      if (imaginary_p)
+	putithere->typed_val_float.type
+	  = init_complex_type (nullptr, putithere->typed_val_float.type);
+
+      return imaginary_p ? COMPLEX_FLOAT : FLOAT;
     }
 
   /* Handle base-switching prefixes 0x, 0t, 0d, 0 */
@@ -5022,7 +4717,7 @@ parse_number (struct parser_state *par_s
       c = *p++;
       if (c >= 'A' && c <= 'Z')
 	c += 'a' - 'A';
-      if (c != 'l' && c != 'u')
+      if (c != 'l' && c != 'u' && c != 'i')
 	n *= base;
       if (c >= '0' && c <= '9')
 	{
@@ -5048,6 +4743,11 @@ parse_number (struct parser_state *par_s
 	      unsigned_p = 1;
 	      found_suffix = 1;
 	    }
+	  else if (c == 'i')
+	    {
+	      imaginary_p = true;
+	      found_suffix = 1;
+	    }
 	  else
 	    return ERROR;	/* Char not a digit */
 	}
@@ -5057,13 +4757,13 @@ parse_number (struct parser_state *par_s
       /* Portably test for overflow (only works for nonzero values, so make
 	 a second check for zero).  FIXME: Can't we just make n and prevn
 	 unsigned and avoid this?  */
-      if (c != 'l' && c != 'u' && (prevn >= n) && n != 0)
+      if (c != 'l' && c != 'u' && c != 'i' && (prevn >= n) && n != 0)
 	unsigned_p = 1;		/* Try something unsigned */
 
       /* Portably test for unsigned overflow.
 	 FIXME: This check is wrong; for example it doesn't find overflow
 	 on 0x123456789 when LONGEST is 32 bits.  */
-      if (c != 'l' && c != 'u' && n != 0)
+      if (c != 'l' && c != 'u' && c != 'i' && n != 0)
 	{	
 	  if (unsigned_p && prevn >= n)
 	    error (_("Numeric constant too large."));
@@ -5135,7 +4835,11 @@ parse_number (struct parser_state *par_s
        putithere->typed_val_int.type = signed_type;
      }
 
-   return INT;
+   if (imaginary_p)
+     putithere->typed_val_int.type
+       = init_complex_type (nullptr, putithere->typed_val_int.type);
+
+   return imaginary_p ? COMPLEX_INT : INT;
 }
 
 /* Temporary obstack used for holding strings.  */
@@ -5417,11 +5121,15 @@ enum token_flag
 
   FLAG_CXX = 1,
 
+  /* If this bit is set, the token is C-only.  */
+
+  FLAG_C = 2,
+
   /* If this bit is set, the token is conditional: if there is a
      symbol of the same name, then the token is a symbol; otherwise,
      the token is a keyword.  */
 
-  FLAG_SHADOW = 2
+  FLAG_SHADOW = 4
 };
 DEF_ENUM_FLAGS_TYPE (enum token_flag, token_flags);
 
@@ -5471,7 +5179,7 @@ static const struct token tokentab2[] =
 /* Identifier-like tokens.  Only type-specifiers than can appear in
    multi-word type names (for example 'double' can appear in 'long
    double') need to be listed here.  type-specifiers that are only ever
-   single word (like 'float') are handled by the classify_name function.  */
+   single word (like 'char') are handled by the classify_name function.  */
 static const struct token ident_tokens[] =
   {
     {"unsigned", UNSIGNED, OP_NULL, 0},
@@ -5483,13 +5191,21 @@ static const struct token ident_tokens[]
     {"_Alignof", ALIGNOF, OP_NULL, 0},
     {"alignof", ALIGNOF, OP_NULL, FLAG_CXX},
     {"double", DOUBLE_KEYWORD, OP_NULL, 0},
+    {"float", FLOAT_KEYWORD, OP_NULL, 0},
     {"false", FALSEKEYWORD, OP_NULL, FLAG_CXX},
     {"class", CLASS, OP_NULL, FLAG_CXX},
     {"union", UNION, OP_NULL, 0},
     {"short", SHORT, OP_NULL, 0},
     {"const", CONST_KEYWORD, OP_NULL, 0},
+    {"restrict", RESTRICT, OP_NULL, FLAG_C | FLAG_SHADOW},
+    {"__restrict__", RESTRICT, OP_NULL, 0},
+    {"__restrict", RESTRICT, OP_NULL, 0},
+    {"_Atomic", ATOMIC, OP_NULL, 0},
     {"enum", ENUM, OP_NULL, 0},
     {"long", LONG, OP_NULL, 0},
+    {"_Complex", COMPLEX, OP_NULL, 0},
+    {"__complex__", COMPLEX, OP_NULL, 0},
+
     {"true", TRUEKEYWORD, OP_NULL, FLAG_CXX},
     {"int", INT_KEYWORD, OP_NULL, 0},
     {"new", NEW, OP_NULL, FLAG_CXX},
@@ -5524,17 +5240,13 @@ static const struct token ident_tokens[]
 
 
 static void
-scan_macro_expansion (char *expansion)
+scan_macro_expansion (const char *expansion)
 {
-  const char *copy;
-
   /* We'd better not be trying to push the stack twice.  */
   gdb_assert (! cpstate->macro_original_text);
 
-  /* Copy to the obstack, and then free the intermediate
-     expansion.  */
-  copy = obstack_strdup (&cpstate->expansion_obstack, expansion);
-  xfree (expansion);
+  /* Copy to the obstack.  */
+  const char *copy = obstack_strdup (&cpstate->expansion_obstack, expansion);
 
   /* Save the old lexptr value, so we can return to it when we're done
      parsing the expanded text.  */
@@ -5604,12 +5316,11 @@ lex_one_token (struct parser_state *par_
   /* Check if this is a macro invocation that we need to expand.  */
   if (! scanning_macro_expansion ())
     {
-      char *expanded = macro_expand_next (&pstate->lexptr,
-                                          standard_macro_lookup,
-                                          expression_macro_scope);
+      gdb::unique_xmalloc_ptr<char> expanded
+	= macro_expand_next (&pstate->lexptr, *expression_macro_scope);
 
-      if (expanded)
-        scan_macro_expansion (expanded);
+      if (expanded != nullptr)
+        scan_macro_expansion (expanded.get ());
     }
 
   pstate->prev_lexptr = pstate->lexptr;
@@ -5622,6 +5333,7 @@ lex_one_token (struct parser_state *par_
 	if ((tokentab3[i].flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	gdb_assert ((tokentab3[i].flags & FLAG_C) == 0);
 
 	pstate->lexptr += 3;
 	yylval.opcode = tokentab3[i].opcode;
@@ -5635,6 +5347,7 @@ lex_one_token (struct parser_state *par_
 	if ((tokentab2[i].flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	gdb_assert ((tokentab2[i].flags & FLAG_C) == 0);
 
 	pstate->lexptr += 2;
 	yylval.opcode = tokentab2[i].opcode;
@@ -5719,7 +5432,7 @@ lex_one_token (struct parser_state *par_
     case '9':
       {
 	/* It's a number.  */
-	int got_dot = 0, got_e = 0, toktype;
+	int got_dot = 0, got_e = 0, got_p = 0, toktype;
 	const char *p = tokstart;
 	int hex = input_radix > 10;
 
@@ -5739,13 +5452,16 @@ lex_one_token (struct parser_state *par_
 	    /* This test includes !hex because 'e' is a valid hex digit
 	       and thus does not indicate a floating point number when
 	       the radix is hex.  */
-	    if (!hex && !got_e && (*p == 'e' || *p == 'E'))
+	    if (!hex && !got_e && !got_p && (*p == 'e' || *p == 'E'))
 	      got_dot = got_e = 1;
+	    else if (!got_e && !got_p && (*p == 'p' || *p == 'P'))
+	      got_dot = got_p = 1;
 	    /* This test does not include !hex, because a '.' always indicates
 	       a decimal floating point number regardless of the radix.  */
 	    else if (!got_dot && *p == '.')
 	      got_dot = 1;
-	    else if (got_e && (p[-1] == 'e' || p[-1] == 'E')
+	    else if (((got_e && (p[-1] == 'e' || p[-1] == 'E'))
+		      || (got_p && (p[-1] == 'p' || p[-1] == 'P')))
 		     && (*p == '-' || *p == '+'))
 	      /* This is the sign of the exponent, not the end of the
 		 number.  */
@@ -5758,7 +5474,7 @@ lex_one_token (struct parser_state *par_
 	      break;
 	  }
 	toktype = parse_number (par_state, tokstart, p - tokstart,
-				got_dot|got_e, &yylval);
+				got_dot | got_e | got_p, &yylval);
         if (toktype == ERROR)
 	  {
 	    char *err_copy = (char *) alloca (p - tokstart + 1);
@@ -5929,6 +5645,10 @@ lex_one_token (struct parser_state *par_
 	if ((ident_tokens[i].flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	if ((ident_tokens[i].flags & FLAG_C) != 0
+	    && par_state->language ()->la_language != language_c
+	    && par_state->language ()->la_language != language_objc)
+	  break;
 
 	if ((ident_tokens[i].flags & FLAG_SHADOW) != 0)
 	  {
@@ -6449,4 +6169,3 @@ yyerror (const char *msg)
 
   error (_("A %s in expression, near `%s'."), msg, pstate->lexptr);
 }
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-exp.y ./gdb/c-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-exp.y	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/c-exp.y	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* YACC parser for C expressions, for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -54,6 +54,7 @@
 #include "typeprint.h"
 #include "cp-abi.h"
 #include "type-stack.h"
+#include "target-float.h"
 
 #define parse_type(ps) builtin_type (ps->gdbarch ())
 
@@ -174,7 +175,7 @@ static void c_print_token (FILE *file, i
 
 %type <voidval> exp exp1 type_exp start variable qualified_name lcurly function_method
 %type <lval> rcurly
-%type <tval> type typebase
+%type <tval> type typebase scalar_type
 %type <tvec> nonempty_typelist func_mod parameter_typelist
 /* %type <bval> block */
 
@@ -185,8 +186,8 @@ static void c_print_token (FILE *file, i
 
 %type <type_stack> ptr_operator_ts abs_decl direct_abs_decl
 
-%token <typed_val_int> INT
-%token <typed_val_float> FLOAT
+%token <typed_val_int> INT COMPLEX_INT
+%token <typed_val_float> FLOAT COMPLEX_FLOAT
 
 /* Both NAME and TYPENAME tokens represent symbols in the input,
    and both convey their data as strings.
@@ -237,6 +238,8 @@ static void c_print_token (FILE *file, i
 /* Special type cases, put in to allow the parser to distinguish different
    legal basetypes.  */
 %token SIGNED_KEYWORD LONG SHORT INT_KEYWORD CONST_KEYWORD VOLATILE_KEYWORD DOUBLE_KEYWORD
+%token RESTRICT ATOMIC
+%token FLOAT_KEYWORD COMPLEX
 
 %token <sval> DOLLAR_VARIABLE
 
@@ -774,6 +777,22 @@ exp	:	INT
 			  write_exp_elt_opcode (pstate, OP_LONG); }
 	;
 
+exp	:	COMPLEX_INT
+			{
+			  write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_type (pstate, TYPE_TARGET_TYPE ($1.type));
+			  write_exp_elt_longcst (pstate, 0);
+			  write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_type (pstate, TYPE_TARGET_TYPE ($1.type));
+			  write_exp_elt_longcst (pstate, (LONGEST) ($1.val));
+			  write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_opcode (pstate, OP_COMPLEX);
+			  write_exp_elt_type (pstate, $1.type);
+			  write_exp_elt_opcode (pstate, OP_COMPLEX);
+			}
+	;
+
 exp	:	CHAR
 			{
 			  struct stoken_vector vec;
@@ -803,6 +822,27 @@ exp	:	FLOAT
 			  write_exp_elt_opcode (pstate, OP_FLOAT); }
 	;
 
+exp	:	COMPLEX_FLOAT
+			{
+			  struct type *underlying
+			    = TYPE_TARGET_TYPE ($1.type);
+
+			  write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_type (pstate, underlying);
+			  gdb_byte val[16];
+			  target_float_from_host_double (val, underlying, 0);
+			  write_exp_elt_floatcst (pstate, val);
+			  write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_type (pstate, underlying);
+			  write_exp_elt_floatcst (pstate, $1.val);
+			  write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_opcode (pstate, OP_COMPLEX);
+			  write_exp_elt_type (pstate, $1.type);
+			  write_exp_elt_opcode (pstate, OP_COMPLEX);
+			}
+	;
+
 exp	:	variable
 	;
 
@@ -1169,36 +1209,43 @@ variable:	name_not_typename
 			}
 	;
 
-space_identifier : '@' NAME
-		{
-		  cpstate->type_stack.insert (pstate,
-					      copy_name ($2.stoken).c_str ());
-		}
-	;
-
 const_or_volatile: const_or_volatile_noopt
 	|
 	;
 
-cv_with_space_id : const_or_volatile space_identifier const_or_volatile
+single_qualifier:
+		CONST_KEYWORD
+			{ cpstate->type_stack.insert (tp_const); }
+	| 	VOLATILE_KEYWORD
+			{ cpstate->type_stack.insert (tp_volatile); }
+	| 	ATOMIC
+			{ cpstate->type_stack.insert (tp_atomic); }
+	| 	RESTRICT
+			{ cpstate->type_stack.insert (tp_restrict); }
+	|	'@' NAME
+		{
+		  cpstate->type_stack.insert (pstate,
+					      copy_name ($2.stoken).c_str ());
+		}
 	;
 
-const_or_volatile_or_space_identifier_noopt: cv_with_space_id
-	| const_or_volatile_noopt
+qualifier_seq_noopt:
+		single_qualifier
+	| 	qualifier_seq single_qualifier
 	;
 
-const_or_volatile_or_space_identifier:
-		const_or_volatile_or_space_identifier_noopt
+qualifier_seq:
+		qualifier_seq_noopt
 	|
 	;
 
 ptr_operator:
 		ptr_operator '*'
 			{ cpstate->type_stack.insert (tp_pointer); }
-		const_or_volatile_or_space_identifier
+		qualifier_seq
 	|	'*'
 			{ cpstate->type_stack.insert (tp_pointer); }
-		const_or_volatile_or_space_identifier
+		qualifier_seq
 	|	'&'
 			{ cpstate->type_stack.insert (tp_reference); }
 	|	'&' ptr_operator
@@ -1285,20 +1332,11 @@ func_mod:	'(' ')'
 type	:	ptype
 	;
 
-/* Implements (approximately): (type-qualifier)* type-specifier.
+/* A helper production that recognizes scalar types that can validly
+   be used with _Complex.  */
 
-   When type-specifier is only ever a single word, like 'float' then these
-   arrive as pre-built TYPENAME tokens thanks to the classify_name
-   function.  However, when a type-specifier can contain multiple words,
-   for example 'double' can appear as just 'double' or 'long double', and
-   similarly 'long' can appear as just 'long' or in 'long double', then
-   these type-specifiers are parsed into their own tokens in the function
-   lex_one_token and the ident_tokens array.  These separate tokens are all
-   recognised here.  */
-typebase
-	:	TYPENAME
-			{ $$ = $1.type; }
-	|	INT_KEYWORD
+scalar_type:
+		INT_KEYWORD
 			{ $$ = lookup_signed_typename (pstate->language (),
 						       "int"); }
 	|	LONG
@@ -1381,11 +1419,49 @@ typebase
 						"double",
 						NULL,
 						0); }
+	|	FLOAT_KEYWORD
+			{ $$ = lookup_typename (pstate->language (),
+						"float",
+						NULL,
+						0); }
 	|	LONG DOUBLE_KEYWORD
 			{ $$ = lookup_typename (pstate->language (),
 						"long double",
 						NULL,
 						0); }
+	|	UNSIGNED type_name
+			{ $$ = lookup_unsigned_typename (pstate->language (),
+							 $2.type->name ()); }
+	|	UNSIGNED
+			{ $$ = lookup_unsigned_typename (pstate->language (),
+							 "int"); }
+	|	SIGNED_KEYWORD type_name
+			{ $$ = lookup_signed_typename (pstate->language (),
+						       $2.type->name ()); }
+	|	SIGNED_KEYWORD
+			{ $$ = lookup_signed_typename (pstate->language (),
+						       "int"); }
+	;
+
+/* Implements (approximately): (type-qualifier)* type-specifier.
+
+   When type-specifier is only ever a single word, like 'float' then these
+   arrive as pre-built TYPENAME tokens thanks to the classify_name
+   function.  However, when a type-specifier can contain multiple words,
+   for example 'double' can appear as just 'double' or 'long double', and
+   similarly 'long' can appear as just 'long' or in 'long double', then
+   these type-specifiers are parsed into their own tokens in the function
+   lex_one_token and the ident_tokens array.  These separate tokens are all
+   recognised here.  */
+typebase
+	:	TYPENAME
+			{ $$ = $1.type; }
+	|	scalar_type
+			{ $$ = $1; }
+	|	COMPLEX scalar_type
+			{
+			  $$ = init_complex_type (nullptr, $2);
+			}
 	|	STRUCT name
 			{ $$
 			    = lookup_struct (copy_name ($2).c_str (),
@@ -1452,18 +1528,6 @@ typebase
 						       $2.length);
 			  $$ = NULL;
 			}
-	|	UNSIGNED type_name
-			{ $$ = lookup_unsigned_typename (pstate->language (),
-							 TYPE_NAME($2.type)); }
-	|	UNSIGNED
-			{ $$ = lookup_unsigned_typename (pstate->language (),
-							 "int"); }
-	|	SIGNED_KEYWORD type_name
-			{ $$ = lookup_signed_typename (pstate->language (),
-						       TYPE_NAME($2.type)); }
-	|	SIGNED_KEYWORD
-			{ $$ = lookup_signed_typename (pstate->language (),
-						       "int"); }
                 /* It appears that this rule for templates is never
                    reduced; template recognition happens by lookahead
                    in the token processing code in yylex. */
@@ -1472,9 +1536,9 @@ typebase
 			    (copy_name($2).c_str (), $4,
 			     pstate->expression_context_block);
 			}
-	| const_or_volatile_or_space_identifier_noopt typebase
+	|	qualifier_seq_noopt typebase
 			{ $$ = cpstate->type_stack.follow_types ($2); }
-	| typebase const_or_volatile_or_space_identifier_noopt
+	|	typebase qualifier_seq_noopt
 			{ $$ = cpstate->type_stack.follow_types ($1); }
 	;
 
@@ -1675,13 +1739,14 @@ oper:	OPERATOR NEW
 
 			  c_print_type ($2, NULL, &buf, -1, 0,
 					&type_print_raw_options);
+			  std::string name = std::move (buf.string ());
 
 			  /* This also needs canonicalization.  */
-			  std::string canon
-			    = cp_canonicalize_string (buf.c_str ());
-			  if (canon.empty ())
-			    canon = std::move (buf.string ());
-			  $$ = operator_stoken ((" " + canon).c_str ());
+			  gdb::unique_xmalloc_ptr<char> canon
+			    = cp_canonicalize_string (name.c_str ());
+			  if (canon != nullptr)
+			    name = canon.get ();
+			  $$ = operator_stoken ((" " + name).c_str ());
 			}
 	;
 
@@ -1689,12 +1754,11 @@ oper:	OPERATOR NEW
    match the 'name' rule to appear as fields within a struct.  The example
    that initially motivated this was the RISC-V target which models the
    floating point registers as a union with fields called 'float' and
-   'double'.  The 'float' string becomes a TYPENAME token and can appear
-   anywhere a 'name' can, however 'double' is its own token,
-   DOUBLE_KEYWORD, and doesn't match the 'name' rule.*/
+   'double'.  */
 field_name
 	:	name
 	|	DOUBLE_KEYWORD { $$ = typename_stoken ("double"); }
+	|	FLOAT_KEYWORD { $$ = typename_stoken ("float"); }
 	|	INT_KEYWORD { $$ = typename_stoken ("int"); }
 	|	LONG { $$ = typename_stoken ("long"); }
 	|	SHORT { $$ = typename_stoken ("short"); }
@@ -1788,10 +1852,10 @@ typename_stoken (const char *type)
 static int
 type_aggregate_p (struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	  || TYPE_CODE (type) == TYPE_CODE_UNION
-	  || TYPE_CODE (type) == TYPE_CODE_NAMESPACE
-	  || (TYPE_CODE (type) == TYPE_CODE_ENUM
+  return (type->code () == TYPE_CODE_STRUCT
+	  || type->code () == TYPE_CODE_UNION
+	  || type->code () == TYPE_CODE_NAMESPACE
+	  || (type->code () == TYPE_CODE_ENUM
 	      && TYPE_DECLARED_CLASS (type)));
 }
 
@@ -1806,7 +1870,7 @@ check_parameter_typelist (std::vector<st
   for (ix = 0; ix < params->size (); ++ix)
     {
       type = (*params)[ix];
-      if (type != NULL && TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
+      if (type != NULL && check_typedef (type)->code () == TYPE_CODE_VOID)
 	{
 	  if (ix == 0)
 	    {
@@ -1845,7 +1909,10 @@ parse_number (struct parser_state *par_s
   /* Number of "L" suffixes encountered.  */
   int long_p = 0;
 
-  /* We have found a "L" or "U" suffix.  */
+  /* Imaginary number.  */
+  bool imaginary_p = false;
+
+  /* We have found a "L" or "U" (or "i") suffix.  */
   int found_suffix = 0;
 
   ULONGEST high_bit;
@@ -1858,6 +1925,12 @@ parse_number (struct parser_state *par_s
 
   if (parsed_float)
     {
+      if (len >= 1 && p[len - 1] == 'i')
+	{
+	  imaginary_p = true;
+	  --len;
+	}
+
       /* Handle suffixes for decimal floating-point: "df", "dd" or "dl".  */
       if (len >= 2 && p[len - 2] == 'd' && p[len - 1] == 'f')
 	{
@@ -1901,7 +1974,12 @@ parse_number (struct parser_state *par_s
 			putithere->typed_val_float.type,
 			putithere->typed_val_float.val))
         return ERROR;
-      return FLOAT;
+
+      if (imaginary_p)
+	putithere->typed_val_float.type
+	  = init_complex_type (nullptr, putithere->typed_val_float.type);
+
+      return imaginary_p ? COMPLEX_FLOAT : FLOAT;
     }
 
   /* Handle base-switching prefixes 0x, 0t, 0d, 0 */
@@ -1950,7 +2028,7 @@ parse_number (struct parser_state *par_s
       c = *p++;
       if (c >= 'A' && c <= 'Z')
 	c += 'a' - 'A';
-      if (c != 'l' && c != 'u')
+      if (c != 'l' && c != 'u' && c != 'i')
 	n *= base;
       if (c >= '0' && c <= '9')
 	{
@@ -1976,6 +2054,11 @@ parse_number (struct parser_state *par_s
 	      unsigned_p = 1;
 	      found_suffix = 1;
 	    }
+	  else if (c == 'i')
+	    {
+	      imaginary_p = true;
+	      found_suffix = 1;
+	    }
 	  else
 	    return ERROR;	/* Char not a digit */
 	}
@@ -1985,13 +2068,13 @@ parse_number (struct parser_state *par_s
       /* Portably test for overflow (only works for nonzero values, so make
 	 a second check for zero).  FIXME: Can't we just make n and prevn
 	 unsigned and avoid this?  */
-      if (c != 'l' && c != 'u' && (prevn >= n) && n != 0)
+      if (c != 'l' && c != 'u' && c != 'i' && (prevn >= n) && n != 0)
 	unsigned_p = 1;		/* Try something unsigned */
 
       /* Portably test for unsigned overflow.
 	 FIXME: This check is wrong; for example it doesn't find overflow
 	 on 0x123456789 when LONGEST is 32 bits.  */
-      if (c != 'l' && c != 'u' && n != 0)
+      if (c != 'l' && c != 'u' && c != 'i' && n != 0)
 	{	
 	  if (unsigned_p && prevn >= n)
 	    error (_("Numeric constant too large."));
@@ -2063,7 +2146,11 @@ parse_number (struct parser_state *par_s
        putithere->typed_val_int.type = signed_type;
      }
 
-   return INT;
+   if (imaginary_p)
+     putithere->typed_val_int.type
+       = init_complex_type (nullptr, putithere->typed_val_int.type);
+
+   return imaginary_p ? COMPLEX_INT : INT;
 }
 
 /* Temporary obstack used for holding strings.  */
@@ -2345,11 +2432,15 @@ enum token_flag
 
   FLAG_CXX = 1,
 
+  /* If this bit is set, the token is C-only.  */
+
+  FLAG_C = 2,
+
   /* If this bit is set, the token is conditional: if there is a
      symbol of the same name, then the token is a symbol; otherwise,
      the token is a keyword.  */
 
-  FLAG_SHADOW = 2
+  FLAG_SHADOW = 4
 };
 DEF_ENUM_FLAGS_TYPE (enum token_flag, token_flags);
 
@@ -2399,7 +2490,7 @@ static const struct token tokentab2[] =
 /* Identifier-like tokens.  Only type-specifiers than can appear in
    multi-word type names (for example 'double' can appear in 'long
    double') need to be listed here.  type-specifiers that are only ever
-   single word (like 'float') are handled by the classify_name function.  */
+   single word (like 'char') are handled by the classify_name function.  */
 static const struct token ident_tokens[] =
   {
     {"unsigned", UNSIGNED, OP_NULL, 0},
@@ -2411,13 +2502,21 @@ static const struct token ident_tokens[]
     {"_Alignof", ALIGNOF, OP_NULL, 0},
     {"alignof", ALIGNOF, OP_NULL, FLAG_CXX},
     {"double", DOUBLE_KEYWORD, OP_NULL, 0},
+    {"float", FLOAT_KEYWORD, OP_NULL, 0},
     {"false", FALSEKEYWORD, OP_NULL, FLAG_CXX},
     {"class", CLASS, OP_NULL, FLAG_CXX},
     {"union", UNION, OP_NULL, 0},
     {"short", SHORT, OP_NULL, 0},
     {"const", CONST_KEYWORD, OP_NULL, 0},
+    {"restrict", RESTRICT, OP_NULL, FLAG_C | FLAG_SHADOW},
+    {"__restrict__", RESTRICT, OP_NULL, 0},
+    {"__restrict", RESTRICT, OP_NULL, 0},
+    {"_Atomic", ATOMIC, OP_NULL, 0},
     {"enum", ENUM, OP_NULL, 0},
     {"long", LONG, OP_NULL, 0},
+    {"_Complex", COMPLEX, OP_NULL, 0},
+    {"__complex__", COMPLEX, OP_NULL, 0},
+
     {"true", TRUEKEYWORD, OP_NULL, FLAG_CXX},
     {"int", INT_KEYWORD, OP_NULL, 0},
     {"new", NEW, OP_NULL, FLAG_CXX},
@@ -2452,17 +2551,13 @@ static const struct token ident_tokens[]
 
 
 static void
-scan_macro_expansion (char *expansion)
+scan_macro_expansion (const char *expansion)
 {
-  const char *copy;
-
   /* We'd better not be trying to push the stack twice.  */
   gdb_assert (! cpstate->macro_original_text);
 
-  /* Copy to the obstack, and then free the intermediate
-     expansion.  */
-  copy = obstack_strdup (&cpstate->expansion_obstack, expansion);
-  xfree (expansion);
+  /* Copy to the obstack.  */
+  const char *copy = obstack_strdup (&cpstate->expansion_obstack, expansion);
 
   /* Save the old lexptr value, so we can return to it when we're done
      parsing the expanded text.  */
@@ -2532,12 +2627,11 @@ lex_one_token (struct parser_state *par_
   /* Check if this is a macro invocation that we need to expand.  */
   if (! scanning_macro_expansion ())
     {
-      char *expanded = macro_expand_next (&pstate->lexptr,
-                                          standard_macro_lookup,
-                                          expression_macro_scope);
+      gdb::unique_xmalloc_ptr<char> expanded
+	= macro_expand_next (&pstate->lexptr, *expression_macro_scope);
 
-      if (expanded)
-        scan_macro_expansion (expanded);
+      if (expanded != nullptr)
+        scan_macro_expansion (expanded.get ());
     }
 
   pstate->prev_lexptr = pstate->lexptr;
@@ -2550,6 +2644,7 @@ lex_one_token (struct parser_state *par_
 	if ((tokentab3[i].flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	gdb_assert ((tokentab3[i].flags & FLAG_C) == 0);
 
 	pstate->lexptr += 3;
 	yylval.opcode = tokentab3[i].opcode;
@@ -2563,6 +2658,7 @@ lex_one_token (struct parser_state *par_
 	if ((tokentab2[i].flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	gdb_assert ((tokentab2[i].flags & FLAG_C) == 0);
 
 	pstate->lexptr += 2;
 	yylval.opcode = tokentab2[i].opcode;
@@ -2647,7 +2743,7 @@ lex_one_token (struct parser_state *par_
     case '9':
       {
 	/* It's a number.  */
-	int got_dot = 0, got_e = 0, toktype;
+	int got_dot = 0, got_e = 0, got_p = 0, toktype;
 	const char *p = tokstart;
 	int hex = input_radix > 10;
 
@@ -2667,13 +2763,16 @@ lex_one_token (struct parser_state *par_
 	    /* This test includes !hex because 'e' is a valid hex digit
 	       and thus does not indicate a floating point number when
 	       the radix is hex.  */
-	    if (!hex && !got_e && (*p == 'e' || *p == 'E'))
+	    if (!hex && !got_e && !got_p && (*p == 'e' || *p == 'E'))
 	      got_dot = got_e = 1;
+	    else if (!got_e && !got_p && (*p == 'p' || *p == 'P'))
+	      got_dot = got_p = 1;
 	    /* This test does not include !hex, because a '.' always indicates
 	       a decimal floating point number regardless of the radix.  */
 	    else if (!got_dot && *p == '.')
 	      got_dot = 1;
-	    else if (got_e && (p[-1] == 'e' || p[-1] == 'E')
+	    else if (((got_e && (p[-1] == 'e' || p[-1] == 'E'))
+		      || (got_p && (p[-1] == 'p' || p[-1] == 'P')))
 		     && (*p == '-' || *p == '+'))
 	      /* This is the sign of the exponent, not the end of the
 		 number.  */
@@ -2686,7 +2785,7 @@ lex_one_token (struct parser_state *par_
 	      break;
 	  }
 	toktype = parse_number (par_state, tokstart, p - tokstart,
-				got_dot|got_e, &yylval);
+				got_dot | got_e | got_p, &yylval);
         if (toktype == ERROR)
 	  {
 	    char *err_copy = (char *) alloca (p - tokstart + 1);
@@ -2857,6 +2956,10 @@ lex_one_token (struct parser_state *par_
 	if ((ident_tokens[i].flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	if ((ident_tokens[i].flags & FLAG_C) != 0
+	    && par_state->language ()->la_language != language_c
+	    && par_state->language ()->la_language != language_objc)
+	  break;
 
 	if ((ident_tokens[i].flags & FLAG_SHADOW) != 0)
 	  {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog ./gdb/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog	2021-05-21 01:57:24.000000000 +0000
@@ -1,16594 +1,13003 @@
-2020-02-22  Eli Zaretskii  <eliz@gnu.org>
+2021-04-23  Tom Tromey  <tromey@adacore.com>
 
-	PRE gdb/25586:
-	* tui/tui-win.c (new_height_ok, tui_adjust_win_heights): Rename
-	'locator' to 'status_line', to better match terminology in the
-	manual.
-	(tui_adjust_win_heights): Resize the status_line window to match
-	the new dimensions of the command and source/disassembly windows.
-	Reported by Aleksey Midenkov <midenok@gmail.com>.
+	PR gdb/27743:
+	* psymtab.c (partial_map_expand_apply): Expand outermost psymtab.
 
-2020-02-08  Joel Brobecker  <brobecker@adacore.com>
+2021-04-25  Joel Brobecker  <brobecker@adacore.com>
 
-	* version.in: Set GDB version number to 9.1.90.DATE-git.
+	* version.in: Set GDB version number to 10.2.90.DATE-git.
 
-2020-02-08  Joel Brobecker  <brobecker@adacore.com>
+2021-04-25  Joel Brobecker  <brobecker@adacore.com>
 
-	GDB 9.1 released.
+	GDB 10.2 released.
 
-2020-02-08  Joel Brobecker  <brobecker@adacore.com>
+2021-04-25  Joel Brobecker  <brobecker@adacore.com>
 
-	* version.in: Set GDB version number to 9.1.
+	* version.in: Set GDB version number to 10.2.
 
-2020-02-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+2021-04-22  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	PR gdb/25190:
-        * gdb/remote-sim.c (gdb_os_write_stderr): Update.
-        * gdb/remote.c (remote_console_output): Update.
-        * gdb/ui-file.c (fputs_unfiltered): Rename to...
-        (ui_file_puts): ...this.
-        * gdb/ui-file.h (ui_file_puts): Add declaration.
-        * gdb/utils.c (emit_style_escape): Update.
-        (flush_wrap_buffer): Update.
-        (fputs_maybe_filtered): Update.
-        (fputs_unfiltered): Add function.
+	PR gdb/27757
+	* python/py-type.c (typy_range): Check that bounds are constant
+	before accessing them as such.
+	* guile/scm-type.c (gdbscm_type_range): Likewise.
 
-2020-02-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+2021-04-22  Simon Marchi  <simon.marchi@polymtl.ca>
 
-        * gdb/event-loop.c (gdb_wait_for_event): Update.
-        * gdb/printcmd.c (printf_command): Update.
-        * gdb/remote-fileio.c (remote_fileio_func_write): Update.
-        * gdb/remote-sim.c (gdb_os_flush_stdout): Update.
-        (gdb_os_flush_stderr): Update.
-        * gdb/remote.c (remote_console_output): Update.
-        * gdb/ui-file.c (gdb_flush): Rename to...
-        (ui_file_flush): ...this.
-        (stderr_file::write): Update.
-        (stderr_file::puts): Update.
-        * gdb/ui-file.h (gdb_flush): Rename to...
-        (ui_file_flush): ...this.
-        * gdb/utils.c (gdb_flush): Add function.
-        * gdb/utils.h (gdb_flush): Add declaration.
+	PR gdb/27757
+	* python/py-type.c (typy_range): Check that bounds are constant
+	before accessing them as such.
+	* guile/scm-type.c (gdbscm_type_range): Likewise.
 
-2020-02-07  Tom Tromey  <tromey@adacore.com>
+2021-03-30  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	PR breakpoints/24915:
-	* source.c (find_and_open_source): Do not check basenames_may_differ.
+	PR gdb/27541
+	* dwarf2/read.c (dwarf2_has_info): Don't share dwarf2_per_bfd
+	with objfiles using READNOW.
 
-2020-01-10  Christian Biesinger  <cbiesinger@google.com>
+2021-03-12  Christian Biesinger  <cbiesinger@google.com>
 
-	* gdbsupport/common-defs.h: Don't define _FORTIFY_SOURCE on MinGW.
+	PR threads/27239
+	* cp-support.c: Use scoped_segv_handler_restore.
+	* event-top.c (thread_local_segv_handler): Made static.
+	(scoped_segv_handler_restore::scoped_segv_handler_restore):
+	New function.
+	(scoped_segv_handler_restore::~scoped_segv_handler_restore): New
+	function.
+	* event-top.h (class scoped_segv_handler_restore): New class.
+	(thread_local_segv_handler): Removed.
 
-2020-01-07  Tom Tromey  <tromey@adacore.com>
+2021-03-07  Tom de Vries  <tdevries@suse.de>
 
-	PR build/24937:
-	* stap-probe.c (class stap_static_probe_ops): Add constructor.
+	PR symtab/27341
+	* dwarf2/read.c (read_array_type): Return NULL when not being able to
+	construct an array type.  Add assert to ensure that element_type is
+	not being modified.
+
+2021-03-06  Kevin Buettner  <kevinb@redhat.com>
+
+	PR build/27536
+	* nat/aarch64-linux-hw-point.c: Include <asm/ptrace.h> after
+	<sys/ptrace.h>.
+
+2021-03-06  Kevin Buettner  <kevinb@redhat.com>
+
+	PR build/27535
+	* nat/amd64-linux-siginfo.c: Include "gdbsupport/common-defs.h"
+	(which in turn includes <gnulib/config.h>) before include
+	of <signal.h>.
+
+2021-03-06  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/27333
+	* dwarf2/read.c (process_psymtab_comp_unit): Handle DW_TAG_type_unit.
+
+2021-03-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/27147
+	* sparc-nat.h (sparc_fetch_inferior_registers): Add
+	process_stratum_target parameter,
+	sparc_store_inferior_registers): update callers.
+	* sparc-nat.c (sparc_fetch_inferior_registers,
+	sparc_store_inferior_registers): Add process_stratum_target
+	parameter.  Switch current thread before calling
+	sparc_supply_gregset / sparc_collect_rwindow.
+	(sparc_store_inferior_registers): Likewise.
+	* sparc-obsd-tdep.c (sparc32obsd_supply_uthread): Add assertion.
+	(sparc32obsd_collect_uthread): Likewise.
+	* sparc-tdep.c (sparc_supply_rwindow, sparc_collect_rwindow):
+	Add assertion.
+	* sparc64-obsd-tdep.c (sparc64obsd_collect_uthread,
+	sparc64obsd_supply_uthread): Add assertion.
 
-2020-01-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+2021-02-25  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* stack.c (print_frame_info): Move disassemble_next_line code
-	inside source_print block.
+	PR gdb/26861
+	* target.c (target_mourn_inferior): Only compare pids in
+	target_mourn_inferior.
 
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+2021-02-23  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* gdbarch.sh: Update copyright year range of generated files.
+	PR gdb/26828
+	* dwarf2/read.c (dwarf2_queue_guard) <dwarf2_queue_guard>:
+	Instantiate queue.
+	(~dwarf2_queue_guard): Clear queue.
+	(queue_comp_unit): Assert that queue is
+	instantiated.
+	(process_queue): Adjust.
+	* dwarf2/read.h (struct dwarf2_per_bfd) <queue>: Make optional.
 
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+2021-02-23  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	Update copyright year range in all the GDB files automatically
-	handled by our copyright.py script.
+	PR gdb/26828
+	* dwarf2/read.c (maybe_queue_comp_unit): Check if CU is expanded
+	to decide whether or not to enqueue it for expansion.
+	(follow_die_offset, follow_die_sig_1): Ensure we load the DIEs
+	after calling maybe_queue_comp_unit.
 
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+2021-02-22  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* copyright.py: Convert to Python 3.
+	PR gdb/27435
+	* inf-ptrace.c (struct target_unpusher): Move to target.h.
+	(target_unpush_up): Likewise.
+	* procfs.c (procfs_target::attach): Push target early.  Use
+	target_unpush_up to unpush target in case of error.
+	* target.h (struct target_unpusher): Move here.
+	(target_unpush_up): Likewise.
 
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+2021-02-09  Shahab Vahedi  <shahab@synopsys.com>
 
-	* copyright.py: Adapt after move of gnulib directory from gdb
-	directory to toplevel directory.
+	PR build/27385
+	* arch/arc.c (arc_lookup_target_description): Use
+	target_desc_up() ctor explicitly.
 
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+2021-02-08  Shahab Vahedi  <shahab@synopsys.com>
 
-	* copyright.py (main): Exit if run from the wrong directory.
+	PR tdep/27369
+	* arc-linux-tdep.c (handle_atomic_sequence): New.
+	(arc_linux_software_single_step): Call handle_atomic_sequence().
 
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+2021-02-05  Tom de Vries  <tdevries@suse.de>
 
-	* top.c (print_gdb_version): Change copyright year to 2020.
+	PR breakpoints/27330
+	* breakpoint.c (create_exception_master_breakpoint): Handle case that
+	glibc object file has debug info.
 
-2019-12-26  Christian Biesinger  <cbiesinger@google.com>
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
 
-	* configure: Regenerate.
-	* configure.ac: Quote variable arguments of test.
-	* gdbsupport/common.m4: Likewise.
+	PR gdb/26813
+	* dwarf2/read.c (read_loclists_rnglists_header): Add
+	header_offset parameter and use it.
+	(read_loclist_index): Read header of the current contribution,
+	not the one at the beginning of the section.
+	(read_rnglist_index): Likewise.
 
-2019-12-21  Eli Zaretskii  <eliz@gnu.org>
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
 
-	* top.c (print_gdb_configuration): Print "--with-xxhash" or
-	"--without-xxhash" according to HAVE_LIBXXHASH.
+	* dwarf2/read.c (read_loclist_index): Add bound check for the end
+	of the offset.
 
-2019-12-18  Tom Tromey  <tromey@adacore.com>
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
 
-	PR build/25268:
-	* gdbsupport/thread-pool.c (set_thread_name): Expect "int" return
-	type on macOS.  Add comment.
+	* dwarf2/read.c (read_rnglist_index): Fix bound check.
 
-2019-12-18  Tom Tromey  <tromey@adacore.com>
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
 
-	PR build/25250:
-	* ui-out.c (ui_out::vmessage): Update.
-	* ui-out.h (enum class field_kind) <FIELD_STRING, FIELD_SIGNED>:
-	Rename.
-	(string_field): Update.
-	(signed_field): Update.
+	* dwarf2/read.c (read_loclist_index): Change complaints into
+	errors.
 
-2019-12-16  Simon Marchi  <simon.marchi@polymtl.ca>
+2021-01-08  Tom de Vries  <tdevries@suse.de>
 
-	* jit.c (finalize_symtab): Set gdb_block_iter_tmp in loop.
+	PR gdb/26881
+	* breakpoint.c (create_exception_master_breakpoint_probe)
+	(create_exception_master_breakpoint_hook): Factor out
+	of ...
+	(create_exception_master_breakpoint): ... here.  Only try to install
+	the master exception breakpoint in objfile.debug using the
+	_Unwind_DebugHook method, if the install using probes in objfile
+	failed.
 
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
+2021-01-07  Pedro Alves  <pedro@palves.net>
+	    Simon Marchi  <simon.marchi@polymtl.ca>
+	    Tom de Vries  <tdevries@suse.de>
 
-	* version.in: Set GDB version number to 9.0.90.DATE-git.
+	PR remote/26614
+	* remote.c (remote_async_inferior_event_handler):  Hold a strong
+	reference to the remote target while handling an event.
 
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
+2021-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	GDB 9.0.90 released.
+	* gdbarch.sh: Update copyright year range.
 
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
+2021-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	* version.in: Set GDB version number to 9.0.90.
+	Update copyright year range in copyright header of all GDB files.
 
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
+2021-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	* NEWS: Change "Changes since GDB 8.3" into "Changes in GDB 9".
+	* copyright.py (get_update_list): Add "gdbserver" and "gdbsupport"
+	to the list of directories to update.
 
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
+2021-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	GDB 9 branch created (27f7b2f64062ac9e52afc60509263c2702a9ebd0):
-	* version.in: Bump version to 9.0.90.DATE-git.
+	* top.c (print_gdb_version): Update copyright year.
 
-2019-12-11  Tom Tromey  <tromey@adacore.com>
+2020-12-09  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	PR build/25268:
-	* gdbsupport/thread-pool.c (set_thread_name): New function.
-	(thread_pool::set_thread_count): Don't call pthread_setname_np.
-	(thread_pool::thread_function): Call set_thread_name.
+	* gdbtypes.c (get_discrete_low_bound, get_discrete_high_bound):
+	Return {} instead of false.
+	(get_discrete_bounds): Compute high bound only if low bound is
+	valid.
 
-2019-12-11  Tom Tromey  <tromey@adacore.com>
+2020-12-09  Simon Marchi  <simon.marchi@efficios.com>
 
-	* fbsd-tdep.c (fbsd_core_info_proc_status): Cast result of
-	bfd_get_signed_8.
+	PR 26875, PR 26901
+	* gdbtypes.c (get_discrete_low_bound): Make non-static.
+	(get_discrete_high_bound): Make non-static.
+	* gdbtypes.h (get_discrete_low_bound): New declaration.
+	(get_discrete_high_bound): New declaration.
+	* valarith.c (value_subscript): Only fetch high bound if
+	necessary.
 
-2019-12-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+2020-12-09  Simon Marchi  <simon.marchi@efficios.com>
 
-	* NEWS: Document -raw-values option and the related setting commands.
-	* printcmd.c (print_command_parse_format): Do not set opts->raw off,
-	only set it on when /r is given.
-	* valprint.c (value_print_option_defs): New element raw-values.
-	* Makefile.in: Add the new file.
+	* gdbtypes.c (get_discrete_bounds): Implement with
+	get_discrete_low_bound and get_discrete_high_bound.
+	(get_discrete_low_bound): New.
+	(get_discrete_high_bound): New.
 
-2019-12-10  Christian Biesinger  <cbiesinger@google.com>
+2020-12-09  Simon Marchi  <simon.marchi@efficios.com>
 
-	* gdbsupport/safe-strerror.c: Supress the unused function warning
-	for select_strerror_r.
+	* gdbtypes.h (get_discrete_bounds): Return bool, adjust all
+	callers.
+	* gdbtypes.c (get_discrete_bounds): Return bool.
 
-2019-12-10  Christian Biesinger  <cbiesinger@google.com>
+2020-12-09  Simon Marchi  <simon.marchi@efficios.com>
 
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* gdbsupport/agent.c (gdb_connect_sync_socket): Call
-	safe_strerror instead of strerror.
-	* gdbsupport/common.m4: Don't check for strerror.
-	* gdbsupport/safe-strerror.c: Support both the glibc version
-	of strerror_r and the XSI version.
-
-2019-12-10  Tom Tromey  <tromey@adacore.com>
-
-	* ada-typeprint.c (print_choices): Use a single "?".
-	(print_variant_part): Print "?" if the discriminant name
-	is not known.
-
-2019-12-10  George Barrett  <bob@bob131.so>
-
-	Fix scripted probe breakpoints.
-	* breakpoint.c (tracepoint_probe_breakpoint_ops): Move
-	declaration forward.
-	(breakpoint_ops_for_event_location_type)
-	(breakpoint_ops_for_event_location): Add function definitions.
-	(break_command_1, trace_command): Use
-	breakpoint_ops_for_event_location.
-	* breakpoint.h (breakpoint_ops_for_event_location): Add function
-	declarations.
-	* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Use
-	breakpoint_ops_for_event_location.
-	* python/py-breakpoint.c (bppy_init): Use
-	breakpoint_ops_for_event_location.
-
-2019-12-09  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
-
-	* gdbtypes.c (rank_one_type): Return INCOMPATIBLE_TYPE_BADNESS
-	when ranking an lvalue argument for an rvalue parameter.
-
-2019-12-08  Wataru Ashihara  <wataash@wataash.com>
-
-	* darwin-nat.c (darwin_nat_target::create_inferior): Fix
-	template argument for scoped_restore_tmpl from bool to int.
-
-2019-12-07  Keith Seitz  <keiths@redhat.com>
-
-	* build-id.c (build_id_bfd_get): Permit bfd_core, too.
-	(build_id_to_debug_bfd): Make static, rewriting to use
-	build_id_to_bfd_suffix.
-	(build_id_to_bfd_suffix): Copy of build_id_to_debug_bfd,
-	adding `suffix' parameter. Append SUFFIX to file names
-	when searching for matching files.
-	(build_id_to_debug_bfd): Use build_id_to_bfd_suffix.
-	(build_id_to_exec_bfd): Likewise.
-	* build-id.h (build_id_to_debug_bfd): Clarify that function
-	searches for BFD of debug info file.
-	(build_id_to_exec_bfd): Declare.
-	* corelow.c: Include build-id.h.
-	(locate_exec_from_corefile_build_id): New function.
-	(core_target_open): If no executable BFD is found,
-	search for a core file BFD using build-id.
-
-2019-12-06  Christian Biesinger  <cbiesinger@google.com>
-
-	* bcache.c: Put in namespace gdb.
-	* bcache.h: Likewise.
-	* gdbtypes.c (check_types_worklist): Update.
-	(types_deeply_equal): Update.
-	* macrotab.c (struct macro_table) <bcache>: Update.
-	(new_macro_table): Update.
-	* macrotab.h (struct bcache): Put this forward declaration
-	inside namespace gdb.
-	(new_macro_table): Update.
-	* objfiles.h (struct objfile_per_bfd_storage) <filename_cache>:
-	Update.
-	<macro_cache>: Update.
-	* psymtab.h: (psymtab_storage) <psymbol_cache>: Update.
+	* ada-lang.c (ada_value_slice_from_ptr): Adjust.
+	(ada_value_slice): Adjust.
+	(pos_atr): Adjust.
+	* gdbtypes.c (get_discrete_bounds): Adjust.
+	(discrete_position): Return optional.
+	* gdbtypes.h (discrete_position): Return optional.
 
-2019-12-06  Tom de Vries  <tdevries@suse.de>
-
-	PR symtab/24971
-	* block.c (best_symbol, better_symbol): New function.
-	(block_lookup_symbol_primary, block_lookup_symbol): Prefer def over
-	decl.
+2020-12-06  Giancarlo Frix  <gfrix@rocketsoftware.com>  (tiny change)
 
-2019-12-06  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	PR breakpoints/27009
+	* s390-tdep.h (op_bc): Correct BC opcode value.
 
-	* gdbtypes.h: Define the REFERENCE_SEE_THROUGH_BADNESS value.
-	* gdbtypes.c (rank_one_type): Use REFERENCE_SEE_THROUGH_BADNESS
-	for ranking see-through reference cases.
-
-2019-12-06  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-	* stack.c (faas_command): Check a command is provided.
-	* thread.c (taas_command, tfaas_command): Likewise.
-
-2019-12-05  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-	* inferior.c (prune_inferiors):  Only call delete_inferior,
-	Do not modify the inferior list.
-
-2019-12-05  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* c-exp.y: Update calls to lookup_typename,
-	lookup_signed_typename and lookup_unsigned_typename.
-	* c-lang.c (evaluate_subexp_c): Likewise.
-	* cp-namespace.c (cp_lookup_symbol_imports_or_template):
-	Likewise.
-	* eval.c (binop_promote): Likewise.
-	* gdbtypes.c (lookup_typename): Remove gdbarch parameter.
-	(lookup_unsigned_typename): Likewise.
-	(lookup_signed_typename): Likewise.
-	* gdbtypes.h (lookup_unsigned_typename): Likewise.
-	(lookup_signed_typename): Likewise.
-	(lookup_typename): Likewise.
-	* guile/scm-type.c (tyscm_lookup_typename): Update calls to
-	lookup_typename, lookup_signed_typename,
-	lookup_unsigned_typename.
-	* m2-exp.y: Likewise.
-	* printcmd.c (printf_wide_c_string): Likewise.
-	(ui_printf): Likewise.
-	* python/py-type.c (typy_lookup_typename): Likewise.
-	* python/py-xmethods.c (python_xmethod_worker::invoke):
-	Likewise.
-	* rust-exp.y: Likewise.
+2020-12-04  Shahab Vahedi  <shahab@synopsys.com>
 
-2019-12-04  Christian Biesinger  <cbiesinger@google.com>
+	PR tdep/27015
+	* arc-linux-tdep.c (collect_register): Populate "eret" by
+	"pc" value from the regcache when asked for "pc" value.
 
-	* configure.nat (obsd64): Add missing files x86-nat.o and
-	nat/x86-dregs.o.
+2020-11-29  Hannes Domani  <ssbssa@yahoo.de>
 
-2019-12-04  Tom Tromey  <tom@tromey.com>
+	PR tui/26973
+	* tui/tui-layout.c (tui_apply_current_layout): Don't delete the
+	static locator win info.
 
-	* valprint.c (val_print_string): Use metadata_style.
-	* go-valprint.c (print_go_string): Use metadata style.
-	* p-valprint.c (pascal_object_print_static_field): Use metadata
-	style.
-	* cp-valprint.c (cp_print_static_field): Use metadata style.
+2020-11-06  Romain Geissler  <romain.geissler@amadeus.com>
 
-2019-12-04  Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Chris January  <chris.january@arm.com>
+	PR python/26832
+	* configure: Regenerate.
+	* configure.ac: Check for python modules ctypes instead of
+	itertools.
 
-	* f-exp.y (COMPLEX_KEYWORD, SINGLE, DOUBLE, PRECISION): New
-	tokens.
-	(typebase): New patterns for complex, single/double precision, and
-	single/double complex.
-	(f77_keywords): Change token for complex keyword, and add single,
-	double, and precision keywords.
+2020-10-24  Joel Brobecker  <brobecker@adacore.com>
 
-2019-12-04  Simon Marchi  <simon.marchi@polymtl.ca>
+	* version.in: Set GDB version number to 10.1.90.DATE-git.
 
-	* avr-tdep.c (_initialize_avr_tdep): Improve help of command
-	"info io_registers".
+2020-10-24  Joel Brobecker  <brobecker@adacore.com>
 
-2019-12-04  Simon Marchi  <simon.marchi@polymtl.ca>
+	GDB 10.1 released.
 
-	* regcache.c (cooked_read_test): Initialize thread list of
-	mock_inferior.
+2020-10-24  Joel Brobecker  <brobecker@adacore.com>
 
-2019-12-04  Simon Marchi  <simon.marchi@polymtl.ca>
+	* version.in: Set GDB version number to 10.1.
 
-	* aarch64-linux-tdep.c: Remove includes.
+2020-10-22  Hannes Domani  <ssbssa@yahoo.de>
 
-2019-12-04  Simon Marchi  <simon.marchi@polymtl.ca>
+	* gdbtypes.c (init_complex_type): Check target type name.
 
-	* aarch64-tdep.c: Remove includes.
+2020-10-22  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-12-04  Simon Marchi  <simon.marchi@efficios.com>
+	PR gdb/26693
+	* dwarf2/read.c (load_full_comp_unit): Add existing_cu
+	parameter.
+	(load_cu): Pass existing CU.
+	(process_imported_unit_die): Likewise.
+	(follow_die_offset): Likewise.
 
-	* filtered-iterator.h (filtered_iterator) <operator==,
-	operator!=>: Compare wrapped iterators, not wrapped pointers.
-	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
-	unittests/filtered_iterator-selftests.c.
-	* unittests/filtered_iterator-selftests.c: New file.
+2020-10-14  Mihails Strasuns  <mihails.strasuns@intel.com>
 
-2019-12-04  Tom Tromey  <tromey@adacore.com>
+	* breakpoint.c (handle_jit_event): Add an argument, change how
+	`jit_event_handler` is called.
 
-	* gdbtypes.c (create_range_type): Inherit endianity
-	from base type.
+2020-10-13  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-12-04  Tom Tromey  <tromey@adacore.com>
+	PR gdb/26642
+	* infrun.c (do_target_wait_1): Clear TARGET_WNOHANG if the
+	target can't do async.
+	* target.c (target_wait): Assert that we don't pass
+	TARGET_WNOHANG to a target that can't async.
 
-	* ada-lang.c (decode_constrained_packed_array)
-	(ada_value_assign, value_assign_to_component): Update.
-	* dwarf2loc.c (rw_pieced_value, access_memory)
-	(dwarf2_compile_expr_to_ax): Update.
-	* dwarf2read.c (dwarf2_add_field): Update.
-	* eval.c (evaluate_subexp_standard): Update.
-	* gdbarch.c, gdbarch.h: Rebuild.
-	* gdbarch.sh (bits_big_endian): Remove.
-	* gdbtypes.h (union field_location): Update comment.
-	* target-descriptions.c (make_gdb_type): Update.
-	* valarith.c (value_bit_index): Update.
-	* value.c (struct value) <bitpos>: Update comment.
-	(unpack_bits_as_long, modify_field): Update.
-	* value.h (value_bitpos): Update comment.
-
-2019-12-04  Tom Tromey  <tromey@adacore.com>
-
-	* gdbtypes.c (type_byte_order): Move earlier.  Assert for unknown
-	endian-ness.
-
-2019-12-04  Tom Tromey  <tromey@adacore.com>
-
-	* dwarf2read.c (dwarf2_init_float_type)
-	(dwarf2_init_complex_target_type): Add byte_order parameter.
-	(read_base_type): Compute byte order earlier.
-	* gdbtypes.c (init_float_type): Add byte_order parameter.
-	* gdbtypes.h (init_float_type): Add byte_order parameter.
-
-2019-12-04  Tom Tromey  <tromey@adacore.com>
-
-	* unittests/tui-selftests.c: Conditionally include tui-winsource.h.
-
-2019-12-04  Tom Tromey  <tromey@adacore.com>
-
-	* dwarf2read.c (process_structure_scope): Initialize
-	"discr_offset".
-
-2019-12-04  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* mi/mi-symbol-cmds.c (mi_symbol_info): Take extra parameter, and
-	add it into the search spec.
-	(parse_max_results_option): New function.
-	(mi_info_functions_or_variables): Parse -max-results flag and pass
-	it to mi_symbol_info.
-	(mi_cmd_symbol_info_modules): Likewise.
-	(mi_cmd_symbol_info_types): Likewise.
-	* symtab.c (global_symbol_searcher::add_matching_symbols): Change
-	return type to bool, change result container into a set, and don't
-	add new results if we have enough already.
-	(global_symbol_searcher::add_matching_msymbols): Change return
-	type to bool, and don't add new results if we have enough already.
-	(sort_search_symbols_remove_dups): Delete.
-	(global_symbol_searcher::search): Early exit from search loop when
-	we have enough results.  Use a std::set to collect the results
-	from calling add_matching_symbols.
-	* symtab.h (global_symbol_searcher) <set_max_seach_results>: New
-	member function.
-	(global_symbol_searcher) <m_max_search_results>: New member
-	variable.
-	(global_symbol_searcher) <add_matching_symbols>: Update header
-	comment and change return type to bool.
-	(global_symbol_searcher) <add_matching_msymbols>: Update header
-	comment and change return type to bool.
+2020-10-08  Shahab Vahedi  <shahab@synopsys.com>
 
-2019-12-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* NEWS: Mention ARC support in GDBserver.
 
-	* symtab.c (symbol_search::compare_search_syms): Update header
-	comment.
-	(global_symbol_searcher::is_suitable_msymbol): New function.
-	(global_symbol_searcher::expand_symtabs): New function.
-	(global_symbol_searcher::add_matching_symbols): New function.
-	(global_symbol_searcher::add_matching_msymbols): New function.
-	(global_symbol_searcher::search): Move most of the content
-	into the new functions above, and call them as needed.
-	* symtab.h (global_symbol_searcher) <expand_symtabs>: New member
-	function.
-	(global_symbol_searcher) <add_matching_symbols>: New member
-	function.
-	(global_symbol_searcher) <add_matching_msymbols>: New member
-	function.
-	(global_symbol_searcher) <is_suitable_msymbol>: New member
-	function.
+2020-10-07  Anton Kolesov  <anton.kolesov@synopsys.com>
 
-2019-12-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* arc-linux-tdep.h: New file.
+	* arc-linux-tdep.c (arc_linux_core_reg_offsets,
+	arc_linux_supply_gregset, arc_linux_supply_v2_regset,
+	arc_linux_collect_gregset, arc_linux_collect_v2_regset,
+	arc_linux_gregset, arc_linux_v2_regset,
+	arc_linux_iterate_over_regset_sections,
+	arc_linux_core_read_description): Implement.
+	(arc_linux_init_osabi): Set iterate_over_regset_sections.
+	* arc-tdep.h (ARC_OFFSET_NO_REGISTER): Declare.
+	(arc_gdbarch_features_create): Add.
+	* arc-tdep.c (arc_gdbarch_features_create): Not static anymore.
 
-	* mi/mi-cmds.c (mi_cmds): Add -symbol-info-module-functions and
-	-symbol-info-module-variables entries.
-	* mi/mi-cmds.h (mi_cmd_symbol_info_module_functions): Declare.
-	(mi_cmd_symbol_info_module_variables): Declare.
-	* mi/mi-symbol-cmds.c
-	(module_symbol_search_iterator): New typedef.
-	(output_module_symbols_in_single_module_and_file): New function.
-	(output_module_symbols_in_single_module): New function.
-	(mi_info_module_functions_or_variables): New function.
-	(mi_cmd_symbol_info_module_functions): New function.
-	(mi_cmd_symbol_info_module_variables): New function.
-	* NEWS: Mention new MI command.
-
-2019-12-03  Christian Biesinger  <cbiesinger@google.com>
-
-	* bcache.c (hash): Remove.
-	(hash_continue): Remove.
-	* bcache.h (hash): Remove.
-	(hash_continue): Remove.
-	(struct bcache) <ctor>: Update.
-	* psymtab.c (psymbol_hash): Update.
-	* stabsread.c (hashname): Update.
-	* utils.h (fast_hash): Add an argument for a start value,
-	defaulting to zero.
-
-2019-12-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-	* symtab.c (symbol_cache_clear_slot):  Move close to cleared type.
-	(destroy_block_symbol_cache): New function.
-	(symbol_cache:~symbol_cache) Call destroy_block_symbol_cache.
-	(resize_symbol_cache): Likewise.
-
-2019-12-02  Tom Tromey  <tom@tromey.com>
-
-	* unittests/tui-selftests.c (run_tests): Make conditional.
-	(_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.
+2020-10-07  Shahab Vahedi  <shahab@synopsys.com>
 
-2019-12-01  Tom Tromey  <tom@tromey.com>
+	* arch/arc.h: Rename "arc_gdbarch_features" to
+	"arc_arch_features".
+	* arc-tdep.h: Likewise.
+	* arc-tdep.c: Likewise.
 
-	* 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.
+2020-09-28  Gareth Rees <grees@undo.io>  (tiny change)
 
-2019-11-30  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	PR python/26586
+	* cli/cli-script.c (execute_control_commands): don't set
+	instream to nullptr here as this breaks the from_tty argument
+	to gdb.execute in Python.
+	(execute_user_command): set instream to nullptr here instead.
 
-	* 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.
+2020-09-25  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-2019-11-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	* breakpoint.c (commands_command_1): Make a copy of the 'arg'
+	argument.
 
-	* valops.c (find_oload_champ): Improve debug output.
+2020-09-24  Tom Tromey  <tromey@adacore.com>
 
-2019-11-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	PR tui/26638:
+	* tui/tui-stack.h (struct tui_locator_window) <can_focus>: New
+	method.
+	* tui/tui-data.h (struct tui_win_info) <can_focus>: New method.
+	* tui/tui-data.c (tui_next_win): Exclude non-focusable windows.
+	(tui_prev_win): Rewrite.
 
-	* valops.c (find_oload_champ): Print part of debug messages
-	before the badness vector is std::move'd.
+2020-09-23  Hannes Domani  <ssbssa@yahoo.de>
 
-2019-11-28  Tom Tromey  <tom@tromey.com>
+	* nat/windows-nat.c (handle_exception): Handle 64bit breakpoints
+	in WOW64 processes as SIGINT.
+	* nat/windows-nat.h: Make wow64_process a shared variable.
+	* windows-nat.c: Remove static wow64_process variable.
 
-	* value.c (creal_internal_fn): Fix comment.
+2020-09-18  Victor Collod  <vcollod@nvidia.com>
 
-2019-11-28  Tom Tromey  <tom@tromey.com>
+	PR gdb/26635
+	* i386-tdep.c (i386_skip_endbr): Add a helper function to skip endbr.
+	(i386_analyze_prologue): Call i386_skip_endbr.
 
-	* gdbtypes.h (struct range_bounds) <flag_upper_bound_is_count,
-	flag_bound_evaluated>: Now unsigned.
+2020-09-18  Pedro Alves  <pedro@palves.net>
 
-2019-11-28  Tom Tromey  <tom@tromey.com>
+	PR gdb/26631
+	* thread.c (thread_find_command): Switch inferior before calling
+	target methods.
 
-	* guile/guile-internal.h (vlscm_scm_from_value_unsafe): Don't
-	declare.
+2020-09-16  Tom Tromey  <tromey@adacore.com>
 
-2019-11-28  Mihails Strasuns  <mihails.strasuns@intel.com>
+	PR gdb/26598:
+	* infrun.c (fill_in_stop_func): Use find_pc_partial_function_sym.
 
-	* 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.
+2020-09-14  Fredrik Hederstierna  <fredrik.hederstierna@verisure.com>
+            Adam Renquinha <arenquinha@cimeq.qc.ca>
 
-2019-11-26  Tom Tromey  <tom@tromey.com>
+        * arm-tdep.c (arm_m_exception_cache): Try use correct stack
+        pointer and stack frame offset when unwinding.
 
-	* 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.
+2020-09-13  Joel Brobecker  <brobecker@adacore.com>
 
-2019-11-26  Tom Tromey  <tom@tromey.com>
+	* version.in: Set GDB version number to 10.0.90.DATE-git.
 
-	* python/py-cmd.c (cmdpy_destroyer): Don't free "doc".
-	(cmdpy_init): Set "doc_allocated".
+2020-09-13  Joel Brobecker  <brobecker@adacore.com>
 
-2019-11-26  Tom Tromey  <tom@tromey.com>
+	GDB 10.0.90 released.
 
-	* 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.
+2020-09-13  Joel Brobecker  <brobecker@adacore.com>
 
-2019-11-26  Tom Tromey  <tom@tromey.com>
+	* version.in: Set GDB version number to 10.0.90.
 
-	* 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.
+2020-09-13  Joel Brobecker  <brobecker@adacore.com>
 
-2019-11-26  Tom Tromey  <tom@tromey.com>
+	* NEWS: Change "Changes since GDB 9" to "Changes in GDB 10".
 
-	* 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.
+2020-09-13  Joel Brobecker  <brobecker@adacore.com>
 
-2019-11-26  Christian Biesinger  <cbiesinger@google.com>
-	    Tom Tromey  <tom@tromey.com>
+	GDB 10 branch created (8087c3fa8b5d695e3e29e69d70d0b35ec902ac59):
+	* version.in: Bump version to 10.0.90.DATE-git.
 
-	* 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.
+2020-09-12  Joel Brobecker  <brobecker@adacore.com>
 
-2019-11-26  Christian Biesinger  <cbiesinger@google.com>
-	    Tom Tromey  <tom@tromey.com>
+	* infrun.c (namespace selftests): Only define #if GDB_SELF_TEST.
 
-	* 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.
+2020-09-11  Moritz Riesterer  <moritz.riesterer@intel.com>
+	    Felix Willgerodt  <Felix.Willgerodt@intel.com>
 
-2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+	* gdbarch.sh: Added bfloat16 type.
+	* gdbarch.c: Regenerated.
+	* gdbarch.h: Regenerated.
+	* gdbtypes.c (floatformats_bfloat16): New struct.
+	(gdbtypes_post_init): Add builtin_bfloat16.
+	* gdbtypes.h (struct builtin_type) <builtin_bfloat16>: New member.
+	(floatformats_bfloat16): New struct.
+	* i386-tdep.c (i386_zmm_type): Add field "v32_bfloat16"
+	(i386_ymm_type): Add field "v16_bfloat16"
+	(i386_gdbarch_init): Add set_gdbarch_bfloat16_format.
+	* target-descriptions.c (make_gdb_type): Add case TDESC_TYPE_BFLOAT16.
+	* gdbsupport/tdesc.cc (tdesc_predefined_types): New member bfloat16.
+	* gdbsupport/tdesc.h (tdesc_type_kind): New member TDESC_TYPE_BFLOAT16.
+	* features/i386/64bit-avx512.xml: Add bfloat16 type.
+	* features/i386/64bit-avx512.c: Regenerated.
+	* features/i386/64bit-sse.xml: Add bfloat16 type.
+	* features/i386/64bit-sse.c: Regenerated.
 
-	* sparc-nat.c (sparc_xfer_wcookie): Sync declaration with
-	definition.
+2020-09-11  Felix Willgerodt  <felix.willgerodt@intel.com>
 
-2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+	* i386-tdep.c (i386_zmm_type): Fix field names.
+	(i386_ymm_type): Fix field names.
 
-	* remote-sim.c (simulator_command): Make static, remove
-	declaration.
+2020-09-11  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+	* breakpoint.c: Fix typo in the help message of the
+	"set breakpoint condition-evaluation" command.
 
-	* 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.
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
 
-2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+	* nbsd-nat.c: Include "nat/netbsd-nat.h".
+	* (nbsd_nat_target::pid_to_exec_file)
+	(nbsd_nat_target::thread_alive, nbsd_nat_target::thread_name)
+	(nbsd_nat_target::post_startup_inferior)
+	(nbsd_nat_target::post_attach, nbsd_nat_target::xfer_partial)
+	(nbsd_add_threads): Switch local code to common gdb/nat functions.
+	* (nbsd_pid_to_cmdline): Call sysctl from the global namespace.
+	* (nbsd_thread_lister): Remove.
 
-	* completer.c (set_gdb_completion_word_break_characters):
-	Remove.
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
 
-2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+	* fork-inferior.c (startup_inferior): Avoid double free.
 
-	* dwarf-index-write.c: Include dwarf-index-write.h.
-	* mi/mi-interp.c: Include mi/mi-interp.h.
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
 
-2019-11-26  Simon Marchi  <simon.marchi@efficios.com>
+	* netbsd-nat.h (netbsd_nat::qxfer_siginfo): Add.
+	* netbsd-nat.c (netbsd_nat::qxfer_siginfo): Likewise.
 
-	* 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.
-
-2019-11-25  Christian Biesinger  <cbiesinger@google.com>
-
-	* solib.c (solib_find_1): Change int to bool.
-	(exec_file_find): Change int to bool.
-	(solib_find): Change int to bool.
-	(solib_read_symbols): Change int to bool.
-	(solib_used): Change int to bool.
-	(solib_add): Change int to bool.
-	(info_sharedlibrary_command): Change int to bool.
-	(solib_contains_address_p): Change int to bool.
-	(solib_keep_data_in_core): Change int to bool.
-	(in_solib_dynsym_resolve_code): Change int to bool.
-	(reload_shared_libraries_1): Change int to bool.
-	(gdb_sysroot_changed): Change int to bool.
-	* solib.h (solib_read_symbols): Change int to bool.
-	(solib_contains_address_p): Change int to bool.
-	(solib_keep_data_in_core): Change int to bool.
-	(in_solib_dynsym_resolve_code): Change int to bool.
-	(libpthread_name_p): Change int to bool.
-
-2019-11-25  Luis Machado  <luis.machado@linaro.org>
-
-	* NEWS (New Commands): Mention "set debug remote-packet-max-chars".
-	* remote.c (REMOTE_DEBUG_MAX_CHAR): Remove.
-	(remote_packet_max_chars): New static global.
-	(show_remote_packet_max_chars): New function.
-	(remote_target::putpkt_binary): Adjust to use new
-	remote_packet_max_chars option.
-	(remote_target::getpkt_or_notif_sane_1): Likewise.
-	(_initialize_remote): Register new remote-packet-max-chars option.
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
 
-2019-11-24  Simon Marchi  <simon.marchi@efficios.com>
+	* netbsd-nat.h (netbsd_nat::enable_proc_events): Add.
+	* netbsd-nat.c: Include <sys/ptrace.h>.
+	* (netbsd_nat::enable_proc_events): Add.
 
-	* m68k-linux-nat.c: Include gdbarch.h.
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
 
-2019-11-24  Tom Tromey  <tom@tromey.com>
+	* netbsd-nat.h: Include "gdbsupport/function-view.h".
+	* (netbsd_nat::thread_alive, netbsd_nat::thread_name)
+	(netbsd_nat::for_each_thread): Add.
+	* netbsd-nat.c: Include "gdbsupport/common-defs.h" and
+	"gdbsupport/common-debug.h".
+	* (netbsd_nat::netbsd_thread_lister)
+	(netbsd_nat::thread_alive, netbsd_nat::thread_name)
+	(netbsd_nat::for_each_thread): Add.
 
-	* symfile.c (read_symbols): Update.
-	* psymtab.c (require_partial_symbols): Change type of "verbose" to
-	bool.
-	(psym_map_symtabs_matching_filename, find_pc_sect_psymtab)
-	(psym_lookup_symbol, psym_find_last_source_symtab)
-	(psym_forget_cached_source_info, psym_print_stats)
-	(psym_expand_symtabs_for_function, psym_expand_all_symtabs)
-	(psym_expand_symtabs_with_fullname, psym_map_symbol_filenames)
-	(psym_map_matching_symbols, psym_expand_symtabs_matching)
-	(psym_find_compunit_symtab_by_address)
-	(maintenance_print_psymbols, maintenance_info_psymtabs)
-	(maintenance_check_psymtabs): Update.
-	* psymtab.h (require_partial_symbols): Change type of "verbose" to
-	bool.
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
 
-2019-11-22  Tom Tromey  <tom@tromey.com>
+	* netbsd-nat.h: Include <unistd.h>.
+	* (netbsd_nat::pid_to_exec_file): Add.
+	* netbsd-nat.c: Include <sys/types.h> and <sys/sysctl.h>.
+	* (netbsd_nat::pid_to_exec_file) Add.
 
-	* observable.h: Update comments.
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
 
-2019-11-22  Tom Tromey  <tromey@adacore.com>
+	* configure.nat (NATDEPFILES): Add nat/netbsd-nat.o when needed.
 
-	* ada-tasks.c (ada_task_is_alive): Make parameter const.
-	(print_ada_task_info): Don't try to fetch thread id if task is not
-	alive.
-
-2019-11-22  Christian Biesinger  <cbiesinger@google.com>
-
-	* ada-exp.y: Update.
-	* ada-lang.c (sort_choices): Update.
-	(ada_print_symbol_signature): Update.
-	(resolve_subexp): Update.
-	(ada_parse_renaming): Update.
-	(ada_read_renaming_var_value): Update.
-	(lesseq_defined_than): Update.
-	(remove_extra_symbols): Update.
-	(remove_irrelevant_renamings): Update.
-	(ada_add_block_symbols): Update.
-	(ada_collect_symbol_completion_matches): Update.
-	(ada_is_renaming_symbol): Update.
-	(aggregate_assign_from_choices): Update.
-	(ada_evaluate_subexp): Update.
-	(ada_has_this_exception_support): Update.
-	(ada_is_non_standard_exception_sym): Update.
-	(ada_add_exceptions_from_frame): Update.
-	(ada_add_global_exceptions): Update.
-	(ada_print_subexp): Update.
-	* ax-gdb.c (gen_var_ref): Update.
-	(gen_maybe_namespace_elt): Update.
-	(gen_expr_for_cast): Update.
-	(gen_expr): Update.
-	* block.h: Update.
-	* blockframe.c (find_pc_partial_function): Update.
-	* breakpoint.c (print_breakpoint_location): Update.
-	(update_static_tracepoint): Update.
-	* btrace.c (ftrace_print_function_name): Update.
-	(ftrace_function_switched): Update.
-	* buildsym.c (find_symbol_in_list): Update.
-	* c-exp.y: Update.
-	* c-typeprint.c (c_print_typedef): Update.
-	(c_type_print_template_args): Update.
-	* cli/cli-cmds.c (edit_command): Update.
-	(list_command): Update.
-	(print_sal_location): Update.
-	* coffread.c (patch_opaque_types): Update.
-	(process_coff_symbol): Update.
-	(coff_read_enum_type): Update.
-	* compile/compile-c-symbols.c (c_symbol_substitution_name): Update.
-	(convert_one_symbol): Update.
-	(hash_symname): Update.
-	(eq_symname): Update.
-	* compile/compile-cplus-symbols.c (convert_one_symbol): Update.
-	* compile/compile-cplus-types.c (debug_print_scope): Update.
-	* compile/compile-loc2c.c (do_compile_dwarf_expr_to_c): Update.
-	* compile/compile-object-load.c (get_out_value_type): Update.
-	* cp-namespace.c (cp_scan_for_anonymous_namespaces): Update.
-	(search_symbol_list): Update.
-	(cp_lookup_symbol_imports_or_template): Update.
-	* cp-support.c (overload_list_add_symbol): Update.
-	* ctfread.c (psymtab_to_symtab): Update.
-	* dbxread.c (cp_set_block_scope): Update.
-	* dictionary.c (iter_match_first_hashed): Update.
-	(iter_match_next_hashed): Update.
-	(insert_symbol_hashed): Update.
-	(iter_match_next_linear): Update.
-	* dictionary.h: Update.
-	* dwarf2loc.c (func_get_frame_base_dwarf_block): Update.
-	(locexpr_describe_location_piece): Update.
-	(locexpr_describe_location_1): Update.
-	(locexpr_generate_c_location): Update.
-	(loclist_describe_location): Update.
-	(loclist_generate_c_location): Update.
-	* dwarf2read.c (dw2_debug_names_lookup_symbol): Update.
-	(read_func_scope): Update.
-	(process_enumeration_scope): Update.
-	(new_symbol): Update.
-	(dwarf2_const_value): Update.
-	(dwarf2_symbol_mark_computed): Update.
-	* eval.c (evaluate_funcall): Update.
-	(evaluate_subexp_standard): Update.
-	* expprint.c (print_subexp_standard): Update.
-	(dump_subexp_body_standard): Update.
-	* f-valprint.c (info_common_command_for_block): Update.
-	* findvar.c (get_hosting_frame): Update.
-	(default_read_var_value): Update.
-	* go-lang.c (go_symbol_package_name): Update.
-	* guile/scm-block.c (bkscm_print_block_smob): Update.
-	* guile/scm-symbol.c (syscm_print_symbol_smob): Update.
-	(gdbscm_symbol_name): Update.
-	(gdbscm_symbol_linkage_name): Update.
-	(gdbscm_symbol_print_name): Update.
-	* infcall.c (get_function_name): Update.
-	* infcmd.c (jump_command): Update.
-	(finish_command): Update.
-	* infrun.c (insert_exception_resume_breakpoint): Update.
-	* linespec.c (canonicalize_linespec): Update.
-	(create_sals_line_offset): Update.
-	(convert_linespec_to_sals): Update.
-	(complete_label): Update.
-	(find_label_symbols_in_block): Update.
-	* m2-typeprint.c (m2_print_typedef): Update.
-	* mdebugread.c (mdebug_reg_to_regnum): Update.
-	(parse_symbol): Update.
-	(mylookup_symbol): Update.
-	* mi/mi-cmd-stack.c (list_arg_or_local): Update.
-	(list_args_or_locals): Update.
-	* objc-lang.c (compare_selectors): Update.
-	(info_selectors_command): Update.
-	(compare_classes): Update.
-	(info_classes_command): Update.
-	(find_imps): Update.
-	* p-typeprint.c (pascal_print_typedef): Update.
-	* printcmd.c (build_address_symbolic): Update.
-	(info_address_command): Update.
-	(print_variable_and_value): Update.
-	* python/py-framefilter.c (extract_sym): Update.
-	(py_print_single_arg): Update.
-	* python/py-symbol.c (sympy_str): Update.
-	(sympy_get_name): Update.
-	(sympy_get_linkage_name): Update.
-	* python/python.c (gdbpy_rbreak): Update.
-	* record-btrace.c (btrace_get_bfun_name): Update.
-	(btrace_call_history): Update.
-	* rust-lang.c (rust_print_typedef): Update.
-	* solib-frv.c (frv_fdpic_find_canonical_descriptor): Update.
-	* stabsread.c (stab_reg_to_regnum): Update.
-	(define_symbol): Update.
-	(read_enum_type): Update.
-	(common_block_end): Update.
-	(cleanup_undefined_types_1): Update.
-	(scan_file_globals): Update.
-	* stack.c (print_frame_arg): Update.
-	(print_frame_args): Update.
-	(find_frame_funname): Update.
-	(info_frame_command_core): Update.
-	(iterate_over_block_locals): Update.
-	(print_block_frame_labels): Update.
-	(do_print_variable_and_value): Update.
-	(iterate_over_block_arg_vars): Update.
-	(return_command): Update.
-	* symmisc.c (dump_symtab_1): Update.
-	(print_symbol): Update.
-	* symtab.c (eq_symbol_entry): Update.
-	(symbol_cache_dump): Update.
-	(lookup_language_this): Update.
-	(find_pc_sect_line): Update.
-	(skip_prologue_sal): Update.
-	(symbol_search::compare_search_syms): Update.
-	(treg_matches_sym_type_name): Update.
-	(search_symbols): Update.
-	(print_symbol_info): Update.
-	(rbreak_command): Update.
-	(completion_list_add_symbol): Update.
-	(find_gnu_ifunc): Update.
-	(get_symbol_address): Update.
-	(search_module_symbols): Update.
-	(info_module_subcommand): Update.
-	* symtab.h (SYMBOL_NATURAL_NAME): Remove.
-	(SYMBOL_LINKAGE_NAME): Remove.
-	(SYMBOL_DEMANGLED_NAME): Remove.
-	(SYMBOL_PRINT_NAME): Remove.
-	(SYMBOL_SEARCH_NAME): Remove.
-	* tracepoint.c (set_traceframe_context): Update.
-	(validate_actionline): Update.
-	(collection_list::collect_symbol): Update.
-	(encode_actions_1): Update.
-	(info_scope_command): Update.
-	(print_one_static_tracepoint_marker): Update.
-	* typeprint.c (typedef_hash_table::add_template_parameters): Update.
-	* valops.c (address_of_variable): Update.
-	(find_overload_match): Update.
-	(find_oload_champ): Update.
-
-2019-11-22  Christian Biesinger  <cbiesinger@google.com>
-
-	* ada-lang.c (ada_lookup_simple_minsym): Update.
-	(ada_collect_symbol_completion_matches): Update.
-	* ada-tasks.c (read_atcb): Update.
-	* amd64-windows-tdep.c (amd64_skip_main_prologue): Update.
-	(amd64_windows_skip_trampoline_code): Update.
-	* arm-tdep.c (skip_prologue_function): Update.
-	(arm_skip_stack_protector): Update.
-	* arm-wince-tdep.c (arm_pe_skip_trampoline_code): Update.
-	(arm_wince_skip_main_prologue): Update.
-	* ax-gdb.c (gen_expr): Update.
-	* block.c (call_site_for_pc): Update.
-	* blockframe.c (find_pc_partial_function): Update.
-	* breakpoint.c (set_breakpoint_location_function): Update.
-	* btrace.c (ftrace_print_function_name): Update.
-	(ftrace_function_switched): Update.
-	* c-valprint.c (print_unpacked_pointer): Update.
-	* coffread.c (coff_symfile_read): Update.
-	* compile/compile-c-symbols.c (convert_symbol_bmsym): Update.
-	* compile/compile-cplus-symbols.c (convert_symbol_bmsym): Update.
-	* dwarf-index-write.c (write_psymbols): Update.
-	* dwarf2loc.c (call_site_to_target_addr): Update.
-	(func_verify_no_selftailcall): Update.
-	(tailcall_dump): Update.
-	(call_site_find_chain_1): Update.
-	(dwarf_expr_reg_to_entry_parameter): Update.
-	* elfread.c (elf_gnu_ifunc_record_cache): Update.
-	* eval.c (evaluate_funcall): Update.
-	(evaluate_subexp_standard): Update.
-	(evaluate_subexp_for_sizeof): Update.
-	* expprint.c (print_subexp_standard): Update.
-	(dump_subexp_body_standard): Update.
-	* frame.c (get_prev_frame_always_1): Update.
-	* frv-tdep.c (frv_skip_main_prologue): Update.
-	* gnu-v2-abi.c (gnuv2_value_rtti_type): Update.
-	* gnu-v3-abi.c (gnuv3_rtti_type): Update.
-	(gnuv3_get_typename_from_type_info): Update.
-	(gnuv3_skip_trampoline): Update.
-	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Update.
-	* i386-tdep.c (i386_skip_main_prologue): Update.
-	(i386_pe_skip_trampoline_code): Update.
-	* ia64-tdep.c (ia64_convert_from_func_ptr_addr): Update.
-	* infcall.c (get_function_name): Update.
-	* linespec.c (minsym_found): Update.
-	* linux-fork.c (info_checkpoints_command): Update.
-	* m32c-tdep.c (m32c_m16c_address_to_pointer): Update.
-	(m32c_m16c_pointer_to_address): Update.
-	* maint.c (maintenance_translate_address): Update.
-	* minsyms.c (add_minsym_to_hash_table): Update.
-	(add_minsym_to_demangled_hash_table): Update.
-	(lookup_minimal_symbol_mangled): Update.
-	(lookup_minimal_symbol_demangled): Update.
-	(lookup_minimal_symbol_linkage): Update.
-	(lookup_minimal_symbol_text): Update.
-	(lookup_minimal_symbol_by_pc_name): Update.
-	(minimal_symbol_is_less_than): Update.
-	(compact_minimal_symbols): Update.
-	(build_minimal_symbol_hash_tables): Update.
-	(find_solib_trampoline_target): Update.
-	* mips-tdep.c (mips_stub_frame_sniffer): Update.
-	(mips_skip_pic_trampoline_code): Update.
-	* msp430-tdep.c (msp430_skip_trampoline_code): Update.
-	* objc-lang.c (info_selectors_command): Update.
-	(info_classes_command): Update.
-	(find_methods): Update.
-	(find_imps): Update.
-	* p-valprint.c (pascal_val_print): Update.
-	* ppc-linux-tdep.c (powerpc_linux_in_dynsym_resolve_code): Update.
-	* ppc-sysv-tdep.c (convert_code_addr_to_desc_addr): Update.
-	* printcmd.c (build_address_symbolic): Update.
-	(info_symbol_command): Update.
-	* psymtab.c (psymbol_name_matches): Update.
-	(match_partial_symbol): Update.
-	(lookup_partial_symbol): Update.
-	(print_partial_symbols): Update.
-	(sort_pst_symbols): Update.
-	(maintenance_check_psymtabs): Update.
-	* python/py-framefilter.c (py_print_frame): Update.
-	* python/python.c (gdbpy_rbreak): Update.
-	* record-btrace.c (btrace_get_bfun_name): Update.
-	(btrace_call_history): Update.
-	* rs6000-tdep.c (rs6000_skip_main_prologue): Update.
-	(rs6000_skip_trampoline_code): Update.
-	* sol-thread.c (info_cb): Update.
-	* stabsread.c (scan_file_globals): Update.
-	* stack.c (find_frame_funname): Update.
-	(info_frame_command_core): Update.
-	* symmisc.c (dump_msymbols): Update.
-	* symtab.c (symbol_natural_name): Rename to..,
-	(general_symbol_info::natural_name): ...this.
-	(symbol_demangled_name): Rename to...
-	(general_symbol_info::demangled_name): ...this.
-	(symbol_search_name): Rename to...
-	(general_symbol_info::search_name): ...this.
-	(symbol_matches_search_name): Update.
-	(find_pc_sect_line): Update.
-	(skip_prologue_sal): Update.
-	(search_symbols): Update.
-	(print_msymbol_info): Update.
-	(rbreak_command): Update.
-	(completion_list_add_msymbol): Update.
-	(completion_list_objc_symbol): Update.
-	(get_msymbol_address): Update.
-	* symtab.h (struct general_symbol_info): Add member functions
-	natural_name (), linkage_name (), print_name (), demangled_name (),
-	and search_name ().
-	(SYMBOL_NATURAL_NAME): Update.
-	(symbol_natural_name): Move to a member function on general_symbol_info.
-	(SYMBOL_DEMANGLED_NAME): Update.
-	(symbol_demangled_name): Move to a member function on
-	general_symbol_info.
-	(SYMBOL_SEARCH_NAME): Update.
-	(symbol_search_name): Move to a member function on general_symbol_info.
-	(MSYMBOL_NATURAL_NAME): Remove.
-	(MSYMBOL_LINKAGE_NAME): Remove.
-	(MSYMBOL_PRINT_NAME): Remove.
-	(MSYMBOL_DEMANGLED_NAME): Remove.
-	(MSYMBOL_SEARCH_NAME): Remove.
-	* x86-tdep.c (x86_in_indirect_branch_thunk): Update.
-
-2019-11-22  Christian Biesinger  <cbiesinger@google.com>
-
-	* symtab.c (create_demangled_names_hash): Use per_bfd->
-	minimal_symbol_count for computing the initial size, if greater
-	than our default size.
-
-2019-11-22  Tom de Vries  <tdevries@suse.de>
-
-	* contrib/words.sh: Improve words extraction.
-
-2019-11-22  Tom de Vries  <tdevries@suse.de>
-
-	* contrib/words.sh: Combine sed invocations.
-
-2019-11-21  Christian Biesinger  <cbiesinger@google.com>
-
-	* Makefile.in: Update.
-	* demangle.c: Rename to...
-	* gdb-demangle.c: ..this.
-	(is_cplus_marker): Change return type to bool.
-	(_initialize_demangler): Rename to...
-	(_initialize_gdb_demangle): ...this.
-	* gdb-demangle.h (is_cplus_marker): Change return type to bool.
-	* symtab.h (demangle): Remove declaration; instead include
-	gdb-demangle.h.
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
 
-2019-11-21  Tom Tromey  <tromey@adacore.com>
+	* netbsd-nat.h: New file.
+	* netbsd-nat.c: Likewise.
 
-	* gdbsupport/format.c (format_pieces): Parse %I64d.
-	* unittests/format_pieces-selftests.c (test_windows_formats): New
-	function.
-	(run_tests): Call it.
+2020-09-09  Tom Tromey  <tromey@adacore.com>
 
-2019-11-21  Peeter Joot  <peeter.joot@lzlabs.com>
+	* ada-lang.c (remove_extra_symbols): Do not increment when
+	removing an element
 
-	Byte reverse display of variables with DW_END_big, DW_END_little
-	(DW_AT_endianity) dwarf attributes if different than the native
-	byte order.
-	* ada-lang.c (ada_value_binop):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* ada-valprint.c (printstr):
-	(ada_val_print_string):
-	* ada-lang.c (value_pointer):
-	(ada_value_binop):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* c-lang.c (c_get_string):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* c-valprint.c (c_val_print_array):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* cp-valprint.c (cp_print_class_member):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* dwarf2loc.c (rw_pieced_value):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* dwarf2read.c (read_base_type): Handle DW_END_big,
-	DW_END_little
-	* f-lang.c (f_get_encoding):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* findvar.c (default_read_var_value):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* gdbtypes.c (check_types_equal):
-	Require matching TYPE_ENDIANITY_NOT_DEFAULT if set.
-	(recursive_dump_type): Print TYPE_ENDIANITY_BIG,
-	and TYPE_ENDIANITY_LITTLE if set.
-	(type_byte_order): new function.
-	* gdbtypes.h (TYPE_ENDIANITY_NOT_DEFAULT): New macro.
-	(struct main_type) <flag_endianity_not_default>:
-	New field.
-	(type_byte_order): New function.
-	* infcmd.c (default_print_one_register_info):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* p-lang.c (pascal_printstr):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* p-valprint.c (pascal_val_print):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* printcmd.c (print_scalar_formatted):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* solib-darwin.c (darwin_current_sos):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* solib-svr4.c (solib_svr4_r_ldsomap):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* stap-probe.c (stap_modify_semaphore):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* target-float.c (target_float_same_format_p):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* valarith.c (scalar_binop):
-	(value_bit_index):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* valops.c (value_cast):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* valprint.c (generic_emit_char):
-	(generic_printstr):
-	(val_print_string):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* value.c (unpack_long):
-	(unpack_bits_as_long):
-	(unpack_value_bitfield):
-	(modify_field):
-	(pack_long):
-	(pack_unsigned_long):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* findvar.c (unsigned_pointer_to_address):
-	(signed_pointer_to_address):
-	(unsigned_address_to_pointer):
-	(address_to_signed_pointer):
-	(default_read_var_value):
-	(default_value_from_register):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* gnu-v3-abi.c (gnuv3_make_method_ptr):
-	Use type_byte_order instead of gdbarch_byte_order.
-	* riscv-tdep.c (riscv_print_one_register_info):
-	Use type_byte_order instead of gdbarch_byte_order.
-
-2019-11-21  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* top.c (current_ui_gdb_stdout_ptr): Spell out by hand.
-	(current_ui_gdb_stdin_ptr): Likewise.
-	(current_ui_gdb_stderr_ptr): Likewise.
-	(current_ui_gdb_stdlog_ptr): Likewise.
-	(current_ui_current_uiout_ptr): Likewise.
-	(gen_ret_current_ui_field_ptr): Remove.
-
-2019-11-21  Tom de Vries  <tdevries@suse.de>
-
-	PR gdb/24956
-	* cli/cli-script.c (execute_control_command): Only switch to
-	INTERP_CONSOLE's ui_out when INTERP_MI is active.
-
-2019-11-19  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (tui_partial_win_by_name): Move from tui-data.c.
-	Now static.  Change type of "name".
-	(tui_set_win_height_command): Don't copy "arg".
-	* tui/tui-data.h (tui_partial_win_by_name): Don't declare.
-	* tui/tui-data.c (tui_partial_win_by_name): Move to tui-win.c.
-
-2019-11-19  Ali Tamur <tamur@google.com>
-
-	* dwarf2read.c (dw2_get_file_names_reader): Replace "if (attr)" with
-	"if (attr != nullptr)".
-	(dwarf2_find_base_address): Likewise.
-	(dwarf2_build_include_psymtabs): Likewise.
-	(read_cutu_die_from_dwo): Likewise.
-	(read_func_scope): Likewise.
-	(read_call_site_scope): Likewise.
-	(dwarf2_get_pc_bounds): Likewise.
-	(dwarf2_record_block_ranges): Likewise.
-	(dwarf2_add_field): Likewise.
-	(dwarf2_add_member_fn): Likewise.
-	(read_structure_type): Likewise.
-	(read_enumeration_type): Likewise.
-	(read_array_type): Likewise.
-	(read_array_order): Likewise.
-	(read_set_type): Likewise.
-	(read_common_block): Likewise.
-	(read_tag_reference_type): Likewise.
-	(read_tag_string_type): Likewise.
-	(read_subroutine_type): Likewise.
-	(read_base_type): Likewise.
-	(read_subrange_type): Likewise.
-	(new_symbol): Likewise.
-	(prepare_one_comp_unit): Likewise.
+2020-09-08  Tom Tromey  <tromey@adacore.com>
 
-2019-11-19  Tom Tromey  <tromey@adacore.com>
+	* gdb_bfd.c (gdb_bfd_open): Call bfd_fopen when fstat fails.
 
-	* windows-nat.c (windows_nat_target::attach): Include GetLastError
-	result in error when DebugActiveProcess fails.
+2020-09-08  Tom Tromey  <tromey@adacore.com>
 
-2019-11-18  Sergio Durigan Junior  <sergiodj@redhat.com>
-	    Pedro Alves  <palves@redhat.com>
+	PR win32/25302:
+	* gdb_bfd.c (gdb_bfd_data): Add "st" parameter.
+	(gdb_bfd_init_data): New function.
+	(gdb_bfd_open, gdb_bfd_ref): Use gdb_bfd_init_data.
 
-	https://bugzilla.redhat.com/show_bug.cgi?id=1765117
-	* target.c (target_stack::push): Call 'unpush' if there's a
-	target on top of the stack.
-
-2019-11-18  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* python/py-block.c (blpy_dealloc): Call tp_free.
-	(blpy_block_syms_dealloc): Likewise.
-	* python/py-finishbreakpoint.c (bpfinishpy_dealloc): Likewise.
-	* python/py-inferior.c (infpy_dealloc): Likewise.
-	* python/py-lazy-string.c (stpy_dealloc): Likewise.
-	* python/py-linetable.c (ltpy_iterator_dealloc): Likewise.
-	* python/py-symbol.c (sympy_dealloc): Likewise.
-	* python/py-symtab.c (stpy_dealloc): Likewise.
-	* python/py-type.c (typy_iterator_dealloc): Likewise.
+2020-09-07  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-2019-11-18  Christian Biesinger  <cbiesinger@google.com>
+	* infrun.c (fetch_inferior_event): Use
+	`switch_to_target_no_thread` to switch the target.
 
-	* symtab.h (struct symbol) <owner>: Initialize explicitly in the
-	constructor instead of using a class initializer.
+2020-09-06  Tom Tromey  <tom@tromey.com>
 
-2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+	* symfile.h (dwarf2_free_objfile): Don't declare.
 
-	* Makefile.in: Replace {posix,mingw}-strerror.c with safe-strerror.c.
-	* configure: Regenerate.
-	* configure.ac: Don't source common.host.
-	* gdbsupport/common.host: Remove.
-	* gdbsupport/mingw-strerror.c: Remove.
-	* gdbsupport/posix-strerror.c: Rename to...
-	* gdbsupport/safe-strerror.c: ...this.
+2020-09-03  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
 
-2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+	* gdb/i386-tdep.c (i386_floatformat_for_type): Added conditions
+	to match 16 byte real/complex type generated by Flang compiler.
 
-	* maint.c (scoped_command_stats::print_time): Use localtime_r
-	instead of localtime (provided through gnulib if necessary).
-	* nat/linux-osdata.c (time_from_time_t): Use ctime_r instead
-	of ctime.
+2020-09-03  Tom de Vries  <tdevries@suse.de>
 
-2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+	PR breakpoint/26546
+	* dwarf2/read.c (new_symbol): Tag label symbol without DW_AT_low_pc as
+	LOC_OPTIMIZED_OUT instead of LOC_LABEL.
 
-	* gdbsupport/common-defs.h: Include time.h before pathmax.h to
-	avoid compile errors.
+2020-09-02  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+	* maint.c (index_digits): New function.
+	(struct maint_print_section_data): Remove.
+	(print_bfd_section_info): Remove print_data parameter, add arg
+	and index_digits.
+	(print_objfile_section_info): Likewise.
+	(print_bfd_section_info_maybe_relocated): Likewise (plus
+	objfile).
+	(maintenance_info_sections): Adjust calls.
+
+2020-09-02  Tom Tromey  <tromey@adacore.com>
+
+	* ada-varobj.c (ada_varobj_get_ptr_number_of_children): Return 0
+	for null pointers.
+	(ada_varobj_adjust_for_child_access): Special-case null pointers.
+
+2020-09-01  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* bcache.h (struct bcache) <insert>: Change type of `added` to
+	pointer to bool.
+	* bcache.c (bcache::insert): Likewise.
+	* gdbtypes.c (check_types_worklist): Adjust.
+	* psymtab.c (add_psymbol_to_bcache): Adjust.
+
+2020-08-31  Kevin Buettner  <kevinb@redhat.com>
+
+	* corelow.c (unordered_set): Include.
+	(class core_target): Add field 'm_core_unavailable_mappings'.
+	(core_target::build_file_mappings): Print only one warning
+	per inaccessible file.  Add unavailable/broken mappings
+	to m_core_unavailable_mappings.
+	(core_target::xfer_partial): Call...
+	(core_target::xfer_memory_via_mappings): New method.
+
+2020-08-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (struct field_info) <non_public_fields>: Change
+	type to bool.
+
+2020-08-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (struct field_info): Fix indentation.
+
+2020-08-31  Simon Marchi  <simon.marchi@efficios.com>
+
+	* frame-unwind.h (frame_prev_register_ftype): Fix adjective
+	ordering in comment.
+	* frame.c (frame_id_eq): Fix indentation.
+
+2020-08-31  Scott Linder  <scott@scottlinder.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
+
+	* inline-frame.c (inline_frame_this_id): Remove assert that prevents
+	inline frame ids in outer frame.
+
+2020-08-31  Simon Marchi  <simon.marchi@efficios.com>
+
+	* frame.h (enum frame_id_stack_status) <FID_STACK_OUTER>: New.
+	* frame.c (fprint_frame_id): Handle FID_STACK_OUTER.
+	(outer_frame_id): Use FID_STACK_OUTER instead of
+	FID_STACK_INVALID.
+	(frame_id_p): Don't check for outer_frame_id.
+
+2020-08-31  Simon Marchi  <simon.marchi@efficios.com>
+
+	* frame-unwind.c (frame_unwind_got_optimized): Don't set
+	regnum/frame in value.  Call allocate_value_lazy.
+	* frame.c (frame_unwind_register_value): Use
+	val_print_not_saved.
+
+2020-08-31  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (NULL_TYPE): Remove, change all uses to nullptr.
+
+2020-08-29  Pedro Alves  <pedro@palves.net>
+
+	* progspace.c (print_program_space): Use all_inferiors.  Switch to
+	the inferior before calling target_pid_to_str.
+
+2020-08-28  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_end_psymtab): Update comment.
+	* dbxread.c (dbx_end_psymtab): Update comment.
+
+2020-08-28  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoint/26544
+	* breakpoint.c (parse_breakpoint_sals): Remove const from struct
+	event_location.
+	(create_breakpoint): Same.
+	(base_breakpoint_decode_location): Same.
+	(bkpt_create_sals_from_location): Same.
+	(bkpt_decode_location): Same.
+	(bkpt_probe_create_sals_from_location): Same.
+	(bkpt_probe_decode_location): Same.
+	(tracepoint_create_sals_from_location): Same.
+	(tracepoint_decode_location): Same.
+	(tracepoint_probe_decode_location): Same.
+	(strace_marker_create_sals_from_location): Same.
+	(strace_marker_decode_location): Same.
+	(create_sals_from_location_default): Same.
+	(decode_location_default): Same.
+	* breakpoint.h (struct breakpoint_ops): Same.
+	(create_breakpoint): Same.
+	* linespec.h (decode_line_full): Same.
+	* linespec.c (decode_line_full): Same.  Throw error if
+	result.size () == 0.
+
+2020-08-27  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/26524
+	* breakpoint.c (until_break_fsm) <location_breakpoint,
+	caller_breakpoint>: Delete fields.
+	<breakpoints>: New field.
+	<until_break_fsm>: Adjust to save a breakpoint vector instead of
+	two individual breakpoints.
+	(until_break_fsm::should_stop): Loop over breakpoints in the
+	breakpoint vector.
+	(until_break_fsm::clean_up): Adjust to clear the breakpoints
+	vector.
+	(until_break_command): Handle location expanding into multiple
+	sals.
+
+2020-08-27  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/26523
+	* inline-frame.c (stopped_by_user_bp_inline_frame): Also consider
+	bp_until breakpoints user-specified locations.  Update intro
+	comment.
 
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* gdbsupport/common.m4: No longer check for strerror_r.
-	* gdbsupport/posix-strerror.c (safe_strerror): Always call the
-	POSIX version of strerror_r, now that gnulib provides it if
-	necessary.
+2020-08-27  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-11-14  Christian Biesinger  <cbiesinger@google.com>
+	* gdb_bfd.h (gdb_bfd_section_iterator, gdb_bfd_section_range,
+	gdb_bfd_sections): New.
+	* maint.c (print_bfd_section_info): Change param type to
+	maint_print_section_data.
+	(print_objfile_section_info): Likewise.
+	(print_bfd_section_info_maybe_relocated): Likewise.
+	(maintenance_info_sections): Use gdb_bfd_sections.
 
-	* README (`configure' options): Update.
+2020-08-25  Shahab Vahedi  <shahab@synopsys.com>
 
-2019-11-14  Tom Tromey  <tromey@adacore.com>
+	* MAINTAINERS: Add ARC target and maintainer.
 
-	* eval.c (evaluate_subexp_standard) <BINOP_ASSIGN>: Do not pass an
-	expected type for the RHS if the LHS is a convenience variable.
+2020-08-25  Anton Kolesov  <anton.kolesov@synopsys.com>
 
-2019-11-14  Simon Marchi  <simon.marchi@polymtl.ca>
+	* configure.tgt: ARC support for GNU/Linux.
+	* Makefile.in (ALL_TARGET_OBJS): Likewise.
+	* arc-linux-tdep.c: New file.
+	* arc-tdep.h (ARC_STATUS32_L_MASK, ARC_STATUS32_DE_MASK): Declare.
+	* arc-tdep.c (arc_write_pc): Use it.
+
+2020-08-25  Shahab Vahedi  <shahab@synopsys.com>
+
+	* arc-tdep.c (arc_check_for_hardware_loop): New.
+	* arc-tdep.h (gdbarch_tdep): New field has_hw_loops.
+
+2020-08-25  Shahab Vahedi  <shahab@synopsys.com>
+
+	* arc-tdep.h: Include "gdbarch.h".
+
+2020-08-25  Shahab Vahedi  <shahab@synopsys.com>
+
+	* arch/arc.h
+	(arc_gdbarch_features): New class to stir the selection of target XML.
+	(arc_create_target_description): Use FEATURES to choose XML target.
+	(arc_lookup_target_description): Use arc_create_target_description
+	to create _new_ target descriptions or return the already created
+	ones if the FEATURES is the same.
+	* arch/arc.c: Implementation of prototypes described above.
+	* gdb/arc-tdep.h (arc_regnum enum): Add more registers.
+	(arc_gdbarch_features_init): Initialize the FEATURES struct.
+	* arc-tdep.c (*_feature_name): Make feature names consistent.
+	(arc_register_feature): A new struct to hold information about
+	registers of a particular target/feature.
+	(arc_check_tdesc_feature): Check if XML provides registers in
+	compliance with ARC_REGISTER_FEATURE structs.
+	(arc_update_acc_reg_names): Add aliases for r58 and r59.
+	(determine_*_reg_feature_set): Which feature name to look for.
+	(arc_gdbarch_features_init): Given MACH and ABFD, initialize FEATURES.
+	(mach_type_to_arc_isa): Convert from a set of binutils machine types
+	to expected ISA enums to be used in arc_gdbarch_features structs.
+	* features/Makefile (FEATURE_XMLFILES): Add new files.
+	* gdb/features/arc/v1-aux.c: New file.
+	* gdb/features/arc/v1-aux.xml: Likewise.
+	* gdb/features/arc/v1-core.c: Likewise.
+	* gdb/features/arc/v1-core.xml: Likewise.
+	* gdb/features/arc/v2-aux.c: Likewise.
+	* gdb/features/arc/v2-aux.xml: Likewise.
+	* gdb/features/arc/v2-core.c: Likewise.
+	* gdb/features/arc/v2-core.xml: Likewise.
+	* NEWS (Changes since GDB 9): Announce obsolence of old feature names.
 
-	* unittests/vec-utils-selftests.c (unordered_remove_tests::obj):
-	Provide explicit default and copy constructor.
+2020-08-25  Gaius Mulley  <gaiusmod2@gmail.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-11-14  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	PR m2/26372
+	* m2-exp.y (exp): Improve comment for non_empty_arglist case, add
+	an assert.  Remove single element array indexing pattern as the
+	MULTI_SUBSCRIPT support will handle this case too.
+
+2020-08-24  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* value.h (valprint_check_validity): Move declaration from
+	here...
+	* valprint.h (valprint_check_validity): ... to here.
+
+2020-08-24  Simon Marchi  <simon.marchi@efficios.com>
+
+	* debug.h: New file.
+	* debug.c (debug_prefixed_vprintf): New function.
+	* infrun.c (infrun_debug_printf_1): Use debug_prefixed_vprintf.
+	* linux-nat.c (linux_nat_debug_printf_1): Likewise.
+
+2020-08-24  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.h (infrun_debug_printf_1): New function declaration.
+	(infrun_debug_printf): New macro.
+	* infrun.c (infrun_debug_printf_1): Use infrun_debug_printf
+	throughout.
+	(infrun_debug_printf): New function.
+	* breakpoint.c (should_be_inserted): Use infrun_debug_printf.
+	(handle_jit_event): Likewise.
+
+2020-08-21  Mark Wielaard  <mark@klomp.org>
+
+	* ada-lex.l: Extend register warnings diagnostics comment for g++.
+
+2020-08-22  Simon Marchi  <simon.marchi@efficios.com>
+
+	* frame.c (enum class frame_id_status): New.
+	(struct frame_info) <this_id::p>: Change type to frame_id_status.
+	(fprintf_frame): Update.
+	(compute_frame_id): Set frame id status to "computing" on entry.
+	Set it back to "not_computed" on failure and to "computed" on
+	success.
+	(get_frame_id): Assert the frame id is not being computed.
+	(create_sentinel_frame): Use frame_id_status::COMPUTED.
+	(create_new_frame): Likewise.
+	(frame_cleanup_after_sniffer): Update assert.
+
+2020-08-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* regcache.c (pid_ptid_regcache_map): New type.
+	(target_ptid_regcache_map): Remove.
+	(target_pid_ptid_regcache_map): New type.
+	(regcaches): Change type to target_pid_ptid_regcache_map.
+	(get_thread_arch_aspace_regcache): Update.
+	(regcache_thread_ptid_changed): Update, handle pid-like ptid
+	case.
+	(regcaches_size): Update.
+	(regcache_count): Update.
+	(registers_changed_ptid_target_pid_test): New.
+	(_initialize_regcache): Register new test.
 
-	* python/py-finishbreakpoint.c (gdbpy_breakpoint_created):
-	only call Py_INCREF (newbp) in the bppy_pending_object case.
+2020-08-20  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-11-13  Tom Tromey  <tromey@adacore.com>
+	* regcache.c (regcache_count): New.
+	(struct regcache_test_data): New.
+	(regcache_test_data_up): New.
+	(populate_regcaches_for_test): New.
+	(regcaches_test): Remove.
+	(get_thread_arch_aspace_regcache_test): New.
+	(registers_changed_ptid_all_test): New.
+	(registers_changed_ptid_target_test): New.
+	(registers_changed_ptid_target_ptid_test): New.
+	(regcache_thread_ptid_changed): Remove regcache_count lambda.
+	(_initialize_regcache): Register new tests.
 
-	PR build/25182:
-	* psympriv.h (partial_symbol): Remove static assert.
-	* symtab.h (general_symbol_info, symbol): Remove static assert.
+2020-08-20  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-11-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* regcache.c (test_get_thread_arch_aspace_regcache): Rename to...
+	(get_thread_arch_aspace_regcache_and_check): ... this.  Remove
+	gdbarch and aspace parameter.  Use current inferior's aspace.
+	Validate regcache's arch value.
+	(regcaches_test): Update.
 
-	* gdbsupport/format.c (format_pieces::format_pieces): Support
-	printf 'z' size modifier.
-	* gdbsupport/format.h (enum argclass): Add size_t_arg.
-	* printcmd.c (ui_printf):  Handle size_t_arg.
-	* ui-out.c (ui_out::vmessage): Likewise.
-	* unittests/format_pieces-selftests.c (test_format_int_sizes): New
-	function.
-	(run_tests): Call test_format_int_sizes.
+2020-08-20  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-11-12  Christian Biesinger  <cbiesinger@google.com>
+	* regcache.c (regcaches_test): Call registers_changed.
 
-	* ada-exp.y (write_ambiguous_var): Update.
-	* buildsym.c (add_symbol_to_list): Update.
-	* dwarf2read.c (read_variable): Update.
-	(new_symbol): Update.
-	* jit.c (finalize_symtab): Update.
-	* language.c (language_alloc_type_symbol): Update.
-	* symtab.c (fixup_symbol_section): Update.
-	(initialize_objfile_symbol_1): Move code to...
-	(initialize_objfile_symbol): ...here. Remove now-unnecessary memset.
-	(allocate_symbol): Update.
-	(allocate_template_symbol): Update.
-	(get_symbol_address): Update.
-	* symtab.h (struct symbol): Inherit from general_symbol_info instead
-	of having as a field, and add a constructor.
-	(SYMBOL_VALUE): Update.
-	(SYMBOL_VALUE_ADDRESS): Update.
-	(SET_SYMBOL_VALUE_ADDRESS): Update.
-	(SYMBOL_VALUE_BYTES): Update.
-	(SYMBOL_VALUE_COMMON_BLOCK): Update.
-	(SYMBOL_BLOCK_VALUE): Update.
-	(SYMBOL_VALUE_CHAIN): Update.
-	(SYMBOL_LANGUAGE): Update.
-	(SYMBOL_SECTION): Update.
-	(SYMBOL_OBJ_SECTION): Update.
-	(SYMBOL_SET_LANGUAGE): Update.
-	(SYMBOL_SET_LINKAGE_NAME): Update.
-	(SYMBOL_SET_NAMES): Update.
-	(SYMBOL_NATURAL_NAME): Update.
-	(SYMBOL_LINKAGE_NAME): Update.
-	(SYMBOL_DEMANGLED_NAME): Update.
-	(SYMBOL_SEARCH_NAME): Update.
-	(SYMBOL_MATCHES_SEARCH_NAME): Update.
-	(struct symbol): Update.
-	(struct template_symbol): Update.
-	(struct rust_vtable_symbol): Update.
-	* xcoffread.c (SYMBOL_DUP): Update.
-
-2019-11-12  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-layout.c (show_layout): Set current_layout.
-	(show_source_disasm_command, show_data)
-	(show_source_or_disasm_and_command): Don't set current_layout.
-
-2019-11-12  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-layout.c (_initialize_tui_layout): Move to end.
-
-2019-11-12  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (resize_message): New global.
-	(show_tui_resize_message): New function.
-	(tui_async_resize_screen): Print message if requested.
-	(_initialize_tui_win): Add tui-resize-message setting.
-	* NEWS: Add entry for new commands.
+2020-08-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-2019-11-11  Tom Tromey  <tom@tromey.com>
+	* infrun.c (process_event_stop_test): Fix typo "breapoint".
 
-	* tui/tui.c (tui_initialize_readline): Add new bindable readline
-	functions.
+2020-08-19  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
 
-2019-11-11  Christian Biesinger  <cbiesinger@google.com>
+	* amd64-tdep.c (amd64_skip_prologue): Using symbol table
+	to find the end of prologue for flang compiled binaries.
+	* arm-tdep.c (arm_skip_prologue): Likewise.
+	* i386-tdep.c (i386_skip_prologue): Likewise.
+	* producer.c (producer_is_llvm): New function.
+	(producer_parsing_tests): Added new tests for clang/flang.
+	* producer.h (producer_is_llvm): New declaration.
 
-	* nat/linux-osdata.c (user_from_uid): Use getpwuid_r.
+2020-08-18  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-11-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* linux-nat.c (linux_nat_debug_printf): New function.
+	(linux_nat_debug_printf_1): New macro.  Use throughout the file.
 
-	* python/py-symbol.c (gdbpy_lookup_static_symbols): New
-	function.
-	* python/python-internal.h (gdbpy_lookup_static_symbols):
-	Declare new function.
-	* python/python.c (python_GdbMethods): Add
-	gdb.lookup_static_symbols method.
-	* NEWS: Mention gdb.lookup_static_symbols.
-
-2019-11-10  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* python/py-symbol.c (gdbpy_lookup_static_symbol): Lookup in
-	static block of current object file first.  Also fix typo in
-	header comment.
-
-2019-11-10  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* stack.c (set_last_displayed_sal): Delete.
-	(last_displayed_sal_valid): Delete.
-	(last_displayed_pspace): Delete.
-	(last_displayed_addr): Delete.
-	(last_displayed_symtab): Delete.
-	(last_displayed_line): Delete.
-	(class last_displayed_symtab_info_type): New.
-	(last_displayed_symtab_info): New static global variable.
-	(print_frame_info): Call methods on last_displayed_symtab_info.
-	(clear_last_displayed_sal): Update header comment, and make use of
-	last_displayed_symtab_info.
-	(last_displayed_sal_is_valid): Likewise.
-	(get_last_displayed_pspace): Likewise.
-	(get_last_displayed_addr): Likewise.
-	(get_last_displayed_symtab): Likewise.
-	(get_last_displayed_line): Likewise.
-	(get_last_displayed_sal): Likewise.
-	* stack.h (clear_last_displayed_sal): Update header comment.
-	(last_displayed_sal_is_valid): Likewise.
-	(get_last_displayed_pspace): Likewise.
-	(get_last_displayed_addr): Likewise.
-	(get_last_displayed_symtab): Likewise.
-	(get_last_displayed_line): Likewise.
-	(get_last_displayed_sal): Likewise.
+2020-08-18  Aaron Merey  <amerey@redhat.com>
 
-2019-11-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* Makefile.in (DEBUGINFOD_CFLAGS, DEBUGINFOD_LIBS): New variables.
+	(INTERNAL_CFLAGS_BASE): Add DEBUGINFOD_CFLAGS.
+	(CLIBS): Add DEBUGINFOD_LIBS.
 
-	* stack.c (frame_show_address): Convert return type to bool.
-	* stack.h (frame_show_address): Likewise, and update header
-	comment.
+2020-08-17  Sergei Trofimovich  <siarheit@google.com>
 
-2019-11-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* ia64-linux-nat.c: Include "gdbarch.h" to declare used
+	'gdbarch_num_regs'.
 
-	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add new file to the list.
-	* unittests/vec-utils-selftests.c: New file.
-	* gdbsupport/gdb_vecs.h (unordered_remove): Avoid self move assign.
-
-2019-11-10  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.c (tui_unhighlight_win): Use can_box.
-	(tui_highlight_win): Likewise.
-	(tui_win_info::check_and_display_highlight_if_needed): Likewise.
-	* tui/tui-data.h (struct tui_win_info) <can_highlight>: Remove.
-	* tui/tui-command.h (struct tui_cmd_window) <tui_cmd_window>:
-	Don't set can_highlight.
+2020-08-17  Tom Tromey  <tromey@adacore.com>
 
-2019-11-10  Tom Tromey  <tom@tromey.com>
+	* ada-varobj.c (ada_varobj_decode_var): Handle case where
+	ada_get_decoded_value returns NULL.
 
-	* cli/cli-style.h (class cli_style_option) <cli_style_option>:
-	Remove unused declaration.
+2020-08-17  Tom Tromey  <tromey@adacore.com>
 
-2019-11-08  Tom Tromey  <tromey@adacore.com>
+	* python/py-inferior.c (infpy_search_memory): Use
+	gdb_py_object_from_ulongest.
+	* python/py-infevents.c (create_inferior_call_event_object)
+	(create_memory_changed_event_object): Use
+	gdb_py_object_from_ulongest.
+	* python/py-linetable.c (ltpy_entry_get_pc): Use
+	gdb_py_object_from_ulongest.
 
-	* top.c (read_command_file): Update.
-	(command_line_input): Make return type const.
-	* python/py-gdb-readline.c: Update.
-	* linespec.c (decode_line_2): Update.
-	* defs.h (command_line_input): Make return type const.
-	* cli/cli-script.c (read_next_line): Make return type const.
-	* ada-lang.c (get_selections): Update.
-
-2019-11-06  Christian Biesinger  <cbiesinger@google.com>
-
-	* linux-tdep.c (linux_info_proc): Use strtok_r instead of strtok.
-	* mi/mi-main.c (output_cores): Likewise.
-	* nat/linux-osdata.c (linux_xfer_osdata_cpus): Likewise.
-	(linux_xfer_osdata_modules): Likewise.
-	* remote.c (register_remote_support_xml): Likewise.
-	* sparc64-tdep.c (adi_is_addr_mapped): Likewise.
-	* xml-syscall.c (syscall_create_syscall_desc): Likewise.
-
-2019-11-06  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-interp.c: Don't include readline.h.
-	* tui/tui-hooks.c: Don't include readline.h.
-	* symmisc.c: Include tilde.h, not readline.h.
-	* symfile.c: Include tilde.h, not readline.h.
-	* source.c: Include tilde.h, not readline.h.
-	* solib.c: Include tilde.h, not readline.h.
-	* psymtab.c: Include tilde.h, not readline.h.
-	* exec.c: Include tilde.h, not readline.h.
-	* corelow.c: Include tilde.h, not readline.h.
-	* cli/cli-dump.c: Include tilde.h, not readline.h.
-	* cli/cli-cmds.c: Don't include readline.h.
-
-2019-11-05  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-disasm.c (struct tui_asm_line) <addr_size>: New member.
-	(tui_disassemble): Set addr_size.
-	(tui_disasm_window::set_contents): Use addr_size.
+2020-08-17  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-11-05  Tom Tromey  <tom@tromey.com>
+	* loc.c (class symbol_needs_eval_context): Fix indentation.
 
-	* rust-lang.c (rust_language_defn): Update.
-	* python/py-value.c (valpy_string): Call c_get_string.
-	* p-lang.c (pascal_language_defn): Update.
-	* opencl-lang.c (opencl_language_defn): Update.
-	* objc-lang.c (objc_language_defn): Update.
-	* m2-lang.c (m2_language_defn): Update.
-	* language.c (unknown_language_defn, auto_language_defn): Update.
-	(default_get_string): Remove.
-	* guile/scm-value.c (gdbscm_value_to_string): Use c_get_string.
-	* go-lang.c (go_language_defn): Update.
-	* f-lang.c (f_language_defn): Update.
-	* d-lang.c (d_language_defn): Update.
-	* c-lang.c (c_language_defn, cplus_language_defn)
-	(asm_language_defn, minimal_language_defn): Update.
-	* ada-lang.c (ada_language_defn): Update.
-	* language.h (struct language_defn) <la_get_string>: Remove.
-	(LA_GET_STRING): Remove.
-	(default_get_string): Don't declare.
-
-2019-11-05  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-source.h (struct tui_source_window): Inline
-	constructor.  Remove destructor.
-	<style_changed, m_observable>: Move to superclass.
-	* tui/tui-winsource.h (tui_copy_source_line): Declare.
-	(struct tui_source_window_base): Move private members to end.
-	<style_changed, m_observable>: Move from tui_source_window.
-	* tui/tui-winsource.c (tui_copy_source_line): Move from
-	tui-source.c.  Rename from copy_source_line.  Add special handling
-	for negative line number.
-	(tui_source_window_base::style_changed): Move from
-	tui_source_window.
-	(tui_source_window_base): Register observer.
-	(~tui_source_window_base): New.
-	* tui/tui-source.c (copy_source_line): Move to tui-winsource.c;
-	rename.
-	(tui_source_window::set_contents): Use tui_copy_source_line.
-	(tui_source_window::tui_source_window): Move to tui-source.h.
-	(tui_source_window::~tui_source_window): Remove.
-	(tui_source_window::style_changed): Move to superclass.
-	* tui/tui-disasm.c (tui_disassemble): Create string file with
-	styling, when possible.  Add "addr_size" parameter.
-	(tui_disasm_window::set_contents): Use tui_copy_source_line.
-	Don't compute maximum size.
-	(len_without_escapes): New function
+2020-08-17  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-11-05  Tom Tromey  <tom@tromey.com>
+	* dwarf2/loc.c (dwarf2_loc_desc_get_symbol_read_needs): Use
+	bool.
 
-	* tui/tui-winsource.h (struct tui_source_element) <line>: Now a
-	std::string.
-	* tui/tui-winsource.c (tui_show_source_line): Update.
-	* tui/tui-source.c (tui_source_window::set_contents): Update.
-	* tui/tui-disasm.c (tui_disasm_window::set_contents): Update.
+2020-08-17  Tom de Vries  <tdevries@suse.de>
 
-2019-11-05  Christian Biesinger  <cbiesinger@google.com>
+	PR gdb/26393
+	* gdbtypes.c (dump_dynamic_prop): New function.
+	(recursive_dump_type): Use dump_dynamic_prop for TYPE_CODE_RANGE.
 
-	* symtab.h (gdb_static_assert): Put && operator at the beginning
-	of the line instead of the end.
+2020-08-15  Tom de Vries  <tdevries@suse.de>
 
-2019-11-04  Christian Biesinger  <cbiesinger@google.com>
+	PR backtrace/26390
+	* stack.c (print_frame_args): Temporarily set the selected
+	frame to FRAME while printing the frame's arguments.
 
-	* psympriv.h: Add static_asserts for sizeof (general_symbol_info)
-	and sizeof (symbol).
-	* symtab.h: Add a static_assert for sizeof (partial_symbol).
+2020-08-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
 
-2019-11-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+	PR breakpoints/26385
+	* ppc-linux-nat.c (ppc_linux_nat_target::low_prepare_to_resume):
+	Always clear watchpoint with PTRACE_SET_DEBUGREG.
 
-	* NEWS (Changes since GDB 8.3): Document Solaris 10 removal.
-	* configure.host: Mark *-*-solaris2.10* obsolete.
-	* configure.tgt: Mark Solaris < 11 obsolete.
-	* MAINTAINERS (Target Instruction Set Architectures) <sparc>:
-	Update target triplet.
+2020-08-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
 
-2019-11-01  Tom Tromey  <tromey@adacore.com>
+	* ppc-linux-nat.c (ppc_linux_dreg_interface::detect)
+	(ppc_linux_nat_target::low_prepare_to_resume): Use ptrace () < 0
+	and >= to check return value instead of == -1 and != -1.
 
-	* utils.c (print_sys_errmsg): Simplify.
+2020-08-14  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-11-01  Tom Tromey  <tromey@adacore.com>
+	* utils.h (class gdb_argv) <as_array_view>: New method.
+	* utils.c (gdb_argv_as_array_view_test): New.
+	(_initialize_utils): Register selftest.
+	* maint.c (maintenance_selftest): Use the new method.
 
-	* gdbsupport/mingw-strerror.c (safe_strerror): Constify result.
+2020-08-13  Kamil Rytarowski  <n54@gmx.com>
 
-2019-11-01  Christian Biesinger  <cbiesinger@google.com>
+	* target.h (supports_dumpcore, dumpcore): New
+	function declarations.
+	* target.c (supports_dumpcore, dumpcore): New
+	functions.
+	* target-delegates.c: Rebuild.
+	* gcore.c (gcore_command): Use target_supports_dumpcore ()
+	and target_dumpcore ().
 
-	* configure: Regenerate.
-	* configure.ac: Remove check for strerror_r.
-	* gdbsupport/common.m4: Check for strerror_r.
+2020-08-13  Aaron Merey  <amerey@redhat.com>
 
-2019-11-01  Luis Machado  <luis.machado@linaro.org>
+	* debuginfod-support.c: Replace global variables with user_data.
 
-	PR gdb/25124
+2020-08-13  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* arm-tdep.c (arm_per_objfile): Rename to ...
-	(arm_per_bfd): ... this.
-	(arm_objfile_data_key): Rename to ...
-	(arm_bfd_data_key): ... this.
-	(arm_find_mapping_symbol): Adjust access to new bfd_key-based
-	data.
-	(arm_record_special_symbol): Likewise.
-
-2019-10-31  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* ada-typeprint.c (ada_print_typedef): Don't print newline at the
-	end.
-	* c-typeprint.c (c_print_typedef): Likewise.
-	* f-typeprint.c (f_print_typedef): Likewise.
-	* m2-typeprint.c (m2_print_typedef): Likewise.
-	* p-typeprint.c (pascal_print_typedef): Likewise.
-	* rust-lang.c (rust_print_typedef): Likewise.
-	* symtab.c (print_symbol_info): Print a newline after calling
-	typedef_print.
-
-2019-10-31  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* symtab.c (info_module_cmdlist): New variable.
-	(info_module_command): New function.
-	(search_module_symbols): New function.
-	(info_module_subcommand): New function.
-	(struct info_modules_var_func_options): New struct.
-	(info_modules_var_func_options_defs): New variable.
-	(make_info_modules_var_func_options_def_group): New function.
-	(info_module_functions_command): New function.
-	(info_module_variables_command): New function.
-	(info_module_var_func_command_completer): New function.
-	(_initialize_symtab): Register new 'info module functions' and
-	'info module variables' commands.
-	* symtab.h (typedef symbol_search_in_module): New typedef.
-	(search_module_symbols): Declare new function.
-	* NEWS: Mention new commands.
-
-2019-10-31  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* dwarf2read.c (dw2_symtab_iter_next): Handle MODULE_DOMAIN.
-	(dw2_expand_marked_cus): Handle MODULES_DOMAIN.
-	(dw2_debug_names_iterator::next): Handle MODULE_DOMAIN and
-	MODULES_DOMAIN.
-	(scan_partial_symbols): Only create partial module symbols for non
-	declarations.
-	* psymtab.c (recursively_search_psymtabs): Handle MODULE_DOMAIN
-	and MODULES_DOMAIN.
-	* symtab.c (search_domain_name): Likewise.
-	(search_symbols): Likewise.
-	(print_symbol_info): Likewise.
-	(symtab_symbol_info): Likewise.
-	(info_modules_command): New function.
-	(_initialize_symtab): Register 'info modules' command.
-	* symtab.h (enum search_domain): Add MODULES_DOMAIN.
-	* NEWS: Mention new 'info modules' command.
-
-2019-10-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* NEWS: Mention $_gdb_setting, $_gdb_setting_str, $_gdb_maint_setting
-	and $_gdb_maint_setting_str.
-
-2019-10-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* cli/cli-cmds.c (setting_cmd, value_from_setting)
-	(gdb_setting_internal_fn, gdb_maint_setting_internal_fn)
-	(str_value_from_setting, gdb_setting_str_internal_fn)
-	(gdb_maint_setting_str_internal_fn): New functions.
-	(_initialize_cli_cmds): Define the new convenience functions.
-	* gdb/cli/cli-setshow.h (get_setshow_command_value_string): Constify.
-	* gdb/cli/cli-setshow.c (get_setshow_command_value_string): Constify.
-
-2019-10-31  Christian Biesinger  <cbiesinger@google.com>
-
-	* agent.c (set_can_use_agent): When the setting is turned on,
-	look up agent symbols if we don't have them yet.
-	(agent_new_objfile): Don't look up agent symbols when the agent
-	setting is off.
+	* maint.c (maintenance_selftest): Split args and pass array_view
+	to run_tests.
 
-2019-10-31  Christian Biesinger  <cbiesinger@google.com>
+2020-08-12  Luis Machado  <luis.machado@linaro.org>
 
-	* config.in: Regenerate.
+	* value.c (check_type_length_before_alloc): Use ULONGEST to store a
+	type's length.
+	Use %s and pulongest to print the length.
 
-2019-10-31  Christian Biesinger  <cbiesinger@google.com>
+2020-08-12  Pedro Alves  <palves@redhat.com>
 
-	* configure: Regenerate.
-	* configure.ac: Check for strerror_r.
-	* gdbsupport/common-utils.h (safe_strerror): Change return value
-	to const char * and document that this function is now threadsafe.
-	* gdbsupport/posix-strerror.c (safe_strerror): Make buf
-	thread_local and call strerror_r, if available.
-	* utils.c (perror_string): Update.
-	(print_sys_errmsg): Update.
-
-2019-10-31  Luis Machado  <luis.machado@linaro.org>
-
-	* arm-tdep.c (arm_exidx_data_key): Use bfd_key instead of
-	objfile_key.
-	(arm_exidx_new_objfile): Adjust to use objfile->obfd instead of
-	objfile to fetch per-bfd data.
-	(arm_find_exidx_entry): Likewise.
-
-2019-10-31  Christian Biesinger  <cbiesinger@google.com>
-
-	* gdbsupport/agent.c (debug_agent): Change type to bool.
-	(use_agent): Likewise.
-	(all_agent_symbols_look_up): Likewise.
-	(agent_loaded_p): Change return value to bool.
-	(agent_look_up_symbols): Update.
-	(agent_capability_check): Change return value to bool.
-	* gdbsupport/agent.h (agent_loaded_p): Likewise.
-	(debug_agent): Change type to bool.
-	(use_agent): Likewise.
-	(agent_capability_check): Change return value to bool.
-
-2019-10-30  Christian Biesinger  <cbiesinger@google.com>
-
-	* minsyms.c (clear_minimal_symbol_hash_tables): New function.
-	(build_minimal_symbol_hash_tables): Code to clear the table moved
-	to clear_minimal_symbol_hash_tables.
-	(minimal_symbol_reader::install): Call clear_minimal_symbol_hash_tables
-	when needed.
-
-2019-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* infcmd.c: Remove includes.
-	* infrun.c: Remove includes.
-
-2019-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* ada-lang.h (GROW_VECT): Move to ada-lang.c.
-	(grow_vect): Remove declaration.
-	(ada_type_of_array): Remove declaration.
-	(ada_update_initial_language): Remove declaration.
-	(ada_fold_name): Remove declaration.
-	(ada_fill_in_ada_prototype): Remove declaration.
-	(user_select_syms): Remove declaration.
-	(get_selections): Remove declaration.
-	(ada_tag_type): Remove declaration.
-	(ada_value_tag): Remove declaration.
-	(ada_is_others_clause): Remove declaration.
-	(ada_in_variant): Remove declaration.
-	(ada_value_struct_elt): Remove declaration.
-	(ada_attribute_name): Remove declaration.
-	(ada_system_address_type): Remove declaration.
-	* ada-lang.c (ada_watch_location_expression): Make static.
-	(GROW_VECT): Move here from ada-lang.h.
-	(grow_vect): Make static.
-	(ada_update_initial_language): Make static.
-	(ada_fold_name): Make static.
-	(ada_type_of_array): Make static.
-	(encoded_ordered_before): Move up.
-	(sort_choices): Move up.
-	(print_signatures): Move up.
-	(ada_print_symbol_signature): Move up.
-	(get_selections): Move up and make static.
-	(user_select_syms): Move up and make static.
-	(ada_value_struct_elt): Move up and make static.
-	(ada_tag_type): Make static.
-	(ada_value_tag): Make static.
-	(ada_is_others_clause): Make static.
-	(ada_in_variant): Make static.
-	(ada_attribute_name): Make static.
-
-2019-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* ada-lang.c: Remove includes.
-	* ada-typeprint.c: Remove includes.
-	* ada-valprint.c: Remove includes.
-
-2019-10-29  Simon Marchi  <simon.marchi@efficios.com>
-
-	* addrmap.c: Add static assertions of type size, moved from
-	_initialize_addrmap.
-	(_initialize_addrmap): Remove.
+	* NEWS: Move "Multi-target debugging support" item to the
+	"Changes since GDB 9" section.
 
-2019-10-29  Christian Biesinger  <cbiesinger@google.com>
+2020-08-12  Pedro Alves  <palves@redhat.com>
 
-	* coffread.c (record_minimal_symbol): Update.
-	(process_coff_symbol): Update.
-	* dbxread.c (read_dbx_symtab): Update.
-	* dwarf2read.c (add_partial_symbol): Update.
-	(fixup_go_packaging): Update.
-	(load_partial_dies): Update.
-	(new_symbol): Update.
-	* elfread.c (record_minimal_symbol): Change signature to use
-	gdb::string_view instead of name+len.
-	(elf_symtab_read): Update.
-	(elf_rel_plt_read): Update.
-	* mdebugread.c (parse_partial_symbols): Update.
-	(handle_psymbol_enumerators): Update.
-	(new_symbol): Update.
-	* minsyms.c (minimal_symbol_reader::record_full): Change signature
-	to use gdb::string_view instead of name+len.
-	* minsyms.h (class minimal_symbol_reader) <record_full>: Likewise.
-	* psympriv.h (add_psymbol_to_list): Likewise.
-	* psymtab.c (add_psymbol_to_bcache): Likewise.
-	(add_psymbol_to_list): Likewise.
-	* stabsread.c (define_symbol): Update.
-	* symtab.c (symbol_set_names): Change signature to use gdb::string_view.
-	* symtab.h (SYMBOL_SET_NAMES): Likewise.
-	(symbol_set_names): Likewise.
-	* xcoffread.c (scan_xcoff_symtab): Update.
-
-2019-10-29  Christian Biesinger  <cbiesinger@google.com>
-
-	* symtab.h (symbol_set_names): Document that copy_name must be
-	set to true for non-nullterminated strings.
-	* symtab.c (symbol_set_names): Only make a nullterminated copy of
-	linkage_name if the entry was not found and we need to demangle.
-
-2019-10-29  Christian Biesinger  <cbiesinger@google.com>
-
-	* Makefile.in (HFILES_NO_SRCDIR): Add gdb_binary_search.h.
-	* dwarf2-frame.c (bsearch_fde_cmp): Update.
-	(dwarf2_frame_find_fde): Replace bsearch with gdb::binary_search.
-	* gdbsupport/gdb_binary_search.h: New file.
+	PR gdb/26336
+	* progspace.c (program_space::remove_objfile): Invalidate the
+	frame cache.
 
-2019-10-29  Christian Biesinger  <cbiesinger@google.com>
+2020-08-11  Tom de Vries  <tdevries@suse.de>
 
-	* NEWS: Mention new --with-system-gdbinit-dir option.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* configure.ac: Add new option --with-system-gdbinit-dir.
-	* extension.c (get_ext_lang_of_file): Return extension_language_gdb
-	for a ".gdb" suffix.
-	* main.c (get_init_files): Change system_gdbinit argument to
-	a vector and return the files in SYSTEM_GDBINIT_DIR in
-	addition to SYSTEM_GDBINIT.
-	(captured_main_1): Update.
-	(print_gdb_help): Update.
-	* top.c (print_gdb_configuration): Also print the value of
-	SYSTEM_GDBINIT_DIR.
-
-2019-10-28  Christian Biesinger  <cbiesinger@google.com>
-
-	* gdbsupport/common-utils.h (startswith): Add an overloaded version
-	that takes gdb::string_view arguments.
-
-2019-10-26  Tom de Vries  <tdevries@suse.de>
-
-	* aarch64-linux-tdep.c: Fix typos in comments.
-	* aarch64-tdep.c: Same.
-	* ada-lang.c: Same.
-	* amd64-nat.c: Same.
-	* arc-tdep.c: Same.
-	* arch/aarch64-insn.c: Same.
-	* block.c: Same.
-	* breakpoint.h: Same.
-	* btrace.h: Same.
-	* c-varobj.c: Same.
-	* cli/cli-decode.c: Same.
-	* cli/cli-script.c: Same.
-	* cli/cli-utils.h: Same.
-	* coff-pe-read.c: Same.
-	* coffread.c: Same.
-	* compile/compile-cplus-symbols.c: Same.
-	* compile/compile-object-run.c: Same.
-	* completer.c: Same.
-	* corelow.c: Same.
-	* cp-support.c: Same.
-	* demangle.c: Same.
-	* dwarf-index-write.c: Same.
-	* dwarf2-frame.c: Same.
-	* dwarf2-frame.h: Same.
-	* eval.c: Same.
-	* frame-base.h: Same.
-	* frame.h: Same.
-	* gdbcmd.h: Same.
-	* gdbtypes.h: Same.
-	* gnu-nat.c: Same.
-	* guile/scm-objfile.c: Same.
-	* i386-tdep.c: Same.
-	* i386-tdep.h: Same.
-	* infcall.c: Same.
-	* infcall.h: Same.
-	* linux-nat.c: Same.
-	* m68k-tdep.c: Same.
-	* macroexp.c: Same.
-	* memattr.c: Same.
-	* mi/mi-cmd-disas.c: Same.
-	* mi/mi-getopt.h: Same.
-	* mi/mi-main.c: Same.
-	* minsyms.c: Same.
-	* nat/aarch64-sve-linux-sigcontext.h: Same.
-	* objfiles.h: Same.
-	* ppc-linux-nat.c: Same.
-	* ppc-linux-tdep.c: Same.
-	* ppc-tdep.h: Same.
-	* progspace.h: Same.
-	* prologue-value.h: Same.
-	* python/py-evtregistry.c: Same.
-	* python/py-instruction.h: Same.
-	* record-btrace.c: Same.
-	* record-full.c: Same.
-	* remote.c: Same.
-	* rs6000-tdep.c: Same.
-	* ser-tcp.c: Same.
-	* sol-thread.c: Same.
-	* sparc-sol2-tdep.c: Same.
-	* sparc64-tdep.c: Same.
-	* stabsread.c: Same.
-	* symfile.c: Same.
-	* symtab.h: Same.
-	* target.c: Same.
-	* tracepoint.c: Same.
-	* tui/tui-data.h: Same.
-	* tui/tui-io.c: Same.
-	* tui/tui-win.c: Same.
-	* tui/tui.c: Same.
-	* unittests/rsp-low-selftests.c: Same.
-	* user-regs.h: Same.
-	* utils.c: Same.
-	* utils.h: Same.
-	* valarith.c: Same.
-	* valops.c: Same.
-	* valprint.c: Same.
-	* valprint.h: Same.
-	* value.c: Same.
-	* value.h: Same.
-	* varobj.c: Same.
-	* x86-nat.h: Same.
-	* xtensa-tdep.c: Same.
-
-2019-10-25  Ali Tamur <tamur@google.com>
-
-	* charset.c (find_charset_names): Reflect API change.
-
-2019-10-25  Christian Biesinger  <cbiesinger@google.com>
-
-	* symtab.c (struct demangled_name_entry): Change demangled name
-	to a unique_xmalloc_ptr<char>, now that we don't allocate it as
-	part of the struct anymore.
-	(symbol_set_names): No longer obstack allocate + copy the demangled
-	name, just store the allocated name from bfd.
-
-2019-10-25  Tom Tromey  <tromey@adacore.com>
-
-	* dwarf2-frame.c (dwarf2_cie_table): Now a typedef.
-	(bsearch_cie_cmp, add_cie): Remove.
-	(find_cie): Reimplement.
-	(decode_frame_entry_1, decode_frame_entry): Change type.  Update.
-	(dwarf2_build_frame_info): Update.
+	* MAINTAINERS: Mark ms1 as deleted.
 
-2019-10-24  H.J. Lu  <hongjiu.lu@intel.com>
+2020-08-10  Luis Machado  <luis.machado@linaro.org>
 
-	PR gdb/25126
-	* symfile.c (reread_symbols): Call forget_cached_source_info to
-	clear the stale source cache.
+	PR gdb/26310
 
-2019-10-24  Christian Biesinger  <cbiesinger@google.com>
+	* aarch64-tdep.c (aarch64_analyze_prologue): Track use of SP/FP and
+	act accordingly.
+	(aarch64_analyze_prologue_test): Add more unit tests to exercise
+	movz/str/stur/stp skipping behavior.
 
-	* configure: Regenerate.
-	* configure.ac: Remove code that sets python_has_threads.
+2020-08-10  Luis Machado  <luis.machado@linaro.org>
 
-2019-10-24  Christian Biesinger  <cbiesinger@google.com>
+	* nat/aarch64-sve-linux-sigcontext.h (SVE_PT_REGS_OFFSET): Use
+	struct user_sve_header instead of struct sve_context.
 
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* configure.ac: Remove the code that uses sed to get the python
-	version and defines HAVE_LIBPYTHON2_6 / HAVE_LIBPYTHON2_7.
+2020-08-09  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* read.h (dwarf2_fetch_die_loc_sect_off,
+	dwarf2_fetch_die_loc_cu_off): Replace function pointer +
+	`void *` parameter with function_view.
+	* read.c (dwarf2_fetch_die_loc_sect_off,
+	dwarf2_fetch_die_loc_cu_off): Likewise.
+	* loc.c (get_frame_pc_for_per_cu_dwarf_call): Remove.
+	(per_cu_dwarf_call): Adjust.
+	(get_frame_address_in_block_wrapper): Remove.
+	(indirect_synthetic_pointer): Adjust.
+	(get_ax_pc): Remove.
+	(dwarf2_compile_expr_to_ax): Adjust.
 
-	* python/py-progspace.c (pspy_block_for_pc): Return None for all
-	error paths.
+2020-08-08  Tom de Vries  <tdevries@suse.de>
 
-2019-10-23  Tom Tromey  <tom@tromey.com>
+	PR build/26344
+	* arch/riscv.c (riscv_lookup_target_description): Use an explicit
+	constructor.
+	* regcache.c (get_thread_arch_aspace_regcache): Same.
 
-	* arc-tdep.c: Remove ".." from include.
-	* frv-tdep.c: Remove ".." from include.
-	* lm32-tdep.c: Remove ".." from include.
-	* microblaze-tdep.c: Remove ".." from include.
-	* or1k-tdep.h: Remove ".." from include.
-	* s12z-tdep.c: Remove ".." from include.
-	* Makefile.in (OPCODES_CFLAGS): Add comment.
-	(TOP_CFLAGS): New variable.
-	(INTERNAL_CFLAGS_BASE): Add TOP_CFLAGS.
+2020-08-07  Tom Tromey  <tromey@adacore.com>
 
-2019-10-23  Tom Tromey  <tom@tromey.com>
+	* ravenscar-thread.c
+	(ravenscar_thread_target::set_base_thread_from_ravenscar_task):
+	New method.
+	(ravenscar_thread_target::wait): Check
+	runtime_initialized.
+	(ravenscar_thread_target::prepare_to_store)
+	(ravenscar_thread_target::stopped_by_sw_breakpoint)
+	(ravenscar_thread_target::stopped_by_hw_breakpoint)
+	(ravenscar_thread_target::stopped_by_watchpoint)
+	(ravenscar_thread_target::stopped_data_address)
+	(ravenscar_thread_target::core_of_thread): Use
+	scoped_restore_current_thread and
+	set_base_thread_from_ravenscar_task.
 
-	* Makefile.in (READLINE_DIR): Update.
+2020-08-07  Tom Tromey  <tromey@adacore.com>
 
-2019-10-23  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	* ravenscar-thread.c (update_thread_list): Set inferior_ptid.
 
-	* infcall.c (call_function_by_hand_dummy): Fix the function
-	comment.  And extract out a code section into...
-	(reserve_stack_space): ...this new function.
+2020-08-07  Tom Tromey  <tromey@adacore.com>
 
-2019-10-23  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	* ravenscar-thread.c (ravenscar_thread_target::wait): Call
+	update_inferior_ptid before update_thread_list.
+	(temporarily_change_regcache_ptid): New class.
+	(ravenscar_thread_target::fetch_registers)
+	(ravenscar_thread_target::store_registers)
+	(ravenscar_thread_target::prepare_to_store): Use base thread when
+	forwarding operation.
 
-	* infcall.c (value_arg_coerce): Remove an unused parameter.
-	(call_function_by_hand_dummy): Update the call to
-	'value_arg_coerce'.
+2020-08-07  Tom Tromey  <tromey@adacore.com>
 
-2019-10-23  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	* ravenscar-thread.c (ravenscar_thread_target::resume): Handle
+	"is_pid" case.
 
-	* infcall.c (call_function_by_hand_dummy): Refactor.
+2020-08-07  Tom Tromey  <tromey@adacore.com>
 
-2019-10-23  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	* ravenscar-thread.c (xfer_partial, enable_btrace, add_thread):
+	New methods.
+	(ravenscar_thread_target::get_thread_base_cpu): Check m_cpu_map
+	first.
+	(ravenscar_thread_target::add_thread): Rename from
+	ravenscar_add_thread.
+	(ravenscar_thread_target::update_thread_list): Use a lambda.
+	(ravenscar_thread_target::xfer_partial): New method.
+
+2020-08-07  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.h (ada_task_list_iterator_ftype): Now a
+	gdb::function_view.
+	(iterate_over_live_ada_tasks): Change type of argument.
+	* ada-tasks.c (iterate_over_live_ada_tasks): Change type
+	of argument.
 
-	* MAINTAINERS (Write After Approval): Add Tankut Baris Aktemur.
+2020-08-07  Tom Tromey  <tromey@adacore.com>
 
-2019-10-23  Tom Tromey  <tom@tromey.com>
+	* ravenscar-thread.c (ravenscar_thread_target) <extra_thread_info>:
+	Remove.
+	(ravenscar_thread_target::extra_thread_info): Remove.
+	(ravenscar_thread_target::pid_to_str): Mention Ravenscar in result;
+	defer to target beneath for non-Ravenscar threads.
+
+2020-08-07  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (ravenscar_thread_target) <get_base_cpu,
+	get_base_thread_from_ravenscar_task>: Now methods.
+	<m_cpu_map>: New member.
+	(ravenscar_thread_target::get_thread_base_cpu): Rename from
+	ravenscar_get_thread_base_cpu.  Check m_cpu_map.
+	(ravenscar_thread_target::task_is_currently_active): Update.
+	(ravenscar_thread_target::get_base_thread_from_ravenscar_task):
+	Now a method.
+	(ravenscar_thread_target::add_active_thread): Put initial thread
+	into the m_cpu_map.
+
+2020-08-07  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (ravenscar_thread_target::wait): Return
+	event_ptid.
+
+2020-08-07  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (ravenscar_thread_target::wait): Check
+	runtime_initialized.
+
+2020-08-07  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (ravenscar_thread_target): Don't call
+	add_active_thread.
+	(ravenscar_thread_target::add_active_thread): Now public.
+	(ravenscar_inferior_created): Call add_active_thread after pushing
+	the target.
+
+2020-08-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* regcache.c (ptid_regcache_map): New type.
+	(target_ptid_regcache_map): New type.
+	(regcaches): Change type to target_ptid_regcache_map.
+	(get_thread_arch_aspace_regcache): Update to regcaches' new
+	type.
+	(regcache_thread_ptid_changed): Likewise.
+	(registers_changed_ptid): Likewise.
+	(regcaches_size): Likewise.
+	(regcaches_test): Update.
+	(regcache_thread_ptid_changed): Update.
+	* regcache.h (regcache_up): New type.
+	* gdbsupport/ptid.h (hash_ptid): New struct.
+
+2020-08-07  Simon Marchi  <simon.marchi@efficios.com>
+
+	* observable.h (thread_ptid_changed): Add parameter
+	`process_stratum_target *`.
+	* infrun.c (infrun_thread_ptid_changed): Add parameter
+	`process_stratum_target *` and use it.
+	(selftests): New namespace.
+	(infrun_thread_ptid_changed): New function.
+	(_initialize_infrun): Register selftest.
+	* regcache.c (regcache_thread_ptid_changed): Add parameter
+	`process_stratum_target *` and use it.
+	(regcache_thread_ptid_changed): New function.
+	(_initialize_regcache): Register selftest.
+	* thread.c (thread_change_ptid): Pass target to
+	thread_ptid_changed observable.
+
+2020-08-06  Caroline Tice <cmtice@google.com>
+
+	* dwarf2/read.c (struct dwo_file): Update comment on 'sections' field.
+	(struct dwp_sections): Update field comments.  Add loclists and
+	rnglists fields.
+	(struct virtual_v2_dwo_sections): Rename struct to
+	'virtual_v2_or_v5_dwo_sections'; update comments at top of struct; add
+	size & offset fields for loclists and rnglists.
+	(struct dwp_hash_table): Add a 'v5' struct field to the union section.
+	(create_debug_type_hash_table): Add 'DW_UT_split_type' to the check for
+	skipping dummy type units.
+	(create_dwp_hash_table): Update the large comment above the function to
+	discuss Version 5 DWP files as well, with references.  Update all the
+	version checks in the function to check for version 5 as well.  Add new
+	section at the end to create dwp hash table for version 5.
+	(create_dwp_v2_section): Rename function to
+	'create_dwp_v2_or_v5_section'.  Update function comment appropriately.
+	Add V5 to error message text.
+	(create_dwo_unit_in_dwp_v2): Change calls to create_dwp_v2_section
+	into calls to create_dwp_v2_or_v5_section.
+	(create_dwo_unit_in_dwp_v5): New function.
+	(lookup_dwo_unit_in_dwp): Update conditional statement to explicitly
+	check for version2; add else clause to handle version 5.
+	(open_and_init_dwo_file): Add code to check dwarf version & only call
+	create_debug_types_hash_table (with sections.types) if version is not 5;
+	else call create_debug_type_hash_table, with sections.info.
+	(dwarf2_locate_v2_dwp_sections): Update function comment to mention
+	version 5.
+	(dwarf2_locate_v5_dwp_sections): New function.
+	(open_and_init_dwp_file): Add else-if clause for version 5 to call
+	bfd_map_over_sections with dwarf2_locate_v5_dwp_sections.
+
+2020-08-06  Simon Marchi  <simon.marchi@efficios.com>
+
+	* regcache.h (class regcache): Remove friend
+	registers_changed_ptid.
+	<regcache_thread_ptid_changed>: Remove.
+	<regcaches>: Remove.
+	* regcache.c (regcache::regcaches): Rename to...
+	(regcaches): ... this.  Make static.
+	(get_thread_arch_aspace_regcache): Update.
+	(regcache::regcache_thread_ptid_changed): Rename to...
+	(regcache_thread_ptid_changed): ... this.  Update.
+	(class regcache_access): Remove.
+	(regcaches_test): Update.
+	(_initialize_regcache): Update.
+	* sparc64-tdep.c, dwarf2/index-write.c, record-btrace.c: Include
+	<forward_list>.
+
+2020-08-06  Simon Marchi  <simon.marchi@efficios.com>
+
+	* regcache.h (class regcache) <current_regcache>: Rename to...
+	<regcaches>: ... this.  Move doc here.
+	* regcache.c (regcache::current_regcache) Rename to...
+	(regcache::regcaches): ... this.  Move doc to header.
+	(get_thread_arch_aspace_regcache): Update.
+	(regcache::regcache_thread_ptid_changed): Update.
+	(registers_changed_ptid): Update.
+	(class regcache_access) <current_regcache_size>: Rename to...
+	<regcaches_size>: ... this.
+	(current_regcache_test): Rename to...
+	(regcaches_test): ... this.
+	(_initialize_regcache): Update.
+
+2020-08-06  Victor Collod  <vcollod@nvidia.com>
+
+	* amd64-tdep.c (amd64_analyze_prologue): Fix incorrect comment.
+
+2020-08-05  Kevin Buettner  <kevinb@redhat.com>
+
+	* corelow.c (core_target::build_file_mappings): Don't output
+	null pathname in warning.
+
+2020-08-05  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdb.dwarf2/clztest.exp, gdb.dwarf2/dw2-common-block.exp,
+	gdb.dwarf2/dw2-dup-frame.exp, gdb.dwarf2/dw2-reg-undefined.exp,
+	gdb.dwarf2/dw2-single-line-discriminators.exp,
+	dw2-undefined-ret-addr.exp: Pass nopie to compilation options.
+
+2020-08-05  Tom Tromey  <tromey@adacore.com>
+
+	PR rust/26197:
+	* dwarf2/read.c (alloc_rust_variant): Handle univariant case.
+	(quirk_rust_enum): Call alloc_rust_variant for univariant case.
+	Fix off-by-one and type size errors in ordinary case.
+
+2020-08-05  Tom de Vries  <tdevries@suse.de>
+
+	* gdbtypes.c (type_not_allocated, type_not_associated): Use
+	"prop->const_val () == 0" instead of "prop->const_val () != 0".
+
+2020-08-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* frame.h (frame_id_p): Return bool.
+	(frame_id_artificial_p): Return bool.
+	(frame_id_eq): Return bool.
+	(has_stack_frames): Return bool.
+	(get_selected_frame): Fix typo in comment.
+	(get_frame_pc_if_available): Return bool.
+	(get_frame_address_in_block_if_available): Return bool.
+	(get_frame_func_if_available): Return bool.
+	(read_frame_register_unsigned): Return bool.
+	(get_frame_register_bytes): Return bool.
+	(safe_frame_unwind_memory): Return bool.
+	(deprecated_frame_register_read): Return bool.
+	(frame_unwinder_is): Return bool.
+	* frame.c (struct frame_info) <prev_arch::p>: Change type to
+	bool.
+	<this_id::p>: Likewise.
+	<prev_p>: Likewise.
+	(frame_stash_add): Return bool.
+	(get_frame_id): Use bool.
+	(frame_id_build_special) Use bool.
+	(frame_id_build_unavailable_stack): Use bool.
+	(frame_id_build): Use bool.
+	(frame_id_p): Return bool, use true/false instead of 1/0.
+	(frame_id_artificial_p): Likewise.
+	(frame_id_eq): Likewise.
+	(frame_id_inner): Likewise.
+	(get_frame_func_if_available): Likewise.
+	(read_frame_register_unsigned): Likewise.
+	(deprecated_frame_register_read): Likewise.
+	(get_frame_register_bytes): Likewise.
+	(has_stack_frames): Likewise.
+	(inside_main_func): Likewise.
+	(inside_entry_func): Likewise.
+	(get_frame_pc_if_available): Likewise.
+	(get_frame_address_in_block_if_available): Likewise.
+	(frame_unwinder_is): Likewise.
+	(safe_frame_unwind_memory): Likewise.
+	(frame_unwind_arch): Likewise.
 
-	* configure: Rebuild.
-	* configure.ac: Don't check for sigprocmask.
-	* gdbsupport/common.m4 (GDB_AC_COMMON): Check for sigprocmask.
+2020-08-04  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-10-23  Tom Tromey  <tom@tromey.com>
+	* frame.c (frame_info) <prev_func> <p>: Rename to status, change
+	type to cached_copy_status.
+	(fprintf_frame): Adjust.
+	(get_frame_func_if_available): Adjust.
+	(frame_cleanup_after_sniffer): Adjust.
 
-	* configure: Rebuild.
-	* acinclude.m4: Use m4_include, not sinclude.
+2020-08-04  Mark Wielaard  <mark@klomp.org>
 
-2019-10-23  Tom de Vries  <tdevries@suse.de>
+	* MAINTAINERS (Write After Approval): Update email address.
 
-	PR breakpoints/24687
-	* symtab.c (iterate_over_some_symtabs): Apply gdb_realpath on fullname.
+2020-08-04  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-22  Christian Biesinger  <cbiesinger@google.com>
+	* gdbtypes.h (TYPE_DYN_PROP_ADDR): Remove, replace uses with
+	dynamic_prop::const_val.
 
-	* symtab.c (struct demangled_name_entry) <language>: Change from
-	bitfield to regular variable.
+2020-08-04  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-22  Christian Biesinger  <cbiesinger@google.com>
+	* gdbtypes.h (TYPE_DYN_PROP_KIND): Remove, replace uses with
+	dynamic_prop::kind.
 
-	* symtab.c (struct demangled_name_entry): Add a constructor.
-	(free_demangled_name_entry): New function to call the destructor
-	for demangled_name_entry.
-	(create_demangled_names_hash): Pass free_demangled_name_entry to
-	htab_create_alloc.
-	(symbol_set_names): Call placement new for demangled_name_entry.
-	* utils.c: No longer include xxhash.h here, now that fast_hash
-	is inlined in the header.
-	* utils.h: Instead, include it here.
+2020-08-04  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-22  Christian Biesinger  <cbiesinger@google.com>
+	* gdbtypes.h (TYPE_DYN_PROP_BATON): Remove.
 
-	* Makefile.in: Link with libxxhash.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* configure.ac: Search for libxxhash.
-	* utils.c (fast_hash): Use xxhash if present.
+2020-08-04  Jose E. Marchesi  <jose.marchesi@oracle.com>
 
-2019-10-22  Christian Biesinger  <cbiesinger@google.com>
+	* configure.tgt: Set gdb_sim for bpf-*-* targets.
 
-	* utils.h (fast_hash): New function.
-	* symtab.c (hash_demangled_name_entry): Call new function
-	fast_hash.
-
-2019-10-22  Christian Biesinger  <cbiesinger@google.com>
-
-	* symtab.c (struct demangled_name_entry): Change type of mangled
-	to gdb::string_view. Also adds a constructor that takes the
-	mangled name.
-	(hash_demangled_name_entry): Update.
-	(eq_demangled_name_entry): Update.
-	(free_demangled_name_entry): New function to call the destructor
-	now that this is not a POD anymore.
-	(create_demangled_names_hash): Pass free_demangled_name_entry to
-	htab_create_alloc.
-	(symbol_set_names): Update.
-
-2019-10-21  Ali Tamur  <tamu@google.com>
-
-	* dwarf2read.c (dir_index): Change type.
-	(file_name_index): Likewise.
-	(line_header::include_dir_at): Change comment and implementation on
-	whether it is DWARF 5.
-	(line_header::is_valid_file_index): New function.
-	(line_header::file_name_at): Change comment and implementation on
-	whether it is DWARF 5.
-	(line_header::file_names): Change to private field renamed as
-	m_file_names and introduce a new accessor method.
-	(line_header::file_names_size): New method.
-	(line_header::include_dirs): Change to private field and rename as
-	m_include_dirs.
-	(dw2_get_file_names_reader): Define local var at a smaller scope and
-	reflect API change.
-	(dwarf2_cu::setup_type_unit_groups): Reflect API change.
-	(process_structure_scope): Likewise.
-	(line_header::add_include_dir): Change message and reflect renaming.
-	(line_header::add_file_name): Likewise.
-	(read_formatted_entries): Handle DW_FORM_data16.
-	(dwarf_decode_line_header): Fix line header length calculation.
-	(psymtab_include_file_name): Change comment and API.
-	(lnp_state_machine::m_file): Update comment and reflect type change.
-	(lnp_state_machine::record_line): Reflect type change.
-	(dwarf_decode_lines): Reflect API change.
-	(file_file_name): Likewise.
-	(file_full_name): Likewise.
+2020-08-04  Weimin Pan <weimin.pan@oracle.com>
+	    Jose E. Marchesi  <jose.marchesi@oracle.com>
 
-2019-10-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* configure.tgt: Add entry for bpf-*-*.
+	* Makefile.in (ALL_TARGET_OBS): Add bpf-tdep.o
+	(ALLDEPFILES): Add bpf-tdep.c.
+	* bpf-tdep.c: New file.
+	* MAINTAINERS: Add bpf target and maintainer.
+	* NEWS: Mention the support for the new target.
 
-	* objfiles.c (sort_cmp): Ensure that !(a < a) holds true.
+2020-08-04  Tom de Vries  <tdevries@suse.de>
 
-2019-10-21  Tom Tromey  <tom@tromey.com>
+	PR symtab/23270
+	* dwarf2/read.c (find_partial_die): Change internal error into Dwarf
+	Error.
 
-	* tui/tui-winsource.h (tui_exec_info_content): Remove typedef.
+2020-08-03  John Baldwin  <jhb@FreeBSD.org>
 
-2019-10-21  Tom Tromey  <tom@tromey.com>
+	* syscalls/freebsd.xml: Regenerate.
 
-	* configure.ac (nm.h): Conditionally create nm.h link.  Subst
-	NM_H.   Use AC_CONFIG_LINKS.
-	* configure: Rebuild.
-	* Makefile.in (NM_H): New variable.
-	(generated_files): Add NM_H.  Remove gcore.
-	(nm.h, stamp-nmh): New targets.
+2020-08-03  John Baldwin  <jhb@FreeBSD.org>
 
-2019-10-20  Tom Tromey  <tom@tromey.com>
+	* syscalls/update-freebsd.sh: Fix usage and year range.
 
-	* objfiles.h (unlink_objfile, put_objfile_before): Don't declare.
-	* objfiles.c (unlink_objfile): Move earlier.  Now static.  Remove
-	obsolete comment.
-	(put_objfile_before): Now static.
+2020-08-03  Tom de Vries  <tdevries@suse.de>
 
-2019-10-19  Simon Marchi  <simon.marchi@polymtl.ca>
+	PR symtab/26333
+	* dwarf2/read.c (dwarf_decode_lines_1): Ignore
+	DW_LNE_lo_user/DW_LNE_hi_user range.
 
-	* gdbsupport/common-utils.h (startswith): Change return type to
-	bool.
+2020-07-30  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-19  Christian Biesinger  <cbiesinger@google.com>
+	PR ada/26318
+	* ada-lang.c (ada_modulus): Return 0 if property is not of const
+	kind.
 
-	* bcache.c (bcache::print_statistics): Use std::sort instead of qsort.
-	* breakpoint.c (bp_locations_compare): Rename to...
-	(bp_location_is_less_than): ...this, and change to std::sort semantics.
-	(update_global_location_list): Use std::sort instead of qsort.
-	* buildsym.c (compare_line_numbers): Rename to...
-	(lte_is_less_than): ...this, and change to std::sort semantics.
-	(buildsym_compunit::end_symtab_with_blockvector): Use std::sort
-	instead of qsort.
-	* disasm.c (compare_lines): Rename to...
-	(line_is_less_than): ...this, and change to std::sort semantics.
-	(do_mixed_source_and_assembly_deprecated): Call std::sort instead
-	of qsort.
-	* dwarf2-frame.c (qsort_fde_cmp): Rename to...
-	(fde_is_less_than): ...this, and change to std::sort semantics.
-	(dwarf2_build_frame_info): Call std::sort instead of qsort.
-	* mdebugread.c (compare_blocks):
-	(block_is_less_than): ...this, and change to std::sort semantics.
-	(sort_blocks): Call std::sort instead of qsort.
-	* objfiles.c (qsort_cmp): Rename to...
-	(sort_cmp): ...this, and change to std::sort semantics.
-	(update_section_map): Call std::sort instead of qsort.
-	* remote.c (compare_pnums): Remove.
-	(map_regcache_remote_table): Call std::sort instead of qsort.
-	* utils.c (compare_positive_ints): Remove.
-	* utils.h (compare_positive_ints): Remove.
-	* xcoffread.c (compare_lte): Remove.
-	(arrange_linetable): Call std::sort instead of qsort.
-
-2019-10-19  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* symfile.c (init_entry_point_info): Fix typo.
-	* i386-darwin-tdep.c (darwin_dwarf_signal_frame_p): Fix typo.
-
-2019-10-18  Tom de Vries  <tdevries@suse.de>
-
-	* aarch64-tdep.c: Fix typos in comments.
-	* ada-lang.c: Same.
-	* ada-tasks.c: Same.
-	* alpha-tdep.c: Same.
-	* alpha-tdep.h: Same.
-	* amd64-nat.c: Same.
-	* amd64-windows-tdep.c: Same.
-	* arc-tdep.c: Same.
-	* arc-tdep.h: Same.
-	* arch-utils.c: Same.
-	* arm-nbsd-tdep.c: Same.
-	* arm-tdep.c: Same.
-	* ax-gdb.c: Same.
-	* blockframe.c: Same.
-	* btrace.c: Same.
-	* c-varobj.c: Same.
-	* coff-pe-read.c: Same.
-	* coffread.c: Same.
-	* cris-tdep.c: Same.
-	* darwin-nat.c: Same.
-	* dbxread.c: Same.
-	* dcache.c: Same.
-	* disasm.c: Same.
-	* dtrace-probe.c: Same.
-	* dwarf-index-write.c: Same.
-	* dwarf2-frame-tailcall.c: Same.
-	* dwarf2-frame.c: Same.
-	* dwarf2read.c: Same.
-	* eval.c: Same.
-	* exceptions.c: Same.
-	* fbsd-tdep.c: Same.
-	* findvar.c: Same.
-	* frame.c: Same.
-	* frv-tdep.c: Same.
-	* gnu-v3-abi.c: Same.
-	* go32-nat.c: Same.
-	* h8300-tdep.c: Same.
-	* hppa-tdep.c: Same.
-	* i386-linux-tdep.c: Same.
-	* i386-tdep.c: Same.
-	* ia64-libunwind-tdep.c: Same.
-	* ia64-tdep.c: Same.
-	* infcmd.c: Same.
-	* infrun.c: Same.
-	* linespec.c: Same.
-	* linux-nat.c: Same.
-	* linux-thread-db.c: Same.
-	* machoread.c: Same.
-	* mdebugread.c: Same.
-	* mep-tdep.c: Same.
-	* mn10300-tdep.c: Same.
-	* namespace.c: Same.
-	* objfiles.c: Same.
-	* opencl-lang.c: Same.
-	* or1k-tdep.c: Same.
-	* osabi.c: Same.
-	* ppc-linux-nat.c: Same.
-	* ppc-linux-tdep.c: Same.
-	* ppc-sysv-tdep.c: Same.
-	* printcmd.c: Same.
-	* procfs.c: Same.
-	* record-btrace.c: Same.
-	* record-full.c: Same.
-	* remote-fileio.c: Same.
-	* remote.c: Same.
-	* rs6000-tdep.c: Same.
-	* s12z-tdep.c: Same.
-	* score-tdep.c: Same.
-	* ser-base.c: Same.
-	* ser-go32.c: Same.
-	* skip.c: Same.
-	* sol-thread.c: Same.
-	* solib-svr4.c: Same.
-	* solib.c: Same.
-	* source.c: Same.
-	* sparc-nat.c: Same.
-	* sparc-sol2-tdep.c: Same.
-	* sparc-tdep.c: Same.
-	* sparc64-tdep.c: Same.
-	* stabsread.c: Same.
-	* stack.c: Same.
-	* symfile.c: Same.
-	* symtab.c: Same.
-	* target-descriptions.c: Same.
-	* target-float.c: Same.
-	* thread.c: Same.
-	* utils.c: Same.
-	* valops.c: Same.
-	* valprint.c: Same.
-	* value.c: Same.
-	* varobj.c: Same.
-	* windows-nat.c: Same.
-	* xcoffread.c: Same.
-	* xstormy16-tdep.c: Same.
-	* xtensa-tdep.c: Same.
+2020-07-30  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-2019-10-17  Tom Tromey  <tromey@adacore.com>
+	* breakpoint.c (set_breakpoint_condition): Do minor refactoring.
 
-	* configure: Rebuild.
-	* configure.ac: Use AC_CONFIG_HEADERS.  Create stamp-h there, not
-	in AC_CONFIG_FILES invocation.
-	* Makefile.in (Makefile, data-directory/Makefile, stamp-h): Use
-	new-style config.status invocation.
-
-2019-10-17  Tom de Vries  <tdevries@suse.de>
-
-	* arm-nbsd-nat.c: Fix typos in comments.
-	* arm-tdep.c: Same.
-	* darwin-nat-info.c: Same.
-	* dwarf2read.c: Same.
-	* elfread.c: Same.
-	* event-top.c: Same.
-	* findvar.c: Same.
-	* gdbtypes.c: Same.
-	* hppa-tdep.c: Same.
-	* i386-tdep.c: Same.
-	* jit.c: Same.
-	* main.c: Same.
-	* mdebugread.c: Same.
-	* moxie-tdep.c: Same.
-	* nto-procfs.c: Same.
-	* osabi.c: Same.
-	* ppc-linux-tdep.c: Same.
-	* remote.c: Same.
-	* riscv-tdep.c: Same.
-	* s390-tdep.c: Same.
-	* sh-tdep.c: Same.
-	* sparc-linux-tdep.c: Same.
-	* sparc-nat.c: Same.
-	* stack.c: Same.
-	* target-descriptions.c: Same.
-	* top.c: Same.
-	* varobj.c: Same.
-
-2019-10-16  Tom Tromey  <tom@tromey.com>
-
-	* objfiles.h (struct objfile) <original_name>: Now const.
-
-2019-10-16  Christian Biesinger  <cbiesinger@google.com>
-
-	* gdbsupport/gdb_setjmp.h (SIGSETJMP): Allow passing in the value to
-	pass on to sigsetjmp's second argument.
-	* cp-support.c (gdb_demangle): Unblock SIGSEGV if we caught a crash.
-
-2019-10-16  Keith Seitz  <keiths@redhat.com>
-
-	PR gdb/23567
-	* dwarf2read.c (dwarf2_per_objfile::locate_sections): Discard
-	sections whose size is greater than the file size.
-
-2019-10-16  Jim Wilson  <jimw@sifive.com>
-
-	* riscv-tdep.c (riscv_gcc_target_options): New.
-	(riscv_gnu_triplet_regexp): New.
-	(riscv_gdbarch_init): Call set_gdbarch_gcc_triplet_options and
-	set_gdbarch_gnu_triplet_regexp.
-
-2019-10-16  Christian Biesinger  <cbiesinger@google.com>
-
-	* Makefile.in: Add xml-builtin.h.
-	* features/feature_to_c.sh: Add an include for xml-builtin.h
-	to ensure that the compiler checks that the types match.
-	* xml-builtin.h: New file.
-	* xml-support.c (fetch_xml_builtin): Add missing const.
-	* xml-support.h: Remove declaration of xml_builtins.
-
-2019-10-16  Tom de Vries  <tdevries@suse.de>
-
-	PR tdep/25096
-	* amd64-tdep.c (amd64_classify_aggregate_field): Factor out of ...
-	(amd64_classify_aggregate): ... here.
-	(amd64_classify_aggregate_field): Handled fiels of nested structs
-	recursively.
-
-2019-10-16  Tom de Vries  <tdevries@suse.de>
-
-	PR tdep/24104
-	* amd64-tdep.c (amd64_push_arguments): Handle AMD64_NO_CLASS in loop
-	that handles 'theclass'.
-
-2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* linespec.c (decode_digits_ordinary): Update comment.
-	* make-target-delegates: No longer need to handle VEC case.
-	* memrange.c (normalize_mem_ranges): Update comment.
-	* namespace.c (add_using_directive): Update comment.
-	* objc-lang.c (uniquify_strings): Update comment.
-	* ppc-linux-nat.c (struct thread_points): Update comment.
-	* probe.h (find_probes_in_objfile): Update comment.
-	* target.h (enum flash_preserve_mode): Update comment.
-	* varobj.c (varobj_restrict_range): Update comment.
-	* varobj.h (varobj_list_children): Update comment.
-
-2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* Makefile.in: Remove references to vec.h and vec.c.
-	* aarch64-tdep.c: No longer include vec.h.
-	* ada-lang.c: Likewise.
-	* ada-lang.h: Likewise.
-	* arm-tdep.c: Likewise.
-	* ax.h: Likewise.
-	* breakpoint.h: Likewise.
-	* charset.c: Likewise.
-	* cp-support.h: Likewise.
-	* dtrace-probe.c: Likewise.
-	* dwarf2read.c: Likewise.
-	* extension.h: Likewise.
-	* gdb_bfd.c: Likewise.
-	* gdbsupport/gdb_vecs.h: Likewise.
-	* gdbsupport/vec.c: Remove.
-	* gdbsupport/vec.h: Remove.
-	* gdbthread.h: Likewise.
-	* guile/scm-type.c: Likewise.
-	* inline-frame.c: Likewise.
-	* machoread.c: Likewise.
-	* memattr.c: Likewise.
-	* memrange.h: Likewise.
-	* namespace.h: Likewise.
-	* nat/linux-btrace.h: Likewise.
-	* osdata.c: Likewise.
-	* parser-defs.h: Likewise.
-	* progspace.h: Likewise.
-	* python/py-type.c: Likewise.
-	* record-btrace.c: Likewise.
-	* rust-exp.y: Likewise.
-	* solib-target.c: Likewise.
-	* stap-probe.c: Likewise.
-	* target-descriptions.c: Likewise.
-	* target-memory.c: Likewise.
-	* target.h: Likewise.
-	* varobj.c: Likewise.
-	* varobj.h: Likewise.
-	* xml-support.h: Likewise.
+2020-07-30  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* breakpoint.c (set_breakpoint_condition): Update the condition
+	expressions after checking that the input condition string parses
+	successfully and does not contain junk at the end.
 
-	* gdb/dwarf2read.c (dwarf2_per_objfile::~dwarf2_per_objfile):
-	Update for new std::vector based implementation.
-	(process_psymtab_comp_unit_reader): Likewise.
-	(scan_partial_symbols): Likewise.
-	(recursively_compute_inclusions): Likewise.
-	(compute_compunit_symtab_includes): Likewise.
-	(process_imported_unit_die): Likewise.
-	(queue_and_load_dwo_tu): Likewise.
-	(follow_die_sig_1): Likewise.
-	* gdb/dwarf2read.h: Remove DEF_VEC_P.
-	(typedef dwarf2_per_cu_ptr): Remove.
-	(struct dwarf2_per_cu_data) <imported_symtabs_empty>: New
-	function.
-	(struct dwarf2_per_cu_data) <imported_symtabs_push>: New function.
-	(struct dwarf2_per_cu_data) <imported_symtabs_size>: New function.
-	(struct dwarf2_per_cu_data) <imported_symtabs_free>: New function.
-	(struct dwarf2_per_cu_data) <imported_symtabs>: Change to
-	std::vector.
+2020-07-30  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-2019-10-15  Tom Tromey  <tromey@adacore.com>
+	* breakpoint.c (set_breakpoint_condition): Update the
+	condition string after parsing the new condition successfully.
 
-	* windows-nat.c (windows_nat_target::resume): Use %x when logging
-	TID.
+2020-07-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
-2019-10-15  Tom Tromey  <tromey@adacore.com>
+	* proc-api.c (_STRUCTURED_PROC): Don't define.
+	* proc-events.c: Likewise.
+	* proc-flags.c: Likewise.
+	* proc-why.c: Likewise.
+	* procfs.c: Likewise.
 
-	* windows-nat.c (windows_nat_target::fetch_registers)
-	(windows_nat_target::store_registers): Rename "pid" to "tid".
+	* Makefile.in (INTERNAL_CPPFLAGS): Add LARGEFILE_CPPFLAGS.
+	* configure, config.in: Regenerate.
 
-2019-10-15  Tom Tromey  <tromey@adacore.com>
+2020-07-30  Tom de Vries  <tdevries@suse.de>
 
-	* gdbarch.h, gdbarch.c: Rebuild.
-	* gdbarch.sh (gcc_target_options): Change return type to
-	std::string.
-	* compile/compile.c (get_args): Update.
-	* nios2-tdep.c (nios2_gcc_target_options): Return std::string.
-	* arm-linux-tdep.c (arm_linux_gcc_target_options): Return
-	std::string.
-	* aarch64-linux-tdep.c (aarch64_linux_gcc_target_options): Return
-	std::string.
-	* arch-utils.c (default_gcc_target_options): Return std::string.
-	* arch-utils.h (default_gcc_target_options): Return std::string.
-	* s390-tdep.c (s390_gcc_target_options): Return std::string.
-
-2019-10-15  Christian Biesinger  <cbiesinger@google.com>
-
-	* breakpoint.c (breakpoint_chain): Make static.
-	* tui/tui-winsource.c: Call iterate_over_breakpoints instead
-	of accessing breakpoint_chain.
-
-2019-10-15  Christian Biesinger  <cbiesinger@google.com>
-
-	* breakpoint.c (iterate_over_breakpoints): Change function pointer
-	to a gdb::function_view and return value to bool.
-	* breakpoint.h (iterate_over_breakpoints): Likewise.
-	* dummy-frame.c (pop_dummy_frame_bpt): Update.
-	(pop_dummy_frame): Update.
-	* guile/scm-breakpoint.c (bpscm_build_bp_list): Update.
-	(gdbscm_breakpoints): Update.
-	* python/py-breakpoint.c (build_bp_list): Update.
-	(gdbpy_breakpoints): Update.
-	* python/py-finishbreakpoint.c (bpfinishpy_detect_out_scope_cb):
-	Update.
-	(bpfinishpy_handle_stop): Update.
-	(bpfinishpy_handle_exit): Update.
-	* solib-svr4.c (svr4_update_solib_event_breakpoint): Update.
-	(svr4_update_solib_event_breakpoints): Update.
+	PR build/26320
+	* ui-style.h (struct ui_file_style::color): Wrap m_value and
+	m_red/m_green/m_blue in a union.
 
-2019-10-15  Andreas Arnez  <arnez@linux.ibm.com>
+2020-07-29  Tom de Vries  <tdevries@suse.de>
 
-	* s390-tdep.c (s390_effective_inner_type): Ignore static fields
-	when unwrapping single-field structs.
+	PR tdep/26280
+	* s390-tdep.c (s390_displaced_step_fixup): Fix Wmaybe-uninitialized.
 
-2019-10-14  Simon Marchi  <simon.marchi@polymtl.ca>
+2020-07-28  Tom Tromey  <tromey@adacore.com>
 
-	* dwarf2read.c: Remove includes.
+	PR symtab/26270:
+	* symtab.h (find_pc_partial_function_sym): Declare.
+	* cli/cli-cmds.c (disassemble_command): Use
+	find_pc_partial_function_sym.  Check asm_demangle.
+	* blockframe.c (cache_pc_function_sym): New global.
+	(cache_pc_function_name): Remove.
+	(clear_pc_function_cache): Update.
+	(find_pc_partial_function_sym): New function, from
+	find_pc_partial_function.
+	(find_pc_partial_function): Rewrite using
+	find_pc_partial_function_sym.
 
-2019-10-13  Simon Marchi  <simon.marchi@polymtl.ca>
+2020-07-28  Tom Tromey  <tromey@adacore.com>
 
-	* ui-out.c (ui_out::call_do_message): Silence
-	-Wformat-nonliteral warning.
+	* cli/cli-cmds.c (_initialize_cli_cmds): Rearrange "disassemble"
+	help.  Add usage.
 
-2019-10-12  Simon Marchi  <simon.marchi@polymtl.ca>
+2020-07-28  Tom Tromey  <tromey@adacore.com>
 
-	* breakpoint.c: Remove some includes: continuations.h, skip.h,
-	mi/mi-main.h, readline/readline.h, readline/history.h.  Add
-	include: readline/tilde.h.
+	* dwarf2/expr.c (dwarf_expr_context::execute_stack_op)
+	<DW_OP_GNU_variable_value>: Cast to address type.
 
-2019-10-12  Christian Biesinger  <cbiesinger@google.com>
+2020-07-28  Kamil Rytarowski  <n54@gmx.com>
 
-	* remote.c (remote_target::get_trace_status): Remove declaration of
-	trace_regblock_size.
+	* nbsd-nat.h (nbsd_nat_target::xfer_partial): New declaration.
+	* nbsd-nat.c (nbsd_nat_target::xfer_partial): New function.
+	* nbsd-tdep.c (nbsd_gdbarch_data_handle, struct nbsd_gdbarch_data)
+	(init_nbsd_gdbarch_data, get_nbsd_gdbarch_data)
+	(nbsd_get_siginfo_type): New.
+	(nbsd_init_abi): Install gdbarch "get_siginfo_type" method.
+	(_initialize_nbsd_tdep): New.
 
-2019-10-12  Christian Biesinger  <cbiesinger@google.com>
+2020-07-28  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* cli/cli-cmds.c (max_user_call_depth): Move comment to header.
-	(show_user): Remove declaration of cmdlist.
-	* cli/cli-cmds.h (max_user_call_depth): Declare.
-	* cli/cli-script.c (execute_user_command): Remove declaration
-	of max_user_call_depth.
+	PR binutils/26301
+	* configure: Regenerated.
 
-2019-10-11  Jim Wilson  <jimw@sifive.com>
+2020-07-28  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* gdbsupport/print-utils.h (pulongest): Fix comment.
-	(plongest): Likewise.
-	(phex): Add missing comment, mention leading zeros.
-	(phex_nz): Add mention of no leading zeros to comment.
+	PR binutils/26301
+	* configure: Regenerated.
 
-	* riscv-tdep.c (riscv_push_dummy_code): Change %lld to %s and use
-	plongest instead of unsigned long long cast.
+2020-07-28  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-10-10  Christian Biesinger  <cbiesinger@google.com>
+	* python/py-frame.c: Remove 'user-regs.h' include.
+	(frapy_read_register): Rewrite to make use of
+	gdbpy_parse_register_id.
+	* python/py-registers.c (gdbpy_parse_register_id): New function,
+	moved here from python/py-unwind.c.  Updated the return type, and
+	also accepts register descriptor objects.
+	* python/py-unwind.c: Remove 'user-regs.h' include.
+	(pyuw_parse_register_id): Moved to python/py-registers.c.
+	(unwind_infopy_add_saved_register): Update to use
+	gdbpy_parse_register_id.
+	(pending_framepy_read_register): Likewise.
+	* python/python-internal.h (gdbpy_parse_register_id): Declare.
 
-	* main.c (captured_main_1): Include gdbtk.h and remove declarations
-	for external_editor_command and gdbtk_test.
+2020-07-28  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-10-10  Christian Biesinger  <cbiesinger@google.com>
+	* python/py-registers.c: Add 'user-regs.h' include.
+	(register_descriptor_iter_find): New function.
+	(register_descriptor_iterator_object_methods): New static global
+	methods array.
+	(register_descriptor_iterator_object_type): Add pointer to methods
+	array.
 
-	* mi/mi-cmd-var.c (varobjdebug): Remove declaration.
-	* varobj.c (varobjdebug): Move comment to...
-	* varobj.h (varobjdebug): ...here, and declare.
+2020-07-27  John Baldwin  <jhb@FreeBSD.org>
 
-2019-10-09  Tom Tromey  <tom@tromey.com>
+	* fbsd-nat.h: Include <osreldate.h>.  Define USE_SIGTRAP_SIGINFO
+	for all architectures on FreeBSD 11.3 and later.
 
-	* tui/tui-regs.c (tui_data_window::show_registers): Don't call
-	erase_data_content.
+2020-07-27  Tom Tromey  <tromey@adacore.com>
 
-2019-10-09  Tom Tromey  <tom@tromey.com>
+	* gcore.h (load_corefile): Don't declare.
 
-	* tui/tui-wingeneral.h (tui_delete_win): Don't declare.
-	* tui/tui-stack.c (tui_locator_window::rerender): Update.
-	* tui/tui-command.c (tui_cmd_window::resize)
-	(tui_refresh_cmd_win): Update.
-	* tui/tui-win.c (tui_resize_all, tui_set_focus_command): Update.
-	* tui/tui.c (tui_rl_other_window, tui_enable): Update.
-	* tui/tui-data.c (~tui_gen_win_info): Remove.
-	* tui/tui-layout.c (tui_gen_win_info::resize): Update.
-	* tui/tui-io.c (update_cmdwin_start_line, tui_putc, tui_puts)
-	(tui_redisplay_readline, tui_mld_flush)
-	(tui_mld_erase_entire_line, tui_mld_getc, tui_getc): Update.
-	* tui/tui-regs.c (tui_data_window::delete_data_content_windows)
-	(tui_data_window::erase_data_content)
-	(tui_data_item_window::rerender)
-	(tui_data_item_window::refresh_window): Update.
-	* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window)
-	(box_win, tui_gen_win_info::make_window)
-	(tui_gen_win_info::make_visible): Update.
-	(tui_delete_win): Remove.
-	* tui/tui-winsource.c
-	(tui_source_window_base::do_erase_source_content): Update.
-	(tui_show_source_line, tui_source_window_base::update_tab_width)
-	(tui_source_window_base::update_exec_info): Update.
-	* tui/tui-data.h (struct curses_deleter): New.
-	(struct tui_gen_win_info) <handle>: Now a unique_ptr.
-	(struct tui_gen_win_info) <~tui_gen_win_info>: Define.
+2020-07-27  Tom de Vries  <tdevries@suse.de>
 
-2019-10-09  Tom Tromey  <tom@tromey.com>
+	* configure.ac: Fix sys/sockets.h -> sys/socket.h typo.
+	* config.in: Regenerate.
+	* configure: Regenerate.
 
-	* tui/tui-wingeneral.h (struct tui_gen_win_info): Don't declare.
+2020-07-26  Eli Zaretskii  <eliz@gnu.org>
 
-2019-10-09  Tom Tromey  <tom@tromey.com>
+	* configure.ac (AC_CHECK_HEADERS): Check for sys/socket.h and
+	ws2tcpip.h.  When checking whether socklen_t type is defined, use
+	ws2tcpip.h if it is available and sys/socket.h isn't.
+	* configure: Regenerate.
+	* config.in: Regenerate.
 
-	* tui/tui-data.c (tui_win_is_auxiliary): Remove.
-	* tui/tui-data.h (tui_win_is_auxiliary): Don't declare.
+2020-07-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-10-09  Tom Tromey  <tom@tromey.com>
+	PR fortran/23051
+	PR fortran/26139
+	* valops.c (value_ind): Pass address to
+	readjust_indirect_value_type.
+	* value.c (readjust_indirect_value_type): Make parameter
+	non-const, and add extra address parameter.  Resolve original type
+	before using it.
+	* value.h (readjust_indirect_value_type): Update function
+	signature and comment.
+
+2020-07-25  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26243
+	* dwarf2/read.c (lnp_state_machine::record_line): Ignore zero line
+	entries.
 
-	* tui/tui-disasm.c (tui_get_low_disassembly_address): Compute
-	window height directly.
-	* tui/tui-layout.h (tui_default_win_viewport_height): Don't
-	declare.
-	* tui/tui-layout.c (tui_default_win_height): Remove.
-	(tui_default_win_viewport_height): Remove.
+2020-07-24  Aaron Merey  <amerey@redhat.com>
 
-2019-10-09  Tom Tromey  <tom@tromey.com>
+	* Makefile.in: Replace LIBDEBUGINFOD with DEBUGINFOD_LIBS.
+	* configure: Rebuild.
 
-	* tui/tui.h: Remove comments.
+2020-07-23  Kevin Buettner  <kevinb@redhat.com>
 
-2019-10-09  Tom de Vries  <tdevries@suse.de>
+	PR corefiles/26294
+	* corelow.c (_initialize_corelow): Add period to help text
+	for "maintenance print core-file-backed-mappings".
+
+2020-07-23  Pedro Alves  <pedro@palves.net>
+
+	* frame-unwind.c (frame_unwind_try_unwinder): On exception, don't
+	touch THIS_CACHE/THIS_FRAME if the frame cache was cleared
+	meanwhile.
+	* frame.c (frame_cache_generation, get_frame_cache_generation):
+	New.
+	(reinit_frame_cache): Increment FRAME_CACHE_GENERATION.
+	(get_prev_frame_if_no_cycle): On exception, don't touch
+	PREV_FRAME/THIS_FRAME if the frame cache was cleared meanwhile.
+	* frame.h (get_frame_cache_generation): Declare.
+
+2020-07-23  Tom de Vries  <tdevries@suse.de>
+
+	PR tui/26282
+	* tui/tui-winsource.h (struct tui_source_windows::tui_source_windows):
+	New default constructor.
+
+2020-07-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* disasm.c (do_mixed_source_and_assembly_deprecated): Don't
+	exclude non-statement entries.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* NEWS (New commands): Mention new command
+	"maintenance print core-file-backed-mappings".
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* corelow.c (gdbcmd.h): Include.
+	(core_target::info_proc_mappings): New method.
+	(get_current_core_target): New function.
+	(maintenance_print_core_file_backed_mappings): New function.
+	(_initialize_corelow): Add core-file-backed-mappings to
+	"maint print" commands.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* linux-tdep.c (dump_note_entry_p): New function.
+	(linux_dump_mapping_p_ftype): New typedef.
+	(linux_find_memory_regions_full): Add new parameter,
+	should_dump_mapping_p.
+	(linux_find_memory_regions): Adjust call to
+	linux_find_memory_regions_full.
+	(linux_make_mappings_core_file_notes): Use dump_note_entry_p in
+	call to linux_find_memory_regions_full.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* corelow.c (solist.h, unordered_map): Include.
+	(class core_target): Add field m_core_file_mappings and
+	method build_file_mappings.
+	(core_target::core_target): Call build_file_mappings.
+	(core_target::~core_target): Free memory associated with
+	m_core_file_mappings.
+	(core_target::build_file_mappings): New method.
+	(core_target::xfer_partial): Use m_core_file_mappings
+	for memory transfers.
+	* linux-tdep.c (linux_read_core_file_mappings): New
+	function.
+	(linux_core_info_proc_mappings): Rewrite to use
+	linux_read_core_file_mappings.
+	(linux_init_abi): Register linux_read_core_file_mappings.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* arch-utils.c (default_read_core_file_mappings): New function.
+	* arch-utils.c (default_read_core_file_mappings): Declare.
+	* gdbarch.sh (read_core_file_mappings): New gdbarch method.
+	* gdbarch.h, gdbarch.c: Regenerate.
 
-	* python/lib/gdb/printer/bound_registers.py: Use
-	'^builtin_type_bound128' as regexp argument for
-	add_builtin_pretty_printer.
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
 
-2019-10-09  Christian Biesinger  <cbiesinger@google.com>
+	PR corefiles/25631
+	* corelow.c (core_target:xfer_partial):  Revise
+	TARGET_OBJECT_MEMORY case to consider non-SEC_HAS_CONTENTS
+	case after first checking the stratum beneath the core
+	target.
+	(has_all_memory): Return true.
+	* target.c (raw_memory_xfer_partial): Revise comment
+	regarding use of has_all_memory.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* exec.h (section_table_xfer_memory): Revise declaration,
+	replacing section name parameter with an optional callback
+	predicate.
+	* exec.c (section_table_xfer_memory): Likewise.
+	* bfd-target.c, exec.c, target.c, corelow.c: Adjust all callers
+	of section_table_xfer_memory.
+
+2020-07-22  Tom Tromey  <tromey@adacore.com>
+
+	* mi/mi-cmd-stack.c (list_args_or_locals): Use
+	lookup_symbol_search_name.
+
+2020-07-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-registers.c (gdbpy_register_object_data_init): Remove
+	redundant local variable.
+	(gdbpy_get_register_descriptor): Extract descriptor vector as a
+	reference, not pointer, update code accordingly.
+
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
+	    Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* objfiles.h (struct objfile) <skip_jit_symbol_lookup>: New field.
+	* jit.c (jit_breakpoint_re_set_internal): Use the
+	`skip_jit_symbol_lookup` field.
+
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
+	    Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* jit.c (jit_read_descriptor): Define the descriptor address once,
+	use twice.
+	(jit_breakpoint_deleted): Move the declaration of the loop variable
+	`iter` into the loop header.
+	(jit_breakpoint_re_set_internal): Move the declaration of the local
+	variable `objf_data` to the first point of definition.
+	(jit_event_handler): Move the declaration of local variables
+	`code_entry`, `entry_addr`, and `objf` to their first point of use.
+	Rename `objf` to `jited`.
 
-	* guile/guile.c (guile_extension_script_ops): Remove forward
-	declaration and mark as static.
-	(guile_script_ops): Likewise.
-	(extension_language_guile): Move further down in the file so
-	it can reference the definitions for guile_{extension_,}script_ops.
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-09  Andreas Arnez  <arnez@linux.ibm.com>
+	* jit.h (struct jiter_objfile_data) <jiter_objfile_data, objfile>:
+	Remove.
+	* jit.c (get_jiter_objfile_data): Update.
 
-	* s390-tdep.c (390_process_record): Handle new arch13 instructions
-	except SORTL, DFLTCC, and KDSA.
+2020-07-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	    Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-08  Tom Tromey  <tromey@adacore.com>
+	* jit.c (struct jit_program_space_data): Remove.
+	(jit_program_space_key): Remove.
+	(jiter_objfile_data::~jiter_objfile_data): Remove program space
+	stuff.
+	(get_jit_program_space_data): Remove.
+	(jit_breakpoint_deleted): Iterate on all of the program space's
+	objfiles.
+	(jit_inferior_init): Likewise.
+	(jit_breakpoint_re_set_internal): Likewise.  Also change return
+	type to void.
+	(jit_breakpoint_re_set): Pass current_program_space to
+	jit_breakpoint_re_set_internal.
 
-	* windows-nat.c (struct windows_thread_info_struct) <sf>: Remove.
-	(struct safe_symbol_file_add_args): Remove.
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-08  Tom Tromey  <tromey@adacore.com>
+	* jit.h (struct jiter_objfile_data) <cached_code_address,
+	jit_breakpoint>: Move to here from ...
+	* jit.c (jit_program_space_data): ... here.
+	(jiter_objfile_data::~jiter_objfile_data): Update.
+	(jit_breakpoint_deleted): Update.
+	(jit_breakpoint_re_set_internal): Update.
 
-	* windows-nat.c: Don't include buildsym-legacy.h.
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-08  Tom Tromey  <tromey@adacore.com>
+	* jit.c (jiter_objfile_data::~jiter_objfile_data): Remove some
+	checks.
+	(jit_read_descriptor): Remove NULL check.
+	(jit_event_handler): Add an assertion.
 
-	* contrib/ari/gdb_ari.sh (%p): Allow gdb-specific %p extensions.
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-08  Christian Biesinger  <cbiesinger@google.com>
+	* jit.h (struct jit_objfile_data):  Split into...
+	(struct jiter_objfile_data): ... this ...
+	(struct jited_objfile_data): ... and this.
+	* objfiles.h (struct objfile) <jit_data>: Remove.
+	<jiter_data, jited_data>: New fields.
+	* jit.c (jit_objfile_data::~jit_objfile_data): Rename to ...
+	(jiter_objfile_data::~jiter_objfile_data): ... this.
+	(get_jit_objfile_data): Rename to ...
+	(get_jiter_objfile_data): ... this.
+	(add_objfile_entry): Update.
+	(jit_read_descriptor): Use get_jiter_objfile_data.
+	(jit_find_objf_with_entry_addr): Use objfile's jited_data field.
+	(jit_breakpoint_re_set_internal): Use get_jiter_objfile_data.
+	(jit_inferior_exit_hook): Use objfile's jited_data field.
+
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.h: Forward-declare `struct minimal_symbol`.
+	(struct jit_objfile_data): Migrate to here from jit.c; also add a
+	constructor, destructor, and an objfile* field.
+	* jit.c (jit_objfile_data): Remove.
+	(struct jit_objfile_data): Migrate from here to jit.h.
+	(jit_objfile_data::~jit_objfile_data): New destructor
+	implementation with code moved from free_objfile_data.
+	(free_objfile_data): Delete.
+	(get_jit_objfile_data): Update to use the jit_data field of objfile.
+	(jit_find_objf_with_entry_addr): Ditto.
+	(jit_inferior_exit_hook): Ditto.
+	(_initialize_jit): Remove the call to
+	register_objfile_data_with_cleanup.
+	* objfiles.h (struct objfile) <jit_data>: New field.
+
+2020-07-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* jit.h: Forward-declare `struct objfile`.
+	(jit_event_handler): Add a second parameter, the JITer objfile.
+	* jit.c (jit_read_descriptor): Change the signature to take the
+	JITer objfile as an argument instead of the jit_program_space_data.
+	(jit_inferior_init): Update the call to jit_read_descriptor.
+	(jit_event_handler): Use the new JITer objfile argument when calling
+	jit_read_descriptor.
+	* breakpoint.c (handle_jit_event): Update the call to
+	jit_event_handler to pass the JITer objfile.
 
-	* gdbtypes.c (overload_debug): Move comment to header.
-	* gdbtypes.h (overload_debug): Declare.
-	* valops.c: Remove declaration of overload_debug, instead
-	include gdbtypes.h.
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
 
-2019-10-08  Christian Biesinger  <cbiesinger@google.com>
+	* gdbarch.c: Regenerate.
+	* gdbarch.h: Regenerate.
+	* gdbarch.sh (handle_segmentation_fault): Remove method.
+	* infrun.c (handle_segmentation_fault): Remove.
+	(print_signal_received_reason): Remove call to
+	handle_segmentation_fault.
 
-	* language.c (show_language_command): Pass lang_frame_mismatch_warn
-	through _().
-	(lang_frame_mismatch_warn): Make const, mark with N_(), and
-	move comment...
-	* language.h (lang_frame_mismatch_warn): ... here. Also add
-	declaration.
-	* top.c (lang_frame_mismatch_warn): Remove declaration.
-	(check_frame_language_change): Pass lang_frame_mismatch_warn
-	through _().
-
-2019-10-07  Christian Biesinger  <cbiesinger@google.com>
-
-	* c-lang.h (vtbl_ptr_name): Declare.
-	* cp-valprint.c (vtbl_ptr_name): Remove "extern" now that we get
-	it from the header.
-	* stabsread.c (define_symbol): Remove declaration of vtbl_ptr_name.
-
-2019-10-07  Christian Biesinger  <cbiesinger@google.com>
-
-	* charset.c (your_gdb_wchar_t_is_bogus): Replace with a
-	gdb_static_assert.
-
-2019-10-07  Weimin Pan  <weimin.pan@oracle.com>
-
-	* ../Makefile.def (dependencies): Add all-libctf to all-gdb
-	* ../Makefile.in: Add "all-gdb: maybe-all-libctf"
-	* ctfread.c: New file.
-	* ctfread.h: New file.
-	* elfread.c: Include ctfread.h.
-	(struct elfinfo text_p): New member ctfsect.
-	(elf_locate_sections): Mark CTF section.
-	(elf_symfile_read): Call elfctf_build_psymtabs.
-	* Makefile.in (LIBCTF): Add.
-	(CLIBS): Use it.
-	(CDEPS): Likewise.
-	(DIST): Add ctfread.c.
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
 
-2019-10-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* sparc64-linux-tdep.c (sparc64_linux_handle_segmentation_fault):
+	Rename to sparc64_linux_report_signal_info and add siggnal
+	argument.
+	(sparc64_linux_init_abi): Use sparc64_linux_report_signal_info
+	instead of sparc64_linux_handle_segmentation_fault.
 
-	* ctfread.c (struct nextfield): Renamed to ...
-	(struct ctf_nextfield): ... this.
-	(struct field_info): Renamed to ...
-	(strut ctf_field_info): ... this.
-	(attach_fields_to_type): Update for renamed structures.
-	(ctf_add_member_cb): Likewise.
-	(ctf_add_enum_member_cb): Likewise.
-	(process_struct_members): Likewise.
-	(process_enum_type): Likewise.
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
 
-2019-10-07  Weimin Pan  <weimin.pan@oracle.com>
+	* amd64-linux-tdep.c (amd64_linux_init_abi_common): Use
+	i386_linux_report_signal_info instead of
+	i386_linux_handle_segmentation_fault.
+	* i386-linux-tdep.c (i386_linux_handle_segmentation_fault): Rename
+	to i386_linux_report_signal_info and add siggnal argument.
+	(i386_linux_init_abi): Use i386_linux_report_signal_info instead
+	of i386_linux_handle_segmentation_fault.
+	* i386-linux-tdep.h (i386_linux_handle_segmentation_fault): Rename
+	to i386_linux_report_signal_info and add siggnal argument.
 
-	* tracectf.h: Rename, was ctf.h.
-	* tracectf.c: Rename, was ctf.c, replace ctf.h with tracectf.h.
-	* tracefile.c: Likewise.
-	* tracepoint.c: Remove unused include ctf.h.
-	* mi/mi-main.c: Likewise.
-	* Makefile.in Replace ctf.c with tracectf.c.
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
 
-2019-10-06  Joel Brobecker  <brobecker@adacore.com>
+	* corelow.c (core_target_open): Invoke gdbarch report_signal_info
+	hook if present.
 
-	* version.in: Change version number to "9.0.50.DATE-git".
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
 
-2019-10-03  Tom Tromey  <tom@tromey.com>
+	* gdbarch.c: Regenerate.
+	* gdbarch.h: Regenerate.
+	* gdbarch.sh (report_signal_info): New method.
+	* infrun.c (print_signal_received_reason): Invoke gdbarch
+	report_signal_info hook if present.
 
-	PR rust/24976:
-	* dwarf2read.c (quirk_rust_enum): Handle single-element unions.
+2020-07-21  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-10-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* python/py-registers.c : Add 'unordered_map' include.
+	(gdbpy_new_reggroup): Renamed to...
+	(gdbpy_get_reggroup): ...this.  Update to only create register
+	group descriptors when needed.
+	(gdbpy_reggroup_iter_next): Update.
 
-	* f-lang.c (f_language_defn): Use cp_get_symbol_name_matcher and
-	cp_search_name_hash.
-	* NEWS: Add entry about nested function support.
+2020-07-21  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-10-03  Bernhard Heckel  <bernhard.heckel@intel.com>
-	    Andrew Burgess  <andrew.burgess@embecosm.com>
+	* python/py-registers.c (gdbpy_register_object_data): New static
+	global.
+	(gdbpy_register_object_data_init): New function.
+	(gdbpy_new_register_descriptor): Renamed to...
+	(gdbpy_get_register_descriptor): ...this, and update to reuse
+	existing register descriptors where possible.
+	(gdbpy_register_descriptor_iter_next): Update.
+	(gdbpy_initialize_registers): Register new gdbarch data.
 
-	* cp-namespace.c (cp_search_static_and_baseclasses): Only search
-	for nested static variables when searchin VAR_DOMAIN.
-	* dwarf2read.c (add_partial_symbol): Add nested subroutines to the
-	global scope, update comment.
-	(add_partial_subprogram): Call add_partial_subprogram recursively
-	for nested subroutines when processinng Fortran.
-	(load_partial_dies): Process the child entities of a subprogram
-	when processing Fortran.
-	(partial_die_parent_scope): Handle building scope
-	for Fortran nested functions.
-	(process_die): Record that nested functions have a scope.
-	(new_symbol): Always record Fortran subprograms on the global
-	symbol list.
-	(determine_prefix): How to build the prefix for Fortran
-	subprograms.
-
-2019-10-03  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* linux-nat.c (linux_nat_filter_event): Don't ignore SIGSTOP if we
-	have just sent the thread a SIGSTOP and are waiting for it to
-	arrive.
-
-2019-10-03  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* btrace.c (btrace_add_pc): Remove whitespace before the template
-	parameter in 'std::vector <...>'.
-	(parse_xml_btrace_block): Likewise.
-	(btrace_maint_decode_pt): Likewise.
-	(btrace_maint_update_packets): Likewise.
-	(btrace_maint_print_packets): Likewise.
-	* btrace.h (struct btrace_maint_info): Likewise.
-	* dwarf2read.c (struct type_unit_group): Likewise.
-	(build_type_psymtabs_reader): Likewise.
-	* gdbsupport/btrace-common.c (btrace_data_append): Likewise.
-	* gdbsupport/btrace-common.h (struct btrace_data_bts): Likewise.
-	* nat/linux-btrace.c (perf_event_read_bts): Likewise.
-
-2019-10-03  Tom de Vries  <tdevries@suse.de>
-
-	* cli/cli-style.c (_initialize_cli_style): Adding a '.' at the end of
-	the first line of the help text for set/show style metadata.
-
-2019-10-02  Tom Tromey  <tromey@adacore.com>
-
-	* Makefile.in (COMMON_SFILES): Add common-inferior.c.
-	* gdbsupport/common-inferior.c: New file.
-	* infcmd.c (startup_with_shell): Don't define.
-	* nat/fork-inferior.h (startup_with_shell): Don't declare.
-	* gdbsupport/common-inferior.h (startup_with_shell): Declare.
-	* inferior.h (startup_with_shell): Don't declare.
-
-2019-10-02  Christian Biesinger  <cbiesinger@google.com>
-
-	* gdbsupport/gdb_assert.h: Include errors.h.
-	* gdbsupport/gdb_string_view.h: Include gdb_assert.h.
-
-2019-10-02  Tom Tromey  <tromey@adacore.com>
-
-	* NEWS: Add $_ada_exception entry.
-	* ada-lang.c (struct ada_catchpoint): Add constructor.
-	<m_kind>: New member.
-	(allocate_location_exception, re_set_exception): Remove
-	"ex" parameter.
-	(should_stop_exception): Compute $_ada_exception.
-	(check_status_exception, print_it_exception)
-	(print_one_exception, print_mention_exception): Remove
-	"ex" parameter.
-	(allocate_location_catch_exception, re_set_catch_exception)
-	(check_status_exception, print_it_catch_exception)
-	(print_one_catch_exception, print_mention_catch_exception)
-	(print_recreate_catch_exception)
-	(allocate_location_catch_exception_unhandled)
-	(re_set_catch_exception_unhandled)
-	(check_status_exception, print_it_catch_exception_unhandled)
-	(print_one_catch_exception_unhandled)
-	(print_mention_catch_exception_unhandled)
-	(print_recreate_catch_exception_unhandled)
-	(allocate_location_catch_assert, re_set_catch_assert)
-	(check_status_assert, print_it_catch_assert)
-	(print_one_catch_assert, print_mention_catch_assert)
-	(print_recreate_catch_assert)
-	(allocate_location_catch_handlers, re_set_catch_handlers)
-	(check_status_handlers, print_it_catch_handlers)
-	(print_one_catch_handlers, print_mention_catch_handlers)
-	(print_recreate_catch_handlers): Remove.
-	(create_ada_exception_catchpoint): Update.
-	(initialize_ada_catchpoint_ops): Update.
-
-2019-10-02  Tom Tromey  <tromey@adacore.com>
-
-	* ada-lang.c (ada_lookup_simple_minsyms): Remove.
-	(create_excep_cond_exprs): Simplify exception string computation.
-	(ada_exception_catchpoint_cond_string): Likewise.
-
-2019-10-02  Tom Tromey  <tromey@adacore.com>
-
-	* symmisc.c (dump_msymbols): Don't use MSYMBOL_VALUE_ADDRESS.
-	* ada-lang.c (lesseq_defined_than): Handle
-	LOC_STATIC.
-	* dwarf2read.c (dwarf2_per_objfile): Add can_copy
-	parameter.
-	(dwarf2_has_info): Likewise.
-	(new_symbol): Set maybe_copied on symbol when
-	appropriate.
-	* dwarf2read.h (dwarf2_per_objfile): Add can_copy
-	parameter.
-	<can_copy>: New member.
-	* elfread.c (record_minimal_symbol): Set maybe_copied
-	on symbol when appropriate.
-	(elf_symfile_read): Update call to dwarf2_has_info.
-	* minsyms.c (lookup_minimal_symbol_linkage): New
-	function.
-	* minsyms.h (lookup_minimal_symbol_linkage): Declare.
-	* symtab.c (get_symbol_address, get_msymbol_address):
-	New functions.
-	* symtab.h (get_symbol_address, get_msymbol_address):
-	Declare.
-	(SYMBOL_VALUE_ADDRESS, MSYMBOL_VALUE_ADDRESS): Handle
-	maybe_copied.
-	(struct symbol, struct minimal_symbol) <maybe_copied>:
-	New member.
-
-2019-10-02  Tom Tromey  <tromey@adacore.com>
-
-	* source.c (struct current_source_location): New.
-	(current_source_key): New global.
-	(current_source_symtab, current_source_line)
-	(current_source_pspace): Remove.
-	(get_source_location): New function.
-	(get_current_source_symtab_and_line)
-	(set_default_source_symtab_and_line)
-	(set_current_source_symtab_and_line)
-	(clear_current_source_symtab_and_line, select_source_symtab)
-	(info_source_command, print_source_lines_base)
-	(info_line_command, search_command_helper, _initialize_source):
-	Update.
+2020-07-21  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-10-02  Tom Tromey  <tromey@adacore.com>
+	* linux-nat.c (stopped_pids): Make static.
 
-	* source.c (select_source_symtab): Don't call
-	decode_line_with_current_source.
+2020-07-21  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-10-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+	PR ada/26235
+	* gdbtypes.c (ada_discrete_type_low_bound,
+	ada_discrete_type_high_bound): Handle undefined bounds.
 
-	* symtab.c (lookup_global_symbol): Search global block.
+2020-07-21  Kamil Rytarowski  <n54@gmx.com>
 
-2019-10-02  Tom Tromey  <tromey@adacore.com>
+	* nbsd-nat.h (nbsd_nat_target::supports_multi_process): New
+	declaration.
+	* nbsd-nat.c (nbsd_nat_target::supports_multi_process): New
+	function.
 
-	* coffread.c (process_coff_symbol): Update.
-	* dwarf2read.c (var_decode_location, new_symbol): Update.
-	* mdebugread.c (parse_symbol): Update.
-	* objfiles.c (relocate_one_symbol): Update.
-	* stabsread.c (define_symbol, fix_common_block)
-	(scan_file_globals): Update.
-	* symtab.h (SYMBOL_VALUE_ADDRESS): Expand to an rvalue.
-	(SET_SYMBOL_VALUE_ADDRESS): New macro.
-	* xcoffread.c (process_xcoff_symbol): Update.
+2020-07-20  John Baldwin  <jhb@FreeBSD.org>
 
-2019-10-02  Andreas Arnez  <arnez@linux.ibm.com>
+	* fbsd-tdep.c (fbsd_skip_solib_resolver): New function.
+	(fbsd_init_abi): Install gdbarch "skip_solib_resolver" method.
+	* fbsd-tdep.h (fbsd_skip_solib_resolver): New prototype.
+	* mips-fbsd-tdep.c (mips_fbsd_skip_solib_resolver): New function.
+	(mips_fbsd_init_abi): Install gdbarch "skip_solib_resolver"
+	method.
 
-	* MAINTAINERS: Update my email address.
+2020-07-20 Ludovic CourtÃ¨s  <ludo@gnu.org>
 
-2019-10-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* guile/scm-math.c (vlscm_integer_fits_p): Use 'uintmax_t'
+	and 'intmax_t' instead of 'scm_t_uintmax' and 'scm_t_intmax',
+	which are deprecated in Guile 3.0.
+	* configure.ac (try_guile_versions): Add "guile-3.0".
+	* configure (try_guile_versions): Regenerate.
+	* NEWS: Update entry.
+
+2020-07-20  Ludovic CourtÃ¨s  <ludo@gnu.org>
+	    Doug Evans  <dje@google.com>
+
+	PR gdb/21104
+	* guile/scm-ports.c (USING_GUILE_BEFORE_2_2): New macro.
+	(ioscm_memory_port)[read_buf_size, write_buf_size]: Wrap in #if
+	USING_GUILE_BEFORE_2_2.
+	(stdio_port_desc, memory_port_desc) [!USING_GUILE_BEFORE_2_2]:
+	Change type to 'scm_t_port_type *'.
+	(natural_buffer_size) [!USING_GUILE_BEFORE_2_2]: New variable.
+	(ioscm_open_port) [USING_GUILE_BEFORE_2_2]: Add 'stream'
+	parameter and honor it.  Update callers.
+	(ioscm_open_port) [!USING_GUILE_BEFORE_2_2]: New function.
+	(ioscm_read_from_port, ioscm_write) [!USING_GUILE_BEFORE_2_2]: New
+	functions.
+	(ioscm_fill_input, ioscm_input_waiting, ioscm_flush): Wrap in #if
+	USING_GUILE_BEFORE_2_2.
+	(ioscm_init_gdb_stdio_port) [!USING_GUILE_BEFORE_2_2]: Use
+	'ioscm_read_from_port'.  Call 'scm_set_port_read_wait_fd'.
+	(ioscm_init_stdio_buffers) [!USING_GUILE_BEFORE_2_2]: New function.
+	(gdbscm_stdio_port_p) [!USING_GUILE_BEFORE_2_2]: Use 'SCM_PORTP'
+	and 'SCM_PORT_TYPE'.
+	(gdbscm_memory_port_end_input, gdbscm_memory_port_seek)
+	(ioscm_reinit_memory_port): Wrap in #if USING_GUILE_BEFORE_2_2.
+	(gdbscm_memory_port_read, gdbscm_memory_port_write)
+	(gdbscm_memory_port_seek, gdbscm_memory_port_close)
+	[!USING_GUILE_BEFORE_2_2]: New functions.
+	(gdbscm_memory_port_print): Remove use of 'SCM_PTOB_NAME'.
+	(ioscm_init_memory_port_type) [!USING_GUILE_BEFORE_2_2]: Use
+	'gdbscm_memory_port_read'.
+	Wrap 'scm_set_port_end_input', 'scm_set_port_flush', and
+	'scm_set_port_free' calls in #if USING_GUILE_BEFORE_2_2.
+	(gdbscm_get_natural_buffer_sizes) [!USING_GUILE_BEFORE_2_2]: New
+	function.
+	(ioscm_init_memory_port): Remove.
+	(ioscm_init_memory_port_stream): New function
+	(ioscm_init_memory_port_buffers) [USING_GUILE_BEFORE_2_2]: New
+	function.
+	(gdbscm_memory_port_read_buffer_size) [!USING_GUILE_BEFORE_2_2]:
+	Return scm_from_uint (0).
+	(gdbscm_set_memory_port_read_buffer_size_x)
+	[!USING_GUILE_BEFORE_2_2]: Call 'scm_setvbuf'.
+	(gdbscm_memory_port_write_buffer_size) [!USING_GUILE_BEFORE_2_2]:
+	Return scm_from_uint (0).
+	(gdbscm_set_memory_port_write_buffer_size_x)
+	[!USING_GUILE_BEFORE_2_2]: Call 'scm_setvbuf'.
+	* configure.ac (try_guile_versions): Add "guile-2.2".
+	* configure: Regenerate.
+	* NEWS: Add entry.
 
-	* dwarf2read.c (struct type_unit_group) <tus>: Convert to
-	std::vector.
-	(build_type_psymtabs_reader): Update for std::vector.
-	(build_type_psymtab_dependencies): Likewise.
-	* dwarf2read.h: Remove use of DEF_VEC_P.
-	(typedef sig_type_ptr): Delete.
-
-2019-10-02  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* btrace.c (btrace_maint_clear): Update to handle change from VEC
-	to std::vector.
-	(btrace_maint_decode_pt): Likewise, and move allocation of the
-	vector outside of the loop.
-	(btrace_maint_update_packets): Update to handle change from VEC to
-	std::vector.
-	(btrace_maint_print_packets): Likewise.
-	(maint_info_btrace_cmd): Likewise.
-	* btrace.h: Remove use of DEF_VEC_O.
-	(typedef btrace_pt_packet_s): Delete.
-	(struct btrace_maint_info) <packets>: Change fromm VEC to
-	std::vector.
-	* gdbsupport/btrace-common.h: Remove 'vec.h' include.
-
-2019-10-02  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* btrace.c (btrace_compute_ftrace_bts): Update for std::vector,
-	make accesses into the vector constant references.
-	(btrace_add_pc): Update for std::vector.
-	(btrace_stitch_bts): Likewise.
-	(parse_xml_btrace_block): Likewise.
-	(btrace_maint_update_packets): Likewise.
-	(btrace_maint_print_packets): Likewise.
-	(maint_info_btrace_cmd): Likewise.
-	* gdbsupport/btrace-common.c (btrace_data::fini): Update for
-	std::vector.
-	(btrace_data::empty): Likewise.
-	(btrace_data_append): Likewise.
-	* gdbsupport/btrace-common.h: Remove use of DEF_VEC_O.
-	(typedef btrace_block_s): Delete.
-	(struct btrace_block): Add constructor.
-	(struct btrace_data_bts) <blocks>: Change to std::vector.
-	* nat/linux-btrace.c (perf_event_read_bts): Update for
-	std::vector.
-	(linux_read_bts): Likewise.
-
-2019-10-01  Tom Tromey  <tom@tromey.com>
-
-	* cli/cli-logging.c (show_logging_filename): Use styled_string.
-
-2019-10-01  Tom Tromey  <tom@tromey.com>
-
-	* stack.c (print_frame, info_frame_command_core): Use
-	styled_string.
-	* linux-thread-db.c (try_thread_db_load_1)
-	(try_thread_db_load_from_pdir_1): Use styled_string.
-	* auto-load.c (file_is_auto_load_safe, execute_script_contents)
-	(auto_load_section_scripts, info_auto_load_local_gdbinit)
-	(maybe_print_unsupported_script_warning)
-	(maybe_print_script_not_found_warning): Use styled_string.
-	* ada-lang.c (user_select_syms): Use styled_string.
-
-2019-10-01  Tom Tromey  <tom@tromey.com>
-
-	* p-lang.c (pascal_printstr): Use metadata style.
-	* value.c (show_convenience): Use metadata style.
-	* valprint.c (valprint_check_validity, val_print_optimized_out)
-	(val_print_not_saved, val_print_unavailable)
-	(val_print_invalid_address, generic_val_print, val_print)
-	(value_check_printable, val_print_array_elements): Use metadata
-	style.
-	* ui-out.h (class ui_out) <field_fmt>: New overload.
-	<do_field_fmt>: Add style parameter.
-	* ui-out.c (ui_out::field_fmt): New overload.
-	* typeprint.c (type_print_unknown_return_type)
-	(val_print_not_allocated, val_print_not_associated): Use metadata
-	style.
-	* tui/tui-out.h (class tui_ui_out) <do_field_fmt>: Add style
-	parameter.
-	* tui/tui-out.c (tui_ui_out::do_field_fmt): Update.
-	* tracepoint.c (tvariables_info_1): Use metadata style.
-	* stack.c (print_frame_arg, print_frame_info, print_frame)
-	(info_frame_command_core): Use metadata style.
-	* skip.c (info_skip_command): Use metadata style.
-	* rust-lang.c (rust_print_enum): Use metadata style.
-	* python/py-prettyprint.c (print_stack_unless_memory_error): Use
-	metadata style.
-	* python/py-framefilter.c (py_print_single_arg): Use metadata
-	style.
-	* printcmd.c (do_one_display, print_variable_and_value): Use
-	metadata style.
-	* p-valprint.c (pascal_val_print)
-	(pascal_object_print_value_fields): Use metadata style.
-	* p-typeprint.c (pascal_type_print_base): Use metadata style.
-	* mi/mi-out.h (class mi_ui_out) <do_field_fmt>: Add style
-	parameter.
-	* mi/mi-out.c (mi_ui_out::do_field_fmt): Update.
-	* m2-valprint.c (m2_print_long_set): Use metadata style.
-	* m2-typeprint.c (m2_print_type): Use metadata style.
-	* infcmd.c (print_return_value_1): Use metadata style.
-	* gnu-v3-abi.c (print_one_vtable): Use metadata style.
-	* f-valprint.c (info_common_command_for_block): Use metadata
-	style.
-	* f-typeprint.c (f_type_print_base): Use metadata style.
-	* expprint.c (print_subexp_standard): Use metadata style.
-	* cp-valprint.c (cp_print_value_fields): Use metadata style.
-	* cli/cli-style.h (class cli_style_option): Add constructor.
-	(metadata_style): Declare.
-	* cli/cli-style.c (metadata_style): New global.
-	(_initialize_cli_style): Register metadata style.
-	* cli-out.h (class cli_ui_out) <do_field_fmt>: Add style
-	parameter.
-	* cli-out.c (cli_ui_out::do_field_fmt): Update.
-	* c-typeprint.c (c_type_print_base_struct_union)
-	(c_type_print_base_1): Use metadata style.
-	* breakpoint.c (watchpoint_value_print)
-	(print_one_breakpoint_location): Use metadata style.
-	* break-catch-syscall.c (print_one_catch_syscall): Use metadata
-	style.
-	* break-catch-sig.c (signal_catchpoint_print_one): Use metadata
-	style.
-	* ada-valprint.c (val_print_packed_array_elements, printstr)
-	(print_field_values, ada_val_print_ref, ada_val_print): Use
-	metadata style.
-	* ada-typeprint.c (print_array_type, ada_print_type): Use metadata
-	style.
-	* ada-tasks.c (print_ada_task_info, info_task): Use metadata
-	style.
-	* ada-lang.c (user_select_syms): Use metadata style.
+2020-07-18  Tom Tromey  <tom@tromey.com>
 
-2019-10-01  Tom Tromey  <tom@tromey.com>
+	* linux-nat.c (linux_multi_process): Remove.
+	(linux_nat_target::supports_multi_process): Return true.
 
-	* cli/cli-cmds.c (pwd_command): Style output.
+2020-07-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-10-01  Pedro Alves  <palves@redhat.com>
-	    Tom Tromey  <tom@tromey.com>
+	* arch/riscv.c (riscv_tdesc_cache): Change map type.
+	(riscv_lookup_target_description): Return pointer out of
+	unique_ptr.
+	* target-descriptions.c (allocate_target_description): Add
+	comment.
+	(target_desc_deleter::operator()): Likewise.
+	* target-descriptions.h (struct target_desc_deleter): Moved to
+	gdbsupport/tdesc.h.
+	(target_desc_up): Likewise.
+
+2020-07-17  Tom Tromey  <tromey@adacore.com>
+
+	* linux-nat.c (linux_nat_target::supports_non_stop)
+	(linux_nat_target::always_non_stop_p): Use "true".
+	(linux_nat_target::supports_disable_randomization): Use "true" and
+	"false".
 
-	* symtab.c (print_symbol_info): Use %ps.
-	(print_msymbol_info): Use %ps.
-	* symfile.c (symbol_file_add_with_addrs): Use %ps.
-	* printcmd.c (print_variable_and_value): Use %ps.
-	* macrocmd.c (show_pp_source_pos): Use %ps.
-	* infrun.c (print_exited_reason): Use ui_out::message.
-	* breakpoint.c (watchpoint_check, print_one_breakpoint_location)
-	(describe_other_breakpoints): Use ui_out::message and new
-	formats.
-	(say_where): Use new formats.
-	(bkpt_print_it, tracepoint_print_one_detail): Use ui_out::message
-	and new formats.
+2020-07-16  Caroline Tice  <cmtice@google.com>
 
-2019-10-01  Pedro Alves  <palves@redhat.com>
-	    Tom Tromey  <tom@tromey.com>
+	* dwarf2/read.c (RNGLIST_HEADER_SIZE32) New constant definition.
+	(RNGLIST_HEADER_SIZE64): New constant definition.
+	(struct dwop_section_names): Add rnglists_dwo.
+	(dwop_section_names): Add .debug_rnglists.dwo, .zdebug_rnglists.dwo.
+	(struct loclist_header): Rename to 'loclists_rnglists_header'.
+	(struct dwo_sections): Add rnglists field.
+	(read_attribut_reprocess): Add tag parameter.
+	(dwarf2_ranges_read): Add tag parameter & remove forward function decl.
+	(cu_debug_rnglists_section): New function (decl & definition).
+	(dwarf2_locate_dwo_sections): Add code to read rnglists_dwo section.
+	(dwarf2_rnglists_process): Add a dwarf_tag parameter, for the kind of
+	die whose range is being checked; get rnglist section from
+	cu_debug_rnglists_section, to get from either objfile or dwo file as
+	appropriate.  Add cases for DW_RLE_base_addressx,
+	DW_RLE_startx_length, DW_RLE_startx_endx.  Also, update to only add
+	the base address to DW_RLE_offset_pairs (not to all ranges), moving
+	test inside if-condition and updating complaint message.
+	(dwarf2_ranges_process): Add dwarf tag parameter and pass it to
+	dwarf2_rnglists_process.
+	(dwarf2_ranges_read): Add dwarf tag parameter and pass it to
+	dwarf2_ranges_process.
+	(dwarf2_get_pc_bounds): Check for DW_FORM_rnglistx when setting
+	need_ranges_base and update comment appropriately.  Also pass die tag
+	to dwarf2_ranges_read.
+	(dwarf2_record_block_ranges): Check for DW_FORM_rnglistx when setting
+	need_ranges_base and update comment appropriately.  Also pass die tag
+	to dwarf2_ranges_process.
+	(read_full_die_1): Add code to read DW_AT_rnglists_base and assign to
+	cu->ranges_base.  Also pass die tag to read_attribute_reprocess.
+	(partial_die_info::read): Check for DW_FORM_rnglistx when setting
+	need_ranges_base and update comment appropriately.  Also pass die tag
+	to read_attribute_reprocess and dwarf2_ranges_read.
+	(read_loclist_header): Rename function to read_loclists_rnglists_header,
+	and update function comment appropriately.
+	(read_loclist_index): Call read_loclists_rnglists_header instead of
+	read_loclist_header.
+	(read_rnglist_index): New function.
+	(read_attribute_reprocess):  Add tag parameter. Add code for
+	DW_FORM_rnglistx, passing tag to read_rnglist_index.
+	(read_attribute_value): Mark DW_FORM_rnglistx with need_reprocess.
+
+2020-07-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-typeprint.c (f_type_print_base): Allow for dynamic types not
+	being resolved.
 
-	* unittests/format_pieces-selftests.c: Add gdb_format parameter.
-	(test_gdb_formats): New function.
-	(run_tests): Call it.
-	(test_format_specifier): Update.
-	* utils.h (fputs_filtered): Update comment.
-	(vfprintf_styled, vfprintf_styled_no_gdbfmt)
-	(fputs_styled_unfiltered): Declare.
-	* utils.c (fputs_styled_unfiltered): New function.
-	(vfprintf_maybe_filtered): Add gdbfmt parameter.
-	(vfprintf_filtered): Update.
-	(vfprintf_unfiltered, vprintf_filtered): Update.
-	(vfprintf_styled, vfprintf_styled_no_gdbfmt): New functions.
-	* ui-out.h (enum ui_out_flag) <unfiltered_output,
-	disallow_ui_out_field>: New constants.
-	(enum class field_kind): New.
-	(struct base_field_s, struct signed_field_s): New.
-	(signed_field): New function.
-	(struct string_field_s): New.
-	(string_field): New function.
-	(struct styled_string_s): New.
-	(styled_string): New function.
-	(class ui_out) <message>: Add comment.
-	<vmessage, call_do_message>: New methods.
-	<do_message>: Add style parameter.
-	* ui-out.c (ui_out::call_do_message, ui_out::vmessage): New
-	methods.
-	(ui_out::message): Rewrite.
-	* mi/mi-out.h (class mi_ui_out) <do_message>: Add style
-	parameter.
-	* mi/mi-out.c (mi_ui_out::do_message): Add style parameter.
-	* gdbsupport/format.h (class format_pieces) <format_pieces>: Add
-	gdb_extensions parameter.
-	(class format_piece): Add parameter to constructor.
-	(n_int_args): New field.
-	* gdbsupport/format.c (format_pieces::format_pieces): Add
-	gdb_extensions parameter.  Handle '*'.
-	* cli-out.h (class cli_ui_out) <do_message>: Add style parameter.
-	* cli-out.c (cli_ui_out::do_message): Add style parameter.  Call
-	vfprintf_styled_no_gdbfmt.
-	(cli_ui_out::do_field_string, cli_ui_out::do_spaces)
-	(cli_ui_out::do_text, cli_ui_out::field_separator): Allow
-	unfiltered output.
-	* ui-style.h (struct ui_file_style) <ptr>: New method.
-
-2019-10-01  Tom Tromey  <tom@tromey.com>
-
-	* unittests/format_pieces-selftests.c: Update.  Add final format.
-	* gdbsupport/format.c (format_pieces::format_pieces): Don't add
-	empty literal pieces.
-
-2019-10-01  Tom Tromey  <tom@tromey.com>
-
-	* ui-out.h (enum class ui_out_style_kind): Remove.
-	(class ui_out) <field_string, field_stsream, do_field_string>:
-	Change type of "style".
-	* ui-out.c (ui_out::field_core_addr, ui_out::field_stream)
-	(ui_out::field_string): Update.
-	* tui/tui-out.h (class tui_ui_out) <do_field_string>: Change type
-	of "style".
-	* tui/tui-out.c (tui_ui_out::do_field_string): Update.
-	* tracepoint.c (print_one_static_tracepoint_marker): Update.
-	* stack.c (print_frame_arg, print_frame_info, print_frame):
-	Update.
-	* source.c (print_source_lines_base): Update.
-	* solib.c (info_sharedlibrary_command): Update.
-	* skip.c (info_skip_command): Update.
-	* record-btrace.c (btrace_call_history_src_line)
-	(btrace_call_history): Update.
-	* python/py-framefilter.c (py_print_frame): Update.
-	* mi/mi-out.h (class mi_ui_out) <do_field_string>: Change type of
-	"style".
-	* mi/mi-out.c (mi_ui_out::do_table_header)
-	(mi_ui_out::do_field_signed, mi_ui_out::do_field_unsigned)
-	(mi_ui_out::do_field_string): Update.
-	* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn):
-	Update.
-	* cli-out.h (class cli_ui_out) <do_field_string>: Change type of
-	"style".
-	* cli-out.c (cli_ui_out::do_table_header)
-	(cli_ui_out::do_field_signed, cli_ui_out::do_field_unsigned)
-	(cli_ui_out::do_field_skip, cli_ui_out::do_field_string)
-	(cli_ui_out::do_field_fmt): Update.
-	* breakpoint.c (print_breakpoint_location): Update.
-	(update_static_tracepoint): Update.
-
-2019-10-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* main.c (relocate_gdbinit_path_maybe_in_datadir): Remove std::string
-	conversion of gdb_datadir.
-	(captured_main_1): Remove xstrdup when assigning to gdb_datadir,
-	remove not needed c_str ().
+2020-07-14  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-09-30  Ali Tamur <tamur@google.com>
+	* arch-utils.c (show_architecture): Update formatting of messages.
 
-	* dwarf2read.c (skip_one_die): Handle DW_FORM_strx forms.
-	(dwarf2_string_attr): Likewise.
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-09-30  Ali Tamur <tamur@google.com>
+	* gdbtypes.h (struct type) <bounds>: Handle array and string
+	types.
+	* ada-lang.c (assign_aggregate): Use type::bounds on
+	array/string type.
+	* c-typeprint.c (c_type_print_varspec_suffix): Likewise.
+	* c-varobj.c (c_number_of_children): Likewise.
+	(c_describe_child): Likewise.
+	* eval.c (evaluate_subexp_for_sizeof): Likewise.
+	* f-typeprint.c (f_type_print_varspec_suffix): Likewise.
+	(f_type_print_base): Likewise.
+	* f-valprint.c (f77_array_offset_tbl): Likewise.
+	(f77_get_upperbound): Likewise.
+	(f77_print_array_1): Likewise.
+	* guile/scm-type.c (gdbscm_type_range): Likewise.
+	* m2-typeprint.c (m2_array): Likewise.
+	(m2_is_long_set_of_type): Likewise.
+	* m2-valprint.c (get_long_set_bounds): Likewise.
+	* p-typeprint.c (pascal_type_print_varspec_prefix): Likewise.
+	* python/py-type.c (typy_range): Likewise.
+	* rust-lang.c (rust_internal_print_type): Likewise.
+	* type-stack.c (type_stack::follow_types): Likewise.
+	* valarith.c (value_subscripted_rvalue): Likewise.
+	* valops.c (value_cast): Likewise.
 
-	* dwarf2read.c (process_full_comp_unit): Remove whitespace at the EOL.
-	(process_full_type_unit): Likewise.
-	(dump_die_shallow): Likewise.
-	(cu_debug_loc_section): Likewise.
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-09-28  Christian Biesinger  <cbiesinger@google.com>
+	* gdbtypes.c (TYPE_ARRAY_BIT_STRIDE): Remove.  Update all
+	callers to use the equivalent accessor methods.
 
-	* minsyms.c (compare_minimal_symbols): Rename to...
-	(minimal_symbol_is_less_than): ...this, and adjust to STL
-	conventions (return bool, take arguments as references)
-	(minimal_symbol_reader::install): Call std::sort instead
-	of qsort.
-
-2019-09-29  Christian Biesinger  <cbiesinger@google.com>
-
-	* minsyms.h (msymbol_hash): Document that this is a case-insensitive
-	hash and why.
-	* objfiles.h (struct objfile_per_bfd_storage) <demangled_names_hash,
-	msymbol_hash, msymbol_demangled_hash>: Improve comments.
-
-2019-09-30  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* psymtab.c (add_psymbol_to_list): Move comment to psympriv.h.
-	* psympriv.h (add_psymbol_to_list): Move comment here and update
-	it.
-
-2019-09-29  Tom de Vries  <tdevries@suse.de>
-
-	* contrib/cc-with-tweaks.sh (get_tmpdir): New function.
-	Use $tmpdir/$(basename "$output_file").dwz instead of
-	"${output_file}.dwz".
-
-2019-09-28  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	PR gdb/25045
-	* hppa-linux-nat.c: Include gdbarch.h.
-
-2019-09-26  Christian Biesinger  <cbiesinger@google.com>
-
-	* blockframe.c (find_pc_partial_function): Change return type to bool.
-	* elfread.c (elf_gnu_ifunc_resolve_name): Likewise.
-	* minsyms.c (in_gnu_ifunc_stub): Likewise.
-	(stub_gnu_ifunc_resolve_name): Likewise.
-	* symtab.c (compare_filenames_for_search): Likewise.
-	(compare_glob_filenames_for_search): Likewise.
-	(matching_obj_sections): Likewise.
-	(symbol_matches_domain): Likewise.
-	(find_line_symtab): Change out param EXACT_MATCH to bool *.
-	(find_line_pc): Change return type to bool.
-	(find_line_pc_range): Likewise.
-	(producer_is_realview): Likewise.
-	* symtab.h (symbol_matches_domain): Likewise.
-	(find_pc_partial_function): Likewise.
-	(find_pc_line_pc_range): Likewise.
-	(in_gnu_ifunc_stub): Likewise.
-	(struct gnu_ifunc_fns) <gnu_ifunc_resolve_name>: Likewise.
-	(find_line_pc): Likewise.
-	(find_line_pc_range): Likewise.
-	(matching_obj_sections): Likewise.
-	(find_line_symtab): Change out parameter to bool.
-	(producer_is_realview): Change return type to bool.
-	(compare_filenames_for_search): Likewise.
-	(compare_glob_filenames_for_search): Likewise.
-
-2019-09-26  Tom Tromey  <tom@tromey.com>
-
-	* Makefile.in (COMMON_SFILES): Remove gdb_usleep.c.
-	(HFILES_NO_SRCDIR): Remove gdb_usleep.h.
-	* gdb_usleep.h: Remove.
-	* gdb_usleep.c: Remove.
-	* utils.c: Don't include gdb_usleep.h.
-
-2019-09-26  Tom Tromey  <tromey@adacore.com>
-
-	* python/py-type.c (type_to_type_object): Call check_typedef
-	for stub types.
-
-2019-09-26  Tom Tromey  <tom@tromey.com>
-
-	* utils.h (initialize_utils): Don't declare.
-	* top.c (gdb_init): Don't call initialize_utils.
-	* utils.c (initialize_utils): Remove.  Move contents...
-	(_initialize_utils): ... here.
-
-2019-09-25  Tom Tromey  <tom@tromey.com>
-
-	* python/py-objfile.c (objfpy_get_build_id): Use bin2hex.
-	* utils.h (make_hex_string): Don't declare.
-	* utils.c (make_hex_string): Remove.
-
-2019-09-24  Tom de Vries  <tdevries@suse.de>
-
-	PR gdb/23815
-	* amd64-linux-nat.c (amd64_linux_nat_target::fetch_registers):
-	Initialize xstateregs before ptrace PTRACE_GETREGSET call.
-
-2019-09-23  Dimitar Dimitrov  <dimitar@dinux.eu>
-
-	* NEWS: Mention new simulator port for PRU.
-
-2019-09-23  Christian Biesinger  <cbiesinger@google.com>
-
-	* ada-exp.y (write_object_remaining): Update.
-	* ada-lang.c (ada_decode): Return a std::string instead of a char*
-	and eliminate the static buffer.
-	(ada_decode_symbol): Update.
-	(ada_la_decode): Update.
-	(ada_sniff_from_mangled_name): Update.
-	(is_valid_name_for_wild_match): Update.
-	(ada_lookup_name_info::matches): Update and simplify.
-	(name_matches_regex): Update.
-	(ada_add_global_exceptions): Update.
-	* ada-lang.h (ada_decode): Update signature.
-	* ada-varobj.c (ada_varobj_describe_simple_array_child): Update.
-	* dwarf-index-write.c (debug_names::insert): Update.
-
-2019-09-21  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* solib-svr4.c (svr4_iterate_over_objfiles_in_search_order): Fix
-	formatting.
-
-2019-09-21  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* breakpoint.h (bp_location) <inserted, permanent, duplicate>:
-	Change "nonzero" to "true" in documentation.
-
-2019-09-20  Christian Biesinger  <cbiesinger@google.com>
-
-	* solib-darwin.c (darwin_lookup_lib_symbol): Remove.
-	(_initialize_darwin_solib): Don't set
-	darwin_so_ops.lookup_lib_global_symbol.
-	* solib-svr4.c (set_solib_svr4_fetch_link_map_offsets): Call
-	set_gdbarch_iterate_over_objfiles_in_search_order.
-	(elf_lookup_lib_symbol): Rename to...
-	(svr4_iterate_over_objfiles_in_search_order): this, and update
-	to iterate semantics.
-	(_initialize_svr4_solib): Don't set lookup_lib_global_symbol.
-	* solib.c (solib_global_lookup): Remove.
-	* solist.h (struct target_so_ops): Remove lookup_lib_global_symbol.
-	(solib_global_lookup): Remove.
-	* symtab.c (lookup_global_or_static_symbol): Remove call to
-	solib_global_lookup.
-
-2019-09-20  Joel Brobecker  <brobecker@adacore.com>
-
-	* NEWS: Move entries about default MI version now being
-	version 3, and about the GDB/MI fix for multi-location
-	breakpoints to the "since GDB 8.3" section.
-
-2019-09-20  Joel Brobecker  <brobecker@adacore.com>
-
-	GDB 8.3.1 released.
-
-2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* NEWS: Mention that Cell/B.E. debugging support was removed.
-	* MAINTAINERS: Remove spu target.
-
-	* config/djgpp/fnchange.lst: Remove entries for removed files.
-
-	* Makefile.in (ALL_TARGET_OBS): Remove solib-spu.o,
-	spu-multiarch.o, and spu-tdep.o.
-	(HFILES_NO_SRCDIR): Remove solib-spu.h and spu-tdep.h.
-	(ALLDEPFILES): Remove solib-spu.c, spu-linux-nat.c,
-	spu-multiarch.c, and spu-tdep.c.
-	* spu-linux-nat.c: Remove file.
-	* spu-multiarch.c: Remove file.
-	* spu-tdep.c: Remove file.
-	* spu-tdep.h: Remove file.
-	* solib-spu.c: Remove file.
-	* solib-spu.h: Remove file.
-
-	* configure.host (powerpc64*-*-linux*): Remove Cell/B.E. support.
-	* configure.nat (spu-linux): Remove.
-	* configure.tgt (powerpc*-*-linux*): Remove solib-spu.o and
-	solib-multiarch.o from gdb_target_obs.
-	(spu*-*-*): Remove.
-
-	* arch/ppc-linux-common.h (struct ppc_linux_features): Remove "cell"
-	feature flag.
-	(ppc_linux_no_features): Update.
-	* arch/ppc-linux-common.c (ppc_linux_match_description): Remove
-	Cell/B.E. support.
-	* arch/ppc-linux-tdesc.h (tdesc_powerpc_cell32l): Remove declaration.
-	(tdesc_powerpc_cell64l): Likewise.
-	* nat/ppc-linux.h (PPC_FEATURE_CELL): Remove.
-	* ppc-linux-nat.c (ppc_linux_nat_target::read_description): Remove
-	Cell/B.E. support.
-	* ppc-linux-tdep.h: Do not include "solib-spu.h" or "spu-tdep.h".
-	Do not include "features/rs6000/powerpc-cell32l.c" or
-	"features/rs6000/powerpc-cell64l.c".
-	(ppc_linux_spu_section): Remove.
-	(ppc_linux_core_read_description): Remove Cell/B.E. support.
-	(spe_context_objfile, spe_context_lm_addr, spe_context_offset,
-	spe_context_cache_ptid, spe_context_cache_ptid): Remove.
-	(ppc_linux_spe_context_lookup): Remove.
-	(ppc_linux_spe_context_inferior_created): Remove.
-	(ppc_linux_spe_context_solib_loaded): Remove.
-	(ppc_linux_spe_context_solib_unloaded): Remove.
-	(ppc_linux_spe_context): Remove.
-	(struct ppu2spu_cache): Remove.
-	(ppu2spu_prev_arch, ppu2spu_this_id, ppu2spu_prev_register): Remove.
-	(struct ppu2spu_data): Remove.
-	(ppu2spu_unwind_register, ppu2spu_sniffer, ppu2spu_dealloc_cache,
-	ppu2spu_unwind): Remove.
-	(ppc_linux_init_abi): Remove Cell/B.E. support.
-	* rs6000-tdep.h (rs6000_gdbarch_init): Remove Cell/B.E. support.
-
-	* features/Makefile (rs6000/powerpc-cell32l-expedite): Remove.
-	(rs6000/powerpc-cell64l-expedite): Likewise
-	(WHICH): Remove rs6000/powerpc-cell32l and rs6000/powerpc-cell64l.
-	(XMLTOC): Remove rs6000/powerpc-cell32l.xml and
-	rs6000/powerpc-cell64l.xml.
-	* features/rs6000/powerpc-cell32l.xml: Remove.
-	* features/rs6000/powerpc-cell64l.xml: Likewise.
-	* features/rs6000/powerpc-cell32l.c: Remove generated file.
-	* features/rs6000/powerpc-cell64l.c: Likewise.
-	* regformats/rs6000/powerpc-cell32l.dat: Remove generated file.
-	* regformats/rs6000/powerpc-cell64l.dat: Likewise.
-	* regformats/reg-spu.dat: Remove.
-
-	* target.h (enum target_object): Remove TARGET_OBJECT_SPU.
-	* corelow.c (struct spuid_list): Remove.
-	(add_to_spuid_list): Remove.
-	(core_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
-	* remote.c (PACKET_qXfer_spu_read, PACKET_qXfer_spu_write): Remove.
-	(remote_protocol_features): Remove associated entries.
-	(_initialize_remote): No longer initialize them.
-	(remote_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
-	* linux-nat.c (SPUFS_MAGIC): Remove.
-	(linux_proc_xfer_spu): Remove.
-	(spu_enumerate_spu_ids): Remove.
-	(linux_nat_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
-	* linux-tdep.c (-linux_spu_make_corefile_notes): Remove.
-	(linux_make_corefile_notes): No longer call it.
-
-	* regcache.c (cooked_read_test): Remove bfd_arch_spu special case.
-	(cooked_write_test): Likewise.
-
-2019-09-20  Tom Tromey  <tom@tromey.com>
-
-	* NEWS: Mention case-sensitivity of TUI commands.
-	* tui/tui-win.c (tui_set_focus_command): Now case-sensitive.
-	(tui_set_win_height_command, parse_scrolling_args): Likewise.
-	* tui/tui-layout.c (tui_layout_command): Now case-sensitive.
-
-2019-09-20  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-source.c (tui_source_window::set_contents): Use
-	make_unique_xstrdup.
-	* tui/tui-disasm.c (tui_disasm_window::set_contents): Use
-	make_unique_xstrdup.
-
-2019-09-20  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.c: Remove separator comments.
-	* tui/tui-layout.c: Remove separator comments.
-	* tui/tui-win.c: Remove separator comments.
-	* tui/tui-wingeneral.c: Remove separator comments.
-
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui.h (strcat_to_buf): Don't declare.
-	* tui/tui.c (strcat_to_buf): Remove.
+	* gdbtypes.h (struct range_bounds) <bit_stride>: New method.
+	(struct type) <bit_stride>: New method.
+	(TYPE_BIT_STRIDE): Remove.
+	* gdbtypes.c (update_static_array_size): Use type::bit_stride.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-source.h (struct tui_source_window) <m_fullname>: Rename
-	from "fullname".
-	* tui/tui-source.c (tui_source_window::set_contents)
-	(tui_source_window::location_matches_p)
-	(tui_source_window::maybe_update): Update.
+	* gdbtypes.h (TYPE_ARRAY_LOWER_BOUND_VALUE,
+	TYPE_ARRAY_UPPER_BOUND_VALUE): Remove.  Update all
+	callers to use the equivalent accessor methods instead.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-regs.h (struct tui_data_window) <get_current_group>:
-	Update.
-	<m_regs_content, m_regs_column_count, m_current_group>: Add "m_"
-	prefix.
-	* tui/tui-regs.c (tui_data_window::last_regs_line_no)
-	(tui_data_window::line_from_reg_element_no)
-	(tui_data_window::first_reg_element_no_inline)
-	(tui_data_window::show_registers)
-	(tui_data_window::show_register_group)
-	(tui_data_window::display_registers_from)
-	(tui_data_window::display_registers_from_line)
-	(tui_data_window::first_data_item_displayed)
-	(tui_data_window::delete_data_content_windows)
-	(tui_data_window::erase_data_content)
-	(tui_data_window::do_scroll_vertical)
-	(tui_data_window::refresh_window)
-	(tui_data_window::check_register_values): Update.
+	* gdbtypes.h (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED,
+	TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED): Remove.  Update all
+	callers to use the equivalent accessor methods instead.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-stack.h (MAX_LOCATOR_ELEMENT_LEN): Remove define.
-	(struct tui_locator_window) <full_name, proc_name>: Now
-	std::string.
-	* tui/tui-stack.c (tui_locator_window::make_status_line)
-	(tui_locator_window::set_locator_fullname)
-	(tui_locator_window::set_locator_info): Update.
-	* tui/tui-source.c (tui_source_window::set_contents)
-	(tui_source_window::showing_source_p): Update.
+	* gdbtypes.h (TYPE_LOW_BOUND_KIND,
+	TYPE_HIGH_BOUND_KIND): Remove.  Update all callers
+	to use dynamic_prop::kind.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-stack.c (tui_locator_window::set_locator_fullname):
-	Don't call tui_locator_win_info_ptr.
+	* gdbtypes.h (TYPE_LOW_BOUND_UNDEFINED,
+	TYPE_HIGH_BOUND_UNDEFINED): Remove.  Update all callers
+	to get the bound property's kind and check against
+	PROP_UNDEFINED.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-win.c (tui_resize_all): Don't call refresh.
+	* gdbtypes.h (TYPE_LOW_BOUND, TYPE_HIGH_BOUND): Remove.  Update
+	all callers to use type::range_bounds followed by
+	dynamic_prop::{low,high}.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-12  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Use 1 as
-	height for locator.
-	* tui/tui-stack.c (tui_locator_window::rerender): Call scrollok.
-	* tui/tui-layout.c (show_source_disasm_command, show_data)
-	(show_source_or_disasm_and_command): Use 1 as height for locator.
+	* gdbtypes.h (struct dynamic_prop) <kind, set_undefined,
+	const_val, set_const_val, baton, set_locexpr, set_loclist,
+	set_addr_offset, variant_parts, set_variant_parts,
+	original_type, set_original_type>: New methods.
+	<kind>: Rename to...
+	<m_kind>: ... this.  Update all users to use the new methods
+	instead.
+	<data>: Rename to...
+	<m_data>: ... this.  Update all users to use the new methods
+	instead.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui.c (tui_enable): Update.
-	* tui/tui-win.c (tui_sigwinch_handler, tui_async_resize_screen):
-	Update.
-	* tui/tui-data.h (tui_win_resized, tui_set_win_resized_to):
-	Update.
-	* tui/tui-data.c (win_resized): Now bool.
-	(tui_win_resized): Return bool.
-	(tui_set_win_resized_to): Accept a bool.
+	* gdbtypes.c (get_discrete_bounds): Return failure if
+	the range type's bounds are not both defined and constant
+	values.
+	(get_array_bounds): Update comment.  Remove undefined bound check.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-12  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* tui/tui-regs.h (struct tui_data_window) <show_register_group>:
-	Change type of "refresh_values_only".
-	* tui/tui-regs.c (tui_data_window::show_register_group): Change
-	type of "refresh_values_only".
+	* gdbtypes.h (TYPE_RANGE_DATA): Remove.  Update callers to use
+	the type::bounds method directly.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-disasm.c (struct tui_asm_line) <addr_string, insn>: Now
-	std::string.
-	(tui_disassemble): Add "pos" parameter.
-	(tui_disasm_window::set_contents): Simplify.
+	* gdbtypes.h (struct type) <bounds, set_bounds>: New methods.
+	(TYPE_RANGE_DATA): Use type::bounds.  Change all uses that
+	are used to set the range type's bounds to use set_bounds.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<show_source_content>: Now private.
-	* tui/tui-winsource.c
-	(tui_source_window_base::show_source_content): Don't handle empty
-	content case.
+	* exec.c (_initialize_exec): Update exec-file-mismatch help.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-10  Pedro Alves  <pedro@palves.net>
 
-	* tui/tui-layout.c (show_source_disasm_command)
-	(show_source_or_disasm_and_command): Don't call
-	show_source_content.
+	* gdbthread.h (inferior_ref): Define.
+	(scoped_restore_current_thread) <m_thread>: Now a thread_info_ref.
+	(scoped_restore_current_thread) <m_inf>: Now an inferior_ref.
+	* thread.c
+	(scoped_restore_current_thread::restore):
+	Adjust to gdb::ref_ptr.
+	(scoped_restore_current_thread::~scoped_restore_current_thread):
+	Remove manual decref handling.
+	(scoped_restore_current_thread::scoped_restore_current_thread):
+	Adjust to use
+	inferior_ref::new_reference/thread_info_ref::new_reference.
+	Incref the thread before calling get_frame_id instead of after.
+	Let TARGET_CLOSE_ERROR propagate.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-10  Pedro Alves  <pedro@palves.net>
 
-	* tui/tui-stack.h (struct tui_locator_window) <make_status_line>:
-	Declare.
-	* tui/tui-stack.c (tui_locator_window::make_status_line): Rename
-	from tui_make_status_line.
-	(tui_locator_window::rerender): Update.
+	* frame-tailcall.c (dwarf2_tailcall_sniffer_first): Only swallow
+	NO_ENTRY_VALUE_ERROR / MEMORY_ERROR / OPTIMIZED_OUT_ERROR /
+	NOT_AVAILABLE_ERROR.
+	* value.c (value_optimized_out): Only swallow MEMORY_ERROR /
+	OPTIMIZED_OUT_ERROR / NOT_AVAILABLE_ERROR.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-10  Simon Marchi  <simon.marchi@polymtl.ca>
+	    Pedro Alves  <pedro@palves.net>
 
-	* tui/tui-stack.c (tui_make_status_line): Return std::string.
-	(tui_locator_window::rerender): Update.
+	PR gdb/26199
+	* infrun.c (threads_are_resumed_pending_p): Delete.
+	(do_target_wait): Remove threads_are_executing and
+	threads_are_resumed_pending_p checks from the inferior_matches
+	lambda.  Update comments.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-10  Pedro Alves  <pedro@palves.net>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<~tui_source_window_base>: Don't declare.
-	<fullname>: Remove.
-	* tui/tui-winsource.c (~tui_source_window_base): Remove.
-	* tui/tui-source.h (struct tui_source_window) <fullname>: New
-	member.
-	* tui/tui-source.c (tui_source_window::set_contents): Update.
-	(tui_source_window::location_matches_p)
-	(tui_source_window::maybe_update): Update.
+	PR gdb/26199
+	* infrun.c (handle_no_resumed): Transfer terminal to inferior with
+	executing threads.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-10  Pedro Alves  <pedro@palves.net>
 
-	* tui/tui-winsource.h (~tui_source_element): Remove.
-	(tui_source_element): Update.
-	(struct tui_source_element) <line>: Now a unique_xmalloc_ptr.
-	* tui/tui-winsource.c (tui_show_source_line): Update.
-	* tui/tui-source.c (tui_source_window::set_contents): Update.
-	* tui/tui-disasm.c (tui_disasm_window::set_contents): Update.
+	PR gdb/26199
+	* infrun.c (handle_no_resumed): Handle multiple targets.
 
-2019-09-20  Tom Tromey  <tom@tromey.com>
+2020-07-10  Pedro Alves  <pedro@palves.net>
 
-	* tui/tui-data.h (tui_clear_source_windows_detail): Don't
-	declare.
-	* tui/tui-layout.c (tui_add_win_to_layout): Don't call
-	tui_clear_source_windows_detail.
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<clear_detail>: Don't declare.
-	* tui/tui-winsource.c (tui_source_window_base::clear_detail):
-	Remove.
-	* tui/tui-data.c (tui_clear_source_windows_detail): Remove.
+	PR gdb/26199
+	* infrun.c (prepare_to_wait): Check target_can_async_p instead of
+	target_is_async_p.
 
-2019-09-20  Tom Tromey  <tromey@adacore.com>
+2020-07-10  Pedro Alves  <pedro@palves.net>
 
-	PR ada/24919:
-	* block.c (contained_in): Fix final return value.
+	PR gdb/26199
+	* target.c (target_pass_ctrlc): Look at the inferior's non-exited
+	threads, not all threads.
 
-2019-09-20  Alan Modra  <amodra@gmail.com>
+2020-07-10  Pedro Alves  <pedro@palves.net>
 
-	* gdb_bfd.c (gdb_bfd_ref, gdb_bfd_unref): Use bfd_set_usrdata.
-	* dwarf2read.c (dwarf2_read_gdb_index, dwarf2_read_debug_names),
-	(read_indirect_string_from_dwz): Use bfd accessor.
-	* dwarf2read.h (struct dwz_file <filename>): Likewise.
-	* machoread.c (macho_symfile_read_all_oso): Likewise.
-	* solib.c (solib_bfd_open): Likewise.
-
-2019-09-19  Christian Biesinger  <cbiesinger@google.com>
-
-	* eval.c: Move declaration of overload_resolution to...
-	* value.h: ...here.
-
-2019-09-19  Christian Biesinger  <cbiesinger@google.com>
-
-	* arm-linux-nat.c: Remove extern declaration for arm_apcs_32.
-	* arm-linux-tdep.c: Likewise.
-	* arm-nbsd-nat.c: Likewise.
-	* arm-tdep.h: Declare arm_apcs_32.
-	* arm-tdep.c: Move documentation for arm_apcs_32 to arm-tdep.h.
-
-2019-09-19  Christian Biesinger  <cbiesinger@google.com>
-
-	* dwarf2loc.c: Remove extern declaration of dwarf_always_disassemble.
-	* dwarf2read.h: Declare dwarf_always_disassemble.
-
-2019-09-19  Tom de Vries  <tdevries@suse.de>
-
-	PR gdb/25009
-	* source-cache.c (source_cache::ensure): Catch exception thrown during
-	construction of the highlighter.
-
-2019-09-18  Alan Modra  <amodra@gmail.com>
-
-	* aarch64-linux-tdep.c, * arm-tdep.c, * auto-load.c,
-	* coff-pe-read.c, * coffread.c, * corelow.c, * dbxread.c,
-	* dicos-tdep.c, * dwarf2-frame.c, * dwarf2read.c, * elfread.c,
-	* exec.c, * fbsd-tdep.c, * gcore.c, * gdb_bfd.c, * gdb_bfd.h,
-	* hppa-tdep.c, * i386-cygwin-tdep.c, * i386-fbsd-tdep.c,
-	* i386-linux-tdep.c, * jit.c, * linux-tdep.c, * machoread.c,
-	* maint.c, * mdebugread.c, * minidebug.c, * mips-linux-tdep.c,
-	* mips-sde-tdep.c, * mips-tdep.c, * mipsread.c, * nto-tdep.c,
-	* objfiles.c, * objfiles.h, * osabi.c, * ppc-linux-tdep.c,
-	* ppc64-tdep.c, * record-btrace.c, * record-full.c, * remote.c,
-	* rs6000-aix-tdep.c, * rs6000-tdep.c, * s390-linux-tdep.c,
-	* s390-tdep.c, * solib-aix.c, * solib-dsbt.c, * solib-frv.c,
-	* solib-spu.c, * solib-svr4.c, * solib-target.c,
-	* spu-linux-nat.c, * spu-tdep.c, * symfile-mem.c, * symfile.c,
-	* symmisc.c, * symtab.c, * target.c, * windows-nat.c,
-	* xcoffread.c, * cli/cli-dump.c, * compile/compile-object-load.c,
-	* mi/mi-interp.c: Update throughout for bfd section macro and
-	function changes.
-	* gcore (gcore_create_callback): Use bfd_set_section_lma.
-	* spu-tdep.c (spu_overlay_new_objfile): Likewise.
+	PR gdb/26199
+	* remote.c (remote_target::open_1): Pass remote target pointer as
+	data to create_async_event_handler.
+	(remote_async_inferior_event_handler): Mark async event handler
+	before returning if the remote target still has either pending
+	events or unacknowledged notifications.
 
-2019-09-18  Tom Tromey  <tom@tromey.com>
+2020-07-10  John Baldwin  <jhb@FreeBSD.org>
 
-	* NEWS: Add entry.
-	* tui/tui.c (tui_initialize_readline): Set name of keymap.  Do not
-	call rl_initialize.
-	(tui_enable): Do not call rl_initialize.
-
-2019-09-18  Christian Groessler  <chris@groessler.org>
-
-	* alpha-linux-nat.c: Include gdbarch.h.
-
-2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* ui-file.c: Include cli/cli-style.h.
-	(term_cli_styling): Remove cli_styling declaration.
-
-2019-09-18  Alan Modra  <amodra@gmail.com>
-
-	* arm-tdep.c (arm_record_special_symbol): Update bfd_get_section
-	to bfd_asymbol_section.
-
-2019-09-18  Alan Modra  <amodra@gmail.com>
-
-	* amd64-dicos-tdep.c (amd64_dicos_osabi_sniffer): Constify target.
-	* i386-cygwin-tdep.c (i386_cygwin_init_abi): Likewise.
-	* i386-dicos-tdep.c (i386_dicos_osabi_sniffer): Likewise.
-
-2019-09-18  Alan Modra  <amodra@gmail.com>
-
-	* solib-spu.c (spu_bfd_open): Use bfd_set_filename.
-	* spu-linux-nat.c (spu_bfd_open): Likewise.
-
-2019-09-18  Christian Biesinger  <cbiesinger@google.com>
-
-	* dwarf2loc.c: Change extern declaration of dwarf_always_disassemble
-	to bool to match definition in dwarf2read.c.
-
-2019-09-17  Christian Biesinger  <cbiesinger@google.com>
-
-	* ada-lang.c (ada_ignore_descriptive_types_p): Change to bool.
-	(print_signatures): Likewise.
-	(trust_pad_over_xvs): Likewise.
-	* arch/aarch64-insn.c (aarch64_debug): Likewise.
-	* arch/aarch64-insn.h (aarch64_debug): Likewise.
-	* arm-linux-nat.c (arm_apcs_32): Likewise.
-	* arm-linux-tdep.c (arm_apcs_32): Likewise.
-	* arm-nbsd-nat.c (arm_apcs_32): Likewise.
-	* arm-tdep.c (arm_debug): Likewise.
-	(arm_apcs_32): Likewise.
-	* auto-load.c (debug_auto_load): Likewise.
-	(auto_load_gdb_scripts): Likewise.
-	(global_auto_load): Likewise.
-	(auto_load_local_gdbinit): Likewise.
-	(auto_load_local_gdbinit_loaded): Likewise.
-	* auto-load.h (global_auto_load): Likewise.
-	(auto_load_local_gdbinit): Likewise.
-	(auto_load_local_gdbinit_loaded): Likewise.
-	* breakpoint.c (disconnected_dprintf): Likewise.
-	(breakpoint_proceeded): Likewise.
-	(automatic_hardware_breakpoints): Likewise.
-	(always_inserted_mode): Likewise.
-	(target_exact_watchpoints): Likewise.
-	(_initialize_breakpoint): Update.
-	* breakpoint.h (target_exact_watchpoints): Change to bool.
-	* btrace.c (maint_btrace_pt_skip_pad): Likewise.
-	* cli/cli-cmds.c (trace_commands): Likewise.
-	* cli/cli-cmds.h (trace_commands): Likewise.
-	* cli/cli-decode.c (add_setshow_boolean_cmd): Change int* argument
-	to bool*.
-	* cli/cli-logging.c (logging_overwrite): Change to bool.
-	(logging_redirect): Likewise.
-	(debug_redirect): Likewise.
-	* cli/cli-option.h (option_def) <boolean>: Change return type to bool*.
-	(struct boolean_option_def) <get_var_address_cb_>: Change return type
-	to bool.
-	<boolean_option_def>: Update.
-	(struct flag_option_def): Change default type of Context to bool
-	from int.
-	<flag_option_def>: Change return type of var_address_cb_ to bool*.
-	* cli/cli-setshow.c (do_set_command): Cast to bool* instead of int*.
-	(get_setshow_command_value_string): Likewise.
-	* cli/cli-style.c (cli_styling): Change to bool.
-	(source_styling): Likewise.
-	* cli/cli-style.h (source_styling): Likewise.
-	(cli_styling): Likewise.
-	* cli/cli-utils.h (struct qcs_flags) <quiet, cont, silent>: Change
-	to bool.
-	* command.h (var_types): Update comment.
-	(add_setshow_boolean_cmd): Change int* var argument to bool*.
-	* compile/compile-cplus-types.c (debug_compile_cplus_types): Change to
-	bool.
-	(debug_compile_cplus_scopes): Likewise.
-	* compile/compile-internal.h (compile_debug): Likewise.
-	* compile/compile.c (compile_debug): Likewise.
-	(struct compile_options) <raw>: Likewise.
-	* cp-support.c (catch_demangler_crashes): Likewise.
-	* cris-tdep.c (usr_cmd_cris_version_valid): Likewise.
-	(usr_cmd_cris_dwarf2_cfi): Likewise.
-	* csky-tdep.c (csky_debug): Likewise.
-	* darwin-nat.c (enable_mach_exceptions): Likewise.
-	* dcache.c (dcache_enabled_p): Likewise.
-	* defs.h (info_verbose): Likewise.
-	* demangle.c (demangle): Likewise.
-	(asm_demangle): Likewise.
-	* dwarf-index-cache.c (debug_index_cache): Likewise.
-	* dwarf2-frame.c (dwarf2_frame_unwinders_enabled_p): Likewise.
-	* dwarf2-frame.h (dwarf2_frame_unwinders_enabled_p): Likewise.
-	* dwarf2read.c (check_physname): Likewise.
-	(use_deprecated_index_sections): Likewise.
-	(dwarf_always_disassemble): Likewise.
-	* eval.c (overload_resolution): Likewise.
-	* event-top.c (set_editing_cmd_var): Likewise.
-	(exec_done_display_p): Likewise.
-	* event-top.h (set_editing_cmd_var): Likewise.
-	(exec_done_display_p): Likewise.
-	* exec.c (write_files): Likewise.
-	* fbsd-nat.c (debug_fbsd_lwp): Likewise
-	(debug_fbsd_nat): Likewise.
-	* frame.h (struct frame_print_options) <print_raw_frame_arguments>:
-	Likewise.
-	(struct set_backtrace_options) <backtrace_past_main>: Likewise.
-	<backtrace_past_entry> Likewise.
-	* gdb-demangle.h (demangle): Likewise.
-	(asm_demangle): Likewise.
-	* gdb_bfd.c (bfd_sharing): Likewise.
-	* gdbcore.h (write_files): Likewise.
-	* gdbsupport/common-debug.c (show_debug_regs): Likewise.
-	* gdbsupport/common-debug.h (show_debug_regs): Likewise.
-	* gdbthread.h (print_thread_events): Likewise.
-	* gdbtypes.c (opaque_type_resolution): Likewise.
-	(strict_type_checking): Likewise.
-	* gnu-nat.c (gnu_debug_flag): Likewise.
-	* guile/scm-auto-load.c (auto_load_guile_scripts): Likewise.
-	* guile/scm-param.c (pascm_variable): Add boolval.
-	(add_setshow_generic): Update.
-	(pascm_param_value): Update.
-	(pascm_set_param_value_x): Update.
-	* hppa-tdep.c (hppa_debug): Change to bool..
-	* infcall.c (may_call_functions_p): Likewise.
-	(coerce_float_to_double_p): Likewise.
-	(unwind_on_signal_p): Likewise.
-	(unwind_on_terminating_exception_p): Likewise.
-	* infcmd.c (startup_with_shell): Likewise.
-	* inferior.c (print_inferior_events): Likewise.
-	* inferior.h (startup_with_shell): Likewise.
-	(print_inferior_events): Likewise.
-	* infrun.c (step_stop_if_no_debug): Likewise.
-	(detach_fork): Likewise.
-	(debug_displaced): Likewise.
-	(disable_randomization): Likewise.
-	(non_stop): Likewise.
-	(non_stop_1): Likewise.
-	(observer_mode): Likewise.
-	(observer_mode_1): Likewise.
-	(set_observer_mode): Update.
-	(sched_multi): Change to bool.
-	* infrun.h (debug_displaced): Likewise.
-	(sched_multi): Likewise.
-	(step_stop_if_no_debug): Likewise.
-	(non_stop): Likewise.
-	(disable_randomization): Likewise.
-	* linux-tdep.c (use_coredump_filter): Likewise.
-	(dump_excluded_mappings): Likewise.
-	* linux-thread-db.c (auto_load_thread_db): Likewise.
-	(check_thread_db_on_load): Likewise.
-	* main.c (captured_main_1): Update.
-	* maint-test-options.c (struct test_options_opts) <flag_opt, xx1_opt,
-	xx2_opt, boolean_opt>: Change to bool.
-	* maint-test-settings.c (maintenance_test_settings_boolean): Likewise.
-	* maint.c (maintenance_profile_p): Likewise.
-	(per_command_time): Likewise.
-	(per_command_space): Likewise.
-	(per_command_symtab): Likewise.
-	* memattr.c (inaccessible_by_default): Likewise.
-	* mi/mi-main.c (mi_async): Likewise.
-	(mi_async_1): Likewise.
-	* mips-tdep.c (mips64_transfers_32bit_regs_p): Likewise.
-	* nat/fork-inferior.h (startup_with_shell): Likewise.
-	* nat/linux-namespaces.c (debug_linux_namespaces): Likewise.
-	* nat/linux-namespaces.h (debug_linux_namespaces): Likewise.
-	* nios2-tdep.c (nios2_debug): Likewise.
-	* or1k-tdep.c (or1k_debug): Likewise.
-	* parse.c (parser_debug): Likewise.
-	* parser-defs.h (parser_debug): Likewise.
-	* printcmd.c (print_symbol_filename): Likewise.
-	* proc-api.c (procfs_trace): Likewise.
-	* python/py-auto-load.c (auto_load_python_scripts): Likewise.
-	* python/py-param.c (union parmpy_variable): Add "bool boolval" field.
-	(set_parameter_value): Update.
-	(add_setshow_generic): Update.
-	* python/py-value.c (copy_py_bool_obj): Change argument from int*
-	to bool*.
-	* python/python.c (gdbpy_parameter_value): Cast to bool* instead of
-	int*.
-	* ravenscar-thread.c (ravenscar_task_support): Change to bool.
-	* record-btrace.c (record_btrace_target::store_registers): Update.
-	* record-full.c (record_full_memory_query): Change to bool.
-	(record_full_stop_at_limit): Likewise.
-	* record-full.h (record_full_memory_query): Likewise.
-	* remote-notif.c (notif_debug): Likewise.
-	* remote-notif.h (notif_debug): Likewise.
-	* remote.c (use_range_stepping): Likewise.
-	(interrupt_on_connect): Likewise.
-	(remote_break): Likewise.
-	* ser-tcp.c (tcp_auto_retry): Likewise.
-	* ser-unix.c (serial_hwflow): Likewise.
-	* skip.c (debug_skip): Likewise.
-	* solib-aix.c (solib_aix_debug): Likewise.
-	* spu-tdep.c (spu_stop_on_load_p): Likewise.
-	(spu_auto_flush_cache_p): Likewise.
-	* stack.c (struct backtrace_cmd_options) <full, no_filters, hide>:
-	Likewise.
-	(struct info_print_options) <quiet>: Likewise.
-	* symfile-debug.c (debug_symfile): Likewise.
-	* symfile.c (auto_solib_add): Likewise.
-	(separate_debug_file_debug): Likewise.
-	* symfile.h (auto_solib_add): Likewise.
-	(separate_debug_file_debug): Likewise.
-	* symtab.c (basenames_may_differ): Likewise.
-	(struct filename_partial_match_opts) <dirname, basename>: Likewise.
-	(struct info_print_options) <quiet, exclude_minsyms>: Likewise.
-	(struct info_types_options) <quiet>: Likewise.
-	* symtab.h (demangle): Likewise.
-	(basenames_may_differ): Likewise.
-	* target-dcache.c (stack_cache_enabled_1): Likewise.
-	(code_cache_enabled_1): Likewise.
-	* target.c (trust_readonly): Likewise.
-	(may_write_registers): Likewise.
-	(may_write_memory): Likewise.
-	(may_insert_breakpoints): Likewise.
-	(may_insert_tracepoints): Likewise.
-	(may_insert_fast_tracepoints): Likewise.
-	(may_stop): Likewise.
-	(auto_connect_native_target): Likewise.
-	(target_stop_and_wait): Update.
-	(target_async_permitted): Change to bool.
-	(target_async_permitted_1): Likewise.
-	(may_write_registers_1): Likewise.
-	(may_write_memory_1): Likewise.
-	(may_insert_breakpoints_1): Likewise.
-	(may_insert_tracepoints_1): Likewise.
-	(may_insert_fast_tracepoints_1): Likewise.
-	(may_stop_1): Likewise.
-	* target.h (target_async_permitted): Likewise.
-	(may_write_registers): Likewise.
-	(may_write_memory): Likewise.
-	(may_insert_breakpoints): Likewise.
-	(may_insert_tracepoints): Likewise.
-	(may_insert_fast_tracepoints): Likewise.
-	(may_stop): Likewise.
-	* thread.c (struct info_threads_opts) <show_global_ids>: Likewise.
-	(make_thread_apply_all_options_def_group): Change argument from int*
-	to bool*.
-	(thread_apply_all_command): Update.
-	(print_thread_events): Change to bool.
-	* top.c (confirm): Likewise.
-	(command_editing_p): Likewise.
-	(history_expansion_p): Likewise.
-	(write_history_p): Likewise.
-	(info_verbose): Likewise.
-	* top.h (confirm): Likewise.
-	(history_expansion_p): Likewise.
-	* tracepoint.c (disconnected_tracing): Likewise.
-	(circular_trace_buffer): Likewise.
-	* typeprint.c (print_methods): Likewise.
-	(print_typedefs): Likewise.
-	* utils.c (debug_timestamp): Likewise.
-	(sevenbit_strings): Likewise.
-	(pagination_enabled): Likewise.
-	* utils.h (sevenbit_strings): Likewise.
-	(pagination_enabled): Likewise.
-	* valops.c (overload_resolution): Likewise.
-	* valprint.h (struct value_print_options) <prettyformat_arrays,
-	prettyformat_structs, vtblprint, unionprint, addressprint, objectprint,
-	stop_print_at_null, print_array_indexes, deref_ref, static_field_print,
-	pascal_static_field_print, raw, summary, symbol_print, finish_print>:
-	Likewise.
-	* windows-nat.c (new_console): Likewise.
-	(cygwin_exceptions): Likewise.
-	(new_group): Likewise.
-	(debug_exec): Likewise.
-	(debug_events): Likewise.
-	(debug_memory): Likewise.
-	(debug_exceptions): Likewise.
-	(useshell): Likewise.
-	* windows-tdep.c (maint_display_all_tib): Likewise.
-	* xml-support.c (debug_xml): Likewise.
+	* fbsd-nat.h (fbsd_nat_target::supports_multi_process): New
+	declaration.
+	* fbsd-nat.c (fbsd_nat_target::supports_multi_process): New
+	function.
 
-2019-09-17  Mike Gulick  <mgulick@mathworks.com>
+2020-07-09  John Baldwin  <jhb@FreeBSD.org>
 
-	* source.c (prepare_path_for_appending): New function.
-	(openp): Make use of new function.
-	(find_and_open_source): Search for the compilation directory and
-	source file as a relative path beneath the directory search path.
+	* inf-ptrace.c (inf_ptrace_target::wait): Don't compare against
+	inferior_ptid.
 
-2019-09-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-07-09  John Baldwin  <jhb@FreeBSD.org>
 
-	* source-cache.c (source_cache::get_line_charpos): Catch
-	exceptions and return false, this matches the behaviour documented
-	in the header file.
+	* fbsd-tdep.c (fbsd_print_auxv_entry): Handle AT_FREEBSD_ARGC,
+	AT_FREEBSD_ARGV, AT_FREEBSD_ENVC, AT_FREEBSD_ENVV,
+	AT_FREEBSD_PS_STRINGS.
+
+2020-07-08  Hannes Domani  <ssbssa@yahoo.de>
+
+	* auto-load.c (auto_load_objfile_script_1): Convert drive part
+	of debugfile path on Windows.
+
+2020-07-08  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-nat.c (fbsd_nat_target::find_memory_regions): Rename 'obfd'
+	argument to 'data'.
+
+2020-07-08  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_exception_message_1): Use read_memory.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR python/22748
+	* dwarf2/frame-tailcall.c (dwarf2_tailcall_sniffer_first): Remove
+	special handling for inline frames.
+	* findvar.c (value_of_register_lazy): Skip inline frames when
+	creating lazy register values.
+	* frame.c (frame_id_computed_p): Delete definition.
+	* frame.h (frame_id_computed_p): Delete declaration.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention additions to Python API.
+	* python/py-arch.c (archpy_register_groups): New function.
+	(arch_object_methods): Add 'register_groups' method.
+	* python/py-registers.c (reggroup_iterator_object): New struct.
+	(reggroup_object): New struct.
+	(gdbpy_new_reggroup): New function.
+	(gdbpy_reggroup_to_string): New function.
+	(gdbpy_reggroup_name): New function.
+	(gdbpy_reggroup_iter): New function.
+	(gdbpy_reggroup_iter_next): New function.
+	(gdbpy_new_reggroup_iterator): New function
+	(gdbpy_initialize_registers): Register new types.
+	(reggroup_iterator_object_type): Define new Python type.
+	(gdbpy_reggroup_getset): New static global.
+	(reggroup_object_type): Define new Python type.
+	* python/python-internal.h
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in (SUBDIR_PYTHON_SRCS): Add py-registers.c
+	* python/py-arch.c (archpy_registers): New function.
+	(arch_object_methods): Add 'registers' method.
+	* python/py-registers.c: New file.
+	* python/python-internal.h
+	(gdbpy_new_register_descriptor_iterator): Declare.
+	(gdbpy_initialize_registers): Declare.
+	* python/python.c (do_start_initialization): Call
+	gdbpy_initialize_registers.
+	* NEWS: Mention additions to the Python API.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention new Python API method.
+	* python/py-unwind.c (pending_framepy_architecture): New function.
+	(pending_frame_object_methods): Add architecture method.
 
-2019-09-17  Joel Brobecker  <brobecker@adacore.com>
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* ada-tasks.c (info_task): Remove quoting of the task's name.
+	* gdbarch.c: Regenerate.
+	* gdbarch.h: Regenerate.
+	* gdbarch.sh (deprecated_set_gdbarch_data): Delete.
+	(gdbarch_data): Use internal_error for the case where
+	deprecated_set_gdbarch_data was originally needed.
+	* ia64-libunwind-tdep.c (libunwind_descr_init): Update parameters,
+	and use passed in obstack.
+	(libunwind_frame_set_descr): Should no longer get back NULL from
+	gdbarch_data.
+	(_initialize_libunwind_frame): Register as a pre-init gdbarch data
+	type.
+	* user-regs.c (user_regs_init): Update parameters, and use passed
+	in obstack.
+	(user_reg_add): Should no longer get back NULL from gdbarch_data.
+	(_initialize_user_regs): Register as a pre-init gdbarch data type.
 
-2019-09-16  Christian Biesinger  <cbiesinger@google.com>
+2020-07-06  Tom de Vries  <tdevries@suse.de>
 
-	* symfile.c (auto_solib_add): Replace comment with a reference
-	to the header file.
+	* buildsym.c (buildsym_compunit::end_symtab_with_blockvector): Handle
+	End-Of-Sequence in lte_is_less_than.
+	* symtab.c (find_pc_sect_line): Revert change from commit 3d92a3e313
+	"gdb: Don't reorder line table entries too much when sorting".
 
-2019-09-14  Christian Biesinger  <cbiesinger@google.com>
+2020-07-06  Tom de Vries  <tdevries@suse.de>
 
-	* NEWS: Mention that gdb can now be compiled with Python 3
-	on Windows.
+	PR tui/26205
+	* tui/tui-win.c (tui_partial_win_by_name): Don't test for NULL name.
 
-2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-07-05  Tom de Vries  <tdevries@suse.de>
 
-	* maint.c (maint_print_section_data::maint_print_section_data):
-	Force use of 'float log10 (float)' by casting the argument to
-	float.
+	PR build/26187
+	* inferior.h (struct infcall_suspend_state_deleter): If available, use
+	std::uncaught_exceptions instead of deprecated
+	std::uncaught_exception.
 
-2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-07-02  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* maint.c: Add 'cmath' include.
-	(struct maint_print_section_data): New structure.
-	(print_section_index): New function.
-	(print_bfd_section_info): Add header comment, small whitespace
-	cleanup, and update to call new print_section_index function.
-	(print_objfile_section_info): Likewise.
-	(maint_obj_section_from_bfd_section): New function.
-	(print_bfd_section_info_maybe_relocated): New function.
-	(maintenance_info_sections): Add header comment, always use
-	bfd_map_over_sections instead of ALL_OBJFILE_OSECTIONS.
-
-2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* psymtab.c (find_pc_sect_psymtab): Move baseaddr local into more
-	inner scope, add check that the objfile has psymtabs before
-	checking psymtabs_addrmap.
-	* psymtab.h (psymtab_storage) <psymtabs_addrmap>: Extend comment.
-
-2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* NEWS: Announce that Ada task names are now shown at more places,
-	and between quotes (except in info task output).
-	* gdb/ada-tasks.c (task_to_str): New function.
-	(display_current_task_id): Call task_to_str.
-	(task_command_1): Likewise.
-	(print_ada_task_info): In non-mi mode, Properly align headers and data
-	when task-id length is > 9 (9 is the default for a 32 bits CORE_ADDR).
+	* macroexp.h (macro_stringify): Return
+	gdb::unique_xmalloc_ptr<char>.
+	* macroexp.c (macro_stringify): Likewise.
+	* macrotab.c (fixup_definition): Update.
 
-2019-09-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+2020-07-02  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* procfs.c (procfs_target::wait) <PR_FAULTED>: Get signal from
-	prstatus.pr_lwp.pr_info instead of making it up.
+	* c-exp.y (scan_macro_expansion): Don't free `expansion`.
+	(lex_one_token): Update.
+	* macroexp.c (struct macro_buffer) <release>: Return
+	gdb::unique_xmalloc_ptr<char>.
+	(macro_stringify): Update.
+	(macro_expand): Update.
+	(macro_expand_next): Return gdb::unique_xmalloc_ptr<char>.
+	* macroexp.h (macro_expand_next): Likewise.
+
+2020-07-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* macroexp.h (macro_lookup_ftype): Remove.
+	(macro_expand, macro_expand_once, macro_expand_next): Remove
+	lookup function parameters, add scope parameter.
+	* macroexp.c (scan, substitute_args, expand, maybe_expand,
+	macro_expand, macro_expand_once, macro_expand_next): Likewise.
+	* macroscope.h (standard_macro_lookup): Change parameter type
+	to macro_scope.
+	* macroscope.c (standard_macro_lookup): Likewise.
+	* c-exp.y (lex_one_token): Update.
+	* macrocmd.c (macro_expand_command): Likewise.
+	(macro_expand_once_command): Likewise.
 
-2019-09-11  Christian Biesinger  <cbiesinger@google.com>
-
-	* auto-load.c (auto_load_expand_dir_vars): Update.
-	* defs.h (gdb_datadir): Change to std::string.
-	(python_libdir): Likewise.
-	(relocate_gdb_directory): Change return type to std::string.
-	* guile/guile.c (gdbscm_data_directory): Update.
-	(initialize_scheme_side): Update.
-	* jit.c (jit_reader_dir): Change to std::string.
-	(jit_reader_load_command): Update.
-	* main.c (gdb_datadir): Change to std::string.
-	(python_libdir): Likewise.
-	(set_gdb_data_directory): Update.
-	(relocate_path): Change to return std::string.
-	(relocate_gdb_directory): Change to return std::string.
-	(relocate_gdbinit_path_maybe_in_datadir): Update.
-	(captured_main_1): Update.
-	* python/python.c (do_start_initialization): Update.
-	* top.c (show_gdb_datadir): Update.
-	* xml-syscall.c (xml_init_syscalls_info): Update.
-	(init_syscalls_info): Update.
-
-2019-09-11  Christian Biesinger  <cbiesinger@google.com>
-
-	* main.c (relocate_gdbinit_path_maybe_in_datadir): Factor this code
-	out of get_init_files.
-	(get_init_files): Update.
-
-2019-09-11  Christian Biesinger  <cbiesinger@google.com>
-
-	* main.c (get_init_files): Change to use std::string.
-	(captured_main_1): Update.
-	(print_gdb_help): Update.
+2020-07-02  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-09-11  Ali Tamur  <tamur@google.com>
+	* inf-loop.c (inferior_event_handler): Remove client_data param.
+	* inf-loop.h (inferior_event_handler): Likewise.
+	* infcmd.c (step_1): Adjust.
+	* infrun.c (proceed): Adjust.
+	(fetch_inferior_event): Remove client_data param.
+	(infrun_async_inferior_event_handler): Adjust.
+	* infrun.h (fetch_inferior_event): Remove `void *` param.
+	* linux-nat.c (handle_target_event): Adjust.
+	* record-btrace.c (record_btrace_handle_async_inferior_event):
+	Adjust.
+	* record-full.c (record_full_async_inferior_event_handler):
+	Adjust.
+	* remote.c (remote_async_inferior_event_handler): Adjust.
 
-	*gdb/target-float.c (host_float_ops<T>::to_longest): Update
-	implementation.
+2020-07-01  Tom Tromey  <tom@tromey.com>
 
-2019-09-11  Christian Biesinger  <cbiesinger@google.com>
+	* tui/tui-data.h (struct tui_win_info) <name>: Now pure virtual.
+	* tui/tui-stack.h (struct tui_locator_window) <name>: New method.
 
-	* dbxread.c (read_dbx_symtab): Update.
-	* dwarf2read.c (load_partial_dies): Update.
-	* mdebugread.c (parse_partial_symbols): Update.
-	(handle_psymbol_enumerators): Update.
-	* psympriv.h (add_psymbol_to_list): Change type of copy_names to bool.
-	* psymtab.c (add_psymbol_to_bcache): Likewise.
-	(add_psymbol_to_list): Likewise.
-	* symtab.c (symbol_set_names): Likewise.
-	* symtab.h (symbol_set_names): Likewise.
-	* xcoffread.c (scan_xcoff_symtab): Update.
+2020-07-01  Tom Tromey  <tom@tromey.com>
 
-2019-09-11  Tom Tromey  <tom@tromey.com>
+	* tui/tui-wingeneral.c (tui_win_info::refresh_window): Move from
+	tui_gen_win_info.
+	(tui_win_info::make_window): Merge with
+	tui_gen_win_info::make_window.
+	(tui_win_info::make_visible): Move from tui_gen_win_info.
+	* tui/tui-win.c (tui_win_info::max_width): Move from
+	tui_gen_win_info.
+	* tui/tui-layout.h (class tui_layout_window) <m_window>: Change
+	type.
+	<window_factory>: Likewise.
+	* tui/tui-layout.c (tui_win_info::resize): Move from
+	tui_gen_win_info.
+	(make_standard_window): Change return type.
+	(get_locator_window, tui_get_window_by_name): Likewise.
+	(tui_layout_window::apply): Remove a cast.
+	* tui/tui-data.h (MIN_WIN_HEIGHT): Move earlier.
+	(struct tui_win_info): Merge with tui_gen_win_info.
+	(struct tui_gen_win_info): Remove.
+
+2020-07-01  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (struct tui_locator_window): Derive from
+	tui_win_info.
+	<do_scroll_horizontal, do_scroll_vertical>: New methods.
+	<can_box>: New method.
 
-	* symfile-mem.c (symbol_file_add_from_memory): Use
-	bfd_set_filename.
-	* solib-darwin.c (darwin_bfd_open): Use bfd_set_filename.
-	* solib-aix.c (solib_aix_bfd_open): Use bfd_set_filename.
+2020-07-01  Tom Tromey  <tom@tromey.com>
 
-2019-09-10  Tom Tromey  <tromey@adacore.com>
+	* tui/tui-stack.h (struct tui_locator_window): Remove body.
 
-	* dwarf-index-write.c (write_psymbols): Extend error message.
-	(debug_names::insert): Add Ada code.
-	(debug_names::write_psymbols): Remove Ada check.
-	(debug_names) <m_string_obstack>: New member.
-	* dwarf2read.c (gdb_index_symbol_name_matcher): Remove.
-	(gdb_index_symbol_name_matcher::matches): Remove.
-	(mapped_index_base::find_name_components_bounds): Add "lang"
-	parameter.
-	(mapped_index_base::build_name_components): Also split names
-	according to Ada syntax.
-	(dw2_expand_symtabs_matching_symbol): Loop over languages.  Change
-	type of "match_callback".
-	(check_match, check_find_bounds_finds)
-	(dw2_expand_symtabs_matching): Update.
-	(dw2_debug_names_iterator): Add new constructor.
-	(dw2_debug_names_map_matching_symbols): New function.
-	(dw2_debug_names_expand_symtabs_matching): Update.
-	(dwarf2_debug_names_functions): Use
-	dw2_debug_names_map_matching_symbols.
+2020-07-01  Tom Tromey  <tom@tromey.com>
 
-2019-09-10  Tom Tromey  <tromey@adacore.com>
+	* tui/tui-regs.c (tui_data_window::display_registers_from)
+	(tui_data_window::display_registers_from)
+	(tui_data_window::first_data_item_displayed)
+	(tui_data_window::delete_data_content_windows): Update.
+	(tui_data_window::refresh_window, tui_data_window::no_refresh):
+	Remove.
+	(tui_data_window::check_register_values): Update.
+	(tui_data_item_window::rerender): Add parameters.  Update.
+	(tui_data_item_window::refresh_window): Remove.
+	* tui/tui-data.h (struct tui_gen_win_info) <no_refresh>: No longer
+	virtual.
+	* tui/tui-regs.h (struct tui_data_item_window): Don't derive from
+	tui_gen_win_info.
+	<refresh_window, max_height, min_height>: Remove.
+	<rerender>: Add parameters.
+	<x, y, visible>: New members.
+	(struct tui_data_window) <refresh_window, no_refresh>: Remove.
+	<m_item_width>: New member.
 
-	* dwarf2read.c (dw2_get_file_names_reader): Add the
-	CU's file name to the results.
+2020-07-01  Tom Tromey  <tom@tromey.com>
 
-2019-09-10  Tom Tromey  <tromey@adacore.com>
-
-	* ada-lang.c (add_nonlocal_symbols): Combine calls to
-	map_matching_symbols.  Update.
-	* dwarf2read.c (dw2_map_matching_symbols): Update.
-	* psymtab.c (match_partial_symbol): Change type; update.
-	(psym_map_matching_symbols): Likewise.
-	* symfile-debug.c (debug_qf_map_matching_symbols): Change
-	type; update.
-	* symfile.h (struct quick_symbol_functions)
-	<map_matching_symbols>: Change "name" to be a lookup_name_info.
-	Remove "match".
-
-2019-09-10  Tom Tromey  <tromey@adacore.com>
-
-	* psymtab.c (map_block): Remove.
-	(psym_map_matching_symbols): Use iterate_over_symbols_terminated.
-	* symtab.c (iterate_over_symbols_terminated): New function.
-	* symtab.c (iterate_over_symbols_terminated): Declare.
-
-2019-09-10  Tom Tromey  <tromey@adacore.com>
-
-	* ada-lang.c (ada_iterate_over_symbols): Return bool.
-	* language.h (struct language_defn) <la_iterate_over_symbols>:
-	Return bool.
-	* symtab.c (iterate_over_symbols): Return bool.
-	* symtab.h (iterate_over_symbols): Return bool.
-
-2019-09-10  Tom Tromey  <tromey@adacore.com>
-
-	* ada-lang.c (aux_add_nonlocal_symbols): Change type.
-	(add_nonlocal_symbols): Update.
-	* dwarf2read.c (dw2_map_matching_symbols): Change type.
-	* psymtab.c (map_block, psym_map_matching_symbols): Change type.
-	* symfile-debug.c (debug_qf_map_matching_symbols): Change type.
-	* symfile.h (struct quick_symbol_functions) <map_matching_symbols>:
-	Change type of "callback".  Remove "data".
-
-
-2019-09-09  Ali Tamur  <tamur@google.com>
-
-	* dwarf2read.c (comp_unit_head): Update comment.                     
-	(dwarf2_dwo_name): New function declaration.                             
-	(dwarf_unit_type_name): New function declaration.                        
-	(read_comp_unit_head): Add support for new compilation units,            
-	DW_UT_partial, DW_UT_skeleton, DW_UT_split_compile, DW_UT_split_type.    
-	Particularly, DW_UT_skeleton and DW_UT_split_compile have dwo_id         
-	(currently named as "signature") in their header. Also clarify error     
-	messages.                                                                
-	(lookup_dwo_id): New function. Returns the dwo id of the given           
-	compile unit.                                                            
-	(lookup_dwo_unit): Use the new lookup_dwo_id function.                   
-	(init_cutu_and_read_dies): Use the new dwarf2_dwo_name and lookup_dwo_id 
-	functions.                                                               
-	(create_dwo_cu_reader): Use the added lookup_dwo_id function.            
-	(dwarf2_dwo_name): Get the dwo name if present.                          
-	(dwarf_unit_type_name): Convert DW_UT_* types to string for diagnostic   
-	purposes.
-
-2019-09-09  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (tui_all_windows_info): Use ui_out.
-
-2019-09-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* python/python.c (do_start_initialization): Make progname_copy static,
-	to avoid a leak report.
-
-2019-09-08  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.c (box_win): Truncate long window titles.
-
-2019-09-07  Simon Marchi  <simon.marchi@efficios.com>
-
-	* dwarf2read.c (struct dw2_symtab_iterator) <block_index>:
-	Change type to gdb::optional<block_enum>.
-	(dw2_symtab_iter_init): Change block_index parameter type
-	to gdb::optional<block_enum>.
-	(dw2_lookup_symbol): Change block_index parameter
-	type to block_enum.c
-	(dw2_debug_names_lookup_symbol): Likewise.
-	* psymtab.c (psym_lookup_symbol): Likewise.
-	* symfile-debug.c (debug_qf_lookup_symbol): Likewise.
-	* symfile.h (struct quick_symbol_functions) <lookup_symbol>:
-	Likewise.
+	* tui/tui-regs.c (tui_data_window::show_register_group)
+	(tui_data_window::check_register_values): Update.
+	* tui/tui-regs.h (struct tui_data_item_window) <regno>: Rename
+	from item_no.
 
-2019-09-06  Christian Biesinger  <cbiesinger@google.com>
+2020-07-01  Tom Tromey  <tom@tromey.com>
 
-	* defs.h (relocate_gdb_directory): Change int to bool in
-	signature and rename flag to relocatable.
-	* main.c (relocate_path): Likewise.
-	(relocate_gdb_directory): Likewise.
-
-2019-09-06  Alan Modra  <amodra@gmail.com>
-
-	* coffread.c (coff_symfile_read): Constify filename variable.
-	* dbxread.c (dbx_symfile_init, coffstab_build_psymtabs),
-	(elfstab_build_psymtabs, stabsect_build_psymtabs): Likewise.
-	* gdb_bfd.c (gdb_bfd_close_or_warn): Likewise.
-	* solib.c (reload_shared_libraries_1): Likewise.
-	* symfile.c (reread_symbols): Likewise.
-	* solib-aix.c (solib_aix_bfd_open): Add cast for xfree of filename.
-	* solib-darwin.c (darwin_bfd_open): Likewise.
-	* symfile-mem.c (symbol_file_add_from_memory): Likewise.
+	* tui/tui-regs.c (tui_data_window::show_register_group): Remove
+	useless "if".
 
-2019-09-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-07-01  Tom Tromey  <tom@tromey.com>
 
-	* psymtab.c (print_partial_symbols): Handle missing domain_enum
-	values MODULE_DOMAIN and COMMON_BLOCK_DOMAIN.
+	* tui/tui-regs.c (tui_data_window::show_register_group): Update.
+	* tui/tui-regs.h (struct tui_data_item_window) <name>: Remove.
 
-2019-09-03  Tom Tromey  <tromey@adacore.com>
+2020-07-01  Tom Tromey  <tom@tromey.com>
 
-	* ada-valprint.c (ada_val_print_num): Don't recurse for range
-	types.
-	(has_negatives): Unbias a range type bound.
-	* dwarf2read.c (read_subrange_type): Handle DW_AT_GNU_bias.
-	* gdbtypes.c (operator==): Handle new field.
-	(create_range_type): Add "bias" parameter.
-	(create_static_range_type, resolve_dynamic_range): Update.
-	* gdbtypes.h (struct range_bounds) <bias>: New member.
-	(create_range_type): Add bias parameter.
-	* printcmd.c (print_scalar_formatted): Unbias range types.
-	* value.c (unpack_long): Unbias range types.
-	(pack_long): Bias range types.
-
-2019-09-02  Alan Hayward  <alan.hayward@arm.com>
-
-	* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Check all
-	probe arguments.
-
-2019-09-02  Alan Hayward  <alan.hayward@arm.com>
-
-	* break-catch-throw.c (fetch_probe_arguments): Use gdbarch.
-	* dtrace-probe.c (dtrace_probe::get_argument_count): Likewise.
-	* probe.c (probe_safe_evaluate_at_pc) (compute_probe_arg)
-	(compile_probe_arg): Likewise.
-	* probe.h (get_argument_count): Likewise.
-	* solib-svr4.c (solib_event_probe_action): Likewise.
-	* stap-probe.c (stap_probe::get_argument_count): Likewise.
-
-2019-09-02  Alan Hayward  <alan.hayward@arm.com>
-
-	* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Move
-	code to here...
-	(svr4_create_solib_event_breakpoints): ...from here.
+	* tui/tui-stack.c (SINGLE_KEY): Move from tui-data.h
+	* tui/tui-winsource.h (enum tui_line_or_address_kind)
+	(struct tui_line_or_address): Move from tui-data.h.
+	* tui/tui-win.c (DEFAULT_TAB_LEN): Move from tui-data.h.
+	* tui/tui-data.h (DEFAULT_TAB_LEN): Move to tui-win.c.
+	(tui_cmd_window, tui_source_window_base, tui_source_window)
+	(tui_disasm_window): Don't declare.
+	(enum tui_line_or_address_kind, struct tui_line_or_address): Move
+	to tui-winsource.h.
+	(SINGLE_KEY): Move to tui-stack.c.
 
-2019-08-30  Sergio Durigan Junior  <sergiodj@redhat.com>
+2020-07-01  Tom Tromey  <tom@tromey.com>
 
-	* nat/fork-inferior.c (trace_start_error): Remove "\nError: "
-	suffix from warning message.
+	* tui/tui-regs.h (struct tui_data_item_window) <content>: Now a
+	std::string.
+	* tui/tui-regs.c (class tab_expansion_file): New.
+	(tab_expansion_file::write): New method.
+	(tui_register_format): Change return type.  Use
+	tab_expansion_file.
+	(tui_get_register, tui_data_window::display_registers_from)
+	(tui_data_item_window::rerender): Update.
+	* tui/tui-io.h (tui_expand_tabs): Don't declare.
+	* tui/tui-io.c (tui_expand_tabs): Remove.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-07-01  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<refresh_all>: Don't declare.
-	* tui/tui-winsource.c (tui_source_window_base::refresh_all):
-	Remove.
-	* tui/tui-win.c (tui_refresh_all_win): Don't call refresh_all or
-	tui_show_locator_content.
-	* tui/tui-regs.h (struct tui_data_window) <refresh_all>: Don't
-	declare.
-	* tui/tui-regs.c (tui_data_window::refresh_all): Remove.
-	* tui/tui-data.h (struct tui_win_info) <refresh_all>: Don't
-	declare.
+	* tui/tui-regs.c (tui_reggroup_completer): Use complete_on_enum.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-07-01  Fangrui Song  <maskray@google.com>
 
-	* tui/tui-io.c (tui_cont_sig): Don't call wrefresh.
+	* dwarf2/read.c (lnp_state_machine::check_line_address): Test -1.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-07-01  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
 
-	* tui/tui-stack.c (_initialize_tui_stack): Move later.
-	Remove unnecessary forward declarations.
+	* dwarf2/read.c (set_die_type): Removed conditions to restrict
+	forms for DW_AT_associated and DW_AT_allocated attributes,
+	which is already checked in function attr_to_dynamic_prop.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-06-30  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-stack.c (tui_locator_window::set_locator_fullname): Call
-	rerender.
-	(tui_update_locator_fullname, tui_show_frame_info): Don't call
-	tui_show_locator_content.
+	* dwarf2/read.c (quirk_rust_enum): Correctly call
+	alloc_rust_variant for default-less enum.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-06-30  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-stack.c (tui_show_locator_content): Move lower.  Rewrite.
-	(tui_locator_window::rerender): Rewrite using body of previous
-	tui_show_locator_content.
+	PR build/26183:
+	* ada-lang.c (ada_lookup_name_info::ada_lookup_name_info): Use
+	gdb::to_string.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-06-29  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-stack.h (struct tui_locator_window) <set_locator_info,
-	set_locator_fullname>: New methods.
-	* tui/tui-stack.c (tui_locator_window::set_locator_fullname):
-	Rename from tui_set_locator_fullname.
-	(tui_locator_window::set_locator_info): Rename from
-	tui_set_locator_info.  Return bool.
-	(tui_update_locator_fullname, tui_show_frame_info): Update.
+	* gdbarch.sh (displaced_step_copy_insn): Update doc.
+	* gdbarch.h: Re-generate.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-06-28  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-layout.c (show_layout): Don't call tui_refresh_all.
+	* command.h (cmd_types): Remove.
+	(cmd_type): Don't declare.
+	* cli/cli-decode.h (enum cmd_types): Uncomment.  No longer a
+	typedef.
+	* cli/cli-cmds.c (setting_cmd): Use cmd->type directly.
+	* cli/cli-decode.c (cmd_type): Remove.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-06-27  Pedro Alves  <palves@redhat.com>
 
-	* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Don't
-	call touchwin.
+	* fork-child.c (prefork_hook): Adjust.
+	* infcmd.c (set_inferior_io_terminal, get_inferior_io_terminal):
+	Delete.
+	(set_inferior_tty_command, show_inferior_tty_command): Adjust.
+	* inferior.c (inferior::set_tty, inferior::tty): New methods.
+	* inferior.h (set_inferior_io_terminal, get_inferior_io_terminal):
+	Remove declarations.
+	(struct inferior) <set_tty, tty>: New methods.
+	(struct inferior) <terminal>: Rename to ...
+	(struct inferior) <m_terminal>: ... this and make private.
+	* main.c (captured_main_1): Adjust.
+	* mi/mi-cmd-env.c (mi_cmd_inferior_tty_set): Adjust.
+	(mi_cmd_inferior_tty_show): Adjust.
+	* nto-procfs.c (nto_procfs_target::create_inferior): Adjust.
+	* windows-nat.c (windows_nat_target::create_inferior): Adjust.
+
+2020-06-26  Nick Alcock  <nick.alcock@oracle.com>
+
+	* configure.ac: Add --enable-libctf: handle --disable-static
+	properly.
+	* acinclude.m4: sinclude ../config/enable.m4.
+	* Makefile.in (aclocal_m4_deps): Adjust accordingly.
+	(LIBCTF): Substitute in.
+	(CTF_DEPS): New, likewise.
+	(CLIBS): libctf needs symbols from libbfd: move earlier.
+	(CDEPS): Use CTF_DEPS, not LIBCTF, now LIBCTF can include rpath
+	flags.
+	* ctfread.c: Surround in ENABLE_LIBCTF.
+	(elfctf_build_psymtabs) [!ENABLE_LIBCTF]: New stub.
+	* configure: Regenerate.
+	* config.in: Likewise.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-06-25  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-wingeneral.c (box_win): Assume win_info and
-	win_info->handle cannot be NULL.
+	* infcmd.c (set_inferior_io_terminal): Use make_unique_xstrdup.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-06-25  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-regs.h (struct tui_data_item_window) <rerender,
-	refresh_window>: Declare.
-	* tui/tui-regs.c (tui_data_window::display_registers_from): Call
-	resize.
-	(tui_data_item_window::rerender): Rename from
-	tui_display_register.
-	(tui_data_item_window::refresh_window): New method.
-	* tui/tui-layout.c (tui_gen_win_info::resize): Do nothing on
-	no-op.
+	* inferior.h (struct inferior) <terminal>: Change type to
+	gdb::unique_xmalloc_ptr<char>.
+	* inferior.c (inferior::~inferior): Don't free inf->terminal.
+	* infcmd.c (set_inferior_io_terminal): Don't free terminal
+	field, adjust to unique pointer.
+	(get_inferior_io_terminal): Adjust to unique pointer.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-regs.h (struct tui_data_window) <regs_content,
-	regs_column_count, current_group>: Move later.  Now private.
-	<get_current_group>: New method.
-	* tui/tui-regs.c (tui_reg_command): Update.
-	* tui/tui-layout.c (tui_set_layout): Update.
+	* riscv-tdep.c (riscv_print_registers_info): Loop over all
+	registers, not just the known core set of registers.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-regs.c (tui_data_window::display_registers_from_line)
-	(tui_data_window::rerender): Don't call
-	check_and_display_highlight_if_needed.
-	(tui_data_window::refresh_all): Remove call to
-	erase_data_content.
+	* riscv-tdep.c (riscv_register_name): Return NULL for duplicate
+	fflags, frm, and fcsr registers.
+	(riscv_register_reggroup_p): Remove unknown CSRs from save and
+	restore groups.
+	(riscv_tdesc_unknown_reg): New function.
+	(riscv_gdbarch_init): Pass riscv_tdesc_unknown_reg to
+	tdesc_use_registers.
+	* riscv-tdep.h (struct gdbarch_tdep): Add
+	unknown_csrs_first_regnum, unknown_csrs_count,
+	duplicate_fflags_regnum, duplicate_frm_regnum, and
+	duplicate_fcsr_regnum fields.
 
-2019-08-30  Tom Tromey  <tom@tromey.com>
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-regs.c (tui_data_window::last_regs_line_no)
-	(tui_data_window::display_registers_from)
-	(tui_data_window::display_reg_element_at_line)
-	(tui_data_window::display_registers_from_line): Remove checks of
-	"empty".
-
-2019-08-30  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.h (struct tui_data_window) <display_all_data>:
-	Don't declare.
-	* tui/tui-regs.c (tui_data_window::show_registers): Call
-	rerender.
-	(tui_data_window::rerender): Rename from display_all_data.
-	(tui_data_window::rerender): Remove old implementation.
-
-2019-08-30  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.c (tui_data_window::display_all_data): Change
-	text.
-	* tui/tui-data.h (NO_DATA_STRING): Remove define.
+	* target-descriptions.c (tdesc_use_registers): Add new parameter a
+	callback, use the callback (when not null) to help number unknown
+	registers.
+	* target-descriptions.h (tdesc_unknown_register_ftype): New typedef.
+	(tdesc_use_registers): Add extra parameter to declaration.
 
-2019-08-29  Bernhard Wodok  <barto@gmx.net>
-	    Sergio Durigan Junior  <sergiodj@redhat.com>
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	PR win32/24284
-	* mingw-hdep.c (gdb_select): Handle case when 'n' is zero.
+	* riscv-tdep.c (value_of_riscv_user_reg): Moved to here from later
+	in the file.
+	(class riscv_pending_register_alias): Likewise.
+	(riscv_register_feature::register_info): Change 'required_p' field
+	to 'required', and change its type.  Add 'check' member function.
+	(riscv_register_feature::register_info::check): Define new member
+	function.
+	(riscv_xreg_feature): Change initialisation of 'required' field.
+	(riscv_freg_feature): Likewise.
+	(riscv_virtual_feature): Likewise.
+	(riscv_csr_feature): Likewise.
+	(riscv_check_tdesc_feature): Take extra parameter, the csr
+	tdesc_feature, rewrite the function to use the new
+	riscv_register_feature::register_info::check function.
+	(riscv_gdbarch_init): Pass the csr tdesc_feature where needed.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* features/Makefile: Remove all references to the deleted files
+	below.
+	* features/riscv/32bit-csr.c: Deleted.
+	* features/riscv/32bit-csr.xml: Deleted.
+	* features/riscv/64bit-csr.c: Deleted.
+	* features/riscv/64bit-csr.xml: Deleted.
+	* features/riscv/rebuild-csr-xml.sh: Deleted.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (struct riscv_register_feature::register_info): Fix
+	whitespace error for declaration of names member variable.
+	(struct riscv_register_feature): Add new prefer_first_name member
+	variable, and fix whitespace error in declaration of registers.
+	(riscv_xreg_feature): Initialize prefer_first_name field.
+	(riscv_freg_feature): Likewise.
+	(riscv_virtual_feature): Likewise.
+	(riscv_csr_feature): Likewise.
+	(riscv_register_name): Expand on comments.  Remove register name
+	modifications for CSR and virtual registers.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (struct riscv_register_feature): Fix whitespace
+	errors.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_create_csr_aliases): Handle csr aliases from
+	riscv-opc.h.
+	(class riscv_pending_register_alias): New class.
+	(riscv_check_tdesc_feature): Take vector of pending aliases and
+	populate it as appropriate.
+	(riscv_setup_register_aliases): Delete.
+	(riscv_gdbarch_init): Create vector of pending aliases and pass it
+	to riscv_check_tdesc_feature in all cases.  Use the vector to
+	create the register aliases.
+
+2020-06-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* sol2-tdep.c (sol2_static_transform_name): Remove.
+	(sol2_init_abi): Don't register it.
+	* gdbarch.sh (static_transform_name): Remove.
+	* gdbarch.c, gdbarch.h: Regenerate.
+
+	* dbxread.c (read_dbx_symtab) <'S'>: Remove call to
+	gdbarch_static_transform_name.
+	* mdebugread.c (parse_partial_symbols) <'S'>: Likewise.
+	* stabsread.c (define_symbol) <'X'>: Remove.
+	(define_symbol) <'S'>: Remove gdbarch_static_transform_name
+	handling.
+	<'V'>: Likewise.
+	* xcoffread.c (scan_xcoff_symtab): Remove gdbarch.
+	<'S'>: Remove call to gdbarch_static_transform_name.
+
+2020-06-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* procfs.c (procfs_pre_trace): New function.
+	(procfs_target::create_inferior): Pass it to fork_inferior.
+
+2020-06-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* configure.tgt <sparc-*-linux*> (gdb_target_obs): Remove
+	sparc-sol2-tdep.o, sol2-tdep.o, sparc64-sol2-tdep.o.
+	<sparc64-*-linux*> (gdb_target_obs): Remove sparc64-sol2-tdep.o,
+	sol2-tdep.o, sparc-sol2-tdep.o.
+	* sparc-sol2-tdep.c (sparc32_sol2_init_abi): Make static.
+	* sparc-tdep.h (sparc32_sol2_init_abi): Remove.
+	* sparc64-sol2-tdep.c (sparc64_sol2_init_abi): Make static.
+	* sparc64-tdep.h (sparc64_sol2_init_abi): Remove.
+
+2020-06-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* amd64-sol2-tdep.c (amd64_sol2_sigtramp_p): Remove.
+	(amd64_sol2_init_abi): Use sol2_sigtramp_p.
+	Call sol2_init_abi.
+ 	Remove calls to set_gdbarch_skip_solib_resolver,
+	set_gdbarch_core_pid_to_str.
+	* i386-sol2-tdep.c (i386_sol2_sigtramp_p): Remove.
+	(i386_sol2_static_transform_name): Remove.
+	(i386_sol2_init_abi): Call sol2_init_abi.
+	Remove calls to set_gdbarch_sofun_address_maybe_missing,
+	set_gdbarch_static_transform_name,
+	set_gdbarch_skip_solib_resolver, set_gdbarch_core_pid_to_str.
+	Use sol2_sigtramp_p.
+	* sol2-tdep.c (sol2_pc_in_sigtramp): New function.
+	(sol2_sigtramp_p): New function.
+	(sol2_static_transform_name): New function.
+	(sol2_skip_solib_resolver, sol2_core_pid_to_str): Make static.
+	(sol2_init_abi): New function.
+	* sol2-tdep.h (sol2_sigtramp_p, sol2_init_abi): Declare.
+	(sol2_skip_solib_resolver, sol2_core_pid_to_str): Remove.
+	* sparc-sol2-tdep.c (sparc_sol2_pc_in_sigtramp): Remove.
+	(sparc32_sol2_sigtramp_frame_sniffer): Just call sol2_sigtramp_p.
+	(sparc_sol2_static_transform_name): Remove.
+	(sparc32_sol2_init_abi): Call sol2_init_abi.
+	Remove calls to set_gdbarch_sofun_address_maybe_missing,
+	set_gdbarch_static_transform_name,
+	set_gdbarch_skip_solib_resolver,
+	set_gdbarch_core_pid_to_str.
+	* sparc-tdep.h (sparc_sol2_pc_in_sigtramp)
+	(sparc_sol2_static_transform_name): Remove
+	* sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_sniffer): Just
+	call sol2_sigtramp_p.
+	(sparc64_sol2_init_abi): Call sol2_init_abi.
+	Remove calls to set_gdbarch_sofun_address_maybe_missing,
+	set_gdbarch_static_transform_name,
+	set_gdbarch_skip_solib_resolver, set_gdbarch_core_pid_to_str.
+
+2020-06-24  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* symfile-add-flags.h: New flag SYMFILE_ALWAYS_CONFIRM.
+	* exec.c (validate_exec_file): If from_tty, set both
+	SYMFILE_VERBOSE (== from_tty) and SYMFILE_ALWAYS_CONFIRM.
+	* symfile.c (symbol_file_add_with_addrs): if always_confirm
+	and from_tty, unconditionally ask a confirmation.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* target-descriptions.c (tdesc_architecture_name): Protect against
+	NULL pointer dereference.
+	(maint_print_xml_tdesc_cmd): New function.
+	(_initialize_target_descriptions): Register new 'maint print
+	xml-tdesc' command and give it the filename completer.
+	* NEWS: Mention new 'maint print xml-tdesc' command.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* target-descriptions.c (class tdesc_compatible_info): New class.
+	(struct target_desc): Change type of compatible vector.
+	(tdesc_compatible_p): Update for change in type of
+	target_desc::compatible.
+	(tdesc_compatible_info_list): New function.
+	(tdesc_compatible_info_arch_name): New function.
+	(tdesc_add_compatible): Update for change in type of
+	target_desc::compatible.
+	(print_c_tdesc::visit_pre): Likewise.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* target-descriptions.c (print_c_tdesc::print_c_tdesc): Change
+	whitespace to underscore.
+	(maint_print_c_tdesc_cmd): Use fake filename for target
+	descriptions that came from the target.
+	(_initialize_target_descriptions): Add filename command completion
+	for 'maint print c-tdesc'.
+
+2020-06-23  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/loc.c (decode_debug_loclists_addresses): Add empty
+	lines.
+
+2020-06-23  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/loc.c (decode_debug_loc_dwo_addresses): Add empty
+	lines.
+	(dwarf2_find_location_expression): Likewise.
+	(call_site_parameter_matches): Likewise.
+	(dwarf2_compile_expr_to_ax): Likewise.
+	(disassemble_dwarf_expression): Likewise.
+	(loclist_describe_location): Likewise.
+
+2020-06-23  Pedro Alves  <palves@redhat.com>
+
+	* gdbarch-selftests.c: Don't include inferior.h, gdbthread.h or
+	progspace-and-thread.h.  Include scoped-mock-context.h instead.
+	(register_to_value_test): Use scoped_mock_context.
+	* regcache.c: Include "scoped-mock-context.h".
+	(cooked_read_test): Don't error out if a target is already pushed.
+	Use scoped_mock_context.  Adjust.
+	* scoped-mock-context.h: New file.
 
-2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* symtab.c (search_symbols): Don't include MODULE_DOMAIN symbols
-	when searching for types.
+	* ada-lang.c (ada_language_data): Delete la_is_string_type_p
+	initializer.
+	(ada_language::is_string_type_p): New member function.
+	* c-lang.c (c_language_data): Delete la_is_string_type_p
+	initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_is_string_type_p): Delete function, implementation
+	moved to f_language::is_string_type_p.
+	(f_language_data): Delete la_is_string_type_p initializer.
+	(f_language::is_string_type_p): New member function,
+	implementation from f_is_string_type_p.
+	* go-lang.c (go_is_string_type_p): Delete function, implementation
+	moved to go_language::is_string_type_p.
+	(go_language_data): Delete la_is_string_type_p initializer.
+	(go_language::is_string_type_p): New member function,
+	implementation from go_is_string_type_p.
+	* language.c (language_defn::is_string_type_p): Define new member
+	function.
+	(default_is_string_type_p): Make static, add comment copied from
+	header file.
+	(unknown_language_data): Delete la_is_string_type_p initializer.
+	(unknown_language::is_string_type_p): New member function.
+	(auto_language_data): Delete la_is_string_type_p initializer.
+	(auto_language::is_string_type_p): New member function.
+	* language.h (language_data): Delete la_is_string_type_p field.
+	(language_defn::is_string_type_p): Declare new function.
+	(default_is_string_type_p): Delete desclaration, move comment to
+	definition.
+	* m2-lang.c (m2_is_string_type_p): Delete function, implementation
+	moved to m2_language::is_string_type_p.
+	(m2_language_data): Delete la_is_string_type_p initializer.
+	(m2_language::is_string_type_p): New member function,
+	implementation from m2_is_string_type_p.
+	* objc-lang.c (objc_language_data): Delete la_is_string_type_p
+	initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_is_string_type_p): Delete function,
+	implementation moved to pascal_language::is_string_type_p.
+	(pascal_language_data): Delete la_is_string_type_p initializer.
+	(pascal_language::is_string_type_p): New member function,
+	implementation from pascal_is_string_type_p.
+	* rust-lang.c (rust_is_string_type_p): Delete function,
+	implementation moved to rust_language::is_string_type_p.
+	(rust_language_data): Delete la_is_string_type_p initializer.
+	(rust_language::is_string_type_p): New member function,
+	implementation from rust_is_string_type_p.
+	* valprint.c (val_print_scalar_or_string_type_p): Update call to
+	is_string_type_p.
 
-2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* f-lang.c (f_language_defn): Use f_print_typedef.
-	* f-lang.h (f_print_typedef): Declare.
-	* f-typeprint.c (f_print_typedef): Define.
+	* ada-lang.c (ada_language_data): Delete la_print_typedef
+	initializer.
+	(ada_language::print_typedef): New member function.
+	* c-lang.c (c_language_data): Delete la_print_typedef initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_language_data): Likewise.
+	(f_language::print_typedef): New member function.
+	* go-lang.c (go_language_data): Delete la_print_typedef
+	initializer.
+	* language.c (language_defn::print_typedef): Define member
+	function.
+	(unknown_language_data): Delete la_print_typedef initializer.
+	(unknown_language::print_typedef): New member function.
+	(auto_language_data): Delete la_print_typedef initializer.
+	(auto_language::print_typedef): New member function.
+	* language.h (language_data): Delete la_print_typedef field.
+	(language_defn::print_typedef): Declare new member function.
+	(LA_PRINT_TYPEDEF): Update call to print_typedef.
+	(default_print_typedef): Delete declaration.
+	* m2-lang.c (m2_language_data): Delete la_print_typedef
+	initializer.
+	(m2_language::print_typedef): New member function.
+	* objc-lang.c (objc_language_data): Delete la_print_typedef
+	initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	(pascal_language::print_typedef): New member function.
+	* rust-lang.c (rust_print_typedef): Delete function,
+	implementation moved to rust_language::print_typedef.
+	(rust_language): Delete la_print_typedef initializer.
+	(rust_language::print_typedef): New member function,
+	implementation from rust_print_typedef.
+	* typeprint.c (default_print_typedef): Delete.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Delete la_printstr initializer.
+	(ada_language::printstr): New member function.
+	* c-lang.c (c_language_data): Delete la_printstr initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_printstr): Rename to f_language::printstr.
+	(f_language_data): Delete la_printstr initializer.
+	(f_language::printstr): New member function, implementation from
+	f_printstr.
+	* go-lang.c (go_language_data): Delete la_printstr initializer.
+	* language.c (language_defn::printstr): Define new member
+	function.
+	(unk_lang_printstr): Delete.
+	(unknown_language_data): Delete la_printstr initializer.
+	(unknown_language::printstr): New member function.
+	(auto_language_data): Delete la_printstr initializer.
+	(auto_language::printstr): New member function.
+	* language.h (language_data): Delete la_printstr field.
+	(language_defn::printstr): Declare new member function.
+	(LA_PRINT_STRING): Update call to printstr.
+	* m2-lang.c (m2_printstr): Rename to m2_language::printstr.
+	(m2_language_data): Delete la_printstr initializer.
+	(m2_language::printstr): New member function, implementation from
+	m2_printstr.
+	* objc-lang.c (objc_language_data): Delete la_printstr
+	initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_printstr): Rename to pascal_language::printstr.
+	(pascal_language_data): Delete la_printstr initializer.
+	(pascal_language::printstr): New member function, implementation
+	from pascal_printstr.
+	* p-lang.h (pascal_printstr): Delete declaration.
+	* rust-lang.c (rust_printstr): Update header comment.
+	(rust_language_data): Delete la_printstr initializer.
+	(rust_language::printstr): New member function.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Delete la_printchar initializer.
+	(ada_language::printchar): New member function.
+	* c-lang.c (c_language_data): Delete la_printchar initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_printchar): Rename to f_language::printchar.
+	(f_language_data): Delete la_printchar initializer.
+	(f_language::printchar): New member function, implementation from
+	f_printchar.
+	* go-lang.c (go_language_data): Delete la_printchar initializer.
+	* language.c (unk_lang_printchar): Delete.
+	(language_defn::printchar): Define new member function.
+	(unknown_language_data): Delete la_printchar initializer.
+	(unknown_language::printchar): New member function.
+	(auto_language_data): Delete la_printchar initializer.
+	(auto_language::printchar): New member function.
+	* language.h (language_data): Delete la_printchar field.
+	(language_defn::printchar): Declare new member function.
+	(LA_PRINT_CHAR): Update call to printchar.
+	* m2-lang.c (m2_language_data): Delete la_printchar initializer.
+	(m2_language::printchar): New member function.
+	* objc-lang.c (objc_language_data): Delete la_printchar
+	initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Delete la_printchar
+	initializer.
+	(pascal_language::printchar): New member function.
+	* rust-lang.c (rust_printchar): Rename to
+	rust_language::printchar.
+	(rust_language_data): Delete la_printchar initializer.
+	(rust_language::printchar): New member function, implementation
+	from rust_printchar.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (emit_char): Renamed to ada_language::emitchar.
+	(ada_language_data): Delete la_emitchar initializer.
+	(ada_language::emitchar): New member function, implementation from
+	emit_char.
+	* c-lang.c (c_language_data): Delete la_emitchar initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_emit_char): Rename to f_language::emitchar.
+	(f_language_data): Delete la_emitchar initializer.
+	(f_language::emitchar): New member function, implementation from
+	f_emit_char.
+	* go-lang.c (go_language_data): Delete la_emitchar initializer.
+	* language.c (unk_lang_emit_char): Delete.
+	(language_defn::emitchar): New member function definition.
+	(unknown_language_data): Delete la_emitchar initializer.
+	(unknown_language::emitchar): New member function.
+	(auto_language_data): Delete la_emitchar initializer.
+	(auto_language::emitchar): New member function.
+	* language.h (language_data): Delete la_emitchar field.
+	(language_defn::emitchar): New member field declaration.
+	(LA_EMIT_CHAR): Update call to emitchar.
+	* m2-lang.c (m2_emit_char): Rename to m2_language::emitchar.
+	(m2_language_data): Delete la_emitchar initializer.
+	(m2_language::emitchar): New member function, implementation from
+	m2_emit_char.
+	* objc-lang.c (objc_language_data): Delete la_emitchar
+	initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_emit_char): Rename to pascal_language::emitchar.
+	(pascal_language_data): Delete la_emitchar initializer.
+	(pascal_language::emitchar): New member function, implementation
+	from pascal_emit_char.
+	* rust-lang.c (rust_emitchar): Rename to rust_language::emitchar.
+	(rust_language_data): Delete la_emitchar initializer.
+	(rust_language::emitchar): New member function, implementation
+	from rust_emitchar.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (resolve): Rename to ada_language::post_parser.
+	(ada_language_data): Delete la_post_parser initializer.
+	(ada_language::post_parser): New member function.
+	* c-lang.c (c_language_data): Delete la_post_parser initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_language_data): Likewise.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_post_parser field.
+	(language_defn::post_parser): New member function.
+	* m2-lang.c (m2_language_data): Delete la_post_parser initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* parse.c (parse_exp_in_context): Update call to post_parser.
+	(null_post_parser): Delete definition.
+	* parser-defs.h (null_post_parser): Delete declaration.
+	* rust-lang.c (rust_language_data): Delete la_post_parser
+	initializer.
 
-2019-08-27  Christian Biesinger  <cbiesinger@google.com>
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* nat/linux-namespaces.c (mnsh_main): Initialize fd (to -1).
+	* ada-lang.c (parse): Rename to ada_language::parser.
+	(ada_language_data): Delete la_parser initializer.
+	(ada_language::parser): New member function, implementation from
+	parse.
+	* c-lang.c (c_language_data): Delete la_parser initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	(d_language::parser): New member function.
+	* f-lang.c (f_language_data): Delete la_parser initializer.
+	(f_language::parser): New member function.
+	* go-lang.c (go_language_data): Delete la_parser initializer.
+	(go_language::parser): New member function.
+	* language.c (unk_lang_parser): Delete.
+	(language_defn::parser): Define new member function.
+	(unknown_language_data): Delete la_parser initializer.
+	(unknown_language::parser): New member function.
+	(auto_language_data): Delete la_parser initializer.
+	(auto_language::parser): New member function.
+	* language.h (language_data): Delete la_parser field.
+	(language_defn::parser): Declare new member function.
+	* m2-lang.c (m2_language_data): Delete la_parser initializer.
+	(m2_language::parser): New member function.
+	* objc-lang.c (objc_language_data): Delete la_parser initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	(pascal_language::parser): New member function.
+	* parse.c (parse_exp_in_context): Update call to parser.
+	* rust-lang.c (rust_language_data): Delete la_parser initializer.
+	(rust_language::parser): New member function.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* top.c (print_gdb_configuration): Print --with-python-libdir
+	configuration value.
+
+2020-06-22  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Mention change to the alias command.
+
+2020-06-22  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-cmds.c (lookup_cmd_for_default_args)
+	(alias_command_completer)
+	(make_alias_options_def_group): New functions.
+	(alias_opts, alias_option_defs): New struct and array.
+	(alias_usage_error): Update usage.
+	(alias_command): Handles optional DEFAULT-ARGS... arguments.
+	Use option framework.
+	(_initialize_cli_cmds): Update alias command help.
+	Update aliases command help.
+	(show_user):
+	Add NULL for new default_args lookup_cmd argument.
+	(valid_command_p): Rename to validate_aliased_command.
+	Add NULL for new default_args lookup_cmd argument.  Verify that the
+	aliased_command has no default args.
+	* cli/cli-decode.c (help_cmd): Show aliases definitions.
+	(lookup_cmd_1, lookup_cmd): New argument default_args.
+	(add_alias_cmd):
+	Add NULL for new default_args lookup_cmd argument.
+	(print_help_for_command): Show default args under the layout
+	 alias some_alias = some_aliased_cmd some_alias_default_arg.
+	* cli/cli-decode.h (struct cmd_list_element): New member default_args.
+	xfree default_args in destructor.
+	* cli/cli-script.c (process_next_line, do_define_command):
+	Add NULL for new default_args lookup_cmd argument.
+	* command.h: Declare new default_args argument in lookup_cmd
+	and lookup_cmd_1.
+	* completer.c (complete_line_internal_1):
+	Add NULL for new default_args lookup_cmd or lookup_cmd_1 argument.
+	* guile/scm-cmd.c (gdbscm_parse_command_name): Likewise.
+	* guile/scm-param.c (add_setshow_generic, pascm_parameter_defined_p):
+	Likewise.
+	* infcmd.c (_initialize_infcmd): Likewise.
+	* python/py-auto-load.c (gdbpy_initialize_auto_load): Likewise.
+	* python/py-cmd.c (gdbpy_parse_command_name): Likewise.
+	* python/py-param.c (add_setshow_generic): Likewise.
+	* remote.c (_initialize_remote): Likewise.
+	* top.c (execute_command): Prepend default_args if command has some.
+	(set_verbose):
+	Add NULL for new default_args lookup_cmd or lookup_cmd_1 argument.
+	* tracepoint.c (validate_actionline, encode_actions_1):
+	Add NULL for new default_args lookup_cmd or lookup_cmd_1 argument.
+
+2020-06-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* jit.c (jit_read_descriptor): Use bool as the return type.
+	(jit_breakpoint_re_set_internal): Use bool as the return type.
+	Invert the return value logic; return true if the jit breakpoint
+	has been successfully initialized.
+	(jit_inferior_init): Update the call to
+	jit_breakpoint_re_set_internal.
+
+2020-06-22  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/25939
+	* procfs.c (procfs_target::wait): Don't reference inferior_ptid.
+	Use the current inferior instead.  Don't return
+	TARGET_WAITKIND_SPURIOUS/inferior_ptid -- instead continue and
+	wait again.
+	* sol-thread.c (sol_thread_target::wait): Don't reference
+	inferior_ptid.
+	(ps_lgetregs, ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs)
+	(sol_update_thread_list_callback): Use the current inferior's pid
+	instead of inferior_ptid.
+
+2020-06-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* procfs.c: Cleanup many comments.
+
+	(READ_WATCHFLAG, WRITE_WATCHFLAG, EXEC_WATCHFLAG)
+	(AFTER_WATCHFLAG): Replace by value.
+
+	(MAIN_PROC_NAME_FORMAT): Inline ...
+	(create_procinfo): ... here.
+
+	(procfs_debug_inferior): Remove SYS_exec handling.
+	(syscall_is_exec): Likewise.
+	(procfs_set_exec_trap): Likewise.
+
+	(syscall_is_lwp_exit): Inline in callers.
+	(syscall_is_exit): Likewise.
+	(syscall_is_exec): Likewise.
+	(syscall_is_lwp_create): Likewise.
+
+	(invalidate_cache): Remove #if 0 code.
+
+	(make_signal_thread_runnable):  Remove.
+	(procfs_target::resume): Remove #if 0 code.
+
+2020-06-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	PR gdb/25939
+	* procfs.c (procfs_target::procfs_init_inferior): Move push_target
+	call ...
+	(procfs_target::create_inferior): ... here.
+
+2020-06-21  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* exec.c (validate_exec_file): Ensure the build-id is up to
+	date by calling reopen_exec_file (that checks file timestamp
+	to decide to re-read the file).
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/25412
+	* gdbthread.h (delete_thread, delete_thread_silent)
+	(find_thread_ptid): Update comments.
+	* thread.c (current_thread_): New global.
+	(is_current_thread): Move higher, and reimplement.
+	(inferior_thread): Reimplement.
+	(set_thread_exited): Use bool.  Add assertions.
+	(add_thread_silent): Simplify thread-reuse handling by always
+	calling delete_thread.
+	(delete_thread): Remove intro comment.
+	(find_thread_ptid): Skip exited threads.
+	(switch_to_thread_no_regs): Write to current_thread_.
+	(switch_to_no_thread): Check CURRENT_THREAD_ instead of
+	INFERIOR_PTID.  Clear current_thread_.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* aix-thread.c (pd_update): Use switch_to_thread.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* ravenscar-thread.c (ravenscar_thread_target): Update.
+	(ravenscar_thread_target::update_inferior_ptid): Rename to ...
+	(ravenscar_thread_target::add_active_thread): ... this.  Don't
+	set m_base_ptid here.  Update to avoid referencing inferior_ptid.
+	(ravenscar_thread_target::wait): Don't write to inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* nat/windows-nat.c (current_windows_thread): Remove.
+	* nat/windows-nat.h (current_windows_thread): Remove.
+	* windows-nat.c (windows_nat_target::stopped_by_sw_breakpoint):
+	Adjust.
+	(display_selectors): Adjust to fetch the current
+	windows_thread_info based on inferior_ptid.
+	(fake_create_process): No longer write to current_windows_thread.
+	(windows_nat_target::get_windows_debug_event):
+	Don't set inferior_ptid or current_windows_thread.
+	(windows_nat_target::wait): Adjust to not rely on
+	current_windows_thread.
+	(do_initial_windows_stuff): Now a method of windows_nat_target.
+	Switch to the last_ptid thread.
+	(windows_nat_target::attach): Adjust.
+	(windows_nat_target::detach): Use switch_to_no_thread instead of
+	writing to inferior_ptid directly.
+	(windows_nat_target::create_inferior): Adjust.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* windows-nat.c (do_initial_windows_stuff): No longer set inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* go32-nat.c (go32_nat_target::create_inferior): Switch to thread
+	after creating it, instead of writing to inferior_ptid.  Don't
+	write to inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* fork-child.c (postfork_hook): Don't write to inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* bsd-kvm.c (bsd_kvm_target_open): Switch to thread after adding
+	it, instead of writing to inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* btrace.c (btrace_fetch): Use switch_to_thread instead of writing
+	to inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* bsd-kvm.c (bsd_kvm_target::close): Use switch_to_no_thread
+	instead of writing to inferior_ptid directly.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* corelow.c (core_target::close): Use switch_to_no_thread instead
+	of writing to inferior_ptid directly.
+	(add_to_thread_list, core_target_open): Use switch_to_thread
+	instead of writing to inferior_ptid directly.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* darwin-nat.c (darwin_nat_target::decode_message): Don't write to
+	inferior_ptid.
+	(darwin_nat_target::stop_inferior, darwin_nat_target::kill): Avoid
+	inferior_ptid.
+	(darwin_attach_pid): Use switch_to_no_thread instead of writing to
+	inferior_ptid directly.
+	(darwin_nat_target::init_thread_list): Switch to thread, instead
+	of writing to inferior_ptid.
+	(darwin_nat_target::attach): Don't write to inferior_ptid.
+	(darwin_nat_target::get_ada_task_ptid): Avoid inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* gnu-nat.c (gnu_nat_target::create_inferior): Switch to the added
+	thread.
+	(gnu_nat_target::attach): Don't write to inferior_ptid directly.
+	Instead use switch_to_thread.
+	(gnu_nat_target::detach): Use switch_to_no_thread
+	instead of writing to inferior_ptid directly.  Used passed-in
+	inferior instead of looking up the inferior by pid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* go32-nat.c (go32_nat_target::create_inferior): Don't write to
+	inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* nto-procfs.c (nto_procfs_target::update_thread_list): Avoid
+	inferior_ptid.
+	(nto_procfs_target::attach): Avoid inferior_ptid.  Switch to
+	thread.
+	(nto_procfs_target::detach): Avoid referencing
+	inferior_ptid.  Use switch_to_no_thread instead of writing to
+	inferior_ptid directly.
+	(nto_procfs_target::mourn_inferior): Use switch_to_no_thread
+	instead of writing to inferior_ptid directly.
+	(nto_procfs_target::create_inferior): Avoid inferior_ptid.  Switch
+	to thread.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* remote-sim.c (gdbsim_target::create_inferior): Switch to thread
+	after creating it, instead of writing to inferior_ptid.
+	(gdbsim_target_open): Use switch_to_no_thread instead of writing
+	to inferior_ptid directly.
+	(gdbsim_target::wait): Don't write to inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* remote.c (remote_target::remote_notice_new_inferior): Use
+	switch_to_thread instead of writing to inferior_ptid directly.
+	(remote_target::add_current_inferior_and_thread): Use
+	switch_to_no_thread instead of writing to inferior_ptid directly.
+	(extended_remote_target::attach): Use switch_to_inferior_no_thread
+	and switch_to_thread instead of using set_current_inferior or
+	writing to inferior_ptid directly.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* tracectf.c (ctf_target_open): Switch to added thread instead of
+	writing to inferior_ptid directly.
+	(ctf_target::close): Use switch_to_no_thread instead of writing to
+	inferior_ptid directly.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* tracefile-tfile.c (tfile_target_open): Don't write to
+	inferior_ptid directly, instead switch to added thread.
+	(tfile_target::close): Use switch_to_no_thread instead of writing
+	to inferior_ptid directly.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* procfs.c (procfs_target::attach): Don't write to inferior_ptid.
+	(procfs_target::detach): Use switch_to_no_thread
+	instead of writing to inferior_ptid directly.
+	(do_attach): Change return type to void.  Switch to the added
+	thread.
+	(procfs_target::create_inferior): Switch to the added thread.
+	(procfs_do_thread_registers): Don't write to inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* infrun.c (generic_mourn_inferior): Use switch_to_thread instead
+	of writing to inferior_ptid.
+	(scoped_restore_exited_inferior): Delete.
+	(handle_vfork_child_exec_or_exit): Simplify using
+	scoped_restore_current_pspace_and_thread.  Use switch_to_thread
+	instead of writing to inferior_ptid.
+	(THREAD_STOPPED_BY): Delete.
+	(thread_stopped_by_watchpoint, thread_stopped_by_sw_breakpoint)
+	(thread_stopped_by_hw_breakpoint): Delete.
+	(save_waitstatus): Use
+	scoped_restore_current_thread+switch_to_thread, and call
+	target_stopped_by_watchpoint instead of
+	thread_stopped_by_watchpoint, target_stopped_by_sw_breakpoint
+	instead of thread_stopped_by_sw_breakpoint, and
+	target_stopped_by_hw_breakpoint instead of
+	thread_stopped_by_hw_breakpoint.
+	(handle_inferior_event)
+	<TARGET_WAITKIND_EXITED/TARGET_WAITKIND_SIGNALLED>: Don't write to
+	inferior_ptid directly, nor
+	set_current_inferior/set_current_program_space.  Use
+	switch_to_thread / switch_to_inferior_no_thread instead.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* target.c (generic_mourn_inferior): Use switch_to_no_thread
+	instead of writing to inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* inf-ptrace.c (inf_ptrace_target::create_inferior): Switch to the
+	added thread.
+	(inf_ptrace_target::attach): Don't write to inferior_ptid.  Switch
+	to the added thread.
+	(inf_ptrace_target::detach_success): Use switch_to_no_thread
+	instead of writing to inferior_ptid.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* gdbarch-selftests.c: Include "progspace-and-thread.h".
+	(register_to_value_test): Mock a program_space too.  Heap-allocate
+	the address space.  Don't write to inferior_ptid.  Use
+	switch_to_thread instead.
 
-2019-08-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-06-18  Pedro Alves  <palves@redhat.com>
 
-	* cli/cli-utils.c (info_print_options_defs): Delete.
-	(make_info_print_options_def_group): Delete.
-	(extract_info_print_options): Delete.
-	(info_print_command_completer): Delete.
-	(info_print_args_help): Add extra parameter, and optionally
-	include text about -n flag.
-	* cli/cli-utils.h (struct info_print_options): Delete.
-	(extract_info_print_options): Delete declaration.
-	(info_print_command_completer): Delete declaration.
-	(info_print_args_help): Add extra parameter, extend header
-	comment.
-	* python/python.c (gdbpy_rbreak): Pass additional parameter to
-	search_symbols.
-	* stack.c (struct info_print_options): New type.
-	(info_print_options_defs): New file scoped variable.
-	(make_info_print_options_def_group): New static function.
-	(info_print_command_completer): New static function.
-	(info_locals_command): Update to use new local functions.
-	(info_args_command): Likewise.
-	(_initialize_stack): Add extra parameter to calls to
-	info_print_args_help.
-	* symtab.c (search_symbols): Add extra parameter, use this to
-	possibly excluse non-debug symbols.
-	(symtab_symbol_info): Add extra parameter, which is passed on to
-	search_symbols.
-	(struct info_print_options): New type.
-	(info_print_options_defs): New file scoped variable.
-	(make_info_print_options_def_group): New static function.
-	(info_print_command_completer): New static function.
-	(info_variables_command): Update to use local functions, and pass
-	extra parameter through to symtab_symbol_info.
-	(info_functions_command): Likewise.
-	(info_types_command): Pass additional argument through to
-	symtab_symbol_info.
-	(rbreak_command): Pass extra argument to search_symbols.
-	(_initialize_symtab): Add extra arguments for calls to
-	info_print_args_help, and update help text for 'info variables',
-	'whereis', and 'info functions' commands.
-	* symtab.h (search_symbols): Add extra argument to declaration.
-	* NEWS: Mention new flags.
-
-2019-08-26  Christian Biesinger  <cbiesinger@google.com>
-
-	* symtab.c (lookup_static_symbol): Call the new function (and move
-	it down to be next to lookup_global_symbol).
-	(struct global_sym_lookup_data): Add block_enum member and rename to...
-	(struct global_or_static_sym_lookup_data): ...this.
-	(lookup_symbol_global_iterator_cb): Pass block_index instead of
-	GLOBAL_BLOCK to lookup_symbol_in_objfile and rename to...
-	(lookup_symbol_global_or_static_iterator_cb): ...this.
-	(lookup_global_or_static_symbol): New function.
-	(lookup_global_symbol): Call new function.
-
-2019-08-26  Tom de Vries  <tdevries@suse.de>
-
-	PR c++/24852
-	* break-catch-throw.c (fetch_probe_arguments): Improve error mesage
-	when pc_probe.prob == NULL.
-
-2019-08-25  Simon Marchi  <simon.marchi@efficios.com>
-
-	* dwarf2read.c (dw2_debug_names_iterator::next): Rename local
-	variable symbol_linkage to symbol_linkage_.
-
-2019-08-25  Simon Marchi  <simon.marchi@efficios.com>
-
-	* dwarf2read.c (dw2_debug_names_iterator::next): Use enum to
-	represent whether the symbol is static, dynamic, or we don't
-	know.
-
-2019-08-25  Yoshinori Sato <ysato@users.sourceforge.jp>
-
-        * gdb/rx-tdep.c (rx_register_names): New.
-        (rx_register_name): Delete.
-        (rx_psw_type): Delete.
-        (rx_fpsw_type): Delete.
-        (rx_register_type): Delete.
-        (rx_gdbarch_init): Convert target-descriptions.
-        (_initialize_rx_tdep): Add initialize_tdesc_rx.
-        * gdb/features/Makefile: Add rx.xml.
-        * gdb/features/rx.xml: New.
-        * gdb/features/rx.c: Generated.
-        * gdb/NEWS: Mention target description support.
-
-2019-08-22  Christian Biesinger  <cbiesinger@google.com>
-
-	* symtab.c (symbol_cache_lookup): Always initialize *bsc_ptr and
-	*slot_ptr.
-
-2019-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* configure.ac: Don't check for 'dlfcn.h' (moved to
-	gdbsupport/common.m4).
-	* Makefile.in (COMMON_SFILES): Move 'gdb-dlfcn.c' to
-	'gdbsupport/'.
-	(HFILES_NO_SRCDIR): Likewise, for 'gdb-dlfcn.h'.
-	* compile/compile-c-support.c: Include
-	'gdbsupport/gdb-dlfcn.h'.
-	* gdbsupport/common.m4: Check for 'dlfcn.h'.
-	* gdb-dlfcn.c: Move to...
-	* gdbsupport/gdb-dlfcn.c: ... here.
-	* gdb-dlfcn.h: Move to...
-	* gdbsupport/gdb-dlfcn.h: ... here.
-
-2019-08-23  Sandra Loosemore  <sandra@codesourcery.com>
-
-	* nios2-tdep.c (struct reg_value): Improve comments.  Make
-	the offset field signed.
-
-2019-08-22  Christian Biesinger  <cbiesinger@google.com>
-
-	* python/lib/gdb/__init__.py (_execute_file): New function.
-	* python/python.c (python_run_simple_file): Call gdb._execute_file
-	on Windows.
-
-2019-08-22  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* f-exp.y (yylex): Remove is_a_field_of_this local variable, and
-	all uses as this was never set to anything but a zero value.
-
-2019-08-21  Bogdan Harjoc  <harjoc@gmail.com>
-
-	* cli/cli-cmds.c (with_command_1): Error out if no arguments.
-
-2019-08-21  Christian Biesinger  <cbiesinger@google.com>
-
-	* tui/tui-data.h (tui_gen_win_info): Add an =default
-	move constructor, required by some GCC versions.
-
-2019-08-21  Jinke Fan  <fanjinke51@yeah.net>
-
-	* go32-nat.c (go32_sysinfo): Add hygon_p.
-
-2019-08-20  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.h (struct tui_data_window) <last_regs_line_no,
-	line_from_reg_element_no, first_reg_element_no_inline,
-	display_all_data, delete_data_content_windows,
-	erase_data_content>: Now private.
-
-2019-08-20  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.c (box_win): Change type of highlight_flag.
-	(tui_unhighlight_win, tui_highlight_win)
-	(tui_win_info::make_window): Update.
-	* tui/tui-data.h (HILITE, NO_HILITE): Remove.
-
-2019-08-20  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.h (PROC_PREFIX, LINE_PREFIX, PC_PREFIX)
-	(MIN_LINE_WIDTH, MIN_PROC_WIDTH, MAX_TARGET_WIDTH)
-	(MAX_PID_WIDTH): Move to tui-stack.c.
-	* tui/tui-stack.c (PROC_PREFIX, LINE_PREFIX, PC_PREFIX)
-	(MIN_LINE_WIDTH, MIN_PROC_WIDTH, MAX_TARGET_WIDTH)
-	(MAX_PID_WIDTH): Move from tui-data.h.
-
-2019-08-20  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.h (tui_make_window): Don't declare.
-	* tui/tui-wingeneral.c (box_win): Change type of win_info.
-	(box_win): Update.
-	(tui_gen_win_info::make_window): Rename from tui_make_window.
-	(tui_win_info::make_window): New method.
-	(tui_gen_win_info::make_visible): Update.
-	* tui/tui-source.c (tui_source_window::set_contents): Update.
-	* tui/tui-regs.c (tui_data_window::show_register_group): Update.
-	(tui_data_window::display_registers_from): Update.
-	* tui/tui-layout.c (tui_gen_win_info::resize): Update.
-	* tui/tui-data.h (struct tui_gen_win_info) <make_window>:
-	Declare.
-	<can_box>: Remove.
-	<title>: Remove.
-	(struct tui_win_info) <make_window>: Declare.
-	<can_box>: Now virtual.
-	<title>: New member.
-	* tui/tui-data.c (~tui_gen_win_info): Don't free title.
-	* tui/tui-command.c (tui_cmd_window::resize): Update.
+	* linux-tdep.c (find_signalled_thread(thread_info *,void *)):
+	Delete.
+	(find_signalled_thread()): New, factored out from
+	linux_make_corefile_notes and adjusted to handle exited threads.
+	(linux_make_corefile_notes): Adjust to use the new
+	find_signalled_thread.
 
-2019-08-20  Tom Tromey  <tom@tromey.com>
+2020-06-18  Pedro Alves  <palves@redhat.com>
 
-	* tui/tui-regs.h (struct tui_data_window) <display_regs>: Remove.
-	* tui/tui-regs.c (tui_data_window::show_registers): Update.
-	(tui_data_window::check_register_values): Update.
+	* linux-tdep.c (btrace_fetch): Save/restore current thread instead
+	of saving/restoring inferior_ptid.
 
-2019-08-20  Tom Tromey  <tom@tromey.com>
+2020-06-17  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-regs.h (struct tui_data_window): Use
-	DISABLE_COPY_AND_ASSIGN.
-	<regs_content>: Change type, removing unique_ptr.
-	<tui_data_window>: Add move constructor.
-	* tui/tui-regs.c (tui_data_window::show_registers)
-	(tui_data_window::show_register_group)
-	(tui_data_window::display_registers_from)
-	(tui_data_window::display_registers_from)
-	(tui_data_window::first_data_item_displayed)
-	(tui_data_window::delete_data_content_windows)
-	(tui_data_window::rerender, tui_data_window::refresh_window)
-	(tui_data_window::check_register_values): Update.
+	* tui/tui-win.h (tui_scroll_forward, tui_scroll_backward)
+	(tui_scroll_left, tui_scroll_right, struct tui_win_info): Don't
+	declare.
+	* tui/tui-data.h (MIN_CMD_WIN_HEIGHT): Remove.
 
-2019-08-20  Tom Tromey  <tom@tromey.com>
+2020-06-15  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-regs.h (struct tui_data_window) <show_registers,
-	show_register_group>: Declare.
-	(tui_show_register_group): Don't declare.
-	* tui/tui-regs.c (tui_data_window::show_registers): Rename from
-	tui_show_registers.
-	(tui_data_window::show_register_group): Rename from
-	tui_show_register_group.
-	(tui_data_window::check_register_values, tui_reg_command):
-	Update.
-	* tui/tui-layout.c (tui_set_layout): Update.
+	* dwarf2/read.c (dwarf2_initialize_objfile): Check for presence
+	of partial symtabs.
 
-2019-08-20  Tom Tromey  <tom@tromey.com>
+2020-06-17  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-regs.h (struct tui_data_window) <check_register_values>:
-	Declare.
-	(tui_check_register_values): Don't declare.
-	* tui/tui-regs.c (tui_data_window::check_register_values): Rename
-	from tui_check_register_values.
-	* tui/tui-hooks.c (tui_register_changed): Update.
+	* regformats/reg-arm.dat: Remove.
+	* regformats/reg-bfin.dat: Remove.
+	* regformats/reg-cris.dat: Remove.
+	* regformats/reg-crisv32.dat: Remove.
+	* regformats/reg-m32r.dat: Remove.
+	* regformats/reg-tilegx.dat: Remove.
+	* regformats/reg-tilegx32.dat: Remove.
 
-2019-08-20  Tom Tromey  <tom@tromey.com>
+2020-06-17  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-regs.c (tui_reg_layout): Move later.
-	(tui_show_registers): Don't enable TUI mode or change layout.
+	* features/Makefile (WHICH): Remove arm files.
+	* regformats/arm/arm-with-iwmmxt.dat: Remove.
+	* regformats/arm/arm-with-neon.dat: Remove.
+	* regformats/arm/arm-with-vfpv2.dat: Remove.
+	* regformats/arm/arm-with-vfpv3.dat: Remove.
 
-2019-08-20  Tom Tromey  <tom@tromey.com>
+2020-06-17  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-regs.h (struct tui_data_item_window)
-	<~tui_data_item_window>: Remove.
-	<content>: Now a unique_xmalloc_ptr.
-	* tui/tui-regs.c (tui_register_format): Return a
-	unique_xmalloc_ptr.
-	(tui_get_register): Update.
-	(~tui_data_item_window): Remove.
-	(tui_data_window::display_registers_from, tui_display_register):
-	Update.
-	* tui/tui-io.h (tui_expand_tabs): Update.
-	* tui/tui-io.c (tui_expand_tabs): Return a unique_xmalloc_ptr.
-	Remove "col" parameter.
+	* features/Makefile (XMLTOC): Remove rx.xml.
 
-2019-08-20  Tom Tromey  <tom@tromey.com>
+2020-06-17  Pedro Alves  <palves@redhat.com>
 
-	* tui/tui-regs.h (struct tui_data_item_window) <value>: Remove
-	field.
-	* tui/tui-regs.c (~tui_data_item_window): Update.
+	* gdbthread.h (thread_control_state) <trap_expected> Update
+	comments.
 
-2019-08-20  Tom Tromey  <tom@tromey.com>
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-regs.c (tui_register_format, tui_get_register): Move
-	earlier.
+	* ada-lang.c (ada_lookup_symbol_nonlocal): Rename to
+	ada_language::lookup_symbol_nonlocal.
+	(ada_language_data): Delete la_lookup_symbol_nonlocal initializer.
+	(ada_language::lookup_symbol_nonlocal): New member function,
+	implementation from ada_lookup_symbol_nonlocal.
+	* c-lang.c (c_language_data): Delete la_lookup_symbol_nonlocal
+	initializer.
+	(cplus_language_data): Delete la_lookup_symbol_nonlocal
+	initializer.
+	(cplus_language::lookup_symbol_nonlocal): New member function.
+	(asm_language_data): Delete la_lookup_symbol_nonlocal initializer.
+	(minimal_language_data) Likewise.
+	* cp-namespace.c (cp_lookup_nested_symbol): Update comment.
+	* d-lang.c (d_language_data): Delete la_lookup_symbol_nonlocal
+	initializer.
+	(d_language::lookup_symbol_nonlocal): New member function.
+	* f-lang.c (f_language_data): Delete la_lookup_symbol_nonlocal
+	initializer.
+	(f_language::lookup_symbol_nonlocal): New member function.
+	* go-lang.c (go_language_data): Delete la_lookup_symbol_nonlocal
+	initializer.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_lookup_symbol_nonlocal
+	field.
+	(language_defn::lookup_symbol_nonlocal): New member function.
+	* m2-lang.c (m2_language_data): Delete la_lookup_symbol_nonlocal
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_lookup_symbol_nonlocal): Rename to
+	rust_language::lookup_symbol_nonlocal.
+	(rust_language_data): Delete la_lookup_symbol_nonlocal
+	initializer.
+	(rust_language::lookup_symbol_nonlocal): New member function,
+	implementation from rust_lookup_symbol_nonlocal.
+	* symtab.c (lookup_symbol_aux): Update call to
+	lookup_symbol_nonlocal.
+	(basic_lookup_symbol_nonlocal): Rename to...
+	(language_defn::lookup_symbol_nonlocal): ...this, and update
+	header comment.  Remove language_defn parameter, and replace with
+	uses of `this'.
+	* symtab.h (basic_lookup_symbol_nonlocal): Delete declaration.
 
-2019-08-20  Tom Tromey  <tom@tromey.com>
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-regs.c (tui_reg_command): Remove NULL check.
+	* ada-lang.c (ada_language_data): Delete la_value_print_inner
+	initializer.
+	(ada_language::value_print_inner): New member function.
+	* c-lang.c (c_language_data): Delete la_value_print_inner
+	initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	(d_language::value_print_inner): New member function.
+	* f-lang.c (f_language_data): Delete la_value_print_inner
+	initializer.
+	(f_language::value_print_inner): New member function.
+	* f-lang.h (f_value_print_innner): Rename to...
+	(f_value_print_inner): ...this (note spelling of 'inner').
+	* f-valprint.c (f_value_print_innner): Rename to...
+	(f_value_print_inner): ...this (note spelling of 'inner').
+	* go-lang.c (go_language_data): Delete la_value_print_inner
+	initializer.
+	(go_language::value_print_inner): New member function.
+	* language.c (language_defn::value_print_inner): Define new member
+	function.
+	(unk_lang_value_print_inner): Delete.
+	(unknown_language_data): Delete la_value_print_inner initializer.
+	(unknown_language::value_print_inner): New member function.
+	(auto_language_data): Delete la_value_print_inner initializer.
+	(auto_language::value_print_inner): New member function.
+	* language.h (language_data): Delete la_value_print_inner field.
+	(language_defn::value_print_inner): Delcare new member function.
+	* m2-lang.c (m2_language_data): Delete la_value_print_inner
+	initializer.
+	(m2_language::value_print_inner): New member function.
+	* objc-lang.c (objc_language_data): Delete la_value_print_inner
+	initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	(pascal_language::value_print_inner): New member function.
+	* rust-lang.c (rust_language_data): Delete la_value_print_inner
+	initializer.
+	(rust_language::value_print_inner): New member function.
+	* valprint.c (do_val_print): Update call to value_print_inner.
 
-2019-08-20  Tom Tromey  <tom@tromey.com>
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-source.h (struct tui_source_window): Update.
-	* tui/tui-regs.c (tui_show_registers): Update.
-	* tui/tui-disasm.h (struct tui_disasm_window): Update.
-	* tui/tui-data.h (NO_SRC_STRING, NO_DISASSEM_STRING)
-	(NO_REGS_STRING): Remove defines.
+	* ada-lang.c (ada_language_data): Delete la_value_print
+	initializer.
+	(ada_language::value_print): New member function.
+	* c-lang.c (c_language_data): Delete la_value_print initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_language_data): Likewise.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (unk_lang_value_print): Delete.
+	(language_defn::value_print): Define new member function.
+	(unknown_language_data): Delete la_value_print initializer.
+	(unknown_language::value_print): New member function.
+	(auto_language_data): Delete la_value_print initializer.
+	(auto_language::value_print): New member function.
+	* language.h (language_data): Delete la_value_print field.
+	(language_defn::value_print): Declare new member function.
+	(LA_VALUE_PRINT): Update call to value_print.
+	* m2-lang.c (m2_language_data): Delete la_value_print initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	(pascal_language::value_print): New member function.
+	* rust-lang.c (rust_language_data): Delete la_value_print
+	initializer.
 
-2019-08-20  Conrad Meyer  <cem@FreeBSD.org>
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* remote.c (remote_target::remote_btrace_maybe_reopen): Avoid
-	unnecessary thread walk if remote doesn't support the packet.
+	* ada-lang.c (ada_watch_location_expression): Rename to
+	ada_language::watch_location_expression.
+	(ada_language_data): Delete la_watch_location_expression
+	initializer.
+	(ada_language::watch_location_expression): New member function,
+	implementation from ada_watch_location_expression.
+	* breakpoint.c (watch_command_1): Update call to
+	watch_location_expression.
+	* c-lang.c (c_watch_location_expression): Rename to
+	language_defn::watch_location_expression.
+	(c_language_data): Delete la_watch_location_expression
+	initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* c-lang.h (c_watch_location_expression): Delete declaration.
+	* d-lang.c (d_language_data): Delete la_watch_location_expression
+	initializer.
+	* f-lang.c (f_language_data): Likewise.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (language_defn::watch_location_expression): Member
+	function implementation from c_watch_location_expression.
+	(unknown_language_data): Delete la_watch_location_expression
+	initializer.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_watch_location_expression
+	field.
+	(language_defn::watch_location_expression): Declare new member
+	function.
+	* m2-lang.c (m2_language_data): Delete
+	la_watch_location_expression initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_watch_location_expression): Rename to
+	rust_language::watch_location_expression.
+	(rust_language_data): Delete la_watch_location_expression
+	initializer.
+	(rust_language::watch_location_expression): New member function,
+	implementation from rust_watch_location_expression.
 
-2019-08-19  Tom Tromey  <tromey@adacore.com>
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* python/py-value.c (value_has_field): Fix indentation.
+	* ada-lang.c (ada_collect_symbol_completion_matches): Rename to
+	ada_language::collect_symbol_completion_matches.
+	(ada_language_data): Delete la_collect_symbol_completion_matches
+	initializer.
+	(ada_language::collect_symbol_completion_matches): New member
+	function, implementation from
+	ada_collect_symbol_completion_matches.
+	* c-lang.c (c_language_data): Delete
+	la_collect_symbol_completion_matches initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_collect_symbol_completion_matches): Rename to
+	f_language::collect_symbol_completion_matches.
+	(f_language_data): Delete la_collect_symbol_completion_matches
+	initializer.
+	(f_language::collect_symbol_completion_matches) New member
+	function, implementation from f_collect_symbol_completion_matches.
+	* go-lang.c (go_language_data): Delete
+	la_collect_symbol_completion_matches initializer.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete
+	la_collect_symbol_completion_matches field.
+	(language_defn::collect_symbol_completion_matches): New member
+	function.
+	* m2-lang.c (m2_language_data): Delete
+	la_collect_symbol_completion_matches initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+	* symtab.c (default_collect_symbol_completion_matches): Delete.
+	(collect_symbol_completion_matches): Update call to
+	collect_symbol_completion_matches.
+	(collect_symbol_completion_matches_type): Likewise.
+	* symtab.h (default_collect_symbol_completion_matches): Delete
+	declaration.
 
-2019-08-19  Tom Tromey  <tromey@adacore.com>
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* printcmd.c (do_one_display, info_display_command): Update.
-	* block.h (contained_in): Return bool.  Add allow_nested
-	parameter.
-	* block.c (contained_in): Return bool.  Add allow_nested
-	parameter.
+	* ada-lang.c (ada_get_gdb_completer_word_break_characters): Delete.
+	(ada_language_data): Delete la_word_break_characters initializer.
+	(ada_language::word_break_characters): New member function.
+	* c-lang.c (c_language_data): Delete la_word_break_characters
+	initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* completer.c: Update global comment.
+	(advance_to_expression_complete_word_point): Update call to
+	word_break_characters.
+	(complete_files_symbols): Likewise.
+	(complete_line_internal_1): Likewise.
+	(default_completer_handle_brkchars): Likewise.
+	(skip_quoted_chars): Likewise.
+	* d-lang.c (d_language_data): Delete la_word_break_characters
+	initializer.
+	* f-lang.c (f_word_break_characters): Delete.
+	(f_language_data): Delete la_word_break_characters initializer.
+	(f_language::word_break_characters): New member function.
+	* go-lang.c (go_language_data): Delete la_word_break_characters
+	initializer.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (default_word_break_characters): Move declaration to
+	earlier in the file.
+	(language_data): Delete la_word_break_characters field.
+	(language_defn::word_break_characters): New member function.
+	* m2-lang.c (m2_language_data): Delete la_word_break_characters
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
 
-2019-08-19  Tom Tromey  <tom@tromey.com>
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* configure: Rebuild.
-	* configure.ac: Disallow the combination of -static-libstdc++ and
-	source highlight.
-	* source-cache.c (get_language_name): Handle rust.
-	(source_cache::get_source_lines): Ignore highlighting exceptions.
-
-2019-08-16  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui.h (enum tui_win_type) <EXEC_INFO_WIN>: Remove.
-	* tui/tui-winsource.h (struct tui_exec_info_window): Remove.
-	(struct tui_source_window_base) <make_visible, refresh_window,
-	resize>: Remove methods.
-	<execution_info>: Remove field.
-	* tui/tui-winsource.c (tui_source_window_base::do_erase_source_content)
-	(tui_show_source_line, tui_source_window_base)
-	(~tui_source_window_base): Update.
-	(tui_source_window_base::resize)
-	(tui_source_window_base::make_visible)
-	(tui_source_window_base::refresh_window): Remove.
-	(tui_source_window_base::update_exec_info): Update.
-	* tui/tui-source.c (tui_source_window::set_contents): Update.
-	* tui/tui-disasm.c (tui_disasm_window::set_contents): Update.
+	* ada-lang.c (ada_get_symbol_name_matcher): Update header comment.
+	(ada_language_data): Delete la_get_symbol_name_matcher
+	initializer.
+	(language_defn::get_symbol_name_matcher_inner): New member
+	function.
+	* c-lang.c (c_language_data): Delete la_get_symbol_name_matcher
+	initializer.
+	(cplus_language_data): Likewise.
+	(cplus_language::get_symbol_name_matcher_inner): New member
+	function.
+	(asm_language_data): Delete la_get_symbol_name_matcher initializer.
+	(minimal_language_data): Likewise.
+	* cp-support.h (cp_get_symbol_name_matcher): Update header comment.
+	* d-lang.c (d_language_data): Delete la_get_symbol_name_matcher
+	initializer.
+	* dictionary.c (iter_match_first_hashed): Update call to
+	get_symbol_name_matcher.
+	(iter_match_next_hashed): Likewise.
+	(iter_match_next_linear): Likewise.
+	* dwarf2/read.c (dw2_expand_symtabs_matching_symbol): Likewise.
+	* f-lang.c (f_language_data): Delete la_get_symbol_name_matcher
+	initializer.
+	(f_language::get_symbol_name_matcher_inner): New member function.
+	* go-lang.c (go_language_data): Delete la_get_symbol_name_matcher
+	initializer.
+	* language.c (default_symbol_name_matcher): Update header comment,
+	make static.
+	(language_defn::get_symbol_name_matcher): New definition.
+	(language_defn::get_symbol_name_matcher_inner): Likewise.
+	(get_symbol_name_matcher): Delete.
+	(unknown_language_data): Delete la_get_symbol_name_matcher
+	initializer.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_get_symbol_name_matcher
+	field.
+	(language_defn::get_symbol_name_matcher): New member function.
+	(language_defn::get_symbol_name_matcher_inner): Likewise.
+	(default_symbol_name_matcher): Delete declaration.
+	* linespec.c (find_methods): Update call to
+	get_symbol_name_matcher.
+	* m2-lang.c (m2_language_data): Delete la_get_symbol_name_matcher
+	initializer.
+	* minsyms.c (lookup_minimal_symbol): Update call to
+	get_symbol_name_matcher.
+	(iterate_over_minimal_symbols): Likewise.
+	* objc-lang.c (objc_language_data): Delete
+	la_get_symbol_name_matcher initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* psymtab.c (psymbol_name_matches): Update call to
+	get_symbol_name_matcher.
+	* rust-lang.c (rust_language_data): Delete
+	la_get_symbol_name_matcher initializer.
+	* symtab.c (symbol_matches_search_name): Update call to
+	get_symbol_name_matcher.
+	(compare_symbol_name): Likewise.
 
-2019-08-16  Tom Tromey  <tom@tromey.com>
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-hooks.c (tui_remove_hooks): Don't set
-	deprecated_query_hook.
+	* ada-lang.c (ada_language_data): Delete la_compute_program
+	initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(c_language::compute_program): New member function.
+	(cplus_language_data): Delete la_compute_program initializer.
+	(cplus_language::compute_program): New member function.
+	(asm_language_data): Delete la_compute_program initializer.
+	(minimal_language_data): Likewise.
+	* c-lang.h (c_compute_program): Update comment.
+	(cplus_compute_program): Likewise.
+	* compile/compile-c-support.c (c_compute_program): Likewise.
+	(cplus_compute_program): Likewise.
+	* compile/compile.c (compile_to_object): Update call to
+	la_compute_program.
+	* d-lang.c (d_language_data): Delete la_compute_program
+	initializer.
+	* f-lang.c (f_language_data): Likewise.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_compute_program field.
+	(language_defn::compute_program): New member function.
+	* m2-lang.c (m2_language_data): Delete la_compute_program
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data) Delete
+	la_class_name_from_physname initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(cplus_language_data): Likewise.
+	(cplus_language::class_name_from_physname): New member function.
+	(asm_language_data): Delete la_class_name_from_physname
+	initializer.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* dwarf2/read.c (guess_partial_die_structure_name): Update to call
+	method on language_defn class.
+	(guess_full_die_structure_name): Likewise.
+	* f-lang.c (f_language_data): Delete la_class_name_from_physname
+	initializer.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (language_class_name_from_physname): Delete.
+	(unk_lang_class_name): Delete.
+	(unknown_language_data): Delete la_class_name_from_physname
+	initializer.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_class_name_from_physname
+	field.
+	(language_defn::class_name_from_physname): New function.
+	(language_class_name_from_physname): Delete declaration.
+	* m2-lang.c (m2_language_data): Delete la_class_name_from_physname
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
 
-2019-08-16  Tom Tromey  <tom@tromey.com>
+2020-06-16  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.c (tui_update_source_windows_with_addr)
-	(tui_update_source_windows_with_line): Update.
-	* tui/tui-source.h (struct tui_source_window)
-	<show_symtab_source>: Declare.
-	(tui_show_symtab_source): Don't declare.
-	* tui/tui-source.c (tui_show_symtab_source): Rename from
-	tui_show_symtab_source.
+	* tui/tui-data.h (STATUS_NAME): New macro.
+	* tui/tui-layout.c (tui_remove_some_windows)
+	(initialize_known_windows, tui_register_window)
+	(tui_layout_split::remove_windows, initialize_layouts)
+	(tui_new_layout_command): Don't use hard-coded window names.
 
-2019-08-16  Tom Tromey  <tom@tromey.com>
+2020-06-16  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<set_contents>: Declare.
-	* tui/tui-winsource.c
-	(tui_source_window_base::update_source_window_as_is): Update.
-	* tui/tui-source.h (struct tui_source_window) <set_contents>:
-	Declare.
-	(tui_set_source_content): Don't declare.
-	* tui/tui-source.c (tui_source_window::set_contents): Rename from
-	tui_set_source_content.
-	* tui/tui-disasm.h (struct tui_disasm_window) <set_contents>:
-	Declare.
-	(tui_set_disassem_content): Don't declare.
-	* tui/tui-disasm.c (tui_disasm_window::set_contents): Rename from
-	tui_set_disassem_content.
+	PR tui/25348:
+	* tui/tui.c (tui_ensure_readline_initialized): Rename from
+	tui_initialize_readline.  Only run once.  Call rl_initialize.
+	* tui/tui.h (tui_ensure_readline_initialized): Rename from
+	tui_initialize_readline.
+	* tui/tui-io.c (tui_setup_io): Call
+	tui_ensure_readline_initialized.
+	* tui/tui-interp.c (tui_interp::init): Update.
 
-2019-08-16  Tom Tromey  <tom@tromey.com>
+2020-06-16  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<update_breakpoint_info>: Declare.
-	(tui_update_breakpoint_info): Don't declare.
-	* tui/tui-winsource.c (tui_source_window_base::update_source_window_as_is)
-	(tui_update_all_breakpoint_info): Update.
-	(tui_source_window_base::update_breakpoint_info): Rename from
-	tui_update_breakpoint_info.
-	(tui_source_window_base::update_exec_info): Update.
+	* tui/tui-layout.c (tui_layout_split::remove_windows): Fix logic.
+	Also preserve the status window.
 
-2019-08-16  Tom Tromey  <tom@tromey.com>
+2020-06-16  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<update_source_window>: Declare.
-	(tui_update_source_window): Don't declare.
-	* tui/tui-winsource.c
-	(tui_source_window_base::update_source_window): Rename from
-	tui_update_source_window.
-	(tui_source_window_base::rerender): Update.
-	* tui/tui-source.c (tui_source_window::maybe_update): Update.
-	* tui/tui-disasm.c (tui_show_disassem)
-	(tui_show_disassem_and_update_source)
-	(tui_disasm_window::maybe_update): Update.
+	* python/py-tui.c (tui_py_window::~tui_py_window): Handle case
+	where m_window==nullptr.
 
-2019-08-16  Tom Tromey  <tom@tromey.com>
+2020-06-15  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<update_source_window_as_is>: Declare.
-	(tui_update_source_window_as_is): Don't declare.
-	* tui/tui-winsource.c (tui_update_source_window): Update
-	(tui_source_window_base::update_source_window_as_is): Rename from
-	tui_update_source_window_as_is.
-	(tui_source_window_base::refill): Update.
-	* tui/tui-source.c (tui_show_symtab_source): Update.
-	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical):
+	* windows-nat.c (windows_nat::handle_output_debug_string):
+	Update.
+	(windows_nat::handle_ms_vc_exception): Update.
+	* target.h (target_read_string): Change API.
+	* target.c (target_read_string): Change API.
+	* solib-svr4.c (open_symbol_file_object, svr4_read_so_list):
 	Update.
+	* solib-frv.c (frv_current_sos): Update.
+	* solib-dsbt.c (dsbt_current_sos): Update.
+	* solib-darwin.c (darwin_current_sos): Update.
+	* linux-thread-db.c (inferior_has_bug): Update.
+	* expprint.c (print_subexp_standard): Update.
+	* ada-lang.c (ada_main_name, ada_tag_name_from_tsd)
+	(ada_exception_message_1): Update.
 
-2019-08-16  Tom Tromey  <tom@tromey.com>
+2020-06-15  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-winsource.h (tui_update_source_window)
-	(tui_update_source_window_as_is): Remove "noerror" parameter.
-	* tui/tui-winsource.c (tui_update_source_window)
-	(tui_update_source_window_as_is): Remove "noerror" parameter.
-	(tui_update_source_windows_with_addr)
-	(tui_update_source_windows_with_line)
-	(tui_source_window_base::rerender)
-	(tui_source_window_base::refill): Update.
-	* tui/tui-source.h (tui_set_source_content)
-	(tui_show_symtab_source): Remove "noerror" parameter.
-	* tui/tui-source.c (tui_set_source_content): Remove "noerror"
-	parameter.
-	(tui_show_symtab_source): Likewise.
-	(tui_source_window::maybe_update): Update.
-	* tui/tui-disasm.c (tui_show_disassem)
-	(tui_show_disassem_and_update_source)
-	(tui_disasm_window::do_scroll_vertical)
-	(tui_disasm_window::maybe_update): Update.
+	* linux-tdep.c (dump_mapping_p): Use target_read_memory.
 
-2019-08-16  Tom Tromey  <tom@tromey.com>
+2020-06-15  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui.c (tui_is_window_visible): Update.
-	* tui/tui-wingeneral.c (tui_make_window)
-	(tui_gen_win_info::make_visible, tui_refresh_all): Update.
-	* tui/tui-win.c (window_name_completer, tui_refresh_all_win)
-	(tui_set_focus_command, tui_all_windows_info, update_tab_width)
-	(tui_set_win_height_command, parse_scrolling_args): Update.
-	* tui/tui-source.c (tui_source_window::style_changed): Update.
-	* tui/tui-regs.c (tui_show_registers)
-	(tui_data_window::first_data_item_displayed)
-	(tui_data_window::delete_data_content_windows)
-	(tui_check_register_values, tui_reg_command): Update.
-	* tui/tui-disasm.c (tui_show_disassem): Update.
-	* tui/tui-data.h (struct tui_gen_win_info) <is_visible>: New
-	method.
-	<is_visible>: Remove field.
-	* tui/tui-data.c (tui_next_win, tui_prev_win)
-	(tui_delete_invisible_windows): Update.
+	* valprint.c (read_string): Update comment.
+	* target.c (MIN): Remove.
+	(target_read_string): Rewrite.
 
-2019-08-16  Tom Tromey  <tom@tromey.com>
+2020-06-15  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<m_has_locator>: Remove.
-	* tui/tui-layout.c (show_source_disasm_command, show_data)
-	(show_source_or_disasm_and_command): Update.
-
-2019-08-16  Alan Hayward  <alan.hayward@arm.com>
-
-	* NEWS (Other MI changes): New subsection.
-	* aarch64-tdep.c (aarch64_get_pc_address_flags): New function.
-	(aarch64_gdbarch_init): Add aarch64_get_pc_address_flags.
-	* arch-utils.c (default_get_pc_address_flags): New function.
-	* arch-utils.h (default_get_pc_address_flags): New declaration.
-	* gdbarch.sh: Add get_pc_address_flags.
-	* gdbarch.c: Regenerate.
-	* gdbarch.h: Likewise.
-	* stack.c (print_pc): New function.
-	(print_frame_info) (print_frame): Call print_pc.
+	* corefile.c (read_memory_string): Remove.
+	* ada-valprint.c (ada_value_print_ptr): Update.
+	* ada-lang.h (ada_tag_name): Change return type.
+	* ada-lang.c (type_from_tag): Update.
+	(ada_tag_name_from_tsd): Change return type.  Use
+	target_read_string.
+	(ada_tag_name): Likewise.
+	* gdbcore.h (read_memory_string): Don't declare.
 
-2019-08-16  Tom de Vries  <tdevries@suse.de>
+2020-06-14  Hannes Domani  <ssbssa@yahoo.de>
 
-	* maint.c (maintenance_info_sections): Also handle !ALLOBJ case using
-	print_objfile_section_info.
+	* symtab.c (rbreak_command): Ignore Windows drive colon.
 
-2019-08-15  Tom Tromey  <tom@tromey.com>
+2020-06-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-io.c (tui_puts_internal): Check TUI_CMD_WIN before
-	calling update_cmdwin_start_line.
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<do_make_visible_with_new_height, set_new_height>: Don't declare.
-	<rerender>: Declare.
-	* tui/tui-winsource.c (tui_source_window_base::update_tab_width):
-	Call rerender.
-	(tui_source_window_base::set_new_height): Remove.
-	(tui_source_window_base::rerender): Rename from
-	do_make_visible_with_new_height.
-	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Use
-	resize method.
-	(tui_win_info::make_invisible_and_set_new_height)
-	(tui_win_info::make_visible_with_new_height): Remove.
-	* tui/tui-stack.h (struct tui_locator_window) <rerender>:
-	Declare.
-	* tui/tui-stack.c (tui_locator_window::rerender): New method.
-	* tui/tui-regs.h (struct tui_data_window) <set_new_height,
-	do_make_visible_with_new_height>: Don't declare.
-	<rerender>: Declare.
-	* tui/tui-regs.c (tui_data_window::rerender): Rename from
-	set_new_height.
-	(tui_data_window::do_make_visible_with_new_height): Remove.
-	* tui/tui-layout.c (show_source_disasm_command, show_data): Don't
-	call tui_show_locator_content.
-	(tui_gen_win_info::resize): Call rerender.
-	(show_source_or_disasm_and_command): Don't call
-	tui_show_locator_content.
-	* tui/tui-data.h (struct tui_gen_win_info) <rerender>: New
-	method.
-	(struct tui_win_info) <rerender>: Declare.
-	<set_new_height, make_invisible_and_set_new_height,
-	make_visible_with_new_height>: Don't declare.
-	* tui/tui-data.c (tui_win_list::rerender): New method.
-	* tui/tui-command.h (struct tui_cmd_window)
-	<do_make_visible_with_new_height>: Don't declare.
-	* tui/tui-command.c
-	(tui_cmd_window::do_make_visible_with_new_height): Remove.
-
-2019-08-15  Tom Tromey  <tromey@adacore.com>
-
-	* ada-exp.y (convert_char_literal): Handle "Q%c" encoding.
-	* ada-lang.c (ada_enum_name): Likewise.
-
-2019-08-15  Christian Biesinger  <cbiesinger@google.com>
-
-	* python/lib/gdb/__init__.py (GdbOutputFile): Rename to have a
-	leading underscore.
-	(GdbOutputErrorFile): Likewise.
-	(global scope): Adjust constructor calls to GdbOutput{,Error}File
-	accordingly.
-	(execute_unwinders): Rename to have a leading underscore.
-	(auto_load_packages): Likewise.
-	(global scope): Adjust call to auto_load_packages accordingly.
-	(GdbSetPythonDirectory): Likewise.
-	* python/py-unwind.c (pyuw_sniffer): Call _execute_unwinders
-	instead of execute_unwinders.
-
-2019-08-15  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-layout.c (show_layout, show_source_disasm_command)
-	(show_data): Don't change window visibility.
-	(tui_gen_win_info::resize): Remove special case for command
-	window.  Use wresize, when available.
-	(show_source_or_disasm_and_command): Don't change window
-	visibility.
-	* tui/tui-command.h (struct tui_cmd_window) <resize>: Declare.
-	<make_visible>: New method.
-	* tui/tui-command.c (tui_cmd_window::resize): New method.
-
-2019-08-15  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (struct tui_source_window_iterator): New.
-	(struct tui_source_windows): New.
-	* tui/tui-winsource.c (tui_display_main): Update.
-	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
-	(new_height_ok, parse_scrolling_args): Update.
-	* tui/tui-layout.c (show_layout, show_data): Update.
-	* tui/tui-data.h (tui_source_windows, tui_clear_source_windows)
-	(tui_add_to_source_windows): Don't declare.
-	* tui/tui-data.c (source_windows, tui_source_windows)
-	(tui_clear_source_windows, tui_add_to_source_windows): Remove.
-
-2019-08-15  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (struct tui_source_window_base) <resize>:
-	Rename from reset.
-	* tui/tui-winsource.c (tui_source_window_base::resize): Rename.
-	* tui/tui-layout.c (show_source_disasm_command, show_data):
-	Update.
-	(tui_gen_win_info::resize): Rename.
-	(show_source_or_disasm_and_command): Update.
-	* tui/tui-data.h (struct tui_gen_win_info) <resize>: Rename from
-	reset.
-
-2019-08-15  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-stack.c (tui_initialize_static_data): Remove.
-	* tui/tui-interp.c (tui_interp::init): Don't call
-	tui_initialize_static_data.
-	* tui/tui-data.h (tui_initialize_static_data): Don't declare.
-
-2019-08-15  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-layout.c (tui_default_win_viewport_height): Don't
-	examine tui_win_list.
-
-2019-08-15  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (tui_clear_source_content): Don't declare.
-	* tui/tui-winsource.c (tui_update_source_window_as_is): Don't call
-	tui_clear_source_content.
-	(tui_clear_source_content): Remove.
-	(tui_source_window_base::do_erase_source_content): Hoist call to
-	content.clear().
-	* tui/tui-stack.c (tui_show_frame_info): Don't call
-	tui_clear_source_content.
+	* NEWS: Mention removed GDBserver host support.
 
-2019-08-15  Tom Tromey  <tom@tromey.com>
+2020-06-12  Nelson Chu  <nelson.chu@sifive.com>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<do_erase_source_content>: New method.
-	<erase_source_content>: New method.
-	(tui_erase_source_content): Don't declare.
-	* tui/tui-winsource.c (tui_clear_source_content): Update.
-	(tui_source_window_base::do_erase_source_content): Rename from
-	tui_erase_source_content.
-	(tui_source_window_base::show_source_content): Update.
-	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Update.
-	* tui/tui-source.h (struct tui_source_window)
-	<erase_source_content>: New method.
-	* tui/tui-disasm.h (struct tui_disasm_window)
-	<erase_source_content>: New method.
+	* features/riscv/rebuild-csr-xml.sh: Updated.
 
-2019-08-15  Tom Tromey  <tom@tromey.com>
+2020-06-11  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.h (tui_alloc_source_buffer): Don't declare.
-	(struct tui_source_element): Add DISABLE_COPY_AND_ASSIGN, and move
-	constructor.
-	* tui/tui-winsource.c (tui_alloc_source_buffer): Remove.
-	* tui/tui-source.c (tui_set_source_content): Update.
-	* tui/tui-disasm.c (tui_set_disassem_content): Update.
-
-2019-08-15  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (tui_line_is_displayed): Don't declare.
-	* tui/tui-winsource.c (tui_line_is_displayed): Move to
-	tui-source.c.
-	* tui/tui-source.h (struct tui_source_window) <line_is_displayed>:
-	Declare.
-	* tui/tui-source.c (tui_source_window::line_is_displayed): New
-	method.
-	(tui_source_window::maybe_update): Update.
+	PR gdb/18318:
+	* c-exp.y (lex_one_token): Handle 'p' like 'e'.
 
-2019-08-15  Tom Tromey  <tom@tromey.com>
+2020-06-09  Jonny Grant  <jg@jguk.org>
+2020-06-09  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* tui/tui-winsource.h (tui_addr_is_displayed): Don't declare.
-	* tui/tui-winsource.c (tui_addr_is_displayed): Move to
-	tui-disasm.c.
-	* tui/tui-disasm.h (struct tui_disasm_window) <addr_is_displayed>:
-	Declare.
-	* tui/tui-disasm.c (tui_disasm_window::addr_is_displayed): New
-	method.
-	(tui_disasm_window::maybe_update): Update.
+	* main.c (captured_main_1): Don't print new line after help.
+	(print_gdb_help): add mailing list and IRC channel information
+	to --help.  Add new lines between items in the footer.  Remove
+	quotes around bug url.
 
-2019-08-15  Tom Tromey  <tom@tromey.com>
+2020-06-11  Keith Seitz  <keiths@redhat.com>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<maybe_update>: Declare.
-	* tui/tui-stack.c (tui_show_frame_info): Call maybe_update
-	method.
-	* tui/tui-source.h (struct tui_source_window) <maybe_update>:
-	Declare.
-	* tui/tui-source.c (tui_source_window::maybe_update): New method.
-	* tui/tui-disasm.h (struct tui_disasm_window) <maybe_update>:
-	Declare.
-	* tui/tui-disasm.c (tui_disasm_window::maybe_update): New method.
+	PR gdb/21356
+	* gdbtypes.c (resolve_dynamic_union, resolve_dynamic_struct):
+	Resolve typedefs for type length calculations.
 
-2019-08-15  Tom Tromey  <tom@tromey.com>
+2020-06-10  Tom de Vries  <tdevries@suse.de>
 
-	* tui/tui-stack.c (tui_make_status_line): Use string constructor.
+	PR ada/24713
+	* dwarf2/index-write.c (struct mapped_symtab): Add m_string_obstack.
+	(write_psymbols): Enable .gdb_index for ada.
+	* dwarf2/read.c: Remove comment stating .gdb_index is unsupported for
+	ada.
 
-2019-08-15  Tom Tromey  <tom@tromey.com>
+2020-06-10  Tom de Vries  <tdevries@suse.de>
 
-	* tui/tui-wingeneral.c: Include tui-stack.h.
-	* tui/tui-stack.h (MAX_LOCATOR_ELEMENT_LEN)
-	(struct tui_locator_window): Move from tui-data.h.
-	* tui/tui-stack.c (_locator, tui_locator_win_info_ptr)
-	(tui_initialize_static_data): Move from tui-data.c.
-	* tui/tui-data.h (MAX_LOCATOR_ELEMENT_LEN)
-	(struct tui_locator_window): Move to tui-stack.c.
-	* tui/tui-data.c (_locator, tui_locator_win_info_ptr)
-	(tui_initialize_static_data): Move to tui-stack.c.
-
-2019-08-15  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-layout.c (show_source_disasm_command)
-	(show_source_or_disasm_and_command): Use make_visible method, not
-	tui_make_window.
-	* tui/tui-command.h (struct tui_cmd_window) <make_visible>:
-	Remove.
+	* dwarf2/read.c (dw2_symtab_iter_init_common): Factor out of ...
+	(dw2_symtab_iter_init): ... here.  Add variant with "offset_type
+	namei" instead of "const char *name" argument.
+	(dw2_map_matching_symbols): Use "offset_type namei" variant of
+	dw2_symtab_iter_init.
 
-2019-08-15  Tom Tromey  <tom@tromey.com>
+2020-06-08  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-wingeneral.h (tui_make_window): Update.
-	* tui/tui-wingeneral.c (tui_make_window): Remove "box_it"
-	parameter.
-	(tui_gen_win_info::make_visible): Update.
-	* tui/tui-regs.c (tui_data_window::display_registers_from):
-	Update.
-	* tui/tui-layout.c (show_source_disasm_command)
-	(show_source_or_disasm_and_command): Update.
-	* tui/tui-data.h (struct tui_gen_win_info) <can_box>: New method.
-	(enum tui_box): Remove.
-	(struct tui_win_info) <can_box>: New method.
-	* tui/tui-command.h (struct tui_cmd_window) <can_box>: New
-	method.
+	* gdbtypes.h (TYPE_FIELD_TYPE): Remove.  Change all call sites
+	to use type::field and field::type instead.
 
-2019-08-15  Tom de Vries  <tdevries@suse.de>
+2020-06-08  Simon Marchi  <simon.marchi@efficios.com>
 
-	* linux-nat-trad.c: Include gdbarch.h.
+	* gdbtypes.h (FIELD_TYPE): Remove.  Change all call sites
+	to use field::type instead.
 
-2019-08-14  Alan Hayward  <alan.hayward@arm.com>
+2020-06-08  Simon Marchi  <simon.marchi@efficios.com>
 
-	* aarch64-tdep.c (aarch64_analyze_prologue): Allow any valid
-	register sizes.
+	* gdbtypes.h (struct field) <type, set_type>: New methods.
+	Rename `type` field to...
+	<m_type>: ... this.  Change references throughout to use type or
+	set_type methods.
+	(FIELD_TYPE): Use field::type.  Change call sites that modify
+	the field's type to use field::set_type instead.
 
-2019-08-14  Tom Tromey  <tromey@adacore.com>
+2020-06-08  Simon Marchi  <simon.marchi@efficios.com>
 
-	* darwin-nat.c: Include gdbarch.h.
-	* darwin-nat-info.c: Include gdbarch.h.
+	* gdbtypes.h (TYPE_INDEX_TYPE): Remove.  Change all call sites
+	to use type::index_type instead.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-08  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-data.h (struct tui_gen_win_info) <last_visible_line>:
-	Remove.
-	* tui/tui-data.c (tui_initialize_static_data): Update.
+	* gdbtypes.h (struct type) <index_type, set_index_type>: New
+	methods.
+	(TYPE_INDEX_TYPE): Use type::index_type.
+	* gdbtypes.c (create_array_type_with_stride): Likewise.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-07  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.h (struct tui_exec_info_window)
-	<~tui_exec_info_window, maybe_allocate_content, get_content,
-	m_content>: Remove.
-	(struct tui_source_window_base) <set_exec_info_content,
-	show_exec_info_content>: Don't declare.
-	* tui/tui-winsource.c
-	(tui_exec_info_window::maybe_allocate_content): Remove.
-	(tui_source_window_base::update_exec_info): Rename from
-	set_exec_info_content.
-	(tui_source_window_base::show_exec_info_content)
-	(tui_source_window_base::update_exec_info): Remove.
+	* valprint.c (generic_val_print_float): Remove "embedded_offset"
+	parameter.
+	(generic_value_print): Update.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-05  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-winsource.h (tui_clear_exec_info_content): Don't
-	declare.
-	* tui/tui-winsource.c (tui_update_source_window_as_is)
-	(tui_update_source_windows_with_addr, tui_erase_source_content):
-	Update.
-	(tui_clear_exec_info_content): Remove.
+	Revert commit 982a38f60b0.
+	* python/py-tui.c (gdbpy_tui_set_title): Restore use of get.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-05  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-winsource.h (tui_erase_exec_info_content): Don't
-	declare.
-	* tui/tui-winsource.c (tui_source_window_base::refresh_all): Don't
-	call tui_erase_exec_info_content.
-	(tui_clear_exec_info_content): Rename from
-	tui_erase_exec_info_content.
-	(tui_clear_exec_info_content): Delete.
+	* python/py-tui.c (gdbpy_tui_set_title): Use release, not get, to
+	avoid use after free.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-05  Tom de Vries  <tdevries@suse.de>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<show_exec_info_content>: Declare.
-	(tui_show_exec_info_content): Don't declare.
-	* tui/tui-winsource.c
-	(tui_source_window_base::show_exec_info_content): Rename from
-	tui_show_exec_info_content.
-	(tui_source_window_base::update_exec_info): Update.
+	* NEWS: Fix typos.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-04  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-data.h (enum tui_bp_flag, tui_bp_flags, struct tui_source_element)
-	(TUI_BP_HIT_POS, TUI_BP_BREAK_POS, TUI_EXEC_POS)
-	(TUI_EXECINFO_SIZE, tui_exec_info_content): Move ...
-	* tui/tui-winsource.h (enum tui_bp_flag, tui_bp_flags, struct
-	tui_source_element, TUI_BP_HIT_POS, TUI_BP_BREAK_POS)
-	(TUI_EXEC_POS, TUI_EXECINFO_SIZE, tui_exec_info_content):
-	... here.
+	* dwarf2/read.c (dwarf2_read_gdb_index): Save partial_symtabs in
+	the per_bfd object.
+	(dwarf2_read_debug_names): Likewise.
+	(dwarf2_initialize_objfile): Use partial_symtabs from per_bfd
+	object when re-using a per_bfd object with an index.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-03  Tom de Vries  <tdevries@suse.de>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<update_exec_info>: Declare.
-	(tui_update_exec_info): Don't declare.
-	* tui/tui-winsource.c (tui_update_source_window_as_is)
-	(tui_source_window_base::refresh_all)
-	(tui_update_all_breakpoint_info): Update.
-	(tui_source_window_base::update_exec_info): Rename from
-	tui_update_exec_info.
-	* tui/tui-stack.c (tui_show_frame_info): Update.
+	PR symtab/26046
+	* dwarf2/read.c (scan_partial_symbols): Recurse into DW_TAG_subprogram
+	children for C++.
+	(load_partial_dies): Don't skip DW_TAG_inlined_subroutine child of
+	DW_TAG_subprogram.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<set_exec_info_content>: Declare.
-	(tui_set_exec_info_content): Don't declare.
-	* tui/tui-winsource.c
-	(tui_source_window_base::set_exec_info_content): Rename from
-	tui_set_exec_info_content.
-	(tui_update_exec_info): Update.
+	* ada-lang.c (ada_language_data): Delete skip_trampoline
+	initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(cplus_language_data): Likewise.
+	(cplus_language::skip_trampoline): New member function.
+	(asm_language_data): Delete skip_trampoline initializer.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_language_data): Likewise.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (unk_lang_trampoline): Delete function.
+	(skip_language_trampoline): Update.
+	(unknown_language_data): Delete skip_trampoline initializer.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete skip_trampoline field.
+	(language_defn::skip_trampoline): New function.
+	* m2-lang.c (m2_language_data): Delete skip_trampoline
+	initializer.
+	* objc-lang.c (objc_skip_trampoline): Delete function, move
+	implementation to objc_language::skip_trampoline.
+	(objc_language_data): Delete skip_trampoline initializer.
+	(objc_language::skip_trampoline): New member function with
+	implementation from objc_skip_trampoline.
+	* opencl-lang.c (opencl_language_data): Delete skip_trampoline
+	initializer.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<show_source_content>: Declare.
-	(tui_show_source_content): Don't declare.
-	* tui/tui-winsource.c (tui_update_source_window_as_is): Update.
-	(tui_source_window_base::show_source_content): Rename from
-	tui_show_source_content.
-	(tui_source_window_base::refresh_all): Update.
-	* tui/tui-layout.c (show_source_disasm_command)
-	(show_source_or_disasm_and_command): Update.
+	* ada-lang.c (ada_language_data): Delete la_demangle initializer.
+	(ada_language::demangle): New member function.
+	* c-lang.c (c_language_data): Delete la_demangle initializer.
+	(cplus_language_data): Delete la_demangle initializer.
+	(cplus_language::demangle): New member function.
+	(asm_language_data): Delete la_demangle initializer.
+	(minimal_language_data): Delete la_demangle initializer.
+	* d-lang.c (d_language_data): Delete la_demangle initializer.
+	(d_language::demangle): New member function.
+	* f-lang.c (f_language_data): Delete la_demangle initializer.
+	(f_language::demangle): New member function.
+	* go-lang.c (go_language_data): Delete la_demangle initializer.
+	(go_language::demangle): New member function.
+	* language.c (language_demangle): Update.
+	(unk_lang_demangle): Delete.
+	(unknown_language_data): Delete la_demangle initializer.
+	(unknown_language::demangle): New member function.
+	(auto_language_data): Delete la_demangle initializer.
+	(auto_language::demangle): New member function.
+	* language.h (language_data): Delete la_demangle field.
+	(language_defn::demangle): New function.
+	* m2-lang.c (m2_language_data): Delete la_demangle initializer.
+	* objc-lang.c (objc_language_data): Delete la_demangle
+	initializer.
+	(objc_language::demangle): New member function.
+	* opencl-lang.c (opencl_language_data): Delete la_demangle
+	initializer.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+	(rust_language::demangle): New member function.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-winsource.c (tui_erase_source_content)
-	(tui_show_source_content, tui_source_window_base::refresh_all):
-	Update.
-	* tui/tui-wingeneral.h
-	(tui_check_and_display_highlight_if_needed): Don't declare.
-	* tui/tui-wingeneral.c
-	(tui_win_info::check_and_display_highlight_if_needed): Rename from
-	check_and_display_highlight_if_needed.
-	* tui/tui-win.c (tui_rehighlight_all)
-	(tui_win_info::make_visible_with_new_height): Update.
-	* tui/tui-regs.c (tui_data_window::display_registers_from_line)
-	(tui_data_window::erase_data_content)
-	(tui_data_window::display_all_data): Update.
-	* tui/tui-data.h (struct tui_win_info)
-	<check_and_display_highlight_if_needed>: Declare.
+	* ada-lang.c (ada_language_data): Delete la_print_type
+	initializer.
+	(ada_language::print_type): New member function.
+	* c-lang.c (c_language_data): Delete la_print_type initializer.
+	(c_language::print_type): New member function.
+	(cplus_language_data): Delete la_print_type initializer.
+	(cplus_language::print_type): New member function.
+	(asm_language_data): Delete la_print_type initializer.
+	(asm_language::print_type): New member function.
+	(minimal_language_data): Delete la_print_type initializer.
+	(minimal_language::print_type): New member function.
+	* d-lang.c (d_language_data): Delete la_print_type initializer.
+	(d_language::print_type): New member function.
+	* f-lang.c (f_language_data): Delete la_print_type initializer.
+	(f_language::print_type): New member function.
+	* go-lang.c (go_language_data): Delete la_print_type initializer.
+	(go_language::print_type): New member function.
+	* language.c (unk_lang_print_type): Delete.
+	(unknown_language_data): Delete la_print_type initializer.
+	(unknown_language::print_type): New member function.
+	(auto_language_data): Delete la_print_type initializer.
+	(auto_language::print_type): New member function.
+	* language.h (language_data): Delete la_print_type field.
+	(language_defn::print_type): New function.
+	(LA_PRINT_TYPE): Update.
+	* m2-lang.c (m2_language_data): Delete la_print_type initializer.
+	(m2_language::print_type): New member function.
+	* objc-lang.c (objc_language_data): Delete la_print_type
+	initializer.
+	(objc_language::print_type): New member function.
+	* opencl-lang.c (opencl_print_type): Delete, implementation moved
+	to opencl_language::print_type.
+	(opencl_language_data): Delete la_print_type initializer.
+	(opencl_language::print_type): New member function, implementation
+	from opencl_print_type.
+	* p-lang.c (pascal_language_data): Delete la_print_type
+	initializer.
+	(pascal_language::print_type): New member function.
+	* rust-lang.c (rust_print_type): Delete, implementation moved to
+	rust_language::print_type.
+	(rust_language_data): Delete la_print_type initializer.
+	(rust_language::print_type): New member function, implementation
+	from rust_print_type.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_sniff_from_mangled_name): Delete function,
+	implementation moves to...
+	(ada_language::sniff_from_mangled_name): ...here.  Update return
+	type.
+	(ada_language_data): Delete la_sniff_from_mangled_name
+	initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(cplus_language_data): Likewise.
+	(cplus_language::sniff_from_mangled_name): New member function,
+	implementation taken from gdb_sniff_from_mangled_name.
+	(asm_language_data): Delete la_sniff_from_mangled_name
+	initializer.
+	(minimal_language_data): Likewise.
+	* cp-support.c (gdb_sniff_from_mangled_name): Delete,
+	implementation moves to cplus_language::sniff_from_mangled_name.
+	* cp-support.h (gdb_sniff_from_mangled_name): Delete declaration.
+	* d-lang.c (d_sniff_from_mangled_name): Delete, implementation
+	moves to...
+	(d_language::sniff_from_mangled_name): ...here.
+	(d_language_data): Delete la_sniff_from_mangled_name initializer.
+	* f-lang.c (f_language_data): Likewise.
+	* go-lang.c (go_sniff_from_mangled_name): Delete, implementation
+	moves to...
+	(go_language::sniff_from_mangled_name): ...here.
+	(go_language_data): Delete la_sniff_from_mangled_name initializer.
+	* language.c (language_sniff_from_mangled_name): Delete.
+	(unknown_language_data): Delete la_sniff_from_mangled_name
+	initializer.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_sniff_from_mangled_name
+	field.
+	(language_defn::sniff_from_mangled_name): New function.
+	(language_sniff_from_mangled_name): Delete declaration.
+	* m2-lang.c (m2_language_data): Delete la_sniff_from_mangled_name
+	field.
+	* objc-lang.c (objc_sniff_from_mangled_name): Delete,
+	implementation moves to...
+	(objc_language::sniff_from_mangled_name): ...here.
+	(objc_language_data): Delete la_sniff_from_mangled_name initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_sniff_from_mangled_name): Delete,
+	implementation moves to...
+	(rust_language::sniff_from_mangled_name): ...here.
+	(rust_language_data): Delete la_sniff_from_mangled_name
+	initializer.
+	* symtab.c (symbol_find_demangled_name): Call
+	sniff_from_mangled_name member function.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-win.c (tui_resize_all): Call
-	tui_delete_invisible_windows.
-	* tui/tui-layout.c (show_layout): Call
-	tui_delete_invisible_windows.
-	* tui/tui-data.h (tui_delete_invisible_windows): Declare.
-	* tui/tui-data.c (tui_delete_invisible_windows): New function.
+	* ada-lang.c (ada_language_data): Delete la_search_name_hash
+	initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(cplus_language_data): Likewise.
+	(cplus_language::search_name_hash): New member function.
+	(asm_language_data): Delete la_search_name_hash initializer.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* dictionary.c (default_search_name_hash): Rename to...
+	(language_defn::search_name_hash): ...this.
+	* f-lang.c (f_language_data): Likewise.
+	(f_language::search_name_hash): New member function.
+	* go-lang.c (go_language_data): Delete la_search_name_hash
+	initializer.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (struct language_data): Delete la_search_name_hash
+	field.
+	(language_defn::search_name_hash): Declare new member function.
+	(default_search_name_hash): Delete declaration.
+	* m2-lang.c (m2_language_data): Delete la_search_name_hash
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+	* symtab.c (search_name_hash): Update call.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-disasm.c (tui_show_disassem): Add assertion.  Don't call
-	tui_add_win_to_layout.
+	* ada-lang.c (ada_language_data): Delete la_get_compile_instance
+	initializer.
+	* c-lang.c (class compile_instance): Declare.
+	(c_language_data): Delete la_get_compile_instance initializer.
+	(c_language::get_compile_instance): New member function.
+	(cplus_language_data): Delete la_get_compile_instance initializer.
+	(cplus_language::get_compile_instance): New member function.
+	(asm_language_data): Delete la_get_compile_instance initializer.
+	(minimal_language_data): Likewise.
+	* c-lang.h (c_get_compile_context): Update comment.
+	(cplus_get_compile_context): Update comment.
+	* compile/compile.c (compile_to_object): Update calls, don't rely
+	on function pointer being NULL.
+	* d-lang.c (d_language_data): Delete la_get_compile_instance
+	initializer.
+	* f-lang.c (f_language_data): Likewise.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_get_compile_instance field.
+	(language_defn::get_compile_instance): New member function.
+	* m2-lang.c (m2_language_data): Delete la_get_compile_instance
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_add_all_symbols): Update comment.
+	(ada_iterate_over_symbols): Delete, move implementation to...
+	(ada_language::iterate_over_symbols): ...here, a new member
+	function, rewrite to use range based for loop.
+	(ada_language_data): Delete la_iterate_over_symbols initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_language_data): Likewise.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_iterate_over_symbols field.
+	(language_defn::iterate_over_symbols): New member function.
+	(LA_ITERATE_OVER_SYMBOLS): Update.
+	* linespec.c (iterate_over_all_matching_symtabs): Update.
+	* m2-lang.c (m2_language_data): Delete la_iterate_over_symbols
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Delete
+	la_lookup_transparent_type initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(cplus_language_data): Likewise.
+	(cplus_language::lookup_transparent_type): New member function.
+	(asm_language_data): Delete la_lookup_transparent_type
+	initializer.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_language_data): Likewise.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (struct language_data): Delete
+	la_lookup_transparent_type field.
+	(language_defn::lookup_transparent_type): New member function.
+	* m2-lang.c (m2_language_data): Delete la_lookup_transparent_type
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+	* symtab.c (symbol_matches_domain): Update call.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_arch_info): Delete function, move
+	implementation to...
+	(ada_language::language_arch_info): ...here, a new member
+	function.
+	(ada_language_data): Delete la_language_arch_info.
+	* c-lang.c (c_language_data): Likewise.
+	(c_language::language_arch_info): New member function.
+	(cplus_language_arch_info): Delete function, move
+	implementation to...
+	(cplus_language::language_arch_info): ...here, a new member
+	function.
+	(cplus_language_data): Delete la_language_arch_info.
+	(asm_language_data): Likewise.
+	(asm_language::language_arch_info): New member function.
+	(minimal_language_data): Delete la_language_arch_info.
+	(minimal_language::language_arch_info): New member function.
+	* d-lang.c (d_language_arch_info): Delete function, move
+	implementation to...
+	(d_language::language_arch_info): ...here, a new member
+	function.
+	(d_language_data): Delete la_language_arch_info.
+	* f-lang.c (f_language_arch_info): Delete function, move
+	implementation to...
+	(f_language::language_arch_info): ...here, a new member
+	function.
+	(f_language_data): Delete la_language_arch_info.
+	* go-lang.c (go_language_arch_info): Delete function, move
+	implementation to...
+	(go_language::language_arch_info): ...here, a new member
+	function.
+	(go_language_data): Delete la_language_arch_info.
+	* language.c (unknown_language_data): Likewise.
+	(unknown_language::language_arch_info): New member function.
+	(auto_language_data): Delete la_language_arch_info.
+	(auto_language::language_arch_info): New member function.
+	(language_gdbarch_post_init): Update call to
+	la_language_arch_info.
+	* language.h (language_data): Delete la_language_arch_info
+	function pointer.
+	(language_defn::language_arch_info): New function.
+	* m2-lang.c (m2_language_arch_info): Delete function, move
+	implementation to...
+	(m2_language::language_arch_info): ...here, a new member
+	function.
+	(m2_language_data): Delete la_language_arch_info.
+	* objc-lang.c (objc_language_arch_info): Delete function, move
+	implementation to...
+	(objc_language::language_arch_info): ...here, a new member
+	function.
+	(objc_language_data): Delete la_language_arch_info.
+	* opencl-lang.c (opencl_language_arch_info): Delete function, move
+	implementation to...
+	(opencl_language::language_arch_info): ...here, a new member
+	function.
+	(opencl_language_data): Delete la_language_arch_info.
+	* p-lang.c (pascal_language_arch_info): Delete function, move
+	implementation to...
+	(pascal_language::language_arch_info): ...here, a new member
+	function.
+	(pascal_language_data): Delete la_language_arch_info.
+	* rust-lang.c (rust_language_arch_info): Delete function, move
+	implementation to...
+	(rust_language::language_arch_info): ...here, a new member
+	function.
+	(rust_language_data): Delete la_language_arch_info.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-layout.h (tui_default_win_height): Don't declare.
-	* tui/tui-layout.c (tui_default_win_height): Now static.
+	* ada-lang.c (ada_language_data): Delete la_pass_by_reference
+	initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(cplus_language_data): Likewise.
+	(cplus_language::pass_by_reference_info): New method.
+	(asm_language_data): Delete la_pass_by_reference initializer.
+	(minimal_language_data): Likewise.
+	* cp-abi.c (cp_pass_by_reference): Remove use of
+	default_pass_by_reference.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_language_data): Likewise.
+	* gnu-v3-abi.c (gnuv3_pass_by_reference): Remove use of
+	default_pass_by_reference.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (language_pass_by_reference): Update.
+	(default_pass_by_reference): Delete.
+	(unknown_language_data): Delete la_pass_by_reference
+	initializer.
+	(auto_language_data): Likewise.
+	* language.h (struct language_data): Delete la_pass_by_reference
+	field.
+	(language_defn::pass_by_reference_info): New member function.
+	(default_pass_by_reference): Delete declaration.
+	* m2-lang.c (m2_language_data): Delete la_pass_by_reference
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_read_var_value): Delete function, move
+	implementation to...
+	(ada_language::read_var_value): ...here.
+	(ada_language_data): Delete la_read_var_value initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(cplus_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_language_data): Likewise.
+	* findvar.c (default_read_var_value): Rename to...
+	(language_defn::read_var_value): ...this.
+	* findvar.c (read_var_value): Update header comment, and change to
+	call member function instead of function pointer.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (unknown_language_data): Delete la_read_var_value
+	initializer.
+	(auto_language_data): Likewise.
+	* language.h (struct language_data): Delete la_read_var_value
+	field.
+	(language_defn::read_var_value): New member function.
+	(default_read_var_value): Delete declaration.
+	* m2-lang.c (m2_language_data): Delete la_read_var_value
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+	* value.h (default_read_var_value): Delete declaration.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_print_array_index): Delete function, move
+	implementation to...
+	(ada_language::print_array_index): ...here.
+	(ada_language_data): Delete la_print_array_index initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(cplus_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* f-lang.c (f_language_data): Likewise.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (default_print_array_index): Delete function, move
+	implementation to...
+	(language_defn::print_array_index): ...here.
+	(unknown_language_data): Delete la_print_array_index initializer.
+	(auto_language_data): Likewise.
+	* language.h (struct language_data): Delete la_print_array_index
+	field.
+	(language_defn::print_array_index): New member function.
+	(LA_PRINT_ARRAY_INDEX): Update.
+	(default_print_array_index): Delete declaration.
+	* m2-lang.c (m2_language_data): Delete la_print_array_index
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb/ada-lang.c (ada_language_defn): Convert to...
+	(ada_language_data): ...this.
+	(class ada_language): New class.
+	(ada_language_defn): New static global.
+	* gdb/c-lang.c (c_language_defn): Convert to...
+	(c_language_data): ...this.
+	(class c_language): New class.
+	(c_language_defn): New static global.
+	(cplus_language_defn): Convert to...
+	(cplus_language_data): ...this.
+	(class cplus_language): New class.
+	(cplus_language_defn): New static global.
+	(asm_language_defn): Convert to...
+	(asm_language_data): ...this.
+	(class asm_language): New class.
+	(asm_language_defn): New static global.
+	(minimal_language_defn): Convert to...
+	(minimal_language_data): ...this.
+	(class minimal_language): New class.
+	(minimal_language_defn): New static global.
+	* gdb/d-lang.c (d_language_defn): Convert to...
+	(d_language_data): ...this.
+	(class d_language): New class.
+	(d_language_defn): New static global.
+	* gdb/f-lang.c (f_language_defn): Convert to...
+	(f_language_data): ...this.
+	(class f_language): New class.
+	(f_language_defn): New static global.
+	* gdb/go-lang.c (go_language_defn): Convert to...
+	(go_language_data): ...this.
+	(class go_language): New class.
+	(go_language_defn): New static global.
+	* gdb/language.c (unknown_language_defn): Remove declaration.
+	(current_language): Initialize to nullptr, real initialization is
+	moved to _initialize_language.
+	(languages): Delete global.
+	(language_defn::languages): Define.
+	(set_language_command): Use language_defn::languages.
+	(set_language): Likewise.
+	(range_error): Likewise.
+	(language_enum): Likewise.
+	(language_def): Likewise.
+	(add_set_language_command): Use language_def::languages for the
+	language list, and language_def to lookup language pointers.
+	(skip_language_trampoline): Use language_defn::languages.
+	(unknown_language_defn): Convert to...
+	(unknown_language_data): ...this.
+	(class unknown_language): New class.
+	(unknown_language_defn): New static global.
+	(auto_language_defn): Convert to...
+	(auto_language_data): ...this.
+	(class auto_language): New class.
+	(auto_language_defn): New static global.
+	(language_gdbarch_post_init): Use language_defn::languages.
+	(_initialize_language): Initialize current_language.
+	* gdb/language.h (struct language_defn): Rename to...
+	(struct language_data): ...this.
+	(struct language_defn): New.
+	(auto_language_defn): Delete.
+	(unknown_language_defn): Delete.
+	(minimal_language_defn): Delete.
+	(ada_language_defn): Delete.
+	(asm_language_defn): Delete.
+	(c_language_defn): Delete.
+	(cplus_language_defn): Delete.
+	(d_language_defn): Delete.
+	(f_language_defn): Delete.
+	(go_language_defn): Delete.
+	(m2_language_defn): Delete.
+	(objc_language_defn): Delete.
+	(opencl_language_defn): Delete.
+	(pascal_language_defn): Delete.
+	(rust_language_defn): Delete.
+	* gdb/m2-lang.c (m2_language_defn): Convert to...
+	(m2_language_data): ...this.
+	(class m2_language): New class.
+	(m2_language_defn): New static global.
+	* gdb/objc-lang.c (objc_language_defn): Convert to...
+	(objc_language_data): ...this.
+	(class objc_language): New class.
+	(objc_language_defn): New static global.
+	* gdb/opencl-lang.c (opencl_language_defn): Convert to...
+	(opencl_language_data): ...this.
+	(class opencl_language): New class.
+	(opencl_language_defn): New static global.
+	* gdb/p-lang.c (pascal_language_defn): Convert to...
+	(pascal_language_data): ...this.
+	(class pascal_language): New class.
+	(pascal_language_defn): New static global.
+	* gdb/rust-exp.y (rust_lex_tests): Use language_def to find
+	language pointer, update comment format.
+	* gdb/rust-lang.c (rust_language_defn): Convert to...
+	(rust_language_data): ...this.
+	(class rust_language): New class.
+	(rust_language_defn): New static global.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-01  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-layout.c (show_layout): Unify all layout cases into a
-	single switch.
-	(show_source_disasm_command, show_source_or_disasm_and_command):
-	Don't check current layout.
+	* dwarf2/read.c (class lnp_state_machine) <m_last_address>: New
+	member variable.
+	<m_stmt_at_address>: New member variable.
+	(lnp_state_machine::record_line): Don't record some lines, update
+	tracking of is_stmt at the same address.
+	(lnp_state_machine::lnp_state_machine): Initialise new member
+	variables.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-06-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
-	* tui/tui-wingeneral.c (make_all_visible): Remove.
-	(tui_make_all_invisible): Simplify.
-	* tui/tui-layout.c (tui_make_all_invisible): Move from
-	tui-wingeneral.c; simplify.
-	(show_layout): Hoist call to tui_make_all_invisible.
-	(show_data): Don't call tui_make_all_invisible.
+	* config/i386/i386gnu.mn [%_S.o %_U.o] (COMPILE.post): Add
+	"-include gnu-nat-mig.h".
+	* gnu-nat-mig.h: New file.
+	* gnu-nat.c: Include "gnu-nat-mig.h".
+	(exc_server, msg_reply_server, notify_server,
+	process_reply_server): Remove declarations.
+
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* gnu-nat.h (inf_validate_procs, inf_suspend, inf_set_traced,
+	steal_exc_port, proc_get_state, inf_clear_wait, inf_cleanup,
+	inf_startup, inf_update_suspends, inf_set_pid, inf_steal_exc_ports,
+	inf_validate_procinfo, inf_validate_task_sc, inf_restore_exc_ports,
+	inf_set_threads_resume_sc, inf_set_threads_resume_sc_for_signal_thread,
+	inf_resume, inf_set_step_thread, inf_detach, inf_attach, inf_signal,
+	inf_continue, make_proc, proc_abort, _proc_free, proc_update_sc,
+	proc_get_exception_port, proc_set_exception_port, _proc_get_exc_port,
+	proc_steal_exc_port, proc_restore_exc_port, proc_trace): Move functions
+	to gnu_nat_target class.
+	* gnu-nat.c: Likewise.
+	(inf_update_procs, S_proc_wait_reply, set_task_pause_cmd,
+	set_task_exc_port_cmd, set_signals_cmd, set_thread_pause_cmd,
+	set_thread_exc_port_cmd): Call inf_validate_procs through gnu_target
+	object.
+	(gnu_nat_target::create_inferior, gnu_nat_target::detach): Pass `this'
+	instead of `gnu_target'.
+
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* i386-gnu-tdep.c: Include "gdbcore.h"
+	(gnu_sigtramp_code, i386_gnu_sc_reg_offset): New arrays.
+	(GNU_SIGTRAMP_LEN, GNU_SIGTRAMP_TAIL,
+	I386_GNU_SIGCONTEXT_THREAD_STATE_OFFSET): New macros
+	(i386_gnu_sigtramp_start, i386_gnu_sigtramp_p,
+	i386_gnu_sigcontext_addr): New functions
+	(i386gnu_init_abi): Register i386_gnu_sigtramp_p,
+	i386_gnu_sigcontext_addr, and i386_gnu_sc_reg_offset in the gdbarch
+	tdep.
+
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* gnu-nat.c (gnu_nat_target::create_inferior): Move push_target call
+	before fork_inferior call. Avoid calling it if target_is_pushed returns
+	true.
+
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* gnu-nat.h (gnu_target): New variable declaration.
+	* i386-gnu-nat.c (_initialize_i386gnu_nat): Initialize
+	gnu_target.
+	* gnu-nat.c (gnu_target): New variable.
+	(inf_validate_procs): Pass gnu_target to thread_change_ptid,
+	add_thread_silent, and add_thread calls.
+	(gnu_nat_target::create_inferior): Pass gnu_target to
+	add_thread_silent, thread_change_ptid call.
+	(gnu_nat_target::detach): Pass gnu_target to detach_inferior
+	call.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
-	* tui/tui-wingeneral.h (tui_make_all_visible): Don't declare.
-	* tui/tui-wingeneral.c (tui_make_all_visible): Remove.
+	* gnu-nat.c (gnu_xfer_auxv): Remove unused `res' variable.
+	(gnu_nat_target::find_memory_regions): Remove unused
+	`old_address' variable.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
-	* tui/tui-layout.c (current_layout, tui_current_layout): Move from
-	tui-data.c.
-	(show_source_disasm_command, show_data)
-	(show_source_or_disasm_and_command): Don't use
-	tui_set_current_layout_to.
-	* tui/tui-data.h (tui_set_current_layout_to): Don't declare.
-	* tui/tui-data.c (current_layout, tui_current_layout): Move to
-	tui-layout.c.
-	(tui_set_current_layout_to): Remove.
+	* gnu-nat.c: Include "gdbarch.h".
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
-	* tui/tui-layout.c (tui_set_layout): Update.
-	* tui/tui-data.h (struct tui_layout_def): Remove.
-	(tui_layout_def): Don't declare.
-	* tui/tui-data.c (layout_def): Remove.
-	(tui_layout_def): Remove.
+	* reply_mig_hack.awk (Error return): Cast function through
+	void *, to bypass compiler function call check.
 
-2019-08-13  Tom Tromey  <tom@tromey.com>
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
-	* tui/tui-winsource.h (struct tui_source_window_base)
-	<clear_detail>: No longer "override".
-	* tui/tui-regs.h (struct tui_data_window) <clear_detail>: Remove.
-	* tui/tui-regs.c (tui_data_window::clear_detail): Remove.
-	* tui/tui-data.h (struct tui_win_info) <clear_detail>: Remove.
-	* tui/tui-command.h (struct tui_cmd_window) <clear_detail>:
-	Remove.
-	* tui/tui-command.c (tui_cmd_window::clear_detail): Remove.
+	* config/i386/i386gnu.mn (%_reply_S.c): Add dependency on
+	$(srcdir)/reply_mig_hack.awk.
 
-2019-08-13  Tom Tromey  <tromey@adacore.com>
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
-	* tracepoint.c: Don't include readline.h or history.h.
+	* gnu-nat.h (gnu_debug_flag): Set type to bool.
 
-2019-08-12  Tom Tromey  <tom@tromey.com>
+2020-05-30  Jonny Grant  <jg@jguk.org>
 
-	* configure: Rebuild.
-	* configure.ac: Check for readline 7.
-	* NEWS: Mention readline 7 requirement.
-	* README: Update.
+	* configure.ac (ACX_BUGURL): change bug URL to https.
 
-2019-08-12  Tom Tromey  <tom@tromey.com>
+2020-05-30  Pedro Alves  <palves@redhat.com>
 
-	* mingw-hdep.c (gdb_select): Remove readline hack.
+	* cp-support.c (replace_typedefs_template): New.
+	(replace_typedefs_qualified_name): Handle
+	DEMANGLE_COMPONENT_TEMPLATE.
 
-2019-08-09  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+2020-05-29  Simon Marchi  <simon.marchi@efficios.com>
 
-	* blockframe.c (find_pc_partial_function): Set *block to nullptr
-	when the function fails.
+	* dwarf2/comp-unit.c, dwarf2/comp-unit.h, dwarf2/index-cache.c,
+	dwarf2/index-cache.h, dwarf2/index-write.c,
+	dwarf2/index-write.h, dwarf2/line-header.c,
+	dwarf2/line-header.h, dwarf2/macro.c, dwarf2/macro.h,
+	dwarf2/read.c, dwarf2/read.h: Rename struct dwarf2_per_objfile
+	variables and fields from `dwarf2_per_objfile` to just
+	`per_objfile` throughout.
 
-2019-08-09  Andreas Arnez  <arnez@linux.ibm.com>
+2020-05-28  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* s390-tdep.c (s390_type_align): New function.
-	(s390_gdbarch_init): Set it as type_align gdbarch method.
+	* dwarf2/loc.c (class dwarf_evaluate_loc_desc)
+	<push_dwarf_reg_entry_value>: Add comment.
 
-2019-08-09  Tom de Vries  <tdevries@suse.de>
+2020-05-28  Kevin Buettner  <kevinb@redhat.com>
+	    Keith Seitz  <keiths@redhat.com>
 
-	PR gdb/24591
-	* dwarf2read.c (dwarf2_fetch_die_loc_sect_off): Adjust pc_high and
-	pc_low with relocation offset.
+	* python/python.c (do_start_initialization): Call PyEval_SaveThread
+	instead of PyEval_ReleaseLock.
+	(class gdbpy_gil): Move to earlier in file.
+	(finalize_python): Set gdb_python_initialized.
+	(gdbpy_check_quit_flag): Acquire GIL via gdbpy_gil.  Return early
+	when not initialized.
 
-2019-08-07  Tom Tromey  <tromey@adacore.com>
+2020-05-28  Simon Marchi  <simon.marchi@efficios.com>
 
-	* stack.c (print_frame_arg, read_frame_local, read_frame_arg)
-	(print_frame_args): Update.
-	* python/py-framefilter.c (py_print_single_arg, enumerate_args):
-	Update.
-	* mi/mi-cmd-stack.c (list_arg_or_local): Update.
-	* frame.h (struct frame_arg): Add initializers.
-	<error>: Now a unique_xmalloc_ptr.
-
-2019-08-07  Alan Hayward  <alan.hayward@arm.com>
-
-	* NEWS: Expand the Pointer Authentication entry.
-	* aarch64-tdep.c (aarch64_frame_unmask_address): Rename from this.
-	(aarch64_frame_unmask_lr): ... to this.
-	(aarch64_prologue_prev_register, aarch64_dwarf2_prev_register):
-	Call aarch64_frame_unmask_lr.
-	* frame.c (struct frame_info): Add "masked" variable.
-	(frame_set_previous_pc_masked) (frame_get_pc_masked): New functions.
-	(fprint_frame): Check for masked pc.
-	* frame.h (frame_set_previous_pc_masked) (frame_get_pc_masked): New
-	declarations.
-	* python/py-framefilter.c (py_print_frame): Check for masked pc.
-	* stack.c (print_frame): Check for masked pc.
-
-2019-08-06  Tom Tromey  <tom@tromey.com>
-
-	* stabsread.c (patch_block_stabs, read_one_struct_field)
-	(read_enum_type): Use obstack_strndup.
-	* rust-exp.y (rust_parser::copy_name): Use obstack_strndup.
-	* gdb_obstack.h (obstack_strndup): Use obstack_strndup.
-	* dwarf2read.c (guess_full_die_structure_name)
-	(anonymous_struct_prefix): Use obstack_strndup.
-	* dbxread.c (cp_set_block_scope): Use obstack_strndup.
-	* c-exp.y (yylex): Use obstack_strndup.
-	* ada-exp.y (write_object_renaming, write_ambiguous_var)
-	(write_var_or_type): Use obstack_strndup.
-
-2019-08-06  Tom Tromey  <tom@tromey.com>
-
-	* symfile.c (reread_symbols): Use obstack_strdup.
-	* stabsread.c (read_type): Use obstack_strdup.
-	* gdb_obstack.h (obstack_strdup): New overload.
-	* dwarf2read.c (dwarf2_compute_name, create_dwo_unit_in_dwp_v1)
-	(create_dwo_unit_in_dwp_v2, build_error_marker_type)
-	(dwarf2_canonicalize_name): Use obstack_strdup.
-	* dbxread.c (read_dbx_symtab): Use obstack_strdup.
-	* cp-support.c (inspect_type, replace_typedefs_qualified_name):
-	Use obstack_strdup.
-
-2019-08-06  Tom Tromey  <tom@tromey.com>
-
-	* gdb_obstack.h (obstack_strdup): Define.
-	* gdb_obstack.c (obstack_strdup): Don't define.
-
-2019-08-06  Tom Tromey  <tom@tromey.com>
-
-	* xcoffread.c (SYMNAME_ALLOC, process_xcoff_symbol): Use
-	obstack_strdup.
-	* typeprint.c (typedef_hash_table::find_global_typedef): Use
-	obstack_strdup.
-	* symfile.c (allocate_compunit_symtab): Use obstack_strdup.
-	* stabsread.c (common_block_start): Use obstack_strdup.
-	* objfiles.c (set_objfile_main_name, objfile): Use
-	obstack_strdup.
-	* namespace.c (add_using_directive): Use obstack_strdup.
-	* mdebugread.c (parse_symbol, parse_type): Use obstack_strdup.
-	* jit.c (finalize_symtab): Use obstack_strdup.
-	* dwarf2read.c (fixup_go_packaging, dwarf2_physname)
-	(guess_partial_die_structure_name, partial_die_info::fixup)
-	(dwarf2_name): Use obstack_strdup.
-	* coffread.c (coff_read_struct_type, coff_read_enum_type): Use
-	obstack_strdup.
-	* c-exp.y (scan_macro_expansion): Use obstack_strdup.
-	* buildsym.c (buildsym_compunit::end_symtab_with_blockvector): Use
-	obstack_strdup.
-	* ada-lang.c (ada_decode_symbol): Use obstack_strdup.
-
-2019-08-07  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* unittests/help-doc-selftests.c: New file.
-	* Makefile.in: Add the new file.
-
-2019-08-07  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* cli/cli-decode.h (print_doc_line): Add for_value_prefix argument.
-	* cli/cli-decode.c (print_doc_line): Likewise.  It now prints
-	the full first line, except when FOR_VALUE_PREFIX.  In this case,
-	the trailing '.' is not output, and the first character is uppercased.
-	(print_help_for_command): Update call to print_doc_line.
-	(print_doc_of_command): Likewise.
-	* cli/cli-setshow.c (deprecated_show_value_hack): Likewise.
-	* cli/cli-option.c (append_indented_doc): Do not append newline.
-	(build_help_option): Append newline after first appended_indented_doc
-	only if a second call is done.
-	(build_help): Append 2 new lines before each option, except the first
-	one.
-	* compile/compile.c (_initialize_compile): Add new lines after
-	%OPTIONS%, when not at the end of the help.
-	Change help doc or code
-	producing the help doc to respect the invariants.
-	* maint-test-options.c (_initialize_maint_test_options): Likewise.
-	Also removed the new line after 'Options:', as all other commands
-	do not put an empty line between 'Options:' and the first option.
-	* printcmd.c (_initialize_printcmd): Likewise.
-	* stack.c (_initialize_stack): Likewise.
-	* interps.c (interpreter_exec_cmd): Fix "Usage:" line that was
-	incorrectly telling COMMAND is optional.
-	* ada-lang.c (_initialize_ada_language): Change help doc or code
-	producing the help doc to respect the invariants.
-	* ada-tasks.c (_initialize_ada_tasks): Likewise.
-	* breakpoint.c (_initialize_breakpoint): Likewise.
-	* cli/cli-cmds.c (_initialize_cli_cmds): Likewise.
-	* cli/cli-logging.c (_initialize_cli_logging): Likewise.
-	* cli/cli-setshow.c (_initialize_cli_setshow): Likewise.
-	* cli/cli-style.c (cli_style_option::add_setshow_commands,
-	_initialize_cli_style): Likewise.
-	* corelow.c (core_target_info): Likewise.
-	* dwarf-index-cache.c (_initialize_index_cache): Likewise.
-	* dwarf2read.c (_initialize_dwarf2_read): Likewise.
-	* filesystem.c (_initialize_filesystem): Likewise.
-	* frame.c (_initialize_frame): Likewise.
-	* gnu-nat.c (add_task_commands): Likewise.
-	* infcall.c (_initialize_infcall): Likewise.
-	* infcmd.c (_initialize_infcmd): Likewise.
-	* interps.c (_initialize_interpreter): Likewise.
-	* language.c (_initialize_language): Likewise.
-	* linux-fork.c (_initialize_linux_fork): Likewise.
-	* maint-test-settings.c (_initialize_maint_test_settings): Likewise.
-	* maint.c (_initialize_maint_cmds): Likewise.
-	* memattr.c (_initialize_mem): Likewise.
-	* printcmd.c (_initialize_printcmd): Likewise.
-	* python/lib/gdb/function/strfns.py (_MemEq, _StrLen, _StrEq,
-	_RegEx): Likewise.
-	* ravenscar-thread.c (_initialize_ravenscar): Likewise.
-	* record-btrace.c (_initialize_record_btrace): Likewise.
-	* record-full.c (_initialize_record_full): Likewise.
-	* record.c (_initialize_record): Likewise.
-	* regcache-dump.c (_initialize_regcache_dump): Likewise.
-	* regcache.c (_initialize_regcache): Likewise.
-	* remote.c (add_packet_config_cmd, init_remote_threadtests,
-	_initialize_remote): Likewise.
-	* ser-tcp.c (_initialize_ser_tcp): Likewise.
-	* serial.c (_initialize_serial): Likewise.
-	* skip.c (_initialize_step_skip): Likewise.
-	* source.c (_initialize_source): Likewise.
-	* stack.c (_initialize_stack): Likewise.
-	* symfile.c (_initialize_symfile): Likewise.
-	* symtab.c (_initialize_symtab): Likewise.
-	* target-descriptions.c (_initialize_target_descriptions): Likewise.
-	* top.c (init_main): Likewise.
-	* tracefile-tfile.c (tfile_target_info): Likewise.
-	* tracepoint.c (_initialize_tracepoint): Likewise.
-	* tui/tui-win.c (_initialize_tui_win): Likewise.
-	* utils.c (add_internal_problem_command): Likewise.
-	* valprint.c (value_print_option_defs): Likewise.
-
-2019-08-06  Frank Ch. Eigler  <fche@redhat.com>
-
-	PR build/24886
-	* configure.ac: Drop enable-libmcheck support.
-	* configure, config.in: Rebuild.
-	* libmcheck.m4: Remove.
-	* acinclude.m4: Don't include it.
-	* Makefile.in: Don't distribute it.
-	* top.c (print_gdb_configuration): Don't mention it.
-
-2019-08-06  Tom Tromey  <tom@tromey.com>
-
-	* utils.c (set_output_style): Sometimes pass stream to
-	emit_style_escape.
-	* ui-out.h (class ui_out) <can_emit_style_escape>: Declare.
-	* record-btrace.c (btrace_insn_history): Update.
-	* mi/mi-out.h (class mi_ui_out) <can_emit_style_escape>: New
-	method.
-	* disasm.h (gdb_pretty_print_disassembler): Add uiout parameter.
-	Update initializers.
-	<m_uiout>: New field.
-	<m_di>: Move lower.
-	* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn):
-	Remove "uiout" parameter.
-	(dump_insns): Update.
-	* cli-out.h (class cli_ui_out) <can_emit_style_escape>: Declare.
-	* cli-out.c (cli_ui_out::can_emit_style_escape): New method.
-
-2019-08-06  Christian Biesinger  <cbiesinger@google.com>
-
-	* symtab.c (symbol_cache_lookup): Change int to enum block_enum.
-	(error_in_psymtab_expansion): Likewise.
-	(lookup_symbol_via_quick_fns): Likewise.
-	(basic_lookup_transparent_type_quick): Likewise.
-	(basic_lookup_transparent_type_1): Likewise.
-
-2019-08-06  Tom Tromey  <tromey@adacore.com>
-
-	* source.c (last_source_error): Now bool.
-	(print_source_lines_base): Make "noprint" bool.  Only open
-	source file when last_source_visited changes.
-
-2019-08-06  Tom Tromey  <tromey@adacore.com>
-
-	* annotate.c (annotate_source_line): Use g_source_cache.
-	* source-cache.c (source_cache::get_plain_source_lines): Change
-	parameters.  Populate m_offset_cache.
-	(source_cache::ensure): New method.
-	(source_cache::get_line_charpos): New method.
-	(extract_lines): Move lower.  Change parameters.
-	(source_cache::get_source_lines): Move lower.
-	* source-cache.h (class source_cache): Update comment.
-	<get_line_charpos>: New method.
-	<get_source_lines>: Update comment.
-	<clear>: Clear m_offset_cache.
-	<get_plain_source_lines>: Change parameters.
-	<ensure>: New method
-	<m_offset_cache>: New member.
-	* source.c (forget_cached_source_info_for_objfile): Update.
-	(info_source_command): Use g_source_cache.
-	(find_source_lines, open_source_file_with_line_charpos): Remove.
-	(print_source_lines_base, search_command_helper): Use g_source_cache.
-	* source.h (open_source_file_with_line_charpos): Don't declare.
-	* symtab.h (struct symtab) <nlines, line_charpos>: Remove.
-	* tui/tui-source.c (tui_source_window::do_scroll_vertical):
-	Use g_source_cache.
-
-2019-08-06  Tom Tromey  <tromey@adacore.com>
-
-	* source-cache.c (source_cache::get_plain_source_lines):
-	Remove "first_line" and "last_line" parameters.
-	(source_cache::get_source_lines): Cache plain text.
-	* source-cache.h (class source_cache)
-	<get_plain_source_lines>: Update.
-
-2019-08-06  Tom Tromey  <tromey@adacore.com>
-
-	* source-cache.c (extract_lines): No longer a method.
-	Changed type of parameter.  Include final newline.
-	(selftests::extract_lines_test): New function.
-	(_initialize_source_cache): Likewise.
-	* source-cache.h (class source_cache)
-	<extract_lines>: Don't declare.
-
-2019-08-06  Tom Tromey  <tromey@adacore.com>
-
-	* breakpoint.c (init_breakpoint_sal): Update.
-	(breakpoint): Update.
-	* breakpoint.h (struct breakpoint) <filter>: Now a
-	unique_xmalloc_ptr.
+	* dwarf2/loc.c (class dwarf_evaluate_loc_desc)
+	<push_dwarf_reg_entry_value>: Remove assert.  Override
+	per_objfile with caller_per_objfile.
 
-2019-08-05  Christian Biesinger  <cbiesinger@google.com>
+2020-05-28  Tom de Vries  <tdevries@suse.de>
 
-	* NEWS: Mention dictionary access on blocks.
-	* python/py-block.c (blpy_getitem): New function.
-	(block_object_as_mapping): New struct.
-	(block_object_type): Use new struct for tp_as_mapping field.
-
-2019-08-05  Christian Biesinger  <cbiesinger@google.com>
-
-	* objfiles.h (objfile): Add a comment describing partial symbols.
-
-2019-08-05  Tom Tromey  <tromey@adacore.com>
-
-	* compile/compile.c (_initialize_compile): Use _(), not N_().
-	* thread.c (_initialize_thread): Use _(), not N_().
-	* stack.c (_initialize_stack): Use _(), not N_().
-	* printcmd.c (_initialize_printcmd): Use _(), not N_().
-
-2019-08-04  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* dwarf2read.c (struct dw2_symtab_iterator):
-	<want_specific_block>: Remove.
-	<block_index>: Change type to gdb::optional.
-	(dw2_symtab_iter_init): Remove WANT_SPECIFIC_BLOCK parameter,
-	change type of BLOCK_INDEX parameter to gdb::optional.
-	(dw2_symtab_iter_next): Re-write in function of gdb::optional.
-	(dw2_lookup_symbol): Don't pass argument for
-	WANT_SPECIFIC_BLOCK.
-	(dw2_expand_symtabs_for_function): Don't pass argument for
-	WANT_SPECIFIC_BLOCK, pass empty optional for BLOCK_INDEX.
-	(class dw2_debug_names_iterator)
-	<dw2_debug_names_iterator>: Remove WANT_SPECIFIC_BLOCK
-	parameter, change BLOCK_INDEX type to gdb::optional.
-	<m_want_specific_block>: Remove.
-	<m_block_index>: Change type to gdb::optional.
-	(dw2_debug_names_iterator::next): Change type of IS_STATIC to
-	gdb::optional.  Re-write in function of gdb::optional.
-	(dw2_debug_names_lookup_symbol): Don't pass argument for
-	WANT_SPECIFIC_BLOCK.
-	(dw2_debug_names_expand_symtabs_for_function): Don't pass
-	argument for WANT_SPECIFIC_BLOCK, pass empty optional for
-	BLOCK_INDEX.
-
-2019-08-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-        * NEWS: Mention changes to "info sources" command.
-
-2019-08-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* symtab.c (filename_partial_match_opts): New struct type.
-	(struct output_source_filename_data): New members
-	regexp, c_regexp, partial_match.
-	(output_source_filename): Use new members to decide to print file.
-	(info_sources_option_defs): New variable.
-	(make_info_sources_options_def_group, print_info_sources_header,
-	info_sources_command_completer):
-	New functions.
-	(info_sources_command): Read new optional arguments.
-	(_initialize_symtab): Update info sources help.
-
-2019-08-02  Alexandre Oliva <oliva@adacore.com>
-
-	* ada-lang.c (exception_support_info_v0): Renamed from...
-	(default_exception_support_info): ... this.  Create new
-	definition for v1.
-	(ada_has_this_exception_support): Look up catch_handlers_sym.
-	(ada_exception_support_info_sniffer): Try v0 after default.
-
-2019-08-01  Tom Tromey  <tromey@adacore.com>
-
-	* ia64-libunwind-tdep.h (struct libunwind_descr): Include
-	gdbarch.h.
-
-2019-08-01  Christian Biesinger  <cbiesinger@google.com>
-
-	* s12z-tdep.c: Fix include path for s12z-opc.h.
+	* dwarf2/read.c	(dw2_symtab_iter_next, dw2_expand_marked_cus): Limit
+	PR gold/15646 workaround to symbol kind "type".
 
-2019-08-01  Alan Hayward  <alan.hayward@arm.com>
+2020-05-27  Tom Tromey  <tromey@adacore.com>
 
-	* NEWS: Require GNU make 3.82.
+	* dwarf2/read.c (load_partial_dies): Use add_partial_symbol.
 
-2019-07-16  Tom Tromey  <tom@tromey.com>
+2020-05-27  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-wingeneral.h (tui_copy_win, tui_box_win): Don't
-	declare.
+	* dwarf2/abbrev.h (struct abbrev_table) <lookup_abbrev>: Inline.
+	Use htab_find_with_hash.
+	<add_abbrev>: Remove "abbrev_number" parameter.
+	* dwarf2/abbrev.c (abbrev_table::add_abbrev): Remove
+	"abbrev_number" parameter.  Use htab_find_slot_with_hash.
+	(hash_abbrev): Add comment.
+	(abbrev_table::lookup_abbrev): Move to header file.
+	(abbrev_table::read): Update.
 
-2019-07-30  Tom Tromey  <tromey@adacore.com>
+2020-05-27  Tom Tromey  <tromey@adacore.com>
 
-	* block.c (contained_in): Remove BLOCK_FUNCTION check.
+	* dwarf2/read.c (struct partial_die_info) <name>: Declare new
+	method.
+	<canonical_name>: New member.
+	<raw_name>: Rename from "name".
+	(partial_die_info): Initialize canonical_name.
+	(scan_partial_symbols): Check raw_name.
+	(partial_die_parent_scope, partial_die_full_name)
+	(add_partial_symbol, add_partial_subprogram)
+	(add_partial_enumeration, load_partial_dies): Use "name" method.
+	(partial_die_info::name): New method.
+	(partial_die_info::read, guess_partial_die_structure_name)
+	(partial_die_info::fixup): Update.
 
-2019-07-30  Kevin Buettner  <kevinb@redhat.com>
+2020-05-27  Tom Tromey  <tromey@adacore.com>
 
-	* printcmd.c (print_address_symbolic): Print negative offsets.
-	(build_address_symbolic): Force signed arithmetic when computing
-	offset.
+	* dwarf2/attribute.h (struct attribute) <form_is_ref>: Inline.
+	<get_ref_die_offset>: Inline.
+	<get_ref_die_offset_complaint>: New method.
+	* dwarf2/attribute.c (attribute::form_is_ref): Move to header.
+	(attribute::get_ref_die_offset_complaint): Rename from
+	get_ref_die_offset.  Just issue complaint.
 
-2019-07-30  Christian Biesinger  <cbiesinger@google.com>
+2020-05-27  Hannes Domani  <ssbssa@yahoo.de>
 
-	PR/24474: Add a function to lookup static variables.
-	* NEWS: Mention this new function.
-	* python/py-symbol.c (gdbpy_lookup_static_symbol): New function.
-	* python/python-internal.h (gdbpy_lookup_static_symbol): New function.
-	* python/python.c (python_GdbMethods): Add new function.
+	* cli/cli-cmds.c (shell_escape): Move exit_status_set_internal_vars.
 
-2019-07-29  Christian Biesinger  <cbiesinger@google.com>
+2020-05-27  Hannes Domani  <ssbssa@yahoo.de>
 
-	* NEWS: Mention new functions Objfile.lookup_{global,static}_symbol.
-	* python/py-objfile.c (objfpy_lookup_global_symbol): New function.
-	(objfpy_lookup_static_symbol): New function.
-	(objfile_object_methods): Add new functions.
+	* exec.c (exec_file_attach): Use errno value of first openp failure.
 
-2019-07-29  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+2020-05-27  Hannes Domani  <ssbssa@yahoo.de>
 
-	* NEWS: Mention 'set|show print frame-info'.  Mention new
-	'presence' value for 'frame-arguments'.  Mention new '-frame-info'
-	backtrace argument.  Mention that python frame filtering code
-	is now consistent with what 'backtrace' command prints.
+	* nat/windows-nat.c (windows_thread_info::~windows_thread_info):
+	Don't close thread handle.
 
-2019-07-29  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+2020-05-27  Tom Tromey  <tom@tromey.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
 
-	* frame.h (enum print_what): New value 'SHORT_LOCATION', update
-	comments.
-	(print_frame_info_auto, print_frame_info_source_line,
-	print_frame_info_location, print_frame_info_source_and_location,
-	print_frame_info_location_and_address, print_frame_info_short_location):
-	New declarations.
-	(struct frame_print_options): New member print_frame_info.
-	* extension.h (enum ext_lang_frame_args): New value CLI_PRESENCE.
-	* stack.h (get_user_print_what_frame_info): New declaration.
-	(frame_show_address): New declaration.
-	* stack.c (print_frame_arguments_choices): New value 'presence'.
-	(print_frame_info_auto, print_frame_info_source_line,
-	print_frame_info_location, print_frame_info_source_and_location,
-	print_frame_info_location_and_address, print_frame_info_short_location,
-	print_frame_info_choices, print_frame_info_print_what): New definitions.
-	(print_frame_args): Only print dots for args if print frame-arguments
-	is 'presence'.
-	(frame_print_option_defs): New element for "frame-info".
-	(get_user_print_what_frame_info): New function.
-	(frame_show_address): Make non static.  Move comment to stack.h.
-	(print_frame_info_to_print_what): New function.
-	(print_frame_info): Update comment.  Use fp_opts.print_frame_info
-	to decide what to print.
-	(backtrace_command_1): Handle the new print_frame_arguments_presence
-	value.
-	(_initialize_stack): Call add_setshow_enum_cmd for frame-info.
-	* python/py-framefilter.c (py_print_args): Handle CLI_PRESENCE.
-	(py_print_frame): In non-mi mode, use LOCATION as default for
-	print_what, similarly to frame information printed directly by
-	backtrace command. Handle frame-info user option in non MI mode.
+	* objfiles.h (struct objfile) <partial_symtabs>: Now a
+	shared_ptr.
+	* dwarf2/read.h (struct dwarf2_per_objfile) <partial_symtabs>: New
+	member.
+	* dwarf2/read.c (dwarf2_per_bfd_bfd_data_key,
+	dwarf2_per_bfd_objfile_data_key>: New globals.
+	(dwarf2_has_info): Use shared dwarf2_per_bfd if possible.
+	(dwarf2_get_section_info): Use get_dwarf2_per_objfile.
+	(dwarf2_initialize_objfile): Consider cases where per_bfd can be
+	shared.
+	(dwarf2_build_psymtabs): Set objfile::partial_symtabs and
+	short-circuit when sharing.
+	(dwarf2_build_psymtabs): Set dwarf2_per_objfile::partial_symtabs.
+	(dwarf2_psymtab::expand_psymtab): Use free_cached_comp_units.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.h (struct dwarf2_per_bfd) <line_header_hash>: Move
+	to...
+	(struct dwarf2_per_objfile) <line_header_hash>: ... here.
+	* dwarf2/read.c (handle_DW_AT_stmt_list): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (struct mapped_index_base) <symbol_name_at,
+	build_name_components, find_name_components_bounds>:
+	Add per_objfile parameter.
+	(struct mapped_index) <symbol_name_at>: Likewise.
+	(struct mapped_debug_names): Remove constructor.
+	<dwarf2_per_objfile>: Remove field.
+	<namei_to_name, symbol_name_at>: Add per_objfile parameter.
+	(mapped_index_base::find_name_components_bounds,
+	mapped_index_base::build_name_components,
+	dw2_expand_symtabs_matching_symbol): Likewise.
+	(class mock_mapped_index) <symbol_name_at>: Likewise.
+	(check_match): Likewise.
+	(check_find_bounds_finds): Likewise.
+	(test_mapped_index_find_name_component_bounds): Update.
+	(CHECK_MATCH): Update.
+	(dw2_expand_symtabs_matching): Update.
+	(class dw2_debug_names_iterator) <dw2_debug_names_iterator>: Add
+	per_objfile parameter.
+	<find_vec_in_debug_names>: Likewise.
+	<m_per_objfile>: New field.
+	(mapped_debug_names::namei_to_name): Add dwarf2_per_objfile
+	parameter.
+	(dw2_debug_names_iterator::find_vec_in_debug_names): Likewise.
+	(dw2_debug_names_iterator::next): Update.
+	(dw2_debug_names_lookup_symbol): Update.
+	(dw2_debug_names_expand_symtabs_for_function): Update.
+	(dw2_debug_names_map_matching_symbols): Update.
+	(dw2_debug_names_expand_symtabs_matching): Update.
+	(dwarf2_read_debug_names): Update.
 
-2019-07-27  Kevin Buettner  <kevinb@redhat.com>
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
 
-	* linux-thread-db.c (thread_db_target::thread_handle_to_thread_info):
-	Add case for debugging 32-bit target on 64-bit host.  Revise
-	comment.
+	* dwarf2/read.h (struct dwarf2_cu): Forward-declare.
+	(struct dwarf2_per_bfd) <free_cached_comp_units>: Remove,
+	move to dwarf2_per_objfile.
+	<read_in_chain>: Remove.
+	(struct dwarf2_per_objfile) <get_cu, set_cu, remove_cu,
+	remove_all_cus, age_comp_units>: New methods.
+	<m_dwarf2_cus>: New member.
+	(struct dwarf2_per_cu_data) <cu>: Remove.
+	* dwarf2/read.c (struct dwarf2_cu) <read_in_chain>: Remove.
+	(age_cached_comp_units, free_one_cached_comp_unit): Remove,
+	moved to methods of dwarf2_per_objfile.
+	(dwarf2_clear_marks): Remove.
+	(dwarf2_queue_item::~dwarf2_queue_item): Update.
+	(dwarf2_per_bfd::~dwarf2_per_bfd): Don't free dwarf2_cus.
+	(dwarf2_per_bfd::free_cached_comp_units): Remove.
+	(dwarf2_per_objfile::remove_all_cus): New.
+	(class free_cached_comp_units) <~free_cached_comp_units>:
+	Update.
+	(load_cu): Update.
+	(dw2_do_instantiate_symtab): Adjust.
+	(fill_in_sig_entry_from_dwo_entry): Adjust.
+	(cutu_reader::init_tu_and_read_dwo_dies): Update.
+	(cutu_reader::cutu_reader): Likewise.
+	(cutu_reader::keep): Use dwarf2_per_objfile::set_cu.
+	(cutu_reader::cutu_reader): Use dwarf2_per_objfile::get_cu.
+	(process_psymtab_comp_unit): Use dwarf2_per_objfile::remove_cu
+	and dwarf2_per_objfile::age_comp_units.
+	(load_partial_comp_unit): Update.
+	(maybe_queue_comp_unit): Use dwarf2_per_objfile::get_cu.
+	(process_queue): Likewise.
+	(find_partial_die): Use dwarf2_per_objfile::get_cu instead of cu
+	backlink.
+	(dwarf2_read_addr_index): Likewise.
+	(follow_die_offset): Likewise.
+	(dwarf2_fetch_die_loc_sect_off): Likewise.
+	(dwarf2_fetch_constant_bytes): Likewise.
+	(dwarf2_fetch_die_type_sect_off): Likewise.
+	(follow_die_sig_1): Likewise.
+	(load_full_type_unit): Likewise.
+	(read_signatured_type): Likewise.
+	(dwarf2_cu::dwarf2_cu): Don't set cu field.
+	(dwarf2_cu::~dwarf2_cu): Remove.
+	(dwarf2_per_objfile::get_cu): New.
+	(dwarf2_per_objfile::set_cu): New.
+	(age_cached_comp_units): Rename to...
+	(dwarf2_per_objfile::age_comp_units): ... this.  Adjust
+	to std::unordered_map.
+	(free_one_cached_comp_unit): Rename to...
+	(dwarf2_per_objfile::remove_cu): ... this.  Adjust
+	to std::unordered_map.
+	(dwarf2_per_objfile::~dwarf2_per_objfile): New.
+	(dwarf2_mark_helper): Use dwarf2_per_objfile::get_cu, expect
+	a dwarf2_per_objfile in data.
+	(dwarf2_mark): Pass dwarf2_per_objfile in data to htab_traverse.
+	(dwarf2_clear_marks): Remove.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (class cutu_reader) <cutu_reader>: Replace
+	`int use_existing_cu` parameter with `dwarf2_cu *existing_cu`.
+	(init_tu_and_read_dwo_dies): Likewise.
+	(cutu_reader::init_tu_and_read_dwo_dies): Likewise.
+	(cutu_reader::cutu_reader): Likewise.
+	(load_partial_comp_unit): Likewise.
+	(process_psymtab_comp_unit): Update.
+	(build_type_psymtabs_1): Update.
+	(process_skeletonless_type_unit): Update.
+	(load_full_comp_unit): Update.
+	(find_partial_die): Update.
+	(dwarf2_read_addr_index): Update.
+	(read_signatured_type): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.h (struct dwarf2_per_cu_data) <m_header,
+	m_header_read_in>: New fields.
+	<get_header>: New method.
+	* dwarf2/read.c (per_cu_header_read_in): Remove.
+	(dwarf2_per_cu_data::get_header): New.
+	(dwarf2_per_cu_data::addr_size): Update.
+	(dwarf2_per_cu_data::offset_size): Update.
+	(dwarf2_per_cu_data::ref_addr_size): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (load_cu): Return dwarf2_cu.
+	(dw2_do_instantiate_symtab): Update.
+	(queue_and_load_all_dwo_tus): Change parameter from
+	dwarf2_per_cu_data to dwarf2_cu.
+	(dwarf2_fetch_die_loc_sect_off): Update.
+	(dwarf2_fetch_constant_bytes): Update.
+	(dwarf2_fetch_die_type_sect_off): Update.
 
-2019-07-27  Kevin Buettner  <kevinb@redhat.com>
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* infrun.c (fill_in_stop_func): Use find_pc_partial_function
-	instead of find_function_entry_range_from_pc.
+	* dwarf2/read.c (process_full_comp_unit,
+	process_full_type_unit): Remove per_cu, per_objfile paramters.
+	Add dwarf2_cu parameter.
+	(process_queue): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (create_cu_from_index_list): Replace
+	dwarf2_per_objfile parameter with dwarf2_per_bfd.
+	(create_cus_from_index_list): Likewise.
+	(create_cus_from_index): Likewise.
+	(create_signatured_type_table_from_index): Likewise.
+	(create_cus_from_debug_names_list): Likewise.
+	(create_cus_from_debug_names): Likewise.
+	(dwarf2_read_gdb_index): Update.
+	(dwarf2_read_debug_names): Update.
 
-2019-07-27  Kevin Buettner  <kevinb@redhat.com>
+2020-05-27  Tom Tromey  <tom@tromey.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
 
-	* stack.c (find_frame_funname): Remove code which preferred
-	minsym over symtab sym in "certain pathological cases".
-
-	* valprint.h (build_address_symbolic): Add "prefer_sym_over_minsym"
-	parameter.  Change type of "do_demangle" to bool.
-	* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn):
-	Pass suitable "prefer_sym_over_minsym" flag to
-	build_address_symbolic().  Don't output "+" for negative offsets.
-	* printcmd.c (print_address_symbolic): Update invocation of
-	build_address_symbolic to include a "prefer_sym_over_minsym"
-	flag.
-	(build_address_symbolic): Add "prefer_sym_over_minsym" parameter.
-	Restrict cases in which use of minimal symbol is preferred to that
-	of a found symbol.  Update comments.
+	* dwarf2/read.h (struct dwarf2_per_objfile)
+	<get_type_for_signatured_type, set_type_for_signatured_type>:
+	New methods.
+	<m_type_map>: New member.
+	(struct signatured_type) <type>: Remove.
+	* dwarf2/read.c
+	(dwarf2_per_objfile::get_type_for_signatured_type,
+	dwarf2_per_objfile::set_type_for_signatured_type): New.
+	(get_signatured_type): Use new methods.
+
+2020-05-27  Tom Tromey  <tom@tromey.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.h (struct type_unit_group_unshareable): New.
+	(struct dwarf2_per_objfile) <type_units>: New member.
+	<get_type_unit_group_unshareable>: New method.
+	* dwarf2/read.c (struct type_unit_group) <compunit_symtab,
+	num_symtabs, symtabs>: Remove; move to
+	type_unit_group_unshareable.
+	(dwarf2_per_objfile::get_type_unit_group_unshareable): New.
+	(process_full_type_unit, dwarf2_cu::setup_type_unit_groups)
+	(dwarf2_cu::setup_type_unit_groups): Use type_unit_group_unshareable.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.h (struct dwarf2_per_cu_data):
+	<dwarf2_per_objfile>: Remove.
+	* dwarf2/read.c (create_cu_from_index_list): Don't assign
+	dwarf2_per_objfile.
+	(create_signatured_type_table_from_index): Likewise.
+	(create_signatured_type_table_from_debug_names): Likewise.
+	(create_debug_type_hash_table): Likewise.
+	(fill_in_sig_entry_from_dwo_entry): Likewise.
+	(create_type_unit_group): Likewise.
+	(read_comp_units_from_section): Likewise.
+	(create_cus_hash_table): Likewise.
 
-	* dwarf2-frame.c (dwarf2_frame_cache): Don't decode FDE instructions
-	for entry pc when entry pc is out of range for that FDE.
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-07-26  Brian Callahan  <bcallah@openbsd.org>
+	* dwarf2/read.c (process_psymtab_comp_unit): Remove reference to
+	dwarf2_per_cu_data::dwarf2_per_objfile.
+	(compute_compunit_symtab_includes): Likewise.
+	(dwarf2_cu::start_symtab): Likewise.
 
-	PR gdb/24839:
-	* gdb/obsd-nat.c (obsd_nat_target::pid_to_str): Fix typo in return
-	type.
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-07-25  Christian Biesinger  <cbiesinger@google.com>
+	* dwarf2/read.h (dwarf2_get_die_type): Add dwarf2_per_objfile
+	parameter.
+	* dwarf2/read.c (get_die_type_at_offset): Likewise.
+	(read_namespace_alias): Update.
+	(lookup_die_type): Update.
+	(dwarf2_get_die_type): Add dwarf2_per_objfile parameter.
+	* dwarf2/loc.c (class dwarf_evaluate_loc_desc) <get_base_type>:
+	Update.
+	(disassemble_dwarf_expression): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.h (struct dwarf2_queue_item): Add
+	dwarf2_per_objfile parameter, assign new parameter.
+	<per_objfile>: New field.
+	* dwarf2/read.c (free_one_cached_comp_unit): Add
+	dwarf2_per_objfile parameter.
+	(queue_comp_unit): Likewise.
+	(dw2_do_instantiate_symtab): Update.
+	(process_psymtab_comp_unit): Update.
+	(maybe_queue_comp_unit): Add dwarf2_per_objfile parameter.
+	(process_imported_unit_die): Update.
+	(queue_and_load_dwo_tu): Update.
+	(follow_die_offset): Update.
+	(follow_die_sig_1): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.h (struct dwarf2_per_cu_data) <objfile>: Remove.
+	* dwarf2/read.c (dwarf2_compute_name): Pass per_objfile down.
+	(read_call_site_scope): Assign per_objfile.
+	(dwarf2_per_cu_data::objfile): Remove.
+	* gdbtypes.h (struct call_site) <per_objfile>: New member.
+	* dwarf2/loc.h (dwarf2_evaluate_loc_desc): Add
+	dwarf2_per_objfile parameter.
+	* dwarf2/loc.c (dwarf2_evaluate_loc_desc_full): Add
+	dwarf2_per_objfile parameter.
+	(dwarf_expr_reg_to_entry_parameter): Add output
+	dwarf2_per_objfile parameter.
+	(locexpr_get_frame_base): Update.
+	(class dwarf_evaluate_loc_desc) <get_tls_address>: Update.
+	<push_dwarf_reg_entry_value>: Update.
+	<call_site_to_target_addr>: Update.
+	(dwarf_entry_parameter_to_value): Add dwarf2_per_objfile
+	parameter.
+	(value_of_dwarf_reg_entry): Update.
+	(rw_pieced_value): Update.
+	(indirect_synthetic_pointer): Update.
+	(dwarf2_evaluate_property): Update.
+	(dwarf2_loc_desc_get_symbol_read_needs): Add dwarf2_per_objfile
+	parameter.
+	(locexpr_read_variable): Update.
+	(locexpr_get_symbol_read_needs): Update.
+	(loclist_read_variable): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.h (dwarf2_fetch_die_loc_sect_off,
+	dwarf2_fetch_die_loc_cu_off, dwarf2_fetch_constant_bytes,
+	dwarf2_fetch_die_type_sect_off): Add dwarf2_per_objfile
+	parameter.
+	* dwarf2/read.c (dwarf2_fetch_die_loc_sect_off,
+	dwarf2_fetch_die_loc_cu_off, dwarf2_fetch_constant_bytes,
+	dwarf2_fetch_die_type_sect_off): Add dwarf2_per_objfile
+	parameter.
+	* dwarf2/loc.c (indirect_synthetic_pointer, per_cu_dwarf_call,
+	sect_variable_value): Add dwarf2_per_objfile parameter.
+	(class dwarf_evaluate_loc_desc) <dwarf_call,
+	dwarf_variable_value>: Update.
+	(fetch_const_value_from_synthetic_pointer): Add
+	dwarf2_per_objfile parameter.
+	(fetch_const_value_from_synthetic_pointer): Update.
+	(coerced_pieced_ref): Update.
+	(class symbol_needs_eval_context) <dwarf_call,
+	dwarf_variable_value>: Update.
+	(dwarf2_compile_expr_to_ax): Update.
 
-	* python/py-objfile.c (add_separate_debug_file): Fix comment about
-	this function's Python signature.
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
 
+	* dwarf2/loc.c (allocate_piece_closure): Add dwarf2_per_objfile
+	parameter.
+	(dwarf2_evaluate_loc_desc_full): Update.
 
-2019-07-24  Christian Biesinger  <cbiesinger@google.com>
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
 
-	* compile/compile-object-load.c (compile_object_load): Pass GLOBAL_SCOPE.
-	* solib-spu.c (spu_lookup_lib_symbol): Pass GLOBAL_SCOPE.
-	* solib-svr4.c (elf_lookup_lib_symbol): Pass GLOBAL_SCOPE.
-	* symtab.c (lookup_global_symbol_from_objfile): Add a scope parameter.
-	* symtab.h (lookup_global_symbol_from_objfile): Likewise.
+	* dwarf2/read.h (dwarf2_read_addr_index): Add dwarf2_per_objfile
+	parameter.
+	* dwarf2/read.c (dwarf2_read_addr_index): Likewise.
+	* dwarf2/loc.c (decode_debug_loclists_addresses): Add
+	dwarf2_per_objfile parameter.
+	(decode_debug_loc_dwo_addresses): Likewise.
+	(dwarf2_find_location_expression): Update.
+	(class dwarf_evaluate_loc_desc) <get_addr_index>: Update.
+	(locexpr_describe_location_piece): Add dwarf2_per_objfile
+	parameter.
+	(disassemble_dwarf_expression): Add dwarf2_per_objfile
+	parameter.
+	(locexpr_describe_location_1): Likewise.
+	(locexpr_describe_location): Update.
 
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-07-24  Yoshinori Sato  <ysato@users.sourceforge.jp>
+	* dwarf2/read.h (struct dwarf2_per_cu_data) <text_offset>:
+	Remove.
+	* dwarf2/read.c (dwarf2_per_cu_data::text_offset): Remove.
+	* dwarf2/loc.c (dwarf2_find_location_expression): Update.
+	(dwarf2_compile_property_to_c): Update.
+	(dwarf2_compile_expr_to_ax): Add dwarf2_per_objfile parameter,
+	use text offset from objfile.
+	(locexpr_tracepoint_var_ref): Update.
+	(locexpr_generate_c_location): Update.
+	(loclist_describe_location): Update.
+	(loclist_tracepoint_var_ref): Update.
+	* dwarf2/compile.h (compile_dwarf_bounds_to_c): Add
+	dwarf2_per_objfile parameter.
+	* dwarf2/loc2c.c (do_compile_dwarf_expr_to_c): Likewise,
+	use text offset from objfile.
+	(compile_dwarf_expr_to_c): Add dwarf2_per_objfile parameter.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/expr.h (struct dwarf_expr_context)
+	<dwarf_expr_context>: Add dwarf2_per_objfile parameter.
+	<offset>: Remove.
+	<per_objfile>: New member.
+	* dwarf2/expr.c (dwarf_expr_context::dwarf_expr_context): Add
+	dwarf2_per_objfile parameter.  Don't set offset, set
+	per_objfile.
+	(dwarf_expr_context::execute_stack_op): Use offset from objfile.
+	* dwarf2/frame.c (dwarf2_frame_find_fde): Return (by parameter)
+	a dwarf2_per_objfile object instead of an offset.
+	(class dwarf_expr_executor) <dwarf_expr_executor>: Add
+	constructor.
+	(execute_stack_op): Add dwarf2_per_objfile parameter, pass it
+	to dwarf2_expr_executor constructor.  Don't set offset.
+	(dwarf2_fetch_cfa_info): Update.
+	(struct dwarf2_frame_cache) <text_offset>: Remove.
+	<per_objfile>: New field.
+	(dwarf2_frame_cache): Update.
+	(dwarf2_frame_prev_register): Update.
+	* dwarf2/loc.c (class dwarf_evaluate_loc_desc)
+	<dwarf_evaluate_loc_desc>: Add constructor.
+	(dwarf2_evaluate_loc_desc_full): Update.
+	(dwarf2_locexpr_baton_eval): Update.
+	(class symbol_needs_eval_context) <symbol_needs_eval_context>:
+	Add constructor.
+	(dwarf2_loc_desc_get_symbol_read_needs): Update.
 
-	* h8300-tdep.c (h8300_register_name_common): New.
-	h8300_register_name): Use h8300_register_name_common.
-	(h8300s_register_name): Likewise.
-	(h8300sx_register_name): Likewise.
-	(h8300h_register_nam): New.
-	(h8300_gdbarch_init): Use h8300h_register_name in h8300h machine.
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
 
+	* dwarf2/read.h (struct dwarf2_per_cu_data) <addr_type,
+	addr_sized_int_type>: Move to dwarf2_cu.
+	<int_type>: Move to dwarf2_per_objfile.
+	(struct dwarf2_per_objfile) <int_type>: Move here.
+	* dwarf2/read.c (struct dwarf2_cu) <addr_type,
+	addr_sized_int_type>: Move here.
+	(read_func_scope): Update.
+	(read_array_type): Update.
+	(read_tag_string_type): Update.
+	(attr_to_dynamic_prop): Update.
+	(dwarf2_per_cu_data::int_type): Rename to...
+	(dwarf2_per_objfile::int_type): ... this.
+	(dwarf2_per_cu_data::addr_sized_int_type): Rename to...
+	(dwarf2_cu::addr_sized_int_type): ... this.
+	(read_subrange_type): Update.
+	(dwarf2_per_cu_data::addr_type): Rename to...
+	(dwarf2_cu::addr_type): ... this.
+	(set_die_type): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (queue_and_load_all_dwo_tus): Access per_objfile
+	data through per_cu->cu.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (lookup_dwo_comp_unit): Change
+	dwarf2_per_cu_data parameter fo dwarf2_cu.
+	(lookup_dwo_type_unit): Likewise.
+	(read_cutu_die_from_dwo): Likewise.
+	(lookup_dwo_unit): Likewise.
+	(open_and_init_dwo_file): Likewise.
+	(lookup_dwo_cutu): Likewise.
+	(lookup_dwo_comp_unit): Likewise.
+	(lookup_dwo_type_unit): Likewise.
+	(cutu_reader::init_tu_and_read_dwo_dies): Update.
+	(cutu_reader::cutu_reader): Update.
 
-2019-07-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
 
-	* arm-tdep.c (arm_skip_cmse_entry): New function.
-	(arm_is_sgstubs_section): New function.
-	(arm_skip_stub): Add call to arm_skip_cmse_entry function.
+	* dwarf2/read.c (process_full_comp_unit): Add dwarf2_per_objfile
+	parameter.
+	(process_full_type_unit): Likewise.
+	(process_queue): Update.
 
-2019-07-22  Tom Tromey  <tom@tromey.com>
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-win.c (tui_win_info::make_invisible_and_set_new_height):
-	Don't self-assign.
+	* dwarf2/read.c (recursively_compute_inclusions): Add
+	dwarf2_per_objfile parameter.
+	(compute_compunit_symtab_includes): Likewise.
+	(process_cu_includes): Update.
 
-2019-07-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
 
-	* c-typeprint.c (c_print_typedef): Pass -1 instead of 0 to
-	type_print.
+	* dwarf2/read.c (create_partial_symtab): Add dwarf2_per_objfile
+	parameter.
+	(create_type_unit_group): Update.
+	(process_psymtab_comp_unit_reader): Update.
+	(build_type_psymtabs_reader): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (cutu_reader::keep): Access dwarf2_per_objfile
+	object through m_this_cu->cu.
+
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (queue_and_load_dwo_tu): Expect a dwarf2_cu as
+	the info parameter.
+	(queue_and_load_all_dwo_tus): Pass per_cu->cu.
+
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (class cutu_reader) <cutu_reader>: Add
+	per_objfile parameter.
+	(load_full_type_unit): Add per_objfile parameter.
+	(read_signatured_type): Likewise.
+	(load_full_comp_unit): Likewise.
+	(load_cu): Likewise.
+	(dw2_do_instantiate_symtab): Likewise.
+	(dw2_get_file_names): Likewise.
+	(dw2_map_symtabs_matching_filename): Update.
+	(dw_expand_symtabs_matching_file_matcher): Update.
+	(dw2_map_symbol_filenames): Update.
+	(process_psymtab_comp_unit): Add per_objfile parameter.
+	(build_type_psymtabs_1): Update.
+	(process_skeletonless_type_unit): Update.
+	(dwarf2_build_psymtabs_hard): Update.
+	(load_partial_comp_unit): Add per_objfile parameter.
+	(scan_partial_symbols): Update.
+	(load_full_comp_unit): Add per_objfile parameter.
+	(process_imported_unit_die): Update.
+	(create_cus_hash_table): Update.
+	(find_partial_die): Update.
+	(dwarf2_read_addr_index): Update.
+	(follow_die_offset): Update.
+	(dwarf2_fetch_die_loc_sect_off): Update.
+	(dwarf2_fetch_constant_bytes): Update.
+	(dwarf2_fetch_die_type_sect_off): Update.
+	(follow_die_sig_1): Update.
+	(load_full_type_unit): Add per_objfile parameter.
+	(read_signatured_type): Likewise.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (lookup_dwo_unit): Use bfd_get_filename instead
+	of objfile_name.
+
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.h (struct dwarf2_per_bfd) <obfd>: New member.
+	(dwarf2_get_dwz_file): Replace parameter with dwarf2_per_bfd.
+	* dwarf2/read.c (dwarf2_per_bfd::dwarf2_per_bfd): Assign obfd
+	field.
+	(dwarf2_get_dwz_file): Replace parameter with dwarf2_per_bfd.
+	(create_cus_from_index): Update.
+	(dwarf2_read_gdb_index): Update.
+	(create_cus_from_debug_names): Update.
+	(dwarf2_read_debug_names): Update.
+	(get_abbrev_section_for_cu): Update.
+	(create_all_comp_units): Update.
+	(read_attribute_value): Update.
+	(get_debug_line_section): Update.
+	* dwarf2/index-cache.c (index_cache::store): Update.
+	* dwarf2/index-write.c (save_gdb_index_command): Update.
+	* dwarf2/macro.c (dwarf_decode_macro_bytes): Update.
 
-2019-07-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* symtab.c (search_symbols): Adjust msymbol matching type arrays
-	so that GDB doesn't match any msymbols when searching in the
-	TYPES_DOMAIN.
-	(print_symbol_info): Print using typedef_print or type_print based
-	on the type of the symbol.  Add updated FIXME comment moved from...
-	(_initialize_symtab): ... move and update FIXME comment to above.
+	* dwarf2/read.h (struct dwarf2_per_cu_data) <per_bfd>: New
+	member.
+	* dwarf2/read.c (dwarf2_per_bfd::allocate_per_cu): Initialize
+	dwarf2_per_cu_data::per_bfd.
+	(dwarf2_per_bfd::allocate_signatured_type): Likewise.
+	(create_type_unit_group): Likewise.
+	(queue_comp_unit): Remove reference to
+	per_cu->dwarf2_per_objfile.
+	(maybe_queue_comp_unit): Likewise.
+	(fill_in_sig_entry_from_dwo_entry): Assign new field.
+	(create_cus_hash_table): Assign new field.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c: Replace
+	dwarf2_cu->per_cu->dwarf2_per_objfile references with
+	dwarf2_cu->per_objfile throughout.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (dw2_do_instantiate_symtab): Add per_objfile
+	parameter, don't use per_cu->dwarf2_per_objfile.
+	(dw2_instantiate_symtab): Likewise.
+	(dw2_find_last_source_symtab): Update.
+	(dw2_map_expand_apply): Update.
+	(dw2_lookup_symbol): Update.
+	(dw2_expand_symtabs_for_function): Update.
+	(dw2_expand_all_symtabs): Update.
+	(dw2_expand_symtabs_with_fullname): Update.
+	(dw2_expand_symtabs_matching_one): Add per_objfile parameter,
+	don't use per_cu->dwarf2_per_objfile.
+	(dw2_expand_marked_cus): Update.
+	(dw2_find_pc_sect_compunit_symtab): Update.
+	(dw2_debug_names_lookup_symbol): Update.
+	(dw2_debug_names_expand_symtabs_for_function): Update.
+	(dw2_debug_names_map_matching_symbols): Update.
+	(dwarf2_psymtab::expand_psymtab): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (struct dwarf2_cu) <dwarf2_cu>: Add parameter.
+	<per_objfile>: New member.
+	(class cutu_reader) <init_tu_and_read_dwo_dies>: Add parameter.
+	(cutu_reader::init_tu_and_read_dwo_dies): Add parameter, update
+	call to dwarf2_cu.
+	(cutu_reader::cutu_reader): Update.
+	(dwarf2_cu::dwarf2_cu): Add parameter, initialize per_objfile.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.h (struct dwarf2_per_bfd) <die_type_hash>: Move to
+	struct dwarf2_per_objfile.
+	(struct dwarf2_per_objfile) <die_type_hash>: Move from struct
+	dwarf2_per_bfd.
+	* dwarf2/read.c (set_die_type): Update.
+	(get_die_type_at_offset): Update.
 
-2019-07-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-05-27  Tom Tromey  <tom@tromey.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
 
-	* NEWS: Mention adding -q option to "info types".
-	* symtab.c (struct info_types_options): New struct.
-	(info_types_options_defs): New variable.
-	(make_info_types_options_def_group): New function.
-	(info_types_command): Use gdb::option framework to parse options.
-	(info_types_command_completer): New function.
-	(_initialize_symtab): Extend the help text on "info types" and
-	register command completer.
+	* dwarf2/read.h (struct dwarf2_per_bfd) <num_psymtabs>: New
+	method.
+	(struct dwarf2_per_objfile) <resize_symtabs, symtab_set_p,
+	get_symtab, set_symtab>: New methods.
+	<m_symtabs>: New field.
+	(struct dwarf2_psymtab): Derive from partial_symtab.
+	<readin_p, get_compunit_symtab>: Declare methods.
+	* dwarf2/read.c (dwarf2_per_objfile::symtab_set_p,
+	dwarf2_per_objfile::get_symtab, dwarf2_per_objfile::set_symtab):
+	New methods.
+	(struct dwarf2_per_cu_quick_data) <compunit_symtab>: Remove.
+	(dw2_do_instantiate_symtab, dw2_instantiate_symtab)
+	(dw2_map_expand_apply, dw2_map_symtabs_matching_filename)
+	(dw2_symtab_iter_next, dw2_print_stats)
+	(dw2_expand_symtabs_with_fullname)
+	(dw2_expand_symtabs_matching_one)
+	(dw_expand_symtabs_matching_file_matcher)
+	(dw2_find_pc_sect_compunit_symtab, dw2_map_symbol_filenames)
+	(dw2_debug_names_iterator::next)
+	(dw2_debug_names_map_matching_symbols)
+	(fill_in_sig_entry_from_dwo_entry, dwarf2_psymtab::read_symtab)
+	(process_queue, dwarf2_psymtab::expand_psymtab): Update.
+	(dwarf2_psymtab::readin_p, dwarf2_psymtab::get_compunit_symtab):
+	New methods.
+	(get_compunit_symtab, process_full_comp_unit)
+	(process_full_type_unit): Update.
+	(dwarf2_build_psymtabs, dwarf2_initialize_objfile, add_type_unit): Call
+
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.h (dwarf2_per_objfile): Rename to dwarf2_per_bfd,
+	then introduce a new dwarf2_per_objfile type.
+	<read_line_string>: Move to the new dwarf2_per_objfile type.
+	<objfile>: Likewise.
+	(dwarf2_per_bfd): Rename dwarf2_per_objfile to this.
+	* dwarf2/read.c: Replace references to dwarf2_per_objfile with
+	dwarf2_per_objfile->per_bfd.
+	(dwarf2_per_objfile::dwarf2_per_objfile): Rename to...
+	(dwarf2_per_bfd::dwarf2_per_bfd): ... this.
+	(dwarf2_per_objfile::free_cached_comp_units): Rename to...
+	(dwarf2_per_bfd::free_cached_comp_units): ... this.
+	(dwarf2_has_info): Allocate dwarf2_per_bfd.
+	(dwarf2_per_objfile::locate_sections): Rename to...
+	(dwarf2_per_bfd::locate_sections): ... this.
+	(dwarf2_per_objfile::get_cutu): Rename to...
+	(dwarf2_per_bfd::get_cutu): ... this.
+	(dwarf2_per_objfile::get_cu): Rename to...
+	(dwarf2_per_bfd::get_cu): ... this.
+	(dwarf2_per_objfile::get_tu): Rename to...
+	(dwarf2_per_bfd::get_tu): ... this.
+	(dwarf2_per_objfile::allocate_per_cu): Rename to...
+	(dwarf2_per_bfd::allocate_per_cu): ... this.
+	(dwarf2_per_objfile::allocate_signatured_type): Rename to...
+	(dwarf2_per_bfd::allocate_signatured_type): ... this.
+	(get_gdb_index_contents_ftype): Change parameter from
+	dwarf2_per_objfile to dwarf2_per_bfd.
+	* dwarf2/macro.c, dwarf2/index-write.c: Replace references to
+	dwarf2_per_objfile with dwarf2_per_objfile->per_bfd.
+
+2020-05-27  Tom Tromey  <tom@tromey.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/loc.c (struct piece_closure) <per_objfile>: New member.
+	(allocate_piece_closure): Set "per_objfile" member.
+	(dwarf2_find_location_expression, dwarf2_locexpr_baton_eval)
+	(locexpr_describe_location, loclist_describe_location): Use new
+	member.
+	* dwarf2/read.c (read_call_site_scope)
+	(mark_common_block_symbol_computed, attr_to_dynamic_prop)
+	(dwarf2_const_value_attr, dwarf2_fetch_die_loc_sect_off)
+	(fill_in_loclist_baton, dwarf2_symbol_mark_computed,
+	handle_data_member_location): Set per_objfile member.
+	* dwarf2/loc.h (struct dwarf2_locexpr_baton) <per_objfile>: New
+	member.
+	(struct dwarf2_loclist_baton) <per_objfile>: New member.
 
-2019-07-21  Christian Biesinger  <cbiesinger@google.com>
+2020-05-27  Tom Tromey  <tom@tromey.com>
 
-	* symtab.c (lookup_symbol_in_objfile_symtabs): Change int to block_enum.
-	(lookup_symbol_in_objfile): Change int to block_enum and add a
-	gdb_assert to make sure block_index is GLOBAL_BLOCK or STATIC_BLOCK.
+	* dwarf2/read.h (struct dwarf2_per_objfile) <allocate_per_cu,
+	allocate_signatured_type>: Declare new methods.
+	<m_num_psymtabs>: New member.
+	(struct dwarf2_per_cu_data) <index>: New member.
+	* dwarf2/read.c (dwarf2_per_objfile::allocate_per_cu)
+	(dwarf2_per_objfile::allocate_signatured_type): New methods.
+	(create_cu_from_index_list): Use allocate_per_cu.
+	(create_signatured_type_table_from_index)
+	(create_signatured_type_table_from_debug_names)
+	(create_debug_type_hash_table, add_type_unit)
+	(read_comp_units_from_section): Use allocate_signatured_type.
+
+2020-05-27  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.c (partial_map_expand_apply)
+	(psym_find_pc_sect_compunit_symtab, psym_lookup_symbol)
+	(psym_lookup_global_symbol_language)
+	(psymtab_to_symtab, psym_find_last_source_symtab, dump_psymtab)
+	(psym_print_stats, psym_expand_symtabs_for_function)
+	(psym_map_symbol_filenames, psym_map_matching_symbols)
+	(psym_expand_symtabs_matching)
+	(partial_symtab::read_dependencies, maintenance_info_psymtabs)
+	(maintenance_check_psymtabs): Update.
+	* psympriv.h (struct partial_symtab) <readin_p,
+	get_compunit_symtab>: Add objfile parameter.
+	(struct standard_psymtab) <readin_p, get_compunit_symtab>:
+	Likewise.
+	* dwarf2/read.c (struct dwarf2_include_psymtab) <readin_p,
+	get_compunit_symtab>: Likewise.
+	(dwarf2_psymtab::expand_psymtab): Pass objfile argument.
 
-2019-07-20  Christian Biesinger  <cbiesinger@google.com>
+2020-05-27  Tom Tromey  <tom@tromey.com>
 
-	* MAINTAINERS (Write After Approval): Add self.
+	* dwarf2/read.h (struct dwarf2_per_objfile) <obstack>: New
+	member.
+	* dwarf2/read.c (delete_file_name_entry): Fix comment.
+	(create_cu_from_index_list)
+	(create_signatured_type_table_from_index)
+	(create_signatured_type_table_from_debug_names)
+	(dw2_get_file_names_reader, dwarf2_initialize_objfile)
+	(dwarf2_create_include_psymtab)
+	(create_debug_type_hash_table, add_type_unit)
+	(create_type_unit_group, read_comp_units_from_section)
+	(dwarf2_compute_name, create_cus_hash_table)
+	(create_dwp_hash_table, create_dwo_unit_in_dwp_v1)
+	(create_dwo_unit_in_dwp_v2, open_and_init_dwp_file): Use new
+	obstack.
+	(dw2_get_real_path): Likewise.  Change argument to
+	dwarf2_per_objfile.
+
+2020-05-27  Luis Machado  <luis.machado@linaro.org>
+
+	PR tdep/26000
+	* arm-tdep.c (thumb_analyze_prologue): Fix instruction matching
+	for ldrd (immediate).
+
+2020-05-26  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* command.h: Add comment giving the name of class_tui.
+	* cli/cli-cmds.c (_initialize_cli_cmds): If TUI defined,
+	create the fake command for the help for class_tui.
+
+2020-05-26  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_print_array_index): Change type.  Call val_atr.
+	(ada_value_ptr_subscript): Don't call pos_atr on the lower bound.
+	(val_atr): New function.
+	(value_val_atr): Use it.
+	* ada-valprint.c (print_optional_low_bound): Change low bound
+	handling for enums.
+	(val_print_packed_array_elements): Don't call discrete_position.
+	* gdbtypes.c (get_discrete_bounds) <TYPE_CODE_RANGE>: Call
+	discrete_position for enum types.
+	* language.c (default_print_array_index): Change type.
+	* language.h (struct language_defn) <la_print_array_index>: Add
+	index_type parameter, change type of index_value.
+	(LA_PRINT_ARRAY_INDEX): Add index_type parameter.
+	(default_print_array_index): Update.
+	* valprint.c (maybe_print_array_index): Don't call
+	value_from_longest.  Update.
+	(value_print_array_elements): Don't call discrete_position.
+
+2020-05-26  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (value_val_atr): Handle TYPE_CODE_RANGE.
+	* gdbtypes.c (discrete_position): Handle TYPE_CODE_RANGE.
+
+2020-05-25  Cristiano De Alti  <cristiano_dealti@hotmail.com>
+
+	PR gdb/13519
+	* avr-tdep.c (avr_integer_to_address): Return data or code
+	address accordingly to the second 'type' argument of the
+	function.
 
-2019-07-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-05-25  Michael Weghorn  <m.weghorn@posteo.de>
 
-	* riscv-tdep.c (riscv_push_dummy_code): Write a 4-byte nop
-	instruction to the dummy code region.
+	* infcmd.c, inferior.h: (construct_inferior_arguments):
+	Moved function from here to gdbsupport/common-inferior.{h,cc}
 
-2019-07-19  Tom Tromey  <tromey@adacore.com>
+2020-05-23  Tom Tromey  <tom@tromey.com>
 
-	* contrib/ari/gdb_ari.sh: Mention C++11, not ISO C 90.
-	(ARGSUSED, PARAMS, __func__): Remove rules.
+	Revert commit eca1f90c:
+	* NEWS: Remove entry for completion styling.
+	* completer.c (_rl_completion_prefix_display_length): Move
+	declaration later.
+	(gdb_fnprint): Revert.
+	(gdb_display_match_list_1): Likewise.
+	* cli/cli-style.c (completion_prefix_style)
+	(completion_difference_style, completion_suffix_style): Remove.
+	(_initialize_cli_style): Revert.
+	* cli/cli-style.h (completion_prefix_style)
+	(completion_difference_style, completion_suffix_style): Don't
+	declare.
 
-2019-07-19  Alan Hayward  <alan.hayward@arm.com>
+2020-05-24  Pedro Alves  <palves@redhat.com>
 
-	* arm-tdep.c (_initialize_arm_tdep): Remove xml tests.
-	* features/arm/arm-with-iwmmxt.c: Remove.
-	* features/arm/arm-with-iwmmxt.xml: Remove.
-	* features/arm/arm-with-m-fpa-layout.c: Remove.
-	* features/arm/arm-with-m-fpa-layout.xml: Remove.
-	* features/arm/arm-with-m-vfp-d16.c: Remove.
-	* features/arm/arm-with-m-vfp-d16.xml: Remove.
-	* features/arm/arm-with-m.c: Remove.
-	* features/arm/arm-with-m.xml: Remove.
-	* features/arm/arm-with-neon.c: Remove.
-	* features/arm/arm-with-neon.xml: Remove.
-	* features/arm/arm-with-vfpv2.c: Remove.
-	* features/arm/arm-with-vfpv2.xml: Remove.
-	* features/arm/arm-with-vfpv3.c: Remove.
-	* features/arm/arm-with-vfpv3.xml: Remove.
+	* symtab.c (completion_list_add_name): Return boolean indication
+	of whether the symbol matched.
+	(completion_list_add_symbol): Don't try to remove C++ aliases if
+	the symbol didn't match in the first place.
+	* symtab.h (completion_list_add_name): Return bool.
 
-2019-07-19  Alan Hayward  <alan.hayward@arm.com>
+2020-05-23  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* arm-tdep.c (_initialize_arm_tdep): Add xml regression tests.
+	* gdbtypes.h (TYPE_FIELD): Remove.  Replace all uses with
+	type::field.
 
-2019-07-19  Alan Hayward  <alan.hayward@arm.com>
+2020-05-23  Joel Brobecker  <brobecker@adacore.com>
 
-	* arch/aarch32.c (aarch32_create_target_description): Create
-	target descriptions using features.
-	* arch/arm.c (arm_create_target_description)
-	(arm_create_mprofile_target_description): Likewise.
-	* arm-tdep.c (_initialize_arm_tdep): Remove tdesc init calls.
+	GDB 9.2 released.
 
-2019-07-19  Alan Hayward  <alan.hayward@arm.com>
+2020-05-23  Tom Tromey  <tom@tromey.com>
 
-	* Makefile.in: Add new files.
-	* aarch32-tdep.c: New file.
-	* aarch32-tdep.h: New file.
-	* aarch64-linux-nat.c (aarch64_linux_nat_target::read_description):
-	Call aarch32_read_description.
-	* arch/aarch32.c: New file.
-	* arch/aarch32.h: New file.
-	* arch/arm.c (arm_create_target_description)
-	(arm_create_mprofile_target_description): New function.
-	* arch/arm.h (arm_fp_type, arm_m_profile_type): New enum.
-	(arm_create_target_description)
-	(arm_create_mprofile_target_description): New declaration.
-	* arm-fbsd-tdep.c (arm_fbsd_read_description_auxv): Call
-	read_description functions.
-	* arm-linux-nat.c (arm_linux_nat_target::read_description):
-	Likewise.
-	* arm-linux-tdep.c (arm_linux_core_read_description): Likewise.
-	* arm-tdep.c (tdesc_arm_list): New variable.
-	(arm_register_g_packet_guesses): Call create description functions.
-	(arm_read_description) (arm_read_mprofile_description): New
-	function.
-	* arm-tdep.h (arm_read_description)
-	(arm_read_mprofile_description): Add declaration.
-	* configure.tgt: Add new files.
-
-2019-07-18  Guillaume LABARTHE  <guillaume.labarthe@gmail.com>
-
-	* top.c (new_ui_command): Open specified terminal just once.
-
-2019-07-18  Tom Tromey  <tromey@adacore.com>
-
-	* symtab.c (main_name): Constify return type.
-	* symfile.c (set_initial_language): Update.
-	* symtab.h (main_name): Constify return type.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.c (tui_update_source_window)
-	(tui_update_source_window_as_is)
-	(tui_update_source_windows_with_line): Remove return.
-	* tui/tui-disasm.c (tui_show_disassem)
-	(tui_show_disassem_and_update_source): Remove return.
-	* tui/tui.c (tui_reset): Remove return.
-	* tui/tui-wingeneral.c
-	(tui_check_and_display_highlight_if_needed): Remove return.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (parse_scrolling_args): Throw separate errors.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (struct tui_exec_info_window)
-	(struct tui_source_window_base): Move from tui-data.h.
-	* tui/tui-winsource.c: Move many method definitions from
-	elsewhere.  Remove "structuring" comments.
-	* tui/tui-wingeneral.c (tui_source_window_base::make_visible)
-	(tui_source_window_base::refresh_window): Move to
-	tui-winsource.c.
-	* tui/tui-win.c (tui_source_window_base::refresh_all)
-	(tui_source_window_base::update_tab_width)
-	(tui_source_window_base::set_new_height)
-	(tui_source_window_base::do_make_visible_with_new_height): Move to
-	tui-winsource.c.
-	* tui/tui-source.h: Update.
-	* tui/tui-source.c (tui_source_window_base::reset): Move to
-	tui-winsource.c.
-	* tui/tui-disasm.h: Update.
-	* tui/tui-data.h (struct tui_exec_info_window): Move to
-	tui-winsource.h.
-	(struct tui_source_window_base): Likewise.
-	* tui/tui-data.c (tui_source_window_base::clear_detail)
-	(tui_source_window_base, ~tui_source_window_base): Move to
-	tui-winsource.c.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (tui_resize_all)
-	(tui_source_window_base::update_tab_width)
-	(tui_adjust_win_heights): Update.
-	(tui_win_info::make_invisible_and_set_new_height): Rename from
-	make_invisible_and_set_new_height.
-	* tui/tui-data.h (struct tui_win_info)
-	<make_invisible_and_set_new_height>: New method.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui.c: Update.
-	* tui/tui-source.h (struct tui_source_window): Move from
-	tui-data.h.
-	* tui/tui-layout.c: Update.
-	* tui/tui-disasm.c: Update.
-	* tui/tui-data.h (struct tui_source_window): Move to
-	tui-source.h.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-disasm.h (struct tui_disasm_window): Move from
-	tui-data.h.
-	* tui/tui-data.h (struct tui_disasm_window): Move to
-	tui-disasm.h.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.h (struct tui_data_item_window): Move from
-	tui-data.h.
-	* tui/tui-regs.c (tui_data_item_window): Move from tui-data.c.
-	* tui/tui-data.h (struct tui_data_item_window): Move to
-	tui-regs.h.
-	* tui/tui-data.c (~tui_data_item_window): Move to tui-regs.c.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui.c: Update.
-	* tui/tui-win.c (tui_cmd_window::do_make_visible_with_new_height)
-	(tui_cmd_window::max_height): Move to tui-command.c.
-	* tui/tui-layout.c: Update.
-	* tui/tui-data.h (struct tui_cmd_window): Move to tui-command.h.
-	* tui/tui-data.c (tui_cmd_window::clear_detail): Move to
-	tui-command.c.
-	* tui/tui-command.h (struct tui_cmd_window): Move from
-	tui-data.h.
-	* tui/tui-command.c: Remove "structuring" comments.
-	(tui_cmd_window::clear_detail)
-	(tui_cmd_window::do_make_visible_with_new_height)
-	(tui_cmd_window::max_height): Move from elsewhere.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-io.c (tui_dispatch_ctrl_char): Move from tui-command.c.
-	Now static.
-	* tui/tui-command.h (tui_dispatch_ctrl_char): Don't declare.
-	* tui/tui-command.c (tui_dispatch_ctrl_char): Move to tui-io.c.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui.c: Update.
-	* tui/tui-wingeneral.c (tui_data_window::refresh_window): Move to
-	tui-regs.c.
-	* tui/tui-windata.h: Remove file.
-	* tui/tui-windata.c: Remove file.
-	* tui/tui-win.c (tui_data_window::set_new_height)
-	(tui_data_window::do_make_visible_with_new_height): Move to
-	tui-regs.c.
-	* tui/tui-regs.h (struct tui_data_window): Move from tui-data.h.
-	* tui/tui-regs.c: Remove "structuring" comments.
-	(tui_data_window::first_data_item_displayed)
-	(tui_data_window::delete_data_content_windows)
-	(tui_data_window::erase_data_content)
-	(tui_data_window::display_all_data)
-	(tui_data_window::refresh_all)
-	(tui_data_window::do_scroll_vertical)
-	(tui_data_window::clear_detail, tui_data_window::set_new_height)
-	(tui_data_window::do_make_visible_with_new_height)
-	(tui_data_window::refresh_window): Move from elsewhere.
-	(_initialize_tui_regs): Move to end of file.
-	* tui/tui-layout.c: Update.
-	* tui/tui-hooks.c: Update.
-	* tui/tui-data.h (struct tui_data_window): Move to tui-regs.h.
-	* tui/tui-data.c (tui_data_window::clear_detail): Move to
-	tui-regs.c.
-	* Makefile.in (SUBDIR_TUI_SRCS): Remove tui-windata.c.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-io.c (tui_puts_internal): Call wrefresh if newline is
-	seen.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (tui_source_window_base::set_new_height)
-	(tui_source_window_base::do_make_visible_with_new_height): Use
-	m_has_locator field directly.
-	* tui/tui-data.h (struct tui_win_info) <has_locator>: Remove
-	method.
-	(struct tui_source_window_base) <has_locator>: Likewise.
+	* NEWS: Add entry for completion styling.
+	* completer.c (_rl_completion_prefix_display_length): Move
+	declaration earlier.
+	(gdb_fnprint): Use completion_style.
+	(gdb_display_match_list_1): Likewise.
+	* cli/cli-style.c (completion_prefix_style)
+	(completion_difference_style, completion_suffix_style): New
+	globals.
+	(_initialize_cli_style): Register new globals.
+	* cli/cli-style.h (completion_prefix_style)
+	(completion_difference_style, completion_suffix_style): Declare.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-23  Pedro Alves  <palves@redhat.com>
 
-	* tui/tui-wingeneral.h (tui_make_visible, tui_make_invisible):
-	Don't declare.
-	* tui/tui-wingeneral.c (tui_make_visible, tui_make_invisible):
-	Remove.
-	* tui/tui-win.c (tui_source_window_base::set_new_height)
-	(tui_source_window_base::set_new_height)
-	(make_invisible_and_set_new_height)
-	(tui_source_window_base::do_make_visible_with_new_height)
-	(tui_source_window_base::do_make_visible_with_new_height):
-	Update.
-	* tui/tui-layout.c (show_source_disasm_command, show_data)
-	(show_source_or_disasm_and_command): Update.
-	* tui/tui-layout.c (show_layout): Update.
+	* utils.c: Include "gdbsupport/gdb-safe-ctype.h".
+	(parse_escape): Use ISDIGIT instead of isdigit.
+	(puts_debug): Use gdb_isprint instead of isprint.
+	(fprintf_symbol_filtered): Use ISALNUM instead of isalnum.
+	(cp_skip_operator_token, skip_ws, strncmp_iw_with_mode): Use
+	ISSPACE instead of isspace.
+	(strncmp_iw_with_mode): Use TOLOWER instead of tolower and ISSPACE
+	instead of isspace.
+	(strcmp_iw_ordered): Use ISSPACE instead of isspace.
+	(string_to_core_addr): Use TOLOWER instead of tolower, ISXDIGIT
+	instead of isxdigit and ISDIGIT instead of isdigit.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-22  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-layout.c (make_data_window): Remove.
-	(show_data): Unify creation and re-initialization cases.
+	* gdbtypes.h (struct type) <field>: New method.
+	(TYPE_FIELDS): Remove, replace all uses with either type::fields
+	or type::field.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-22  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-layout.c (make_source_window, make_disasm_window):
-	Remove.
-	(show_data): Unify creation and re-initialization cases.
+	* gdbtypes.h (struct type) <fields, set_fields>: New methods.
+	(TYPE_FIELDS): Use type::fields.  Change all call sites that
+	modify the propery to use type::set_fields instead.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-22  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-layout.c (make_command_window): Remove.
-	(show_source_disasm_command, show_source_or_disasm_and_command):
-	Unify creation and re-initialization cases.
+	* gdbtypes.h (TYPE_NFIELDS): Remove.  Change all cal sites to use
+	type::num_fields instead.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-22  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-layout.c (show_source_or_disasm_and_command): Unify
-	creation and re-initialization cases.
+	* gdbtypes.h (struct type) <num_fields, set_num_fields>: New
+	methods.
+	(TYPE_NFIELDS): Use type::num_fields.  Change all call sites
+	that modify the number of fields to use type::set_num_fields
+	instead.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-22  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-regs.c (tui_get_register): Return void.
+	* compile/compile-object-load.h (munmap_list_free): Don't
+	declare.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-22  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-wingeneral.c (tui_gen_win_info::make_visible):
-	Simplify.
+	* annotate.c (annotate_source_line): Update return type, add call
+	to update current symtab and line.
+	* annotate.h (annotate_source_line): Update return type, and
+	extend header comment.
+	* source.c (info_line_command): Check annotation_level before
+	calling annotate_source_line.
+	* stack.c (print_frame_info): If calling annotate_source_line
+	returns true, then don't print any other source line information.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-21  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-layout.c (show_source_disasm_command): Simplify window
-	resetting.
+	* lm32-tdep.c (lm32_register_reggroup_p): Fix condition.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-21  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui.h (tui_set_layout_by_name): Don't declare.
-	* tui/tui-regs.c (tui_reg_layout): New function.
-	(tui_show_registers, tui_reg_command): Use it.
-	* tui/tui-layout.c (LAYOUT_USAGE): Remove.
-	(tui_layout_command): Rename from tui_set_layout_by_name.  Change
-	parameters.
-	(tui_layout_command): Remove.
+	* coffread.c (patch_type): Remove NULL check before xfree.
+	* corefile.c (set_gnutarget): Likewise.
+	* cp-abi.c (set_cp_abi_as_auto_default): Likewise.
+	* exec.c (build_section_table): Likewise.
+	* remote.c (remote_target::pass_signals): Likewise.
+	* utils.c (n_spaces): Likewise.
+	* cli/cli-script.c (document_command): Likewise.
+	* i386-windows-tdep.c (core_process_module_section): Likewise.
+	* linux-fork.c (struct fork_info) <~fork_info>: Likewise.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-20  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-layout.h (tui/tui-layout): Return void.
-	* tui/tui-layout.c (tui_set_layout): Return void.  Add assert.
+	* symfile.c (reread_symbols): Clear objfile's section_offsets
+	vector and section indices, re-compute them by calling
+	sym_offsets.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-20  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-layout.c (show_source_disasm_command, show_data):
-	Update.
-	(reset_locator): Remove.
-	(show_source_or_disasm_and_command): Update.
+	* ada-lang.c (bound_name, MAX_ADA_DIMENS): Remove.
+	(desc_one_bound, desc_index_type): Compute field name.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-20  Tom de Vries  <tdevries@suse.de>
 
-	* tui/tui-source.c (tui_source_window_base::reset): Remove
-	win_type parameter.
-	* tui/tui-layout.c (make_command_window, make_source_window)
-	(make_disasm_window, make_data_window)
-	(show_source_disasm_command, show_data, tui_gen_win_info::reset)
-	(reset_locator, show_source_or_disasm_and_command): Update.
-	* tui/tui-data.h (struct tui_gen_win_info) <reset>: Remove
-	win_type parameter.
-	(struct tui_source_window_base) <reset>: Likewise.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-layout.c (show_source_disasm_command): Use
-	reset_locator.
-	(reset_locator): New function.
-	(init_and_make_win): Remove.
-	(show_source_or_disasm_and_command): Use reset_locator.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.c (tui_set_exec_info_content): Remove
-	condition.
-	* tui/tui-wingeneral.c (tui_source_window_base::make_visible):
-	Remove condition.
-	* tui/tui-source.c (tui_source_window_base::reset): New method.
-	* tui/tui-layout.c (make_command_window): Don't call
-	init_and_make_win.
-	(make_source_window, make_disasm_window): Don't call
-	make_source_or_disasm_window.
-	(make_data_window): Don't call init_and_make_win.  Change calling
-	convention.
-	(show_source_disasm_command, show_data): Simplify.
-	(make_source_or_disasm_window): Remove.
-	(show_source_or_disasm_and_command): Simplify.
-	* tui/tui-data.h (struct tui_gen_win_info) <reset>: Now virtual.
-	(struct tui_source_window_base) <reset>: Likewise.
-	<execution_info>: Remove initializer.
-	* tui/tui-data.c (tui_source_window_base): Initialize
-	execution_info.
+	PR symtab/25833
+	* dwarf2/read.c (dw2_map_matching_symbols): Handle .gdb_index.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-20  Alan Modra  <amodra@gmail.com>
 
-	* tui/tui-layout.c (tui_set_layout): Remove regs_populate
-	variable.
+	PR 25993
+	* solib-darwin.c (darwin_bfd_open): Don't strdup pathname for
+	bfd_set_filename.
+	* solib-aix.c (solib_aix_bfd_open): Use std::string for name
+	passed to bfd_set_filename.
+	* symfile-mem.c (add_vsyscall_page): Likewise for string
+	passed to symbol_file_add_from_memory.
+	(symbol_file_add_from_memory): Make name param a const char* and
+	don't strdup.
+
+2020-05-20  Alan Modra  <amodra@gmail.com>
+
+	* coff-pe-read.c (read_pe_exported_syms): Use bfd_get_filename
+	rather than accessing bfd->filename directly.
+	* dtrace-probe.c (dtrace_static_probe_ops::get_probes): Likewise,
+	and use bfd_section_name.
+	* dwarf2/frame.c (decode_frame_entry): Likewise.
+	* exec.c (exec_set_section_address): Likewise.
+	* solib-aix.c (solib_aix_bfd_open): Likewise.
+	* stap-probe.c (get_stap_base_address): Likewise.
+	* symfile.c (reread_symbols): Likewise.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-19  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui.c (tui_rl_other_window): Update.
-	* tui/tui-wingeneral.c (tui_data_window::refresh_window): Call
-	superclass method first.  Always iterate over regs_content.
-	(tui_unhighlight_win, tui_highlight_win): Use refresh_window
-	method.
-	* tui/tui-win.c (tui_set_focus_command): Update.
+	* sparc64-tdep.c (adi_tag_fd): Update call to target_fileio_open.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-19  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-win.c (tui_set_focus_command): Rename from
-	tui_set_focus.  Call tui_enable.
-	(tui_set_focus_command): Remove.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.c (tui_show_exec_info_content): Don't call
-	refresh_window.
-	* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Call
-	touchwin.
-	(tui_data_window::refresh_window): Call refresh_window on data
-	items.  Always call superclass refresh_window.
-	(tui_win_info::refresh): Remove.
-	(tui_source_window_base::refresh_window): Update.
-	(tui_refresh_all): Update.
-	* tui/tui-layout.c (show_source_disasm_command): Remove call to
-	refresh_window.
-	(show_source_or_disasm_and_command): Likewise.
-	* tui/tui-data.h (struct tui_win_info) <refresh>: Remove.
-	(struct tui_source_window_base) <refresh>: Likewise.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.c (tui_clear_source_content)
-	(tui_show_source_content): Update.
-	* tui/tui-source.c (tui_source_window::showing_source_p): Check
-	whether content is empty.
-	* tui/tui-data.h (struct tui_source_window_base) <content_in_use>:
+	* dwarf2/read.c (quirk_rust_enum): Allocate enough fields.
+
+2020-05-19  Pedro Alves  <palves@redhat.com>
+
+	* NEWS (set exec-file-mismatch): Adjust entry.
+	* exec.c: Include "build-id.h".
+	(validate_exec_file): Try to match build IDs instead of filenames.
+	* gdb_bfd.c (struct gdb_bfd_open_closure): New.
+	(gdb_bfd_iovec_fileio_open): Adjust to use gdb_bfd_open_closure
+	and pass down 'warn_if_slow'.
+	(gdb_bfd_open): Add 'warn_if_slow' parameter.  Use
+	gdb_bfd_open_closure to pass it down.
+	* gdb_bfd.h (gdb_bfd_open): Add 'warn_if_slow' parameter.
+
+2020-05-19  Pedro Alves  <palves@redhat.com>
+
+	* gdb_bfd.c (gdb_bfd_iovec_fileio_open): Adjust.
+	* target.c (target_fileio_open_1): Rename to target_fileio_open
+	and make extern.  Use bool.
+	(target_fileio_open, target_fileio_open_warn_if_slow): Delete.
+	(target_fileio_read_alloc_1): Adjust.
+	* target.h (target_fileio_open): Add 'warn_if_slow' parameter.
+	(target_fileio_open_warn_if_slow): Delete declaration.
+
+2020-05-19  Pedro Alves  <palves@redhat.com>
+
+	* gdb_bfd.h: (gdb_bfd_open): Default to 'fd' parameter to -1.
+	Adjust all callers.
+
+2020-05-19  Yoshinori Sato  <ysato@users.sourceforge.jp>
+
+	* h8300-tdep.c (h8300_is_argument_spill): Change how we check
+	whether disp is negative.
+
+2020-05-19  Simon Marchi  <simon.marchi@efficios.com>
+
+	* symfile.h (struct symfile_segment_data)
+	<~symfile_segment_data>: Remove.
+	<segment_info>: Change to std::vector.
+	* symfile.c (default_symfile_segments): Update.
+	* elfread.c (elf_symfile_segments): Update.
+
+2020-05-19  Simon Marchi  <simon.marchi@efficios.com>
+
+	* symfile.h (struct symfile_segment_data) <struct segment>: New.
+	<segments>: New.
+	<segment_bases, segment_sizes>: Remove.
+	* symfile.c (default_symfile_segments): Update.
+	* elfread.c (elf_symfile_segments): Update.
+	* remote.c (remote_target::get_offsets): Update.
+	* solib-target.c (solib_target_relocate_section_addresses):
+	Update.
+
+2020-05-19  Simon Marchi  <simon.marchi@efficios.com>
+
+	* symfile.h (struct symfile_segment_data): Initialize fields.
+	<~symfile_segment_data>: Add.
+	(symfile_segment_data_up): New.
+	(struct sym_fns) <sym_segments>: Return a
+	symfile_segment_data_up.
+	(default_symfile_segments): Return a symfile_segment_data_up.
+	(free_symfile_segment_data): Remove.
+	(get_symfile_segment_data): Return a symfile_segment_data_up.
+	* symfile.c (default_symfile_segments): Likewise.
+	(get_symfile_segment_data): Likewise.
+	(free_symfile_segment_data): Remove.
+	(symfile_find_segment_sections): Update.
+	* elfread.c (elf_symfile_segments): Return a
+	symfile_segment_data_up.
+	* remote.c (remote_target::get_offsets): Update.
+	* solib-target.c (solib_target_relocate_section_addresses):
+	Update.
+	* symfile-debug.c (debug_sym_segments): Return a
+	symfile_segment_data_up.
+
+2020-05-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	PR build/25981
+	* i386-sol2-nat.c [PR_MODEL_NATIVE != PR_MODEL_LP64] (regmap):
+	Hardcode register numbers.
+
+	PR build/25981
+	* procfs.c [(__i386__ || __x86_64__) && sun] (proc_get_LDT_entry,
+	procfs_find_LDT_entry): Remove.
+	* procfs.h [(__i386__ || __x86_64__) && sun] (struct ssd,
+	procfs_find_LDT_entry): Remove.
+	* sol-thread.c [(__i386__ || __x86_64__) && sun] (ps_lgetLDT):
 	Remove.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-17  Pedro Alves  <palves@redhat.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Keno Fischer  <keno@juliacomputing.com>
 
-	* tui/tui-winsource.c (tui_erase_source_content): Clear the
-	window's contents.
-	* tui/tui-source.h (tui_set_source_content_nil): Don't declare.
-	* tui/tui-source.c (tui_set_source_content_nil): Remove.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.h (UNDEFINED_ITEM): Remove define.
-	(struct tui_data_item_window): Update.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.h (MAX_CONTENT_COUNT, TUI_NULL_STR)
-	(DEFAULT_HISTORY_COUNT, WITH_LOCATOR, NO_LOCATOR): Remove
-	defines.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (tui_erase_source_content)
-	(tui_clear_source_content): Remove "display_prompt" parameter.
-	* tui/tui-winsource.c (tui_update_source_window_as_is)
-	(tui_update_source_windows_with_addr): Update.
-	(tui_clear_source_content): Remove "display_prompt" parameter.
-	(tui_erase_source_content): Likewise.  Simplify.
-	(tui_show_source_content): Update.
-	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Update.
-	* tui/tui-stack.c (tui_show_frame_info): Update.
-	* tui/tui-data.h (EMPTY_SOURCE_PROMPT, NO_EMPTY_SOURCE_PROMPT):
-	Remove defines.
+	PR gdb/25741
+	* breakpoint.c (build_target_condition_list): Update comments.
+	(build_target_command_list): Update comments and skip matching
+	locations.
+	(insert_bp_location): Move "set breakpoint auto-hw on" handling to
+	a separate function.  Simplify "set breakpoint auto-hw off"
+	handling.
+	(insert_breakpoints): Update comment.
+	(tracepoint_locations_match): New parameter.  For breakpoints,
+	compare location types too, if the caller wants to.
+	(handle_automatic_hardware_breakpoints): New functions.
+	(bp_location_is_less_than): Also sort by location type and
+	hardware breakpoint length.
+	(update_global_location_list): Handle "set breakpoint auto-hw on"
+	here.
+	(update_breakpoint_locations): Ask breakpoint_locations_match to
+	ignore location types.
+
+2020-05-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_NAME): Remove.  Change all cal sites to use
+	type::name instead.
+
+2020-05-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <name, set_name>: New methods.
+	(TYPE_CODE): Use type::name.  Change all call sites used to set
+	the name to use type::set_name instead.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-16  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.c (tui_update_source_window_as_is): Update.
-	* tui/tui-disasm.h (tui_set_disassem_content): Add win_info
-	parameter.
-	* tui/tui-disasm.c (tui_set_disassem_content): Add win_info
-	parameter.
+	* top.c (quit_force): Update.
+	* infrun.c (handle_no_resumed): Update.
+	* top.h (all_uis): New function.
+	(ALL_UIS): Remove.
+
+2020-05-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* mips-linux-tdep.c (mips_linux_in_dynsym_stub): Fix condition.
+
+2020-05-16  Pedro Alves  <palves@redhat.com>
+
+	* ia64-linux-nat.c
+	(ia64_linux_nat_target) <enable_watchpoints_in_psr(ptid_t)>:
+	Declare method.
+	(enable_watchpoints_in_psr): Now a method of ia64_linux_nat_target.
+
+2020-05-15  Simon Marchi  <simon.marchi@efficios.com>
+
+	* sparc64-tdep.c (adi_stat_t): Remove typedef (leaving struct).
+	(sparc64_adi_info): Likewise.
+
+2020-05-15  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (lookup_language_this, lookup_symbol_aux): Use
+	block_objfile.
+	(lookup_objfile_from_block): Remove.
+	(lookup_symbol_in_block, lookup_symbol_in_static_block)
+	(lookup_global_symbol): Use block_objfile.
+	* symtab.h (lookup_objfile_from_block): Don't declare.
+	* printcmd.c (clear_dangling_display_expressions): Use
+	block_objfile.
+	* parse.c (operator_check_standard): Use block_objfile.
+
+2020-05-15  Tom Tromey  <tom@tromey.com>
+
+	* language.c (language_alloc_type_symbol): Set
+	SYMBOL_SECTION.
+	* symtab.c (initialize_objfile_symbol): Remove.
+	(allocate_symbol): Remove.
+	(allocate_template_symbol): Remove.
+	* dwarf2/read.c (fixup_go_packaging): Use "new".
+	(new_symbol): Use "new".
+	(read_variable): Don't call initialize_objfile_symbol.  Use
+	"new".
+	(read_func_scope): Use "new".
+	* xcoffread.c (process_xcoff_symbol): Don't call
+	initialize_objfile_symbol.
+	(SYMBOL_DUP): Remove.
+	* coffread.c (process_coff_symbol, coff_read_enum_type): Use
+	"new".
+	* symtab.h (allocate_symbol, initialize_objfile_symbol)
+	(allocate_template_symbol): Don't declare.
+	(struct symbol): Add copy constructor.  Change defaults.
+	* jit.c (finalize_symtab): Use "new".
+	* ctfread.c (ctf_add_enum_member_cb, new_symbol, ctf_add_var_cb):
+	Use "new".
+	* stabsread.c (patch_block_stabs, define_symbol, read_enum_type)
+	(common_block_end): Use "new".
+	* mdebugread.c (parse_symbol): Use "new".
+	(new_symbol): Likewise.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
-	* tui/tui-winsource.c (tui_clear_source_content)
-	(tui_show_source_content, tui_show_exec_info_content)
-	(tui_clear_exec_info_content): Update.
-	* tui/tui-stack.c (tui_show_locator_content): Update.
-	(tui_show_frame_info): Update.
-	* tui/tui-source.h (tui_source_window): Don't declare.
-	* tui/tui-source.c (tui_source_window::showing_source_p): Rename
-	from tui_source_is_displayed.
-	* tui/tui-data.h (struct tui_gen_win_info) <content_in_use>:
-	Remove field.
-	(struct tui_source_window_base) <content_in_use>: New field.  Now
-	bool.
-	(struct tui_source_window) <showing_source_p>: New method.
-	(TUI_SRC_WIN): Change cast.
-	* tui/tui-data.c (tui_initialize_static_data): Update.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.c (tui_update_breakpoint_info): Use
-	location_matches_p.
-	* tui/tui-source.c (tui_source_window::location_matches_p): New
-	method.
-	* tui/tui-disasm.c (tui_disasm_window::location_matches_p): New
-	method.
-	* tui/tui-data.h (struct tui_source_window_base)
-	<location_matches_p>: New method.
-	(struct tui_source_window, struct tui_disasm_window)
-	<location_matches_p>: Likewise.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (tui_set_win_height_command): Rename from
-	tui_set_win_height.
-	(tui_set_win_height_command): Remove.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-source.c (tui_source_window): New constructor.  Add
-	observer.
-	(~tui_source_window): New destructor.
-	(tui_source_window::style_changed): New method.
-	* tui/tui-hooks.c (tui_redisplay_source): Remove.
-	(tui_attach_detach_observers): Update.
-	* tui/tui-data.h (struct tui_source_window): Make constructor not
-	inline.  Add destructor.
-	(struct tui_source_window) <style_changed>: New method.
-	<m_observable>: New member.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.c (tui_clear_source_windows_detail): Fix typo.
-	* tui/tui-win.c (tui_resize_all): Fix typo.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.h (tui_refresh_all): Update.
-	* tui/tui-wingeneral.c (make_all_visible): Use foreach.
-	(tui_refresh_all): Remove "list" parameter.  Use foreach.
-	* tui/tui-win.c (window_name_completer): Use foreach.
-	(tui_refresh_all_win, tui_rehighlight_all, tui_all_windows_info)
-	(update_tab_width): Likewise.
-	* tui/tui-layout.c (show_layout): Update.
-	* tui/tui-data.h (class tui_window_iterator): New.
-	(struct all_tui_windows): New.
-	* tui/tui-data.c (tui_partial_win_by_name): Use foreach.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.c (tui_reg_next, tui_reg_prev): Add "current_group"
-	parameter.  Don't reference globals.
-	(tui_reg_command): Update.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.c (tui_show_registers): Simplify.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.c (tui_show_registers): Update.
-	(tui_show_register_group): Add win_info parameter.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.c (tui_data_window::display_reg_element_at_line):
-	Rename from tui_display_reg_element_at_line.
-	(tui_data_window::display_registers_from_line): Update.
-	* tui/tui-data.h (struct tui_data_window)
-	<display_reg_element_at_line>: New method.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.h (tui_display_registers_from)
-	(tui_display_registers_from_line): Don't declare.
-	* tui/tui-windata.c (tui_data_window::display_all_data)
-	(tui_data_window::refresh_all)
-	(tui_data_window::do_scroll_vertical): Update.
-	* tui/tui-regs.c (tui_data_window::display_registers_from): Rename
-	from tui_display_registers_from.
-	(tui_display_reg_element_at_line): Update.
-	(tui_data_window::display_registers_from_line): Rename from
-	tui_display_registers_from_line.
-	* tui/tui-data.h (struct tui_data_window) <display_registers_from,
-	display_registers_from_line>: New methods.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-windata.h (tui_erase_data_content): Don't declare.
-	* tui/tui-windata.c (tui_data_window::erase_data_content): Rename
-	from tui_erase_data_content.
-	(tui_data_window::display_all_data)
-	(tui_data_window::refresh_all)
-	(tui_data_window::do_scroll_vertical): Update.
-	* tui/tui-regs.c (tui_show_registers): Update.
-	* tui/tui-data.h (struct tui_data_window) <erase_data_content>:
-	New method.
+	* NEWS: Mention changes to help and apropos.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
-	* tui/tui-windata.h (tui_delete_data_content_windows): Don't
-	declare.
-	* tui/tui-windata.c
-	(tui_data_window::delete_data_content_windows): Rename from
-	tui_delete_data_content_windows.
-	(tui_data_window::display_all_data)
-	(tui_data_window::do_scroll_vertical): Update.
-	* tui/tui-data.h (struct tui_data_window)
-	<delete_data_content_windows>: New method.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-windata.h (tui_refresh_data_win): Don't declare.
-	* tui/tui-regs.h (tui_first_reg_element_inline): Don't declare.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-windata.h (tui_display_all_data): Don't declare.
-	* tui/tui-windata.c (tui_data_window::display_all_data): Rename
-	from tui_display_all_data.
-	* tui/tui-win.c
-	(tui_data_window::do_make_visible_with_new_height): Update.
-	* tui/tui-regs.c (tui_show_registers): Update.
-	* tui/tui-layout.c (tui_set_layout): Update.
-	* tui/tui-data.h (struct tui_data_window) <display_all_data>: New
-	method.
+	* command.h (enum command_class): Improve comments, document
+	that class_alias is for user-defined aliases, give the class
+	name for each class, remove unused class_xdb.
+	* cli/cli-decode.c (add_com_alias): Document THECLASS intended usage.
+	* breakpoint.c (_initialize_breakpoint): Replace class_alias
+	by a precise class.
+	* infcmd.c (_initialize_infcmd): Likewise.
+	* reverse.c (_initialize_reverse): Likewise.
+	* stack.c (_initialize_stack): Likewise.
+	* symfile.c (_initialize_symfile): Likewise.
+	* tracepoint.c (_initialize_tracepoint): Likewise.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
-	* tui/tui-windata.h (tui_display_data_from): Don't declare.
-	* tui/tui-windata.c (tui_display_data_from): Remove.
-	(tui_data_window::refresh_all): Update.
+	* cli/cli-decode.c (apropos_cmd): Produce output for aliases
+	when their aliased command is traversed.
+	(help_cmd): Add fput_command_names_styled call to
+	output command name and aliases when command has an alias.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-decode.h (help_cmd_list): Remove declaration.
+	* cli/cli-decode.c (help_cmd_list): Declare as static,
+	remove prefix argument, use bool for recurse arg, rework to show the aliases of
+	a command together with the command.
+	(fput_command_name_styled, fput_command_names_styled): New functions.
+	(print_help_for_command): Remove prefix arg, use bool for recurse arg, use
+	fput_command_name_styled.
+	(help_list, help_all): Update callers to remove prefix arg and use bool recurse.
+	* cli/cli-cmds.c (_initialize_cli_cmds): Update alias_command doc.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-setshow.h (cmd_show_list): Remove prefix argument.
+	* cli/cli-decode.c (do_show_prefix_cmd): Likewise.
+	* command.h (cmd_show_list): Likewise.
+	* dwarf2/index-cache.c (show_index_cache_command): Likewise.
+	* cli/cli-setshow.c (cmd_show_list): Use the prefix to produce the output.  Skip aliases.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* unittests/command-def-selftests.c (traverse_command_structure):
+	Verify all commands of a list have the same prefix command and
+	that only the top cmdlist commands have a null prefix.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-decode.c (lookup_cmd_for_prefix): Return the aliased command
+	as prefix, not one of its aliases.
+	(set_cmd_prefix): Remove.
+	(do_add_cmd): Centralize the setting of the prefix of a command, when
+	command is defined after its full chain of prefix commands.
+	(add_alias_cmd): Remove call to set_cmd_prefix, as do_add_cmd does it.
+	(add_setshow_cmd_full): Likewise.
+	(update_prefix_field_of_prefixed_commands): New function.
+	(add_prefix_cmd): Replace non working call to set_cmd_prefix by
+	update_prefix_field_of_prefixed_commands.
+	* gdb/remote-fileio.c (initialize_remote_fileio): Use the real
+	addresses of remote_set_cmdlist and remote_show_cmdlist given
+	as argument, not the address of an argument.
+	* gdb/remote-fileio.h (initialize_remote_fileio): Likewise.
+	* gdb/remote.c (_initialize_remote): Likewise.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-cmds.c (alias_command): Check for an existing alias
+	using lookup_cmd_composition, as valid_command_p is too strict
+	and forbids aliases that are the prefix of an existing alias
+	or command.
+	* cli/cli-decode.c (lookup_cmd_composition): Ensure a prefix
+	command is properly recognised as a valid command.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* unittests/help-doc-selftests.c: Rename to
+	unittests/command-def-selftests.c
+	* unittests/command-def-selftests.c (help_doc_tests): Update some
+	comments.
+	(command_structure_tests, traverse_command_structure): New namespace
+	and function.
+	(command_structure_invariants_tests): New function.
+	(_initialize_command_def_selftests) Renamed from
+	_initialize_help_doc_selftests, register command_structure_invariants
+	selftest.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-cmds.c (_initialize_cli_cmds): Define 'info set' as
+	an alias of 'show'.
+
+2020-05-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-lang.h: (ada_is_gnat_encoded_fixed_point_type): Renames
+	ada_is_fixed_point_type.  Update all callers.
+	(gnat_encoded_fixed_point_delta): Renames ada_delta.  Update
+	all callers.
+	* ada-lang.c (gnat_encoded_fixed_type_info): Renames fixed_type_info.
+	Update all callers.
+	* ada-typeprint.c (print_gnat_encoded_fixed_point_type): Renames
+	print_fixed_point_type.  Update all callers.
+	* ada-valprint.c (ada_value_print_num): Replace call to
+	ada_is_fixed_point_type by ada_is_gnat_encoded_fixed_point_type.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-14  Kevin Buettner  <kevinb@redhat.com>
 
-	* tui/tui-windata.h (tui_display_data_from_line): Don't declare.
-	* tui/tui-windata.c (tui_display_data_from_line): Remove.
-	(tui_display_data_from, tui_data_window::do_scroll_vertical): Call
-	tui_display_registers_from_line.
-	* tui/tui-regs.h (tui_display_registers_from_line): Update.
-	* tui/tui-regs.c (tui_display_registers_from_line): Remove
-	"force_display" parameter.
+	* nat/linux-btrace.c (btrace_this_cpu): Add check for AMD
+	processors.
+	(cpu_supports_bts): Add CV_AMD case.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-14  Laurent Morichetti  <Laurent.Morichetti@amd.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-regs.h (tui_first_reg_element_no_inline): Don't
-	declare.
-	* tui/tui-regs.c (tui_data_window::first_reg_element_no_inline):
-	Rename from tui_first_reg_element_no_inline.
-	(tui_display_reg_element_at_line)
-	(tui_display_registers_from_line): Update.
-	* tui/tui-data.h (struct tui_data_window)
-	<first_reg_element_no_inline>: New method.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-windata.c (tui_display_data_from)
-	(tui_data_window::do_scroll_vertical): Update.
-	* tui/tui-regs.h (tui_line_from_reg_element_no): Don't declare.
-	* tui/tui-regs.c (tui_data_window::line_from_reg_element_no):
-	Rename from tui_line_from_reg_element_no.
-	(tui_display_registers_from_line): Update.
-	* tui/tui-data.h (struct tui_data_window)
-	<line_from_reg_element_no>: New method.
-
-2019-07-17  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.h (tui_last_regs_line_no): Don't declare.
-	* tui/tui-regs.c (tui_data_window::last_regs_line_no): Rename from
-	tui_last_regs_line_no.
-	(tui_display_reg_element_at_line)
-	(tui_display_registers_from_line): Update.
-	* tui/tui-data.h (struct tui_data_window) <last_regs_line_no>: New
-	method.
+	* infrun.c (stop_all_threads): Collect multiple wait events at
+	each pass.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-14  Simon Marchi  <simon.marchi@efficios.com>
 
-	PR tui/24722:
-	* tui/tui-winsource.h (tui_update_all_breakpoint_info)
-	(tui_update_breakpoint_info): Add "being_deleted" parameter.
-	* tui/tui-winsource.c (tui_update_source_window_as_is): Update.
-	(tui_update_all_breakpoint_info): Add "being_deleted" parameter.
-	(tui_update_breakpoint_info): Likewise.
-	* tui/tui-hooks.c (tui_event_create_breakpoint)
-	(tui_event_delete_breakpoint, tui_event_modify_breakpoint):
-	Update.
+	* gdbtypes.h (TYPE_CODE): Remove.  Change all call sites to use
+	type::code instead.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-14  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-stack.c (tui_show_frame_info): Consolidate "if"s.
+	* gdbtypes.h (struct type) <code, set_code>: New methods.
+	(TYPE_CODE): Use type::code.  Change all call sites used to set
+	the code to use type::set_code instead.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	    Tom de Vries  <tdevries@suse.de>
+	    Pedro Alves  <palves@redhat.com>
 
-	* tui/tui-winsource.c (tui_update_source_window_as_is)
-	(tui_update_source_windows_with_addr): Update.
-	* tui/tui-source.h (tui_set_source_content)
-	(tui_show_symtab_source): Add "win_info" parameter.
-	* tui/tui-source.c (tui_set_source_content): Add "win_info"
-	parameter.
-	(tui_show_symtab_source): Likewise.
+	PR threads/25478
+	* infrun.c (stop_all_threads): Do NOT ignore
+	TARGET_WAITKIND_NO_RESUMED, TARGET_WAITKIND_THREAD_EXITED,
+	TARGET_WAITKIND_EXITED, TARGET_WAITKIND_SIGNALLED wait statuses
+	received.
+	(handle_no_resumed): Remove code handling a live inferior with no
+	threads.
+	* remote.c (has_single_non_exited_thread): New.
+	(remote_target::update_thread_list): Do not delete a thread if is
+	the last thread of the process.
+	* thread.c (thread_select): Call delete_exited_threads instead of
+	prune_threads.
+
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infrun.c (stop_all_threads): Enable/disable thread events of all
+	targets.  Move a debug message denoting the end of the function
+	into the SCOPED_EXIT block.
+
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* process-stratum-target.h: Include <set>.
+	(all_non_exited_process_targets, switch_to_target_no_thread): New
+	function declarations.
+	* process-stratum-target.c (all_non_exited_process_targets)
+	(switch_to_target_no_thread): New function implementations.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-	* tui/tui-wingeneral.c
-	(tui_check_and_display_highlight_if_needed): Check can_highlight.
+	* infrun.c (handle_inferior_event): Extract out a piece of code
+	into...
+	(mark_non_executing_threads): ...this new function.
 
-2019-07-17  Tom Tromey  <tom@tromey.com>
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-	* tui/tui-data.h (struct tui_win_info) <can_scroll>: New method.
-	(struct tui_cmd_window) <can_scroll>: New method.
-	* tui/tui-command.c (tui_dispatch_ctrl_char): Use can_scroll
-	method.
+	* infrun.c (resume_1): Move a 'regcache_read_pc' call down to first
+	use.
 
-2019-07-17  Tom Tromey  <tromey@adacore.com>
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-	* ui-out.h (class ui_out) <field_signed, field_fmt_signed,
-	do_field_signed>: Rename.  Change type of "value".
-	* ui-out.c (ui_out::field_signed): Rename from field_int.
-	Change type of "value".
-	(ui_out::field_fmt_signed): Rename from field_fmt_int.  Change
-	type of "value".
-	* tui/tui-out.h (class tui_ui_out) <do_field_signed>: Rename from
-	do_field_int.  Change type of "value".
-	* tui/tui-out.c (tui_ui_out::do_field_signed): Rename from
-	do_field_int.  Change type of "value".
-	* tracepoint.c (trace_status_mi, tfind_1)
-	(print_one_static_tracepoint_marker): Update.
-	* thread.c (print_thread_info_1, print_selected_thread_frame):
-	Update.
-	* stack.c (print_frame, print_frame_info): Update.
-	* spu-tdep.c (info_spu_signal_command, info_spu_dma_cmdlist):
-	Update.
-	* source.c (print_source_lines_base): Update.
-	* skip.c (info_skip_command): Update.
-	* record-btrace.c (btrace_ui_out_decode_error)
-	(btrace_call_history_src_line): Update.
-	* python/py-framefilter.c (py_print_single_arg, py_print_frame):
-	Update.
-	* progspace.c (print_program_space): Update.
-	* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Update.
-	* mi/mi-out.h (class mi_ui_out) <do_field_signed>: Rename from
-	do_field_int.  Change type of "value".
-	* mi/mi-out.c (mi_ui_out::do_table_begin)
-	(mi_ui_out::do_table_header): Update.
-	(mi_ui_out::do_field_signed): Rename from do_field_int.  Change
-	type of "value".
-	* mi/mi-main.c (mi_cmd_thread_list_ids, print_one_inferior)
-	(mi_cmd_data_list_changed_registers, output_register)
-	(mi_cmd_data_read_memory, mi_load_progress)
-	(mi_cmd_trace_frame_collected): Update.
-	* mi/mi-interp.c (mi_on_normal_stop_1, mi_output_solib_attribs):
-	Update.
-	* mi/mi-cmd-var.c (print_varobj, mi_cmd_var_create)
-	(mi_cmd_var_delete, mi_cmd_var_info_num_children)
-	(mi_cmd_var_list_children, varobj_update_one): Update.
-	* mi/mi-cmd-stack.c (mi_cmd_stack_info_depth)
-	(mi_cmd_stack_list_args, list_arg_or_local): Update.
-	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file): Update.
-	* inferior.c (print_inferior): Update.
-	* gdb_bfd.c (print_one_bfd): Update.
-	* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn):
-	Update.
-	* darwin-nat-info.c (darwin_debug_regions_recurse): Update.
-	* cli-out.h (class cli_ui_out) <do_field_signed>: Rename from
-	do_field_int.  Change type of "value".
-	* cli-out.c (cli_ui_out::do_field_signed): Rename from
-	do_field_int.  Change type of "value".
-	* breakpoint.c (watchpoint_check, print_breakpoint_location)
-	(print_one_breakpoint_location, print_it_catch_fork)
-	(print_one_catch_fork, print_it_catch_vfork)
-	(print_one_catch_vfork, print_it_catch_solib)
-	(print_it_catch_exec, print_it_ranged_breakpoint)
-	(print_mention_watchpoint, print_mention_masked_watchpoint)
-	(bkpt_print_it, update_static_tracepoint): Update.
-	* break-catch-throw.c (print_it_exception_catchpoint): Update.
-	* break-catch-syscall.c (print_it_catch_syscall): Update.
-	* ada-tasks.c (print_ada_task_info): Update.
-	* ada-lang.c (print_it_exception, print_mention_exception):
-	Update.
+	* regcache.c (regcache_read_pc_protected): New function
+	implementation that returns 0 if the PC cannot read via
+	'regcache_read_pc'.
+	* infrun.c (proceed): Call 'regcache_read_pc_protected'
+	instead of 'regcache_read_pc'.
+	(keep_going_pass_signal): Ditto.
 
-2019-07-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-05-13  Tom Tromey  <tromey@adacore.com>
 
-	PR breakpoints/24541
-	* gdbarch.c: Regenerate.
-	* gdbarch.h: Regenerate.
-	* gdbarch.sh: Adjust return type and parameter types for
-	'stap_adjust_register'.
-	(i386_stap_adjust_register): Adjust signature and return new
-	register name.
-	* stap-probe.c (stap_parse_register_operand): Adjust use of
-	'gdbarch_stap_adjust_register'.
-
-2019-07-17  Tom Tromey  <tromey@adacore.com>
-
-	* s390-linux-nat.c (s390_watch_area): Remove typedef.  Don't
-	declare VEC.
-	(struct s390_debug_reg_state) <watch_areas, break_areas>: Now
-	std::vector.
-	(struct s390_process_info): Add initializers.
-	(s390_add_process): Use new.
-	(s390_linux_nat_target::low_forget_process): Use delete.
-	(s390_linux_nat_target::low_new_fork)
-	(s390_linux_nat_target::stopped_by_watchpoint)
-	(s390_linux_nat_target::low_prepare_to_resume)
-	(s390_linux_nat_target::insert_watchpoint)
-	(s390_linux_nat_target::insert_hw_breakpoint)
-	(s390_linux_nat_target::remove_watchpoint)
-	(s390_linux_nat_target::remove_hw_breakpoint): Update.
+	* ada-lang.c (align_value): Remove.
+	(ada_template_to_fixed_record_type_1): Use align_up.
 
-2019-07-16  John Baldwin  <jhb@FreeBSD.org>
+2020-05-13  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-	* aarch64-fbsd-nat.c: Include regcache.h.
-	(getregs_supplies, getfpregs_supplies): Remove unused gdbarch
-	argument.
-	(aarch64_fbsd_nat_target::fetch_registers)
-	(aarch64_fbsd_nat_target::store_registers): Remove gdbarch
-	variable.
-	* arm-fbsd-nat.c, riscv-fbsd-nat.c: Likewise.
+	* async-event.c: Update the copyright year.
+	* async-event.h: Update the copyright year.
 
-2019-07-16  John Baldwin  <jhb@FreeBSD.org>
+2020-05-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* fbsd-nat.c: Include gdbarch.h.
+	* objfiles.h (is_addr_in_objfile,
+	shared_objfile_contains_address_p): Return bool.
+	* objfile.c (is_addr_in_objfile,
+	shared_objfile_contains_address_p): Return bool.
 
-2019-07-15  Tom Tromey  <tromey@adacore.com>
+2020-05-11  Tom Tromey  <tromey@adacore.com>
 
-	* mi/mi-out.c (mi_ui_out::do_field_int): Use plongest.
-
-2019-07-15  Tom Tromey  <tromey@adacore.com>
-
-	* mi/mi-out.h (class mi_ui_out) <do_field_unsigned>: Declare.
-	* mi/mi-out.c (mi_ui_out::do_field_unsigned): New method.
-	* cli-out.h (class cli_ui_out) <do_field_unsigned>: Declare.
-	* cli-out.c (cli_ui_out::do_field_int): New method.
-	* ui-out.c (ui_out::field_unsigned): New method.
-	* symfile.c (generic_load): Use field_unsigned.
-	(print_transfer_performance): Likewise.
-	* record-btrace.c (ui_out_field_uint): Remove.
-	(btrace_call_history_insn_range, btrace_call_history): Use
-	field_unsigned.
-	* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn): Use
-	field_unsigned.
-	* ui-out.h (class ui_out) <field_unsigned>: New method.
-	<do_field_unsigned>: Likewise.
-
-2019-07-15  Tom Tromey  <tromey@adacore.com>
-
-	* mi/mi-main.c (list_available_thread_groups): Use field_string.
-	* mi/mi-interp.c (mi_memory_changed): Use field_string.
-	* target.c (flash_erase_command): Use field_string.
-	* infrun.c (print_signal_received_reason): Use field_string.
-	* i386-tdep.c (i386_mpx_print_bounds): Use field_string.
-	* breakpoint.c (maybe_print_thread_hit_breakpoint): Use
-	field_string.
-	* ada-tasks.c (print_ada_task_info): Use field_string.
+	* cli/cli-cmds.c (info_command): Restore.
+	(_initialize_cli_cmds): Use add_prefix_command for "info".
+	* gdb-gdb.gdb.in: Restore breakpoint on info_command.
 
-2019-07-15  Tom Tromey  <tromey@adacore.com>
+2020-05-11  Tom Tromey  <tromey@adacore.com>
 
-	* target.c (flash_erase_command): Use field_core_addr.
-	* symfile.c (generic_load): Use field_core_addr.
-	* sparc64-linux-tdep.c (sparc64_linux_handle_segmentation_fault):
-	Use field_core_addr.
-	* i386-linux-tdep.c (i386_linux_handle_segmentation_fault): Use
-	field_core_addr.
+	* ada-lang.c (ada_value_primitive_field): Now public.
+	* ada-lang.h (ada_value_primitive_field): Declare.
+	* ada-valprint.c (print_field_values): Use
+	ada_value_primitive_field for wrapper fields.
 
-2019-07-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-05-11  Tom de Vries  <tdevries@suse.de>
 
-	* dwarf2loc.c (dwarf2_evaluate_property): Sign extend property
-	value if its desired type is smaller than a CORE_ADDR and signed.
+	* dwarf2/index-write.c (debug_names::psymbol_tag): Handle
+	MODULE_DOMAIN.
 
-2019-07-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-05-11  Tom de Vries  <tdevries@suse.de>
 
-	* dwarf2loc.c (dwarf2_evaluate_property): Update to take account
-	of changes to field names, and use new is_reference field to
-	decide if a property is a reference or not.
-	* dwarf2loc.h (struct dwarf2_locexpr_baton): Add 'is_reference'
-	field.
-	(struct dwarf2_property_baton): Update header comment, rename
-	'referenced_type' to 'property_type' and update comments.
-	* dwarf2read.c (attr_to_dynamic_prop): Add extra parameter to hold
-	default property type, store in property baton, update to take
-	accound of renamed field.
-	(read_func_scope): Update call to attr_to_dynamic_prop.
-	(read_array_type): Likewise.
-	(dwarf2_per_cu_addr_sized_int_type): New function.
-	(read_subrange_index_type): Move type finding code to
-	dwarf2_per_cu_addr_sized_int_type.
-	(read_subrange_type): Update calls to attr_to_dynamic_prop.
-	(dwarf2_per_cu_addr_type): New function.
-	(set_die_type): Update calls to attr_to_dynamic_prop.
-
-2019-07-12  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* dwarf2read.c (read_subrange_index_type): New function.
-	(read_subrange_type): Move code into new function and call it.
-	* gdbtypes.c (create_range_type): Add some asserts.
-
-2019-07-12  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* dwarf2loc.c (dwarf2_evaluate_property): Change return type, and
-	update return statements.
-	* dwarf2loc.h (dwarf2_evaluate_property): Update return type on
-	declaration, and update comment to match.
-	* gdbtypes.c (resolve_dynamic_array): Update call to
-	dwarf2_evaluate_property to match new return type.
-
-2019-07-12  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* valarith.c (value_subscripted_rvalue): Change lowerbound
-	parameter type from int to LONGEST.
-	* value.h (value_subscripted_rvalue): Likewise in declaration.
-
-2019-07-11  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* cli/cli-utils.c (info_print_command_completer): New function.
-	* cli/cli-utils.h: Add 'completer.h' include, and forward
-	declaration for 'struct cmd_list_element'.
-	(info_print_command_completer): Declare.
-	* stack.c (_initialize_stack): Add completer for 'info locals' and
-	'info args'.
-	* symtab.c (_initialize_symtab): Add completer for 'info
-	variables' and 'info functions'.
-	* NEWS: Mention completion for additional info commands.
-
-2019-07-11  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* cli/cli-utils.c (extract_info_print_args): Delete.
-	(extract_arg_maybe_quoted): Delete.
-	(info_print_options_defs): New variable.
-	(make_info_print_options_def_group): New function.
-	(extract_info_print_options): Define new function.
-	* cli/cli-utils.h (extract_info_print_args): Delete.
-	(struct info_print_options): New structure.
-	(extract_info_print_options): Declare new function.
-	* stack.c (info_locals_command): Update to use new
-	extract_info_print_options, also add a header comment.
-	(info_args_command): Likewise.
-	* symtab.c (info_variables_command): Likewise.
-	(info_functions_command): Likewise.
-
-2019-07-11  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* cli/cli-option.c (parse_option): Use extract_string_maybe_quoted
-	to extract string arguments.
-	* common/common-utils.c (extract_string_maybe_quoted): New function.
-	* common/common-utils.h (extract_string_maybe_quoted): Declare.
-
-2019-07-11  Tom Tromey  <tromey@adacore.com>
-
-	* main.c (get_init_files): Use GDBINIT, not gdbinit.
-	* auto-load.c (file_is_auto_load_safe): Use GDBINIT, not gdbinit.
-	* top.h (gdbinit): Don't declare.
-	* cli/cli-cmds.c (init_cli_cmds): Remove, merging contents
-	into...
-	(_initialize_cli_cmds): ...here.  Use GDBINIT, not gdbinit.
-	* top.c (gdb_init): Don't call init_cli_cmds.
-	(gdbinit): Remove.
-	* cli/cli-cmds.h (init_cli_cmds): Don't declare.
+	PR symtab/25941
+	* dwarf2/read.c (create_cus_from_debug_names_list): Initialize CUs
+	with length 0, if not gdb-produced.
+	(cutu_reader::cutu_reader): Set CU length to actual length if 0.
 
-2019-07-11  Tom Tromey  <tromey@adacore.com>
+2020-05-09  Tom de Vries  <tdevries@suse.de>
 
-	* python/py-inferior.c (add_thread_object): Don't use thread_obj
-	after it has been moved.
+	PR gdb/25955
+	* break-catch-throw.c (check_status_exception_catchpoint): Fix name
+	calculation.
 
-2019-07-10  Simon Marchi  <simon.marchi@polymtl.ca>
+2020-05-09  Tom Tromey  <tom@tromey.com>
 
-	* valops.c (value_must_coerce_to_target): Change return type to
-	bool.
-	* value.h (value_must_coerce_to_target): Likewise.
+	* top.c (server_command): Now bool.
+	* top.h (server_command): Now bool.
 
-2019-07-10  Simon Marchi  <simon.marchi@efficios.com>
+2020-05-08  Tom Tromey  <tromey@adacore.com>
 
-	* breakpoint.c (is_hardware_watchpoint): Remove
-	forward-declaration.
-	(is_masked_watchpoint): Change return type to bool.
-	(is_tracepoint): Likewise.
-	(is_breakpoint): Likewise.
-	(is_hardware_watchpoint): Likewise.
-	(is_watchpoint): Likewise.
-	(is_no_memory_software_watchpoint): Likewise.
-	(is_catchpoint): Likewise.
-	(breakpoint_1): Make FILTER parameter's return type bool.
-	is_masked_watchpoint): Change return type to bool.
-	(save_breakpoints): Make FILTER parameter's return type bool.
-	* breakpoint.h (is_breakpoint): Change return type to bool.
-	(is_watchpoint): Likewise.
-	(is_catchpoint): Likewise.
-	(is_tracepoint): Likewise.
-
-2019-07-10  Tom Tromey  <tom@tromey.com>
-
-	* defs.h: Don't include gdbarch.h.
-	* aarch64-ravenscar-thread.c, aarch64-tdep.c, alpha-bsd-tdep.h,
-	alpha-linux-tdep.c, alpha-mdebug-tdep.c, arch-utils.h, arm-tdep.h,
-	ax-general.c, btrace.c, buildsym-legacy.c, buildsym.h, c-lang.c,
-	cli/cli-decode.h, cli/cli-dump.c, cli/cli-script.h,
-	cli/cli-style.h, coff-pe-read.h, compile/compile-c-support.c,
-	compile/compile-cplus.h, compile/compile-loc2c.c, corefile.c,
-	cp-valprint.c, cris-linux-tdep.c, ctf.c, d-lang.c, d-namespace.c,
-	dcache.c, dicos-tdep.c, dictionary.c, disasm-selftests.c,
-	dummy-frame.c, dummy-frame.h, dwarf2-frame-tailcall.c,
-	dwarf2expr.c, expression.h, f-lang.c, frame-base.c,
-	frame-unwind.c, frv-linux-tdep.c, gdbarch-selftests.c, gdbtypes.h,
-	go-lang.c, hppa-nbsd-tdep.c, hppa-obsd-tdep.c, i386-dicos-tdep.c,
-	i386-tdep.h, ia64-vms-tdep.c, interps.h, language.c,
-	linux-record.c, location.h, m2-lang.c, m32r-linux-tdep.c,
-	mem-break.c, memattr.c, mn10300-linux-tdep.c, nios2-linux-tdep.c,
-	objfiles.h, opencl-lang.c, or1k-linux-tdep.c, p-lang.c,
-	parser-defs.h, ppc-tdep.h, probe.h, python/py-record-btrace.c,
-	record-btrace.c, record.h, regcache-dump.c, regcache.h,
-	riscv-fbsd-tdep.c, riscv-linux-tdep.c, rust-exp.y,
-	sh-linux-tdep.c, sh-nbsd-tdep.c, source-cache.c,
-	sparc-nbsd-tdep.c, sparc-obsd-tdep.c, sparc-ravenscar-thread.c,
-	sparc64-fbsd-tdep.c, std-regs.c, target-descriptions.h,
-	target-float.c, tic6x-linux-tdep.c, tilegx-linux-tdep.c, top.c,
-	tracefile.c, trad-frame.c, type-stack.h, ui-style.c, utils.c,
-	utils.h, valarith.c, valprint.c, varobj.c, x86-tdep.c,
-	xml-support.h, xtensa-linux-tdep.c, cli/cli-cmds.h: Update.
-	* s390-linux-nat.c, procfs.c, inf-ptrace.c: Likewise.
-
-2019-07-10  Tom Tromey  <tromey@adacore.com>
-
-	* ada-lang.h (is_ada_exception_catchpoint): Declare.
-	* breakpoint.c (init_ada_exception_breakpoint): Register as
-	bp_catchpoint.
-	(print_one_breakpoint_location, print_one_breakpoint): Use
-	is_ada_exception_catchpoint.
-	* ada-lang.c (class ada_catchpoint_location): Pass
-	bp_loc_software_breakpoint to bp_location constructor.
-	(is_ada_exception_catchpoint): New function.
-
-2019-07-10  Tom Tromey  <tromey@adacore.com>
-
-	* arm-tdep.c (arm_exidx_entry_s): Remove typedef.  Don't define
-	VEC.
-	(struct arm_exidx_entry): New method operator<.
-	(struct arm_exidx_data) <section_maps>: Change type.
-	(arm_exidx_data_free): Remove.
-	(arm_exidx_data_key): Change type.  Move lower.
-	(arm_exidx_new_objfile): Update.
-	(arm_compare_exidx_entries): Remove.
-	(arm_find_exidx_entry, _initialize_arm_tdep)
+	* dwarf2/read.c (read_lexical_block_scope): Don't process a DIE
+	already being processed.
 
-2019-07-10  Tom Tromey  <tromey@adacore.com>
+2020-05-08  Tom Tromey  <tom@tromey.com>
 
-	* solib-spu.c (ocl_program_data_key): Change type.
-	(append_ocl_sos, ocl_enable_break, _initialize_spu_solib):
+	* printcmd.c (struct display) <next>: Remove.
+	<display>: New constructor.
+	<exp_string>: Now a std::string.
+	<enabled_p>: Now a bool.
+	(display_number): Move definition earlier.
+	(displays): Rename from display_chain.  Now a std::vector.
+	(ALL_DISPLAYS, ALL_DISPLAYS_SAFE): Remove.
+	(display_command): Update.
+	(do_one_display, disable_display)
+	(enable_disable_display_command, do_enable_disable_display):
 	Update.
-
-2019-07-10  Tom Tromey  <tromey@adacore.com>
-
-	* solib-aix.c (lm_info_aix_p): Remove typedef.  Don't define VEC.
-	(struct solib_aix_inferior_data) <library_list>: Change type.
-	(solib_aix_inferior_data_handle): Change type.
-	(get_solib_aix_inferior_data): Update.
-	(solib_aix_free_library_list): Remove.
-	(library_list_start_library): Update.
-	(solib_aix_parse_libraries, solib_aix_get_library_list): Change
-	return type.
-	(solib_aix_get_library_list)
-	(solib_aix_solib_create_inferior_hook, solib_aix_current_sos)
-	(solib_aix_normal_stop_observer, _initialize_solib_aix): Update.
-
-2019-07-10  Tom Tromey  <tromey@adacore.com>
-
-	* solib-dsbt.c (struct dsbt_info): Add initializers.
-	(solib_dsbt_pspace_data): Change type.
-	(dsbt_pspace_data_cleanup): Remove.
-	(get_dsbt_info, _initialize_dsbt_solib): Update.
-
-2019-07-10  Tom Tromey  <tromey@adacore.com>
-
-	* spu-tdep.c (spu_overlay_data): Change type.
-	(spu_get_overlay_table, spu_overlay_new_objfile)
-	(_initialize_spu_tdep): Update.
-
-2019-07-10  Tom Tromey  <tromey@adacore.com>
-
-	* gdb-stabs.h (struct dbx_symfile_info): Add initializers and
-	destructor.
-	(dbx_objfile_data_key): Change type and declare later.
-	(DBX_SYMFILE_INFO): Rewrite.
-	* dbxread.c (dbx_objfile_data_key): Change type.
-	(dbx_symfile_init): Update.
-	(~dbx_symfile_info): Rename from dbx_free_symfile_info.  Update.
-	(coffstab_build_psymtabs, elfstab_build_psymtabs)
-	(stabsect_build_psymtabs, _initialize_dbxread): Update.
-
-2019-07-10  Tom Tromey  <tromey@adacore.com>
-
-	* jit.c (jit_program_space_key): Change type.  Move lower.
-	(get_jit_program_space_data): Update.
-	(jit_program_space_data_cleanup): Remove.
-	(jit_breakpoint_deleted, free_objfile_data, _initialize_jit):
+	(free_display): Remove.
+	(clear_displays): Rewrite.
+	(delete_display): Update.
+	(map_display_numbers): Use function_view.  Remove "data"
+	parameter.  Update.
+	(do_delete_display): Remove.
+	(undisplay_command): Update.
+	(do_one_display, do_displays, disable_display)
+	(info_display_command): Update.
+	(do_enable_disable_display): Remove.
+	(enable_disable_display_command)
+	(clear_dangling_display_expressions): Update.
+
+2020-05-08  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (set_symbol_cache_size)
+	(maintenance_print_symbol_cache, maintenance_flush_symbol_cache)
+	(maintenance_print_symbol_cache_statistics): Update.
+	* symmisc.c (print_symbol_bcache_statistics)
+	(print_objfile_statistics, maintenance_print_objfiles)
+	(maintenance_info_symtabs, maintenance_check_symtabs)
+	(maintenance_expand_symtabs, maintenance_info_line_tables):
 	Update.
-	(struct jit_program_space_data): Add initializers.
+	* symfile-debug.c (set_debug_symfile): Update.
+	* source.c (forget_cached_source_info): Update.
+	* python/python.c (gdbpy_progspaces): Update.
+	* psymtab.c (maintenance_info_psymtabs): Update.
+	* probe.c (parse_probes): Update.
+	* linespec.c (iterate_over_all_matching_symtabs)
+	(collect_symtabs_from_filename, search_minsyms_for_name): Update.
+	* guile/scm-progspace.c (gdbscm_progspaces): Update.
+	* exec.c (exec_target::close): Update.
+	* ada-tasks.c (ada_tasks_new_objfile_observer): Update.
+	* breakpoint.c (print_one_breakpoint_location)
+	(create_longjmp_master_breakpoint)
+	(create_std_terminate_master_breakpoint): Update.
+	* progspace.c (program_spaces): Now a std::vector.
+	(maybe_new_address_space): Update.
+	(add_program_space): Remove.
+	(program_space::program_space): Update.
+	(remove_program_space): Update.
+	(number_of_program_spaces): Remove.
+	(print_program_space, update_address_spaces): Update.
+	* progspace.h (program_spaces): Change type.
+	(ALL_PSPACES): Remove.
+	(number_of_program_spaces): Don't declare.
+	(struct program_space) <next>: Remove.
+
+2020-05-08  Tom Tromey  <tom@tromey.com>
+
+	* mi/mi-cmd-file.c (mi_cmd_file_list_shared_libraries): Update.
+	* solib-svr4.c (svr4_fetch_objfile_link_map): Update.
+	(enable_break): Update.
+	* solib-frv.c (frv_fdpic_find_global_pointer): Update.
+	(frv_fdpic_find_canonical_descriptor): Update.
+	(frv_fetch_objfile_link_map): Update.
+	* progspace.c (program_space::free_all_objfiles): Update.
+	(program_space::solibs): New method.
+	* progspace.h (struct program_space) <solibs>: New method.
+	* solist.h (master_so_list): Don't declare.
+	(ALL_SO_LIBS): Remove.
+	* solib.h (so_list_head): Remove.
+	(update_solib_list): Update comment.
+	* solib.c (master_so_list): Remove.
+	(solib_used, update_solib_list, solib_add)
+	(info_sharedlibrary_command, clear_solib)
+	(reload_shared_libraries_1, remove_user_added_objfile): Update.
+
+2020-05-08  Tom Tromey  <tom@tromey.com>
+
+	* extension.c (extension_languages): Now a std::array.
+	(ALL_EXTENSION_LANGUAGES): Remove.
+	(get_ext_lang_defn, get_ext_lang_of_file)
+	(eval_ext_lang_from_control_command): Update.
+	(finish_ext_lang_initialization)
+	(auto_load_ext_lang_scripts_for_objfile)
+	(ext_lang_type_printers::ext_lang_type_printers)
+	(apply_ext_lang_type_printers)
+	(ext_lang_type_printers::~ext_lang_type_printers)
+	(apply_ext_lang_val_pretty_printer, apply_ext_lang_frame_filter)
+	(preserve_ext_lang_values, get_breakpoint_cond_ext_lang)
+	(breakpoint_ext_lang_cond_says_stop, check_quit_flag)
+	(get_matching_xmethod_workers, ext_lang_colorize)
+	(ext_lang_before_prompt): Update.
+	(ALL_ENABLED_EXTENSION_LANGUAGES): Remove.
 
-2019-07-10  Tom Tromey  <tromey@adacore.com>
+2020-05-08  Tom Tromey  <tom@tromey.com>
 
-	* solib-darwin.c (struct darwin_info): Add initializers.
-	(solib_darwin_pspace_data): Change type.
-	(darwin_pspace_data_cleanup): Remove.
-	(get_darwin_info, _initialize_darwin_solib): Update.
-
-2019-07-10  Tom Tromey  <tromey@adacore.com>
-
-	* remote-sim.c (struct sim_inferior_data): Add initializers,
-	constructor, and destructor.
-	(sim_inferior_data_key): Change type.  Move lower.
-	(check_for_duplicate_sim_descriptor): Update.
-	(get_sim_inferior_data): Use new.  Update.
-	(~sim_inferior_data_cleanup): Rename from
-	sim_inferior_data_cleanup.  Simplify.
-	(gdbsim_close_inferior, simulator_command)
-	(sim_command_completer, _initialize_remote_sim): Update.
-	(next_pid, INITIAL_PID): Move earlier.
-
-2019-07-10  Tom Tromey  <tromey@adacore.com>
-
-	* python/python-internal.h (create_thread_object): Return
-	gdbpy_ref.
-	* python/py-infthread.c (create_thread_object): Return gdbpy_ref.
-	* python/py-inferior.c (struct threadlist_entry): Add
-	constructor.
-	<thread_obj>: Now a gdbpy_ref.
-	(thread_to_thread_object): Update.
-	(add_thread_object): Use new.
-	(delete_thread_object): Use delete.
-	(infpy_threads): Update.
-	(py_free_inferior): Update.  Construct "inf_obj" after acquiring
-	GIL.
+	* symtab.h (class demangle_result_storage) <set_malloc_ptr>: New
+	overload.
+	<swap_string, m_string>: Remove.
+	* symtab.c (demangle_for_lookup, completion_list_add_symbol):
+	Update.
+	* stabsread.c (define_symbol, read_type): Update.
+	* linespec.c (find_linespec_symbols): Update.
+	* gnu-v3-abi.c (gnuv3_get_typeid): Update.
+	* dwarf2/read.c (dwarf2_canonicalize_name): Update.
+	* dbxread.c (read_dbx_symtab): Update.
+	* cp-support.h (cp_canonicalize_string_full)
+	(cp_canonicalize_string, cp_canonicalize_string_no_typedefs):
+	Return unique_xmalloc_ptr.
+	* cp-support.c (inspect_type): Update.
+	(cp_canonicalize_string_full): Return unique_xmalloc_ptr.
+	(cp_canonicalize_string_no_typedefs, cp_canonicalize_string):
+	Likewise.
+	* c-typeprint.c (print_name_maybe_canonical): Update.
+	* break-catch-throw.c (check_status_exception_catchpoint):
+	Update.
 
-2019-07-10  Tom Tromey  <tromey@adacore.com>
+2020-05-08  Tom de Vries  <tdevries@suse.de>
 
-	* valops.c (value_cast): Specialize error message for Ada.
+	* infrun.c (follow_fork): Copy current_line and current_symtab to
+	child thread.
 
-2019-07-10  Simon Marchi  <simon.marchi@polymtl.ca>
+2020-05-07  Simon Marchi  <simon.marchi@efficios.com>
 
-	* breakpoint.c (breakpoint_1): Update doc and parameter names.
+	* async-event.c (struct async_signal_handler, struct
+	async_event_handler): Reformat, remove typedef.
 
-2019-07-10  Simon Marchi  <simon.marchi@polymtl.ca>
+2020-05-07  Simon Marchi  <simon.marchi@efficios.com>
 
-	* breakpoint.h (bpstat_explains_signal, bpstat_causes_stop,
-	bpstat_should_step): Return bool, adjust comments.
-	* breakpoint.c (bpstat_explains_signal, bpstat_causes_stop,
-	bpstat_should_step): Likewise.
+	* gdbtypes.h (TYPE_DYN_PROP_LIST): Remove.  Update all users
+	access thistype->main_type->dyn_prop_list directly.
 
-2019-07-10  Alan Hayward  <alan.hayward@arm.com>
+2020-05-07  Simon Marchi  <simon.marchi@efficios.com>
 
-	* features/Makefile: Use feature target descriptions for Arm.
-	* features/arm/arm-core.c: Generate new file.
-	* features/arm/arm-fpa.c: Likewise.
-	* features/arm/arm-m-profile-with-fpa.xml: Likewise.
-	* features/arm/arm-m-profile.c: Likewise.
-	* features/arm/arm-vfpv2.c: Likewise.
-	* features/arm/arm-vfpv3.c: Likewise.
-	* features/arm/xscale-iwmmxt.c: Likewise.
-	* target-descriptions.c (maint_print_c_tdesc_cmd): Add Arm.
+	* gdbtypes.h (struct type) <remove_dyn_prop>: New method.
+	(remove_dyn_prop): Remove.  Update all users to use
+	type::remove_dyn_prop.
+	* gdbtypes.c (remove_dyn_prop): Rename to...
+	(type::remove_dyn_prop): ... this.
 
-2019-07-10  Alan Hayward  <alan.hayward@arm.com>
+2020-05-07  Simon Marchi via Gdb-patches  <gdb-patches@sourceware.org>
 
-	* arm-linux-nat.c (arm_linux_nat_target::read_description): Check
-	ptrace earlier.
+	* gdbtypes.h (struct type) <add_dyn_prop>: New method.
+	(add_dyn_prop): Remove.  Update all users to use
+	type::add_dyn_prop.
+	* gdbtypes.c (add_dyn_prop): Rename to...
+	(type::add_dyn_prop): ... this.
 
-2019-07-10  Alan Hayward  <alan.hayward@arm.com>
+2020-05-07  Simon Marchi  <simon.marchi@efficios.com>
 
-	* features/aarch64-pauth.c: Regenerate.
+	* gdbtypes.h (struct type) <get_dyn_prop>: New method.
+	(get_dyn_prop): Remove.  Update all users to use
+	type::dyn_prop.
+	* gdbtypes.c (get_dyn_prop): Rename to...
+	(type::dyn_prop): ... this.
 
-2019-07-09  Simon Marchi  <simon.marchi@polymtl.ca>
+2020-05-06  Simon Marchi  <simon.marchi@efficios.com>
 
-	* breakpoint.h (struct bpstat_what) <is_longjmp>: Change type to
-	bool.
-	(bpstat_what): Use false instead of 0.
+	* gdbtypes.h (struct main_type) <flag_static>: Remove.
 
-2019-07-09  Pedro Alves  <palves@redhat.com>
+2020-05-06  Simon Marchi  <simon.marchi@efficios.com>
 
-	* break-catch-throw.c (is_exception_catchpoint): New.
-	* breakpoint.c (print_one_breakpoint_location): New parameter
-	'raw_loc'.  Handle it.  Use
-	is_watchpoint/is_catchpoint/is_exception_catchpoint instead of
-	looking at the breakpoint's type.
-	(print_one_breakpoint): If handling "maint info breakpoints", also
-	print locations of exception catchpoints.
-	* breakpoint.h (is_exception_catchpoint): Declare.
-
-2019-07-09  Pedro Alves  <palves@redhat.com>
-
-	* break-catch-throw.c (print_one_exception_catchpoint): Skip the
-	"addr" field.
-	(allocate_location_exception_catchpoint): New.
-	(handle_gnu_v3_exceptions): Don't reset 'type' to bp_breakpoint.
-	(initialize_throw_catchpoint_ops): Install
-	allocate_location_exception_catchpoint as allocate_location
-	method.
-	* breakpoint.c (bpstat_what) <bp_catch>: Set action to
-	BPSTAT_WHAT_SINGLE if not stopping and the location's type is not
-	bp_loc_other.
-	(breakpoint_address_is_meaningful): Delete.
-	(bl_address_is_meaningful): New.
-	(breakpoint_locations_match): Adjust comment.
-	(bp_location_from_bp_type): New, factored out of...
-	(bp_location::bp_location(breakpoint *)): ... this.
-	(bp_location::bp_location(breakpoint *, bp_loc_type)): New,
-	factored out of...
-	(bp_location::bp_location(breakpoint *)): ... this.  Reimplement.
-	(bp_loc_is_permanent): Use bl_address_is_meaningful instead of
-	breakpoint_address_is_meaningful.
-	(bp_locations_compare): Adjust comment.
-	(update_global_location_list): Use bl_address_is_meaningful
-	instead of breakpoint_address_is_meaningful.
-	* breakpoint.h (bp_location::bp_location(breakpoint *)): New
-	explicit.
-	(bp_location::bp_location(breakpoint *, bp_loc_type)): Declare.
-	* python/py-breakpoint.c (bppy_get_location): No longer check
-	whether location is null.
-
-2019-07-09  Pedro Alves  <palves@redhat.com>
-
-	PR c++/15468
-	* breakpoint.c (print_one_breakpoint_location): Remove
-	single-location assert.
+	* amd64-tdep.c (amd64_analyze_prologue): Check for `endbr64`
+	instruction, skip it if it's there.
 
-2019-07-09  Tom Tromey  <tom@tromey.com>
+2020-05-05  Simon Marchi  <simon.marchi@efficios.com>
 
-	* contrib/ari/gdb_ari.sh: Change common to gdbsupport.
-	* configure: Rebuild.
-	* configure.ac: Change common to gdbsupport.
-	* gdbsupport: Rename from common.
-	* acinclude.m4: Change common to gdbsupport.
-	* Makefile.in (CONFIG_SRC_SUBDIR, COMMON_SFILES)
-	(HFILES_NO_SRCDIR, stamp-version, ALLDEPFILES): Change common to
-	gdbsupport.
-	* aarch64-tdep.c, ada-lang.c, ada-lang.h, agent.c, alloc.c,
-	amd64-darwin-tdep.c, amd64-dicos-tdep.c, amd64-fbsd-nat.c,
-	amd64-fbsd-tdep.c, amd64-linux-nat.c, amd64-linux-tdep.c,
-	amd64-nbsd-tdep.c, amd64-obsd-tdep.c, amd64-sol2-tdep.c,
-	amd64-tdep.c, amd64-windows-tdep.c, arch-utils.c,
-	arch/aarch64-insn.c, arch/aarch64.c, arch/aarch64.h, arch/amd64.c,
-	arch/amd64.h, arch/arm-get-next-pcs.c, arch/arm-linux.c,
-	arch/arm.c, arch/i386.c, arch/i386.h, arch/ppc-linux-common.c,
-	arch/riscv.c, arch/riscv.h, arch/tic6x.c, arm-tdep.c, auto-load.c,
-	auxv.c, ax-gdb.c, ax-general.c, ax.h, breakpoint.c, breakpoint.h,
-	btrace.c, btrace.h, build-id.c, build-id.h, c-lang.h, charset.c,
-	charset.h, cli/cli-cmds.c, cli/cli-cmds.h, cli/cli-decode.c,
-	cli/cli-dump.c, cli/cli-option.h, cli/cli-script.c,
-	coff-pe-read.c, command.h, compile/compile-c-support.c,
-	compile/compile-c.h, compile/compile-cplus-symbols.c,
-	compile/compile-cplus-types.c, compile/compile-cplus.h,
-	compile/compile-loc2c.c, compile/compile.c, completer.c,
-	completer.h, contrib/ari/gdb_ari.sh, corefile.c, corelow.c,
-	cp-support.c, cp-support.h, cp-valprint.c, csky-tdep.c, ctf.c,
-	darwin-nat.c, debug.c, defs.h, disasm-selftests.c, disasm.c,
-	disasm.h, dtrace-probe.c, dwarf-index-cache.c,
-	dwarf-index-cache.h, dwarf-index-write.c, dwarf2-frame.c,
-	dwarf2expr.c, dwarf2loc.c, dwarf2read.c, event-loop.c,
-	event-top.c, exceptions.c, exec.c, extension.h, fbsd-nat.c,
-	features/aarch64-core.c, features/aarch64-fpu.c,
-	features/aarch64-pauth.c, features/aarch64-sve.c,
-	features/i386/32bit-avx.c, features/i386/32bit-avx512.c,
-	features/i386/32bit-core.c, features/i386/32bit-linux.c,
-	features/i386/32bit-mpx.c, features/i386/32bit-pkeys.c,
-	features/i386/32bit-segments.c, features/i386/32bit-sse.c,
-	features/i386/64bit-avx.c, features/i386/64bit-avx512.c,
-	features/i386/64bit-core.c, features/i386/64bit-linux.c,
-	features/i386/64bit-mpx.c, features/i386/64bit-pkeys.c,
-	features/i386/64bit-segments.c, features/i386/64bit-sse.c,
-	features/i386/x32-core.c, features/riscv/32bit-cpu.c,
-	features/riscv/32bit-csr.c, features/riscv/32bit-fpu.c,
-	features/riscv/64bit-cpu.c, features/riscv/64bit-csr.c,
-	features/riscv/64bit-fpu.c, features/tic6x-c6xp.c,
-	features/tic6x-core.c, features/tic6x-gp.c, filename-seen-cache.h,
-	findcmd.c, findvar.c, fork-child.c, gcore.c, gdb_bfd.c, gdb_bfd.h,
-	gdb_proc_service.h, gdb_regex.c, gdb_select.h, gdb_usleep.c,
-	gdbarch-selftests.c, gdbthread.h, gdbtypes.h, gnu-nat.c,
-	go32-nat.c, guile/guile.c, guile/scm-ports.c,
-	guile/scm-safe-call.c, guile/scm-type.c, i386-fbsd-nat.c,
-	i386-fbsd-tdep.c, i386-go32-tdep.c, i386-linux-nat.c,
-	i386-linux-tdep.c, i386-tdep.c, i387-tdep.c,
-	ia64-libunwind-tdep.c, ia64-linux-nat.c, inf-child.c,
-	inf-ptrace.c, infcall.c, infcall.h, infcmd.c, inferior-iter.h,
-	inferior.c, inferior.h, inflow.c, inflow.h, infrun.c, infrun.h,
-	inline-frame.c, language.h, linespec.c, linux-fork.c, linux-nat.c,
-	linux-tdep.c, linux-thread-db.c, location.c, machoread.c,
-	macrotab.h, main.c, maint.c, maint.h, memattr.c, memrange.h,
-	mi/mi-cmd-break.h, mi/mi-cmd-env.c, mi/mi-cmd-stack.c,
-	mi/mi-cmd-var.c, mi/mi-interp.c, mi/mi-main.c, mi/mi-parse.h,
-	minsyms.c, mips-linux-tdep.c, namespace.h,
-	nat/aarch64-linux-hw-point.c, nat/aarch64-linux-hw-point.h,
-	nat/aarch64-linux.c, nat/aarch64-sve-linux-ptrace.c,
-	nat/amd64-linux-siginfo.c, nat/fork-inferior.c,
-	nat/linux-btrace.c, nat/linux-btrace.h, nat/linux-namespaces.c,
-	nat/linux-nat.h, nat/linux-osdata.c, nat/linux-personality.c,
-	nat/linux-procfs.c, nat/linux-ptrace.c, nat/linux-ptrace.h,
-	nat/linux-waitpid.c, nat/mips-linux-watch.c,
-	nat/mips-linux-watch.h, nat/ppc-linux.c, nat/x86-dregs.c,
-	nat/x86-dregs.h, nat/x86-linux-dregs.c, nat/x86-linux.c,
-	nto-procfs.c, nto-tdep.c, objfile-flags.h, objfiles.c, objfiles.h,
-	obsd-nat.c, observable.h, osdata.c, p-valprint.c, parse.c,
-	parser-defs.h, ppc-linux-nat.c, printcmd.c, probe.c, proc-api.c,
-	procfs.c, producer.c, progspace.h, psymtab.h,
-	python/py-framefilter.c, python/py-inferior.c, python/py-ref.h,
-	python/py-type.c, python/python.c, record-btrace.c, record-full.c,
-	record.c, record.h, regcache-dump.c, regcache.c, regcache.h,
-	remote-fileio.c, remote-fileio.h, remote-sim.c, remote.c,
-	riscv-tdep.c, rs6000-aix-tdep.c, rust-exp.y, s12z-tdep.c,
-	selftest-arch.c, ser-base.c, ser-event.c, ser-pipe.c, ser-tcp.c,
-	ser-unix.c, skip.c, solib-aix.c, solib-target.c, solib.c,
-	source-cache.c, source.c, source.h, sparc-nat.c, spu-linux-nat.c,
-	stack.c, stap-probe.c, symfile-add-flags.h, symfile.c, symfile.h,
-	symtab.c, symtab.h, target-descriptions.c, target-descriptions.h,
-	target-memory.c, target.c, target.h, target/waitstatus.c,
-	target/waitstatus.h, thread-iter.h, thread.c, tilegx-tdep.c,
-	top.c, top.h, tracefile-tfile.c, tracefile.c, tracepoint.c,
-	tracepoint.h, tui/tui-io.c, ui-file.c, ui-out.h,
-	unittests/array-view-selftests.c,
-	unittests/child-path-selftests.c, unittests/cli-utils-selftests.c,
-	unittests/common-utils-selftests.c,
-	unittests/copy_bitwise-selftests.c, unittests/environ-selftests.c,
-	unittests/format_pieces-selftests.c,
-	unittests/function-view-selftests.c,
-	unittests/lookup_name_info-selftests.c,
-	unittests/memory-map-selftests.c, unittests/memrange-selftests.c,
-	unittests/mkdir-recursive-selftests.c,
-	unittests/observable-selftests.c,
-	unittests/offset-type-selftests.c, unittests/optional-selftests.c,
-	unittests/parse-connection-spec-selftests.c,
-	unittests/ptid-selftests.c, unittests/rsp-low-selftests.c,
-	unittests/scoped_fd-selftests.c,
-	unittests/scoped_mmap-selftests.c,
-	unittests/scoped_restore-selftests.c,
-	unittests/string_view-selftests.c, unittests/style-selftests.c,
-	unittests/tracepoint-selftests.c, unittests/unpack-selftests.c,
-	unittests/utils-selftests.c, unittests/xml-utils-selftests.c,
-	utils.c, utils.h, valarith.c, valops.c, valprint.c, value.c,
-	value.h, varobj.c, varobj.h, windows-nat.c, x86-linux-nat.c,
-	xml-support.c, xml-support.h, xml-tdesc.h, xstormy16-tdep.c,
-	xtensa-linux-nat.c, dwarf2read.h: Change common to gdbsupport.
-
-2019-07-09  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* linespec.c (decode_digits_list_mode): Set explicit_line to a
-	bool value.
-	(decode_digits_ordinary): Set explicit_line field in sal.
-	* symtab.c (skip_prologue_sal): Don't skip prologue for a
-	symtab_and_line that was set on an explicit line number in
-	assembler code.  Do always update the recorded symtab and line if
-	we do skip the prologue.
-
-2019-07-09  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* breakpoint.c (set_breakpoint_location_function): Remove
-	explicit_loc parameter.
-	(momentary_breakpoint_from_master): Update call to
-	set_breakpoint_location_function.
-	(add_location_to_breakpoint): Likewise.
-
-2019-07-09  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* riscv-tdep.c (riscv_features_from_gdbarch_info): Don't modify
-	required features based on default bfd type when no specific bfd
-	is present.
-
-2019-07-08  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* NEWS: Mention that GDB printf and eval commands can now print
-	C-style and Ada-style convenience var strings without
-	calling the inferior.
-	* printcmd.c (printf_c_string): Locally print GDB internal var
-	instead of transiting via the inferior.
-	(printf_wide_c_string): Likewise.
-
-2019-07-04  Alan Hayward  <alan.hayward@arm.com>
-
-	PR breakpoints/25011
-	* symfile.c (symbol_file_command): Call solib_create_inferior_hook.
-
-2019-07-04  Tom Tromey  <tom@tromey.com>
-
-	PR tui/24724:
-	* tui/tui-winsource.c (tui_clear_source_content): Update.
-	(tui_source_window_base::set_is_exec_point_at): Fix comment.
-	(tui_update_breakpoint_info): Update.
-	(tui_set_exec_info_content): Update.
-	* tui/tui-source.c (tui_set_source_content_nil): Update.
-	* tui/tui-disasm.c (tui_set_disassem_content): Don't set
-	has_break.
-	* tui/tui-data.h (enum tui_bp_flag): New.
-	(tui_bp_flags): New enum flags type.
-	(struct tui_source_element) <break_mode>: Change type.  Rename
-	from has_break.
-	(TUI_BP_ENABLED, TUI_BP_DISABLED, TUI_BP_HIT)
-	(TUI_BP_CONDITIONAL, TUI_BP_HARDWARE): Don't define.  Now enum
-	constants.
-	* tui/tui-winsource.h: Fix comment.
+	* gdbtypes.h (struct main_type) <flag_incomplete>: Remove.
 
-2019-07-04  Alan Hayward  <alan.hayward@arm.com>
+2020-05-04  Simon Marchi  <simon.marchi@efficios.com>
 
-	* aarch32-linux-nat.h (VFP_REGS_SIZE): Remove define.
-	* aarch64-linux-nat.c (fetch_fpregs_from_thread)
-	(store_fpregs_to_thread)
-	(aarch64_linux_nat_target::read_description): Use ARM_VFP3_REGS_SIZE.
-	* arch/arm.h (IWMMXT_VEC_REGISTER_SIZE, ARM_CORE_REGS_SIZE)
-	(ARM_FP_REGS_SIZE, ARM_VFP2_REGS_SIZE, ARM_VFP3_REGS_SIZE)
-	(IWMMXT_REGS_SIZE): Add define.
-	* arm-linux-nat.c (IWMMXT_REGS_SIZE): Remove define.
-	(fetch_vfp_regs, store_vfp_regs)
-	(arm_linux_nat_target::read_description): Use ARM_VFP3_REGS_SIZE.
-	* arm-tdep.c (arm_register_g_packet_guesses): Use new defines.
-
-2019-07-04  Alan Hayward  <alan.hayward@arm.com>
-
-        * arch/arm-get-next-pcs.c (thumb_get_next_pcs_raw): Use ARM_
-        defines.
-        * arch/arm-linux.c (arm_linux_sigreturn_next_pc_offset): Likewise.
-        * arch/arm.h (INT_REGISTER_SIZE) Rename from...
-        (ARM_INT_REGISTER_SIZE): ...to this.
-        (ARM_FP_REGISTER_SIZE) (ARM_VFP_REGISTER_SIZE): Add define.
-        * arm-linux-tdep.c (ARM_LINUX_JB_ELEMENT_SIZE)
-        (ARM_LINUX_SIZEOF_GREGSET, arm_linux_supply_gregset)
-        (arm_linux_collect_gregset, supply_nwfpe_register)
-        (collect_nwfpe_register, arm_linux_collect_nwfpe): Use ARM_
-        defines.
-        * arm-linux-tdep.h (ARM_LINUX_SIZEOF_NWFPE, NWFPE_FPSR_OFFSET)
-        (NWFPE_FPCR_OFFSET, NWFPE_TAGS_OFFSET): Likewise
-        * arm-nbsd-tdep.c (ARM_NBSD_JB_ELEMENT_SIZE): Likewise.
-        * arm-tdep.c (arm_push_dummy_call, arm_extract_return_value)
-        (arm_return_in_memory, arm_store_return_value)
-        (arm_get_longjmp_target, arm_register_g_packet_guesses)
-        (arm_record_ld_st_multiple): Likewise.
-        * arm-tdep.h (FP_REGISTER_SIZE, VFP_REGISTER_SIZE): Remove.
-        * arm-wince-tdep.c (ARM_WINCE_JB_ELEMENT_SIZE): Use ARM_ defines.
-
-2019-07-04  Alan Hayward  <alan.hayward@arm.com>
-
-	* aarch64-linux-tdep.c (aarch64_linux_init_abi): Use
-	AARCH64_DISPLACED_MODIFIED_INSNS.
-	* aarch64-tdep.c (struct aarch64_displaced_step_data)
-	(aarch64_displaced_step_copy_insn): Likewise.
-	* aarch64-tdep.h (DISPLACED_MODIFIED_INSNS): Rename from..
-	(AARCH64_DISPLACED_MODIFIED_INSNS): ...to this.
-	* arm-linux-tdep.c (arm_linux_cleanup_svc): Use
-	ARM_DISPLACED_MODIFIED_INSNS.
-	* arm-tdep.c (arm_gdbarch_init): Likewise.
-	* arm-tdep.h (DISPLACED_MODIFIED_INSNS): Rename from..
-	(ARM_DISPLACED_MODIFIED_INSNS): ...to this.
-	(struct arm_displaced_step_closure): Use
-	ARM_DISPLACED_MODIFIED_INSNS.
-
-2019-07-04  Alan Hayward  <alan.hayward@arm.com>
-
-	* features/Makefile: Remove unused xml files.
-	* features/aarch64.xml: Remove.
-	* features/i386/amd64-avx-avx512-linux.xml: Remove.
-	* features/i386/amd64-avx-avx512.xml: Remove.
-	* features/i386/amd64-avx-linux.xml: Remove.
-	* features/i386/amd64-avx-mpx-avx512-pku-linux.xml: Remove.
-	* features/i386/amd64-avx-mpx-avx512-pku.xml: Remove.
-	* features/i386/amd64-avx-mpx-linux.xml: Remove.
-	* features/i386/amd64-avx-mpx.xml: Remove.
-	* features/i386/amd64-avx.xml: Remove.
-	* features/i386/amd64-linux.xml: Remove.
-	* features/i386/amd64-mpx-linux.xml: Remove.
-	* features/i386/amd64-mpx.xml: Remove.
-	* features/i386/amd64.xml: Remove.
-	* features/i386/i386-avx-avx512-linux.xml: Remove.
-	* features/i386/i386-avx-avx512.xml: Remove.
-	* features/i386/i386-avx-linux.xml: Remove.
-	* features/i386/i386-avx-mpx-avx512-pku-linux.xml: Remove.
-	* features/i386/i386-avx-mpx-avx512-pku.xml: Remove.
-	* features/i386/i386-avx-mpx-linux.xml: Remove.
-	* features/i386/i386-avx-mpx.xml: Remove.
-	* features/i386/i386-avx.xml: Remove.
-	* features/i386/i386-linux.xml: Remove.
-	* features/i386/i386-mmx-linux.xml: Remove.
-	* features/i386/i386-mmx.xml: Remove.
-	* features/i386/i386-mpx-linux.xml: Remove.
-	* features/i386/i386-mpx.xml: Remove.
-	* features/i386/i386.xml: Remove.
-	* features/i386/x32-avx-avx512-linux.xml: Remove.
-	* features/i386/x32-avx-linux.xml: Remove.
-	* features/i386/x32-linux.xml: Remove.
-
-2019-07-04  Alan Hayward  <alan.hayward@arm.com>
-
-	* regformats/aarch64.dat: Remove.
-	* regformats/i386/amd64-avx-avx512-linux.dat: Remove.
-	* regformats/i386/amd64-avx-linux.dat: Remove.
-	* regformats/i386/amd64-avx-mpx-avx512-pku-linux.dat: Remove.
-	* regformats/i386/amd64-avx-mpx-linux.dat: Remove.
-	* regformats/i386/amd64-linux.dat: Remove.
-	* regformats/i386/amd64-mpx-linux.dat: Remove.
-	* regformats/i386/amd64.dat: Remove.
-	* regformats/i386/i386-avx-avx512-linux.dat: Remove.
-	* regformats/i386/i386-avx-linux.dat: Remove.
-	* regformats/i386/i386-avx-mpx-avx512-pku-linux.dat: Remove.
-	* regformats/i386/i386-avx-mpx-linux.dat: Remove.
-	* regformats/i386/i386-linux.dat: Remove.
-	* regformats/i386/i386-mmx-linux.dat: Remove.
-	* regformats/i386/i386-mpx-linux.dat: Remove.
-	* regformats/i386/i386.dat: Remove.
-	* regformats/i386/x32-avx-avx512-linux.dat: Remove.
-	* regformats/i386/x32-avx-linux.dat: Remove.
-	* regformats/i386/x32-linux.dat: Remove.
-
-2019-07-04  Alan Hayward  <alan.hayward@arm.com>
-
-	* aarch64-tdep.c: Remove xml self tests.
-	* amd64-linux-tdep.c: Likewise.
-	* amd64-tdep.c: Likewise.
-	* i386-linux-tdep.c: Likewise.
-	* i386-tdep.c: Likewise.
-
-2019-07-03  Pedro Alves  <palves@redhat.com>
-
-	PR cli/24732
-	* cli/cli-cmds.c (struct pipe_cmd_opts): New.
-	(pipe_cmd_option_defs): New.
-	(make_pipe_cmd_options_def_group): New.
-	(pipe_command): Use gdb::option::process_options.
-	(pipe_command_completer): New function.
-	(_initialize_cli_cmds): Install completer for "pipe" command.
-
-2019-07-03  Pedro Alves  <palves@redhat.com>
-
-	* cli/cli-option.c (union option_value) <string>: New field.
-	(struct option_def_and_value): Add ctor, move ctor, dtor and
-	use DISABLE_COPY_AND_ASSIGN.
-	(option_def_and_value::clear_value): New.
-	(parse_option, save_option_value_in_ctx, get_val_type_str)
-	(add_setshow_cmds_for_options): Handle var_string.
-	* cli-option.h (union option_def::var_address) <string>: New
-	field.
-	(struct string_option_def): New.
-	* maint-test-options.c (struct test_options_opts): Add default
-	ctor and use DISABLE_COPY_AND_ASSIGN.
-	<string_opt>: New field.
-	(test_options_opts::~test_options_opts): New.
-	(test_options_opts::dump): Also dump "-string".
-	(test_options_option_defs): Install "string.
-
-2019-07-03  Pedro Alves  <palves@redhat.com>
-
-	* cli/cli-option.c (parse_option) <var_enum>: Don't return an
-	option_value with a null enumeration.
-	(complete_options): Save the option values in the context.
-	(save_option_value_in_ctx): New, factored out from ...
-	(process_options): ... here.
-	* cli/cli-utils.c (get_ulongest): Don't advance PP until the end
-	of the function.
-	* maint-test-options.c (test_options_opts::dump): New, factored
-	out from ...
-	(maintenance_test_options_command_mode): ... here.
-	(maintenance_test_options_command_completion_result): Delete.
-	(maintenance_test_options_command_completion_text): Update
-	comment.
-	(maintenance_show_test_options_completion_result): Change
-	prototype.  Just print
-	maintenance_test_options_command_completion_text.
-	(save_completion_result): New.
-	(maintenance_test_options_completer_mode): Pass options context to
-	complete_options, and then save a dump.
-	(_initialize_maint_test_options): Use add_cmd to install "maint
-	show test-options-completion-result".
-
-2019-07-03  Pedro Alves  <palves@redhat.com>
-
-	* NEWS (New commands): Mention "with" and "maint with".
-	* cli/cli-cmds.c (with_command_1, with_command_completer_1)
-	(with_command, with_command_completer): New.
-	(pipe_command): Adjust to new repeat_previous
-	interface.
-	(_initialize_cli_cmds): Install the "with" command and its "w"
-	alias.
-	* cli/cli-cmds.h (with_command_1, with_command_completer_1): New
-	declarations.
-	* cli/cli-setshow.c (parse_cli_var_uinteger)
-	(parse_cli_var_zuinteger_unlimited, do_set_command): Handle empty
-	argument strings for all var_types.
-	(get_setshow_command_value_string): New, factored out from ...
-	(do_show_command): ... this.
-	* cli/cli-setshow.h: Include <string>.
-	(get_setshow_command_value_string): Declare.
-	* command.h (repeat_previous): Now returns const char *.  Adjust
-	comment.
-	* maint.c: Include "cli/cli-cmds.h".
-	(maintenance_with_cmd, maintenance_with_cmd_completer): New.
-	(_initialize_maint_cmds): Register the "maintenance with" command.
-	* top.c (repeat_previous): Move bits from pipe_command here:
-	Return the saved command line, if any; error out if there's no
-	command to relaunch.
-
-2019-07-03  Pedro Alves  <palves@redhat.com>
-
-	* NEWS (New commands): Mention "maint set/show test-settings"
-	instead of "maint test-settings".
-	* maint-test-settings.c (maintenance_test_settings_list): Delete.
-	(maintenance_test_settings_set_list): Rename to ...
-	(maintenance_set_test_settings_list): ... this.
-	(maintenance_test_settings_show_list): Rename to  ...
-	(maintenance_show_test_settings_list): ... this.
-	(maintenance_test_settings_cmd): Delete.
-	(maintenance_test_settings_set_cmd): ...
-	(maintenance_set_test_settings_cmd): ... this.
-	(maintenance_test_settings_show_cmd): ...
-	(maintenance_show_test_settings_cmd): ... this.
-	(maintenance_test_settings_show_value_cmd):
-	(maintenance_show_test_settings_value_cmd): ... this.
-	(_initialize_maint_test_settings): No longer install the "maint
-	test-settings" prefix command.  Rename "maint test-settings set"
-	to "maint set test-settings", and "maint test-settings show" to
-	"maint show test-settings".  Adjust all subcommands.
-
-2019-07-03  Pedro Alves  <palves@redhat.com>
-
-	* maint-test-settings.c: Fix file's intro comment.  Replace all
-	references to "test-options" with references to "test-settings",
-	in comments.
-
-2019-07-03  Pedro Alves  <palves@redhat.com>
+	* gdbtypes.h (TYPE_INCOMPLETE): Remove.
+	* gdbtypes.c (recursive_dump_type): Remove use of
+	TYPE_INCOMPLETE.
 
-	* maint-test-settings.c (maintenance_test_settings_xxx)
-	(maintenance_test_settings_yyy, maintenance_test_settings_zzz):
-	New.
-	(maintenance_test_settings_enums): Use them.
-	(maintenance_test_settings_enum): Default to
-	maintenance_test_settings_xxx.
-	(_initialize_maint_test_settings): Initialize
-	MAINTENANCE_TEST_SETTINGS_FILENAME.
-
-2019-07-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* breakpoint.h (remove_breakpoints_inf): Change return type to
-	void, move function documentation here.
-	* breakpoint.c (remove_breakpoints_inf): Change return type to
-	void, move function documentation to header.
-
-2019-07-02  Pedro Alves  <palves@redhat.com>
-
-	* NEWS (Completion improvements): Mention "info threads".
-	* thread.c (struct info_threads_opts, info_threads_option_defs)
-	(make_info_threads_options_def_group): New.
-	(info_threads_command): Use gdb::option::process_options.
-	(info_threads_command_completer): New.
-	(_initialize_thread): Use gdb::option::build_help to build the
-	help text for "info threads".
-
-2019-07-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* defs.h (generic_load): Move from here...
-	* symfile.h (generic_load): ... to here.  Rename name parameter
-	to args.
-	* symfile.c (generic_load): Add comment.
-
-2019-07-01  Tom Tromey  <tromey@adacore.com>
-
-	* dwarf2read.c
-	(dw2_debug_names_iterator::find_vec_in_debug_names): Hoist
-	declaration of without_params.  Fix formatting.
-
-2019-07-01  Tom Tromey  <tromey@adacore.com>
-
-	* ada-exp.y (find_primitive_type): Update.
-	* ada-lang.h (ada_lookup_symbol): Update.
-	* ada-lang.c (ada_lookup_symbol): Remove "is_a_field_of_this"
-	parameter.
-	(ada_lookup_encoded_symbol, ada_lookup_symbol_nonlocal): Update.
+2020-05-03  Tom Tromey  <tom@tromey.com>
 
-2019-06-28  Sergio Durigan Junior  <sergiodj@redhat.com>
+	* breakpoint.c (catch_command, tcatch_command): Remove.
+	(_initialize_breakpoint): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	(set_breakpoint_cmd, show_breakpoint_cmd): Remove
+	* utils.c (set_internal_problem_cmd, show_internal_problem_cmd):
+	Remove.
+	(add_internal_problem_command): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* mips-tdep.c (set_mipsfpu_command): Remove.
+	(_initialize_mips_tdep): Use add_basic_prefix_cmd.
+	* dwarf2/index-cache.c (set_index_cache_command): Remove.
+	(_initialize_index_cache): Use add_basic_prefix_cmd.
+	* memattr.c (dummy_cmd): Remove.
+	(_initialize_mem): Use add_basic_prefix_cmd, add_show_prefix_cmd.
+	* tui/tui-win.c (set_tui_cmd, show_tui_cmd): Remove.
+	(_initialize_tui_win): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* cli/cli-logging.c (set_logging_command): Remove.
+	(_initialize_cli_logging): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	(show_logging_command): Remove.
+	* target.c (target_command): Remove.
+	(add_target): Use add_basic_prefix_cmd.
 
-	PR breakpoints/24541
-	* gdbarch.c: Regenerate.
-	* gdbarch.h: Regenerate.
-	* gdbarch.sh: Add 'stap_adjust_register'.
-	* i386-tdep.c: Include '<unordered_set>'.
-	(i386_stap_adjust_register): New function.
-	(i386_elf_init_abi): Register 'i386_stap_adjust_register'.
-	* stap-probe.c (stap_parse_register_operand): Call
-	'gdbarch_stap_adjust_register'.
+2020-05-02  Hannes Domani  <ssbssa@yahoo.de>
 
-2019-06-28  Sergio Durigan Junior  <sergiodj@redhat.com>
+	* gdbtypes.h (enum dynamic_prop_node_kind): Fix typo.
 
-	PR python/24742
-	https://bugzilla.redhat.com/show_bug.cgi?id=1723564
-	* python/python.c (do_start_initialization): Use 'xmalloc'
-	instead of 'PyMem_Malloc'.
+2020-05-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
-2019-06-28  Tom Tromey  <tromey@adacore.com>
+	* gdb-gdb.gdb-in: Remove breakpoint on disappeared function
+	info_command.
 
-	* dwarf2read.c (partial_die_info::read): Prefer the linkage name
-	for Ada.
+2020-04-30  Kamil Rytarowski  <n54@gmx.com>
 
-2019-06-27  Tom Tromey  <tromey@adacore.com>
+	* nbsd-nat.c (nbsd_enable_proc_events)
+	(nbsd_nat_target::post_startup_inferior): Add.
+	(nbsd_nat_target::post_attach): Call `nbsd_enable_proc_events'.
+	(nbsd_nat_target::update_thread_list): Rewrite.
+	(nbsd_nat_target::wait): Handle "PTRACE_LWP_EXIT" and
+	"PTRACE_LWP_CREATE".
+	* nbsd-nat.h (nbsd_nat_target::post_startup_inferior): Add.
 
-	* arm-tdep.c (arm_objfile_data_key): Move lower.  Change type to
-	objfile_key.
-	(arm_find_mapping_symbol, arm_record_special_symbol)
-	(_initialize_arm_tdep): Update.
-	(arm_objfile_data_free): Remove.
+2020-04-30  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
-2019-06-27  Tom Tromey  <tromey@adacore.com>
+	* stack.c (_initialize_stack): Remove duplicated creation
+	of "frame" command and "f" alias.
 
-	* cp-valprint.c (cp_print_value_fields): Pass opts, not options,
-	to cp_print_static_field.
+2020-04-30  Hannes Domani  <ssbssa@yahoo.de>
 
-2019-06-26  Tom Tromey  <tromey@adacore.com>
+	PR gdb/18706
+	* gdbtypes.c (check_typedef): Calculate size of array of
+	stubbed type.
 
-	* minsyms.c (lookup_minimal_symbol_solib_trampoline): Remove.
-	* minsyms.h (lookup_minimal_symbol_solib_trampoline): Don't
-	declare.
+2020-04-30  Hannes Domani  <ssbssa@yahoo.de>
 
-2019-06-26  Alan Hayward  <alan.hayward@arm.com>
+	PR gdb/15559
+	* i386-tdep.c (i386_push_dummy_call): Call
+	i386_thiscall_push_dummy_call.
+	(i386_thiscall_push_dummy_call): New function.
+	* i386-tdep.h (i386_thiscall_push_dummy_call): Declare.
+	* i386-windows-tdep.c (i386_windows_push_dummy_call): New function.
+	(i386_windows_init_abi): Call set_gdbarch_push_dummy_call.
 
-	* features/aarch64-core.c (create_feature_aarch64_core):
-	Regenerate.
-	* features/aarch64-core.xml: Add cpsr flags.
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-06-26  Alan Hayward  <alan.hayward@arm.com>
+	* gdbarch.sh (do_read): Add shellcheck disable directive for
+	warning SC2162.
 
-	* arm-tdep.c (arm_gnu_triplet_regexp): New function.
-	(arm_gdbarch_init): Add arm_gnu_triplet_regexp.
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-06-25  Simon Marchi  <simon.marchi@polymtl.ca>
+	* gdbarch.sh: Use ${foo:-} where shellcheck would report a
+	"referenced but not assigned" warning.
 
-	* arm-tdep.c (struct arm_per_objfile) <section_maps_sorted>: New
-	field.
-	(arm_find_mapping_symbol): Sort mapping symbol vectors on first
-	use.
-	(arm_record_special_symbol): Don't insert new symbol in sorted
-	position, push it at the end.
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-06-25  Simon Marchi  <simon.marchi@polymtl.ca>
+	* gdbarch.sh: Remove code that sets fallbackdefault.
 
-	* arm-tdep.c (struct arm_mapping_symbol) (operator <): New.
-	(arm_mapping_symbol_s): Remove.
-	(DEF_VEC_O(arm_mapping_symbol_s)): Remove.
-	(arm_mapping_symbol_vec): New typedef.
-	(struct arm_per_objfile): Add constructor.
-	<section_maps>: Change type to
-	std::unique_ptr<arm_mapping_symbol_vec[]>.
-	(arm_compare_mapping_symbols): Remove.
-	(arm_find_mapping_symbol): Adjust to section_maps type change.
-	(arm_objfile_data_free): Call delete on arm_per_objfile.
-	(arm_record_special_symbol): Adjust to section_maps type change.
-	Allocate arm_per_objfile with new.
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-06-25  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* gdbarch.sh: Use shell operators && and || instead of
+	-a and -o.
 
-	* cli/cli-cmds.c (alias_command): Compare the alias prefix
-	with the command prefix.
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+	* gdbarch.sh: Use $(...) instead of `...`.
 
-	* tui/tui-wingeneral.c (tui_delete_win): Remove "return".
-	* tui/tui-data.c (~tui_gen_win_info): Remove "if".
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+	* gdbarch.sh: Use double quotes around variables.
 
-	* tui/tui-layout.c (init_and_make_win): Assert on unrecognized
-	type.
-	* tui/tui-data.h (struct tui_gen_win_info): Make constructor
-	protected.
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+	* gdbarch.sh: Use %s with printf, instead of variables in the
+	format string.
 
-	* tui/tui-winsource.c
-	(tui_source_window_base::set_is_exec_point_at): Add check against
-	LOA_ADDRESS.
+2020-04-29  Tom Tromey  <tromey@adacore.com>
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+	PR ada/25875:
+	* dwarf2/read.c (update_enumeration_type_from_children): Compute
+	type fields here.
+	(read_enumeration_type): Call
+	update_enumeration_type_from_children later.  Update comments.
+	(process_enumeration_scope): Don't create type fields.
 
-	* tui/tui-source.c (tui_set_source_content): Don't check before
-	xfree.
-	* tui/tui-disasm.c (tui_disassemble): Don't check before xfree.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (tui_update_source_window_as_is)
-	(tui_alloc_source_buffer, tui_line_is_displayed)
-	(tui_addr_is_displayed): Change type of win_info.
-	* tui/tui-winsource.c (tui_update_source_window_as_is)
-	(tui_clear_source_content, tui_show_source_line)
-	(tui_show_source_content, tui_source_window_base::refill)
-	(tui_source_window_base::set_is_exec_point_at)
-	(tui_source_window_base::set_is_exec_point_at)
-	(tui_update_breakpoint_info, tui_set_exec_info_content): Update.
-	(tui_alloc_source_buffer, tui_line_is_displayed)
-	(tui_addr_is_displayed): Change type of win_info.  Update.
-	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
-	(tui_source_window_base::do_make_visible_with_new_height):
-	Update.
-	* tui/tui-source.c (tui_set_source_content)
-	(tui_set_source_content_nil)
-	(tui_source_window::do_scroll_vertical): Update.
-	* tui/tui-layout.c (show_layout): Update.
-	* tui/tui-disasm.c (tui_set_disassem_content)
-	(tui_disasm_window::do_scroll_vertical): Update.
-	* tui/tui-data.h (tui_win_content): Remove.
-	(struct tui_gen_win_info) <content, content_size>: Remove.
-	(struct tui_source_element): Add initializers and destructor.
-	(union tui_which_element, struct tui_win_element): Remove.
-	(struct tui_source_window_base) <content>: New field.
-	(struct tui_data_window): Remove destructor.
-	(tui_alloc_content, tui_free_win_content)
-	(tui_free_all_source_wins_content): Don't declare.
-	* tui/tui-data.c (tui_initialize_static_data): Update.
-	(init_content_element, tui_alloc_content): Remove.
-	(~tui_gen_win_info): Update.
-	(~tui_data_window, tui_free_all_source_wins_content)
-	(tui_free_win_content, free_content, free_content_elements):
-	Remove.
+2020-04-29  Kamil Rytarowski  <n54@gmx.com>
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+	* nbsd-tdep.c: Include "xml-syscall.h".
+	(nbsd_init_abi): Call `set_xml_syscall_file_name'.
 
-	* tui/tui-winsource.h (tui_clear_source_content)
-	(tui_erase_source_content, tui_show_source_content): Change type
-	of win_info.
-	* tui/tui-winsource.c (tui_clear_source_content)
-	(tui_erase_source_content, tui_show_source_content): Change type
-	of win_info.
-	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Update.
-	* tui/tui-source.h (tui_set_source_content_nil): Change type of
-	win_info.
-	* tui/tui-source.c (tui_set_source_content_nil): Change type of
-	win_info.
-	* tui/tui-layout.c (show_source_or_disasm_and_command): Update.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.c (tui_clear_source_content)
-	(tui_source_window_base::set_is_exec_point_at): Update.
-	* tui/tui-source.c (tui_set_source_content_nil): Update.
-	* tui/tui-data.h (struct tui_source_element) <is_exec_point>: Now
-	a bool.
-	* tui/tui-data.c (init_content_element): Update.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.c (tui_gen_win_info::make_visible): Update.
-	* tui/tui-win.c (make_invisible_and_set_new_height): Update.
-	* tui/tui-layout.c (init_and_make_win): Update.
-	* tui/tui.h (enum tui_win_type): Update.
-	* tui/tui-data.h (tui_win_is_auxiliary): Rename from
-	tui_win_is_auxillary.
-	* tui/tui-data.c (tui_win_is_auxiliary): Rename from
-	tui_win_is_auxillary.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.c (tui_data_window::refresh_window): Update.
-	* tui/tui-windata.c (tui_data_window::first_data_item_displayed)
-	(tui_delete_data_content_windows, tui_display_all_data)
-	(tui_data_window::do_scroll_vertical, tui_display_data_from):
-	Update.
-	* tui/tui-win.c (tui_data_window::set_new_height): Simplify.
-	* tui/tui-regs.c (tui_last_regs_line_no)
-	(tui_line_from_reg_element_no, tui_first_reg_element_no_inline)
-	(tui_show_registers): Update.
-	(tui_show_register_group): Return void.  Update.
-	(tui_display_registers_from, tui_display_reg_element_at_line)
-	(tui_display_registers_from_line, tui_check_register_values):
-	Update.
-	* tui/tui-data.h (union tui_which_element) <data_window>: Remove
-	member.
-	(struct tui_data_window) <regs_content>: Now a std::vector.
-	<regs_content_count>: Remove.
-	(tui_add_content_elements, tui_free_data_content): Don't declare.
-	* tui/tui-data.c (tui_data_window::clear_detail): Update.
-	(init_content_element): Remove DATA_WIN case.  Add assert.
-	(tui_add_content_elements): Remove.
-	(tui_data_window): Update.
-	(tui_free_data_content): Remove.
-	(free_content_elements): Remove DATA_WIN case.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.c (tui_data_item_window): Update.
-	* tui/tui-windata.h (tui_check_data_values): Don't declare.
-	* tui/tui-windata.c (tui_display_all_data)
-	(tui_display_data_from_line): Update.
-	(tui_check_data_values): Remove.
-	* tui/tui-regs.c (tui_show_register_group)
-	(tui_display_reg_element_at_line): Update.
-	* tui/tui-hooks.c (tui_register_changed)
-	(tui_refresh_frame_and_register_information): Call
-	tui_check_register_values.
-	* tui/tui-data.h (struct tui_data_window) <data_content,
-	data_content_count, data_type>: Remove.
-	(enum tui_data_type): Remove.
+2020-04-29  Kamil Rytarowski  <n54@gmx.com>
 
-	* tui/tui-data.c (tui_data_window::clear_detail)
-	(~tui_data_window): Update.
+	* nbsd-nat.c: Include "sys/wait.h".
+	(nbsd_resume, nbsd_nat_target::resume, nbsd_wait)
+	(nbsd_nat_target::wait, nbsd_nat_target::insert_exec_catchpoint)
+	(nbsd_nat_target::remove_exec_catchpoint)
+	(nbsd_nat_target::set_syscall_catchpoint): Add.
+	* nbsd-nat.h (nbsd_nat_target::resume, nbsd_nat_target::wait)
+	(nbsd_nat_target::insert_exec_catchpoint)
+	(nbsd_nat_target::remove_exec_catchpoint)
+	(nbsd_nat_target::set_syscall_catchpoint): Add.
+	* nbsd-tdep.c (nbsd_get_syscall_number): Add.
+	(nbsd_init_abi): Call `set_gdbarch_get_syscall_number' and pass
+	`nbsd_get_syscall_number'.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-29  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-windata.h (tui_first_data_item_displayed): Don't
-	declare.
-	* tui/tui-windata.c (tui_data_window::first_data_item_displayed):
-	Rename from tui_first_data_item_displayed.  Update.
-	(tui_data_window::refresh_all)
-	(tui_data_window::do_scroll_vertical): Update.
-	* tui/tui-data.h (struct tui_data_window)
-	<first_data_item_displayed>: Declare new method.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.h (tui_init_generic_part): Don't declare.
-	* tui/tui-data.c (tui_init_generic_part): Remove, moving
-	contents...
-	(tui_initialize_static_data): ...here.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-regs.c (tui_show_registers, tui_show_register_group)
-	(tui_display_registers_from, tui_check_register_values): Update.
-	(tui_display_register): Remove win_info parameter; update.
-	(tui_get_register): Change type of parameters.
-	* tui/tui-data.h (struct tui_data_element): Remove.
-	(union tui_which_element) <data>: Remove.
-	<data_window>: Change type.
-	(struct tui_data_item_window): New.
-	* tui/tui-data.c (init_content_element): Remove DATA_ITEM_WIN
-	case.  Add assert.
-	(~tui_data_item_window): New destructor.
-	(free_content_elements): Remove DATA_ITEM_WIN case.
+	* stack.c (print_block_frame_labels): Remove.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-29  Hannes Domani  <ssbssa@yahoo.de>
 
-	* tui/tui.h (enum tui_win_type) <MAX_WINDOWS, UNDEFINED_WIN>:
-	Remove.
+	PR gdb/17320
+	* ada-valprint.c (val_print_packed_array_elements): Move array
+	end bracket to new line.
+	(ada_val_print_string): Remove extra spaces before first array
+	element.
+	* c-valprint.c (c_value_print_array): Likewise.
+	* m2-valprint.c (m2_print_array_contents): Likewise.
+	(m2_value_print_inner): Likewise.
+	* p-valprint.c (pascal_value_print_inner): Likewise.
+	* valprint.c (generic_val_print_array): Likewise.
+	(value_print_array_elements): Move first array element and array
+	end bracket to new line.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-29  Tom de Vries  <tdevries@suse.de>
 
-	* tui/tui-data.h (struct tui_command_element): Remove.
-	(union tui_which_element) <command>: Remove.
-	* tui/tui-data.c (init_content_element): Remove CMD_WIN case.  Add
-	assert.
-	(free_content_elements): Remove CMD_WIN case.
+	PR symtab/25889
+	* linespec.c (find_method): Fix ix calculation.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-28  Kamil Rytarowski  <n54@gmx.com>
 
-	* tui/tui-layout.c (tui_set_layout): Update.
-	* tui/tui-data.h (struct tui_layout_def) <split>: Remove.
-	* tui/tui-data.c (layout_def): Update.
+	* syscalls/update-netbsd.sh: New file.
+	* syscalls/netbsd.xml: Regenerate.
+	* data-directory/Makefile.in: Register `netbsd.xml' in
+	`SYSCALLS_FILES'.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-28  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-wingeneral.c (tui_refresh_all): Update.
-	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
-	(tui_source_window_base::set_new_height): Update.
-	* tui/tui-stack.c (tui_make_status_line): Change parameter type.
-	Update.
-	(tui_set_locator_fullname, tui_set_locator_info)
-	(tui_show_frame_info): Update.
-	* tui/tui-source.c (tui_set_source_content)
-	(tui_source_is_displayed): Update.
-	* tui/tui-layout.c (show_source_disasm_command, show_data)
-	(show_source_or_disasm_and_command): Update.
-	* tui/tui-disasm.c (tui_set_disassem_content)
-	(tui_get_begin_asm_address): Update.
-	* tui/tui-data.h (struct tui_locator_element): Remove.
-	(union tui_which_element) <locator>: Remove.
-	(struct tui_locator_window): New.
-	(tui_locator_win_info_ptr): Change return type.
-	* tui/tui-data.c (_locator): Change type.
-	(tui_locator_win_info_ptr): Change return type.
-	(init_content_element): Remove LOCATOR_WIN case.  Add assert.
-	(tui_alloc_content): Add assert.
+	* syscalls/update-freebsd.sh: Add double quotes.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-28  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.c
-	(tui_exec_info_window::maybe_allocate_content): New method.
-	(tui_set_exec_info_content, tui_show_exec_info_content): Update.
-	* tui/tui-layout.c (init_and_make_win): Add EXEC_INFO_WIN case.
-	(make_source_or_disasm_window): Add cast.
-	* tui/tui-data.h (union tui_which_element) <simple_string>:
-	Remove.
-	(struct tui_source_info): New.
-	(struct tui_source_window_base) <execution_info>: Change type.
-	* tui/tui-data.c (init_content_element): Remove EXEC_INFO_WIN
-	case, and add assert.
-	(tui_alloc_content): Add assert.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.h (tui_alloc_win_info): Don't declare.
-	* tui/tui-layout.c (init_and_make_win): Use "new" directly.
-	* tui/tui-data.c (tui_alloc_win_info): Remove.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (tui_set_win_focus_to): Don't check window type.
-	* tui/tui-wingeneral.c (tui_unhighlight_win): Check
-	can_highlight.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (tui_source_window_base::update_tab_width): Call
-	make_visible_with_new_height method.
-	(tui_win_info::make_visible_with_new_height): New method.
-	(tui_source_window_base::do_make_visible_with_new_height)
-	(tui_data_window::do_make_visible_with_new_height)
-	(tui_cmd_window::do_make_visible_with_new_height): New methods.
-	(make_visible_with_new_height): Remove.
-	(tui_resize_all, tui_adjust_win_heights): Use
-	make_visible_with_new_height method.
-	* tui/tui-data.h (struct tui_win_info)
-	<do_make_visible_with_new_height, make_visible_with_new_height>:
-	New methods.
-	(struct tui_source_window_base, struct tui_data_window)
-	(struct tui_cmd_window) <do_make_visible_with_new_height>: New
-	methods.
+	* NEWS: Update.
+	* python/py-cmd.c (gdbpy_initialize_commands): Add COMMAND_TUI.
+	(cmdpy_init): Allow class_tui.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-28 Mark Williams <mark@myosotissp.com>
 
-	* tui/tui-win.c (tui_source_window_base::update_tab_width): New
-	method.
-	(update_tab_width): Call update_tab_width method.
-	* tui/tui-data.h (struct tui_win_info)
-	(struct tui_source_window_base) <update_tab_width>: New methods.
+	PR gdb/24480
+	* dwarf2read.c: Add missing assingments to list_in_scope when
+	start_symtab was already called.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-28  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-wingeneral.h (tui_make_window): Change type of "box_it"
-	parameter.
-	* tui/tui-wingeneral.c (tui_make_window): Change type of "box_it"
-	parameter.
-	(tui_gen_win_info::make_visible): Update.
-	* tui/tui-layout.c (init_and_make_win): Change type of "box_it"
-	parameter.
-	* tui/tui-data.h (enum tui_box): New enum.
-	(BOX_WINDOW, DONT_BOX_WINDOW): Remove defines.
+	PR gdb/25881
+	* dwarf2/read.c (offset_map_type): Use
+	gdb:hash_enum<sect_offset> as hash function.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-28  Tom de Vries  <tdevries@suse.de>
 
-	* tui/tui-layout.c (make_source_or_disasm_window): Always use
-	init_and_make_win for EXEC_INFO_WIN.
-	* tui/tui-data.h (struct tui_gen_win_info) <~tui_gen_win_info>: No
-	longer inline.
-	(struct tui_win_info) <~tui_win_info>: Inline.
-	(tui_source_exec_info_win_ptr, tui_disassem_exec_info_win_ptr):
-	Don't declare.
-	* tui/tui-data.c (source_win, disasm_win): Remove globals.
-	(tui_source_exec_info_win_ptr, tui_disassem_exec_info_win_ptr):
-	Remove.
-	(tui_initialize_static_data): Update.
-	(~tui_gen_win_info): Handle more cleanup here.
-	(~tui_source_window_base): Delete "execution_info".
-	(~tui_win_info): Move code to ~tui_gen_win_info; remove.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-layout.c (make_command_window): Don't set
-	can_highlight.
-	(show_source_disasm_command): Call the reset method.
-	(show_data): Don't set can_highlight.  Call the reset method.
-	(tui_gen_win_info::reset): Rename from init_gen_win_info
-	(init_and_make_win): Simplify.  Return tui_gen_win_info.
-	(show_source_or_disasm_and_command): Call the reset method.
-	* tui/tui-data.h (struct tui_gen_win_info) <reset>: New method.
-	(struct tui_cmd_window): Set can_highlight.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.c (tui_gen_win_info::make_visible): Rename
-	from make_visible.
-	(tui_make_visible, tui_make_invisible): Rewrite.
-	(tui_win_info::make_visible): Remove.
-	(tui_source_window_base::make_visible): Update.
-	* tui/tui-data.h (struct tui_gen_win_info) <make_visible>: New
-	method.  Moved from...
-	(struct tui_win_info) <make_visible>: ...here.
+	* dwarf2/read.c (process_structure_scope): Add symbol for struct decl
+	with DW_AT_signature.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-27  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-winsource.c
-	(tui_source_window_base::do_scroll_horizontal): Remove direction
-	parameter.
-	* tui/tui-windata.c (tui_data_window::do_scroll_vertical): Remove
-	direction parameter.
-	* tui/tui-win.c (tui_win_info::forward_scroll)
-	(tui_win_info::backward_scroll, tui_win_info::left_scroll)
-	(tui_win_info::right_scroll): Update.
-	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Remove
-	direction parameter.
-	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Remove
-	direction parameter.
-	* tui/tui-data.h (enum tui_scroll_direction): Remove.
-	(struct tui_win_info) <do_scroll_vertical, do_scroll_horizontal>:
-	Remove direction parameter.
-	(struct tui_source_window_base, struct tui_source_window)
-	(struct tui_disasm_window, struct tui_data_window)
-	(struct tui_cmd_window): Update.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (tui_set_exec_info_content)
-	(tui_show_exec_info_content, tui_erase_exec_info_content)
-	(tui_clear_exec_info_content, tui_update_exec_info): Change
-	argument to tui_source_window_base.
-	* tui/tui-winsource.c (tui_set_exec_info_content)
-	(tui_show_exec_info_content, tui_erase_exec_info_content)
-	(tui_clear_exec_info_content, tui_update_exec_info): Change
-	argument to tui_source_window_base.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (tui_set_exec_info_content): Return void.
-	* tui/tui-winsource.c (tui_set_exec_info_content): Return void.
+	* configure.ac: Remove check for fs_base/gs_base in
+	user_regs_struct.
+	* configure: Re-generate.
+	* config.in: Re-generate.
+	* amd64-nat.c (amd64_native_gregset_reg_offset): Adjust.
+	* amd64-linux-nat.c (amd64_linux_nat_target::fetch_registers,
+	amd64_linux_nat_target::store_registers, ps_get_thread_area, ): Adjust.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-27  Luis Machado  <luis.machado@linaro.org>
 
-	* tui/tui-winsource.c (tui_set_exec_info_content): Remove NULL
-	check.
+	* dwarf2/frame-tailcall.c (dwarf2_tailcall_sniffer_first): Handle
+	problematic inline frame unwinding situation.
+	* frame.c (frame_id_computed_p): New function.
+	* frame.h (frame_id_computed_p): New prototype.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-26  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.h (tui_alloc_source_buffer): Change return
-	type to void.
-	* tui/tui-winsource.c (tui_alloc_source_buffer): Change return
-	type to void.
-	* tui/tui-source.c (tui_set_source_content): Update.
-	* tui/tui-disasm.c (tui_set_disassem_content): Update.
+	* command.h (enum command_class) <class_pseudo>: Remove.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-26  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
-	* tui/tui-win.c (window_name_completer, tui_set_focus)
-	(tui_all_windows_info): Use name method.
-	* tui/tui-data.h (struct tui_gen_win_info)
-	(struct tui_source_window, struct tui_disasm_window)
-	(struct tui_data_window, struct tui_cmd_window) <name>: New
-	method.
-	(tui_win_name): Don't declare.
-	* tui/tui-data.c (tui_partial_win_by_name): Use name method.
-	(tui_win_name): Remove.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (tui_update_source_window)
-	(tui_update_source_window_as_is): Change parameter type.
-	* tui/tui-winsource.c (tui_update_source_window): Change win_info
-	to be a tui_source_window_base.
-	(tui_update_source_window_as_is): Likewise.
-	* tui/tui-win.c (make_visible_with_new_height): Update.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.c (tui_erase_source_content)
-	(tui_show_source_content, tui_show_exec_info_content)
-	(tui_erase_exec_info_content): Use refresh_window method.
-	* tui/tui-wingeneral.h (tui_refresh_win): Don't declare.
-	* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Rename
-	from tui_refresh_win.
-	(tui_data_window::refresh_window): New method.
-	(tui_win_info::refresh, tui_source_window_base::refresh)
-	(tui_refresh_all): Use refresh_window method.
-	* tui/tui-stack.c (tui_show_locator_content): Call refresh_window
-	method.
-	* tui/tui-regs.c (tui_display_register): Call refresh_window
-	method.
-	* tui/tui-layout.c (show_source_disasm_command)
-	(show_source_or_disasm_and_command): Call refresh_window method.
-	* tui/tui-data.h (struct tui_gen_win_info)
-	(struct tui_data_window, struct tui_cmd_window) <refresh_window>:
-	New method.
+	* cli/cli-decode.c (lookup_cmd_composition): Fix comments
+	and whitespace.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-25  Kamil Rytarowski  <n54@gmx.com>
 
-	* tui/tui.c (tui_rl_other_window, tui_enable)
-	(tui_is_window_visible, tui_get_command_dimension): Update.
-	* tui/tui-winsource.c (tui_update_source_window_as_is)
-	(tui_clear_source_content, tui_erase_source_content)
-	(tui_show_source_line, tui_source_window_base::refill)
-	(tui_source_window_base::do_scroll_horizontal)
-	(tui_source_window_base::set_is_exec_point_at)
-	(tui_update_breakpoint_info, tui_set_exec_info_content)
-	(tui_alloc_source_buffer, tui_line_is_displayed)
-	(tui_addr_is_displayed): Update.
-	* tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win)
-	(tui_check_and_display_highlight_if_needed)
-	(tui_win_info::make_visible, tui_win_info::refresh)
-	(tui_refresh_all): Update.
-	* tui/tui-windata.c (tui_first_data_item_displayed)
-	(tui_delete_data_content_windows, tui_erase_data_content)
-	(tui_display_all_data, tui_data_window::refresh_all)
-	(tui_check_data_values): Update.
-	* tui/tui-win.c (window_name_completer, tui_update_gdb_sizes)
-	(tui_set_win_focus_to, tui_win_info::forward_scroll)
-	(tui_win_info::backward_scroll, tui_refresh_all_win)
-	(tui_resize_all, tui_set_focus, tui_all_windows_info)
-	(update_tab_width, tui_set_win_height, tui_adjust_win_heights)
-	(tui_source_window_base::set_new_height)
-	(tui_data_window::set_new_height)
-	(make_invisible_and_set_new_height)
-	(make_visible_with_new_height, new_height_ok)
-	(parse_scrolling_args): Update.
-	* tui/tui-stack.c (tui_show_frame_info): Update.
-	* tui/tui-source.c (tui_set_source_content)
-	(tui_set_source_content_nil, tui_source_is_displayed)
-	(tui_source_window::do_scroll_vertical): Update.
-	* tui/tui-regs.c (tui_show_registers, tui_show_register_group)
-	(tui_display_registers_from, tui_display_reg_element_at_line)
-	(tui_check_register_values, tui_reg_command): Update.
-	* tui/tui-layout.c (tui_default_win_height)
-	(show_source_disasm_command, show_data, init_and_make_win)
-	(show_source_or_disasm_and_command): Update.
-	* tui/tui-io.c (update_cmdwin_start_line, tui_putc, tui_puts)
-	(tui_redisplay_readline, tui_mld_flush)
-	(tui_mld_erase_entire_line, tui_mld_getc, tui_cont_sig)
-	(tui_getc): Update.
-	* tui/tui-disasm.c (tui_set_disassem_content)
-	(tui_disasm_window::do_scroll_vertical): Update.
-	* tui/tui-data.h (struct tui_gen_win_info) <~tui_gen_win_info>:
-	Now virtual.
-	(struct tui_win_info): Derive from tui_gen_win_info.
-	<~tui_win_info>: Mark as override.
-	<generic>: Remove member.
-	* tui/tui-data.c (tui_cmd_window::clear_detail, tui_next_win)
-	(tui_prev_win, tui_partial_win_by_name, tui_win_info)
-	(~tui_data_window, ~tui_win_info)
-	(tui_free_all_source_wins_content): Update.
-	* tui/tui-command.c (tui_refresh_cmd_win): Update.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-layout.c (init_and_make_win): Use new.
-	* tui/tui-data.h (struct tui_gen_win_info): Add constructor,
-	destructor, initializers.
-	(tui_alloc_generic_win_info): Don't declare.
-	* tui/tui-data.c (_locator): Add argument to constructor.
-	(source_win, disasm_win): New globals.
-	(exec_info): Remove.
-	(tui_source_exec_info_win_ptr, tui_disassem_exec_info_win_ptr):
-	Update.
-	(tui_alloc_generic_win_info): Remove.
-	(init_content_element): Use new.
-	(tui_win_info::tui_win_info): Update.
-	(free_content_elements) <case DATA_WIN>: Use delete.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.c (tui_refresh_win): Update.
-	* tui/tui-windata.c (tui_first_data_item_displayed)
-	(tui_delete_data_content_windows): Update.
-	* tui/tui-win.c (tui_data_window::set_new_height): Update.
-	* tui/tui-regs.c (tui_show_registers, tui_show_register_group)
-	(tui_display_registers_from, tui_check_register_values): Update.
-	* tui/tui-data.h (union tui_which_element) <data_window>: Now a
-	pointer.
-	* tui/tui-data.c (init_content_element): Update.  Allocate the new
-	window.
-	(tui_free_data_content): Update.
-	(free_content_elements) <case DATA_WIN>: Free the window.
+	* inf-ptrace.c (inf_ptrace_target::wait): Remove
+	`PT_GET_PROCESS_STATE' block.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win):
-	Update.
-	* tui/tui-layout.c (make_command_window)
-	(show_source_disasm_command, show_data, init_and_make_win)
-	(show_source_or_disasm_and_command): Update.
-	* tui/tui-data.h (struct tui_win_info) <set_highlight>: New
-	method.
-	<can_highight, is_highlighted>: Now bool.
-	(tui_set_win_highlight): Don't declare.
-	* tui/tui-data.c (tui_set_win_highlight): Remove.
+	* symtab.h (symbol_get_demangled_name): Don't declare.
+	* symtab.c (symbol_get_demangled_name): Remove.
+	(general_symbol_info::natural_name)
+	(general_symbol_info::demangled_name): Update.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-wingeneral.c (make_visible): Remove check of window
-	type.
+	PR rust/25025:
+	* dwarf2/read.c (dwarf2_physname): Do not demangle for Rust.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-win.c (tui_win_info::max_height)
-	(tui_cmd_window::max_height): New methods.
-	(new_height_ok): Call max_height.
-	* tui/tui-data.h (struct tui_win_info, struct tui_cmd_window)
-	<max_height>: New method.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (tui_source_window_base::set_new_height)
-	(tui_data_window::set_new_height): New methods.
-	(make_invisible_and_set_new_height): Call set_new_height method.
-	* tui/tui-data.h (struct tui_win_info)
-	(struct tui_source_window_base, struct tui_data_window)
-	<set_new_height>: New method.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui.c (tui_rl_other_window): Call the refresh_all method.
-	* tui/tui-windata.c (tui_data_window::refresh_all): Rename from
-	tui_refresh_data_win.
-	* tui/tui-win.c (tui_source_window_base::refresh_all): New
-	method.
-	(tui_refresh_all_win): Call the refresh_all method.
-	(tui_set_focus): Likewise.
-	* tui/tui-data.h (struct tui_win_info) <refresh_all>: New method.
-	(struct tui_source_window_base, struct tui_data_window) <refresh>:
-	Likewise.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.h (tui_refill_source_window)
-	(tui_set_is_exec_point_at): Don't declare.
-	* tui/tui-winsource.c (tui_update_source_windows_with_addr)
-	(tui_source_window_base::refill): Rename from
-	tui_refill_source_window.
-	(tui_source_window_base::do_scroll_horizontal): Update.
-	(tui_source_window_base::set_is_exec_point_at): Rename from
-	tui_set_is_exec_point_at.
-	(tui_update_all_breakpoint_info): Update.
-	* tui/tui-stack.c (tui_show_frame_info): Update.
-	* tui/tui-layout.c (show_data): Add cast.
-	* tui/tui-hooks.c (tui_redisplay_source): Call refill method.
-	* tui/tui-data.h (struct tui_source_window_base) <refill,
-	set_is_exec_point_at>: New methods.
-	(tui_source_windows, tui_add_to_source_windows): Update types.
-	(tui_add_to_source_windows): Remove redundant declaration.
-	* tui/tui-data.c (source_windows): Store tui_source_window_base.
-	(tui_source_windows): Change return type.
-	(tui_clear_source_windows_detail): Update.
-	(tui_add_to_source_windows): Change type of parameter.
-	(tui_free_all_source_wins_content): Update.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.c (tui_win_info::refresh)
-	(tui_source_window_base::refresh): New methods.
-	(tui_refresh_all): Call the refresh method.
-	* tui/tui-data.h (struct tui_win_info)
-	(struct tui_source_window_base) <refresh>: New method.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui.h (tui_is_window_visible): Return bool.
-	* tui/tui.c (tui_is_window_visible): Return bool.
-	* tui/tui-wingeneral.c (tui_make_window, make_visible)
-	(tui_make_visible, tui_make_invisible)
-	(tui_win_info::make_visible)
-	(tui_source_window_base::make_visible, make_all_visible)
-	(tui_make_all_visible, tui_make_all_invisible): Update.
-	* tui/tui-windata.c (tui_delete_data_content_windows): Update.
-	* tui/tui-data.h (struct tui_gen_win_info) <is_visible>: Now
-	bool.
-	(struct tui_win_info, struct tui_source_window_base)
-	(struct tui_cmd_window) <make_visible>: Change parameter to bool.
-	* tui/tui-data.c (tui_init_generic_part): Update.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.c (tui_win_info::make_visible)
-	(tui_source_window_base::make_visible): New methods.
-	(make_all_visible): Make method call.
-	* tui/tui-data.h (struct tui_win_info) <make_visible>: New method.
-	(struct tui_source_window_base, struct tui_cmd_window): Override
-	make_visible.
-	(tui_win_is_source_type): Don't declare.
-	* tui/tui-data.c (tui_win_is_source_type): Remove.
+	PR symtab/12707:
+	* dwarf2/read.c (add_partial_symbol): Use the linkage name if it
+	exists.
+	(new_symbol): Likewise.
+	* compile/compile-object-load.c (get_out_value_type): Use
+	symbol_matches_search_name.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-layout.c (show_source_or_disasm_and_command): Remove
-	NULL check.
+	* dwarf2/read.c (add_partial_symbol): Do not call
+	compute_and_set_names.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-data.h (struct tui_data_window, struct tui_cmd_window):
-	Inline constructor.  Add initializers for members.
-	* tui/tui-data.c (tui_data_window, tui_cmd_window): Remove
-	constructors; now inline in class.
+	* dwarf2/read.c (add_partial_symbol): Use new add_psymbol_to_list
+	overload.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-regs.c (tui_show_registers): Update.
-	* tui/tui-data.h (struct tui_data_window) <display_regs>: Now
-	bool.
-	* tui/tui-data.c (tui_data_window::clear_detail)
-	(tui_data_window): Update.
+	* psymtab.c (add_psymbol_to_bcache): Simplify calling convention.
+	(add_psymbol_to_list): New overload.  Make old overload call new
+	one.
+	* psympriv.h (add_psymbol_to_list): New overload.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-windata.c (tui_display_all_data)
-	(tui_display_data_from_line, tui_display_data_from)
-	(tui_check_data_values, tui_data_window::do_scroll_vertical):
-	Update.
-	* tui/tui-regs.c (tui_last_regs_line_no)
-	(tui_line_from_reg_element_no, tui_first_reg_element_no_inline)
-	(tui_show_registers, tui_show_register_group)
-	(tui_display_registers_from, tui_display_reg_element_at_line)
-	(tui_display_registers_from_line, tui_check_register_values)
-	(tui_reg_next, tui_reg_prev): Update.
-	* tui/tui-layout.c (tui_set_layout, show_data): Update.
-	* tui/tui-data.h (struct tui_data_info): Remove.  Move contents to
-	tui_data_window.
-	(struct tui_win_info) <detail>: Remove.  Add new fields from
-	tui_data_info.
-	(TUI_DATA_WIN): Add cast.
-	* tui/tui-data.c (tui_data_window::clear_detail, tui_data_window)
-	(~tui_data_window): Simplify.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-layout.c (show_source_disasm_command)
-	(show_source_or_disasm_and_command): Update.
-	* tui/tui-io.c (update_cmdwin_start_line)
-	(tui_redisplay_readline): Update.
-	* tui/tui-data.h (struct tui_command_info): Remove.
-	(struct tui_win_info) <detail>: Remove command_info member.
-	(struct tui_data_window) <start_line>: New member, from
-	tui_command_info.
-	(TUI_CMD_WIN): Add casts.
+	* dwarf2/read.c (partial_die_info::read) <case
+	DW_AT_linkage_name>: Use value_as_string.
+	(dwarf2_string_attr): Use value_as_string.
+	* dwarf2/attribute.h (struct attribute) <value_as_string>: Declare
+	method.
+	* dwarf2/attribute.c (attribute::value_as_string): New method.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.c (tui_update_source_window)
-	(tui_refill_source_window)
-	(tui_source_window_base::do_scroll_horizontal)
-	(tui_update_breakpoint_info, tui_set_exec_info_content)
-	(tui_show_exec_info_content, tui_erase_exec_info_content)
-	(tui_clear_exec_info_content): Update.
-	* tui/tui-wingeneral.c (make_all_visible, tui_refresh_all):
-	Update.
-	* tui/tui-win.c (make_invisible_and_set_new_height)
-	(make_visible_with_new_height): Update.
-	* tui/tui-source.c (tui_set_source_content)
-	(tui_show_symtab_source): Update.
-	* tui/tui-layout.c (extract_display_start_addr)
-	(show_source_disasm_command, show_data)
-	(make_source_or_disasm_window)
-	(show_source_or_disasm_and_command): Update.
-	* tui/tui-disasm.c (tui_set_disassem_content): Simplify.
-	(tui_disasm_window::do_scroll_vertical): Remove shadowing
-	"gdbarch".
-	* tui/tui-data.h (struct tui_source_info): Remove.  Move contents
-	to tui_source_window_base.
-	(struct tui_win_info) <detail>: Remove source_info member.
-	(struct tui_source_window_base) <has_locator>: Inline.
-	Move contents from tui_source_info; rename has_locator member to
-	m_has_locator.
-	(TUI_SRC_WIN, TUI_DISASM_WIN): Add casts.
-	* tui/tui-data.c (tui_source_window_base::has_locator): Move to
-	header file.
-	(tui_source_window_base::clear_detail, ~tui_source_window_base):
-	Simplify.
-	(tui_free_all_source_wins_content): Cast to
-	tui_source_window_base.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-win.c (make_invisible_and_set_new_height)
-	(make_visible_with_new_height): Call has_locator method.
-	* tui/tui-layout.c (show_source_disasm_command, show_data)
-	(show_source_or_disasm_and_command): Update for bool change.
-	* tui/tui-data.h (struct tui_source_info) <has_locator>: Now bool.
-	(tui_win_info) <has_locator>: New method.
-	(struct tui_source_window_base) <has_locator>: New method.
-	(tui_win_has_locator): Don't declare.
-	* tui/tui-data.c (tui_source_window_base::has_locator): Rename
-	from tui_win_has_locator.
-	(tui_source_window_base): Use false, not FALSE.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.h (tui_clear_win_detail): Don't declare.
-	* tui/tui-data.c (tui_clear_source_windows_detail): Call the
-	clear_detail method directly.
-	(tui_clear_win_detail): Remove.
+	* symtab.c (general_symbol_info::natural_name)
+	(general_symbol_info::demangled_name): Check for language_rust.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Use
-	"this", not TUI_DISASM_WIN.
+	* dwarf2/read.c (dw2_linkage_name): Move Rust "{" hack here...
+	(dwarf2_physname): ... from here.
+	(partial_die_info::read): Add Rust "{" hack.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.h (tui_horizontal_source_scroll):  Don't
-	declare.
-	* tui/tui-winsource.c
-	(tui_source_window_base::do_scroll_horizontal): Rename from
-	tui_horizontal_source_scroll.
-	* tui/tui-windata.h (tui_vertical_data_scroll): Don't declare.
-	* tui/tui-windata.c (tui_data_window::do_scroll_vertical): Rename
-	from tui_vertical_data_scroll.
-	* tui/tui-win.h (tui_scroll): Don't declare.
-	* tui/tui-win.c (tui_win_info::forward_scroll)
-	(tui_win_info::backward_scroll, tui_win_info::left_scroll)
-	(tui_win_info::right_scroll): Rename and update.
-	(tui_scroll_forward_command, tui_scroll_backward_command)
-	(tui_scroll_left_command, tui_scroll_right_command): Update.
-	(tui_scroll): Remove.
-	* tui/tui-source.h: Don't declare tui_vertical_source_scroll.
-	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Rename
-	from tui_vertical_source_scroll.
-	* tui/tui-disasm.h (tui_vertical_disassem_scroll): Don't declare.
-	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Rename
-	from tui_vertical_disassem_scroll.
-	* tui/tui-data.h (struct tui_win_info) <do_scroll_vertical,
-	do_scroll_horizontal>: New methods.
-	<forward_scroll, backward_scroll, left_scroll, right_scroll>:
-	Likewise.
-	(struct tui_source_window_base): Add do_scroll_horizontal.
-	(struct tui_source_window, struct tui_disasm_window): Add
-	do_scroll_vertical.
-	(struct tui_data_window, struct tui_cmd_window): Add
-	do_scroll_horizontal and do_scroll_vertical.
-	* tui/tui-command.c (tui_dispatch_ctrl_char): Use method calls.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.h (struct tui_source_window_base): New struct.
-	(struct tui_source_window): Derive from tui_source_window_base.
-	(struct tui_disasm_window): New struct.
-	* tui/tui-data.c (tui_source_window_base::clear_detail): Rename
-	from tui_source_window::clear_detail.
-	(tui_source_window_base): Rename from tui_source_window.
-	(~tui_source_window_base): Rename from ~tui_source_window.
-	(tui_alloc_win_info): Create a tui_disasm_window.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.h (struct tui_source_window)
-	(struct tui_data_window): Declare destructors.
-	* tui/tui-data.c (~tui_source_window, ~tui_data_window): New
-	destructors.
-	(tui_win_info): Simplify.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-winsource.c (tui_display_main)
-	(tui_update_source_windows_with_addr)
-	(tui_update_all_breakpoint_info): Update.
-	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
-	(new_height_ok, parse_scrolling_args): Update.
-	* tui/tui-stack.c (tui_show_frame_info): Update.
-	* tui/tui-data.h (struct tui_list): Remove.
-	(tui_source_windows): Return a reference to a std::vector.
-	* tui/tui-data.c (source_windows): Now a std::vector.
-	(tui_source_windows): Change return type.
-	(tui_clear_source_windows): Rewrite.
-	(tui_clear_source_windows_detail, tui_add_to_source_windows)
-	(tui_free_all_source_wins_content): Rewrite.
-
-2019-06-25  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.h (struct tui_win_info, struct tui_source_window)
-	(struct tui_data_window, struct tui_cmd_window): Declare
-	clear_detail method.
-	* tui/tui-data.c (tui_source_window::clear_detail)
-	(tui_cmd_window::clear_detail, tui_data_window::clear_detail): New
-	methods.
-	(tui_clear_win_detail): Simplify.
+	* symtab.h (struct general_symbol_info) <set_demangled_name>: New
+	method.
+	(symbol_set_demangled_name): Don't declare.
+	* symtab.c (general_symbol_info::set_demangled_name): Rename from
+	symbol_set_demangled_name.
+	(general_symbol_info::set_language)
+	(general_symbol_info::compute_and_set_names): Update.
+	* minsyms.c (minimal_symbol_reader::install): Update.
+	* dwarf2/read.c (new_symbol): Update.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	PR python/23662:
+	* python/py-type.c (convert_field): Handle
+	FIELD_LOC_KIND_DWARF_BLOCK.
+	(typy_get_sizeof): Handle TYPE_HAS_DYNAMIC_LENGTH.
+	(typy_get_dynamic): Nw function.
+	(type_object_getset): Add "dynamic".
+	* NEWS: Add entry.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-layout.c (make_source_window, make_disasm_window)
-	(make_source_or_disasm_window): Remove win_info_ptr parameter.
-	Return the new window.
-	(show_source_disasm_command, show_data)
-	(show_source_or_disasm_and_command): Update.
+	* ada-typeprint.c (print_choices, print_variant_part)
+	(print_record_field_types_dynamic): New functions.
+	(print_record_field_types): Use print_record_field_types_dynamic.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (handle_data_member_location): New overload.
+	(dwarf2_add_field): Use it.
+	(decode_locdesc): Add "computed" parameter.  Update comment.
+	* gdbtypes.c (is_dynamic_type_internal): Also look for
+	FIELD_LOC_KIND_DWARF_BLOCK.
+	(resolve_dynamic_struct): Handle FIELD_LOC_KIND_DWARF_BLOCK.
+	* gdbtypes.c (is_dynamic_type_internal): Add special case for C++
+	virtual base classes.
+	* gnu-v3-abi.c (gnuv3_baseclass_offset): Handle
+	FIELD_LOC_KIND_DWARF_BLOCK.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (read_structure_type): Handle dynamic length.
+	* gdbtypes.c (is_dynamic_type_internal): Check
+	TYPE_HAS_DYNAMIC_LENGTH.
+	(resolve_dynamic_type_internal): Use TYPE_DYNAMIC_LENGTH.
+	* gdbtypes.h (TYPE_HAS_DYNAMIC_LENGTH, TYPE_DYNAMIC_LENGTH):
+	New macros.
+	(enum dynamic_prop_node_kind) <DYN_PROP_BYTE_SIZE>: New
+	constant.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (struct variant_field): Rewrite.
+	(struct variant_part_builder): New.
+	(struct nextfield): Remove "variant" field.  Add "offset".
+	(struct field_info): Add "current_variant_part" and
+	"variant_parts".
+	(alloc_discriminant_info): Remove.
+	(alloc_rust_variant): New function.
+	(quirk_rust_enum): Update.
+	(dwarf2_add_field): Set "offset" member.  Don't handle
+	DW_TAG_variant_part.
+	(offset_map_type): New typedef.
+	(convert_variant_range, create_one_variant)
+	(create_one_variant_part, create_variant_parts)
+	(add_variant_property): New functions.
+	(dwarf2_attach_fields_to_type): Call add_variant_property.
+	(read_structure_type): Don't handle DW_TAG_variant_part.
+	(handle_variant_part, handle_variant): New functions.
+	(handle_struct_member_die): Use them.
+	(process_structure_scope): Don't handle variant parts.
+	* gdbtypes.h (TYPE_FLAG_DISCRIMINATED_UNION): Remove.
+	(struct discriminant_info): Remove.
+	(enum dynamic_prop_node_kind) <DYN_PROP_DISCRIMINATED>: Remove.
+	(struct main_type) <flag_discriminated_union>: Remove.
+	* rust-lang.c (rust_enum_p, rust_empty_enum_p): Rewrite.
+	(rust_enum_variant): Return int.  Remove "contents".  Rewrite.
+	(rust_print_enum, rust_print_struct_def, rust_evaluate_subexp):
+	Update.
+	* valops.c (value_union_variant): Remove.
+	* value.h (value_union_variant): Don't declare.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_discrete_type_high_bound, ada_discrete_type_low)
+	(ada_value_primitive_packed_val): Update.
+	* ada-valprint.c (ada_value_print_1): Update.
+	* dwarf2/loc.c (evaluate_for_locexpr_baton): New struct.
+	(dwarf2_locexpr_baton_eval): Take a property_addr_info rather than
+	just an address.  Use evaluate_for_locexpr_baton.
+	(dwarf2_evaluate_property): Update.
+	* dwarf2/loc.h (struct property_addr_info) <valaddr>: Now an
+	array_view.
+	* findvar.c (default_read_var_value): Update.
+	* gdbtypes.c (compute_variant_fields_inner)
+	(resolve_dynamic_type_internal): Update.
+	(resolve_dynamic_type): Change type of valaddr parameter.
+	* gdbtypes.h (resolve_dynamic_type): Update.
+	* valarith.c (value_subscripted_rvalue): Update.
+	* value.c (value_from_contents_and_address): Update.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/loc.c (dwarf2_locexpr_baton_eval): Add
+	"push_initial_value" parameter.
+	(dwarf2_evaluate_property): Likewise.
+	* dwarf2/loc.h (dwarf2_evaluate_property): Update.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* gdbtypes.c (is_dynamic_type_internal): Check for variant parts.
+	(variant::matches, compute_variant_fields_recurse)
+	(compute_variant_fields_inner, compute_variant_fields): New
+	functions.
+	(resolve_dynamic_struct): Check for DYN_PROP_VARIANT_PARTS.
+	Use resolved_type after type is made.
+	(operator==): Add new cases.
+	* gdbtypes.h (TYPE_HAS_VARIANT_PARTS): New macro.
+	(struct discriminant_range, struct variant, struct variant_part):
+	New.
+	(union dynamic_prop_data) <variant_parts, original_type>: New
+	members.
+	(enum dynamic_prop_node_kind) <DYN_PROP_VARIANT_PARTS>: New constant.
+	(enum dynamic_prop_kind) <PROP_TYPE, PROP_VARIANT_PARTS>: New
+	constants.
+	* value.c (unpack_bits_as_long): Now public.
+	* value.h (unpack_bits_as_long): Declare.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-layout.c (make_command_window): Remove win_info_ptr
-	parameter.  Return the new window.
-	(show_source_disasm_command): Update and remove NULL check.
-	(show_source_or_disasm_and_command): Update.
+	* rs6000-tdep.c (struct ppc_variant): Rename from "variant".
+	(variants, find_variant_by_arch, rs6000_gdbarch_init): Update.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Hannes Domani  <ssbssa@yahoo.de>
 
-	* tui/tui-layout.c (init_and_make_win): Remove NULL check.
+	* windows-tdep.c (exception_values): Add WOW64 exception numbers.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Kamil Rytarowski  <n54@gmx.com>
 
-	* tui/tui-data.h (struct tui_win_info): Make constructor
-	protected.  Make destructor virtual.  Add initializers.
-	(tui_source_window, tui_data_window, tui_cmd_window): New
-	classes.
-	* tui/tui-data.c (tui_win_info): Rename from init_win_info.  Now a
-	constructor.  Add "type" parameter.
-	(tui_source_window, tui_data_window, tui_cmd_window): New
-	constructors.
-	(tui_alloc_win_info): Instantiate the appropriate subclass.
+	* inf-ptrace.h (follow_fork, insert_fork_catchpoint)
+	(remove_fork_catchpoint, post_startup_inferior)
+	(post_attach): Move...
+	* obsd-nat.h (follow_fork, insert_fork_catchpoint)
+	(remove_fork_catchpoint, post_startup_inferior)
+	(post_attach): ...here.
+	* inf-ptrace.c (follow_fork, insert_fork_catchpoint)
+	(remove_fork_catchpoint, post_startup_inferior)
+	(post_attach): Move...
+	* obsd-nat.c (follow_fork, insert_fork_catchpoint)
+	(remove_fork_catchpoint, post_startup_inferior)
+	(post_attach): ...here.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-win.c (tui_resize_all): Use delete.
-	* tui/tui-data.h (struct tui_win_info) <~tui_win_info>: Declare
-	destructor.
-	(tui_free_window): Don't declare.
-	* tui/tui-data.c (~tui_win_info): Rename from tui_free_window.
-	Update.
+	* nat/windows-nat.h (struct windows_thread_info)
+	<pc_adjusted>: New member.
+	* windows-nat.c (windows_fetch_one_register): Check
+	pc_adjusted.
+	(windows_nat_target::get_windows_debug_event)
+	(windows_nat_target::wait): Set pc_adjusted.
 
-2019-06-25  Tom Tromey  <tom@tromey.com>
+2020-04-24  Tom de Vries  <tdevries@suse.de>
 
-	* tui/tui-data.h (struct tui_win_info): Add constructor.
-	* tui/tui-data.c (tui_alloc_win_info): Use new.
-	(tui_free_window): Use delete.
+	* contrib/cc-with-tweaks.sh: Remove <exec>.gdb-index file handling.
+	Run gdb-add-index inside temp dir.
 
-2019-06-22  Tom Tromey  <tom@tromey.com>
+2020-04-23  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-windata.h (tui_first_data_element_no_in_line): Don't
-	declare.
-	* tui/tui-windata.c (tui_first_data_element_no_in_line): Remove.
+	* windows-tdep.c (is_linked_with_cygwin_dll): Always update "iter"
+	in loop.
 
-2019-06-22  Tom Tromey  <tom@tromey.com>
+2020-04-23  Luis Machado  <luis.machado@linaro.org>
 
-	* tui/tui-data.h (tui_del_window, tui_del_data_windows): Don't
-	declare.
-	* tui/tui-data.c (tui_del_window, tui_del_data_windows): Remove.
+	* dwarf2/frame-tailcall.c (dwarf2_tailcall_sniffer_first): Use
+	get_frame_register instead of gdbarch_unwind_pc.
 
-2019-06-22  Tom de Vries  <tdevries@suse.de>
+2020-04-23  Tom de Vries  <tdevries@suse.de>
 
-	* dwarf2read.c (create_addrmap_from_aranges)
-	(read_debug_names_from_section): Print ptrdiff_t using '%s' and plongest
-	instead of '%zu'.
-
-2019-06-21  Simon Marchi  <simon.marchi@efficios.com>
-
-	* dwarf2read.h (dwarf2_section_info_def): Remove.
-	(DEF_VEC_O (dwarf2_section_info_def)): Remove.
-	* dwarf2read.c (struct dwo_sections) <types>: Change type to
-	std::vector<dwarf2_section_info>.
-	(struct dwo_file) <~dwo_file>: Remove.
-	(dwarf2_per_objfile::~dwarf2_per_objfile): Don't manually free
-	types field.
-	(dwarf2_per_objfile::locate_sections): Adjust to std::vector.
-	(dwarf2_read_debug_names): Likewise.
-	(create_debug_types_hash_table): Change parameter type to
-	array_view, adjust code accordingly.
-	(dwarf2_locate_dwo_sections): Adjust to std::vector.
-	(partial_die_info::fixup): Likewise.
-	(determine_prefix): Likewise.
-	* dwarf-index-write.c (write_psymtabs_to_index): Adjust.
-
-2019-06-21  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* dwarf2read.c (struct dwo_file) <dbfd>: Change type to
-	gdb_bfd_ref_ptr.
-	<~dwo_file>: Remove call to gdb_bfd_unref.
-	(open_and_init_dwo_file): Move gdb_bfd_ref_ptr into dbfd field. Call
-	gdb_bfd_ref_ptr::get.
-
-2019-06-21  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* dwarf2read.h (struct dwarf2_per_objfile) <dwo_files>: Change
-	type to htab_up.
-	* dwarf2read.c (struct dwo_file): Initialize fields.
-	<~dwo_file>: New.
-	(free_dwo_file): Remove, move content to ~dwo_file.
-	(struct dwo_file_deleter): Remove.
-	(dwo_file_up>: Remove custom deleter.
-	(free_dwo_files): Remove.
-	(dwarf2_per_objfile::~dwarf2_per_objfile): Don't explicitly free
-	dwo_files.
-	(process_skeletonless_type_units): Call unique_ptr::get.
-	(allocate_dwo_file_hash_table): Add deleter to created hash
-	table.  Change return type to htab_up.
-	(lookup_dwo_file_slot): Don't memset dwo_file, call
-	unique_ptr::get.
-	(create_dwo_unit_in_dwp_v1): Allocate dwo_file with new.
-	(create_dwo_unit_in_dwp_v2): Likewise.
-	(open_and_init_dwo_file): Likewise.
-	(free_dwo_file_from_slot): Remove.
+	* symtab.c (lookup_global_symbol): Prefer def over decl.
 
-2019-06-21  Simon Marchi  <simon.marchi@polymtl.ca>
+2020-04-23  Tom de Vries  <tdevries@suse.de>
 
-	* dwarf2read.h (struct dwarf2_section_info) <readin,
-	is_virtual>: Change type to bool.
-	* dwarf2read.c (dwarf2_read_section, create_dwp_v2_section): Use
-	true instead of 1.
+	PR symtab/25807
+	* block.c (best_symbol, better_symbol): Promote to external.
+	* block.h (best_symbol, better_symbol): Declare.
+	* symtab.c (lookup_symbol_in_objfile_symtabs): Prefer def over
+	decl.
 
-2019-06-19  Tom Tromey  <tom@tromey.com>
+2020-04-23  Tom Tromey  <tromey@adacore.com>
 
-	* tui/tui-data.h (tui_init_content_element): Don't declare.
+	PR ada/25837:
+	* dwarf2/read.c (dw2_expand_symtabs_matching_symbol): Store a
+	"const char *", not a "const std::string &".
+	<name_and_matcher::operator==>: Update.
+	* unittests/lookup_name_info-selftests.c: Change type of
+	"result".
+
+2020-04-23  Tom Tromey  <tom@tromey.com>
+
+	* inferior.h (iterate_over_inferiors): Don't declare.
+	* inferior.c (iterate_over_inferiors): Remove.
+	* darwin-nat.c (find_inferior_task_it, find_inferior_pid_it):
+	Remove.
+	(darwin_find_inferior_by_task, darwin_find_inferior_by_pid): Don't
+	use iterate_over_inferiors.
+	(darwin_resume_inferior_it)
+	(struct resume_inferior_threads_param)
+	(darwin_resume_inferior_threads_it): Remove.
+	(darwin_nat_target::resume): Don't use iterate_over_inferiors.
 
-2019-06-19  Tom Tromey  <tom@tromey.com>
+2020-04-23  Tom de Vries  <tdevries@suse.de>
 
-	* tui/tui-data.h (tui_init_win_info): Don't declare.
+	* blockframe.c (find_pc_partial_function): Use
+	find_pc_sect_compunit_symtab rather than
+	objfile->sf->qf->find_pc_sect_compunit_symtab.
 
-2019-06-19  Tom de Vries  <tdevries@suse.de>
+2020-04-22  Tom de Vries  <tdevries@suse.de>
 
-	* dwarf2read.h (abstract_to_concrete): Change type to
-	std::unordered_map<sect_offset, std::vector<sect_offset>,
-	gdb::hash_enum<sect_offset>>.
+	PR symtab/25764
+	* dwarf2/read.c (scan_partial_symbols): Allow external variable decls
+	in psymtabs.
 
-2019-06-19  Tom Tromey  <tromey@adacore.com>
+2020-04-22  Tom de Vries  <tdevries@suse.de>
 
-	* ada-lang.c (ada_evaluate_subexp) <case OP_ATR_FIRST>: Handle
-	EVAL_AVOID_SIDE_EFFECTS specially.
+	PR symtab/25801
+	* psymtab.c (psym_map_symtabs_matching_filename): Don't skip shared
+	symtabs.
 
-2019-06-19  Tom Tromey  <tromey@adacore.com>
+2020-04-22  Tom de Vries  <tdevries@suse.de>
 
-	* source-cache.c (highlighter): New global.
-	(source_cache::get_source_lines): Create a highlighter on demand.
+	PR symtab/25700
+	* dwarf2/read.c (dwarf2_build_psymtabs_hard): Don't create psymtab for
+	CU if already created.
 
-2019-06-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-04-21  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-	* defs.h (deprecated_interactive_hook): Delete declaration.
-	* interps.c (clear_interpreter_hooks): Remove use of
-	deprecated_interactive_hook.
-	* top.c (deprecated_interactive_hook): Delete definition.
-	* utils.c (maybe_quit): Remove use of deprecated_interactive_hook.
+	* infrun.c (displaced_step_fixup): Switch to the event_thread
+	before calling displaced_step_restore, not after.
 
-2019-06-18  Tom de Vries  <tdevries@suse.de>
+2020-04-21  Markus Metzger  <markus.t.metzger@intel.com>
 
-	PR gdb/24515
-	* dwarf2read.h (abstract_to_concrete): Change type from
-	std::unordered_map<die_info_ptr, std::vector<die_info_ptr>> to
-	std::unordered_map<sect_offset, std::vector<sect_offset>>.
-	* dwarf2read.c (read_variable): Update.
-	(dwarf2_fetch_die_loc_sect_off): Update.
+	* record-btrace.c (record_btrace_enable_warn): Ignore thread if
+	its inferior is not recorded by us.
+	(record_btrace_target_open): Replace call to
+	all_non_exited_threads () with call to current_inferior
+	()->non_exited_threads ().
+	(record_btrace_target::stop_recording): Likewise.
+	(record_btrace_target::close): Likewise.
+	(record_btrace_target::wait): Likewise.
+	(record_btrace_target::record_stop_replaying): Likewise.
 
-2019-06-17  Tom de Vries  <tdevries@suse.de>
+2020-04-21  Markus Metzger  <markus.t.metzger@intel.com>
 
-	PR gdb/24617
-	* common/pathstuff.c (child_path): Make sure parent_len > 0 before
-	accessing parent[parent_len - 1].
-
-2019-06-17  Paul Pluzhnikov  <ppluzhnikov@google.com>
-
-	PR gdb/24364
-	* gdb/dtrace-probe.c (dtrace_static_probe_ops::get_probe): Don't
-	call dtrace_process_dof with NULL dof.
-
-2019-06-16  Tom de Vries  <tdevries@suse.de>
-
-	PR gdb/24445
-	* contrib/gdb-add-index.sh: Update to handle dwz-m-ed executable.
-
-2019-06-16  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win)
-	(make_all_visible): Use address of member.
-
-2019-06-16  Tom Tromey  <tom@tromey.com>
-
-	* tui/tui-data.c (tui_clear_win_detail, init_win_info)
-	(tui_free_window, free_content, free_content_elements): Remove
-	unnecessary cast.
-	* tui/tui-windata.c (tui_display_all_data): Remove unnecessary
-	cast.
-	* tui/tui-regs.c (tui_show_register_group)
-	(tui_display_registers_from, tui_display_reg_element_at_line):
-	Remove unnecessary cast.
-
-2019-06-16  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* linux-nat.c (normal_mask): Delete.
-	(_initialize_linux_nat): Don't initialise normal_mask.
-
-2019-06-16  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	PR gdb/24445
-	* dwarf-index-write.h (write_psymtabs_to_index): Add
-	dwz_basename parameter.
-	* dwarf-index-write.c (write_gdbindex): Move file writing to
-	write_gdbindex_1.  Change return type void.
-	(assert_file_size): Move up, remove filename parameter.
-	(write_gdbindex_1): New function.
-	(write_debug_names): Change return type to void, call
-	assert_file_size.
-	(struct index_wip_file): New struct.
-	(write_psymtabs_to_index): Add dwz_basename parameter.  Move
-	file logic to index_wip_file.  Write index for dwz file if
-	needed.
-	(save_gdb_index_command): Pass basename of dwz file, if present.
-	* dwarf-index-cache.c (index_cache::store): Obtain and pass
-	build-id of dwz file, if present.
-	* dwarf2read.c (struct dwz_file): Move to dwarf2read.h.
-	(dwarf2_get_dwz_file): Likewise.
-	* dwarf2read.h (struct dwz_file): Move from dwarf2read.c.
-	(dwarf2_get_dwz_file): Likewise.
-
-2019-06-16  Tom Tromey  <tom@tromey.com>
-
-	* coffread.c (process_coff_symbol): Use xstrdup.
-	* value.c (create_internalvar): Use xstrdup.
-
-2019-06-16  Tom Tromey  <tom@tromey.com>
-
-	* valops.c (value_cast, value_slice): Remove unnecessary cast.
-	* breakpoint.c (stopin_command, stopat_command)
-	(until_break_command, decode_location_default): Remove unnecessary
-	cast.
-	* utils.c (subset_compare): Remove unnecessary cast.
-	* ada-lang.c (ada_update_initial_language): Remove unnecessary
-	cast.
-	* linespec.c (decode_line_with_last_displayed): Remove unnecessary
-	cast.
-	* infcmd.c (path_command): Remove unnecessary cast.
-	* coffread.c (decode_type): Remove unnecessary cast.
-	* xcoffread.c (read_xcoff_symtab): Remove unnecessary cast.
-	* mipsread.c (mipscoff_symfile_read): Remove unnecessary cast.
-	* tui/tui-stack.c (tui_show_locator_content)
-	(tui_show_frame_info): Remove unnecessary cast.
-	* tui/tui-win.c (tui_scroll_forward_command)
-	(tui_scroll_backward_command, tui_set_focus, tui_set_win_height)
-	(parse_scrolling_args): Remove unnecessary cast.
-	* tui/tui-data.c (init_win_info, tui_del_window)
-	(tui_free_window, tui_del_data_windows, tui_free_data_content)
-	(free_content_elements): Remove unnecessary cast.
-	* tui/tui-windata.c (tui_first_data_item_displayed): Remove
-	unnecessary cast.
-	* tui/tui-source.c (tui_set_source_content)
-	(tui_vertical_source_scroll): Remove unnecessary cast.
-	* tui/tui-layout.c (tui_default_win_height): Remove unnecessary
-	cast.
-	* tui/tui-io.c (tui_initialize_io): Remove unnecessary cast.
-	* tui/tui-regs.c (tui_display_registers_from)
-	(tui_display_register): Remove unnecessary cast.
-	* tui/tui-wingeneral.c (tui_refresh_win, tui_delete_win)
-	(tui_unhighlight_win, tui_highlight_win, tui_make_window)
-	(make_visible): Remove unnecessary cast.
-	* tui/tui-winsource.c (tui_erase_source_content)
-	(tui_update_breakpoint_info, tui_set_exec_info_content): Remove
-	unnecessary cast.
-	* ax-gdb.c (agent_command_1): Remove unnecessary cast.
-	* cli/cli-setshow.c (cmd_show_list): Remove unnecessary cast.
-	* stabsread.c (read_type, read_array_type, read_range_type):
-	Remove unnecessary cast.
-	* mdebugread.c (mdebug_build_psymtabs): Remove unnecessary cast.
-	(parse_symbol, parse_type, upgrade_type, parse_external)
-	(parse_partial_symbols, psymtab_to_symtab_1, cross_ref): Remove
-	unnecessary cast.
-	* gdb_bfd.c (gdb_bfd_map_section): Remove unnecessary cast.
+	* btrace.c (btrace_enable): Throw an error on double enables and
+	when enabling recording fails.
+	(btrace_disable): Throw an error if the thread is not recorded.
 
-2019-06-16  Tom Tromey  <tom@tromey.com>
+2020-04-21  Markus Metzger  <markus.t.metzger@intel.com>
 
-	* tui/tui-data.c (tui_alloc_generic_win_info)
-	(tui_alloc_win_info, tui_add_content_elements): Remove NULL
-	checks.
+	* record-btrace.c (record_btrace_target::fetch_registers): Forward
+	request if we do not have a thread_info.
 
-2019-06-16  Bernhard Heckel  <bernhard.heckel@intel.com>
-	    Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-04-21  Tom de Vries  <tdevries@suse.de>
 
-	* f-typeprint.c (f_print_type): Don't return early for not
-	associated or not allocated types.
-	(f_type_print_varspec_suffix): Add print_rank parameter and print
-	ranks of array types in case they dangling.
-	(f_type_print_base): Add print_rank parameter.
-
-2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* NEWS: Mention new MI commands.
-	* break-catch-throw.c (enum exception_event_kind): Move to
-	breakpoint.h.
-	(print_mention_exception_catchpoint): Output text as a single
-	message.
-	(catch_exception_command_1): Rename to...
-	(catch_exception_event): ...this, make non-static, update header
-	command, and change some parameter types.
-	(catch_catch_command): Update for changes to
-	catch_exception_command_1.
-	(catch_throw_command): Likewise.
-	(catch_rethrow_command): Likewise.
-	* breakpoint.c (enum exception_event_kind): Delete.
-	* breakpoint.h (enum exception_event_kind): Moved here from
-	break-catch-throw.c.
-	(catch_exception_event): Declare.
-	* mi/mi-cmd-catch.c (mi_cmd_catch_exception_event): New function.
-	(mi_cmd_catch_throw): New function.
-	(mi_cmd_catch_rethrow): New function.
-	(mi_cmd_catch_catch): New function.
-	* mi/mi-cmds.c (mi_cmds): Add 'catch-throw', 'catch-rethrow', and
-	'catch-catch' entries.
-	* mi/mi-cmds.h (mi_cmd_catch_throw): Declare.
-	(mi_cmd_catch_rethrow): Declare.
-	(mi_cmd_catch_catch): Declare.
-
-2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* annotate.c (annotate_source_line): Change return type to void,
-	update implementation to match.
-	* annotate.h (annotate_source_line): Change return type to void,
-	update header comment.
-	* stack.c (print_frame_info): Don't change what frame information
-	is printed based on whether annotations are on or not.
-
-2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* annotate.c: Add 'source.h' and 'objfiles.h' includes.
-	(annotate_source): Make static.
-	(annotate_source_line): Moved from source.c and renamed from
-	identify_source_line.  Update the return type.
-	* annotate.h (annotate_source): Delete declaration.
-	(annotate_source_line): Declaration moved from source.h, and
-	renamed from identify_source_line.  Return type updated.
-	* source.c (identify_source_line): Moved to annotate.c and renamed
-	to annotate_source_line.
-	(info_line_command): Remove check of annotation_level.
-	* source.h (identify_source_line): Move declaration to annotate.h
-	and rename to annotate_source_line.
-	* stack.c: Add 'annotate.h' include.
-	(print_frame_info): Remove check of annotation_level before
-	calling annotate_source_line.
+	PR gdb/25471
+	* thread.c
+	(scoped_restore_current_thread::scoped_restore_current_thread): Catch
+	exception in get_frame_id.
 
-2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-04-20  Tom Tromey  <tromey@adacore.com>
 
-	* source-cache.c (source_cache::get_plain_source_lines): Use
-	open_source_file_with_line_charpos instead of just
-	open_source_file, remove call to find_source_lines.
-	(source_cache::get_source_lines): Likewise.
-	* source.c (find_source_lines): Make static.
-	(get_filename_and_charpos): Renamed into...
-	(open_source_file_with_line_charpos): ..this along with changes to
-	return a scoped_fd, and some other minor clean ups.
-	(identify_source_line): Use open_source_file_with_line_charpos.
-	(search_command_helper): Use open_source_file_with_line_charpos
-	instead of just open_source_file, remove call to
-	find_source_lines.
-	* source.h (open_source_file_with_line_charpos): Declare new
-	function.
-	(find_source_lines): Delete declaration.
+	* python/python.c (struct gdbpy_event): Mark move constructor as
+	noexcept.
+	* python/py-tui.c (class gdbpy_tui_window_maker): Mark move
+	constructor as noexcept.
+	* completer.h (struct completion_result): Mark move constructor as
+	noexcept.
+	* completer.c (completion_result::completion_result): Use
+	initialization style.  Don't call reset_match_list.
 
-2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-04-20  Mihails Strasuns  <mihails.strasuns@intel.com>
 
-	* source.c (get_filename_and_charpos): Remove fullname
-	parameter.
-	(identify_source_line): Update call to get_filename_and_charpos.
+	* MAINTAINERS (Write After Approval): Add myself.
 
-2019-06-14  Tom Tromey  <tromey@adacore.com>
+2020-04-18  Tom Tromey  <tom@tromey.com>
 
-	PR gdb/24502:
-	* ui-style.h (skip_ansi_escape): Update comment.
-	* ui-file.h (class no_terminal_escape_file): New class.
-	* ui-file.c (no_terminal_escape_file::write)
-	(no_terminal_escape_file::puts): New methods.
-	* cli/cli-logging.c (handle_redirections): Use
-	no_terminal_escape_file.
+	* windows-tdep.c (init_w32_command_list)
+	(w32_prefix_command_valid): Restore.
+	(_initialize_windows_tdep): Call init_w32_command_list.
+
+2020-04-18  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (enter_line_range, scan_xcoff_symtab): Update.
+	* value.c (value_fn_field): Update.
+	* valops.c (find_function_in_inferior)
+	(value_allocate_space_in_inferior): Update.
+	* tui/tui-winsource.c (tui_update_source_windows_with_line):
+	Update.
+	* tui/tui-source.c (tui_source_window::set_contents): Update.
+	* symtab.c (lookup_global_or_static_symbol)
+	(find_function_start_sal_1, skip_prologue_sal)
+	(print_msymbol_info, find_gnu_ifunc, symbol_arch): Update.
+	* symmisc.c (dump_msymbols, dump_symtab_1)
+	(maintenance_print_one_line_table): Update.
+	* symfile.c (init_entry_point_info, section_is_mapped)
+	(list_overlays_command, simple_read_overlay_table)
+	(simple_overlay_update_1): Update.
+	* stap-probe.c (handle_stap_probe): Update.
+	* stabsread.c (dbx_init_float_type, define_symbol)
+	(read_one_struct_field, read_enum_type, read_range_type): Update.
+	* source.c (info_line_command): Update.
+	* python/python.c (gdbpy_source_objfile_script)
+	(gdbpy_execute_objfile_script): Update.
+	* python/py-type.c (save_objfile_types): Update.
+	* python/py-objfile.c (py_free_objfile): Update.
+	* python/py-inferior.c (python_new_objfile): Update.
+	* psymtab.c (psym_find_pc_sect_compunit_symtab, dump_psymtab)
+	(dump_psymtab_addrmap_1, maintenance_info_psymtabs)
+	(maintenance_check_psymtabs): Update.
+	* printcmd.c (info_address_command): Update.
+	* objfiles.h (struct objfile) <arch>: New method, from
+	get_objfile_arch.
+	(get_objfile_arch): Don't declare.
+	* objfiles.c (get_objfile_arch): Remove.
+	(filter_overlapping_sections): Update.
+	* minsyms.c (msymbol_is_function): Update.
+	* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines)
+	(output_nondebug_symbol): Update.
+	* mdebugread.c (parse_symbol, basic_type, parse_partial_symbols)
+	(mdebug_expand_psymtab): Update.
+	* machoread.c (macho_add_oso_symfile): Update.
+	* linux-tdep.c (linux_infcall_mmap, linux_infcall_munmap):
+	Update.
+	* linux-fork.c (checkpoint_command): Update.
+	* linespec.c (convert_linespec_to_sals): Update.
+	* jit.c (finalize_symtab): Update.
+	* infrun.c (insert_exception_resume_from_probe): Update.
+	* ia64-tdep.c (ia64_find_unwind_table): Update.
+	* hppa-tdep.c (internalize_unwinds): Update.
+	* gdbtypes.c (get_type_arch, init_float_type, objfile_type):
+	Update.
+	* gcore.c (call_target_sbrk): Update.
+	* elfread.c (record_minimal_symbol, elf_symtab_read)
+	(elf_rel_plt_read, elf_gnu_ifunc_record_cache)
+	(elf_gnu_ifunc_resolve_by_got): Update.
+	* dwarf2/read.c (create_addrmap_from_index)
+	(create_addrmap_from_aranges, dw2_find_pc_sect_compunit_symtab)
+	(read_debug_names_from_section)
+	(process_psymtab_comp_unit_reader, add_partial_symbol)
+	(add_partial_subprogram, process_full_comp_unit)
+	(read_file_scope, read_func_scope, read_lexical_block_scope)
+	(read_call_site_scope, dwarf2_ranges_read)
+	(dwarf2_record_block_ranges, dwarf2_add_field)
+	(mark_common_block_symbol_computed, read_tag_pointer_type)
+	(read_tag_string_type, dwarf2_init_float_type)
+	(dwarf2_init_complex_target_type, read_base_type)
+	(partial_die_info::read, partial_die_info::read)
+	(read_attribute_value, dwarf_decode_lines_1, new_symbol)
+	(dwarf2_fetch_die_loc_sect_off): Update.
+	* dwarf2/loc.c (dwarf2_find_location_expression)
+	(class dwarf_evaluate_loc_desc, rw_pieced_value)
+	(dwarf2_evaluate_loc_desc_full, dwarf2_locexpr_baton_eval)
+	(dwarf2_loc_desc_get_symbol_read_needs)
+	(locexpr_describe_location_piece, locexpr_describe_location_1)
+	(loclist_describe_location): Update.
+	* dwarf2/index-write.c (write_debug_names): Update.
+	* dwarf2/frame.c (dwarf2_build_frame_info): Update.
+	* dtrace-probe.c (dtrace_process_dof): Update.
+	* dbxread.c (read_dbx_symtab, dbx_end_psymtab)
+	(process_one_symbol): Update.
+	* ctfread.c (ctf_init_float_type, read_base_type): Update.
+	* coffread.c (coff_symtab_read, enter_linenos, decode_base_type)
+	(coff_read_enum_type): Update.
+	* cli/cli-cmds.c (edit_command, list_command): Update.
+	* buildsym.c (buildsym_compunit::finish_block_internal): Update.
+	* breakpoint.c (create_overlay_event_breakpoint)
+	(create_longjmp_master_breakpoint)
+	(create_std_terminate_master_breakpoint)
+	(create_exception_master_breakpoint, get_sal_arch): Update.
+	* block.c (block_gdbarch): Update.
+	* annotate.c (annotate_source_line): Update.
+
+2020-04-17  Tom Tromey  <tromey@adacore.com>
+
+	* auto-load.c (show_auto_load_cmd): Remove.
+	(auto_load_show_cmdlist_get): Use add_show_prefix_cmd.
+	* arc-tdep.c (_initialize_arc_tdep): Use add_show_prefix_cmd.
+	(maintenance_print_arc_command): Remove.
+	* tui/tui-win.c (tui_command): Remove.
+	(tui_get_cmd_list): Use add_basic_prefix_cmd.
+	* tui/tui-layout.c (tui_layout_command): Remove.
+	(_initialize_tui_layout): Use add_basic_prefix_cmd.
+	* python/python.c (user_set_python, user_show_python): Remove.
+	(_initialize_python): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* guile/guile.c (set_guile_command, show_guile_command): Remove.
+	(install_gdb_commands): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	(info_guile_command): Remove.
+	* dwarf2/read.c (set_dwarf_cmd, show_dwarf_cmd): Remove.
+	(_initialize_dwarf2_read): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* cli/cli-style.h (class cli_style_option) <add_setshow_commands>:
+	Remove do_set and do_show parameters.
+	* cli/cli-style.c (set_style, show_style): Remove.
+	(_initialize_cli_style): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	(cli_style_option::add_setshow_commands): Remove do_set and
+	do_show parameters.
+	(cli_style_option::add_setshow_commands): Use
+	add_basic_prefix_cmd, add_show_prefix_cmd.
+	(STYLE_ADD_SETSHOW_COMMANDS): Remove macro.
+	(set_style_name): Remove.
+	* cli/cli-dump.c (dump_command, append_command): Remove.
+	(srec_dump_command, ihex_dump_command, verilog_dump_command)
+	(tekhex_dump_command, binary_dump_command)
+	(binary_append_command): Remove.
+	(_initialize_cli_dump): Use add_basic_prefix_cmd.
+	* windows-tdep.c (w32_prefix_command_valid): Remove global.
+	(init_w32_command_list): Remove; move into ...
+	(_initialize_windows_tdep): ... here.  Use add_basic_prefix_cmd.
+	* valprint.c (set_print, show_print, set_print_raw)
+	(show_print_raw): Remove.
+	(_initialize_valprint): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* typeprint.c (set_print_type, show_print_type): Remove.
+	(_initialize_typeprint): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* record.c (set_record_command, show_record_command): Remove.
+	(_initialize_record): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* cli/cli-cmds.c (_initialize_cli_cmds): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	(info_command, show_command, set_debug, show_debug): Remove.
+	* top.h (set_history, show_history): Don't declare.
+	* top.c (set_history, show_history): Remove.
+	* target-descriptions.c (set_tdesc_cmd, show_tdesc_cmd)
+	(unset_tdesc_cmd): Remove.
+	(_initialize_target_descriptions): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* symtab.c (info_module_command): Remove.
+	(_initialize_symtab): Use add_basic_prefix_cmd.
+	* symfile.c (overlay_command): Remove.
+	(_initialize_symfile): Use add_basic_prefix_cmd.
+	* sparc64-tdep.c (info_adi_command): Remove.
+	(_initialize_sparc64_adi_tdep): Use add_basic_prefix_cmd.
+	* sh-tdep.c (show_sh_command, set_sh_command): Remove.
+	(_initialize_sh_tdep): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* serial.c (serial_set_cmd, serial_show_cmd): Remove.
+	(_initialize_serial): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* ser-tcp.c (set_tcp_cmd, show_tcp_cmd): Remove.
+	(_initialize_ser_tcp): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* rs6000-tdep.c (set_powerpc_command, show_powerpc_command)
+	(_initialize_rs6000_tdep): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* riscv-tdep.c (show_riscv_command, set_riscv_command)
+	(show_debug_riscv_command, set_debug_riscv_command): Remove.
+	(_initialize_riscv_tdep): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* remote.c (remote_command, set_remote_cmd): Remove.
+	(_initialize_remote): Use add_basic_prefix_cmd.
+	* record-full.c (set_record_full_command)
+	(show_record_full_command): Remove.
+	(_initialize_record_full): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* record-btrace.c (cmd_set_record_btrace)
+	(cmd_show_record_btrace, cmd_set_record_btrace_bts)
+	(cmd_show_record_btrace_bts, cmd_set_record_btrace_pt)
+	(cmd_show_record_btrace_pt): Remove.
+	(_initialize_record_btrace): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* ravenscar-thread.c (set_ravenscar_command)
+	(show_ravenscar_command): Remove.
+	(_initialize_ravenscar): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* mips-tdep.c (show_mips_command, set_mips_command)
+	(_initialize_mips_tdep): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* maint.c (maintenance_command, maintenance_info_command)
+	(maintenance_check_command, maintenance_print_command)
+	(maintenance_set_cmd, maintenance_show_cmd): Remove.
+	(_initialize_maint_cmds): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	(show_per_command_cmd): Remove.
+	* maint-test-settings.c (maintenance_set_test_settings_cmd):
+	Remove.
+	(maintenance_show_test_settings_cmd): Remove.
+	(_initialize_maint_test_settings): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* maint-test-options.c (maintenance_test_options_command):
+	Remove.
+	(_initialize_maint_test_options): Use add_basic_prefix_cmd.
+	* macrocmd.c (macro_command): Remove
+	(_initialize_macrocmd): Use add_basic_prefix_cmd.
+	* language.c (set_check, show_check): Remove.
+	(_initialize_language): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* infcmd.c (unset_command): Remove.
+	(_initialize_infcmd): Use add_basic_prefix_cmd.
+	* i386-tdep.c (set_mpx_cmd, show_mpx_cmd): Remove.
+	(_initialize_i386_tdep): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* go32-nat.c (go32_info_dos_command): Remove.
+	(_initialize_go32_nat): Use add_basic_prefix_cmd.
+	* cli/cli-decode.c (do_prefix_cmd, add_basic_prefix_cmd)
+	(do_show_prefix_cmd, add_show_prefix_cmd): New functions.
+	* frame.c (set_backtrace_cmd, show_backtrace_cmd): Remove.
+	(_initialize_frame): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* dcache.c (set_dcache_command, show_dcache_command): Remove.
+	(_initialize_dcache): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* cp-support.c (maint_cplus_command): Remove.
+	(_initialize_cp_support): Use add_basic_prefix_cmd.
+	* btrace.c (maint_btrace_cmd, maint_btrace_set_cmd)
+	(maint_btrace_show_cmd, maint_btrace_pt_set_cmd)
+	(maint_btrace_pt_show_cmd, _initialize_btrace): Use
+	add_basic_prefix_cmd, add_show_prefix_cmd.
+	* breakpoint.c (save_command): Remove.
+	(_initialize_breakpoint): Use add_basic_prefix_cmd.
+	* arm-tdep.c (set_arm_command, show_arm_command): Remove.
+	(_initialize_arm_tdep): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* ada-lang.c (maint_set_ada_cmd, maint_show_ada_cmd)
+	(set_ada_command, show_ada_command): Remove.
+	(_initialize_ada_language): Use add_basic_prefix_cmd,
+	add_show_prefix_cmd.
+	* command.h (add_basic_prefix_cmd, add_show_prefix_cmd): Declare.
+
+2020-04-16  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-nat.c (inf_ptrace_target::auxv_parse): Remove.
+	* nbsd-nat.h (inf_ptrace_target::auxv_parse): Likewise.
+
+2020-04-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* windows-tdep.c (is_linked_with_cygwin_dll): Add filename to
+	warning messages.
+
+2020-04-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* windows-tdep.c (is_linked_with_cygwin_dll): Consider case where
+	import table is not at beginning of .idata section.
+
+2020-04-16  Pedro Alves  <palves@redhat.com>
+
+	* inferior.c (delete_inferior): Use delete operator directly
+	instead of delete_program_space.
+	* progspace.c (add_program_space): New, factored out from
+	program_space::program_space.
+	(remove_program_space): New, factored out from
+	delete_program_space.
+	(program_space::program_space): Remove intro comment.  Rewrite.
+	(program_space::~program_space): Remove intro comment.  Call
+	remove_program_space.
+	(delete_program_space): Delete.
+	* progspace.h (program_space::program_space): Make explicit.  Move
+	intro comment here, adjusted.
+	(program_space::~program_space): Move intro comment here,
+	adjusted.
+	(delete_program_space): Remove.
 
-2019-06-14  Tom Tromey  <tromey@adacore.com>
+2020-04-16  Tom Tromey  <tromey@adacore.com>
 
-	* NEWS: Move convenience variable news above Python news.
+	* windows-nat.c (windows_nat::handle_access_violation): New
+	function.
+	* nat/windows-nat.h (handle_access_violation): Declare.
+	* nat/windows-nat.c (handle_exception): Move Cygwin code to
+	windows-nat.c.  Call handle_access_violation.
+
+2020-04-16  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25791
+	* dwarf2/index-write.c (write_gdbindex): Generate CU table entries for
+	CUs without psymtab.
+
+2020-04-16  Kevin Buettner  <kevinb@redhat.com>
+
+	* python/python.c (do_start_initialization): Don't call
+	PyEval_InitThreads for Python 3.9 and beyond.
+
+2020-04-15  Kamil Rytarowski  <n54@gmx.com>
+
+	* obsd-nat.c (obsd_nat_target::update_thread_list): Pass "this" to
+	thread functions.
+	(obsd_nat_target::wait): Likewise.
+
+2020-04-15  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (DEBUG_EXEC, DEBUG_EVENTS, DEBUG_MEM)
+	(DEBUG_EXCEPT): Use debug_printf.
+
+2020-04-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* completer.c (class completion_tracker::completion_hash_entry)
+	<hash_name>: New member function.
+	(completion_tracker::discard_completions): New callback to hash a
+	completion_hash_entry, pass this to htab_create_alloc.
+
+2016-01-20  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* windows-nat.c (windows_make_so): Warn rather than stopping with
+	an error if realpath() fails.
+
+2020-04-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-nat.c (nbsd_pid_to_kinfo_proc2): New.
+	(nbsd_nat_target::info_proc): Add do_status.
+
+2020-04-14  Simon Marchi  <simon.marchi@polymtl.ca>
+	    Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25718
+	* psympriv.h (struct partial_symtab::read_symtab)
+	(struct partial_symtab::expand_psymtab)
+	(struct partial_symtab::read_dependencies): Update comments.
+	* dwarf2/read.c (struct dwarf2_include_psymtab::read_symtab): Call
+	read_symtab for includer.
+	(struct dwarf2_include_psymtab::expand_psymtab): Assert false.
+	(struct dwarf2_include_psymtab::readin_p): Call readin_p () for includer.
+	(struct dwarf2_include_psymtab::m_readin): Remove.
+	(struct dwarf2_include_psymtab::includer): New member function.
+	(dwarf2_psymtab::expand_psymtab): Assert !readin.
+
+2020-04-14  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25720
+	* symmisc.c (maintenance_expand_symtabs): Call expand_symtabs_matching
+	with NULL symbol_matcher and lookup_name.
+	* psymtab.c (psym_expand_symtabs_matching): Handle NULL symbol_matcher
+	and lookup_name.
+	* dwarf2/read.c (dw2_expand_symtabs_matching)
+	(dw2_debug_names_expand_symtabs_matching): Same.
+	* symfile.h (struct quick_symbol_functions::expand_symtabs_matching):
+	Make lookup_name a pointer.  Update comment.
+	* symtab.c (global_symbol_searcher::expand_symtabs): Handle
+	lookup_name being a pointer.
+	* symfile.c (expand_symtabs_matching): Same.
+	* symfile-debug.c (debug_qf_expand_symtabs_matching): Same.
+	* linespec.c (iterate_over_all_matching_symtabs): Same.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* run-on-main-thread.c: Update include.
+	* unittests/main-thread-selftests.c: Update include.
+	* tui/tui-win.c: Update include.
+	* tui/tui-io.c: Update include.
+	* tui/tui-interp.c: Update include.
+	* tui/tui-hooks.c: Update include.
+	* top.h: Update include.
+	* top.c: Update include.
+	* ser-base.c: Update include.
+	* remote.c: Update include.
+	* remote-notif.c: Update include.
+	* remote-fileio.c: Update include.
+	* record-full.c: Update include.
+	* record-btrace.c: Update include.
+	* python/python.c: Update include.
+	* posix-hdep.c: Update include.
+	* mingw-hdep.c: Update include.
+	* mi/mi-main.c: Update include.
+	* mi/mi-interp.c: Update include.
+	* main.c: Update include.
+	* linux-nat.c: Update include.
+	* interps.c: Update include.
+	* infrun.c: Update include.
+	* inf-loop.c: Update include.
+	* event-top.c: Update include.
+	* event-loop.c: Move to ../gdbsupport/.
+	* event-loop.h: Move to ../gdbsupport/.
+	* async-event.h: Update include.
+	* Makefile.in (COMMON_SFILES, HFILES_NO_SRCDIR): Update.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c: Include async-event.h.
+	* remote.c: Include async-event.h.
+	* remote-notif.c: Include async-event.h.
+	* record-full.c: Include async-event.h.
+	* record-btrace.c: Include async-event.h.
+	* infrun.c: Include async-event.h.
+	* event-top.c: Include async-event.h.
+	* event-loop.h: Move some declarations to async-event.h.
+	* event-loop.c: Don't include ser-event.h or top.h.  Move some
+	code to async-event.c.
+	* async-event.h: New file.
+	* async-event.c: New file.
+	* Makefile.in (COMMON_SFILES): Add async-event.c.
+	(HFILES_NO_SRCDIR): Add async-event.h.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* utils.c (flush_streams): New function.
+	* event-loop.c (gdb_wait_for_event): Call flush_streams.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* event-loop.c (handle_file_event): Use warning, not
+	printf_unfiltered.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* event-loop.c: Include <chrono>.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* gdb_select.h: Move to ../gdbsupport/.
+	* event-loop.c: Update include path.
+	* top.c: Update include path.
+	* ser-base.c: Update include path.
+	* ui-file.c: Update include path.
+	* ser-tcp.c: Update include path.
+	* guile/scm-ports.c: Update include path.
+	* posix-hdep.c: Update include path.
+	* ser-unix.c: Update include path.
+	* gdb_usleep.c: Update include path.
+	* mingw-hdep.c: Update include path.
+	* inflow.c: Update include path.
+	* infrun.c: Update include path.
+	* event-top.c: Update include path.
 
-2019-06-14  Tom Tromey  <tom@tromey.com>
+2020-04-13  Tom Tromey  <tom@tromey.com>
 
-	* gnulib: Move directory to top-level.
-	* configure.ac: Don't configure gnulib.
 	* configure: Rebuild.
-	* common/common-defs.h: Use new path to gnulib.
-	* Makefile.in (GNULIB_BUILDDIR): Now ../gnulib.
-	(GNULIB_H): Remove.
-	(INCGNU): Look in new gnulib location.
-	(HFILES_NO_SRCDIR): Remove gnulib files.
-	(SUBDIR, REQUIRED_SUBDIRS): Remove gnulib.
-	(generated_files): Remove GNULIB_H.
-	($(LIBGNU), all-lib): Remove targets.
-	(distclean): Don't mention GNULIB_BUILDDIR.
-	($(GNULIB_BUILDDIR)/Makefile): Remove target.
+	* configure.ac: Remove checks that are now in GDB_AC_COMMON.
 
-2019-06-14  Tom Tromey  <tromey@adacore.com>
+2020-04-13  Tom Tromey  <tom@tromey.com>
 
-	* symfile.c (add_symbol_file_command): Remove obsolete comment.
-	Warn if symbol file does not provide any symbols.
+	* event-loop.h (start_event_loop): Don't declare.
+	* event-loop.c (start_event_loop): Move...
+	* main.c (start_event_loop): ...here.  Now static.
 
-2019-06-14  Tom Tromey  <tromey@adacore.com>
+2020-04-13  Sergio Durigan Junior  <sergiodj@sergiodj.net>
 
-	* source.c (find_and_open_source): Respect basenames_may_differ.
+	* MAINTAINERS: Update my email address.
 
-2019-06-14  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-04-12  Kamil Rytarowski  <n54@gmx.com>
 
-	* annotate.c (annotate_breakpoints_invalid): Make use of
-	scoped_restore_terminal_state.
-	(annotate_frames_invalid): Likewise.
+	* nbsd-nat.c (nbsd_nat_target::info_proc): Add IP_MINIMAL and
+	IP_ALL.
 
-2019-06-14  Tom Tromey  <tromey@adacore.com>
+2020-04-12  Kamil Rytarowski  <n54@gmx.com>
 
-	* ada-lang.c (ada_evaluate_subexp) <case BINOP_ASSIGN>: Always
-	allow assignment to an internalvar.
+	* nbsd-nat.c (nbsd_pid_to_cmdline): Add.
+	(nbsd_nat_target::info_proc): Add do_cmdline.
 
-2019-06-14  Tom Tromey  <tromey@adacore.com>
+2020-04-12  Kamil Rytarowski  <n54@gmx.com>
 
-	* ada-lex.l: Allow "_" in attribute names.
+	* nbsd-nat.c (nbsd_pid_to_cwd): Add.
+	(nbsd_nat_target::info_proc): Add do_cwd.
 
-2019-06-14  Tom Tromey  <tromey@adacore.com>
+2020-04-12  Kamil Rytarowski  <n54@gmx.com>
 
-	PR gdb/24653:
-	* regcache.c (registers_changed): Don't call alloca.
-	* top.c (execute_command): Don't call alloca.
+	* nbsd-nat.c (nbsd_nat_target::info_proc): Add do_exe.
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+2020-04-11  Kamil Rytarowski  <n54@gmx.com>
 
-	* cli/cli-setshow.c (cli/cli-setshow.c): New parameter
-	'expression'.  When parsing an expression, error out if there's
-	junk after "unlimited".
-	(parse_cli_var_uinteger, parse_cli_var_zuinteger_unlimited)
-	(do_set_command): Adjust calls to is_unlimited_literal.
+	* nbsd-nat.c; Include "nbsd-tdep.h" and "gdbarch.h".
+	* nbsd-nat.c (nbsd_nat_target::find_memory_regions)
+	(nbsd_nat_target::info_proc): New functions.
+	* nbsd-nat.c (kinfo_get_vmmap): New function.
+	* nbsd-nat.c (nbsd_nat_target::info_proc) Use
+	nbsd_info_proc_mappings_header and nbsd_info_proc_mappings_entry.
+	* nbsd-tdep.c (nbsd_info_proc_mappings_header)
+	(nbsd_info_proc_mappings_entry, nbsd_vm_map_entry_flags): New
+	functions.
+	* nbsd-tdep.c (KINFO_VME_PROT_READ, KINFO_VME_PROT_WRITE)
+	(KINFO_VME_PROT_EXEC, KINFO_VME_FLAG_COW)
+	(KINFO_VME_FLAG_NEEDS_COPY, KINFO_VME_FLAG_NOCOREDUMP)
+	(KINFO_VME_FLAG_PAGEABLE, KINFO_VME_FLAG_GROWS_UP)
+	(KINFO_VME_FLAG_GROWS_DOWN): New.
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+2020-04-10  Artur Shepilko  <nomadbyte@gmail.com>
 
-	* compile/compile.c (make_compile_options_def_group): Add braces
-	around array_view initializer.
-	* thread.c (make_thread_apply_all_options_def_group)
-	(make_thread_apply_all_options_def_group): Likewise.
+	* utils.c (copy_bitwise): Use unsigned 0 constant as operand of
+	bit shift.
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+2020-04-10  Tom Tromey  <tromey@adacore.com>
 
-	* NEWS (New commands): Mention "maint test-options
-	require-delimiter", "maint test-options unknown-is-error", "maint
-	test-options unknown-is-operand" and "maint show
-	test-options-completion-result".
-	(New command options, command completion): New section.
-	(Completion improvements): New section.
-	Mention that you can abbreviate "unlimited".
+	* symfile.c (symbol_file_add_separate): Preserve OBJF_MAINLINE.
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+2020-04-10  Tom Tromey  <tromey@adacore.com>
 
-	* cli/cli-utils.c (parse_flags, parse_flags_qcs): Delete.
-	* cli/cli-utils.h (parse_flags, parse_flags_qcs): Delete.
-	* unittests/cli-utils-selftests.c (test_parse_flags)
-	(test_parse_flags_qcs): Delete.
-	(test_cli_utils): Don't call deleted functions.
+	* symtab.c (get_symbol_address, get_msymbol_address): Skip
+	separate debug files.
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+2020-04-10  Hannes Domani  <ssbssa@yahoo.de>
 
-	* thread.c: Include "cli/cli-option.h".
-	(tp_array_compar_ascending): Global.
-	(tp_array_compar): Delete function.
-	(tp_array_compar_ascending, tp_array_compar_descending): New
-	functions.
-	(ascending_option_def, qcs_flag_option_def)
-	(thr_qcs_flags_option_defs)
-	(make_thread_apply_all_options_def_group)
-	(make_thread_apply_options_def_group): New.
-	(thread_apply_all_command): Use gdb::option::process_options.
-	(thread_apply_command_completer)
-	(thread_apply_all_command_completer): New.
-	(thread_apply_command): Use gdb::option::process_options.
-	(_initialize_thread): Delete THREAD_APPLY_FLAGS_HELP, replace it
-	with a new THREAD_APPLY_OPTION_HELP.  Use gdb::option::build_help
-	to generate help text of "thread apply".  Adjust "taas"'s help.
-	* tid-parse.c (tid_range_parser::in_thread_range): New method.
-	* tid-parse.h (tid_range_parser::in_thread_range): New method.
-
-2019-06-13  Pedro Alves  <palves@redhat.com>
-
-	* thread.c (thread_apply_command): Check for invalid TID with
-	isdigit instead of !isalpha.
-
-2019-06-13  Pedro Alves  <palves@redhat.com>
-
-	* cli/cli-utils.c (parse_flags_qcs): Use validate_flags_qcs.
-	(validate_flags_qcs): New.
-	* cli/cli-utils.h (struct qcs_flags): Change field types to int.
-	(validate_flags_qcs): Declare.
-	* stack.c (qcs_flag_option_def, fr_qcs_flags_option_defs): New.
-	(make_frame_apply_options_def_group): New.
-	(frame_apply_command_count): Process options with
-	gdb::option::process_options.
-	(frame_apply_completer): New.
-	(frame_apply_level_completer, frame_apply_all_completer)
-	(frame_apply_completer): New.
-	(_initialize_stack): Update help of "frame apply", "frame apply
-	level", "frame apply all" and "faas" to mention supported options
-	and install command completers.
-	* stack.h (frame_apply_all_completer): Declare.
-	* thread.c: Include "stack.h".
-	(tfaas_command): Add "--".
-	(_initialize_thread): Update help "tfaas" to mention supported
-	options and install command completer.
-
-2019-06-13  Pedro Alves  <palves@redhat.com>
-
-	* completer.c (complete_nested_command_line): New.
-	(gdb_completion_word_break_characters_throw): Add assertion.
-	* completer.h (complete_nested_command_line): Declare.
-
-2019-06-13  Pedro Alves  <palves@redhat.com>
-
-	* stack.c (parse_backtrace_qualifiers): New.
-	(backtrace_command): Use it.
-	(backtrace_command_completer): Complete on qualifiers.
-
-2019-06-13  Pedro Alves  <palves@redhat.com>
-
-	* frame.c: Include "cli/cli-option.h.
-	(user_set_backtrace_options): New.
-	(backtrace_past_main, backtrace_past_entry, backtrace_limit):
-	Delete.
-	(get_prev_frame): Adjust.
-	(boolean_option_def, uinteger_option_def)
-	(set_backtrace_option_defs): New.
-	(_initialize_frame): Adjust and use
-	gdb::option::add_setshow_cmds_for_options to install "set
-	backtrace past-main" and "set backtrace past-entry".
-	* frame.h: Include "cli/cli-option.h".
-	(struct frame_print_options): Forward declare.
-	(print_frame_arguments_all, print_frame_arguments_scalars)
-	(print_frame_arguments_none): Declare.
-	(print_entry_values): Delete declaration.
-	(struct frame_print_options, user_frame_print_options): New.
-	(struct set_backtrace_options): New.
-	(set_backtrace_option_defs, user_set_backtrace_options): Declare.
-	* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames)
-	(mi_cmd_stack_list_locals, mi_cmd_stack_list_args)
-	(mi_cmd_stack_list_variables): Pass down USER_FRAME_PRINT_OPTIONS.
-	(list_args_or_locals): Add frame_print_options parameter.
-	(mi_cmd_stack_info_frame): Pass down USER_FRAME_PRINT_OPTIONS.
-	* python/py-framefilter.c (enumerate_args): Pass down
-	USER_FRAME_PRINT_OPTIONS.
-	* stack.c: Include "cli/cli-option.h".
-	(print_frame_arguments_all, print_frame_arguments_scalars)
-	(print_frame_arguments_none): Declare.
-	(print_raw_frame_arguments, print_entry_values): Delete.
-	(user_frame_print_options): New.
-	(boolean_option_def, enum_option_def, frame_print_option_defs):
-	New.
-	(struct backtrace_cmd_options): New.
-	(bt_flag_option_def): New.
-	(backtrace_command_option_defs): New.
-	(print_stack_frame): Pass down USER_FRAME_PRINT_OPTIONS.
-	(print_frame_arg, read_frame_arg, print_frame_args)
-	(print_frame_info, print_frame): Add frame_print_options parameter
-	and use it.
-	(info_frame_command_core): Pass down USER_FRAME_PRINT_OPTIONS.
-	(backtrace_command_1): Add frame_print_options and
-	backtrace_cmd_options parameters and use them.
-	(make_backtrace_options_def_group): New.
-	(backtrace_command): Process command options with
-	gdb::option::process_options.
-	(backtrace_command_completer): New.
-	(_initialize_stack): Extend "backtrace"'s help to mention
-	supported options.  Install completer for "backtrace".
-	Install some settings commands with add_setshow_cmds_for_options.
-
-2019-06-13  Pedro Alves  <palves@redhat.com>
-
-	* NEWS (Changed commands): Mention set/show print raw-frame-arguments,
-	and that "set/show print raw frame-arguments" are now deprecated.
-
-	* cli/cli-decode.c (add_setshow_boolean_cmd): Now returns the
-	command.
-	* command.h (add_setshow_boolean_cmd): Return cmd_list_element *.
-	* stack.c (_initialize_stack): Install "set/show print
-	raw-frame-arguments", and deprecate "set/show print raw
-	frame-arguments".
-	* valprint.c (_initialize_valprint): Deprecate "set/show print
-	raw".
-
-2019-06-13  Pedro Alves  <palves@redhat.com>
-
-	* compile/compile.c (struct compile_options): New.
-	(compile_flag_option_def, compile_command_option_defs)
-	(make_compile_options_def_group): New.
-	(compile_file_command): Handle options with
-	gdb::option::process_options.
-	(compile_file_command_completer): New function.
-	(compile_code_command): Handle options with
-	gdb::option::process_options.
-	(compile_code_command_completer): New function.
-	(_initialize_compiler): Install completers for "compile code" and
-	"compile file".  Mention available options in "compile code" and
-	"compile code"'s help.
-	* completer.c (advance_to_completion_word): New, factored out from
-	...
-	(advance_to_expression_complete_word_point): ... this.
-	(advance_to_filename_complete_word_point): New.
-	* completer.h (advance_to_filename_complete_word_point): New
-	declaration.
+	* nat/windows-nat.c (STATUS_WX86_BREAKPOINT, STATUS_WX86_SINGLE_STEP):
+	Move to...
+	* nat/windows-nat.h (STATUS_WX86_BREAKPOINT, STATUS_WX86_SINGLE_STEP):
+	... here.
+	* windows-nat.c (windows_nat_target::get_windows_debug_event):
+	Check for STATUS_WX86_BREAKPOINT.
+	(windows_nat_target::wait): Same.
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+2020-04-10  Tom de Vries  <tdevries@suse.de>
 
-	* compile/compile.c: Include "cli/cli-option.h".
-	(compile_print_value): Scope data pointer is now a
-	value_print_options pointer; adjust.
-	(compile_print_command): Process options.  Scope data pointer is
-	now a value_print_options pointer; adjust.
-	(_initialize_compile): Update "compile print"'s help to include
-	supported options.  Install a completer for "compile print".
-	* cp-valprint.c (show_vtblprint, show_objectprint)
-	(show_static_field_print): Delete.
-	(_initialize_cp_valprint): Don't install "set print
-	static-members", "set print vtbl", "set print object" here.
-	* printcmd.c: Include "cli/cli-option.h" and
-	"common/gdb_optional.h".
-	(print_command_parse_format): Rework to fill in a
-	value_print_options instead of a format_data.
-	(print_value): Change parameter type from format_data pointer to
-	value_print_options reference.  Adjust.
-	(print_command_1): Process options.  Adjust to pass down a
-	value_print_options.
-	(print_command_completer): New.
-	(_initialize_printcmd): Install print_command_completer as
-	handle_brkchars completer for the "print" command.  Update
-	"print"'s help to include supported options.
-	* valprint.c: Include "cli/cli-option.h".
-	(show_vtblprint, show_objectprint, show_static_field_print): Moved
-	here from cp-valprint.c.
-	(boolean_option_def, uinteger_option_def)
-	(value_print_option_defs, make_value_print_options_def_group):
-	New.  Use gdb::option::add_setshow_cmds_for_options to install
-	"set print elements", "set print null-stop", "set print repeats",
-	"set print pretty", "set print union", "set print array", "set
-	print address", "set print symbol", "set print array-indexes".
-	* valprint.h: Include <string> and "cli/cli-option.h".
-	(make_value_print_options_def_group): Declare.
-	(print_value): Change parameter type from format_data pointer to
-	value_print_options reference.
-	(print_command_completer): Declare.
-
-2019-06-13  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (SUBDIR_CLI_SRCS): Add cli/cli-option.c.
-	(COMMON_SFILES): Add maint-test-settings.c.
-	* cli/cli-decode.c (boolean_enums): New global, factored out from
-	...
-	(add_setshow_boolean_cmd): ... here.
-	* cli/cli-decode.h (boolean_enums): Declare.
-	* cli/cli-option.c: New file.
-	* cli/cli-option.h: New file.
-	* cli/cli-setshow.c (parse_cli_boolean_value(const char **)): New,
-	factored out from ...
-	(parse_cli_boolean_value(const char *)): ... this.
-	(is_unlimited_literal): Change parameter type to pointer to
-	pointer.  Adjust and advance ARG pointer.
-	(parse_cli_var_uinteger, parse_cli_var_zuinteger_unlimited)
-	(parse_cli_var_enum): New, factored out from ...
-	(do_set_command): ... this.  Adjust.
-	* cli/cli-setshow.h (parse_cli_boolean_value)
-	(parse_cli_var_uinteger, parse_cli_var_zuinteger_unlimited)
-	(parse_cli_var_enum): Declare.
-	* cli/cli-utils.c: Include "cli/cli-option.h".
-	(get_ulongest): New.
-	* cli/cli-utils.h (get_ulongest): Declare.
-	(check_for_argument): New overloads.
-	* maint-test-options.c: New file.
+	PR cli/25808
+	* python/lib/gdb/__init__.py: Initialize lexer with stripnl=False.
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+2020-04-09  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* cli/cli-utils.c (number_or_range_parser::get_number): Do not
-	parse a range if "-" is at the end of the string.
+	* MAINTAINERS (Global Maintainers): Add Tom de Vries.
+	(Write After Approval): Remove Tom de Vries.
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+2020-04-09  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
-	* cli/cli-setshow.c (parse_auto_binary_operation)
-	(parse_cli_boolean_value): Don't allow "o".
+	revert partially:
+	2020-04-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+	* buildsym.c (record_line): Fix undefined behavior and preserve
+	lines at eof.
 
-	* Makefile.in (COMMON_SFILES): Add maint-test-settings.c.
-	* NEWS: Mention maint test-settings KIND.
-	* maint-test-settings.c: New file.
+2020-04-09  Kamil Rytarowski  <n54@gmx.com>
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+	* auxv.h (svr4_auxv_parse): New.
+	* auxv.c (default_auxv_parse): Split into default_auxv_parse
+	and generic_auxv_parse.
+	(svr4_auxv_parse): Add.
+	* obsd-tdep.c: Include "auxv.h".
+	(obsd_auxv_parse): Remove.
+	(obsd_init_abi): Remove comment.
+	(obsd_init_abi): Change set_gdbarch_auxv_parse passed argument
+	from `obsd_auxv_parse' to `svr4_auxv_parse'.
+	* nbsd-tdep.c: Include "auxv.h".
+	(nbsd_init_abi): Call set_gdbarch_auxv_parse.
 
-	* cli/cli-decode.c (add_setshow_cmd_full): Remove "show"
-	completer.
-	(add_setshow_string_cmd, add_setshow_string_noescape_cmd): Remove
-	"set" completers.
+2020-04-08  Tom Tromey  <tromey@adacore.com>
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+	* nat/windows-nat.h (last_wait_event): Don't declare.
+	(wait_for_debug_event): Update comment.
+	* nat/windows-nat.c (last_wait_event): Now static.
 
-	* cli/cli-setshow.c (do_set_command) <var_enum>: Detect junk
-	after item.
+2020-04-08  Tom Tromey  <tromey@adacore.com>
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+	* windows-nat.c (wait_for_debug_event): Move to
+	nat/windows-nat.c.
+	* nat/windows-nat.h (wait_for_debug_event): Declare.
+	* nat/windows-nat.c (wait_for_debug_event): Move from
+	windows-nat.c.  No longer static.
 
-	* cli/cli-setshow.c (is_unlimited_literal): Allow abbreviations.
+2020-04-08  Tom Tromey  <tromey@adacore.com>
 
-2019-06-13  Pedro Alves <palves@redhat.com>
+	* windows-nat.c (get_windows_debug_event): Use
+	fetch_pending_stop.
+	* nat/windows-nat.h (fetch_pending_stop): Declare.
+	* nat/windows-nat.c (fetch_pending_stop): New function.
 
-	* ax-gdb.c (agent_command_1): Remove skip_spaces call.
-	* breakpoint.c (watch_maybe_just_location): Remove skip_spaces
-	call.
-	* cli/cli-cmds.c (apropos_command): Remove skip_spaces call.
-	* cli/cli-utils.c (extract_info_print_args): Remove skip_spaces
-	calls.
-	(check_for_argument): Skip spaces after argument.
+2020-04-08  Tom Tromey  <tromey@adacore.com>
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+	* windows-nat.c (windows_continue): Use matching_pending_stop and
+	continue_last_debug_event.
+	* nat/windows-nat.h (matching_pending_stop)
+	(continue_last_debug_event): Declare.
+	* nat/windows-nat.c (DEBUG_EVENTS): New define.
+	(matching_pending_stop, continue_last_debug_event): New
+	functions.
 
-	* thread.c (thread_apply_command): Adjust TID parsing.
-	* tid-parse.c (tid_range_parser::finished): Ensure parsing end is
-	detected before end of string.
-	(tid_is_in_list): Error out if LIST is invalid.
-
-2019-06-13  Pedro Alves  <palves@redhat.com>
-
-	* completer.c (complete_line_internal_1): Rewind completion word
-	point.
-	(completion_tracker::advance_custom_word_point_by): Change
-	parameter type to int.
-	* completer.h (completion_tracker::advance_custom_word_point_by):
-	Likewise.
+2020-04-08  Tom Tromey  <tromey@adacore.com>
 
-2019-06-13  Pedro Alves  <palves@redhat.com>
+	* windows-nat.c (MS_VC_EXCEPTION): Move to nat/windows-nat.c.
+	(handle_exception_result): Move to nat/windows-nat.h.
+	(DEBUG_EXCEPTION_SIMPLE): Remove.
+	(windows_nat::handle_ms_vc_exception): New function.
+	(handle_exception): Move to nat/windows-nat.c.
+	(get_windows_debug_event): Update.
+	(STATUS_WX86_BREAKPOINT, STATUS_WX86_SINGLE_STEP): Move to
+	nat/windows-nat.c.
+	* nat/windows-nat.h (handle_ms_vc_exception): Declare.
+	(handle_exception_result): Move from windows-nat.c.
+	(handle_exception): Declare.
+	* nat/windows-nat.c (MS_VC_EXCEPTION, handle_exception)
+	(STATUS_WX86_SINGLE_STEP, STATUS_WX86_BREAKPOINT): Move from
+	windows-nat.c.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (exception_count, event_count): Remove.
+	(handle_exception, get_windows_debug_event)
+	(do_initial_windows_stuff): Update.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (windows_nat::handle_load_dll)
+	(windows_nat::handle_unload_dll): Rename.  No longer static.
+	* nat/windows-nat.h (handle_load_dll, handle_unload_dll):
+	Declare.
 
-	* completer.c (advance_to_completion_word): Handle delimiters.
+2020-04-08  Tom Tromey  <tromey@adacore.com>
 
-2019-06-11  Bernhard Heckel  <bernhard.heckel@intel.com>
+	* complaints.h (stop_whining): Declare at top-level.
+	(complaint): Don't declare stop_whining.
 
-	* dwarf2read.c (add_partial_symbol): Skip nameless modules.
+2020-04-08  Tom Tromey  <tromey@adacore.com>
 
-2019-06-11  Tom Tromey  <tom@tromey.com>
-
-	* common/common-utils.c (xmalloc, xrealloc, xcalloc)
-	(xmalloc_failed): Move to alloc.c.
-	* alloc.c: New file.
-	* Makefile.in (COMMON_SFILES): Add alloc.c.
-
-2019-06-11  Tom Tromey  <tom@tromey.com>
-
-	* nat/linux-waitpid.c: Don't include server.h.
-	(linux_debug): Remove.
-	(my_waitpid): Update.
-
-2019-06-11  Tom Tromey  <tromey@adacore.com>
-
-	* infcall.c (_initialize_infcall): Remove trailing newline from
-	help.
-	* user-regs.c (_initialize_user_regs): Remove trailing newline
-	from help.
-	* typeprint.c (_initialize_typeprint): Remove trailing newline
-	from help.
-	* reverse.c (_initialize_reverse): Remove trailing newlines from
-	help.
-	* tracepoint.c (_initialize_tracepoint): Remove trailing newlines
-	from help.
-	* language.c (add_set_language_command): Remove trailing newline
-	from help.
-	* infcmd.c (_initialize_infcmd): Remove trailing newlines from
-	help.
-	* disasm.c (_initialize_disasm): Remove trailing newline from
-	help.
-	* top.c (init_main): Remove trailing newline from help.
-	* interps.c (_initialize_interpreter): Remove trailing newline
-	from help.
-	* btrace.c (_initialize_btrace): Remove trailing newlines from
-	help.
-	* breakpoint.c (_initialize_breakpoint): Remove trailing newline
-	from help.
-	* python/python.c (_initialize_python): Remove trailing newline
-	from help.
-	* spu-tdep.c (_initialize_spu_tdep): Remove trailing newlines from
-	help.
-	* tui/tui-win.c (_initialize_tui_win): Remove trailing newlines
-	from help.  Reformat some text.
-	* tui/tui-stack.c (_initialize_tui_stack): Remove trailing newline
-	from help.
-	* tui/tui-layout.c (_initialize_tui_layout): Remove trailing
-	newline from help.
-
-2019-06-11  Tom Tromey  <tromey@adacore.com>
-
-	* darwin-nat.c (darwin_decode_exception_message)
-	(darwin_decode_message, darwin_nat_target::kill): Fix shadowing.
-
-2019-06-10  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* valops.c (value_slice): Check for not allocated or not
-	associated values.
-
-2019-06-10  Tom de Vries  <tdevries@suse.de>
-
-	PR gdb/24618
-	* dwarf2read.c (struct mapped_index::symbol_name_slot_invalid): Make
-	sure an empty slot (defined by a 32-bit zero pair) is recognized as
-	invalid.
-
-2019-06-10  Tom de Vries  <tdevries@suse.de>
-
-	PR gdb/24611
-	* linespec.c (linespec_lexer_lex_string): Remove incorrect
-	"++(PARSER_STREAM (parser))" for "[abi"-prefixed colon.  Add assert.
-
-2019-06-10  Tom de Vries  <tdevries@suse.de>
-
-	PR symtab/24545
-	* symtab.c (struct demangled_name_entry): Add language field.
-	(symbol_set_names):  Revert "[gdb/symtab] Fix language of duplicate
-	static minimal symbol".  Set and use language field.
-
-2019-06-10  Tom Tromey  <tromey@adacore.com>
-
-	* ada-lang.c (_initialize_ada_language): Update help text.
-
-2019-06-10  Tom Tromey  <tromey@adacore.com>
-
-	* m32c-tdep.c (m32c_m16c_address_to_pointer): Don't end warning
-	with a newline.
-	* guile/guile.c (handle_boot_error): Don't end warning with a
-	newline.
-	* cli/cli-cmds.c (exit_status_set_internal_vars): Don't end
-	warning with a newline.
-	* s12z-tdep.c (s12z_skip_prologue): Don't end warning with a
-	newline.
-	(s12z_frame_cache): Likewise.
-	* dwarf-index-cache.c (index_cache::store): Don't end warning with
-	a newline.
-	* solib-svr4.c (disable_probes_interface): Don't end warning with
-	a newline.
-	* nat/fork-inferior.c (fork_inferior): Don't end warning with a
-	newline.
-	* python/python.c (do_finish_initialization): Don't end warning
-	with a newline.
-
-2019-06-10  Tom Tromey  <tom@tromey.com>
-
-	* python/py-breakpoint.c (gdbpy_breakpoint_created)
-	(gdbpy_breakpoint_deleted, gdbpy_breakpoint_modified): Use
-	gdbpy_enter.
-
-2019-06-10  Tom Tromey  <tromey@adacore.com>
-
-	* elfread.c (elf_read_minimal_symbols): Don't set the dbx objfile
-	data.
-	(elf_new_init): Don't call stabsread_new_init.
-	* dbxread.c (coffstab_build_psymtabs): Set dbx objfile data.
-	(elfstab_build_psymtabs): Likewise.  Call stabsread_new_init.
-	* coffread.c (coff_symfile_init): Don't set the dbx objfile data.
-
-2019-06-10  Tom de Vries  <tdevries@suse.de>
-
-	PR symtab/16264
-	PR symtab/24517
-	* dwarf2read.c (read_func_scope): Handle DW_AT_main_subprogram.
+	* windows-nat.c (windows_nat::handle_output_debug_string):
+	Rename.  No longer static.
+	* nat/windows-nat.h (handle_output_debug_string): Declare.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (current_process_handle, current_process_id)
+	(main_thread_id, last_sig, current_event, last_wait_event)
+	(current_windows_thread, desired_stop_thread_id, pending_stops)
+	(struct pending_stop, siginfo_er): Move to nat/windows-nat.c.
+	(display_selectors, fake_create_process)
+	(get_windows_debug_event): Update.
+	* nat/windows-nat.h (current_process_handle, current_process_id)
+	(main_thread_id, last_sig, current_event, last_wait_event)
+	(current_windows_thread, desired_stop_thread_id, pending_stops)
+	(struct pending_stop, siginfo_er): Move from windows-nat.c.
+	* nat/windows-nat.c (current_process_handle, current_process_id)
+	(main_thread_id, last_sig, current_event, last_wait_event)
+	(current_windows_thread, desired_stop_thread_id, pending_stops)
+	(siginfo_er): New globals.  Move from windows-nat.c.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (get_image_name): Move to nat/windows-nat.c.
+	(handle_load_dll): Update.
+	* nat/windows-nat.c (get_image_name): Move from windows-nat.c.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (enum thread_disposition_type): Move to
+	nat/windows-nat.h.
+	(windows_nat::thread_rec): Rename from thread_rec.  No longer
+	static.
+	(windows_add_thread, windows_nat_target::fetch_registers)
+	(windows_nat_target::store_registers, handle_exception)
+	(windows_nat_target::resume, get_windows_debug_event)
+	(windows_nat_target::get_tib_address)
+	(windows_nat_target::thread_name)
+	(windows_nat_target::thread_alive): Update.
+	* nat/windows-nat.h (enum thread_disposition_type): Move from
+	windows-nat.c.
+	(thread_rec): Declare.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c: Add "using namespace".
+	* nat/windows-nat.h: Wrap contents in windows_nat namespace.
+	* nat/windows-nat.c: Wrap contents in windows_nat namespace.
 
-2019-06-06  Ð ÑƒÑ�Ð»Ð°Ð½ Ð˜Ð¶Ð±ÑƒÐ»Ð°Ñ‚Ð¾Ð² <lrn1986@gmail.com>
+2020-04-08  Tom Tromey  <tromey@adacore.com>
 
-	* source.c (find_and_open_source): Also rewrite relative file
-	names.
+	* nat/windows-nat.h (struct windows_thread_info): Declare
+	destructor.
+	* nat/windows-nat.c (~windows_thread_info): New.
 
-2019-04-26  Amos Bird  <amosbird@gmail.com>
+2020-04-08  Tom Tromey  <tromey@adacore.com>
 
-	* annotate.c (annotate_thread_exited): Add "thread-exited"
-	annotation.
+	PR gdb/22992
+	* windows-nat.c (current_event): Update comment.
+	(last_wait_event, desired_stop_thread_id): New globals.
+	(struct pending_stop): New.
+	(pending_stops): New global.
+	(windows_nat_target) <stopped_by_sw_breakpoint>
+	<supports_stopped_by_sw_breakpoint>: New methods.
+	(windows_fetch_one_register): Add assertions.  Adjust PC.
+	(windows_continue): Handle pending stops.  Suspend other threads
+	when stepping.  Use last_wait_event
+	(wait_for_debug_event): New function.
+	(get_windows_debug_event): Use wait_for_debug_event.  Handle
+	pending stops.  Queue spurious stops.
+	(windows_nat_target::wait): Set stopped_at_software_breakpoint.
+	(windows_nat_target::kill): Use wait_for_debug_event.
+	* nat/windows-nat.h (struct windows_thread_info)
+	<stopped_at_software_breakpoint>: New field.
+	* nat/windows-nat.c (windows_thread_info::resume): Clear
+	stopped_at_software_breakpoint.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (enum thread_disposition_type): New.
+	(thread_rec): Replace "get_context" parameter with "disposition";
+	change type.
+	(windows_add_thread, windows_nat_target::fetch_registers)
+	(windows_nat_target::store_registers, handle_exception)
+	(windows_nat_target::resume, get_windows_debug_event)
+	(windows_nat_target::get_tib_address)
+	(windows_nat_target::thread_name)
+	(windows_nat_target::thread_alive): Update.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (thread_rec): Use windows_thread_info::suspend.
+	(windows_continue): Use windows_continue::resume.
+	* nat/windows-nat.h (struct windows_thread_info) <suspend,
+	resume>: Declare new methods.
+	* nat/windows-nat.c: New file.
+	* configure.nat (NATDEPFILES): Add nat/windows-nat.o when needed.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (windows_add_thread, windows_delete_thread)
+	(windows_nat_target::fetch_registers)
+	(windows_nat_target::store_registers, fake_create_process)
+	(windows_nat_target::resume, windows_nat_target::resume)
+	(get_windows_debug_event, windows_nat_target::wait)
+	(windows_nat_target::pid_to_str)
+	(windows_nat_target::get_tib_address)
+	(windows_nat_target::get_ada_task_ptid)
+	(windows_nat_target::thread_name)
+	(windows_nat_target::thread_alive): Use lwp, not tid.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (handle_exception)
+	(windows_nat_target::thread_name): Update.
+	* nat/windows-nat.h (windows_thread_info): Remove destructor.
+	<name>: Now unique_xmalloc_ptr.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (thread_rec)
+	(windows_nat_target::fetch_registers): Update.
+	* nat/windows-nat.h (struct windows_thread_info) <suspended>:
+	Update comment.
+	<debug_registers_changed, reload_context>: Now bool.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (windows_add_thread): Use new.
+	(windows_init_thread_list, windows_delete_thread): Use delete.
+	(get_windows_debug_event): Update.
+	* nat/windows-nat.h (struct windows_thread_info): Add constructor,
+	destructor, and initializers.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (struct windows_thread_info): Remove.
+	* nat/windows-nat.h: New file.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (struct windows_thread_info) <tid>: Rename from "id".
+	(thread_rec, windows_add_thread, windows_delete_thread)
+	(windows_continue): Update.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (struct windows_thread_info): Remove typedef.
+	(thread_head): Remove.
+	(thread_list): New global.
+	(thread_rec, windows_add_thread, windows_init_thread_list)
+	(windows_delete_thread, windows_continue): Update.
+
+2020-04-08  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* windows-tdep.h (windows_init_abi): Add comment.
+	(cygwin_init_abi): New declaration.
+	* windows-tdep.c: Split signal enumeration in two, one for
+	Windows and one for Cygwin.
+	(windows_gdb_signal_to_target): Only deal with signal of the
+	Windows OS ABI.
+	(cygwin_gdb_signal_to_target): New function.
+	(windows_init_abi): Rename to windows_init_abi_common, don't set
+	gdb_signal_to_target gdbarch method.  Add new new function with
+	this name.
+	(cygwin_init_abi): New function.
+	* amd64-windows-tdep.c (amd64_windows_init_abi_common): Add
+	comment.  Don't call windows_init_abi.
+	(amd64_windows_init_abi): Add comment, call windows_init_abi.
+	(amd64_cygwin_init_abi): Add comment, call cygwin_init_abi.
+	* i386-windows-tdep.c (i386_windows_init_abi): Rename to
+	i386_windows_init_abi_common, don't call windows_init_abi.  Add
+	a new function of this name.
+	(i386_cygwin_init_abi): New function.
+	(_initialize_i386_windows_tdep): Bind i386_cygwin_init_abi to
+	OS ABI Cygwin.
+
+2020-04-08  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (read_gdb_index_from_buffer): Remove objfile
+	parameter.c.
+	(dwarf2_read_gdb_index): Update.
+
+2020-04-07  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-tdep.c: Include "objfiles.h".
+	(nbsd_skip_solib_resolver): New.
+	(nbsd_init_abi): Call set_gdbarch_skip_solib_resolver().
+
+2020-04-07  Nitika Achra  <Nitika.Achra@amd.com>
+
+	* dwarf2/loc.c (loclist_describe_location): Call the function decode_debug_loclists_
+	addresses if DWARF version is 5 or more because DW_LLE_start* or DW_LLE_offset_pair
+	with DW_LLE_base_addressx are being emitted in DWARFv5.
+	Add the newly added kind DW_LOC_OFFSET_PAIR also.
+	The length of location description is an unsigned ULEB integer in DWARFv5 instead of
+	unsigned integer.
+
+2020-04-07  Nitika Achra  <Nitika.Achra@amd.com>
+
+	* dwarf2/loc.c (enum debug_loc_kind): Add a new kind DEBUG_LOC_OFFSET_PAIR.
+	(dwarf2_find_location_expression): Call the function decode_debug_loclists_
+	addresses if DWARF version is 5 or more. DW_LLE_start* or DW_LLE_offset_pair
+	with DW_LLE_base_addressx are being emitted in DWARFv5 instead of DW_LLE_GNU*.
+	Add applicable base address if the entry is DW_LLE_offset_pair from DWO.
+	(decode_debug_loclists_addresses): Return DEBUG_LOC_OFFSET_PAIR instead of
+	DEBUG_LOC_START_END in case of DW_LLE_offset_pair.
+
+
+2020-04-07  Nitika Achra  <Nitika.Achra@amd.com>
+
+	* dwarf2/read.c (cu_debug_loc_section): Added the declaration for the function.
+	(read_loclist_index): New function definition.
+	(lookup_loclist_base): New function definition.
+	(read_loclist_header): New function definition.
+	(dwarf2_cu): Add loclist_base and loclist_header field.
+	(dwarf2_locate_dwo_sections): Handle .debug_loclists.dwo section.
+	(read_full_die_1): Read the value of DW_AT_loclists_base.
+	(read_attribute_reprocess): Handle DW_FORM_loclistx.
+	(read_attribute_value): Handle DW_FORM_loclistx.
+	(skip_one_die): Handle DW_FORM_loclistx.
+	(loclist_header): New structure declaration.
+	* dwarf2/attribute.c (form_is_section_offset): Handle DW_FORM_loclistx.
+
+2020-04-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.h (struct dwarf2_psymtab): Remove two-parameters
+	constructor.  Remove `addr` parameter from other constructor and
+	add `per_cu` parameter.
+	* dwarf2/read.c (create_partial_symtab): Update.
+
+2020-04-07  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25796
+	* dwarf2/read.c (can_have_DW_AT_const_value_p): New function.
+	(partial_die_info::fixup): Inherit has_const_value.
+
+2020-04-07  Tom de Vries  <tdevries@suse.de>
+
+	* psymtab.c (maintenance_check_psymtabs): Skip static LOC_BLOCK
+	symbols without address.
+
+2020-04-06  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-nat.h (struct thread_info): Add forward declaration.
+	(nbsd_nat_target::thread_alive): Add.
+	(nbsd_nat_target::thread_name): Likewise.
+	(nbsd_nat_target::update_thread_list): Likewise.
+	(update_thread_list::post_attach): Likewise.
+	(post_attach::pid_to_str): Likewise.
+	* nbsd-nat.c: Include "gdbthread.h" and "inferior.h".
+	(nbsd_thread_lister): Add.
+	(nbsd_nat_target::thread_alive): Likewise.
+	(nbsd_nat_target::thread_name): Likewise.
+	(nbsd_add_threads): Likewise.
+	(update_thread_list::post_attach): Likewise.
+	(nbsd_nat_target::update_thread_list): Likewise.
+	(post_attach::pid_to_str): Likewise.
+
+2020-04-06  Tom Tromey  <tromey@adacore.com>
+
+	* ada-valprint.c (print_variant_part): Extract the variant field.
+	(print_field_values): Use the field as the outer value when
+	recursing.
+
+2020-04-06  Tom Tromey  <tromey@adacore.com>
+
+	* sh-nbsd-tdep.c: Include nbsd-tdep.h.
+	* ppc-nbsd-tdep.c: Include nbsd-tdep.h.
+	* mips-nbsd-tdep.c (mipsnbsd_init_abi): Add missing ";".
+	* arm-nbsd-tdep.c: Include nbsd-tdep.h.
+	* hppa-nbsd-tdep.c: Include nbsd-tdep.h.
+
+2020-04-06  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (read_base_type) <DW_ATE_complex_float>: Handle
+	TYPE_CODE_ERROR.
+
+2020-04-06  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-tdep.c: Include "gdbarch.h".
+	Define enum with NetBSD signal numbers.
+	(nbsd_gdb_signal_from_target, nbsd_gdb_signal_to_target): New.
+	* alpha-nbsd-tdep.c (alphanbsd_init_abi): Call nbsd_init_abi().
+	* amd64-nbsd-tdep.c (amd64nbsd_init_abi): Likewise.
+	* arm-nbsd-tdep.c (arm_netbsd_elf_init_abi): Likewise.
+	* hppa-nbsd-tdep.c (hppanbsd_init_abi): Likewise.
+	* i386-nbsd-tdep.c (i386nbsd_init_abi): Likewise.
+	* mips-nbsd-tdep.c (nbsd_init_abi): Likewise.
+	* ppc-nbsd-tdep.c (ppcnbsd_init_abi): Likewise.
+	* sh-nbsd-tdep.c (shnbsd_init_abi): Likewise.
+	* sparc-nbsd-tdep.c (sparc32nbsd_init_abi): Likewise.
+	* sparc64-nbsd-tdep.c (sparc64nbsd_init_abi): Likewise.
+	* vax-nbsd-tdep.c (vaxnbsd_elf_init_abi): Likewise.
+
+2020-04-03  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR gdb/25325
+	* dwarf2/read.c (read_enumeration_type): Fix typed enum attributes.
+
+2020-04-03  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/loc.c (disassemble_dwarf_expression) <DW_OP_const_type>:
+	Read constant block.
+
+2020-04-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdb_bfd.h: Include gdbsupport/byte-vector.h.
+	(gdb_bfd_get_full_section_contents): New declaration.
+	* gdb_bfd.c (gdb_bfd_get_full_section_contents): New function.
+	* windows-tdep.c (is_linked_with_cygwin_dll): Use
+	gdb_bfd_get_full_section_contents.
+
+2020-04-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* exec.c (build_section_table): Replace internal_error with
+	gdb_assert.
+	(section_table_xfer_memory_partial): Likewise.
+	* mdebugread.c (parse_partial_symbols): Likewise.
+	* psymtab.c (lookup_partial_symbol): Likewise.
+	* utils.c (wrap_here): Likewise.
+
+2020-04-02  Tom Tromey  <tromey@adacore.com>
+
+	* f-lang.c (build_fortran_types): Use arch_type to initialize
+	builtin_complex_s32 in the TYPE_CODE_ERROR case.
 
-2019-06-06  Tom Tromey  <tromey@adacore.com>
+2020-04-02  Tom Tromey  <tromey@adacore.com>
 
-	* maint.h (class scoped_command_stats): Use
-	DISABLE_COPY_AND_ASSIGN.
-	<print_time>: New method.
-	* maint.c (scoped_command_stats, ~scoped_command_stats): Call
-	print_time.
-	(scoped_command_stats::print_time): New method.
-
-2019-06-05  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* riscv-tdep.c (riscv_insn::decode): Gracefully ignore
-	instructions of lengths 6 or 8 bytes.
-
-2019-06-04  Pedro Alves  <palves@redhat.com>
-
-	* common/gdb_unique_ptr.h (make_unique_xstrdup): New.
-
-	* ada-lang.c (catch_ada_completer): Use make_unique_xstrdup.
-	* breakpoint.c (condition_completer): Likewise.
-	* cli/cli-dump.c (scan_expression): Likewise.
-	* common/filestuff.c (mkdir_recursive): Likewise.
-	* common/gdb_tilde_expand.c (gdb_tilde_expand_up)
-	* common/pathstuff.c (gdb_realpath, gdb_realpath_keepfile)
-	(gdb_abspath): Likewise.
-	* compile/compile-cplus-types.c
-	(compile_cplus_instance::decl_name): Likewise.
-	* completer.c (complete_explicit_location):
-	(signal_completer, reg_or_group_completer_1): Likewise.
-	* cp-support.c (cp_remove_params_if_any): Likewise.
-	* fbsd-tdep.c (fbsd_core_vnode_path): Likewise.
-	* guile/scm-safe-call.c (gdbscm_safe_eval_string): Likewise.
-	* infcmd.c (strip_bg_char): Likewise.
-	* linespec.c (copy_token_string): Likewise.
-	* mi/mi-main.c (output_cores): Likewise.
-	* psymtab.c (psymtab_search_name):
-	* symfile.c (test_set_ext_lang_command): Likewise.
-	* target.c (target_fileio_read_stralloc): Likewise.
-	* tui/tui-regs.c (tui_reggroup_completer): Likewise.
-	* value.c (complete_internalvar): Likewise.
-
-2019-06-04  Christian Biesinger  <cbiesinger@google.com>
-
-	Add objfile property to gdb.Type.
-	* NEWS: Mention Python API addition.
-	* python/py-type.c (typy_get_objfile): New method.
-
-2019-06-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* NEWS: Mention the new set|show style [title|highlight].
-	Mention changes to "show style", "help" and "apropos".
-
-2019-06-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* cli/cli-decode.h (apropos_cmd): Add verbose argument.
-	* cli/cli-decode.c (apropos_cmd): Likewise.  Use print_doc_of_command
-	instead of print_help_for_command.
-	(print_doc_of_command): New function.
-	(help_list): Add 'apropos -v word' suggestion.
-	(print_help_for_command): Style the command name using title style.
-	* cli/cli-cmds.c (apropos_command): Parse optional -v flag.
-	(_initialize_cli_cmds): Describe -v in apropos_command help.
-
-2019-06-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* cli/cli-style.h (cli_style_option): Add name in constructor,
-	add m_name class member, add constructor with intensity,
-	add name class function.
-	(cli_style_option::add_setshow_commands): Remove name argument.
-	(highlight_style, title_style): New styles.
-	* cli/cli-style.c (do_show): New function that shows a style
-	characteristic styling the style name with itself.
-	(set_style_name): New function.
-	(STYLE_ADD_SETSHOW_COMMANDS): Remove NAME arguments.
-	Update all callers according to the changes in cli/cli-style.h.
-	* utils.h (fputs_highlighted): New function.
-	* utils.c (fputs_highlighted): Likewise.
-
-2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* NEWS: Mention new pipe command and new convenience variables.
-
-2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* cli/cli-cmds.c (pipe_command): New function.
-	(_initialize_cli_cmds): Call add_com for pipe_command.
-	Define | as an alias for pipe.
-	(exit_status_set_internal_vars): New function.
-	(shell_escape): Call exit_status_set_internal_vars.
-	cli/cli-decode.c (find_command_name_length): Recognize | as
-	a single character command.
-
-2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* gdbcmd.h (execute_command_to_ui_file): New declaration.
-	top.c (execute_command_to_ui_file): New function, mostly a copy
-	of execute_command_to_string.
-	(execute_command_to_string): Implement by calling
-	execute_command_to_ui_file.
-
-2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* top.h (saved_command_line): Remove declaration.
-	* top.c (previous_saved_command_line, previous_repeat_arguments):
-	New variables.
-	(saved_command_line): Make static, define together with other
-	'repeat variables'.
-	(dont_repeat): Clear repeat_arguments.
-	(repeat_previous, get_saved_command_line, save_command_line):
-	New functions.
-	(gdb_init): Initialize saved_command_line
-	and previous_saved_command_line.
-	* main.c (captured_main_1): Remove saved_command_line initialization.
-	* event-top.c (handle_line_of_input): Update to use
-	the new 'repeat' related functions instead of direct access to
-	saved_command_line.
-	* command.h (repeat_previous, get_saved_command_line,
-	save_command_line): New declarations.
-	(dont_repeat): Add comment.
-
-2019-05-30  Tom Tromey  <tromey@adacore.com>
-
-	* gdbtypes.h (struct range_bounds) <flag_upper_bound_is_count>:
-	Fix comment.
-	(TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED): Rewrite comment.
-
-2019-05-30  Jan Vrany  <jan.vrany@fit.cvut.cz>
-
-	PR cli/24587
-	* completer.c (complete): Initialize variable word.
-
-2019-05-29  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192
-	Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1715008
-	* dwarf2read.c (dwarf_decode_macro_bytes): Move check to see if
-	'body' is NULL to the outter 'if', protecting the '!is_define'
-	situation as well.
-
-2019-05-29  Tom Tromey  <tromey@adacore.com>
-
-	* dwarf2read.c (partial_die_parent_scope): Call dwarf_tag_name.
-	(dwarf_unknown): New function.
-	(dwarf_tag_name, dwarf_attr_name, dwarf_form_name)
-	(dwarf_type_encoding_name): Use dwarf_unknown.
-
-2019-05-29  Tom Tromey  <tromey@adacore.com>
-
-	PR c++/20020:
-	* cp-valprint.c (cp_print_value_fields): Call
-	cp_print_static_field inside "try".
+	* dwarf2/read.c (partial_die_info::read): Do not create a vector
+	of attributes.
 
-2019-05-29  Tom Tromey  <tromey@adacore.com>
+2020-04-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Bernd Edlinger <bernd.edlinger@hotmail.de>
+	    Tom Tromey  <tromey@adacore.com>
 
-	* inflow.c (struct terminal_info): Add default operator=.
-	* configure: Rebuild.
-	* warning.m4 (AM_GDB_WARNINGS): Add -Wdeprecated-copy,
-	-Wdeprecated-copy-dtor, -Wredundant-move.
+	* buildsym.c (buildsym_compunit::record_line): Remove
+	deduplication code.
 
-2019-05-29  Tom Tromey  <tromey@adacore.com>
+2020-04-02  Tom de Vries  <tdevries@suse.de>
 
-	* NEWS: Add entry.
-	* infcmd.c (print_return_value_1): Handle finish_print
-	option.
-	(show_print_finish): New function.
-	(_initialize_infcmd): Add "set/show print finish" commands.
-	* valprint.c (user_print_options): Initialize new member.
-	* valprint.h (struct value_print_options) <finish_print>: New
-	member.
+	PR ada/24671
+	* dwarf2/read.c (dw2_map_matching_symbols): Handle -readnow.
 
-2019-05-28  Tom Tromey  <tromey@adacore.com>
+2020-04-02  Tom de Vries  <tdevries@suse.de>
 
-	* ada-lang.c (ada_remove_Xbn_suffix)
-	(find_old_style_renaming_symbol)
-	(parse_old_style_renaming): Remove.
-	(ada_find_renaming_symbol): Don't call
-	find_old_style_renaming_symbol.
-	(ada_is_renaming_symbol): Rename from
-	ada_find_renaming_symbol.  Remove "block" parameter.  Return
-	bool.  Now static.
-	(ada_read_var_value): Update and simplify.
-	* ada-exp.y (write_var_or_type): Remove old code.
-
-2019-05-28  Alan Hayward  <alan.hayward@arm.com>
-
-	PR gdb/25010
-	* event-top.c: Remove include comment.
-	* inflow.c (class scoped_ignore_sigttou): Move from here...
-	* inflow.h (class scoped_ignore_sigttou): ...to here.
-	* ser-unix.c (hardwire_drain_output): Block SIGTTOU during drain.
-	* top.c:  Remove include comment.
+	* dwarf2/read.c (dwarf2_gdb_index_functions,
+	dwarf2_debug_names_functions): Init lookup_global_symbol_language with
+	NULL.
+	* psymtab.c (psym_lookup_global_symbol_language): New function.
+	(psym_functions): Init psym_lookup_global_symbol_language with
+	psym_lookup_global_symbol_language.
+	* symfile-debug.c (debug_sym_quick_functions): Init
+	lookup_global_symbol_language with NULL.
+	* symfile.c (set_initial_language): Remove fixme comment.
+	* symfile.h (struct quick_symbol_functions): Add
+	lookup_global_symbol_language.
+	* symtab.c (find_quick_global_symbol_language): New function.
+	(find_main_name): Use find_quick_global_symbol_language.
 
-2019-05-27  Tom Tromey  <tom@tromey.com>
+2020-04-01  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* NEWS: Fix typo.
+	* windows-tdep.c (is_linked_with_cygwin_dll): Fix style.
 
-2019-05-22  Tom Tromey  <tromey@adacore.com>
+2020-04-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
-	* target.c (target_follow_exec): Constify parameter.
-	* target-delegates.c: Rebuild.
-	* remote.c (remote_target::follow_exec): Constify parameter.
-	* infrun.c (follow_exec): Constify parameter.
-	* target.h (struct target_ops) <follow_exec>: Constify parameter.
-	(target_follow_exec): Likewise.
+	* buildsym.c (record_line): Fix undefined behavior and preserve
+	lines at eof.
 
-2019-05-22  Alan Hayward  <alan.hayward@arm.com>
+2020-04-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
-	* aarch64-tdep.c (aarch64_execute_dwarf_cfa_vendor_op): Treat
-	DW_CFA_AARCH64_negate_ra_state as nop on non pauth targets.
+	* buildsym.c (record_line): Fix the resizing condition.
 
-2019-05-22  Alan Hayward  <alan.hayward@arm.com>
+2020-04-01  Tom Tromey  <tom@tromey.com>
 
-	* NEWS: Add debugredirect and testsuite sections.
+	* value.h (value_literal_complex): Add comment.
+	* valops.c (value_literal_complex): Refer to value.h.
 
-2019-05-22  Simon Cook  <simon.cook@embecosm.com>
+2020-04-01  Tom Tromey  <tom@tromey.com>
 
-	* riscv-tdep.c (riscv_gdbarch_init): Support determining flen from
-	target descriptions using exclusively floating point register name
-	aliases.
+	* c-exp.y (FLOAT_KEYWORD, COMPLEX): New tokens.
+	(scalar_type): New rule, from typebase.
+	(typebase): Use scalar_type.  Recognize complex types.
+	(field_name): Handle FLOAT_KEYWORD.
+	(ident_tokens): Add _Complex and __complex__.
 
-2019-05-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-04-01  Tom Tromey  <tom@tromey.com>
 
-	PR gdb/18644:
-	* f-lang.c (build_fortran_types): Handle the case where
-	gdbarch_floatformat_for_type returns a nullptr.
+	PR exp/25299:
+	* valarith.c (promotion_type, complex_binop): New functions.
+	(scalar_binop): Handle complex numbers.  Use promotion_type.
+	(value_pos, value_neg, value_complement): Handle complex numbers.
 
-2019-05-21  Tom de Vries  <tdevries@suse.de>
+2020-04-01  Tom Tromey  <tom@tromey.com>
 
-	PR cli/24587
-	* cli/cli-cmds.c (complete_command): Fix use of unitialized variable.
+	* c-exp.y (COMPLEX_INT, COMPLEX_FLOAT): New tokens.
+	(exp) <COMPLEX_INT, COMPLEX_FLOAT>: New rules.
+	(parse_number): Handle complex numbers.
 
-2019-05-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-04-01  Tom Tromey  <tom@tromey.com>
 
-	PR gdb/18644:
-	* f-lang.c (build_fortran_types): Use floatformats_ia64_quad for
-	16-byte floats.
-	* i386-tdep.c (i386_floatformat_for_type): Use
-	floatformats_ia64_quad for the 16-byte floating point component
-	within a fortran 32-byte complex number.
+	* c-valprint.c (c_decorations): Change complex suffix to "i".
 
-2019-05-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-04-01  Tom Tromey  <tom@tromey.com>
 
-	* dwarf2read.c (struct cu_partial_die_info): Add constructor,
-	delete default constructor.
-	(find_partial_die): Update to return const struct.
-	(partial_die_parent_scope): Move variable declaration into scope
-	of its use and change its type to auto.
-	(guess_partial_die_structure_name): Likewise.
-	(partial_die_info::fixup): Likewise.
+	* valprint.c (generic_value_print_complex): Use accessors.
+	* value.h (value_real_part, value_imaginary_part): Declare.
+	* valops.c (value_real_part, value_imaginary_part): New
+	functions.
+	* value.c (creal_internal_fn, cimag_internal_fn): Use accessors.
 
-2019-05-17  Tom Tromey  <tromey@adacore.com>
+2020-04-01  Tom Tromey  <tom@tromey.com>
 
-	* source.c (find_and_open_source): Remove cast.
+	* stabsread.c (rs6000_builtin_type, read_sun_floating_type)
+	(read_range_type): Update.
+	* mdebugread.c (basic_type): Update.
+	* go-lang.c (build_go_types): Use init_complex_type.
+	* gdbtypes.h (struct main_type) <complex_type>: New member.
+	(init_complex_type): Update.
+	(arch_complex_type): Don't declare.
+	* gdbtypes.c (init_complex_type): Remove "objfile" parameter.
+	Make name if none given.  Use alloc_type_copy.  Look for cached
+	complex type.
+	(arch_complex_type): Remove.
+	(gdbtypes_post_init): Use init_complex_type.
+	* f-lang.c (build_fortran_types): Use init_complex_type.
+	* dwarf2/read.c (read_base_type): Update.
+	* d-lang.c (build_d_types): Use init_complex_type.
+	* ctfread.c (read_base_type): Update.
+
+2020-04-01  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infrun.c (stop_all_threads): Update assertion, plus when
+	stopping threads, take into account that we might be trying
+	to stop an all-stop target.
+	(stop_waiting): Call 'stop_all_threads' if there exists a
+	non-stop target.
+
+2020-04-01  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* target.h (exists_non_stop_target): New function declaration.
+	* target.c (exists_non_stop_target): New function.
+
+2020-04-01  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR gdb/24789
+	* eval.c (is_integral_or_integral_reference): New function.
+	(evaluate_subexp_standard): Allow integer references in
+	pointer arithmetic.
+
+2020-04-01  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* remote.c (remote_target::remote_parse_stop_reply): Remove the
+	check for no ptid in the stop reply when the target is non-stop.
+
+2020-04-01  Tom Tromey  <tromey@adacore.com>
+
+	* symtab.h (class lookup_name_info) <lookup_name_info>: Change
+	"name" parameter to rvalue reference.  Initialize m_name_holder.
+	<lookup_name_info>: New overloads.
+	<name>: Return gdb::string_view.
+	<c_str>: New method.
+	<make_ignore_params>: Update.
+	<search_name_hash>: Update.
+	<language_lookup_name>: Return const char *.
+	<m_name>: Change type.
+	* symtab.c (demangle_for_lookup_info::demangle_for_lookup_info)
+	(demangle_for_lookup_info::demangle_for_lookup_info): Update.
+	(lookup_name_info::match_any): Update.
+	* psymtab.c (match_partial_symbol, lookup_partial_symbol):
+	Update.
+	* minsyms.c (linkage_name_str): Update.
+	* language.c (default_symbol_name_matcher): Update.
+	* dwarf2/read.c (mapped_index_base::find_name_components_bounds):
+	Update.
+	* ada-lang.c (ada_fold_name): Change parameter to string_view.
+	(ada_lookup_name_info::ada_lookup_name_info): Update.
+	(literal_symbol_name_matcher): Update.
+
+2020-04-01  Tom Tromey  <tromey@adacore.com>
+
+	* psymtab.c (psymtab_search_name): Remove function.
+	(psym_lookup_symbol): Create search name and lookup name here.
+	(lookup_partial_symbol): Remove "name" parameter; add
+	lookup_name.
+	(psym_expand_symtabs_for_function): Update.
+
+2020-03-31  Joel Jones  <joelkevinjones@gmail.com>
+
+	PR tui/25597:
+	* python/py-tui.c: Include gdb_curses.h inside of #ifdef TUI.
+
+2020-03-31  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/abbrev.c (abbrev_table::read): Conditionally call
+	memcpy.
+
+2020-03-30  Nelson Chu  <nelson.chu@sifive.com>
+
+	* features/riscv/32bit-csr.xml: Regenerated.
+	* features/riscv/64bit-csr.xml: Regenerated.
+
+2020-03-30  Tom Tromey  <tromey@adacore.com>
+
+	* ada-valprint.c (print_variant_part): Update.
+	* ada-lang.h (ada_which_variant_applies): Update.
+	* ada-lang.c (ada_which_variant_applies): Remove outer_type and
+	outer_valaddr parameters; replace with "outer" value parameter.
+	(to_fixed_variant_branch_type): Update.
+
+2020-03-30  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* ppc-linux-nat.c: Include <algorithm>, <unordered_map>, and
+	<list>.  Remove inclusion of observable.h.
+	(PPC_DEBUG_CURRENT_VERSION): Move up define.
+	(struct arch_lwp_info): New struct.
+	(class ppc_linux_dreg_interface): New class.
+	(struct ppc_linux_process_info): New struct.
+	(struct ppc_linux_nat_target) <low_delete_thread, low_new_fork>
+	<low_new_clone, low_forget_process, low_prepare_to_resume>
+	<copy_thread_dreg_state, mark_thread_stale>
+	<mark_debug_registers_changed, register_hw_breakpoint>
+	<clear_hw_breakpoint, register_wp, clear_wp>
+	<can_use_watchpoint_cond_accel, calculate_dvc, check_condition>
+	<num_memory_accesses, get_trigger_type>
+	<create_watchpoint_request, hwdebug_point_cmp>
+	<init_arch_lwp_info, get_arch_lwp_info>
+	<low_stopped_by_watchpoint, low_stopped_data_address>: Declare as
+	methods.
+	<struct ptid_hash>: New inner struct.
+	<m_dreg_interface, m_process_info, m_installed_hw_bps>: Declare
+	members.
+	(saved_dabr_value, hwdebug_info, max_slots_number)
+	(struct hw_break_tuple, struct thread_points, ppc_threads)
+	(have_ptrace_hwdebug_interface)
+	(hwdebug_find_thread_points_by_tid)
+	(hwdebug_insert_point, hwdebug_remove_point): Remove.
+	(ppc_linux_nat_target::can_use_hw_breakpoint): Use
+	m_dreg_interface, remove call to PTRACE_SET_DEBUGREG.
+	(ppc_linux_nat_target::region_ok_for_hw_watchpoint): Add comment,
+	use m_dreg_interface.
+	(hwdebug_point_cmp): Change to...
+	(ppc_linux_nat_target::hwdebug_point_cmp): ...this method.  Use
+	reference arguments instead of pointers.
+	(ppc_linux_nat_target::ranged_break_num_registers): Use
+	m_dreg_interface.
+	(ppc_linux_nat_target::insert_hw_breakpoint): Add comment, use
+	m_dreg_interface.  Call register_hw_breakpoint.
+	(ppc_linux_nat_target::remove_hw_breakpoint): Add comment, use
+	m_dreg_interface.  Call clear_hw_breakpoint.
+	(get_trigger_type): Change to...
+	(ppc_linux_nat_target::get_trigger_type): ...this method.  Add
+	comment.
+	(ppc_linux_nat_target::insert_mask_watchpoint): Update comment,
+	use m_dreg_interface.  Call register_hw_breakpoint.
+	(ppc_linux_nat_target::remove_mask_watchpoint): Update comment,
+	use m_dreg_interface.  Call clear_hw_breakpoint.
+	(can_use_watchpoint_cond_accel): Change to...
+	(ppc_linux_nat_target::can_use_watchpoint_cond_accel): ...this
+	method.  Update comment, use m_dreg_interface and
+	m_process_info.
+	(calculate_dvc): Change to...
+	(ppc_linux_nat_target::calculate_dvc): ...this method.  Use
+	m_dreg_interface.
+	(num_memory_accesses): Change to...
+	(ppc_linux_nat_target::num_memory_accesses): ...this method.
+	(check_condition): Change to...
+	(ppc_linux_nat_target::check_condition): ...this method.
+	(ppc_linux_nat_target::can_accel_watchpoint_condition): Update
+	comment, use m_dreg_interface.
+	(create_watchpoint_request): Change to...
+	(ppc_linux_nat_target::create_watchpoint_request): ...this
+	method.  Use m_dreg_interface.
+	(ppc_linux_nat_target::insert_watchpoint): Add comment, use
+	m_dreg_interface.  Call register_hw_breakpoint or register_wp.
+	(ppc_linux_nat_target::remove_watchpoint): Add comment, use
+	m_dreg_interface.  Call clear_hw_breakpoint or clear_wp.
+	(ppc_linux_nat_target::low_forget_process)
+	(ppc_linux_nat_target::low_new_fork)
+	(ppc_linux_nat_target::low_new_clone)
+	(ppc_linux_nat_target::low_delete_thread)
+	(ppc_linux_nat_target::low_prepare_to_resume): New methods.
+	(ppc_linux_nat_target::low_new_thread): Remove previous logic,
+	only call mark_thread_stale.
+	(ppc_linux_thread_exit): Remove.
+	(ppc_linux_nat_target::stopped_data_address): Change to...
+	(ppc_linux_nat_target::low_stopped_data_address): This. Add
+	comment, use m_dreg_interface and m_thread_hw_breakpoints.
+	(ppc_linux_nat_target::stopped_by_watchpoint): Change to...
+	(ppc_linux_nat_target::stopped_by_watchpoint): This.  Add
+	comment.  Call low_stopped_data_address.
+	(ppc_linux_nat_target::watchpoint_addr_within_range): Use
+	m_dreg_interface.
+	(ppc_linux_nat_target::masked_watch_num_registers): Use
+	m_dreg_interface.
+	(ppc_linux_nat_target::copy_thread_dreg_state)
+	(ppc_linux_nat_target::mark_thread_stale)
+	(ppc_linux_nat_target::mark_debug_registers_changed)
+	(ppc_linux_nat_target::register_hw_breakpoint)
+	(ppc_linux_nat_target::clear_hw_breakpoint)
+	(ppc_linux_nat_target::register_wp)
+	(ppc_linux_nat_target::clear_wp)
+	(ppc_linux_nat_target::init_arch_lwp_info)
+	(ppc_linux_nat_target::get_arch_lwp_info): New methods.
+	(_initialize_ppc_linux_nat): Remove observer callback.
+
+2020-03-30  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* ppc-linux-nat.c (ppc_linux_nat_target::store_registers)
+	(ppc_linux_nat_target::auxv_parse)
+	(ppc_linux_nat_target::read_description)
+	(supply_gregset, fill_gregset, supply_fpregset, fill_fpregset):
+	Move up.
+
+2020-03-30  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* linux-nat.h (low_new_clone): New method.
+	* linux-nat.c (linux_handle_extended_wait): Call low_new_clone.
+
+2020-03-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dbxread.c (dbx_psymtab_to_symtab_1): Rename to...
+	(dbx_expand_psymtab): ... this.
+	(start_psymtab): Update.
+	* mdebugread.c (psymtab_to_symtab_1): Rename to...
+	(mdebug_expand_psymtab): ... this.
+	(parse_partial_symbols): Update.
+	(new_psymtab): Update.
+	* xcoffread.c (xcoff_psymtab_to_symtab_1): Rename to...
+	(xcoff_expand_psymtab): ... this.
+	(xcoff_start_psymtab): Update.
+
+2020-03-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* psympriv.h (partial_symtab) <read_dependencies>: Rename to...
+	<expand_dependencies>: ... this.
+	* psymtab.c (partial_symtab::read_dependencies): Rename to...
+	(partial_symtab::expand_dependencies): ... this.
+	* dwarf2/read.c (dwarf2_include_psymtab) <expand_psymtab>:
+	Update.
+	(dwarf2_psymtab::expand_psymtab): Update.
+	* dbxread.c (dbx_psymtab_to_symtab_1): Update.
+	* mdebugread.c (psymtab_to_symtab_1): Update.
+	* xcoffread.c (xcoff_psymtab_to_symtab_1): Update.
 
-2019-05-17  Tom Tromey  <tromey@adacore.com>
+2020-03-29  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* annotate.c (annotate_source): Make "filename" const.
-	* annotate.h (annotate_source): Use const.
+	* psympriv.h (discard_psymtab): Remove.
+	* dbxread.c (dbx_end_psymtab): Update.
+	* xcoffread.c (xcoff_end_psymtab): Update.
 
-2019-05-17  Alan Hayward  <alan.hayward@arm.com>
+2020-03-28  Tom Tromey  <tom@tromey.com>
 
-	* disasm.c (set_disassembler_options): Send errors to stderr.
+	* dwarf2/attribute.h (struct attribute) <form_is_constant>: Update
+	comment.
 
-2019-05-17  Alan Hayward  <alan.hayward@arm.com>
+2020-03-28  Tom Tromey  <tom@tromey.com>
 
-	* cli/cli-interp.c (struct saved_output_files): Add saved entry.
-	(cli_interp_base::set_logging): Check debug_redirect.
-	* cli/cli-interp.h (set_logging): Add debug_redirect parameter.
-	* cli/cli-logging.c (debug_redirect): Add static variable.
-	(pop_output_files): Add default param.
-	(handle_redirections): Print debug setting.
-	(show_logging_command): Likewise.
-	(_initialize_cli_logging): Add debugredirect command.
-	* interps.c (current_interp_set_logging): Add debug_redirect
-	parameter.
-	* interps.h (set_logging): Add debug_redirect parameter.
-	(current_interp_set_logging): Likewise.
-	* mi/mi-common.h: Likewise.
-	* mi/mi-interp.c (mi_interp::set_logging): Likewise.
+	* dwarf2/read.c (read_attribute_reprocess): Fix formatting.
 
-2019-05-17  Alan Hayward  <alan.hayward@arm.com>
-	    Tom Tromey  <tromey@adacore.com>
+2020-03-27  Hannes Domani  <ssbssa@yahoo.de>
 
-	* cli/cli-interp.c (cli_interp_base::set_logging): Create tee_file
-	directly.
-	* cli/cli-interp.h (make_logging_output): Remove declaration.
-	* cli/cli-logging.c (make_logging_output): Remove function.
-	* mi/mi-interp.c (mi_interp::set_logging): Create tee_file
-	directly.
-	* ui-file.c (tee_file::tee_file): Remove bools.
-	(tee_file::~tee_file): Remove deletes.
-	* ui-file.h (tee_file): Remove bools.
-
-2019-01-28  Jan Vrany  <jan.vrany@fit.cvut.cz>
-
-	* mi/mi-cmds.h (mi_cmd_complete): New function.
-	* mi/mi-main.c (mi_cmd_complete): Likewise.
-	* mi/mi-cmds.c: Define new MI command -complete.
-	* NEWS: Mention new -complete command.
-
-2019-01-24  Jan Vrany  <jan.vrany@fit.cvut.cz>
-
-	* completer.h (complete): New function.
-	* completer.c (complete): Likewise.
-	* cli/cli-cmds.c: (complete_command): Update to use new complete()
-	function defined in completer.h.
+	* windows-nat.c (windows_add_all_dlls): Fix system dll paths.
 
-2019-05-17  Jan Vrany  <jan.vrany@fit.cvut.cz>
+2020-03-26  John Baldwin  <jhb@FreeBSD.org>
 
-	* MAINTAINERS (Write After Approval): Add myself.
+	* fbsd-tdep.c (fbsd_print_auxv_entry): Handle AT_FREEBSD_BSDFLAGS.
 
-2019-05-17  Tom de Vries  <tdevries@suse.de>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	PR gdb/24094
-	* dwarf2read.c (struct cu_partial_die_info): New struct.
-	(find_partial_die): Return cu_partial_die_info.
-	(partial_die_parent_scope, guess_partial_die_structure_name)
-	(partial_die_info::fixup): Handle new return type of find_partial_die.
-
-2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	PR breakpoints/24541
-	* stap-probe.c (stap_parse_register_operand): Make "regname" an
-	"std::string", simplifying the algorithm.
-
-2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* stap-probe.c (handle_stap_probe): Fix complaint formatting.
-	(stap_static_probe_ops::get_probes): Likewise.
-
-2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* stap-probe.c (stap_parse_register_operand): Make "if (*p->arg ==
-	'-')" and "else if".
-	(stap_parse_single_operand): Join checks for
-	"gdbarch_stap_parse_special_token_p" and
-	"gdbarch_stap_parse_special_token" in the same "if" statement.
-	Invert check when verifying for operation on register
-	displacement.
-
-2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* stap-probe.c (stap_get_opcode): Update comment.
-	(stap_get_expected_argument_type): Likewise.
-	(handle_stap_probe): Likewise.
-
-2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* i386-tdep.c (i386_stap_parse_special_token_triplet): Change
-	return type to 'bool'.  Adjust comment.  Use 'bool' when
-	appropriate.
-	(i386_stap_parse_special_token_three_arg_disp): Likewise.
-	* stap-probe.c (stap_parse_argument_1): Likewise.
-	(stap_is_operator): Likewise.
-	(stap_is_generic_prefix): Likewise.
-	(stap_is_register_prefix): Likewise.
-	(stap_is_register_indirection_prefix): Likewise.
-	(stap_is_integer_prefix): Likewise.
-	(stap_generic_check_suffix): Likewise.
-	(stap_check_integer_suffix): Likewise.
-	(stap_check_register_suffix): Likewise.
-	(stap_check_register_indirection_suffix): Likewise.
-	(stap_parse_register_operand): Likewise.
-	(stap_parse_single_operand): Likewise.
-	(stap_parse_argument_1): Likewise.
-	(stap_probe::get_argument_count): Likewise.
-	(stap_is_operator): Likewise.
-
-2019-05-16  Tom Tromey  <tromey@adacore.com>
-
-	* darwin-nat.c (thread_info_from_private_thread_info): Add struct
-	keyword to foreach.
-
-2019-05-15  Simon Marchi  <simon.marchi@efficios.com>
-
-	* linux-thread-db.c (try_thread_db_load_1): Change return type
-	to bool.
-	(try_thread_db_load): Likewise.
-	(try_thread_db_load_from_pdir_1): Likewise.
-	(try_thread_db_load_from_pdir): Likewise.
-	(try_thread_db_load_from_sdir): Likewise.
-	(try_thread_db_load_from_dir): Likewise.
-	(thread_db_load_search): Likewise.
-	(has_libpthread): Likewise.
-	(thread_db_load): Likewise.
-
-2019-05-15  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192
-	* dwarf2read.c (parse_macro_definition): Check whether 'body' is
-	NULL, and complain/return if that's the case.
-
-2019-05-15  John Darrington <john@darrington.wattle.id.au>
-
-	* s12z-tdep.c (push_pull_get_stack_adjustment): New function.
-	(advance, posn, abstract_read_memory): New functions.
-	[struct mem_read_abstraction]: New struct.
-	(s12z_frame_cache): Use opcodes API to interpret stack frame code.
-
-2019-05-14  Tom Tromey  <tromey@adacore.com>
-
-	* ada-lang.c (coerce_unspec_val_to_type): Only set address when
-	value is not lval_memory.
-
-2019-05-14  Tom Tromey  <tromey@adacore.com>
-
-	* solib.c (info_sharedlibrary_command): Style the file name.
-
-2019-05-14  Alan Hayward  <alan.hayward@arm.com>
-
-	* aarch64-tdep.c (aarch64_vnh_type): Add half view.
-	(aarch64_vnv_type): Likewise.
-	* target-descriptions.c (make_gdb_type): Add TDESC_TYPE_IEEE_HALF.
-	* common/tdesc.c: Likewise.
-	* common/tdesc.h (enum tdesc_type_kind): Likewise.
-	* features/aarch64-fpu.c (create_feature_aarch64_fpu): Regenerate.
-	* features/aarch64-fpu.xml: Add ieee half view.
-	* features/aarch64-sve.c (create_feature_aarch64_fpu): Likewise.
-	* gdbtypes.c (gdbtypes_post_init): Add builtin_half
-	* gdbtypes.h (struct builtin_type): Likewise.
-	(struct objfile_type): Likewise.
-
-2019-05-12  Paul Naert  <paul.naert@polymtl.ca>
-
-	* language.c (language_sniff_from_mangled_name): Fix "langauge"
-	typo.
-	* location.h (string_to_event_location): Likewise.
-
-2019-05-11  Joel Brobecker  <brobecker@adacore.com>
-
-	GDB 8.3 released.
-
-2019-05-10  Simon Marchi  <simon.marchi@efficios.com>
-
-	* breakpoint.h (fix_multi_location_breakpoint_output_globally):
-	New variable declaration.
-	* breakpoint.c (fix_multi_location_breakpoint_output_globally):
-	New variable.
-	(print_one_breakpoint): Use ui_out::test_flags and new global
-	variable to compute use_fixed_output.
-	* mi/mi-main.h (mi_multi_location_breakpoint_output_fixed):
-	Remove.
-	* mi/mi-main.c (fix_multi_location_breakpoint_output): Remove.
-	(mi_multi_location_breakpoint_output_fixed): Remove.
-	(mi_cmd_fix_multi_location_breakpoint_output): Adjust to set the
-	new variable.
-	* mi/mi-out.c (mi_ui_out::mi_ui_out): Set
-	fix_multi_location_breakpoint_output flag if version >= 3.
-	* ui-out.h (enum ui_out_flag)
-	<fix_multi_location_breakpoint_output>: New enumerator.
+	* dwarf2/read.c (handle_data_member_location, dwarf2_add_field)
+	(mark_common_block_symbol_computed, read_tag_string_type)
+	(attr_to_dynamic_prop, read_subrange_type): Update.
+	(dwarf2_get_ref_die_offset, dwarf2_get_attr_constant_value): Move
+	to be methods on struct attribute.
+	(skip_one_die, process_imported_unit_die, read_namespace_alias)
+	(read_call_site_scope, partial_die_info::read)
+	(partial_die_info::read, lookup_die_type, follow_die_ref):
+	Update.
+	* dwarf2/attribute.c (attribute::get_ref_die_offset): New method,
+	from dwarf2_get_ref_die_offset.
+	(attribute::constant_value): New method, from
+	dwarf2_get_attr_constant_value.
+	* dwarf2/attribute.h (struct attribute) <get_ref_die_offset>:
+	Declare method.
+	<constant_value>: New method.
 
-2019-05-10  Simon Marchi  <simon.marchi@efficios.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* contrib/cc-with-tweaks.sh: Validate dwz's work.
+	* dwarf2/read.c (dwarf_unit_type_name, dwarf_tag_name)
+	(dwarf_attr_name, dwarf_form_name, dwarf_bool_name)
+	(dwarf_type_encoding_name): Move to stringify.c.
+	* Makefile.in (COMMON_SFILES): Add dwarf2/stringify.c.
+	* dwarf2/stringify.c: New file.
+	* dwarf2/stringify.h: New file.
 
-2019-05-10  Tom Tromey  <tromey@adacore.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* ada-lang.c (catch_ada_completer): New function.
-	(_initialize_ada_language): Use it.
+	* dwarf2/die.h (struct die_info) <addr_base, ranges_base>:
+	Rewrite.
 
-2019-05-10  Tom Tromey  <tromey@adacore.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* thread.c (print_thread_info): Make "requested_threads" const.
-	* gdbthread.h (print_thread_info): Make "requested_threads"
-	const.
-	* ada-tasks.c (print_ada_task_info): Make "taskno_str" const.
-	* ada-lang.h (print_ada_task_info): Make "taskno_str" const.
+	* dwarf2/die.h (struct die_info) <addr_base, ranges_base>: New
+	methods.
+	* dwarf2/read.c (lookup_addr_base): Move to die.h.
+	(lookup_ranges_base): Likewise.
+	(read_cutu_die_from_dwo, read_full_die_1): Update.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_import_statement, read_file_scope)
+	(read_type_unit_scope, inherit_abstract_dies, read_func_scope)
+	(read_lexical_block_scope, read_call_site_scope)
+	(dwarf2_get_subprogram_pc_bounds, get_scope_pc_bounds)
+	(handle_struct_member_die, process_structure_scope)
+	(update_enumeration_type_from_children)
+	(process_enumeration_scope, read_array_type, read_common_block)
+	(read_namespace, read_module, read_subroutine_type): Update.
+	(sibling_die): Remove.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (lookup_addr_base, lookup_ranges_base)
+	(build_type_psymtabs_reader, read_structure_type)
+	(read_enumeration_type, read_full_die_1): Update.
+	(dwarf2_attr_no_follow): Move to die.h.
+	* dwarf2/die.h (struct die_info) <attr>: New method.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (struct dwarf2_cu) <base_known>: Remove.
+	<base_address>: Now an optional.
+	(dwarf2_find_base_address, dwarf2_rnglists_process)
+	(dwarf2_ranges_process, fill_in_loclist_baton)
+	(dwarf2_symbol_mark_computed): Update.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* gdbtypes.c (objfile_type_data): Change type.
-	(objfile_type, _initialize_gdbtypes): Update.
+	* dwarf2/read.c (struct die_info): Move to die.h.
+	* dwarf2/die.h: New file.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* dwarf2-frame.c (dwarf2_frame_objfile_data): Change type.
-	(dwarf2_frame_find_fde, dwarf2_build_frame_info)
-	(_initialize_dwarf2_frame): Update.
+	* dwarf2/line-header.h (dwarf_decode_line_header): Declare.
+	* dwarf2/read.c
+	(dwarf2_statement_list_fits_in_line_number_section_complaint):
+	Move to line-header.c.
+	(read_checked_initial_length_and_offset, read_formatted_entries):
+	Likewise.
+	(dwarf_decode_line_header): Split into two.
+	* dwarf2/line-header.c
+	(dwarf2_statement_list_fits_in_line_number_section_complaint):
+	Move from read.c.
+	(read_checked_initial_length_and_offset, read_formatted_entries):
+	Likewise.
+	(dwarf_decode_line_header): New function, split from read.c.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* objc-lang.c (objc_objfile_data): Change type.
-	(find_methods): Update.
-	(_initialize_objc_lang): Remove.
+	* dwarf2/read.h (struct dwarf2_per_objfile) <read_line_string>:
+	Declare method.
+	* dwarf2/read.c (read_attribute_value): Update.
+	(dwarf2_per_objfile::read_line_string): Rename from
+	read_indirect_line_string.
+	(read_formatted_entries): Update.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* stabsread.c (rs6000_builtin_type_data): Change type.
-	(rs6000_builtin_type, _initialize_stabsread): Update.
+	* dwarf2/macro.c (dwarf_decode_macro_bytes): Use objfile local
+	variable.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* mips-tdep.c (mips_pdr_data): Remove.
-	(_initialize_mips_tdep): Update.
+	* dwarf2/macro.h (dwarf_decode_macros): Make section parameter
+	const.
+	* dwarf2/macro.c (skip_form_bytes, skip_unknown_opcode)
+	(dwarf_decode_macro_bytes, dwarf_decode_macros): Make section
+	parameter const.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf_decode_macros): Make "lh" const.
+	* dwarf2/macro.h (dwarf_decode_macros): Constify "lh" parameter.
+	* dwarf2/macro.c (macro_start_file): Constify "lh" parameter.
+	(dwarf_decode_macro_bytes, dwarf_decode_macros): Likewise.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/line-header.h (struct line_header) <is_valid_file_index,
+	file_names_size, file_full_name, file_file_name>: Use const.
+	<file_name_at, file_names>: Add const overload.
+	* dwarf2/line-header.c (line_header::file_file_name)
+	(line_header::file_full_name): Update.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_macro_malformed_definition_complaint)
+	(macro_start_file, consume_improper_spaces)
+	(parse_macro_definition, skip_form_bytes, skip_unknown_opcode)
+	(dwarf_parse_macro_header, dwarf_decode_macro_bytes)
+	(dwarf_decode_macros): Move to macro.c.
+	* dwarf2/macro.c: New file.
+	* dwarf2/macro.h: New file.
+	* Makefile.in (COMMON_SFILES): Add dwarf2/macro.c.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* hppa-tdep.c (hppa_objfile_priv_data): Change type.
-	(hppa_init_objfile_priv_data, read_unwind_info)
-	(find_unwind_entry, _initialize_hppa_tdep): Update.
+	* dwarf2/section.h (struct dwarf2_section_info) <read_string>: New
+	method.
+	* dwarf2/section.c: New method.  From
+	read_indirect_string_at_offset_from.
+	* dwarf2/read.c (mapped_debug_names::namei_to_name): Update.
+	(read_indirect_string_at_offset_from): Move to section.c.
+	(read_indirect_string_at_offset): Rewrite.
+	(read_indirect_line_string_at_offset): Remove.
+	(read_indirect_string, read_indirect_line_string)
+	(dwarf_decode_macro_bytes): Update.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/section.h (struct dwarf2_section_info)
+	<overload_complaint>: Declare.
+	(dwarf2_section_buffer_overflow_complaint): Don't declare.
+	* dwarf2/section.c (dwarf2_section_info::overflow_complaint):
+	Rename from dwarf2_section_buffer_overflow_complaint.
+	* dwarf2/read.c (skip_one_die, partial_die_info::read)
+	(skip_form_bytes, dwarf_decode_macro_bytes): Update.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* elfread.c (elf_objfile_gnu_ifunc_cache_data): Change type.
-	(elf_gnu_ifunc_record_cache): Update.  Don't allocate hash table
-	on obstack.
-	(elf_gnu_ifunc_resolve_by_cache, _initialize_elfread): Update.
+	* dwarf2/section.h (dwarf2_section_buffer_overflow_complaint):
+	Declare.
+	* dwarf2/section.c (dwarf2_section_buffer_overflow_complaint):
+	Move from read.c.
+	* dwarf2/read.c (dwarf2_section_buffer_overflow_complaint): Move
+	to section.c.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* mdebugread.c (basic_type_data): Change type.
-	(basic_type, _initialize_mdebugread): Update.
+	* dwarf2/read.c (dwarf_decode_macros): Split into two overloads.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* common/gdb_unique_ptr.h (struct noop_deleter): New.
+	* dwarf2/read.c (macro_start_file): Change "cu" parameter to
+	"builder".
+	(dwarf_decode_macro_bytes): Likewise.  Add dwarf2_per_objfile
+	parameter.
+	(dwarf_decode_macros): Update.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* nto-tdep.c (nto_inferior_data_reg): Change type.
-	(nto_inferior_data): Update.
-	(nto_inferior_data_cleanup, nto_new_inferior_data)
-	(_initialize_nto_tdep): Remove.
-	* nto-tdep.h (struct nto_inferior_data): Add initializers.
+	* dwarf2/read.c (read_attribute_value): Update.
+	(read_indirect_string_from_dwz): Move to dwz.c; change into
+	method.
+	(dwarf_decode_macro_bytes): Update.
+	* dwarf2/dwz.h (struct dwz_file) <read_string>: Declare method.
+	* dwarf2/dwz.c: New file.
+	* Makefile.in (COMMON_SFILES): Add dwz.c.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-26  Tom Tromey  <tom@tromey.com>
 
-	* ada-lang.c (struct ada_inferior_data): Add initializers.
-	(ada_inferior_data): Change type.
-	(ada_inferior_data_cleanup): Remove.
-	(get_ada_inferior_data, ada_inferior_exit)
-	(struct ada_pspace_data): Add initializers, destructor.
-	(ada_pspace_data_handle): Change type.
-	(get_ada_pspace_data): Update.
-	(ada_pspace_data_cleanup): Remove.
+	* dwarf2/read.h (struct dwz_file): Move to dwz.h.
+	* dwarf2/read.c: Add include.
+	* dwarf2/index-write.c: Add include.
+	* dwarf2/index-cache.c: Add include.
+	* dwarf2/dwz.h: New file.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-25  Tom Tromey  <tom@tromey.com>
 
-	* coffread.c (struct coff_symfile_info): Add initializers.
-	(coff_objfile_data_key): Move lower.  Change type.
-	(coff_symfile_init, coff_symfile_read, _initialize_coffread):
-	Update.
-	(coff_free_info): Remove.
+	* compile/compile-object-load.c (get_out_value_type): Mention
+	correct symbol name in error message.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-25  Hannes Domani  <ssbssa@yahoo.de>
 
-	* fbsd-tdep.c (struct fbsd_pspace_data): Add initializers.
-	(fbsd_pspace_data_handle): Move lower.  Change type.
-	(get_fbsd_pspace_data): Update.
-	(fbsd_pspace_data_cleanup): Remove.
-	(_initialize_fbsd_tdep): Update.
-
-2019-05-08  Tom Tromey  <tom@tromey.com>
-
-	* ada-tasks.c (ada_tasks_pspace_data_handle): Change type.
-	(get_ada_tasks_pspace_data): Update.
-	(ada_tasks_pspace_data_cleanup): Remove.
-	(_initialize_tasks): Update.
-	(ada_tasks_inferior_data_handle): Change type.
-	(get_ada_tasks_inferior_data): Update.
-	(ada_tasks_inferior_data_cleanup): Remove.
-	(struct ada_tasks_pspace_data): Add initializers.
-
-2019-05-08  Tom Tromey  <tom@tromey.com>
-
-	* symfile.h (struct sym_probe_fns) <sym_get_probes>: Change type.
-	* symfile-debug.c (debug_sym_get_probes): Change type.
-	* stap-probe.c (handle_stap_probe):
-	(stap_static_probe_ops::get_probes): Change type.
-	* probe.h (class static_probe_ops) <get_probes>: Change type.
-	* probe.c (class any_static_probe_ops) <get_probes>: Change type.
-	(parse_probes_in_pspace): Update.
-	(find_probes_in_objfile, find_probe_by_pc, collect_probes):
-	Update.
-	(any_static_probe_ops::get_probes): Change type.
-	* elfread.c (elfread_data): New typedef.
-	(probe_key): Change type.
-	(elf_get_probes): Likewise.  Update.
-	(probe_key_free): Remove.
-	(_initialize_elfread): Update.
-	* dtrace-probe.c (class dtrace_static_probe_ops) <get_probes>:
-	Change type.
-	(dtrace_process_dof_probe, dtrace_process_dof)
-	(dtrace_static_probe_ops::get_probe): Change type.
-
-2019-05-08  Tom Tromey  <tom@tromey.com>
-
-	* xcoffread.c (struct xcoff_symfile_info): Rename from
-	coff_symfile_info.  Add initializers.
-	(xcoff_objfile_data_key): Move lower.  Change type.
-	(XCOFF_DATA): Rewrite.
-	(xcoff_free_info): Remove.
-	(xcoff_symfile_init, _initialize_xcoffread, read_xcoff_symtab)
-	(read_symbol, read_symbol_lineno, find_linenos, init_stringtab)
-	(xcoff_initial_scan): Update.
+	* windows-nat.c (windows_add_all_dlls): Fix system dll paths.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-25  Tom de Vries  <tdevries@suse.de>
 
-	* solib-svr4.c (struct svr4_info): Add initializers and
-	destructor.
-	<probes_table>: Now an htab_up.
-	(solib_svr4_pspace_data): Change type.
-	(free_probes_table): Simplify.
-	(~svr4_info): Rename from svr4_pspace_data_cleanup.
-	(get_svr4_info, probes_table_htab_remove_objfile_probes)
-	(probes_table_remove_objfile_probes, register_solib_event_probe)
-	(solib_event_probe_at, svr4_update_solib_event_breakpoint)
-	(_initialize_svr4_solib): Update.
-
-2019-05-08  Tom Tromey  <tom@tromey.com>
-
-	* remote.c (remote_pspace_data): Change type.
-	(remote_pspace_data_cleanup): Remove.
-	(get_remote_exec_file, set_pspace_remote_exec_file)
-	(_initialize_remote): Update.
-
-2019-05-08  Tom Tromey  <tom@tromey.com>
-
-	* breakpoint.c (breakpoint_objfile_key): Change type.
-	(get_breakpoint_objfile_data): Update.
-	(free_breakpoint_objfile_data): Remove.
-	(_initialize_breakpoint): Update.
-
-2019-05-08  Tom Tromey  <tom@tromey.com>
-
-	* linux-tdep.c (struct linux_info): Add initializers.
-	(linux_inferior_data): Move.  Change type.
-	(invalidate_linux_cache_inf): Update.
-	(linux_inferior_data_cleanup): Remove.
-	(get_linux_inferior_data, _initialize_linux_tdep): Update.
-
-2019-05-08  Tom Tromey  <tom@tromey.com>
-
-	* auxv.c (auxv_inferior_data): Move.  Change type.
-	(auxv_inferior_data_cleanup): Remove.
-	(invalidate_auxv_cache_inf): Rewrite.
-	(get_auxv_inferior_data, _initialize_auxv): Update.
-
-2019-05-08  Tom Tromey  <tom@tromey.com>
-
-	* symfile-debug.c (struct debug_sym_fns_data): Add initializers.
-	(symfile_debug_objfile_data_key): Change type.
-	(symfile_debug_installed, debug_qf_has_symbols)
-	(debug_qf_find_last_source_symtab)
-	(debug_qf_forget_cached_source_info)
-	(debug_qf_map_symtabs_matching_filename, debug_qf_lookup_symbol)
-	(debug_qf_print_stats, debug_qf_dump)
-	(debug_qf_expand_symtabs_for_function)
-	(debug_qf_expand_all_symtabs)
-	(debug_qf_expand_symtabs_with_fullname)
-	(debug_qf_map_matching_symbols)
-	(debug_qf_expand_symtabs_matching)
-	(debug_qf_find_pc_sect_compunit_symtab)
-	(debug_qf_map_symbol_filenames)
-	(debug_qf_find_compunit_symtab_by_address, debug_sym_get_probes)
-	(debug_sym_new_init, debug_sym_init, debug_sym_read)
-	(debug_sym_read_psymbols, debug_sym_finish, debug_sym_offsets)
-	(debug_sym_read_linetable, debug_sym_relocate): Update.
-	(symfile_debug_free_objfile): Remove.
-	(install_symfile_debug_logging, _initialize_symfile_debug):
-	Update.
+	* symtab.h (is_main_symtab_of_compunit_symtab): New function.
+	* symmisc.c (dump_symtab_1): Print user and includes fields.
+	(maintenance_info_symtabs): Same.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* dwarf2read.h (struct dwarf2_per_objfile): Don't inherit from
-	allocate_on_obstack.
-	* dwarf2read.c (dwarf2_objfile_data_key): Change type.
-	(get_dwarf2_per_objfile): Update.
-	(set_dwarf2_per_objfile): Remove.
-	(dwarf2_has_info, dwarf2_get_section_info): Update.
-	(dwarf2_free_objfile): Remove.
-	(_initialize_dwarf2_read): Update.
+	PR gdb/25534
+	* riscv-tdep.c (riscv_arg_info::c_offset): Update comment.
+	(riscv_regcache_cooked_write): New function.
+	(riscv_push_dummy_call): Use new function.
+	(riscv_return_value): Likewise.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-24  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* auto-load.c (struct auto_load_pspace_info): Add destructor and
-	initializers.
-	<unsupported_script_warning_printed,
-	script_not_found_warning_printed>: Now bool.
-	(auto_load_pspace_data): Change type.
-	(~auto_load_pspace_info): Rename from
-	auto_load_pspace_data_cleanup.
-	(get_auto_load_pspace_data, init_loaded_scripts_info)
-	(clear_section_scripts, maybe_print_unsupported_script_warning)
-	(maybe_print_script_not_found_warning, _initialize_auto_load):
-	Update.
+	* fbsd-nat.c (fbsd_nat_target::follow_fork): Change bool to int.
+	* fbsd-nat.h (class fbsd_nat_target) <follow_fork>: Likewise.
+	* inf-ptrace.c (inf_ptrace_target::follow_fork): Likewise.
+	* inf-ptrace.h (struct inf_ptrace_target) <follow_fork>: Likewise.
+	* infrun.c (follow_fork): Likewise.
+	(follow_fork_inferior): Likewise.
+	* linux-nat.c (linux_nat_target::follow_fork): Likewise.
+	* linux-nat.h (class linux_nat_target): Likewise.
+	* remote.c (class remote_target) <follow_fork>: Likewise.
+	(remote_target::follow_fork): Likewise.
+	* target-delegates.c: Re-generate.
+	* target.c (default_follow_fork): Likewise.
+	(target_follow_fork): Likewise.
+	* target.h (struct target_ops) <follow_fork>: Likewise.
+	(target_follow_fork): Likewise.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-24  Tom de Vries  <tdevries@suse.de>
 
-	* objfiles.c (objfile_pspace_info): Add destructor and
-	initializers.
-	(objfiles_pspace_data): Change type.
-	(~objfile_pspace_info): Rename from objfiles_pspace_data_cleanup.
-	(get_objfile_pspace_data): Update.
-	(objfiles_bfd_data): Change type.
-	(get_objfile_bfd_data): Update.
-	(objfile_bfd_data_free, _initialize_objfiles): Remove.
-
-2019-05-08  Tom Tromey  <tom@tromey.com>
-
-	* break-catch-syscall.c (catch_syscall_inferior_data): Move.
-	Change type.
-	(get_catch_syscall_inferior_data): Update.
-	(catch_syscall_inferior_data_cleanup): Remove.
-	(_initialize_break_catch_syscall): Update.
+	* psymtab.c (maintenance_info_psymtabs): Print user field.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-20  Tom Tromey  <tromey@adacore.com>
 
-	* inflow.c (struct terminal_info): Add destructor and
-	initializers.
-	(inflow_inferior_data): Change type.
-	(~terminal_info): Rename from inflow_inferior_data_cleanup.
-	(get_inflow_inferior_data, inflow_inferior_exit)
-	(swap_terminal_info, _initialize_inflow): Update.
-
-2019-05-08  Tom Tromey  <tom@tromey.com>
-
-	* target-dcache.c (target_dcache_cleanup): Remove.
-	(target_dcache_aspace_key): Change type.
-	(target_dcache_init_p, target_dcache_invalidate)
-	(target_dcache_get, target_dcache_get_or_init)
-	(_initialize_target_dcache): Update.
-	* dcache.h (struct dcache_deleter): New.
+	* dwarf2/loc.h (dwarf2_evaluate_property): Make "addr_stack"
+	const.
+	* dwarf2/loc.c (dwarf2_evaluate_property): Make "addr_stack"
+	const.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-20  Simon Marchi  <simon.marchi@efficios.com>
 
-	* symtab.c (struct symbol_cache): Add destructor and
-	initializers.
-	(symbol_cache_key): Move.  Change type.
-	(make_symbol_cache, free_symbol_cache): Remove.
-	(get_symbol_cache): Update.
-	(symbol_cache_cleanup): Remove.
-	(ALL_PSPACES, symbol_cache_flush)
-	(maintenance_print_symbol_cache)
-	(maintenance_print_symbol_cache_statistics, _initialize_symtab):
-	Update.
+	* ptrace.m4: Don't check for ptrace declaration.
+	* config.in: Re-generate.
+	* configure: Re-generate.
+	* nat/gdb_ptrace.h: Don't declare ptrace if HAVE_DECL_PTRACE is
+	not defined.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-20  Kamil Rytarowski  <n54@gmx.com>
 
-	* symtab.c (struct main_info): Add destructor and initializers.
-	(main_progspace_key): Move.  Change type.
-	(get_main_info): Update.
-	(main_info_cleanup): Remove.
-	(_initialize_symtab): Update.
+	* amd64-bsd-nat.c (gdb_ptrace): Change return type from `int' to
+	`PTRACE_TYPE_RET'.
+	* i386-bsd-nat.c (gdb_ptrace): Likewise.
+	* sparc-nat.c (gdb_ptrace): Likewise.
+	* x86-bsd-nat.c (gdb_ptrace): Likewise.
 
-2019-05-08  Tom Tromey  <tom@tromey.com>
+2020-03-20  Tom Tromey  <tromey@adacore.com>
 
-	* registry.h (DECLARE_REGISTRY): Define the _key class.
+	* c-exp.y (lex_one_token): Fix assert.
 
-2019-05-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-20  Tom Tromey  <tromey@adacore.com>
 
-	* NEWS: Merge two 'New commands' sections.
+	* ada-tasks.c (read_atcb): Use smaller length in strncpy call.
+	* linux-tdep.c (linux_fill_prpsinfo): Use smaller length in
+	strncpy call.
 
-2019-05-08  Joel Brobecker  <brobecker@adacore.com>
+2020-03-20  Tom Tromey  <tromey@adacore.com>
 
-	* ada-valprint.c (ada_val_print_gnat_array): Remove language
-	parameter and use Ada language definition instead.
-	(ada_val_print_ptr): Remove unused language parameter.
-	(ada_val_print_num): Remove language parameter and use Ada language
-	definition instead.
-	(ada_val_print_enum, ada_val_print_flt): Remove unused language
-	parameter.
-	(ada_val_print_struct_union, ada_val_print_ref): Remove language
-	parameter and use Ada language definition instead.
-	(ada_val_print_1): Update all ada_val_print_xxx calls.
-	Remove language parameter.
-	(ada_val_print): Update ada_val_print_1 call.
+	* symmisc.c (maintenance_print_one_line_table): Use ui_out.
 
-2019-05-08  Tom Tromey  <tromey@adacore.com>
+2020-03-20  Tom Tromey  <tromey@adacore.com>
 
-	* remote.c (remote_hw_watchpoint_limit)
-	(remote_hw_watchpoint_length_limit, remote_hw_breakpoint_limit):
-	Now static.
+	* ada-valprint.c (print_variant_part): Remove parameters; switch
+	to value-based API.
+	(print_field_values): Likewise.
+	(ada_val_print_struct_union): Likewise.
+	(ada_value_print_1): Update.
 
-2019-05-08  Tom Tromey  <tromey@adacore.com>
+2020-03-20  Kamil Rytarowski  <n54@gmx.com>
 
-	* maint.c (_initialize_maint_cmds): Move initialization code to
-	remote.c.
-	(watchdog, show_watchdog): Move to remote.c.
-	* remote.c (watchdog, show_watchdog): Move from maint.c.  Make
-	"watchdog" static.
-	(_initialize_remote): Move initialization code from maint.c.
-	* defs.h (watchdog): Don't declare.
+	* ppc-nbsd-nat.c (ppc_nbsd_nat_target): Inherit from
+	nbsd_nat_target instead of inf_ptrace_target.
+	* ppc-nbsd-nat.c: Include "nbsd-nat.h", as we are now using
+	nbsd_nat_target.
 
-2019-05-08  Tom Tromey  <tromey@adacore.com>
+2020-03-20  Kamil Rytarowski  <n54@gmx.com>
 
-	* tui/tui-interp.c: Include main.h.
-	* interps.c: Include main.h.
-	* main.h (interpreter_p): Declare.
-	* defs.h (interpreter_p): Don't declare.
+	* hppa-nbsd-nat.c (fetch_registers): New variable lwp and pass
+	it to the ptrace call.
+	* (store_registers): Likewise.
 
-2019-05-08  Tom Tromey  <tromey@adacore.com>
+2020-03-20  Kamil Rytarowski  <n54@gmx.com>
 
-	* dwarf2loc.c: Include dwarf2read.h.
-	* defs.h (read_unsigned_leb128): Don't declare.
-	* dwarf2read.h (read_unsigned_leb128): Declare.
+	* ppc-nbsd-nat.c (fetch_registers): New variable lwp and pass
+	it to the ptrace call.
+	* (store_registers): Likewise.
 
-2019-05-08  Tom Tromey  <tromey@adacore.com>
+2020-03-19  Luis Machado  <luis.machado@linaro.org>
 
-	* utils.c (fputs_maybe_filtered): Call can_emit_style_escape as a
-	method.
+	* nat/aarch64-sve-linux-ptrace.c (aarch64_sve_set_vq): If vg is not
+	valid, fetch vg value from ptrace.
 
-2019-05-08  Tom Tromey  <tromey@adacore.com>
+2020-03-19  Kamil Rytarowski  <n54@gmx.com>
+	* inf-ptrace.h: Disable get_ptrace_pid on NetBSD.
+	* inf-ptrace.c: Likewise.
+	* (gdb_ptrace): Add.
+	* (inf_ptrace_target::resume): Update.
+	* (inf_ptrace_target::xfer_partial): Likewise.
+	* (inf_ptrace_peek_poke): Change argument `pid' to `ptid'.
+	* (inf_ptrace_peek_poke): Update.
 
-	* utils.c (fputs_maybe_filtered): Reset style after paging, even
-	when no wrap column is set.
+2020-03-19  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-08  Tom Tromey  <tromey@adacore.com>
+	* x86-bsd-nat.c (gdb_ptrace): New.
+	* (x86bsd_dr_set): Add new argument `ptid'.
+	* (x86bsd_dr_get, x86bsd_dr_set, x86bsd_dr_set_control,
+	x86bsd_dr_set_addr): Update.
 
-	* c-lang.c (c_get_string): Handle non-C-style arrays.
+2020-03-19  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-05-08  Tom Tromey  <tromey@adacore.com>
+	* remote.c (remote_target::process_stop_reply): Handle events for
+	all threads differently.
 
-	* typeprint.c (print_offset_data::update): Print the bit offset,
-	not the number of bits remaining.
+2020-03-19  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-05-08  Tom Tromey  <tromey@adacore.com>
+	* completer.c (completion_tracker::remove_completion): Define new
+	function.
+	* completer.h (completion_tracker::remove_completion): Declare new
+	function.
+	* symtab.c (completion_list_add_symbol): Remove aliasing msymbols
+	when adding a C++ function symbol.
 
-	* typeprint.c (print_offset_data::maybe_print_hole): Add extra
-	padding at end of comment.
+2020-03-19  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-05-08  Tom Tromey  <tromey@adacore.com>
+	* completer.c (completion_tracker::completion_hash_entry): Define
+	new class.
+	(advance_to_filename_complete_word_point): Call
+	recompute_lowest_common_denominator.
+	(completion_tracker::completion_tracker): Call discard_completions
+	to setup the hash table.
+	(completion_tracker::discard_completions): Allow for being called
+	from the constructor, pass new equal function, and element deleter
+	when constructing the hash table.  Initialise new class member
+	variables.
+	(completion_tracker::maybe_add_completion): Remove use of
+	m_entries_vec, and store more information into m_entries_hash.
+	(completion_tracker::recompute_lcd_visitor): New function, most
+	content taken from...
+	(completion_tracker::recompute_lowest_common_denominator):
+	...here, this now just visits each item in the hash calling the
+	above visitor.
+	(completion_tracker::build_completion_result): Remove use of
+	m_entries_vec, call recompute_lowest_common_denominator.
+	* completer.h (completion_tracker::have_completions): Remove use
+	of m_entries_vec.
+	(completion_tracker::completion_hash_entry): Declare new class.
+	(completion_tracker::recompute_lowest_common_denominator): Change
+	function signature.
+	(completion_tracker::recompute_lcd_visitor): Declare new function.
+	(completion_tracker::m_entries_vec): Delete.
+	(completion_tracker::m_entries_hash): Initialize to NULL.
+	(completion_tracker::m_lowest_common_denominator_valid): New
+	member variable.
+	(completion_tracker::m_lowest_common_denominator_max_length): New
+	member variable.
 
-	* dwarf2loc.c (dwarf2_evaluate_property) <PROP_ADDR_OFFSET>:
-	Compare main types.
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-06  Tom Tromey  <tom@tromey.com>
+	* regformats/regdef.h: Put reg in gdb namespace.
 
-	* common/scoped_mmap.c: Include common-defs.h.
-	* common/scoped_mmap.h: Don't include config.h.
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-04  Tom Tromey  <tom@tromey.com>
+	* i386-bsd-nat.c (gdb_ptrace): New.
+	* (i386bsd_fetch_inferior_registers,
+	i386bsd_store_inferior_registers) Switch from pid_t to ptid_t.
+	* (i386bsd_fetch_inferior_registers,
+	i386bsd_store_inferior_registers) Use gdb_ptrace.
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* amd64-bsd-nat.c (gdb_ptrace): New.
+	* (amd64bsd_fetch_inferior_registers,
+	amd64bsd_store_inferior_registers) Switch from pid_t to ptid_t.
+	* (amd64bsd_fetch_inferior_registers,
+	amd64bsd_store_inferior_registers) Use gdb_ptrace.
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* user-regs.c (user_reg::read): Rename to...
+	(user_reg::xread): ...this.
+	* (append_user_reg): Rename argument `read' to `xread'.
+	* (user_reg_add_builtin): Likewise.
+	* (user_reg_add): Likewise.
+	* (value_of_user_reg): Likewise.
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* sparc-nat.c (gdb_ptrace): New.
+	* sparc-nat.c (sparc_fetch_inferior_registers)
+	(sparc_store_inferior_registers) Remove obsolete comment.
+	* sparc-nat.c (sparc_fetch_inferior_registers)
+	(sparc_store_inferior_registers) Switch from pid_t to ptid_t.
+	* sparc-nat.c (sparc_fetch_inferior_registers)
+	(sparc_store_inferior_registers) Use gdb_ptrace.
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* sh-nbsd-nat.c (fetch_registers): New variable lwp and pass
+	it to the ptrace call.
+	* sh-nbsd-nat.c (store_registers): Likewise.
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* sh-nbsd-nat.c (sh_nbsd_nat_target): Inherit from
+	nbsd_nat_target instead of inf_ptrace_target.
+	* sh-nbsd-nat.c: Include "nbsd-nat.h", as we are now using
+	nbsd_nat_target.
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* amd64-bsd-nat.c: Include amd64-bsd-nat.h".
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-nat.c: Include <sys/types.h>, <sys/ptrace.h> and
+	<sys/sysctl.h>.
+	* nbsd-nat.c (nbsd_nat_target::pid_to_exec_file): Rewrite.
+
+2020-03-17  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/23710
+	* dwarf2/read.h (struct dwarf2_per_cu_data): Add unit_type and lang
+	fields.
+	* dwarf2/read.c (process_psymtab_comp_unit): Initialize unit_type and lang
+	fields.
+	(process_imported_unit_die): Skip import of c++ CUs.
+
+2020-03-16  Tom Tromey  <tom@tromey.com>
+
+	* p-valprint.c (pascal_object_print_value): Initialize
+	base_value.
+
+2020-03-16  Anton Kolesov  <anton.kolesov@synopsys.com>
+	    Shahab Vahedi  <shahab@synopsys.com>
+
+	* Makefile.in: Add arch/arc.o
+	* configure.tgt: Likewise.
+	* arc-tdep.c (arc_tdesc_init): Use arc_read_description.
+	(_initialize_arc_tdep): Don't initialize old target descriptions.
+	(arc_read_description): New function to cache target descriptions.
+	* arc-tdep.h (arc_read_description): Add proto type.
+	* arch/arc.c: New file.
+	* arch/arc.h: Likewise.
+	* features/Makefile: Replace old target descriptions with new.
+	* features/arc-arcompact.c: Remove.
+	* features/arc-arcompact.xml: Likewise.
+	* features/arc-v2.c: Likewise
+	* features/arc-v2.xml: Likewise
+	* features/arc/aux-arcompact.xml: New file.
+	* features/arc/aux-v2.xml: Likewise.
+	* features/arc/core-arcompact.xml: Likewise.
+	* features/arc/core-v2.xml: Likewise.
+	* features/arc/aux-arcompact.c: Generate.
+	* features/arc/aux-v2.c: Likewise.
+	* features/arc/core-arcompact.c: Likewise.
+	* features/arc/core-v2.c: Likewise.
+	* target-descriptions (maint_print_c_tdesc_cmd): Support ARC features.
+
+2020-03-16  Tom Tromey  <tromey@adacore.com>
+
+	PR gdb/25663:
+	* dwarf2/read.c (dwarf2_name): Strip leading namespaces after
+	putting value into bcache.
+
+2020-03-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	PR gdb/21500
+	* amd64-windows-tdep.c (amd64_windows_init_abi): Rename
+	to...
+	(amd64_windows_init_abi_common): ... this.  Don't set size of
+	long type.
+	(amd64_windows_init_abi): New function.
+	(amd64_cygwin_init_abi): New function.
+	(_initialize_amd64_windows_tdep): Use amd64_cygwin_init_abi for
+	the Cygwin OS ABI.
+	* i386-windows-tdep.c (_initialize_i386_windows_tdep): Clarify
+	comment.
 
-	* aarch64-tdep.c (stack_item_t): Remove typedef and DEF_VEC.
-	(struct aarch64_call_info): Add initializers.
-	<si>: Now a std::vector.
-	(pass_on_stack, aarch64_push_dummy_call): Update.
+2020-03-16  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-05-04  Simon Marchi  <simon.marchi@efficios.com>
-	    Tom Tromey  <tom@tromey.com>
+	* windows-tdep.h (is_linked_with_cygwin_dll): New declaration.
+	* windows-tdep.c (CYGWIN_DLL_NAME): New.
+	(pe_import_directory_entry): New struct type.
+	(is_linked_with_cygwin_dll): New function.
+	* amd64-windows-tdep.c (amd64_windows_osabi_sniffer): Select
+	GDB_OSABI_CYGWIN if the BFD is linked with the Cygwin DLL.
+	* i386-windows-tdep.c (i386_windows_osabi_sniffer): Likewise.
+
+2020-03-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* i386-windows-tdep.c: Mass-rename "cygwin" to "windows", except
+	i386_cygwin_core_osabi_sniffer.
+
+2020-03-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* i386-cygwin-tdep.c: Rename to...
+	* i386-windows-tdep.c: ... this.
+	* Makefile.in (ALL_TARGET_OBS): Rename i386-cygwin-tdep.c to
+	i386-windows-tdep.c.
+	* configure.tgt: Likewise.
+
+2020-03-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* osabi.h (enum gdb_osabi): Add GDB_OSABI_WINDOWS.
+	* osabi.c (gdb_osabi_names): Add "Windows".
+	* i386-cygwin-tdep.c (i386_cygwin_osabi_sniffer): Return
+	GDB_OSABI_WINDOWS when the binary's target is "pei-i386".
+	(i386_cygwin_core_osabi_sniffer): New function, extracted from
+	i386_cygwin_osabi_sniffer.
+	(_initialize_i386_cygwin_tdep): Register OS ABI
+	GDB_OSABI_WINDOWS for i386.
+	* amd64-windows-tdep.c (amd64_windows_osabi_sniffer): Return
+	GDB_OSABI_WINDOWS when the binary's target is "pei-x86-64".
+	(_initialize_amd64_windows_tdep): Register OS ABI GDB_OSABI_WINDOWS
+	for x86-64.
+	* configure.tgt: Use GDB_OSABI_WINDOWS as the default OS ABI
+	when the target matches '*-*-mingw*'.
+
+2020-03-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* defs.h (enum gdb_osabi): Move to...
+	* osabi.h (enum gdb_osabi): ... here.
+	* gdbarch.sh: Include osabi.h in gdbarch.h.
+	* gdbarch.h: Re-generate.
 
-	* ppc-linux-nat.c (thread_points_p): Remove typedef and DEF_VEC.
-	(ppc_threads): Now a std::vector.  Now static.
-	(hwdebug_find_thread_points_by_tid)
-	(ppc_linux_nat_target::low_new_thread, ppc_linux_thread_exit):
-	Update.
+2020-03-16  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-05-04  Tom Tromey  <tom@tromey.com>
+	* amd64-windows-tdep.c (amd64_windows_osabi_sniffer): New
+	function.
+	(_initialize_amd64_windows_tdep): Register osabi sniffer.
 
-	* arc-tdep.c (arc_tdesc_init): Return bool.
+2020-03-14  Tom Tromey  <tom@tromey.com>
 
-2019-05-04  Tom Tromey  <tom@tromey.com>
+	* c-typeprint.c (cp_type_print_method_args): Print "__restrict__"
+	for C++.
+	(c_type_print_modifier): Likewise.  Add "language" parameter.
+	(c_type_print_varspec_prefix, c_type_print_base_struct_union)
+	(c_type_print_base_1): Update.
+	* type-stack.h (enum type_pieces) <tp_atomic, tp_restrict>: New
+	constants.
+	* type-stack.c (type_stack::insert): Handle tp_atomic and
+	tp_restrict.
+	(type_stack::follow_type_instance_flags): Likewise.
+	(type_stack::follow_types): Likewise.  Merge type-following code.
+	* c-exp.y (RESTRICT, ATOMIC): New tokens.
+	(space_identifier, cv_with_space_id)
+	(const_or_volatile_or_space_identifier_noopt)
+	(const_or_volatile_or_space_identifier): Remove.
+	(single_qualifier, qualifier_seq_noopt, qualifier_seq): New
+	rules.
+	(ptr_operator, typebase): Update.
+	(enum token_flag) <FLAG_C>: New constant.
+	(ident_tokens): Add "restrict", "__restrict__", "__restrict", and
+	"_Atomic".
+	(lex_one_token): Handle FLAG_C.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* m68k-bsd-nat.c (fetch_registers): New variable lwp and pass
+	it to the ptrace call.
+	* m68k-bsd-nat.c (store_registers): Likewise.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* m68k-bsd-nat.c (m68kbsd_supply_gregset): Change type of regs to
+	gdb_byte *.
+	* m68k-bsd-nat.c (m68kbsd_supply_fpregset): Likewise.
+	* m68k-bsd-nat.c (m68kbsd_collect_gregset): Likewise.
+	* m68k-bsd-nat.c (m68kbsd_supply_pcb): Cast &tmp to gdb_byte *.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* m68k-bsd-nat.c (m68k_bsd_nat_target): Inherit from
+	nbsd_nat_target instead of inf_ptrace_target.
+	* m68k-bsd-nat.c: Include "nbsd-nat.h", as we are now using
+	nbsd_nat_target.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* m68k-bsd-nat.c: Define _KERNTYPES to get the declaration of
+	register_t.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* alpha-bsd-nat.c (fetch_registers): New variable lwp and pass
+	it to the ptrace call.
+	* alpha-bsd-nat.c (store_registers): Likewise.
 
-	* arm-linux-nat.c (arm_linux_nat_target::can_use_hw_breakpoint):
-	Use gdb_assert_not_reached.
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-04  Tom Tromey  <tom@tromey.com>
+	* alpha-bsd-nat.c: Remove <sys/procfs.h> and "gregset.h" from
+	includes.
+	* alpha-bsd-nat.c (gregset_t, fpregset_t): Remove.
+	* alpha-bsd-nat.c (supply_gregset, fill_gregset, supply_fpregset,
+	fill_fpregset): Likewise.
 
-	* compile/compile-cplus-types.c (compile_cplus_convert_enum): Use
-	"false".
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-04  Tom Tromey  <tom@tromey.com>
+	* alpha-bsd-nat.c (alpha_netbsd_nat_target): Inherit from
+	nbsd_nat_target instead of inf_ptrace_target.
+	* alpha-bsd-nat.c: Include "nbsd-nat.h", as we are now using
+	nbsd_nat_target.
 
-	* arc-tdep.c (arc_tdesc_init): Use bool.
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-04  Tom Tromey  <tom@tromey.com>
+	* alpha-bsd-nat.c: Define _KERNTYPES to get the declaration of
+	register_t.
 
-	* stack.c (select_frame_for_mi): Use "false", not "FALSE".
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-04  Tom Tromey  <tom@tromey.com>
+	* arm-nbsd-nat.c (fetch_register): New variable lwp and pass
+	it to the ptrace call.
+	* arm-nbsd-nat.c (fetch_fp_register): Likewise.
+	* arm-nbsd-nat.c (fetch_fp_regs): Likewise.
+	* arm-nbsd-nat.c (store_register): Likewise.
+	* arm-nbsd-nat.c (store_regs): Likewise.
+	* arm-nbsd-nat.c (store_fp_register): Likewise.
+	* arm-nbsd-nat.c (store_fp_regs): Likewise.
 
-	* cli/cli-cmds.c (valid_command_p): Return bool.
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-04  Tom Tromey  <tom@tromey.com>
+	* arm-nbsd-nat.c (arm_netbsd_nat_target): Inherit from
+	nbsd_nat_target instead of inf_ptrace_target.
+	* arm-nbsd-nat.c: Include "nbsd-nat.h", as we are now using
+	nbsd_nat_target.
 
-	* cli/cli-decode.c (valid_user_defined_cmd_name_p): Return bool.
-	* command.h (valid_user_defined_cmd_name_p): Channge return type.
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-04  Raul Tambre  <raul@tambre.ee>
+	* x86-bsd-nat.c (x86bsd_dr_get): New variable lwp and pass
+	it to the ptrace call.
+	* x86-bsd-nat.c (x86bsd_dr_set): Likewise.
 
-	* python/lib/gdb/prompt.py (_ExtendedPrompt)
-	<before_prompt_hook, get_show_string>: Fix incorrect use of 'is'
-	operator for comparison.
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-04  Tom Tromey  <tom@tromey.com>
+	* vax-bsd-nat.c (vaxbsd_supply_gregset): New variable lwp and pass
+	it to the ptrace call.
+	* vax-bsd-nat.c (vaxbsd_collect_gregset): Likewise.
 
-	* psymtab.c (psymbol_name_matches, match_partial_symbol)
-	(lookup_partial_symbol, print_partial_symbols)
-	(recursively_search_psymtabs, sort_pst_symbols, psymbol_hash)
-	(psymbol_compare): Update.
-	(add_psymbol_to_bcache): Clear the entire psymbol.
-	(maintenance_check_psymtabs): Update.
-	* psympriv.h (struct partial_symbol): Don't derive from
-	general_symbol_info.
-	<obj_section, unrelocated_address, address,
-	set_unrelocated_address>: Update.
-	<ginfo>: New member.
-	* dwarf-index-write.c (write_psymbols, debug_names::insert)
-	(debug_names::write_psymbols): Update.
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-04  Tom de Vries  <tdevries@suse.de>
+	* vax-bsd-nat.c (vaxbsd_supply_gregset): Cast gregs to const
+	gdb_byte *.
+	* vax-bsd-nat.c (vaxbsd_collect_gregset): Cast gregs to void *.
 
-	* contrib/cc-with-tweaks.sh: Support -n arg.
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-04  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* vax-bsd-nat.c (vax_bsd_nat_target): Inherit from nbsd_nat_target
+	instead of inf_ptrace_target.
+	* vax-bsd-nat.c: Include "nbsd-nat.h", as we are now using
+	nbsd_nat_target.
 
-	* corelow.c (core_target::detach): Ensure frame cache and
-	register caches are cleared.
-	inferior.c (exit_inferior_1): Likewise.
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-05-03  Sandra Loosemore  <sandra@codesourcery.com>
-	    Tom Tromey  <tom@tromey.com>
+	* mips-nbsd-nat.c: Define _KERNTYPES to get the declaration of
+	register_t.
 
-	* dictionary.c (collate_pending_symbols_by_language): Remove
-	"struct" from foreach.
-	* symtab.c (lookup_global_symbol_from_objfile)
-	(lookup_symbol_in_objfile_from_linkage_name): Remove "struct" from
-	foreach.
-	* ser-tcp.c (net_open): Remove "struct" from foreach.
-	* objfiles.c (objfile_relocate, objfile_rebase)
-	(objfile_has_symbols): Remove "struct" from foreach.
-	* minsyms.c (lookup_minimal_symbol_by_pc_section): Remove "struct"
-	from foreach.
-	* dwarf2read.c (handle_struct_member_die): Remove "struct" from
-	foreach.
-	* darwin-nat.c (thread_info_from_private_thread_info): Remove
-	"struct" from foreach.
-	* ada-lang.c (create_excep_cond_exprs)
-	(ada_exception_catchpoint_cond_string): Remove "struct" from
-	foreach.
-
-2019-05-03  Tom Tromey  <tromey@adacore.com>
-
-	* ada-exp.y (convert_char_literal): Check suffix of each
-	enumerator.
-
-2019-05-03  Dilyan Palauzov  <dilyan.palauzov@aegee.org>
-
-	PR ada/21406:
-	* ada-exp.y (yywrap): Don't define.
-	* ada-lex.l (%option): Add noyywrap
-	(yywrap): Remove.
-
-2019-05-03  Eli Zaretskii  <eliz@gnu.org>
-
-	* common/common-defs.h [__MINGW32__ || __CYGWIN__]: Define
-	_WIN32_WINNT to the XP level, unless already defined to a higher
-	level.
-
-	* unittests/parse-connection-spec-selftests.c:
-	* ser-tcp.c:
-	* common/netstuff.c [USE_WIN32API]:  Remove the _WIN32_WINNT
-	override.
-
-	* symfile.c (find_separate_debug_file): Remove colon from the
-	drive spec of DOS/Windows file names of the target, so that the
-	file name produced from DEBUGDIR and the target's directory will
-	be valid on DOS/Windows systems.
-
-2019-05-02  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* rust-lang.c (val_print_struct): Handle printing structures
-	containing strings.
-
-2019-05-02  Tom Tromey  <tromey@adacore.com>
-
-	* valarith.c (_initialize_valarith): Remove.
-
-2019-05-01  Tom Tromey  <tromey@adacore.com>
-
-	* ada-lang.c (ada_value_primitive_field): Treat more fields as
-	bitfields.
-
-2019-05-01  Tom Tromey  <tromey@adacore.com>
-
-	* ada-lang.c (ada_value_assign): Correctly compute starting offset
-	for big-endian copies.
-
-2019-04-30  Ali Tamur  <tamur@google.com>
-	* gdb/dwarf2read.c (read_3_bytes): New declaration.
-	(read_attribute_value): Added DW_FORM_strx1-4 cases.
-	(read_3_bytes): New function.
-
-2019-04-30  Joel Brobecker  <brobecker@adacore.com>
-
-	* windows-nat.c (main_thread_id): Delete.
-	(handle_output_debug_string): Replace main_thread_id by
-	current_event.dwThreadId.
-	(fake_create_process): Likewise.
-	(get_windows_debug_event) <CREATE_PROCESS_DEBUG_EVENT>:
-	Do not set main_thread_id.
-	<LOAD_DLL_DEBUG_EVENT>: Replace main_thread_id by
-	current_event.dwThreadId.
-	<UNLOAD_DLL_DEBUG_EVENT>: Likewise.
-
-2019-04-30  Joel Brobecker  <brobecker@adacore.com>
-
-	* windows-nat.c (get_windows_debug_event) <EXIT_PROCESS_DEBUG_EVENT>:
-	Use current_event.dwThreadId instead of main_thread_id.
-
-2019-04-30  Tom Tromey  <tromey@adacore.com>
-
-	* ada-lang.c (ada_lookup_simple_minsyms): New function.
-	(create_excep_cond_exprs): Iterate over program spaces.
-	(ada_exception_catchpoint_cond_string): Examine all minimal
-	symbols for exception types.
-
-2019-04-30  Tom Tromey  <tromey@adacore.com>
-
-	PR c++/24470:
-	* dwarf2read.c (process_structure_scope): Handle case where type
-	has template parameters but no symbol was created.
-
-2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Chris January  <chris.january@arm.com>
-
-	* f-typeprint.c (f_type_print_base): Print 'allocatable' type
-	qualifier.
-	* gdbtypes.h (TYPE_IS_ALLOCATABLE): Define.
-
-2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* f-typeprint.c (f_print_type): Update rules for printing
-	whitespace.
-	(f_type_print_varspec_suffix): Likewise.
-
-2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Chris January  <chris.january@arm.com>
-
-	* f-typeprint.c (f_type_print_varspec_suffix): Handle printing
-	function arguments.
-
-2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* f-lang.c (build_fortran_types): Change name of void type to
-	lower case.
-	* f-typeprint.c (f_type_print_base): Print the name of the void
-	type, rather than a fixed string.
-	* f-valprint.c (f_decorations): Use lower case void string.
-
-2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Chris January  <chris.january@arm.com>
-
-	* dwarf2read.c (dwarf2_init_complex_target_type): Use different
-	types for Fortran.
-
-2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Chris January  <chris.january@arm.com>
-	    David Lecomber  <david.lecomber@arm.com>
-
-	* f-exp.y (BINOP_INTRINSIC): New token.
-	(exp): New parser rule handling BINOP_INTRINSIC.
-	(f77_keywords): Add new builtin procedures.
-	* f-lang.c (evaluate_subexp_f): Handle BINOP_MOD, UNOP_FORTRAN_CEILING,
-	UNOP_FORTRAN_FLOOR, BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
-	(operator_length_f): Handle UNOP_FORTRAN_CEILING,
-	UNOP_FORTRAN_FLOOR, BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
-	(print_unop_subexp_f): New function.
-	(print_binop_subexp_f): New function.
-	(print_subexp_f): Handle UNOP_FORTRAN_CEILING, UNOP_FORTRAN_FLOOR,
-	BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
-	(dump_subexp_body_f): Likewise.
-	(operator_check_f): Likewise.
-	* fortran-operator.def: Add UNOP_FORTRAN_CEILING, UNOP_FORTRAN_FLOOR,
-	BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX
-
-2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/expprint.c (dump_subexp_body_standard): Remove use of
-	UNOP_KIND.
-	* gdb/expression.h (exp_opcode): Include 'fortran-operator.def'.
-	* gdb/f-exp.y (exp): Rename UNOP_KIND to UNOP_FORTRAN_KIND.
-	* gdb/f-lang.c (evaluate_subexp_f): Likewise.
-	(operator_length_f): New fuction.
-	(print_subexp_f): New function.
-	(op_name_f): New function.
-	(dump_subexp_body_f): New function.
-	(operator_check_f): New function.
-	(exp_descriptor_f): Replace standard expression handling functions
-	with new functions.
-	* gdb/fortran-operator.def: New file.
-	* gdb/parse.c (operator_length_standard): Remove use of UNOP_KIND.
-	* gdb/std-operator.def: Remove UNOP_KIND.
-
-2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* std-operator.def: Remove unbalanced, stray double quote
-	character.
-
-2019-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Chris January  <chris.january@arm.com>
-	    Daniel Everett  <daniel.everett@arm.com>
-	    Nick Forrington  <nick.forrington@arm.com>
-	    Richard Bunt  <richard.bunt@arm.com>
-
-	* cp-valprint.c (cp_print_value_fields): Allow an additional level
-	of depth when printing anonymous structs or unions.
-	* guile/scm-pretty-print.c (gdbscm_apply_val_pretty_printer):
-	Don't print either the top-level value, or the children if the
-	max-depth is exceeded.
-	(ppscm_print_children): When printing the key of a map, allow one
-	extra level of depth.
-	* python/py-prettyprint.c (gdbpy_apply_val_pretty_printer): Don't
-	print either the top-level value, or the children if the max-depth
-	is exceeded.
-	(print_children): When printing the key of a map, allow one extra
-	level of depth.
-	* python/py-value.c (valpy_format_string): Add max_depth keyword.
-	* valprint.c: (PRINT_MAX_DEPTH_DEFAULT): Define.
-	(user_print_options): Initialise max_depth field.
-	(val_print_scalar_or_string_type_p): New function.
-	(val_print): Check to see if the max depth has been reached.
-	(val_print_check_max_depth): Define new function.
-	(show_print_max_depth): New function.
-	(_initialize_valprint): Add 'print max-depth' option.
-	* valprint.h (struct value_print_options) <max_depth>: New field.
-	(val_print_check_max_depth): Declare new function.
-	* NEWS: Document new feature.
-
-2019-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* ada-lang.c (ada_language_defn): Initialise new field.
-	* c-lang.c (c_is_string_type_p): New function.
-	(c_language_defn): Initialise new field.
-	(cplus_language_defn): Initialise new field.
-	(asm_language_defn): Initialise new field.
-	(minimal_language_defn): Initialise new field.
-	* c-lang.h (c_is_string_type_p): Declare new function.
-	* d-lang.c (d_language_defn): Initialise new field.
-	* f-lang.c (f_is_string_type_p): New function.
-	(f_language_defn): Initialise new field.
-	* go-lang.c (go_is_string_type_p): New function.
-	(go_language_defn): Initialise new field.
-	* language.c (default_is_string_type_p): New function.
-	(unknown_language_defn): Initialise new field.
-	(auto_language_defn): Initialise new field.
-	* language.h (struct language_defn) <la_is_string_type_p>: New
-	member variable.
-	(default_is_string_type_p): Declare new function.
-	* m2-lang.c (m2_language_defn): Initialise new field.
-	* objc-lang.c (objc_language_defn): Initialise new field.
-	* opencl-lang.c (opencl_language_defn): Initialise new field.
-	* p-lang.c (pascal_is_string_type_p): New function.
-	(pascal_language_defn): Initialise new field.
-	* rust-lang.c (rust_is_string_type_p): New function.
-	(rust_language_defn): Initialise new field.
-
-2019-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* language.h (struct language_defn) <la_struct_too_deep_ellipsis>:
-	New field.
-	* ada-lang.c (ada_language_defn): Initialise new field.
-	* c-lang.c (c_language_defn): Likewise.
-	(cplus_language_defn): Likewise.
-	(asm_language_defn): Likewise.
-	(minimal_language_defn): Likewise.
-	* d-lang.c (d_language_defn): Likewise.
-	* f-lang.c (f_language_defn): Likewise.
-	* go-lang.c (go_language_defn): Likewise.
-	* language.c (unknown_language_defn): Likewise.
-	(auto_language_defn): Likewise.
-	* m2-lang.c (m2_language_defn): Likewise.
-	* objc-lang.c (objc_language_defn): Likewise.
-	* opencl-lang.c (opencl_language_defn): Likewise.
-	* p-lang.c (pascal_language_defn): Likewise.
-	* rust-lang.c (rust_language_defn): Likewise.
-
-2019-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* ada-lang.c (ada_is_character_type): Change return type to bool.
-	(ada_is_string_type): Likewise.
-	* ada-lang.h (ada_is_character_type): Update declaration
-	(ada_is_string_type): Likewise.
-
-2019-04-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	Support style in 'frame|thread apply'
-
-	* gdbcmd.h (execute_command_to_string): New term_out parameter.
-	* record.c (record_start, record_stop): Update callers of
-	execute_command_to_string with false.
-	* guile/guile.c (gdbscm_execute_gdb_command): Likewise.
-	* ui-file.h (class ui_file): New term_out and can_emit_style_escape
-	methods.
-	(class string_file): New constructor with term_out parameter.
-	Override methods term_out and can_emit_style_escape.  New member
-	term_out.
-	(class stdio_file): Override can_emit_style_escape.
-	(class tee_file): Override term_out and can_emit_style_escape.
-	* utils.h (can_emit_style_escape): Remove.
-	* utils.c (can_emit_style_escape): Likewise.
-	Update all callers of can_emit_style_escape (SOMESTREAM) to
-	SOMESTREAM->can_emit_style_escape.
-	* source-cache.c (source_cache::get_source_lines): Likewise.
-	* stack.c (frame_apply_command_count): Call execute_command_to_string
-	passing the term_out characteristic of the current gdb_stdout.
-	* thread.c (thr_try_catch_cmd): Likewise.
-	* top.c (execute_command_to_string): pass term_out parameter
-	to construct the string_file for the command output.
-	* ui-file.c (term_cli_styling): New function (most code moved
-	from utils.c can_emit_style_escape).
-	(string_file::string_file, string_file::can_emit_style_escape,
-	stdio_file::can_emit_style_escape, tee_file::term_out,
-	tee_file::can_emit_style_escape): New functions.
-
-2019-04-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* NEWS: Mention the new set|show may-call-functions.
-	* infcall.c (may_call_functions_p): New variable.
-	(show_may_call_functions_p): New function.
-	(call_function_by_hand_dummy): Throws an error if not
-	may-call-functions.
-	(_initialize_infcall): Call add_setshow_boolean_cmd for
-	may-call-functions.
-
-2019-04-25  Keith Seitz  <keiths@redhat.com>
-
-	PR c++/24367
-	* cp-support.c (inspect_type): Don't attempt substitutions
-	of symbol with the same name.
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-04-25  Tom Tromey  <tromey@adacore.com>
+	* ppc-nbsd-nat.c: Define _KERNTYPES to get the declaration of
+	register_t.
 
-	PR gdb/24475:
-	* event-top.c (gdb_rl_callback_handler): Make "gdb_rl_expt"
-	static.
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
 
-2019-04-25  Tom Tromey  <tromey@adacore.com>
+	* vax-bsd-nat.c: Define _KERNTYPES to get the declaration of
+	register_t.
 
-	* xml-support.c (struct gdb_xml_parser) <set_error>: Take an
-	rvalue reference.
-	(gdb_xml_start_element_wrapper, gdb_xml_end_element_wrapper)
-	(gdb_xml_parser::parse): Use std::move.
-	* python/python-internal.h (gdbpy_convert_exception): Take a const
-	reference.
-	* python/py-value.c (valpy_getitem, valpy_nonzero): Use
-	std::move.
-	* python/py-utils.c (gdbpy_convert_exception): Take a const
-	reference.
-	* python/py-inferior.c (infpy_write_memory, infpy_search_memory):
-	Use std::move.
-	* python/py-breakpoint.c (bppy_set_condition, bppy_set_commands):
-	Use std::move.
-	* mi/mi-main.c (mi_print_exception): Take a const reference.
-	* main.c (handle_command_errors): Take a const reference.
-	* linespec.c (parse_linespec): Use std::move.
-	* infcall.c (run_inferior_call): Use std::move.
-	(call_function_by_hand_dummy): Use std::move.
-	* exec.c (try_open_exec_file): Use std::move.
-	* exceptions.h (exception_print, exception_fprintf)
-	(exception_print_same): Update.
-	* exceptions.c (print_exception, exception_print)
-	(exception_fprintf, exception_print_same): Change parameters to
-	const reference.
-	* event-top.c (gdb_rl_callback_read_char_wrapper): Update.
-	* common/new-op.c: Use std::move.
-	* common/common-exceptions.h (struct gdb_exception): Add move
-	constructor.
-	(struct gdb_exception_error, struct gdb_exception_quit, struct
-	gdb_quit_bad_alloc): Change constructor to move constructor.
-	(throw_exception): Change parameter to rvalue reference.
-	* common/common-exceptions.c (throw_exception): Take rvalue
-	reference.
-	* cli/cli-interp.c (safe_execute_command): Use std::move.
-	* breakpoint.c (insert_bp_location, location_to_sals): Use
-	std::move.
-
-2019-04-25  Tom Tromey  <tromey@adacore.com>
-
-	* guile/scm-exception.c (gdbscm_scm_from_gdb_exception)
-	(gdbscm_throw_gdb_exception): Take a gdbscm_gdb_exception.
-	* guile/scm-block.c, guile/scm-breakpoint.c, guile/scm-cmd.c,
-	guile/scm-disasm.c, guile/scm-frame.c, guile/scm-lazy-string.c,
-	guile/scm-math.c, guile/scm-param.c, guile/scm-ports.c,
-	guile/scm-symbol.c, guile/scm-symtab.c, guile/scm-type.c,
-	guile/scm-value.c: Use unpack.
-	* guile/guile-internal.h (gdbscm_scm_from_gdb_exception): Take a
-	gdbscm_gdb_exception.
-	(gdbscm_throw_gdb_exception): Likewise.
-	(struct gdbscm_gdb_exception): New.
-	(unpack): New function.
-	(gdbscm_wrap): Use unpack.
-
-2019-04-25  Tom Tromey  <tromey@adacore.com>
-
-	* event-top.c (gdb_rl_callback_read_char_wrapper_noexcept)
-	(gdb_rl_callback_handler): Use std::move.
-	* common/common-exceptions.h (struct gdb_exception): Add move
-	assignment operator.
-	(throw_exception_sjlj): Change "exception" to const reference.
-	* common/common-exceptions.c (exceptions_state_mc_catch): Update.
-	(throw_exception_sjlj): Change "exception" to const reference.
-
-2019-04-25  Tom Tromey  <tromey@adacore.com>
-
-	* xml-support.c (gdb_xml_parser::gdb_xml_parser): Update.
-	* python/py-value.c (valpy_getitem, valpy_nonzero): Update.
-	* python/py-inferior.c (infpy_write_memory, infpy_search_memory):
-	Update.
-	* python/py-breakpoint.c (bppy_set_condition, bppy_set_commands):
-	Update.
-	* mi/mi-interp.c (mi_interp::exec): Update.
-	* linespec.c (parse_linespec): Update.
-	* infcall.c (run_inferior_call): Update.
-	* guile/scm-value.c (gdbscm_value_to_lazy_string): Update.
-	* guile/scm-symbol.c (gdbscm_lookup_symbol)
-	(gdbscm_lookup_global_symbol): Update.
-	* guile/scm-param.c (gdbscm_parameter_value): Update.
-	* guile/scm-frame.c (gdbscm_frame_read_register)
-	(gdbscm_frame_read_var): Update.
-	* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Update.
-	* exec.c (try_open_exec_file): Update.
-	* event-top.c (gdb_rl_callback_read_char_wrapper_noexcept)
-	(gdb_rl_callback_handler): Update.
-	* common/common-exceptions.h (exception_none): Don't declare.
-	* common/common-exceptions.c (exception_none): Don't define.
-	(struct catcher) <exception>: Update.
-	* cli/cli-interp.c (safe_execute_command): Update.
-	* breakpoint.c (insert_bp_location, location_to_sals): Update.
-
-2019-04-25  Ali Tamur  <tamur@google.com>
-
-	* dwarf2read.c (skip_one_die): Add DW_FORM_strx.
-	(read_attribute_value): Likewise.
-	(dwarf2_read_addr_index): Update comment.
-	(read_str_index): Add DW_FORM_strx.
-	(dwarf2_string_attr): Likewise.
-	(dwarf2_const_value_attr): Likewise.
-	(dump_die_shallow): Likewise.
-	(dwarf2_fetch_constant_bytes): Likewise.
-	(skip_form_bytes): Likewise.
-	* testsuite/lib/dwarf.exp (_handle_DW_FORM): Add DW_FORM_strx.
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-2019-04-25  Sergio Durigan Junior  <sergiodj@redhat.com>
+	* value.h (val_print): Don't declare.
+	* valprint.h (val_print_array_elements)
+	(val_print_scalar_formatted, generic_val_print): Don't declare.
+	* valprint.c (generic_val_print_array): Take a struct value.
+	(generic_val_print_ptr, generic_val_print_memberptr)
+	(generic_val_print_bool, generic_val_print_int)
+	(generic_val_print_char, generic_val_print_complex)
+	(generic_val_print): Remove.
+	(generic_value_print): Update.
+	(do_val_print): Remove unused parameters.  Don't call
+	la_val_print.
+	(val_print): Remove.
+	(common_val_print): Update.  Don't call value_check_printable.
+	(val_print_scalar_formatted, val_print_array_elements): Remove.
+	* rust-lang.c (rust_val_print): Remove.
+	(rust_language_defn): Update.
+	* p-valprint.c (pascal_val_print): Remove.
+	(pascal_value_print_inner): Update.
+	(pascal_object_print_val_fields, pascal_object_print_val):
+	Remove.
+	(pascal_object_print_static_field): Update.
+	* p-lang.h (pascal_val_print): Don't declare.
+	* p-lang.c (pascal_language_defn): Update.
+	* opencl-lang.c (opencl_language_defn): Update.
+	* objc-lang.c (objc_language_defn): Update.
+	* m2-valprint.c (m2_print_unbounded_array, m2_val_print): Remove.
+	* m2-lang.h (m2_val_print): Don't declare.
+	* m2-lang.c (m2_language_defn): Update.
+	* language.h (struct language_defn) <la_val_print>: Remove.
+	* language.c (unk_lang_value_print_inner): Rename.  Change
+	argument types.
+	(unknown_language_defn, auto_language_defn): Update.
+	* go-valprint.c (go_val_print): Remove.
+	* go-lang.h (go_val_print): Don't declare.
+	* go-lang.c (go_language_defn): Update.
+	* f-valprint.c (f_val_print): Remove.
+	* f-lang.h (f_value_print): Don't declare.
+	* f-lang.c (f_language_defn): Update.
+	* d-valprint.c (d_val_print): Remove.
+	* d-lang.h (d_value_print): Don't declare.
+	* d-lang.c (d_language_defn): Update.
+	* cp-valprint.c (cp_print_value_fields)
+	(cp_print_value_fields_rtti, cp_print_value): Remove.
+	(cp_print_static_field): Update.
+	* c-valprint.c (c_val_print_array, c_val_print_ptr)
+	(c_val_print_struct, c_val_print_union, c_val_print_int)
+	(c_val_print_memberptr, c_val_print): Remove.
+	* c-lang.h (c_val_print_array, cp_print_value_fields)
+	(cp_print_value_fields_rtti): Don't declare.
+	* c-lang.c (c_language_defn, cplus_language_defn)
+	(asm_language_defn, minimal_language_defn): Update.
+	* ada-valprint.c (ada_val_print_ptr, ada_val_print_num): Remove.
+	(ada_val_print_enum): Take a struct value.
+	(ada_val_print_flt, ada_val_print_array, ada_val_print_1)
+	(ada_val_print): Remove.
+	(ada_value_print_1): Update.
+	(printable_val_type): Remove.
+	* ada-lang.h (ada_val_print): Don't declare.
+	* ada-lang.c (ada_language_defn): Update.
 
-	PR corefiles/11608
-	PR corefiles/18187
-	* linux-tdep.c (dump_mapping_p): Add new parameters ADDR and
-	OFFSET.  Verify if current mapping contains an ELF header.
-	(linux_find_memory_regions_full): Adjust call to
-	dump_mapping_p.
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-2019-04-25  Sandra Loosemore  <sandra@codesourcery.com>
-	    Kang Li <kanglictf@gmail.com>
+	* valprint.c (do_val_print): Update.
+	* python/python-internal.h (gdbpy_apply_val_pretty_printer): Take
+	a struct value.
+	(value_to_value_object_no_release): Declare.
+	* python/py-value.c (value_to_value_object_no_release): New
+	function.
+	* python/py-prettyprint.c (gdbpy_apply_val_pretty_printer): Take a
+	struct value.
+	* guile/scm-value.c (vlscm_scm_from_value_no_release): New
+	function.
+	* guile/scm-pretty-print.c (gdbscm_apply_val_pretty_printer): Take
+	a struct value.
+	* guile/guile-internal.h (vlscm_scm_from_value_no_release):
+	Declare.
+	(gdbscm_apply_val_pretty_printer): Take a struct value.
+	* extension.h (apply_ext_lang_val_pretty_printer): Take a struct
+	value.
+	* extension.c (apply_ext_lang_val_pretty_printer): Take a struct
+	value.
+	* extension-priv.h (struct extension_language_ops)
+	<apply_val_pretty_printer>: Take a struct value.
+	* cp-valprint.c (cp_print_value): Create a struct value.
+	(cp_print_value): Update.
 
-	PR gdb/21600
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* dwarf2-frame.c (read_initial_length): Be consistent about using
-	unsigned representation of length.
-	(decode_frame_entry_1): Likewise.  Check for wraparound of
-	end pointer as well as buffer overflow.
+	* ada-valprint.c (print_field_values): Call common_val_print.
 
-2019-04-24  Sergio Durigan Junior  <sergiodj@redhat.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* aarch64-tdep.c (aarch64_gdbarch_init): Use "pulongest" to print
-	"vq".
+	* ada-valprint.c (val_print_packed_array_elements): Remove
+	bitoffset and val parameters.  Call common_val_print.
+	(ada_val_print_string): Remove offset, address, and original_value
+	parameters.
+	(ada_val_print_array): Update.
+	(ada_value_print_array): New function.
+	(ada_value_print_1): Call it.
 
-2019-04-24  Tom Tromey  <tromey@adacore.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* amd64-tdep.c (amd64_has_unaligned_fields): Ignore bitfields.
+	* ada-valprint.c (ada_value_print): Use common_val_print.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* s12z-tdep.c (s12z_unwind_pc): Delete.
-	(s12z_unwind_sp): Delete.
-	(s12z_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* ada-valprint.c (ada_val_print_ref): Use common_val_print.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* rl78-tdep.c (rl78_unwind_sp): Delete.
-	(rl78_gdbarch_init): Don't register deleted function with gdbarch.
+	* ada-valprint.c (ada_value_print_num): New function.
+	(ada_value_print_1): Use it.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* xstormy16-tdep.c (xstormy16_unwind_sp): Delete.
-	(xstormy16_unwind_pc): Delete.
-	(xstormy16_dummy_id): Delete.
-	(xstormy16_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* ada-valprint.c (ada_value_print_1) <TYPE_CODE_FLT>: Rewrite.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* vax-tdep.c (vax_unwind_pc): Delete.
-	(vax_gdbarch_init): Don't register deleted function with gdbarch.
+	* ada-valprint.c (ada_value_print_ptr): New function.
+	(ada_value_print_1): Use it.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* v850-tdep.c (v850_unwind_sp): Delete.
-	(v850_unwind_pc): Delete.
-	(v850_dummy_id): Delete.
-	(v850_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* ada-valprint.c (ada_val_print_gnat_array): Take a struct value;
+	call common_val_print.
+	(ada_val_print_1): Update.
+	(ada_value_print_1): New function.
+	(ada_value_print_inner): Rewrite.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* tilegx-tdep.c (tilegx_unwind_sp): Delete.
-	(tilegx_unwind_pc): Delete.
-	(tilegx_unwind_dummy_id): Delete.
-	(tilegx_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* cp-valprint.c (cp_print_value_fields): Update.
+	(cp_print_value): New function.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* tic6x-tdep.c (tic6x_unwind_sp): Delete.
-	(tic6x_dummy_id): Delete.
-	(tic6x_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* m2-valprint.c (m2_value_print_inner): Use
+	cp_print_value_fields.
+	* cp-valprint.c	(cp_print_value_fields): New function.
+	* c-valprint.c (c_value_print_struct): New function.
+	(c_value_print_inner): Use c_value_print_struct.
+	* c-lang.h (cp_print_value_fields): Declare.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* sparc-tdep.c (sparc_unwind_pc): Delete.
-	(sparc32_gdbarch_init): Don't register deleted function with
-	gdbarch.
+	* c-valprint.c (c_value_print_array): New function.
+	(c_value_print_inner): Use it.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* sh-tdep.c (sh_unwind_sp): Delete.
-	(sh_unwind_pc): Delete.
-	(sh_dummy_id): Delete.
-	(sh_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* c-valprint.c (c_value_print_memberptr): New function.
+	(c_value_print_inner): Use it.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* score-tdep.c (score_unwind_sp): Delete.
-	(score_unwind_pc): Delete.
-	(score_dummy_id): Delete.
-	(score_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* c-valprint.c (c_value_print_int): New function.
+	(c_value_print_inner): Use it.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* rx-tdep.c (rx_unwind_pc): Delete.
-	(rx_unwind_sp): Delete.
-	(rx_dummy_id): Delete.
-	(rx_gdbarch_init): Don't register deleted functions with
-	gdbarch.  Update comment.
+	* c-valprint.c (c_value_print_ptr): New function.
+	(c_value_print_inner): Use it.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* rs6000-tdep.c (rs6000_unwind_pc): Delete.
-	(rs6000_dummy_id): Delete.
-	(rs6000_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* c-valprint.c (c_value_print_inner): Rewrite.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* or1k-tdep.c (or1k_dummy_id): Delete.
-	(or1k_gdbarch_init): Don't register deleted function with gdbarch.
+	* valprint.c (generic_value_print_complex): New function.
+	(generic_value_print): Use it.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* nios2-tdep.c (nios2_dummy_id): Delete.
-	(nios2_unwind_sp): Delete.
-	(nios2_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* valprint.c (generic_val_print_float): Don't call
+	val_print_scalar_formatted.
+	(generic_val_print, generic_value_print): Update.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* nds32-tdep.c (nds32_dummy_id): Delete.
-	(nds32_unwind_pc): Delete.
-	(nds32_unwind_sp): Delete.
-	(nds32_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* valprint.c (generic_value_print_char): New function
+	(generic_value_print): Use it.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* msp430-tdep.c (msp430_unwind_pc): Delete.
-	(msp430_unwind_sp): Delete.
-	(msp430_dummy_id): Delete.
-	(msp430_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* valprint.c (generic_value_print_int): New function.
+	(generic_value_print): Use it.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* moxie-tdep.c (moxie_unwind_sp): Delete.
-	(moxie_unwind_pc): Delete.
-	(moxie_dummy_id): Delete.
-	(moxie_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* valprint.c (generic_value_print_bool): New function.
+	(generic_value_print): Use it.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* mn10300-tdep.c (mn10300_dummy_id): Delete.
-	(mn10300_unwind_pc): Delete.
-	(mn10300_unwind_sp): Delete.
-	(mn10300_push_dummy_call): Use gdbarch_unwind_sp not
-	mn10300_unwind_sp.
-	(mn10300_frame_unwind_init): Don't register deleted functions with
-	gdbarch.
+	* valprint.c (generic_val_print_func): Simplify.
+	(generic_val_print, generic_value_print): Update.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* mep-tdep.c (mep_unwind_pc): Delete.
-	(mep_unwind_sp): Delete.
-	(mep_dummy_id): Delete.
-	(mep_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* valprint.c (generic_val_print_flags): Remove.
+	(generic_val_print, generic_value_print): Update.
+	(val_print_type_code_flags): Add original_value parameter.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* m68hc11-tdep.c (m68hc11_unwind_pc): Delete.
-	(m68hc11_unwind_sp): Delete.
-	(m68hc11_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* valprint.c (generic_val_print): Update.
+	(generic_value_print): Update.
+	* valprint.c (generic_val_print_enum): Don't call
+	val_print_scalar_formatted.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* m32r-tdep.c (m32r_unwind_sp): Delete.
-	(m32r_unwind_pc): Delete.
-	(m32r_dummy_id): Delete.
-	(m32r_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* valprint.c (generic_value_print): Call generic_value_print_ptr.
+	* valprint.c (generic_value_print_ptr): New function.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* m32c-tdep.c (m32c_unwind_pc): Delete.
-	(m32c_unwind_sp): Delete.
-	(m32c_dummy_id): Delete.
-	(m32c_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* valprint.c (generic_value_print): Rewrite.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* gdb/lm32-tdep.c (lm32_unwind_sp): Delete.
-	(lm32_unwind_pc): Delete.
-	(lm32_dummy_id): Delete.
-	(lm32_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* p-valprint.c (pascal_object_print_value_fields)
+	(pascal_object_print_value): New functions.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* gdb/iq2000-tdep.c (iq2000_unwind_sp): Delete.
-	(iq2000_unwind_pc): Delete.
-	(iq2000_dummy_id): Delete.
-	(iq2000_gdbarch_init): Don't register deleted functions with
-	gdbarch.
+	* p-valprint.c (pascal_value_print_inner): Rewrite.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* nds32-tdep.c (nds32_type_align): Delete.
-	(nds32_push_dummy_call): Use type_align instead.
+	* f-valprint.c (f_value_print_innner): Rewrite.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* arm-tdep.c (arm_type_align): Only handle vector override case.
-	(arm_push_dummy_call): Use type_align.
-	(arm_gdbarch_init): Register arm_type_align gdbarch function.
+	* m2-valprint.c (m2_print_unbounded_array): New overload.
+	(m2_print_unbounded_array): Update.
+	(m2_print_array_contents): Take a struct value.
+	(m2_value_print_inner): Rewrite.
 
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* aarch64-tdep.c (aarch64_type_align): Only handle vector override
-	case.
-	(pass_on_stack): Use type_align.
-	(aarch64_gdbarch_init): Register aarch64_type_align gdbarch
-	function.
+	* d-valprint.c (dynamic_array_type): Call d_value_print_inner.
+	(d_value_print_inner): New function.
+	* d-lang.h (d_value_print_inner): Declare.
+	* d-lang.c (d_language_defn): Use d_value_print_inner.
 
-2019-04-23  Tom Tromey  <tromey@adacore.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* dwarf2read.c (line_header::file_name_at): Remove unused
-	overload.
+	* go-valprint.c (go_value_print_inner): New function.
+	* go-lang.h (go_value_print_inner): Declare.
+	* go-lang.c (go_language_defn): Use go_value_print_inner.
 
-2019-04-23  Tom de Vries  <tdevries@suse.de>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	PR gdb/24438
-	* contrib/cc-with-tweaks.sh: Remove superfluous .alt file after dwz
-	invocation.
-
-
-2019-03-27  Ali Tamur  <tamur@google.com>
-
-	* dwarf2-frame.c(dwarf_expr_executor::get_addr_index): Update comment
-	* dwarf2expr.c(dwarf_expr_context::execute_stack_op): Add DW_OP_addrx
-	* dwarf2expr.h(dwarf_expr_context::offset): Update comment
-	(dwarf_expr_context::get_addr_index): Likewise
-	* dwarf2loc.c(dwarf_evaluate_loc_desc::get_addr_index): Likewise
-	(symbol_needs_eval_context::get_addr_index): Likewise
-	(disassemble_dwarf_expression): Add DW_OP_addrx
-	* dwarf2read.c(attr_value_as_address): Add DW_FORM_addrx
-	(read_cutu_die_from_dwo): Update comment
-	(skip_one_die): Add DW_FORM_addrx
-	(read_attribute_value): Likewise
-	(var_decode_location): Add DW_OP_addrx
-	(dwarf2_const_value_attr): Add DW_FORM_addrx
-	(dump_die_shallow): Likewise
-	(dwarf2_fetch_constant_bytes): Likewise
-	(decode_locdesc): Add DW_OP_addrx
-	(skip_form_bytes): Add DW_FORM_addrx
-
-2019-04-22  Ali Tamur  <tamur@google.com>
-
-	* MAINTAINERS (Write After Approval): Add self.
-
-2019-04-22  Simon Marchi  <simon.marchi@efficios.com>
-
-	* solib-svr4.c (get_svr4_info): Add pspace parameter.
-	(svr4_keep_data_in_core): Pass current_program_space to get_svr4_info.
-	(open_symbol_file_object): Likewise.
-	(svr4_default_sos): Add info parameter.
-	(svr4_read_so_list): Likewise.
-	(svr4_current_sos_direct): Adjust functions calls to pass down
-	info.
-	(svr4_current_sos_1): Add info parameter.
-	(svr4_current_sos): Call get_svr4_info, pass info down to
-	svr4_current_sos_1.
-	(svr4_fetch_objfile_link_map): Pass objfile->pspace to
-	get_svr4_info.
-	(svr4_in_dynsym_resolve_code): Pass current_program_space to
-	get_svr4_info.
-	(probes_table_htab_remove_objfile_probes): Pass objfile->pspace
-	to get_svr4_info.
-	(probes_table_remove_objfile_probes): Likewise.
-	(register_solib_event_probe): Add info parameter.
-	(solist_update_incremental): Pass info parameter down to
-	svr4_read_so_list.
-	(disable_probes_interface): Add info parameter.
-	(svr4_handle_solib_event): Pass current_program_space to
-	get_svr4_info.  Adjust disable_probes_interface cleanup.
-	(svr4_create_probe_breakpoints): Add info parameter, pass it
-	down to register_solib_event_probe.
-	(svr4_create_solib_event_breakpoints): Add info parameter,
-	pass it down to svr4_create_probe_breakpoints.
-	(enable_break): Pass info down to
-	svr4_create_solib_event_breakpoints.
-	(svr4_solib_create_inferior_hook): Pass current_program_space to
-	get_svr4_info.
-	(svr4_clear_solib): Likewise.
-
-2019-04-22  Pedro Alves  <palves@redhat.com>
-
-	* solib-svr4.c (svr4_free_objfile_observer): New.
-	(probe_and_action::objfile): New field.
-	(probes_table_htab_remove_objfile_probes)
-	(probes_table_remove_objfile_probes): New functions.
-	(register_solib_event_probe): Add 'objfile' parameter.  Store it
-	in the new probe_and_action.  Don't store the probe in 'lookup'.
-	(svr4_create_probe_breakpoints): Pass objfile to
-	register_solib_event_probe.
-	(_initialize_svr4_solib): Register a free_objfile observer.
-
-2019-04-19  Tom Tromey  <tom@tromey.com>
-
-	* common/queue.h: Remove.
-
-2019-04-19  Tom Tromey  <tom@tromey.com>
-
-	* event-loop.c: Don't include "common/queue.h".
-
-2019-04-19  Tom Tromey  <tom@tromey.com>
-
-	* remote.c (remote_target): Use delete.
-	* remote-notif.h: Include <list>, not "common/queue.h".
-	(notif_client_p): Remove typedef.
-	(remote_notif_state): Add constructor, destructor, initializer.
-	<notif_queue>: Now a std::list.
-	(remote_notif_state_xfree): Don't declare.
-	* remote-notif.c (remote_notif_process, handle_notification)
-	(remote_notif_state_allocate): Update.
-	(~remote_notif_state): Rename from remote_notif_state_xfree.
-
-2019-04-19  Tom Tromey  <tom@tromey.com>
-
-	* symfile.c (reread_symbols): Update.
-	* objfiles.c (objfile_register_static_link)
-	(objfile_lookup_static_link): Update
-	(~objfile) Don't delete static_links.
-	* objfiles.h (struct objfile) <static_links>: Now an htab_up.
-
-2019-04-19  Tom Tromey  <tom@tromey.com>
-
-	* type-stack.h (struct type_stack) <insert>: Constify string.
-	* type-stack.c (type_stack::insert): Constify string.
-	* gdbtypes.h (lookup_template_type): Update.
-	(address_space_name_to_int): Update.
-	* gdbtypes.c (address_space_name_to_int): Make space_identifier
-	const.
-	(lookup_template_type): Make name const.
-	* c-exp.y: Update rules.
-	(lex_one_token, classify_name, classify_inner_name)
-	(c_print_token): Update.
-	* p-exp.y: Update rules.
-	(yylex): Update.
-	* f-exp.y: Update rules.
-	(yylex): Update.
-	* d-exp.y: Update rules.
-	(lex_one_token, classify_name, classify_inner_name): Update.
-	* parse.c (write_dollar_variable, copy_name): Return std::string.
-	* parser-defs.h (copy_name): Change return type.
-	* m2-exp.y: Update rules.
-	(yylex): Update.
-	* go-exp.y (lex_one_token): Update.
-	Update rules.
-	(classify_unsafe_function, classify_packaged_name)
-	(classify_name, yylex): Update.
+	* rust-lang.c (val_print_struct, rust_print_enum): Use the value
+	API.
+	(rust_val_print): Rewrite.
+	(rust_value_print_inner): New function, from rust_val_print.
+	(rust_language_defn): Use rust_value_print_inner.
 
-2019-04-19  Sergei Trofimovich <siarheit@google.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* configure.ac: add --enable-source-highlight switch.
-	* configure: Regenerate.
-	* top.c (print_gdb_version): plumb --enable-source-highlight
-	status to "show configuration".
+	* ada-valprint.c (ada_value_print_inner): New function.
+	* ada-lang.h (ada_value_print_inner): Declare.
+	* ada-lang.c (ada_language_defn): Use ada_value_print_inner.
 
-2019-04-19  Tom Tromey  <tromey@adacore.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* ada-lang.c (ada_is_variant_part, ada_to_fixed_type_1):
-	Check ADA_TYPE_P.
-	(empty_record, ada_template_to_fixed_record_type_1)
-	(template_to_static_fixed_type)
-	(to_record_with_fixed_variant_part): Use INIT_NONE_SPECIFIC.
-	* cp-abi.c (value_rtti_type): Check HAVE_CPLUS_STRUCT.
-	* gdbtypes.h (INIT_NONE_SPECIFIC, ADA_TYPE_P): New
-	macros.
+	* f-valprint.c (f_value_print_innner): New function.
+	* f-lang.h (f_value_print_innner): Declare.
+	* f-lang.c (f_language_defn): Use f_value_print_innner.
 
-2019-04-19  Ilya Yu. Malakhov  <malakhov@mcst.ru>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	PR symtab/24423:
-	* source.c (print_source_lines_base): Advance "iter" when a
-	control character is seen.
+	* p-valprint.c (pascal_value_print_inner): New function.
+	* p-lang.h (pascal_value_print_inner): Declare.
+	* p-lang.c (pascal_language_defn): Use pascal_value_print_inner.
 
-2019-04-19  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* inferior.h (struct infcall_suspend_state_deleter):
-	Catch exception in destructor to avoid crash.
+	* m2-valprint.c (m2_value_print_inner): New function.
+	* m2-lang.h (m2_value_print_inner): Declare.
+	* m2-lang.c (m2_language_defn): Use m2_value_print_inner.
 
-2019-04-19  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* cli/cli-cmds.c (_initialize_cli_cmds): Move "shell" "!" alias
-	close to the add_com "shell".
+	* opencl-lang.c (opencl_language_defn): Use c_value_print_inner.
+	* objc-lang.c (objc_language_defn): Use c_value_print_inner.
+	* c-valprint.c (c_value_print_inner): New function.
+	* c-lang.h (c_value_print_inner): Declare.
+	* c-lang.c (c_language_defn, cplus_language_defn)
+	(asm_language_defn, minimal_language_defn): Use
+	c_value_print_inner.
 
-2019-04-18  Tom Tromey  <tromey@adacore.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* process-stratum-target.h (class process_stratum_target)
-	<stratum>: Add "final".
+	* p-valprint.c (pascal_object_print_value_fields): Now static.
+	* p-lang.h (pascal_object_print_value_fields): Don't declare.
 
-2019-04-17  Tom Tromey  <tromey@adacore.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* dwarf2read.c (dwarf2_init_complex_target_type): Check "tt"
-	against nullptr before use.
+	* c-valprint.c (c_val_print_array): Simplify.
 
-2019-04-17  Alan Hayward  <alan.hayward@arm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* nat/linux-waitpid.c (linux_debug): Call debug_vprintf.
+	* valprint.c (value_print_array_elements): New function.
+	* valprint.h (value_print_array_elements): Declare.
 
-2019-04-17  Jim Wilson  <jimw@sifive.com>
-	    Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* riscv-tdep.c (riscv_breakpoint_kind_from_pc): Hanndle case where
-	code read might fail, assume 4-byte breakpoint in that case.
+	* printcmd.c (print_formatted): Use value_print_scalar_formatted.
+	* mips-tdep.c (mips_print_register): Use
+	value_print_scalar_formatted.
 
-2019-04-15  Leszek Swirski  <leszeks@google.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* amd64-tdep.c (amd64_classify_aggregate): Use cp_pass_by_reference
-	rather than a hand-rolled POD check when checking for forced MEMORY
-	classification.
+	* valprint.h (value_print_scalar_formatted): Declare.
+	* valprint.c (value_print_scalar_formatted): New function.
 
-2019-04-15  Alan Hayward  <alan.hayward@arm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* aarch64-linux-nat.c (store_sveregs_to_thread): Set vector length.
-	* nat/aarch64-sve-linux-ptrace.c (aarch64_sve_set_vq): New
-	function.
-	(aarch64_sve_regs_copy_to_reg_buf): Remove VG checks.
-	(aarch64_sve_regs_copy_from_reg_buf): Likewise.
-	* nat/aarch64-sve-linux-ptrace.h (aarch64_sve_set_vq): New
-	declaration.
+	* valprint.h (generic_value_print): Declare.
+	* valprint.c (generic_value_print): New function.
 
-2019-04-15  Alan Hayward  <alan.hayward@arm.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* aarch64-linux-nat.c
-	(aarch64_linux_nat_target::thread_architecture): Add override.
-	* aarch64-tdep.c (aarch64_gdbarch_init): Ensure different tdesc for
-	each VQ.
-
-2019-04-15  Alan Hayward  <alan.hayward@arm.com>
-
-	* aarch64-tdep.c (aarch64_gdbarch_init): Move gdbarch lookup.
-
-2019-04-13  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* dwarf2read.c (dwarf2_init_complex_target_type): Handle complex
-	target types of size 96-bits, add some additional comments, and
-	check that the builtin type we found was the correct size.
-
-2019-04-12  Eli Zaretskii  <eliz@gnu.org>
-
-	* utils.c (prompt_for_continue): Don't restore the styling at the
-	end, as applied_style has the wrong value.  This fixes styling in
-	long lists of file names that are interrupted by the "Continue?"
-	prompt.
-
-2019-04-12  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* ada-lang.c (ada_language_defn): Remove use of LANG_MAGIC.
-	* c-lang.c (c_language_defn): Likewise.
-	(cplus_language_defn): Likewise.
-	(asm_language_defn): Likewise.
-	(minimal_language_defn): Likewise.
-	* d-lang.c (d_language_defn): Likewise.
-	* f-lang.c (f_language_defn): Likewise.
-	* go-lang.c (go_language_defn): Likewise.
-	* language.c (unknown_language_defn): Likewise.
-	(auto_language_defn): Likewise.
-	* language.h (struct language_defn): Remove la_magic field.
-	(LANG_MAGIC): Delete.
-	* m2-lang.c (m2_language_defn): Remove use of LANG_MAGIC.
-	* objc-lang.c (objc_language_defn): Likewise.
-	* opencl-lang.c (opencl_language_defn): Likewise.
-	* p-lang.c (pascal_language_defn): Likewise.
-	* rust-lang.c (rust_language_defn): Likewise.
-
-2019-04-11  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* riscv-tdep.c (riscv_type_align): New function.
-	(riscv_type_alignment): Delete.
-	(riscv_arg_location): Use 'type_align'.
-	(riscv_gdbarch_init): Register riscv_type_align gdbarch function.
-
-2019-04-11  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdbtypes.c (type_align): A struct with no non-static fields also
-	has alignment of 1.
-
-2019-04-11  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* riscv-tdep.c (riscv_call_arg_complex_float): Fix offset of first
-	component to 0.
-	(riscv_struct_info::riscv_struct_info): Initialise m_offsets
+	* valprint.c (do_val_print): Call la_value_print_inner, if
+	available.
+	* rust-lang.c (rust_language_defn): Update.
+	* p-lang.c (pascal_language_defn): Update.
+	* opencl-lang.c (opencl_language_defn): Update.
+	* objc-lang.c (objc_language_defn): Update.
+	* m2-lang.c (m2_language_defn): Update.
+	* language.h (struct language_defn) <la_value_print_inner>: New
 	member.
-	(riscv_struct_info::analyse): New implementation using new
-	analyse_inner member function.
-	(riscv_struct_info::field_offset): New member function.
-	(riscv_struct_info::m_offsets): New member variable.
-	(riscv_struct_info::analyse_inner): New private member function,
-	takes the old implementation of riscv_struct_info::analyse but
-	extended to track field offsets.
-	(riscv_call_arg_struct): Update the struct folding special cases
-	to handle cases where empty C++ structs, which are non-zero
-	length, are found.
-	(riscv_arg_location): Initialise the length of each location, a
-	non-zero length now indicates the location is in use.
-	(riscv_push_dummy_call): Allow for the first location having a
-	non-zero offset when setting up arguments.
-	(riscv_return_value): Likewise, but for return values.
-
-2019-04-11  Tom Tromey  <tromey@adacore.com>
-
-	* utils.c (internal_vproblem): Make "msg" const.
-
-2019-04-11  Alan Hayward  <alan.hayward@arm.com>
-
-	* aarch64-tdep.c (aarch64_analyze_prologue_test): Reset saved regs.
-	* trad-frame.c (trad_frame_reset_saved_regs): New function.
-	(trad_frame_alloc_saved_regs): Call trad_frame_reset_saved_regs.
-	* trad-frame.h (trad_frame_reset_saved_regs): New declaration.
+	* language.c (unknown_language_defn, auto_language_defn): Update.
+	* go-lang.c (go_language_defn): Update.
+	* f-lang.c (f_language_defn): Update.
+	* d-lang.c (d_language_defn): Update.
+	* c-lang.c (c_language_defn, cplus_language_defn)
+	(asm_language_defn, minimal_language_defn): Update.
+	* ada-lang.c (ada_language_defn): Update.
 
-2019-04-10  Kevin Buettner  <kevinb@redhat.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* amd64-linux-nat.c (amd64_linux_collect_native_gregset): New
-	function.
-	(fill_gregset): Call amd64_linux_collect_native_gregset instead
-	of amd64_collect_native_gregset.
-	(amd64_linux_nat_target::store_registers): Likewise.
-
-2019-04-10  Tom Tromey  <tom@tromey.com>
-
-	* symtab.c (lookup_global_symbol_from_objfile)
-	(lookup_symbol_in_objfile_from_linkage_name): Use the iterator.
-	* objfiles.h (class separate_debug_iterator): New.
-	(class separate_debug_range): New.
-	(struct objfile) <separate_debug_objfiles>: New method.
-	(objfile_separate_debug_iterate): Don't declare.
-	* objfiles.c (separate_debug_iterator::operator++): Rename from
-	objfile_separate_debug_iterate.
-	(objfile_relocate, objfile_rebase, objfile_has_symbols): Use the
-	iterator.
-	* minsyms.c (lookup_minimal_symbol_by_pc_section): Use the
-	iterator.
-
-2019-04-10  Tom Tromey  <tom@tromey.com>
-
-	* symfile.c (reread_symbols): Remove old comment.
-	* objfiles.c (free_all_objfiles): Fix a typo.
-
-2019-04-10  Tom Tromey  <tom@tromey.com>
-
-	* ia64-tdep.c (ia64_get_dyn_info_list): Use foreach.
-	* minsyms.c (lookup_minimal_symbol): Use foreach.
-	(lookup_minimal_symbol_text, lookup_minimal_symbol_by_pc_name)
-	(lookup_minimal_symbol_solib_trampoline): Likewise.
-	* symfile.c (reread_symbols): Use foreach.
+	* c-valprint.c (c_value_print): Use common_val_print.
 
-2019-04-09  Ivan Begert  <ivanbegert@gmail.com>
-	    Tom Tromey  <tromey@adacore.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	PR rust/24414:
-	* rust-exp.y (rust_parser::lex_number): Use strtoulst.
-	(rust_lex_int_test): Change "value" to be LONGEST.
-	(rust_lex_tests): Add test for long integer literal.
+	* cp-valprint.c (cp_print_static_field): Use common_val_print.
 
-2019-04-09  Tom Tromey  <tromey@adacore.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* remote.c (remote_target::remote_add_inferior): Change fake_pid_p
-	to bool.
-	(extended_remote_target::attach): Update.
-	(remote_target::remote_notice_new_inferior): Update.
-	(remote_target::add_current_inferior_and_thread): Update.
-	* inferior.c (exit_inferior_1): Use "false".
-	* corelow.c (add_to_thread_list): Make fake_pid_p bool.
+	* f-valprint.c (f77_print_array_1, f_val_print): Use
+	common_val_print.
 
-2019-04-09  Simon Marchi  <simon.marchi@efficios.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* infcmd.c (run_command_1): Pass -qualified to tbreak when using
-	the "start" command.
+	* riscv-tdep.c (riscv_print_one_register_info): Use
+	common_val_print.
 
-2019-04-08  Kevin Buettner  <kevinb@redhat.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* python/py-inferior.c (infpy_thread_from_thread_handle):
-	Adjust comments to reflect renaming of thread_from_thread_handle
-	to thread_from_handle.  Adjust keywords.  Fix type error message.
-	(inferior_object_methods): Add thread_from_handle.  Retain
-	thread_from_thread_handle, but mark it as deprecated.
+	* mi/mi-main.c (output_register): Use common_val_print.
 
-2019-04-08  Kevin Buettner  <kevinb@redhat.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* gdbthread.h (find_thread_by_handle): Revise declaration.
-	* thread.c (find_thread_by_handle): Likewise.  Adjust
-	implementation too.
-	* python/py-inferior.c (infpy_thread_from_thread_handle): Add
-	support for buffer objects as handles.
+	* infcmd.c (default_print_one_register_info): Use
+	common_val_print.
 
-2019-04-08  Kevin Buettner  <kevinb@redhat.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* python/py-infthread.c (thpy_thread_handle): New function.
-	(thread_object_methods): Register thpy_thread_handle.
+	* valprint.h (common_val_print_checked): Declare.
+	* valprint.c (common_val_print_checked): New function.
+	* stack.c (print_frame_arg): Use common_val_print_checked.
 
-2019-04-08  Kevin Buettner  <kevinb@redhat.com>
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* gdbthread.h (thread_to_thread_handle): Declare.
-	* thread.c (gdbtypes.h): Include.
-	(thread_to_thread_handle): New function.
+	* valprint.c (do_val_print): New function, from val_print.
+	(val_print): Use do_val_print.
+	(common_val_print): Use do_val_print.
 
-	* target.h (struct target_ops): Add thread_info_to_thread_handle.
-	(target_thread_info_to_thread_handle): Declare.
-	* target.c (target_thread_info_to_thread_handle): New function.
-	* target-debug.h (target_debug_print_gdb_byte_vector): Define.
-	* target-delegates.c: Regenerate.
+2020-03-13  Tom Tromey  <tom@tromey.com>
 
-	* linux-thread-db.c (class thread_db_target): Add method
-	thread_info_to_thread_handle.
-	(thread_db_target::thread_info_to_thread_handle): Define.
-	* remote.c (class remote_target): Add new method
-	thread_info_to_thread_handle.
-	(remote_target::thread_info_to_thread_handle): Define.
-
-2019-04-08  Pedro Alves  <palves@redhat.com>
-
-	* common/common-exceptions.c (throw_exception): Don't create
-	named object to throw; throw directly.
-	(throw_it): Likewise.  Don't initialize gdb_exception::message
-	here, with new; pass FMT and AP to the ctor instead.
-	* common/common-exceptions.h: Include <string>.
-	(gdb_exception::gdb_exception(enum return_reason, enum errors,
-	const char *, va_list)): New ctor.  Use std::make_shared.
-	(gdb_exception_error::gdb_exception_error(enum return_reason, enum
-	errors)): Delete.
-	(gdb_exception_error::gdb_exception_error(enum errors, const char
-	*, va_list)): New.
-	(gdb_exception_error::gdb_exception_error(const gdb_exception &)):
-	Add assertion.
-	(gdb_exception_quit::gdb_exception_quit(enum return_reason, enum
-	errors)): Delete.
-	(gdb_exception_quit::gdb_exception_quit(const char *, va_list)): New.
-	(gdb_exception_quit::gdb_exception_quit(const gdb_exception &)):
-	Add assertion.
+	* valprint.c (value_print): Use scoped_value_mark.
 
-2019-04-08  Tom Tromey  <tom@tromey.com>
+2020-03-13  Tom de Vries  <tdevries@suse.de>
 
-	* valops.c (value_rtti_indirect_type): Replace throw_exception
-	with throw.
-	* tracefile-tfile.c (tfile_target_open): Replace throw_exception
-	with throw.
-	* thread.c (thr_try_catch_cmd): Replace throw_exception with
-	throw.
-	* target.c (target_translate_tls_address): Replace throw_exception
-	with throw.
-	* stack.c (frame_apply_command_count): Replace throw_exception
-	with throw.
-	* solib-spu.c (append_ocl_sos): Replace throw_exception with
-	throw.
-	* s390-tdep.c (s390_frame_unwind_cache): Replace throw_exception
-	with throw.
-	* rs6000-tdep.c (rs6000_frame_cache)
-	(rs6000_epilogue_frame_cache): Replace throw_exception with throw.
-	* remote.c: Replace throw_exception with throw.
-	* record-full.c (record_full_message, record_full_wait_1)
-	(record_full_restore): Replace throw_exception with throw.
-	* record-btrace.c:
-	(get_thread_current_frame_id, record_btrace_start_replaying)
-	(cmd_record_btrace_bts_start, cmd_record_btrace_pt_start)
-	(cmd_record_btrace_start): Replace throw_exception with throw.
-	* parse.c (parse_exp_in_context_1): Replace throw_exception with
-	throw.
-	* linux-nat.c (detach_one_lwp, linux_resume_one_lwp)
-	(resume_stopped_resumed_lwps): Replace throw_exception with throw.
-	* linespec.c:
-	(find_linespec_symbols): Replace throw_exception with throw.
-	* infrun.c (displaced_step_prepare, resume): Replace
-	throw_exception with throw.
-	* infcmd.c (post_create_inferior): Replace throw_exception with
-	throw.
-	* inf-loop.c (inferior_event_handler): Replace throw_exception
-	with throw.
-	* i386-tdep.c (i386_frame_cache, i386_epilogue_frame_cache)
-	(i386_sigtramp_frame_cache): Replace throw_exception with throw.
-	* frame.c (frame_unwind_pc, get_prev_frame_if_no_cycle)
-	(get_prev_frame_always, get_frame_pc_if_available)
-	(get_frame_address_in_block_if_available, get_frame_language):
-	Replace throw_exception with throw.
-	* frame-unwind.c (frame_unwind_try_unwinder): Replace
-	throw_exception with throw.
-	* eval.c (fetch_subexp_value, evaluate_var_value)
-	(evaluate_funcall, evaluate_subexp_standard): Replace
-	throw_exception with throw.
-	* dwarf2loc.c (call_site_find_chain)
-	(dwarf2_evaluate_loc_desc_full, dwarf2_locexpr_baton_eval):
-	Replace throw_exception with throw.
-	* dwarf2-frame.c (dwarf2_frame_cache): Replace throw_exception
-	with throw.
-	* darwin-nat.c (darwin_attach_pid): Replace throw_exception with
-	throw.
-	* cp-abi.c (baseclass_offset): Replace throw_exception with throw.
-	* completer.c (complete_line_internal): Replace throw_exception
-	with throw.
-	* compile/compile-object-run.c (compile_object_run): Replace
-	throw_exception with throw.
-	* cli/cli-script.c (process_next_line): Replace throw_exception
-	with throw.
-	* btrace.c (btrace_compute_ftrace_pt, btrace_compute_ftrace)
-	(btrace_enable, btrace_maint_update_pt_packets): Replace
-	throw_exception with throw.
-	* breakpoint.c (create_breakpoint, save_breakpoints): Replace
-	throw_exception with throw.
-	* break-catch-throw.c (re_set_exception_catchpoint): Replace
-	throw_exception with throw.
-	* amd64-tdep.c (amd64_frame_cache, amd64_sigtramp_frame_cache)
-	(amd64_epilogue_frame_cache): Replace throw_exception with throw.
-	* aarch64-tdep.c (aarch64_make_prologue_cache)
-	(aarch64_make_stub_cache): Replace throw_exception with throw.
-
-2019-04-08  Tom Tromey  <tom@tromey.com>
-
-	* common/common-exceptions.c (throw_exception): Rename from
-	throw_exception_cxx.  Remove old copy.  Make argument const.
-	(throw_it): Create and throw exception objects directly.
-	* common/common-exceptions.h (throw_exception): Make argument
-	const.
-	(struct gdb_exception_error): Add constructor.
-	(struct gdb_exception_quit): Add constructor.
+	PR symtab/25646
+	* psymtab.c (partial_symtab::partial_symtab): Don't set
+	globals_offset and statics_offset.  Push element onto
+	current_global_psymbols and current_static_psymbols stacks.
+	(concat): New function.
+	(end_psymtab_common): Set globals_offset and statics_offset.  Pop
+	element from current_global_psymbols and current_static_psymbols
+	stacks.  Concat popped elements to global_psymbols and
+	static_symbols.
+	(add_psymbol_to_list): Use current_global_psymbols and
+	current_static_psymbols stacks.
+	* psymtab.h (class psymtab_storage): Add current_global_psymbols and
+	current_static_psymbols fields.
 
-2019-04-08  Tom Tromey  <tom@tromey.com>
+2020-03-12  Christian Biesinger  <cbiesinger@google.com>
 
-	* common/common-exceptions.h (exception_rethrow): Don't declare.
-	(TRY_SJLJ): Update comment.
-	(TRY, CATCH, END_CATCH): Remove.
-	* common/common-exceptions.c (exception_rethrow): Remove.
+	* corelow.c (sniff_core_bfd): Remove.
+	(class core_target) <m_core_vec>: Remove.
+	(core_target::core_target): Update.
+	(core_file_fns): Remove.
+	(deprecated_add_core_fns): Remove.
+	(default_core_sniffer): Remove.
+	(sniff_core_bfd): Remove.
+	(default_check_format): Remove.
+	(gdb_check_format): Remove.
+	(core_target_open): Update.
+	(core_target::get_core_register_section): Update.
+	(get_core_registers_cb): Update.
+	(core_target::fetch_registers): Update.
+	* gdbcore.h (struct core_fns): Remove.
+	(deprecated_add_core_fns): Remove.
+	(default_core_sniffer): Remove.
+	(default_check_format): Remove.
 
-2019-04-08  Tom Tromey  <tom@tromey.com>
+2020-03-12  Tom Tromey  <tom@tromey.com>
 
-	* common/common-exceptions.h (gdb_exception_RETURN_MASK_ALL):
-	Remove.
-	(gdb_exception_error): Rename from
-	gdb_exception_RETURN_MASK_ERROR.
-	(gdb_exception_quit): Rename from gdb_exception_RETURN_MASK_QUIT.
-	(gdb_quit_bad_alloc): Update.
-	* aarch64-tdep.c: Update.
-	* ada-lang.c: Update.
-	* ada-typeprint.c: Update.
-	* ada-valprint.c: Update.
-	* amd64-tdep.c: Update.
-	* arch-utils.c: Update.
-	* break-catch-throw.c: Update.
-	* breakpoint.c: Update.
-	* btrace.c: Update.
-	* c-varobj.c: Update.
-	* cli/cli-cmds.c: Update.
-	* cli/cli-interp.c: Update.
-	* cli/cli-script.c: Update.
-	* common/common-exceptions.c: Update.
-	* common/new-op.c: Update.
-	* common/selftest.c: Update.
-	* compile/compile-c-symbols.c: Update.
-	* compile/compile-cplus-symbols.c: Update.
-	* compile/compile-object-load.c: Update.
-	* compile/compile-object-run.c: Update.
-	* completer.c: Update.
-	* corelow.c: Update.
-	* cp-abi.c: Update.
-	* cp-support.c: Update.
-	* cp-valprint.c: Update.
-	* darwin-nat.c: Update.
-	* disasm-selftests.c: Update.
-	* dtrace-probe.c: Update.
-	* dwarf-index-cache.c: Update.
-	* dwarf-index-write.c: Update.
-	* dwarf2-frame-tailcall.c: Update.
-	* dwarf2-frame.c: Update.
-	* dwarf2loc.c: Update.
-	* dwarf2read.c: Update.
-	* eval.c: Update.
-	* event-loop.c: Update.
-	* event-top.c: Update.
-	* exec.c: Update.
-	* f-valprint.c: Update.
-	* fbsd-tdep.c: Update.
-	* frame-unwind.c: Update.
-	* frame.c: Update.
-	* gdbtypes.c: Update.
-	* gnu-v3-abi.c: Update.
-	* guile/guile-internal.h: Update.
-	* guile/scm-block.c: Update.
-	* guile/scm-breakpoint.c: Update.
-	* guile/scm-cmd.c: Update.
-	* guile/scm-disasm.c: Update.
-	* guile/scm-frame.c: Update.
-	* guile/scm-lazy-string.c: Update.
-	* guile/scm-math.c: Update.
-	* guile/scm-param.c: Update.
-	* guile/scm-ports.c: Update.
-	* guile/scm-pretty-print.c: Update.
-	* guile/scm-symbol.c: Update.
-	* guile/scm-symtab.c: Update.
-	* guile/scm-type.c: Update.
-	* guile/scm-value.c: Update.
-	* i386-linux-tdep.c: Update.
-	* i386-tdep.c: Update.
-	* inf-loop.c: Update.
-	* infcall.c: Update.
-	* infcmd.c: Update.
-	* infrun.c: Update.
-	* jit.c: Update.
-	* language.c: Update.
-	* linespec.c: Update.
-	* linux-fork.c: Update.
-	* linux-nat.c: Update.
-	* linux-tdep.c: Update.
-	* linux-thread-db.c: Update.
-	* main.c: Update.
-	* mi/mi-cmd-break.c: Update.
-	* mi/mi-cmd-stack.c: Update.
-	* mi/mi-interp.c: Update.
-	* mi/mi-main.c: Update.
-	* objc-lang.c: Update.
-	* p-valprint.c: Update.
-	* parse.c: Update.
-	* ppc-linux-tdep.c: Update.
-	* printcmd.c: Update.
-	* python/py-arch.c: Update.
-	* python/py-breakpoint.c: Update.
-	* python/py-cmd.c: Update.
-	* python/py-finishbreakpoint.c: Update.
-	* python/py-frame.c: Update.
-	* python/py-framefilter.c: Update.
-	* python/py-gdb-readline.c: Update.
-	* python/py-inferior.c: Update.
-	* python/py-infthread.c: Update.
-	* python/py-lazy-string.c: Update.
-	* python/py-linetable.c: Update.
-	* python/py-objfile.c: Update.
-	* python/py-param.c: Update.
-	* python/py-prettyprint.c: Update.
-	* python/py-progspace.c: Update.
-	* python/py-record-btrace.c: Update.
-	* python/py-record.c: Update.
-	* python/py-symbol.c: Update.
-	* python/py-type.c: Update.
-	* python/py-unwind.c: Update.
-	* python/py-utils.c: Update.
-	* python/py-value.c: Update.
-	* python/python.c: Update.
-	* record-btrace.c: Update.
-	* record-full.c: Update.
-	* remote-fileio.c: Update.
-	* remote.c: Update.
-	* riscv-tdep.c: Update.
-	* rs6000-aix-tdep.c: Update.
-	* rs6000-tdep.c: Update.
-	* rust-exp.y: Update.
-	* rust-lang.c: Update.
-	* s390-tdep.c: Update.
-	* selftest-arch.c: Update.
-	* solib-dsbt.c: Update.
-	* solib-frv.c: Update.
-	* solib-spu.c: Update.
-	* solib-svr4.c: Update.
-	* solib.c: Update.
-	* sparc64-linux-tdep.c: Update.
-	* stack.c: Update.
-	* symfile-mem.c: Update.
-	* symmisc.c: Update.
-	* target.c: Update.
-	* thread.c: Update.
-	* top.c: Update.
-	* tracefile-tfile.c: Update.
-	* tui/tui.c: Update.
-	* typeprint.c: Update.
-	* unittests/cli-utils-selftests.c: Update.
-	* unittests/parse-connection-spec-selftests.c: Update.
-	* valops.c: Update.
-	* valprint.c: Update.
-	* value.c: Update.
-	* varobj.c: Update.
-	* windows-nat.c: Update.
-	* x86-linux-nat.c: Update.
-	* xml-support.c: Update.
-
-2019-04-08  Tom Tromey  <tom@tromey.com>
-
-	* xml-support.c: Use C++ exception handling.
-	* x86-linux-nat.c: Use C++ exception handling.
-	* windows-nat.c: Use C++ exception handling.
-	* varobj.c: Use C++ exception handling.
-	* value.c: Use C++ exception handling.
-	* valprint.c: Use C++ exception handling.
-	* valops.c: Use C++ exception handling.
-	* unittests/parse-connection-spec-selftests.c: Use C++ exception
-	handling.
-	* unittests/cli-utils-selftests.c: Use C++ exception handling.
-	* typeprint.c: Use C++ exception handling.
-	* tui/tui.c: Use C++ exception handling.
-	* tracefile-tfile.c: Use C++ exception handling.
-	* top.c: Use C++ exception handling.
-	* thread.c: Use C++ exception handling.
-	* target.c: Use C++ exception handling.
-	* symmisc.c: Use C++ exception handling.
-	* symfile-mem.c: Use C++ exception handling.
-	* stack.c: Use C++ exception handling.
-	* sparc64-linux-tdep.c: Use C++ exception handling.
-	* solib.c: Use C++ exception handling.
-	* solib-svr4.c: Use C++ exception handling.
-	* solib-spu.c: Use C++ exception handling.
-	* solib-frv.c: Use C++ exception handling.
-	* solib-dsbt.c: Use C++ exception handling.
-	* selftest-arch.c: Use C++ exception handling.
-	* s390-tdep.c: Use C++ exception handling.
-	* rust-lang.c: Use C++ exception handling.
-	* rust-exp.y: Use C++ exception handling.
-	* rs6000-tdep.c: Use C++ exception handling.
-	* rs6000-aix-tdep.c: Use C++ exception handling.
-	* riscv-tdep.c: Use C++ exception handling.
-	* remote.c: Use C++ exception handling.
-	* remote-fileio.c: Use C++ exception handling.
-	* record-full.c: Use C++ exception handling.
-	* record-btrace.c: Use C++ exception handling.
-	* python/python.c: Use C++ exception handling.
-	* python/py-value.c: Use C++ exception handling.
-	* python/py-utils.c: Use C++ exception handling.
-	* python/py-unwind.c: Use C++ exception handling.
-	* python/py-type.c: Use C++ exception handling.
-	* python/py-symbol.c: Use C++ exception handling.
-	* python/py-record.c: Use C++ exception handling.
-	* python/py-record-btrace.c: Use C++ exception handling.
-	* python/py-progspace.c: Use C++ exception handling.
-	* python/py-prettyprint.c: Use C++ exception handling.
-	* python/py-param.c: Use C++ exception handling.
-	* python/py-objfile.c: Use C++ exception handling.
-	* python/py-linetable.c: Use C++ exception handling.
-	* python/py-lazy-string.c: Use C++ exception handling.
-	* python/py-infthread.c: Use C++ exception handling.
-	* python/py-inferior.c: Use C++ exception handling.
-	* python/py-gdb-readline.c: Use C++ exception handling.
-	* python/py-framefilter.c: Use C++ exception handling.
-	* python/py-frame.c: Use C++ exception handling.
-	* python/py-finishbreakpoint.c: Use C++ exception handling.
-	* python/py-cmd.c: Use C++ exception handling.
-	* python/py-breakpoint.c: Use C++ exception handling.
-	* python/py-arch.c: Use C++ exception handling.
-	* printcmd.c: Use C++ exception handling.
-	* ppc-linux-tdep.c: Use C++ exception handling.
-	* parse.c: Use C++ exception handling.
-	* p-valprint.c: Use C++ exception handling.
-	* objc-lang.c: Use C++ exception handling.
-	* mi/mi-main.c: Use C++ exception handling.
-	* mi/mi-interp.c: Use C++ exception handling.
-	* mi/mi-cmd-stack.c: Use C++ exception handling.
-	* mi/mi-cmd-break.c: Use C++ exception handling.
-	* main.c: Use C++ exception handling.
-	* linux-thread-db.c: Use C++ exception handling.
-	* linux-tdep.c: Use C++ exception handling.
-	* linux-nat.c: Use C++ exception handling.
-	* linux-fork.c: Use C++ exception handling.
-	* linespec.c: Use C++ exception handling.
-	* language.c: Use C++ exception handling.
-	* jit.c: Use C++ exception handling.
-	* infrun.c: Use C++ exception handling.
-	* infcmd.c: Use C++ exception handling.
-	* infcall.c: Use C++ exception handling.
-	* inf-loop.c: Use C++ exception handling.
-	* i386-tdep.c: Use C++ exception handling.
-	* i386-linux-tdep.c: Use C++ exception handling.
-	* guile/scm-value.c: Use C++ exception handling.
-	* guile/scm-type.c: Use C++ exception handling.
-	* guile/scm-symtab.c: Use C++ exception handling.
-	* guile/scm-symbol.c: Use C++ exception handling.
-	* guile/scm-pretty-print.c: Use C++ exception handling.
-	* guile/scm-ports.c: Use C++ exception handling.
-	* guile/scm-param.c: Use C++ exception handling.
-	* guile/scm-math.c: Use C++ exception handling.
-	* guile/scm-lazy-string.c: Use C++ exception handling.
-	* guile/scm-frame.c: Use C++ exception handling.
-	* guile/scm-disasm.c: Use C++ exception handling.
-	* guile/scm-cmd.c: Use C++ exception handling.
-	* guile/scm-breakpoint.c: Use C++ exception handling.
-	* guile/scm-block.c: Use C++ exception handling.
-	* guile/guile-internal.h: Use C++ exception handling.
-	* gnu-v3-abi.c: Use C++ exception handling.
-	* gdbtypes.c: Use C++ exception handling.
-	* frame.c: Use C++ exception handling.
-	* frame-unwind.c: Use C++ exception handling.
-	* fbsd-tdep.c: Use C++ exception handling.
-	* f-valprint.c: Use C++ exception handling.
-	* exec.c: Use C++ exception handling.
-	* event-top.c: Use C++ exception handling.
-	* event-loop.c: Use C++ exception handling.
-	* eval.c: Use C++ exception handling.
-	* dwarf2read.c: Use C++ exception handling.
-	* dwarf2loc.c: Use C++ exception handling.
-	* dwarf2-frame.c: Use C++ exception handling.
-	* dwarf2-frame-tailcall.c: Use C++ exception handling.
-	* dwarf-index-write.c: Use C++ exception handling.
-	* dwarf-index-cache.c: Use C++ exception handling.
-	* dtrace-probe.c: Use C++ exception handling.
-	* disasm-selftests.c: Use C++ exception handling.
-	* darwin-nat.c: Use C++ exception handling.
-	* cp-valprint.c: Use C++ exception handling.
-	* cp-support.c: Use C++ exception handling.
-	* cp-abi.c: Use C++ exception handling.
-	* corelow.c: Use C++ exception handling.
-	* completer.c: Use C++ exception handling.
-	* compile/compile-object-run.c: Use C++ exception handling.
-	* compile/compile-object-load.c: Use C++ exception handling.
-	* compile/compile-cplus-symbols.c: Use C++ exception handling.
-	* compile/compile-c-symbols.c: Use C++ exception handling.
-	* common/selftest.c: Use C++ exception handling.
-	* common/new-op.c: Use C++ exception handling.
-	* cli/cli-script.c: Use C++ exception handling.
-	* cli/cli-interp.c: Use C++ exception handling.
-	* cli/cli-cmds.c: Use C++ exception handling.
-	* c-varobj.c: Use C++ exception handling.
-	* btrace.c: Use C++ exception handling.
-	* breakpoint.c: Use C++ exception handling.
-	* break-catch-throw.c: Use C++ exception handling.
-	* arch-utils.c: Use C++ exception handling.
-	* amd64-tdep.c: Use C++ exception handling.
-	* ada-valprint.c: Use C++ exception handling.
-	* ada-typeprint.c: Use C++ exception handling.
-	* ada-lang.c: Use C++ exception handling.
-	* aarch64-tdep.c: Use C++ exception handling.
-
-2019-04-08  Tom Tromey  <tom@tromey.com>
-
-	* xml-support.c (gdb_xml_parser::parse): Update.
-	* x86-linux-nat.c (x86_linux_nat_target::enable_btrace): Update.
-	* value.c (show_convenience): Update.
-	* unittests/cli-utils-selftests.c (test_number_or_range_parser)
-	(test_parse_flags_qcs): Update.
-	* thread.c (thr_try_catch_cmd): Update.
-	* target.c (target_translate_tls_address): Update.
-	* stack.c (print_frame_arg, read_frame_local, read_frame_arg)
-	(info_frame_command_core, frame_apply_command_count): Update.
-	* rust-exp.y (rust_lex_exception_test): Update.
-	* riscv-tdep.c (riscv_print_one_register_info): Update.
-	* remote.c (remote_target::enable_btrace): Update.
-	* record-btrace.c (record_btrace_enable_warn): Update.
-	* python/py-utils.c (gdbpy_convert_exception): Update.
-	* printcmd.c (do_one_display, print_variable_and_value): Update.
-	* mi/mi-main.c (mi_print_exception): Update.
-	* mi/mi-interp.c (mi_cmd_interpreter_exec): Use SCOPE_EXIT.
-	* mi/mi-cmd-stack.c (list_arg_or_local): Update.
-	* linux-nat.c (linux_nat_target::attach): Update.
-	* linux-fork.c (class scoped_switch_fork_info): Update.
-	* infrun.c (displaced_step_prepare): Update.
-	* infcall.c (call_function_by_hand_dummy): Update.
-	* guile/scm-exception.c (gdbscm_scm_from_gdb_exception): Update.
-	* gnu-v3-abi.c (print_one_vtable): Update.
-	* frame.c (get_prev_frame_always): Update.
-	* f-valprint.c (info_common_command_for_block): Update.
-	* exec.c (try_open_exec_file): Update.
-	* exceptions.c (print_exception, exception_print)
-	(exception_fprintf, exception_print_same): Update.
-	* dwarf2-frame.c (dwarf2_build_frame_info): Update.
-	* dwarf-index-cache.c (index_cache::store)
-	(index_cache::lookup_gdb_index): Update.
-	* darwin-nat.c (maybe_cache_shell): Update.
-	* cp-valprint.c (cp_print_value_fields): Update.
-	* compile/compile-cplus-symbols.c (gcc_cplus_convert_symbol)
-	(gcc_cplus_symbol_address): Update.
-	* compile/compile-c-symbols.c (gcc_convert_symbol)
-	(gcc_symbol_address, generate_c_for_for_one_variable): Update.
-	* common/selftest.c: Update.
-	* common/common-exceptions.h (struct gdb_exception) <message>: Now
-	a std::string.
-	(exception_try_scope_entry, exception_try_scope_exit): Don't
-	declare.
-	(struct exception_try_scope): Remove.
-	(TRY): Don't use exception_try_scope.
-	(struct gdb_exception): Add constructor, operator=.
-	<what>: New method.
-	(struct gdb_exception_RETURN_MASK_ALL)
-	(struct gdb_exception_RETURN_MASK_ERROR)
-	(struct gdb_exception_RETURN_MASK_QUIT): Add constructor.
-	(struct gdb_quit_bad_alloc): Update.
-	* common/common-exceptions.c (exception_none): Change
-	initializer.
-	(struct catcher) <state, exception>: Initialize inline.
-	<prev>: Remove member.
-	(current_catcher): Remove.
-	(catchers): New global.
-	(exceptions_state_mc_init): Simplify.
-	(catcher_pop): Remove.
-	(exceptions_state_mc, exceptions_state_mc_catch): Update.
-	(try_scope_depth, exception_try_scope_entry)
-	(exception_try_scope_exit): Remove.
-	(throw_exception_sjlj): Update.
-	(exception_messages, exception_messages_size): Remove.
-	(throw_it): Simplify.
-	(gdb_exception_sliced_copy): Remove.
-	(throw_exception_cxx): Update.
-	* cli/cli-script.c (script_from_file): Update.
-	* breakpoint.c (insert_bp_location, update_breakpoint_locations):
-	Update.
-	* ada-valprint.c (ada_val_print): Update.
-	* ada-lang.c (ada_to_fixed_type_1, ada_exception_name_addr)
-	(create_excep_cond_exprs): Update.
-
-2019-04-08  Tom Tromey  <tom@tromey.com>
-
-	* common/common-exceptions.h (GDB_XCPT_SJMP, GDB_XCPT_TRY)
-	(GDB_XCPT_RAW_TRY, GDB_XCPT): Remove.
-	(TRY, CATCH, END_CATCH): Remove some definitions.
-	* common/common-exceptions.c: Don't use GDB_XCPT.
-	(catcher_list_size): Remove.
-	(throw_exception, throw_it): Simplify.
-
-2019-04-05  Tom Tromey  <tom@tromey.com>
-
-	Revert the header-sorting patch.
-	* ft32-tdep.c: Revert.
-	* frv-tdep.c: Revert.
-	* frv-linux-tdep.c: Revert.
-	* frame.c: Revert.
-	* frame-unwind.c: Revert.
-	* frame-base.c: Revert.
-	* fork-child.c: Revert.
-	* findvar.c: Revert.
-	* findcmd.c: Revert.
-	* filesystem.c: Revert.
-	* filename-seen-cache.h: Revert.
-	* filename-seen-cache.c: Revert.
-	* fbsd-tdep.c: Revert.
-	* fbsd-nat.h: Revert.
-	* fbsd-nat.c: Revert.
-	* f-valprint.c: Revert.
-	* f-typeprint.c: Revert.
-	* f-lang.c: Revert.
-	* extension.h: Revert.
-	* extension.c: Revert.
-	* extension-priv.h: Revert.
-	* expprint.c: Revert.
-	* exec.h: Revert.
-	* exec.c: Revert.
-	* exceptions.c: Revert.
-	* event-top.c: Revert.
-	* event-loop.c: Revert.
-	* eval.c: Revert.
-	* elfread.c: Revert.
-	* dwarf2read.h: Revert.
-	* dwarf2read.c: Revert.
-	* dwarf2loc.c: Revert.
-	* dwarf2expr.h: Revert.
-	* dwarf2expr.c: Revert.
-	* dwarf2-frame.c: Revert.
-	* dwarf2-frame-tailcall.c: Revert.
-	* dwarf-index-write.h: Revert.
-	* dwarf-index-write.c: Revert.
-	* dwarf-index-common.c: Revert.
-	* dwarf-index-cache.h: Revert.
-	* dwarf-index-cache.c: Revert.
-	* dummy-frame.c: Revert.
-	* dtrace-probe.c: Revert.
-	* disasm.h: Revert.
-	* disasm.c: Revert.
-	* disasm-selftests.c: Revert.
-	* dictionary.c: Revert.
-	* dicos-tdep.c: Revert.
-	* demangle.c: Revert.
-	* dcache.h: Revert.
-	* dcache.c: Revert.
-	* darwin-nat.h: Revert.
-	* darwin-nat.c: Revert.
-	* darwin-nat-info.c: Revert.
-	* d-valprint.c: Revert.
-	* d-namespace.c: Revert.
-	* d-lang.c: Revert.
-	* ctf.c: Revert.
-	* csky-tdep.c: Revert.
-	* csky-linux-tdep.c: Revert.
-	* cris-tdep.c: Revert.
-	* cris-linux-tdep.c: Revert.
-	* cp-valprint.c: Revert.
-	* cp-support.c: Revert.
-	* cp-namespace.c: Revert.
-	* cp-abi.c: Revert.
-	* corelow.c: Revert.
-	* corefile.c: Revert.
-	* continuations.c: Revert.
-	* completer.h: Revert.
-	* completer.c: Revert.
-	* complaints.c: Revert.
-	* coffread.c: Revert.
-	* coff-pe-read.c: Revert.
-	* cli-out.h: Revert.
-	* cli-out.c: Revert.
-	* charset.c: Revert.
-	* c-varobj.c: Revert.
-	* c-valprint.c: Revert.
-	* c-typeprint.c: Revert.
-	* c-lang.c: Revert.
-	* buildsym.c: Revert.
-	* buildsym-legacy.c: Revert.
-	* build-id.h: Revert.
-	* build-id.c: Revert.
-	* btrace.c: Revert.
-	* bsd-uthread.c: Revert.
-	* breakpoint.h: Revert.
-	* breakpoint.c: Revert.
-	* break-catch-throw.c: Revert.
-	* break-catch-syscall.c: Revert.
-	* break-catch-sig.c: Revert.
-	* blockframe.c: Revert.
-	* block.c: Revert.
-	* bfin-tdep.c: Revert.
-	* bfin-linux-tdep.c: Revert.
-	* bfd-target.c: Revert.
-	* bcache.c: Revert.
-	* ax-general.c: Revert.
-	* ax-gdb.h: Revert.
-	* ax-gdb.c: Revert.
-	* avr-tdep.c: Revert.
-	* auxv.c: Revert.
-	* auto-load.c: Revert.
-	* arm-wince-tdep.c: Revert.
-	* arm-tdep.c: Revert.
-	* arm-symbian-tdep.c: Revert.
-	* arm-pikeos-tdep.c: Revert.
-	* arm-obsd-tdep.c: Revert.
-	* arm-nbsd-tdep.c: Revert.
-	* arm-nbsd-nat.c: Revert.
-	* arm-linux-tdep.c: Revert.
-	* arm-linux-nat.c: Revert.
-	* arm-fbsd-tdep.c: Revert.
-	* arm-fbsd-nat.c: Revert.
-	* arm-bsd-tdep.c: Revert.
-	* arch-utils.c: Revert.
-	* arc-tdep.c: Revert.
-	* arc-newlib-tdep.c: Revert.
-	* annotate.h: Revert.
-	* annotate.c: Revert.
-	* amd64-windows-tdep.c: Revert.
-	* amd64-windows-nat.c: Revert.
-	* amd64-tdep.c: Revert.
-	* amd64-sol2-tdep.c: Revert.
-	* amd64-obsd-tdep.c: Revert.
-	* amd64-obsd-nat.c: Revert.
-	* amd64-nbsd-tdep.c: Revert.
-	* amd64-nbsd-nat.c: Revert.
-	* amd64-nat.c: Revert.
-	* amd64-linux-tdep.c: Revert.
-	* amd64-linux-nat.c: Revert.
-	* amd64-fbsd-tdep.c: Revert.
-	* amd64-fbsd-nat.c: Revert.
-	* amd64-dicos-tdep.c: Revert.
-	* amd64-darwin-tdep.c: Revert.
-	* amd64-bsd-nat.c: Revert.
-	* alpha-tdep.c: Revert.
-	* alpha-obsd-tdep.c: Revert.
-	* alpha-nbsd-tdep.c: Revert.
-	* alpha-mdebug-tdep.c: Revert.
-	* alpha-linux-tdep.c: Revert.
-	* alpha-linux-nat.c: Revert.
-	* alpha-bsd-tdep.c: Revert.
-	* alpha-bsd-nat.c: Revert.
-	* aix-thread.c: Revert.
-	* agent.c: Revert.
-	* addrmap.c: Revert.
-	* ada-varobj.c: Revert.
-	* ada-valprint.c: Revert.
-	* ada-typeprint.c: Revert.
-	* ada-tasks.c: Revert.
-	* ada-lang.c: Revert.
-	* aarch64-tdep.c: Revert.
-	* aarch64-ravenscar-thread.c: Revert.
-	* aarch64-newlib-tdep.c: Revert.
-	* aarch64-linux-tdep.c: Revert.
-	* aarch64-linux-nat.c: Revert.
-	* aarch64-fbsd-tdep.c: Revert.
-	* aarch64-fbsd-nat.c: Revert.
-	* aarch32-linux-nat.c: Revert.
-
-2019-04-05  Tom Tromey  <tom@tromey.com>
-
-	* ft32-tdep.c: Sort headers.
-	* frv-tdep.c: Sort headers.
-	* frv-linux-tdep.c: Sort headers.
-	* frame.c: Sort headers.
-	* frame-unwind.c: Sort headers.
-	* frame-base.c: Sort headers.
-	* fork-child.c: Sort headers.
-	* findvar.c: Sort headers.
-	* findcmd.c: Sort headers.
-	* filesystem.c: Sort headers.
-	* filename-seen-cache.h: Sort headers.
-	* filename-seen-cache.c: Sort headers.
-	* fbsd-tdep.c: Sort headers.
-	* fbsd-nat.h: Sort headers.
-	* fbsd-nat.c: Sort headers.
-	* f-valprint.c: Sort headers.
-	* f-typeprint.c: Sort headers.
-	* f-lang.c: Sort headers.
-	* extension.h: Sort headers.
-	* extension.c: Sort headers.
-	* extension-priv.h: Sort headers.
-	* expprint.c: Sort headers.
-	* exec.h: Sort headers.
-	* exec.c: Sort headers.
-	* exceptions.c: Sort headers.
-	* event-top.c: Sort headers.
-	* event-loop.c: Sort headers.
-	* eval.c: Sort headers.
-	* elfread.c: Sort headers.
-	* dwarf2read.h: Sort headers.
-	* dwarf2read.c: Sort headers.
-	* dwarf2loc.c: Sort headers.
-	* dwarf2expr.h: Sort headers.
-	* dwarf2expr.c: Sort headers.
-	* dwarf2-frame.c: Sort headers.
-	* dwarf2-frame-tailcall.c: Sort headers.
-	* dwarf-index-write.h: Sort headers.
-	* dwarf-index-write.c: Sort headers.
-	* dwarf-index-common.c: Sort headers.
-	* dwarf-index-cache.h: Sort headers.
-	* dwarf-index-cache.c: Sort headers.
-	* dummy-frame.c: Sort headers.
-	* dtrace-probe.c: Sort headers.
-	* disasm.h: Sort headers.
-	* disasm.c: Sort headers.
-	* disasm-selftests.c: Sort headers.
-	* dictionary.c: Sort headers.
-	* dicos-tdep.c: Sort headers.
-	* demangle.c: Sort headers.
-	* dcache.h: Sort headers.
-	* dcache.c: Sort headers.
-	* darwin-nat.h: Sort headers.
-	* darwin-nat.c: Sort headers.
-	* darwin-nat-info.c: Sort headers.
-	* d-valprint.c: Sort headers.
-	* d-namespace.c: Sort headers.
-	* d-lang.c: Sort headers.
-	* ctf.c: Sort headers.
-	* csky-tdep.c: Sort headers.
-	* csky-linux-tdep.c: Sort headers.
-	* cris-tdep.c: Sort headers.
-	* cris-linux-tdep.c: Sort headers.
-	* cp-valprint.c: Sort headers.
-	* cp-support.c: Sort headers.
-	* cp-namespace.c: Sort headers.
-	* cp-abi.c: Sort headers.
-	* corelow.c: Sort headers.
-	* corefile.c: Sort headers.
-	* continuations.c: Sort headers.
-	* completer.h: Sort headers.
-	* completer.c: Sort headers.
-	* complaints.c: Sort headers.
-	* coffread.c: Sort headers.
-	* coff-pe-read.c: Sort headers.
-	* cli-out.h: Sort headers.
-	* cli-out.c: Sort headers.
-	* charset.c: Sort headers.
-	* c-varobj.c: Sort headers.
-	* c-valprint.c: Sort headers.
-	* c-typeprint.c: Sort headers.
-	* c-lang.c: Sort headers.
-	* buildsym.c: Sort headers.
-	* buildsym-legacy.c: Sort headers.
-	* build-id.h: Sort headers.
-	* build-id.c: Sort headers.
-	* btrace.c: Sort headers.
-	* bsd-uthread.c: Sort headers.
-	* breakpoint.h: Sort headers.
-	* breakpoint.c: Sort headers.
-	* break-catch-throw.c: Sort headers.
-	* break-catch-syscall.c: Sort headers.
-	* break-catch-sig.c: Sort headers.
-	* blockframe.c: Sort headers.
-	* block.c: Sort headers.
-	* bfin-tdep.c: Sort headers.
-	* bfin-linux-tdep.c: Sort headers.
-	* bfd-target.c: Sort headers.
-	* bcache.c: Sort headers.
-	* ax-general.c: Sort headers.
-	* ax-gdb.h: Sort headers.
-	* ax-gdb.c: Sort headers.
-	* avr-tdep.c: Sort headers.
-	* auxv.c: Sort headers.
-	* auto-load.c: Sort headers.
-	* arm-wince-tdep.c: Sort headers.
-	* arm-tdep.c: Sort headers.
-	* arm-symbian-tdep.c: Sort headers.
-	* arm-pikeos-tdep.c: Sort headers.
-	* arm-obsd-tdep.c: Sort headers.
-	* arm-nbsd-tdep.c: Sort headers.
-	* arm-nbsd-nat.c: Sort headers.
-	* arm-linux-tdep.c: Sort headers.
-	* arm-linux-nat.c: Sort headers.
-	* arm-fbsd-tdep.c: Sort headers.
-	* arm-fbsd-nat.c: Sort headers.
-	* arm-bsd-tdep.c: Sort headers.
-	* arch-utils.c: Sort headers.
-	* arc-tdep.c: Sort headers.
-	* arc-newlib-tdep.c: Sort headers.
-	* annotate.h: Sort headers.
-	* annotate.c: Sort headers.
-	* amd64-windows-tdep.c: Sort headers.
-	* amd64-windows-nat.c: Sort headers.
-	* amd64-tdep.c: Sort headers.
-	* amd64-sol2-tdep.c: Sort headers.
-	* amd64-obsd-tdep.c: Sort headers.
-	* amd64-obsd-nat.c: Sort headers.
-	* amd64-nbsd-tdep.c: Sort headers.
-	* amd64-nbsd-nat.c: Sort headers.
-	* amd64-nat.c: Sort headers.
-	* amd64-linux-tdep.c: Sort headers.
-	* amd64-linux-nat.c: Sort headers.
-	* amd64-fbsd-tdep.c: Sort headers.
-	* amd64-fbsd-nat.c: Sort headers.
-	* amd64-dicos-tdep.c: Sort headers.
-	* amd64-darwin-tdep.c: Sort headers.
-	* amd64-bsd-nat.c: Sort headers.
-	* alpha-tdep.c: Sort headers.
-	* alpha-obsd-tdep.c: Sort headers.
-	* alpha-nbsd-tdep.c: Sort headers.
-	* alpha-mdebug-tdep.c: Sort headers.
-	* alpha-linux-tdep.c: Sort headers.
-	* alpha-linux-nat.c: Sort headers.
-	* alpha-bsd-tdep.c: Sort headers.
-	* alpha-bsd-nat.c: Sort headers.
-	* aix-thread.c: Sort headers.
-	* agent.c: Sort headers.
-	* addrmap.c: Sort headers.
-	* ada-varobj.c: Sort headers.
-	* ada-valprint.c: Sort headers.
-	* ada-typeprint.c: Sort headers.
-	* ada-tasks.c: Sort headers.
-	* ada-lang.c: Sort headers.
-	* aarch64-tdep.c: Sort headers.
-	* aarch64-ravenscar-thread.c: Sort headers.
-	* aarch64-newlib-tdep.c: Sort headers.
-	* aarch64-linux-tdep.c: Sort headers.
-	* aarch64-linux-nat.c: Sort headers.
-	* aarch64-fbsd-tdep.c: Sort headers.
-	* aarch64-fbsd-nat.c: Sort headers.
-	* aarch32-linux-nat.c: Sort headers.
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* varobj.c (varobj_create): Update.
-	* rust-exp.y (struct rust_parser) <update_innermost_block,
-	lookup_symbol>: New methods.
-	(rust_parser::update_innermost_block, rust_parser::lookup_symbol):
-	Rename.
-	(rust_parser::rust_lookup_type)
-	(rust_parser::convert_ast_to_expression, rust_lex_tests): Update.
-	* printcmd.c (display_command, do_one_display): Update.
-	* parser-defs.h (struct parser_state) <parser_state>: Add
-	"tracker" parameter.
-	(block_tracker): New member.
-	(class innermost_block_tracker) <innermost_block_tracker>: Add
-	"types" parameter.
-	<reset>: Remove method.
-	(innermost_block): Don't declare.
-	(null_post_parser): Update.
-	* parse.c (innermost_block): Remove global.
-	(write_dollar_variable): Update.
-	(parse_exp_1, parse_exp_in_context): Add "tracker" parameter.
-	Remove "tracker_types" parameter.
-	(parse_expression): Add "tracker" parameter.
-	(parse_expression_for_completion): Update.
-	(null_post_parser): Add "tracker" parameter.
-	* p-exp.y: Update rules.
-	* m2-exp.y: Update rules.
-	* language.h (struct language_defn) <la_post_parser>: Add
-	"tracker" parameter.
-	* go-exp.y: Update rules.
-	* f-exp.y: Update rules.
-	* expression.h (parse_expression, parse_exp_1): Add "tracker"
-	parameter.
-	* d-exp.y: Update rules.
-	* c-exp.y: Update rules.
-	* breakpoint.c (set_breakpoint_condition): Create an
-	innermost_block_tracker.
-	(watch_command_1): Likewise.
-	* ada-lang.c (resolve): Add "tracker" parameter.
-	(resolve_subexp): Likewise.
-	* ada-exp.y (write_var_from_sym): Update.
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* type-stack.h: New file.
-	* type-stack.c: New file.
-	* parser-defs.h (enum type_pieces, union type_stack_elt): Move to
-	type-stack.h.
-	(insert_into_type_stack, insert_type, push_type, push_type_int)
-	(insert_type_address_space, pop_type, pop_type_int)
-	(pop_typelist, pop_type_stack, append_type_stack)
-	(push_type_stack, get_type_stack, push_typelist)
-	(follow_type_instance_flags, follow_types): Don't declare.
-	* parse.c (type_stack): Remove global.
-	(parse_exp_in_context): Update.
-	(insert_into_type_stack, insert_type, push_type, push_type_int)
-	(insert_type_address_space, pop_type, pop_type_int)
-	(pop_typelist, pop_type_stack, append_type_stack)
-	(push_type_stack, get_type_stack, push_typelist)
-	(follow_type_instance_flags, follow_types): Remove (moved to
-	type-stack.c).
-	* f-exp.y (type_stack): New global.
-	Update rules.
-	(push_kind_type, f_parse): Update.
-	* d-exp.y (type_stack): New global.
-	Update rules.
-	(d_parse): Update.
-	* c-exp.y (struct c_parse_state) <type_stack>: New member.
-	Update rules.
-	* Makefile.in (COMMON_SFILES): Add type-stack.c.
-	(HFILES_NO_SRCDIR): Add type-stack.h.
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* rust-exp.y (rust_parser::lex_identifier, rustyylex)
-	(rust_parser::convert_ast_to_expression, rust_parse)
-	(rust_lex_test_completion, rust_lex_tests): Update.
-	* parser-defs.h (struct expr_completion_state): New.
-	(struct parser_state) <parser_state>: Add completion parameter.
-	<mark_struct_expression, mark_completion_tag>: New methods.
-	<parse_completion, m_completion_state>: New members.
-	(prefixify_expression, null_post_parser): Update.
-	(mark_struct_expression, mark_completion_tag): Don't declare.
-	* parse.c (parse_completion, expout_last_struct)
-	(expout_tag_completion_type, expout_completion_name): Remove
-	globals.
-	(parser_state::mark_struct_expression)
-	(parser_state::mark_completion_tag): Now methods.
-	(prefixify_expression): Add last_struct parameter.
-	(prefixify_subexp): Likewise.
-	(parse_exp_1): Update.
-	(parse_exp_in_context): Add cstate parameter.  Update.
-	(parse_expression_for_completion): Create an
-	expr_completion_state.
-	(null_post_parser): Add "completion" parameter.
-	* p-exp.y: Update rules.
-	(yylex): Update.
-	* language.h (struct language_defn) <la_post_parser>: Add
-	"completing" parameter.
-	* go-exp.y: Update rules.
-	(lex_one_token): Update.
-	* expression.h (parse_completion): Don't declare.
-	* d-exp.y: Update rules.
-	(lex_one_token): Update rules.
-	* c-exp.y: Update rules.
-	(lex_one_token): Update.
-	* ada-lang.c (resolve): Add "parse_completion" parameter.
-	(resolve_subexp): Likewise.
-	(ada_resolve_function): Likewise.
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* parser-defs.h (struct parser_state) <start_arglist,
-	end_arglist>: New methods.
-	<arglist_len, m_funcall_chain>: New members.
-	(arglist_len, start_arglist, end_arglist): Don't declare.
-	* parse.c (arglist_len, funcall_chain): Remove global.
-	(start_arglist, end_arglist): Remove functions.
-	(parse_exp_in_context): Update.
-	* p-exp.y: Update rules.
-	* m2-exp.y: Update rules.
-	* go-exp.y: Update rules.
-	* f-exp.y: Update rules.
-	* d-exp.y: Update rules.
-	* c-exp.y: Update rules.
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* rust-exp.y (struct rust_parser) <lex_hex, lex_escape,
-	lex_operator, push_back>: New methods.
-	Update all rules.
-	(rust_parser::lex_hex, lex_escape): Rename and update.
-	(rust_parser::lex_string, rust_parser::lex_identifier): Update.
-	(rust_parser::lex_operator): Rename and update.
-	(rust_parser::lex_number, rustyylex, rustyyerror)
-	(rust_lex_test_init, rust_lex_test_sequence)
-	(rust_lex_test_push_back, rust_lex_tests): Update.
-	* parser-defs.h (struct parser_state) <parser_state>: Add "input"
-	parameter.
-	<lexptr, prev_lexptr>: New members.
-	(lexptr, prev_lexptr): Don't declare.
-	* parse.c (lexptr, prev_lexptr): Remove globals.
-	(parse_exp_in_context): Update.
-	* p-exp.y (yylex, yyerror): Update.
-	* m2-exp.y (parse_number, yylex, yyerror): Update.
-	* go-exp.y (lex_one_token, yyerror): Update.
-	* f-exp.y (match_string_literal, yylex, yyerror): Update.
-	* d-exp.y (lex_one_token, yyerror): Update.
-	* c-exp.y (scan_macro_expansion, finished_macro_expansion)
-	(lex_one_token, yyerror): Update.
-	* ada-lex.l (YY_INPUT): Update.
-	(rewind_to_char): Update.
-	* ada-exp.y (yyerror): Update.
+	* arm-tdep.c (struct arm_mapping_symbol) <value>: Now a
+	CORE_ADDR.
+	(struct arm_exidx_entry) <addr>: Now a CORE_ADDR.
 
-2019-04-04  Tom Tromey  <tom@tromey.com>
+2020-03-12  Tom Tromey  <tom@tromey.com>
 
-	* rust-exp.y (rustyylex, rust_lex_tests): Update.
-	* parser-defs.h (struct parser_state) <parser_state>: Add new
-	parameter.
-	<comma_terminates>: New member.
-	(comma_terminates): Don't declare global.
-	* parse.c (comma_terminates): Remove global.
-	(parse_exp_in_context): Update.
-	* p-exp.y (yylex): Update.
-	* m2-exp.y (yylex): Update.
-	* go-exp.y (lex_one_token): Update.
-	* f-exp.y (yylex): Update.
-	* d-exp.y (lex_one_token): Update.
-	* c-exp.y (lex_one_token): Update.
-	* ada-lex.l: Update.
+	* remote.c (remote_target::download_tracepoint)
+	(remote_target::enable_tracepoint)
+	(remote_target::disable_tracepoint): Use phex, not sprintf_vma.
+	* breakpoint.c (print_recreate_masked_watchpoint): Use phex, not
+	sprintf_vma.
 
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* rust-exp.y (struct rust_parser) <paren_depth>: New member.
-	(rustyylex, rust_lex_test_init, rust_lex_test_one)
-	(rust_lex_test_sequence, rust_lex_test_push_back): Update.
-	* parser-defs.h (paren_depth): Don't declare.
-	* parse.c (paren_depth): Remove global.
-	(parse_exp_in_context): Update.
-	* p-exp.y (paren_depth): New global.
-	(pascal_parse): Initialize it.
-	* m2-exp.y (paren_depth): New global.
-	(m2_parse): Initialize it.
-	* go-exp.y (paren_depth): New global.
-	(go_parse): Initialize it.
-	* f-exp.y (paren_depth): New global.
-	(f_parse): Initialize it.
-	* d-exp.y (paren_depth): New global.
-	(d_parse): Initialize it.
-	* c-exp.y (paren_depth): New global.
-	(c_parse): Initialize it.
-	* ada-lex.l (paren_depth): New global.
-	(lexer_init): Initialize it.
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* rust-exp.y (rust_parser::crate_name, rust_parser::super_name)
-	(rust_parser::convert_ast_to_type)
-	(rust_parser::convert_ast_to_expression, rust_lex_tests): Update.
-	* parser-defs.h (struct parser_state) <parser_state>: Add
-	parameters.  Initialize new members.
-	<expression_context_block, expression_context_pc>: New members.
-	* parse.c (expression_context_block, expression_context_pc):
-	Remove globals.
-	(parse_exp_in_context): Update.
-	* p-exp.y: Update all rules.
-	(yylex): Update.
-	* m2-exp.y: Update all rules.
-	(yylex): Update.
-	* go-exp.y (yylex): Update.
-	* f-exp.y (yylex): Update.
-	* d-exp.y: Update all rules.
-	(yylex): Update.
-	* c-exp.y: Update all rules.
-	(lex_one_token, classify_name, yylex, c_parse): Update.
-	* ada-exp.y (write_var_or_type, write_name_assoc): Update.
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* gdbarch.h, gdbarch.c: Rebuild.
-	* gdbarch.sh (dtrace_parse_probe_argument): Change type.
-	* stap-probe.h: 
-	(struct stap_parse_info): Replace "parser_state" with
-	"expr_builder".
-	* parser-defs.h (struct expr_builder): Rename from "parser_state".
-	(parser_state): New class.
-	* parse.c (expr_builder): Rename.
-	(expr_builder::release): Rename.
-	(write_exp_elt, write_exp_elt_opcode, write_exp_elt_sym)
-	(write_exp_elt_msym, write_exp_elt_block, write_exp_elt_objfile)
-	(write_exp_elt_longcst, write_exp_elt_floatcst)
-	(write_exp_elt_type, write_exp_elt_intern, write_exp_string)
-	(write_exp_string_vector, write_exp_bitstring)
-	(write_exp_msymbol, mark_struct_expression)
-	(write_dollar_variable)
-	(insert_type_address_space, increase_expout_size): Replace
-	"parser_state" with "expr_builder".
-	* dtrace-probe.c: Replace "parser_state" with "expr_builder".
-	* amd64-linux-tdep.c (amd64_dtrace_parse_probe_argument): Replace
-	"parser_state" with "expr_builder".
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* rust-exp.y: Replace "parse_language" with method call.
-	* p-exp.y: 
-	(yylex): Replace "parse_language" with method call.
-	* m2-exp.y: 
-	(yylex): Replace "parse_language" with method call.
-	* go-exp.y (classify_name): Replace "parse_language" with method
-	call.
-	* f-exp.y (yylex): Replace "parse_language" with method call.
-	* d-exp.y (lex_one_token): Replace "parse_language" with method
-	call.
-	* c-exp.y: 
-	(lex_one_token, classify_name, yylex): Replace "parse_language"
-	with method call.
-	* ada-exp.y (find_primitive_type, type_char)
-	(type_system_address): Replace "parse_language" with method call.
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* rust-exp.y: Replace "parse_gdbarch" with method call.
-	* parse.c (write_dollar_variable, insert_type_address_space):
-	Replace "parse_gdbarch" with method call.
-	* p-exp.y (parse_type, yylex): Replace "parse_gdbarch" with method
-	call.
-	* objc-lang.c (end_msglist): Replace "parse_gdbarch" with method
-	call.
-	* m2-exp.y (parse_type, parse_m2_type, yylex): Replace
-	"parse_gdbarch" with method call.
-	* go-exp.y (parse_type, classify_name): Replace "parse_gdbarch"
-	with method call.
-	* f-exp.y (parse_type, parse_f_type, yylex): Replace
-	"parse_gdbarch" with method call.
-	* d-exp.y (parse_type, parse_d_type, lex_one_token): Replace
-	"parse_gdbarch" with method call.
-	* c-exp.y (parse_type, parse_number, classify_name): Replace
-	"parse_gdbarch" with method call.
-	* ada-lex.l: Replace "parse_gdbarch" with method call.
-	* ada-exp.y (parse_type, find_primitive_type, type_char)
-	(type_system_address): Replace "parse_gdbarch" with method call.
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* dtrace-probe.c (dtrace_probe::build_arg_exprs): Update.
-	* stap-probe.c (stap_parse_argument): Update.
-	* stap-probe.h (struct stap_parse_info) <stap_parse_info>: Remove
-	initial_size parameter.
-	* rust-exp.y (rust_lex_tests): Update.
-	* parse.c (parser_state): Update.
-	(parse_exp_in_context): Update.
-	* parser-defs.h (struct parser_state) <parser_state>: Remove
-	"initial_size" parameter.
-
-2019-04-04  Tom Tromey  <tom@tromey.com>
-
-	* parser-defs.h (increase_expout_size): Don't declare.
-	* parse.c (increase_expout_size): Now static.
-
-2019-04-04  Thomas Schwinge  <thomas@codesourcery.com>
-
-	* gnu-nat.c (gnu_nat_target::wait): Fix
-	target_waitstatus_to_string call.
-
-2019-04-01  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* eval.c (evaluate_subexp_standard): Handle internal functions
-	during Fortran function call handling.
-
-2019-04-01  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* NEWS: Mention new internal functions.
-	* dwarf2read.c (dwarf2_init_complex_target_type): New function.
-	(read_base_type): Use dwarf2_init_complex_target_type.
-	* value.c (creal_internal_fn): New function.
-	(cimag_internal_fn): New function.
-	(_initialize_values): Register new internal functions.
-
-2019-04-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* infrun.c (stop_all_threads): If debug_infrun, always
-	trace the wait status after wait_one, using
-	target_waitstatus_to_string and target_pid_to_str.
-	(handle_inferior_event): Replace various trace of
-	wait status kind by a single trace.
-	* gdb/gnu-nat.c (gnu_nat_target::wait): Replace local
-	wait status kind image by target_waitstatus_to_string.
-	* target/waitstatus.c (target_waitstatus_to_string): Fix
-	obsolete comment.
+2020-03-12  Tom Tromey  <tom@tromey.com>
 
-2019-04-01  Tom Tromey  <tromey@adacore.com>
+	* symfile-mem.c: Update CORE_ADDR size assert.
 
-	PR symtab/23331:
-	* dwarf2read.c (partial_die_info::read): Handle DW_AT_ranges.
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-04-01  Sergio Durigan Junior  <sergiodj@redhat.com>
-	    Pedro Alves  <palves@redhat.com>
+	* selftest.m4: Move to gdbsupport/.
+	* acinclude.m4: Update path to selftest.m4.
 
-	* top.c (quit_force): Call 'finalize_values'.
-	* value.c (finalize_values): New function.
-	* value.h (finalize_values): Declare.
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-03-30  Eli Zaretskii  <eliz@gnu.org>
+	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Rename to...
+	(SELFTESTS_SRCS): ... this.  Add disasm-selftests.c,
+	gdbarch-selfselftests.c and selftest-arch.c.
+	(SUBDIR_UNITTESTS_OBS): Rename to...
+	(SELFTESTS_OBS): ... this.
+	(COMMON_SFILES): Remove disasm-selftests.c and
+	gdbarch-selftests.c.
+	* configure.ac: Don't add selftest-arch.{c,o} to
+	CONFIG_{SRCS,OBS}.
+	* disasm-selftests.c, gdbarch-selftests.c: Remove GDB_SELF_TEST
+	preprocessor conditions.
 
-	* NEWS: Announce $_gdb_major and $_gdb_minor.
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* top.c (init_gdb_version_vars): New function.
-	(gdb_init): Call init_gdb_version_vars.
+	* configure.ac: Don't source bfd/development.sh.
+	* selftest.m4: Modify comment.
+	* configure: Re-generate.
 
-2019-03-29  Tom Tromey  <tromey@adacore.com>
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
 
-	* printcmd.c (_initialize_printcmd): Add usage lines.  Update some
-	help text.  Remove dead code.
+	* selftest.m4 (GDB_AC_SELFTEST): Error out if $development is
+	not "true" or "false".
+	* configure: Re-generate.
 
-2019-03-29  Keith Seitz  <keiths@redhat.com>
+2020-03-12  Christian Biesinger  <cbiesinger@google.com>
 
-	From Siddhesh Poyarekar:
-	* f-lang.h (f77_get_upperbound): Return LONGEST.
-	(f77_get_lowerbound): Likewise.
-	* f-typeprint.c (f_type_print_varspec_suffix): Expand
-	UPPER_BOUND and LOWER_BOUND to LONGEST.  Use plongest to format
-	print them.
-	(f_type_print_base): Expand UPPER_BOUND to LONGEST.  Use
-	plongest to format print it.
-	* f-valprint.c (f77_get_lowerbound): Return LONGEST.
-	(f77_get_upperbound): Likewise.
-	(f77_get_dynamic_length_of_aggregate): Expand UPPER_BOUND,
-	LOWER_BOUND to LONGEST.
-	(f77_create_arrayprint_offset_tbl): Likewise.
+	* Makefile.in (HFILES_NO_SRCDIR): Add new arm-nbsd-tdep.h file.
+	* arm-nbsd-nat.c (arm_supply_gregset): Moved to arm-nbsd-tdep and
+	renamed to arm_nbsd_supply_gregset.
+	(fetch_register): Update to call arm_nbsd_supply_gregset.
+	(fetch_regs): Remove in favor of fetch_register with a -1 regno.
+	(arm_netbsd_nat_target::fetch_registers): Update.
+	(fetch_elfcore_registers): Removed.
+	(_initialize_arm_netbsd_nat): Removed call to deprecated_add_core_fns.
+	* arm-nbsd-tdep.c (struct arm_nbsd_reg): New struct.
+	(arm_nbsd_supply_gregset): Moved from arm-nbsd-nat.c and updated to
+	not require NetBSD system headers.
+	(arm_nbsd_regset): New struct.
+	(arm_nbsd_iterate_over_regset_sections): New function.
+	(arm_netbsd_init_abi_common): Updated to call
+	set_gdbarch_iterate_over_regset_sections.
+	* arm-nbsd-tdep.h: New file.
 
-2019-03-29  Keith Seitz  <keiths@redhat.com>
+2020-03-11  Kevin Buettner  <kevinb@redhat.com>
 
-	* ada-lang.c (ada_template_to_fixed_record_type_1): Use
-	%s/pulongest for TYPE_LENGTH instead of %d in format
-	strings.
-	* ada-typerint.c (ada_print_type): Likewise.
-	* amd64-windows-tdep.c (amd64_windows_store_arg_in_reg): Likewise.
-	* compile/compile-c-support.c (generate_register_struct): Likewise.
-	* gdbtypes.c (recursive_dump_type): Likewise.
-	* gdbtypes.h (struct type) <length>: Change type to ULONGEST.
-	* m2-typeprint.c (m2_array):  Use %s/pulongest for TYPE_LENGTH
-	instead of %d in format strings.
-	* riscv-tdep.c (riscv_type_alignment): Cast second argument
-	to std::min to ULONGEST.
-	* symmisc.c (print_symbol): Use %s/pulongest for TYPE_LENGTH
-	instead of %d in format strings.
-	* tracepoint.c (info_scope_command): Likewise.
-	* typeprint.c (print_offset_data::update)
-	(print_offset_data::finish): Likewise.
-	* xtensa-tdep.c (xtensa_store_return_value)
-	(xtensa_push_dummy_call): Likewise.
+	* symtab.c (find_pc_sect_line): Add check which prevents infinite
+	recursion.
+	
+2020-03-11  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-03-28  Jon Turney  <jon.turney@dronecode.org.uk>
+	* configure: Re-generate.
 
-	* windows-nat.c (display_selector): Fixed format specifications
-	for 64-bit Cygwin.
+2020-03-11  Tom Tromey  <tromey@adacore.com>
 
-2019-03-28  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* ada-typeprint.c (print_choices): Fix comment.
 
-	* infrun.c (follow_exec): Call target_terminal::ours_for_output.
+2020-03-11  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-03-28  Sandra Loosemore  <sandra@codesourcery.com>
+	* buildsyms.c (buildsym_compunit::record_line): Avoid accessing
+	previous item in the list, when the list has no items.
 
-	* nios2-tdep.h (struct gdbarch_tdep): Add is_kernel_helper.
-	* nios2-tdep.c (nios2_get_next_pc): Skip over kernel helpers.
-	* nios2-linux-tdep.c (nios2_linux_is_kernel_helper): New.
-	(nios2_linux_init_abi): Install it.
+2020-03-11  Tom de Vries  <tdevries@suse.de>
 
-2019-03-28  Alan Hayward  <alan.hayward@arm.com>
+	* dwarf2/loc.c (dwarf2_evaluate_property): Handle NULL frame in
+	PROP_LOCLIST handling code.
 
-	* aarch64-tdep.c (aarch64_vnv_type): Use vector types.
+2020-03-10  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-03-28  Alan Hayward  <alan.hayward@arm.com>
-
-	* features/aarch64-sve.c (create_feature_aarch64_sve): Add q view.
+	* buildsym-legacy.c (record_line): Pass extra parameter to
+	record_line.
+	* buildsym.c (buildsym_compunit::record_line): Take an extra
+	parameter, reduce duplication in the line table, and record the
+	is_stmt flag in the line table.
+	* buildsym.h (buildsym_compunit::record_line): Add extra
+	parameter.
+	* disasm.c (do_mixed_source_and_assembly_deprecated): Ignore
+	non-statement lines.
+	* dwarf2/read.c (dwarf_record_line_1): Add extra parameter, pass
+	this to the symtab builder.
+	(dwarf_finish_line): Pass extra parameter to dwarf_record_line_1.
+	(lnp_state_machine::record_line): Pass a suitable is_stmt flag
+	through to dwarf_record_line_1.
+	* infrun.c (process_event_stop_test): When stepping, don't stop at
+	a non-statement instruction, and only refresh the step info when
+	we land in the middle of a line's range.  Also add an extra
+	comment.
+	* jit.c (jit_symtab_line_mapping_add_impl): Initialise is_stmt
+	field.
+	* record-btrace.c (btrace_find_line_range): Only record lines
+	marked as is-statement.
+	* stack.c (frame_show_address): Show the frame address if we are
+	in a non-statement sal.
+	* symmisc.c (dump_symtab_1): Print the is_stmt flag.
+	(maintenance_print_one_line_table): Print a header for the is_stmt
+	column, and include is_stmt information in the output.
+	* symtab.c (find_pc_sect_line): Find lines marked as statements in
+	preference to non-statements.
+	(find_pcs_for_symtab_line): Prefer is-statement entries.
+	(find_line_common): Likewise.
+	* symtab.h (struct linetable_entry): Add is_stmt field.
+	(struct symtab_and_line): Likewise.
+	* xcoffread.c (arrange_linetable): Initialise is_stmt field when
+	arranging the line table.
+
+2020-03-07  Tom de Vries  <tdevries@suse.de>
 
-2019-03-24  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-	    Tom Tromey  <tromey@adacore.com>
+	* dwarf2/read.c (read_typedef): Treat anonymous typedef as forwarder
+	DIE.
 
-	* minsyms.c (minimal_symbol_upper_bound): Fix buffer overflow.
+2020-03-07  Tom Tromey  <tom@tromey.com>
 
-2019-03-26  Joel Brobecker  <brobecker@adacore.com>
+	* valops.c (value_literal_complex): Remove obsolete comment.
+	* gdbtypes.h (enum type_code) <TYPE_CODE_FLT>: Remove obsolete
+	comment.
 
-	* gdb-gdb.py.in (StructMainTypePrettyPrinter.bound_img): New method.
-	(StructMainTypePrettyPrinter.bounds_img): Use new "bound_img"
-	method to compute the bounds of range types. Also print "[evaluated]"
-	if the bounds' values come from a dynamic evaluation.
+2020-03-06  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-03-26  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* infrun.h: Forward-declare thread_info.
+	(set_step_info): Add thread_info parameter, add doc.
+	* infrun.c (set_step_info): Add thread_info parameter, move doc
+	to header.
+	* infrun.c (process_event_stop_test): Pass thread to
+	set_step_info call.
+	* infcmd.c (set_step_frame): Add thread_info pointer, pass it to
+	set_step_info.
+	(prepare_one_step): Add thread_info parameter, pass it to
+	set_step_frame and prepare_one_step (recursive) call.
+	(step_1): Pass thread to prepare_one_step call.
+	(step_command_fsm::should_stop): Pass thread to
+	prepare_one_step.
+	(until_next_fsm): Pass thread to set_step_frame call.
+	(finish_command): Pass thread to set_step_info call.
 
-	* cp-valprint.c (cp_print_value_fields): Don't print trailing
-	whitespace when pretty printing is on.
+2020-03-06  Hannes Domani  <ssbssa@yahoo.de>
 
-2019-03-26  Alan Hayward  <alan.hayward@arm.com>
+	* windows-tdep.c (windows_solib_create_inferior_hook):
+	Check if inferior is running.
 
-	* ppc-linux-nat.c: Add include.
+2020-03-06  Tom de Vries  <tdevries@suse.de>
 
-2019-03-26  Alan Hayward  <alan.hayward@arm.com>
+	* NEWS: Fix "the the".
+	* ctfread.c: Same.
 
-	* NEWS: Mention AArch64 Pointer Authentication.
+2020-03-06  Tom de Vries  <tdevries@suse.de>
 
-2019-03-26  Alan Hayward  <alan.hayward@arm.com>
+	* psymtab.c (psymtab_to_symtab): Don't print "done.".
 
-	* arm-linux-nat.c: Add include.
+2020-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-03-25  Simon Marchi  <simon.marchi@polymtl.ca>
+	* .dir-locals.el: Add a comment referencing the other copies of
+	this file.
 
-	* source-cache.c (source_cache::get_source_lines): Re-read
-	fullname after calling open_source_file.
+2020-03-05  John Baldwin  <jhb@FreeBSD.org>
 
-2019-03-25  John Baldwin  <jhb@FreeBSD.org>
+	* fbsd-tdep.c (fbsd_make_corefile_notes): Use std::string for
+	psargs.
 
-	* NEWS: Mention TLS support for FreeBSD.
+2020-03-05  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-2019-03-25  Tom Tromey  <tromey@adacore.com>
+	* .gitattributes: New file.
 
-	* minsyms.c (BUNCH_SIZE): Update comment.
-	(~minimal_symbol_reader): Remove old comment.
-	(compact_minimal_symbols): Update comment.
-	(minimal_symbol_reader::install): Remove old comment.  Update
-	other comments.
+2020-03-04  Tom Tromey  <tom@tromey.com>
 
-2019-03-25  Alan Hayward  <alan.hayward@arm.com>
+	* symmisc.c (print_symbol_bcache_statistics)
+	(print_objfile_statistics): Update.
+	* symfile.c (allocate_symtab): Use intern.
+	* psymtab.c (partial_symtab::partial_symtab): Use intern.
+	* objfiles.h (struct objfile_per_bfd_storage) <filename_cache,
+	macro_cache>: Remove.
+	<string_cache>: New member.
+	(struct objfile) <intern>: New methods.
+	* elfread.c (elf_symtab_read): Use intern.
+	* dwarf2/read.c (fixup_go_packaging): Intern package name.
+	(dwarf2_compute_name, dwarf2_physname)
+	(create_dwo_unit_in_dwp_v1, create_dwo_unit_in_dwp_v2): Intern
+	names.
+	(guess_partial_die_structure_name): Update.
+	(partial_die_info::fixup): Intern name.
+	(dwarf2_canonicalize_name): Change parameter to objfile.  Intern
+	name.
+	(dwarf2_name): Intern name.  Update.
+	* buildsym.c (buildsym_compunit::get_macro_table): Use
+	string_cache.
+
+2020-03-04  Tom Tromey  <tom@tromey.com>
+
+	* jit.c (bfd_open_from_target_memory): Make "target" const.
+	* corefile.c (gnutarget): Now const.
+	* gdbcore.h (gnutarget): Now const.
+
+2020-03-04  Hannes Domani  <ssbssa@yahoo.de>
+
+	* NEWS: Mention support for WOW64 processes.
+	* amd64-windows-nat.c (amd64_mappings): Rename and remove static.
+	(amd64_windows_segment_register_p): Remove static.
+	(_initialize_amd64_windows_nat): Update.
+	* configure.nat <windows> (NATDEPFILES): Add i386-windows-nat.o.
+	* i386-windows-nat.c (context_offset): Update.
+	(i386_mappings): Rename and remove static.
+	(i386_windows_segment_register_p): Remove static.
+	(_initialize_i386_windows_nat): Update.
+	* windows-nat.c (STATUS_WX86_BREAKPOINT): New macro.
+	(STATUS_WX86_SINGLE_STEP): New macro.
+	(EnumProcessModulesEx): New macro.
+	(Wow64SuspendThread): New macro.
+	(Wow64GetThreadContext): New macro.
+	(Wow64SetThreadContext): New macro.
+	(Wow64GetThreadSelectorEntry): New macro.
+	(windows_set_context_register_offsets): Add static.
+	(windows_set_segment_register_p): Likewise.
+	(windows_add_thread): Adapt for WOW64 processes.
+	(windows_fetch_one_register): Likewise.
+	(windows_nat_target::fetch_registers): Likewise.
+	(windows_store_one_register): Likewise.
+	(display_selector): Likewise.
+	(display_selectors): Likewise.
+	(handle_exception): Likewise.
+	(windows_continue): Likewise.
+	(windows_nat_target::resume): Likewise.
+	(windows_add_all_dlls): Likewise.
+	(do_initial_windows_stuff): Likewise.
+	(windows_nat_target::attach): Likewise.
+	(windows_get_exec_module_filename): Likewise.
+	(windows_nat_target::create_inferior): Likewise.
+	(windows_xfer_siginfo): Likewise.
+	(_initialize_loadable): Initialize Wow64SuspendThread,
+	Wow64GetThreadContext, Wow64SetThreadContext,
+	Wow64GetThreadSelectorEntry and EnumProcessModulesEx.
+	* windows-nat.h (windows_set_context_register_offsets):
+	Remove declaration.
+	(windows_set_segment_register_p): Likewise.
+	(i386_windows_segment_register_p): Add declaration.
+	(amd64_windows_segment_register_p): Likewise.
+
+2020-03-04  Luis Machado  <luis.machado@linaro.org>
+
+	Revert aa66aac47b4dd38f9524ddb5546c08cc09930d37 due to regressions
+	in "info registers" for AArch64/ARM.
+
+	The change caused "info registers" to not print GPR's.
+
+	gdb/ChangeLog:
+
+	2020-02-01  Shahab Vahedi  <shahab@synopsys.com>
+
+	* target-descriptions.c (tdesc_register_in_reggroup_p): Return 0
+	when reg->group is empty and reggroup is not.
+
+2020-03-03  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/frame.c (struct dwarf2_frame_cache)
+	<checked_tailcall_bottom, entry_cfa_sp_offset,
+	entry_cfa_sp_offset_p>: Remove members.
+	(dwarf2_frame_cache): Call dwarf2_tailcall_sniffer_first.
+	(dwarf2_frame_prev_register): Don't call
+	dwarf2_tailcall_sniffer_first.
+	(dwarf2_append_unwinders): Don't append tailcall unwinder.
+	* frame-unwind.c (add_unwinder): New fuction.
+	(frame_unwind_init): Use it.  Add tailcall unwinder.
+
+2020-03-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
+
+	* f-valprint.c (f_val_print): Handle TYPE_CODE_BOOL, any non-zero
+	value should be printed as true.
+
+2020-03-03  Hannes Domani  <ssbssa@yahoo.de>
+
+	* windows-tdep.c (windows_solib_create_inferior_hook): New function.
+	(windows_init_abi): Set and use windows_so_ops.
+
+2020-03-03  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* printcmd.c (print_c_string): Check also for TYPE_CODE_PTR
+	when verifying if dealing with a convenience variable.
+
+2020-03-03  Luis Machado  <luis.machado@linaro.org>
+
+	* auxv.c (default_print_auxv_entry): Add new AUXV entries.
+
+2020-03-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (gdbarch_supports_displaced_stepping): New.
+	(use_displaced_stepping): Break up conditions in smaller pieces.
+	Use gdbarch_supports_displaced_stepping.
+	(displaced_step_prepare_throw): Use
+	gdbarch_supports_displaced_stepping.
+
+2020-03-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention new behaviour of the history filename.
+	* top.c (write_history_p): Add comment.
+	(show_write_history_p): Add header comment, give a different
+	message when history writing is on, but the history filename is
+	empty.
+	(history_filename): Add comment.
+	(history_filename_empty): New function.
+	(show_history_filename): Add header comment, give a different
+	message when the filename is empty.
+	(init_history): Compare history_filename against nullptr, and only
+	read history if the filename is not empty.
+	(set_history_filename): Add header comment, and only make
+	non-empty filenames absolute.
+	(init_main): Make the filename argument to 'set history filename'
+	optional.
+
+2020-03-02  Christian Biesinger  <cbiesinger@google.com>
+
+	* arm-nbsd-nat.c (arm_supply_fparegset): Rename to...
+	(arm_supply_vfpregset): ...this, and update to use VFP registers.
+	(fetch_fp_register): Update.
+	(fetch_fp_regs): Update.
+	(store_fp_register): Update.
+	(store_fp_regs): Update.
+	(arm_netbsd_nat_target::read_description): New function.
+	(fetch_elfcore_registers): Update.
+
+2020-03-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* remote.c (remote_target::remote_parse_stop_reply): Don't use the
+	general_thread if the stop reply is missing a thread-id.
+	(remote_target::process_stop_reply): Use the first non-exited
+	thread if the target didn't pass a thread-id.
+	* infrun.c (do_target_wait): Move call to
+	switch_to_inferior_no_thread to ....
+	(do_target_wait_1): ... here.
+
+2020-02-29  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* debuginfod-support.c: Include defs.h first.
+
+2020-02-28  Tom de Vries  <tdevries@suse.de>
+
+	* symfile.c (set_initial_language): Use default language for lookup.
+
+2020-02-28  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (cutu_reader::init_tu_and_read_dwo_dies): Remove
+	reader variable, pass `this` to read_cutu_die_from_dwo.
 
-	* s390-linux-nat.c: Add include.
+2020-02-27  Aaron Merey  <amerey@redhat.com>
 
-2019-03-25  Alan Hayward  <alan.hayward@arm.com>
+	* source.c (open_source_file): Check for nullptr when computing
+	srcpath.
 
-	* aarch64-linux-nat.c (aarch64_linux_nat_target::read_description):
-	Call linux_get_hwcap.
-	* aarch64-linux-tdep.c (aarch64_linux_core_read_description):
-	Likewise.
-	(aarch64_linux_get_hwcap): Remove function.
-	* aarch64-linux-tdep.h (aarch64_linux_get_hwcap): Remove
-	declaration.
-	* arm-linux-nat.c (arm_linux_nat_target::read_description):Call
-	linux_get_hwcap.
-	* arm-linux-tdep.c (arm_linux_core_read_description): Likewise.
-	* linux-tdep.c (linux_get_hwcap): Add function.
-	(linux_get_hwcap2): Likewise.
-	* linux-tdep.h (linux_get_hwcap): Add declaration.
-	(linux_get_hwcap2): Likewise.
-	* ppc-linux-nat.c (ppc_linux_get_hwcap): Remove function.
-	(ppc_linux_get_hwcap2): Likewise.
-	(ppc_linux_nat_target::region_ok_for_hw_watchpoint): Call
-	linux_get_hwcap.
-	(ppc_linux_nat_target::insert_watchpoint): Likewise.
-	(ppc_linux_nat_target::watchpoint_addr_within_range): Likewise.
-	(ppc_linux_nat_target::read_description): Likewise.
-	* ppc-linux-tdep.c (ppc_linux_core_read_description): Likewise.
-	* s390-linux-nat.c: Likewise.
-	* s390-linux-tdep.c (s390_core_read_description): Likewise.
-
-2019-03-24  Tom Tromey  <tom@tromey.com>
-
-	* ada-lang.c (standard_lookup): Simplify initialization.
-	(ada_lookup_symbol_nonlocal): Simplify return.
-	* solib-spu.c (spu_lookup_lib_symbol): Simplify return.
-	* solib-darwin.c (darwin_lookup_lib_symbol): Simplify return.
-	* solib-svr4.c (elf_lookup_lib_symbol): Simplify return.
-	* rust-lang.c (rust_lookup_symbol_nonlocal): Simplify
-	initialization.
-	* solib.c (solib_global_lookup): Simplify.
-	* symtab.c (null_block_symbol): Remove.
-	(symbol_cache_lookup): Simplify returns.
-	(lookup_language_this): Simplify returns.
-	(lookup_symbol_aux): Simplify return.
-	(lookup_local_symbol): Simplify returns.
-	(lookup_global_symbol_from_objfile): Simplify return.
-	(lookup_symbol_in_objfile_symtabs)
-	(lookup_symbol_in_objfile_from_linkage_name): Simplify return.
-	(lookup_symbol_via_quick_fns, lookup_symbol_in_static_block)
-	(lookup_static_symbol, lookup_global_symbol): Simplify return.
-	* cp-namespace.c (cp_lookup_bare_symbol)
-	(cp_search_static_and_baseclasses, cp_lookup_symbol_via_imports)
-	(cp_lookup_symbol_via_all_imports, cp_lookup_nested_symbol_1)
-	(cp_lookup_nested_symbol): Don't use null_block_symbol.
-	(cp_lookup_symbol_via_imports): Simplify initialization.
-	(find_symbol_in_baseclass): Likewise.
-	* symtab.h (null_block_symbol): Remove.
-	* d-namespace.c (d_lookup_symbol): Don't use null_block_symbol.
-	(d_lookup_nested_symbol, d_lookup_symbol_imports)
-	(d_lookup_symbol_module): Likewise.
-	(find_symbol_in_baseclass): Simplify initialization.
-
-2019-03-24  Tom Tromey  <tom@tromey.com>
-
-	* expression.h: Don't include symtab.h.
-	(struct block): Forward declare.
-
-2019-03-24  Tom Tromey  <tom@tromey.com>
-
-	* c-exp.y (typebase): Remove casts.
-	* gdbtypes.c (lookup_unsigned_typename, )
-	(lookup_signed_typename): Remove cast.
-	* eval.c (parse_to_comma_and_eval): Remove cast.
-	* parse.c (write_dollar_variable): Remove cast.
-	* block.h (struct block) <superblock>: Now const.
-	* symfile-debug.c (debug_qf_map_matching_symbols): Update.
-	* psymtab.c (psym_map_matching_symbols): Make "block" const.
-	(map_block): Make "block" const.
-	* symfile.h (struct quick_symbol_functions)
-	<map_matching_symbols>: Constify block argument to "callback".
-	* symtab.c (basic_lookup_transparent_type_quick): Make "block"
-	const.
-	(find_pc_sect_compunit_symtab): Make "b" const.
-	(find_symbol_at_address): Likewise.
-	(search_symbols): Likewise.
-	* dwarf2read.c (dw2_lookup_symbol): Make "block" const.
-	(dw2_debug_names_lookup_symbol): Likewise.
-	(dw2_map_matching_symbols): Update.
-	* p-valprint.c (pascal_val_print): Remove "block".
-	* ada-lang.c (ada_add_global_exceptions): Make "b" const.
-	(aux_add_nonlocal_symbols): Make "block" const.
-	(resolve_subexp): Remove cast.
-	* linespec.c (iterate_over_all_matching_symtabs): Make "block"
-	const.
-	(iterate_over_file_blocks): Likewise.
-	* f-exp.y (%union) <bval>: Remove.
-	* coffread.c (patch_opaque_types): Make "b" const.
-	* spu-tdep.c (spu_catch_start): Make "block" const.
-	* c-valprint.c (print_unpacked_pointer): Remove "block".
-	* symmisc.c (dump_symtab_1): Make "b" const.
-	(block_depth): Make "block" const.
-	* d-exp.y (%union) <bval>: Remove.
-	* cp-support.h (cp_lookup_rtti_type): Update.
-	* cp-support.c (cp_lookup_rtti_type): Make "block" const.
-	* psymtab.c (psym_lookup_symbol): Make "block" const.
-	(maintenance_check_psymtabs): Make "b" const.
-	* python/py-framefilter.c (extract_sym): Make "sym_block" const.
-	(enumerate_locals, enumerate_args): Update.
-	* python/py-symtab.c (stpy_global_block): Make "block" const.
-	(stpy_static_block): Likewise.
-	* inline-frame.c (block_starting_point_at): Make "new_block"
-	const.
-	* block.c (find_block_in_blockvector): Make return type const.
-	(blockvector_for_pc_sect): Make "b" const.
-	(find_block_in_blockvector): Make "b" const.
-
-2019-03-23  Tom Tromey  <tom@tromey.com>
-
-	* varobj.c (varobj_create): Update.
-	* symfile.c (clear_symtab_users): Don't reset innermost_block.
-	* printcmd.c (display_command, do_one_display): Don't reset
-	innermost_block.
-	* parser-defs.h (enum innermost_block_tracker_type): Move to
-	expression.h.
-	(innermost_block): Update comment.
-	* parse.c (parse_exp_1): Add tracker_types parameter.
-	(parse_exp_in_context): Rename from parse_exp_in_context_1.  Add
-	tracker_types parameter.  Reset innermost_block.
-	(parse_exp_in_context): Remove.
-	(parse_expression_for_completion): Update.
-	* objfiles.c (~objfile): Don't reset expression_context_block or
-	innermost_block.
-	* expression.h (enum innermost_block_tracker_type): Move from
-	parser-defs.h.
-	(parse_exp_1): Add tracker_types parameter.
-	* breakpoint.c (set_breakpoint_condition, watch_command_1): Don't
-	reset innermost_block.
-
-2019-03-23  Tom Tromey  <tom@tromey.com>
-
-	* objfiles.h: Include bcache.h.
-
-2019-03-23  Tom Tromey  <tom@tromey.com>
-
-	* linespec.c (get_current_search_block): Use
-	scoped_restore_current_language.
-	* symmisc.c (dump_symtab): Use scoped_restore_current_language.
-
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
-
-	* aarch64-linux-tdep.c
-	(aarch64_linux_iterate_over_regset_sections): Check for pauth
-	section.
-	* aarch64-linux-tdep.h (AARCH64_LINUX_SIZEOF_PAUTH): New define.
-
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
-
-	* aarch64-tdep.c (aarch64_analyze_prologue): Check for pauth
-	instructions.
-	(aarch64_analyze_prologue_test): Add PACIASP test.
-	(aarch64_prologue_prev_register): Unmask PC value.
-
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
-
-	* aarch64-tdep.c (aarch64_frame_unmask_address): New function.
-	(aarch64_dwarf2_prev_register): Unmask PC value.
-	(aarch64_dwarf2_frame_init_reg): Init pauth registers.
-	(aarch64_execute_dwarf_cfa_vendor_op): Check for
-	DW_CFA_AARCH64_negate_ra_state.
-	(aarch64_gdbarch_init): Add aarch64_execute_dwarf_cfa_vendor_op.
+2020-02-27  Tom Tromey  <tromey@adacore.com>
 
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
+	* dwarf2/read.c (struct field_info) <nfields>: Now a method, not a
+	member.
+	(dwarf2_add_field): Don't update nfields.
+	(dwarf2_attach_fields_to_type, process_structure_scope): Update.
 
-	* aarch64-tdep.c (aarch64_dwarf_reg_to_regnum): Check for pauth
-	registers.
-	(aarch64_pseudo_register_name): Likewise.
-	(aarch64_pseudo_register_type): Likewise.
-	(aarch64_pseudo_register_reggroup_p): Likewise.
-	(aarch64_gdbarch_init): Add pauth registers.
-	* aarch64-tdep.h (AARCH64_DWARF_PAUTH_RA_STATE): New define.
-	(AARCH64_DWARF_PAUTH_DMASK): Likewise.
-	(AARCH64_DWARF_PAUTH_CMASK): Likewise.
-	(struct gdbarch_tdep): Add regnum for ra_state.
-
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
+2020-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* arch/aarch64.h (AARCH64_PAUTH_REGS_SIZE): New define.
+	* gdbtypes.c (create_array_type_with_stride): Use std::abs not
+	abs.
 
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
+2020-02-26  Tom Tromey  <tom@tromey.com>
 
-	* aarch64-linux-nat.c (fetch_pauth_masks_from_thread): New
-	function.
-	(aarch64_linux_nat_target::fetch_registers): Read pauth registers.
-	* aarch64-tdep.c (aarch64_cannot_store_register): New function.
-	(aarch64_gdbarch_init): Add puth registers.
-	* aarch64-tdep.h (struct gdbarch_tdep): Add pauth features.
-	* arch/aarch64.h (AARCH64_PAUTH_DMASK_REGNUM): New define.
-	(AARCH64_PAUTH_CMASK_REGNUM): Likewise.
+	* dwarf2/read.c (struct dwarf2_include_psymtab): New.
+	(dwarf2_create_include_psymtab): Use dwarf2_include_psymtab.
+	(dwarf2_psymtab::expand_psymtab, dwarf2_psymtab::readin_p)
+	(dwarf2_psymtab::get_compunit_symtab): Remove null checks for
+	per_cu_data.
 
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
+2020-02-26  Tom Tromey  <tom@tromey.com>
 
-	* aarch64-linux-nat.c
-	(aarch64_linux_nat_target::read_description): Read PACA hwcap.
-	* aarch64-linux-tdep.c
-	(aarch64_linux_core_read_description): Likewise.
-	(aarch64_linux_get_hwcap): New function.
-	* aarch64-linux-tdep.h (AARCH64_HWCAP_PACA): New define.
-	(aarch64_linux_get_hwcap): New declaration.
+	* dwarf2/index-write.c (psym_index_map): Change type.
+	(add_address_entry_worker, write_one_signatured_type)
+	(recursively_count_psymbols, recursively_write_psymbols)
+	(class debug_names, psyms_seen_size, write_gdbindex)
+	(write_debug_names): Use partial_symtab, not dwarf2_psymtab.
 
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
+2020-02-26  Aaron Merey  <amerey@redhat.com>
 
-	* aarch64-linux-nat.c
-	(aarch64_linux_nat_target::read_description): Add pauth param.
-	* aarch64-linux-tdep.c
-	(aarch64_linux_core_read_description): Likewise.
-	* aarch64-tdep.c (struct target_desc): Add in pauth.
-	(aarch64_read_description): Add pauth param.
-	(aarch64_gdbarch_init): Likewise.
-	* aarch64-tdep.h (aarch64_read_description): Likewise.
-	* arch/aarch64.c (aarch64_create_target_description): Likewise.
-	* arch/aarch64.h (aarch64_create_target_description): Likewise.
-	* features/Makefile: Add new files.
-	* features/aarch64-pauth.c: New file.
-	* features/aarch64-pauth.xml: New file.
-
-2019-03-20  Tom Tromey  <tromey@adacore.com>
-
-	* infrun.c (handle_inferior_event): Rename from
-	handle_inferior_event_1.  Create a scoped_value_mark.
-	(handle_inferior_event): Remove.
-
-2019-03-19  Tom Tromey  <tromey@adacore.com>
-
-	* mi/mi-interp.c (mi_on_normal_stop_1): Only show displays once.
-	* infrun.h (print_stop_event): Add "displays" parameter.
-	* infrun.c (print_stop_event): Add "displays" parameter.
-
-2019-03-19  Pedro Alves  <palves@redhat.com>
-
-	* tui/tui-out.c (tui_ui_out::do_field_string): Simplify.
-	(tui_ui_out::do_text): Add comments.  Reset M_LINE to 0 instead of
-	to -1.  Fix TABs vs spaces.
-	(tui_ui_out::tui_ui_out): Don't initialize fields here.
-	* tui/tui-out.h (tui_ui_out) Add intro comments.
-	<m_line, m_start_of_line>: In-class initialize, and add describing
-	comment.
+	* Makefile.in: Handle optional debuginfod support.
+	* NEWS: Update.
+	* README: Add --with-debuginfod summary.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Handle optional debuginfod support.
+	* debuginfod-support.c: debuginfod helper functions.
+	* debuginfod-support.h: Ditto.
+	* doc/gdb.texinfo: Add --with-debuginfod to configure options
+	summary.
+	* dwarf2/read.c (dwarf2_get_dwz_file): Query debuginfod servers
+	when a dwz file cannot be found.
+	* elfread.c (elf_symfile_read): Query debuginfod servers when a
+	debuginfo file cannot be found.
+	* source.c (open_source_file): Query debuginfod servers when a
+	source file cannot be found.
+	* top.c (print_gdb_configuration): Include
+	--{with,without}-debuginfod in the output.
 
-2019-03-18  Alan Hayward  <alan.hayward@arm.com>
+2020-02-26  JÃ©rÃ©mie Galarneau  <jeremie.galarneau@efficios.com>
 
-	* arm-linux-nat.c (arm_linux_insert_hw_breakpoint1): Fix
-	variable names.
-	(arm_linux_remove_hw_breakpoint1): Use a gdb::function_view.
+	* thread.c (thr_try_catch_cmd): Print thread name.
 
-2019-03-18  Pedro Alves  <palves@redhat.com>
-	    Eli Zaretskii <eliz@gnu.org>
+2020-02-26  Simon Marchi  <simon.marchi@efficios.com>
 
-	* tui/tui-out.c (tui_ui_out::tui_ui_out): Fix initialization of
-	m_line and m_start_of_line.
+	* dwarf2/loc.h (dwarf2_fetch_die_loc_sect_off,
+	dwarf2_fetch_die_loc_cu_off, dwarf2_fetch_constant_bytes,
+	dwarf2_fetch_die_type_sect_off): Move to...
+	* dwarf2/read.h (dwarf2_fetch_die_loc_sect_off,
+	dwarf2_fetch_die_loc_cu_off, dwarf2_fetch_constant_bytes,
+	dwarf2_fetch_die_type_sect_off): ... here.
+	* dwarf2/read.c (dwarf2_fetch_die_loc_sect_off,
+	dwarf2_fetch_die_loc_cu_off, dwarf2_fetch_constant_bytes,
+	dwarf2_fetch_die_type_sect_off): Move doc to header file.
 
-2019-03-18  Eli Zaretskii  <eliz@gnu.org>
+2020-02-26  Tom de Vries  <tdevries@suse.de>
 
-	* tui/tui-io.c (gdb_wgetch): Don't echo CR.
-	(tui_getc): When gdb_wgetch returns a CR, behave the same as when
-	it returns a newline.  This fixes a regression in TU mode, whereby
-	the next line is output on the same screen line as the user input.
+	PR gdb/25603
+	* symfile.c (set_initial_language): Exit-early if
+	language_mode == language_mode_manual.
 
-2019-03-18  Tom Tromey  <tromey@adacore.com>
+2020-02-25  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* minsyms.c (minimal_symbol_reader::install): Remove call to
-	obstack_blank.
+	* dwarf2/loc.h (dwarf2_read_addr_index): Move...
+	* dwarf2/read.h (dwarf2_read_addr_index): ... here.
+	* dwarf2/read.c (dwarf2_read_addr_index): Move doc to header.
 
-2019-03-18  Pedro Alves  <palves@redhat.com>
+2020-02-25  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* tui/tui-io.c (reverse_mode_p, reverse_save_bg, reverse_save_fg):
-	New globals.
-	(apply_style): New, factored out from ...
-	(apply_ansi_escape): ... this.  Handle reverse video mode.
-	(tui_set_reverse_mode): New function.
-	* tui/tui-io.h (tui_set_reverse_mode): New declaration.
-	* tui/tui-winsource.c (tui_show_source_line): Use
-	tui_set_reverse_mode instead of setting A_STANDOUT.
-	* ui-style.h (struct ui_file_style) <set_reverse, set_fg, set_bg>:
-	New setter methods.
+	* gdbtypes.c (create_array_type_with_stride): Handle negative
+	array strides.
+	* valarith.c (value_subscripted_rvalue): Likewise.
 
-2019-03-18  Hannes Domani  <ssbssa@yahoo.de>
+2020-02-25  Luis Machado  <luis.machado@linaro.org>
 
-	* tui/tui-source.c (copy_source_line): Fix handling of 'column'.
-	Handle tabs.
+	* aarch64-tdep.c (aarch64_vnv_type): Fix comment typo.
 
-2019-03-18  Tom Tromey  <tromey@adacore.com>
+2020-02-25  Simon Marchi  <simon.marchi@polymtl.ca>
 
-	* ada-lang.c (empty_array): Add "high" parameter.
-	(ada_evaluate_subexp): Update.
+	* loc.h (dwarf2_get_die_type): Move to...
+	* read.h (dwarf2_get_die_type): ... here.
+	* read.c (dwarf2_get_die_type): Move doc to header.
 
-2019-03-17  Sergei Trofimovich <siarheit@google.com>
+2020-02-25  Joel Brobecker  <brobecker@adacore.com>
 
-	* unittests/string_view-selftests.c: Define
-	_initialize_string_view_selftests unconditionally.
+	* copypright.py (EXCLUDE_LIST): Add 'gnulib/config.in' and
+	'gnulib/Makefile.in' to the list.
 
-2019-03-17  Vladimir Martyanov  <vilgeforce@gmail.com>
+2020-02-24  Tom Tromey  <tom@tromey.com>
 
-	PR gdb/24350
-	* windows-nat.c (windows_make_so): Remove unused text_vma variable.
+	* dwarf2/read.h (struct type_unit_unshareable) <num_symtabs>:
+	Remove.
+	* dwarf2/read.c (dwarf2_cu::setup_type_unit_groups): Use
+	XOBNEWVEC.
 
-2019-03-17  Vladimir Martyanov  <vilgeforce@gmail.com>
+2020-02-24  Tom Tromey  <tom@tromey.com>
 
-	PR gdb/24351
-	* windows-nat.c (display_selector): Fix format specifiers.
+	* dwarf2/read.h (struct dwarf2_per_cu_data) <type_unit_group_p>:
+	New method.
+	* dwarf2/read.c (IS_TYPE_UNIT_GROUP): Remove.
+	(dw2_do_instantiate_symtab, dw2_get_file_names)
+	(build_type_psymtab_dependencies, load_full_type_unit): Update.
 
-2019-03-17  Eli Zaretskii  <eliz@gnu.org>
+2020-02-24  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.c (tui_set_is_exec_point_at): Call
-	tui_refill_source_window instead of tui_refresh_win, to update the
-	current execution line.  This fixes redisplay of the current line
-	when stepping through the code with "next" or "step".
+	* dwarf2read.c (dwarf2_build_psymtabs_hard): Use
+	make_scoped_restore.
+	(dwarf2_psymtab::read_symtab): Don't clear
+	reading_partial_symbols.
 
-2019-03-16  Eli Zaretskii  <eliz@gnu.org>
+2020-02-24  Tom de Vries  <tdevries@suse.de>
 
-	* source-cache.c (source_cache::get_source_lines): Call
-	find_source_lines to initialize s->nlines.  This fixes vertical
-	scrolling of TUI source window when the DOWN arrow is pressed.
+	PR gdb/25592
+	* stack.c (iterate_over_block_locals): Handle LOC_CONST.
 
-2019-03-16  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+2020-02-24  Tom de Vries  <tdevries@suse.de>
 
-	* auto-load.c (_initialize_auto_load): Fix 'This options has'.
-	linux-thread-db.c (_initialize_thread_db): Likewise.
+	* tui/tui-layout.c (_initialize_tui_layout): Fix help messages for
+	commands layout next/prev/regs.
 
-2019-03-16  Eli Zaretskii  <eliz@gnu.org>
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-	* tui/tui-winsource.c (tui_show_source_line): Revert "Use
-	wclrtoeol in tui_show_source_line".  This reverts changes made in
-	commit 4a3045920bbe4e50a0f4920b0fdc4e88ef23015c.
+	* dwarf2/loc.h (dwarf2_compile_expr_to_ax): Don't declare.
+	* dwarf2/loc.c (dwarf2_compile_expr_to_ax): Now static.
 
-2019-03-15  Tom Tromey  <tom@tromey.com>
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-	* symtab.h (struct minimal_symbol): Derive from
-	general_symbol_info.
-	(MSYMBOL_VALUE, MSYMBOL_VALUE_RAW_ADDRESS)
-	(MSYMBOL_VALUE_ADDRESS, MSYMBOL_VALUE_BYTES)
-	(MSYMBOL_BLOCK_VALUE, MSYMBOL_VALUE_CHAIN, MSYMBOL_LANGUAGE)
-	(MSYMBOL_SECTION, MSYMBOL_OBJ_SECTION, MSYMBOL_NATURAL_NAME)
-	(MSYMBOL_LINKAGE_NAME, MSYMBOL_DEMANGLED_NAME)
-	(MSYMBOL_SEARCH_NAME): Update.
-	(MSYMBOL_SET_LANGUAGE, MSYMBOL_SET_NAMES): Remove.
-	* solib.c (gdb_bfd_lookup_symbol_from_symtab): Don't use memset.
-	* minsyms.c (minimal_symbol_reader::record_full): Update.
+	* tui/tui-data.h (TUI_DISASM_WIN): Cast to tui_disasm_window.
 
-2019-03-15  Tom Tromey  <tom@tromey.com>
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-	* minsyms.c (minimal_symbol_reader::install): Use memcpy.
+	* tui/tui-win.c (_initialize_tui_win): Add usage text.
+	* tui/tui-stack.c (_initialize_tui_stack): Add usage text.
+	* tui/tui-regs.c (_initialize_tui_regs): Add usage text.
+	* tui/tui.c (_initialize_tui): Add usage text.
 
-2019-03-15  Tom Tromey  <tom@tromey.com>
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-	* objfiles.h (struct objfile_per_bfd_storage) <msymbols>: Now a
-	unique_xmalloc_ptr.
-	(objfile::msymbols_range::begin, objfile::msymbols_range::end):
-	Update.
-	* minsyms.c (lookup_minimal_symbol_by_pc_section)
-	(build_minimal_symbol_hash_tables)
-	(minimal_symbol_reader::install): Update.
+	* tui/tui-win.c (tui_set_focus_command)
+	(tui_set_win_height_command): Use error_no_arg.
+	(_initialize_tui_win): Update help text.
+	(FOCUS_USAGE, WIN_HEIGHT_USAGE): Don't define.
 
-2019-03-15  Tom Tromey  <tom@tromey.com>
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-	* symtab.c (create_demangled_names_hash): Update.
-	(symbol_set_names): Update.
-	* objfiles.h (struct objfile_per_bfd_storage)
-	<demangled_names_hash>: Now an htab_up.
-	* objfiles.c (objfile_per_bfd_storage): Simplify.
+	* tui/tui-layout.c (extract_display_start_addr): Rewrite.
+	* tui/tui-disasm.h (struct tui_disasm_window)
+	<display_start_addr>: Declare.
+	* tui/tui-source.h (struct tui_source_window)
+	<display_start_addr>: Declare.
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<show_source_line, display_start_addr>: New methods.
+	<m_horizontal_offset, m_start_line_or_addr, m_gdbarch, m_content>:
+	Rename and move to protected section.
+	* tui/tui-winsource.c (tui_source_window_base::update_source_window)
+	(tui_source_window_base::do_erase_source_content): Update.
+	(tui_source_window_base::show_source_line): Now a method.
+	(tui_source_window_base::show_source_content)
+	(tui_source_window_base::tui_source_window_base)
+	(tui_source_window_base::rerender)
+	(tui_source_window_base::refill)
+	(tui_source_window_base::do_scroll_horizontal)
+	(tui_source_window_base::set_is_exec_point_at)
+	(tui_source_window_base::update_breakpoint_info)
+	(tui_source_window_base::update_exec_info): Update.
+	* tui/tui-source.c (tui_source_window::set_contents)
+	(tui_source_window::showing_source_p)
+	(tui_source_window::do_scroll_vertical)
+	(tui_source_window::location_matches_p)
+	(tui_source_window::line_is_displayed): Update.
+	(tui_source_window::display_start_addr): New method.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents)
+	(tui_disasm_window::do_scroll_vertical)
+	(tui_disasm_window::location_matches_p): Update.
+	(tui_disasm_window::display_start_addr): New method.
 
-2019-03-15  Tom Tromey  <tom@tromey.com>
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-	* objfiles.h (struct objfile_per_bfd_storage): Declare
-	destructor.
-	* objfiles.c (objfile_per_bfd_storage::~objfile_per_bfd_storage):
-	New.
-	(get_objfile_bfd_data): Use new.  Don't initialize
-	language_of_main.
-	(free_objfile_per_bfd_storage): Remove.
-	(objfile_bfd_data_free, objfile::~objfile): Use delete.
-
-2019-03-15  Tom Tromey  <tom@tromey.com>
-
-	* symfile.c (reread_symbols): Update.
-	* objfiles.c (objfile::objfile): Update.
-	* minsyms.h (terminate_minimal_symbol_table): Don't declare.
-	* minsyms.c (lookup_minimal_symbol_by_pc_section): Update
-	comment.
-	(minimal_symbol_reader::install): Update.
-	(terminate_minimal_symbol_table): Remove.
-	* jit.c (jit_object_close_impl): Update.
+	* NEWS: Add entry for gdb.register_window_type.
+	* tui/tui-layout.h (window_factory): New typedef.
+	(tui_register_window): Declare.
+	* tui/tui-layout.c (saved_tui_windows): New global.
+	(tui_apply_current_layout): Use it.
+	(tui_register_window): New function.
+	* python/python.c (do_start_initialization): Call
+	gdbpy_initialize_tui.
+	(python_GdbMethods): Add "register_window_type" function.
+	* python/python-internal.h (gdbpy_register_tui_window)
+	(gdbpy_initialize_tui): Declare.
+	* python/py-tui.c: New file.
+	* Makefile.in (SUBDIR_PYTHON_SRCS): Add py-tui.c.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-io.c (do_tui_putc): Don't omit annotations.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_set_win_focus_to): Move to tui-data.c.
+	* tui/tui-data.h (tui_set_win_with_focus): Don't declare.
+	* tui/tui-data.c (tui_set_win_with_focus): Remove.
+	(tui_set_win_focus_to): Move from tui-win.c.
 
-2019-03-15  Tom Tromey  <tom@tromey.com>
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-	* minsyms.c (minimal_symbol_reader::record_full): Remove some
-	initializations.
+	* tui/tui-layout.c (make_standard_window, get_locator_window): New
+	functions.
+	(known_window_types): New global.
+	(tui_get_window_by_name): Reimplement.
+	(initialize_known_windows): New function.
+	(validate_window_name): Rewrite.
+	(_initialize_tui_layout): Call initialize_known_windows.
 
-2019-03-15  Tom Tromey  <tom@tromey.com>
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-	* objfiles.h (struct objfile_per_bfd_storage)
-	<demangled_hash_languages>: Now a bitset.
-	* minsyms.c (add_minsym_to_demangled_hash_table): Update.
-	(lookup_minimal_symbol): Update.
+	* tui/tui.h (enum tui_win_type) <LOCATOR_WIN, DATA_ITEM_WIN>:
+	Remove constants.
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<tui_source_window_base>: Remove parameter.
+	* tui/tui-winsource.c
+	(tui_source_window_base::tui_source_window_base): Remove
+	parameter.
+	(tui_source_window_base::refill): Update.
+	* tui/tui-stack.h (struct tui_locator_window)
+	<tui_locator_window>: Update.
+	* tui/tui-source.h (struct tui_source_window) <tui_source_window>:
+	Default the constructor.
+	* tui/tui-regs.h (struct tui_data_item_window)
+	<tui_data_item_window>: Default the constructor.
+	(struct tui_data_window) <tui_data_window>: Likewise.
+	* tui/tui-disasm.h (struct tui_disasm_window) <tui_disasm_window>:
+	Default the constructor.
+	* tui/tui-data.h (struct tui_gen_win_info) <tui_gen_win_info>:
+	Default the constructor.
+	<type>: Remove.
+	(struct tui_win_info) <tui_win_info>: Default the constructor.
+	* tui/tui-data.c (tui_win_info::tui_win_info): Remove.
+	* tui/tui-command.h (struct tui_cmd_window) <tui_cmd_window>:
+	Default the constructor.
 
-2019-03-15  Tom Tromey  <tom@tromey.com>
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-	* minsyms.h (class minimal_symbol_reader) <record_with_info>:
-	Don't return the symbol.
-	* coffread.c (record_minimal_symbol): Use record_full.
+	* tui/tui-wingeneral.h (tui_make_all_invisible): Don't declare.
+	* tui/tui-wingeneral.c (tui_make_all_invisible): Remove.
+	* tui/tui-win.c (tui_resize_all): Don't call
+	tui_delete_invisible_windows.
+	* tui/tui-layout.c (tui_apply_current_layout): Delete windows when
+	done.
+	(tui_set_layout): Update.
+	(tui_add_win_to_layout): Don't call tui_delete_invisible_windows.
+	* tui/tui-data.h (tui_delete_invisible_windows): Don't declare.
+	* tui/tui-data.c (tui_delete_invisible_windows): Remove.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_partial_win_by_name): Handle ambiguity
+	correctly.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.c (tui_next_win, tui_prev_win): Reimplement.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_iterator)
+	<inner_iterator>: New etytypedef.
+	<tui_source_window_iterator>: Take "end" parameter.
+	<tui_source_window_iterator>: Take iterator.
+	<operator*, advance>: Update.
+	<m_iter>: Change type.
+	<m_end>: New field.
+	(struct tui_source_windows) <begin, end>: Update.
+	* tui/tui-layout.c (tui_windows): New global.
+	(tui_apply_current_layout): Clear tui_windows.
+	(tui_layout_window::apply): Update tui_windows.
+	* tui/tui-data.h (tui_windows): Declare.
+	(all_tui_windows): Now inline function.
+	(class tui_window_iterator, struct all_tui_windows): Remove.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	PR tui/17850:
+	* tui/tui-win.c (tui_gen_win_info::max_width): New method.
+	* tui/tui-layout.h (class tui_layout_base) <get_sizes>: Add
+	"height" argument.
+	(class tui_layout_window) <get_sizes>: Likewise.
+	(class tui_layout_split) <tui_layout_split>: Add "vertical"
+	argument.
+	<get_sizes>: Add "height" argument.
+	<m_vertical>: New field.
+	* tui/tui-layout.c (tui_layout_split::clone): Update.
+	(tui_layout_split::get_sizes): Add "height" argument.
+	(tui_layout_split::adjust_size, tui_layout_split::apply): Update.
+	(tui_new_layout_command): Parse "-horizontal".
+	(_initialize_tui_layout): Update help string.
+	(tui_layout_split::specification): Add "-horizontal" when needed.
+	* tui/tui-layout.c (tui_layout_window::get_sizes): Add "height"
+	argument.
+	* tui/tui-data.h (struct tui_gen_win_info) <max_width, min_width>:
+	New methods.
 
-2019-03-14  Eli Zaretskii  <eliz@gnu.org>
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-	The MS-Windows port of ncurses fails to switch to a color pair if
-	one or both of the colors are the implicit default colors.  This
-	change records the default colors when TUI is initialized, and
-	then specifies them explicitly when a color pair uses the default
-	colors.  This allows color styling in TUI mode on MS-Windows.
+	* tui/tui-layout.h (enum tui_adjust_result): New.
+	(class tui_layout_base) <adjust_size>: Return tui_adjust_result.
+	(class tui_layout_window) <adjust_size>: Return
+	tui_adjust_result.  Rewrite.
+	(class tui_layout_split) <adjust_size>: Return tui_adjust_result.
+	* tui/tui-layout.c (tui_layout_split::adjust_size): Update.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.h (class tui_layout_split) <add_split>: Change
+	parameter and return types.
+	(class tui_layout_base) <specification>: Add "depth".
+	(class tui_layout_window) <specification>: Add "depth".
+	(class tui_layout_split) <specification>: Add "depth".
+	* tui/tui-layout.c (tui_layout_split::add_split): Change parameter
+	and return types.
+	(tui_new_layout_command): Parse sub-layouts.
+	(_initialize_tui_layout): Update help string.
+	(tui_layout_window::specification): Add "depth".
+	(add_layout_command): Update.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* NEWS: Add "tui new-layout" item.
+	* tui/tui-layout.c (add_layout_command): Return cmd_list_element.
+	Add new-layout command to help text.
+	(validate_window_name): New function.
+	(tui_new_layout_command): New function.
+	(_initialize_tui_layout): Register "new-layout".
+	(tui_layout_window::specification): New method.
+	(tui_layout_window::specification): New method.
+	* tui/tui-layout.h (class tui_layout_base) <specification>: New
+	method.
+	(class tui_layout_window) <specification>: New method.
+	(class tui_layout_split) <specification>: New method.
 
-	* tui/tui-io.c [__MINGW32__]: Include windows.h.  Declare
-	ncurses_norm_attr.
-	(tui_initialize_io) [__MINGW32__]: Record the default terminal
-	colors in ncurses_norm_attr.
-	(apply_ansi_escape) [__MINGW32__]: If a color in a color pair is
-	"none", replace it with the default color recorded in
-	ncurses_norm_attr.
+2020-02-22  Tom Tromey  <tom@tromey.com>
 
-2019-03-14  Tom Tromey  <tromey@adacore.com>
+	* tui/tui.c (tui_enable): Call tui_set_initial_layout.
+	* tui/tui-win.c (window_name_completer): Update comment.
+	* tui/tui-layout.h (class tui_layout_base) <replace_window>:
+	Declare method.
+	(class tui_layout_window) <replace_window>: Likewise.
+	(class tui_layout_split) <replace_window>: Likewise.
+	(tui_set_layout): Don't declare.
+	(tui_set_initial_layout): Declare function.
+	* tui/tui-layout.c (layouts, applied_skeleton, src_regs_layout)
+	(asm_regs_layout): New globals.
+	(tui_current_layout, show_layout): Remove.
+	(tui_set_layout, tui_add_win_to_layout): Rewrite.
+	(find_layout, tui_apply_layout): New function.
+	(layout_completer): Remove.
+	(tui_next_layout): Reimplement.
+	(tui_next_layout_command): New function.
+	(tui_set_initial_layout, tui_prev_layout_command): New functions.
+	(tui_regs_layout): Reimplement.
+	(tui_regs_layout_command): New function.
+	(extract_display_start_addr): Rewrite.
+	(next_layout, prev_layout): Remove.
+	(tui_layout_window::replace_window): New method.
+	(tui_layout_split::replace_window): New method.
+	(destroy_layout): New function.
+	(layout_list): New global.
+	(add_layout_command): New function.
+	(initialize_layouts): Update.
+	(tui_layout_command): New function.
+	(_initialize_tui_layout): Install "layout" commands.
+	* tui/tui-data.h (enum tui_layout_type): Remove.
+	(tui_current_layout): Don't declare.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_reg_layout): Remove.
+	(tui_reg_command): Use tui_regs_layout.
+	* tui/tui-layout.h (tui_reg_command): Declare.
+	* tui/tui-layout.c (tui_reg_command): New function.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_rl_delete_other_windows): Call
+	tui_remove_some_windows.
+	* tui/tui-layout.h (class tui_layout_base) <remove_windows>:
+	Declare method.
+	(class tui_layout_window) <remove_windows>: New method.
+	(class tui_layout_split) <remove_windows>: Declare.
+	(tui_remove_some_windows): Declare.
+	* tui/tui-layout.c (tui_remove_some_windows): New function.
+	(tui_layout_split::remove_windows): New method.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_rl_change_windows): Call tui_next_layout.
+	* tui/tui-layout.h (tui_next_layout): Declare.
+	* tui/tui-layout.c (tui_next_layout): New function.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::display_registers_from): Use
+	correct coordinates.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.h (tui_add_win_to_layout): Add comment.
+	* tui/tui-layout.c (tui_add_win_to_layout): Add assert.  Remove
+	DATA_WIN case.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-disasm.c (tui_get_low_disassembly_address): Use
+	TUI_DISASM_WIN, not tui_win_list.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_val_print_enum_1)
+	(val_print_type_code_flags): Style member names.
+	* rust-lang.c (val_print_struct, rust_print_enum)
+	(rust_print_struct_def, rust_internal_print_type): Style member
+	names.
+	* p-valprint.c (pascal_object_print_value_fields): Style member
+	names.  Only call fprintf_symbol_filtered for static members.
+	* m2-typeprint.c (m2_record_fields, m2_enum): Style member names.
+	* f-valprint.c (f_val_print): Style member names.
+	* f-typeprint.c (f_type_print_base): Style member names.
+	* cp-valprint.c (cp_print_value_fields): Style member names.  Only
+	call fprintf_symbol_filtered for static members.
+	(cp_print_class_member): Style member names.
+	* c-typeprint.c (c_print_type_1, c_type_print_base_1): Style
+	member names.
+	* ada-valprint.c (ada_print_scalar): Style enum names.
+	(ada_val_print_enum): Likewise.
+	* ada-typeprint.c (print_enum_type): Style enum names.
 
-	* source-cache.h (class source_cache) <get_source_lines>: Return
-	std::string.
-	* source-cache.c (source_cache::extract_lines): Handle case where
-	first_pos==npos.  Return std::string.
-	(source_cache::get_source_lines): Update.
-
-2019-03-14  Tom Tromey  <tromey@adacore.com>
-
-	* NEWS: Add item for "style sources" commands.
-	* source-cache.c (source_cache::get_source_lines): Check
-	source_styling.
-	* cli/cli-style.c (source_styling): New global.
-	(_initialize_cli_style): Add "style sources" commands.
-	(show_style_sources): New function.
-	* cli/cli-style.h (source_styling): Declare.
+2020-02-21  Tom Tromey  <tom@tromey.com>
 
-2019-03-14  Pedro Alves  <palves@redhat.com>
-	    Tom Tromey  <tromey@adacore.com>
+	* psympriv.h (struct partial_symtab): Update comment.
 
-	* tui/tui-winsource.h (tui_refill_source_window): Declare.
-	* tui/tui-winsource.c (tui_refill_source_window): New function,
-	from...
-	(tui_horizontal_source_scroll): ... here.  Move some logic.
-	* cli/cli-style.c (set_style_enabled): Notify new observable.
-	* tui/tui-hooks.c (tui_redisplay_source): New function.
-	(tui_attach_detach_observers): Attach or detach
-	tui_redisplay_source.
-	* observable.h (source_styling_changed): New observable.
-	* observable.c: Define source_styling_changed observable.
-
-2019-03-13  Tom Tromey  <tromey@adacore.com>
-
-	* i386-gnu-nat.c (i386_gnu_nat_target::fetch_registers)
-	(i386_gnu_nat_target::store_registers): Update.
-	* target-debug.h (target_debug_print_std_string): New macro.
-	* x86-linux-nat.c (x86_linux_nat_target::enable_btrace): Update.
-	* windows-tdep.c (display_one_tib): Update.
-	* tui/tui-stack.c (tui_make_status_line): Update.
-	* top.c (print_inferior_quit_action): Update.
-	* thread.c (thr_try_catch_cmd): Update.
-	(add_thread_with_info): Update.
-	(thread_target_id_str): Update.
-	(thr_try_catch_cmd): Update.
-	(thread_command): Update.
-	(thread_find_command): Update.
-	* record-btrace.c (record_btrace_target::info_record)
-	(record_btrace_resume_thread, record_btrace_target::resume)
-	(record_btrace_cancel_resume, record_btrace_step_thread)
-	(record_btrace_target::wait, record_btrace_target::wait)
-	(record_btrace_target::wait, record_btrace_target::stop): Update.
-	* progspace.c (print_program_space): Update.
-	* process-stratum-target.c
-	(process_stratum_target::thread_address_space): Update.
-	* linux-fork.c (linux_fork_mourn_inferior)
-	(detach_checkpoint_command, info_checkpoints_command)
-	(linux_fork_context): Update.
-	(linux_fork_detach): Update.
-	(class scoped_switch_fork_info): Update.
-	(delete_checkpoint_command): Update.
-	* infrun.c (follow_fork_inferior): Update.
-	(follow_fork_inferior): Update.
-	(proceed_after_vfork_done): Update.
-	(handle_vfork_child_exec_or_exit): Update.
-	(follow_exec): Update.
-	(displaced_step_prepare_throw): Update.
-	(displaced_step_restore): Update.
-	(start_step_over): Update.
-	(resume_1): Update.
-	(clear_proceed_status_thread): Update.
-	(proceed): Update.
-	(print_target_wait_results): Update.
-	(do_target_wait): Update.
-	(context_switch): Update.
-	(stop_all_threads): Update.
-	(restart_threads): Update.
-	(finish_step_over): Update.
-	(handle_signal_stop): Update.
-	(switch_back_to_stepped_thread): Update.
-	(keep_going_pass_signal): Update.
-	(print_exited_reason): Update.
-	(normal_stop): Update.
-	* inferior.c (inferior_pid_to_str): Change return type.
-	(print_selected_inferior): Update.
-	(add_inferior): Update.
-	(detach_inferior): Update.
-	* dummy-frame.c (fprint_dummy_frames): Update.
-	* dcache.c (dcache_info_1): Update.
-	* btrace.c (btrace_enable, btrace_disable, btrace_teardown)
-	(btrace_fetch, btrace_clear): Update.
-	* linux-tdep.c (linux_core_pid_to_str): Change return type.
-	* i386-cygwin-tdep.c (i386_windows_core_pid_to_str): Change return
-	type.
-	* fbsd-tdep.c (fbsd_core_pid_to_str): Change return type.
-	* sol2-tdep.h (sol2_core_pid_to_str): Change return type.
-	* sol2-tdep.c (sol2_core_pid_to_str): Change return type.
-	* gdbarch.c, gdbarch.h: Rebuild.
-	* gdbarch.sh (core_pid_to_str): Change return type.
-	* windows-nat.c (struct windows_nat_target) <pid_to_str>: Change
-	return type.
-	(windows_nat_target::pid_to_str): Change return type.
-	(windows_delete_thread): Update.
-	(windows_nat_target::attach): Update.
-	(windows_nat_target::files_info): Update.
-	* target-delegates.c: Rebuild.
-	* sol-thread.c (class sol_thread_target) <pid_to_str>: Change
-	return type.
-	(sol_thread_target::pid_to_str): Change return type.
-	* remote.c (class remote_target) <pid_to_str>: Change return
-	type.
-	(remote_target::pid_to_str): Change return type.
-	(extended_remote_target::attach, remote_target::remote_stop_ns)
-	(remote_target::remote_notif_remove_queued_reply)
-	(remote_target::push_stop_reply, remote_target::disable_btrace):
-	Update.
-	(extended_remote_target::attach): Update.
-	* remote-sim.c (struct gdbsim_target) <pid_to_str>: Change return
-	type.
-	(gdbsim_target::pid_to_str): Change return type.
-	* ravenscar-thread.c (struct ravenscar_thread_target)
-	<pid_to_str>: Change return type.
-	(ravenscar_thread_target::pid_to_str): Change return type.
-	* procfs.c (class procfs_target) <pid_to_str>: Change return
-	type.
-	(procfs_target::pid_to_str): Change return type.
-	(procfs_target::attach): Update.
-	(procfs_target::detach): Update.
-	(procfs_target::fetch_registers): Update.
-	(procfs_target::store_registers): Update.
-	(procfs_target::wait): Update.
-	(procfs_target::files_info): Update.
-	* obsd-nat.c (obsd_nat_target::pid_to_str): Change return type.
-	* nto-procfs.c (struct nto_procfs_target) <pid_to_str>: Change
-	return type.
-	(nto_procfs_target::pid_to_str): Change return type.
-	(nto_procfs_target::files_info, nto_procfs_target::attach): Update.
-	* linux-thread-db.c (class thread_db_target) <pid_to_str>: Change
-	return type.
-	* linux-nat.c (linux_nat_target::pid_to_str): Change return type.
-	(exit_lwp): Update.
-	(attach_proc_task_lwp_callback, get_detach_signal)
-	(detach_one_lwp, resume_lwp, linux_nat_target::resume)
-	(linux_nat_target::resume, wait_lwp, stop_callback)
-	(maybe_clear_ignore_sigint, stop_wait_callback, status_callback)
-	(save_stop_reason, select_event_lwp, linux_nat_filter_event)
-	(linux_nat_wait_1, resume_stopped_resumed_lwps)
-	(linux_nat_target::wait, linux_nat_stop_lwp): Update.
-	* inf-ptrace.c (inf_ptrace_target::pid_to_str): Change return
-	type.
-	(inf_ptrace_target::attach): Update.
-	(inf_ptrace_target::files_info): Update.
-	* go32-nat.c (struct go32_nat_target) <pid_to_str>: Change return
-	type.
-	(go32_nat_target::pid_to_str): Change return type.
-	* gnu-nat.c (gnu_nat_target::pid_to_str): Change return type.
-	(gnu_nat_target::wait): Update.
-	(gnu_nat_target::wait): Update.
-	(gnu_nat_target::resume): Update.
-	* fbsd-nat.c (fbsd_nat_target::pid_to_str): Change return type.
-	(fbsd_nat_target::wait): Update.
-	* darwin-nat.c (darwin_nat_target::pid_to_str): Change return
-	type.
-	(darwin_nat_target::attach): Update.
-	* corelow.c (class core_target) <pid_to_str>: Change return type.
-	(core_target::pid_to_str): Change return type.
-	* target.c (normal_pid_to_str): Change return type.
-	(default_pid_to_str): Likewise.
-	(target_pid_to_str): Change return type.
-	(target_translate_tls_address): Update.
-	(target_announce_detach): Update.
-	* bsd-uthread.c (struct bsd_uthread_target) <pid_to_str>: Change
-	return type.
-	(bsd_uthread_target::pid_to_str): Change return type.
-	* bsd-kvm.c (class bsd_kvm_target) <pid_to_str>: Change return
-	type.
-	(bsd_kvm_target::pid_to_str): Change return type.
-	* aix-thread.c (class aix_thread_target) <pid_to_str>: Change
-	return type.
-	(aix_thread_target::pid_to_str): Change return type.
-	* target.h (struct target_ops) <pid_to_str>: Change return type.
-	(target_pid_to_str, normal_pid_to_str): Likewise.
-	* obsd-nat.h (class obsd_nat_target) <pid_to_str>: Change return
-	type.
-	* linux-nat.h (class linux_nat_target) <pid_to_str>: Change return
-	type.
-	* inf-ptrace.h (struct inf_ptrace_target) <pid_to_str>: Change
-	return type.
-	* gnu-nat.h (struct gnu_nat_target) <pid_to_str>: Change return
-	type.
-	* fbsd-nat.h (class fbsd_nat_target) <pid_to_str>: Change return
-	type.
-	* darwin-nat.h (class darwin_nat_target) <pid_to_str>: Change
-	return type.
+2020-02-21  Tom Tromey  <tromey@adacore.com>
 
-2019-03-13  Simon Marchi  <simon.marchi@ericsson.com>
+	* mips-tdep.h (mips_pc_is_mips16, mips_pc_is_micromips): Parameter
+	type is CORE_ADDR.
 
-	* NEWS: Mention that the new default MI version is 3.  Mention
-	changes to the output of commands and events that deal with
-	multi-location breakpoints.
-	* breakpoint.c: Include "mi/mi-out.h".
-	(print_one_breakpoint): Change output syntax if using MI version
-	>= 3.
-	* mi/mi-main.h (mi_cmd_fix_multi_location_breakpoint_output):
-	New.
-	(mi_multi_location_breakpoint_output_fixed): New.
-	* mi/mi-main.c (fix_multi_location_breakpoint_output): New.
-	(mi_cmd_fix_multi_location_breakpoint_output): New.
-	(mi_multi_location_breakpoint_output_fixed): New.
-	* mi/mi-cmds.c (mi_cmds): Register command
-	-fix-multi-location-breakpoint-output.
-	* mi/mi-out.c (mi_out_new): Instantiate version 3 when using
-	interpreter "mi".
-
-2019-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* mi/mi-out.h (mi_out_new): Change parameter to const char *.
-	* mi/mi-out.c (mi_out_new): Change parameter to const char *,
-	instantiate mi_ui_out based on interpreter name.
-	* mi/mi-interp.c (mi_interp::init): Use the new mi_out_new.
-	* mi/mi-main.c (mi_load_progress): Likewise.
-
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
-
-	* NEWS: Combine separate "New targets" sections for 8.3.
-
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
-
-	* ppc-fbsd-tdep.c (ppcfbsd_get_thread_local_address): New.
-	(ppcfbsd_init_abi): Install gdbarch
-	"fetch_tls_load_module_address" and "get_thread_local_address"
-	methods.
+2020-02-21  Tom de Vries  <tdevries@suse.de>
 
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+	PR gdb/25534
+	* psymtab.c (partial_symtab::read_dependencies): Don't read dependency
+	if dependencies[i]->user != NULL.
 
-	* riscv-fbsd-tdep.c (riscv_fbsd_get_thread_local_address): New.
-	(riscv_fbsd_init_abi): Install gdbarch
-	"fetch_tls_load_module_address" and "get_thread_local_address"
-	methods.
+2020-02-21  Ali Tamur  <tamur@google.com>
 
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+	* dwarf2/read.c (dwarf2_name): Add null check.
 
-	* i386-fbsd-tdep.c (i386fbsd_get_thread_local_address): New.
-	(i386fbsd_init_abi): Install gdbarch
-	"fetch_tls_load_module_address" and "get_thread_local_address"
-	methods.
+2020-02-20  Tom Tromey  <tom@tromey.com>
 
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+	* dwarf2/read.c (dwarf2_find_containing_comp_unit): Use ">", not
+	">=", in binary search.
+	(dwarf2_find_containing_comp_unit): New overload.
+	(run_test): New self-test.
+	(_initialize_dwarf2_read): Register new test.
 
-	* amd64-fbsd-tdep.c (amd64fbsd_get_thread_local_address): New.
-	(amd64fbsd_init_abi): Install gdbarch
-	"fetch_tls_load_module_address" and "get_thread_local_address"
-	methods.
+2020-02-20  Nelson Chu  <nelson.chu@sifive.com>
 
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+	* riscv-tdep.c: Updated since the DECLARE_CSR is changed.
+	* riscv-tdep.h: Likewise.
+	* features/riscv/rebuild-csr-xml.sh: Generate the 64bit-csr.xml without
+	rv32-only CSR.
+	* features/riscv/64bit-csr.xml: Regenerated.
 
-	* fbsd-tdep.c (fbsd_pspace_data_handle): New variable.
-	(struct fbsd_pspace_data): New type.
-	(get_fbsd_pspace_data, fbsd_pspace_data_cleanup)
-	(fbsd_read_integer_by_name, fbsd_fetch_rtld_offsets)
-	(fbsd_get_tls_index, fbsd_get_thread_local_address): New function.
-	(_initialize_fbsd_tdep): Initialize 'fbsd_pspace_data_handle'.
-	* fbsd-tdep.c (fbsd_get_thread_local_address): New prototype.
+2020-02-20  Sergio Durigan Junior  <sergiodj@redhat.com>
+	    Tom Tromey  <tom@tromey.com>
 
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+	* utils.c (fputs_maybe_filtered): Call 'stream->puts' instead
+	of 'fputc_unfiltered'.
+	(putchar_unfiltered): Call 'fputc_unfiltered'.
+	(fputc_unfiltered): Call 'fputs_unfiltered'.
 
-	* gdbtypes.c (lookup_struct_elt): New function.
-	(lookup_struct_elt_type): Reimplement via lookup_struct_elt.
-	* gdbtypes.h (struct struct_elt): New type.
-	(lookup_struct_elt): New prototype.
+2020-02-20  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Add --with-python-libdir option.
+	* main.c: Use WITH_PYTHON_LIBDIR.
 
-	* gdbtypes.c (lookup_struct_elt_type): Update comment and
-	remove disabled code block.
+2020-02-19  Tom Tromey  <tom@tromey.com>
 
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+	* symtab.c (general_symbol_info::compute_and_set_names): Use
+	obstack_strndup.  Simplify call to symbol_set_demangled_name.
 
-	* gdbarch.sh (get_thread_local_address): New method.
-	* gdbarch.h, gdbarch.c: Regenerate.
-	* target.c (target_translate_tls_address): Use
-	gdbarch_get_thread_local_address if present instead of
-	target::get_thread_local_address.
-
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
-
-	* target.h (target::get_thread_local_address): Update comment.
-
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
-
-	* solib-svr4.c (svr4_fetch_objfile_link_map): Look for
-	objfile->separate_debug_objfile_backlink if not NULL.
-
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
-
-	* amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers): Use
-	tdep->fsbase_regnum instead of constants for fs_base and gs_base.
-	(amd64bsd_store_inferior_registers): Likewise.
-	* amd64-fbsd-nat.c (amd64_fbsd_nat_target::read_description):
-	Enable segment base registers.
-	* i386-bsd-nat.c (i386bsd_fetch_inferior_registers): Use
-	PT_GETFSBASE and PT_GETGSBASE.
-	(i386bsd_store_inferior_registers): Use PT_SETFSBASE and
-	PT_SETGSBASE.
-	* i386-fbsd-nat.c (i386_fbsd_nat_target::read_description): Enable
-	segment base registers.
-	* i386-fbsd-tdep.c (i386fbsd_core_read_description): Likewise.
+2020-02-19  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+	* dwarf2/read.c (allocate_signatured_type_table,
+	allocate_dwo_unit_table, allocate_type_unit_groups_table,
+	allocate_dwo_file_hash_table, allocate_dwp_loaded_cutus_table):
+	Remove objfile parameter, update all callers.
 
-	* amd64-fbsd-nat.c (amd64_fbsd_nat_target::read_description):
-	Update calls to i386_target_description to add 'segments'
-	parameter.
-	* amd64-tdep.c (amd64_init_abi): Set tdep->fsbase_regnum.  Don't
-	add segment base registers.
-	* arch/i386.c (i386_create_target_description): Add 'segments'
-	parameter to enable segment base registers.
-	* arch/i386.h (i386_create_target_description): Likewise.
-	* features/i386/32bit-segments.xml: New file.
-	* features/i386/32bit-segments.c: Generate.
-	* i386-fbsd-nat.c (i386_fbsd_nat_target::read_description): Update
-	call to i386_target_description to add 'segments' parameter.
-	* i386-fbsd-tdep.c (i386fbsd_core_read_description): Likewise.
-	* i386-go32-tdep.c (i386_go32_init_abi): Likewise.
-	* i386-linux-tdep.c (i386_linux_read_description): Likewise.
-	* i386-tdep.c (i386_validate_tdesc_p): Add segment base registers
-	if feature is present.
-	(i386_gdbarch_init): Pass I386_NUM_REGS to set_gdbarch_num_regs.
-	Add 'segments' parameter to call to i386_target_description.
-	(i386_target_description): Add 'segments' parameter to enable
-	segment base registers.
-	(_initialize_i386_tdep) [GDB_SELF_TEST]: Add 'segments' parameter
-	to call to i386_target_description.
-	* i386-tdep.h (struct gdbarch_tdep): Add 'fsbase_regnum'.
-	(enum i386_regnum): Add I386_FSBASE_REGNUM and I386_GSBASE_REGNUM.
-	Define I386_NUM_REGS.
-	(i386_target_description): Add 'segments' parameter to enable
-	segment base registers.
-
-2019-03-12  Eli Zaretskii  <eliz@gnu.org>
-
-	PR/24325
-	* source-cache.c: #undef open and close, to avoid unresolved
-	externals during linking.
-
-2019-03-12  Tom Tromey  <tromey@adacore.com>
-
-	* remote.c (magic_null_ptid, not_sent_ptid, any_thread_ptid): Now
-	const.  Add initializers.
-	(_initialize_remote): Don't initialize ptid globals.
-
-2019-03-12  Pedro Alves  <palves@redhat.com>
-
-	* yy-remap.h [TEST_CPNAMES] (YYFPRINTF): Don't define.
-
-2019-03-12  Pedro Alves  <palves@redhat.com>
-
-	* cp-name-parser.y (main): Remove unused 'len' variable.
-
-2019-03-12  Tom Tromey  <tromey@adacore.com>
-
-	* common/ptid.c (null_ptid, minus_one_ptid): Now const.
-	* common/ptid.h (null_ptid, minus_one_ptid): Now const.
-
-2019-03-12  Tom Tromey  <tromey@adacore.com>
-
-	* linux-nat.c (iterate_over_lwps): Update.
-	(stop_callback): Remove parameter.
-	(stop_wait_callback, detach_callback, resume_set_callback)
-	(select_singlestep_lwp_callback, set_ignore_sigint)
-	(status_callback, resumed_callback, resume_clear_callback)
-	(kill_callback, kill_wait_callback, linux_nat_stop_lwp): Remove
-	data parameter.
-	(linux_nat_target::detach, linux_nat_target::resume)
-	(linux_stop_and_wait_all_lwps, select_event_lwp)
-	(linux_nat_filter_event, linux_nat_wait_1)
-	(linux_nat_target::kill, linux_nat_target::stop)
-	(linux_nat_target::stop): Update.
-	(linux_nat_resume_callback): Change type.
-	(resume_stopped_resumed_lwps, count_events_callback)
-	(select_event_lwp_callback): Likewise.
-	(linux_stop_lwp, linux_nat_stop_lwp): Update.
-	* arm-linux-nat.c (struct update_registers_data): Remove.
-	(update_registers_callback): Change type.
-	(arm_linux_insert_hw_breakpoint1): Update.
-	* nat/x86-linux-dregs.c (update_debug_registers_callback): Remove
-	parameter.
-	(x86_linux_dr_set_addr): Update.
-	(x86_linux_dr_set_control): Update.
-	* nat/linux-nat.h (iterate_over_lwps_ftype): Remove parameter.
-	(iterate_over_lwps): Use gdb::function_view.
-	* nat/aarch64-linux-hw-point.c (struct
-	aarch64_dr_update_callback_param): Remove.
-	(debug_reg_change_callback): Change type.
-	(aarch64_notify_debug_reg_change): Update.
-	* s390-linux-nat.c (s390_refresh_per_info): Update.
+2020-02-19  Doug Evans  <dje@google.com>
 
-2019-03-11  Tom Tromey  <tromey@adacore.com>
+	PR rust/25535
+	* rust-lang.c (rust_print_enum): Apply embedded_offset to
+	rust_enum_variant calculation.
 
-	* dwarf2read.c (dwarf2_find_containing_comp_unit): Remove
-	redundant assignment to "this_cu".
+2020-02-19  Tom Tromey  <tromey@adacore.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* mips-tdep.h (mips_pc_is_mips): Parameter type is CORE_ADDR.
 
-	* gdbtypes.c (rank_one_type): Remove unnecessary cases from switch.
+2020-02-19  Tom Tromey  <tromey@adacore.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* ada-lang.c (cache_symbol): Use obstack_strdup.
 
-	* gdbtypes.c (rank_one_type_parm_set): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-19  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* configure: Regenerate.
 
-	* gdbtypes.c (rank_one_type_parm_struct): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-19  Tom Tromey  <tromey@adacore.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* python/python.c (do_start_initialization): Use XNEWVEC.  Remove
+	NULL check.
 
-	* gdbtypes.c (rank_one_type_parm_complex): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-19  Maciej W. Rozycki  <macro@wdc.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* NEWS: Mention RISC-V GNU/Linux GDBserver support.
 
-	* gdbtypes.c (rank_one_type_parm_float): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-19  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* arch/riscv.c (struct riscv_gdbarch_features_hasher): Only define
+	if GDBSERVER is not defined.
+	(riscv_tdesc_cache): Likewise, also store const target_desc.
+	(STATIC_IN_GDB): Define.
+	(riscv_create_target_description): Update declaration with
+	STATIC_IN_GDB.
+	(riscv_lookup_target_description): New function, only define if
+	GDBSERVER is not defined.
+	* arch/riscv.h (riscv_create_target_description): Declare only
+	when GDBSERVER is defined.
+	(riscv_lookup_target_description): New declaration when GDBSERVER
+	is not defined.
+	* nat/riscv-linux-tdesc.c (riscv_linux_read_description): Rename to...
+	(riscv_linux_read_features): ...this, and return
+	riscv_gdbarch_features instead of target_desc.
+	* nat/riscv-linux-tdesc.h: Include 'arch/riscv.h'.
+	(riscv_linux_read_description): Rename to...
+	(riscv_linux_read_features): ...this.
+	* riscv-linux-nat.c (riscv_linux_nat_target::read_description):
+	Update to use riscv_gdbarch_features and
+	riscv_lookup_target_description.
+	* riscv-tdep.c (riscv_find_default_target_description): Use
+	riscv_lookup_target_description instead of
+	riscv_create_target_description.
+
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* valprint.c (generic_val_print_enum_1): When printing a flag
+	enum with value 0 and there is no enumerator with value 0, print
+	just "0" instead of "(unknown: 0x0)".
+
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* valprint.c (generic_val_print_enum_1): Print unknown part of
+	flag enum in hex.
+
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (update_enumeration_type_from_children): Allow
+	flag enums to contain duplicate enumerators.
+	* valprint.c (generic_val_print_enum_1): Update comment.
+
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c: Include "count-one-bits.h".
+	(update_enumeration_type_from_children): If an enumerator has
+	multiple bits set, don't treat the enumeration as a "flag enum".
+	* valprint.c (generic_val_print_enum_1): Assert that enumerators
+	of flag enums have 0 or 1 bit set.
+
+2020-02-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* aarch64-tdep.c (aarch64_displaced_step_copy_insn): Use an explicit
+	conversion.
+	* amd64-tdep.c (amd64_displaced_step_copy_insn): Likewise.
+	* arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Likewise.
+	* i386-tdep.c (i386_displaced_step_copy_insn): Likewise.
+	* rs6000-tdep.c (ppc_displaced_step_copy_insn): Likewise.
+	* s390-tdep.c (s390_displaced_step_copy_insn): Likewise.
+
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* MAINTAINERS: Change palmer@sifive.com to palmer@dabbelt.com.
+
+2020-02-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* aarch64-tdep.c (aarch64_displaced_step_copy_insn): Use
+	displaced_step_closure_up.
+	* aarch64-tdep.h (aarch64_displaced_step_copy_insn): Likewise.
+	(struct displaced_step_closure_up):
+	* amd64-tdep.c (amd64_displaced_step_copy_insn): Likewise.
+	* amd64-tdep.h (amd64_displaced_step_copy_insn): Likewise.
+	* arm-linux-tdep.c (arm_linux_displaced_step_copy_insn):
+	Likewise.
+	* gdbarch.sh (displaced_step_copy_insn): Likewise.
+	* gdbarch.c, gdbarch.h: Re-generate.
+	* i386-linux-tdep.c (i386_linux_displaced_step_copy_insn): Use
+	displaced_step_closure_up.
+	* i386-tdep.c (i386_displaced_step_copy_insn): Likewise.
+	* i386-tdep.h (i386_displaced_step_copy_insn): Likewise.
+	* infrun.h (displaced_step_closure_up): New type alias.
+	(struct displaced_step_inferior_state) <step_closure>: Change
+	type to displaced_step_closure_up.
+	* rs6000-tdep.c (ppc_displaced_step_copy_insn): Use
+	displaced_step_closure_up.
+	* s390-tdep.c (s390_displaced_step_copy_insn): Likewise.
+
+2020-02-14  Tom Tromey  <tom@tromey.com>
+
+	* minidebug.c (gnu_debug_key): New global.
+	(find_separate_debug_file_in_section): Use it.
+
+2020-02-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbarch.sh (displaced_step_copy_insn): Change return type to an
+	std::unique_ptr.
+	* gdbarch.c: Re-generate.
+	* gdbarch.h: Re-generate.
+	* infrun.c (displaced_step_prepare_throw): Adjust to std::unique_ptr
+	change.
+	* aarch64-tdep.c (aarch64_displaced_step_copy_insn): Change return
+	type to std::unique_ptr.
+	* aarch64-tdep.h (aarch64_displaced_step_copy_insn): Likewise.
+	* amd64-tdep.c (amd64_displaced_step_copy_insn): Likewise.
+	* amd64-tdep.h (amd64_displaced_step_copy_insn): Likewise.
+	* arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Likewise.
+	* i386-linux-tdep.c (i386_linux_displaced_step_copy_insn): Likewise.
+	* i386-tdep.c (i386_displaced_step_copy_insn): Likewise.
+	* i386-tdep.h (i386_displaced_step_copy_insn): Likewise.
+	* rs6000-tdep.c (ppc_displaced_step_copy_insn): Likewise.
+	* s390-tdep.c (s390_displaced_step_copy_insn): Likewise.
+
+2020-02-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.c (get_displaced_step_closure_by_addr): Adjust to
+	std::unique_ptr.
+	(displaced_step_clear): Rename to...
+	(displaced_step_reset): ... this.  Just call displaced->reset ().
+	(displaced_step_clear_cleanup): Rename to...
+	(displaced_step_reset_cleanup): ... this.
+	(displaced_step_prepare_throw): Adjust to std::unique_ptr.
+	(displaced_step_fixup): Likewise.
+	(resume_1): Likewise.
+	(handle_inferior_event): Restore child's memory before calling
+	displaced_step_fixup on the parent.
+	* infrun.h (displaced_step_inferior_state) <reset>: Adjust
+	to std::unique_ptr.
+	<step_closure>: Change type to std::unique_ptr.
+
+2020-02-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* arm-tdep.c: Include count-one-bits.h.
+	(cleanup_block_store_pc): Use count_one_bits.
+	(cleanup_block_load_pc): Use count_one_bits.
+	(arm_copy_block_xfer): Use count_one_bits.
+	(thumb2_copy_block_xfer): Use count_one_bits.
+	(thumb_copy_pop_pc_16bit): Use count_one_bits.
+	* arch/arm-get-next-pcs.c: Include count-one-bits.h.
+	(thumb_get_next_pcs_raw): Use count_one_bits.
+	(arm_get_next_pcs_raw): Use count_one_bits_l.
+	* arch/arm.c (bitcount): Remove.
+	* arch/arm.h (bitcount): Remove.
 
-	* gdbtypes.c (rank_one_type_parm_bool): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-14  Tom Tromey  <tromey@adacore.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* dwarf2/frame-tailcall.c (dwarf2_tailcall_sniffer_first):
+	Update.
+	* dwarf2/loc.h (call_site_find_chain): Return unique_xmalloc_ptr.
+	* dwarf2/loc.c (call_site_find_chain_1): Return
+	unique_xmalloc_ptr.
+	(call_site_find_chain): Likewise.
 
-	* gdbtypes.c (rank_one_type_parm_range): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-14  Richard Biener  <rguenther@suse.de>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* dwarf2/read.c (lnp_state_machine::handle_special_opcode): Apply CSE
+	on expression with division operators.
 
-	* gdbtypes.c (rank_one_type_parm_char): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-13  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* MAINTAINERS (Write After Approval): Adding myself.
 
-	* gdbtypes.c (rank_one_type_parm_enum): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-12  Tom Tromey  <tom@tromey.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* event-loop.c (event_data, gdb_event, event_handler_func):
+	Remove.
 
-	* gdbtypes.c (rank_one_type_parm_int): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-12  Tom Tromey  <tom@tromey.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* dwarf2/frame.c (dwarf2_frame_bfd_data): New global.
+	(dwarf2_frame_objfile_data): Add comment.
+	(find_comp_unit, set_comp_unit): New functions.
+	(dwarf2_frame_find_fde): Use find_comp_unit.
+	(dwarf2_build_frame_info): Use set_comp_unit.
+
+2020-02-12  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/frame.c (struct comp_unit) <objfile>: Remove.
+	(comp_unit): Don't initialize objfile.
+	(execute_cfa_program): Add text_offset parameter.
+	(execute_cfa_program_test, dwarf2_fetch_cfa_info)
+	(dwarf2_frame_cache): Update.
+	(dwarf2_build_frame_info): Don't set "objfile" member.
 
-	* gdbtypes.c (rank_one_type_parm_func): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-12  Tom Tromey  <tom@tromey.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* dwarf2/frame.c (decode_frame_entry_1): Add gdbarch parameter.
+	(decode_frame_entry): Likewise.
+	(dwarf2_build_frame_info): Update.
 
-	* gdbtypes.c (rank_one_type_parm_array): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-12  Tom Tromey  <tom@tromey.com>
 
-2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+	* dwarf2/frame.c (struct comp_unit) <obstack>: New member.
+	(decode_frame_entry_1): Use the comp_unit obstack.
 
-	* gdbtypes.c (rank_one_type_parm_ptr): New function extracted
-	from...
-	(rank_one_type): ... this.
+2020-02-12  Tom Tromey  <tom@tromey.com>
 
-2019-02-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* dwarf2/frame.c (struct comp_unit): Add initializers and
+	constructor.
+	(dwarf2_frame_objfile_data): Store a comp_unit.
+	(dwarf2_frame_find_fde): Update.
+	(dwarf2_build_frame_info): Use "new".
 
-	* inferior.c (initialize_inferiors): Ensure 'help set/show print
-	inferior-events' shows the example events.
+2020-02-12  Tom Tromey  <tom@tromey.com>
 
-2019-03-08  Eli Zaretskii  <eliz@gnu.org>
+	* dwarf2/frame.c (struct dwarf2_fde_table): Remove.
+	(dwarf2_fde_table): Typedef for std::vector.
+	(dwarf2_frame_objfile_data): Remove the deleter.  Now static.
+	(dwarf2_frame_find_fde, add_fde, decode_frame_entry_1)
+	(decode_frame_entry): Update.
+	(dwarf2_build_frame_info): Use "new".
 
-	Support styling on native MS-Windows console
+2020-02-12  Christian Biesinger  <cbiesinger@google.com>
 
-	PR/24315
-	* utils.c (can_emit_style_escape) [_WIN32]: Don't disable styling
-	on MS-Windows if $TERM is not defined.
+	* arm-tdep.c (arm_gdbarch_init): Update.
+	* arm-tdep.h (struct gdbarch_tdep) <have_fpa_registers,
+	have_wmmx_registers, have_vfp_pseudos, have_neon_pseudos,
+	have_neon, is_m>: Change to bool.
 
-	* cli/cli-style.c: Set cli_styling to 1 in the MinGW build.
+2020-02-12  Christian Biesinger  <cbiesinger@google.com>
 
-	* posix-hdep.c (gdb_console_fputs):
-	* mingw-hdep.c (rgb_to_16colors, gdb_console_fputs): New
-	functions.
-	* ui-file.h (gdb_console_fputs): Add prototype.
+	* arm-tdep.c (arm_dump_tdep): Print more fields of tdep.
 
-	* ui-file.c (stdio_file::puts): Call gdb_console_fputs, and fall
-	back to fputs only if the former returns zero.
+2020-02-12  Tom Tromey  <tom@tromey.com>
 
-2019-03-07  Tom Tromey  <tom@tromey.com>
+	* dwarf2/loc.c (struct dwarf_expr_baton): Remove.
 
-	* symmisc.c (print_symbol_bcache_statistics): Update.
-	(print_objfile_statistics): Update.
-	* symfile.c (allocate_symtab): Update.
-	* stabsread.c: Don't include bcache.h.
-	* psymtab.h (struct psymbol_bcache): Don't declare.
-	(class psymtab_storage) <psymbol_cache>: Now a bcache.
-	(psymbol_bcache_init, psymbol_bcache_free)
-	(psymbol_bcache_get_bcache): Don't declare.
-	* psymtab.c (struct psymbol_bcache): Remove.
-	(psymtab_storage::psymtab_storage): Update.
-	(psymtab_storage::~psymtab_storage): Update.
-	(psymbol_bcache_init, psymbol_bcache_free)
-	(psymbol_bcache_get_bcache, psymbol_bcache_full): Remove.
-	(add_psymbol_to_bcache): Update.
-	(allocate_psymtab): Update.
-	* objfiles.h (struct objfile_per_bfd_storage) <filename_cache,
-	macro_cache>: No longer pointers.
-	* objfiles.c (get_objfile_bfd_data): Don't call bcache_xmalloc.
-	(free_objfile_per_bfd_storage): Don't call bcache_xfree.
-	* macrotab.c (macro_bcache): Update.
-	* macroexp.c: Don't include bcache.h.
-	* gdbtypes.c (check_types_worklist): Update.
-	(types_deeply_equal): Remove TRY/CATCH.  Update.
-	* elfread.c (elf_symtab_read): Update.
-	* dwarf2read.c: Don't include bcache.h.
-	* buildsym.c (buildsym_compunit::get_macro_table): Update.
-	* bcache.h (bcache, bcache_full, bcache_xffree, bcache_xmalloc)
-	(print_bcache_statistics, bcache_memory_used): Don't declare.
-	(struct bcache): Move from bcache.c.  Add constructor, destructor,
-	methods.  Rename all data members.
-	* bcache.c (struct bcache): Move to bcache.h.
-	(bcache::expand_hash_table): Rename from expand_hash_table.
-	(bcache): Remove.
-	(bcache::insert): Rename from bcache_full.
-	(bcache::compare): Rename from bcache_compare.
-	(bcache_xmalloc): Remove.
-	(bcache::~bcache): Rename from bcache_xfree.
-	(bcache::print_statistics): Rename from print_bcache_statistics.
-	(bcache::memory_used): Rename from bcache_memory_used.
-
-2019-03-07  Pedro Alves  <palves@redhat.com>
-
-	* infrun.c (normal_stop): Also check for
-	TARGET_WAITKIND_NO_RESUMED before referring to inferior_thread().
-
-2019-03-07  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* f-lang.c (value_from_host_double): Moved to...
-	* value.c (value_from_host_double): ...here.
-	* value.h (value_from_host_double): Declare.
-	* guile/scm-math.c (vlscm_convert_typed_number): Use
-	value_from_host_double.
-	(vlscm_convert_number): Likewise.
-	* guile/scm-value.c (gdbscm_value_to_real): Likewise.
-	* python/py-value.c (convert_value_from_python): Likewise.
-
-2019-03-06  Tom Tromey  <tom@tromey.com>
+2020-02-12  Hannes Domani  <ssbssa@yahoo.de>
 
-	* gcore.c (write_gcore_file): Use SCOPE_EXIT.
+	* windows-tdep.c (struct windows_gdbarch_data): Add tib_ptr_type.
+	(windows_get_tlb_type): Use windows_gdbarch_data->tib_ptr_type.
 
-2019-03-06  Tom Tromey  <tom@tromey.com>
+2020-02-11  Tom Tromey  <tom@tromey.com>
 
-	* utils.h (free_current_contents): Don't declare.
-	* utils.c (free_current_contents): Remove.
+	* psymtab.h: Update comment.
 
-2019-03-06  Tom Tromey  <tom@tromey.com>
+2020-02-11  Tom Tromey  <tom@tromey.com>
 
-	* top.c (quit_force): Update.
-	* main.c (captured_command_loop): Update.
-	* common/new-op.c (operator new): Update.
-	* common/common-exceptions.c (struct catcher)
-	<save_cleanup_chain>: Remove member.
-	(exceptions_state_mc_init): Update.
-	(exception_try_scope_entry): Return nullptr.
-	(exception_try_scope_exit, exception_rethrow)
-	(throw_exception_sjlj, throw_exception_cxx): Update.
-	* common/cleanups.h (make_cleanup, make_cleanup_dtor)
-	(all_cleanups, do_cleanups, discard_cleanups)
-	(discard_final_cleanups, save_cleanups, save_final_cleanups)
-	(restore_cleanups, restore_final_cleanups): Don't declare.
-	(do_final_cleanups): Remove parameter.
-	* common/cleanups.c (cleanup_chain, make_cleanup)
-	(make_cleanup_dtor, all_cleanups, do_cleanups)
-	(discard_my_cleanups, discard_cleanups)
-	(discard_final_cleanups, save_my_cleanups, save_cleanups)
-	(save_final_cleanups, restore_my_cleanups, restore_cleanups)
-	(null_cleanup): Remove.
-	(do_final_cleanups): Remove parameter.
+	* gdb_obstack.h (struct auto_obstack): Use
+	DISABLE_COPY_AND_ASSIGN.
 
-2019-03-06  Tom Tromey  <tom@tromey.com>
+2020-02-11  Tom Tromey  <tom@tromey.com>
 
-	* remote.c (remote_target::remote_parse_stop_reply): Use
-	unique_xmalloc_ptr.
+	* dwarf2/frame.h (struct objfile): Don't forward declare.
 
-2019-03-06  Tom Tromey  <tom@tromey.com>
+2020-02-11  Christian Biesinger  <cbiesinger@google.com>
 
-	* stabsread.c (struct stabs_field_info): Rename from field_info.
-	<list, fnlist>: Add initializers.
-	<obstack>: New member.
-	(read_member_functions, read_struct_fields, read_baseclasses):
-	Allocate on obstack.  Don't use cleanups.
-	(read_one_struct_field, read_member_functions, read_struct_fields)
-	(read_baseclasses, read_tilde_fields, attach_fn_fields_to_type)
-	(attach_fields_to_type, read_cpp_abbrev, read_member_functions)
-	(read_struct_type): Update.
-
-2019-03-06  Tom Tromey  <tom@tromey.com>
-
-	* nat/linux-namespaces.c (linux_mntns_access_fs): Use SCOPE_EXIT.
-	* common/filestuff.h (make_cleanup_close): Don't declare.
-	* common/filestuff.c (do_close_cleanup, make_cleanup_close):
-	Remove.
+	* cris-tdep.c (cris_supply_gregset): Change signature to match
+	what struct regset expects.
+	(cris_regset): New struct.
+	(fetch_core_registers): Remove.
+	(cris_iterate_over_regset_sections): New function.
+	(_initialize_cris_tdep): Don't call deprecated_add_core_fns.
+	(cris_gdbarch_init): Call set_gdbarch_iterate_over_regset_sections.
 
-2019-03-06  Tom Tromey  <tom@tromey.com>
+2020-02-11  Christian Biesinger  <cbiesinger@google.com>
 
-	* solib-aix.c: Use make_scope_exit.
+	* arch/arm.h (enum gdb_regnum): Add comment for the FP0..7
+	registers.
 
-2019-03-06  Tom Tromey  <tom@tromey.com>
+2020-02-11  Christian Biesinger  <cbiesinger@google.com>
 
-	* solib-svr4.c (svr4_parse_libraries, svr4_current_sos_direct):
-	Use make_scope_exit.
+	* arm-tdep.c (arm_dump_tdep): Add \n in fprintf.
 
-2019-03-06  Tom Tromey  <tom@tromey.com>
-
-	* solib-svr4.c (disable_probes_interface): Remove parameter.
-	(svr4_handle_solib_event): Use make_scope_exit.
-
-2019-03-06  Tom Tromey  <tom@tromey.com>
-
-	* remote.c (struct stop_reply_deleter): Remove.
-	(stop_reply_up): Update.
-	(struct stop_reply): Derive from notif_event.  Don't typedef.
-	<regcache>: Now a std::vector.
-	(stop_reply_xfree): Remove.
-	(stop_reply::~stop_reply): Rename from stop_reply_dtr.
-	(remote_notif_stop_alloc_reply): Return a unique_ptr.  Use new.
-	(remote_target::discard_pending_stop_replies): Use delete.
-	(remote_target::remote_parse_stop_reply): Update.
-	(remote_target::process_stop_reply): Update.
-	* remote-notif.h (struct notif_event): Add virtual destructor.
-	Remove "dtr" member.
-	(struct notif_client) <alloc_event>: Return a unique_ptr.
-	(notif_event_xfree): Don't declare.
-	(notif_event_up): New typedef.
-	* remote-notif.c (remote_notif_ack, remote_notif_parse): Update.
-	(notif_event_xfree, do_notif_event_xfree): Remove.
-	(remote_notif_state_xfree): Update.
-
-2019-03-06  Tom Tromey  <tom@tromey.com>
-
-	* infrun.c (displaced_step_clear_cleanup): Now a
-	forward_scope_exit type.
-	(displaced_step_prepare_throw): Update.
-	(displaced_step_fixup): Update.
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-03-06  Tom Tromey  <tom@tromey.com>
+	* configure: Re-generate.
 
-	* inferior.h (class inferior): Update comment.
-	* gdbthread.h (class thread_info): Update comment.
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-03-06  Joel Brobecker  <brobecker@adacore.com>
-	    Tom Tromey  <tom@tromey.com>
+	* configure: Re-generate.
 
-	* stabsread.h (struct stab_section_list): Remove.
-	(coffstab_build_psymtabs): Update.
-	* dbxread.c (symbuf_sections): Now a std::vector.
-	(sect_idx): New global.
-	(fill_symbuf): Update.
-	(coffstab_build_psymtabs): Change type of stabsects parameter.
-	Update.
-	* coffread.c (struct coff_symfile_info) <stabsects>: Now a
-	std::vector.
-	(linetab, linetab_offset, linetab_size, stringtab): Move earlier.
-	(coff_locate_sections): Update.
-	(coff_symfile_read): Remove cleanups.  Update.
-	(init_stringtab): Add storage parameter.
-	(free_stringtab, free_stringtab_cleanup): Remove.
-	(init_lineno): Add storage parameter.
-	(free_linetab, free_linetab_cleanup): Remove.
-
-2019-03-06  Pedro Alves  <palves@redhat.com>
-
-	* linux-fork.c (fork_info::clobber_regs): Delete.
-	(fork_load_infrun_state): Remove reference to 'clobber_regs'.
-	(fork_save_infrun_state): Remove 'clobber_regs' parameter.  Update
-	comment.  Adjust.
-	(scoped_switch_fork_info::scoped_switch_fork_info)
-	(checkpoint_command, linux_fork_context): Adjust
-	fork_save_infrun_state calls.
-
-2019-03-06  Pedro Alves  <palves@redhat.com>
-
-	* linux-fork.c (inf_has_multiple_thread_cb): Delete.
-	(inf_has_multiple_threads): Return 'bool' and rewrite using
-	inferior_info::threads().
-
-2019-03-06  Pedro Alves  <palves@redhat.com>
-
-	* linux-fork.c: Include <list>.
-	(fork_list): Now a std::list instance.
-	(fork_info): Add ctor, dtor, and in-class initialize all fields.
-	(forks_exist_p, find_last_fork): Adjust.
-	(new_fork): Delete.
-	(one_fork_p): New.
-	(add_fork): Adjust.
-	(free_fork): Delete, folded into fork_info::~fork_info().
-	(delete_fork, find_fork_ptid, find_fork_id, find_fork_pid):
-	Adjust.
-	(init_fork_list): Delete.
-	(linux_fork_killall, linux_fork_mourn_inferior)
-	(linux_fork_detach, info_checkpoints_command): Adjust.
-	(_initialize_linux_fork): No longer call init_fork_list.
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-03-06  Pedro Alves  <palves@redhat.com>
+	* acinclude: Update warning.m4 path.
+	* warning.m4: Move to gdbsupport.
 
-	* linux-fork.c (new_fork): New, split out of ...
-	(add_fork): ... this.  Return void.  Move "first fork" special
-	case from here, to ...
-	(checkpoint_command): ... here.
-	* linux-linux.h (add_fork): Return void.
+2020-02-11  Tom Tromey  <tromey@adacore.com>
 
-2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* remote.c (remote_console_output): Update.
+	* printcmd.c (printf_command): Update.
+	* event-loop.c (gdb_wait_for_event): Update.
+	* linux-nat.c (sigchld_handler): Update.
+	* remote-sim.c (gdb_os_write_stdout): Update.
+	(gdb_os_flush_stdout): Update.
+	(gdb_os_flush_stderr): Update.
+	(gdb_os_write_stderr): Update.
+	* exceptions.c (print_exception): Update.
+	* remote-fileio.c (remote_fileio_func_read): Update.
+	(remote_fileio_func_write): Update.
+	* tui/tui.c (tui_enable): Update.
+	* tui/tui-interp.c (tui_interp::init): Update.
+	* utils.c (init_page_info): Update.
+	(putchar_unfiltered, fputc_unfiltered): Update.
+	(gdb_flush): Update.
+	(emit_style_escape): Update.
+	(flush_wrap_buffer, fputs_maybe_filtered): Update.
+	* ui-file.c (ui_file_isatty, ui_file_read, ui_file_write)
+	(ui_file_write_async_safe, ui_file_flush, ui_file_puts): Remove.
+	(stderr_file::write): Update.
+	(stderr_file::puts): Update.
+	* ui-file.h (ui_file_isatty, ui_file_write)
+	(ui_file_write_async_safe, ui_file_read, ui_file_flush)
+	(ui_file_puts): Don't declare.
+
+2020-02-10  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2/read.c (process_psymtab_comp_unit_reader): Cast concat NULL
+	sentinel to char *.
+
+2020-02-09  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2read.c (process_psymtab_comp_unit_reader): Append CU offset to
+	filename if it matches "<artificial>".
+
+2020-02-09  Hannes Domani  <ssbssa@yahoo.de>
+
+	* windows-tdep.c (struct enum_value_name): New struct.
+	(create_enum): New function.
+	(windows_get_siginfo_type): Create and use enum types.
+
+2020-02-09  Hannes Domani  <ssbssa@yahoo.de>
+
+	* NEWS: Mention $_siginfo support for Windows.
+	* windows-nat.c (handle_exception): Set siginfo_er.
+	(windows_nat_target::mourn_inferior): Reset siginfo_er.
+	(windows_xfer_siginfo): New function.
+	(windows_nat_target::xfer_partial): Call windows_xfer_siginfo.
+	* windows-tdep.c (struct windows_gdbarch_data): New struct.
+	(init_windows_gdbarch_data): New function.
+	(get_windows_gdbarch_data): New function.
+	(windows_get_siginfo_type): New function.
+	(windows_init_abi): Register windows_get_siginfo_type.
+	(_initialize_windows_tdep): Register init_windows_gdbarch_data.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (class cutu_reader) <cutu_reader,
+	init_tu_and_read_dwo_dies>: Remove "keep" parameter.
+	<keep>: Declare method.
+	<m_keep>: Remove member.
+	<~cutu_reader>: Remove.
+	(cutu_reader::init_tu_and_read_dwo_dies): Update.
+	(cutu_reader::cutu_reader): Update.
+	(cutu_reader::keep): Rename from ~cutu_reader.
+	(process_psymtab_comp_unit, build_type_psymtabs_1)
+	(process_skeletonless_type_unit, load_partial_comp_unit)
+	(load_full_comp_unit, dwarf2_read_addr_index)
+	(read_signatured_type): Update.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (process_psymtab_comp_unit_reader): Remove
+	"want_partial_unit" parameter.
+	(process_psymtab_comp_unit): Change want_partial_unit to bool.
+	Inline check for DW_TAG_partial_unit.
+	(dwarf2_build_psymtabs_hard, scan_partial_symbols): Update.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_n_bytes, read_direct_string): Move to
+	read.c.
+	* dwarf2/leb.h (read_n_bytes, read_direct_string): Move from
+	read.c.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_address): Move to comp-unit.c.
+	(dwarf2_rnglists_process, dwarf2_ranges_process)
+	(read_attribute_value, dwarf_decode_lines_1)
+	(var_decode_location, decode_locdesc): Update.
+	* dwarf2/comp-unit.c (comp_unit_head::read_address): Move from
+	read.c.  Remove "cu" parameter.
+	* dwarf2/comp-unit.h (struct comp_unit_head) <read_address>: New
+	method.
 
-	* f-exp.y (direct_abs_decl): Handle TYPE*SIZE type names.
+2020-02-08  Tom Tromey  <tom@tromey.com>
 
-2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Chris January  <chris.january@arm.com>
-	    David Lecomber  <david.lecomber@arm.com>
+	* dwarf2/read.c (read_attribute_value, read_indirect_string)
+	(read_indirect_line_string): Update.
+	* dwarf2/comp-unit.c (read_offset): Remove.
+	(read_comp_unit_head): Update.
+	* dwarf2/comp-unit.h (struct comp_unit_head) <read_offset>: New
+	method.
+	(read_offset): Don't declare.
 
-	* f-exp.y: New token, UNOP_INTRINSIC.
-	(exp): New pattern using UNOP_INTRINSIC token.
-	(f77_keywords): Add 'abs' keyword.
-	* f-lang.c: Add 'target-float.h' and 'math.h' includes.
-	(value_from_host_double): New function.
-	(evaluate_subexp_f): Support UNOP_ABS.
+2020-02-08  Tom Tromey  <tom@tromey.com>
 
-2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* Makefile.in (COMMON_SFILES): Add dwarf2/comp-unit.c.
+	* dwarf2/read.c (struct comp_unit_head): Move to
+	dwarf2/comp-unit.h.
+	(enum class rcuh_kind): Move to comp-unit.h.
+	(get_cu_length, offset_in_cu_p): Now methods on comp_unit_head.
+	(read_comp_unit_head, error_check_comp_unit_head)
+	(read_and_check_comp_unit_head): Move to comp-unit.c.
+	(read_offset, dwarf_unit_type_name): Likewise.
+	(create_debug_type_hash_table, read_cutu_die_from_dwo)
+	(cutu_reader::cutu_reader, read_call_site_scope)
+	(find_partial_die, follow_die_offset): Update.
+	* dwarf2/comp-unit.h: New file, from dwarf2read.c.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_offset_1): Move to leb.c.
+	(read_abbrev_offset, read_offset, dwarf_decode_line_header)
+	(dwarf_decode_macro_bytes): Update.
+	* dwarf2/leb.c (read_offset): Rename; move from read.c.
+	* dwarf2/leb.h (read_offset): Declare.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_section_size): Remove.
+	(error_check_comp_unit_head, dwarf2_symbol_mark_computed):
+	Update.
+	* dwarf2/section.h (struct dwarf2_section_info) <get_size>: New method.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_initial_length): Move to leb.c.
+	* dwarf2/leb.h (read_initial_length): Declare.
+	* dwarf2/leb.c (read_initial_length): Move from read.c.  Add
+	handle_nonstd parameter.
+	* dwarf2/frame.c (read_initial_length): Remove.
+	(decode_frame_entry_1): Update.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/loc.c (dwarf2_find_location_expression)
+	(dwarf_evaluate_loc_desc::get_tls_address)
+	(dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value)
+	(rw_pieced_value, dwarf2_evaluate_loc_desc_full)
+	(dwarf2_locexpr_baton_eval, dwarf2_evaluate_property)
+	(dwarf2_compile_property_to_c)
+	(dwarf2_loc_desc_get_symbol_read_needs)
+	(dwarf2_compile_expr_to_ax, locexpr_describe_location)
+	(locexpr_tracepoint_var_ref, locexpr_generate_c_location)
+	(loclist_describe_location, loclist_tracepoint_var_ref)
+	(loclist_generate_c_location): Update.
+	* compile/compile-loc2c.c (do_compile_dwarf_expr_to_c): Update.
+	* dwarf2/loc.h (dwarf2_per_cu_objfile, dwarf2_per_cu_addr_size)
+	(dwarf2_per_cu_ref_addr_size, dwarf2_per_cu_offset_size)
+	(dwarf2_per_cu_text_offset, dwarf2_version): Don't declare.
+	* dwarf2/read.c (dwarf2_per_cu_data::objfile)
+	(dwarf2_per_cu_data::addr_size)
+	(dwarf2_per_cu_data::ref_addr_size)
+	(dwarf2_per_cu_data::text_offset)
+	(dwarf2_per_cu_data::addr_type): Now methods.
+	(per_cu_header_read_in): Make per_cu "const".
+	(dwarf2_version): Remove.
+	(dwarf2_per_cu_data::int_type): Now a method.
+	(dwarf2_per_cu_data::_addr_sized_int_type): Likewise.
+	(set_die_type, read_array_type, read_subrange_index_type)
+	(read_tag_string_type, read_subrange_type): Update.
+	* dwarf2/read.h (struct dwarf2_per_cu_data) <addr_size,
+	offset_size, ref_addr_size, text_offset, addr_type, version,
+	objfile, int_type, addr_sized_int_type>: Declare methods.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h (struct dwarf2_per_cu_data) <imported_symtabs>:
+	Move earlier.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h (dwarf_line_debug): Declare.
+	* Makefile.in (COMMON_SFILES): Add dwarf2/line-header.c.
+	* dwarf2/read.c: Move line_header code to new files.
+	(dwarf_line_debug): No longer static.
+	* dwarf2/line-header.c: New file.
+	* dwarf2/line-header.h: New file.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (struct line_header) <file_full_name,
+	file_file_name>: Return unique_xmalloc_ptr.
+	(line_header::file_file_name): Update.
+	(line_header::file_full_name): Update.
+	(dw2_get_file_names_reader): Update.
+	(macro_start_file): Update.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (struct line_header) <file_full_name,
+	file_file_name>: Declare methods.
+	(dw2_get_file_names_reader): Update.
+	(file_file_name): Now a method.
+	(file_full_name): Likewise.
+	(macro_start_file): Update.
 
-	* f-lang.c (build_fortran_types): Use TYPE_CODE_CHAR for character
-	types.
+2020-02-08  Tom Tromey  <tom@tromey.com>
 
-2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* dwarf2/read.c (dwarf_always_disassemble)
+	(show_dwarf_always_disassemble): Move to loc.c.
+	(_initialize_dwarf2_read): Move "always-disassemble" registration
+	to loc.c.
+	* dwarf2/read.h (dwarf_always_disassemble): Don't declare.
+	* dwarf2/loc.c (dwarf_always_disassemble): Move from read.c.  Now
+	static.
+	(show_dwarf_always_disassemble): Move from read.c.
+	(_initialize_dwarf2loc): Move always-disassemble from read.c.
 
-	* f-exp.y (convert_to_kind_type): Handle integer (kind=8).
-	* f-lang.c (build_fortran_types): Setup builtin_integer_s8.
-	* f-lang.h (struct builtin_f_type): Add builtin_integer_s8 field.
-
-2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* f-exp.y (convert_to_kind_type): Handle more type kinds.
-
-2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Chris January  <chris.january@arm.com>
-
-	* expprint.c (dump_subexp_body_standard): Support UNOP_KIND.
-	* f-exp.y: Define 'KIND' token.
-	(exp): New pattern for KIND expressions.
-	(ptype): Handle types with a kind extension.
-	(direct_abs_decl): Extend to spot kind extensions.
-	(f77_keywords): Add 'kind' to the list.
-	(push_kind_type): New function.
-	(convert_to_kind_type): New function.
-	* f-lang.c (evaluate_subexp_f): Support UNOP_KIND.
-	* parse.c (operator_length_standard): Likewise.
-	* parser-defs.h (enum type_pieces): Add tp_kind.
-	* std-operator.def: Add UNOP_KIND.
-
-2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* f-exp.y (f_parse): Set yydebug.
-
-2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* f-lang.c (evaluate_subexp_f): New function.
-	(exp_descriptor_f): New global.
-	(f_language_defn): Use exp_descriptor_f instead of
-	exp_descriptor_standard.
-
-2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* f-exp.y (struct token): Add comments.
-	(dot_ops): Remove uppercase versions and the end marker.
-	(f77_keywords): Likewise.
-	(yylex): Use ARRAY_SIZE to iterate over dot_ops, assert all
-	entries in the dot_ops array are case insensitive, and use
-	strncasecmp to compare strings.  Also some whitespace cleanup in
-	this area.  Similar for the f77_keywords array, except entries in
-	this list might be case sensitive.
-
-2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* f-exp.y (struct f77_boolean_val): Add comments.
-	(boolean_values): Remove uppercase versions, and end marker.
-	(yylex): Use ARRAY_SIZE for iterating over boolean_values array,
-	and use strncasecmp to achieve case insensitivity.  Additionally,
-	perform whitespace cleanup around this code.
-
-2019-03-06  Tom Tromey  <tromey@adacore.com>
-
-	* remote-sim.c (gdbsim_target_open): Use result of
-	gdb_argv::release.
-
-2019-03-06  Richard Bunt  <richard.bunt@arm.com>
-	Dirk Schubert  <dirk.schubert@arm.com>
-	Chris January  <chris.january@arm.com>
-
-	* eval.c (evaluate_subexp_standard): Call Fortran argument
-	wrapping logic.
-	* f-lang.c (struct value): A value which can be passed into a
-	Fortran function call.
-	(fortran_argument_convert): Wrap Fortran arguments in a pointer
-	where appropriate.
-	(struct type): Value ready for a Fortran function call.
-	(fortran_preserve_arg_pointer): Undo check_typedef, the pointer
-	is needed.
-	* f-lang.h (fortran_argument_convert): Declaration.
-	(fortran_preserve_arg_pointer): Declaration.
-	* infcall.c (value_arg_coerce): Call Fortran argument logic.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* python/py-prettyprint.c (print_string_repr): Remove #if.
-	* python/py-utils.c (unicode_to_encoded_string): Remove #if.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* target.c (the_dummy_target): Move later.  Change type to
-	"dummy_target".
-	(initialize_targets): Don't initialize the_dummy_target.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* gdb_bfd.c (gdb_bfd_fdopenr): Remove.
-	* gdb_bfd.h (gdb_bfd_fdopenr): Don't declare.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* windows-nat.c (windows_nat_target::attach)
-	(windows_nat_target::detach): Don't call gdb_flush.
-	* valprint.c (generic_val_print, val_print, val_print_string):
-	Don't call gdb_flush.
-	* utils.c (defaulted_query): Don't call gdb_flush.
-	* typeprint.c (print_type_scalar): Don't call gdb_flush.
-	* target.c (target_announce_detach): Don't call gdb_flush.
-	* sparc64-tdep.c (adi_print_versions): Don't call gdb_flush.
-	* remote.c (extended_remote_target::attach): Don't call
-	gdb_flush.
-	* procfs.c (procfs_target::detach): Don't call gdb_flush.
-	* printcmd.c (do_examine): Don't call gdb_flush.
-	(info_display_command): Don't call gdb_flush.
-	* p-valprint.c (pascal_val_print): Don't call gdb_flush.
-	* nto-procfs.c (nto_procfs_target::attach): Don't call gdb_flush.
-	* memattr.c (info_mem_command): Don't call gdb_flush.
-	* mdebugread.c (mdebug_build_psymtabs): Don't call gdb_flush.
-	* m2-valprint.c (m2_val_print): Don't call gdb_flush.
-	* infrun.c (follow_exec, handle_command): Don't call gdb_flush.
-	* inf-ptrace.c (inf_ptrace_target::attach): Don't call gdb_flush.
-	* hppa-tdep.c (unwind_command): Don't call gdb_flush.
-	* gnu-nat.c (gnu_nat_target::attach): Don't call gdb_flush.
-	(gnu_nat_target::detach): Don't call gdb_flush.
-	* f-valprint.c (f_val_print): Don't call gdb_flush.
-	* darwin-nat.c (darwin_nat_target::attach): Don't call gdb_flush.
-	* cli/cli-script.c (read_command_lines): Don't call gdb_flush.
-	* cli/cli-cmds.c (shell_escape, print_disassembly): Don't call
-	gdb_flush.
-	* c-valprint.c (c_val_print): Don't call gdb_flush.
-	* ada-valprint.c (ada_print_scalar): Don't call gdb_flush.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* varobj.c (update_dynamic_varobj_children): Update.
-	(install_default_visualizer): Use reset, not release.
-	* value.c (set_internalvar): Update.
-	* dwarf2loc.c (value_of_dwarf_reg_entry): Update.
-	* common/gdb_ref_ptr.h (class ref_ptr) <release>: Add
-	ATTRIBUTE_UNUSED_RESULT.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* remote.c (class scoped_remote_fd) <release>: Add
-	ATTRIBUTE_UNUSED_RESULT.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* macroexp.c (struct macro_buffer) <release>: Add
-	ATTRIBUTE_UNUSED_RESULT.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* nat/linux-btrace.c (linux_enable_bts, linux_enable_pt): Update.
-	* common/scoped_mmap.h (class scoped_mmap) <release>: Add
-	ATTRIBUTE_UNUSED_RESULT.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* common/scoped_fd.h (class scoped_fd) <release>: Add
-	ATTRIBUTE_UNUSED_RESULT.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* parser-defs.h (struct parser_state) <release>: Add
-	ATTRIBUTE_UNUSED_RESULT.
-
-2019-03-05  Tom Tromey  <tromey@adacore.com>
-
-	* utils.h (class gdb_argv) <release>: Add
-	ATTRIBUTE_UNUSED_RESULT.
-	* common/common-defs.h (ATTRIBUTE_UNUSED_RESULT): Define.
-
-2019-03-02  Eli Zaretskii  <eliz@gnu.org>
-
-	* xml-syscall.c (xml_list_syscalls_by_group): Drop 'struct' from
-	for-loop range, to avoid compiler warnings.
-
-	* tui/tui.c (tui_enable) [__MINGW32__]: Don't declare 'cap', to
-	avoid compiler warnings about unused variables.
-
-	* NEWS: Mention end of support for native debugging on MS-Windows
-	before XP.
-
-	PR gdb/24292
-	* common/netstuff.c:
-	* gdbserver/gdbreplay.c
-	* gdbserver/remote-utils.c:
-	* ser-tcp.c:
-	* unittests/parse-connection-spec-selftests.c [USE_WIN32API]:
-	Include ws2tcpip.h instead of wsiapi.h and winsock2.h.  Redefine
-	_WIN32_WINNT to 0x0501 if defined to a smaller value, as
-	'getaddrinfo' and 'freeaddrinfo' were not available before
-	Windows XP, and mingw.org's MinGW headers by default define
-	_WIN32_WINNT to 0x500.
-
-2019-03-01  Gary Benson <gbenson@redhat.com>
-
-	* coffread.c (coff_start_symtab): Remove unnecessary xstrdup.
-
-2019-02-28  Brian Vandenberg  <phantall@gmail.com>
-	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
-
-	PR gdb/8527
-	* procfs.c (proc_wait_for_stop): Wrap write of PCWSTOP in
-	set_sigint_trap, clear_sigint_trap.
+2020-02-08  Tom Tromey  <tom@tromey.com>
 
-2019-02-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* dwarf2/read.c (~dwarf2_per_objfile): Update.
+	(create_quick_file_names_table): Return htab_up.
+	(dw2_get_file_names_reader, dw2_forget_cached_source_info):
+	Update.
+	* dwarf2/read.h (struct dwarf2_per_objfile)
+	<quick_file_names_table>: Now htab_up.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/abbrev.c (abbrev_table::read): Simplify.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/abbrev.c (abbrev_table): Move constructor from header.
+	Rewrite.
+	(abbrev_table::add_abbrev, abbrev_table::lookup_abbrev): Rewrite.
+	* dwarf2/abbrev.h (struct abbrev_info) <next>: Remove.
+	(abbrev_table::abbrev_table): No longer inline.
+	(ABBREV_HASH_SIZE): Remove.
+	(abbrev_table::m_abbrevs): Now an htab_up.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_cutu_die_from_dwo): Update.
+	(cutu_reader): Update.
+	(build_type_psymtabs_1): Update.
+	* dwarf2/abbrev.c (abbrev_table::read): Rename.
+	(abbrev_table::alloc_abbrev): Update.
+	* dwarf2/abbrev.h (abbrev_table_up): Move earlier.
+	(abbrev_table::read): New static method, renamed from
+	abbrev_table_read_table.
+	(abbrev_table::alloc_abbrev)
+	(abbrev_table::add_abbrev): Now private.
+	(abbrev_table::abbrev_table): Now private.
+	(abbrev_table::m_abbrev_obstack): Now private.  Rename.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (set_die_type, get_die_type_at_offset): Update.
+	* dwarf2/read.h (struct dwarf2_per_objfile) <die_type_hash>: Now
+	htab_up.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (struct dwp_file) <loaded_cus, loaded_tus>: Now
+	htab_up.
+	(lookup_dwo_unit_in_dwp): Update.
+	(allocate_dwp_loaded_cutus_table): Return htab_up.  Don't allocate
+	on obstack.
 
-	* target.c (target_detach): Clear the regcache and the
-	frame cache.
+2020-02-08  Tom Tromey  <tom@tromey.com>
 
-2019-02-27  Pedro Alves  <palves@redhat.com>
+	* dwarf2/read.c (allocate_dwo_file_hash_table): Don't allocate on
+	obstack.
 
-	* utils.c (set_screen_size): When we cap the height/width sizes,
-	tweak the corresponding command variable to show "unlimited":
+2020-02-08  Tom Tromey  <tom@tromey.com>
 
-2019-02-27  Saagar Jha  <saagar@saagarjha.com>
-	    Pedro Alves  <palves@redhat.com>
+	* dwarf2/read.c (~dwarf2_per_objfile): Don't delete
+	line_header_hash.
+	(handle_DW_AT_stmt_list): Update.  Don't allocate on obstack.
+	* dwarf2/read.h (struct dwarf2_per_objfile) <line_header_hash>:
+	Change type to htab_up.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (allocate_type_unit_groups_table): Return
+	htab_up.  Don't allocate on obstack.
+	(get_type_unit_group, dwarf2_build_psymtabs_hard): Update.
+	* dwarf2/read.h (struct dwarf2_per_objfile) <type_unit_groups>:
+	Change type to htab_up.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h (struct dwarf2_per_objfile) <signatured_types>:
+	Change type to htab_up.
+	* dwarf2/read.c (create_signatured_type_table_from_index)
+	(create_signatured_type_table_from_debug_names)
+	(create_all_type_units, add_type_unit)
+	(lookup_dwo_signatured_type, lookup_signatured_type)
+	(process_skeletonless_type_unit): Update.
+	(create_debug_type_hash_table, create_debug_types_hash_table):
+	Change type of types_htab.
+	(allocate_signatured_type_table, allocate_dwo_unit_table): Return
+	htab_up.  Don't allocate on obstack.
+	(create_cus_hash_table): Change type of cus_htab parameter.
+	(struct dwo_file) <cus, tus>: Now htab_up.
+	(lookup_dwo_signatured_type, lookup_dwo_cutu)
+	(process_dwo_file_for_skeletonless_type_units, lookup_dwo_cutu)
+	(queue_and_load_all_dwo_tus): Update.
+	* dwarf2/index-write.c (write_gdbindex): Update.
+	(write_debug_names): Update.
 
-	* utils.c (set_screen_size): Reduce "infinite" rows and columns
-	before calling rl_set_screen_size.
+2020-02-08  Tom Tromey  <tom@tromey.com>
 
-2019-02-27  Tom Tromey  <tromey@adacore.com>
+	* dwarf2/read.h (struct dwarf2_queue_item): Move from
+	dwarf2/read.c.  Remove "next" member.  Add constructor ntad
+	destructor.
+	(struct dwarf2_per_objfile) <queue>: New member.
+	* dwarf2/read.c (struct dwarf2_queue_item): Move to
+	dwarf2/read.h.
+	(dwarf2_queue, dwarf2_queue_tail): Remove.
+	(class dwarf2_queue_guard): Add parameter to constructor.  Use
+	DISABLE_COPY_AND_ASSIGN.
+	<m_per_objfile>: New member.
+	<~dwarf2_queue_guard>: Rewrite.
+	(dw2_do_instantiate_symtab, queue_comp_unit, process_queue):
+	Update.
+	(~dwarf2_queue_item): New.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (struct die_info) <has_children>: New member.
+	(dw2_get_file_names_reader): Remove has_children.
+	(dw2_get_file_names): Update.
+	(read_cutu_die_from_dwo): Remove has_children.
+	(cutu_reader::init_tu_and_read_dwo_dies)
+	(cutu_reader::cutu_reader): Update.
+	(process_psymtab_comp_unit_reader, build_type_psymtabs_reader):
+	Remove has_children.
+	(build_type_psymtabs_1, process_skeletonless_type_unit)
+	(load_partial_comp_unit, load_full_comp_unit): Update.
+	(create_dwo_cu_reader): Remove has_children.
+	(create_cus_hash_table, read_die_and_children): Update.
+	(read_full_die_1,read_full_die): Remove has_children.
+	(read_signatured_type): Update.
+	(class cutu_reader) <has_children>: Remove.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/expr.c: Rename from dwarf2expr.c.
+	* dwarf2/expr.h: Rename from dwarf2expr.h.
+	* dwarf2/frame-tailcall.c: Rename from dwarf2-frame-tailcall.c.
+	* dwarf2/frame-tailcall.h: Rename from dwarf2-frame-tailcall.h.
+	* dwarf2/frame.c: Rename from dwarf2-frame.c.
+	* dwarf2/frame.h: Rename from dwarf2-frame.h.
+	* dwarf2/index-cache.c: Rename from dwarf-index-cache.c.
+	* dwarf2/index-cache.h: Rename from dwarf-index-cache.h.
+	* dwarf2/index-common.c: Rename from dwarf-index-common.c.
+	* dwarf2/index-common.h: Rename from dwarf-index-common.h.
+	* dwarf2/index-write.c: Rename from dwarf-index-write.c.
+	* dwarf2/index-write.h: Rename from dwarf-index-write.h.
+	* dwarf2/loc.c: Rename from dwarf2loc.c.
+	* dwarf2/loc.h: Rename from dwarf2loc.h.
+	* dwarf2/read.c: Rename from dwarf2read.c.
+	* dwarf2/read.h: Rename from dwarf2read.h.
+	* dwarf2/abbrev.c, aarch64-tdep.c, alpha-tdep.c,
+	amd64-darwin-tdep.c, arc-tdep.c, arm-tdep.c, bfin-tdep.c,
+	compile/compile-c-symbols.c, compile/compile-cplus-symbols.c,
+	compile/compile-loc2c.c, cris-tdep.c, csky-tdep.c, findvar.c,
+	gdbtypes.c, guile/scm-type.c, h8300-tdep.c, hppa-bsd-tdep.c,
+	hppa-linux-tdep.c, i386-darwin-tdep.c, i386-linux-tdep.c,
+	i386-tdep.c, iq2000-tdep.c, m32c-tdep.c, m68hc11-tdep.c,
+	m68k-tdep.c, microblaze-tdep.c, mips-tdep.c, mn10300-tdep.c,
+	msp430-tdep.c, nds32-tdep.c, nios2-tdep.c, or1k-tdep.c,
+	riscv-tdep.c, rl78-tdep.c, rs6000-tdep.c, rx-tdep.c, s12z-tdep.c,
+	s390-tdep.c, score-tdep.c, sh-tdep.c, sparc-linux-tdep.c,
+	sparc-tdep.c, sparc64-linux-tdep.c, sparc64-tdep.c, tic6x-tdep.c,
+	tilegx-tdep.c, v850-tdep.c, xstormy16-tdep.c, xtensa-tdep.c:
+	Update.
+	* Makefile.in (COMMON_SFILES): Update.
+	(HFILES_NO_SRCDIR): Update.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.c (struct die_reader_specs) <comp_dir>: Remove.
+	(init_cu_die_reader, read_cutu_die_from_dwo): Update.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.h (struct die_info): Don't declare.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.h (die_info_ptr): Remove typedef.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.c (read_call_site_scope)
+	(handle_data_member_location, dwarf2_add_member_fn)
+	(mark_common_block_symbol_computed, read_common_block)
+	(attr_to_dynamic_prop, partial_die_info::read)
+	(var_decode_location, dwarf2_fetch_die_loc_sect_off)
+	(dwarf2_symbol_mark_computed, set_die_type): Update.
+	* dwarf2/attribute.h (struct attribute) <form_is_block>: Declare
+	method.
+	(attr_form_is_block): Don't declare.
+	* dwarf2/attribute.c (attribute::form_is_block): Now a method.
 
-	* configure.ac (HAVE_LIBPYTHON2_4, HAVE_LIBPYTHON2_5): Never
-	define.
-	* python/py-value.c: Remove Python 2.4 workaround.
-	* python/py-utils.c (gdb_pymodule_addobject): Remove Python 2.4
-	workaround.
-	* python/py-type.c (convert_field, gdbpy_initialize_types): Remove
-	Python 2.4 workaround.
-	* python/python-internal.h: Remove Python 2.4 comment.
-	(Py_ssize_t): Don't define.
-	(PyVarObject_HEAD_INIT, Py_TYPE): Don't define.
-	(gdb_Py_DECREF): Remove Python 2.4 workaround.
-	(gdb_PyObject_GetAttrString, PyObject_GetAttrString): Remove.
-	(gdb_PyObject_HasAttrString, PyObject_HasAttrString): Remove.
-	* python/python.c (do_start_initialization): Remove Python 2.4
-	workaround.
-	* python/py-prettyprint.c (class dummy_python_frame): Remove.
-	(print_children): Remove Python 2.4 workaround.
-	* python/py-inferior.c (buffer_procs): Remove Python 2.4
-	workaround.
-	(CHARBUFFERPROC_NAME): Remove.
-	* python/py-breakpoint.c (gdbpy_initialize_breakpoints): Remove
-	Python 2.4 workaround.
-
-2019-02-27  Kevin Buettner  <kevinb@redhat.com>
-
-	* NEWS: Note minimum Python version.
-
-2019-02-27  Kevin Buettner  <kevinb@redhat.com>
-
-	* python/py-inferior.c (infpy_write_memory): Remove non-IS_PY3K
-	code from these functions.  Remove corresponding ifdefs.  Use
-	Py_buffer_up instead of explicit calls to PyBuffer_Release.
-	Remove gotos and target of gotos.
-	(infpy_search_memory): Likewise.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/hppa-tdep.c (hppa_dummy_id): Delete.
-	(hppa_gdbarch_init): Don't register deleted functions with
-	gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/h8300-tdep.c (h8300_unwind_pc): Delete.
-	(h8300_unwind_sp): Delete.
-	(h8300_dummy_id): Delete.
-	(h8300_gdbarch_init): Don't register deleted functions with
-	gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/ft32-tdep.c (ft32_dummy_id): Delete.
-	(ft32_unwind_pc): Delete.
-	(ft32_unwind_sp): Delete.
-	(ft32_gdbarch_init): Don't register deleted functions with
-	gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/frv-tdep.c (frv_dummy_id): Delete.
-	(frv_unwind_pc): Delete.
-	(frv_unwind_sp): Delete.
-	(frv_gdbarch_init): Don't register deleted functions with
-	gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/riscv-tdep.c (riscv_dummy_id): Delete.
-	(riscv_unwind_pc): Delete.
-	(riscv_unwind_sp): Delete.
-	(riscv_gdbarch_init): Don't register deleted functions with
-	gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/csky-tdep.c (csky_dummy_id): Delete.
-	(csky_unwind_pc): Delete.
-	(csky_unwind_sp): Delete.
-	(csky_gdbarch_init): Don't register deleted functions with
-	gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/cris-tdep.c (cris_dummy_id): Delete.
-	(cris_unwind_pc): Delete.
-	(cris_unwind_sp): Delete.
-	(cris_gdbarch_init): Don't register deleted functions with
-	gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/bfin-tdep.c (bfin_dummy_id): Delete.
-	(bfin_unwind_pc): Delete.
-	(bfin_gdbarch_init): Don't register deleted functions with gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/arm-tdep.c (arm_dummy_id): Delete.
-	(arm_unwind_pc): Delete.
-	(arm_unwind_sp): Delete.
-	(arm_gdbarch_init): Don't register deleted functions with gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/arc-tdep.c (arc_dummy_id): Delete.
-	(arc_unwind_pc): Delete.
-	(arc_unwind_sp): Delete.
-	(arc_gdbarch_init): Don't register deleted functions with gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/alpha-tdep.c (alpha_dummy_id): Delete.
-	(alpha_unwind_pc): Delete.
-	(alpha_gdbarch_init): Don't register deleted functions with
-	gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdb/aarch64-tdep.c (aarch64_dummy_id): Delete.
-	(aarch64_unwind_pc): Delete.
-	(aarch64_unwind_sp): Delete.
-	(aarch64_gdbarch_init): Don't register deleted functions with
-	gdbarch.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdbtypes.c (type_align): Don't consider static members when
-	computing structure alignment.
-
-2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* arc-tdep.c (arc_type_align): Provide alignment for basic types,
-	return 0 for other types.
-	* arch-utils.c (default_type_align): Always return 0.
-	* gdbarch.h: Regenerate.
-	* gdbarch.sh (type_align): Extend comment.
-	* gdbtypes.c (type_align): Add additional comments, always call
-	gdbarch_type_align before applying the default rules.
-	* i386-tdep.c (i386_type_align): Return 0 as the default rule,
-	generic code will then apply a suitable default.
-	* nios2-tdep.c (nios2_type_align): Provide alignment for basic
-	types, return 0 for other types.
-
-2019-02-27  Joel Brobecker  <brobecker@adacore.com>
-
-	* NEWS: Create a new section for the next release branch.
-	Rename the section of the current branch, now that it has
-	been cut.
-
-2019-02-27  Joel Brobecker  <brobecker@adacore.com>
-
-	GDB 8.3 branch created (143420fb0d5ae54323ba9953f0818c194635228d):
-	* version.in: Bump version to 8.3.50.DATE-git.
-
-2019-02-26  Simon Marchi  <simon.marchi@efficios.com>
-
-	* aix-thread.c (ptid_cmp): Remove unused variable.
-	(get_signaled_thread): Likewise.
-	(store_regs_user_thread): Likewise.
-	(store_regs_kernel_thread): Likewise.
-	(fetch_regs_kernel_thread): Remove shadowed variable.
-
-2019-02-26  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* features/riscv/32bit-cpu.xml: Add register numbers.
-	* features/riscv/32bit-fpu.c: Regenerate.
-	* features/riscv/32bit-fpu.xml: Add register numbers.
-	* features/riscv/64bit-cpu.xml: Add register numbers.
-	* features/riscv/64bit-fpu.c: Regenerate.
-	* features/riscv/64bit-fpu.xml: Add register numbers.
+2020-02-08  Tom Tromey  <tom@tromey.com>
 
-2019-02-26  Kevin Buettner  <kevinb@redhat.com>
+	* dwarf2read.c (dwarf2_find_base_address, )
+	(read_call_site_scope, rust_containing_type)
+	(dwarf2_get_pc_bounds, dwarf2_record_block_ranges)
+	(handle_data_member_location, dwarf2_add_member_fn)
+	(get_alignment, read_structure_type, process_structure_scope)
+	(mark_common_block_symbol_computed, read_common_block)
+	(read_tag_string_type, attr_to_dynamic_prop, read_subrange_type)
+	(partial_die_info::read, read_attribute_value, new_symbol)
+	(lookup_die_type, dwarf2_get_ref_die_offset)
+	(dwarf2_get_attr_constant_value, follow_die_ref_or_sig)
+	(dwarf2_fetch_die_loc_sect_off, get_DW_AT_signature_type)
+	(dwarf2_symbol_mark_computed): Update.
+	* dwarf2/attribute.h (struct attribute) <value_as_address,
+	form_is_section_offset, form_is_constant, form_is_ref>: Declare
+	methods.
+	(value_as_address, attr_form_is_section_offset)
+	(attr_form_is_constant, attr_form_is_ref): Don't declare.
+	* dwarf2/attribute.c (attribute::value_as_address)
+	(attribute::form_is_section_offset, attribute::form_is_constant)
+	(attribute::form_is_ref): Now methods.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.c (struct attribute, DW_STRING)
+	(DW_STRING_IS_CANONICAL, DW_UNSND, DW_BLOCK, DW_SND, DW_ADDR)
+	(DW_SIGNATURE, struct dwarf_block, attr_value_as_address)
+	(attr_form_is_block, attr_form_is_section_offset)
+	(attr_form_is_constant, attr_form_is_ref): Move.
+	* dwarf2/attribute.h: New file.
+	* dwarf2/attribute.c: New file, from dwarf2read.c.
+	* Makefile.in (COMMON_SFILES): Add dwarf2/attribute.c.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.c (abbrev_table_up, struct abbrev_info)
+	(struct attr_abbrev, ABBREV_HASH_SIZE, struct abbrev_table):
+	Move.
+	(read_cutu_die_from_dwo, build_type_psymtabs_1): Update.
+	(abbrev_table::alloc_abbrev, abbrev_table::add_abbrev)
+	(abbrev_table::lookup_abbrev, abbrev_table_read_table): Move to
+	abbrev.c.
+	* dwarf2/abbrev.h: New file.
+	* dwarf2/abbrev.c: New file, from dwarf2read.c.
+	* Makefile.in (COMMON_SFILES): Add dwarf2/abbrev.c.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.c (dwarf2_section_buffer_overflow_complaint)
+	(dwarf2_section_size, dwarf2_get_section_info)
+	(create_signatured_type_table_from_debug_names)
+	(create_addrmap_from_aranges, read_debug_names_from_section)
+	(get_gdb_index_contents_from_section, read_comp_unit_head)
+	(error_check_comp_unit_head, read_abbrev_offset)
+	(create_debug_type_hash_table, init_cu_die_reader)
+	(read_cutu_die_from_dwo, dwarf2_build_psymtabs_hard)
+	(read_comp_units_from_section, create_cus_hash_table)
+	(create_dwp_hash_table, create_dwo_unit_in_dwp_v1)
+	(create_dwp_v2_section, dwarf2_rnglists_process)
+	(dwarf2_ranges_process, read_die_and_siblings, read_full_die)
+	(abbrev_table_read_table, read_indirect_string_at_offset_from)
+	(read_indirect_string_from_dwz, read_addr_index_1)
+	(read_str_index, dwarf_decode_line_header, skip_form_bytes)
+	(dwarf_decode_macro_bytes, dwarf_decode_macros)
+	(fill_in_loclist_baton): Update.
+	* dwarf2/section.h (struct dwarf2_section_info) <get_name,
+	get_containing_section, get_bfd_owner, get_bfd_section,
+	get_file_name, get_id, get_flags, empty, read>: Declare methods.
+	(dwarf2_read_section, get_section_name, get_section_file_name)
+	(get_containing_section, get_section_bfd_owner)
+	(get_section_bfd_section, get_section_name, get_section_file_name)
+	(get_section_id, get_section_flags, dwarf2_section_empty_p): Don't
+	declare.
+	* dwarf2/section.c (dwarf2_section_info::get_containing_section)
+	(dwarf2_section_info::get_bfd_owner)
+	(dwarf2_section_info::get_bfd_section)
+	(dwarf2_section_info::get_name)
+	(dwarf2_section_info::get_file_name, dwarf2_section_info::get_id)
+	(dwarf2_section_info::get_flags, dwarf2_section_info::empty)
+	(dwarf2_section_info::read): Now methods.
+	* dwarf-index-write.c (class debug_names): Update.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.h (struct dwarf2_section_info, dwarf2_read_section):
+	Move to dwarf2/section.h.
+	* dwarf2read.c (get_containing_section, get_section_bfd_owner)
+	(get_section_bfd_section, get_section_name)
+	(get_section_file_name, get_section_id, get_section_flags)
+	(dwarf2_section_empty_p, dwarf2_read_section): Moe to
+	dwarf2/section.c.
+	* dwarf2/section.h: New file.
+	* dwarf2/section.c: New file, from dwarf2read.c.
+	* Makefile.in (COMMON_SFILES): Add dwarf2/section.c.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.h (read_unsigned_leb128): Don't declare.
+	* dwarf2read.c (read_1_byte, read_1_signed_byte, read_2_bytes)
+	(read_2_signed_bytes, read_3_bytes, read_4_bytes)
+	(read_4_signed_bytes, read_8_bytes): Move to dwarf2/leb.h.
+	(read_unsigned_leb128, read_signed_leb128): Move to dwarf2/leb.c.
+	* dwarf2/leb.h: New file, from dwarf2read.c.
+	* dwarf2/leb.c: New file, from dwarf2read.c.
+	* dwarf2-frame.c (read_1_byte, read_4_bytes, read_8_bytes):
+	Remove.
+	* Makefile.in (CONFIG_SRC_SUBDIR): Add dwarf2.
+	(COMMON_SFILES): Add dwarf2/leb.c.
 
-	* NEWS: Mention two argument form of gdb.Value constructor.
-	* python/py-value.c (convert_buffer_and_type_to_value): New
-	function.
-	(valpy_new): Parse arguments via gdb_PyArg_ParseTupleAndKeywords.
-	Add support for handling an optional second argument.  Call
-	convert_buffer_and_type_to_value as appropriate.
-	* python/python-internal.h (Py_buffer_deleter): New struct.
-	(Py_buffer_up): New typedef.
+2020-02-08  Joel Brobecker  <brobecker@adacore.com>
 
-2019-02-25  John Baldwin  <jhb@FreeBSD.org>
+	GDB 9.1 released.
 
-	* dwarf2read.c (dwarf2_get_dwz_file): Reset dwz_bfd to nullptr
-	instead of releasing ownership.
+2020-02-05  Iain Buclaw  <ibuclaw@gdcproject.org>
 
-2019-02-25  Jordan Rupprecht  <rupprecht@google.com>
+	PR gdb/25190:
+	* gdb/remote-sim.c (gdb_os_write_stderr): Update.
+	* gdb/remote.c (remote_console_output): Update.
+	* gdb/ui-file.c (fputs_unfiltered): Rename to...
+	(ui_file_puts): ...this.
+	* gdb/ui-file.h (ui_file_puts): Add declaration.
+	* gdb/utils.c (emit_style_escape): Update.
+	(flush_wrap_buffer): Update.
+	(fputs_maybe_filtered): Update.
+	(fputs_unfiltered): Add function.
 
-	* dwarf2read.c (open_and_init_dwp_file): Call
-	elf_numsections instead of bfd_count_sections to initialize
-	dwp_file->num_sections.
+2020-02-05  Iain Buclaw  <ibuclaw@gdcproject.org>
 
-2019-02-25  Tom Tromey  <tromey@adacore.com>
+	* gdb/event-loop.c (gdb_wait_for_event): Update.
+	* gdb/printcmd.c (printf_command): Update.
+	* gdb/remote-fileio.c (remote_fileio_func_write): Update.
+	* gdb/remote-sim.c (gdb_os_flush_stdout): Update.
+	(gdb_os_flush_stderr): Update.
+	* gdb/remote.c (remote_console_output): Update.
+	* gdb/ui-file.c (gdb_flush): Rename to...
+	(ui_file_flush): ...this.
+	(stderr_file::write): Update.
+	(stderr_file::puts): Update.
+	* gdb/ui-file.h (gdb_flush): Rename to...
+	(ui_file_flush): ...this.
+	* gdb/utils.c (gdb_flush): Add function.
+	* gdb/utils.h (gdb_flush): Add declaration.
 
-	* solib-darwin.c (darwin_get_dyld_bfd): Don't release dyld_bfd.
+2020-02-07  Tom Tromey  <tromey@adacore.com>
 
-2019-02-23  Sergio Durigan Junior  <sergiodj@redhat.com>
+	PR breakpoints/24915:
+	* source.c (find_and_open_source): Do not check basenames_may_differ.
 
-	* gcore.in: Add '--readnever' option when invoking GDB.
+2020-02-07  Tom Tromey  <tom@tromey.com>
 
-2019-02-22  Simon Marchi  <simon.marchi@polymtl.ca>
+	* README: Update gdbserver documentation.
+	* gdbserver: Move to top level.
+	* configure.tgt (build_gdbserver): Remove.
+	* configure.ac: Remove --enable-gdbserver.
+	* configure: Rebuild.
+	* Makefile.in (distclean): Don't mention gdbserver.
 
-	* MAINTAINERS: Update my email address.
+2020-02-06  Shahab Vahedi  <shahab@synopsys.com>
 
-2019-02-22  Simon Marchi  <simon.marchi@polymtl.ca>
+	* source-cache.c (source_cache::ensure): Surround
+	get_plain_source_lines with a try/catch.
+	(source_cache::get_line_charpos): Get rid of try/catch
+	and only check for the return value of "ensure".
+	* tui/tui-source.c (tui_source_window::set_contents):
+	Simplify "nlines" calculation.
 
-	* build-id.c (build_id_to_debug_bfd_1): New function.
-	(build_id_to_debug_bfd): Look for separate debug file in
-	sysroot.
+2020-02-06  Shahab Vahedi  <shahab@synopsys.com>
 
-2019-02-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+	* MAINTAINERS (Write After Approval): Add myself.
 
-	* gdbarch.sh: Update the copyright year range that is placed into
-	generated files.
+2020-02-05  Christian Biesinger  <cbiesinger@google.com>
 
-2019-02-22  Keith Seitz  <keiths@redhat.com>
+	* sparc-nat.h (struct sparc_target) <xfer_partial>: Fix base class
+	function call.
 
-	PR symtab/23853
-	* linespec.c (create_sals_line_offset): Search for the default
-	symtab's filename instead of its fullname.
+2020-02-05  Christian Biesinger  <cbiesinger@google.com>
 
-2019-02-21  Alan Hayward  <alan.hayward@arm.com>
+	* ppc-nbsd-tdep.h: Fix macro name in #endif comment.
 
-	* NEWS: Update style defaults.
+2020-02-05  Maciej W. Rozycki  <macro@wdc.com>
 
-2019-02-21  Alan Hayward  <alan.hayward@arm.com>
+	* nat/riscv-linux-tdesc.h: New file.
+	* nat/riscv-linux-tdesc.c: New file, taking code from...
+	* riscv-linux-nat.c (riscv_linux_nat_target::read_description):
+	... here.
+	* configure.nat <linux> <riscv*>: Add nat/riscv-linux-tdesc.o to
+	NATDEPFILES.
 
-	* main.c (captured_main_1): Disable styling in batch mode.
+2020-02-04  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-02-20  Tom Tromey  <tom@tromey.com>
+	* remote-sim.c (sim_inferior_data::sim_inferior_data): Assert that
+	we don't set the fake simulator ptid to the null_ptid.
 
-	* symtab.c (symtab_symbol_info): Fix typos.
+2020-02-03  Simon Marchi  <simon.marchi@efficios.com>
+
+	* fork-child.c (gdb_startup_inferior): Use bool instead of int.
+	* gdbthread.h (class thread_info) <resumed>: Likewise.
+	* infrun.c (resume_1): Likewise.
+	(proceed): Likewise.
+	(infrun_thread_stop_requested): Likewise.
+	(stop_all_threads): Likewise.
+	(handle_inferior_event): Likewise.
+	(restart_threads): Likewise.
+	(finish_step_over): Likewise.
+	(keep_going_stepped_thread): Likewise.
+	* linux-nat.c (attach_proc_task_lwp_callback): Likewise.
+	(linux_handle_extended_wait): Likewise.
+	* record-btrace.c (get_thread_current_frame_id): Likewise.
+	* record-full.c (record_full_wait_1): Likewise.
+	* remote.c (remote_target::process_initial_stop_replies): Likewise.
+	* target.c (target_resume): Likewise.
+	* thread.c (set_running_thread): Likewise.
+
+2020-02-03  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
+
+	* f-valprint.c (f77_print_array_1): Changed datatype of index
+	variable to LONGEST from int to enable it to contain bound
+	values correctly.
+
+2020-02-03  Maciej W. Rozycki  <macro@wdc.com>
+
+	* riscv-linux-nat.c [!NFPREG] (NFPREG): New macro.
+	(supply_fpregset_regnum, fill_fpregset): Handle regset buffer
+	offsets according to FLEN determined.
+	(riscv_linux_nat_target::read_description): Determine FLEN
+	dynamically.
+	(riscv_linux_nat_target::fetch_registers): Size regset buffer
+	according to FLEN determined.
+	(riscv_linux_nat_target::store_registers): Likewise.
+
+2020-02-01  Shahab Vahedi  <shahab@synopsys.com>
+
+	* target-descriptions.c (tdesc_register_in_reggroup_p): Return 0
+	when reg->group is empty and reggroup is not.
+
+2020-01-31  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (ravenscar_thread_target::mourn_inferior):
+	Call beneath target's mourn_inferior after unpushing.
+
+2020-01-31  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR tui/9765
+	* tui/tui-disasm.c (tui_find_disassembly_address): If we don't
+	have enough lines to fill the screen, still return the lowest
+	address we found.
 
-2019-02-20  Tom Tromey  <tromey@adacore.com>
+2020-01-31  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* findcmd.c (_initialize_mem_search): Use upper case for
-	metasyntactic variables.
+	* tui/tui-win.c (_initialize_tui_win): Update help text for '+',
+	'-', '<', and '>' commands.
 
-2019-02-20  Alan Hayward  <alan.hayward@arm.com>
+2020-01-29  Pedro Alves  <palves@redhat.com>
+	    Sergio Durigan Junior  <sergiodj@redhat.com>
 
-	* aarch64-tdep.c (aarch64_add_reggroups): New function.
-	(aarch64_gdbarch_init): Call aarch64_add_reggroups.
+	* infcmd.c (construct_inferior_arguments): Assert that
+	'argc' is greater than 0.
 
-2019-02-19  Simon Marchi  <simon.marchi@polymtl.ca>
+2020-01-29  Luis Machado  <luis.machado@linaro.org>
 
-	* top.h (source_file_name): Change to std::string.
-	* top.c (source_file_name): Likewise.
-	(command_line_input): Adjust.
-	* cli/cli-script.c (script_from_file): Adjust.
+	* aarch64-tdep.c (BRK_INSN_MASK): Define to 0xffe0001f.
+	(BRK_INSN_MASK): Define to 0xd4200000.
+	(aarch64_program_breakpoint_here_p): New function.
+	(aarch64_gdbarch_init): Set gdbarch_program_breakpoint_here_p hook.
+	* arch-utils.c (default_program_breakpoint_here_p): Moved from
+	breakpoint.c.
+	* arch-utils.h (default_program_breakpoint_here_p): Moved from
+	breakpoint.h
+	* breakpoint.c (bp_loc_is_permanent): Changed return type to bool and
+	call gdbarch_program_breakpoint_here_p.
+	(program_breakpoint_here): Moved to arch-utils.c, renamed to
+	default_program_breakpoint_here_p, changed return type to bool and
+	simplified.
+	* breakpoint.h (program_breakpoint_here): Moved prototype to
+	arch-utils.h, renamed to default_program_breakpoint_here_p and changed
+	return type to bool.
+	* gdbarch.c: Regenerate.
+	* gdbarch.h: Regenerate.
+	* gdbarch.sh (program_breakpoint_here_p): New method.
+	* infrun.c (handle_signal_stop): Call
+	gdbarch_program_breakpoint_here_p.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* ctfread.c (struct ctf_fp_info): Reindent.
+	(_initialize_ctfread): Remove.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.c (partial_map_expand_apply)
+	(psym_find_pc_sect_compunit_symtab, psym_lookup_symbol)
+	(psymtab_to_symtab, psym_find_last_source_symtab, dump_psymtab)
+	(psym_print_stats, psym_expand_symtabs_for_function)
+	(psym_map_symbol_filenames, psym_map_matching_symbols)
+	(psym_expand_symtabs_matching)
+	(partial_symtab::read_dependencies, maintenance_info_psymtabs)
+	(maintenance_check_psymtabs): Use new methods.
+	* psympriv.h (struct partial_symtab) <readin_p,
+	get_compunit_symtab>: New methods.
+	<readin, compunit_symtab>: Remove members.
+	(struct standard_psymtab): New.
+	(struct legacy_psymtab): Derive from standard_psymtab.
+	* dwarf2read.h (struct dwarf2_psymtab): Derive from
+	standard_psymtab.
+	* ctfread.c (struct ctf_psymtab): Derive from standard_psymtab.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_psymtab_to_symtab_1): Call
+	read_dependencies.  Add assert.
+	* psymtab.c (partial_symtab::read_dependencies): New method.
+	* psympriv.h (struct partial_symtab) <read_dependencies>: New
+	method.
+	* mdebugread.c (psymtab_to_symtab_1): Call read_dependencies.
+	* dwarf2read.c (dwarf2_psymtab::expand_psymtab): Call
+	read_dependencies.
+	* dbxread.c (dbx_psymtab_to_symtab_1): Call read_dependencies.
+	Add assert.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_psymtab_to_symtab_1): Change argument order.
+	Call expand_psymtab.
+	(xcoff_read_symtab): Call expand_psymtab.
+	(xcoff_start_psymtab, xcoff_end_psymtab): Set
+	legacy_expand_psymtab.
+	* psympriv.h (struct partial_symtab) <expand_psymtab>: New
+	method.
+	(struct legacy_psymtab) <expand_psymtab>: Implement.
+	<legacy_expand_psymtab>: New member.
+	* mdebugread.c (mdebug_read_symtab): Call expand_psymtab.
+	(parse_partial_symbols): Set legacy_expand_psymtab.
+	(psymtab_to_symtab_1): Change argument order.  Call
+	expand_psymtab.
+	(new_psymtab): Set legacy_expand_psymtab.
+	* dwarf2read.h (struct dwarf2_psymtab) <expand_psymtab>: Declare.
+	* dwarf2read.c (dwarf2_psymtab::read_symtab): Call
+	expand_psymtab.
+	(dwarf2_psymtab::expand_psymtab): Rename from
+	psymtab_to_symtab_1.  Call expand_psymtab.
+	* dbxread.c (start_psymtab): Set legacy_expand_psymtab.
+	(dbx_end_psymtab): Likewise.
+	(dbx_psymtab_to_symtab_1): Change argument order. Call
+	expand_psymtab.
+	(dbx_read_symtab): Call expand_psymtab.
+	* ctfread.c (struct ctf_psymtab) <expand_psymtab>: Declare.
+	(ctf_psymtab::expand_psymtab): Rename from psymtab_to_symtab.
+	(ctf_psymtab::read_symtab): Call expand_psymtab.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_read_symtab): Remove prints.  Add assert.
+	* psymtab.c (psymtab_to_symtab): Print verbose "Reading"
+	messages.
+	* mdebugread.c (mdebug_read_symtab): Remove prints.
+	* dwarf2read.c (dwarf2_psymtab::read_symtab): Remove prints.  Add
+	assert.
+	* dbxread.c (dbx_read_symtab): Remove prints.  Add assert.
 
-2019-02-19  Tom Tromey  <tromey@adacore.com>
+2020-01-26  Tom Tromey  <tom@tromey.com>
 
-	* ravenscar-thread.c
-	(ravenscar_thread_target::update_thread_list): Don't call
-	ada_build_task_list.
-	* ada-lang.h (ada_build_task_list): Don't declare.
-	* ada-tasks.c (struct ada_tasks_inferior_data)
-	<task_list_valid_p>: Now bool.
-	(read_known_tasks, ada_task_list_changed)
-	(ada_tasks_invalidate_inferior_data): Update.
-	(read_known_tasks_array): Return bool.
-	(read_known_tasks_list): Likewise.
-	(read_known_tasks): Return void.
-	(ada_build_task_list): Now static.
-
-2019-02-18  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* gdbtypes.c (type_align): Allow alignment of TYPE_CODE_METHODPTR
-	and TYPE_CODE_MEMBERPTR to be overridden by the gdbarch.
-
-2019-02-18  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* ada-task.c (_initialize_tasks): Use 'with_cleanup' register
-	variant for ada_tasks_pspace_data_handle and
-	ada_tasks_inferior_data_handle.
-	(ada_tasks_pspace_data_cleanup): New function.
-	(ada_tasks_inferior_data_cleanup): New function.
-
-2019-02-17  Tom Tromey  <tom@tromey.com>
-
-	* macrotab.h (macro_source_fullname): Return a std::string.
-	* macrotab.c (macro_include, check_for_redefinition)
-	(macro_undef, macro_lookup_definition, foreach_macro)
-	(foreach_macro_in_scope): Update.
-	(macro_source_fullname): Return a std::string.
-	* macrocmd.c (show_pp_source_pos): Update.
-
-2019-02-17  Tom Tromey  <tom@tromey.com>
-
-	* macrocmd.c (show_pp_source_pos): Style the file names.
-
-2019-02-17  Tom Tromey  <tom@tromey.com>
-
-	PR tui/24197:
-	* tui/tui-source.c (tui_set_source_content_nil): Rewrite.
-
-2019-02-17  Tom Tromey  <tom@tromey.com>
-
-	* ada-lang.c (user_select_syms): Use filtered printing.
-	* utils.c (wrap_style): New global.
-	(desired_style): Remove.
-	(emit_style_escape): Add stream parameter.
-	(set_output_style, reset_terminal_style, prompt_for_continue):
-	Update.
-	(flush_wrap_buffer): Only flush gdb_stdout.
-	(wrap_here): Set wrap_style.
-	(fputs_maybe_filtered): Clear the wrap buffer on exception.  Don't
-	treat escape sequences as a character.  Change when wrap buffer is
-	flushed.
-	(fputs_styled): Do not set the output style when the default is
-	requested.
-	* ui-style.h (struct ui_file_style) <is_default>: New method.
-	* source.c (print_source_lines_base): Emit escape sequences in one
-	piece.
-
-2019-02-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbtypes.c (type_align): Handle TYPE_CODE_RANGE the same as
-	integers and enumeration types.
-
-2019-02-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* ada-lang.c (standard_lookup): Use ada_lookup_encoded_symbol
-	instead of lookup_symbol_in_language
-	(do_exact_match): New function.
-	(ada_get_symbol_name_matcher): Return do_exact_match when
-	doing a verbatim match.
-
-2019-02-15  Tom Tromey  <tromey@adacore.com>
-
-	* ravenscar-thread.c (ravenscar_thread_target::resume)
-	(ravenscar_thread_target::wait): Special case wildcard requests.
-
-2019-02-15  Tom Tromey  <tromey@adacore.com>
-
-	* ravenscar-thread.c (base_ptid): Remove.
-	(struct ravenscar_thread_target) <close>: New method.
-	<m_base_ptid>: New member.
-	<update_inferior_ptid, active_task, task_is_currently_active,
-	runtime_initialized>: Declare methods.
-	<ravenscar_thread_target>: Add constructor.
-	(ravenscar_thread_target::task_is_currently_active)
-	(ravenscar_thread_target::update_inferior_ptid)
-	(ravenscar_runtime_initialized): Rename.  Now methods.
-	(ravenscar_thread_target::resume, ravenscar_thread_target::wait)
-	(ravenscar_thread_target::update_thread_list): Update.
-	(ravenscar_thread_target::active_task): Now method.
-	(ravenscar_thread_target::store_registers)
-	(ravenscar_thread_target::prepare_to_store)
-	(ravenscar_thread_target::prepare_to_store)
-	(ravenscar_thread_target::mourn_inferior): Update.
-	(ravenscar_inferior_created): Use "new" to create target.
-	(ravenscar_thread_target::get_ada_task_ptid): Update.
-	(_initialize_ravenscar): Don't initialize base_ptid.
-	(ravenscar_ops): Remove global.
-
-2019-02-15  Tom Tromey  <tromey@adacore.com>
-
-	* target.h (push_target): Declare new overload.
-	* target.c (push_target): New overload, taking an rvalue reference.
-	* remote.c (remote_target::open_1): Use push_target overload.
-	* corelow.c (core_target_open): Use push_target overload.
-
-2019-02-15  Tom Tromey  <tromey@adacore.com>
-
-	* ravenscar-thread.c (is_ravenscar_task)
-	(ravenscar_task_is_currently_active): Return bool.
-	(ravenscar_update_inferior_ptid, get_running_thread_msymbol)
-	(_initialize_ravenscar): Remove "(void)".
-	(has_ravenscar_runtime, ravenscar_runtime_initialized): Likewise.
-	Return bool.
-
-2019-02-15  Tom Tromey  <tromey@adacore.com>
-
-	* ravenscar-thread.c (ravenscar_runtime_initializer)
-	(has_ravenscar_runtime, get_running_thread_id)
-	(ravenscar_thread_target::resume): Fix indentation.
-
-2019-02-15  Tom Tromey  <tromey@adacore.com>
-
-	* sparc-ravenscar-thread.c (struct sparc_ravenscar_ops): Derive
-	from ravenscar_arch_ops.
-	(sparc_ravenscar_ops::fetch_registers)
-	(sparc_ravenscar_ops::store_registers): Now methods.
-	(sparc_ravenscar_prepare_to_store): Remove.
-	(sparc_ravenscar_ops): Redefine.
-	* ravenscar-thread.h (struct ravenscar_arch_ops): Add virtual
-	methods and destructor.  Remove members.
-	* ravenscar-thread.c (ravenscar_thread_target::fetch_registers)
-	(ravenscar_thread_target::store_registers)
-	(ravenscar_thread_target::prepare_to_store): Update.
-	* ppc-ravenscar-thread.c (ppc_ravenscar_generic_prepare_to_store):
-	Remove.
-	(struct ppc_ravenscar_powerpc_ops): Derive from
-	ravenscar_arch_ops.
-	(ppc_ravenscar_powerpc_ops::fetch_registers)
-	(ppc_ravenscar_powerpc_ops::store_registers): Now methods.
-	(ppc_ravenscar_powerpc_ops): Redefine.
-	(struct ppc_ravenscar_e500_ops): Derive from ravenscar_arch_ops.
-	(ppc_ravenscar_e500_ops::fetch_registers)
-	(ppc_ravenscar_e500_ops::store_registers): Now methods.
-	(ppc_ravenscar_e500_ops): Redefine.
-	* aarch64-ravenscar-thread.c
-	(aarch64_ravenscar_generic_prepare_to_store): Remove.
-	(struct aarch64_ravenscar_ops): Derive from ravenscar_arch_ops.
-	(aarch64_ravenscar_fetch_registers)
-	(aarch64_ravenscar_store_registers): Now methods.
-	(aarch64_ravenscar_ops): Redefine.
+	* xcoffread.c (this_symtab_psymtab, read_xcoff_symtab)
+	(xcoff_psymtab_to_symtab_1, xcoff_read_symtab)
+	(xcoff_start_psymtab, xcoff_end_psymtab, scan_xcoff_symtab): Use
+	legacy_symtab.
+	* stabsread.h (dbx_end_psymtab): Use legacy_symtab.
+	* psymtab.c (psymtab_to_symtab): Call method.
+	(dump_psymtab): Update.
+	* psympriv.h (struct partial_symtab): Add virtual destructor.
+	<read_symtab>: New method.
+	(struct legacy_symtab): New.
+	* mdebugread.c (mdebug_read_symtab): Use legacy_psymtab.
+	(struct pst_map) <pst>: Now a legacy_psymtab.
+	(parse_procedure, parse_partial_symbols, psymtab_to_symtab_1)
+	(new_psymtab): Use legacy_psymtab.
+	* dwarf2read.h (struct dwarf2_psymtab): New.
+	(struct dwarf2_per_cu_data) <psymtab>: Use it.
+	* dwarf2read.c (dwarf2_create_include_psymtab)
+	(dwarf2_build_include_psymtabs, create_type_unit_group)
+	(create_partial_symtab, process_psymtab_comp_unit_reader)
+	(build_type_psymtabs_reader, build_type_psymtab_dependencies)
+	(set_partial_user): Use dwarf2_psymtab.
+	(dwarf2_psymtab::read_symtab): Rename from dwarf2_read_symtab.
+	(psymtab_to_symtab_1, process_full_comp_unit)
+	(process_full_type_unit, dwarf2_ranges_read)
+	(dwarf2_get_pc_bounds, psymtab_include_file_name)
+	(dwarf_decode_lines): Use dwarf2_psymtab.
+	* dwarf-index-write.c (psym_index_map): Use dwarf2_psymtab.
+	(add_address_entry_worker, write_one_signatured_type)
+	(recursively_count_psymbols, recursively_write_psymbols)
+	(write_one_signatured_type, psyms_seen_size, write_gdbindex)
+	(write_debug_names): Likewise.
+	* dbxread.c (struct header_file_location): Take a legacy_psymtab.
+	<pst>: Now a legacy_psymtab.
+	(find_corresponding_bincl_psymtab): Return a legacy_psymtab.
+	(read_dbx_symtab, start_psymtab, dbx_end_psymtab)
+	(dbx_psymtab_to_symtab_1, read_ofile_symtab): Use legacy_psymtab.
+	* ctfread.c (struct ctf_psymtab): New.
+	(ctf_start_symtab, ctf_end_symtab, psymtab_to_symtab): Take a
+	ctf_psymtab.
+	(ctf_psymtab::read_symtab): Rename from ctf_read_symtab.
+	(create_partial_symtab): Return a ctf_psymtab.
+	(scan_partial_symbols): Update.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_start_psymtab): Use new.
+	* psymtab.c (partial_symtab::partial_symtab): New constructor,
+	renamed from start_psymtab_common.
+	* psympriv.h (struct partial_symtab): Add new constructor.
+	(start_psymtab_common): Don't declare.
+	* mdebugread.c (parse_partial_symbols): Use new.
+	* dwarf2read.c (create_partial_symtab): Use new.
+	* dbxread.c (start_psymtab): Use new.
+	* ctfread.c (create_partial_symtab): Use new.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_end_psymtab): Use new.
+	* psymtab.c (start_psymtab_common): Use new.
+	(partial_symtab::partial_symtab): Rename from allocate_psymtab.
+	Update.
+	* psympriv.h (struct partial_symtab): Add parameters to
+	constructor.  Don't inline.
+	(allocate_psymtab): Don't declare.
+	* mdebugread.c (new_psymtab): Use new.
+	* dwarf2read.c (dwarf2_create_include_psymtab): Use new.
+	* dbxread.c (dbx_end_psymtab): Use new.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.h (class psymtab_storage) <install_psymtab>: Rename from
+	allocate_psymtab.  Update documentation.
+	* psymtab.c (psymtab_storage::install_psymtab): Rename from
+	allocate_psymtab.  Do not use new.
+	(allocate_psymtab): Use new.  Update.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_psymtab_to_symtab_1): Update.
+	* psymtab.c (psym_print_stats): Update.
+	* psympriv.h (struct partial_symtab) <readin,
+	psymtabs_addrmap_supported, anonymous>: Now bool.
+	* mdebugread.c (psymtab_to_symtab_1): Update.
+	* dwarf2read.c (create_type_unit_group, create_partial_symtab)
+	(build_type_psymtabs_reader, psymtab_to_symtab_1)
+	(process_full_comp_unit, process_full_type_unit): Update.
+	* dbxread.c (dbx_psymtab_to_symtab_1): Update.
+	* ctfread.c (psymtab_to_symtab): Update.
 
-2019-02-15  Tom Tromey  <tromey@adacore.com>
+2020-01-26  Tom Tromey  <tom@tromey.com>
 
-	* ravenscar-thread.c (ravenscar_thread_target::stopped_by_sw_breakpoint)
-	(ravenscar_thread_target::stopped_by_hw_breakpoint)
-	(ravenscar_thread_target::stopped_by_watchpoint)
-	(ravenscar_thread_target::stopped_data_address)
-	(ravenscar_thread_target::core_of_thread): Use scoped_restore.
+	* mdebugread.c (parse_partial_symbols): Use discard_psymtab.
+	* psymtab.h (class psymtab_storage) <free_psymtabs>: Remove.
+	* psymtab.c (psymtab_storage): Delete psymtabs.
+	(psymtab_storage::allocate_psymtab): Use new.
+	(psymtab_storage::discard_psymtab): Use delete.
+	* psympriv.h (struct partial_symtab): Add constructor and
+	initializers.
 
-2019-02-15  Tom Tromey  <tromey@adacore.com>
+2020-01-26  Tom Tromey  <tom@tromey.com>
 
-	* ravenscar-thread.c: Fix some typos.
+	* machoread.c: Do not include psympriv.h.
 
-2019-02-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-	    Tom Tromey  <tromey@adacore.com>
+2020-01-25  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
-	* ada-lang.c (ada_exception_sal): Change addr_string to a
-	std::string.
-	(create_ada_exception_catchpoint): Update.
+	* NEWS: Mention the new option and the set/show commands.
 
-2019-02-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-	    Tom Tromey  <tromey@adacore.com>
+2020-01-25  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
-	* breakpoint.c (~bp_location): Rename from bp_location_dtor.
-	(bp_location_ops): Remove.
-	(base_breakpoint_allocate_location): Update.
-	(free_bp_location): Update.
-	* ada-lang.c (class ada_catchpoint_location)
-	<ada_catchpoint_location>: Remove ops parameter.
-	(ada_catchpoint_location_dtor): Remove.
-	(ada_catchpoint_location_ops): Remove.
-	(allocate_location_exception): Update.
-	* breakpoint.h (struct bp_location_ops): Remove.
-	(class bp_location) <bp_location>: Remove bp_location_ops
-	parameter.
-	<~bp_location>: Add destructor.
-	<ops>: Remove.
+	* exec.c (exec_file_mismatch_names, exec_file_mismatch_mode)
+	(show_exec_file_mismatch_command, set_exec_file_mismatch_command)
+	(validate_exec_file): New variables, enums, functions.
+	(exec_file_locate_attach, print_section_info): Style the filenames.
+	(_initialize_exec): Install show_exec_file_mismatch_command and
+	 set_exec_file_mismatch_command.
+	* gdbcore.h (validate_exec_file): Declare.
+	* infcmd.c (attach_command): Call validate_exec_file.
+	* remote.c ( remote_target::remote_add_inferior): Likewise.
 
-2019-02-14  Thomas Schwinge  <thomas@codesourcery.com>
-	    Pedro Alves  <palves@redhat.com>
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* remote.c (remote_target::remote_parse_stop_reply): Avoid using
-	'PATH_MAX'.
+	* frame.c (find_frame_sal): Move call to get_next_frame into more
+	inner scope.
+	* inline-frame.c (inilne_state) <inline_state>: Update argument
+	types.
+	(inilne_state) <skipped_symbol>: Rename to...
+	(inilne_state) <skipped_symbols>: ...this, and change to a vector.
+	(skip_inline_frames): Build vector of skipped symbols and use this
+	to reate the inline_state.
+	(inline_skipped_symbol): Add a comment and some assertions, fetch
+	skipped symbol from the list.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* buildsym.c (lte_is_less_than): Delete.
+	(buildsym_compunit::end_symtab_with_blockvector): Create local
+	lambda function to sort line table entries, and use
+	std::stable_sort instead of std::sort.
+	* symtab.c (find_pc_sect_line): Skip backward over end of sequence
+	markers when looking for a previous line.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (lnp_state_machine::record_line): Include
+	end_sequence parameter in debug print out.  Record the line if we
+	are at an end_sequence marker even if it's not the start of a
+	statement.
+	* symmisc.c (maintenance_print_one_line_table): Print end of
+	sequence markers with 'END' not '0'.
+
+2020-01-24  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/25410
+	* thread.c (scoped_restore_current_thread::restore): Use
+	switch_to_inferior_no_thread.
+	* exec.c: Include "progspace-and-thread.h".
+	(add_target_sections, remove_target_sections):
+	scoped_restore_current_pspace_and_thread instead of
+	scoped_restore_current_thread.
+	* infrun.c (handle_vfork_child_exec_or_exit): Assign the pspace
+	and aspace to the inferior before calling clone_program_space.
+	Remove stale comment.
+
+2020-01-24  Christian Biesinger  <cbiesinger@google.com>
+
+	* arm-nbsd-nat.c (arm_nbsd_nat_target::fetch_registers): Rename to...
+	(arm_netbsd_nat_target::fetch_registers): ...this.
+	(arm_nbsd_nat_target::store_registers): Rename to...
+	(arm_netbsd_nat_target::store_registers): ...this.
+
+2020-01-24  Christian Biesinger  <cbiesinger@google.com>
+
+	* arm-nbsd-nat.c: Define _KERNTYPES to get the declaration of
+	register_t.
+
+2020-01-24  Christian Biesinger  <cbiesinger@google.com>
+
+	* aarch64-fbsd-tdep.c (aarch64_fbsd_iterate_over_regset_sections):
+	Update comment.
+	* aarch64-linux-tdep.c (aarch64_linux_iterate_over_regset_sections):
+	Likewise.
+	* arm-fbsd-tdep.c (arm_fbsd_iterate_over_regset_sections): Likewise.
+	* gdbcore.h (deprecated_add_core_fns): Update comment to point to
+	the correct replacement (iterate_over_regset_sections).
+	* riscv-fbsd-tdep.c (riscv_fbsd_iterate_over_regset_sections):
+	Update comment.
+
+2020-01-24  Graham Markall  <graham.markall@embecosm.com>
+
+	PR gdb/23718
+	* gdb/python/python.c (execute_gdb_command): Call
+	async_enable_stdin in catch block.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* event-loop.c (start_event_loop): Wrap async_enable_stdin with
+	SWITCH_THRU_ALL_UIS.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR tui/9765
+	* minsyms.c (lookup_minimal_symbol_by_pc_section): Update header
+	comment, add extra parameter, and update to store previous symbol
+	when appropriate.
+	* minsyms.h (lookup_minimal_symbol_by_pc_section): Update comment,
+	add extra parameter.
+	* tui/tui-disasm.c (tui_disassemble): Update header comment,
+	remove unneeded parameter, add try/catch around gdb_print_insn,
+	rewrite to add items to asm_lines vector.
+	(tui_find_backward_disassembly_start_address): New function.
+	(tui_find_disassembly_address): Updated throughout.
+	(tui_disasm_window::set_contents): Update for changes to
+	tui_disassemble.
+	(tui_disasm_window::do_scroll_vertical): No need to adjust the
+	number of lines to scroll.
+
+2020-01-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* objfiles.h (ALL_OBJFILE_OSECTIONS): Move up.
+	(SECT_OFF_DATA): Likewise.
+	(SECT_OFF_RODATA): Likewise.
+	(SECT_OFF_TEXT): Likewise.
+	(SECT_OFF_BSS): Likewise.
+	(struct objfile) <text_section_offset, data_section_offset>: New
+	methods.
+	* amd64-windows-tdep.c (amd64_windows_find_unwind_info): Use
+	objfile::text_section_offset.
+	* coff-pe-read.c (add_pe_forwarded_sym): Likewise.
+	* coffread.c (coff_symtab_read): Likewise.
+	(enter_linenos): Likewise.
+	(process_coff_symbol): Likewise.
+	* ctfread.c (get_objfile_text_range): Likewise.
+	* dtrace-probe.c (dtrace_probe::get_relocated_address):
+	Use objfile::data_section_offset.
+	* dwarf2-frame.c (execute_cfa_program): Use
+	objfile::text_section_offset.
+	(dwarf2_frame_find_fde): Likewise.
+	* dwarf2read.c (create_addrmap_from_index): Likewise.
+	(create_addrmap_from_aranges): Likewise.
+	(dw2_find_pc_sect_compunit_symtab): Likewise.
+	(process_psymtab_comp_unit_reader): Likewise.
+	(add_partial_symbol): Likewise.
+	(add_partial_subprogram): Likewise.
+	(process_full_comp_unit): Likewise.
+	(read_file_scope): Likewise.
+	(read_func_scope): Likewise.
+	(read_lexical_block_scope): Likewise.
+	(read_call_site_scope): Likewise.
+	(dwarf2_rnglists_process): Likewise.
+	(dwarf2_ranges_process): Likewise.
+	(dwarf2_ranges_read): Likewise.
+	(dwarf_decode_lines_1): Likewise.
+	(new_symbol): Likewise.
+	(dwarf2_fetch_die_loc_sect_off): Likewise.
+	(dwarf2_per_cu_text_offset): Likewise.
+	* hppa-bsd-tdep.c (hppabsd_find_global_pointer): Likewise.
+	* hppa-tdep.c (read_unwind_info): Likewise.
+	* ia64-tdep.c (ia64_find_unwind_table): Likewise.
+	* psympriv.h (struct partial_symtab): Likewise.
+	* psymtab.c (find_pc_sect_psymtab): Likewise.
+	* solib-svr4.c (enable_break): Likewise.
+	* stap-probe.c (relocate_address): Use
+	objfile::data_section_offset.
+	* xcoffread.c (enter_line_range): Use
+	objfile::text_section_offset.
+	(read_xcoff_symtab): Likewise.
+
+2020-01-23  Simon Marchi  <simon.marchi@efficios.com>
+
+	* darwin-nat.c (darwin_nat_target::wait_1): Move `inf`
+	declaration to narrower scopes.
+
+2020-01-23  Simon Marchi  <simon.marchi@efficios.com>
+
+	* darwin-nat.h (struct darwin_exception_msg, enum
+	darwin_msg_state, struct darwin_thread_info, darwin_thread_t):
+	Move up.
+	(class darwin_nat_target) <wait_1, check_new_threads,
+	decode_exception_message, decode_message, stop_inferior,
+	init_thread_list, ptrace_him, cancel_breakpoint>: Declare.
+	* darwin-nat.c (darwin_check_new_threads): Rename to...
+	(darwin_nat_target::check_new_threads): ... this.
+	(darwin_suspend_inferior_it): Remove.
+	(darwin_decode_exception_message): Rename to...
+	(darwin_nat_target::decode_exception_message): ... this.
+	(darwin_nat_target::resume): Pass target to find_inferior_ptid.
+	(darwin_decode_message): Rename to...
+	(darwin_nat_target::decode_message): ... this.
+	(cancel_breakpoint): Rename to...
+	(darwin_nat_target::cancel_breakpoint): ... this.
+	(darwin_wait): Rename to...
+	(darwin_nat_target::wait_1): ... this.  Use range-based for loop
+	instead of iterate_over_inferiors.
+	(darwin_nat_target::wait): Call wait_1 instead of darwin_wait.
+	(darwin_stop_inferior): Rename to...
+	(darwin_nat_target::stop_inferior): ... this.
+	(darwin_nat_target::kill): Call wait_1 instead of darwin_wait.
+	(darwin_init_thread_list): Rename to...
+	(darwin_nat_target::init_thread_list): ... this.
+	(darwin_ptrace_him): Rename to...
+	(darwin_nat_target::ptrace_him): ... this.
+	(darwin_nat_target::create_inferior): Pass lambda function to
+	fork_inferior.
+	(darwin_nat_target::detach): Call stop_inferior instead of
+	darwin_stop_inferior.
+	* fork-inferior.h (fork_inferior): Change init_trace_fun
+	parameter to gdb::function_view.
+	* fork-inferior.c (fork_inferior): Likewise.
+
+2020-01-23  Hannes Domani  <ssbssa@yahoo.de>
+
+	* i386-cygwin-tdep.c (core_process_module_section): Update.
+	* windows-nat.c (struct lm_info_windows): Add text_offset.
+	(windows_xfer_shared_libraries): Update.
+	* windows-tdep.c (windows_xfer_shared_library):
+	Add text_offset_cached argument.
+	* windows-tdep.h (windows_xfer_shared_library): Update.
+
+2020-01-21  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbarch.sh: Add declaration for _initialize_gdbarch.
+
+2020-01-21  Simon Marchi  <simon.marchi@efficios.com>
+
+	* remote-sim.c (check_for_duplicate_sim_descriptor): Remove.
+	(get_sim_inferior_data): Remove use of iterate_over_inferiors,
+	replace with range-based for.
+	(gdbsim_interrupt_inferior): Remove.
+	(gdbsim_target::interrupt): Replace iterate_over_inferiors use
+	with a range-based for.  Inline code from
+	gdbsim_interrupt_inferior.
+
+2020-01-21  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.c (proceed): Fix indentation.
+
+2020-01-21  Tom Tromey  <tromey@adacore.com>
+
+	* source-cache.c (source_cache::ensure): Call ext_lang_colorize.
+	* python/python.c (python_extension_ops): Update.
+	(gdbpy_colorize): New function.
+	* python/lib/gdb/__init__.py (colorize): New function.
+	* extension.h (ext_lang_colorize): Declare.
+	* extension.c (ext_lang_colorize): New function.
+	* extension-priv.h (struct extension_language_ops) <colorize>: New
+	member.
+	* cli/cli-style.c (_initialize_cli_style): Update help text.
 
-2019-02-14  David Michael  <fedora.dm0@gmail.com>
-	    Samuel Thibault  <samuel.thibault@gnu.org>
-	    Thomas Schwinge  <thomas@codesourcery.com>
+2020-01-21  Luis Machado  <luis.machado@linaro.org>
 
-	* gnu-nat.c (S_proc_getmsgport_reply, S_proc_task2proc_reply)
-	(S_proc_pid2proc_reply): Adjust to Hurd "proc" interface changes.
+	* aarch64-tdep.c (struct aarch64_displaced_step_closure)
+	<cond>: Change type to bool.
+	(aarch64_displaced_step_b_cond): Update cond to use bool type.
+	(aarch64_displaced_step_cb): Likewise.
+	(aarch64_displaced_step_tb): Likewise.
 
-2019-02-14  Thomas Schwinge  <thomas@codesourcery.com>
+2020-01-21  Luis Machado  <luis.machado@linaro.org>
 
-	* gnu-nat.c (gnu_write_inferior, parse_int_arg, _parse_bool_arg)
-	(check_empty): Use "const char *".
+	* aarch64-tdep.c (aarch64_displaced_step_fixup): Add more debugging
+	output.
 
-	* gnu-nat.c (gnu_nat_target::detach): Instead of
-	'detach_inferior (pid)' call
-	'detach_inferior (find_inferior_pid (pid))'.
+2020-01-21  Luis Machado  <luis.machado@linaro.org>
 
-	* configure.nat [gdb_host == i386gnu] (NATDEPFILES): Add
-	'nat/fork-inferior.o'.
-	* gnu-nat.c: #include "nat/fork-inferior.h".
+	* aarch64-tdep.c (struct aarch64_displaced_step_closure )
+	<pc_adjust>: Adjust the documentation.
+	(aarch64_displaced_step_fixup): Check if PC really moved before
+	adjusting it.
 
-	* gnu-nat.c (gnu_nat_target::detach): Instead of
-	'inf_child_maybe_unpush_target (ops)' call 'maybe_unpush_target'.
-	* gnu-nat.h: #include "inf-child.h".
-	* i386-gnu-nat.c (gnu_fetch_registers): Rename/move to
-	'i386_gnu_nat_target::fetch_registers'.
-	(gnu_store_registers): Rename/move to
-	'i386_gnu_nat_target::store_registers'.
+2020-01-19  Tom Tromey  <tom@tromey.com>
 
-	* config/i386/nm-i386gnu.h: Don't "#include" any files.
-	* gnu-nat.h (mach_thread_info): New function.
-	* gnu-nat.c (thread_takeover_sc_cmd): Use it.
+	* disasm.c (~gdb_disassembler): New destructor.
+	(gdb_buffered_insn_length): Call disassemble_free_target.
+	* disasm.h (class gdb_disassembler): Declare destructor.  Use
+	DISABLE_COPY_AND_ASSIGN.
 
-	* config/i386/nm-i386gnu.h (gnu_target_pid_to_str): Remove.
+2020-01-19  Tom Tromey  <tom@tromey.com>
 
-2019-02-14  Frederic Konrad  <konrad@adacore.com>
+	* dwarf2read.c (abbrev_table_up): Move typedef earlier.
+	(die_reader_func_ftype): Remove.
+	(cutu_reader): New class.
+	(dw2_get_file_names_reader): Remove "data" parameter.
+	(dw2_get_file_names): Use cutu_reader.
+	(create_debug_type_hash_table): Update.
+	(read_cutu_die_from_dwo): Update comment.
+	(lookup_dwo_unit): Add dwo_name parameter.
+	(cutu_reader::init_tu_and_read_dwo_dies): Now a method.  Remove
+	die_reader_func_ftype and data parameters.
+	(cutu_reader::cutu_reader): Rename from init_cutu_and_read_dies.
+	Remove die_reader_func_ftype and data parameters.
+	(~cutu_reader): New; from init_cutu_and_read_dies.
+	(cutu_reader::cutu_reader): Rename from
+	init_cutu_and_read_dies_no_follow.  Remove die_reader_func_ftype
+	and data parameters.
+	(init_cutu_and_read_dies_simple): Remove.
+	(struct process_psymtab_comp_unit_data): Remove.
+	(process_psymtab_comp_unit_reader): Remove data parameter; add
+	want_partial_unit and pretend_language parameters.
+	(process_psymtab_comp_unit): Use cutu_reader.
+	(build_type_psymtabs_reader): Remove data parameter.
+	(build_type_psymtabs_1): Use cutu_reader.
+	(process_skeletonless_type_unit): Likewise.
+	(load_partial_comp_unit_reader): Remove.
+	(load_partial_comp_unit): Use cutu_reader.
+	(load_full_comp_unit_reader): Remove.
+	(load_full_comp_unit): Use cutu_reader.
+	(struct create_dwo_cu_data): Remove.
+	(create_dwo_cu_reader): Remove datap parameter; add dwo_file and
+	dwo_unit parameters.
+	(create_cus_hash_table): Use cutu_reader.
+	(struct dwarf2_read_addr_index_data): Remove.
+	(dwarf2_read_addr_index_reader): Remove.
+	(dwarf2_read_addr_index): Use cutu_reader.
+	(read_signatured_type_reader): Remove.
+	(read_signatured_type): Use cutu_reader.
+
+2020-01-19  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_show_assembly): Use tui_suppress_output.
+	* tui/tui-wingeneral.h (class tui_suppress_output): New.
+	(tui_wrefresh): Declare.
+	* tui/tui-wingeneral.c (suppress_output): New global.
+	(tui_suppress_output, ~tui_suppress_output): New constructor and
+	destructor.
+	(tui_wrefresh): New function.
+	(tui_gen_win_info::refresh_window): Use tui_wrefresh.
+	(tui_gen_win_info::make_window): Call wnoutrefresh when needed.
+	* tui/tui-regs.h (struct tui_data_window) <no_refresh>: Declare
+	method.
+	* tui/tui-regs.c (tui_data_window::erase_data_content): Call
+	tui_wrefresh.
+	(tui_data_window::no_refresh): New method.
+	(tui_data_item_window::refresh_window): Call tui_wrefresh.
+	(tui_reg_command): Use tui_suppress_output
+	* tui/tui-layout.c (tui_set_layout): Use tui_suppress_output.
+	* tui/tui-data.h (struct tui_gen_win_info) <no_refresh>: New
+	method.
+	* tui/tui-command.c (tui_refresh_cmd_win): Call tui_wrefresh.
 
-	* riscv-rdep.c (riscv_type_alignment): Handle TYPE_CODE_RANGE.
+2020-01-19  Tom Tromey  <tom@tromey.com>
 
-2019-02-14  Joel Brobecker  <brobecker@adacore.com>
+	* tui/tui-winsource.c (tui_update_source_windows_with_line):
+	Handle case where symtab is null.
 
-	* windows-nat.c (windows_add_thread): Add new parameter
-	"main_thread_p" with default value set to false.  Update
-	function documentation as well as all callers.
-	(windows_delete_thread): Likewise.
-	(fake_create_process): Update call to windows_add_thread.
-	(get_windows_debug_event) <CREATE_THREAD_DEBUG_EVENT>
-	<CREATE_PROCESS_DEBUG_EVENT>: Likewise.
-	<EXIT_THREAD_DEBUG_EVENT, EXIT_PROCESS_DEBUG_EVENT>: Update
-	call to windows_delete_thread.
+2020-01-19  Simon Marchi  <simon.marchi@polymtl.ca>
 
-2019-02-13  Simon Marchi  <simon.marchi@ericsson.com>
+	* linux-fork.c (one_fork_p): Simplify.
 
-	* MAINTAINERS: Add Andrew Burgess as global maintainer.
+2020-01-17  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-02-12  John Baldwin  <jhb@FreeBSD.org>
+	* top.c (struct qt_args): Remove.
+	(kill_or_detach): Change return type to void, replace `void *`
+	parameter with a proper one.
+	(print_inferior_quit_action):  Likewise.
+	(quit_confirm): Use range-based for loop to iterate over inferiors.
+	(quit_force): Likewise.
 
-	* symfile.c (find_separate_debug_file): Use canonical path of
-	sysroot with child_path instead of gdb_sysroot if it is valid.
+2020-01-17  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-02-12  John Baldwin  <jhb@FreeBSD.org>
+	* mi/mi-main.c (run_one_inferior): Change return type to void, replace
+	`void *` parameter with proper parameters.
+	(mi_cmd_exec_run): Use range-based loop to iterate over inferiors.
+	(print_one_inferior): Change return type to void, replace `void *`
+	parameter with proper parameters.
+	(mi_cmd_list_thread_groups): Use range-based loop to iterate over
+	inferiors.
+	(get_other_inferior): Remove.
+	(mi_cmd_remove_inferior): Use range-based loop to iterate over
+	inferiors.
 
-	* symfile.c (find_separate_debug_file): Use child_path to
-	determine if an object file is under a sysroot.
+2020-01-17  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-02-12  John Baldwin  <jhb@FreeBSD.org>
+	* mi/mi-interp.c (report_initial_inferior): Remove.
+	(mi_interp::init): Use range-based for to iterate over inferiors.
 
-	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
-	unittests/child-path-selftests.c.
-	* common/pathstuff.c (child_path): New function.
-	* common/pathstuff.h (child_path): New prototype.
-	* unittests/child-path-selftests.c: New file.
+2020-01-17  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-02-12  John Baldwin  <jhb@FreeBSD.org>
+	* python/py-inferior.c (build_inferior_list): Remove.
+	(gdbpy_ref): Use range-based for loop to iterate over inferiors.
 
-	* symfile.c (find_separate_debug_file): Look for separate debug
-	files in debug directories under the sysroot.
+2020-01-16  Christian Biesinger  <cbiesinger@google.com>
 
-2019-02-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* btrace.c (btrace_compute_ftrace_1): Fix spelling error (Unkown).
+	(btrace_stitch_trace): Likewise.
+	* charset.c (intermediate_encoding): Likewise (vaild).
+	* nat/linux-btrace.c (linux_read_pt): Likewise (Unkown).
+	* python/py-record-btrace.c (struct PyMethodDef): Likewise (occurences).
+	* record-btrace.c (record_btrace_print_conf): Likewise (unkown).
 
-	* symtab.h (struct minimal_symbol data_p): New const method.
-	(struct minimal_symbol text_p): Likewise.
-	* symtab.c (output_source_filename): Use file name style
-	to print file name.
-	(print_symbol_info): Likewise.
-	(print_msymbol_info): Use address style to print addresses.
-	Use function name style to print executable text symbols.
-	(expand_symtab_containing_pc): Use data_p.
-	(find_pc_sect_compunit_symtab): Likewise.
+2020-01-16  Hannes Domani  <ssbssa@yahoo.de>
 
-2019-02-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* windows-tdep.c (windows_get_tlb_type):
+	Add rtl_user_process_parameters type.
 
-	* breakpoint.c (describe_other_breakpoints): Use address style
-	to print addresses.
-	(say_where): Likewise.
+2020-01-16  Pedro Alves  <palves@redhat.com>
+	    Norbert Lange  <nolange79@gmail.com>
 
-2019-02-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	PR build/24805
+	* gdbsupport/gdb_proc_service.h (PS_EXPORT): New.
+	(ps_get_thread_area, ps_getpid, ps_lcontinue, ps_lgetfpregs)
+	(ps_lgetregs, ps_lsetfpregs, ps_lsetregs, ps_lstop, ps_pcontinue)
+	(ps_pdread, ps_pdwrite, ps_pglobal_lookup, ps_pstop, ps_ptread)
+	(ps_ptwrite, ps_lgetxregs, ps_lgetxregsize, ps_lsetxregs)
+	(ps_plog): Redeclare exported functions with default visibility.
 
-	* ada-typeprint.c (print_func_type): Print function name
-	style to print function name.
-	* c-typeprint.c (c_print_type_1): Likewise.
+2020-01-16  Nitika Achra  <Nitika.Achra@amd.com>
 
-2019-02-11  Alan Hayward  <alan.hayward@arm.com>
+	* dwarf2loc.c (decode_debug_loclists_addresses): Handle
+	DW_LLE_base_addressx, DW_LLE_startx_length, DW_LLE_start_length.
 
-	* aarch64-linux-tdep.c (aarch64_linux_get_syscall_number): Check
-	for execve.
+2020-01-15  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-02-10  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* infcmd.c (post_create_inferior): Use get_thread_regcache
+	instead of get_current_regcache.
 
-	* c-exp.y (direct_abs_decl): Use emplace_back to record the
-	type_stack.
+2020-01-14  Tom Tromey  <tom@tromey.com>
 
-2019-02-10  Joel Brobecker  <brobecker@adacore.com>
+	PR symtab/12535:
+	* python/python.c (gdbpy_decode_line): Treat empty string the same
+	as no argument.
 
-	* ada-varobj.c (ada_value_is_changeable_p): Add handling of
-	TYPE_CODE_REF types.
+2020-01-14  Tom Tromey  <tom@tromey.com>
 
-2019-02-08  Jim Wilson  <jimw@sifive.com>
+	* Makefile.in (CLIBS): Remove second use of $(LIBIBERTY).
 
-	* riscv-linux-tdep.c (riscv_linux_fregmap): New.
-	(riscv_linux_fregset): New.
-	(riscv_linux_iterate_over_regset_sections): Call cb for .reg2 section.
+2020-01-14  Tom Tromey  <tom@tromey.com>
 
-2019-02-07  Tom Tromey  <tom@tromey.com>
+	* nat/linux-btrace.c: Don't include <config.h>.
+	* nat/linux-ptrace.c: Don't include <config.h>.
+	* nat/x86-linux-dregs.c: Don't include <config.h>.
 
-	* thread.c (thread_cancel_execution_command): Update.
-	* thread-fsm.h (struct thread_fsm): Add constructor, destructor,
-	methods.
-	(struct thread_fsm_ops): Remove.
-	(thread_fsm_ctor, thread_fsm_delete, thread_fsm_clean_up)
-	(thread_fsm_should_stop, thread_fsm_return_value)
-	(thread_fsm_set_finished, thread_fsm_finished_p)
-	(thread_fsm_async_reply_reason, thread_fsm_should_notify_stop):
-	Don't declare.
-	* mi/mi-interp.c (mi_on_normal_stop_1): Update.
-	* infrun.c (clear_proceed_status_thread)
-	(clean_up_just_stopped_threads_fsms, fetch_inferior_event)
-	(print_stop_event): Update.
-	* infcmd.c (struct step_command_fsm): Inherit from thread_fsm.
-	Add constructor.
-	(step_command_fsm_ops): Remove.
-	(new_step_command_fsm): Remove.
-	(step_1): Update.
-	(step_command_fsm::should_stop): Rename from
-	step_command_fsm_should_stop.
-	(step_command_fsm::clean_up): Rename from
-	step_command_fsm_clean_up.
-	(step_command_fsm::do_async_reply_reason): Rename from
-	step_command_fsm_async_reply_reason.
-	(struct until_next_fsm): Inherit from thread_fsm.  Add
-	constructor.
-	(until_next_fsm_ops): Remove.
-	(new_until_next_fsm): Remove.
-	(until_next_fsm::should_stop): Rename from
-	until_next_fsm_should_stop.
-	(until_next_fsm::clean_up): Rename from until_next_fsm_clean_up.
-	(until_next_fsm::do_async_reply_reason): Rename from
-	until_next_fsm_async_reply_reason.
-	(struct finish_command_fsm): Inherit from thread_fsm.  Add
-	constructor.  Change type of breakpoint.
-	(finish_command_fsm_ops): Remove.
-	(new_finish_command_fsm): Remove.
-	(finish_command_fsm::should_stop): Rename from
-	finish_command_fsm_should_stop.
-	(finish_command_fsm::clean_up): Rename from
-	finish_command_fsm_clean_up.
-	(finish_command_fsm::return_value): Rename from
-	finish_command_fsm_return_value.
-	(finish_command_fsm::do_async_reply_reason): Rename from
-	finish_command_fsm_async_reply_reason.
-	(finish_command): Update.
-	* infcall.c (struct call_thread_fsm): Inherit from thread_fsm.
-	Add constructor.
-	(call_thread_fsm_ops): Remove.
-	(call_thread_fsm::call_thread_fsm): Rename from
-	new_call_thread_fsm.
-	(call_thread_fsm::should_stop): Rename from
-	call_thread_fsm_should_stop.
-	(call_thread_fsm::should_notify_stop): Rename from
-	call_thread_fsm_should_notify_stop.
-	(run_inferior_call, call_function_by_hand_dummy): Update.
-	* cli/cli-interp.c (should_print_stop_to_console): Update.
-	* breakpoint.c (struct until_break_fsm): Inherit from thread_fsm.
-	Add constructor.  Change type of location_breakpoint,
-	caller_breakpoint.
-	(until_break_fsm_ops): Remove.
-	(new_until_break_fsm): Remove.
-	(until_break_fsm::should_stop): Rename from
-	until_break_fsm_should_stop.
-	(until_break_fsm::clean_up): Rename from
-	until_break_fsm_clean_up.
-	(until_break_fsm::do_async_reply_reason): Rename from
-	until_break_fsm_async_reply_reason.
-	(until_break_command): Update.
-	* thread-fsm.c: Remove.
-	* Makefile.in (COMMON_SFILES): Remove thread-fsm.c.
-
-2019-02-07  Tom Tromey  <tom@tromey.com>
-
-	* yy-remap.h: Add include guard.
-	* xtensa-tdep.h: Add include guard.
-	* xcoffread.h: Rename include guard.
-	* varobj-iter.h: Add include guard.
-	* tui/tui.h: Rename include guard.
-	* tui/tui-winsource.h: Rename include guard.
-	* tui/tui-wingeneral.h: Rename include guard.
-	* tui/tui-windata.h: Rename include guard.
-	* tui/tui-win.h: Rename include guard.
-	* tui/tui-stack.h: Rename include guard.
-	* tui/tui-source.h: Rename include guard.
-	* tui/tui-regs.h: Rename include guard.
-	* tui/tui-out.h: Rename include guard.
-	* tui/tui-layout.h: Rename include guard.
-	* tui/tui-io.h: Rename include guard.
-	* tui/tui-hooks.h: Rename include guard.
-	* tui/tui-file.h: Rename include guard.
-	* tui/tui-disasm.h: Rename include guard.
-	* tui/tui-data.h: Rename include guard.
-	* tui/tui-command.h: Rename include guard.
-	* tic6x-tdep.h: Add include guard.
-	* target/waitstatus.h: Rename include guard.
-	* target/wait.h: Rename include guard.
-	* target/target.h: Rename include guard.
-	* target/resume.h: Rename include guard.
-	* target-float.h: Rename include guard.
-	* stabsread.h: Add include guard.
-	* rs6000-tdep.h: Add include guard.
-	* riscv-fbsd-tdep.h: Add include guard.
-	* regformats/regdef.h: Rename include guard.
-	* record.h: Rename include guard.
-	* python/python.h: Rename include guard.
-	* python/python-internal.h: Rename include guard.
-	* python/py-stopevent.h: Rename include guard.
-	* python/py-ref.h: Rename include guard.
-	* python/py-record.h: Rename include guard.
-	* python/py-record-full.h: Rename include guard.
-	* python/py-record-btrace.h: Rename include guard.
-	* python/py-instruction.h: Rename include guard.
-	* python/py-events.h: Rename include guard.
-	* python/py-event.h: Rename include guard.
-	* procfs.h: Add include guard.
-	* proc-utils.h: Add include guard.
-	* p-lang.h: Add include guard.
-	* or1k-tdep.h: Rename include guard.
-	* observable.h: Rename include guard.
-	* nto-tdep.h: Rename include guard.
-	* nat/x86-linux.h: Rename include guard.
-	* nat/x86-linux-dregs.h: Rename include guard.
-	* nat/x86-gcc-cpuid.h: Add include guard.
-	* nat/x86-dregs.h: Rename include guard.
-	* nat/x86-cpuid.h: Rename include guard.
-	* nat/ppc-linux.h: Rename include guard.
-	* nat/mips-linux-watch.h: Rename include guard.
-	* nat/linux-waitpid.h: Rename include guard.
-	* nat/linux-ptrace.h: Rename include guard.
-	* nat/linux-procfs.h: Rename include guard.
-	* nat/linux-osdata.h: Rename include guard.
-	* nat/linux-nat.h: Rename include guard.
-	* nat/linux-namespaces.h: Rename include guard.
-	* nat/linux-btrace.h: Rename include guard.
-	* nat/glibc_thread_db.h: Rename include guard.
-	* nat/gdb_thread_db.h: Rename include guard.
-	* nat/gdb_ptrace.h: Rename include guard.
-	* nat/fork-inferior.h: Rename include guard.
-	* nat/amd64-linux-siginfo.h: Rename include guard.
-	* nat/aarch64-sve-linux-sigcontext.h: Rename include guard.
-	* nat/aarch64-sve-linux-ptrace.h: Rename include guard.
-	* nat/aarch64-linux.h: Rename include guard.
-	* nat/aarch64-linux-hw-point.h: Rename include guard.
-	* mn10300-tdep.h: Add include guard.
-	* mips-linux-tdep.h: Add include guard.
-	* mi/mi-parse.h: Rename include guard.
-	* mi/mi-out.h: Rename include guard.
-	* mi/mi-main.h: Rename include guard.
-	* mi/mi-interp.h: Rename include guard.
-	* mi/mi-getopt.h: Rename include guard.
-	* mi/mi-console.h: Rename include guard.
-	* mi/mi-common.h: Rename include guard.
-	* mi/mi-cmds.h: Rename include guard.
-	* mi/mi-cmd-break.h: Rename include guard.
-	* m2-lang.h: Add include guard.
-	* location.h: Rename include guard.
-	* linux-record.h: Rename include guard.
-	* linux-nat.h: Add include guard.
-	* linux-fork.h: Add include guard.
-	* i386-darwin-tdep.h: Rename include guard.
-	* hppa-linux-offsets.h: Add include guard.
-	* guile/guile.h: Rename include guard.
-	* guile/guile-internal.h: Rename include guard.
-	* gnu-nat.h: Rename include guard.
-	* gdb-stabs.h: Rename include guard.
-	* frv-tdep.h: Add include guard.
-	* f-lang.h: Add include guard.
-	* event-loop.h: Add include guard.
-	* darwin-nat.h: Rename include guard.
-	* cp-abi.h: Rename include guard.
-	* config/sparc/nm-sol2.h: Rename include guard.
-	* config/nm-nto.h: Rename include guard.
-	* config/nm-linux.h: Add include guard.
-	* config/i386/nm-i386gnu.h: Rename include guard.
-	* config/djgpp/nl_types.h: Rename include guard.
-	* config/djgpp/langinfo.h: Rename include guard.
-	* compile/gcc-cp-plugin.h: Add include guard.
-	* compile/gcc-c-plugin.h: Add include guard.
-	* compile/compile.h: Rename include guard.
-	* compile/compile-object-run.h: Rename include guard.
-	* compile/compile-object-load.h: Rename include guard.
-	* compile/compile-internal.h: Rename include guard.
-	* compile/compile-cplus.h: Rename include guard.
-	* compile/compile-c.h: Rename include guard.
-	* common/xml-utils.h: Rename include guard.
-	* common/x86-xstate.h: Rename include guard.
-	* common/version.h: Rename include guard.
-	* common/vec.h: Rename include guard.
-	* common/tdesc.h: Rename include guard.
-	* common/selftest.h: Rename include guard.
-	* common/scoped_restore.h: Rename include guard.
-	* common/scoped_mmap.h: Rename include guard.
-	* common/scoped_fd.h: Rename include guard.
-	* common/safe-iterator.h: Rename include guard.
-	* common/run-time-clock.h: Rename include guard.
-	* common/refcounted-object.h: Rename include guard.
-	* common/queue.h: Rename include guard.
-	* common/ptid.h: Rename include guard.
-	* common/print-utils.h: Rename include guard.
-	* common/preprocessor.h: Rename include guard.
-	* common/pathstuff.h: Rename include guard.
-	* common/observable.h: Rename include guard.
-	* common/netstuff.h: Rename include guard.
-	* common/job-control.h: Rename include guard.
-	* common/host-defs.h: Rename include guard.
-	* common/gdb_wait.h: Rename include guard.
-	* common/gdb_vecs.h: Rename include guard.
-	* common/gdb_unlinker.h: Rename include guard.
-	* common/gdb_unique_ptr.h: Rename include guard.
-	* common/gdb_tilde_expand.h: Rename include guard.
-	* common/gdb_sys_time.h: Rename include guard.
-	* common/gdb_string_view.h: Rename include guard.
-	* common/gdb_splay_tree.h: Rename include guard.
-	* common/gdb_setjmp.h: Rename include guard.
-	* common/gdb_ref_ptr.h: Rename include guard.
-	* common/gdb_optional.h: Rename include guard.
-	* common/gdb_locale.h: Rename include guard.
-	* common/gdb_assert.h: Rename include guard.
-	* common/filtered-iterator.h: Rename include guard.
-	* common/filestuff.h: Rename include guard.
-	* common/fileio.h: Rename include guard.
-	* common/environ.h: Rename include guard.
-	* common/common-utils.h: Rename include guard.
-	* common/common-types.h: Rename include guard.
-	* common/common-regcache.h: Rename include guard.
-	* common/common-inferior.h: Rename include guard.
-	* common/common-gdbthread.h: Rename include guard.
-	* common/common-exceptions.h: Rename include guard.
-	* common/common-defs.h: Rename include guard.
-	* common/common-debug.h: Rename include guard.
-	* common/cleanups.h: Rename include guard.
-	* common/buffer.h: Rename include guard.
-	* common/btrace-common.h: Rename include guard.
-	* common/break-common.h: Rename include guard.
-	* cli/cli-utils.h: Rename include guard.
-	* cli/cli-style.h: Rename include guard.
-	* cli/cli-setshow.h: Rename include guard.
-	* cli/cli-script.h: Rename include guard.
-	* cli/cli-interp.h: Rename include guard.
-	* cli/cli-decode.h: Rename include guard.
-	* cli/cli-cmds.h: Rename include guard.
-	* charset-list.h: Add include guard.
-	* buildsym-legacy.h: Rename include guard.
-	* bfin-tdep.h: Add include guard.
-	* ax.h: Rename include guard.
-	* arm-linux-tdep.h: Add include guard.
-	* arm-fbsd-tdep.h: Add include guard.
-	* arch/xtensa.h: Rename include guard.
-	* arch/tic6x.h: Add include guard.
-	* arch/i386.h: Add include guard.
-	* arch/arm.h: Rename include guard.
-	* arch/arm-linux.h: Rename include guard.
-	* arch/arm-get-next-pcs.h: Rename include guard.
-	* arch/amd64.h: Add include guard.
-	* arch/aarch64-insn.h: Rename include guard.
-	* arch-utils.h: Rename include guard.
-	* annotate.h: Add include guard.
-	* amd64-darwin-tdep.h: Rename include guard.
-	* aarch64-linux-tdep.h: Add include guard.
-	* aarch64-fbsd-tdep.h: Add include guard.
-	* aarch32-linux-nat.h: Add include guard.
-
-2019-02-06  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* macrotab.c (macro_define_internal): New function that
-	factorizes macro_define_object_internal and macro_define_function
-	code.
-	(macro_define_object_internal): Use macro_define_internal.
-	(macro_define_function): Likewise.
+2020-01-14  Tom Tromey  <tom@tromey.com>
 
-2019-02-06  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* configure: Rebuild.
+	* configure.ac: Move many checks to ../gdbsupport/common.m4.
 
-	* macrocmd.c (extract_identifier): Return
-	a gdb::unique_xmalloc_ptr<char> instead of a char *, and update
-	callers.
+2020-01-14  Tom Tromey  <tom@tromey.com>
 
-2019-02-06  John Baldwin  <jhb@FreeBSD.org>
+	* nat/x86-linux-dregs.c: Include configh.h.
+	* nat/linux-ptrace.c: Include configh.h.
+	* nat/linux-btrace.c: Include configh.h.
+	* defs.h: Include config.h, bfd.h.
+	* configure.ac: Don't source common.host.
+	(CONFIG_OBS, CONFIG_SRCS): Remove gdbsupport files.
+	* configure: Rebuild.
+	* acinclude.m4: Update path.
+	* Makefile.in (SUPPORT, LIBSUPPORT, INCSUPPORT): New variables.
+	(CONFIG_SRC_SUBDIR): Remove gdbsupport.
+	(INTERNAL_CFLAGS_BASE): Add INCSUPPORT.
+	(CLIBS): Add LIBSUPPORT.
+	(CDEPS): Likewise.
+	(COMMON_SFILES): Remove gdbsupport files.
+	(HFILES_NO_SRCDIR): Likewise.
+	(stamp-version): Update path to create-version.sh.
+	(ALLDEPFILES): Remove gdbsupport files.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* gdbsupport/common.m4 (GDB_AC_COMMON): Define WIN32APILIBS and
+	USE_WIN32API when needed.
+	* configure.ac (USE_WIN32API): Don't define.
+	(WIN32LIBS): Use WIN32APILIBS.
+	* configure: Rebuild.
 
-	* fbsd-nat.c (fbsd_fetch_cmdline): Join arguments with spaces.
+2020-01-14  Tom Tromey  <tom@tromey.com>
 
-2019-02-05  Tom Tromey  <tom@tromey.com>
+	* configure: Rebuild.
+	* gdbsupport/common.m4 (GDB_AC_COMMON): Fix indentation.
 
-	* target.c (target_stack::unpush): Move assertion earlier.
+2020-01-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
-2019-01-30  Tom Tromey  <tom@tromey.com>
-
-	PR python/23615:
-	* python/python.c (execute_gdb_command): Use gdbpy_allow_threads.
-	(gdbpy_parse_and_eval): Likewise.
-	* python/python-internal.h (gdbpy_allow_threads): New class.
-
-2019-01-28  John Baldwin  <jhb@FreeBSD.org>
-
-	* aarch64-fbsd-tdep.c (aarch64_fbsd_gregmap)
-	(aarch64_fbsd_fpregmap): Move earlier.
-	(AARCH64_MCONTEXT_REG_SIZE, AARCH64_MCONTEXT_FPREG_SIZE): Delete.
-	(aarch64_fbsd_sigframe_init): Use trad_frame_set_reg_regmap
-	instead of individual calls to trad_frame_set_reg_addr.
-	* arm-fbsd-tdep.c (arm_fbsd_gregmap, arm_fbsd_vfpregmap): Move
-	earlier.
-	(ARM_MCONTEXT_REG_SIZE, ARM_MCONTEXT_VFP_REG_SIZE): Delete.
-	(arm_fbsd_sigframe_init): Use trad_frame_set_reg_regmap
-	instead of individual calls to trad_frame_set_reg_addr.
-
-2019-01-28  Alan Hayward  <alan.hayward@arm.com>
-
-	* CONTRIBUTE: Replace contribution list with wiki link.
-
-2019-01-25  Tom Tromey  <tom@tromey.com>
-
-	* Makefile.in (GDB_CFLAGS): Don't add -I for common.
-
-2019-01-25  Tom Tromey  <tom@tromey.com>
-
-	* xtensa-linux-nat.c: Fix common/ includes.
-	* xml-support.h: Fix common/ includes.
-	* xml-support.c: Fix common/ includes.
-	* x86-linux-nat.c: Fix common/ includes.
-	* windows-nat.c: Fix common/ includes.
-	* varobj.h: Fix common/ includes.
-	* varobj.c: Fix common/ includes.
-	* value.c: Fix common/ includes.
-	* valops.c: Fix common/ includes.
-	* utils.c: Fix common/ includes.
-	* unittests/xml-utils-selftests.c: Fix common/ includes.
-	* unittests/utils-selftests.c: Fix common/ includes.
-	* unittests/unpack-selftests.c: Fix common/ includes.
-	* unittests/tracepoint-selftests.c: Fix common/ includes.
-	* unittests/style-selftests.c: Fix common/ includes.
-	* unittests/string_view-selftests.c: Fix common/ includes.
-	* unittests/scoped_restore-selftests.c: Fix common/ includes.
-	* unittests/scoped_mmap-selftests.c: Fix common/ includes.
-	* unittests/scoped_fd-selftests.c: Fix common/ includes.
-	* unittests/rsp-low-selftests.c: Fix common/ includes.
-	* unittests/parse-connection-spec-selftests.c: Fix common/
-	includes.
-	* unittests/optional-selftests.c: Fix common/ includes.
-	* unittests/offset-type-selftests.c: Fix common/ includes.
-	* unittests/observable-selftests.c: Fix common/ includes.
-	* unittests/mkdir-recursive-selftests.c: Fix common/ includes.
-	* unittests/memrange-selftests.c: Fix common/ includes.
-	* unittests/memory-map-selftests.c: Fix common/ includes.
-	* unittests/lookup_name_info-selftests.c: Fix common/ includes.
-	* unittests/function-view-selftests.c: Fix common/ includes.
-	* unittests/environ-selftests.c: Fix common/ includes.
-	* unittests/copy_bitwise-selftests.c: Fix common/ includes.
-	* unittests/common-utils-selftests.c: Fix common/ includes.
-	* unittests/cli-utils-selftests.c: Fix common/ includes.
-	* unittests/array-view-selftests.c: Fix common/ includes.
-	* ui-file.c: Fix common/ includes.
-	* tui/tui-io.c: Fix common/ includes.
-	* tracepoint.h: Fix common/ includes.
-	* tracepoint.c: Fix common/ includes.
-	* tracefile-tfile.c: Fix common/ includes.
-	* top.h: Fix common/ includes.
-	* top.c: Fix common/ includes.
-	* thread.c: Fix common/ includes.
-	* target/waitstatus.h: Fix common/ includes.
-	* target/waitstatus.c: Fix common/ includes.
-	* target.h: Fix common/ includes.
-	* target.c: Fix common/ includes.
-	* target-memory.c: Fix common/ includes.
-	* target-descriptions.c: Fix common/ includes.
-	* symtab.h: Fix common/ includes.
-	* symfile.c: Fix common/ includes.
-	* stap-probe.c: Fix common/ includes.
-	* spu-linux-nat.c: Fix common/ includes.
-	* sparc-nat.c: Fix common/ includes.
-	* source.c: Fix common/ includes.
-	* solib.c: Fix common/ includes.
-	* solib-target.c: Fix common/ includes.
-	* ser-unix.c: Fix common/ includes.
-	* ser-tcp.c: Fix common/ includes.
-	* ser-pipe.c: Fix common/ includes.
-	* ser-base.c: Fix common/ includes.
-	* selftest-arch.c: Fix common/ includes.
-	* s12z-tdep.c: Fix common/ includes.
-	* rust-exp.y: Fix common/ includes.
-	* rs6000-aix-tdep.c: Fix common/ includes.
-	* riscv-tdep.c: Fix common/ includes.
-	* remote.c: Fix common/ includes.
-	* remote-notif.h: Fix common/ includes.
-	* remote-fileio.h: Fix common/ includes.
-	* remote-fileio.c: Fix common/ includes.
-	* regcache.h: Fix common/ includes.
-	* regcache.c: Fix common/ includes.
-	* record-btrace.c: Fix common/ includes.
-	* python/python.c: Fix common/ includes.
-	* python/py-type.c: Fix common/ includes.
-	* python/py-inferior.c: Fix common/ includes.
-	* progspace.h: Fix common/ includes.
-	* producer.c: Fix common/ includes.
-	* procfs.c: Fix common/ includes.
-	* proc-api.c: Fix common/ includes.
-	* printcmd.c: Fix common/ includes.
-	* ppc-linux-nat.c: Fix common/ includes.
-	* parser-defs.h: Fix common/ includes.
-	* osdata.c: Fix common/ includes.
-	* obsd-nat.c: Fix common/ includes.
-	* nat/x86-linux.c: Fix common/ includes.
-	* nat/x86-linux-dregs.c: Fix common/ includes.
-	* nat/x86-dregs.h: Fix common/ includes.
-	* nat/x86-dregs.c: Fix common/ includes.
-	* nat/ppc-linux.c: Fix common/ includes.
-	* nat/mips-linux-watch.h: Fix common/ includes.
-	* nat/mips-linux-watch.c: Fix common/ includes.
-	* nat/linux-waitpid.c: Fix common/ includes.
-	* nat/linux-ptrace.h: Fix common/ includes.
-	* nat/linux-ptrace.c: Fix common/ includes.
-	* nat/linux-procfs.c: Fix common/ includes.
-	* nat/linux-personality.c: Fix common/ includes.
-	* nat/linux-osdata.c: Fix common/ includes.
-	* nat/linux-namespaces.c: Fix common/ includes.
-	* nat/linux-btrace.h: Fix common/ includes.
-	* nat/linux-btrace.c: Fix common/ includes.
-	* nat/fork-inferior.c: Fix common/ includes.
-	* nat/amd64-linux-siginfo.c: Fix common/ includes.
-	* nat/aarch64-sve-linux-ptrace.c: Fix common/ includes.
-	* nat/aarch64-linux.c: Fix common/ includes.
-	* nat/aarch64-linux-hw-point.h: Fix common/ includes.
-	* nat/aarch64-linux-hw-point.c: Fix common/ includes.
-	* namespace.h: Fix common/ includes.
-	* mips-linux-tdep.c: Fix common/ includes.
-	* minsyms.c: Fix common/ includes.
-	* mi/mi-parse.h: Fix common/ includes.
-	* mi/mi-main.c: Fix common/ includes.
-	* mi/mi-cmd-env.c: Fix common/ includes.
-	* memrange.h: Fix common/ includes.
-	* memattr.c: Fix common/ includes.
-	* maint.h: Fix common/ includes.
-	* maint.c: Fix common/ includes.
-	* main.c: Fix common/ includes.
-	* machoread.c: Fix common/ includes.
-	* location.c: Fix common/ includes.
-	* linux-thread-db.c: Fix common/ includes.
-	* linux-nat.c: Fix common/ includes.
-	* linux-fork.c: Fix common/ includes.
-	* inline-frame.c: Fix common/ includes.
-	* infrun.c: Fix common/ includes.
-	* inflow.c: Fix common/ includes.
-	* inferior.h: Fix common/ includes.
-	* inferior.c: Fix common/ includes.
-	* infcmd.c: Fix common/ includes.
-	* inf-ptrace.c: Fix common/ includes.
-	* inf-child.c: Fix common/ includes.
-	* ia64-linux-nat.c: Fix common/ includes.
-	* i387-tdep.c: Fix common/ includes.
-	* i386-tdep.c: Fix common/ includes.
-	* i386-linux-tdep.c: Fix common/ includes.
-	* i386-linux-nat.c: Fix common/ includes.
-	* i386-go32-tdep.c: Fix common/ includes.
-	* i386-fbsd-tdep.c: Fix common/ includes.
-	* i386-fbsd-nat.c: Fix common/ includes.
-	* guile/scm-type.c: Fix common/ includes.
-	* guile/guile.c: Fix common/ includes.
-	* go32-nat.c: Fix common/ includes.
-	* gnu-nat.c: Fix common/ includes.
-	* gdbthread.h: Fix common/ includes.
-	* gdbarch-selftests.c: Fix common/ includes.
-	* gdb_usleep.c: Fix common/ includes.
-	* gdb_select.h: Fix common/ includes.
-	* gdb_bfd.c: Fix common/ includes.
-	* gcore.c: Fix common/ includes.
-	* fork-child.c: Fix common/ includes.
-	* findvar.c: Fix common/ includes.
-	* fbsd-nat.c: Fix common/ includes.
-	* event-top.c: Fix common/ includes.
-	* event-loop.c: Fix common/ includes.
-	* dwarf2read.c: Fix common/ includes.
-	* dwarf2loc.c: Fix common/ includes.
-	* dwarf2-frame.c: Fix common/ includes.
-	* dwarf-index-cache.c: Fix common/ includes.
-	* dtrace-probe.c: Fix common/ includes.
-	* disasm-selftests.c: Fix common/ includes.
-	* defs.h: Fix common/ includes.
-	* csky-tdep.c: Fix common/ includes.
-	* cp-valprint.c: Fix common/ includes.
-	* cp-support.h: Fix common/ includes.
-	* cp-support.c: Fix common/ includes.
-	* corelow.c: Fix common/ includes.
-	* completer.h: Fix common/ includes.
-	* completer.c: Fix common/ includes.
-	* compile/compile.c: Fix common/ includes.
-	* compile/compile-loc2c.c: Fix common/ includes.
-	* compile/compile-cplus-types.c: Fix common/ includes.
-	* compile/compile-cplus-symbols.c: Fix common/ includes.
-	* command.h: Fix common/ includes.
-	* cli/cli-dump.c: Fix common/ includes.
-	* cli/cli-cmds.c: Fix common/ includes.
-	* charset.c: Fix common/ includes.
-	* build-id.c: Fix common/ includes.
-	* btrace.h: Fix common/ includes.
-	* btrace.c: Fix common/ includes.
-	* breakpoint.h: Fix common/ includes.
-	* breakpoint.c: Fix common/ includes.
-	* ax.h: 
-	(enum agent_op): Fix common/ includes.
-	* ax-general.c (struct aop_map): Fix common/ includes.
-	* ax-gdb.c: Fix common/ includes.
-	* auxv.c: Fix common/ includes.
-	* auto-load.c: Fix common/ includes.
-	* arm-tdep.c: Fix common/ includes.
-	* arch/riscv.c: Fix common/ includes.
-	* arch/ppc-linux-common.c: Fix common/ includes.
-	* arch/i386.c: Fix common/ includes.
-	* arch/arm.c: Fix common/ includes.
-	* arch/arm-linux.c: Fix common/ includes.
-	* arch/arm-get-next-pcs.c: Fix common/ includes.
-	* arch/amd64.c: Fix common/ includes.
-	* arch/aarch64.c: Fix common/ includes.
-	* arch/aarch64-insn.c: Fix common/ includes.
-	* arch-utils.c: Fix common/ includes.
-	* amd64-windows-tdep.c: Fix common/ includes.
-	* amd64-tdep.c: Fix common/ includes.
-	* amd64-sol2-tdep.c: Fix common/ includes.
-	* amd64-obsd-tdep.c: Fix common/ includes.
-	* amd64-nbsd-tdep.c: Fix common/ includes.
-	* amd64-linux-tdep.c: Fix common/ includes.
-	* amd64-linux-nat.c: Fix common/ includes.
-	* amd64-fbsd-tdep.c: Fix common/ includes.
-	* amd64-fbsd-nat.c: Fix common/ includes.
-	* amd64-dicos-tdep.c: Fix common/ includes.
-	* amd64-darwin-tdep.c: Fix common/ includes.
-	* agent.c: Fix common/ includes.
-	* ada-lang.h: Fix common/ includes.
-	* ada-lang.c: Fix common/ includes.
-	* aarch64-tdep.c: Fix common/ includes.
-
-2019-01-25  Tom Tromey  <tom@tromey.com>
-
-	* common/create-version.sh: Use common/version.h.
-
-2019-01-24  Pedro Alves  <palves@redhat.com>
-
-	* infrun.c (signal_stop, signal_print, signal_program)
-	(signal_catch, signal_pass): Now arrays instead of pointers.
-	(update_signals_program_target, do_target_resume)
-	(signal_catch_update, handle_command, _initialize_infrun): Adjust.
-	* linux-nat.c (linux_nat_target::pass_signals)
-	(linux_nat_target::create_inferior, linux_nat_target::attach):
-	Adjust.
-	* linux-nat.h (linux_nat_target::pass_signals): Adjust.
-	* nto-procfs.c (nto_procfs_target::pass_signals): Adjust.
-	* procfs.c (procfs_target::pass_signals): Adjust.
-	* record-full.c (record_full_target::resume): Adjust.
-	* remote.c (remote_target::pass_signals)
-	(remote_target::program_signals): Adjust.
-	* target-debug.h (target_debug_print_signals): Now takes a
-	gdb::array_view as parameter.  Adjust.
-	* target.h (target_ops) <pass_signals, program_signals>: Replace
-	pointer and length parameters with gdb::array_view.
-	(target_pass_signals, target_program_signals): Likewise.
-	* target-delegates.c: Regenerate.
+	* skip.c (skip_function_command): Make skip w/o arguments use the
+	name of the inlined function if pc is inside any inlined function.
 
-2019-01-24  Pedro Alves  <palves@redhat.com>
+2020-01-14  Luis Machado  <luis.machado@linaro.org>
 
-	* common/forward-scope-exit.h
-	(forward_scope_exit::forward_scope_exit): Pass arguments to
-	m_bind_function directly, instead of creating a std::bind and
-	copying that.
+	* inf-ptrace.c (inf_ptrace_target::resume): Update comments.
+	* infrun.c (resume_1): Likewise.
+	(handle_inferior_event): Remove stale comment.
+	* linux-nat.c (linux_nat_target::resume): Update comments.
+	(save_stop_reason): Likewise.
+	(linux_nat_filter_event): Likewise.
+	* linux-nat.h (struct lwp_info) <stop_pc>, <stop_reason>: Likewise.
+
+2020-01-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* elfread.c (record_minimal_symbol): Set section index to 0 for
+	non-allocatable sections.
+
+
+2020-01-13  Ali Tamur <tamur@google.com>
+
+	* dwarf2read.c (dwarf2_debug_sections): Add debug_str_offsets sections.
+	(dwarf2_cu): Add str_offsets_base field.  Change the type of addr_base
+	to gdb::optional.  Update comments.
+	(dwo_file): Update comments.
+	(read_attribute): Update API to take an additional out parameter,
+	need_reprocess.  This is used to mark attributes that need other
+	attributes (e.g. str_offsets_base) for correct computation which may not
+	have been read yet.
+	(read_attribute_reprocess): New function declaration.
+	(read_addr_index): Likewise.
+	(read_dwo_str_index): Likewise.
+	(read_stub_str_index): Likewise.
+	(dwarf2_per_objfile::locate_sections): Handle debug_str_offsets section.
+	(lookup_addr_base): New function definition.
+	(lookup_ranges_base): Likewise.
+	(read_cutu_die_from_dwo): Use the new functions: lookup_addr_base,
+	lookup_ranges_base.
+	(init_cutu_and_read_dies): Update comments.
+	(init_cutu_and_read_dies_no_follow): Change API to take parent compile
+	unit.  This is used to inherit parent's str_offsets_base and addr_base.
+	Update comments.
+	(init_cutu_and_read_dies_simple): Reflect API changes.
+	(skip_one_die): Reflect API changes.  Handle DW_FORM_rnglistx.
+	(create_cus_hash_table): Change API to take parent compile unit.  
+	Reflect API changes.
+	(open_and_init_dwo_file): Reflect API changes.
+	(dwarf2_get_pc_bounds): Update comments.
+	(dwarf2_record_block_ranges): Likewise.
+	(read_full_die_1): Change implementation to reprocess attributes that
+	need str_offsets_base and addr_base.
+	(partial_die_info::read): Likewise.
+	(read_attribute_reprocess): New function definition.
+	(read_attribute_value): Change API to take an additional out parameter,
+	need_reprocess.  Handle DW_FORM_rnglistx.  No longer trigger an error
+	when a non-dwo compile unit has index based attributes.
+	(read_attribute): Reflect API changes.
+	(read_addr_index_1): Reflect API changes.  Update comments.
+	(dwarf2_read_addr_index_data): Reflect API changes.
+	(dwarf2_read_addr_index): Likewise.
+	(read_str_index): Change API and implementation.  This becomes a helper
+	to be used by the new string index related methods.  Update error
+	message and comments.
+	(read_dwo_str_index): New function definition.
+	(read_stub_str_index): Likewise.
+	* dwarf2read.h (dwarf2_per_objfile): Add str_offsets field.
+	* symfile.h (dwarf2_debug_sections): Likewise.
+	* xcoffread.c (dwarf2_debug_sections): Likewise.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbcore.h (struct core_fns) <core_read_registers>: Change
+	core_reg_sect type to gdb_byte *.
+	* arm-nbsd-nat.c (fetch_elfcore_registers): Likewise.
+	* cris-tdep.c (fetch_core_registers): Likewise.
+	* corelow.c (core_target::get_core_register_section): Change
+	type of `contents` to gdb::byte_vector.
+
+2020-01-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tui/tui-wingeneral.c (box_win): Position the title in the center
+	of the border.
+
+2020-01-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* corelow.c (core_target::get_core_register_section): Use
+	  std::vector instead of alloca.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* warning.m4: Add -Wmissing-declarations to build_warnings.
+	* configure: Re-generate.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* python/python.c (init__gdb_module): Add declaration.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* aarch64-fbsd-nat.c (_initialize_aarch64_fbsd_nat): Add declaration.
+	* aarch64-fbsd-tdep.c (_initialize_aarch64_fbsd_tdep): Add declaration.
+	* aarch64-linux-nat.c (_initialize_aarch64_linux_nat): Add declaration.
+	* aarch64-linux-tdep.c (_initialize_aarch64_linux_tdep): Add declaration.
+	* aarch64-newlib-tdep.c (_initialize_aarch64_newlib_tdep): Add declaration.
+	* aarch64-tdep.c (_initialize_aarch64_tdep): Add declaration.
+	* ada-exp.y (_initialize_ada_exp): Add declaration.
+	* ada-lang.c (_initialize_ada_language): Add declaration.
+	* ada-tasks.c (_initialize_tasks): Add declaration.
+	* agent.c (_initialize_agent): Add declaration.
+	* aix-thread.c (_initialize_aix_thread): Add declaration.
+	* alpha-bsd-nat.c (_initialize_alphabsd_nat): Add declaration.
+	* alpha-linux-nat.c (_initialize_alpha_linux_nat): Add declaration.
+	* alpha-linux-tdep.c (_initialize_alpha_linux_tdep): Add declaration.
+	* alpha-nbsd-tdep.c (_initialize_alphanbsd_tdep): Add declaration.
+	* alpha-obsd-tdep.c (_initialize_alphaobsd_tdep): Add declaration.
+	* alpha-tdep.c (_initialize_alpha_tdep): Add declaration.
+	* amd64-darwin-tdep.c (_initialize_amd64_darwin_tdep): Add declaration.
+	* amd64-dicos-tdep.c (_initialize_amd64_dicos_tdep): Add declaration.
+	* amd64-fbsd-nat.c (_initialize_amd64fbsd_nat): Add declaration.
+	* amd64-fbsd-tdep.c (_initialize_amd64fbsd_tdep): Add declaration.
+	* amd64-linux-nat.c (_initialize_amd64_linux_nat): Add declaration.
+	* amd64-linux-tdep.c (_initialize_amd64_linux_tdep): Add declaration.
+	* amd64-nbsd-nat.c (_initialize_amd64nbsd_nat): Add declaration.
+	* amd64-nbsd-tdep.c (_initialize_amd64nbsd_tdep): Add declaration.
+	* amd64-obsd-nat.c (_initialize_amd64obsd_nat): Add declaration.
+	* amd64-obsd-tdep.c (_initialize_amd64obsd_tdep): Add declaration.
+	* amd64-sol2-tdep.c (_initialize_amd64_sol2_tdep): Add declaration.
+	* amd64-tdep.c (_initialize_amd64_tdep): Add declaration.
+	* amd64-windows-nat.c (_initialize_amd64_windows_nat): Add declaration.
+	* amd64-windows-tdep.c (_initialize_amd64_windows_tdep): Add declaration.
+	* annotate.c (_initialize_annotate): Add declaration.
+	* arc-newlib-tdep.c (_initialize_arc_newlib_tdep): Add declaration.
+	* arc-tdep.c (_initialize_arc_tdep): Add declaration.
+	* arch-utils.c (_initialize_gdbarch_utils): Add declaration.
+	* arm-fbsd-nat.c (_initialize_arm_fbsd_nat): Add declaration.
+	* arm-fbsd-tdep.c (_initialize_arm_fbsd_tdep): Add declaration.
+	* arm-linux-nat.c (_initialize_arm_linux_nat): Add declaration.
+	* arm-linux-tdep.c (_initialize_arm_linux_tdep): Add declaration.
+	* arm-nbsd-nat.c (_initialize_arm_netbsd_nat): Add declaration.
+	* arm-nbsd-tdep.c (_initialize_arm_netbsd_tdep): Add declaration.
+	* arm-obsd-tdep.c (_initialize_armobsd_tdep): Add declaration.
+	* arm-pikeos-tdep.c (_initialize_arm_pikeos_tdep): Add declaration.
+	* arm-symbian-tdep.c (_initialize_arm_symbian_tdep): Add declaration.
+	* arm-tdep.c (_initialize_arm_tdep): Add declaration.
+	* arm-wince-tdep.c (_initialize_arm_wince_tdep): Add declaration.
+	* auto-load.c (_initialize_auto_load): Add declaration.
+	* auxv.c (_initialize_auxv): Add declaration.
+	* avr-tdep.c (_initialize_avr_tdep): Add declaration.
+	* ax-gdb.c (_initialize_ax_gdb): Add declaration.
+	* bfin-linux-tdep.c (_initialize_bfin_linux_tdep): Add declaration.
+	* bfin-tdep.c (_initialize_bfin_tdep): Add declaration.
+	* break-catch-sig.c (_initialize_break_catch_sig): Add declaration.
+	* break-catch-syscall.c (_initialize_break_catch_syscall): Add declaration.
+	* break-catch-throw.c (_initialize_break_catch_throw): Add declaration.
+	* breakpoint.c (_initialize_breakpoint): Add declaration.
+	* bsd-uthread.c (_initialize_bsd_uthread): Add declaration.
+	* btrace.c (_initialize_btrace): Add declaration.
+	* charset.c (_initialize_charset): Add declaration.
+	* cli/cli-cmds.c (_initialize_cli_cmds): Add declaration.
+	* cli/cli-dump.c (_initialize_cli_dump): Add declaration.
+	* cli/cli-interp.c (_initialize_cli_interp): Add declaration.
+	* cli/cli-logging.c (_initialize_cli_logging): Add declaration.
+	* cli/cli-script.c (_initialize_cli_script): Add declaration.
+	* cli/cli-style.c (_initialize_cli_style): Add declaration.
+	* coff-pe-read.c (_initialize_coff_pe_read): Add declaration.
+	* coffread.c (_initialize_coffread): Add declaration.
+	* compile/compile-cplus-types.c (_initialize_compile_cplus_types): Add declaration.
+	* compile/compile.c (_initialize_compile): Add declaration.
+	* complaints.c (_initialize_complaints): Add declaration.
+	* completer.c (_initialize_completer): Add declaration.
+	* copying.c (_initialize_copying): Add declaration.
+	* corefile.c (_initialize_core): Add declaration.
+	* corelow.c (_initialize_corelow): Add declaration.
+	* cp-abi.c (_initialize_cp_abi): Add declaration.
+	* cp-namespace.c (_initialize_cp_namespace): Add declaration.
+	* cp-support.c (_initialize_cp_support): Add declaration.
+	* cp-valprint.c (_initialize_cp_valprint): Add declaration.
+	* cris-linux-tdep.c (_initialize_cris_linux_tdep): Add declaration.
+	* cris-tdep.c (_initialize_cris_tdep): Add declaration.
+	* csky-linux-tdep.c (_initialize_csky_linux_tdep): Add declaration.
+	* csky-tdep.c (_initialize_csky_tdep): Add declaration.
+	* ctfread.c (_initialize_ctfread): Add declaration.
+	* d-lang.c (_initialize_d_language): Add declaration.
+	* darwin-nat-info.c (_initialize_darwin_info_commands): Add declaration.
+	* darwin-nat.c (_initialize_darwin_nat): Add declaration.
+	* dbxread.c (_initialize_dbxread): Add declaration.
+	* dcache.c (_initialize_dcache): Add declaration.
+	* disasm-selftests.c (_initialize_disasm_selftests): Add declaration.
+	* disasm.c (_initialize_disasm): Add declaration.
+	* dtrace-probe.c (_initialize_dtrace_probe): Add declaration.
+	* dummy-frame.c (_initialize_dummy_frame): Add declaration.
+	* dwarf-index-cache.c (_initialize_index_cache): Add declaration.
+	* dwarf-index-write.c (_initialize_dwarf_index_write): Add declaration.
+	* dwarf2-frame-tailcall.c (_initialize_tailcall_frame): Add declaration.
+	* dwarf2-frame.c (_initialize_dwarf2_frame): Add declaration.
+	* dwarf2expr.c (_initialize_dwarf2expr): Add declaration.
+	* dwarf2loc.c (_initialize_dwarf2loc): Add declaration.
+	* dwarf2read.c (_initialize_dwarf2_read): Add declaration.
+	* elfread.c (_initialize_elfread): Add declaration.
+	* exec.c (_initialize_exec): Add declaration.
+	* extension.c (_initialize_extension): Add declaration.
+	* f-lang.c (_initialize_f_language): Add declaration.
+	* f-valprint.c (_initialize_f_valprint): Add declaration.
+	* fbsd-nat.c (_initialize_fbsd_nat): Add declaration.
+	* fbsd-tdep.c (_initialize_fbsd_tdep): Add declaration.
+	* filesystem.c (_initialize_filesystem): Add declaration.
+	* findcmd.c (_initialize_mem_search): Add declaration.
+	* findvar.c (_initialize_findvar): Add declaration.
+	* fork-child.c (_initialize_fork_child): Add declaration.
+	* frame-base.c (_initialize_frame_base): Add declaration.
+	* frame-unwind.c (_initialize_frame_unwind): Add declaration.
+	* frame.c (_initialize_frame): Add declaration.
+	* frv-linux-tdep.c (_initialize_frv_linux_tdep): Add declaration.
+	* frv-tdep.c (_initialize_frv_tdep): Add declaration.
+	* ft32-tdep.c (_initialize_ft32_tdep): Add declaration.
+	* gcore.c (_initialize_gcore): Add declaration.
+	* gdb-demangle.c (_initialize_gdb_demangle): Add declaration.
+	* gdb_bfd.c (_initialize_gdb_bfd): Add declaration.
+	* gdbarch-selftests.c (_initialize_gdbarch_selftests): Add declaration.
+	* gdbarch.c (_initialize_gdbarch): Add declaration.
+	* gdbtypes.c (_initialize_gdbtypes): Add declaration.
+	* gnu-nat.c (_initialize_gnu_nat): Add declaration.
+	* gnu-v2-abi.c (_initialize_gnu_v2_abi): Add declaration.
+	* gnu-v3-abi.c (_initialize_gnu_v3_abi): Add declaration.
+	* go-lang.c (_initialize_go_language): Add declaration.
+	* go32-nat.c (_initialize_go32_nat): Add declaration.
+	* guile/guile.c (_initialize_guile): Add declaration.
+	* h8300-tdep.c (_initialize_h8300_tdep): Add declaration.
+	* hppa-linux-nat.c (_initialize_hppa_linux_nat): Add declaration.
+	* hppa-linux-tdep.c (_initialize_hppa_linux_tdep): Add declaration.
+	* hppa-nbsd-nat.c (_initialize_hppanbsd_nat): Add declaration.
+	* hppa-nbsd-tdep.c (_initialize_hppanbsd_tdep): Add declaration.
+	* hppa-obsd-nat.c (_initialize_hppaobsd_nat): Add declaration.
+	* hppa-obsd-tdep.c (_initialize_hppabsd_tdep): Add declaration.
+	* hppa-tdep.c (_initialize_hppa_tdep): Add declaration.
+	* i386-bsd-nat.c (_initialize_i386bsd_nat): Add declaration.
+	* i386-cygwin-tdep.c (_initialize_i386_cygwin_tdep): Add declaration.
+	* i386-darwin-nat.c (_initialize_i386_darwin_nat): Add declaration.
+	* i386-darwin-tdep.c (_initialize_i386_darwin_tdep): Add declaration.
+	* i386-dicos-tdep.c (_initialize_i386_dicos_tdep): Add declaration.
+	* i386-fbsd-nat.c (_initialize_i386fbsd_nat): Add declaration.
+	* i386-fbsd-tdep.c (_initialize_i386fbsd_tdep): Add declaration.
+	* i386-gnu-nat.c (_initialize_i386gnu_nat): Add declaration.
+	* i386-gnu-tdep.c (_initialize_i386gnu_tdep): Add declaration.
+	* i386-go32-tdep.c (_initialize_i386_go32_tdep): Add declaration.
+	* i386-linux-nat.c (_initialize_i386_linux_nat): Add declaration.
+	* i386-linux-tdep.c (_initialize_i386_linux_tdep): Add declaration.
+	* i386-nbsd-nat.c (_initialize_i386nbsd_nat): Add declaration.
+	* i386-nbsd-tdep.c (_initialize_i386nbsd_tdep): Add declaration.
+	* i386-nto-tdep.c (_initialize_i386nto_tdep): Add declaration.
+	* i386-obsd-nat.c (_initialize_i386obsd_nat): Add declaration.
+	* i386-obsd-tdep.c (_initialize_i386obsd_tdep): Add declaration.
+	* i386-sol2-nat.c (_initialize_amd64_sol2_nat): Add declaration.
+	* i386-sol2-tdep.c (_initialize_i386_sol2_tdep): Add declaration.
+	* i386-tdep.c (_initialize_i386_tdep): Add declaration.
+	* i386-windows-nat.c (_initialize_i386_windows_nat): Add declaration.
+	* ia64-libunwind-tdep.c (_initialize_libunwind_frame): Add declaration.
+	* ia64-linux-nat.c (_initialize_ia64_linux_nat): Add declaration.
+	* ia64-linux-tdep.c (_initialize_ia64_linux_tdep): Add declaration.
+	* ia64-tdep.c (_initialize_ia64_tdep): Add declaration.
+	* ia64-vms-tdep.c (_initialize_ia64_vms_tdep): Add declaration.
+	* infcall.c (_initialize_infcall): Add declaration.
+	* infcmd.c (_initialize_infcmd): Add declaration.
+	* inflow.c (_initialize_inflow): Add declaration.
+	* infrun.c (_initialize_infrun): Add declaration.
+	* interps.c (_initialize_interpreter): Add declaration.
+	* iq2000-tdep.c (_initialize_iq2000_tdep): Add declaration.
+	* jit.c (_initialize_jit): Add declaration.
+	* language.c (_initialize_language): Add declaration.
+	* linux-fork.c (_initialize_linux_fork): Add declaration.
+	* linux-nat.c (_initialize_linux_nat): Add declaration.
+	* linux-tdep.c (_initialize_linux_tdep): Add declaration.
+	* linux-thread-db.c (_initialize_thread_db): Add declaration.
+	* lm32-tdep.c (_initialize_lm32_tdep): Add declaration.
+	* m2-lang.c (_initialize_m2_language): Add declaration.
+	* m32c-tdep.c (_initialize_m32c_tdep): Add declaration.
+	* m32r-linux-nat.c (_initialize_m32r_linux_nat): Add declaration.
+	* m32r-linux-tdep.c (_initialize_m32r_linux_tdep): Add declaration.
+	* m32r-tdep.c (_initialize_m32r_tdep): Add declaration.
+	* m68hc11-tdep.c (_initialize_m68hc11_tdep): Add declaration.
+	* m68k-bsd-nat.c (_initialize_m68kbsd_nat): Add declaration.
+	* m68k-bsd-tdep.c (_initialize_m68kbsd_tdep): Add declaration.
+	* m68k-linux-nat.c (_initialize_m68k_linux_nat): Add declaration.
+	* m68k-linux-tdep.c (_initialize_m68k_linux_tdep): Add declaration.
+	* m68k-tdep.c (_initialize_m68k_tdep): Add declaration.
+	* machoread.c (_initialize_machoread): Add declaration.
+	* macrocmd.c (_initialize_macrocmd): Add declaration.
+	* macroscope.c (_initialize_macroscope): Add declaration.
+	* maint-test-options.c (_initialize_maint_test_options): Add declaration.
+	* maint-test-settings.c (_initialize_maint_test_settings): Add declaration.
+	* maint.c (_initialize_maint_cmds): Add declaration.
+	* mdebugread.c (_initialize_mdebugread): Add declaration.
+	* memattr.c (_initialize_mem): Add declaration.
+	* mep-tdep.c (_initialize_mep_tdep): Add declaration.
+	* mi/mi-cmd-env.c (_initialize_mi_cmd_env): Add declaration.
+	* mi/mi-cmds.c (_initialize_mi_cmds): Add declaration.
+	* mi/mi-interp.c (_initialize_mi_interp): Add declaration.
+	* mi/mi-main.c (_initialize_mi_main): Add declaration.
+	* microblaze-linux-tdep.c (_initialize_microblaze_linux_tdep): Add declaration.
+	* microblaze-tdep.c (_initialize_microblaze_tdep): Add declaration.
+	* mips-fbsd-nat.c (_initialize_mips_fbsd_nat): Add declaration.
+	* mips-fbsd-tdep.c (_initialize_mips_fbsd_tdep): Add declaration.
+	* mips-linux-nat.c (_initialize_mips_linux_nat): Add declaration.
+	* mips-linux-tdep.c (_initialize_mips_linux_tdep): Add declaration.
+	* mips-nbsd-nat.c (_initialize_mipsnbsd_nat): Add declaration.
+	* mips-nbsd-tdep.c (_initialize_mipsnbsd_tdep): Add declaration.
+	* mips-sde-tdep.c (_initialize_mips_sde_tdep): Add declaration.
+	* mips-tdep.c (_initialize_mips_tdep): Add declaration.
+	* mips64-obsd-nat.c (_initialize_mips64obsd_nat): Add declaration.
+	* mips64-obsd-tdep.c (_initialize_mips64obsd_tdep): Add declaration.
+	* mipsread.c (_initialize_mipsread): Add declaration.
+	* mn10300-linux-tdep.c (_initialize_mn10300_linux_tdep): Add declaration.
+	* mn10300-tdep.c (_initialize_mn10300_tdep): Add declaration.
+	* moxie-tdep.c (_initialize_moxie_tdep): Add declaration.
+	* msp430-tdep.c (_initialize_msp430_tdep): Add declaration.
+	* nds32-tdep.c (_initialize_nds32_tdep): Add declaration.
+	* nios2-linux-tdep.c (_initialize_nios2_linux_tdep): Add declaration.
+	* nios2-tdep.c (_initialize_nios2_tdep): Add declaration.
+	* nto-procfs.c (_initialize_procfs): Add declaration.
+	* objc-lang.c (_initialize_objc_language): Add declaration.
+	* observable.c (_initialize_observer): Add declaration.
+	* opencl-lang.c (_initialize_opencl_language): Add declaration.
+	* or1k-linux-tdep.c (_initialize_or1k_linux_tdep): Add declaration.
+	* or1k-tdep.c (_initialize_or1k_tdep): Add declaration.
+	* osabi.c (_initialize_gdb_osabi): Add declaration.
+	* osdata.c (_initialize_osdata): Add declaration.
+	* p-valprint.c (_initialize_pascal_valprint): Add declaration.
+	* parse.c (_initialize_parse): Add declaration.
+	* ppc-fbsd-nat.c (_initialize_ppcfbsd_nat): Add declaration.
+	* ppc-fbsd-tdep.c (_initialize_ppcfbsd_tdep): Add declaration.
+	* ppc-linux-nat.c (_initialize_ppc_linux_nat): Add declaration.
+	* ppc-linux-tdep.c (_initialize_ppc_linux_tdep): Add declaration.
+	* ppc-nbsd-nat.c (_initialize_ppcnbsd_nat): Add declaration.
+	* ppc-nbsd-tdep.c (_initialize_ppcnbsd_tdep): Add declaration.
+	* ppc-obsd-nat.c (_initialize_ppcobsd_nat): Add declaration.
+	* ppc-obsd-tdep.c (_initialize_ppcobsd_tdep): Add declaration.
+	* printcmd.c (_initialize_printcmd): Add declaration.
+	* probe.c (_initialize_probe): Add declaration.
+	* proc-api.c (_initialize_proc_api): Add declaration.
+	* proc-events.c (_initialize_proc_events): Add declaration.
+	* proc-service.c (_initialize_proc_service): Add declaration.
+	* procfs.c (_initialize_procfs): Add declaration.
+	* producer.c (_initialize_producer): Add declaration.
+	* psymtab.c (_initialize_psymtab): Add declaration.
+	* python/python.c (_initialize_python): Add declaration.
+	* ravenscar-thread.c (_initialize_ravenscar): Add declaration.
+	* record-btrace.c (_initialize_record_btrace): Add declaration.
+	* record-full.c (_initialize_record_full): Add declaration.
+	* record.c (_initialize_record): Add declaration.
+	* regcache-dump.c (_initialize_regcache_dump): Add declaration.
+	* regcache.c (_initialize_regcache): Add declaration.
+	* reggroups.c (_initialize_reggroup): Add declaration.
+	* remote-notif.c (_initialize_notif): Add declaration.
+	* remote-sim.c (_initialize_remote_sim): Add declaration.
+	* remote.c (_initialize_remote): Add declaration.
+	* reverse.c (_initialize_reverse): Add declaration.
+	* riscv-fbsd-nat.c (_initialize_riscv_fbsd_nat): Add declaration.
+	* riscv-fbsd-tdep.c (_initialize_riscv_fbsd_tdep): Add declaration.
+	* riscv-linux-nat.c (_initialize_riscv_linux_nat): Add declaration.
+	* riscv-linux-tdep.c (_initialize_riscv_linux_tdep): Add declaration.
+	* riscv-tdep.c (_initialize_riscv_tdep): Add declaration.
+	* rl78-tdep.c (_initialize_rl78_tdep): Add declaration.
+	* rs6000-aix-tdep.c (_initialize_rs6000_aix_tdep): Add declaration.
+	* rs6000-lynx178-tdep.c (_initialize_rs6000_lynx178_tdep):
+	Add declaration.
+	* rs6000-nat.c (_initialize_rs6000_nat): Add declaration.
+	* rs6000-tdep.c (_initialize_rs6000_tdep): Add declaration.
+	* run-on-main-thread.c (_initialize_run_on_main_thread): Add declaration.
+	* rust-exp.y (_initialize_rust_exp): Add declaration.
+	* rx-tdep.c (_initialize_rx_tdep): Add declaration.
+	* s12z-tdep.c (_initialize_s12z_tdep): Add declaration.
+	* s390-linux-nat.c (_initialize_s390_nat): Add declaration.
+	* s390-linux-tdep.c (_initialize_s390_linux_tdep): Add declaration.
+	* s390-tdep.c (_initialize_s390_tdep): Add declaration.
+	* score-tdep.c (_initialize_score_tdep): Add declaration.
+	* ser-go32.c (_initialize_ser_dos): Add declaration.
+	* ser-mingw.c (_initialize_ser_windows): Add declaration.
+	* ser-pipe.c (_initialize_ser_pipe): Add declaration.
+	* ser-tcp.c (_initialize_ser_tcp): Add declaration.
+	* ser-uds.c (_initialize_ser_socket): Add declaration.
+	* ser-unix.c (_initialize_ser_hardwire): Add declaration.
+	* serial.c (_initialize_serial): Add declaration.
+	* sh-linux-tdep.c (_initialize_sh_linux_tdep): Add declaration.
+	* sh-nbsd-nat.c (_initialize_shnbsd_nat): Add declaration.
+	* sh-nbsd-tdep.c (_initialize_shnbsd_tdep): Add declaration.
+	* sh-tdep.c (_initialize_sh_tdep): Add declaration.
+	* skip.c (_initialize_step_skip): Add declaration.
+	* sol-thread.c (_initialize_sol_thread): Add declaration.
+	* solib-aix.c (_initialize_solib_aix): Add declaration.
+	* solib-darwin.c (_initialize_darwin_solib): Add declaration.
+	* solib-dsbt.c (_initialize_dsbt_solib): Add declaration.
+	* solib-frv.c (_initialize_frv_solib): Add declaration.
+	* solib-svr4.c (_initialize_svr4_solib): Add declaration.
+	* solib-target.c (_initialize_solib_target): Add declaration.
+	* solib.c (_initialize_solib): Add declaration.
+	* source-cache.c (_initialize_source_cache): Add declaration.
+	* source.c (_initialize_source): Add declaration.
+	* sparc-linux-nat.c (_initialize_sparc_linux_nat): Add declaration.
+	* sparc-linux-tdep.c (_initialize_sparc_linux_tdep): Add declaration.
+	* sparc-nat.c (_initialize_sparc_nat): Add declaration.
+	* sparc-nbsd-nat.c (_initialize_sparcnbsd_nat): Add declaration.
+	* sparc-nbsd-tdep.c (_initialize_sparcnbsd_tdep): Add declaration.
+	* sparc-obsd-tdep.c (_initialize_sparc32obsd_tdep): Add declaration.
+	* sparc-sol2-tdep.c (_initialize_sparc_sol2_tdep): Add declaration.
+	* sparc-tdep.c (_initialize_sparc_tdep): Add declaration.
+	* sparc64-fbsd-nat.c (_initialize_sparc64fbsd_nat): Add declaration.
+	* sparc64-fbsd-tdep.c (_initialize_sparc64fbsd_tdep): Add declaration.
+	* sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Add declaration.
+	* sparc64-linux-tdep.c (_initialize_sparc64_linux_tdep): Add declaration.
+	* sparc64-nat.c (_initialize_sparc64_nat): Add declaration.
+	* sparc64-nbsd-nat.c (_initialize_sparc64nbsd_nat): Add declaration.
+	* sparc64-nbsd-tdep.c (_initialize_sparc64nbsd_tdep): Add declaration.
+	* sparc64-obsd-nat.c (_initialize_sparc64obsd_nat): Add declaration.
+	* sparc64-obsd-tdep.c (_initialize_sparc64obsd_tdep): Add declaration.
+	* sparc64-sol2-tdep.c (_initialize_sparc64_sol2_tdep): Add declaration.
+	* sparc64-tdep.c (_initialize_sparc64_adi_tdep): Add declaration.
+	* stabsread.c (_initialize_stabsread): Add declaration.
+	* stack.c (_initialize_stack): Add declaration.
+	* stap-probe.c (_initialize_stap_probe): Add declaration.
+	* std-regs.c (_initialize_frame_reg): Add declaration.
+	* symfile-debug.c (_initialize_symfile_debug): Add declaration.
+	* symfile-mem.c (_initialize_symfile_mem): Add declaration.
+	* symfile.c (_initialize_symfile): Add declaration.
+	* symmisc.c (_initialize_symmisc): Add declaration.
+	* symtab.c (_initialize_symtab): Add declaration.
+	* target.c (_initialize_target): Add declaration.
+	* target-connection.c (_initialize_target_connection): Add
+	declaration.
+	* target-dcache.c (_initialize_target_dcache): Add declaration.
+	* target-descriptions.c (_initialize_target_descriptions): Add declaration.
+	* thread.c (_initialize_thread): Add declaration.
+	* tic6x-linux-tdep.c (_initialize_tic6x_linux_tdep): Add declaration.
+	* tic6x-tdep.c (_initialize_tic6x_tdep): Add declaration.
+	* tilegx-linux-nat.c (_initialize_tile_linux_nat): Add declaration.
+	* tilegx-linux-tdep.c (_initialize_tilegx_linux_tdep): Add declaration.
+	* tilegx-tdep.c (_initialize_tilegx_tdep): Add declaration.
+	* tracectf.c (_initialize_ctf): Add declaration.
+	* tracefile-tfile.c (_initialize_tracefile_tfile): Add declaration.
+	* tracefile.c (_initialize_tracefile): Add declaration.
+	* tracepoint.c (_initialize_tracepoint): Add declaration.
+	* tui/tui-hooks.c (_initialize_tui_hooks): Add declaration.
+	* tui/tui-interp.c (_initialize_tui_interp): Add declaration.
+	* tui/tui-layout.c (_initialize_tui_layout): Add declaration.
+	* tui/tui-regs.c (_initialize_tui_regs): Add declaration.
+	* tui/tui-stack.c (_initialize_tui_stack): Add declaration.
+	* tui/tui-win.c (_initialize_tui_win): Add declaration.
+	* tui/tui.c (_initialize_tui): Add declaration.
+	* typeprint.c (_initialize_typeprint): Add declaration.
+	* ui-style.c (_initialize_ui_style): Add declaration.
+	* unittests/array-view-selftests.c (_initialize_array_view_selftests): Add declaration.
+	* unittests/child-path-selftests.c (_initialize_child_path_selftests): Add declaration.
+	* unittests/cli-utils-selftests.c (_initialize_cli_utils_selftests): Add declaration.
+	* unittests/common-utils-selftests.c (_initialize_common_utils_selftests): Add declaration.
+	* unittests/copy_bitwise-selftests.c (_initialize_copy_bitwise_utils_selftests): Add declaration.
+	* unittests/environ-selftests.c (_initialize_environ_selftests): Add declaration.
+	* unittests/filtered_iterator-selftests.c
+	(_initialize_filtered_iterator_selftests): Add declaration.
+	* unittests/format_pieces-selftests.c (_initialize_format_pieces_selftests): Add declaration.
+	* unittests/function-view-selftests.c (_initialize_function_view_selftests): Add declaration.
+	* unittests/help-doc-selftests.c (_initialize_help_doc_selftests): Add declaration.
+	* unittests/lookup_name_info-selftests.c (_initialize_lookup_name_info_selftests): Add declaration.
+	* unittests/main-thread-selftests.c
+	(_initialize_main_thread_selftests): Add declaration.
+	* unittests/memory-map-selftests.c (_initialize_memory_map_selftests): Add declaration.
+	* unittests/memrange-selftests.c (_initialize_memrange_selftests): Add declaration.
+	* unittests/mkdir-recursive-selftests.c (_initialize_mkdir_recursive_selftests): Add declaration.
+	* unittests/observable-selftests.c (_initialize_observer_selftest): Add declaration.
+	* unittests/offset-type-selftests.c (_initialize_offset_type_selftests): Add declaration.
+	* unittests/optional-selftests.c (_initialize_optional_selftests): Add declaration.
+	* unittests/parse-connection-spec-selftests.c (_initialize_parse_connection_spec_selftests): Add declaration.
+	* unittests/rsp-low-selftests.c (_initialize_rsp_low_selftests): Add declaration.
+	* unittests/scoped_fd-selftests.c (_initialize_scoped_fd_selftests): Add declaration.
+	* unittests/scoped_mmap-selftests.c (_initialize_scoped_mmap_selftests): Add declaration.
+	* unittests/scoped_restore-selftests.c (_initialize_scoped_restore_selftests): Add declaration.
+	* unittests/string_view-selftests.c (_initialize_string_view_selftests): Add declaration.
+	* unittests/style-selftests.c (_initialize_style_selftest): Add declaration.
+	* unittests/tracepoint-selftests.c (_initialize_tracepoint_selftests): Add declaration.
+	* unittests/tui-selftests.c (_initialize_tui_selftest): Add
+	declaration.
+	* unittests/unpack-selftests.c (_initialize_unpack_selftests): Add declaration.
+	* unittests/utils-selftests.c (_initialize_utils_selftests): Add declaration.
+	* unittests/vec-utils-selftests.c (_initialize_vec_utils_selftests): Add declaration.
+	* unittests/xml-utils-selftests.c (_initialize_xml_utils): Add declaration.
+	* user-regs.c (_initialize_user_regs): Add declaration.
+	* utils.c (_initialize_utils): Add declaration.
+	* v850-tdep.c (_initialize_v850_tdep): Add declaration.
+	* valops.c (_initialize_valops): Add declaration.
+	* valprint.c (_initialize_valprint): Add declaration.
+	* value.c (_initialize_values): Add declaration.
+	* varobj.c (_initialize_varobj): Add declaration.
+	* vax-bsd-nat.c (_initialize_vaxbsd_nat): Add declaration.
+	* vax-nbsd-tdep.c (_initialize_vaxnbsd_tdep): Add declaration.
+	* vax-tdep.c (_initialize_vax_tdep): Add declaration.
+	* windows-nat.c (_initialize_windows_nat): Add declaration.
+	(_initialize_check_for_gdb_ini): Add declaration.
+	(_initialize_loadable): Add declaration.
+	* windows-tdep.c (_initialize_windows_tdep): Add declaration.
+	* x86-bsd-nat.c (_initialize_x86_bsd_nat): Add declaration.
+	* x86-linux-nat.c (_initialize_x86_linux_nat): Add declaration.
+	* xcoffread.c (_initialize_xcoffread): Add declaration.
+	* xml-support.c (_initialize_xml_support): Add declaration.
+	* xstormy16-tdep.c (_initialize_xstormy16_tdep): Add declaration.
+	* xtensa-linux-nat.c (_initialize_xtensa_linux_nat): Add declaration.
+	* xtensa-linux-tdep.c (_initialize_xtensa_linux_tdep): Add declaration.
+	* xtensa-tdep.c (_initialize_xtensa_tdep): Add declaration.
+
+2020-01-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* regformats/regdat.sh: Generate declaration for init function.
+
+2020-01-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* remote-sim.c (next_pid, INITIAL_PID, sim_inferior_data): Move
+	up.
+	(gdbsim_target) <get_inferior_data_by_ptid, resume_one_inferior,
+	close_one_inferior>: New methods.
+	(get_sim_inferior_data_by_ptid): Move to gdbsim_target,
+	pass down target to find_inferior_pid.
+	(gdbsim_target::fetch_registers, gdbsim_target::store_registers):
+	Pass down target to find_inferior_ptid.
+	(gdbsim_target::create_inferior): Pass down target to
+	add_thread_silent.
+	(gdbsim_close_inferior): Move to gdbsim_close_inferior, pass
+	target down to find_inferior_ptid and switch_to_thread.
+	(gdbsim_target::close): Update to call close_one_inferior.
+	(struct resume_data): Remove.
+	(gdbsim_resume_inferior): Move to gdbsim_target.  Take arguments
+	directly, rather than through a void pointer.
+	(gdbsim_target::resume): Update to call resume_one_inferior.
+
+2020-01-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbsupport/gdb_wait.c: Include gdb_wait.h.
+
+2020-01-12  Pedro Alves  <palves@redhat.com>
+
+	* bsd-kvm.c (bsd_kvm_target::close): Call exit_inferior_silent
+	directly for the current inferior instead of
+	discard_all_inferiors.
+	(discard_all_inferiors): Delete.
+
+2020-01-11  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (box_win): Check cli_styling.
+	* tui/tui-winsource.c (tui_source_window_base::refill): Use
+	deprecated_safe_get_selected_frame.
 
-2019-01-24  Alan Hayward  <alan.hayward@arm.com>
+2020-01-10  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
-	* aarch64-tdep.c (aapcs_is_vfp_call_or_return_candidate_1): Check
-	for static members.
-	(pass_in_v_vfp_candidate): Likewise.
+	* inferior.c (print_inferior): Switch inferior before printing it.
 
-2019-01-23  Tom Tromey  <tom@tromey.com>
+2020-01-10  Aleksandar Paunovic  <aleksandar.paunovic@intel.com>
 	    Pedro Alves  <palves@redhat.com>
 
-	* regcache.c (class regcache_invalidator): Remove.
-	(regcache::raw_write): Use make_scope_exit.
-
-2019-01-23  Tom Tromey  <tom@tromey.com>
+	* progspace-and-thread.c (switch_to_program_space_and_thread):
+	Assert there's an inferior for PSPACE.  Use
+	switch_to_inferior_no_thread to switch the inferior too.
+	* progspace.c (program_space::~program_space): Call
+	clear_symtab_users here, with SYMFILE_DEFER_BP_RESET.
+	(program_space::free_all_objfiles): Don't call clear_symtab_users
+	here.
+	* symfile.c (symbol_file_clear): Call clear_symtab_users here.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* NEWS: Mention multi-target debugging, "info connections", and
+	"add-inferior -no-connection".
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* infrun.c: Include "target-connection.h".
+	(check_multi_target_resumption): New.
+	(proceed): Call it.
+	* target-connection.c (make_target_connection_string): Make
+	extern.
+	* target-connection.h (make_target_connection_string): Declare.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (COMMON_SFILES): Add target-connection.c.
+	* inferior.c (uiout_field_connection): New function.
+	(print_inferior): Add new "connection-id" column.
+	(add_inferior_command): Show connection number/string of added
+	inferior.
+	* process-stratum-target.h
+	(process_stratum_target::connection_string): New virtual method.
+	(process_stratum_target::connection_number): New field.
+	* remote.c (remote_target::connection_string): New override.
+	* target-connection.c: New file.
+	* target-connection.h: New file.
+	* target.c (decref_target): Remove process_stratum targets from
+	the connection list.
+	(target_stack::push): Add process_stratum targets to the
+	connection list.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	Revert:
+	2016-04-12  Pedro Alves  <palves@redhat.com>
+	* serial.c (serial_open, serial_fdopen_ops, do_serial_close):
+	Remove references to name.
+	* serial.h (struct serial) <name>: Delete.
 
-	* ui-out.h (class ui_out_emit_type): Update comment.
+2020-01-10  Pedro Alves  <palves@redhat.com>
 
-2019-01-23  Tom Tromey  <tom@tromey.com>
+	* gdbarch-selftests.c (register_to_value_test): Remove "target
+	already pushed" check.
 
-	* infrun.c (fetch_inferior_event): Update comment.
+2020-01-10  Pedro Alves  <palves@redhat.com>
+	    John Baldwin  <jhb@FreeBSD.org>
 
-2019-01-23  Tom Tromey  <tom@tromey.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* infrun.c (reinstall_readline_callback_handler_cleanup): Remove
+	* aarch64-linux-nat.c
+	(aarch64_linux_nat_target::thread_architecture): Adjust.
+	* ada-tasks.c (print_ada_task_info): Adjust find_thread_ptid call.
+	(task_command_1): Likewise.
+	* aix-thread.c (sync_threadlists, aix_thread_target::resume)
+	(aix_thread_target::wait, aix_thread_target::fetch_registers)
+	(aix_thread_target::store_registers)
+	(aix_thread_target::thread_alive): Adjust.
+	* amd64-fbsd-tdep.c: Include "inferior.h".
+	(amd64fbsd_get_thread_local_address): Pass down target.
+	* amd64-linux-nat.c (ps_get_thread_area): Use ps_prochandle
+	thread's gdbarch instead of target_gdbarch.
+	* break-catch-sig.c (signal_catchpoint_print_it): Adjust call to
+	get_last_target_status.
+	* break-catch-syscall.c (print_it_catch_syscall): Likewise.
+	* breakpoint.c (breakpoints_should_be_inserted_now): Consider all
+	inferiors.
+	(update_inserted_breakpoint_locations): Skip if inferiors with no
+	execution.
+	(update_global_location_list): When handling moribund locations,
+	find representative inferior for location's pspace, and use thread
+	count of its process_stratum target.
+	* bsd-kvm.c (bsd_kvm_target_open): Pass target down.
+	* bsd-uthread.c (bsd_uthread_target::wait): Use
+	as_process_stratum_target and adjust thread_change_ptid and
+	add_thread calls.
+	(bsd_uthread_target::update_thread_list): Use
+	as_process_stratum_target and adjust find_thread_ptid,
+	thread_change_ptid and add_thread calls.
+	* btrace.c (maint_btrace_packet_history_cmd): Adjust
+	find_thread_ptid call.
+	* corelow.c (add_to_thread_list): Adjust add_thread call.
+	(core_target_open): Adjust add_thread_silent and thread_count
+	calls.
+	(core_target::pid_to_str): Adjust find_inferior_ptid call.
+	* ctf.c (ctf_target_open): Adjust add_thread_silent call.
+	* event-top.c (async_disconnect): Pop targets from all inferiors.
+	* exec.c (add_target_sections): Push exec target on all inferiors
+	sharing the program space.
+	(remove_target_sections): Remove the exec target from all
+	inferiors sharing the program space.
+	(exec_on_vfork): New.
+	* exec.h (exec_on_vfork): Declare.
+	* fbsd-nat.c (fbsd_add_threads): Add fbsd_nat_target parameter.
+	Pass it down.
+	(fbsd_nat_target::update_thread_list): Adjust.
+	(fbsd_nat_target::resume): Adjust.
+	(fbsd_handle_debug_trap): Add fbsd_nat_target parameter.  Pass it
+	down.
+	(fbsd_nat_target::wait, fbsd_nat_target::post_attach): Adjust.
+	* fbsd-tdep.c (fbsd_corefile_thread): Adjust
+	get_thread_arch_regcache call.
+	* fork-child.c (gdb_startup_inferior): Pass target down to
+	startup_inferior and set_executing.
+	* gdbthread.h (struct process_stratum_target): Forward declare.
+	(add_thread, add_thread_silent, add_thread_with_info)
+	(in_thread_list): Add process_stratum_target parameter.
+	(find_thread_ptid(inferior*, ptid_t)): New overload.
+	(find_thread_ptid, thread_change_ptid): Add process_stratum_target
 	parameter.
-	(fetch_inferior_event): Use SCOPE_EXIT.
-
-
-2019-01-23  Tom Tromey  <tom@tromey.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* infrun.c (disable_thread_events): Delete.
-	(stop_all_threads): Use SCOPE_EXIT.
-
-2019-01-23  Tom Tromey  <tom@tromey.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* symfile.c: Include forward-scope-exit.h.
-	(clear_symtab_users_cleanup): Replace forward declaration with
-	a FORWARD_SCOPE_EXIT.
-	(syms_from_objfile_1): Use the forward_scope_exit and
-	gdb::optional instead of cleanup_function.
-	(reread_symbols): Use the forward_scope_exit instead of
-	cleanup_function.
-	(clear_symtab_users_cleanup): Remove function.
-
-2019-01-23  Tom Tromey  <tom@tromey.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* linux-nat.c: Include scope-exit.h.
-	(cleanup_target_stop): Remove.
-	(linux_nat_target::static_tracepoint_markers_by_strid): Use
-	SCOPE_EXIT.
+	(all_threads()): Delete overload.
+	(all_threads, all_non_exited_threads): Add process_stratum_target
+	parameter.
+	(all_threads_safe): Use brace initialization.
+	(thread_count): Add process_stratum_target parameter.
+	(set_resumed, set_running, set_stop_requested, set_executing)
+	(threads_are_executing, finish_thread_state): Add
+	process_stratum_target parameter.
+	(switch_to_thread): Use is_current_thread.
+	* i386-fbsd-tdep.c: Include "inferior.h".
+	(i386fbsd_get_thread_local_address): Pass down target.
+	* i386-linux-nat.c (i386_linux_nat_target::low_resume): Adjust.
+	* inf-child.c (inf_child_target::maybe_unpush_target): Remove
+	have_inferiors check.
+	* inf-ptrace.c (inf_ptrace_target::create_inferior)
+	(inf_ptrace_target::attach): Adjust.
+	* infcall.c (run_inferior_call): Adjust.
+	* infcmd.c (run_command_1): Pass target to
+	scoped_finish_thread_state.
+	(proceed_thread_callback): Skip inferiors with no execution.
+	(continue_command): Rename 'all_threads' local to avoid hiding
+	'all_threads' function.  Adjust get_last_target_status call.
+	(prepare_one_step): Adjust set_running call.
+	(signal_command): Use user_visible_resume_target.  Compare thread
+	pointers instead of inferior_ptid.
+	(info_program_command): Adjust to pass down target.
+	(attach_command): Mark target's 'thread_executing' flag.
+	(stop_current_target_threads_ns): New, factored out from ...
+	(interrupt_target_1): ... this.  Switch inferior before making
+	target calls.
+	* inferior-iter.h
+	(struct all_inferiors_iterator, struct all_inferiors_range)
+	(struct all_inferiors_safe_range)
+	(struct all_non_exited_inferiors_range): Filter on
+	process_stratum_target too.  Remove explicit.
+	* inferior.c (inferior::inferior): Push dummy target on target
+	stack.
+	(find_inferior_pid, find_inferior_ptid, number_of_live_inferiors):
+	Add process_stratum_target parameter, and pass it down.
+	(have_live_inferiors): Adjust.
+	(switch_to_inferior_and_push_target): New.
+	(add_inferior_command, clone_inferior_command): Handle
+	"-no-connection" parameter.  Use
+	switch_to_inferior_and_push_target.
+	(_initialize_inferior): Mention "-no-connection" option in
+	the help of "add-inferior" and "clone-inferior" commands.
+	* inferior.h: Include "process-stratum-target.h".
+	(interrupt_target_1): Use bool.
+	(struct inferior) <push_target, unpush_target, target_is_pushed,
+	find_target_beneath, top_target, process_target, target_at,
+	m_stack>: New.
+	(discard_all_inferiors): Delete.
+	(find_inferior_pid, find_inferior_ptid, number_of_live_inferiors)
+	(all_inferiors, all_non_exited_inferiors): Add
+	process_stratum_target parameter.
+	* infrun.c: Include "gdb_select.h" and <unordered_map>.
+	(target_last_proc_target): New global.
+	(follow_fork_inferior): Push target on new inferior.  Pass target
+	to add_thread_silent.  Call exec_on_vfork.  Handle target's
+	reference count.
+	(follow_fork): Adjust get_last_target_status call.  Also consider
+	target.
+	(follow_exec): Push target on new inferior.
+	(struct execution_control_state) <target>: New field.
+	(user_visible_resume_target): New.
+	(do_target_resume): Call target_async.
+	(resume_1): Set target's threads_executing flag.  Consider resume
+	target.
+	(commit_resume_all_targets): New.
+	(proceed): Also consider resume target.  Skip threads of inferiors
+	with no execution.  Commit resumtion in all targets.
+	(start_remote): Pass current inferior to wait_for_inferior.
+	(infrun_thread_stop_requested): Consider target as well.  Pass
+	thread_info pointer to clear_inline_frame_state instead of ptid.
+	(infrun_thread_thread_exit): Consider target as well.
+	(random_pending_event_thread): New inferior parameter.  Use it.
+	(do_target_wait): Rename to ...
+	(do_target_wait_1): ... this.  Add inferior parameter, and pass it
+	down.
+	(threads_are_resumed_pending_p, do_target_wait): New.
+	(prepare_for_detach): Adjust calls.
+	(wait_for_inferior): New inferior parameter.  Handle it.  Use
+	do_target_wait_1 instead of do_target_wait.
+	(fetch_inferior_event): Adjust.  Switch to representative
+	inferior.  Pass target down.
+	(set_last_target_status): Add process_stratum_target parameter.
+	Save target in global.
+	(get_last_target_status): Add process_stratum_target parameter and
+	handle it.
+	(nullify_last_target_wait_ptid): Clear 'target_last_proc_target'.
+	(context_switch): Check inferior_ptid == null_ptid before calling
+	inferior_thread().
+	(get_inferior_stop_soon): Pass down target.
+	(wait_one): Rename to ...
+	(poll_one_curr_target): ... this.
+	(struct wait_one_event): New.
+	(wait_one): New.
+	(stop_all_threads): Adjust.
+	(handle_no_resumed, handle_inferior_event): Adjust to consider the
+	event's target.
+	(switch_back_to_stepped_thread): Also consider target.
+	(print_stop_event): Update.
+	(normal_stop): Update.  Also consider the resume target.
+	* infrun.h (wait_for_inferior): Remove declaration.
+	(user_visible_resume_target): New declaration.
+	(get_last_target_status, set_last_target_status): New
+	process_stratum_target parameter.
+	* inline-frame.c (clear_inline_frame_state(ptid_t)): Add
+	process_stratum_target parameter, and use it.
+	(clear_inline_frame_state (thread_info*)): New.
+	* inline-frame.c (clear_inline_frame_state(ptid_t)): Add
+	process_stratum_target parameter.
+	(clear_inline_frame_state (thread_info*)): Declare.
+	* linux-fork.c (delete_checkpoint_command): Pass target down to
+	find_thread_ptid.
+	(checkpoint_command): Adjust.
+	* linux-nat.c (linux_nat_target::follow_fork): Switch to thread
+	instead of just tweaking inferior_ptid.
+	(linux_nat_switch_fork): Pass target down to thread_change_ptid.
+	(exit_lwp): Pass target down to find_thread_ptid.
+	(attach_proc_task_lwp_callback): Pass target down to
+	add_thread/set_running/set_executing.
+	(linux_nat_target::attach): Pass target down to
+	thread_change_ptid.
+	(get_detach_signal): Pass target down to find_thread_ptid.
+	Consider last target status's target.
+	(linux_resume_one_lwp_throw, resume_lwp)
+	(linux_handle_syscall_trap, linux_handle_extended_wait, wait_lwp)
+	(stop_wait_callback, save_stop_reason, linux_nat_filter_event)
+	(linux_nat_wait_1, resume_stopped_resumed_lwps): Pass target down.
+	(linux_nat_target::async_wait_fd): New.
+	(linux_nat_stop_lwp, linux_nat_target::thread_address_space): Pass
+	target down.
+	* linux-nat.h (linux_nat_target::async_wait_fd): Declare.
+	* linux-tdep.c (get_thread_arch_regcache): Pass target down.
+	* linux-thread-db.c (struct thread_db_info::process_target): New
+	field.
+	(add_thread_db_info): Save target.
+	(get_thread_db_info): New process_stratum_target parameter.  Also
+	match target.
+	(delete_thread_db_info): New process_stratum_target parameter.
+	Also match target.
+	(thread_from_lwp): Adjust to pass down target.
+	(thread_db_notice_clone): Pass down target.
+	(check_thread_db_callback): Pass down target.
+	(try_thread_db_load_1): Always push the thread_db target.
+	(try_thread_db_load, record_thread): Pass target down.
+	(thread_db_target::detach): Pass target down.  Always unpush the
+	thread_db target.
+	(thread_db_target::wait, thread_db_target::mourn_inferior): Pass
+	target down.  Always unpush the thread_db target.
+	(find_new_threads_callback, thread_db_find_new_threads_2)
+	(thread_db_target::update_thread_list): Pass target down.
+	(thread_db_target::pid_to_str): Pass current inferior down.
+	(thread_db_target::get_thread_local_address): Pass target down.
+	(thread_db_target::resume, maintenance_check_libthread_db): Pass
+	target down.
+	* nto-procfs.c (nto_procfs_target::update_thread_list): Adjust.
+	* procfs.c (procfs_target::procfs_init_inferior): Declare.
+	(proc_set_current_signal, do_attach, procfs_target::wait): Adjust.
+	(procfs_init_inferior): Rename to ...
+	(procfs_target::procfs_init_inferior): ... this and adjust.
+	(procfs_target::create_inferior, procfs_notice_thread)
+	(procfs_do_thread_registers): Adjust.
+	* ppc-fbsd-tdep.c: Include "inferior.h".
+	(ppcfbsd_get_thread_local_address): Pass down target.
+	* proc-service.c (ps_xfer_memory): Switch current inferior and
+	program space as well.
+	(get_ps_regcache): Pass target down.
+	* process-stratum-target.c
+	(process_stratum_target::thread_address_space)
+	(process_stratum_target::thread_architecture): Pass target down.
+	* process-stratum-target.h
+	(process_stratum_target::threads_executing): New field.
+	(as_process_stratum_target): New.
+	* ravenscar-thread.c
+	(ravenscar_thread_target::update_inferior_ptid): Pass target down.
+	(ravenscar_thread_target::wait, ravenscar_add_thread): Pass target
+	down.
+	* record-btrace.c (record_btrace_target::info_record): Adjust.
+	(record_btrace_target::record_method)
+	(record_btrace_target::record_is_replaying)
+	(record_btrace_target::fetch_registers)
+	(get_thread_current_frame_id, record_btrace_target::resume)
+	(record_btrace_target::wait, record_btrace_target::stop): Pass
+	target down.
+	* record-full.c (record_full_wait_1): Switch to event thread.
+	Pass target down.
+	* regcache.c (regcache::regcache)
+	(get_thread_arch_aspace_regcache, get_thread_arch_regcache): Add
+	process_stratum_target parameter and handle it.
+	(current_thread_target): New global.
+	(get_thread_regcache): Add process_stratum_target parameter and
+	handle it.  Switch inferior before calling target method.
+	(get_thread_regcache): Pass target down.
+	(get_thread_regcache_for_ptid): Pass target down.
+	(registers_changed_ptid): Add process_stratum_target parameter and
+	handle it.
+	(registers_changed_thread, registers_changed): Pass target down.
+	(test_get_thread_arch_aspace_regcache): New.
+	(current_regcache_test): Define a couple local test_target_ops
+	instances and use them for testing.
+	(readwrite_regcache): Pass process_stratum_target parameter.
+	(cooked_read_test, cooked_write_test): Pass mock_target down.
+	* regcache.h (get_thread_regcache, get_thread_arch_regcache)
+	(get_thread_arch_aspace_regcache): Add process_stratum_target
+	parameter.
+	(regcache::target): New method.
+	(regcache::regcache, regcache::get_thread_arch_aspace_regcache)
+	(regcache::registers_changed_ptid): Add process_stratum_target
+	parameter.
+	(regcache::m_target): New field.
+	(registers_changed_ptid): Add process_stratum_target parameter.
+	* remote.c (remote_state::supports_vCont_probed): New field.
+	(remote_target::async_wait_fd): New method.
+	(remote_unpush_and_throw): Add remote_target parameter.
+	(get_current_remote_target): Adjust.
+	(remote_target::remote_add_inferior): Push target.
+	(remote_target::remote_add_thread)
+	(remote_target::remote_notice_new_inferior)
+	(get_remote_thread_info): Pass target down.
+	(remote_target::update_thread_list): Skip threads of inferiors
+	bound to other targets.  (remote_target::close): Don't discard
+	inferiors.  (remote_target::add_current_inferior_and_thread)
+	(remote_target::process_initial_stop_replies)
+	(remote_target::start_remote)
+	(remote_target::remote_serial_quit_handler): Pass down target.
+	(remote_target::remote_unpush_target): New remote_target
+	parameter.  Unpush the target from all inferiors.
+	(remote_target::remote_unpush_and_throw): New remote_target
+	parameter.  Pass it down.
+	(remote_target::open_1): Check whether the current inferior has
+	execution instead of checking whether any inferior is live.  Pass
+	target down.
+	(remote_target::remote_detach_1): Pass down target.  Use
+	remote_unpush_target.
+	(extended_remote_target::attach): Pass down target.
+	(remote_target::remote_vcont_probe): Set supports_vCont_probed.
+	(remote_target::append_resumption): Pass down target.
+	(remote_target::append_pending_thread_resumptions)
+	(remote_target::remote_resume_with_hc, remote_target::resume)
+	(remote_target::commit_resume): Pass down target.
+	(remote_target::remote_stop_ns): Check supports_vCont_probed.
+	(remote_target::interrupt_query)
+	(remote_target::remove_new_fork_children)
+	(remote_target::check_pending_events_prevent_wildcard_vcont)
+	(remote_target::remote_parse_stop_reply)
+	(remote_target::process_stop_reply): Pass down target.
+	(first_remote_resumed_thread): New remote_target parameter.  Pass
+	it down.
+	(remote_target::wait_as): Pass down target.
+	(unpush_and_perror): New remote_target parameter.  Pass it down.
+	(remote_target::readchar, remote_target::remote_serial_write)
+	(remote_target::getpkt_or_notif_sane_1)
+	(remote_target::kill_new_fork_children, remote_target::kill): Pass
+	down target.
+	(remote_target::mourn_inferior): Pass down target.  Use
+	remote_unpush_target.
+	(remote_target::core_of_thread)
+	(remote_target::remote_btrace_maybe_reopen): Pass down target.
+	(remote_target::pid_to_exec_file)
+	(remote_target::thread_handle_to_thread_info): Pass down target.
+	(remote_target::async_wait_fd): New.
+	* riscv-fbsd-tdep.c: Include "inferior.h".
+	(riscv_fbsd_get_thread_local_address): Pass down target.
+	* sol2-tdep.c (sol2_core_pid_to_str): Pass down target.
+	* sol-thread.c (sol_thread_target::wait, ps_lgetregs, ps_lsetregs)
+	(ps_lgetfpregs, ps_lsetfpregs, sol_update_thread_list_callback):
+	Adjust.
+	* solib-spu.c (spu_skip_standalone_loader): Pass down target.
+	* solib-svr4.c (enable_break): Pass down target.
+	* spu-multiarch.c (parse_spufs_run): Pass down target.
+	* spu-tdep.c (spu2ppu_sniffer): Pass down target.
+	* target-delegates.c: Regenerate.
+	* target.c (g_target_stack): Delete.
+	(current_top_target): Return the current inferior's top target.
+	(target_has_execution_1): Refer to the passed-in inferior's top
+	target.
+	(target_supports_terminal_ours): Check whether the initial
+	inferior was already created.
+	(decref_target): New.
+	(target_stack::push): Incref/decref the target.
+	(push_target, push_target, unpush_target): Adjust.
+	(target_stack::unpush): Defref target.
+	(target_is_pushed): Return bool.  Adjust to refer to the current
+	inferior's target stack.
+	(dispose_inferior): Delete, and inline parts ...
+	(target_preopen): ... here.  Only dispose of the current inferior.
+	(target_detach): Hold strong target reference while detaching.
+	Pass target down.
+	(target_thread_name): Add assertion.
+	(target_resume): Pass down target.
+	(target_ops::beneath, find_target_at): Adjust to refer to the
+	current inferior's target stack.
+	(get_dummy_target): New.
+	(target_pass_ctrlc): Pass the Ctrl-C to the first inferior that
+	has a thread running.
+	(initialize_targets): Rename to ...
+	(_initialize_target): ... this.
+	* target.h: Include "gdbsupport/refcounted-object.h".
+	(struct target_ops): Inherit refcounted_object.
+	(target_ops::shortname, target_ops::longname): Make const.
+	(target_ops::async_wait_fd): New method.
+	(decref_target): Declare.
+	(struct target_ops_ref_policy): New.
+	(target_ops_ref): New typedef.
+	(get_dummy_target): Declare function.
+	(target_is_pushed): Return bool.
+	* thread-iter.c (all_matching_threads_iterator::m_inf_matches)
+	(all_matching_threads_iterator::all_matching_threads_iterator):
+	Handle filter target.
+	* thread-iter.h (struct all_matching_threads_iterator, struct
+	all_matching_threads_range, class all_non_exited_threads_range):
+	Filter by target too.  Remove explicit.
+	* thread.c (threads_executing): Delete.
+	(inferior_thread): Pass down current inferior.
+	(clear_thread_inferior_resources): Pass down thread pointer
+	instead of ptid_t.
+	(add_thread_silent, add_thread_with_info, add_thread): Add
+	process_stratum_target parameter.  Use it for thread and inferior
+	searches.
+	(is_current_thread): New.
+	(thread_info::deletable): Use it.
+	(find_thread_ptid, thread_count, in_thread_list)
+	(thread_change_ptid, set_resumed, set_running): New
+	process_stratum_target parameter.  Pass it down.
+	(set_executing): New process_stratum_target parameter.  Pass it
+	down.  Adjust reference to 'threads_executing'.
+	(threads_are_executing): New process_stratum_target parameter.
+	Adjust reference to 'threads_executing'.
+	(set_stop_requested, finish_thread_state): New
+	process_stratum_target parameter.  Pass it down.
+	(switch_to_thread): Also match inferior.
+	(switch_to_thread): New process_stratum_target parameter.  Pass it
+	down.
+	(update_threads_executing): Reimplement.
+	* top.c (quit_force): Pop targets from all inferior.
+	(gdb_init): Don't call initialize_targets.
+	* windows-nat.c (windows_nat_target) <get_windows_debug_event>:
+	Declare.
+	(windows_add_thread, windows_delete_thread): Adjust.
+	(get_windows_debug_event): Rename to ...
+	(windows_nat_target::get_windows_debug_event): ... this.  Adjust.
+	* tracefile-tfile.c (tfile_target_open): Pass down target.
+	* gdbsupport/common-gdbthread.h (struct process_stratum_target):
+	Forward declare.
+	(switch_to_thread): Add process_stratum_target parameter.
+	* mi/mi-interp.c (mi_on_resume_1): Add process_stratum_target
+	parameter.  Use it.
+	(mi_on_resume): Pass target down.
+	* nat/fork-inferior.c (startup_inferior): Add
+	process_stratum_target parameter.  Pass it down.
+	* nat/fork-inferior.h (startup_inferior): Add
+	process_stratum_target parameter.
+	* python/py-threadevent.c (py_get_event_thread): Pass target down.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* remote.c (remote_target::start_remote): Don't set inferior_ptid
+	directly.  Instead find the first thread in the thread list and
+	use switch_to_thread.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* remote.c (remote_target::remote_add_inferior): Don't bind a
+	process to the current inferior if the current inferior is already
+	bound to a process.
+
+2020-01-10  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	    Pedro Alves	 <palves@redhat.com>
+
+	* remote.c (remote_target::remote_parse_stop_reply) <W/X packets>:
+	If no process is specified, return null_ptid instead of
+	inferior_ptid.
+	(remote_target::wait_as): Handle TARGET_WAITKIND_EXITED /
+	TARGET_WAITKIND_SIGNALLED with no pid.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* remote.c (first_remote_resumed_thread): New.
+	(remote_target::wait_as): Use it as default event_ptid instead of
+	inferior_ptid.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* infrun.c (handle_no_resumed): Use all_non_exited_inferiors.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* tracefile-tfile.c (tfile_target::close): Assert that trace_fd is
+	not -1.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* break-catch-sig.c (signal_catchpoint_print_it): Don't pass a
+	ptid to get_last_target_status.
+	* break-catch-syscall.c (print_it_catch_syscall): Don't pass a
+	ptid to get_last_target_status.
+	* infcmd.c (continue_command): Don't pass a target_waitstatus to
+	get_last_target_status.
+	(info_program_command): Don't pass a target_waitstatus to
+	get_last_target_status.
+	* infrun.c (init_wait_for_inferior): Use
+	nullify_last_target_wait_ptid.
+	(get_last_target_status): Handle nullptr arguments.
+	(nullify_last_target_wait_ptid): Clear target_last_waitstatus.
+	(print_stop_event): Don't pass a ptid to get_last_target_status.
+	(normal_stop): Don't pass a ptid to get_last_target_status.
+	* infrun.h (get_last_target_status, set_last_target_status): Move
+	comments here and update.
+	(nullify_last_target_wait_ptid): Declare.
+	* linux-fork.c (fork_load_infrun_state): Remove local extern
+	declaration of nullify_last_target_wait_ptid.
+	* linux-nat.c (get_detach_signal): Don't pass a target_waitstatus
+	to get_last_target_status.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* gdbthread.h (scoped_restore_current_thread)
+	<dont_restore, restore, m_dont_restore>: Declare.
+	* thread.c (thread_alive): Add assertion.  Return bool.
+	(switch_to_thread_if_alive): New.
+	(prune_threads): Switch inferior/thread.
+	(print_thread_info_1): Switch thread before calling target methods.
+	(scoped_restore_current_thread::restore): New, factored out from
+	...
+	(scoped_restore_current_thread::~scoped_restore_current_thread):
+	... this.
+	(scoped_restore_current_thread::scoped_restore_current_thread):
+	Add assertion.
+	(thread_apply_all_command, thread_select): Use
+	switch_to_thread_if_alive.
+	* infrun.c (proceed, restart_threads, handle_signal_stop)
+	(switch_back_to_stepped_thread): Switch current thread before
+	calling target methods.
 
-2019-01-23  Tom Tromey  <tom@tromey.com>
-	    Pedro Alves  <palves@redhat.com>
+2020-01-10  Pedro Alves <palves@redhat.com>
 
-	* infcall.c (cleanup_delete_std_terminate_breakpoint): Remove.
-	(call_function_by_hand_dummy): Use SCOPE_EXIT.
+	* inferior.c (switch_to_inferior_no_thread): New function,
+	factored out from ...
+	(inferior_command): ... here.
+	* inferior.h (switch_to_inferior_no_thread): Declare.
+	* mi/mi-main.c (run_one_inferior): Use
+	switch_to_inferior_no_thread.
 
-2019-01-23  Tom Tromey  <tom@tromey.com>
-	    Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Pedro Alves  <palves@redhat.com>
+2020-01-10  Pedro Alves  <palves@redhat.com>
 
-	* infrun.c (fetch_inferior_event): Use scope_exit.
-	* utils.h (make_bpstat_clear_actions_cleanup): Don't declare.
-	* top.c (execute_command): Use scope_exit.
-	* breakpoint.c (bpstat_do_actions): Use scope_exit.
-	* utils.c (do_bpstat_clear_actions_cleanup)
-	(make_bpstat_clear_actions_cleanup): Remove.
+	* infcmd.c (kill_command): Remove dead code.
 
-2019-01-23  Tom Tromey  <tom@tromey.com>
-	    Pedro Alves  <palves@redhat.com>
+2020-01-10  Pedro Alves  <palves@redhat.com>
 
-	* infrun.c: Include "common/scope-exit.h"
-	(delete_just_stopped_threads_infrun_breakpoints_cleanup): Remove.
-	(wait_for_inferior): Use SCOPE_EXIT.
-	(fetch_inferior_event): Use scope_exit.
+	* remote.c (remote_target::mourn_inferior): No longer check
+	whether the target is running.
 
-2019-01-23  Tom Tromey  <tom@tromey.com>
-	    Pedro Alves  <palves@redhat.com>
+2020-01-10  Pedro Alves  <palves@redhat.com>
 
-	* breakpoint.c (create_breakpoint): Remove cleanup.
+	* corelow.c (core_target::has_execution): Change parameter type to
+	inferior pointer.
+	* inferior.c (number_of_live_inferiors): Use
+	inferior::has_execution instead of target_has_execution_1.
+	* inferior.h (inferior::has_execution): New.
+	* linux-thread-db.c (thread_db_target::update_thread_list): Use
+	inferior::has_execution instead of target_has_execution_1.
+	* process-stratum-target.c
+	(process_stratum_target::has_execution): Change parameter type to
+	inferior pointer.  Check the inferior's PID instead of
+	inferior_ptid.
+	* process-stratum-target.h
+	(process_stratum_target::has_execution): Change parameter type to
+	inferior pointer.
+	* record-full.c (record_full_core_target::has_execution): Change
+	parameter type to inferior pointer.
+	* target.c (target_has_execution_1): Change parameter type to
+	inferior pointer.
+	(target_has_execution_current): Adjust.
+	* target.h (target_ops::has_execution): Change parameter type to
+	inferior pointer.
+	(target_has_execution_1): Change parameter type to inferior
+	pointer.  Change return type to bool.
+	* tracefile.h (tracefile_target::has_execution): Change parameter
+	type to inferior pointer.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* exceptions.c (print_flush): Remove current_top_target() check.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* remote.c (show_remote_exec_file): Show the current inferior's
+	exec-file instead of the command variable's value.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* record-full.c (record_full_resume_ptid): New global.
+	(record_full_target::resume): Set it.
+	(record_full_wait_1): Use record_full_resume_ptid instead of
+	inferior_ptid.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* gdbthread.h (scoped_restore_current_thread)
+	<dont_restore, restore, m_dont_restore>: Declare.
+	* thread.c (thread_alive): Add assertion.  Return bool.
+	(switch_to_thread_if_alive): New.
+	(prune_threads): Switch inferior/thread.
+	(print_thread_info_1): Switch thread before calling target methods.
+	(scoped_restore_current_thread::restore): New, factored out from
+	...
+	(scoped_restore_current_thread::~scoped_restore_current_thread):
+	... this.
+	(scoped_restore_current_thread::scoped_restore_current_thread):
+	Add assertion.
+	(thread_apply_all_command, thread_select): Use
+	switch_to_thread_if_alive.
 
-2019-01-23  Tom Tromey  <tom@tromey.com>
-	    Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Pedro Alves  <palves@redhat.com>
+2020-01-10  George Barrett  <bob@bob131.so>
 
-2019-01-23  Pedro Alves  <palves@redhat.com>
+	* stap-probe.c (stap_modify_semaphore): Don't check for null
+	semaphores.
+	(stap_probe::set_semaphore, stap_probe::clear_semaphore): Check
+	for null semaphores.
 
-	* gdbarch-selftests.c (struct on_exit): Use SCOPE_EXIT.
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-01-23  Pedro Alves  <palves@redhat.com>
-	    Andrew Burgess  <andrew.burgess@embecosm.com>
+	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Update
+	all source windows, and maintain horizontal scroll status while
+	doing so.
 
-	* gdbthread.h: Include "common/forward-scope-exit.h".
-	(scoped_finish_thread_state): Redefine custom class in terms of
-	forward_scope_exit.
+2020-01-09  Tom Tromey  <tom@tromey.com>
 
-2019-01-23  Pedro Alves  <palves@redhat.com>
-	    Andrew Burgess  <andrew.burgess@embecosm.com>
+	PR tui/18932:
+	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Call
+	update_source_window, not print_source_lines.
 
-	* common/forward-scope-exit.h: New file.
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-01-23  Pedro Alves  <palves@redhat.com>
-	    Andrew Burgess  <andrew.burgess@embecosm.com>
-	    Tom Tromey  <tom@tromey.com>
+	* tui/tui.c (tui_enable): Register tui hooks after calling
+	tui_display_main.
 
-	* common/scope-exit.h: New file.
+2020-01-09  Christian Biesinger  <cbiesinger@google.com>
 
-2019-01-23  Pedro Alves  <palves@redhat.com>
+	* gdbsupport/common-defs.h: Don't define _FORTIFY_SOURCE on MinGW.
 
-	* common/preprocessor.h (ESC): Rename to ...
-	(ESC_PARENS): ... this.
-	* common/valid-expr.h (CHECK_VALID_EXPR_1, CHECK_VALID_EXPR_2)
-	(CHECK_VALID_EXPR_3, CHECK_VALID_EXPR_4): Adjust.
+2020-01-08  Simon Marchi  <simon.marchi@efficios.com>
 
-2019-01-23  Tom Tromey  <tom@tromey.com>
+	* thread.c (print_thread_info_1): Fix indentation.
 
-	* language.h (class scoped_switch_to_sym_language_if_auto):
-	Initialize m_lang in both cases.
+2020-01-09  Christian Biesinger  <cbiesinger@google.com>
 
-2019-01-23  Alan Hayward  <alan.hayward@arm.com>
+	* symtab.c (general_symbol_info::compute_and_set_names): Move the
+	unique_xmalloc_ptr outside the if to always free the demangled name.
 
-	* nat/aarch64-linux.c (aarch64_linux_new_thread): Replace XNEW
-	with XCNEW.
+2020-01-08  Tom Tromey  <tromey@adacore.com>
 
-2019-01-22  Tom Tromey  <tom@tromey.com>
+	* xcoffread.c (enter_line_range, read_xcoff_symtab)
+	(process_xcoff_symbol, xcoff_symfile_offsets): Update.
+	* symtab.h (MSYMBOL_VALUE_ADDRESS): Update.
+	(struct section_offsets, ANOFFSET, SIZEOF_N_SECTION_OFFSETS):
+	Remove.
+	(section_offsets): New typedef.
+	* symtab.c (fixup_section, get_msymbol_address): Update.
+	* symmisc.c (dump_msymbols): Update.
+	* symfile.h (relative_addr_info_to_section_offsets)
+	(symfile_map_offsets_to_segments): Update.
+	* symfile.c (build_section_addr_info_from_objfile)
+	(init_objfile_sect_indices): Update.
+	(struct place_section_arg): Change type of "offsets".
+	(place_section): Update.
+	(relative_addr_info_to_section_offsets): Change type of
+	"section_offsets".  Remove "num_sections" parameter.
+	(default_symfile_offsets, syms_from_objfile_1)
+	(set_objfile_default_section_offset): Update.
+	(reread_symbols): No need to preserve section offsets by hand.
+	(symfile_map_offsets_to_segments): Change type of "offsets".
+	* stap-probe.c (relocate_address): Update.
+	* stabsread.h (process_one_symbol): Update.
+	* solib-target.c (struct lm_info_target) <offsets>: Change type.
+	(solib_target_relocate_section_addresses): Update.
+	* solib-svr4.c (enable_break, svr4_relocate_main_executable):
+	Update.
+	* solib-frv.c (frv_relocate_main_executable): Update.
+	* solib-dsbt.c (dsbt_relocate_main_executable): Update.
+	* solib-aix.c (solib_aix_get_section_offsets): Change return
+	type.
+	(solib_aix_solib_create_inferior_hook): Update.
+	* remote.c (remote_target::get_offsets): Update.
+	* psymtab.c (find_pc_sect_psymtab): Update.
+	* psympriv.h (struct partial_symbol) <address, text_low,
+	text_high>: Update.
+	* objfiles.h (obj_section_offset): Update.
+	(struct objfile) <section_offsets>: Change type.
+	<num_sections>: Remove.
+	(objfile_relocate): Update.
+	* objfiles.c (entry_point_address_query): Update
+	(relocate_one_symbol): Change type of "section_offsets".
+	(objfile_relocate1, objfile_relocate1): Change type of
+	"new_offsets".
+	(objfile_rebase1): Update.
+	* mipsread.c (mipscoff_symfile_read): Update.
+	(read_alphacoff_dynamic_symtab): Remove "section_offsets"
+	parameter.
+	* mdebugread.c (parse_symbol): Change type of "section_offsets".
+	(parse_external, psymtab_to_symtab_1): Update.
+	* machoread.c (macho_symfile_offsets): Update.
+	* ia64-tdep.c (ia64_find_unwind_table): Update.
+	* hppa-tdep.c (read_unwind_info): Update.
+	* hppa-bsd-tdep.c (hppabsd_find_global_pointer): Update.
+	* dwarf2read.c (create_addrmap_from_index)
+	(create_addrmap_from_aranges, dw2_find_pc_sect_compunit_symtab)
+	(process_psymtab_comp_unit_reader, add_partial_symbol)
+	(add_partial_subprogram, process_full_comp_unit)
+	(read_file_scope, read_func_scope, read_lexical_block_scope)
+	(read_call_site_scope, dwarf2_rnglists_process)
+	(dwarf2_ranges_process, dwarf2_ranges_read)
+	(dwarf_decode_lines_1, var_decode_location, new_symbol)
+	(dwarf2_fetch_die_loc_sect_off, dwarf2_per_cu_text_offset):
+	Update.
+	* dwarf2-frame.c (execute_cfa_program, dwarf2_frame_find_fde):
+	Update.
+	* dtrace-probe.c (dtrace_probe::get_relocated_address): Update.
+	* dbxread.c (read_dbx_symtab, read_ofile_symtab): Update.
+	(process_one_symbol): Change type of "section_offsets".
+	* ctfread.c (get_objfile_text_range): Update.
+	* coffread.c (coff_symtab_read, enter_linenos)
+	(process_coff_symbol): Update.
+	* coff-pe-read.c (add_pe_forwarded_sym): Update.
+	* amd64-windows-tdep.c (amd64_windows_find_unwind_info): Update.
 
-	* corelow.c: Do not include sys/file.h.
+2020-01-08  Tom Tromey  <tromey@adacore.com>
 
-2019-01-22  Tom Tromey  <tom@tromey.com>
+	* dwarf2read.c (parse_macro_definition): Use std::string.
+	(parse_macro_definition): Likewise.
 
-	* tui/tui-wingeneral.h: Include gdb_curses.h.
+2020-01-08  Tom Tromey  <tromey@adacore.com>
 
-2019-01-22  Tom Tromey  <tom@tromey.com>
+	* dwarf2read.c (abbrev_table_read_table): Use std::vector.
+	(ATTR_ALLOC_CHUNK): Remove.
 
-	* source-cache.h (class source_cache) <get_source_lines,
-	get_plain_source_lines, extract_lines>: Rename "lines" parameter.
+2020-01-08  Tom Tromey  <tromey@adacore.com>
 
-2019-01-22  Tom Tromey  <tom@tromey.com>
+	* dwarf2read.c (fixup_go_packaging): Use unique_xmalloc_ptr.
 
-	* remote-fileio.h (struct remote_target): Declare.
+2020-01-08  Tom Tromey  <tromey@adacore.com>
 
-2019-01-22  Tom Tromey  <tom@tromey.com>
+	* dwarf2read.c (add_partial_symbol): Use unique_xmalloc_ptr.
+	(dwarf2_compute_name, open_dwo_file): Likewise.
+	(process_enumeration_scope): Use std::vector.
+	(guess_partial_die_structure_name): Use unique_xmalloc_ptr.
+	(partial_die_info::fixup, dwarf2_start_subfile)
+	(guess_full_die_structure_name, dwarf2_name): Likewise.
+	(determine_prefix): Update.
+	(guess_full_die_structure_name): Make return type const.
+	(partial_die_full_name): Return unique_xmalloc_ptr.
+	(DW_FIELD_ALLOC_CHUNK): Remove.
 
-	* python/py-arch.c: Do not include py-ref.h.
-	* python/py-bpevent.c: Do not include py-ref.h.
-	* python/py-cmd.c: Do not include py-ref.h.
-	* python/py-continueevent.c: Do not include py-ref.h.
-	* python/py-event.h: Do not include py-ref.h.
-	* python/py-evtregistry.c: Do not include py-ref.h.
-	* python/py-finishbreakpoint.c: Do not include py-ref.h.
-	* python/py-frame.c: Do not include py-ref.h.
-	* python/py-framefilter.c: Do not include py-ref.h.
-	* python/py-function.c: Do not include py-ref.h.
-	* python/py-infevents.c: Do not include py-ref.h.
-	* python/py-linetable.c: Do not include py-ref.h.
-	* python/py-objfile.c: Do not include py-ref.h.
-	* python/py-param.c: Do not include py-ref.h.
-	* python/py-prettyprint.c: Do not include py-ref.h.
-	* python/py-progspace.c: Do not include py-ref.h.
-	* python/py-symbol.c: Do not include py-ref.h.
-	* python/py-symtab.c: Do not include py-ref.h.
-	* python/py-type.c: Do not include py-ref.h.
-	* python/py-unwind.c: Do not include py-ref.h.
-	* python/py-utils.c: Do not include py-ref.h.
-	* python/py-value.c: Do not include py-ref.h.
-	* python/py-varobj.c: Do not include py-ref.h.
-	* python/py-xmethods.c: Do not include py-ref.h.
-	* python/python.c: Do not include py-ref.h.
-	* varobj.c: Do not include py-ref.h.
+2020-01-07  Tom Tromey  <tromey@adacore.com>
 
-2019-01-22  Tom Tromey  <tom@tromey.com>
+	PR build/24937:
+	* stap-probe.c (class stap_static_probe_ops): Add constructor.
 
-	* objfiles.h (struct objfile_per_bfd_storage): Use "struct"
-	keyword for bcache.
+2020-01-02  Jon Turney  <jon.turney@dronecode.org.uk>
 
-2019-01-22  Tom Tromey  <tom@tromey.com>
+	* cli/cli-style.c: Set cli_styling to 'true' in the Cygwin build.
 
-	* compile/compile-cplus-types.c: Remove a comment by #include.
+2020-01-06  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-01-22  Tom Tromey  <tom@tromey.com>
+	* stack.c (print_frame_info): Move disassemble_next_line code
+	inside source_print block.
 
-	* compile/gcc-c-plugin.h: Include compile-internal.h.
+2020-01-06  Eli Zaretskii  <eliz@gnu.org>
 
-2019-01-22  Tom Tromey  <tom@tromey.com>
+	* gdbsupport/gdb_wait.c: Include <signal.h> instead of
+	gdb/signals.h, as we are now using native signal symbols.
 
-	* stabsread.c (EXTERN): Do not define.
-	(symnum, next_symbol_text_func, processing_gcc_compilation)
-	(within_function, global_sym_chain, global_stabs)
-	(previous_stab_code, this_object_header_files)
-	(n_this_object_header_files)
-	(n_allocated_this_object_header_files): Define.
-	* stabsread.h (EXTERN): Never define.  Use "extern".
+2020-01-06  Shahab Vahedi  <shahab@synopsys.com>
 
-2019-01-22  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* tui/tui-disasm.c (tui_disasm_window::addr_is_displayed): Avoid
+	overflow by an early check of content vs threshold.
+	* tui/tui-source.c (tui_source_window::line_is_displayed):
+	Likewise.
 
-	* event-top.c (handle_line_of_input): use unique_xmalloc_ptr for
-	history_value.
+2020-01-06  Eli Zaretskii  <eliz@gnu.org>
 
-2019-01-21  Tom Tromey  <tom@tromey.com>
+	* NEWS: Mention the recent fix of $_exitsignal on MS-Windows.
 
-	* ui-out.c: Fix includes.
-	* tui/tui-source.c: Fix includes.
-	* target.c: Fix includes.
-	* remote.c: Fix includes.
-	* regcache.c: Fix includes.
-	* python/py-block.c: Fix includes.
-	* printcmd.c: Fix includes.
-	* or1k-tdep.c: Fix includes.
-	* mi/mi-main.c: Fix includes.
-	* m32r-tdep.c: Fix includes.
-	* csky-tdep.c: Fix includes.
-	* compile/compile-cplus-types.c: Fix includes.
-	* cli/cli-interp.c: Fix includes.
+2020-01-02  Jon Turney  <jon.turney@dronecode.org.uk>
 
-2019-01-21  Alan Hayward  <alan.hayward@arm.com>
+	* coff-pe-read.c (read_pe_exported_syms): Don't try to read the
+	export table if no section contains it's RVA.
 
-	* aarch64-tdep.c (aapcs_is_vfp_call_or_return_candidate_1): Check
-	for padding.
+2020-01-06  Eli Zaretskii  <eliz@gnu.org>
 
-2019-01-16  Tom Tromey  <tom@tromey.com>
+	* windows-tdep.c: Fix a typo in WINDOWS_SIGABRT.
 
-	* objfiles.h (struct minimal_symbol_iterator): Rename.  Move
-	earlier.
-	(struct objfile) <msymbols_range>: Move from top level.
-	<msymbols>: New method.
-	(class objfile_msymbols): Remove.
-	* symtab.c (default_collect_symbol_completion_matches_break_on):
-	Update.
-	* symmisc.c (dump_msymbols): Update.
-	* stabsread.c (scan_file_globals): Update.
-	* objc-lang.c (info_selectors_command, info_classes_command)
-	(find_methods): Update.
-	* minsyms.c (find_solib_trampoline_target): Update.
-	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Update.
-	* coffread.c (coff_symfile_read): Update.
-	* ada-lang.c (ada_lookup_simple_minsym)
-	(ada_collect_symbol_completion_matches): Update.
-
-2019-01-16  Tom Tromey  <tom@tromey.com>
-
-	* objfiles.h (class objfile_msymbols) <iterator>: Change argument
-	type.  Remove no-argument constructor.
-	<iterator::operator++>: Simplify.
-	<begin>: Update.
-	<end>: Use minimal_symbol_count.
-
-2019-01-16  Tom Tromey  <tom@tromey.com>
-
-	* objfiles.h (struct objfile) <psymtabs>: New method.
-	(class objfile_psymtabs): Remove.
-	* psymtab.h (class psymtab_storage) <partial_symtab_range>: New
-	typedef.
-	<range>: New method.
-	(require_partial_symbols): Change return type.
-	* psymtab.c (require_partial_symbols)
-	(psym_expand_symtabs_matching): Update.
-	* mdebugread.c (parse_partial_symbols): Update.
-	* dbxread.c (dbx_end_psymtab): Update.
+2020-01-06  Hannes Domani  <ssbssa@yahoo.de>
 
-2019-01-15  Tom Tromey  <tom@tromey.com>
+	* source.c (print_source_lines_base): Set last_line_listed.
 
-	* symtab.c (lookup_objfile_from_block)
-	(lookup_symbol_in_objfile_symtabs)
-	(basic_lookup_transparent_type_1, find_pc_sect_compunit_symtab)
-	(find_line_symtab, info_sources_command)
-	(default_collect_symbol_completion_matches_break_on)
-	(make_source_files_completion_list): Update.
-	* symmisc.c (print_objfile_statistics, dump_objfile)
-	(maintenance_print_symbols, maintenance_info_symtabs)
-	(maintenance_check_symtabs, maintenance_info_line_tables):
-	Update.
-	* source.c (select_source_symtab)
-	(forget_cached_source_info_for_objfile): Update.
-	* objfiles.h (class objfile_compunits): Remove.
-	(struct objfile) <compunits_range>: New typedef.
-	(compunits): New method.
-	* objfiles.c (objfile_relocate1): Update.
-	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Update.
-	* maint.c (count_symtabs_and_blocks): Update.
-	* linespec.c (iterate_over_all_matching_symtabs): Update.
-	* cp-support.c (add_symbol_overload_list_qualified): Update.
-	* coffread.c (coff_symtab_read): Update.
-	* ada-lang.c (add_nonlocal_symbols)
-	(ada_collect_symbol_completion_matches)
-	(ada_add_global_exceptions): Update.
+2020-01-06  Shahab Vahedi  <shahab@synopsys.com>
 
-2019-01-15  Tom Tromey  <tom@tromey.com>
+	* tui/tui-disasm.c: Remove trailing spaces.
 
-	* progspace.h (program_space) <objfiles_safe_range>: New
-	typedef.
-	<objfiles_safe>: New method.
-	* objfiles.h (class all_objfiles_safe): Remove.
-	* objfiles.c (free_all_objfiles, objfile_purge_solibs): Update.
-	* jit.c (jit_inferior_exit_hook): Update.
-
-2019-01-17  Tom Tromey  <tom@tromey.com>
-
-	* progspace.h (program_space) <objfiles_range>: New typedef.
-	<objfiles>: New method.
-	<objfiles_head>: Rename from objfiles.
-	(object_files): Update.
-	* guile/scm-progspace.c (gdbscm_progspace_objfiles): Update.
-	* guile/scm-pretty-print.c
-	(ppscm_find_pretty_printer_from_objfiles): Update.
-	* guile/scm-objfile.c (gdbscm_objfiles): Update.
-	* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers):
-	Update.
-	* python/py-progspace.c (pspy_get_objfiles): Update.
-	* python/py-prettyprint.c (find_pretty_printer_from_objfiles):
-	Update.
-	* python/py-objfile.c (objfpy_lookup_objfile_by_name)
-	(objfpy_lookup_objfile_by_build_id): Update.
-	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Update.
-	* windows-tdep.c (windows_iterate_over_objfiles_in_search_order):
-	Update.
-	* symtab.c (iterate_over_symtabs, matching_obj_sections)
-	(expand_symtab_containing_pc, lookup_objfile_from_block)
-	(lookup_static_symbol, basic_lookup_transparent_type)
-	(find_pc_sect_compunit_symtab, find_symbol_at_address)
-	(find_line_symtab, info_sources_command)
-	(default_collect_symbol_completion_matches_break_on)
-	(make_source_files_completion_list, find_main_name): Update.
-	* symmisc.c (print_symbol_bcache_statistics)
-	(print_objfile_statistics, maintenance_print_symbols)
-	(maintenance_print_msymbols, maintenance_print_objfiles)
-	(maintenance_info_symtabs, maintenance_check_symtabs)
-	(maintenance_expand_symtabs, maintenance_info_line_tables):
-	Update.
-	* symfile.c (remove_symbol_file_command, overlay_invalidate_all)
-	(find_pc_overlay, find_pc_mapped_section, list_overlays_command)
-	(map_overlay_command, unmap_overlay_command)
-	(simple_overlay_update, expand_symtabs_matching)
-	(map_symbol_filenames): Update.
-	* symfile-debug.c (set_debug_symfile): Update.
-	* spu-tdep.c (spu_overlay_update, spu_objfile_from_frame):
-	Update.
-	* source.c (select_source_symtab, forget_cached_source_info):
-	Update.
-	* solib.c (solib_read_symbols): Update.
-	* solib-spu.c (append_ocl_sos): Update.
-	* psymtab.c (maintenance_print_psymbols)
-	(maintenance_info_psymtabs, maintenance_check_psymtabs): Update.
-	* probe.c (parse_probes_in_pspace, find_probe_by_pc): Update.
-	* printcmd.c (info_symbol_command): Update.
-	* ppc-linux-tdep.c (ppc_linux_spe_context_inferior_created):
-	Update.
-	* objfiles.h (class all_objfiles): Remove.
-	* objfiles.c (have_partial_symbols, have_full_symbols)
-	(have_minimal_symbols, qsort_cmp, update_section_map)
-	(shared_objfile_contains_address_p)
-	(default_iterate_over_objfiles_in_search_order): Update.
-	* objc-lang.c (info_selectors_command, info_classes_command)
-	(find_methods): Update.
-	* minsyms.c (find_solib_trampoline_target): Update.
-	* maint.c (maintenance_info_sections)
-	(maintenance_translate_address, count_symtabs_and_blocks):
-	Update.
-	* main.c (captured_main_1): Update.
-	* linux-thread-db.c (try_thread_db_load_from_pdir)
-	(has_libpthread): Update.
-	* linespec.c (iterate_over_all_matching_symtabs)
-	(search_minsyms_for_name): Update.
-	* jit.c (jit_find_objf_with_entry_addr): Update.
-	* hppa-tdep.c (find_unwind_entry)
-	(hppa_lookup_stub_minimal_symbol): Update.
-	* gcore.c (gcore_create_callback, objfile_find_memory_regions):
-	Update.
-	* elfread.c (elf_gnu_ifunc_resolve_by_cache)
-	(elf_gnu_ifunc_resolve_by_got): Update.
-	* dwarf2-frame.c (dwarf2_frame_find_fde): Update.
-	* dwarf-index-write.c (save_gdb_index_command): Update.
-	* cp-support.c (add_symbol_overload_list_qualified): Update.
-	* breakpoint.c (create_overlay_event_breakpoint)
-	(create_longjmp_master_breakpoint)
-	(create_std_terminate_master_breakpoint)
-	(create_exception_master_breakpoint): Update.
-	* blockframe.c (find_pc_partial_function): Update.
-	* ada-lang.c (ada_lookup_simple_minsym, add_nonlocal_symbols)
-	(ada_collect_symbol_completion_matches)
-	(ada_add_global_exceptions): Update.
-
-2019-01-17  Tom Tromey  <tom@tromey.com>
-
-	* solib-target.c (lm_info_target_p): Remove typedef.  Don't
-	declare VEC.
-	(solib_target_parse_libraries): Change return type.
-	(library_list_start_segment, library_list_start_section)
-	(library_list_end_library, library_list_start_library); Update.
-	(solib_target_free_library_list): Remove.
-	(solib_target_parse_libraries): Remove cleanup.  Change return
-	type.
-	(solib_target_current_sos): Update.
-
-2019-01-17  Tom Tromey  <tromey@bapiya>
-
-	* valprint.c: Replace "the the" with "the".
-	* symtab.c: Replace "the the" with "the".
-	* solib.c: Replace "the the" with "the".
-	* solib-dsbt.c: Replace "the the" with "the".
-	* linespec.c: Replace "the the" with "the".
-	* dwarf2loc.h: Replace "the the" with "the".
-	* amd64-windows-tdep.c: Replace "the the" with "the".
-	* aarch64-tdep.c: Replace "the the" with "the".
-
-2019-01-16  Keith Seitz  <keiths@redhat.com>
-
-	PR gdb/23773
-	* dwarf2read.c (dwarf2_cu) <ancestor>: New field.
-	<builder>: Rename to ..
-	<m_builder>: ... this and make private.
-	(dwarf2_cu::get_builder): New method.  Change all users of
-	`builder' to use this method.
-	(dwarf2_start_symtab): Move to ...
-	(dwarf2_cu::start_symtab): ... here.  Update all callers
-	(setup_type_unit_groups): Move to ...
-	(dwarf2_cu::setup_type_unit_groups): ... here.  Update all
-	callers.
-	(dwarf2_cu::reset_builder): New method.
-	(process_full_compunit, process_full_type_unit): Use
-	dwarf2_cu::reset_builder.
-	(follow_die_offset): Record the ancestor CU if it is different
-	from the followed DIE's CU.
-	(follow_die_sig_1): Likewise.
-
-2019-01-15  Tom Tromey  <tom@tromey.com>
-
-	* remote.c (class remote_state) <buf>: Now a char_vector.
-	<buf_size>: Remove.
-	(remote_target::getpkt): Change type of buf.  Remove sizeof_buf
-	parameter.
-	(remote_target::getpkt_or_notif_sane_1)
-	(remote_target::getpkt_sane)
-	(remote_target::getpkt_or_notif_sane): Likewise.
-	(class remote_target) <putpkt>: New overload.
-	(remote_target::read_frame): Change type of "buf_p".  Remove
-	sizeof_p parameter.
-	(packet_ok): New overload.
-	(packet_check_result): New overload.
-	Update all uses.
-
-2019-01-14  Tom Tromey  <tom@tromey.com>
-
-	* remote-notif.c (handle_notification, remote_notif_ack)
-	(remote_notif_parse): Make "buf" const.
-	* remote-notif.h (struct notif_client) <parse, ack>: Make "buf"
-	const.
-	(remote_notif_parse, remote_notif_ack, handle_notification):
-	Likewise.
-	* remote.c (remote_notif_stop_parse): Make "buf" const.
-	(remote_target::remote_parse_stop_reply): Make "buf" const.
-	(remote_notif_stop_ack): Make "buf" const.
+2020-01-06  Eli Zaretskii  <eliz@gnu.org>
+	    Pedro Alves  <palves@redhat.com>
 
-2019-01-14  Tom Tromey  <tom@tromey.com>
+	* Makefile.in (COMMON_SFILES): Add gdbsupport/gdb_wait.c.
+	* windows-tdep.c: New enumeration of WINDOWS_SIG* signals.
+	(windows_gdb_signal_to_target): New function, uses the above
+	enumeration to convert GDB internal signal codes to equivalent
+	Windows codes.
+	(windows_init_abi): Call set_gdbarch_gdb_signal_to_target.
+	* windows-nat.c: Include "gdb_wait.h".
+	(get_windows_debug_event): Extract the fatal exception from the
+	exit status and convert to the equivalent Posix signal number.
+	* cli/cli-cmds.c (exit_status_set_internal_vars): Account for the
+	possibility that WTERMSIG returns GDB_SIGNAL_UNKNOWN.
+	* gdbsupport/gdb_wait.c: New file, implements
+	windows_status_to_termsig.
+	* gdbsupport/gdb_wait.h (WIFEXITED, WIFSIGNALED, WEXITSTATUS)
+	(WTERMSIG) [__MINGW32__]: Separate definitions for MinGW.
 
-	* remote.c (remote_console_output): Make parameter const.
+2020-01-05  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-01-14  Tom Tromey  <tom@tromey.com>
+	* tui/tui-layout.c (tui_add_win_to_layout): Use tui_set_layout not
+	show_layout.
 
-	* target-debug.h (target_debug_print_signals): Constify.
-	* nto-procfs.c (nto_procfs_target::pass_signals): Update.
-	* procfs.c (procfs_target::pass_signals): Update.
-	* linux-nat.c (linux_nat_target::pass_signals): Update.
-	* linux-nat.h (class linux_nat_target) <pass_signals>: Update.
-	* target-delegates.c: Rebuild.
-	* remote.c (remote_target::program_signals): Update.
-	(remote_target::pass_signals): Update.
-	* target.c (target_pass_signals): Constify argument.
-	(target_program_signals): Likewise.
-	* target.h (struct target_ops) <pass_signals, program_signals>:
-	Constify argument.
-	(target_pass_signals, target_program_signals): Constify argument.
+2020-01-05  Luis Machado  <luis.machado@linaro.org>
 
-2019-01-14  Tom Tromey  <tom@tromey.com>
-
-	PR tui/28819:
-	* tui/tui-io.c (gdb_wgetch): Print \r when needed.
+	* aarch64-linux-nat.c
+	(aarch64_linux_nat_target::thread_architecture): Use bfd_arch_aarch64
+	and bfd_mach_aarch64.
 
-2019-01-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+2020-01-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
-	* ppc-tdep.h (struct gdbarch_tdep) <ppc_v0_alias_regnum>: New
-	field.
-	* rs6000-tdep.c: Include reggroups.h.
-	(IS_V_ALIAS_PSEUDOREG): Define.
-	(rs6000_register_name): Return names for the "vX" aliases.
-	(rs6000_pseudo_register_type): Return type for the "vX" aliases.
-	(rs6000_pseudo_register_reggroup_p): Restore.  Handle "vX"
-	aliases.  Call default_register_reggroup_p for all other
-	pseudo-registers.
-	(v_alias_pseudo_register_read, v_alias_pseudo_register_write):
-	New functions.
-	(rs6000_pseudo_register_read, rs6000_pseudo_register_write):
-	Handle "vX" aliases.
-	(v_alias_pseudo_register_collect): New function.
-	(rs6000_ax_pseudo_register_collect): Handle "vX" aliases.
-	(rs6000_gdbarch_init): Initialize "vX" aliases as
-	pseudo-registers.  Restore registration of
-	rs6000_pseudo_register_reggroup_p with
-	set_tdesc_pseudo_register_reggroup_p.
-
-2019-01-13  Max Filippov  <jcmvbkbc@gmail.com>
-
-	* xtensa-linux-tdep.c (xtensa_linux_init_abi): Update
-	tdep->num_pseudo_regs. Add calls to set_gdbarch_num_regs and
-	set_gdbarch_num_pseudo_regs.
-
-2019-01-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* cli/cli-style.h (class cli_style_option): <add_setshow_commands>
-	Remove arg prefixname, add do_set and do_show.
-	Add member functions set_list and show_list.
-	* cli/cli-style.c (class cli_style_option): Update accordingly.
-	(style_set_list): Move to file scope.
-	(style_show_list): Likewise.
-	(set_style): Call help_list.
-	(show_style): Call cmd_show_list.
-	(_initialize_cli_style): New macro STYLE_ADD_SETSHOW_COMMANDS.
-	Update to use the new macro.
-
-2019-10-12  Joel Brobecker  <brobecker@adacore.com>
-
-	* ada-lang.c (_initialize_ada_language): Expand the help text
-	for the "catch exception" command.
-
-2019-01-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* symtab.c (matching_obj_sections): Initialize obj,
-	declare it closer to its usage.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* thread-iter.h (inf_threads_iterator): Use next_iterator.
-	(basic_inf_threads_range): Remove.
-	(inf_threads_range, inf_non_exited_threads_range)
-	(safe_inf_threads_range): Use next_adapter.
-
-2019-01-10  Keith Seitz  <keiths@redhat.com>
-
-	PR gdb/23712
-	PR symtab/23010
-	* dwarf2read.c (dw2_add_symbol_to_list): Remove.
-	(fixup_go_packaging, new_symbol): Use add_symbol_to_list.
-
-2019-01-10  Keith Seitz  <keiths@redhat.com>
-
-	PR gdb/23712
-	PR symtab/23010
-	* dictionary.c (pending_to_vector): Remove.
-	(dict_create_hashed_1, dict_create_linear_1, dict_add_pending_1):
-	Remove _1 suffix, replacing functions of the same name.  Update
-	all callers.
-	(dict_create_hashed, dict_create_hashed_expandable)
-	(dict_create_linear, dict_create_linear_expandable, dict_free)
-	(dict_add_symbol, dict_add_pending, dict_size, dict_empty):
-	Make functions static.
-
-2019-01-10  Keith Seitz  <keiths@redhat.com>
-
-	PR gdb/23712
-	PR symtab/23010
-	* dictionary.h (struct dictionary): Replace declaration with
-	multidictionary.
-	(dict_create_hashed, dict_create_hashed_expandable)
-	(dict_create_linear, dict_create_linear_expandable)
-	(dict_free, dict_add_symbol, dict_add_pending, dict_empty)
-	(dict_iterator_first, dict_iterator_next, dict_iter_match_first)
-	(dict_iter_match_next, dict_size): Rename to "mdict_" versions
-	taking multidictionary argument.
-	[ALL_DICT_SYMBOLS]: Update for multidictionary.
-	* block.h (struct block) <dict>: Change to multidictionary
-	and rename `multidict'.
-	* block.c, buildsym.c, jit.c, mdebugread.c, objfiles.c,
-	symmisc.c: Update all dictionary references to multidictionary.
-
-2019-01-10  Keith Seitz  <keiths@redhat.com>
-
-	PR gdb/23712
-	PR symtab/23010
-	* dictionary.c: Include unordered_map.
-	(pending_to_vector): New function.
-	(dict_create_hashed_1, dict_create_linear_1, dict_add_pending_1):
-	Rewrite the non-"_1" functions to take vector instead
-	of linked list.
-	(dict_create_hashed, dict_create_linear, dict_add_pending): Use the
-	"new" _1 versions of the same name.
-	(multidictionary): Define.
-	(std::hash<enum language): New definition.
-	(collate_pending_symbols_by_language, mdict_create_hashed)
-	(mdict_create_hashed_expandable, mdict_create_linear)
-	(mdict_create_linear_expandable, mdict_free)
-	(find_language_dictionary, create_new_language_dictionary)
-	(mdict_add_symbol, mdict_add_pending, mdict_iterator_first)
-	(mdict_iterator_next, mdict_iter_match_first, mdict_iter_match_next)
-	(mdict_size, mdict_empty): New functions.
-	* dictionary.h (mdict_iterator): Define.
-
-2019-01-10  Pedro Alves  <palves@redhat.com>
-
-	* breakpoint.c (read_uploaded_action)
-	(create_tracepoint_from_upload): Adjust to use
-	gdb::unique_xmalloc_ptr.
-	* ctf.c (ctf_write_uploaded_tp):
-	(SET_ARRAY_FIELD): Use emplace_back.
-	(SET_STRING_FIELD): Adjust to use gdb::unique_xmalloc_ptr.
-	* tracefile-tfile.c (tfile_write_uploaded_tp):
-	* tracepoint.c (parse_tracepoint_definition): Adjust to use
-	gdb::unique_xmalloc_ptr.
-	* tracepoint.h (struct uploaded_tp) <cond, actions, step_actions,
-	at_string, cond_string, cmd_strings>: Replace char pointers
-	with gdb::unique_xmalloc_ptr.
-
-2019-01-10  Pedro Alves  <palves@redhat.com>
-
-	* solib-target.c (library_list_start_library): Don't xstrdup name.
-
-2019-01-10  Pedro Alves  <palves@redhat.com>
-
-	* mdebugread.c (parse_partial_symbols): Use
-	gdb::unique_xmalloc_ptr to manage heap-allocated 'stabsstring'.
-
-2019-01-10  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* linux-fork.c (scoped_switch_fork_info)
-	<~scoped_switch_fork_info>: Fix incorrect variable name.
-
-2019-01-10  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* linux-fork.c (scoped_switch_fork_info)
-	<scoped_switch_fork_info>: Make explicit.
-	<~scoped_switch_fork_info>: Wrap core in TRY/CATCH.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* objfiles.h (objfile::reset_psymtabs): Update.
-	* objfiles.c (objfile::objfile): Update.
-	* psymtab.h (psymtab_storage::obstack): Update.
-	(psymtab_storage::m_obstack): Use gdb::optional.
-	(class psymtab_storage): Update comment.  Remove objfile
-	parameter.
-	* psymtab.c (psymtab_storage::psymtab_storage): Update.
+	* ui-file.c (stdio_file::can_emit_style_escape)
+	(tee_file::can_emit_style_escape): Ensure style is used also on
+	gdb_stderr when gdb_stderr is a tty supporting styling, similarly
+	to gdb_stdout.
+	* main.c (set_gdb_data_directory): Use file style to output the
+	warning that the given pathname is not a directory.
+	* top.c (show_history_filename, gdb_safe_append_history)
+	(show_gdb_datadir): Use file style.
 
-2019-01-10  Tom Tromey  <tom@tromey.com>
+2020-01-03  Hannes Domani  <ssbssa@yahoo.de>
 
-	* psymtab.h (psymtab_storage::allocate_psymtab): New method.
-	<free_psymtabs>: Now private.
-	* psymtab.c (psymtab_storage::allocate_psymtab): Implement.
-	(allocate_psymtab): Use new method.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* xcoffread.c (xcoff_end_psymtab): Use allocate_dependencies.
-	* psymtab.h (psymtab_storage::allocate_dependencies): New method.
-	* mdebugread.c (parse_partial_symbols): Use
-	allocate_dependencies.
-	* dwarf2read.c (dwarf2_create_include_psymtab): Use
-	allocate_dependencies.
-	(process_psymtab_comp_unit_reader)
-	(build_type_psymtab_dependencies): Likewise.
-	* dbxread.c (dbx_end_psymtab): Use allocate_dependencies.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* psymtab.c (add_psymbol_to_bcache): Pass psymtab obstack to
-	PSYMBOL_SET_LANGUAGE.
-	(allocate_psymtab): Allocate psymtab on the psymtab obstack.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* psymtab.h (psymtab_storage::obstack): New method.
-	<m_obstack>: Rename from obstack; now private.
-	* psymtab.c (psymtab_storage): Update.
-	* dwarf2read.c (create_addrmap_from_index)
-	(create_addrmap_from_aranges, dwarf2_build_psymtabs_hard):
-	Update.
+	* solib-target.c (struct lm_info_target):
+	Change offsets to be a unique_xmalloc_ptr.
+	(solib_target_relocate_section_addresses): Update.
 
-2019-01-10  Tom Tromey  <tom@tromey.com>
+2020-01-03  Hannes Domani  <ssbssa@yahoo.de>
 
-	* symfile.c (reread_symbols): Call objfile->reset_psymtabs.
-	* objfiles.h (objfile::reset_psymtabs): New method.
+	* windows-nat.c (windows_clear_solib): Free so_list linked list.
 
-2019-01-10  Tom Tromey  <tom@tromey.com>
+2020-01-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
-	* symmisc.c (print_symbol_bcache_statistics): Update.
-	(print_objfile_statistics): Update.
-	* symfile.c (reread_symbols): Update.
-	* psymtab.h (class psymtab_storage): New.
-	* psymtab.c (psymtab_storage): New constructor.
-	(~psymtab_storage): New destructor.
-	(require_partial_symbols): Update.
-	(ALL_OBJFILE_PSYMTABS_REQUIRED): Rewrite.
-	(find_pc_sect_psymtab, find_pc_sect_psymbol)
-	(match_partial_symbol, lookup_partial_symbol, dump_psymtab)
-	(psym_dump, recursively_search_psymtabs, psym_has_symbols)
-	(psym_find_compunit_symtab_by_address, sort_pst_symbols)
-	(start_psymtab_common, end_psymtab_common)
-	(add_psymbol_to_bcache, add_psymbol_to_list, init_psymbol_list)
-	(allocate_psymtab): Update.
-	(psymtab_storage::discard_psymtab): Rename from discard_psymtab.
-	Update.
-	(dump_psymtab_addrmap, maintenance_print_psymbols)
-	(maintenance_check_psymtabs): Update.
-	(class objfile_psymtabs): Move to objfiles.h.
-	* psympriv.h (discard_psymtab): Now inline.
-	(psymtab_discarder::psymtab_discarder): Update.
-	(psymtab_discarder::~psymtab_discarder): Update.
-	(ALL_OBJFILE_PSYMTABS): Rewrite.
-	* objfiles.h (struct objfile) <psymtabs, psymtabs_addrmap,
-	free_psymtabs, psymbol_cache, global_psymbols, static_psymbols>:
-	Remove fields.
-	<partial_symtabs>: New field.
-	(class objfile_psymtabs): Move from psymtab.h.  Update.
-	* objfiles.c (objfile::objfile): Initialize partial_symtabs, not
-	psymbol_cache.
-	(objfile::~objfile): Don't destroy psymbol_cache.
-	* mdebugread.c (parse_partial_symbols): Update.
-	* dwarf2read.c (create_addrmap_from_index)
-	(create_addrmap_from_aranges, dw2_find_pc_sect_compunit_symtab)
-	(process_psymtab_comp_unit_reader, dwarf2_build_psymtabs_hard)
-	(add_partial_subprogram, dwarf2_ranges_read): Update.
-	* dwarf-index-write.c (write_address_map)
-	(write_one_signatured_type, recursively_write_psymbols)
-	(class debug_names, class debug_names, write_psymtabs_to_index):
-	Update.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* symtab.h (SYMBOL_SET_NAMES): Update.
-	(symbol_set_names): Update.
-	(MSYMBOL_SET_NAMES): Update.
-	* symtab.c (symbol_set_names): Change argument to be an
-	objfile_per_bfd_storage.
-	* psymtab.c (add_psymbol_to_bcache): Update.
-	* psympriv.h (PSYMBOL_SET_NAMES): Take per_bfd argument.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* symtab.c (create_demangled_names_hash): Change argument to be an
-	objfile_per_bfd_storage.
-	(symbol_set_names): Update.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* xcoffread.c (xcoff_initial_scan): Unconditionally call
-	init_psymbol_list.
-	* psymtab.c (init_psymbol_list): Do nothing if already called.
-	* psympriv.h (init_psymbol_list): Add comment.
-	* dwarf2read.c (dwarf2_build_psymtabs): Unconditionally call
-	init_psymbol_list.
-	* dbxread.c (dbx_symfile_read): Unconditionally call
-	init_psymbol_list.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* xcoffread.c (scan_xcoff_symtab): Update.
-	* psymtab.c (add_psymbol_to_list): Replace "list" parameter with
-	"where".
-	* mdebugread.c (parse_partial_symbols)
-	(handle_psymbol_enumerators): Update.
-	* dwarf2read.c (add_partial_symbol, load_partial_dies): Update.
-	* dbxread.c (read_dbx_symtab): Update.
-	* psympriv.h (psymbol_placement): New enum.
-	(add_psymbol_to_list): Update.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* xcoffread.c (xcoff_start_psymtab): Remove global_psymbols and
-	static_psymbols parameters.
-	(scan_xcoff_symtab): Update.
-	* psymtab.c (start_psymtab_common): Remove global_psymbols and
-	static_psymbols parameters.
-	* psympriv.h (start_psymtab_common): Update.
-	* mdebugread.c (parse_partial_symbols): Update.
-	* dwarf2read.c (create_partial_symtab): Update.
-	* dbxread.c (read_dbx_symtab): Update.
-	(start_psymtab): Remove global_psymbols and static_psymbols
-	parameters.
+	* MAINTAINERS (Write After Approval): Add myself.
 
-2019-01-10  Tom Tromey  <tom@tromey.com>
+2020-01-02  Luis Machado  <luis.machado@linaro.org>
 
-	* xcoffread.c (xcoff_end_psymtab): Remove some initializations.
-	* psymtab.c (allocate_psymtab): Add comment.
-	* psympriv.h (allocate_psymtab): Add comment.
-	* dwarf2read.c (dwarf2_create_include_psymtab): Remove some
-	initializations.
-	* dbxread.c (dbx_end_psymtab): Remove some initializations.
-
-2019-01-10  Tom Tromey  <tom@tromey.com>
-
-	* symfile.h (mdebug_build_psymtabs, elfmdebug_build_psymtabs):
-	Don't declare.
-	* mipsread.c: Include mdebugread.h.
-	* mdebugread.h (mdebug_build_psymtabs, elfmdebug_build_psymtabs):
-	Declare.
-	* elfread.c: Include mdebugread.h.
+	* proc-service.c (get_ps_regcache): Remove reference to obsolete
+	Cell BE architecture.
+	* target.h (struct target_ops) <thread_architecture>: Likewise.
 
-2019-01-09  Tom Tromey  <tom@tromey.com>
+2020-01-01  Hannes Domani  <ssbssa@yahoo.de>
 
-	* dbxread.c (dbx_end_psymtab): Use objfile_psymtabs.
-	* mdebugread.c (parse_partial_symbols): Use objfile_psymtabs.
-	* psymtab.c (ALL_OBJFILE_PSYMTABS_REQUIRED): Remove.
-	(psym_map_symtabs_matching_filename, find_pc_sect_psymtab)
-	(psym_lookup_symbol, psym_find_last_source_symtab)
-	(psym_forget_cached_source_info, psym_print_stats)
-	(psym_expand_symtabs_for_function, psym_expand_all_symtabs)
-	(psym_expand_symtabs_with_fullname, psym_map_symbol_filenames)
-	(psym_map_matching_symbols, psym_expand_symtabs_matching)
-	(psym_find_compunit_symtab_by_address)
-	(maintenance_print_psymbols, maintenance_info_psymtabs)
-	(maintenance_check_psymtabs): Use ranged for.
-	* psymtab.h (class objfile_psymtabs): New.
-	(require_partial_symbols): Return objfile_psymtabs.
-	* psympriv.h (ALL_OBJFILE_PSYMTABS): Remove.
-
-2019-01-09  Tom Tromey  <tom@tromey.com>
-
-	* symfile.c (overlay_invalidate_all, find_pc_overlay)
-	(find_pc_mapped_section, list_overlays_command)
-	(map_overlay_command, unmap_overlay_command)
-	(simple_overlay_update): Use all_objfiles.
-	* spu-tdep.c (spu_overlay_update): Use all_objfiles.
-	* printcmd.c (info_symbol_command): Use all_objfiles.
-	* objfiles.h (ALL_OBJSECTIONS): Remove.
-	* maint.c (maintenance_translate_address): Use all_objfiles.
-	* gcore.c (gcore_create_callback): Use all_objfiles.
-	(objfile_find_memory_regions): Likewise.
-
-2019-01-09  Tom Tromey  <tom@tromey.com>
-
-	* symtab.c (find_line_symtab, info_sources_command)
-	(make_source_files_completion_list): Use objfile_compunits.
-	* source.c (select_source_symtab): Use objfile_compunits.
-	* objfiles.h (struct objfile): Update comment.
-	(ALL_OBJFILES): Remove.
-	(ALL_FILETABS): Remove.
-	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Use
-	objfile_compunits.
-
-2019-01-09  Tom Tromey  <tom@tromey.com>
-
-	* symmisc.c (print_objfile_statistics, dump_objfile)
-	(maintenance_print_symbols): Use compunit_filetabs.
-	* source.c (forget_cached_source_info_for_objfile): Use
-	compunit_filetabs.
-	* objfiles.h (ALL_OBJFILE_FILETABS): Remove.
-	(ALL_FILETABS): Use compunit_filetabs.
-	* objfiles.c (objfile_relocate1): Use compunit_filetabs.
-	* coffread.c (coff_symtab_read): Use compunit_filetabs.
-
-2019-01-09  Tom Tromey  <tom@tromey.com>
-
-	* symtab.h (ALL_COMPUNIT_FILETABS): Remove.
-	(compunit_filetabs): New.
-	* symtab.c (iterate_over_some_symtabs, find_pc_sect_line): Use
-	compunit_filetabs.
-	(info_sources_command, make_source_files_completion_list): Remove
-	declaration.
-	* symmisc.c (print_objfile_statistics, dump_objfile)
-	(maintenance_print_symbols): Remove declaration.
-	(maintenance_info_symtabs): Use compunit_filetabs.
-	(maintenance_info_line_tables): Likewise.
-	* source.c (select_source_symtab): Change local variable name.
-	(forget_cached_source_info_for_objfile): Remove declaration.
-	* objfiles.h (ALL_OBJFILE_FILETABS): Use compunit_filetabs.
-	* objfiles.c (objfile_relocate1): Remove declaration.
-	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Remove
-	declaration.
-	* maint.c (count_symtabs_and_blocks): Use compunit_filetabs.
-	* coffread.c (coff_symtab_read): Remove declaration.
-	* buildsym.c (buildsym_compunit::end_symtab_with_blockvector): Use
-	compunit_filetabs.
-
-2019-01-09  Tom Tromey  <tom@tromey.com>
-
-	* symtab.c (lookup_objfile_from_block)
-	(find_pc_sect_compunit_symtab, search_symbols)
-	(default_collect_symbol_completion_matches_break_on): Use
-	objfile_compunits.
-	* objfiles.h (ALL_COMPUNITS): Remove.
-	* maint.c (count_symtabs_and_blocks): Use objfile_compunits.
-	* cp-support.c (add_symbol_overload_list_qualified): Use
-	objfile_compunits.
-	* ada-lang.c (ada_collect_symbol_completion_matches)
-	(ada_add_global_exceptions): Use objfile_compunits.
-
-2019-01-09  Tom Tromey  <tom@tromey.com>
-
-	* source.c (select_source_symtab)
-	(forget_cached_source_info_for_objfile): Remove declaration.
-	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Remove
-	declaration.
-	* maint.c (count_symtabs_and_blocks): Remove declaration.
-	* cp-support.c (add_symbol_overload_list_qualified): Remove
-	declaration.
-	* coffread.c (coff_symtab_read): Remove declaration.
-	* symtab.c (lookup_symbol_in_objfile_symtabs)
-	(basic_lookup_transparent_type_1): Use objfile_compunits.
-	(lookup_objfile_from_block, find_pc_sect_compunit_symtab)
-	(info_sources_command, search_symbols)
-	(default_collect_symbol_completion_matches_break_on)
-	(make_source_files_completion_list): Remove declaration.
-	* ada-lang.c (add_nonlocal_symbols): Use objfile_compunits.
-	(ada_collect_symbol_completion_matches)
-	(ada_add_global_exceptions): Remove declaration.
-	* linespec.c (iterate_over_all_matching_symtabs): Use
-	objfile_compunits.
-	* objfiles.h (ALL_OBJFILE_COMPUNITS): Remove.
-	(class objfile_compunits): New.
-	(ALL_COMPUNITS): Use objfile_compunits.
-	* symmisc.c (print_objfile_statistics, maintenance_info_symtabs)
-	(maintenance_check_symtabs, maintenance_info_line_tables): Use
-	objfile_compunits.
-	* objfiles.c (objfile_relocate1): Use objfile_compunits.
-
-2019-01-09  Tom Tromey  <tom@tromey.com>
-
-	* symtab.c (search_symbols)
-	(default_collect_symbol_completion_matches_break_on): Use
-	objfile_msymbols.
-	* ada-lang.c (ada_lookup_simple_minsym)
-	(ada_collect_symbol_completion_matches): Use objfile_msymbols.
-	* minsyms.c (find_solib_trampoline_target): Use objfile_msymbols.
-	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Use
-	objfile_msymbols.
-	* coffread.c (coff_symfile_read): Use objfile_msymbols.
-	* symmisc.c (dump_msymbols): Use objfile_msymbols.
-	* objc-lang.c (find_methods): Use objfile_msymbols.
-	(info_selectors_command, info_classes_command): Likewise.
-	* stabsread.c (scan_file_globals): Use objfile_msymbols.
-	* objfiles.h (class objfile_msymbols): New.
-	(ALL_OBJFILE_MSYMBOLS): Remove.
-	(ALL_MSYMBOLS): Remove.
+	* Makefile.in: Use INSTALL_PROGRAM_ENV.
 
-2019-01-09  Tom Tromey  <tom@tromey.com>
+2020-01-01  Hannes Domani  <ssbssa@yahoo.de>
 
-	* common/next-iterator.h (next_adapter): Add Iterator template
-	parameter.
-	* objfiles.h (ALL_OBJFILES_SAFE): Remove.
-	(class all_objfiles_safe): New.
-	* jit.c (jit_inferior_exit_hook): Use all_objfiles_safe.
-	* objfiles.c (put_objfile_before): Update comment.
-	(add_separate_debug_objfile): Likewise.
-	(free_all_objfiles): Use all_objfiles_safe.
-	(objfile_purge_solibs): Likewise.
-
-2019-01-09  Tom Tromey  <tom@tromey.com>
-
-	* symtab.c (iterate_over_symtabs, matching_obj_sections)
-	(expand_symtab_containing_pc, lookup_static_symbol)
-	(basic_lookup_transparent_type, find_pc_sect_compunit_symtab)
-	(find_symbol_at_address, find_line_symtab, find_main_name): Use
-	all_objfiles.
-	* probe.c (find_probe_by_pc, collect_probes): Use all_objfiles.
-	* breakpoint.c (create_overlay_event_breakpoint)
-	(create_longjmp_master_breakpoint)
-	(create_std_terminate_master_breakpoint)
-	(create_exception_master_breakpoint): Use all_objfiles.
-	* linux-thread-db.c (try_thread_db_load_from_pdir)
-	(has_libpthread): Use all_objfiles.
-	* ada-lang.c (add_nonlocal_symbols): Use all_objfiles.
-	* linespec.c (iterate_over_all_matching_symtabs)
-	(search_minsyms_for_name): Use all_objfiles.
-	* maint.c (maintenance_info_sections): Use all_objfiles.
-	* main.c (captured_main_1): Use all_objfiles.
-	* spu-tdep.c (spu_objfile_from_frame): Use all_objfiles.
-	* guile/scm-objfile.c (gdbscm_objfiles): Use all_objfiles.
-	* guile/scm-pretty-print.c
-	(ppscm_find_pretty_printer_from_objfiles): Use all_objfiles.
-	* solib-spu.c (append_ocl_sos): Use all_objfiles.
-	* symmisc.c (maintenance_print_symbols): Use all_objfiles.
-	(maintenance_print_msymbols): Use all_objfiles.
-	* source.c (select_source_symtab): Use all_objfiles.
-	* jit.c (jit_find_objf_with_entry_addr): Use all_objfiles.
-	* symfile.c (remove_symbol_file_command)
-	(expand_symtabs_matching, map_symbol_filenames): Use
-	all_objfiles.
-	* ppc-linux-tdep.c (ppc_linux_spe_context_inferior_created): Use
-	all_objfiles.
-	* dwarf2-frame.c (dwarf2_frame_find_fde): Use all_objfiles.
-	* objc-lang.c (find_methods): Use all_objfiles.
-	* objfiles.c (have_partial_symbols, have_full_symbols)
-	(have_minimal_symbols, qsort_cmp)
-	(default_iterate_over_objfiles_in_search_order): Use
-	all_objfiles.
-	* hppa-tdep.c (find_unwind_entry): Use all_objfiles.
-	* psymtab.c (maintenance_print_psymbols): Use all_objfiles.
-	(maintenance_check_psymtabs): Use all_objfiles.
-	(ALL_PSYMTABS): Remove.
-	* compile/compile-object-run.c (do_module_cleanup): Use
-	all_objfiles.
-	* blockframe.c (find_pc_partial_function): Use all_objfiles.
-	* cp-support.c (add_symbol_overload_list_qualified): Use
-	all_objfiles.
-	* windows-tdep.c (windows_iterate_over_objfiles_in_search_order):
-	Use all_objfiles.
-	* dwarf-index-write.c (save_gdb_index_command): Use all_objfiles.
-	* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): Use
-	all_objfiles.
-	* python/py-objfile.c (objfpy_lookup_objfile_by_name)
-	(objfpy_lookup_objfile_by_build_id): Use all_objfiles.
-	* python/py-prettyprint.c (find_pretty_printer_from_objfiles):
-	Uses all_objfiles.
-	* solib.c (solib_read_symbols): Use all_objfiles
-
-2019-01-09  Tom Tromey  <tom@tromey.com>
-
-	* probe.c (parse_probes_in_pspace): Use all_objfiles.
-	* guile/scm-progspace.c (gdbscm_progspace_objfiles): Use
-	all_objfiles.
-	* objfiles.h (ALL_PSPACE_OBJFILES): Remove.
-	* symmisc.c (print_symbol_bcache_statistics)
-	(print_objfile_statistics, maintenance_print_objfiles)
-	(maintenance_info_symtabs, maintenance_check_symtabs)
-	(maintenance_expand_symtabs, maintenance_info_line_tables): Use
-	all_objfiles.
-	* source.c (forget_cached_source_info): Use all_objfiles.
-	* symfile-debug.c (set_debug_symfile): Use all_objfiles.
-	* elfread.c (elf_gnu_ifunc_resolve_by_cache)
-	(elf_gnu_ifunc_resolve_by_got): Use all_objfiles.
-	* objfiles.c (update_section_map): Use all_objfiles.
-	(shared_objfile_contains_address_p): Likewise.
-	* psymtab.c (maintenance_info_psymtabs): Use all_objfiles.
-	* python/py-progspace.c (pspy_get_objfiles): Use all_objfiles.
-
-2019-01-09  Tom Tromey  <tom@tromey.com>
-
-	* common/next-iterator.h: New file.
-	* objfiles.h (class all_objfiles): New.
-	(struct objfile_iterator): New.
-
-2019-01-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* NEWS: Move the description of the changed "frame", "select-frame",
-	 and "info frame" commands to the Changed commands section.
-
-2019-01-09  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* gdbtypes.c (check_stub_method_group): Remove handling of old
-	mangling schemes.
-	* linespec.c (find_methods): Likewise.
-	* stabsread.c (read_member_functions): Likewise.
-	* valops.c (search_struct_method): Likewise.
-	(value_struct_elt_for_reference): Likewise.
-	* NEWS: Mention this change.
-
-2019-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* cli/cli-cmds.c (list_command): Pass a source_lines_range to
-	print_source_lines.
-	* source.c (print_source_lines_base): Update line number check.
-	(print_source_lines): New function.
-	(source_lines_range::source_lines_range): New function.
-	* source.h (class source_lines_range): New class.
-	(print_source_lines): New declaration.
-
-2019-01-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* linespec.c (linespec_state_destructor): Free self->canonical_names.
-
-2019-01-08  Tom Tromey  <tom@tromey.com>
-	    Simon Marchi  <simon.marchi@ericsson.com>
-
-	PR gdb/24060
-	* ada-exp.y (DOLLAR_VARIABLE): Rename from SPECIAL_VARIABLE.
-	* ada-lex.l (DOLLAR_VARIABLE): Likewise.
-	* c-exp.y (DOLLAR_VARIABLE): Rename from VARIABLE.
-	* f-exp.y (DOLLAR_VARIABLE): Likewise.
-	* m2-exp.y (DOLLAR_VARIABLE): Rename from INTERNAL_VAR.
-	* p-exp.y (DOLLAR_VARIABLE): Rename from VARIABLE.
-
-2019-01-08  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* source.c (select_source_symtab): Move header comment to
-	declaration in source.h.
-	(forget_cached_source_info_for_objfile): Likewise.
-	(forget_cached_source_info): Likewise.
-	(identify_source_line): Likewise.
-	* source.h (identify_source_line): Move declaration from symtab.h
-	and add comment from source.c
-	(print_source_lines): Likewise.
-	(forget_cached_source_info_for_objfile): Likewise.
-	(forget_cached_source_info): Likewise.
-	(select_source_symtab): Likewise.
-	(enum print_source_lines_flag): Move definition from symtab.h.
-	* symtab.h (identify_source_line): Move declaration to source.h.
-	(print_source_lines): Likewise.
-	(forget_cached_source_info_for_objfile): Likewise.
-	(forget_cached_source_info): Likewise.
-	(select_source_symtab): Likewise.
-	(enum print_source_lines_flag): Move definition to source.h.
-	* tui/tui-hooks.c: Add 'source.h' include.
-
-2019-01-08  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* source.c (print_source_lines_base): Handle requests to print
-	reverse line number sequences, and guard against empty lines
-	string.
-
-2019-01-08  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* source.c (print_source_lines_base): Fix skip of '\r' if next
-	character is '\n'.
-
-2019-01-06  Tom Tromey  <tom@tromey.com>
-
-	* c-exp.y (struct c_parse_state) <macro_original_text,
-	expansion_obstack>: New member.
-	(macro_original_text, expansion_obstack): Remove globals.
-	(scan_macro_expansion, scanning_macro_expansion)
-	(finished_macro_expansion): Update.
-	(scan_macro_cleanup): Remove.
-	(yylex, c_parse): Update.
-
-2019-01-06  Tom Tromey  <tom@tromey.com>
-
-	* c-exp.y (struct c_parse_state) <strings>: New member.
-	(operator_stoken): Update.
-
-2019-01-06  Tom Tromey  <tom@tromey.com>
-
-	* parser-defs.h (type_ptr): Remove typedef.  Don't declare VEC.
-	(union type_stack_elt) <typelist_val>: Now a pointer to
-	std::vector.
-	(type_stack_cleanup): Don't declare.
-	(push_typelist): Update.
-	* parse.c (pop_typelist): Return a std::vector.
-	(push_typelist): Take a std::vector.
-	(follow_types): Update.  Do not free args.
-	(type_stack_cleanup): Remove.
-	* c-exp.y (struct c_parse_state): New.
-	(cpstate): New global.
-	(type_aggregate_p, exp, ptr_operator, parameter_typelist)
-	(nonempty_typelist): Update.
-	(func_mod): Create a new vector.
-	(c_parse): Create a c_parse_state.
-	(check_parameter_typelist): Do not delete params.
-	(function_method): Update.  Do not delete type_list.
-
-2019-01-06  Tom Tromey  <tom@tromey.com>
-
-	PR gdb/28155:
-	* python/py-finishbreakpoint.c (bpfinishpy_init): Use
-	check_typedef.
-	* infcmd.c (finish_command_fsm_should_stop): Use check_typedef.
-	(print_return_value): Likewise.
-
-2019-01-05  Tom Tromey  <tom@tromey.com>
-
-	* contrib/cleanup_check.py: Remove.
-	* contrib/gcc-with-excheck: Remove.
-	* contrib/exsummary.py: Remove.
-	* contrib/excheck.py: Remove.
-
-2019-01-05  Joel Brobecker  <brobecker@adacore.com>
-
-	* thread.c (delete_thread_1): Add gdb_assert that THR is not
-	NULL. Initialize tpprev to NULL instead of assigning it
-	to NULL on the next statement.
-	* windows-nat.c (windows_delete_thread): Remove check for
-	main_thread_id before printing thread exit notifications.
-	(get_windows_debug_event) <EXIT_THREAD_DEBUG_EVENT>:
-	Remove thread ID check against main_thread_id.
-	<CREATE_PROCESS_DEBUG_EVENT>: Remove call to
-	windows_delete_thread.
-	<EXIT_PROCESS_DEBUG_EVENT>: Add call to windows_delete_thread.
-
-2019-01-04  Tom Tromey  <tom@tromey.com>
-
-	* compile/compile.c (_initialize_compile): Use upper case for
-	metasyntactic variables.
-	* symmisc.c (_initialize_symmisc): Use upper case for
-	metasyntactic variables.
-	* psymtab.c (_initialize_psymtab): Use upper case for
-	metasyntactic variables.
-	* demangle.c (demangle_command): Use upper case for metasyntactic
-	variables.
-	(_initialize_demangler): Likewise.
-	* ax-gdb.c (_initialize_ax_gdb): Use upper case for metasyntactic
-	variables.
+	* MAINTAINERS (Write After Approval): Add myself.
 
-2019-01-03  Tom Tromey  <tom@tromey.com>
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	* tui/tui-source.c (tui_set_source_content): Use xstrdup.
+	* gdbarch.sh: Update copyright year range of generated files.
 
-2019-01-03  Tom Tromey  <tom@tromey.com>
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	* python/py-symtab.c (salpy_str): Update.
-	(struct salpy_sal_object) <symtab>: Now a PyObject.
-	(salpy_dealloc): Update.
-	(del_objfile_sal): Use gdbpy_ref.
-
-2019-01-03  Tom Tromey  <tom@tromey.com>
-
-	* python/py-type.c (convert_field): Use new_reference.  Return
-	gdbpy_ref.
-	(make_fielditem): Return gdbpy_ref.
-	(typy_fields): Update.
-	(typy_getitem): Update.
-	(field_name): Return gdbpy_ref.  Use new_reference.
-	(typy_iterator_iternext): Update.
-
-2019-01-03  Tom Tromey  <tom@tromey.com>
-
-	* python/py-record.c (gdbpy_stop_recording): Use Py_RETURN_NONE.
-
-2019-01-03  Tom Tromey  <tom@tromey.com>
-
-	* python/py-value.c (valpy_dealloc): Use Py_XDECREF.
-	* python/py-type.c (typy_fields_items): Use gdbpy_ref.
-	* python/py-progspace.c (pspy_set_printers): Use gdbpy_ref.
-	(pspy_set_frame_filters, pspy_set_frame_unwinders)
-	(pspy_set_type_printers): Likewise.
-	* python/py-function.c (fnpy_init): Use gdbpy_ref.
-	* python/py-cmd.c (cmdpy_init): Use gdbpy_ref.
-	* python/py-objfile.c (objfpy_set_printers): Use gdbpy_ref.
-	(objfpy_set_frame_filters, objfpy_set_frame_unwinders)
-	(objfpy_set_type_printers): Likewise.
-
-2019-01-03  Tom Tromey  <tom@tromey.com>
-
-	* python/python.c (gdbpy_enter, ~gdbpy_enter): Update.
-	(gdbpy_print_stack): Use gdbpy_err_fetch.
-	* python/python-internal.h (class gdbpy_err_fetch): New class.
-	(class gdbpy_enter) <m_error_type, m_error_value,
-	m_error_traceback>: Remove.
-	<m_error>: New member.
-	(gdbpy_exception_to_string): Don't declare.
-	* python/py-varobj.c (py_varobj_iter_next): Use gdbpy_err_fetch.
-	* python/py-value.c (convert_value_from_python): Use
-	gdbpy_err_fetch.
-	* python/py-utils.c (gdbpy_err_fetch::to_string): Rename from
-	gdbpy_exception_to_string.
-	(gdbpy_handle_exception): Use gdbpy_err_fetch.
-	* python/py-prettyprint.c (print_stack_unless_memory_error): Use
-	gdbpy_err_fetch.
-
-2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* linux-nat.c (delete_lwp_cleanup): Delete.
-	(struct lwp_deleter): New struct.
-	(lwp_info_up): New typedef.
-	(linux_nat_target::follow_fork): Delete cleanup, and make use of
-	lwp_info_up.
-
-2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* linux-fork.c (class scoped_switch_fork_info): New class.
-	(inferior_call_waitpid): Update to use scoped_switch_fork_info.
-
-2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* valops.c (find_overload_match): Remove use of null_cleanup, and
-	calls to do_cleanups.
-
-2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* compile/compile-cplus-types.c
-	(compile_cplus_instance::decl_name): Handle changes to
-	cp_func_name.
-	* cp-support.c (cp_func_name): Update header comment, update
-	return type.
-	* cp-support.h (cp_func_name): Update return type in declaration.
-	* valops.c (find_overload_match): Move temp_func local to top
-	level of function and change its type.  Use temp_func to hold and
-	delete temporary string obtained from cp_func_name.
-
-2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* remote.c (remote_target::remote_check_symbols): Convert `msg` to
-	gdb::char_vector, remove cleanup, and update uses of `msg`.
-
-2019-01-03  Jim Wilson  <jimw@sifive.com>
-
-	* riscv-tdep.c (riscv_freg_feature): Drop s0 name from f8.
-
-2019-01-02  Tom Tromey  <tom@tromey.com>
-
-	* xml-tdesc.c (xml_cache): Hold a target_desc_up.
-	(tdesc_parse_xml): Remove cleanups.
-	* target-descriptions.h (make_cleanup_free_target_description):
-	Don't declare.
-	(target_desc_deleter): New struct.
-	(target_desc_up): New typedef.
-	* target-descriptions.c (target_desc_deleter::operator()): Rename
-	from free_target_description.
-	(make_cleanup_free_target_description): Remove.
-
-2019-01-02  Tom Tromey  <tom@tromey.com>
-
-	* linespec.c (struct linespec_parser): Rename from ls_parser.  Add
-	constructor, destructor.
-	(linespec_parser): Remove typedef.
-	(~linespec_parser): Rename from linespec_parser_delete.
-	(linespec_lex_to_end, linespec_complete_label)
-	(linespec_complete): Update.
-	(decode_line_full): Remove cleanups.
-	(decode_line_1): Update.
-
-2019-01-02  Tom Tromey  <tom@tromey.com>
-
-	* python/python-internal.h (inferior_to_inferior_object): Change
-	return type.
-	* python/py-exitedevent.c (create_exited_event_object): Update.
-	* python/py-inferior.c (inferior_to_inferior_object): Return
-	gdbpy_ref.
-	(python_new_inferior, python_inferior_deleted)
-	(thread_to_thread_object, delete_thread_object)
-	(build_inferior_list, gdbpy_selected_inferior): Update.
-	* python/py-infthread.c (create_thread_object): Update.  Also fail
-	if inferior_to_inferior_object fails.
-
-2019-01-02  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* inferior.h (class inferior) <displaced_step_state>: New field.
-	* infrun.h (struct displaced_step_state): Move here from
-	infrun.c.  Initialize fields, add constructor.
-	<inf>: Remove field.
-	<reset>: New method.
-	* infrun.c (struct displaced_step_inferior_state): Move to
-	infrun.h.
-	(displaced_step_inferior_states): Remove.
-	(get_displaced_stepping_state): Adust.
-	(displaced_step_in_progress_any_inferior): Adjust.
-	(displaced_step_in_progress_thread): Adjust.
-	(displaced_step_in_progress): Adjust.
-	(add_displaced_stepping_state): Remove.
-	(get_displaced_step_closure_by_addr): Adjust.
-	(remove_displaced_stepping_state): Remove.
-	(infrun_inferior_exit): Call displaced_step_state.reset.
-	(use_displaced_stepping): Don't check for NULL.
-	(displaced_step_prepare_throw): Call
-	get_displaced_stepping_state.
-	(displaced_step_fixup): Don't check for NULL.
-	(prepare_for_detach): Don't check for NULL.
-
-2019-01-02  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* infcall.c (call_function_by_hand_dummy): cleanup/destroy sm
-	 in case of call that did not complete.
-
-2019-01-02  Andrey Utkin  <autkin@undo.io>
-
-	* symfile.c (find_separate_debug_file): Fix search of debug files for
-	remote debuggee.
-
-2019-01-02  Tom Tromey  <tom@tromey.com>
-
-	* python/py-inferior.c (gdbpy_initialize_inferior): Fix
-	indentation.
-	* python/py-frame.c (frapy_older): Remove cast.
-	(frapy_newer): Likewise.
-	* python/py-breakpoint.c (local_setattro): Remove cast.
-	* python/py-arch.c (archpy_name): Remove local variable.
-	* python/py-type.c (gdbpy_lookup_type): Remove cast.
+	Update copyright year range in all GDB files.
 
-2019-01-02  Joel Brobecker  <brobecker@adacore.com>
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	* unittests/basic_string_view/element_access/char/empty.cc:
-	Fix year range in copyright header.
+	* copyright.py: Convert to Python 3.
 
-2019-01-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	* arch/riscv.h (struct riscv_gdbarch_features) <hw_float_abi>:
-	Delete.
-	<operator==>: Update with for removed field.
-	<hash>: Likewise.
-	* riscv-tdep.h (struct gdbarch_tdep) <features>: Renamed to...
-	<isa_features>: ...this.
-	<abi_features>: New field.
-	(riscv_isa_flen): Update comment.
-	(riscv_abi_xlen): New declaration.
-	(riscv_abi_flen): New declaration.
-	* riscv-tdep.c (riscv_isa_xlen): Update to get answer from
-	isa_features.
-	(riscv_abi_xlen): New function.
-	(riscv_isa_flen): Update to get answer from isa_features.
-	(riscv_abi_flen): New function.
-	(riscv_has_fp_abi): Update to get answer from abi_features.
-	(riscv_call_info::riscv_call_info): Use abi xlen and flen, not isa
-	xlen and flen.
-	(riscv_call_info) <xlen, flen>: Update comment.
-	(riscv_call_arg_struct): Remove invalid assertions
-	(riscv_features_from_gdbarch_info): Update now hw_float_abi field
-	is removed.
-	(riscv_gdbarch_init): Gather isa features and abi features
-	separately, ensure both match on the gdbarch when reusing an old
-	gdbarch.  Relax an error check to allow 32-bit abi float to run on
-	a target with 64-bit float hardware.
-
-2019-01-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* source.c (search_command_helper): Stop reverse search
-	when line 1 has been searched.
-
-2019-01-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* record-full.c (record_full_base_target::close): Rewrite
-	record_full_core_buf_list free logic.
-
-2019-01-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* break-catch-syscall.c (print_one_catch_syscall): xfree
-	the last text.
+	* copyright.py: Adapt after move of gnulib directory from gdb
+	directory to toplevel directory.
 
-2019-01-01  Joel Brobecker  <brobecker@adacore.com>
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	* top.c (print_gdb_version): Update Copyright year in version
-	message.
+	* copyright.py (main): Exit if run from the wrong directory.
 
-2019-01-01  Joel Brobecker  <brobecker@adacore.com>
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	Update copyright year range in all GDB files.
+	* top.c (print_gdb_version): Change copyright year to 2020.
 
-2019-01-01, 19  Joel Brobecker  <brobecker@adacore.com>
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
 
-	* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2018.
+	* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2019.
 
-For older changes see ChangeLog-2018.
+For older changes see ChangeLog-2019.
 
 Local Variables:
 mode: change-log
@@ -16597,4 +13006,3 @@ fill-column: 74
 version-control: never
 coding: utf-8
 End:
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1992 ./gdb/ChangeLog-1992
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1992	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-1992	2021-05-21 01:57:24.000000000 +0000
@@ -427,11 +427,6 @@ Thu Dec 17 00:44:57 1992  John Gilmore
 	* symfile.c (syms_from_objfile):  Insert debugging check to test
 	NAMES_HAVE_UNDERSCORE setting against the BFD support.
 
-	* doc/gdbint.texinfo (Host Conditionals):  Remove
-	NAMES_HAVE_UNDERSCORE, SOME_NAMES_HAVE_DOT, document
-	MEM_FNS_DECLARED.
-	(Target Conditionals):  Remove all of the above.
-
 	* xm-rs6000.h (MEM_FNS_DECLARED):  Update comments.
 
 	* coffread.c (read_coff_symtab, C_BLOCK):  Use complain() rather
@@ -487,9 +482,6 @@ Tue Dec 15 02:01:00 1992  John Gilmore
 	* main.c (main):  Accept --silent as well as --quiet.  Change +help
 	to --help.  Suggested by Karl Berry, <karl@cs.umb.edu>.
 
-	* doc/gdbint.texinfo:  SWAP_HOST_AND_TARGET => SWAP_TARGET_AND_HOST.
-	Noticed by Andy Jackson, <arj@cam-orl.co.uk>.
-
 Mon Dec 14 23:28:15 1992  John Gilmore  (gnu@cygnus.com)
 
 	* tm-nindy960.h, remote-nindy.c:  Lint.
@@ -1134,7 +1126,6 @@ Tue Oct 27 17:08:45 1992  K. Richard Pix
 	* defs.h: include nm.h.
 	* coredep.c, infptrace.c, procfs.c, rs6000-nat.c, sparc-nat.c,
 	  sparc-tdep.c, : do not include nm.h.
-	* doc/gdbint.texinfo: nm.h now included in defs.h.
 
 Fri Oct 23 04:47:17 1992  Stu Grossman  (grossman at cygnus.com)
 
@@ -1202,7 +1193,6 @@ Wed Oct 21 17:46:07 1992  K. Richard Pix
 Wed Oct 21 03:51:01 1992  John Gilmore  (gnu@cygnus.com)
 
 	* coredep.c:  Include "nm.h" to get REGISTER_U_ADDR.
-	* doc/gdbint.texinfo:  Improve REGISTER_U_ADDR and USE_PROC_FS doc.
 
 	* Makefile.in (VERSION):  Tick to 4.6.9.
 
@@ -1216,9 +1206,6 @@ Tue Oct 20 23:27:56 1992  John Gilmore
 	(initialize_symmisc):  Remove empty function.
 	* tm-spc-noun.h, tm-sun4os4.h, tm-sun4sol2.h (STACK_END_ADDRESS):
 	Remove obsolete, misspelled macro.
-	* doc/gdbint.texinfo:  Document obsolete STACK_END_ADDR.
-	(all @node commands):  Use new form to avoid nitpicking errors.
-	* doc/gdbint.texinfo:  Document host/native/target split.
 	                                                                   
 Wed Oct 21 00:14:34 1992  Stu Grossman  (grossman at cygnus.com)
 
@@ -1251,8 +1238,6 @@ Tue Oct 20 21:32:18 1992  K. Richard Pix
 	* hppa[bh]h-tdep.c: do not include ptrace.h.
 	* Makefile.in (HFILES): added nm-hppa[bh].h.
 
-	* doc/gdbint.texinfo: add PUSH_DUMMY_FRAME, POP_FRAME.
-
 Tue Oct 20 00:01:46 1992  Stu Grossman  (grossman at cygnus.com)
 
 	* mips-nat.c:  Straighten out include files.  Work around
@@ -1402,7 +1387,6 @@ Fri Oct 16 03:34:01 1992  John Gilmore
 
 	Avoid longjmp()-catching compilation errors in cross-ports.
 
-	* doc/gdbint.texinfo:  Update GET_LONGJMP_TARGET, L_SET doc.
 	* irix4-nat.c, mips-nat.c (JB_ELEMENT_SIZE, get_longjmp_target):
 	Move from mips-tdep.c and tm-{irix3,mips}.h.
 	* mips-nat.c:  Remove a bunch of code that was ifdef'd out of
@@ -1617,9 +1601,6 @@ Thu Oct  8 16:27:45 1992  K. Richard Pix
 	* config/sun4os4.mh (XDEPFILES): fork-child.o removed.
 	(NATDEPFILES): added fork-child.o.
 
-	* doc/gdbint.texinfo: document a few more macros, create new
-	  section for native macros.
-
 Thu Oct  8 13:52:46 1992  Stu Grossman  (grossman at cygnus.com)
 
 	* Makefile.in alldeps.mak depend:  Rip out 29k/udi pending
@@ -1832,7 +1813,6 @@ Thu Oct  1 01:57:56 1992  John Gilmore
 	(define_command):  If defining a new hook, check the command it
 	is hooking, and warn if none.  Install the hook.
 	* source.c (_initialize_source):  "l" is an abbrev for "list".
-	* doc/gdb.texinfo:  Document command hooks.
 
 	* Makefile.in (VERSION):  Roll to 4.6.7.
 	* config/sun4os4.mh:  Remove dup inftarg.o from NATDEPFILES.
@@ -2287,19 +2267,6 @@ Mon Sep 14 19:20:43 1992  Stu Grossman
 	(energize_call_command):  Call send_location() after doing up,
 	down, and frame commands.
 
-Fri Sep 11 18:28:28 1992  Roland H. Pesch  (pesch@fowanton.cygnus.com)
-
-	* doc/gdb.texinfo, doc/gdbinv-m.m4.in, doc/gdbinv-s.m4.in: first
-	pass at doc for two new remote targets---29K using UDI, and Tandem
-	ST2000 using STDBUG.
-
-	* doc/all.m4, doc/none.m4: new m4 switch, _ST2000__
-
-	* doc/all.m4: turn on H8/300 stuff for generic manual
-
-	* doc/gdbinv-s.m4.in: remove text on special procedures to continue 
-	after explicit call to breakpoint() in serial stubs.
-
 Fri Sep 11 01:34:25 1992  John Gilmore  (gnu@sphagnum.cygnus.com)
 
 	* mipsread.c:  Clean up some white space.
@@ -2366,15 +2333,6 @@ Tue Sep  8 15:22:06 1992  Stu Grossman
 	* serial.h:  Define struct ttystate properly using HAVE_TERMIO.
 	* xm-apollo68b.h:  #define PTRACE_IN_WRONG_PLACE...
 
-Fri Sep  4 18:53:57 1992  Roland H. Pesch  (pesch@fowanton.cygnus.com)
-
-	* doc/gdb.texinfo: fix shameful error of agreement reported by
-	jimb@occs.cs.oberlin.edu (Jim Blandy)
-	* doc/gdb.texinfo: remove old partial discussion of remote serial
-	protocol (via serial debug stubs)
-	* doc/gdbinv-m.m4.in, doc/gdbinv-s.m4.in: new section discussing
-	use of serial debug stubs
-
 Fri Sep  4 00:34:30 1992  Per Bothner  (bothner@rtl.cygnus.com)
 
 	* symfile.h:  Declaration of set_demangling_style() moved
@@ -3605,7 +3563,6 @@ Fri Jun 19 10:28:05 1992  John Gilmore
 	* am29k-tdep.c (read_register_stack, write_register_stack):
 	Change RSTACK_HIGH_ADDR to rstack_high_address, a user-settable
 	variable.  Add `set' and `show' commands for it.
-	* doc/gdb.texinfo:  Document it.
 
 Thu Jun 18 19:35:22 1992  Fred Fish  (fnf@cygnus.com)
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1993 ./gdb/ChangeLog-1993
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1993	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-1993	2021-05-21 01:57:24.000000000 +0000
@@ -411,9 +411,9 @@ Mon Nov 22 23:42:59 1993  Steve Chamberl
 Mon Nov 22 11:03:45 1993  Fred Fish  (fnf@cygnus.com)
 
 	Merged changes from kev@spuds.geg.mot.com (Kevin A. Buettner):
-	* gdb/config/m88k/delta88.mh (NATDEPFILES): Added corelow.o and
+	* config/m88k/delta88.mh (NATDEPFILES): Added corelow.o and
 	coredep.o to this list.
-	* gdb/m88k-nat.c (m88k_register_u_addr):  Avoid error when passed
+	* m88k-nat.c (m88k_register_u_addr):  Avoid error when passed
 	the number for an M88110 extended register by just returning the
 	address of r0.
 
@@ -5222,7 +5222,7 @@ Mon May 10 19:38:34 1993  John Gilmore
 Mon May 10 16:03:03 1993  Jim Kingdon  (kingdon@cygnus.com)
 
         Patch from Jeffrey Law:
-        * gdb/config/pa/nm-hppab.h (PTRACE_ARG3_TYPE): Define as caddr_t.
+        * config/pa/nm-hppab.h (PTRACE_ARG3_TYPE): Define as caddr_t.
 
 Mon May 10 15:28:27 1993  Ian Lance Taylor  (ian@cygnus.com)
 
@@ -5274,8 +5274,8 @@ Thu May  6 20:55:35 1993  Fred Fish  (fn
 Thu May  6 15:47:45 1993  Stu Grossman  (grossman@cygnus.com)
 
 	* More patches from Jeffrey Law (law@cs.utah.edu).
-	* gdb/config/nm-hppab.h (PTRACE_ARG3_TYPE): Define as caddr_t.
-	* gdb/config/pa/tm-hppah.h (millicode_start, millicode_end):
+	* config/nm-hppab.h (PTRACE_ARG3_TYPE): Define as caddr_t.
+	* config/pa/tm-hppah.h (millicode_start, millicode_end):
 	Delete unnecessary declarations.
 
 Thu May  6 15:15:46 1993  Stu Grossman  (grossman@cygnus.com)
@@ -5290,25 +5290,25 @@ Thu May  6 10:03:41 1993  Jim Kingdon  (
 Wed May  5 15:16:33 1993  Stu Grossman  (grossman@cygnus.com)
 
         * Patches from Jeffrey Law <law@cs.utah.edu>.
-	* gdb/hppa-tdep.c: Declare frame_saved_pc.
+	* hppa-tdep.c: Declare frame_saved_pc.
 	(frameless_function_invocation): New function.
 	(frame_saved_pc, init_extra_frame_info): Use 
 	frameless_function_invocation.
-	* gdb/config/pa/tm-hppa.h (SAVED_PC_AFTER_CALL): Use saved_pc_after
+	* config/pa/tm-hppa.h (SAVED_PC_AFTER_CALL): Use saved_pc_after
 	call instead of just grabbing the value currently in %r2.
 	(FRAMELESS_FUNCTION_INVOCATION): Use frameless_function_invocation.
-	* gdb/config/pa/tm-hppah.h (SAVED_PC_AFTER_CALL): Delete private
+	* config/pa/tm-hppah.h (SAVED_PC_AFTER_CALL): Delete private
 	definition and use the common one in tm-hppa.h.
-	* gdb/hppa-tdep.c (frame_chain_valid): If "use_unwind" is true, then
+	* hppa-tdep.c (frame_chain_valid): If "use_unwind" is true, then
 	use unwind descriptors to determine if the frame chain is valid.
-	* gdb/hppa-tdep.c (find_dummy_frame_regs):  Rework so that
+	* hppa-tdep.c (find_dummy_frame_regs):  Rework so that
 	it does not assume %r4 is the frame pointer.
-	* gdb/hppa-pinsn.c (print_insn): Handle 'r' and 'R' for break, rsm,
+	* hppa-pinsn.c (print_insn): Handle 'r' and 'R' for break, rsm,
 	and ssm instructions.
-	* gdb/hppa-tdep.c (extract_5r_store, extract_5R_store): New
+	* hppa-tdep.c (extract_5r_store, extract_5R_store): New
 	helper functions for print_insn.
-	* gdb/hppa-tdep.c (gcc_p, hpux_cc_p): Delete unused functions.
-	* gdb/config/pa/tm-hppa.h (ABOUT_TO_RETURN): Handle a return
+	* hppa-tdep.c (gcc_p, hpux_cc_p): Delete unused functions.
+	* config/pa/tm-hppa.h (ABOUT_TO_RETURN): Handle a return
 	which nullifies the following instruction.
 
 Tue May  4 12:11:38 1993  Jim Kingdon  (kingdon@cygnus.com)
@@ -5490,8 +5490,6 @@ Thu Apr 29 00:03:59 1993  Fred Fish  (fn
 	to access the field.
 	* config/convex/xm-convex.h (LONG_LONG):  Replace with
 	CC_HAS_LONG_LONG.  Add define for PRINTF_HAS_LONG_LONG.
-	* doc/gdbint.texinfo (LONG_LONG):  Replace with CC_HAS_LONG_LONG.
-	Add PRINTF_HAS_LONG_LONG references.
 
 Wed Apr 28 06:11:38 1993  Jim Kingdon  (kingdon@cygnus.com)
 
@@ -5520,12 +5518,6 @@ Wed Apr 28 06:11:38 1993  Jim Kingdon  (
 
 	* config/sparc/xm-sun4os4.h [__STDC__]: Don't use MALLOC_INCOMPATIBLE.
 
-Wed Apr 28 11:39:18 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)
-
-	* doc/gdb.texinfo: make node "Shell Commands" unconditional;
-	describe `set demangle-style arm' (not cfront); 
-	mention can type `q' to discard output, when gdb pages
-
 Wed Apr 28 11:32:39 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)
 
 	* valops.c (search_struct_field): Fix gdb core dump with incomplete
@@ -5638,10 +5630,6 @@ Fri Apr 23 10:34:02 1993  Stu Grossman
 	prefix for func	name.  (FIX_CALL_DUMMY):  Move code into
 	hppah-tdep.c.
 
-	* testsuite/gdb.t16/gdbme.c, testsuite/gdb.t17/gdbme.c:  Add calls
-	to malloc() so that we can test GDB eval of dynamically created
-	arrays (like char strings in `print "foo"').
-
 Fri Apr 23 01:28:14 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)
 
 	* printcmd.c (print_address_symbolic): Search symtabs as well as the
@@ -6202,7 +6190,6 @@ Mon Mar 29 15:03:25 1993  Fred Fish  (fn
 	tm-a29k.h.
 	* config/a29k/a29k-udi.mt (MT_CFLAGS):  Remove TARGET_AM29K
 	define that does not appear anywhere else in the gdb source tree.
-	* doc/gdbinit.texinfo:  Document renaming of tm-29k.h to tm-a29k.h.
 
 Mon Mar 29 13:55:29 1993  Jim Kingdon  (kingdon@cygnus.com)
 
@@ -6753,11 +6740,6 @@ Tue Feb 23 18:58:11 1993  Mike Werner  (
 
 	* configure.in: added testsuite to configdirs.
 
-Tue Feb 23 11:46:11 1993  Mike Stump  (mrs@cygnus.com)
-
-	* doc/stabs.texi: The `this' pointer is now known by the name
-	`this' instead of `$t'.
-
 Tue Feb 23 11:21:33 1993  Fred Fish  (fnf@cygnus.com)
 
 	* dwarfread.c (read_tag_string_type):  Rewrite to allow forward
@@ -6788,13 +6770,13 @@ Mon Feb 22 15:21:54 1993  Ian Lance Tayl
 
 Mon Feb 22 07:54:03 1993  Mike Werner  (mtw@poseidon.cygnus.com)
 
-        * gdb/testsuite: made modifications to testcases, etc., to allow
+        * testsuite: made modifications to testcases, etc., to allow
         them to work properly  given the reorganization of deja-gnu and the
         relocation of the testcases from deja-gnu to a "tool" subdirectory.
 
 Sun Feb 21 10:55:55 1993  Mike Werner  (mtw@poseidon.cygnus.com)
 
-	* gdb/testsuite: Initial creation of gdb/testsuite.
+	* testsuite: Initial creation of gdb/testsuite.
 	Migrated dejagnu testcases and support files for testing nm to
 	gdb/testsuite from deja-gnu.  These files were moved "as is"
 	with no modifications.	This migration is part of a major overhaul
@@ -6961,8 +6943,6 @@ Wed Feb 10 23:42:37 1993  John Gilmore
 	* Makefile.in:  xcoffread.o is not built by default.
 	* xm-rs6000.h (IBM6000_HOST):  Remove.
 	* config/rs6000.mh (NATDEPFILES): xcoffread.o is native only.
-	* doc/gdbint.texinfo:  Eliminate IBM6000_HOST, document
-	IBM6000_TARGET.
 
 Wed Feb 10 18:31:20 1993  Stu Grossman  (grossman at cygnus.com)
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1995 ./gdb/ChangeLog-1995
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1995	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-1995	2021-05-21 01:57:24.000000000 +0000
@@ -1358,7 +1358,6 @@ Wed Sep 20 08:16:03 1995  steve chamberl
 
 	* defs.h (xmalloc, xrealloc): Delete, they're declared in libiberty.h.
 	(GETENV_PROVIDED, FCLOSE_PROVIDED): New.
-	* doc/gdbint.texinfo (GETENV_PROVIDED, FCLOSE_PROVIDED): Document.
 	* remote-sim.[ch] (sim_callback_write_stdout): New.
 
 Tue Sep 19 15:28:58 1995  Per Bothner  <bothner@kalessin.cygnus.com>
@@ -3531,8 +3530,6 @@ Fri Mar 24 15:45:42 1995  Stu Grossman
 	* remote-est.c:  Rewrite to use new monitor conventions.
 	* config/m68k/est.mt (TDEPFILES):  Add monitor.o.
 	* config/m68k/tm-est.h:  Set NUM_REGS to 18.
-	* testsuite/gdb.base/break.exp:  Lots of cleanups.  Use gdb_test
-	more thoroughly.
 
 Thu Mar 23 23:20:00 1995  Jeff Law  (law@snake.cs.utah.edu)
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1996 ./gdb/ChangeLog-1996
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1996	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-1996	2021-05-21 01:57:24.000000000 +0000
@@ -1133,11 +1133,9 @@ Wed Oct  2 22:07:16 1996  Fred Fish  <fn
 
 	* inferior.h (IN_SIGTRAMP): Pass pc to SIGTRAMP_START and
 	SIGTRAMP_END.
-	* config/i386/tm-i386os9k.h (SIGTRAMP_START, SIGTRAMP_END): 
+	* config/i386/tm-i386os9k.h (SIGTRAMP_START, SIGTRAMP_END):
 	Define with dummy pc arg.
 	* config/m68k/tm-nbsd.h: Ditto.
-	* doc/gdbint.texinfo: Document that SIGTRAMP_START and
-	SIGTRAMP_END are macros that take an single argument.
 
 Mon Sep 30 20:02:45 1996  Fred Fish  <fnf@cygnus.com>
 
@@ -2746,7 +2744,7 @@ Tue Jun 25 17:41:06 1996  Martin M. Hunt
 
 Tue Jun 25 23:14:07 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)
 
-	* gdb/gdbserver/Makefile.in (docdir): Removed.
+	* gdbserver/Makefile.in (docdir): Removed.
 
 Tue Jun 25 22:05:38 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)
 
@@ -2759,7 +2757,7 @@ Tue Jun 25 22:05:38 1996  Jason Molenda
 	(docdir): Removed.
 	* nlm/configure.in (AC_PREREQ): autoconf 2.5 or higher.
 	* nlm/configure: Rebuilt.
-        * gdb/gdbserver/Makefile.in (datadir): Set to $(prefix)/share.
+        * gdbserver/Makefile.in (datadir): Set to $(prefix)/share.
 
 Mon Jun 24 09:56:14 1996  Angela Marie Thomas (angela@cygnus.com)
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1998 ./gdb/ChangeLog-1998
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1998	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-1998	2021-05-21 01:57:24.000000000 +0000
@@ -3710,9 +3710,9 @@ Tue Dec  8 15:09:44 1998  Edith Epstein
         * config/m68k/nm-linux.h: New file.
         * config/m68k/tm-linux.h: New file.
         * config/m68k/xm-linux.h: New file.
-        * gdb/m68klinux-nat.c: New file.
+        * m68klinux-nat.c: New file.
         * gdbserver/low-linux.c: Add support for m68k-linux.
-        * gdb/config/m68k/tm-m68k.h (NUM_FREGS): New macro.
+        * config/m68k/tm-m68k.h (NUM_FREGS): New macro.
 
 1998-12-07  Jason Molenda  (jsm@bugshack.cygnus.com)
 
@@ -6002,7 +6002,7 @@ Mon Apr 20 15:35:03 1998  Philippe De Mu
 
 Mon Apr 20 15:32:21 1998   Mark Kettenis  <kettenis@phys.uva.nl>
 
-        * gdb/gdb_string.h (strdup): Declare only if not defined as a
+        * gdb_string.h (strdup): Declare only if not defined as a
         macro.
 
 Mon Apr 20 14:18:45 1998  J. Kean Johnston  <jkj@sco.com>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1999 ./gdb/ChangeLog-1999
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-1999	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-1999	2021-05-21 01:57:24.000000000 +0000
@@ -55,8 +55,6 @@ Wed Dec 29 17:41:11 1999  Andrew Cagney
 	* config/powerpc/solaris.mh: ditto.
 	* config/alpha/alpha-osf2.mh: ditto.
 	* config/alpha/alpha-osf3.mh: ditto.
-	* testsuite/gdb.base/callfuncs.exp: make "next" test match the
-	next source line, in case the "next" runs away.
 	* acconfig.h: remove obsolete def HAVE_MULTIPLE_PROC_FDS, 
 	add new def NEW_PROC_API
 	* config.in; ditto.
@@ -118,13 +116,11 @@ Fri Dec 17 20:45:21 1999  Andrew Cagney
 	varobjs was not decremented if the first one in the list was deleted.
 
 1999-12-16  Michael Snyder  <msnyder@cleaver.cygnus.com>
-	
+
 	* linux-thread.c: Remove printf-debugging code.
 	* lin-thread.c: ditto.
 	* config/alpha/nm-linux.h: protect with NM_LINUX_H.
-	* testsuite/gdb.threads/linux-dp.exp: Make test for "New Thread"
-	message more forgiving.  Ditto test for "info threads".
-	
+
 1999-12-16  Michael Snyder  <msnyder@cleaver.cygnus.com>
 
 	* lin-thread.c: new file.  Implements multi-thread debugging on
@@ -2102,7 +2098,6 @@ Thu Oct  7 17:20:01 1999  Andrew Cagney
 	identifiers beginning with `$' unless
 	SYMBOLS_CAN_START_WITH_DOLLAR is non-zero.
 	* config/pa/tm-hppa.h (SYMBOLS_CAN_START_WITH_DOLLAR): Define.
-	* doc/gdbint.texinfo (SYMBOLS_CAN_START_WITH_DOLLAR): Document.
 
 	Remove all traces of the BINOP_SCOPE operator.  It's never
  	generated, and not implemented.
@@ -4832,7 +4827,6 @@ Sun Aug  8 12:06:47 1999  Fred Fish  <fn
 	* dwarf2read.c (dwarf2_build_psymtabs_hard): Minor format tweak.
 	* symfile.c (syms_from_objfile): Ditto, and fix typo.
 	* top.c (init_main): Fix typo in comment (DEFULAT_PROMPT).
-	* doc/gdbint.texinfo (find_sym_fns): This replaces symfile_init.
 
 1999-08-08  James Ingham  <jingham@leda.cygnus.com>
 
@@ -8371,9 +8365,8 @@ Mon Feb 22 12:32:19 1999  Per Bothner  <
 	config/i386/nm-i386sco5.h, config/i386/tm-fbsd.h, config/i386/tm-i386.h
 	config/powerpc/nm-aix.h, config/powerpc/tm-macos.h
 	config/powerpc/tm-ppc-aix.h, config/powerpc/xm-aix.h
-	config/rs6000/tm-rs6000-aix4.h, testsuite/gdb.chill/tests1.ch
-	testsuite/gdb.chill/tests2.ch, testsuite/gdb.chill/tests2.exp:
-	Update FSF address in copyright notices.
+	config/rs6000/tm-rs6000-aix4.h: Update FSF address in copyright
+	notices.
 
 1999-02-18  Jason Molenda  (jsm@bugshack.cygnus.com)
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2000 ./gdb/ChangeLog-2000
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2000	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2000	2021-05-21 01:57:24.000000000 +0000
@@ -4521,7 +4521,7 @@ Mon May 22 11:46:01 2000  Andrew Cagney
 
 2000-05-17  Eli Zaretskii  <eliz@is.elta.co.il>
 
-	* gdb/config/djgpp/README: Fine-tune installation instructions
+	* config/djgpp/README: Fine-tune installation instructions
         based on user reports.
 
 Wed May 17 18:27:45 2000  Andrew Cagney  <cagney@b1.cygnus.com>
@@ -5787,8 +5787,6 @@ Fri Apr  7 13:33:43 2000  Andrew Cagney
 	1 bit for the flag.
 	* config/sparc/tm-sun4sol2.h: ditto.
 	(SOFTWARE_SINGLE_STEP, SOFTWARE_SINGLE_STEP_P): undefine.
-	* testsuite/gdb.threads/pthreads.exp (all_threads_running): Allow
-	for more than 15 thread increments.
 
 2000-04-06  Eli Zaretskii  <eliz@is.elta.co.il>
 
@@ -8121,14 +8119,12 @@ Thu Jan 13 23:34:17 EST 2000  Nicholas D
 	* config/i386/tm-i386sol2.h: ditto.
 	* config/sparc/tm-sun4sol2.h: ditto.
 	* config/i386/i386v42mp.mh: add uw-thread.o to NATDEPFILES.
-	* testsuite/gdb.threads/pthreads.exp: Try to link with -lthread
-	if -lpthread and -lpthreads fail.
 
 	* procfs.c: (PIDGET, TIDGET, MERGEPID): change default to no-op.
 	(proc_flags): combine flags that UnixWare splits into two locations.
 	(proc_modify_flag): add support for PR_KLC (kill on last close).
 	(proc_[un]set_kill_on_last_close): new functions.
-	
+
 2000-01-07  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>
 
 	* infrun.c (normal_stop): Print out thread id when we stop.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2001 ./gdb/ChangeLog-2001
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2001	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2001	2021-05-21 01:57:24.000000000 +0000
@@ -6607,20 +6607,16 @@ Thu May 10 16:26:47 2001  Andrew Cagney
 	* NEWS: Update.
 
 2001-04-17  Michael Snyder  <msnyder@redhat.com>
-	
+
 	* remote.c (remote_open_1): On opening the remote target, activate
 	the solib_create_inferior_hook, so that it can detect when the
 	target loads shared libraries.
 	(remote_async_open_1): Ditto.
 
 2001-04-17  Michael Snyder  <msnyder@redhat.com>
-	
+
 	* breakpoint.c (print_one_breakpoint): Handle 64-bit addresses.
 	* tracepoint.c (tracepoints_info): Handle 64-bit addresses.
-	* testsuite/gdb.trace/deltrace.exp: Allow for 64-bit addresses.
-	* testsuite/gdb.trace/infotrace.exp: Ditto.
-	* testsuite/gdb.trace/passcount.exp: Ditto.
-	* testsuite/gdb.trace/while-stepping.exp: Ditto.
 
 2001-04-17  Michael Snyder  <msnyder@redhat.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2002 ./gdb/ChangeLog-2002
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2002	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2002	2021-05-21 01:57:24.000000000 +0000
@@ -11,10 +11,6 @@
 	* objc-exp.y (parse_number): Cast sscanf arguments to proper type.
 	(yylex): Initialize c to avoid uninitialized warning.
 
-2002-12-29  Kazu Hirata  <kazu@cs.umass.edu>
-
-	* doc/fdl.texi: Revert the last change.
-
 2002-12-29  Mark Kettenis  <kettenis@gnu.org>
 
 	* tracepoint.c (ISATTY): Removed.
@@ -1725,7 +1721,7 @@
 
 2002-11-18  Adam Fedor  <fedor@gnu.org>
 
-	* gdb/parser-defs.h: (struct objc_class_str): New structure
+	* parser-defs.h: (struct objc_class_str): New structure
 	for parsing ObjC classes.
 
 2002-11-18  Andrew Cagney  <ac131313@redhat.com>
@@ -3622,14 +3618,12 @@ Wed Nov 13 19:51:05 2002  Andrew Cagney
 	(charset.o): Move.
 	* c-lang.c: #include "gdb_string.h"
 
-2002-09-20  Fernando Nasser  <fnasser@redhat.com>
+2002-09-20  George Helffrich  <george@gly.bris.ac.uk>
 
-	From 2002-07-02  George Helffrich <george@gly.bris.ac.uk>
 	* cli/cli-cmds.c (list_command): New function.  Implements the new
 	cli edit command.
 	(_init_cli_cmds): Add new command definition.
 	* gdb.1: Document edit command.
-	* doc/gdb.texinfo: Document edit command.
 
 2002-09-20  Fernando Nasser  <fnasser@redhat.com>
 
@@ -3910,7 +3904,7 @@ Wed Nov 13 19:51:05 2002  Andrew Cagney
 
 2002-09-17  Theodore A. Roth  <troth@verinet.com>
 
-	* gdb/avr-tdep.c(avr_scan_prologue): Fix bad call to 
+	* avr-tdep.c(avr_scan_prologue): Fix bad call to 
 	generic_read_register_dummy() (PR gdb/703).
 	(avr_push_return_address): #if 0 out unused vars.
 	(avr_gdbarch_init): Enable use of avr_push_return_address().
@@ -4227,7 +4221,7 @@ Fri Sep 13 07:42:09 2002  Andrew Cagney
 
 2002-09-03  Theodore A. Roth  <troth@verinet.com>
 
-	* gdb/avr-tdep.c (avr_gdbarch_init): Use
+	* avr-tdep.c (avr_gdbarch_init): Use
 	generic_unwind_get_saved_register.
 
 2002-09-03  David Carlton  <carlton@math.stanford.edu>
@@ -4418,10 +4412,7 @@ Fri Sep 13 07:42:09 2002  Andrew Cagney
 
 	* cli/cli-script.c (copy_command_lines): New function.
 	* defs.h (copy_command_lines): Export.
-	* testsuite/gdb.base/commands.exp: New tests for commands
-	attached to a temporary breakpoint, and for commands that
-	delete the breakpoint they are attached to.
-	
+
 2002-08-26  Michael Snyder  <msnyder@redhat.com>
 
 	* breakpoint.c (bpstat_stop_status): Instead of copying the 
@@ -9057,7 +9048,6 @@ Fri Aug  2 15:53:50 2002  Andrew Cagney
 	(osabi.o): New dependency list.
 	* osabi.c: New file.
 	* osabi.h: New file.
-	* doc/gdbint.texinfo: Document new generic OS ABI framework.
 
 	* Makefile.in (alpha_tdep_h): Define and use instead of
 	alpha-tdep.h.
@@ -12392,14 +12382,12 @@ Wed Apr 24 14:22:21 2002  Andrew Cagney
 	* MAINTAINERS: Change Past Maintainer addresses to ``foo at bar
 	dot com'' form.  Remove references to cygnus.com and sourceware.
 
-2002-02-23  Andrew Cagney  <ac131313@redhat.com>
+2002-02-23  Paul Eggert  <eggert@twinsun.com>
 
-	From 2002-02-19 Paul Eggert <eggert@twinsun.com>:
 	* Makefile.in (VER): Change "head -1" to "sed q", since POSIX
 	1003.1-2001 no longer allows "head -1".
-	* gdb/Makefile.in (version.c): Likewise.
-	* gdb/doc/Makefile.in (GDBvn.texi): Likewise.
-	* gdb/CONTRIBUTE: Change "diff -c3" to "diff -c", which is
+	* Makefile.in (version.c): Likewise.
+	* CONTRIBUTE: Change "diff -c3" to "diff -c", which is
 	equivalent.  POSIX 1003.1-2001 no longer allows "diff -c3".
 
 2002-02-23  Andrew Cagney  <ac131313@redhat.com>
@@ -13365,8 +13353,6 @@ Wed Apr 24 14:22:21 2002  Andrew Cagney
 	* arch-utils.c (default_print_float_info): New function.
 	* arch-utils.h (default_print_float_info): Prototype it.
 	* infcmd.c (float_info): Call PRINT_FLOAT_INFO.
-	* doc/gdbint.texinfo (FLOAT_INFO): Mark as deprecated.
-	(PRINT_FLOAT_INFO): Document it.
 
 	* arm-tdep.c (arm_print_float_info): Renamed from arm_float_info.
 	* config/arm/tm-arm.h (FLOAT_INFO): Delete.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2003 ./gdb/ChangeLog-2003
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2003	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2003	2021-05-21 01:57:24.000000000 +0000
@@ -2231,9 +2231,9 @@
 
 2003-10-17  Shrinivas Atre  <shrinivasa@KPITCummins.com>
 
-	* gdb/config/h8300/tm-h8300.h (h8300_normal_mode): Add external
+	* config/h8300/tm-h8300.h (h8300_normal_mode): Add external
 	declaration.
-	* gdb/h8300-tdep.c (BINWORD): Update BINWORD for h8300_normal_mode
+	* h8300-tdep.c (BINWORD): Update BINWORD for h8300_normal_mode
         (h8300_examine_prologue): Use h8300_normal_mode flag
         (h8300_gdbarch_init): Set architecture info for normal mode
 
@@ -7899,7 +7899,7 @@ Fri Aug  8 00:28:38 UTC 2003  Brendan Co
 
 2003-06-07  Adam Fedor  <fedor@gnu.org>
 
-	* gdb/objc-lang.c (FETCH_ARGUMENT): Remove macro.
+	* objc-lang.c (FETCH_ARGUMENT): Remove macro.
 	(OBJC_FETCH_POINTER_ARGUMENT): Shorthand macro for
 	using FETCH_POINTER_ARGUMENT with Objective-C method arguments.
 	(find_implementation, resolve_msgsend, resolve_msgsend_stret,
@@ -11239,7 +11239,7 @@ Fri Aug  8 00:28:38 UTC 2003  Brendan Co
 
 2003-04-01  Adam Fedor  <fedor@gnu.org>
 
-	* gdb/objc-lang.c (selectors_info): Replace calls to
+	* objc-lang.c (selectors_info): Replace calls to
 	SYMBOL_DEMANGLED_NAME and DEPRECATED_SYMBOL_NAME with
 	SYMBOL_NATURAL_NAME.
 	(classes_info, find_methods): Likewise.
@@ -14236,7 +14236,7 @@ Fri Aug  8 00:28:38 UTC 2003  Brendan Co
 
 	2002-04-02  Elena Zannoni  <ezannoni@redhat.com>
 
-		* gdb/sh-tdep.c (sh_sh2e_register_name): New.
+		* sh-tdep.c (sh_sh2e_register_name): New.
 		(sh2e_show_regs): New.
 		(sh_gdbarch_init): Handle bfd_mach_sh2e.
 		* config/sh/tm-sh.h: Added sh2e to comments.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2004 ./gdb/ChangeLog-2004
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2004	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2004	2021-05-21 01:57:24.000000000 +0000
@@ -1388,7 +1388,7 @@
 
 2004-11-03  Andrew Cagney  <cagney@gnu.org>
 
-	* gdb/NEWS: Mention internationalization, m32r-*-linux-gnu, 'p'
+	* NEWS: Mention internationalization, m32r-*-linux-gnu, 'p'
 	packet, obsolete configurations, end-of-life deprecated_registers.
 
 2004-11-02  Mark Kettenis  <kettenis@gnu.org>
@@ -4209,8 +4209,6 @@
 
 2004-08-11  Joel Brobecker  <brobecker@gnat.com>
 
-	* doc/gdbint.texinfo (Host Definition): Remove documentation
-	for USE_O_NOCTTY, no longer used.
 	* config/xm-aix4.h (USE_O_NOCTTY): Remove, no longer used.
 	* config/rs6000/xm-rs6000.h (USE_O_NOCTTY): Likewise.
 
@@ -6693,7 +6691,7 @@
 
 2004-06-06  Paul Brook  <paul@codesourcery.com>
 
-	* gdb/dwarf2-frame.c (decode_frame_entry_1): Decode version 3 CIE
+	* dwarf2-frame.c (decode_frame_entry_1): Decode version 3 CIE
 	records.
 
 2004-06-08  Paul N. Hilfinger  <Hilfinger@gnat.com>
@@ -6880,7 +6878,7 @@
 2004-06-02  Albert Chin-A-Young  <china@thewrittenword.com>
 
 	Committed by Andrew Cagney.
-	* gdb/dictionary.c, gdb/gdbtypes.h: Remove trailing comma
+	* dictionary.c, gdbtypes.h: Remove trailing comma
 	after last enum constant to avoid error from IBM C
 	compiler.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2005 ./gdb/ChangeLog-2005
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2005	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2005	2021-05-21 01:57:24.000000000 +0000
@@ -4905,7 +4905,6 @@
 
 2005-03-07  Joel Brobecker  <brobecker@adacore.com>
 
-	* doc/observer.texi (executable_changed): New observer.
 	* symtab.c: Include "observer.h".
 	(find_main_name): New function.
 	(main_name): If name_of_main is unset, then compute it
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2006 ./gdb/ChangeLog-2006
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2006	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2006	2021-05-21 01:57:24.000000000 +0000
@@ -2080,8 +2080,6 @@
 
 	* remote-file.io.c (remote_fileio_func_system): Treat zero length
 	string as NULL.  Adjust for NULL pointer argument.
-	* doc/gdb.texinfo (system): Document behaviour with zero length
-	string.
 
 2006-06-12  Daniel Jacobowitz  <dan@codesourcery.com>
 
@@ -2356,7 +2354,7 @@
 	(print_unpacked_pointer): New function.
 	(print_variable_at_address): New function.
 	(m2_val_print): Replaced.
-	* gdb/MAINTAINERS (Write After Approval): Added
+	* MAINTAINERS (Write After Approval): Added
 	Gaius Mulley  <gaius@glam.ac.uk>
 
 2006-05-12  Mark Kettenis  <kettenis@gnu.org>
@@ -3027,7 +3025,6 @@
 	* configure.tgt (i[34567]86-*-netware*): Do not set build_nlm.
 	* configure.ac: Remove AC_CONFIG_SUBDIRS of nlm.
 	* configure: Regenerate.
-	* doc/gdb.texinfo: Remove gdbserve.nlm documentation.
 	* nlm: Remove directory.
 
 2006-03-29  Daniel Jacobowitz  <dan@codesourcery.com>
@@ -3413,15 +3410,15 @@
 
 2006-02-24  Charles Wilson  <cygwin@cwilson.fastmail.fm>
 
-	* gdb/defs.h: unconditionally include <fcntl.h>, and
+	* defs.h: unconditionally include <fcntl.h>, and
 	ensure that O_BINARY is defined.
-	* gdb/solib.c(solib_open): ensure solib files are opened in
+	* solib.c(solib_open): ensure solib files are opened in
 	binary mode.
-	* gdb/corelow.c: Remove O_BINARY macro definition.
-	* gdb/exec.c: Remove O_BINARY macro definition
-	* gdb/remote-rdp.c: Remove O_BINARY macro definition
-	* gdb/source.c: Remove O_BINARY macro definition
-	* gdb/symfile.c: Remove O_BINARY macro definition
+	* corelow.c: Remove O_BINARY macro definition.
+	* exec.c: Remove O_BINARY macro definition
+	* remote-rdp.c: Remove O_BINARY macro definition
+	* source.c: Remove O_BINARY macro definition
+	* symfile.c: Remove O_BINARY macro definition
 
 2006-02-24  Randolph Chung  <tausq@debian.org>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2007 ./gdb/ChangeLog-2007
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2007	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2007	2021-05-21 01:57:24.000000000 +0000
@@ -2342,8 +2342,6 @@
 
 2007-10-16  Gaius Mulley  <gaius@glam.ac.uk>
 
-        * doc/gdb.texinfo:  Add TSIZE definition, removed
-	statement about unbounded arrays being unimplemented.
 	* m2-valprint.c (m2_print_array_contents):  New function.
 	(m2_print_unbounded_array):  New function.
 	(m2_print_array_contents):  New function.
@@ -8382,12 +8380,11 @@
 	varobj_update_one.
 	* mi/mi-cmds.c (mi_cmds): Register '-var-set-frozen'.
 	* mi/mi-cmds.h (mi_cmd_var_set_frozen): Declare.
-	
+
 2007-04-13  Paul Brook  <paul@codesourcery.com>
 
 	* target-descriptions.c (tdesc_named_type): Add ieee_single and
 	ieee_double.
-	* doc/gdb.texinfo: Document ieee_single and ieee_double target types.
 
 2007-04-13  Daniel Jacobowitz  <dan@codesourcery.com>
 
@@ -8486,7 +8483,6 @@
 
 	* configure.ac (build_warnings): Add -Wno-char-subscripts.
 	* configure: Regenerate.
-	* doc/gdbint.texinfo (warning flags): Add -Wno-char-subscripts.
 
 2007-04-11  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
@@ -9511,9 +9507,9 @@
 2007-02-08  Daniel Jacobowitz  <dan@codesourcery.com>
 
 	Reported by timeless@gmail.com:
-	* gdb/target.c (target_flash_erase): Do not return void value.
+	* target.c (target_flash_erase): Do not return void value.
 	(target_flash_done): Likewise.
-	* gdb/cli/cli-cmds.c (source_command): Likewise.
+	* cli/cli-cmds.c (source_command): Likewise.
 
 2007-02-08  Fred Fish  <fnf@specifix.com>
 
@@ -9665,7 +9661,7 @@
 
 2007-02-01  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
 
-	* gdb/remote-m32r.sdi.c (m32r_fetch_register): Change PWD mask.
+	* remote-m32r.sdi.c (m32r_fetch_register): Change PWD mask.
         (m32r_store_register): Ditto.
 
 2007-01-30  Vladimir Prus  <vladimir@codesourcery.com>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2008 ./gdb/ChangeLog-2008
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2008	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2008	2021-05-21 01:57:24.000000000 +0000
@@ -5663,7 +5663,7 @@
 2008-07-13  Vladimir Prus  <vladimir@codesourcery.com>
 
 	Allow all CLI command even if target is executing.
-	* gdb/top.c (execute_command_1): Don't check if the inferiour
+	* top.c (execute_command_1): Don't check if the inferiour
 	is running.
 
 2008-07-13  Vladimir Prus  <vladimir@codesourcery.com>
@@ -6881,7 +6881,7 @@
 2008-06-06  Paul Pluzhnikov  <ppluzhnikov@google.com>
 
 	PR gdb/1147
-	* gdb/valopts.c (find_overload_match): Handle references
+	* valopts.c (find_overload_match): Handle references
 	to pointers.
 
 2008-06-06  Paul N. Hilfinger  <hilfinger@adacore.com>
@@ -9874,7 +9874,6 @@
 2008-03-14  Vladimir Prus  <vladimir@codesourcery.com>
 
 	Implement MI notification for new threads.
-	* doc/observer.texi (new_thread): Document.
 	* observer.sh: Forward declare struct thread_info.
 	* thread.c (add_thread): Notify observer.
 
@@ -10739,9 +10738,9 @@
 2008-01-30  Vladimir Prus  <vladimir@codesourcery.com>
 
 	Use vector for varobj_list_children interface.
-	* gdb/varobj.c (varobj_list_children): Return vector
+	* varobj.c (varobj_list_children): Return vector
 	of varobjs.
-	* gdb/varobj.h (varobj_list_children): Adjust
+	* varobj.h (varobj_list_children): Adjust
 	prototype.
 	(varobj_p): Declare.  Declare vector thereof.
 	* mi/mi-cmd-var.c (mi_cmd_var_list_children): Adjust
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2009 ./gdb/ChangeLog-2009
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2009	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2009	2021-05-21 01:57:24.000000000 +0000
@@ -786,7 +786,7 @@
 2009-11-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	Fix wrong debug output with `set debug infrun 1'.
-	* gdb/infrun.c (handle_inferior_event <debug_infrun>): New variable
+	* infrun.c (handle_inferior_event <debug_infrun>): New variable
 	old_chain.  Temporarily switch INFERIOR_PTID.
 	* target.h (target_stopped_by_watchpoint): Extend the comment.
 	(target_stopped_data_address): New comment.
@@ -2672,10 +2672,6 @@
 	PR python/10666:
 	* python/py-function.c (fnpy_init): Use xstrdup.
 
-2009-09-21  Jie Zhang  <jie.zhang@analog.com>
-
-	* doc/gdb.texinfo: Escape "{" and "}".
-
 2009-09-21  Phil Muldoon <pmuldoon@redhat.com>
 
 	PR python/10633
@@ -3207,7 +3203,7 @@
 
 2009-09-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
-	* gdb/Makefile.in (check//%): Parse 'config.status --version'
+	* Makefile.in (check//%): Parse 'config.status --version'
 	output to recreate the configuration from the testsuite directory,
 	rather than running 'config.status --recheck' from a different
 	build directory.  Let configure do the recursion rather than
@@ -10853,8 +10849,8 @@
 
 	Fix completer problem for filename completion on the first try.
 
-	* gdb/completer.h (gdb_completion_word_break_characters): New function.
-	* gdb/completer.c: Include gdb_assert.h.
+	* completer.h (gdb_completion_word_break_characters): New function.
+	* completer.c: Include gdb_assert.h.
 	(complete_line_internal_reason): New enum.
 	(complete_line_internal): Change last argument type to
 	complete_line_internal_reason.
@@ -12995,7 +12991,7 @@
 
 2009-01-20  Kazu Hirata  <kazu@codesourcery.com>
 
-	* gdb/procfs.c (info_mappings_callback): Cast map->pr_size to
+	* procfs.c (info_mappings_callback): Cast map->pr_size to
 	unsigned long.
 
 2009-01-20  Daniel Jacobowitz  <dan@codesourcery.com>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2010 ./gdb/ChangeLog-2010
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2010	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2010	2021-05-21 01:57:24.000000000 +0000
@@ -1663,7 +1663,7 @@
 
 2010-10-03  Paul Hilfinger  <hilfinger@adacore.com>
 
-        * gdb/ada-typeprint.c (print_selected_record_field_types): New function,
+        * ada-typeprint.c (print_selected_record_field_types): New function,
         incorporating and generalizing print_record_field_types.
         (print_record_field_types): Change return value and update comment.
         Re-implement using print_selected_record_field_types.
@@ -2917,13 +2917,13 @@
 
 2010-08-11  Ken Werner  <ken.werner@de.ibm.com>
 
-	* gdb/valarith.c (vector_binop): New function.
+	* valarith.c (vector_binop): New function.
 	(scalar_binop): Likewise.
 	(value_binop): Call scalar_binop or vector_binop depending on the types.
-	* gdb/eval.c (ptrmath_type_p): Return 0 in case of TYPE_VECTOR.
+	* eval.c (ptrmath_type_p): Return 0 in case of TYPE_VECTOR.
 	(evaluate_subexp_with_coercion): Add vector check to not convert vectors
 	to pointers.
-	* gdb/value.c (coerce_array): Add vector check to not coerce vectors.
+	* value.c (coerce_array): Add vector check to not coerce vectors.
 
 2010-08-11  Brad Roberts  <braddr@puremagic.com>
 
@@ -6915,7 +6915,7 @@
 
 2010-04-21  Mike Frysinger  <vapier@gentoo.org>
 
-	* gdb/sparc-tdep.c (sparc32_store_return_value): Add gdb_assert ()
+	* sparc-tdep.c (sparc32_store_return_value): Add gdb_assert ()
 	for len <= 8.
 
 2010-04-21  Chris Moller  <cmoller@redhat.com>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2011 ./gdb/ChangeLog-2011
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2011	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2011	2021-05-21 01:57:24.000000000 +0000
@@ -2157,9 +2157,9 @@
 	symbol's symtab, use new argument OBJFILE.
 	* cp-support.h (cp_scan_for_anonymous_namespaces): Changed function
 	arguments by adding OBJFILE.
-	* gdb/dwarf2read.c (new_symbol_full): Change call to
+	* dwarf2read.c (new_symbol_full): Change call to
 	cp_scan_for_anonymous_namespaces to match new signature.
-	* gdb/stabsread.c (define_symbol): Change call to
+	* stabsread.c (define_symbol): Change call to
 	cp_scan_for_anonymous_namespaces to match new signature.
 
 2011-10-20  Phil Muldoon  <pmuldoon@redhat.com>
@@ -6464,7 +6464,7 @@
 
 2011-05-26  Yao Qi  <yao@codesourcery.com>
 
-	* gdb/gdb_thread_db.h: Remove HAVE_UINTPTR_T.
+	* gdb_thread_db.h: Remove HAVE_UINTPTR_T.
 
 2011-05-26  Tristan Gingold  <gingold@adacore.com>
 
@@ -9448,7 +9448,7 @@
 	(cleanup_block_load_pc, copy_block_xfer): Likewise.
 	* arm-linux-tdep.c (arm_linux_copy_svc): Callers update.
 	(arm_catch_kernel_helper_return): Likewise.
-	* gdb/arm-tdep.h : Update function declarations.
+	* arm-tdep.h : Update function declarations.
 
 2011-03-07  Michael Snyder  <msnyder@vmware.com>
 
@@ -9670,7 +9670,7 @@
 
 2011-03-03  Yao Qi  <yao@codesourcery.com>
 
-	* gdb/arm-tdep.c (shifted_reg_val): Replace magic number 15 with
+	* arm-tdep.c (shifted_reg_val): Replace magic number 15 with
 	ARM_PC_REGNUM.
 	(thumb_get_next_pc_raw, arm_get_next_pc_raw): Likewise.
 	(displaced_write_reg, displaced_read_reg): Likewise.
@@ -10303,12 +10303,12 @@
 
 2011-02-18  Yao Qi  <yao@codesourcery.com>
 
-	* gdb/arm-tdep.c (arm_displaced_step_copy_insn): Move code to ...
+	* arm-tdep.c (arm_displaced_step_copy_insn): Move code to ...
 	(arm_process_displaced_insn): .. here. Remove parameter INSN.
 	(thumb_process_displaced_insn): New.
-	* gdb/arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Update
+	* arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Update
 	call to arm_process_displaced_insn.
-	* gdb/arm-tdep.h : Update declaration of arm_process_displaced_insn.
+	* arm-tdep.h : Update declaration of arm_process_displaced_insn.
 
 2011-02-17  Tom Tromey  <tromey@redhat.com>
 
@@ -11267,8 +11267,8 @@
 2011-01-25  Mathieu Lacage  <mathieu.lacage@inria.fr>
 
 	PR/symtab 11766:
-	* gdb/objfiles.h (struct objfile) <addr_low>: New field.
-	* gdb/solib.c (solib_read_symbols): Check for addr_low in
+	* objfiles.h (struct objfile) <addr_low>: New field.
+	* solib.c (solib_read_symbols): Check for addr_low in
 	equality test for objfile, initialize addr_low if needed.
 
 2011-01-25  Pedro Alves  <pedro@codesourcery.com>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2012 ./gdb/ChangeLog-2012
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2012	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2012	2021-05-21 01:57:24.000000000 +0000
@@ -835,8 +835,6 @@
 	rather than sort() method.
 	Adjust syntax for Python 3 compatibility.
 	* python/lib/gdb/command/type_printers.py: Ditto.
-	* doc/gdb.texinfo (Inferior.read_memory): Mention that the return
-	value is a memoryview object if Python 3.
 
 2012-12-12  Tom Tromey  <tromey@redhat.com>
 
@@ -8703,7 +8701,7 @@
 	(GNULIB): New variable.
 	(GNULIB_STDINT_H): Adjust.
 	(AC_OUTPUT): Don't output gnulib/Makefile.
-	* gdb/defs.h: Include build-gnulib/config.h.
+	* defs.h: Include build-gnulib/config.h.
 	* aclocal.m4: Regenerate.
 	* config.in: Regenerate.
 	* configure: Regenerate.
@@ -13186,8 +13184,8 @@
 
 2012-01-02  Joel Brobecker  <brobecker@adacore.com>
 
-	* gdb/common/gdb_thread_db.h, gdb/dbxread.c, gdb/environ.c,
-	gdb/gcore.h, gdb/rs6000-tdep.h, gdb/s390-nat.c, gdb/tic6x-tdep.c:
+	* common/gdb_thread_db.h, dbxread.c, environ.c,
+	gcore.h, rs6000-tdep.h, s390-nat.c, tic6x-tdep.c:
 	Reformat the copyright header.
 
 2012-01-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2013 ./gdb/ChangeLog-2013
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2013	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2013	2021-05-21 01:57:24.000000000 +0000
@@ -6265,9 +6265,9 @@
 
 2013-06-21  Joel Brobecker  <brobecker@adacore.com>
 
-	* gdb/gnulib/Makefile.in: Update date in copyright header.
-	* gdb/gnulib/configure.ac: Ditto.
-	* gdb/gnulib/update-gnulib.sh: Ditto.
+	* gnulib/Makefile.in: Update date in copyright header.
+	* gnulib/configure.ac: Ditto.
+	* gnulib/update-gnulib.sh: Ditto.
 
 2013-06-21  Joel Brobecker  <brobecker@adacore.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2014 ./gdb/ChangeLog-2014
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2014	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2014	2021-05-21 01:57:24.000000000 +0000
@@ -934,8 +934,6 @@
 	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-infevents.o.
 	(SUBDIR_PYTHON_SRCS): Add py-infevents.c.
 	(py-infevents.o): New rule.
-	* doc/observer.texi (inferior_call_pre, inferior_call_post)
-	(memory_changed, register_changed): New observers.
 	* infcall.c (call_function_by_hand): Notify observer before and
 	after inferior call.
 	* python/py-event.h (inferior_call_kind): New enum.
@@ -1210,7 +1208,7 @@
 2014-11-24  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
 	Pushed by Joel Brobecker  <brobecker@adacore.com>
-	* gdb/gnu-nat.c (inf_validate_procinfo): Multiply the number of
+	* gnu-nat.c (inf_validate_procinfo): Multiply the number of
 	elements pi_len by the size of the elements before calling
 	vm_deallocate.
 	(inf_validate_task_sc): Likewise, and properly deallocate the
@@ -2640,7 +2638,7 @@
 
 2014-10-15  Andreas Arnez  <arnez@linux.vnet.ibm.com>
 
-	* gdb/infrun.c (process_event_stop_test): Apply
+	* infrun.c (process_event_stop_test): Apply
 	gdbarch_addr_bits_remove to longjmp resume address.
 
 2014-10-15  Pedro Alves  <palves@redhat.com>
@@ -6241,7 +6239,6 @@
 	microblaze-with-stack-protect microblaze and microblaze-expedite.
 	* regformats/microblaze-with-stack-protect.dat: New file.
 	* regformats/microblaze.dat: New file.
-	* doc/gdb.texinfo (MicroBlaze Features): Added.
 
 2014-07-18  Tom Tromey  <tromey@redhat.com>
 
@@ -6947,7 +6944,7 @@
 	* nat/mips-linux-watch.h: Likewise.
 	* Makefile.in (HFILES_NO_SRCDIR): Reflect new locations.
 	(object file files): Reordered.
-	* gdb/copyright.py (EXCLUDE_LIST): Reflect new location
+	* copyright.py (EXCLUDE_LIST): Reflect new location
 	of glibc_thread_db.h.
 
 2014-06-20  Gary Benson  <gbenson@redhat.com>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2015 ./gdb/ChangeLog-2015
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2015	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2015	2021-05-21 01:57:24.000000000 +0000
@@ -340,12 +340,12 @@
 
 2015-12-09  Luis Machado  <lgustavo@codesourcery.com>
 
-	* gdb/mi/mi-cmd-var.c (mi_parse_format): Handle new "zero-hexadecimal"
+	* mi/mi-cmd-var.c (mi_parse_format): Handle new "zero-hexadecimal"
 	format.
-	* gdb/varobj.c (varobj_format_string): Add "zero-hexadecimal" entry.
+	* varobj.c (varobj_format_string): Add "zero-hexadecimal" entry.
 	(format_code): Add 'z' entry.
 	(varobj_set_display_format): Handle FORMAT_ZHEXADECIMAL.
-	* gdb/varobj.h (varobj_display_formats) <FORMAT_ZHEXADECIMAL>: New enum
+	* varobj.h (varobj_display_formats) <FORMAT_ZHEXADECIMAL>: New enum
 	field.
 	* NEWS: Add new note to MI changes citing the new zero-hexadecimal
 	format for -var-set-format.
@@ -1085,7 +1085,7 @@
 2015-11-04  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
 
 	PR/18376
-	* gdb/s390-linux-tdep.c (s390_is_partial_instruction): New function.
+	* s390-linux-tdep.c (s390_is_partial_instruction): New function.
 	(s390_software_single_step): New function.
 	(s390_displaced_step_hw_singlestep): New function.
 	(s390_gdbarch_init): Fill gdbarch slots with the above.
@@ -1093,8 +1093,8 @@
 2015-11-04  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
 
 	PR/18376
-	* gdb/configure.tgt: Add linux-record.o to s390*-linux.
-	* gdb/s390-linux-tdep.c: #include "linux-record.h", "record-full.h"
+	* configure.tgt: Add linux-record.o to s390*-linux.
+	* s390-linux-tdep.c: #include "linux-record.h", "record-full.h"
 	(s390_linux_record_tdep): New static global variable.
 	(s390x_linux_record_tdep): New static global variable.
 	(s390_all_but_pc_registers_record): New function.
@@ -1744,7 +1744,7 @@
 
 2015-10-21  Aleksandar Ristovski  <aristovski@qnx.com>
 
-	* gdb/nto-tdep.c (QNX_NOTE_NAME, QNX_INFO_SECT_NAME): New defines.
+	* nto-tdep.c (QNX_NOTE_NAME, QNX_INFO_SECT_NAME): New defines.
 	(nto_sniff_abi_note_section): New function.
 	(nto_elf_osabi_sniffer): Use new function to recognize nto specific
 	binary.
@@ -1766,7 +1766,7 @@
 
 2015-10-20  Aleksandar Ristovski  <aristovski@qnx.com>
 
-	* gdb/nto-procfs.c (procfs_pid_to_exec_file): New function.
+	* nto-procfs.c (procfs_pid_to_exec_file): New function.
 	(init_procfs_targets): Wire new function.
 
 2015-10-20  Aleksandar Ristovski  <aristovski@qnx.com>
@@ -8207,11 +8207,6 @@
 	(arm_linux_fetch_inferior_registers): Call fetch_fpregs and
 	fetch_regs instead.
 
-2015-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* doc/gdb.texinfo (TUI): Restructure documentation on TUI layout
-	and focus commands.
-
 2015-07-06  Joel Brobecker  <brobecker@adacore.com>
 
 	* NEWS: Create a new section for the next release branch.
@@ -8232,10 +8227,6 @@
 
 2015-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* doc/gdb.texinfo (TUI): Add comma after @xref.
-
-2015-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
-
 	* tui/tui-win.c (tui_set_focus): Use structure member 'generic'
 	instead of casting the structure type.
 
@@ -9259,7 +9250,7 @@
 
 2015-05-28  Kyle Huey  <me@kylehuey.com>  (tiny patch)
 
-	* gdb/arm-tdep.c (arm_gdbarch_init): Perform arm_abi detection on
+	* arm-tdep.c (arm_gdbarch_init): Perform arm_abi detection on
 	ELFOSABI_GNU binaries.
 
 2015-05-27  Doug Evans  <dje@google.com>
@@ -10895,7 +10886,7 @@
 
 2015-04-02  Gary Benson <gbenson@redhat.com>
 
-	* gdb/gdb_bfd.h (TARGET_SYSROOT_PREFIX): New definition.
+	* gdb_bfd.h (TARGET_SYSROOT_PREFIX): New definition.
 	(is_target_filename): New declaration.
 	(gdb_bfd_has_target_filename): Likewise.
 	(gdb_bfd_open): Update documentation comment.
@@ -11050,7 +11041,7 @@
 2015-03-31  Antoine Tremblay  <antoine.tremblay@ericsson.com>
 
 	* NEWS: Mention info os cpus support.
-	* gdb/nat/linux-osdata.c (linux_xfer_osdata_cpus): New function.
+	* nat/linux-osdata.c (linux_xfer_osdata_cpus): New function.
 	(struct osdata_type): Add cpus entry, reorder the entries in
 	alphabetical order.
 
@@ -12525,7 +12516,7 @@
 
 2015-02-26  Antoine Tremblay  <antoine.tremblay@ericsson.com>
 
-	* gdb/infcmd.c (print_return_value): use type_to_string to print type.
+	* infcmd.c (print_return_value): use type_to_string to print type.
 
 2015-02-26  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
@@ -13014,7 +13005,7 @@
 2015-02-09  Sergio Durigan Junior  <sergiodj@redhat.com>
 
 	PR remote/17946
-	* gdb/remote.c (remote_parse_stop_reply): Fix wrong comparison
+	* remote.c (remote_parse_stop_reply): Fix wrong comparison
 	of pointer against char.
 
 2015-02-09  Mark Wielaard  <mjw@redhat.com>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2016 ./gdb/ChangeLog-2016
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2016	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2016	2021-05-21 01:57:24.000000000 +0000
@@ -8556,7 +8556,7 @@
 
 2016-03-29  Don Breazeal  <donb@codesourcery.com>
 
-	* gdb/value.c (value_actual_type): Fix formatting issue.
+	* value.c (value_actual_type): Fix formatting issue.
 
 2016-03-23  Yao Qi  <yao.qi@linaro.org>
 
@@ -9336,7 +9336,7 @@
 
 	* amd64-tdep.c (amd64_ax_pseudo_register_collect): New function.
 	(amd64_init_abi): Fill ax_pseudo_register_collect hook.
-	* gdb/i386-tdep.c (i386_pseudo_register_read_into_value): Remove
+	* i386-tdep.c (i386_pseudo_register_read_into_value): Remove
 	misleading comment.
 	(i386_pseudo_register_write): Ditto.
 	(i386_ax_pseudo_register_collect): New function.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2017 ./gdb/ChangeLog-2017
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2017	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2017	2021-05-21 01:57:24.000000000 +0000
@@ -162,7 +162,7 @@
 
 2017-12-17  Stafford Horne  <shorne@gmail.com>
 
-	* gdb/or1k-tdep.c (show_or1k_debug): Fix function parameter alignment.
+	* or1k-tdep.c (show_or1k_debug): Fix function parameter alignment.
 	(or1k_analyse_inst): Likewise.
 	(or1k_single_step_through_delay): Likewise.
 	(or1k_frame_cache): Fix parameter alignment and use paddress()
@@ -5354,12 +5354,12 @@
 	type to std::vector.
 	* tracepoint.c (traceframe_available_memory): Change parameter
 	type to std::vector, adjust.
-	* gdb/mi/mi-main.c (mi_cmd_trace_frame_collected): Adjust to
+	* mi/mi-main.c (mi_cmd_trace_frame_collected): Adjust to
 	std::vector change.
-	* gdb/Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
+	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
 	unittests/memrange-selftests.c.
 	(SUBDIR_UNITTESTS_OBS): Add memrange-selftests.o.
-	* gdb/unittests/memrange-selftests.c: New file.
+	* unittests/memrange-selftests.c: New file.
 
 2017-10-16  Pedro Alves  <palves@redhat.com>
 
@@ -15712,8 +15712,8 @@
 2017-03-21  Ivo Raisr  <ivo.raisr@oracle.com>
 
 	PR tdep/20928
-	* gdb/sparc-tdep.h (gdbarch_tdep) <sparc64_ccr_type>: New field.
-	* gdb/sparc64-tdep.c (sparc64_ccr_type): New function.
+	* sparc-tdep.h (gdbarch_tdep) <sparc64_ccr_type>: New field.
+	* sparc64-tdep.c (sparc64_ccr_type): New function.
 	(sparc64_fsr_type): Fix %fsr decoding.
 
 2017-03-21  Tim Wiederhake  <tim.wiederhake@intel.com>
@@ -15798,8 +15798,6 @@
 
 	PR gdb/14441
 	* NEWS: Mention support for rvalue references in GDB and python.
-	* doc/gdb.texinfo (C Plus Plus Expressions): Mention that GDB
-	supports both lvalue and rvalue references.
 
 2017-03-20  Artemiy Volkov  <artemiyv@acm.org>
 
@@ -15874,8 +15872,6 @@
 2017-03-20  Artemiy Volkov  <artemiyv@acm.org>
 
 	PR gdb/14441
-	* doc/python.texi (Types in Python): Add TYPE_CODE_RVALUE_REF to
-	table of constants.
 	* python/lib/gdb/command/explore.py: Support exploring values
 	of rvalue reference types.
 	* python/lib/gdb/types.py: Implement get_basic_type() for
@@ -16338,7 +16334,6 @@
 2017-02-28  Peter Bergner  <bergner@vnet.ibm.com>
 
 	* NEWS: Mention new set/show disassembler-options commands.
-	* doc/gdb.texinfo: Document new set/show disassembler-options commands.
 	* disasm.c: Include "arch-utils.h", "gdbcmd.h" and "safe-ctype.h".
 	(prospective_options): New static variable.
 	(gdb_disassembler::gdb_disassembler): Initialize
@@ -17624,7 +17619,7 @@
 
 2017-01-27  Kees Cook  <keescook@google.com>
 
-	* gdb/arm-linux-nat.c (arm_linux_fetch_inferior_registers): Call
+	* arm-linux-nat.c (arm_linux_fetch_inferior_registers): Call
 	fetch_fpregs if target has fpa registers.
 	(arm_linux_store_inferior_registers): Call store_fpregs if target
 	has fpa registers.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2018 ./gdb/ChangeLog-2018
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2018	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ChangeLog-2018	2021-05-21 01:57:24.000000000 +0000
@@ -368,18 +368,18 @@
 
 2018-12-19  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* gdb/dummy-frame.c (default_dummy_id): Defined new function.
-	* gdb/dummy-frame.h (default_dummy_id): Declare new function.
-	* gdb/frame-unwind.c (default_unwind_pc): Define new function.
+	* dummy-frame.c (default_dummy_id): Defined new function.
+	* dummy-frame.h (default_dummy_id): Declare new function.
+	* frame-unwind.c (default_unwind_pc): Define new function.
 	(default_unwind_sp): Define new function.
-	* gdb/frame-unwind.h (default_unwind_pc): Declare new function.
+	* frame-unwind.h (default_unwind_pc): Declare new function.
 	(default_unwind_sp): Declare new function.
-	* gdb/frame.c (frame_unwind_pc): Assume gdbarch_unwind_pc is
+	* frame.c (frame_unwind_pc): Assume gdbarch_unwind_pc is
 	available.
 	(get_frame_sp): Assume that gdbarch_unwind_sp is available.
-	* gdb/gdbarch.c: Regenerate.
-	* gdb/gdbarch.h: Regenerate.
-	* gdb/gdbarch.sh: Update definition of dummy_id, unwind_pc, and
+	* gdbarch.c: Regenerate.
+	* gdbarch.h: Regenerate.
+	* gdbarch.sh: Update definition of dummy_id, unwind_pc, and
 	unwind_sp.  Add additional header files to be included in
 	generated file.
 
@@ -839,7 +839,7 @@
 2018-11-29  Rajendra SY  <rajendra.sy@gmail.com>
 
 	PR gdb/23093
-	* gdb/fbsd-tdep.c (fbsd_gdb_signal_from_target)
+	* fbsd-tdep.c (fbsd_gdb_signal_from_target)
 	(fbsd_gdb_signal_to_target): New.
 	(fbsd_init_abi): Install gdbarch "signal_from_target" and
 	"signal_to_target" methods.
@@ -1069,7 +1069,7 @@
 2018-11-21  Benno FÃ¼nfstÃ¼ck  <benno.fuenfstueck@gmail.com>
 
 	PR python/23714
-	* gdb/python/python.c (execute_gdb_command): Call
+	* python/python.c (execute_gdb_command): Call
 	prevent_dont_repeat earlier to avoid affecting dont_repeat.
 
 2018-11-21  Andrew Burgess  <andrew.burgess@embecosm.com>
@@ -5038,7 +5038,7 @@
 2018-08-16  Gary Benson <gbenson@redhat.com>
 
 	PR gdb/13000:
-	* gdb/main.c (captured_main_1): Exit with nonzero status
+	* main.c (captured_main_1): Exit with nonzero status
 	in batch mode if the last command to be executed failed.
 	* NEWS: Mention the above.
 
@@ -7745,22 +7745,22 @@
 
 2018-06-29  Pedro Alves  <palves@redhat.com>
 
-	* gdb/amd64-tdep.h (amd64_create_target_description): Add
+	* amd64-tdep.h (amd64_create_target_description): Add
 	"segments" parameter.
-	* gdb/amd64-tdep.c (amd64_none_init_abi, amd64_x32_none_init_abi)
+	* amd64-tdep.c (amd64_none_init_abi, amd64_x32_none_init_abi)
 	(_initialize_amd64_tdep): Update call to
 	amd64_create_target_description.
 	(amd64_target_description): Add "segments" parameter.  Adjust
 	the implementation to use it.
-	* gdb/amd64-linux-tdep.c (amd64_linux_read_description): Update
+	* amd64-linux-tdep.c (amd64_linux_read_description): Update
 	call to amd64_create_target_description.
-	* gdb/amd64-windows-tdep.c (amd64_windows_init_abi): Likewise.
-	* gdb/arch/amd64.h (amd64_create_target_description): Add
+	* amd64-windows-tdep.c (amd64_windows_init_abi): Likewise.
+	* arch/amd64.h (amd64_create_target_description): Add
 	"segments" register.
-	* gdb/arch/amd64.c (amd64_create_target_description): Add
+	* arch/amd64.c (amd64_create_target_description): Add
 	"segments" parameter.  Call create_feature_i386_64bit_segments
 	only if SEGMENTS is true.
-	* gdb/gdbserver/win32-i386-low.c (i386_arch_setup): Update
+	* gdbserver/win32-i386-low.c (i386_arch_setup): Update
 	call to amd64_create_target_description.
 
 2018-06-29  Pedro Alves  <palves@redhat.com>
@@ -9239,7 +9239,7 @@
 2018-05-31  Alan Hayward  <alan.hayward@arm.com>
 
 	* Makefile.in: Add new header.
-	* gdb/arch/aarch64.h (sve_vg_from_vl): New macro.
+	* arch/aarch64.h (sve_vg_from_vl): New macro.
 	(sve_vl_from_vg): Likewise.
 	(sve_vq_from_vl): Likewise.
 	(sve_vl_from_vq): Likewise.
@@ -9262,7 +9262,6 @@
 	* arch/aarch64.c (aarch64_create_target_description): Check VQ.
 	* arch/aarch64.h (aarch64_create_target_description): Add VQ.
 	parmeter.
-	* doc/gdb.texinfo: Describe SVE feature
 	* features/aarch64-sve.c: New file.
 
 2018-05-31  Omair Javaid  <omair.javaid@linaro.org>
@@ -12316,7 +12315,7 @@
 2018-04-28  Dan Robertson  <danlrobertson89@gmail.com>
 
 	PR rust/23124
-	* gdb/rust-exp.y (convert_params_to_types): Ensure that the params
+	* rust-exp.y (convert_params_to_types): Ensure that the params
 	pointer is not null before dereferencing it.
 
 2018-04-30  Tom Tromey  <tom@tromey.com>
@@ -12455,7 +12454,7 @@
 2018-04-29  John Reiser  <jreiser@BitWagon.com>
 
 	PR build/22873
-	* gdb/Makefile.in: (.c:.l, .c:.y): Write the target only in the
+	* Makefile.in: (.c:.l, .c:.y): Write the target only in the
 	last step, and do it atomically.
 
 2018-04-27  Alexandre Oliva  <aoliva@redhat.com>
@@ -12690,13 +12689,6 @@
 
 	* configure: Rebuild.
 
-2018-04-22  Rajendra SY  <rajendra.sy@gmail.com>
-
-	PR gdb/23095
-	* gdb/testsuite/gdb.base/break-probes.exp: Pass shlib_load to
-	prepare_for_testing.  Set normal_bp to r_debug_state if target
-	is bsd.
-
 2018-04-21  Pedro Alves  <palves@redhat.com>
 	    Rajendra SY  <rajendra.sy@gmail.com>
 
@@ -12845,7 +12837,7 @@
 	(tdesc_add_bitfield): Likewise.
 	(tdesc_add_flag): Likewise.
 	(tdesc_add_enum_value): Likewise.
-	* gdb/target-descriptions.h (tdesc_create_enum): Likewise.
+	* target-descriptions.h (tdesc_create_enum): Likewise.
 	(tdesc_add_typed_bitfield): Likewise.
 	(tdesc_add_enum_value): Likewise.
 
@@ -14798,7 +14790,7 @@
 
 2018-02-26  Maciej W. Rozycki  <macro@mips.com>
 
-	* gdb/mips-tdep.c (mips_gdbarch_init): Reorder ABI determination
+	* mips-tdep.c (mips_gdbarch_init): Reorder ABI determination
 	ahead of target description loading.
 
 2018-02-26  Tom Tromey  <tom@tromey.com>
@@ -16416,7 +16408,7 @@
 
 2018-01-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
-	* gdb/gnu-nat.c: Include <elf.h> and <link.h>.
+	* gnu-nat.c: Include <elf.h> and <link.h>.
 	(gnu_xfer_auxv): New function.
 	(gnu_xfer_partial): Call gnu_xfer_auxv when `object' is
 	TARGET_OBJECT_AUXV.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2019 ./gdb/ChangeLog-2019
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ChangeLog-2019	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/ChangeLog-2019	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,17396 @@
+2019-12-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_border_mode_translate)
+	(tui_border_kind_translate_vline, tui_border_kind_translate_hline)
+	(tui_border_kind_translate_ulcorner)
+	(tui_border_kind_translate_urcorner)
+	(tui_border_kind_translate_llcorner)
+	(tui_border_kind_translate_lrcorner, tui_active_border_mode)
+	(tui_border_mode, tui_border_kind): Now static.
+
+2019-12-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-interp.c (tui_start_enabled): Now bool.
+	(_initialize_tui_interp): Update.
+	* tui/tui-hooks.c (tui_refreshing_registers): Now bool.
+	(tui_register_changed)
+	(tui_refresh_frame_and_register_information): Update.
+	* tui/tui-win.c (tui_update_variables): Return bool.
+	* tui/tui-win.h (tui_update_variables): Return bool.
+	* tui/tui.c (tui_get_command_dimension): Return bool.
+	* tui/tui.h (tui_get_command_dimension): Return bool.
+
+2019-12-29  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* buildsym.c (buildsym_compunit::record_line): Do no longer ignore
+	line 65535.
+
+2019-12-27  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Remove
+	commented-out code.
+	* tui/tui.c: Remove #if 0 code.
+
+2019-12-27  Tom Tromey  <tom@tromey.com>
+
+	* cli/cli-cmds.c (print_disassembly): Reorder "if".
+
+2019-12-27  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_active): Now bool.
+	(tui_finish_init): Likewise.
+	(tui_enable): Update.
+	(tui_disable): Update.
+	(tui_is_window_visible): Update.
+	* tui/tui.h (tui_active): Now bool.
+
+2019-12-27  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.c (tui_source_window::maybe_update): Update.
+	* tui/tui-regs.c (tui_data_window::display_registers_from):
+	Update.
+	* tui/tui-layout.c (tui_gen_win_info::resize): Update.
+	* tui/tui-data.h (struct tui_gen_win_info) <viewport_height>:
+	Remove.
+	* tui/tui-command.c (tui_cmd_window::resize): Update.
+
+2019-12-26  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-lang.c (ada_decode_symbol): Update.
+	* buildsym.c (add_symbol_to_list): Update.
+	* coffread.c (process_coff_symbol): Update.
+	* ctfread.c (ctf_add_enum_member_cb): Update.
+	(new_symbol): Update.
+	(ctf_add_var_cb): Update.
+	* dwarf2read.c (fixup_go_packaging): Update.
+	(dwarf2_compute_name): Update.
+	(new_symbol): Update.
+	* jit.c (finalize_symtab): Update.
+	* language.c (language_alloc_type_symbol): Update.
+	* mdebugread.c (new_symbol): Update.
+	* minsyms.c (minimal_symbol_reader::record_full): Update.
+	(minimal_symbol_reader::install): Update.
+	* psymtab.c (print_partial_symbols): Update.
+	(psymbol_hash): Update.
+	(psymbol_compare): Update.
+	(add_psymbol_to_bcache): Update.
+	(maintenance_check_psymtabs): Update.
+	* stabsread.c (define_symbol): Update.
+	* symtab.c (symbol_set_names): Rename to...
+	(general_symbol_info::compute_and_set_names): ...this.
+	(general_symbol_info::natural_name): Update.
+	(general_symbol_info::search_name): Update.
+	(fixup_section): Update.
+	* symtab.h (struct general_symbol_info) <name>: Rename to...
+	<m_name>: ...this.
+	<compute_and_set_names>: Rename from...
+	(symbol_set_names): ...this.
+	(SYMBOL_SET_NAMES): Remove.
+	(struct symbol) <ctor>: Update.
+
+2019-12-26  Christian Biesinger  <cbiesinger@google.com>
+
+	* NEWS: Mention that multithreaded symbol loading is now on by
+	default.
+
+2019-12-26  Ruslan Kabatsayev  <b7.10110111@gmail.com>
+
+	* dwarf2read.c (is_valid_DW_AT_defaulted)
+	(is_valid_DW_AT_calling_convention_for_type)
+	(is_valid_DW_AT_calling_convention_for_subroutine): Fix printing
+	ULONGEST variables on x86-32.
+
+2019-12-21  George Barrett  <bob@bob131.so>
+
+	* solib-svr4.c (svr4_handle_solib_event): Add fallback link
+	namespace test for when the debug struct isn't available.
+
+2019-12-21  Eli Zaretskii  <eliz@gnu.org>
+
+	* top.c (print_gdb_configuration): Print "--with-xxhash" or
+	"--without-xxhash" according to HAVE_LIBXXHASH.
+
+2019-12-20  Weimin Pan  <weimin.pan@oracle.com>
+	* ctfread.c (ctf_file_key): Change type to objfile_key.
+	(struct ctf_context): Remove typedef.
+	(get_objfile_text_range): Use ANOFFSET to get text base.
+
+2019-12-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* dwarf2read.c (is_valid_DW_AT_calling_convention_for_subroutine):
+	New function.
+	(read_subroutine_type): Validate the parsed
+	DW_AT_calling_convention value before assigning it to a
+	subroutine's calling_convention attribute.
+	* gdbtypes.h (struct func_type) <calling_convention>: Use
+	an enum bitfield as its type, instead of plain unsigned.
+
+2019-12-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	PR gdb/25054
+	* infcall.c (call_function_by_hand_dummy): Update the argument-
+	passing section for call-by-value parameters.
+	(struct destructor_info): New struct.
+	(call_destructors): New auxiliary function.
+
+2019-12-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gnu-v3-abi.c (enum definition_style): New enum type.
+	(get_def_style): New function.
+	(is_user_provided_def): New function.
+	(is_implicit_def): New function.
+	(is_copy_or_move_constructor_type): New function.
+	(is_copy_constructor_type): New function.
+	(is_move_constructor_type): New function.
+	(gnuv3_pass_by_reference): Collect language_pass_by_ref_info
+	for a given type.
+
+2019-12-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* language.h (struct language_pass_by_ref_info): New struct.
+	(struct language_defn)<la_pass_by_reference>: Change the signature
+	to return a language_pass_by_ref_info instead of an int.
+	(language_pass_by_reference): Ditto.
+	(default_pass_by_reference): Ditto.
+	Adjust the users listed below.
+	* arch-utils.c (default_return_in_first_hidden_param_p):
+	Update.
+	* cp-abi.c (cp_pass_by_reference): Update.
+	* cp-abi.h (cp_pass_by_reference): Update declaration.
+	(struct cp_abi_ops)<pass_by_reference>: Update.
+	* gnu-v3-abi.c (gnuv3_pass_by_reference): Update.
+	* infcall.c (call_function_by_hand_dummy): Update.
+	* language.c (language_pass_by_reference): Update.
+	(default_pass_by_reference): Update.
+	* tic6x-tdep.c (tic6x_return_value): Update.
+
+2019-12-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* dwarf2read.c (dwarf2_add_member_fn): Read the DW_AT_defaulted
+	and DW_AT_deleted attributes of a function.
+	(read_structure_type): Read the DW_AT_calling_convention attribute
+	of a type.
+	(is_valid_DW_AT_defaulted): New function.
+	(is_valid_DW_AT_calling_convention_for_type): New function.
+	* gdbtypes.h: Include dwarf2.h.
+	(struct fn_field)<defaulted>: New field to store the
+	DW_AT_defaulted attribute.
+	(struct fn_field)<is_deleted>: New field to store the
+	DW_AT_deleted attribute.
+	(struct cplus_struct_type)<calling_convention>: New field to store
+	the DW_AT_calling_convention attribute.
+	(TYPE_FN_FIELD_DEFAULTED): New macro.
+	(TYPE_FN_FIELD_DELETED): New macro.
+	(TYPE_CPLUS_CALLING_CONVENTION): New macro.
+	* gdbtypes.c (dump_fn_fieldlists): Update for the changes made
+	to the .h file.
+	(print_cplus_stuff): Likewise.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_show_source): Remove.
+	* tui/tui.h (tui_show_source): Don't declare.
+	* tui/tui-out.c (tui_ui_out::do_field_string): Don't call
+	tui_show_source.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (tui_show_frame_info): Return bool.
+	* tui/tui-stack.c (tui_show_frame_info): Return bool.
+	* tui/tui-hooks.c (tui_refresh_frame_and_register_information):
+	Update.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	PR tui/18932:
+	* tui/tui-hooks.c (tui_refresh_frame_and_register_information):
+	Rename parameters.  Handle the not-from-stack-frame case.
+	(from_stack, from_source_symtab): New globals.
+	(tui_before_prompt, tui_normal_stop): Update.
+	(tui_context_changed, tui_symtab_changed): New functions.
+	(tui_attach_detach_observers): Attach new observers.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* source.c (struct current_source_location) <set, symtab, line>:
+	New methods.
+	<m_symtab, m_line>: Rename.  Now private.
+	(get_current_source_symtab_and_line)
+	(set_default_source_symtab_and_line)
+	(set_current_source_symtab_and_line)
+	(clear_current_source_symtab_and_line, select_source_symtab)
+	(info_source_command, print_source_lines_base)
+	(info_line_command, search_command_helper): Update.
+	* observable.h (current_source_symtab_and_line_changed): Declare
+	observable.
+	* observable.c (current_source_symtab_and_line_changed): Define
+	observable.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-hooks.c (tui_before_prompt): Change parameter to bool.
+	(tui_before_prompt, tui_normal_stop): Update.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c
+	(tui_source_window_base::update_source_window_as_is): Don't call
+	set_current_source_symtab_and_line.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (struct tui_locator_window) <set_locator_info>:
+	Take a symtab_and_line.
+	* tui/tui-stack.c (tui_locator_window::set_locator_info): Take a
+	symtab_and_line.
+	(tui_show_frame_info): Update.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_show_frame_info): Don't call
+	update_exec_info.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_enable): Call tui_display_main.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-disasm.c (tui_get_begin_asm_address): Use
+	get_current_source_symtab_and_line, and main_name.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_show_source): Update.
+	* tui/tui-winsource.h (tui_update_source_windows_with_line): Update.
+	* tui/tui-winsource.c (tui_update_source_windows_with_line): Take
+	a symtab_symbol_info, not a separate symtab and line.  Simplify.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_source_windows_with_addr):
+	Simplify.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<set_contents, update_source_window_as_is, update_source_window>:
+	Take a sal, not a separate symtab and tui_line_or_address.
+	* tui/tui-winsource.c (tui_source_window_base::update_source_window)
+	(tui_source_window_base::update_source_window_as_is): Take a sal,
+	not a separate symtab and tui_line_or_address.
+	(tui_update_source_windows_with_addr)
+	(tui_update_source_windows_with_line)
+	(tui_source_window_base::rerender)
+	(tui_source_window_base::refill): Update.
+	* tui/tui-source.h (struct tui_source_window) <set_contents>: Take
+	a sal, not a separate symtab and tui_line_or_address.
+	* tui/tui-source.c (tui_source_window::set_contents): Take a sal,
+	not a separate symtab and tui_line_or_address.
+	(tui_source_window::maybe_update): Update.
+	* tui/tui-disasm.h (struct tui_disasm_window) <set_contents>: Take
+	a sal, not a separate symtab and tui_line_or_address.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Take a sal,
+	not a separate symtab and tui_line_or_address.
+	(tui_disasm_window::do_scroll_vertical)
+	(tui_disasm_window::maybe_update): Update.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_source_window_base::refill): Use
+	start_line_or_addr.
+	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Use
+	start_line_or_addr.
+	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Use
+	start_line_or_addr.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<set_contents>: Return bool.
+	* tui/tui-winsource.c
+	(tui_source_window_base::update_source_window_as_is): Update.
+	* tui/tui-source.h (struct tui_source_window) <set_contents>:
+	Return bool.
+	* tui/tui-source.c (tui_source_window::set_contents): Return
+	bool.  Simplify.
+	* tui/tui-disasm.h (struct tui_disasm_window) <set_contents>:
+	Return bool.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Return
+	bool.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_source_windows_with_addr)
+	(tui_update_source_windows_with_line): Call update_source_window.
+	* tui/tui-source.h (struct tui_source_window)
+	<show_symtab_source>: Don't declare.
+	* tui/tui-source.c (tui_source_window::show_symtab_source):
+	Remove.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_source_windows_with_addr): Call
+	update_source_window directly.
+	* tui/tui-disasm.h (tui_show_disassem): Don't declare.
+	* tui/tui-disasm.c (tui_show_disassem): Remove.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c
+	(tui_source_window_base::update_source_window_as_is): Don't switch focus.
+	* tui/tui-disasm.c (tui_show_disassem): Don't switch focus.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<maybe_update>: Remove line_no and addr parameters.
+	* tui/tui-stack.c (tui_show_frame_info): Set PC on sal.  Update.
+	* tui/tui-source.h (struct tui_source_window) <maybe_update>:
+	Update.
+	* tui/tui-source.c (tui_source_window::maybe_update): Remove
+	line_no and addr parameters.
+	* tui/tui-disasm.h (struct tui_disasm_window) <maybe_update>:
+	Update.
+	* tui/tui-disasm.c (tui_disasm_window::maybe_update): Remove
+	line_no and addr parameters.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_source_window_base::set_is_exec_point_at)
+	(tui_source_window_base::update_breakpoint_info): Remove asserts.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_source_windows_with_addr): Call
+	tui_show_disassem.
+	* tui/tui-disasm.h (tui_show_disassem_and_update_source): Don't
+	declare.
+	* tui/tui-disasm.c (tui_show_disassem_and_update_source): Remove.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.h (tui_show_source): Remove parameters.
+	* tui/tui.c (tui_show_source): Remove parameters.
+	* tui/tui-out.c (tui_ui_out::do_field_string): Update.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_show_source): Update.
+	* tui/tui-winsource.c (tui_display_main): Update.
+	* tui/tui-stack.h (tui_update_locator_fullname): Change parameter
+	to symtab.
+	* tui/tui-stack.c (tui_update_locator_fullname): Change parameter
+	to symtab.
+	* tui/tui-disasm.c (tui_show_disassem_and_update_source): Update.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	PR tui/23619:
+	* tui/tui-io.c (tui_rl_saved_prompt): Remove.
+	(tui_redisplay_readline): Use rl_display_prompt.
+	(tui_prep_terminal): Update.
+
+2019-12-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* configure: Regenerate.
+	* configure.ac: Quote variable arguments of test.
+	* gdbsupport/common.m4: Likewise.
+
+2019-12-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* score-tdep.c (score7_analyze_prologue): Pass 2.0 instead of
+	2 to pow ().
+
+2019-12-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* tui/tui-source.c (tui_source_window::set_contents): Cast argument of
+	log10 to double to fix Solaris 11 with gcc 5.5.
+
+2019-12-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* fbsd-tdep.c (fbsd_info_proc_files_entry): Rename local var
+	"sun" to "saddr_un".
+
+2019-12-19  Tom Tromey  <tromey@adacore.com>
+
+	* ui-out.h (enum class field_kind): Fix comment.
+
+2019-12-11  Tom Tromey  <tromey@adacore.com>
+
+	* xml-support.c (xml_fetch_content_from_file): Use FOPEN_RB.
+
+2019-12-18  Tom Tromey  <tromey@adacore.com>
+
+	PR build/25268:
+	* gdbsupport/thread-pool.c (set_thread_name): Expect "int" return
+	type on macOS.  Add comment.
+
+2019-12-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* c-lang.c (c_get_string, asm_language_defn): Remove space
+	before tab.
+
+2019-12-18  Tom Tromey  <tromey@adacore.com>
+
+	PR build/25250:
+	* ui-out.c (ui_out::vmessage): Update.
+	* ui-out.h (enum class field_kind) <FIELD_STRING, FIELD_SIGNED>:
+	Rename.
+	(string_field): Update.
+	(signed_field): Update.
+
+2019-12-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* top.c (print_gdb_configuration): Adjust indentation.
+
+2019-12-17  Christian Biesinger  <cbiesinger@google.com>
+
+	* bsd-kvm.c: Include gdbsupport/pathstuff.h.
+
+2019-12-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* tui/tui-layout.h (class tui_layout_base): Add virtual
+	destructor.
+
+2019-12-16  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* infcmd.c (prepare_one_step): Step over skipped inline functions.
+	* infrun.c (inline_frame_is_marked_for_skip): New helper function.
+	(process_event_stop_test): Keep stepping over skipped inline functions.
+
+2019-12-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c (struct gdb_block) <next>: Remove field.
+	(struct gdb_symtab) <~gdb_symtab>: Remove.
+	<blocks>: Change type to std::forward_list<gdb_block>.
+	(compare_block): Remove.
+	(jit_block_open_impl): Adjust to std::forward_list.  Place the new
+	block at the beginning, don't mind about sorting.
+	(finalize_symtab): Adjust to std::forward_list, sort the blocks list
+	before using it.
+
+2019-12-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c (struct gdb_block): Add constructor, initialize
+	real_block and next fields.
+	<name>: Change type to gdb::unique_xmalloc_ptr.
+	(struct gdb_symtab) <~gdb_symtab>: Free blocks with delete.
+	(jit_block_open_impl): Allocate gdb_block with new.
+	(finalize_symtab): Adjust to gdb::unique_xmalloc_ptr.
+
+2019-12-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c: Include forward_list.
+	(struct gdb_symtab) <next>: Remove field.
+	(struct gdb_object) <symtabs>: Change type to
+	std::forward_list<gdb_symtab>.
+	(jit_object_open_impl): Allocate gdb_object with new.
+	(jit_symtab_open_impl): Adjust to std::forward_list.
+	(finalize_symtab): Don't delete symtab.
+	(jit_object_close_impl):  Adjust to std::forward_list.  Free
+	gdb_object with delete.
+
+2019-12-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c (struct gdb_symtab): Add constructor, destructor,
+	initialize fields.
+	<linetable>: Change type to unique_xmalloc_ptr.
+	<file_name>: Change type to std::string.
+	(jit_symtab_open_impl): Allocate gdb_symtab with new.
+	(jit_symtab_line_mapping_add_impl): Adjust.
+	(finalize_symtab): Adjust, call delete on stab.
+
+2019-12-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c (finalize_symtab): Set gdb_block_iter_tmp in loop.
+
+2019-12-16  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (windows_nat_target::attach): Update.
+	* remote.c (extended_remote_target::attach): Update.
+	* procfs.c (procfs_target::attach): Update.
+	* nto-procfs.c (nto_procfs_target::attach): Update.
+	(nto_procfs_target::create_inferior): Update.
+	* inf-ptrace.c (inf_ptrace_target::attach): Update.
+	* gnu-nat.c (gnu_nat_target::attach): Update.
+	(gnu_nat_target::detach): Update.
+	* darwin-nat.c (darwin_nat_target::attach): Update.
+	* corefile.c (get_exec_file): Constify result.  Remove extraneous
+	return.
+	* bsd-kvm.c (bsd_kvm_target_open): Update.
+	* gdbsupport/common-inferior.h (get_exec_file): Constify result.
+
+2019-12-16  Christian Biesinger  <cbiesinger@google.com>
+
+	* gdbsupport/common-defs.h: Remove workaround for a gnulib bug
+	(we no longer need to include time.h before pathmax.h)
+
+2019-12-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-exp.y (write_ambiguous_var): Update.
+	* coffread.c (process_coff_symbol): Update.
+	* ctfread.c (ctf_add_enum_member_cb): Update.
+	(new_symbol): Update.
+	* dwarf2read.c (fixup_go_packaging): Update.
+	(new_symbol): Update.
+	* language.c (language_alloc_type_symbol): Update.
+	* mdebugread.c (new_symbol): Update.
+	* minsyms.c (minimal_symbol_reader::record_full): Update.
+	* psymtab.c (add_psymbol_to_bcache): Update.
+	* stabsread.c (define_symbol): Update.
+	(read_enum_type): Update.
+	* symtab.c (symbol_set_language): Make this a member function...
+	(general_symbol_info::set_language): ... here.
+	* symtab.h (struct general_symbol_info) <set_language>: New function.
+	(SYMBOL_SET_LANGUAGE): Remove.
+	(symbol_set_language): Remove.
+
+2019-12-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-lang.c (ada_add_block_symbols): Update.
+	(ada_collect_symbol_completion_matches): Update.
+	* ax-gdb.c (gen_expr): Update.
+	* block.c (block_lookup_symbol): Update.
+	(block_lookup_symbol_primary): Update.
+	(block_find_symbol): Update.
+	* cp-namespace.c (cp_lookup_symbol_imports_or_template): Update.
+	* dbxread.c (process_one_symbol): Update.
+	* dictionary.c (insert_symbol_hashed): Update.
+	(collate_pending_symbols_by_language): Update.
+	(mdict_add_symbol): Update.
+	* dwarf-index-write.c (write_psymbols): Update.
+	* dwarf2read.c (fixup_go_packaging): Update.
+	* findvar.c (read_var_value): Update.
+	* ft32-tdep.c (ft32_skip_prologue): Update.
+	* go-lang.c (go_symbol_package_name): Update.
+	* language.h (scoped_switch_to_sym_language_if_auto::
+	scoped_switch_to_sym_language_if_auto): Update.
+	* linespec.c (find_method): Update.
+	(find_label_symbols_in_block): Update.
+	* mdebugread.c (parse_symbol): Update.
+	* mi/mi-cmd-stack.c (list_arg_or_local): Update.
+	* minsyms.c (add_minsym_to_demangled_hash_table): Update.
+	(minimal_symbol_reader::install): Update.
+	* moxie-tdep.c (moxie_skip_prologue): Update.
+	* parse.c (parse_exp_in_context): Update.
+	* psymtab.c (psymbol_name_matches): Update.
+	(match_partial_symbol): Update.
+	(lookup_partial_symbol): Update.
+	(psymbol_hash): Update.
+	(psymbol_compare): Update.
+	* python/py-framefilter.c (extract_sym): Update.
+	(py_print_single_arg): Update.
+	* stabsread.c (define_symbol): Update.
+	* stack.c (print_frame_arg): Update.
+	(find_frame_funname): Update.
+	(info_frame_command_core): Update.
+	* symfile.c (set_initial_language): Update.
+	* symtab.c (symbol_set_demangled_name): Update.
+	(symbol_get_demangled_name): Update.
+	(symbol_set_language): Update.
+	(symbol_find_demangled_name): Update.
+	(symbol_set_names): Update.
+	(general_symbol_info::natural_name): Update.
+	(general_symbol_info::demangled_name): Update.
+	(general_symbol_info::search_name): Update.
+	(symbol_matches_search_name): Update.
+	(eq_symbol_entry): Update.
+	(iterate_over_symbols): Update.
+	(completion_list_add_symbol): Update.
+	(completion_list_add_msymbol): Update.
+	(completion_list_add_fields): Update.
+	* symtab.h (struct general_symbol_info) <language>: New function.
+	<language>: Rename to...
+	<m_language>: ...this.
+	(SYMBOL_LANGUAGE): Remove.
+	(MSYMBOL_LANGUAGE): Remove.
+	(struct symbol) <ctor>: Update.
+	* xstormy16-tdep.c (xstormy16_skip_prologue): Update.
+
+2019-12-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-exp.y (write_ambiguous_var): Call symbol_set_language to
+	set the language of sym.
+	* language.c (language_alloc_type_symbol): Likewise.
+
+2019-12-14  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	https://bugzilla.redhat.com/show_bug.cgi?id=1728147
+	PR gdb/23613
+	* bsd-kvm.c (bsd_kvm_target_open): Use 'gdb_abspath'.
+	* corelow.c: Include 'gdbsupport/pathstuff.h'.
+	(core_target_open): Use 'gdb_abspath'.
+	* gdbsupport/pathstuff.c (gdb_abspath): Guard against
+	'current_directory == NULL' case.
+	* gdbsupport/pathstuff.h (gdb_abspath): Expand comment and
+	explain what happens when 'current_directory' is NULL.
+	* go32-nat.c (go32_nat_target::wait): Check if
+	'current_directory' is NULL before call to 'chdir'.
+	* source.c (add_path): Use 'gdb_abspath'.
+	* top.c: Include 'gdbsupport/pathstuff.h'.
+	(init_history): Use 'gdb_abspath'.
+	(set_history_filename): Likewise.
+	* tracefile-tfile.c: Include 'gdbsupport/pathstuff.h'.
+	(tfile_target_open): Use 'gdb_abspath'.
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh: Remove check for multiple calls to
+	warning or error.
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh: Remove call to "fix" for "long long".
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh: Handle -Wno- prefix.
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh (usage): Use GNU style.
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* gdbsupport/common-utils.c (string_printf, string_vprintf)
+	(string_vappendf): Add ARI comment.
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh: Remove "fix" call for
+	floatformat_to_double.
+	* target-float.c (host_float_ops<T>::from_target): Add ARI
+	comment.
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh: Remove "fix" call for abort.
+	* utils.c (abort_with_message, dump_core, internal_vproblem): Add
+	ARI marker to abort.
+	* event-top.c (handle_sigsegv): Add ARI marker to abort.
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh: Fix floatformat_from_double text.
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh: Remove ATTRIBUTE_UNUSED check.
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh: Remove "boolean" and "var_boolean"
+	checks.
+
+2019-12-13  Tom Tromey  <tromey@adacore.com>
+
+	* gdbsupport/safe-iterator.h (class basic_safe_range) <begin,
+	end>: No longer "const".
+
+2019-12-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c: Fix indentation, replace spaces with tabs where
+	applicable.
+
+2019-12-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* configure.tgt: Match msp430-*-elf* targets when configuring GDB.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (struct objfile) <partial_symtabs>: Now a
+	unique_ptr.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* progspace.h (objfile_list): New typedef.
+	(class unwrapping_objfile_iterator)
+	(struct unwrapping_objfile_range): Newl
+	(struct program_space) <objfiles_range>: Change type.
+	<objfiles>: Change return type.
+	<add_objfile>: Change type of "objfile" parameter.
+	<objfiles_list>: Now a list of shared_ptr.
+	* progspace.c (program_space::add_objfile): Change type of
+	"objfile".  Update.
+	(program_space::remove_objfile): Update.
+	* objfiles.h (struct objfile) <~objfile>: Make public.
+	* objfiles.c (objfile::make): Update.
+	(objfile::unlink): Don't call delete.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (symbol_file_clear): Update.
+	* progspace.h (struct program_space) <free_all_objfiles>: Declare
+	method.
+	* progspace.c (program_space::free_all_objfiles): New method.
+	* objfiles.h (free_all_objfiles): Don't declare.
+	* objfiles.c (free_all_objfiles): Move to program_space.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* progspace.c (program_space::add_objfile)
+	(program_space::remove_objfile): Update.
+	(program_space::multi_objfile_p): Remove.
+	* objfiles.h (struct objfile) <next>: Remove.
+	* objfiles.c (objfile::objfile): Update.
+	(put_objfile_before): Update.
+	(unlink_objfile): Update.
+	* progspace.h (object_files): Remove.
+	(struct program_space) <objfiles_head>: Remove.
+	<objfiles_list>: New member.
+	<objfiles_range, objfiles_safe_range>: Change type.
+	(objfiles): Change return type.
+	(objfiles_safe): Update.
+	(multi_objfile_p): Rewrite and inline.
+	(object_files): Remove macro.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* gdbsupport/safe-iterator.h (basic_safe_iterator): Simplify.  Add
+	second constructor.
+	(basic_safe_range): New class.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* progspace.c (program_space::multi_objfile_p): New method.
+	* printcmd.c (info_symbol_command): Update.
+	* maint.c (maintenance_translate_address): Update.
+	* objfiles.h (MULTI_OBJFILE_P): Remove.
+	* progspace.h (struct program_space) <multi_objfile_p>: New
+	method.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* progspace.h (struct program_space) <remove_objfile>: Declare.
+	* progspace.c (program_space::remove_objfile): New method.
+	* objfiles.c (unlink_objfile): Remove.
+	(objfile::unlink): Call remove_objfile.
+	(objfile): Don't call unlink_objfile.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* progspace.h (struct program_space) <add_objfile>: Declare
+	method.
+	* progspace.c (program_space::add_objfile): New method.
+	* objfiles.c (~objfile): Don't unlink objfile.
+	(put_objfile_before): Remove.
+	(add_separate_debug_objfile): Don't call put_objfile_before.
+	(objfile::make): Call add_objfile.  Set new_objfiles_available on
+	the per-program-space data.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (syms_from_objfile_1): Use objfile_up.
+	(syms_from_objfile_1, remove_symbol_file_command): Call unlink
+	method.
+	(reread_symbols): Use objfile_up.
+	* solib.c (update_solib_list, reload_shared_libraries_1): Call
+	unlink method.
+	* objfiles.h (struct objfile) <~objfile>: Now private.
+	<unlink>: New method.
+	(struct objfile_deleter): New.
+	(objfile_up): New typedef.
+	* objfiles.c (objfile::unlink): New method.
+	(free_objfile_separate_debug, free_all_objfiles)
+	(objfile_purge_solibs): Use it.
+	* jit.c (jit_unregister_code): Remove.
+	(jit_inferior_exit_hook, jit_event_handler): Call unlink on
+	objfile.
+	* compile/compile-object-run.c (do_module_cleanup): Call unlink on
+	objfile.
+	* compile/compile-object-load.c (compile_object_load): Use
+	objfile_up.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (symbol_file_add_with_addrs): Pass "parent" to
+	objfile::make.
+	* objfiles.h (struct objjfile) <make>: No longer inline.
+	(add_separate_debug_objfile): Don't declare.
+	* objfiles.c (add_separate_debug_objfile): Now static.
+	(objfile::make): Move from objfiles.h.  Call
+	add_separate_debug_objfile.  Add "parent" parameter.
+
+2019-12-12  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (symbol_file_add_with_addrs): Use objfile::make.
+	* objfiles.h (struct objfile): Make constructor private.
+	<make>: New static method.
+	* jit.c (jit_object_close_impl): Update.
+
+2019-12-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c (jit_reader_try_read_symtab): Replace xmalloc/xfree with
+	gdb::byte_vector.
+
+2019-12-12  Tom Tromey  <tromey@adacore.com>
+
+	* xml-support.c (xml_fetch_content_from_file): Don't call
+	malloc_failure.
+	* utils.h (class gdb_argv): Remove malloc_failure comment.
+	* utils.c (gdb_argv::reset): Don't call malloc_failure.
+
+2019-12-12  Tom Tromey  <tromey@adacore.com>
+
+	* Makefile.in (ALL_TARGET_OBS): Add riscv-ravenscar-thread.o.
+	(HFILES_NO_SRCDIR): Add riscv-ravenscar-thread.h.
+	(ALLDEPFILES): Add riscv-ravenscar-thread.c.
+	* configure.tgt (riscv-*-*): Add riscv-ravenscar-thread.o.
+	* riscv-ravenscar-thread.c: New file.
+	* riscv-ravenscar-thread.h: New file.
+	* riscv-tdep.c (riscv_gdbarch_init): Call
+	register_riscv_ravenscar_ops.
+
+2019-12-12  Tom Tromey  <tromey@adacore.com>
+
+	* gdbsupport/thread-pool.c (set_thread_name): Use
+	ATTRIBUTE_UNUSED.
+
+2019-12-12  Luis Machado  <luis.machado@linaro.org>
+
+	* gdbsupport/safe-strerror.c: Don't include diagnostics.h.
+	(select_strerror_r): Use ATTRIBUTE_UNUSED instead of the diagnostics
+	macros.
+
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_set_win_height_command): Call
+	tui_adjust_window_height.
+	(tui_adjust_win_heights, new_height_ok): Remove.
+	* tui/tui-layout.h (tui_adjust_window_height): Declare.
+	* tui/tui-layout.c (tui_adjust_window_height): New function.
+
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_resize_all): Remove code, call
+	tui_apply_current_layout.
+
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.h (tui_apply_current_layout): Declare.
+	* tui/tui-layout.c (standard_layouts, applied_layout): New
+	globals.
+	(tui_apply_current_layout): New function.
+	(show_layout): Set applied_layout.  Call
+	tui_apply_current_layout.
+	(show_source_command, show_disasm_command)
+	(show_source_disasm_command, show_data)
+	(show_source_or_disasm_and_command): Remove.
+	(initialize_layouts): New function.
+	(_initialize_tui_layout): Call initialize_layouts.
+
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.h (class tui_layout_base)
+	(class tui_layout_window, class tui_layout_split): New.
+	* tui/tui-layout.c (tui_get_window_by_name)
+	(tui_layout_window::clone, tui_layout_window::apply)
+	(tui_layout_window::get_sizes, tui_layout_window::add_split)
+	(tui_layout_split::add_window, tui_layout_split::clone)
+	(tui_layout_split::get_sizes)
+	(tui_layout_split::set_weights_from_heights)
+	(tui_layout_split::adjust_size, tui_layout_split::apply): New
+	functions.
+	(tui_layout_split::add_split, tui_layout_split::add_split)
+	(tui_layout_split::set_weights_from_heights)
+	(tui_layout_split::set_weights_from_heights): New functions.
+
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_gen_win_info::make_window): Update.
+	* tui/tui-win.c (tui_adjust_win_heights, tui_resize_all): Update.
+	* tui/tui-layout.c (tui_gen_win_info::resize): Update.
+	* tui/tui-data.h (struct tui_point): Remove.
+	(struct tui_gen_win_info) <origin>: Remove.
+	<x, y>: New fields.
+	* tui/tui-command.c (tui_cmd_window::resize): Update.
+
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (struct tui_locator_window) <min_height>:
+	Implement.
+	* tui/tui-regs.h (struct tui_data_item_window) <min_height>:
+	Implement.
+	* tui/tui-data.h (struct tui_gen_win_info) <min_height>: New
+	method.
+	(struct tui_win_info) <min_height>: Implement.
+
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_gen_win_info) <can_box>: New method.
+	(struct tui_win_info) <can_box>: Update.
+
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (struct tui_locator_window) <max_height>: New
+	method.
+	* tui/tui-regs.h (struct tui_data_item_window) <max_height>: New
+	method.
+	* tui/tui-data.h (struct tui_gen_win_info) <max_height>: New
+	method.
+	(struct tui_win_info) <max_height>: Now override.
+
+2019-12-11  Joel Brobecker  <brobecker@adacore.com>
+
+	* NEWS: Create a new section for the next release branch.
+	Rename the section of the current branch, now that it has
+	been cut.
+
+2019-12-11  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 9 branch created (27f7b2f64062ac9e52afc60509263c2702a9ebd0):
+	* version.in: Bump version to 10.0.50.DATE-git.
+
+2019-12-11  Tom Tromey  <tromey@adacore.com>
+
+	PR build/25268:
+	* gdbsupport/thread-pool.c (set_thread_name): New function.
+	(thread_pool::set_thread_count): Don't call pthread_setname_np.
+	(thread_pool::thread_function): Call set_thread_name.
+
+2019-12-11  Tom Tromey  <tromey@adacore.com>
+
+	* fbsd-tdep.c (fbsd_core_info_proc_status): Cast result of
+	bfd_get_signed_8.
+
+2019-12-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Document -raw-values option and the related setting commands.
+	* printcmd.c (print_command_parse_format): Do not set opts->raw off,
+	only set it on when /r is given.
+	* valprint.c (value_print_option_defs): New element raw-values.
+	* Makefile.in: Add the new file.
+
+2019-12-10  Christian Biesinger  <cbiesinger@google.com>
+
+	* gdbsupport/safe-strerror.c: Supress the unused function warning
+	for select_strerror_r.
+
+2019-12-10  Christian Biesinger  <cbiesinger@google.com>
+
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* gdbsupport/agent.c (gdb_connect_sync_socket): Call
+	safe_strerror instead of strerror.
+	* gdbsupport/common.m4: Don't check for strerror.
+	* gdbsupport/safe-strerror.c: Support both the glibc version
+	of strerror_r and the XSI version.
+
+2019-12-10  Tom Tromey  <tromey@adacore.com>
+
+	* ada-typeprint.c (print_choices): Use a single "?".
+	(print_variant_part): Print "?" if the discriminant name
+	is not known.
+
+2019-12-10  George Barrett  <bob@bob131.so>
+
+	Fix scripted probe breakpoints.
+	* breakpoint.c (tracepoint_probe_breakpoint_ops): Move
+	declaration forward.
+	(breakpoint_ops_for_event_location_type)
+	(breakpoint_ops_for_event_location): Add function definitions.
+	(break_command_1, trace_command): Use
+	breakpoint_ops_for_event_location.
+	* breakpoint.h (breakpoint_ops_for_event_location): Add function
+	declarations.
+	* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Use
+	breakpoint_ops_for_event_location.
+	* python/py-breakpoint.c (bppy_init): Use
+	breakpoint_ops_for_event_location.
+
+2019-12-09  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdbtypes.c (rank_one_type): Return INCOMPATIBLE_TYPE_BADNESS
+	when ranking an lvalue argument for an rvalue parameter.
+
+2019-12-08  Wataru Ashihara  <wataash@wataash.com>
+
+	* darwin-nat.c (darwin_nat_target::create_inferior): Fix
+	template argument for scoped_restore_tmpl from bool to int.
+
+2019-12-07  Keith Seitz  <keiths@redhat.com>
+
+	* build-id.c (build_id_bfd_get): Permit bfd_core, too.
+	(build_id_to_debug_bfd): Make static, rewriting to use
+	build_id_to_bfd_suffix.
+	(build_id_to_bfd_suffix): Copy of build_id_to_debug_bfd,
+	adding `suffix' parameter. Append SUFFIX to file names
+	when searching for matching files.
+	(build_id_to_debug_bfd): Use build_id_to_bfd_suffix.
+	(build_id_to_exec_bfd): Likewise.
+	* build-id.h (build_id_to_debug_bfd): Clarify that function
+	searches for BFD of debug info file.
+	(build_id_to_exec_bfd): Declare.
+	* corelow.c: Include build-id.h.
+	(locate_exec_from_corefile_build_id): New function.
+	(core_target_open): If no executable BFD is found,
+	search for a core file BFD using build-id.
+
+2019-12-06  Christian Biesinger  <cbiesinger@google.com>
+
+	* bcache.c: Put in namespace gdb.
+	* bcache.h: Likewise.
+	* gdbtypes.c (check_types_worklist): Update.
+	(types_deeply_equal): Update.
+	* macrotab.c (struct macro_table) <bcache>: Update.
+	(new_macro_table): Update.
+	* macrotab.h (struct bcache): Put this forward declaration
+	inside namespace gdb.
+	(new_macro_table): Update.
+	* objfiles.h (struct objfile_per_bfd_storage) <filename_cache>:
+	Update.
+	<macro_cache>: Update.
+	* psymtab.h: (psymtab_storage) <psymbol_cache>: Update.
+
+2019-12-06  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/24971
+	* block.c (best_symbol, better_symbol): New function.
+	(block_lookup_symbol_primary, block_lookup_symbol): Prefer def over
+	decl.
+
+2019-12-06  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdbtypes.h: Define the REFERENCE_SEE_THROUGH_BADNESS value.
+	* gdbtypes.c (rank_one_type): Use REFERENCE_SEE_THROUGH_BADNESS
+	for ranking see-through reference cases.
+
+2019-12-06  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* stack.c (faas_command): Check a command is provided.
+	* thread.c (taas_command, tfaas_command): Likewise.
+
+2019-12-05  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* inferior.c (prune_inferiors):  Only call delete_inferior,
+	Do not modify the inferior list.
+
+2019-12-05  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* c-exp.y: Update calls to lookup_typename,
+	lookup_signed_typename and lookup_unsigned_typename.
+	* c-lang.c (evaluate_subexp_c): Likewise.
+	* cp-namespace.c (cp_lookup_symbol_imports_or_template):
+	Likewise.
+	* eval.c (binop_promote): Likewise.
+	* gdbtypes.c (lookup_typename): Remove gdbarch parameter.
+	(lookup_unsigned_typename): Likewise.
+	(lookup_signed_typename): Likewise.
+	* gdbtypes.h (lookup_unsigned_typename): Likewise.
+	(lookup_signed_typename): Likewise.
+	(lookup_typename): Likewise.
+	* guile/scm-type.c (tyscm_lookup_typename): Update calls to
+	lookup_typename, lookup_signed_typename,
+	lookup_unsigned_typename.
+	* m2-exp.y: Likewise.
+	* printcmd.c (printf_wide_c_string): Likewise.
+	(ui_printf): Likewise.
+	* python/py-type.c (typy_lookup_typename): Likewise.
+	* python/py-xmethods.c (python_xmethod_worker::invoke):
+	Likewise.
+	* rust-exp.y: Likewise.
+
+2019-12-04  Christian Biesinger  <cbiesinger@google.com>
+
+	* configure.nat (obsd64): Add missing files x86-nat.o and
+	nat/x86-dregs.o.
+
+2019-12-04  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (val_print_string): Use metadata_style.
+	* go-valprint.c (print_go_string): Use metadata style.
+	* p-valprint.c (pascal_object_print_static_field): Use metadata
+	style.
+	* cp-valprint.c (cp_print_static_field): Use metadata style.
+
+2019-12-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Chris January  <chris.january@arm.com>
+
+	* f-exp.y (COMPLEX_KEYWORD, SINGLE, DOUBLE, PRECISION): New
+	tokens.
+	(typebase): New patterns for complex, single/double precision, and
+	single/double complex.
+	(f77_keywords): Change token for complex keyword, and add single,
+	double, and precision keywords.
+
+2019-12-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* avr-tdep.c (_initialize_avr_tdep): Improve help of command
+	"info io_registers".
+
+2019-12-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* regcache.c (cooked_read_test): Initialize thread list of
+	mock_inferior.
+
+2019-12-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* aarch64-linux-tdep.c: Remove includes.
+
+2019-12-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* aarch64-tdep.c: Remove includes.
+
+2019-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* filtered-iterator.h (filtered_iterator) <operator==,
+	operator!=>: Compare wrapped iterators, not wrapped pointers.
+	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
+	unittests/filtered_iterator-selftests.c.
+	* unittests/filtered_iterator-selftests.c: New file.
+
+2019-12-04  Tom Tromey  <tromey@adacore.com>
+
+	* gdbtypes.c (create_range_type): Inherit endianity
+	from base type.
+
+2019-12-04  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (decode_constrained_packed_array)
+	(ada_value_assign, value_assign_to_component): Update.
+	* dwarf2loc.c (rw_pieced_value, access_memory)
+	(dwarf2_compile_expr_to_ax): Update.
+	* dwarf2read.c (dwarf2_add_field): Update.
+	* eval.c (evaluate_subexp_standard): Update.
+	* gdbarch.c, gdbarch.h: Rebuild.
+	* gdbarch.sh (bits_big_endian): Remove.
+	* gdbtypes.h (union field_location): Update comment.
+	* target-descriptions.c (make_gdb_type): Update.
+	* valarith.c (value_bit_index): Update.
+	* value.c (struct value) <bitpos>: Update comment.
+	(unpack_bits_as_long, modify_field): Update.
+	* value.h (value_bitpos): Update comment.
+
+2019-12-04  Tom Tromey  <tromey@adacore.com>
+
+	* gdbtypes.c (type_byte_order): Move earlier.  Assert for unknown
+	endian-ness.
+
+2019-12-04  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (dwarf2_init_float_type)
+	(dwarf2_init_complex_target_type): Add byte_order parameter.
+	(read_base_type): Compute byte order earlier.
+	* gdbtypes.c (init_float_type): Add byte_order parameter.
+	* gdbtypes.h (init_float_type): Add byte_order parameter.
+
+2019-12-04  Tom Tromey  <tromey@adacore.com>
+
+	* unittests/tui-selftests.c: Conditionally include tui-winsource.h.
+
+2019-12-04  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (process_structure_scope): Initialize
+	"discr_offset".
+
+2019-12-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* mi/mi-symbol-cmds.c (mi_symbol_info): Take extra parameter, and
+	add it into the search spec.
+	(parse_max_results_option): New function.
+	(mi_info_functions_or_variables): Parse -max-results flag and pass
+	it to mi_symbol_info.
+	(mi_cmd_symbol_info_modules): Likewise.
+	(mi_cmd_symbol_info_types): Likewise.
+	* symtab.c (global_symbol_searcher::add_matching_symbols): Change
+	return type to bool, change result container into a set, and don't
+	add new results if we have enough already.
+	(global_symbol_searcher::add_matching_msymbols): Change return
+	type to bool, and don't add new results if we have enough already.
+	(sort_search_symbols_remove_dups): Delete.
+	(global_symbol_searcher::search): Early exit from search loop when
+	we have enough results.  Use a std::set to collect the results
+	from calling add_matching_symbols.
+	* symtab.h (global_symbol_searcher) <set_max_seach_results>: New
+	member function.
+	(global_symbol_searcher) <m_max_search_results>: New member
+	variable.
+	(global_symbol_searcher) <add_matching_symbols>: Update header
+	comment and change return type to bool.
+	(global_symbol_searcher) <add_matching_msymbols>: Update header
+	comment and change return type to bool.
+
+2019-12-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* symtab.c (symbol_search::compare_search_syms): Update header
+	comment.
+	(global_symbol_searcher::is_suitable_msymbol): New function.
+	(global_symbol_searcher::expand_symtabs): New function.
+	(global_symbol_searcher::add_matching_symbols): New function.
+	(global_symbol_searcher::add_matching_msymbols): New function.
+	(global_symbol_searcher::search): Move most of the content
+	into the new functions above, and call them as needed.
+	* symtab.h (global_symbol_searcher) <expand_symtabs>: New member
+	function.
+	(global_symbol_searcher) <add_matching_symbols>: New member
+	function.
+	(global_symbol_searcher) <add_matching_msymbols>: New member
+	function.
+	(global_symbol_searcher) <is_suitable_msymbol>: New member
+	function.
+
+2019-12-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* mi/mi-cmds.c (mi_cmds): Add -symbol-info-module-functions and
+	-symbol-info-module-variables entries.
+	* mi/mi-cmds.h (mi_cmd_symbol_info_module_functions): Declare.
+	(mi_cmd_symbol_info_module_variables): Declare.
+	* mi/mi-symbol-cmds.c
+	(module_symbol_search_iterator): New typedef.
+	(output_module_symbols_in_single_module_and_file): New function.
+	(output_module_symbols_in_single_module): New function.
+	(mi_info_module_functions_or_variables): New function.
+	(mi_cmd_symbol_info_module_functions): New function.
+	(mi_cmd_symbol_info_module_variables): New function.
+	* NEWS: Mention new MI command.
+
+2019-12-03  Christian Biesinger  <cbiesinger@google.com>
+
+	* bcache.c (hash): Remove.
+	(hash_continue): Remove.
+	* bcache.h (hash): Remove.
+	(hash_continue): Remove.
+	(struct bcache) <ctor>: Update.
+	* psymtab.c (psymbol_hash): Update.
+	* stabsread.c (hashname): Update.
+	* utils.h (fast_hash): Add an argument for a start value,
+	defaulting to zero.
+
+2019-12-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	* symtab.c (symbol_cache_clear_slot):  Move close to cleared type.
+	(destroy_block_symbol_cache): New function.
+	(symbol_cache:~symbol_cache) Call destroy_block_symbol_cache.
+	(resize_symbol_cache): Likewise.
+
+2019-12-02  Tom Tromey  <tom@tromey.com>
+
+	* unittests/tui-selftests.c (run_tests): Make conditional.
+	(_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.
+
+2019-11-25  Christian Biesinger  <cbiesinger@google.com>
+
+	* solib.c (solib_find_1): Change int to bool.
+	(exec_file_find): Change int to bool.
+	(solib_find): Change int to bool.
+	(solib_read_symbols): Change int to bool.
+	(solib_used): Change int to bool.
+	(solib_add): Change int to bool.
+	(info_sharedlibrary_command): Change int to bool.
+	(solib_contains_address_p): Change int to bool.
+	(solib_keep_data_in_core): Change int to bool.
+	(in_solib_dynsym_resolve_code): Change int to bool.
+	(reload_shared_libraries_1): Change int to bool.
+	(gdb_sysroot_changed): Change int to bool.
+	* solib.h (solib_read_symbols): Change int to bool.
+	(solib_contains_address_p): Change int to bool.
+	(solib_keep_data_in_core): Change int to bool.
+	(in_solib_dynsym_resolve_code): Change int to bool.
+	(libpthread_name_p): Change int to bool.
+
+2019-11-25  Luis Machado  <luis.machado@linaro.org>
+
+	* NEWS (New Commands): Mention "set debug remote-packet-max-chars".
+	* remote.c (REMOTE_DEBUG_MAX_CHAR): Remove.
+	(remote_packet_max_chars): New static global.
+	(show_remote_packet_max_chars): New function.
+	(remote_target::putpkt_binary): Adjust to use new
+	remote_packet_max_chars option.
+	(remote_target::getpkt_or_notif_sane_1): Likewise.
+	(_initialize_remote): Register new remote-packet-max-chars option.
+
+2019-11-24  Simon Marchi  <simon.marchi@efficios.com>
+
+	* m68k-linux-nat.c: Include gdbarch.h.
+
+2019-11-24  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (read_symbols): Update.
+	* psymtab.c (require_partial_symbols): Change type of "verbose" to
+	bool.
+	(psym_map_symtabs_matching_filename, find_pc_sect_psymtab)
+	(psym_lookup_symbol, psym_find_last_source_symtab)
+	(psym_forget_cached_source_info, psym_print_stats)
+	(psym_expand_symtabs_for_function, psym_expand_all_symtabs)
+	(psym_expand_symtabs_with_fullname, psym_map_symbol_filenames)
+	(psym_map_matching_symbols, psym_expand_symtabs_matching)
+	(psym_find_compunit_symtab_by_address)
+	(maintenance_print_psymbols, maintenance_info_psymtabs)
+	(maintenance_check_psymtabs): Update.
+	* psymtab.h (require_partial_symbols): Change type of "verbose" to
+	bool.
+
+2019-11-22  Tom Tromey  <tom@tromey.com>
+
+	* observable.h: Update comments.
+
+2019-11-22  Tom Tromey  <tromey@adacore.com>
+
+	* ada-tasks.c (ada_task_is_alive): Make parameter const.
+	(print_ada_task_info): Don't try to fetch thread id if task is not
+	alive.
+
+2019-11-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-exp.y: Update.
+	* ada-lang.c (sort_choices): Update.
+	(ada_print_symbol_signature): Update.
+	(resolve_subexp): Update.
+	(ada_parse_renaming): Update.
+	(ada_read_renaming_var_value): Update.
+	(lesseq_defined_than): Update.
+	(remove_extra_symbols): Update.
+	(remove_irrelevant_renamings): Update.
+	(ada_add_block_symbols): Update.
+	(ada_collect_symbol_completion_matches): Update.
+	(ada_is_renaming_symbol): Update.
+	(aggregate_assign_from_choices): Update.
+	(ada_evaluate_subexp): Update.
+	(ada_has_this_exception_support): Update.
+	(ada_is_non_standard_exception_sym): Update.
+	(ada_add_exceptions_from_frame): Update.
+	(ada_add_global_exceptions): Update.
+	(ada_print_subexp): Update.
+	* ax-gdb.c (gen_var_ref): Update.
+	(gen_maybe_namespace_elt): Update.
+	(gen_expr_for_cast): Update.
+	(gen_expr): Update.
+	* block.h: Update.
+	* blockframe.c (find_pc_partial_function): Update.
+	* breakpoint.c (print_breakpoint_location): Update.
+	(update_static_tracepoint): Update.
+	* btrace.c (ftrace_print_function_name): Update.
+	(ftrace_function_switched): Update.
+	* buildsym.c (find_symbol_in_list): Update.
+	* c-exp.y: Update.
+	* c-typeprint.c (c_print_typedef): Update.
+	(c_type_print_template_args): Update.
+	* cli/cli-cmds.c (edit_command): Update.
+	(list_command): Update.
+	(print_sal_location): Update.
+	* coffread.c (patch_opaque_types): Update.
+	(process_coff_symbol): Update.
+	(coff_read_enum_type): Update.
+	* compile/compile-c-symbols.c (c_symbol_substitution_name): Update.
+	(convert_one_symbol): Update.
+	(hash_symname): Update.
+	(eq_symname): Update.
+	* compile/compile-cplus-symbols.c (convert_one_symbol): Update.
+	* compile/compile-cplus-types.c (debug_print_scope): Update.
+	* compile/compile-loc2c.c (do_compile_dwarf_expr_to_c): Update.
+	* compile/compile-object-load.c (get_out_value_type): Update.
+	* cp-namespace.c (cp_scan_for_anonymous_namespaces): Update.
+	(search_symbol_list): Update.
+	(cp_lookup_symbol_imports_or_template): Update.
+	* cp-support.c (overload_list_add_symbol): Update.
+	* ctfread.c (psymtab_to_symtab): Update.
+	* dbxread.c (cp_set_block_scope): Update.
+	* dictionary.c (iter_match_first_hashed): Update.
+	(iter_match_next_hashed): Update.
+	(insert_symbol_hashed): Update.
+	(iter_match_next_linear): Update.
+	* dictionary.h: Update.
+	* dwarf2loc.c (func_get_frame_base_dwarf_block): Update.
+	(locexpr_describe_location_piece): Update.
+	(locexpr_describe_location_1): Update.
+	(locexpr_generate_c_location): Update.
+	(loclist_describe_location): Update.
+	(loclist_generate_c_location): Update.
+	* dwarf2read.c (dw2_debug_names_lookup_symbol): Update.
+	(read_func_scope): Update.
+	(process_enumeration_scope): Update.
+	(new_symbol): Update.
+	(dwarf2_const_value): Update.
+	(dwarf2_symbol_mark_computed): Update.
+	* eval.c (evaluate_funcall): Update.
+	(evaluate_subexp_standard): Update.
+	* expprint.c (print_subexp_standard): Update.
+	(dump_subexp_body_standard): Update.
+	* f-valprint.c (info_common_command_for_block): Update.
+	* findvar.c (get_hosting_frame): Update.
+	(default_read_var_value): Update.
+	* go-lang.c (go_symbol_package_name): Update.
+	* guile/scm-block.c (bkscm_print_block_smob): Update.
+	* guile/scm-symbol.c (syscm_print_symbol_smob): Update.
+	(gdbscm_symbol_name): Update.
+	(gdbscm_symbol_linkage_name): Update.
+	(gdbscm_symbol_print_name): Update.
+	* infcall.c (get_function_name): Update.
+	* infcmd.c (jump_command): Update.
+	(finish_command): Update.
+	* infrun.c (insert_exception_resume_breakpoint): Update.
+	* linespec.c (canonicalize_linespec): Update.
+	(create_sals_line_offset): Update.
+	(convert_linespec_to_sals): Update.
+	(complete_label): Update.
+	(find_label_symbols_in_block): Update.
+	* m2-typeprint.c (m2_print_typedef): Update.
+	* mdebugread.c (mdebug_reg_to_regnum): Update.
+	(parse_symbol): Update.
+	(mylookup_symbol): Update.
+	* mi/mi-cmd-stack.c (list_arg_or_local): Update.
+	(list_args_or_locals): Update.
+	* objc-lang.c (compare_selectors): Update.
+	(info_selectors_command): Update.
+	(compare_classes): Update.
+	(info_classes_command): Update.
+	(find_imps): Update.
+	* p-typeprint.c (pascal_print_typedef): Update.
+	* printcmd.c (build_address_symbolic): Update.
+	(info_address_command): Update.
+	(print_variable_and_value): Update.
+	* python/py-framefilter.c (extract_sym): Update.
+	(py_print_single_arg): Update.
+	* python/py-symbol.c (sympy_str): Update.
+	(sympy_get_name): Update.
+	(sympy_get_linkage_name): Update.
+	* python/python.c (gdbpy_rbreak): Update.
+	* record-btrace.c (btrace_get_bfun_name): Update.
+	(btrace_call_history): Update.
+	* rust-lang.c (rust_print_typedef): Update.
+	* solib-frv.c (frv_fdpic_find_canonical_descriptor): Update.
+	* stabsread.c (stab_reg_to_regnum): Update.
+	(define_symbol): Update.
+	(read_enum_type): Update.
+	(common_block_end): Update.
+	(cleanup_undefined_types_1): Update.
+	(scan_file_globals): Update.
+	* stack.c (print_frame_arg): Update.
+	(print_frame_args): Update.
+	(find_frame_funname): Update.
+	(info_frame_command_core): Update.
+	(iterate_over_block_locals): Update.
+	(print_block_frame_labels): Update.
+	(do_print_variable_and_value): Update.
+	(iterate_over_block_arg_vars): Update.
+	(return_command): Update.
+	* symmisc.c (dump_symtab_1): Update.
+	(print_symbol): Update.
+	* symtab.c (eq_symbol_entry): Update.
+	(symbol_cache_dump): Update.
+	(lookup_language_this): Update.
+	(find_pc_sect_line): Update.
+	(skip_prologue_sal): Update.
+	(symbol_search::compare_search_syms): Update.
+	(treg_matches_sym_type_name): Update.
+	(search_symbols): Update.
+	(print_symbol_info): Update.
+	(rbreak_command): Update.
+	(completion_list_add_symbol): Update.
+	(find_gnu_ifunc): Update.
+	(get_symbol_address): Update.
+	(search_module_symbols): Update.
+	(info_module_subcommand): Update.
+	* symtab.h (SYMBOL_NATURAL_NAME): Remove.
+	(SYMBOL_LINKAGE_NAME): Remove.
+	(SYMBOL_DEMANGLED_NAME): Remove.
+	(SYMBOL_PRINT_NAME): Remove.
+	(SYMBOL_SEARCH_NAME): Remove.
+	* tracepoint.c (set_traceframe_context): Update.
+	(validate_actionline): Update.
+	(collection_list::collect_symbol): Update.
+	(encode_actions_1): Update.
+	(info_scope_command): Update.
+	(print_one_static_tracepoint_marker): Update.
+	* typeprint.c (typedef_hash_table::add_template_parameters): Update.
+	* valops.c (address_of_variable): Update.
+	(find_overload_match): Update.
+	(find_oload_champ): Update.
+
+2019-11-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-lang.c (ada_lookup_simple_minsym): Update.
+	(ada_collect_symbol_completion_matches): Update.
+	* ada-tasks.c (read_atcb): Update.
+	* amd64-windows-tdep.c (amd64_skip_main_prologue): Update.
+	(amd64_windows_skip_trampoline_code): Update.
+	* arm-tdep.c (skip_prologue_function): Update.
+	(arm_skip_stack_protector): Update.
+	* arm-wince-tdep.c (arm_pe_skip_trampoline_code): Update.
+	(arm_wince_skip_main_prologue): Update.
+	* ax-gdb.c (gen_expr): Update.
+	* block.c (call_site_for_pc): Update.
+	* blockframe.c (find_pc_partial_function): Update.
+	* breakpoint.c (set_breakpoint_location_function): Update.
+	* btrace.c (ftrace_print_function_name): Update.
+	(ftrace_function_switched): Update.
+	* c-valprint.c (print_unpacked_pointer): Update.
+	* coffread.c (coff_symfile_read): Update.
+	* compile/compile-c-symbols.c (convert_symbol_bmsym): Update.
+	* compile/compile-cplus-symbols.c (convert_symbol_bmsym): Update.
+	* dwarf-index-write.c (write_psymbols): Update.
+	* dwarf2loc.c (call_site_to_target_addr): Update.
+	(func_verify_no_selftailcall): Update.
+	(tailcall_dump): Update.
+	(call_site_find_chain_1): Update.
+	(dwarf_expr_reg_to_entry_parameter): Update.
+	* elfread.c (elf_gnu_ifunc_record_cache): Update.
+	* eval.c (evaluate_funcall): Update.
+	(evaluate_subexp_standard): Update.
+	(evaluate_subexp_for_sizeof): Update.
+	* expprint.c (print_subexp_standard): Update.
+	(dump_subexp_body_standard): Update.
+	* frame.c (get_prev_frame_always_1): Update.
+	* frv-tdep.c (frv_skip_main_prologue): Update.
+	* gnu-v2-abi.c (gnuv2_value_rtti_type): Update.
+	* gnu-v3-abi.c (gnuv3_rtti_type): Update.
+	(gnuv3_get_typename_from_type_info): Update.
+	(gnuv3_skip_trampoline): Update.
+	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Update.
+	* i386-tdep.c (i386_skip_main_prologue): Update.
+	(i386_pe_skip_trampoline_code): Update.
+	* ia64-tdep.c (ia64_convert_from_func_ptr_addr): Update.
+	* infcall.c (get_function_name): Update.
+	* linespec.c (minsym_found): Update.
+	* linux-fork.c (info_checkpoints_command): Update.
+	* m32c-tdep.c (m32c_m16c_address_to_pointer): Update.
+	(m32c_m16c_pointer_to_address): Update.
+	* maint.c (maintenance_translate_address): Update.
+	* minsyms.c (add_minsym_to_hash_table): Update.
+	(add_minsym_to_demangled_hash_table): Update.
+	(lookup_minimal_symbol_mangled): Update.
+	(lookup_minimal_symbol_demangled): Update.
+	(lookup_minimal_symbol_linkage): Update.
+	(lookup_minimal_symbol_text): Update.
+	(lookup_minimal_symbol_by_pc_name): Update.
+	(minimal_symbol_is_less_than): Update.
+	(compact_minimal_symbols): Update.
+	(build_minimal_symbol_hash_tables): Update.
+	(find_solib_trampoline_target): Update.
+	* mips-tdep.c (mips_stub_frame_sniffer): Update.
+	(mips_skip_pic_trampoline_code): Update.
+	* msp430-tdep.c (msp430_skip_trampoline_code): Update.
+	* objc-lang.c (info_selectors_command): Update.
+	(info_classes_command): Update.
+	(find_methods): Update.
+	(find_imps): Update.
+	* p-valprint.c (pascal_val_print): Update.
+	* ppc-linux-tdep.c (powerpc_linux_in_dynsym_resolve_code): Update.
+	* ppc-sysv-tdep.c (convert_code_addr_to_desc_addr): Update.
+	* printcmd.c (build_address_symbolic): Update.
+	(info_symbol_command): Update.
+	* psymtab.c (psymbol_name_matches): Update.
+	(match_partial_symbol): Update.
+	(lookup_partial_symbol): Update.
+	(print_partial_symbols): Update.
+	(sort_pst_symbols): Update.
+	(maintenance_check_psymtabs): Update.
+	* python/py-framefilter.c (py_print_frame): Update.
+	* python/python.c (gdbpy_rbreak): Update.
+	* record-btrace.c (btrace_get_bfun_name): Update.
+	(btrace_call_history): Update.
+	* rs6000-tdep.c (rs6000_skip_main_prologue): Update.
+	(rs6000_skip_trampoline_code): Update.
+	* sol-thread.c (info_cb): Update.
+	* stabsread.c (scan_file_globals): Update.
+	* stack.c (find_frame_funname): Update.
+	(info_frame_command_core): Update.
+	* symmisc.c (dump_msymbols): Update.
+	* symtab.c (symbol_natural_name): Rename to..,
+	(general_symbol_info::natural_name): ...this.
+	(symbol_demangled_name): Rename to...
+	(general_symbol_info::demangled_name): ...this.
+	(symbol_search_name): Rename to...
+	(general_symbol_info::search_name): ...this.
+	(symbol_matches_search_name): Update.
+	(find_pc_sect_line): Update.
+	(skip_prologue_sal): Update.
+	(search_symbols): Update.
+	(print_msymbol_info): Update.
+	(rbreak_command): Update.
+	(completion_list_add_msymbol): Update.
+	(completion_list_objc_symbol): Update.
+	(get_msymbol_address): Update.
+	* symtab.h (struct general_symbol_info): Add member functions
+	natural_name (), linkage_name (), print_name (), demangled_name (),
+	and search_name ().
+	(SYMBOL_NATURAL_NAME): Update.
+	(symbol_natural_name): Move to a member function on general_symbol_info.
+	(SYMBOL_DEMANGLED_NAME): Update.
+	(symbol_demangled_name): Move to a member function on
+	general_symbol_info.
+	(SYMBOL_SEARCH_NAME): Update.
+	(symbol_search_name): Move to a member function on general_symbol_info.
+	(MSYMBOL_NATURAL_NAME): Remove.
+	(MSYMBOL_LINKAGE_NAME): Remove.
+	(MSYMBOL_PRINT_NAME): Remove.
+	(MSYMBOL_DEMANGLED_NAME): Remove.
+	(MSYMBOL_SEARCH_NAME): Remove.
+	* x86-tdep.c (x86_in_indirect_branch_thunk): Update.
+
+2019-11-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (create_demangled_names_hash): Use per_bfd->
+	minimal_symbol_count for computing the initial size, if greater
+	than our default size.
+
+2019-11-22  Tom de Vries  <tdevries@suse.de>
+
+	* contrib/words.sh: Improve words extraction.
+
+2019-11-22  Tom de Vries  <tdevries@suse.de>
+
+	* contrib/words.sh: Combine sed invocations.
+
+2019-11-21  Christian Biesinger  <cbiesinger@google.com>
+
+	* Makefile.in: Update.
+	* demangle.c: Rename to...
+	* gdb-demangle.c: ..this.
+	(is_cplus_marker): Change return type to bool.
+	(_initialize_demangler): Rename to...
+	(_initialize_gdb_demangle): ...this.
+	* gdb-demangle.h (is_cplus_marker): Change return type to bool.
+	* symtab.h (demangle): Remove declaration; instead include
+	gdb-demangle.h.
+
+2019-11-21  Tom Tromey  <tromey@adacore.com>
+
+	* gdbsupport/format.c (format_pieces): Parse %I64d.
+	* unittests/format_pieces-selftests.c (test_windows_formats): New
+	function.
+	(run_tests): Call it.
+
+2019-11-21  Peeter Joot  <peeter.joot@lzlabs.com>
+
+	Byte reverse display of variables with DW_END_big, DW_END_little
+	(DW_AT_endianity) dwarf attributes if different than the native
+	byte order.
+	* ada-lang.c (ada_value_binop):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* ada-valprint.c (printstr):
+	(ada_val_print_string):
+	* ada-lang.c (value_pointer):
+	(ada_value_binop):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* c-lang.c (c_get_string):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* c-valprint.c (c_val_print_array):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* cp-valprint.c (cp_print_class_member):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* dwarf2loc.c (rw_pieced_value):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* dwarf2read.c (read_base_type): Handle DW_END_big,
+	DW_END_little
+	* f-lang.c (f_get_encoding):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* findvar.c (default_read_var_value):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* gdbtypes.c (check_types_equal):
+	Require matching TYPE_ENDIANITY_NOT_DEFAULT if set.
+	(recursive_dump_type): Print TYPE_ENDIANITY_BIG,
+	and TYPE_ENDIANITY_LITTLE if set.
+	(type_byte_order): new function.
+	* gdbtypes.h (TYPE_ENDIANITY_NOT_DEFAULT): New macro.
+	(struct main_type) <flag_endianity_not_default>:
+	New field.
+	(type_byte_order): New function.
+	* infcmd.c (default_print_one_register_info):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* p-lang.c (pascal_printstr):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* p-valprint.c (pascal_val_print):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* printcmd.c (print_scalar_formatted):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* solib-darwin.c (darwin_current_sos):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* solib-svr4.c (solib_svr4_r_ldsomap):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* stap-probe.c (stap_modify_semaphore):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* target-float.c (target_float_same_format_p):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* valarith.c (scalar_binop):
+	(value_bit_index):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* valops.c (value_cast):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* valprint.c (generic_emit_char):
+	(generic_printstr):
+	(val_print_string):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* value.c (unpack_long):
+	(unpack_bits_as_long):
+	(unpack_value_bitfield):
+	(modify_field):
+	(pack_long):
+	(pack_unsigned_long):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* findvar.c (unsigned_pointer_to_address):
+	(signed_pointer_to_address):
+	(unsigned_address_to_pointer):
+	(address_to_signed_pointer):
+	(default_read_var_value):
+	(default_value_from_register):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* gnu-v3-abi.c (gnuv3_make_method_ptr):
+	Use type_byte_order instead of gdbarch_byte_order.
+	* riscv-tdep.c (riscv_print_one_register_info):
+	Use type_byte_order instead of gdbarch_byte_order.
+
+2019-11-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* top.c (current_ui_gdb_stdout_ptr): Spell out by hand.
+	(current_ui_gdb_stdin_ptr): Likewise.
+	(current_ui_gdb_stderr_ptr): Likewise.
+	(current_ui_gdb_stdlog_ptr): Likewise.
+	(current_ui_current_uiout_ptr): Likewise.
+	(gen_ret_current_ui_field_ptr): Remove.
+
+2019-11-21  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/24956
+	* cli/cli-script.c (execute_control_command): Only switch to
+	INTERP_CONSOLE's ui_out when INTERP_MI is active.
+
+2019-11-19  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_partial_win_by_name): Move from tui-data.c.
+	Now static.  Change type of "name".
+	(tui_set_win_height_command): Don't copy "arg".
+	* tui/tui-data.h (tui_partial_win_by_name): Don't declare.
+	* tui/tui-data.c (tui_partial_win_by_name): Move to tui-win.c.
+
+2019-11-19  Ali Tamur <tamur@google.com>
+
+	* dwarf2read.c (dw2_get_file_names_reader): Replace "if (attr)" with
+	"if (attr != nullptr)".
+	(dwarf2_find_base_address): Likewise.
+	(dwarf2_build_include_psymtabs): Likewise.
+	(read_cutu_die_from_dwo): Likewise.
+	(read_func_scope): Likewise.
+	(read_call_site_scope): Likewise.
+	(dwarf2_get_pc_bounds): Likewise.
+	(dwarf2_record_block_ranges): Likewise.
+	(dwarf2_add_field): Likewise.
+	(dwarf2_add_member_fn): Likewise.
+	(read_structure_type): Likewise.
+	(read_enumeration_type): Likewise.
+	(read_array_type): Likewise.
+	(read_array_order): Likewise.
+	(read_set_type): Likewise.
+	(read_common_block): Likewise.
+	(read_tag_reference_type): Likewise.
+	(read_tag_string_type): Likewise.
+	(read_subroutine_type): Likewise.
+	(read_base_type): Likewise.
+	(read_subrange_type): Likewise.
+	(new_symbol): Likewise.
+	(prepare_one_comp_unit): Likewise.
+
+2019-11-19  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (windows_nat_target::attach): Include GetLastError
+	result in error when DebugActiveProcess fails.
+
+2019-11-18  Sergio Durigan Junior  <sergiodj@redhat.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	https://bugzilla.redhat.com/show_bug.cgi?id=1765117
+	* target.c (target_stack::push): Call 'unpush' if there's a
+	target on top of the stack.
+
+2019-11-18  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* python/py-block.c (blpy_dealloc): Call tp_free.
+	(blpy_block_syms_dealloc): Likewise.
+	* python/py-finishbreakpoint.c (bpfinishpy_dealloc): Likewise.
+	* python/py-inferior.c (infpy_dealloc): Likewise.
+	* python/py-lazy-string.c (stpy_dealloc): Likewise.
+	* python/py-linetable.c (ltpy_iterator_dealloc): Likewise.
+	* python/py-symbol.c (sympy_dealloc): Likewise.
+	* python/py-symtab.c (stpy_dealloc): Likewise.
+	* python/py-type.c (typy_iterator_dealloc): Likewise.
+
+2019-11-18  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.h (struct symbol) <owner>: Initialize explicitly in the
+	constructor instead of using a class initializer.
+
+2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* Makefile.in: Replace {posix,mingw}-strerror.c with safe-strerror.c.
+	* configure: Regenerate.
+	* configure.ac: Don't source common.host.
+	* gdbsupport/common.host: Remove.
+	* gdbsupport/mingw-strerror.c: Remove.
+	* gdbsupport/posix-strerror.c: Rename to...
+	* gdbsupport/safe-strerror.c: ...this.
+
+2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* maint.c (scoped_command_stats::print_time): Use localtime_r
+	instead of localtime (provided through gnulib if necessary).
+	* nat/linux-osdata.c (time_from_time_t): Use ctime_r instead
+	of ctime.
+
+2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* gdbsupport/common-defs.h: Include time.h before pathmax.h to
+	avoid compile errors.
+
+2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* gdbsupport/common.m4: No longer check for strerror_r.
+	* gdbsupport/posix-strerror.c (safe_strerror): Always call the
+	POSIX version of strerror_r, now that gnulib provides it if
+	necessary.
+
+2019-11-14  Christian Biesinger  <cbiesinger@google.com>
+
+	* README (`configure' options): Update.
+
+2019-11-14  Tom Tromey  <tromey@adacore.com>
+
+	* eval.c (evaluate_subexp_standard) <BINOP_ASSIGN>: Do not pass an
+	expected type for the RHS if the LHS is a convenience variable.
+
+2019-11-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* unittests/vec-utils-selftests.c (unordered_remove_tests::obj):
+	Provide explicit default and copy constructor.
+
+2019-11-14  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* python/py-finishbreakpoint.c (gdbpy_breakpoint_created):
+	only call Py_INCREF (newbp) in the bppy_pending_object case.
+
+2019-11-13  Tom Tromey  <tromey@adacore.com>
+
+	PR build/25182:
+	* psympriv.h (partial_symbol): Remove static assert.
+	* symtab.h (general_symbol_info, symbol): Remove static assert.
+
+2019-11-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbsupport/format.c (format_pieces::format_pieces): Support
+	printf 'z' size modifier.
+	* gdbsupport/format.h (enum argclass): Add size_t_arg.
+	* printcmd.c (ui_printf):  Handle size_t_arg.
+	* ui-out.c (ui_out::vmessage): Likewise.
+	* unittests/format_pieces-selftests.c (test_format_int_sizes): New
+	function.
+	(run_tests): Call test_format_int_sizes.
+
+2019-11-12  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-exp.y (write_ambiguous_var): Update.
+	* buildsym.c (add_symbol_to_list): Update.
+	* dwarf2read.c (read_variable): Update.
+	(new_symbol): Update.
+	* jit.c (finalize_symtab): Update.
+	* language.c (language_alloc_type_symbol): Update.
+	* symtab.c (fixup_symbol_section): Update.
+	(initialize_objfile_symbol_1): Move code to...
+	(initialize_objfile_symbol): ...here. Remove now-unnecessary memset.
+	(allocate_symbol): Update.
+	(allocate_template_symbol): Update.
+	(get_symbol_address): Update.
+	* symtab.h (struct symbol): Inherit from general_symbol_info instead
+	of having as a field, and add a constructor.
+	(SYMBOL_VALUE): Update.
+	(SYMBOL_VALUE_ADDRESS): Update.
+	(SET_SYMBOL_VALUE_ADDRESS): Update.
+	(SYMBOL_VALUE_BYTES): Update.
+	(SYMBOL_VALUE_COMMON_BLOCK): Update.
+	(SYMBOL_BLOCK_VALUE): Update.
+	(SYMBOL_VALUE_CHAIN): Update.
+	(SYMBOL_LANGUAGE): Update.
+	(SYMBOL_SECTION): Update.
+	(SYMBOL_OBJ_SECTION): Update.
+	(SYMBOL_SET_LANGUAGE): Update.
+	(SYMBOL_SET_LINKAGE_NAME): Update.
+	(SYMBOL_SET_NAMES): Update.
+	(SYMBOL_NATURAL_NAME): Update.
+	(SYMBOL_LINKAGE_NAME): Update.
+	(SYMBOL_DEMANGLED_NAME): Update.
+	(SYMBOL_SEARCH_NAME): Update.
+	(SYMBOL_MATCHES_SEARCH_NAME): Update.
+	(struct symbol): Update.
+	(struct template_symbol): Update.
+	(struct rust_vtable_symbol): Update.
+	* xcoffread.c (SYMBOL_DUP): Update.
+
+2019-11-12  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_layout): Set current_layout.
+	(show_source_disasm_command, show_data)
+	(show_source_or_disasm_and_command): Don't set current_layout.
+
+2019-11-12  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (_initialize_tui_layout): Move to end.
+
+2019-11-12  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (resize_message): New global.
+	(show_tui_resize_message): New function.
+	(tui_async_resize_screen): Print message if requested.
+	(_initialize_tui_win): Add tui-resize-message setting.
+	* NEWS: Add entry for new commands.
+
+2019-11-11  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_initialize_readline): Add new bindable readline
+	functions.
+
+2019-11-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* nat/linux-osdata.c (user_from_uid): Use getpwuid_r.
+
+2019-11-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-symbol.c (gdbpy_lookup_static_symbols): New
+	function.
+	* python/python-internal.h (gdbpy_lookup_static_symbols):
+	Declare new function.
+	* python/python.c (python_GdbMethods): Add
+	gdb.lookup_static_symbols method.
+	* NEWS: Mention gdb.lookup_static_symbols.
+
+2019-11-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-symbol.c (gdbpy_lookup_static_symbol): Lookup in
+	static block of current object file first.  Also fix typo in
+	header comment.
+
+2019-11-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* stack.c (set_last_displayed_sal): Delete.
+	(last_displayed_sal_valid): Delete.
+	(last_displayed_pspace): Delete.
+	(last_displayed_addr): Delete.
+	(last_displayed_symtab): Delete.
+	(last_displayed_line): Delete.
+	(class last_displayed_symtab_info_type): New.
+	(last_displayed_symtab_info): New static global variable.
+	(print_frame_info): Call methods on last_displayed_symtab_info.
+	(clear_last_displayed_sal): Update header comment, and make use of
+	last_displayed_symtab_info.
+	(last_displayed_sal_is_valid): Likewise.
+	(get_last_displayed_pspace): Likewise.
+	(get_last_displayed_addr): Likewise.
+	(get_last_displayed_symtab): Likewise.
+	(get_last_displayed_line): Likewise.
+	(get_last_displayed_sal): Likewise.
+	* stack.h (clear_last_displayed_sal): Update header comment.
+	(last_displayed_sal_is_valid): Likewise.
+	(get_last_displayed_pspace): Likewise.
+	(get_last_displayed_addr): Likewise.
+	(get_last_displayed_symtab): Likewise.
+	(get_last_displayed_line): Likewise.
+	(get_last_displayed_sal): Likewise.
+
+2019-11-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* stack.c (frame_show_address): Convert return type to bool.
+	* stack.h (frame_show_address): Likewise, and update header
+	comment.
+
+2019-11-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add new file to the list.
+	* unittests/vec-utils-selftests.c: New file.
+	* gdbsupport/gdb_vecs.h (unordered_remove): Avoid self move assign.
+
+2019-11-10  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_unhighlight_win): Use can_box.
+	(tui_highlight_win): Likewise.
+	(tui_win_info::check_and_display_highlight_if_needed): Likewise.
+	* tui/tui-data.h (struct tui_win_info) <can_highlight>: Remove.
+	* tui/tui-command.h (struct tui_cmd_window) <tui_cmd_window>:
+	Don't set can_highlight.
+
+2019-11-10  Tom Tromey  <tom@tromey.com>
+
+	* cli/cli-style.h (class cli_style_option) <cli_style_option>:
+	Remove unused declaration.
+
+2019-11-08  Tom Tromey  <tromey@adacore.com>
+
+	* top.c (read_command_file): Update.
+	(command_line_input): Make return type const.
+	* python/py-gdb-readline.c: Update.
+	* linespec.c (decode_line_2): Update.
+	* defs.h (command_line_input): Make return type const.
+	* cli/cli-script.c (read_next_line): Make return type const.
+	* ada-lang.c (get_selections): Update.
+
+2019-11-06  Christian Biesinger  <cbiesinger@google.com>
+
+	* linux-tdep.c (linux_info_proc): Use strtok_r instead of strtok.
+	* mi/mi-main.c (output_cores): Likewise.
+	* nat/linux-osdata.c (linux_xfer_osdata_cpus): Likewise.
+	(linux_xfer_osdata_modules): Likewise.
+	* remote.c (register_remote_support_xml): Likewise.
+	* sparc64-tdep.c (adi_is_addr_mapped): Likewise.
+	* xml-syscall.c (syscall_create_syscall_desc): Likewise.
+
+2019-11-06  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-interp.c: Don't include readline.h.
+	* tui/tui-hooks.c: Don't include readline.h.
+	* symmisc.c: Include tilde.h, not readline.h.
+	* symfile.c: Include tilde.h, not readline.h.
+	* source.c: Include tilde.h, not readline.h.
+	* solib.c: Include tilde.h, not readline.h.
+	* psymtab.c: Include tilde.h, not readline.h.
+	* exec.c: Include tilde.h, not readline.h.
+	* corelow.c: Include tilde.h, not readline.h.
+	* cli/cli-dump.c: Include tilde.h, not readline.h.
+	* cli/cli-cmds.c: Don't include readline.h.
+
+2019-11-05  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-disasm.c (struct tui_asm_line) <addr_size>: New member.
+	(tui_disassemble): Set addr_size.
+	(tui_disasm_window::set_contents): Use addr_size.
+
+2019-11-05  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (rust_language_defn): Update.
+	* python/py-value.c (valpy_string): Call c_get_string.
+	* p-lang.c (pascal_language_defn): Update.
+	* opencl-lang.c (opencl_language_defn): Update.
+	* objc-lang.c (objc_language_defn): Update.
+	* m2-lang.c (m2_language_defn): Update.
+	* language.c (unknown_language_defn, auto_language_defn): Update.
+	(default_get_string): Remove.
+	* guile/scm-value.c (gdbscm_value_to_string): Use c_get_string.
+	* go-lang.c (go_language_defn): Update.
+	* f-lang.c (f_language_defn): Update.
+	* d-lang.c (d_language_defn): Update.
+	* c-lang.c (c_language_defn, cplus_language_defn)
+	(asm_language_defn, minimal_language_defn): Update.
+	* ada-lang.c (ada_language_defn): Update.
+	* language.h (struct language_defn) <la_get_string>: Remove.
+	(LA_GET_STRING): Remove.
+	(default_get_string): Don't declare.
+
+2019-11-05  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.h (struct tui_source_window): Inline
+	constructor.  Remove destructor.
+	<style_changed, m_observable>: Move to superclass.
+	* tui/tui-winsource.h (tui_copy_source_line): Declare.
+	(struct tui_source_window_base): Move private members to end.
+	<style_changed, m_observable>: Move from tui_source_window.
+	* tui/tui-winsource.c (tui_copy_source_line): Move from
+	tui-source.c.  Rename from copy_source_line.  Add special handling
+	for negative line number.
+	(tui_source_window_base::style_changed): Move from
+	tui_source_window.
+	(tui_source_window_base): Register observer.
+	(~tui_source_window_base): New.
+	* tui/tui-source.c (copy_source_line): Move to tui-winsource.c;
+	rename.
+	(tui_source_window::set_contents): Use tui_copy_source_line.
+	(tui_source_window::tui_source_window): Move to tui-source.h.
+	(tui_source_window::~tui_source_window): Remove.
+	(tui_source_window::style_changed): Move to superclass.
+	* tui/tui-disasm.c (tui_disassemble): Create string file with
+	styling, when possible.  Add "addr_size" parameter.
+	(tui_disasm_window::set_contents): Use tui_copy_source_line.
+	Don't compute maximum size.
+	(len_without_escapes): New function
+
+2019-11-05  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_element) <line>: Now a
+	std::string.
+	* tui/tui-winsource.c (tui_show_source_line): Update.
+	* tui/tui-source.c (tui_source_window::set_contents): Update.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Update.
+
+2019-11-05  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.h (gdb_static_assert): Put && operator at the beginning
+	of the line instead of the end.
+
+2019-11-04  Christian Biesinger  <cbiesinger@google.com>
+
+	* psympriv.h: Add static_asserts for sizeof (general_symbol_info)
+	and sizeof (symbol).
+	* symtab.h: Add a static_assert for sizeof (partial_symbol).
+
+2019-11-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* NEWS (Changes since GDB 8.3): Document Solaris 10 removal.
+	* configure.host: Mark *-*-solaris2.10* obsolete.
+	* configure.tgt: Mark Solaris < 11 obsolete.
+	* MAINTAINERS (Target Instruction Set Architectures) <sparc>:
+	Update target triplet.
+
+2019-11-01  Tom Tromey  <tromey@adacore.com>
+
+	* utils.c (print_sys_errmsg): Simplify.
+
+2019-11-01  Tom Tromey  <tromey@adacore.com>
+
+	* gdbsupport/mingw-strerror.c (safe_strerror): Constify result.
+
+2019-11-01  Christian Biesinger  <cbiesinger@google.com>
+
+	* configure: Regenerate.
+	* configure.ac: Remove check for strerror_r.
+	* gdbsupport/common.m4: Check for strerror_r.
+
+2019-11-01  Luis Machado  <luis.machado@linaro.org>
+
+	PR gdb/25124
+
+	* arm-tdep.c (arm_per_objfile): Rename to ...
+	(arm_per_bfd): ... this.
+	(arm_objfile_data_key): Rename to ...
+	(arm_bfd_data_key): ... this.
+	(arm_find_mapping_symbol): Adjust access to new bfd_key-based
+	data.
+	(arm_record_special_symbol): Likewise.
+
+2019-10-31  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-typeprint.c (ada_print_typedef): Don't print newline at the
+	end.
+	* c-typeprint.c (c_print_typedef): Likewise.
+	* f-typeprint.c (f_print_typedef): Likewise.
+	* m2-typeprint.c (m2_print_typedef): Likewise.
+	* p-typeprint.c (pascal_print_typedef): Likewise.
+	* rust-lang.c (rust_print_typedef): Likewise.
+	* symtab.c (print_symbol_info): Print a newline after calling
+	typedef_print.
+
+2019-10-31  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* symtab.c (info_module_cmdlist): New variable.
+	(info_module_command): New function.
+	(search_module_symbols): New function.
+	(info_module_subcommand): New function.
+	(struct info_modules_var_func_options): New struct.
+	(info_modules_var_func_options_defs): New variable.
+	(make_info_modules_var_func_options_def_group): New function.
+	(info_module_functions_command): New function.
+	(info_module_variables_command): New function.
+	(info_module_var_func_command_completer): New function.
+	(_initialize_symtab): Register new 'info module functions' and
+	'info module variables' commands.
+	* symtab.h (typedef symbol_search_in_module): New typedef.
+	(search_module_symbols): Declare new function.
+	* NEWS: Mention new commands.
+
+2019-10-31  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (dw2_symtab_iter_next): Handle MODULE_DOMAIN.
+	(dw2_expand_marked_cus): Handle MODULES_DOMAIN.
+	(dw2_debug_names_iterator::next): Handle MODULE_DOMAIN and
+	MODULES_DOMAIN.
+	(scan_partial_symbols): Only create partial module symbols for non
+	declarations.
+	* psymtab.c (recursively_search_psymtabs): Handle MODULE_DOMAIN
+	and MODULES_DOMAIN.
+	* symtab.c (search_domain_name): Likewise.
+	(search_symbols): Likewise.
+	(print_symbol_info): Likewise.
+	(symtab_symbol_info): Likewise.
+	(info_modules_command): New function.
+	(_initialize_symtab): Register 'info modules' command.
+	* symtab.h (enum search_domain): Add MODULES_DOMAIN.
+	* NEWS: Mention new 'info modules' command.
+
+2019-10-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Mention $_gdb_setting, $_gdb_setting_str, $_gdb_maint_setting
+	and $_gdb_maint_setting_str.
+
+2019-10-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-cmds.c (setting_cmd, value_from_setting)
+	(gdb_setting_internal_fn, gdb_maint_setting_internal_fn)
+	(str_value_from_setting, gdb_setting_str_internal_fn)
+	(gdb_maint_setting_str_internal_fn): New functions.
+	(_initialize_cli_cmds): Define the new convenience functions.
+	* cli/cli-setshow.h (get_setshow_command_value_string): Constify.
+	* cli/cli-setshow.c (get_setshow_command_value_string): Constify.
+
+2019-10-31  Christian Biesinger  <cbiesinger@google.com>
+
+	* agent.c (set_can_use_agent): When the setting is turned on,
+	look up agent symbols if we don't have them yet.
+	(agent_new_objfile): Don't look up agent symbols when the agent
+	setting is off.
+
+2019-10-31  Christian Biesinger  <cbiesinger@google.com>
+
+	* config.in: Regenerate.
+
+2019-10-31  Christian Biesinger  <cbiesinger@google.com>
+
+	* configure: Regenerate.
+	* configure.ac: Check for strerror_r.
+	* gdbsupport/common-utils.h (safe_strerror): Change return value
+	to const char * and document that this function is now threadsafe.
+	* gdbsupport/posix-strerror.c (safe_strerror): Make buf
+	thread_local and call strerror_r, if available.
+	* utils.c (perror_string): Update.
+	(print_sys_errmsg): Update.
+
+2019-10-31  Luis Machado  <luis.machado@linaro.org>
+
+	* arm-tdep.c (arm_exidx_data_key): Use bfd_key instead of
+	objfile_key.
+	(arm_exidx_new_objfile): Adjust to use objfile->obfd instead of
+	objfile to fetch per-bfd data.
+	(arm_find_exidx_entry): Likewise.
+
+2019-10-31  Christian Biesinger  <cbiesinger@google.com>
+
+	* gdbsupport/agent.c (debug_agent): Change type to bool.
+	(use_agent): Likewise.
+	(all_agent_symbols_look_up): Likewise.
+	(agent_loaded_p): Change return value to bool.
+	(agent_look_up_symbols): Update.
+	(agent_capability_check): Change return value to bool.
+	* gdbsupport/agent.h (agent_loaded_p): Likewise.
+	(debug_agent): Change type to bool.
+	(use_agent): Likewise.
+	(agent_capability_check): Change return value to bool.
+
+2019-10-30  Christian Biesinger  <cbiesinger@google.com>
+
+	* minsyms.c (clear_minimal_symbol_hash_tables): New function.
+	(build_minimal_symbol_hash_tables): Code to clear the table moved
+	to clear_minimal_symbol_hash_tables.
+	(minimal_symbol_reader::install): Call clear_minimal_symbol_hash_tables
+	when needed.
+
+2019-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infcmd.c: Remove includes.
+	* infrun.c: Remove includes.
+
+2019-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* ada-lang.h (GROW_VECT): Move to ada-lang.c.
+	(grow_vect): Remove declaration.
+	(ada_type_of_array): Remove declaration.
+	(ada_update_initial_language): Remove declaration.
+	(ada_fold_name): Remove declaration.
+	(ada_fill_in_ada_prototype): Remove declaration.
+	(user_select_syms): Remove declaration.
+	(get_selections): Remove declaration.
+	(ada_tag_type): Remove declaration.
+	(ada_value_tag): Remove declaration.
+	(ada_is_others_clause): Remove declaration.
+	(ada_in_variant): Remove declaration.
+	(ada_value_struct_elt): Remove declaration.
+	(ada_attribute_name): Remove declaration.
+	(ada_system_address_type): Remove declaration.
+	* ada-lang.c (ada_watch_location_expression): Make static.
+	(GROW_VECT): Move here from ada-lang.h.
+	(grow_vect): Make static.
+	(ada_update_initial_language): Make static.
+	(ada_fold_name): Make static.
+	(ada_type_of_array): Make static.
+	(encoded_ordered_before): Move up.
+	(sort_choices): Move up.
+	(print_signatures): Move up.
+	(ada_print_symbol_signature): Move up.
+	(get_selections): Move up and make static.
+	(user_select_syms): Move up and make static.
+	(ada_value_struct_elt): Move up and make static.
+	(ada_tag_type): Make static.
+	(ada_value_tag): Make static.
+	(ada_is_others_clause): Make static.
+	(ada_in_variant): Make static.
+	(ada_attribute_name): Make static.
+
+2019-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* ada-lang.c: Remove includes.
+	* ada-typeprint.c: Remove includes.
+	* ada-valprint.c: Remove includes.
+
+2019-10-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* addrmap.c: Add static assertions of type size, moved from
+	_initialize_addrmap.
+	(_initialize_addrmap): Remove.
+
+2019-10-29  Christian Biesinger  <cbiesinger@google.com>
+
+	* coffread.c (record_minimal_symbol): Update.
+	(process_coff_symbol): Update.
+	* dbxread.c (read_dbx_symtab): Update.
+	* dwarf2read.c (add_partial_symbol): Update.
+	(fixup_go_packaging): Update.
+	(load_partial_dies): Update.
+	(new_symbol): Update.
+	* elfread.c (record_minimal_symbol): Change signature to use
+	gdb::string_view instead of name+len.
+	(elf_symtab_read): Update.
+	(elf_rel_plt_read): Update.
+	* mdebugread.c (parse_partial_symbols): Update.
+	(handle_psymbol_enumerators): Update.
+	(new_symbol): Update.
+	* minsyms.c (minimal_symbol_reader::record_full): Change signature
+	to use gdb::string_view instead of name+len.
+	* minsyms.h (class minimal_symbol_reader) <record_full>: Likewise.
+	* psympriv.h (add_psymbol_to_list): Likewise.
+	* psymtab.c (add_psymbol_to_bcache): Likewise.
+	(add_psymbol_to_list): Likewise.
+	* stabsread.c (define_symbol): Update.
+	* symtab.c (symbol_set_names): Change signature to use gdb::string_view.
+	* symtab.h (SYMBOL_SET_NAMES): Likewise.
+	(symbol_set_names): Likewise.
+	* xcoffread.c (scan_xcoff_symtab): Update.
+
+2019-10-29  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.h (symbol_set_names): Document that copy_name must be
+	set to true for non-nullterminated strings.
+	* symtab.c (symbol_set_names): Only make a nullterminated copy of
+	linkage_name if the entry was not found and we need to demangle.
+
+2019-10-29  Christian Biesinger  <cbiesinger@google.com>
+
+	* Makefile.in (HFILES_NO_SRCDIR): Add gdb_binary_search.h.
+	* dwarf2-frame.c (bsearch_fde_cmp): Update.
+	(dwarf2_frame_find_fde): Replace bsearch with gdb::binary_search.
+	* gdbsupport/gdb_binary_search.h: New file.
+
+2019-10-29  Christian Biesinger  <cbiesinger@google.com>
+
+	* NEWS: Mention new --with-system-gdbinit-dir option.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Add new option --with-system-gdbinit-dir.
+	* extension.c (get_ext_lang_of_file): Return extension_language_gdb
+	for a ".gdb" suffix.
+	* main.c (get_init_files): Change system_gdbinit argument to
+	a vector and return the files in SYSTEM_GDBINIT_DIR in
+	addition to SYSTEM_GDBINIT.
+	(captured_main_1): Update.
+	(print_gdb_help): Update.
+	* top.c (print_gdb_configuration): Also print the value of
+	SYSTEM_GDBINIT_DIR.
+
+2019-10-28  Christian Biesinger  <cbiesinger@google.com>
+
+	* gdbsupport/common-utils.h (startswith): Add an overloaded version
+	that takes gdb::string_view arguments.
+
+2019-10-26  Tom de Vries  <tdevries@suse.de>
+
+	* aarch64-linux-tdep.c: Fix typos in comments.
+	* aarch64-tdep.c: Same.
+	* ada-lang.c: Same.
+	* amd64-nat.c: Same.
+	* arc-tdep.c: Same.
+	* arch/aarch64-insn.c: Same.
+	* block.c: Same.
+	* breakpoint.h: Same.
+	* btrace.h: Same.
+	* c-varobj.c: Same.
+	* cli/cli-decode.c: Same.
+	* cli/cli-script.c: Same.
+	* cli/cli-utils.h: Same.
+	* coff-pe-read.c: Same.
+	* coffread.c: Same.
+	* compile/compile-cplus-symbols.c: Same.
+	* compile/compile-object-run.c: Same.
+	* completer.c: Same.
+	* corelow.c: Same.
+	* cp-support.c: Same.
+	* demangle.c: Same.
+	* dwarf-index-write.c: Same.
+	* dwarf2-frame.c: Same.
+	* dwarf2-frame.h: Same.
+	* eval.c: Same.
+	* frame-base.h: Same.
+	* frame.h: Same.
+	* gdbcmd.h: Same.
+	* gdbtypes.h: Same.
+	* gnu-nat.c: Same.
+	* guile/scm-objfile.c: Same.
+	* i386-tdep.c: Same.
+	* i386-tdep.h: Same.
+	* infcall.c: Same.
+	* infcall.h: Same.
+	* linux-nat.c: Same.
+	* m68k-tdep.c: Same.
+	* macroexp.c: Same.
+	* memattr.c: Same.
+	* mi/mi-cmd-disas.c: Same.
+	* mi/mi-getopt.h: Same.
+	* mi/mi-main.c: Same.
+	* minsyms.c: Same.
+	* nat/aarch64-sve-linux-sigcontext.h: Same.
+	* objfiles.h: Same.
+	* ppc-linux-nat.c: Same.
+	* ppc-linux-tdep.c: Same.
+	* ppc-tdep.h: Same.
+	* progspace.h: Same.
+	* prologue-value.h: Same.
+	* python/py-evtregistry.c: Same.
+	* python/py-instruction.h: Same.
+	* record-btrace.c: Same.
+	* record-full.c: Same.
+	* remote.c: Same.
+	* rs6000-tdep.c: Same.
+	* ser-tcp.c: Same.
+	* sol-thread.c: Same.
+	* sparc-sol2-tdep.c: Same.
+	* sparc64-tdep.c: Same.
+	* stabsread.c: Same.
+	* symfile.c: Same.
+	* symtab.h: Same.
+	* target.c: Same.
+	* tracepoint.c: Same.
+	* tui/tui-data.h: Same.
+	* tui/tui-io.c: Same.
+	* tui/tui-win.c: Same.
+	* tui/tui.c: Same.
+	* unittests/rsp-low-selftests.c: Same.
+	* user-regs.h: Same.
+	* utils.c: Same.
+	* utils.h: Same.
+	* valarith.c: Same.
+	* valops.c: Same.
+	* valprint.c: Same.
+	* valprint.h: Same.
+	* value.c: Same.
+	* value.h: Same.
+	* varobj.c: Same.
+	* x86-nat.h: Same.
+	* xtensa-tdep.c: Same.
+
+2019-10-25  Ali Tamur <tamur@google.com>
+
+	* charset.c (find_charset_names): Reflect API change.
+
+2019-10-25  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (struct demangled_name_entry): Change demangled name
+	to a unique_xmalloc_ptr<char>, now that we don't allocate it as
+	part of the struct anymore.
+	(symbol_set_names): No longer obstack allocate + copy the demangled
+	name, just store the allocated name from bfd.
+
+2019-10-25  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2-frame.c (dwarf2_cie_table): Now a typedef.
+	(bsearch_cie_cmp, add_cie): Remove.
+	(find_cie): Reimplement.
+	(decode_frame_entry_1, decode_frame_entry): Change type.  Update.
+	(dwarf2_build_frame_info): Update.
+
+2019-10-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gdb/25126
+	* symfile.c (reread_symbols): Call forget_cached_source_info to
+	clear the stale source cache.
+
+2019-10-24  Christian Biesinger  <cbiesinger@google.com>
+
+	* configure: Regenerate.
+	* configure.ac: Remove code that sets python_has_threads.
+
+2019-10-24  Christian Biesinger  <cbiesinger@google.com>
+
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Remove the code that uses sed to get the python
+	version and defines HAVE_LIBPYTHON2_6 / HAVE_LIBPYTHON2_7.
+
+2019-10-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-progspace.c (pspy_block_for_pc): Return None for all
+	error paths.
+
+2019-10-23  Tom Tromey  <tom@tromey.com>
+
+	* arc-tdep.c: Remove ".." from include.
+	* frv-tdep.c: Remove ".." from include.
+	* lm32-tdep.c: Remove ".." from include.
+	* microblaze-tdep.c: Remove ".." from include.
+	* or1k-tdep.h: Remove ".." from include.
+	* s12z-tdep.c: Remove ".." from include.
+	* Makefile.in (OPCODES_CFLAGS): Add comment.
+	(TOP_CFLAGS): New variable.
+	(INTERNAL_CFLAGS_BASE): Add TOP_CFLAGS.
+
+2019-10-23  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in (READLINE_DIR): Update.
+
+2019-10-23  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infcall.c (call_function_by_hand_dummy): Fix the function
+	comment.  And extract out a code section into...
+	(reserve_stack_space): ...this new function.
+
+2019-10-23  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infcall.c (value_arg_coerce): Remove an unused parameter.
+	(call_function_by_hand_dummy): Update the call to
+	'value_arg_coerce'.
+
+2019-10-23  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infcall.c (call_function_by_hand_dummy): Refactor.
+
+2019-10-23  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* MAINTAINERS (Write After Approval): Add Tankut Baris Aktemur.
+
+2019-10-23  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* configure.ac: Don't check for sigprocmask.
+	* gdbsupport/common.m4 (GDB_AC_COMMON): Check for sigprocmask.
+
+2019-10-23  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* acinclude.m4: Use m4_include, not sinclude.
+
+2019-10-23  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoints/24687
+	* symtab.c (iterate_over_some_symtabs): Apply gdb_realpath on fullname.
+
+2019-10-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (struct demangled_name_entry) <language>: Change from
+	bitfield to regular variable.
+
+2019-10-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (struct demangled_name_entry): Add a constructor.
+	(free_demangled_name_entry): New function to call the destructor
+	for demangled_name_entry.
+	(create_demangled_names_hash): Pass free_demangled_name_entry to
+	htab_create_alloc.
+	(symbol_set_names): Call placement new for demangled_name_entry.
+	* utils.c: No longer include xxhash.h here, now that fast_hash
+	is inlined in the header.
+	* utils.h: Instead, include it here.
+
+2019-10-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* Makefile.in: Link with libxxhash.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Search for libxxhash.
+	* utils.c (fast_hash): Use xxhash if present.
+
+2019-10-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* utils.h (fast_hash): New function.
+	* symtab.c (hash_demangled_name_entry): Call new function
+	fast_hash.
+
+2019-10-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (struct demangled_name_entry): Change type of mangled
+	to gdb::string_view. Also adds a constructor that takes the
+	mangled name.
+	(hash_demangled_name_entry): Update.
+	(eq_demangled_name_entry): Update.
+	(free_demangled_name_entry): New function to call the destructor
+	now that this is not a POD anymore.
+	(create_demangled_names_hash): Pass free_demangled_name_entry to
+	htab_create_alloc.
+	(symbol_set_names): Update.
+
+2019-10-21  Ali Tamur  <tamu@google.com>
+
+	* dwarf2read.c (dir_index): Change type.
+	(file_name_index): Likewise.
+	(line_header::include_dir_at): Change comment and implementation on
+	whether it is DWARF 5.
+	(line_header::is_valid_file_index): New function.
+	(line_header::file_name_at): Change comment and implementation on
+	whether it is DWARF 5.
+	(line_header::file_names): Change to private field renamed as
+	m_file_names and introduce a new accessor method.
+	(line_header::file_names_size): New method.
+	(line_header::include_dirs): Change to private field and rename as
+	m_include_dirs.
+	(dw2_get_file_names_reader): Define local var at a smaller scope and
+	reflect API change.
+	(dwarf2_cu::setup_type_unit_groups): Reflect API change.
+	(process_structure_scope): Likewise.
+	(line_header::add_include_dir): Change message and reflect renaming.
+	(line_header::add_file_name): Likewise.
+	(read_formatted_entries): Handle DW_FORM_data16.
+	(dwarf_decode_line_header): Fix line header length calculation.
+	(psymtab_include_file_name): Change comment and API.
+	(lnp_state_machine::m_file): Update comment and reflect type change.
+	(lnp_state_machine::record_line): Reflect type change.
+	(dwarf_decode_lines): Reflect API change.
+	(file_file_name): Likewise.
+	(file_full_name): Likewise.
+
+2019-10-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* objfiles.c (sort_cmp): Ensure that !(a < a) holds true.
+
+2019-10-21  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_exec_info_content): Remove typedef.
+
+2019-10-21  Tom Tromey  <tom@tromey.com>
+
+	* configure.ac (nm.h): Conditionally create nm.h link.  Subst
+	NM_H.   Use AC_CONFIG_LINKS.
+	* configure: Rebuild.
+	* Makefile.in (NM_H): New variable.
+	(generated_files): Add NM_H.  Remove gcore.
+	(nm.h, stamp-nmh): New targets.
+
+2019-10-20  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (unlink_objfile, put_objfile_before): Don't declare.
+	* objfiles.c (unlink_objfile): Move earlier.  Now static.  Remove
+	obsolete comment.
+	(put_objfile_before): Now static.
+
+2019-10-19  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbsupport/common-utils.h (startswith): Change return type to
+	bool.
+
+2019-10-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* bcache.c (bcache::print_statistics): Use std::sort instead of qsort.
+	* breakpoint.c (bp_locations_compare): Rename to...
+	(bp_location_is_less_than): ...this, and change to std::sort semantics.
+	(update_global_location_list): Use std::sort instead of qsort.
+	* buildsym.c (compare_line_numbers): Rename to...
+	(lte_is_less_than): ...this, and change to std::sort semantics.
+	(buildsym_compunit::end_symtab_with_blockvector): Use std::sort
+	instead of qsort.
+	* disasm.c (compare_lines): Rename to...
+	(line_is_less_than): ...this, and change to std::sort semantics.
+	(do_mixed_source_and_assembly_deprecated): Call std::sort instead
+	of qsort.
+	* dwarf2-frame.c (qsort_fde_cmp): Rename to...
+	(fde_is_less_than): ...this, and change to std::sort semantics.
+	(dwarf2_build_frame_info): Call std::sort instead of qsort.
+	* mdebugread.c (compare_blocks):
+	(block_is_less_than): ...this, and change to std::sort semantics.
+	(sort_blocks): Call std::sort instead of qsort.
+	* objfiles.c (qsort_cmp): Rename to...
+	(sort_cmp): ...this, and change to std::sort semantics.
+	(update_section_map): Call std::sort instead of qsort.
+	* remote.c (compare_pnums): Remove.
+	(map_regcache_remote_table): Call std::sort instead of qsort.
+	* utils.c (compare_positive_ints): Remove.
+	* utils.h (compare_positive_ints): Remove.
+	* xcoffread.c (compare_lte): Remove.
+	(arrange_linetable): Call std::sort instead of qsort.
+
+2019-10-19  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* symfile.c (init_entry_point_info): Fix typo.
+	* i386-darwin-tdep.c (darwin_dwarf_signal_frame_p): Fix typo.
+
+2019-10-18  Tom de Vries  <tdevries@suse.de>
+
+	* aarch64-tdep.c: Fix typos in comments.
+	* ada-lang.c: Same.
+	* ada-tasks.c: Same.
+	* alpha-tdep.c: Same.
+	* alpha-tdep.h: Same.
+	* amd64-nat.c: Same.
+	* amd64-windows-tdep.c: Same.
+	* arc-tdep.c: Same.
+	* arc-tdep.h: Same.
+	* arch-utils.c: Same.
+	* arm-nbsd-tdep.c: Same.
+	* arm-tdep.c: Same.
+	* ax-gdb.c: Same.
+	* blockframe.c: Same.
+	* btrace.c: Same.
+	* c-varobj.c: Same.
+	* coff-pe-read.c: Same.
+	* coffread.c: Same.
+	* cris-tdep.c: Same.
+	* darwin-nat.c: Same.
+	* dbxread.c: Same.
+	* dcache.c: Same.
+	* disasm.c: Same.
+	* dtrace-probe.c: Same.
+	* dwarf-index-write.c: Same.
+	* dwarf2-frame-tailcall.c: Same.
+	* dwarf2-frame.c: Same.
+	* dwarf2read.c: Same.
+	* eval.c: Same.
+	* exceptions.c: Same.
+	* fbsd-tdep.c: Same.
+	* findvar.c: Same.
+	* frame.c: Same.
+	* frv-tdep.c: Same.
+	* gnu-v3-abi.c: Same.
+	* go32-nat.c: Same.
+	* h8300-tdep.c: Same.
+	* hppa-tdep.c: Same.
+	* i386-linux-tdep.c: Same.
+	* i386-tdep.c: Same.
+	* ia64-libunwind-tdep.c: Same.
+	* ia64-tdep.c: Same.
+	* infcmd.c: Same.
+	* infrun.c: Same.
+	* linespec.c: Same.
+	* linux-nat.c: Same.
+	* linux-thread-db.c: Same.
+	* machoread.c: Same.
+	* mdebugread.c: Same.
+	* mep-tdep.c: Same.
+	* mn10300-tdep.c: Same.
+	* namespace.c: Same.
+	* objfiles.c: Same.
+	* opencl-lang.c: Same.
+	* or1k-tdep.c: Same.
+	* osabi.c: Same.
+	* ppc-linux-nat.c: Same.
+	* ppc-linux-tdep.c: Same.
+	* ppc-sysv-tdep.c: Same.
+	* printcmd.c: Same.
+	* procfs.c: Same.
+	* record-btrace.c: Same.
+	* record-full.c: Same.
+	* remote-fileio.c: Same.
+	* remote.c: Same.
+	* rs6000-tdep.c: Same.
+	* s12z-tdep.c: Same.
+	* score-tdep.c: Same.
+	* ser-base.c: Same.
+	* ser-go32.c: Same.
+	* skip.c: Same.
+	* sol-thread.c: Same.
+	* solib-svr4.c: Same.
+	* solib.c: Same.
+	* source.c: Same.
+	* sparc-nat.c: Same.
+	* sparc-sol2-tdep.c: Same.
+	* sparc-tdep.c: Same.
+	* sparc64-tdep.c: Same.
+	* stabsread.c: Same.
+	* stack.c: Same.
+	* symfile.c: Same.
+	* symtab.c: Same.
+	* target-descriptions.c: Same.
+	* target-float.c: Same.
+	* thread.c: Same.
+	* utils.c: Same.
+	* valops.c: Same.
+	* valprint.c: Same.
+	* value.c: Same.
+	* varobj.c: Same.
+	* windows-nat.c: Same.
+	* xcoffread.c: Same.
+	* xstormy16-tdep.c: Same.
+	* xtensa-tdep.c: Same.
+
+2019-10-17  Tom Tromey  <tromey@adacore.com>
+
+	* configure: Rebuild.
+	* configure.ac: Use AC_CONFIG_HEADERS.  Create stamp-h there, not
+	in AC_CONFIG_FILES invocation.
+	* Makefile.in (Makefile, data-directory/Makefile, stamp-h): Use
+	new-style config.status invocation.
+
+2019-10-17  Tom de Vries  <tdevries@suse.de>
+
+	* arm-nbsd-nat.c: Fix typos in comments.
+	* arm-tdep.c: Same.
+	* darwin-nat-info.c: Same.
+	* dwarf2read.c: Same.
+	* elfread.c: Same.
+	* event-top.c: Same.
+	* findvar.c: Same.
+	* gdbtypes.c: Same.
+	* hppa-tdep.c: Same.
+	* i386-tdep.c: Same.
+	* jit.c: Same.
+	* main.c: Same.
+	* mdebugread.c: Same.
+	* moxie-tdep.c: Same.
+	* nto-procfs.c: Same.
+	* osabi.c: Same.
+	* ppc-linux-tdep.c: Same.
+	* remote.c: Same.
+	* riscv-tdep.c: Same.
+	* s390-tdep.c: Same.
+	* sh-tdep.c: Same.
+	* sparc-linux-tdep.c: Same.
+	* sparc-nat.c: Same.
+	* stack.c: Same.
+	* target-descriptions.c: Same.
+	* top.c: Same.
+	* varobj.c: Same.
+
+2019-10-16  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (struct objfile) <original_name>: Now const.
+
+2019-10-16  Christian Biesinger  <cbiesinger@google.com>
+
+	* gdbsupport/gdb_setjmp.h (SIGSETJMP): Allow passing in the value to
+	pass on to sigsetjmp's second argument.
+	* cp-support.c (gdb_demangle): Unblock SIGSEGV if we caught a crash.
+
+2019-10-16  Keith Seitz  <keiths@redhat.com>
+
+	PR gdb/23567
+	* dwarf2read.c (dwarf2_per_objfile::locate_sections): Discard
+	sections whose size is greater than the file size.
+
+2019-10-16  Jim Wilson  <jimw@sifive.com>
+
+	* riscv-tdep.c (riscv_gcc_target_options): New.
+	(riscv_gnu_triplet_regexp): New.
+	(riscv_gdbarch_init): Call set_gdbarch_gcc_triplet_options and
+	set_gdbarch_gnu_triplet_regexp.
+
+2019-10-16  Christian Biesinger  <cbiesinger@google.com>
+
+	* Makefile.in: Add xml-builtin.h.
+	* features/feature_to_c.sh: Add an include for xml-builtin.h
+	to ensure that the compiler checks that the types match.
+	* xml-builtin.h: New file.
+	* xml-support.c (fetch_xml_builtin): Add missing const.
+	* xml-support.h: Remove declaration of xml_builtins.
+
+2019-10-16  Tom de Vries  <tdevries@suse.de>
+
+	PR tdep/25096
+	* amd64-tdep.c (amd64_classify_aggregate_field): Factor out of ...
+	(amd64_classify_aggregate): ... here.
+	(amd64_classify_aggregate_field): Handled fiels of nested structs
+	recursively.
+
+2019-10-16  Tom de Vries  <tdevries@suse.de>
+
+	PR tdep/24104
+	* amd64-tdep.c (amd64_push_arguments): Handle AMD64_NO_CLASS in loop
+	that handles 'theclass'.
+
+2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* linespec.c (decode_digits_ordinary): Update comment.
+	* make-target-delegates: No longer need to handle VEC case.
+	* memrange.c (normalize_mem_ranges): Update comment.
+	* namespace.c (add_using_directive): Update comment.
+	* objc-lang.c (uniquify_strings): Update comment.
+	* ppc-linux-nat.c (struct thread_points): Update comment.
+	* probe.h (find_probes_in_objfile): Update comment.
+	* target.h (enum flash_preserve_mode): Update comment.
+	* varobj.c (varobj_restrict_range): Update comment.
+	* varobj.h (varobj_list_children): Update comment.
+
+2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in: Remove references to vec.h and vec.c.
+	* aarch64-tdep.c: No longer include vec.h.
+	* ada-lang.c: Likewise.
+	* ada-lang.h: Likewise.
+	* arm-tdep.c: Likewise.
+	* ax.h: Likewise.
+	* breakpoint.h: Likewise.
+	* charset.c: Likewise.
+	* cp-support.h: Likewise.
+	* dtrace-probe.c: Likewise.
+	* dwarf2read.c: Likewise.
+	* extension.h: Likewise.
+	* gdb_bfd.c: Likewise.
+	* gdbsupport/gdb_vecs.h: Likewise.
+	* gdbsupport/vec.c: Remove.
+	* gdbsupport/vec.h: Remove.
+	* gdbthread.h: Likewise.
+	* guile/scm-type.c: Likewise.
+	* inline-frame.c: Likewise.
+	* machoread.c: Likewise.
+	* memattr.c: Likewise.
+	* memrange.h: Likewise.
+	* namespace.h: Likewise.
+	* nat/linux-btrace.h: Likewise.
+	* osdata.c: Likewise.
+	* parser-defs.h: Likewise.
+	* progspace.h: Likewise.
+	* python/py-type.c: Likewise.
+	* record-btrace.c: Likewise.
+	* rust-exp.y: Likewise.
+	* solib-target.c: Likewise.
+	* stap-probe.c: Likewise.
+	* target-descriptions.c: Likewise.
+	* target-memory.c: Likewise.
+	* target.h: Likewise.
+	* varobj.c: Likewise.
+	* varobj.h: Likewise.
+	* xml-support.h: Likewise.
+
+2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (dwarf2_per_objfile::~dwarf2_per_objfile):
+	Update for new std::vector based implementation.
+	(process_psymtab_comp_unit_reader): Likewise.
+	(scan_partial_symbols): Likewise.
+	(recursively_compute_inclusions): Likewise.
+	(compute_compunit_symtab_includes): Likewise.
+	(process_imported_unit_die): Likewise.
+	(queue_and_load_dwo_tu): Likewise.
+	(follow_die_sig_1): Likewise.
+	* dwarf2read.h: Remove DEF_VEC_P.
+	(typedef dwarf2_per_cu_ptr): Remove.
+	(struct dwarf2_per_cu_data) <imported_symtabs_empty>: New
+	function.
+	(struct dwarf2_per_cu_data) <imported_symtabs_push>: New function.
+	(struct dwarf2_per_cu_data) <imported_symtabs_size>: New function.
+	(struct dwarf2_per_cu_data) <imported_symtabs_free>: New function.
+	(struct dwarf2_per_cu_data) <imported_symtabs>: Change to
+	std::vector.
+
+2019-10-15  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (windows_nat_target::resume): Use %x when logging
+	TID.
+
+2019-10-15  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (windows_nat_target::fetch_registers)
+	(windows_nat_target::store_registers): Rename "pid" to "tid".
+
+2019-10-15  Tom Tromey  <tromey@adacore.com>
+
+	* gdbarch.h, gdbarch.c: Rebuild.
+	* gdbarch.sh (gcc_target_options): Change return type to
+	std::string.
+	* compile/compile.c (get_args): Update.
+	* nios2-tdep.c (nios2_gcc_target_options): Return std::string.
+	* arm-linux-tdep.c (arm_linux_gcc_target_options): Return
+	std::string.
+	* aarch64-linux-tdep.c (aarch64_linux_gcc_target_options): Return
+	std::string.
+	* arch-utils.c (default_gcc_target_options): Return std::string.
+	* arch-utils.h (default_gcc_target_options): Return std::string.
+	* s390-tdep.c (s390_gcc_target_options): Return std::string.
+
+2019-10-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* breakpoint.c (breakpoint_chain): Make static.
+	* tui/tui-winsource.c: Call iterate_over_breakpoints instead
+	of accessing breakpoint_chain.
+
+2019-10-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* breakpoint.c (iterate_over_breakpoints): Change function pointer
+	to a gdb::function_view and return value to bool.
+	* breakpoint.h (iterate_over_breakpoints): Likewise.
+	* dummy-frame.c (pop_dummy_frame_bpt): Update.
+	(pop_dummy_frame): Update.
+	* guile/scm-breakpoint.c (bpscm_build_bp_list): Update.
+	(gdbscm_breakpoints): Update.
+	* python/py-breakpoint.c (build_bp_list): Update.
+	(gdbpy_breakpoints): Update.
+	* python/py-finishbreakpoint.c (bpfinishpy_detect_out_scope_cb):
+	Update.
+	(bpfinishpy_handle_stop): Update.
+	(bpfinishpy_handle_exit): Update.
+	* solib-svr4.c (svr4_update_solib_event_breakpoint): Update.
+	(svr4_update_solib_event_breakpoints): Update.
+
+2019-10-15  Andreas Arnez  <arnez@linux.ibm.com>
+
+	* s390-tdep.c (s390_effective_inner_type): Ignore static fields
+	when unwrapping single-field structs.
+
+2019-10-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2read.c: Remove includes.
+
+2019-10-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* ui-out.c (ui_out::call_do_message): Silence
+	-Wformat-nonliteral warning.
+
+2019-10-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.c: Remove some includes: continuations.h, skip.h,
+	mi/mi-main.h, readline/readline.h, readline/history.h.  Add
+	include: readline/tilde.h.
+
+2019-10-12  Christian Biesinger  <cbiesinger@google.com>
+
+	* remote.c (remote_target::get_trace_status): Remove declaration of
+	trace_regblock_size.
+
+2019-10-12  Christian Biesinger  <cbiesinger@google.com>
+
+	* cli/cli-cmds.c (max_user_call_depth): Move comment to header.
+	(show_user): Remove declaration of cmdlist.
+	* cli/cli-cmds.h (max_user_call_depth): Declare.
+	* cli/cli-script.c (execute_user_command): Remove declaration
+	of max_user_call_depth.
+
+2019-10-11  Jim Wilson  <jimw@sifive.com>
+
+	* gdbsupport/print-utils.h (pulongest): Fix comment.
+	(plongest): Likewise.
+	(phex): Add missing comment, mention leading zeros.
+	(phex_nz): Add mention of no leading zeros to comment.
+
+	* riscv-tdep.c (riscv_push_dummy_code): Change %lld to %s and use
+	plongest instead of unsigned long long cast.
+
+2019-10-10  Christian Biesinger  <cbiesinger@google.com>
+
+	* main.c (captured_main_1): Include gdbtk.h and remove declarations
+	for external_editor_command and gdbtk_test.
+
+2019-10-10  Christian Biesinger  <cbiesinger@google.com>
+
+	* mi/mi-cmd-var.c (varobjdebug): Remove declaration.
+	* varobj.c (varobjdebug): Move comment to...
+	* varobj.h (varobjdebug): ...here, and declare.
+
+2019-10-09  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::show_registers): Don't call
+	erase_data_content.
+
+2019-10-09  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.h (tui_delete_win): Don't declare.
+	* tui/tui-stack.c (tui_locator_window::rerender): Update.
+	* tui/tui-command.c (tui_cmd_window::resize)
+	(tui_refresh_cmd_win): Update.
+	* tui/tui-win.c (tui_resize_all, tui_set_focus_command): Update.
+	* tui/tui.c (tui_rl_other_window, tui_enable): Update.
+	* tui/tui-data.c (~tui_gen_win_info): Remove.
+	* tui/tui-layout.c (tui_gen_win_info::resize): Update.
+	* tui/tui-io.c (update_cmdwin_start_line, tui_putc, tui_puts)
+	(tui_redisplay_readline, tui_mld_flush)
+	(tui_mld_erase_entire_line, tui_mld_getc, tui_getc): Update.
+	* tui/tui-regs.c (tui_data_window::delete_data_content_windows)
+	(tui_data_window::erase_data_content)
+	(tui_data_item_window::rerender)
+	(tui_data_item_window::refresh_window): Update.
+	* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window)
+	(box_win, tui_gen_win_info::make_window)
+	(tui_gen_win_info::make_visible): Update.
+	(tui_delete_win): Remove.
+	* tui/tui-winsource.c
+	(tui_source_window_base::do_erase_source_content): Update.
+	(tui_show_source_line, tui_source_window_base::update_tab_width)
+	(tui_source_window_base::update_exec_info): Update.
+	* tui/tui-data.h (struct curses_deleter): New.
+	(struct tui_gen_win_info) <handle>: Now a unique_ptr.
+	(struct tui_gen_win_info) <~tui_gen_win_info>: Define.
+
+2019-10-09  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.h (struct tui_gen_win_info): Don't declare.
+
+2019-10-09  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.c (tui_win_is_auxiliary): Remove.
+	* tui/tui-data.h (tui_win_is_auxiliary): Don't declare.
+
+2019-10-09  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-disasm.c (tui_get_low_disassembly_address): Compute
+	window height directly.
+	* tui/tui-layout.h (tui_default_win_viewport_height): Don't
+	declare.
+	* tui/tui-layout.c (tui_default_win_height): Remove.
+	(tui_default_win_viewport_height): Remove.
+
+2019-10-09  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.h: Remove comments.
+
+2019-10-09  Tom de Vries  <tdevries@suse.de>
+
+	* python/lib/gdb/printer/bound_registers.py: Use
+	'^builtin_type_bound128' as regexp argument for
+	add_builtin_pretty_printer.
+
+2019-10-09  Christian Biesinger  <cbiesinger@google.com>
+
+	* guile/guile.c (guile_extension_script_ops): Remove forward
+	declaration and mark as static.
+	(guile_script_ops): Likewise.
+	(extension_language_guile): Move further down in the file so
+	it can reference the definitions for guile_{extension_,}script_ops.
+
+2019-10-09  Andreas Arnez  <arnez@linux.ibm.com>
+
+	* s390-tdep.c (390_process_record): Handle new arch13 instructions
+	except SORTL, DFLTCC, and KDSA.
+
+2019-10-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (struct windows_thread_info_struct) <sf>: Remove.
+	(struct safe_symbol_file_add_args): Remove.
+
+2019-10-08  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c: Don't include buildsym-legacy.h.
+
+2019-10-08  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh (%p): Allow gdb-specific %p extensions.
+
+2019-10-08  Christian Biesinger  <cbiesinger@google.com>
+
+	* gdbtypes.c (overload_debug): Move comment to header.
+	* gdbtypes.h (overload_debug): Declare.
+	* valops.c: Remove declaration of overload_debug, instead
+	include gdbtypes.h.
+
+2019-10-08  Christian Biesinger  <cbiesinger@google.com>
+
+	* language.c (show_language_command): Pass lang_frame_mismatch_warn
+	through _().
+	(lang_frame_mismatch_warn): Make const, mark with N_(), and
+	move comment...
+	* language.h (lang_frame_mismatch_warn): ... here. Also add
+	declaration.
+	* top.c (lang_frame_mismatch_warn): Remove declaration.
+	(check_frame_language_change): Pass lang_frame_mismatch_warn
+	through _().
+
+2019-10-07  Christian Biesinger  <cbiesinger@google.com>
+
+	* c-lang.h (vtbl_ptr_name): Declare.
+	* cp-valprint.c (vtbl_ptr_name): Remove "extern" now that we get
+	it from the header.
+	* stabsread.c (define_symbol): Remove declaration of vtbl_ptr_name.
+
+2019-10-07  Christian Biesinger  <cbiesinger@google.com>
+
+	* charset.c (your_gdb_wchar_t_is_bogus): Replace with a
+	gdb_static_assert.
+
+2019-10-07  Weimin Pan  <weimin.pan@oracle.com>
+
+	* ../Makefile.def (dependencies): Add all-libctf to all-gdb
+	* ../Makefile.in: Add "all-gdb: maybe-all-libctf"
+	* ctfread.c: New file.
+	* ctfread.h: New file.
+	* elfread.c: Include ctfread.h.
+	(struct elfinfo text_p): New member ctfsect.
+	(elf_locate_sections): Mark CTF section.
+	(elf_symfile_read): Call elfctf_build_psymtabs.
+	* Makefile.in (LIBCTF): Add.
+	(CLIBS): Use it.
+	(CDEPS): Likewise.
+	(DIST): Add ctfread.c.
+
+2019-10-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ctfread.c (struct nextfield): Renamed to ...
+	(struct ctf_nextfield): ... this.
+	(struct field_info): Renamed to ...
+	(strut ctf_field_info): ... this.
+	(attach_fields_to_type): Update for renamed structures.
+	(ctf_add_member_cb): Likewise.
+	(ctf_add_enum_member_cb): Likewise.
+	(process_struct_members): Likewise.
+	(process_enum_type): Likewise.
+
+2019-10-07  Weimin Pan  <weimin.pan@oracle.com>
+
+	* tracectf.h: Rename, was ctf.h.
+	* tracectf.c: Rename, was ctf.c, replace ctf.h with tracectf.h.
+	* tracefile.c: Likewise.
+	* tracepoint.c: Remove unused include ctf.h.
+	* mi/mi-main.c: Likewise.
+	* Makefile.in Replace ctf.c with tracectf.c.
+
+2019-10-06  Joel Brobecker  <brobecker@adacore.com>
+
+	* version.in: Change version number to "9.0.50.DATE-git".
+
+2019-10-03  Tom Tromey  <tom@tromey.com>
+
+	PR rust/24976:
+	* dwarf2read.c (quirk_rust_enum): Handle single-element unions.
+
+2019-10-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-lang.c (f_language_defn): Use cp_get_symbol_name_matcher and
+	cp_search_name_hash.
+	* NEWS: Add entry about nested function support.
+
+2019-10-03  Bernhard Heckel  <bernhard.heckel@intel.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cp-namespace.c (cp_search_static_and_baseclasses): Only search
+	for nested static variables when searchin VAR_DOMAIN.
+	* dwarf2read.c (add_partial_symbol): Add nested subroutines to the
+	global scope, update comment.
+	(add_partial_subprogram): Call add_partial_subprogram recursively
+	for nested subroutines when processinng Fortran.
+	(load_partial_dies): Process the child entities of a subprogram
+	when processing Fortran.
+	(partial_die_parent_scope): Handle building scope
+	for Fortran nested functions.
+	(process_die): Record that nested functions have a scope.
+	(new_symbol): Always record Fortran subprograms on the global
+	symbol list.
+	(determine_prefix): How to build the prefix for Fortran
+	subprograms.
+
+2019-10-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* linux-nat.c (linux_nat_filter_event): Don't ignore SIGSTOP if we
+	have just sent the thread a SIGSTOP and are waiting for it to
+	arrive.
+
+2019-10-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* btrace.c (btrace_add_pc): Remove whitespace before the template
+	parameter in 'std::vector <...>'.
+	(parse_xml_btrace_block): Likewise.
+	(btrace_maint_decode_pt): Likewise.
+	(btrace_maint_update_packets): Likewise.
+	(btrace_maint_print_packets): Likewise.
+	* btrace.h (struct btrace_maint_info): Likewise.
+	* dwarf2read.c (struct type_unit_group): Likewise.
+	(build_type_psymtabs_reader): Likewise.
+	* gdbsupport/btrace-common.c (btrace_data_append): Likewise.
+	* gdbsupport/btrace-common.h (struct btrace_data_bts): Likewise.
+	* nat/linux-btrace.c (perf_event_read_bts): Likewise.
+
+2019-10-03  Tom de Vries  <tdevries@suse.de>
+
+	* cli/cli-style.c (_initialize_cli_style): Adding a '.' at the end of
+	the first line of the help text for set/show style metadata.
+
+2019-10-02  Tom Tromey  <tromey@adacore.com>
+
+	* Makefile.in (COMMON_SFILES): Add common-inferior.c.
+	* gdbsupport/common-inferior.c: New file.
+	* infcmd.c (startup_with_shell): Don't define.
+	* nat/fork-inferior.h (startup_with_shell): Don't declare.
+	* gdbsupport/common-inferior.h (startup_with_shell): Declare.
+	* inferior.h (startup_with_shell): Don't declare.
+
+2019-10-02  Christian Biesinger  <cbiesinger@google.com>
+
+	* gdbsupport/gdb_assert.h: Include errors.h.
+	* gdbsupport/gdb_string_view.h: Include gdb_assert.h.
+
+2019-10-02  Tom Tromey  <tromey@adacore.com>
+
+	* NEWS: Add $_ada_exception entry.
+	* ada-lang.c (struct ada_catchpoint): Add constructor.
+	<m_kind>: New member.
+	(allocate_location_exception, re_set_exception): Remove
+	"ex" parameter.
+	(should_stop_exception): Compute $_ada_exception.
+	(check_status_exception, print_it_exception)
+	(print_one_exception, print_mention_exception): Remove
+	"ex" parameter.
+	(allocate_location_catch_exception, re_set_catch_exception)
+	(check_status_exception, print_it_catch_exception)
+	(print_one_catch_exception, print_mention_catch_exception)
+	(print_recreate_catch_exception)
+	(allocate_location_catch_exception_unhandled)
+	(re_set_catch_exception_unhandled)
+	(check_status_exception, print_it_catch_exception_unhandled)
+	(print_one_catch_exception_unhandled)
+	(print_mention_catch_exception_unhandled)
+	(print_recreate_catch_exception_unhandled)
+	(allocate_location_catch_assert, re_set_catch_assert)
+	(check_status_assert, print_it_catch_assert)
+	(print_one_catch_assert, print_mention_catch_assert)
+	(print_recreate_catch_assert)
+	(allocate_location_catch_handlers, re_set_catch_handlers)
+	(check_status_handlers, print_it_catch_handlers)
+	(print_one_catch_handlers, print_mention_catch_handlers)
+	(print_recreate_catch_handlers): Remove.
+	(create_ada_exception_catchpoint): Update.
+	(initialize_ada_catchpoint_ops): Update.
+
+2019-10-02  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_lookup_simple_minsyms): Remove.
+	(create_excep_cond_exprs): Simplify exception string computation.
+	(ada_exception_catchpoint_cond_string): Likewise.
+
+2019-10-02  Tom Tromey  <tromey@adacore.com>
+
+	* symmisc.c (dump_msymbols): Don't use MSYMBOL_VALUE_ADDRESS.
+	* ada-lang.c (lesseq_defined_than): Handle
+	LOC_STATIC.
+	* dwarf2read.c (dwarf2_per_objfile): Add can_copy
+	parameter.
+	(dwarf2_has_info): Likewise.
+	(new_symbol): Set maybe_copied on symbol when
+	appropriate.
+	* dwarf2read.h (dwarf2_per_objfile): Add can_copy
+	parameter.
+	<can_copy>: New member.
+	* elfread.c (record_minimal_symbol): Set maybe_copied
+	on symbol when appropriate.
+	(elf_symfile_read): Update call to dwarf2_has_info.
+	* minsyms.c (lookup_minimal_symbol_linkage): New
+	function.
+	* minsyms.h (lookup_minimal_symbol_linkage): Declare.
+	* symtab.c (get_symbol_address, get_msymbol_address):
+	New functions.
+	* symtab.h (get_symbol_address, get_msymbol_address):
+	Declare.
+	(SYMBOL_VALUE_ADDRESS, MSYMBOL_VALUE_ADDRESS): Handle
+	maybe_copied.
+	(struct symbol, struct minimal_symbol) <maybe_copied>:
+	New member.
+
+2019-10-02  Tom Tromey  <tromey@adacore.com>
+
+	* source.c (struct current_source_location): New.
+	(current_source_key): New global.
+	(current_source_symtab, current_source_line)
+	(current_source_pspace): Remove.
+	(get_source_location): New function.
+	(get_current_source_symtab_and_line)
+	(set_default_source_symtab_and_line)
+	(set_current_source_symtab_and_line)
+	(clear_current_source_symtab_and_line, select_source_symtab)
+	(info_source_command, print_source_lines_base)
+	(info_line_command, search_command_helper, _initialize_source):
+	Update.
+
+2019-10-02  Tom Tromey  <tromey@adacore.com>
+
+	* source.c (select_source_symtab): Don't call
+	decode_line_with_current_source.
+
+2019-10-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* symtab.c (lookup_global_symbol): Search global block.
+
+2019-10-02  Tom Tromey  <tromey@adacore.com>
+
+	* coffread.c (process_coff_symbol): Update.
+	* dwarf2read.c (var_decode_location, new_symbol): Update.
+	* mdebugread.c (parse_symbol): Update.
+	* objfiles.c (relocate_one_symbol): Update.
+	* stabsread.c (define_symbol, fix_common_block)
+	(scan_file_globals): Update.
+	* symtab.h (SYMBOL_VALUE_ADDRESS): Expand to an rvalue.
+	(SET_SYMBOL_VALUE_ADDRESS): New macro.
+	* xcoffread.c (process_xcoff_symbol): Update.
+
+2019-10-02  Andreas Arnez  <arnez@linux.ibm.com>
+
+	* MAINTAINERS: Update my email address.
+
+2019-10-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (struct type_unit_group) <tus>: Convert to
+	std::vector.
+	(build_type_psymtabs_reader): Update for std::vector.
+	(build_type_psymtab_dependencies): Likewise.
+	* dwarf2read.h: Remove use of DEF_VEC_P.
+	(typedef sig_type_ptr): Delete.
+
+2019-10-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* btrace.c (btrace_maint_clear): Update to handle change from VEC
+	to std::vector.
+	(btrace_maint_decode_pt): Likewise, and move allocation of the
+	vector outside of the loop.
+	(btrace_maint_update_packets): Update to handle change from VEC to
+	std::vector.
+	(btrace_maint_print_packets): Likewise.
+	(maint_info_btrace_cmd): Likewise.
+	* btrace.h: Remove use of DEF_VEC_O.
+	(typedef btrace_pt_packet_s): Delete.
+	(struct btrace_maint_info) <packets>: Change fromm VEC to
+	std::vector.
+	* gdbsupport/btrace-common.h: Remove 'vec.h' include.
+
+2019-10-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* btrace.c (btrace_compute_ftrace_bts): Update for std::vector,
+	make accesses into the vector constant references.
+	(btrace_add_pc): Update for std::vector.
+	(btrace_stitch_bts): Likewise.
+	(parse_xml_btrace_block): Likewise.
+	(btrace_maint_update_packets): Likewise.
+	(btrace_maint_print_packets): Likewise.
+	(maint_info_btrace_cmd): Likewise.
+	* gdbsupport/btrace-common.c (btrace_data::fini): Update for
+	std::vector.
+	(btrace_data::empty): Likewise.
+	(btrace_data_append): Likewise.
+	* gdbsupport/btrace-common.h: Remove use of DEF_VEC_O.
+	(typedef btrace_block_s): Delete.
+	(struct btrace_block): Add constructor.
+	(struct btrace_data_bts) <blocks>: Change to std::vector.
+	* nat/linux-btrace.c (perf_event_read_bts): Update for
+	std::vector.
+	(linux_read_bts): Likewise.
+
+2019-10-01  Tom Tromey  <tom@tromey.com>
+
+	* cli/cli-logging.c (show_logging_filename): Use styled_string.
+
+2019-10-01  Tom Tromey  <tom@tromey.com>
+
+	* stack.c (print_frame, info_frame_command_core): Use
+	styled_string.
+	* linux-thread-db.c (try_thread_db_load_1)
+	(try_thread_db_load_from_pdir_1): Use styled_string.
+	* auto-load.c (file_is_auto_load_safe, execute_script_contents)
+	(auto_load_section_scripts, info_auto_load_local_gdbinit)
+	(maybe_print_unsupported_script_warning)
+	(maybe_print_script_not_found_warning): Use styled_string.
+	* ada-lang.c (user_select_syms): Use styled_string.
+
+2019-10-01  Tom Tromey  <tom@tromey.com>
+
+	* p-lang.c (pascal_printstr): Use metadata style.
+	* value.c (show_convenience): Use metadata style.
+	* valprint.c (valprint_check_validity, val_print_optimized_out)
+	(val_print_not_saved, val_print_unavailable)
+	(val_print_invalid_address, generic_val_print, val_print)
+	(value_check_printable, val_print_array_elements): Use metadata
+	style.
+	* ui-out.h (class ui_out) <field_fmt>: New overload.
+	<do_field_fmt>: Add style parameter.
+	* ui-out.c (ui_out::field_fmt): New overload.
+	* typeprint.c (type_print_unknown_return_type)
+	(val_print_not_allocated, val_print_not_associated): Use metadata
+	style.
+	* tui/tui-out.h (class tui_ui_out) <do_field_fmt>: Add style
+	parameter.
+	* tui/tui-out.c (tui_ui_out::do_field_fmt): Update.
+	* tracepoint.c (tvariables_info_1): Use metadata style.
+	* stack.c (print_frame_arg, print_frame_info, print_frame)
+	(info_frame_command_core): Use metadata style.
+	* skip.c (info_skip_command): Use metadata style.
+	* rust-lang.c (rust_print_enum): Use metadata style.
+	* python/py-prettyprint.c (print_stack_unless_memory_error): Use
+	metadata style.
+	* python/py-framefilter.c (py_print_single_arg): Use metadata
+	style.
+	* printcmd.c (do_one_display, print_variable_and_value): Use
+	metadata style.
+	* p-valprint.c (pascal_val_print)
+	(pascal_object_print_value_fields): Use metadata style.
+	* p-typeprint.c (pascal_type_print_base): Use metadata style.
+	* mi/mi-out.h (class mi_ui_out) <do_field_fmt>: Add style
+	parameter.
+	* mi/mi-out.c (mi_ui_out::do_field_fmt): Update.
+	* m2-valprint.c (m2_print_long_set): Use metadata style.
+	* m2-typeprint.c (m2_print_type): Use metadata style.
+	* infcmd.c (print_return_value_1): Use metadata style.
+	* gnu-v3-abi.c (print_one_vtable): Use metadata style.
+	* f-valprint.c (info_common_command_for_block): Use metadata
+	style.
+	* f-typeprint.c (f_type_print_base): Use metadata style.
+	* expprint.c (print_subexp_standard): Use metadata style.
+	* cp-valprint.c (cp_print_value_fields): Use metadata style.
+	* cli/cli-style.h (class cli_style_option): Add constructor.
+	(metadata_style): Declare.
+	* cli/cli-style.c (metadata_style): New global.
+	(_initialize_cli_style): Register metadata style.
+	* cli-out.h (class cli_ui_out) <do_field_fmt>: Add style
+	parameter.
+	* cli-out.c (cli_ui_out::do_field_fmt): Update.
+	* c-typeprint.c (c_type_print_base_struct_union)
+	(c_type_print_base_1): Use metadata style.
+	* breakpoint.c (watchpoint_value_print)
+	(print_one_breakpoint_location): Use metadata style.
+	* break-catch-syscall.c (print_one_catch_syscall): Use metadata
+	style.
+	* break-catch-sig.c (signal_catchpoint_print_one): Use metadata
+	style.
+	* ada-valprint.c (val_print_packed_array_elements, printstr)
+	(print_field_values, ada_val_print_ref, ada_val_print): Use
+	metadata style.
+	* ada-typeprint.c (print_array_type, ada_print_type): Use metadata
+	style.
+	* ada-tasks.c (print_ada_task_info, info_task): Use metadata
+	style.
+	* ada-lang.c (user_select_syms): Use metadata style.
+
+2019-10-01  Tom Tromey  <tom@tromey.com>
+
+	* cli/cli-cmds.c (pwd_command): Style output.
+
+2019-10-01  Pedro Alves  <palves@redhat.com>
+	    Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (print_symbol_info): Use %ps.
+	(print_msymbol_info): Use %ps.
+	* symfile.c (symbol_file_add_with_addrs): Use %ps.
+	* printcmd.c (print_variable_and_value): Use %ps.
+	* macrocmd.c (show_pp_source_pos): Use %ps.
+	* infrun.c (print_exited_reason): Use ui_out::message.
+	* breakpoint.c (watchpoint_check, print_one_breakpoint_location)
+	(describe_other_breakpoints): Use ui_out::message and new
+	formats.
+	(say_where): Use new formats.
+	(bkpt_print_it, tracepoint_print_one_detail): Use ui_out::message
+	and new formats.
+
+2019-10-01  Pedro Alves  <palves@redhat.com>
+	    Tom Tromey  <tom@tromey.com>
+
+	* unittests/format_pieces-selftests.c: Add gdb_format parameter.
+	(test_gdb_formats): New function.
+	(run_tests): Call it.
+	(test_format_specifier): Update.
+	* utils.h (fputs_filtered): Update comment.
+	(vfprintf_styled, vfprintf_styled_no_gdbfmt)
+	(fputs_styled_unfiltered): Declare.
+	* utils.c (fputs_styled_unfiltered): New function.
+	(vfprintf_maybe_filtered): Add gdbfmt parameter.
+	(vfprintf_filtered): Update.
+	(vfprintf_unfiltered, vprintf_filtered): Update.
+	(vfprintf_styled, vfprintf_styled_no_gdbfmt): New functions.
+	* ui-out.h (enum ui_out_flag) <unfiltered_output,
+	disallow_ui_out_field>: New constants.
+	(enum class field_kind): New.
+	(struct base_field_s, struct signed_field_s): New.
+	(signed_field): New function.
+	(struct string_field_s): New.
+	(string_field): New function.
+	(struct styled_string_s): New.
+	(styled_string): New function.
+	(class ui_out) <message>: Add comment.
+	<vmessage, call_do_message>: New methods.
+	<do_message>: Add style parameter.
+	* ui-out.c (ui_out::call_do_message, ui_out::vmessage): New
+	methods.
+	(ui_out::message): Rewrite.
+	* mi/mi-out.h (class mi_ui_out) <do_message>: Add style
+	parameter.
+	* mi/mi-out.c (mi_ui_out::do_message): Add style parameter.
+	* gdbsupport/format.h (class format_pieces) <format_pieces>: Add
+	gdb_extensions parameter.
+	(class format_piece): Add parameter to constructor.
+	(n_int_args): New field.
+	* gdbsupport/format.c (format_pieces::format_pieces): Add
+	gdb_extensions parameter.  Handle '*'.
+	* cli-out.h (class cli_ui_out) <do_message>: Add style parameter.
+	* cli-out.c (cli_ui_out::do_message): Add style parameter.  Call
+	vfprintf_styled_no_gdbfmt.
+	(cli_ui_out::do_field_string, cli_ui_out::do_spaces)
+	(cli_ui_out::do_text, cli_ui_out::field_separator): Allow
+	unfiltered output.
+	* ui-style.h (struct ui_file_style) <ptr>: New method.
+
+2019-10-01  Tom Tromey  <tom@tromey.com>
+
+	* unittests/format_pieces-selftests.c: Update.  Add final format.
+	* gdbsupport/format.c (format_pieces::format_pieces): Don't add
+	empty literal pieces.
+
+2019-10-01  Tom Tromey  <tom@tromey.com>
+
+	* ui-out.h (enum class ui_out_style_kind): Remove.
+	(class ui_out) <field_string, field_stsream, do_field_string>:
+	Change type of "style".
+	* ui-out.c (ui_out::field_core_addr, ui_out::field_stream)
+	(ui_out::field_string): Update.
+	* tui/tui-out.h (class tui_ui_out) <do_field_string>: Change type
+	of "style".
+	* tui/tui-out.c (tui_ui_out::do_field_string): Update.
+	* tracepoint.c (print_one_static_tracepoint_marker): Update.
+	* stack.c (print_frame_arg, print_frame_info, print_frame):
+	Update.
+	* source.c (print_source_lines_base): Update.
+	* solib.c (info_sharedlibrary_command): Update.
+	* skip.c (info_skip_command): Update.
+	* record-btrace.c (btrace_call_history_src_line)
+	(btrace_call_history): Update.
+	* python/py-framefilter.c (py_print_frame): Update.
+	* mi/mi-out.h (class mi_ui_out) <do_field_string>: Change type of
+	"style".
+	* mi/mi-out.c (mi_ui_out::do_table_header)
+	(mi_ui_out::do_field_signed, mi_ui_out::do_field_unsigned)
+	(mi_ui_out::do_field_string): Update.
+	* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn):
+	Update.
+	* cli-out.h (class cli_ui_out) <do_field_string>: Change type of
+	"style".
+	* cli-out.c (cli_ui_out::do_table_header)
+	(cli_ui_out::do_field_signed, cli_ui_out::do_field_unsigned)
+	(cli_ui_out::do_field_skip, cli_ui_out::do_field_string)
+	(cli_ui_out::do_field_fmt): Update.
+	* breakpoint.c (print_breakpoint_location): Update.
+	(update_static_tracepoint): Update.
+
+2019-10-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* main.c (relocate_gdbinit_path_maybe_in_datadir): Remove std::string
+	conversion of gdb_datadir.
+	(captured_main_1): Remove xstrdup when assigning to gdb_datadir,
+	remove not needed c_str ().
+
+2019-09-30  Ali Tamur <tamur@google.com>
+
+	* dwarf2read.c (skip_one_die): Handle DW_FORM_strx forms.
+	(dwarf2_string_attr): Likewise.
+
+2019-09-30  Ali Tamur <tamur@google.com>
+
+	* dwarf2read.c (process_full_comp_unit): Remove whitespace at the EOL.
+	(process_full_type_unit): Likewise.
+	(dump_die_shallow): Likewise.
+	(cu_debug_loc_section): Likewise.
+
+2019-09-28  Christian Biesinger  <cbiesinger@google.com>
+
+	* minsyms.c (compare_minimal_symbols): Rename to...
+	(minimal_symbol_is_less_than): ...this, and adjust to STL
+	conventions (return bool, take arguments as references)
+	(minimal_symbol_reader::install): Call std::sort instead
+	of qsort.
+
+2019-09-29  Christian Biesinger  <cbiesinger@google.com>
+
+	* minsyms.h (msymbol_hash): Document that this is a case-insensitive
+	hash and why.
+	* objfiles.h (struct objfile_per_bfd_storage) <demangled_names_hash,
+	msymbol_hash, msymbol_demangled_hash>: Improve comments.
+
+2019-09-30  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* psymtab.c (add_psymbol_to_list): Move comment to psympriv.h.
+	* psympriv.h (add_psymbol_to_list): Move comment here and update
+	it.
+
+2019-09-29  Tom de Vries  <tdevries@suse.de>
+
+	* contrib/cc-with-tweaks.sh (get_tmpdir): New function.
+	Use $tmpdir/$(basename "$output_file").dwz instead of
+	"${output_file}.dwz".
+
+2019-09-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/25045
+	* hppa-linux-nat.c: Include gdbarch.h.
+
+2019-09-26  Christian Biesinger  <cbiesinger@google.com>
+
+	* blockframe.c (find_pc_partial_function): Change return type to bool.
+	* elfread.c (elf_gnu_ifunc_resolve_name): Likewise.
+	* minsyms.c (in_gnu_ifunc_stub): Likewise.
+	(stub_gnu_ifunc_resolve_name): Likewise.
+	* symtab.c (compare_filenames_for_search): Likewise.
+	(compare_glob_filenames_for_search): Likewise.
+	(matching_obj_sections): Likewise.
+	(symbol_matches_domain): Likewise.
+	(find_line_symtab): Change out param EXACT_MATCH to bool *.
+	(find_line_pc): Change return type to bool.
+	(find_line_pc_range): Likewise.
+	(producer_is_realview): Likewise.
+	* symtab.h (symbol_matches_domain): Likewise.
+	(find_pc_partial_function): Likewise.
+	(find_pc_line_pc_range): Likewise.
+	(in_gnu_ifunc_stub): Likewise.
+	(struct gnu_ifunc_fns) <gnu_ifunc_resolve_name>: Likewise.
+	(find_line_pc): Likewise.
+	(find_line_pc_range): Likewise.
+	(matching_obj_sections): Likewise.
+	(find_line_symtab): Change out parameter to bool.
+	(producer_is_realview): Change return type to bool.
+	(compare_filenames_for_search): Likewise.
+	(compare_glob_filenames_for_search): Likewise.
+
+2019-09-26  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in (COMMON_SFILES): Remove gdb_usleep.c.
+	(HFILES_NO_SRCDIR): Remove gdb_usleep.h.
+	* gdb_usleep.h: Remove.
+	* gdb_usleep.c: Remove.
+	* utils.c: Don't include gdb_usleep.h.
+
+2019-09-26  Tom Tromey  <tromey@adacore.com>
+
+	* python/py-type.c (type_to_type_object): Call check_typedef
+	for stub types.
+
+2019-09-26  Tom Tromey  <tom@tromey.com>
+
+	* utils.h (initialize_utils): Don't declare.
+	* top.c (gdb_init): Don't call initialize_utils.
+	* utils.c (initialize_utils): Remove.  Move contents...
+	(_initialize_utils): ... here.
+
+2019-09-25  Tom Tromey  <tom@tromey.com>
+
+	* python/py-objfile.c (objfpy_get_build_id): Use bin2hex.
+	* utils.h (make_hex_string): Don't declare.
+	* utils.c (make_hex_string): Remove.
+
+2019-09-24  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/23815
+	* amd64-linux-nat.c (amd64_linux_nat_target::fetch_registers):
+	Initialize xstateregs before ptrace PTRACE_GETREGSET call.
+
+2019-09-23  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+	* NEWS: Mention new simulator port for PRU.
+
+2019-09-23  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-exp.y (write_object_remaining): Update.
+	* ada-lang.c (ada_decode): Return a std::string instead of a char*
+	and eliminate the static buffer.
+	(ada_decode_symbol): Update.
+	(ada_la_decode): Update.
+	(ada_sniff_from_mangled_name): Update.
+	(is_valid_name_for_wild_match): Update.
+	(ada_lookup_name_info::matches): Update and simplify.
+	(name_matches_regex): Update.
+	(ada_add_global_exceptions): Update.
+	* ada-lang.h (ada_decode): Update signature.
+	* ada-varobj.c (ada_varobj_describe_simple_array_child): Update.
+	* dwarf-index-write.c (debug_names::insert): Update.
+
+2019-09-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* solib-svr4.c (svr4_iterate_over_objfiles_in_search_order): Fix
+	formatting.
+
+2019-09-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.h (bp_location) <inserted, permanent, duplicate>:
+	Change "nonzero" to "true" in documentation.
+
+2019-09-20  Christian Biesinger  <cbiesinger@google.com>
+
+	* solib-darwin.c (darwin_lookup_lib_symbol): Remove.
+	(_initialize_darwin_solib): Don't set
+	darwin_so_ops.lookup_lib_global_symbol.
+	* solib-svr4.c (set_solib_svr4_fetch_link_map_offsets): Call
+	set_gdbarch_iterate_over_objfiles_in_search_order.
+	(elf_lookup_lib_symbol): Rename to...
+	(svr4_iterate_over_objfiles_in_search_order): this, and update
+	to iterate semantics.
+	(_initialize_svr4_solib): Don't set lookup_lib_global_symbol.
+	* solib.c (solib_global_lookup): Remove.
+	* solist.h (struct target_so_ops): Remove lookup_lib_global_symbol.
+	(solib_global_lookup): Remove.
+	* symtab.c (lookup_global_or_static_symbol): Remove call to
+	solib_global_lookup.
+
+2019-09-20  Joel Brobecker  <brobecker@adacore.com>
+
+	* NEWS: Move entries about default MI version now being
+	version 3, and about the GDB/MI fix for multi-location
+	breakpoints to the "since GDB 8.3" section.
+
+2019-09-20  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 8.3.1 released.
+
+2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* NEWS: Mention that Cell/B.E. debugging support was removed.
+	* MAINTAINERS: Remove spu target.
+
+	* config/djgpp/fnchange.lst: Remove entries for removed files.
+
+	* Makefile.in (ALL_TARGET_OBS): Remove solib-spu.o,
+	spu-multiarch.o, and spu-tdep.o.
+	(HFILES_NO_SRCDIR): Remove solib-spu.h and spu-tdep.h.
+	(ALLDEPFILES): Remove solib-spu.c, spu-linux-nat.c,
+	spu-multiarch.c, and spu-tdep.c.
+	* spu-linux-nat.c: Remove file.
+	* spu-multiarch.c: Remove file.
+	* spu-tdep.c: Remove file.
+	* spu-tdep.h: Remove file.
+	* solib-spu.c: Remove file.
+	* solib-spu.h: Remove file.
+
+	* configure.host (powerpc64*-*-linux*): Remove Cell/B.E. support.
+	* configure.nat (spu-linux): Remove.
+	* configure.tgt (powerpc*-*-linux*): Remove solib-spu.o and
+	solib-multiarch.o from gdb_target_obs.
+	(spu*-*-*): Remove.
+
+	* arch/ppc-linux-common.h (struct ppc_linux_features): Remove "cell"
+	feature flag.
+	(ppc_linux_no_features): Update.
+	* arch/ppc-linux-common.c (ppc_linux_match_description): Remove
+	Cell/B.E. support.
+	* arch/ppc-linux-tdesc.h (tdesc_powerpc_cell32l): Remove declaration.
+	(tdesc_powerpc_cell64l): Likewise.
+	* nat/ppc-linux.h (PPC_FEATURE_CELL): Remove.
+	* ppc-linux-nat.c (ppc_linux_nat_target::read_description): Remove
+	Cell/B.E. support.
+	* ppc-linux-tdep.h: Do not include "solib-spu.h" or "spu-tdep.h".
+	Do not include "features/rs6000/powerpc-cell32l.c" or
+	"features/rs6000/powerpc-cell64l.c".
+	(ppc_linux_spu_section): Remove.
+	(ppc_linux_core_read_description): Remove Cell/B.E. support.
+	(spe_context_objfile, spe_context_lm_addr, spe_context_offset,
+	spe_context_cache_ptid, spe_context_cache_ptid): Remove.
+	(ppc_linux_spe_context_lookup): Remove.
+	(ppc_linux_spe_context_inferior_created): Remove.
+	(ppc_linux_spe_context_solib_loaded): Remove.
+	(ppc_linux_spe_context_solib_unloaded): Remove.
+	(ppc_linux_spe_context): Remove.
+	(struct ppu2spu_cache): Remove.
+	(ppu2spu_prev_arch, ppu2spu_this_id, ppu2spu_prev_register): Remove.
+	(struct ppu2spu_data): Remove.
+	(ppu2spu_unwind_register, ppu2spu_sniffer, ppu2spu_dealloc_cache,
+	ppu2spu_unwind): Remove.
+	(ppc_linux_init_abi): Remove Cell/B.E. support.
+	* rs6000-tdep.h (rs6000_gdbarch_init): Remove Cell/B.E. support.
+
+	* features/Makefile (rs6000/powerpc-cell32l-expedite): Remove.
+	(rs6000/powerpc-cell64l-expedite): Likewise
+	(WHICH): Remove rs6000/powerpc-cell32l and rs6000/powerpc-cell64l.
+	(XMLTOC): Remove rs6000/powerpc-cell32l.xml and
+	rs6000/powerpc-cell64l.xml.
+	* features/rs6000/powerpc-cell32l.xml: Remove.
+	* features/rs6000/powerpc-cell64l.xml: Likewise.
+	* features/rs6000/powerpc-cell32l.c: Remove generated file.
+	* features/rs6000/powerpc-cell64l.c: Likewise.
+	* regformats/rs6000/powerpc-cell32l.dat: Remove generated file.
+	* regformats/rs6000/powerpc-cell64l.dat: Likewise.
+	* regformats/reg-spu.dat: Remove.
+
+	* target.h (enum target_object): Remove TARGET_OBJECT_SPU.
+	* corelow.c (struct spuid_list): Remove.
+	(add_to_spuid_list): Remove.
+	(core_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
+	* remote.c (PACKET_qXfer_spu_read, PACKET_qXfer_spu_write): Remove.
+	(remote_protocol_features): Remove associated entries.
+	(_initialize_remote): No longer initialize them.
+	(remote_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
+	* linux-nat.c (SPUFS_MAGIC): Remove.
+	(linux_proc_xfer_spu): Remove.
+	(spu_enumerate_spu_ids): Remove.
+	(linux_nat_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
+	* linux-tdep.c (-linux_spu_make_corefile_notes): Remove.
+	(linux_make_corefile_notes): No longer call it.
+
+	* regcache.c (cooked_read_test): Remove bfd_arch_spu special case.
+	(cooked_write_test): Likewise.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* NEWS: Mention case-sensitivity of TUI commands.
+	* tui/tui-win.c (tui_set_focus_command): Now case-sensitive.
+	(tui_set_win_height_command, parse_scrolling_args): Likewise.
+	* tui/tui-layout.c (tui_layout_command): Now case-sensitive.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.c (tui_source_window::set_contents): Use
+	make_unique_xstrdup.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Use
+	make_unique_xstrdup.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.c: Remove separator comments.
+	* tui/tui-layout.c: Remove separator comments.
+	* tui/tui-win.c: Remove separator comments.
+	* tui/tui-wingeneral.c: Remove separator comments.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.h (strcat_to_buf): Don't declare.
+	* tui/tui.c (strcat_to_buf): Remove.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.h (struct tui_source_window) <m_fullname>: Rename
+	from "fullname".
+	* tui/tui-source.c (tui_source_window::set_contents)
+	(tui_source_window::location_matches_p)
+	(tui_source_window::maybe_update): Update.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <get_current_group>:
+	Update.
+	<m_regs_content, m_regs_column_count, m_current_group>: Add "m_"
+	prefix.
+	* tui/tui-regs.c (tui_data_window::last_regs_line_no)
+	(tui_data_window::line_from_reg_element_no)
+	(tui_data_window::first_reg_element_no_inline)
+	(tui_data_window::show_registers)
+	(tui_data_window::show_register_group)
+	(tui_data_window::display_registers_from)
+	(tui_data_window::display_registers_from_line)
+	(tui_data_window::first_data_item_displayed)
+	(tui_data_window::delete_data_content_windows)
+	(tui_data_window::erase_data_content)
+	(tui_data_window::do_scroll_vertical)
+	(tui_data_window::refresh_window)
+	(tui_data_window::check_register_values): Update.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (MAX_LOCATOR_ELEMENT_LEN): Remove define.
+	(struct tui_locator_window) <full_name, proc_name>: Now
+	std::string.
+	* tui/tui-stack.c (tui_locator_window::make_status_line)
+	(tui_locator_window::set_locator_fullname)
+	(tui_locator_window::set_locator_info): Update.
+	* tui/tui-source.c (tui_source_window::set_contents)
+	(tui_source_window::showing_source_p): Update.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_locator_window::set_locator_fullname):
+	Don't call tui_locator_win_info_ptr.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_resize_all): Don't call refresh.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Use 1 as
+	height for locator.
+	* tui/tui-stack.c (tui_locator_window::rerender): Call scrollok.
+	* tui/tui-layout.c (show_source_disasm_command, show_data)
+	(show_source_or_disasm_and_command): Use 1 as height for locator.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_enable): Update.
+	* tui/tui-win.c (tui_sigwinch_handler, tui_async_resize_screen):
+	Update.
+	* tui/tui-data.h (tui_win_resized, tui_set_win_resized_to):
+	Update.
+	* tui/tui-data.c (win_resized): Now bool.
+	(tui_win_resized): Return bool.
+	(tui_set_win_resized_to): Accept a bool.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <show_register_group>:
+	Change type of "refresh_values_only".
+	* tui/tui-regs.c (tui_data_window::show_register_group): Change
+	type of "refresh_values_only".
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-disasm.c (struct tui_asm_line) <addr_string, insn>: Now
+	std::string.
+	(tui_disassemble): Add "pos" parameter.
+	(tui_disasm_window::set_contents): Simplify.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<show_source_content>: Now private.
+	* tui/tui-winsource.c
+	(tui_source_window_base::show_source_content): Don't handle empty
+	content case.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_source_disasm_command)
+	(show_source_or_disasm_and_command): Don't call
+	show_source_content.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (struct tui_locator_window) <make_status_line>:
+	Declare.
+	* tui/tui-stack.c (tui_locator_window::make_status_line): Rename
+	from tui_make_status_line.
+	(tui_locator_window::rerender): Update.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_make_status_line): Return std::string.
+	(tui_locator_window::rerender): Update.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<~tui_source_window_base>: Don't declare.
+	<fullname>: Remove.
+	* tui/tui-winsource.c (~tui_source_window_base): Remove.
+	* tui/tui-source.h (struct tui_source_window) <fullname>: New
+	member.
+	* tui/tui-source.c (tui_source_window::set_contents): Update.
+	(tui_source_window::location_matches_p)
+	(tui_source_window::maybe_update): Update.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (~tui_source_element): Remove.
+	(tui_source_element): Update.
+	(struct tui_source_element) <line>: Now a unique_xmalloc_ptr.
+	* tui/tui-winsource.c (tui_show_source_line): Update.
+	* tui/tui-source.c (tui_source_window::set_contents): Update.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Update.
+
+2019-09-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (tui_clear_source_windows_detail): Don't
+	declare.
+	* tui/tui-layout.c (tui_add_win_to_layout): Don't call
+	tui_clear_source_windows_detail.
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<clear_detail>: Don't declare.
+	* tui/tui-winsource.c (tui_source_window_base::clear_detail):
+	Remove.
+	* tui/tui-data.c (tui_clear_source_windows_detail): Remove.
+
+2019-09-20  Tom Tromey  <tromey@adacore.com>
+
+	PR ada/24919:
+	* block.c (contained_in): Fix final return value.
+
+2019-09-20  Alan Modra  <amodra@gmail.com>
+
+	* gdb_bfd.c (gdb_bfd_ref, gdb_bfd_unref): Use bfd_set_usrdata.
+	* dwarf2read.c (dwarf2_read_gdb_index, dwarf2_read_debug_names),
+	(read_indirect_string_from_dwz): Use bfd accessor.
+	* dwarf2read.h (struct dwz_file <filename>): Likewise.
+	* machoread.c (macho_symfile_read_all_oso): Likewise.
+	* solib.c (solib_bfd_open): Likewise.
+
+2019-09-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* eval.c: Move declaration of overload_resolution to...
+	* value.h: ...here.
+
+2019-09-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* arm-linux-nat.c: Remove extern declaration for arm_apcs_32.
+	* arm-linux-tdep.c: Likewise.
+	* arm-nbsd-nat.c: Likewise.
+	* arm-tdep.h: Declare arm_apcs_32.
+	* arm-tdep.c: Move documentation for arm_apcs_32 to arm-tdep.h.
+
+2019-09-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* dwarf2loc.c: Remove extern declaration of dwarf_always_disassemble.
+	* dwarf2read.h: Declare dwarf_always_disassemble.
+
+2019-09-19  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25009
+	* source-cache.c (source_cache::ensure): Catch exception thrown during
+	construction of the highlighter.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* aarch64-linux-tdep.c, * arm-tdep.c, * auto-load.c,
+	* coff-pe-read.c, * coffread.c, * corelow.c, * dbxread.c,
+	* dicos-tdep.c, * dwarf2-frame.c, * dwarf2read.c, * elfread.c,
+	* exec.c, * fbsd-tdep.c, * gcore.c, * gdb_bfd.c, * gdb_bfd.h,
+	* hppa-tdep.c, * i386-cygwin-tdep.c, * i386-fbsd-tdep.c,
+	* i386-linux-tdep.c, * jit.c, * linux-tdep.c, * machoread.c,
+	* maint.c, * mdebugread.c, * minidebug.c, * mips-linux-tdep.c,
+	* mips-sde-tdep.c, * mips-tdep.c, * mipsread.c, * nto-tdep.c,
+	* objfiles.c, * objfiles.h, * osabi.c, * ppc-linux-tdep.c,
+	* ppc64-tdep.c, * record-btrace.c, * record-full.c, * remote.c,
+	* rs6000-aix-tdep.c, * rs6000-tdep.c, * s390-linux-tdep.c,
+	* s390-tdep.c, * solib-aix.c, * solib-dsbt.c, * solib-frv.c,
+	* solib-spu.c, * solib-svr4.c, * solib-target.c,
+	* spu-linux-nat.c, * spu-tdep.c, * symfile-mem.c, * symfile.c,
+	* symmisc.c, * symtab.c, * target.c, * windows-nat.c,
+	* xcoffread.c, * cli/cli-dump.c, * compile/compile-object-load.c,
+	* mi/mi-interp.c: Update throughout for bfd section macro and
+	function changes.
+	* gcore (gcore_create_callback): Use bfd_set_section_lma.
+	* spu-tdep.c (spu_overlay_new_objfile): Likewise.
+
+2019-09-18  Tom Tromey  <tom@tromey.com>
+
+	* NEWS: Add entry.
+	* tui/tui.c (tui_initialize_readline): Set name of keymap.  Do not
+	call rl_initialize.
+	(tui_enable): Do not call rl_initialize.
+
+2019-09-18  Christian Groessler  <chris@groessler.org>
+
+	* alpha-linux-nat.c: Include gdbarch.h.
+
+2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* ui-file.c: Include cli/cli-style.h.
+	(term_cli_styling): Remove cli_styling declaration.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* arm-tdep.c (arm_record_special_symbol): Update bfd_get_section
+	to bfd_asymbol_section.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* amd64-dicos-tdep.c (amd64_dicos_osabi_sniffer): Constify target.
+	* i386-cygwin-tdep.c (i386_cygwin_init_abi): Likewise.
+	* i386-dicos-tdep.c (i386_dicos_osabi_sniffer): Likewise.
+
+2019-09-18  Alan Modra  <amodra@gmail.com>
+
+	* solib-spu.c (spu_bfd_open): Use bfd_set_filename.
+	* spu-linux-nat.c (spu_bfd_open): Likewise.
+
+2019-09-18  Christian Biesinger  <cbiesinger@google.com>
+
+	* dwarf2loc.c: Change extern declaration of dwarf_always_disassemble
+	to bool to match definition in dwarf2read.c.
+
+2019-09-17  Christian Biesinger  <cbiesinger@google.com>
+
+	* ada-lang.c (ada_ignore_descriptive_types_p): Change to bool.
+	(print_signatures): Likewise.
+	(trust_pad_over_xvs): Likewise.
+	* arch/aarch64-insn.c (aarch64_debug): Likewise.
+	* arch/aarch64-insn.h (aarch64_debug): Likewise.
+	* arm-linux-nat.c (arm_apcs_32): Likewise.
+	* arm-linux-tdep.c (arm_apcs_32): Likewise.
+	* arm-nbsd-nat.c (arm_apcs_32): Likewise.
+	* arm-tdep.c (arm_debug): Likewise.
+	(arm_apcs_32): Likewise.
+	* auto-load.c (debug_auto_load): Likewise.
+	(auto_load_gdb_scripts): Likewise.
+	(global_auto_load): Likewise.
+	(auto_load_local_gdbinit): Likewise.
+	(auto_load_local_gdbinit_loaded): Likewise.
+	* auto-load.h (global_auto_load): Likewise.
+	(auto_load_local_gdbinit): Likewise.
+	(auto_load_local_gdbinit_loaded): Likewise.
+	* breakpoint.c (disconnected_dprintf): Likewise.
+	(breakpoint_proceeded): Likewise.
+	(automatic_hardware_breakpoints): Likewise.
+	(always_inserted_mode): Likewise.
+	(target_exact_watchpoints): Likewise.
+	(_initialize_breakpoint): Update.
+	* breakpoint.h (target_exact_watchpoints): Change to bool.
+	* btrace.c (maint_btrace_pt_skip_pad): Likewise.
+	* cli/cli-cmds.c (trace_commands): Likewise.
+	* cli/cli-cmds.h (trace_commands): Likewise.
+	* cli/cli-decode.c (add_setshow_boolean_cmd): Change int* argument
+	to bool*.
+	* cli/cli-logging.c (logging_overwrite): Change to bool.
+	(logging_redirect): Likewise.
+	(debug_redirect): Likewise.
+	* cli/cli-option.h (option_def) <boolean>: Change return type to bool*.
+	(struct boolean_option_def) <get_var_address_cb_>: Change return type
+	to bool.
+	<boolean_option_def>: Update.
+	(struct flag_option_def): Change default type of Context to bool
+	from int.
+	<flag_option_def>: Change return type of var_address_cb_ to bool*.
+	* cli/cli-setshow.c (do_set_command): Cast to bool* instead of int*.
+	(get_setshow_command_value_string): Likewise.
+	* cli/cli-style.c (cli_styling): Change to bool.
+	(source_styling): Likewise.
+	* cli/cli-style.h (source_styling): Likewise.
+	(cli_styling): Likewise.
+	* cli/cli-utils.h (struct qcs_flags) <quiet, cont, silent>: Change
+	to bool.
+	* command.h (var_types): Update comment.
+	(add_setshow_boolean_cmd): Change int* var argument to bool*.
+	* compile/compile-cplus-types.c (debug_compile_cplus_types): Change to
+	bool.
+	(debug_compile_cplus_scopes): Likewise.
+	* compile/compile-internal.h (compile_debug): Likewise.
+	* compile/compile.c (compile_debug): Likewise.
+	(struct compile_options) <raw>: Likewise.
+	* cp-support.c (catch_demangler_crashes): Likewise.
+	* cris-tdep.c (usr_cmd_cris_version_valid): Likewise.
+	(usr_cmd_cris_dwarf2_cfi): Likewise.
+	* csky-tdep.c (csky_debug): Likewise.
+	* darwin-nat.c (enable_mach_exceptions): Likewise.
+	* dcache.c (dcache_enabled_p): Likewise.
+	* defs.h (info_verbose): Likewise.
+	* demangle.c (demangle): Likewise.
+	(asm_demangle): Likewise.
+	* dwarf-index-cache.c (debug_index_cache): Likewise.
+	* dwarf2-frame.c (dwarf2_frame_unwinders_enabled_p): Likewise.
+	* dwarf2-frame.h (dwarf2_frame_unwinders_enabled_p): Likewise.
+	* dwarf2read.c (check_physname): Likewise.
+	(use_deprecated_index_sections): Likewise.
+	(dwarf_always_disassemble): Likewise.
+	* eval.c (overload_resolution): Likewise.
+	* event-top.c (set_editing_cmd_var): Likewise.
+	(exec_done_display_p): Likewise.
+	* event-top.h (set_editing_cmd_var): Likewise.
+	(exec_done_display_p): Likewise.
+	* exec.c (write_files): Likewise.
+	* fbsd-nat.c (debug_fbsd_lwp): Likewise
+	(debug_fbsd_nat): Likewise.
+	* frame.h (struct frame_print_options) <print_raw_frame_arguments>:
+	Likewise.
+	(struct set_backtrace_options) <backtrace_past_main>: Likewise.
+	<backtrace_past_entry> Likewise.
+	* gdb-demangle.h (demangle): Likewise.
+	(asm_demangle): Likewise.
+	* gdb_bfd.c (bfd_sharing): Likewise.
+	* gdbcore.h (write_files): Likewise.
+	* gdbsupport/common-debug.c (show_debug_regs): Likewise.
+	* gdbsupport/common-debug.h (show_debug_regs): Likewise.
+	* gdbthread.h (print_thread_events): Likewise.
+	* gdbtypes.c (opaque_type_resolution): Likewise.
+	(strict_type_checking): Likewise.
+	* gnu-nat.c (gnu_debug_flag): Likewise.
+	* guile/scm-auto-load.c (auto_load_guile_scripts): Likewise.
+	* guile/scm-param.c (pascm_variable): Add boolval.
+	(add_setshow_generic): Update.
+	(pascm_param_value): Update.
+	(pascm_set_param_value_x): Update.
+	* hppa-tdep.c (hppa_debug): Change to bool..
+	* infcall.c (may_call_functions_p): Likewise.
+	(coerce_float_to_double_p): Likewise.
+	(unwind_on_signal_p): Likewise.
+	(unwind_on_terminating_exception_p): Likewise.
+	* infcmd.c (startup_with_shell): Likewise.
+	* inferior.c (print_inferior_events): Likewise.
+	* inferior.h (startup_with_shell): Likewise.
+	(print_inferior_events): Likewise.
+	* infrun.c (step_stop_if_no_debug): Likewise.
+	(detach_fork): Likewise.
+	(debug_displaced): Likewise.
+	(disable_randomization): Likewise.
+	(non_stop): Likewise.
+	(non_stop_1): Likewise.
+	(observer_mode): Likewise.
+	(observer_mode_1): Likewise.
+	(set_observer_mode): Update.
+	(sched_multi): Change to bool.
+	* infrun.h (debug_displaced): Likewise.
+	(sched_multi): Likewise.
+	(step_stop_if_no_debug): Likewise.
+	(non_stop): Likewise.
+	(disable_randomization): Likewise.
+	* linux-tdep.c (use_coredump_filter): Likewise.
+	(dump_excluded_mappings): Likewise.
+	* linux-thread-db.c (auto_load_thread_db): Likewise.
+	(check_thread_db_on_load): Likewise.
+	* main.c (captured_main_1): Update.
+	* maint-test-options.c (struct test_options_opts) <flag_opt, xx1_opt,
+	xx2_opt, boolean_opt>: Change to bool.
+	* maint-test-settings.c (maintenance_test_settings_boolean): Likewise.
+	* maint.c (maintenance_profile_p): Likewise.
+	(per_command_time): Likewise.
+	(per_command_space): Likewise.
+	(per_command_symtab): Likewise.
+	* memattr.c (inaccessible_by_default): Likewise.
+	* mi/mi-main.c (mi_async): Likewise.
+	(mi_async_1): Likewise.
+	* mips-tdep.c (mips64_transfers_32bit_regs_p): Likewise.
+	* nat/fork-inferior.h (startup_with_shell): Likewise.
+	* nat/linux-namespaces.c (debug_linux_namespaces): Likewise.
+	* nat/linux-namespaces.h (debug_linux_namespaces): Likewise.
+	* nios2-tdep.c (nios2_debug): Likewise.
+	* or1k-tdep.c (or1k_debug): Likewise.
+	* parse.c (parser_debug): Likewise.
+	* parser-defs.h (parser_debug): Likewise.
+	* printcmd.c (print_symbol_filename): Likewise.
+	* proc-api.c (procfs_trace): Likewise.
+	* python/py-auto-load.c (auto_load_python_scripts): Likewise.
+	* python/py-param.c (union parmpy_variable): Add "bool boolval" field.
+	(set_parameter_value): Update.
+	(add_setshow_generic): Update.
+	* python/py-value.c (copy_py_bool_obj): Change argument from int*
+	to bool*.
+	* python/python.c (gdbpy_parameter_value): Cast to bool* instead of
+	int*.
+	* ravenscar-thread.c (ravenscar_task_support): Change to bool.
+	* record-btrace.c (record_btrace_target::store_registers): Update.
+	* record-full.c (record_full_memory_query): Change to bool.
+	(record_full_stop_at_limit): Likewise.
+	* record-full.h (record_full_memory_query): Likewise.
+	* remote-notif.c (notif_debug): Likewise.
+	* remote-notif.h (notif_debug): Likewise.
+	* remote.c (use_range_stepping): Likewise.
+	(interrupt_on_connect): Likewise.
+	(remote_break): Likewise.
+	* ser-tcp.c (tcp_auto_retry): Likewise.
+	* ser-unix.c (serial_hwflow): Likewise.
+	* skip.c (debug_skip): Likewise.
+	* solib-aix.c (solib_aix_debug): Likewise.
+	* spu-tdep.c (spu_stop_on_load_p): Likewise.
+	(spu_auto_flush_cache_p): Likewise.
+	* stack.c (struct backtrace_cmd_options) <full, no_filters, hide>:
+	Likewise.
+	(struct info_print_options) <quiet>: Likewise.
+	* symfile-debug.c (debug_symfile): Likewise.
+	* symfile.c (auto_solib_add): Likewise.
+	(separate_debug_file_debug): Likewise.
+	* symfile.h (auto_solib_add): Likewise.
+	(separate_debug_file_debug): Likewise.
+	* symtab.c (basenames_may_differ): Likewise.
+	(struct filename_partial_match_opts) <dirname, basename>: Likewise.
+	(struct info_print_options) <quiet, exclude_minsyms>: Likewise.
+	(struct info_types_options) <quiet>: Likewise.
+	* symtab.h (demangle): Likewise.
+	(basenames_may_differ): Likewise.
+	* target-dcache.c (stack_cache_enabled_1): Likewise.
+	(code_cache_enabled_1): Likewise.
+	* target.c (trust_readonly): Likewise.
+	(may_write_registers): Likewise.
+	(may_write_memory): Likewise.
+	(may_insert_breakpoints): Likewise.
+	(may_insert_tracepoints): Likewise.
+	(may_insert_fast_tracepoints): Likewise.
+	(may_stop): Likewise.
+	(auto_connect_native_target): Likewise.
+	(target_stop_and_wait): Update.
+	(target_async_permitted): Change to bool.
+	(target_async_permitted_1): Likewise.
+	(may_write_registers_1): Likewise.
+	(may_write_memory_1): Likewise.
+	(may_insert_breakpoints_1): Likewise.
+	(may_insert_tracepoints_1): Likewise.
+	(may_insert_fast_tracepoints_1): Likewise.
+	(may_stop_1): Likewise.
+	* target.h (target_async_permitted): Likewise.
+	(may_write_registers): Likewise.
+	(may_write_memory): Likewise.
+	(may_insert_breakpoints): Likewise.
+	(may_insert_tracepoints): Likewise.
+	(may_insert_fast_tracepoints): Likewise.
+	(may_stop): Likewise.
+	* thread.c (struct info_threads_opts) <show_global_ids>: Likewise.
+	(make_thread_apply_all_options_def_group): Change argument from int*
+	to bool*.
+	(thread_apply_all_command): Update.
+	(print_thread_events): Change to bool.
+	* top.c (confirm): Likewise.
+	(command_editing_p): Likewise.
+	(history_expansion_p): Likewise.
+	(write_history_p): Likewise.
+	(info_verbose): Likewise.
+	* top.h (confirm): Likewise.
+	(history_expansion_p): Likewise.
+	* tracepoint.c (disconnected_tracing): Likewise.
+	(circular_trace_buffer): Likewise.
+	* typeprint.c (print_methods): Likewise.
+	(print_typedefs): Likewise.
+	* utils.c (debug_timestamp): Likewise.
+	(sevenbit_strings): Likewise.
+	(pagination_enabled): Likewise.
+	* utils.h (sevenbit_strings): Likewise.
+	(pagination_enabled): Likewise.
+	* valops.c (overload_resolution): Likewise.
+	* valprint.h (struct value_print_options) <prettyformat_arrays,
+	prettyformat_structs, vtblprint, unionprint, addressprint, objectprint,
+	stop_print_at_null, print_array_indexes, deref_ref, static_field_print,
+	pascal_static_field_print, raw, summary, symbol_print, finish_print>:
+	Likewise.
+	* windows-nat.c (new_console): Likewise.
+	(cygwin_exceptions): Likewise.
+	(new_group): Likewise.
+	(debug_exec): Likewise.
+	(debug_events): Likewise.
+	(debug_memory): Likewise.
+	(debug_exceptions): Likewise.
+	(useshell): Likewise.
+	* windows-tdep.c (maint_display_all_tib): Likewise.
+	* xml-support.c (debug_xml): Likewise.
+
+2019-09-17  Mike Gulick  <mgulick@mathworks.com>
+
+	* source.c (prepare_path_for_appending): New function.
+	(openp): Make use of new function.
+	(find_and_open_source): Search for the compilation directory and
+	source file as a relative path beneath the directory search path.
+
+2019-09-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* source-cache.c (source_cache::get_line_charpos): Catch
+	exceptions and return false, this matches the behaviour documented
+	in the header file.
+
+2019-09-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-tasks.c (info_task): Remove quoting of the task's name.
+
+2019-09-16  Christian Biesinger  <cbiesinger@google.com>
+
+	* symfile.c (auto_solib_add): Replace comment with a reference
+	to the header file.
+
+2019-09-14  Christian Biesinger  <cbiesinger@google.com>
+
+	* NEWS: Mention that gdb can now be compiled with Python 3
+	on Windows.
+
+2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* maint.c (maint_print_section_data::maint_print_section_data):
+	Force use of 'float log10 (float)' by casting the argument to
+	float.
+
+2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* maint.c: Add 'cmath' include.
+	(struct maint_print_section_data): New structure.
+	(print_section_index): New function.
+	(print_bfd_section_info): Add header comment, small whitespace
+	cleanup, and update to call new print_section_index function.
+	(print_objfile_section_info): Likewise.
+	(maint_obj_section_from_bfd_section): New function.
+	(print_bfd_section_info_maybe_relocated): New function.
+	(maintenance_info_sections): Add header comment, always use
+	bfd_map_over_sections instead of ALL_OBJFILE_OSECTIONS.
+
+2019-09-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* psymtab.c (find_pc_sect_psymtab): Move baseaddr local into more
+	inner scope, add check that the objfile has psymtabs before
+	checking psymtabs_addrmap.
+	* psymtab.h (psymtab_storage) <psymtabs_addrmap>: Extend comment.
+
+2019-09-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Announce that Ada task names are now shown at more places,
+	and between quotes (except in info task output).
+	* ada-tasks.c (task_to_str): New function.
+	(display_current_task_id): Call task_to_str.
+	(task_command_1): Likewise.
+	(print_ada_task_info): In non-mi mode, Properly align headers and data
+	when task-id length is > 9 (9 is the default for a 32 bits CORE_ADDR).
+
+2019-09-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* procfs.c (procfs_target::wait) <PR_FAULTED>: Get signal from
+	prstatus.pr_lwp.pr_info instead of making it up.
+
+2019-09-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* auto-load.c (auto_load_expand_dir_vars): Update.
+	* defs.h (gdb_datadir): Change to std::string.
+	(python_libdir): Likewise.
+	(relocate_gdb_directory): Change return type to std::string.
+	* guile/guile.c (gdbscm_data_directory): Update.
+	(initialize_scheme_side): Update.
+	* jit.c (jit_reader_dir): Change to std::string.
+	(jit_reader_load_command): Update.
+	* main.c (gdb_datadir): Change to std::string.
+	(python_libdir): Likewise.
+	(set_gdb_data_directory): Update.
+	(relocate_path): Change to return std::string.
+	(relocate_gdb_directory): Change to return std::string.
+	(relocate_gdbinit_path_maybe_in_datadir): Update.
+	(captured_main_1): Update.
+	* python/python.c (do_start_initialization): Update.
+	* top.c (show_gdb_datadir): Update.
+	* xml-syscall.c (xml_init_syscalls_info): Update.
+	(init_syscalls_info): Update.
+
+2019-09-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* main.c (relocate_gdbinit_path_maybe_in_datadir): Factor this code
+	out of get_init_files.
+	(get_init_files): Update.
+
+2019-09-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* main.c (get_init_files): Change to use std::string.
+	(captured_main_1): Update.
+	(print_gdb_help): Update.
+
+2019-09-11  Ali Tamur  <tamur@google.com>
+
+	* target-float.c (host_float_ops<T>::to_longest): Update
+	implementation.
+
+2019-09-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* dbxread.c (read_dbx_symtab): Update.
+	* dwarf2read.c (load_partial_dies): Update.
+	* mdebugread.c (parse_partial_symbols): Update.
+	(handle_psymbol_enumerators): Update.
+	* psympriv.h (add_psymbol_to_list): Change type of copy_names to bool.
+	* psymtab.c (add_psymbol_to_bcache): Likewise.
+	(add_psymbol_to_list): Likewise.
+	* symtab.c (symbol_set_names): Likewise.
+	* symtab.h (symbol_set_names): Likewise.
+	* xcoffread.c (scan_xcoff_symtab): Update.
+
+2019-09-11  Tom Tromey  <tom@tromey.com>
+
+	* symfile-mem.c (symbol_file_add_from_memory): Use
+	bfd_set_filename.
+	* solib-darwin.c (darwin_bfd_open): Use bfd_set_filename.
+	* solib-aix.c (solib_aix_bfd_open): Use bfd_set_filename.
+
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf-index-write.c (write_psymbols): Extend error message.
+	(debug_names::insert): Add Ada code.
+	(debug_names::write_psymbols): Remove Ada check.
+	(debug_names) <m_string_obstack>: New member.
+	* dwarf2read.c (gdb_index_symbol_name_matcher): Remove.
+	(gdb_index_symbol_name_matcher::matches): Remove.
+	(mapped_index_base::find_name_components_bounds): Add "lang"
+	parameter.
+	(mapped_index_base::build_name_components): Also split names
+	according to Ada syntax.
+	(dw2_expand_symtabs_matching_symbol): Loop over languages.  Change
+	type of "match_callback".
+	(check_match, check_find_bounds_finds)
+	(dw2_expand_symtabs_matching): Update.
+	(dw2_debug_names_iterator): Add new constructor.
+	(dw2_debug_names_map_matching_symbols): New function.
+	(dw2_debug_names_expand_symtabs_matching): Update.
+	(dwarf2_debug_names_functions): Use
+	dw2_debug_names_map_matching_symbols.
+
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (dw2_get_file_names_reader): Add the
+	CU's file name to the results.
+
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (add_nonlocal_symbols): Combine calls to
+	map_matching_symbols.  Update.
+	* dwarf2read.c (dw2_map_matching_symbols): Update.
+	* psymtab.c (match_partial_symbol): Change type; update.
+	(psym_map_matching_symbols): Likewise.
+	* symfile-debug.c (debug_qf_map_matching_symbols): Change
+	type; update.
+	* symfile.h (struct quick_symbol_functions)
+	<map_matching_symbols>: Change "name" to be a lookup_name_info.
+	Remove "match".
+
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* psymtab.c (map_block): Remove.
+	(psym_map_matching_symbols): Use iterate_over_symbols_terminated.
+	* symtab.c (iterate_over_symbols_terminated): New function.
+	* symtab.c (iterate_over_symbols_terminated): Declare.
+
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_iterate_over_symbols): Return bool.
+	* language.h (struct language_defn) <la_iterate_over_symbols>:
+	Return bool.
+	* symtab.c (iterate_over_symbols): Return bool.
+	* symtab.h (iterate_over_symbols): Return bool.
+
+2019-09-10  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (aux_add_nonlocal_symbols): Change type.
+	(add_nonlocal_symbols): Update.
+	* dwarf2read.c (dw2_map_matching_symbols): Change type.
+	* psymtab.c (map_block, psym_map_matching_symbols): Change type.
+	* symfile-debug.c (debug_qf_map_matching_symbols): Change type.
+	* symfile.h (struct quick_symbol_functions) <map_matching_symbols>:
+	Change type of "callback".  Remove "data".
+
+
+2019-09-09  Ali Tamur  <tamur@google.com>
+
+	* dwarf2read.c (comp_unit_head): Update comment.                     
+	(dwarf2_dwo_name): New function declaration.                             
+	(dwarf_unit_type_name): New function declaration.                        
+	(read_comp_unit_head): Add support for new compilation units,            
+	DW_UT_partial, DW_UT_skeleton, DW_UT_split_compile, DW_UT_split_type.    
+	Particularly, DW_UT_skeleton and DW_UT_split_compile have dwo_id         
+	(currently named as "signature") in their header. Also clarify error     
+	messages.                                                                
+	(lookup_dwo_id): New function. Returns the dwo id of the given           
+	compile unit.                                                            
+	(lookup_dwo_unit): Use the new lookup_dwo_id function.                   
+	(init_cutu_and_read_dies): Use the new dwarf2_dwo_name and lookup_dwo_id 
+	functions.                                                               
+	(create_dwo_cu_reader): Use the added lookup_dwo_id function.            
+	(dwarf2_dwo_name): Get the dwo name if present.                          
+	(dwarf_unit_type_name): Convert DW_UT_* types to string for diagnostic   
+	purposes.
+
+2019-09-09  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_all_windows_info): Use ui_out.
+
+2019-09-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* python/python.c (do_start_initialization): Make progname_copy static,
+	to avoid a leak report.
+
+2019-09-08  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (box_win): Truncate long window titles.
+
+2019-09-07  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2read.c (struct dw2_symtab_iterator) <block_index>:
+	Change type to gdb::optional<block_enum>.
+	(dw2_symtab_iter_init): Change block_index parameter type
+	to gdb::optional<block_enum>.
+	(dw2_lookup_symbol): Change block_index parameter
+	type to block_enum.c
+	(dw2_debug_names_lookup_symbol): Likewise.
+	* psymtab.c (psym_lookup_symbol): Likewise.
+	* symfile-debug.c (debug_qf_lookup_symbol): Likewise.
+	* symfile.h (struct quick_symbol_functions) <lookup_symbol>:
+	Likewise.
+
+2019-09-06  Christian Biesinger  <cbiesinger@google.com>
+
+	* defs.h (relocate_gdb_directory): Change int to bool in
+	signature and rename flag to relocatable.
+	* main.c (relocate_path): Likewise.
+	(relocate_gdb_directory): Likewise.
+
+2019-09-06  Alan Modra  <amodra@gmail.com>
+
+	* coffread.c (coff_symfile_read): Constify filename variable.
+	* dbxread.c (dbx_symfile_init, coffstab_build_psymtabs),
+	(elfstab_build_psymtabs, stabsect_build_psymtabs): Likewise.
+	* gdb_bfd.c (gdb_bfd_close_or_warn): Likewise.
+	* solib.c (reload_shared_libraries_1): Likewise.
+	* symfile.c (reread_symbols): Likewise.
+	* solib-aix.c (solib_aix_bfd_open): Add cast for xfree of filename.
+	* solib-darwin.c (darwin_bfd_open): Likewise.
+	* symfile-mem.c (symbol_file_add_from_memory): Likewise.
+
+2019-09-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* psymtab.c (print_partial_symbols): Handle missing domain_enum
+	values MODULE_DOMAIN and COMMON_BLOCK_DOMAIN.
+
+2019-09-03  Tom Tromey  <tromey@adacore.com>
+
+	* ada-valprint.c (ada_val_print_num): Don't recurse for range
+	types.
+	(has_negatives): Unbias a range type bound.
+	* dwarf2read.c (read_subrange_type): Handle DW_AT_GNU_bias.
+	* gdbtypes.c (operator==): Handle new field.
+	(create_range_type): Add "bias" parameter.
+	(create_static_range_type, resolve_dynamic_range): Update.
+	* gdbtypes.h (struct range_bounds) <bias>: New member.
+	(create_range_type): Add bias parameter.
+	* printcmd.c (print_scalar_formatted): Unbias range types.
+	* value.c (unpack_long): Unbias range types.
+	(pack_long): Bias range types.
+
+2019-09-02  Alan Hayward  <alan.hayward@arm.com>
+
+	* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Check all
+	probe arguments.
+
+2019-09-02  Alan Hayward  <alan.hayward@arm.com>
+
+	* break-catch-throw.c (fetch_probe_arguments): Use gdbarch.
+	* dtrace-probe.c (dtrace_probe::get_argument_count): Likewise.
+	* probe.c (probe_safe_evaluate_at_pc) (compute_probe_arg)
+	(compile_probe_arg): Likewise.
+	* probe.h (get_argument_count): Likewise.
+	* solib-svr4.c (solib_event_probe_action): Likewise.
+	* stap-probe.c (stap_probe::get_argument_count): Likewise.
+
+2019-09-02  Alan Hayward  <alan.hayward@arm.com>
+
+	* solib-svr4.c (svr4_find_and_create_probe_breakpoints): Move
+	code to here...
+	(svr4_create_solib_event_breakpoints): ...from here.
+
+2019-08-30  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* nat/fork-inferior.c (trace_start_error): Remove "\nError: "
+	suffix from warning message.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<refresh_all>: Don't declare.
+	* tui/tui-winsource.c (tui_source_window_base::refresh_all):
+	Remove.
+	* tui/tui-win.c (tui_refresh_all_win): Don't call refresh_all or
+	tui_show_locator_content.
+	* tui/tui-regs.h (struct tui_data_window) <refresh_all>: Don't
+	declare.
+	* tui/tui-regs.c (tui_data_window::refresh_all): Remove.
+	* tui/tui-data.h (struct tui_win_info) <refresh_all>: Don't
+	declare.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-io.c (tui_cont_sig): Don't call wrefresh.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (_initialize_tui_stack): Move later.
+	Remove unnecessary forward declarations.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_locator_window::set_locator_fullname): Call
+	rerender.
+	(tui_update_locator_fullname, tui_show_frame_info): Don't call
+	tui_show_locator_content.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_show_locator_content): Move lower.  Rewrite.
+	(tui_locator_window::rerender): Rewrite using body of previous
+	tui_show_locator_content.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (struct tui_locator_window) <set_locator_info,
+	set_locator_fullname>: New methods.
+	* tui/tui-stack.c (tui_locator_window::set_locator_fullname):
+	Rename from tui_set_locator_fullname.
+	(tui_locator_window::set_locator_info): Rename from
+	tui_set_locator_info.  Return bool.
+	(tui_update_locator_fullname, tui_show_frame_info): Update.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_layout): Don't call tui_refresh_all.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Don't
+	call touchwin.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (box_win): Assume win_info and
+	win_info->handle cannot be NULL.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_item_window) <rerender,
+	refresh_window>: Declare.
+	* tui/tui-regs.c (tui_data_window::display_registers_from): Call
+	resize.
+	(tui_data_item_window::rerender): Rename from
+	tui_display_register.
+	(tui_data_item_window::refresh_window): New method.
+	* tui/tui-layout.c (tui_gen_win_info::resize): Do nothing on
+	no-op.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <regs_content,
+	regs_column_count, current_group>: Move later.  Now private.
+	<get_current_group>: New method.
+	* tui/tui-regs.c (tui_reg_command): Update.
+	* tui/tui-layout.c (tui_set_layout): Update.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::display_registers_from_line)
+	(tui_data_window::rerender): Don't call
+	check_and_display_highlight_if_needed.
+	(tui_data_window::refresh_all): Remove call to
+	erase_data_content.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::last_regs_line_no)
+	(tui_data_window::display_registers_from)
+	(tui_data_window::display_reg_element_at_line)
+	(tui_data_window::display_registers_from_line): Remove checks of
+	"empty".
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <display_all_data>:
+	Don't declare.
+	* tui/tui-regs.c (tui_data_window::show_registers): Call
+	rerender.
+	(tui_data_window::rerender): Rename from display_all_data.
+	(tui_data_window::rerender): Remove old implementation.
+
+2019-08-30  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::display_all_data): Change
+	text.
+	* tui/tui-data.h (NO_DATA_STRING): Remove define.
+
+2019-08-29  Bernhard Wodok  <barto@gmx.net>
+	    Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	PR win32/24284
+	* mingw-hdep.c (gdb_select): Handle case when 'n' is zero.
+
+2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* symtab.c (search_symbols): Don't include MODULE_DOMAIN symbols
+	when searching for types.
+
+2019-08-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-lang.c (f_language_defn): Use f_print_typedef.
+	* f-lang.h (f_print_typedef): Declare.
+	* f-typeprint.c (f_print_typedef): Define.
+
+2019-08-27  Christian Biesinger  <cbiesinger@google.com>
+
+	* nat/linux-namespaces.c (mnsh_main): Initialize fd (to -1).
+
+2019-08-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cli/cli-utils.c (info_print_options_defs): Delete.
+	(make_info_print_options_def_group): Delete.
+	(extract_info_print_options): Delete.
+	(info_print_command_completer): Delete.
+	(info_print_args_help): Add extra parameter, and optionally
+	include text about -n flag.
+	* cli/cli-utils.h (struct info_print_options): Delete.
+	(extract_info_print_options): Delete declaration.
+	(info_print_command_completer): Delete declaration.
+	(info_print_args_help): Add extra parameter, extend header
+	comment.
+	* python/python.c (gdbpy_rbreak): Pass additional parameter to
+	search_symbols.
+	* stack.c (struct info_print_options): New type.
+	(info_print_options_defs): New file scoped variable.
+	(make_info_print_options_def_group): New static function.
+	(info_print_command_completer): New static function.
+	(info_locals_command): Update to use new local functions.
+	(info_args_command): Likewise.
+	(_initialize_stack): Add extra parameter to calls to
+	info_print_args_help.
+	* symtab.c (search_symbols): Add extra parameter, use this to
+	possibly excluse non-debug symbols.
+	(symtab_symbol_info): Add extra parameter, which is passed on to
+	search_symbols.
+	(struct info_print_options): New type.
+	(info_print_options_defs): New file scoped variable.
+	(make_info_print_options_def_group): New static function.
+	(info_print_command_completer): New static function.
+	(info_variables_command): Update to use local functions, and pass
+	extra parameter through to symtab_symbol_info.
+	(info_functions_command): Likewise.
+	(info_types_command): Pass additional argument through to
+	symtab_symbol_info.
+	(rbreak_command): Pass extra argument to search_symbols.
+	(_initialize_symtab): Add extra arguments for calls to
+	info_print_args_help, and update help text for 'info variables',
+	'whereis', and 'info functions' commands.
+	* symtab.h (search_symbols): Add extra argument to declaration.
+	* NEWS: Mention new flags.
+
+2019-08-26  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (lookup_static_symbol): Call the new function (and move
+	it down to be next to lookup_global_symbol).
+	(struct global_sym_lookup_data): Add block_enum member and rename to...
+	(struct global_or_static_sym_lookup_data): ...this.
+	(lookup_symbol_global_iterator_cb): Pass block_index instead of
+	GLOBAL_BLOCK to lookup_symbol_in_objfile and rename to...
+	(lookup_symbol_global_or_static_iterator_cb): ...this.
+	(lookup_global_or_static_symbol): New function.
+	(lookup_global_symbol): Call new function.
+
+2019-08-26  Tom de Vries  <tdevries@suse.de>
+
+	PR c++/24852
+	* break-catch-throw.c (fetch_probe_arguments): Improve error mesage
+	when pc_probe.prob == NULL.
+
+2019-08-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2read.c (dw2_debug_names_iterator::next): Rename local
+	variable symbol_linkage to symbol_linkage_.
+
+2019-08-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2read.c (dw2_debug_names_iterator::next): Use enum to
+	represent whether the symbol is static, dynamic, or we don't
+	know.
+
+2019-08-25  Yoshinori Sato <ysato@users.sourceforge.jp>
+
+        * rx-tdep.c (rx_register_names): New.
+        (rx_register_name): Delete.
+        (rx_psw_type): Delete.
+        (rx_fpsw_type): Delete.
+        (rx_register_type): Delete.
+        (rx_gdbarch_init): Convert target-descriptions.
+        (_initialize_rx_tdep): Add initialize_tdesc_rx.
+        * features/Makefile: Add rx.xml.
+        * features/rx.xml: New.
+        * features/rx.c: Generated.
+        * NEWS: Mention target description support.
+
+2019-08-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (symbol_cache_lookup): Always initialize *bsc_ptr and
+	*slot_ptr.
+
+2019-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* configure.ac: Don't check for 'dlfcn.h' (moved to
+	gdbsupport/common.m4).
+	* Makefile.in (COMMON_SFILES): Move 'gdb-dlfcn.c' to
+	'gdbsupport/'.
+	(HFILES_NO_SRCDIR): Likewise, for 'gdb-dlfcn.h'.
+	* compile/compile-c-support.c: Include
+	'gdbsupport/gdb-dlfcn.h'.
+	* gdbsupport/common.m4: Check for 'dlfcn.h'.
+	* gdb-dlfcn.c: Move to...
+	* gdbsupport/gdb-dlfcn.c: ... here.
+	* gdb-dlfcn.h: Move to...
+	* gdbsupport/gdb-dlfcn.h: ... here.
+
+2019-08-23  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* nios2-tdep.c (struct reg_value): Improve comments.  Make
+	the offset field signed.
+
+2019-08-22  Christian Biesinger  <cbiesinger@google.com>
+
+	* python/lib/gdb/__init__.py (_execute_file): New function.
+	* python/python.c (python_run_simple_file): Call gdb._execute_file
+	on Windows.
+
+2019-08-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (yylex): Remove is_a_field_of_this local variable, and
+	all uses as this was never set to anything but a zero value.
+
+2019-08-21  Bogdan Harjoc  <harjoc@gmail.com>
+
+	* cli/cli-cmds.c (with_command_1): Error out if no arguments.
+
+2019-08-21  Christian Biesinger  <cbiesinger@google.com>
+
+	* tui/tui-data.h (tui_gen_win_info): Add an =default
+	move constructor, required by some GCC versions.
+
+2019-08-21  Jinke Fan  <fanjinke51@yeah.net>
+
+	* go32-nat.c (go32_sysinfo): Add hygon_p.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <last_regs_line_no,
+	line_from_reg_element_no, first_reg_element_no_inline,
+	display_all_data, delete_data_content_windows,
+	erase_data_content>: Now private.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (box_win): Change type of highlight_flag.
+	(tui_unhighlight_win, tui_highlight_win)
+	(tui_win_info::make_window): Update.
+	* tui/tui-data.h (HILITE, NO_HILITE): Remove.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (PROC_PREFIX, LINE_PREFIX, PC_PREFIX)
+	(MIN_LINE_WIDTH, MIN_PROC_WIDTH, MAX_TARGET_WIDTH)
+	(MAX_PID_WIDTH): Move to tui-stack.c.
+	* tui/tui-stack.c (PROC_PREFIX, LINE_PREFIX, PC_PREFIX)
+	(MIN_LINE_WIDTH, MIN_PROC_WIDTH, MAX_TARGET_WIDTH)
+	(MAX_PID_WIDTH): Move from tui-data.h.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.h (tui_make_window): Don't declare.
+	* tui/tui-wingeneral.c (box_win): Change type of win_info.
+	(box_win): Update.
+	(tui_gen_win_info::make_window): Rename from tui_make_window.
+	(tui_win_info::make_window): New method.
+	(tui_gen_win_info::make_visible): Update.
+	* tui/tui-source.c (tui_source_window::set_contents): Update.
+	* tui/tui-regs.c (tui_data_window::show_register_group): Update.
+	(tui_data_window::display_registers_from): Update.
+	* tui/tui-layout.c (tui_gen_win_info::resize): Update.
+	* tui/tui-data.h (struct tui_gen_win_info) <make_window>:
+	Declare.
+	<can_box>: Remove.
+	<title>: Remove.
+	(struct tui_win_info) <make_window>: Declare.
+	<can_box>: Now virtual.
+	<title>: New member.
+	* tui/tui-data.c (~tui_gen_win_info): Don't free title.
+	* tui/tui-command.c (tui_cmd_window::resize): Update.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <display_regs>: Remove.
+	* tui/tui-regs.c (tui_data_window::show_registers): Update.
+	(tui_data_window::check_register_values): Update.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window): Use
+	DISABLE_COPY_AND_ASSIGN.
+	<regs_content>: Change type, removing unique_ptr.
+	<tui_data_window>: Add move constructor.
+	* tui/tui-regs.c (tui_data_window::show_registers)
+	(tui_data_window::show_register_group)
+	(tui_data_window::display_registers_from)
+	(tui_data_window::display_registers_from)
+	(tui_data_window::first_data_item_displayed)
+	(tui_data_window::delete_data_content_windows)
+	(tui_data_window::rerender, tui_data_window::refresh_window)
+	(tui_data_window::check_register_values): Update.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <show_registers,
+	show_register_group>: Declare.
+	(tui_show_register_group): Don't declare.
+	* tui/tui-regs.c (tui_data_window::show_registers): Rename from
+	tui_show_registers.
+	(tui_data_window::show_register_group): Rename from
+	tui_show_register_group.
+	(tui_data_window::check_register_values, tui_reg_command):
+	Update.
+	* tui/tui-layout.c (tui_set_layout): Update.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_window) <check_register_values>:
+	Declare.
+	(tui_check_register_values): Don't declare.
+	* tui/tui-regs.c (tui_data_window::check_register_values): Rename
+	from tui_check_register_values.
+	* tui/tui-hooks.c (tui_register_changed): Update.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_reg_layout): Move later.
+	(tui_show_registers): Don't enable TUI mode or change layout.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_item_window)
+	<~tui_data_item_window>: Remove.
+	<content>: Now a unique_xmalloc_ptr.
+	* tui/tui-regs.c (tui_register_format): Return a
+	unique_xmalloc_ptr.
+	(tui_get_register): Update.
+	(~tui_data_item_window): Remove.
+	(tui_data_window::display_registers_from, tui_display_register):
+	Update.
+	* tui/tui-io.h (tui_expand_tabs): Update.
+	* tui/tui-io.c (tui_expand_tabs): Return a unique_xmalloc_ptr.
+	Remove "col" parameter.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_item_window) <value>: Remove
+	field.
+	* tui/tui-regs.c (~tui_data_item_window): Update.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_register_format, tui_get_register): Move
+	earlier.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_reg_command): Remove NULL check.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.h (struct tui_source_window): Update.
+	* tui/tui-regs.c (tui_show_registers): Update.
+	* tui/tui-disasm.h (struct tui_disasm_window): Update.
+	* tui/tui-data.h (NO_SRC_STRING, NO_DISASSEM_STRING)
+	(NO_REGS_STRING): Remove defines.
+
+2019-08-20  Conrad Meyer  <cem@FreeBSD.org>
+
+	* remote.c (remote_target::remote_btrace_maybe_reopen): Avoid
+	unnecessary thread walk if remote doesn't support the packet.
+
+2019-08-19  Tom Tromey  <tromey@adacore.com>
+
+	* python/py-value.c (value_has_field): Fix indentation.
+
+2019-08-19  Tom Tromey  <tromey@adacore.com>
+
+	* printcmd.c (do_one_display, info_display_command): Update.
+	* block.h (contained_in): Return bool.  Add allow_nested
+	parameter.
+	* block.c (contained_in): Return bool.  Add allow_nested
+	parameter.
+
+2019-08-19  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* configure.ac: Disallow the combination of -static-libstdc++ and
+	source highlight.
+	* source-cache.c (get_language_name): Handle rust.
+	(source_cache::get_source_lines): Ignore highlighting exceptions.
+
+2019-08-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.h (enum tui_win_type) <EXEC_INFO_WIN>: Remove.
+	* tui/tui-winsource.h (struct tui_exec_info_window): Remove.
+	(struct tui_source_window_base) <make_visible, refresh_window,
+	resize>: Remove methods.
+	<execution_info>: Remove field.
+	* tui/tui-winsource.c (tui_source_window_base::do_erase_source_content)
+	(tui_show_source_line, tui_source_window_base)
+	(~tui_source_window_base): Update.
+	(tui_source_window_base::resize)
+	(tui_source_window_base::make_visible)
+	(tui_source_window_base::refresh_window): Remove.
+	(tui_source_window_base::update_exec_info): Update.
+	* tui/tui-source.c (tui_source_window::set_contents): Update.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Update.
+
+2019-08-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-hooks.c (tui_remove_hooks): Don't set
+	deprecated_query_hook.
+
+2019-08-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_source_windows_with_addr)
+	(tui_update_source_windows_with_line): Update.
+	* tui/tui-source.h (struct tui_source_window)
+	<show_symtab_source>: Declare.
+	(tui_show_symtab_source): Don't declare.
+	* tui/tui-source.c (tui_show_symtab_source): Rename from
+	tui_show_symtab_source.
+
+2019-08-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<set_contents>: Declare.
+	* tui/tui-winsource.c
+	(tui_source_window_base::update_source_window_as_is): Update.
+	* tui/tui-source.h (struct tui_source_window) <set_contents>:
+	Declare.
+	(tui_set_source_content): Don't declare.
+	* tui/tui-source.c (tui_source_window::set_contents): Rename from
+	tui_set_source_content.
+	* tui/tui-disasm.h (struct tui_disasm_window) <set_contents>:
+	Declare.
+	(tui_set_disassem_content): Don't declare.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Rename from
+	tui_set_disassem_content.
+
+2019-08-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<update_breakpoint_info>: Declare.
+	(tui_update_breakpoint_info): Don't declare.
+	* tui/tui-winsource.c (tui_source_window_base::update_source_window_as_is)
+	(tui_update_all_breakpoint_info): Update.
+	(tui_source_window_base::update_breakpoint_info): Rename from
+	tui_update_breakpoint_info.
+	(tui_source_window_base::update_exec_info): Update.
+
+2019-08-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<update_source_window>: Declare.
+	(tui_update_source_window): Don't declare.
+	* tui/tui-winsource.c
+	(tui_source_window_base::update_source_window): Rename from
+	tui_update_source_window.
+	(tui_source_window_base::rerender): Update.
+	* tui/tui-source.c (tui_source_window::maybe_update): Update.
+	* tui/tui-disasm.c (tui_show_disassem)
+	(tui_show_disassem_and_update_source)
+	(tui_disasm_window::maybe_update): Update.
+
+2019-08-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<update_source_window_as_is>: Declare.
+	(tui_update_source_window_as_is): Don't declare.
+	* tui/tui-winsource.c (tui_update_source_window): Update
+	(tui_source_window_base::update_source_window_as_is): Rename from
+	tui_update_source_window_as_is.
+	(tui_source_window_base::refill): Update.
+	* tui/tui-source.c (tui_show_symtab_source): Update.
+	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical):
+	Update.
+
+2019-08-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_update_source_window)
+	(tui_update_source_window_as_is): Remove "noerror" parameter.
+	* tui/tui-winsource.c (tui_update_source_window)
+	(tui_update_source_window_as_is): Remove "noerror" parameter.
+	(tui_update_source_windows_with_addr)
+	(tui_update_source_windows_with_line)
+	(tui_source_window_base::rerender)
+	(tui_source_window_base::refill): Update.
+	* tui/tui-source.h (tui_set_source_content)
+	(tui_show_symtab_source): Remove "noerror" parameter.
+	* tui/tui-source.c (tui_set_source_content): Remove "noerror"
+	parameter.
+	(tui_show_symtab_source): Likewise.
+	(tui_source_window::maybe_update): Update.
+	* tui/tui-disasm.c (tui_show_disassem)
+	(tui_show_disassem_and_update_source)
+	(tui_disasm_window::do_scroll_vertical)
+	(tui_disasm_window::maybe_update): Update.
+
+2019-08-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_is_window_visible): Update.
+	* tui/tui-wingeneral.c (tui_make_window)
+	(tui_gen_win_info::make_visible, tui_refresh_all): Update.
+	* tui/tui-win.c (window_name_completer, tui_refresh_all_win)
+	(tui_set_focus_command, tui_all_windows_info, update_tab_width)
+	(tui_set_win_height_command, parse_scrolling_args): Update.
+	* tui/tui-source.c (tui_source_window::style_changed): Update.
+	* tui/tui-regs.c (tui_show_registers)
+	(tui_data_window::first_data_item_displayed)
+	(tui_data_window::delete_data_content_windows)
+	(tui_check_register_values, tui_reg_command): Update.
+	* tui/tui-disasm.c (tui_show_disassem): Update.
+	* tui/tui-data.h (struct tui_gen_win_info) <is_visible>: New
+	method.
+	<is_visible>: Remove field.
+	* tui/tui-data.c (tui_next_win, tui_prev_win)
+	(tui_delete_invisible_windows): Update.
+
+2019-08-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<m_has_locator>: Remove.
+	* tui/tui-layout.c (show_source_disasm_command, show_data)
+	(show_source_or_disasm_and_command): Update.
+
+2019-08-16  Alan Hayward  <alan.hayward@arm.com>
+
+	* NEWS (Other MI changes): New subsection.
+	* aarch64-tdep.c (aarch64_get_pc_address_flags): New function.
+	(aarch64_gdbarch_init): Add aarch64_get_pc_address_flags.
+	* arch-utils.c (default_get_pc_address_flags): New function.
+	* arch-utils.h (default_get_pc_address_flags): New declaration.
+	* gdbarch.sh: Add get_pc_address_flags.
+	* gdbarch.c: Regenerate.
+	* gdbarch.h: Likewise.
+	* stack.c (print_pc): New function.
+	(print_frame_info) (print_frame): Call print_pc.
+
+2019-08-16  Tom de Vries  <tdevries@suse.de>
+
+	* maint.c (maintenance_info_sections): Also handle !ALLOBJ case using
+	print_objfile_section_info.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-io.c (tui_puts_internal): Check TUI_CMD_WIN before
+	calling update_cmdwin_start_line.
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<do_make_visible_with_new_height, set_new_height>: Don't declare.
+	<rerender>: Declare.
+	* tui/tui-winsource.c (tui_source_window_base::update_tab_width):
+	Call rerender.
+	(tui_source_window_base::set_new_height): Remove.
+	(tui_source_window_base::rerender): Rename from
+	do_make_visible_with_new_height.
+	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Use
+	resize method.
+	(tui_win_info::make_invisible_and_set_new_height)
+	(tui_win_info::make_visible_with_new_height): Remove.
+	* tui/tui-stack.h (struct tui_locator_window) <rerender>:
+	Declare.
+	* tui/tui-stack.c (tui_locator_window::rerender): New method.
+	* tui/tui-regs.h (struct tui_data_window) <set_new_height,
+	do_make_visible_with_new_height>: Don't declare.
+	<rerender>: Declare.
+	* tui/tui-regs.c (tui_data_window::rerender): Rename from
+	set_new_height.
+	(tui_data_window::do_make_visible_with_new_height): Remove.
+	* tui/tui-layout.c (show_source_disasm_command, show_data): Don't
+	call tui_show_locator_content.
+	(tui_gen_win_info::resize): Call rerender.
+	(show_source_or_disasm_and_command): Don't call
+	tui_show_locator_content.
+	* tui/tui-data.h (struct tui_gen_win_info) <rerender>: New
+	method.
+	(struct tui_win_info) <rerender>: Declare.
+	<set_new_height, make_invisible_and_set_new_height,
+	make_visible_with_new_height>: Don't declare.
+	* tui/tui-data.c (tui_win_list::rerender): New method.
+	* tui/tui-command.h (struct tui_cmd_window)
+	<do_make_visible_with_new_height>: Don't declare.
+	* tui/tui-command.c
+	(tui_cmd_window::do_make_visible_with_new_height): Remove.
+
+2019-08-15  Tom Tromey  <tromey@adacore.com>
+
+	* ada-exp.y (convert_char_literal): Handle "Q%c" encoding.
+	* ada-lang.c (ada_enum_name): Likewise.
+
+2019-08-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* python/lib/gdb/__init__.py (GdbOutputFile): Rename to have a
+	leading underscore.
+	(GdbOutputErrorFile): Likewise.
+	(global scope): Adjust constructor calls to GdbOutput{,Error}File
+	accordingly.
+	(execute_unwinders): Rename to have a leading underscore.
+	(auto_load_packages): Likewise.
+	(global scope): Adjust call to auto_load_packages accordingly.
+	(GdbSetPythonDirectory): Likewise.
+	* python/py-unwind.c (pyuw_sniffer): Call _execute_unwinders
+	instead of execute_unwinders.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_layout, show_source_disasm_command)
+	(show_data): Don't change window visibility.
+	(tui_gen_win_info::resize): Remove special case for command
+	window.  Use wresize, when available.
+	(show_source_or_disasm_and_command): Don't change window
+	visibility.
+	* tui/tui-command.h (struct tui_cmd_window) <resize>: Declare.
+	<make_visible>: New method.
+	* tui/tui-command.c (tui_cmd_window::resize): New method.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_iterator): New.
+	(struct tui_source_windows): New.
+	* tui/tui-winsource.c (tui_display_main): Update.
+	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
+	(new_height_ok, parse_scrolling_args): Update.
+	* tui/tui-layout.c (show_layout, show_data): Update.
+	* tui/tui-data.h (tui_source_windows, tui_clear_source_windows)
+	(tui_add_to_source_windows): Don't declare.
+	* tui/tui-data.c (source_windows, tui_source_windows)
+	(tui_clear_source_windows, tui_add_to_source_windows): Remove.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base) <resize>:
+	Rename from reset.
+	* tui/tui-winsource.c (tui_source_window_base::resize): Rename.
+	* tui/tui-layout.c (show_source_disasm_command, show_data):
+	Update.
+	(tui_gen_win_info::resize): Rename.
+	(show_source_or_disasm_and_command): Update.
+	* tui/tui-data.h (struct tui_gen_win_info) <resize>: Rename from
+	reset.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_initialize_static_data): Remove.
+	* tui/tui-interp.c (tui_interp::init): Don't call
+	tui_initialize_static_data.
+	* tui/tui-data.h (tui_initialize_static_data): Don't declare.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (tui_default_win_viewport_height): Don't
+	examine tui_win_list.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_clear_source_content): Don't declare.
+	* tui/tui-winsource.c (tui_update_source_window_as_is): Don't call
+	tui_clear_source_content.
+	(tui_clear_source_content): Remove.
+	(tui_source_window_base::do_erase_source_content): Hoist call to
+	content.clear().
+	* tui/tui-stack.c (tui_show_frame_info): Don't call
+	tui_clear_source_content.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<do_erase_source_content>: New method.
+	<erase_source_content>: New method.
+	(tui_erase_source_content): Don't declare.
+	* tui/tui-winsource.c (tui_clear_source_content): Update.
+	(tui_source_window_base::do_erase_source_content): Rename from
+	tui_erase_source_content.
+	(tui_source_window_base::show_source_content): Update.
+	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Update.
+	* tui/tui-source.h (struct tui_source_window)
+	<erase_source_content>: New method.
+	* tui/tui-disasm.h (struct tui_disasm_window)
+	<erase_source_content>: New method.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_alloc_source_buffer): Don't declare.
+	(struct tui_source_element): Add DISABLE_COPY_AND_ASSIGN, and move
+	constructor.
+	* tui/tui-winsource.c (tui_alloc_source_buffer): Remove.
+	* tui/tui-source.c (tui_set_source_content): Update.
+	* tui/tui-disasm.c (tui_set_disassem_content): Update.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_line_is_displayed): Don't declare.
+	* tui/tui-winsource.c (tui_line_is_displayed): Move to
+	tui-source.c.
+	* tui/tui-source.h (struct tui_source_window) <line_is_displayed>:
+	Declare.
+	* tui/tui-source.c (tui_source_window::line_is_displayed): New
+	method.
+	(tui_source_window::maybe_update): Update.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_addr_is_displayed): Don't declare.
+	* tui/tui-winsource.c (tui_addr_is_displayed): Move to
+	tui-disasm.c.
+	* tui/tui-disasm.h (struct tui_disasm_window) <addr_is_displayed>:
+	Declare.
+	* tui/tui-disasm.c (tui_disasm_window::addr_is_displayed): New
+	method.
+	(tui_disasm_window::maybe_update): Update.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<maybe_update>: Declare.
+	* tui/tui-stack.c (tui_show_frame_info): Call maybe_update
+	method.
+	* tui/tui-source.h (struct tui_source_window) <maybe_update>:
+	Declare.
+	* tui/tui-source.c (tui_source_window::maybe_update): New method.
+	* tui/tui-disasm.h (struct tui_disasm_window) <maybe_update>:
+	Declare.
+	* tui/tui-disasm.c (tui_disasm_window::maybe_update): New method.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_make_status_line): Use string constructor.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c: Include tui-stack.h.
+	* tui/tui-stack.h (MAX_LOCATOR_ELEMENT_LEN)
+	(struct tui_locator_window): Move from tui-data.h.
+	* tui/tui-stack.c (_locator, tui_locator_win_info_ptr)
+	(tui_initialize_static_data): Move from tui-data.c.
+	* tui/tui-data.h (MAX_LOCATOR_ELEMENT_LEN)
+	(struct tui_locator_window): Move to tui-stack.c.
+	* tui/tui-data.c (_locator, tui_locator_win_info_ptr)
+	(tui_initialize_static_data): Move to tui-stack.c.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_source_disasm_command)
+	(show_source_or_disasm_and_command): Use make_visible method, not
+	tui_make_window.
+	* tui/tui-command.h (struct tui_cmd_window) <make_visible>:
+	Remove.
+
+2019-08-15  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.h (tui_make_window): Update.
+	* tui/tui-wingeneral.c (tui_make_window): Remove "box_it"
+	parameter.
+	(tui_gen_win_info::make_visible): Update.
+	* tui/tui-regs.c (tui_data_window::display_registers_from):
+	Update.
+	* tui/tui-layout.c (show_source_disasm_command)
+	(show_source_or_disasm_and_command): Update.
+	* tui/tui-data.h (struct tui_gen_win_info) <can_box>: New method.
+	(enum tui_box): Remove.
+	(struct tui_win_info) <can_box>: New method.
+	* tui/tui-command.h (struct tui_cmd_window) <can_box>: New
+	method.
+
+2019-08-15  Tom de Vries  <tdevries@suse.de>
+
+	* linux-nat-trad.c: Include gdbarch.h.
+
+2019-08-14  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-tdep.c (aarch64_analyze_prologue): Allow any valid
+	register sizes.
+
+2019-08-14  Tom Tromey  <tromey@adacore.com>
+
+	* darwin-nat.c: Include gdbarch.h.
+	* darwin-nat-info.c: Include gdbarch.h.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_gen_win_info) <last_visible_line>:
+	Remove.
+	* tui/tui-data.c (tui_initialize_static_data): Update.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_exec_info_window)
+	<~tui_exec_info_window, maybe_allocate_content, get_content,
+	m_content>: Remove.
+	(struct tui_source_window_base) <set_exec_info_content,
+	show_exec_info_content>: Don't declare.
+	* tui/tui-winsource.c
+	(tui_exec_info_window::maybe_allocate_content): Remove.
+	(tui_source_window_base::update_exec_info): Rename from
+	set_exec_info_content.
+	(tui_source_window_base::show_exec_info_content)
+	(tui_source_window_base::update_exec_info): Remove.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_clear_exec_info_content): Don't
+	declare.
+	* tui/tui-winsource.c (tui_update_source_window_as_is)
+	(tui_update_source_windows_with_addr, tui_erase_source_content):
+	Update.
+	(tui_clear_exec_info_content): Remove.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_erase_exec_info_content): Don't
+	declare.
+	* tui/tui-winsource.c (tui_source_window_base::refresh_all): Don't
+	call tui_erase_exec_info_content.
+	(tui_clear_exec_info_content): Rename from
+	tui_erase_exec_info_content.
+	(tui_clear_exec_info_content): Delete.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<show_exec_info_content>: Declare.
+	(tui_show_exec_info_content): Don't declare.
+	* tui/tui-winsource.c
+	(tui_source_window_base::show_exec_info_content): Rename from
+	tui_show_exec_info_content.
+	(tui_source_window_base::update_exec_info): Update.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (enum tui_bp_flag, tui_bp_flags, struct tui_source_element)
+	(TUI_BP_HIT_POS, TUI_BP_BREAK_POS, TUI_EXEC_POS)
+	(TUI_EXECINFO_SIZE, tui_exec_info_content): Move ...
+	* tui/tui-winsource.h (enum tui_bp_flag, tui_bp_flags, struct
+	tui_source_element, TUI_BP_HIT_POS, TUI_BP_BREAK_POS)
+	(TUI_EXEC_POS, TUI_EXECINFO_SIZE, tui_exec_info_content):
+	... here.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<update_exec_info>: Declare.
+	(tui_update_exec_info): Don't declare.
+	* tui/tui-winsource.c (tui_update_source_window_as_is)
+	(tui_source_window_base::refresh_all)
+	(tui_update_all_breakpoint_info): Update.
+	(tui_source_window_base::update_exec_info): Rename from
+	tui_update_exec_info.
+	* tui/tui-stack.c (tui_show_frame_info): Update.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<set_exec_info_content>: Declare.
+	(tui_set_exec_info_content): Don't declare.
+	* tui/tui-winsource.c
+	(tui_source_window_base::set_exec_info_content): Rename from
+	tui_set_exec_info_content.
+	(tui_update_exec_info): Update.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<show_source_content>: Declare.
+	(tui_show_source_content): Don't declare.
+	* tui/tui-winsource.c (tui_update_source_window_as_is): Update.
+	(tui_source_window_base::show_source_content): Rename from
+	tui_show_source_content.
+	(tui_source_window_base::refresh_all): Update.
+	* tui/tui-layout.c (show_source_disasm_command)
+	(show_source_or_disasm_and_command): Update.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_erase_source_content)
+	(tui_show_source_content, tui_source_window_base::refresh_all):
+	Update.
+	* tui/tui-wingeneral.h
+	(tui_check_and_display_highlight_if_needed): Don't declare.
+	* tui/tui-wingeneral.c
+	(tui_win_info::check_and_display_highlight_if_needed): Rename from
+	check_and_display_highlight_if_needed.
+	* tui/tui-win.c (tui_rehighlight_all)
+	(tui_win_info::make_visible_with_new_height): Update.
+	* tui/tui-regs.c (tui_data_window::display_registers_from_line)
+	(tui_data_window::erase_data_content)
+	(tui_data_window::display_all_data): Update.
+	* tui/tui-data.h (struct tui_win_info)
+	<check_and_display_highlight_if_needed>: Declare.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_resize_all): Call
+	tui_delete_invisible_windows.
+	* tui/tui-layout.c (show_layout): Call
+	tui_delete_invisible_windows.
+	* tui/tui-data.h (tui_delete_invisible_windows): Declare.
+	* tui/tui-data.c (tui_delete_invisible_windows): New function.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-disasm.c (tui_show_disassem): Add assertion.  Don't call
+	tui_add_win_to_layout.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.h (tui_default_win_height): Don't declare.
+	* tui/tui-layout.c (tui_default_win_height): Now static.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_layout): Unify all layout cases into a
+	single switch.
+	(show_source_disasm_command, show_source_or_disasm_and_command):
+	Don't check current layout.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (make_all_visible): Remove.
+	(tui_make_all_invisible): Simplify.
+	* tui/tui-layout.c (tui_make_all_invisible): Move from
+	tui-wingeneral.c; simplify.
+	(show_layout): Hoist call to tui_make_all_invisible.
+	(show_data): Don't call tui_make_all_invisible.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.h (tui_make_all_visible): Don't declare.
+	* tui/tui-wingeneral.c (tui_make_all_visible): Remove.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (current_layout, tui_current_layout): Move from
+	tui-data.c.
+	(show_source_disasm_command, show_data)
+	(show_source_or_disasm_and_command): Don't use
+	tui_set_current_layout_to.
+	* tui/tui-data.h (tui_set_current_layout_to): Don't declare.
+	* tui/tui-data.c (current_layout, tui_current_layout): Move to
+	tui-layout.c.
+	(tui_set_current_layout_to): Remove.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (tui_set_layout): Update.
+	* tui/tui-data.h (struct tui_layout_def): Remove.
+	(tui_layout_def): Don't declare.
+	* tui/tui-data.c (layout_def): Remove.
+	(tui_layout_def): Remove.
+
+2019-08-13  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<clear_detail>: No longer "override".
+	* tui/tui-regs.h (struct tui_data_window) <clear_detail>: Remove.
+	* tui/tui-regs.c (tui_data_window::clear_detail): Remove.
+	* tui/tui-data.h (struct tui_win_info) <clear_detail>: Remove.
+	* tui/tui-command.h (struct tui_cmd_window) <clear_detail>:
+	Remove.
+	* tui/tui-command.c (tui_cmd_window::clear_detail): Remove.
+
+2019-08-13  Tom Tromey  <tromey@adacore.com>
+
+	* tracepoint.c: Don't include readline.h or history.h.
+
+2019-08-12  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* configure.ac: Check for readline 7.
+	* NEWS: Mention readline 7 requirement.
+	* README: Update.
+
+2019-08-12  Tom Tromey  <tom@tromey.com>
+
+	* mingw-hdep.c (gdb_select): Remove readline hack.
+
+2019-08-09  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* blockframe.c (find_pc_partial_function): Set *block to nullptr
+	when the function fails.
+
+2019-08-09  Andreas Arnez  <arnez@linux.ibm.com>
+
+	* s390-tdep.c (s390_type_align): New function.
+	(s390_gdbarch_init): Set it as type_align gdbarch method.
+
+2019-08-09  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/24591
+	* dwarf2read.c (dwarf2_fetch_die_loc_sect_off): Adjust pc_high and
+	pc_low with relocation offset.
+
+2019-08-07  Tom Tromey  <tromey@adacore.com>
+
+	* stack.c (print_frame_arg, read_frame_local, read_frame_arg)
+	(print_frame_args): Update.
+	* python/py-framefilter.c (py_print_single_arg, enumerate_args):
+	Update.
+	* mi/mi-cmd-stack.c (list_arg_or_local): Update.
+	* frame.h (struct frame_arg): Add initializers.
+	<error>: Now a unique_xmalloc_ptr.
+
+2019-08-07  Alan Hayward  <alan.hayward@arm.com>
+
+	* NEWS: Expand the Pointer Authentication entry.
+	* aarch64-tdep.c (aarch64_frame_unmask_address): Rename from this.
+	(aarch64_frame_unmask_lr): ... to this.
+	(aarch64_prologue_prev_register, aarch64_dwarf2_prev_register):
+	Call aarch64_frame_unmask_lr.
+	* frame.c (struct frame_info): Add "masked" variable.
+	(frame_set_previous_pc_masked) (frame_get_pc_masked): New functions.
+	(fprint_frame): Check for masked pc.
+	* frame.h (frame_set_previous_pc_masked) (frame_get_pc_masked): New
+	declarations.
+	* python/py-framefilter.c (py_print_frame): Check for masked pc.
+	* stack.c (print_frame): Check for masked pc.
+
+2019-08-06  Tom Tromey  <tom@tromey.com>
+
+	* stabsread.c (patch_block_stabs, read_one_struct_field)
+	(read_enum_type): Use obstack_strndup.
+	* rust-exp.y (rust_parser::copy_name): Use obstack_strndup.
+	* gdb_obstack.h (obstack_strndup): Use obstack_strndup.
+	* dwarf2read.c (guess_full_die_structure_name)
+	(anonymous_struct_prefix): Use obstack_strndup.
+	* dbxread.c (cp_set_block_scope): Use obstack_strndup.
+	* c-exp.y (yylex): Use obstack_strndup.
+	* ada-exp.y (write_object_renaming, write_ambiguous_var)
+	(write_var_or_type): Use obstack_strndup.
+
+2019-08-06  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (reread_symbols): Use obstack_strdup.
+	* stabsread.c (read_type): Use obstack_strdup.
+	* gdb_obstack.h (obstack_strdup): New overload.
+	* dwarf2read.c (dwarf2_compute_name, create_dwo_unit_in_dwp_v1)
+	(create_dwo_unit_in_dwp_v2, build_error_marker_type)
+	(dwarf2_canonicalize_name): Use obstack_strdup.
+	* dbxread.c (read_dbx_symtab): Use obstack_strdup.
+	* cp-support.c (inspect_type, replace_typedefs_qualified_name):
+	Use obstack_strdup.
+
+2019-08-06  Tom Tromey  <tom@tromey.com>
+
+	* gdb_obstack.h (obstack_strdup): Define.
+	* gdb_obstack.c (obstack_strdup): Don't define.
+
+2019-08-06  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (SYMNAME_ALLOC, process_xcoff_symbol): Use
+	obstack_strdup.
+	* typeprint.c (typedef_hash_table::find_global_typedef): Use
+	obstack_strdup.
+	* symfile.c (allocate_compunit_symtab): Use obstack_strdup.
+	* stabsread.c (common_block_start): Use obstack_strdup.
+	* objfiles.c (set_objfile_main_name, objfile): Use
+	obstack_strdup.
+	* namespace.c (add_using_directive): Use obstack_strdup.
+	* mdebugread.c (parse_symbol, parse_type): Use obstack_strdup.
+	* jit.c (finalize_symtab): Use obstack_strdup.
+	* dwarf2read.c (fixup_go_packaging, dwarf2_physname)
+	(guess_partial_die_structure_name, partial_die_info::fixup)
+	(dwarf2_name): Use obstack_strdup.
+	* coffread.c (coff_read_struct_type, coff_read_enum_type): Use
+	obstack_strdup.
+	* c-exp.y (scan_macro_expansion): Use obstack_strdup.
+	* buildsym.c (buildsym_compunit::end_symtab_with_blockvector): Use
+	obstack_strdup.
+	* ada-lang.c (ada_decode_symbol): Use obstack_strdup.
+
+2019-08-07  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* unittests/help-doc-selftests.c: New file.
+	* Makefile.in: Add the new file.
+
+2019-08-07  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-decode.h (print_doc_line): Add for_value_prefix argument.
+	* cli/cli-decode.c (print_doc_line): Likewise.  It now prints
+	the full first line, except when FOR_VALUE_PREFIX.  In this case,
+	the trailing '.' is not output, and the first character is uppercased.
+	(print_help_for_command): Update call to print_doc_line.
+	(print_doc_of_command): Likewise.
+	* cli/cli-setshow.c (deprecated_show_value_hack): Likewise.
+	* cli/cli-option.c (append_indented_doc): Do not append newline.
+	(build_help_option): Append newline after first appended_indented_doc
+	only if a second call is done.
+	(build_help): Append 2 new lines before each option, except the first
+	one.
+	* compile/compile.c (_initialize_compile): Add new lines after
+	%OPTIONS%, when not at the end of the help.
+	Change help doc or code
+	producing the help doc to respect the invariants.
+	* maint-test-options.c (_initialize_maint_test_options): Likewise.
+	Also removed the new line after 'Options:', as all other commands
+	do not put an empty line between 'Options:' and the first option.
+	* printcmd.c (_initialize_printcmd): Likewise.
+	* stack.c (_initialize_stack): Likewise.
+	* interps.c (interpreter_exec_cmd): Fix "Usage:" line that was
+	incorrectly telling COMMAND is optional.
+	* ada-lang.c (_initialize_ada_language): Change help doc or code
+	producing the help doc to respect the invariants.
+	* ada-tasks.c (_initialize_ada_tasks): Likewise.
+	* breakpoint.c (_initialize_breakpoint): Likewise.
+	* cli/cli-cmds.c (_initialize_cli_cmds): Likewise.
+	* cli/cli-logging.c (_initialize_cli_logging): Likewise.
+	* cli/cli-setshow.c (_initialize_cli_setshow): Likewise.
+	* cli/cli-style.c (cli_style_option::add_setshow_commands,
+	_initialize_cli_style): Likewise.
+	* corelow.c (core_target_info): Likewise.
+	* dwarf-index-cache.c (_initialize_index_cache): Likewise.
+	* dwarf2read.c (_initialize_dwarf2_read): Likewise.
+	* filesystem.c (_initialize_filesystem): Likewise.
+	* frame.c (_initialize_frame): Likewise.
+	* gnu-nat.c (add_task_commands): Likewise.
+	* infcall.c (_initialize_infcall): Likewise.
+	* infcmd.c (_initialize_infcmd): Likewise.
+	* interps.c (_initialize_interpreter): Likewise.
+	* language.c (_initialize_language): Likewise.
+	* linux-fork.c (_initialize_linux_fork): Likewise.
+	* maint-test-settings.c (_initialize_maint_test_settings): Likewise.
+	* maint.c (_initialize_maint_cmds): Likewise.
+	* memattr.c (_initialize_mem): Likewise.
+	* printcmd.c (_initialize_printcmd): Likewise.
+	* python/lib/gdb/function/strfns.py (_MemEq, _StrLen, _StrEq,
+	_RegEx): Likewise.
+	* ravenscar-thread.c (_initialize_ravenscar): Likewise.
+	* record-btrace.c (_initialize_record_btrace): Likewise.
+	* record-full.c (_initialize_record_full): Likewise.
+	* record.c (_initialize_record): Likewise.
+	* regcache-dump.c (_initialize_regcache_dump): Likewise.
+	* regcache.c (_initialize_regcache): Likewise.
+	* remote.c (add_packet_config_cmd, init_remote_threadtests,
+	_initialize_remote): Likewise.
+	* ser-tcp.c (_initialize_ser_tcp): Likewise.
+	* serial.c (_initialize_serial): Likewise.
+	* skip.c (_initialize_step_skip): Likewise.
+	* source.c (_initialize_source): Likewise.
+	* stack.c (_initialize_stack): Likewise.
+	* symfile.c (_initialize_symfile): Likewise.
+	* symtab.c (_initialize_symtab): Likewise.
+	* target-descriptions.c (_initialize_target_descriptions): Likewise.
+	* top.c (init_main): Likewise.
+	* tracefile-tfile.c (tfile_target_info): Likewise.
+	* tracepoint.c (_initialize_tracepoint): Likewise.
+	* tui/tui-win.c (_initialize_tui_win): Likewise.
+	* utils.c (add_internal_problem_command): Likewise.
+	* valprint.c (value_print_option_defs): Likewise.
+
+2019-08-06  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR build/24886
+	* configure.ac: Drop enable-libmcheck support.
+	* configure, config.in: Rebuild.
+	* libmcheck.m4: Remove.
+	* acinclude.m4: Don't include it.
+	* Makefile.in: Don't distribute it.
+	* top.c (print_gdb_configuration): Don't mention it.
+
+2019-08-06  Tom Tromey  <tom@tromey.com>
+
+	* utils.c (set_output_style): Sometimes pass stream to
+	emit_style_escape.
+	* ui-out.h (class ui_out) <can_emit_style_escape>: Declare.
+	* record-btrace.c (btrace_insn_history): Update.
+	* mi/mi-out.h (class mi_ui_out) <can_emit_style_escape>: New
+	method.
+	* disasm.h (gdb_pretty_print_disassembler): Add uiout parameter.
+	Update initializers.
+	<m_uiout>: New field.
+	<m_di>: Move lower.
+	* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn):
+	Remove "uiout" parameter.
+	(dump_insns): Update.
+	* cli-out.h (class cli_ui_out) <can_emit_style_escape>: Declare.
+	* cli-out.c (cli_ui_out::can_emit_style_escape): New method.
+
+2019-08-06  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (symbol_cache_lookup): Change int to enum block_enum.
+	(error_in_psymtab_expansion): Likewise.
+	(lookup_symbol_via_quick_fns): Likewise.
+	(basic_lookup_transparent_type_quick): Likewise.
+	(basic_lookup_transparent_type_1): Likewise.
+
+2019-08-06  Tom Tromey  <tromey@adacore.com>
+
+	* source.c (last_source_error): Now bool.
+	(print_source_lines_base): Make "noprint" bool.  Only open
+	source file when last_source_visited changes.
+
+2019-08-06  Tom Tromey  <tromey@adacore.com>
+
+	* annotate.c (annotate_source_line): Use g_source_cache.
+	* source-cache.c (source_cache::get_plain_source_lines): Change
+	parameters.  Populate m_offset_cache.
+	(source_cache::ensure): New method.
+	(source_cache::get_line_charpos): New method.
+	(extract_lines): Move lower.  Change parameters.
+	(source_cache::get_source_lines): Move lower.
+	* source-cache.h (class source_cache): Update comment.
+	<get_line_charpos>: New method.
+	<get_source_lines>: Update comment.
+	<clear>: Clear m_offset_cache.
+	<get_plain_source_lines>: Change parameters.
+	<ensure>: New method
+	<m_offset_cache>: New member.
+	* source.c (forget_cached_source_info_for_objfile): Update.
+	(info_source_command): Use g_source_cache.
+	(find_source_lines, open_source_file_with_line_charpos): Remove.
+	(print_source_lines_base, search_command_helper): Use g_source_cache.
+	* source.h (open_source_file_with_line_charpos): Don't declare.
+	* symtab.h (struct symtab) <nlines, line_charpos>: Remove.
+	* tui/tui-source.c (tui_source_window::do_scroll_vertical):
+	Use g_source_cache.
+
+2019-08-06  Tom Tromey  <tromey@adacore.com>
+
+	* source-cache.c (source_cache::get_plain_source_lines):
+	Remove "first_line" and "last_line" parameters.
+	(source_cache::get_source_lines): Cache plain text.
+	* source-cache.h (class source_cache)
+	<get_plain_source_lines>: Update.
+
+2019-08-06  Tom Tromey  <tromey@adacore.com>
+
+	* source-cache.c (extract_lines): No longer a method.
+	Changed type of parameter.  Include final newline.
+	(selftests::extract_lines_test): New function.
+	(_initialize_source_cache): Likewise.
+	* source-cache.h (class source_cache)
+	<extract_lines>: Don't declare.
+
+2019-08-06  Tom Tromey  <tromey@adacore.com>
+
+	* breakpoint.c (init_breakpoint_sal): Update.
+	(breakpoint): Update.
+	* breakpoint.h (struct breakpoint) <filter>: Now a
+	unique_xmalloc_ptr.
+
+2019-08-05  Christian Biesinger  <cbiesinger@google.com>
+
+	* NEWS: Mention dictionary access on blocks.
+	* python/py-block.c (blpy_getitem): New function.
+	(block_object_as_mapping): New struct.
+	(block_object_type): Use new struct for tp_as_mapping field.
+
+2019-08-05  Christian Biesinger  <cbiesinger@google.com>
+
+	* objfiles.h (objfile): Add a comment describing partial symbols.
+
+2019-08-05  Tom Tromey  <tromey@adacore.com>
+
+	* compile/compile.c (_initialize_compile): Use _(), not N_().
+	* thread.c (_initialize_thread): Use _(), not N_().
+	* stack.c (_initialize_stack): Use _(), not N_().
+	* printcmd.c (_initialize_printcmd): Use _(), not N_().
+
+2019-08-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2read.c (struct dw2_symtab_iterator):
+	<want_specific_block>: Remove.
+	<block_index>: Change type to gdb::optional.
+	(dw2_symtab_iter_init): Remove WANT_SPECIFIC_BLOCK parameter,
+	change type of BLOCK_INDEX parameter to gdb::optional.
+	(dw2_symtab_iter_next): Re-write in function of gdb::optional.
+	(dw2_lookup_symbol): Don't pass argument for
+	WANT_SPECIFIC_BLOCK.
+	(dw2_expand_symtabs_for_function): Don't pass argument for
+	WANT_SPECIFIC_BLOCK, pass empty optional for BLOCK_INDEX.
+	(class dw2_debug_names_iterator)
+	<dw2_debug_names_iterator>: Remove WANT_SPECIFIC_BLOCK
+	parameter, change BLOCK_INDEX type to gdb::optional.
+	<m_want_specific_block>: Remove.
+	<m_block_index>: Change type to gdb::optional.
+	(dw2_debug_names_iterator::next): Change type of IS_STATIC to
+	gdb::optional.  Re-write in function of gdb::optional.
+	(dw2_debug_names_lookup_symbol): Don't pass argument for
+	WANT_SPECIFIC_BLOCK.
+	(dw2_debug_names_expand_symtabs_for_function): Don't pass
+	argument for WANT_SPECIFIC_BLOCK, pass empty optional for
+	BLOCK_INDEX.
+
+2019-08-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+        * NEWS: Mention changes to "info sources" command.
+
+2019-08-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* symtab.c (filename_partial_match_opts): New struct type.
+	(struct output_source_filename_data): New members
+	regexp, c_regexp, partial_match.
+	(output_source_filename): Use new members to decide to print file.
+	(info_sources_option_defs): New variable.
+	(make_info_sources_options_def_group, print_info_sources_header,
+	info_sources_command_completer):
+	New functions.
+	(info_sources_command): Read new optional arguments.
+	(_initialize_symtab): Update info sources help.
+
+2019-08-02  Alexandre Oliva <oliva@adacore.com>
+
+	* ada-lang.c (exception_support_info_v0): Renamed from...
+	(default_exception_support_info): ... this.  Create new
+	definition for v1.
+	(ada_has_this_exception_support): Look up catch_handlers_sym.
+	(ada_exception_support_info_sniffer): Try v0 after default.
+
+2019-08-01  Tom Tromey  <tromey@adacore.com>
+
+	* ia64-libunwind-tdep.h (struct libunwind_descr): Include
+	gdbarch.h.
+
+2019-08-01  Christian Biesinger  <cbiesinger@google.com>
+
+	* s12z-tdep.c: Fix include path for s12z-opc.h.
+
+2019-08-01  Alan Hayward  <alan.hayward@arm.com>
+
+	* NEWS: Require GNU make 3.82.
+
+2019-07-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.h (tui_copy_win, tui_box_win): Don't
+	declare.
+
+2019-07-30  Tom Tromey  <tromey@adacore.com>
+
+	* block.c (contained_in): Remove BLOCK_FUNCTION check.
+
+2019-07-30  Kevin Buettner  <kevinb@redhat.com>
+
+	* printcmd.c (print_address_symbolic): Print negative offsets.
+	(build_address_symbolic): Force signed arithmetic when computing
+	offset.
+
+2019-07-30  Christian Biesinger  <cbiesinger@google.com>
+
+	PR/24474: Add a function to lookup static variables.
+	* NEWS: Mention this new function.
+	* python/py-symbol.c (gdbpy_lookup_static_symbol): New function.
+	* python/python-internal.h (gdbpy_lookup_static_symbol): New function.
+	* python/python.c (python_GdbMethods): Add new function.
+
+2019-07-29  Christian Biesinger  <cbiesinger@google.com>
+
+	* NEWS: Mention new functions Objfile.lookup_{global,static}_symbol.
+	* python/py-objfile.c (objfpy_lookup_global_symbol): New function.
+	(objfpy_lookup_static_symbol): New function.
+	(objfile_object_methods): Add new functions.
+
+2019-07-29  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Mention 'set|show print frame-info'.  Mention new
+	'presence' value for 'frame-arguments'.  Mention new '-frame-info'
+	backtrace argument.  Mention that python frame filtering code
+	is now consistent with what 'backtrace' command prints.
+
+2019-07-29  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* frame.h (enum print_what): New value 'SHORT_LOCATION', update
+	comments.
+	(print_frame_info_auto, print_frame_info_source_line,
+	print_frame_info_location, print_frame_info_source_and_location,
+	print_frame_info_location_and_address, print_frame_info_short_location):
+	New declarations.
+	(struct frame_print_options): New member print_frame_info.
+	* extension.h (enum ext_lang_frame_args): New value CLI_PRESENCE.
+	* stack.h (get_user_print_what_frame_info): New declaration.
+	(frame_show_address): New declaration.
+	* stack.c (print_frame_arguments_choices): New value 'presence'.
+	(print_frame_info_auto, print_frame_info_source_line,
+	print_frame_info_location, print_frame_info_source_and_location,
+	print_frame_info_location_and_address, print_frame_info_short_location,
+	print_frame_info_choices, print_frame_info_print_what): New definitions.
+	(print_frame_args): Only print dots for args if print frame-arguments
+	is 'presence'.
+	(frame_print_option_defs): New element for "frame-info".
+	(get_user_print_what_frame_info): New function.
+	(frame_show_address): Make non static.  Move comment to stack.h.
+	(print_frame_info_to_print_what): New function.
+	(print_frame_info): Update comment.  Use fp_opts.print_frame_info
+	to decide what to print.
+	(backtrace_command_1): Handle the new print_frame_arguments_presence
+	value.
+	(_initialize_stack): Call add_setshow_enum_cmd for frame-info.
+	* python/py-framefilter.c (py_print_args): Handle CLI_PRESENCE.
+	(py_print_frame): In non-mi mode, use LOCATION as default for
+	print_what, similarly to frame information printed directly by
+	backtrace command. Handle frame-info user option in non MI mode.
+
+2019-07-27  Kevin Buettner  <kevinb@redhat.com>
+
+	* linux-thread-db.c (thread_db_target::thread_handle_to_thread_info):
+	Add case for debugging 32-bit target on 64-bit host.  Revise
+	comment.
+
+2019-07-27  Kevin Buettner  <kevinb@redhat.com>
+
+	* infrun.c (fill_in_stop_func): Use find_pc_partial_function
+	instead of find_function_entry_range_from_pc.
+
+2019-07-27  Kevin Buettner  <kevinb@redhat.com>
+
+	* stack.c (find_frame_funname): Remove code which preferred
+	minsym over symtab sym in "certain pathological cases".
+
+	* valprint.h (build_address_symbolic): Add "prefer_sym_over_minsym"
+	parameter.  Change type of "do_demangle" to bool.
+	* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn):
+	Pass suitable "prefer_sym_over_minsym" flag to
+	build_address_symbolic().  Don't output "+" for negative offsets.
+	* printcmd.c (print_address_symbolic): Update invocation of
+	build_address_symbolic to include a "prefer_sym_over_minsym"
+	flag.
+	(build_address_symbolic): Add "prefer_sym_over_minsym" parameter.
+	Restrict cases in which use of minimal symbol is preferred to that
+	of a found symbol.  Update comments.
+
+	* dwarf2-frame.c (dwarf2_frame_cache): Don't decode FDE instructions
+	for entry pc when entry pc is out of range for that FDE.
+
+2019-07-26  Brian Callahan  <bcallah@openbsd.org>
+
+	PR gdb/24839:
+	* obsd-nat.c (obsd_nat_target::pid_to_str): Fix typo in return
+	type.
+
+2019-07-25  Christian Biesinger  <cbiesinger@google.com>
+
+	* python/py-objfile.c (add_separate_debug_file): Fix comment about
+	this function's Python signature.
+
+
+2019-07-24  Christian Biesinger  <cbiesinger@google.com>
+
+	* compile/compile-object-load.c (compile_object_load): Pass GLOBAL_SCOPE.
+	* solib-spu.c (spu_lookup_lib_symbol): Pass GLOBAL_SCOPE.
+	* solib-svr4.c (elf_lookup_lib_symbol): Pass GLOBAL_SCOPE.
+	* symtab.c (lookup_global_symbol_from_objfile): Add a scope parameter.
+	* symtab.h (lookup_global_symbol_from_objfile): Likewise.
+
+
+2019-07-24  Yoshinori Sato  <ysato@users.sourceforge.jp>
+
+	* h8300-tdep.c (h8300_register_name_common): New.
+	h8300_register_name): Use h8300_register_name_common.
+	(h8300s_register_name): Likewise.
+	(h8300sx_register_name): Likewise.
+	(h8300h_register_nam): New.
+	(h8300_gdbarch_init): Use h8300h_register_name in h8300h machine.
+
+
+2019-07-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* arm-tdep.c (arm_skip_cmse_entry): New function.
+	(arm_is_sgstubs_section): New function.
+	(arm_skip_stub): Add call to arm_skip_cmse_entry function.
+
+2019-07-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_win_info::make_invisible_and_set_new_height):
+	Don't self-assign.
+
+2019-07-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* c-typeprint.c (c_print_typedef): Pass -1 instead of 0 to
+	type_print.
+
+2019-07-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* symtab.c (search_symbols): Adjust msymbol matching type arrays
+	so that GDB doesn't match any msymbols when searching in the
+	TYPES_DOMAIN.
+	(print_symbol_info): Print using typedef_print or type_print based
+	on the type of the symbol.  Add updated FIXME comment moved from...
+	(_initialize_symtab): ... move and update FIXME comment to above.
+
+2019-07-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention adding -q option to "info types".
+	* symtab.c (struct info_types_options): New struct.
+	(info_types_options_defs): New variable.
+	(make_info_types_options_def_group): New function.
+	(info_types_command): Use gdb::option framework to parse options.
+	(info_types_command_completer): New function.
+	(_initialize_symtab): Extend the help text on "info types" and
+	register command completer.
+
+2019-07-21  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (lookup_symbol_in_objfile_symtabs): Change int to block_enum.
+	(lookup_symbol_in_objfile): Change int to block_enum and add a
+	gdb_assert to make sure block_index is GLOBAL_BLOCK or STATIC_BLOCK.
+
+2019-07-20  Christian Biesinger  <cbiesinger@google.com>
+
+	* MAINTAINERS (Write After Approval): Add self.
+
+2019-07-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_push_dummy_code): Write a 4-byte nop
+	instruction to the dummy code region.
+
+2019-07-19  Tom Tromey  <tromey@adacore.com>
+
+	* contrib/ari/gdb_ari.sh: Mention C++11, not ISO C 90.
+	(ARGSUSED, PARAMS, __func__): Remove rules.
+
+2019-07-19  Alan Hayward  <alan.hayward@arm.com>
+
+	* arm-tdep.c (_initialize_arm_tdep): Remove xml tests.
+	* features/arm/arm-with-iwmmxt.c: Remove.
+	* features/arm/arm-with-iwmmxt.xml: Remove.
+	* features/arm/arm-with-m-fpa-layout.c: Remove.
+	* features/arm/arm-with-m-fpa-layout.xml: Remove.
+	* features/arm/arm-with-m-vfp-d16.c: Remove.
+	* features/arm/arm-with-m-vfp-d16.xml: Remove.
+	* features/arm/arm-with-m.c: Remove.
+	* features/arm/arm-with-m.xml: Remove.
+	* features/arm/arm-with-neon.c: Remove.
+	* features/arm/arm-with-neon.xml: Remove.
+	* features/arm/arm-with-vfpv2.c: Remove.
+	* features/arm/arm-with-vfpv2.xml: Remove.
+	* features/arm/arm-with-vfpv3.c: Remove.
+	* features/arm/arm-with-vfpv3.xml: Remove.
+
+2019-07-19  Alan Hayward  <alan.hayward@arm.com>
+
+	* arm-tdep.c (_initialize_arm_tdep): Add xml regression tests.
+
+2019-07-19  Alan Hayward  <alan.hayward@arm.com>
+
+	* arch/aarch32.c (aarch32_create_target_description): Create
+	target descriptions using features.
+	* arch/arm.c (arm_create_target_description)
+	(arm_create_mprofile_target_description): Likewise.
+	* arm-tdep.c (_initialize_arm_tdep): Remove tdesc init calls.
+
+2019-07-19  Alan Hayward  <alan.hayward@arm.com>
+
+	* Makefile.in: Add new files.
+	* aarch32-tdep.c: New file.
+	* aarch32-tdep.h: New file.
+	* aarch64-linux-nat.c (aarch64_linux_nat_target::read_description):
+	Call aarch32_read_description.
+	* arch/aarch32.c: New file.
+	* arch/aarch32.h: New file.
+	* arch/arm.c (arm_create_target_description)
+	(arm_create_mprofile_target_description): New function.
+	* arch/arm.h (arm_fp_type, arm_m_profile_type): New enum.
+	(arm_create_target_description)
+	(arm_create_mprofile_target_description): New declaration.
+	* arm-fbsd-tdep.c (arm_fbsd_read_description_auxv): Call
+	read_description functions.
+	* arm-linux-nat.c (arm_linux_nat_target::read_description):
+	Likewise.
+	* arm-linux-tdep.c (arm_linux_core_read_description): Likewise.
+	* arm-tdep.c (tdesc_arm_list): New variable.
+	(arm_register_g_packet_guesses): Call create description functions.
+	(arm_read_description) (arm_read_mprofile_description): New
+	function.
+	* arm-tdep.h (arm_read_description)
+	(arm_read_mprofile_description): Add declaration.
+	* configure.tgt: Add new files.
+
+2019-07-18  Guillaume LABARTHE  <guillaume.labarthe@gmail.com>
+
+	* top.c (new_ui_command): Open specified terminal just once.
+
+2019-07-18  Tom Tromey  <tromey@adacore.com>
+
+	* symtab.c (main_name): Constify return type.
+	* symfile.c (set_initial_language): Update.
+	* symtab.h (main_name): Constify return type.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_source_window)
+	(tui_update_source_window_as_is)
+	(tui_update_source_windows_with_line): Remove return.
+	* tui/tui-disasm.c (tui_show_disassem)
+	(tui_show_disassem_and_update_source): Remove return.
+	* tui/tui.c (tui_reset): Remove return.
+	* tui/tui-wingeneral.c
+	(tui_check_and_display_highlight_if_needed): Remove return.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (parse_scrolling_args): Throw separate errors.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (struct tui_exec_info_window)
+	(struct tui_source_window_base): Move from tui-data.h.
+	* tui/tui-winsource.c: Move many method definitions from
+	elsewhere.  Remove "structuring" comments.
+	* tui/tui-wingeneral.c (tui_source_window_base::make_visible)
+	(tui_source_window_base::refresh_window): Move to
+	tui-winsource.c.
+	* tui/tui-win.c (tui_source_window_base::refresh_all)
+	(tui_source_window_base::update_tab_width)
+	(tui_source_window_base::set_new_height)
+	(tui_source_window_base::do_make_visible_with_new_height): Move to
+	tui-winsource.c.
+	* tui/tui-source.h: Update.
+	* tui/tui-source.c (tui_source_window_base::reset): Move to
+	tui-winsource.c.
+	* tui/tui-disasm.h: Update.
+	* tui/tui-data.h (struct tui_exec_info_window): Move to
+	tui-winsource.h.
+	(struct tui_source_window_base): Likewise.
+	* tui/tui-data.c (tui_source_window_base::clear_detail)
+	(tui_source_window_base, ~tui_source_window_base): Move to
+	tui-winsource.c.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_resize_all)
+	(tui_source_window_base::update_tab_width)
+	(tui_adjust_win_heights): Update.
+	(tui_win_info::make_invisible_and_set_new_height): Rename from
+	make_invisible_and_set_new_height.
+	* tui/tui-data.h (struct tui_win_info)
+	<make_invisible_and_set_new_height>: New method.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c: Update.
+	* tui/tui-source.h (struct tui_source_window): Move from
+	tui-data.h.
+	* tui/tui-layout.c: Update.
+	* tui/tui-disasm.c: Update.
+	* tui/tui-data.h (struct tui_source_window): Move to
+	tui-source.h.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-disasm.h (struct tui_disasm_window): Move from
+	tui-data.h.
+	* tui/tui-data.h (struct tui_disasm_window): Move to
+	tui-disasm.h.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (struct tui_data_item_window): Move from
+	tui-data.h.
+	* tui/tui-regs.c (tui_data_item_window): Move from tui-data.c.
+	* tui/tui-data.h (struct tui_data_item_window): Move to
+	tui-regs.h.
+	* tui/tui-data.c (~tui_data_item_window): Move to tui-regs.c.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c: Update.
+	* tui/tui-win.c (tui_cmd_window::do_make_visible_with_new_height)
+	(tui_cmd_window::max_height): Move to tui-command.c.
+	* tui/tui-layout.c: Update.
+	* tui/tui-data.h (struct tui_cmd_window): Move to tui-command.h.
+	* tui/tui-data.c (tui_cmd_window::clear_detail): Move to
+	tui-command.c.
+	* tui/tui-command.h (struct tui_cmd_window): Move from
+	tui-data.h.
+	* tui/tui-command.c: Remove "structuring" comments.
+	(tui_cmd_window::clear_detail)
+	(tui_cmd_window::do_make_visible_with_new_height)
+	(tui_cmd_window::max_height): Move from elsewhere.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-io.c (tui_dispatch_ctrl_char): Move from tui-command.c.
+	Now static.
+	* tui/tui-command.h (tui_dispatch_ctrl_char): Don't declare.
+	* tui/tui-command.c (tui_dispatch_ctrl_char): Move to tui-io.c.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c: Update.
+	* tui/tui-wingeneral.c (tui_data_window::refresh_window): Move to
+	tui-regs.c.
+	* tui/tui-windata.h: Remove file.
+	* tui/tui-windata.c: Remove file.
+	* tui/tui-win.c (tui_data_window::set_new_height)
+	(tui_data_window::do_make_visible_with_new_height): Move to
+	tui-regs.c.
+	* tui/tui-regs.h (struct tui_data_window): Move from tui-data.h.
+	* tui/tui-regs.c: Remove "structuring" comments.
+	(tui_data_window::first_data_item_displayed)
+	(tui_data_window::delete_data_content_windows)
+	(tui_data_window::erase_data_content)
+	(tui_data_window::display_all_data)
+	(tui_data_window::refresh_all)
+	(tui_data_window::do_scroll_vertical)
+	(tui_data_window::clear_detail, tui_data_window::set_new_height)
+	(tui_data_window::do_make_visible_with_new_height)
+	(tui_data_window::refresh_window): Move from elsewhere.
+	(_initialize_tui_regs): Move to end of file.
+	* tui/tui-layout.c: Update.
+	* tui/tui-hooks.c: Update.
+	* tui/tui-data.h (struct tui_data_window): Move to tui-regs.h.
+	* tui/tui-data.c (tui_data_window::clear_detail): Move to
+	tui-regs.c.
+	* Makefile.in (SUBDIR_TUI_SRCS): Remove tui-windata.c.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-io.c (tui_puts_internal): Call wrefresh if newline is
+	seen.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_source_window_base::set_new_height)
+	(tui_source_window_base::do_make_visible_with_new_height): Use
+	m_has_locator field directly.
+	* tui/tui-data.h (struct tui_win_info) <has_locator>: Remove
+	method.
+	(struct tui_source_window_base) <has_locator>: Likewise.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.h (tui_make_visible, tui_make_invisible):
+	Don't declare.
+	* tui/tui-wingeneral.c (tui_make_visible, tui_make_invisible):
+	Remove.
+	* tui/tui-win.c (tui_source_window_base::set_new_height)
+	(tui_source_window_base::set_new_height)
+	(make_invisible_and_set_new_height)
+	(tui_source_window_base::do_make_visible_with_new_height)
+	(tui_source_window_base::do_make_visible_with_new_height):
+	Update.
+	* tui/tui-layout.c (show_source_disasm_command, show_data)
+	(show_source_or_disasm_and_command): Update.
+	* tui/tui-layout.c (show_layout): Update.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (make_data_window): Remove.
+	(show_data): Unify creation and re-initialization cases.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (make_source_window, make_disasm_window):
+	Remove.
+	(show_data): Unify creation and re-initialization cases.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (make_command_window): Remove.
+	(show_source_disasm_command, show_source_or_disasm_and_command):
+	Unify creation and re-initialization cases.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_source_or_disasm_and_command): Unify
+	creation and re-initialization cases.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_get_register): Return void.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_gen_win_info::make_visible):
+	Simplify.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_source_disasm_command): Simplify window
+	resetting.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.h (tui_set_layout_by_name): Don't declare.
+	* tui/tui-regs.c (tui_reg_layout): New function.
+	(tui_show_registers, tui_reg_command): Use it.
+	* tui/tui-layout.c (LAYOUT_USAGE): Remove.
+	(tui_layout_command): Rename from tui_set_layout_by_name.  Change
+	parameters.
+	(tui_layout_command): Remove.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.h (tui/tui-layout): Return void.
+	* tui/tui-layout.c (tui_set_layout): Return void.  Add assert.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_source_disasm_command, show_data):
+	Update.
+	(reset_locator): Remove.
+	(show_source_or_disasm_and_command): Update.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.c (tui_source_window_base::reset): Remove
+	win_type parameter.
+	* tui/tui-layout.c (make_command_window, make_source_window)
+	(make_disasm_window, make_data_window)
+	(show_source_disasm_command, show_data, tui_gen_win_info::reset)
+	(reset_locator, show_source_or_disasm_and_command): Update.
+	* tui/tui-data.h (struct tui_gen_win_info) <reset>: Remove
+	win_type parameter.
+	(struct tui_source_window_base) <reset>: Likewise.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_source_disasm_command): Use
+	reset_locator.
+	(reset_locator): New function.
+	(init_and_make_win): Remove.
+	(show_source_or_disasm_and_command): Use reset_locator.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_set_exec_info_content): Remove
+	condition.
+	* tui/tui-wingeneral.c (tui_source_window_base::make_visible):
+	Remove condition.
+	* tui/tui-source.c (tui_source_window_base::reset): New method.
+	* tui/tui-layout.c (make_command_window): Don't call
+	init_and_make_win.
+	(make_source_window, make_disasm_window): Don't call
+	make_source_or_disasm_window.
+	(make_data_window): Don't call init_and_make_win.  Change calling
+	convention.
+	(show_source_disasm_command, show_data): Simplify.
+	(make_source_or_disasm_window): Remove.
+	(show_source_or_disasm_and_command): Simplify.
+	* tui/tui-data.h (struct tui_gen_win_info) <reset>: Now virtual.
+	(struct tui_source_window_base) <reset>: Likewise.
+	<execution_info>: Remove initializer.
+	* tui/tui-data.c (tui_source_window_base): Initialize
+	execution_info.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (tui_set_layout): Remove regs_populate
+	variable.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_rl_other_window): Update.
+	* tui/tui-wingeneral.c (tui_data_window::refresh_window): Call
+	superclass method first.  Always iterate over regs_content.
+	(tui_unhighlight_win, tui_highlight_win): Use refresh_window
+	method.
+	* tui/tui-win.c (tui_set_focus_command): Update.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_set_focus_command): Rename from
+	tui_set_focus.  Call tui_enable.
+	(tui_set_focus_command): Remove.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_show_exec_info_content): Don't call
+	refresh_window.
+	* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Call
+	touchwin.
+	(tui_data_window::refresh_window): Call refresh_window on data
+	items.  Always call superclass refresh_window.
+	(tui_win_info::refresh): Remove.
+	(tui_source_window_base::refresh_window): Update.
+	(tui_refresh_all): Update.
+	* tui/tui-layout.c (show_source_disasm_command): Remove call to
+	refresh_window.
+	(show_source_or_disasm_and_command): Likewise.
+	* tui/tui-data.h (struct tui_win_info) <refresh>: Remove.
+	(struct tui_source_window_base) <refresh>: Likewise.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_clear_source_content)
+	(tui_show_source_content): Update.
+	* tui/tui-source.c (tui_source_window::showing_source_p): Check
+	whether content is empty.
+	* tui/tui-data.h (struct tui_source_window_base) <content_in_use>:
+	Remove.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_erase_source_content): Clear the
+	window's contents.
+	* tui/tui-source.h (tui_set_source_content_nil): Don't declare.
+	* tui/tui-source.c (tui_set_source_content_nil): Remove.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (UNDEFINED_ITEM): Remove define.
+	(struct tui_data_item_window): Update.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (MAX_CONTENT_COUNT, TUI_NULL_STR)
+	(DEFAULT_HISTORY_COUNT, WITH_LOCATOR, NO_LOCATOR): Remove
+	defines.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_erase_source_content)
+	(tui_clear_source_content): Remove "display_prompt" parameter.
+	* tui/tui-winsource.c (tui_update_source_window_as_is)
+	(tui_update_source_windows_with_addr): Update.
+	(tui_clear_source_content): Remove "display_prompt" parameter.
+	(tui_erase_source_content): Likewise.  Simplify.
+	(tui_show_source_content): Update.
+	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Update.
+	* tui/tui-stack.c (tui_show_frame_info): Update.
+	* tui/tui-data.h (EMPTY_SOURCE_PROMPT, NO_EMPTY_SOURCE_PROMPT):
+	Remove defines.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_source_window_as_is): Update.
+	* tui/tui-disasm.h (tui_set_disassem_content): Add win_info
+	parameter.
+	* tui/tui-disasm.c (tui_set_disassem_content): Add win_info
+	parameter.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_clear_source_content)
+	(tui_show_source_content, tui_show_exec_info_content)
+	(tui_clear_exec_info_content): Update.
+	* tui/tui-stack.c (tui_show_locator_content): Update.
+	(tui_show_frame_info): Update.
+	* tui/tui-source.h (tui_source_window): Don't declare.
+	* tui/tui-source.c (tui_source_window::showing_source_p): Rename
+	from tui_source_is_displayed.
+	* tui/tui-data.h (struct tui_gen_win_info) <content_in_use>:
+	Remove field.
+	(struct tui_source_window_base) <content_in_use>: New field.  Now
+	bool.
+	(struct tui_source_window) <showing_source_p>: New method.
+	(TUI_SRC_WIN): Change cast.
+	* tui/tui-data.c (tui_initialize_static_data): Update.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_breakpoint_info): Use
+	location_matches_p.
+	* tui/tui-source.c (tui_source_window::location_matches_p): New
+	method.
+	* tui/tui-disasm.c (tui_disasm_window::location_matches_p): New
+	method.
+	* tui/tui-data.h (struct tui_source_window_base)
+	<location_matches_p>: New method.
+	(struct tui_source_window, struct tui_disasm_window)
+	<location_matches_p>: Likewise.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_set_win_height_command): Rename from
+	tui_set_win_height.
+	(tui_set_win_height_command): Remove.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.c (tui_source_window): New constructor.  Add
+	observer.
+	(~tui_source_window): New destructor.
+	(tui_source_window::style_changed): New method.
+	* tui/tui-hooks.c (tui_redisplay_source): Remove.
+	(tui_attach_detach_observers): Update.
+	* tui/tui-data.h (struct tui_source_window): Make constructor not
+	inline.  Add destructor.
+	(struct tui_source_window) <style_changed>: New method.
+	<m_observable>: New member.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.c (tui_clear_source_windows_detail): Fix typo.
+	* tui/tui-win.c (tui_resize_all): Fix typo.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.h (tui_refresh_all): Update.
+	* tui/tui-wingeneral.c (make_all_visible): Use foreach.
+	(tui_refresh_all): Remove "list" parameter.  Use foreach.
+	* tui/tui-win.c (window_name_completer): Use foreach.
+	(tui_refresh_all_win, tui_rehighlight_all, tui_all_windows_info)
+	(update_tab_width): Likewise.
+	* tui/tui-layout.c (show_layout): Update.
+	* tui/tui-data.h (class tui_window_iterator): New.
+	(struct all_tui_windows): New.
+	* tui/tui-data.c (tui_partial_win_by_name): Use foreach.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_reg_next, tui_reg_prev): Add "current_group"
+	parameter.  Don't reference globals.
+	(tui_reg_command): Update.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_show_registers): Simplify.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_show_registers): Update.
+	(tui_show_register_group): Add win_info parameter.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::display_reg_element_at_line):
+	Rename from tui_display_reg_element_at_line.
+	(tui_data_window::display_registers_from_line): Update.
+	* tui/tui-data.h (struct tui_data_window)
+	<display_reg_element_at_line>: New method.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (tui_display_registers_from)
+	(tui_display_registers_from_line): Don't declare.
+	* tui/tui-windata.c (tui_data_window::display_all_data)
+	(tui_data_window::refresh_all)
+	(tui_data_window::do_scroll_vertical): Update.
+	* tui/tui-regs.c (tui_data_window::display_registers_from): Rename
+	from tui_display_registers_from.
+	(tui_display_reg_element_at_line): Update.
+	(tui_data_window::display_registers_from_line): Rename from
+	tui_display_registers_from_line.
+	* tui/tui-data.h (struct tui_data_window) <display_registers_from,
+	display_registers_from_line>: New methods.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-windata.h (tui_erase_data_content): Don't declare.
+	* tui/tui-windata.c (tui_data_window::erase_data_content): Rename
+	from tui_erase_data_content.
+	(tui_data_window::display_all_data)
+	(tui_data_window::refresh_all)
+	(tui_data_window::do_scroll_vertical): Update.
+	* tui/tui-regs.c (tui_show_registers): Update.
+	* tui/tui-data.h (struct tui_data_window) <erase_data_content>:
+	New method.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-windata.h (tui_delete_data_content_windows): Don't
+	declare.
+	* tui/tui-windata.c
+	(tui_data_window::delete_data_content_windows): Rename from
+	tui_delete_data_content_windows.
+	(tui_data_window::display_all_data)
+	(tui_data_window::do_scroll_vertical): Update.
+	* tui/tui-data.h (struct tui_data_window)
+	<delete_data_content_windows>: New method.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-windata.h (tui_refresh_data_win): Don't declare.
+	* tui/tui-regs.h (tui_first_reg_element_inline): Don't declare.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-windata.h (tui_display_all_data): Don't declare.
+	* tui/tui-windata.c (tui_data_window::display_all_data): Rename
+	from tui_display_all_data.
+	* tui/tui-win.c
+	(tui_data_window::do_make_visible_with_new_height): Update.
+	* tui/tui-regs.c (tui_show_registers): Update.
+	* tui/tui-layout.c (tui_set_layout): Update.
+	* tui/tui-data.h (struct tui_data_window) <display_all_data>: New
+	method.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-windata.h (tui_display_data_from): Don't declare.
+	* tui/tui-windata.c (tui_display_data_from): Remove.
+	(tui_data_window::refresh_all): Update.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-windata.h (tui_display_data_from_line): Don't declare.
+	* tui/tui-windata.c (tui_display_data_from_line): Remove.
+	(tui_display_data_from, tui_data_window::do_scroll_vertical): Call
+	tui_display_registers_from_line.
+	* tui/tui-regs.h (tui_display_registers_from_line): Update.
+	* tui/tui-regs.c (tui_display_registers_from_line): Remove
+	"force_display" parameter.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (tui_first_reg_element_no_inline): Don't
+	declare.
+	* tui/tui-regs.c (tui_data_window::first_reg_element_no_inline):
+	Rename from tui_first_reg_element_no_inline.
+	(tui_display_reg_element_at_line)
+	(tui_display_registers_from_line): Update.
+	* tui/tui-data.h (struct tui_data_window)
+	<first_reg_element_no_inline>: New method.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-windata.c (tui_display_data_from)
+	(tui_data_window::do_scroll_vertical): Update.
+	* tui/tui-regs.h (tui_line_from_reg_element_no): Don't declare.
+	* tui/tui-regs.c (tui_data_window::line_from_reg_element_no):
+	Rename from tui_line_from_reg_element_no.
+	(tui_display_registers_from_line): Update.
+	* tui/tui-data.h (struct tui_data_window)
+	<line_from_reg_element_no>: New method.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.h (tui_last_regs_line_no): Don't declare.
+	* tui/tui-regs.c (tui_data_window::last_regs_line_no): Rename from
+	tui_last_regs_line_no.
+	(tui_display_reg_element_at_line)
+	(tui_display_registers_from_line): Update.
+	* tui/tui-data.h (struct tui_data_window) <last_regs_line_no>: New
+	method.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	PR tui/24722:
+	* tui/tui-winsource.h (tui_update_all_breakpoint_info)
+	(tui_update_breakpoint_info): Add "being_deleted" parameter.
+	* tui/tui-winsource.c (tui_update_source_window_as_is): Update.
+	(tui_update_all_breakpoint_info): Add "being_deleted" parameter.
+	(tui_update_breakpoint_info): Likewise.
+	* tui/tui-hooks.c (tui_event_create_breakpoint)
+	(tui_event_delete_breakpoint, tui_event_modify_breakpoint):
+	Update.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.c (tui_show_frame_info): Consolidate "if"s.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_source_window_as_is)
+	(tui_update_source_windows_with_addr): Update.
+	* tui/tui-source.h (tui_set_source_content)
+	(tui_show_symtab_source): Add "win_info" parameter.
+	* tui/tui-source.c (tui_set_source_content): Add "win_info"
+	parameter.
+	(tui_show_symtab_source): Likewise.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c
+	(tui_check_and_display_highlight_if_needed): Check can_highlight.
+
+2019-07-17  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_win_info) <can_scroll>: New method.
+	(struct tui_cmd_window) <can_scroll>: New method.
+	* tui/tui-command.c (tui_dispatch_ctrl_char): Use can_scroll
+	method.
+
+2019-07-17  Tom Tromey  <tromey@adacore.com>
+
+	* ui-out.h (class ui_out) <field_signed, field_fmt_signed,
+	do_field_signed>: Rename.  Change type of "value".
+	* ui-out.c (ui_out::field_signed): Rename from field_int.
+	Change type of "value".
+	(ui_out::field_fmt_signed): Rename from field_fmt_int.  Change
+	type of "value".
+	* tui/tui-out.h (class tui_ui_out) <do_field_signed>: Rename from
+	do_field_int.  Change type of "value".
+	* tui/tui-out.c (tui_ui_out::do_field_signed): Rename from
+	do_field_int.  Change type of "value".
+	* tracepoint.c (trace_status_mi, tfind_1)
+	(print_one_static_tracepoint_marker): Update.
+	* thread.c (print_thread_info_1, print_selected_thread_frame):
+	Update.
+	* stack.c (print_frame, print_frame_info): Update.
+	* spu-tdep.c (info_spu_signal_command, info_spu_dma_cmdlist):
+	Update.
+	* source.c (print_source_lines_base): Update.
+	* skip.c (info_skip_command): Update.
+	* record-btrace.c (btrace_ui_out_decode_error)
+	(btrace_call_history_src_line): Update.
+	* python/py-framefilter.c (py_print_single_arg, py_print_frame):
+	Update.
+	* progspace.c (print_program_space): Update.
+	* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Update.
+	* mi/mi-out.h (class mi_ui_out) <do_field_signed>: Rename from
+	do_field_int.  Change type of "value".
+	* mi/mi-out.c (mi_ui_out::do_table_begin)
+	(mi_ui_out::do_table_header): Update.
+	(mi_ui_out::do_field_signed): Rename from do_field_int.  Change
+	type of "value".
+	* mi/mi-main.c (mi_cmd_thread_list_ids, print_one_inferior)
+	(mi_cmd_data_list_changed_registers, output_register)
+	(mi_cmd_data_read_memory, mi_load_progress)
+	(mi_cmd_trace_frame_collected): Update.
+	* mi/mi-interp.c (mi_on_normal_stop_1, mi_output_solib_attribs):
+	Update.
+	* mi/mi-cmd-var.c (print_varobj, mi_cmd_var_create)
+	(mi_cmd_var_delete, mi_cmd_var_info_num_children)
+	(mi_cmd_var_list_children, varobj_update_one): Update.
+	* mi/mi-cmd-stack.c (mi_cmd_stack_info_depth)
+	(mi_cmd_stack_list_args, list_arg_or_local): Update.
+	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file): Update.
+	* inferior.c (print_inferior): Update.
+	* gdb_bfd.c (print_one_bfd): Update.
+	* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn):
+	Update.
+	* darwin-nat-info.c (darwin_debug_regions_recurse): Update.
+	* cli-out.h (class cli_ui_out) <do_field_signed>: Rename from
+	do_field_int.  Change type of "value".
+	* cli-out.c (cli_ui_out::do_field_signed): Rename from
+	do_field_int.  Change type of "value".
+	* breakpoint.c (watchpoint_check, print_breakpoint_location)
+	(print_one_breakpoint_location, print_it_catch_fork)
+	(print_one_catch_fork, print_it_catch_vfork)
+	(print_one_catch_vfork, print_it_catch_solib)
+	(print_it_catch_exec, print_it_ranged_breakpoint)
+	(print_mention_watchpoint, print_mention_masked_watchpoint)
+	(bkpt_print_it, update_static_tracepoint): Update.
+	* break-catch-throw.c (print_it_exception_catchpoint): Update.
+	* break-catch-syscall.c (print_it_catch_syscall): Update.
+	* ada-tasks.c (print_ada_task_info): Update.
+	* ada-lang.c (print_it_exception, print_mention_exception):
+	Update.
+
+2019-07-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR breakpoints/24541
+	* gdbarch.c: Regenerate.
+	* gdbarch.h: Regenerate.
+	* gdbarch.sh: Adjust return type and parameter types for
+	'stap_adjust_register'.
+	(i386_stap_adjust_register): Adjust signature and return new
+	register name.
+	* stap-probe.c (stap_parse_register_operand): Adjust use of
+	'gdbarch_stap_adjust_register'.
+
+2019-07-17  Tom Tromey  <tromey@adacore.com>
+
+	* s390-linux-nat.c (s390_watch_area): Remove typedef.  Don't
+	declare VEC.
+	(struct s390_debug_reg_state) <watch_areas, break_areas>: Now
+	std::vector.
+	(struct s390_process_info): Add initializers.
+	(s390_add_process): Use new.
+	(s390_linux_nat_target::low_forget_process): Use delete.
+	(s390_linux_nat_target::low_new_fork)
+	(s390_linux_nat_target::stopped_by_watchpoint)
+	(s390_linux_nat_target::low_prepare_to_resume)
+	(s390_linux_nat_target::insert_watchpoint)
+	(s390_linux_nat_target::insert_hw_breakpoint)
+	(s390_linux_nat_target::remove_watchpoint)
+	(s390_linux_nat_target::remove_hw_breakpoint): Update.
+
+2019-07-16  John Baldwin  <jhb@FreeBSD.org>
+
+	* aarch64-fbsd-nat.c: Include regcache.h.
+	(getregs_supplies, getfpregs_supplies): Remove unused gdbarch
+	argument.
+	(aarch64_fbsd_nat_target::fetch_registers)
+	(aarch64_fbsd_nat_target::store_registers): Remove gdbarch
+	variable.
+	* arm-fbsd-nat.c, riscv-fbsd-nat.c: Likewise.
+
+2019-07-16  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-nat.c: Include gdbarch.h.
+
+2019-07-15  Tom Tromey  <tromey@adacore.com>
+
+	* mi/mi-out.c (mi_ui_out::do_field_int): Use plongest.
+
+2019-07-15  Tom Tromey  <tromey@adacore.com>
+
+	* mi/mi-out.h (class mi_ui_out) <do_field_unsigned>: Declare.
+	* mi/mi-out.c (mi_ui_out::do_field_unsigned): New method.
+	* cli-out.h (class cli_ui_out) <do_field_unsigned>: Declare.
+	* cli-out.c (cli_ui_out::do_field_int): New method.
+	* ui-out.c (ui_out::field_unsigned): New method.
+	* symfile.c (generic_load): Use field_unsigned.
+	(print_transfer_performance): Likewise.
+	* record-btrace.c (ui_out_field_uint): Remove.
+	(btrace_call_history_insn_range, btrace_call_history): Use
+	field_unsigned.
+	* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn): Use
+	field_unsigned.
+	* ui-out.h (class ui_out) <field_unsigned>: New method.
+	<do_field_unsigned>: Likewise.
+
+2019-07-15  Tom Tromey  <tromey@adacore.com>
+
+	* mi/mi-main.c (list_available_thread_groups): Use field_string.
+	* mi/mi-interp.c (mi_memory_changed): Use field_string.
+	* target.c (flash_erase_command): Use field_string.
+	* infrun.c (print_signal_received_reason): Use field_string.
+	* i386-tdep.c (i386_mpx_print_bounds): Use field_string.
+	* breakpoint.c (maybe_print_thread_hit_breakpoint): Use
+	field_string.
+	* ada-tasks.c (print_ada_task_info): Use field_string.
+
+2019-07-15  Tom Tromey  <tromey@adacore.com>
+
+	* target.c (flash_erase_command): Use field_core_addr.
+	* symfile.c (generic_load): Use field_core_addr.
+	* sparc64-linux-tdep.c (sparc64_linux_handle_segmentation_fault):
+	Use field_core_addr.
+	* i386-linux-tdep.c (i386_linux_handle_segmentation_fault): Use
+	field_core_addr.
+
+2019-07-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2loc.c (dwarf2_evaluate_property): Sign extend property
+	value if its desired type is smaller than a CORE_ADDR and signed.
+
+2019-07-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2loc.c (dwarf2_evaluate_property): Update to take account
+	of changes to field names, and use new is_reference field to
+	decide if a property is a reference or not.
+	* dwarf2loc.h (struct dwarf2_locexpr_baton): Add 'is_reference'
+	field.
+	(struct dwarf2_property_baton): Update header comment, rename
+	'referenced_type' to 'property_type' and update comments.
+	* dwarf2read.c (attr_to_dynamic_prop): Add extra parameter to hold
+	default property type, store in property baton, update to take
+	accound of renamed field.
+	(read_func_scope): Update call to attr_to_dynamic_prop.
+	(read_array_type): Likewise.
+	(dwarf2_per_cu_addr_sized_int_type): New function.
+	(read_subrange_index_type): Move type finding code to
+	dwarf2_per_cu_addr_sized_int_type.
+	(read_subrange_type): Update calls to attr_to_dynamic_prop.
+	(dwarf2_per_cu_addr_type): New function.
+	(set_die_type): Update calls to attr_to_dynamic_prop.
+
+2019-07-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (read_subrange_index_type): New function.
+	(read_subrange_type): Move code into new function and call it.
+	* gdbtypes.c (create_range_type): Add some asserts.
+
+2019-07-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2loc.c (dwarf2_evaluate_property): Change return type, and
+	update return statements.
+	* dwarf2loc.h (dwarf2_evaluate_property): Update return type on
+	declaration, and update comment to match.
+	* gdbtypes.c (resolve_dynamic_array): Update call to
+	dwarf2_evaluate_property to match new return type.
+
+2019-07-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* valarith.c (value_subscripted_rvalue): Change lowerbound
+	parameter type from int to LONGEST.
+	* value.h (value_subscripted_rvalue): Likewise in declaration.
+
+2019-07-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cli/cli-utils.c (info_print_command_completer): New function.
+	* cli/cli-utils.h: Add 'completer.h' include, and forward
+	declaration for 'struct cmd_list_element'.
+	(info_print_command_completer): Declare.
+	* stack.c (_initialize_stack): Add completer for 'info locals' and
+	'info args'.
+	* symtab.c (_initialize_symtab): Add completer for 'info
+	variables' and 'info functions'.
+	* NEWS: Mention completion for additional info commands.
+
+2019-07-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cli/cli-utils.c (extract_info_print_args): Delete.
+	(extract_arg_maybe_quoted): Delete.
+	(info_print_options_defs): New variable.
+	(make_info_print_options_def_group): New function.
+	(extract_info_print_options): Define new function.
+	* cli/cli-utils.h (extract_info_print_args): Delete.
+	(struct info_print_options): New structure.
+	(extract_info_print_options): Declare new function.
+	* stack.c (info_locals_command): Update to use new
+	extract_info_print_options, also add a header comment.
+	(info_args_command): Likewise.
+	* symtab.c (info_variables_command): Likewise.
+	(info_functions_command): Likewise.
+
+2019-07-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cli/cli-option.c (parse_option): Use extract_string_maybe_quoted
+	to extract string arguments.
+	* common/common-utils.c (extract_string_maybe_quoted): New function.
+	* common/common-utils.h (extract_string_maybe_quoted): Declare.
+
+2019-07-11  Tom Tromey  <tromey@adacore.com>
+
+	* main.c (get_init_files): Use GDBINIT, not gdbinit.
+	* auto-load.c (file_is_auto_load_safe): Use GDBINIT, not gdbinit.
+	* top.h (gdbinit): Don't declare.
+	* cli/cli-cmds.c (init_cli_cmds): Remove, merging contents
+	into...
+	(_initialize_cli_cmds): ...here.  Use GDBINIT, not gdbinit.
+	* top.c (gdb_init): Don't call init_cli_cmds.
+	(gdbinit): Remove.
+	* cli/cli-cmds.h (init_cli_cmds): Don't declare.
+
+2019-07-11  Tom Tromey  <tromey@adacore.com>
+
+	* python/py-inferior.c (add_thread_object): Don't use thread_obj
+	after it has been moved.
+
+2019-07-10  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* valops.c (value_must_coerce_to_target): Change return type to
+	bool.
+	* value.h (value_must_coerce_to_target): Likewise.
+
+2019-07-10  Simon Marchi  <simon.marchi@efficios.com>
+
+	* breakpoint.c (is_hardware_watchpoint): Remove
+	forward-declaration.
+	(is_masked_watchpoint): Change return type to bool.
+	(is_tracepoint): Likewise.
+	(is_breakpoint): Likewise.
+	(is_hardware_watchpoint): Likewise.
+	(is_watchpoint): Likewise.
+	(is_no_memory_software_watchpoint): Likewise.
+	(is_catchpoint): Likewise.
+	(breakpoint_1): Make FILTER parameter's return type bool.
+	is_masked_watchpoint): Change return type to bool.
+	(save_breakpoints): Make FILTER parameter's return type bool.
+	* breakpoint.h (is_breakpoint): Change return type to bool.
+	(is_watchpoint): Likewise.
+	(is_catchpoint): Likewise.
+	(is_tracepoint): Likewise.
+
+2019-07-10  Tom Tromey  <tom@tromey.com>
+
+	* defs.h: Don't include gdbarch.h.
+	* aarch64-ravenscar-thread.c, aarch64-tdep.c, alpha-bsd-tdep.h,
+	alpha-linux-tdep.c, alpha-mdebug-tdep.c, arch-utils.h, arm-tdep.h,
+	ax-general.c, btrace.c, buildsym-legacy.c, buildsym.h, c-lang.c,
+	cli/cli-decode.h, cli/cli-dump.c, cli/cli-script.h,
+	cli/cli-style.h, coff-pe-read.h, compile/compile-c-support.c,
+	compile/compile-cplus.h, compile/compile-loc2c.c, corefile.c,
+	cp-valprint.c, cris-linux-tdep.c, ctf.c, d-lang.c, d-namespace.c,
+	dcache.c, dicos-tdep.c, dictionary.c, disasm-selftests.c,
+	dummy-frame.c, dummy-frame.h, dwarf2-frame-tailcall.c,
+	dwarf2expr.c, expression.h, f-lang.c, frame-base.c,
+	frame-unwind.c, frv-linux-tdep.c, gdbarch-selftests.c, gdbtypes.h,
+	go-lang.c, hppa-nbsd-tdep.c, hppa-obsd-tdep.c, i386-dicos-tdep.c,
+	i386-tdep.h, ia64-vms-tdep.c, interps.h, language.c,
+	linux-record.c, location.h, m2-lang.c, m32r-linux-tdep.c,
+	mem-break.c, memattr.c, mn10300-linux-tdep.c, nios2-linux-tdep.c,
+	objfiles.h, opencl-lang.c, or1k-linux-tdep.c, p-lang.c,
+	parser-defs.h, ppc-tdep.h, probe.h, python/py-record-btrace.c,
+	record-btrace.c, record.h, regcache-dump.c, regcache.h,
+	riscv-fbsd-tdep.c, riscv-linux-tdep.c, rust-exp.y,
+	sh-linux-tdep.c, sh-nbsd-tdep.c, source-cache.c,
+	sparc-nbsd-tdep.c, sparc-obsd-tdep.c, sparc-ravenscar-thread.c,
+	sparc64-fbsd-tdep.c, std-regs.c, target-descriptions.h,
+	target-float.c, tic6x-linux-tdep.c, tilegx-linux-tdep.c, top.c,
+	tracefile.c, trad-frame.c, type-stack.h, ui-style.c, utils.c,
+	utils.h, valarith.c, valprint.c, varobj.c, x86-tdep.c,
+	xml-support.h, xtensa-linux-tdep.c, cli/cli-cmds.h: Update.
+	* s390-linux-nat.c, procfs.c, inf-ptrace.c: Likewise.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.h (is_ada_exception_catchpoint): Declare.
+	* breakpoint.c (init_ada_exception_breakpoint): Register as
+	bp_catchpoint.
+	(print_one_breakpoint_location, print_one_breakpoint): Use
+	is_ada_exception_catchpoint.
+	* ada-lang.c (class ada_catchpoint_location): Pass
+	bp_loc_software_breakpoint to bp_location constructor.
+	(is_ada_exception_catchpoint): New function.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* arm-tdep.c (arm_exidx_entry_s): Remove typedef.  Don't define
+	VEC.
+	(struct arm_exidx_entry): New method operator<.
+	(struct arm_exidx_data) <section_maps>: Change type.
+	(arm_exidx_data_free): Remove.
+	(arm_exidx_data_key): Change type.  Move lower.
+	(arm_exidx_new_objfile): Update.
+	(arm_compare_exidx_entries): Remove.
+	(arm_find_exidx_entry, _initialize_arm_tdep)
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* solib-spu.c (ocl_program_data_key): Change type.
+	(append_ocl_sos, ocl_enable_break, _initialize_spu_solib):
+	Update.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* solib-aix.c (lm_info_aix_p): Remove typedef.  Don't define VEC.
+	(struct solib_aix_inferior_data) <library_list>: Change type.
+	(solib_aix_inferior_data_handle): Change type.
+	(get_solib_aix_inferior_data): Update.
+	(solib_aix_free_library_list): Remove.
+	(library_list_start_library): Update.
+	(solib_aix_parse_libraries, solib_aix_get_library_list): Change
+	return type.
+	(solib_aix_get_library_list)
+	(solib_aix_solib_create_inferior_hook, solib_aix_current_sos)
+	(solib_aix_normal_stop_observer, _initialize_solib_aix): Update.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* solib-dsbt.c (struct dsbt_info): Add initializers.
+	(solib_dsbt_pspace_data): Change type.
+	(dsbt_pspace_data_cleanup): Remove.
+	(get_dsbt_info, _initialize_dsbt_solib): Update.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* spu-tdep.c (spu_overlay_data): Change type.
+	(spu_get_overlay_table, spu_overlay_new_objfile)
+	(_initialize_spu_tdep): Update.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* gdb-stabs.h (struct dbx_symfile_info): Add initializers and
+	destructor.
+	(dbx_objfile_data_key): Change type and declare later.
+	(DBX_SYMFILE_INFO): Rewrite.
+	* dbxread.c (dbx_objfile_data_key): Change type.
+	(dbx_symfile_init): Update.
+	(~dbx_symfile_info): Rename from dbx_free_symfile_info.  Update.
+	(coffstab_build_psymtabs, elfstab_build_psymtabs)
+	(stabsect_build_psymtabs, _initialize_dbxread): Update.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* jit.c (jit_program_space_key): Change type.  Move lower.
+	(get_jit_program_space_data): Update.
+	(jit_program_space_data_cleanup): Remove.
+	(jit_breakpoint_deleted, free_objfile_data, _initialize_jit):
+	Update.
+	(struct jit_program_space_data): Add initializers.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* solib-darwin.c (struct darwin_info): Add initializers.
+	(solib_darwin_pspace_data): Change type.
+	(darwin_pspace_data_cleanup): Remove.
+	(get_darwin_info, _initialize_darwin_solib): Update.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* remote-sim.c (struct sim_inferior_data): Add initializers,
+	constructor, and destructor.
+	(sim_inferior_data_key): Change type.  Move lower.
+	(check_for_duplicate_sim_descriptor): Update.
+	(get_sim_inferior_data): Use new.  Update.
+	(~sim_inferior_data_cleanup): Rename from
+	sim_inferior_data_cleanup.  Simplify.
+	(gdbsim_close_inferior, simulator_command)
+	(sim_command_completer, _initialize_remote_sim): Update.
+	(next_pid, INITIAL_PID): Move earlier.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* python/python-internal.h (create_thread_object): Return
+	gdbpy_ref.
+	* python/py-infthread.c (create_thread_object): Return gdbpy_ref.
+	* python/py-inferior.c (struct threadlist_entry): Add
+	constructor.
+	<thread_obj>: Now a gdbpy_ref.
+	(thread_to_thread_object): Update.
+	(add_thread_object): Use new.
+	(delete_thread_object): Use delete.
+	(infpy_threads): Update.
+	(py_free_inferior): Update.  Construct "inf_obj" after acquiring
+	GIL.
+
+2019-07-10  Tom Tromey  <tromey@adacore.com>
+
+	* valops.c (value_cast): Specialize error message for Ada.
+
+2019-07-10  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.c (breakpoint_1): Update doc and parameter names.
+
+2019-07-10  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.h (bpstat_explains_signal, bpstat_causes_stop,
+	bpstat_should_step): Return bool, adjust comments.
+	* breakpoint.c (bpstat_explains_signal, bpstat_causes_stop,
+	bpstat_should_step): Likewise.
+
+2019-07-10  Alan Hayward  <alan.hayward@arm.com>
+
+	* features/Makefile: Use feature target descriptions for Arm.
+	* features/arm/arm-core.c: Generate new file.
+	* features/arm/arm-fpa.c: Likewise.
+	* features/arm/arm-m-profile-with-fpa.xml: Likewise.
+	* features/arm/arm-m-profile.c: Likewise.
+	* features/arm/arm-vfpv2.c: Likewise.
+	* features/arm/arm-vfpv3.c: Likewise.
+	* features/arm/xscale-iwmmxt.c: Likewise.
+	* target-descriptions.c (maint_print_c_tdesc_cmd): Add Arm.
+
+2019-07-10  Alan Hayward  <alan.hayward@arm.com>
+
+	* arm-linux-nat.c (arm_linux_nat_target::read_description): Check
+	ptrace earlier.
+
+2019-07-10  Alan Hayward  <alan.hayward@arm.com>
+
+	* features/aarch64-pauth.c: Regenerate.
+
+2019-07-09  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.h (struct bpstat_what) <is_longjmp>: Change type to
+	bool.
+	(bpstat_what): Use false instead of 0.
+
+2019-07-09  Pedro Alves  <palves@redhat.com>
+
+	* break-catch-throw.c (is_exception_catchpoint): New.
+	* breakpoint.c (print_one_breakpoint_location): New parameter
+	'raw_loc'.  Handle it.  Use
+	is_watchpoint/is_catchpoint/is_exception_catchpoint instead of
+	looking at the breakpoint's type.
+	(print_one_breakpoint): If handling "maint info breakpoints", also
+	print locations of exception catchpoints.
+	* breakpoint.h (is_exception_catchpoint): Declare.
+
+2019-07-09  Pedro Alves  <palves@redhat.com>
+
+	* break-catch-throw.c (print_one_exception_catchpoint): Skip the
+	"addr" field.
+	(allocate_location_exception_catchpoint): New.
+	(handle_gnu_v3_exceptions): Don't reset 'type' to bp_breakpoint.
+	(initialize_throw_catchpoint_ops): Install
+	allocate_location_exception_catchpoint as allocate_location
+	method.
+	* breakpoint.c (bpstat_what) <bp_catch>: Set action to
+	BPSTAT_WHAT_SINGLE if not stopping and the location's type is not
+	bp_loc_other.
+	(breakpoint_address_is_meaningful): Delete.
+	(bl_address_is_meaningful): New.
+	(breakpoint_locations_match): Adjust comment.
+	(bp_location_from_bp_type): New, factored out of...
+	(bp_location::bp_location(breakpoint *)): ... this.
+	(bp_location::bp_location(breakpoint *, bp_loc_type)): New,
+	factored out of...
+	(bp_location::bp_location(breakpoint *)): ... this.  Reimplement.
+	(bp_loc_is_permanent): Use bl_address_is_meaningful instead of
+	breakpoint_address_is_meaningful.
+	(bp_locations_compare): Adjust comment.
+	(update_global_location_list): Use bl_address_is_meaningful
+	instead of breakpoint_address_is_meaningful.
+	* breakpoint.h (bp_location::bp_location(breakpoint *)): New
+	explicit.
+	(bp_location::bp_location(breakpoint *, bp_loc_type)): Declare.
+	* python/py-breakpoint.c (bppy_get_location): No longer check
+	whether location is null.
+
+2019-07-09  Pedro Alves  <palves@redhat.com>
+
+	PR c++/15468
+	* breakpoint.c (print_one_breakpoint_location): Remove
+	single-location assert.
+
+2019-07-09  Tom Tromey  <tom@tromey.com>
+
+	* contrib/ari/gdb_ari.sh: Change common to gdbsupport.
+	* configure: Rebuild.
+	* configure.ac: Change common to gdbsupport.
+	* gdbsupport: Rename from common.
+	* acinclude.m4: Change common to gdbsupport.
+	* Makefile.in (CONFIG_SRC_SUBDIR, COMMON_SFILES)
+	(HFILES_NO_SRCDIR, stamp-version, ALLDEPFILES): Change common to
+	gdbsupport.
+	* aarch64-tdep.c, ada-lang.c, ada-lang.h, agent.c, alloc.c,
+	amd64-darwin-tdep.c, amd64-dicos-tdep.c, amd64-fbsd-nat.c,
+	amd64-fbsd-tdep.c, amd64-linux-nat.c, amd64-linux-tdep.c,
+	amd64-nbsd-tdep.c, amd64-obsd-tdep.c, amd64-sol2-tdep.c,
+	amd64-tdep.c, amd64-windows-tdep.c, arch-utils.c,
+	arch/aarch64-insn.c, arch/aarch64.c, arch/aarch64.h, arch/amd64.c,
+	arch/amd64.h, arch/arm-get-next-pcs.c, arch/arm-linux.c,
+	arch/arm.c, arch/i386.c, arch/i386.h, arch/ppc-linux-common.c,
+	arch/riscv.c, arch/riscv.h, arch/tic6x.c, arm-tdep.c, auto-load.c,
+	auxv.c, ax-gdb.c, ax-general.c, ax.h, breakpoint.c, breakpoint.h,
+	btrace.c, btrace.h, build-id.c, build-id.h, c-lang.h, charset.c,
+	charset.h, cli/cli-cmds.c, cli/cli-cmds.h, cli/cli-decode.c,
+	cli/cli-dump.c, cli/cli-option.h, cli/cli-script.c,
+	coff-pe-read.c, command.h, compile/compile-c-support.c,
+	compile/compile-c.h, compile/compile-cplus-symbols.c,
+	compile/compile-cplus-types.c, compile/compile-cplus.h,
+	compile/compile-loc2c.c, compile/compile.c, completer.c,
+	completer.h, contrib/ari/gdb_ari.sh, corefile.c, corelow.c,
+	cp-support.c, cp-support.h, cp-valprint.c, csky-tdep.c, ctf.c,
+	darwin-nat.c, debug.c, defs.h, disasm-selftests.c, disasm.c,
+	disasm.h, dtrace-probe.c, dwarf-index-cache.c,
+	dwarf-index-cache.h, dwarf-index-write.c, dwarf2-frame.c,
+	dwarf2expr.c, dwarf2loc.c, dwarf2read.c, event-loop.c,
+	event-top.c, exceptions.c, exec.c, extension.h, fbsd-nat.c,
+	features/aarch64-core.c, features/aarch64-fpu.c,
+	features/aarch64-pauth.c, features/aarch64-sve.c,
+	features/i386/32bit-avx.c, features/i386/32bit-avx512.c,
+	features/i386/32bit-core.c, features/i386/32bit-linux.c,
+	features/i386/32bit-mpx.c, features/i386/32bit-pkeys.c,
+	features/i386/32bit-segments.c, features/i386/32bit-sse.c,
+	features/i386/64bit-avx.c, features/i386/64bit-avx512.c,
+	features/i386/64bit-core.c, features/i386/64bit-linux.c,
+	features/i386/64bit-mpx.c, features/i386/64bit-pkeys.c,
+	features/i386/64bit-segments.c, features/i386/64bit-sse.c,
+	features/i386/x32-core.c, features/riscv/32bit-cpu.c,
+	features/riscv/32bit-csr.c, features/riscv/32bit-fpu.c,
+	features/riscv/64bit-cpu.c, features/riscv/64bit-csr.c,
+	features/riscv/64bit-fpu.c, features/tic6x-c6xp.c,
+	features/tic6x-core.c, features/tic6x-gp.c, filename-seen-cache.h,
+	findcmd.c, findvar.c, fork-child.c, gcore.c, gdb_bfd.c, gdb_bfd.h,
+	gdb_proc_service.h, gdb_regex.c, gdb_select.h, gdb_usleep.c,
+	gdbarch-selftests.c, gdbthread.h, gdbtypes.h, gnu-nat.c,
+	go32-nat.c, guile/guile.c, guile/scm-ports.c,
+	guile/scm-safe-call.c, guile/scm-type.c, i386-fbsd-nat.c,
+	i386-fbsd-tdep.c, i386-go32-tdep.c, i386-linux-nat.c,
+	i386-linux-tdep.c, i386-tdep.c, i387-tdep.c,
+	ia64-libunwind-tdep.c, ia64-linux-nat.c, inf-child.c,
+	inf-ptrace.c, infcall.c, infcall.h, infcmd.c, inferior-iter.h,
+	inferior.c, inferior.h, inflow.c, inflow.h, infrun.c, infrun.h,
+	inline-frame.c, language.h, linespec.c, linux-fork.c, linux-nat.c,
+	linux-tdep.c, linux-thread-db.c, location.c, machoread.c,
+	macrotab.h, main.c, maint.c, maint.h, memattr.c, memrange.h,
+	mi/mi-cmd-break.h, mi/mi-cmd-env.c, mi/mi-cmd-stack.c,
+	mi/mi-cmd-var.c, mi/mi-interp.c, mi/mi-main.c, mi/mi-parse.h,
+	minsyms.c, mips-linux-tdep.c, namespace.h,
+	nat/aarch64-linux-hw-point.c, nat/aarch64-linux-hw-point.h,
+	nat/aarch64-linux.c, nat/aarch64-sve-linux-ptrace.c,
+	nat/amd64-linux-siginfo.c, nat/fork-inferior.c,
+	nat/linux-btrace.c, nat/linux-btrace.h, nat/linux-namespaces.c,
+	nat/linux-nat.h, nat/linux-osdata.c, nat/linux-personality.c,
+	nat/linux-procfs.c, nat/linux-ptrace.c, nat/linux-ptrace.h,
+	nat/linux-waitpid.c, nat/mips-linux-watch.c,
+	nat/mips-linux-watch.h, nat/ppc-linux.c, nat/x86-dregs.c,
+	nat/x86-dregs.h, nat/x86-linux-dregs.c, nat/x86-linux.c,
+	nto-procfs.c, nto-tdep.c, objfile-flags.h, objfiles.c, objfiles.h,
+	obsd-nat.c, observable.h, osdata.c, p-valprint.c, parse.c,
+	parser-defs.h, ppc-linux-nat.c, printcmd.c, probe.c, proc-api.c,
+	procfs.c, producer.c, progspace.h, psymtab.h,
+	python/py-framefilter.c, python/py-inferior.c, python/py-ref.h,
+	python/py-type.c, python/python.c, record-btrace.c, record-full.c,
+	record.c, record.h, regcache-dump.c, regcache.c, regcache.h,
+	remote-fileio.c, remote-fileio.h, remote-sim.c, remote.c,
+	riscv-tdep.c, rs6000-aix-tdep.c, rust-exp.y, s12z-tdep.c,
+	selftest-arch.c, ser-base.c, ser-event.c, ser-pipe.c, ser-tcp.c,
+	ser-unix.c, skip.c, solib-aix.c, solib-target.c, solib.c,
+	source-cache.c, source.c, source.h, sparc-nat.c, spu-linux-nat.c,
+	stack.c, stap-probe.c, symfile-add-flags.h, symfile.c, symfile.h,
+	symtab.c, symtab.h, target-descriptions.c, target-descriptions.h,
+	target-memory.c, target.c, target.h, target/waitstatus.c,
+	target/waitstatus.h, thread-iter.h, thread.c, tilegx-tdep.c,
+	top.c, top.h, tracefile-tfile.c, tracefile.c, tracepoint.c,
+	tracepoint.h, tui/tui-io.c, ui-file.c, ui-out.h,
+	unittests/array-view-selftests.c,
+	unittests/child-path-selftests.c, unittests/cli-utils-selftests.c,
+	unittests/common-utils-selftests.c,
+	unittests/copy_bitwise-selftests.c, unittests/environ-selftests.c,
+	unittests/format_pieces-selftests.c,
+	unittests/function-view-selftests.c,
+	unittests/lookup_name_info-selftests.c,
+	unittests/memory-map-selftests.c, unittests/memrange-selftests.c,
+	unittests/mkdir-recursive-selftests.c,
+	unittests/observable-selftests.c,
+	unittests/offset-type-selftests.c, unittests/optional-selftests.c,
+	unittests/parse-connection-spec-selftests.c,
+	unittests/ptid-selftests.c, unittests/rsp-low-selftests.c,
+	unittests/scoped_fd-selftests.c,
+	unittests/scoped_mmap-selftests.c,
+	unittests/scoped_restore-selftests.c,
+	unittests/string_view-selftests.c, unittests/style-selftests.c,
+	unittests/tracepoint-selftests.c, unittests/unpack-selftests.c,
+	unittests/utils-selftests.c, unittests/xml-utils-selftests.c,
+	utils.c, utils.h, valarith.c, valops.c, valprint.c, value.c,
+	value.h, varobj.c, varobj.h, windows-nat.c, x86-linux-nat.c,
+	xml-support.c, xml-support.h, xml-tdesc.h, xstormy16-tdep.c,
+	xtensa-linux-nat.c, dwarf2read.h: Change common to gdbsupport.
+
+2019-07-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* linespec.c (decode_digits_list_mode): Set explicit_line to a
+	bool value.
+	(decode_digits_ordinary): Set explicit_line field in sal.
+	* symtab.c (skip_prologue_sal): Don't skip prologue for a
+	symtab_and_line that was set on an explicit line number in
+	assembler code.  Do always update the recorded symtab and line if
+	we do skip the prologue.
+
+2019-07-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* breakpoint.c (set_breakpoint_location_function): Remove
+	explicit_loc parameter.
+	(momentary_breakpoint_from_master): Update call to
+	set_breakpoint_location_function.
+	(add_location_to_breakpoint): Likewise.
+
+2019-07-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_features_from_gdbarch_info): Don't modify
+	required features based on default bfd type when no specific bfd
+	is present.
+
+2019-07-08  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Mention that GDB printf and eval commands can now print
+	C-style and Ada-style convenience var strings without
+	calling the inferior.
+	* printcmd.c (printf_c_string): Locally print GDB internal var
+	instead of transiting via the inferior.
+	(printf_wide_c_string): Likewise.
+
+2019-07-04  Alan Hayward  <alan.hayward@arm.com>
+
+	PR breakpoints/25011
+	* symfile.c (symbol_file_command): Call solib_create_inferior_hook.
+
+2019-07-04  Tom Tromey  <tom@tromey.com>
+
+	PR tui/24724:
+	* tui/tui-winsource.c (tui_clear_source_content): Update.
+	(tui_source_window_base::set_is_exec_point_at): Fix comment.
+	(tui_update_breakpoint_info): Update.
+	(tui_set_exec_info_content): Update.
+	* tui/tui-source.c (tui_set_source_content_nil): Update.
+	* tui/tui-disasm.c (tui_set_disassem_content): Don't set
+	has_break.
+	* tui/tui-data.h (enum tui_bp_flag): New.
+	(tui_bp_flags): New enum flags type.
+	(struct tui_source_element) <break_mode>: Change type.  Rename
+	from has_break.
+	(TUI_BP_ENABLED, TUI_BP_DISABLED, TUI_BP_HIT)
+	(TUI_BP_CONDITIONAL, TUI_BP_HARDWARE): Don't define.  Now enum
+	constants.
+	* tui/tui-winsource.h: Fix comment.
+
+2019-07-04  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch32-linux-nat.h (VFP_REGS_SIZE): Remove define.
+	* aarch64-linux-nat.c (fetch_fpregs_from_thread)
+	(store_fpregs_to_thread)
+	(aarch64_linux_nat_target::read_description): Use ARM_VFP3_REGS_SIZE.
+	* arch/arm.h (IWMMXT_VEC_REGISTER_SIZE, ARM_CORE_REGS_SIZE)
+	(ARM_FP_REGS_SIZE, ARM_VFP2_REGS_SIZE, ARM_VFP3_REGS_SIZE)
+	(IWMMXT_REGS_SIZE): Add define.
+	* arm-linux-nat.c (IWMMXT_REGS_SIZE): Remove define.
+	(fetch_vfp_regs, store_vfp_regs)
+	(arm_linux_nat_target::read_description): Use ARM_VFP3_REGS_SIZE.
+	* arm-tdep.c (arm_register_g_packet_guesses): Use new defines.
+
+2019-07-04  Alan Hayward  <alan.hayward@arm.com>
+
+        * arch/arm-get-next-pcs.c (thumb_get_next_pcs_raw): Use ARM_
+        defines.
+        * arch/arm-linux.c (arm_linux_sigreturn_next_pc_offset): Likewise.
+        * arch/arm.h (INT_REGISTER_SIZE) Rename from...
+        (ARM_INT_REGISTER_SIZE): ...to this.
+        (ARM_FP_REGISTER_SIZE) (ARM_VFP_REGISTER_SIZE): Add define.
+        * arm-linux-tdep.c (ARM_LINUX_JB_ELEMENT_SIZE)
+        (ARM_LINUX_SIZEOF_GREGSET, arm_linux_supply_gregset)
+        (arm_linux_collect_gregset, supply_nwfpe_register)
+        (collect_nwfpe_register, arm_linux_collect_nwfpe): Use ARM_
+        defines.
+        * arm-linux-tdep.h (ARM_LINUX_SIZEOF_NWFPE, NWFPE_FPSR_OFFSET)
+        (NWFPE_FPCR_OFFSET, NWFPE_TAGS_OFFSET): Likewise
+        * arm-nbsd-tdep.c (ARM_NBSD_JB_ELEMENT_SIZE): Likewise.
+        * arm-tdep.c (arm_push_dummy_call, arm_extract_return_value)
+        (arm_return_in_memory, arm_store_return_value)
+        (arm_get_longjmp_target, arm_register_g_packet_guesses)
+        (arm_record_ld_st_multiple): Likewise.
+        * arm-tdep.h (FP_REGISTER_SIZE, VFP_REGISTER_SIZE): Remove.
+        * arm-wince-tdep.c (ARM_WINCE_JB_ELEMENT_SIZE): Use ARM_ defines.
+
+2019-07-04  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-linux-tdep.c (aarch64_linux_init_abi): Use
+	AARCH64_DISPLACED_MODIFIED_INSNS.
+	* aarch64-tdep.c (struct aarch64_displaced_step_data)
+	(aarch64_displaced_step_copy_insn): Likewise.
+	* aarch64-tdep.h (DISPLACED_MODIFIED_INSNS): Rename from..
+	(AARCH64_DISPLACED_MODIFIED_INSNS): ...to this.
+	* arm-linux-tdep.c (arm_linux_cleanup_svc): Use
+	ARM_DISPLACED_MODIFIED_INSNS.
+	* arm-tdep.c (arm_gdbarch_init): Likewise.
+	* arm-tdep.h (DISPLACED_MODIFIED_INSNS): Rename from..
+	(ARM_DISPLACED_MODIFIED_INSNS): ...to this.
+	(struct arm_displaced_step_closure): Use
+	ARM_DISPLACED_MODIFIED_INSNS.
+
+2019-07-04  Alan Hayward  <alan.hayward@arm.com>
+
+	* features/Makefile: Remove unused xml files.
+	* features/aarch64.xml: Remove.
+	* features/i386/amd64-avx-avx512-linux.xml: Remove.
+	* features/i386/amd64-avx-avx512.xml: Remove.
+	* features/i386/amd64-avx-linux.xml: Remove.
+	* features/i386/amd64-avx-mpx-avx512-pku-linux.xml: Remove.
+	* features/i386/amd64-avx-mpx-avx512-pku.xml: Remove.
+	* features/i386/amd64-avx-mpx-linux.xml: Remove.
+	* features/i386/amd64-avx-mpx.xml: Remove.
+	* features/i386/amd64-avx.xml: Remove.
+	* features/i386/amd64-linux.xml: Remove.
+	* features/i386/amd64-mpx-linux.xml: Remove.
+	* features/i386/amd64-mpx.xml: Remove.
+	* features/i386/amd64.xml: Remove.
+	* features/i386/i386-avx-avx512-linux.xml: Remove.
+	* features/i386/i386-avx-avx512.xml: Remove.
+	* features/i386/i386-avx-linux.xml: Remove.
+	* features/i386/i386-avx-mpx-avx512-pku-linux.xml: Remove.
+	* features/i386/i386-avx-mpx-avx512-pku.xml: Remove.
+	* features/i386/i386-avx-mpx-linux.xml: Remove.
+	* features/i386/i386-avx-mpx.xml: Remove.
+	* features/i386/i386-avx.xml: Remove.
+	* features/i386/i386-linux.xml: Remove.
+	* features/i386/i386-mmx-linux.xml: Remove.
+	* features/i386/i386-mmx.xml: Remove.
+	* features/i386/i386-mpx-linux.xml: Remove.
+	* features/i386/i386-mpx.xml: Remove.
+	* features/i386/i386.xml: Remove.
+	* features/i386/x32-avx-avx512-linux.xml: Remove.
+	* features/i386/x32-avx-linux.xml: Remove.
+	* features/i386/x32-linux.xml: Remove.
+
+2019-07-04  Alan Hayward  <alan.hayward@arm.com>
+
+	* regformats/aarch64.dat: Remove.
+	* regformats/i386/amd64-avx-avx512-linux.dat: Remove.
+	* regformats/i386/amd64-avx-linux.dat: Remove.
+	* regformats/i386/amd64-avx-mpx-avx512-pku-linux.dat: Remove.
+	* regformats/i386/amd64-avx-mpx-linux.dat: Remove.
+	* regformats/i386/amd64-linux.dat: Remove.
+	* regformats/i386/amd64-mpx-linux.dat: Remove.
+	* regformats/i386/amd64.dat: Remove.
+	* regformats/i386/i386-avx-avx512-linux.dat: Remove.
+	* regformats/i386/i386-avx-linux.dat: Remove.
+	* regformats/i386/i386-avx-mpx-avx512-pku-linux.dat: Remove.
+	* regformats/i386/i386-avx-mpx-linux.dat: Remove.
+	* regformats/i386/i386-linux.dat: Remove.
+	* regformats/i386/i386-mmx-linux.dat: Remove.
+	* regformats/i386/i386-mpx-linux.dat: Remove.
+	* regformats/i386/i386.dat: Remove.
+	* regformats/i386/x32-avx-avx512-linux.dat: Remove.
+	* regformats/i386/x32-avx-linux.dat: Remove.
+	* regformats/i386/x32-linux.dat: Remove.
+
+2019-07-04  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-tdep.c: Remove xml self tests.
+	* amd64-linux-tdep.c: Likewise.
+	* amd64-tdep.c: Likewise.
+	* i386-linux-tdep.c: Likewise.
+	* i386-tdep.c: Likewise.
+
+2019-07-03  Pedro Alves  <palves@redhat.com>
+
+	PR cli/24732
+	* cli/cli-cmds.c (struct pipe_cmd_opts): New.
+	(pipe_cmd_option_defs): New.
+	(make_pipe_cmd_options_def_group): New.
+	(pipe_command): Use gdb::option::process_options.
+	(pipe_command_completer): New function.
+	(_initialize_cli_cmds): Install completer for "pipe" command.
+
+2019-07-03  Pedro Alves  <palves@redhat.com>
+
+	* cli/cli-option.c (union option_value) <string>: New field.
+	(struct option_def_and_value): Add ctor, move ctor, dtor and
+	use DISABLE_COPY_AND_ASSIGN.
+	(option_def_and_value::clear_value): New.
+	(parse_option, save_option_value_in_ctx, get_val_type_str)
+	(add_setshow_cmds_for_options): Handle var_string.
+	* cli-option.h (union option_def::var_address) <string>: New
+	field.
+	(struct string_option_def): New.
+	* maint-test-options.c (struct test_options_opts): Add default
+	ctor and use DISABLE_COPY_AND_ASSIGN.
+	<string_opt>: New field.
+	(test_options_opts::~test_options_opts): New.
+	(test_options_opts::dump): Also dump "-string".
+	(test_options_option_defs): Install "string.
+
+2019-07-03  Pedro Alves  <palves@redhat.com>
+
+	* cli/cli-option.c (parse_option) <var_enum>: Don't return an
+	option_value with a null enumeration.
+	(complete_options): Save the option values in the context.
+	(save_option_value_in_ctx): New, factored out from ...
+	(process_options): ... here.
+	* cli/cli-utils.c (get_ulongest): Don't advance PP until the end
+	of the function.
+	* maint-test-options.c (test_options_opts::dump): New, factored
+	out from ...
+	(maintenance_test_options_command_mode): ... here.
+	(maintenance_test_options_command_completion_result): Delete.
+	(maintenance_test_options_command_completion_text): Update
+	comment.
+	(maintenance_show_test_options_completion_result): Change
+	prototype.  Just print
+	maintenance_test_options_command_completion_text.
+	(save_completion_result): New.
+	(maintenance_test_options_completer_mode): Pass options context to
+	complete_options, and then save a dump.
+	(_initialize_maint_test_options): Use add_cmd to install "maint
+	show test-options-completion-result".
+
+2019-07-03  Pedro Alves  <palves@redhat.com>
+
+	* NEWS (New commands): Mention "with" and "maint with".
+	* cli/cli-cmds.c (with_command_1, with_command_completer_1)
+	(with_command, with_command_completer): New.
+	(pipe_command): Adjust to new repeat_previous
+	interface.
+	(_initialize_cli_cmds): Install the "with" command and its "w"
+	alias.
+	* cli/cli-cmds.h (with_command_1, with_command_completer_1): New
+	declarations.
+	* cli/cli-setshow.c (parse_cli_var_uinteger)
+	(parse_cli_var_zuinteger_unlimited, do_set_command): Handle empty
+	argument strings for all var_types.
+	(get_setshow_command_value_string): New, factored out from ...
+	(do_show_command): ... this.
+	* cli/cli-setshow.h: Include <string>.
+	(get_setshow_command_value_string): Declare.
+	* command.h (repeat_previous): Now returns const char *.  Adjust
+	comment.
+	* maint.c: Include "cli/cli-cmds.h".
+	(maintenance_with_cmd, maintenance_with_cmd_completer): New.
+	(_initialize_maint_cmds): Register the "maintenance with" command.
+	* top.c (repeat_previous): Move bits from pipe_command here:
+	Return the saved command line, if any; error out if there's no
+	command to relaunch.
+
+2019-07-03  Pedro Alves  <palves@redhat.com>
+
+	* NEWS (New commands): Mention "maint set/show test-settings"
+	instead of "maint test-settings".
+	* maint-test-settings.c (maintenance_test_settings_list): Delete.
+	(maintenance_test_settings_set_list): Rename to ...
+	(maintenance_set_test_settings_list): ... this.
+	(maintenance_test_settings_show_list): Rename to  ...
+	(maintenance_show_test_settings_list): ... this.
+	(maintenance_test_settings_cmd): Delete.
+	(maintenance_test_settings_set_cmd): ...
+	(maintenance_set_test_settings_cmd): ... this.
+	(maintenance_test_settings_show_cmd): ...
+	(maintenance_show_test_settings_cmd): ... this.
+	(maintenance_test_settings_show_value_cmd):
+	(maintenance_show_test_settings_value_cmd): ... this.
+	(_initialize_maint_test_settings): No longer install the "maint
+	test-settings" prefix command.  Rename "maint test-settings set"
+	to "maint set test-settings", and "maint test-settings show" to
+	"maint show test-settings".  Adjust all subcommands.
+
+2019-07-03  Pedro Alves  <palves@redhat.com>
+
+	* maint-test-settings.c: Fix file's intro comment.  Replace all
+	references to "test-options" with references to "test-settings",
+	in comments.
+
+2019-07-03  Pedro Alves  <palves@redhat.com>
+
+	* maint-test-settings.c (maintenance_test_settings_xxx)
+	(maintenance_test_settings_yyy, maintenance_test_settings_zzz):
+	New.
+	(maintenance_test_settings_enums): Use them.
+	(maintenance_test_settings_enum): Default to
+	maintenance_test_settings_xxx.
+	(_initialize_maint_test_settings): Initialize
+	MAINTENANCE_TEST_SETTINGS_FILENAME.
+
+2019-07-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.h (remove_breakpoints_inf): Change return type to
+	void, move function documentation here.
+	* breakpoint.c (remove_breakpoints_inf): Change return type to
+	void, move function documentation to header.
+
+2019-07-02  Pedro Alves  <palves@redhat.com>
+
+	* NEWS (Completion improvements): Mention "info threads".
+	* thread.c (struct info_threads_opts, info_threads_option_defs)
+	(make_info_threads_options_def_group): New.
+	(info_threads_command): Use gdb::option::process_options.
+	(info_threads_command_completer): New.
+	(_initialize_thread): Use gdb::option::build_help to build the
+	help text for "info threads".
+
+2019-07-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* defs.h (generic_load): Move from here...
+	* symfile.h (generic_load): ... to here.  Rename name parameter
+	to args.
+	* symfile.c (generic_load): Add comment.
+
+2019-07-01  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c
+	(dw2_debug_names_iterator::find_vec_in_debug_names): Hoist
+	declaration of without_params.  Fix formatting.
+
+2019-07-01  Tom Tromey  <tromey@adacore.com>
+
+	* ada-exp.y (find_primitive_type): Update.
+	* ada-lang.h (ada_lookup_symbol): Update.
+	* ada-lang.c (ada_lookup_symbol): Remove "is_a_field_of_this"
+	parameter.
+	(ada_lookup_encoded_symbol, ada_lookup_symbol_nonlocal): Update.
+
+2019-06-28  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	PR breakpoints/24541
+	* gdbarch.c: Regenerate.
+	* gdbarch.h: Regenerate.
+	* gdbarch.sh: Add 'stap_adjust_register'.
+	* i386-tdep.c: Include '<unordered_set>'.
+	(i386_stap_adjust_register): New function.
+	(i386_elf_init_abi): Register 'i386_stap_adjust_register'.
+	* stap-probe.c (stap_parse_register_operand): Call
+	'gdbarch_stap_adjust_register'.
+
+2019-06-28  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	PR python/24742
+	https://bugzilla.redhat.com/show_bug.cgi?id=1723564
+	* python/python.c (do_start_initialization): Use 'xmalloc'
+	instead of 'PyMem_Malloc'.
+
+2019-06-28  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (partial_die_info::read): Prefer the linkage name
+	for Ada.
+
+2019-06-27  Tom Tromey  <tromey@adacore.com>
+
+	* arm-tdep.c (arm_objfile_data_key): Move lower.  Change type to
+	objfile_key.
+	(arm_find_mapping_symbol, arm_record_special_symbol)
+	(_initialize_arm_tdep): Update.
+	(arm_objfile_data_free): Remove.
+
+2019-06-27  Tom Tromey  <tromey@adacore.com>
+
+	* cp-valprint.c (cp_print_value_fields): Pass opts, not options,
+	to cp_print_static_field.
+
+2019-06-26  Tom Tromey  <tromey@adacore.com>
+
+	* minsyms.c (lookup_minimal_symbol_solib_trampoline): Remove.
+	* minsyms.h (lookup_minimal_symbol_solib_trampoline): Don't
+	declare.
+
+2019-06-26  Alan Hayward  <alan.hayward@arm.com>
+
+	* features/aarch64-core.c (create_feature_aarch64_core):
+	Regenerate.
+	* features/aarch64-core.xml: Add cpsr flags.
+
+2019-06-26  Alan Hayward  <alan.hayward@arm.com>
+
+	* arm-tdep.c (arm_gnu_triplet_regexp): New function.
+	(arm_gdbarch_init): Add arm_gnu_triplet_regexp.
+
+2019-06-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* arm-tdep.c (struct arm_per_objfile) <section_maps_sorted>: New
+	field.
+	(arm_find_mapping_symbol): Sort mapping symbol vectors on first
+	use.
+	(arm_record_special_symbol): Don't insert new symbol in sorted
+	position, push it at the end.
+
+2019-06-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* arm-tdep.c (struct arm_mapping_symbol) (operator <): New.
+	(arm_mapping_symbol_s): Remove.
+	(DEF_VEC_O(arm_mapping_symbol_s)): Remove.
+	(arm_mapping_symbol_vec): New typedef.
+	(struct arm_per_objfile): Add constructor.
+	<section_maps>: Change type to
+	std::unique_ptr<arm_mapping_symbol_vec[]>.
+	(arm_compare_mapping_symbols): Remove.
+	(arm_find_mapping_symbol): Adjust to section_maps type change.
+	(arm_objfile_data_free): Call delete on arm_per_objfile.
+	(arm_record_special_symbol): Adjust to section_maps type change.
+	Allocate arm_per_objfile with new.
+
+2019-06-25  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-cmds.c (alias_command): Compare the alias prefix
+	with the command prefix.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_delete_win): Remove "return".
+	* tui/tui-data.c (~tui_gen_win_info): Remove "if".
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (init_and_make_win): Assert on unrecognized
+	type.
+	* tui/tui-data.h (struct tui_gen_win_info): Make constructor
+	protected.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c
+	(tui_source_window_base::set_is_exec_point_at): Add check against
+	LOA_ADDRESS.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.c (tui_set_source_content): Don't check before
+	xfree.
+	* tui/tui-disasm.c (tui_disassemble): Don't check before xfree.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_update_source_window_as_is)
+	(tui_alloc_source_buffer, tui_line_is_displayed)
+	(tui_addr_is_displayed): Change type of win_info.
+	* tui/tui-winsource.c (tui_update_source_window_as_is)
+	(tui_clear_source_content, tui_show_source_line)
+	(tui_show_source_content, tui_source_window_base::refill)
+	(tui_source_window_base::set_is_exec_point_at)
+	(tui_source_window_base::set_is_exec_point_at)
+	(tui_update_breakpoint_info, tui_set_exec_info_content): Update.
+	(tui_alloc_source_buffer, tui_line_is_displayed)
+	(tui_addr_is_displayed): Change type of win_info.  Update.
+	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
+	(tui_source_window_base::do_make_visible_with_new_height):
+	Update.
+	* tui/tui-source.c (tui_set_source_content)
+	(tui_set_source_content_nil)
+	(tui_source_window::do_scroll_vertical): Update.
+	* tui/tui-layout.c (show_layout): Update.
+	* tui/tui-disasm.c (tui_set_disassem_content)
+	(tui_disasm_window::do_scroll_vertical): Update.
+	* tui/tui-data.h (tui_win_content): Remove.
+	(struct tui_gen_win_info) <content, content_size>: Remove.
+	(struct tui_source_element): Add initializers and destructor.
+	(union tui_which_element, struct tui_win_element): Remove.
+	(struct tui_source_window_base) <content>: New field.
+	(struct tui_data_window): Remove destructor.
+	(tui_alloc_content, tui_free_win_content)
+	(tui_free_all_source_wins_content): Don't declare.
+	* tui/tui-data.c (tui_initialize_static_data): Update.
+	(init_content_element, tui_alloc_content): Remove.
+	(~tui_gen_win_info): Update.
+	(~tui_data_window, tui_free_all_source_wins_content)
+	(tui_free_win_content, free_content, free_content_elements):
+	Remove.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_clear_source_content)
+	(tui_erase_source_content, tui_show_source_content): Change type
+	of win_info.
+	* tui/tui-winsource.c (tui_clear_source_content)
+	(tui_erase_source_content, tui_show_source_content): Change type
+	of win_info.
+	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Update.
+	* tui/tui-source.h (tui_set_source_content_nil): Change type of
+	win_info.
+	* tui/tui-source.c (tui_set_source_content_nil): Change type of
+	win_info.
+	* tui/tui-layout.c (show_source_or_disasm_and_command): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_clear_source_content)
+	(tui_source_window_base::set_is_exec_point_at): Update.
+	* tui/tui-source.c (tui_set_source_content_nil): Update.
+	* tui/tui-data.h (struct tui_source_element) <is_exec_point>: Now
+	a bool.
+	* tui/tui-data.c (init_content_element): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_gen_win_info::make_visible): Update.
+	* tui/tui-win.c (make_invisible_and_set_new_height): Update.
+	* tui/tui-layout.c (init_and_make_win): Update.
+	* tui/tui.h (enum tui_win_type): Update.
+	* tui/tui-data.h (tui_win_is_auxiliary): Rename from
+	tui_win_is_auxillary.
+	* tui/tui-data.c (tui_win_is_auxiliary): Rename from
+	tui_win_is_auxillary.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_data_window::refresh_window): Update.
+	* tui/tui-windata.c (tui_data_window::first_data_item_displayed)
+	(tui_delete_data_content_windows, tui_display_all_data)
+	(tui_data_window::do_scroll_vertical, tui_display_data_from):
+	Update.
+	* tui/tui-win.c (tui_data_window::set_new_height): Simplify.
+	* tui/tui-regs.c (tui_last_regs_line_no)
+	(tui_line_from_reg_element_no, tui_first_reg_element_no_inline)
+	(tui_show_registers): Update.
+	(tui_show_register_group): Return void.  Update.
+	(tui_display_registers_from, tui_display_reg_element_at_line)
+	(tui_display_registers_from_line, tui_check_register_values):
+	Update.
+	* tui/tui-data.h (union tui_which_element) <data_window>: Remove
+	member.
+	(struct tui_data_window) <regs_content>: Now a std::vector.
+	<regs_content_count>: Remove.
+	(tui_add_content_elements, tui_free_data_content): Don't declare.
+	* tui/tui-data.c (tui_data_window::clear_detail): Update.
+	(init_content_element): Remove DATA_WIN case.  Add assert.
+	(tui_add_content_elements): Remove.
+	(tui_data_window): Update.
+	(tui_free_data_content): Remove.
+	(free_content_elements): Remove DATA_WIN case.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.c (tui_data_item_window): Update.
+	* tui/tui-windata.h (tui_check_data_values): Don't declare.
+	* tui/tui-windata.c (tui_display_all_data)
+	(tui_display_data_from_line): Update.
+	(tui_check_data_values): Remove.
+	* tui/tui-regs.c (tui_show_register_group)
+	(tui_display_reg_element_at_line): Update.
+	* tui/tui-hooks.c (tui_register_changed)
+	(tui_refresh_frame_and_register_information): Call
+	tui_check_register_values.
+	* tui/tui-data.h (struct tui_data_window) <data_content,
+	data_content_count, data_type>: Remove.
+	(enum tui_data_type): Remove.
+
+	* tui/tui-data.c (tui_data_window::clear_detail)
+	(~tui_data_window): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-windata.h (tui_first_data_item_displayed): Don't
+	declare.
+	* tui/tui-windata.c (tui_data_window::first_data_item_displayed):
+	Rename from tui_first_data_item_displayed.  Update.
+	(tui_data_window::refresh_all)
+	(tui_data_window::do_scroll_vertical): Update.
+	* tui/tui-data.h (struct tui_data_window)
+	<first_data_item_displayed>: Declare new method.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (tui_init_generic_part): Don't declare.
+	* tui/tui-data.c (tui_init_generic_part): Remove, moving
+	contents...
+	(tui_initialize_static_data): ...here.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_show_registers, tui_show_register_group)
+	(tui_display_registers_from, tui_check_register_values): Update.
+	(tui_display_register): Remove win_info parameter; update.
+	(tui_get_register): Change type of parameters.
+	* tui/tui-data.h (struct tui_data_element): Remove.
+	(union tui_which_element) <data>: Remove.
+	<data_window>: Change type.
+	(struct tui_data_item_window): New.
+	* tui/tui-data.c (init_content_element): Remove DATA_ITEM_WIN
+	case.  Add assert.
+	(~tui_data_item_window): New destructor.
+	(free_content_elements): Remove DATA_ITEM_WIN case.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.h (enum tui_win_type) <MAX_WINDOWS, UNDEFINED_WIN>:
+	Remove.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_command_element): Remove.
+	(union tui_which_element) <command>: Remove.
+	* tui/tui-data.c (init_content_element): Remove CMD_WIN case.  Add
+	assert.
+	(free_content_elements): Remove CMD_WIN case.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (tui_set_layout): Update.
+	* tui/tui-data.h (struct tui_layout_def) <split>: Remove.
+	* tui/tui-data.c (layout_def): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_refresh_all): Update.
+	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
+	(tui_source_window_base::set_new_height): Update.
+	* tui/tui-stack.c (tui_make_status_line): Change parameter type.
+	Update.
+	(tui_set_locator_fullname, tui_set_locator_info)
+	(tui_show_frame_info): Update.
+	* tui/tui-source.c (tui_set_source_content)
+	(tui_source_is_displayed): Update.
+	* tui/tui-layout.c (show_source_disasm_command, show_data)
+	(show_source_or_disasm_and_command): Update.
+	* tui/tui-disasm.c (tui_set_disassem_content)
+	(tui_get_begin_asm_address): Update.
+	* tui/tui-data.h (struct tui_locator_element): Remove.
+	(union tui_which_element) <locator>: Remove.
+	(struct tui_locator_window): New.
+	(tui_locator_win_info_ptr): Change return type.
+	* tui/tui-data.c (_locator): Change type.
+	(tui_locator_win_info_ptr): Change return type.
+	(init_content_element): Remove LOCATOR_WIN case.  Add assert.
+	(tui_alloc_content): Add assert.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c
+	(tui_exec_info_window::maybe_allocate_content): New method.
+	(tui_set_exec_info_content, tui_show_exec_info_content): Update.
+	* tui/tui-layout.c (init_and_make_win): Add EXEC_INFO_WIN case.
+	(make_source_or_disasm_window): Add cast.
+	* tui/tui-data.h (union tui_which_element) <simple_string>:
+	Remove.
+	(struct tui_source_info): New.
+	(struct tui_source_window_base) <execution_info>: Change type.
+	* tui/tui-data.c (init_content_element): Remove EXEC_INFO_WIN
+	case, and add assert.
+	(tui_alloc_content): Add assert.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (tui_alloc_win_info): Don't declare.
+	* tui/tui-layout.c (init_and_make_win): Use "new" directly.
+	* tui/tui-data.c (tui_alloc_win_info): Remove.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_set_win_focus_to): Don't check window type.
+	* tui/tui-wingeneral.c (tui_unhighlight_win): Check
+	can_highlight.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_source_window_base::update_tab_width): Call
+	make_visible_with_new_height method.
+	(tui_win_info::make_visible_with_new_height): New method.
+	(tui_source_window_base::do_make_visible_with_new_height)
+	(tui_data_window::do_make_visible_with_new_height)
+	(tui_cmd_window::do_make_visible_with_new_height): New methods.
+	(make_visible_with_new_height): Remove.
+	(tui_resize_all, tui_adjust_win_heights): Use
+	make_visible_with_new_height method.
+	* tui/tui-data.h (struct tui_win_info)
+	<do_make_visible_with_new_height, make_visible_with_new_height>:
+	New methods.
+	(struct tui_source_window_base, struct tui_data_window)
+	(struct tui_cmd_window) <do_make_visible_with_new_height>: New
+	methods.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_source_window_base::update_tab_width): New
+	method.
+	(update_tab_width): Call update_tab_width method.
+	* tui/tui-data.h (struct tui_win_info)
+	(struct tui_source_window_base) <update_tab_width>: New methods.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.h (tui_make_window): Change type of "box_it"
+	parameter.
+	* tui/tui-wingeneral.c (tui_make_window): Change type of "box_it"
+	parameter.
+	(tui_gen_win_info::make_visible): Update.
+	* tui/tui-layout.c (init_and_make_win): Change type of "box_it"
+	parameter.
+	* tui/tui-data.h (enum tui_box): New enum.
+	(BOX_WINDOW, DONT_BOX_WINDOW): Remove defines.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (make_source_or_disasm_window): Always use
+	init_and_make_win for EXEC_INFO_WIN.
+	* tui/tui-data.h (struct tui_gen_win_info) <~tui_gen_win_info>: No
+	longer inline.
+	(struct tui_win_info) <~tui_win_info>: Inline.
+	(tui_source_exec_info_win_ptr, tui_disassem_exec_info_win_ptr):
+	Don't declare.
+	* tui/tui-data.c (source_win, disasm_win): Remove globals.
+	(tui_source_exec_info_win_ptr, tui_disassem_exec_info_win_ptr):
+	Remove.
+	(tui_initialize_static_data): Update.
+	(~tui_gen_win_info): Handle more cleanup here.
+	(~tui_source_window_base): Delete "execution_info".
+	(~tui_win_info): Move code to ~tui_gen_win_info; remove.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (make_command_window): Don't set
+	can_highlight.
+	(show_source_disasm_command): Call the reset method.
+	(show_data): Don't set can_highlight.  Call the reset method.
+	(tui_gen_win_info::reset): Rename from init_gen_win_info
+	(init_and_make_win): Simplify.  Return tui_gen_win_info.
+	(show_source_or_disasm_and_command): Call the reset method.
+	* tui/tui-data.h (struct tui_gen_win_info) <reset>: New method.
+	(struct tui_cmd_window): Set can_highlight.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_gen_win_info::make_visible): Rename
+	from make_visible.
+	(tui_make_visible, tui_make_invisible): Rewrite.
+	(tui_win_info::make_visible): Remove.
+	(tui_source_window_base::make_visible): Update.
+	* tui/tui-data.h (struct tui_gen_win_info) <make_visible>: New
+	method.  Moved from...
+	(struct tui_win_info) <make_visible>: ...here.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c
+	(tui_source_window_base::do_scroll_horizontal): Remove direction
+	parameter.
+	* tui/tui-windata.c (tui_data_window::do_scroll_vertical): Remove
+	direction parameter.
+	* tui/tui-win.c (tui_win_info::forward_scroll)
+	(tui_win_info::backward_scroll, tui_win_info::left_scroll)
+	(tui_win_info::right_scroll): Update.
+	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Remove
+	direction parameter.
+	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Remove
+	direction parameter.
+	* tui/tui-data.h (enum tui_scroll_direction): Remove.
+	(struct tui_win_info) <do_scroll_vertical, do_scroll_horizontal>:
+	Remove direction parameter.
+	(struct tui_source_window_base, struct tui_source_window)
+	(struct tui_disasm_window, struct tui_data_window)
+	(struct tui_cmd_window): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_set_exec_info_content)
+	(tui_show_exec_info_content, tui_erase_exec_info_content)
+	(tui_clear_exec_info_content, tui_update_exec_info): Change
+	argument to tui_source_window_base.
+	* tui/tui-winsource.c (tui_set_exec_info_content)
+	(tui_show_exec_info_content, tui_erase_exec_info_content)
+	(tui_clear_exec_info_content, tui_update_exec_info): Change
+	argument to tui_source_window_base.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_set_exec_info_content): Return void.
+	* tui/tui-winsource.c (tui_set_exec_info_content): Return void.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_set_exec_info_content): Remove NULL
+	check.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_alloc_source_buffer): Change return
+	type to void.
+	* tui/tui-winsource.c (tui_alloc_source_buffer): Change return
+	type to void.
+	* tui/tui-source.c (tui_set_source_content): Update.
+	* tui/tui-disasm.c (tui_set_disassem_content): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (window_name_completer, tui_set_focus)
+	(tui_all_windows_info): Use name method.
+	* tui/tui-data.h (struct tui_gen_win_info)
+	(struct tui_source_window, struct tui_disasm_window)
+	(struct tui_data_window, struct tui_cmd_window) <name>: New
+	method.
+	(tui_win_name): Don't declare.
+	* tui/tui-data.c (tui_partial_win_by_name): Use name method.
+	(tui_win_name): Remove.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_update_source_window)
+	(tui_update_source_window_as_is): Change parameter type.
+	* tui/tui-winsource.c (tui_update_source_window): Change win_info
+	to be a tui_source_window_base.
+	(tui_update_source_window_as_is): Likewise.
+	* tui/tui-win.c (make_visible_with_new_height): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_erase_source_content)
+	(tui_show_source_content, tui_show_exec_info_content)
+	(tui_erase_exec_info_content): Use refresh_window method.
+	* tui/tui-wingeneral.h (tui_refresh_win): Don't declare.
+	* tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Rename
+	from tui_refresh_win.
+	(tui_data_window::refresh_window): New method.
+	(tui_win_info::refresh, tui_source_window_base::refresh)
+	(tui_refresh_all): Use refresh_window method.
+	* tui/tui-stack.c (tui_show_locator_content): Call refresh_window
+	method.
+	* tui/tui-regs.c (tui_display_register): Call refresh_window
+	method.
+	* tui/tui-layout.c (show_source_disasm_command)
+	(show_source_or_disasm_and_command): Call refresh_window method.
+	* tui/tui-data.h (struct tui_gen_win_info)
+	(struct tui_data_window, struct tui_cmd_window) <refresh_window>:
+	New method.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_rl_other_window, tui_enable)
+	(tui_is_window_visible, tui_get_command_dimension): Update.
+	* tui/tui-winsource.c (tui_update_source_window_as_is)
+	(tui_clear_source_content, tui_erase_source_content)
+	(tui_show_source_line, tui_source_window_base::refill)
+	(tui_source_window_base::do_scroll_horizontal)
+	(tui_source_window_base::set_is_exec_point_at)
+	(tui_update_breakpoint_info, tui_set_exec_info_content)
+	(tui_alloc_source_buffer, tui_line_is_displayed)
+	(tui_addr_is_displayed): Update.
+	* tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win)
+	(tui_check_and_display_highlight_if_needed)
+	(tui_win_info::make_visible, tui_win_info::refresh)
+	(tui_refresh_all): Update.
+	* tui/tui-windata.c (tui_first_data_item_displayed)
+	(tui_delete_data_content_windows, tui_erase_data_content)
+	(tui_display_all_data, tui_data_window::refresh_all)
+	(tui_check_data_values): Update.
+	* tui/tui-win.c (window_name_completer, tui_update_gdb_sizes)
+	(tui_set_win_focus_to, tui_win_info::forward_scroll)
+	(tui_win_info::backward_scroll, tui_refresh_all_win)
+	(tui_resize_all, tui_set_focus, tui_all_windows_info)
+	(update_tab_width, tui_set_win_height, tui_adjust_win_heights)
+	(tui_source_window_base::set_new_height)
+	(tui_data_window::set_new_height)
+	(make_invisible_and_set_new_height)
+	(make_visible_with_new_height, new_height_ok)
+	(parse_scrolling_args): Update.
+	* tui/tui-stack.c (tui_show_frame_info): Update.
+	* tui/tui-source.c (tui_set_source_content)
+	(tui_set_source_content_nil, tui_source_is_displayed)
+	(tui_source_window::do_scroll_vertical): Update.
+	* tui/tui-regs.c (tui_show_registers, tui_show_register_group)
+	(tui_display_registers_from, tui_display_reg_element_at_line)
+	(tui_check_register_values, tui_reg_command): Update.
+	* tui/tui-layout.c (tui_default_win_height)
+	(show_source_disasm_command, show_data, init_and_make_win)
+	(show_source_or_disasm_and_command): Update.
+	* tui/tui-io.c (update_cmdwin_start_line, tui_putc, tui_puts)
+	(tui_redisplay_readline, tui_mld_flush)
+	(tui_mld_erase_entire_line, tui_mld_getc, tui_cont_sig)
+	(tui_getc): Update.
+	* tui/tui-disasm.c (tui_set_disassem_content)
+	(tui_disasm_window::do_scroll_vertical): Update.
+	* tui/tui-data.h (struct tui_gen_win_info) <~tui_gen_win_info>:
+	Now virtual.
+	(struct tui_win_info): Derive from tui_gen_win_info.
+	<~tui_win_info>: Mark as override.
+	<generic>: Remove member.
+	* tui/tui-data.c (tui_cmd_window::clear_detail, tui_next_win)
+	(tui_prev_win, tui_partial_win_by_name, tui_win_info)
+	(~tui_data_window, ~tui_win_info)
+	(tui_free_all_source_wins_content): Update.
+	* tui/tui-command.c (tui_refresh_cmd_win): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (init_and_make_win): Use new.
+	* tui/tui-data.h (struct tui_gen_win_info): Add constructor,
+	destructor, initializers.
+	(tui_alloc_generic_win_info): Don't declare.
+	* tui/tui-data.c (_locator): Add argument to constructor.
+	(source_win, disasm_win): New globals.
+	(exec_info): Remove.
+	(tui_source_exec_info_win_ptr, tui_disassem_exec_info_win_ptr):
+	Update.
+	(tui_alloc_generic_win_info): Remove.
+	(init_content_element): Use new.
+	(tui_win_info::tui_win_info): Update.
+	(free_content_elements) <case DATA_WIN>: Use delete.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_refresh_win): Update.
+	* tui/tui-windata.c (tui_first_data_item_displayed)
+	(tui_delete_data_content_windows): Update.
+	* tui/tui-win.c (tui_data_window::set_new_height): Update.
+	* tui/tui-regs.c (tui_show_registers, tui_show_register_group)
+	(tui_display_registers_from, tui_check_register_values): Update.
+	* tui/tui-data.h (union tui_which_element) <data_window>: Now a
+	pointer.
+	* tui/tui-data.c (init_content_element): Update.  Allocate the new
+	window.
+	(tui_free_data_content): Update.
+	(free_content_elements) <case DATA_WIN>: Free the window.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win):
+	Update.
+	* tui/tui-layout.c (make_command_window)
+	(show_source_disasm_command, show_data, init_and_make_win)
+	(show_source_or_disasm_and_command): Update.
+	* tui/tui-data.h (struct tui_win_info) <set_highlight>: New
+	method.
+	<can_highight, is_highlighted>: Now bool.
+	(tui_set_win_highlight): Don't declare.
+	* tui/tui-data.c (tui_set_win_highlight): Remove.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (make_visible): Remove check of window
+	type.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_win_info::max_height)
+	(tui_cmd_window::max_height): New methods.
+	(new_height_ok): Call max_height.
+	* tui/tui-data.h (struct tui_win_info, struct tui_cmd_window)
+	<max_height>: New method.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_source_window_base::set_new_height)
+	(tui_data_window::set_new_height): New methods.
+	(make_invisible_and_set_new_height): Call set_new_height method.
+	* tui/tui-data.h (struct tui_win_info)
+	(struct tui_source_window_base, struct tui_data_window)
+	<set_new_height>: New method.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.c (tui_rl_other_window): Call the refresh_all method.
+	* tui/tui-windata.c (tui_data_window::refresh_all): Rename from
+	tui_refresh_data_win.
+	* tui/tui-win.c (tui_source_window_base::refresh_all): New
+	method.
+	(tui_refresh_all_win): Call the refresh_all method.
+	(tui_set_focus): Likewise.
+	* tui/tui-data.h (struct tui_win_info) <refresh_all>: New method.
+	(struct tui_source_window_base, struct tui_data_window) <refresh>:
+	Likewise.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_refill_source_window)
+	(tui_set_is_exec_point_at): Don't declare.
+	* tui/tui-winsource.c (tui_update_source_windows_with_addr)
+	(tui_source_window_base::refill): Rename from
+	tui_refill_source_window.
+	(tui_source_window_base::do_scroll_horizontal): Update.
+	(tui_source_window_base::set_is_exec_point_at): Rename from
+	tui_set_is_exec_point_at.
+	(tui_update_all_breakpoint_info): Update.
+	* tui/tui-stack.c (tui_show_frame_info): Update.
+	* tui/tui-layout.c (show_data): Add cast.
+	* tui/tui-hooks.c (tui_redisplay_source): Call refill method.
+	* tui/tui-data.h (struct tui_source_window_base) <refill,
+	set_is_exec_point_at>: New methods.
+	(tui_source_windows, tui_add_to_source_windows): Update types.
+	(tui_add_to_source_windows): Remove redundant declaration.
+	* tui/tui-data.c (source_windows): Store tui_source_window_base.
+	(tui_source_windows): Change return type.
+	(tui_clear_source_windows_detail): Update.
+	(tui_add_to_source_windows): Change type of parameter.
+	(tui_free_all_source_wins_content): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_win_info::refresh)
+	(tui_source_window_base::refresh): New methods.
+	(tui_refresh_all): Call the refresh method.
+	* tui/tui-data.h (struct tui_win_info)
+	(struct tui_source_window_base) <refresh>: New method.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui.h (tui_is_window_visible): Return bool.
+	* tui/tui.c (tui_is_window_visible): Return bool.
+	* tui/tui-wingeneral.c (tui_make_window, make_visible)
+	(tui_make_visible, tui_make_invisible)
+	(tui_win_info::make_visible)
+	(tui_source_window_base::make_visible, make_all_visible)
+	(tui_make_all_visible, tui_make_all_invisible): Update.
+	* tui/tui-windata.c (tui_delete_data_content_windows): Update.
+	* tui/tui-data.h (struct tui_gen_win_info) <is_visible>: Now
+	bool.
+	(struct tui_win_info, struct tui_source_window_base)
+	(struct tui_cmd_window) <make_visible>: Change parameter to bool.
+	* tui/tui-data.c (tui_init_generic_part): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_win_info::make_visible)
+	(tui_source_window_base::make_visible): New methods.
+	(make_all_visible): Make method call.
+	* tui/tui-data.h (struct tui_win_info) <make_visible>: New method.
+	(struct tui_source_window_base, struct tui_cmd_window): Override
+	make_visible.
+	(tui_win_is_source_type): Don't declare.
+	* tui/tui-data.c (tui_win_is_source_type): Remove.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_source_or_disasm_and_command): Remove
+	NULL check.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_data_window, struct tui_cmd_window):
+	Inline constructor.  Add initializers for members.
+	* tui/tui-data.c (tui_data_window, tui_cmd_window): Remove
+	constructors; now inline in class.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_show_registers): Update.
+	* tui/tui-data.h (struct tui_data_window) <display_regs>: Now
+	bool.
+	* tui/tui-data.c (tui_data_window::clear_detail)
+	(tui_data_window): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-windata.c (tui_display_all_data)
+	(tui_display_data_from_line, tui_display_data_from)
+	(tui_check_data_values, tui_data_window::do_scroll_vertical):
+	Update.
+	* tui/tui-regs.c (tui_last_regs_line_no)
+	(tui_line_from_reg_element_no, tui_first_reg_element_no_inline)
+	(tui_show_registers, tui_show_register_group)
+	(tui_display_registers_from, tui_display_reg_element_at_line)
+	(tui_display_registers_from_line, tui_check_register_values)
+	(tui_reg_next, tui_reg_prev): Update.
+	* tui/tui-layout.c (tui_set_layout, show_data): Update.
+	* tui/tui-data.h (struct tui_data_info): Remove.  Move contents to
+	tui_data_window.
+	(struct tui_win_info) <detail>: Remove.  Add new fields from
+	tui_data_info.
+	(TUI_DATA_WIN): Add cast.
+	* tui/tui-data.c (tui_data_window::clear_detail, tui_data_window)
+	(~tui_data_window): Simplify.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (show_source_disasm_command)
+	(show_source_or_disasm_and_command): Update.
+	* tui/tui-io.c (update_cmdwin_start_line)
+	(tui_redisplay_readline): Update.
+	* tui/tui-data.h (struct tui_command_info): Remove.
+	(struct tui_win_info) <detail>: Remove command_info member.
+	(struct tui_data_window) <start_line>: New member, from
+	tui_command_info.
+	(TUI_CMD_WIN): Add casts.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_source_window)
+	(tui_refill_source_window)
+	(tui_source_window_base::do_scroll_horizontal)
+	(tui_update_breakpoint_info, tui_set_exec_info_content)
+	(tui_show_exec_info_content, tui_erase_exec_info_content)
+	(tui_clear_exec_info_content): Update.
+	* tui/tui-wingeneral.c (make_all_visible, tui_refresh_all):
+	Update.
+	* tui/tui-win.c (make_invisible_and_set_new_height)
+	(make_visible_with_new_height): Update.
+	* tui/tui-source.c (tui_set_source_content)
+	(tui_show_symtab_source): Update.
+	* tui/tui-layout.c (extract_display_start_addr)
+	(show_source_disasm_command, show_data)
+	(make_source_or_disasm_window)
+	(show_source_or_disasm_and_command): Update.
+	* tui/tui-disasm.c (tui_set_disassem_content): Simplify.
+	(tui_disasm_window::do_scroll_vertical): Remove shadowing
+	"gdbarch".
+	* tui/tui-data.h (struct tui_source_info): Remove.  Move contents
+	to tui_source_window_base.
+	(struct tui_win_info) <detail>: Remove source_info member.
+	(struct tui_source_window_base) <has_locator>: Inline.
+	Move contents from tui_source_info; rename has_locator member to
+	m_has_locator.
+	(TUI_SRC_WIN, TUI_DISASM_WIN): Add casts.
+	* tui/tui-data.c (tui_source_window_base::has_locator): Move to
+	header file.
+	(tui_source_window_base::clear_detail, ~tui_source_window_base):
+	Simplify.
+	(tui_free_all_source_wins_content): Cast to
+	tui_source_window_base.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (make_invisible_and_set_new_height)
+	(make_visible_with_new_height): Call has_locator method.
+	* tui/tui-layout.c (show_source_disasm_command, show_data)
+	(show_source_or_disasm_and_command): Update for bool change.
+	* tui/tui-data.h (struct tui_source_info) <has_locator>: Now bool.
+	(tui_win_info) <has_locator>: New method.
+	(struct tui_source_window_base) <has_locator>: New method.
+	(tui_win_has_locator): Don't declare.
+	* tui/tui-data.c (tui_source_window_base::has_locator): Rename
+	from tui_win_has_locator.
+	(tui_source_window_base): Use false, not FALSE.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (tui_clear_win_detail): Don't declare.
+	* tui/tui-data.c (tui_clear_source_windows_detail): Call the
+	clear_detail method directly.
+	(tui_clear_win_detail): Remove.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Use
+	"this", not TUI_DISASM_WIN.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.h (tui_horizontal_source_scroll):  Don't
+	declare.
+	* tui/tui-winsource.c
+	(tui_source_window_base::do_scroll_horizontal): Rename from
+	tui_horizontal_source_scroll.
+	* tui/tui-windata.h (tui_vertical_data_scroll): Don't declare.
+	* tui/tui-windata.c (tui_data_window::do_scroll_vertical): Rename
+	from tui_vertical_data_scroll.
+	* tui/tui-win.h (tui_scroll): Don't declare.
+	* tui/tui-win.c (tui_win_info::forward_scroll)
+	(tui_win_info::backward_scroll, tui_win_info::left_scroll)
+	(tui_win_info::right_scroll): Rename and update.
+	(tui_scroll_forward_command, tui_scroll_backward_command)
+	(tui_scroll_left_command, tui_scroll_right_command): Update.
+	(tui_scroll): Remove.
+	* tui/tui-source.h: Don't declare tui_vertical_source_scroll.
+	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Rename
+	from tui_vertical_source_scroll.
+	* tui/tui-disasm.h (tui_vertical_disassem_scroll): Don't declare.
+	* tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Rename
+	from tui_vertical_disassem_scroll.
+	* tui/tui-data.h (struct tui_win_info) <do_scroll_vertical,
+	do_scroll_horizontal>: New methods.
+	<forward_scroll, backward_scroll, left_scroll, right_scroll>:
+	Likewise.
+	(struct tui_source_window_base): Add do_scroll_horizontal.
+	(struct tui_source_window, struct tui_disasm_window): Add
+	do_scroll_vertical.
+	(struct tui_data_window, struct tui_cmd_window): Add
+	do_scroll_horizontal and do_scroll_vertical.
+	* tui/tui-command.c (tui_dispatch_ctrl_char): Use method calls.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_source_window_base): New struct.
+	(struct tui_source_window): Derive from tui_source_window_base.
+	(struct tui_disasm_window): New struct.
+	* tui/tui-data.c (tui_source_window_base::clear_detail): Rename
+	from tui_source_window::clear_detail.
+	(tui_source_window_base): Rename from tui_source_window.
+	(~tui_source_window_base): Rename from ~tui_source_window.
+	(tui_alloc_win_info): Create a tui_disasm_window.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_source_window)
+	(struct tui_data_window): Declare destructors.
+	* tui/tui-data.c (~tui_source_window, ~tui_data_window): New
+	destructors.
+	(tui_win_info): Simplify.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_display_main)
+	(tui_update_source_windows_with_addr)
+	(tui_update_all_breakpoint_info): Update.
+	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
+	(new_height_ok, parse_scrolling_args): Update.
+	* tui/tui-stack.c (tui_show_frame_info): Update.
+	* tui/tui-data.h (struct tui_list): Remove.
+	(tui_source_windows): Return a reference to a std::vector.
+	* tui/tui-data.c (source_windows): Now a std::vector.
+	(tui_source_windows): Change return type.
+	(tui_clear_source_windows): Rewrite.
+	(tui_clear_source_windows_detail, tui_add_to_source_windows)
+	(tui_free_all_source_wins_content): Rewrite.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_win_info, struct tui_source_window)
+	(struct tui_data_window, struct tui_cmd_window): Declare
+	clear_detail method.
+	* tui/tui-data.c (tui_source_window::clear_detail)
+	(tui_cmd_window::clear_detail, tui_data_window::clear_detail): New
+	methods.
+	(tui_clear_win_detail): Simplify.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (make_source_window, make_disasm_window)
+	(make_source_or_disasm_window): Remove win_info_ptr parameter.
+	Return the new window.
+	(show_source_disasm_command, show_data)
+	(show_source_or_disasm_and_command): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (make_command_window): Remove win_info_ptr
+	parameter.  Return the new window.
+	(show_source_disasm_command): Update and remove NULL check.
+	(show_source_or_disasm_and_command): Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (init_and_make_win): Remove NULL check.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_win_info): Make constructor
+	protected.  Make destructor virtual.  Add initializers.
+	(tui_source_window, tui_data_window, tui_cmd_window): New
+	classes.
+	* tui/tui-data.c (tui_win_info): Rename from init_win_info.  Now a
+	constructor.  Add "type" parameter.
+	(tui_source_window, tui_data_window, tui_cmd_window): New
+	constructors.
+	(tui_alloc_win_info): Instantiate the appropriate subclass.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-win.c (tui_resize_all): Use delete.
+	* tui/tui-data.h (struct tui_win_info) <~tui_win_info>: Declare
+	destructor.
+	(tui_free_window): Don't declare.
+	* tui/tui-data.c (~tui_win_info): Rename from tui_free_window.
+	Update.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_win_info): Add constructor.
+	* tui/tui-data.c (tui_alloc_win_info): Use new.
+	(tui_free_window): Use delete.
+
+2019-06-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-windata.h (tui_first_data_element_no_in_line): Don't
+	declare.
+	* tui/tui-windata.c (tui_first_data_element_no_in_line): Remove.
+
+2019-06-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (tui_del_window, tui_del_data_windows): Don't
+	declare.
+	* tui/tui-data.c (tui_del_window, tui_del_data_windows): Remove.
+
+2019-06-22  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2read.c (create_addrmap_from_aranges)
+	(read_debug_names_from_section): Print ptrdiff_t using '%s' and plongest
+	instead of '%zu'.
+
+2019-06-21  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2read.h (dwarf2_section_info_def): Remove.
+	(DEF_VEC_O (dwarf2_section_info_def)): Remove.
+	* dwarf2read.c (struct dwo_sections) <types>: Change type to
+	std::vector<dwarf2_section_info>.
+	(struct dwo_file) <~dwo_file>: Remove.
+	(dwarf2_per_objfile::~dwarf2_per_objfile): Don't manually free
+	types field.
+	(dwarf2_per_objfile::locate_sections): Adjust to std::vector.
+	(dwarf2_read_debug_names): Likewise.
+	(create_debug_types_hash_table): Change parameter type to
+	array_view, adjust code accordingly.
+	(dwarf2_locate_dwo_sections): Adjust to std::vector.
+	(partial_die_info::fixup): Likewise.
+	(determine_prefix): Likewise.
+	* dwarf-index-write.c (write_psymtabs_to_index): Adjust.
+
+2019-06-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2read.c (struct dwo_file) <dbfd>: Change type to
+	gdb_bfd_ref_ptr.
+	<~dwo_file>: Remove call to gdb_bfd_unref.
+	(open_and_init_dwo_file): Move gdb_bfd_ref_ptr into dbfd field. Call
+	gdb_bfd_ref_ptr::get.
+
+2019-06-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2read.h (struct dwarf2_per_objfile) <dwo_files>: Change
+	type to htab_up.
+	* dwarf2read.c (struct dwo_file): Initialize fields.
+	<~dwo_file>: New.
+	(free_dwo_file): Remove, move content to ~dwo_file.
+	(struct dwo_file_deleter): Remove.
+	(dwo_file_up>: Remove custom deleter.
+	(free_dwo_files): Remove.
+	(dwarf2_per_objfile::~dwarf2_per_objfile): Don't explicitly free
+	dwo_files.
+	(process_skeletonless_type_units): Call unique_ptr::get.
+	(allocate_dwo_file_hash_table): Add deleter to created hash
+	table.  Change return type to htab_up.
+	(lookup_dwo_file_slot): Don't memset dwo_file, call
+	unique_ptr::get.
+	(create_dwo_unit_in_dwp_v1): Allocate dwo_file with new.
+	(create_dwo_unit_in_dwp_v2): Likewise.
+	(open_and_init_dwo_file): Likewise.
+	(free_dwo_file_from_slot): Remove.
+
+2019-06-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2read.h (struct dwarf2_section_info) <readin,
+	is_virtual>: Change type to bool.
+	* dwarf2read.c (dwarf2_read_section, create_dwp_v2_section): Use
+	true instead of 1.
+
+2019-06-19  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (tui_init_content_element): Don't declare.
+
+2019-06-19  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (tui_init_win_info): Don't declare.
+
+2019-06-19  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2read.h (abstract_to_concrete): Change type to
+	std::unordered_map<sect_offset, std::vector<sect_offset>,
+	gdb::hash_enum<sect_offset>>.
+
+2019-06-19  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_evaluate_subexp) <case OP_ATR_FIRST>: Handle
+	EVAL_AVOID_SIDE_EFFECTS specially.
+
+2019-06-19  Tom Tromey  <tromey@adacore.com>
+
+	* source-cache.c (highlighter): New global.
+	(source_cache::get_source_lines): Create a highlighter on demand.
+
+2019-06-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* defs.h (deprecated_interactive_hook): Delete declaration.
+	* interps.c (clear_interpreter_hooks): Remove use of
+	deprecated_interactive_hook.
+	* top.c (deprecated_interactive_hook): Delete definition.
+	* utils.c (maybe_quit): Remove use of deprecated_interactive_hook.
+
+2019-06-18  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/24515
+	* dwarf2read.h (abstract_to_concrete): Change type from
+	std::unordered_map<die_info_ptr, std::vector<die_info_ptr>> to
+	std::unordered_map<sect_offset, std::vector<sect_offset>>.
+	* dwarf2read.c (read_variable): Update.
+	(dwarf2_fetch_die_loc_sect_off): Update.
+
+2019-06-17  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/24617
+	* common/pathstuff.c (child_path): Make sure parent_len > 0 before
+	accessing parent[parent_len - 1].
+
+2019-06-17  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+	PR gdb/24364
+	* dtrace-probe.c (dtrace_static_probe_ops::get_probe): Don't
+	call dtrace_process_dof with NULL dof.
+
+2019-06-16  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/24445
+	* contrib/gdb-add-index.sh: Update to handle dwz-m-ed executable.
+
+2019-06-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win)
+	(make_all_visible): Use address of member.
+
+2019-06-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.c (tui_clear_win_detail, init_win_info)
+	(tui_free_window, free_content, free_content_elements): Remove
+	unnecessary cast.
+	* tui/tui-windata.c (tui_display_all_data): Remove unnecessary
+	cast.
+	* tui/tui-regs.c (tui_show_register_group)
+	(tui_display_registers_from, tui_display_reg_element_at_line):
+	Remove unnecessary cast.
+
+2019-06-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* linux-nat.c (normal_mask): Delete.
+	(_initialize_linux_nat): Don't initialise normal_mask.
+
+2019-06-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/24445
+	* dwarf-index-write.h (write_psymtabs_to_index): Add
+	dwz_basename parameter.
+	* dwarf-index-write.c (write_gdbindex): Move file writing to
+	write_gdbindex_1.  Change return type void.
+	(assert_file_size): Move up, remove filename parameter.
+	(write_gdbindex_1): New function.
+	(write_debug_names): Change return type to void, call
+	assert_file_size.
+	(struct index_wip_file): New struct.
+	(write_psymtabs_to_index): Add dwz_basename parameter.  Move
+	file logic to index_wip_file.  Write index for dwz file if
+	needed.
+	(save_gdb_index_command): Pass basename of dwz file, if present.
+	* dwarf-index-cache.c (index_cache::store): Obtain and pass
+	build-id of dwz file, if present.
+	* dwarf2read.c (struct dwz_file): Move to dwarf2read.h.
+	(dwarf2_get_dwz_file): Likewise.
+	* dwarf2read.h (struct dwz_file): Move from dwarf2read.c.
+	(dwarf2_get_dwz_file): Likewise.
+
+2019-06-16  Tom Tromey  <tom@tromey.com>
+
+	* coffread.c (process_coff_symbol): Use xstrdup.
+	* value.c (create_internalvar): Use xstrdup.
+
+2019-06-16  Tom Tromey  <tom@tromey.com>
+
+	* valops.c (value_cast, value_slice): Remove unnecessary cast.
+	* breakpoint.c (stopin_command, stopat_command)
+	(until_break_command, decode_location_default): Remove unnecessary
+	cast.
+	* utils.c (subset_compare): Remove unnecessary cast.
+	* ada-lang.c (ada_update_initial_language): Remove unnecessary
+	cast.
+	* linespec.c (decode_line_with_last_displayed): Remove unnecessary
+	cast.
+	* infcmd.c (path_command): Remove unnecessary cast.
+	* coffread.c (decode_type): Remove unnecessary cast.
+	* xcoffread.c (read_xcoff_symtab): Remove unnecessary cast.
+	* mipsread.c (mipscoff_symfile_read): Remove unnecessary cast.
+	* tui/tui-stack.c (tui_show_locator_content)
+	(tui_show_frame_info): Remove unnecessary cast.
+	* tui/tui-win.c (tui_scroll_forward_command)
+	(tui_scroll_backward_command, tui_set_focus, tui_set_win_height)
+	(parse_scrolling_args): Remove unnecessary cast.
+	* tui/tui-data.c (init_win_info, tui_del_window)
+	(tui_free_window, tui_del_data_windows, tui_free_data_content)
+	(free_content_elements): Remove unnecessary cast.
+	* tui/tui-windata.c (tui_first_data_item_displayed): Remove
+	unnecessary cast.
+	* tui/tui-source.c (tui_set_source_content)
+	(tui_vertical_source_scroll): Remove unnecessary cast.
+	* tui/tui-layout.c (tui_default_win_height): Remove unnecessary
+	cast.
+	* tui/tui-io.c (tui_initialize_io): Remove unnecessary cast.
+	* tui/tui-regs.c (tui_display_registers_from)
+	(tui_display_register): Remove unnecessary cast.
+	* tui/tui-wingeneral.c (tui_refresh_win, tui_delete_win)
+	(tui_unhighlight_win, tui_highlight_win, tui_make_window)
+	(make_visible): Remove unnecessary cast.
+	* tui/tui-winsource.c (tui_erase_source_content)
+	(tui_update_breakpoint_info, tui_set_exec_info_content): Remove
+	unnecessary cast.
+	* ax-gdb.c (agent_command_1): Remove unnecessary cast.
+	* cli/cli-setshow.c (cmd_show_list): Remove unnecessary cast.
+	* stabsread.c (read_type, read_array_type, read_range_type):
+	Remove unnecessary cast.
+	* mdebugread.c (mdebug_build_psymtabs): Remove unnecessary cast.
+	(parse_symbol, parse_type, upgrade_type, parse_external)
+	(parse_partial_symbols, psymtab_to_symtab_1, cross_ref): Remove
+	unnecessary cast.
+	* gdb_bfd.c (gdb_bfd_map_section): Remove unnecessary cast.
+
+2019-06-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.c (tui_alloc_generic_win_info)
+	(tui_alloc_win_info, tui_add_content_elements): Remove NULL
+	checks.
+
+2019-06-16  Bernhard Heckel  <bernhard.heckel@intel.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-typeprint.c (f_print_type): Don't return early for not
+	associated or not allocated types.
+	(f_type_print_varspec_suffix): Add print_rank parameter and print
+	ranks of array types in case they dangling.
+	(f_type_print_base): Add print_rank parameter.
+
+2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention new MI commands.
+	* break-catch-throw.c (enum exception_event_kind): Move to
+	breakpoint.h.
+	(print_mention_exception_catchpoint): Output text as a single
+	message.
+	(catch_exception_command_1): Rename to...
+	(catch_exception_event): ...this, make non-static, update header
+	command, and change some parameter types.
+	(catch_catch_command): Update for changes to
+	catch_exception_command_1.
+	(catch_throw_command): Likewise.
+	(catch_rethrow_command): Likewise.
+	* breakpoint.c (enum exception_event_kind): Delete.
+	* breakpoint.h (enum exception_event_kind): Moved here from
+	break-catch-throw.c.
+	(catch_exception_event): Declare.
+	* mi/mi-cmd-catch.c (mi_cmd_catch_exception_event): New function.
+	(mi_cmd_catch_throw): New function.
+	(mi_cmd_catch_rethrow): New function.
+	(mi_cmd_catch_catch): New function.
+	* mi/mi-cmds.c (mi_cmds): Add 'catch-throw', 'catch-rethrow', and
+	'catch-catch' entries.
+	* mi/mi-cmds.h (mi_cmd_catch_throw): Declare.
+	(mi_cmd_catch_rethrow): Declare.
+	(mi_cmd_catch_catch): Declare.
+
+2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* annotate.c (annotate_source_line): Change return type to void,
+	update implementation to match.
+	* annotate.h (annotate_source_line): Change return type to void,
+	update header comment.
+	* stack.c (print_frame_info): Don't change what frame information
+	is printed based on whether annotations are on or not.
+
+2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* annotate.c: Add 'source.h' and 'objfiles.h' includes.
+	(annotate_source): Make static.
+	(annotate_source_line): Moved from source.c and renamed from
+	identify_source_line.  Update the return type.
+	* annotate.h (annotate_source): Delete declaration.
+	(annotate_source_line): Declaration moved from source.h, and
+	renamed from identify_source_line.  Return type updated.
+	* source.c (identify_source_line): Moved to annotate.c and renamed
+	to annotate_source_line.
+	(info_line_command): Remove check of annotation_level.
+	* source.h (identify_source_line): Move declaration to annotate.h
+	and rename to annotate_source_line.
+	* stack.c: Add 'annotate.h' include.
+	(print_frame_info): Remove check of annotation_level before
+	calling annotate_source_line.
+
+2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* source-cache.c (source_cache::get_plain_source_lines): Use
+	open_source_file_with_line_charpos instead of just
+	open_source_file, remove call to find_source_lines.
+	(source_cache::get_source_lines): Likewise.
+	* source.c (find_source_lines): Make static.
+	(get_filename_and_charpos): Renamed into...
+	(open_source_file_with_line_charpos): ..this along with changes to
+	return a scoped_fd, and some other minor clean ups.
+	(identify_source_line): Use open_source_file_with_line_charpos.
+	(search_command_helper): Use open_source_file_with_line_charpos
+	instead of just open_source_file, remove call to
+	find_source_lines.
+	* source.h (open_source_file_with_line_charpos): Declare new
+	function.
+	(find_source_lines): Delete declaration.
+
+2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* source.c (get_filename_and_charpos): Remove fullname
+	parameter.
+	(identify_source_line): Update call to get_filename_and_charpos.
+
+2019-06-14  Tom Tromey  <tromey@adacore.com>
+
+	PR gdb/24502:
+	* ui-style.h (skip_ansi_escape): Update comment.
+	* ui-file.h (class no_terminal_escape_file): New class.
+	* ui-file.c (no_terminal_escape_file::write)
+	(no_terminal_escape_file::puts): New methods.
+	* cli/cli-logging.c (handle_redirections): Use
+	no_terminal_escape_file.
+
+2019-06-14  Tom Tromey  <tromey@adacore.com>
+
+	* NEWS: Move convenience variable news above Python news.
+
+2019-06-14  Tom Tromey  <tom@tromey.com>
+
+	* gnulib: Move directory to top-level.
+	* configure.ac: Don't configure gnulib.
+	* configure: Rebuild.
+	* common/common-defs.h: Use new path to gnulib.
+	* Makefile.in (GNULIB_BUILDDIR): Now ../gnulib.
+	(GNULIB_H): Remove.
+	(INCGNU): Look in new gnulib location.
+	(HFILES_NO_SRCDIR): Remove gnulib files.
+	(SUBDIR, REQUIRED_SUBDIRS): Remove gnulib.
+	(generated_files): Remove GNULIB_H.
+	($(LIBGNU), all-lib): Remove targets.
+	(distclean): Don't mention GNULIB_BUILDDIR.
+	($(GNULIB_BUILDDIR)/Makefile): Remove target.
+
+2019-06-14  Tom Tromey  <tromey@adacore.com>
+
+	* symfile.c (add_symbol_file_command): Remove obsolete comment.
+	Warn if symbol file does not provide any symbols.
+
+2019-06-14  Tom Tromey  <tromey@adacore.com>
+
+	* source.c (find_and_open_source): Respect basenames_may_differ.
+
+2019-06-14  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* annotate.c (annotate_breakpoints_invalid): Make use of
+	scoped_restore_terminal_state.
+	(annotate_frames_invalid): Likewise.
+
+2019-06-14  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_evaluate_subexp) <case BINOP_ASSIGN>: Always
+	allow assignment to an internalvar.
+
+2019-06-14  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lex.l: Allow "_" in attribute names.
+
+2019-06-14  Tom Tromey  <tromey@adacore.com>
+
+	PR gdb/24653:
+	* regcache.c (registers_changed): Don't call alloca.
+	* top.c (execute_command): Don't call alloca.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* cli/cli-setshow.c (cli/cli-setshow.c): New parameter
+	'expression'.  When parsing an expression, error out if there's
+	junk after "unlimited".
+	(parse_cli_var_uinteger, parse_cli_var_zuinteger_unlimited)
+	(do_set_command): Adjust calls to is_unlimited_literal.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* compile/compile.c (make_compile_options_def_group): Add braces
+	around array_view initializer.
+	* thread.c (make_thread_apply_all_options_def_group)
+	(make_thread_apply_all_options_def_group): Likewise.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* NEWS (New commands): Mention "maint test-options
+	require-delimiter", "maint test-options unknown-is-error", "maint
+	test-options unknown-is-operand" and "maint show
+	test-options-completion-result".
+	(New command options, command completion): New section.
+	(Completion improvements): New section.
+	Mention that you can abbreviate "unlimited".
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* cli/cli-utils.c (parse_flags, parse_flags_qcs): Delete.
+	* cli/cli-utils.h (parse_flags, parse_flags_qcs): Delete.
+	* unittests/cli-utils-selftests.c (test_parse_flags)
+	(test_parse_flags_qcs): Delete.
+	(test_cli_utils): Don't call deleted functions.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* thread.c: Include "cli/cli-option.h".
+	(tp_array_compar_ascending): Global.
+	(tp_array_compar): Delete function.
+	(tp_array_compar_ascending, tp_array_compar_descending): New
+	functions.
+	(ascending_option_def, qcs_flag_option_def)
+	(thr_qcs_flags_option_defs)
+	(make_thread_apply_all_options_def_group)
+	(make_thread_apply_options_def_group): New.
+	(thread_apply_all_command): Use gdb::option::process_options.
+	(thread_apply_command_completer)
+	(thread_apply_all_command_completer): New.
+	(thread_apply_command): Use gdb::option::process_options.
+	(_initialize_thread): Delete THREAD_APPLY_FLAGS_HELP, replace it
+	with a new THREAD_APPLY_OPTION_HELP.  Use gdb::option::build_help
+	to generate help text of "thread apply".  Adjust "taas"'s help.
+	* tid-parse.c (tid_range_parser::in_thread_range): New method.
+	* tid-parse.h (tid_range_parser::in_thread_range): New method.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* thread.c (thread_apply_command): Check for invalid TID with
+	isdigit instead of !isalpha.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* cli/cli-utils.c (parse_flags_qcs): Use validate_flags_qcs.
+	(validate_flags_qcs): New.
+	* cli/cli-utils.h (struct qcs_flags): Change field types to int.
+	(validate_flags_qcs): Declare.
+	* stack.c (qcs_flag_option_def, fr_qcs_flags_option_defs): New.
+	(make_frame_apply_options_def_group): New.
+	(frame_apply_command_count): Process options with
+	gdb::option::process_options.
+	(frame_apply_completer): New.
+	(frame_apply_level_completer, frame_apply_all_completer)
+	(frame_apply_completer): New.
+	(_initialize_stack): Update help of "frame apply", "frame apply
+	level", "frame apply all" and "faas" to mention supported options
+	and install command completers.
+	* stack.h (frame_apply_all_completer): Declare.
+	* thread.c: Include "stack.h".
+	(tfaas_command): Add "--".
+	(_initialize_thread): Update help "tfaas" to mention supported
+	options and install command completer.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* completer.c (complete_nested_command_line): New.
+	(gdb_completion_word_break_characters_throw): Add assertion.
+	* completer.h (complete_nested_command_line): Declare.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* stack.c (parse_backtrace_qualifiers): New.
+	(backtrace_command): Use it.
+	(backtrace_command_completer): Complete on qualifiers.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* frame.c: Include "cli/cli-option.h.
+	(user_set_backtrace_options): New.
+	(backtrace_past_main, backtrace_past_entry, backtrace_limit):
+	Delete.
+	(get_prev_frame): Adjust.
+	(boolean_option_def, uinteger_option_def)
+	(set_backtrace_option_defs): New.
+	(_initialize_frame): Adjust and use
+	gdb::option::add_setshow_cmds_for_options to install "set
+	backtrace past-main" and "set backtrace past-entry".
+	* frame.h: Include "cli/cli-option.h".
+	(struct frame_print_options): Forward declare.
+	(print_frame_arguments_all, print_frame_arguments_scalars)
+	(print_frame_arguments_none): Declare.
+	(print_entry_values): Delete declaration.
+	(struct frame_print_options, user_frame_print_options): New.
+	(struct set_backtrace_options): New.
+	(set_backtrace_option_defs, user_set_backtrace_options): Declare.
+	* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames)
+	(mi_cmd_stack_list_locals, mi_cmd_stack_list_args)
+	(mi_cmd_stack_list_variables): Pass down USER_FRAME_PRINT_OPTIONS.
+	(list_args_or_locals): Add frame_print_options parameter.
+	(mi_cmd_stack_info_frame): Pass down USER_FRAME_PRINT_OPTIONS.
+	* python/py-framefilter.c (enumerate_args): Pass down
+	USER_FRAME_PRINT_OPTIONS.
+	* stack.c: Include "cli/cli-option.h".
+	(print_frame_arguments_all, print_frame_arguments_scalars)
+	(print_frame_arguments_none): Declare.
+	(print_raw_frame_arguments, print_entry_values): Delete.
+	(user_frame_print_options): New.
+	(boolean_option_def, enum_option_def, frame_print_option_defs):
+	New.
+	(struct backtrace_cmd_options): New.
+	(bt_flag_option_def): New.
+	(backtrace_command_option_defs): New.
+	(print_stack_frame): Pass down USER_FRAME_PRINT_OPTIONS.
+	(print_frame_arg, read_frame_arg, print_frame_args)
+	(print_frame_info, print_frame): Add frame_print_options parameter
+	and use it.
+	(info_frame_command_core): Pass down USER_FRAME_PRINT_OPTIONS.
+	(backtrace_command_1): Add frame_print_options and
+	backtrace_cmd_options parameters and use them.
+	(make_backtrace_options_def_group): New.
+	(backtrace_command): Process command options with
+	gdb::option::process_options.
+	(backtrace_command_completer): New.
+	(_initialize_stack): Extend "backtrace"'s help to mention
+	supported options.  Install completer for "backtrace".
+	Install some settings commands with add_setshow_cmds_for_options.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* NEWS (Changed commands): Mention set/show print raw-frame-arguments,
+	and that "set/show print raw frame-arguments" are now deprecated.
+
+	* cli/cli-decode.c (add_setshow_boolean_cmd): Now returns the
+	command.
+	* command.h (add_setshow_boolean_cmd): Return cmd_list_element *.
+	* stack.c (_initialize_stack): Install "set/show print
+	raw-frame-arguments", and deprecate "set/show print raw
+	frame-arguments".
+	* valprint.c (_initialize_valprint): Deprecate "set/show print
+	raw".
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* compile/compile.c (struct compile_options): New.
+	(compile_flag_option_def, compile_command_option_defs)
+	(make_compile_options_def_group): New.
+	(compile_file_command): Handle options with
+	gdb::option::process_options.
+	(compile_file_command_completer): New function.
+	(compile_code_command): Handle options with
+	gdb::option::process_options.
+	(compile_code_command_completer): New function.
+	(_initialize_compiler): Install completers for "compile code" and
+	"compile file".  Mention available options in "compile code" and
+	"compile code"'s help.
+	* completer.c (advance_to_completion_word): New, factored out from
+	...
+	(advance_to_expression_complete_word_point): ... this.
+	(advance_to_filename_complete_word_point): New.
+	* completer.h (advance_to_filename_complete_word_point): New
+	declaration.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* compile/compile.c: Include "cli/cli-option.h".
+	(compile_print_value): Scope data pointer is now a
+	value_print_options pointer; adjust.
+	(compile_print_command): Process options.  Scope data pointer is
+	now a value_print_options pointer; adjust.
+	(_initialize_compile): Update "compile print"'s help to include
+	supported options.  Install a completer for "compile print".
+	* cp-valprint.c (show_vtblprint, show_objectprint)
+	(show_static_field_print): Delete.
+	(_initialize_cp_valprint): Don't install "set print
+	static-members", "set print vtbl", "set print object" here.
+	* printcmd.c: Include "cli/cli-option.h" and
+	"common/gdb_optional.h".
+	(print_command_parse_format): Rework to fill in a
+	value_print_options instead of a format_data.
+	(print_value): Change parameter type from format_data pointer to
+	value_print_options reference.  Adjust.
+	(print_command_1): Process options.  Adjust to pass down a
+	value_print_options.
+	(print_command_completer): New.
+	(_initialize_printcmd): Install print_command_completer as
+	handle_brkchars completer for the "print" command.  Update
+	"print"'s help to include supported options.
+	* valprint.c: Include "cli/cli-option.h".
+	(show_vtblprint, show_objectprint, show_static_field_print): Moved
+	here from cp-valprint.c.
+	(boolean_option_def, uinteger_option_def)
+	(value_print_option_defs, make_value_print_options_def_group):
+	New.  Use gdb::option::add_setshow_cmds_for_options to install
+	"set print elements", "set print null-stop", "set print repeats",
+	"set print pretty", "set print union", "set print array", "set
+	print address", "set print symbol", "set print array-indexes".
+	* valprint.h: Include <string> and "cli/cli-option.h".
+	(make_value_print_options_def_group): Declare.
+	(print_value): Change parameter type from format_data pointer to
+	value_print_options reference.
+	(print_command_completer): Declare.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (SUBDIR_CLI_SRCS): Add cli/cli-option.c.
+	(COMMON_SFILES): Add maint-test-settings.c.
+	* cli/cli-decode.c (boolean_enums): New global, factored out from
+	...
+	(add_setshow_boolean_cmd): ... here.
+	* cli/cli-decode.h (boolean_enums): Declare.
+	* cli/cli-option.c: New file.
+	* cli/cli-option.h: New file.
+	* cli/cli-setshow.c (parse_cli_boolean_value(const char **)): New,
+	factored out from ...
+	(parse_cli_boolean_value(const char *)): ... this.
+	(is_unlimited_literal): Change parameter type to pointer to
+	pointer.  Adjust and advance ARG pointer.
+	(parse_cli_var_uinteger, parse_cli_var_zuinteger_unlimited)
+	(parse_cli_var_enum): New, factored out from ...
+	(do_set_command): ... this.  Adjust.
+	* cli/cli-setshow.h (parse_cli_boolean_value)
+	(parse_cli_var_uinteger, parse_cli_var_zuinteger_unlimited)
+	(parse_cli_var_enum): Declare.
+	* cli/cli-utils.c: Include "cli/cli-option.h".
+	(get_ulongest): New.
+	* cli/cli-utils.h (get_ulongest): Declare.
+	(check_for_argument): New overloads.
+	* maint-test-options.c: New file.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* cli/cli-utils.c (number_or_range_parser::get_number): Do not
+	parse a range if "-" is at the end of the string.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* cli/cli-setshow.c (parse_auto_binary_operation)
+	(parse_cli_boolean_value): Don't allow "o".
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (COMMON_SFILES): Add maint-test-settings.c.
+	* NEWS: Mention maint test-settings KIND.
+	* maint-test-settings.c: New file.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* cli/cli-decode.c (add_setshow_cmd_full): Remove "show"
+	completer.
+	(add_setshow_string_cmd, add_setshow_string_noescape_cmd): Remove
+	"set" completers.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* cli/cli-setshow.c (do_set_command) <var_enum>: Detect junk
+	after item.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* cli/cli-setshow.c (is_unlimited_literal): Allow abbreviations.
+
+2019-06-13  Pedro Alves <palves@redhat.com>
+
+	* ax-gdb.c (agent_command_1): Remove skip_spaces call.
+	* breakpoint.c (watch_maybe_just_location): Remove skip_spaces
+	call.
+	* cli/cli-cmds.c (apropos_command): Remove skip_spaces call.
+	* cli/cli-utils.c (extract_info_print_args): Remove skip_spaces
+	calls.
+	(check_for_argument): Skip spaces after argument.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* thread.c (thread_apply_command): Adjust TID parsing.
+	* tid-parse.c (tid_range_parser::finished): Ensure parsing end is
+	detected before end of string.
+	(tid_is_in_list): Error out if LIST is invalid.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* completer.c (complete_line_internal_1): Rewind completion word
+	point.
+	(completion_tracker::advance_custom_word_point_by): Change
+	parameter type to int.
+	* completer.h (completion_tracker::advance_custom_word_point_by):
+	Likewise.
+
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+	* completer.c (advance_to_completion_word): Handle delimiters.
+
+2019-06-11  Bernhard Heckel  <bernhard.heckel@intel.com>
+
+	* dwarf2read.c (add_partial_symbol): Skip nameless modules.
+
+2019-06-11  Tom Tromey  <tom@tromey.com>
+
+	* common/common-utils.c (xmalloc, xrealloc, xcalloc)
+	(xmalloc_failed): Move to alloc.c.
+	* alloc.c: New file.
+	* Makefile.in (COMMON_SFILES): Add alloc.c.
+
+2019-06-11  Tom Tromey  <tom@tromey.com>
+
+	* nat/linux-waitpid.c: Don't include server.h.
+	(linux_debug): Remove.
+	(my_waitpid): Update.
+
+2019-06-11  Tom Tromey  <tromey@adacore.com>
+
+	* infcall.c (_initialize_infcall): Remove trailing newline from
+	help.
+	* user-regs.c (_initialize_user_regs): Remove trailing newline
+	from help.
+	* typeprint.c (_initialize_typeprint): Remove trailing newline
+	from help.
+	* reverse.c (_initialize_reverse): Remove trailing newlines from
+	help.
+	* tracepoint.c (_initialize_tracepoint): Remove trailing newlines
+	from help.
+	* language.c (add_set_language_command): Remove trailing newline
+	from help.
+	* infcmd.c (_initialize_infcmd): Remove trailing newlines from
+	help.
+	* disasm.c (_initialize_disasm): Remove trailing newline from
+	help.
+	* top.c (init_main): Remove trailing newline from help.
+	* interps.c (_initialize_interpreter): Remove trailing newline
+	from help.
+	* btrace.c (_initialize_btrace): Remove trailing newlines from
+	help.
+	* breakpoint.c (_initialize_breakpoint): Remove trailing newline
+	from help.
+	* python/python.c (_initialize_python): Remove trailing newline
+	from help.
+	* spu-tdep.c (_initialize_spu_tdep): Remove trailing newlines from
+	help.
+	* tui/tui-win.c (_initialize_tui_win): Remove trailing newlines
+	from help.  Reformat some text.
+	* tui/tui-stack.c (_initialize_tui_stack): Remove trailing newline
+	from help.
+	* tui/tui-layout.c (_initialize_tui_layout): Remove trailing
+	newline from help.
+
+2019-06-11  Tom Tromey  <tromey@adacore.com>
+
+	* darwin-nat.c (darwin_decode_exception_message)
+	(darwin_decode_message, darwin_nat_target::kill): Fix shadowing.
+
+2019-06-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* valops.c (value_slice): Check for not allocated or not
+	associated values.
+
+2019-06-10  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/24618
+	* dwarf2read.c (struct mapped_index::symbol_name_slot_invalid): Make
+	sure an empty slot (defined by a 32-bit zero pair) is recognized as
+	invalid.
+
+2019-06-10  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/24611
+	* linespec.c (linespec_lexer_lex_string): Remove incorrect
+	"++(PARSER_STREAM (parser))" for "[abi"-prefixed colon.  Add assert.
+
+2019-06-10  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/24545
+	* symtab.c (struct demangled_name_entry): Add language field.
+	(symbol_set_names):  Revert "[gdb/symtab] Fix language of duplicate
+	static minimal symbol".  Set and use language field.
+
+2019-06-10  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (_initialize_ada_language): Update help text.
+
+2019-06-10  Tom Tromey  <tromey@adacore.com>
+
+	* m32c-tdep.c (m32c_m16c_address_to_pointer): Don't end warning
+	with a newline.
+	* guile/guile.c (handle_boot_error): Don't end warning with a
+	newline.
+	* cli/cli-cmds.c (exit_status_set_internal_vars): Don't end
+	warning with a newline.
+	* s12z-tdep.c (s12z_skip_prologue): Don't end warning with a
+	newline.
+	(s12z_frame_cache): Likewise.
+	* dwarf-index-cache.c (index_cache::store): Don't end warning with
+	a newline.
+	* solib-svr4.c (disable_probes_interface): Don't end warning with
+	a newline.
+	* nat/fork-inferior.c (fork_inferior): Don't end warning with a
+	newline.
+	* python/python.c (do_finish_initialization): Don't end warning
+	with a newline.
+
+2019-06-10  Tom Tromey  <tom@tromey.com>
+
+	* python/py-breakpoint.c (gdbpy_breakpoint_created)
+	(gdbpy_breakpoint_deleted, gdbpy_breakpoint_modified): Use
+	gdbpy_enter.
+
+2019-06-10  Tom Tromey  <tromey@adacore.com>
+
+	* elfread.c (elf_read_minimal_symbols): Don't set the dbx objfile
+	data.
+	(elf_new_init): Don't call stabsread_new_init.
+	* dbxread.c (coffstab_build_psymtabs): Set dbx objfile data.
+	(elfstab_build_psymtabs): Likewise.  Call stabsread_new_init.
+	* coffread.c (coff_symfile_init): Don't set the dbx objfile data.
+
+2019-06-10  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/16264
+	PR symtab/24517
+	* dwarf2read.c (read_func_scope): Handle DW_AT_main_subprogram.
+
+2019-06-06  Ð ÑƒÑ�Ð»Ð°Ð½ Ð˜Ð¶Ð±ÑƒÐ»Ð°Ñ‚Ð¾Ð² <lrn1986@gmail.com>
+
+	* source.c (find_and_open_source): Also rewrite relative file
+	names.
+
+2019-04-26  Amos Bird  <amosbird@gmail.com>
+
+	* annotate.c (annotate_thread_exited): Add "thread-exited"
+	annotation.
+
+2019-06-06  Tom Tromey  <tromey@adacore.com>
+
+	* maint.h (class scoped_command_stats): Use
+	DISABLE_COPY_AND_ASSIGN.
+	<print_time>: New method.
+	* maint.c (scoped_command_stats, ~scoped_command_stats): Call
+	print_time.
+	(scoped_command_stats::print_time): New method.
+
+2019-06-05  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_insn::decode): Gracefully ignore
+	instructions of lengths 6 or 8 bytes.
+
+2019-06-04  Pedro Alves  <palves@redhat.com>
+
+	* common/gdb_unique_ptr.h (make_unique_xstrdup): New.
+
+	* ada-lang.c (catch_ada_completer): Use make_unique_xstrdup.
+	* breakpoint.c (condition_completer): Likewise.
+	* cli/cli-dump.c (scan_expression): Likewise.
+	* common/filestuff.c (mkdir_recursive): Likewise.
+	* common/gdb_tilde_expand.c (gdb_tilde_expand_up)
+	* common/pathstuff.c (gdb_realpath, gdb_realpath_keepfile)
+	(gdb_abspath): Likewise.
+	* compile/compile-cplus-types.c
+	(compile_cplus_instance::decl_name): Likewise.
+	* completer.c (complete_explicit_location):
+	(signal_completer, reg_or_group_completer_1): Likewise.
+	* cp-support.c (cp_remove_params_if_any): Likewise.
+	* fbsd-tdep.c (fbsd_core_vnode_path): Likewise.
+	* guile/scm-safe-call.c (gdbscm_safe_eval_string): Likewise.
+	* infcmd.c (strip_bg_char): Likewise.
+	* linespec.c (copy_token_string): Likewise.
+	* mi/mi-main.c (output_cores): Likewise.
+	* psymtab.c (psymtab_search_name):
+	* symfile.c (test_set_ext_lang_command): Likewise.
+	* target.c (target_fileio_read_stralloc): Likewise.
+	* tui/tui-regs.c (tui_reggroup_completer): Likewise.
+	* value.c (complete_internalvar): Likewise.
+
+2019-06-04  Christian Biesinger  <cbiesinger@google.com>
+
+	Add objfile property to gdb.Type.
+	* NEWS: Mention Python API addition.
+	* python/py-type.c (typy_get_objfile): New method.
+
+2019-06-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Mention the new set|show style [title|highlight].
+	Mention changes to "show style", "help" and "apropos".
+
+2019-06-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-decode.h (apropos_cmd): Add verbose argument.
+	* cli/cli-decode.c (apropos_cmd): Likewise.  Use print_doc_of_command
+	instead of print_help_for_command.
+	(print_doc_of_command): New function.
+	(help_list): Add 'apropos -v word' suggestion.
+	(print_help_for_command): Style the command name using title style.
+	* cli/cli-cmds.c (apropos_command): Parse optional -v flag.
+	(_initialize_cli_cmds): Describe -v in apropos_command help.
+
+2019-06-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-style.h (cli_style_option): Add name in constructor,
+	add m_name class member, add constructor with intensity,
+	add name class function.
+	(cli_style_option::add_setshow_commands): Remove name argument.
+	(highlight_style, title_style): New styles.
+	* cli/cli-style.c (do_show): New function that shows a style
+	characteristic styling the style name with itself.
+	(set_style_name): New function.
+	(STYLE_ADD_SETSHOW_COMMANDS): Remove NAME arguments.
+	Update all callers according to the changes in cli/cli-style.h.
+	* utils.h (fputs_highlighted): New function.
+	* utils.c (fputs_highlighted): Likewise.
+
+2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Mention new pipe command and new convenience variables.
+
+2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-cmds.c (pipe_command): New function.
+	(_initialize_cli_cmds): Call add_com for pipe_command.
+	Define | as an alias for pipe.
+	(exit_status_set_internal_vars): New function.
+	(shell_escape): Call exit_status_set_internal_vars.
+	cli/cli-decode.c (find_command_name_length): Recognize | as
+	a single character command.
+
+2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdbcmd.h (execute_command_to_ui_file): New declaration.
+	top.c (execute_command_to_ui_file): New function, mostly a copy
+	of execute_command_to_string.
+	(execute_command_to_string): Implement by calling
+	execute_command_to_ui_file.
+
+2019-05-31  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* top.h (saved_command_line): Remove declaration.
+	* top.c (previous_saved_command_line, previous_repeat_arguments):
+	New variables.
+	(saved_command_line): Make static, define together with other
+	'repeat variables'.
+	(dont_repeat): Clear repeat_arguments.
+	(repeat_previous, get_saved_command_line, save_command_line):
+	New functions.
+	(gdb_init): Initialize saved_command_line
+	and previous_saved_command_line.
+	* main.c (captured_main_1): Remove saved_command_line initialization.
+	* event-top.c (handle_line_of_input): Update to use
+	the new 'repeat' related functions instead of direct access to
+	saved_command_line.
+	* command.h (repeat_previous, get_saved_command_line,
+	save_command_line): New declarations.
+	(dont_repeat): Add comment.
+
+2019-05-30  Tom Tromey  <tromey@adacore.com>
+
+	* gdbtypes.h (struct range_bounds) <flag_upper_bound_is_count>:
+	Fix comment.
+	(TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED): Rewrite comment.
+
+2019-05-30  Jan Vrany  <jan.vrany@fit.cvut.cz>
+
+	PR cli/24587
+	* completer.c (complete): Initialize variable word.
+
+2019-05-29  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192
+	Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1715008
+	* dwarf2read.c (dwarf_decode_macro_bytes): Move check to see if
+	'body' is NULL to the outter 'if', protecting the '!is_define'
+	situation as well.
+
+2019-05-29  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (partial_die_parent_scope): Call dwarf_tag_name.
+	(dwarf_unknown): New function.
+	(dwarf_tag_name, dwarf_attr_name, dwarf_form_name)
+	(dwarf_type_encoding_name): Use dwarf_unknown.
+
+2019-05-29  Tom Tromey  <tromey@adacore.com>
+
+	PR c++/20020:
+	* cp-valprint.c (cp_print_value_fields): Call
+	cp_print_static_field inside "try".
+
+2019-05-29  Tom Tromey  <tromey@adacore.com>
+
+	* inflow.c (struct terminal_info): Add default operator=.
+	* configure: Rebuild.
+	* warning.m4 (AM_GDB_WARNINGS): Add -Wdeprecated-copy,
+	-Wdeprecated-copy-dtor, -Wredundant-move.
+
+2019-05-29  Tom Tromey  <tromey@adacore.com>
+
+	* NEWS: Add entry.
+	* infcmd.c (print_return_value_1): Handle finish_print
+	option.
+	(show_print_finish): New function.
+	(_initialize_infcmd): Add "set/show print finish" commands.
+	* valprint.c (user_print_options): Initialize new member.
+	* valprint.h (struct value_print_options) <finish_print>: New
+	member.
+
+2019-05-28  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_remove_Xbn_suffix)
+	(find_old_style_renaming_symbol)
+	(parse_old_style_renaming): Remove.
+	(ada_find_renaming_symbol): Don't call
+	find_old_style_renaming_symbol.
+	(ada_is_renaming_symbol): Rename from
+	ada_find_renaming_symbol.  Remove "block" parameter.  Return
+	bool.  Now static.
+	(ada_read_var_value): Update and simplify.
+	* ada-exp.y (write_var_or_type): Remove old code.
+
+2019-05-28  Alan Hayward  <alan.hayward@arm.com>
+
+	PR gdb/25010
+	* event-top.c: Remove include comment.
+	* inflow.c (class scoped_ignore_sigttou): Move from here...
+	* inflow.h (class scoped_ignore_sigttou): ...to here.
+	* ser-unix.c (hardwire_drain_output): Block SIGTTOU during drain.
+	* top.c:  Remove include comment.
+
+2019-05-27  Tom Tromey  <tom@tromey.com>
+
+	* NEWS: Fix typo.
+
+2019-05-22  Tom Tromey  <tromey@adacore.com>
+
+	* target.c (target_follow_exec): Constify parameter.
+	* target-delegates.c: Rebuild.
+	* remote.c (remote_target::follow_exec): Constify parameter.
+	* infrun.c (follow_exec): Constify parameter.
+	* target.h (struct target_ops) <follow_exec>: Constify parameter.
+	(target_follow_exec): Likewise.
+
+2019-05-22  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-tdep.c (aarch64_execute_dwarf_cfa_vendor_op): Treat
+	DW_CFA_AARCH64_negate_ra_state as nop on non pauth targets.
+
+2019-05-22  Alan Hayward  <alan.hayward@arm.com>
+
+	* NEWS: Add debugredirect and testsuite sections.
+
+2019-05-22  Simon Cook  <simon.cook@embecosm.com>
+
+	* riscv-tdep.c (riscv_gdbarch_init): Support determining flen from
+	target descriptions using exclusively floating point register name
+	aliases.
+
+2019-05-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR gdb/18644:
+	* f-lang.c (build_fortran_types): Handle the case where
+	gdbarch_floatformat_for_type returns a nullptr.
+
+2019-05-21  Tom de Vries  <tdevries@suse.de>
+
+	PR cli/24587
+	* cli/cli-cmds.c (complete_command): Fix use of unitialized variable.
+
+2019-05-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR gdb/18644:
+	* f-lang.c (build_fortran_types): Use floatformats_ia64_quad for
+	16-byte floats.
+	* i386-tdep.c (i386_floatformat_for_type): Use
+	floatformats_ia64_quad for the 16-byte floating point component
+	within a fortran 32-byte complex number.
+
+2019-05-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (struct cu_partial_die_info): Add constructor,
+	delete default constructor.
+	(find_partial_die): Update to return const struct.
+	(partial_die_parent_scope): Move variable declaration into scope
+	of its use and change its type to auto.
+	(guess_partial_die_structure_name): Likewise.
+	(partial_die_info::fixup): Likewise.
+
+2019-05-17  Tom Tromey  <tromey@adacore.com>
+
+	* source.c (find_and_open_source): Remove cast.
+
+2019-05-17  Tom Tromey  <tromey@adacore.com>
+
+	* annotate.c (annotate_source): Make "filename" const.
+	* annotate.h (annotate_source): Use const.
+
+2019-05-17  Alan Hayward  <alan.hayward@arm.com>
+
+	* disasm.c (set_disassembler_options): Send errors to stderr.
+
+2019-05-17  Alan Hayward  <alan.hayward@arm.com>
+
+	* cli/cli-interp.c (struct saved_output_files): Add saved entry.
+	(cli_interp_base::set_logging): Check debug_redirect.
+	* cli/cli-interp.h (set_logging): Add debug_redirect parameter.
+	* cli/cli-logging.c (debug_redirect): Add static variable.
+	(pop_output_files): Add default param.
+	(handle_redirections): Print debug setting.
+	(show_logging_command): Likewise.
+	(_initialize_cli_logging): Add debugredirect command.
+	* interps.c (current_interp_set_logging): Add debug_redirect
+	parameter.
+	* interps.h (set_logging): Add debug_redirect parameter.
+	(current_interp_set_logging): Likewise.
+	* mi/mi-common.h: Likewise.
+	* mi/mi-interp.c (mi_interp::set_logging): Likewise.
+
+2019-05-17  Alan Hayward  <alan.hayward@arm.com>
+	    Tom Tromey  <tromey@adacore.com>
+
+	* cli/cli-interp.c (cli_interp_base::set_logging): Create tee_file
+	directly.
+	* cli/cli-interp.h (make_logging_output): Remove declaration.
+	* cli/cli-logging.c (make_logging_output): Remove function.
+	* mi/mi-interp.c (mi_interp::set_logging): Create tee_file
+	directly.
+	* ui-file.c (tee_file::tee_file): Remove bools.
+	(tee_file::~tee_file): Remove deletes.
+	* ui-file.h (tee_file): Remove bools.
+
+2019-01-28  Jan Vrany  <jan.vrany@fit.cvut.cz>
+
+	* mi/mi-cmds.h (mi_cmd_complete): New function.
+	* mi/mi-main.c (mi_cmd_complete): Likewise.
+	* mi/mi-cmds.c: Define new MI command -complete.
+	* NEWS: Mention new -complete command.
+
+2019-01-24  Jan Vrany  <jan.vrany@fit.cvut.cz>
+
+	* completer.h (complete): New function.
+	* completer.c (complete): Likewise.
+	* cli/cli-cmds.c: (complete_command): Update to use new complete()
+	function defined in completer.h.
+
+2019-05-17  Jan Vrany  <jan.vrany@fit.cvut.cz>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2019-05-17  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/24094
+	* dwarf2read.c (struct cu_partial_die_info): New struct.
+	(find_partial_die): Return cu_partial_die_info.
+	(partial_die_parent_scope, guess_partial_die_structure_name)
+	(partial_die_info::fixup): Handle new return type of find_partial_die.
+
+2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	PR breakpoints/24541
+	* stap-probe.c (stap_parse_register_operand): Make "regname" an
+	"std::string", simplifying the algorithm.
+
+2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* stap-probe.c (handle_stap_probe): Fix complaint formatting.
+	(stap_static_probe_ops::get_probes): Likewise.
+
+2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* stap-probe.c (stap_parse_register_operand): Make "if (*p->arg ==
+	'-')" and "else if".
+	(stap_parse_single_operand): Join checks for
+	"gdbarch_stap_parse_special_token_p" and
+	"gdbarch_stap_parse_special_token" in the same "if" statement.
+	Invert check when verifying for operation on register
+	displacement.
+
+2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* stap-probe.c (stap_get_opcode): Update comment.
+	(stap_get_expected_argument_type): Likewise.
+	(handle_stap_probe): Likewise.
+
+2019-05-16  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* i386-tdep.c (i386_stap_parse_special_token_triplet): Change
+	return type to 'bool'.  Adjust comment.  Use 'bool' when
+	appropriate.
+	(i386_stap_parse_special_token_three_arg_disp): Likewise.
+	* stap-probe.c (stap_parse_argument_1): Likewise.
+	(stap_is_operator): Likewise.
+	(stap_is_generic_prefix): Likewise.
+	(stap_is_register_prefix): Likewise.
+	(stap_is_register_indirection_prefix): Likewise.
+	(stap_is_integer_prefix): Likewise.
+	(stap_generic_check_suffix): Likewise.
+	(stap_check_integer_suffix): Likewise.
+	(stap_check_register_suffix): Likewise.
+	(stap_check_register_indirection_suffix): Likewise.
+	(stap_parse_register_operand): Likewise.
+	(stap_parse_single_operand): Likewise.
+	(stap_parse_argument_1): Likewise.
+	(stap_probe::get_argument_count): Likewise.
+	(stap_is_operator): Likewise.
+
+2019-05-16  Tom Tromey  <tromey@adacore.com>
+
+	* darwin-nat.c (thread_info_from_private_thread_info): Add struct
+	keyword to foreach.
+
+2019-05-15  Simon Marchi  <simon.marchi@efficios.com>
+
+	* linux-thread-db.c (try_thread_db_load_1): Change return type
+	to bool.
+	(try_thread_db_load): Likewise.
+	(try_thread_db_load_from_pdir_1): Likewise.
+	(try_thread_db_load_from_pdir): Likewise.
+	(try_thread_db_load_from_sdir): Likewise.
+	(try_thread_db_load_from_dir): Likewise.
+	(thread_db_load_search): Likewise.
+	(has_libpthread): Likewise.
+	(thread_db_load): Likewise.
+
+2019-05-15  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192
+	* dwarf2read.c (parse_macro_definition): Check whether 'body' is
+	NULL, and complain/return if that's the case.
+
+2019-05-15  John Darrington <john@darrington.wattle.id.au>
+
+	* s12z-tdep.c (push_pull_get_stack_adjustment): New function.
+	(advance, posn, abstract_read_memory): New functions.
+	[struct mem_read_abstraction]: New struct.
+	(s12z_frame_cache): Use opcodes API to interpret stack frame code.
+
+2019-05-14  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (coerce_unspec_val_to_type): Only set address when
+	value is not lval_memory.
+
+2019-05-14  Tom Tromey  <tromey@adacore.com>
+
+	* solib.c (info_sharedlibrary_command): Style the file name.
+
+2019-05-14  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-tdep.c (aarch64_vnh_type): Add half view.
+	(aarch64_vnv_type): Likewise.
+	* target-descriptions.c (make_gdb_type): Add TDESC_TYPE_IEEE_HALF.
+	* common/tdesc.c: Likewise.
+	* common/tdesc.h (enum tdesc_type_kind): Likewise.
+	* features/aarch64-fpu.c (create_feature_aarch64_fpu): Regenerate.
+	* features/aarch64-fpu.xml: Add ieee half view.
+	* features/aarch64-sve.c (create_feature_aarch64_fpu): Likewise.
+	* gdbtypes.c (gdbtypes_post_init): Add builtin_half
+	* gdbtypes.h (struct builtin_type): Likewise.
+	(struct objfile_type): Likewise.
+
+2019-05-12  Paul Naert  <paul.naert@polymtl.ca>
+
+	* language.c (language_sniff_from_mangled_name): Fix "langauge"
+	typo.
+	* location.h (string_to_event_location): Likewise.
+
+2019-05-11  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 8.3 released.
+
+2019-05-10  Simon Marchi  <simon.marchi@efficios.com>
+
+	* breakpoint.h (fix_multi_location_breakpoint_output_globally):
+	New variable declaration.
+	* breakpoint.c (fix_multi_location_breakpoint_output_globally):
+	New variable.
+	(print_one_breakpoint): Use ui_out::test_flags and new global
+	variable to compute use_fixed_output.
+	* mi/mi-main.h (mi_multi_location_breakpoint_output_fixed):
+	Remove.
+	* mi/mi-main.c (fix_multi_location_breakpoint_output): Remove.
+	(mi_multi_location_breakpoint_output_fixed): Remove.
+	(mi_cmd_fix_multi_location_breakpoint_output): Adjust to set the
+	new variable.
+	* mi/mi-out.c (mi_ui_out::mi_ui_out): Set
+	fix_multi_location_breakpoint_output flag if version >= 3.
+	* ui-out.h (enum ui_out_flag)
+	<fix_multi_location_breakpoint_output>: New enumerator.
+
+2019-05-10  Simon Marchi  <simon.marchi@efficios.com>
+
+	* contrib/cc-with-tweaks.sh: Validate dwz's work.
+
+2019-05-10  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (catch_ada_completer): New function.
+	(_initialize_ada_language): Use it.
+
+2019-05-10  Tom Tromey  <tromey@adacore.com>
+
+	* thread.c (print_thread_info): Make "requested_threads" const.
+	* gdbthread.h (print_thread_info): Make "requested_threads"
+	const.
+	* ada-tasks.c (print_ada_task_info): Make "taskno_str" const.
+	* ada-lang.h (print_ada_task_info): Make "taskno_str" const.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* gdbtypes.c (objfile_type_data): Change type.
+	(objfile_type, _initialize_gdbtypes): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2-frame.c (dwarf2_frame_objfile_data): Change type.
+	(dwarf2_frame_find_fde, dwarf2_build_frame_info)
+	(_initialize_dwarf2_frame): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* objc-lang.c (objc_objfile_data): Change type.
+	(find_methods): Update.
+	(_initialize_objc_lang): Remove.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* stabsread.c (rs6000_builtin_type_data): Change type.
+	(rs6000_builtin_type, _initialize_stabsread): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* mips-tdep.c (mips_pdr_data): Remove.
+	(_initialize_mips_tdep): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* hppa-tdep.c (hppa_objfile_priv_data): Change type.
+	(hppa_init_objfile_priv_data, read_unwind_info)
+	(find_unwind_entry, _initialize_hppa_tdep): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* elfread.c (elf_objfile_gnu_ifunc_cache_data): Change type.
+	(elf_gnu_ifunc_record_cache): Update.  Don't allocate hash table
+	on obstack.
+	(elf_gnu_ifunc_resolve_by_cache, _initialize_elfread): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* mdebugread.c (basic_type_data): Change type.
+	(basic_type, _initialize_mdebugread): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* common/gdb_unique_ptr.h (struct noop_deleter): New.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* nto-tdep.c (nto_inferior_data_reg): Change type.
+	(nto_inferior_data): Update.
+	(nto_inferior_data_cleanup, nto_new_inferior_data)
+	(_initialize_nto_tdep): Remove.
+	* nto-tdep.h (struct nto_inferior_data): Add initializers.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (struct ada_inferior_data): Add initializers.
+	(ada_inferior_data): Change type.
+	(ada_inferior_data_cleanup): Remove.
+	(get_ada_inferior_data, ada_inferior_exit)
+	(struct ada_pspace_data): Add initializers, destructor.
+	(ada_pspace_data_handle): Change type.
+	(get_ada_pspace_data): Update.
+	(ada_pspace_data_cleanup): Remove.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* coffread.c (struct coff_symfile_info): Add initializers.
+	(coff_objfile_data_key): Move lower.  Change type.
+	(coff_symfile_init, coff_symfile_read, _initialize_coffread):
+	Update.
+	(coff_free_info): Remove.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* fbsd-tdep.c (struct fbsd_pspace_data): Add initializers.
+	(fbsd_pspace_data_handle): Move lower.  Change type.
+	(get_fbsd_pspace_data): Update.
+	(fbsd_pspace_data_cleanup): Remove.
+	(_initialize_fbsd_tdep): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-tasks.c (ada_tasks_pspace_data_handle): Change type.
+	(get_ada_tasks_pspace_data): Update.
+	(ada_tasks_pspace_data_cleanup): Remove.
+	(_initialize_tasks): Update.
+	(ada_tasks_inferior_data_handle): Change type.
+	(get_ada_tasks_inferior_data): Update.
+	(ada_tasks_inferior_data_cleanup): Remove.
+	(struct ada_tasks_pspace_data): Add initializers.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* symfile.h (struct sym_probe_fns) <sym_get_probes>: Change type.
+	* symfile-debug.c (debug_sym_get_probes): Change type.
+	* stap-probe.c (handle_stap_probe):
+	(stap_static_probe_ops::get_probes): Change type.
+	* probe.h (class static_probe_ops) <get_probes>: Change type.
+	* probe.c (class any_static_probe_ops) <get_probes>: Change type.
+	(parse_probes_in_pspace): Update.
+	(find_probes_in_objfile, find_probe_by_pc, collect_probes):
+	Update.
+	(any_static_probe_ops::get_probes): Change type.
+	* elfread.c (elfread_data): New typedef.
+	(probe_key): Change type.
+	(elf_get_probes): Likewise.  Update.
+	(probe_key_free): Remove.
+	(_initialize_elfread): Update.
+	* dtrace-probe.c (class dtrace_static_probe_ops) <get_probes>:
+	Change type.
+	(dtrace_process_dof_probe, dtrace_process_dof)
+	(dtrace_static_probe_ops::get_probe): Change type.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (struct xcoff_symfile_info): Rename from
+	coff_symfile_info.  Add initializers.
+	(xcoff_objfile_data_key): Move lower.  Change type.
+	(XCOFF_DATA): Rewrite.
+	(xcoff_free_info): Remove.
+	(xcoff_symfile_init, _initialize_xcoffread, read_xcoff_symtab)
+	(read_symbol, read_symbol_lineno, find_linenos, init_stringtab)
+	(xcoff_initial_scan): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* solib-svr4.c (struct svr4_info): Add initializers and
+	destructor.
+	<probes_table>: Now an htab_up.
+	(solib_svr4_pspace_data): Change type.
+	(free_probes_table): Simplify.
+	(~svr4_info): Rename from svr4_pspace_data_cleanup.
+	(get_svr4_info, probes_table_htab_remove_objfile_probes)
+	(probes_table_remove_objfile_probes, register_solib_event_probe)
+	(solib_event_probe_at, svr4_update_solib_event_breakpoint)
+	(_initialize_svr4_solib): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* remote.c (remote_pspace_data): Change type.
+	(remote_pspace_data_cleanup): Remove.
+	(get_remote_exec_file, set_pspace_remote_exec_file)
+	(_initialize_remote): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* breakpoint.c (breakpoint_objfile_key): Change type.
+	(get_breakpoint_objfile_data): Update.
+	(free_breakpoint_objfile_data): Remove.
+	(_initialize_breakpoint): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* linux-tdep.c (struct linux_info): Add initializers.
+	(linux_inferior_data): Move.  Change type.
+	(invalidate_linux_cache_inf): Update.
+	(linux_inferior_data_cleanup): Remove.
+	(get_linux_inferior_data, _initialize_linux_tdep): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* auxv.c (auxv_inferior_data): Move.  Change type.
+	(auxv_inferior_data_cleanup): Remove.
+	(invalidate_auxv_cache_inf): Rewrite.
+	(get_auxv_inferior_data, _initialize_auxv): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* symfile-debug.c (struct debug_sym_fns_data): Add initializers.
+	(symfile_debug_objfile_data_key): Change type.
+	(symfile_debug_installed, debug_qf_has_symbols)
+	(debug_qf_find_last_source_symtab)
+	(debug_qf_forget_cached_source_info)
+	(debug_qf_map_symtabs_matching_filename, debug_qf_lookup_symbol)
+	(debug_qf_print_stats, debug_qf_dump)
+	(debug_qf_expand_symtabs_for_function)
+	(debug_qf_expand_all_symtabs)
+	(debug_qf_expand_symtabs_with_fullname)
+	(debug_qf_map_matching_symbols)
+	(debug_qf_expand_symtabs_matching)
+	(debug_qf_find_pc_sect_compunit_symtab)
+	(debug_qf_map_symbol_filenames)
+	(debug_qf_find_compunit_symtab_by_address, debug_sym_get_probes)
+	(debug_sym_new_init, debug_sym_init, debug_sym_read)
+	(debug_sym_read_psymbols, debug_sym_finish, debug_sym_offsets)
+	(debug_sym_read_linetable, debug_sym_relocate): Update.
+	(symfile_debug_free_objfile): Remove.
+	(install_symfile_debug_logging, _initialize_symfile_debug):
+	Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.h (struct dwarf2_per_objfile): Don't inherit from
+	allocate_on_obstack.
+	* dwarf2read.c (dwarf2_objfile_data_key): Change type.
+	(get_dwarf2_per_objfile): Update.
+	(set_dwarf2_per_objfile): Remove.
+	(dwarf2_has_info, dwarf2_get_section_info): Update.
+	(dwarf2_free_objfile): Remove.
+	(_initialize_dwarf2_read): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* auto-load.c (struct auto_load_pspace_info): Add destructor and
+	initializers.
+	<unsupported_script_warning_printed,
+	script_not_found_warning_printed>: Now bool.
+	(auto_load_pspace_data): Change type.
+	(~auto_load_pspace_info): Rename from
+	auto_load_pspace_data_cleanup.
+	(get_auto_load_pspace_data, init_loaded_scripts_info)
+	(clear_section_scripts, maybe_print_unsupported_script_warning)
+	(maybe_print_script_not_found_warning, _initialize_auto_load):
+	Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.c (objfile_pspace_info): Add destructor and
+	initializers.
+	(objfiles_pspace_data): Change type.
+	(~objfile_pspace_info): Rename from objfiles_pspace_data_cleanup.
+	(get_objfile_pspace_data): Update.
+	(objfiles_bfd_data): Change type.
+	(get_objfile_bfd_data): Update.
+	(objfile_bfd_data_free, _initialize_objfiles): Remove.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* break-catch-syscall.c (catch_syscall_inferior_data): Move.
+	Change type.
+	(get_catch_syscall_inferior_data): Update.
+	(catch_syscall_inferior_data_cleanup): Remove.
+	(_initialize_break_catch_syscall): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* inflow.c (struct terminal_info): Add destructor and
+	initializers.
+	(inflow_inferior_data): Change type.
+	(~terminal_info): Rename from inflow_inferior_data_cleanup.
+	(get_inflow_inferior_data, inflow_inferior_exit)
+	(swap_terminal_info, _initialize_inflow): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* target-dcache.c (target_dcache_cleanup): Remove.
+	(target_dcache_aspace_key): Change type.
+	(target_dcache_init_p, target_dcache_invalidate)
+	(target_dcache_get, target_dcache_get_or_init)
+	(_initialize_target_dcache): Update.
+	* dcache.h (struct dcache_deleter): New.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (struct symbol_cache): Add destructor and
+	initializers.
+	(symbol_cache_key): Move.  Change type.
+	(make_symbol_cache, free_symbol_cache): Remove.
+	(get_symbol_cache): Update.
+	(symbol_cache_cleanup): Remove.
+	(ALL_PSPACES, symbol_cache_flush)
+	(maintenance_print_symbol_cache)
+	(maintenance_print_symbol_cache_statistics, _initialize_symtab):
+	Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (struct main_info): Add destructor and initializers.
+	(main_progspace_key): Move.  Change type.
+	(get_main_info): Update.
+	(main_info_cleanup): Remove.
+	(_initialize_symtab): Update.
+
+2019-05-08  Tom Tromey  <tom@tromey.com>
+
+	* registry.h (DECLARE_REGISTRY): Define the _key class.
+
+2019-05-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Merge two 'New commands' sections.
+
+2019-05-08  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-valprint.c (ada_val_print_gnat_array): Remove language
+	parameter and use Ada language definition instead.
+	(ada_val_print_ptr): Remove unused language parameter.
+	(ada_val_print_num): Remove language parameter and use Ada language
+	definition instead.
+	(ada_val_print_enum, ada_val_print_flt): Remove unused language
+	parameter.
+	(ada_val_print_struct_union, ada_val_print_ref): Remove language
+	parameter and use Ada language definition instead.
+	(ada_val_print_1): Update all ada_val_print_xxx calls.
+	Remove language parameter.
+	(ada_val_print): Update ada_val_print_1 call.
+
+2019-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* remote.c (remote_hw_watchpoint_limit)
+	(remote_hw_watchpoint_length_limit, remote_hw_breakpoint_limit):
+	Now static.
+
+2019-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* maint.c (_initialize_maint_cmds): Move initialization code to
+	remote.c.
+	(watchdog, show_watchdog): Move to remote.c.
+	* remote.c (watchdog, show_watchdog): Move from maint.c.  Make
+	"watchdog" static.
+	(_initialize_remote): Move initialization code from maint.c.
+	* defs.h (watchdog): Don't declare.
+
+2019-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* tui/tui-interp.c: Include main.h.
+	* interps.c: Include main.h.
+	* main.h (interpreter_p): Declare.
+	* defs.h (interpreter_p): Don't declare.
+
+2019-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2loc.c: Include dwarf2read.h.
+	* defs.h (read_unsigned_leb128): Don't declare.
+	* dwarf2read.h (read_unsigned_leb128): Declare.
+
+2019-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* utils.c (fputs_maybe_filtered): Call can_emit_style_escape as a
+	method.
+
+2019-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* utils.c (fputs_maybe_filtered): Reset style after paging, even
+	when no wrap column is set.
+
+2019-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* c-lang.c (c_get_string): Handle non-C-style arrays.
+
+2019-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* typeprint.c (print_offset_data::update): Print the bit offset,
+	not the number of bits remaining.
+
+2019-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* typeprint.c (print_offset_data::maybe_print_hole): Add extra
+	padding at end of comment.
+
+2019-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2loc.c (dwarf2_evaluate_property) <PROP_ADDR_OFFSET>:
+	Compare main types.
+
+2019-05-06  Tom Tromey  <tom@tromey.com>
+
+	* common/scoped_mmap.c: Include common-defs.h.
+	* common/scoped_mmap.h: Don't include config.h.
+
+2019-05-04  Tom Tromey  <tom@tromey.com>
+
+	* aarch64-tdep.c (stack_item_t): Remove typedef and DEF_VEC.
+	(struct aarch64_call_info): Add initializers.
+	<si>: Now a std::vector.
+	(pass_on_stack, aarch64_push_dummy_call): Update.
+
+2019-05-04  Simon Marchi  <simon.marchi@efficios.com>
+	    Tom Tromey  <tom@tromey.com>
+
+	* ppc-linux-nat.c (thread_points_p): Remove typedef and DEF_VEC.
+	(ppc_threads): Now a std::vector.  Now static.
+	(hwdebug_find_thread_points_by_tid)
+	(ppc_linux_nat_target::low_new_thread, ppc_linux_thread_exit):
+	Update.
+
+2019-05-04  Tom Tromey  <tom@tromey.com>
+
+	* arc-tdep.c (arc_tdesc_init): Return bool.
+
+2019-05-04  Tom Tromey  <tom@tromey.com>
+
+	* arm-linux-nat.c (arm_linux_nat_target::can_use_hw_breakpoint):
+	Use gdb_assert_not_reached.
+
+2019-05-04  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile-cplus-types.c (compile_cplus_convert_enum): Use
+	"false".
+
+2019-05-04  Tom Tromey  <tom@tromey.com>
+
+	* arc-tdep.c (arc_tdesc_init): Use bool.
+
+2019-05-04  Tom Tromey  <tom@tromey.com>
+
+	* stack.c (select_frame_for_mi): Use "false", not "FALSE".
+
+2019-05-04  Tom Tromey  <tom@tromey.com>
+
+	* cli/cli-cmds.c (valid_command_p): Return bool.
+
+2019-05-04  Tom Tromey  <tom@tromey.com>
+
+	* cli/cli-decode.c (valid_user_defined_cmd_name_p): Return bool.
+	* command.h (valid_user_defined_cmd_name_p): Channge return type.
+
+2019-05-04  Raul Tambre  <raul@tambre.ee>
+
+	* python/lib/gdb/prompt.py (_ExtendedPrompt)
+	<before_prompt_hook, get_show_string>: Fix incorrect use of 'is'
+	operator for comparison.
+
+2019-05-04  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.c (psymbol_name_matches, match_partial_symbol)
+	(lookup_partial_symbol, print_partial_symbols)
+	(recursively_search_psymtabs, sort_pst_symbols, psymbol_hash)
+	(psymbol_compare): Update.
+	(add_psymbol_to_bcache): Clear the entire psymbol.
+	(maintenance_check_psymtabs): Update.
+	* psympriv.h (struct partial_symbol): Don't derive from
+	general_symbol_info.
+	<obj_section, unrelocated_address, address,
+	set_unrelocated_address>: Update.
+	<ginfo>: New member.
+	* dwarf-index-write.c (write_psymbols, debug_names::insert)
+	(debug_names::write_psymbols): Update.
+
+2019-05-04  Tom de Vries  <tdevries@suse.de>
+
+	* contrib/cc-with-tweaks.sh: Support -n arg.
+
+2019-05-04  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* corelow.c (core_target::detach): Ensure frame cache and
+	register caches are cleared.
+	inferior.c (exit_inferior_1): Likewise.
+
+2019-05-03  Sandra Loosemore  <sandra@codesourcery.com>
+	    Tom Tromey  <tom@tromey.com>
+
+	* dictionary.c (collate_pending_symbols_by_language): Remove
+	"struct" from foreach.
+	* symtab.c (lookup_global_symbol_from_objfile)
+	(lookup_symbol_in_objfile_from_linkage_name): Remove "struct" from
+	foreach.
+	* ser-tcp.c (net_open): Remove "struct" from foreach.
+	* objfiles.c (objfile_relocate, objfile_rebase)
+	(objfile_has_symbols): Remove "struct" from foreach.
+	* minsyms.c (lookup_minimal_symbol_by_pc_section): Remove "struct"
+	from foreach.
+	* dwarf2read.c (handle_struct_member_die): Remove "struct" from
+	foreach.
+	* darwin-nat.c (thread_info_from_private_thread_info): Remove
+	"struct" from foreach.
+	* ada-lang.c (create_excep_cond_exprs)
+	(ada_exception_catchpoint_cond_string): Remove "struct" from
+	foreach.
+
+2019-05-03  Tom Tromey  <tromey@adacore.com>
+
+	* ada-exp.y (convert_char_literal): Check suffix of each
+	enumerator.
+
+2019-05-03  Dilyan Palauzov  <dilyan.palauzov@aegee.org>
+
+	PR ada/21406:
+	* ada-exp.y (yywrap): Don't define.
+	* ada-lex.l (%option): Add noyywrap
+	(yywrap): Remove.
+
+2019-05-03  Eli Zaretskii  <eliz@gnu.org>
+
+	* common/common-defs.h [__MINGW32__ || __CYGWIN__]: Define
+	_WIN32_WINNT to the XP level, unless already defined to a higher
+	level.
+
+	* unittests/parse-connection-spec-selftests.c:
+	* ser-tcp.c:
+	* common/netstuff.c [USE_WIN32API]:  Remove the _WIN32_WINNT
+	override.
+
+	* symfile.c (find_separate_debug_file): Remove colon from the
+	drive spec of DOS/Windows file names of the target, so that the
+	file name produced from DEBUGDIR and the target's directory will
+	be valid on DOS/Windows systems.
+
+2019-05-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* rust-lang.c (val_print_struct): Handle printing structures
+	containing strings.
+
+2019-05-02  Tom Tromey  <tromey@adacore.com>
+
+	* valarith.c (_initialize_valarith): Remove.
+
+2019-05-01  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_value_primitive_field): Treat more fields as
+	bitfields.
+
+2019-05-01  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_value_assign): Correctly compute starting offset
+	for big-endian copies.
+
+2019-04-30  Ali Tamur  <tamur@google.com>
+
+	* dwarf2read.c (read_3_bytes): New declaration.
+	(read_attribute_value): Added DW_FORM_strx1-4 cases.
+	(read_3_bytes): New function.
+
+2019-04-30  Joel Brobecker  <brobecker@adacore.com>
+
+	* windows-nat.c (main_thread_id): Delete.
+	(handle_output_debug_string): Replace main_thread_id by
+	current_event.dwThreadId.
+	(fake_create_process): Likewise.
+	(get_windows_debug_event) <CREATE_PROCESS_DEBUG_EVENT>:
+	Do not set main_thread_id.
+	<LOAD_DLL_DEBUG_EVENT>: Replace main_thread_id by
+	current_event.dwThreadId.
+	<UNLOAD_DLL_DEBUG_EVENT>: Likewise.
+
+2019-04-30  Joel Brobecker  <brobecker@adacore.com>
+
+	* windows-nat.c (get_windows_debug_event) <EXIT_PROCESS_DEBUG_EVENT>:
+	Use current_event.dwThreadId instead of main_thread_id.
+
+2019-04-30  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_lookup_simple_minsyms): New function.
+	(create_excep_cond_exprs): Iterate over program spaces.
+	(ada_exception_catchpoint_cond_string): Examine all minimal
+	symbols for exception types.
+
+2019-04-30  Tom Tromey  <tromey@adacore.com>
+
+	PR c++/24470:
+	* dwarf2read.c (process_structure_scope): Handle case where type
+	has template parameters but no symbol was created.
+
+2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Chris January  <chris.january@arm.com>
+
+	* f-typeprint.c (f_type_print_base): Print 'allocatable' type
+	qualifier.
+	* gdbtypes.h (TYPE_IS_ALLOCATABLE): Define.
+
+2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-typeprint.c (f_print_type): Update rules for printing
+	whitespace.
+	(f_type_print_varspec_suffix): Likewise.
+
+2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Chris January  <chris.january@arm.com>
+
+	* f-typeprint.c (f_type_print_varspec_suffix): Handle printing
+	function arguments.
+
+2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-lang.c (build_fortran_types): Change name of void type to
+	lower case.
+	* f-typeprint.c (f_type_print_base): Print the name of the void
+	type, rather than a fixed string.
+	* f-valprint.c (f_decorations): Use lower case void string.
+
+2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Chris January  <chris.january@arm.com>
+
+	* dwarf2read.c (dwarf2_init_complex_target_type): Use different
+	types for Fortran.
+
+2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Chris January  <chris.january@arm.com>
+	    David Lecomber  <david.lecomber@arm.com>
+
+	* f-exp.y (BINOP_INTRINSIC): New token.
+	(exp): New parser rule handling BINOP_INTRINSIC.
+	(f77_keywords): Add new builtin procedures.
+	* f-lang.c (evaluate_subexp_f): Handle BINOP_MOD, UNOP_FORTRAN_CEILING,
+	UNOP_FORTRAN_FLOOR, BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
+	(operator_length_f): Handle UNOP_FORTRAN_CEILING,
+	UNOP_FORTRAN_FLOOR, BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
+	(print_unop_subexp_f): New function.
+	(print_binop_subexp_f): New function.
+	(print_subexp_f): Handle UNOP_FORTRAN_CEILING, UNOP_FORTRAN_FLOOR,
+	BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
+	(dump_subexp_body_f): Likewise.
+	(operator_check_f): Likewise.
+	* fortran-operator.def: Add UNOP_FORTRAN_CEILING, UNOP_FORTRAN_FLOOR,
+	BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX
+
+2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* expprint.c (dump_subexp_body_standard): Remove use of
+	UNOP_KIND.
+	* expression.h (exp_opcode): Include 'fortran-operator.def'.
+	* f-exp.y (exp): Rename UNOP_KIND to UNOP_FORTRAN_KIND.
+	* f-lang.c (evaluate_subexp_f): Likewise.
+	(operator_length_f): New fuction.
+	(print_subexp_f): New function.
+	(op_name_f): New function.
+	(dump_subexp_body_f): New function.
+	(operator_check_f): New function.
+	(exp_descriptor_f): Replace standard expression handling functions
+	with new functions.
+	* fortran-operator.def: New file.
+	* parse.c (operator_length_standard): Remove use of UNOP_KIND.
+	* std-operator.def: Remove UNOP_KIND.
+
+2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* std-operator.def: Remove unbalanced, stray double quote
+	character.
+
+2019-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Chris January  <chris.january@arm.com>
+	    Daniel Everett  <daniel.everett@arm.com>
+	    Nick Forrington  <nick.forrington@arm.com>
+	    Richard Bunt  <richard.bunt@arm.com>
+
+	* cp-valprint.c (cp_print_value_fields): Allow an additional level
+	of depth when printing anonymous structs or unions.
+	* guile/scm-pretty-print.c (gdbscm_apply_val_pretty_printer):
+	Don't print either the top-level value, or the children if the
+	max-depth is exceeded.
+	(ppscm_print_children): When printing the key of a map, allow one
+	extra level of depth.
+	* python/py-prettyprint.c (gdbpy_apply_val_pretty_printer): Don't
+	print either the top-level value, or the children if the max-depth
+	is exceeded.
+	(print_children): When printing the key of a map, allow one extra
+	level of depth.
+	* python/py-value.c (valpy_format_string): Add max_depth keyword.
+	* valprint.c: (PRINT_MAX_DEPTH_DEFAULT): Define.
+	(user_print_options): Initialise max_depth field.
+	(val_print_scalar_or_string_type_p): New function.
+	(val_print): Check to see if the max depth has been reached.
+	(val_print_check_max_depth): Define new function.
+	(show_print_max_depth): New function.
+	(_initialize_valprint): Add 'print max-depth' option.
+	* valprint.h (struct value_print_options) <max_depth>: New field.
+	(val_print_check_max_depth): Declare new function.
+	* NEWS: Document new feature.
+
+2019-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_defn): Initialise new field.
+	* c-lang.c (c_is_string_type_p): New function.
+	(c_language_defn): Initialise new field.
+	(cplus_language_defn): Initialise new field.
+	(asm_language_defn): Initialise new field.
+	(minimal_language_defn): Initialise new field.
+	* c-lang.h (c_is_string_type_p): Declare new function.
+	* d-lang.c (d_language_defn): Initialise new field.
+	* f-lang.c (f_is_string_type_p): New function.
+	(f_language_defn): Initialise new field.
+	* go-lang.c (go_is_string_type_p): New function.
+	(go_language_defn): Initialise new field.
+	* language.c (default_is_string_type_p): New function.
+	(unknown_language_defn): Initialise new field.
+	(auto_language_defn): Initialise new field.
+	* language.h (struct language_defn) <la_is_string_type_p>: New
+	member variable.
+	(default_is_string_type_p): Declare new function.
+	* m2-lang.c (m2_language_defn): Initialise new field.
+	* objc-lang.c (objc_language_defn): Initialise new field.
+	* opencl-lang.c (opencl_language_defn): Initialise new field.
+	* p-lang.c (pascal_is_string_type_p): New function.
+	(pascal_language_defn): Initialise new field.
+	* rust-lang.c (rust_is_string_type_p): New function.
+	(rust_language_defn): Initialise new field.
+
+2019-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* language.h (struct language_defn) <la_struct_too_deep_ellipsis>:
+	New field.
+	* ada-lang.c (ada_language_defn): Initialise new field.
+	* c-lang.c (c_language_defn): Likewise.
+	(cplus_language_defn): Likewise.
+	(asm_language_defn): Likewise.
+	(minimal_language_defn): Likewise.
+	* d-lang.c (d_language_defn): Likewise.
+	* f-lang.c (f_language_defn): Likewise.
+	* go-lang.c (go_language_defn): Likewise.
+	* language.c (unknown_language_defn): Likewise.
+	(auto_language_defn): Likewise.
+	* m2-lang.c (m2_language_defn): Likewise.
+	* objc-lang.c (objc_language_defn): Likewise.
+	* opencl-lang.c (opencl_language_defn): Likewise.
+	* p-lang.c (pascal_language_defn): Likewise.
+	* rust-lang.c (rust_language_defn): Likewise.
+
+2019-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_is_character_type): Change return type to bool.
+	(ada_is_string_type): Likewise.
+	* ada-lang.h (ada_is_character_type): Update declaration
+	(ada_is_string_type): Likewise.
+
+2019-04-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	Support style in 'frame|thread apply'
+
+	* gdbcmd.h (execute_command_to_string): New term_out parameter.
+	* record.c (record_start, record_stop): Update callers of
+	execute_command_to_string with false.
+	* guile/guile.c (gdbscm_execute_gdb_command): Likewise.
+	* ui-file.h (class ui_file): New term_out and can_emit_style_escape
+	methods.
+	(class string_file): New constructor with term_out parameter.
+	Override methods term_out and can_emit_style_escape.  New member
+	term_out.
+	(class stdio_file): Override can_emit_style_escape.
+	(class tee_file): Override term_out and can_emit_style_escape.
+	* utils.h (can_emit_style_escape): Remove.
+	* utils.c (can_emit_style_escape): Likewise.
+	Update all callers of can_emit_style_escape (SOMESTREAM) to
+	SOMESTREAM->can_emit_style_escape.
+	* source-cache.c (source_cache::get_source_lines): Likewise.
+	* stack.c (frame_apply_command_count): Call execute_command_to_string
+	passing the term_out characteristic of the current gdb_stdout.
+	* thread.c (thr_try_catch_cmd): Likewise.
+	* top.c (execute_command_to_string): pass term_out parameter
+	to construct the string_file for the command output.
+	* ui-file.c (term_cli_styling): New function (most code moved
+	from utils.c can_emit_style_escape).
+	(string_file::string_file, string_file::can_emit_style_escape,
+	stdio_file::can_emit_style_escape, tee_file::term_out,
+	tee_file::can_emit_style_escape): New functions.
+
+2019-04-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Mention the new set|show may-call-functions.
+	* infcall.c (may_call_functions_p): New variable.
+	(show_may_call_functions_p): New function.
+	(call_function_by_hand_dummy): Throws an error if not
+	may-call-functions.
+	(_initialize_infcall): Call add_setshow_boolean_cmd for
+	may-call-functions.
+
+2019-04-25  Keith Seitz  <keiths@redhat.com>
+
+	PR c++/24367
+	* cp-support.c (inspect_type): Don't attempt substitutions
+	of symbol with the same name.
+
+2019-04-25  Tom Tromey  <tromey@adacore.com>
+
+	PR gdb/24475:
+	* event-top.c (gdb_rl_callback_handler): Make "gdb_rl_expt"
+	static.
+
+2019-04-25  Tom Tromey  <tromey@adacore.com>
+
+	* xml-support.c (struct gdb_xml_parser) <set_error>: Take an
+	rvalue reference.
+	(gdb_xml_start_element_wrapper, gdb_xml_end_element_wrapper)
+	(gdb_xml_parser::parse): Use std::move.
+	* python/python-internal.h (gdbpy_convert_exception): Take a const
+	reference.
+	* python/py-value.c (valpy_getitem, valpy_nonzero): Use
+	std::move.
+	* python/py-utils.c (gdbpy_convert_exception): Take a const
+	reference.
+	* python/py-inferior.c (infpy_write_memory, infpy_search_memory):
+	Use std::move.
+	* python/py-breakpoint.c (bppy_set_condition, bppy_set_commands):
+	Use std::move.
+	* mi/mi-main.c (mi_print_exception): Take a const reference.
+	* main.c (handle_command_errors): Take a const reference.
+	* linespec.c (parse_linespec): Use std::move.
+	* infcall.c (run_inferior_call): Use std::move.
+	(call_function_by_hand_dummy): Use std::move.
+	* exec.c (try_open_exec_file): Use std::move.
+	* exceptions.h (exception_print, exception_fprintf)
+	(exception_print_same): Update.
+	* exceptions.c (print_exception, exception_print)
+	(exception_fprintf, exception_print_same): Change parameters to
+	const reference.
+	* event-top.c (gdb_rl_callback_read_char_wrapper): Update.
+	* common/new-op.c: Use std::move.
+	* common/common-exceptions.h (struct gdb_exception): Add move
+	constructor.
+	(struct gdb_exception_error, struct gdb_exception_quit, struct
+	gdb_quit_bad_alloc): Change constructor to move constructor.
+	(throw_exception): Change parameter to rvalue reference.
+	* common/common-exceptions.c (throw_exception): Take rvalue
+	reference.
+	* cli/cli-interp.c (safe_execute_command): Use std::move.
+	* breakpoint.c (insert_bp_location, location_to_sals): Use
+	std::move.
+
+2019-04-25  Tom Tromey  <tromey@adacore.com>
+
+	* guile/scm-exception.c (gdbscm_scm_from_gdb_exception)
+	(gdbscm_throw_gdb_exception): Take a gdbscm_gdb_exception.
+	* guile/scm-block.c, guile/scm-breakpoint.c, guile/scm-cmd.c,
+	guile/scm-disasm.c, guile/scm-frame.c, guile/scm-lazy-string.c,
+	guile/scm-math.c, guile/scm-param.c, guile/scm-ports.c,
+	guile/scm-symbol.c, guile/scm-symtab.c, guile/scm-type.c,
+	guile/scm-value.c: Use unpack.
+	* guile/guile-internal.h (gdbscm_scm_from_gdb_exception): Take a
+	gdbscm_gdb_exception.
+	(gdbscm_throw_gdb_exception): Likewise.
+	(struct gdbscm_gdb_exception): New.
+	(unpack): New function.
+	(gdbscm_wrap): Use unpack.
+
+2019-04-25  Tom Tromey  <tromey@adacore.com>
+
+	* event-top.c (gdb_rl_callback_read_char_wrapper_noexcept)
+	(gdb_rl_callback_handler): Use std::move.
+	* common/common-exceptions.h (struct gdb_exception): Add move
+	assignment operator.
+	(throw_exception_sjlj): Change "exception" to const reference.
+	* common/common-exceptions.c (exceptions_state_mc_catch): Update.
+	(throw_exception_sjlj): Change "exception" to const reference.
+
+2019-04-25  Tom Tromey  <tromey@adacore.com>
+
+	* xml-support.c (gdb_xml_parser::gdb_xml_parser): Update.
+	* python/py-value.c (valpy_getitem, valpy_nonzero): Update.
+	* python/py-inferior.c (infpy_write_memory, infpy_search_memory):
+	Update.
+	* python/py-breakpoint.c (bppy_set_condition, bppy_set_commands):
+	Update.
+	* mi/mi-interp.c (mi_interp::exec): Update.
+	* linespec.c (parse_linespec): Update.
+	* infcall.c (run_inferior_call): Update.
+	* guile/scm-value.c (gdbscm_value_to_lazy_string): Update.
+	* guile/scm-symbol.c (gdbscm_lookup_symbol)
+	(gdbscm_lookup_global_symbol): Update.
+	* guile/scm-param.c (gdbscm_parameter_value): Update.
+	* guile/scm-frame.c (gdbscm_frame_read_register)
+	(gdbscm_frame_read_var): Update.
+	* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Update.
+	* exec.c (try_open_exec_file): Update.
+	* event-top.c (gdb_rl_callback_read_char_wrapper_noexcept)
+	(gdb_rl_callback_handler): Update.
+	* common/common-exceptions.h (exception_none): Don't declare.
+	* common/common-exceptions.c (exception_none): Don't define.
+	(struct catcher) <exception>: Update.
+	* cli/cli-interp.c (safe_execute_command): Update.
+	* breakpoint.c (insert_bp_location, location_to_sals): Update.
+
+2019-04-25  Ali Tamur  <tamur@google.com>
+
+	* dwarf2read.c (skip_one_die): Add DW_FORM_strx.
+	(read_attribute_value): Likewise.
+	(dwarf2_read_addr_index): Update comment.
+	(read_str_index): Add DW_FORM_strx.
+	(dwarf2_string_attr): Likewise.
+	(dwarf2_const_value_attr): Likewise.
+	(dump_die_shallow): Likewise.
+	(dwarf2_fetch_constant_bytes): Likewise.
+	(skip_form_bytes): Likewise.
+
+2019-04-25  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	PR corefiles/11608
+	PR corefiles/18187
+	* linux-tdep.c (dump_mapping_p): Add new parameters ADDR and
+	OFFSET.  Verify if current mapping contains an ELF header.
+	(linux_find_memory_regions_full): Adjust call to
+	dump_mapping_p.
+
+2019-04-25  Sandra Loosemore  <sandra@codesourcery.com>
+	    Kang Li <kanglictf@gmail.com>
+
+	PR gdb/21600
+
+	* dwarf2-frame.c (read_initial_length): Be consistent about using
+	unsigned representation of length.
+	(decode_frame_entry_1): Likewise.  Check for wraparound of
+	end pointer as well as buffer overflow.
+
+2019-04-24  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* aarch64-tdep.c (aarch64_gdbarch_init): Use "pulongest" to print
+	"vq".
+
+2019-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* amd64-tdep.c (amd64_has_unaligned_fields): Ignore bitfields.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* s12z-tdep.c (s12z_unwind_pc): Delete.
+	(s12z_unwind_sp): Delete.
+	(s12z_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* rl78-tdep.c (rl78_unwind_sp): Delete.
+	(rl78_gdbarch_init): Don't register deleted function with gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* xstormy16-tdep.c (xstormy16_unwind_sp): Delete.
+	(xstormy16_unwind_pc): Delete.
+	(xstormy16_dummy_id): Delete.
+	(xstormy16_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* vax-tdep.c (vax_unwind_pc): Delete.
+	(vax_gdbarch_init): Don't register deleted function with gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* v850-tdep.c (v850_unwind_sp): Delete.
+	(v850_unwind_pc): Delete.
+	(v850_dummy_id): Delete.
+	(v850_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tilegx-tdep.c (tilegx_unwind_sp): Delete.
+	(tilegx_unwind_pc): Delete.
+	(tilegx_unwind_dummy_id): Delete.
+	(tilegx_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tic6x-tdep.c (tic6x_unwind_sp): Delete.
+	(tic6x_dummy_id): Delete.
+	(tic6x_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* sparc-tdep.c (sparc_unwind_pc): Delete.
+	(sparc32_gdbarch_init): Don't register deleted function with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* sh-tdep.c (sh_unwind_sp): Delete.
+	(sh_unwind_pc): Delete.
+	(sh_dummy_id): Delete.
+	(sh_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* score-tdep.c (score_unwind_sp): Delete.
+	(score_unwind_pc): Delete.
+	(score_dummy_id): Delete.
+	(score_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* rx-tdep.c (rx_unwind_pc): Delete.
+	(rx_unwind_sp): Delete.
+	(rx_dummy_id): Delete.
+	(rx_gdbarch_init): Don't register deleted functions with
+	gdbarch.  Update comment.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* rs6000-tdep.c (rs6000_unwind_pc): Delete.
+	(rs6000_dummy_id): Delete.
+	(rs6000_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* or1k-tdep.c (or1k_dummy_id): Delete.
+	(or1k_gdbarch_init): Don't register deleted function with gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* nios2-tdep.c (nios2_dummy_id): Delete.
+	(nios2_unwind_sp): Delete.
+	(nios2_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* nds32-tdep.c (nds32_dummy_id): Delete.
+	(nds32_unwind_pc): Delete.
+	(nds32_unwind_sp): Delete.
+	(nds32_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* msp430-tdep.c (msp430_unwind_pc): Delete.
+	(msp430_unwind_sp): Delete.
+	(msp430_dummy_id): Delete.
+	(msp430_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* moxie-tdep.c (moxie_unwind_sp): Delete.
+	(moxie_unwind_pc): Delete.
+	(moxie_dummy_id): Delete.
+	(moxie_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* mn10300-tdep.c (mn10300_dummy_id): Delete.
+	(mn10300_unwind_pc): Delete.
+	(mn10300_unwind_sp): Delete.
+	(mn10300_push_dummy_call): Use gdbarch_unwind_sp not
+	mn10300_unwind_sp.
+	(mn10300_frame_unwind_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* mep-tdep.c (mep_unwind_pc): Delete.
+	(mep_unwind_sp): Delete.
+	(mep_dummy_id): Delete.
+	(mep_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* m68hc11-tdep.c (m68hc11_unwind_pc): Delete.
+	(m68hc11_unwind_sp): Delete.
+	(m68hc11_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* m32r-tdep.c (m32r_unwind_sp): Delete.
+	(m32r_unwind_pc): Delete.
+	(m32r_dummy_id): Delete.
+	(m32r_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* m32c-tdep.c (m32c_unwind_pc): Delete.
+	(m32c_unwind_sp): Delete.
+	(m32c_dummy_id): Delete.
+	(m32c_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lm32-tdep.c (lm32_unwind_sp): Delete.
+	(lm32_unwind_pc): Delete.
+	(lm32_dummy_id): Delete.
+	(lm32_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* iq2000-tdep.c (iq2000_unwind_sp): Delete.
+	(iq2000_unwind_pc): Delete.
+	(iq2000_dummy_id): Delete.
+	(iq2000_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* nds32-tdep.c (nds32_type_align): Delete.
+	(nds32_push_dummy_call): Use type_align instead.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arm-tdep.c (arm_type_align): Only handle vector override case.
+	(arm_push_dummy_call): Use type_align.
+	(arm_gdbarch_init): Register arm_type_align gdbarch function.
+
+2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* aarch64-tdep.c (aarch64_type_align): Only handle vector override
+	case.
+	(pass_on_stack): Use type_align.
+	(aarch64_gdbarch_init): Register aarch64_type_align gdbarch
+	function.
+
+2019-04-23  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (line_header::file_name_at): Remove unused
+	overload.
+
+2019-04-23  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/24438
+	* contrib/cc-with-tweaks.sh: Remove superfluous .alt file after dwz
+	invocation.
+
+
+2019-03-27  Ali Tamur  <tamur@google.com>
+
+	* dwarf2-frame.c(dwarf_expr_executor::get_addr_index): Update comment
+	* dwarf2expr.c(dwarf_expr_context::execute_stack_op): Add DW_OP_addrx
+	* dwarf2expr.h(dwarf_expr_context::offset): Update comment
+	(dwarf_expr_context::get_addr_index): Likewise
+	* dwarf2loc.c(dwarf_evaluate_loc_desc::get_addr_index): Likewise
+	(symbol_needs_eval_context::get_addr_index): Likewise
+	(disassemble_dwarf_expression): Add DW_OP_addrx
+	* dwarf2read.c(attr_value_as_address): Add DW_FORM_addrx
+	(read_cutu_die_from_dwo): Update comment
+	(skip_one_die): Add DW_FORM_addrx
+	(read_attribute_value): Likewise
+	(var_decode_location): Add DW_OP_addrx
+	(dwarf2_const_value_attr): Add DW_FORM_addrx
+	(dump_die_shallow): Likewise
+	(dwarf2_fetch_constant_bytes): Likewise
+	(decode_locdesc): Add DW_OP_addrx
+	(skip_form_bytes): Add DW_FORM_addrx
+
+2019-04-22  Ali Tamur  <tamur@google.com>
+
+	* MAINTAINERS (Write After Approval): Add self.
+
+2019-04-22  Simon Marchi  <simon.marchi@efficios.com>
+
+	* solib-svr4.c (get_svr4_info): Add pspace parameter.
+	(svr4_keep_data_in_core): Pass current_program_space to get_svr4_info.
+	(open_symbol_file_object): Likewise.
+	(svr4_default_sos): Add info parameter.
+	(svr4_read_so_list): Likewise.
+	(svr4_current_sos_direct): Adjust functions calls to pass down
+	info.
+	(svr4_current_sos_1): Add info parameter.
+	(svr4_current_sos): Call get_svr4_info, pass info down to
+	svr4_current_sos_1.
+	(svr4_fetch_objfile_link_map): Pass objfile->pspace to
+	get_svr4_info.
+	(svr4_in_dynsym_resolve_code): Pass current_program_space to
+	get_svr4_info.
+	(probes_table_htab_remove_objfile_probes): Pass objfile->pspace
+	to get_svr4_info.
+	(probes_table_remove_objfile_probes): Likewise.
+	(register_solib_event_probe): Add info parameter.
+	(solist_update_incremental): Pass info parameter down to
+	svr4_read_so_list.
+	(disable_probes_interface): Add info parameter.
+	(svr4_handle_solib_event): Pass current_program_space to
+	get_svr4_info.  Adjust disable_probes_interface cleanup.
+	(svr4_create_probe_breakpoints): Add info parameter, pass it
+	down to register_solib_event_probe.
+	(svr4_create_solib_event_breakpoints): Add info parameter,
+	pass it down to svr4_create_probe_breakpoints.
+	(enable_break): Pass info down to
+	svr4_create_solib_event_breakpoints.
+	(svr4_solib_create_inferior_hook): Pass current_program_space to
+	get_svr4_info.
+	(svr4_clear_solib): Likewise.
+
+2019-04-22  Pedro Alves  <palves@redhat.com>
+
+	* solib-svr4.c (svr4_free_objfile_observer): New.
+	(probe_and_action::objfile): New field.
+	(probes_table_htab_remove_objfile_probes)
+	(probes_table_remove_objfile_probes): New functions.
+	(register_solib_event_probe): Add 'objfile' parameter.  Store it
+	in the new probe_and_action.  Don't store the probe in 'lookup'.
+	(svr4_create_probe_breakpoints): Pass objfile to
+	register_solib_event_probe.
+	(_initialize_svr4_solib): Register a free_objfile observer.
+
+2019-04-19  Tom Tromey  <tom@tromey.com>
+
+	* common/queue.h: Remove.
+
+2019-04-19  Tom Tromey  <tom@tromey.com>
+
+	* event-loop.c: Don't include "common/queue.h".
+
+2019-04-19  Tom Tromey  <tom@tromey.com>
+
+	* remote.c (remote_target): Use delete.
+	* remote-notif.h: Include <list>, not "common/queue.h".
+	(notif_client_p): Remove typedef.
+	(remote_notif_state): Add constructor, destructor, initializer.
+	<notif_queue>: Now a std::list.
+	(remote_notif_state_xfree): Don't declare.
+	* remote-notif.c (remote_notif_process, handle_notification)
+	(remote_notif_state_allocate): Update.
+	(~remote_notif_state): Rename from remote_notif_state_xfree.
+
+2019-04-19  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (reread_symbols): Update.
+	* objfiles.c (objfile_register_static_link)
+	(objfile_lookup_static_link): Update
+	(~objfile) Don't delete static_links.
+	* objfiles.h (struct objfile) <static_links>: Now an htab_up.
+
+2019-04-19  Tom Tromey  <tom@tromey.com>
+
+	* type-stack.h (struct type_stack) <insert>: Constify string.
+	* type-stack.c (type_stack::insert): Constify string.
+	* gdbtypes.h (lookup_template_type): Update.
+	(address_space_name_to_int): Update.
+	* gdbtypes.c (address_space_name_to_int): Make space_identifier
+	const.
+	(lookup_template_type): Make name const.
+	* c-exp.y: Update rules.
+	(lex_one_token, classify_name, classify_inner_name)
+	(c_print_token): Update.
+	* p-exp.y: Update rules.
+	(yylex): Update.
+	* f-exp.y: Update rules.
+	(yylex): Update.
+	* d-exp.y: Update rules.
+	(lex_one_token, classify_name, classify_inner_name): Update.
+	* parse.c (write_dollar_variable, copy_name): Return std::string.
+	* parser-defs.h (copy_name): Change return type.
+	* m2-exp.y: Update rules.
+	(yylex): Update.
+	* go-exp.y (lex_one_token): Update.
+	Update rules.
+	(classify_unsafe_function, classify_packaged_name)
+	(classify_name, yylex): Update.
+
+2019-04-19  Sergei Trofimovich <siarheit@google.com>
+
+	* configure.ac: add --enable-source-highlight switch.
+	* configure: Regenerate.
+	* top.c (print_gdb_version): plumb --enable-source-highlight
+	status to "show configuration".
+
+2019-04-19  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_is_variant_part, ada_to_fixed_type_1):
+	Check ADA_TYPE_P.
+	(empty_record, ada_template_to_fixed_record_type_1)
+	(template_to_static_fixed_type)
+	(to_record_with_fixed_variant_part): Use INIT_NONE_SPECIFIC.
+	* cp-abi.c (value_rtti_type): Check HAVE_CPLUS_STRUCT.
+	* gdbtypes.h (INIT_NONE_SPECIFIC, ADA_TYPE_P): New
+	macros.
+
+2019-04-19  Ilya Yu. Malakhov  <malakhov@mcst.ru>
+
+	PR symtab/24423:
+	* source.c (print_source_lines_base): Advance "iter" when a
+	control character is seen.
+
+2019-04-19  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* inferior.h (struct infcall_suspend_state_deleter):
+	Catch exception in destructor to avoid crash.
+
+2019-04-19  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-cmds.c (_initialize_cli_cmds): Move "shell" "!" alias
+	close to the add_com "shell".
+
+2019-04-18  Tom Tromey  <tromey@adacore.com>
+
+	* process-stratum-target.h (class process_stratum_target)
+	<stratum>: Add "final".
+
+2019-04-17  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (dwarf2_init_complex_target_type): Check "tt"
+	against nullptr before use.
+
+2019-04-17  Alan Hayward  <alan.hayward@arm.com>
+
+	* nat/linux-waitpid.c (linux_debug): Call debug_vprintf.
+
+2019-04-17  Jim Wilson  <jimw@sifive.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_breakpoint_kind_from_pc): Hanndle case where
+	code read might fail, assume 4-byte breakpoint in that case.
+
+2019-04-15  Leszek Swirski  <leszeks@google.com>
+
+	* amd64-tdep.c (amd64_classify_aggregate): Use cp_pass_by_reference
+	rather than a hand-rolled POD check when checking for forced MEMORY
+	classification.
+
+2019-04-15  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-linux-nat.c (store_sveregs_to_thread): Set vector length.
+	* nat/aarch64-sve-linux-ptrace.c (aarch64_sve_set_vq): New
+	function.
+	(aarch64_sve_regs_copy_to_reg_buf): Remove VG checks.
+	(aarch64_sve_regs_copy_from_reg_buf): Likewise.
+	* nat/aarch64-sve-linux-ptrace.h (aarch64_sve_set_vq): New
+	declaration.
+
+2019-04-15  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-linux-nat.c
+	(aarch64_linux_nat_target::thread_architecture): Add override.
+	* aarch64-tdep.c (aarch64_gdbarch_init): Ensure different tdesc for
+	each VQ.
+
+2019-04-15  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-tdep.c (aarch64_gdbarch_init): Move gdbarch lookup.
+
+2019-04-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2read.c (dwarf2_init_complex_target_type): Handle complex
+	target types of size 96-bits, add some additional comments, and
+	check that the builtin type we found was the correct size.
+
+2019-04-12  Eli Zaretskii  <eliz@gnu.org>
+
+	* utils.c (prompt_for_continue): Don't restore the styling at the
+	end, as applied_style has the wrong value.  This fixes styling in
+	long lists of file names that are interrupted by the "Continue?"
+	prompt.
+
+2019-04-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_defn): Remove use of LANG_MAGIC.
+	* c-lang.c (c_language_defn): Likewise.
+	(cplus_language_defn): Likewise.
+	(asm_language_defn): Likewise.
+	(minimal_language_defn): Likewise.
+	* d-lang.c (d_language_defn): Likewise.
+	* f-lang.c (f_language_defn): Likewise.
+	* go-lang.c (go_language_defn): Likewise.
+	* language.c (unknown_language_defn): Likewise.
+	(auto_language_defn): Likewise.
+	* language.h (struct language_defn): Remove la_magic field.
+	(LANG_MAGIC): Delete.
+	* m2-lang.c (m2_language_defn): Remove use of LANG_MAGIC.
+	* objc-lang.c (objc_language_defn): Likewise.
+	* opencl-lang.c (opencl_language_defn): Likewise.
+	* p-lang.c (pascal_language_defn): Likewise.
+	* rust-lang.c (rust_language_defn): Likewise.
+
+2019-04-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_type_align): New function.
+	(riscv_type_alignment): Delete.
+	(riscv_arg_location): Use 'type_align'.
+	(riscv_gdbarch_init): Register riscv_type_align gdbarch function.
+
+2019-04-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbtypes.c (type_align): A struct with no non-static fields also
+	has alignment of 1.
+
+2019-04-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_call_arg_complex_float): Fix offset of first
+	component to 0.
+	(riscv_struct_info::riscv_struct_info): Initialise m_offsets
+	member.
+	(riscv_struct_info::analyse): New implementation using new
+	analyse_inner member function.
+	(riscv_struct_info::field_offset): New member function.
+	(riscv_struct_info::m_offsets): New member variable.
+	(riscv_struct_info::analyse_inner): New private member function,
+	takes the old implementation of riscv_struct_info::analyse but
+	extended to track field offsets.
+	(riscv_call_arg_struct): Update the struct folding special cases
+	to handle cases where empty C++ structs, which are non-zero
+	length, are found.
+	(riscv_arg_location): Initialise the length of each location, a
+	non-zero length now indicates the location is in use.
+	(riscv_push_dummy_call): Allow for the first location having a
+	non-zero offset when setting up arguments.
+	(riscv_return_value): Likewise, but for return values.
+
+2019-04-11  Tom Tromey  <tromey@adacore.com>
+
+	* utils.c (internal_vproblem): Make "msg" const.
+
+2019-04-11  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-tdep.c (aarch64_analyze_prologue_test): Reset saved regs.
+	* trad-frame.c (trad_frame_reset_saved_regs): New function.
+	(trad_frame_alloc_saved_regs): Call trad_frame_reset_saved_regs.
+	* trad-frame.h (trad_frame_reset_saved_regs): New declaration.
+
+2019-04-10  Kevin Buettner  <kevinb@redhat.com>
+
+	* amd64-linux-nat.c (amd64_linux_collect_native_gregset): New
+	function.
+	(fill_gregset): Call amd64_linux_collect_native_gregset instead
+	of amd64_collect_native_gregset.
+	(amd64_linux_nat_target::store_registers): Likewise.
+
+2019-04-10  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (lookup_global_symbol_from_objfile)
+	(lookup_symbol_in_objfile_from_linkage_name): Use the iterator.
+	* objfiles.h (class separate_debug_iterator): New.
+	(class separate_debug_range): New.
+	(struct objfile) <separate_debug_objfiles>: New method.
+	(objfile_separate_debug_iterate): Don't declare.
+	* objfiles.c (separate_debug_iterator::operator++): Rename from
+	objfile_separate_debug_iterate.
+	(objfile_relocate, objfile_rebase, objfile_has_symbols): Use the
+	iterator.
+	* minsyms.c (lookup_minimal_symbol_by_pc_section): Use the
+	iterator.
+
+2019-04-10  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (reread_symbols): Remove old comment.
+	* objfiles.c (free_all_objfiles): Fix a typo.
+
+2019-04-10  Tom Tromey  <tom@tromey.com>
+
+	* ia64-tdep.c (ia64_get_dyn_info_list): Use foreach.
+	* minsyms.c (lookup_minimal_symbol): Use foreach.
+	(lookup_minimal_symbol_text, lookup_minimal_symbol_by_pc_name)
+	(lookup_minimal_symbol_solib_trampoline): Likewise.
+	* symfile.c (reread_symbols): Use foreach.
+
+2019-04-09  Ivan Begert  <ivanbegert@gmail.com>
+	    Tom Tromey  <tromey@adacore.com>
+
+	PR rust/24414:
+	* rust-exp.y (rust_parser::lex_number): Use strtoulst.
+	(rust_lex_int_test): Change "value" to be LONGEST.
+	(rust_lex_tests): Add test for long integer literal.
+
+2019-04-09  Tom Tromey  <tromey@adacore.com>
+
+	* remote.c (remote_target::remote_add_inferior): Change fake_pid_p
+	to bool.
+	(extended_remote_target::attach): Update.
+	(remote_target::remote_notice_new_inferior): Update.
+	(remote_target::add_current_inferior_and_thread): Update.
+	* inferior.c (exit_inferior_1): Use "false".
+	* corelow.c (add_to_thread_list): Make fake_pid_p bool.
+
+2019-04-09  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infcmd.c (run_command_1): Pass -qualified to tbreak when using
+	the "start" command.
+
+2019-04-08  Kevin Buettner  <kevinb@redhat.com>
+
+	* python/py-inferior.c (infpy_thread_from_thread_handle):
+	Adjust comments to reflect renaming of thread_from_thread_handle
+	to thread_from_handle.  Adjust keywords.  Fix type error message.
+	(inferior_object_methods): Add thread_from_handle.  Retain
+	thread_from_thread_handle, but mark it as deprecated.
+
+2019-04-08  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdbthread.h (find_thread_by_handle): Revise declaration.
+	* thread.c (find_thread_by_handle): Likewise.  Adjust
+	implementation too.
+	* python/py-inferior.c (infpy_thread_from_thread_handle): Add
+	support for buffer objects as handles.
+
+2019-04-08  Kevin Buettner  <kevinb@redhat.com>
+
+	* python/py-infthread.c (thpy_thread_handle): New function.
+	(thread_object_methods): Register thpy_thread_handle.
+
+2019-04-08  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdbthread.h (thread_to_thread_handle): Declare.
+	* thread.c (gdbtypes.h): Include.
+	(thread_to_thread_handle): New function.
+
+	* target.h (struct target_ops): Add thread_info_to_thread_handle.
+	(target_thread_info_to_thread_handle): Declare.
+	* target.c (target_thread_info_to_thread_handle): New function.
+	* target-debug.h (target_debug_print_gdb_byte_vector): Define.
+	* target-delegates.c: Regenerate.
+
+	* linux-thread-db.c (class thread_db_target): Add method
+	thread_info_to_thread_handle.
+	(thread_db_target::thread_info_to_thread_handle): Define.
+	* remote.c (class remote_target): Add new method
+	thread_info_to_thread_handle.
+	(remote_target::thread_info_to_thread_handle): Define.
+
+2019-04-08  Pedro Alves  <palves@redhat.com>
+
+	* common/common-exceptions.c (throw_exception): Don't create
+	named object to throw; throw directly.
+	(throw_it): Likewise.  Don't initialize gdb_exception::message
+	here, with new; pass FMT and AP to the ctor instead.
+	* common/common-exceptions.h: Include <string>.
+	(gdb_exception::gdb_exception(enum return_reason, enum errors,
+	const char *, va_list)): New ctor.  Use std::make_shared.
+	(gdb_exception_error::gdb_exception_error(enum return_reason, enum
+	errors)): Delete.
+	(gdb_exception_error::gdb_exception_error(enum errors, const char
+	*, va_list)): New.
+	(gdb_exception_error::gdb_exception_error(const gdb_exception &)):
+	Add assertion.
+	(gdb_exception_quit::gdb_exception_quit(enum return_reason, enum
+	errors)): Delete.
+	(gdb_exception_quit::gdb_exception_quit(const char *, va_list)): New.
+	(gdb_exception_quit::gdb_exception_quit(const gdb_exception &)):
+	Add assertion.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* valops.c (value_rtti_indirect_type): Replace throw_exception
+	with throw.
+	* tracefile-tfile.c (tfile_target_open): Replace throw_exception
+	with throw.
+	* thread.c (thr_try_catch_cmd): Replace throw_exception with
+	throw.
+	* target.c (target_translate_tls_address): Replace throw_exception
+	with throw.
+	* stack.c (frame_apply_command_count): Replace throw_exception
+	with throw.
+	* solib-spu.c (append_ocl_sos): Replace throw_exception with
+	throw.
+	* s390-tdep.c (s390_frame_unwind_cache): Replace throw_exception
+	with throw.
+	* rs6000-tdep.c (rs6000_frame_cache)
+	(rs6000_epilogue_frame_cache): Replace throw_exception with throw.
+	* remote.c: Replace throw_exception with throw.
+	* record-full.c (record_full_message, record_full_wait_1)
+	(record_full_restore): Replace throw_exception with throw.
+	* record-btrace.c:
+	(get_thread_current_frame_id, record_btrace_start_replaying)
+	(cmd_record_btrace_bts_start, cmd_record_btrace_pt_start)
+	(cmd_record_btrace_start): Replace throw_exception with throw.
+	* parse.c (parse_exp_in_context_1): Replace throw_exception with
+	throw.
+	* linux-nat.c (detach_one_lwp, linux_resume_one_lwp)
+	(resume_stopped_resumed_lwps): Replace throw_exception with throw.
+	* linespec.c:
+	(find_linespec_symbols): Replace throw_exception with throw.
+	* infrun.c (displaced_step_prepare, resume): Replace
+	throw_exception with throw.
+	* infcmd.c (post_create_inferior): Replace throw_exception with
+	throw.
+	* inf-loop.c (inferior_event_handler): Replace throw_exception
+	with throw.
+	* i386-tdep.c (i386_frame_cache, i386_epilogue_frame_cache)
+	(i386_sigtramp_frame_cache): Replace throw_exception with throw.
+	* frame.c (frame_unwind_pc, get_prev_frame_if_no_cycle)
+	(get_prev_frame_always, get_frame_pc_if_available)
+	(get_frame_address_in_block_if_available, get_frame_language):
+	Replace throw_exception with throw.
+	* frame-unwind.c (frame_unwind_try_unwinder): Replace
+	throw_exception with throw.
+	* eval.c (fetch_subexp_value, evaluate_var_value)
+	(evaluate_funcall, evaluate_subexp_standard): Replace
+	throw_exception with throw.
+	* dwarf2loc.c (call_site_find_chain)
+	(dwarf2_evaluate_loc_desc_full, dwarf2_locexpr_baton_eval):
+	Replace throw_exception with throw.
+	* dwarf2-frame.c (dwarf2_frame_cache): Replace throw_exception
+	with throw.
+	* darwin-nat.c (darwin_attach_pid): Replace throw_exception with
+	throw.
+	* cp-abi.c (baseclass_offset): Replace throw_exception with throw.
+	* completer.c (complete_line_internal): Replace throw_exception
+	with throw.
+	* compile/compile-object-run.c (compile_object_run): Replace
+	throw_exception with throw.
+	* cli/cli-script.c (process_next_line): Replace throw_exception
+	with throw.
+	* btrace.c (btrace_compute_ftrace_pt, btrace_compute_ftrace)
+	(btrace_enable, btrace_maint_update_pt_packets): Replace
+	throw_exception with throw.
+	* breakpoint.c (create_breakpoint, save_breakpoints): Replace
+	throw_exception with throw.
+	* break-catch-throw.c (re_set_exception_catchpoint): Replace
+	throw_exception with throw.
+	* amd64-tdep.c (amd64_frame_cache, amd64_sigtramp_frame_cache)
+	(amd64_epilogue_frame_cache): Replace throw_exception with throw.
+	* aarch64-tdep.c (aarch64_make_prologue_cache)
+	(aarch64_make_stub_cache): Replace throw_exception with throw.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* common/common-exceptions.c (throw_exception): Rename from
+	throw_exception_cxx.  Remove old copy.  Make argument const.
+	(throw_it): Create and throw exception objects directly.
+	* common/common-exceptions.h (throw_exception): Make argument
+	const.
+	(struct gdb_exception_error): Add constructor.
+	(struct gdb_exception_quit): Add constructor.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* common/common-exceptions.h (exception_rethrow): Don't declare.
+	(TRY_SJLJ): Update comment.
+	(TRY, CATCH, END_CATCH): Remove.
+	* common/common-exceptions.c (exception_rethrow): Remove.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* common/common-exceptions.h (gdb_exception_RETURN_MASK_ALL):
+	Remove.
+	(gdb_exception_error): Rename from
+	gdb_exception_RETURN_MASK_ERROR.
+	(gdb_exception_quit): Rename from gdb_exception_RETURN_MASK_QUIT.
+	(gdb_quit_bad_alloc): Update.
+	* aarch64-tdep.c: Update.
+	* ada-lang.c: Update.
+	* ada-typeprint.c: Update.
+	* ada-valprint.c: Update.
+	* amd64-tdep.c: Update.
+	* arch-utils.c: Update.
+	* break-catch-throw.c: Update.
+	* breakpoint.c: Update.
+	* btrace.c: Update.
+	* c-varobj.c: Update.
+	* cli/cli-cmds.c: Update.
+	* cli/cli-interp.c: Update.
+	* cli/cli-script.c: Update.
+	* common/common-exceptions.c: Update.
+	* common/new-op.c: Update.
+	* common/selftest.c: Update.
+	* compile/compile-c-symbols.c: Update.
+	* compile/compile-cplus-symbols.c: Update.
+	* compile/compile-object-load.c: Update.
+	* compile/compile-object-run.c: Update.
+	* completer.c: Update.
+	* corelow.c: Update.
+	* cp-abi.c: Update.
+	* cp-support.c: Update.
+	* cp-valprint.c: Update.
+	* darwin-nat.c: Update.
+	* disasm-selftests.c: Update.
+	* dtrace-probe.c: Update.
+	* dwarf-index-cache.c: Update.
+	* dwarf-index-write.c: Update.
+	* dwarf2-frame-tailcall.c: Update.
+	* dwarf2-frame.c: Update.
+	* dwarf2loc.c: Update.
+	* dwarf2read.c: Update.
+	* eval.c: Update.
+	* event-loop.c: Update.
+	* event-top.c: Update.
+	* exec.c: Update.
+	* f-valprint.c: Update.
+	* fbsd-tdep.c: Update.
+	* frame-unwind.c: Update.
+	* frame.c: Update.
+	* gdbtypes.c: Update.
+	* gnu-v3-abi.c: Update.
+	* guile/guile-internal.h: Update.
+	* guile/scm-block.c: Update.
+	* guile/scm-breakpoint.c: Update.
+	* guile/scm-cmd.c: Update.
+	* guile/scm-disasm.c: Update.
+	* guile/scm-frame.c: Update.
+	* guile/scm-lazy-string.c: Update.
+	* guile/scm-math.c: Update.
+	* guile/scm-param.c: Update.
+	* guile/scm-ports.c: Update.
+	* guile/scm-pretty-print.c: Update.
+	* guile/scm-symbol.c: Update.
+	* guile/scm-symtab.c: Update.
+	* guile/scm-type.c: Update.
+	* guile/scm-value.c: Update.
+	* i386-linux-tdep.c: Update.
+	* i386-tdep.c: Update.
+	* inf-loop.c: Update.
+	* infcall.c: Update.
+	* infcmd.c: Update.
+	* infrun.c: Update.
+	* jit.c: Update.
+	* language.c: Update.
+	* linespec.c: Update.
+	* linux-fork.c: Update.
+	* linux-nat.c: Update.
+	* linux-tdep.c: Update.
+	* linux-thread-db.c: Update.
+	* main.c: Update.
+	* mi/mi-cmd-break.c: Update.
+	* mi/mi-cmd-stack.c: Update.
+	* mi/mi-interp.c: Update.
+	* mi/mi-main.c: Update.
+	* objc-lang.c: Update.
+	* p-valprint.c: Update.
+	* parse.c: Update.
+	* ppc-linux-tdep.c: Update.
+	* printcmd.c: Update.
+	* python/py-arch.c: Update.
+	* python/py-breakpoint.c: Update.
+	* python/py-cmd.c: Update.
+	* python/py-finishbreakpoint.c: Update.
+	* python/py-frame.c: Update.
+	* python/py-framefilter.c: Update.
+	* python/py-gdb-readline.c: Update.
+	* python/py-inferior.c: Update.
+	* python/py-infthread.c: Update.
+	* python/py-lazy-string.c: Update.
+	* python/py-linetable.c: Update.
+	* python/py-objfile.c: Update.
+	* python/py-param.c: Update.
+	* python/py-prettyprint.c: Update.
+	* python/py-progspace.c: Update.
+	* python/py-record-btrace.c: Update.
+	* python/py-record.c: Update.
+	* python/py-symbol.c: Update.
+	* python/py-type.c: Update.
+	* python/py-unwind.c: Update.
+	* python/py-utils.c: Update.
+	* python/py-value.c: Update.
+	* python/python.c: Update.
+	* record-btrace.c: Update.
+	* record-full.c: Update.
+	* remote-fileio.c: Update.
+	* remote.c: Update.
+	* riscv-tdep.c: Update.
+	* rs6000-aix-tdep.c: Update.
+	* rs6000-tdep.c: Update.
+	* rust-exp.y: Update.
+	* rust-lang.c: Update.
+	* s390-tdep.c: Update.
+	* selftest-arch.c: Update.
+	* solib-dsbt.c: Update.
+	* solib-frv.c: Update.
+	* solib-spu.c: Update.
+	* solib-svr4.c: Update.
+	* solib.c: Update.
+	* sparc64-linux-tdep.c: Update.
+	* stack.c: Update.
+	* symfile-mem.c: Update.
+	* symmisc.c: Update.
+	* target.c: Update.
+	* thread.c: Update.
+	* top.c: Update.
+	* tracefile-tfile.c: Update.
+	* tui/tui.c: Update.
+	* typeprint.c: Update.
+	* unittests/cli-utils-selftests.c: Update.
+	* unittests/parse-connection-spec-selftests.c: Update.
+	* valops.c: Update.
+	* valprint.c: Update.
+	* value.c: Update.
+	* varobj.c: Update.
+	* windows-nat.c: Update.
+	* x86-linux-nat.c: Update.
+	* xml-support.c: Update.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* xml-support.c: Use C++ exception handling.
+	* x86-linux-nat.c: Use C++ exception handling.
+	* windows-nat.c: Use C++ exception handling.
+	* varobj.c: Use C++ exception handling.
+	* value.c: Use C++ exception handling.
+	* valprint.c: Use C++ exception handling.
+	* valops.c: Use C++ exception handling.
+	* unittests/parse-connection-spec-selftests.c: Use C++ exception
+	handling.
+	* unittests/cli-utils-selftests.c: Use C++ exception handling.
+	* typeprint.c: Use C++ exception handling.
+	* tui/tui.c: Use C++ exception handling.
+	* tracefile-tfile.c: Use C++ exception handling.
+	* top.c: Use C++ exception handling.
+	* thread.c: Use C++ exception handling.
+	* target.c: Use C++ exception handling.
+	* symmisc.c: Use C++ exception handling.
+	* symfile-mem.c: Use C++ exception handling.
+	* stack.c: Use C++ exception handling.
+	* sparc64-linux-tdep.c: Use C++ exception handling.
+	* solib.c: Use C++ exception handling.
+	* solib-svr4.c: Use C++ exception handling.
+	* solib-spu.c: Use C++ exception handling.
+	* solib-frv.c: Use C++ exception handling.
+	* solib-dsbt.c: Use C++ exception handling.
+	* selftest-arch.c: Use C++ exception handling.
+	* s390-tdep.c: Use C++ exception handling.
+	* rust-lang.c: Use C++ exception handling.
+	* rust-exp.y: Use C++ exception handling.
+	* rs6000-tdep.c: Use C++ exception handling.
+	* rs6000-aix-tdep.c: Use C++ exception handling.
+	* riscv-tdep.c: Use C++ exception handling.
+	* remote.c: Use C++ exception handling.
+	* remote-fileio.c: Use C++ exception handling.
+	* record-full.c: Use C++ exception handling.
+	* record-btrace.c: Use C++ exception handling.
+	* python/python.c: Use C++ exception handling.
+	* python/py-value.c: Use C++ exception handling.
+	* python/py-utils.c: Use C++ exception handling.
+	* python/py-unwind.c: Use C++ exception handling.
+	* python/py-type.c: Use C++ exception handling.
+	* python/py-symbol.c: Use C++ exception handling.
+	* python/py-record.c: Use C++ exception handling.
+	* python/py-record-btrace.c: Use C++ exception handling.
+	* python/py-progspace.c: Use C++ exception handling.
+	* python/py-prettyprint.c: Use C++ exception handling.
+	* python/py-param.c: Use C++ exception handling.
+	* python/py-objfile.c: Use C++ exception handling.
+	* python/py-linetable.c: Use C++ exception handling.
+	* python/py-lazy-string.c: Use C++ exception handling.
+	* python/py-infthread.c: Use C++ exception handling.
+	* python/py-inferior.c: Use C++ exception handling.
+	* python/py-gdb-readline.c: Use C++ exception handling.
+	* python/py-framefilter.c: Use C++ exception handling.
+	* python/py-frame.c: Use C++ exception handling.
+	* python/py-finishbreakpoint.c: Use C++ exception handling.
+	* python/py-cmd.c: Use C++ exception handling.
+	* python/py-breakpoint.c: Use C++ exception handling.
+	* python/py-arch.c: Use C++ exception handling.
+	* printcmd.c: Use C++ exception handling.
+	* ppc-linux-tdep.c: Use C++ exception handling.
+	* parse.c: Use C++ exception handling.
+	* p-valprint.c: Use C++ exception handling.
+	* objc-lang.c: Use C++ exception handling.
+	* mi/mi-main.c: Use C++ exception handling.
+	* mi/mi-interp.c: Use C++ exception handling.
+	* mi/mi-cmd-stack.c: Use C++ exception handling.
+	* mi/mi-cmd-break.c: Use C++ exception handling.
+	* main.c: Use C++ exception handling.
+	* linux-thread-db.c: Use C++ exception handling.
+	* linux-tdep.c: Use C++ exception handling.
+	* linux-nat.c: Use C++ exception handling.
+	* linux-fork.c: Use C++ exception handling.
+	* linespec.c: Use C++ exception handling.
+	* language.c: Use C++ exception handling.
+	* jit.c: Use C++ exception handling.
+	* infrun.c: Use C++ exception handling.
+	* infcmd.c: Use C++ exception handling.
+	* infcall.c: Use C++ exception handling.
+	* inf-loop.c: Use C++ exception handling.
+	* i386-tdep.c: Use C++ exception handling.
+	* i386-linux-tdep.c: Use C++ exception handling.
+	* guile/scm-value.c: Use C++ exception handling.
+	* guile/scm-type.c: Use C++ exception handling.
+	* guile/scm-symtab.c: Use C++ exception handling.
+	* guile/scm-symbol.c: Use C++ exception handling.
+	* guile/scm-pretty-print.c: Use C++ exception handling.
+	* guile/scm-ports.c: Use C++ exception handling.
+	* guile/scm-param.c: Use C++ exception handling.
+	* guile/scm-math.c: Use C++ exception handling.
+	* guile/scm-lazy-string.c: Use C++ exception handling.
+	* guile/scm-frame.c: Use C++ exception handling.
+	* guile/scm-disasm.c: Use C++ exception handling.
+	* guile/scm-cmd.c: Use C++ exception handling.
+	* guile/scm-breakpoint.c: Use C++ exception handling.
+	* guile/scm-block.c: Use C++ exception handling.
+	* guile/guile-internal.h: Use C++ exception handling.
+	* gnu-v3-abi.c: Use C++ exception handling.
+	* gdbtypes.c: Use C++ exception handling.
+	* frame.c: Use C++ exception handling.
+	* frame-unwind.c: Use C++ exception handling.
+	* fbsd-tdep.c: Use C++ exception handling.
+	* f-valprint.c: Use C++ exception handling.
+	* exec.c: Use C++ exception handling.
+	* event-top.c: Use C++ exception handling.
+	* event-loop.c: Use C++ exception handling.
+	* eval.c: Use C++ exception handling.
+	* dwarf2read.c: Use C++ exception handling.
+	* dwarf2loc.c: Use C++ exception handling.
+	* dwarf2-frame.c: Use C++ exception handling.
+	* dwarf2-frame-tailcall.c: Use C++ exception handling.
+	* dwarf-index-write.c: Use C++ exception handling.
+	* dwarf-index-cache.c: Use C++ exception handling.
+	* dtrace-probe.c: Use C++ exception handling.
+	* disasm-selftests.c: Use C++ exception handling.
+	* darwin-nat.c: Use C++ exception handling.
+	* cp-valprint.c: Use C++ exception handling.
+	* cp-support.c: Use C++ exception handling.
+	* cp-abi.c: Use C++ exception handling.
+	* corelow.c: Use C++ exception handling.
+	* completer.c: Use C++ exception handling.
+	* compile/compile-object-run.c: Use C++ exception handling.
+	* compile/compile-object-load.c: Use C++ exception handling.
+	* compile/compile-cplus-symbols.c: Use C++ exception handling.
+	* compile/compile-c-symbols.c: Use C++ exception handling.
+	* common/selftest.c: Use C++ exception handling.
+	* common/new-op.c: Use C++ exception handling.
+	* cli/cli-script.c: Use C++ exception handling.
+	* cli/cli-interp.c: Use C++ exception handling.
+	* cli/cli-cmds.c: Use C++ exception handling.
+	* c-varobj.c: Use C++ exception handling.
+	* btrace.c: Use C++ exception handling.
+	* breakpoint.c: Use C++ exception handling.
+	* break-catch-throw.c: Use C++ exception handling.
+	* arch-utils.c: Use C++ exception handling.
+	* amd64-tdep.c: Use C++ exception handling.
+	* ada-valprint.c: Use C++ exception handling.
+	* ada-typeprint.c: Use C++ exception handling.
+	* ada-lang.c: Use C++ exception handling.
+	* aarch64-tdep.c: Use C++ exception handling.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* xml-support.c (gdb_xml_parser::parse): Update.
+	* x86-linux-nat.c (x86_linux_nat_target::enable_btrace): Update.
+	* value.c (show_convenience): Update.
+	* unittests/cli-utils-selftests.c (test_number_or_range_parser)
+	(test_parse_flags_qcs): Update.
+	* thread.c (thr_try_catch_cmd): Update.
+	* target.c (target_translate_tls_address): Update.
+	* stack.c (print_frame_arg, read_frame_local, read_frame_arg)
+	(info_frame_command_core, frame_apply_command_count): Update.
+	* rust-exp.y (rust_lex_exception_test): Update.
+	* riscv-tdep.c (riscv_print_one_register_info): Update.
+	* remote.c (remote_target::enable_btrace): Update.
+	* record-btrace.c (record_btrace_enable_warn): Update.
+	* python/py-utils.c (gdbpy_convert_exception): Update.
+	* printcmd.c (do_one_display, print_variable_and_value): Update.
+	* mi/mi-main.c (mi_print_exception): Update.
+	* mi/mi-interp.c (mi_cmd_interpreter_exec): Use SCOPE_EXIT.
+	* mi/mi-cmd-stack.c (list_arg_or_local): Update.
+	* linux-nat.c (linux_nat_target::attach): Update.
+	* linux-fork.c (class scoped_switch_fork_info): Update.
+	* infrun.c (displaced_step_prepare): Update.
+	* infcall.c (call_function_by_hand_dummy): Update.
+	* guile/scm-exception.c (gdbscm_scm_from_gdb_exception): Update.
+	* gnu-v3-abi.c (print_one_vtable): Update.
+	* frame.c (get_prev_frame_always): Update.
+	* f-valprint.c (info_common_command_for_block): Update.
+	* exec.c (try_open_exec_file): Update.
+	* exceptions.c (print_exception, exception_print)
+	(exception_fprintf, exception_print_same): Update.
+	* dwarf2-frame.c (dwarf2_build_frame_info): Update.
+	* dwarf-index-cache.c (index_cache::store)
+	(index_cache::lookup_gdb_index): Update.
+	* darwin-nat.c (maybe_cache_shell): Update.
+	* cp-valprint.c (cp_print_value_fields): Update.
+	* compile/compile-cplus-symbols.c (gcc_cplus_convert_symbol)
+	(gcc_cplus_symbol_address): Update.
+	* compile/compile-c-symbols.c (gcc_convert_symbol)
+	(gcc_symbol_address, generate_c_for_for_one_variable): Update.
+	* common/selftest.c: Update.
+	* common/common-exceptions.h (struct gdb_exception) <message>: Now
+	a std::string.
+	(exception_try_scope_entry, exception_try_scope_exit): Don't
+	declare.
+	(struct exception_try_scope): Remove.
+	(TRY): Don't use exception_try_scope.
+	(struct gdb_exception): Add constructor, operator=.
+	<what>: New method.
+	(struct gdb_exception_RETURN_MASK_ALL)
+	(struct gdb_exception_RETURN_MASK_ERROR)
+	(struct gdb_exception_RETURN_MASK_QUIT): Add constructor.
+	(struct gdb_quit_bad_alloc): Update.
+	* common/common-exceptions.c (exception_none): Change
+	initializer.
+	(struct catcher) <state, exception>: Initialize inline.
+	<prev>: Remove member.
+	(current_catcher): Remove.
+	(catchers): New global.
+	(exceptions_state_mc_init): Simplify.
+	(catcher_pop): Remove.
+	(exceptions_state_mc, exceptions_state_mc_catch): Update.
+	(try_scope_depth, exception_try_scope_entry)
+	(exception_try_scope_exit): Remove.
+	(throw_exception_sjlj): Update.
+	(exception_messages, exception_messages_size): Remove.
+	(throw_it): Simplify.
+	(gdb_exception_sliced_copy): Remove.
+	(throw_exception_cxx): Update.
+	* cli/cli-script.c (script_from_file): Update.
+	* breakpoint.c (insert_bp_location, update_breakpoint_locations):
+	Update.
+	* ada-valprint.c (ada_val_print): Update.
+	* ada-lang.c (ada_to_fixed_type_1, ada_exception_name_addr)
+	(create_excep_cond_exprs): Update.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* common/common-exceptions.h (GDB_XCPT_SJMP, GDB_XCPT_TRY)
+	(GDB_XCPT_RAW_TRY, GDB_XCPT): Remove.
+	(TRY, CATCH, END_CATCH): Remove some definitions.
+	* common/common-exceptions.c: Don't use GDB_XCPT.
+	(catcher_list_size): Remove.
+	(throw_exception, throw_it): Simplify.
+
+2019-04-05  Tom Tromey  <tom@tromey.com>
+
+	Revert the header-sorting patch.
+	* ft32-tdep.c: Revert.
+	* frv-tdep.c: Revert.
+	* frv-linux-tdep.c: Revert.
+	* frame.c: Revert.
+	* frame-unwind.c: Revert.
+	* frame-base.c: Revert.
+	* fork-child.c: Revert.
+	* findvar.c: Revert.
+	* findcmd.c: Revert.
+	* filesystem.c: Revert.
+	* filename-seen-cache.h: Revert.
+	* filename-seen-cache.c: Revert.
+	* fbsd-tdep.c: Revert.
+	* fbsd-nat.h: Revert.
+	* fbsd-nat.c: Revert.
+	* f-valprint.c: Revert.
+	* f-typeprint.c: Revert.
+	* f-lang.c: Revert.
+	* extension.h: Revert.
+	* extension.c: Revert.
+	* extension-priv.h: Revert.
+	* expprint.c: Revert.
+	* exec.h: Revert.
+	* exec.c: Revert.
+	* exceptions.c: Revert.
+	* event-top.c: Revert.
+	* event-loop.c: Revert.
+	* eval.c: Revert.
+	* elfread.c: Revert.
+	* dwarf2read.h: Revert.
+	* dwarf2read.c: Revert.
+	* dwarf2loc.c: Revert.
+	* dwarf2expr.h: Revert.
+	* dwarf2expr.c: Revert.
+	* dwarf2-frame.c: Revert.
+	* dwarf2-frame-tailcall.c: Revert.
+	* dwarf-index-write.h: Revert.
+	* dwarf-index-write.c: Revert.
+	* dwarf-index-common.c: Revert.
+	* dwarf-index-cache.h: Revert.
+	* dwarf-index-cache.c: Revert.
+	* dummy-frame.c: Revert.
+	* dtrace-probe.c: Revert.
+	* disasm.h: Revert.
+	* disasm.c: Revert.
+	* disasm-selftests.c: Revert.
+	* dictionary.c: Revert.
+	* dicos-tdep.c: Revert.
+	* demangle.c: Revert.
+	* dcache.h: Revert.
+	* dcache.c: Revert.
+	* darwin-nat.h: Revert.
+	* darwin-nat.c: Revert.
+	* darwin-nat-info.c: Revert.
+	* d-valprint.c: Revert.
+	* d-namespace.c: Revert.
+	* d-lang.c: Revert.
+	* ctf.c: Revert.
+	* csky-tdep.c: Revert.
+	* csky-linux-tdep.c: Revert.
+	* cris-tdep.c: Revert.
+	* cris-linux-tdep.c: Revert.
+	* cp-valprint.c: Revert.
+	* cp-support.c: Revert.
+	* cp-namespace.c: Revert.
+	* cp-abi.c: Revert.
+	* corelow.c: Revert.
+	* corefile.c: Revert.
+	* continuations.c: Revert.
+	* completer.h: Revert.
+	* completer.c: Revert.
+	* complaints.c: Revert.
+	* coffread.c: Revert.
+	* coff-pe-read.c: Revert.
+	* cli-out.h: Revert.
+	* cli-out.c: Revert.
+	* charset.c: Revert.
+	* c-varobj.c: Revert.
+	* c-valprint.c: Revert.
+	* c-typeprint.c: Revert.
+	* c-lang.c: Revert.
+	* buildsym.c: Revert.
+	* buildsym-legacy.c: Revert.
+	* build-id.h: Revert.
+	* build-id.c: Revert.
+	* btrace.c: Revert.
+	* bsd-uthread.c: Revert.
+	* breakpoint.h: Revert.
+	* breakpoint.c: Revert.
+	* break-catch-throw.c: Revert.
+	* break-catch-syscall.c: Revert.
+	* break-catch-sig.c: Revert.
+	* blockframe.c: Revert.
+	* block.c: Revert.
+	* bfin-tdep.c: Revert.
+	* bfin-linux-tdep.c: Revert.
+	* bfd-target.c: Revert.
+	* bcache.c: Revert.
+	* ax-general.c: Revert.
+	* ax-gdb.h: Revert.
+	* ax-gdb.c: Revert.
+	* avr-tdep.c: Revert.
+	* auxv.c: Revert.
+	* auto-load.c: Revert.
+	* arm-wince-tdep.c: Revert.
+	* arm-tdep.c: Revert.
+	* arm-symbian-tdep.c: Revert.
+	* arm-pikeos-tdep.c: Revert.
+	* arm-obsd-tdep.c: Revert.
+	* arm-nbsd-tdep.c: Revert.
+	* arm-nbsd-nat.c: Revert.
+	* arm-linux-tdep.c: Revert.
+	* arm-linux-nat.c: Revert.
+	* arm-fbsd-tdep.c: Revert.
+	* arm-fbsd-nat.c: Revert.
+	* arm-bsd-tdep.c: Revert.
+	* arch-utils.c: Revert.
+	* arc-tdep.c: Revert.
+	* arc-newlib-tdep.c: Revert.
+	* annotate.h: Revert.
+	* annotate.c: Revert.
+	* amd64-windows-tdep.c: Revert.
+	* amd64-windows-nat.c: Revert.
+	* amd64-tdep.c: Revert.
+	* amd64-sol2-tdep.c: Revert.
+	* amd64-obsd-tdep.c: Revert.
+	* amd64-obsd-nat.c: Revert.
+	* amd64-nbsd-tdep.c: Revert.
+	* amd64-nbsd-nat.c: Revert.
+	* amd64-nat.c: Revert.
+	* amd64-linux-tdep.c: Revert.
+	* amd64-linux-nat.c: Revert.
+	* amd64-fbsd-tdep.c: Revert.
+	* amd64-fbsd-nat.c: Revert.
+	* amd64-dicos-tdep.c: Revert.
+	* amd64-darwin-tdep.c: Revert.
+	* amd64-bsd-nat.c: Revert.
+	* alpha-tdep.c: Revert.
+	* alpha-obsd-tdep.c: Revert.
+	* alpha-nbsd-tdep.c: Revert.
+	* alpha-mdebug-tdep.c: Revert.
+	* alpha-linux-tdep.c: Revert.
+	* alpha-linux-nat.c: Revert.
+	* alpha-bsd-tdep.c: Revert.
+	* alpha-bsd-nat.c: Revert.
+	* aix-thread.c: Revert.
+	* agent.c: Revert.
+	* addrmap.c: Revert.
+	* ada-varobj.c: Revert.
+	* ada-valprint.c: Revert.
+	* ada-typeprint.c: Revert.
+	* ada-tasks.c: Revert.
+	* ada-lang.c: Revert.
+	* aarch64-tdep.c: Revert.
+	* aarch64-ravenscar-thread.c: Revert.
+	* aarch64-newlib-tdep.c: Revert.
+	* aarch64-linux-tdep.c: Revert.
+	* aarch64-linux-nat.c: Revert.
+	* aarch64-fbsd-tdep.c: Revert.
+	* aarch64-fbsd-nat.c: Revert.
+	* aarch32-linux-nat.c: Revert.
+
+2019-04-05  Tom Tromey  <tom@tromey.com>
+
+	* ft32-tdep.c: Sort headers.
+	* frv-tdep.c: Sort headers.
+	* frv-linux-tdep.c: Sort headers.
+	* frame.c: Sort headers.
+	* frame-unwind.c: Sort headers.
+	* frame-base.c: Sort headers.
+	* fork-child.c: Sort headers.
+	* findvar.c: Sort headers.
+	* findcmd.c: Sort headers.
+	* filesystem.c: Sort headers.
+	* filename-seen-cache.h: Sort headers.
+	* filename-seen-cache.c: Sort headers.
+	* fbsd-tdep.c: Sort headers.
+	* fbsd-nat.h: Sort headers.
+	* fbsd-nat.c: Sort headers.
+	* f-valprint.c: Sort headers.
+	* f-typeprint.c: Sort headers.
+	* f-lang.c: Sort headers.
+	* extension.h: Sort headers.
+	* extension.c: Sort headers.
+	* extension-priv.h: Sort headers.
+	* expprint.c: Sort headers.
+	* exec.h: Sort headers.
+	* exec.c: Sort headers.
+	* exceptions.c: Sort headers.
+	* event-top.c: Sort headers.
+	* event-loop.c: Sort headers.
+	* eval.c: Sort headers.
+	* elfread.c: Sort headers.
+	* dwarf2read.h: Sort headers.
+	* dwarf2read.c: Sort headers.
+	* dwarf2loc.c: Sort headers.
+	* dwarf2expr.h: Sort headers.
+	* dwarf2expr.c: Sort headers.
+	* dwarf2-frame.c: Sort headers.
+	* dwarf2-frame-tailcall.c: Sort headers.
+	* dwarf-index-write.h: Sort headers.
+	* dwarf-index-write.c: Sort headers.
+	* dwarf-index-common.c: Sort headers.
+	* dwarf-index-cache.h: Sort headers.
+	* dwarf-index-cache.c: Sort headers.
+	* dummy-frame.c: Sort headers.
+	* dtrace-probe.c: Sort headers.
+	* disasm.h: Sort headers.
+	* disasm.c: Sort headers.
+	* disasm-selftests.c: Sort headers.
+	* dictionary.c: Sort headers.
+	* dicos-tdep.c: Sort headers.
+	* demangle.c: Sort headers.
+	* dcache.h: Sort headers.
+	* dcache.c: Sort headers.
+	* darwin-nat.h: Sort headers.
+	* darwin-nat.c: Sort headers.
+	* darwin-nat-info.c: Sort headers.
+	* d-valprint.c: Sort headers.
+	* d-namespace.c: Sort headers.
+	* d-lang.c: Sort headers.
+	* ctf.c: Sort headers.
+	* csky-tdep.c: Sort headers.
+	* csky-linux-tdep.c: Sort headers.
+	* cris-tdep.c: Sort headers.
+	* cris-linux-tdep.c: Sort headers.
+	* cp-valprint.c: Sort headers.
+	* cp-support.c: Sort headers.
+	* cp-namespace.c: Sort headers.
+	* cp-abi.c: Sort headers.
+	* corelow.c: Sort headers.
+	* corefile.c: Sort headers.
+	* continuations.c: Sort headers.
+	* completer.h: Sort headers.
+	* completer.c: Sort headers.
+	* complaints.c: Sort headers.
+	* coffread.c: Sort headers.
+	* coff-pe-read.c: Sort headers.
+	* cli-out.h: Sort headers.
+	* cli-out.c: Sort headers.
+	* charset.c: Sort headers.
+	* c-varobj.c: Sort headers.
+	* c-valprint.c: Sort headers.
+	* c-typeprint.c: Sort headers.
+	* c-lang.c: Sort headers.
+	* buildsym.c: Sort headers.
+	* buildsym-legacy.c: Sort headers.
+	* build-id.h: Sort headers.
+	* build-id.c: Sort headers.
+	* btrace.c: Sort headers.
+	* bsd-uthread.c: Sort headers.
+	* breakpoint.h: Sort headers.
+	* breakpoint.c: Sort headers.
+	* break-catch-throw.c: Sort headers.
+	* break-catch-syscall.c: Sort headers.
+	* break-catch-sig.c: Sort headers.
+	* blockframe.c: Sort headers.
+	* block.c: Sort headers.
+	* bfin-tdep.c: Sort headers.
+	* bfin-linux-tdep.c: Sort headers.
+	* bfd-target.c: Sort headers.
+	* bcache.c: Sort headers.
+	* ax-general.c: Sort headers.
+	* ax-gdb.h: Sort headers.
+	* ax-gdb.c: Sort headers.
+	* avr-tdep.c: Sort headers.
+	* auxv.c: Sort headers.
+	* auto-load.c: Sort headers.
+	* arm-wince-tdep.c: Sort headers.
+	* arm-tdep.c: Sort headers.
+	* arm-symbian-tdep.c: Sort headers.
+	* arm-pikeos-tdep.c: Sort headers.
+	* arm-obsd-tdep.c: Sort headers.
+	* arm-nbsd-tdep.c: Sort headers.
+	* arm-nbsd-nat.c: Sort headers.
+	* arm-linux-tdep.c: Sort headers.
+	* arm-linux-nat.c: Sort headers.
+	* arm-fbsd-tdep.c: Sort headers.
+	* arm-fbsd-nat.c: Sort headers.
+	* arm-bsd-tdep.c: Sort headers.
+	* arch-utils.c: Sort headers.
+	* arc-tdep.c: Sort headers.
+	* arc-newlib-tdep.c: Sort headers.
+	* annotate.h: Sort headers.
+	* annotate.c: Sort headers.
+	* amd64-windows-tdep.c: Sort headers.
+	* amd64-windows-nat.c: Sort headers.
+	* amd64-tdep.c: Sort headers.
+	* amd64-sol2-tdep.c: Sort headers.
+	* amd64-obsd-tdep.c: Sort headers.
+	* amd64-obsd-nat.c: Sort headers.
+	* amd64-nbsd-tdep.c: Sort headers.
+	* amd64-nbsd-nat.c: Sort headers.
+	* amd64-nat.c: Sort headers.
+	* amd64-linux-tdep.c: Sort headers.
+	* amd64-linux-nat.c: Sort headers.
+	* amd64-fbsd-tdep.c: Sort headers.
+	* amd64-fbsd-nat.c: Sort headers.
+	* amd64-dicos-tdep.c: Sort headers.
+	* amd64-darwin-tdep.c: Sort headers.
+	* amd64-bsd-nat.c: Sort headers.
+	* alpha-tdep.c: Sort headers.
+	* alpha-obsd-tdep.c: Sort headers.
+	* alpha-nbsd-tdep.c: Sort headers.
+	* alpha-mdebug-tdep.c: Sort headers.
+	* alpha-linux-tdep.c: Sort headers.
+	* alpha-linux-nat.c: Sort headers.
+	* alpha-bsd-tdep.c: Sort headers.
+	* alpha-bsd-nat.c: Sort headers.
+	* aix-thread.c: Sort headers.
+	* agent.c: Sort headers.
+	* addrmap.c: Sort headers.
+	* ada-varobj.c: Sort headers.
+	* ada-valprint.c: Sort headers.
+	* ada-typeprint.c: Sort headers.
+	* ada-tasks.c: Sort headers.
+	* ada-lang.c: Sort headers.
+	* aarch64-tdep.c: Sort headers.
+	* aarch64-ravenscar-thread.c: Sort headers.
+	* aarch64-newlib-tdep.c: Sort headers.
+	* aarch64-linux-tdep.c: Sort headers.
+	* aarch64-linux-nat.c: Sort headers.
+	* aarch64-fbsd-tdep.c: Sort headers.
+	* aarch64-fbsd-nat.c: Sort headers.
+	* aarch32-linux-nat.c: Sort headers.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (varobj_create): Update.
+	* rust-exp.y (struct rust_parser) <update_innermost_block,
+	lookup_symbol>: New methods.
+	(rust_parser::update_innermost_block, rust_parser::lookup_symbol):
+	Rename.
+	(rust_parser::rust_lookup_type)
+	(rust_parser::convert_ast_to_expression, rust_lex_tests): Update.
+	* printcmd.c (display_command, do_one_display): Update.
+	* parser-defs.h (struct parser_state) <parser_state>: Add
+	"tracker" parameter.
+	(block_tracker): New member.
+	(class innermost_block_tracker) <innermost_block_tracker>: Add
+	"types" parameter.
+	<reset>: Remove method.
+	(innermost_block): Don't declare.
+	(null_post_parser): Update.
+	* parse.c (innermost_block): Remove global.
+	(write_dollar_variable): Update.
+	(parse_exp_1, parse_exp_in_context): Add "tracker" parameter.
+	Remove "tracker_types" parameter.
+	(parse_expression): Add "tracker" parameter.
+	(parse_expression_for_completion): Update.
+	(null_post_parser): Add "tracker" parameter.
+	* p-exp.y: Update rules.
+	* m2-exp.y: Update rules.
+	* language.h (struct language_defn) <la_post_parser>: Add
+	"tracker" parameter.
+	* go-exp.y: Update rules.
+	* f-exp.y: Update rules.
+	* expression.h (parse_expression, parse_exp_1): Add "tracker"
+	parameter.
+	* d-exp.y: Update rules.
+	* c-exp.y: Update rules.
+	* breakpoint.c (set_breakpoint_condition): Create an
+	innermost_block_tracker.
+	(watch_command_1): Likewise.
+	* ada-lang.c (resolve): Add "tracker" parameter.
+	(resolve_subexp): Likewise.
+	* ada-exp.y (write_var_from_sym): Update.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* type-stack.h: New file.
+	* type-stack.c: New file.
+	* parser-defs.h (enum type_pieces, union type_stack_elt): Move to
+	type-stack.h.
+	(insert_into_type_stack, insert_type, push_type, push_type_int)
+	(insert_type_address_space, pop_type, pop_type_int)
+	(pop_typelist, pop_type_stack, append_type_stack)
+	(push_type_stack, get_type_stack, push_typelist)
+	(follow_type_instance_flags, follow_types): Don't declare.
+	* parse.c (type_stack): Remove global.
+	(parse_exp_in_context): Update.
+	(insert_into_type_stack, insert_type, push_type, push_type_int)
+	(insert_type_address_space, pop_type, pop_type_int)
+	(pop_typelist, pop_type_stack, append_type_stack)
+	(push_type_stack, get_type_stack, push_typelist)
+	(follow_type_instance_flags, follow_types): Remove (moved to
+	type-stack.c).
+	* f-exp.y (type_stack): New global.
+	Update rules.
+	(push_kind_type, f_parse): Update.
+	* d-exp.y (type_stack): New global.
+	Update rules.
+	(d_parse): Update.
+	* c-exp.y (struct c_parse_state) <type_stack>: New member.
+	Update rules.
+	* Makefile.in (COMMON_SFILES): Add type-stack.c.
+	(HFILES_NO_SRCDIR): Add type-stack.h.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* rust-exp.y (rust_parser::lex_identifier, rustyylex)
+	(rust_parser::convert_ast_to_expression, rust_parse)
+	(rust_lex_test_completion, rust_lex_tests): Update.
+	* parser-defs.h (struct expr_completion_state): New.
+	(struct parser_state) <parser_state>: Add completion parameter.
+	<mark_struct_expression, mark_completion_tag>: New methods.
+	<parse_completion, m_completion_state>: New members.
+	(prefixify_expression, null_post_parser): Update.
+	(mark_struct_expression, mark_completion_tag): Don't declare.
+	* parse.c (parse_completion, expout_last_struct)
+	(expout_tag_completion_type, expout_completion_name): Remove
+	globals.
+	(parser_state::mark_struct_expression)
+	(parser_state::mark_completion_tag): Now methods.
+	(prefixify_expression): Add last_struct parameter.
+	(prefixify_subexp): Likewise.
+	(parse_exp_1): Update.
+	(parse_exp_in_context): Add cstate parameter.  Update.
+	(parse_expression_for_completion): Create an
+	expr_completion_state.
+	(null_post_parser): Add "completion" parameter.
+	* p-exp.y: Update rules.
+	(yylex): Update.
+	* language.h (struct language_defn) <la_post_parser>: Add
+	"completing" parameter.
+	* go-exp.y: Update rules.
+	(lex_one_token): Update.
+	* expression.h (parse_completion): Don't declare.
+	* d-exp.y: Update rules.
+	(lex_one_token): Update rules.
+	* c-exp.y: Update rules.
+	(lex_one_token): Update.
+	* ada-lang.c (resolve): Add "parse_completion" parameter.
+	(resolve_subexp): Likewise.
+	(ada_resolve_function): Likewise.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* parser-defs.h (struct parser_state) <start_arglist,
+	end_arglist>: New methods.
+	<arglist_len, m_funcall_chain>: New members.
+	(arglist_len, start_arglist, end_arglist): Don't declare.
+	* parse.c (arglist_len, funcall_chain): Remove global.
+	(start_arglist, end_arglist): Remove functions.
+	(parse_exp_in_context): Update.
+	* p-exp.y: Update rules.
+	* m2-exp.y: Update rules.
+	* go-exp.y: Update rules.
+	* f-exp.y: Update rules.
+	* d-exp.y: Update rules.
+	* c-exp.y: Update rules.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* rust-exp.y (struct rust_parser) <lex_hex, lex_escape,
+	lex_operator, push_back>: New methods.
+	Update all rules.
+	(rust_parser::lex_hex, lex_escape): Rename and update.
+	(rust_parser::lex_string, rust_parser::lex_identifier): Update.
+	(rust_parser::lex_operator): Rename and update.
+	(rust_parser::lex_number, rustyylex, rustyyerror)
+	(rust_lex_test_init, rust_lex_test_sequence)
+	(rust_lex_test_push_back, rust_lex_tests): Update.
+	* parser-defs.h (struct parser_state) <parser_state>: Add "input"
+	parameter.
+	<lexptr, prev_lexptr>: New members.
+	(lexptr, prev_lexptr): Don't declare.
+	* parse.c (lexptr, prev_lexptr): Remove globals.
+	(parse_exp_in_context): Update.
+	* p-exp.y (yylex, yyerror): Update.
+	* m2-exp.y (parse_number, yylex, yyerror): Update.
+	* go-exp.y (lex_one_token, yyerror): Update.
+	* f-exp.y (match_string_literal, yylex, yyerror): Update.
+	* d-exp.y (lex_one_token, yyerror): Update.
+	* c-exp.y (scan_macro_expansion, finished_macro_expansion)
+	(lex_one_token, yyerror): Update.
+	* ada-lex.l (YY_INPUT): Update.
+	(rewind_to_char): Update.
+	* ada-exp.y (yyerror): Update.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* rust-exp.y (rustyylex, rust_lex_tests): Update.
+	* parser-defs.h (struct parser_state) <parser_state>: Add new
+	parameter.
+	<comma_terminates>: New member.
+	(comma_terminates): Don't declare global.
+	* parse.c (comma_terminates): Remove global.
+	(parse_exp_in_context): Update.
+	* p-exp.y (yylex): Update.
+	* m2-exp.y (yylex): Update.
+	* go-exp.y (lex_one_token): Update.
+	* f-exp.y (yylex): Update.
+	* d-exp.y (lex_one_token): Update.
+	* c-exp.y (lex_one_token): Update.
+	* ada-lex.l: Update.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* rust-exp.y (struct rust_parser) <paren_depth>: New member.
+	(rustyylex, rust_lex_test_init, rust_lex_test_one)
+	(rust_lex_test_sequence, rust_lex_test_push_back): Update.
+	* parser-defs.h (paren_depth): Don't declare.
+	* parse.c (paren_depth): Remove global.
+	(parse_exp_in_context): Update.
+	* p-exp.y (paren_depth): New global.
+	(pascal_parse): Initialize it.
+	* m2-exp.y (paren_depth): New global.
+	(m2_parse): Initialize it.
+	* go-exp.y (paren_depth): New global.
+	(go_parse): Initialize it.
+	* f-exp.y (paren_depth): New global.
+	(f_parse): Initialize it.
+	* d-exp.y (paren_depth): New global.
+	(d_parse): Initialize it.
+	* c-exp.y (paren_depth): New global.
+	(c_parse): Initialize it.
+	* ada-lex.l (paren_depth): New global.
+	(lexer_init): Initialize it.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* rust-exp.y (rust_parser::crate_name, rust_parser::super_name)
+	(rust_parser::convert_ast_to_type)
+	(rust_parser::convert_ast_to_expression, rust_lex_tests): Update.
+	* parser-defs.h (struct parser_state) <parser_state>: Add
+	parameters.  Initialize new members.
+	<expression_context_block, expression_context_pc>: New members.
+	* parse.c (expression_context_block, expression_context_pc):
+	Remove globals.
+	(parse_exp_in_context): Update.
+	* p-exp.y: Update all rules.
+	(yylex): Update.
+	* m2-exp.y: Update all rules.
+	(yylex): Update.
+	* go-exp.y (yylex): Update.
+	* f-exp.y (yylex): Update.
+	* d-exp.y: Update all rules.
+	(yylex): Update.
+	* c-exp.y: Update all rules.
+	(lex_one_token, classify_name, yylex, c_parse): Update.
+	* ada-exp.y (write_var_or_type, write_name_assoc): Update.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* gdbarch.h, gdbarch.c: Rebuild.
+	* gdbarch.sh (dtrace_parse_probe_argument): Change type.
+	* stap-probe.h: 
+	(struct stap_parse_info): Replace "parser_state" with
+	"expr_builder".
+	* parser-defs.h (struct expr_builder): Rename from "parser_state".
+	(parser_state): New class.
+	* parse.c (expr_builder): Rename.
+	(expr_builder::release): Rename.
+	(write_exp_elt, write_exp_elt_opcode, write_exp_elt_sym)
+	(write_exp_elt_msym, write_exp_elt_block, write_exp_elt_objfile)
+	(write_exp_elt_longcst, write_exp_elt_floatcst)
+	(write_exp_elt_type, write_exp_elt_intern, write_exp_string)
+	(write_exp_string_vector, write_exp_bitstring)
+	(write_exp_msymbol, mark_struct_expression)
+	(write_dollar_variable)
+	(insert_type_address_space, increase_expout_size): Replace
+	"parser_state" with "expr_builder".
+	* dtrace-probe.c: Replace "parser_state" with "expr_builder".
+	* amd64-linux-tdep.c (amd64_dtrace_parse_probe_argument): Replace
+	"parser_state" with "expr_builder".
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* rust-exp.y: Replace "parse_language" with method call.
+	* p-exp.y: 
+	(yylex): Replace "parse_language" with method call.
+	* m2-exp.y: 
+	(yylex): Replace "parse_language" with method call.
+	* go-exp.y (classify_name): Replace "parse_language" with method
+	call.
+	* f-exp.y (yylex): Replace "parse_language" with method call.
+	* d-exp.y (lex_one_token): Replace "parse_language" with method
+	call.
+	* c-exp.y: 
+	(lex_one_token, classify_name, yylex): Replace "parse_language"
+	with method call.
+	* ada-exp.y (find_primitive_type, type_char)
+	(type_system_address): Replace "parse_language" with method call.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* rust-exp.y: Replace "parse_gdbarch" with method call.
+	* parse.c (write_dollar_variable, insert_type_address_space):
+	Replace "parse_gdbarch" with method call.
+	* p-exp.y (parse_type, yylex): Replace "parse_gdbarch" with method
+	call.
+	* objc-lang.c (end_msglist): Replace "parse_gdbarch" with method
+	call.
+	* m2-exp.y (parse_type, parse_m2_type, yylex): Replace
+	"parse_gdbarch" with method call.
+	* go-exp.y (parse_type, classify_name): Replace "parse_gdbarch"
+	with method call.
+	* f-exp.y (parse_type, parse_f_type, yylex): Replace
+	"parse_gdbarch" with method call.
+	* d-exp.y (parse_type, parse_d_type, lex_one_token): Replace
+	"parse_gdbarch" with method call.
+	* c-exp.y (parse_type, parse_number, classify_name): Replace
+	"parse_gdbarch" with method call.
+	* ada-lex.l: Replace "parse_gdbarch" with method call.
+	* ada-exp.y (parse_type, find_primitive_type, type_char)
+	(type_system_address): Replace "parse_gdbarch" with method call.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* dtrace-probe.c (dtrace_probe::build_arg_exprs): Update.
+	* stap-probe.c (stap_parse_argument): Update.
+	* stap-probe.h (struct stap_parse_info) <stap_parse_info>: Remove
+	initial_size parameter.
+	* rust-exp.y (rust_lex_tests): Update.
+	* parse.c (parser_state): Update.
+	(parse_exp_in_context): Update.
+	* parser-defs.h (struct parser_state) <parser_state>: Remove
+	"initial_size" parameter.
+
+2019-04-04  Tom Tromey  <tom@tromey.com>
+
+	* parser-defs.h (increase_expout_size): Don't declare.
+	* parse.c (increase_expout_size): Now static.
+
+2019-04-04  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* gnu-nat.c (gnu_nat_target::wait): Fix
+	target_waitstatus_to_string call.
+
+2019-04-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* eval.c (evaluate_subexp_standard): Handle internal functions
+	during Fortran function call handling.
+
+2019-04-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention new internal functions.
+	* dwarf2read.c (dwarf2_init_complex_target_type): New function.
+	(read_base_type): Use dwarf2_init_complex_target_type.
+	* value.c (creal_internal_fn): New function.
+	(cimag_internal_fn): New function.
+	(_initialize_values): Register new internal functions.
+
+2019-04-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* infrun.c (stop_all_threads): If debug_infrun, always
+	trace the wait status after wait_one, using
+	target_waitstatus_to_string and target_pid_to_str.
+	(handle_inferior_event): Replace various trace of
+	wait status kind by a single trace.
+	* gnu-nat.c (gnu_nat_target::wait): Replace local
+	wait status kind image by target_waitstatus_to_string.
+	* target/waitstatus.c (target_waitstatus_to_string): Fix
+	obsolete comment.
+
+2019-04-01  Tom Tromey  <tromey@adacore.com>
+
+	PR symtab/23331:
+	* dwarf2read.c (partial_die_info::read): Handle DW_AT_ranges.
+
+2019-04-01  Sergio Durigan Junior  <sergiodj@redhat.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* top.c (quit_force): Call 'finalize_values'.
+	* value.c (finalize_values): New function.
+	* value.h (finalize_values): Declare.
+
+2019-03-30  Eli Zaretskii  <eliz@gnu.org>
+
+	* NEWS: Announce $_gdb_major and $_gdb_minor.
+
+	* top.c (init_gdb_version_vars): New function.
+	(gdb_init): Call init_gdb_version_vars.
+
+2019-03-29  Tom Tromey  <tromey@adacore.com>
+
+	* printcmd.c (_initialize_printcmd): Add usage lines.  Update some
+	help text.  Remove dead code.
+
+2019-03-29  Keith Seitz  <keiths@redhat.com>
+
+	From Siddhesh Poyarekar:
+	* f-lang.h (f77_get_upperbound): Return LONGEST.
+	(f77_get_lowerbound): Likewise.
+	* f-typeprint.c (f_type_print_varspec_suffix): Expand
+	UPPER_BOUND and LOWER_BOUND to LONGEST.  Use plongest to format
+	print them.
+	(f_type_print_base): Expand UPPER_BOUND to LONGEST.  Use
+	plongest to format print it.
+	* f-valprint.c (f77_get_lowerbound): Return LONGEST.
+	(f77_get_upperbound): Likewise.
+	(f77_get_dynamic_length_of_aggregate): Expand UPPER_BOUND,
+	LOWER_BOUND to LONGEST.
+	(f77_create_arrayprint_offset_tbl): Likewise.
+
+2019-03-29  Keith Seitz  <keiths@redhat.com>
+
+	* ada-lang.c (ada_template_to_fixed_record_type_1): Use
+	%s/pulongest for TYPE_LENGTH instead of %d in format
+	strings.
+	* ada-typerint.c (ada_print_type): Likewise.
+	* amd64-windows-tdep.c (amd64_windows_store_arg_in_reg): Likewise.
+	* compile/compile-c-support.c (generate_register_struct): Likewise.
+	* gdbtypes.c (recursive_dump_type): Likewise.
+	* gdbtypes.h (struct type) <length>: Change type to ULONGEST.
+	* m2-typeprint.c (m2_array):  Use %s/pulongest for TYPE_LENGTH
+	instead of %d in format strings.
+	* riscv-tdep.c (riscv_type_alignment): Cast second argument
+	to std::min to ULONGEST.
+	* symmisc.c (print_symbol): Use %s/pulongest for TYPE_LENGTH
+	instead of %d in format strings.
+	* tracepoint.c (info_scope_command): Likewise.
+	* typeprint.c (print_offset_data::update)
+	(print_offset_data::finish): Likewise.
+	* xtensa-tdep.c (xtensa_store_return_value)
+	(xtensa_push_dummy_call): Likewise.
+
+2019-03-28  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* windows-nat.c (display_selector): Fixed format specifications
+	for 64-bit Cygwin.
+
+2019-03-28  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* infrun.c (follow_exec): Call target_terminal::ours_for_output.
+
+2019-03-28  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* nios2-tdep.h (struct gdbarch_tdep): Add is_kernel_helper.
+	* nios2-tdep.c (nios2_get_next_pc): Skip over kernel helpers.
+	* nios2-linux-tdep.c (nios2_linux_is_kernel_helper): New.
+	(nios2_linux_init_abi): Install it.
+
+2019-03-28  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-tdep.c (aarch64_vnv_type): Use vector types.
+
+2019-03-28  Alan Hayward  <alan.hayward@arm.com>
+
+	* features/aarch64-sve.c (create_feature_aarch64_sve): Add q view.
+
+2019-03-24  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	    Tom Tromey  <tromey@adacore.com>
+
+	* minsyms.c (minimal_symbol_upper_bound): Fix buffer overflow.
+
+2019-03-26  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdb-gdb.py.in (StructMainTypePrettyPrinter.bound_img): New method.
+	(StructMainTypePrettyPrinter.bounds_img): Use new "bound_img"
+	method to compute the bounds of range types. Also print "[evaluated]"
+	if the bounds' values come from a dynamic evaluation.
+
+2019-03-26  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cp-valprint.c (cp_print_value_fields): Don't print trailing
+	whitespace when pretty printing is on.
+
+2019-03-26  Alan Hayward  <alan.hayward@arm.com>
+
+	* ppc-linux-nat.c: Add include.
+
+2019-03-26  Alan Hayward  <alan.hayward@arm.com>
+
+	* NEWS: Mention AArch64 Pointer Authentication.
+
+2019-03-26  Alan Hayward  <alan.hayward@arm.com>
+
+	* arm-linux-nat.c: Add include.
+
+2019-03-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* source-cache.c (source_cache::get_source_lines): Re-read
+	fullname after calling open_source_file.
+
+2019-03-25  John Baldwin  <jhb@FreeBSD.org>
+
+	* NEWS: Mention TLS support for FreeBSD.
+
+2019-03-25  Tom Tromey  <tromey@adacore.com>
+
+	* minsyms.c (BUNCH_SIZE): Update comment.
+	(~minimal_symbol_reader): Remove old comment.
+	(compact_minimal_symbols): Update comment.
+	(minimal_symbol_reader::install): Remove old comment.  Update
+	other comments.
+
+2019-03-25  Alan Hayward  <alan.hayward@arm.com>
+
+	* s390-linux-nat.c: Add include.
+
+2019-03-25  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-linux-nat.c (aarch64_linux_nat_target::read_description):
+	Call linux_get_hwcap.
+	* aarch64-linux-tdep.c (aarch64_linux_core_read_description):
+	Likewise.
+	(aarch64_linux_get_hwcap): Remove function.
+	* aarch64-linux-tdep.h (aarch64_linux_get_hwcap): Remove
+	declaration.
+	* arm-linux-nat.c (arm_linux_nat_target::read_description):Call
+	linux_get_hwcap.
+	* arm-linux-tdep.c (arm_linux_core_read_description): Likewise.
+	* linux-tdep.c (linux_get_hwcap): Add function.
+	(linux_get_hwcap2): Likewise.
+	* linux-tdep.h (linux_get_hwcap): Add declaration.
+	(linux_get_hwcap2): Likewise.
+	* ppc-linux-nat.c (ppc_linux_get_hwcap): Remove function.
+	(ppc_linux_get_hwcap2): Likewise.
+	(ppc_linux_nat_target::region_ok_for_hw_watchpoint): Call
+	linux_get_hwcap.
+	(ppc_linux_nat_target::insert_watchpoint): Likewise.
+	(ppc_linux_nat_target::watchpoint_addr_within_range): Likewise.
+	(ppc_linux_nat_target::read_description): Likewise.
+	* ppc-linux-tdep.c (ppc_linux_core_read_description): Likewise.
+	* s390-linux-nat.c: Likewise.
+	* s390-linux-tdep.c (s390_core_read_description): Likewise.
+
+2019-03-24  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (standard_lookup): Simplify initialization.
+	(ada_lookup_symbol_nonlocal): Simplify return.
+	* solib-spu.c (spu_lookup_lib_symbol): Simplify return.
+	* solib-darwin.c (darwin_lookup_lib_symbol): Simplify return.
+	* solib-svr4.c (elf_lookup_lib_symbol): Simplify return.
+	* rust-lang.c (rust_lookup_symbol_nonlocal): Simplify
+	initialization.
+	* solib.c (solib_global_lookup): Simplify.
+	* symtab.c (null_block_symbol): Remove.
+	(symbol_cache_lookup): Simplify returns.
+	(lookup_language_this): Simplify returns.
+	(lookup_symbol_aux): Simplify return.
+	(lookup_local_symbol): Simplify returns.
+	(lookup_global_symbol_from_objfile): Simplify return.
+	(lookup_symbol_in_objfile_symtabs)
+	(lookup_symbol_in_objfile_from_linkage_name): Simplify return.
+	(lookup_symbol_via_quick_fns, lookup_symbol_in_static_block)
+	(lookup_static_symbol, lookup_global_symbol): Simplify return.
+	* cp-namespace.c (cp_lookup_bare_symbol)
+	(cp_search_static_and_baseclasses, cp_lookup_symbol_via_imports)
+	(cp_lookup_symbol_via_all_imports, cp_lookup_nested_symbol_1)
+	(cp_lookup_nested_symbol): Don't use null_block_symbol.
+	(cp_lookup_symbol_via_imports): Simplify initialization.
+	(find_symbol_in_baseclass): Likewise.
+	* symtab.h (null_block_symbol): Remove.
+	* d-namespace.c (d_lookup_symbol): Don't use null_block_symbol.
+	(d_lookup_nested_symbol, d_lookup_symbol_imports)
+	(d_lookup_symbol_module): Likewise.
+	(find_symbol_in_baseclass): Simplify initialization.
+
+2019-03-24  Tom Tromey  <tom@tromey.com>
+
+	* expression.h: Don't include symtab.h.
+	(struct block): Forward declare.
+
+2019-03-24  Tom Tromey  <tom@tromey.com>
+
+	* c-exp.y (typebase): Remove casts.
+	* gdbtypes.c (lookup_unsigned_typename, )
+	(lookup_signed_typename): Remove cast.
+	* eval.c (parse_to_comma_and_eval): Remove cast.
+	* parse.c (write_dollar_variable): Remove cast.
+	* block.h (struct block) <superblock>: Now const.
+	* symfile-debug.c (debug_qf_map_matching_symbols): Update.
+	* psymtab.c (psym_map_matching_symbols): Make "block" const.
+	(map_block): Make "block" const.
+	* symfile.h (struct quick_symbol_functions)
+	<map_matching_symbols>: Constify block argument to "callback".
+	* symtab.c (basic_lookup_transparent_type_quick): Make "block"
+	const.
+	(find_pc_sect_compunit_symtab): Make "b" const.
+	(find_symbol_at_address): Likewise.
+	(search_symbols): Likewise.
+	* dwarf2read.c (dw2_lookup_symbol): Make "block" const.
+	(dw2_debug_names_lookup_symbol): Likewise.
+	(dw2_map_matching_symbols): Update.
+	* p-valprint.c (pascal_val_print): Remove "block".
+	* ada-lang.c (ada_add_global_exceptions): Make "b" const.
+	(aux_add_nonlocal_symbols): Make "block" const.
+	(resolve_subexp): Remove cast.
+	* linespec.c (iterate_over_all_matching_symtabs): Make "block"
+	const.
+	(iterate_over_file_blocks): Likewise.
+	* f-exp.y (%union) <bval>: Remove.
+	* coffread.c (patch_opaque_types): Make "b" const.
+	* spu-tdep.c (spu_catch_start): Make "block" const.
+	* c-valprint.c (print_unpacked_pointer): Remove "block".
+	* symmisc.c (dump_symtab_1): Make "b" const.
+	(block_depth): Make "block" const.
+	* d-exp.y (%union) <bval>: Remove.
+	* cp-support.h (cp_lookup_rtti_type): Update.
+	* cp-support.c (cp_lookup_rtti_type): Make "block" const.
+	* psymtab.c (psym_lookup_symbol): Make "block" const.
+	(maintenance_check_psymtabs): Make "b" const.
+	* python/py-framefilter.c (extract_sym): Make "sym_block" const.
+	(enumerate_locals, enumerate_args): Update.
+	* python/py-symtab.c (stpy_global_block): Make "block" const.
+	(stpy_static_block): Likewise.
+	* inline-frame.c (block_starting_point_at): Make "new_block"
+	const.
+	* block.c (find_block_in_blockvector): Make return type const.
+	(blockvector_for_pc_sect): Make "b" const.
+	(find_block_in_blockvector): Make "b" const.
+
+2019-03-23  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (varobj_create): Update.
+	* symfile.c (clear_symtab_users): Don't reset innermost_block.
+	* printcmd.c (display_command, do_one_display): Don't reset
+	innermost_block.
+	* parser-defs.h (enum innermost_block_tracker_type): Move to
+	expression.h.
+	(innermost_block): Update comment.
+	* parse.c (parse_exp_1): Add tracker_types parameter.
+	(parse_exp_in_context): Rename from parse_exp_in_context_1.  Add
+	tracker_types parameter.  Reset innermost_block.
+	(parse_exp_in_context): Remove.
+	(parse_expression_for_completion): Update.
+	* objfiles.c (~objfile): Don't reset expression_context_block or
+	innermost_block.
+	* expression.h (enum innermost_block_tracker_type): Move from
+	parser-defs.h.
+	(parse_exp_1): Add tracker_types parameter.
+	* breakpoint.c (set_breakpoint_condition, watch_command_1): Don't
+	reset innermost_block.
+
+2019-03-23  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h: Include bcache.h.
+
+2019-03-23  Tom Tromey  <tom@tromey.com>
+
+	* linespec.c (get_current_search_block): Use
+	scoped_restore_current_language.
+	* symmisc.c (dump_symtab): Use scoped_restore_current_language.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* aarch64-linux-tdep.c
+	(aarch64_linux_iterate_over_regset_sections): Check for pauth
+	section.
+	* aarch64-linux-tdep.h (AARCH64_LINUX_SIZEOF_PAUTH): New define.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* aarch64-tdep.c (aarch64_analyze_prologue): Check for pauth
+	instructions.
+	(aarch64_analyze_prologue_test): Add PACIASP test.
+	(aarch64_prologue_prev_register): Unmask PC value.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* aarch64-tdep.c (aarch64_frame_unmask_address): New function.
+	(aarch64_dwarf2_prev_register): Unmask PC value.
+	(aarch64_dwarf2_frame_init_reg): Init pauth registers.
+	(aarch64_execute_dwarf_cfa_vendor_op): Check for
+	DW_CFA_AARCH64_negate_ra_state.
+	(aarch64_gdbarch_init): Add aarch64_execute_dwarf_cfa_vendor_op.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* aarch64-tdep.c (aarch64_dwarf_reg_to_regnum): Check for pauth
+	registers.
+	(aarch64_pseudo_register_name): Likewise.
+	(aarch64_pseudo_register_type): Likewise.
+	(aarch64_pseudo_register_reggroup_p): Likewise.
+	(aarch64_gdbarch_init): Add pauth registers.
+	* aarch64-tdep.h (AARCH64_DWARF_PAUTH_RA_STATE): New define.
+	(AARCH64_DWARF_PAUTH_DMASK): Likewise.
+	(AARCH64_DWARF_PAUTH_CMASK): Likewise.
+	(struct gdbarch_tdep): Add regnum for ra_state.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* arch/aarch64.h (AARCH64_PAUTH_REGS_SIZE): New define.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* aarch64-linux-nat.c (fetch_pauth_masks_from_thread): New
+	function.
+	(aarch64_linux_nat_target::fetch_registers): Read pauth registers.
+	* aarch64-tdep.c (aarch64_cannot_store_register): New function.
+	(aarch64_gdbarch_init): Add puth registers.
+	* aarch64-tdep.h (struct gdbarch_tdep): Add pauth features.
+	* arch/aarch64.h (AARCH64_PAUTH_DMASK_REGNUM): New define.
+	(AARCH64_PAUTH_CMASK_REGNUM): Likewise.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* aarch64-linux-nat.c
+	(aarch64_linux_nat_target::read_description): Read PACA hwcap.
+	* aarch64-linux-tdep.c
+	(aarch64_linux_core_read_description): Likewise.
+	(aarch64_linux_get_hwcap): New function.
+	* aarch64-linux-tdep.h (AARCH64_HWCAP_PACA): New define.
+	(aarch64_linux_get_hwcap): New declaration.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* aarch64-linux-nat.c
+	(aarch64_linux_nat_target::read_description): Add pauth param.
+	* aarch64-linux-tdep.c
+	(aarch64_linux_core_read_description): Likewise.
+	* aarch64-tdep.c (struct target_desc): Add in pauth.
+	(aarch64_read_description): Add pauth param.
+	(aarch64_gdbarch_init): Likewise.
+	* aarch64-tdep.h (aarch64_read_description): Likewise.
+	* arch/aarch64.c (aarch64_create_target_description): Likewise.
+	* arch/aarch64.h (aarch64_create_target_description): Likewise.
+	* features/Makefile: Add new files.
+	* features/aarch64-pauth.c: New file.
+	* features/aarch64-pauth.xml: New file.
+
+2019-03-20  Tom Tromey  <tromey@adacore.com>
+
+	* infrun.c (handle_inferior_event): Rename from
+	handle_inferior_event_1.  Create a scoped_value_mark.
+	(handle_inferior_event): Remove.
+
+2019-03-19  Tom Tromey  <tromey@adacore.com>
+
+	* mi/mi-interp.c (mi_on_normal_stop_1): Only show displays once.
+	* infrun.h (print_stop_event): Add "displays" parameter.
+	* infrun.c (print_stop_event): Add "displays" parameter.
+
+2019-03-19  Pedro Alves  <palves@redhat.com>
+
+	* tui/tui-out.c (tui_ui_out::do_field_string): Simplify.
+	(tui_ui_out::do_text): Add comments.  Reset M_LINE to 0 instead of
+	to -1.  Fix TABs vs spaces.
+	(tui_ui_out::tui_ui_out): Don't initialize fields here.
+	* tui/tui-out.h (tui_ui_out) Add intro comments.
+	<m_line, m_start_of_line>: In-class initialize, and add describing
+	comment.
+
+2019-03-18  Alan Hayward  <alan.hayward@arm.com>
+
+	* arm-linux-nat.c (arm_linux_insert_hw_breakpoint1): Fix
+	variable names.
+	(arm_linux_remove_hw_breakpoint1): Use a gdb::function_view.
+
+2019-03-18  Pedro Alves  <palves@redhat.com>
+	    Eli Zaretskii <eliz@gnu.org>
+
+	* tui/tui-out.c (tui_ui_out::tui_ui_out): Fix initialization of
+	m_line and m_start_of_line.
+
+2019-03-18  Eli Zaretskii  <eliz@gnu.org>
+
+	* tui/tui-io.c (gdb_wgetch): Don't echo CR.
+	(tui_getc): When gdb_wgetch returns a CR, behave the same as when
+	it returns a newline.  This fixes a regression in TU mode, whereby
+	the next line is output on the same screen line as the user input.
+
+2019-03-18  Tom Tromey  <tromey@adacore.com>
+
+	* minsyms.c (minimal_symbol_reader::install): Remove call to
+	obstack_blank.
+
+2019-03-18  Pedro Alves  <palves@redhat.com>
+
+	* tui/tui-io.c (reverse_mode_p, reverse_save_bg, reverse_save_fg):
+	New globals.
+	(apply_style): New, factored out from ...
+	(apply_ansi_escape): ... this.  Handle reverse video mode.
+	(tui_set_reverse_mode): New function.
+	* tui/tui-io.h (tui_set_reverse_mode): New declaration.
+	* tui/tui-winsource.c (tui_show_source_line): Use
+	tui_set_reverse_mode instead of setting A_STANDOUT.
+	* ui-style.h (struct ui_file_style) <set_reverse, set_fg, set_bg>:
+	New setter methods.
+
+2019-03-18  Hannes Domani  <ssbssa@yahoo.de>
+
+	* tui/tui-source.c (copy_source_line): Fix handling of 'column'.
+	Handle tabs.
+
+2019-03-18  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (empty_array): Add "high" parameter.
+	(ada_evaluate_subexp): Update.
+
+2019-03-17  Sergei Trofimovich <siarheit@google.com>
+
+	* unittests/string_view-selftests.c: Define
+	_initialize_string_view_selftests unconditionally.
+
+2019-03-17  Vladimir Martyanov  <vilgeforce@gmail.com>
+
+	PR gdb/24350
+	* windows-nat.c (windows_make_so): Remove unused text_vma variable.
+
+2019-03-17  Vladimir Martyanov  <vilgeforce@gmail.com>
+
+	PR gdb/24351
+	* windows-nat.c (display_selector): Fix format specifiers.
+
+2019-03-17  Eli Zaretskii  <eliz@gnu.org>
+
+	* tui/tui-winsource.c (tui_set_is_exec_point_at): Call
+	tui_refill_source_window instead of tui_refresh_win, to update the
+	current execution line.  This fixes redisplay of the current line
+	when stepping through the code with "next" or "step".
+
+2019-03-16  Eli Zaretskii  <eliz@gnu.org>
+
+	* source-cache.c (source_cache::get_source_lines): Call
+	find_source_lines to initialize s->nlines.  This fixes vertical
+	scrolling of TUI source window when the DOWN arrow is pressed.
+
+2019-03-16  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* auto-load.c (_initialize_auto_load): Fix 'This options has'.
+	linux-thread-db.c (_initialize_thread_db): Likewise.
+
+2019-03-16  Eli Zaretskii  <eliz@gnu.org>
+
+	* tui/tui-winsource.c (tui_show_source_line): Revert "Use
+	wclrtoeol in tui_show_source_line".  This reverts changes made in
+	commit 4a3045920bbe4e50a0f4920b0fdc4e88ef23015c.
+
+2019-03-15  Tom Tromey  <tom@tromey.com>
+
+	* symtab.h (struct minimal_symbol): Derive from
+	general_symbol_info.
+	(MSYMBOL_VALUE, MSYMBOL_VALUE_RAW_ADDRESS)
+	(MSYMBOL_VALUE_ADDRESS, MSYMBOL_VALUE_BYTES)
+	(MSYMBOL_BLOCK_VALUE, MSYMBOL_VALUE_CHAIN, MSYMBOL_LANGUAGE)
+	(MSYMBOL_SECTION, MSYMBOL_OBJ_SECTION, MSYMBOL_NATURAL_NAME)
+	(MSYMBOL_LINKAGE_NAME, MSYMBOL_DEMANGLED_NAME)
+	(MSYMBOL_SEARCH_NAME): Update.
+	(MSYMBOL_SET_LANGUAGE, MSYMBOL_SET_NAMES): Remove.
+	* solib.c (gdb_bfd_lookup_symbol_from_symtab): Don't use memset.
+	* minsyms.c (minimal_symbol_reader::record_full): Update.
+
+2019-03-15  Tom Tromey  <tom@tromey.com>
+
+	* minsyms.c (minimal_symbol_reader::install): Use memcpy.
+
+2019-03-15  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (struct objfile_per_bfd_storage) <msymbols>: Now a
+	unique_xmalloc_ptr.
+	(objfile::msymbols_range::begin, objfile::msymbols_range::end):
+	Update.
+	* minsyms.c (lookup_minimal_symbol_by_pc_section)
+	(build_minimal_symbol_hash_tables)
+	(minimal_symbol_reader::install): Update.
+
+2019-03-15  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (create_demangled_names_hash): Update.
+	(symbol_set_names): Update.
+	* objfiles.h (struct objfile_per_bfd_storage)
+	<demangled_names_hash>: Now an htab_up.
+	* objfiles.c (objfile_per_bfd_storage): Simplify.
+
+2019-03-15  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (struct objfile_per_bfd_storage): Declare
+	destructor.
+	* objfiles.c (objfile_per_bfd_storage::~objfile_per_bfd_storage):
+	New.
+	(get_objfile_bfd_data): Use new.  Don't initialize
+	language_of_main.
+	(free_objfile_per_bfd_storage): Remove.
+	(objfile_bfd_data_free, objfile::~objfile): Use delete.
+
+2019-03-15  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (reread_symbols): Update.
+	* objfiles.c (objfile::objfile): Update.
+	* minsyms.h (terminate_minimal_symbol_table): Don't declare.
+	* minsyms.c (lookup_minimal_symbol_by_pc_section): Update
+	comment.
+	(minimal_symbol_reader::install): Update.
+	(terminate_minimal_symbol_table): Remove.
+	* jit.c (jit_object_close_impl): Update.
+
+2019-03-15  Tom Tromey  <tom@tromey.com>
+
+	* minsyms.c (minimal_symbol_reader::record_full): Remove some
+	initializations.
+
+2019-03-15  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (struct objfile_per_bfd_storage)
+	<demangled_hash_languages>: Now a bitset.
+	* minsyms.c (add_minsym_to_demangled_hash_table): Update.
+	(lookup_minimal_symbol): Update.
+
+2019-03-15  Tom Tromey  <tom@tromey.com>
+
+	* minsyms.h (class minimal_symbol_reader) <record_with_info>:
+	Don't return the symbol.
+	* coffread.c (record_minimal_symbol): Use record_full.
+
+2019-03-14  Eli Zaretskii  <eliz@gnu.org>
+
+	The MS-Windows port of ncurses fails to switch to a color pair if
+	one or both of the colors are the implicit default colors.  This
+	change records the default colors when TUI is initialized, and
+	then specifies them explicitly when a color pair uses the default
+	colors.  This allows color styling in TUI mode on MS-Windows.
+
+	* tui/tui-io.c [__MINGW32__]: Include windows.h.  Declare
+	ncurses_norm_attr.
+	(tui_initialize_io) [__MINGW32__]: Record the default terminal
+	colors in ncurses_norm_attr.
+	(apply_ansi_escape) [__MINGW32__]: If a color in a color pair is
+	"none", replace it with the default color recorded in
+	ncurses_norm_attr.
+
+2019-03-14  Tom Tromey  <tromey@adacore.com>
+
+	* source-cache.h (class source_cache) <get_source_lines>: Return
+	std::string.
+	* source-cache.c (source_cache::extract_lines): Handle case where
+	first_pos==npos.  Return std::string.
+	(source_cache::get_source_lines): Update.
+
+2019-03-14  Tom Tromey  <tromey@adacore.com>
+
+	* NEWS: Add item for "style sources" commands.
+	* source-cache.c (source_cache::get_source_lines): Check
+	source_styling.
+	* cli/cli-style.c (source_styling): New global.
+	(_initialize_cli_style): Add "style sources" commands.
+	(show_style_sources): New function.
+	* cli/cli-style.h (source_styling): Declare.
+
+2019-03-14  Pedro Alves  <palves@redhat.com>
+	    Tom Tromey  <tromey@adacore.com>
+
+	* tui/tui-winsource.h (tui_refill_source_window): Declare.
+	* tui/tui-winsource.c (tui_refill_source_window): New function,
+	from...
+	(tui_horizontal_source_scroll): ... here.  Move some logic.
+	* cli/cli-style.c (set_style_enabled): Notify new observable.
+	* tui/tui-hooks.c (tui_redisplay_source): New function.
+	(tui_attach_detach_observers): Attach or detach
+	tui_redisplay_source.
+	* observable.h (source_styling_changed): New observable.
+	* observable.c: Define source_styling_changed observable.
+
+2019-03-13  Tom Tromey  <tromey@adacore.com>
+
+	* i386-gnu-nat.c (i386_gnu_nat_target::fetch_registers)
+	(i386_gnu_nat_target::store_registers): Update.
+	* target-debug.h (target_debug_print_std_string): New macro.
+	* x86-linux-nat.c (x86_linux_nat_target::enable_btrace): Update.
+	* windows-tdep.c (display_one_tib): Update.
+	* tui/tui-stack.c (tui_make_status_line): Update.
+	* top.c (print_inferior_quit_action): Update.
+	* thread.c (thr_try_catch_cmd): Update.
+	(add_thread_with_info): Update.
+	(thread_target_id_str): Update.
+	(thr_try_catch_cmd): Update.
+	(thread_command): Update.
+	(thread_find_command): Update.
+	* record-btrace.c (record_btrace_target::info_record)
+	(record_btrace_resume_thread, record_btrace_target::resume)
+	(record_btrace_cancel_resume, record_btrace_step_thread)
+	(record_btrace_target::wait, record_btrace_target::wait)
+	(record_btrace_target::wait, record_btrace_target::stop): Update.
+	* progspace.c (print_program_space): Update.
+	* process-stratum-target.c
+	(process_stratum_target::thread_address_space): Update.
+	* linux-fork.c (linux_fork_mourn_inferior)
+	(detach_checkpoint_command, info_checkpoints_command)
+	(linux_fork_context): Update.
+	(linux_fork_detach): Update.
+	(class scoped_switch_fork_info): Update.
+	(delete_checkpoint_command): Update.
+	* infrun.c (follow_fork_inferior): Update.
+	(follow_fork_inferior): Update.
+	(proceed_after_vfork_done): Update.
+	(handle_vfork_child_exec_or_exit): Update.
+	(follow_exec): Update.
+	(displaced_step_prepare_throw): Update.
+	(displaced_step_restore): Update.
+	(start_step_over): Update.
+	(resume_1): Update.
+	(clear_proceed_status_thread): Update.
+	(proceed): Update.
+	(print_target_wait_results): Update.
+	(do_target_wait): Update.
+	(context_switch): Update.
+	(stop_all_threads): Update.
+	(restart_threads): Update.
+	(finish_step_over): Update.
+	(handle_signal_stop): Update.
+	(switch_back_to_stepped_thread): Update.
+	(keep_going_pass_signal): Update.
+	(print_exited_reason): Update.
+	(normal_stop): Update.
+	* inferior.c (inferior_pid_to_str): Change return type.
+	(print_selected_inferior): Update.
+	(add_inferior): Update.
+	(detach_inferior): Update.
+	* dummy-frame.c (fprint_dummy_frames): Update.
+	* dcache.c (dcache_info_1): Update.
+	* btrace.c (btrace_enable, btrace_disable, btrace_teardown)
+	(btrace_fetch, btrace_clear): Update.
+	* linux-tdep.c (linux_core_pid_to_str): Change return type.
+	* i386-cygwin-tdep.c (i386_windows_core_pid_to_str): Change return
+	type.
+	* fbsd-tdep.c (fbsd_core_pid_to_str): Change return type.
+	* sol2-tdep.h (sol2_core_pid_to_str): Change return type.
+	* sol2-tdep.c (sol2_core_pid_to_str): Change return type.
+	* gdbarch.c, gdbarch.h: Rebuild.
+	* gdbarch.sh (core_pid_to_str): Change return type.
+	* windows-nat.c (struct windows_nat_target) <pid_to_str>: Change
+	return type.
+	(windows_nat_target::pid_to_str): Change return type.
+	(windows_delete_thread): Update.
+	(windows_nat_target::attach): Update.
+	(windows_nat_target::files_info): Update.
+	* target-delegates.c: Rebuild.
+	* sol-thread.c (class sol_thread_target) <pid_to_str>: Change
+	return type.
+	(sol_thread_target::pid_to_str): Change return type.
+	* remote.c (class remote_target) <pid_to_str>: Change return
+	type.
+	(remote_target::pid_to_str): Change return type.
+	(extended_remote_target::attach, remote_target::remote_stop_ns)
+	(remote_target::remote_notif_remove_queued_reply)
+	(remote_target::push_stop_reply, remote_target::disable_btrace):
+	Update.
+	(extended_remote_target::attach): Update.
+	* remote-sim.c (struct gdbsim_target) <pid_to_str>: Change return
+	type.
+	(gdbsim_target::pid_to_str): Change return type.
+	* ravenscar-thread.c (struct ravenscar_thread_target)
+	<pid_to_str>: Change return type.
+	(ravenscar_thread_target::pid_to_str): Change return type.
+	* procfs.c (class procfs_target) <pid_to_str>: Change return
+	type.
+	(procfs_target::pid_to_str): Change return type.
+	(procfs_target::attach): Update.
+	(procfs_target::detach): Update.
+	(procfs_target::fetch_registers): Update.
+	(procfs_target::store_registers): Update.
+	(procfs_target::wait): Update.
+	(procfs_target::files_info): Update.
+	* obsd-nat.c (obsd_nat_target::pid_to_str): Change return type.
+	* nto-procfs.c (struct nto_procfs_target) <pid_to_str>: Change
+	return type.
+	(nto_procfs_target::pid_to_str): Change return type.
+	(nto_procfs_target::files_info, nto_procfs_target::attach): Update.
+	* linux-thread-db.c (class thread_db_target) <pid_to_str>: Change
+	return type.
+	* linux-nat.c (linux_nat_target::pid_to_str): Change return type.
+	(exit_lwp): Update.
+	(attach_proc_task_lwp_callback, get_detach_signal)
+	(detach_one_lwp, resume_lwp, linux_nat_target::resume)
+	(linux_nat_target::resume, wait_lwp, stop_callback)
+	(maybe_clear_ignore_sigint, stop_wait_callback, status_callback)
+	(save_stop_reason, select_event_lwp, linux_nat_filter_event)
+	(linux_nat_wait_1, resume_stopped_resumed_lwps)
+	(linux_nat_target::wait, linux_nat_stop_lwp): Update.
+	* inf-ptrace.c (inf_ptrace_target::pid_to_str): Change return
+	type.
+	(inf_ptrace_target::attach): Update.
+	(inf_ptrace_target::files_info): Update.
+	* go32-nat.c (struct go32_nat_target) <pid_to_str>: Change return
+	type.
+	(go32_nat_target::pid_to_str): Change return type.
+	* gnu-nat.c (gnu_nat_target::pid_to_str): Change return type.
+	(gnu_nat_target::wait): Update.
+	(gnu_nat_target::wait): Update.
+	(gnu_nat_target::resume): Update.
+	* fbsd-nat.c (fbsd_nat_target::pid_to_str): Change return type.
+	(fbsd_nat_target::wait): Update.
+	* darwin-nat.c (darwin_nat_target::pid_to_str): Change return
+	type.
+	(darwin_nat_target::attach): Update.
+	* corelow.c (class core_target) <pid_to_str>: Change return type.
+	(core_target::pid_to_str): Change return type.
+	* target.c (normal_pid_to_str): Change return type.
+	(default_pid_to_str): Likewise.
+	(target_pid_to_str): Change return type.
+	(target_translate_tls_address): Update.
+	(target_announce_detach): Update.
+	* bsd-uthread.c (struct bsd_uthread_target) <pid_to_str>: Change
+	return type.
+	(bsd_uthread_target::pid_to_str): Change return type.
+	* bsd-kvm.c (class bsd_kvm_target) <pid_to_str>: Change return
+	type.
+	(bsd_kvm_target::pid_to_str): Change return type.
+	* aix-thread.c (class aix_thread_target) <pid_to_str>: Change
+	return type.
+	(aix_thread_target::pid_to_str): Change return type.
+	* target.h (struct target_ops) <pid_to_str>: Change return type.
+	(target_pid_to_str, normal_pid_to_str): Likewise.
+	* obsd-nat.h (class obsd_nat_target) <pid_to_str>: Change return
+	type.
+	* linux-nat.h (class linux_nat_target) <pid_to_str>: Change return
+	type.
+	* inf-ptrace.h (struct inf_ptrace_target) <pid_to_str>: Change
+	return type.
+	* gnu-nat.h (struct gnu_nat_target) <pid_to_str>: Change return
+	type.
+	* fbsd-nat.h (class fbsd_nat_target) <pid_to_str>: Change return
+	type.
+	* darwin-nat.h (class darwin_nat_target) <pid_to_str>: Change
+	return type.
+
+2019-03-13  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* NEWS: Mention that the new default MI version is 3.  Mention
+	changes to the output of commands and events that deal with
+	multi-location breakpoints.
+	* breakpoint.c: Include "mi/mi-out.h".
+	(print_one_breakpoint): Change output syntax if using MI version
+	>= 3.
+	* mi/mi-main.h (mi_cmd_fix_multi_location_breakpoint_output):
+	New.
+	(mi_multi_location_breakpoint_output_fixed): New.
+	* mi/mi-main.c (fix_multi_location_breakpoint_output): New.
+	(mi_cmd_fix_multi_location_breakpoint_output): New.
+	(mi_multi_location_breakpoint_output_fixed): New.
+	* mi/mi-cmds.c (mi_cmds): Register command
+	-fix-multi-location-breakpoint-output.
+	* mi/mi-out.c (mi_out_new): Instantiate version 3 when using
+	interpreter "mi".
+
+2019-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* mi/mi-out.h (mi_out_new): Change parameter to const char *.
+	* mi/mi-out.c (mi_out_new): Change parameter to const char *,
+	instantiate mi_ui_out based on interpreter name.
+	* mi/mi-interp.c (mi_interp::init): Use the new mi_out_new.
+	* mi/mi-main.c (mi_load_progress): Likewise.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* NEWS: Combine separate "New targets" sections for 8.3.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* ppc-fbsd-tdep.c (ppcfbsd_get_thread_local_address): New.
+	(ppcfbsd_init_abi): Install gdbarch
+	"fetch_tls_load_module_address" and "get_thread_local_address"
+	methods.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* riscv-fbsd-tdep.c (riscv_fbsd_get_thread_local_address): New.
+	(riscv_fbsd_init_abi): Install gdbarch
+	"fetch_tls_load_module_address" and "get_thread_local_address"
+	methods.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* i386-fbsd-tdep.c (i386fbsd_get_thread_local_address): New.
+	(i386fbsd_init_abi): Install gdbarch
+	"fetch_tls_load_module_address" and "get_thread_local_address"
+	methods.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* amd64-fbsd-tdep.c (amd64fbsd_get_thread_local_address): New.
+	(amd64fbsd_init_abi): Install gdbarch
+	"fetch_tls_load_module_address" and "get_thread_local_address"
+	methods.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-tdep.c (fbsd_pspace_data_handle): New variable.
+	(struct fbsd_pspace_data): New type.
+	(get_fbsd_pspace_data, fbsd_pspace_data_cleanup)
+	(fbsd_read_integer_by_name, fbsd_fetch_rtld_offsets)
+	(fbsd_get_tls_index, fbsd_get_thread_local_address): New function.
+	(_initialize_fbsd_tdep): Initialize 'fbsd_pspace_data_handle'.
+	* fbsd-tdep.c (fbsd_get_thread_local_address): New prototype.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* gdbtypes.c (lookup_struct_elt): New function.
+	(lookup_struct_elt_type): Reimplement via lookup_struct_elt.
+	* gdbtypes.h (struct struct_elt): New type.
+	(lookup_struct_elt): New prototype.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* gdbtypes.c (lookup_struct_elt_type): Update comment and
+	remove disabled code block.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* gdbarch.sh (get_thread_local_address): New method.
+	* gdbarch.h, gdbarch.c: Regenerate.
+	* target.c (target_translate_tls_address): Use
+	gdbarch_get_thread_local_address if present instead of
+	target::get_thread_local_address.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* target.h (target::get_thread_local_address): Update comment.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* solib-svr4.c (svr4_fetch_objfile_link_map): Look for
+	objfile->separate_debug_objfile_backlink if not NULL.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers): Use
+	tdep->fsbase_regnum instead of constants for fs_base and gs_base.
+	(amd64bsd_store_inferior_registers): Likewise.
+	* amd64-fbsd-nat.c (amd64_fbsd_nat_target::read_description):
+	Enable segment base registers.
+	* i386-bsd-nat.c (i386bsd_fetch_inferior_registers): Use
+	PT_GETFSBASE and PT_GETGSBASE.
+	(i386bsd_store_inferior_registers): Use PT_SETFSBASE and
+	PT_SETGSBASE.
+	* i386-fbsd-nat.c (i386_fbsd_nat_target::read_description): Enable
+	segment base registers.
+	* i386-fbsd-tdep.c (i386fbsd_core_read_description): Likewise.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* amd64-fbsd-nat.c (amd64_fbsd_nat_target::read_description):
+	Update calls to i386_target_description to add 'segments'
+	parameter.
+	* amd64-tdep.c (amd64_init_abi): Set tdep->fsbase_regnum.  Don't
+	add segment base registers.
+	* arch/i386.c (i386_create_target_description): Add 'segments'
+	parameter to enable segment base registers.
+	* arch/i386.h (i386_create_target_description): Likewise.
+	* features/i386/32bit-segments.xml: New file.
+	* features/i386/32bit-segments.c: Generate.
+	* i386-fbsd-nat.c (i386_fbsd_nat_target::read_description): Update
+	call to i386_target_description to add 'segments' parameter.
+	* i386-fbsd-tdep.c (i386fbsd_core_read_description): Likewise.
+	* i386-go32-tdep.c (i386_go32_init_abi): Likewise.
+	* i386-linux-tdep.c (i386_linux_read_description): Likewise.
+	* i386-tdep.c (i386_validate_tdesc_p): Add segment base registers
+	if feature is present.
+	(i386_gdbarch_init): Pass I386_NUM_REGS to set_gdbarch_num_regs.
+	Add 'segments' parameter to call to i386_target_description.
+	(i386_target_description): Add 'segments' parameter to enable
+	segment base registers.
+	(_initialize_i386_tdep) [GDB_SELF_TEST]: Add 'segments' parameter
+	to call to i386_target_description.
+	* i386-tdep.h (struct gdbarch_tdep): Add 'fsbase_regnum'.
+	(enum i386_regnum): Add I386_FSBASE_REGNUM and I386_GSBASE_REGNUM.
+	Define I386_NUM_REGS.
+	(i386_target_description): Add 'segments' parameter to enable
+	segment base registers.
+
+2019-03-12  Eli Zaretskii  <eliz@gnu.org>
+
+	PR/24325
+	* source-cache.c: #undef open and close, to avoid unresolved
+	externals during linking.
+
+2019-03-12  Tom Tromey  <tromey@adacore.com>
+
+	* remote.c (magic_null_ptid, not_sent_ptid, any_thread_ptid): Now
+	const.  Add initializers.
+	(_initialize_remote): Don't initialize ptid globals.
+
+2019-03-12  Pedro Alves  <palves@redhat.com>
+
+	* yy-remap.h [TEST_CPNAMES] (YYFPRINTF): Don't define.
+
+2019-03-12  Pedro Alves  <palves@redhat.com>
+
+	* cp-name-parser.y (main): Remove unused 'len' variable.
+
+2019-03-12  Tom Tromey  <tromey@adacore.com>
+
+	* common/ptid.c (null_ptid, minus_one_ptid): Now const.
+	* common/ptid.h (null_ptid, minus_one_ptid): Now const.
+
+2019-03-12  Tom Tromey  <tromey@adacore.com>
+
+	* linux-nat.c (iterate_over_lwps): Update.
+	(stop_callback): Remove parameter.
+	(stop_wait_callback, detach_callback, resume_set_callback)
+	(select_singlestep_lwp_callback, set_ignore_sigint)
+	(status_callback, resumed_callback, resume_clear_callback)
+	(kill_callback, kill_wait_callback, linux_nat_stop_lwp): Remove
+	data parameter.
+	(linux_nat_target::detach, linux_nat_target::resume)
+	(linux_stop_and_wait_all_lwps, select_event_lwp)
+	(linux_nat_filter_event, linux_nat_wait_1)
+	(linux_nat_target::kill, linux_nat_target::stop)
+	(linux_nat_target::stop): Update.
+	(linux_nat_resume_callback): Change type.
+	(resume_stopped_resumed_lwps, count_events_callback)
+	(select_event_lwp_callback): Likewise.
+	(linux_stop_lwp, linux_nat_stop_lwp): Update.
+	* arm-linux-nat.c (struct update_registers_data): Remove.
+	(update_registers_callback): Change type.
+	(arm_linux_insert_hw_breakpoint1): Update.
+	* nat/x86-linux-dregs.c (update_debug_registers_callback): Remove
+	parameter.
+	(x86_linux_dr_set_addr): Update.
+	(x86_linux_dr_set_control): Update.
+	* nat/linux-nat.h (iterate_over_lwps_ftype): Remove parameter.
+	(iterate_over_lwps): Use gdb::function_view.
+	* nat/aarch64-linux-hw-point.c (struct
+	aarch64_dr_update_callback_param): Remove.
+	(debug_reg_change_callback): Change type.
+	(aarch64_notify_debug_reg_change): Update.
+	* s390-linux-nat.c (s390_refresh_per_info): Update.
+
+2019-03-11  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (dwarf2_find_containing_comp_unit): Remove
+	redundant assignment to "this_cu".
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type): Remove unnecessary cases from switch.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_set): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_struct): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_complex): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_float): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_bool): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_range): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_char): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_enum): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_int): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_func): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_array): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-03-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (rank_one_type_parm_ptr): New function extracted
+	from...
+	(rank_one_type): ... this.
+
+2019-02-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* inferior.c (initialize_inferiors): Ensure 'help set/show print
+	inferior-events' shows the example events.
+
+2019-03-08  Eli Zaretskii  <eliz@gnu.org>
+
+	Support styling on native MS-Windows console
+
+	PR/24315
+	* utils.c (can_emit_style_escape) [_WIN32]: Don't disable styling
+	on MS-Windows if $TERM is not defined.
+
+	* cli/cli-style.c: Set cli_styling to 1 in the MinGW build.
+
+	* posix-hdep.c (gdb_console_fputs):
+	* mingw-hdep.c (rgb_to_16colors, gdb_console_fputs): New
+	functions.
+	* ui-file.h (gdb_console_fputs): Add prototype.
+
+	* ui-file.c (stdio_file::puts): Call gdb_console_fputs, and fall
+	back to fputs only if the former returns zero.
+
+2019-03-07  Tom Tromey  <tom@tromey.com>
+
+	* symmisc.c (print_symbol_bcache_statistics): Update.
+	(print_objfile_statistics): Update.
+	* symfile.c (allocate_symtab): Update.
+	* stabsread.c: Don't include bcache.h.
+	* psymtab.h (struct psymbol_bcache): Don't declare.
+	(class psymtab_storage) <psymbol_cache>: Now a bcache.
+	(psymbol_bcache_init, psymbol_bcache_free)
+	(psymbol_bcache_get_bcache): Don't declare.
+	* psymtab.c (struct psymbol_bcache): Remove.
+	(psymtab_storage::psymtab_storage): Update.
+	(psymtab_storage::~psymtab_storage): Update.
+	(psymbol_bcache_init, psymbol_bcache_free)
+	(psymbol_bcache_get_bcache, psymbol_bcache_full): Remove.
+	(add_psymbol_to_bcache): Update.
+	(allocate_psymtab): Update.
+	* objfiles.h (struct objfile_per_bfd_storage) <filename_cache,
+	macro_cache>: No longer pointers.
+	* objfiles.c (get_objfile_bfd_data): Don't call bcache_xmalloc.
+	(free_objfile_per_bfd_storage): Don't call bcache_xfree.
+	* macrotab.c (macro_bcache): Update.
+	* macroexp.c: Don't include bcache.h.
+	* gdbtypes.c (check_types_worklist): Update.
+	(types_deeply_equal): Remove TRY/CATCH.  Update.
+	* elfread.c (elf_symtab_read): Update.
+	* dwarf2read.c: Don't include bcache.h.
+	* buildsym.c (buildsym_compunit::get_macro_table): Update.
+	* bcache.h (bcache, bcache_full, bcache_xffree, bcache_xmalloc)
+	(print_bcache_statistics, bcache_memory_used): Don't declare.
+	(struct bcache): Move from bcache.c.  Add constructor, destructor,
+	methods.  Rename all data members.
+	* bcache.c (struct bcache): Move to bcache.h.
+	(bcache::expand_hash_table): Rename from expand_hash_table.
+	(bcache): Remove.
+	(bcache::insert): Rename from bcache_full.
+	(bcache::compare): Rename from bcache_compare.
+	(bcache_xmalloc): Remove.
+	(bcache::~bcache): Rename from bcache_xfree.
+	(bcache::print_statistics): Rename from print_bcache_statistics.
+	(bcache::memory_used): Rename from bcache_memory_used.
+
+2019-03-07  Pedro Alves  <palves@redhat.com>
+
+	* infrun.c (normal_stop): Also check for
+	TARGET_WAITKIND_NO_RESUMED before referring to inferior_thread().
+
+2019-03-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-lang.c (value_from_host_double): Moved to...
+	* value.c (value_from_host_double): ...here.
+	* value.h (value_from_host_double): Declare.
+	* guile/scm-math.c (vlscm_convert_typed_number): Use
+	value_from_host_double.
+	(vlscm_convert_number): Likewise.
+	* guile/scm-value.c (gdbscm_value_to_real): Likewise.
+	* python/py-value.c (convert_value_from_python): Likewise.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* gcore.c (write_gcore_file): Use SCOPE_EXIT.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* utils.h (free_current_contents): Don't declare.
+	* utils.c (free_current_contents): Remove.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* top.c (quit_force): Update.
+	* main.c (captured_command_loop): Update.
+	* common/new-op.c (operator new): Update.
+	* common/common-exceptions.c (struct catcher)
+	<save_cleanup_chain>: Remove member.
+	(exceptions_state_mc_init): Update.
+	(exception_try_scope_entry): Return nullptr.
+	(exception_try_scope_exit, exception_rethrow)
+	(throw_exception_sjlj, throw_exception_cxx): Update.
+	* common/cleanups.h (make_cleanup, make_cleanup_dtor)
+	(all_cleanups, do_cleanups, discard_cleanups)
+	(discard_final_cleanups, save_cleanups, save_final_cleanups)
+	(restore_cleanups, restore_final_cleanups): Don't declare.
+	(do_final_cleanups): Remove parameter.
+	* common/cleanups.c (cleanup_chain, make_cleanup)
+	(make_cleanup_dtor, all_cleanups, do_cleanups)
+	(discard_my_cleanups, discard_cleanups)
+	(discard_final_cleanups, save_my_cleanups, save_cleanups)
+	(save_final_cleanups, restore_my_cleanups, restore_cleanups)
+	(null_cleanup): Remove.
+	(do_final_cleanups): Remove parameter.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* remote.c (remote_target::remote_parse_stop_reply): Use
+	unique_xmalloc_ptr.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* stabsread.c (struct stabs_field_info): Rename from field_info.
+	<list, fnlist>: Add initializers.
+	<obstack>: New member.
+	(read_member_functions, read_struct_fields, read_baseclasses):
+	Allocate on obstack.  Don't use cleanups.
+	(read_one_struct_field, read_member_functions, read_struct_fields)
+	(read_baseclasses, read_tilde_fields, attach_fn_fields_to_type)
+	(attach_fields_to_type, read_cpp_abbrev, read_member_functions)
+	(read_struct_type): Update.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* nat/linux-namespaces.c (linux_mntns_access_fs): Use SCOPE_EXIT.
+	* common/filestuff.h (make_cleanup_close): Don't declare.
+	* common/filestuff.c (do_close_cleanup, make_cleanup_close):
+	Remove.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* solib-aix.c: Use make_scope_exit.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* solib-svr4.c (svr4_parse_libraries, svr4_current_sos_direct):
+	Use make_scope_exit.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* solib-svr4.c (disable_probes_interface): Remove parameter.
+	(svr4_handle_solib_event): Use make_scope_exit.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* remote.c (struct stop_reply_deleter): Remove.
+	(stop_reply_up): Update.
+	(struct stop_reply): Derive from notif_event.  Don't typedef.
+	<regcache>: Now a std::vector.
+	(stop_reply_xfree): Remove.
+	(stop_reply::~stop_reply): Rename from stop_reply_dtr.
+	(remote_notif_stop_alloc_reply): Return a unique_ptr.  Use new.
+	(remote_target::discard_pending_stop_replies): Use delete.
+	(remote_target::remote_parse_stop_reply): Update.
+	(remote_target::process_stop_reply): Update.
+	* remote-notif.h (struct notif_event): Add virtual destructor.
+	Remove "dtr" member.
+	(struct notif_client) <alloc_event>: Return a unique_ptr.
+	(notif_event_xfree): Don't declare.
+	(notif_event_up): New typedef.
+	* remote-notif.c (remote_notif_ack, remote_notif_parse): Update.
+	(notif_event_xfree, do_notif_event_xfree): Remove.
+	(remote_notif_state_xfree): Update.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* infrun.c (displaced_step_clear_cleanup): Now a
+	forward_scope_exit type.
+	(displaced_step_prepare_throw): Update.
+	(displaced_step_fixup): Update.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* inferior.h (class inferior): Update comment.
+	* gdbthread.h (class thread_info): Update comment.
+
+2019-03-06  Joel Brobecker  <brobecker@adacore.com>
+	    Tom Tromey  <tom@tromey.com>
+
+	* stabsread.h (struct stab_section_list): Remove.
+	(coffstab_build_psymtabs): Update.
+	* dbxread.c (symbuf_sections): Now a std::vector.
+	(sect_idx): New global.
+	(fill_symbuf): Update.
+	(coffstab_build_psymtabs): Change type of stabsects parameter.
+	Update.
+	* coffread.c (struct coff_symfile_info) <stabsects>: Now a
+	std::vector.
+	(linetab, linetab_offset, linetab_size, stringtab): Move earlier.
+	(coff_locate_sections): Update.
+	(coff_symfile_read): Remove cleanups.  Update.
+	(init_stringtab): Add storage parameter.
+	(free_stringtab, free_stringtab_cleanup): Remove.
+	(init_lineno): Add storage parameter.
+	(free_linetab, free_linetab_cleanup): Remove.
+
+2019-03-06  Pedro Alves  <palves@redhat.com>
+
+	* linux-fork.c (fork_info::clobber_regs): Delete.
+	(fork_load_infrun_state): Remove reference to 'clobber_regs'.
+	(fork_save_infrun_state): Remove 'clobber_regs' parameter.  Update
+	comment.  Adjust.
+	(scoped_switch_fork_info::scoped_switch_fork_info)
+	(checkpoint_command, linux_fork_context): Adjust
+	fork_save_infrun_state calls.
+
+2019-03-06  Pedro Alves  <palves@redhat.com>
+
+	* linux-fork.c (inf_has_multiple_thread_cb): Delete.
+	(inf_has_multiple_threads): Return 'bool' and rewrite using
+	inferior_info::threads().
+
+2019-03-06  Pedro Alves  <palves@redhat.com>
+
+	* linux-fork.c: Include <list>.
+	(fork_list): Now a std::list instance.
+	(fork_info): Add ctor, dtor, and in-class initialize all fields.
+	(forks_exist_p, find_last_fork): Adjust.
+	(new_fork): Delete.
+	(one_fork_p): New.
+	(add_fork): Adjust.
+	(free_fork): Delete, folded into fork_info::~fork_info().
+	(delete_fork, find_fork_ptid, find_fork_id, find_fork_pid):
+	Adjust.
+	(init_fork_list): Delete.
+	(linux_fork_killall, linux_fork_mourn_inferior)
+	(linux_fork_detach, info_checkpoints_command): Adjust.
+	(_initialize_linux_fork): No longer call init_fork_list.
+
+2019-03-06  Pedro Alves  <palves@redhat.com>
+
+	* linux-fork.c (new_fork): New, split out of ...
+	(add_fork): ... this.  Return void.  Move "first fork" special
+	case from here, to ...
+	(checkpoint_command): ... here.
+	* linux-linux.h (add_fork): Return void.
+
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (direct_abs_decl): Handle TYPE*SIZE type names.
+
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Chris January  <chris.january@arm.com>
+	    David Lecomber  <david.lecomber@arm.com>
+
+	* f-exp.y: New token, UNOP_INTRINSIC.
+	(exp): New pattern using UNOP_INTRINSIC token.
+	(f77_keywords): Add 'abs' keyword.
+	* f-lang.c: Add 'target-float.h' and 'math.h' includes.
+	(value_from_host_double): New function.
+	(evaluate_subexp_f): Support UNOP_ABS.
+
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-lang.c (build_fortran_types): Use TYPE_CODE_CHAR for character
+	types.
+
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (convert_to_kind_type): Handle integer (kind=8).
+	* f-lang.c (build_fortran_types): Setup builtin_integer_s8.
+	* f-lang.h (struct builtin_f_type): Add builtin_integer_s8 field.
+
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (convert_to_kind_type): Handle more type kinds.
+
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Chris January  <chris.january@arm.com>
+
+	* expprint.c (dump_subexp_body_standard): Support UNOP_KIND.
+	* f-exp.y: Define 'KIND' token.
+	(exp): New pattern for KIND expressions.
+	(ptype): Handle types with a kind extension.
+	(direct_abs_decl): Extend to spot kind extensions.
+	(f77_keywords): Add 'kind' to the list.
+	(push_kind_type): New function.
+	(convert_to_kind_type): New function.
+	* f-lang.c (evaluate_subexp_f): Support UNOP_KIND.
+	* parse.c (operator_length_standard): Likewise.
+	* parser-defs.h (enum type_pieces): Add tp_kind.
+	* std-operator.def: Add UNOP_KIND.
+
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (f_parse): Set yydebug.
+
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-lang.c (evaluate_subexp_f): New function.
+	(exp_descriptor_f): New global.
+	(f_language_defn): Use exp_descriptor_f instead of
+	exp_descriptor_standard.
+
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (struct token): Add comments.
+	(dot_ops): Remove uppercase versions and the end marker.
+	(f77_keywords): Likewise.
+	(yylex): Use ARRAY_SIZE to iterate over dot_ops, assert all
+	entries in the dot_ops array are case insensitive, and use
+	strncasecmp to compare strings.  Also some whitespace cleanup in
+	this area.  Similar for the f77_keywords array, except entries in
+	this list might be case sensitive.
+
+2019-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (struct f77_boolean_val): Add comments.
+	(boolean_values): Remove uppercase versions, and end marker.
+	(yylex): Use ARRAY_SIZE for iterating over boolean_values array,
+	and use strncasecmp to achieve case insensitivity.  Additionally,
+	perform whitespace cleanup around this code.
+
+2019-03-06  Tom Tromey  <tromey@adacore.com>
+
+	* remote-sim.c (gdbsim_target_open): Use result of
+	gdb_argv::release.
+
+2019-03-06  Richard Bunt  <richard.bunt@arm.com>
+	Dirk Schubert  <dirk.schubert@arm.com>
+	Chris January  <chris.january@arm.com>
+
+	* eval.c (evaluate_subexp_standard): Call Fortran argument
+	wrapping logic.
+	* f-lang.c (struct value): A value which can be passed into a
+	Fortran function call.
+	(fortran_argument_convert): Wrap Fortran arguments in a pointer
+	where appropriate.
+	(struct type): Value ready for a Fortran function call.
+	(fortran_preserve_arg_pointer): Undo check_typedef, the pointer
+	is needed.
+	* f-lang.h (fortran_argument_convert): Declaration.
+	(fortran_preserve_arg_pointer): Declaration.
+	* infcall.c (value_arg_coerce): Call Fortran argument logic.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* python/py-prettyprint.c (print_string_repr): Remove #if.
+	* python/py-utils.c (unicode_to_encoded_string): Remove #if.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* target.c (the_dummy_target): Move later.  Change type to
+	"dummy_target".
+	(initialize_targets): Don't initialize the_dummy_target.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* gdb_bfd.c (gdb_bfd_fdopenr): Remove.
+	* gdb_bfd.h (gdb_bfd_fdopenr): Don't declare.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (windows_nat_target::attach)
+	(windows_nat_target::detach): Don't call gdb_flush.
+	* valprint.c (generic_val_print, val_print, val_print_string):
+	Don't call gdb_flush.
+	* utils.c (defaulted_query): Don't call gdb_flush.
+	* typeprint.c (print_type_scalar): Don't call gdb_flush.
+	* target.c (target_announce_detach): Don't call gdb_flush.
+	* sparc64-tdep.c (adi_print_versions): Don't call gdb_flush.
+	* remote.c (extended_remote_target::attach): Don't call
+	gdb_flush.
+	* procfs.c (procfs_target::detach): Don't call gdb_flush.
+	* printcmd.c (do_examine): Don't call gdb_flush.
+	(info_display_command): Don't call gdb_flush.
+	* p-valprint.c (pascal_val_print): Don't call gdb_flush.
+	* nto-procfs.c (nto_procfs_target::attach): Don't call gdb_flush.
+	* memattr.c (info_mem_command): Don't call gdb_flush.
+	* mdebugread.c (mdebug_build_psymtabs): Don't call gdb_flush.
+	* m2-valprint.c (m2_val_print): Don't call gdb_flush.
+	* infrun.c (follow_exec, handle_command): Don't call gdb_flush.
+	* inf-ptrace.c (inf_ptrace_target::attach): Don't call gdb_flush.
+	* hppa-tdep.c (unwind_command): Don't call gdb_flush.
+	* gnu-nat.c (gnu_nat_target::attach): Don't call gdb_flush.
+	(gnu_nat_target::detach): Don't call gdb_flush.
+	* f-valprint.c (f_val_print): Don't call gdb_flush.
+	* darwin-nat.c (darwin_nat_target::attach): Don't call gdb_flush.
+	* cli/cli-script.c (read_command_lines): Don't call gdb_flush.
+	* cli/cli-cmds.c (shell_escape, print_disassembly): Don't call
+	gdb_flush.
+	* c-valprint.c (c_val_print): Don't call gdb_flush.
+	* ada-valprint.c (ada_print_scalar): Don't call gdb_flush.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* varobj.c (update_dynamic_varobj_children): Update.
+	(install_default_visualizer): Use reset, not release.
+	* value.c (set_internalvar): Update.
+	* dwarf2loc.c (value_of_dwarf_reg_entry): Update.
+	* common/gdb_ref_ptr.h (class ref_ptr) <release>: Add
+	ATTRIBUTE_UNUSED_RESULT.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* remote.c (class scoped_remote_fd) <release>: Add
+	ATTRIBUTE_UNUSED_RESULT.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* macroexp.c (struct macro_buffer) <release>: Add
+	ATTRIBUTE_UNUSED_RESULT.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* nat/linux-btrace.c (linux_enable_bts, linux_enable_pt): Update.
+	* common/scoped_mmap.h (class scoped_mmap) <release>: Add
+	ATTRIBUTE_UNUSED_RESULT.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* common/scoped_fd.h (class scoped_fd) <release>: Add
+	ATTRIBUTE_UNUSED_RESULT.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* parser-defs.h (struct parser_state) <release>: Add
+	ATTRIBUTE_UNUSED_RESULT.
+
+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+	* utils.h (class gdb_argv) <release>: Add
+	ATTRIBUTE_UNUSED_RESULT.
+	* common/common-defs.h (ATTRIBUTE_UNUSED_RESULT): Define.
+
+2019-03-02  Eli Zaretskii  <eliz@gnu.org>
+
+	* xml-syscall.c (xml_list_syscalls_by_group): Drop 'struct' from
+	for-loop range, to avoid compiler warnings.
+
+	* tui/tui.c (tui_enable) [__MINGW32__]: Don't declare 'cap', to
+	avoid compiler warnings about unused variables.
+
+	* NEWS: Mention end of support for native debugging on MS-Windows
+	before XP.
+
+	PR gdb/24292
+	* common/netstuff.c:
+	* gdbserver/gdbreplay.c
+	* gdbserver/remote-utils.c:
+	* ser-tcp.c:
+	* unittests/parse-connection-spec-selftests.c [USE_WIN32API]:
+	Include ws2tcpip.h instead of wsiapi.h and winsock2.h.  Redefine
+	_WIN32_WINNT to 0x0501 if defined to a smaller value, as
+	'getaddrinfo' and 'freeaddrinfo' were not available before
+	Windows XP, and mingw.org's MinGW headers by default define
+	_WIN32_WINNT to 0x500.
+
+2019-03-01  Gary Benson <gbenson@redhat.com>
+
+	* coffread.c (coff_start_symtab): Remove unnecessary xstrdup.
+
+2019-02-28  Brian Vandenberg  <phantall@gmail.com>
+	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	PR gdb/8527
+	* procfs.c (proc_wait_for_stop): Wrap write of PCWSTOP in
+	set_sigint_trap, clear_sigint_trap.
+
+2019-02-27  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* target.c (target_detach): Clear the regcache and the
+	frame cache.
+
+2019-02-27  Pedro Alves  <palves@redhat.com>
+
+	* utils.c (set_screen_size): When we cap the height/width sizes,
+	tweak the corresponding command variable to show "unlimited":
+
+2019-02-27  Saagar Jha  <saagar@saagarjha.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* utils.c (set_screen_size): Reduce "infinite" rows and columns
+	before calling rl_set_screen_size.
+
+2019-02-27  Tom Tromey  <tromey@adacore.com>
+
+	* configure.ac (HAVE_LIBPYTHON2_4, HAVE_LIBPYTHON2_5): Never
+	define.
+	* python/py-value.c: Remove Python 2.4 workaround.
+	* python/py-utils.c (gdb_pymodule_addobject): Remove Python 2.4
+	workaround.
+	* python/py-type.c (convert_field, gdbpy_initialize_types): Remove
+	Python 2.4 workaround.
+	* python/python-internal.h: Remove Python 2.4 comment.
+	(Py_ssize_t): Don't define.
+	(PyVarObject_HEAD_INIT, Py_TYPE): Don't define.
+	(gdb_Py_DECREF): Remove Python 2.4 workaround.
+	(gdb_PyObject_GetAttrString, PyObject_GetAttrString): Remove.
+	(gdb_PyObject_HasAttrString, PyObject_HasAttrString): Remove.
+	* python/python.c (do_start_initialization): Remove Python 2.4
+	workaround.
+	* python/py-prettyprint.c (class dummy_python_frame): Remove.
+	(print_children): Remove Python 2.4 workaround.
+	* python/py-inferior.c (buffer_procs): Remove Python 2.4
+	workaround.
+	(CHARBUFFERPROC_NAME): Remove.
+	* python/py-breakpoint.c (gdbpy_initialize_breakpoints): Remove
+	Python 2.4 workaround.
+
+2019-02-27  Kevin Buettner  <kevinb@redhat.com>
+
+	* NEWS: Note minimum Python version.
+
+2019-02-27  Kevin Buettner  <kevinb@redhat.com>
+
+	* python/py-inferior.c (infpy_write_memory): Remove non-IS_PY3K
+	code from these functions.  Remove corresponding ifdefs.  Use
+	Py_buffer_up instead of explicit calls to PyBuffer_Release.
+	Remove gotos and target of gotos.
+	(infpy_search_memory): Likewise.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* hppa-tdep.c (hppa_dummy_id): Delete.
+	(hppa_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* h8300-tdep.c (h8300_unwind_pc): Delete.
+	(h8300_unwind_sp): Delete.
+	(h8300_dummy_id): Delete.
+	(h8300_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ft32-tdep.c (ft32_dummy_id): Delete.
+	(ft32_unwind_pc): Delete.
+	(ft32_unwind_sp): Delete.
+	(ft32_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* frv-tdep.c (frv_dummy_id): Delete.
+	(frv_unwind_pc): Delete.
+	(frv_unwind_sp): Delete.
+	(frv_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_dummy_id): Delete.
+	(riscv_unwind_pc): Delete.
+	(riscv_unwind_sp): Delete.
+	(riscv_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* csky-tdep.c (csky_dummy_id): Delete.
+	(csky_unwind_pc): Delete.
+	(csky_unwind_sp): Delete.
+	(csky_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cris-tdep.c (cris_dummy_id): Delete.
+	(cris_unwind_pc): Delete.
+	(cris_unwind_sp): Delete.
+	(cris_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* bfin-tdep.c (bfin_dummy_id): Delete.
+	(bfin_unwind_pc): Delete.
+	(bfin_gdbarch_init): Don't register deleted functions with gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arm-tdep.c (arm_dummy_id): Delete.
+	(arm_unwind_pc): Delete.
+	(arm_unwind_sp): Delete.
+	(arm_gdbarch_init): Don't register deleted functions with gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arc-tdep.c (arc_dummy_id): Delete.
+	(arc_unwind_pc): Delete.
+	(arc_unwind_sp): Delete.
+	(arc_gdbarch_init): Don't register deleted functions with gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* alpha-tdep.c (alpha_dummy_id): Delete.
+	(alpha_unwind_pc): Delete.
+	(alpha_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* aarch64-tdep.c (aarch64_dummy_id): Delete.
+	(aarch64_unwind_pc): Delete.
+	(aarch64_unwind_sp): Delete.
+	(aarch64_gdbarch_init): Don't register deleted functions with
+	gdbarch.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbtypes.c (type_align): Don't consider static members when
+	computing structure alignment.
+
+2019-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arc-tdep.c (arc_type_align): Provide alignment for basic types,
+	return 0 for other types.
+	* arch-utils.c (default_type_align): Always return 0.
+	* gdbarch.h: Regenerate.
+	* gdbarch.sh (type_align): Extend comment.
+	* gdbtypes.c (type_align): Add additional comments, always call
+	gdbarch_type_align before applying the default rules.
+	* i386-tdep.c (i386_type_align): Return 0 as the default rule,
+	generic code will then apply a suitable default.
+	* nios2-tdep.c (nios2_type_align): Provide alignment for basic
+	types, return 0 for other types.
+
+2019-02-27  Joel Brobecker  <brobecker@adacore.com>
+
+	* NEWS: Create a new section for the next release branch.
+	Rename the section of the current branch, now that it has
+	been cut.
+
+2019-02-27  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 8.3 branch created (143420fb0d5ae54323ba9953f0818c194635228d):
+	* version.in: Bump version to 8.3.50.DATE-git.
+
+2019-02-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* aix-thread.c (ptid_cmp): Remove unused variable.
+	(get_signaled_thread): Likewise.
+	(store_regs_user_thread): Likewise.
+	(store_regs_kernel_thread): Likewise.
+	(fetch_regs_kernel_thread): Remove shadowed variable.
+
+2019-02-26  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* features/riscv/32bit-cpu.xml: Add register numbers.
+	* features/riscv/32bit-fpu.c: Regenerate.
+	* features/riscv/32bit-fpu.xml: Add register numbers.
+	* features/riscv/64bit-cpu.xml: Add register numbers.
+	* features/riscv/64bit-fpu.c: Regenerate.
+	* features/riscv/64bit-fpu.xml: Add register numbers.
+
+2019-02-26  Kevin Buettner  <kevinb@redhat.com>
+
+	* NEWS: Mention two argument form of gdb.Value constructor.
+	* python/py-value.c (convert_buffer_and_type_to_value): New
+	function.
+	(valpy_new): Parse arguments via gdb_PyArg_ParseTupleAndKeywords.
+	Add support for handling an optional second argument.  Call
+	convert_buffer_and_type_to_value as appropriate.
+	* python/python-internal.h (Py_buffer_deleter): New struct.
+	(Py_buffer_up): New typedef.
+
+2019-02-25  John Baldwin  <jhb@FreeBSD.org>
+
+	* dwarf2read.c (dwarf2_get_dwz_file): Reset dwz_bfd to nullptr
+	instead of releasing ownership.
+
+2019-02-25  Jordan Rupprecht  <rupprecht@google.com>
+
+	* dwarf2read.c (open_and_init_dwp_file): Call
+	elf_numsections instead of bfd_count_sections to initialize
+	dwp_file->num_sections.
+
+2019-02-25  Tom Tromey  <tromey@adacore.com>
+
+	* solib-darwin.c (darwin_get_dyld_bfd): Don't release dyld_bfd.
+
+2019-02-23  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* gcore.in: Add '--readnever' option when invoking GDB.
+
+2019-02-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* MAINTAINERS: Update my email address.
+
+2019-02-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* build-id.c (build_id_to_debug_bfd_1): New function.
+	(build_id_to_debug_bfd): Look for separate debug file in
+	sysroot.
+
+2019-02-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbarch.sh: Update the copyright year range that is placed into
+	generated files.
+
+2019-02-22  Keith Seitz  <keiths@redhat.com>
+
+	PR symtab/23853
+	* linespec.c (create_sals_line_offset): Search for the default
+	symtab's filename instead of its fullname.
+
+2019-02-21  Alan Hayward  <alan.hayward@arm.com>
+
+	* NEWS: Update style defaults.
+
+2019-02-21  Alan Hayward  <alan.hayward@arm.com>
+
+	* main.c (captured_main_1): Disable styling in batch mode.
+
+2019-02-20  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (symtab_symbol_info): Fix typos.
+
+2019-02-20  Tom Tromey  <tromey@adacore.com>
+
+	* findcmd.c (_initialize_mem_search): Use upper case for
+	metasyntactic variables.
+
+2019-02-20  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-tdep.c (aarch64_add_reggroups): New function.
+	(aarch64_gdbarch_init): Call aarch64_add_reggroups.
+
+2019-02-19  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* top.h (source_file_name): Change to std::string.
+	* top.c (source_file_name): Likewise.
+	(command_line_input): Adjust.
+	* cli/cli-script.c (script_from_file): Adjust.
+
+2019-02-19  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c
+	(ravenscar_thread_target::update_thread_list): Don't call
+	ada_build_task_list.
+	* ada-lang.h (ada_build_task_list): Don't declare.
+	* ada-tasks.c (struct ada_tasks_inferior_data)
+	<task_list_valid_p>: Now bool.
+	(read_known_tasks, ada_task_list_changed)
+	(ada_tasks_invalidate_inferior_data): Update.
+	(read_known_tasks_array): Return bool.
+	(read_known_tasks_list): Likewise.
+	(read_known_tasks): Return void.
+	(ada_build_task_list): Now static.
+
+2019-02-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbtypes.c (type_align): Allow alignment of TYPE_CODE_METHODPTR
+	and TYPE_CODE_MEMBERPTR to be overridden by the gdbarch.
+
+2019-02-18  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* ada-task.c (_initialize_tasks): Use 'with_cleanup' register
+	variant for ada_tasks_pspace_data_handle and
+	ada_tasks_inferior_data_handle.
+	(ada_tasks_pspace_data_cleanup): New function.
+	(ada_tasks_inferior_data_cleanup): New function.
+
+2019-02-17  Tom Tromey  <tom@tromey.com>
+
+	* macrotab.h (macro_source_fullname): Return a std::string.
+	* macrotab.c (macro_include, check_for_redefinition)
+	(macro_undef, macro_lookup_definition, foreach_macro)
+	(foreach_macro_in_scope): Update.
+	(macro_source_fullname): Return a std::string.
+	* macrocmd.c (show_pp_source_pos): Update.
+
+2019-02-17  Tom Tromey  <tom@tromey.com>
+
+	* macrocmd.c (show_pp_source_pos): Style the file names.
+
+2019-02-17  Tom Tromey  <tom@tromey.com>
+
+	PR tui/24197:
+	* tui/tui-source.c (tui_set_source_content_nil): Rewrite.
+
+2019-02-17  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (user_select_syms): Use filtered printing.
+	* utils.c (wrap_style): New global.
+	(desired_style): Remove.
+	(emit_style_escape): Add stream parameter.
+	(set_output_style, reset_terminal_style, prompt_for_continue):
+	Update.
+	(flush_wrap_buffer): Only flush gdb_stdout.
+	(wrap_here): Set wrap_style.
+	(fputs_maybe_filtered): Clear the wrap buffer on exception.  Don't
+	treat escape sequences as a character.  Change when wrap buffer is
+	flushed.
+	(fputs_styled): Do not set the output style when the default is
+	requested.
+	* ui-style.h (struct ui_file_style) <is_default>: New method.
+	* source.c (print_source_lines_base): Emit escape sequences in one
+	piece.
+
+2019-02-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbtypes.c (type_align): Handle TYPE_CODE_RANGE the same as
+	integers and enumeration types.
+
+2019-02-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-lang.c (standard_lookup): Use ada_lookup_encoded_symbol
+	instead of lookup_symbol_in_language
+	(do_exact_match): New function.
+	(ada_get_symbol_name_matcher): Return do_exact_match when
+	doing a verbatim match.
+
+2019-02-15  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (ravenscar_thread_target::resume)
+	(ravenscar_thread_target::wait): Special case wildcard requests.
+
+2019-02-15  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (base_ptid): Remove.
+	(struct ravenscar_thread_target) <close>: New method.
+	<m_base_ptid>: New member.
+	<update_inferior_ptid, active_task, task_is_currently_active,
+	runtime_initialized>: Declare methods.
+	<ravenscar_thread_target>: Add constructor.
+	(ravenscar_thread_target::task_is_currently_active)
+	(ravenscar_thread_target::update_inferior_ptid)
+	(ravenscar_runtime_initialized): Rename.  Now methods.
+	(ravenscar_thread_target::resume, ravenscar_thread_target::wait)
+	(ravenscar_thread_target::update_thread_list): Update.
+	(ravenscar_thread_target::active_task): Now method.
+	(ravenscar_thread_target::store_registers)
+	(ravenscar_thread_target::prepare_to_store)
+	(ravenscar_thread_target::prepare_to_store)
+	(ravenscar_thread_target::mourn_inferior): Update.
+	(ravenscar_inferior_created): Use "new" to create target.
+	(ravenscar_thread_target::get_ada_task_ptid): Update.
+	(_initialize_ravenscar): Don't initialize base_ptid.
+	(ravenscar_ops): Remove global.
+
+2019-02-15  Tom Tromey  <tromey@adacore.com>
+
+	* target.h (push_target): Declare new overload.
+	* target.c (push_target): New overload, taking an rvalue reference.
+	* remote.c (remote_target::open_1): Use push_target overload.
+	* corelow.c (core_target_open): Use push_target overload.
+
+2019-02-15  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (is_ravenscar_task)
+	(ravenscar_task_is_currently_active): Return bool.
+	(ravenscar_update_inferior_ptid, get_running_thread_msymbol)
+	(_initialize_ravenscar): Remove "(void)".
+	(has_ravenscar_runtime, ravenscar_runtime_initialized): Likewise.
+	Return bool.
+
+2019-02-15  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (ravenscar_runtime_initializer)
+	(has_ravenscar_runtime, get_running_thread_id)
+	(ravenscar_thread_target::resume): Fix indentation.
+
+2019-02-15  Tom Tromey  <tromey@adacore.com>
+
+	* sparc-ravenscar-thread.c (struct sparc_ravenscar_ops): Derive
+	from ravenscar_arch_ops.
+	(sparc_ravenscar_ops::fetch_registers)
+	(sparc_ravenscar_ops::store_registers): Now methods.
+	(sparc_ravenscar_prepare_to_store): Remove.
+	(sparc_ravenscar_ops): Redefine.
+	* ravenscar-thread.h (struct ravenscar_arch_ops): Add virtual
+	methods and destructor.  Remove members.
+	* ravenscar-thread.c (ravenscar_thread_target::fetch_registers)
+	(ravenscar_thread_target::store_registers)
+	(ravenscar_thread_target::prepare_to_store): Update.
+	* ppc-ravenscar-thread.c (ppc_ravenscar_generic_prepare_to_store):
+	Remove.
+	(struct ppc_ravenscar_powerpc_ops): Derive from
+	ravenscar_arch_ops.
+	(ppc_ravenscar_powerpc_ops::fetch_registers)
+	(ppc_ravenscar_powerpc_ops::store_registers): Now methods.
+	(ppc_ravenscar_powerpc_ops): Redefine.
+	(struct ppc_ravenscar_e500_ops): Derive from ravenscar_arch_ops.
+	(ppc_ravenscar_e500_ops::fetch_registers)
+	(ppc_ravenscar_e500_ops::store_registers): Now methods.
+	(ppc_ravenscar_e500_ops): Redefine.
+	* aarch64-ravenscar-thread.c
+	(aarch64_ravenscar_generic_prepare_to_store): Remove.
+	(struct aarch64_ravenscar_ops): Derive from ravenscar_arch_ops.
+	(aarch64_ravenscar_fetch_registers)
+	(aarch64_ravenscar_store_registers): Now methods.
+	(aarch64_ravenscar_ops): Redefine.
+
+2019-02-15  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (ravenscar_thread_target::stopped_by_sw_breakpoint)
+	(ravenscar_thread_target::stopped_by_hw_breakpoint)
+	(ravenscar_thread_target::stopped_by_watchpoint)
+	(ravenscar_thread_target::stopped_data_address)
+	(ravenscar_thread_target::core_of_thread): Use scoped_restore.
+
+2019-02-15  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c: Fix some typos.
+
+2019-02-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	    Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_exception_sal): Change addr_string to a
+	std::string.
+	(create_ada_exception_catchpoint): Update.
+
+2019-02-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+	    Tom Tromey  <tromey@adacore.com>
+
+	* breakpoint.c (~bp_location): Rename from bp_location_dtor.
+	(bp_location_ops): Remove.
+	(base_breakpoint_allocate_location): Update.
+	(free_bp_location): Update.
+	* ada-lang.c (class ada_catchpoint_location)
+	<ada_catchpoint_location>: Remove ops parameter.
+	(ada_catchpoint_location_dtor): Remove.
+	(ada_catchpoint_location_ops): Remove.
+	(allocate_location_exception): Update.
+	* breakpoint.h (struct bp_location_ops): Remove.
+	(class bp_location) <bp_location>: Remove bp_location_ops
+	parameter.
+	<~bp_location>: Add destructor.
+	<ops>: Remove.
+
+2019-02-14  Thomas Schwinge  <thomas@codesourcery.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* remote.c (remote_target::remote_parse_stop_reply): Avoid using
+	'PATH_MAX'.
+
+2019-02-14  David Michael  <fedora.dm0@gmail.com>
+	    Samuel Thibault  <samuel.thibault@gnu.org>
+	    Thomas Schwinge  <thomas@codesourcery.com>
+
+	* gnu-nat.c (S_proc_getmsgport_reply, S_proc_task2proc_reply)
+	(S_proc_pid2proc_reply): Adjust to Hurd "proc" interface changes.
+
+2019-02-14  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* gnu-nat.c (gnu_write_inferior, parse_int_arg, _parse_bool_arg)
+	(check_empty): Use "const char *".
+
+	* gnu-nat.c (gnu_nat_target::detach): Instead of
+	'detach_inferior (pid)' call
+	'detach_inferior (find_inferior_pid (pid))'.
+
+	* configure.nat [gdb_host == i386gnu] (NATDEPFILES): Add
+	'nat/fork-inferior.o'.
+	* gnu-nat.c: #include "nat/fork-inferior.h".
+
+	* gnu-nat.c (gnu_nat_target::detach): Instead of
+	'inf_child_maybe_unpush_target (ops)' call 'maybe_unpush_target'.
+	* gnu-nat.h: #include "inf-child.h".
+	* i386-gnu-nat.c (gnu_fetch_registers): Rename/move to
+	'i386_gnu_nat_target::fetch_registers'.
+	(gnu_store_registers): Rename/move to
+	'i386_gnu_nat_target::store_registers'.
+
+	* config/i386/nm-i386gnu.h: Don't "#include" any files.
+	* gnu-nat.h (mach_thread_info): New function.
+	* gnu-nat.c (thread_takeover_sc_cmd): Use it.
+
+	* config/i386/nm-i386gnu.h (gnu_target_pid_to_str): Remove.
+
+2019-02-14  Frederic Konrad  <konrad@adacore.com>
+
+	* riscv-rdep.c (riscv_type_alignment): Handle TYPE_CODE_RANGE.
+
+2019-02-14  Joel Brobecker  <brobecker@adacore.com>
+
+	* windows-nat.c (windows_add_thread): Add new parameter
+	"main_thread_p" with default value set to false.  Update
+	function documentation as well as all callers.
+	(windows_delete_thread): Likewise.
+	(fake_create_process): Update call to windows_add_thread.
+	(get_windows_debug_event) <CREATE_THREAD_DEBUG_EVENT>
+	<CREATE_PROCESS_DEBUG_EVENT>: Likewise.
+	<EXIT_THREAD_DEBUG_EVENT, EXIT_PROCESS_DEBUG_EVENT>: Update
+	call to windows_delete_thread.
+
+2019-02-13  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* MAINTAINERS: Add Andrew Burgess as global maintainer.
+
+2019-02-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* symfile.c (find_separate_debug_file): Use canonical path of
+	sysroot with child_path instead of gdb_sysroot if it is valid.
+
+2019-02-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* symfile.c (find_separate_debug_file): Use child_path to
+	determine if an object file is under a sysroot.
+
+2019-02-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
+	unittests/child-path-selftests.c.
+	* common/pathstuff.c (child_path): New function.
+	* common/pathstuff.h (child_path): New prototype.
+	* unittests/child-path-selftests.c: New file.
+
+2019-02-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* symfile.c (find_separate_debug_file): Look for separate debug
+	files in debug directories under the sysroot.
+
+2019-02-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* symtab.h (struct minimal_symbol data_p): New const method.
+	(struct minimal_symbol text_p): Likewise.
+	* symtab.c (output_source_filename): Use file name style
+	to print file name.
+	(print_symbol_info): Likewise.
+	(print_msymbol_info): Use address style to print addresses.
+	Use function name style to print executable text symbols.
+	(expand_symtab_containing_pc): Use data_p.
+	(find_pc_sect_compunit_symtab): Likewise.
+
+2019-02-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* breakpoint.c (describe_other_breakpoints): Use address style
+	to print addresses.
+	(say_where): Likewise.
+
+2019-02-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* ada-typeprint.c (print_func_type): Print function name
+	style to print function name.
+	* c-typeprint.c (c_print_type_1): Likewise.
+
+2019-02-11  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-linux-tdep.c (aarch64_linux_get_syscall_number): Check
+	for execve.
+
+2019-02-10  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* c-exp.y (direct_abs_decl): Use emplace_back to record the
+	type_stack.
+
+2019-02-10  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-varobj.c (ada_value_is_changeable_p): Add handling of
+	TYPE_CODE_REF types.
+
+2019-02-08  Jim Wilson  <jimw@sifive.com>
+
+	* riscv-linux-tdep.c (riscv_linux_fregmap): New.
+	(riscv_linux_fregset): New.
+	(riscv_linux_iterate_over_regset_sections): Call cb for .reg2 section.
+
+2019-02-07  Tom Tromey  <tom@tromey.com>
+
+	* thread.c (thread_cancel_execution_command): Update.
+	* thread-fsm.h (struct thread_fsm): Add constructor, destructor,
+	methods.
+	(struct thread_fsm_ops): Remove.
+	(thread_fsm_ctor, thread_fsm_delete, thread_fsm_clean_up)
+	(thread_fsm_should_stop, thread_fsm_return_value)
+	(thread_fsm_set_finished, thread_fsm_finished_p)
+	(thread_fsm_async_reply_reason, thread_fsm_should_notify_stop):
+	Don't declare.
+	* mi/mi-interp.c (mi_on_normal_stop_1): Update.
+	* infrun.c (clear_proceed_status_thread)
+	(clean_up_just_stopped_threads_fsms, fetch_inferior_event)
+	(print_stop_event): Update.
+	* infcmd.c (struct step_command_fsm): Inherit from thread_fsm.
+	Add constructor.
+	(step_command_fsm_ops): Remove.
+	(new_step_command_fsm): Remove.
+	(step_1): Update.
+	(step_command_fsm::should_stop): Rename from
+	step_command_fsm_should_stop.
+	(step_command_fsm::clean_up): Rename from
+	step_command_fsm_clean_up.
+	(step_command_fsm::do_async_reply_reason): Rename from
+	step_command_fsm_async_reply_reason.
+	(struct until_next_fsm): Inherit from thread_fsm.  Add
+	constructor.
+	(until_next_fsm_ops): Remove.
+	(new_until_next_fsm): Remove.
+	(until_next_fsm::should_stop): Rename from
+	until_next_fsm_should_stop.
+	(until_next_fsm::clean_up): Rename from until_next_fsm_clean_up.
+	(until_next_fsm::do_async_reply_reason): Rename from
+	until_next_fsm_async_reply_reason.
+	(struct finish_command_fsm): Inherit from thread_fsm.  Add
+	constructor.  Change type of breakpoint.
+	(finish_command_fsm_ops): Remove.
+	(new_finish_command_fsm): Remove.
+	(finish_command_fsm::should_stop): Rename from
+	finish_command_fsm_should_stop.
+	(finish_command_fsm::clean_up): Rename from
+	finish_command_fsm_clean_up.
+	(finish_command_fsm::return_value): Rename from
+	finish_command_fsm_return_value.
+	(finish_command_fsm::do_async_reply_reason): Rename from
+	finish_command_fsm_async_reply_reason.
+	(finish_command): Update.
+	* infcall.c (struct call_thread_fsm): Inherit from thread_fsm.
+	Add constructor.
+	(call_thread_fsm_ops): Remove.
+	(call_thread_fsm::call_thread_fsm): Rename from
+	new_call_thread_fsm.
+	(call_thread_fsm::should_stop): Rename from
+	call_thread_fsm_should_stop.
+	(call_thread_fsm::should_notify_stop): Rename from
+	call_thread_fsm_should_notify_stop.
+	(run_inferior_call, call_function_by_hand_dummy): Update.
+	* cli/cli-interp.c (should_print_stop_to_console): Update.
+	* breakpoint.c (struct until_break_fsm): Inherit from thread_fsm.
+	Add constructor.  Change type of location_breakpoint,
+	caller_breakpoint.
+	(until_break_fsm_ops): Remove.
+	(new_until_break_fsm): Remove.
+	(until_break_fsm::should_stop): Rename from
+	until_break_fsm_should_stop.
+	(until_break_fsm::clean_up): Rename from
+	until_break_fsm_clean_up.
+	(until_break_fsm::do_async_reply_reason): Rename from
+	until_break_fsm_async_reply_reason.
+	(until_break_command): Update.
+	* thread-fsm.c: Remove.
+	* Makefile.in (COMMON_SFILES): Remove thread-fsm.c.
+
+2019-02-07  Tom Tromey  <tom@tromey.com>
+
+	* yy-remap.h: Add include guard.
+	* xtensa-tdep.h: Add include guard.
+	* xcoffread.h: Rename include guard.
+	* varobj-iter.h: Add include guard.
+	* tui/tui.h: Rename include guard.
+	* tui/tui-winsource.h: Rename include guard.
+	* tui/tui-wingeneral.h: Rename include guard.
+	* tui/tui-windata.h: Rename include guard.
+	* tui/tui-win.h: Rename include guard.
+	* tui/tui-stack.h: Rename include guard.
+	* tui/tui-source.h: Rename include guard.
+	* tui/tui-regs.h: Rename include guard.
+	* tui/tui-out.h: Rename include guard.
+	* tui/tui-layout.h: Rename include guard.
+	* tui/tui-io.h: Rename include guard.
+	* tui/tui-hooks.h: Rename include guard.
+	* tui/tui-file.h: Rename include guard.
+	* tui/tui-disasm.h: Rename include guard.
+	* tui/tui-data.h: Rename include guard.
+	* tui/tui-command.h: Rename include guard.
+	* tic6x-tdep.h: Add include guard.
+	* target/waitstatus.h: Rename include guard.
+	* target/wait.h: Rename include guard.
+	* target/target.h: Rename include guard.
+	* target/resume.h: Rename include guard.
+	* target-float.h: Rename include guard.
+	* stabsread.h: Add include guard.
+	* rs6000-tdep.h: Add include guard.
+	* riscv-fbsd-tdep.h: Add include guard.
+	* regformats/regdef.h: Rename include guard.
+	* record.h: Rename include guard.
+	* python/python.h: Rename include guard.
+	* python/python-internal.h: Rename include guard.
+	* python/py-stopevent.h: Rename include guard.
+	* python/py-ref.h: Rename include guard.
+	* python/py-record.h: Rename include guard.
+	* python/py-record-full.h: Rename include guard.
+	* python/py-record-btrace.h: Rename include guard.
+	* python/py-instruction.h: Rename include guard.
+	* python/py-events.h: Rename include guard.
+	* python/py-event.h: Rename include guard.
+	* procfs.h: Add include guard.
+	* proc-utils.h: Add include guard.
+	* p-lang.h: Add include guard.
+	* or1k-tdep.h: Rename include guard.
+	* observable.h: Rename include guard.
+	* nto-tdep.h: Rename include guard.
+	* nat/x86-linux.h: Rename include guard.
+	* nat/x86-linux-dregs.h: Rename include guard.
+	* nat/x86-gcc-cpuid.h: Add include guard.
+	* nat/x86-dregs.h: Rename include guard.
+	* nat/x86-cpuid.h: Rename include guard.
+	* nat/ppc-linux.h: Rename include guard.
+	* nat/mips-linux-watch.h: Rename include guard.
+	* nat/linux-waitpid.h: Rename include guard.
+	* nat/linux-ptrace.h: Rename include guard.
+	* nat/linux-procfs.h: Rename include guard.
+	* nat/linux-osdata.h: Rename include guard.
+	* nat/linux-nat.h: Rename include guard.
+	* nat/linux-namespaces.h: Rename include guard.
+	* nat/linux-btrace.h: Rename include guard.
+	* nat/glibc_thread_db.h: Rename include guard.
+	* nat/gdb_thread_db.h: Rename include guard.
+	* nat/gdb_ptrace.h: Rename include guard.
+	* nat/fork-inferior.h: Rename include guard.
+	* nat/amd64-linux-siginfo.h: Rename include guard.
+	* nat/aarch64-sve-linux-sigcontext.h: Rename include guard.
+	* nat/aarch64-sve-linux-ptrace.h: Rename include guard.
+	* nat/aarch64-linux.h: Rename include guard.
+	* nat/aarch64-linux-hw-point.h: Rename include guard.
+	* mn10300-tdep.h: Add include guard.
+	* mips-linux-tdep.h: Add include guard.
+	* mi/mi-parse.h: Rename include guard.
+	* mi/mi-out.h: Rename include guard.
+	* mi/mi-main.h: Rename include guard.
+	* mi/mi-interp.h: Rename include guard.
+	* mi/mi-getopt.h: Rename include guard.
+	* mi/mi-console.h: Rename include guard.
+	* mi/mi-common.h: Rename include guard.
+	* mi/mi-cmds.h: Rename include guard.
+	* mi/mi-cmd-break.h: Rename include guard.
+	* m2-lang.h: Add include guard.
+	* location.h: Rename include guard.
+	* linux-record.h: Rename include guard.
+	* linux-nat.h: Add include guard.
+	* linux-fork.h: Add include guard.
+	* i386-darwin-tdep.h: Rename include guard.
+	* hppa-linux-offsets.h: Add include guard.
+	* guile/guile.h: Rename include guard.
+	* guile/guile-internal.h: Rename include guard.
+	* gnu-nat.h: Rename include guard.
+	* gdb-stabs.h: Rename include guard.
+	* frv-tdep.h: Add include guard.
+	* f-lang.h: Add include guard.
+	* event-loop.h: Add include guard.
+	* darwin-nat.h: Rename include guard.
+	* cp-abi.h: Rename include guard.
+	* config/sparc/nm-sol2.h: Rename include guard.
+	* config/nm-nto.h: Rename include guard.
+	* config/nm-linux.h: Add include guard.
+	* config/i386/nm-i386gnu.h: Rename include guard.
+	* config/djgpp/nl_types.h: Rename include guard.
+	* config/djgpp/langinfo.h: Rename include guard.
+	* compile/gcc-cp-plugin.h: Add include guard.
+	* compile/gcc-c-plugin.h: Add include guard.
+	* compile/compile.h: Rename include guard.
+	* compile/compile-object-run.h: Rename include guard.
+	* compile/compile-object-load.h: Rename include guard.
+	* compile/compile-internal.h: Rename include guard.
+	* compile/compile-cplus.h: Rename include guard.
+	* compile/compile-c.h: Rename include guard.
+	* common/xml-utils.h: Rename include guard.
+	* common/x86-xstate.h: Rename include guard.
+	* common/version.h: Rename include guard.
+	* common/vec.h: Rename include guard.
+	* common/tdesc.h: Rename include guard.
+	* common/selftest.h: Rename include guard.
+	* common/scoped_restore.h: Rename include guard.
+	* common/scoped_mmap.h: Rename include guard.
+	* common/scoped_fd.h: Rename include guard.
+	* common/safe-iterator.h: Rename include guard.
+	* common/run-time-clock.h: Rename include guard.
+	* common/refcounted-object.h: Rename include guard.
+	* common/queue.h: Rename include guard.
+	* common/ptid.h: Rename include guard.
+	* common/print-utils.h: Rename include guard.
+	* common/preprocessor.h: Rename include guard.
+	* common/pathstuff.h: Rename include guard.
+	* common/observable.h: Rename include guard.
+	* common/netstuff.h: Rename include guard.
+	* common/job-control.h: Rename include guard.
+	* common/host-defs.h: Rename include guard.
+	* common/gdb_wait.h: Rename include guard.
+	* common/gdb_vecs.h: Rename include guard.
+	* common/gdb_unlinker.h: Rename include guard.
+	* common/gdb_unique_ptr.h: Rename include guard.
+	* common/gdb_tilde_expand.h: Rename include guard.
+	* common/gdb_sys_time.h: Rename include guard.
+	* common/gdb_string_view.h: Rename include guard.
+	* common/gdb_splay_tree.h: Rename include guard.
+	* common/gdb_setjmp.h: Rename include guard.
+	* common/gdb_ref_ptr.h: Rename include guard.
+	* common/gdb_optional.h: Rename include guard.
+	* common/gdb_locale.h: Rename include guard.
+	* common/gdb_assert.h: Rename include guard.
+	* common/filtered-iterator.h: Rename include guard.
+	* common/filestuff.h: Rename include guard.
+	* common/fileio.h: Rename include guard.
+	* common/environ.h: Rename include guard.
+	* common/common-utils.h: Rename include guard.
+	* common/common-types.h: Rename include guard.
+	* common/common-regcache.h: Rename include guard.
+	* common/common-inferior.h: Rename include guard.
+	* common/common-gdbthread.h: Rename include guard.
+	* common/common-exceptions.h: Rename include guard.
+	* common/common-defs.h: Rename include guard.
+	* common/common-debug.h: Rename include guard.
+	* common/cleanups.h: Rename include guard.
+	* common/buffer.h: Rename include guard.
+	* common/btrace-common.h: Rename include guard.
+	* common/break-common.h: Rename include guard.
+	* cli/cli-utils.h: Rename include guard.
+	* cli/cli-style.h: Rename include guard.
+	* cli/cli-setshow.h: Rename include guard.
+	* cli/cli-script.h: Rename include guard.
+	* cli/cli-interp.h: Rename include guard.
+	* cli/cli-decode.h: Rename include guard.
+	* cli/cli-cmds.h: Rename include guard.
+	* charset-list.h: Add include guard.
+	* buildsym-legacy.h: Rename include guard.
+	* bfin-tdep.h: Add include guard.
+	* ax.h: Rename include guard.
+	* arm-linux-tdep.h: Add include guard.
+	* arm-fbsd-tdep.h: Add include guard.
+	* arch/xtensa.h: Rename include guard.
+	* arch/tic6x.h: Add include guard.
+	* arch/i386.h: Add include guard.
+	* arch/arm.h: Rename include guard.
+	* arch/arm-linux.h: Rename include guard.
+	* arch/arm-get-next-pcs.h: Rename include guard.
+	* arch/amd64.h: Add include guard.
+	* arch/aarch64-insn.h: Rename include guard.
+	* arch-utils.h: Rename include guard.
+	* annotate.h: Add include guard.
+	* amd64-darwin-tdep.h: Rename include guard.
+	* aarch64-linux-tdep.h: Add include guard.
+	* aarch64-fbsd-tdep.h: Add include guard.
+	* aarch32-linux-nat.h: Add include guard.
+
+2019-02-06  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* macrotab.c (macro_define_internal): New function that
+	factorizes macro_define_object_internal and macro_define_function
+	code.
+	(macro_define_object_internal): Use macro_define_internal.
+	(macro_define_function): Likewise.
+
+2019-02-06  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* macrocmd.c (extract_identifier): Return
+	a gdb::unique_xmalloc_ptr<char> instead of a char *, and update
+	callers.
+
+2019-02-06  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-nat.c (fbsd_fetch_cmdline): Join arguments with spaces.
+
+2019-02-05  Tom Tromey  <tom@tromey.com>
+
+	* target.c (target_stack::unpush): Move assertion earlier.
+
+2019-01-30  Tom Tromey  <tom@tromey.com>
+
+	PR python/23615:
+	* python/python.c (execute_gdb_command): Use gdbpy_allow_threads.
+	(gdbpy_parse_and_eval): Likewise.
+	* python/python-internal.h (gdbpy_allow_threads): New class.
+
+2019-01-28  John Baldwin  <jhb@FreeBSD.org>
+
+	* aarch64-fbsd-tdep.c (aarch64_fbsd_gregmap)
+	(aarch64_fbsd_fpregmap): Move earlier.
+	(AARCH64_MCONTEXT_REG_SIZE, AARCH64_MCONTEXT_FPREG_SIZE): Delete.
+	(aarch64_fbsd_sigframe_init): Use trad_frame_set_reg_regmap
+	instead of individual calls to trad_frame_set_reg_addr.
+	* arm-fbsd-tdep.c (arm_fbsd_gregmap, arm_fbsd_vfpregmap): Move
+	earlier.
+	(ARM_MCONTEXT_REG_SIZE, ARM_MCONTEXT_VFP_REG_SIZE): Delete.
+	(arm_fbsd_sigframe_init): Use trad_frame_set_reg_regmap
+	instead of individual calls to trad_frame_set_reg_addr.
+
+2019-01-28  Alan Hayward  <alan.hayward@arm.com>
+
+	* CONTRIBUTE: Replace contribution list with wiki link.
+
+2019-01-25  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in (GDB_CFLAGS): Don't add -I for common.
+
+2019-01-25  Tom Tromey  <tom@tromey.com>
+
+	* xtensa-linux-nat.c: Fix common/ includes.
+	* xml-support.h: Fix common/ includes.
+	* xml-support.c: Fix common/ includes.
+	* x86-linux-nat.c: Fix common/ includes.
+	* windows-nat.c: Fix common/ includes.
+	* varobj.h: Fix common/ includes.
+	* varobj.c: Fix common/ includes.
+	* value.c: Fix common/ includes.
+	* valops.c: Fix common/ includes.
+	* utils.c: Fix common/ includes.
+	* unittests/xml-utils-selftests.c: Fix common/ includes.
+	* unittests/utils-selftests.c: Fix common/ includes.
+	* unittests/unpack-selftests.c: Fix common/ includes.
+	* unittests/tracepoint-selftests.c: Fix common/ includes.
+	* unittests/style-selftests.c: Fix common/ includes.
+	* unittests/string_view-selftests.c: Fix common/ includes.
+	* unittests/scoped_restore-selftests.c: Fix common/ includes.
+	* unittests/scoped_mmap-selftests.c: Fix common/ includes.
+	* unittests/scoped_fd-selftests.c: Fix common/ includes.
+	* unittests/rsp-low-selftests.c: Fix common/ includes.
+	* unittests/parse-connection-spec-selftests.c: Fix common/
+	includes.
+	* unittests/optional-selftests.c: Fix common/ includes.
+	* unittests/offset-type-selftests.c: Fix common/ includes.
+	* unittests/observable-selftests.c: Fix common/ includes.
+	* unittests/mkdir-recursive-selftests.c: Fix common/ includes.
+	* unittests/memrange-selftests.c: Fix common/ includes.
+	* unittests/memory-map-selftests.c: Fix common/ includes.
+	* unittests/lookup_name_info-selftests.c: Fix common/ includes.
+	* unittests/function-view-selftests.c: Fix common/ includes.
+	* unittests/environ-selftests.c: Fix common/ includes.
+	* unittests/copy_bitwise-selftests.c: Fix common/ includes.
+	* unittests/common-utils-selftests.c: Fix common/ includes.
+	* unittests/cli-utils-selftests.c: Fix common/ includes.
+	* unittests/array-view-selftests.c: Fix common/ includes.
+	* ui-file.c: Fix common/ includes.
+	* tui/tui-io.c: Fix common/ includes.
+	* tracepoint.h: Fix common/ includes.
+	* tracepoint.c: Fix common/ includes.
+	* tracefile-tfile.c: Fix common/ includes.
+	* top.h: Fix common/ includes.
+	* top.c: Fix common/ includes.
+	* thread.c: Fix common/ includes.
+	* target/waitstatus.h: Fix common/ includes.
+	* target/waitstatus.c: Fix common/ includes.
+	* target.h: Fix common/ includes.
+	* target.c: Fix common/ includes.
+	* target-memory.c: Fix common/ includes.
+	* target-descriptions.c: Fix common/ includes.
+	* symtab.h: Fix common/ includes.
+	* symfile.c: Fix common/ includes.
+	* stap-probe.c: Fix common/ includes.
+	* spu-linux-nat.c: Fix common/ includes.
+	* sparc-nat.c: Fix common/ includes.
+	* source.c: Fix common/ includes.
+	* solib.c: Fix common/ includes.
+	* solib-target.c: Fix common/ includes.
+	* ser-unix.c: Fix common/ includes.
+	* ser-tcp.c: Fix common/ includes.
+	* ser-pipe.c: Fix common/ includes.
+	* ser-base.c: Fix common/ includes.
+	* selftest-arch.c: Fix common/ includes.
+	* s12z-tdep.c: Fix common/ includes.
+	* rust-exp.y: Fix common/ includes.
+	* rs6000-aix-tdep.c: Fix common/ includes.
+	* riscv-tdep.c: Fix common/ includes.
+	* remote.c: Fix common/ includes.
+	* remote-notif.h: Fix common/ includes.
+	* remote-fileio.h: Fix common/ includes.
+	* remote-fileio.c: Fix common/ includes.
+	* regcache.h: Fix common/ includes.
+	* regcache.c: Fix common/ includes.
+	* record-btrace.c: Fix common/ includes.
+	* python/python.c: Fix common/ includes.
+	* python/py-type.c: Fix common/ includes.
+	* python/py-inferior.c: Fix common/ includes.
+	* progspace.h: Fix common/ includes.
+	* producer.c: Fix common/ includes.
+	* procfs.c: Fix common/ includes.
+	* proc-api.c: Fix common/ includes.
+	* printcmd.c: Fix common/ includes.
+	* ppc-linux-nat.c: Fix common/ includes.
+	* parser-defs.h: Fix common/ includes.
+	* osdata.c: Fix common/ includes.
+	* obsd-nat.c: Fix common/ includes.
+	* nat/x86-linux.c: Fix common/ includes.
+	* nat/x86-linux-dregs.c: Fix common/ includes.
+	* nat/x86-dregs.h: Fix common/ includes.
+	* nat/x86-dregs.c: Fix common/ includes.
+	* nat/ppc-linux.c: Fix common/ includes.
+	* nat/mips-linux-watch.h: Fix common/ includes.
+	* nat/mips-linux-watch.c: Fix common/ includes.
+	* nat/linux-waitpid.c: Fix common/ includes.
+	* nat/linux-ptrace.h: Fix common/ includes.
+	* nat/linux-ptrace.c: Fix common/ includes.
+	* nat/linux-procfs.c: Fix common/ includes.
+	* nat/linux-personality.c: Fix common/ includes.
+	* nat/linux-osdata.c: Fix common/ includes.
+	* nat/linux-namespaces.c: Fix common/ includes.
+	* nat/linux-btrace.h: Fix common/ includes.
+	* nat/linux-btrace.c: Fix common/ includes.
+	* nat/fork-inferior.c: Fix common/ includes.
+	* nat/amd64-linux-siginfo.c: Fix common/ includes.
+	* nat/aarch64-sve-linux-ptrace.c: Fix common/ includes.
+	* nat/aarch64-linux.c: Fix common/ includes.
+	* nat/aarch64-linux-hw-point.h: Fix common/ includes.
+	* nat/aarch64-linux-hw-point.c: Fix common/ includes.
+	* namespace.h: Fix common/ includes.
+	* mips-linux-tdep.c: Fix common/ includes.
+	* minsyms.c: Fix common/ includes.
+	* mi/mi-parse.h: Fix common/ includes.
+	* mi/mi-main.c: Fix common/ includes.
+	* mi/mi-cmd-env.c: Fix common/ includes.
+	* memrange.h: Fix common/ includes.
+	* memattr.c: Fix common/ includes.
+	* maint.h: Fix common/ includes.
+	* maint.c: Fix common/ includes.
+	* main.c: Fix common/ includes.
+	* machoread.c: Fix common/ includes.
+	* location.c: Fix common/ includes.
+	* linux-thread-db.c: Fix common/ includes.
+	* linux-nat.c: Fix common/ includes.
+	* linux-fork.c: Fix common/ includes.
+	* inline-frame.c: Fix common/ includes.
+	* infrun.c: Fix common/ includes.
+	* inflow.c: Fix common/ includes.
+	* inferior.h: Fix common/ includes.
+	* inferior.c: Fix common/ includes.
+	* infcmd.c: Fix common/ includes.
+	* inf-ptrace.c: Fix common/ includes.
+	* inf-child.c: Fix common/ includes.
+	* ia64-linux-nat.c: Fix common/ includes.
+	* i387-tdep.c: Fix common/ includes.
+	* i386-tdep.c: Fix common/ includes.
+	* i386-linux-tdep.c: Fix common/ includes.
+	* i386-linux-nat.c: Fix common/ includes.
+	* i386-go32-tdep.c: Fix common/ includes.
+	* i386-fbsd-tdep.c: Fix common/ includes.
+	* i386-fbsd-nat.c: Fix common/ includes.
+	* guile/scm-type.c: Fix common/ includes.
+	* guile/guile.c: Fix common/ includes.
+	* go32-nat.c: Fix common/ includes.
+	* gnu-nat.c: Fix common/ includes.
+	* gdbthread.h: Fix common/ includes.
+	* gdbarch-selftests.c: Fix common/ includes.
+	* gdb_usleep.c: Fix common/ includes.
+	* gdb_select.h: Fix common/ includes.
+	* gdb_bfd.c: Fix common/ includes.
+	* gcore.c: Fix common/ includes.
+	* fork-child.c: Fix common/ includes.
+	* findvar.c: Fix common/ includes.
+	* fbsd-nat.c: Fix common/ includes.
+	* event-top.c: Fix common/ includes.
+	* event-loop.c: Fix common/ includes.
+	* dwarf2read.c: Fix common/ includes.
+	* dwarf2loc.c: Fix common/ includes.
+	* dwarf2-frame.c: Fix common/ includes.
+	* dwarf-index-cache.c: Fix common/ includes.
+	* dtrace-probe.c: Fix common/ includes.
+	* disasm-selftests.c: Fix common/ includes.
+	* defs.h: Fix common/ includes.
+	* csky-tdep.c: Fix common/ includes.
+	* cp-valprint.c: Fix common/ includes.
+	* cp-support.h: Fix common/ includes.
+	* cp-support.c: Fix common/ includes.
+	* corelow.c: Fix common/ includes.
+	* completer.h: Fix common/ includes.
+	* completer.c: Fix common/ includes.
+	* compile/compile.c: Fix common/ includes.
+	* compile/compile-loc2c.c: Fix common/ includes.
+	* compile/compile-cplus-types.c: Fix common/ includes.
+	* compile/compile-cplus-symbols.c: Fix common/ includes.
+	* command.h: Fix common/ includes.
+	* cli/cli-dump.c: Fix common/ includes.
+	* cli/cli-cmds.c: Fix common/ includes.
+	* charset.c: Fix common/ includes.
+	* build-id.c: Fix common/ includes.
+	* btrace.h: Fix common/ includes.
+	* btrace.c: Fix common/ includes.
+	* breakpoint.h: Fix common/ includes.
+	* breakpoint.c: Fix common/ includes.
+	* ax.h: 
+	(enum agent_op): Fix common/ includes.
+	* ax-general.c (struct aop_map): Fix common/ includes.
+	* ax-gdb.c: Fix common/ includes.
+	* auxv.c: Fix common/ includes.
+	* auto-load.c: Fix common/ includes.
+	* arm-tdep.c: Fix common/ includes.
+	* arch/riscv.c: Fix common/ includes.
+	* arch/ppc-linux-common.c: Fix common/ includes.
+	* arch/i386.c: Fix common/ includes.
+	* arch/arm.c: Fix common/ includes.
+	* arch/arm-linux.c: Fix common/ includes.
+	* arch/arm-get-next-pcs.c: Fix common/ includes.
+	* arch/amd64.c: Fix common/ includes.
+	* arch/aarch64.c: Fix common/ includes.
+	* arch/aarch64-insn.c: Fix common/ includes.
+	* arch-utils.c: Fix common/ includes.
+	* amd64-windows-tdep.c: Fix common/ includes.
+	* amd64-tdep.c: Fix common/ includes.
+	* amd64-sol2-tdep.c: Fix common/ includes.
+	* amd64-obsd-tdep.c: Fix common/ includes.
+	* amd64-nbsd-tdep.c: Fix common/ includes.
+	* amd64-linux-tdep.c: Fix common/ includes.
+	* amd64-linux-nat.c: Fix common/ includes.
+	* amd64-fbsd-tdep.c: Fix common/ includes.
+	* amd64-fbsd-nat.c: Fix common/ includes.
+	* amd64-dicos-tdep.c: Fix common/ includes.
+	* amd64-darwin-tdep.c: Fix common/ includes.
+	* agent.c: Fix common/ includes.
+	* ada-lang.h: Fix common/ includes.
+	* ada-lang.c: Fix common/ includes.
+	* aarch64-tdep.c: Fix common/ includes.
+
+2019-01-25  Tom Tromey  <tom@tromey.com>
+
+	* common/create-version.sh: Use common/version.h.
+
+2019-01-24  Pedro Alves  <palves@redhat.com>
+
+	* infrun.c (signal_stop, signal_print, signal_program)
+	(signal_catch, signal_pass): Now arrays instead of pointers.
+	(update_signals_program_target, do_target_resume)
+	(signal_catch_update, handle_command, _initialize_infrun): Adjust.
+	* linux-nat.c (linux_nat_target::pass_signals)
+	(linux_nat_target::create_inferior, linux_nat_target::attach):
+	Adjust.
+	* linux-nat.h (linux_nat_target::pass_signals): Adjust.
+	* nto-procfs.c (nto_procfs_target::pass_signals): Adjust.
+	* procfs.c (procfs_target::pass_signals): Adjust.
+	* record-full.c (record_full_target::resume): Adjust.
+	* remote.c (remote_target::pass_signals)
+	(remote_target::program_signals): Adjust.
+	* target-debug.h (target_debug_print_signals): Now takes a
+	gdb::array_view as parameter.  Adjust.
+	* target.h (target_ops) <pass_signals, program_signals>: Replace
+	pointer and length parameters with gdb::array_view.
+	(target_pass_signals, target_program_signals): Likewise.
+	* target-delegates.c: Regenerate.
+
+2019-01-24  Pedro Alves  <palves@redhat.com>
+
+	* common/forward-scope-exit.h
+	(forward_scope_exit::forward_scope_exit): Pass arguments to
+	m_bind_function directly, instead of creating a std::bind and
+	copying that.
+
+2019-01-24  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-tdep.c (aapcs_is_vfp_call_or_return_candidate_1): Check
+	for static members.
+	(pass_in_v_vfp_candidate): Likewise.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* regcache.c (class regcache_invalidator): Remove.
+	(regcache::raw_write): Use make_scope_exit.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+
+	* ui-out.h (class ui_out_emit_type): Update comment.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+
+	* infrun.c (fetch_inferior_event): Update comment.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* infrun.c (reinstall_readline_callback_handler_cleanup): Remove
+	parameter.
+	(fetch_inferior_event): Use SCOPE_EXIT.
+
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* infrun.c (disable_thread_events): Delete.
+	(stop_all_threads): Use SCOPE_EXIT.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* symfile.c: Include forward-scope-exit.h.
+	(clear_symtab_users_cleanup): Replace forward declaration with
+	a FORWARD_SCOPE_EXIT.
+	(syms_from_objfile_1): Use the forward_scope_exit and
+	gdb::optional instead of cleanup_function.
+	(reread_symbols): Use the forward_scope_exit instead of
+	cleanup_function.
+	(clear_symtab_users_cleanup): Remove function.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* linux-nat.c: Include scope-exit.h.
+	(cleanup_target_stop): Remove.
+	(linux_nat_target::static_tracepoint_markers_by_strid): Use
+	SCOPE_EXIT.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* infcall.c (cleanup_delete_std_terminate_breakpoint): Remove.
+	(call_function_by_hand_dummy): Use SCOPE_EXIT.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* infrun.c (fetch_inferior_event): Use scope_exit.
+	* utils.h (make_bpstat_clear_actions_cleanup): Don't declare.
+	* top.c (execute_command): Use scope_exit.
+	* breakpoint.c (bpstat_do_actions): Use scope_exit.
+	* utils.c (do_bpstat_clear_actions_cleanup)
+	(make_bpstat_clear_actions_cleanup): Remove.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* infrun.c: Include "common/scope-exit.h"
+	(delete_just_stopped_threads_infrun_breakpoints_cleanup): Remove.
+	(wait_for_inferior): Use SCOPE_EXIT.
+	(fetch_inferior_event): Use scope_exit.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* breakpoint.c (create_breakpoint): Remove cleanup.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Pedro Alves  <palves@redhat.com>
+
+2019-01-23  Pedro Alves  <palves@redhat.com>
+
+	* gdbarch-selftests.c (struct on_exit): Use SCOPE_EXIT.
+
+2019-01-23  Pedro Alves  <palves@redhat.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbthread.h: Include "common/forward-scope-exit.h".
+	(scoped_finish_thread_state): Redefine custom class in terms of
+	forward_scope_exit.
+
+2019-01-23  Pedro Alves  <palves@redhat.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* common/forward-scope-exit.h: New file.
+
+2019-01-23  Pedro Alves  <palves@redhat.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Tom Tromey  <tom@tromey.com>
+
+	* common/scope-exit.h: New file.
+
+2019-01-23  Pedro Alves  <palves@redhat.com>
+
+	* common/preprocessor.h (ESC): Rename to ...
+	(ESC_PARENS): ... this.
+	* common/valid-expr.h (CHECK_VALID_EXPR_1, CHECK_VALID_EXPR_2)
+	(CHECK_VALID_EXPR_3, CHECK_VALID_EXPR_4): Adjust.
+
+2019-01-23  Tom Tromey  <tom@tromey.com>
+
+	* language.h (class scoped_switch_to_sym_language_if_auto):
+	Initialize m_lang in both cases.
+
+2019-01-23  Alan Hayward  <alan.hayward@arm.com>
+
+	* nat/aarch64-linux.c (aarch64_linux_new_thread): Replace XNEW
+	with XCNEW.
+
+2019-01-22  Tom Tromey  <tom@tromey.com>
+
+	* corelow.c: Do not include sys/file.h.
+
+2019-01-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-wingeneral.h: Include gdb_curses.h.
+
+2019-01-22  Tom Tromey  <tom@tromey.com>
+
+	* source-cache.h (class source_cache) <get_source_lines,
+	get_plain_source_lines, extract_lines>: Rename "lines" parameter.
+
+2019-01-22  Tom Tromey  <tom@tromey.com>
+
+	* remote-fileio.h (struct remote_target): Declare.
+
+2019-01-22  Tom Tromey  <tom@tromey.com>
+
+	* python/py-arch.c: Do not include py-ref.h.
+	* python/py-bpevent.c: Do not include py-ref.h.
+	* python/py-cmd.c: Do not include py-ref.h.
+	* python/py-continueevent.c: Do not include py-ref.h.
+	* python/py-event.h: Do not include py-ref.h.
+	* python/py-evtregistry.c: Do not include py-ref.h.
+	* python/py-finishbreakpoint.c: Do not include py-ref.h.
+	* python/py-frame.c: Do not include py-ref.h.
+	* python/py-framefilter.c: Do not include py-ref.h.
+	* python/py-function.c: Do not include py-ref.h.
+	* python/py-infevents.c: Do not include py-ref.h.
+	* python/py-linetable.c: Do not include py-ref.h.
+	* python/py-objfile.c: Do not include py-ref.h.
+	* python/py-param.c: Do not include py-ref.h.
+	* python/py-prettyprint.c: Do not include py-ref.h.
+	* python/py-progspace.c: Do not include py-ref.h.
+	* python/py-symbol.c: Do not include py-ref.h.
+	* python/py-symtab.c: Do not include py-ref.h.
+	* python/py-type.c: Do not include py-ref.h.
+	* python/py-unwind.c: Do not include py-ref.h.
+	* python/py-utils.c: Do not include py-ref.h.
+	* python/py-value.c: Do not include py-ref.h.
+	* python/py-varobj.c: Do not include py-ref.h.
+	* python/py-xmethods.c: Do not include py-ref.h.
+	* python/python.c: Do not include py-ref.h.
+	* varobj.c: Do not include py-ref.h.
+
+2019-01-22  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (struct objfile_per_bfd_storage): Use "struct"
+	keyword for bcache.
+
+2019-01-22  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile-cplus-types.c: Remove a comment by #include.
+
+2019-01-22  Tom Tromey  <tom@tromey.com>
+
+	* compile/gcc-c-plugin.h: Include compile-internal.h.
+
+2019-01-22  Tom Tromey  <tom@tromey.com>
+
+	* stabsread.c (EXTERN): Do not define.
+	(symnum, next_symbol_text_func, processing_gcc_compilation)
+	(within_function, global_sym_chain, global_stabs)
+	(previous_stab_code, this_object_header_files)
+	(n_this_object_header_files)
+	(n_allocated_this_object_header_files): Define.
+	* stabsread.h (EXTERN): Never define.  Use "extern".
+
+2019-01-22  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* event-top.c (handle_line_of_input): use unique_xmalloc_ptr for
+	history_value.
+
+2019-01-21  Tom Tromey  <tom@tromey.com>
+
+	* ui-out.c: Fix includes.
+	* tui/tui-source.c: Fix includes.
+	* target.c: Fix includes.
+	* remote.c: Fix includes.
+	* regcache.c: Fix includes.
+	* python/py-block.c: Fix includes.
+	* printcmd.c: Fix includes.
+	* or1k-tdep.c: Fix includes.
+	* mi/mi-main.c: Fix includes.
+	* m32r-tdep.c: Fix includes.
+	* csky-tdep.c: Fix includes.
+	* compile/compile-cplus-types.c: Fix includes.
+	* cli/cli-interp.c: Fix includes.
+
+2019-01-21  Alan Hayward  <alan.hayward@arm.com>
+
+	* aarch64-tdep.c (aapcs_is_vfp_call_or_return_candidate_1): Check
+	for padding.
+
+2019-01-16  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (struct minimal_symbol_iterator): Rename.  Move
+	earlier.
+	(struct objfile) <msymbols_range>: Move from top level.
+	<msymbols>: New method.
+	(class objfile_msymbols): Remove.
+	* symtab.c (default_collect_symbol_completion_matches_break_on):
+	Update.
+	* symmisc.c (dump_msymbols): Update.
+	* stabsread.c (scan_file_globals): Update.
+	* objc-lang.c (info_selectors_command, info_classes_command)
+	(find_methods): Update.
+	* minsyms.c (find_solib_trampoline_target): Update.
+	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Update.
+	* coffread.c (coff_symfile_read): Update.
+	* ada-lang.c (ada_lookup_simple_minsym)
+	(ada_collect_symbol_completion_matches): Update.
+
+2019-01-16  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (class objfile_msymbols) <iterator>: Change argument
+	type.  Remove no-argument constructor.
+	<iterator::operator++>: Simplify.
+	<begin>: Update.
+	<end>: Use minimal_symbol_count.
+
+2019-01-16  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (struct objfile) <psymtabs>: New method.
+	(class objfile_psymtabs): Remove.
+	* psymtab.h (class psymtab_storage) <partial_symtab_range>: New
+	typedef.
+	<range>: New method.
+	(require_partial_symbols): Change return type.
+	* psymtab.c (require_partial_symbols)
+	(psym_expand_symtabs_matching): Update.
+	* mdebugread.c (parse_partial_symbols): Update.
+	* dbxread.c (dbx_end_psymtab): Update.
+
+2019-01-15  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (lookup_objfile_from_block)
+	(lookup_symbol_in_objfile_symtabs)
+	(basic_lookup_transparent_type_1, find_pc_sect_compunit_symtab)
+	(find_line_symtab, info_sources_command)
+	(default_collect_symbol_completion_matches_break_on)
+	(make_source_files_completion_list): Update.
+	* symmisc.c (print_objfile_statistics, dump_objfile)
+	(maintenance_print_symbols, maintenance_info_symtabs)
+	(maintenance_check_symtabs, maintenance_info_line_tables):
+	Update.
+	* source.c (select_source_symtab)
+	(forget_cached_source_info_for_objfile): Update.
+	* objfiles.h (class objfile_compunits): Remove.
+	(struct objfile) <compunits_range>: New typedef.
+	(compunits): New method.
+	* objfiles.c (objfile_relocate1): Update.
+	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Update.
+	* maint.c (count_symtabs_and_blocks): Update.
+	* linespec.c (iterate_over_all_matching_symtabs): Update.
+	* cp-support.c (add_symbol_overload_list_qualified): Update.
+	* coffread.c (coff_symtab_read): Update.
+	* ada-lang.c (add_nonlocal_symbols)
+	(ada_collect_symbol_completion_matches)
+	(ada_add_global_exceptions): Update.
+
+2019-01-15  Tom Tromey  <tom@tromey.com>
+
+	* progspace.h (program_space) <objfiles_safe_range>: New
+	typedef.
+	<objfiles_safe>: New method.
+	* objfiles.h (class all_objfiles_safe): Remove.
+	* objfiles.c (free_all_objfiles, objfile_purge_solibs): Update.
+	* jit.c (jit_inferior_exit_hook): Update.
+
+2019-01-17  Tom Tromey  <tom@tromey.com>
+
+	* progspace.h (program_space) <objfiles_range>: New typedef.
+	<objfiles>: New method.
+	<objfiles_head>: Rename from objfiles.
+	(object_files): Update.
+	* guile/scm-progspace.c (gdbscm_progspace_objfiles): Update.
+	* guile/scm-pretty-print.c
+	(ppscm_find_pretty_printer_from_objfiles): Update.
+	* guile/scm-objfile.c (gdbscm_objfiles): Update.
+	* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers):
+	Update.
+	* python/py-progspace.c (pspy_get_objfiles): Update.
+	* python/py-prettyprint.c (find_pretty_printer_from_objfiles):
+	Update.
+	* python/py-objfile.c (objfpy_lookup_objfile_by_name)
+	(objfpy_lookup_objfile_by_build_id): Update.
+	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Update.
+	* windows-tdep.c (windows_iterate_over_objfiles_in_search_order):
+	Update.
+	* symtab.c (iterate_over_symtabs, matching_obj_sections)
+	(expand_symtab_containing_pc, lookup_objfile_from_block)
+	(lookup_static_symbol, basic_lookup_transparent_type)
+	(find_pc_sect_compunit_symtab, find_symbol_at_address)
+	(find_line_symtab, info_sources_command)
+	(default_collect_symbol_completion_matches_break_on)
+	(make_source_files_completion_list, find_main_name): Update.
+	* symmisc.c (print_symbol_bcache_statistics)
+	(print_objfile_statistics, maintenance_print_symbols)
+	(maintenance_print_msymbols, maintenance_print_objfiles)
+	(maintenance_info_symtabs, maintenance_check_symtabs)
+	(maintenance_expand_symtabs, maintenance_info_line_tables):
+	Update.
+	* symfile.c (remove_symbol_file_command, overlay_invalidate_all)
+	(find_pc_overlay, find_pc_mapped_section, list_overlays_command)
+	(map_overlay_command, unmap_overlay_command)
+	(simple_overlay_update, expand_symtabs_matching)
+	(map_symbol_filenames): Update.
+	* symfile-debug.c (set_debug_symfile): Update.
+	* spu-tdep.c (spu_overlay_update, spu_objfile_from_frame):
+	Update.
+	* source.c (select_source_symtab, forget_cached_source_info):
+	Update.
+	* solib.c (solib_read_symbols): Update.
+	* solib-spu.c (append_ocl_sos): Update.
+	* psymtab.c (maintenance_print_psymbols)
+	(maintenance_info_psymtabs, maintenance_check_psymtabs): Update.
+	* probe.c (parse_probes_in_pspace, find_probe_by_pc): Update.
+	* printcmd.c (info_symbol_command): Update.
+	* ppc-linux-tdep.c (ppc_linux_spe_context_inferior_created):
+	Update.
+	* objfiles.h (class all_objfiles): Remove.
+	* objfiles.c (have_partial_symbols, have_full_symbols)
+	(have_minimal_symbols, qsort_cmp, update_section_map)
+	(shared_objfile_contains_address_p)
+	(default_iterate_over_objfiles_in_search_order): Update.
+	* objc-lang.c (info_selectors_command, info_classes_command)
+	(find_methods): Update.
+	* minsyms.c (find_solib_trampoline_target): Update.
+	* maint.c (maintenance_info_sections)
+	(maintenance_translate_address, count_symtabs_and_blocks):
+	Update.
+	* main.c (captured_main_1): Update.
+	* linux-thread-db.c (try_thread_db_load_from_pdir)
+	(has_libpthread): Update.
+	* linespec.c (iterate_over_all_matching_symtabs)
+	(search_minsyms_for_name): Update.
+	* jit.c (jit_find_objf_with_entry_addr): Update.
+	* hppa-tdep.c (find_unwind_entry)
+	(hppa_lookup_stub_minimal_symbol): Update.
+	* gcore.c (gcore_create_callback, objfile_find_memory_regions):
+	Update.
+	* elfread.c (elf_gnu_ifunc_resolve_by_cache)
+	(elf_gnu_ifunc_resolve_by_got): Update.
+	* dwarf2-frame.c (dwarf2_frame_find_fde): Update.
+	* dwarf-index-write.c (save_gdb_index_command): Update.
+	* cp-support.c (add_symbol_overload_list_qualified): Update.
+	* breakpoint.c (create_overlay_event_breakpoint)
+	(create_longjmp_master_breakpoint)
+	(create_std_terminate_master_breakpoint)
+	(create_exception_master_breakpoint): Update.
+	* blockframe.c (find_pc_partial_function): Update.
+	* ada-lang.c (ada_lookup_simple_minsym, add_nonlocal_symbols)
+	(ada_collect_symbol_completion_matches)
+	(ada_add_global_exceptions): Update.
+
+2019-01-17  Tom Tromey  <tom@tromey.com>
+
+	* solib-target.c (lm_info_target_p): Remove typedef.  Don't
+	declare VEC.
+	(solib_target_parse_libraries): Change return type.
+	(library_list_start_segment, library_list_start_section)
+	(library_list_end_library, library_list_start_library); Update.
+	(solib_target_free_library_list): Remove.
+	(solib_target_parse_libraries): Remove cleanup.  Change return
+	type.
+	(solib_target_current_sos): Update.
+
+2019-01-17  Tom Tromey  <tromey@bapiya>
+
+	* valprint.c: Replace "the the" with "the".
+	* symtab.c: Replace "the the" with "the".
+	* solib.c: Replace "the the" with "the".
+	* solib-dsbt.c: Replace "the the" with "the".
+	* linespec.c: Replace "the the" with "the".
+	* dwarf2loc.h: Replace "the the" with "the".
+	* amd64-windows-tdep.c: Replace "the the" with "the".
+	* aarch64-tdep.c: Replace "the the" with "the".
+
+2019-01-16  Keith Seitz  <keiths@redhat.com>
+
+	PR gdb/23773
+	* dwarf2read.c (dwarf2_cu) <ancestor>: New field.
+	<builder>: Rename to ..
+	<m_builder>: ... this and make private.
+	(dwarf2_cu::get_builder): New method.  Change all users of
+	`builder' to use this method.
+	(dwarf2_start_symtab): Move to ...
+	(dwarf2_cu::start_symtab): ... here.  Update all callers
+	(setup_type_unit_groups): Move to ...
+	(dwarf2_cu::setup_type_unit_groups): ... here.  Update all
+	callers.
+	(dwarf2_cu::reset_builder): New method.
+	(process_full_compunit, process_full_type_unit): Use
+	dwarf2_cu::reset_builder.
+	(follow_die_offset): Record the ancestor CU if it is different
+	from the followed DIE's CU.
+	(follow_die_sig_1): Likewise.
+
+2019-01-15  Tom Tromey  <tom@tromey.com>
+
+	* remote.c (class remote_state) <buf>: Now a char_vector.
+	<buf_size>: Remove.
+	(remote_target::getpkt): Change type of buf.  Remove sizeof_buf
+	parameter.
+	(remote_target::getpkt_or_notif_sane_1)
+	(remote_target::getpkt_sane)
+	(remote_target::getpkt_or_notif_sane): Likewise.
+	(class remote_target) <putpkt>: New overload.
+	(remote_target::read_frame): Change type of "buf_p".  Remove
+	sizeof_p parameter.
+	(packet_ok): New overload.
+	(packet_check_result): New overload.
+	Update all uses.
+
+2019-01-14  Tom Tromey  <tom@tromey.com>
+
+	* remote-notif.c (handle_notification, remote_notif_ack)
+	(remote_notif_parse): Make "buf" const.
+	* remote-notif.h (struct notif_client) <parse, ack>: Make "buf"
+	const.
+	(remote_notif_parse, remote_notif_ack, handle_notification):
+	Likewise.
+	* remote.c (remote_notif_stop_parse): Make "buf" const.
+	(remote_target::remote_parse_stop_reply): Make "buf" const.
+	(remote_notif_stop_ack): Make "buf" const.
+
+2019-01-14  Tom Tromey  <tom@tromey.com>
+
+	* remote.c (remote_console_output): Make parameter const.
+
+2019-01-14  Tom Tromey  <tom@tromey.com>
+
+	* target-debug.h (target_debug_print_signals): Constify.
+	* nto-procfs.c (nto_procfs_target::pass_signals): Update.
+	* procfs.c (procfs_target::pass_signals): Update.
+	* linux-nat.c (linux_nat_target::pass_signals): Update.
+	* linux-nat.h (class linux_nat_target) <pass_signals>: Update.
+	* target-delegates.c: Rebuild.
+	* remote.c (remote_target::program_signals): Update.
+	(remote_target::pass_signals): Update.
+	* target.c (target_pass_signals): Constify argument.
+	(target_program_signals): Likewise.
+	* target.h (struct target_ops) <pass_signals, program_signals>:
+	Constify argument.
+	(target_pass_signals, target_program_signals): Constify argument.
+
+2019-01-14  Tom Tromey  <tom@tromey.com>
+
+	PR tui/28819:
+	* tui/tui-io.c (gdb_wgetch): Print \r when needed.
+
+2019-01-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* ppc-tdep.h (struct gdbarch_tdep) <ppc_v0_alias_regnum>: New
+	field.
+	* rs6000-tdep.c: Include reggroups.h.
+	(IS_V_ALIAS_PSEUDOREG): Define.
+	(rs6000_register_name): Return names for the "vX" aliases.
+	(rs6000_pseudo_register_type): Return type for the "vX" aliases.
+	(rs6000_pseudo_register_reggroup_p): Restore.  Handle "vX"
+	aliases.  Call default_register_reggroup_p for all other
+	pseudo-registers.
+	(v_alias_pseudo_register_read, v_alias_pseudo_register_write):
+	New functions.
+	(rs6000_pseudo_register_read, rs6000_pseudo_register_write):
+	Handle "vX" aliases.
+	(v_alias_pseudo_register_collect): New function.
+	(rs6000_ax_pseudo_register_collect): Handle "vX" aliases.
+	(rs6000_gdbarch_init): Initialize "vX" aliases as
+	pseudo-registers.  Restore registration of
+	rs6000_pseudo_register_reggroup_p with
+	set_tdesc_pseudo_register_reggroup_p.
+
+2019-01-13  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* xtensa-linux-tdep.c (xtensa_linux_init_abi): Update
+	tdep->num_pseudo_regs. Add calls to set_gdbarch_num_regs and
+	set_gdbarch_num_pseudo_regs.
+
+2019-01-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-style.h (class cli_style_option): <add_setshow_commands>
+	Remove arg prefixname, add do_set and do_show.
+	Add member functions set_list and show_list.
+	* cli/cli-style.c (class cli_style_option): Update accordingly.
+	(style_set_list): Move to file scope.
+	(style_show_list): Likewise.
+	(set_style): Call help_list.
+	(show_style): Call cmd_show_list.
+	(_initialize_cli_style): New macro STYLE_ADD_SETSHOW_COMMANDS.
+	Update to use the new macro.
+
+2019-10-12  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-lang.c (_initialize_ada_language): Expand the help text
+	for the "catch exception" command.
+
+2019-01-12  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* symtab.c (matching_obj_sections): Initialize obj,
+	declare it closer to its usage.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* thread-iter.h (inf_threads_iterator): Use next_iterator.
+	(basic_inf_threads_range): Remove.
+	(inf_threads_range, inf_non_exited_threads_range)
+	(safe_inf_threads_range): Use next_adapter.
+
+2019-01-10  Keith Seitz  <keiths@redhat.com>
+
+	PR gdb/23712
+	PR symtab/23010
+	* dwarf2read.c (dw2_add_symbol_to_list): Remove.
+	(fixup_go_packaging, new_symbol): Use add_symbol_to_list.
+
+2019-01-10  Keith Seitz  <keiths@redhat.com>
+
+	PR gdb/23712
+	PR symtab/23010
+	* dictionary.c (pending_to_vector): Remove.
+	(dict_create_hashed_1, dict_create_linear_1, dict_add_pending_1):
+	Remove _1 suffix, replacing functions of the same name.  Update
+	all callers.
+	(dict_create_hashed, dict_create_hashed_expandable)
+	(dict_create_linear, dict_create_linear_expandable, dict_free)
+	(dict_add_symbol, dict_add_pending, dict_size, dict_empty):
+	Make functions static.
+
+2019-01-10  Keith Seitz  <keiths@redhat.com>
+
+	PR gdb/23712
+	PR symtab/23010
+	* dictionary.h (struct dictionary): Replace declaration with
+	multidictionary.
+	(dict_create_hashed, dict_create_hashed_expandable)
+	(dict_create_linear, dict_create_linear_expandable)
+	(dict_free, dict_add_symbol, dict_add_pending, dict_empty)
+	(dict_iterator_first, dict_iterator_next, dict_iter_match_first)
+	(dict_iter_match_next, dict_size): Rename to "mdict_" versions
+	taking multidictionary argument.
+	[ALL_DICT_SYMBOLS]: Update for multidictionary.
+	* block.h (struct block) <dict>: Change to multidictionary
+	and rename `multidict'.
+	* block.c, buildsym.c, jit.c, mdebugread.c, objfiles.c,
+	symmisc.c: Update all dictionary references to multidictionary.
+
+2019-01-10  Keith Seitz  <keiths@redhat.com>
+
+	PR gdb/23712
+	PR symtab/23010
+	* dictionary.c: Include unordered_map.
+	(pending_to_vector): New function.
+	(dict_create_hashed_1, dict_create_linear_1, dict_add_pending_1):
+	Rewrite the non-"_1" functions to take vector instead
+	of linked list.
+	(dict_create_hashed, dict_create_linear, dict_add_pending): Use the
+	"new" _1 versions of the same name.
+	(multidictionary): Define.
+	(std::hash<enum language): New definition.
+	(collate_pending_symbols_by_language, mdict_create_hashed)
+	(mdict_create_hashed_expandable, mdict_create_linear)
+	(mdict_create_linear_expandable, mdict_free)
+	(find_language_dictionary, create_new_language_dictionary)
+	(mdict_add_symbol, mdict_add_pending, mdict_iterator_first)
+	(mdict_iterator_next, mdict_iter_match_first, mdict_iter_match_next)
+	(mdict_size, mdict_empty): New functions.
+	* dictionary.h (mdict_iterator): Define.
+
+2019-01-10  Pedro Alves  <palves@redhat.com>
+
+	* breakpoint.c (read_uploaded_action)
+	(create_tracepoint_from_upload): Adjust to use
+	gdb::unique_xmalloc_ptr.
+	* ctf.c (ctf_write_uploaded_tp):
+	(SET_ARRAY_FIELD): Use emplace_back.
+	(SET_STRING_FIELD): Adjust to use gdb::unique_xmalloc_ptr.
+	* tracefile-tfile.c (tfile_write_uploaded_tp):
+	* tracepoint.c (parse_tracepoint_definition): Adjust to use
+	gdb::unique_xmalloc_ptr.
+	* tracepoint.h (struct uploaded_tp) <cond, actions, step_actions,
+	at_string, cond_string, cmd_strings>: Replace char pointers
+	with gdb::unique_xmalloc_ptr.
+
+2019-01-10  Pedro Alves  <palves@redhat.com>
+
+	* solib-target.c (library_list_start_library): Don't xstrdup name.
+
+2019-01-10  Pedro Alves  <palves@redhat.com>
+
+	* mdebugread.c (parse_partial_symbols): Use
+	gdb::unique_xmalloc_ptr to manage heap-allocated 'stabsstring'.
+
+2019-01-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* linux-fork.c (scoped_switch_fork_info)
+	<~scoped_switch_fork_info>: Fix incorrect variable name.
+
+2019-01-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* linux-fork.c (scoped_switch_fork_info)
+	<scoped_switch_fork_info>: Make explicit.
+	<~scoped_switch_fork_info>: Wrap core in TRY/CATCH.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (objfile::reset_psymtabs): Update.
+	* objfiles.c (objfile::objfile): Update.
+	* psymtab.h (psymtab_storage::obstack): Update.
+	(psymtab_storage::m_obstack): Use gdb::optional.
+	(class psymtab_storage): Update comment.  Remove objfile
+	parameter.
+	* psymtab.c (psymtab_storage::psymtab_storage): Update.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.h (psymtab_storage::allocate_psymtab): New method.
+	<free_psymtabs>: Now private.
+	* psymtab.c (psymtab_storage::allocate_psymtab): Implement.
+	(allocate_psymtab): Use new method.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_end_psymtab): Use allocate_dependencies.
+	* psymtab.h (psymtab_storage::allocate_dependencies): New method.
+	* mdebugread.c (parse_partial_symbols): Use
+	allocate_dependencies.
+	* dwarf2read.c (dwarf2_create_include_psymtab): Use
+	allocate_dependencies.
+	(process_psymtab_comp_unit_reader)
+	(build_type_psymtab_dependencies): Likewise.
+	* dbxread.c (dbx_end_psymtab): Use allocate_dependencies.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.c (add_psymbol_to_bcache): Pass psymtab obstack to
+	PSYMBOL_SET_LANGUAGE.
+	(allocate_psymtab): Allocate psymtab on the psymtab obstack.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.h (psymtab_storage::obstack): New method.
+	<m_obstack>: Rename from obstack; now private.
+	* psymtab.c (psymtab_storage): Update.
+	* dwarf2read.c (create_addrmap_from_index)
+	(create_addrmap_from_aranges, dwarf2_build_psymtabs_hard):
+	Update.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (reread_symbols): Call objfile->reset_psymtabs.
+	* objfiles.h (objfile::reset_psymtabs): New method.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* symmisc.c (print_symbol_bcache_statistics): Update.
+	(print_objfile_statistics): Update.
+	* symfile.c (reread_symbols): Update.
+	* psymtab.h (class psymtab_storage): New.
+	* psymtab.c (psymtab_storage): New constructor.
+	(~psymtab_storage): New destructor.
+	(require_partial_symbols): Update.
+	(ALL_OBJFILE_PSYMTABS_REQUIRED): Rewrite.
+	(find_pc_sect_psymtab, find_pc_sect_psymbol)
+	(match_partial_symbol, lookup_partial_symbol, dump_psymtab)
+	(psym_dump, recursively_search_psymtabs, psym_has_symbols)
+	(psym_find_compunit_symtab_by_address, sort_pst_symbols)
+	(start_psymtab_common, end_psymtab_common)
+	(add_psymbol_to_bcache, add_psymbol_to_list, init_psymbol_list)
+	(allocate_psymtab): Update.
+	(psymtab_storage::discard_psymtab): Rename from discard_psymtab.
+	Update.
+	(dump_psymtab_addrmap, maintenance_print_psymbols)
+	(maintenance_check_psymtabs): Update.
+	(class objfile_psymtabs): Move to objfiles.h.
+	* psympriv.h (discard_psymtab): Now inline.
+	(psymtab_discarder::psymtab_discarder): Update.
+	(psymtab_discarder::~psymtab_discarder): Update.
+	(ALL_OBJFILE_PSYMTABS): Rewrite.
+	* objfiles.h (struct objfile) <psymtabs, psymtabs_addrmap,
+	free_psymtabs, psymbol_cache, global_psymbols, static_psymbols>:
+	Remove fields.
+	<partial_symtabs>: New field.
+	(class objfile_psymtabs): Move from psymtab.h.  Update.
+	* objfiles.c (objfile::objfile): Initialize partial_symtabs, not
+	psymbol_cache.
+	(objfile::~objfile): Don't destroy psymbol_cache.
+	* mdebugread.c (parse_partial_symbols): Update.
+	* dwarf2read.c (create_addrmap_from_index)
+	(create_addrmap_from_aranges, dw2_find_pc_sect_compunit_symtab)
+	(process_psymtab_comp_unit_reader, dwarf2_build_psymtabs_hard)
+	(add_partial_subprogram, dwarf2_ranges_read): Update.
+	* dwarf-index-write.c (write_address_map)
+	(write_one_signatured_type, recursively_write_psymbols)
+	(class debug_names, class debug_names, write_psymtabs_to_index):
+	Update.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* symtab.h (SYMBOL_SET_NAMES): Update.
+	(symbol_set_names): Update.
+	(MSYMBOL_SET_NAMES): Update.
+	* symtab.c (symbol_set_names): Change argument to be an
+	objfile_per_bfd_storage.
+	* psymtab.c (add_psymbol_to_bcache): Update.
+	* psympriv.h (PSYMBOL_SET_NAMES): Take per_bfd argument.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (create_demangled_names_hash): Change argument to be an
+	objfile_per_bfd_storage.
+	(symbol_set_names): Update.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_initial_scan): Unconditionally call
+	init_psymbol_list.
+	* psymtab.c (init_psymbol_list): Do nothing if already called.
+	* psympriv.h (init_psymbol_list): Add comment.
+	* dwarf2read.c (dwarf2_build_psymtabs): Unconditionally call
+	init_psymbol_list.
+	* dbxread.c (dbx_symfile_read): Unconditionally call
+	init_psymbol_list.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (scan_xcoff_symtab): Update.
+	* psymtab.c (add_psymbol_to_list): Replace "list" parameter with
+	"where".
+	* mdebugread.c (parse_partial_symbols)
+	(handle_psymbol_enumerators): Update.
+	* dwarf2read.c (add_partial_symbol, load_partial_dies): Update.
+	* dbxread.c (read_dbx_symtab): Update.
+	* psympriv.h (psymbol_placement): New enum.
+	(add_psymbol_to_list): Update.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_start_psymtab): Remove global_psymbols and
+	static_psymbols parameters.
+	(scan_xcoff_symtab): Update.
+	* psymtab.c (start_psymtab_common): Remove global_psymbols and
+	static_psymbols parameters.
+	* psympriv.h (start_psymtab_common): Update.
+	* mdebugread.c (parse_partial_symbols): Update.
+	* dwarf2read.c (create_partial_symtab): Update.
+	* dbxread.c (read_dbx_symtab): Update.
+	(start_psymtab): Remove global_psymbols and static_psymbols
+	parameters.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_end_psymtab): Remove some initializations.
+	* psymtab.c (allocate_psymtab): Add comment.
+	* psympriv.h (allocate_psymtab): Add comment.
+	* dwarf2read.c (dwarf2_create_include_psymtab): Remove some
+	initializations.
+	* dbxread.c (dbx_end_psymtab): Remove some initializations.
+
+2019-01-10  Tom Tromey  <tom@tromey.com>
+
+	* symfile.h (mdebug_build_psymtabs, elfmdebug_build_psymtabs):
+	Don't declare.
+	* mipsread.c: Include mdebugread.h.
+	* mdebugread.h (mdebug_build_psymtabs, elfmdebug_build_psymtabs):
+	Declare.
+	* elfread.c: Include mdebugread.h.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* dbxread.c (dbx_end_psymtab): Use objfile_psymtabs.
+	* mdebugread.c (parse_partial_symbols): Use objfile_psymtabs.
+	* psymtab.c (ALL_OBJFILE_PSYMTABS_REQUIRED): Remove.
+	(psym_map_symtabs_matching_filename, find_pc_sect_psymtab)
+	(psym_lookup_symbol, psym_find_last_source_symtab)
+	(psym_forget_cached_source_info, psym_print_stats)
+	(psym_expand_symtabs_for_function, psym_expand_all_symtabs)
+	(psym_expand_symtabs_with_fullname, psym_map_symbol_filenames)
+	(psym_map_matching_symbols, psym_expand_symtabs_matching)
+	(psym_find_compunit_symtab_by_address)
+	(maintenance_print_psymbols, maintenance_info_psymtabs)
+	(maintenance_check_psymtabs): Use ranged for.
+	* psymtab.h (class objfile_psymtabs): New.
+	(require_partial_symbols): Return objfile_psymtabs.
+	* psympriv.h (ALL_OBJFILE_PSYMTABS): Remove.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (overlay_invalidate_all, find_pc_overlay)
+	(find_pc_mapped_section, list_overlays_command)
+	(map_overlay_command, unmap_overlay_command)
+	(simple_overlay_update): Use all_objfiles.
+	* spu-tdep.c (spu_overlay_update): Use all_objfiles.
+	* printcmd.c (info_symbol_command): Use all_objfiles.
+	* objfiles.h (ALL_OBJSECTIONS): Remove.
+	* maint.c (maintenance_translate_address): Use all_objfiles.
+	* gcore.c (gcore_create_callback): Use all_objfiles.
+	(objfile_find_memory_regions): Likewise.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (find_line_symtab, info_sources_command)
+	(make_source_files_completion_list): Use objfile_compunits.
+	* source.c (select_source_symtab): Use objfile_compunits.
+	* objfiles.h (struct objfile): Update comment.
+	(ALL_OBJFILES): Remove.
+	(ALL_FILETABS): Remove.
+	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Use
+	objfile_compunits.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* symmisc.c (print_objfile_statistics, dump_objfile)
+	(maintenance_print_symbols): Use compunit_filetabs.
+	* source.c (forget_cached_source_info_for_objfile): Use
+	compunit_filetabs.
+	* objfiles.h (ALL_OBJFILE_FILETABS): Remove.
+	(ALL_FILETABS): Use compunit_filetabs.
+	* objfiles.c (objfile_relocate1): Use compunit_filetabs.
+	* coffread.c (coff_symtab_read): Use compunit_filetabs.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* symtab.h (ALL_COMPUNIT_FILETABS): Remove.
+	(compunit_filetabs): New.
+	* symtab.c (iterate_over_some_symtabs, find_pc_sect_line): Use
+	compunit_filetabs.
+	(info_sources_command, make_source_files_completion_list): Remove
+	declaration.
+	* symmisc.c (print_objfile_statistics, dump_objfile)
+	(maintenance_print_symbols): Remove declaration.
+	(maintenance_info_symtabs): Use compunit_filetabs.
+	(maintenance_info_line_tables): Likewise.
+	* source.c (select_source_symtab): Change local variable name.
+	(forget_cached_source_info_for_objfile): Remove declaration.
+	* objfiles.h (ALL_OBJFILE_FILETABS): Use compunit_filetabs.
+	* objfiles.c (objfile_relocate1): Remove declaration.
+	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Remove
+	declaration.
+	* maint.c (count_symtabs_and_blocks): Use compunit_filetabs.
+	* coffread.c (coff_symtab_read): Remove declaration.
+	* buildsym.c (buildsym_compunit::end_symtab_with_blockvector): Use
+	compunit_filetabs.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (lookup_objfile_from_block)
+	(find_pc_sect_compunit_symtab, search_symbols)
+	(default_collect_symbol_completion_matches_break_on): Use
+	objfile_compunits.
+	* objfiles.h (ALL_COMPUNITS): Remove.
+	* maint.c (count_symtabs_and_blocks): Use objfile_compunits.
+	* cp-support.c (add_symbol_overload_list_qualified): Use
+	objfile_compunits.
+	* ada-lang.c (ada_collect_symbol_completion_matches)
+	(ada_add_global_exceptions): Use objfile_compunits.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* source.c (select_source_symtab)
+	(forget_cached_source_info_for_objfile): Remove declaration.
+	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Remove
+	declaration.
+	* maint.c (count_symtabs_and_blocks): Remove declaration.
+	* cp-support.c (add_symbol_overload_list_qualified): Remove
+	declaration.
+	* coffread.c (coff_symtab_read): Remove declaration.
+	* symtab.c (lookup_symbol_in_objfile_symtabs)
+	(basic_lookup_transparent_type_1): Use objfile_compunits.
+	(lookup_objfile_from_block, find_pc_sect_compunit_symtab)
+	(info_sources_command, search_symbols)
+	(default_collect_symbol_completion_matches_break_on)
+	(make_source_files_completion_list): Remove declaration.
+	* ada-lang.c (add_nonlocal_symbols): Use objfile_compunits.
+	(ada_collect_symbol_completion_matches)
+	(ada_add_global_exceptions): Remove declaration.
+	* linespec.c (iterate_over_all_matching_symtabs): Use
+	objfile_compunits.
+	* objfiles.h (ALL_OBJFILE_COMPUNITS): Remove.
+	(class objfile_compunits): New.
+	(ALL_COMPUNITS): Use objfile_compunits.
+	* symmisc.c (print_objfile_statistics, maintenance_info_symtabs)
+	(maintenance_check_symtabs, maintenance_info_line_tables): Use
+	objfile_compunits.
+	* objfiles.c (objfile_relocate1): Use objfile_compunits.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (search_symbols)
+	(default_collect_symbol_completion_matches_break_on): Use
+	objfile_msymbols.
+	* ada-lang.c (ada_lookup_simple_minsym)
+	(ada_collect_symbol_completion_matches): Use objfile_msymbols.
+	* minsyms.c (find_solib_trampoline_target): Use objfile_msymbols.
+	* hppa-tdep.c (hppa_lookup_stub_minimal_symbol): Use
+	objfile_msymbols.
+	* coffread.c (coff_symfile_read): Use objfile_msymbols.
+	* symmisc.c (dump_msymbols): Use objfile_msymbols.
+	* objc-lang.c (find_methods): Use objfile_msymbols.
+	(info_selectors_command, info_classes_command): Likewise.
+	* stabsread.c (scan_file_globals): Use objfile_msymbols.
+	* objfiles.h (class objfile_msymbols): New.
+	(ALL_OBJFILE_MSYMBOLS): Remove.
+	(ALL_MSYMBOLS): Remove.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* common/next-iterator.h (next_adapter): Add Iterator template
+	parameter.
+	* objfiles.h (ALL_OBJFILES_SAFE): Remove.
+	(class all_objfiles_safe): New.
+	* jit.c (jit_inferior_exit_hook): Use all_objfiles_safe.
+	* objfiles.c (put_objfile_before): Update comment.
+	(add_separate_debug_objfile): Likewise.
+	(free_all_objfiles): Use all_objfiles_safe.
+	(objfile_purge_solibs): Likewise.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (iterate_over_symtabs, matching_obj_sections)
+	(expand_symtab_containing_pc, lookup_static_symbol)
+	(basic_lookup_transparent_type, find_pc_sect_compunit_symtab)
+	(find_symbol_at_address, find_line_symtab, find_main_name): Use
+	all_objfiles.
+	* probe.c (find_probe_by_pc, collect_probes): Use all_objfiles.
+	* breakpoint.c (create_overlay_event_breakpoint)
+	(create_longjmp_master_breakpoint)
+	(create_std_terminate_master_breakpoint)
+	(create_exception_master_breakpoint): Use all_objfiles.
+	* linux-thread-db.c (try_thread_db_load_from_pdir)
+	(has_libpthread): Use all_objfiles.
+	* ada-lang.c (add_nonlocal_symbols): Use all_objfiles.
+	* linespec.c (iterate_over_all_matching_symtabs)
+	(search_minsyms_for_name): Use all_objfiles.
+	* maint.c (maintenance_info_sections): Use all_objfiles.
+	* main.c (captured_main_1): Use all_objfiles.
+	* spu-tdep.c (spu_objfile_from_frame): Use all_objfiles.
+	* guile/scm-objfile.c (gdbscm_objfiles): Use all_objfiles.
+	* guile/scm-pretty-print.c
+	(ppscm_find_pretty_printer_from_objfiles): Use all_objfiles.
+	* solib-spu.c (append_ocl_sos): Use all_objfiles.
+	* symmisc.c (maintenance_print_symbols): Use all_objfiles.
+	(maintenance_print_msymbols): Use all_objfiles.
+	* source.c (select_source_symtab): Use all_objfiles.
+	* jit.c (jit_find_objf_with_entry_addr): Use all_objfiles.
+	* symfile.c (remove_symbol_file_command)
+	(expand_symtabs_matching, map_symbol_filenames): Use
+	all_objfiles.
+	* ppc-linux-tdep.c (ppc_linux_spe_context_inferior_created): Use
+	all_objfiles.
+	* dwarf2-frame.c (dwarf2_frame_find_fde): Use all_objfiles.
+	* objc-lang.c (find_methods): Use all_objfiles.
+	* objfiles.c (have_partial_symbols, have_full_symbols)
+	(have_minimal_symbols, qsort_cmp)
+	(default_iterate_over_objfiles_in_search_order): Use
+	all_objfiles.
+	* hppa-tdep.c (find_unwind_entry): Use all_objfiles.
+	* psymtab.c (maintenance_print_psymbols): Use all_objfiles.
+	(maintenance_check_psymtabs): Use all_objfiles.
+	(ALL_PSYMTABS): Remove.
+	* compile/compile-object-run.c (do_module_cleanup): Use
+	all_objfiles.
+	* blockframe.c (find_pc_partial_function): Use all_objfiles.
+	* cp-support.c (add_symbol_overload_list_qualified): Use
+	all_objfiles.
+	* windows-tdep.c (windows_iterate_over_objfiles_in_search_order):
+	Use all_objfiles.
+	* dwarf-index-write.c (save_gdb_index_command): Use all_objfiles.
+	* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): Use
+	all_objfiles.
+	* python/py-objfile.c (objfpy_lookup_objfile_by_name)
+	(objfpy_lookup_objfile_by_build_id): Use all_objfiles.
+	* python/py-prettyprint.c (find_pretty_printer_from_objfiles):
+	Uses all_objfiles.
+	* solib.c (solib_read_symbols): Use all_objfiles
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* probe.c (parse_probes_in_pspace): Use all_objfiles.
+	* guile/scm-progspace.c (gdbscm_progspace_objfiles): Use
+	all_objfiles.
+	* objfiles.h (ALL_PSPACE_OBJFILES): Remove.
+	* symmisc.c (print_symbol_bcache_statistics)
+	(print_objfile_statistics, maintenance_print_objfiles)
+	(maintenance_info_symtabs, maintenance_check_symtabs)
+	(maintenance_expand_symtabs, maintenance_info_line_tables): Use
+	all_objfiles.
+	* source.c (forget_cached_source_info): Use all_objfiles.
+	* symfile-debug.c (set_debug_symfile): Use all_objfiles.
+	* elfread.c (elf_gnu_ifunc_resolve_by_cache)
+	(elf_gnu_ifunc_resolve_by_got): Use all_objfiles.
+	* objfiles.c (update_section_map): Use all_objfiles.
+	(shared_objfile_contains_address_p): Likewise.
+	* psymtab.c (maintenance_info_psymtabs): Use all_objfiles.
+	* python/py-progspace.c (pspy_get_objfiles): Use all_objfiles.
+
+2019-01-09  Tom Tromey  <tom@tromey.com>
+
+	* common/next-iterator.h: New file.
+	* objfiles.h (class all_objfiles): New.
+	(struct objfile_iterator): New.
+
+2019-01-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Move the description of the changed "frame", "select-frame",
+	 and "info frame" commands to the Changed commands section.
+
+2019-01-09  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* gdbtypes.c (check_stub_method_group): Remove handling of old
+	mangling schemes.
+	* linespec.c (find_methods): Likewise.
+	* stabsread.c (read_member_functions): Likewise.
+	* valops.c (search_struct_method): Likewise.
+	(value_struct_elt_for_reference): Likewise.
+	* NEWS: Mention this change.
+
+2019-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cli/cli-cmds.c (list_command): Pass a source_lines_range to
+	print_source_lines.
+	* source.c (print_source_lines_base): Update line number check.
+	(print_source_lines): New function.
+	(source_lines_range::source_lines_range): New function.
+	* source.h (class source_lines_range): New class.
+	(print_source_lines): New declaration.
+
+2019-01-09  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* linespec.c (linespec_state_destructor): Free self->canonical_names.
+
+2019-01-08  Tom Tromey  <tom@tromey.com>
+	    Simon Marchi  <simon.marchi@ericsson.com>
+
+	PR gdb/24060
+	* ada-exp.y (DOLLAR_VARIABLE): Rename from SPECIAL_VARIABLE.
+	* ada-lex.l (DOLLAR_VARIABLE): Likewise.
+	* c-exp.y (DOLLAR_VARIABLE): Rename from VARIABLE.
+	* f-exp.y (DOLLAR_VARIABLE): Likewise.
+	* m2-exp.y (DOLLAR_VARIABLE): Rename from INTERNAL_VAR.
+	* p-exp.y (DOLLAR_VARIABLE): Rename from VARIABLE.
+
+2019-01-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* source.c (select_source_symtab): Move header comment to
+	declaration in source.h.
+	(forget_cached_source_info_for_objfile): Likewise.
+	(forget_cached_source_info): Likewise.
+	(identify_source_line): Likewise.
+	* source.h (identify_source_line): Move declaration from symtab.h
+	and add comment from source.c
+	(print_source_lines): Likewise.
+	(forget_cached_source_info_for_objfile): Likewise.
+	(forget_cached_source_info): Likewise.
+	(select_source_symtab): Likewise.
+	(enum print_source_lines_flag): Move definition from symtab.h.
+	* symtab.h (identify_source_line): Move declaration to source.h.
+	(print_source_lines): Likewise.
+	(forget_cached_source_info_for_objfile): Likewise.
+	(forget_cached_source_info): Likewise.
+	(select_source_symtab): Likewise.
+	(enum print_source_lines_flag): Move definition to source.h.
+	* tui/tui-hooks.c: Add 'source.h' include.
+
+2019-01-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* source.c (print_source_lines_base): Handle requests to print
+	reverse line number sequences, and guard against empty lines
+	string.
+
+2019-01-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* source.c (print_source_lines_base): Fix skip of '\r' if next
+	character is '\n'.
+
+2019-01-06  Tom Tromey  <tom@tromey.com>
+
+	* c-exp.y (struct c_parse_state) <macro_original_text,
+	expansion_obstack>: New member.
+	(macro_original_text, expansion_obstack): Remove globals.
+	(scan_macro_expansion, scanning_macro_expansion)
+	(finished_macro_expansion): Update.
+	(scan_macro_cleanup): Remove.
+	(yylex, c_parse): Update.
+
+2019-01-06  Tom Tromey  <tom@tromey.com>
+
+	* c-exp.y (struct c_parse_state) <strings>: New member.
+	(operator_stoken): Update.
+
+2019-01-06  Tom Tromey  <tom@tromey.com>
+
+	* parser-defs.h (type_ptr): Remove typedef.  Don't declare VEC.
+	(union type_stack_elt) <typelist_val>: Now a pointer to
+	std::vector.
+	(type_stack_cleanup): Don't declare.
+	(push_typelist): Update.
+	* parse.c (pop_typelist): Return a std::vector.
+	(push_typelist): Take a std::vector.
+	(follow_types): Update.  Do not free args.
+	(type_stack_cleanup): Remove.
+	* c-exp.y (struct c_parse_state): New.
+	(cpstate): New global.
+	(type_aggregate_p, exp, ptr_operator, parameter_typelist)
+	(nonempty_typelist): Update.
+	(func_mod): Create a new vector.
+	(c_parse): Create a c_parse_state.
+	(check_parameter_typelist): Do not delete params.
+	(function_method): Update.  Do not delete type_list.
+
+2019-01-06  Tom Tromey  <tom@tromey.com>
+
+	PR gdb/28155:
+	* python/py-finishbreakpoint.c (bpfinishpy_init): Use
+	check_typedef.
+	* infcmd.c (finish_command_fsm_should_stop): Use check_typedef.
+	(print_return_value): Likewise.
+
+2019-01-05  Tom Tromey  <tom@tromey.com>
+
+	* contrib/cleanup_check.py: Remove.
+	* contrib/gcc-with-excheck: Remove.
+	* contrib/exsummary.py: Remove.
+	* contrib/excheck.py: Remove.
+
+2019-01-05  Joel Brobecker  <brobecker@adacore.com>
+
+	* thread.c (delete_thread_1): Add gdb_assert that THR is not
+	NULL. Initialize tpprev to NULL instead of assigning it
+	to NULL on the next statement.
+	* windows-nat.c (windows_delete_thread): Remove check for
+	main_thread_id before printing thread exit notifications.
+	(get_windows_debug_event) <EXIT_THREAD_DEBUG_EVENT>:
+	Remove thread ID check against main_thread_id.
+	<CREATE_PROCESS_DEBUG_EVENT>: Remove call to
+	windows_delete_thread.
+	<EXIT_PROCESS_DEBUG_EVENT>: Add call to windows_delete_thread.
+
+2019-01-04  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile.c (_initialize_compile): Use upper case for
+	metasyntactic variables.
+	* symmisc.c (_initialize_symmisc): Use upper case for
+	metasyntactic variables.
+	* psymtab.c (_initialize_psymtab): Use upper case for
+	metasyntactic variables.
+	* demangle.c (demangle_command): Use upper case for metasyntactic
+	variables.
+	(_initialize_demangler): Likewise.
+	* ax-gdb.c (_initialize_ax_gdb): Use upper case for metasyntactic
+	variables.
+
+2019-01-03  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-source.c (tui_set_source_content): Use xstrdup.
+
+2019-01-03  Tom Tromey  <tom@tromey.com>
+
+	* python/py-symtab.c (salpy_str): Update.
+	(struct salpy_sal_object) <symtab>: Now a PyObject.
+	(salpy_dealloc): Update.
+	(del_objfile_sal): Use gdbpy_ref.
+
+2019-01-03  Tom Tromey  <tom@tromey.com>
+
+	* python/py-type.c (convert_field): Use new_reference.  Return
+	gdbpy_ref.
+	(make_fielditem): Return gdbpy_ref.
+	(typy_fields): Update.
+	(typy_getitem): Update.
+	(field_name): Return gdbpy_ref.  Use new_reference.
+	(typy_iterator_iternext): Update.
+
+2019-01-03  Tom Tromey  <tom@tromey.com>
+
+	* python/py-record.c (gdbpy_stop_recording): Use Py_RETURN_NONE.
+
+2019-01-03  Tom Tromey  <tom@tromey.com>
+
+	* python/py-value.c (valpy_dealloc): Use Py_XDECREF.
+	* python/py-type.c (typy_fields_items): Use gdbpy_ref.
+	* python/py-progspace.c (pspy_set_printers): Use gdbpy_ref.
+	(pspy_set_frame_filters, pspy_set_frame_unwinders)
+	(pspy_set_type_printers): Likewise.
+	* python/py-function.c (fnpy_init): Use gdbpy_ref.
+	* python/py-cmd.c (cmdpy_init): Use gdbpy_ref.
+	* python/py-objfile.c (objfpy_set_printers): Use gdbpy_ref.
+	(objfpy_set_frame_filters, objfpy_set_frame_unwinders)
+	(objfpy_set_type_printers): Likewise.
+
+2019-01-03  Tom Tromey  <tom@tromey.com>
+
+	* python/python.c (gdbpy_enter, ~gdbpy_enter): Update.
+	(gdbpy_print_stack): Use gdbpy_err_fetch.
+	* python/python-internal.h (class gdbpy_err_fetch): New class.
+	(class gdbpy_enter) <m_error_type, m_error_value,
+	m_error_traceback>: Remove.
+	<m_error>: New member.
+	(gdbpy_exception_to_string): Don't declare.
+	* python/py-varobj.c (py_varobj_iter_next): Use gdbpy_err_fetch.
+	* python/py-value.c (convert_value_from_python): Use
+	gdbpy_err_fetch.
+	* python/py-utils.c (gdbpy_err_fetch::to_string): Rename from
+	gdbpy_exception_to_string.
+	(gdbpy_handle_exception): Use gdbpy_err_fetch.
+	* python/py-prettyprint.c (print_stack_unless_memory_error): Use
+	gdbpy_err_fetch.
+
+2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* linux-nat.c (delete_lwp_cleanup): Delete.
+	(struct lwp_deleter): New struct.
+	(lwp_info_up): New typedef.
+	(linux_nat_target::follow_fork): Delete cleanup, and make use of
+	lwp_info_up.
+
+2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* linux-fork.c (class scoped_switch_fork_info): New class.
+	(inferior_call_waitpid): Update to use scoped_switch_fork_info.
+
+2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* valops.c (find_overload_match): Remove use of null_cleanup, and
+	calls to do_cleanups.
+
+2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* compile/compile-cplus-types.c
+	(compile_cplus_instance::decl_name): Handle changes to
+	cp_func_name.
+	* cp-support.c (cp_func_name): Update header comment, update
+	return type.
+	* cp-support.h (cp_func_name): Update return type in declaration.
+	* valops.c (find_overload_match): Move temp_func local to top
+	level of function and change its type.  Use temp_func to hold and
+	delete temporary string obtained from cp_func_name.
+
+2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* remote.c (remote_target::remote_check_symbols): Convert `msg` to
+	gdb::char_vector, remove cleanup, and update uses of `msg`.
+
+2019-01-03  Jim Wilson  <jimw@sifive.com>
+
+	* riscv-tdep.c (riscv_freg_feature): Drop s0 name from f8.
+
+2019-01-02  Tom Tromey  <tom@tromey.com>
+
+	* xml-tdesc.c (xml_cache): Hold a target_desc_up.
+	(tdesc_parse_xml): Remove cleanups.
+	* target-descriptions.h (make_cleanup_free_target_description):
+	Don't declare.
+	(target_desc_deleter): New struct.
+	(target_desc_up): New typedef.
+	* target-descriptions.c (target_desc_deleter::operator()): Rename
+	from free_target_description.
+	(make_cleanup_free_target_description): Remove.
+
+2019-01-02  Tom Tromey  <tom@tromey.com>
+
+	* linespec.c (struct linespec_parser): Rename from ls_parser.  Add
+	constructor, destructor.
+	(linespec_parser): Remove typedef.
+	(~linespec_parser): Rename from linespec_parser_delete.
+	(linespec_lex_to_end, linespec_complete_label)
+	(linespec_complete): Update.
+	(decode_line_full): Remove cleanups.
+	(decode_line_1): Update.
+
+2019-01-02  Tom Tromey  <tom@tromey.com>
+
+	* python/python-internal.h (inferior_to_inferior_object): Change
+	return type.
+	* python/py-exitedevent.c (create_exited_event_object): Update.
+	* python/py-inferior.c (inferior_to_inferior_object): Return
+	gdbpy_ref.
+	(python_new_inferior, python_inferior_deleted)
+	(thread_to_thread_object, delete_thread_object)
+	(build_inferior_list, gdbpy_selected_inferior): Update.
+	* python/py-infthread.c (create_thread_object): Update.  Also fail
+	if inferior_to_inferior_object fails.
+
+2019-01-02  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* inferior.h (class inferior) <displaced_step_state>: New field.
+	* infrun.h (struct displaced_step_state): Move here from
+	infrun.c.  Initialize fields, add constructor.
+	<inf>: Remove field.
+	<reset>: New method.
+	* infrun.c (struct displaced_step_inferior_state): Move to
+	infrun.h.
+	(displaced_step_inferior_states): Remove.
+	(get_displaced_stepping_state): Adust.
+	(displaced_step_in_progress_any_inferior): Adjust.
+	(displaced_step_in_progress_thread): Adjust.
+	(displaced_step_in_progress): Adjust.
+	(add_displaced_stepping_state): Remove.
+	(get_displaced_step_closure_by_addr): Adjust.
+	(remove_displaced_stepping_state): Remove.
+	(infrun_inferior_exit): Call displaced_step_state.reset.
+	(use_displaced_stepping): Don't check for NULL.
+	(displaced_step_prepare_throw): Call
+	get_displaced_stepping_state.
+	(displaced_step_fixup): Don't check for NULL.
+	(prepare_for_detach): Don't check for NULL.
+
+2019-01-02  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* infcall.c (call_function_by_hand_dummy): cleanup/destroy sm
+	 in case of call that did not complete.
+
+2019-01-02  Andrey Utkin  <autkin@undo.io>
+
+	* symfile.c (find_separate_debug_file): Fix search of debug files for
+	remote debuggee.
+
+2019-01-02  Tom Tromey  <tom@tromey.com>
+
+	* python/py-inferior.c (gdbpy_initialize_inferior): Fix
+	indentation.
+	* python/py-frame.c (frapy_older): Remove cast.
+	(frapy_newer): Likewise.
+	* python/py-breakpoint.c (local_setattro): Remove cast.
+	* python/py-arch.c (archpy_name): Remove local variable.
+	* python/py-type.c (gdbpy_lookup_type): Remove cast.
+
+2019-01-02  Joel Brobecker  <brobecker@adacore.com>
+
+	* unittests/basic_string_view/element_access/char/empty.cc:
+	Fix year range in copyright header.
+
+2019-01-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arch/riscv.h (struct riscv_gdbarch_features) <hw_float_abi>:
+	Delete.
+	<operator==>: Update with for removed field.
+	<hash>: Likewise.
+	* riscv-tdep.h (struct gdbarch_tdep) <features>: Renamed to...
+	<isa_features>: ...this.
+	<abi_features>: New field.
+	(riscv_isa_flen): Update comment.
+	(riscv_abi_xlen): New declaration.
+	(riscv_abi_flen): New declaration.
+	* riscv-tdep.c (riscv_isa_xlen): Update to get answer from
+	isa_features.
+	(riscv_abi_xlen): New function.
+	(riscv_isa_flen): Update to get answer from isa_features.
+	(riscv_abi_flen): New function.
+	(riscv_has_fp_abi): Update to get answer from abi_features.
+	(riscv_call_info::riscv_call_info): Use abi xlen and flen, not isa
+	xlen and flen.
+	(riscv_call_info) <xlen, flen>: Update comment.
+	(riscv_call_arg_struct): Remove invalid assertions
+	(riscv_features_from_gdbarch_info): Update now hw_float_abi field
+	is removed.
+	(riscv_gdbarch_init): Gather isa features and abi features
+	separately, ensure both match on the gdbarch when reusing an old
+	gdbarch.  Relax an error check to allow 32-bit abi float to run on
+	a target with 64-bit float hardware.
+
+2019-01-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* source.c (search_command_helper): Stop reverse search
+	when line 1 has been searched.
+
+2019-01-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* record-full.c (record_full_base_target::close): Rewrite
+	record_full_core_buf_list free logic.
+
+2019-01-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* break-catch-syscall.c (print_one_catch_syscall): xfree
+	the last text.
+
+2019-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* top.c (print_gdb_version): Update Copyright year in version
+	message.
+
+2019-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	Update copyright year range in all GDB files.
+
+2019-01-01, 19  Joel Brobecker  <brobecker@adacore.com>
+
+	* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2018.
+
+For older changes see ChangeLog-2018.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+coding: utf-8
+End:
+
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/charset.c ./gdb/charset.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/charset.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/charset.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Character set conversion support for GDB.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -818,7 +818,8 @@ find_charset_names (void)
   {
     std::string iconv_dir = relocate_gdb_directory (ICONV_BIN,
 						    ICONV_BIN_RELOCATABLE);
-    iconv_program = concat (iconv_dir.c_str(), SLASH_STRING, "iconv", NULL);
+    iconv_program
+      = concat (iconv_dir.c_str(), SLASH_STRING, "iconv", (char *) NULL);
   }
 #else
   iconv_program = xstrdup ("iconv");
@@ -989,13 +990,14 @@ intermediate_encoding (void)
   /* Not valid, free the allocated memory.  */
   xfree (result);
   /* No valid charset found, generate error here.  */
-  error (_("Unable to find a vaild charset for string conversions"));
+  error (_("Unable to find a valid charset for string conversions"));
 }
 
 #endif /* USE_INTERMEDIATE_ENCODING_FUNCTION */
 
+void _initialize_charset ();
 void
-_initialize_charset (void)
+_initialize_charset ()
 {
   /* The first element is always "auto".  */
   charsets.charsets.push_back (xstrdup ("auto"));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/charset.h ./gdb/charset.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/charset.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/charset.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Character set conversion support for GDB.
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/charset-list.h ./gdb/charset-list.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/charset-list.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/charset-list.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* List of character set names for GDB.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-lang.c ./gdb/c-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-lang.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/c-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* C language support routines for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -37,6 +37,8 @@
 #include "gdbcore.h"
 #include "gdbarch.h"
 
+class compile_instance;
+
 /* Given a C string type, STR_TYPE, return the corresponding target
    character set name.  */
 
@@ -84,9 +86,9 @@ classify_type (struct type *elttype, str
      that would do the wrong thing.  */
   while (elttype)
     {
-      const char *name = TYPE_NAME (elttype);
+      const char *name = elttype->name ();
 
-      if (TYPE_CODE (elttype) == TYPE_CODE_CHAR || !name)
+      if (elttype->code () == TYPE_CODE_CHAR || !name)
 	{
 	  result = C_CHAR;
 	  goto done;
@@ -110,7 +112,7 @@ classify_type (struct type *elttype, str
 	  goto done;
 	}
 
-      if (TYPE_CODE (elttype) != TYPE_CODE_TYPEDEF)
+      if (elttype->code () != TYPE_CODE_TYPEDEF)
 	break;
 
       /* Call for side effects.  */
@@ -250,23 +252,23 @@ c_get_string (struct value *value, gdb::
   if (element_type == NULL)
     goto error;
 
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type->code () == TYPE_CODE_ARRAY)
     {
       /* If we know the size of the array, we can use it as a limit on
 	 the number of characters to be fetched.  */
-      if (TYPE_NFIELDS (type) == 1
-	  && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_RANGE)
+      if (type->num_fields () == 1
+	  && type->field (0).type ()->code () == TYPE_CODE_RANGE)
 	{
 	  LONGEST low_bound, high_bound;
 
-	  get_discrete_bounds (TYPE_FIELD_TYPE (type, 0),
+	  get_discrete_bounds (type->field (0).type (),
 			       &low_bound, &high_bound);
 	  fetchlimit = high_bound - low_bound + 1;
 	}
       else
 	fetchlimit = UINT_MAX;
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  else if (type->code () == TYPE_CODE_PTR)
     fetchlimit = UINT_MAX;
   else
     /* We work only with arrays and pointers.  */
@@ -292,7 +294,7 @@ c_get_string (struct value *value, gdb::
      avoids running off the end of the value's contents.  */
   if ((VALUE_LVAL (value) == not_lval
        || VALUE_LVAL (value) == lval_internalvar
-       || TYPE_CODE (type) == TYPE_CODE_ARRAY)
+       || type->code () == TYPE_CODE_ARRAY)
       && fetchlimit != UINT_MAX
       && (*length < 0 || *length <= fetchlimit))
     {
@@ -303,14 +305,14 @@ c_get_string (struct value *value, gdb::
       if (*length >= 0)
 	i  = *length;
       else
- 	/* Otherwise, look for a null character.  */
- 	for (i = 0; i < fetchlimit; i++)
+	/* Otherwise, look for a null character.  */
+	for (i = 0; i < fetchlimit; i++)
 	  if (extract_unsigned_integer (contents + i * width,
 					width, byte_order) == 0)
- 	    break;
+	    break;
   
       /* I is now either a user-defined length, the number of non-null
- 	 characters, or FETCHLIMIT.  */
+	 characters, or FETCHLIMIT.  */
       *length = i * width;
       buffer->reset ((gdb_byte *) xmalloc (*length));
       memcpy (buffer->get (), contents, *length);
@@ -322,7 +324,7 @@ c_get_string (struct value *value, gdb::
 	 c_style_arrays is false, so we handle that specially
 	 here.  */
       CORE_ADDR addr;
-      if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+      if (type->code () == TYPE_CODE_ARRAY)
 	{
 	  if (VALUE_LVAL (value) != lval_memory)
 	    error (_("Attempt to take address of value "
@@ -629,13 +631,13 @@ evaluate_subexp_c (struct type *expect_t
 	/* If the caller expects an array of some integral type,
 	   satisfy them.  If something odder is expected, rely on the
 	   caller to cast.  */
-	if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_ARRAY)
+	if (expect_type && expect_type->code () == TYPE_CODE_ARRAY)
 	  {
 	    struct type *element_type
 	      = check_typedef (TYPE_TARGET_TYPE (expect_type));
 
-	    if (TYPE_CODE (element_type) == TYPE_CODE_INT
-		|| TYPE_CODE (element_type) == TYPE_CODE_CHAR)
+	    if (element_type->code () == TYPE_CODE_INT
+		|| element_type->code () == TYPE_CODE_CHAR)
 	      {
 		type = element_type;
 		satisfy_expected = 1;
@@ -696,8 +698,8 @@ evaluate_subexp_c (struct type *expect_t
 		LONGEST low_bound, high_bound;
 		int element_size = TYPE_LENGTH (type);
 
-		if (get_discrete_bounds (TYPE_INDEX_TYPE (expect_type),
-					 &low_bound, &high_bound) < 0)
+		if (!get_discrete_bounds (expect_type->index_type (),
+					  &low_bound, &high_bound))
 		  {
 		    low_bound = 0;
 		    high_bound = (TYPE_LENGTH (expect_type) / element_size) - 1;
@@ -725,30 +727,19 @@ evaluate_subexp_c (struct type *expect_t
   return evaluate_subexp_standard (expect_type, exp, pos, noside);
 }
 
-/* la_watch_location_expression for C.  */
-
-gdb::unique_xmalloc_ptr<char>
-c_watch_location_expression (struct type *type, CORE_ADDR addr)
-{
-  type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
-  std::string name = type_to_string (type);
-  return gdb::unique_xmalloc_ptr<char>
-    (xstrprintf ("* (%s *) %s", name.c_str (), core_addr_to_string (addr)));
-}
-
 /* See c-lang.h.  */
 
 bool
 c_is_string_type_p (struct type *type)
 {
   type = check_typedef (type);
-  while (TYPE_CODE (type) == TYPE_CODE_REF)
+  while (type->code () == TYPE_CODE_REF)
     {
       type = TYPE_TARGET_TYPE (type);
       type = check_typedef (type);
     }
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
       {
@@ -885,7 +876,9 @@ static const char *c_extensions[] =
   ".c", NULL
 };
 
-extern const struct language_defn c_language_defn =
+/* Constant data that describes the C language.  */
+
+extern const struct language_data c_language_data =
 {
   "c",				/* Language name */
   "C",
@@ -896,44 +889,61 @@ extern const struct language_defn c_lang
   macro_expansion_c,
   c_extensions,
   &exp_descriptor_c,
-  c_parse,
-  null_post_parser,
-  c_printchar,			/* Print a character constant */
-  c_printstr,			/* Function to print string constant */
-  c_emit_char,			/* Print a single char */
-  c_print_type,			/* Print a type using appropriate syntax */
-  c_print_typedef,		/* Print a typedef using appropriate syntax */
-  c_val_print,			/* Print a value using appropriate syntax */
-  c_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  NULL,				/* Language specific skip_trampoline */
   NULL,				/* name_of_this */
   true,				/* la_store_sym_names_in_linkage_form_p */
-  basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  NULL,				/* Language specific symbol demangler */
-  NULL,
-  NULL,				/* Language specific
-				   class_name_from_physname */
   c_op_print_tab,		/* expression operators for printing */
   1,				/* c-style arrays */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  c_language_arch_info,
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &c_varobj_ops,
-  c_get_compile_context,
-  c_compute_program,
-  c_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
 
+/* Class representing the C language.  */
+
+class c_language : public language_defn
+{
+public:
+  c_language ()
+    : language_defn (language_c, c_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    c_language_arch_info (gdbarch, lai);
+  }
+
+  /* See language.h.  */
+  compile_instance *get_compile_instance () const override
+  {
+    return c_get_compile_context ();
+  }
+
+  /* See language.h.  */
+  std::string compute_program (compile_instance *inst,
+			       const char *input,
+			       struct gdbarch *gdbarch,
+			       const struct block *expr_block,
+			       CORE_ADDR expr_pc) const override
+  {
+    return c_compute_program (inst, input, gdbarch, expr_block, expr_pc);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    c_print_type (type, varstring, stream, show, level, flags);
+  }
+};
+
+/* Single instance of the C language class.  */
+
+static c_language c_language_defn;
+
 enum cplus_primitive_types {
   cplus_primitive_type_int,
   cplus_primitive_type_long,
@@ -962,75 +972,14 @@ enum cplus_primitive_types {
   nr_cplus_primitive_types
 };
 
-static void
-cplus_language_arch_info (struct gdbarch *gdbarch,
-			  struct language_arch_info *lai)
-{
-  const struct builtin_type *builtin = builtin_type (gdbarch);
-
-  lai->string_char_type = builtin->builtin_char;
-  lai->primitive_type_vector
-    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_cplus_primitive_types + 1,
-			      struct type *);
-  lai->primitive_type_vector [cplus_primitive_type_int]
-    = builtin->builtin_int;
-  lai->primitive_type_vector [cplus_primitive_type_long]
-    = builtin->builtin_long;
-  lai->primitive_type_vector [cplus_primitive_type_short]
-    = builtin->builtin_short;
-  lai->primitive_type_vector [cplus_primitive_type_char]
-    = builtin->builtin_char;
-  lai->primitive_type_vector [cplus_primitive_type_float]
-    = builtin->builtin_float;
-  lai->primitive_type_vector [cplus_primitive_type_double]
-    = builtin->builtin_double;
-  lai->primitive_type_vector [cplus_primitive_type_void]
-    = builtin->builtin_void;
-  lai->primitive_type_vector [cplus_primitive_type_long_long]
-    = builtin->builtin_long_long;
-  lai->primitive_type_vector [cplus_primitive_type_signed_char]
-    = builtin->builtin_signed_char;
-  lai->primitive_type_vector [cplus_primitive_type_unsigned_char]
-    = builtin->builtin_unsigned_char;
-  lai->primitive_type_vector [cplus_primitive_type_unsigned_short]
-    = builtin->builtin_unsigned_short;
-  lai->primitive_type_vector [cplus_primitive_type_unsigned_int]
-    = builtin->builtin_unsigned_int;
-  lai->primitive_type_vector [cplus_primitive_type_unsigned_long]
-    = builtin->builtin_unsigned_long;
-  lai->primitive_type_vector [cplus_primitive_type_unsigned_long_long]
-    = builtin->builtin_unsigned_long_long;
-  lai->primitive_type_vector [cplus_primitive_type_long_double]
-    = builtin->builtin_long_double;
-  lai->primitive_type_vector [cplus_primitive_type_complex]
-    = builtin->builtin_complex;
-  lai->primitive_type_vector [cplus_primitive_type_double_complex]
-    = builtin->builtin_double_complex;
-  lai->primitive_type_vector [cplus_primitive_type_bool]
-    = builtin->builtin_bool;
-  lai->primitive_type_vector [cplus_primitive_type_decfloat]
-    = builtin->builtin_decfloat;
-  lai->primitive_type_vector [cplus_primitive_type_decdouble]
-    = builtin->builtin_decdouble;
-  lai->primitive_type_vector [cplus_primitive_type_declong]
-    = builtin->builtin_declong;
-  lai->primitive_type_vector [cplus_primitive_type_char16_t]
-    = builtin->builtin_char16;
-  lai->primitive_type_vector [cplus_primitive_type_char32_t]
-    = builtin->builtin_char32;
-  lai->primitive_type_vector [cplus_primitive_type_wchar_t]
-    = builtin->builtin_wchar;
-
-  lai->bool_type_symbol = "bool";
-  lai->bool_type_default = builtin->builtin_bool;
-}
-
 static const char *cplus_extensions[] =
 {
   ".C", ".cc", ".cp", ".cpp", ".cxx", ".c++", NULL
 };
 
-extern const struct language_defn cplus_language_defn =
+/* Constant data that describes the C++ language.  */
+
+extern const struct language_data cplus_language_data =
 {
   "c++",			/* Language name */
   "C++",
@@ -1041,50 +990,194 @@ extern const struct language_defn cplus_
   macro_expansion_c,
   cplus_extensions,
   &exp_descriptor_c,
-  c_parse,
-  null_post_parser,
-  c_printchar,			/* Print a character constant */
-  c_printstr,			/* Function to print string constant */
-  c_emit_char,			/* Print a single char */
-  c_print_type,			/* Print a type using appropriate syntax */
-  c_print_typedef,		/* Print a typedef using appropriate syntax */
-  c_val_print,			/* Print a value using appropriate syntax */
-  c_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  cplus_skip_trampoline,	/* Language specific skip_trampoline */
   "this",                       /* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
-  cp_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  cp_lookup_transparent_type,   /* lookup_transparent_type */
-  gdb_demangle,			/* Language specific symbol demangler */
-  gdb_sniff_from_mangled_name,
-  cp_class_name_from_physname,  /* Language specific
-				   class_name_from_physname */
   c_op_print_tab,		/* expression operators for printing */
   1,				/* c-style arrays */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  cplus_language_arch_info,
-  default_print_array_index,
-  cp_pass_by_reference,
-  c_watch_location_expression,
-  cp_get_symbol_name_matcher,
-  iterate_over_symbols,
-  cp_search_name_hash,
   &cplus_varobj_ops,
-  cplus_get_compile_context,
-  cplus_compute_program,
-  c_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
 
+/* A class for the C++ language.  */
+
+class cplus_language : public language_defn
+{
+public:
+  cplus_language ()
+    : language_defn (language_cplus, cplus_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+
+  struct language_pass_by_ref_info pass_by_reference_info
+	(struct type *type) const override
+  {
+    return cp_pass_by_reference (type);
+  }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    const struct builtin_type *builtin = builtin_type (gdbarch);
+
+    lai->string_char_type = builtin->builtin_char;
+    lai->primitive_type_vector
+      = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_cplus_primitive_types + 1,
+				struct type *);
+    lai->primitive_type_vector [cplus_primitive_type_int]
+      = builtin->builtin_int;
+    lai->primitive_type_vector [cplus_primitive_type_long]
+      = builtin->builtin_long;
+    lai->primitive_type_vector [cplus_primitive_type_short]
+      = builtin->builtin_short;
+    lai->primitive_type_vector [cplus_primitive_type_char]
+      = builtin->builtin_char;
+    lai->primitive_type_vector [cplus_primitive_type_float]
+      = builtin->builtin_float;
+    lai->primitive_type_vector [cplus_primitive_type_double]
+      = builtin->builtin_double;
+    lai->primitive_type_vector [cplus_primitive_type_void]
+      = builtin->builtin_void;
+    lai->primitive_type_vector [cplus_primitive_type_long_long]
+      = builtin->builtin_long_long;
+    lai->primitive_type_vector [cplus_primitive_type_signed_char]
+      = builtin->builtin_signed_char;
+    lai->primitive_type_vector [cplus_primitive_type_unsigned_char]
+      = builtin->builtin_unsigned_char;
+    lai->primitive_type_vector [cplus_primitive_type_unsigned_short]
+      = builtin->builtin_unsigned_short;
+    lai->primitive_type_vector [cplus_primitive_type_unsigned_int]
+      = builtin->builtin_unsigned_int;
+    lai->primitive_type_vector [cplus_primitive_type_unsigned_long]
+      = builtin->builtin_unsigned_long;
+    lai->primitive_type_vector [cplus_primitive_type_unsigned_long_long]
+      = builtin->builtin_unsigned_long_long;
+    lai->primitive_type_vector [cplus_primitive_type_long_double]
+      = builtin->builtin_long_double;
+    lai->primitive_type_vector [cplus_primitive_type_complex]
+      = builtin->builtin_complex;
+    lai->primitive_type_vector [cplus_primitive_type_double_complex]
+      = builtin->builtin_double_complex;
+    lai->primitive_type_vector [cplus_primitive_type_bool]
+      = builtin->builtin_bool;
+    lai->primitive_type_vector [cplus_primitive_type_decfloat]
+      = builtin->builtin_decfloat;
+    lai->primitive_type_vector [cplus_primitive_type_decdouble]
+      = builtin->builtin_decdouble;
+    lai->primitive_type_vector [cplus_primitive_type_declong]
+      = builtin->builtin_declong;
+    lai->primitive_type_vector [cplus_primitive_type_char16_t]
+      = builtin->builtin_char16;
+    lai->primitive_type_vector [cplus_primitive_type_char32_t]
+      = builtin->builtin_char32;
+    lai->primitive_type_vector [cplus_primitive_type_wchar_t]
+      = builtin->builtin_wchar;
+
+    lai->bool_type_symbol = "bool";
+    lai->bool_type_default = builtin->builtin_bool;
+  }
+
+  /* See language.h.  */
+  struct type *lookup_transparent_type (const char *name) const override
+  {
+    return cp_lookup_transparent_type (name);
+  }
+
+  /* See language.h.  */
+  compile_instance *get_compile_instance () const override
+  {
+    return cplus_get_compile_context ();
+  }
+
+  /* See language.h.  */
+  std::string compute_program (compile_instance *inst,
+			       const char *input,
+			       struct gdbarch *gdbarch,
+			       const struct block *expr_block,
+			       CORE_ADDR expr_pc) const override
+  {
+    return cplus_compute_program (inst, input, gdbarch, expr_block, expr_pc);
+  }
+
+  /* See language.h.  */
+  unsigned int search_name_hash (const char *name) const override
+  {
+    return cp_search_name_hash (name);
+  }
+
+  /* See language.h.  */
+  bool sniff_from_mangled_name (const char *mangled,
+				char **demangled) const override
+  {
+    *demangled = gdb_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
+    return *demangled != NULL;
+  }
+
+  /* See language.h.  */
+
+  char *demangle (const char *mangled, int options) const override
+  {
+    return gdb_demangle (mangled, options);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    c_print_type (type, varstring, stream, show, level, flags);
+  }
+
+  /* See language.h.  */
+
+  CORE_ADDR skip_trampoline (struct frame_info *fi,
+			     CORE_ADDR pc) const override
+  {
+    return cplus_skip_trampoline (fi, pc);
+  }
+
+  /* See language.h.  */
+
+  char *class_name_from_physname (const char *physname) const override
+  {
+    return cp_class_name_from_physname (physname);
+  }
+
+  /* See language.h.  */
+
+  struct block_symbol lookup_symbol_nonlocal
+	(const char *name, const struct block *block,
+	 const domain_enum domain) const override
+  {
+    return cp_lookup_symbol_nonlocal (this, name, block, domain);
+  }
+
+protected:
+
+  /* See language.h.  */
+
+  symbol_name_matcher_ftype *get_symbol_name_matcher_inner
+	(const lookup_name_info &lookup_name) const override
+  {
+    return cp_get_symbol_name_matcher (lookup_name);
+  }
+};
+
+/* The single instance of the C++ language class.  */
+
+static cplus_language cplus_language_defn;
+
 static const char *asm_extensions[] =
 {
   ".s", ".sx", ".S", NULL
 };
 
-extern const struct language_defn asm_language_defn =
+/* Constant data that describes the ASM language.  */
+
+extern const struct language_data asm_language_data =
 {
   "asm",			/* Language name */
   "assembly",
@@ -1095,50 +1188,52 @@ extern const struct language_defn asm_la
   macro_expansion_c,
   asm_extensions,
   &exp_descriptor_c,
-  c_parse,
-  null_post_parser,
-  c_printchar,			/* Print a character constant */
-  c_printstr,			/* Function to print string constant */
-  c_emit_char,			/* Print a single char */
-  c_print_type,			/* Print a type using appropriate syntax */
-  c_print_typedef,		/* Print a typedef using appropriate syntax */
-  c_val_print,			/* Print a value using appropriate syntax */
-  c_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  NULL,				/* Language specific skip_trampoline */
   NULL,				/* name_of_this */
   true,				/* la_store_sym_names_in_linkage_form_p */
-  basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  NULL,				/* Language specific symbol demangler */
-  NULL,
-  NULL,				/* Language specific
-				   class_name_from_physname */
   c_op_print_tab,		/* expression operators for printing */
   1,				/* c-style arrays */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  c_language_arch_info, 	/* FIXME: la_language_arch_info.  */
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  c_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
 
+/* A class for the ASM language.  */
+
+class asm_language : public language_defn
+{
+public:
+  asm_language ()
+    : language_defn (language_asm, asm_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.
+
+     FIXME: Should this have its own arch info method?  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    c_language_arch_info (gdbarch, lai);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    c_print_type (type, varstring, stream, show, level, flags);
+  }
+};
+
+/* The single instance of the ASM language class.  */
+static asm_language asm_language_defn;
+
 /* The following language_defn does not represent a real language.
    It just provides a minimal support a-la-C that should allow users
    to do some simple operations when debugging applications that use
    a language currently not supported by GDB.  */
 
-extern const struct language_defn minimal_language_defn =
+extern const struct language_data minimal_language_data =
 {
   "minimal",			/* Language name */
   "Minimal",
@@ -1149,40 +1244,40 @@ extern const struct language_defn minima
   macro_expansion_c,
   NULL,
   &exp_descriptor_c,
-  c_parse,
-  null_post_parser,
-  c_printchar,			/* Print a character constant */
-  c_printstr,			/* Function to print string constant */
-  c_emit_char,			/* Print a single char */
-  c_print_type,			/* Print a type using appropriate syntax */
-  c_print_typedef,		/* Print a typedef using appropriate syntax */
-  c_val_print,			/* Print a value using appropriate syntax */
-  c_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  NULL,				/* Language specific skip_trampoline */
   NULL,				/* name_of_this */
   true,				/* la_store_sym_names_in_linkage_form_p */
-  basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  NULL,				/* Language specific symbol demangler */
-  NULL,
-  NULL,				/* Language specific
-				   class_name_from_physname */
   c_op_print_tab,		/* expression operators for printing */
   1,				/* c-style arrays */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  c_language_arch_info,
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  c_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
+
+/* A class for the minimal language.  */
+
+class minimal_language : public language_defn
+{
+public:
+  minimal_language ()
+    : language_defn (language_minimal, minimal_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    c_language_arch_info (gdbarch, lai);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    c_print_type (type, varstring, stream, show, level, flags);
+  }
+};
+
+/* The single instance of the minimal language class.  */
+static minimal_language minimal_language_defn;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-lang.h ./gdb/c-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-lang.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/c-lang.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* C language support definitions for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -81,11 +81,10 @@ extern void c_print_typedef (struct type
 			     struct symbol *,
 			     struct ui_file *);
 
-extern void c_val_print (struct type *,
-			 int, CORE_ADDR,
-			 struct ui_file *, int,
-			 struct value *,
-			 const struct value_print_options *);
+/* Implement la_value_print_inner for the C family of languages.  */
+
+extern void c_value_print_inner (struct value *, struct ui_file *, int,
+				 const struct value_print_options *);
 
 extern void c_value_print (struct value *, struct ui_file *,
 			   const struct value_print_options *);
@@ -117,9 +116,6 @@ extern void c_emit_char (int c, struct t
 
 extern const struct op_print c_op_print_tab[];
 
-extern gdb::unique_xmalloc_ptr<char> c_watch_location_expression
-     (struct type *type, CORE_ADDR addr);
-
 /* These are in c-typeprint.c: */
 
 extern void c_type_print_base (struct type *, struct ui_file *,
@@ -130,20 +126,11 @@ extern void c_type_print_base (struct ty
 extern void cp_print_class_member (const gdb_byte *, struct type *,
 				   struct ui_file *, const char *);
 
-extern void cp_print_value_fields (struct type *, struct type *,
-				   LONGEST, CORE_ADDR,
+extern void cp_print_value_fields (struct value *,
 				   struct ui_file *, int,
-				   struct value *,
 				   const struct value_print_options *,
 				   struct type **, int);
 
-extern void cp_print_value_fields_rtti (struct type *,
-					const gdb_byte *, LONGEST, CORE_ADDR,
-					struct ui_file *, int,
-					struct value *,
-					const struct value_print_options *,
-					struct type **, int);
-
 /* gcc-2.6 or later (when using -fvtable-thunks)
    emits a unique named type for a vtable entry.
    Some gdb code depends on that specific name.  */
@@ -167,7 +154,7 @@ extern int c_textual_element_type (struc
    compiler is owned by the caller and must be freed using the destroy
    method.  This function never returns NULL, but rather throws an
    exception on failure.  This is suitable for use as the
-   la_get_compile_instance language method.  */
+   language_defn::get_compile_instance method.  */
 
 extern compile_instance *c_get_compile_context (void);
 
@@ -175,14 +162,14 @@ extern compile_instance *c_get_compile_c
    compiler is owned by the caller and must be freed using the destroy
    method.  This function never returns NULL, but rather throws an
    exception on failure.  This is suitable for use as the
-   la_get_compile_instance language method.  */
+   language_defn::get_compile_instance method.  */
 
 extern compile_instance *cplus_get_compile_context ();
 
 /* This takes the user-supplied text and returns a new bit of code to
    compile.
 
-   This is used as the la_compute_program language method; see that
+   This is used as the compute_program language method; see that
    for a description of the arguments.  */
 
 extern std::string c_compute_program (compile_instance *inst,
@@ -193,7 +180,7 @@ extern std::string c_compute_program (co
 
 /* This takes the user-supplied text and returns a new bit of code to compile.
 
-   This is used as the la_compute_program language method; see that
+   This is used as the compute_program language method; see that
    for a description of the arguments.  */
 
 extern std::string cplus_compute_program (compile_instance *inst,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-cmds.c ./gdb/cli/cli-cmds.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-cmds.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-cmds.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB CLI commands.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -50,6 +50,7 @@
 #include "cli/cli-cmds.h"
 #include "cli/cli-style.h"
 #include "cli/cli-utils.h"
+#include "cli/cli-style.h"
 
 #include "extension.h"
 #include "gdbsupport/pathstuff.h"
@@ -191,26 +192,17 @@ error_no_arg (const char *why)
   error (_("Argument required (%s)."), why);
 }
 
-/* The "info" command is defined as a prefix, with allow_unknown = 0.
-   Therefore, its own definition is called only for "info" with no
-   args.  */
+/* This implements the "info" prefix command.  Normally such commands
+   are automatically handled by add_basic_prefix_cmd, but in this case
+   a separate command is used so that it can be hooked into by
+   gdb-gdb.gdb.  */
 
 static void
 info_command (const char *arg, int from_tty)
 {
-  printf_unfiltered (_("\"info\" must be followed by "
-		       "the name of an info command.\n"));
   help_list (infolist, "info ", all_commands, gdb_stdout);
 }
 
-/* The "show" command with no arguments shows all the settings.  */
-
-static void
-show_command (const char *arg, int from_tty)
-{
-  cmd_show_list (showlist, from_tty, "");
-}
-
 /* See cli/cli-cmds.h.  */
 
 void
@@ -230,6 +222,7 @@ with_command_1 (const char *set_cmd_pref
     nested_cmd = repeat_previous ();
 
   cmd_list_element *set_cmd = lookup_cmd (&args, setlist, set_cmd_prefix,
+					  nullptr,
 					  /*allow_unknown=*/ 0,
 					  /*ignore_help_classes=*/ 1);
   gdb_assert (set_cmd != nullptr);
@@ -324,7 +317,54 @@ with_command_completer (struct cmd_list_
   with_command_completer_1 ("set ", tracker,  text);
 }
 
-
+/* Look up the contents of TEXT as a command usable with default args.
+   Throws an error if no such command is found.
+   Return the found command and advances TEXT past the found command.
+   If the found command is a postfix command, set *PREFIX_CMD to its
+   prefix command.  */
+
+static struct cmd_list_element *
+lookup_cmd_for_default_args (const char **text,
+			     struct cmd_list_element **prefix_cmd)
+{
+  const char *orig_text = *text;
+  struct cmd_list_element *lcmd;
+
+  if (*text == nullptr || skip_spaces (*text) == nullptr)
+    error (_("ALIAS missing."));
+
+  /* We first use lookup_cmd to verify TEXT unambiguously identifies
+     a command.  */
+  lcmd = lookup_cmd (text, cmdlist, "", NULL,
+		     /*allow_unknown=*/ 0,
+		     /*ignore_help_classes=*/ 1);
+
+  /* Note that we accept default args for prefix commands,
+     as a prefix command can also be a valid usable
+     command accepting some arguments.
+     For example, "thread apply" applies a command to a
+     list of thread ids, and is also the prefix command for
+     thread apply all.  */
+
+  /* We have an unambiguous command for which default args
+     can be specified.  What remains after having found LCMD
+     is either spaces, or the default args character.  */
+
+  /* We then use lookup_cmd_composition to detect if the user
+     has specified an alias, and find the possible prefix_cmd
+     of cmd.  */
+  struct cmd_list_element *alias, *cmd;
+  lookup_cmd_composition
+    (std::string (orig_text, *text - orig_text).c_str (),
+     &alias, prefix_cmd, &cmd);
+  gdb_assert (cmd != nullptr);
+  gdb_assert (cmd == lcmd);
+  if (alias != nullptr)
+    cmd = alias;
+
+  return cmd;
+}
+
 /* Provide documentation on command or list given by COMMAND.  FROM_TTY
    is ignored.  */
 
@@ -800,6 +840,18 @@ exit_status_set_internal_vars (int exit_
   clear_internalvar (var_signal);
   if (WIFEXITED (exit_status))
     set_internalvar_integer (var_code, WEXITSTATUS (exit_status));
+#ifdef __MINGW32__
+  else if (WIFSIGNALED (exit_status) && WTERMSIG (exit_status) == -1)
+    {
+      /* The -1 condition can happen on MinGW, if we don't recognize
+	 the fatal exception code encoded in the exit status; see
+	 gdbsupport/gdb_wait.c.  We don't want to lose information in
+	 the exit status in that case.  Record it as a normal exit
+	 with the full exit status, including the higher 0xC0000000
+	 bits.  */
+      set_internalvar_integer (var_code, exit_status);
+    }
+#endif
   else if (WIFSIGNALED (exit_status))
     set_internalvar_integer (var_signal, WTERMSIG (exit_status));
   else
@@ -827,8 +879,8 @@ shell_escape (const char *arg, int from_
   /* Make sure to return to the directory GDB thinks it is, in case
      the shell command we just ran changed it.  */
   chdir (current_directory);
-  exit_status_set_internal_vars (rc);
 #endif
+  exit_status_set_internal_vars (rc);
 #else /* Can fork.  */
   int status, pid;
 
@@ -933,7 +985,7 @@ edit_command (const char *arg, int from_
 	    error (_("No source file for address %s."),
 		   paddress (get_current_arch (), sal.pc));
 
-	  gdbarch = get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+	  gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
           sym = find_pc_function (sal.pc);
           if (sym)
 	    printf_filtered ("%s is in %s (%s:%d).\n",
@@ -1265,7 +1317,7 @@ list_command (const char *arg, int from_
 	error (_("No source file for address %s."),
 	       paddress (get_current_arch (), sal.pc));
 
-      gdbarch = get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+      gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
       sym = find_pc_function (sal.pc);
       if (sym)
 	printf_filtered ("%s is in %s (%s:%d).\n",
@@ -1338,7 +1390,9 @@ print_disassembly (struct gdbarch *gdbar
 		   gdb_disassembly_flags flags)
 {
 #if defined(TUI)
-  if (!tui_is_window_visible (DISASSEM_WIN))
+  if (tui_is_window_visible (DISASSEM_WIN))
+    tui_show_assembly (gdbarch, low);
+  else
 #endif
     {
       printf_filtered ("Dump of assembler code ");
@@ -1368,12 +1422,6 @@ print_disassembly (struct gdbarch *gdbar
 	}
       printf_filtered ("End of assembler dump.\n");
     }
-#if defined(TUI)
-  else
-    {
-      tui_show_assembly (gdbarch, low);
-    }
-#endif
 }
 
 /* Subroutine of disassemble_command to simplify it.
@@ -1434,6 +1482,7 @@ disassemble_command (const char *arg, in
 {
   struct gdbarch *gdbarch = get_current_arch ();
   CORE_ADDR low, high;
+  const general_symbol_info *symbol = nullptr;
   const char *name;
   CORE_ADDR pc;
   gdb_disassembly_flags flags;
@@ -1489,8 +1538,14 @@ disassemble_command (const char *arg, in
   if (p[0] == '\0')
     {
       /* One argument.  */
-      if (find_pc_partial_function (pc, &name, &low, &high, &block) == 0)
+      if (!find_pc_partial_function_sym (pc, &symbol, &low, &high, &block))
 	error (_("No function contains specified address."));
+
+      if (asm_demangle)
+	name = symbol->print_name ();
+      else
+	name = symbol->linkage_name ();
+
 #if defined(TUI)
       /* NOTE: cagney/2003-02-13 The `tui_active' was previously
 	 `tui_version'.  */
@@ -1542,7 +1597,7 @@ show_user (const char *args, int from_tt
     {
       const char *comname = args;
 
-      c = lookup_cmd (&comname, cmdlist, "", 0, 1);
+      c = lookup_cmd (&comname, cmdlist, "", NULL, 0, 1);
       if (!cli_user_command_p (c))
 	error (_("Not a user command."));
       show_user_1 (c, "", args, gdb_stdout);
@@ -1574,6 +1629,71 @@ apropos_command (const char *arg, int fr
   apropos_cmd (gdb_stdout, cmdlist, verbose, pattern, "");
 }
 
+/* The options for the "alias" command.  */
+
+struct alias_opts
+{
+  /* For "-a".  */
+  bool abbrev_flag = false;
+};
+
+static const gdb::option::option_def alias_option_defs[] = {
+
+  gdb::option::flag_option_def<alias_opts> {
+    "a",
+    [] (alias_opts *opts) { return &opts->abbrev_flag; },
+    N_("Specify that ALIAS is an abbreviation of COMMAND.\n\
+Abbreviations are not used in command completion."),
+  },
+
+};
+
+/* Create an option_def_group for the "alias" options, with
+   A_OPTS as context.  */
+
+static gdb::option::option_def_group
+make_alias_options_def_group (alias_opts *a_opts)
+{
+  return {{alias_option_defs}, a_opts};
+}
+
+/* Completer for the "alias_command".  */
+
+static void
+alias_command_completer (struct cmd_list_element *ignore,
+			 completion_tracker &tracker,
+			 const char *text, const char *word)
+{
+  const auto grp = make_alias_options_def_group (nullptr);
+
+  tracker.set_use_custom_word_point (true);
+
+  if (gdb::option::complete_options
+      (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, grp))
+    return;
+
+  const char *delim = strchr (text, '=');
+
+  /* If we're past the "=" delimiter, complete the
+     "alias ALIAS = COMMAND [DEFAULT-ARGS...]" as if the user is
+     typing COMMAND DEFAULT-ARGS...  */
+  if (delim != text
+      && delim != nullptr
+      && isspace (delim[-1])
+      && (isspace (delim[1]) || delim[1] == '\0'))
+    {
+      std::string new_text = std::string (delim + 1);
+
+      tracker.advance_custom_word_point_by (delim + 1 - text);
+      complete_nested_command_line (tracker, new_text.c_str ());
+      return;
+    }
+
+  /* We're not yet past the "=" delimiter.  Complete a command, as
+     the user might type an alias following a prefix command.  */
+  complete_nested_command_line (tracker, text);
+}
+
 /* Subroutine of alias_command to simplify it.
    Return the first N elements of ARGV flattened back to a string
    with a space separating each element.
@@ -1601,24 +1721,29 @@ argv_to_string (char **argv, int n)
 }
 
 /* Subroutine of alias_command to simplify it.
-   Return true if COMMAND exists, unambiguously.  Otherwise false.  */
+   Verifies that COMMAND can have an alias:
+      COMMAND must exist.
+      COMMAND must not have default args.
+   This last condition is to avoid the following:
+     alias aaa = backtrace -full
+     alias bbb = aaa -past-main
+   as (at least currently), alias default args are not cumulative
+   and the user would expect bbb to execute 'backtrace -full -past-main'
+   while it will execute 'backtrace -past-main'.  */
 
-static bool
-valid_command_p (const char *command)
+static void
+validate_aliased_command (const char *command)
 {
   struct cmd_list_element *c;
+  std::string default_args;
 
-  c = lookup_cmd_1 (& command, cmdlist, NULL, 1);
+  c = lookup_cmd_1 (& command, cmdlist, NULL, &default_args, 1);
 
   if (c == NULL || c == (struct cmd_list_element *) -1)
-    return false;
+    error (_("Invalid command to alias to: %s"), command);
 
-  /* This is the slightly tricky part.
-     lookup_cmd_1 will return a pointer to the last part of COMMAND
-     to match, leaving COMMAND pointing at the remainder.  */
-  while (*command == ' ' || *command == '\t')
-    ++command;
-  return *command == '\0';
+  if (!default_args.empty ())
+    error (_("Cannot define an alias of an alias that has default args"));
 }
 
 /* Called when "alias" was incorrectly used.  */
@@ -1626,7 +1751,7 @@ valid_command_p (const char *command)
 static void
 alias_usage_error (void)
 {
-  error (_("Usage: alias [-a] [--] ALIAS = COMMAND"));
+  error (_("Usage: alias [-a] [--] ALIAS = COMMAND [DEFAULT-ARGS...]"));
 }
 
 /* Make an alias of an existing command.  */
@@ -1634,8 +1759,13 @@ alias_usage_error (void)
 static void
 alias_command (const char *args, int from_tty)
 {
+  alias_opts a_opts;
+
+  auto grp = make_alias_options_def_group (&a_opts);
+  gdb::option::process_options
+    (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, grp);
+
   int i, alias_argc, command_argc;
-  int abbrev_flag = 0;
   const char *equals;
   const char *alias, *command;
 
@@ -1646,24 +1776,18 @@ alias_command (const char *args, int fro
   std::string args2 (args, equals - args);
 
   gdb_argv built_alias_argv (args2.c_str ());
-  gdb_argv command_argv (equals + 1);
+
+  const char *default_args = equals + 1;
+  struct cmd_list_element *c_command_prefix;
+
+  lookup_cmd_for_default_args (&default_args, &c_command_prefix);
+  std::string command_argv_str (equals + 1,
+				default_args == nullptr
+				? strlen (equals + 1)
+				: default_args - equals - 1);
+  gdb_argv command_argv (command_argv_str.c_str ());
 
   char **alias_argv = built_alias_argv.get ();
-  while (alias_argv[0] != NULL)
-    {
-      if (strcmp (alias_argv[0], "-a") == 0)
-	{
-	  ++alias_argv;
-	  abbrev_flag = 1;
-	}
-      else if (strcmp (alias_argv[0], "--") == 0)
-	{
-	  ++alias_argv;
-	  break;
-	}
-      else
-	break;
-    }
 
   if (alias_argv[0] == NULL || command_argv[0] == NULL
       || *alias_argv[0] == '\0' || *command_argv[0] == '\0')
@@ -1683,20 +1807,42 @@ alias_command (const char *args, int fro
   alias_argc = countargv (alias_argv);
   command_argc = command_argv.count ();
 
-  /* COMMAND must exist.
+  /* COMMAND must exist, and cannot have default args.
      Reconstruct the command to remove any extraneous spaces,
      for better error messages.  */
   std::string command_string (argv_to_string (command_argv.get (),
 					      command_argc));
   command = command_string.c_str ();
-  if (! valid_command_p (command))
-    error (_("Invalid command to alias to: %s"), command);
+  validate_aliased_command (command);
 
   /* ALIAS must not exist.  */
   std::string alias_string (argv_to_string (alias_argv, alias_argc));
   alias = alias_string.c_str ();
-  if (valid_command_p (alias))
-    error (_("Alias already exists: %s"), alias);
+  {
+    cmd_list_element *alias_cmd, *prefix_cmd, *cmd;
+
+    if (lookup_cmd_composition (alias, &alias_cmd, &prefix_cmd, &cmd))
+      {
+	const char *alias_name = alias_argv[alias_argc-1];
+
+	/* If we found an existing ALIAS_CMD, check that the prefix differ or
+	   the name differ.  */
+
+	if (alias_cmd != nullptr
+	    && alias_cmd->prefix == prefix_cmd
+	    && strcmp (alias_name, alias_cmd->name) == 0)
+	  error (_("Alias already exists: %s"), alias);
+
+	/* Check ALIAS differs from the found CMD.  */
+
+	if (cmd->prefix == prefix_cmd
+	    && strcmp (alias_name, cmd->name) == 0)
+	  error (_("Alias %s is the name of an existing command"), alias);
+      }
+  }
+
+
+  struct cmd_list_element *alias_cmd;
 
   /* If ALIAS is one word, it is an alias for the entire COMMAND.
      Example: alias spe = set print elements
@@ -1710,8 +1856,8 @@ alias_command (const char *args, int fro
   if (alias_argc == 1)
     {
       /* add_cmd requires *we* allocate space for name, hence the xstrdup.  */
-      add_com_alias (xstrdup (alias_argv[0]), command, class_alias,
-		     abbrev_flag);
+      alias_cmd = add_com_alias (xstrdup (alias_argv[0]), command, class_alias,
+				 a_opts.abbrev_flag);
     }
   else
     {
@@ -1731,19 +1877,29 @@ alias_command (const char *args, int fro
       alias_prefix = alias_prefix_string.c_str ();
       command_prefix = command_prefix_string.c_str ();
 
-      c_command = lookup_cmd_1 (& command_prefix, cmdlist, NULL, 1);
+      c_command = lookup_cmd_1 (& command_prefix, cmdlist, NULL, NULL, 1);
       /* We've already tried to look up COMMAND.  */
       gdb_assert (c_command != NULL
 		  && c_command != (struct cmd_list_element *) -1);
       gdb_assert (c_command->prefixlist != NULL);
-      c_alias = lookup_cmd_1 (& alias_prefix, cmdlist, NULL, 1);
+      c_alias = lookup_cmd_1 (& alias_prefix, cmdlist, NULL, NULL, 1);
       if (c_alias != c_command)
 	error (_("ALIAS and COMMAND prefixes do not match."));
 
       /* add_cmd requires *we* allocate space for name, hence the xstrdup.  */
-      add_alias_cmd (xstrdup (alias_argv[alias_argc - 1]),
-		     command_argv[command_argc - 1],
-		     class_alias, abbrev_flag, c_command->prefixlist);
+      alias_cmd = add_alias_cmd (xstrdup (alias_argv[alias_argc - 1]),
+				 command_argv[command_argc - 1],
+				 class_alias, a_opts.abbrev_flag,
+				 c_command->prefixlist);
+    }
+
+  gdb_assert (alias_cmd != nullptr);
+  gdb_assert (alias_cmd->default_args.empty ());
+  if (default_args != nullptr)
+    {
+      default_args = skip_spaces (default_args);
+
+      alias_cmd->default_args = default_args;
     }
 }
 
@@ -1844,20 +2000,6 @@ filter_sals (std::vector<symtab_and_line
   sals.erase (from, sals.end ());
 }
 
-static void
-set_debug (const char *arg, int from_tty)
-{
-  printf_unfiltered (_("\"set debug\" must be followed by "
-		       "the name of a debug subcommand.\n"));
-  help_list (setdebuglist, "set debug ", all_commands, gdb_stdout);
-}
-
-static void
-show_debug (const char *args, int from_tty)
-{
-  cmd_show_list (showdebuglist, from_tty, "");
-}
-
 void
 init_cmd_lists (void)
 {
@@ -1927,14 +2069,14 @@ setting_cmd (const char *fnname, struct
 
   struct type *type0 = check_typedef (value_type (argv[0]));
 
-  if (TYPE_CODE (type0) != TYPE_CODE_ARRAY
-      && TYPE_CODE (type0) != TYPE_CODE_STRING)
+  if (type0->code () != TYPE_CODE_ARRAY
+      && type0->code () != TYPE_CODE_STRING)
     error (_("First argument of %s must be a string."), fnname);
 
   const char *a0 = (const char *) value_contents (argv[0]);
-  cmd_list_element *cmd = lookup_cmd (&a0, showlist, "", -1, 0);
+  cmd_list_element *cmd = lookup_cmd (&a0, showlist, "", NULL, -1, 0);
 
-  if (cmd == nullptr || cmd_type (cmd) != show_cmd)
+  if (cmd == nullptr || cmd->type != show_cmd)
     error (_("First argument of %s must be a "
 	     "valid setting of the 'show' command."), fnname);
 
@@ -2105,8 +2247,9 @@ gdb_maint_setting_str_internal_fn (struc
 				 gdbarch);
 }
 
+void _initialize_cli_cmds ();
 void
-_initialize_cli_cmds (void)
+_initialize_cli_cmds ()
 {
   struct cmd_list_element *c;
 
@@ -2121,7 +2264,7 @@ well documented as user commands."),
 	   &cmdlist);
   add_cmd ("obscure", class_obscure, _("Obscure features."), &cmdlist);
   add_cmd ("aliases", class_alias,
-	   _("Aliases of other commands."), &cmdlist);
+	   _("User-defined aliases of other commands."), &cmdlist);
   add_cmd ("user-defined", class_user, _("\
 User-defined commands.\n\
 The commands in this class are those defined by the user.\n\
@@ -2143,6 +2286,12 @@ Variable lookups are done with respect t
 When the program being debugged stops, gdb selects the innermost frame.\n\
 The commands below can be used to select other frames by number or address."),
 	   &cmdlist);
+#ifdef TUI
+  add_cmd ("text-user-interface", class_tui,
+	   _("TUI is the GDB text based interface.\n\
+In TUI mode, GDB can display several text windows showing\n\
+the source file, the processor registers, the program disassembly, ..."), &cmdlist);
+#endif
   add_cmd ("running", class_run, _("Running the program."), &cmdlist);
 
   /* Define general commands.  */
@@ -2199,12 +2348,12 @@ Show verbosity."), NULL,
 			   show_info_verbose,
 			   &setlist, &showlist);
 
-  add_prefix_cmd ("history", class_support, set_history,
-		  _("Generic command for setting command history parameters."),
-		  &sethistlist, "set history ", 0, &setlist);
-  add_prefix_cmd ("history", class_support, show_history,
-		  _("Generic command for showing command history parameters."),
-		  &showhistlist, "show history ", 0, &showlist);
+  add_basic_prefix_cmd ("history", class_support, _("\
+Generic command for setting command history parameters."),
+			&sethistlist, "set history ", 0, &setlist);
+  add_show_prefix_cmd ("history", class_support, _("\
+Generic command for showing command history parameters."),
+		       &showhistlist, "show history ", 0, &showlist);
 
   add_setshow_boolean_cmd ("expansion", no_class, &history_expansion_p, _("\
 Set history expansion on command input."), _("\
@@ -2223,11 +2372,11 @@ Generic command for showing things about
   add_com ("complete", class_obscure, complete_command,
 	   _("List the completions for the rest of the line as a command."));
 
-  add_prefix_cmd ("show", class_info, show_command, _("\
+  c = add_show_prefix_cmd ("show", class_info, _("\
 Generic command for showing things about the debugger."),
-		  &showlist, "show ", 0, &cmdlist);
+			   &showlist, "show ", 0, &cmdlist);
   /* Another way to get at the same thing.  */
-  add_info ("set", show_command, _("Show all GDB settings."));
+  add_alias_cmd ("set", c, class_info, 0, &infolist);
 
   c = add_com ("with", class_vars, with_command, _("\
 Temporarily set SETTING to VALUE, run COMMAND, and restore SETTING.\n\
@@ -2315,13 +2464,13 @@ from the target."),
 				       show_remote_timeout,
 				       &setlist, &showlist);
 
-  add_prefix_cmd ("debug", no_class, set_debug,
-		  _("Generic command for setting gdb debugging flags."),
-		  &setdebuglist, "set debug ", 0, &setlist);
-
-  add_prefix_cmd ("debug", no_class, show_debug,
-		  _("Generic command for showing gdb debugging flags."),
-		  &showdebuglist, "show debug ", 0, &showlist);
+  add_basic_prefix_cmd ("debug", no_class,
+			_("Generic command for setting gdb debugging flags."),
+			&setdebuglist, "set debug ", 0, &setlist);
+
+  add_show_prefix_cmd ("debug", no_class,
+		       _("Generic command for showing gdb debugging flags."),
+		       &showdebuglist, "show debug ", 0, &showlist);
 
   c = add_com ("shell", class_support, shell_command, _("\
 Execute the rest of the line as a shell command.\n\
@@ -2386,8 +2535,13 @@ can be shown using \"show listsize\"."))
 
   c = add_com ("disassemble", class_vars, disassemble_command, _("\
 Disassemble a specified section of memory.\n\
+Usage: disassemble[/m|/r|/s] START [, END]\n\
 Default is the function surrounding the pc of the selected frame.\n\
 \n\
+With a /s modifier, source lines are included (if available).\n\
+In this mode, the output is displayed in PC address order, and\n\
+file names and contents for all relevant source files are displayed.\n\
+\n\
 With a /m modifier, source lines are included (if available).\n\
 This view is \"source centric\": the output is in source line order,\n\
 regardless of any optimization that is present.  Only the main source file\n\
@@ -2395,11 +2549,6 @@ is displayed, not those of, e.g., any in
 This modifier hasn't proved useful in practice and is deprecated\n\
 in favor of /s.\n\
 \n\
-With a /s modifier, source lines are included (if available).\n\
-This differs from /m in two important respects:\n\
-- the output is still in pc address order, and\n\
-- file names and contents for all relevant source files are displayed.\n\
-\n\
 With a /r modifier, raw instructions in hex are included.\n\
 \n\
 With a single argument, the function surrounding that address is dumped.\n\
@@ -2441,19 +2590,37 @@ When 'on', each command is displayed as
 			   NULL,
 			   &setlist, &showlist);
 
-  c = add_com ("alias", class_support, alias_command, _("\
+  const auto alias_opts = make_alias_options_def_group (nullptr);
+
+  static std::string alias_help
+    = gdb::option::build_help (_("\
 Define a new command that is an alias of an existing command.\n\
-Usage: alias [-a] [--] ALIAS = COMMAND\n\
+Usage: alias [-a] [--] ALIAS = COMMAND [DEFAULT-ARGS...]\n\
 ALIAS is the name of the alias command to create.\n\
 COMMAND is the command being aliased to.\n\
-If \"-a\" is specified, the command is an abbreviation,\n\
-and will not appear in help command list output.\n\
+\n\
+Options:\n\
+%OPTIONS%\n\
+\n\
+GDB will automatically prepend the provided DEFAULT-ARGS to the list\n\
+of arguments explicitly provided when using ALIAS.\n\
+Use \"help aliases\" to list all user defined aliases and their default args.\n\
 \n\
 Examples:\n\
 Make \"spe\" an alias of \"set print elements\":\n\
-  alias spe = set print elements\n\
+  alias spe set print elements\n\
 Make \"elms\" an alias of \"elements\" in the \"set print\" command:\n\
-  alias -a set print elms = set print elements"));
+  alias -a set print elms set print elements\n\
+Make \"btf\" an alias of \"backtrace -full -past-entry -past-main\" :\n\
+  alias btf = backtrace -full -past-entry -past-main\n\
+Make \"wLapPeu\" an alias of 2 nested \"with\":\n\
+  alias wLapPeu = with language pascal -- with print elements unlimited --"),
+			       alias_opts);
+
+  c = add_com ("alias", class_support, alias_command,
+	       alias_help.c_str ());
+
+  set_cmd_completer_handle_brkchars (c, alias_command_completer);
 
   const char *source_help_text = xstrprintf (_("\
 Read commands from a file named FILE.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-cmds.h ./gdb/cli/cli-cmds.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-cmds.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-cmds.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header file for GDB CLI command implementation library.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-decode.c ./gdb/cli/cli-decode.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-decode.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-decode.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle lists of commands, their decoding and documentation, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 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
@@ -43,6 +43,11 @@ static struct cmd_list_element *find_cmd
 					  int ignore_help_classes,
 					  int *nfound);
 
+static void help_cmd_list (struct cmd_list_element *list,
+			   enum command_class theclass,
+			   bool recurse,
+			   struct ui_file *stream);
+
 static void help_all (struct ui_file *stream);
 
 /* Look up a command whose 'prefixlist' is KEY.  Return the command if found,
@@ -61,7 +66,11 @@ lookup_cmd_for_prefixlist (struct cmd_li
       if (p->prefixlist == NULL)
 	continue;
       else if (p->prefixlist == key)
-	return p;
+	{
+	  /* If we found an alias, we must return the aliased
+	     command.  */
+	  return p->cmd_pointer ? p->cmd_pointer : p;
+	}
 
       q = lookup_cmd_for_prefixlist (key, *(p->prefixlist));
       if (q != NULL)
@@ -72,29 +81,8 @@ lookup_cmd_for_prefixlist (struct cmd_li
 }
 
 static void
-set_cmd_prefix (struct cmd_list_element *c, struct cmd_list_element **list)
-{
-  struct cmd_list_element *p;
-
-  /* Check to see if *LIST contains any element other than C.  */
-  for (p = *list; p != NULL; p = p->next)
-    if (p != c)
-      break;
-
-  if (p == NULL)
-    {
-      /* *SET_LIST only contains SET.  */
-      p = lookup_cmd_for_prefixlist (list, setlist);
-
-      c->prefix = p ? (p->cmd_pointer ? p->cmd_pointer : p) : p;
-    }
-  else
-    c->prefix = p->prefix;
-}
-
-static void
-print_help_for_command (struct cmd_list_element *c, const char *prefix,
-			int recurse, struct ui_file *stream);
+print_help_for_command (struct cmd_list_element *c,
+			bool recurse, struct ui_file *stream);
 
 
 /* Set the callback function for the specified command.  For each both
@@ -151,12 +139,6 @@ get_cmd_context (struct cmd_list_element
   return cmd->context;
 }
 
-enum cmd_types
-cmd_type (struct cmd_list_element *cmd)
-{
-  return cmd->type;
-}
-
 void
 set_cmd_completer (struct cmd_list_element *cmd, completer_ftype *completer)
 {
@@ -229,6 +211,13 @@ do_add_cmd (const char *name, enum comma
       p->next = c;
     }
 
+  /* Search the prefix cmd of C, and assigns it to C->prefix.
+     See also add_prefix_cmd and update_prefix_field_of_prefixed_commands.  */
+  struct cmd_list_element *prefixcmd = lookup_cmd_for_prefixlist (list,
+								  cmdlist);
+  c->prefix = prefixcmd;
+
+
   return c;
 }
 
@@ -330,7 +319,6 @@ add_alias_cmd (const char *name, cmd_lis
   c->alias_chain = old->aliases;
   old->aliases = c;
 
-  set_cmd_prefix (c, list);
   return c;
 }
 
@@ -343,12 +331,43 @@ add_alias_cmd (const char *name, const c
   struct cmd_list_element *old;
 
   tmp = oldname;
-  old = lookup_cmd (&tmp, *list, "", 1, 1);
+  old = lookup_cmd (&tmp, *list, "", NULL, 1, 1);
 
   return add_alias_cmd (name, old, theclass, abbrev_flag, list);
 }
 
 
+/* Update the prefix field of all sub-commands of the prefix command C.
+   We must do this when a prefix command is defined as the GDB init sequence
+   does not guarantee that a prefix command is created before its sub-commands.
+   For example, break-catch-sig.c initialization runs before breakpoint.c
+   initialization, but it is breakpoint.c that creates the "catch" command used
+   by the "catch signal" command created by break-catch-sig.c.  */
+
+static void
+update_prefix_field_of_prefixed_commands (struct cmd_list_element *c)
+{
+  for (cmd_list_element *p = *c->prefixlist; p != NULL; p = p->next)
+    {
+      p->prefix = c;
+
+      /* We must recursively update the prefix field to cover
+	 e.g.  'info auto-load libthread-db' where the creation
+	 order was:
+           libthread-db
+           auto-load
+           info
+	 In such a case, when 'auto-load' was created by do_add_cmd,
+         the 'libthread-db' prefix field could not be updated, as the
+	 'auto-load' command was not yet reachable by
+	    lookup_cmd_for_prefixlist (list, cmdlist)
+	    that searches from the top level 'cmdlist'.  */
+      if (p->prefixlist != nullptr)
+	update_prefix_field_of_prefixed_commands (p);
+    }
+}
+
+
 /* Like add_cmd but adds an element for a command prefix: a name that
    should be followed by a subcommand to be looked up in another
    command list.  PREFIXLIST should be the address of the variable
@@ -362,24 +381,70 @@ add_prefix_cmd (const char *name, enum c
 		struct cmd_list_element **list)
 {
   struct cmd_list_element *c = add_cmd (name, theclass, fun, doc, list);
-  struct cmd_list_element *p;
 
   c->prefixlist = prefixlist;
   c->prefixname = prefixname;
   c->allow_unknown = allow_unknown;
 
-  if (list == &cmdlist)
-    c->prefix = NULL;
-  else
-    set_cmd_prefix (c, list);
-
-  /* Update the field 'prefix' of each cmd_list_element in *PREFIXLIST.  */
-  for (p = *prefixlist; p != NULL; p = p->next)
-    p->prefix = c;
+  /* Now that prefix command C is defined, we need to set the prefix field
+     of all prefixed commands that were defined before C itself was defined.  */
+  update_prefix_field_of_prefixed_commands (c);
 
   return c;
 }
 
+/* A helper function for add_basic_prefix_cmd.  This is a command
+   function that just forwards to help_list.  */
+
+static void
+do_prefix_cmd (const char *args, int from_tty, struct cmd_list_element *c)
+{
+  /* Look past all aliases.  */
+  while (c->cmd_pointer != nullptr)
+    c = c->cmd_pointer;
+
+  help_list (*c->prefixlist, c->prefixname, all_commands, gdb_stdout);
+}
+
+/* See command.h.  */
+
+struct cmd_list_element *
+add_basic_prefix_cmd (const char *name, enum command_class theclass,
+		      const char *doc, struct cmd_list_element **prefixlist,
+		      const char *prefixname, int allow_unknown,
+		      struct cmd_list_element **list)
+{
+  struct cmd_list_element *cmd = add_prefix_cmd (name, theclass, nullptr,
+						 doc, prefixlist, prefixname,
+						 allow_unknown, list);
+  set_cmd_sfunc (cmd, do_prefix_cmd);
+  return cmd;
+}
+
+/* A helper function for add_show_prefix_cmd.  This is a command
+   function that just forwards to cmd_show_list.  */
+
+static void
+do_show_prefix_cmd (const char *args, int from_tty, struct cmd_list_element *c)
+{
+  cmd_show_list (*c->prefixlist, from_tty);
+}
+
+/* See command.h.  */
+
+struct cmd_list_element *
+add_show_prefix_cmd (const char *name, enum command_class theclass,
+		     const char *doc, struct cmd_list_element **prefixlist,
+		     const char *prefixname, int allow_unknown,
+		     struct cmd_list_element **list)
+{
+  struct cmd_list_element *cmd = add_prefix_cmd (name, theclass, nullptr,
+						 doc, prefixlist, prefixname,
+						 allow_unknown, list);
+  set_cmd_sfunc (cmd, do_show_prefix_cmd);
+  return cmd;
+}
+
 /* Like ADD_PREFIX_CMD but sets the suppress_notification pointer on the
    new command list element.  */
 
@@ -503,8 +568,6 @@ add_setshow_cmd_full (const char *name,
   if (set_func != NULL)
     set_cmd_sfunc (set, set_func);
 
-  set_cmd_prefix (set, set_list);
-
   show = add_set_or_show_cmd (name, show_cmd, theclass, var_type, var,
 			      full_show_doc, show_list);
   show->doc_allocated = 1;
@@ -937,7 +1000,10 @@ add_com (const char *name, enum command_
   return add_cmd (name, theclass, fun, doc, &cmdlist);
 }
 
-/* Add an alias or abbreviation command to the list of commands.  */
+/* Add an alias or abbreviation command to the list of commands.
+   For aliases predefined by GDB (such as bt), THECLASS must be
+   different of class_alias, as class_alias is used to identify
+   user defined aliases.  */
 
 struct cmd_list_element *
 add_com_alias (const char *name, const char *oldname, enum command_class theclass,
@@ -957,6 +1023,77 @@ add_com_suppress_notification (const cha
 					&cmdlist, suppress_notification);
 }
 
+/* Print the prefix of C followed by name of C in title style.  */
+
+static void
+fput_command_name_styled (struct cmd_list_element *c, struct ui_file *stream)
+{
+  const char *prefixname
+    = c->prefix == nullptr ? "" : c->prefix->prefixname;
+
+  fprintf_styled (stream, title_style.style (), "%s%s", prefixname, c->name);
+}
+
+/* Print the definition of alias C using title style for alias
+   and aliased command.  */
+
+static void
+fput_alias_definition_styled (struct cmd_list_element *c,
+			      struct ui_file *stream)
+{
+  gdb_assert (c->cmd_pointer != nullptr);
+  fputs_filtered ("  alias ", stream);
+  fput_command_name_styled (c, stream);
+  fprintf_filtered (stream, " = ");
+  fput_command_name_styled (c->cmd_pointer, stream);
+  fprintf_filtered (stream, " %s\n", c->default_args.c_str ());
+}
+
+/* Print the definition of the aliases of CMD that have default args.  */
+
+static void
+fput_aliases_definition_styled (struct cmd_list_element *cmd,
+				struct ui_file *stream)
+{
+  if (cmd->aliases != nullptr)
+    {
+      for (cmd_list_element *iter = cmd->aliases;
+	   iter;
+	   iter = iter->alias_chain)
+	{
+	  if (!iter->default_args.empty ())
+	    fput_alias_definition_styled (iter, stream);
+	}
+    }
+}
+
+
+/* If C has one or more aliases, style print the name of C and
+   the name of its aliases, separated by commas.
+   If ALWAYS_FPUT_C_NAME, print the name of C even if it has no aliases.
+   If one or more names are printed, POSTFIX is printed after the last name.
+*/
+
+static void
+fput_command_names_styled (struct cmd_list_element *c,
+			   bool always_fput_c_name, const char *postfix,
+			   struct ui_file *stream)
+{
+  if (always_fput_c_name ||  c->aliases != nullptr)
+    fput_command_name_styled (c, stream);
+  if (c->aliases != nullptr)
+    {
+      for (cmd_list_element *iter = c->aliases; iter; iter = iter->alias_chain)
+	{
+	  fputs_filtered (", ", stream);
+	  wrap_here ("   ");
+	  fput_command_name_styled (iter, stream);
+	}
+    }
+  if (always_fput_c_name ||  c->aliases != nullptr)
+    fputs_filtered (postfix, stream);
+}
+
 /* If VERBOSE, print the full help for command C and highlight the
    documentation parts matching HIGHLIGHT,
    otherwise print only one-line help for command C.  */
@@ -972,14 +1109,21 @@ print_doc_of_command (struct cmd_list_el
   if (verbose)
     fputs_filtered ("\n", stream);
 
-  fprintf_styled (stream, title_style.style (),
-		  "%s%s", prefix, c->name);
-  fputs_filtered (" -- ", stream);
+  fput_command_names_styled (c, true,
+			     verbose ? "" : " -- ", stream);
   if (verbose)
-    fputs_highlighted (c->doc, highlight, stream);
+    {
+      fputs_filtered ("\n", stream);
+      fput_aliases_definition_styled (c, stream);
+      fputs_highlighted (c->doc, highlight, stream);
+      fputs_filtered ("\n", stream);
+    }
   else
-    print_doc_line (stream, c->doc, false);
-  fputs_filtered ("\n", stream);
+    {
+      print_doc_line (stream, c->doc, false);
+      fputs_filtered ("\n", stream);
+      fput_aliases_definition_styled (c, stream);
+    }
 }
 
 /* Recursively walk the commandlist structures, and print out the
@@ -1000,6 +1144,14 @@ apropos_cmd (struct ui_file *stream,
   /* Walk through the commands.  */
   for (c=commandlist;c;c=c->next)
     {
+      if (c->cmd_pointer != nullptr)
+	{
+	  /* Command aliases/abbreviations are skipped to ensure we print the
+	     doc of a command only once, when encountering the aliased
+	     command.  */
+	  continue;
+	}
+
       returnvalue = -1; /* Needed to avoid double printing.  */
       if (c->name != NULL)
 	{
@@ -1009,6 +1161,17 @@ apropos_cmd (struct ui_file *stream,
 	  returnvalue = regex.search (c->name, name_len, 0, name_len, NULL);
 	  if (returnvalue >= 0)
 	    print_doc_of_command (c, prefix, verbose, regex, stream);
+
+	  /* Try to match against the name of the aliases.  */
+	  for (cmd_list_element *iter = c->aliases;
+	       returnvalue < 0 && iter;
+	       iter = iter->alias_chain)
+	    {
+	      name_len = strlen (iter->name);
+	      returnvalue = regex.search (iter->name, name_len, 0, name_len, NULL);
+	      if (returnvalue >= 0)
+		print_doc_of_command (c, prefix, verbose, regex, stream);
+	    }
 	}
       if (c->doc != NULL && returnvalue < 0)
 	{
@@ -1018,10 +1181,8 @@ apropos_cmd (struct ui_file *stream,
 	  if (regex.search (c->doc, doc_len, 0, doc_len, NULL) >= 0)
 	    print_doc_of_command (c, prefix, verbose, regex, stream);
 	}
-      /* Check if this command has subcommands and is not an
-	 abbreviation.  We skip listing subcommands of abbreviations
-	 in order to avoid duplicates in the output.  */
-      if (c->prefixlist != NULL && !c->abbrev_flag)
+      /* Check if this command has subcommands.  */
+      if (c->prefixlist != NULL)
 	{
 	  /* Recursively call ourselves on the subcommand list,
 	     passing the right prefix in.  */
@@ -1044,7 +1205,7 @@ apropos_cmd (struct ui_file *stream,
 void
 help_cmd (const char *command, struct ui_file *stream)
 {
-  struct cmd_list_element *c;
+  struct cmd_list_element *c, *alias, *prefix_cmd, *c_cmd;
 
   if (!command)
     {
@@ -1058,11 +1219,14 @@ help_cmd (const char *command, struct ui
       return;
     }
 
-  c = lookup_cmd (&command, cmdlist, "", 0, 0);
+  const char *orig_command = command;
+  c = lookup_cmd (&command, cmdlist, "", NULL, 0, 0);
 
   if (c == 0)
     return;
 
+  lookup_cmd_composition (orig_command, &alias, &prefix_cmd, &c_cmd);
+
   /* There are three cases here.
      If c->prefixlist is nonzero, we have a prefix command.
      Print its documentation, then list its subcommands.
@@ -1075,6 +1239,10 @@ help_cmd (const char *command, struct ui
      number of this class so that the commands in the class will be
      listed.  */
 
+  /* If the user asked 'help somecommand' and there is no alias,
+     the false indicates to not output the (single) command name.  */
+  fput_command_names_styled (c, false, "\n", stream);
+  fput_aliases_definition_styled (c, stream);
   fputs_filtered (c->doc, stream);
   fputs_filtered ("\n", stream);
 
@@ -1144,7 +1312,7 @@ help_list (struct cmd_list_element *list
   else
     fprintf_filtered (stream, "List of %scommands:\n\n", cmdtype2);
 
-  help_cmd_list (list, theclass, cmdtype, (int) theclass >= 0, stream);
+  help_cmd_list (list, theclass, theclass >= 0, stream);
 
   if (theclass == all_classes)
     {
@@ -1191,7 +1359,7 @@ help_all (struct ui_file *stream)
       if (c->func == NULL)
 	{
 	  fprintf_filtered (stream, "\nCommand class: %s\n\n", c->name);
-	  help_cmd_list (cmdlist, c->theclass, "", 1, stream);
+	  help_cmd_list (cmdlist, c->theclass, true, stream);
 	}
     }
 
@@ -1211,7 +1379,7 @@ help_all (struct ui_file *stream)
 	      fprintf_filtered (stream, "\nUnclassified commands\n\n");
 	      seen_unclassified = 1;
 	    }
-	  print_help_for_command (c, "", 1, stream);
+	  print_help_for_command (c, true, stream);
 	}
     }
 
@@ -1263,14 +1431,15 @@ print_doc_line (struct ui_file *stream,
    If RECURSE is non-zero, also print one-line descriptions
    of all prefixed subcommands.  */
 static void
-print_help_for_command (struct cmd_list_element *c, const char *prefix,
-			int recurse, struct ui_file *stream)
+print_help_for_command (struct cmd_list_element *c,
+			bool recurse, struct ui_file *stream)
 {
-  fprintf_styled (stream, title_style.style (),
-		  "%s%s", prefix, c->name);
-  fputs_filtered (" -- ", stream);
+  fput_command_names_styled (c, true, " -- ", stream);
   print_doc_line (stream, c->doc, false);
   fputs_filtered ("\n", stream);
+  if (!c->default_args.empty ())
+    fput_alias_definition_styled (c, stream);
+  fput_aliases_definition_styled (c, stream);
 
   if (recurse
       && c->prefixlist != 0
@@ -1278,48 +1447,80 @@ print_help_for_command (struct cmd_list_
     /* Subcommands of a prefix command typically have 'all_commands'
        as class.  If we pass CLASS to recursive invocation,
        most often we won't see anything.  */
-    help_cmd_list (*c->prefixlist, all_commands, c->prefixname, 1, stream);
+    help_cmd_list (*c->prefixlist, all_commands, true, stream);
 }
 
 /*
  * Implement a help command on command list LIST.
  * RECURSE should be non-zero if this should be done recursively on
  * all sublists of LIST.
- * PREFIX is the prefix to print before each command name.
  * STREAM is the stream upon which the output should be written.
  * THECLASS should be:
  *      A non-negative class number to list only commands in that
- * class.
  *      ALL_COMMANDS to list all commands in list.
  *      ALL_CLASSES  to list all classes in list.
  *
+ *   Note that aliases are only shown when THECLASS is class_alias.
+ *   In the other cases, the aliases will be shown together with their
+ *   aliased command.
+ *
  *   Note that RECURSE will be active on *all* sublists, not just the
  * ones selected by the criteria above (ie. the selection mechanism
  * is at the low level, not the high-level).
  */
-void
+
+static void
 help_cmd_list (struct cmd_list_element *list, enum command_class theclass,
-	       const char *prefix, int recurse, struct ui_file *stream)
+	       bool recurse, struct ui_file *stream)
 {
   struct cmd_list_element *c;
 
   for (c = list; c; c = c->next)
     {
-      if (c->abbrev_flag == 0
-	  && !c->cmd_deprecated
-	  && (theclass == all_commands
-	      || (theclass == all_classes && c->func == NULL)
-	      || (theclass == c->theclass && c->func != NULL)))
-	{
-	  print_help_for_command (c, prefix, recurse, stream);
-	}
-      else if (c->abbrev_flag == 0
-	       && recurse
-	       && !c->cmd_deprecated
-	       && theclass == class_user && c->prefixlist != NULL)
-	/* User-defined commands may be subcommands.  */
-	help_cmd_list (*c->prefixlist, theclass, c->prefixname,
-		       recurse, stream);
+      if (c->abbrev_flag == 1 || c->cmd_deprecated)
+	{
+	  /* Do not show abbreviations or deprecated commands.  */
+	  continue;
+	}
+
+      if (c->cmd_pointer != nullptr && theclass != class_alias)
+	{
+	  /* Do not show an alias, unless specifically showing the
+	     list of aliases:  for all other classes, an alias is
+	     shown (if needed) together with its aliased command.  */
+	  continue;
+	}
+
+      if (theclass == all_commands
+	  || (theclass == all_classes && c->func == NULL)
+	  || (theclass == c->theclass && c->func != NULL))
+	{
+	  /* show C when
+             - showing all commands
+	     - showing all classes and C is a help class
+	     - showing commands of THECLASS and C is not the help class  */
+
+	  /* If we show the class_alias and C is an alias, do not recurse,
+	     as this would show the (possibly very long) not very useful
+	     list of sub-commands of the aliased command.  */
+	  print_help_for_command
+	    (c,
+	     recurse && (theclass != class_alias || c->cmd_pointer == nullptr),
+	     stream);
+	  continue;
+	}
+
+      if (recurse
+	  && (theclass == class_user || theclass == class_alias)
+	  && c->prefixlist != NULL)
+	{
+	  /* User-defined commands or aliases may be subcommands.  */
+	  help_cmd_list (*c->prefixlist, theclass, recurse, stream);
+	  continue;
+	}
+
+      /* Do not show C or recurse on C, e.g. because C does not belong to
+	 THECLASS or because C is a help class.  */
     }
 }
 
@@ -1422,8 +1623,12 @@ valid_user_defined_cmd_name_p (const cha
    the list in which there are ambiguous choices (and *TEXT will be set to
    the ambiguous text string).
 
+   if DEFAULT_ARGS is not null, *DEFAULT_ARGS is set to the found command
+   default args (possibly empty).
+
    If the located command was an abbreviation, this routine returns the base
-   command of the abbreviation.
+   command of the abbreviation.  Note that *DEFAULT_ARGS will contain the
+   default args defined for the alias.
 
    It does no error reporting whatsoever; control will always return
    to the superior routine.
@@ -1450,11 +1655,13 @@ valid_user_defined_cmd_name_p (const cha
 
 struct cmd_list_element *
 lookup_cmd_1 (const char **text, struct cmd_list_element *clist,
-	      struct cmd_list_element **result_list, int ignore_help_classes)
+	      struct cmd_list_element **result_list, std::string *default_args,
+	      int ignore_help_classes)
 {
   char *command;
   int len, nfound;
   struct cmd_list_element *found, *c;
+  bool found_alias = false;
   const char *line = *text;
 
   while (**text == ' ' || **text == '\t')
@@ -1486,10 +1693,12 @@ lookup_cmd_1 (const char **text, struct
 
   if (nfound > 1)
     {
-      if (result_list != NULL)
+      if (result_list != nullptr)
 	/* Will be modified in calling routine
 	   if we know what the prefix command is.  */
 	*result_list = 0;
+      if (default_args != nullptr)
+	*default_args = std::string ();
       return CMD_LIST_AMBIGUOUS;	/* Ambiguous.  */
     }
 
@@ -1505,22 +1714,30 @@ lookup_cmd_1 (const char **text, struct
        are warning about the alias, we may also warn about the command
        itself and we will adjust the appropriate DEPRECATED_WARN_USER
        flags.  */
-      
+
       if (found->deprecated_warn_user)
 	deprecated_cmd_warning (line);
+
+      /* Return the default_args of the alias, not the default_args
+	 of the command it is pointing to.  */
+      if (default_args != nullptr)
+	*default_args = found->default_args;
       found = found->cmd_pointer;
+      found_alias = true;
     }
   /* If we found a prefix command, keep looking.  */
 
   if (found->prefixlist)
     {
       c = lookup_cmd_1 (text, *found->prefixlist, result_list,
-			ignore_help_classes);
+			default_args, ignore_help_classes);
       if (!c)
 	{
 	  /* Didn't find anything; this is as far as we got.  */
-	  if (result_list != NULL)
+	  if (result_list != nullptr)
 	    *result_list = clist;
+	  if (!found_alias && default_args != nullptr)
+	    *default_args = found->default_args;
 	  return found;
 	}
       else if (c == CMD_LIST_AMBIGUOUS)
@@ -1528,13 +1745,16 @@ lookup_cmd_1 (const char **text, struct
 	  /* We've gotten this far properly, but the next step is
 	     ambiguous.  We need to set the result list to the best
 	     we've found (if an inferior hasn't already set it).  */
-	  if (result_list != NULL)
+	  if (result_list != nullptr)
 	    if (!*result_list)
 	      /* This used to say *result_list = *found->prefixlist.
 	         If that was correct, need to modify the documentation
 	         at the top of this function to clarify what is
 	         supposed to be going on.  */
 	      *result_list = found;
+	  /* For ambiguous commands, do not return any default_args args.  */
+	  if (default_args != nullptr)
+	    *default_args = std::string ();
 	  return c;
 	}
       else
@@ -1545,8 +1765,10 @@ lookup_cmd_1 (const char **text, struct
     }
   else
     {
-      if (result_list != NULL)
+      if (result_list != nullptr)
 	*result_list = clist;
+      if (!found_alias && default_args != nullptr)
+	*default_args = found->default_args;
       return found;
     }
 }
@@ -1566,8 +1788,13 @@ undef_cmd_error (const char *cmdtype, co
 
 /* Look up the contents of *LINE as a command in the command list LIST.
    LIST is a chain of struct cmd_list_element's.
-   If it is found, return the struct cmd_list_element for that command
-   and update *LINE to point after the command name, at the first argument.
+   If it is found, return the struct cmd_list_element for that command,
+   update *LINE to point after the command name, at the first argument
+   and update *DEFAULT_ARGS (if DEFAULT_ARGS is not null) to the default
+   args to prepend to the user provided args when running the command.
+   Note that if the found cmd_list_element is found via an alias,
+   the default args of the alias are returned.
+
    If not found, call error if ALLOW_UNKNOWN is zero
    otherwise (or if error returns) return zero.
    Call error if specified command is ambiguous,
@@ -1581,6 +1808,7 @@ undef_cmd_error (const char *cmdtype, co
 struct cmd_list_element *
 lookup_cmd (const char **line, struct cmd_list_element *list,
 	    const char *cmdtype,
+	    std::string *default_args,
 	    int allow_unknown, int ignore_help_classes)
 {
   struct cmd_list_element *last_list = 0;
@@ -1592,7 +1820,7 @@ lookup_cmd (const char **line, struct cm
   if (!*line)
     error (_("Lack of needed %scommand"), cmdtype);
 
-  c = lookup_cmd_1 (line, list, &last_list, ignore_help_classes);
+  c = lookup_cmd_1 (line, list, &last_list, default_args, ignore_help_classes);
 
   if (!c)
     {
@@ -1760,25 +1988,25 @@ deprecated_cmd_warning (const char *text
 }
 
 
-/* Look up the contents of LINE as a command in the command list 'cmdlist'.
+/* Look up the contents of TEXT as a command in the command list 'cmdlist'.
    Return 1 on success, 0 on failure.
-   
-   If LINE refers to an alias, *alias will point to that alias.
-   
-   If LINE is a postfix command (i.e. one that is preceded by a prefix
-   command) set *prefix_cmd.
-   
-   Set *cmd to point to the command LINE indicates.
-   
-   If any of *alias, *prefix_cmd, or *cmd cannot be determined or do not 
+
+   If TEXT refers to an alias, *ALIAS will point to that alias.
+
+   If TEXT is a subcommand (i.e. one that is preceded by a prefix
+   command) set *PREFIX_CMD.
+
+   Set *CMD to point to the command TEXT indicates.
+
+   If any of *ALIAS, *PREFIX_CMD, or *CMD cannot be determined or do not
    exist, they are NULL when we return.
-   
+
 */
 int
 lookup_cmd_composition (const char *text,
-                      struct cmd_list_element **alias,
-                      struct cmd_list_element **prefix_cmd, 
-                      struct cmd_list_element **cmd)
+			struct cmd_list_element **alias,
+			struct cmd_list_element **prefix_cmd,
+			struct cmd_list_element **cmd)
 {
   char *command;
   int len, nfound;
@@ -1788,43 +2016,42 @@ lookup_cmd_composition (const char *text
   *alias = NULL;
   *prefix_cmd = NULL;
   *cmd = NULL;
-  
+
   cur_list = cmdlist;
-  
+
+  text = skip_spaces (text);
+
   while (1)
-    { 
+    {
       /* Go through as many command lists as we need to,
 	 to find the command TEXT refers to.  */
-      
+
       prev_cmd = *cmd;
-      
-      while (*text == ' ' || *text == '\t')
-	(text)++;
-      
+
       /* Identify the name of the command.  */
       len = find_command_name_length (text);
-      
+
       /* If nothing but whitespace, return.  */
       if (len == 0)
 	return 0;
-      
-      /* Text is the start of the first command word to lookup (and
-	 it's length is len).  We copy this into a local temporary.  */
-      
+
+      /* TEXT is the start of the first command word to lookup (and
+	 it's length is LEN).  We copy this into a local temporary.  */
+
       command = (char *) alloca (len + 1);
       memcpy (command, text, len);
       command[len] = '\0';
-      
+
       /* Look it up.  */
       *cmd = 0;
       nfound = 0;
       *cmd = find_cmd (command, len, cur_list, 1, &nfound);
-      
+
       if (*cmd == CMD_LIST_AMBIGUOUS)
 	{
 	  return 0;              /* ambiguous */
 	}
-      
+
       if (*cmd == NULL)
 	return 0;                /* nothing found */
       else
@@ -1832,18 +2059,20 @@ lookup_cmd_composition (const char *text
 	  if ((*cmd)->cmd_pointer)
 	    {
 	      /* cmd was actually an alias, we note that an alias was
-		 used (by assigning *alais) and we set *cmd.  */
+		 used (by assigning *ALIAS) and we set *CMD.  */
 	      *alias = *cmd;
 	      *cmd = (*cmd)->cmd_pointer;
 	    }
 	  *prefix_cmd = prev_cmd;
 	}
-      if ((*cmd)->prefixlist)
+
+      text += len;
+      text = skip_spaces (text);
+
+      if ((*cmd)->prefixlist && *text != '\0')
 	cur_list = *(*cmd)->prefixlist;
       else
 	return 1;
-      
-      text += len;
     }
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-decode.h ./gdb/cli/cli-decode.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-decode.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-decode.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Header file for GDB command decoding library.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 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
@@ -27,20 +27,15 @@
 #include "cli-script.h"
 #include "completer.h"
 
-#if 0
-/* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum
-   cmd_types'' can be moved from "command.h" to "cli-decode.h".  */
 /* Not a set/show command.  Note that some commands which begin with
    "set" or "show" might be in this category, if their syntax does
    not fall into one of the following categories.  */
-typedef enum cmd_types
-  {
-    not_set_cmd,
-    set_cmd,
-    show_cmd
-  }
-cmd_types;
-#endif
+enum cmd_types
+{
+  not_set_cmd,
+  set_cmd,
+  show_cmd
+};
 
 /* This structure records one command'd definition.  */
 
@@ -183,6 +178,10 @@ struct cmd_list_element
     /* Hook for another command to be executed after this command.  */
     struct cmd_list_element *hook_post = nullptr;
 
+    /* Default arguments to automatically prepend to the user
+       provided arguments when running this command or alias.  */
+    std::string default_args;
+
     /* Nonzero identifies a prefix command.  For them, the address
        of the variable containing the list of subcommands.  */
     struct cmd_list_element **prefixlist = nullptr;
@@ -249,9 +248,6 @@ struct cmd_list_element
     int *suppress_notification = nullptr;
   };
 
-extern void help_cmd_list (struct cmd_list_element *, enum command_class,
-			   const char *, int, struct ui_file *);
-
 /* Functions that implement commands about CLI commands.  */
 
 extern void help_cmd (const char *, struct ui_file *);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-dump.c ./gdb/cli/cli-dump.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-dump.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-dump.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Dump-to-file commands, for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 
@@ -129,20 +129,6 @@ static struct cmd_list_element *binary_d
 static struct cmd_list_element *binary_append_cmdlist;
 
 static void
-dump_command (const char *cmd, int from_tty)
-{
-  printf_unfiltered (_("\"dump\" must be followed by a subcommand.\n\n"));
-  help_list (dump_cmdlist, "dump ", all_commands, gdb_stdout);
-}
-
-static void
-append_command (const char *cmd, int from_tty)
-{
-  printf_unfiltered (_("\"append\" must be followed by a subcommand.\n\n"));
-  help_list (dump_cmdlist, "append ", all_commands, gdb_stdout);
-}
-
-static void
 dump_binary_file (const char *filename, const char *mode, 
 		  const bfd_byte *buf, ULONGEST len)
 {
@@ -579,64 +565,22 @@ restore_command (const char *args, int f
     }
 }
 
-static void
-srec_dump_command (const char *cmd, int from_tty)
-{
-  printf_unfiltered (_("\"dump srec\" must be followed by a subcommand.\n"));
-  help_list (srec_cmdlist, "dump srec ", all_commands, gdb_stdout);
-}
-
-static void
-ihex_dump_command (const char *cmd, int from_tty)
-{
-  printf_unfiltered (_("\"dump ihex\" must be followed by a subcommand.\n"));
-  help_list (ihex_cmdlist, "dump ihex ", all_commands, gdb_stdout);
-}
-
-static void
-verilog_dump_command (const char *cmd, int from_tty)
-{
-  printf_unfiltered (_("\"dump verilog\" must be followed by a subcommand.\n"));
-  help_list (verilog_cmdlist, "dump verilog ", all_commands, gdb_stdout);
-}
-
-static void
-tekhex_dump_command (const char *cmd, int from_tty)
-{
-  printf_unfiltered (_("\"dump tekhex\" must be followed by a subcommand.\n"));
-  help_list (tekhex_cmdlist, "dump tekhex ", all_commands, gdb_stdout);
-}
-
-static void
-binary_dump_command (const char *cmd, int from_tty)
-{
-  printf_unfiltered (_("\"dump binary\" must be followed by a subcommand.\n"));
-  help_list (binary_dump_cmdlist, "dump binary ", all_commands, gdb_stdout);
-}
-
-static void
-binary_append_command (const char *cmd, int from_tty)
-{
-  printf_unfiltered (_("\"append binary\" must be followed by a subcommand.\n"));
-  help_list (binary_append_cmdlist, "append binary ", all_commands,
-	     gdb_stdout);
-}
-
+void _initialize_cli_dump ();
 void
-_initialize_cli_dump (void)
+_initialize_cli_dump ()
 {
   struct cmd_list_element *c;
 
-  add_prefix_cmd ("dump", class_vars, dump_command,
-		  _("Dump target code/data to a local file."),
-		  &dump_cmdlist, "dump ",
-		  0/*allow-unknown*/,
-		  &cmdlist);
-  add_prefix_cmd ("append", class_vars, append_command,
-		  _("Append target code/data to a local file."),
-		  &append_cmdlist, "append ",
-		  0/*allow-unknown*/,
-		  &cmdlist);
+  add_basic_prefix_cmd ("dump", class_vars,
+			_("Dump target code/data to a local file."),
+			&dump_cmdlist, "dump ",
+			0/*allow-unknown*/,
+			&cmdlist);
+  add_basic_prefix_cmd ("append", class_vars,
+			_("Append target code/data to a local file."),
+			&append_cmdlist, "append ",
+			0/*allow-unknown*/,
+			&cmdlist);
 
   add_dump_command ("memory", dump_memory_command, "\
 Write contents of memory to a raw binary file.\n\
@@ -648,41 +592,41 @@ Write the value of an expression to a ra
 Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION to\n\
 the specified FILE in raw target ordered bytes.");
 
-  add_prefix_cmd ("srec", all_commands, srec_dump_command,
-		  _("Write target code/data to an srec file."),
-		  &srec_cmdlist, "dump srec ", 
-		  0 /*allow-unknown*/, 
-		  &dump_cmdlist);
-
-  add_prefix_cmd ("ihex", all_commands, ihex_dump_command,
-		  _("Write target code/data to an intel hex file."),
-		  &ihex_cmdlist, "dump ihex ", 
-		  0 /*allow-unknown*/, 
-		  &dump_cmdlist);
-
-  add_prefix_cmd ("verilog", all_commands, verilog_dump_command,
-		  _("Write target code/data to a verilog hex file."),
-		  &verilog_cmdlist, "dump verilog ",
-		  0 /*allow-unknown*/,
-		  &dump_cmdlist);
-
-  add_prefix_cmd ("tekhex", all_commands, tekhex_dump_command,
-		  _("Write target code/data to a tekhex file."),
-		  &tekhex_cmdlist, "dump tekhex ", 
-		  0 /*allow-unknown*/, 
-		  &dump_cmdlist);
-
-  add_prefix_cmd ("binary", all_commands, binary_dump_command,
-		  _("Write target code/data to a raw binary file."),
-		  &binary_dump_cmdlist, "dump binary ", 
-		  0 /*allow-unknown*/, 
-		  &dump_cmdlist);
-
-  add_prefix_cmd ("binary", all_commands, binary_append_command,
-		  _("Append target code/data to a raw binary file."),
-		  &binary_append_cmdlist, "append binary ", 
-		  0 /*allow-unknown*/, 
-		  &append_cmdlist);
+  add_basic_prefix_cmd ("srec", all_commands,
+			_("Write target code/data to an srec file."),
+			&srec_cmdlist, "dump srec ", 
+			0 /*allow-unknown*/, 
+			&dump_cmdlist);
+
+  add_basic_prefix_cmd ("ihex", all_commands,
+			_("Write target code/data to an intel hex file."),
+			&ihex_cmdlist, "dump ihex ", 
+			0 /*allow-unknown*/, 
+			&dump_cmdlist);
+
+  add_basic_prefix_cmd ("verilog", all_commands,
+			_("Write target code/data to a verilog hex file."),
+			&verilog_cmdlist, "dump verilog ",
+			0 /*allow-unknown*/,
+			&dump_cmdlist);
+
+  add_basic_prefix_cmd ("tekhex", all_commands,
+			_("Write target code/data to a tekhex file."),
+			&tekhex_cmdlist, "dump tekhex ", 
+			0 /*allow-unknown*/, 
+			&dump_cmdlist);
+
+  add_basic_prefix_cmd ("binary", all_commands,
+			_("Write target code/data to a raw binary file."),
+			&binary_dump_cmdlist, "dump binary ", 
+			0 /*allow-unknown*/, 
+			&dump_cmdlist);
+
+  add_basic_prefix_cmd ("binary", all_commands,
+			_("Append target code/data to a raw binary file."),
+			&binary_append_cmdlist, "append binary ", 
+			0 /*allow-unknown*/, 
+			&append_cmdlist);
 
   add_cmd ("memory", all_commands, dump_srec_memory, _("\
 Write contents of memory to an srec file.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-interp.c ./gdb/cli/cli-interp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-interp.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-interp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI Definitions for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -467,8 +467,9 @@ cli_interp_factory (const char *name)
 
 /* Standard gdb initialization hook.  */
 
+void _initialize_cli_interp ();
 void
-_initialize_cli_interp (void)
+_initialize_cli_interp ()
 {
   interp_factory_register (INTERP_CONSOLE, cli_interp_factory);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-interp.h ./gdb/cli/cli-interp.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-interp.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-interp.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI Definitions for GDB, the GNU debugger.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-logging.c ./gdb/cli/cli-logging.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-logging.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-logging.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Command-line output logging for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -165,54 +165,18 @@ set_logging_off (const char *args, int f
   saved_filename = NULL;
 }
 
-static void
-set_logging_command (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"set logging\" lets you log output to a file.\n"
-		       "Usage: set logging on [FILENAME]\n"
-		       "       set logging off\n"
-		       "       set logging file FILENAME\n"
-		       "       set logging overwrite [on|off]\n"
-		       "       set logging redirect [on|off]\n"));
-}
-
-static void
-show_logging_command (const char *args, int from_tty)
-{
-  if (saved_filename)
-    printf_unfiltered (_("Currently logging to \"%s\".\n"), saved_filename);
-  if (saved_filename == NULL
-      || strcmp (logging_filename, saved_filename) != 0)
-    printf_unfiltered (_("Future logs will be written to %s.\n"),
-		       logging_filename);
-
-  if (logging_overwrite)
-    printf_unfiltered (_("Logs will overwrite the log file.\n"));
-  else
-    printf_unfiltered (_("Logs will be appended to the log file.\n"));
-
-  if (logging_redirect)
-    printf_unfiltered (_("Output will be sent only to the log file.\n"));
-  else
-    printf_unfiltered (_("Output will be logged and displayed.\n"));
-
-  if (debug_redirect)
-    printf_unfiltered (_("Debug output will be sent only to the log file.\n"));
-  else
-    printf_unfiltered (_("Debug output will be logged and displayed.\n"));
-}
-
+void _initialize_cli_logging ();
 void
-_initialize_cli_logging (void)
+_initialize_cli_logging ()
 {
   static struct cmd_list_element *set_logging_cmdlist, *show_logging_cmdlist;
 
-  add_prefix_cmd ("logging", class_support, set_logging_command,
-		  _("Set logging options."), &set_logging_cmdlist,
-		  "set logging ", 0, &setlist);
-  add_prefix_cmd ("logging", class_support, show_logging_command,
-		  _("Show logging options."), &show_logging_cmdlist,
-		  "show logging ", 0, &showlist);
+  add_basic_prefix_cmd ("logging", class_support,
+			_("Set logging options."), &set_logging_cmdlist,
+			"set logging ", 0, &setlist);
+  add_show_prefix_cmd ("logging", class_support,
+		       _("Show logging options."), &show_logging_cmdlist,
+		       "show logging ", 0, &showlist);
   add_setshow_boolean_cmd ("overwrite", class_support, &logging_overwrite, _("\
 Set whether logging overwrites or appends to the log file."), _("\
 Show whether logging overwrites or appends to the log file."), _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-option.c ./gdb/cli/cli-option.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-option.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-option.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI options framework, for GDB.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-option.h ./gdb/cli/cli-option.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-option.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-option.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI options framework, for GDB.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-script.c ./gdb/cli/cli-script.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-script.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-script.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB CLI command scripting.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -392,10 +392,6 @@ execute_cmd_post_hook (struct cmd_list_e
 void
 execute_control_commands (struct command_line *cmdlines, int from_tty)
 {
-  /* Set the instream to 0, indicating execution of a
-     user-defined function.  */
-  scoped_restore restore_instream
-    = make_scoped_restore (&current_ui->instream, nullptr);
   scoped_restore save_async = make_scoped_restore (&current_ui->async, 0);
   scoped_restore save_nesting
     = make_scoped_restore (&command_nest_depth, command_nest_depth + 1);
@@ -464,6 +460,11 @@ execute_user_command (struct cmd_list_el
   if (user_args_stack.size () > max_user_call_depth)
     error (_("Max user call depth exceeded -- command aborted."));
 
+  /* Set the instream to nullptr, indicating execution of a
+     user-defined function.  */
+  scoped_restore restore_instream
+    = make_scoped_restore (&current_ui->instream, nullptr);
+
   execute_control_commands (cmdlines, 0);
 }
 
@@ -974,7 +975,7 @@ process_next_line (const char *p, struct
       /* Resolve command abbreviations (e.g. 'ws' for 'while-stepping').  */
       const char *cmd_name = p;
       struct cmd_list_element *cmd
-	= lookup_cmd_1 (&cmd_name, cmdlist, NULL, 1);
+	= lookup_cmd_1 (&cmd_name, cmdlist, NULL, NULL, 1);
       cmd_name = skip_spaces (cmd_name);
       bool inline_cmd = *cmd_name != '\0';
 
@@ -1331,7 +1332,7 @@ validate_comname (const char **comname)
       std::string prefix (*comname, last_word - 1);
       const char *tem = prefix.c_str ();
 
-      c = lookup_cmd (&tem, cmdlist, "", 0, 1);
+      c = lookup_cmd (&tem, cmdlist, "", NULL, 0, 1);
       if (c->prefixlist == NULL)
 	error (_("\"%s\" is not a prefix command."), prefix.c_str ());
 
@@ -1387,7 +1388,7 @@ do_define_command (const char *comname,
 
   /* Look it up, and verify that we got an exact match.  */
   tem = comname;
-  c = lookup_cmd (&tem, *list, "", -1, 1);
+  c = lookup_cmd (&tem, *list, "", NULL, -1, 1);
   if (c && strcmp (comname, c->name) != 0)
     c = 0;
 
@@ -1432,7 +1433,7 @@ do_define_command (const char *comname,
     {
       /* Look up cmd it hooks, and verify that we got an exact match.  */
       tem = comname + hook_name_size;
-      hookc = lookup_cmd (&tem, *list, "", -1, 0);
+      hookc = lookup_cmd (&tem, *list, "", NULL, -1, 0);
       if (hookc && strcmp (comname + hook_name_size, hookc->name) != 0)
 	hookc = 0;
       if (!hookc && commands == nullptr)
@@ -1518,7 +1519,7 @@ document_command (const char *comname, i
   list = validate_comname (&comname);
 
   tem = comname;
-  c = lookup_cmd (&tem, *list, "", 0, 1);
+  c = lookup_cmd (&tem, *list, "", NULL, 0, 1);
 
   if (c->theclass != class_user)
     error (_("Command \"%s\" is built-in."), comfull);
@@ -1528,8 +1529,7 @@ document_command (const char *comname, i
   counted_command_line doclines = read_command_lines (prompt.c_str (),
 						      from_tty, 0, 0);
 
-  if (c->doc)
-    xfree ((char *) c->doc);
+  xfree ((char *) c->doc);
 
   {
     struct command_line *cl1;
@@ -1567,7 +1567,7 @@ define_prefix_command (const char *comna
 
   /* Look it up, and verify that we got an exact match.  */
   tem = comname;
-  c = lookup_cmd (&tem, *list, "", -1, 1);
+  c = lookup_cmd (&tem, *list, "", NULL, -1, 1);
   if (c != nullptr && strcmp (comname, c->name) != 0)
     c = nullptr;
 
@@ -1667,8 +1667,9 @@ show_user_1 (struct cmd_list_element *c,
 
 }
 
+void _initialize_cli_script ();
 void
-_initialize_cli_script (void)
+_initialize_cli_script ()
 {
   struct cmd_list_element *c;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-script.h ./gdb/cli/cli-script.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-script.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-script.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header file for GDB CLI command implementation library.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-setshow.c ./gdb/cli/cli-setshow.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-setshow.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-setshow.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle set and show GDB commands.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 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
@@ -733,39 +733,45 @@ do_show_command (const char *arg, int fr
 /* Show all the settings in a list of show commands.  */
 
 void
-cmd_show_list (struct cmd_list_element *list, int from_tty, const char *prefix)
+cmd_show_list (struct cmd_list_element *list, int from_tty)
 {
   struct ui_out *uiout = current_uiout;
 
   ui_out_emit_tuple tuple_emitter (uiout, "showlist");
   for (; list != NULL; list = list->next)
     {
+      /* We skip show command aliases to avoid showing duplicated values.  */
+
       /* If we find a prefix, run its list, prefixing our output by its
          prefix (with "show " skipped).  */
-      if (list->prefixlist && !list->abbrev_flag)
+      if (list->prefixlist && list->cmd_pointer == nullptr)
 	{
 	  ui_out_emit_tuple optionlist_emitter (uiout, "optionlist");
 	  const char *new_prefix = strstr (list->prefixname, "show ") + 5;
 
 	  if (uiout->is_mi_like_p ())
 	    uiout->field_string ("prefix", new_prefix);
-	  cmd_show_list (*list->prefixlist, from_tty, new_prefix);
+	  cmd_show_list (*list->prefixlist, from_tty);
 	}
-      else
+      else if (list->theclass != no_set_class && list->cmd_pointer == nullptr)
 	{
-	  if (list->theclass != no_set_class)
-	    {
-	      ui_out_emit_tuple option_emitter (uiout, "option");
+	  ui_out_emit_tuple option_emitter (uiout, "option");
 
-	      uiout->text (prefix);
-	      uiout->field_string ("name", list->name);
-	      uiout->text (":  ");
-	      if (list->type == show_cmd)
-		do_show_command (NULL, from_tty, list);
-	      else
-		cmd_func (list, NULL, from_tty);
-	    }
+	  {
+	    /* If we find a prefix, output it (with "show " skipped).  */
+	    const char *prefixname
+	      = (list->prefix == nullptr ? ""
+		 : strstr (list->prefix->prefixname, "show ") + 5);
+	    uiout->text (prefixname);
+	  }
+	  uiout->field_string ("name", list->name);
+	  uiout->text (":  ");
+	  if (list->type == show_cmd)
+	    do_show_command (NULL, from_tty, list);
+	  else
+	    cmd_func (list, NULL, from_tty);
 	}
     }
 }
 
+
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-setshow.h ./gdb/cli/cli-setshow.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-setshow.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-setshow.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header file for GDB CLI set and show commands implementation.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 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
@@ -60,7 +60,6 @@ extern void do_show_command (const char
 /* Get a string version of C's current value.  */
 extern std::string get_setshow_command_value_string (const cmd_list_element *c);
 
-extern void cmd_show_list (struct cmd_list_element *list, int from_tty,
-			   const char *prefix);
+extern void cmd_show_list (struct cmd_list_element *list, int from_tty);
 
 #endif /* CLI_CLI_SETSHOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-style.c ./gdb/cli/cli-style.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-style.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-style.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI colorizing
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,7 +25,7 @@
 
 /* True if styling is enabled.  */
 
-#if defined (__MSDOS__) || defined (__CYGWIN__)
+#if defined (__MSDOS__)
 bool cli_styling = false;
 #else
 bool cli_styling = true;
@@ -215,20 +215,16 @@ void
 cli_style_option::add_setshow_commands (enum command_class theclass,
 					const char *prefix_doc,
 					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),
 					bool skip_intensity)
 {
   m_set_prefix = std::string ("set style ") + m_name + " ";
   m_show_prefix = std::string ("show style ") + m_name + " ";
 
-  add_prefix_cmd (m_name, no_class, do_set, prefix_doc, &m_set_list,
-		  m_set_prefix.c_str (), 0, set_list);
-  add_prefix_cmd (m_name, no_class, do_show, prefix_doc, &m_show_list,
-		  m_show_prefix.c_str (), 0, show_list);
+  add_basic_prefix_cmd (m_name, no_class, prefix_doc, &m_set_list,
+			m_set_prefix.c_str (), 0, set_list);
+  add_show_prefix_cmd (m_name, no_class, prefix_doc, &m_show_list,
+		       m_show_prefix.c_str (), 0, show_list);
 
   add_setshow_enum_cmd ("foreground", theclass, cli_colors,
 			&m_foreground,
@@ -261,20 +257,6 @@ static cmd_list_element *style_set_list;
 static cmd_list_element *style_show_list;
 
 static void
-set_style (const char *arg, int from_tty)
-{
-  printf_unfiltered (_("\"set style\" must be followed "
-		       "by an appropriate subcommand.\n"));
-  help_list (style_set_list, "set style ", all_commands, gdb_stdout);
-}
-
-static void
-show_style (const char *arg, int from_tty)
-{
-  cmd_show_list (style_show_list, from_tty, "");
-}
-
-static void
 set_style_enabled  (const char *args, int from_tty, struct cmd_list_element *c)
 {
   g_source_cache.clear ();
@@ -301,26 +283,15 @@ show_style_sources (struct ui_file *file
     fprintf_filtered (file, _("Source code styling is disabled.\n"));
 }
 
-/* Builds the "set style NAME " prefix.  */
-
-static std::string
-set_style_name (const char *name)
-{
-  std::string result ("set style ");
-
-  result += name;
-  result += " ";
-  return result;
-}
-
+void _initialize_cli_style ();
 void
 _initialize_cli_style ()
 {
-  add_prefix_cmd ("style", no_class, set_style, _("\
+  add_basic_prefix_cmd ("style", no_class, _("\
 Style-specific settings.\n\
 Configure various style-related variables, such as colors"),
 		  &style_set_list, "set style ", 0, &setlist);
-  add_prefix_cmd ("style", no_class, show_style, _("\
+  add_show_prefix_cmd ("style", no_class, _("\
 Style-specific settings.\n\
 Configure various style-related variables, such as colors"),
 		  &style_show_list, "show style ", 0, &showlist);
@@ -340,84 +311,75 @@ If enabled, source code is styled.\n"
 "Note that source styling only works if styling in general is enabled,\n\
 see \"show style enabled\"."
 #else
-"Source highlighting is disabled in this installation of gdb, because\n\
-it was not linked against GNU Source Highlight."
+"Source highlighting may be disabled in this installation of gdb, because\n\
+it was not linked against GNU Source Highlight.  However, it might still be\n\
+available if the appropriate extension is available at runtime."
 #endif
 			   ), set_style_enabled, show_style_sources,
 			   &style_set_list, &style_show_list);
 
-#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)	\
-			      {						\
-				help_list				\
-				  (STYLE.set_list (),			\
-				   set_style_name (STYLE.name ()).c_str (), \
-				   all_commands,			\
-				   gdb_stdout);				\
-			      },					\
-			      &style_show_list,				\
-			      [] (const char *args, int from_tty)	\
-			      {						\
-				cmd_show_list				\
-				  (STYLE.show_list (),			\
-				   from_tty,				\
-				   "");					\
-			      }, SKIP)
-
-  STYLE_ADD_SETSHOW_COMMANDS (file_name_style,
-			      _("\
+  file_name_style.add_setshow_commands (no_class, _("\
 Filename display styling.\n\
-Configure filename colors and display intensity."), false);
+Configure filename colors and display intensity."),
+					&style_set_list, &style_show_list,
+					false);
 
-  STYLE_ADD_SETSHOW_COMMANDS (function_name_style,
-			      _("\
+  function_name_style.add_setshow_commands (no_class, _("\
 Function name display styling.\n\
-Configure function name colors and display intensity"), false);
+Configure function name colors and display intensity"),
+					    &style_set_list, &style_show_list,
+					    false);
 
-  STYLE_ADD_SETSHOW_COMMANDS (variable_name_style,
-			      _("\
+  variable_name_style.add_setshow_commands (no_class, _("\
 Variable name display styling.\n\
-Configure variable name colors and display intensity"), false);
+Configure variable name colors and display intensity"),
+					    &style_set_list, &style_show_list,
+					    false);
 
-  STYLE_ADD_SETSHOW_COMMANDS (address_style,
-			      _("\
+  address_style.add_setshow_commands (no_class, _("\
 Address display styling.\n\
-Configure address colors and display intensity"), false);
+Configure address colors and display intensity"),
+				      &style_set_list, &style_show_list,
+				      false);
 
-  STYLE_ADD_SETSHOW_COMMANDS (title_style,
-			      _("\
+  title_style.add_setshow_commands (no_class, _("\
 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."), false);
+readability."),
+				    &style_set_list, &style_show_list,
+				    false);
 
-  STYLE_ADD_SETSHOW_COMMANDS (highlight_style,
-			      _("\
+  highlight_style.add_setshow_commands (no_class, _("\
 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."), false);
+of their output."),
+					&style_set_list, &style_show_list,
+					false);
 
-  STYLE_ADD_SETSHOW_COMMANDS (metadata_style,
-			      _("\
+  metadata_style.add_setshow_commands (no_class, _("\
 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>\""), false);
+your data, for example \"<unavailable>\""),
+				       &style_set_list, &style_show_list,
+				       false);
 
-  STYLE_ADD_SETSHOW_COMMANDS (tui_border_style,
-			      _("\
+  tui_border_style.add_setshow_commands (no_class, _("\
 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);
+TUI window that does not have the focus."),
+					 &style_set_list, &style_show_list,
+					 true);
 
-  STYLE_ADD_SETSHOW_COMMANDS (tui_active_border_style,
-			      _("\
+  tui_active_border_style.add_setshow_commands (no_class, _("\
 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);
+TUI window that does have the focus."),
+						&style_set_list,
+						&style_show_list,
+						true);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-style.h ./gdb/cli/cli-style.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-style.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-style.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI stylizing
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -46,9 +46,7 @@ public:
   void add_setshow_commands (enum command_class theclass,
 			     const char *prefix_doc,
 			     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),
 			     bool skip_intensity);
 
   /* Return the 'set style NAME' command list, that can be used
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-utils.c ./gdb/cli/cli-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-utils.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-utils.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI utilities.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -37,7 +37,7 @@ get_ulongest (const char **pp, int trail
 
       if (val != NULL)	/* Value history reference */
 	{
-	  if (TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
+	  if (value_type (val)->code () == TYPE_CODE_INT)
 	    retval = value_as_long (val);
 	  else
 	    error (_("History value must have integer type."));
@@ -96,7 +96,7 @@ get_number_trailer (const char **pp, int
 
       if (val)	/* Value history reference */
 	{
-	  if (TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
+	  if (value_type (val)->code () == TYPE_CODE_INT)
 	    retval = value_as_long (val);
 	  else
 	    {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-utils.h ./gdb/cli/cli-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli/cli-utils.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli/cli-utils.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI utilities.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli-out.c ./gdb/cli-out.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli-out.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli-out.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Output generating routines for GDB CLI.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions.
    Written by Fernando Nasser for Cygnus.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli-out.h ./gdb/cli-out.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cli-out.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cli-out.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Output generating routines for GDB CLI.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/coff-pe-read.c ./gdb/coff-pe-read.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/coff-pe-read.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/coff-pe-read.c	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
    convert to internal format, for GDB. Used as a last resort if no
    debugging symbols recognized.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -266,7 +266,7 @@ add_pe_forwarded_sym (minimal_symbol_rea
      really be relocated properly, but nevertheless we make a stab at
      it, choosing an approach consistent with the history of this
      code.  */
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
+  baseaddr = objfile->text_section_offset ();
 
   reader.record_with_info (qualified_name.c_str (), vma - baseaddr, msymtype,
 			   section);
@@ -342,7 +342,7 @@ read_pe_exported_syms (minimal_symbol_re
   unsigned long exp_funcbase;
   unsigned char *expdata, *erva;
   unsigned long name_rvas, ordinals, nexp, ordbase;
-  char *dll_name = (char *) dll->filename;
+  char *dll_name = (char *) bfd_get_filename (dll);
   int otherix = PE_SECTION_TABLE_SIZE;
   int is_pe64 = 0;
   int is_pe32 = 0;
@@ -441,6 +441,12 @@ read_pe_exported_syms (minimal_symbol_re
 	}
     }
 
+  if (expptr == 0)
+    {
+      /* no section contains export table rva */
+      return;
+    }
+
   export_rva = export_opthdrrva;
   export_size = export_opthdrsize;
 
@@ -685,8 +691,9 @@ show_debug_coff_pe_read (struct ui_file
 
 /* Adds "Set/show debug coff_pe_read" commands.  */
 
+void _initialize_coff_pe_read ();
 void
-_initialize_coff_pe_read (void)
+_initialize_coff_pe_read ()
 {
   add_setshow_zuinteger_cmd ("coff-pe-read", class_maintenance,
 			     &debug_coff_pe_read,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/coff-pe-read.h ./gdb/coff-pe-read.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/coff-pe-read.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/coff-pe-read.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Interface to coff-pe-read.c (portable-executable-specific symbol reader).
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/coffread.c ./gdb/coffread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/coffread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/coffread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Read coff symbol tables and convert to internal format, for GDB.
-   Copyright (C) 1987-2020 Free Software Foundation, Inc.
+   Copyright (C) 1987-2021 Free Software Foundation, Inc.
    Contributed by David D. Johnson, Brown University (ddj@cs.brown.edu).
 
    This file is part of GDB.
@@ -753,7 +753,7 @@ coff_symtab_read (minimal_symbol_reader
 		  long symtab_offset, unsigned int nsyms,
 		  struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   struct context_stack *newobj = nullptr;
   struct coff_symbol coff_symbol;
   struct coff_symbol *cs = &coff_symbol;
@@ -919,8 +919,8 @@ coff_symtab_read (minimal_symbol_reader
 		     file with no symbols.  */
 		  if (in_source_file)
 		    complete_symtab (filestring,
-		    cs->c_value + ANOFFSET (objfile->section_offsets,
-					    SECT_OFF_TEXT (objfile)),
+				     (cs->c_value
+				      + objfile->text_section_offset ()),
 				     main_aux.x_scn.x_scnlen);
 		  in_source_file = 0;
 		}
@@ -986,7 +986,7 @@ coff_symtab_read (minimal_symbol_reader
  		    || cs->c_sclass == C_THUMBEXTFUNC
  		    || cs->c_sclass == C_THUMBEXT
  		    || (pe_file && (cs->c_sclass == C_STAT)))
-		  offset = ANOFFSET (objfile->section_offsets, sec);
+		  offset = objfile->section_offsets[sec];
 
 		if (bfd_section->flags & SEC_CODE)
 		  {
@@ -1113,8 +1113,7 @@ coff_symtab_read (minimal_symbol_reader
 			    NULL, cstk.start_addr,
 			    fcn_cs_saved.c_value
 			    + fcn_aux_saved.x_sym.x_misc.x_fsize
-			    + ANOFFSET (objfile->section_offsets,
-					SECT_OFF_TEXT (objfile)));
+			    + objfile->text_section_offset ());
 	      within_function = 0;
 	    }
 	  break;
@@ -1123,8 +1122,7 @@ coff_symtab_read (minimal_symbol_reader
 	  if (strcmp (cs->c_name, ".bb") == 0)
 	    {
 	      tmpaddr = cs->c_value;
-	      tmpaddr += ANOFFSET (objfile->section_offsets,
-				   SECT_OFF_TEXT (objfile));
+	      tmpaddr += objfile->text_section_offset ();
 	      push_context (++depth, tmpaddr);
 	    }
 	  else if (strcmp (cs->c_name, ".eb") == 0)
@@ -1147,9 +1145,7 @@ coff_symtab_read (minimal_symbol_reader
 		}
 	      if (*get_local_symbols () && !outermost_context_p ())
 		{
-		  tmpaddr =
-		    cs->c_value + ANOFFSET (objfile->section_offsets,
-					    SECT_OFF_TEXT (objfile));
+		  tmpaddr = cs->c_value + objfile->text_section_offset ();
 		  /* Make a block for the local symbols within.  */
 		  finish_block (0, cstk.old_blocks, NULL,
 				cstk.start_addr, tmpaddr);
@@ -1406,7 +1402,7 @@ static void
 enter_linenos (long file_offset, int first_line,
 	       int last_line, struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   char *rawptr;
   struct internal_lineno lptr;
 
@@ -1441,8 +1437,7 @@ enter_linenos (long file_offset, int fir
       if (L_LNNO32 (&lptr) && L_LNNO32 (&lptr) <= last_line)
 	{
 	  CORE_ADDR addr = lptr.l_addr.l_paddr;
-	  addr += ANOFFSET (objfile->section_offsets,
-			    SECT_OFF_TEXT (objfile));
+	  addr += objfile->text_section_offset ();
 	  record_line (get_current_subfile (),
 		       first_line + L_LNNO32 (&lptr),
 		       gdbarch_addr_bits_remove (gdbarch, addr));
@@ -1457,24 +1452,21 @@ patch_type (struct type *type, struct ty
 {
   struct type *target = TYPE_TARGET_TYPE (type);
   struct type *real_target = TYPE_TARGET_TYPE (real_type);
-  int field_size = TYPE_NFIELDS (real_target) * sizeof (struct field);
+  int field_size = real_target->num_fields () * sizeof (struct field);
 
   TYPE_LENGTH (target) = TYPE_LENGTH (real_target);
-  TYPE_NFIELDS (target) = TYPE_NFIELDS (real_target);
-  TYPE_FIELDS (target) = (struct field *) TYPE_ALLOC (target,
-						      field_size);
-
-  memcpy (TYPE_FIELDS (target), 
-	  TYPE_FIELDS (real_target), 
-	  field_size);
+  target->set_num_fields (real_target->num_fields ());
 
-  if (TYPE_NAME (real_target))
+  field *fields = (struct field *) TYPE_ALLOC (target, field_size);
+  memcpy (fields, real_target->fields (), field_size);
+  target->set_fields (fields);
+
+  if (real_target->name ())
     {
       /* The previous copy of TYPE_NAME is allocated by
 	 process_coff_symbol.  */
-      if (TYPE_NAME (target))
-	xfree ((char*) TYPE_NAME (target));
-      TYPE_NAME (target) = xstrdup (TYPE_NAME (real_target));
+      xfree ((char *) target->name ());
+      target->set_name (xstrdup (real_target->name ()));
     }
 }
 
@@ -1499,7 +1491,7 @@ patch_opaque_types (struct symtab *s)
          from different files with the same name.  */
       if (SYMBOL_CLASS (real_sym) == LOC_TYPEDEF
 	  && SYMBOL_DOMAIN (real_sym) == VAR_DOMAIN
-	  && TYPE_CODE (SYMBOL_TYPE (real_sym)) == TYPE_CODE_PTR
+	  && SYMBOL_TYPE (real_sym)->code () == TYPE_CODE_PTR
 	  && TYPE_LENGTH (TYPE_TARGET_TYPE (SYMBOL_TYPE (real_sym))) != 0)
 	{
 	  const char *name = real_sym->linkage_name ();
@@ -1561,14 +1553,14 @@ process_coff_symbol (struct coff_symbol
 		     union internal_auxent *aux,
 		     struct objfile *objfile)
 {
-  struct symbol *sym = allocate_symbol (objfile);
+  struct symbol *sym = new (&objfile->objfile_obstack) symbol;
   char *name;
 
   name = cs->c_name;
   name = EXTERNAL_NAME (name, objfile->obfd);
-  SYMBOL_SET_LANGUAGE (sym, get_current_subfile ()->language,
-		       &objfile->objfile_obstack);
-  SYMBOL_SET_NAMES (sym, name, true, objfile);
+  sym->set_language (get_current_subfile ()->language,
+		     &objfile->objfile_obstack);
+  sym->compute_and_set_names (name, true, objfile->per_bfd);
 
   /* default assumptions */
   SYMBOL_VALUE (sym) = cs->c_value;
@@ -1577,8 +1569,7 @@ process_coff_symbol (struct coff_symbol
 
   if (ISFCN (cs->c_type))
     {
-      SYMBOL_VALUE (sym) += ANOFFSET (objfile->section_offsets,
-				      SECT_OFF_TEXT (objfile));
+      SYMBOL_VALUE (sym) += objfile->text_section_offset ();
       SYMBOL_TYPE (sym) =
 	lookup_function_type (decode_function_type (cs, cs->c_type,
 						    aux, objfile));
@@ -1610,8 +1601,7 @@ process_coff_symbol (struct coff_symbol
 	  SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
 	  SET_SYMBOL_VALUE_ADDRESS (sym,
 				    (CORE_ADDR) cs->c_value
-				    + ANOFFSET (objfile->section_offsets,
-						SECT_OFF_TEXT (objfile)));
+				    + objfile->section_offsets[SECT_OFF_TEXT (objfile)]);
 	  add_symbol_to_list (sym, get_global_symbols ());
 	  break;
 
@@ -1621,8 +1611,7 @@ process_coff_symbol (struct coff_symbol
 	  SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
 	  SET_SYMBOL_VALUE_ADDRESS (sym,
 				    (CORE_ADDR) cs->c_value
-				    + ANOFFSET (objfile->section_offsets,
-						SECT_OFF_TEXT (objfile)));
+				    + objfile->section_offsets[SECT_OFF_TEXT (objfile)]);
 	  if (within_function)
 	    {
 	      /* Static symbol of local scope.  */
@@ -1666,10 +1655,10 @@ process_coff_symbol (struct coff_symbol
 	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
 
 	  /* If type has no name, give it one.  */
-	  if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
+	  if (SYMBOL_TYPE (sym)->name () == 0)
 	    {
-	      if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR
-		  || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_FUNC)
+	      if (SYMBOL_TYPE (sym)->code () == TYPE_CODE_PTR
+		  || SYMBOL_TYPE (sym)->code () == TYPE_CODE_FUNC)
 		{
 		  /* If we are giving a name to a type such as
 		     "pointer to foo" or "function returning foo", we
@@ -1692,8 +1681,7 @@ process_coff_symbol (struct coff_symbol
 		  ;
 		}
 	      else
-		TYPE_NAME (SYMBOL_TYPE (sym)) =
-		  xstrdup (sym->linkage_name ());
+		SYMBOL_TYPE (sym)->set_name (xstrdup (sym->linkage_name ()));
 	    }
 
 	  /* Keep track of any type which points to empty structured
@@ -1702,10 +1690,10 @@ process_coff_symbol (struct coff_symbol
 	     not an empty structured type, though; the forward
 	     references work themselves out via the magic of
 	     coff_lookup_type.  */
-	  if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR
+	  if (SYMBOL_TYPE (sym)->code () == TYPE_CODE_PTR
 	      && TYPE_LENGTH (TYPE_TARGET_TYPE (SYMBOL_TYPE (sym))) == 0
-	      && TYPE_CODE (TYPE_TARGET_TYPE (SYMBOL_TYPE (sym)))
-	         != TYPE_CODE_UNDEF)
+	      && TYPE_TARGET_TYPE (SYMBOL_TYPE (sym))->code ()
+	      != TYPE_CODE_UNDEF)
 	    {
 	      int i = hashname (sym->linkage_name ());
 
@@ -1724,11 +1712,11 @@ process_coff_symbol (struct coff_symbol
 	  /* Some compilers try to be helpful by inventing "fake"
 	     names for anonymous enums, structures, and unions, like
 	     "~0fake" or ".0fake".  Thanks, but no thanks...  */
-	  if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
+	  if (SYMBOL_TYPE (sym)->name () == 0)
 	    if (sym->linkage_name () != NULL
 		&& *sym->linkage_name () != '~'
 		&& *sym->linkage_name () != '.')
-	      TYPE_NAME (SYMBOL_TYPE (sym)) = xstrdup (sym->linkage_name ());
+	      SYMBOL_TYPE (sym)->set_name (xstrdup (sym->linkage_name ()));
 
 	  add_symbol_to_list (sym, get_file_symbols ());
 	  break;
@@ -1842,7 +1830,7 @@ decode_base_type (struct coff_symbol *cs
 		  union internal_auxent *aux, 
 		  struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   struct type *type;
 
   switch (c_type)
@@ -1888,12 +1876,12 @@ decode_base_type (struct coff_symbol *cs
 	{
 	  /* Anonymous structure type.  */
 	  type = coff_alloc_type (cs->c_symnum);
-	  TYPE_CODE (type) = TYPE_CODE_STRUCT;
-	  TYPE_NAME (type) = NULL;
+	  type->set_code (TYPE_CODE_STRUCT);
+	  type->set_name (NULL);
 	  INIT_CPLUS_SPECIFIC (type);
 	  TYPE_LENGTH (type) = 0;
-	  TYPE_FIELDS (type) = 0;
-	  TYPE_NFIELDS (type) = 0;
+	  type->set_fields (nullptr);
+	  type->set_num_fields (0);
 	}
       else
 	{
@@ -1909,11 +1897,11 @@ decode_base_type (struct coff_symbol *cs
 	{
 	  /* Anonymous union type.  */
 	  type = coff_alloc_type (cs->c_symnum);
-	  TYPE_NAME (type) = NULL;
+	  type->set_name (NULL);
 	  INIT_CPLUS_SPECIFIC (type);
 	  TYPE_LENGTH (type) = 0;
-	  TYPE_FIELDS (type) = 0;
-	  TYPE_NFIELDS (type) = 0;
+	  type->set_fields (nullptr);
+	  type->set_num_fields (0);
 	}
       else
 	{
@@ -1922,7 +1910,7 @@ decode_base_type (struct coff_symbol *cs
 					aux->x_sym.x_fcnary.x_fcn.x_endndx.l,
 					objfile);
 	}
-      TYPE_CODE (type) = TYPE_CODE_UNION;
+      type->set_code (TYPE_CODE_UNION);
       return type;
 
     case T_ENUM:
@@ -1930,11 +1918,11 @@ decode_base_type (struct coff_symbol *cs
 	{
 	  /* Anonymous enum type.  */
 	  type = coff_alloc_type (cs->c_symnum);
-	  TYPE_CODE (type) = TYPE_CODE_ENUM;
-	  TYPE_NAME (type) = NULL;
+	  type->set_code (TYPE_CODE_ENUM);
+	  type->set_name (NULL);
 	  TYPE_LENGTH (type) = 0;
-	  TYPE_FIELDS (type) = 0;
-	  TYPE_NFIELDS (type) = 0;
+	  type->set_fields (nullptr);
+	  type->set_num_fields (0);
 	}
       else
 	{
@@ -1998,7 +1986,7 @@ coff_read_struct_type (int index, int le
   int done = 0;
 
   type = coff_alloc_type (index);
-  TYPE_CODE (type) = TYPE_CODE_STRUCT;
+  type->set_code (TYPE_CODE_STRUCT);
   INIT_CPLUS_SPECIFIC (type);
   TYPE_LENGTH (type) = length;
 
@@ -2020,8 +2008,8 @@ coff_read_struct_type (int index, int le
 
 	  /* Save the data.  */
 	  list->field.name = obstack_strdup (&objfile->objfile_obstack, name);
-	  FIELD_TYPE (list->field) = decode_type (ms, ms->c_type,
-						  &sub_aux, objfile);
+	  list->field.set_type (decode_type (ms, ms->c_type, &sub_aux,
+					     objfile));
 	  SET_FIELD_BITPOS (list->field, 8 * ms->c_value);
 	  FIELD_BITSIZE (list->field) = 0;
 	  nfields++;
@@ -2036,8 +2024,8 @@ coff_read_struct_type (int index, int le
 
 	  /* Save the data.  */
 	  list->field.name = obstack_strdup (&objfile->objfile_obstack, name);
-	  FIELD_TYPE (list->field) = decode_type (ms, ms->c_type,
-						  &sub_aux, objfile);
+	  list->field.set_type (decode_type (ms, ms->c_type, &sub_aux,
+					     objfile));
 	  SET_FIELD_BITPOS (list->field, ms->c_value);
 	  FIELD_BITSIZE (list->field) = sub_aux.x_sym.x_misc.x_lnsz.x_size;
 	  nfields++;
@@ -2050,14 +2038,14 @@ coff_read_struct_type (int index, int le
     }
   /* Now create the vector of fields, and record how big it is.  */
 
-  TYPE_NFIELDS (type) = nfields;
-  TYPE_FIELDS (type) = (struct field *)
-    TYPE_ALLOC (type, sizeof (struct field) * nfields);
+  type->set_num_fields (nfields);
+  type->set_fields
+    ((struct field *) TYPE_ALLOC (type, sizeof (struct field) * nfields));
 
   /* Copy the saved-up fields into the field vector.  */
 
   for (n = nfields; list; list = list->next)
-    TYPE_FIELD (type, --n) = list->field;
+    type->field (--n) = list->field;
 
   return type;
 }
@@ -2070,7 +2058,7 @@ static struct type *
 coff_read_enum_type (int index, int length, int lastsym,
 		     struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   struct symbol *sym;
   struct type *type;
   int nsyms = 0;
@@ -2103,7 +2091,7 @@ coff_read_enum_type (int index, int leng
       switch (ms->c_sclass)
 	{
 	case C_MOE:
-	  sym = allocate_symbol (objfile);
+	  sym = new (&objfile->objfile_obstack) symbol;
 
 	  name = obstack_strdup (&objfile->objfile_obstack, name);
 	  sym->set_linkage_name (name);
@@ -2129,10 +2117,10 @@ coff_read_enum_type (int index, int leng
     TYPE_LENGTH (type) = length;
   else /* Assume ints.  */
     TYPE_LENGTH (type) = gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT;
-  TYPE_CODE (type) = TYPE_CODE_ENUM;
-  TYPE_NFIELDS (type) = nsyms;
-  TYPE_FIELDS (type) = (struct field *)
-    TYPE_ALLOC (type, sizeof (struct field) * nsyms);
+  type->set_code (TYPE_CODE_ENUM);
+  type->set_num_fields (nsyms);
+  type->set_fields
+    ((struct field *) TYPE_ALLOC (type, sizeof (struct field) * nsyms));
 
   /* Find the symbols for the values and put them into the type.
      The symbols can be found in the symlist that we put them on
@@ -2154,7 +2142,7 @@ coff_read_enum_type (int index, int leng
 
 	  SYMBOL_TYPE (xsym) = type;
 	  TYPE_FIELD_NAME (type, n) = xsym->linkage_name ();
-	  SET_FIELD_ENUMVAL (TYPE_FIELD (type, n), SYMBOL_VALUE (xsym));
+	  SET_FIELD_ENUMVAL (type->field (n), SYMBOL_VALUE (xsym));
 	  if (SYMBOL_VALUE (xsym) < 0)
 	    unsigned_enum = 0;
 	  TYPE_FIELD_BITSIZE (type, n) = 0;
@@ -2194,8 +2182,9 @@ static const struct sym_fns coff_sym_fns
   &psym_functions
 };
 
+void _initialize_coffread ();
 void
-_initialize_coffread (void)
+_initialize_coffread ()
 {
   add_symtab_fns (bfd_target_coff_flavour, &coff_sym_fns);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/command.h ./gdb/command.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/command.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/command.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Header file for command creation.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 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
@@ -29,35 +29,47 @@ struct completion_tracker;
 /* Command classes are top-level categories into which commands are
    broken down for "help" purposes.
 
-   Notes on classes: class_alias is for alias commands which are not
-   abbreviations of the original command.  class-pseudo is for
-   commands which are not really commands nor help topics ("stop").  */
+   The class_alias is used for the user-defined aliases, defined
+   using the "alias" command.
+
+   Aliases pre-defined by GDB (e.g. the alias "bt" of the "backtrace" command)
+   are not using the class_alias.
+   Different pre-defined aliases of the same command do not necessarily
+   have the same classes.  For example, class_stack is used for the
+   "backtrace" and its "bt" alias", while "info stack" (also an alias
+   of "backtrace" uses class_info.  */
 
 enum command_class
 {
-  /* Special args to help_list */
-  class_deprecated = -3, all_classes = -2, all_commands = -1,
+  /* Classes of commands followed by a comment giving the name
+     to use in "help <classname>".
+     Note that help accepts unambiguous abbreviated class names.  */
+
+  /* Special classes to help_list */
+  class_deprecated = -3,
+  all_classes = -2,  /* help without <classname> */
+  all_commands = -1, /* all */
+
   /* Classes of commands */
-  no_class = -1, class_run = 0, class_vars, class_stack, class_files,
-  class_support, class_info, class_breakpoint, class_trace,
-  class_alias, class_bookmark, class_obscure, class_maintenance,
-  class_pseudo, class_tui, class_user, class_xdb,
-  no_set_class	/* Used for "show" commands that have no corresponding
-		   "set" command.  */
-};
+  no_class = -1,
+  class_run = 0,     /* running */
+  class_vars,        /* data */
+  class_stack,       /* stack */
+  class_files,       /* files */
+  class_support,     /* support */
+  class_info,        /* status */
+  class_breakpoint,  /* breakpoints */
+  class_trace,       /* tracepoints */
+  class_alias,       /* aliases */
+  class_bookmark,
+  class_obscure,     /* obscure */
+  class_maintenance, /* internals */
+  class_tui,         /* text-user-interface */
+  class_user,        /* user-defined */
 
-/* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum
-   cmd_types'' can be moved from "command.h" to "cli-decode.h".  */
-/* Not a set/show command.  Note that some commands which begin with
-   "set" or "show" might be in this category, if their syntax does
-   not fall into one of the following categories.  */
-typedef enum cmd_types
-  {
-    not_set_cmd,
-    set_cmd,
-    show_cmd
-  }
-cmd_types;
+  /* Used for "show" commands that have no corresponding "set" command.  */
+  no_set_class
+};
 
 /* Types of "set" or "show" command.  */
 typedef enum var_types
@@ -179,6 +191,20 @@ extern struct cmd_list_element *add_pref
 						const char *, int,
 						struct cmd_list_element **);
 
+/* Like add_prefix_cmd, but sets the callback to a function that
+   simply calls help_list.  */
+
+extern struct cmd_list_element *add_basic_prefix_cmd
+  (const char *, enum command_class, const char *, struct cmd_list_element **,
+   const char *, int, struct cmd_list_element **);
+
+/* Like add_prefix_cmd, but useful for "show" prefixes.  This sets the
+   callback to a function that simply calls cmd_show_list.  */
+
+extern struct cmd_list_element *add_show_prefix_cmd
+  (const char *, enum command_class, const char *, struct cmd_list_element **,
+   const char *, int, struct cmd_list_element **);
+
 extern struct cmd_list_element *add_prefix_cmd_suppress_notification
 			(const char *name, enum command_class theclass,
 			 cmd_const_cfunc_ftype *fun,
@@ -243,20 +269,19 @@ extern void *get_cmd_context (struct cmd
 extern void execute_cmd_pre_hook (struct cmd_list_element *cmd);
 extern void execute_cmd_post_hook (struct cmd_list_element *cmd);
 
-/* Return the type of the command.  */
-extern enum cmd_types cmd_type (struct cmd_list_element *cmd);
-
 /* Flag for an ambiguous cmd_list result.  */
 #define CMD_LIST_AMBIGUOUS ((struct cmd_list_element *) -1)
 
 extern struct cmd_list_element *lookup_cmd (const char **,
 					    struct cmd_list_element *,
 					    const char *,
+					    std::string *,
 					    int, int);
 
 extern struct cmd_list_element *lookup_cmd_1 (const char **,
 					      struct cmd_list_element *,
 					      struct cmd_list_element **,
+					      std::string *,
 					      int);
 
 extern struct cmd_list_element *deprecate_cmd (struct cmd_list_element *,
@@ -450,7 +475,7 @@ extern void
 
 /* Do a "show" command for each thing on a command list.  */
 
-extern void cmd_show_list (struct cmd_list_element *, int, const char *);
+extern void cmd_show_list (struct cmd_list_element *, int);
 
 /* Used everywhere whenever at least one parameter is required and
    none is specified.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile.c ./gdb/compile/compile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* General Compile and inject code
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -691,13 +691,11 @@ compile_to_object (struct command_line *
   expr_pc = get_frame_address_in_block (get_selected_frame (NULL));
 
   /* Set up instance and context for the compiler.  */
-  if (current_language->la_get_compile_instance == NULL)
+  std::unique_ptr <compile_instance> compiler
+			(current_language->get_compile_instance ());
+  if (compiler == nullptr)
     error (_("No compiler support for language %s."),
 	   current_language->la_name);
-
-  compile_instance *compiler_instance
-    = current_language->la_get_compile_instance ();
-  std::unique_ptr<compile_instance> compiler (compiler_instance);
   compiler->set_print_callback (print_callback, NULL);
   compiler->set_scope (scope);
   compiler->set_block (expr_block);
@@ -726,8 +724,8 @@ compile_to_object (struct command_line *
     error (_("Neither a simple expression, or a multi-line specified."));
 
   std::string code
-    = current_language->la_compute_program (compiler.get (), input, gdbarch,
-					    expr_block, expr_pc);
+    = current_language->compute_program (compiler.get (), input, gdbarch,
+					 expr_block, expr_pc);
   if (compile_debug)
     fprintf_unfiltered (gdb_stdlog, "debug output:\n\n%s", code.c_str ());
 
@@ -957,8 +955,9 @@ compile_instance::compile (const char *f
 /* See compile.h.  */
 cmd_list_element *compile_cmd_element = nullptr;
 
+void _initialize_compile ();
 void
-_initialize_compile (void)
+_initialize_compile ()
 {
   struct cmd_list_element *c = NULL;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-c.h ./gdb/compile/compile-c.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-c.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-c.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header file for GDB compile C-language support.
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-cplus.h ./gdb/compile/compile-cplus.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-cplus.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-cplus.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header file for GDB compile C++ language support.
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-cplus-symbols.c ./gdb/compile/compile-cplus-symbols.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-cplus-symbols.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-cplus-symbols.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convert symbols from GDB to GCC
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -30,7 +30,7 @@
 #include "value.h"
 #include "exceptions.h"
 #include "gdbtypes.h"
-#include "dwarf2loc.h"
+#include "dwarf2/loc.h"
 #include "cp-support.h"
 #include "gdbcmd.h"
 #include "compile-c.h"
@@ -73,9 +73,9 @@ convert_one_symbol (compile_cplus_instan
       switch (SYMBOL_CLASS (sym.symbol))
 	{
 	case LOC_TYPEDEF:
-	  if (TYPE_CODE (SYMBOL_TYPE (sym.symbol)) == TYPE_CODE_TYPEDEF)
+	  if (SYMBOL_TYPE (sym.symbol)->code () == TYPE_CODE_TYPEDEF)
 	    kind = GCC_CP_SYMBOL_TYPEDEF;
-	  else  if (TYPE_CODE (SYMBOL_TYPE (sym.symbol)) == TYPE_CODE_NAMESPACE)
+	  else  if (SYMBOL_TYPE (sym.symbol)->code () == TYPE_CODE_NAMESPACE)
 	    return;
 	  break;
 
@@ -94,7 +94,7 @@ convert_one_symbol (compile_cplus_instan
 	  break;
 
 	case LOC_CONST:
-	  if (TYPE_CODE (SYMBOL_TYPE (sym.symbol)) == TYPE_CODE_ENUM)
+	  if (SYMBOL_TYPE (sym.symbol)->code () == TYPE_CODE_ENUM)
 	    {
 	      /* Already handled by convert_enum.  */
 	      return;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-cplus-types.c ./gdb/compile/compile-cplus-types.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-cplus-types.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-cplus-types.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convert types from GDB to GCC
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -88,7 +88,7 @@ get_field_access_flag (const struct type
 enum gcc_cp_symbol_kind
 get_method_access_flag (const struct type *type, int fni, int num)
 {
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT);
+  gdb_assert (type->code () == TYPE_CODE_STRUCT);
 
   /* If this type was not declared a class, everything is public.  */
   if (!TYPE_DECLARED_CLASS (type))
@@ -161,7 +161,7 @@ type_name_to_scope (const char *type_nam
 
 	  scope.push_back (comp);
 
-	  if (TYPE_CODE (SYMBOL_TYPE (bsymbol.symbol)) != TYPE_CODE_NAMESPACE)
+	  if (SYMBOL_TYPE (bsymbol.symbol)->code () != TYPE_CODE_NAMESPACE)
 	    {
 	      /* We're done.  */
 	      break;
@@ -271,7 +271,7 @@ compile_cplus_instance::enter_scope (com
 	(m_scopes.back ().begin (), m_scopes.back ().end () - 1,
 	 [this] (const scope_component &comp)
 	 {
-	  gdb_assert (TYPE_CODE (SYMBOL_TYPE (comp.bsymbol.symbol))
+	  gdb_assert (SYMBOL_TYPE (comp.bsymbol.symbol)->code ()
 		      == TYPE_CODE_NAMESPACE);
 
 	  const char *ns = (comp.name == CP_ANONYMOUS_NAMESPACE_STR ? nullptr
@@ -313,7 +313,7 @@ compile_cplus_instance::leave_scope ()
       std::for_each
 	(current.begin (),current.end () - 1,
 	 [this] (const scope_component &comp) {
-	  gdb_assert (TYPE_CODE (SYMBOL_TYPE (comp.bsymbol.symbol))
+	  gdb_assert (SYMBOL_TYPE (comp.bsymbol.symbol)->code ()
 		      == TYPE_CODE_NAMESPACE);
 	  this->plugin ().pop_binding_level (comp.name.c_str ());
 	});
@@ -364,7 +364,7 @@ compile_cplus_instance::new_scope (const
     }
   else
     {
-      if (TYPE_NAME (type) == nullptr)
+      if (type->name () == nullptr)
 	{
 	  /* Anonymous type  */
 
@@ -383,8 +383,8 @@ compile_cplus_instance::new_scope (const
 	{
 	  scope_component comp
 	    = {
-	        decl_name (TYPE_NAME (type)).get (),
-		lookup_symbol (TYPE_NAME (type), block (), VAR_DOMAIN, nullptr)
+	        decl_name (type->name ()).get (),
+		lookup_symbol (type->name (), block (), VAR_DOMAIN, nullptr)
 	      };
 	  scope.push_back (comp);
 	}
@@ -413,7 +413,7 @@ compile_cplus_convert_reference (compile
   gcc_type target = instance->convert_type (TYPE_TARGET_TYPE (type));
 
   enum gcc_cp_ref_qualifiers quals = GCC_CP_REF_QUAL_NONE;
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_REF:
       quals = GCC_CP_REF_QUAL_LVALUE;
@@ -453,10 +453,10 @@ static gcc_type
 compile_cplus_convert_array (compile_cplus_instance *instance,
 			     struct type *type)
 {
-  struct type *range = TYPE_INDEX_TYPE (type);
+  struct type *range = type->index_type ();
   gcc_type element_type = instance->convert_type (TYPE_TARGET_TYPE (type));
 
-  if (TYPE_LOW_BOUND_KIND (range) != PROP_CONST)
+  if (range->bounds ()->low.kind () != PROP_CONST)
     {
       const char *s = _("array type with non-constant"
 			" lower bound is not supported");
@@ -464,7 +464,7 @@ compile_cplus_convert_array (compile_cpl
       return instance->plugin ().error (s);
     }
 
-  if (TYPE_LOW_BOUND (range) != 0)
+  if (range->bounds ()->low.const_val () != 0)
     {
       const char *s = _("cannot convert array type with "
 			"non-zero lower bound to C");
@@ -472,8 +472,8 @@ compile_cplus_convert_array (compile_cpl
       return instance->plugin ().error (s);
     }
 
-  if (TYPE_HIGH_BOUND_KIND (range) == PROP_LOCEXPR
-      || TYPE_HIGH_BOUND_KIND (range) == PROP_LOCLIST)
+  if (range->bounds ()->high.kind () == PROP_LOCEXPR
+      || range->bounds ()->high.kind () == PROP_LOCLIST)
     {
       if (TYPE_VECTOR (type))
 	{
@@ -483,7 +483,7 @@ compile_cplus_convert_array (compile_cpl
 	}
 
       std::string upper_bound
-	= c_get_range_decl_name (&TYPE_RANGE_DATA (range)->high);
+	= c_get_range_decl_name (&range->bounds ()->high);
       return instance->plugin ().build_vla_array_type (element_type,
 					     upper_bound.c_str ());
     }
@@ -515,13 +515,13 @@ compile_cplus_convert_typedef (compile_c
 			       struct type *type,
 			       enum gcc_cp_symbol_kind nested_access)
 {
-  compile_scope scope = instance->new_scope (TYPE_NAME (type), type);
+  compile_scope scope = instance->new_scope (type->name (), type);
 
   if (scope.nested_type () != GCC_TYPE_NONE)
     return scope.nested_type ();
 
   gdb::unique_xmalloc_ptr<char> name
-    = compile_cplus_instance::decl_name (TYPE_NAME (type));
+    = compile_cplus_instance::decl_name (type->name ());
 
   /* Make sure the scope for this type has been pushed.  */
   instance->enter_scope (std::move (scope));
@@ -580,7 +580,7 @@ static void
 compile_cplus_convert_struct_or_union_members
   (compile_cplus_instance *instance, struct type *type, gcc_type comp_type)
 {
-  for (int i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); ++i)
+  for (int i = TYPE_N_BASECLASSES (type); i < type->num_fields (); ++i)
     {
       const char *field_name = TYPE_FIELD_NAME (type, i);
 
@@ -593,9 +593,9 @@ compile_cplus_convert_struct_or_union_me
 	field_name = nullptr;
 
       gcc_type field_type
-	= instance->convert_type (TYPE_FIELD_TYPE (type, i));
+	= instance->convert_type (type->field (i).type ());
 
-      if (field_is_static (&TYPE_FIELD (type, i)))
+      if (field_is_static (&type->field (i)))
 	{
 	  CORE_ADDR physaddr;
 
@@ -648,7 +648,7 @@ compile_cplus_convert_struct_or_union_me
 	    | get_field_access_flag (type, i);
 
 	  if (bitsize == 0)
-	    bitsize = 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, i));
+	    bitsize = 8 * TYPE_LENGTH (type->field (i).type ());
 
 	  instance->plugin ().build_field
 	    (field_name, field_type, field_flags, bitsize,
@@ -807,10 +807,10 @@ compile_cplus_convert_struct_or_union (c
 
   /* Get the decl name of this type.  */
   gdb::unique_xmalloc_ptr<char> name
-    = compile_cplus_instance::decl_name (TYPE_NAME (type));
+    = compile_cplus_instance::decl_name (type->name ());
 
   /* Create a new scope for TYPE.  */
-  compile_scope scope = instance->new_scope (TYPE_NAME (type), type);
+  compile_scope scope = instance->new_scope (type->name (), type);
 
   if (scope.nested_type () != GCC_TYPE_NONE)
     {
@@ -826,7 +826,7 @@ compile_cplus_convert_struct_or_union (c
      table.  This lets recursive types work.  */
 
   gcc_decl resuld;
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     {
       const char *what = TYPE_DECLARED_CLASS (type) ? "struct" : "class";
 
@@ -839,14 +839,14 @@ compile_cplus_convert_struct_or_union (c
     }
   else
     {
-      gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
+      gdb_assert (type->code () == TYPE_CODE_UNION);
       resuld = instance->plugin ().build_decl
 	("union", name.get (), GCC_CP_SYMBOL_UNION | nested_access,
 	 0, nullptr, 0, filename, line);
     }
 
   gcc_type result;
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     {
       struct gcc_vbase_array bases;
       int num_baseclasses = TYPE_N_BASECLASSES (type);
@@ -878,7 +878,7 @@ compile_cplus_convert_struct_or_union (c
     }
   else
     {
-      gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
+      gdb_assert (type->code () == TYPE_CODE_UNION);
       result = instance->plugin ().start_class_type
 	(name.get (), resuld, nullptr, filename, line);
     }
@@ -913,7 +913,7 @@ compile_cplus_convert_enum (compile_cplu
   bool scoped_enum_p = false;
 
   /* Create a new scope for this type.  */
-  compile_scope scope = instance->new_scope (TYPE_NAME (type), type);
+  compile_scope scope = instance->new_scope (type->name (), type);
 
   if (scope.nested_type () != GCC_TYPE_NONE)
     {
@@ -923,7 +923,7 @@ compile_cplus_convert_enum (compile_cplu
     }
 
   gdb::unique_xmalloc_ptr<char> name
-    = compile_cplus_instance::decl_name (TYPE_NAME (type));
+    = compile_cplus_instance::decl_name (type->name ());
 
   /* Push all scopes.  */
   instance->enter_scope (std::move (scope));
@@ -938,7 +938,7 @@ compile_cplus_convert_enum (compile_cplu
 					      ? GCC_CP_FLAG_ENUM_SCOPED
 					      : GCC_CP_FLAG_ENUM_NOFLAG),
 					   nullptr, 0);
-  for (int i = 0; i < TYPE_NFIELDS (type); ++i)
+  for (int i = 0; i < type->num_fields (); ++i)
     {
       gdb::unique_xmalloc_ptr<char> fname
 	= compile_cplus_instance::decl_name (TYPE_FIELD_NAME (type, i));
@@ -986,9 +986,9 @@ compile_cplus_convert_func (compile_cplu
   gcc_type return_type = instance->convert_type (target_type);
 
   struct gcc_type_array array =
-    { TYPE_NFIELDS (type), XNEWVEC (gcc_type, TYPE_NFIELDS (type)) };
+    { type->num_fields (), XNEWVEC (gcc_type, type->num_fields ()) };
   int artificials = 0;
-  for (int i = 0; i < TYPE_NFIELDS (type); ++i)
+  for (int i = 0; i < type->num_fields (); ++i)
     {
       if (strip_artificial && TYPE_FIELD_ARTIFICIAL (type, i))
 	{
@@ -998,7 +998,7 @@ compile_cplus_convert_func (compile_cplu
       else
 	{
 	  array.elements[i - artificials]
-	    = instance->convert_type (TYPE_FIELD_TYPE (type, i));
+	    = instance->convert_type (type->field (i).type ());
 	}
     }
 
@@ -1022,7 +1022,7 @@ compile_cplus_convert_int (compile_cplus
     }
 
   return instance->plugin ().get_int_type
-    (TYPE_UNSIGNED (type), TYPE_LENGTH (type), TYPE_NAME (type));
+    (TYPE_UNSIGNED (type), TYPE_LENGTH (type), type->name ());
 }
 
 /* Convert a floating-point type to its gcc representation.  */
@@ -1032,7 +1032,7 @@ compile_cplus_convert_float (compile_cpl
 			     struct type *type)
 {
   return instance->plugin ().get_float_type
-    (TYPE_LENGTH (type), TYPE_NAME (type));
+    (TYPE_LENGTH (type), type->name ());
 }
 
 /* Convert the 'void' type to its gcc representation.  */
@@ -1102,9 +1102,9 @@ static gcc_type
 compile_cplus_convert_namespace (compile_cplus_instance *instance,
 				 struct type *type)
 {
-  compile_scope scope = instance->new_scope (TYPE_NAME (type), type);
+  compile_scope scope = instance->new_scope (type->name (), type);
   gdb::unique_xmalloc_ptr<char> name
-    = compile_cplus_instance::decl_name (TYPE_NAME (type));
+    = compile_cplus_instance::decl_name (type->name ());
 
   /* Push scope.  */
   instance->enter_scope (std::move (scope));
@@ -1140,7 +1140,7 @@ convert_type_cplus_basic (compile_cplus_
 				     | TYPE_INSTANCE_FLAG_RESTRICT)) != 0)
     return compile_cplus_convert_qualified (instance, type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_REF:
     case TYPE_CODE_RVALUE_REF:
@@ -1198,7 +1198,7 @@ convert_type_cplus_basic (compile_cplus_
     }
 
   std::string s = string_printf (_("unhandled TYPE_CODE %d"),
-				 TYPE_CODE (type));
+				 type->code ());
 
   return instance->plugin ().error (s.c_str ());
 }
@@ -1404,6 +1404,7 @@ gcc_cp_plugin::pop_binding_level (const
   return pop_binding_level ();
 }
 
+void _initialize_compile_cplus_types ();
 void
 _initialize_compile_cplus_types ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-c-support.c ./gdb/compile/compile-c-support.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-c-support.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-c-support.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* C/C++ language support for compilation.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -242,7 +242,7 @@ generate_register_struct (struct ui_file
 	       maximally-aligned array of the correct size.  */
 
 	    fputs_unfiltered ("  ", stream);
-	    switch (TYPE_CODE (regtype))
+	    switch (regtype->code ())
 	      {
 	      case TYPE_CODE_PTR:
 		fprintf_filtered (stream, "__gdb_uintptr %s",
@@ -660,7 +660,7 @@ typedef compile_program<compile_cplus_in
 			cplus_add_code_header, c_add_code_footer,
 			cplus_add_input> cplus_compile_program;
 
-/* The la_compute_program method for C.  */
+/* The compute_program method for C.  */
 
 std::string
 c_compute_program (compile_instance *inst,
@@ -675,7 +675,7 @@ c_compute_program (compile_instance *ins
   return program.compute (input, expr_block, expr_pc);
 }
 
-/* The la_compute_program method for C++.  */
+/* The compute_program method for C++.  */
 
 std::string
 cplus_compute_program (compile_instance *inst,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-c-symbols.c ./gdb/compile/compile-c-symbols.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-c-symbols.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-c-symbols.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convert symbols from GDB to GCC
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -29,7 +29,7 @@
 #include "value.h"
 #include "exceptions.h"
 #include "gdbtypes.h"
-#include "dwarf2loc.h"
+#include "dwarf2/loc.h"
 
 
 
@@ -99,7 +99,7 @@ convert_one_symbol (compile_c_instance *
 	  break;
 
 	case LOC_CONST:
-	  if (TYPE_CODE (SYMBOL_TYPE (sym.symbol)) == TYPE_CODE_ENUM)
+	  if (SYMBOL_TYPE (sym.symbol)->code () == TYPE_CODE_ENUM)
 	    {
 	      /* Already handled by convert_enum.  */
 	      return;
@@ -497,14 +497,14 @@ generate_vla_size (compile_instance *com
   if (TYPE_IS_REFERENCE (type))
     type = check_typedef (TYPE_TARGET_TYPE (type));
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_RANGE:
       {
-	if (TYPE_HIGH_BOUND_KIND (type) == PROP_LOCEXPR
-	    || TYPE_HIGH_BOUND_KIND (type) == PROP_LOCLIST)
+	if (type->bounds ()->high.kind () == PROP_LOCEXPR
+	    || type->bounds ()->high.kind () == PROP_LOCLIST)
 	  {
-	    const struct dynamic_prop *prop = &TYPE_RANGE_DATA (type)->high;
+	    const struct dynamic_prop *prop = &type->bounds ()->high;
 	    std::string name = c_get_range_decl_name (prop);
 
 	    dwarf2_compile_property_to_c (stream, name.c_str (),
@@ -516,7 +516,7 @@ generate_vla_size (compile_instance *com
 
     case TYPE_CODE_ARRAY:
       generate_vla_size (compiler, stream, gdbarch, registers_used, pc,
-			 TYPE_INDEX_TYPE (type), sym);
+			 type->index_type (), sym);
       generate_vla_size (compiler, stream, gdbarch, registers_used, pc,
 			 TYPE_TARGET_TYPE (type), sym);
       break;
@@ -526,10 +526,10 @@ generate_vla_size (compile_instance *com
       {
 	int i;
 
-	for (i = 0; i < TYPE_NFIELDS (type); ++i)
-	  if (!field_is_static (&TYPE_FIELD (type, i)))
+	for (i = 0; i < type->num_fields (); ++i)
+	  if (!field_is_static (&type->field (i)))
 	    generate_vla_size (compiler, stream, gdbarch, registers_used, pc,
-			       TYPE_FIELD_TYPE (type, i), sym);
+			       type->field (i).type (), sym);
       }
       break;
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-c-types.c ./gdb/compile/compile-c-types.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-c-types.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-c-types.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convert types from GDB to GCC
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -40,19 +40,19 @@ static gcc_type
 convert_array (compile_c_instance *context, struct type *type)
 {
   gcc_type element_type;
-  struct type *range = TYPE_INDEX_TYPE (type);
+  struct type *range = type->index_type ();
 
   element_type = context->convert_type (TYPE_TARGET_TYPE (type));
 
-  if (TYPE_LOW_BOUND_KIND (range) != PROP_CONST)
+  if (range->bounds ()->low.kind () != PROP_CONST)
     return context->plugin ().error (_("array type with non-constant"
 				       " lower bound is not supported"));
-  if (TYPE_LOW_BOUND (range) != 0)
+  if (range->bounds ()->low.const_val () != 0)
     return context->plugin ().error (_("cannot convert array type with "
 				       "non-zero lower bound to C"));
 
-  if (TYPE_HIGH_BOUND_KIND (range) == PROP_LOCEXPR
-      || TYPE_HIGH_BOUND_KIND (range) == PROP_LOCLIST)
+  if (range->bounds ()->high.kind () == PROP_LOCEXPR
+      || range->bounds ()->high.kind () == PROP_LOCLIST)
     {
       gcc_type result;
 
@@ -61,7 +61,7 @@ convert_array (compile_c_instance *conte
 					   " is not supported"));
 
       std::string upper_bound
-	= c_get_range_decl_name (&TYPE_RANGE_DATA (range)->high);
+	= c_get_range_decl_name (&range->bounds ()->high);
       result = context->plugin ().build_vla_array_type (element_type,
 							upper_bound.c_str ());
       return result;
@@ -94,23 +94,23 @@ convert_struct_or_union (compile_c_insta
 
   /* First we create the resulting type and enter it into our hash
      table.  This lets recursive types work.  */
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     result = context->plugin ().build_record_type ();
   else
     {
-      gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
+      gdb_assert (type->code () == TYPE_CODE_UNION);
       result = context->plugin ().build_union_type ();
     }
   context->insert_type (type, result);
 
-  for (i = 0; i < TYPE_NFIELDS (type); ++i)
+  for (i = 0; i < type->num_fields (); ++i)
     {
       gcc_type field_type;
       unsigned long bitsize = TYPE_FIELD_BITSIZE (type, i);
 
-      field_type = context->convert_type (TYPE_FIELD_TYPE (type, i));
+      field_type = context->convert_type (type->field (i).type ());
       if (bitsize == 0)
-	bitsize = 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, i));
+	bitsize = 8 * TYPE_LENGTH (type->field (i).type ());
       context->plugin ().build_add_field (result,
 					  TYPE_FIELD_NAME (type, i),
 					  field_type,
@@ -134,7 +134,7 @@ convert_enum (compile_c_instance *contex
 					     TYPE_LENGTH (type));
 
   result = context->plugin ().build_enum_type (int_type);
-  for (i = 0; i < TYPE_NFIELDS (type); ++i)
+  for (i = 0; i < type->num_fields (); ++i)
     {
       context->plugin ().build_add_enum_constant
 	(result, TYPE_FIELD_NAME (type, i), TYPE_FIELD_ENUMVAL (type, i));
@@ -175,10 +175,10 @@ convert_func (compile_c_instance *contex
      types.  Those are impossible in C, though.  */
   return_type = context->convert_type (target_type);
 
-  array.n_elements = TYPE_NFIELDS (type);
-  array.elements = XNEWVEC (gcc_type, TYPE_NFIELDS (type));
-  for (i = 0; i < TYPE_NFIELDS (type); ++i)
-    array.elements[i] = context->convert_type (TYPE_FIELD_TYPE (type, i));
+  array.n_elements = type->num_fields ();
+  array.elements = XNEWVEC (gcc_type, type->num_fields ());
+  for (i = 0; i < type->num_fields (); ++i)
+    array.elements[i] = context->convert_type (type->field (i).type ());
 
   result = context->plugin ().build_function_type (return_type,
 						   &array, is_varargs);
@@ -201,7 +201,7 @@ convert_int (compile_c_instance *context
 	}
       return context->plugin ().int_type (TYPE_UNSIGNED (type),
 					  TYPE_LENGTH (type),
-					  TYPE_NAME (type));
+					  type->name ());
     }
   else
     return context->plugin ().int_type_v0 (TYPE_UNSIGNED (type),
@@ -215,7 +215,7 @@ convert_float (compile_c_instance *conte
 {
   if (context->plugin ().version () >= GCC_C_FE_VERSION_1)
     return context->plugin ().float_type (TYPE_LENGTH (type),
-					  TYPE_NAME (type));
+					  type->name ());
   else
     return context->plugin ().float_type_v0 (TYPE_LENGTH (type));
 }
@@ -282,7 +282,7 @@ convert_type_basic (compile_c_instance *
 				     | TYPE_INSTANCE_FLAG_RESTRICT)) != 0)
     return convert_qualified (context, type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
       return convert_pointer (context, type);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile.h ./gdb/compile/compile.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Header file for Compile and inject module.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 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
@@ -21,6 +21,7 @@
 struct ui_file;
 struct gdbarch;
 struct dwarf2_per_cu_data;
+struct dwarf2_per_objfile;
 struct symbol;
 struct dynamic_prop;
 
@@ -53,6 +54,9 @@ extern void eval_compile_command (struct
    OPT_PTR and OP_END are the bounds of the DWARF expression.
 
    PER_CU is the per-CU object used for looking up various other
+   things.
+
+   PER_OBJFILE is the per-objfile object also used for looking up various other
    things.  */
 
 extern void compile_dwarf_expr_to_c (string_file *stream,
@@ -64,7 +68,8 @@ extern void compile_dwarf_expr_to_c (str
 				     unsigned int addr_size,
 				     const gdb_byte *op_ptr,
 				     const gdb_byte *op_end,
-				     struct dwarf2_per_cu_data *per_cu);
+				     dwarf2_per_cu_data *per_cu,
+				     dwarf2_per_objfile *per_objfile);
 
 /* Compile a DWARF bounds expression to C, suitable for use by the
    compiler.
@@ -88,6 +93,9 @@ extern void compile_dwarf_expr_to_c (str
    OPT_PTR and OP_END are the bounds of the DWARF expression.
 
    PER_CU is the per-CU object used for looking up various other
+   things.
+
+   PER_OBJFILE is the per-objfile object also used for looking up various other
    things.  */
 
 extern void compile_dwarf_bounds_to_c (string_file *stream,
@@ -99,7 +107,8 @@ extern void compile_dwarf_bounds_to_c (s
 				       unsigned int addr_size,
 				       const gdb_byte *op_ptr,
 				       const gdb_byte *op_end,
-				       struct dwarf2_per_cu_data *per_cu);
+				       dwarf2_per_cu_data *per_cu,
+				       dwarf2_per_objfile *per_objfile);
 
 extern void compile_print_value (struct value *val, void *data_voidp);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-internal.h ./gdb/compile/compile-internal.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-internal.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-internal.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header file for GDB compile command and supporting functions.
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-loc2c.c ./gdb/compile/compile-loc2c.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-loc2c.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-loc2c.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convert a DWARF location expression to C
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -19,15 +19,16 @@
 
 #include "defs.h"
 #include "dwarf2.h"
-#include "dwarf2expr.h"
-#include "dwarf2loc.h"
+#include "dwarf2/expr.h"
+#include "dwarf2/loc.h"
+#include "dwarf2/read.h"
 #include "ui-file.h"
 #include "utils.h"
 #include "compile-internal.h"
 #include "compile-c.h"
 #include "compile.h"
 #include "block.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "gdbsupport/gdb_vecs.h"
 #include "value.h"
 #include "gdbarch.h"
@@ -582,7 +583,8 @@ do_compile_dwarf_expr_to_c (int indent,
 			    unsigned int addr_size,
 			    const gdb_byte *op_ptr, const gdb_byte *op_end,
 			    CORE_ADDR *initial,
-			    struct dwarf2_per_cu_data *per_cu)
+			    dwarf2_per_cu_data *per_cu,
+			    dwarf2_per_objfile *per_objfile)
 {
   /* We keep a counter so that labels and other objects we create have
      unique names.  */
@@ -718,7 +720,7 @@ do_compile_dwarf_expr_to_c (int indent,
 	     index, not an address.  We don't support things like
 	     branching between the address and the TLS op.  */
 	  if (op_ptr >= op_end || *op_ptr != DW_OP_GNU_push_tls_address)
-	    uoffset += dwarf2_per_cu_text_offset (per_cu);
+	    uoffset += per_objfile->objfile->text_section_offset ();
 	  push (indent, stream, uoffset);
 	  break;
 
@@ -895,7 +897,7 @@ do_compile_dwarf_expr_to_c (int indent,
 					sym, pc,
 					arch, registers_used, addr_size,
 					datastart, datastart + datalen,
-					NULL, per_cu);
+					NULL, per_cu, per_objfile);
 
 	    pushf (indent, stream, "%s + %s", fb_name, hex_string (offset));
 	  }
@@ -1076,7 +1078,7 @@ do_compile_dwarf_expr_to_c (int indent,
 					    sym, pc, arch, registers_used,
 					    addr_size,
 					    cfa_start, cfa_end,
-					    &text_offset, per_cu);
+					    &text_offset, per_cu, per_objfile);
 		pushf (indent, stream, "%s", cfa_name);
 	      }
 	  }
@@ -1122,11 +1124,12 @@ compile_dwarf_expr_to_c (string_file *st
 			 struct gdbarch *arch, unsigned char *registers_used,
 			 unsigned int addr_size,
 			 const gdb_byte *op_ptr, const gdb_byte *op_end,
-			 struct dwarf2_per_cu_data *per_cu)
+			 dwarf2_per_cu_data *per_cu,
+			 dwarf2_per_objfile *per_objfile)
 {
   do_compile_dwarf_expr_to_c (2, stream, GCC_UINTPTR, result_name, sym, pc,
 			      arch, registers_used, addr_size, op_ptr, op_end,
-			      NULL, per_cu);
+			      NULL, per_cu, per_objfile);
 }
 
 /* See compile.h.  */
@@ -1139,9 +1142,11 @@ compile_dwarf_bounds_to_c (string_file *
 			   struct gdbarch *arch, unsigned char *registers_used,
 			   unsigned int addr_size,
 			   const gdb_byte *op_ptr, const gdb_byte *op_end,
-			   struct dwarf2_per_cu_data *per_cu)
+			   dwarf2_per_cu_data *per_cu,
+			   dwarf2_per_objfile *per_objfile)
 {
   do_compile_dwarf_expr_to_c (2, stream, "unsigned long ", result_name,
 			      sym, pc, arch, registers_used,
-			      addr_size, op_ptr, op_end, NULL, per_cu);
+			      addr_size, op_ptr, op_end, NULL, per_cu,
+			      per_objfile);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-object-load.c ./gdb/compile/compile-object-load.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-object-load.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-object-load.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Load module for 'compile' command.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -402,6 +402,9 @@ get_out_value_type (struct symbol *func_
   int nblocks = 0;
   int block_loop = 0;
 
+  lookup_name_info func_matcher (GCC_FE_WRAPPER_FUNCTION,
+				 symbol_name_match_type::SEARCH_NAME);
+
   bv = SYMTAB_BLOCKVECTOR (func_sym->owner.symtab);
   nblocks = BLOCKVECTOR_NBLOCKS (bv);
 
@@ -433,13 +436,11 @@ get_out_value_type (struct symbol *func_
       if (function != NULL
 	  && (BLOCK_SUPERBLOCK (function_block)
 	      == BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK))
-	  && (strcmp_iw (function->linkage_name (),
-			 GCC_FE_WRAPPER_FUNCTION)
-	      == 0))
+	  && symbol_matches_search_name (function, func_matcher))
 	break;
     }
   if (block_loop == nblocks)
-    error (_("No \"%s\" symbol found"), COMPILE_I_EXPR_PTR_TYPE);
+    error (_("No \"%s\" symbol found"), COMPILE_I_EXPR_VAL);
 
   gdb_type = SYMBOL_TYPE (gdb_val_sym);
   gdb_type = check_typedef (gdb_type);
@@ -451,7 +452,7 @@ get_out_value_type (struct symbol *func_
     error (_("No \"%s\" symbol found"), COMPILE_I_EXPR_PTR_TYPE);
   gdb_ptr_type = SYMBOL_TYPE (gdb_ptr_type_sym);
   gdb_ptr_type = check_typedef (gdb_ptr_type);
-  if (TYPE_CODE (gdb_ptr_type) != TYPE_CODE_PTR)
+  if (gdb_ptr_type->code () != TYPE_CODE_PTR)
     error (_("Type of \"%s\" is not a pointer"), COMPILE_I_EXPR_PTR_TYPE);
   gdb_type_from_ptr = check_typedef (TYPE_TARGET_TYPE (gdb_ptr_type));
 
@@ -463,14 +464,14 @@ get_out_value_type (struct symbol *func_
       return gdb_type;
     }
 
-  if (TYPE_CODE (gdb_type) != TYPE_CODE_PTR)
+  if (gdb_type->code () != TYPE_CODE_PTR)
     error (_("Invalid type code %d of symbol \"%s\" "
 	     "in compiled module \"%s\"."),
-	   TYPE_CODE (gdb_type_from_ptr), COMPILE_I_EXPR_VAL,
+	   gdb_type_from_ptr->code (), COMPILE_I_EXPR_VAL,
 	   objfile_name (objfile));
   
   retval = gdb_type_from_ptr;
-  switch (TYPE_CODE (gdb_type_from_ptr))
+  switch (gdb_type_from_ptr->code ())
     {
     case TYPE_CODE_ARRAY:
       gdb_type_from_ptr = TYPE_TARGET_TYPE (gdb_type_from_ptr);
@@ -480,7 +481,7 @@ get_out_value_type (struct symbol *func_
     default:
       error (_("Invalid type code %d of symbol \"%s\" "
 	       "in compiled module \"%s\"."),
-	     TYPE_CODE (gdb_type_from_ptr), COMPILE_I_EXPR_PTR_TYPE,
+	     gdb_type_from_ptr->code (), COMPILE_I_EXPR_PTR_TYPE,
 	     objfile_name (objfile));
     }
   if (!types_deeply_equal (gdb_type_from_ptr,
@@ -504,21 +505,21 @@ get_regs_type (struct symbol *func_sym,
   struct type *regsp_type, *regs_type;
 
   /* No register parameter present.  */
-  if (TYPE_NFIELDS (func_type) == 0)
+  if (func_type->num_fields () == 0)
     return NULL;
 
-  regsp_type = check_typedef (TYPE_FIELD_TYPE (func_type, 0));
-  if (TYPE_CODE (regsp_type) != TYPE_CODE_PTR)
+  regsp_type = check_typedef (func_type->field (0).type ());
+  if (regsp_type->code () != TYPE_CODE_PTR)
     error (_("Invalid type code %d of first parameter of function \"%s\" "
 	     "in compiled module \"%s\"."),
-	   TYPE_CODE (regsp_type), GCC_FE_WRAPPER_FUNCTION,
+	   regsp_type->code (), GCC_FE_WRAPPER_FUNCTION,
 	   objfile_name (objfile));
 
   regs_type = check_typedef (TYPE_TARGET_TYPE (regsp_type));
-  if (TYPE_CODE (regs_type) != TYPE_CODE_STRUCT)
+  if (regs_type->code () != TYPE_CODE_STRUCT)
     error (_("Invalid type code %d of dereferenced first parameter "
 	     "of function \"%s\" in compiled module \"%s\"."),
-	   TYPE_CODE (regs_type), GCC_FE_WRAPPER_FUNCTION,
+	   regs_type->code (), GCC_FE_WRAPPER_FUNCTION,
 	   objfile_name (objfile));
 
   return regs_type;
@@ -533,14 +534,14 @@ store_regs (struct type *regs_type, CORE
   struct gdbarch *gdbarch = target_gdbarch ();
   int fieldno;
 
-  for (fieldno = 0; fieldno < TYPE_NFIELDS (regs_type); fieldno++)
+  for (fieldno = 0; fieldno < regs_type->num_fields (); fieldno++)
     {
       const char *reg_name = TYPE_FIELD_NAME (regs_type, fieldno);
       ULONGEST reg_bitpos = TYPE_FIELD_BITPOS (regs_type, fieldno);
       ULONGEST reg_bitsize = TYPE_FIELD_BITSIZE (regs_type, fieldno);
       ULONGEST reg_offset;
-      struct type *reg_type = check_typedef (TYPE_FIELD_TYPE (regs_type,
-							      fieldno));
+      struct type *reg_type
+	= check_typedef (regs_type->field (fieldno).type ());
       ULONGEST reg_size = TYPE_LENGTH (reg_type);
       int regnum;
       struct value *regval;
@@ -554,10 +555,10 @@ store_regs (struct type *regs_type, CORE
 	       reg_name, pulongest (reg_bitpos), pulongest (reg_bitsize));
       reg_offset = reg_bitpos / 8;
 
-      if (TYPE_CODE (reg_type) != TYPE_CODE_INT
-	  && TYPE_CODE (reg_type) != TYPE_CODE_PTR)
+      if (reg_type->code () != TYPE_CODE_INT
+	  && reg_type->code () != TYPE_CODE_PTR)
 	error (_("Invalid register \"%s\" type code %d"), reg_name,
-	       TYPE_CODE (reg_type));
+	       reg_type->code ());
 
       regnum = compile_register_name_demangle (gdbarch, reg_name);
 
@@ -603,7 +604,7 @@ compile_object_load (const compile_file_
   gdb::unique_xmalloc_ptr<char> filename
     (tilde_expand (file_names.object_file ()));
 
-  gdb_bfd_ref_ptr abfd (gdb_bfd_open (filename.get (), gnutarget, -1));
+  gdb_bfd_ref_ptr abfd (gdb_bfd_open (filename.get (), gnutarget));
   if (abfd == NULL)
     error (_("\"%s\": could not open as compiled module: %s"),
           filename.get (), bfd_errmsg (bfd_get_error ()));
@@ -632,9 +633,9 @@ compile_object_load (const compile_file_
 
   /* SYMFILE_VERBOSE is not passed even if FROM_TTY, user is not interested in
      "Reading symbols from ..." message for automatically generated file.  */
-  std::unique_ptr<struct objfile> objfile_holder
-    (symbol_file_add_from_bfd (abfd.get (), filename.get (),
-			       0, NULL, 0, NULL));
+  objfile_up objfile_holder (symbol_file_add_from_bfd (abfd.get (),
+						       filename.get (),
+						       0, NULL, 0, NULL));
   objfile = objfile_holder.get ();
 
   func_sym = lookup_global_symbol_from_objfile (objfile,
@@ -645,10 +646,10 @@ compile_object_load (const compile_file_
     error (_("Cannot find function \"%s\" in compiled module \"%s\"."),
 	   GCC_FE_WRAPPER_FUNCTION, objfile_name (objfile));
   func_type = SYMBOL_TYPE (func_sym);
-  if (TYPE_CODE (func_type) != TYPE_CODE_FUNC)
+  if (func_type->code () != TYPE_CODE_FUNC)
     error (_("Invalid type code %d of function \"%s\" in compiled "
 	     "module \"%s\"."),
-	   TYPE_CODE (func_type), GCC_FE_WRAPPER_FUNCTION,
+	   func_type->code (), GCC_FE_WRAPPER_FUNCTION,
 	   objfile_name (objfile));
 
   switch (scope)
@@ -669,10 +670,10 @@ compile_object_load (const compile_file_
     default:
       internal_error (__FILE__, __LINE__, _("invalid scope %d"), scope);
     }
-  if (TYPE_NFIELDS (func_type) != expect_parameters)
+  if (func_type->num_fields () != expect_parameters)
     error (_("Invalid %d parameters of function \"%s\" in compiled "
 	     "module \"%s\"."),
-	   TYPE_NFIELDS (func_type), GCC_FE_WRAPPER_FUNCTION,
+	   func_type->num_fields (), GCC_FE_WRAPPER_FUNCTION,
 	   objfile_name (objfile));
   if (!types_deeply_equal (expect_return_type, TYPE_TARGET_TYPE (func_type)))
     error (_("Invalid return type of function \"%s\" in compiled "
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-object-load.h ./gdb/compile/compile-object-load.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-object-load.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-object-load.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header file to load module for 'compile' command.
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 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
@@ -80,6 +80,5 @@ struct compile_module
 extern struct compile_module *compile_object_load
   (const compile_file_names &fnames,
    enum compile_i_scope_types scope, void *scope_data);
-extern void munmap_list_free (struct munmap_list *head);
 
 #endif /* COMPILE_COMPILE_OBJECT_LOAD_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-object-run.c ./gdb/compile/compile-object-run.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-object-run.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-object-run.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Call module for 'compile' command.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -86,7 +86,7 @@ do_module_cleanup (void *arg, int regist
     if ((objfile->flags & OBJF_USERLOADED) == 0
         && (strcmp (objfile_name (objfile), data->objfile_name_string) == 0))
       {
-	delete objfile;
+	objfile->unlink ();
 
 	/* It may be a bit too pervasive in this dummy_frame dtor callback.  */
 	clear_symtab_users (0);
@@ -149,27 +149,27 @@ compile_object_run (struct compile_modul
       func_type = copy_type_recursive (objfile, func_type, copied_types);
       htab_delete (copied_types);
 
-      gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
+      gdb_assert (func_type->code () == TYPE_CODE_FUNC);
       func_val = value_from_pointer (lookup_pointer_type (func_type),
 				   BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (func_sym)));
 
-      vargs = XALLOCAVEC (struct value *, TYPE_NFIELDS (func_type));
-      if (TYPE_NFIELDS (func_type) >= 1)
+      vargs = XALLOCAVEC (struct value *, func_type->num_fields ());
+      if (func_type->num_fields () >= 1)
 	{
 	  gdb_assert (regs_addr != 0);
 	  vargs[current_arg] = value_from_pointer
-			  (TYPE_FIELD_TYPE (func_type, current_arg), regs_addr);
+			  (func_type->field (current_arg).type (), regs_addr);
 	  ++current_arg;
 	}
-      if (TYPE_NFIELDS (func_type) >= 2)
+      if (func_type->num_fields () >= 2)
 	{
 	  gdb_assert (data->out_value_addr != 0);
 	  vargs[current_arg] = value_from_pointer
-	       (TYPE_FIELD_TYPE (func_type, current_arg), data->out_value_addr);
+	       (func_type->field (current_arg).type (), data->out_value_addr);
 	  ++current_arg;
 	}
-      gdb_assert (current_arg == TYPE_NFIELDS (func_type));
-      auto args = gdb::make_array_view (vargs, TYPE_NFIELDS (func_type));
+      gdb_assert (current_arg == func_type->num_fields ());
+      auto args = gdb::make_array_view (vargs, func_type->num_fields ());
       call_function_by_hand_dummy (func_val, NULL, args,
 				   do_module_cleanup, data);
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-object-run.h ./gdb/compile/compile-object-run.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/compile-object-run.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/compile-object-run.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header file to call module for 'compile' command.
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/gcc-c-plugin.h ./gdb/compile/gcc-c-plugin.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/gcc-c-plugin.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/gcc-c-plugin.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GCC C plug-in wrapper for GDB.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/gcc-cp-plugin.h ./gdb/compile/gcc-cp-plugin.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/compile/gcc-cp-plugin.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/compile/gcc-cp-plugin.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GCC C++ plug-in wrapper for GDB.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/complaints.c ./gdb/complaints.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/complaints.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/complaints.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for complaint handling during symbol reading in GDB.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -74,8 +74,9 @@ complaints_show_value (struct ui_file *f
 		    value);
 }
 
+void _initialize_complaints ();
 void
-_initialize_complaints (void)
+_initialize_complaints ()
 {
   add_setshow_zinteger_cmd ("complaints", class_support, 
 			    &stop_whining, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/complaints.h ./gdb/complaints.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/complaints.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/complaints.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for complaint handling during symbol reading in GDB.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,6 +25,10 @@
 extern void complaint_internal (const char *fmt, ...)
   ATTRIBUTE_PRINTF (1, 2);
 
+/* This controls whether complaints are emitted.  */
+
+extern int stop_whining;
+
 /* Register a complaint.  This is a macro around complaint_internal to
    avoid computing complaint's arguments when complaints are disabled.
    Running FMT via gettext [i.e., _(FMT)] can be quite expensive, for
@@ -32,8 +36,6 @@ extern void complaint_internal (const ch
 #define complaint(FMT, ...)					\
   do								\
     {								\
-      extern int stop_whining;					\
-								\
       if (stop_whining > 0)					\
 	complaint_internal (FMT, ##__VA_ARGS__);		\
     }								\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/completer.c ./gdb/completer.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/completer.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/completer.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Line completion stuff for GDB, the GNU debugger.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -45,6 +45,66 @@
 
 #include "completer.h"
 
+/* See completer.h.  */
+
+class completion_tracker::completion_hash_entry
+{
+public:
+  /* Constructor.  */
+  completion_hash_entry (gdb::unique_xmalloc_ptr<char> name,
+			 gdb::unique_xmalloc_ptr<char> lcd)
+    : m_name (std::move (name)),
+      m_lcd (std::move (lcd))
+  {
+    /* Nothing.  */
+  }
+
+  /* Returns a pointer to the lowest common denominator string.  This
+     string will only be valid while this hash entry is still valid as the
+     string continues to be owned by this hash entry and will be released
+     when this entry is deleted.  */
+  char *get_lcd () const
+  {
+    return m_lcd.get ();
+  }
+
+  /* Get, and release the name field from this hash entry.  This can only
+     be called once, after which the name field is no longer valid.  This
+     should be used to pass ownership of the name to someone else.  */
+  char *release_name ()
+  {
+    return m_name.release ();
+  }
+
+  /* Return true of the name in this hash entry is STR.  */
+  bool is_name_eq (const char *str) const
+  {
+    return strcmp (m_name.get (), str) == 0;
+  }
+
+  /* Return the hash value based on the name of the entry.  */
+  hashval_t hash_name () const
+  {
+    return htab_hash_string (m_name.get ());
+  }
+
+  /* A static function that can be passed to the htab hash system to be
+     used as a callback that deletes an item from the hash.  */
+  static void deleter (void *arg)
+  {
+    completion_hash_entry *entry = (completion_hash_entry *) arg;
+    delete entry;
+  }
+
+private:
+
+  /* The symbol name stored in this hash entry.  */
+  gdb::unique_xmalloc_ptr<char> m_name;
+
+  /* The lowest common denominator string computed for this hash entry.  */
+  gdb::unique_xmalloc_ptr<char> m_lcd;
+};
+
 /* Misc state that needs to be tracked across several different
    readline completer entry point calls, all related to a single
    completion invocation.  */
@@ -95,7 +155,7 @@ enum explicit_location_match_type
    but it does affect how much stuff M-? lists.
    (2) If one of the matches contains a word break character, readline
    will quote it.  That's why we switch between
-   current_language->la_word_break_characters() and
+   current_language->word_break_characters () and
    gdb_completer_command_word_break_characters.  I'm not sure when
    we need this behavior (perhaps for funky characters in C++ 
    symbols?).  */
@@ -388,7 +448,7 @@ const char *
 advance_to_expression_complete_word_point (completion_tracker &tracker,
 					   const char *text)
 {
-  const char *brk_chars = current_language->la_word_break_characters ();
+  const char *brk_chars = current_language->word_break_characters ();
   return advance_to_completion_word (tracker, brk_chars, text);
 }
 
@@ -407,6 +467,7 @@ advance_to_filename_complete_word_point
 bool
 completion_tracker::completes_to_completion_word (const char *word)
 {
+  recompute_lowest_common_denominator ();
   if (m_lowest_common_denominator_unique)
     {
       const char *lcd = m_lowest_common_denominator;
@@ -512,7 +573,7 @@ complete_files_symbols (completion_track
 	  colon = p;
 	  symbol_start = p + 1;
 	}
-      else if (strchr (current_language->la_word_break_characters(), *p))
+      else if (strchr (current_language->word_break_characters (), *p))
 	symbol_start = p + 1;
     }
 
@@ -1029,7 +1090,7 @@ add_struct_fields (struct type *type, co
   const char *type_name = NULL;
 
   type = check_typedef (type);
-  for (i = 0; i < TYPE_NFIELDS (type); ++i)
+  for (i = 0; i < type->num_fields (); ++i)
     {
       if (i < TYPE_N_BASECLASSES (type))
 	add_struct_fields (TYPE_BASECLASS (type, i),
@@ -1042,10 +1103,10 @@ add_struct_fields (struct type *type, co
 			     fieldname, namelen))
 		output.emplace_back (xstrdup (TYPE_FIELD_NAME (type, i)));
 	    }
-	  else if (TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_UNION)
+	  else if (type->field (i).type ()->code () == TYPE_CODE_UNION)
 	    {
 	      /* Recurse into anonymous unions.  */
-	      add_struct_fields (TYPE_FIELD_TYPE (type, i),
+	      add_struct_fields (type->field (i).type (),
 				 output, fieldname, namelen);
 	    }
 	}
@@ -1059,7 +1120,7 @@ add_struct_fields (struct type *type, co
 	{
 	  if (!computed_type_name)
 	    {
-	      type_name = TYPE_NAME (type);
+	      type_name = type->name ();
 	      computed_type_name = 1;
 	    }
 	  /* Omit constructors from the completion list.  */
@@ -1095,13 +1156,13 @@ complete_expression (completion_tracker
       for (;;)
 	{
 	  type = check_typedef (type);
-	  if (TYPE_CODE (type) != TYPE_CODE_PTR && !TYPE_IS_REFERENCE (type))
+	  if (type->code () != TYPE_CODE_PTR && !TYPE_IS_REFERENCE (type))
 	    break;
 	  type = TYPE_TARGET_TYPE (type);
 	}
 
-      if (TYPE_CODE (type) == TYPE_CODE_UNION
-	  || TYPE_CODE (type) == TYPE_CODE_STRUCT)
+      if (type->code () == TYPE_CODE_UNION
+	  || type->code () == TYPE_CODE_STRUCT)
 	{
 	  completion_list result;
 
@@ -1287,7 +1348,7 @@ complete_line_internal_1 (completion_tra
      strings, which leaves out the '-' and '.' character used in some
      commands.  */
   set_rl_completer_word_break_characters
-    (current_language->la_word_break_characters());
+    (current_language->word_break_characters ());
 
   /* Decide whether to complete on a list of gdb commands or on
      symbols.  */
@@ -1324,7 +1385,7 @@ complete_line_internal_1 (completion_tra
     }
   else
     {
-      c = lookup_cmd_1 (&p, cmdlist, &result_list, ignore_help_classes);
+      c = lookup_cmd_1 (&p, cmdlist, &result_list, NULL, ignore_help_classes);
     }
 
   /* Move p up to the next interesting thing.  */
@@ -1512,9 +1573,7 @@ int max_completions = 200;
 
 completion_tracker::completion_tracker ()
 {
-  m_entries_hash = htab_create_alloc (INITIAL_COMPLETION_HTAB_SIZE,
-				      htab_hash_string, streq_hash,
-				      NULL, xcalloc, xfree);
+  discard_completions ();
 }
 
 /* See completer.h.  */
@@ -1526,13 +1585,43 @@ completion_tracker::discard_completions
   m_lowest_common_denominator = NULL;
 
   m_lowest_common_denominator_unique = false;
+  m_lowest_common_denominator_valid = false;
 
-  m_entries_vec.clear ();
+  /* A null check here allows this function to be used from the
+     constructor.  */
+  if (m_entries_hash != NULL)
+    htab_delete (m_entries_hash);
+
+  /* A callback used by the hash table to compare new entries with existing
+     entries.  We can't use the standard streq_hash function here as the
+     key to our hash is just a single string, while the values we store in
+     the hash are a struct containing multiple strings.  */
+  static auto entry_eq_func
+    = [] (const void *first, const void *second) -> int
+      {
+	/* The FIRST argument is the entry already in the hash table, and
+	   the SECOND argument is the new item being inserted.  */
+	const completion_hash_entry *entry
+	  = (const completion_hash_entry *) first;
+	const char *name_str = (const char *) second;
+
+	return entry->is_name_eq (name_str);
+      };
+
+  /* Callback used by the hash table to compute the hash value for an
+     existing entry.  This is needed when expanding the hash table.  */
+  static auto entry_hash_func
+    = [] (const void *arg) -> hashval_t
+      {
+	const completion_hash_entry *entry
+	  = (const completion_hash_entry *) arg;
+	return entry->hash_name ();
+      };
 
-  htab_delete (m_entries_hash);
   m_entries_hash = htab_create_alloc (INITIAL_COMPLETION_HTAB_SIZE,
-				      htab_hash_string, streq_hash,
-				      NULL, xcalloc, xfree);
+				      entry_hash_func, entry_eq_func,
+				      completion_hash_entry::deleter,
+				      xcalloc, xfree);
 }
 
 /* See completer.h.  */
@@ -1559,7 +1648,8 @@ completion_tracker::maybe_add_completion
   if (htab_elements (m_entries_hash) >= max_completions)
     return false;
 
-  slot = htab_find_slot (m_entries_hash, name.get (), INSERT);
+  hashval_t hash = htab_hash_string (name.get ());
+  slot = htab_find_slot_with_hash (m_entries_hash, name.get (), hash, INSERT);
   if (*slot == HTAB_EMPTY_ENTRY)
     {
       const char *match_for_lcd_str = NULL;
@@ -1573,10 +1663,12 @@ completion_tracker::maybe_add_completion
       gdb::unique_xmalloc_ptr<char> lcd
 	= make_completion_match_str (match_for_lcd_str, text, word);
 
-      recompute_lowest_common_denominator (std::move (lcd));
+      size_t lcd_len = strlen (lcd.get ());
+      *slot = new completion_hash_entry (std::move (name), std::move (lcd));
 
-      *slot = name.get ();
-      m_entries_vec.push_back (std::move (name));
+      m_lowest_common_denominator_valid = false;
+      m_lowest_common_denominator_max_length
+	= std::max (m_lowest_common_denominator_max_length, lcd_len);
     }
 
   return true;
@@ -1602,6 +1694,20 @@ completion_tracker::add_completions (com
     add_completion (std::move (candidate));
 }
 
+/* See completer.h.  */
+
+void
+completion_tracker::remove_completion (const char *name)
+{
+  hashval_t hash = htab_hash_string (name);
+  if (htab_find_slot_with_hash (m_entries_hash, name, hash, NO_INSERT)
+      != NULL)
+    {
+      htab_remove_elt_with_hash (m_entries_hash, name, hash);
+      m_lowest_common_denominator_valid = false;
+    }
+}
+
 /* Helper for the make_completion_match_str overloads.  Returns NULL
    as an indication that we want MATCH_NAME exactly.  It is up to the
    caller to xstrdup that string if desired.  */
@@ -1858,7 +1964,7 @@ default_completer_handle_brkchars (struc
 				   const char *text, const char *word)
 {
   set_rl_completer_word_break_characters
-    (current_language->la_word_break_characters ());
+    (current_language->word_break_characters ());
 }
 
 /* See definition in completer.h.  */
@@ -1982,23 +2088,23 @@ completion_find_completion_word (complet
 /* See completer.h.  */
 
 void
-completion_tracker::recompute_lowest_common_denominator
-  (gdb::unique_xmalloc_ptr<char> &&new_match_up)
+completion_tracker::recompute_lcd_visitor (completion_hash_entry *entry)
 {
-  if (m_lowest_common_denominator == NULL)
+  if (!m_lowest_common_denominator_valid)
     {
-      /* We don't have a lowest common denominator yet, so simply take
-	 the whole NEW_MATCH_UP as being it.  */
-      m_lowest_common_denominator = new_match_up.release ();
+      /* This is the first lowest common denominator that we are
+	 considering, just copy it in.  */
+      strcpy (m_lowest_common_denominator, entry->get_lcd ());
       m_lowest_common_denominator_unique = true;
+      m_lowest_common_denominator_valid = true;
     }
   else
     {
-      /* Find the common denominator between the currently-known
-	 lowest common denominator and NEW_MATCH_UP.  That becomes the
-	 new lowest common denominator.  */
+      /* Find the common denominator between the currently-known lowest
+	 common denominator and NEW_MATCH_UP.  That becomes the new lowest
+	 common denominator.  */
       size_t i;
-      const char *new_match = new_match_up.get ();
+      const char *new_match = entry->get_lcd ();
 
       for (i = 0;
 	   (new_match[i] != '\0'
@@ -2016,6 +2122,35 @@ completion_tracker::recompute_lowest_com
 /* See completer.h.  */
 
 void
+completion_tracker::recompute_lowest_common_denominator ()
+{
+  /* We've already done this.  */
+  if (m_lowest_common_denominator_valid)
+    return;
+
+  /* Resize the storage to ensure we have enough space, the plus one gives
+     us space for the trailing null terminator we will include.  */
+  m_lowest_common_denominator
+    = (char *) xrealloc (m_lowest_common_denominator,
+			 m_lowest_common_denominator_max_length + 1);
+
+  /* Callback used to visit each entry in the m_entries_hash.  */
+  auto visitor_func
+    = [] (void **slot, void *info) -> int
+      {
+	completion_tracker *obj = (completion_tracker *) info;
+	completion_hash_entry *entry = (completion_hash_entry *) *slot;
+	obj->recompute_lcd_visitor (entry);
+	return 1;
+      };
+
+  htab_traverse (m_entries_hash, visitor_func, this);
+  m_lowest_common_denominator_valid = true;
+}
+
+/* See completer.h.  */
+
+void
 completion_tracker::advance_custom_word_point_by (int len)
 {
   m_custom_word_point += len;
@@ -2092,16 +2227,17 @@ completion_result
 completion_tracker::build_completion_result (const char *text,
 					     int start, int end)
 {
-  completion_list &list = m_entries_vec;	/* The completions.  */
+  size_t element_count = htab_elements (m_entries_hash);
 
-  if (list.empty ())
+  if (element_count == 0)
     return {};
 
   /* +1 for the LCD, and +1 for NULL termination.  */
-  char **match_list = XNEWVEC (char *, 1 + list.size () + 1);
+  char **match_list = XNEWVEC (char *, 1 + element_count + 1);
 
   /* Build replacement word, based on the LCD.  */
 
+  recompute_lowest_common_denominator ();
   match_list[0]
     = expand_preserving_ws (text, end - start,
 			    m_lowest_common_denominator);
@@ -2128,13 +2264,40 @@ completion_tracker::build_completion_res
     }
   else
     {
-      int ix;
-
-      for (ix = 0; ix < list.size (); ++ix)
-	match_list[ix + 1] = list[ix].release ();
-      match_list[ix + 1] = NULL;
+      /* State object used while building the completion list.  */
+      struct list_builder
+      {
+	list_builder (char **ml)
+	  : match_list (ml),
+	    index (1)
+	{ /* Nothing.  */ }
+
+	/* The list we are filling.  */
+	char **match_list;
+
+	/* The next index in the list to write to.  */
+	int index;
+      };
+      list_builder builder (match_list);
+
+      /* Visit each entry in m_entries_hash and add it to the completion
+	 list, updating the builder state object.  */
+      auto func
+	= [] (void **slot, void *info) -> int
+	  {
+	    completion_hash_entry *entry = (completion_hash_entry *) *slot;
+	    list_builder *state = (list_builder *) info;
+
+	    state->match_list[state->index] = entry->release_name ();
+	    state->index++;
+	    return 1;
+	  };
+
+      /* Build the completion list and add a null at the end.  */
+      htab_traverse_noresize (m_entries_hash, func, &builder);
+      match_list[builder.index] = NULL;
 
-      return completion_result (match_list, list.size (), false);
+      return completion_result (match_list, builder.index - 1, false);
     }
 }
 
@@ -2164,15 +2327,11 @@ completion_result::~completion_result ()
 
 /* See completer.h  */
 
-completion_result::completion_result (completion_result &&rhs)
+completion_result::completion_result (completion_result &&rhs) noexcept
+  : match_list (rhs.match_list),
+    number_matches (rhs.number_matches)
 {
-  if (this == &rhs)
-    return;
-
-  reset_match_list ();
-  match_list = rhs.match_list;
   rhs.match_list = NULL;
-  number_matches = rhs.number_matches;
   rhs.number_matches = 0;
 }
 
@@ -2314,7 +2473,7 @@ skip_quoted_chars (const char *str, cons
     quotechars = gdb_completer_quote_characters;
 
   if (breakchars == NULL)
-    breakchars = current_language->la_word_break_characters();
+    breakchars = current_language->word_break_characters ();
 
   for (scan = str; *scan != '\0'; scan++)
     {
@@ -2935,8 +3094,9 @@ gdb_display_match_list (char **matches,
     }
 }
 
+void _initialize_completer ();
 void
-_initialize_completer (void)
+_initialize_completer ()
 {
   add_setshow_zuinteger_unlimited_cmd ("max-completions", no_class,
 				       &max_completions, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/completer.h ./gdb/completer.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/completer.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/completer.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header for GDB line completion.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 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
@@ -242,7 +242,7 @@ struct completion_result
   DISABLE_COPY_AND_ASSIGN (completion_result);
 
   /* Move a result.  */
-  completion_result (completion_result &&rhs);
+  completion_result (completion_result &&rhs) noexcept;
 
   /* Release ownership of the match list array.  */
   char **release_match_list ();
@@ -326,6 +326,10 @@ public:
      LIST.  */
   void add_completions (completion_list &&list);
 
+  /* Remove completion matching NAME from the completion list, does nothing
+     if NAME is not already in the completion list.  */
+  void remove_completion (const char *name);
+
   /* Set the quote char to be appended after a unique completion is
      added to the input line.  Set to '\0' to clear.  See
      m_quote_char's description.  */
@@ -389,7 +393,7 @@ public:
 
   /* True if we have any completion match recorded.  */
   bool have_completions () const
-  { return !m_entries_vec.empty (); }
+  { return htab_elements (m_entries_hash) > 0; }
 
   /* Discard the current completion match list and the current
      LCD.  */
@@ -403,6 +407,9 @@ public:
 
 private:
 
+  /* The type that we place into the m_entries_hash hash table.  */
+  class completion_hash_entry;
+
   /* Add the completion NAME to the list of generated completions if
      it is not there already.  If false is returned, too many
      completions were found.  */
@@ -410,18 +417,15 @@ private:
 			     completion_match_for_lcd *match_for_lcd,
 			     const char *text, const char *word);
 
-  /* Given a new match, recompute the lowest common denominator (LCD)
-     to hand over to readline.  Normally readline computes this itself
-     based on the whole set of completion matches.  However, some
-     completers want to override readline, in order to be able to
-     provide a LCD that is not really a prefix of the matches, but the
-     lowest common denominator of some relevant substring of each
-     match.  E.g., "b push_ba" completes to
-     "std::vector<..>::push_back", "std::string::push_back", etc., and
-     in this case we want the lowest common denominator to be
-     "push_back" instead of "std::".  */
-  void recompute_lowest_common_denominator
-    (gdb::unique_xmalloc_ptr<char> &&new_match);
+  /* Ensure that the lowest common denominator held in the member variable
+     M_LOWEST_COMMON_DENOMINATOR is valid.  This method must be called if
+     there is any chance that new completions have been added to the
+     tracker before the lowest common denominator is read.  */
+  void recompute_lowest_common_denominator ();
+
+  /* Callback used from recompute_lowest_common_denominator, called for
+     every entry in m_entries_hash.  */
+  void recompute_lcd_visitor (completion_hash_entry *entry);
 
   /* Completion match outputs returned by the symbol name matching
      routines (see symbol_name_matcher_ftype).  These results are only
@@ -430,16 +434,13 @@ private:
      symbol name matching routines.  */
   completion_match_result m_completion_match_result;
 
-  /* The completion matches found so far, in a vector.  */
-  completion_list m_entries_vec;
-
   /* The completion matches found so far, in a hash table, for
      duplicate elimination as entries are added.  Otherwise the user
      is left scratching his/her head: readline and complete_command
      will remove duplicates, and if removal of duplicates there brings
      the total under max_completions the user may think gdb quit
      searching too early.  */
-  htab_t m_entries_hash;
+  htab_t m_entries_hash = NULL;
 
   /* If non-zero, then this is the quote char that needs to be
      appended after completion (iff we have a unique completion).  We
@@ -483,6 +484,16 @@ private:
      "function()", instead of showing all the possible
      completions.  */
   bool m_lowest_common_denominator_unique = false;
+
+  /* True if the value in M_LOWEST_COMMON_DENOMINATOR is correct.  This is
+     set to true each time RECOMPUTE_LOWEST_COMMON_DENOMINATOR is called,
+     and reset to false whenever a new completion is added.  */
+  bool m_lowest_common_denominator_valid = false;
+
+  /* To avoid calls to xrealloc in RECOMPUTE_LOWEST_COMMON_DENOMINATOR, we
+     track the maximum possible size of the lowest common denominator,
+     which we know as each completion is added.  */
+  size_t m_lowest_common_denominator_max_length = 0;
 };
 
 /* Return a string to hand off to readline as a completion match
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/djgpp/djcheck.sh ./gdb/config/djgpp/djcheck.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/djgpp/djcheck.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config/djgpp/djcheck.sh	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
 
 # A shell script to run the test suite on the DJGPP version of GDB.
 
-#  Copyright (C) 2000-2020 Free Software Foundation, Inc.
+#  Copyright (C) 2000-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/djgpp/djconfig.sh ./gdb/config/djgpp/djconfig.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/djgpp/djconfig.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config/djgpp/djconfig.sh	2021-05-21 01:57:24.000000000 +0000
@@ -5,7 +5,7 @@
 # configuring other GNU programs for DJGPP.
 #
 #=====================================================================
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
 #
 # Originally written by Robert Hoehne, revised by Eli Zaretskii.
 # This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/djgpp/fnchange.lst ./gdb/config/djgpp/fnchange.lst
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/djgpp/fnchange.lst	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config/djgpp/fnchange.lst	2021-05-21 01:57:24.000000000 +0000
@@ -117,6 +117,7 @@
 @V@/gdb/ChangeLog-2016 @V@/gdb/ChangeLog.016
 @V@/gdb/ChangeLog-2017 @V@/gdb/ChangeLog.017
 @V@/gdb/ChangeLog-2018 @V@/gdb/ChangeLog.018
+@V@/gdb/ChangeLog-2019 @V@/gdb/ChangeLog.019
 @V@/gdb/ChangeLog-3.x @V@/gdb/ChangeLog.3-x
 @V@/gdb/ada-exp.tab.c @V@/gdb/ada-exp_tab.c
 @V@/gdb/amd64-windows-nat.c @V@/gdb/a64w-nat.c
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/djgpp/langinfo.h ./gdb/config/djgpp/langinfo.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/djgpp/langinfo.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config/djgpp/langinfo.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* langinfo.h file for DJGPP.
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Written by Eli Zaretskii.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/djgpp/nl_types.h ./gdb/config/djgpp/nl_types.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/djgpp/nl_types.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config/djgpp/nl_types.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* nl_types.h for DJGPP.
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Written by Eli Zaretskii.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/i386/i386gnu.mn ./gdb/config/i386/i386gnu.mn
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/i386/i386gnu.mn	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config/i386/i386gnu.mn	2021-05-21 01:57:24.000000000 +0000
@@ -7,7 +7,7 @@ MIGCOM = $(MIG) -cc cat - /dev/null
 
 # Reply servers need special massaging of the code mig generates, to make
 # them work correctly for error returns in some cases.
-%_reply_S.h %_reply_S.c: %_reply.defs
+%_reply_S.h %_reply_S.c: %_reply.defs $(srcdir)/reply_mig_hack.awk
 	$(CPP) $(CPPFLAGS) -DSERVERPREFIX=S_ -x c $< \
 	| $(MIGCOM) -sheader $*_reply_S.h -server $*_reply_S.raw -user /dev/null -header /dev/null \
 	&& $(AWK) -f $(srcdir)/reply_mig_hack.awk < $*_reply_S.raw > $*_reply_S.c
@@ -21,7 +21,7 @@ MIGCOM = $(MIG) -cc cat - /dev/null
 	| $(MIGCOM) -sheader /dev/null -server /dev/null -user $*_U.c -header $*_U.h
 
 # MIG stubs are not yet ready for C++ compilation.
-%_S.o %_U.o : COMPILE.post += -x c
+%_S.o %_U.o : COMPILE.post += -x c -include gnu-nat-mig.h
 
 NAT_GENERATED_FILES = notify_S.h notify_S.c \
 	process_reply_S.h process_reply_S.c \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/i386/nm-i386gnu.h ./gdb/config/i386/nm-i386gnu.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/i386/nm-i386gnu.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config/i386/nm-i386gnu.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Native-dependent definitions for Intel 386 running the GNU Hurd
-   Copyright (C) 1994-2020 Free Software Foundation, Inc.
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/nm-linux.h ./gdb/config/nm-linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/nm-linux.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config/nm-linux.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native support for GNU/Linux.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/nm-nto.h ./gdb/config/nm-nto.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/nm-nto.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config/nm-nto.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native support for QNX Neutrino version 6.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This code was donated by QNX Software Systems Ltd.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/sparc/nm-sol2.h ./gdb/config/sparc/nm-sol2.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config/sparc/nm-sol2.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config/sparc/nm-sol2.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent definitions for Solaris SPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config.in ./gdb/config.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/config.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/config.in	2021-05-21 01:57:24.000000000 +0000
@@ -36,6 +36,9 @@
 /* Define to BFD's default target vector. */
 #undef DEFAULT_BFD_VEC
 
+/* Handle .ctf type-info sections */
+#undef ENABLE_LIBCTF
+
 /* Define to 1 if translation of program messages to the user's native
    language is requested. */
 #undef ENABLE_NLS
@@ -109,10 +112,6 @@
    don't. */
 #undef HAVE_DECL_GETTHRDS
 
-/* Define to 1 if you have the declaration of `ptrace', and to 0 if you don't.
-   */
-#undef HAVE_DECL_PTRACE
-
 /* Define to 1 if you have the declaration of `snprintf', and to 0 if you
    don't. */
 #undef HAVE_DECL_SNPRINTF
@@ -227,6 +226,9 @@
 /* Define if you have the babeltrace library. */
 #undef HAVE_LIBBABELTRACE
 
+/* Define to 1 if debuginfod is enabled. */
+#undef HAVE_LIBDEBUGINFOD
+
 /* Define if you have the expat library. */
 #undef HAVE_LIBEXPAT
 
@@ -470,12 +472,6 @@
 /* Define to 1 if `td_pcb' is a member of `struct thread'. */
 #undef HAVE_STRUCT_THREAD_TD_PCB
 
-/* Define to 1 if `fs_base' is a member of `struct user_regs_struct'. */
-#undef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-
-/* Define to 1 if `gs_base' is a member of `struct user_regs_struct'. */
-#undef HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE
-
 /* Define to 1 if you have the <sys/debugreg.h> header file. */
 #undef HAVE_SYS_DEBUGREG_H
 
@@ -572,6 +568,9 @@
 /* Define to 1 if you have the `wresize' function. */
 #undef HAVE_WRESIZE
 
+/* Define to 1 if you have the <ws2tcpip.h> header file. */
+#undef HAVE_WS2TCPIP_H
+
 /* Define to 1 if you have the `XML_StopParser' function. */
 #undef HAVE_XML_STOPPARSER
 
@@ -649,6 +648,10 @@
 /* Define as the return type of ptrace. */
 #undef PTRACE_TYPE_RET
 
+/* Define if the python lib directory should be relocated when GDB is moved.
+   */
+#undef PYTHON_LIBDIR_RELOCATABLE
+
 /* Define if the python directory should be relocated when GDB is moved. */
 #undef PYTHON_PATH_RELOCATABLE
 
@@ -752,6 +755,10 @@
 /* Define if the PPC simulator is being linked in. */
 #undef WITH_PPC_SIM
 
+/* Directory containing Python's standard libraries from --with-python-libdir.
+   */
+#undef WITH_PYTHON_LIBDIR
+
 /* Define if --with-python provides a path, either directly or via
    python-config.py --exec-prefix. */
 #undef WITH_PYTHON_PATH
@@ -792,6 +799,9 @@
 /* Define to 1 if you need to in order for `stat' and other things to work. */
 #undef _POSIX_SOURCE
 
+/* Use structured /proc on Solaris. */
+#undef _STRUCTURED_PROC
+
 /* Define to empty if `const' does not conform to ANSI C. */
 #undef const
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/configure ./gdb/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/configure	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/configure	2021-05-21 01:57:24.000000000 +0000
@@ -631,6 +631,9 @@ GDB_NM_FILE
 LTLIBXXHASH
 LIBXXHASH
 HAVE_LIBXXHASH
+CTF_DEPS
+LIBCTF
+ENABLE_LIBCTF
 LTLIBBABELTRACE
 LIBBABELTRACE
 HAVE_LIBBABELTRACE
@@ -688,12 +691,12 @@ TCL_BIN_DIR
 TCL_PATCH_LEVEL
 TCL_VERSION
 WIN32LDAPP
+WIN32LIBS
 GUI_CFLAGS_X
 LIBGUI
 LTLIBLZMA
 LIBLZMA
 HAVE_LIBLZMA
-WIN32LIBS
 SER_HARDWIRE
 WERROR_CFLAGS
 WARN_CFLAGS
@@ -702,15 +705,15 @@ SYSTEM_GDBINIT
 TARGET_SYSTEM_ROOT
 CONFIG_LDFLAGS
 RDYNAMIC
+LTLIBIPT
+LIBIPT
+HAVE_LIBIPT
 PTHREAD_CFLAGS
 PTHREAD_LIBS
 PTHREAD_CC
 ax_pthread_config
 SED
 ALLOCA
-LTLIBIPT
-LIBIPT
-HAVE_LIBIPT
 SRCHIGH_CFLAGS
 SRCHIGH_LIBS
 HAVE_GUILE_FALSE
@@ -758,6 +761,11 @@ REPORT_BUGS_TEXI
 REPORT_BUGS_TO
 PKGVERSION
 CODESIGN_CERT
+DEBUGINFOD_LIBS
+DEBUGINFOD_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
 HAVE_NATIVE_GCORE_TARGET
 TARGET_OBS
 subdirs
@@ -787,6 +795,7 @@ HAVE_CXX11
 INSTALL_STRIP_PROGRAM
 STRIP
 install_sh
+LARGEFILE_CPPFLAGS
 target_os
 target_vendor
 target_cpu
@@ -869,6 +878,7 @@ enable_64_bit_bfd
 enable_gdbmi
 enable_tui
 enable_gdbtk
+with_debuginfod
 with_libunwind_ia64
 with_curses
 enable_profiling
@@ -879,18 +889,23 @@ with_system_zlib
 with_gnu_ld
 enable_rpath
 with_libiconv_prefix
+with_libiconv_type
 with_iconv_bin
 with_system_readline
 with_jit_reader_dir
 with_expat
 with_libexpat_prefix
+with_libexpat_type
 with_mpfr
 with_libmpfr_prefix
+with_libmpfr_type
 with_python
+with_python_libdir
 with_guile
 enable_source_highlight
 with_intel_pt
 with_libipt_prefix
+with_libipt_type
 with_included_regex
 with_sysroot
 with_system_gdbinit
@@ -901,15 +916,18 @@ enable_gdb_build_warnings
 enable_ubsan
 with_lzma
 with_liblzma_prefix
+with_liblzma_type
 with_tcl
 with_tk
 with_x
 enable_sim
-enable_gdbserver
 with_babeltrace
 with_libbabeltrace_prefix
+with_libbabeltrace_type
 with_xxhash
+enable_libctf
 with_libxxhash_prefix
+with_libxxhash_type
 enable_unit_tests
 '
       ac_precious_vars='build_alias
@@ -926,12 +944,16 @@ CCC
 CPP
 MAKEINFO
 MAKEINFOFLAGS
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+DEBUGINFOD_CFLAGS
+DEBUGINFOD_LIBS
 YACC
 YFLAGS
 XMKMF'
 ac_subdirs_all='testsuite
-gdbtk
-gdbserver'
+gdbtk'
 
 # Initialize some variables set by options.
 ac_init_help=
@@ -1575,8 +1597,7 @@ Optional Features:
                           gcc is used
   --enable-ubsan          enable undefined behavior sanitizer (auto/yes/no)
   --enable-sim            link gdb with simulator
-  --enable-gdbserver      automatically build gdbserver (yes/no/auto, default
-                          is auto)
+  --enable-libctf         Handle .ctf type-info sections [default=yes]
   --enable-unit-tests     Enable the inclusion of unit tests when compiling
                           GDB
 
@@ -1598,6 +1619,8 @@ Optional Packages:
                           [--with-auto-load-dir]
   --without-auto-load-safe-path
                           do not restrict auto-loaded files locations
+  --with-debuginfod       Enable debuginfo lookups with debuginfod
+                          (auto/yes/no)
   --with-libunwind-ia64   use libunwind frame unwinding for ia64 targets
   --with-curses           use the curses library instead of the termcap
                           library
@@ -1607,6 +1630,7 @@ Optional Packages:
   --with-gnu-ld           assume the C compiler uses GNU ld default=no
   --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
   --without-libiconv-prefix     don't search for libiconv in includedir and libdir
+  --with-libiconv-type=TYPE     type of library to search for (auto/static/shared)
   --with-iconv-bin=PATH   specify where to find the iconv program
   --with-system-readline  use installed readline library
   --with-jit-reader-dir=PATH
@@ -1614,16 +1638,21 @@ Optional Packages:
   --with-expat            include expat support (auto/yes/no)
   --with-libexpat-prefix[=DIR]  search for libexpat in DIR/include and DIR/lib
   --without-libexpat-prefix     don't search for libexpat in includedir and libdir
+  --with-libexpat-type=TYPE     type of library to search for (auto/static/shared)
   --with-mpfr             include MPFR support (auto/yes/no)
   --with-libmpfr-prefix[=DIR]  search for libmpfr in DIR/include and DIR/lib
   --without-libmpfr-prefix     don't search for libmpfr in includedir and libdir
+  --with-libmpfr-type=TYPE     type of library to search for (auto/static/shared)
   --with-python[=PYTHON]  include python support
                           (auto/yes/no/<python-program>)
+  --with-python-libdir[=DIR]
+                          search for python's libraries in DIR
   --with-guile[=GUILE]    include guile support
                           (auto/yes/no/<guile-version>/<pkg-config-program>)
   --with-intel-pt         include Intel Processor Trace support (auto/yes/no)
   --with-libipt-prefix[=DIR]  search for libipt in DIR/include and DIR/lib
   --without-libipt-prefix     don't search for libipt in includedir and libdir
+  --with-libipt-type=TYPE     type of library to search for (auto/static/shared)
   --without-included-regex
                           don't use included regex; this is the default on
                           systems with version 2 of the GNU C library (use
@@ -1637,15 +1666,18 @@ Optional Packages:
   --with-lzma             support lzma compression (auto/yes/no)
   --with-liblzma-prefix[=DIR]  search for liblzma in DIR/include and DIR/lib
   --without-liblzma-prefix     don't search for liblzma in includedir and libdir
+  --with-liblzma-type=TYPE     type of library to search for (auto/static/shared)
   --with-tcl              directory containing tcl configuration (tclConfig.sh)
   --with-tk               directory containing tk configuration (tkConfig.sh)
   --with-x                use the X Window System
   --with-babeltrace       include babeltrace support (auto/yes/no)
   --with-libbabeltrace-prefix[=DIR]  search for libbabeltrace in DIR/include and DIR/lib
   --without-libbabeltrace-prefix     don't search for libbabeltrace in includedir and libdir
+  --with-libbabeltrace-type=TYPE     type of library to search for (auto/static/shared)
   --with-xxhash           use libxxhash for hashing (faster) (auto/yes/no)
   --with-libxxhash-prefix[=DIR]  search for libxxhash in DIR/include and DIR/lib
   --without-libxxhash-prefix     don't search for libxxhash in includedir and libdir
+  --with-libxxhash-type=TYPE     type of library to search for (auto/static/shared)
 
 Some influential environment variables:
   CC          C compiler command
@@ -1661,6 +1693,15 @@ Some influential environment variables:
   MAKEINFO    Parent configure detects if it is of sufficient version.
   MAKEINFOFLAGS
               Parameters for MAKEINFO.
+  PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
+  DEBUGINFOD_CFLAGS
+              C compiler flags for DEBUGINFOD, overriding pkg-config
+  DEBUGINFOD_LIBS
+              linker flags for DEBUGINFOD, overriding pkg-config
   YACC        The `Yet Another Compiler Compiler' implementation to use.
               Defaults to the first program found out of: `bison -y', `byacc',
               `yacc'.
@@ -2318,63 +2359,6 @@ eval ac_res=\$$3
 
 } # ac_fn_c_check_func
 
-# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
-# ----------------------------------------------------
-# Tries to find if the field MEMBER exists in type AGGR, after including
-# INCLUDES, setting cache variable VAR accordingly.
-ac_fn_c_check_member ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (ac_aggr.$3)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$4=yes"
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (sizeof ac_aggr.$3)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$4=yes"
-else
-  eval "$4=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$4
-	       { $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_c_check_member
-
 # ac_fn_c_check_type LINENO TYPE VAR INCLUDES
 # -------------------------------------------
 # Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -2475,6 +2459,63 @@ eval ac_res=\$$3
 
 } # ac_fn_c_check_decl
 
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+	       { $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_c_check_member
+
 # ac_fn_cxx_try_link LINENO
 # -------------------------
 # Try to link conftest.$ac_ext, and return whether this succeeded.
@@ -2971,9 +3012,6 @@ fi
 
 
 
-# Set the 'development' global.
-. $srcdir/../bfd/development.sh
-
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4732,15 +4770,56 @@ fi
 
 
 case "${host}" in
-  sparc-*-solaris*|i[3-7]86-*-solaris*)
-    # On native 32bit sparc and ia32 solaris, large-file and procfs support
-    # are mutually exclusive; and without procfs support, the bfd/ elf module
-    # cannot provide certain routines such as elfcore_write_prpsinfo
-    # or elfcore_write_prstatus.  So unless the user explicitly requested
-    # large-file support through the --enable-largefile switch, disable
-    # large-file support in favor of procfs support.
-    test "${target}" = "${host}" -a "x$plugins" = xno \
-      && : ${enable_largefile="no"}
+  sparc-*-solaris*|i?86-*-solaris*)
+    # On native 32-bit Solaris/SPARC and x86, large-file and procfs support
+    # were mutually exclusive until Solaris 11.3.  Without procfs support,
+    # the bfd/ elf module cannot provide certain routines such as
+    # elfcore_write_prpsinfo or elfcore_write_prstatus.  So unless the user
+    # explicitly requested large-file support through the
+    # --enable-largefile switch, disable large-file support in favor of
+    # procfs support.
+    #
+    # Check if <sys/procfs.h> is incompatible with large-file support.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#define _STRUCTURED_PROC 1
+#include <sys/procfs.h>
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  acx_cv_procfs_lfs=yes
+else
+  acx_cv_procfs_lfs=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    #
+    # Forcefully disable large-file support only if necessary, gdb is in
+    # tree and enabled.
+    if test "${target}" = "${host}" -a "$acx_cv_procfs_lfs" = no \
+         -a -d $srcdir/../gdb -a "$enable_gdb" != no; then
+      : ${enable_largefile="no"}
+      if test "$plugins" = yes; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+plugin support disabled; require large-file support which is incompatible with GDB." >&5
+$as_echo "$as_me: WARNING:
+plugin support disabled; require large-file support which is incompatible with GDB." >&2;}
+	plugins=no
+      fi
+    fi
+    #
+    # Explicitly undef _FILE_OFFSET_BITS if enable_largefile=no for the
+    # benefit of g++ 9+ which predefines it on Solaris.
+    if test "$enable_largefile" = no; then
+      LARGEFILE_CPPFLAGS="-U_FILE_OFFSET_BITS"
+
+    fi
     ;;
 esac
 
@@ -6738,7 +6817,6 @@ fi
 # For other settings, only the main target counts.
 gdb_sim=
 gdb_osabi=
-build_gdbserver=
 targ=$target; . ${srcdir}/configure.tgt
 
 # Fetch the default architecture and default target vector from BFD.
@@ -6824,9 +6902,258 @@ case $host_os in
     enable_gdbtk=no ;;
 esac
 
-# Libunwind support for ia64.
+# Handle optional debuginfod support
+
+
+
+
 
 
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-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_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $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
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-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_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  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_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $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
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+fi
+
+# Handle optional debuginfod support
+
+# Check whether --with-debuginfod was given.
+if test "${with_debuginfod+set}" = set; then :
+  withval=$with_debuginfod;
+else
+  with_debuginfod=auto
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use debuginfod" >&5
+$as_echo_n "checking whether to use debuginfod... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_debuginfod" >&5
+$as_echo "$with_debuginfod" >&6; }
+
+if test "x$with_debuginfod" != xno; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libdebuginfod >= 0.179" >&5
+$as_echo_n "checking for libdebuginfod >= 0.179... " >&6; }
+
+if test -n "$DEBUGINFOD_CFLAGS"; then
+    pkg_cv_DEBUGINFOD_CFLAGS="$DEBUGINFOD_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdebuginfod >= 0.179\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdebuginfod >= 0.179") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_DEBUGINFOD_CFLAGS=`$PKG_CONFIG --cflags "libdebuginfod >= 0.179" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$DEBUGINFOD_LIBS"; then
+    pkg_cv_DEBUGINFOD_LIBS="$DEBUGINFOD_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdebuginfod >= 0.179\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdebuginfod >= 0.179") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_DEBUGINFOD_LIBS=`$PKG_CONFIG --libs "libdebuginfod >= 0.179" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+if test $pkg_failed = no; then
+  pkg_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $pkg_cv_DEBUGINFOD_LIBS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+  pkg_failed=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LDFLAGS=$pkg_save_LDFLAGS
+fi
+
+
+
+if test $pkg_failed = yes; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        DEBUGINFOD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libdebuginfod >= 0.179" 2>&1`
+        else
+	        DEBUGINFOD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libdebuginfod >= 0.179" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$DEBUGINFOD_PKG_ERRORS" >&5
+
+	if test "x$with_debuginfod" = xyes; then
+       as_fn_error $? "\"--with-debuginfod was given, but libdebuginfod is missing or unusable.\"" "$LINENO" 5
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libdebuginfod is missing or unusable; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: libdebuginfod is missing or unusable; some features may be unavailable." >&2;}
+     fi
+elif test $pkg_failed = untried; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	if test "x$with_debuginfod" = xyes; then
+       as_fn_error $? "\"--with-debuginfod was given, but libdebuginfod is missing or unusable.\"" "$LINENO" 5
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libdebuginfod is missing or unusable; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: libdebuginfod is missing or unusable; some features may be unavailable." >&2;}
+     fi
+else
+	DEBUGINFOD_CFLAGS=$pkg_cv_DEBUGINFOD_CFLAGS
+	DEBUGINFOD_LIBS=$pkg_cv_DEBUGINFOD_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_LIBDEBUGINFOD 1" >>confdefs.h
+
+fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: debuginfod support disabled; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: debuginfod support disabled; some features may be unavailable." >&2;}
+fi
+
+
+# Libunwind support for ia64.
+
 # Check whether --with-libunwind-ia64 was given.
 if test "${with_libunwind_ia64+set}" = set; then :
   withval=$with_libunwind_ia64;
@@ -7071,7 +7398,7 @@ if test "${with_bugurl+set}" = set; then
 	   ;;
      esac
 else
-  BUGURL="http://www.gnu.org/software/gdb/bugs/"
+  BUGURL="https://www.gnu.org/software/gdb/bugs/"
 
 fi
 
@@ -8004,66 +8331,6 @@ if test "$ac_res" != no; then :
 fi
 
 
-# fbsd-nat.c can also use kinfo_getfile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kinfo_getfile" >&5
-$as_echo_n "checking for library containing kinfo_getfile... " >&6; }
-if ${ac_cv_search_kinfo_getfile+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-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 kinfo_getfile ();
-int
-main ()
-{
-return kinfo_getfile ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' util util-freebsd; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_kinfo_getfile=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_kinfo_getfile+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_kinfo_getfile+:} false; then :
-
-else
-  ac_cv_search_kinfo_getfile=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_kinfo_getfile" >&5
-$as_echo "$ac_cv_search_kinfo_getfile" >&6; }
-ac_res=$ac_cv_search_kinfo_getfile
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-$as_echo "#define HAVE_KINFO_GETFILE 1" >>confdefs.h
-
-fi
-
-
 
       if test "X$prefix" = "XNONE"; then
     acl_final_prefix="$ac_default_prefix"
@@ -8269,6 +8536,16 @@ if test "${with_libiconv_prefix+set}" =
 
 fi
 
+
+# Check whether --with-libiconv-type was given.
+if test "${with_libiconv_type+set}" = set; then :
+  withval=$with_libiconv_type;  with_libiconv_type=$withval
+else
+   with_libiconv_type=auto
+fi
+
+  lib_type=`eval echo \$with_libiconv_type`
+
       LIBICONV=
   LTLIBICONV=
   INCICONV=
@@ -8306,13 +8583,13 @@ fi
           found_so=
           found_a=
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
               found_dir="$additional_libdir"
               found_so="$additional_libdir/lib$name.$shlibext"
               if test -f "$additional_libdir/lib$name.la"; then
                 found_la="$additional_libdir/lib$name.la"
               fi
-            else
+            elif test x$lib_type != xshared; then
               if test -f "$additional_libdir/lib$name.$libext"; then
                 found_dir="$additional_libdir"
                 found_a="$additional_libdir/lib$name.$libext"
@@ -8336,13 +8613,13 @@ fi
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
                     found_dir="$dir"
                     found_so="$dir/lib$name.$shlibext"
                     if test -f "$dir/lib$name.la"; then
                       found_la="$dir/lib$name.la"
                     fi
-                  else
+                  elif test x$lib_type != xshared; then
                     if test -f "$dir/lib$name.$libext"; then
                       found_dir="$dir"
                       found_a="$dir/lib$name.$libext"
@@ -8570,8 +8847,13 @@ fi
               done
             fi
           else
-                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
-            LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+                                                            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+              LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+            else
+              LIBICONV="${LIBICONV}${LIBICONV:+ }-l:lib$name.$libext"
+              LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l:lib$name.$libext"
+            fi
           fi
         fi
       fi
@@ -9371,6 +9653,16 @@ if test "${with_libexpat_prefix+set}" =
 
 fi
 
+
+# Check whether --with-libexpat-type was given.
+if test "${with_libexpat_type+set}" = set; then :
+  withval=$with_libexpat_type;  with_libexpat_type=$withval
+else
+   with_libexpat_type=auto
+fi
+
+  lib_type=`eval echo \$with_libexpat_type`
+
       LIBEXPAT=
   LTLIBEXPAT=
   INCEXPAT=
@@ -9408,13 +9700,13 @@ fi
           found_so=
           found_a=
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
               found_dir="$additional_libdir"
               found_so="$additional_libdir/lib$name.$shlibext"
               if test -f "$additional_libdir/lib$name.la"; then
                 found_la="$additional_libdir/lib$name.la"
               fi
-            else
+            elif test x$lib_type != xshared; then
               if test -f "$additional_libdir/lib$name.$libext"; then
                 found_dir="$additional_libdir"
                 found_a="$additional_libdir/lib$name.$libext"
@@ -9438,13 +9730,13 @@ fi
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
                     found_dir="$dir"
                     found_so="$dir/lib$name.$shlibext"
                     if test -f "$dir/lib$name.la"; then
                       found_la="$dir/lib$name.la"
                     fi
-                  else
+                  elif test x$lib_type != xshared; then
                     if test -f "$dir/lib$name.$libext"; then
                       found_dir="$dir"
                       found_a="$dir/lib$name.$libext"
@@ -9672,8 +9964,13 @@ fi
               done
             fi
           else
-                                                            LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-l$name"
-            LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-l$name"
+                                                            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-l$name"
+              LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-l$name"
+            else
+              LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-l:lib$name.$libext"
+              LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-l:lib$name.$libext"
+            fi
           fi
         fi
       fi
@@ -9876,6 +10173,16 @@ if test "${with_libmpfr_prefix+set}" = s
 
 fi
 
+
+# Check whether --with-libmpfr-type was given.
+if test "${with_libmpfr_type+set}" = set; then :
+  withval=$with_libmpfr_type;  with_libmpfr_type=$withval
+else
+   with_libmpfr_type=auto
+fi
+
+  lib_type=`eval echo \$with_libmpfr_type`
+
       LIBMPFR=
   LTLIBMPFR=
   INCMPFR=
@@ -9913,13 +10220,13 @@ fi
           found_so=
           found_a=
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
               found_dir="$additional_libdir"
               found_so="$additional_libdir/lib$name.$shlibext"
               if test -f "$additional_libdir/lib$name.la"; then
                 found_la="$additional_libdir/lib$name.la"
               fi
-            else
+            elif test x$lib_type != xshared; then
               if test -f "$additional_libdir/lib$name.$libext"; then
                 found_dir="$additional_libdir"
                 found_a="$additional_libdir/lib$name.$libext"
@@ -9943,13 +10250,13 @@ fi
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
                     found_dir="$dir"
                     found_so="$dir/lib$name.$shlibext"
                     if test -f "$dir/lib$name.la"; then
                       found_la="$dir/lib$name.la"
                     fi
-                  else
+                  elif test x$lib_type != xshared; then
                     if test -f "$dir/lib$name.$libext"; then
                       found_dir="$dir"
                       found_a="$dir/lib$name.$libext"
@@ -10177,8 +10484,13 @@ fi
               done
             fi
           else
-                                                            LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-l$name"
-            LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-l$name"
+                                                            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-l$name"
+              LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-l$name"
+            else
+              LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-l:lib$name.$libext"
+              LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-l:lib$name.$libext"
+            fi
           fi
         fi
       fi
@@ -10671,6 +10983,21 @@ _ACEOF
   fi
 fi
 
+
+# Check whether --with-python-libdir was given.
+if test "${with_python_libdir+set}" = set; then :
+  withval=$with_python_libdir;
+else
+
+    # If no python libdir is specified then select one based on
+    # python's prefix path.
+    if test -n "${python_prefix}"; then
+      with_python_libdir=${python_prefix}/lib
+    fi
+
+fi
+
+
 if test "${have_libpython}" != no; then
 
 $as_echo "#define HAVE_PYTHON 1" >>confdefs.h
@@ -10681,6 +11008,37 @@ if test "${have_libpython}" != no; then
   CONFIG_INSTALL="$CONFIG_INSTALL install-python"
   ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)"
 
+  if test -n "${with_python_libdir}"; then
+
+cat >>confdefs.h <<_ACEOF
+#define WITH_PYTHON_LIBDIR "${with_python_libdir}"
+_ACEOF
+
+
+  if test "x$exec_prefix" = xNONE || test "x$exec_prefix" = 'x${prefix}'; then
+     if test "x$prefix" = xNONE; then
+     	test_prefix=/usr/local
+     else
+	test_prefix=$prefix
+     fi
+  else
+     test_prefix=$exec_prefix
+  fi
+  value=0
+  case ${with_python_libdir} in
+     "${test_prefix}"|"${test_prefix}/"*|\
+	'${exec_prefix}'|'${exec_prefix}/'*)
+     value=1
+     ;;
+  esac
+
+cat >>confdefs.h <<_ACEOF
+#define PYTHON_LIBDIR_RELOCATABLE $value
+_ACEOF
+
+
+  fi
+
   # Flags needed to compile Python code (taken from python-config --cflags).
   # We cannot call python-config directly because it will output whatever was
   # used when compiling the Python interpreter itself, including flags which
@@ -10826,7 +11184,7 @@ fi
 
 
 
-try_guile_versions="guile-2.0"
+try_guile_versions="guile-3.0 guile-2.2 guile-2.0"
 have_libguile=no
 case "${with_guile}" in
 no)
@@ -11370,556 +11728,6 @@ fi
 
 
 
-
-# Check whether --with-intel_pt was given.
-if test "${with_intel_pt+set}" = set; then :
-  withval=$with_intel_pt;
-else
-  with_intel_pt=auto
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use intel pt" >&5
-$as_echo_n "checking whether to use intel pt... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_intel_pt" >&5
-$as_echo "$with_intel_pt" >&6; }
-
-if test "${with_intel_pt}" = no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Intel Processor Trace support disabled; some features may be unavailable." >&5
-$as_echo "$as_me: WARNING: Intel Processor Trace support disabled; some features may be unavailable." >&2;}
-  HAVE_LIBIPT=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <linux/perf_event.h>
-#ifndef PERF_ATTR_SIZE_VER5
-# error
-#endif
-
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  perf_event=yes
-else
-  perf_event=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-  if test "$perf_event" != yes; then
-    if test "$with_intel_pt" = yes; then
-      as_fn_error $? "linux/perf_event.h missing or too old" "$LINENO" 5
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: linux/perf_event.h missing or too old; some features may be unavailable." >&5
-$as_echo "$as_me: WARNING: linux/perf_event.h missing or too old; some features may be unavailable." >&2;}
-    fi
-  fi
-
-
-
-
-
-
-
-
-
-    use_additional=yes
-
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-
-    eval additional_includedir=\"$includedir\"
-    eval additional_libdir=\"$libdir\"
-
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-
-
-# Check whether --with-libipt-prefix was given.
-if test "${with_libipt_prefix+set}" = set; then :
-  withval=$with_libipt_prefix;
-    if test "X$withval" = "Xno"; then
-      use_additional=no
-    else
-      if test "X$withval" = "X"; then
-
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-
-          eval additional_includedir=\"$includedir\"
-          eval additional_libdir=\"$libdir\"
-
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-
-      else
-        additional_includedir="$withval/include"
-        additional_libdir="$withval/lib"
-      fi
-    fi
-
-fi
-
-      LIBIPT=
-  LTLIBIPT=
-  INCIPT=
-  rpathdirs=
-  ltrpathdirs=
-  names_already_handled=
-  names_next_round='ipt '
-  while test -n "$names_next_round"; do
-    names_this_round="$names_next_round"
-    names_next_round=
-    for name in $names_this_round; do
-      already_handled=
-      for n in $names_already_handled; do
-        if test "$n" = "$name"; then
-          already_handled=yes
-          break
-        fi
-      done
-      if test -z "$already_handled"; then
-        names_already_handled="$names_already_handled $name"
-                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
-        eval value=\"\$HAVE_LIB$uppername\"
-        if test -n "$value"; then
-          if test "$value" = yes; then
-            eval value=\"\$LIB$uppername\"
-            test -z "$value" || LIBIPT="${LIBIPT}${LIBIPT:+ }$value"
-            eval value=\"\$LTLIB$uppername\"
-            test -z "$value" || LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }$value"
-          else
-                                    :
-          fi
-        else
-                              found_dir=
-          found_la=
-          found_so=
-          found_a=
-          if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
-              found_dir="$additional_libdir"
-              found_so="$additional_libdir/lib$name.$shlibext"
-              if test -f "$additional_libdir/lib$name.la"; then
-                found_la="$additional_libdir/lib$name.la"
-              fi
-            else
-              if test -f "$additional_libdir/lib$name.$libext"; then
-                found_dir="$additional_libdir"
-                found_a="$additional_libdir/lib$name.$libext"
-                if test -f "$additional_libdir/lib$name.la"; then
-                  found_la="$additional_libdir/lib$name.la"
-                fi
-              fi
-            fi
-          fi
-          if test "X$found_dir" = "X"; then
-            for x in $LDFLAGS $LTLIBIPT; do
-
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-  eval x=\"$x\"
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-
-              case "$x" in
-                -L*)
-                  dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
-                    found_dir="$dir"
-                    found_so="$dir/lib$name.$shlibext"
-                    if test -f "$dir/lib$name.la"; then
-                      found_la="$dir/lib$name.la"
-                    fi
-                  else
-                    if test -f "$dir/lib$name.$libext"; then
-                      found_dir="$dir"
-                      found_a="$dir/lib$name.$libext"
-                      if test -f "$dir/lib$name.la"; then
-                        found_la="$dir/lib$name.la"
-                      fi
-                    fi
-                  fi
-                  ;;
-              esac
-              if test "X$found_dir" != "X"; then
-                break
-              fi
-            done
-          fi
-          if test "X$found_dir" != "X"; then
-                        LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-L$found_dir -l$name"
-            if test "X$found_so" != "X"; then
-                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
-                                LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
-              else
-                                                                                haveit=
-                for x in $ltrpathdirs; do
-                  if test "X$x" = "X$found_dir"; then
-                    haveit=yes
-                    break
-                  fi
-                done
-                if test -z "$haveit"; then
-                  ltrpathdirs="$ltrpathdirs $found_dir"
-                fi
-                                if test "$hardcode_direct" = yes; then
-                                                      LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
-                else
-                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
-                                                            LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
-                                                            haveit=
-                    for x in $rpathdirs; do
-                      if test "X$x" = "X$found_dir"; then
-                        haveit=yes
-                        break
-                      fi
-                    done
-                    if test -z "$haveit"; then
-                      rpathdirs="$rpathdirs $found_dir"
-                    fi
-                  else
-                                                                                haveit=
-                    for x in $LDFLAGS $LIBIPT; do
-
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-  eval x=\"$x\"
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-
-                      if test "X$x" = "X-L$found_dir"; then
-                        haveit=yes
-                        break
-                      fi
-                    done
-                    if test -z "$haveit"; then
-                      LIBIPT="${LIBIPT}${LIBIPT:+ }-L$found_dir"
-                    fi
-                    if test "$hardcode_minus_L" != no; then
-                                                                                        LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
-                    else
-                                                                                                                                                                                LIBIPT="${LIBIPT}${LIBIPT:+ }-l$name"
-                    fi
-                  fi
-                fi
-              fi
-            else
-              if test "X$found_a" != "X"; then
-                                LIBIPT="${LIBIPT}${LIBIPT:+ }$found_a"
-              else
-                                                LIBIPT="${LIBIPT}${LIBIPT:+ }-L$found_dir -l$name"
-              fi
-            fi
-                        additional_includedir=
-            case "$found_dir" in
-              */lib | */lib/)
-                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
-                additional_includedir="$basedir/include"
-                ;;
-            esac
-            if test "X$additional_includedir" != "X"; then
-                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
-                haveit=
-                if test "X$additional_includedir" = "X/usr/local/include"; then
-                  if test -n "$GCC"; then
-                    case $host_os in
-                      linux*) haveit=yes;;
-                    esac
-                  fi
-                fi
-                if test -z "$haveit"; then
-                  for x in $CPPFLAGS $INCIPT; do
-
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-  eval x=\"$x\"
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-
-                    if test "X$x" = "X-I$additional_includedir"; then
-                      haveit=yes
-                      break
-                    fi
-                  done
-                  if test -z "$haveit"; then
-                    if test -d "$additional_includedir"; then
-                                            INCIPT="${INCIPT}${INCIPT:+ }-I$additional_includedir"
-                    fi
-                  fi
-                fi
-              fi
-            fi
-                        if test -n "$found_la"; then
-                                                        save_libdir="$libdir"
-              case "$found_la" in
-                */* | *\\*) . "$found_la" ;;
-                *) . "./$found_la" ;;
-              esac
-              libdir="$save_libdir"
-                            for dep in $dependency_libs; do
-                case "$dep" in
-                  -L*)
-                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
-                                                                                                                                                                if test "X$additional_libdir" != "X/usr/lib"; then
-                      haveit=
-                      if test "X$additional_libdir" = "X/usr/local/lib"; then
-                        if test -n "$GCC"; then
-                          case $host_os in
-                            linux*) haveit=yes;;
-                          esac
-                        fi
-                      fi
-                      if test -z "$haveit"; then
-                        haveit=
-                        for x in $LDFLAGS $LIBIPT; do
-
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-  eval x=\"$x\"
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-
-                          if test "X$x" = "X-L$additional_libdir"; then
-                            haveit=yes
-                            break
-                          fi
-                        done
-                        if test -z "$haveit"; then
-                          if test -d "$additional_libdir"; then
-                                                        LIBIPT="${LIBIPT}${LIBIPT:+ }-L$additional_libdir"
-                          fi
-                        fi
-                        haveit=
-                        for x in $LDFLAGS $LTLIBIPT; do
-
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-  eval x=\"$x\"
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-
-                          if test "X$x" = "X-L$additional_libdir"; then
-                            haveit=yes
-                            break
-                          fi
-                        done
-                        if test -z "$haveit"; then
-                          if test -d "$additional_libdir"; then
-                                                        LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-L$additional_libdir"
-                          fi
-                        fi
-                      fi
-                    fi
-                    ;;
-                  -R*)
-                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
-                    if test "$enable_rpath" != no; then
-                                                                  haveit=
-                      for x in $rpathdirs; do
-                        if test "X$x" = "X$dir"; then
-                          haveit=yes
-                          break
-                        fi
-                      done
-                      if test -z "$haveit"; then
-                        rpathdirs="$rpathdirs $dir"
-                      fi
-                                                                  haveit=
-                      for x in $ltrpathdirs; do
-                        if test "X$x" = "X$dir"; then
-                          haveit=yes
-                          break
-                        fi
-                      done
-                      if test -z "$haveit"; then
-                        ltrpathdirs="$ltrpathdirs $dir"
-                      fi
-                    fi
-                    ;;
-                  -l*)
-                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
-                    ;;
-                  *.la)
-                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
-                    ;;
-                  *)
-                                        LIBIPT="${LIBIPT}${LIBIPT:+ }$dep"
-                    LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }$dep"
-                    ;;
-                esac
-              done
-            fi
-          else
-                                                            LIBIPT="${LIBIPT}${LIBIPT:+ }-l$name"
-            LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-l$name"
-          fi
-        fi
-      fi
-    done
-  done
-  if test "X$rpathdirs" != "X"; then
-    if test -n "$hardcode_libdir_separator"; then
-                        alldirs=
-      for found_dir in $rpathdirs; do
-        alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
-      done
-            acl_save_libdir="$libdir"
-      libdir="$alldirs"
-      eval flag=\"$hardcode_libdir_flag_spec\"
-      libdir="$acl_save_libdir"
-      LIBIPT="${LIBIPT}${LIBIPT:+ }$flag"
-    else
-            for found_dir in $rpathdirs; do
-        acl_save_libdir="$libdir"
-        libdir="$found_dir"
-        eval flag=\"$hardcode_libdir_flag_spec\"
-        libdir="$acl_save_libdir"
-        LIBIPT="${LIBIPT}${LIBIPT:+ }$flag"
-      done
-    fi
-  fi
-  if test "X$ltrpathdirs" != "X"; then
-            for found_dir in $ltrpathdirs; do
-      LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-R$found_dir"
-    done
-  fi
-
-
-        ac_save_CPPFLAGS="$CPPFLAGS"
-
-  for element in $INCIPT; do
-    haveit=
-    for x in $CPPFLAGS; do
-
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
-  eval x=\"$x\"
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
-
-      if test "X$x" = "X$element"; then
-        haveit=yes
-        break
-      fi
-    done
-    if test -z "$haveit"; then
-      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
-    fi
-  done
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libipt" >&5
-$as_echo_n "checking for libipt... " >&6; }
-if ${ac_cv_libipt+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBIPT"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "intel-pt.h"
-int
-main ()
-{
-pt_insn_alloc_decoder (0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_libipt=yes
-else
-  ac_cv_libipt=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LIBS="$ac_save_LIBS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libipt" >&5
-$as_echo "$ac_cv_libipt" >&6; }
-  if test "$ac_cv_libipt" = yes; then
-    HAVE_LIBIPT=yes
-
-$as_echo "#define HAVE_LIBIPT 1" >>confdefs.h
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libipt" >&5
-$as_echo_n "checking how to link with libipt... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBIPT" >&5
-$as_echo "$LIBIPT" >&6; }
-  else
-    HAVE_LIBIPT=no
-            CPPFLAGS="$ac_save_CPPFLAGS"
-    LIBIPT=
-    LTLIBIPT=
-  fi
-
-
-
-
-
-
-  if test "$HAVE_LIBIPT" != yes; then
-    if test "$with_intel_pt" = yes; then
-      as_fn_error $? "libipt is missing or unusable" "$LINENO" 5
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libipt is missing or unusable; some features may be unavailable." >&5
-$as_echo "$as_me: WARNING: libipt is missing or unusable; some features may be unavailable." >&2;}
-    fi
-  else
-    save_LIBS=$LIBS
-    LIBS="$LIBS $LIBIPT"
-    for ac_func in pt_insn_event
-do :
-  ac_fn_c_check_func "$LINENO" "pt_insn_event" "ac_cv_func_pt_insn_event"
-if test "x$ac_cv_func_pt_insn_event" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_PT_INSN_EVENT 1
-_ACEOF
-
-fi
-done
-
-    ac_fn_c_check_member "$LINENO" "struct pt_insn" "enabled" "ac_cv_member_struct_pt_insn_enabled" "#include <intel-pt.h>
-"
-if test "x$ac_cv_member_struct_pt_insn_enabled" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PT_INSN_ENABLED 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct pt_insn" "resynced" "ac_cv_member_struct_pt_insn_resynced" "#include <intel-pt.h>
-"
-if test "x$ac_cv_member_struct_pt_insn_resynced" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PT_INSN_RESYNCED 1
-_ACEOF
-
-
-fi
-
-    LIBS=$save_LIBS
-  fi
-fi
-
 # ------------------------- #
 # Checks for header files.  #
 # ------------------------- #
@@ -12037,11 +11845,11 @@ if test $ac_cv_header_stdc = yes; then
 fi
 
 # elf_hp.h is for HP/UX 64-bit shared library support.
-for ac_header in nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \
-                  thread_db.h linux/elf.h \
+for ac_header in nlist.h machine/reg.h \
+                  thread_db.h \
 		  sys/file.h sys/filio.h sys/ioctl.h sys/param.h \
-		  sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \
-		  sys/reg.h sys/debugreg.h sys/select.h \
+		  sys/resource.h sys/ptrace.h ptrace.h \
+		  sys/reg.h sys/debugreg.h \
 		  termios.h elf_hp.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -12102,6 +11910,31 @@ fi
 done
 
 
+for ac_header in sys/socket.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_socket_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_SOCKET_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in ws2tcpip.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "ws2tcpip.h" "ac_cv_header_ws2tcpip_h" "$ac_includes_default"
+if test "x$ac_cv_header_ws2tcpip_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WS2TCPIP_H 1
+_ACEOF
+
+fi
+
+done
+
+
 # ------------------------- #
 # Checks for declarations.  #
 # ------------------------- #
@@ -12312,36 +12145,16 @@ fi
   fi
 
 
-# ----------------------- #
-# Checks for structures.  #
-# ----------------------- #
-
-ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-_ACEOF
-
-
-fi
-
-
 # ------------------ #
 # Checks for types.  #
 # ------------------ #
 
 ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include <sys/types.h>
-#include <sys/socket.h>
+#if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#elif HAVE_WS2TCPIP_H
+# include <ws2tcpip.h>
+#endif
 
 "
 if test "x$ac_cv_type_socklen_t" = xyes; then :
@@ -12710,6 +12523,69 @@ fi
 # Checks for library functions.  #
 # ------------------------------ #
 
+for ac_func in getuid getgid \
+		pipe pread pread64 pwrite resize_term \
+		getpgid setsid \
+		sigaction sigsetmask socketpair \
+		ttrace wborder wresize setlocale iconvlist libiconvlist btowc \
+		setrlimit getrlimit posix_madvise waitpid \
+		use_default_colors
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_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
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if ${am_cv_langinfo_codeset+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_langinfo_codeset=yes
+else
+  am_cv_langinfo_codeset=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: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+  if test $am_cv_langinfo_codeset = yes; then
+
+$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+
+  fi
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
 
 
 
@@ -12733,6 +12609,448 @@ done
 
 
 
+ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
+if test "x$ac_cv_type_pid_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define pid_t int
+_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
+
+
+  # Set the 'development' global.
+  . $srcdir/../bfd/development.sh
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+  # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if ${ac_cv_working_alloca_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+			  if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_working_alloca_h=yes
+else
+  ac_cv_working_alloca_h=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: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if ${ac_cv_func_alloca_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca (size_t);
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+				    if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_func_alloca_works=yes
+else
+  ac_cv_func_alloca_works=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: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+
+else
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+$as_echo "#define C_ALLOCA 1" >>confdefs.h
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if ${ac_cv_os_cray+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "webecray" >/dev/null 2>&1; then :
+  ac_cv_os_cray=yes
+else
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+    break
+fi
+
+  done
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if ${ac_cv_c_stack_direction+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_c_stack_direction=0
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+find_stack_direction (int *addr, int depth)
+{
+  int dir, dummy = 0;
+  if (! addr)
+    addr = &dummy;
+  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+  return dir + dummy;
+}
+
+int
+main (int argc, char **argv)
+{
+  return find_stack_direction (0, argc + !argv + 20) < 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_stack_direction=1
+else
+  ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+
+  WIN32APILIBS=
+  case ${host} in
+    *mingw32*)
+
+$as_echo "#define USE_WIN32API 1" >>confdefs.h
+
+      WIN32APILIBS="-lws2_32"
+      ;;
+  esac
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if ${am_cv_langinfo_codeset+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_langinfo_codeset=yes
+else
+  am_cv_langinfo_codeset=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: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+  if test $am_cv_langinfo_codeset = yes; then
+
+$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+
+  fi
+
+
+  for ac_header in linux/perf_event.h locale.h memory.h signal.h 		   sys/resource.h sys/socket.h 		   sys/un.h sys/wait.h 		   thread_db.h wait.h 		   termios.h 		   dlfcn.h 		   linux/elf.h proc_service.h 		   poll.h sys/poll.h sys/select.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
 
 for ac_func in getpagesize
 do :
@@ -12911,18 +13229,7 @@ if test $ac_cv_func_mmap_fixed_mapped =
 fi
 rm -f conftest.mmap conftest.txt
 
-ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
-_ACEOF
-
-fi
-
-for ac_header in vfork.h
+  for ac_header in vfork.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default"
 if test "x$ac_cv_header_vfork_h" = xyes; then :
@@ -13135,13 +13442,9 @@ if test "x$ac_cv_func_fork_works" = xyes
 
 fi
 
-for ac_func in getauxval getrusage getuid getgid \
-		pipe poll pread pread64 pwrite resize_term \
-		sbrk getpgid setpgid setpgrp setsid \
-		sigaction sigsetmask socketpair \
-		ttrace wborder wresize setlocale iconvlist libiconvlist btowc \
-		setrlimit getrlimit posix_madvise waitpid \
-		ptrace64 sigaltstack setns use_default_colors
+  for ac_func in fdwalk getrlimit pipe pipe2 poll socketpair sigaction \
+		  ptrace64 sbrk setns sigaltstack sigprocmask \
+		  setpgid setpgrp getrusage getauxval
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -13154,493 +13457,174 @@ fi
 done
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
-$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
-if ${am_cv_langinfo_codeset+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(CODESET);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  am_cv_langinfo_codeset=yes
+      ac_fn_c_check_decl "$LINENO" "ADDR_NO_RANDOMIZE" "ac_cv_have_decl_ADDR_NO_RANDOMIZE" "#include <sys/personality.h>
+"
+if test "x$ac_cv_have_decl_ADDR_NO_RANDOMIZE" = xyes; then :
+  ac_have_decl=1
 else
-  am_cv_langinfo_codeset=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
+  ac_have_decl=0
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
-$as_echo "$am_cv_langinfo_codeset" >&6; }
-  if test $am_cv_langinfo_codeset = yes; then
-
-$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
-
-  fi
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
 
 cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_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; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
+#define HAVE_DECL_ADDR_NO_RANDOMIZE $ac_have_decl
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
 
-fi
 
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
   if test "$cross_compiling" = yes; then :
-  :
-else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+#include <sys/personality.h>
 int
 main ()
 {
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
 
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-  # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments.  Useless!
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
-			  if (p) return 0;
+  #      if !HAVE_DECL_ADDR_NO_RANDOMIZE
+  #       define ADDR_NO_RANDOMIZE 0x0040000
+  #      endif
+	 /* Test the flag could be set and stays set.  */
+	 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
+	 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
+	     return 1
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_working_alloca_h=yes
+  have_personality=true
 else
-  ac_cv_working_alloca_h=no
+  have_personality=false
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
-if test $ac_cv_working_alloca_h = yes; then
-
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
-  $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-#  include <malloc.h>
-#  define alloca _alloca
-# else
-#  ifdef HAVE_ALLOCA_H
-#   include <alloca.h>
-#  else
-#   ifdef _AIX
- #pragma alloca
-#   else
-#    ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-#    endif
-#   endif
-#  endif
-# endif
-#endif
-
+#include <sys/personality.h>
 int
 main ()
 {
-char *p = (char *) alloca (1);
-				    if (p) return 0;
+
+  #      if !HAVE_DECL_ADDR_NO_RANDOMIZE
+  #       define ADDR_NO_RANDOMIZE 0x0040000
+  #      endif
+	 /* Test the flag could be set and stays set.  */
+	 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
+	 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
+	     return 1
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_func_alloca_works=yes
+if ac_fn_c_try_run "$LINENO"; then :
+  have_personality=true
 else
-  ac_cv_func_alloca_works=no
+  have_personality=false
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
-
-if test $ac_cv_func_alloca_works = yes; then
-
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
-
-else
-  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble.  Some versions do not even contain alloca or
-# contain a buggy version.  If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
-
-ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
 
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
+  if $have_personality
+  then
 
+$as_echo "#define HAVE_PERSONALITY 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
+  fi
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "webecray" >/dev/null 2>&1; then :
-  ac_cv_os_cray=yes
+  ac_fn_c_check_decl "$LINENO" "strstr" "ac_cv_have_decl_strstr" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strstr" = xyes; then :
+  ac_have_decl=1
 else
-  ac_cv_os_cray=no
-fi
-rm -f conftest*
-
+  ac_have_decl=0
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
-  for ac_func in _getb67 GETB67 getb67; do
-    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
 
 cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
+#define HAVE_DECL_STRSTR $ac_have_decl
 _ACEOF
 
-    break
-fi
 
-  done
-fi
+  # ----------------------- #
+  # Checks for structures.  #
+  # ----------------------- #
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_c_stack_direction=0
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-find_stack_direction (int *addr, int depth)
-{
-  int dir, dummy = 0;
-  if (! addr)
-    addr = &dummy;
-  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
-  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
-  return dir + dummy;
-}
+  ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default"
+if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
 
-int
-main (int argc, char **argv)
-{
-  return find_stack_direction (0, argc + !argv + 20) < 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_c_stack_direction=1
-else
-  ac_cv_c_stack_direction=-1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
+ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
+if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
+
 cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
 _ACEOF
 
 
 fi
 
 
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
-$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
-if ${am_cv_langinfo_codeset+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kinfo_getfile" >&5
+$as_echo_n "checking for library containing kinfo_getfile... " >&6; }
+if ${ac_cv_search_kinfo_getfile+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <langinfo.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 kinfo_getfile ();
 int
 main ()
 {
-char* cs = nl_langinfo(CODESET);
+return kinfo_getfile ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  am_cv_langinfo_codeset=yes
-else
-  am_cv_langinfo_codeset=no
+for ac_lib in '' util util-freebsd; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_kinfo_getfile=$ac_res
 fi
 rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
-$as_echo "$am_cv_langinfo_codeset" >&6; }
-  if test $am_cv_langinfo_codeset = yes; then
-
-$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
-
-  fi
-
-
-  for ac_header in linux/perf_event.h locale.h memory.h signal.h 		   sys/resource.h sys/socket.h 		   sys/un.h sys/wait.h 		   thread_db.h wait.h 		   termios.h 		   dlfcn.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
+    conftest$ac_exeext
+  if ${ac_cv_search_kinfo_getfile+:} false; then :
+  break
 fi
-
 done
+if ${ac_cv_search_kinfo_getfile+:} false; then :
 
-
-  for ac_func in fdwalk getrlimit pipe pipe2 socketpair sigaction \
-		  sigprocmask
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_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
-
+else
+  ac_cv_search_kinfo_getfile=no
 fi
-done
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_kinfo_getfile" >&5
+$as_echo "$ac_cv_search_kinfo_getfile" >&6; }
+ac_res=$ac_cv_search_kinfo_getfile
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
+$as_echo "#define HAVE_KINFO_GETFILE 1" >>confdefs.h
 
-  ac_fn_c_check_decl "$LINENO" "strstr" "ac_cv_have_decl_strstr" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strstr" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
 fi
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRSTR $ac_have_decl
-_ACEOF
-
 
   # Check for std::thread.  This does not work on some platforms, like
   # mingw and DJGPP.
@@ -14351,7 +14335,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigsetjmp" >&5
+      { $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 :
   $as_echo_n "(cached) " >&6
@@ -14359,7 +14343,7 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include <setjmp.h>
+  #include <setjmp.h>
 
 int
 main ()
@@ -14378,12 +14362,883 @@ rm -f core conftest.err conftest.$ac_obj
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_func_sigsetjmp" >&5
 $as_echo "$gdb_cv_func_sigsetjmp" >&6; }
-if test "$gdb_cv_func_sigsetjmp" = "yes"; then
+  if test "$gdb_cv_func_sigsetjmp" = "yes"; then
 
 $as_echo "#define HAVE_SIGSETJMP 1" >>confdefs.h
 
+  fi
+
+
+# Check whether --with-intel_pt was given.
+if test "${with_intel_pt+set}" = set; then :
+  withval=$with_intel_pt;
+else
+  with_intel_pt=auto
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use intel pt" >&5
+$as_echo_n "checking whether to use intel pt... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_intel_pt" >&5
+$as_echo "$with_intel_pt" >&6; }
+
+  if test "${with_intel_pt}" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Intel Processor Trace support disabled; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: Intel Processor Trace support disabled; some features may be unavailable." >&2;}
+    HAVE_LIBIPT=no
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  #include <linux/perf_event.h>
+  #ifndef PERF_ATTR_SIZE_VER5
+  # error
+  #endif
+
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  perf_event=yes
+else
+  perf_event=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+    if test "$perf_event" != yes; then
+      if test "$with_intel_pt" = yes; then
+	as_fn_error $? "linux/perf_event.h missing or too old" "$LINENO" 5
+      else
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: linux/perf_event.h missing or too old; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: linux/perf_event.h missing or too old; some features may be unavailable." >&2;}
+      fi
+    fi
+
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libipt-prefix was given.
+if test "${with_libipt_prefix+set}" = set; then :
+  withval=$with_libipt_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/lib"
+      fi
+    fi
+
+fi
+
+
+# Check whether --with-libipt-type was given.
+if test "${with_libipt_type+set}" = set; then :
+  withval=$with_libipt_type;  with_libipt_type=$withval
+else
+   with_libipt_type=auto
+fi
+
+  lib_type=`eval echo \$with_libipt_type`
+
+      LIBIPT=
+  LTLIBIPT=
+  INCIPT=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='ipt '
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBIPT="${LIBIPT}${LIBIPT:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          if test $use_additional = yes; then
+            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
+              found_dir="$additional_libdir"
+              found_so="$additional_libdir/lib$name.$shlibext"
+              if test -f "$additional_libdir/lib$name.la"; then
+                found_la="$additional_libdir/lib$name.la"
+              fi
+            elif test x$lib_type != xshared; then
+              if test -f "$additional_libdir/lib$name.$libext"; then
+                found_dir="$additional_libdir"
+                found_a="$additional_libdir/lib$name.$libext"
+                if test -f "$additional_libdir/lib$name.la"; then
+                  found_la="$additional_libdir/lib$name.la"
+                fi
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBIPT; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
+                    found_dir="$dir"
+                    found_so="$dir/lib$name.$shlibext"
+                    if test -f "$dir/lib$name.la"; then
+                      found_la="$dir/lib$name.la"
+                    fi
+                  elif test x$lib_type != xshared; then
+                    if test -f "$dir/lib$name.$libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/lib$name.$libext"
+                      if test -f "$dir/lib$name.la"; then
+                        found_la="$dir/lib$name.la"
+                      fi
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+                                LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$hardcode_direct" = yes; then
+                                                      LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
+                else
+                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                                                            LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBIPT; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBIPT="${LIBIPT}${LIBIPT:+ }-L$found_dir"
+                    fi
+                    if test "$hardcode_minus_L" != no; then
+                                                                                        LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBIPT="${LIBIPT}${LIBIPT:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBIPT="${LIBIPT}${LIBIPT:+ }$found_a"
+              else
+                                                LIBIPT="${LIBIPT}${LIBIPT:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */lib | */lib/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux*) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCIPT; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCIPT="${INCIPT}${INCIPT:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/lib"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/lib"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux*) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBIPT; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBIPT="${LIBIPT}${LIBIPT:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBIPT; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBIPT="${LIBIPT}${LIBIPT:+ }$dep"
+                    LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIBIPT="${LIBIPT}${LIBIPT:+ }-l$name"
+              LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-l$name"
+            else
+              LIBIPT="${LIBIPT}${LIBIPT:+ }-l:lib$name.$libext"
+              LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-l:lib$name.$libext"
+            fi
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBIPT="${LIBIPT}${LIBIPT:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBIPT="${LIBIPT}${LIBIPT:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-R$found_dir"
+    done
+  fi
+
+
+        ac_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCIPT; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libipt" >&5
+$as_echo_n "checking for libipt... " >&6; }
+if ${ac_cv_libipt+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_save_LIBS="$LIBS"
+    LIBS="$LIBS $LIBIPT"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "intel-pt.h"
+int
+main ()
+{
+pt_insn_alloc_decoder (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_libipt=yes
+else
+  ac_cv_libipt=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libipt" >&5
+$as_echo "$ac_cv_libipt" >&6; }
+  if test "$ac_cv_libipt" = yes; then
+    HAVE_LIBIPT=yes
+
+$as_echo "#define HAVE_LIBIPT 1" >>confdefs.h
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libipt" >&5
+$as_echo_n "checking how to link with libipt... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBIPT" >&5
+$as_echo "$LIBIPT" >&6; }
+  else
+    HAVE_LIBIPT=no
+            CPPFLAGS="$ac_save_CPPFLAGS"
+    LIBIPT=
+    LTLIBIPT=
+  fi
+
+
+
+
+
+
+    if test "$HAVE_LIBIPT" != yes; then
+      if test "$with_intel_pt" = yes; then
+	as_fn_error $? "libipt is missing or unusable" "$LINENO" 5
+      else
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libipt is missing or unusable; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: libipt is missing or unusable; some features may be unavailable." >&2;}
+      fi
+    else
+      save_LIBS=$LIBS
+      LIBS="$LIBS $LIBIPT"
+      for ac_func in pt_insn_event
+do :
+  ac_fn_c_check_func "$LINENO" "pt_insn_event" "ac_cv_func_pt_insn_event"
+if test "x$ac_cv_func_pt_insn_event" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PT_INSN_EVENT 1
+_ACEOF
+
+fi
+done
+
+      ac_fn_c_check_member "$LINENO" "struct pt_insn" "enabled" "ac_cv_member_struct_pt_insn_enabled" "#include <intel-pt.h>
+"
+if test "x$ac_cv_member_struct_pt_insn_enabled" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PT_INSN_ENABLED 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct pt_insn" "resynced" "ac_cv_member_struct_pt_insn_resynced" "#include <intel-pt.h>
+"
+if test "x$ac_cv_member_struct_pt_insn_resynced" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PT_INSN_RESYNCED 1
+_ACEOF
+
+
+fi
+
+      LIBS=$save_LIBS
+    fi
+  fi
+
+
+$as_echo "#define _STRUCTURED_PROC 1" >>confdefs.h
+
+ for ac_header in sys/procfs.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/procfs.h" "ac_cv_header_sys_procfs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_procfs_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_PROCFS_H 1
+_ACEOF
+
+fi
+
+done
+
+  if test "$ac_cv_header_sys_procfs_h" = yes; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gregset_t in sys/procfs.h" >&5
+$as_echo_n "checking for gregset_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_gregset_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+gregset_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_gregset_t=yes
+else
+  bfd_cv_have_sys_procfs_type_gregset_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_gregset_t = yes; then
+
+$as_echo "#define HAVE_GREGSET_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_gregset_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_gregset_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpregset_t in sys/procfs.h" >&5
+$as_echo_n "checking for fpregset_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_fpregset_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+fpregset_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_fpregset_t=yes
+else
+  bfd_cv_have_sys_procfs_type_fpregset_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_fpregset_t = yes; then
+
+$as_echo "#define HAVE_FPREGSET_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_fpregset_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_fpregset_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prgregset_t in sys/procfs.h" >&5
+$as_echo_n "checking for prgregset_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_prgregset_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+prgregset_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_prgregset_t=yes
+else
+  bfd_cv_have_sys_procfs_type_prgregset_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_prgregset_t = yes; then
+
+$as_echo "#define HAVE_PRGREGSET_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prgregset_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_prgregset_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prfpregset_t in sys/procfs.h" >&5
+$as_echo_n "checking for prfpregset_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_prfpregset_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+prfpregset_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_prfpregset_t=yes
+else
+  bfd_cv_have_sys_procfs_type_prfpregset_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
+
+$as_echo "#define HAVE_PRFPREGSET_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prfpregset_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_prfpregset_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prgregset32_t in sys/procfs.h" >&5
+$as_echo_n "checking for prgregset32_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_prgregset32_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+prgregset32_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_prgregset32_t=yes
+else
+  bfd_cv_have_sys_procfs_type_prgregset32_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
+ if test $bfd_cv_have_sys_procfs_type_prgregset32_t = yes; then
+
+$as_echo "#define HAVE_PRGREGSET32_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prgregset32_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_prgregset32_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpid_t in sys/procfs.h" >&5
+$as_echo_n "checking for lwpid_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_lwpid_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+lwpid_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_lwpid_t=yes
+else
+  bfd_cv_have_sys_procfs_type_lwpid_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_lwpid_t = yes; then
+
+$as_echo "#define HAVE_LWPID_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_lwpid_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_lwpid_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psaddr_t in sys/procfs.h" >&5
+$as_echo_n "checking for psaddr_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_psaddr_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+psaddr_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_psaddr_t=yes
+else
+  bfd_cv_have_sys_procfs_type_psaddr_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_psaddr_t = yes; then
+
+$as_echo "#define HAVE_PSADDR_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_psaddr_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_psaddr_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_fpregset_t in sys/procfs.h" >&5
+$as_echo_n "checking for elf_fpregset_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_elf_fpregset_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+elf_fpregset_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_elf_fpregset_t=yes
+else
+  bfd_cv_have_sys_procfs_type_elf_fpregset_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_elf_fpregset_t = yes; then
+
+$as_echo "#define HAVE_ELF_FPREGSET_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&6; }
+
+  fi
+
 
 # Check the return and argument types of ptrace.
 
@@ -14411,26 +15266,6 @@ gdb_ptrace_headers='
 # include <unistd.h>
 #endif
 '
-# There is no point in checking if we don't have a prototype.
-ac_fn_c_check_decl "$LINENO" "ptrace" "ac_cv_have_decl_ptrace" "$gdb_ptrace_headers
-"
-if test "x$ac_cv_have_decl_ptrace" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_PTRACE $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
-
-else
-
-  : ${gdb_cv_func_ptrace_ret='int'}
-  : ${gdb_cv_func_ptrace_args='int,int,long,long'}
-
-fi
 
 # Check return type.  Varargs (used on GNU/Linux) conflict with the
 # empty argument list, so check for that explicitly.
@@ -14826,33 +15661,6 @@ _ACEOF
 fi
 
 
-# See if <sys/user.h> supports the %fs_base and %gs_bas amd64 segment registers.
-# Older amd64 Linux's don't have the fs_base and gs_base members of
-# `struct user_regs_struct'.
-ac_fn_c_check_member "$LINENO" "struct user_regs_struct" "fs_base" "ac_cv_member_struct_user_regs_struct_fs_base" "#include <sys/types.h>
-#include <sys/user.h>
-"
-if test "x$ac_cv_member_struct_user_regs_struct_fs_base" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct user_regs_struct" "gs_base" "ac_cv_member_struct_user_regs_struct_gs_base" "#include <sys/types.h>
-#include <sys/user.h>
-"
-if test "x$ac_cv_member_struct_user_regs_struct_gs_base" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE 1
-_ACEOF
-
-
-fi
-
-
 # See if <sys/ptrace.h> provides the PTRACE_GETREGS request.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTRACE_GETREGS" >&5
 $as_echo_n "checking for PTRACE_GETREGS... " >&6; }
@@ -15017,305 +15825,6 @@ _ACEOF
 fi
 
 
-if test "$ac_cv_header_sys_procfs_h" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gregset_t in sys/procfs.h" >&5
-$as_echo_n "checking for gregset_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_gregset_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-gregset_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_gregset_t=yes
-else
-  bfd_cv_have_sys_procfs_type_gregset_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_gregset_t = yes; then
-
-$as_echo "#define HAVE_GREGSET_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_gregset_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_gregset_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpregset_t in sys/procfs.h" >&5
-$as_echo_n "checking for fpregset_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_fpregset_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-fpregset_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_fpregset_t=yes
-else
-  bfd_cv_have_sys_procfs_type_fpregset_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_fpregset_t = yes; then
-
-$as_echo "#define HAVE_FPREGSET_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_fpregset_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_fpregset_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prgregset_t in sys/procfs.h" >&5
-$as_echo_n "checking for prgregset_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_prgregset_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-prgregset_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_prgregset_t=yes
-else
-  bfd_cv_have_sys_procfs_type_prgregset_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_prgregset_t = yes; then
-
-$as_echo "#define HAVE_PRGREGSET_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prgregset_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_prgregset_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prfpregset_t in sys/procfs.h" >&5
-$as_echo_n "checking for prfpregset_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_prfpregset_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-prfpregset_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_prfpregset_t=yes
-else
-  bfd_cv_have_sys_procfs_type_prfpregset_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
-
-$as_echo "#define HAVE_PRFPREGSET_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prfpregset_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_prfpregset_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prgregset32_t in sys/procfs.h" >&5
-$as_echo_n "checking for prgregset32_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_prgregset32_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-prgregset32_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_prgregset32_t=yes
-else
-  bfd_cv_have_sys_procfs_type_prgregset32_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_prgregset32_t = yes; then
-
-$as_echo "#define HAVE_PRGREGSET32_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prgregset32_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_prgregset32_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpid_t in sys/procfs.h" >&5
-$as_echo_n "checking for lwpid_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_lwpid_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-lwpid_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_lwpid_t=yes
-else
-  bfd_cv_have_sys_procfs_type_lwpid_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_lwpid_t = yes; then
-
-$as_echo "#define HAVE_LWPID_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_lwpid_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_lwpid_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psaddr_t in sys/procfs.h" >&5
-$as_echo_n "checking for psaddr_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_psaddr_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-psaddr_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_psaddr_t=yes
-else
-  bfd_cv_have_sys_procfs_type_psaddr_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_psaddr_t = yes; then
-
-$as_echo "#define HAVE_PSADDR_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_psaddr_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_psaddr_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_fpregset_t in sys/procfs.h" >&5
-$as_echo_n "checking for elf_fpregset_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_elf_fpregset_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-elf_fpregset_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_elf_fpregset_t=yes
-else
-  bfd_cv_have_sys_procfs_type_elf_fpregset_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_elf_fpregset_t = yes; then
-
-$as_echo "#define HAVE_ELF_FPREGSET_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&6; }
-
-fi
-
 # Check if the compiler supports the `long long' type.
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long support in compiler" >&5
@@ -15650,7 +16159,7 @@ main ()
 {
 int err;
           Py_Initialize ();
-          err = PyRun_SimpleString ("import itertools\n");
+          err = PyRun_SimpleString ("import ctypes\n");
           Py_Finalize ();
           return err == 0 ? 0 : 1;
   ;
@@ -15838,80 +16347,6 @@ if test "x$gdb_cv_thread_db_h_has_td_not
 
 fi
 
-ac_fn_c_check_decl "$LINENO" "ADDR_NO_RANDOMIZE" "ac_cv_have_decl_ADDR_NO_RANDOMIZE" "#include <sys/personality.h>
-"
-if test "x$ac_cv_have_decl_ADDR_NO_RANDOMIZE" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ADDR_NO_RANDOMIZE $ac_have_decl
-_ACEOF
-
-
-if test "$cross_compiling" = yes; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/personality.h>
-int
-main ()
-{
-
-#      if !HAVE_DECL_ADDR_NO_RANDOMIZE
-#       define ADDR_NO_RANDOMIZE 0x0040000
-#      endif
-       /* Test the flag could be set and stays set.  */
-       personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
-       if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
-	   return 1
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  have_personality=true
-else
-  have_personality=false
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/personality.h>
-int
-main ()
-{
-
-#      if !HAVE_DECL_ADDR_NO_RANDOMIZE
-#       define ADDR_NO_RANDOMIZE 0x0040000
-#      endif
-       /* Test the flag could be set and stays set.  */
-       personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
-       if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
-	   return 1
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  have_personality=true
-else
-  have_personality=false
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-if $have_personality
-then
-
-$as_echo "#define HAVE_PERSONALITY 1" >>confdefs.h
-
-fi
-
 case $host_os in
   go32* | *djgpp*)
     gdbinit=gdb.ini
@@ -16105,7 +16540,11 @@ build_warnings="-Wall -Wpointer-arith \
 -Wshadow=local \
 -Wdeprecated-copy \
 -Wdeprecated-copy-dtor \
--Wredundant-move"
+-Wredundant-move \
+-Wmissing-declarations \
+-Wmissing-prototypes \
+-Wstrict-null-sentinel \
+"
 
 case "${host}" in
   *-*-mingw32*)
@@ -16355,15 +16794,8 @@ if test x"$gdb_cv_os_cygwin" = xyes; the
 fi
 
 # The ser-tcp.c module requires sockets.
-case ${host} in
-  *mingw32*)
-
-$as_echo "#define USE_WIN32API 1" >>confdefs.h
-
-    WIN32LIBS="$WIN32LIBS -lws2_32"
-    ;;
-esac
-
+# Note that WIN32APILIBS is set by GDB_AC_COMMON.
+WIN32LIBS="$WIN32LIBS $WIN32APILIBS"
 
 # Add ELF support to GDB, but only if BFD includes ELF support.
 
@@ -16593,6 +17025,16 @@ if test "${with_liblzma_prefix+set}" = s
 
 fi
 
+
+# Check whether --with-liblzma-type was given.
+if test "${with_liblzma_type+set}" = set; then :
+  withval=$with_liblzma_type;  with_liblzma_type=$withval
+else
+   with_liblzma_type=auto
+fi
+
+  lib_type=`eval echo \$with_liblzma_type`
+
       LIBLZMA=
   LTLIBLZMA=
   INCLZMA=
@@ -16630,13 +17072,13 @@ fi
           found_so=
           found_a=
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
               found_dir="$additional_libdir"
               found_so="$additional_libdir/lib$name.$shlibext"
               if test -f "$additional_libdir/lib$name.la"; then
                 found_la="$additional_libdir/lib$name.la"
               fi
-            else
+            elif test x$lib_type != xshared; then
               if test -f "$additional_libdir/lib$name.$libext"; then
                 found_dir="$additional_libdir"
                 found_a="$additional_libdir/lib$name.$libext"
@@ -16660,13 +17102,13 @@ fi
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
                     found_dir="$dir"
                     found_so="$dir/lib$name.$shlibext"
                     if test -f "$dir/lib$name.la"; then
                       found_la="$dir/lib$name.la"
                     fi
-                  else
+                  elif test x$lib_type != xshared; then
                     if test -f "$dir/lib$name.$libext"; then
                       found_dir="$dir"
                       found_a="$dir/lib$name.$libext"
@@ -16894,8 +17336,13 @@ fi
               done
             fi
           else
-                                                            LIBLZMA="${LIBLZMA}${LIBLZMA:+ }-l$name"
-            LTLIBLZMA="${LTLIBLZMA}${LTLIBLZMA:+ }-l$name"
+                                                            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIBLZMA="${LIBLZMA}${LIBLZMA:+ }-l$name"
+              LTLIBLZMA="${LTLIBLZMA}${LTLIBLZMA:+ }-l$name"
+            else
+              LIBLZMA="${LIBLZMA}${LIBLZMA:+ }-l:lib$name.$libext"
+              LTLIBLZMA="${LTLIBLZMA}${LTLIBLZMA:+ }-l:lib$name.$libext"
+            fi
           fi
         fi
       fi
@@ -17844,40 +18291,6 @@ _ACEOF
 
 fi
 
-# Check whether --enable-gdbserver was given.
-if test "${enable_gdbserver+set}" = set; then :
-  enableval=$enable_gdbserver; case "${enableval}" in
-  yes| no|auto) ;;
-  *) as_fn_error $? "bad value ${enableval} for --enable-gdbserver option" "$LINENO" 5 ;;
-esac
-else
-  enable_gdbserver=auto
-fi
-
-
-# We only build gdbserver automatically in a native configuration, and
-# only if the user did not explicitly disable its build.
-if test "$gdb_native" = "yes" -a "$enable_gdbserver" != "no"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gdbserver is supported on this host" >&5
-$as_echo_n "checking whether gdbserver is supported on this host... " >&6; }
-  if test "x$build_gdbserver" = xyes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    subdirs="$subdirs gdbserver"
-
-    gdbserver_build_enabled=yes
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  fi
-fi
-
-# If the user explicitly request the gdbserver to be built, verify that
-# we were in fact able to enable it.
-if test "$enable_gdbserver" = "yes" -a "$gdbserver_build_enabled" != "yes"; then
-  as_fn_error $? "Automatic gdbserver build is not supported for this configuration" "$LINENO" 5
-fi
-
 # Check for babeltrace and babeltrace-ctf
 
 # Check whether --with-babeltrace was given.
@@ -17953,6 +18366,16 @@ if test "${with_libbabeltrace_prefix+set
 
 fi
 
+
+# Check whether --with-libbabeltrace-type was given.
+if test "${with_libbabeltrace_type+set}" = set; then :
+  withval=$with_libbabeltrace_type;  with_libbabeltrace_type=$withval
+else
+   with_libbabeltrace_type=auto
+fi
+
+  lib_type=`eval echo \$with_libbabeltrace_type`
+
       LIBBABELTRACE=
   LTLIBBABELTRACE=
   INCBABELTRACE=
@@ -17990,13 +18413,13 @@ fi
           found_so=
           found_a=
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
               found_dir="$additional_libdir"
               found_so="$additional_libdir/lib$name.$shlibext"
               if test -f "$additional_libdir/lib$name.la"; then
                 found_la="$additional_libdir/lib$name.la"
               fi
-            else
+            elif test x$lib_type != xshared; then
               if test -f "$additional_libdir/lib$name.$libext"; then
                 found_dir="$additional_libdir"
                 found_a="$additional_libdir/lib$name.$libext"
@@ -18020,13 +18443,13 @@ fi
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
                     found_dir="$dir"
                     found_so="$dir/lib$name.$shlibext"
                     if test -f "$dir/lib$name.la"; then
                       found_la="$dir/lib$name.la"
                     fi
-                  else
+                  elif test x$lib_type != xshared; then
                     if test -f "$dir/lib$name.$libext"; then
                       found_dir="$dir"
                       found_a="$dir/lib$name.$libext"
@@ -18254,8 +18677,13 @@ fi
               done
             fi
           else
-                                                            LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }-l$name"
-            LTLIBBABELTRACE="${LTLIBBABELTRACE}${LTLIBBABELTRACE:+ }-l$name"
+                                                            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }-l$name"
+              LTLIBBABELTRACE="${LTLIBBABELTRACE}${LTLIBBABELTRACE:+ }-l$name"
+            else
+              LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }-l:lib$name.$libext"
+              LTLIBBABELTRACE="${LTLIBBABELTRACE}${LTLIBBABELTRACE:+ }-l:lib$name.$libext"
+            fi
           fi
         fi
       fi
@@ -18399,6 +18827,41 @@ else
 fi
 
 
+ # Check whether --enable-libctf was given.
+if test "${enable_libctf+set}" = set; then :
+  enableval=$enable_libctf;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error $? "Argument to enable/disable libctf must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_libctf=yes
+fi
+
+
+if test x${enable_static} = xno; then
+  LIBCTF="-Wl,--rpath,../libctf/.libs ../libctf/.libs/libctf.so"
+  CTF_DEPS="../libctf/.libs/libctf.so"
+else
+  LIBCTF="../libctf/.libs/libctf.a"
+  CTF_DEPS="$LIBCTF"
+fi
+if test "${enable_libctf}" = yes; then
+
+$as_echo "#define ENABLE_LIBCTF 1" >>confdefs.h
+
+else
+  LIBCTF=
+  CTF_DEPS=
+fi
+
+
+
+
+# If nativefile (NAT_FILE) is not set in configure.nat, we link to an
+# empty version.
+
 if test "x$with_xxhash" != "xno"; then
 
 
@@ -18449,6 +18912,16 @@ if test "${with_libxxhash_prefix+set}" =
 
 fi
 
+
+# Check whether --with-libxxhash-type was given.
+if test "${with_libxxhash_type+set}" = set; then :
+  withval=$with_libxxhash_type;  with_libxxhash_type=$withval
+else
+   with_libxxhash_type=auto
+fi
+
+  lib_type=`eval echo \$with_libxxhash_type`
+
       LIBXXHASH=
   LTLIBXXHASH=
   INCXXHASH=
@@ -18486,13 +18959,13 @@ fi
           found_so=
           found_a=
           if test $use_additional = yes; then
-            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
               found_dir="$additional_libdir"
               found_so="$additional_libdir/lib$name.$shlibext"
               if test -f "$additional_libdir/lib$name.la"; then
                 found_la="$additional_libdir/lib$name.la"
               fi
-            else
+            elif test x$lib_type != xshared; then
               if test -f "$additional_libdir/lib$name.$libext"; then
                 found_dir="$additional_libdir"
                 found_a="$additional_libdir/lib$name.$libext"
@@ -18516,13 +18989,13 @@ fi
               case "$x" in
                 -L*)
                   dir=`echo "X$x" | sed -e 's/^X-L//'`
-                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
                     found_dir="$dir"
                     found_so="$dir/lib$name.$shlibext"
                     if test -f "$dir/lib$name.la"; then
                       found_la="$dir/lib$name.la"
                     fi
-                  else
+                  elif test x$lib_type != xshared; then
                     if test -f "$dir/lib$name.$libext"; then
                       found_dir="$dir"
                       found_a="$dir/lib$name.$libext"
@@ -18750,8 +19223,13 @@ fi
               done
             fi
           else
-                                                            LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }-l$name"
-            LTLIBXXHASH="${LTLIBXXHASH}${LTLIBXXHASH:+ }-l$name"
+                                                            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }-l$name"
+              LTLIBXXHASH="${LTLIBXXHASH}${LTLIBXXHASH:+ }-l$name"
+            else
+              LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }-l:lib$name.$libext"
+              LTLIBXXHASH="${LTLIBXXHASH}${LTLIBXXHASH:+ }-l:lib$name.$libext"
+            fi
           fi
         fi
       fi
@@ -18962,7 +19440,13 @@ fi
 #
 # The default value of this option changes depending whether we're on
 # development mode (in which case it's "true") or not (in which case
-# it's "false").
+# it's "false").  The $development variable is set by the GDB_AC_COMMON
+# macro, which must therefore be used before GDB_AC_SELFTEST.
+
+if test "x$development" != xtrue && test "x$development" != xfalse; then :
+  as_fn_error $? "Invalid value for \$development, got \"$development\", expecting \"true\" or \"false\"." "$LINENO" 5
+fi
+
 # Check whether --enable-unit-tests was given.
 if test "${enable_unit_tests+set}" = set; then :
   enableval=$enable_unit_tests; case "${enableval}" in
@@ -18980,8 +19464,8 @@ if $enable_unittests; then
 $as_echo "#define GDB_SELF_TEST 1" >>confdefs.h
 
 
-  CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_UNITTESTS_OBS) gdbsupport/selftest.o selftest-arch.o"
-  CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_UNITTESTS_SRCS) gdbsupport/selftest.c selftest-arch.c"
+  CONFIG_OBS="$CONFIG_OBS \$(SELFTESTS_OBS)"
+  CONFIG_SRCS="$CONFIG_SRCS \$(SELFTESTS_SRCS)"
 
 fi
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/configure.ac ./gdb/configure.ac
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/configure.ac	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/configure.ac	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 dnl Autoconf configure script for GDB, the GNU debugger.
-dnl Copyright (C) 1995-2020 Free Software Foundation, Inc.
+dnl Copyright (C) 1995-2021 Free Software Foundation, Inc.
 dnl
 dnl This file is part of GDB.
 dnl
@@ -18,13 +18,12 @@ dnl along with this program.  If not, se
 
 dnl Process this file with autoconf to produce a configure script.
 
+m4_include(../config/debuginfod.m4)
+
 AC_INIT(main.c)
 AC_CONFIG_HEADERS(config.h:config.in, [echo > stamp-h])
 AM_MAINTAINER_MODE
 
-# Set the 'development' global.
-. $srcdir/../bfd/development.sh
-
 AC_PROG_CC
 AC_PROG_CXX
 
@@ -254,7 +253,6 @@ AC_SUBST(HAVE_NATIVE_GCORE_TARGET)
 # For other settings, only the main target counts.
 gdb_sim=
 gdb_osabi=
-build_gdbserver=
 targ=$target; . ${srcdir}/configure.tgt
 
 # Fetch the default architecture and default target vector from BFD.
@@ -323,8 +321,10 @@ case $host_os in
     enable_gdbtk=no ;;
 esac
 
-# Libunwind support for ia64.
+# Handle optional debuginfod support
+AC_DEBUGINFOD
 
+# Libunwind support for ia64.
 AC_ARG_WITH(libunwind-ia64,
 AS_HELP_STRING([--with-libunwind-ia64],
 	       [use libunwind frame unwinding for ia64 targets]),,
@@ -430,7 +430,7 @@ AC_ARG_ENABLE([codesign],
 AC_SUBST([CODESIGN_CERT])
 
 ACX_PKGVERSION([GDB])
-ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
+ACX_BUGURL([https://www.gnu.org/software/gdb/bugs/])
 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
 
@@ -480,11 +480,6 @@ AC_SEARCH_LIBS(kinfo_getvmmap, util util
   [AC_DEFINE(HAVE_KINFO_GETVMMAP, 1,
             [Define to 1 if your system has the kinfo_getvmmap function. ])])
 
-# fbsd-nat.c can also use kinfo_getfile.
-AC_SEARCH_LIBS(kinfo_getfile, util util-freebsd,
-  [AC_DEFINE(HAVE_KINFO_GETFILE, 1,
-            [Define to 1 if your system has the kinfo_getfile function. ])])
-
 AM_ICONV
 
 # GDB may fork/exec the iconv program to get the list of supported character
@@ -896,6 +891,24 @@ else
   fi
 fi
 
+dnl Use --with-python-libdir to control where GDB looks for the Python
+dnl libraries.
+dnl
+dnl If this is not given then the default will be based on the value
+dnl passed to --with-python, which is in the python_prefix variable.
+dnl If the --with-python option wasn't given then the default value in
+dnl python_prefix is based on running the 'gdb/python/python-config
+dnl --exec-prefix' script.
+AC_ARG_WITH(python-libdir,
+  AS_HELP_STRING([--with-python-libdir@<:@=DIR@:>@], [search for python's libraries in DIR]),
+  [],[
+    # If no python libdir is specified then select one based on
+    # python's prefix path.
+    if test -n "${python_prefix}"; then
+      with_python_libdir=${python_prefix}/lib
+    fi
+  ])
+
 if test "${have_libpython}" != no; then
   AC_DEFINE(HAVE_PYTHON, 1, [Define if Python interpreter is being linked in.])
   CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_PYTHON_OBS)"
@@ -904,6 +917,12 @@ if test "${have_libpython}" != no; then
   CONFIG_INSTALL="$CONFIG_INSTALL install-python"
   ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_PYTHON_CFLAGS)"
 
+  if test -n "${with_python_libdir}"; then
+    AC_DEFINE_UNQUOTED(WITH_PYTHON_LIBDIR, "${with_python_libdir}",
+		       [Directory containing Python's standard libraries from --with-python-libdir.])
+    GDB_AC_DEFINE_RELOCATABLE(PYTHON_LIBDIR, [python lib], ${with_python_libdir})
+  fi
+
   # Flags needed to compile Python code (taken from python-config --cflags).
   # We cannot call python-config directly because it will output whatever was
   # used when compiling the Python interpreter itself, including flags which
@@ -1069,7 +1088,7 @@ AC_MSG_RESULT([$with_guile])
 dnl We check guile with pkg-config.
 AC_PATH_PROG(pkg_config_prog_path, pkg-config, missing)
 
-try_guile_versions="guile-2.0"
+try_guile_versions="guile-3.0 guile-2.2 guile-2.0"
 have_libguile=no
 case "${with_guile}" in
 no)
@@ -1204,58 +1223,17 @@ fi
 AC_SUBST(SRCHIGH_LIBS)
 AC_SUBST(SRCHIGH_CFLAGS)
 
-AC_ARG_WITH(intel_pt,
-  AS_HELP_STRING([--with-intel-pt], [include Intel Processor Trace support (auto/yes/no)]),
-  [], [with_intel_pt=auto])
-AC_MSG_CHECKING([whether to use intel pt])
-AC_MSG_RESULT([$with_intel_pt])
-
-if test "${with_intel_pt}" = no; then
-  AC_MSG_WARN([Intel Processor Trace support disabled; some features may be unavailable.])
-  HAVE_LIBIPT=no
-else
-  AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
-#include <linux/perf_event.h>
-#ifndef PERF_ATTR_SIZE_VER5
-# error
-#endif
-  ]])], [perf_event=yes], [perf_event=no])
-  if test "$perf_event" != yes; then
-    if test "$with_intel_pt" = yes; then
-      AC_MSG_ERROR([linux/perf_event.h missing or too old])
-    else
-      AC_MSG_WARN([linux/perf_event.h missing or too old; some features may be unavailable.])
-    fi
-  fi
-
-  AC_LIB_HAVE_LINKFLAGS([ipt], [], [#include "intel-pt.h"], [pt_insn_alloc_decoder (0);])
-  if test "$HAVE_LIBIPT" != yes; then
-    if test "$with_intel_pt" = yes; then
-      AC_MSG_ERROR([libipt is missing or unusable])
-    else
-      AC_MSG_WARN([libipt is missing or unusable; some features may be unavailable.])
-    fi
-  else
-    save_LIBS=$LIBS
-    LIBS="$LIBS $LIBIPT"
-    AC_CHECK_FUNCS(pt_insn_event)
-    AC_CHECK_MEMBERS([struct pt_insn.enabled, struct pt_insn.resynced], [], [],
-                     [#include <intel-pt.h>])
-    LIBS=$save_LIBS
-  fi
-fi
-
 # ------------------------- #
 # Checks for header files.  #
 # ------------------------- #
 
 AC_HEADER_STDC
 # elf_hp.h is for HP/UX 64-bit shared library support.
-AC_CHECK_HEADERS([nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \
-                  thread_db.h linux/elf.h \
+AC_CHECK_HEADERS([nlist.h machine/reg.h \
+                  thread_db.h \
 		  sys/file.h sys/filio.h sys/ioctl.h sys/param.h \
-		  sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \
-		  sys/reg.h sys/debugreg.h sys/select.h \
+		  sys/resource.h sys/ptrace.h ptrace.h \
+		  sys/reg.h sys/debugreg.h \
 		  termios.h elf_hp.h])
 AC_CHECK_HEADERS(sys/user.h, [], [],
 [#if HAVE_SYS_PARAM_H
@@ -1270,6 +1248,9 @@ AC_CHECK_HEADERS(term.h, [], [],
 #endif
 ])
 
+AC_CHECK_HEADERS([sys/socket.h])
+AC_CHECK_HEADERS([ws2tcpip.h])
+
 # ------------------------- #
 # Checks for declarations.  #
 # ------------------------- #
@@ -1279,19 +1260,17 @@ libiberty_INIT
 AC_CHECK_DECLS([snprintf])
 AM_LC_MESSAGES
 
-# ----------------------- #
-# Checks for structures.  #
-# ----------------------- #
-
-AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
-
 # ------------------ #
 # Checks for types.  #
 # ------------------ #
 
 AC_CHECK_TYPES(socklen_t, [], [],
 [#include <sys/types.h>
-#include <sys/socket.h>
+#if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#elif HAVE_WS2TCPIP_H
+# include <ws2tcpip.h>
+#endif
 ])
 
 # ------------------------------------- #
@@ -1306,15 +1285,13 @@ AC_C_BIGENDIAN
 # Checks for library functions.  #
 # ------------------------------ #
 
-AC_FUNC_MMAP
-AC_FUNC_VFORK
-AC_CHECK_FUNCS([getauxval getrusage getuid getgid \
-		pipe poll pread pread64 pwrite resize_term \
-		sbrk getpgid setpgid setpgrp setsid \
+AC_CHECK_FUNCS([getuid getgid \
+		pipe pread pread64 pwrite resize_term \
+		getpgid setsid \
 		sigaction sigsetmask socketpair \
 		ttrace wborder wresize setlocale iconvlist libiconvlist btowc \
 		setrlimit getrlimit posix_madvise waitpid \
-		ptrace64 sigaltstack setns use_default_colors])
+		use_default_colors])
 AM_LANGINFO_CODESET
 GDB_AC_COMMON
 
@@ -1402,13 +1379,6 @@ AC_CHECK_MEMBERS([struct reg.r_fs, struc
                  [#include <sys/types.h>
 #include <machine/reg.h>])
 
-# See if <sys/user.h> supports the %fs_base and %gs_bas amd64 segment registers.
-# Older amd64 Linux's don't have the fs_base and gs_base members of
-# `struct user_regs_struct'.
-AC_CHECK_MEMBERS([struct user_regs_struct.fs_base, struct user_regs_struct.gs_base],
-     [], [], [#include <sys/types.h>
-#include <sys/user.h>])
-
 # See if <sys/ptrace.h> provides the PTRACE_GETREGS request.
 AC_MSG_CHECKING(for PTRACE_GETREGS)
 AC_CACHE_VAL(gdb_cv_have_ptrace_getregs,
@@ -1475,17 +1445,6 @@ AC_CHECK_MEMBERS([struct ptrace_lwpinfo.
 AC_CHECK_MEMBERS([struct ptrace_lwpinfo.pl_syscall_code], [], [],
                  [#include <sys/ptrace.h>])
 
-if test "$ac_cv_header_sys_procfs_h" = yes; then
-  BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(prgregset32_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
-fi
-
 # Check if the compiler supports the `long long' type.
 
 AC_CACHE_CHECK([for long long support in compiler], gdb_cv_c_long_long,
@@ -1640,7 +1599,7 @@ if test "${gdb_native}" = yes; then
          [#include "Python.h"],
          [int err;
           Py_Initialize ();
-          err = PyRun_SimpleString ("import itertools\n");
+          err = PyRun_SimpleString ("import ctypes\n");
           Py_Finalize ();
           return err == 0 ? 0 : 1;])],
        [dynamic_list=true], [], [true])
@@ -1737,29 +1696,6 @@ if test "x$gdb_cv_thread_db_h_has_td_not
             [Define if <thread_db.h> has the TD_NOTLS error code.])
 fi
 
-dnl Check if we can disable the virtual address space randomization.
-dnl The functionality of setarch -R.
-AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
-define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
-#      if !HAVE_DECL_ADDR_NO_RANDOMIZE
-#       define ADDR_NO_RANDOMIZE 0x0040000
-#      endif
-       /* Test the flag could be set and stays set.  */
-       personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
-       if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
-	   return 1])])
-AC_RUN_IFELSE([PERSONALITY_TEST],
-	      [have_personality=true],
-	      [have_personality=false],
-	      [AC_LINK_IFELSE([PERSONALITY_TEST],
-			      [have_personality=true],
-			      [have_personality=false])])
-if $have_personality
-then
-    AC_DEFINE([HAVE_PERSONALITY], 1,
-	      [Define if you support the personality syscall.])
-fi
-
 dnl Set the host's .gdbinit filename.
 case $host_os in
   go32* | *djgpp*)
@@ -1827,17 +1763,8 @@ if test x"$gdb_cv_os_cygwin" = xyes; the
 fi
 
 # The ser-tcp.c module requires sockets.
-case ${host} in
-  *mingw32*)
-    AC_DEFINE(USE_WIN32API, 1,
-              [Define if we should use the Windows API, instead of the
-	       POSIX API.  On Windows, we use the Windows API when
-	       building for MinGW, but the POSIX API when building
-	       for Cygwin.])
-    WIN32LIBS="$WIN32LIBS -lws2_32"
-    ;;
-esac
-AC_SUBST(WIN32LIBS)
+# Note that WIN32APILIBS is set by GDB_AC_COMMON.
+WIN32LIBS="$WIN32LIBS $WIN32APILIBS"
 
 # Add ELF support to GDB, but only if BFD includes ELF support.
 GDB_AC_CHECK_BFD([for ELF support in BFD], gdb_cv_var_elf,
@@ -2098,33 +2025,6 @@ if test x"${gdb_osabi}" != x ; then
 		       [Define to the default OS ABI for this configuration.])
 fi
 
-AC_ARG_ENABLE(gdbserver,
-AS_HELP_STRING([--enable-gdbserver],
-               [automatically build gdbserver (yes/no/auto, default is auto)]),
-[case "${enableval}" in
-  yes| no|auto) ;;
-  *) AC_MSG_ERROR(bad value ${enableval} for --enable-gdbserver option) ;;
-esac],[enable_gdbserver=auto])
-
-# We only build gdbserver automatically in a native configuration, and
-# only if the user did not explicitly disable its build.
-if test "$gdb_native" = "yes" -a "$enable_gdbserver" != "no"; then
-  AC_MSG_CHECKING(whether gdbserver is supported on this host)
-  if test "x$build_gdbserver" = xyes; then
-    AC_MSG_RESULT(yes)
-    AC_CONFIG_SUBDIRS(gdbserver)
-    gdbserver_build_enabled=yes
-  else
-    AC_MSG_RESULT(no)
-  fi
-fi
-
-# If the user explicitly request the gdbserver to be built, verify that
-# we were in fact able to enable it.
-if test "$enable_gdbserver" = "yes" -a "$gdbserver_build_enabled" != "yes"; then
-  AC_MSG_ERROR(Automatic gdbserver build is not supported for this configuration)
-fi
-
 # Check for babeltrace and babeltrace-ctf
 AC_ARG_WITH(babeltrace,
   AC_HELP_STRING([--with-babeltrace], [include babeltrace support (auto/yes/no)]),
@@ -2173,6 +2073,27 @@ AC_ARG_WITH(xxhash,
   AC_HELP_STRING([--with-xxhash], [use libxxhash for hashing (faster) (auto/yes/no)]),
   [], [with_xxhash=auto])
 
+GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections])
+if test x${enable_static} = xno; then
+  LIBCTF="-Wl,--rpath,../libctf/.libs ../libctf/.libs/libctf.so"
+  CTF_DEPS="../libctf/.libs/libctf.so"
+else
+  LIBCTF="../libctf/.libs/libctf.a"
+  CTF_DEPS="$LIBCTF"
+fi
+if test "${enable_libctf}" = yes; then
+  AC_DEFINE(ENABLE_LIBCTF, 1, [Handle .ctf type-info sections])
+else
+  LIBCTF=
+  CTF_DEPS=
+fi
+AC_SUBST(ENABLE_LIBCTF)
+AC_SUBST(LIBCTF)
+AC_SUBST(CTF_DEPS)
+
+# If nativefile (NAT_FILE) is not set in configure.nat, we link to an
+# empty version.
+
 if test "x$with_xxhash" != "xno"; then
   AC_LIB_HAVE_LINKFLAGS([xxhash], [],
 			[#include <xxhash.h>],
@@ -2224,8 +2145,8 @@ AC_DEFINE(GDB_DEFAULT_HOST_CHARSET, "UTF
           [Define to be a string naming the default host character set.])
 
 GDB_AC_SELFTEST([
-  CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_UNITTESTS_OBS) gdbsupport/selftest.o selftest-arch.o"
-  CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_UNITTESTS_SRCS) gdbsupport/selftest.c selftest-arch.c"
+  CONFIG_OBS="$CONFIG_OBS \$(SELFTESTS_OBS)"
+  CONFIG_SRCS="$CONFIG_SRCS \$(SELFTESTS_SRCS)"
 ])
 
 GDB_AC_TRANSFORM([gdb], [GDB_TRANSFORM_NAME])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/configure.nat ./gdb/configure.nat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/configure.nat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/configure.nat	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # ; -*- mode: sh ; -*-
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
@@ -68,17 +68,17 @@ case ${gdb_host} in
 	LOADLIBES='-lkvm'
 	;;
     nbsd*)
-	NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o'
+	NATDEPFILES='fork-child.o nat/fork-inferior.o nat/netbsd-nat.o inf-ptrace.o'
 	HAVE_NATIVE_GCORE_HOST=1
 	;;
     obsd*)
 	NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o'
 	;;
     cygwin*)
-	NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o'
+	NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
 	;;
     mingw*)
-	NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o'
+	NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
 	;;
     aix)
 	NATDEPFILES='nat/fork-inferior.o fork-child.o inf-ptrace.o'
@@ -137,7 +137,7 @@ case ${gdb_host} in
 	    i386)
 		# Native config information for GDB on amd64
 		# systems running Cygwin.
-		NATDEPFILES="${NATDEPFILES} amd64-windows-nat.o"
+		NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o"
 		;;
 	esac
 	;;
@@ -276,7 +276,8 @@ case ${gdb_host} in
 		;;
 	    riscv*)
 		# Host: RISC-V, running Linux
-		NATDEPFILES="${NATDEPFILES} riscv-linux-nat.o"
+		NATDEPFILES="${NATDEPFILES} riscv-linux-nat.o \
+		nat/riscv-linux-tdesc.o"
 		;;
 	    s390)
 		# Host: S390, running Linux
@@ -324,7 +325,7 @@ case ${gdb_host} in
     mingw64)
 	case ${gdb_host_cpu} in
 	    i386)
-		NATDEPFILES="${NATDEPFILES} amd64-windows-nat.o"
+		NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o"
 		;;
 	esac
 	;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/configure.tgt ./gdb/configure.tgt
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/configure.tgt	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/configure.tgt	2021-05-21 01:57:24.000000000 +0000
@@ -5,7 +5,6 @@
 #  gdb_target_obs	target-specific object files to use
 #  gdb_sim		simulator library for target
 #  gdb_osabi		default OS ABI to use with target
-#  build_gdbserver	set to "yes" if gdbserver supports target
 #  gdb_have_gcore	set to "true"/"false" if this target can run gcore
 
 # NOTE: Every file added to a gdb_target_obs variable for any target here
@@ -60,7 +59,7 @@ alpha*-*-*)
 
 arc*-*-*)
 	# Target: Unidentified ARC target
-	cpu_obs="arc-tdep.o"
+	cpu_obs="arc-tdep.o arch/arc.o"
 	;;
 
 arm*-*-*)
@@ -85,7 +84,8 @@ ia64*-*-*)
 	;;
 
 riscv*-*-*)
-	cpu_obs="riscv-tdep.o arch/riscv.o";;
+	cpu_obs="riscv-tdep.o arch/riscv.o \
+	         ravenscar-thread.o riscv-ravenscar-thread.o";;
 
 x86_64-*-*)
 	cpu_obs="${i386_tobjs} ${amd64_tobjs}";;
@@ -128,7 +128,6 @@ aarch64*-*-linux*)
 			arm-tdep.o arm-linux-tdep.o \
 			glibc-tdep.o linux-tdep.o solib-svr4.o \
 			symfile-mem.o linux-record.o"
-	build_gdbserver=yes
 	;;
 
 alpha*-*-linux*)
@@ -158,16 +157,19 @@ arc*-*-elf32)
 	gdb_target_obs="arc-newlib-tdep.o"
 	;;
 
+arc*-*-linux*)
+	# Target: ARC machine running Linux
+	gdb_target_obs="arc-linux-tdep.o linux-tdep.o solib-svr4.o"
+	;;
+
 arm*-wince-pe | arm*-*-mingw32ce*)
 	# Target: ARM based machine running Windows CE (win32)
 	gdb_target_obs="arm-wince-tdep.o windows-tdep.o"
-	build_gdbserver=yes
 	;;
 arm*-*-linux*)
 	# Target: ARM based machine running GNU/Linux
 	gdb_target_obs="arch/arm-linux.o arm-linux-tdep.o glibc-tdep.o \
 			solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
-	build_gdbserver=yes
 	;;
 arm*-*-freebsd*)
 	# Target: FreeBSD/arm
@@ -201,7 +203,6 @@ bfin-*-*linux*)
 	# Target: Blackfin Linux
 	gdb_target_obs="bfin-tdep.o bfin-linux-tdep.o linux-tdep.o"
 	gdb_sim=../sim/bfin/libsim.a
-	build_gdbserver=yes
 	;;
 bfin-*-*)
 	# Target: Blackfin processor
@@ -209,6 +210,12 @@ bfin-*-*)
 	gdb_sim=../sim/bfin/libsim.a
 	;;
 
+bpf-*-*)
+	# Target: eBPF
+	gdb_target_obs="bpf-tdep.o"
+	gdb_sim=../sim/bpf/libsim.a
+	;;
+
 cris*)
 	# Target: CRIS
 	gdb_target_obs="cris-tdep.o cris-linux-tdep.o linux-tdep.o solib-svr4.o"
@@ -284,7 +291,6 @@ i[34567]86-*-nto*)
 	# Target: Intel 386 running qnx6.
 	gdb_target_obs="solib-svr4.o \
 			i386-nto-tdep.o nto-tdep.o"
-	build_gdbserver=yes
 	;;
 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
 	# Target: Solaris x86_64
@@ -302,7 +308,6 @@ i[34567]86-*-linux*)
 	    # Target: GNU/Linux x86-64
 	    gdb_target_obs="amd64-linux-tdep.o ${gdb_target_obs}"
 	fi
-	build_gdbserver=yes
 	;;
 i[34567]86-*-gnu*)
 	# Target: Intel 386 running the GNU Hurd
@@ -310,13 +315,11 @@ i[34567]86-*-gnu*)
 	;;
 i[34567]86-*-cygwin*)
 	# Target: Intel 386 running win32
-	gdb_target_obs="i386-cygwin-tdep.o windows-tdep.o"
-	build_gdbserver=yes
+	gdb_target_obs="i386-windows-tdep.o windows-tdep.o"
 	;;
 i[34567]86-*-mingw32*)
 	# Target: Intel 386 running win32
-	gdb_target_obs="i386-cygwin-tdep.o windows-tdep.o"
-	build_gdbserver=yes
+	gdb_target_obs="i386-windows-tdep.o windows-tdep.o"
 	;;
 i[34567]86-*-go32* | i[34567]86-*-msdosdjgpp*)
 	# Target: i386 running DJGPP/go32.
@@ -327,7 +330,6 @@ ia64-*-linux*)
 	# Target: Intel IA-64 running GNU/Linux
 	gdb_target_obs="ia64-linux-tdep.o linux-tdep.o \
 			solib-svr4.o symfile-mem.o"
-	build_gdbserver=yes
 	;;
 ia64-*-*vms*)
 	# Target: Intel IA-64 running OpenVMS
@@ -358,7 +360,6 @@ m32r*-*-linux*)
 			glibc-tdep.o solib-svr4.o symfile-mem.o \
 			linux-tdep.o"
 	gdb_sim=../sim/m32r/libsim.a
-	build_gdbserver=yes
 	;;
 m32r*-*-*)
 	# Target: Renesas m32r processor
@@ -381,7 +382,6 @@ m68*-*-linux*)
 	# Target: Motorola m68k with a.out and ELF
 	gdb_target_obs="m68k-tdep.o m68k-linux-tdep.o solib-svr4.o \
 			linux-tdep.o glibc-tdep.o symfile-mem.o"
-	build_gdbserver=yes
 	;;
 m68*-*-netbsd* | m68*-*-knetbsd*-gnu)
 	# Target: NetBSD/m68k
@@ -415,7 +415,6 @@ mips*-*-linux*)
 	gdb_target_obs="mips-tdep.o mips-linux-tdep.o glibc-tdep.o \
 			solib-svr4.o symfile-mem.o linux-tdep.o"
 	gdb_sim=../sim/mips/libsim.a
-	build_gdbserver=yes
 	;;
 mips*-*-netbsd* | mips*-*-knetbsd*-gnu)
 	# Target: MIPS running NetBSD
@@ -453,7 +452,7 @@ mn10300-*-*)
 	gdb_sim=../sim/mn10300/libsim.a
 	;;
 
-msp430*-*-elf)
+msp430-*-elf*)
 	gdb_target_obs="msp430-tdep.o"
 	gdb_sim=../sim/msp430/libsim.a
 	;;
@@ -479,7 +478,6 @@ or1k*-*-linux*)
 	gdb_target_obs="or1k-tdep.o or1k-linux-tdep.o solib-svr4.o \
 			symfile-mem.o glibc-tdep.o linux-tdep.o"
 	gdb_sim=../sim/or1k/libsim.a
-	build_gdbserver=yes
 	;;
 
 or1k-*-* | or1knd-*-*)
@@ -521,7 +519,6 @@ powerpc*-*-linux*)
 			linux-record.o \
 			arch/ppc-linux-common.o"
 	gdb_sim=../sim/ppc/libsim.a
-	build_gdbserver=yes
 	;;
 powerpc-*-lynx*178)
 	# Target: PowerPC running Lynx178.
@@ -540,7 +537,6 @@ s390*-*-linux*)
 	# Target: S390 running Linux
 	gdb_target_obs="s390-linux-tdep.o s390-tdep.o solib-svr4.o \
 			linux-tdep.o linux-record.o symfile-mem.o"
-	build_gdbserver=yes
 	;;
 
 riscv*-*-freebsd*)
@@ -574,7 +570,6 @@ rx-*-elf)
 score-*-*)
 	# Target: S+core embedded system
 	gdb_target_obs="score-tdep.o"
-	build_gdbserver=yes
 	;;
 
 sh*-*-linux*)
@@ -583,7 +578,6 @@ sh*-*-linux*)
 			solib-svr4.o symfile-mem.o \
 			glibc-tdep.o linux-tdep.o"
 	gdb_sim=../sim/sh/libsim.a
-	build_gdbserver=yes
 	;;
 sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu)
 	# Target: NetBSD/sh
@@ -602,24 +596,22 @@ sh*)
 
 sparc-*-linux*)
 	# Target: GNU/Linux SPARC
-	gdb_target_obs="sparc-tdep.o sparc-sol2-tdep.o sol2-tdep.o \
+	gdb_target_obs="sparc-tdep.o \
 			sparc-linux-tdep.o solib-svr4.o symfile-mem.o \
 			linux-tdep.o \
 			ravenscar-thread.o sparc-ravenscar-thread.o"
 	if test "x$enable_64_bit_bfd" = "xyes"; then
 	    # Target: GNU/Linux UltraSPARC
-	    gdb_target_obs="sparc64-tdep.o sparc64-sol2-tdep.o \
+	    gdb_target_obs="sparc64-tdep.o \
 			    sparc64-linux-tdep.o ${gdb_target_obs}"
 	fi
-	build_gdbserver=yes
 	;;
 sparc64-*-linux*)
 	# Target: GNU/Linux UltraSPARC
-	gdb_target_obs="sparc64-tdep.o sparc64-sol2-tdep.o sol2-tdep.o \
-			sparc64-linux-tdep.o sparc-tdep.o sparc-sol2-tdep.o \
+	gdb_target_obs="sparc64-tdep.o \
+			sparc64-linux-tdep.o sparc-tdep.o \
 			sparc-linux-tdep.o solib-svr4.o linux-tdep.o \
 			ravenscar-thread.o sparc-ravenscar-thread.o"
-	build_gdbserver=yes
 	;;
 sparc*-*-freebsd* | sparc*-*-kfreebsd*-gnu)
 	# Target: FreeBSD/sparc64
@@ -688,7 +680,6 @@ tilegx-*-linux*)
 	# Target: TILE-Gx
 	gdb_target_obs="tilegx-tdep.o tilegx-linux-tdep.o solib-svr4.o \
 			symfile-mem.o glibc-tdep.o linux-tdep.o"
-	build_gdbserver=yes
 	;;
 
 xstormy16-*-*)
@@ -741,7 +732,6 @@ x86_64-*-linux*)
 	gdb_target_obs="amd64-linux-tdep.o ${i386_tobjs}  \
 			i386-linux-tdep.o glibc-tdep.o \
 			solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
-	build_gdbserver=yes
 	;;
 x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
 	# Target: FreeBSD/amd64
@@ -751,9 +741,8 @@ x86_64-*-freebsd* | x86_64-*-kfreebsd*-g
 x86_64-*-mingw* | x86_64-*-cygwin*)
         # Target: MingW/amd64
 	gdb_target_obs="amd64-windows-tdep.o \
-                        ${i386_tobjs} i386-cygwin-tdep.o \
+                        ${i386_tobjs} i386-windows-tdep.o \
                         windows-tdep.o"
-	build_gdbserver=yes
         ;;
 x86_64-*-netbsd* | x86_64-*-knetbsd*-gnu)
 	# Target: NetBSD/amd64
@@ -771,7 +760,6 @@ x86_64-*-rtems*)
 xtensa*-*-*linux*)
 	# Target: GNU/Linux Xtensa
 	gdb_target_obs="xtensa-linux-tdep.o symfile-mem.o linux-tdep.o"
-	build_gdbserver=yes
 	;;
 
 esac
@@ -794,8 +782,8 @@ m68*-*-openbsd* | m88*-*-openbsd* | vax-
 *-*-*-gnu*)	;; # prevent non-GNU kernels to match the Hurd rule below
 *-*-gnu*)	gdb_osabi=GDB_OSABI_HURD ;;
 *-*-mingw32ce*)	gdb_osabi=GDB_OSABI_WINCE ;;
-*-*-mingw* | *-*-cygwin*)
-		gdb_osabi=GDB_OSABI_CYGWIN ;;
+*-*-mingw*)	gdb_osabi=GDB_OSABI_WINDOWS ;;
+*-*-cygwin*)	gdb_osabi=GDB_OSABI_CYGWIN ;;
 *-*-dicos*)	gdb_osabi=GDB_OSABI_DICOS ;;
 *-*-symbianelf*)
 		gdb_osabi=GDB_OSABI_SYMBIAN ;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/continuations.c ./gdb/continuations.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/continuations.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/continuations.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Continuations for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/continuations.h ./gdb/continuations.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/continuations.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/continuations.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Continuations for GDB, the GNU debugger.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/ari/create-web-ari-in-src.sh ./gdb/contrib/ari/create-web-ari-in-src.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/ari/create-web-ari-in-src.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/contrib/ari/create-web-ari-in-src.sh	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
 
 # GDB script to create web ARI page directly from within gdb/ari directory.
 #
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/ari/gdb_ari.sh ./gdb/contrib/ari/gdb_ari.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/ari/gdb_ari.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/contrib/ari/gdb_ari.sh	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
 
 # GDB script to list of problems using awk.
 #
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
@@ -52,7 +52,7 @@ usage ()
 Error: $1
 
 Usage:
-    $0 --print-doc --print-idx -Wall -Werror -W<category> <file> ...
+    $0 --print-doc --print-idx -Wall -Werror -WCATEGORY FILE ...
 Options:
   --print-doc    Print a list of all potential problems, then exit.
   --print-idx    Include the problems IDX (index or key) in every message.
@@ -60,7 +60,8 @@ Options:
   -Werror        Treat all problems as errors.
   -Wall          Report all problems.
   -Wari          Report problems that should be fixed in new code.
-  -W<category>   Report problems in the specifed category.  Valid categories
+  -WCATEGORY     Report problems in the specifed category.  The category
+                 can be prefixed with "no-".  Valid categories
                  are: ${all}
 EOF
     exit 1
@@ -102,6 +103,10 @@ fi
 # Validate all errors and warnings.
 for w in ${warning} ${error}
 do
+    case "$w" in
+	no-*) w=`echo x$w | sed -e 's/xno-//'`;;
+    esac
+
     case " ${all} " in
     *" ${w} "* ) ;;
     * ) usage "Unknown option -W${w}" ;;
@@ -123,11 +128,19 @@ do
 done
 for w in ${warning}
 do
-    warnings="${warnings} warning[ari_${w}] = 1;"
+    val=1
+    case "$w" in
+	no-*) w=`echo x$w | sed -e 's/xno-//'`; val=0 ;;
+    esac
+    warnings="${warnings} warning[ari_${w}] = $val;"
 done
 for e in ${error}
 do
-    errors="${errors} error[ari_${e}]  = 1;"
+    val=1
+    case "$e" in
+	no-*) e=`echo x$e | sed -e 's/xno-//'`; val=0 ;;
+    esac
+    errors="${errors} error[ari_${e}]  = $val;"
 done
 
 if [ "$AWK" = "" ] ; then
@@ -574,24 +587,11 @@ Do not use strerror(), instead use safe_
 BEGIN { doc["long long"] = "\
 Do not use `long long'\'', instead use LONGEST"
     category["long long"] = ari_code
-    # defs.h needs two such patterns for LONGEST and ULONGEST definitions
-    fix("long long", "gdb/defs.h", 2)
 }
 /(^|[^_[:alnum:]])long[[:space:]]+long([^_[:alnum:]]|$)/ {
     fail("long long")
 }
 
-BEGIN { doc["ATTRIBUTE_UNUSED"] = "\
-Do not use ATTRIBUTE_UNUSED, do not bother (GDB is compiled with -Werror and, \
-consequently, is not able to tolerate false warnings.  Since -Wunused-param \
-produces such warnings, neither that warning flag nor ATTRIBUTE_UNUSED \
-are used by GDB"
-    category["ATTRIBUTE_UNUSED"] = ari_regression
-}
-/(^|[^_[:alnum:]])ATTRIBUTE_UNUSED([^_[:alnum:]]|$)/ {
-    fail("ATTRIBUTE_UNUSED")
-}
-
 BEGIN { doc["ATTR_FORMAT"] = "\
 Do not use ATTR_FORMAT, use ATTRIBUTE_PRINTF instead"
     category["ATTR_FORMAT"] = ari_regression
@@ -619,21 +619,6 @@ Do not use NORETURN, use ATTRIBUTE_NORET
 
 # General problems
 
-BEGIN { doc["multiple messages"] = "\
-Do not use multiple calls to warning or error, instead use a single call"
-    category["multiple messages"] = ari_gettext
-}
-FNR == 1 {
-    warning_fnr = -1
-}
-/(^|[^_[:alnum:]])(warning|error)[[:space:]]*\(/ {
-    if (FNR == warning_fnr + 1) {
-	fail("multiple messages")
-    } else {
-	warning_fnr = FNR
-    }
-}
-
 # Commented out, but left inside sources, just in case.
 # BEGIN { doc["inline"] = "\
 # Do not use the inline attribute; \
@@ -658,7 +643,6 @@ FNR == 1 {
 BEGIN { doc["abort"] = "\
 Do not use abort, instead use internal_error; GDB should never abort"
     category["abort"] = ari_regression
-    fix("abort", "gdb/utils.c", 3)
 }
 /(^|[^_[:alnum:]])abort[[:space:]]*\(/ {
     fail("abort")
@@ -822,7 +806,6 @@ get_frame_locals_address, or get_frame_a
 BEGIN { doc["floatformat_to_double"] = "\
 Do not use floatformat_to_double() from libierty, \
 instead use floatformat_to_doublest()"
-    fix("floatformat_to_double", "gdb/doublest.c", 1)
     category["floatformat_to_double"] = ari_regression
 }
 /(^|[^_[:alnum:]])floatformat_to_double[[:space:]]*\(/ {
@@ -831,7 +814,7 @@ instead use floatformat_to_doublest()"
 
 BEGIN { doc["floatformat_from_double"] = "\
 Do not use floatformat_from_double() from libierty, \
-instead use floatformat_from_doublest()"
+instead use host_float_ops<T>::from_target()"
     category["floatformat_from_double"] = ari_regression
 }
 /(^|[^_[:alnum:]])floatformat_from_double[[:space:]]*\(/ {
@@ -1110,18 +1093,6 @@ Do not use strnicmp(), instead use strnc
     fail("strnicmp")
 }
 
-# Boolean expressions and conditionals
-
-BEGIN { doc["boolean"] = "\
-Do not use `boolean'\'',  use `bool'\'' instead"
-    category["boolean"] = ari_regression
-}
-/(^|[^_[:alnum:]])boolean([^_[:alnum:]]|$)/ {
-    if (is_yacc_or_lex == 0) {
-       fail("boolean")
-    }
-}
-
 # Typedefs that are either redundant or can be reduced to `struct
 # type *''.
 # Must be placed before if assignment otherwise ARI exceptions
@@ -1143,20 +1114,6 @@ Do not use strlen dirent.d_name, instead
     fail("strlen d_name")
 }
 
-BEGIN { doc["var_boolean"] = "\
-Replace var_boolean with add_setshow_boolean_cmd"
-    category["var_boolean"] = ari_regression
-    fix("var_boolean", "gdb/command.h", 1)
-    # fix only uses the last directory level
-    fix("var_boolean", "cli/cli-decode.c", 2)
-}
-/(^|[^_[:alnum:]])var_boolean([^_[:alnum:]]|$)/ {
-    if (($0 !~ /(^|[^_[:alnum:]])case *var_boolean:/) \
-        && ($0 !~ /(^|[^_[:alnum:]])[=!]= *var_boolean/)) {
-	fail("var_boolean")
-    }
-}
-
 BEGIN { doc["generic_use_struct_convention"] = "\
 Replace generic_use_struct_convention with nothing, \
 EXTRACT_STRUCT_VALUE_ADDRESS is a predicate"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/ari/gdb_find.sh ./gdb/contrib/ari/gdb_find.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/ari/gdb_find.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/contrib/ari/gdb_find.sh	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
 
 # GDB script to create list of files to check using gdb_ari.sh.
 #
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/ari/update-web-ari.sh ./gdb/contrib/ari/update-web-ari.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/ari/update-web-ari.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/contrib/ari/update-web-ari.sh	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
 
 # GDB script to create GDB ARI web page.
 #
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/cc-with-tweaks.sh ./gdb/contrib/cc-with-tweaks.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/cc-with-tweaks.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/contrib/cc-with-tweaks.sh	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
 # Wrapper around gcc to tweak the output in various ways when running
 # the testsuite.
 
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -144,13 +144,6 @@ then
     exit $?
 fi
 
-index_file="${output_file}.gdb-index"
-if [ "$want_index" = true ] && [ -f "$index_file" ]
-then
-    echo "$myname: Index file $index_file exists, won't clobber." >&2
-    exit 1
-fi
-
 output_dir="${output_file%/*}"
 [ "$output_dir" = "$output_file" ] && output_dir="."
 
@@ -176,12 +169,16 @@ if [ "$want_objcopy_compress" = true ];
 fi
 
 if [ "$want_index" = true ]; then
+    get_tmpdir
+    mv "$output_file" "$tmpdir"
+    tmpfile="$tmpdir/$(basename $output_file)"
     # Filter out these messages which would stop dejagnu testcase run:
     # echo "$myname: No index was created for $file" 1>&2
     # echo "$myname: [Was there no debuginfo? Was there already an index?]" 1>&2
-    GDB=$GDB $GDB_ADD_INDEX $index_options "$output_file" 2>&1 \
+    GDB=$GDB $GDB_ADD_INDEX $index_options "$tmpfile" 2>&1 \
 	| grep -v "^${GDB_ADD_INDEX##*/}: " >&2
     rc=${PIPESTATUS[0]}
+    mv "$tmpfile" "$output_file"
     [ $rc != 0 ] && exit $rc
 fi
 
@@ -237,5 +234,4 @@ if [ "$want_dwp" = true ]; then
     fi
 fi
 
-rm -f "$index_file"
 exit $rc
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/expect-read1.c ./gdb/contrib/expect-read1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/expect-read1.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/contrib/expect-read1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/expect-read1.sh ./gdb/contrib/expect-read1.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/expect-read1.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/contrib/expect-read1.sh	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 #! /bin/sh
 # runtest wrapper to reliably reproduce racy incomplete reads in the testsuite.
 
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/gdb-add-index.sh ./gdb/contrib/gdb-add-index.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/gdb-add-index.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/contrib/gdb-add-index.sh	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
 
 # Add a .gdb_index section to a file.
 
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/test_pubnames_and_indexes.py ./gdb/contrib/test_pubnames_and_indexes.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/test_pubnames_and_indexes.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/contrib/test_pubnames_and_indexes.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 #! /usr/bin/env python
 
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/words.sh ./gdb/contrib/words.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/contrib/words.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/contrib/words.sh	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/copying.c ./gdb/copying.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/copying.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/copying.c	2021-05-21 01:57:24.000000000 +0000
@@ -640,8 +640,9 @@ show_warranty_command (const char *ignor
   printf_filtered ("\n");
 }
 
+void _initialize_copying ();
 void
-_initialize_copying (void)
+_initialize_copying ()
 {
   add_cmd ("copying", no_set_class, show_copying_command,
 	   _("Conditions for redistributing copies of GDB."),
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/copyright.py ./gdb/copyright.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/copyright.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/copyright.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 #! /usr/bin/env python3
 
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
@@ -46,7 +46,9 @@ def get_update_list():
     the files are relative to that root directory.
     """
     result = []
-    for gdb_dir in ('gdb', 'gnulib', 'sim', 'include/gdb'):
+    for gdb_dir in (
+        'gdb', 'gdbserver', 'gdbsupport', 'gnulib', 'sim', 'include/gdb',
+    ):
         for root, dirs, files in os.walk(gdb_dir, topdown=True):
             for dirname in dirs:
                 reldirname = "%s/%s" % (root, dirname)
@@ -190,7 +192,9 @@ def main ():
 EXCLUDE_LIST = (
     'gdb/nat/glibc_thread_db.h',
     'gdb/CONTRIBUTE',
-    'gnulib/import'
+    'gnulib/import',
+    'gnulib/config.in',
+    'gnulib/Makefile.in',
 )
 
 # Files which should not be modified, either because they are
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/corefile.c ./gdb/corefile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/corefile.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/corefile.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Core dump and executable file functions above target vector, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -141,7 +141,7 @@ validate_files (void)
 
 /* See gdbsupport/common-inferior.h.  */
 
-char *
+const char *
 get_exec_file (int err)
 {
   if (exec_filename)
@@ -151,7 +151,6 @@ get_exec_file (int err)
 
   error (_("No executable file specified.\n\
 Use the \"file\" or \"exec-file\" command."));
-  return NULL;
 }
 
 
@@ -329,33 +328,6 @@ read_code_unsigned_integer (CORE_ADDR me
   return extract_unsigned_integer (buf, len, byte_order);
 }
 
-void
-read_memory_string (CORE_ADDR memaddr, char *buffer, int max_len)
-{
-  char *cp;
-  int i;
-  int cnt;
-
-  cp = buffer;
-  while (1)
-    {
-      if (cp - buffer >= max_len)
-	{
-	  buffer[max_len - 1] = '\0';
-	  break;
-	}
-      cnt = max_len - (cp - buffer);
-      if (cnt > 8)
-	cnt = 8;
-      read_memory (memaddr + (int) (cp - buffer), (gdb_byte *) cp, cnt);
-      for (i = 0; i < cnt && *cp; i++, cp++)
-	;			/* null body */
-
-      if (i < cnt && !*cp)
-	break;
-    }
-}
-
 CORE_ADDR
 read_memory_typed_address (CORE_ADDR addr, struct type *type)
 {
@@ -416,7 +388,7 @@ write_memory_signed_integer (CORE_ADDR a
 
 /* The current default bfd target.  Points to storage allocated for
    gnutarget_string.  */
-char *gnutarget;
+const char *gnutarget;
 
 /* Same thing, except it is "auto" not NULL for the default case.  */
 static char *gnutarget_string;
@@ -473,14 +445,14 @@ complete_set_gnutarget (struct cmd_list_
 void
 set_gnutarget (const char *newtarget)
 {
-  if (gnutarget_string != NULL)
-    xfree (gnutarget_string);
+  xfree (gnutarget_string);
   gnutarget_string = xstrdup (newtarget);
   set_gnutarget_command (NULL, 0, NULL);
 }
 
+void _initialize_core ();
 void
-_initialize_core (void)
+_initialize_core ()
 {
   struct cmd_list_element *c;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/corelow.c ./gdb/corelow.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/corelow.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/corelow.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Core dump and executable file functions below target vector, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -37,6 +37,7 @@
 #include "exec.h"
 #include "readline/tilde.h"
 #include "solib.h"
+#include "solist.h"
 #include "filenames.h"
 #include "progspace.h"
 #include "objfiles.h"
@@ -44,14 +45,15 @@
 #include "completer.h"
 #include "gdbsupport/filestuff.h"
 #include "build-id.h"
+#include "gdbsupport/pathstuff.h"
+#include <unordered_map>
+#include <unordered_set>
+#include "gdbcmd.h"
 
 #ifndef O_LARGEFILE
 #define O_LARGEFILE 0
 #endif
 
-static core_fns *sniff_core_bfd (gdbarch *core_gdbarch,
-				 bfd *abfd);
-
 /* The core file target.  */
 
 static const target_info core_target_info = {
@@ -89,11 +91,11 @@ public:
 
   const char *thread_name (struct thread_info *) override;
 
-  bool has_all_memory () override { return false; }
+  bool has_all_memory () override { return true; }
   bool has_memory () override;
   bool has_stack () override;
   bool has_registers () override;
-  bool has_execution (ptid_t) override { return false; }
+  bool has_execution (inferior *inf) override { return false; }
 
   bool info_proc (const char *, enum info_proc_what) override;
 
@@ -110,10 +112,12 @@ public:
 				  const struct regset *regset,
 				  const char *name,
 				  int section_min_size,
-				  int which,
 				  const char *human_name,
 				  bool required);
 
+  /* See definition.  */
+  void info_proc_mappings (struct gdbarch *gdbarch);
+
 private: /* per-core data */
 
   /* The core's section table.  Note that these target sections are
@@ -124,9 +128,24 @@ private: /* per-core data */
      targets.  */
   target_section_table m_core_section_table {};
 
-  /* The core_fns for a core file handler that is prepared to read the
-     core file currently open on core_bfd.  */
-  core_fns *m_core_vec = NULL;
+  /* File-backed address space mappings: some core files include
+     information about memory mapped files.  */
+  target_section_table m_core_file_mappings {};
+
+  /* Unavailable mappings.  These correspond to pathnames which either
+     weren't found or could not be opened.  Knowing these addresses can
+     still be useful.  */
+  std::vector<mem_range> m_core_unavailable_mappings;
+
+  /* Build m_core_file_mappings.  Called from the constructor.  */
+  void build_file_mappings ();
+
+  /* Helper method for xfer_partial.  */
+  enum target_xfer_status xfer_memory_via_mappings (gdb_byte *readbuf,
+						    const gdb_byte *writebuf,
+						    ULONGEST offset,
+						    ULONGEST len,
+						    ULONGEST *xfered_len);
 
   /* FIXME: kettenis/20031023: Eventually this field should
      disappear.  */
@@ -137,8 +156,10 @@ core_target::core_target ()
 {
   m_core_gdbarch = gdbarch_from_bfd (core_bfd);
 
-  /* Find a suitable core file handler to munch on core_bfd */
-  m_core_vec = sniff_core_bfd (m_core_gdbarch, core_bfd);
+  if (!m_core_gdbarch
+      || !gdbarch_iterate_over_regset_sections_p (m_core_gdbarch))
+    error (_("\"%s\": Core file format not supported"),
+	   bfd_get_filename (core_bfd));
 
   /* Find the data section */
   if (build_section_table (core_bfd,
@@ -146,113 +167,133 @@ core_target::core_target ()
 			   &m_core_section_table.sections_end))
     error (_("\"%s\": Can't find sections: %s"),
 	   bfd_get_filename (core_bfd), bfd_errmsg (bfd_get_error ()));
+
+  build_file_mappings ();
 }
 
 core_target::~core_target ()
 {
   xfree (m_core_section_table.sections);
+  xfree (m_core_file_mappings.sections);
 }
 
-/* List of all available core_fns.  On gdb startup, each core file
-   register reader calls deprecated_add_core_fns() to register
-   information on each core format it is prepared to read.  */
-
-static struct core_fns *core_file_fns = NULL;
-
-static int gdb_check_format (bfd *);
+/* Construct the target_section_table for file-backed mappings if
+   they exist.
 
-static void add_to_thread_list (bfd *, asection *, void *);
-
-/* An arbitrary identifier for the core inferior.  */
-#define CORELOW_PID 1
-
-/* Link a new core_fns into the global core_file_fns list.  Called on
-   gdb startup by the _initialize routine in each core file register
-   reader, to register information about each format the reader is
-   prepared to handle.  */
+   For each unique path in the note, we'll open a BFD with a bfd
+   target of "binary".  This is an unstructured bfd target upon which
+   we'll impose a structure from the mappings in the architecture-specific
+   mappings note.  A BFD section is allocated and initialized for each
+   file-backed mapping.
+
+   We take care to not share already open bfds with other parts of
+   GDB; in particular, we don't want to add new sections to existing
+   BFDs.  We do, however, ensure that the BFDs that we allocate here
+   will go away (be deallocated) when the core target is detached.  */
 
 void
-deprecated_add_core_fns (struct core_fns *cf)
+core_target::build_file_mappings ()
 {
-  cf->next = core_file_fns;
-  core_file_fns = cf;
-}
-
-/* The default function that core file handlers can use to examine a
-   core file BFD and decide whether or not to accept the job of
-   reading the core file.  */
-
-int
-default_core_sniffer (struct core_fns *our_fns, bfd *abfd)
-{
-  int result;
-
-  result = (bfd_get_flavour (abfd) == our_fns -> core_flavour);
-  return (result);
-}
-
-/* Walk through the list of core functions to find a set that can
-   handle the core file open on ABFD.  Returns pointer to set that is
-   selected.  */
-
-static struct core_fns *
-sniff_core_bfd (struct gdbarch *core_gdbarch, bfd *abfd)
-{
-  struct core_fns *cf;
-  struct core_fns *yummy = NULL;
-  int matches = 0;
-
-  /* Don't sniff if we have support for register sets in
-     CORE_GDBARCH.  */
-  if (core_gdbarch && gdbarch_iterate_over_regset_sections_p (core_gdbarch))
-    return NULL;
-
-  for (cf = core_file_fns; cf != NULL; cf = cf->next)
-    {
-      if (cf->core_sniffer (cf, abfd))
-	{
-	  yummy = cf;
-	  matches++;
-	}
-    }
-  if (matches > 1)
-    {
-      warning (_("\"%s\": ambiguous core format, %d handlers match"),
-	       bfd_get_filename (abfd), matches);
-    }
-  else if (matches == 0)
-    error (_("\"%s\": no core file handler recognizes format"),
-	   bfd_get_filename (abfd));
-
-  return (yummy);
-}
+  std::unordered_map<std::string, struct bfd *> bfd_map;
+  std::unordered_set<std::string> unavailable_paths;
 
-/* The default is to reject every core file format we see.  Either
-   BFD has to recognize it, or we have to provide a function in the
-   core file handler that recognizes it.  */
+  /* See linux_read_core_file_mappings() in linux-tdep.c for an example
+     read_core_file_mappings method.  */
+  gdbarch_read_core_file_mappings (m_core_gdbarch, core_bfd,
+
+    /* After determining the number of mappings, read_core_file_mappings
+       will invoke this lambda which allocates target_section storage for
+       the mappings.  */
+    [&] (ULONGEST count)
+      {
+	m_core_file_mappings.sections = XNEWVEC (struct target_section, count);
+	m_core_file_mappings.sections_end = m_core_file_mappings.sections;
+      },
+
+    /* read_core_file_mappings will invoke this lambda for each mapping
+       that it finds.  */
+    [&] (int num, ULONGEST start, ULONGEST end, ULONGEST file_ofs,
+         const char *filename, const void *other)
+      {
+	/* Architecture-specific read_core_mapping methods are expected to
+	   weed out non-file-backed mappings.  */
+	gdb_assert (filename != nullptr);
+
+	struct bfd *bfd = bfd_map[filename];
+	if (bfd == nullptr)
+	  {
+	    /* Use exec_file_find() to do sysroot expansion.  It'll
+	       also strip the potential sysroot "target:" prefix.  If
+	       there is no sysroot, an equivalent (possibly more
+	       canonical) pathname will be provided.  */
+	    gdb::unique_xmalloc_ptr<char> expanded_fname
+	      = exec_file_find (filename, NULL);
+	    if (expanded_fname == nullptr)
+	      {
+		m_core_unavailable_mappings.emplace_back (start, end - start);
+		/* Print just one warning per path.  */
+		if (unavailable_paths.insert (filename).second)
+		  warning (_("Can't open file %s during file-backed mapping "
+			     "note processing"),
+			   filename);
+		return;
+	      }
+
+	    bfd = bfd_map[filename] = bfd_openr (expanded_fname.get (),
+	                                         "binary");
+
+	    if (bfd == nullptr || !bfd_check_format (bfd, bfd_object))
+	      {
+		m_core_unavailable_mappings.emplace_back (start, end - start);
+		/* If we get here, there's a good chance that it's due to
+		   an internal error.  We issue a warning instead of an
+		   internal error because of the possibility that the
+		   file was removed in between checking for its
+		   existence during the expansion in exec_file_find()
+		   and the calls to bfd_openr() / bfd_check_format(). 
+		   Output both the path from the core file note along
+		   with its expansion to make debugging this problem
+		   easier.  */
+		warning (_("Can't open file %s which was expanded to %s "
+			   "during file-backed mapping note processing"),
+			 filename, expanded_fname.get ());
+		if (bfd != nullptr)
+		  bfd_close (bfd);
+		return;
+	      }
+	    /* Ensure that the bfd will be closed when core_bfd is closed. 
+	       This can be checked before/after a core file detach via
+	       "maint info bfds".  */
+	    gdb_bfd_record_inclusion (core_bfd, bfd);
+	  }
+
+	/* Make new BFD section.  All sections have the same name,
+	   which is permitted by bfd_make_section_anyway().  */
+	asection *sec = bfd_make_section_anyway (bfd, "load");
+	if (sec == nullptr)
+	  error (_("Can't make section"));
+	sec->filepos = file_ofs;
+	bfd_set_section_flags (sec, SEC_READONLY | SEC_HAS_CONTENTS);
+	bfd_set_section_size (sec, end - start);
+	bfd_set_section_vma (sec, start);
+	bfd_set_section_lma (sec, start);
+	bfd_set_section_alignment (sec, 2);
+
+	/* Set target_section fields.  */
+	struct target_section *ts = m_core_file_mappings.sections_end++;
+	ts->addr = start;
+	ts->endaddr = end;
+	ts->owner = nullptr;
+	ts->the_bfd_section = sec;
+      });
 
-int
-default_check_format (bfd *abfd)
-{
-  return (0);
+  normalize_mem_ranges (&m_core_unavailable_mappings);
 }
 
-/* Attempt to recognize core file formats that BFD rejects.  */
-
-static int
-gdb_check_format (bfd *abfd)
-{
-  struct core_fns *cf;
+static void add_to_thread_list (bfd *, asection *, void *);
 
-  for (cf = core_file_fns; cf != NULL; cf = cf->next)
-    {
-      if (cf->check_format (abfd))
-	{
-	  return (1);
-	}
-    }
-  return (0);
-}
+/* An arbitrary identifier for the core inferior.  */
+#define CORELOW_PID 1
 
 /* Close the core target.  */
 
@@ -261,8 +302,8 @@ core_target::close ()
 {
   if (core_bfd)
     {
-      inferior_ptid = null_ptid;    /* Avoid confusion from thread
-				       stuff.  */
+      switch_to_no_thread ();    /* Avoid confusion from thread
+				    stuff.  */
       exit_inferior_silent (current_inferior ());
 
       /* Clear out solib state while the bfd is still open.  See
@@ -283,7 +324,6 @@ core_target::close ()
 static void
 add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg)
 {
-  ptid_t ptid;
   int core_tid;
   int pid, lwpid;
   asection *reg_sect = (asection *) reg_sect_arg;
@@ -311,15 +351,15 @@ add_to_thread_list (bfd *abfd, asection
       inf->fake_pid_p = fake_pid_p;
     }
 
-  ptid = ptid_t (pid, lwpid, 0);
+  ptid_t ptid (pid, lwpid);
 
-  add_thread (ptid);
+  thread_info *thr = add_thread (inf->process_target (), ptid);
 
 /* Warning, Will Robinson, looking at BFD private data! */
 
   if (reg_sect != NULL
       && asect->filepos == reg_sect->filepos)	/* Did we find .reg?  */
-    inferior_ptid = ptid;			/* Yes, make it current.  */
+    switch_to_thread (thr);			/* Yes, make it current.  */
 }
 
 /* Issue a message saying we have no core to debug, if FROM_TTY.  */
@@ -395,8 +435,7 @@ core_target_open (const char *arg, int f
 
   gdb::unique_xmalloc_ptr<char> filename (tilde_expand (arg));
   if (!IS_ABSOLUTE_PATH (filename.get ()))
-    filename.reset (concat (current_directory, "/",
-			    filename.get (), (char *) NULL));
+    filename = gdb_abspath (filename.get ());
 
   flags = O_BINARY | O_LARGEFILE;
   if (write_files)
@@ -413,8 +452,7 @@ core_target_open (const char *arg, int f
   if (temp_bfd == NULL)
     perror_with_name (filename.get ());
 
-  if (!bfd_check_format (temp_bfd.get (), bfd_core)
-      && !gdb_check_format (temp_bfd.get ()))
+  if (!bfd_check_format (temp_bfd.get (), bfd_core))
     {
       /* Do it after the err msg */
       /* FIXME: should be checking for errors from bfd_close (for one
@@ -442,7 +480,7 @@ core_target_open (const char *arg, int f
 
   push_target (std::move (target_holder));
 
-  inferior_ptid = null_ptid;
+  switch_to_no_thread ();
 
   /* Need to flush the register cache (and the frame cache) from a
      previous debug session.  If inferior_ptid ends up the same as the
@@ -471,11 +509,10 @@ core_target_open (const char *arg, int f
       if (thread == NULL)
 	{
 	  inferior_appeared (current_inferior (), CORELOW_PID);
-	  inferior_ptid = ptid_t (CORELOW_PID);
-	  add_thread_silent (inferior_ptid);
+	  thread = add_thread_silent (target, ptid_t (CORELOW_PID));
 	}
-      else
-	switch_to_thread (thread);
+
+      switch_to_thread (thread);
     }
 
   if (exec_bfd == nullptr)
@@ -521,8 +558,11 @@ core_target_open (const char *arg, int f
 							       siggy)
 			     : gdb_signal_from_host (siggy));
 
-      printf_filtered (_("Program terminated with signal %s, %s.\n"),
+      printf_filtered (_("Program terminated with signal %s, %s"),
 		       gdb_signal_to_name (sig), gdb_signal_to_string (sig));
+      if (gdbarch_report_signal_info_p (core_gdbarch))
+	gdbarch_report_signal_info (core_gdbarch, current_uiout, sig);
+      printf_filtered (_(".\n"));
 
       /* Set the value of the internal variable $_exitsignal,
 	 which holds the signal uncaught by the inferior.  */
@@ -540,7 +580,7 @@ core_target_open (const char *arg, int f
   /* Current thread should be NUM 1 but the user does not know that.
      If a program is single threaded gdb in general does not mention
      anything about threads.  That is why the test is >= 2.  */
-  if (thread_count () >= 2)
+  if (thread_count (target) >= 2)
     {
       try
 	{
@@ -568,8 +608,7 @@ core_target::detach (inferior *inf, int
 }
 
 /* Try to retrieve registers from a section in core_bfd, and supply
-   them to m_core_vec->core_read_registers, as the register set
-   numbered WHICH.
+   them to REGSET.
 
    If ptid's lwp member is zero, do the single-threaded
    thing: look for a section named NAME.  If ptid's lwp
@@ -588,15 +627,14 @@ core_target::get_core_register_section (
 					const struct regset *regset,
 					const char *name,
 					int section_min_size,
-					int which,
 					const char *human_name,
 					bool required)
 {
+  gdb_assert (regset != nullptr);
+
   struct bfd_section *section;
   bfd_size_type size;
-  char *contents;
-  bool variable_size_section = (regset != NULL
-				&& regset->flags & REGSET_VARIABLE_SIZE);
+  bool variable_size_section = (regset->flags & REGSET_VARIABLE_SIZE);
 
   thread_section_name section_name (name, regcache->ptid ());
 
@@ -622,24 +660,16 @@ core_target::get_core_register_section (
 	       section_name.c_str ());
     }
 
-  contents = (char *) alloca (size);
-  if (! bfd_get_section_contents (core_bfd, section, contents,
-				  (file_ptr) 0, size))
+  gdb::byte_vector contents (size);
+  if (!bfd_get_section_contents (core_bfd, section, contents.data (),
+				 (file_ptr) 0, size))
     {
       warning (_("Couldn't read %s registers from `%s' section in core file."),
 	       human_name, section_name.c_str ());
       return;
     }
 
-  if (regset != NULL)
-    {
-      regset->supply_regset (regset, regcache, -1, contents, size);
-      return;
-    }
-
-  gdb_assert (m_core_vec != nullptr);
-  m_core_vec->core_read_registers (regcache, contents, size, which,
-				   (CORE_ADDR) bfd_section_vma (section));
+  regset->supply_regset (regset, regcache, -1, contents.data (), size);
 }
 
 /* Data passed to gdbarch_iterate_over_regset_sections's callback.  */
@@ -657,10 +687,11 @@ get_core_registers_cb (const char *sect_
 		       const struct regset *regset,
 		       const char *human_name, void *cb_data)
 {
+  gdb_assert (regset != nullptr);
+
   auto *data = (get_core_registers_cb_data *) cb_data;
   bool required = false;
-  bool variable_size_section = (regset != NULL
-				&& regset->flags & REGSET_VARIABLE_SIZE);
+  bool variable_size_section = (regset->flags & REGSET_VARIABLE_SIZE);
 
   if (!variable_size_section)
     gdb_assert (supply_size == collect_size);
@@ -677,11 +708,8 @@ get_core_registers_cb (const char *sect_
 	human_name = "floating-point";
     }
 
-  /* The 'which' parameter is only used when no regset is provided.
-     Thus we just set it to -1. */
   data->target->get_core_register_section (data->regcache, regset, sect_name,
-					   supply_size, -1, human_name,
-					   required);
+					   supply_size, human_name, required);
 }
 
 /* Get the registers out of a core file.  This is the machine-
@@ -694,36 +722,22 @@ get_core_registers_cb (const char *sect_
 void
 core_target::fetch_registers (struct regcache *regcache, int regno)
 {
-  int i;
-  struct gdbarch *gdbarch;
-
   if (!(m_core_gdbarch != nullptr
-	&& gdbarch_iterate_over_regset_sections_p (m_core_gdbarch))
-      && (m_core_vec == NULL || m_core_vec->core_read_registers == NULL))
+	&& gdbarch_iterate_over_regset_sections_p (m_core_gdbarch)))
     {
       fprintf_filtered (gdb_stderr,
 		     "Can't fetch registers from this type of core file\n");
       return;
     }
 
-  gdbarch = regcache->arch ();
-  if (gdbarch_iterate_over_regset_sections_p (gdbarch))
-    {
-      get_core_registers_cb_data data = { this, regcache };
-      gdbarch_iterate_over_regset_sections (gdbarch,
-					    get_core_registers_cb,
-					    (void *) &data, NULL);
-    }
-  else
-    {
-      get_core_register_section (regcache, NULL,
-				 ".reg", 0, 0, "general-purpose", 1);
-      get_core_register_section (regcache, NULL,
-				 ".reg2", 0, 2, "floating-point", 0);
-    }
+  struct gdbarch *gdbarch = regcache->arch ();
+  get_core_registers_cb_data data = { this, regcache };
+  gdbarch_iterate_over_regset_sections (gdbarch,
+					get_core_registers_cb,
+					(void *) &data, NULL);
 
   /* Mark all registers not found in the core as unavailable.  */
-  for (i = 0; i < gdbarch_num_regs (regcache->arch ()); i++)
+  for (int i = 0; i < gdbarch_num_regs (regcache->arch ()); i++)
     if (regcache->get_register_status (i) == REG_UNKNOWN)
       regcache->raw_supply (i, NULL);
 }
@@ -734,6 +748,57 @@ core_target::files_info ()
   print_section_info (&m_core_section_table, core_bfd);
 }
 
+/* Helper method for core_target::xfer_partial.  */
+
+enum target_xfer_status
+core_target::xfer_memory_via_mappings (gdb_byte *readbuf,
+				       const gdb_byte *writebuf,
+				       ULONGEST offset, ULONGEST len,
+				       ULONGEST *xfered_len)
+{
+  enum target_xfer_status xfer_status;
+
+  xfer_status = (section_table_xfer_memory_partial
+		   (readbuf, writebuf,
+		    offset, len, xfered_len,
+		    m_core_file_mappings.sections,
+		    m_core_file_mappings.sections_end));
+
+  if (xfer_status == TARGET_XFER_OK || m_core_unavailable_mappings.empty ())
+    return xfer_status;
+
+  /* There are instances - e.g. when debugging within a docker
+     container using the AUFS storage driver - where the pathnames
+     obtained from the note section are incorrect.  Despite the path
+     being wrong, just knowing the start and end addresses of the
+     mappings is still useful; we can attempt an access of the file
+     stratum constrained to the address ranges corresponding to the
+     unavailable mappings.  */
+
+  ULONGEST memaddr = offset;
+  ULONGEST memend = offset + len;
+
+  for (const auto &mr : m_core_unavailable_mappings)
+    {
+      if (address_in_mem_range (memaddr, &mr))
+        {
+	  if (!address_in_mem_range (memend, &mr))
+	    len = mr.start + mr.length - memaddr;
+
+	  xfer_status = this->beneath ()->xfer_partial (TARGET_OBJECT_MEMORY,
+							NULL,
+							readbuf,
+							writebuf,
+							offset,
+							len,
+							xfered_len);
+	  break;
+	}
+    }
+
+  return xfer_status;
+}
+
 enum target_xfer_status
 core_target::xfer_partial (enum target_object object, const char *annex,
 			   gdb_byte *readbuf, const gdb_byte *writebuf,
@@ -742,13 +807,55 @@ core_target::xfer_partial (enum target_o
   switch (object)
     {
     case TARGET_OBJECT_MEMORY:
-      return (section_table_xfer_memory_partial
-	      (readbuf, writebuf,
-	       offset, len, xfered_len,
-	       m_core_section_table.sections,
-	       m_core_section_table.sections_end,
-	       NULL));
+      {
+	enum target_xfer_status xfer_status;
+
+	/* Try accessing memory contents from core file data,
+	   restricting consideration to those sections for which
+	   the BFD section flag SEC_HAS_CONTENTS is set.  */
+	auto has_contents_cb = [] (const struct target_section *s)
+	  {
+	    return ((s->the_bfd_section->flags & SEC_HAS_CONTENTS) != 0);
+	  };
+	xfer_status = section_table_xfer_memory_partial
+			(readbuf, writebuf,
+			 offset, len, xfered_len,
+			 m_core_section_table.sections,
+			 m_core_section_table.sections_end,
+			 has_contents_cb);
+	if (xfer_status == TARGET_XFER_OK)
+	  return TARGET_XFER_OK;
 
+	/* Check file backed mappings.  If they're available, use
+	   core file provided mappings (e.g. from .note.linuxcore.file
+	   or the like) as this should provide a more accurate
+	   result.  If not, check the stratum beneath us, which should
+	   be the file stratum.  */
+	if (m_core_file_mappings.sections != nullptr)
+	  xfer_status = xfer_memory_via_mappings (readbuf, writebuf, offset,
+						  len, xfered_len);
+	else
+	  xfer_status = this->beneath ()->xfer_partial (object, annex, readbuf,
+							writebuf, offset, len,
+							xfered_len);
+	if (xfer_status == TARGET_XFER_OK)
+	  return TARGET_XFER_OK;
+
+	/* Finally, attempt to access data in core file sections with
+	   no contents.  These will typically read as all zero.  */
+	auto no_contents_cb = [&] (const struct target_section *s)
+	  {
+	    return !has_contents_cb (s);
+	  };
+	xfer_status = section_table_xfer_memory_partial
+			(readbuf, writebuf,
+			 offset, len, xfered_len,
+			 m_core_section_table.sections,
+			 m_core_section_table.sections_end,
+			 no_contents_cb);
+
+	return xfer_status;
+      }
     case TARGET_OBJECT_AUXV:
       if (readbuf)
 	{
@@ -944,7 +1051,7 @@ core_target::pid_to_str (ptid_t ptid)
 
   /* Otherwise, this isn't a "threaded" core -- use the PID field, but
      only if it isn't a fake PID.  */
-  inf = find_inferior_ptid (ptid);
+  inf = find_inferior_ptid (this, ptid);
   if (inf != NULL && !inf->fake_pid_p)
     return normal_pid_to_str (ptid);
 
@@ -994,8 +1101,92 @@ core_target::info_proc (const char *args
   return true;
 }
 
+/* Get a pointer to the current core target.  If not connected to a
+   core target, return NULL.  */
+
+static core_target *
+get_current_core_target ()
+{
+  target_ops *proc_target = current_inferior ()->process_target ();
+  return dynamic_cast<core_target *> (proc_target);
+}
+
+/* Display file backed mappings from core file.  */
+
+void
+core_target::info_proc_mappings (struct gdbarch *gdbarch)
+{
+  if (m_core_file_mappings.sections != m_core_file_mappings.sections_end)
+    {
+      printf_filtered (_("Mapped address spaces:\n\n"));
+      if (gdbarch_addr_bit (gdbarch) == 32)
+	{
+	  printf_filtered ("\t%10s %10s %10s %10s %s\n",
+			   "Start Addr",
+			   "  End Addr",
+			   "      Size", "    Offset", "objfile");
+	}
+      else
+	{
+	  printf_filtered ("  %18s %18s %10s %10s %s\n",
+			   "Start Addr",
+			   "  End Addr",
+			   "      Size", "    Offset", "objfile");
+	}
+    }
+
+  for (const struct target_section *tsp = m_core_file_mappings.sections;
+       tsp < m_core_file_mappings.sections_end;
+       tsp++)
+    {
+      ULONGEST start = tsp->addr;
+      ULONGEST end = tsp->endaddr;
+      ULONGEST file_ofs = tsp->the_bfd_section->filepos;
+      const char *filename = bfd_get_filename (tsp->the_bfd_section->owner);
+
+      if (gdbarch_addr_bit (gdbarch) == 32)
+	printf_filtered ("\t%10s %10s %10s %10s %s\n",
+			 paddress (gdbarch, start),
+			 paddress (gdbarch, end),
+			 hex_string (end - start),
+			 hex_string (file_ofs),
+			 filename);
+      else
+	printf_filtered ("  %18s %18s %10s %10s %s\n",
+			 paddress (gdbarch, start),
+			 paddress (gdbarch, end),
+			 hex_string (end - start),
+			 hex_string (file_ofs),
+			 filename);
+    }
+}
+
+/* Implement "maintenance print core-file-backed-mappings" command.  
+
+   If mappings are loaded, the results should be similar to the
+   mappings shown by "info proc mappings".  This command is mainly a
+   debugging tool for GDB developers to make sure that the expected
+   mappings are present after loading a core file.  For Linux, the
+   output provided by this command will be very similar (if not
+   identical) to that provided by "info proc mappings".  This is not
+   necessarily the case for other OSes which might provide
+   more/different information in the "info proc mappings" output.  */
+
+static void
+maintenance_print_core_file_backed_mappings (const char *args, int from_tty)
+{
+  core_target *targ = get_current_core_target ();
+  if (targ != nullptr)
+    targ->info_proc_mappings (targ->core_gdbarch ());
+}
+
+void _initialize_corelow ();
 void
-_initialize_corelow (void)
+_initialize_corelow ()
 {
   add_target (core_target_info, core_target_open, filename_completer);
+  add_cmd ("core-file-backed-mappings", class_maintenance,
+           maintenance_print_core_file_backed_mappings,
+	   _("Print core file's file-backed mappings."),
+	   &maintenanceprintlist);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-abi.c ./gdb/cp-abi.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-abi.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cp-abi.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic code for supporting multiple C++ ABI's
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -220,11 +220,13 @@ cplus_typename_from_type_info (struct va
   return (*current_cp_abi.get_typename_from_type_info) (value);
 }
 
-int
+/* See cp-abi.h.  */
+
+struct language_pass_by_ref_info
 cp_pass_by_reference (struct type *type)
 {
   if ((current_cp_abi.pass_by_reference) == NULL)
-    return 0;
+    return {};
   return (*current_cp_abi.pass_by_reference) (type);
 }
 
@@ -271,10 +273,8 @@ set_cp_abi_as_auto_default (const char *
 		    _("Cannot find C++ ABI \"%s\" to set it as auto default."),
 		    short_name);
 
-  if (auto_cp_abi.longname != NULL)
-    xfree ((char *) auto_cp_abi.longname);
-  if (auto_cp_abi.doc != NULL)
-    xfree ((char *) auto_cp_abi.doc);
+  xfree ((char *) auto_cp_abi.longname);
+  xfree ((char *) auto_cp_abi.doc);
 
   auto_cp_abi = *abi;
 
@@ -389,8 +389,9 @@ show_cp_abi_cmd (const char *args, int f
   uiout->text (").\n");
 }
 
+void _initialize_cp_abi ();
 void
-_initialize_cp_abi (void)
+_initialize_cp_abi ()
 {
   struct cmd_list_element *c;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-abi.h ./gdb/cp-abi.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-abi.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cp-abi.h	2021-05-21 01:57:24.000000000 +0000
@@ -3,7 +3,7 @@
 
    Contributed by Daniel Berlin <dberlin@redhat.com>
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -207,9 +207,11 @@ extern std::string cplus_typename_from_t
 CORE_ADDR cplus_skip_trampoline (struct frame_info *frame,
 				 CORE_ADDR stop_pc);
 
-/* Return non-zero if an argument of type TYPE should be passed by
-   reference instead of value.  */
-extern int cp_pass_by_reference (struct type *type);
+/* Return a struct that provides pass-by-reference information
+   about the given TYPE.  */
+
+extern struct language_pass_by_ref_info cp_pass_by_reference
+  (struct type *type);
 
 struct cp_abi_ops
 {
@@ -246,7 +248,7 @@ struct cp_abi_ops
   struct type *(*get_type_from_type_info) (struct value *value);
   std::string (*get_typename_from_type_info) (struct value *value);
   CORE_ADDR (*skip_trampoline) (struct frame_info *, CORE_ADDR);
-  int (*pass_by_reference) (struct type *type);
+  struct language_pass_by_ref_info (*pass_by_reference) (struct type *type);
 };
 
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-name-parser.c ./gdb/cp-name-parser.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-name-parser.c	2020-03-07 02:11:12.000000000 +0000
+++ ./gdb/cp-name-parser.c	2021-05-21 02:00:05.000000000 +0000
@@ -1,21 +1,20 @@
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* Bison implementation for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   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/>.  */
 
@@ -28,13 +27,17 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -46,7 +49,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,14 +63,10 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 
 
-/* Copy the first part of user declarations.  */
-
-/* Line 189 of yacc.c  */
+/* First part of user prologue.  */
 #line 38 "cp-name-parser.y"
 
 
@@ -95,88 +94,104 @@ struct demangle_info {
 };
 
 
+#line 98 "cp-name-parser.c.tmp"
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTRPTR nullptr
+#   else
+#    define YY_NULLPTRPTR 0
+#   endif
+#  else
+#   define YY_NULLPTRPTR ((void*)0)
+#  endif
+# endif
 
-/* Line 189 of yacc.c  */
-#line 101 "cp-name-parser.c.tmp"
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+#if YYDEBUG
+extern int yydebug;
 #endif
 
-
-/* Tokens.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     INT = 258,
-     FLOAT = 259,
-     NAME = 260,
-     STRUCT = 261,
-     CLASS = 262,
-     UNION = 263,
-     ENUM = 264,
-     SIZEOF = 265,
-     UNSIGNED = 266,
-     COLONCOLON = 267,
-     TEMPLATE = 268,
-     ERROR = 269,
-     NEW = 270,
-     DELETE = 271,
-     OPERATOR = 272,
-     STATIC_CAST = 273,
-     REINTERPRET_CAST = 274,
-     DYNAMIC_CAST = 275,
-     SIGNED_KEYWORD = 276,
-     LONG = 277,
-     SHORT = 278,
-     INT_KEYWORD = 279,
-     CONST_KEYWORD = 280,
-     VOLATILE_KEYWORD = 281,
-     DOUBLE_KEYWORD = 282,
-     BOOL = 283,
-     ELLIPSIS = 284,
-     RESTRICT = 285,
-     VOID = 286,
-     FLOAT_KEYWORD = 287,
-     CHAR = 288,
-     WCHAR_T = 289,
-     ASSIGN_MODIFY = 290,
-     TRUEKEYWORD = 291,
-     FALSEKEYWORD = 292,
-     DEMANGLER_SPECIAL = 293,
-     CONSTRUCTION_VTABLE = 294,
-     CONSTRUCTION_IN = 295,
-     OROR = 296,
-     ANDAND = 297,
-     NOTEQUAL = 298,
-     EQUAL = 299,
-     GEQ = 300,
-     LEQ = 301,
-     RSH = 302,
-     LSH = 303,
-     DECREMENT = 304,
-     INCREMENT = 305,
-     UNARY = 306,
-     ARROW = 307
-   };
-#endif
-/* Tokens.  */
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    INT = 258,                     /* INT  */
+    FLOAT = 259,                   /* FLOAT  */
+    NAME = 260,                    /* NAME  */
+    STRUCT = 261,                  /* STRUCT  */
+    CLASS = 262,                   /* CLASS  */
+    UNION = 263,                   /* UNION  */
+    ENUM = 264,                    /* ENUM  */
+    SIZEOF = 265,                  /* SIZEOF  */
+    UNSIGNED = 266,                /* UNSIGNED  */
+    COLONCOLON = 267,              /* COLONCOLON  */
+    TEMPLATE = 268,                /* TEMPLATE  */
+    ERROR = 269,                   /* ERROR  */
+    NEW = 270,                     /* NEW  */
+    DELETE = 271,                  /* DELETE  */
+    OPERATOR = 272,                /* OPERATOR  */
+    STATIC_CAST = 273,             /* STATIC_CAST  */
+    REINTERPRET_CAST = 274,        /* REINTERPRET_CAST  */
+    DYNAMIC_CAST = 275,            /* DYNAMIC_CAST  */
+    SIGNED_KEYWORD = 276,          /* SIGNED_KEYWORD  */
+    LONG = 277,                    /* LONG  */
+    SHORT = 278,                   /* SHORT  */
+    INT_KEYWORD = 279,             /* INT_KEYWORD  */
+    CONST_KEYWORD = 280,           /* CONST_KEYWORD  */
+    VOLATILE_KEYWORD = 281,        /* VOLATILE_KEYWORD  */
+    DOUBLE_KEYWORD = 282,          /* DOUBLE_KEYWORD  */
+    BOOL = 283,                    /* BOOL  */
+    ELLIPSIS = 284,                /* ELLIPSIS  */
+    RESTRICT = 285,                /* RESTRICT  */
+    VOID = 286,                    /* VOID  */
+    FLOAT_KEYWORD = 287,           /* FLOAT_KEYWORD  */
+    CHAR = 288,                    /* CHAR  */
+    WCHAR_T = 289,                 /* WCHAR_T  */
+    ASSIGN_MODIFY = 290,           /* ASSIGN_MODIFY  */
+    TRUEKEYWORD = 291,             /* TRUEKEYWORD  */
+    FALSEKEYWORD = 292,            /* FALSEKEYWORD  */
+    DEMANGLER_SPECIAL = 293,       /* DEMANGLER_SPECIAL  */
+    CONSTRUCTION_VTABLE = 294,     /* CONSTRUCTION_VTABLE  */
+    CONSTRUCTION_IN = 295,         /* CONSTRUCTION_IN  */
+    OROR = 296,                    /* OROR  */
+    ANDAND = 297,                  /* ANDAND  */
+    EQUAL = 298,                   /* EQUAL  */
+    NOTEQUAL = 299,                /* NOTEQUAL  */
+    LEQ = 300,                     /* LEQ  */
+    GEQ = 301,                     /* GEQ  */
+    LSH = 302,                     /* LSH  */
+    RSH = 303,                     /* RSH  */
+    UNARY = 304,                   /* UNARY  */
+    INCREMENT = 305,               /* INCREMENT  */
+    DECREMENT = 306,               /* DECREMENT  */
+    ARROW = 307                    /* ARROW  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
+#endif
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define INT 258
 #define FLOAT 259
 #define NAME 260
@@ -217,25 +232,21 @@ struct demangle_info {
 #define CONSTRUCTION_IN 295
 #define OROR 296
 #define ANDAND 297
-#define NOTEQUAL 298
-#define EQUAL 299
-#define GEQ 300
-#define LEQ 301
-#define RSH 302
-#define LSH 303
-#define DECREMENT 304
+#define EQUAL 298
+#define NOTEQUAL 299
+#define LEQ 300
+#define GEQ 301
+#define LSH 302
+#define RSH 303
+#define UNARY 304
 #define INCREMENT 305
-#define UNARY 306
+#define DECREMENT 306
 #define ARROW 307
 
-
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
 #line 66 "cp-name-parser.y"
 
     struct demangle_component *comp;
@@ -256,19 +267,143 @@ typedef union YYSTYPE
     const char *opname;
   
 
+#line 271 "cp-name-parser.c.tmp"
 
-/* Line 214 of yacc.c  */
-#line 262 "cp-name-parser.c.tmp"
-} YYSTYPE;
+};
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
 
-/* Line 264 of yacc.c  */
+int yyparse (struct cpname_state *state);
+
+
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_INT = 3,                        /* INT  */
+  YYSYMBOL_FLOAT = 4,                      /* FLOAT  */
+  YYSYMBOL_NAME = 5,                       /* NAME  */
+  YYSYMBOL_STRUCT = 6,                     /* STRUCT  */
+  YYSYMBOL_CLASS = 7,                      /* CLASS  */
+  YYSYMBOL_UNION = 8,                      /* UNION  */
+  YYSYMBOL_ENUM = 9,                       /* ENUM  */
+  YYSYMBOL_SIZEOF = 10,                    /* SIZEOF  */
+  YYSYMBOL_UNSIGNED = 11,                  /* UNSIGNED  */
+  YYSYMBOL_COLONCOLON = 12,                /* COLONCOLON  */
+  YYSYMBOL_TEMPLATE = 13,                  /* TEMPLATE  */
+  YYSYMBOL_ERROR = 14,                     /* ERROR  */
+  YYSYMBOL_NEW = 15,                       /* NEW  */
+  YYSYMBOL_DELETE = 16,                    /* DELETE  */
+  YYSYMBOL_OPERATOR = 17,                  /* OPERATOR  */
+  YYSYMBOL_STATIC_CAST = 18,               /* STATIC_CAST  */
+  YYSYMBOL_REINTERPRET_CAST = 19,          /* REINTERPRET_CAST  */
+  YYSYMBOL_DYNAMIC_CAST = 20,              /* DYNAMIC_CAST  */
+  YYSYMBOL_SIGNED_KEYWORD = 21,            /* SIGNED_KEYWORD  */
+  YYSYMBOL_LONG = 22,                      /* LONG  */
+  YYSYMBOL_SHORT = 23,                     /* SHORT  */
+  YYSYMBOL_INT_KEYWORD = 24,               /* INT_KEYWORD  */
+  YYSYMBOL_CONST_KEYWORD = 25,             /* CONST_KEYWORD  */
+  YYSYMBOL_VOLATILE_KEYWORD = 26,          /* VOLATILE_KEYWORD  */
+  YYSYMBOL_DOUBLE_KEYWORD = 27,            /* DOUBLE_KEYWORD  */
+  YYSYMBOL_BOOL = 28,                      /* BOOL  */
+  YYSYMBOL_ELLIPSIS = 29,                  /* ELLIPSIS  */
+  YYSYMBOL_RESTRICT = 30,                  /* RESTRICT  */
+  YYSYMBOL_VOID = 31,                      /* VOID  */
+  YYSYMBOL_FLOAT_KEYWORD = 32,             /* FLOAT_KEYWORD  */
+  YYSYMBOL_CHAR = 33,                      /* CHAR  */
+  YYSYMBOL_WCHAR_T = 34,                   /* WCHAR_T  */
+  YYSYMBOL_ASSIGN_MODIFY = 35,             /* ASSIGN_MODIFY  */
+  YYSYMBOL_TRUEKEYWORD = 36,               /* TRUEKEYWORD  */
+  YYSYMBOL_FALSEKEYWORD = 37,              /* FALSEKEYWORD  */
+  YYSYMBOL_DEMANGLER_SPECIAL = 38,         /* DEMANGLER_SPECIAL  */
+  YYSYMBOL_CONSTRUCTION_VTABLE = 39,       /* CONSTRUCTION_VTABLE  */
+  YYSYMBOL_CONSTRUCTION_IN = 40,           /* CONSTRUCTION_IN  */
+  YYSYMBOL_41_ = 41,                       /* ')'  */
+  YYSYMBOL_42_ = 42,                       /* ','  */
+  YYSYMBOL_43_ = 43,                       /* '='  */
+  YYSYMBOL_44_ = 44,                       /* '?'  */
+  YYSYMBOL_OROR = 45,                      /* OROR  */
+  YYSYMBOL_ANDAND = 46,                    /* ANDAND  */
+  YYSYMBOL_47_ = 47,                       /* '|'  */
+  YYSYMBOL_48_ = 48,                       /* '^'  */
+  YYSYMBOL_49_ = 49,                       /* '&'  */
+  YYSYMBOL_EQUAL = 50,                     /* EQUAL  */
+  YYSYMBOL_NOTEQUAL = 51,                  /* NOTEQUAL  */
+  YYSYMBOL_52_ = 52,                       /* '<'  */
+  YYSYMBOL_53_ = 53,                       /* '>'  */
+  YYSYMBOL_LEQ = 54,                       /* LEQ  */
+  YYSYMBOL_GEQ = 55,                       /* GEQ  */
+  YYSYMBOL_LSH = 56,                       /* LSH  */
+  YYSYMBOL_RSH = 57,                       /* RSH  */
+  YYSYMBOL_58_ = 58,                       /* '@'  */
+  YYSYMBOL_59_ = 59,                       /* '+'  */
+  YYSYMBOL_60_ = 60,                       /* '-'  */
+  YYSYMBOL_61_ = 61,                       /* '*'  */
+  YYSYMBOL_62_ = 62,                       /* '/'  */
+  YYSYMBOL_63_ = 63,                       /* '%'  */
+  YYSYMBOL_UNARY = 64,                     /* UNARY  */
+  YYSYMBOL_INCREMENT = 65,                 /* INCREMENT  */
+  YYSYMBOL_DECREMENT = 66,                 /* DECREMENT  */
+  YYSYMBOL_ARROW = 67,                     /* ARROW  */
+  YYSYMBOL_68_ = 68,                       /* '.'  */
+  YYSYMBOL_69_ = 69,                       /* '['  */
+  YYSYMBOL_70_ = 70,                       /* ']'  */
+  YYSYMBOL_71_ = 71,                       /* '~'  */
+  YYSYMBOL_72_ = 72,                       /* '!'  */
+  YYSYMBOL_73_ = 73,                       /* '('  */
+  YYSYMBOL_74_ = 74,                       /* ':'  */
+  YYSYMBOL_YYACCEPT = 75,                  /* $accept  */
+  YYSYMBOL_result = 76,                    /* result  */
+  YYSYMBOL_start = 77,                     /* start  */
+  YYSYMBOL_start_opt = 78,                 /* start_opt  */
+  YYSYMBOL_function = 79,                  /* function  */
+  YYSYMBOL_demangler_special = 80,         /* demangler_special  */
+  YYSYMBOL_oper = 81,                      /* oper  */
+  YYSYMBOL_conversion_op = 82,             /* conversion_op  */
+  YYSYMBOL_conversion_op_name = 83,        /* conversion_op_name  */
+  YYSYMBOL_unqualified_name = 84,          /* unqualified_name  */
+  YYSYMBOL_colon_name = 85,                /* colon_name  */
+  YYSYMBOL_name = 86,                      /* name  */
+  YYSYMBOL_colon_ext_name = 87,            /* colon_ext_name  */
+  YYSYMBOL_colon_ext_only = 88,            /* colon_ext_only  */
+  YYSYMBOL_ext_only_name = 89,             /* ext_only_name  */
+  YYSYMBOL_nested_name = 90,               /* nested_name  */
+  YYSYMBOL_templ = 91,                     /* templ  */
+  YYSYMBOL_template_params = 92,           /* template_params  */
+  YYSYMBOL_template_arg = 93,              /* template_arg  */
+  YYSYMBOL_function_args = 94,             /* function_args  */
+  YYSYMBOL_function_arglist = 95,          /* function_arglist  */
+  YYSYMBOL_qualifiers_opt = 96,            /* qualifiers_opt  */
+  YYSYMBOL_qualifier = 97,                 /* qualifier  */
+  YYSYMBOL_qualifiers = 98,                /* qualifiers  */
+  YYSYMBOL_int_part = 99,                  /* int_part  */
+  YYSYMBOL_int_seq = 100,                  /* int_seq  */
+  YYSYMBOL_builtin_type = 101,             /* builtin_type  */
+  YYSYMBOL_ptr_operator = 102,             /* ptr_operator  */
+  YYSYMBOL_array_indicator = 103,          /* array_indicator  */
+  YYSYMBOL_typespec_2 = 104,               /* typespec_2  */
+  YYSYMBOL_abstract_declarator = 105,      /* abstract_declarator  */
+  YYSYMBOL_direct_abstract_declarator = 106, /* direct_abstract_declarator  */
+  YYSYMBOL_abstract_declarator_fn = 107,   /* abstract_declarator_fn  */
+  YYSYMBOL_type = 108,                     /* type  */
+  YYSYMBOL_declarator = 109,               /* declarator  */
+  YYSYMBOL_direct_declarator = 110,        /* direct_declarator  */
+  YYSYMBOL_declarator_1 = 111,             /* declarator_1  */
+  YYSYMBOL_direct_declarator_1 = 112,      /* direct_declarator_1  */
+  YYSYMBOL_exp = 113,                      /* exp  */
+  YYSYMBOL_exp1 = 114                      /* exp1  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
+
+/* Second part of user prologue.  */
 #line 85 "cp-name-parser.y"
 
 
@@ -437,39 +572,82 @@ cpname_state::make_name (const char *nam
 static int yylex (YYSTYPE *, cpname_state *);
 static void yyerror (cpname_state *, const char *);
 
+#line 576 "cp-name-parser.c.tmp"
 
-/* Line 264 of yacc.c  */
-#line 443 "cp-name-parser.c.tmp"
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
+#else
 typedef signed char yytype_int8;
+#endif
+
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
 #else
-typedef short int yytype_int8;
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef unsigned short int yytype_uint16;
+typedef short yytype_uint8;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
 #else
-typedef short int yytype_int16;
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -477,55 +655,100 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int16 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
 #else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if !defined yyoverflow
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
 
@@ -541,11 +764,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -553,8 +776,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -568,92 +791,93 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined xmalloc) \
-	     && (defined YYFREE || defined xfree)))
+             && (defined YYFREE || defined xfree)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC xmalloc
-#   if ! defined xmalloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xmalloc && ! defined EXIT_SUCCESS
 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE xfree
-#   if ! defined xfree && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xfree && ! defined EXIT_SUCCESS
 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYPTRDIFF_T yynewbytes;                                         \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
+      }                                                                 \
+    while (0)
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYPTRDIFF_T yyi;                      \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  84
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1152
+#define YYLAST   1137
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  75
@@ -661,29 +885,33 @@ union yyalloc
 #define YYNNTS  40
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  195
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  325
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
 #define YYMAXUTOK   307
 
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex.  */
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,    72,     2,     2,     2,    63,    49,     2,
-      73,    41,    61,    59,    42,    60,    67,    62,     2,     2,
+      73,    41,    61,    59,    42,    60,    68,    62,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,    74,     2,
       52,    43,    53,    44,    58,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    68,     2,    70,    48,     2,     2,     2,     2,     2,
+       2,    69,     2,    70,    48,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,    47,     2,    71,     2,     2,     2,
@@ -704,106 +932,12 @@ static const yytype_uint8 yytranslate[]
       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,    45,    46,    50,    51,
-      54,    55,    56,    57,    64,    65,    66,    69
+      54,    55,    56,    57,    64,    65,    66,    67
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     5,     7,     9,    11,    12,    15,    18,
-      22,    26,    29,    32,    35,    40,    43,    46,    51,    56,
-      59,    62,    65,    68,    71,    74,    77,    80,    83,    86,
-      89,    92,    95,    98,   101,   104,   107,   110,   113,   116,
-     119,   122,   125,   128,   131,   135,   138,   142,   146,   149,
-     152,   154,   158,   161,   163,   168,   171,   173,   176,   179,
-     181,   184,   186,   188,   190,   192,   195,   198,   200,   203,
-     207,   210,   214,   219,   221,   225,   227,   230,   233,   238,
-     240,   242,   245,   249,   254,   258,   263,   268,   272,   273,
-     275,   277,   279,   281,   283,   286,   288,   290,   292,   294,
-     296,   298,   300,   303,   305,   307,   309,   312,   314,   316,
-     318,   321,   323,   325,   329,   334,   337,   341,   344,   346,
-     350,   353,   356,   358,   362,   365,   369,   372,   377,   381,
-     383,   386,   388,   392,   395,   398,   400,   402,   405,   407,
-     412,   415,   417,   420,   423,   425,   429,   432,   435,   437,
-     440,   442,   444,   449,   454,   459,   462,   465,   468,   471,
-     475,   477,   481,   484,   489,   492,   495,   498,   503,   511,
-     519,   527,   531,   535,   539,   543,   547,   551,   555,   559,
-     563,   567,   571,   575,   579,   583,   587,   591,   595,   599,
-     603,   609,   611,   613,   618,   620
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      76,     0,    -1,    77,    -1,   108,    -1,    80,    -1,    79,
-      -1,    -1,    12,    77,    -1,   104,   111,    -1,   104,    95,
-      78,    -1,    88,    95,    78,    -1,    83,    78,    -1,    83,
-     107,    -1,    38,    77,    -1,    39,    77,    40,    77,    -1,
-      17,    15,    -1,    17,    16,    -1,    17,    15,    68,    70,
-      -1,    17,    16,    68,    70,    -1,    17,    59,    -1,    17,
-      60,    -1,    17,    61,    -1,    17,    62,    -1,    17,    63,
-      -1,    17,    48,    -1,    17,    49,    -1,    17,    47,    -1,
-      17,    71,    -1,    17,    72,    -1,    17,    43,    -1,    17,
-      52,    -1,    17,    53,    -1,    17,    35,    -1,    17,    57,
-      -1,    17,    56,    -1,    17,    51,    -1,    17,    50,    -1,
-      17,    55,    -1,    17,    54,    -1,    17,    46,    -1,    17,
-      45,    -1,    17,    65,    -1,    17,    64,    -1,    17,    42,
-      -1,    17,    69,    61,    -1,    17,    69,    -1,    17,    73,
-      41,    -1,    17,    68,    70,    -1,    17,   104,    -1,    90,
-      82,    -1,    82,    -1,    12,    90,    82,    -1,    12,    82,
-      -1,    81,    -1,    81,    52,    92,    53,    -1,    71,     5,
-      -1,    86,    -1,    12,    86,    -1,    90,     5,    -1,     5,
-      -1,    90,    91,    -1,    91,    -1,    85,    -1,    88,    -1,
-      89,    -1,    12,    89,    -1,    90,    84,    -1,    84,    -1,
-       5,    12,    -1,    90,     5,    12,    -1,    91,    12,    -1,
-      90,    91,    12,    -1,     5,    52,    92,    53,    -1,    93,
-      -1,    92,    42,    93,    -1,   104,    -1,   104,   105,    -1,
-      49,    77,    -1,    49,    73,    77,    41,    -1,   113,    -1,
-     104,    -1,   104,   105,    -1,    94,    42,   104,    -1,    94,
-      42,   104,   105,    -1,    94,    42,    29,    -1,    73,    94,
-      41,    96,    -1,    73,    31,    41,    96,    -1,    73,    41,
-      96,    -1,    -1,    98,    -1,    30,    -1,    26,    -1,    25,
-      -1,    97,    -1,    97,    98,    -1,    24,    -1,    21,    -1,
-      11,    -1,    33,    -1,    22,    -1,    23,    -1,    99,    -1,
-     100,    99,    -1,   100,    -1,    32,    -1,    27,    -1,    22,
-      27,    -1,    28,    -1,    34,    -1,    31,    -1,    61,    96,
-      -1,    49,    -1,    46,    -1,    90,    61,    96,    -1,    12,
-      90,    61,    96,    -1,    68,    70,    -1,    68,     3,    70,
-      -1,   101,    98,    -1,   101,    -1,    98,   101,    98,    -1,
-      98,   101,    -1,    86,    98,    -1,    86,    -1,    98,    86,
-      98,    -1,    98,    86,    -1,    12,    86,    98,    -1,    12,
-      86,    -1,    98,    12,    86,    98,    -1,    98,    12,    86,
-      -1,   102,    -1,   102,   105,    -1,   106,    -1,    73,   105,
-      41,    -1,   106,    95,    -1,   106,   103,    -1,   103,    -1,
-     102,    -1,   102,   107,    -1,   106,    -1,   106,    95,    12,
-      77,    -1,    95,    78,    -1,   104,    -1,   104,   105,    -1,
-     102,   109,    -1,   110,    -1,    73,   109,    41,    -1,   110,
-      95,    -1,   110,   103,    -1,    87,    -1,   102,   111,    -1,
-      87,    -1,   112,    -1,    87,    95,    12,    77,    -1,   112,
-      95,    12,    77,    -1,    73,   102,   109,    41,    -1,   112,
-      95,    -1,   112,   103,    -1,    87,    95,    -1,    87,   103,
-      -1,    73,   114,    41,    -1,   113,    -1,   113,    53,   113,
-      -1,    49,    77,    -1,    49,    73,    77,    41,    -1,    60,
-     113,    -1,    72,   113,    -1,    71,   113,    -1,    73,   108,
-      41,   113,    -1,    18,    52,   108,    53,    73,   114,    41,
-      -1,    20,    52,   108,    53,    73,   114,    41,    -1,    19,
-      52,   108,    53,    73,   114,    41,    -1,   113,    61,   113,
-      -1,   113,    62,   113,    -1,   113,    63,   113,    -1,   113,
-      59,   113,    -1,   113,    60,   113,    -1,   113,    57,   113,
-      -1,   113,    56,   113,    -1,   113,    51,   113,    -1,   113,
-      50,   113,    -1,   113,    55,   113,    -1,   113,    54,   113,
-      -1,   113,    52,   113,    -1,   113,    49,   113,    -1,   113,
-      48,   113,    -1,   113,    47,   113,    -1,   113,    46,   113,
-      -1,   113,    45,   113,    -1,   113,    69,     5,    -1,   113,
-      67,     5,    -1,   113,    44,   113,    74,   113,    -1,     3,
-      -1,     4,    -1,    10,    73,   108,    41,    -1,    36,    -1,
-      37,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+static const yytype_int16 yyrline[] =
 {
        0,   348,   348,   352,   354,   356,   361,   362,   369,   378,
      385,   389,   392,   411,   413,   417,   423,   429,   435,   441,
@@ -828,39 +962,53 @@ static const yytype_uint16 yyrline[] =
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "INT", "FLOAT", "NAME", "STRUCT",
-  "CLASS", "UNION", "ENUM", "SIZEOF", "UNSIGNED", "COLONCOLON", "TEMPLATE",
-  "ERROR", "NEW", "DELETE", "OPERATOR", "STATIC_CAST", "REINTERPRET_CAST",
-  "DYNAMIC_CAST", "SIGNED_KEYWORD", "LONG", "SHORT", "INT_KEYWORD",
-  "CONST_KEYWORD", "VOLATILE_KEYWORD", "DOUBLE_KEYWORD", "BOOL",
-  "ELLIPSIS", "RESTRICT", "VOID", "FLOAT_KEYWORD", "CHAR", "WCHAR_T",
-  "ASSIGN_MODIFY", "TRUEKEYWORD", "FALSEKEYWORD", "DEMANGLER_SPECIAL",
-  "CONSTRUCTION_VTABLE", "CONSTRUCTION_IN", "')'", "','", "'='", "'?'",
-  "OROR", "ANDAND", "'|'", "'^'", "'&'", "NOTEQUAL", "EQUAL", "'<'", "'>'",
-  "GEQ", "LEQ", "RSH", "LSH", "'@'", "'+'", "'-'", "'*'", "'/'", "'%'",
-  "DECREMENT", "INCREMENT", "UNARY", "'.'", "'['", "ARROW", "']'", "'~'",
-  "'!'", "'('", "':'", "$accept", "result", "start", "start_opt",
-  "function", "demangler_special", "oper", "conversion_op",
-  "conversion_op_name", "unqualified_name", "colon_name", "name",
-  "colon_ext_name", "colon_ext_only", "ext_only_name", "nested_name",
-  "templ", "template_params", "template_arg", "function_args",
-  "function_arglist", "qualifiers_opt", "qualifier", "qualifiers",
-  "int_part", "int_seq", "builtin_type", "ptr_operator", "array_indicator",
-  "typespec_2", "abstract_declarator", "direct_abstract_declarator",
-  "abstract_declarator_fn", "type", "declarator", "direct_declarator",
-  "declarator_1", "direct_declarator_1", "exp", "exp1", 0
+  "\"end of file\"", "error", "\"invalid token\"", "INT", "FLOAT", "NAME",
+  "STRUCT", "CLASS", "UNION", "ENUM", "SIZEOF", "UNSIGNED", "COLONCOLON",
+  "TEMPLATE", "ERROR", "NEW", "DELETE", "OPERATOR", "STATIC_CAST",
+  "REINTERPRET_CAST", "DYNAMIC_CAST", "SIGNED_KEYWORD", "LONG", "SHORT",
+  "INT_KEYWORD", "CONST_KEYWORD", "VOLATILE_KEYWORD", "DOUBLE_KEYWORD",
+  "BOOL", "ELLIPSIS", "RESTRICT", "VOID", "FLOAT_KEYWORD", "CHAR",
+  "WCHAR_T", "ASSIGN_MODIFY", "TRUEKEYWORD", "FALSEKEYWORD",
+  "DEMANGLER_SPECIAL", "CONSTRUCTION_VTABLE", "CONSTRUCTION_IN", "')'",
+  "','", "'='", "'?'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQUAL",
+  "NOTEQUAL", "'<'", "'>'", "LEQ", "GEQ", "LSH", "RSH", "'@'", "'+'",
+  "'-'", "'*'", "'/'", "'%'", "UNARY", "INCREMENT", "DECREMENT", "ARROW",
+  "'.'", "'['", "']'", "'~'", "'!'", "'('", "':'", "$accept", "result",
+  "start", "start_opt", "function", "demangler_special", "oper",
+  "conversion_op", "conversion_op_name", "unqualified_name", "colon_name",
+  "name", "colon_ext_name", "colon_ext_only", "ext_only_name",
+  "nested_name", "templ", "template_params", "template_arg",
+  "function_args", "function_arglist", "qualifiers_opt", "qualifier",
+  "qualifiers", "int_part", "int_seq", "builtin_type", "ptr_operator",
+  "array_indicator", "typespec_2", "abstract_declarator",
+  "direct_abstract_declarator", "abstract_declarator_fn", "type",
+  "declarator", "direct_declarator", "declarator_1", "direct_declarator_1",
+  "exp", "exp1", YY_NULLPTRPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+#ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
@@ -868,64 +1016,63 @@ static const yytype_uint16 yytoknum[] =
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,    41,    44,    61,    63,   296,   297,   124,    94,    38,
      298,   299,    60,    62,   300,   301,   302,   303,    64,    43,
-      45,    42,    47,    37,   304,   305,   306,    46,    91,   307,
+      45,    42,    47,    37,   304,   305,   306,   307,    46,    91,
       93,   126,    33,    40,    58
 };
-# endif
+#endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    75,    76,    77,    77,    77,    78,    78,    79,    79,
-      79,    79,    79,    80,    80,    81,    81,    81,    81,    81,
-      81,    81,    81,    81,    81,    81,    81,    81,    81,    81,
-      81,    81,    81,    81,    81,    81,    81,    81,    81,    81,
-      81,    81,    81,    81,    81,    81,    81,    81,    82,    83,
-      83,    83,    83,    84,    84,    84,    85,    85,    86,    86,
-      86,    86,    87,    87,    88,    88,    89,    89,    90,    90,
-      90,    90,    91,    92,    92,    93,    93,    93,    93,    93,
-      94,    94,    94,    94,    94,    95,    95,    95,    96,    96,
-      97,    97,    97,    98,    98,    99,    99,    99,    99,    99,
-      99,   100,   100,   101,   101,   101,   101,   101,   101,   101,
-     102,   102,   102,   102,   102,   103,   103,   104,   104,   104,
-     104,   104,   104,   104,   104,   104,   104,   104,   104,   105,
-     105,   105,   106,   106,   106,   106,   107,   107,   107,   107,
-     107,   108,   108,   109,   109,   110,   110,   110,   110,   111,
-     111,   111,   111,   111,   112,   112,   112,   112,   112,   113,
-     114,   114,   114,   114,   113,   113,   113,   113,   113,   113,
-     113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
-     113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
-     113,   113,   113,   113,   113,   113
-};
+#define YYPACT_NINF (-187)
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
+
+#define YYTABLE_NINF (-1)
+
+#define yytable_value_is_error(Yyn) \
+  0
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
 {
-       0,     2,     1,     1,     1,     1,     0,     2,     2,     3,
-       3,     2,     2,     2,     4,     2,     2,     4,     4,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     3,     2,     3,     3,     2,     2,
-       1,     3,     2,     1,     4,     2,     1,     2,     2,     1,
-       2,     1,     1,     1,     1,     2,     2,     1,     2,     3,
-       2,     3,     4,     1,     3,     1,     2,     2,     4,     1,
-       1,     2,     3,     4,     3,     4,     4,     3,     0,     1,
-       1,     1,     1,     1,     2,     1,     1,     1,     1,     1,
-       1,     1,     2,     1,     1,     1,     2,     1,     1,     1,
-       2,     1,     1,     3,     4,     2,     3,     2,     1,     3,
-       2,     2,     1,     3,     2,     3,     2,     4,     3,     1,
-       2,     1,     3,     2,     2,     1,     1,     2,     1,     4,
-       2,     1,     2,     2,     1,     3,     2,     2,     1,     2,
-       1,     1,     4,     4,     4,     2,     2,     2,     2,     3,
-       1,     3,     2,     4,     2,     2,     2,     4,     7,     7,
-       7,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       5,     1,     1,     4,     1,     1
+     833,    39,  -187,    42,   540,  -187,   -12,  -187,  -187,  -187,
+    -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,   833,   833,
+      27,    41,  -187,  -187,  -187,     5,  -187,   710,  -187,    36,
+      -5,  -187,    43,    65,    36,   506,  -187,   120,    36,   711,
+    -187,  -187,   329,  -187,    36,  -187,    43,    73,    16,    21,
+    -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,
+    -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,
+    -187,  -187,  -187,    34,    30,  -187,  -187,    64,   115,  -187,
+    -187,  -187,    83,  -187,  -187,   329,    39,   833,  -187,  -187,
+      36,     6,   603,  -187,    12,    65,    98,   750,  -187,   -49,
+    -187,  -187,   857,    98,    70,  -187,  -187,   124,  -187,  -187,
+      73,    36,    36,  -187,  -187,  -187,    48,   860,   603,  -187,
+    -187,   -49,  -187,    23,    98,   720,  -187,   -49,  -187,   -49,
+    -187,  -187,    53,    80,    87,    95,  -187,  -187,   656,   476,
+     476,   476,   428,    10,  -187,   780,   325,  -187,  -187,    79,
+      82,  -187,  -187,  -187,   833,    22,  -187,    28,  -187,  -187,
+      89,  -187,    73,   116,    36,   780,    37,   114,   780,   780,
+     123,    70,    36,   124,   833,  -187,   161,  -187,   166,  -187,
+    -187,  -187,  -187,    36,  -187,  -187,  -187,    50,   729,   168,
+    -187,  -187,   780,  -187,  -187,  -187,   169,  -187,   979,   979,
+     979,   979,   833,  -187,   105,   105,   105,   680,   780,   142,
+     970,   143,   329,  -187,  -187,   476,   476,   476,   476,   476,
+     476,   476,   476,   476,   476,   476,   476,   476,   476,   476,
+     476,   476,   476,   180,   181,  -187,  -187,  -187,  -187,    36,
+    -187,    45,    36,  -187,    36,   949,  -187,  -187,  -187,    51,
+     833,  -187,   729,  -187,   729,   148,   -49,   833,   833,   152,
+     138,   141,   144,   154,   833,  -187,   476,   476,  -187,  -187,
+     890,   993,  1015,  1036,  1056,   359,   753,   753,  1069,  1069,
+    1069,   241,   241,   178,   178,   105,   105,   105,  -187,  -187,
+    -187,  -187,  -187,  -187,   780,  -187,   157,  -187,  -187,  -187,
+    -187,  -187,  -187,  -187,   126,   128,   131,  -187,   164,   105,
+     325,   476,  -187,  -187,   471,   471,   471,  -187,   325,   188,
+     189,   192,  -187,  -187,  -187
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
        0,    59,    97,     0,     0,    96,    99,   100,    95,    92,
@@ -933,9 +1080,9 @@ static const yytype_uint8 yydefact[] =
        0,     0,     2,     5,     4,    53,    50,     6,    67,   122,
        0,    64,     0,    61,    93,     0,   101,   103,   118,   141,
        3,    68,     0,    52,   126,    65,     0,     0,    15,    16,
-      32,    43,    29,    40,    39,    26,    24,    25,    36,    35,
-      30,    31,    38,    37,    34,    33,    19,    20,    21,    22,
-      23,    42,    41,     0,    45,    27,    28,     0,     0,    48,
+      32,    43,    29,    40,    39,    26,    24,    25,    35,    36,
+      30,    31,    37,    38,    33,    34,    19,    20,    21,    22,
+      23,    41,    42,    45,     0,    27,    28,     0,     0,    48,
      106,    13,     0,    55,     1,     0,     0,     0,   112,   111,
       88,     0,     0,    11,     0,     0,     6,   136,   135,   138,
       12,   121,     0,     6,    58,    49,    66,    60,    70,    94,
@@ -943,7 +1090,7 @@ static const yytype_uint8 yydefact[] =
       56,   150,    63,     0,     6,   129,   142,   131,     8,   151,
      191,   192,     0,     0,     0,     0,   194,   195,     0,     0,
        0,     0,     0,     0,    73,    75,    79,   125,    51,     0,
-       0,    47,    44,    46,     0,     0,     7,     0,   110,    89,
+       0,    44,    47,    46,     0,     0,     7,     0,   110,    89,
        0,   115,     0,   109,    88,     0,     0,     0,   129,    80,
        0,     0,    88,     0,     0,   140,     0,   137,   133,   134,
       10,    69,    71,   128,   123,   119,    57,     0,   129,   157,
@@ -955,15 +1102,24 @@ static const yytype_uint8 yydefact[] =
      116,     0,    88,    87,    88,     0,    81,   132,   113,     0,
        0,   127,     0,   148,   129,     0,   144,     0,     0,     0,
        0,     0,     0,     0,     0,   162,     0,     0,   159,    74,
-       0,   187,   186,   185,   184,   183,   179,   178,   182,   181,
-     180,   177,   176,   174,   175,   171,   172,   173,   189,   188,
+       0,   187,   186,   185,   184,   183,   178,   179,   182,   180,
+     181,   176,   177,   174,   175,   171,   172,   173,   188,   189,
      114,    86,    85,    84,    82,   139,     0,   143,   154,   146,
      147,   152,   153,   193,     0,     0,     0,    78,     0,   167,
      161,     0,    83,   145,     0,     0,     0,   163,   190,     0,
        0,     0,   168,   170,   169
 };
 
-/* YYDEFGOTO[NTERM-NUM].  */
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+    -187,  -187,    25,   -66,  -187,  -187,  -187,     3,  -187,   -20,
+    -187,    -1,   -32,    15,     1,     0,   150,   149,    31,  -187,
+     -25,  -156,  -187,   234,   205,  -187,   213,   -17,   -98,   196,
+     -18,   -16,   158,  -129,  -106,  -187,   134,  -187,    -6,  -186
+};
+
+  /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,    21,   156,    93,    23,    24,    25,    26,    27,    28,
@@ -972,107 +1128,56 @@ static const yytype_int16 yydefgoto[] =
      170,   127,   100,    40,   255,   256,   128,   129,   210,   211
 };
 
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -187
-static const yytype_int16 yypact[] =
-{
-     794,    39,  -187,    42,   540,  -187,    -3,  -187,  -187,  -187,
-    -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,   794,   794,
-      27,    41,  -187,  -187,  -187,     5,  -187,   369,  -187,    36,
-      -5,  -187,    43,    65,    36,   506,  -187,   120,    36,   713,
-    -187,  -187,   329,  -187,    36,  -187,    43,    73,    17,    32,
-    -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,
-    -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,  -187,
-    -187,  -187,  -187,    20,    34,  -187,  -187,    64,   105,  -187,
-    -187,  -187,    80,  -187,  -187,   329,    39,   794,  -187,  -187,
-      36,     6,   605,  -187,    12,    65,   111,   712,  -187,   -53,
-    -187,  -187,   818,   111,    70,  -187,  -187,   124,  -187,  -187,
-      73,    36,    36,  -187,  -187,  -187,    48,   821,   605,  -187,
-    -187,   -53,  -187,    23,   111,   721,  -187,   -53,  -187,   -53,
-    -187,  -187,    53,    87,   100,   107,  -187,  -187,   658,   476,
-     476,   476,   428,    10,  -187,   730,   957,  -187,  -187,    62,
-      94,  -187,  -187,  -187,   794,    22,  -187,    28,  -187,  -187,
-      96,  -187,    73,   116,    36,   730,    37,   114,   730,   730,
-     131,    70,    36,   124,   794,  -187,   168,  -187,   166,  -187,
-    -187,  -187,  -187,    36,  -187,  -187,  -187,    50,   722,   169,
-    -187,  -187,   730,  -187,  -187,  -187,   174,  -187,   940,   940,
-     940,   940,   794,  -187,    79,    79,    79,   682,   730,   139,
-     931,   152,   329,  -187,  -187,   476,   476,   476,   476,   476,
-     476,   476,   476,   476,   476,   476,   476,   476,   476,   476,
-     476,   476,   476,   189,   190,  -187,  -187,  -187,  -187,    36,
-    -187,    45,    36,  -187,    36,   910,  -187,  -187,  -187,    51,
-     794,  -187,   722,  -187,   722,   156,   -53,   794,   794,   157,
-     146,   148,   151,   164,   794,  -187,   476,   476,  -187,  -187,
-     851,   981,  1004,  1026,  1047,  1067,  1083,  1083,   323,   323,
-     323,   241,   241,   122,   122,    79,    79,    79,  -187,  -187,
-    -187,  -187,  -187,  -187,   730,  -187,   188,  -187,  -187,  -187,
-    -187,  -187,  -187,  -187,   160,   161,   167,  -187,   198,    79,
-     957,   476,  -187,  -187,   471,   471,   471,  -187,   957,   200,
-     201,   202,  -187,  -187,  -187
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
-{
-    -187,  -187,    25,   -66,  -187,  -187,  -187,     3,  -187,   -20,
-    -187,    -1,   -32,    15,     1,     0,   150,   145,    33,  -187,
-     -25,  -156,  -187,   234,   209,  -187,   213,   -17,   -98,   196,
-     -18,   -16,   158,  -129,  -105,  -187,   134,  -187,    -6,  -186
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -1
-static const yytype_uint16 yytable[] =
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
+static const yytype_int16 yytable[] =
 {
       32,   179,    44,    46,    45,   103,    43,   121,   243,   160,
-      97,    99,   106,   209,   124,    91,   248,   171,    32,    32,
-     102,   126,   125,   190,    80,    22,   106,    94,   104,   179,
+      97,    99,   106,   209,   124,    80,   248,   171,    32,    32,
+      91,   126,   125,   190,   102,    22,   106,    94,   104,   179,
      175,   197,    83,   104,   111,   105,   146,   180,   120,   123,
      117,    84,   104,    81,    82,     4,    44,     1,   104,   148,
      104,    41,   212,     1,   122,   104,   171,    85,   191,     4,
        4,     9,    10,   213,   212,   117,    13,   117,   102,   259,
      260,   261,   262,   172,   178,   238,   161,   108,     1,   146,
       97,    99,   181,   290,   172,   149,   291,   157,   292,   239,
-     151,    42,   166,   121,    20,   152,   189,    94,   172,    20,
-     150,   188,   195,   106,   196,   153,   239,   193,   125,   183,
-     104,   239,   239,    20,    20,   186,   187,    45,   166,    20,
-     154,    20,    42,   174,   120,   123,   198,   214,   319,   320,
-     321,     2,   235,   204,   205,   206,   182,   106,    32,   199,
-     122,     5,   113,     7,     8,    94,   233,   296,   234,   297,
-     193,   246,   200,    16,    32,   244,   245,   242,   300,   201,
-     105,    44,   241,   203,   236,    94,   240,   106,    94,    94,
-     193,   254,   247,    86,    32,   188,   249,    95,   250,   237,
-     266,   257,   107,   230,   231,   232,   258,   120,   123,   233,
-     126,   234,    94,   268,   288,   289,   107,   298,   303,   304,
-      79,   305,    32,   122,   306,   307,   146,    32,    94,   270,
+     150,    42,   166,   121,    20,   151,   189,    94,   172,    20,
+     152,   188,   195,   106,   196,   153,   239,   193,   125,   183,
+     174,   239,   239,    20,    20,   186,   187,    45,   166,    20,
+     104,    20,    42,   154,   120,   123,   198,   214,   319,   320,
+     321,     2,   199,   204,   205,   206,   182,   106,    32,   200,
+     122,     5,   113,     7,     8,    94,   296,   201,   297,   235,
+     193,   246,   236,    16,    32,   244,   245,   242,   300,   240,
+     105,    44,   241,   203,   247,    94,    86,   106,    94,    94,
+     193,   254,   233,   234,    32,   188,   249,    95,   250,   237,
+     257,   258,   107,   266,   268,   288,   289,   120,   123,   298,
+     126,   304,    94,   303,   305,   307,   107,   306,   313,   314,
+      79,   315,    32,   122,   316,   317,   146,    32,    94,   270,
      271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,   286,   287,   263,   107,   313,
-     155,   299,   265,   314,   315,   254,   193,   254,   145,   317,
-     316,   322,   323,   324,   173,   269,   114,    95,   112,     0,
+     281,   282,   283,   284,   285,   286,   287,   263,   107,   322,
+     323,   299,   265,   324,   155,   254,   193,   254,   145,   230,
+     231,   232,   114,   269,   173,   233,   234,    95,   112,     0,
       32,   120,   123,   120,   123,   177,     0,    32,    32,   194,
      309,   310,     0,   101,    32,     0,     0,   122,   109,   122,
        0,     0,   115,   107,     0,   295,   312,     0,   147,     0,
        0,   145,   301,   302,     0,     0,     0,     0,   169,   308,
        0,     0,     0,     0,    94,    95,     0,     0,   169,     0,
-     228,   229,   230,   231,   232,   318,     0,   107,   233,     0,
-     234,     0,     0,     0,   169,    95,   107,     0,    95,    95,
+     228,   229,   230,   231,   232,   318,     0,   107,   233,   234,
+       0,     0,     0,     0,   169,    95,   107,     0,    95,    95,
        0,     0,     0,     0,   159,     0,    95,     0,     0,     0,
        0,     0,   130,   131,     1,     0,     0,   107,   208,   132,
        2,    47,    95,     0,     0,   184,   185,   133,   134,   135,
        5,     6,     7,     8,     9,    10,    11,    12,    95,    13,
-      14,    15,    16,    17,     0,   136,   137,     0,     0,     0,
-       0,     0,     0,     0,    86,     0,     0,     0,   138,   226,
-     227,    87,   228,   229,   230,   231,   232,     0,     0,   139,
-     233,   107,   234,     0,   208,   208,   208,   208,   159,   173,
-     140,   141,   142,     0,     0,     0,   159,     0,   145,     0,
-       0,     0,     0,     0,     0,    88,     0,   251,    89,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      90,   130,   131,     1,     0,     0,     0,    91,   132,     2,
-      47,   294,    92,     0,    95,     0,   133,   134,   135,     5,
+      14,    15,    16,    17,     0,   136,   137,     0,     0,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   138,   224,
+     225,   226,   227,     0,   228,   229,   230,   231,   232,   139,
+       0,   107,   233,   234,   208,   208,   208,   208,   159,   173,
+     140,   141,   142,     0,     0,     0,   159,     0,   145,   221,
+     222,   223,     0,   224,   225,   226,   227,   251,   228,   229,
+     230,   231,   232,     0,     0,     0,   233,   234,     0,     0,
+       0,   130,   131,     1,     0,     0,     0,     0,   132,     2,
+      47,   294,     0,     0,    95,     0,   133,   134,   135,     5,
        6,     7,     8,     9,    10,    11,    12,     0,    13,    14,
       15,    16,    17,     0,   136,   137,     0,     0,     0,     0,
        0,     0,     0,   159,   130,   131,   159,   207,   159,   130,
@@ -1088,111 +1193,109 @@ static const yytype_uint16 yytable[] =
       13,    14,    15,    16,    17,    50,     0,     0,     0,     0,
        0,     0,    51,    52,     0,    53,    54,    55,    56,    57,
       58,    59,    60,    61,    62,    63,    64,    65,     0,    66,
-      67,    68,    69,    70,    71,    72,     0,     0,    73,    74,
-       1,    75,    76,    77,     0,     0,     2,   162,     0,     0,
-       0,     0,     0,     0,     0,     0,     5,     6,     7,     8,
-       9,    10,    11,    12,     0,    13,   163,    15,    16,    17,
-       0,     0,     0,     0,     0,     0,   164,     0,     0,     0,
-       0,    88,     0,     0,    89,     0,     0,     0,     0,     0,
-       0,     0,     0,     1,     0,     0,    90,     0,     0,     2,
-       3,     0,     0,    91,     0,     4,     0,     0,   165,     5,
-       6,     7,     8,     9,    10,    11,    12,     1,    13,    14,
-      15,    16,    17,     2,     3,     0,    18,    19,     0,     4,
-       0,     0,     0,     5,     6,     7,     8,     9,    10,    11,
-      12,     0,    13,    14,    15,    16,    17,    86,     1,     0,
-      18,    19,     0,     0,   176,   116,     1,     1,     0,    20,
-     117,   202,     0,   116,   116,    86,     0,     0,   117,   117,
-       0,     0,   176,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    20,     0,   264,     0,     0,    88,    88,
-       0,    89,    89,     0,     0,     0,     0,    88,    88,     0,
-      89,    89,     0,    90,    90,     0,    88,     0,     0,    89,
-      91,    91,    90,    90,    20,    92,   118,     0,     0,    91,
-      91,    90,    20,    20,   192,   252,     0,     0,    91,     1,
-       0,     0,     0,   165,     0,     2,     3,     0,     0,     0,
-       0,     4,     0,     0,     0,     5,     6,     7,     8,     9,
-      10,    11,    12,     1,    13,    14,    15,    16,    17,     2,
-      47,     0,    18,    19,     0,     0,    48,    49,     0,     5,
-       6,     7,     8,     9,    10,    11,    12,     0,    13,   163,
-      15,    16,    17,     0,     0,     0,    50,     0,     0,   164,
-       0,     0,     0,    51,    52,    20,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,     0,
-      66,    67,    68,    69,    70,    71,    72,     0,     0,    73,
-      74,     0,    75,    76,    77,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,     0,   224,   225,   226,   227,     0,
-     228,   229,   230,   231,   232,     1,     0,     0,   233,     0,
-     234,     2,    47,     0,     0,   311,     0,     0,     0,     0,
-       0,     5,     6,     7,     8,     9,    10,    11,    12,   293,
-      13,    14,    15,    16,    17,     1,     0,     0,     0,     0,
-       0,     2,    47,     0,     0,     0,     0,     0,     0,     0,
+      67,    68,    69,    70,     0,    71,    72,    73,     1,    74,
+       0,    75,    76,    77,     2,   162,     0,     0,     0,     0,
+       0,     0,     0,     0,     5,     6,     7,     8,     9,    10,
+      11,    12,     0,    13,   163,    15,    16,    17,     0,     0,
+       0,     0,     0,     0,   164,     0,     0,     0,     0,    88,
+       0,     0,    89,     0,     0,     0,     0,     0,     0,     0,
+       0,     1,     0,     0,    90,     0,     0,     2,     3,     0,
+       0,     0,    91,     4,     0,     0,   165,     5,     6,     7,
+       8,     9,    10,    11,    12,     1,    13,    14,    15,    16,
+      17,     2,     3,     0,    18,    19,     0,     4,     0,     0,
        0,     5,     6,     7,     8,     9,    10,    11,    12,     0,
-      13,    14,    15,    16,    17,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   267,   224,   225,   226,   227,     0,
-     228,   229,   230,   231,   232,     0,     0,     0,   233,     0,
-     234,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-       0,   224,   225,   226,   227,     0,   228,   229,   230,   231,
-     232,     0,     0,     0,   233,     0,   234,   217,   218,   219,
-     220,   221,   222,   223,     0,   224,   225,   226,   227,     0,
-     228,   229,   230,   231,   232,     0,     0,     0,   233,     0,
-     234,   218,   219,   220,   221,   222,   223,     0,   224,   225,
-     226,   227,     0,   228,   229,   230,   231,   232,     0,     0,
-       0,   233,     0,   234,   219,   220,   221,   222,   223,     0,
-     224,   225,   226,   227,     0,   228,   229,   230,   231,   232,
-       0,     0,     0,   233,     0,   234,   220,   221,   222,   223,
-       0,   224,   225,   226,   227,     0,   228,   229,   230,   231,
-     232,     0,     0,     0,   233,     0,   234,   221,   222,   223,
-       0,   224,   225,   226,   227,     0,   228,   229,   230,   231,
-     232,     0,     0,     0,   233,   223,   234,   224,   225,   226,
+      13,    14,    15,    16,    17,    86,     1,     0,    18,    19,
+       0,     0,    87,   116,     0,     1,     0,    20,   117,   202,
+       0,     0,   116,     0,     1,     0,     0,   117,     0,     0,
+       0,   116,     0,     0,     0,     0,   117,     0,     0,     0,
+       0,    20,     0,   264,     0,    86,    88,    88,     0,    89,
+      89,     0,   176,     0,     0,     0,    88,     0,     0,    89,
+       0,    90,    90,     0,     0,    88,     0,     0,    89,    91,
+      91,    90,    20,    92,   118,    86,     0,     0,     0,    91,
+      90,    20,   176,   192,     0,     0,    88,     0,    91,    89,
+      20,     0,   252,     0,     0,   223,     0,   224,   225,   226,
+     227,    90,   228,   229,   230,   231,   232,     0,     0,    91,
+     233,   234,     0,    92,     0,     0,    88,     0,     0,    89,
+       0,     0,     0,     0,     0,     0,     0,     0,     1,     0,
+       0,    90,     0,     0,     2,     3,     0,     0,     0,    91,
+       4,     0,     0,   165,     5,     6,     7,     8,     9,    10,
+      11,    12,     1,    13,    14,    15,    16,    17,     2,    47,
+       0,    18,    19,     0,     0,    48,    49,     0,     5,     6,
+       7,     8,     9,    10,    11,    12,     0,    13,   163,    15,
+      16,    17,     0,     0,     0,    50,     0,     0,   164,     0,
+       0,     0,    51,    52,    20,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,     0,    66,
+      67,    68,    69,    70,     0,    71,    72,    73,     0,    74,
+       0,    75,    76,    77,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,     0,   224,   225,   226,   227,     0,   228,
+     229,   230,   231,   232,     1,     0,     0,   233,   234,     0,
+       2,    47,     0,     0,   311,     0,     0,     0,     0,     0,
+       5,     6,     7,     8,     9,    10,    11,    12,   293,    13,
+      14,    15,    16,    17,     1,     0,     0,     0,     0,     0,
+       2,    47,     0,     0,     0,     0,     0,     0,     0,     0,
+       5,     6,     7,     8,     9,    10,    11,    12,     0,    13,
+      14,    15,    16,    17,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,   267,   224,   225,   226,   227,     0,   228,
+     229,   230,   231,   232,     0,     0,     0,   233,   234,   217,
+     218,   219,   220,   221,   222,   223,     0,   224,   225,   226,
      227,     0,   228,   229,   230,   231,   232,     0,     0,     0,
-     233,     0,   234
+     233,   234,   218,   219,   220,   221,   222,   223,     0,   224,
+     225,   226,   227,     0,   228,   229,   230,   231,   232,     0,
+       0,     0,   233,   234,   219,   220,   221,   222,   223,     0,
+     224,   225,   226,   227,     0,   228,   229,   230,   231,   232,
+       0,     0,     0,   233,   234,   220,   221,   222,   223,     0,
+     224,   225,   226,   227,     0,   228,   229,   230,   231,   232,
+       0,     0,     0,   233,   234,   226,   227,     0,   228,   229,
+     230,   231,   232,     0,     0,     0,   233,   234
 };
 
 static const yytype_int16 yycheck[] =
 {
        0,    99,     3,     3,     3,    30,     3,    39,   164,     3,
-      27,    27,    32,   142,    39,    68,   172,     5,    18,    19,
-      73,    39,    39,   121,    27,     0,    46,    27,     5,   127,
+      27,    27,    32,   142,    39,    27,   172,     5,    18,    19,
+      69,    39,    39,   121,    73,     0,    46,    27,     5,   127,
       96,   129,     5,     5,    35,    32,    42,   103,    39,    39,
       17,     0,     5,    18,    19,    17,    47,     5,     5,    46,
        5,    12,    42,     5,    39,     5,     5,    52,   124,    17,
       17,    25,    26,    53,    42,    17,    30,    17,    73,   198,
      199,   200,   201,    61,    99,    53,    70,    12,     5,    85,
-      97,    97,    12,   239,    61,    68,   242,    87,   244,    61,
-      70,    52,    92,   125,    71,    61,   121,    97,    61,    71,
-      68,   118,   127,   123,   129,    41,    61,   125,   125,   110,
-       5,    61,    61,    71,    71,   116,   116,   116,   118,    71,
-      40,    71,    52,    12,   125,   125,    73,   145,   314,   315,
-     316,    11,    70,   139,   140,   141,    12,   157,   138,    52,
-     125,    21,    22,    23,    24,   145,    67,   252,    69,   254,
-     168,   169,    52,    33,   154,    41,    42,    41,   256,    52,
-     157,   162,   162,   138,    70,   165,    70,   187,   168,   169,
-     188,   188,    41,     5,   174,   192,   176,    27,    12,   154,
-      41,    12,    32,    61,    62,    63,    12,   188,   188,    67,
-     208,    69,   192,    41,     5,     5,    46,    41,    41,    53,
-       4,    53,   202,   188,    53,    41,   212,   207,   208,   215,
+      97,    97,    12,   239,    61,    69,   242,    87,   244,    61,
+      69,    52,    92,   125,    71,    61,   121,    97,    61,    71,
+      70,   118,   127,   123,   129,    41,    61,   125,   125,   110,
+      12,    61,    61,    71,    71,   116,   116,   116,   118,    71,
+       5,    71,    52,    40,   125,   125,    73,   145,   314,   315,
+     316,    11,    52,   139,   140,   141,    12,   157,   138,    52,
+     125,    21,    22,    23,    24,   145,   252,    52,   254,    70,
+     168,   169,    70,    33,   154,    41,    42,    41,   256,    70,
+     157,   162,   162,   138,    41,   165,     5,   187,   168,   169,
+     188,   188,    67,    68,   174,   192,   176,    27,    12,   154,
+      12,    12,    32,    41,    41,     5,     5,   188,   188,    41,
+     208,    53,   192,    41,    53,    41,    46,    53,    41,    73,
+       4,    73,   202,   188,    73,    41,   212,   207,   208,   215,
      216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
      226,   227,   228,   229,   230,   231,   232,   202,    78,    41,
-      85,   256,   207,    73,    73,   252,   254,   254,    42,    41,
-      73,    41,    41,    41,    94,   212,    37,    97,    35,    -1,
+      41,   256,   207,    41,    85,   252,   254,   254,    42,    61,
+      62,    63,    37,   212,    94,    67,    68,    97,    35,    -1,
      250,   252,   252,   254,   254,    97,    -1,   257,   258,   125,
      266,   267,    -1,    29,   264,    -1,    -1,   252,    34,   254,
       -1,    -1,    38,   123,    -1,   250,   294,    -1,    44,    -1,
       -1,    85,   257,   258,    -1,    -1,    -1,    -1,    92,   264,
       -1,    -1,    -1,    -1,   294,   145,    -1,    -1,   102,    -1,
-      59,    60,    61,    62,    63,   311,    -1,   157,    67,    -1,
-      69,    -1,    -1,    -1,   118,   165,   166,    -1,   168,   169,
+      59,    60,    61,    62,    63,   311,    -1,   157,    67,    68,
+      -1,    -1,    -1,    -1,   118,   165,   166,    -1,   168,   169,
       -1,    -1,    -1,    -1,    90,    -1,   176,    -1,    -1,    -1,
       -1,    -1,     3,     4,     5,    -1,    -1,   187,   142,    10,
       11,    12,   192,    -1,    -1,   111,   112,    18,    19,    20,
       21,    22,    23,    24,    25,    26,    27,    28,   208,    30,
-      31,    32,    33,    34,    -1,    36,    37,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,     5,    -1,    -1,    -1,    49,    56,
-      57,    12,    59,    60,    61,    62,    63,    -1,    -1,    60,
-      67,   241,    69,    -1,   198,   199,   200,   201,   164,   249,
-      71,    72,    73,    -1,    -1,    -1,   172,    -1,   212,    -1,
-      -1,    -1,    -1,    -1,    -1,    46,    -1,   183,    49,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      61,     3,     4,     5,    -1,    -1,    -1,    68,    10,    11,
-      12,   245,    73,    -1,   294,    -1,    18,    19,    20,    21,
+      31,    32,    33,    34,    -1,    36,    37,    -1,    -1,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    49,    54,
+      55,    56,    57,    -1,    59,    60,    61,    62,    63,    60,
+      -1,   241,    67,    68,   198,   199,   200,   201,   164,   249,
+      71,    72,    73,    -1,    -1,    -1,   172,    -1,   212,    50,
+      51,    52,    -1,    54,    55,    56,    57,   183,    59,    60,
+      61,    62,    63,    -1,    -1,    -1,    67,    68,    -1,    -1,
+      -1,     3,     4,     5,    -1,    -1,    -1,    -1,    10,    11,
+      12,   245,    -1,    -1,   294,    -1,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    -1,    30,    31,
       32,    33,    34,    -1,    36,    37,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,   239,     3,     4,   242,    49,   244,     3,
@@ -1208,67 +1311,65 @@ static const yytype_int16 yycheck[] =
       30,    31,    32,    33,    34,    35,    -1,    -1,    -1,    -1,
       -1,    -1,    42,    43,    -1,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    55,    56,    57,    -1,    59,
-      60,    61,    62,    63,    64,    65,    -1,    -1,    68,    69,
-       5,    71,    72,    73,    -1,    -1,    11,    12,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    27,    28,    -1,    30,    31,    32,    33,    34,
-      -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,
-      -1,    46,    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     5,    -1,    -1,    61,    -1,    -1,    11,
-      12,    -1,    -1,    68,    -1,    17,    -1,    -1,    73,    21,
-      22,    23,    24,    25,    26,    27,    28,     5,    30,    31,
-      32,    33,    34,    11,    12,    -1,    38,    39,    -1,    17,
-      -1,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
-      28,    -1,    30,    31,    32,    33,    34,     5,     5,    -1,
-      38,    39,    -1,    -1,    12,    12,     5,     5,    -1,    71,
-      17,    73,    -1,    12,    12,     5,    -1,    -1,    17,    17,
-      -1,    -1,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    71,    -1,    73,    -1,    -1,    46,    46,
-      -1,    49,    49,    -1,    -1,    -1,    -1,    46,    46,    -1,
-      49,    49,    -1,    61,    61,    -1,    46,    -1,    -1,    49,
-      68,    68,    61,    61,    71,    73,    73,    -1,    -1,    68,
-      68,    61,    71,    71,    73,    73,    -1,    -1,    68,     5,
-      -1,    -1,    -1,    73,    -1,    11,    12,    -1,    -1,    -1,
-      -1,    17,    -1,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    28,     5,    30,    31,    32,    33,    34,    11,
-      12,    -1,    38,    39,    -1,    -1,    15,    16,    -1,    21,
-      22,    23,    24,    25,    26,    27,    28,    -1,    30,    31,
-      32,    33,    34,    -1,    -1,    -1,    35,    -1,    -1,    41,
-      -1,    -1,    -1,    42,    43,    71,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
-      59,    60,    61,    62,    63,    64,    65,    -1,    -1,    68,
-      69,    -1,    71,    72,    73,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    -1,    54,    55,    56,    57,    -1,
-      59,    60,    61,    62,    63,     5,    -1,    -1,    67,    -1,
-      69,    11,    12,    -1,    -1,    74,    -1,    -1,    -1,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,     5,    -1,    -1,    -1,    -1,
-      -1,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      60,    61,    62,    63,    -1,    65,    66,    67,     5,    69,
+      -1,    71,    72,    73,    11,    12,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    28,    -1,    30,    31,    32,    33,    34,    -1,    -1,
+      -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,    46,
+      -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,     5,    -1,    -1,    61,    -1,    -1,    11,    12,    -1,
+      -1,    -1,    69,    17,    -1,    -1,    73,    21,    22,    23,
+      24,    25,    26,    27,    28,     5,    30,    31,    32,    33,
+      34,    11,    12,    -1,    38,    39,    -1,    17,    -1,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
-      30,    31,    32,    33,    34,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
-      59,    60,    61,    62,    63,    -1,    -1,    -1,    67,    -1,
-      69,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      -1,    54,    55,    56,    57,    -1,    59,    60,    61,    62,
-      63,    -1,    -1,    -1,    67,    -1,    69,    46,    47,    48,
-      49,    50,    51,    52,    -1,    54,    55,    56,    57,    -1,
-      59,    60,    61,    62,    63,    -1,    -1,    -1,    67,    -1,
-      69,    47,    48,    49,    50,    51,    52,    -1,    54,    55,
-      56,    57,    -1,    59,    60,    61,    62,    63,    -1,    -1,
-      -1,    67,    -1,    69,    48,    49,    50,    51,    52,    -1,
-      54,    55,    56,    57,    -1,    59,    60,    61,    62,    63,
-      -1,    -1,    -1,    67,    -1,    69,    49,    50,    51,    52,
-      -1,    54,    55,    56,    57,    -1,    59,    60,    61,    62,
-      63,    -1,    -1,    -1,    67,    -1,    69,    50,    51,    52,
-      -1,    54,    55,    56,    57,    -1,    59,    60,    61,    62,
-      63,    -1,    -1,    -1,    67,    52,    69,    54,    55,    56,
+      30,    31,    32,    33,    34,     5,     5,    -1,    38,    39,
+      -1,    -1,    12,    12,    -1,     5,    -1,    71,    17,    73,
+      -1,    -1,    12,    -1,     5,    -1,    -1,    17,    -1,    -1,
+      -1,    12,    -1,    -1,    -1,    -1,    17,    -1,    -1,    -1,
+      -1,    71,    -1,    73,    -1,     5,    46,    46,    -1,    49,
+      49,    -1,    12,    -1,    -1,    -1,    46,    -1,    -1,    49,
+      -1,    61,    61,    -1,    -1,    46,    -1,    -1,    49,    69,
+      69,    61,    71,    73,    73,     5,    -1,    -1,    -1,    69,
+      61,    71,    12,    73,    -1,    -1,    46,    -1,    69,    49,
+      71,    -1,    73,    -1,    -1,    52,    -1,    54,    55,    56,
+      57,    61,    59,    60,    61,    62,    63,    -1,    -1,    69,
+      67,    68,    -1,    73,    -1,    -1,    46,    -1,    -1,    49,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,    -1,
+      -1,    61,    -1,    -1,    11,    12,    -1,    -1,    -1,    69,
+      17,    -1,    -1,    73,    21,    22,    23,    24,    25,    26,
+      27,    28,     5,    30,    31,    32,    33,    34,    11,    12,
+      -1,    38,    39,    -1,    -1,    15,    16,    -1,    21,    22,
+      23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
+      33,    34,    -1,    -1,    -1,    35,    -1,    -1,    41,    -1,
+      -1,    -1,    42,    43,    71,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    -1,    59,
+      60,    61,    62,    63,    -1,    65,    66,    67,    -1,    69,
+      -1,    71,    72,    73,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    -1,    54,    55,    56,    57,    -1,    59,
+      60,    61,    62,    63,     5,    -1,    -1,    67,    68,    -1,
+      11,    12,    -1,    -1,    74,    -1,    -1,    -1,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,     5,    -1,    -1,    -1,    -1,    -1,
+      11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    28,    -1,    30,
+      31,    32,    33,    34,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    57,    -1,    59,
+      60,    61,    62,    63,    -1,    -1,    -1,    67,    68,    46,
+      47,    48,    49,    50,    51,    52,    -1,    54,    55,    56,
       57,    -1,    59,    60,    61,    62,    63,    -1,    -1,    -1,
-      67,    -1,    69
+      67,    68,    47,    48,    49,    50,    51,    52,    -1,    54,
+      55,    56,    57,    -1,    59,    60,    61,    62,    63,    -1,
+      -1,    -1,    67,    68,    48,    49,    50,    51,    52,    -1,
+      54,    55,    56,    57,    -1,    59,    60,    61,    62,    63,
+      -1,    -1,    -1,    67,    68,    49,    50,    51,    52,    -1,
+      54,    55,    56,    57,    -1,    59,    60,    61,    62,    63,
+      -1,    -1,    -1,    67,    68,    56,    57,    -1,    59,    60,
+      61,    62,    63,    -1,    -1,    -1,    67,    68
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
+static const yytype_int8 yystos[] =
 {
        0,     5,    11,    12,    17,    21,    22,    23,    24,    25,
       26,    27,    28,    30,    31,    32,    33,    34,    38,    39,
@@ -1277,15 +1378,15 @@ static const yytype_uint8 yystos[] =
      108,    12,    52,    82,    86,    89,    90,    12,    15,    16,
       35,    42,    43,    45,    46,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    59,    60,    61,    62,
-      63,    64,    65,    68,    69,    71,    72,    73,    90,   104,
+      63,    65,    66,    67,    69,    71,    72,    73,    90,   104,
       27,    77,    77,     5,     0,    52,     5,    12,    46,    49,
-      61,    68,    73,    78,    90,    91,    95,   102,   103,   106,
+      61,    69,    73,    78,    90,    91,    95,   102,   103,   106,
      107,    98,    73,    95,     5,    82,    84,    91,    12,    98,
       12,    86,   101,    22,    99,    98,    12,    17,    73,    85,
       86,    87,    88,    90,    95,   102,   105,   106,   111,   112,
        3,     4,    10,    18,    19,    20,    36,    37,    49,    60,
-      71,    72,    73,    92,    93,   104,   113,    98,    82,    68,
-      68,    70,    61,    41,    40,    92,    77,    90,    96,    98,
+      71,    72,    73,    92,    93,   104,   113,    98,    82,    69,
+      69,    61,    70,    41,    40,    92,    77,    90,    96,    98,
        3,    70,    12,    31,    41,    73,    90,    94,   102,   104,
      105,     5,    61,    91,    12,    78,    12,   107,    95,   103,
       78,    12,    12,    86,    98,    98,    86,    90,   102,    95,
@@ -1293,7 +1394,7 @@ static const yytype_uint8 yystos[] =
       52,    52,    73,    77,   113,   113,   113,    49,   104,   108,
      113,   114,    42,    53,   105,    44,    45,    46,    47,    48,
       49,    50,    51,    52,    54,    55,    56,    57,    59,    60,
-      61,    62,    63,    67,    69,    70,    70,    77,    53,    61,
+      61,    62,    63,    67,    68,    70,    70,    77,    53,    61,
       70,    90,    41,    96,    41,    42,   105,    41,    96,    90,
       12,    98,    73,    87,   102,   109,   110,    12,    12,   108,
      108,   108,   108,    77,    73,    77,    41,    53,    41,    93,
@@ -1305,181 +1406,159 @@ static const yytype_uint8 yystos[] =
      114,   114,    41,    41,    41
 };
 
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_int8 yyr1[] =
+{
+       0,    75,    76,    77,    77,    77,    78,    78,    79,    79,
+      79,    79,    79,    80,    80,    81,    81,    81,    81,    81,
+      81,    81,    81,    81,    81,    81,    81,    81,    81,    81,
+      81,    81,    81,    81,    81,    81,    81,    81,    81,    81,
+      81,    81,    81,    81,    81,    81,    81,    81,    82,    83,
+      83,    83,    83,    84,    84,    84,    85,    85,    86,    86,
+      86,    86,    87,    87,    88,    88,    89,    89,    90,    90,
+      90,    90,    91,    92,    92,    93,    93,    93,    93,    93,
+      94,    94,    94,    94,    94,    95,    95,    95,    96,    96,
+      97,    97,    97,    98,    98,    99,    99,    99,    99,    99,
+      99,   100,   100,   101,   101,   101,   101,   101,   101,   101,
+     102,   102,   102,   102,   102,   103,   103,   104,   104,   104,
+     104,   104,   104,   104,   104,   104,   104,   104,   104,   105,
+     105,   105,   106,   106,   106,   106,   107,   107,   107,   107,
+     107,   108,   108,   109,   109,   110,   110,   110,   110,   111,
+     111,   111,   111,   111,   112,   112,   112,   112,   112,   113,
+     114,   114,   114,   114,   113,   113,   113,   113,   113,   113,
+     113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
+     113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
+     113,   113,   113,   113,   113,   113
+};
 
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_int8 yyr2[] =
+{
+       0,     2,     1,     1,     1,     1,     0,     2,     2,     3,
+       3,     2,     2,     2,     4,     2,     2,     4,     4,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,     3,     3,     2,     2,
+       1,     3,     2,     1,     4,     2,     1,     2,     2,     1,
+       2,     1,     1,     1,     1,     2,     2,     1,     2,     3,
+       2,     3,     4,     1,     3,     1,     2,     2,     4,     1,
+       1,     2,     3,     4,     3,     4,     4,     3,     0,     1,
+       1,     1,     1,     1,     2,     1,     1,     1,     1,     1,
+       1,     1,     2,     1,     1,     1,     2,     1,     1,     1,
+       2,     1,     1,     3,     4,     2,     3,     2,     1,     3,
+       2,     2,     1,     3,     2,     3,     2,     4,     3,     1,
+       2,     1,     3,     2,     2,     1,     1,     2,     1,     4,
+       2,     1,     2,     2,     1,     3,     2,     2,     1,     2,
+       1,     1,     4,     4,     4,     2,     2,     2,     2,     3,
+       1,     3,     2,     4,     2,     2,     2,     4,     7,     7,
+       7,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       5,     1,     1,     4,     1,     1
+};
 
 
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+enum { YYENOMEM = -2 };
 
-#define YYFAIL		goto yyerrlab
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
 
-#define YYRECOVERING()  (!!yyerrstatus)
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
-      yyerror (state, YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
 
+#define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYTERROR	1
-#define YYERRCODE	256
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (state, YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
+
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
 
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
+/* Enable debugging if requested.  */
+#if YYDEBUG
 
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
 
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+# ifndef YY_LOCATION_PRINT
 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
 # endif
-#endif
 
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Kind, Value, state); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
 
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, YYLEX_PARAM)
-#else
-# define YYLEX yylex (&yylval, state)
-#endif
-
-/* Enable debugging if requested.  */
-#if YYDEBUG
 
-# ifndef YYFPRINTF
-#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYFPRINTF fprintf
-# endif
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value, state); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct cpname_state *state)
-#else
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep, state)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-    struct cpname_state *state;
-#endif
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct cpname_state *state)
 {
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
+  YYUSE (state);
   if (!yyvaluep)
     return;
-  YYUSE (state);
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct cpname_state *state)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep, state)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-    struct cpname_state *state;
-#endif
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct cpname_state *state)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep, state);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yykind, yyvaluep, state);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -1487,16 +1566,8 @@ yy_symbol_print (yyoutput, yytype, yyval
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
 static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1507,64 +1578,56 @@ yy_stack_print (yybottom, yytop)
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule, struct cpname_state *state)
-#else
 static void
-yy_reduce_print (yyvsp, yyrule, state)
-    YYSTYPE *yyvsp;
-    int yyrule;
-    struct cpname_state *state;
-#endif
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule, struct cpname_state *state)
 {
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       , state);
+      yy_symbol_print (stderr,
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)], state);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule, state); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule, state); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1579,343 +1642,89 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
 
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
 
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
-
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
 
-  if (! yyres)
-    return yystrlen (yystr);
 
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct cpname_state *state)
-#else
 static void
-yydestruct (yymsg, yytype, yyvaluep, state)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-    struct cpname_state *state;
-#endif
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep, struct cpname_state *state)
 {
   YYUSE (yyvaluep);
   YYUSE (state);
-
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  switch (yytype)
-    {
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (struct cpname_state *state);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
 
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
+/*----------.
+| yyparse.  |
+`----------*/
 
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 int
 yyparse (struct cpname_state *state)
-#else
-int
-yyparse (state)
-    struct cpname_state *state;
-#endif
-#endif
 {
 /* The lookahead symbol.  */
 int yychar;
 
+
 /* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval;
+/* Default value used for initialization, for pacifying older GCCs
+   or non-GCC compilers.  */
+YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
+YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
 
     /* Number of syntax errors so far.  */
     int yynerrs;
 
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to xreallocate them elsewhere.  */
 
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize;
+
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
-
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -1923,133 +1732,147 @@ YYSTYPE yylval;
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
   yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
-	/* Give user a chance to xreallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        yy_state_t *yyss1 = yyss;
+        YYSTYPE *yyvs1 = yyvs;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
+                    &yystacksize);
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yy_state_t *yyss1 = yyss;
+        union yyalloc *yyptr =
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      YYDPRINTF ((stderr, "Reading a token\n"));
+      yychar = yylex (&yylval, state);
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -2064,8 +1887,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -2077,13 +1900,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -2098,14 +1921,14 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -2118,1504 +1941,1309 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 2:
-
-/* Line 1455 of yacc.c  */
+  case 2:
 #line 349 "cp-name-parser.y"
-    { state->global_result = (yyvsp[(1) - (1)].comp); }
+                        { state->global_result = (yyvsp[0].comp); }
+#line 1949 "cp-name-parser.c.tmp"
     break;
 
   case 6:
-
-/* Line 1455 of yacc.c  */
 #line 361 "cp-name-parser.y"
-    { (yyval.comp) = NULL; }
+                        { (yyval.comp) = NULL; }
+#line 1955 "cp-name-parser.c.tmp"
     break;
 
   case 7:
-
-/* Line 1455 of yacc.c  */
 #line 363 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(2) - (2)].comp); }
+                        { (yyval.comp) = (yyvsp[0].comp); }
+#line 1961 "cp-name-parser.c.tmp"
     break;
 
   case 8:
-
-/* Line 1455 of yacc.c  */
 #line 370 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(2) - (2)].nested).comp;
-			  *(yyvsp[(2) - (2)].nested).last = (yyvsp[(1) - (2)].comp);
+                        { (yyval.comp) = (yyvsp[0].nested).comp;
+			  *(yyvsp[0].nested).last = (yyvsp[-1].comp);
 			}
+#line 1969 "cp-name-parser.c.tmp"
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
 #line 379 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME,
-					  (yyvsp[(1) - (3)].comp), (yyvsp[(2) - (3)].nested).comp);
-			  if ((yyvsp[(3) - (3)].comp))
+                        { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME,
+					  (yyvsp[-2].comp), (yyvsp[-1].nested).comp);
+			  if ((yyvsp[0].comp))
 			    (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME,
-						   (yyval.comp), (yyvsp[(3) - (3)].comp));
+						   (yyval.comp), (yyvsp[0].comp));
 			}
+#line 1980 "cp-name-parser.c.tmp"
     break;
 
   case 10:
-
-/* Line 1455 of yacc.c  */
 #line 386 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[(1) - (3)].comp), (yyvsp[(2) - (3)].nested).comp);
-			  if ((yyvsp[(3) - (3)].comp)) (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME, (yyval.comp), (yyvsp[(3) - (3)].comp)); }
+                        { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[-2].comp), (yyvsp[-1].nested).comp);
+			  if ((yyvsp[0].comp)) (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME, (yyval.comp), (yyvsp[0].comp)); }
+#line 1987 "cp-name-parser.c.tmp"
     break;
 
   case 11:
-
-/* Line 1455 of yacc.c  */
 #line 390 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(1) - (2)].nested).comp;
-			  if ((yyvsp[(2) - (2)].comp)) (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME, (yyval.comp), (yyvsp[(2) - (2)].comp)); }
+                        { (yyval.comp) = (yyvsp[-1].nested).comp;
+			  if ((yyvsp[0].comp)) (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME, (yyval.comp), (yyvsp[0].comp)); }
+#line 1994 "cp-name-parser.c.tmp"
     break;
 
   case 12:
-
-/* Line 1455 of yacc.c  */
 #line 393 "cp-name-parser.y"
-    { if ((yyvsp[(2) - (2)].abstract).last)
+                        { if ((yyvsp[0].abstract).last)
 			    {
 			       /* First complete the abstract_declarator's type using
 				  the typespec from the conversion_op_name.  */
-			      *(yyvsp[(2) - (2)].abstract).last = *(yyvsp[(1) - (2)].nested).last;
+			      *(yyvsp[0].abstract).last = *(yyvsp[-1].nested).last;
 			      /* Then complete the conversion_op_name with the type.  */
-			      *(yyvsp[(1) - (2)].nested).last = (yyvsp[(2) - (2)].abstract).comp;
+			      *(yyvsp[-1].nested).last = (yyvsp[0].abstract).comp;
 			    }
 			  /* If we have an arglist, build a function type.  */
-			  if ((yyvsp[(2) - (2)].abstract).fn.comp)
-			    (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[(1) - (2)].nested).comp, (yyvsp[(2) - (2)].abstract).fn.comp);
+			  if ((yyvsp[0].abstract).fn.comp)
+			    (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[-1].nested).comp, (yyvsp[0].abstract).fn.comp);
 			  else
-			    (yyval.comp) = (yyvsp[(1) - (2)].nested).comp;
-			  if ((yyvsp[(2) - (2)].abstract).start) (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME, (yyval.comp), (yyvsp[(2) - (2)].abstract).start);
+			    (yyval.comp) = (yyvsp[-1].nested).comp;
+			  if ((yyvsp[0].abstract).start) (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME, (yyval.comp), (yyvsp[0].abstract).start);
 			}
+#line 2014 "cp-name-parser.c.tmp"
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
 #line 412 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp ((enum demangle_component_type) (yyvsp[(1) - (2)].lval), (yyvsp[(2) - (2)].comp), NULL); }
+                        { (yyval.comp) = state->fill_comp ((enum demangle_component_type) (yyvsp[-1].lval), (yyvsp[0].comp), NULL); }
+#line 2020 "cp-name-parser.c.tmp"
     break;
 
   case 14:
-
-/* Line 1455 of yacc.c  */
 #line 414 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE, (yyvsp[(2) - (4)].comp), (yyvsp[(4) - (4)].comp)); }
+                        { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE, (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 2026 "cp-name-parser.c.tmp"
     break;
 
   case 15:
-
-/* Line 1455 of yacc.c  */
 #line 418 "cp-name-parser.y"
-    {
+                        {
 			  /* Match the whitespacing of cplus_demangle_operators.
 			     It would abort on unrecognized string otherwise.  */
 			  (yyval.comp) = state->make_operator ("new", 3);
 			}
+#line 2036 "cp-name-parser.c.tmp"
     break;
 
   case 16:
-
-/* Line 1455 of yacc.c  */
 #line 424 "cp-name-parser.y"
-    {
+                        {
 			  /* Match the whitespacing of cplus_demangle_operators.
 			     It would abort on unrecognized string otherwise.  */
 			  (yyval.comp) = state->make_operator ("delete ", 1);
 			}
+#line 2046 "cp-name-parser.c.tmp"
     break;
 
   case 17:
-
-/* Line 1455 of yacc.c  */
 #line 430 "cp-name-parser.y"
-    {
+                        {
 			  /* Match the whitespacing of cplus_demangle_operators.
 			     It would abort on unrecognized string otherwise.  */
 			  (yyval.comp) = state->make_operator ("new[]", 3);
 			}
+#line 2056 "cp-name-parser.c.tmp"
     break;
 
   case 18:
-
-/* Line 1455 of yacc.c  */
 #line 436 "cp-name-parser.y"
-    {
+                        {
 			  /* Match the whitespacing of cplus_demangle_operators.
 			     It would abort on unrecognized string otherwise.  */
 			  (yyval.comp) = state->make_operator ("delete[] ", 1);
 			}
+#line 2066 "cp-name-parser.c.tmp"
     break;
 
   case 19:
-
-/* Line 1455 of yacc.c  */
 #line 442 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("+", 2); }
+                        { (yyval.comp) = state->make_operator ("+", 2); }
+#line 2072 "cp-name-parser.c.tmp"
     break;
 
   case 20:
-
-/* Line 1455 of yacc.c  */
 #line 444 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("-", 2); }
+                        { (yyval.comp) = state->make_operator ("-", 2); }
+#line 2078 "cp-name-parser.c.tmp"
     break;
 
   case 21:
-
-/* Line 1455 of yacc.c  */
 #line 446 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("*", 2); }
+                        { (yyval.comp) = state->make_operator ("*", 2); }
+#line 2084 "cp-name-parser.c.tmp"
     break;
 
   case 22:
-
-/* Line 1455 of yacc.c  */
 #line 448 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("/", 2); }
+                        { (yyval.comp) = state->make_operator ("/", 2); }
+#line 2090 "cp-name-parser.c.tmp"
     break;
 
   case 23:
-
-/* Line 1455 of yacc.c  */
 #line 450 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("%", 2); }
+                        { (yyval.comp) = state->make_operator ("%", 2); }
+#line 2096 "cp-name-parser.c.tmp"
     break;
 
   case 24:
-
-/* Line 1455 of yacc.c  */
 #line 452 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("^", 2); }
+                        { (yyval.comp) = state->make_operator ("^", 2); }
+#line 2102 "cp-name-parser.c.tmp"
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
 #line 454 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("&", 2); }
+                        { (yyval.comp) = state->make_operator ("&", 2); }
+#line 2108 "cp-name-parser.c.tmp"
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
 #line 456 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("|", 2); }
+                        { (yyval.comp) = state->make_operator ("|", 2); }
+#line 2114 "cp-name-parser.c.tmp"
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
 #line 458 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("~", 1); }
+                        { (yyval.comp) = state->make_operator ("~", 1); }
+#line 2120 "cp-name-parser.c.tmp"
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
 #line 460 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("!", 1); }
+                        { (yyval.comp) = state->make_operator ("!", 1); }
+#line 2126 "cp-name-parser.c.tmp"
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
 #line 462 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("=", 2); }
+                        { (yyval.comp) = state->make_operator ("=", 2); }
+#line 2132 "cp-name-parser.c.tmp"
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
 #line 464 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("<", 2); }
+                        { (yyval.comp) = state->make_operator ("<", 2); }
+#line 2138 "cp-name-parser.c.tmp"
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
 #line 466 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator (">", 2); }
+                        { (yyval.comp) = state->make_operator (">", 2); }
+#line 2144 "cp-name-parser.c.tmp"
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
 #line 468 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ((yyvsp[(2) - (2)].opname), 2); }
+                        { (yyval.comp) = state->make_operator ((yyvsp[0].opname), 2); }
+#line 2150 "cp-name-parser.c.tmp"
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
 #line 470 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("<<", 2); }
+                        { (yyval.comp) = state->make_operator ("<<", 2); }
+#line 2156 "cp-name-parser.c.tmp"
     break;
 
   case 34:
-
-/* Line 1455 of yacc.c  */
 #line 472 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator (">>", 2); }
+                        { (yyval.comp) = state->make_operator (">>", 2); }
+#line 2162 "cp-name-parser.c.tmp"
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
 #line 474 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("==", 2); }
+                        { (yyval.comp) = state->make_operator ("==", 2); }
+#line 2168 "cp-name-parser.c.tmp"
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
 #line 476 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("!=", 2); }
+                        { (yyval.comp) = state->make_operator ("!=", 2); }
+#line 2174 "cp-name-parser.c.tmp"
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
 #line 478 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("<=", 2); }
+                        { (yyval.comp) = state->make_operator ("<=", 2); }
+#line 2180 "cp-name-parser.c.tmp"
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
 #line 480 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator (">=", 2); }
+                        { (yyval.comp) = state->make_operator (">=", 2); }
+#line 2186 "cp-name-parser.c.tmp"
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
 #line 482 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("&&", 2); }
+                        { (yyval.comp) = state->make_operator ("&&", 2); }
+#line 2192 "cp-name-parser.c.tmp"
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
 #line 484 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("||", 2); }
+                        { (yyval.comp) = state->make_operator ("||", 2); }
+#line 2198 "cp-name-parser.c.tmp"
     break;
 
   case 41:
-
-/* Line 1455 of yacc.c  */
 #line 486 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("++", 1); }
+                        { (yyval.comp) = state->make_operator ("++", 1); }
+#line 2204 "cp-name-parser.c.tmp"
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
 #line 488 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("--", 1); }
+                        { (yyval.comp) = state->make_operator ("--", 1); }
+#line 2210 "cp-name-parser.c.tmp"
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
 #line 490 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator (",", 2); }
+                        { (yyval.comp) = state->make_operator (",", 2); }
+#line 2216 "cp-name-parser.c.tmp"
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
 #line 492 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("->*", 2); }
+                        { (yyval.comp) = state->make_operator ("->*", 2); }
+#line 2222 "cp-name-parser.c.tmp"
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
 #line 494 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("->", 2); }
+                        { (yyval.comp) = state->make_operator ("->", 2); }
+#line 2228 "cp-name-parser.c.tmp"
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
 #line 496 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("()", 2); }
+                        { (yyval.comp) = state->make_operator ("()", 2); }
+#line 2234 "cp-name-parser.c.tmp"
     break;
 
   case 47:
-
-/* Line 1455 of yacc.c  */
 #line 498 "cp-name-parser.y"
-    { (yyval.comp) = state->make_operator ("[]", 2); }
+                        { (yyval.comp) = state->make_operator ("[]", 2); }
+#line 2240 "cp-name-parser.c.tmp"
     break;
 
   case 48:
-
-/* Line 1455 of yacc.c  */
 #line 506 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_CONVERSION, (yyvsp[(2) - (2)].comp), NULL); }
+                        { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_CONVERSION, (yyvsp[0].comp), NULL); }
+#line 2246 "cp-name-parser.c.tmp"
     break;
 
   case 49:
-
-/* Line 1455 of yacc.c  */
 #line 511 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(1) - (2)].nested1).comp;
-			  d_right ((yyvsp[(1) - (2)].nested1).last) = (yyvsp[(2) - (2)].comp);
-			  (yyval.nested).last = &d_left ((yyvsp[(2) - (2)].comp));
+                        { (yyval.nested).comp = (yyvsp[-1].nested1).comp;
+			  d_right ((yyvsp[-1].nested1).last) = (yyvsp[0].comp);
+			  (yyval.nested).last = &d_left ((yyvsp[0].comp));
 			}
+#line 2255 "cp-name-parser.c.tmp"
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
 #line 516 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(1) - (1)].comp);
-			  (yyval.nested).last = &d_left ((yyvsp[(1) - (1)].comp));
+                        { (yyval.nested).comp = (yyvsp[0].comp);
+			  (yyval.nested).last = &d_left ((yyvsp[0].comp));
 			}
+#line 2263 "cp-name-parser.c.tmp"
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
 #line 520 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(2) - (3)].nested1).comp;
-			  d_right ((yyvsp[(2) - (3)].nested1).last) = (yyvsp[(3) - (3)].comp);
-			  (yyval.nested).last = &d_left ((yyvsp[(3) - (3)].comp));
+                        { (yyval.nested).comp = (yyvsp[-1].nested1).comp;
+			  d_right ((yyvsp[-1].nested1).last) = (yyvsp[0].comp);
+			  (yyval.nested).last = &d_left ((yyvsp[0].comp));
 			}
+#line 2272 "cp-name-parser.c.tmp"
     break;
 
   case 52:
-
-/* Line 1455 of yacc.c  */
 #line 525 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(2) - (2)].comp);
-			  (yyval.nested).last = &d_left ((yyvsp[(2) - (2)].comp));
+                        { (yyval.nested).comp = (yyvsp[0].comp);
+			  (yyval.nested).last = &d_left ((yyvsp[0].comp));
 			}
+#line 2280 "cp-name-parser.c.tmp"
     break;
 
   case 54:
-
-/* Line 1455 of yacc.c  */
 #line 534 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TEMPLATE, (yyvsp[(1) - (4)].comp), (yyvsp[(3) - (4)].nested).comp); }
+                        { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TEMPLATE, (yyvsp[-3].comp), (yyvsp[-1].nested).comp); }
+#line 2286 "cp-name-parser.c.tmp"
     break;
 
   case 55:
-
-/* Line 1455 of yacc.c  */
 #line 536 "cp-name-parser.y"
-    { (yyval.comp) = state->make_dtor (gnu_v3_complete_object_dtor, (yyvsp[(2) - (2)].comp)); }
+                        { (yyval.comp) = state->make_dtor (gnu_v3_complete_object_dtor, (yyvsp[0].comp)); }
+#line 2292 "cp-name-parser.c.tmp"
     break;
 
   case 57:
-
-/* Line 1455 of yacc.c  */
 #line 549 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(2) - (2)].comp); }
+                        { (yyval.comp) = (yyvsp[0].comp); }
+#line 2298 "cp-name-parser.c.tmp"
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
 #line 555 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(1) - (2)].nested1).comp; d_right ((yyvsp[(1) - (2)].nested1).last) = (yyvsp[(2) - (2)].comp); }
+                        { (yyval.comp) = (yyvsp[-1].nested1).comp; d_right ((yyvsp[-1].nested1).last) = (yyvsp[0].comp); }
+#line 2304 "cp-name-parser.c.tmp"
     break;
 
   case 60:
-
-/* Line 1455 of yacc.c  */
 #line 558 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(1) - (2)].nested1).comp; d_right ((yyvsp[(1) - (2)].nested1).last) = (yyvsp[(2) - (2)].comp); }
+                        { (yyval.comp) = (yyvsp[-1].nested1).comp; d_right ((yyvsp[-1].nested1).last) = (yyvsp[0].comp); }
+#line 2310 "cp-name-parser.c.tmp"
     break;
 
   case 65:
-
-/* Line 1455 of yacc.c  */
 #line 568 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(2) - (2)].comp); }
+                        { (yyval.comp) = (yyvsp[0].comp); }
+#line 2316 "cp-name-parser.c.tmp"
     break;
 
   case 66:
-
-/* Line 1455 of yacc.c  */
 #line 572 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(1) - (2)].nested1).comp; d_right ((yyvsp[(1) - (2)].nested1).last) = (yyvsp[(2) - (2)].comp); }
+                        { (yyval.comp) = (yyvsp[-1].nested1).comp; d_right ((yyvsp[-1].nested1).last) = (yyvsp[0].comp); }
+#line 2322 "cp-name-parser.c.tmp"
     break;
 
   case 68:
-
-/* Line 1455 of yacc.c  */
 #line 577 "cp-name-parser.y"
-    { (yyval.nested1).comp = state->fill_comp (DEMANGLE_COMPONENT_QUAL_NAME, (yyvsp[(1) - (2)].comp), NULL);
+                        { (yyval.nested1).comp = state->fill_comp (DEMANGLE_COMPONENT_QUAL_NAME, (yyvsp[-1].comp), NULL);
 			  (yyval.nested1).last = (yyval.nested1).comp;
 			}
+#line 2330 "cp-name-parser.c.tmp"
     break;
 
   case 69:
-
-/* Line 1455 of yacc.c  */
 #line 581 "cp-name-parser.y"
-    { (yyval.nested1).comp = (yyvsp[(1) - (3)].nested1).comp;
-			  d_right ((yyvsp[(1) - (3)].nested1).last) = state->fill_comp (DEMANGLE_COMPONENT_QUAL_NAME, (yyvsp[(2) - (3)].comp), NULL);
-			  (yyval.nested1).last = d_right ((yyvsp[(1) - (3)].nested1).last);
+                        { (yyval.nested1).comp = (yyvsp[-2].nested1).comp;
+			  d_right ((yyvsp[-2].nested1).last) = state->fill_comp (DEMANGLE_COMPONENT_QUAL_NAME, (yyvsp[-1].comp), NULL);
+			  (yyval.nested1).last = d_right ((yyvsp[-2].nested1).last);
 			}
+#line 2339 "cp-name-parser.c.tmp"
     break;
 
   case 70:
-
-/* Line 1455 of yacc.c  */
 #line 586 "cp-name-parser.y"
-    { (yyval.nested1).comp = state->fill_comp (DEMANGLE_COMPONENT_QUAL_NAME, (yyvsp[(1) - (2)].comp), NULL);
+                        { (yyval.nested1).comp = state->fill_comp (DEMANGLE_COMPONENT_QUAL_NAME, (yyvsp[-1].comp), NULL);
 			  (yyval.nested1).last = (yyval.nested1).comp;
 			}
+#line 2347 "cp-name-parser.c.tmp"
     break;
 
   case 71:
-
-/* Line 1455 of yacc.c  */
 #line 590 "cp-name-parser.y"
-    { (yyval.nested1).comp = (yyvsp[(1) - (3)].nested1).comp;
-			  d_right ((yyvsp[(1) - (3)].nested1).last) = state->fill_comp (DEMANGLE_COMPONENT_QUAL_NAME, (yyvsp[(2) - (3)].comp), NULL);
-			  (yyval.nested1).last = d_right ((yyvsp[(1) - (3)].nested1).last);
+                        { (yyval.nested1).comp = (yyvsp[-2].nested1).comp;
+			  d_right ((yyvsp[-2].nested1).last) = state->fill_comp (DEMANGLE_COMPONENT_QUAL_NAME, (yyvsp[-1].comp), NULL);
+			  (yyval.nested1).last = d_right ((yyvsp[-2].nested1).last);
 			}
+#line 2356 "cp-name-parser.c.tmp"
     break;
 
   case 72:
-
-/* Line 1455 of yacc.c  */
 #line 599 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TEMPLATE, (yyvsp[(1) - (4)].comp), (yyvsp[(3) - (4)].nested).comp); }
+                        { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TEMPLATE, (yyvsp[-3].comp), (yyvsp[-1].nested).comp); }
+#line 2362 "cp-name-parser.c.tmp"
     break;
 
   case 73:
-
-/* Line 1455 of yacc.c  */
 #line 603 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TEMPLATE_ARGLIST, (yyvsp[(1) - (1)].comp), NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TEMPLATE_ARGLIST, (yyvsp[0].comp), NULL);
 			(yyval.nested).last = &d_right ((yyval.nested).comp); }
+#line 2369 "cp-name-parser.c.tmp"
     break;
 
   case 74:
-
-/* Line 1455 of yacc.c  */
 #line 606 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(1) - (3)].nested).comp;
-			  *(yyvsp[(1) - (3)].nested).last = state->fill_comp (DEMANGLE_COMPONENT_TEMPLATE_ARGLIST, (yyvsp[(3) - (3)].comp), NULL);
-			  (yyval.nested).last = &d_right (*(yyvsp[(1) - (3)].nested).last);
+                        { (yyval.nested).comp = (yyvsp[-2].nested).comp;
+			  *(yyvsp[-2].nested).last = state->fill_comp (DEMANGLE_COMPONENT_TEMPLATE_ARGLIST, (yyvsp[0].comp), NULL);
+			  (yyval.nested).last = &d_right (*(yyvsp[-2].nested).last);
 			}
+#line 2378 "cp-name-parser.c.tmp"
     break;
 
   case 76:
-
-/* Line 1455 of yacc.c  */
 #line 618 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(2) - (2)].abstract).comp;
-			  *(yyvsp[(2) - (2)].abstract).last = (yyvsp[(1) - (2)].comp);
+                        { (yyval.comp) = (yyvsp[0].abstract).comp;
+			  *(yyvsp[0].abstract).last = (yyvsp[-1].comp);
 			}
+#line 2386 "cp-name-parser.c.tmp"
     break;
 
   case 77:
-
-/* Line 1455 of yacc.c  */
 #line 622 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY, state->make_operator ("&", 1), (yyvsp[(2) - (2)].comp)); }
+                        { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY, state->make_operator ("&", 1), (yyvsp[0].comp)); }
+#line 2392 "cp-name-parser.c.tmp"
     break;
 
   case 78:
-
-/* Line 1455 of yacc.c  */
 #line 624 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY, state->make_operator ("&", 1), (yyvsp[(3) - (4)].comp)); }
+                        { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY, state->make_operator ("&", 1), (yyvsp[-1].comp)); }
+#line 2398 "cp-name-parser.c.tmp"
     break;
 
   case 80:
-
-/* Line 1455 of yacc.c  */
 #line 629 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_ARGLIST, (yyvsp[(1) - (1)].comp), NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_ARGLIST, (yyvsp[0].comp), NULL);
 			  (yyval.nested).last = &d_right ((yyval.nested).comp);
 			}
+#line 2406 "cp-name-parser.c.tmp"
     break;
 
   case 81:
-
-/* Line 1455 of yacc.c  */
 #line 633 "cp-name-parser.y"
-    { *(yyvsp[(2) - (2)].abstract).last = (yyvsp[(1) - (2)].comp);
-			  (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_ARGLIST, (yyvsp[(2) - (2)].abstract).comp, NULL);
+                        { *(yyvsp[0].abstract).last = (yyvsp[-1].comp);
+			  (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_ARGLIST, (yyvsp[0].abstract).comp, NULL);
 			  (yyval.nested).last = &d_right ((yyval.nested).comp);
 			}
+#line 2415 "cp-name-parser.c.tmp"
     break;
 
   case 82:
-
-/* Line 1455 of yacc.c  */
 #line 638 "cp-name-parser.y"
-    { *(yyvsp[(1) - (3)].nested).last = state->fill_comp (DEMANGLE_COMPONENT_ARGLIST, (yyvsp[(3) - (3)].comp), NULL);
-			  (yyval.nested).comp = (yyvsp[(1) - (3)].nested).comp;
-			  (yyval.nested).last = &d_right (*(yyvsp[(1) - (3)].nested).last);
+                        { *(yyvsp[-2].nested).last = state->fill_comp (DEMANGLE_COMPONENT_ARGLIST, (yyvsp[0].comp), NULL);
+			  (yyval.nested).comp = (yyvsp[-2].nested).comp;
+			  (yyval.nested).last = &d_right (*(yyvsp[-2].nested).last);
 			}
+#line 2424 "cp-name-parser.c.tmp"
     break;
 
   case 83:
-
-/* Line 1455 of yacc.c  */
 #line 643 "cp-name-parser.y"
-    { *(yyvsp[(4) - (4)].abstract).last = (yyvsp[(3) - (4)].comp);
-			  *(yyvsp[(1) - (4)].nested).last = state->fill_comp (DEMANGLE_COMPONENT_ARGLIST, (yyvsp[(4) - (4)].abstract).comp, NULL);
-			  (yyval.nested).comp = (yyvsp[(1) - (4)].nested).comp;
-			  (yyval.nested).last = &d_right (*(yyvsp[(1) - (4)].nested).last);
+                        { *(yyvsp[0].abstract).last = (yyvsp[-1].comp);
+			  *(yyvsp[-3].nested).last = state->fill_comp (DEMANGLE_COMPONENT_ARGLIST, (yyvsp[0].abstract).comp, NULL);
+			  (yyval.nested).comp = (yyvsp[-3].nested).comp;
+			  (yyval.nested).last = &d_right (*(yyvsp[-3].nested).last);
 			}
+#line 2434 "cp-name-parser.c.tmp"
     break;
 
   case 84:
-
-/* Line 1455 of yacc.c  */
 #line 649 "cp-name-parser.y"
-    { *(yyvsp[(1) - (3)].nested).last
+                        { *(yyvsp[-2].nested).last
 			    = state->fill_comp (DEMANGLE_COMPONENT_ARGLIST,
 					   state->make_builtin_type ("..."),
 					   NULL);
-			  (yyval.nested).comp = (yyvsp[(1) - (3)].nested).comp;
-			  (yyval.nested).last = &d_right (*(yyvsp[(1) - (3)].nested).last);
+			  (yyval.nested).comp = (yyvsp[-2].nested).comp;
+			  (yyval.nested).last = &d_right (*(yyvsp[-2].nested).last);
 			}
+#line 2446 "cp-name-parser.c.tmp"
     break;
 
   case 85:
-
-/* Line 1455 of yacc.c  */
 #line 659 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_FUNCTION_TYPE, NULL, (yyvsp[(2) - (4)].nested).comp);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_FUNCTION_TYPE, NULL, (yyvsp[-2].nested).comp);
 			  (yyval.nested).last = &d_left ((yyval.nested).comp);
-			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[(4) - (4)].lval), 1); }
+			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[0].lval), 1); }
+#line 2454 "cp-name-parser.c.tmp"
     break;
 
   case 86:
-
-/* Line 1455 of yacc.c  */
 #line 663 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_FUNCTION_TYPE, NULL, NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_FUNCTION_TYPE, NULL, NULL);
 			  (yyval.nested).last = &d_left ((yyval.nested).comp);
-			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[(4) - (4)].lval), 1); }
+			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[0].lval), 1); }
+#line 2462 "cp-name-parser.c.tmp"
     break;
 
   case 87:
-
-/* Line 1455 of yacc.c  */
 #line 667 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_FUNCTION_TYPE, NULL, NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_FUNCTION_TYPE, NULL, NULL);
 			  (yyval.nested).last = &d_left ((yyval.nested).comp);
-			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[(3) - (3)].lval), 1); }
+			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[0].lval), 1); }
+#line 2470 "cp-name-parser.c.tmp"
     break;
 
   case 88:
-
-/* Line 1455 of yacc.c  */
 #line 674 "cp-name-parser.y"
-    { (yyval.lval) = 0; }
+                        { (yyval.lval) = 0; }
+#line 2476 "cp-name-parser.c.tmp"
     break;
 
   case 90:
-
-/* Line 1455 of yacc.c  */
 #line 679 "cp-name-parser.y"
-    { (yyval.lval) = QUAL_RESTRICT; }
+                        { (yyval.lval) = QUAL_RESTRICT; }
+#line 2482 "cp-name-parser.c.tmp"
     break;
 
   case 91:
-
-/* Line 1455 of yacc.c  */
 #line 681 "cp-name-parser.y"
-    { (yyval.lval) = QUAL_VOLATILE; }
+                        { (yyval.lval) = QUAL_VOLATILE; }
+#line 2488 "cp-name-parser.c.tmp"
     break;
 
   case 92:
-
-/* Line 1455 of yacc.c  */
 #line 683 "cp-name-parser.y"
-    { (yyval.lval) = QUAL_CONST; }
+                        { (yyval.lval) = QUAL_CONST; }
+#line 2494 "cp-name-parser.c.tmp"
     break;
 
   case 94:
-
-/* Line 1455 of yacc.c  */
 #line 688 "cp-name-parser.y"
-    { (yyval.lval) = (yyvsp[(1) - (2)].lval) | (yyvsp[(2) - (2)].lval); }
+                        { (yyval.lval) = (yyvsp[-1].lval) | (yyvsp[0].lval); }
+#line 2500 "cp-name-parser.c.tmp"
     break;
 
   case 95:
-
-/* Line 1455 of yacc.c  */
 #line 695 "cp-name-parser.y"
-    { (yyval.lval) = 0; }
+                        { (yyval.lval) = 0; }
+#line 2506 "cp-name-parser.c.tmp"
     break;
 
   case 96:
-
-/* Line 1455 of yacc.c  */
 #line 697 "cp-name-parser.y"
-    { (yyval.lval) = INT_SIGNED; }
+                        { (yyval.lval) = INT_SIGNED; }
+#line 2512 "cp-name-parser.c.tmp"
     break;
 
   case 97:
-
-/* Line 1455 of yacc.c  */
 #line 699 "cp-name-parser.y"
-    { (yyval.lval) = INT_UNSIGNED; }
+                        { (yyval.lval) = INT_UNSIGNED; }
+#line 2518 "cp-name-parser.c.tmp"
     break;
 
   case 98:
-
-/* Line 1455 of yacc.c  */
 #line 701 "cp-name-parser.y"
-    { (yyval.lval) = INT_CHAR; }
+                        { (yyval.lval) = INT_CHAR; }
+#line 2524 "cp-name-parser.c.tmp"
     break;
 
   case 99:
-
-/* Line 1455 of yacc.c  */
 #line 703 "cp-name-parser.y"
-    { (yyval.lval) = INT_LONG; }
+                        { (yyval.lval) = INT_LONG; }
+#line 2530 "cp-name-parser.c.tmp"
     break;
 
   case 100:
-
-/* Line 1455 of yacc.c  */
 #line 705 "cp-name-parser.y"
-    { (yyval.lval) = INT_SHORT; }
+                        { (yyval.lval) = INT_SHORT; }
+#line 2536 "cp-name-parser.c.tmp"
     break;
 
   case 102:
-
-/* Line 1455 of yacc.c  */
 #line 710 "cp-name-parser.y"
-    { (yyval.lval) = (yyvsp[(1) - (2)].lval) | (yyvsp[(2) - (2)].lval); if ((yyvsp[(1) - (2)].lval) & (yyvsp[(2) - (2)].lval) & INT_LONG) (yyval.lval) = (yyvsp[(1) - (2)].lval) | INT_LLONG; }
+                        { (yyval.lval) = (yyvsp[-1].lval) | (yyvsp[0].lval); if ((yyvsp[-1].lval) & (yyvsp[0].lval) & INT_LONG) (yyval.lval) = (yyvsp[-1].lval) | INT_LLONG; }
+#line 2542 "cp-name-parser.c.tmp"
     break;
 
   case 103:
-
-/* Line 1455 of yacc.c  */
 #line 714 "cp-name-parser.y"
-    { (yyval.comp) = state->d_int_type ((yyvsp[(1) - (1)].lval)); }
+                        { (yyval.comp) = state->d_int_type ((yyvsp[0].lval)); }
+#line 2548 "cp-name-parser.c.tmp"
     break;
 
   case 104:
-
-/* Line 1455 of yacc.c  */
 #line 716 "cp-name-parser.y"
-    { (yyval.comp) = state->make_builtin_type ("float"); }
+                        { (yyval.comp) = state->make_builtin_type ("float"); }
+#line 2554 "cp-name-parser.c.tmp"
     break;
 
   case 105:
-
-/* Line 1455 of yacc.c  */
 #line 718 "cp-name-parser.y"
-    { (yyval.comp) = state->make_builtin_type ("double"); }
+                        { (yyval.comp) = state->make_builtin_type ("double"); }
+#line 2560 "cp-name-parser.c.tmp"
     break;
 
   case 106:
-
-/* Line 1455 of yacc.c  */
 #line 720 "cp-name-parser.y"
-    { (yyval.comp) = state->make_builtin_type ("long double"); }
+                        { (yyval.comp) = state->make_builtin_type ("long double"); }
+#line 2566 "cp-name-parser.c.tmp"
     break;
 
   case 107:
-
-/* Line 1455 of yacc.c  */
 #line 722 "cp-name-parser.y"
-    { (yyval.comp) = state->make_builtin_type ("bool"); }
+                        { (yyval.comp) = state->make_builtin_type ("bool"); }
+#line 2572 "cp-name-parser.c.tmp"
     break;
 
   case 108:
-
-/* Line 1455 of yacc.c  */
 #line 724 "cp-name-parser.y"
-    { (yyval.comp) = state->make_builtin_type ("wchar_t"); }
+                        { (yyval.comp) = state->make_builtin_type ("wchar_t"); }
+#line 2578 "cp-name-parser.c.tmp"
     break;
 
   case 109:
-
-/* Line 1455 of yacc.c  */
 #line 726 "cp-name-parser.y"
-    { (yyval.comp) = state->make_builtin_type ("void"); }
+                        { (yyval.comp) = state->make_builtin_type ("void"); }
+#line 2584 "cp-name-parser.c.tmp"
     break;
 
   case 110:
-
-/* Line 1455 of yacc.c  */
 #line 730 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_POINTER, NULL, NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_POINTER, NULL, NULL);
 			  (yyval.nested).last = &d_left ((yyval.nested).comp);
-			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[(2) - (2)].lval), 0); }
+			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[0].lval), 0); }
+#line 2592 "cp-name-parser.c.tmp"
     break;
 
   case 111:
-
-/* Line 1455 of yacc.c  */
 #line 735 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_REFERENCE, NULL, NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_REFERENCE, NULL, NULL);
 			  (yyval.nested).last = &d_left ((yyval.nested).comp); }
+#line 2599 "cp-name-parser.c.tmp"
     break;
 
   case 112:
-
-/* Line 1455 of yacc.c  */
 #line 738 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_RVALUE_REFERENCE, NULL, NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_RVALUE_REFERENCE, NULL, NULL);
 			  (yyval.nested).last = &d_left ((yyval.nested).comp); }
+#line 2606 "cp-name-parser.c.tmp"
     break;
 
   case 113:
-
-/* Line 1455 of yacc.c  */
 #line 741 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_PTRMEM_TYPE, (yyvsp[(1) - (3)].nested1).comp, NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_PTRMEM_TYPE, (yyvsp[-2].nested1).comp, NULL);
 			  /* Convert the innermost DEMANGLE_COMPONENT_QUAL_NAME to a DEMANGLE_COMPONENT_NAME.  */
-			  *(yyvsp[(1) - (3)].nested1).last = *d_left ((yyvsp[(1) - (3)].nested1).last);
+			  *(yyvsp[-2].nested1).last = *d_left ((yyvsp[-2].nested1).last);
 			  (yyval.nested).last = &d_right ((yyval.nested).comp);
-			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[(3) - (3)].lval), 0); }
+			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[0].lval), 0); }
+#line 2616 "cp-name-parser.c.tmp"
     break;
 
   case 114:
-
-/* Line 1455 of yacc.c  */
 #line 747 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_PTRMEM_TYPE, (yyvsp[(2) - (4)].nested1).comp, NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_PTRMEM_TYPE, (yyvsp[-2].nested1).comp, NULL);
 			  /* Convert the innermost DEMANGLE_COMPONENT_QUAL_NAME to a DEMANGLE_COMPONENT_NAME.  */
-			  *(yyvsp[(2) - (4)].nested1).last = *d_left ((yyvsp[(2) - (4)].nested1).last);
+			  *(yyvsp[-2].nested1).last = *d_left ((yyvsp[-2].nested1).last);
 			  (yyval.nested).last = &d_right ((yyval.nested).comp);
-			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[(4) - (4)].lval), 0); }
+			  (yyval.nested).comp = state->d_qualify ((yyval.nested).comp, (yyvsp[0].lval), 0); }
+#line 2626 "cp-name-parser.c.tmp"
     break;
 
   case 115:
-
-/* Line 1455 of yacc.c  */
 #line 755 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_ARRAY_TYPE, NULL, NULL); }
+                        { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_ARRAY_TYPE, NULL, NULL); }
+#line 2632 "cp-name-parser.c.tmp"
     break;
 
   case 116:
-
-/* Line 1455 of yacc.c  */
 #line 757 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_ARRAY_TYPE, (yyvsp[(2) - (3)].comp), NULL); }
+                        { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_ARRAY_TYPE, (yyvsp[-1].comp), NULL); }
+#line 2638 "cp-name-parser.c.tmp"
     break;
 
   case 117:
-
-/* Line 1455 of yacc.c  */
 #line 771 "cp-name-parser.y"
-    { (yyval.comp) = state->d_qualify ((yyvsp[(1) - (2)].comp), (yyvsp[(2) - (2)].lval), 0); }
+                        { (yyval.comp) = state->d_qualify ((yyvsp[-1].comp), (yyvsp[0].lval), 0); }
+#line 2644 "cp-name-parser.c.tmp"
     break;
 
   case 119:
-
-/* Line 1455 of yacc.c  */
 #line 774 "cp-name-parser.y"
-    { (yyval.comp) = state->d_qualify ((yyvsp[(2) - (3)].comp), (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval), 0); }
+                        { (yyval.comp) = state->d_qualify ((yyvsp[-1].comp), (yyvsp[-2].lval) | (yyvsp[0].lval), 0); }
+#line 2650 "cp-name-parser.c.tmp"
     break;
 
   case 120:
-
-/* Line 1455 of yacc.c  */
 #line 776 "cp-name-parser.y"
-    { (yyval.comp) = state->d_qualify ((yyvsp[(2) - (2)].comp), (yyvsp[(1) - (2)].lval), 0); }
+                        { (yyval.comp) = state->d_qualify ((yyvsp[0].comp), (yyvsp[-1].lval), 0); }
+#line 2656 "cp-name-parser.c.tmp"
     break;
 
   case 121:
-
-/* Line 1455 of yacc.c  */
 #line 779 "cp-name-parser.y"
-    { (yyval.comp) = state->d_qualify ((yyvsp[(1) - (2)].comp), (yyvsp[(2) - (2)].lval), 0); }
+                        { (yyval.comp) = state->d_qualify ((yyvsp[-1].comp), (yyvsp[0].lval), 0); }
+#line 2662 "cp-name-parser.c.tmp"
     break;
 
   case 123:
-
-/* Line 1455 of yacc.c  */
 #line 782 "cp-name-parser.y"
-    { (yyval.comp) = state->d_qualify ((yyvsp[(2) - (3)].comp), (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval), 0); }
+                        { (yyval.comp) = state->d_qualify ((yyvsp[-1].comp), (yyvsp[-2].lval) | (yyvsp[0].lval), 0); }
+#line 2668 "cp-name-parser.c.tmp"
     break;
 
   case 124:
-
-/* Line 1455 of yacc.c  */
 #line 784 "cp-name-parser.y"
-    { (yyval.comp) = state->d_qualify ((yyvsp[(2) - (2)].comp), (yyvsp[(1) - (2)].lval), 0); }
+                        { (yyval.comp) = state->d_qualify ((yyvsp[0].comp), (yyvsp[-1].lval), 0); }
+#line 2674 "cp-name-parser.c.tmp"
     break;
 
   case 125:
-
-/* Line 1455 of yacc.c  */
 #line 787 "cp-name-parser.y"
-    { (yyval.comp) = state->d_qualify ((yyvsp[(2) - (3)].comp), (yyvsp[(3) - (3)].lval), 0); }
+                        { (yyval.comp) = state->d_qualify ((yyvsp[-1].comp), (yyvsp[0].lval), 0); }
+#line 2680 "cp-name-parser.c.tmp"
     break;
 
   case 126:
-
-/* Line 1455 of yacc.c  */
 #line 789 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(2) - (2)].comp); }
+                        { (yyval.comp) = (yyvsp[0].comp); }
+#line 2686 "cp-name-parser.c.tmp"
     break;
 
   case 127:
-
-/* Line 1455 of yacc.c  */
 #line 791 "cp-name-parser.y"
-    { (yyval.comp) = state->d_qualify ((yyvsp[(3) - (4)].comp), (yyvsp[(1) - (4)].lval) | (yyvsp[(4) - (4)].lval), 0); }
+                        { (yyval.comp) = state->d_qualify ((yyvsp[-1].comp), (yyvsp[-3].lval) | (yyvsp[0].lval), 0); }
+#line 2692 "cp-name-parser.c.tmp"
     break;
 
   case 128:
-
-/* Line 1455 of yacc.c  */
 #line 793 "cp-name-parser.y"
-    { (yyval.comp) = state->d_qualify ((yyvsp[(3) - (3)].comp), (yyvsp[(1) - (3)].lval), 0); }
+                        { (yyval.comp) = state->d_qualify ((yyvsp[0].comp), (yyvsp[-2].lval), 0); }
+#line 2698 "cp-name-parser.c.tmp"
     break;
 
   case 129:
-
-/* Line 1455 of yacc.c  */
 #line 798 "cp-name-parser.y"
-    { (yyval.abstract).comp = (yyvsp[(1) - (1)].nested).comp; (yyval.abstract).last = (yyvsp[(1) - (1)].nested).last;
+                        { (yyval.abstract).comp = (yyvsp[0].nested).comp; (yyval.abstract).last = (yyvsp[0].nested).last;
 			  (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL; }
+#line 2705 "cp-name-parser.c.tmp"
     break;
 
   case 130:
-
-/* Line 1455 of yacc.c  */
 #line 801 "cp-name-parser.y"
-    { (yyval.abstract) = (yyvsp[(2) - (2)].abstract); (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL;
-			  if ((yyvsp[(2) - (2)].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[(2) - (2)].abstract).fn.last; *(yyvsp[(2) - (2)].abstract).last = (yyvsp[(2) - (2)].abstract).fn.comp; }
-			  *(yyval.abstract).last = (yyvsp[(1) - (2)].nested).comp;
-			  (yyval.abstract).last = (yyvsp[(1) - (2)].nested).last; }
+                        { (yyval.abstract) = (yyvsp[0].abstract); (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL;
+			  if ((yyvsp[0].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[0].abstract).fn.last; *(yyvsp[0].abstract).last = (yyvsp[0].abstract).fn.comp; }
+			  *(yyval.abstract).last = (yyvsp[-1].nested).comp;
+			  (yyval.abstract).last = (yyvsp[-1].nested).last; }
+#line 2714 "cp-name-parser.c.tmp"
     break;
 
   case 131:
-
-/* Line 1455 of yacc.c  */
 #line 806 "cp-name-parser.y"
-    { (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL;
-			  if ((yyvsp[(1) - (1)].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[(1) - (1)].abstract).fn.last; *(yyvsp[(1) - (1)].abstract).last = (yyvsp[(1) - (1)].abstract).fn.comp; }
+                        { (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL;
+			  if ((yyvsp[0].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[0].abstract).fn.last; *(yyvsp[0].abstract).last = (yyvsp[0].abstract).fn.comp; }
 			}
+#line 2722 "cp-name-parser.c.tmp"
     break;
 
   case 132:
-
-/* Line 1455 of yacc.c  */
 #line 813 "cp-name-parser.y"
-    { (yyval.abstract) = (yyvsp[(2) - (3)].abstract); (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL; (yyval.abstract).fold_flag = 1;
-			  if ((yyvsp[(2) - (3)].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[(2) - (3)].abstract).fn.last; *(yyvsp[(2) - (3)].abstract).last = (yyvsp[(2) - (3)].abstract).fn.comp; }
+                        { (yyval.abstract) = (yyvsp[-1].abstract); (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL; (yyval.abstract).fold_flag = 1;
+			  if ((yyvsp[-1].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[-1].abstract).fn.last; *(yyvsp[-1].abstract).last = (yyvsp[-1].abstract).fn.comp; }
 			}
+#line 2730 "cp-name-parser.c.tmp"
     break;
 
   case 133:
-
-/* Line 1455 of yacc.c  */
 #line 817 "cp-name-parser.y"
-    { (yyval.abstract).fold_flag = 0;
-			  if ((yyvsp[(1) - (2)].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[(1) - (2)].abstract).fn.last; *(yyvsp[(1) - (2)].abstract).last = (yyvsp[(1) - (2)].abstract).fn.comp; }
-			  if ((yyvsp[(1) - (2)].abstract).fold_flag)
+                        { (yyval.abstract).fold_flag = 0;
+			  if ((yyvsp[-1].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[-1].abstract).fn.last; *(yyvsp[-1].abstract).last = (yyvsp[-1].abstract).fn.comp; }
+			  if ((yyvsp[-1].abstract).fold_flag)
 			    {
-			      *(yyval.abstract).last = (yyvsp[(2) - (2)].nested).comp;
-			      (yyval.abstract).last = (yyvsp[(2) - (2)].nested).last;
+			      *(yyval.abstract).last = (yyvsp[0].nested).comp;
+			      (yyval.abstract).last = (yyvsp[0].nested).last;
 			    }
 			  else
-			    (yyval.abstract).fn = (yyvsp[(2) - (2)].nested);
+			    (yyval.abstract).fn = (yyvsp[0].nested);
 			}
+#line 2745 "cp-name-parser.c.tmp"
     break;
 
   case 134:
-
-/* Line 1455 of yacc.c  */
 #line 828 "cp-name-parser.y"
-    { (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL; (yyval.abstract).fold_flag = 0;
-			  if ((yyvsp[(1) - (2)].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[(1) - (2)].abstract).fn.last; *(yyvsp[(1) - (2)].abstract).last = (yyvsp[(1) - (2)].abstract).fn.comp; }
-			  *(yyvsp[(1) - (2)].abstract).last = (yyvsp[(2) - (2)].comp);
-			  (yyval.abstract).last = &d_right ((yyvsp[(2) - (2)].comp));
+                        { (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL; (yyval.abstract).fold_flag = 0;
+			  if ((yyvsp[-1].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[-1].abstract).fn.last; *(yyvsp[-1].abstract).last = (yyvsp[-1].abstract).fn.comp; }
+			  *(yyvsp[-1].abstract).last = (yyvsp[0].comp);
+			  (yyval.abstract).last = &d_right ((yyvsp[0].comp));
 			}
+#line 2755 "cp-name-parser.c.tmp"
     break;
 
   case 135:
-
-/* Line 1455 of yacc.c  */
 #line 834 "cp-name-parser.y"
-    { (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL; (yyval.abstract).fold_flag = 0;
-			  (yyval.abstract).comp = (yyvsp[(1) - (1)].comp);
-			  (yyval.abstract).last = &d_right ((yyvsp[(1) - (1)].comp));
+                        { (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL; (yyval.abstract).fold_flag = 0;
+			  (yyval.abstract).comp = (yyvsp[0].comp);
+			  (yyval.abstract).last = &d_right ((yyvsp[0].comp));
 			}
+#line 2764 "cp-name-parser.c.tmp"
     break;
 
   case 136:
-
-/* Line 1455 of yacc.c  */
 #line 852 "cp-name-parser.y"
-    { (yyval.abstract).comp = (yyvsp[(1) - (1)].nested).comp; (yyval.abstract).last = (yyvsp[(1) - (1)].nested).last;
+                        { (yyval.abstract).comp = (yyvsp[0].nested).comp; (yyval.abstract).last = (yyvsp[0].nested).last;
 			  (yyval.abstract).fn.comp = NULL; (yyval.abstract).fn.last = NULL; (yyval.abstract).start = NULL; }
+#line 2771 "cp-name-parser.c.tmp"
     break;
 
   case 137:
-
-/* Line 1455 of yacc.c  */
 #line 855 "cp-name-parser.y"
-    { (yyval.abstract) = (yyvsp[(2) - (2)].abstract);
-			  if ((yyvsp[(2) - (2)].abstract).last)
-			    *(yyval.abstract).last = (yyvsp[(1) - (2)].nested).comp;
+                        { (yyval.abstract) = (yyvsp[0].abstract);
+			  if ((yyvsp[0].abstract).last)
+			    *(yyval.abstract).last = (yyvsp[-1].nested).comp;
 			  else
-			    (yyval.abstract).comp = (yyvsp[(1) - (2)].nested).comp;
-			  (yyval.abstract).last = (yyvsp[(1) - (2)].nested).last;
+			    (yyval.abstract).comp = (yyvsp[-1].nested).comp;
+			  (yyval.abstract).last = (yyvsp[-1].nested).last;
 			}
+#line 2783 "cp-name-parser.c.tmp"
     break;
 
   case 138:
-
-/* Line 1455 of yacc.c  */
 #line 863 "cp-name-parser.y"
-    { (yyval.abstract).comp = (yyvsp[(1) - (1)].abstract).comp; (yyval.abstract).last = (yyvsp[(1) - (1)].abstract).last; (yyval.abstract).fn = (yyvsp[(1) - (1)].abstract).fn; (yyval.abstract).start = NULL; }
+                        { (yyval.abstract).comp = (yyvsp[0].abstract).comp; (yyval.abstract).last = (yyvsp[0].abstract).last; (yyval.abstract).fn = (yyvsp[0].abstract).fn; (yyval.abstract).start = NULL; }
+#line 2789 "cp-name-parser.c.tmp"
     break;
 
   case 139:
-
-/* Line 1455 of yacc.c  */
 #line 865 "cp-name-parser.y"
-    { (yyval.abstract).start = (yyvsp[(4) - (4)].comp);
-			  if ((yyvsp[(1) - (4)].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[(1) - (4)].abstract).fn.last; *(yyvsp[(1) - (4)].abstract).last = (yyvsp[(1) - (4)].abstract).fn.comp; }
-			  if ((yyvsp[(1) - (4)].abstract).fold_flag)
+                        { (yyval.abstract).start = (yyvsp[0].comp);
+			  if ((yyvsp[-3].abstract).fn.comp) { (yyval.abstract).last = (yyvsp[-3].abstract).fn.last; *(yyvsp[-3].abstract).last = (yyvsp[-3].abstract).fn.comp; }
+			  if ((yyvsp[-3].abstract).fold_flag)
 			    {
-			      *(yyval.abstract).last = (yyvsp[(2) - (4)].nested).comp;
-			      (yyval.abstract).last = (yyvsp[(2) - (4)].nested).last;
+			      *(yyval.abstract).last = (yyvsp[-2].nested).comp;
+			      (yyval.abstract).last = (yyvsp[-2].nested).last;
 			    }
 			  else
-			    (yyval.abstract).fn = (yyvsp[(2) - (4)].nested);
+			    (yyval.abstract).fn = (yyvsp[-2].nested);
 			}
+#line 2804 "cp-name-parser.c.tmp"
     break;
 
   case 140:
-
-/* Line 1455 of yacc.c  */
 #line 876 "cp-name-parser.y"
-    { (yyval.abstract).fn = (yyvsp[(1) - (2)].nested);
-			  (yyval.abstract).start = (yyvsp[(2) - (2)].comp);
+                        { (yyval.abstract).fn = (yyvsp[-1].nested);
+			  (yyval.abstract).start = (yyvsp[0].comp);
 			  (yyval.abstract).comp = NULL; (yyval.abstract).last = NULL;
 			}
+#line 2813 "cp-name-parser.c.tmp"
     break;
 
   case 142:
-
-/* Line 1455 of yacc.c  */
 #line 884 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(2) - (2)].abstract).comp;
-			  *(yyvsp[(2) - (2)].abstract).last = (yyvsp[(1) - (2)].comp);
+                        { (yyval.comp) = (yyvsp[0].abstract).comp;
+			  *(yyvsp[0].abstract).last = (yyvsp[-1].comp);
 			}
+#line 2821 "cp-name-parser.c.tmp"
     break;
 
   case 143:
-
-/* Line 1455 of yacc.c  */
 #line 890 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(2) - (2)].nested).comp;
-			  (yyval.nested).last = (yyvsp[(1) - (2)].nested).last;
-			  *(yyvsp[(2) - (2)].nested).last = (yyvsp[(1) - (2)].nested).comp; }
+                        { (yyval.nested).comp = (yyvsp[0].nested).comp;
+			  (yyval.nested).last = (yyvsp[-1].nested).last;
+			  *(yyvsp[0].nested).last = (yyvsp[-1].nested).comp; }
+#line 2829 "cp-name-parser.c.tmp"
     break;
 
   case 145:
-
-/* Line 1455 of yacc.c  */
 #line 898 "cp-name-parser.y"
-    { (yyval.nested) = (yyvsp[(2) - (3)].nested); }
+                        { (yyval.nested) = (yyvsp[-1].nested); }
+#line 2835 "cp-name-parser.c.tmp"
     break;
 
   case 146:
-
-/* Line 1455 of yacc.c  */
 #line 900 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(1) - (2)].nested).comp;
-			  *(yyvsp[(1) - (2)].nested).last = (yyvsp[(2) - (2)].nested).comp;
-			  (yyval.nested).last = (yyvsp[(2) - (2)].nested).last;
+                        { (yyval.nested).comp = (yyvsp[-1].nested).comp;
+			  *(yyvsp[-1].nested).last = (yyvsp[0].nested).comp;
+			  (yyval.nested).last = (yyvsp[0].nested).last;
 			}
+#line 2844 "cp-name-parser.c.tmp"
     break;
 
   case 147:
-
-/* Line 1455 of yacc.c  */
 #line 905 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(1) - (2)].nested).comp;
-			  *(yyvsp[(1) - (2)].nested).last = (yyvsp[(2) - (2)].comp);
-			  (yyval.nested).last = &d_right ((yyvsp[(2) - (2)].comp));
+                        { (yyval.nested).comp = (yyvsp[-1].nested).comp;
+			  *(yyvsp[-1].nested).last = (yyvsp[0].comp);
+			  (yyval.nested).last = &d_right ((yyvsp[0].comp));
 			}
+#line 2853 "cp-name-parser.c.tmp"
     break;
 
   case 148:
-
-/* Line 1455 of yacc.c  */
 #line 910 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[(1) - (1)].comp), NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[0].comp), NULL);
 			  (yyval.nested).last = &d_right ((yyval.nested).comp);
 			}
+#line 2861 "cp-name-parser.c.tmp"
     break;
 
   case 149:
-
-/* Line 1455 of yacc.c  */
 #line 922 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(2) - (2)].nested).comp;
-			  (yyval.nested).last = (yyvsp[(1) - (2)].nested).last;
-			  *(yyvsp[(2) - (2)].nested).last = (yyvsp[(1) - (2)].nested).comp; }
+                        { (yyval.nested).comp = (yyvsp[0].nested).comp;
+			  (yyval.nested).last = (yyvsp[-1].nested).last;
+			  *(yyvsp[0].nested).last = (yyvsp[-1].nested).comp; }
+#line 2869 "cp-name-parser.c.tmp"
     break;
 
   case 150:
-
-/* Line 1455 of yacc.c  */
 #line 926 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[(1) - (1)].comp), NULL);
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[0].comp), NULL);
 			  (yyval.nested).last = &d_right ((yyval.nested).comp);
 			}
+#line 2877 "cp-name-parser.c.tmp"
     break;
 
   case 152:
-
-/* Line 1455 of yacc.c  */
 #line 938 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[(1) - (4)].comp), (yyvsp[(2) - (4)].nested).comp);
-			  (yyval.nested).last = (yyvsp[(2) - (4)].nested).last;
-			  (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME, (yyval.nested).comp, (yyvsp[(4) - (4)].comp));
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[-3].comp), (yyvsp[-2].nested).comp);
+			  (yyval.nested).last = (yyvsp[-2].nested).last;
+			  (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME, (yyval.nested).comp, (yyvsp[0].comp));
 			}
+#line 2886 "cp-name-parser.c.tmp"
     break;
 
   case 153:
-
-/* Line 1455 of yacc.c  */
 #line 943 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(1) - (4)].nested).comp;
-			  *(yyvsp[(1) - (4)].nested).last = (yyvsp[(2) - (4)].nested).comp;
-			  (yyval.nested).last = (yyvsp[(2) - (4)].nested).last;
-			  (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME, (yyval.nested).comp, (yyvsp[(4) - (4)].comp));
+                        { (yyval.nested).comp = (yyvsp[-3].nested).comp;
+			  *(yyvsp[-3].nested).last = (yyvsp[-2].nested).comp;
+			  (yyval.nested).last = (yyvsp[-2].nested).last;
+			  (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_LOCAL_NAME, (yyval.nested).comp, (yyvsp[0].comp));
 			}
+#line 2896 "cp-name-parser.c.tmp"
     break;
 
   case 154:
-
-/* Line 1455 of yacc.c  */
 #line 952 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(3) - (4)].nested).comp;
-			  (yyval.nested).last = (yyvsp[(2) - (4)].nested).last;
-			  *(yyvsp[(3) - (4)].nested).last = (yyvsp[(2) - (4)].nested).comp; }
+                        { (yyval.nested).comp = (yyvsp[-1].nested).comp;
+			  (yyval.nested).last = (yyvsp[-2].nested).last;
+			  *(yyvsp[-1].nested).last = (yyvsp[-2].nested).comp; }
+#line 2904 "cp-name-parser.c.tmp"
     break;
 
   case 155:
-
-/* Line 1455 of yacc.c  */
 #line 956 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(1) - (2)].nested).comp;
-			  *(yyvsp[(1) - (2)].nested).last = (yyvsp[(2) - (2)].nested).comp;
-			  (yyval.nested).last = (yyvsp[(2) - (2)].nested).last;
+                        { (yyval.nested).comp = (yyvsp[-1].nested).comp;
+			  *(yyvsp[-1].nested).last = (yyvsp[0].nested).comp;
+			  (yyval.nested).last = (yyvsp[0].nested).last;
 			}
+#line 2913 "cp-name-parser.c.tmp"
     break;
 
   case 156:
-
-/* Line 1455 of yacc.c  */
 #line 961 "cp-name-parser.y"
-    { (yyval.nested).comp = (yyvsp[(1) - (2)].nested).comp;
-			  *(yyvsp[(1) - (2)].nested).last = (yyvsp[(2) - (2)].comp);
-			  (yyval.nested).last = &d_right ((yyvsp[(2) - (2)].comp));
+                        { (yyval.nested).comp = (yyvsp[-1].nested).comp;
+			  *(yyvsp[-1].nested).last = (yyvsp[0].comp);
+			  (yyval.nested).last = &d_right ((yyvsp[0].comp));
 			}
+#line 2922 "cp-name-parser.c.tmp"
     break;
 
   case 157:
-
-/* Line 1455 of yacc.c  */
 #line 966 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[(1) - (2)].comp), (yyvsp[(2) - (2)].nested).comp);
-			  (yyval.nested).last = (yyvsp[(2) - (2)].nested).last;
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[-1].comp), (yyvsp[0].nested).comp);
+			  (yyval.nested).last = (yyvsp[0].nested).last;
 			}
+#line 2930 "cp-name-parser.c.tmp"
     break;
 
   case 158:
-
-/* Line 1455 of yacc.c  */
 #line 970 "cp-name-parser.y"
-    { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[(1) - (2)].comp), (yyvsp[(2) - (2)].comp));
-			  (yyval.nested).last = &d_right ((yyvsp[(2) - (2)].comp));
+                        { (yyval.nested).comp = state->fill_comp (DEMANGLE_COMPONENT_TYPED_NAME, (yyvsp[-1].comp), (yyvsp[0].comp));
+			  (yyval.nested).last = &d_right ((yyvsp[0].comp));
 			}
+#line 2938 "cp-name-parser.c.tmp"
     break;
 
   case 159:
-
-/* Line 1455 of yacc.c  */
 #line 976 "cp-name-parser.y"
-    { (yyval.comp) = (yyvsp[(2) - (3)].comp); }
+                { (yyval.comp) = (yyvsp[-1].comp); }
+#line 2944 "cp-name-parser.c.tmp"
     break;
 
   case 161:
-
-/* Line 1455 of yacc.c  */
 #line 985 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary (">", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary (">", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 2950 "cp-name-parser.c.tmp"
     break;
 
   case 162:
-
-/* Line 1455 of yacc.c  */
 #line 992 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY, state->make_operator ("&", 1), (yyvsp[(2) - (2)].comp)); }
+                { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY, state->make_operator ("&", 1), (yyvsp[0].comp)); }
+#line 2956 "cp-name-parser.c.tmp"
     break;
 
   case 163:
-
-/* Line 1455 of yacc.c  */
 #line 994 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY, state->make_operator ("&", 1), (yyvsp[(3) - (4)].comp)); }
+                { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY, state->make_operator ("&", 1), (yyvsp[-1].comp)); }
+#line 2962 "cp-name-parser.c.tmp"
     break;
 
   case 164:
-
-/* Line 1455 of yacc.c  */
 #line 999 "cp-name-parser.y"
-    { (yyval.comp) = state->d_unary ("-", (yyvsp[(2) - (2)].comp)); }
+                { (yyval.comp) = state->d_unary ("-", (yyvsp[0].comp)); }
+#line 2968 "cp-name-parser.c.tmp"
     break;
 
   case 165:
-
-/* Line 1455 of yacc.c  */
 #line 1003 "cp-name-parser.y"
-    { (yyval.comp) = state->d_unary ("!", (yyvsp[(2) - (2)].comp)); }
+                { (yyval.comp) = state->d_unary ("!", (yyvsp[0].comp)); }
+#line 2974 "cp-name-parser.c.tmp"
     break;
 
   case 166:
-
-/* Line 1455 of yacc.c  */
 #line 1007 "cp-name-parser.y"
-    { (yyval.comp) = state->d_unary ("~", (yyvsp[(2) - (2)].comp)); }
+                { (yyval.comp) = state->d_unary ("~", (yyvsp[0].comp)); }
+#line 2980 "cp-name-parser.c.tmp"
     break;
 
   case 167:
-
-/* Line 1455 of yacc.c  */
 #line 1014 "cp-name-parser.y"
-    { if ((yyvsp[(4) - (4)].comp)->type == DEMANGLE_COMPONENT_LITERAL
-		      || (yyvsp[(4) - (4)].comp)->type == DEMANGLE_COMPONENT_LITERAL_NEG)
+                { if ((yyvsp[0].comp)->type == DEMANGLE_COMPONENT_LITERAL
+		      || (yyvsp[0].comp)->type == DEMANGLE_COMPONENT_LITERAL_NEG)
 		    {
-		      (yyval.comp) = (yyvsp[(4) - (4)].comp);
-		      d_left ((yyvsp[(4) - (4)].comp)) = (yyvsp[(2) - (4)].comp);
+		      (yyval.comp) = (yyvsp[0].comp);
+		      d_left ((yyvsp[0].comp)) = (yyvsp[-2].comp);
 		    }
 		  else
 		    (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY,
-				      state->fill_comp (DEMANGLE_COMPONENT_CAST, (yyvsp[(2) - (4)].comp), NULL),
-				      (yyvsp[(4) - (4)].comp));
+				      state->fill_comp (DEMANGLE_COMPONENT_CAST, (yyvsp[-2].comp), NULL),
+				      (yyvsp[0].comp));
 		}
+#line 2996 "cp-name-parser.c.tmp"
     break;
 
   case 168:
-
-/* Line 1455 of yacc.c  */
 #line 1030 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY,
-				    state->fill_comp (DEMANGLE_COMPONENT_CAST, (yyvsp[(3) - (7)].comp), NULL),
-				    (yyvsp[(6) - (7)].comp));
+                { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY,
+				    state->fill_comp (DEMANGLE_COMPONENT_CAST, (yyvsp[-4].comp), NULL),
+				    (yyvsp[-1].comp));
 		}
+#line 3005 "cp-name-parser.c.tmp"
     break;
 
   case 169:
-
-/* Line 1455 of yacc.c  */
 #line 1037 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY,
-				    state->fill_comp (DEMANGLE_COMPONENT_CAST, (yyvsp[(3) - (7)].comp), NULL),
-				    (yyvsp[(6) - (7)].comp));
+                { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY,
+				    state->fill_comp (DEMANGLE_COMPONENT_CAST, (yyvsp[-4].comp), NULL),
+				    (yyvsp[-1].comp));
 		}
+#line 3014 "cp-name-parser.c.tmp"
     break;
 
   case 170:
-
-/* Line 1455 of yacc.c  */
 #line 1044 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY,
-				    state->fill_comp (DEMANGLE_COMPONENT_CAST, (yyvsp[(3) - (7)].comp), NULL),
-				    (yyvsp[(6) - (7)].comp));
+                { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_UNARY,
+				    state->fill_comp (DEMANGLE_COMPONENT_CAST, (yyvsp[-4].comp), NULL),
+				    (yyvsp[-1].comp));
 		}
+#line 3023 "cp-name-parser.c.tmp"
     break;
 
   case 171:
-
-/* Line 1455 of yacc.c  */
 #line 1063 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("*", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("*", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3029 "cp-name-parser.c.tmp"
     break;
 
   case 172:
-
-/* Line 1455 of yacc.c  */
 #line 1067 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("/", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("/", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3035 "cp-name-parser.c.tmp"
     break;
 
   case 173:
-
-/* Line 1455 of yacc.c  */
 #line 1071 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("%", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("%", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3041 "cp-name-parser.c.tmp"
     break;
 
   case 174:
-
-/* Line 1455 of yacc.c  */
 #line 1075 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("+", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("+", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3047 "cp-name-parser.c.tmp"
     break;
 
   case 175:
-
-/* Line 1455 of yacc.c  */
 #line 1079 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("-", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("-", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3053 "cp-name-parser.c.tmp"
     break;
 
   case 176:
-
-/* Line 1455 of yacc.c  */
 #line 1083 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("<<", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("<<", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3059 "cp-name-parser.c.tmp"
     break;
 
   case 177:
-
-/* Line 1455 of yacc.c  */
 #line 1087 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary (">>", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary (">>", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3065 "cp-name-parser.c.tmp"
     break;
 
   case 178:
-
-/* Line 1455 of yacc.c  */
 #line 1091 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("==", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("==", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3071 "cp-name-parser.c.tmp"
     break;
 
   case 179:
-
-/* Line 1455 of yacc.c  */
 #line 1095 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("!=", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("!=", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3077 "cp-name-parser.c.tmp"
     break;
 
   case 180:
-
-/* Line 1455 of yacc.c  */
 #line 1099 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("<=", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("<=", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3083 "cp-name-parser.c.tmp"
     break;
 
   case 181:
-
-/* Line 1455 of yacc.c  */
 #line 1103 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary (">=", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary (">=", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3089 "cp-name-parser.c.tmp"
     break;
 
   case 182:
-
-/* Line 1455 of yacc.c  */
 #line 1107 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("<", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("<", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3095 "cp-name-parser.c.tmp"
     break;
 
   case 183:
-
-/* Line 1455 of yacc.c  */
 #line 1111 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("&", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("&", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3101 "cp-name-parser.c.tmp"
     break;
 
   case 184:
-
-/* Line 1455 of yacc.c  */
 #line 1115 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("^", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("^", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3107 "cp-name-parser.c.tmp"
     break;
 
   case 185:
-
-/* Line 1455 of yacc.c  */
 #line 1119 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("|", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("|", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3113 "cp-name-parser.c.tmp"
     break;
 
   case 186:
-
-/* Line 1455 of yacc.c  */
 #line 1123 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("&&", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("&&", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3119 "cp-name-parser.c.tmp"
     break;
 
   case 187:
-
-/* Line 1455 of yacc.c  */
 #line 1127 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("||", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("||", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3125 "cp-name-parser.c.tmp"
     break;
 
   case 188:
-
-/* Line 1455 of yacc.c  */
 #line 1132 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary ("->", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary ("->", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3131 "cp-name-parser.c.tmp"
     break;
 
   case 189:
-
-/* Line 1455 of yacc.c  */
 #line 1136 "cp-name-parser.y"
-    { (yyval.comp) = state->d_binary (".", (yyvsp[(1) - (3)].comp), (yyvsp[(3) - (3)].comp)); }
+                { (yyval.comp) = state->d_binary (".", (yyvsp[-2].comp), (yyvsp[0].comp)); }
+#line 3137 "cp-name-parser.c.tmp"
     break;
 
   case 190:
-
-/* Line 1455 of yacc.c  */
 #line 1140 "cp-name-parser.y"
-    { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TRINARY, state->make_operator ("?", 3),
-				    state->fill_comp (DEMANGLE_COMPONENT_TRINARY_ARG1, (yyvsp[(1) - (5)].comp),
-						 state->fill_comp (DEMANGLE_COMPONENT_TRINARY_ARG2, (yyvsp[(3) - (5)].comp), (yyvsp[(5) - (5)].comp))));
+                { (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_TRINARY, state->make_operator ("?", 3),
+				    state->fill_comp (DEMANGLE_COMPONENT_TRINARY_ARG1, (yyvsp[-4].comp),
+						 state->fill_comp (DEMANGLE_COMPONENT_TRINARY_ARG2, (yyvsp[-2].comp), (yyvsp[0].comp))));
 		}
+#line 3146 "cp-name-parser.c.tmp"
     break;
 
   case 193:
-
-/* Line 1455 of yacc.c  */
 #line 1154 "cp-name-parser.y"
-    {
+                {
 		  /* Match the whitespacing of cplus_demangle_operators.
 		     It would abort on unrecognized string otherwise.  */
-		  (yyval.comp) = state->d_unary ("sizeof ", (yyvsp[(3) - (4)].comp));
+		  (yyval.comp) = state->d_unary ("sizeof ", (yyvsp[-1].comp));
 		}
+#line 3156 "cp-name-parser.c.tmp"
     break;
 
   case 194:
-
-/* Line 1455 of yacc.c  */
 #line 1163 "cp-name-parser.y"
-    { struct demangle_component *i;
+                { struct demangle_component *i;
 		  i = state->make_name ("1", 1);
 		  (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_LITERAL,
 				    state->make_builtin_type ( "bool"),
 				    i);
 		}
+#line 3167 "cp-name-parser.c.tmp"
     break;
 
   case 195:
-
-/* Line 1455 of yacc.c  */
 #line 1172 "cp-name-parser.y"
-    { struct demangle_component *i;
+                { struct demangle_component *i;
 		  i = state->make_name ("0", 1);
 		  (yyval.comp) = state->fill_comp (DEMANGLE_COMPONENT_LITERAL,
 				    state->make_builtin_type ("bool"),
 				    i);
 		}
+#line 3178 "cp-name-parser.c.tmp"
     break;
 
 
+#line 3182 "cp-name-parser.c.tmp"
 
-/* Line 1455 of yacc.c  */
-#line 3531 "cp-name-parser.c.tmp"
       default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
       yyerror (state, YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (state, yymsg);
-	  }
-	else
-	  {
-	    yyerror (state, YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval, state);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval, state);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -3627,14 +3255,12 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -3647,39 +3273,42 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp, state);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp, state);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -3692,6 +3321,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -3699,7 +3329,8 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+
+#if !defined yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -3709,35 +3340,37 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval, state);
-  /* Do not reclaim the symbols of the rule which action triggered
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval, state);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp, state);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, state);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
 
+  return yyresult;
+}
 
-/* Line 1675 of yacc.c  */
 #line 1182 "cp-name-parser.y"
 
 
@@ -4741,4 +4374,3 @@ main (int argc, char **argv)
 }
 
 #endif
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-name-parser.y ./gdb/cp-name-parser.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-name-parser.y	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cp-name-parser.y	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* YACC parser for C++ names, for GDB.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    Parts of the lexer are based on c-exp.y from GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-namespace.c ./gdb/cp-namespace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-namespace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cp-namespace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Helper routines for C++ support in GDB.
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    Contributed by David Carlton and by Kealia, Inc.
 
@@ -224,7 +224,7 @@ cp_lookup_bare_symbol (const struct lang
       /* If TYPE_NAME is NULL, abandon trying to find this symbol.
 	 This can happen for lambda functions compiled with clang++,
 	 which outputs no name for the container class.  */
-      if (TYPE_NAME (type) == NULL)
+      if (type->name () == NULL)
 	return {};
 
       /* Look for symbol NAME in this class.  */
@@ -278,8 +278,8 @@ cp_search_static_and_baseclasses (const
 
   /* If the scope is a function/method, then look up NESTED as a local
      static variable.  E.g., "print 'function()::static_var'".  */
-  if ((TYPE_CODE (scope_type) == TYPE_CODE_FUNC
-       || TYPE_CODE (scope_type) == TYPE_CODE_METHOD)
+  if ((scope_type->code () == TYPE_CODE_FUNC
+       || scope_type->code () == TYPE_CODE_METHOD)
       && domain == VAR_DOMAIN)
     return lookup_symbol (nested, SYMBOL_BLOCK_VALUE (scope_sym.symbol),
 			  VAR_DOMAIN, NULL);
@@ -516,7 +516,7 @@ cp_lookup_symbol_imports_or_template (co
 			  domain_name (domain));
     }
 
-  if (function != NULL && SYMBOL_LANGUAGE (function) == language_cplus)
+  if (function != NULL && function->language () == language_cplus)
     {
       /* Search the function's template parameters.  */
       if (SYMBOL_IS_CPLUS_TEMPLATE_FUNCTION (function))
@@ -918,7 +918,7 @@ cp_lookup_nested_symbol (struct type *pa
 
   if (symbol_lookup_debug)
     {
-      const char *type_name = TYPE_NAME (saved_parent_type);
+      const char *type_name = saved_parent_type->name ();
 
       fprintf_unfiltered (gdb_stdlog,
 			  "cp_lookup_nested_symbol (%s, %s, %s, %s)\n",
@@ -927,7 +927,7 @@ cp_lookup_nested_symbol (struct type *pa
 			  domain_name (domain));
     }
 
-  switch (TYPE_CODE (parent_type))
+  switch (parent_type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_NAMESPACE:
@@ -935,7 +935,7 @@ cp_lookup_nested_symbol (struct type *pa
     case TYPE_CODE_ENUM:
     /* NOTE: Handle modules here as well, because Fortran is re-using the C++
        specific code to lookup nested symbols in modules, by calling the
-       function pointer la_lookup_symbol_nonlocal, which ends up here.  */
+       method lookup_symbol_nonlocal, which ends up here.  */
     case TYPE_CODE_MODULE:
       {
 	int size;
@@ -1061,8 +1061,9 @@ maintenance_cplus_namespace (const char
   printf_unfiltered (_("The `maint namespace' command was removed.\n"));
 }
 
+void _initialize_cp_namespace ();
 void
-_initialize_cp_namespace (void)
+_initialize_cp_namespace ()
 {
   struct cmd_list_element *cmd;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-support.c ./gdb/cp-support.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-support.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cp-support.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Helper routines for C++ support in GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by MontaVista Software.
 
@@ -183,8 +183,8 @@ inspect_type (struct demangle_parse_info
 	}
 
       /* If the type is a typedef or namespace alias, replace it.  */
-      if (TYPE_CODE (otype) == TYPE_CODE_TYPEDEF
-	  || TYPE_CODE (otype) == TYPE_CODE_NAMESPACE)
+      if (otype->code () == TYPE_CODE_TYPEDEF
+	  || otype->code () == TYPE_CODE_NAMESPACE)
 	{
 	  long len;
 	  int is_anon;
@@ -207,21 +207,21 @@ inspect_type (struct demangle_parse_info
 
 	     If the symbol is typedef and its type name is the same
 	     as the symbol's name, e.g., "typedef struct foo foo;".  */
-	  if (TYPE_NAME (type) != nullptr
-	      && strcmp (TYPE_NAME (type), name) == 0)
+	  if (type->name () != nullptr
+	      && strcmp (type->name (), name) == 0)
 	    return 0;
 
-	  is_anon = (TYPE_NAME (type) == NULL
-		     && (TYPE_CODE (type) == TYPE_CODE_ENUM
-			 || TYPE_CODE (type) == TYPE_CODE_STRUCT
-			 || TYPE_CODE (type) == TYPE_CODE_UNION));
+	  is_anon = (type->name () == NULL
+		     && (type->code () == TYPE_CODE_ENUM
+			 || type->code () == TYPE_CODE_STRUCT
+			 || type->code () == TYPE_CODE_UNION));
 	  if (is_anon)
 	    {
 	      struct type *last = otype;
 
 	      /* Find the last typedef for the type.  */
 	      while (TYPE_TARGET_TYPE (last) != NULL
-		     && (TYPE_CODE (TYPE_TARGET_TYPE (last))
+		     && (TYPE_TARGET_TYPE (last)->code ()
 			 == TYPE_CODE_TYPEDEF))
 		last = TYPE_TARGET_TYPE (last);
 
@@ -274,12 +274,13 @@ inspect_type (struct demangle_parse_info
 
 		 Canonicalize the name again, and store it in the
 		 current node (RET_COMP).  */
-	      std::string canon = cp_canonicalize_string_no_typedefs (name);
+	      gdb::unique_xmalloc_ptr<char> canon
+		= cp_canonicalize_string_no_typedefs (name);
 
-	      if (!canon.empty ())
+	      if (canon != nullptr)
 		{
 		  /* Copy the canonicalization into the obstack.  */
-		  name = copy_string_to_obstack (&info->obstack, canon.c_str (), &len);
+		  name = copy_string_to_obstack (&info->obstack, canon.get (), &len);
 		}
 
 	      ret_comp->u.s_name.s = name;
@@ -293,6 +294,42 @@ inspect_type (struct demangle_parse_info
   return 0;
 }
 
+/* Helper for replace_typedefs_qualified_name to handle
+   DEMANGLE_COMPONENT_TEMPLATE.  TMPL is the template node.  BUF is
+   the buffer that holds the qualified name being built by
+   replace_typedefs_qualified_name.  REPL is the node that will be
+   rewritten as a DEMANGLE_COMPONENT_NAME node holding the 'template
+   plus template arguments' name with typedefs replaced.  */
+
+static bool
+replace_typedefs_template (struct demangle_parse_info *info,
+			   string_file &buf,
+			   struct demangle_component *tmpl,
+			   struct demangle_component *repl,
+			   canonicalization_ftype *finder,
+			   void *data)
+{
+  demangle_component *tmpl_arglist = d_right (tmpl);
+
+  /* Replace typedefs in the template argument list.  */
+  replace_typedefs (info, tmpl_arglist, finder, data);
+
+  /* Convert 'template + replaced template argument list' to a string
+     and replace the REPL node.  */
+  gdb::unique_xmalloc_ptr<char> tmpl_str = cp_comp_to_string (tmpl, 100);
+  if (tmpl_str == nullptr)
+    {
+      /* If something went astray, abort typedef substitutions.  */
+      return false;
+    }
+  buf.puts (tmpl_str.get ());
+
+  repl->type = DEMANGLE_COMPONENT_NAME;
+  repl->u.s_name.s = obstack_strdup (&info->obstack, buf.string ());
+  repl->u.s_name.len = buf.size ();
+  return true;
+}
+
 /* Replace any typedefs appearing in the qualified name
    (DEMANGLE_COMPONENT_QUAL_NAME) represented in RET_COMP for the name parse
    given in INFO.  */
@@ -313,6 +350,29 @@ replace_typedefs_qualified_name (struct
      substituted name.  */
   while (comp->type == DEMANGLE_COMPONENT_QUAL_NAME)
     {
+      if (d_left (comp)->type == DEMANGLE_COMPONENT_TEMPLATE)
+	{
+	  /* Convert 'template + replaced template argument list' to a
+	     string and replace the top DEMANGLE_COMPONENT_QUAL_NAME
+	     node.  */
+	  if (!replace_typedefs_template (info, buf,
+					  d_left (comp), d_left (ret_comp),
+					  finder, data))
+	    return;
+
+	  buf.clear ();
+	  d_right (ret_comp) = d_right (comp);
+	  comp = ret_comp;
+
+	  /* Fallback to DEMANGLE_COMPONENT_NAME processing.  We want
+	     to call inspect_type for this template, in case we have a
+	     template alias, like:
+	       template<typename T> using alias = base<int, t>;
+	     in which case we want inspect_type to do a replacement like:
+	       alias<int> -> base<int, int>
+	  */
+	}
+
       if (d_left (comp)->type == DEMANGLE_COMPONENT_NAME)
 	{
 	  struct demangle_component newobj;
@@ -369,11 +429,20 @@ replace_typedefs_qualified_name (struct
       comp = d_right (comp);
     }
 
-  /* If the next component is DEMANGLE_COMPONENT_NAME, save the qualified
-     name assembled above and append the name given by COMP.  Then use this
-     reassembled name to check for a typedef.  */
-
-  if (comp->type == DEMANGLE_COMPONENT_NAME)
+  /* If the next component is DEMANGLE_COMPONENT_TEMPLATE or
+     DEMANGLE_COMPONENT_NAME, save the qualified name assembled above
+     and append the name given by COMP.  Then use this reassembled
+     name to check for a typedef.  */
+
+  if (comp->type == DEMANGLE_COMPONENT_TEMPLATE)
+    {
+      /* Replace the top (DEMANGLE_COMPONENT_QUAL_NAME) node with a
+	 DEMANGLE_COMPONENT_NAME node containing the whole name.  */
+      if (!replace_typedefs_template (info, buf, comp, ret_comp, finder, data))
+	return;
+      inspect_type (info, ret_comp, finder, data);
+    }
+  else if (comp->type == DEMANGLE_COMPONENT_NAME)
     {
       buf.write (comp->u.s_name.s, comp->u.s_name.len);
 
@@ -506,16 +575,15 @@ replace_typedefs (struct demangle_parse_
 
 /* Parse STRING and convert it to canonical form, resolving any
    typedefs.  If parsing fails, or if STRING is already canonical,
-   return the empty string.  Otherwise return the canonical form.  If
+   return nullptr.  Otherwise return the canonical form.  If
    FINDER is not NULL, then type components are passed to FINDER to be
    looked up.  DATA is passed verbatim to FINDER.  */
 
-std::string
+gdb::unique_xmalloc_ptr<char>
 cp_canonicalize_string_full (const char *string,
 			     canonicalization_ftype *finder,
 			     void *data)
 {
-  std::string ret;
   unsigned int estimated_len;
   std::unique_ptr<demangle_parse_info> info;
 
@@ -531,41 +599,42 @@ cp_canonicalize_string_full (const char
 							    estimated_len);
       gdb_assert (us);
 
-      ret = us.get ();
       /* Finally, compare the original string with the computed
 	 name, returning NULL if they are the same.  */
-      if (ret == string)
-	return std::string ();
+      if (strcmp (us.get (), string) == 0)
+	return nullptr;
+
+      return us;
     }
 
-  return ret;
+  return nullptr;
 }
 
 /* Like cp_canonicalize_string_full, but always passes NULL for
    FINDER.  */
 
-std::string
+gdb::unique_xmalloc_ptr<char>
 cp_canonicalize_string_no_typedefs (const char *string)
 {
   return cp_canonicalize_string_full (string, NULL, NULL);
 }
 
 /* Parse STRING and convert it to canonical form.  If parsing fails,
-   or if STRING is already canonical, return the empty string.
+   or if STRING is already canonical, return nullptr.
    Otherwise return the canonical form.  */
 
-std::string
+gdb::unique_xmalloc_ptr<char>
 cp_canonicalize_string (const char *string)
 {
   std::unique_ptr<demangle_parse_info> info;
   unsigned int estimated_len;
 
   if (cp_already_canonical (string))
-    return std::string ();
+    return nullptr;
 
   info = cp_demangled_name_to_comp (string, NULL);
   if (info == NULL)
-    return std::string ();
+    return nullptr;
 
   estimated_len = strlen (string) * 2;
   gdb::unique_xmalloc_ptr<char> us (cp_comp_to_string (info->tree,
@@ -575,15 +644,13 @@ cp_canonicalize_string (const char *stri
     {
       warning (_("internal error: string \"%s\" failed to be canonicalized"),
 	       string);
-      return std::string ();
+      return nullptr;
     }
 
-  std::string ret (us.get ());
-
-  if (ret == string)
-    return std::string ();
+  if (strcmp (us.get (), string) == 0)
+    return nullptr;
 
-  return ret;
+  return us;
 }
 
 /* Convert a mangled name to a demangle_component tree.  *MEMORY is
@@ -1268,18 +1335,18 @@ add_symbol_overload_list_adl_namespace (
   const char *type_name;
   int i, prefix_len;
 
-  while (TYPE_CODE (type) == TYPE_CODE_PTR
+  while (type->code () == TYPE_CODE_PTR
 	 || TYPE_IS_REFERENCE (type)
-         || TYPE_CODE (type) == TYPE_CODE_ARRAY
-         || TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+         || type->code () == TYPE_CODE_ARRAY
+         || type->code () == TYPE_CODE_TYPEDEF)
     {
-      if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
-	type = check_typedef(type);
+      if (type->code () == TYPE_CODE_TYPEDEF)
+	type = check_typedef (type);
       else
 	type = TYPE_TARGET_TYPE (type);
     }
 
-  type_name = TYPE_NAME (type);
+  type_name = type->name ();
 
   if (type_name == NULL)
     return;
@@ -1297,7 +1364,7 @@ add_symbol_overload_list_adl_namespace (
     }
 
   /* Check public base type */
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
       {
 	if (BASETYPE_VIA_PUBLIC (type, i))
@@ -1451,7 +1518,7 @@ cp_lookup_rtti_type (const char *name, c
 
   rtti_type = check_typedef (SYMBOL_TYPE (rtti_sym));
 
-  switch (TYPE_CODE (rtti_type))
+  switch (rtti_type->code ())
     {
     case TYPE_CODE_STRUCT:
       break;
@@ -1548,11 +1615,10 @@ gdb_demangle (const char *name, int opti
   int crash_signal = 0;
 
 #ifdef HAVE_WORKING_FORK
-  scoped_restore restore_segv
-    = make_scoped_restore (&thread_local_segv_handler,
-			   catch_demangler_crashes
-			   ? gdb_demangle_signal_handler
-			   : nullptr);
+  scoped_segv_handler_restore restore_segv
+    (catch_demangler_crashes
+     ? gdb_demangle_signal_handler
+     : nullptr);
 
   bool core_dump_allowed = gdb_demangle_attempt_core_dump;
   SIGJMP_BUF jmp_buf;
@@ -1609,15 +1675,6 @@ gdb_demangle (const char *name, int opti
 
 /* See cp-support.h.  */
 
-int
-gdb_sniff_from_mangled_name (const char *mangled, char **demangled)
-{
-  *demangled = gdb_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
-  return *demangled != NULL;
-}
-
-/* See cp-support.h.  */
-
 unsigned int
 cp_search_name_hash (const char *search_name)
 {
@@ -2118,18 +2175,6 @@ test_cp_remove_params ()
 
 #endif /* GDB_SELF_CHECK */
 
-/* Don't allow just "maintenance cplus".  */
-
-static  void
-maint_cplus_command (const char *arg, int from_tty)
-{
-  printf_unfiltered (_("\"maintenance cplus\" must be followed "
-		       "by the name of a command.\n"));
-  help_list (maint_cplus_cmd_list,
-	     "maintenance cplus ",
-	     all_commands, gdb_stdout);
-}
-
 /* This is a front end for cp_find_first_component, for unit testing.
    Be careful when using it: see the NOTE above
    cp_find_first_component.  */
@@ -2163,15 +2208,15 @@ info_vtbl_command (const char *arg, int
   cplus_print_vtable (value);
 }
 
+void _initialize_cp_support ();
 void
-_initialize_cp_support (void)
+_initialize_cp_support ()
 {
-  add_prefix_cmd ("cplus", class_maintenance,
-		  maint_cplus_command,
-		  _("C++ maintenance commands."),
-		  &maint_cplus_cmd_list,
-		  "maintenance cplus ",
-		  0, &maintenancelist);
+  add_basic_prefix_cmd ("cplus", class_maintenance,
+			_("C++ maintenance commands."),
+			&maint_cplus_cmd_list,
+			"maintenance cplus ",
+			0, &maintenancelist);
   add_alias_cmd ("cp", "cplus",
 		 class_maintenance, 1,
 		 &maintenancelist);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-support.h ./gdb/cp-support.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-support.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cp-support.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Helper routines for C++ support in GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by MontaVista Software.
    Namespace support contributed by David Carlton.
@@ -77,15 +77,16 @@ struct demangle_parse_info
 
 /* Functions from cp-support.c.  */
 
-extern std::string cp_canonicalize_string (const char *string);
+extern gdb::unique_xmalloc_ptr<char> cp_canonicalize_string
+  (const char *string);
 
-extern std::string cp_canonicalize_string_no_typedefs (const char *string);
+extern gdb::unique_xmalloc_ptr<char> cp_canonicalize_string_no_typedefs
+  (const char *string);
 
 typedef const char *(canonicalization_ftype) (struct type *, void *);
 
-extern std::string cp_canonicalize_string_full (const char *string,
-						canonicalization_ftype *finder,
-						void *data);
+extern gdb::unique_xmalloc_ptr<char> cp_canonicalize_string_full
+  (const char *string, canonicalization_ftype *finder, void *data);
 
 extern char *cp_class_name_from_physname (const char *physname);
 
@@ -126,8 +127,7 @@ extern struct type *cp_lookup_rtti_type
    "function" or "bar::function" in all namespaces is possible.  */
 extern unsigned int cp_search_name_hash (const char *search_name);
 
-/* Implement the "la_get_symbol_name_matcher" language_defn method for
-   C++.  */
+/* Implement the "get_symbol_name_matcher" language_defn method for C++.  */
 extern symbol_name_matcher_ftype *cp_get_symbol_name_matcher
   (const lookup_name_info &lookup_name);
 
@@ -190,8 +190,4 @@ extern struct cmd_list_element *maint_cp
 
 char *gdb_demangle (const char *name, int options);
 
-/* Like gdb_demangle, but suitable for use as la_sniff_from_mangled_name.  */
-
-int gdb_sniff_from_mangled_name (const char *mangled, char **demangled);
-
 #endif /* CP_SUPPORT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-valprint.c ./gdb/cp-valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cp-valprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cp-valprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for printing C++ values for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -47,11 +47,8 @@ static void cp_print_static_field (struc
 				   struct ui_file *, int,
 				   const struct value_print_options *);
 
-static void cp_print_value (struct type *, struct type *,
-			    LONGEST,
-			    CORE_ADDR, struct ui_file *,
-			    int, struct value *,
-			    const struct value_print_options *,
+static void cp_print_value (struct value *, struct ui_file *,
+			    int, const struct value_print_options *,
 			    struct type **);
 
 
@@ -64,7 +61,7 @@ const char vtbl_ptr_name[] = "__vtbl_ptr
 int
 cp_is_vtbl_ptr_type (struct type *type)
 {
-  const char *type_name = TYPE_NAME (type);
+  const char *type_name = type->name ();
 
   return (type_name != NULL && !strcmp (type_name, vtbl_ptr_name));
 }
@@ -77,25 +74,25 @@ cp_is_vtbl_member (struct type *type)
 {
   /* With older versions of g++, the vtbl field pointed to an array of
      structures.  Nowadays it points directly to the structure.  */
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  if (type->code () == TYPE_CODE_PTR)
     {
       type = TYPE_TARGET_TYPE (type);
-      if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+      if (type->code () == TYPE_CODE_ARRAY)
 	{
 	  type = TYPE_TARGET_TYPE (type);
-	  if (TYPE_CODE (type) == TYPE_CODE_STRUCT    /* if not using thunks */
-	      || TYPE_CODE (type) == TYPE_CODE_PTR)   /* if using thunks */
+	  if (type->code () == TYPE_CODE_STRUCT    /* if not using thunks */
+	      || type->code () == TYPE_CODE_PTR)   /* if using thunks */
 	    {
 	      /* Virtual functions tables are full of pointers
 	         to virtual functions.  */
 	      return cp_is_vtbl_ptr_type (type);
 	    }
 	}
-      else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)  /* if not using thunks */
+      else if (type->code () == TYPE_CODE_STRUCT)  /* if not using thunks */
 	{
 	  return cp_is_vtbl_ptr_type (type);
 	}
-      else if (TYPE_CODE (type) == TYPE_CODE_PTR)     /* if using thunks */
+      else if (type->code () == TYPE_CODE_PTR)     /* if using thunks */
 	{
 	  /* The type name of the thunk pointer is NULL when using
 	     dwarf2.  We could test for a pointer to a function, but
@@ -121,11 +118,8 @@ cp_is_vtbl_member (struct type *type)
    or zero if called from top level.  */
 
 void
-cp_print_value_fields (struct type *type, struct type *real_type,
-		       LONGEST offset,
-		       CORE_ADDR address, struct ui_file *stream,
-		       int recurse, struct value *val,
-		       const struct value_print_options *options,
+cp_print_value_fields (struct value *val, struct ui_file *stream,
+		       int recurse, const struct value_print_options *options,
 		       struct type **dont_print_vb,
 		       int dont_print_statmem)
 {
@@ -133,8 +127,8 @@ cp_print_value_fields (struct type *type
   int fields_seen = 0;
   static int last_set_recurse = -1;
 
-  type = check_typedef (type);
-  
+  struct type *type = check_typedef (value_type (val));
+
   if (recurse == 0)
     {
       /* Any object can be left on obstacks only during an unexpected
@@ -155,17 +149,14 @@ cp_print_value_fields (struct type *type
     }
 
   fprintf_filtered (stream, "{");
-  len = TYPE_NFIELDS (type);
+  len = type->num_fields ();
   n_baseclasses = TYPE_N_BASECLASSES (type);
 
   /* First, print out baseclasses such that we don't print
      duplicates of virtual baseclasses.  */
 
   if (n_baseclasses > 0)
-    cp_print_value (type, real_type,
-		    offset, address, stream,
-		    recurse + 1, val, options,
-		    dont_print_vb);
+    cp_print_value (val, stream, recurse + 1, options, dont_print_vb);
 
   /* Second, print out data fields */
 
@@ -200,7 +191,7 @@ cp_print_value_fields (struct type *type
 
 	  /* If requested, skip printing of static fields.  */
 	  if (!options->static_field_print
-	      && field_is_static (&TYPE_FIELD (type, i)))
+	      && field_is_static (&type->field (i)))
 	    continue;
 
 	  if (fields_seen)
@@ -216,7 +207,7 @@ cp_print_value_fields (struct type *type
 		  fprintf_filtered (stream, "\n");
 		  print_spaces_filtered (2 + 2 * recurse, stream);
 		  fputs_filtered ("members of ", stream);
-		  fputs_filtered (TYPE_NAME (type), stream);
+		  fputs_filtered (type->name (), stream);
 		  fputs_filtered (":", stream);
 		}
 	    }
@@ -232,14 +223,19 @@ cp_print_value_fields (struct type *type
 	      wrap_here (n_spaces (2 + 2 * recurse));
 	    }
 
-	  annotate_field_begin (TYPE_FIELD_TYPE (type, i));
+	  annotate_field_begin (type->field (i).type ());
 
-	  if (field_is_static (&TYPE_FIELD (type, i)))
-	    fputs_filtered ("static ", stream);
-	  fprintf_symbol_filtered (stream,
-				   TYPE_FIELD_NAME (type, i),
-				   current_language->la_language,
-				   DMGL_PARAMS | DMGL_ANSI);
+	  if (field_is_static (&type->field (i)))
+	    {
+	      fputs_filtered ("static ", stream);
+	      fprintf_symbol_filtered (stream,
+				       TYPE_FIELD_NAME (type, i),
+				       current_language->la_language,
+				       DMGL_PARAMS | DMGL_ANSI);
+	    }
+	  else
+	    fputs_styled (TYPE_FIELD_NAME (type, i),
+			  variable_name_style.style (), stream);
 	  annotate_field_name_end ();
 
 	  /* We tweak various options in a few cases below.  */
@@ -260,7 +256,7 @@ cp_print_value_fields (struct type *type
 	    }
 	  annotate_field_value ();
 
-	  if (!field_is_static (&TYPE_FIELD (type, i))
+	  if (!field_is_static (&type->field (i))
 	      && TYPE_FIELD_PACKED (type, i))
 	    {
 	      struct value *v;
@@ -285,7 +281,8 @@ cp_print_value_fields (struct type *type
 		{
 		  opts->deref_ref = 0;
 
-		  v = value_field_bitfield (type, i, valaddr, offset, val);
+		  v = value_field_bitfield (type, i, valaddr,
+					    value_embedded_offset (val), val);
 
 		  common_val_print (v, stream, recurse + 1,
 				    opts, current_language);
@@ -298,13 +295,13 @@ cp_print_value_fields (struct type *type
 		  fputs_styled ("<optimized out or zero length>",
 				metadata_style.style (), stream);
 		}
-	      else if (field_is_static (&TYPE_FIELD (type, i)))
+	      else if (field_is_static (&type->field (i)))
 		{
 		  try
 		    {
 		      struct value *v = value_static_field (type, i);
 
-		      cp_print_static_field (TYPE_FIELD_TYPE (type, i),
+		      cp_print_static_field (type->field (i).type (),
 					     v, stream, recurse + 1,
 					     opts);
 		    }
@@ -317,13 +314,14 @@ cp_print_value_fields (struct type *type
 		}
 	      else if (i == vptr_fieldno && type == vptr_basetype)
 		{
-		  int i_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
-		  struct type *i_type = TYPE_FIELD_TYPE (type, i);
+		  int i_offset = TYPE_FIELD_BITPOS (type, i) / 8;
+		  struct type *i_type = type->field (i).type ();
 
 		  if (valprint_check_validity (stream, i_type, i_offset, val))
 		    {
 		      CORE_ADDR addr;
-		      
+
+		      i_offset += value_embedded_offset (val);
 		      addr = extract_typed_address (valaddr + i_offset, i_type);
 		      print_function_pointer_address (opts,
 						      get_type_arch (type),
@@ -332,12 +330,10 @@ cp_print_value_fields (struct type *type
 		}
 	      else
 		{
+		  struct value *v = value_primitive_field (val, 0, i, type);
 		  opts->deref_ref = 0;
-		  val_print (TYPE_FIELD_TYPE (type, i),
-			     offset + TYPE_FIELD_BITPOS (type, i) / 8,
-			     address,
-			     stream, recurse + 1, val, opts,
-			     current_language);
+		  common_val_print (v, stream, recurse + 1, opts,
+				    current_language);
 		}
 	    }
 	  annotate_field_end ();
@@ -360,7 +356,7 @@ cp_print_value_fields (struct type *type
 	    {
 	      obstack_final_size =
 		obstack_object_size (&dont_print_stat_array_obstack);
-	      
+
 	      if (obstack_final_size > stat_array_obstack_initial_size)
 		{
 		  void *free_to_ptr =
@@ -385,69 +381,20 @@ cp_print_value_fields (struct type *type
   fprintf_filtered (stream, "}");
 }
 
-/* Like cp_print_value_fields, but find the runtime type of the object
-   and pass it as the `real_type' argument to cp_print_value_fields.
-   This function is a hack to work around the fact that
-   common_val_print passes the embedded offset to val_print, but not
-   the enclosing type.  */
-
-void
-cp_print_value_fields_rtti (struct type *type,
-			    const gdb_byte *valaddr, LONGEST offset,
-			    CORE_ADDR address,
-			    struct ui_file *stream, int recurse,
-			    struct value *val,
-			    const struct value_print_options *options,
-			    struct type **dont_print_vb, 
-			    int dont_print_statmem)
-{
-  struct type *real_type = NULL;
-
-  /* We require all bits to be valid in order to attempt a
-     conversion.  */
-  if (!value_bits_any_optimized_out (val,
-				     TARGET_CHAR_BIT * offset,
-				     TARGET_CHAR_BIT * TYPE_LENGTH (type)))
-    {
-      struct value *value;
-      int full, using_enc;
-      LONGEST top;
-
-      /* Ugh, we have to convert back to a value here.  */
-      value = value_from_contents_and_address (type, valaddr + offset,
-					       address + offset);
-      type = value_type (value);
-      /* We don't actually care about most of the result here -- just
-	 the type.  We already have the correct offset, due to how
-	 val_print was initially called.  */
-      real_type = value_rtti_type (value, &full, &top, &using_enc);
-    }
-
-  if (!real_type)
-    real_type = type;
-
-  cp_print_value_fields (type, real_type, offset,
-			 address, stream, recurse, val, options,
-			 dont_print_vb, dont_print_statmem);
-}
-
 /* Special val_print routine to avoid printing multiple copies of
    virtual baseclasses.  */
 
 static void
-cp_print_value (struct type *type, struct type *real_type,
-		LONGEST offset,
-		CORE_ADDR address, struct ui_file *stream,
-		int recurse, struct value *val,
-		const struct value_print_options *options,
+cp_print_value (struct value *val, struct ui_file *stream,
+		int recurse, const struct value_print_options *options,
 		struct type **dont_print_vb)
 {
+  struct type *type = check_typedef (value_type (val));
+  CORE_ADDR address = value_address (val);
   struct type **last_dont_print
     = (struct type **) obstack_next_free (&dont_print_vb_obstack);
   struct obstack tmp_obstack = dont_print_vb_obstack;
   int i, n_baseclasses = TYPE_N_BASECLASSES (type);
-  LONGEST thisoffset;
-  struct type *thistype;
   const gdb_byte *valaddr = value_contents_for_printing (val);
 
   if (dont_print_vb == 0)
@@ -464,7 +411,7 @@ cp_print_value (struct type *type, struc
       LONGEST boffset = 0;
       int skip = 0;
       struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
-      const char *basename = TYPE_NAME (baseclass);
+      const char *basename = baseclass->name ();
       struct value *base_val = NULL;
 
       if (BASETYPE_VIA_VIRTUAL (type, i))
@@ -482,12 +429,11 @@ cp_print_value (struct type *type, struc
 	  obstack_ptr_grow (&dont_print_vb_obstack, baseclass);
 	}
 
-      thisoffset = offset;
-      thistype = real_type;
-
       try
 	{
-	  boffset = baseclass_offset (type, i, valaddr, offset, address, val);
+	  boffset = baseclass_offset (type, i, valaddr,
+				      value_embedded_offset (val),
+				      address, val);
 	}
       catch (const gdb_exception_error &ex)
 	{
@@ -505,8 +451,7 @@ cp_print_value (struct type *type, struc
 		 clobbered by the user program. Make sure that it
 		 still points to a valid memory location.  */
 
-	      if ((boffset + offset) < 0
-		  || (boffset + offset) >= TYPE_LENGTH (real_type))
+	      if (boffset < 0 || boffset >= TYPE_LENGTH (type))
 		{
 		  gdb::byte_vector buf (TYPE_LENGTH (baseclass));
 
@@ -517,9 +462,7 @@ cp_print_value (struct type *type, struc
 							      buf.data (),
 							      address + boffset);
 		  baseclass = value_type (base_val);
-		  thisoffset = 0;
 		  boffset = 0;
-		  thistype = baseclass;
 		}
 	      else
 		{
@@ -561,22 +504,19 @@ cp_print_value (struct type *type, struc
 	    }
 	  else
 	    {
+	      struct value *baseclass_val = value_primitive_field (val, 0,
+								   i, type);
+
 	      /* Attempt to run an extension language pretty-printer on the
 		 baseclass if possible.  */
 	      if (!options->raw)
 		result
-		  = apply_ext_lang_val_pretty_printer (baseclass,
-						       thisoffset + boffset,
-						       value_address (base_val),
-						       stream, recurse,
-						       base_val, options,
+		  = apply_ext_lang_val_pretty_printer (baseclass_val, stream,
+						       recurse, options,
 						       current_language);
 
 	      if (!result)
-		cp_print_value_fields (baseclass, thistype,
-				       thisoffset + boffset,
-				       value_address (base_val),
-				       stream, recurse, base_val, options,
+		cp_print_value_fields (baseclass_val, stream, recurse, options,
 				       ((struct type **)
 					obstack_base (&dont_print_vb_obstack)),
 				       0);
@@ -623,10 +563,10 @@ cp_print_static_field (struct type *type
     }
 
   struct type *real_type = check_typedef (type);
-  if (TYPE_CODE (real_type) == TYPE_CODE_STRUCT)
+  if (real_type->code () == TYPE_CODE_STRUCT)
     {
       CORE_ADDR *first_dont_print;
-      CORE_ADDR addr;
+      CORE_ADDR addr = value_address (val);
       int i;
 
       first_dont_print
@@ -636,7 +576,7 @@ cp_print_static_field (struct type *type
 
       while (--i >= 0)
 	{
-	  if (value_address (val) == first_dont_print[i])
+	  if (addr == first_dont_print[i])
 	    {
 	      fputs_styled (_("<same as static member of an already"
 			      " seen type>"),
@@ -645,17 +585,13 @@ cp_print_static_field (struct type *type
 	    }
 	}
 
-      addr = value_address (val);
       obstack_grow (&dont_print_statmem_obstack, (char *) &addr,
 		    sizeof (CORE_ADDR));
-      cp_print_value_fields (type, value_enclosing_type (val),
-			     value_embedded_offset (val), addr,
-			     stream, recurse, val,
-			     options, NULL, 1);
+      cp_print_value_fields (val, stream, recurse, options, NULL, 1);
       return;
     }
 
-  if (TYPE_CODE (real_type) == TYPE_CODE_ARRAY)
+  if (real_type->code () == TYPE_CODE_ARRAY)
     {
       struct type **first_dont_print;
       int i;
@@ -684,11 +620,7 @@ cp_print_static_field (struct type *type
 
   opts = *options;
   opts.deref_ref = 0;
-  val_print (type,
-	     value_embedded_offset (val),
-	     value_address (val),
-	     stream, recurse, val,
-	     &opts, current_language);
+  common_val_print (val, stream, recurse, &opts, current_language);
 }
 
 /* Find the field in *SELF, or its non-virtual base classes, with
@@ -706,7 +638,7 @@ cp_find_class_member (struct type **self
 
   *self_p = check_typedef (*self_p);
   self = *self_p;
-  len = TYPE_NFIELDS (self);
+  len = self->num_fields ();
 
   for (i = TYPE_N_BASECLASSES (self); i < len; i++)
     {
@@ -723,11 +655,11 @@ cp_find_class_member (struct type **self
   for (i = 0; i < TYPE_N_BASECLASSES (self); i++)
     {
       LONGEST bitpos = TYPE_FIELD_BITPOS (self, i);
-      LONGEST bitsize = 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (self, i));
+      LONGEST bitsize = 8 * TYPE_LENGTH (self->field (i).type ());
 
       if (offset >= bitpos && offset < bitpos + bitsize)
 	{
-	  *self_p = TYPE_FIELD_TYPE (self, i);
+	  *self_p = self->field (i).type ();
 	  cp_find_class_member (self_p, fieldno, offset - bitpos);
 	  return;
 	}
@@ -776,21 +708,23 @@ cp_print_class_member (const gdb_byte *v
       const char *name;
 
       fputs_filtered (prefix, stream);
-      name = TYPE_NAME (self_type);
+      name = self_type->name ();
       if (name)
 	fputs_filtered (name, stream);
       else
 	c_type_print_base (self_type, stream, 0, 0, &type_print_raw_options);
       fprintf_filtered (stream, "::");
-      fputs_filtered (TYPE_FIELD_NAME (self_type, fieldno), stream);
+      fputs_styled (TYPE_FIELD_NAME (self_type, fieldno),
+		    variable_name_style.style (), stream);
     }
   else
     fprintf_filtered (stream, "%ld", (long) val);
 }
 
 
+void _initialize_cp_valprint ();
 void
-_initialize_cp_valprint (void)
+_initialize_cp_valprint ()
 {
   obstack_begin (&dont_print_stat_array_obstack,
 		 32 * sizeof (struct type *));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cris-linux-tdep.c ./gdb/cris-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cris-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cris-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux on CRIS processors, for GDB.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    Contributed by Axis Communications AB.
    Written by Hendrik Ruijter, Stefan Andersson, Orjan Friberg,
@@ -47,8 +47,9 @@ cris_linux_init_abi (struct gdbarch_info
 
 }
 
+void _initialize_cris_linux_tdep ();
 void
-_initialize_cris_linux_tdep (void)
+_initialize_cris_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_cris, 0, GDB_OSABI_LINUX,
 			  cris_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cris-tdep.c ./gdb/cris-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cris-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cris-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target dependent code for CRIS, for GDB, the GNU debugger.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    Contributed by Axis Communications AB.
    Written by Hendrik Ruijter, Stefan Andersson, and Orjan Friberg.
@@ -25,7 +25,7 @@
 #include "frame-unwind.h"
 #include "frame-base.h"
 #include "trad-frame.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "symtab.h"
 #include "inferior.h"
 #include "gdbtypes.h"
@@ -37,6 +37,7 @@
 #include "osabi.h"
 #include "arch-utils.h"
 #include "regcache.h"
+#include "regset.h"
 
 #include "objfiles.h"
 
@@ -1804,8 +1805,8 @@ cris_return_value (struct gdbarch *gdbar
 		   struct type *type, struct regcache *regcache,
 		   gdb_byte *readbuf, const gdb_byte *writebuf)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT 
-      || TYPE_CODE (type) == TYPE_CODE_UNION
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION
       || TYPE_LENGTH (type) > 8)
     /* Structs, unions, and anything larger than 8 bytes (2 registers)
        goes on the stack.  */
@@ -3761,21 +3762,28 @@ typedef cris_elf_greg_t crisv32_elf_greg
 /* Unpack a cris_elf_gregset_t into GDB's register cache.  */
 
 static void 
-cris_supply_gregset (struct regcache *regcache, cris_elf_gregset_t *gregsetp)
+cris_supply_gregset (const struct regset *regset, struct regcache *regcache,
+		     int regnum, const void *gregs, size_t len)
 {
   struct gdbarch *gdbarch = regcache->arch ();
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
   int i;
-  cris_elf_greg_t *regp = *gregsetp;
+  const cris_elf_greg_t *regp = static_cast<const cris_elf_greg_t *>(gregs);
+
+  if (len != sizeof (cris_elf_gregset_t)
+      && len != sizeof (crisv32_elf_gregset_t))
+    warning (_("wrong size gregset struct in core file"));
+  gdb_assert (len >= sizeof (crisv32_elf_gregset_t));
 
   /* The kernel dumps all 32 registers as unsigned longs, but supply_register
      knows about the actual size of each register so that's no problem.  */
   for (i = 0; i < NUM_GENREGS + NUM_SPECREGS; i++)
     {
-      regcache->raw_supply (i, (char *)&regp[i]);
+      if (regnum == -1 || regnum == i)
+	regcache->raw_supply (i, (char *)&regp[i]);
     }
 
-  if (tdep->cris_version == 32)
+  if (tdep->cris_version == 32 && (regnum == -1 || regnum == ERP_REGNUM))
     {
       /* Needed to set pseudo-register PC for CRISv32.  */
       /* FIXME: If ERP is in a delay slot at this point then the PC will
@@ -3788,49 +3796,27 @@ cris_supply_gregset (struct regcache *re
     }
 }
 
-/*  Use a local version of this function to get the correct types for
-    regsets, until multi-arch core support is ready.  */
+static const struct regset cris_regset = {
+  nullptr,
+  cris_supply_gregset,
+  /* We don't need a collect function because we only use this for core files
+     (via iterate_over_regset_sections).  */
+  nullptr,
+  REGSET_VARIABLE_SIZE
+};
 
-static void
-fetch_core_registers (struct regcache *regcache,
-		      char *core_reg_sect, unsigned core_reg_size,
-                      int which, CORE_ADDR reg_addr)
+static void cris_iterate_over_regset_sections (struct gdbarch *gdbarch,
+					       iterate_over_regset_sections_cb *cb,
+					       void *cb_data,
+					       const struct regcache *regcache)
 {
-  cris_elf_gregset_t gregset;
-
-  switch (which)
-    {
-    case 0:
-      if (core_reg_size != sizeof (cris_elf_gregset_t)
-	  && core_reg_size != sizeof (crisv32_elf_gregset_t))
-        {
-          warning (_("wrong size gregset struct in core file"));
-        }
-      else
-        {
-          memcpy (&gregset, core_reg_sect, sizeof (gregset));
-          cris_supply_gregset (regcache, &gregset);
-        }
-
-    default:
-      /* We've covered all the kinds of registers we know about here,
-         so this must be something we wouldn't know what to do with
-         anyway.  Just ignore it.  */
-      break;
-    }
+  cb (".reg", sizeof (crisv32_elf_gregset_t), sizeof (crisv32_elf_gregset_t),
+      &cris_regset, NULL, cb_data);
 }
 
-static struct core_fns cris_elf_core_fns =
-{
-  bfd_target_elf_flavour,               /* core_flavour */
-  default_check_format,                 /* check_format */
-  default_core_sniffer,                 /* core_sniffer */
-  fetch_core_registers,                 /* core_read_registers */
-  NULL                                  /* next */
-};
-
+void _initialize_cris_tdep ();
 void
-_initialize_cris_tdep (void)
+_initialize_cris_tdep ()
 {
   gdbarch_register (bfd_arch_cris, cris_gdbarch_init, cris_dump_tdep);
   
@@ -3867,8 +3853,6 @@ Makes GDB use the NRP register instead o
 			   NULL, /* FIXME: i18n: Usage of Dwarf-2 CFI
 				    for CRIS is %d.  */
 			   &setlist, &showlist);
-
-  deprecated_add_core_fns (&cris_elf_core_fns);
 }
 
 /* Prints out all target specific values.  */
@@ -4058,6 +4042,7 @@ cris_gdbarch_init (struct gdbarch_info i
 
   set_gdbarch_breakpoint_kind_from_pc (gdbarch, cris_breakpoint_kind_from_pc);
   set_gdbarch_sw_breakpoint_from_kind (gdbarch, cris_sw_breakpoint_from_kind);
+  set_gdbarch_iterate_over_regset_sections (gdbarch, cris_iterate_over_regset_sections);
   
   if (tdep->cris_dwarf2_cfi == 1)
     {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cris-tdep.h ./gdb/cris-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/cris-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/cris-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target dependent code for CRIS, for GDB, the GNU debugger.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    Contributed by Axis Communications AB.
    Written by Hendrik Ruijter, Stefan Andersson, and Orjan Friberg.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/csky-linux-tdep.c ./gdb/csky-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/csky-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/csky-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux on CSKY.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    Contributed by C-SKY Microsystems and Mentor Graphics.
 
@@ -255,8 +255,9 @@ csky_linux_init_abi (struct gdbarch_info
 				&csky_linux_rt_sigreturn_tramp_frame);
 }
 
+void _initialize_csky_linux_tdep ();
 void
-_initialize_csky_linux_tdep (void)
+_initialize_csky_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_csky, 0, GDB_OSABI_LINUX,
 			  csky_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/csky-tdep.c ./gdb/csky-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/csky-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/csky-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the CSKY architecture, for GDB.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    Contributed by C-SKY Microsystems and Mentor Graphics.
 
@@ -49,7 +49,7 @@
 #include "floatformat.h"
 #include "remote.h"
 #include "target-descriptions.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "user-regs.h"
 #include "valprint.h"
 #include "csky-tdep.h"
@@ -267,7 +267,7 @@ csky_vector_type (struct gdbarch *gdbarc
 			       init_vector_type (bt->builtin_int8, 16));
 
   TYPE_VECTOR (t) = 1;
-  TYPE_NAME (t) = "builtin_type_vec128i";
+  t->set_name ("builtin_type_vec128i");
 
   return t;
 }
@@ -2240,8 +2240,9 @@ csky_gdbarch_init (struct gdbarch_info i
   return gdbarch;
 }
 
+void _initialize_csky_tdep ();
 void
-_initialize_csky_tdep (void)
+_initialize_csky_tdep ()
 {
 
   register_gdbarch_init (bfd_arch_csky, csky_gdbarch_init);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/csky-tdep.h ./gdb/csky-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/csky-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/csky-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the CSKY architecture, for GDB.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-support.h ./gdb/c-support.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-support.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/c-support.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Helper routines for C support in GDB.
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ctfread.c ./gdb/ctfread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ctfread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ctfread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Compact ANSI-C Type Format (CTF) support in GDB.
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -45,7 +45,7 @@
    The file header stores a magic number and version information, encoding
    flags, and the byte offset of each of the sections relative to the end of the
    header itself.  If the CTF data has been uniquified against another set of
-   CTF data, a reference to that data also appears in the the header.  This
+   CTF data, a reference to that data also appears in the header.  This
    reference is the name of the label corresponding to the types uniquified
    against.
 
@@ -81,20 +81,56 @@
 #include "block.h"
 #include "ctfread.h"
 #include "psympriv.h"
+
+#if ENABLE_LIBCTF
+
 #include "ctf.h"
 #include "ctf-api.h"
 
 static const struct objfile_key<htab, htab_deleter> ctf_tid_key;
-static const struct objfile_data *ctf_file_key;
+
+struct ctf_fp_info
+{
+  explicit ctf_fp_info (ctf_file_t *cfp) : fp (cfp) {}
+  ~ctf_fp_info ();
+  ctf_file_t *fp;
+};
+
+/* Cleanup function for the ctf_file_key data.  */
+ctf_fp_info::~ctf_fp_info ()
+{
+  if (!fp)
+    return;
+
+  ctf_archive_t *arc = ctf_get_arc (fp);
+  ctf_file_close (fp);
+  ctf_close (arc);
+}
+
+static const objfile_key<ctf_fp_info> ctf_file_key;
 
 /* A CTF context consists of a file pointer and an objfile pointer.  */
 
-typedef struct ctf_context
+struct ctf_context
 {
   ctf_file_t *fp;
   struct objfile *of;
   struct buildsym_compunit *builder;
-} ctf_context_t;
+};
+
+/* A partial symtab, specialized for this module.  */
+struct ctf_psymtab : public standard_psymtab
+{
+  ctf_psymtab (const char *filename, struct objfile *objfile, CORE_ADDR addr)
+    : standard_psymtab (filename, objfile, addr)
+  {
+  }
+
+  void read_symtab (struct objfile *) override;
+  void expand_psymtab (struct objfile *) override;
+
+  struct ctf_context *context;
+};
 
 /* The routines that read and process fields/members of a C struct, union,
    or enumeration, pass lists of data member fields in an instance of a
@@ -111,7 +147,7 @@ struct ctf_field_info
   std::vector<struct ctf_nextfield> fields;
 
   /* Context.  */
-  ctf_context_t *cur_context;
+  struct ctf_context *cur_context;
 
   /* Parent type.  */
   struct type *ptype;
@@ -128,30 +164,28 @@ struct ctf_field_info
 
 /* Local function prototypes */
 
-static void psymtab_to_symtab (struct partial_symtab *);
-
 static int ctf_add_type_cb (ctf_id_t tid, void *arg);
 
-static struct type *read_array_type (ctf_context_t *ccp, ctf_id_t tid);
+static struct type *read_array_type (struct ctf_context *cp, ctf_id_t tid);
 
-static struct type *read_pointer_type (ctf_context_t *ccp, ctf_id_t tid,
+static struct type *read_pointer_type (struct ctf_context *cp, ctf_id_t tid,
 				       ctf_id_t btid);
 
-static struct type *read_structure_type (ctf_context_t *ccp, ctf_id_t tid);
+static struct type *read_structure_type (struct ctf_context *cp, ctf_id_t tid);
 
-static struct type *read_enum_type (ctf_context_t *ccp, ctf_id_t tid);
+static struct type *read_enum_type (struct ctf_context *cp, ctf_id_t tid);
 
-static struct type *read_typedef_type (ctf_context_t *ccp, ctf_id_t tid,
+static struct type *read_typedef_type (struct ctf_context *cp, ctf_id_t tid,
 				       ctf_id_t btid, const char *name);
 
-static struct type *read_type_record (ctf_context_t *ccp, ctf_id_t tid);
+static struct type *read_type_record (struct ctf_context *cp, ctf_id_t tid);
 
-static void process_structure_type (ctf_context_t *ccp, ctf_id_t tid);
+static void process_structure_type (struct ctf_context *cp, ctf_id_t tid);
 
-static void process_struct_members (ctf_context_t *ccp, ctf_id_t tid,
+static void process_struct_members (struct ctf_context *cp, ctf_id_t tid,
 				    struct type *type);
 
-static struct symbol *new_symbol (ctf_context_t *ccp, struct type *type,
+static struct symbol *new_symbol (struct ctf_context *cp, struct type *type,
 				  ctf_id_t tid);
 
 struct ctf_tid_and_type
@@ -277,15 +311,15 @@ attach_fields_to_type (struct ctf_field_
     return;
 
   /* Record the field count, allocate space for the array of fields.  */
-  TYPE_NFIELDS (type) = nfields;
-  TYPE_FIELDS (type)
-    = (struct field *) TYPE_ZALLOC (type, sizeof (struct field) * nfields);
+  type->set_num_fields (nfields);
+  type->set_fields
+    ((struct field *) TYPE_ZALLOC (type, sizeof (struct field) * nfields));
 
   /* Copy the saved-up fields into the field vector.  */
   for (int i = 0; i < nfields; ++i)
     {
       struct ctf_nextfield &field = fip->fields[i];
-      TYPE_FIELD (type, i) = field.field;
+      type->field (i) = field.field;
     }
 }
 
@@ -299,7 +333,7 @@ ctf_init_float_type (struct objfile *obj
 		     const char *name,
 		     const char *name_hint)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   const struct floatformat **format;
   struct type *type;
 
@@ -323,7 +357,7 @@ ctf_add_member_cb (const char *name,
 		   void *arg)
 {
   struct ctf_field_info *fip = (struct ctf_field_info *) arg;
-  ctf_context_t *ccp = fip->cur_context;
+  struct ctf_context *ccp = fip->cur_context;
   struct ctf_nextfield new_field;
   struct field *fp;
   struct type *t;
@@ -348,7 +382,7 @@ ctf_add_member_cb (const char *name,
   if (kind == CTF_K_STRUCT || kind == CTF_K_UNION)
     process_struct_members (ccp, tid, t);
 
-  FIELD_TYPE (*fp) = t;
+  fp->set_type (t);
   SET_FIELD_BITPOS (*fp, offset / TARGET_CHAR_BIT);
   FIELD_BITSIZE (*fp) = get_bitsize (ccp->fp, tid, kind);
 
@@ -366,21 +400,21 @@ ctf_add_enum_member_cb (const char *name
   struct ctf_field_info *fip = (struct ctf_field_info *) arg;
   struct ctf_nextfield new_field;
   struct field *fp;
-  ctf_context_t *ccp = fip->cur_context;
+  struct ctf_context *ccp = fip->cur_context;
 
   fp = &new_field.field;
   FIELD_NAME (*fp) = name;
-  FIELD_TYPE (*fp) = NULL;
+  fp->set_type (NULL);
   SET_FIELD_ENUMVAL (*fp, enum_value);
   FIELD_BITSIZE (*fp) = 0;
 
   if (name != NULL)
     {
-      struct symbol *sym = allocate_symbol (ccp->of);
+      struct symbol *sym = new (&ccp->of->objfile_obstack) symbol;
       OBJSTAT (ccp->of, n_syms++);
 
-      SYMBOL_SET_LANGUAGE (sym, language_c, &ccp->of->objfile_obstack);
-      SYMBOL_SET_NAMES (sym, name, false, ccp->of);
+      sym->set_language (language_c, &ccp->of->objfile_obstack);
+      sym->compute_and_set_names (name, false, ccp->of->per_bfd);
       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
       SYMBOL_TYPE (sym) = fip->ptype;
@@ -396,7 +430,7 @@ ctf_add_enum_member_cb (const char *name
    domain from TID's kind, and its type from TYPE.  */
 
 static struct symbol *
-new_symbol (ctf_context_t *ccp, struct type *type, ctf_id_t tid)
+new_symbol (struct ctf_context *ccp, struct type *type, ctf_id_t tid)
 {
   struct objfile *objfile = ccp->of;
   ctf_file_t *fp = ccp->fp;
@@ -405,11 +439,11 @@ new_symbol (ctf_context_t *ccp, struct t
   gdb::unique_xmalloc_ptr<char> name (ctf_type_aname_raw (fp, tid));
   if (name != NULL)
     {
-      sym = allocate_symbol (objfile);
+      sym = new (&objfile->objfile_obstack) symbol;
       OBJSTAT (objfile, n_syms++);
 
-      SYMBOL_SET_LANGUAGE (sym, language_c, &objfile->objfile_obstack);
-      SYMBOL_SET_NAMES (sym, name.get (), true, objfile);
+      sym->set_language (language_c, &objfile->objfile_obstack);
+      sym->compute_and_set_names (name.get (), true, objfile->per_bfd);
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
 
@@ -429,7 +463,7 @@ new_symbol (ctf_context_t *ccp, struct t
 	    SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
 	    break;
 	  case CTF_K_CONST:
-	    if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
+	    if (SYMBOL_TYPE (sym)->code () == TYPE_CODE_VOID)
 	      SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
 	    break;
 	  case CTF_K_TYPEDEF:
@@ -459,7 +493,7 @@ new_symbol (ctf_context_t *ccp, struct t
    and create the symbol for it.  */
 
 static struct type *
-read_base_type (ctf_context_t *ccp, ctf_id_t tid)
+read_base_type (struct ctf_context *ccp, ctf_id_t tid)
 {
   struct objfile *of = ccp->of;
   ctf_file_t *fp = ccp->fp;
@@ -490,7 +524,7 @@ read_base_type (ctf_context_t *ccp, ctf_
   if (kind == CTF_K_INTEGER)
     {
       uint32_t issigned, ischar, isbool;
-      struct gdbarch *gdbarch = get_objfile_arch (of);
+      struct gdbarch *gdbarch = of->arch ();
 
       issigned = cet.cte_format & CTF_INT_SIGNED;
       ischar = cet.cte_format & CTF_INT_CHAR;
@@ -522,7 +556,7 @@ read_base_type (ctf_context_t *ccp, ctf_
 	{
 	  struct type *t
 	    = ctf_init_float_type (of, cet.cte_bits / 2, NULL, name);
-	  type = init_complex_type (of, name, t);
+	  type = init_complex_type (name, t);
 	}
     }
   else
@@ -538,7 +572,7 @@ read_base_type (ctf_context_t *ccp, ctf_
 }
 
 static void
-process_base_type (ctf_context_t *ccp, ctf_id_t tid)
+process_base_type (struct ctf_context *ccp, ctf_id_t tid)
 {
   struct type *type;
 
@@ -554,7 +588,7 @@ process_base_type (ctf_context_t *ccp, c
    (assuming the type has a name).  */
 
 static struct type *
-read_structure_type (ctf_context_t *ccp, ctf_id_t tid)
+read_structure_type (struct ctf_context *ccp, ctf_id_t tid)
 {
   struct objfile *of = ccp->of;
   ctf_file_t *fp = ccp->fp;
@@ -565,13 +599,13 @@ read_structure_type (ctf_context_t *ccp,
 
   gdb::unique_xmalloc_ptr<char> name (ctf_type_aname_raw (fp, tid));
   if (name != NULL && strlen (name.get() ) != 0)
-    TYPE_NAME (type) = obstack_strdup (&of->objfile_obstack, name.get ());
+    type->set_name (obstack_strdup (&of->objfile_obstack, name.get ()));
 
   kind = ctf_type_kind (fp, tid);
   if (kind == CTF_K_UNION)
-    TYPE_CODE (type) = TYPE_CODE_UNION;
+    type->set_code (TYPE_CODE_UNION);
   else
-    TYPE_CODE (type) = TYPE_CODE_STRUCT;
+    type->set_code (TYPE_CODE_STRUCT);
 
   TYPE_LENGTH (type) = ctf_type_size (fp, tid);
   set_type_align (type, ctf_type_align (fp, tid));
@@ -583,7 +617,7 @@ read_structure_type (ctf_context_t *ccp,
    and create the symbol for it.  */
 
 static void
-process_struct_members (ctf_context_t *ccp,
+process_struct_members (struct ctf_context *ccp,
 			ctf_id_t tid,
 			struct type *type)
 {
@@ -601,7 +635,7 @@ process_struct_members (ctf_context_t *c
 }
 
 static void
-process_structure_type (ctf_context_t *ccp, ctf_id_t tid)
+process_structure_type (struct ctf_context *ccp, ctf_id_t tid)
 {
   struct type *type;
 
@@ -612,7 +646,7 @@ process_structure_type (ctf_context_t *c
 /* Create a function type for TID and set its return type.  */
 
 static struct type *
-read_func_kind_type (ctf_context_t *ccp, ctf_id_t tid)
+read_func_kind_type (struct ctf_context *ccp, ctf_id_t tid)
 {
   struct objfile *of = ccp->of;
   ctf_file_t *fp = ccp->fp;
@@ -623,9 +657,9 @@ read_func_kind_type (ctf_context_t *ccp,
 
   gdb::unique_xmalloc_ptr<char> name (ctf_type_aname_raw (fp, tid));
   if (name != NULL && strlen (name.get ()) != 0)
-    TYPE_NAME (type) = obstack_strdup (&of->objfile_obstack, name.get ());
+    type->set_name (obstack_strdup (&of->objfile_obstack, name.get ()));
 
-  TYPE_CODE (type) = TYPE_CODE_FUNC;
+  type->set_code (TYPE_CODE_FUNC);
   ctf_func_type_info (fp, tid, &cfi);
   rettype = get_tid_type (of, cfi.ctc_return);
   TYPE_TARGET_TYPE (type) = rettype;
@@ -638,7 +672,7 @@ read_func_kind_type (ctf_context_t *ccp,
    enumeration, and create the symbol for the enumeration type.  */
 
 static struct type *
-read_enum_type (ctf_context_t *ccp, ctf_id_t tid)
+read_enum_type (struct ctf_context *ccp, ctf_id_t tid)
 {
   struct objfile *of = ccp->of;
   ctf_file_t *fp = ccp->fp;
@@ -649,9 +683,9 @@ read_enum_type (ctf_context_t *ccp, ctf_
 
   gdb::unique_xmalloc_ptr<char> name (ctf_type_aname_raw (fp, tid));
   if (name != NULL && strlen (name.get ()) != 0)
-    TYPE_NAME (type) = obstack_strdup (&of->objfile_obstack, name.get ());
+    type->set_name (obstack_strdup (&of->objfile_obstack, name.get ()));
 
-  TYPE_CODE (type) = TYPE_CODE_ENUM;
+  type->set_code (TYPE_CODE_ENUM);
   TYPE_LENGTH (type) = ctf_type_size (fp, tid);
   ctf_func_type_info (fp, tid, &fi);
   target_type = get_tid_type (of, fi.ctc_return);
@@ -662,7 +696,7 @@ read_enum_type (ctf_context_t *ccp, ctf_
 }
 
 static void
-process_enum_type (ctf_context_t *ccp, ctf_id_t tid)
+process_enum_type (struct ctf_context *ccp, ctf_id_t tid)
 {
   struct type *type;
   struct ctf_field_info fi;
@@ -684,7 +718,7 @@ process_enum_type (ctf_context_t *ccp, c
 /* Add given cv-qualifiers CNST+VOLTL to the BASE_TYPE of array TID.  */
 
 static struct type *
-add_array_cv_type (ctf_context_t *ccp,
+add_array_cv_type (struct ctf_context *ccp,
 		   ctf_id_t tid,
 		   struct type *base_type,
 		   int cnst,
@@ -695,7 +729,7 @@ add_array_cv_type (ctf_context_t *ccp,
   base_type = copy_type (base_type);
   inner_array = base_type;
 
-  while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
+  while (TYPE_TARGET_TYPE (inner_array)->code () == TYPE_CODE_ARRAY)
     {
       TYPE_TARGET_TYPE (inner_array)
 	= copy_type (TYPE_TARGET_TYPE (inner_array));
@@ -713,7 +747,7 @@ add_array_cv_type (ctf_context_t *ccp,
 /* Read all information from a TID of CTF_K_ARRAY.  */
 
 static struct type *
-read_array_type (ctf_context_t *ccp, ctf_id_t tid)
+read_array_type (struct ctf_context *ccp, ctf_id_t tid)
 {
   struct objfile *objfile = ccp->of;
   ctf_file_t *fp = ccp->fp;
@@ -740,7 +774,7 @@ read_array_type (ctf_context_t *ccp, ctf
   type = create_array_type (NULL, element_type, range_type);
   if (ar.ctr_nelems <= 1)	/* Check if undefined upper bound.  */
     {
-      TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
+      range_type->bounds ()->high.set_undefined ();
       TYPE_LENGTH (type) = 0;
       TYPE_TARGET_STUB (type) = 1;
     }
@@ -755,7 +789,7 @@ read_array_type (ctf_context_t *ccp, ctf
 /* Read TID of kind CTF_K_CONST with base type BTID.  */
 
 static struct type *
-read_const_type (ctf_context_t *ccp, ctf_id_t tid, ctf_id_t btid)
+read_const_type (struct ctf_context *ccp, ctf_id_t tid, ctf_id_t btid)
 {
   struct objfile *objfile = ccp->of;
   struct type *base_type, *cv_type;
@@ -778,7 +812,7 @@ read_const_type (ctf_context_t *ccp, ctf
 /* Read TID of kind CTF_K_VOLATILE with base type BTID.  */
 
 static struct type *
-read_volatile_type (ctf_context_t *ccp, ctf_id_t tid, ctf_id_t btid)
+read_volatile_type (struct ctf_context *ccp, ctf_id_t tid, ctf_id_t btid)
 {
   struct objfile *objfile = ccp->of;
   ctf_file_t *fp = ccp->fp;
@@ -805,7 +839,7 @@ read_volatile_type (ctf_context_t *ccp,
 /* Read TID of kind CTF_K_RESTRICT with base type BTID.  */
 
 static struct type *
-read_restrict_type (ctf_context_t *ccp, ctf_id_t tid, ctf_id_t btid)
+read_restrict_type (struct ctf_context *ccp, ctf_id_t tid, ctf_id_t btid)
 {
   struct objfile *objfile = ccp->of;
   struct type *base_type, *cv_type;
@@ -828,7 +862,7 @@ read_restrict_type (ctf_context_t *ccp,
 /* Read TID of kind CTF_K_TYPEDEF with its NAME and base type BTID.  */
 
 static struct type *
-read_typedef_type (ctf_context_t *ccp, ctf_id_t tid,
+read_typedef_type (struct ctf_context *ccp, ctf_id_t tid,
 		   ctf_id_t btid, const char *name)
 {
   struct objfile *objfile = ccp->of;
@@ -850,7 +884,7 @@ read_typedef_type (ctf_context_t *ccp, c
 /* Read TID of kind CTF_K_POINTER with base type BTID.  */
 
 static struct type *
-read_pointer_type (ctf_context_t *ccp, ctf_id_t tid, ctf_id_t btid)
+read_pointer_type (struct ctf_context *ccp, ctf_id_t tid, ctf_id_t btid)
 {
   struct objfile *of = ccp->of;
   struct type *target_type, *type;
@@ -875,7 +909,7 @@ read_pointer_type (ctf_context_t *ccp, c
 /* Read information associated with type TID.  */
 
 static struct type *
-read_type_record (ctf_context_t *ccp, ctf_id_t tid)
+read_type_record (struct ctf_context *ccp, ctf_id_t tid)
 {
   ctf_file_t *fp = ccp->fp;
   uint32_t kind;
@@ -939,7 +973,7 @@ read_type_record (ctf_context_t *ccp, ct
 static int
 ctf_add_type_cb (ctf_id_t tid, void *arg)
 {
-  ctf_context_t *ccp = (ctf_context_t *) arg;
+  struct ctf_context *ccp = (struct ctf_context *) arg;
   struct type *type;
   uint32_t kind;
 
@@ -1004,7 +1038,7 @@ ctf_add_type_cb (ctf_id_t tid, void *arg
 static int
 ctf_add_var_cb (const char *name, ctf_id_t id, void *arg)
 {
-  ctf_context_t *ccp = (ctf_context_t *) arg;
+  struct ctf_context *ccp = (struct ctf_context *) arg;
   struct symbol *sym = NULL;
   struct type *type;
   uint32_t kind;
@@ -1029,7 +1063,7 @@ ctf_add_var_cb (const char *name, ctf_id
 	if (type)
 	  {
 	    sym = new_symbol (ccp, type, id);
-	    SYMBOL_SET_NAMES (sym, name, false, ccp->of);
+	    sym->compute_and_set_names (name, false, ccp->of->per_bfd);
 	  }
 	break;
       case CTF_K_STRUCT:
@@ -1040,12 +1074,12 @@ ctf_add_var_cb (const char *name, ctf_id
 	  complaint (_("ctf_add_var_cb: %s has NO type (%ld)"), name, id);
 	  type = objfile_type (ccp->of)->builtin_error;
 	}
-	sym = allocate_symbol (ccp->of);
+	sym = new (&ccp->of->objfile_obstack) symbol;
 	OBJSTAT (ccp->of, n_syms++);
 	SYMBOL_TYPE (sym) = type;
 	SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
 	SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
-	SYMBOL_SET_NAMES (sym, name, false, ccp->of);
+	sym->compute_and_set_names (name, false, ccp->of->per_bfd);
 	add_symbol_to_list (sym, ccp->builder->get_global_symbols ());
 	break;
       default:
@@ -1062,7 +1096,7 @@ ctf_add_var_cb (const char *name, ctf_id
 /* Add an ELF STT_OBJ symbol with index IDX to the symbol table.  */
 
 static struct symbol *
-add_stt_obj (ctf_context_t *ccp, unsigned long idx)
+add_stt_obj (struct ctf_context *ccp, unsigned long idx)
 {
   struct symbol *sym;
   struct type *type;
@@ -1083,7 +1117,7 @@ add_stt_obj (ctf_context_t *ccp, unsigne
 /* Add an ELF STT_FUNC symbol with index IDX to the symbol table.  */
 
 static struct symbol *
-add_stt_func (ctf_context_t *ccp, unsigned long idx)
+add_stt_func (struct ctf_context *ccp, unsigned long idx)
 {
   struct type *ftype, *atyp, *rettyp;
   struct symbol *sym;
@@ -1108,12 +1142,12 @@ add_stt_func (ctf_context_t *ccp, unsign
   ftype = get_tid_type (ccp->of, tid);
   if (finfo.ctc_flags & CTF_FUNC_VARARG)
     TYPE_VARARGS (ftype) = 1;
-  TYPE_NFIELDS (ftype) = argc;
+  ftype->set_num_fields (argc);
 
   /* If argc is 0, it has a "void" type.  */
   if (argc != 0)
-    TYPE_FIELDS (ftype)
-      = (struct field *) TYPE_ZALLOC (ftype, argc * sizeof (struct field));
+    ftype->set_fields
+      ((struct field *) TYPE_ZALLOC (ftype, argc * sizeof (struct field)));
 
   /* TYPE_FIELD_TYPE must never be NULL.  Fill it with void_type, if failed
      to find the argument type.  */
@@ -1121,9 +1155,9 @@ add_stt_func (ctf_context_t *ccp, unsign
     {
       atyp = get_tid_type (ccp->of, argv[iparam]);
       if (atyp)
-	TYPE_FIELD_TYPE (ftype, iparam) = atyp;
+	ftype->field (iparam).set_type (atyp);
       else
-	TYPE_FIELD_TYPE (ftype, iparam) = void_type;
+	ftype->field (iparam).set_type (void_type);
     }
 
   sym = new_symbol (ccp, ftype, tid);
@@ -1141,34 +1175,23 @@ add_stt_func (ctf_context_t *ccp, unsign
 static CORE_ADDR
 get_objfile_text_range (struct objfile *of, int *tsize)
 {
-  CORE_ADDR text_base;
   bfd *abfd = of->obfd;
   const asection *codes;
 
   codes = bfd_get_section_by_name (abfd, ".text");
-  if (codes == NULL)
-    {
-      text_base = 0;
-      *tsize = 0;
-    }
-  else
-    {
-      text_base = bfd_section_vma (codes);
-      *tsize = codes->size;
-    }
-
-  return text_base;
+  *tsize = codes ? bfd_section_size (codes) : 0;
+  return of->text_section_offset ();
 }
 
 /* Start a symtab for OBJFILE in CTF format.  */
 
 static void
-ctf_start_symtab (struct partial_symtab *pst,
+ctf_start_symtab (ctf_psymtab *pst,
 		  struct objfile *of, CORE_ADDR text_offset)
 {
-  ctf_context_t *ccp;
+  struct ctf_context *ccp;
 
-  ccp = (ctf_context_t *) pst->read_symtab_private;
+  ccp = pst->context;
   ccp->builder = new buildsym_compunit
 		       (of, of->original_name, NULL,
 		       language_c, text_offset);
@@ -1180,12 +1203,12 @@ ctf_start_symtab (struct partial_symtab
    the .text section number.  */
 
 static struct compunit_symtab *
-ctf_end_symtab (struct partial_symtab *pst,
+ctf_end_symtab (ctf_psymtab *pst,
 		CORE_ADDR end_addr, int section)
 {
-  ctf_context_t *ccp;
+  struct ctf_context *ccp;
 
-  ccp = (ctf_context_t *) pst->read_symtab_private;
+  ccp = pst->context;
   struct compunit_symtab *result
     = ccp->builder->end_symtab (end_addr, section);
   delete ccp->builder;
@@ -1195,15 +1218,15 @@ ctf_end_symtab (struct partial_symtab *p
 
 /* Read in full symbols for PST, and anything it depends on.  */
 
-static void
-psymtab_to_symtab (struct partial_symtab *pst)
+void
+ctf_psymtab::expand_psymtab (struct objfile *objfile)
 {
   struct symbol *sym;
-  ctf_context_t *ccp;
+  struct ctf_context *ccp;
 
-  gdb_assert (!pst->readin);
+  gdb_assert (!readin);
 
-  ccp = (ctf_context_t *) pst->read_symtab_private;
+  ccp = context;
 
   /* Iterate over entries in data types section.  */
   if (ctf_type_iter (ccp->fp, ctf_add_type_cb, ccp) == CTF_ERR)
@@ -1233,37 +1256,37 @@ psymtab_to_symtab (struct partial_symtab
       set_symbol_address (ccp->of, sym, sym->linkage_name ());
     }
 
-  pst->readin = 1;
+  readin = true;
 }
 
 /* Expand partial symbol table PST into a full symbol table.
    PST is not NULL.  */
 
-static void
-ctf_read_symtab (struct partial_symtab *pst, struct objfile *objfile)
+void
+ctf_psymtab::read_symtab (struct objfile *objfile)
 {
-  if (pst->readin)
-    warning (_("bug: psymtab for %s is already read in."), pst->filename);
+  if (readin)
+    warning (_("bug: psymtab for %s is already read in."), filename);
   else
     {
       if (info_verbose)
 	{
-	  printf_filtered (_("Reading in CTF data for %s..."), pst->filename);
+	  printf_filtered (_("Reading in CTF data for %s..."), filename);
 	  gdb_flush (gdb_stdout);
 	}
 
       /* Start a symtab.  */
-      CORE_ADDR text_offset;        /* Start of text segment.  */
+      CORE_ADDR offset;        /* Start of text segment.  */
       int tsize;
 
-      text_offset = get_objfile_text_range (objfile, &tsize);
-      ctf_start_symtab (pst, objfile, text_offset);
-      psymtab_to_symtab (pst);
-
-      pst->set_text_low (text_offset);
-      pst->set_text_high (text_offset + tsize);
-      pst->compunit_symtab = ctf_end_symtab (pst, text_offset + tsize,
-					     SECT_OFF_TEXT (objfile));
+      offset = get_objfile_text_range (objfile, &tsize);
+      ctf_start_symtab (this, objfile, offset);
+      expand_psymtab (objfile);
+
+      set_text_low (offset);
+      set_text_high (offset + tsize);
+      compunit_symtab = ctf_end_symtab (this, offset + tsize,
+					SECT_OFF_TEXT (objfile));
 
       /* Finish up the debug error message.  */
       if (info_verbose)
@@ -1271,17 +1294,6 @@ ctf_read_symtab (struct partial_symtab *
     }
 }
 
-/* Cleanup function for the ctf_file_key data.  */
-
-static void
-ctf_close_objfile (struct objfile *of, void *datum)
-{
-  ctf_file_t *fp = static_cast<ctf_file_t *> (datum);
-  ctf_archive_t *arc = ctf_get_arc (fp);
-  ctf_file_close (fp);
-  ctf_close (arc);
-}
-
 /* Allocate a new partial_symtab NAME.
 
    Each source file that has not been fully read in is represented by
@@ -1294,21 +1306,20 @@ ctf_close_objfile (struct objfile *of, v
    partial_symtab remains around.  They are allocated on an obstack,
    objfile_obstack.  */
 
-static struct partial_symtab *
+static ctf_psymtab *
 create_partial_symtab (const char *name,
 		       ctf_file_t *cfp,
 		       struct objfile *objfile)
 {
-  struct partial_symtab *pst;
-  ctf_context_t *ccx;
+  ctf_psymtab *pst;
+  struct ctf_context *ccx;
 
-  pst = start_psymtab_common (objfile, name, 0);
+  pst = new ctf_psymtab (name, objfile, 0);
 
-  ccx = XOBNEW (&objfile->objfile_obstack, ctf_context_t);
+  ccx = XOBNEW (&objfile->objfile_obstack, struct ctf_context);
   ccx->fp = cfp;
   ccx->of = objfile;
-  pst->read_symtab_private = (void *) ccx;
-  pst->read_symtab = ctf_read_symtab;
+  pst->context = ccx;
 
   return pst;
 }
@@ -1318,11 +1329,11 @@ create_partial_symtab (const char *name,
 static int
 ctf_psymtab_type_cb (ctf_id_t tid, void *arg)
 {
-  ctf_context_t *ccp;
+  struct ctf_context *ccp;
   uint32_t kind;
   short section = -1;
 
-  ccp = (ctf_context_t *) arg;
+  ccp = (struct ctf_context *) arg;
   gdb::unique_xmalloc_ptr<char> name (ctf_type_aname_raw (ccp->fp, tid));
   if (name == NULL || strlen (name.get ()) == 0)
     return 0;
@@ -1378,7 +1389,7 @@ ctf_psymtab_type_cb (ctf_id_t tid, void
 static int
 ctf_psymtab_var_cb (const char *name, ctf_id_t id, void *arg)
 {
-  ctf_context_t *ccp = (ctf_context_t *) arg;
+  struct ctf_context *ccp = (struct ctf_context *) arg;
 
   add_psymbol_to_list (name, true,
 		       VAR_DOMAIN, LOC_STATIC, -1,
@@ -1393,10 +1404,10 @@ ctf_psymtab_var_cb (const char *name, ct
 static void
 scan_partial_symbols (ctf_file_t *cfp, struct objfile *of)
 {
-  ctf_context_t ccx;
+  struct ctf_context ccx;
   bfd *abfd = of->obfd;
   const char *name = bfd_get_filename (abfd);
-  struct partial_symtab *pst = create_partial_symtab (name, cfp, of);
+  ctf_psymtab *pst = create_partial_symtab (name, cfp, of);
 
   ccx.fp = cfp;
   ccx.of = of;
@@ -1473,14 +1484,17 @@ elfctf_build_psymtabs (struct objfile *o
   if (fp == NULL)
     error (_("ctf_arc_open_by_name failed on %s - %s"),
 	   bfd_get_filename (abfd), ctf_errmsg (err));
-  set_objfile_data (of, ctf_file_key, fp);
+  ctf_file_key.emplace (of, fp);
 
   scan_partial_symbols (fp, of);
 }
 
+#else
+
 void
-_initialize_ctfread (void)
+elfctf_build_psymtabs (struct objfile *of)
 {
-  ctf_file_key
-    = register_objfile_data_with_cleanup (NULL, ctf_close_objfile);
+  /* Nothing to do if CTF is disabled.  */
 }
+
+#endif /* ENABLE_LIBCTF */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ctfread.h ./gdb/ctfread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ctfread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ctfread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* CTF debugging format support for GDB.
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-typeprint.c ./gdb/c-typeprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-typeprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/c-typeprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for printing C and C++ types for GDB, the GNU debugger.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -58,7 +58,7 @@ static void c_type_print_varspec_prefix
 /* Print "const", "volatile", or address space modifiers.  */
 static void c_type_print_modifier (struct type *,
 				   struct ui_file *,
-				   int, int);
+				   int, int, enum language);
 
 static void c_type_print_base_1 (struct type *type, struct ui_file *stream,
 				 int show, int level, enum language language,
@@ -84,14 +84,14 @@ print_name_maybe_canonical (const char *
 			    const struct type_print_options *flags,
 			    struct ui_file *stream)
 {
-  std::string s;
+  gdb::unique_xmalloc_ptr<char> s;
 
   if (!flags->raw)
     s = cp_canonicalize_string_full (name,
 				     find_typedef_for_canonicalize,
 				     (void *) flags);
 
-  fputs_filtered (!s.empty () ? s.c_str () : name, stream);
+  fputs_filtered (s != nullptr ? s.get () : name, stream);
 }
 
 
@@ -116,7 +116,7 @@ c_print_type_1 (struct type *type,
     type = check_typedef (type);
 
   local_name = typedef_hash_table::find_typedef (flags, type);
-  code = TYPE_CODE (type);
+  code = type->code ();
   if (local_name != NULL)
     {
       fputs_filtered (local_name, stream);
@@ -129,7 +129,7 @@ c_print_type_1 (struct type *type,
       if ((varstring != NULL && *varstring != '\0')
 	  /* Need a space if going to print stars or brackets;
 	     but not if we will print just a type name.  */
-	  || ((show > 0 || TYPE_NAME (type) == 0)
+	  || ((show > 0 || type->name () == 0)
 	      && (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC
 		  || code == TYPE_CODE_METHOD
 		  || (code == TYPE_CODE_ARRAY
@@ -148,7 +148,7 @@ c_print_type_1 (struct type *type,
       if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
 	fputs_styled (varstring, function_name_style.style (), stream);
       else
-	fputs_filtered (varstring, stream);
+	fputs_styled (varstring, variable_name_style.style (), stream);
 
       /* For demangled function names, we have the arglist as part of
          the name, so don't print an additional pair of ()'s.  */
@@ -206,10 +206,10 @@ c_print_typedef (struct type *type,
   type = check_typedef (type);
   fprintf_filtered (stream, "typedef ");
   type_print (type, "", stream, -1);
-  if (TYPE_NAME ((SYMBOL_TYPE (new_symbol))) == 0
-      || strcmp (TYPE_NAME ((SYMBOL_TYPE (new_symbol))),
+  if ((SYMBOL_TYPE (new_symbol))->name () == 0
+      || strcmp ((SYMBOL_TYPE (new_symbol))->name (),
 		 new_symbol->linkage_name ()) != 0
-      || TYPE_CODE (SYMBOL_TYPE (new_symbol)) == TYPE_CODE_TYPEDEF)
+      || SYMBOL_TYPE (new_symbol)->code () == TYPE_CODE_TYPEDEF)
     fprintf_filtered (stream, " %s", new_symbol->print_name ());
   fprintf_filtered (stream, ";");
 }
@@ -256,7 +256,7 @@ cp_type_print_derivation_info (struct ui
 			? "public" : (TYPE_FIELD_PROTECTED (type, i)
 				      ? "protected" : "private"),
 			BASETYPE_VIA_VIRTUAL (type, i) ? " virtual" : "");
-      name = TYPE_NAME (TYPE_BASECLASS (type, i));
+      name = TYPE_BASECLASS (type, i)->name ();
       if (name)
 	print_name_maybe_canonical (name, flags, stream);
       else
@@ -277,8 +277,8 @@ cp_type_print_method_args (struct type *
 			   enum language language,
 			   const struct type_print_options *flags)
 {
-  struct field *args = TYPE_FIELDS (mtype);
-  int nargs = TYPE_NFIELDS (mtype);
+  struct field *args = mtype->fields ();
+  int nargs = mtype->num_fields ();
   int varargs = TYPE_VARARGS (mtype);
   int i;
 
@@ -302,7 +302,7 @@ cp_type_print_method_args (struct type *
 	  if (FIELD_ARTIFICIAL (arg))
 	    continue;
 
-	  c_print_type (arg.type, "", stream, 0, 0, flags);
+	  c_print_type (arg.type (), "", stream, 0, 0, flags);
 
 	  if (i == nargs && varargs)
 	    fprintf_filtered (stream, ", ...");
@@ -327,8 +327,8 @@ cp_type_print_method_args (struct type *
       struct type *domain;
 
       gdb_assert (nargs > 0);
-      gdb_assert (TYPE_CODE (args[0].type) == TYPE_CODE_PTR);
-      domain = TYPE_TARGET_TYPE (args[0].type);
+      gdb_assert (args[0].type ()->code () == TYPE_CODE_PTR);
+      domain = TYPE_TARGET_TYPE (args[0].type ());
 
       if (TYPE_CONST (domain))
 	fprintf_filtered (stream, " const");
@@ -337,7 +337,9 @@ cp_type_print_method_args (struct type *
 	fprintf_filtered (stream, " volatile");
 
       if (TYPE_RESTRICT (domain))
-	fprintf_filtered (stream, " restrict");
+	fprintf_filtered (stream, (language == language_cplus
+				   ? " __restrict__"
+				   : " restrict"));
 
       if (TYPE_ATOMIC (domain))
 	fprintf_filtered (stream, " _Atomic");
@@ -371,25 +373,25 @@ c_type_print_varspec_prefix (struct type
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
 				   stream, show, 1, 1, language, flags,
 				   podata);
       fprintf_filtered (stream, "*");
-      c_type_print_modifier (type, stream, 1, need_post_space);
+      c_type_print_modifier (type, stream, 1, need_post_space, language);
       break;
 
     case TYPE_CODE_MEMBERPTR:
       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
 				   stream, show, 0, 0, language, flags, podata);
-      name = TYPE_NAME (TYPE_SELF_TYPE (type));
+      name = TYPE_SELF_TYPE (type)->name ();
       if (name)
 	print_name_maybe_canonical (name, flags, stream);
       else
@@ -404,7 +406,7 @@ c_type_print_varspec_prefix (struct type
 				   stream, show, 0, 0, language, flags,
 				   podata);
       fprintf_filtered (stream, "(");
-      name = TYPE_NAME (TYPE_SELF_TYPE (type));
+      name = TYPE_SELF_TYPE (type)->name ();
       if (name)
 	print_name_maybe_canonical (name, flags, stream);
       else
@@ -419,8 +421,8 @@ c_type_print_varspec_prefix (struct type
       c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
 				   stream, show, 1, 0, language, flags,
 				   podata);
-      fprintf_filtered (stream, TYPE_CODE(type) == TYPE_CODE_REF ? "&" : "&&");
-      c_type_print_modifier (type, stream, 1, need_post_space);
+      fprintf_filtered (stream, type->code () == TYPE_CODE_REF ? "&" : "&&");
+      c_type_print_modifier (type, stream, 1, need_post_space, language);
       break;
 
     case TYPE_CODE_METHOD:
@@ -481,7 +483,8 @@ c_type_print_varspec_prefix (struct type
 
 static void
 c_type_print_modifier (struct type *type, struct ui_file *stream,
-		       int need_pre_space, int need_post_space)
+		       int need_pre_space, int need_post_space,
+		       enum language language)
 {
   int did_print_modifier = 0;
   const char *address_space_id;
@@ -509,7 +512,9 @@ c_type_print_modifier (struct type *type
     {
       if (did_print_modifier || need_pre_space)
 	fprintf_filtered (stream, " ");
-      fprintf_filtered (stream, "restrict");
+      fprintf_filtered (stream, (language == language_cplus
+				 ? "__restrict__"
+				 : "restrict"));
       did_print_modifier = 1;
     }
 
@@ -555,7 +560,7 @@ c_type_print_args (struct type *type, st
 
   fprintf_filtered (stream, "(");
 
-  for (i = 0; i < TYPE_NFIELDS (type); i++)
+  for (i = 0; i < type->num_fields (); i++)
     {
       struct type *param_type;
 
@@ -568,7 +573,7 @@ c_type_print_args (struct type *type, st
 	  wrap_here ("    ");
 	}
 
-      param_type = TYPE_FIELD_TYPE (type, i);
+      param_type = type->field (i).type ();
 
       if (language == language_cplus && linkage_name)
 	{
@@ -757,12 +762,12 @@ c_type_print_varspec_suffix (struct type
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
       {
@@ -775,8 +780,8 @@ c_type_print_varspec_suffix (struct type
 	fprintf_filtered (stream, (is_vector ?
 				   " __attribute__ ((vector_size(" : "["));
 	/* Bounds are not yet resolved, print a bounds placeholder instead.  */
-	if (TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (type)) == PROP_LOCEXPR
-	    || TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (type)) == PROP_LOCLIST)
+	if (type->bounds ()->high.kind () == PROP_LOCEXPR
+	    || type->bounds ()->high.kind () == PROP_LOCLIST)
 	  fprintf_filtered (stream, "variable length");
 	else if (get_array_bounds (type, &low_bound, &high_bound))
 	  fprintf_filtered (stream, "%s", 
@@ -960,7 +965,7 @@ need_access_label_p (struct type *type)
   if (TYPE_DECLARED_CLASS (type))
     {
       QUIT;
-      for (int i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
+      for (int i = TYPE_N_BASECLASSES (type); i < type->num_fields (); i++)
 	if (!TYPE_FIELD_PRIVATE (type, i))
 	  return true;
       QUIT;
@@ -977,7 +982,7 @@ need_access_label_p (struct type *type)
   else
     {
       QUIT;
-      for (int i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
+      for (int i = TYPE_N_BASECLASSES (type); i < type->num_fields (); i++)
 	if (TYPE_FIELD_PRIVATE (type, i) || TYPE_FIELD_PROTECTED (type, i))
 	  return true;
       QUIT;
@@ -1050,8 +1055,8 @@ c_type_print_base_struct_union (struct t
       hash_holder.reset (local_flags.local_typedefs);
     }
 
-  c_type_print_modifier (type, stream, 0, 1);
-  if (TYPE_CODE (type) == TYPE_CODE_UNION)
+  c_type_print_modifier (type, stream, 0, 1, language);
+  if (type->code () == TYPE_CODE_UNION)
     fprintf_filtered (stream, "union ");
   else if (TYPE_DECLARED_CLASS (type))
     fprintf_filtered (stream, "class ");
@@ -1062,13 +1067,13 @@ c_type_print_base_struct_union (struct t
      spurious "{unnamed struct}"/"{unnamed union}"/"{unnamed
      enum}" tag for unnamed struct/union/enum's, which we don't
      want to print.  */
-  if (TYPE_NAME (type) != NULL
-      && !startswith (TYPE_NAME (type), "{unnamed"))
+  if (type->name () != NULL
+      && !startswith (type->name (), "{unnamed"))
     {
       /* When printing the tag name, we are still effectively
 	 printing in the outer context, hence the use of FLAGS
 	 here.  */
-      print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
+      print_name_maybe_canonical (type->name (), flags, stream);
       if (show > 0)
 	fputs_filtered (" ", stream);
     }
@@ -1077,10 +1082,10 @@ c_type_print_base_struct_union (struct t
     {
       /* If we just printed a tag name, no need to print anything
 	 else.  */
-      if (TYPE_NAME (type) == NULL)
+      if (type->name () == NULL)
 	fprintf_filtered (stream, "{...}");
     }
-  else if (show > 0 || TYPE_NAME (type) == NULL)
+  else if (show > 0 || type->name () == NULL)
     {
       struct type *basetype;
       int vptr_fieldno;
@@ -1110,7 +1115,7 @@ c_type_print_base_struct_union (struct t
 
       fprintf_filtered (stream, "{\n");
 
-      if (TYPE_NFIELDS (type) == 0 && TYPE_NFN_FIELDS (type) == 0
+      if (type->num_fields () == 0 && TYPE_NFN_FIELDS (type) == 0
 	  && TYPE_TYPEDEF_FIELD_COUNT (type) == 0)
 	{
 	  if (TYPE_STUB (type))
@@ -1138,7 +1143,7 @@ c_type_print_base_struct_union (struct t
       /* If there is a base class for this type,
 	 do not print the field that it occupies.  */
 
-      int len = TYPE_NFIELDS (type);
+      int len = type->num_fields ();
       vptr_fieldno = get_vptr_fieldno (type, &basetype);
 
       struct print_offset_data local_podata;
@@ -1162,7 +1167,7 @@ c_type_print_base_struct_union (struct t
 		 TYPE_FIELD_PRIVATE (type, i), flags);
 	    }
 
-	  bool is_static = field_is_static (&TYPE_FIELD (type, i));
+	  bool is_static = field_is_static (&type->field (i));
 
 	  if (flags->print_offsets)
 	    podata->update (type, i, stream);
@@ -1174,8 +1179,8 @@ c_type_print_base_struct_union (struct t
 	  int newshow = show - 1;
 
 	  if (!is_static && flags->print_offsets
-	      && (TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_STRUCT
-		  || TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_UNION))
+	      && (type->field (i).type ()->code () == TYPE_CODE_STRUCT
+		  || type->field (i).type ()->code () == TYPE_CODE_UNION))
 	    {
 	      /* If we're printing offsets and this field's type is
 		 either a struct or an union, then we're interested in
@@ -1195,10 +1200,10 @@ c_type_print_base_struct_union (struct t
 		 the whole struct/union.  */
 	      local_podata.end_bitpos
 		= podata->end_bitpos
-		  - TYPE_LENGTH (TYPE_FIELD_TYPE (type, i)) * TARGET_CHAR_BIT;
+		  - TYPE_LENGTH (type->field (i).type ()) * TARGET_CHAR_BIT;
 	    }
 
-	  c_print_type_1 (TYPE_FIELD_TYPE (type, i),
+	  c_print_type_1 (type->field (i).type (),
 			  TYPE_FIELD_NAME (type, i),
 			  stream, newshow, level + 4,
 			  language, &local_flags, &local_podata);
@@ -1242,7 +1247,7 @@ c_type_print_base_struct_union (struct t
 	  struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
 	  int j, len2 = TYPE_FN_FIELDLIST_LENGTH (type, i);
 	  const char *method_name = TYPE_FN_FIELDLIST_NAME (type, i);
-	  const char *name = TYPE_NAME (type);
+	  const char *name = type->name ();
 	  int is_constructor = name && strcmp (method_name,
 					       name) == 0;
 
@@ -1369,7 +1374,7 @@ c_type_print_base_struct_union (struct t
 	  if (semi_local_flags.print_nested_type_limit > 0)
 	    --semi_local_flags.print_nested_type_limit;
 
-	  if (TYPE_NFIELDS (type) != 0 || TYPE_NFN_FIELDS (type) != 0)
+	  if (type->num_fields () != 0 || TYPE_NFN_FIELDS (type) != 0)
 	    fprintf_filtered (stream, "\n");
 
 	  for (int i = 0; i < TYPE_NESTED_TYPES_COUNT (type); ++i)
@@ -1387,7 +1392,7 @@ c_type_print_base_struct_union (struct t
 
       if (TYPE_TYPEDEF_FIELD_COUNT (type) != 0 && flags->print_typedefs)
 	{
-	  if (TYPE_NFIELDS (type) != 0 || TYPE_NFN_FIELDS (type) != 0
+	  if (type->num_fields () != 0 || TYPE_NFN_FIELDS (type) != 0
 	      || TYPE_NESTED_TYPES_COUNT (type) != 0)
 	    fprintf_filtered (stream, "\n");
 
@@ -1396,7 +1401,7 @@ c_type_print_base_struct_union (struct t
 	      struct type *target = TYPE_TYPEDEF_FIELD_TYPE (type, i);
 
 	      /* Dereference the typedef declaration itself.  */
-	      gdb_assert (TYPE_CODE (target) == TYPE_CODE_TYPEDEF);
+	      gdb_assert (target->code () == TYPE_CODE_TYPEDEF);
 	      target = TYPE_TARGET_TYPE (target);
 
 	      if (need_access_label)
@@ -1475,9 +1480,9 @@ c_type_print_base_1 (struct type *type,
      always just print the type name directly from the type.  */
 
   if (show <= 0
-      && TYPE_NAME (type) != NULL)
+      && type->name () != NULL)
     {
-      c_type_print_modifier (type, stream, 0, 1);
+      c_type_print_modifier (type, stream, 0, 1, language);
 
       /* If we have "typedef struct foo {. . .} bar;" do we want to
 	 print it as "struct foo" or as "bar"?  Pick the latter for
@@ -1487,31 +1492,31 @@ c_type_print_base_1 (struct type *type,
 	 way. */
       if (language == language_c || language == language_minimal)
 	{
-	  if (TYPE_CODE (type) == TYPE_CODE_UNION)
+	  if (type->code () == TYPE_CODE_UNION)
 	    fprintf_filtered (stream, "union ");
-	  else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+	  else if (type->code () == TYPE_CODE_STRUCT)
 	    {
 	      if (TYPE_DECLARED_CLASS (type))
 		fprintf_filtered (stream, "class ");
 	      else
 		fprintf_filtered (stream, "struct ");
 	    }
-	  else if (TYPE_CODE (type) == TYPE_CODE_ENUM)
+	  else if (type->code () == TYPE_CODE_ENUM)
 	    fprintf_filtered (stream, "enum ");
 	}
 
-      print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
+      print_name_maybe_canonical (type->name (), flags, stream);
       return;
     }
 
   type = check_typedef (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_TYPEDEF:
       /* If we get here, the typedef doesn't have a name, and we
 	 couldn't resolve TYPE_TARGET_TYPE.  Not much we can do.  */
-      gdb_assert (TYPE_NAME (type) == NULL);
+      gdb_assert (type->name () == NULL);
       gdb_assert (TYPE_TARGET_TYPE (type) == NULL);
       fprintf_styled (stream, metadata_style.style (),
 		      _("<unnamed typedef>"));
@@ -1542,7 +1547,7 @@ c_type_print_base_1 (struct type *type,
       break;
 
     case TYPE_CODE_ENUM:
-      c_type_print_modifier (type, stream, 0, 1);
+      c_type_print_modifier (type, stream, 0, 1, language);
       fprintf_filtered (stream, "enum ");
       if (TYPE_DECLARED_CLASS (type))
 	fprintf_filtered (stream, "class ");
@@ -1551,10 +1556,10 @@ c_type_print_base_1 (struct type *type,
          "{unnamed struct}"/"{unnamed union}"/"{unnamed enum}"
          tag for unnamed struct/union/enum's, which we don't
          want to print.  */
-      if (TYPE_NAME (type) != NULL
-	  && !startswith (TYPE_NAME (type), "{unnamed"))
+      if (type->name () != NULL
+	  && !startswith (type->name (), "{unnamed"))
 	{
-	  print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
+	  print_name_maybe_canonical (type->name (), flags, stream);
 	  if (show > 0)
 	    fputs_filtered (" ", stream);
 	}
@@ -1564,10 +1569,10 @@ c_type_print_base_1 (struct type *type,
 	{
 	  /* If we just printed a tag name, no need to print anything
 	     else.  */
-	  if (TYPE_NAME (type) == NULL)
+	  if (type->name () == NULL)
 	    fprintf_filtered (stream, "{...}");
 	}
-      else if (show > 0 || TYPE_NAME (type) == NULL)
+      else if (show > 0 || type->name () == NULL)
 	{
 	  LONGEST lastval = 0;
 
@@ -1583,19 +1588,20 @@ c_type_print_base_1 (struct type *type,
 	    {
 	      struct type *underlying = check_typedef (TYPE_TARGET_TYPE (type));
 
-	      if (TYPE_NAME (underlying) != NULL)
-		fprintf_filtered (stream, ": %s ", TYPE_NAME (underlying));
+	      if (underlying->name () != NULL)
+		fprintf_filtered (stream, ": %s ", underlying->name ());
 	    }
 
 	  fprintf_filtered (stream, "{");
-	  len = TYPE_NFIELDS (type);
+	  len = type->num_fields ();
 	  for (i = 0; i < len; i++)
 	    {
 	      QUIT;
 	      if (i)
 		fprintf_filtered (stream, ", ");
 	      wrap_here ("    ");
-	      fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+	      fputs_styled (TYPE_FIELD_NAME (type, i),
+			    variable_name_style.style (), stream);
 	      if (lastval != TYPE_FIELD_ENUMVAL (type, i))
 		{
 		  fprintf_filtered (stream, " = %s",
@@ -1614,14 +1620,14 @@ c_type_print_base_1 (struct type *type,
 
 	local_flags.local_typedefs = NULL;
 
-	c_type_print_modifier (type, stream, 0, 1);
+	c_type_print_modifier (type, stream, 0, 1, language);
 	fprintf_filtered (stream, "flag ");
-	print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
+	print_name_maybe_canonical (type->name (), flags, stream);
 	if (show > 0)
 	  {
 	    fputs_filtered (" ", stream);
 	    fprintf_filtered (stream, "{\n");
-	    if (TYPE_NFIELDS (type) == 0)
+	    if (type->num_fields () == 0)
 	      {
 		if (TYPE_STUB (type))
 		  fprintfi_filtered (level + 4, stream,
@@ -1632,14 +1638,14 @@ c_type_print_base_1 (struct type *type,
 				     _("%p[<no data fields>%p]\n"),
 				     metadata_style.style ().ptr (), nullptr);
 	      }
-	    len = TYPE_NFIELDS (type);
+	    len = type->num_fields ();
 	    for (i = 0; i < len; i++)
 	      {
 		QUIT;
 		print_spaces_filtered (level + 4, stream);
 		/* We pass "show" here and not "show - 1" to get enum types
 		   printed.  There's no other way to see them.  */
-		c_print_type_1 (TYPE_FIELD_TYPE (type, i),
+		c_print_type_1 (type->field (i).type (),
 				TYPE_FIELD_NAME (type, i),
 				stream, show, level + 4,
 				language, &local_flags, podata);
@@ -1678,7 +1684,7 @@ c_type_print_base_1 (struct type *type,
 
     case TYPE_CODE_NAMESPACE:
       fputs_filtered ("namespace ", stream);
-      fputs_filtered (TYPE_NAME (type), stream);
+      fputs_filtered (type->name (), stream);
       break;
 
     default:
@@ -1686,17 +1692,17 @@ c_type_print_base_1 (struct type *type,
          as fundamental types.  For these, just print whatever the
          type name is, as recorded in the type itself.  If there is no
          type name, then complain.  */
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  c_type_print_modifier (type, stream, 0, 1);
-	  print_name_maybe_canonical (TYPE_NAME (type), flags, stream);
+	  c_type_print_modifier (type, stream, 0, 1, language);
+	  print_name_maybe_canonical (type->name (), flags, stream);
 	}
       else
 	{
 	  /* At least for dump_symtab, it is important that this not
 	     be an error ().  */
 	  fprintf_styled (stream, metadata_style.style (),
-			  _("<invalid type code %d>"), TYPE_CODE (type));
+			  _("<invalid type code %d>"), type->code ());
 	}
       break;
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-valprint.c ./gdb/c-valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-valprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/c-valprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for printing C values for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -66,11 +66,11 @@ c_textual_element_type (struct type *typ
   true_type = check_typedef (type);
 
   /* TYPE_CODE_CHAR is always textual.  */
-  if (TYPE_CODE (true_type) == TYPE_CODE_CHAR)
+  if (true_type->code () == TYPE_CODE_CHAR)
     return 1;
 
   /* Any other character-like types must be integral.  */
-  if (TYPE_CODE (true_type) != TYPE_CODE_INT)
+  if (true_type->code () != TYPE_CODE_INT)
     return 0;
 
   /* We peel typedefs one by one, looking for a match.  */
@@ -78,10 +78,10 @@ c_textual_element_type (struct type *typ
   while (iter_type)
     {
       /* Check the name of the type.  */
-      if (TYPE_NAME (iter_type) && textual_name (TYPE_NAME (iter_type)))
+      if (iter_type->name () && textual_name (iter_type->name ()))
 	return 1;
 
-      if (TYPE_CODE (iter_type) != TYPE_CODE_TYPEDEF)
+      if (iter_type->code () != TYPE_CODE_TYPEDEF)
 	break;
 
       /* Peel a single typedef.  If the typedef doesn't have a target
@@ -97,7 +97,7 @@ c_textual_element_type (struct type *typ
     {
       /* Print this as a string if we can manage it.  For now, no wide
 	 character support.  */
-      if (TYPE_CODE (true_type) == TYPE_CODE_INT
+      if (true_type->code () == TYPE_CODE_INT
 	  && TYPE_LENGTH (true_type) == 1)
 	return 1;
     }
@@ -106,7 +106,7 @@ c_textual_element_type (struct type *typ
       /* If a one-byte TYPE_CODE_INT is missing the not-a-character
 	 flag, then we treat it as text; otherwise, we assume it's
 	 being used as data.  */
-      if (TYPE_CODE (true_type) == TYPE_CODE_INT
+      if (true_type->code () == TYPE_CODE_INT
 	  && TYPE_LENGTH (true_type) == 1
 	  && !TYPE_NOTTEXT (true_type))
 	return 1;
@@ -121,7 +121,7 @@ static const struct generic_val_print_de
 {
   "",
   " + ",
-  " * I",
+  "i",
   "true",
   "false",
   "void",
@@ -146,7 +146,7 @@ print_unpacked_pointer (struct type *typ
   int want_space = 0;
   struct gdbarch *gdbarch = get_type_arch (type);
 
-  if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
+  if (elttype->code () == TYPE_CODE_FUNC)
     {
       /* Try to print what function it points to.  */
       print_function_pointer_address (options, gdbarch, address, stream);
@@ -228,45 +228,37 @@ print_unpacked_pointer (struct type *typ
     }
 }
 
-/* c_val_print helper for TYPE_CODE_ARRAY.  */
+/* c_value_print helper for TYPE_CODE_ARRAY.  */
 
 static void
-c_val_print_array (struct type *type, const gdb_byte *valaddr,
-		   int embedded_offset, CORE_ADDR address,
-		   struct ui_file *stream, int recurse,
-		   struct value *original_value,
-		   const struct value_print_options *options)
-{
+c_value_print_array (struct value *val,
+		     struct ui_file *stream, int recurse,
+		     const struct value_print_options *options)
+{
+  struct type *type = check_typedef (value_type (val));
+  CORE_ADDR address = value_address (val);
+  const gdb_byte *valaddr = value_contents_for_printing (val);
   struct type *unresolved_elttype = TYPE_TARGET_TYPE (type);
   struct type *elttype = check_typedef (unresolved_elttype);
-  struct gdbarch *arch = get_type_arch (type);
-  int unit_size = gdbarch_addressable_memory_unit_size (arch);
 
   if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (unresolved_elttype) > 0)
     {
       LONGEST low_bound, high_bound;
       int eltlen, len;
       enum bfd_endian byte_order = type_byte_order (type);
-      unsigned int i = 0;	/* Number of characters printed.  */
 
       if (!get_array_bounds (type, &low_bound, &high_bound))
 	error (_("Could not determine the array high bound"));
 
       eltlen = TYPE_LENGTH (elttype);
       len = high_bound - low_bound + 1;
-      if (options->prettyformat_arrays)
-	{
-	  print_spaces_filtered (2 + 2 * recurse, stream);
-	}
 
       /* Print arrays of textual chars with a string syntax, as
 	 long as the entire array is valid.  */
       if (c_textual_element_type (unresolved_elttype,
 				  options->format)
-	  && value_bytes_available (original_value, embedded_offset,
-				    TYPE_LENGTH (type))
-	  && !value_bits_any_optimized_out (original_value,
-					    TARGET_CHAR_BIT * embedded_offset,
+	  && value_bytes_available (val, 0, TYPE_LENGTH (type))
+	  && !value_bits_any_optimized_out (val, 0,
 					    TARGET_CHAR_BIT * TYPE_LENGTH (type)))
 	{
 	  int force_ellipses = 0;
@@ -280,9 +272,7 @@ c_val_print_array (struct type *type, co
 	      for (temp_len = 0;
 		   (temp_len < len
 		    && temp_len < options->print_max
-		    && extract_unsigned_integer (valaddr
-						 + embedded_offset * unit_size
-						 + temp_len * eltlen,
+		    && extract_unsigned_integer (valaddr + temp_len * eltlen,
 						 eltlen, byte_order) != 0);
 		   ++temp_len)
 		;
@@ -292,25 +282,22 @@ c_val_print_array (struct type *type, co
 		 the next character is not \000.  */
 	      if (temp_len == options->print_max && temp_len < len)
 		{
-		  ULONGEST val
-		    = extract_unsigned_integer (valaddr
-						+ embedded_offset * unit_size
-						+ temp_len * eltlen,
+		  ULONGEST ival
+		    = extract_unsigned_integer (valaddr + temp_len * eltlen,
 						eltlen, byte_order);
-		  if (val != 0)
+		  if (ival != 0)
 		    force_ellipses = 1;
 		}
 
 	      len = temp_len;
 	    }
 
-	  LA_PRINT_STRING (stream, unresolved_elttype,
-			   valaddr + embedded_offset * unit_size, len,
+	  LA_PRINT_STRING (stream, unresolved_elttype, valaddr, len,
 			   NULL, force_ellipses, options);
-	  i = len;
 	}
       else
 	{
+	  unsigned int i = 0;
 	  fprintf_filtered (stream, "{");
 	  /* If this is a virtual function table, print the 0th
 	     entry specially, and the rest of the members
@@ -321,13 +308,7 @@ c_val_print_array (struct type *type, co
 	      fprintf_filtered (stream, _("%d vtable entries"),
 				len - 1);
 	    }
-	  else
-	    {
-	      i = 0;
-	    }
-	  val_print_array_elements (type, embedded_offset,
-				    address, stream,
-				    recurse, original_value, options, i);
+	  value_print_array_elements (val, stream, recurse, options, i);
 	  fprintf_filtered (stream, "}");
 	}
     }
@@ -335,209 +316,158 @@ c_val_print_array (struct type *type, co
     {
       /* Array of unspecified length: treat like pointer to first elt.  */
       print_unpacked_pointer (type, elttype, unresolved_elttype, valaddr,
-			      embedded_offset, address + embedded_offset,
-			      stream, recurse, options);
+			      0, address, stream, recurse, options);
     }
 }
 
-/* c_val_print helper for TYPE_CODE_PTR.  */
+/* c_value_print_inner helper for TYPE_CODE_PTR.  */
 
 static void
-c_val_print_ptr (struct type *type, const gdb_byte *valaddr,
-		 int embedded_offset, struct ui_file *stream, int recurse,
-		 struct value *original_value,
-		 const struct value_print_options *options)
+c_value_print_ptr (struct value *val, struct ui_file *stream, int recurse,
+		   const struct value_print_options *options)
 {
-  struct gdbarch *arch = get_type_arch (type);
-  int unit_size = gdbarch_addressable_memory_unit_size (arch);
-
   if (options->format && options->format != 's')
     {
-      val_print_scalar_formatted (type, embedded_offset,
-				  original_value, options, 0, stream);
+      value_print_scalar_formatted (val, options, 0, stream);
+      return;
     }
-  else if (options->vtblprint && cp_is_vtbl_ptr_type (type))
+
+  struct type *type = check_typedef (value_type (val));
+  struct gdbarch *arch = get_type_arch (type);
+  const gdb_byte *valaddr = value_contents_for_printing (val);
+
+  if (options->vtblprint && cp_is_vtbl_ptr_type (type))
     {
       /* Print the unmangled name if desired.  */
       /* Print vtable entry - we only get here if we ARE using
 	 -fvtable_thunks.  (Otherwise, look under
 	 TYPE_CODE_STRUCT.)  */
-      CORE_ADDR addr
-	= extract_typed_address (valaddr + embedded_offset, type);
-      struct gdbarch *gdbarch = get_type_arch (type);
+      CORE_ADDR addr = extract_typed_address (valaddr, type);
 
-      print_function_pointer_address (options, gdbarch, addr, stream);
+      print_function_pointer_address (options, arch, addr, stream);
     }
   else
     {
       struct type *unresolved_elttype = TYPE_TARGET_TYPE (type);
       struct type *elttype = check_typedef (unresolved_elttype);
-      CORE_ADDR addr = unpack_pointer (type,
-				       valaddr + embedded_offset * unit_size);
+      CORE_ADDR addr = unpack_pointer (type, valaddr);
 
       print_unpacked_pointer (type, elttype, unresolved_elttype, valaddr,
-			      embedded_offset, addr, stream, recurse, options);
+			      0, addr, stream, recurse, options);
     }
 }
 
-/* c_val_print helper for TYPE_CODE_STRUCT.  */
+/* c_value_print helper for TYPE_CODE_STRUCT and TYPE_CODE_UNION.  */
 
 static void
-c_val_print_struct (struct type *type, const gdb_byte *valaddr,
-		    int embedded_offset, CORE_ADDR address,
-		    struct ui_file *stream, int recurse,
-		    struct value *original_value,
-		    const struct value_print_options *options)
+c_value_print_struct (struct value *val, struct ui_file *stream, int recurse,
+		      const struct value_print_options *options)
 {
-  if (options->vtblprint && cp_is_vtbl_ptr_type (type))
+  struct type *type = check_typedef (value_type (val));
+
+  if (type->code () == TYPE_CODE_UNION && recurse && !options->unionprint)
+    fprintf_filtered (stream, "{...}");
+  else if (options->vtblprint && cp_is_vtbl_ptr_type (type))
     {
       /* Print the unmangled name if desired.  */
       /* Print vtable entry - we only get here if NOT using
 	 -fvtable_thunks.  (Otherwise, look under
 	 TYPE_CODE_PTR.)  */
       struct gdbarch *gdbarch = get_type_arch (type);
-      int offset = (embedded_offset
-		    + TYPE_FIELD_BITPOS (type,
-					 VTBL_FNADDR_OFFSET) / 8);
-      struct type *field_type = TYPE_FIELD_TYPE (type, VTBL_FNADDR_OFFSET);
+      int offset = TYPE_FIELD_BITPOS (type, VTBL_FNADDR_OFFSET) / 8;
+      struct type *field_type = type->field (VTBL_FNADDR_OFFSET).type ();
+      const gdb_byte *valaddr = value_contents_for_printing (val);
       CORE_ADDR addr = extract_typed_address (valaddr + offset, field_type);
 
       print_function_pointer_address (options, gdbarch, addr, stream);
     }
   else
-    cp_print_value_fields_rtti (type, valaddr,
-				embedded_offset, address,
-				stream, recurse,
-				original_value, options,
-				NULL, 0);
+    cp_print_value_fields (val, stream, recurse, options, NULL, 0);
 }
 
-/* c_val_print helper for TYPE_CODE_UNION.  */
+/* c_value_print helper for TYPE_CODE_INT.  */
 
 static void
-c_val_print_union (struct type *type, const gdb_byte *valaddr,
-		   int embedded_offset, CORE_ADDR address,
-		   struct ui_file *stream, int recurse,
-		   struct value *original_value,
+c_value_print_int (struct value *val, struct ui_file *stream,
 		   const struct value_print_options *options)
 {
-  if (recurse && !options->unionprint)
-    {
-      fprintf_filtered (stream, "{...}");
-     }
-  else
-    {
-      c_val_print_struct (type, valaddr, embedded_offset, address, stream,
-			  recurse, original_value, options);
-    }
-}
-
-/* c_val_print helper for TYPE_CODE_INT.  */
-
-static void
-c_val_print_int (struct type *type, struct type *unresolved_type,
-		 const gdb_byte *valaddr, int embedded_offset,
-		 struct ui_file *stream, struct value *original_value,
-		 const struct value_print_options *options)
-{
-  struct gdbarch *arch = get_type_arch (type);
-  int unit_size = gdbarch_addressable_memory_unit_size (arch);
-
   if (options->format || options->output_format)
     {
       struct value_print_options opts = *options;
 
       opts.format = (options->format ? options->format
 		     : options->output_format);
-      val_print_scalar_formatted (type, embedded_offset,
-				  original_value, &opts, 0, stream);
+      value_print_scalar_formatted (val, &opts, 0, stream);
     }
   else
     {
-      val_print_scalar_formatted (type, embedded_offset,
-				  original_value, options, 0, stream);
+      value_print_scalar_formatted (val, options, 0, stream);
       /* C and C++ has no single byte int type, char is used
 	 instead.  Since we don't know whether the value is really
 	 intended to be used as an integer or a character, print
 	 the character equivalent as well.  */
-      if (c_textual_element_type (unresolved_type, options->format))
+      struct type *type = value_type (val);
+      const gdb_byte *valaddr = value_contents_for_printing (val);
+      if (c_textual_element_type (type, options->format))
 	{
 	  fputs_filtered (" ", stream);
-	  LA_PRINT_CHAR (unpack_long (type,
-				      valaddr + embedded_offset * unit_size),
-			 unresolved_type, stream);
+	  LA_PRINT_CHAR (unpack_long (type, valaddr), type, stream);
 	}
     }
 }
 
-/* c_val_print helper for TYPE_CODE_MEMBERPTR.  */
+/* c_value_print helper for TYPE_CODE_MEMBERPTR.  */
 
 static void
-c_val_print_memberptr (struct type *type, const gdb_byte *valaddr,
-		       int embedded_offset, CORE_ADDR address,
-		       struct ui_file *stream, int recurse,
-		       struct value *original_value,
-		       const struct value_print_options *options)
+c_value_print_memberptr (struct value *val, struct ui_file *stream,
+			 int recurse,
+			 const struct value_print_options *options)
 {
   if (!options->format)
     {
-      cp_print_class_member (valaddr + embedded_offset, type, stream, "&");
+      struct type *type = check_typedef (value_type (val));
+      const gdb_byte *valaddr = value_contents_for_printing (val);
+      cp_print_class_member (valaddr, type, stream, "&");
     }
   else
-    {
-      generic_val_print (type, embedded_offset, address, stream,
-			 recurse, original_value, options, &c_decorations);
-    }
+    generic_value_print (val, stream, recurse, options, &c_decorations);
 }
 
-/* See val_print for a description of the various parameters of this
-   function; they are identical.  */
+/* See c-lang.h.  */
 
 void
-c_val_print (struct type *type,
-	     int embedded_offset, CORE_ADDR address,
-	     struct ui_file *stream, int recurse,
-	     struct value *original_value,
-	     const struct value_print_options *options)
+c_value_print_inner (struct value *val, struct ui_file *stream, int recurse,
+		     const struct value_print_options *options)
 {
-  struct type *unresolved_type = type;
-  const gdb_byte *valaddr = value_contents_for_printing (original_value);
+  struct type *type = value_type (val);
+  const gdb_byte *valaddr = value_contents_for_printing (val);
 
   type = check_typedef (type);
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
-      c_val_print_array (type, valaddr, embedded_offset, address, stream,
-			 recurse, original_value, options);
+      c_value_print_array (val, stream, recurse, options);
       break;
 
     case TYPE_CODE_METHODPTR:
-      cplus_print_method_ptr (valaddr + embedded_offset, type, stream);
+      cplus_print_method_ptr (valaddr, type, stream);
       break;
 
     case TYPE_CODE_PTR:
-      c_val_print_ptr (type, valaddr, embedded_offset, stream, recurse,
-		       original_value, options);
+      c_value_print_ptr (val, stream, recurse, options);
       break;
 
     case TYPE_CODE_UNION:
-      c_val_print_union (type, valaddr, embedded_offset, address, stream,
-			 recurse, original_value, options);
-      break;
-
     case TYPE_CODE_STRUCT:
-      c_val_print_struct (type, valaddr, embedded_offset, address, stream,
-			  recurse, original_value, options);
+      c_value_print_struct (val, stream, recurse, options);
       break;
 
     case TYPE_CODE_INT:
-      c_val_print_int (type, unresolved_type, valaddr, embedded_offset, stream,
-		       original_value, options);
+      c_value_print_int (val, stream, options);
       break;
 
     case TYPE_CODE_MEMBERPTR:
-      c_val_print_memberptr (type, valaddr, embedded_offset, address, stream,
-			     recurse, original_value, options);
+      c_value_print_memberptr (val, stream, recurse, options);
       break;
 
     case TYPE_CODE_REF:
@@ -556,18 +486,17 @@ c_val_print (struct type *type,
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_CHAR:
     default:
-      generic_val_print (type, embedded_offset, address,
-			 stream, recurse, original_value, options,
-			 &c_decorations);
+      generic_value_print (val, stream, recurse, options, &c_decorations);
       break;
     }
 }
+
 
 void
 c_value_print (struct value *val, struct ui_file *stream, 
 	       const struct value_print_options *options)
 {
-  struct type *type, *real_type, *val_type;
+  struct type *type, *real_type;
   int full, using_enc;
   LONGEST top;
   struct value_print_options opts = *options;
@@ -581,29 +510,27 @@ c_value_print (struct value *val, struct
      C++: if it is a member pointer, we will take care
      of that when we print it.  */
 
-  /* Preserve the original type before stripping typedefs.  We prefer
-     to pass down the original type when possible, but for local
-     checks it is better to look past the typedefs.  */
-  val_type = value_type (val);
-  type = check_typedef (val_type);
+  type = check_typedef (value_type (val));
 
-  if (TYPE_CODE (type) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type))
+  if (type->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type))
     {
+      struct type *original_type = value_type (val);
+
       /* Hack:  remove (char *) for char strings.  Their
          type is indicated by the quoted string anyway.
          (Don't use c_textual_element_type here; quoted strings
          are always exactly (char *), (wchar_t *), or the like.  */
-      if (TYPE_CODE (val_type) == TYPE_CODE_PTR
-	  && TYPE_NAME (val_type) == NULL
-	  && TYPE_NAME (TYPE_TARGET_TYPE (val_type)) != NULL
-	  && (strcmp (TYPE_NAME (TYPE_TARGET_TYPE (val_type)),
+      if (original_type->code () == TYPE_CODE_PTR
+	  && original_type->name () == NULL
+	  && TYPE_TARGET_TYPE (original_type)->name () != NULL
+	  && (strcmp (TYPE_TARGET_TYPE (original_type)->name (),
 		      "char") == 0
-	      || textual_name (TYPE_NAME (TYPE_TARGET_TYPE (val_type)))))
+	      || textual_name (TYPE_TARGET_TYPE (original_type)->name ())))
 	{
 	  /* Print nothing.  */
 	}
       else if (options->objectprint
-	       && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT))
+	       && (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_STRUCT))
 	{
 	  int is_ref = TYPE_IS_REFERENCE (type);
 	  enum type_code refcode = TYPE_CODE_UNDEF;
@@ -611,7 +538,7 @@ c_value_print (struct value *val, struct
 	  if (is_ref)
 	    {
 	      val = value_addr (val);
-	      refcode = TYPE_CODE (type);
+	      refcode = type->code ();
 	    }
 
 	  /* Pointer to class, check real type of object.  */
@@ -624,7 +551,6 @@ c_value_print (struct value *val, struct
 	      if (real_type)
 		{
 		  /* RTTI entry found.  */
-		  type = real_type;
 
 		  /* Need to adjust pointer value.  */
 		  val = value_from_pointer (real_type,
@@ -637,14 +563,11 @@ c_value_print (struct value *val, struct
 	    }
 
 	  if (is_ref)
-	    {
-	      val = value_ref (value_ind (val), refcode);
-	      type = value_type (val);
-	    }
+	    val = value_ref (value_ind (val), refcode);
 
+	  type = value_type (val);
 	  type_print (type, "", stream, -1);
 	  fprintf_filtered (stream, ") ");
-	  val_type = type;
 	}
       else
 	{
@@ -658,7 +581,7 @@ c_value_print (struct value *val, struct
   if (!value_initialized (val))
     fprintf_filtered (stream, " [uninitialized] ");
 
-  if (options->objectprint && (TYPE_CODE (type) == TYPE_CODE_STRUCT))
+  if (options->objectprint && (type->code () == TYPE_CODE_STRUCT))
     {
       /* Attempt to determine real type of object.  */
       real_type = value_rtti_type (val, &full, &top, &using_enc);
@@ -667,36 +590,25 @@ c_value_print (struct value *val, struct
 	  /* We have RTTI information, so use it.  */
 	  val = value_full_object (val, real_type, 
 				   full, top, using_enc);
+	  /* In a destructor we might see a real type that is a
+	     superclass of the object's type.  In this case it is
+	     better to leave the object as-is.  */
+	  if (!(full
+		&& (TYPE_LENGTH (real_type)
+		    < TYPE_LENGTH (value_enclosing_type (val)))))
+	    val = value_cast (real_type, val);
 	  fprintf_filtered (stream, "(%s%s) ",
-			    TYPE_NAME (real_type),
+			    real_type->name (),
 			    full ? "" : _(" [incomplete object]"));
-	  /* Print out object: enclosing type is same as real_type if
-	     full.  */
-	  val_print (value_enclosing_type (val),
-		     0,
-		     value_address (val), stream, 0,
-		     val, &opts, current_language);
-	  return;
-          /* Note: When we look up RTTI entries, we don't get any
-             information on const or volatile attributes.  */
 	}
       else if (type != check_typedef (value_enclosing_type (val)))
 	{
 	  /* No RTTI information, so let's do our best.  */
 	  fprintf_filtered (stream, "(%s ?) ",
-			    TYPE_NAME (value_enclosing_type (val)));
-	  val_print (value_enclosing_type (val),
-		     0,
-		     value_address (val), stream, 0,
-		     val, &opts, current_language);
-	  return;
+			    value_enclosing_type (val)->name ());
+	  val = value_cast (value_enclosing_type (val), val);
 	}
-      /* Otherwise, we end up at the return outside this "if".  */
     }
 
-  val_print (val_type,
-	     value_embedded_offset (val),
-	     value_address (val),
-	     stream, 0,
-	     val, &opts, current_language);
+  common_val_print (val, stream, 0, &opts, current_language);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-varobj.c ./gdb/c-varobj.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/c-varobj.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/c-varobj.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* varobj support for C and C++.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 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
@@ -83,11 +83,11 @@ adjust_value_for_child_access (struct va
   /* Pointers to structures are treated just like
      structures when accessing children.  Don't
      dereference pointers to other types.  */
-  if (TYPE_CODE (*type) == TYPE_CODE_PTR)
+  if ((*type)->code () == TYPE_CODE_PTR)
     {
       struct type *target_type = get_target_type (*type);
-      if (TYPE_CODE (target_type) == TYPE_CODE_STRUCT
-	  || TYPE_CODE (target_type) == TYPE_CODE_UNION)
+      if (target_type->code () == TYPE_CODE_STRUCT
+	  || target_type->code () == TYPE_CODE_UNION)
 	{
 	  if (value && *value)
 	    {
@@ -142,9 +142,9 @@ c_is_path_expr_parent (const struct varo
   type = varobj_get_gdb_type (var);
 
   /* Anonymous unions and structs are also not path_expr parents.  */
-  if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
-       || TYPE_CODE (type) == TYPE_CODE_UNION)
-      && TYPE_NAME (type) == NULL)
+  if ((type->code () == TYPE_CODE_STRUCT
+       || type->code () == TYPE_CODE_UNION)
+      && type->name () == NULL)
     {
       const struct varobj *parent = var->parent;
 
@@ -159,12 +159,12 @@ c_is_path_expr_parent (const struct varo
 	  parent_type = varobj_get_value_type (parent);
 	  adjust_value_for_child_access (NULL, &parent_type, &was_ptr, 0);
 
-	  if (TYPE_CODE (parent_type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (parent_type) == TYPE_CODE_UNION)
+	  if (parent_type->code () == TYPE_CODE_STRUCT
+	      || parent_type->code () == TYPE_CODE_UNION)
 	    {
 	      const char *field_name;
 
-	      gdb_assert (var->index < TYPE_NFIELDS (parent_type));
+	      gdb_assert (var->index < parent_type->num_fields ());
 	      field_name = TYPE_FIELD_NAME (parent_type, var->index);
 	      return !(field_name == NULL || *field_name == '\0');
 	    }
@@ -188,11 +188,11 @@ c_number_of_children (const struct varob
   adjust_value_for_child_access (NULL, &type, NULL, 0);
   target = get_target_type (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
       if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
-	  && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
+	  && (type->bounds ()->high.kind () != PROP_UNDEFINED))
 	children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
       else
 	/* If we don't know how many elements there are, don't display
@@ -202,7 +202,7 @@ c_number_of_children (const struct varob
 
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
-      children = TYPE_NFIELDS (type);
+      children = type->num_fields ();
       break;
 
     case TYPE_CODE_PTR:
@@ -214,8 +214,8 @@ c_number_of_children (const struct varob
          to test for it, please mind that a little magic is necessary to
          properly identify it: char* has TYPE_CODE == TYPE_CODE_INT and 
          TYPE_NAME == "char".  */
-      if (TYPE_CODE (target) == TYPE_CODE_FUNC
-	  || TYPE_CODE (target) == TYPE_CODE_VOID)
+      if (target->code () == TYPE_CODE_FUNC
+	  || target->code () == TYPE_CODE_VOID)
 	children = 0;
       else
 	children = 1;
@@ -249,12 +249,12 @@ value_struct_element_index (struct value
 
   type = check_typedef (type);
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (type) == TYPE_CODE_UNION);
+  gdb_assert (type->code () == TYPE_CODE_STRUCT
+	      || type->code () == TYPE_CODE_UNION);
 
   try
     {
-      if (field_is_static (&TYPE_FIELD (type, type_index)))
+      if (field_is_static (&type->field (type_index)))
 	result = value_static_field (type, type_index);
       else
 	result = value_primitive_field (value, 0, type_index, type);
@@ -302,17 +302,17 @@ c_describe_child (const struct varobj *p
     }
   adjust_value_for_child_access (&value, &type, &was_ptr, 0);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
       if (cname)
-	*cname = int_string (index
-			     + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)),
+	*cname = int_string (index + type->bounds ()->low.const_val (),
 			     10, 1, 0, 0);
 
       if (cvalue && value)
 	{
-	  int real_index = index + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
+	  int real_index
+	    = index + type->bounds ()->low.const_val ();
 
 	  try
 	    {
@@ -327,12 +327,10 @@ c_describe_child (const struct varobj *p
 	*ctype = get_target_type (type);
 
       if (cfull_expression)
-	*cfull_expression = 
-	  string_printf ("(%s)[%s]", parent_expression.c_str (),
-			 int_string (index
-				     + TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type)),
-				     10, 1, 0, 0));
-
+	*cfull_expression = string_printf
+	  ("(%s)[%s]", parent_expression.c_str (),
+	   int_string (index + type->bounds ()->low.const_val (),
+		       10, 1, 0, 0));
 
       break;
 
@@ -348,7 +346,7 @@ c_describe_child (const struct varobj *p
 	  {
 	    if (cname)
 	      {
-		if (TYPE_CODE (TYPE_FIELD_TYPE (type, index))
+		if (type->field (index).type ()->code ()
 		    == TYPE_CODE_STRUCT)
 		  *cname = ANONYMOUS_STRUCT_NAME;
 		else
@@ -380,7 +378,7 @@ c_describe_child (const struct varobj *p
 	  }
 
 	if (ctype)
-	  *ctype = TYPE_FIELD_TYPE (type, index);
+	  *ctype = type->field (index).type ();
       }
       break;
 
@@ -486,7 +484,7 @@ c_value_of_variable (const struct varobj
   while (TYPE_IS_REFERENCE (type))
     type = check_typedef (TYPE_TARGET_TYPE (type));
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
@@ -577,12 +575,12 @@ cplus_number_of_children (const struct v
         {
           value = var->value.get ();
           lookup_actual_type = (TYPE_IS_REFERENCE (var->type)
-				|| TYPE_CODE (var->type) == TYPE_CODE_PTR);
+				|| var->type->code () == TYPE_CODE_PTR);
         }
       adjust_value_for_child_access (&value, &type, NULL, lookup_actual_type);
 
-      if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT)
-	  || ((TYPE_CODE (type)) == TYPE_CODE_UNION))
+      if (((type->code ()) == TYPE_CODE_STRUCT)
+	  || ((type->code ()) == TYPE_CODE_UNION))
 	{
 	  int kids[3];
 
@@ -614,7 +612,7 @@ cplus_number_of_children (const struct v
 
 	  value = parent->value.get ();
 	  lookup_actual_type = (TYPE_IS_REFERENCE (parent->type)
-				|| TYPE_CODE (parent->type) == TYPE_CODE_PTR);
+				|| parent->type->code () == TYPE_CODE_PTR);
         }
       adjust_value_for_child_access (&value, &type, NULL, lookup_actual_type);
 
@@ -649,7 +647,7 @@ cplus_class_num_children (struct type *t
   children[v_protected] = 0;
 
   vptr_fieldno = get_vptr_fieldno (type, &basetype);
-  for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); i++)
+  for (i = TYPE_N_BASECLASSES (type); i < type->num_fields (); i++)
     {
       /* If we have a virtual table pointer, omit it.  Even if virtual
 	 table pointers are not specifically marked in the debug info,
@@ -719,7 +717,7 @@ cplus_describe_child (const struct varob
   var = (CPLUS_FAKE_CHILD (parent)) ? parent->parent : parent;
   if (opts.objectprint)
     lookup_actual_type = (TYPE_IS_REFERENCE (var->type)
-			  || TYPE_CODE (var->type) == TYPE_CODE_PTR);
+			  || var->type->code () == TYPE_CODE_PTR);
   value = var->value.get ();
   type = varobj_get_value_type (var);
   if (cfull_expression)
@@ -728,8 +726,8 @@ cplus_describe_child (const struct varob
 
   adjust_value_for_child_access (&value, &type, &was_ptr, lookup_actual_type);
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION)
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION)
     {
       const char *join = was_ptr ? "->" : ".";
 
@@ -771,10 +769,10 @@ cplus_describe_child (const struct varob
 	    {
 	      if (cname)
 		{
-		  if (TYPE_CODE (TYPE_FIELD_TYPE (type, type_index))
+		  if (type->field (type_index).type ()->code ()
 		      == TYPE_CODE_STRUCT)
 		    *cname = ANONYMOUS_STRUCT_NAME;
-		  else if (TYPE_CODE (TYPE_FIELD_TYPE (type, type_index))
+		  else if (type->field (type_index).type ()->code ()
 			   == TYPE_CODE_UNION)
 		    *cname = ANONYMOUS_UNION_NAME;
 		}
@@ -797,7 +795,7 @@ cplus_describe_child (const struct varob
 	    *cvalue = value_struct_element_index (value, type_index);
 
 	  if (ctype)
-	    *ctype = TYPE_FIELD_TYPE (type, type_index);
+	    *ctype = type->field (type_index).type ();
 	}
       else if (index < TYPE_N_BASECLASSES (type))
 	{
@@ -806,11 +804,11 @@ cplus_describe_child (const struct varob
 	    *cname = TYPE_FIELD_NAME (type, index);
 
 	  if (cvalue && value)
-	    *cvalue = value_cast (TYPE_FIELD_TYPE (type, index), value);
+	    *cvalue = value_cast (type->field (index).type (), value);
 
 	  if (ctype)
 	    {
-	      *ctype = TYPE_FIELD_TYPE (type, index);
+	      *ctype = type->field (index).type ();
 	    }
 
 	  if (cfull_expression)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/darwin-nat.c ./gdb/darwin-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/darwin-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/darwin-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Darwin support for GDB, the GNU debugger.
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    Contributed by AdaCore.
 
@@ -89,12 +89,8 @@
 #define PTRACE(CMD, PID, ADDR, SIG) \
  darwin_ptrace(#CMD, CMD, (PID), (ADDR), (SIG))
 
-static ptid_t darwin_wait (ptid_t ptid, struct target_waitstatus *status);
-
 static void darwin_ptrace_me (void);
 
-static void darwin_ptrace_him (int pid);
-
 static void darwin_encode_reply (mig_reply_error_t *reply,
 				 mach_msg_header_t *hdr, integer_t code);
 
@@ -258,8 +254,8 @@ cmp_thread_t (const void *l, const void
   return (int)(tl - tr);
 }
 
-static void
-darwin_check_new_threads (struct inferior *inf)
+void
+darwin_nat_target::check_new_threads (inferior *inf)
 {
   kern_return_t kret;
   thread_array_t thread_list;
@@ -355,7 +351,7 @@ darwin_check_new_threads (struct inferio
 	  pti->msg_state = DARWIN_RUNNING;
 
 	  /* Add the new thread.  */
-	  add_thread_with_info (ptid_t (inf->pid, 0, new_id), pti);
+	  add_thread_with_info (this, ptid_t (inf->pid, 0, new_id), pti);
 	  new_thread_vec.push_back (pti);
 	  new_ix++;
 	  continue;
@@ -364,7 +360,7 @@ darwin_check_new_threads (struct inferio
 	{
 	  /* A thread was removed.  */
 	  struct thread_info *thr
-	    = find_thread_ptid (ptid_t (inf->pid, 0, old_id));
+	    = find_thread_ptid (this, ptid_t (inf->pid, 0, old_id));
 	  delete_thread (thr);
 	  kret = mach_port_deallocate (gdb_task, old_id);
 	  MACH_CHECK_ERROR (kret);
@@ -382,32 +378,30 @@ darwin_check_new_threads (struct inferio
   MACH_CHECK_ERROR (kret);
 }
 
-static int
-find_inferior_task_it (struct inferior *inf, void *port_ptr)
-{
-  darwin_inferior *priv = get_darwin_inferior (inf);
-
-  return priv != nullptr && priv->task == *(task_t *)port_ptr;
-}
-
-static int
-find_inferior_pid_it (struct inferior *inf, void *pid_ptr)
-{
-  return inf->pid == *(int *)pid_ptr;
-}
-
 /* Return an inferior by task port.  */
 static struct inferior *
 darwin_find_inferior_by_task (task_t port)
 {
-  return iterate_over_inferiors (&find_inferior_task_it, &port);
+  for (inferior *inf : all_inferiors ())
+    {
+      darwin_inferior *priv = get_darwin_inferior (inf);
+
+      if (priv != nullptr && priv->task == port)
+	return inf;
+    }
+  return nullptr;
 }
 
 /* Return an inferior by pid port.  */
 static struct inferior *
 darwin_find_inferior_by_pid (int pid)
 {
-  return iterate_over_inferiors (&find_inferior_pid_it, &pid);
+  for (inferior *inf : all_inferiors ())
+    {
+      if (inf->pid == pid)
+	return inf;
+    }
+  return nullptr;
 }
 
 /* Return a thread by port.  */
@@ -462,23 +456,6 @@ darwin_resume_inferior (struct inferior
     }
 }
 
-/* Iterator functions.  */
-
-static int
-darwin_suspend_inferior_it (struct inferior *inf, void *arg)
-{
-  darwin_suspend_inferior (inf);
-  darwin_check_new_threads (inf);
-  return 0;
-}
-
-static int
-darwin_resume_inferior_it (struct inferior *inf, void *arg)
-{
-  darwin_resume_inferior (inf);
-  return 0;
-}
-
 static void
 darwin_dump_message (mach_msg_header_t *hdr, int disp_body)
 {
@@ -611,10 +588,10 @@ darwin_check_message_ndr (NDR_record_t *
 
 /* Decode an exception message.  */
 
-static int
-darwin_decode_exception_message (mach_msg_header_t *hdr,
-				 struct inferior **pinf,
-				 darwin_thread_t **pthread)
+int
+darwin_nat_target::decode_exception_message (mach_msg_header_t *hdr,
+					     inferior **pinf,
+					     darwin_thread_t **pthread)
 {
   mach_msg_body_t *bod = (mach_msg_body_t*)(hdr + 1);
   mach_msg_port_descriptor_t *desc = (mach_msg_port_descriptor_t *)(bod + 1);
@@ -712,7 +689,7 @@ darwin_decode_exception_message (mach_ms
   /* Find thread by port.  */
   /* Check for new threads.  Do it early so that the port in the exception
      message can be deallocated.  */
-  darwin_check_new_threads (inf);
+  check_new_threads (inf);
 
   /* Free the thread port (as gdb knows the thread, it has already has a right
      for it, so this just decrement a reference counter).  */
@@ -898,23 +875,6 @@ darwin_resume_inferior_threads (struct i
       darwin_resume_thread (inf, thread, step, nsignal);
 }
 
-struct resume_inferior_threads_param
-{
-  int step;
-  int nsignal;
-};
-
-static int
-darwin_resume_inferior_threads_it (struct inferior *inf, void *param)
-{
-  int step = ((struct resume_inferior_threads_param *)param)->step;
-  int nsignal = ((struct resume_inferior_threads_param *)param)->nsignal;
-
-  darwin_resume_inferior_threads (inf, step, nsignal);
-
-  return 0;
-}
-
 /* Suspend all threads of INF.  */
 
 static void
@@ -963,19 +923,17 @@ darwin_nat_target::resume (ptid_t ptid,
   /* minus_one_ptid is RESUME_ALL.  */
   if (ptid == minus_one_ptid)
     {
-      struct resume_inferior_threads_param param;
-
-      param.nsignal = nsignal;
-      param.step = step;
-
       /* Resume threads.  */
-      iterate_over_inferiors (darwin_resume_inferior_threads_it, &param);
+      for (inferior *inf : all_inferiors ())
+	darwin_resume_inferior_threads (inf, step, nsignal);
+
       /* Resume tasks.  */
-      iterate_over_inferiors (darwin_resume_inferior_it, NULL);
+      for (inferior *inf : all_inferiors ())
+	darwin_resume_inferior (inf);
     }
   else
     {
-      struct inferior *inf = find_inferior_ptid (ptid);
+      inferior *inf = find_inferior_ptid (this, ptid);
       long tid = ptid.tid ();
 
       /* Stop the inferior (should be useless).  */
@@ -1001,11 +959,11 @@ darwin_nat_target::resume (ptid_t ptid,
     }
 }
 
-static ptid_t
-darwin_decode_message (mach_msg_header_t *hdr,
-		       darwin_thread_t **pthread,
-		       struct inferior **pinf,
-		       struct target_waitstatus *status)
+ptid_t
+darwin_nat_target::decode_message (mach_msg_header_t *hdr,
+				   darwin_thread_t **pthread,
+				   inferior **pinf,
+				   target_waitstatus *status)
 {
   darwin_thread_t *thread;
   struct inferior *inf;
@@ -1016,7 +974,7 @@ darwin_decode_message (mach_msg_header_t
       int res;
 
       /* Decode message.  */
-      res = darwin_decode_exception_message (hdr, &inf, &thread);
+      res = decode_exception_message (hdr, &inf, &thread);
 
       if (res < 0)
 	{
@@ -1153,8 +1111,7 @@ darwin_decode_message (mach_msg_header_t
 	      /* Looks necessary on Leopard and harmless...  */
 	      wait4 (inf->pid, &wstatus, 0, NULL);
 
-	      inferior_ptid = ptid_t (inf->pid, 0, 0);
-	      return inferior_ptid;
+	      return ptid_t (inf->pid);
 	    }
 	  else
 	    {
@@ -1172,8 +1129,8 @@ darwin_decode_message (mach_msg_header_t
   return minus_one_ptid;
 }
 
-static int
-cancel_breakpoint (ptid_t ptid)
+int
+darwin_nat_target::cancel_breakpoint (ptid_t ptid)
 {
   /* Arrange for a breakpoint to be hit again later.  We will handle
      the current event, eventually we will resume this thread, and this
@@ -1183,7 +1140,7 @@ cancel_breakpoint (ptid_t ptid)
      delete or disable the breakpoint, but the thread will have already
      tripped on it.  */
 
-  struct regcache *regcache = get_thread_regcache (ptid);
+  struct regcache *regcache = get_thread_regcache (this, ptid);
   struct gdbarch *gdbarch = regcache->arch ();
   CORE_ADDR pc;
 
@@ -1202,8 +1159,8 @@ cancel_breakpoint (ptid_t ptid)
   return 0;
 }
 
-static ptid_t
-darwin_wait (ptid_t ptid, struct target_waitstatus *status)
+ptid_t
+darwin_nat_target::wait_1 (ptid_t ptid, struct target_waitstatus *status)
 {
   kern_return_t kret;
   union
@@ -1214,7 +1171,6 @@ darwin_wait (ptid_t ptid, struct target_
   mach_msg_header_t *hdr = &msgin.hdr;
   ptid_t res;
   darwin_thread_t *thread;
-  struct inferior *inf;
 
   inferior_debug
     (2, _("darwin_wait: waiting for a message pid=%d thread=%lx\n"),
@@ -1223,7 +1179,7 @@ darwin_wait (ptid_t ptid, struct target_
   /* Handle fake stop events at first.  */
   if (darwin_inf_fake_stop != NULL)
     {
-      inf = darwin_inf_fake_stop;
+      inferior *inf = darwin_inf_fake_stop;
       darwin_inf_fake_stop = NULL;
 
       darwin_inferior *priv = get_darwin_inferior (inf);
@@ -1262,7 +1218,8 @@ darwin_wait (ptid_t ptid, struct target_
       if (darwin_debug_flag > 10)
 	darwin_dump_message (hdr, darwin_debug_flag > 11);
 
-      res = darwin_decode_message (hdr, &thread, &inf, status);
+      inferior *inf;
+      res = decode_message (hdr, &thread, &inf, status);
       if (res == minus_one_ptid)
 	continue;
 
@@ -1273,7 +1230,11 @@ darwin_wait (ptid_t ptid, struct target_
   while (status->kind == TARGET_WAITKIND_IGNORE);
 
   /* Stop all tasks.  */
-  iterate_over_inferiors (darwin_suspend_inferior_it, NULL);
+  for (inferior *inf : all_inferiors (this))
+    {
+      darwin_suspend_inferior (inf);
+      check_new_threads (inf);
+    }
 
   /* Read pending messages.  */
   while (1)
@@ -1298,7 +1259,8 @@ darwin_wait (ptid_t ptid, struct target_
       if (darwin_debug_flag > 10)
 	darwin_dump_message (hdr, darwin_debug_flag > 11);
 
-      ptid2 = darwin_decode_message (hdr, &thread, &inf, &status2);
+      inferior *inf;
+      ptid2 = decode_message (hdr, &thread, &inf, &status2);
 
       if (inf != NULL && thread != NULL
 	  && thread->event.ex_type == EXC_BREAKPOINT)
@@ -1325,7 +1287,7 @@ ptid_t
 darwin_nat_target::wait (ptid_t ptid, struct target_waitstatus *status,
 			 int options)
 {
-  return darwin_wait (ptid, status);
+  return wait_1 (ptid, status);
 }
 
 void
@@ -1415,8 +1377,8 @@ darwin_reply_to_all_pending_messages (st
     }
 }
 
-static void
-darwin_stop_inferior (struct inferior *inf)
+void
+darwin_nat_target::stop_inferior (inferior *inf)
 {
   struct target_waitstatus wstatus;
   ptid_t ptid;
@@ -1432,14 +1394,14 @@ darwin_stop_inferior (struct inferior *i
   if (priv->no_ptrace)
     return;
 
-  res = kill (inf->pid, SIGSTOP);
+  res = ::kill (inf->pid, SIGSTOP);
   if (res != 0)
     warning (_("cannot kill: %s"), safe_strerror (errno));
 
   /* Wait until the process is really stopped.  */
   while (1)
     {
-      ptid = darwin_wait (inferior_ptid, &wstatus);
+      ptid = wait_1 (ptid_t (inf->pid), &wstatus);
       if (wstatus.kind == TARGET_WAITKIND_STOPPED
 	  && wstatus.value.sig == GDB_SIGNAL_STOP)
 	break;
@@ -1564,13 +1526,13 @@ darwin_nat_target::kill ()
 
       darwin_resume_inferior (inf);
 
-      ptid = darwin_wait (inferior_ptid, &wstatus);
+      ptid = wait_1 (ptid_t (inf->pid), &wstatus);
     }
   else if (errno != ESRCH)
     warning (_("Failed to kill inferior: kill (%d, 9) returned [%s]"),
 	     inf->pid, safe_strerror (errno));
 
-  target_mourn_inferior (inferior_ptid);
+  target_mourn_inferior (ptid_t (inf->pid));
 }
 
 static void
@@ -1690,7 +1652,7 @@ darwin_attach_pid (struct inferior *inf)
   catch (const gdb_exception &ex)
     {
       exit_inferior (inf);
-      inferior_ptid = null_ptid;
+      switch_to_no_thread ();
 
       throw;
     }
@@ -1716,10 +1678,10 @@ thread_info_from_private_thread_info (da
   gdb_assert_not_reached ("did not find gdb thread for darwin thread");
 }
 
-static void
-darwin_init_thread_list (struct inferior *inf)
+void
+darwin_nat_target::init_thread_list (inferior *inf)
 {
-  darwin_check_new_threads (inf);
+  check_new_threads (inf);
 
   darwin_inferior *priv = get_darwin_inferior (inf);
 
@@ -1729,7 +1691,7 @@ darwin_init_thread_list (struct inferior
   struct thread_info *first_thread
     = thread_info_from_private_thread_info (first_pti);
 
-  inferior_ptid = first_thread->ptid;
+  switch_to_thread (first_thread);
 }
 
 /* The child must synchronize with gdb: gdb must set the exception port
@@ -1783,21 +1745,21 @@ darwin_pre_ptrace (void)
   mark_fd_no_cloexec (ptrace_fds[1]);
 }
 
-static void
-darwin_ptrace_him (int pid)
+void
+darwin_nat_target::ptrace_him (int pid)
 {
   struct inferior *inf = current_inferior ();
 
   darwin_attach_pid (inf);
 
   /* Let's the child run.  */
-  close (ptrace_fds[0]);
-  close (ptrace_fds[1]);
+  ::close (ptrace_fds[0]);
+  ::close (ptrace_fds[1]);
 
   unmark_fd_no_cloexec (ptrace_fds[0]);
   unmark_fd_no_cloexec (ptrace_fds[1]);
 
-  darwin_init_thread_list (inf);
+  init_thread_list (inf);
 
   gdb_startup_inferior (pid, START_INFERIOR_TRAPS_EXPECTED);
 }
@@ -1986,6 +1948,7 @@ darwin_nat_target::create_inferior (cons
 				    char **env, int from_tty)
 {
   gdb::optional<scoped_restore_tmpl<bool>> restore_startup_with_shell;
+  darwin_nat_target *the_target = this;
 
   if (startup_with_shell && may_have_sip ())
     {
@@ -1998,7 +1961,11 @@ darwin_nat_target::create_inferior (cons
 
   /* Do the hard work.  */
   fork_inferior (exec_file, allargs, env, darwin_ptrace_me,
-		 darwin_ptrace_him, darwin_pre_ptrace, copied_shell,
+		 [the_target] (int pid)
+		   {
+		     the_target->ptrace_him (pid);
+		   },
+		 darwin_pre_ptrace, copied_shell,
 		 darwin_execvp);
 }
 
@@ -2045,7 +2012,7 @@ darwin_nat_target::attach (const char *a
 
   if (from_tty)
     {
-      char *exec_file = get_exec_file (0);
+      const char *exec_file = get_exec_file (0);
 
       if (exec_file)
 	printf_unfiltered (_("Attaching to program: %s, %s\n"), exec_file,
@@ -2059,7 +2026,6 @@ darwin_nat_target::attach (const char *a
     error (_("Can't attach to process %d: %s (%d)"),
            pid, safe_strerror (errno), errno);
 
-  inferior_ptid = ptid_t (pid);
   inf = current_inferior ();
   inferior_appeared (inf, pid);
   inf->attach_flag = 1;
@@ -2068,7 +2034,7 @@ darwin_nat_target::attach (const char *a
 
   darwin_suspend_inferior (inf);
 
-  darwin_init_thread_list (inf);
+  init_thread_list (inf);
 
   darwin_inferior *priv = get_darwin_inferior (inf);
 
@@ -2099,7 +2065,7 @@ darwin_nat_target::detach (inferior *inf
 
   /* If ptrace() is in use, stop the process.  */
   if (!priv->no_ptrace)
-    darwin_stop_inferior (inf);
+    stop_inferior (inf);
 
   kret = darwin_restore_exception_ports (priv);
   MACH_CHECK_ERROR (kret);
@@ -2471,7 +2437,7 @@ darwin_nat_target::get_ada_task_ptid (lo
                  names_count * sizeof (mach_port_t));
 
   if (res)
-    return ptid_t (inferior_ptid.pid (), 0, res);
+    return ptid_t (current_inferior ()->pid, 0, res);
   else
     return null_ptid;
 }
@@ -2482,6 +2448,7 @@ darwin_nat_target::supports_multi_proces
   return true;
 }
 
+void _initialize_darwin_nat ();
 void
 _initialize_darwin_nat ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/darwin-nat.h ./gdb/darwin-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/darwin-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/darwin-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Common things used by the various darwin files
-   Copyright (C) 1995-2020 Free Software Foundation, Inc.
+   Copyright (C) 1995-2021 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
@@ -21,6 +21,59 @@
 #include <mach/mach.h>
 #include "gdbthread.h"
 
+struct darwin_exception_msg
+{
+  mach_msg_header_t header;
+
+  /* Thread and task taking the exception.  */
+  mach_port_t thread_port;
+  mach_port_t task_port;
+
+  /* Type of the exception.  */
+  exception_type_t ex_type;
+
+  /* Machine dependent details.  */
+  mach_msg_type_number_t data_count;
+  integer_t ex_data[2];
+};
+
+enum darwin_msg_state
+{
+  /* The thread is running.  */
+  DARWIN_RUNNING,
+
+  /* The thread is stopped.  */
+  DARWIN_STOPPED,
+
+  /* The thread has sent a message and waits for a reply.  */
+  DARWIN_MESSAGE
+};
+
+struct darwin_thread_info : public private_thread_info
+{
+  /* The thread port from a GDB point of view.  */
+  thread_t gdb_port = 0;
+
+  /* The thread port from the inferior point of view.  Not to be used inside
+     gdb except for get_ada_task_ptid.  */
+  thread_t inf_port = 0;
+
+  /* Current message state.
+     If the kernel has sent a message it expects a reply and the inferior
+     can't be killed before.  */
+  enum darwin_msg_state msg_state = DARWIN_RUNNING;
+
+  /* True if this thread is single-stepped.  */
+  bool single_step = false;
+
+  /* True if a signal was manually sent to the thread.  */
+  bool signaled = false;
+
+  /* The last exception received.  */
+  struct darwin_exception_msg event {};
+};
+typedef struct darwin_thread_info darwin_thread_t;
+
 /* This needs to be overridden by the platform specific nat code.  */
 
 class darwin_nat_target : public inf_child_target
@@ -59,6 +112,21 @@ class darwin_nat_target : public inf_chi
   bool supports_multi_process () override;
 
   ptid_t get_ada_task_ptid (long lwp, long thread) override;
+
+private:
+  ptid_t wait_1 (ptid_t, struct target_waitstatus *);
+  void check_new_threads (inferior *inf);
+  int decode_exception_message (mach_msg_header_t *hdr,
+			        inferior **pinf,
+				darwin_thread_t **pthread);
+  ptid_t decode_message (mach_msg_header_t *hdr,
+			 darwin_thread_t **pthread,
+			 inferior **pinf,
+			 target_waitstatus *status);
+  void stop_inferior (inferior *inf);
+  void init_thread_list (inferior *inf);
+  void ptrace_him (int pid);
+  int cancel_breakpoint (ptid_t ptid);
 };
 
 /* Describe the mach exception handling state for a task.  This state is saved
@@ -83,59 +151,6 @@ struct darwin_exception_info
   mach_msg_type_number_t count = 0;
 };
 
-struct darwin_exception_msg
-{
-  mach_msg_header_t header;
-
-  /* Thread and task taking the exception.  */
-  mach_port_t thread_port;
-  mach_port_t task_port;
-
-  /* Type of the exception.  */
-  exception_type_t ex_type;
-
-  /* Machine dependent details.  */
-  mach_msg_type_number_t data_count;
-  integer_t ex_data[2];
-};
-
-enum darwin_msg_state
-{
-  /* The thread is running.  */
-  DARWIN_RUNNING,
-
-  /* The thread is stopped.  */
-  DARWIN_STOPPED,
-
-  /* The thread has sent a message and waits for a reply.  */
-  DARWIN_MESSAGE
-};
-
-struct darwin_thread_info : public private_thread_info
-{
-  /* The thread port from a GDB point of view.  */
-  thread_t gdb_port = 0;
-
-  /* The thread port from the inferior point of view.  Not to be used inside
-     gdb except for get_ada_task_ptid.  */
-  thread_t inf_port = 0;
-
-  /* Current message state.
-     If the kernel has sent a message it expects a reply and the inferior
-     can't be killed before.  */
-  enum darwin_msg_state msg_state = DARWIN_RUNNING;
-
-  /* True if this thread is single-stepped.  */
-  bool single_step = false;
-
-  /* True if a signal was manually sent to the thread.  */
-  bool signaled = false;
-
-  /* The last exception received.  */
-  struct darwin_exception_msg event {};
-};
-typedef struct darwin_thread_info darwin_thread_t;
-
 static inline darwin_thread_info *
 get_darwin_thread_info (class thread_info *thread)
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/darwin-nat-info.c ./gdb/darwin-nat-info.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/darwin-nat-info.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/darwin-nat-info.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Darwin support for GDB, the GNU debugger.
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
 
    Contributed by Apple Computer, Inc.
 
@@ -838,8 +838,9 @@ info_mach_exceptions_command (const char
     }
 }
 
+void _initialize_darwin_info_commands ();
 void
-_initialize_darwin_info_commands (void)
+_initialize_darwin_info_commands ()
 {
   add_info ("mach-tasks", info_mach_tasks_command,
             _("Get list of tasks in system."));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/data-directory/Makefile.in ./gdb/data-directory/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/data-directory/Makefile.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/data-directory/Makefile.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
 # Makefile for building a staged copy of the data-directory.
 # This file is part of GDB.
@@ -63,7 +63,7 @@ GEN_SYSCALLS_FILES = \
 	sparc-linux.xml \
 	sparc64-linux.xml
 
-SYSCALLS_FILES = gdb-syscalls.dtd freebsd.xml $(GEN_SYSCALLS_FILES)
+SYSCALLS_FILES = gdb-syscalls.dtd freebsd.xml netbsd.xml $(GEN_SYSCALLS_FILES)
 
 PYTHON_DIR = python
 PYTHON_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(PYTHON_DIR)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dbxread.c ./gdb/dbxread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dbxread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dbxread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Read dbx symbol tables and convert to internal format, for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -245,7 +245,7 @@ find_text_range (bfd * sym_bfd, struct o
 struct header_file_location
 {
   header_file_location (const char *name_, int instance_,
-			struct partial_symtab *pst_)
+			legacy_psymtab *pst_)
     : name (name_),
       instance (instance_),
       pst (pst_)
@@ -254,7 +254,7 @@ struct header_file_location
 
   const char *name;		/* Name of header file */
   int instance;			/* See above */
-  struct partial_symtab *pst;	/* Partial symtab that has the
+  legacy_psymtab *pst;	/* Partial symtab that has the
 				   BINCL/EINCL defs for this file.  */
 };
 
@@ -263,16 +263,16 @@ static std::vector<struct header_file_lo
 
 /* Local function prototypes.  */
 
-static void read_ofile_symtab (struct objfile *, struct partial_symtab *);
+static void read_ofile_symtab (struct objfile *, legacy_psymtab *);
 
-static void dbx_read_symtab (struct partial_symtab *self,
+static void dbx_read_symtab (legacy_psymtab *self,
 			     struct objfile *objfile);
 
-static void dbx_psymtab_to_symtab_1 (struct objfile *, struct partial_symtab *);
+static void dbx_expand_psymtab (legacy_psymtab *, struct objfile *);
 
 static void read_dbx_symtab (minimal_symbol_reader &, struct objfile *);
 
-static struct partial_symtab *find_corresponding_bincl_psymtab (const char *,
+static legacy_psymtab *find_corresponding_bincl_psymtab (const char *,
 								int);
 
 static const char *dbx_next_symbol_text (struct objfile *);
@@ -297,7 +297,7 @@ static void add_old_header_file (const c
 
 static void add_this_object_header_file (int);
 
-static struct partial_symtab *start_psymtab (struct objfile *, const char *,
+static legacy_psymtab *start_psymtab (struct objfile *, const char *,
 					     CORE_ADDR, int);
 
 /* Free up old header file tables.  */
@@ -857,7 +857,7 @@ dbx_next_symbol_text (struct objfile *ob
    bincl in the list.  Return the partial symtab associated
    with that header_file_location.  */
 
-static struct partial_symtab *
+static legacy_psymtab *
 find_corresponding_bincl_psymtab (const char *name, int instance)
 {
   for (const header_file_location &bincl : *bincl_list)
@@ -866,7 +866,7 @@ find_corresponding_bincl_psymtab (const
       return bincl.pst;
 
   repeated_header_complaint (name, symnum);
-  return (struct partial_symtab *) 0;
+  return (legacy_psymtab *) 0;
 }
 
 /* Set namestring based on nlist.  If the string table index is invalid, 
@@ -951,7 +951,7 @@ function_outside_compilation_unit_compla
 static void
 read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   struct external_nlist *bufp = 0;	/* =0 avoids gcc -Wall glitch.  */
   struct internal_nlist nlist;
   CORE_ADDR text_addr;
@@ -968,7 +968,7 @@ read_dbx_symtab (minimal_symbol_reader &
   int data_sect_index;
 
   /* Current partial symtab.  */
-  struct partial_symtab *pst;
+  legacy_psymtab *pst;
 
   /* List of current psymtab's include files.  */
   const char **psymtab_include_list;
@@ -976,7 +976,7 @@ read_dbx_symtab (minimal_symbol_reader &
   int includes_used;
 
   /* Index within current psymtab dependency list.  */
-  struct partial_symtab **dependency_list;
+  legacy_psymtab **dependency_list;
   int dependencies_used, dependencies_allocated;
 
   text_addr = DBX_TEXT_ADDR (objfile);
@@ -989,7 +989,7 @@ read_dbx_symtab (minimal_symbol_reader &
 
   stringtab_global = DBX_STRINGTAB (objfile);
 
-  pst = (struct partial_symtab *) 0;
+  pst = (legacy_psymtab *) 0;
 
   includes_allocated = 30;
   includes_used = 0;
@@ -999,8 +999,8 @@ read_dbx_symtab (minimal_symbol_reader &
   dependencies_allocated = 30;
   dependencies_used = 0;
   dependency_list =
-    (struct partial_symtab **) alloca (dependencies_allocated *
-				       sizeof (struct partial_symtab *));
+    (legacy_psymtab **) alloca (dependencies_allocated *
+				sizeof (legacy_psymtab *));
 
   /* Init bincl list */
   std::vector<struct header_file_location> bincl_storage;
@@ -1046,9 +1046,7 @@ read_dbx_symtab (minimal_symbol_reader &
 
   /* If data_sect_index is still -1, that's okay.  It's perfectly fine
      for the file to have no .data, no .bss, and no .text at all, if
-     it also has no global or static variables.  If it does, we will
-     get an internal error from an ANOFFSET macro below when we try to
-     use data_sect_index.  */
+     it also has no global or static variables.  */
 
   for (symnum = 0; symnum < DBX_SYMCOUNT (objfile); symnum++)
     {
@@ -1138,7 +1136,7 @@ read_dbx_symtab (minimal_symbol_reader &
 				   ? nlist.n_value : pst->raw_text_high (),
 				   dependency_list, dependencies_used,
 				   textlow_not_set);
-		  pst = (struct partial_symtab *) 0;
+		  pst = (legacy_psymtab *) 0;
 		  includes_used = 0;
 		  dependencies_used = 0;
 		  has_line_numbers = 0;
@@ -1253,7 +1251,7 @@ read_dbx_symtab (minimal_symbol_reader &
 				      ? valu : pst->raw_text_high ()),
 				     dependency_list, dependencies_used,
 				     prev_textlow_not_set);
-		    pst = (struct partial_symtab *) 0;
+		    pst = (legacy_psymtab *) 0;
 		    includes_used = 0;
 		    dependencies_used = 0;
 		    has_line_numbers = 0;
@@ -1436,12 +1434,13 @@ read_dbx_symtab (minimal_symbol_reader &
  	  if (psymtab_language == language_cplus)
  	    {
 	      std::string name (namestring, p - namestring);
-	      std::string new_name = cp_canonicalize_string (name.c_str ());
-	      if (!new_name.empty ())
+	      gdb::unique_xmalloc_ptr<char> new_name
+		= cp_canonicalize_string (name.c_str ());
+	      if (new_name != nullptr)
 		{
-		  sym_len = new_name.length ();
+		  sym_len = strlen (new_name.get ());
 		  sym_name = obstack_strdup (&objfile->objfile_obstack,
-					     new_name);
+					     new_name.get ());
 		}
 	    }
 
@@ -1461,9 +1460,6 @@ read_dbx_symtab (minimal_symbol_reader &
 	  switch (p[1])
 	    {
 	    case 'S':
-	      if (gdbarch_static_transform_name_p (gdbarch))
-		gdbarch_static_transform_name (gdbarch, namestring);
-
 	      add_psymbol_to_list (gdb::string_view (sym_name, sym_len), true,
 				   VAR_DOMAIN, LOC_STATIC,
 				   data_sect_index,
@@ -1764,7 +1760,7 @@ read_dbx_symtab (minimal_symbol_reader &
 	  /* Find the corresponding bincl and mark that psymtab on the
 	     psymtab dependency list.  */
 	  {
-	    struct partial_symtab *needed_pst =
+	    legacy_psymtab *needed_pst =
 	      find_corresponding_bincl_psymtab (namestring, nlist.n_value);
 
 	    /* If this include file was defined earlier in this file,
@@ -1791,15 +1787,15 @@ read_dbx_symtab (minimal_symbol_reader &
 		dependency_list[dependencies_used++] = needed_pst;
 		if (dependencies_used >= dependencies_allocated)
 		  {
-		    struct partial_symtab **orig = dependency_list;
+		    legacy_psymtab **orig = dependency_list;
 
 		    dependency_list =
-		      (struct partial_symtab **)
+		      (legacy_psymtab **)
 		      alloca ((dependencies_allocated *= 2)
-			      * sizeof (struct partial_symtab *));
+			      * sizeof (legacy_psymtab *));
 		    memcpy (dependency_list, orig,
 			    (dependencies_used
-			     * sizeof (struct partial_symtab *)));
+			     * sizeof (legacy_psymtab *)));
 #ifdef DEBUG_INFO
 		    fprintf_unfiltered (gdb_stderr,
 					"Had to reallocate "
@@ -1825,7 +1821,7 @@ read_dbx_symtab (minimal_symbol_reader &
 			       symnum * symbol_size,
 			       (CORE_ADDR) 0, dependency_list,
 			       dependencies_used, textlow_not_set);
-	      pst = (struct partial_symtab *) 0;
+	      pst = (legacy_psymtab *) 0;
 	      includes_used = 0;
 	      dependencies_used = 0;
 	      has_line_numbers = 0;
@@ -1901,17 +1897,17 @@ read_dbx_symtab (minimal_symbol_reader &
    is the address relative to which its symbols are (incremental) or 0
    (normal).  */
 
-static struct partial_symtab *
+static legacy_psymtab *
 start_psymtab (struct objfile *objfile, const char *filename, CORE_ADDR textlow,
 	       int ldsymoff)
 {
-  struct partial_symtab *result =
-    start_psymtab_common (objfile, filename, textlow);
+  legacy_psymtab *result = new legacy_psymtab (filename, objfile, textlow);
 
   result->read_symtab_private =
     XOBNEW (&objfile->objfile_obstack, struct symloc);
   LDSYMOFF (result) = ldsymoff;
-  result->read_symtab = dbx_read_symtab;
+  result->legacy_read_symtab = dbx_read_symtab;
+  result->legacy_expand_psymtab = dbx_expand_psymtab;
   SYMBOL_SIZE (result) = symbol_size;
   SYMBOL_OFFSET (result) = symbol_table_offset;
   STRING_OFFSET (result) = string_table_offset;
@@ -1929,16 +1925,16 @@ start_psymtab (struct objfile *objfile,
 
    FIXME:  List variables and peculiarities of same.  */
 
-struct partial_symtab *
-dbx_end_psymtab (struct objfile *objfile, struct partial_symtab *pst,
+legacy_psymtab *
+dbx_end_psymtab (struct objfile *objfile, legacy_psymtab *pst,
 		 const char **include_list, int num_includes,
 		 int capping_symbol_offset, CORE_ADDR capping_text,
-		 struct partial_symtab **dependency_list,
+		 legacy_psymtab **dependency_list,
 		 int number_dependencies,
 		 int textlow_not_set)
 {
   int i;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
 
   if (capping_symbol_offset != -1)
     LDSYMLEN (pst) = capping_symbol_offset - LDSYMOFF (pst);
@@ -2019,15 +2015,15 @@ dbx_end_psymtab (struct objfile *objfile
       pst->dependencies
 	= objfile->partial_symtabs->allocate_dependencies (number_dependencies);
       memcpy (pst->dependencies, dependency_list,
-	      number_dependencies * sizeof (struct partial_symtab *));
+	      number_dependencies * sizeof (legacy_psymtab *));
     }
   else
     pst->dependencies = 0;
 
   for (i = 0; i < num_includes; i++)
     {
-      struct partial_symtab *subpst =
-	allocate_psymtab (include_list[i], objfile);
+      legacy_psymtab *subpst =
+	new legacy_psymtab (include_list[i], objfile);
 
       subpst->read_symtab_private =
 	XOBNEW (&objfile->objfile_obstack, struct symloc);
@@ -2041,7 +2037,8 @@ dbx_end_psymtab (struct objfile *objfile
       subpst->dependencies[0] = pst;
       subpst->number_of_dependencies = 1;
 
-      subpst->read_symtab = pst->read_symtab;
+      subpst->legacy_read_symtab = pst->legacy_read_symtab;
+      subpst->legacy_expand_psymtab = pst->legacy_expand_psymtab;
     }
 
   if (num_includes == 0
@@ -2050,15 +2047,14 @@ dbx_end_psymtab (struct objfile *objfile
       && pst->n_static_syms == 0
       && has_line_numbers == 0)
     {
-      /* Throw away this psymtab, it's empty.  We can't deallocate it, since
-         it is on the obstack, but we can forget to chain it on the list.  */
+      /* Throw away this psymtab, it's empty.  */
       /* Empty psymtabs happen as a result of header files which don't have
          any symbols in them.  There can be a lot of them.  But this check
          is wrong, in that a psymtab with N_SLINE entries but nothing else
          is not empty, but we don't realize that.  Fixing that without slowing
          things down might be tricky.  */
 
-      discard_psymtab (objfile, pst);
+      objfile->partial_symtabs->discard_psymtab (pst);
 
       /* Indicate that psymtab was thrown away.  */
       pst = NULL;
@@ -2067,35 +2063,12 @@ dbx_end_psymtab (struct objfile *objfile
 }
 
 static void
-dbx_psymtab_to_symtab_1 (struct objfile *objfile, struct partial_symtab *pst)
+dbx_expand_psymtab (legacy_psymtab *pst, struct objfile *objfile)
 {
-  int i;
-
-  if (pst->readin)
-    {
-      fprintf_unfiltered (gdb_stderr, "Psymtab for %s already read in.  "
-			  "Shouldn't happen.\n",
-			  pst->filename);
-      return;
-    }
+  gdb_assert (!pst->readin);
 
   /* Read in all partial symtabs on which this one is dependent.  */
-  for (i = 0; i < pst->number_of_dependencies; i++)
-    if (!pst->dependencies[i]->readin)
-      {
-	/* Inform about additional files that need to be read in.  */
-	if (info_verbose)
-	  {
-	    fputs_filtered (" ", gdb_stdout);
-	    wrap_here ("");
-	    fputs_filtered ("and ", gdb_stdout);
-	    wrap_here ("");
-	    printf_filtered ("%s...", pst->dependencies[i]->filename);
-	    wrap_here ("");	/* Flush output.  */
-	    gdb_flush (gdb_stdout);
-	  }
-	dbx_psymtab_to_symtab_1 (objfile, pst->dependencies[i]);
-      }
+  pst->expand_dependencies (objfile);
 
   if (LDSYMLEN (pst))		/* Otherwise it's a dummy.  */
     {
@@ -2110,33 +2083,19 @@ dbx_psymtab_to_symtab_1 (struct objfile
       read_ofile_symtab (objfile, pst);
     }
 
-  pst->readin = 1;
+  pst->readin = true;
 }
 
 /* Read in all of the symbols for a given psymtab for real.
    Be verbose about it if the user wants that.  SELF is not NULL.  */
 
 static void
-dbx_read_symtab (struct partial_symtab *self, struct objfile *objfile)
+dbx_read_symtab (legacy_psymtab *self, struct objfile *objfile)
 {
-  if (self->readin)
-    {
-      fprintf_unfiltered (gdb_stderr, "Psymtab for %s already read in.  "
-			  "Shouldn't happen.\n",
-			  self->filename);
-      return;
-    }
+  gdb_assert (!self->readin);
 
   if (LDSYMLEN (self) || self->number_of_dependencies)
     {
-      /* Print the message now, before reading the string table,
-         to avoid disconcerting pauses.  */
-      if (info_verbose)
-	{
-	  printf_filtered ("Reading in symbols for %s...", self->filename);
-	  gdb_flush (gdb_stdout);
-	}
-
       next_symbol_text_func = dbx_next_symbol_text;
 
       {
@@ -2151,23 +2110,19 @@ dbx_read_symtab (struct partial_symtab *
 	    data_holder.reset (stabs_data);
 	  }
 
-	dbx_psymtab_to_symtab_1 (objfile, self);
+	self->expand_psymtab (objfile);
       }
 
       /* Match with global symbols.  This only needs to be done once,
          after all of the symtabs and dependencies have been read in.   */
       scan_file_globals (objfile);
-
-      /* Finish up the debug error message.  */
-      if (info_verbose)
-	printf_filtered ("done.\n");
     }
 }
 
 /* Read in a defined section of a specific object file's symbols.  */
 
 static void
-read_ofile_symtab (struct objfile *objfile, struct partial_symtab *pst)
+read_ofile_symtab (struct objfile *objfile, legacy_psymtab *pst)
 {
   const char *namestring;
   struct external_nlist *bufp;
@@ -2179,13 +2134,12 @@ read_ofile_symtab (struct objfile *objfi
   int sym_size;			/* Size of symbols to read */
   CORE_ADDR text_offset;	/* Start of text segment for symbols */
   int text_size;		/* Size of text segment for symbols */
-  struct section_offsets *section_offsets;
 
   sym_offset = LDSYMOFF (pst);
   sym_size = LDSYMLEN (pst);
   text_offset = pst->text_low (objfile);
   text_size = pst->text_high (objfile) - pst->text_low (objfile);
-  section_offsets = objfile->section_offsets;
+  const section_offsets &section_offsets = objfile->section_offsets;
 
   dbxread_objfile = objfile;
 
@@ -2378,10 +2332,10 @@ cp_set_block_scope (const struct symbol
 
 void
 process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
-		    const struct section_offsets *section_offsets,
+		    const section_offsets &section_offsets,
 		    struct objfile *objfile, enum language language)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   struct context_stack *newobj;
   struct context_stack cstk;
   /* This remembers the address of the start of a function.  It is
@@ -2456,7 +2410,7 @@ process_one_symbol (int type, int desc,
 				cstk.start_addr, cstk.start_addr + valu);
 
 	  /* For C++, set the block's scope.  */
-	  if (SYMBOL_LANGUAGE (cstk.name) == language_cplus)
+	  if (cstk.name->language () == language_cplus)
 	    cp_set_block_scope (cstk.name, block, &objfile->objfile_obstack);
 
 	  /* May be switching to an assembler file which may not be using
@@ -2469,7 +2423,7 @@ process_one_symbol (int type, int desc,
       sline_found_in_function = 0;
 
       /* Relocate for dynamic loading.  */
-      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
+      valu += section_offsets[SECT_OFF_TEXT (objfile)];
       valu = gdbarch_addr_bits_remove (gdbarch, valu);
       last_function_start = valu;
 
@@ -2557,7 +2511,7 @@ process_one_symbol (int type, int desc,
     case N_FN_SEQ:
       /* This kind of symbol indicates the start of an object file.
          Relocate for dynamic loading.  */
-      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
+      valu += section_offsets[SECT_OFF_TEXT (objfile)];
       break;
 
     case N_SO:
@@ -2565,7 +2519,7 @@ process_one_symbol (int type, int desc,
          source file.  Finish the symbol table of the previous source
          file (if any) and start accumulating a new symbol table.
          Relocate for dynamic loading.  */
-      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
+      valu += section_offsets[SECT_OFF_TEXT (objfile)];
 
       n_opt_found = 0;
 
@@ -2601,7 +2555,7 @@ process_one_symbol (int type, int desc,
          sub-source-file, one whose contents were copied or included
          in the compilation of the main source file (whose name was
          given in the N_SO symbol).  Relocate for dynamic loading.  */
-      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
+      valu += section_offsets[SECT_OFF_TEXT (objfile)];
       start_subfile (name);
       break;
 
@@ -2701,7 +2655,7 @@ process_one_symbol (int type, int desc,
 		   symbol_file_add as addr (this is known to affect
 		   SunOS 4, and I suspect ELF too).  Since there is no
 		   Ttext.text symbol, we can get addr from the text offset.  */
-		valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
+		valu += section_offsets[SECT_OFF_TEXT (objfile)];
 		goto define_a_symbol;
 	      }
 	  }
@@ -2723,22 +2677,22 @@ process_one_symbol (int type, int desc,
 
     case_N_STSYM:		/* Static symbol in data segment.  */
     case N_DSLINE:		/* Source line number, data segment.  */
-      valu += ANOFFSET (section_offsets, SECT_OFF_DATA (objfile));
+      valu += section_offsets[SECT_OFF_DATA (objfile)];
       goto define_a_symbol;
 
     case_N_LCSYM:		/* Static symbol in BSS segment.  */
     case N_BSLINE:		/* Source line number, BSS segment.  */
       /* N_BROWS: overlaps with N_BSLINE.  */
-      valu += ANOFFSET (section_offsets, SECT_OFF_BSS (objfile));
+      valu += section_offsets[SECT_OFF_BSS (objfile)];
       goto define_a_symbol;
 
     case_N_ROSYM:		/* Static symbol in read-only data segment.  */
-      valu += ANOFFSET (section_offsets, SECT_OFF_RODATA (objfile));
+      valu += section_offsets[SECT_OFF_RODATA (objfile)];
       goto define_a_symbol;
 
     case N_ENTRY:		/* Alternate entry point.  */
       /* Relocate for dynamic loading.  */
-      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
+      valu += section_offsets[SECT_OFF_TEXT (objfile)];
       goto define_a_symbol;
 
       /* The following symbol types we don't know how to process.
@@ -2789,8 +2743,7 @@ process_one_symbol (int type, int desc,
 	      /* Deal with the SunPRO 3.0 compiler which omits the
 	         address from N_FUN symbols.  */
 	      if (type == N_FUN
-		  && valu == ANOFFSET (section_offsets,
-				       SECT_OFF_TEXT (objfile))
+		  && valu == section_offsets[SECT_OFF_TEXT (objfile)]
 		  && gdbarch_sofun_address_maybe_missing (gdbarch))
 		{
 		  struct bound_minimal_symbol minsym
@@ -2823,7 +2776,7 @@ process_one_symbol (int type, int desc,
 					cstk.start_addr, valu);
 
 		  /* For C++, set the block's scope.  */
-		  if (SYMBOL_LANGUAGE (cstk.name) == language_cplus)
+		  if (cstk.name->language () == language_cplus)
 		    cp_set_block_scope (cstk.name, block,
 					&objfile->objfile_obstack);
 		}
@@ -3184,8 +3137,9 @@ static const struct sym_fns aout_sym_fns
   &psym_functions
 };
 
+void _initialize_dbxread ();
 void
-_initialize_dbxread (void)
+_initialize_dbxread ()
 {
   add_symtab_fns (bfd_target_aout_flavour, &aout_sym_fns);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dcache.c ./gdb/dcache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dcache.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dcache.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Caching code for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -670,22 +670,9 @@ set_dcache_line_size (const char *args,
   target_dcache_invalidate ();
 }
 
-static void
-set_dcache_command (const char *arg, int from_tty)
-{
-  printf_unfiltered (
-     "\"set dcache\" must be followed by the name of a subcommand.\n");
-  help_list (dcache_set_list, "set dcache ", all_commands, gdb_stdout);
-}
-
-static void
-show_dcache_command (const char *args, int from_tty)
-{
-  cmd_show_list (dcache_show_list, from_tty, "");
-}
-
+void _initialize_dcache ();
 void
-_initialize_dcache (void)
+_initialize_dcache ()
 {
   add_setshow_boolean_cmd ("remotecache", class_support,
 			   &dcache_enabled_p, _("\
@@ -707,12 +694,14 @@ With no arguments, this command prints t
 summary of each line in the cache.  With an argument, dump\"\n\
 the contents of the given line."));
 
-  add_prefix_cmd ("dcache", class_obscure, set_dcache_command, _("\
+  add_basic_prefix_cmd ("dcache", class_obscure, _("\
 Use this command to set number of lines in dcache and line-size."),
-		  &dcache_set_list, "set dcache ", /*allow_unknown*/0, &setlist);
-  add_prefix_cmd ("dcache", class_obscure, show_dcache_command, _("\
+			&dcache_set_list, "set dcache ", /*allow_unknown*/0,
+			&setlist);
+  add_show_prefix_cmd ("dcache", class_obscure, _("\
 Show dcachesettings."),
-		  &dcache_show_list, "show dcache ", /*allow_unknown*/0, &showlist);
+		       &dcache_show_list, "show dcache ", /*allow_unknown*/0,
+		       &showlist);
 
   add_setshow_zuinteger_cmd ("line-size", class_obscure,
 			     &dcache_line_size, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dcache.h ./gdb/dcache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dcache.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dcache.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Declarations for caching.  Typically used by remote back ends for
    caching remote memory.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/debug.c ./gdb/debug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/debug.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/debug.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Debug printing functions.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -19,6 +19,8 @@
 
 #include "defs.h"
 
+#include "debug.h"
+
 /* See gdbsupport/common-debug.h.  */
 
 void
@@ -26,3 +28,14 @@ debug_vprintf (const char *fmt, va_list
 {
   vfprintf_unfiltered (gdb_stdlog, fmt, ap);
 }
+
+/* See debug.h.  */
+
+void
+debug_prefixed_vprintf (const char *module, const char *func, const char *format,
+			va_list args)
+{
+  debug_printf ("[%s] %s: ", module, func);
+  debug_vprintf (format, args);
+  debug_printf ("\n");
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/debug.h ./gdb/debug.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/debug.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/debug.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,32 @@
+/* Helpers to format and print debug statements
+
+   Copyright (C) 2020-2021 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 DEBUG_H
+#define DEBUG_H
+
+/* Print a debug statement prefixed with the module and function name, and
+   with a newline at the end.  */
+
+void ATTRIBUTE_PRINTF (3, 0)
+debug_prefixed_vprintf (const char *module, const char *func, const char *format,
+			va_list args);
+
+#endif /* DEBUG_H */
+
+
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/debuginfod-support.c ./gdb/debuginfod-support.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/debuginfod-support.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/debuginfod-support.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,161 @@
+/* debuginfod utilities for GDB.
+   Copyright (C) 2020-2021 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 <errno.h>
+#include "cli/cli-style.h"
+#include "gdbsupport/scoped_fd.h"
+#include "debuginfod-support.h"
+
+#ifndef HAVE_LIBDEBUGINFOD
+scoped_fd
+debuginfod_source_query (const unsigned char *build_id,
+			 int build_id_len,
+			 const char *srcpath,
+			 gdb::unique_xmalloc_ptr<char> *destname)
+{
+  return scoped_fd (-ENOSYS);
+}
+
+scoped_fd
+debuginfod_debuginfo_query (const unsigned char *build_id,
+			    int build_id_len,
+			    const char *filename,
+			    gdb::unique_xmalloc_ptr<char> *destname)
+{
+  return scoped_fd (-ENOSYS);
+}
+#else
+#include <elfutils/debuginfod.h>
+
+struct user_data
+{
+  user_data (const char *desc, const char *fname)
+    : desc (desc), fname (fname), has_printed (false)
+  { }
+
+  const char * const desc;
+  const char * const fname;
+  bool has_printed;
+};
+
+static int
+progressfn (debuginfod_client *c, long cur, long total)
+{
+  user_data *data = static_cast<user_data *> (debuginfod_get_user_data (c));
+
+  if (check_quit_flag ())
+    {
+      printf_filtered ("Cancelling download of %s %ps...\n",
+		       data->desc,
+		       styled_string (file_name_style.style (), data->fname));
+      return 1;
+    }
+
+  if (!data->has_printed && total != 0)
+    {
+      /* Print this message only once.  */
+      data->has_printed = true;
+      printf_filtered ("Downloading %s %ps...\n",
+		       data->desc,
+		       styled_string (file_name_style.style (), data->fname));
+    }
+
+  return 0;
+}
+
+static debuginfod_client *
+debuginfod_init ()
+{
+  debuginfod_client *c = debuginfod_begin ();
+
+  if (c != nullptr)
+    debuginfod_set_progressfn (c, progressfn);
+
+  return c;
+}
+
+/* See debuginfod-support.h  */
+
+scoped_fd
+debuginfod_source_query (const unsigned char *build_id,
+			 int build_id_len,
+			 const char *srcpath,
+			 gdb::unique_xmalloc_ptr<char> *destname)
+{
+  if (getenv (DEBUGINFOD_URLS_ENV_VAR) == NULL)
+    return scoped_fd (-ENOSYS);
+
+  debuginfod_client *c = debuginfod_init ();
+
+  if (c == nullptr)
+    return scoped_fd (-ENOMEM);
+
+  user_data data ("source file", srcpath);
+
+  debuginfod_set_user_data (c, &data);
+  scoped_fd fd (debuginfod_find_source (c,
+					build_id,
+					build_id_len,
+					srcpath,
+					nullptr));
+
+  /* TODO: Add 'set debug debuginfod' command to control when error messages are shown.  */
+  if (fd.get () < 0 && fd.get () != -ENOENT)
+    printf_filtered (_("Download failed: %s.  Continuing without source file %ps.\n"),
+		     safe_strerror (-fd.get ()),
+		     styled_string (file_name_style.style (),  srcpath));
+  else
+    destname->reset (xstrdup (srcpath));
+
+  debuginfod_end (c);
+  return fd;
+}
+
+/* See debuginfod-support.h  */
+
+scoped_fd
+debuginfod_debuginfo_query (const unsigned char *build_id,
+			    int build_id_len,
+			    const char *filename,
+			    gdb::unique_xmalloc_ptr<char> *destname)
+{
+  if (getenv (DEBUGINFOD_URLS_ENV_VAR) == NULL)
+    return scoped_fd (-ENOSYS);
+
+  debuginfod_client *c = debuginfod_init ();
+
+  if (c == nullptr)
+    return scoped_fd (-ENOMEM);
+
+  char *dname = nullptr;
+  user_data data ("separate debug info for", filename);
+
+  debuginfod_set_user_data (c, &data);
+  scoped_fd fd (debuginfod_find_debuginfo (c, build_id, build_id_len, &dname));
+
+  if (fd.get () < 0 && fd.get () != -ENOENT)
+    printf_filtered (_("Download failed: %s.  Continuing without debug info for %ps.\n"),
+		     safe_strerror (-fd.get ()),
+		     styled_string (file_name_style.style (),  filename));
+
+  destname->reset (dname);
+  debuginfod_end (c);
+  return fd;
+}
+#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/debuginfod-support.h ./gdb/debuginfod-support.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/debuginfod-support.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/debuginfod-support.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,62 @@
+/* debuginfod utilities for GDB.
+   Copyright (C) 2020-2021 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 DEBUGINFOD_SUPPORT_H
+#define DEBUGINFOD_SUPPORT_H
+
+/* Query debuginfod servers for a source file associated with an
+   executable with BUILD_ID.  BUILD_ID can be given as a binary blob or
+   a null-terminated string.  If given as a binary blob, BUILD_ID_LEN
+   should be the number of bytes.  If given as a null-terminated string,
+   BUILD_ID_LEN should be 0.
+
+   SRC_PATH should be the source file's absolute path that includes the
+   compilation directory of the CU associated with the source file.
+   For example if a CU's compilation directory is `/my/build` and the
+   source file path is `/my/source/foo.c`, then SRC_PATH should be
+   `/my/build/../source/foo.c`.
+
+   If the file is successfully retrieved, its path on the local machine
+   is stored in DESTNAME.  If GDB is not built with debuginfod, this
+   function returns -ENOSYS.  */
+
+extern scoped_fd
+debuginfod_source_query (const unsigned char *build_id,
+			 int build_id_len,
+			 const char *src_path,
+			 gdb::unique_xmalloc_ptr<char> *destname);
+
+/* Query debuginfod servers for a debug info file with BUILD_ID.
+   BUILD_ID can be given as a binary blob or a null-terminated string.
+   If given as a binary blob, BUILD_ID_LEN should be the number of bytes.
+   If given as a null-terminated string, BUILD_ID_LEN should be 0.
+
+   FILENAME should be the name or path of the main binary associated with
+   the separate debug info.  It is used for printing messages to the user.
+
+   If the file is successfully retrieved, its path on the local machine
+   is stored in DESTNAME.  If GDB is not built with debuginfod, this
+   function returns -ENOSYS.  */
+
+extern scoped_fd
+debuginfod_debuginfo_query (const unsigned char *build_id,
+			    int build_id_len,
+			    const char *filename,
+			    gdb::unique_xmalloc_ptr<char> *destname);
+
+#endif /* DEBUGINFOD_SUPPORT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/defs.h ./gdb/defs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/defs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/defs.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* *INDENT-OFF* */ /* ATTRIBUTE_PRINTF confuses indent, avoid running it
 		      for now.  */
 /* Basic, host-specific, and target-specific definitions for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,6 +27,15 @@
 
 #include "gdbsupport/common-defs.h"
 
+#undef PACKAGE
+#undef PACKAGE_NAME
+#undef PACKAGE_VERSION
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+
+#include <config.h>
+#include "bfd.h"
+
 #include <sys/types.h>
 #include <limits.h>
 
@@ -469,37 +478,6 @@ enum val_prettyformat
 
 extern int longest_to_int (LONGEST);
 
-/* * List of known OS ABIs.  If you change this, make sure to update the
-   table in osabi.c.  */
-enum gdb_osabi
-{
-  GDB_OSABI_UNKNOWN = 0,	/* keep this zero */
-  GDB_OSABI_NONE,
-
-  GDB_OSABI_SVR4,
-  GDB_OSABI_HURD,
-  GDB_OSABI_SOLARIS,
-  GDB_OSABI_LINUX,
-  GDB_OSABI_FREEBSD,
-  GDB_OSABI_NETBSD,
-  GDB_OSABI_OPENBSD,
-  GDB_OSABI_WINCE,
-  GDB_OSABI_GO32,
-  GDB_OSABI_QNXNTO,
-  GDB_OSABI_CYGWIN,
-  GDB_OSABI_AIX,
-  GDB_OSABI_DICOS,
-  GDB_OSABI_DARWIN,
-  GDB_OSABI_SYMBIAN,
-  GDB_OSABI_OPENVMS,
-  GDB_OSABI_LYNXOS178,
-  GDB_OSABI_NEWLIB,
-  GDB_OSABI_SDE,
-  GDB_OSABI_PIKEOS,
-
-  GDB_OSABI_INVALID		/* keep this last */
-};
-
 /* Enumerate the requirements a symbol has in order to be evaluated.
    These are listed in order of "strength" -- a later entry subsumes
    earlier ones.  This fine-grained distinction is important because
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-exp.c ./gdb/d-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-exp.c	2020-03-07 02:11:12.000000000 +0000
+++ ./gdb/d-exp.c	2021-05-21 02:00:05.000000000 +0000
@@ -1,21 +1,20 @@
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* Bison implementation for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   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/>.  */
 
@@ -28,13 +27,17 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -46,7 +49,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,14 +63,10 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
-
 
 
-/* Copy the first part of user declarations.  */
 
-/* Line 189 of yacc.c  */
+/* First part of user prologue.  */
 #line 39 "d-exp.y"
 
 
@@ -111,85 +110,101 @@ static void yyerror (const char *);
 static int type_aggregate_p (struct type *);
 
 
+#line 114 "d-exp.c.tmp"
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTRPTR nullptr
+#   else
+#    define YY_NULLPTRPTR 0
+#   endif
+#  else
+#   define YY_NULLPTRPTR ((void*)0)
+#  endif
+# endif
 
-/* Line 189 of yacc.c  */
-#line 117 "d-exp.c.tmp"
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+#if YYDEBUG
+extern int yydebug;
 #endif
 
-
-/* Tokens.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     IDENTIFIER = 258,
-     UNKNOWN_NAME = 259,
-     TYPENAME = 260,
-     COMPLETE = 261,
-     NAME_OR_INT = 262,
-     INTEGER_LITERAL = 263,
-     FLOAT_LITERAL = 264,
-     CHARACTER_LITERAL = 265,
-     STRING_LITERAL = 266,
-     ENTRY = 267,
-     ERROR = 268,
-     TRUE_KEYWORD = 269,
-     FALSE_KEYWORD = 270,
-     NULL_KEYWORD = 271,
-     SUPER_KEYWORD = 272,
-     CAST_KEYWORD = 273,
-     SIZEOF_KEYWORD = 274,
-     TYPEOF_KEYWORD = 275,
-     TYPEID_KEYWORD = 276,
-     INIT_KEYWORD = 277,
-     IMMUTABLE_KEYWORD = 278,
-     CONST_KEYWORD = 279,
-     SHARED_KEYWORD = 280,
-     STRUCT_KEYWORD = 281,
-     UNION_KEYWORD = 282,
-     CLASS_KEYWORD = 283,
-     INTERFACE_KEYWORD = 284,
-     ENUM_KEYWORD = 285,
-     TEMPLATE_KEYWORD = 286,
-     DELEGATE_KEYWORD = 287,
-     FUNCTION_KEYWORD = 288,
-     DOLLAR_VARIABLE = 289,
-     ASSIGN_MODIFY = 290,
-     OROR = 291,
-     ANDAND = 292,
-     GEQ = 293,
-     LEQ = 294,
-     NOTEQUAL = 295,
-     EQUAL = 296,
-     RSH = 297,
-     LSH = 298,
-     HATHAT = 299,
-     NOTIDENTITY = 300,
-     IDENTITY = 301,
-     DECREMENT = 302,
-     INCREMENT = 303,
-     DOTDOT = 304
-   };
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    IDENTIFIER = 258,              /* IDENTIFIER  */
+    UNKNOWN_NAME = 259,            /* UNKNOWN_NAME  */
+    TYPENAME = 260,                /* TYPENAME  */
+    COMPLETE = 261,                /* COMPLETE  */
+    NAME_OR_INT = 262,             /* NAME_OR_INT  */
+    INTEGER_LITERAL = 263,         /* INTEGER_LITERAL  */
+    FLOAT_LITERAL = 264,           /* FLOAT_LITERAL  */
+    CHARACTER_LITERAL = 265,       /* CHARACTER_LITERAL  */
+    STRING_LITERAL = 266,          /* STRING_LITERAL  */
+    ENTRY = 267,                   /* ENTRY  */
+    ERROR = 268,                   /* ERROR  */
+    TRUE_KEYWORD = 269,            /* TRUE_KEYWORD  */
+    FALSE_KEYWORD = 270,           /* FALSE_KEYWORD  */
+    NULL_KEYWORD = 271,            /* NULL_KEYWORD  */
+    SUPER_KEYWORD = 272,           /* SUPER_KEYWORD  */
+    CAST_KEYWORD = 273,            /* CAST_KEYWORD  */
+    SIZEOF_KEYWORD = 274,          /* SIZEOF_KEYWORD  */
+    TYPEOF_KEYWORD = 275,          /* TYPEOF_KEYWORD  */
+    TYPEID_KEYWORD = 276,          /* TYPEID_KEYWORD  */
+    INIT_KEYWORD = 277,            /* INIT_KEYWORD  */
+    IMMUTABLE_KEYWORD = 278,       /* IMMUTABLE_KEYWORD  */
+    CONST_KEYWORD = 279,           /* CONST_KEYWORD  */
+    SHARED_KEYWORD = 280,          /* SHARED_KEYWORD  */
+    STRUCT_KEYWORD = 281,          /* STRUCT_KEYWORD  */
+    UNION_KEYWORD = 282,           /* UNION_KEYWORD  */
+    CLASS_KEYWORD = 283,           /* CLASS_KEYWORD  */
+    INTERFACE_KEYWORD = 284,       /* INTERFACE_KEYWORD  */
+    ENUM_KEYWORD = 285,            /* ENUM_KEYWORD  */
+    TEMPLATE_KEYWORD = 286,        /* TEMPLATE_KEYWORD  */
+    DELEGATE_KEYWORD = 287,        /* DELEGATE_KEYWORD  */
+    FUNCTION_KEYWORD = 288,        /* FUNCTION_KEYWORD  */
+    DOLLAR_VARIABLE = 289,         /* DOLLAR_VARIABLE  */
+    ASSIGN_MODIFY = 290,           /* ASSIGN_MODIFY  */
+    OROR = 291,                    /* OROR  */
+    ANDAND = 292,                  /* ANDAND  */
+    EQUAL = 293,                   /* EQUAL  */
+    NOTEQUAL = 294,                /* NOTEQUAL  */
+    LEQ = 295,                     /* LEQ  */
+    GEQ = 296,                     /* GEQ  */
+    LSH = 297,                     /* LSH  */
+    RSH = 298,                     /* RSH  */
+    HATHAT = 299,                  /* HATHAT  */
+    IDENTITY = 300,                /* IDENTITY  */
+    NOTIDENTITY = 301,             /* NOTIDENTITY  */
+    INCREMENT = 302,               /* INCREMENT  */
+    DECREMENT = 303,               /* DECREMENT  */
+    DOTDOT = 304                   /* DOTDOT  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
 #endif
-/* Tokens.  */
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define IDENTIFIER 258
 #define UNKNOWN_NAME 259
 #define TYPENAME 260
@@ -225,27 +240,23 @@ static int type_aggregate_p (struct type
 #define ASSIGN_MODIFY 290
 #define OROR 291
 #define ANDAND 292
-#define GEQ 293
-#define LEQ 294
-#define NOTEQUAL 295
-#define EQUAL 296
-#define RSH 297
-#define LSH 298
+#define EQUAL 293
+#define NOTEQUAL 294
+#define LEQ 295
+#define GEQ 296
+#define LSH 297
+#define RSH 298
 #define HATHAT 299
-#define NOTIDENTITY 300
-#define IDENTITY 301
-#define DECREMENT 302
-#define INCREMENT 303
+#define IDENTITY 300
+#define NOTIDENTITY 301
+#define INCREMENT 302
+#define DECREMENT 303
 #define DOTDOT 304
 
-
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
 #line 87 "d-exp.y"
 
     struct {
@@ -268,58 +279,217 @@ typedef union YYSTYPE
     struct stoken_vector svec;
   
 
+#line 283 "d-exp.c.tmp"
 
-/* Line 214 of yacc.c  */
-#line 274 "d-exp.c.tmp"
-} YYSTYPE;
+};
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
+extern YYSTYPE yylval;
+
+int yyparse (void);
 
-/* Line 264 of yacc.c  */
+
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_IDENTIFIER = 3,                 /* IDENTIFIER  */
+  YYSYMBOL_UNKNOWN_NAME = 4,               /* UNKNOWN_NAME  */
+  YYSYMBOL_TYPENAME = 5,                   /* TYPENAME  */
+  YYSYMBOL_COMPLETE = 6,                   /* COMPLETE  */
+  YYSYMBOL_NAME_OR_INT = 7,                /* NAME_OR_INT  */
+  YYSYMBOL_INTEGER_LITERAL = 8,            /* INTEGER_LITERAL  */
+  YYSYMBOL_FLOAT_LITERAL = 9,              /* FLOAT_LITERAL  */
+  YYSYMBOL_CHARACTER_LITERAL = 10,         /* CHARACTER_LITERAL  */
+  YYSYMBOL_STRING_LITERAL = 11,            /* STRING_LITERAL  */
+  YYSYMBOL_ENTRY = 12,                     /* ENTRY  */
+  YYSYMBOL_ERROR = 13,                     /* ERROR  */
+  YYSYMBOL_TRUE_KEYWORD = 14,              /* TRUE_KEYWORD  */
+  YYSYMBOL_FALSE_KEYWORD = 15,             /* FALSE_KEYWORD  */
+  YYSYMBOL_NULL_KEYWORD = 16,              /* NULL_KEYWORD  */
+  YYSYMBOL_SUPER_KEYWORD = 17,             /* SUPER_KEYWORD  */
+  YYSYMBOL_CAST_KEYWORD = 18,              /* CAST_KEYWORD  */
+  YYSYMBOL_SIZEOF_KEYWORD = 19,            /* SIZEOF_KEYWORD  */
+  YYSYMBOL_TYPEOF_KEYWORD = 20,            /* TYPEOF_KEYWORD  */
+  YYSYMBOL_TYPEID_KEYWORD = 21,            /* TYPEID_KEYWORD  */
+  YYSYMBOL_INIT_KEYWORD = 22,              /* INIT_KEYWORD  */
+  YYSYMBOL_IMMUTABLE_KEYWORD = 23,         /* IMMUTABLE_KEYWORD  */
+  YYSYMBOL_CONST_KEYWORD = 24,             /* CONST_KEYWORD  */
+  YYSYMBOL_SHARED_KEYWORD = 25,            /* SHARED_KEYWORD  */
+  YYSYMBOL_STRUCT_KEYWORD = 26,            /* STRUCT_KEYWORD  */
+  YYSYMBOL_UNION_KEYWORD = 27,             /* UNION_KEYWORD  */
+  YYSYMBOL_CLASS_KEYWORD = 28,             /* CLASS_KEYWORD  */
+  YYSYMBOL_INTERFACE_KEYWORD = 29,         /* INTERFACE_KEYWORD  */
+  YYSYMBOL_ENUM_KEYWORD = 30,              /* ENUM_KEYWORD  */
+  YYSYMBOL_TEMPLATE_KEYWORD = 31,          /* TEMPLATE_KEYWORD  */
+  YYSYMBOL_DELEGATE_KEYWORD = 32,          /* DELEGATE_KEYWORD  */
+  YYSYMBOL_FUNCTION_KEYWORD = 33,          /* FUNCTION_KEYWORD  */
+  YYSYMBOL_DOLLAR_VARIABLE = 34,           /* DOLLAR_VARIABLE  */
+  YYSYMBOL_ASSIGN_MODIFY = 35,             /* ASSIGN_MODIFY  */
+  YYSYMBOL_36_ = 36,                       /* ','  */
+  YYSYMBOL_37_ = 37,                       /* '='  */
+  YYSYMBOL_38_ = 38,                       /* '?'  */
+  YYSYMBOL_OROR = 39,                      /* OROR  */
+  YYSYMBOL_ANDAND = 40,                    /* ANDAND  */
+  YYSYMBOL_41_ = 41,                       /* '|'  */
+  YYSYMBOL_42_ = 42,                       /* '^'  */
+  YYSYMBOL_43_ = 43,                       /* '&'  */
+  YYSYMBOL_EQUAL = 44,                     /* EQUAL  */
+  YYSYMBOL_NOTEQUAL = 45,                  /* NOTEQUAL  */
+  YYSYMBOL_46_ = 46,                       /* '<'  */
+  YYSYMBOL_47_ = 47,                       /* '>'  */
+  YYSYMBOL_LEQ = 48,                       /* LEQ  */
+  YYSYMBOL_GEQ = 49,                       /* GEQ  */
+  YYSYMBOL_LSH = 50,                       /* LSH  */
+  YYSYMBOL_RSH = 51,                       /* RSH  */
+  YYSYMBOL_52_ = 52,                       /* '+'  */
+  YYSYMBOL_53_ = 53,                       /* '-'  */
+  YYSYMBOL_54_ = 54,                       /* '*'  */
+  YYSYMBOL_55_ = 55,                       /* '/'  */
+  YYSYMBOL_56_ = 56,                       /* '%'  */
+  YYSYMBOL_HATHAT = 57,                    /* HATHAT  */
+  YYSYMBOL_IDENTITY = 58,                  /* IDENTITY  */
+  YYSYMBOL_NOTIDENTITY = 59,               /* NOTIDENTITY  */
+  YYSYMBOL_INCREMENT = 60,                 /* INCREMENT  */
+  YYSYMBOL_DECREMENT = 61,                 /* DECREMENT  */
+  YYSYMBOL_62_ = 62,                       /* '.'  */
+  YYSYMBOL_63_ = 63,                       /* '['  */
+  YYSYMBOL_64_ = 64,                       /* '('  */
+  YYSYMBOL_DOTDOT = 65,                    /* DOTDOT  */
+  YYSYMBOL_66_ = 66,                       /* ':'  */
+  YYSYMBOL_67_ = 67,                       /* '~'  */
+  YYSYMBOL_68_ = 68,                       /* '!'  */
+  YYSYMBOL_69_ = 69,                       /* ')'  */
+  YYSYMBOL_70_ = 70,                       /* ']'  */
+  YYSYMBOL_YYACCEPT = 71,                  /* $accept  */
+  YYSYMBOL_start = 72,                     /* start  */
+  YYSYMBOL_Expression = 73,                /* Expression  */
+  YYSYMBOL_CommaExpression = 74,           /* CommaExpression  */
+  YYSYMBOL_AssignExpression = 75,          /* AssignExpression  */
+  YYSYMBOL_ConditionalExpression = 76,     /* ConditionalExpression  */
+  YYSYMBOL_OrOrExpression = 77,            /* OrOrExpression  */
+  YYSYMBOL_AndAndExpression = 78,          /* AndAndExpression  */
+  YYSYMBOL_OrExpression = 79,              /* OrExpression  */
+  YYSYMBOL_XorExpression = 80,             /* XorExpression  */
+  YYSYMBOL_AndExpression = 81,             /* AndExpression  */
+  YYSYMBOL_CmpExpression = 82,             /* CmpExpression  */
+  YYSYMBOL_EqualExpression = 83,           /* EqualExpression  */
+  YYSYMBOL_IdentityExpression = 84,        /* IdentityExpression  */
+  YYSYMBOL_RelExpression = 85,             /* RelExpression  */
+  YYSYMBOL_ShiftExpression = 86,           /* ShiftExpression  */
+  YYSYMBOL_AddExpression = 87,             /* AddExpression  */
+  YYSYMBOL_MulExpression = 88,             /* MulExpression  */
+  YYSYMBOL_UnaryExpression = 89,           /* UnaryExpression  */
+  YYSYMBOL_CastExpression = 90,            /* CastExpression  */
+  YYSYMBOL_PowExpression = 91,             /* PowExpression  */
+  YYSYMBOL_PostfixExpression = 92,         /* PostfixExpression  */
+  YYSYMBOL_ArgumentList = 93,              /* ArgumentList  */
+  YYSYMBOL_ArgumentList_opt = 94,          /* ArgumentList_opt  */
+  YYSYMBOL_CallExpression = 95,            /* CallExpression  */
+  YYSYMBOL_96_1 = 96,                      /* $@1  */
+  YYSYMBOL_IndexExpression = 97,           /* IndexExpression  */
+  YYSYMBOL_SliceExpression = 98,           /* SliceExpression  */
+  YYSYMBOL_PrimaryExpression = 99,         /* PrimaryExpression  */
+  YYSYMBOL_ArrayLiteral = 100,             /* ArrayLiteral  */
+  YYSYMBOL_IdentifierExp = 101,            /* IdentifierExp  */
+  YYSYMBOL_StringExp = 102,                /* StringExp  */
+  YYSYMBOL_TypeExp = 103,                  /* TypeExp  */
+  YYSYMBOL_BasicType2 = 104,               /* BasicType2  */
+  YYSYMBOL_BasicType = 105                 /* BasicType  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
+
+/* Second part of user prologue.  */
 #line 108 "d-exp.y"
 
 /* YYSTYPE gets defined by %union */
 static int parse_number (struct parser_state *, const char *,
 			 int, int, YYSTYPE *);
 
+#line 418 "d-exp.c.tmp"
 
-/* Line 264 of yacc.c  */
-#line 293 "d-exp.c.tmp"
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef short int yytype_int16;
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -327,55 +497,100 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_uint8 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
 #else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if !defined yyoverflow
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
 
@@ -391,11 +606,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -403,8 +618,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -418,88 +633,89 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined xmalloc) \
-	     && (defined YYFREE || defined xfree)))
+             && (defined YYFREE || defined xfree)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC xmalloc
-#   if ! defined xmalloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xmalloc && ! defined EXIT_SUCCESS
 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE xfree
-#   if ! defined xfree && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xfree && ! defined EXIT_SUCCESS
 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYPTRDIFF_T yynewbytes;                                         \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
+      }                                                                 \
+    while (0)
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYPTRDIFF_T yyi;                      \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  70
 /* YYLAST -- Last index in YYTABLE.  */
@@ -511,18 +727,22 @@ union yyalloc
 #define YYNNTS  35
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  104
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  169
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
 #define YYMAXUTOK   304
 
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex.  */
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -530,7 +750,7 @@ static const yytype_uint8 yytranslate[]
        2,     2,     2,    68,     2,     2,     2,    56,    43,     2,
       64,    69,    54,    52,    36,    53,    62,    55,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,    66,     2,
-      44,    37,    45,    38,     2,     2,     2,     2,     2,     2,
+      46,    37,    47,    38,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,    63,     2,    70,    42,     2,     2,     2,     2,     2,
@@ -553,68 +773,13 @@ static const yytype_uint8 yytranslate[]
        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,    39,    40,    46,    47,    48,    49,    50,    51,    57,
+      35,    39,    40,    44,    45,    48,    49,    50,    51,    57,
       58,    59,    60,    61,    65
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     5,     7,     9,    11,    15,    17,    21,
-      25,    27,    33,    35,    39,    41,    45,    47,    51,    53,
-      57,    59,    63,    65,    67,    69,    71,    75,    79,    83,
-      87,    91,    95,    99,   103,   105,   109,   113,   115,   119,
-     123,   127,   129,   133,   137,   141,   144,   147,   150,   153,
-     156,   159,   162,   165,   169,   171,   173,   179,   184,   186,
-     190,   192,   196,   200,   205,   209,   212,   215,   217,   219,
-     221,   223,   227,   228,   230,   231,   237,   242,   246,   253,
-     257,   259,   263,   265,   267,   269,   271,   273,   275,   277,
-     279,   281,   283,   288,   292,   294,   296,   299,   303,   305,
-     308,   310,   313,   317,   322
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      72,     0,    -1,    73,    -1,   103,    -1,    74,    -1,    75,
-      -1,    75,    36,    74,    -1,    76,    -1,    76,    37,    75,
-      -1,    76,    35,    75,    -1,    77,    -1,    77,    38,    73,
-      66,    76,    -1,    78,    -1,    77,    39,    78,    -1,    79,
-      -1,    78,    40,    79,    -1,    80,    -1,    79,    41,    80,
-      -1,    81,    -1,    80,    42,    81,    -1,    82,    -1,    81,
-      43,    82,    -1,    86,    -1,    83,    -1,    84,    -1,    85,
-      -1,    86,    49,    86,    -1,    86,    48,    86,    -1,    86,
-      59,    86,    -1,    86,    58,    86,    -1,    86,    44,    86,
-      -1,    86,    47,    86,    -1,    86,    45,    86,    -1,    86,
-      46,    86,    -1,    87,    -1,    86,    51,    87,    -1,    86,
-      50,    87,    -1,    88,    -1,    87,    52,    88,    -1,    87,
-      53,    88,    -1,    87,    67,    88,    -1,    89,    -1,    88,
-      54,    89,    -1,    88,    55,    89,    -1,    88,    56,    89,
-      -1,    43,    89,    -1,    61,    89,    -1,    60,    89,    -1,
-      54,    89,    -1,    53,    89,    -1,    52,    89,    -1,    68,
-      89,    -1,    67,    89,    -1,   103,    62,    19,    -1,    90,
-      -1,    91,    -1,    18,    64,   103,    69,    89,    -1,    64,
-     103,    69,    89,    -1,    92,    -1,    92,    57,    89,    -1,
-      99,    -1,    92,    62,     6,    -1,    92,    62,     3,    -1,
-      92,    62,     3,     6,    -1,    92,    62,    19,    -1,    92,
-      61,    -1,    92,    60,    -1,    95,    -1,    97,    -1,    98,
-      -1,    75,    -1,    93,    36,    75,    -1,    -1,    93,    -1,
-      -1,    92,    64,    96,    94,    69,    -1,    92,    63,    93,
-      70,    -1,    92,    63,    70,    -1,    92,    63,    75,    65,
-      75,    70,    -1,    64,    73,    69,    -1,   101,    -1,   103,
-      62,   101,    -1,    34,    -1,     7,    -1,    16,    -1,    14,
-      -1,    15,    -1,     8,    -1,     9,    -1,    10,    -1,   102,
-      -1,   100,    -1,    20,    64,    73,    69,    -1,    63,    94,
-      70,    -1,     3,    -1,    11,    -1,   102,    11,    -1,    64,
-     103,    69,    -1,   105,    -1,   105,   104,    -1,    54,    -1,
-      54,   104,    -1,    63,     8,    70,    -1,    63,     8,    70,
-     104,    -1,     5,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+static const yytype_int16 yyrline[] =
 {
        0,   181,   181,   182,   188,   192,   193,   198,   199,   201,
      208,   209,   214,   215,   220,   221,   226,   227,   232,   233,
@@ -630,25 +795,32 @@ static const yytype_uint16 yyrline[] =
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "IDENTIFIER", "UNKNOWN_NAME", "TYPENAME",
-  "COMPLETE", "NAME_OR_INT", "INTEGER_LITERAL", "FLOAT_LITERAL",
-  "CHARACTER_LITERAL", "STRING_LITERAL", "ENTRY", "ERROR", "TRUE_KEYWORD",
-  "FALSE_KEYWORD", "NULL_KEYWORD", "SUPER_KEYWORD", "CAST_KEYWORD",
-  "SIZEOF_KEYWORD", "TYPEOF_KEYWORD", "TYPEID_KEYWORD", "INIT_KEYWORD",
-  "IMMUTABLE_KEYWORD", "CONST_KEYWORD", "SHARED_KEYWORD", "STRUCT_KEYWORD",
-  "UNION_KEYWORD", "CLASS_KEYWORD", "INTERFACE_KEYWORD", "ENUM_KEYWORD",
-  "TEMPLATE_KEYWORD", "DELEGATE_KEYWORD", "FUNCTION_KEYWORD",
-  "DOLLAR_VARIABLE", "ASSIGN_MODIFY", "','", "'='", "'?'", "OROR",
-  "ANDAND", "'|'", "'^'", "'&'", "'<'", "'>'", "GEQ", "LEQ", "NOTEQUAL",
-  "EQUAL", "RSH", "LSH", "'+'", "'-'", "'*'", "'/'", "'%'", "HATHAT",
-  "NOTIDENTITY", "IDENTITY", "DECREMENT", "INCREMENT", "'.'", "'['", "'('",
-  "DOTDOT", "':'", "'~'", "'!'", "')'", "']'", "$accept", "start",
-  "Expression", "CommaExpression", "AssignExpression",
+  "\"end of file\"", "error", "\"invalid token\"", "IDENTIFIER",
+  "UNKNOWN_NAME", "TYPENAME", "COMPLETE", "NAME_OR_INT", "INTEGER_LITERAL",
+  "FLOAT_LITERAL", "CHARACTER_LITERAL", "STRING_LITERAL", "ENTRY", "ERROR",
+  "TRUE_KEYWORD", "FALSE_KEYWORD", "NULL_KEYWORD", "SUPER_KEYWORD",
+  "CAST_KEYWORD", "SIZEOF_KEYWORD", "TYPEOF_KEYWORD", "TYPEID_KEYWORD",
+  "INIT_KEYWORD", "IMMUTABLE_KEYWORD", "CONST_KEYWORD", "SHARED_KEYWORD",
+  "STRUCT_KEYWORD", "UNION_KEYWORD", "CLASS_KEYWORD", "INTERFACE_KEYWORD",
+  "ENUM_KEYWORD", "TEMPLATE_KEYWORD", "DELEGATE_KEYWORD",
+  "FUNCTION_KEYWORD", "DOLLAR_VARIABLE", "ASSIGN_MODIFY", "','", "'='",
+  "'?'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQUAL", "NOTEQUAL", "'<'",
+  "'>'", "LEQ", "GEQ", "LSH", "RSH", "'+'", "'-'", "'*'", "'/'", "'%'",
+  "HATHAT", "IDENTITY", "NOTIDENTITY", "INCREMENT", "DECREMENT", "'.'",
+  "'['", "'('", "DOTDOT", "':'", "'~'", "'!'", "')'", "']'", "$accept",
+  "start", "Expression", "CommaExpression", "AssignExpression",
   "ConditionalExpression", "OrOrExpression", "AndAndExpression",
   "OrExpression", "XorExpression", "AndExpression", "CmpExpression",
   "EqualExpression", "IdentityExpression", "RelExpression",
@@ -656,94 +828,44 @@ static const char *const yytname[] =
   "CastExpression", "PowExpression", "PostfixExpression", "ArgumentList",
   "ArgumentList_opt", "CallExpression", "$@1", "IndexExpression",
   "SliceExpression", "PrimaryExpression", "ArrayLiteral", "IdentifierExp",
-  "StringExp", "TypeExp", "BasicType2", "BasicType", 0
+  "StringExp", "TypeExp", "BasicType2", "BasicType", YY_NULLPTRPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+#ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,    44,    61,    63,   291,
-     292,   124,    94,    38,    60,    62,   293,   294,   295,   296,
+     292,   124,    94,    38,   293,   294,    60,    62,   295,   296,
      297,   298,    43,    45,    42,    47,    37,   299,   300,   301,
      302,   303,    46,    91,    40,   304,    58,   126,    33,    41,
       93
 };
-# endif
+#endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    71,    72,    72,    73,    74,    74,    75,    75,    75,
-      76,    76,    77,    77,    78,    78,    79,    79,    80,    80,
-      81,    81,    82,    82,    82,    82,    83,    83,    84,    84,
-      85,    85,    85,    85,    86,    86,    86,    87,    87,    87,
-      87,    88,    88,    88,    88,    89,    89,    89,    89,    89,
-      89,    89,    89,    89,    89,    89,    90,    90,    91,    91,
-      92,    92,    92,    92,    92,    92,    92,    92,    92,    92,
-      93,    93,    94,    94,    96,    95,    97,    98,    98,    99,
-      99,    99,    99,    99,    99,    99,    99,    99,    99,    99,
-      99,    99,    99,   100,   101,   102,   102,   103,   103,   103,
-     104,   104,   104,   104,   105
-};
+#define YYPACT_NINF (-91)
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     1,     1,     1,     1,     3,     1,     3,     3,
-       1,     5,     1,     3,     1,     3,     1,     3,     1,     3,
-       1,     3,     1,     1,     1,     1,     3,     3,     3,     3,
-       3,     3,     3,     3,     1,     3,     3,     1,     3,     3,
-       3,     1,     3,     3,     3,     2,     2,     2,     2,     2,
-       2,     2,     2,     3,     1,     1,     5,     4,     1,     3,
-       1,     3,     3,     4,     3,     2,     2,     1,     1,     1,
-       1,     3,     0,     1,     0,     5,     4,     3,     6,     3,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     4,     3,     1,     1,     2,     3,     1,     2,
-       1,     2,     3,     4,     1
-};
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint8 yydefact[] =
-{
-       0,    94,   104,    83,    87,    88,    89,    95,    85,    86,
-      84,     0,     0,    82,     0,     0,     0,     0,     0,     0,
-      72,     0,     0,     0,     0,     2,     4,     5,     7,    10,
-      12,    14,    16,    18,    20,    23,    24,    25,    22,    34,
-      37,    41,    54,    55,    58,    67,    68,    69,    60,    91,
-      80,    90,     3,    98,     0,     0,    45,     0,    50,    49,
-      48,    47,    46,    70,    73,     0,     0,     0,    52,    51,
-       1,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    66,    65,     0,
-       0,    74,    96,     0,   100,     0,    99,     0,     0,     0,
-       0,    93,    79,    97,     6,     9,     8,     0,    13,    15,
-      17,    19,    21,    30,    32,    33,    31,    27,    26,    36,
-      35,    29,    28,    38,    39,    40,    42,    43,    44,    59,
-      62,    61,    64,    77,    70,     0,    72,    53,    81,   101,
-       0,     0,     0,    92,    71,    57,     0,    63,     0,    76,
-       0,   102,    97,    56,    11,     0,    75,   103,    78
-};
+#define YYTABLE_NINF (-1)
 
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    64,    65,    45,   146,    46,    47,    48,    49,
-      50,    51,    57,   106,    53
-};
+#define yytable_value_is_error(Yyn) \
+  0
 
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -91
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
      132,   -91,   -91,   -91,   -91,   -91,   -91,   -91,   -91,   -91,
@@ -765,7 +887,31 @@ static const yytype_int16 yypact[] =
       33,   -37,   -91,   -91,   -91,    38,   -91,   -91,   -91
 };
 
-/* YYPGOTO[NTERM-NUM].  */
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_int8 yydefact[] =
+{
+       0,    94,   104,    83,    87,    88,    89,    95,    85,    86,
+      84,     0,     0,    82,     0,     0,     0,     0,     0,     0,
+      72,     0,     0,     0,     0,     2,     4,     5,     7,    10,
+      12,    14,    16,    18,    20,    23,    24,    25,    22,    34,
+      37,    41,    54,    55,    58,    67,    68,    69,    60,    91,
+      80,    90,     3,    98,     0,     0,    45,     0,    50,    49,
+      48,    46,    47,    70,    73,     0,     0,     0,    52,    51,
+       1,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    65,    66,     0,
+       0,    74,    96,     0,   100,     0,    99,     0,     0,     0,
+       0,    93,    79,    97,     6,     9,     8,     0,    13,    15,
+      17,    19,    21,    26,    27,    30,    32,    31,    33,    35,
+      36,    28,    29,    38,    39,    40,    42,    43,    44,    59,
+      62,    61,    64,    77,    70,     0,    72,    53,    81,   101,
+       0,     0,     0,    92,    71,    57,     0,    63,     0,    76,
+       0,   102,    97,    56,    11,     0,    75,   103,    78
+};
+
+  /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
      -91,   -91,     1,    42,   -13,   -47,   -91,    39,    40,    46,
@@ -774,11 +920,18 @@ static const yytype_int8 yypgoto[] =
       48,   -91,    10,   -90,   -91
 };
 
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -1
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+      -1,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    64,    65,    45,   146,    46,    47,    48,    49,
+      50,    51,    57,   106,    53
+};
+
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_uint8 yytable[] =
 {
       56,    58,    59,    60,    61,    62,   110,    63,    68,    69,
@@ -829,9 +982,9 @@ static const yytype_int16 yycheck[] =
       68
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
+static const yytype_int8 yystos[] =
 {
        0,     3,     5,     7,     8,     9,    10,    11,    14,    15,
       16,    18,    20,    34,    43,    52,    53,    54,    60,    61,
@@ -852,95 +1005,72 @@ static const yytype_uint8 yystos[] =
       94,    70,    69,    89,    76,    75,    69,   104,    70
 };
 
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
-
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
-
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_int8 yyr1[] =
+{
+       0,    71,    72,    72,    73,    74,    74,    75,    75,    75,
+      76,    76,    77,    77,    78,    78,    79,    79,    80,    80,
+      81,    81,    82,    82,    82,    82,    83,    83,    84,    84,
+      85,    85,    85,    85,    86,    86,    86,    87,    87,    87,
+      87,    88,    88,    88,    88,    89,    89,    89,    89,    89,
+      89,    89,    89,    89,    89,    89,    90,    90,    91,    91,
+      92,    92,    92,    92,    92,    92,    92,    92,    92,    92,
+      93,    93,    94,    94,    96,    95,    97,    98,    98,    99,
+      99,    99,    99,    99,    99,    99,    99,    99,    99,    99,
+      99,    99,    99,   100,   101,   102,   102,   103,   103,   103,
+     104,   104,   104,   104,   105
+};
 
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_int8 yyr2[] =
+{
+       0,     2,     1,     1,     1,     1,     3,     1,     3,     3,
+       1,     5,     1,     3,     1,     3,     1,     3,     1,     3,
+       1,     3,     1,     1,     1,     1,     3,     3,     3,     3,
+       3,     3,     3,     3,     1,     3,     3,     1,     3,     3,
+       3,     1,     3,     3,     3,     2,     2,     2,     2,     2,
+       2,     2,     2,     3,     1,     1,     5,     4,     1,     3,
+       1,     3,     3,     4,     3,     2,     2,     1,     1,     1,
+       1,     3,     0,     1,     0,     5,     4,     3,     6,     3,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     4,     3,     1,     1,     2,     3,     1,     2,
+       1,     2,     3,     4,     1
+};
 
-#define YYFAIL		goto yyerrlab
 
-#define YYRECOVERING()  (!!yyerrstatus)
+enum { YYENOMEM = -2 };
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
-
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
 
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
 
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
 
+#define YYRECOVERING()  (!!yyerrstatus)
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
+
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -950,80 +1080,65 @@ while (YYID (0))
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+# ifndef YY_LOCATION_PRINT
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+
+
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Kind, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
+
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
 static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yykind, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -1031,16 +1146,8 @@ yy_symbol_print (yyoutput, yytype, yyval
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1051,63 +1158,56 @@ yy_stack_print (yybottom, yytop)
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
 static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule)
 {
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
+      yy_symbol_print (stderr,
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)]);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1122,342 +1222,82 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
 
-  return yyd - 1;
-}
-#  endif
-# endif
 
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
 
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
 
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
 static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  switch (yytype)
-    {
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
 
 /* The lookahead symbol.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
-
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+
+/*----------.
+| yyparse.  |
+`----------*/
+
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
-
-
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to xreallocate them elsewhere.  */
 
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize;
+
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
-
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -1465,133 +1305,147 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
   yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
-	/* Give user a chance to xreallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        yy_state_t *yyss1 = yyss;
+        YYSTYPE *yyvs1 = yyvs;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
+                    &yystacksize);
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yy_state_t *yyss1 = yyss;
+        union yyalloc *yyptr =
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      YYDPRINTF ((stderr, "Reading a token\n"));
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -1606,8 +1460,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -1619,13 +1473,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -1640,14 +1494,14 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -1660,362 +1514,312 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 6:
-
-/* Line 1455 of yacc.c  */
+  case 6:
 #line 194 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+                { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+#line 1522 "d-exp.c.tmp"
     break;
 
   case 8:
-
-/* Line 1455 of yacc.c  */
 #line 200 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+                { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 1528 "d-exp.c.tmp"
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
 #line 202 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
-		  write_exp_elt_opcode (pstate, (yyvsp[(2) - (3)].opcode));
+                { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
+		  write_exp_elt_opcode (pstate, (yyvsp[-1].opcode));
 		  write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY); }
+#line 1536 "d-exp.c.tmp"
     break;
 
   case 11:
-
-/* Line 1455 of yacc.c  */
 #line 210 "d-exp.y"
-    { write_exp_elt_opcode (pstate, TERNOP_COND); }
+                { write_exp_elt_opcode (pstate, TERNOP_COND); }
+#line 1542 "d-exp.c.tmp"
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
 #line 216 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+                { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 1548 "d-exp.c.tmp"
     break;
 
   case 15:
-
-/* Line 1455 of yacc.c  */
 #line 222 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+                { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 1554 "d-exp.c.tmp"
     break;
 
   case 17:
-
-/* Line 1455 of yacc.c  */
 #line 228 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+                { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 1560 "d-exp.c.tmp"
     break;
 
   case 19:
-
-/* Line 1455 of yacc.c  */
 #line 234 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+                { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 1566 "d-exp.c.tmp"
     break;
 
   case 21:
-
-/* Line 1455 of yacc.c  */
 #line 240 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+                { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 1572 "d-exp.c.tmp"
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
 #line 252 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+                { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 1578 "d-exp.c.tmp"
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
 #line 254 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+                { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 1584 "d-exp.c.tmp"
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
 #line 259 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+                { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 1590 "d-exp.c.tmp"
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
 #line 261 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+                { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 1596 "d-exp.c.tmp"
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
 #line 266 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LESS); }
+                { write_exp_elt_opcode (pstate, BINOP_LESS); }
+#line 1602 "d-exp.c.tmp"
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
 #line 268 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+                { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+#line 1608 "d-exp.c.tmp"
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
 #line 270 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GTR); }
+                { write_exp_elt_opcode (pstate, BINOP_GTR); }
+#line 1614 "d-exp.c.tmp"
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
 #line 272 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+                { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+#line 1620 "d-exp.c.tmp"
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
 #line 278 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LSH); }
+                { write_exp_elt_opcode (pstate, BINOP_LSH); }
+#line 1626 "d-exp.c.tmp"
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
 #line 280 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_RSH); }
+                { write_exp_elt_opcode (pstate, BINOP_RSH); }
+#line 1632 "d-exp.c.tmp"
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
 #line 286 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ADD); }
+                { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 1638 "d-exp.c.tmp"
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
 #line 288 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUB); }
+                { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 1644 "d-exp.c.tmp"
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
 #line 290 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_CONCAT); }
+                { write_exp_elt_opcode (pstate, BINOP_CONCAT); }
+#line 1650 "d-exp.c.tmp"
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
 #line 296 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MUL); }
+                { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 1656 "d-exp.c.tmp"
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
 #line 298 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_DIV); }
+                { write_exp_elt_opcode (pstate, BINOP_DIV); }
+#line 1662 "d-exp.c.tmp"
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
 #line 300 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REM); }
+                { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 1668 "d-exp.c.tmp"
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
 #line 304 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+                { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+#line 1674 "d-exp.c.tmp"
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
 #line 306 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PREINCREMENT); }
+                { write_exp_elt_opcode (pstate, UNOP_PREINCREMENT); }
+#line 1680 "d-exp.c.tmp"
     break;
 
   case 47:
-
-/* Line 1455 of yacc.c  */
 #line 308 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PREDECREMENT); }
+                { write_exp_elt_opcode (pstate, UNOP_PREDECREMENT); }
+#line 1686 "d-exp.c.tmp"
     break;
 
   case 48:
-
-/* Line 1455 of yacc.c  */
 #line 310 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND); }
+                { write_exp_elt_opcode (pstate, UNOP_IND); }
+#line 1692 "d-exp.c.tmp"
     break;
 
   case 49:
-
-/* Line 1455 of yacc.c  */
 #line 312 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_NEG); }
+                { write_exp_elt_opcode (pstate, UNOP_NEG); }
+#line 1698 "d-exp.c.tmp"
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
 #line 314 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+                { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+#line 1704 "d-exp.c.tmp"
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
 #line 316 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+                { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+#line 1710 "d-exp.c.tmp"
     break;
 
   case 52:
-
-/* Line 1455 of yacc.c  */
 #line 318 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_COMPLEMENT); }
+                { write_exp_elt_opcode (pstate, UNOP_COMPLEMENT); }
+#line 1716 "d-exp.c.tmp"
     break;
 
   case 53:
-
-/* Line 1455 of yacc.c  */
 #line 320 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+                { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+#line 1722 "d-exp.c.tmp"
     break;
 
   case 56:
-
-/* Line 1455 of yacc.c  */
 #line 327 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+                { write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+#line 1728 "d-exp.c.tmp"
     break;
 
   case 57:
-
-/* Line 1455 of yacc.c  */
 #line 331 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+                { write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+#line 1734 "d-exp.c.tmp"
     break;
 
   case 59:
-
-/* Line 1455 of yacc.c  */
 #line 338 "d-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EXP); }
+                { write_exp_elt_opcode (pstate, BINOP_EXP); }
+#line 1740 "d-exp.c.tmp"
     break;
 
   case 61:
-
-/* Line 1455 of yacc.c  */
 #line 344 "d-exp.y"
-    { struct stoken s;
+                { struct stoken s;
 		  pstate->mark_struct_expression ();
 		  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
 		  s.ptr = "";
 		  s.length = 0;
 		  write_exp_string (pstate, s);
 		  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 1752 "d-exp.c.tmp"
     break;
 
   case 62:
-
-/* Line 1455 of yacc.c  */
 #line 352 "d-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-		  write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
+                { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+		  write_exp_string (pstate, (yyvsp[0].sval));
 		  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 1760 "d-exp.c.tmp"
     break;
 
   case 63:
-
-/* Line 1455 of yacc.c  */
 #line 356 "d-exp.y"
-    { pstate->mark_struct_expression ();
+                { pstate->mark_struct_expression ();
 		  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-		  write_exp_string (pstate, (yyvsp[(3) - (4)].sval));
+		  write_exp_string (pstate, (yyvsp[-1].sval));
 		  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 1769 "d-exp.c.tmp"
     break;
 
   case 64:
-
-/* Line 1455 of yacc.c  */
 #line 361 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+                { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+#line 1775 "d-exp.c.tmp"
     break;
 
   case 65:
-
-/* Line 1455 of yacc.c  */
 #line 363 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_POSTINCREMENT); }
+                { write_exp_elt_opcode (pstate, UNOP_POSTINCREMENT); }
+#line 1781 "d-exp.c.tmp"
     break;
 
   case 66:
-
-/* Line 1455 of yacc.c  */
 #line 365 "d-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_POSTDECREMENT); }
+                { write_exp_elt_opcode (pstate, UNOP_POSTDECREMENT); }
+#line 1787 "d-exp.c.tmp"
     break;
 
   case 70:
-
-/* Line 1455 of yacc.c  */
 #line 373 "d-exp.y"
-    { pstate->arglist_len = 1; }
+                { pstate->arglist_len = 1; }
+#line 1793 "d-exp.c.tmp"
     break;
 
   case 71:
-
-/* Line 1455 of yacc.c  */
 #line 375 "d-exp.y"
-    { pstate->arglist_len++; }
+                { pstate->arglist_len++; }
+#line 1799 "d-exp.c.tmp"
     break;
 
   case 72:
-
-/* Line 1455 of yacc.c  */
 #line 380 "d-exp.y"
-    { pstate->arglist_len = 0; }
+                { pstate->arglist_len = 0; }
+#line 1805 "d-exp.c.tmp"
     break;
 
   case 74:
-
-/* Line 1455 of yacc.c  */
 #line 386 "d-exp.y"
-    { pstate->start_arglist (); }
+                { pstate->start_arglist (); }
+#line 1811 "d-exp.c.tmp"
     break;
 
   case 75:
-
-/* Line 1455 of yacc.c  */
 #line 388 "d-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FUNCALL);
+                { write_exp_elt_opcode (pstate, OP_FUNCALL);
 		  write_exp_elt_longcst (pstate, pstate->end_arglist ());
 		  write_exp_elt_opcode (pstate, OP_FUNCALL); }
+#line 1819 "d-exp.c.tmp"
     break;
 
   case 76:
-
-/* Line 1455 of yacc.c  */
 #line 395 "d-exp.y"
-    { if (pstate->arglist_len > 0)
+                { if (pstate->arglist_len > 0)
 		    {
 		      write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT);
 		      write_exp_elt_longcst (pstate, pstate->arglist_len);
@@ -2024,35 +1828,31 @@ yyreduce:
 		  else
 		    write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT);
 		}
+#line 1833 "d-exp.c.tmp"
     break;
 
   case 77:
-
-/* Line 1455 of yacc.c  */
 #line 408 "d-exp.y"
-    { /* Do nothing.  */ }
+                { /* Do nothing.  */ }
+#line 1839 "d-exp.c.tmp"
     break;
 
   case 78:
-
-/* Line 1455 of yacc.c  */
 #line 410 "d-exp.y"
-    { write_exp_elt_opcode (pstate, TERNOP_SLICE); }
+                { write_exp_elt_opcode (pstate, TERNOP_SLICE); }
+#line 1845 "d-exp.c.tmp"
     break;
 
   case 79:
-
-/* Line 1455 of yacc.c  */
 #line 415 "d-exp.y"
-    { /* Do nothing.  */ }
+                { /* Do nothing.  */ }
+#line 1851 "d-exp.c.tmp"
     break;
 
   case 80:
-
-/* Line 1455 of yacc.c  */
 #line 417 "d-exp.y"
-    { struct bound_minimal_symbol msymbol;
-		  std::string copy = copy_name ((yyvsp[(1) - (1)].sval));
+                { struct bound_minimal_symbol msymbol;
+		  std::string copy = copy_name ((yyvsp[0].sval));
 		  struct field_of_this_result is_a_field_of_this;
 		  struct block_symbol sym;
 
@@ -2077,7 +1877,7 @@ yyreduce:
 		      write_exp_elt_opcode (pstate, OP_THIS);
 		      write_exp_elt_opcode (pstate, OP_THIS);
 		      write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-		      write_exp_string (pstate, (yyvsp[(1) - (1)].sval));
+		      write_exp_string (pstate, (yyvsp[0].sval));
 		      write_exp_elt_opcode (pstate, STRUCTOP_PTR);
 		    }
 		  else
@@ -2093,18 +1893,17 @@ yyreduce:
 			       copy.c_str ());
 		    }
 		  }
+#line 1898 "d-exp.c.tmp"
     break;
 
   case 81:
-
-/* Line 1455 of yacc.c  */
 #line 460 "d-exp.y"
-    { struct type *type = check_typedef ((yyvsp[(1) - (3)].tval));
+                        { struct type *type = check_typedef ((yyvsp[-2].tval));
 
 			  /* Check if the qualified name is in the global
 			     context.  However if the symbol has not already
 			     been resolved, it's not likely to be found.  */
-			  if (TYPE_CODE (type) == TYPE_CODE_MODULE)
+			  if (type->code () == TYPE_CODE_MODULE)
 			    {
 			      struct bound_minimal_symbol msymbol;
 			      struct block_symbol sym;
@@ -2113,7 +1912,7 @@ yyreduce:
 			      std::string name
 				= string_printf ("%.*s.%.*s",
 						 type_name_len, type_name,
-						 (yyvsp[(3) - (3)].sval).length, (yyvsp[(3) - (3)].sval).ptr);
+						 (yyvsp[0].sval).length, (yyvsp[0].sval).ptr);
 
 			      sym =
 				lookup_symbol (name.c_str (),
@@ -2146,131 +1945,118 @@ yyreduce:
 
 			  write_exp_elt_opcode (pstate, OP_SCOPE);
 			  write_exp_elt_type (pstate, type);
-			  write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, OP_SCOPE);
 			}
+#line 1953 "d-exp.c.tmp"
     break;
 
   case 82:
-
-/* Line 1455 of yacc.c  */
 #line 511 "d-exp.y"
-    { write_dollar_variable (pstate, (yyvsp[(1) - (1)].sval)); }
+                { write_dollar_variable (pstate, (yyvsp[0].sval)); }
+#line 1959 "d-exp.c.tmp"
     break;
 
   case 83:
-
-/* Line 1455 of yacc.c  */
 #line 513 "d-exp.y"
-    { YYSTYPE val;
-                  parse_number (pstate, (yyvsp[(1) - (1)].sval).ptr, (yyvsp[(1) - (1)].sval).length, 0, &val);
+                { YYSTYPE val;
+                  parse_number (pstate, (yyvsp[0].sval).ptr, (yyvsp[0].sval).length, 0, &val);
 		  write_exp_elt_opcode (pstate, OP_LONG);
 		  write_exp_elt_type (pstate, val.typed_val_int.type);
 		  write_exp_elt_longcst (pstate,
 					 (LONGEST) val.typed_val_int.val);
 		  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 1971 "d-exp.c.tmp"
     break;
 
   case 84:
-
-/* Line 1455 of yacc.c  */
 #line 521 "d-exp.y"
-    { struct type *type = parse_d_type (pstate)->builtin_void;
+                { struct type *type = parse_d_type (pstate)->builtin_void;
 		  type = lookup_pointer_type (type);
 		  write_exp_elt_opcode (pstate, OP_LONG);
 		  write_exp_elt_type (pstate, type);
 		  write_exp_elt_longcst (pstate, (LONGEST) 0);
 		  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 1982 "d-exp.c.tmp"
     break;
 
   case 85:
-
-/* Line 1455 of yacc.c  */
 #line 528 "d-exp.y"
-    { write_exp_elt_opcode (pstate, OP_BOOL);
+                { write_exp_elt_opcode (pstate, OP_BOOL);
 		  write_exp_elt_longcst (pstate, (LONGEST) 1);
 		  write_exp_elt_opcode (pstate, OP_BOOL); }
+#line 1990 "d-exp.c.tmp"
     break;
 
   case 86:
-
-/* Line 1455 of yacc.c  */
 #line 532 "d-exp.y"
-    { write_exp_elt_opcode (pstate, OP_BOOL);
+                { write_exp_elt_opcode (pstate, OP_BOOL);
 		  write_exp_elt_longcst (pstate, (LONGEST) 0);
 		  write_exp_elt_opcode (pstate, OP_BOOL); }
+#line 1998 "d-exp.c.tmp"
     break;
 
   case 87:
-
-/* Line 1455 of yacc.c  */
 #line 536 "d-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
-		  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val_int).type);
-		  write_exp_elt_longcst (pstate, (LONGEST)((yyvsp[(1) - (1)].typed_val_int).val));
+                { write_exp_elt_opcode (pstate, OP_LONG);
+		  write_exp_elt_type (pstate, (yyvsp[0].typed_val_int).type);
+		  write_exp_elt_longcst (pstate, (LONGEST)((yyvsp[0].typed_val_int).val));
 		  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 2007 "d-exp.c.tmp"
     break;
 
   case 88:
-
-/* Line 1455 of yacc.c  */
 #line 541 "d-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FLOAT);
-		  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val_float).type);
-		  write_exp_elt_floatcst (pstate, (yyvsp[(1) - (1)].typed_val_float).val);
+                { write_exp_elt_opcode (pstate, OP_FLOAT);
+		  write_exp_elt_type (pstate, (yyvsp[0].typed_val_float).type);
+		  write_exp_elt_floatcst (pstate, (yyvsp[0].typed_val_float).val);
 		  write_exp_elt_opcode (pstate, OP_FLOAT); }
+#line 2016 "d-exp.c.tmp"
     break;
 
   case 89:
-
-/* Line 1455 of yacc.c  */
 #line 546 "d-exp.y"
-    { struct stoken_vector vec;
+                { struct stoken_vector vec;
 		  vec.len = 1;
-		  vec.tokens = &(yyvsp[(1) - (1)].tsval);
-		  write_exp_string_vector (pstate, (yyvsp[(1) - (1)].tsval).type, &vec); }
+		  vec.tokens = &(yyvsp[0].tsval);
+		  write_exp_string_vector (pstate, (yyvsp[0].tsval).type, &vec); }
+#line 2025 "d-exp.c.tmp"
     break;
 
   case 90:
-
-/* Line 1455 of yacc.c  */
 #line 551 "d-exp.y"
-    { int i;
-		  write_exp_string_vector (pstate, 0, &(yyvsp[(1) - (1)].svec));
-		  for (i = 0; i < (yyvsp[(1) - (1)].svec).len; ++i)
-		    xfree ((yyvsp[(1) - (1)].svec).tokens[i].ptr);
-		  xfree ((yyvsp[(1) - (1)].svec).tokens); }
+                { int i;
+		  write_exp_string_vector (pstate, 0, &(yyvsp[0].svec));
+		  for (i = 0; i < (yyvsp[0].svec).len; ++i)
+		    xfree ((yyvsp[0].svec).tokens[i].ptr);
+		  xfree ((yyvsp[0].svec).tokens); }
+#line 2035 "d-exp.c.tmp"
     break;
 
   case 91:
-
-/* Line 1455 of yacc.c  */
 #line 557 "d-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ARRAY);
+                { write_exp_elt_opcode (pstate, OP_ARRAY);
 		  write_exp_elt_longcst (pstate, (LONGEST) 0);
-		  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].ival) - 1);
+		  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].ival) - 1);
 		  write_exp_elt_opcode (pstate, OP_ARRAY); }
+#line 2044 "d-exp.c.tmp"
     break;
 
   case 92:
-
-/* Line 1455 of yacc.c  */
 #line 562 "d-exp.y"
-    { write_exp_elt_opcode (pstate, OP_TYPEOF); }
+                { write_exp_elt_opcode (pstate, OP_TYPEOF); }
+#line 2050 "d-exp.c.tmp"
     break;
 
   case 93:
-
-/* Line 1455 of yacc.c  */
 #line 567 "d-exp.y"
-    { (yyval.ival) = pstate->arglist_len; }
+                { (yyval.ival) = pstate->arglist_len; }
+#line 2056 "d-exp.c.tmp"
     break;
 
   case 95:
-
-/* Line 1455 of yacc.c  */
 #line 576 "d-exp.y"
-    { /* We copy the string here, and not in the
+                { /* We copy the string here, and not in the
 		     lexer, to guarantee that we do not leak a
 		     string.  Note that we follow the
 		     NUL-termination convention of the
@@ -2279,190 +2065,157 @@ yyreduce:
 		  (yyval.svec).len = 1;
 		  (yyval.svec).tokens = vec;
 
-		  vec->type = (yyvsp[(1) - (1)].tsval).type;
-		  vec->length = (yyvsp[(1) - (1)].tsval).length;
-		  vec->ptr = (char *) xmalloc ((yyvsp[(1) - (1)].tsval).length + 1);
-		  memcpy (vec->ptr, (yyvsp[(1) - (1)].tsval).ptr, (yyvsp[(1) - (1)].tsval).length + 1);
+		  vec->type = (yyvsp[0].tsval).type;
+		  vec->length = (yyvsp[0].tsval).length;
+		  vec->ptr = (char *) xmalloc ((yyvsp[0].tsval).length + 1);
+		  memcpy (vec->ptr, (yyvsp[0].tsval).ptr, (yyvsp[0].tsval).length + 1);
 		}
+#line 2075 "d-exp.c.tmp"
     break;
 
   case 96:
-
-/* Line 1455 of yacc.c  */
 #line 591 "d-exp.y"
-    { /* Note that we NUL-terminate here, but just
+                { /* Note that we NUL-terminate here, but just
 		     for convenience.  */
 		  char *p;
 		  ++(yyval.svec).len;
 		  (yyval.svec).tokens
 		    = XRESIZEVEC (struct typed_stoken, (yyval.svec).tokens, (yyval.svec).len);
 
-		  p = (char *) xmalloc ((yyvsp[(2) - (2)].tsval).length + 1);
-		  memcpy (p, (yyvsp[(2) - (2)].tsval).ptr, (yyvsp[(2) - (2)].tsval).length + 1);
+		  p = (char *) xmalloc ((yyvsp[0].tsval).length + 1);
+		  memcpy (p, (yyvsp[0].tsval).ptr, (yyvsp[0].tsval).length + 1);
 
-		  (yyval.svec).tokens[(yyval.svec).len - 1].type = (yyvsp[(2) - (2)].tsval).type;
-		  (yyval.svec).tokens[(yyval.svec).len - 1].length = (yyvsp[(2) - (2)].tsval).length;
+		  (yyval.svec).tokens[(yyval.svec).len - 1].type = (yyvsp[0].tsval).type;
+		  (yyval.svec).tokens[(yyval.svec).len - 1].length = (yyvsp[0].tsval).length;
 		  (yyval.svec).tokens[(yyval.svec).len - 1].ptr = p;
 		}
+#line 2094 "d-exp.c.tmp"
     break;
 
   case 97:
-
-/* Line 1455 of yacc.c  */
 #line 609 "d-exp.y"
-    { /* Do nothing.  */ }
+                { /* Do nothing.  */ }
+#line 2100 "d-exp.c.tmp"
     break;
 
   case 98:
-
-/* Line 1455 of yacc.c  */
 #line 611 "d-exp.y"
-    { write_exp_elt_opcode (pstate, OP_TYPE);
-		  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].tval));
+                { write_exp_elt_opcode (pstate, OP_TYPE);
+		  write_exp_elt_type (pstate, (yyvsp[0].tval));
 		  write_exp_elt_opcode (pstate, OP_TYPE); }
+#line 2108 "d-exp.c.tmp"
     break;
 
   case 99:
-
-/* Line 1455 of yacc.c  */
 #line 615 "d-exp.y"
-    { (yyval.tval) = type_stack->follow_types ((yyvsp[(1) - (2)].tval));
+                { (yyval.tval) = type_stack->follow_types ((yyvsp[-1].tval));
 		  write_exp_elt_opcode (pstate, OP_TYPE);
 		  write_exp_elt_type (pstate, (yyval.tval));
 		  write_exp_elt_opcode (pstate, OP_TYPE);
 		}
+#line 2118 "d-exp.c.tmp"
     break;
 
   case 100:
-
-/* Line 1455 of yacc.c  */
 #line 624 "d-exp.y"
-    { type_stack->push (tp_pointer); }
+                { type_stack->push (tp_pointer); }
+#line 2124 "d-exp.c.tmp"
     break;
 
   case 101:
-
-/* Line 1455 of yacc.c  */
 #line 626 "d-exp.y"
-    { type_stack->push (tp_pointer); }
+                { type_stack->push (tp_pointer); }
+#line 2130 "d-exp.c.tmp"
     break;
 
   case 102:
-
-/* Line 1455 of yacc.c  */
 #line 628 "d-exp.y"
-    { type_stack->push ((yyvsp[(2) - (3)].typed_val_int).val);
+                { type_stack->push ((yyvsp[-1].typed_val_int).val);
 		  type_stack->push (tp_array); }
+#line 2137 "d-exp.c.tmp"
     break;
 
   case 103:
-
-/* Line 1455 of yacc.c  */
 #line 631 "d-exp.y"
-    { type_stack->push ((yyvsp[(2) - (4)].typed_val_int).val);
+                { type_stack->push ((yyvsp[-2].typed_val_int).val);
 		  type_stack->push (tp_array); }
+#line 2144 "d-exp.c.tmp"
     break;
 
   case 104:
-
-/* Line 1455 of yacc.c  */
 #line 637 "d-exp.y"
-    { (yyval.tval) = (yyvsp[(1) - (1)].tsym).type; }
+                { (yyval.tval) = (yyvsp[0].tsym).type; }
+#line 2150 "d-exp.c.tmp"
     break;
 
 
+#line 2154 "d-exp.c.tmp"
 
-/* Line 1455 of yacc.c  */
-#line 2378 "d-exp.c.tmp"
       default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -2474,14 +2227,12 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -2494,39 +2245,42 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -2539,6 +2293,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -2546,7 +2301,8 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+
+#if !defined yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2556,35 +2312,37 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
 
+  return yyresult;
+}
 
-/* Line 1675 of yacc.c  */
 #line 640 "d-exp.y"
 
 
@@ -2593,10 +2351,10 @@ yyreturn:
 static int
 type_aggregate_p (struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	  || TYPE_CODE (type) == TYPE_CODE_UNION
-	  || TYPE_CODE (type) == TYPE_CODE_MODULE
-	  || (TYPE_CODE (type) == TYPE_CODE_ENUM
+  return (type->code () == TYPE_CODE_STRUCT
+	  || type->code () == TYPE_CODE_UNION
+	  || type->code () == TYPE_CODE_MODULE
+	  || (type->code () == TYPE_CODE_ENUM
 	      && TYPE_DECLARED_CLASS (type)));
 }
 
@@ -3596,4 +3354,3 @@ yyerror (const char *msg)
   error (_("A %s in expression, near `%s'."), msg, pstate->lexptr);
 }
 
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-exp.y ./gdb/d-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-exp.y	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/d-exp.y	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* YACC parser for D expressions, for GDB.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -462,7 +462,7 @@ PrimaryExpression:
 			  /* Check if the qualified name is in the global
 			     context.  However if the symbol has not already
 			     been resolved, it's not likely to be found.  */
-			  if (TYPE_CODE (type) == TYPE_CODE_MODULE)
+			  if (type->code () == TYPE_CODE_MODULE)
 			    {
 			      struct bound_minimal_symbol msymbol;
 			      struct block_symbol sym;
@@ -644,10 +644,10 @@ BasicType:
 static int
 type_aggregate_p (struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	  || TYPE_CODE (type) == TYPE_CODE_UNION
-	  || TYPE_CODE (type) == TYPE_CODE_MODULE
-	  || (TYPE_CODE (type) == TYPE_CODE_ENUM
+  return (type->code () == TYPE_CODE_STRUCT
+	  || type->code () == TYPE_CODE_UNION
+	  || type->code () == TYPE_CODE_MODULE
+	  || (type->code () == TYPE_CODE_ENUM
 	      && TYPE_DECLARED_CLASS (type)));
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dicos-tdep.c ./gdb/dicos-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dicos-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dicos-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent, architecture-independent code for DICOS, for GDB.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dicos-tdep.h ./gdb/dicos-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dicos-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dicos-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent, architecture-independent code for DICOS, for GDB.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dictionary.c ./gdb/dictionary.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dictionary.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dictionary.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Routines for name->symbol lookups in GDB.
    
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
    Inc.
@@ -584,7 +584,7 @@ iter_match_first_hashed (const struct di
   unsigned int hash_index = (name.search_name_hash (lang->la_language)
 			     % DICT_HASHED_NBUCKETS (dict));
   symbol_name_matcher_ftype *matches_name
-    = get_symbol_name_matcher (lang, name);
+    = lang->get_symbol_name_matcher (name);
   struct symbol *sym;
 
   DICT_ITERATOR_DICT (iterator) = dict;
@@ -612,7 +612,7 @@ iter_match_next_hashed (const lookup_nam
 {
   const language_defn *lang = DICT_LANGUAGE (DICT_ITERATOR_DICT (iterator));
   symbol_name_matcher_ftype *matches_name
-    = get_symbol_name_matcher (lang, name);
+    = lang->get_symbol_name_matcher (name);
   struct symbol *next;
 
   for (next = DICT_ITERATOR_CURRENT (iterator)->hash_next;
@@ -640,9 +640,9 @@ insert_symbol_hashed (struct dictionary
 
   /* We don't want to insert a symbol into a dictionary of a different
      language.  The two may not use the same hashing algorithm.  */
-  gdb_assert (SYMBOL_LANGUAGE (sym) == DICT_LANGUAGE (dict)->la_language);
+  gdb_assert (sym->language () == DICT_LANGUAGE (dict)->la_language);
 
-  hash = search_name_hash (SYMBOL_LANGUAGE (sym), sym->search_name ());
+  hash = search_name_hash (sym->language (), sym->search_name ());
   hash_index = hash % DICT_HASHED_NBUCKETS (dict);
   sym->hash_next = buckets[hash_index];
   buckets[hash_index] = sym;
@@ -719,7 +719,7 @@ expand_hashtable (struct dictionary *dic
 /* See dictionary.h.  */
 
 unsigned int
-default_search_name_hash (const char *string0)
+language_defn::search_name_hash (const char *string0) const
 {
   /* The Ada-encoded version of a name P1.P2...Pn has either the form
      P1__P2__...Pn<suffix> or _ada_P1__P2__...Pn<suffix> (where the Pi
@@ -828,7 +828,7 @@ iter_match_next_linear (const lookup_nam
   const struct dictionary *dict = DICT_ITERATOR_DICT (iterator);
   const language_defn *lang = DICT_LANGUAGE (dict);
   symbol_name_matcher_ftype *matches_name
-    = get_symbol_name_matcher (lang, name);
+    = lang->get_symbol_name_matcher (name);
 
   int i, nsyms = DICT_LINEAR_NSYMS (dict);
   struct symbol *sym, *retval = NULL;
@@ -928,7 +928,7 @@ collate_pending_symbols_by_language (con
     {
       for (int i = list_counter->nsyms - 1; i >= 0; --i)
 	{
-	  enum language language = SYMBOL_LANGUAGE (list_counter->symbol[i]);
+	  enum language language = list_counter->symbol[i]->language ();
 	  nsyms[language].push_back (list_counter->symbol[i]);
 	}
     }
@@ -1116,13 +1116,13 @@ void
 mdict_add_symbol (struct multidictionary *mdict, struct symbol *sym)
 {
   struct dictionary *dict
-    = find_language_dictionary (mdict, SYMBOL_LANGUAGE (sym));
+    = find_language_dictionary (mdict, sym->language ());
 
   if (dict == nullptr)
     {
       /* SYM is of a new language that we haven't previously seen.
 	 Create a new dictionary for it.  */
-      dict = create_new_language_dictionary (mdict, SYMBOL_LANGUAGE (sym));
+      dict = create_new_language_dictionary (mdict, sym->language ());
     }
 
   dict_add_symbol (dict, sym);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dictionary.h ./gdb/dictionary.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dictionary.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dictionary.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Routines for name->symbol lookups in GDB.
    
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
    Inc.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/.dir-locals.el ./gdb/.dir-locals.el
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/.dir-locals.el	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/.dir-locals.el	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 ;; Emacs settings.
-;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2012-2021 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
@@ -14,6 +14,10 @@
 ;; You should have received a copy of the GNU General Public License
 ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+;; There are three copies of this file, one in each of gdb/,
+;; gdbserver/, and gdbsupport/.  If you edit any one of these then
+;; please replicate the changes in the other two copies.
+
 (
  (tcl-mode . ((tcl-indent-level . 4)
 	      (tcl-continued-indent-level . 4)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/disable-implicit-rules.mk ./gdb/disable-implicit-rules.mk
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/disable-implicit-rules.mk	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/disable-implicit-rules.mk	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
 # This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/disasm.c ./gdb/disasm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/disasm.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/disasm.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Disassemble support for GDB.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -781,6 +781,11 @@ gdb_disassembler::gdb_disassembler (stru
   disassemble_init_for_target (&m_di);
 }
 
+gdb_disassembler::~gdb_disassembler ()
+{
+  disassemble_free_target (&m_di);
+}
+
 int
 gdb_disassembler::print_insn (CORE_ADDR memaddr,
 			      int *branch_delay_insns)
@@ -908,7 +913,9 @@ gdb_buffered_insn_length (struct gdbarch
   gdb_buffered_insn_length_init_dis (gdbarch, &di, insn, max_len, addr,
 				     &disassembler_options_holder);
 
-  return gdbarch_print_insn (gdbarch, addr, &di);
+  int result = gdbarch_print_insn (gdbarch, addr, &di);
+  disassemble_free_target (&di);
+  return result;
 }
 
 char *
@@ -1128,8 +1135,9 @@ disassembler_options_completer (struct c
 
 /* Initialization code.  */
 
+void _initialize_disasm ();
 void
-_initialize_disasm (void)
+_initialize_disasm ()
 {
   struct cmd_list_element *cmd;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/disasm.h ./gdb/disasm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/disasm.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/disasm.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Disassemble support for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -47,6 +47,10 @@ public:
     : gdb_disassembler (gdbarch, file, dis_asm_read_memory)
   {}
 
+  ~gdb_disassembler ();
+
+  DISABLE_COPY_AND_ASSIGN (gdb_disassembler);
+
   int print_insn (CORE_ADDR memaddr, int *branch_delay_insns = NULL);
 
   /* Return the gdbarch of gdb_disassembler.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/disasm-selftests.c ./gdb/disasm-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/disasm-selftests.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/disasm-selftests.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for disassembler for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -19,8 +19,6 @@
 
 #include "defs.h"
 #include "disasm.h"
-
-#if GDB_SELF_TEST
 #include "gdbsupport/selftest.h"
 #include "selftest-arch.h"
 #include "gdbarch.h"
@@ -208,15 +206,13 @@ memory_error_test (struct gdbarch *gdbar
 }
 
 } // namespace selftests
-#endif /* GDB_SELF_TEST */
 
+void _initialize_disasm_selftests ();
 void
-_initialize_disasm_selftests (void)
+_initialize_disasm_selftests ()
 {
-#if GDB_SELF_TEST
   selftests::register_test_foreach_arch ("print_one_insn",
 					 selftests::print_one_insn_test);
   selftests::register_test_foreach_arch ("memory_error",
 					 selftests::memory_error_test);
-#endif
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-lang.c ./gdb/d-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-lang.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/d-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* D language support routines for GDB, the GNU debugger.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -56,15 +56,6 @@ d_demangle (const char *symbol, int opti
   return gdb_demangle (symbol, options | DMGL_DLANG);
 }
 
-/* la_sniff_from_mangled_name implementation for D.  */
-
-static int
-d_sniff_from_mangled_name (const char *mangled, char **demangled)
-{
-  *demangled = d_demangle (mangled, 0);
-  return *demangled != NULL;
-}
-
 /* Table mapping opcodes into strings for printing operators
    and precedences of the operators.  */
 static const struct op_print d_op_print_tab[] =
@@ -133,79 +124,14 @@ enum d_primitive_types {
   nr_d_primitive_types
 };
 
-/* Implements the la_language_arch_info language_defn routine
-   for language D.  */
-
-static void
-d_language_arch_info (struct gdbarch *gdbarch,
-		      struct language_arch_info *lai)
-{
-  const struct builtin_d_type *builtin = builtin_d_type (gdbarch);
-
-  lai->string_char_type = builtin->builtin_char;
-  lai->primitive_type_vector
-    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_d_primitive_types + 1,
-			      struct type *);
-
-  lai->primitive_type_vector [d_primitive_type_void]
-    = builtin->builtin_void;
-  lai->primitive_type_vector [d_primitive_type_bool]
-    = builtin->builtin_bool;
-  lai->primitive_type_vector [d_primitive_type_byte]
-    = builtin->builtin_byte;
-  lai->primitive_type_vector [d_primitive_type_ubyte]
-    = builtin->builtin_ubyte;
-  lai->primitive_type_vector [d_primitive_type_short]
-    = builtin->builtin_short;
-  lai->primitive_type_vector [d_primitive_type_ushort]
-    = builtin->builtin_ushort;
-  lai->primitive_type_vector [d_primitive_type_int]
-    = builtin->builtin_int;
-  lai->primitive_type_vector [d_primitive_type_uint]
-    = builtin->builtin_uint;
-  lai->primitive_type_vector [d_primitive_type_long]
-    = builtin->builtin_long;
-  lai->primitive_type_vector [d_primitive_type_ulong]
-    = builtin->builtin_ulong;
-  lai->primitive_type_vector [d_primitive_type_cent]
-    = builtin->builtin_cent;
-  lai->primitive_type_vector [d_primitive_type_ucent]
-    = builtin->builtin_ucent;
-  lai->primitive_type_vector [d_primitive_type_float]
-    = builtin->builtin_float;
-  lai->primitive_type_vector [d_primitive_type_double]
-    = builtin->builtin_double;
-  lai->primitive_type_vector [d_primitive_type_real]
-    = builtin->builtin_real;
-  lai->primitive_type_vector [d_primitive_type_ifloat]
-    = builtin->builtin_ifloat;
-  lai->primitive_type_vector [d_primitive_type_idouble]
-    = builtin->builtin_idouble;
-  lai->primitive_type_vector [d_primitive_type_ireal]
-    = builtin->builtin_ireal;
-  lai->primitive_type_vector [d_primitive_type_cfloat]
-    = builtin->builtin_cfloat;
-  lai->primitive_type_vector [d_primitive_type_cdouble]
-    = builtin->builtin_cdouble;
-  lai->primitive_type_vector [d_primitive_type_creal]
-    = builtin->builtin_creal;
-  lai->primitive_type_vector [d_primitive_type_char]
-    = builtin->builtin_char;
-  lai->primitive_type_vector [d_primitive_type_wchar]
-    = builtin->builtin_wchar;
-  lai->primitive_type_vector [d_primitive_type_dchar]
-    = builtin->builtin_dchar;
-
-  lai->bool_type_symbol = "bool";
-  lai->bool_type_default = builtin->builtin_bool;
-}
-
 static const char *d_extensions[] =
 {
   ".d", NULL
 };
 
-extern const struct language_defn d_language_defn =
+/* Constant data that describes the D language.  */
+
+extern const struct language_data d_language_data =
 {
   "d",
   "D",
@@ -216,45 +142,142 @@ extern const struct language_defn d_lang
   macro_expansion_no,
   d_extensions,
   &exp_descriptor_c,
-  d_parse,
-  null_post_parser,
-  c_printchar,			/* Print a character constant.  */
-  c_printstr,			/* Function to print string constant.  */
-  c_emit_char,			/* Print a single char.  */
-  c_print_type,			/* Print a type using appropriate syntax.  */
-  c_print_typedef,		/* Print a typedef using appropriate
-				   syntax.  */
-  d_val_print,			/* Print a value using appropriate syntax.  */
-  c_value_print,		/* Print a top-level value.  */
-  default_read_var_value,	/* la_read_var_value */
-  NULL,				/* Language specific skip_trampoline.  */
   "this",
   false,			/* la_store_sym_names_in_linkage_form_p */
-  d_lookup_symbol_nonlocal,
-  basic_lookup_transparent_type,
-  d_demangle,			/* Language specific symbol demangler.  */
-  d_sniff_from_mangled_name,
-  NULL,				/* Language specific
-				   class_name_from_physname.  */
   d_op_print_tab,		/* Expression operators for printing.  */
   1,				/* C-style arrays.  */
   0,				/* String lower bound.  */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  d_language_arch_info,
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  c_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
 
+/* Class representing the D language.  */
+
+class d_language : public language_defn
+{
+public:
+  d_language ()
+    : language_defn (language_d, d_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    const struct builtin_d_type *builtin = builtin_d_type (gdbarch);
+
+    lai->string_char_type = builtin->builtin_char;
+    lai->primitive_type_vector
+      = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_d_primitive_types + 1,
+				struct type *);
+
+    lai->primitive_type_vector [d_primitive_type_void]
+      = builtin->builtin_void;
+    lai->primitive_type_vector [d_primitive_type_bool]
+      = builtin->builtin_bool;
+    lai->primitive_type_vector [d_primitive_type_byte]
+      = builtin->builtin_byte;
+    lai->primitive_type_vector [d_primitive_type_ubyte]
+      = builtin->builtin_ubyte;
+    lai->primitive_type_vector [d_primitive_type_short]
+      = builtin->builtin_short;
+    lai->primitive_type_vector [d_primitive_type_ushort]
+      = builtin->builtin_ushort;
+    lai->primitive_type_vector [d_primitive_type_int]
+      = builtin->builtin_int;
+    lai->primitive_type_vector [d_primitive_type_uint]
+      = builtin->builtin_uint;
+    lai->primitive_type_vector [d_primitive_type_long]
+      = builtin->builtin_long;
+    lai->primitive_type_vector [d_primitive_type_ulong]
+      = builtin->builtin_ulong;
+    lai->primitive_type_vector [d_primitive_type_cent]
+      = builtin->builtin_cent;
+    lai->primitive_type_vector [d_primitive_type_ucent]
+      = builtin->builtin_ucent;
+    lai->primitive_type_vector [d_primitive_type_float]
+      = builtin->builtin_float;
+    lai->primitive_type_vector [d_primitive_type_double]
+      = builtin->builtin_double;
+    lai->primitive_type_vector [d_primitive_type_real]
+      = builtin->builtin_real;
+    lai->primitive_type_vector [d_primitive_type_ifloat]
+      = builtin->builtin_ifloat;
+    lai->primitive_type_vector [d_primitive_type_idouble]
+      = builtin->builtin_idouble;
+    lai->primitive_type_vector [d_primitive_type_ireal]
+      = builtin->builtin_ireal;
+    lai->primitive_type_vector [d_primitive_type_cfloat]
+      = builtin->builtin_cfloat;
+    lai->primitive_type_vector [d_primitive_type_cdouble]
+      = builtin->builtin_cdouble;
+    lai->primitive_type_vector [d_primitive_type_creal]
+      = builtin->builtin_creal;
+    lai->primitive_type_vector [d_primitive_type_char]
+      = builtin->builtin_char;
+    lai->primitive_type_vector [d_primitive_type_wchar]
+      = builtin->builtin_wchar;
+    lai->primitive_type_vector [d_primitive_type_dchar]
+      = builtin->builtin_dchar;
+
+    lai->bool_type_symbol = "bool";
+    lai->bool_type_default = builtin->builtin_bool;
+  }
+
+  /* See language.h.  */
+  bool sniff_from_mangled_name (const char *mangled,
+				char **demangled) const override
+  {
+    *demangled = d_demangle (mangled, 0);
+    return *demangled != NULL;
+  }
+
+  /* See language.h.  */
+
+  char *demangle (const char *mangled, int options) const override
+  {
+    return d_demangle (mangled, options);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    c_print_type (type, varstring, stream, show, level, flags);
+  }
+
+  /* See language.h.  */
+
+  void value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const override
+  {
+    return d_value_print_inner (val, stream, recurse, options);
+  }
+
+  /* See language.h.  */
+
+  struct block_symbol lookup_symbol_nonlocal
+	(const char *name, const struct block *block,
+	 const domain_enum domain) const override
+  {
+    return d_lookup_symbol_nonlocal (this, name, block, domain);
+  }
+
+  /* See language.h.  */
+
+  int parser (struct parser_state *ps) const override
+  {
+    return d_parse (ps);
+  }
+};
+
+/* Single instance of the D language class.  */
+
+static d_language d_language_defn;
+
 /* Build all D language types for the specified architecture.  */
 
 static void *
@@ -314,14 +337,11 @@ build_d_types (struct gdbarch *gdbarch)
     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
 		       "ireal", gdbarch_long_double_format (gdbarch));
   builtin_d_type->builtin_cfloat
-    = arch_complex_type (gdbarch, "cfloat",
-			 builtin_d_type->builtin_float);
+    = init_complex_type ("cfloat", builtin_d_type->builtin_float);
   builtin_d_type->builtin_cdouble
-    = arch_complex_type (gdbarch, "cdouble",
-			 builtin_d_type->builtin_double);
+    = init_complex_type ("cdouble", builtin_d_type->builtin_double);
   builtin_d_type->builtin_creal
-    = arch_complex_type (gdbarch, "creal",
-			 builtin_d_type->builtin_real);
+    = init_complex_type ("creal", builtin_d_type->builtin_real);
 
   /* Character types.  */
   builtin_d_type->builtin_char
@@ -344,8 +364,9 @@ builtin_d_type (struct gdbarch *gdbarch)
   return (const struct builtin_d_type *) gdbarch_data (gdbarch, d_type_data);
 }
 
+void _initialize_d_language ();
 void
-_initialize_d_language (void)
+_initialize_d_language ()
 {
   d_type_data = gdbarch_data_register_post_init (build_d_types);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-lang.h ./gdb/d-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-lang.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/d-lang.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* D language support definitions for GDB, the GNU debugger.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -76,12 +76,10 @@ extern struct block_symbol d_lookup_symb
 extern struct block_symbol d_lookup_nested_symbol (struct type *, const char *,
 						   const struct block *);
 
-/* Defined in d-valprint.c  */
+/* Implement la_value_print_inner for D.  */
 
-extern void d_val_print (struct type *type,
-			 int embedded_offset, CORE_ADDR address,
-			 struct ui_file *stream, int recurse,
-			 struct value *val,
-			 const struct value_print_options *options);
+extern void d_value_print_inner (struct value *val,
+				 struct ui_file *stream, int recurse,
+				 const struct value_print_options *options);
 
 #endif /* !defined (D_LANG_H) */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-namespace.c ./gdb/d-namespace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-namespace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/d-namespace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Helper routines for D support in GDB.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -131,7 +131,7 @@ d_lookup_symbol (const struct language_d
 	    return {};
 
 	  type = check_typedef (TYPE_TARGET_TYPE (SYMBOL_TYPE (lang_this.symbol)));
-	  classname = TYPE_NAME (type);
+	  classname = type->name ();
 	  nested = name;
 	}
       else
@@ -308,7 +308,7 @@ d_lookup_nested_symbol (struct type *par
 
   parent_type = check_typedef (parent_type);
 
-  switch (TYPE_CODE (parent_type))
+  switch (parent_type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/agentexpr.texi ./gdb/doc/agentexpr.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/agentexpr.texi	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/agentexpr.texi	2021-05-21 01:57:24.000000000 +0000
@@ -7,7 +7,7 @@
 
 @c This file is part of the GDB manual.
 @c
-@c Copyright (C) 2003-2020 Free Software Foundation, Inc.
+@c Copyright (C) 2003--2021 Free Software Foundation, Inc.
 @c
 @c See the file gdb.texinfo for copying conditions.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/all-cfg.texi ./gdb/doc/all-cfg.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/all-cfg.texi	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/all-cfg.texi	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 @c GDB MANUAL configuration file.  
 @c
-@c Copyright (C) 1993-2020 Free Software Foundation, Inc.
+@c Copyright (C) 1993--2021 Free Software Foundation, Inc.
 @c
 @c NOTE: While the GDB manual is configurable (by changing these
 @c switches), its configuration is ***NOT*** automatically tied in to
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/annotate.info ./gdb/doc/annotate.info
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/annotate.info	2020-03-07 02:11:41.000000000 +0000
+++ ./gdb/doc/annotate.info	2021-05-21 02:00:21.000000000 +0000
@@ -1,7 +1,7 @@
-This is annotate.info, produced by makeinfo version 6.3 from
+This is annotate.info, produced by makeinfo version 6.5 from
 annotate.texinfo.
 
-Copyright (C) 1994-2020 Free Software Foundation, Inc.
+Copyright (C) 1994-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -16,7 +16,7 @@ END-INFO-DIR-ENTRY
 
    This file documents GDB's obsolete annotations.
 
-   Copyright (C) 1994-2020 Free Software Foundation, Inc.
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/annotate.texinfo ./gdb/doc/annotate.texinfo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/annotate.texinfo	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/annotate.texinfo	2021-05-21 01:57:24.000000000 +0000
@@ -27,7 +27,7 @@
 @c cost.  Having a smaller cheaper manual helps the GNU Press with its sales.
 
 @copying
-Copyright @copyright{} 1994-2020 Free Software Foundation, Inc.
+Copyright @copyright{} 1994--2021 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/ChangeLog ./gdb/doc/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/ChangeLog	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/ChangeLog	2021-05-21 01:57:24.000000000 +0000
@@ -1,11 +1,246 @@
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+2021-01-01  Joel Brobecker  <brobecker@adacore.com>
 
 	* gdb.texinfo, refcard.tex: Update copyright year range.
 
-2019-12-15  Christian Biesinger  <cbiesinger@google.com>
+2020-12-26  Jeanne Rasata <jeanne@fsf.org>  (tiny change)
+
+	* gdb.texinfo: Fix capitalization in many sections following CMS
+	style-guide rules, remove period at end of a few headings.
+
+2020-11-29  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR python/26974
+	* python.texi: Fix docu for static members argument.
+
+2020-08-25  Shahab Vahedi  <shahab@synopsys.com>
+
+	* gdb.texinfo (Synopsys ARC): Document LP_START, LP_END and BTA.
+
+2020-08-25  Shahab Vahedi  <shahab@synopsys.com>
+
+	* gdb.texinfo (Synopsys ARC): Update the documentation for ARC
+	Features.
+
+2020-08-07  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.texinfo (Ravenscar Profile): Add examples.
+	Document runtime initialization limitation.
+
+2020-08-04  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* gdb.texinfo (Contributors): Add information for the eBPF
+	support.
+	(BPF): New section.
+
+2020-07-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python.texi (Unwinding Frames in Python): Update descriptions
+	for PendingFrame.read_register and
+	gdb.UnwindInfo.add_saved_register.
+	(Frames In Python): Update description of Frame.read_register.
+
+2020-07-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python.texi (Registers In Python): Document new find function.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.texinfo (Maintenance Commands): Add documentation for
+	new command "maintenance print core-file-backed-mappings".
+
+2020-07-22  Reuben Thomas  <rrt@sc3d.org>
+
+	* gdb.texinfo (Remote Protocol, Overview): Correct the description
+	of which remote protocol commands are mandatory for a stub to
+	implement.
+
+2020-07-20  Ludovic CourtÃ¨s  <ludo@gnu.org>
+
+	* doc/guile.texi (Guile Introduction): Mention Guile 3.0.
+
+2020-07-20  Ludovic CourtÃ¨s  <ludo@gnu.org>
+
+	* guile.texi (Memory Ports in Guile): Mark
+	'memory-port-read-buffer-size',
+	'set-memory-port-read-buffer-size!',
+	'memory-port-write-buffer-size',
+	'set-memory-port-read-buffer-size!' as deprecated.
+	(Guile Introduction): Clarify which Guile
+	versions are supported.
+
+2020-07-13 Paul Carroll <pcarroll@codesourcery.com>
+
+	PR gdb/25716
+
+	* gdb.texinfo (Frame Apply): Remove anchor for 'frame
+	apply' and adjust xrefs to it.
+
+2020-07-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.texinfo (Attach): Update exec-file-mismatch doc.
+
+2020-07-08  Hannes Domani  <ssbssa@yahoo.de>
+
+	* gdb.texinfo: Document Windows drive conversion of
+	'set auto-load scripts-directory'.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.texi (Registers): Add @anchor for 'info registers
+	<reggroup>' command.
+	* python.texi (Architectures In Python): Document new
+	register_groups method.
+	(Registers In Python): Document two new object types related to
+	register groups.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python.texi (Python API): Add new section to the menu.
+	(Frames In Python): Add new @anchor.
+	(Architectures In Python): Document new registers method.
+	(Registers In Python): New section.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python.texi (Unwinding Frames in Python): Document
+	PendingFrame.architecture method.
+
+2020-06-26  Eli Zaretskii  <eliz@gnu.org>
+
+	* gdb.texinfo (Shell Commands): More accurate description of use
+	of $SHELL.  Reported by Sandra Loosemore <sandra@codesourcery.com>.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.texinfo (Maintenance Commands): Document new 'maint print
+	xml-desc' command.
+
+2020-06-22  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.texinfo (Command aliases default args): New node documenting
+	how to use default args for a command using aliases.
+	(Aliases): Document the new 'DEFAULT-ARGS...' option.
+	(Help): Update help aliases text and describe when full alias
+	definition is provided.
+
+2020-06-11  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.texinfo (Index Files): Reword.  Remove Ada limitation.
+
+2020-06-10  Jonny Grant  <jg@jguk.org>
 
-	* gdb.texinfo (Maintenance Commands): Update documentation for
-	maint set worker-threads to say the default is 0.
+	* gdb.texinfo: Remove broken links Previous and Up from
+	contents.
+
+2020-05-23  Tom Tromey  <tom@tromey.com>
+
+	* gdb.texinfo (Output Styling): Don't mention completion styling.
+	(Editing): Don't mention readline completion styling.
+
+2020-05-23  Tom Tromey  <tom@tromey.com>
+
+	* gdb.texinfo (Output Styling): Mention completion styling.
+	(Editing): Mention readline completion styling.
+
+2020-05-19  Pedro Alves  <palves@redhat.com>
+
+	* gdb.texinfo (Attach): Update exec-file-mismatch description to
+	mention build IDs.
+	(Separate Debug Files): Add "build id" anchor.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.texinfo (Help): Document the help and apropos changes.
+	(Aliases): Document new meaning of -a abbreviation flag.
+
+2020-05-05  Kamil Rytarowski  <n54@gmx.com>
+
+	* gdb.texinfo (info proc, info proc cmdline, info proc cwd)
+	(info proc exe, info proc mappings, info proc stat): Mention
+	NetBSD support.
+
+2020-04-28  Tom Tromey  <tom@tromey.com>
+
+	* python.texi (Commands In Python): Document gdb.COMMAND_TUI.
+
+2020-04-27  Tom Tromey  <tromey@adacore.com>
+
+	* python.texi (Types In Python): Mention missing fields.  Add
+	dynamic type example.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	PR python/23662:
+	* python.texi (Types In Python): Document new features.
+
+2020-04-15  Artur Shepilko  <nomadbyte@gmail.com>
+
+	* gdb.texinfo: Transform @var{[host]} to [@var{host}]; this
+	clears makeinfo warnings.
+	* python.texi: Add a missing period trailing an @xref{} clause;
+	this clears a makeinfo warning.
+
+2020-03-06  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.texinfo: Fix "the the".
+
+2020-03-04  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.texinfo: Remove trailing "done." in "Reading symbols from" lines.
+	* python.texi: Same.
+
+2020-03-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.texinfo (Command History): Extend description for
+	GDBHISTFILE and GDBHISTSIZE, add detail about the filename for
+	'set history filename' being optional.  Describe the effect of an
+	empty history filename on 'set history save on'.
+
+2020-02-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.texinfo (Threads): Fix alignment in 'info threads' example
+	output.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* python.texi (Python API): Add menu item.
+	(TUI Windows In Python): New node.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	PR tui/17850:
+	* gdb.texinfo (TUI Commands): Document horizontal layouts.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* gdb.texinfo (TUI Overview): Mention user layouts.
+	(TUI Commands): Document "tui new-layout".
+
+2020-01-26  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.texinfo (M68K Features): Document floating-point feature
+	correspondence.
+
+2020-01-25  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.texinfo (Attach): Document the new option and the
+	set/show commands.
+	(Connecting): Reference the exec-file-mismatch option.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* gdb.texinfo (Starting): Say "current inferior not connected"
+	instead of "GDB not connected".
+	(Inferiors and Programs): Rename node to ...
+	(Inferiors Connections and Programs): ... this.  Update all
+	references.  Talk about multiple target connections.  Update "info
+	inferiors" info to mention the connections column.  Describe "info
+	connections".  Document "add-inferior -no-connection".
+	* guile.texi, python.texi: Update cross references.
+
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdb.texinfo, refcard.tex: Update copyright year range.
 
 2019-12-14  Andrew Burgess  <andrew.burgess@embecosm.com>
 
@@ -884,6 +1119,10 @@
 	* gdb.texinfo (Choosing Target Byte Order): Document endianness
 	selection details with the `set endian auto' mode.
 
+2018-05-31  Alan Hayward  <alan.hayward@arm.com>
+
+	* gdb.texinfo: Describe SVE feature.
+
 2018-05-04  Tom Tromey  <tom@tromey.com>
 
 	PR python/22731:
@@ -1287,6 +1526,18 @@
 	(GDB/MI Async Records): Update documentation of library-loaded with new
 	field.
 
+2017-03-20  Artemiy Volkov  <artemiyv@acm.org>
+
+	PR gdb/14441
+	* doc/gdb.texinfo (C Plus Plus Expressions): Mention that GDB
+	supports both lvalue and rvalue references.
+
+2017-03-20  Artemiy Volkov  <artemiyv@acm.org>
+
+	PR gdb/14441
+	* python.texi (Types in Python): Add TYPE_CODE_RVALUE_REF to
+	table of constants.
+
 2017-03-16  Doug Evans  <dje@google.com>
 
 	* guile.texi (Lazy Strings In Guile): Mention arrays.
@@ -1302,6 +1553,11 @@
 	* Memory Protection Extensions: Add information about inferior
 	calls.
 
+2017-02-28  Peter Bergner  <bergner@vnet.ibm.com>
+
+	* gdb.texinfo: Document new set/show disassembler-options
+	commands.
+
 2017-02-20  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	* gdb.texinfo (Print Settings, Tail Call Frames): Rename DW_OP_GNU_*,
@@ -1935,6 +2191,15 @@
 	* gdb.texinfo (Selection): Update documentation for 'frame'
 	command.
 
+2015-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.texinfo (TUI): Restructure documentation on TUI layout and
+	focus commands.
+
+2015-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.texinfo (TUI): Add comma after @xref.
+
 2015-07-02  Markus Metzger  <markus.t.metzger@intel.com>
 
 	* gdb.texinfo (Maintenance Commands): Document "maint btrace"
@@ -2337,6 +2602,11 @@
 
 2014-12-02  Nick Bull  <nicholaspbull@gmail.com>
 
+	* observer.texi (inferior_call_pre, inferior_call_post)
+	(memory_changed, register_changed): New observers.
+
+2014-12-02  Nick Bull  <nicholaspbull@gmail.com>
+
 	* python.texi (Events In Python): Document new events
 	InferiorCallPreEvent, InferiorCallPostEvent, MemoryChangedEvent
 	and RegisterChangedEvent.
@@ -2456,6 +2726,10 @@
 	* gdb.texinfo (Signaling) <signal command>: Explain what happens
 	with multi-threaded programs.
 
+2014-07-19  Ajit Agarwal  <ajitkum@xilinx.com>
+
+	* gdb.texinfo (MicroBlaze Features): Added.
+
 2014-06-27  Yao Qi  <yao@codesourcery.com>
 
 	* gdb.texinfo (Maintenance Commands): Update the output of
@@ -3655,6 +3929,12 @@
 
 	* gdb.texinfo (GDB/MI Catchpoint Commands): New section.
 
+2012-12-12  Paul Koning  <paul_koning@dell.com>
+
+	Add support for Python 3.
+	* gdb.texinfo (Inferior.read_memory): Mention that the return
+	value is a memoryview object if Python 3.
+
 2012-12-11  Pedro Alves  <palves@redhat.com>
 
 	* gdb.texinfo: Remove all mentions of Unixware throughout.
@@ -6118,6 +6398,10 @@
 	* observer.texi (solib_unloaded): Document explicitly the fact that
 	this observer is called before the associated symbols are unloaded.
 
+2009-09-21  Jie Zhang  <jie.zhang@analog.com>
+
+	* gdb.texinfo: Escape "{" and "}".
+
 2009-09-19  Vladimir Prus  <vladimir@codesourcery.com>
 
 	* gdb.texinfo (GDB/MI Stack Manipulation): Document
@@ -7288,6 +7572,11 @@
 	* gdb.texinfo (Thread Commands): Document
 	-thread-info.  Remove -thread-list-all-threads.
 
+2008-03-14  Vladimir Prus  <vladimir@codesourcery.com>
+
+	Implement MI notification for new threads.
+	* observer.texi (new_thread): Document.
+
 2008-03-14  Pedro Alves  <pedro@codesourcery.com>
 	    Sandra Loosemore  <sandra@codesourcery.com>
 
@@ -7545,6 +7834,11 @@
 	frame_unwind_register_unsigned in examples instead of
 	frame_unwind_unsigned_register.
 
+2007-10-16  Gaius Mulley  <gaius@glam.ac.uk>
+
+        * gdb.texinfo: Add TSIZE definition, removed statement about
+	unbounded arrays being unimplemented.
+
 2007-10-15  Daniel Jacobowitz  <dan@codesourcery.com>
 
 	* gdb.texinfo (Predefined Target Types): Add int128
@@ -7820,6 +8114,10 @@
 	* gdb.texinfo (GDB/MI Variable Objects): Document
 	frozen variables objects.
 
+2007-04-13  Paul Brook  <paul@codesourcery.com>
+
+	* gdb.texinfo: Document ieee_single and ieee_double target types.
+
 2007-04-13  Daniel Jacobowitz  <dan@codesourcery.com>
 
 	* gdb.texinfo (Memory): Reference Remote Debugging chapter.
@@ -7831,6 +8129,10 @@
 	and "show remotedevice".
 	(Embedded Processors): Delete H8/300, H8/500, and SH nodes.
 
+2007-04-11  Steve Ellcey  <sje@cup.hp.com>
+
+	* gdbint.texinfo (warning flags): Add -Wno-char-subscripts.
+
 2007-04-11  Bob Wilson  <bob.wilson@acm.org>
 
 	* gdb.texinfo (Contributors, Continuing and Stepping)
@@ -8279,6 +8581,11 @@
 	remote supported-packets.
 	(General Query Packets): Document qSupported packet.
 
+2006-06-13  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* gdb.texinfo (system): Document behaviour with zero length
+	string.
+
 2006-06-10  Sandra Loosemore <sandra@codesourcery.com>
 
 	* gdb.texinfo (File-I/O overview): Copy edit for grammar, spelling,
@@ -8427,6 +8734,10 @@
 
 	* gdb.texinfo (Overview): Add an index entry to "empty response".
 
+2006-03-29  Steve Ellcey  <sje@cup.hp.com>
+
+	* gdb.texinfo: Remove gdbserve.nlm documentation.
+
 2006-03-28  Jim Blandy  <jimb@codesourcery.com>
 
 	* gdbint.texinfo (Prologue Analysis): New section.
@@ -9026,6 +9337,10 @@
 	* gdb.texinfo (General Query Packets): Fix texinfo compile warning and
 	error.
 
+2005-03-07  Joel Brobecker  <brobecker@adacore.com>
+
+	* observer.texi (executable_changed): New observer.
+
 2005-02-03  Kevin Buettner  <kevinb@redhat.com>
 
 	* gdb.texinfo (General Query Packets): Document qGetTLSAddr packet.
@@ -9195,6 +9510,11 @@
 	* gdbint.texinfo (Host Definition): Delete description of
 	FCLOSE_PROVIDED and GETENV_PROVIDED.
 
+2004-08-11  Joel Brobecker  <brobecker@gnat.com>
+
+	* gdbint.texinfo (Host Definition): Remove documentation for
+	USE_O_NOCTTY, no longer used.
+
 2004-08-05  Mark Kettenis  <kettenis@chello.nl>
 
 	* gdbint.texinfo (Host Definition): Delete description of
@@ -10169,6 +10489,10 @@
 	* gdbint.texinfo: Ditto.
 	* gdb.texinfo: Ditto.
 
+2002-12-29  Kazu Hirata  <kazu@cs.umass.edu>
+
+	* fdl.texi: Revert the last change.
+
 2002-12-22  Mark Kettenis  <kettenis@gnu.org>
 
 	* gdbint.texinfo (Target Architecture Definition): Update
@@ -10288,6 +10612,10 @@
 
 	* gdb.texinfo: Add character set documentation.
 
+2002-09-20  George Helffrich  <george@gly.bris.ac.uk>
+
+	* gdb.texinfo: Document edit command.
+
 2002-09-19  Andrew Cagney  <ac131313@redhat.com>
 
 	* gdb.texinfo (Packets): Revise `z' and `Z' packet documentation.
@@ -10487,6 +10815,10 @@
 	* gdbint.texinfo (Releasing GDB): Rename ``Obsoleting any code''
 	to ``Obsoleting code''.  Revise.
 
+2002-05-21  Jason Thorpe  <thorpej@wasabisystems.com>
+
+	* gdbint.texinfo: Document new generic OS ABI framework.
+
 2002-05-17  Jim Blandy  <jimb@redhat.com>
 
 	* gdb.texinfo (C Preprocessor Macros): New chapter.
@@ -10623,6 +10955,11 @@
 	* Makefile.in (gdb.info): Add explicit path to gdb.texinfo.
 	Remove reference to 3.12.
 
+2002-02-23  Paul Eggert  <eggert@twinsun.com>
+
+	* Makefile.in (GDBvn.texi): Change "head -1" to "sed q", since
+	POSIX 1003.1-2001 no longer allows "head -1".
+
 2002-02-23  Andrew Cagney  <ac131313@redhat.com>
 
 	* gdbint.texinfo: Include fdl.texi.
@@ -10662,6 +10999,11 @@
 	'_ovly_debug_event', which allows GDB to keep better track
 	of overlays.
 
+2002-02-06  Richard Earnshaw  <rearnsha@arm.com>
+
+	* gdbint.texinfo (FLOAT_INFO): Mark as deprecated.
+	(PRINT_FLOAT_INFO): Document it.
+
 2002-02-03  Eli Zaretskii  <eliz@gnu.org>
 
 	* gdb.texinfo (Memory Region Attributes): Fix the wording.
@@ -11489,6 +11831,10 @@ Thu Oct 14 21:17:17 1999  Andrew Cagney
 
 	* gdbint.texinfo (Target Architecture Definition): Add PARM_BOUNDARY.
 
+1999-10-07  Jim Blandy  <jimb@zwingli.cygnus.com>
+
+	* gdbint.texinfo (SYMBOLS_CAN_START_WITH_DOLLAR): Document.
+
 1999-10-05  Stan Shebs  <shebs@andros.cygnus.com>
 
 	From Dmitry Sivachenko <demon@gpad.ac.ru>:
@@ -11593,6 +11939,10 @@ Wed Aug 11 13:18:14 1999  Andrew Cagney
 	* Makefile.in: Rename inc-hist.texi to inc-hist.texinfo.
 	* gdb.texinfo: Ditto.
 
+Sun Aug  8 12:06:47 1999  Fred Fish  <fnf@cygnus.com>
+
+	* gdbint.texinfo (find_sym_fns): This replaces symfile_init.
+
 1999-08-06  Tom Tromey  <tromey@cygnus.com>
 
 	* gdb.texinfo (KOD): New node.
@@ -11914,6 +12264,11 @@ Mon Dec  9 12:23:32 1996  Roland Pesch
 
 	* gdb.texinfo, refcard.tex: Restore author credit
 
+Wed Oct  2 22:07:16 1996  Fred Fish  <fnf@cygnus.com>
+
+	* gdbint.texinfo: Document that SIGTRAMP_START and SIGTRAMP_END
+	are macros that take an single argument.
+
 Wed Oct  2 22:01:36 1996  Fred Fish  <fnf@fishfood.ninemoons.com>
 
 	* gdbint.texinfo (SIGTRAMP_START, SIGTRAMP_END): Update
@@ -12020,6 +12375,10 @@ Wed Sep 20 13:14:10 1995  Ian Lance Tayl
 	* Makefile.in (maintainer-clean): New target, synonym for
 	realclean.
 
+Wed Sep 20 08:16:03 1995  steve chamberlain  <sac@slash.cygnus.com>
+
+	* gdbint.texinfo (GETENV_PROVIDED, FCLOSE_PROVIDED): Document.
+
 Thu Aug  3 10:45:37 1995  Fred Fish  <fnf@cygnus.com>
 
 	* Update all FSF addresses except those in COPYING* files.
@@ -12872,6 +13231,17 @@ Thu Apr 29 09:36:25 1993  Jim Kingdon  (
 
 	* gdb.texinfo (Environment): Mention pitfall with .cshrc.
 
+Thu Apr 29 00:03:59 1993  Fred Fish  (fnf@cygnus.com)
+
+	* gdbint.texinfo (LONG_LONG):  Replace with CC_HAS_LONG_LONG.
+	Add PRINTF_HAS_LONG_LONG references.
+
+Wed Apr 28 11:39:18 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)
+
+	* gdb.texinfo: Make node "Shell Commands" unconditional; describe
+	`set demangle-style arm' (not cfront); mention can type `q' to
+	discard output, when gdb pages.
+
 Tue Apr 27 14:02:57 1993  Jim Kingdon  (kingdon@cygnus.com)
 
 	* gdbint.texinfo (new node Debugging GDB, elsewhere):
@@ -12928,6 +13298,10 @@ Fri Apr  2 16:55:13 1993  Jim Kingdon  (
 
 	* stabs.texinfo: Fixes about N_SO.
 
+Mon Mar 29 15:03:25 1993  Fred Fish  (fnf@cygnus.com)
+
+	* gdbinit.texinfo:  Document renaming of tm-29k.h to tm-a29k.h.
+
 Fri Mar 26 18:00:35 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)
 
 	* gdb.texinfo: include list of nonstandard init file names
@@ -12958,6 +13332,11 @@ Tue Mar 23 16:03:24 1993  Roland H. Pesc
 
 	* gdb.texinfo, gdvinv-s.texinfo: formatting improvements.
 
+Tue Feb 23 11:46:11 1993  Mike Stump  (mrs@cygnus.com)
+
+	* stabs.texi: The `this' pointer is now known by the name
+	`this' instead of `$t'.
+
 Fri Mar 19 21:46:50 1993  John Gilmore  (gnu@cygnus.com)
 
 	* gdbint.texinfo:  Doc NO_MMALLOC and NO_MMALLOC_CHECK as
@@ -12995,6 +13374,10 @@ Wed Feb 10 23:59:19 1993  John Gilmore
 
 	* gdbint.texinfo:  Eliminate IBM6000_HOST, document IBM6000_TARGET.
 
+Wed Feb 10 23:42:37 1993  John Gilmore  (gnu@cygnus.com)
+
+	* gdbint.texinfo: Eliminate IBM6000_HOST, document IBM6000_TARGET.
+
 Tue Feb  9 18:26:21 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)
 
 	* gdb.texinfo, gdbinv-s.texi: misc updates
@@ -13033,6 +13416,18 @@ Mon Feb  1 15:35:47 1993  Roland H. Pesc
 	* gdbinv-s.texi:  Mention that Z8000 simulator can simulate Z8001
 	as well as Z8002.
 
+Thu Dec 17 00:44:57 1992  John Gilmore  (gnu@cygnus.com)
+
+	* gdbint.texinfo (Host Conditionals): Remove
+	NAMES_HAVE_UNDERSCORE, SOME_NAMES_HAVE_DOT, document
+	MEM_FNS_DECLARED.
+	(Target Conditionals):  Remove all of the above.
+
+Tue Dec 15 02:01:00 1992  John Gilmore  (gnu@cygnus.com)
+
+	* gdbint.texinfo: SWAP_HOST_AND_TARGET => SWAP_TARGET_AND_HOST.
+	Noticed by Andy Jackson, <arj@cam-orl.co.uk>.
+
 Sat Nov 28 06:51:35 1992  John Gilmore  (gnu@cygnus.com)
 
 	* gdbint.texinfo:  Add sections on clean design and on how to send
@@ -13042,6 +13437,10 @@ Mon Nov  9 23:57:02 1992  John Gilmore
 
 	* gdbint.texinfo:  Add how to declare the result of make_cleanup.
 
+Tue Oct 27 17:08:45 1992  K. Richard Pixley  (rich@cygnus.com)
+
+	* gdbint.texinfo: nm.h now included in defs.h.
+
 Mon Oct 26 11:09:47 1992  John Gilmore  (gnu@cygnus.com)
 
 	* gdb.texinfo:  Fix typo, reported by Karl Berry.
@@ -13050,11 +13449,38 @@ Fri Oct 23 00:41:21 1992  John Gilmore
 
 	* gdb.texinfo:  Add opcodes dir to GDB distribution description.
 
+Wed Oct 21 03:51:01 1992  John Gilmore  (gnu@cygnus.com)
+
+	* gdbint.texinfo:  Improve REGISTER_U_ADDR and USE_PROC_FS doc.
+
+Tue Oct 20 23:27:56 1992  John Gilmore  (gnu@cygnus.com)
+
+	* gdbint.texinfo: Document obsolete STACK_END_ADDR.
+	(all @node commands): Use new form to avoid nitpicking errors.
+	* gdbint.texinfo: Document host/native/target split.
+
+Tue Oct 20 21:32:18 1992  K. Richard Pixley  (rich@sendai.cygnus.com)
+
+	* gdbint.texinfo: add PUSH_DUMMY_FRAME, POP_FRAME.
+
+Fri Oct 16 03:34:01 1992  John Gilmore  (gnu@cygnus.com)
+
+	* gdbint.texinfo: Update GET_LONGJMP_TARGET, L_SET doc.
+
 Sat Oct 10 18:04:58 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
 
 	* gdbint.texinfo: fixed a stray email address (needs @@),
 	added @table @code to node "Native Conditionals"
 
+Thu Oct  8 16:27:45 1992  K. Richard Pixley  (rich@sendai.cygnus.com)
+
+	* gdbint.texinfo: document a few more macros, create new section
+	for native macros.
+
+Thu Oct  1 01:57:56 1992  John Gilmore  (gnu@cygnus.com)
+
+	* gdb.texinfo: Document command hooks.
+
 Tue Sep 22 00:34:15 1992  John Gilmore  (gnu@cygnus.com)
 
 	* gdbint.texinfo:  Describe coding style of GDB.
@@ -13067,6 +13493,19 @@ Tue Sep 15 02:57:09 1992  John Gilmore
 
 	* gdbint.texinfo:  Improve release doc slightly.
 
+Fri Sep 11 18:28:28 1992  Roland H. Pesch  (pesch@fowanton.cygnus.com)
+
+	* gdb.texinfo, gdbinv-m.m4.in, gdbinv-s.m4.in: First pass at doc
+	for two new remote targets---29K using UDI, and Tandem ST2000
+	using STDBUG.
+
+	* all.m4, none.m4: new m4 switch, _ST2000__
+
+	* all.m4: turn on H8/300 stuff for generic manual
+
+	* gdbinv-s.m4.in: remove text on special procedures to continue
+	after explicit call to breakpoint() in serial stubs.
+
 Fri Sep 11 01:34:25 1992  John Gilmore  (gnu@sphagnum.cygnus.com)
 
 	* gdbint.texinfo:  Improve doc of GDB config macros.
@@ -13076,6 +13515,15 @@ Wed Sep  9 16:52:06 1992  John Gilmore
 	* stabs.texinfo:  Remove Bothner's changes for C++ nested types.
 	These will be reinserted when examined.
 
+Fri Sep  4 18:53:57 1992  Roland H. Pesch  (pesch@fowanton.cygnus.com)
+
+	* gdb.texinfo: fix shameful error of agreement reported by
+	jimb@occs.cs.oberlin.edu (Jim Blandy)
+	* gdb.texinfo: remove old partial discussion of remote serial
+	protocol (via serial debug stubs)
+	* gdbinv-m.m4.in, gdbinv-s.m4.in: new section discussing
+	use of serial debug stubs
+
 Mon Aug 24 01:17:55 1992  John Gilmore  (gnu@cygnus.com)
 
 	* gdbint.texinfo:  Make a start at documenting all the #if macros
@@ -13124,6 +13572,10 @@ Fri Aug 14 21:08:47 1992  John Gilmore
 
 	* gdbint.texinfo:  Add section on partial symbol tables.
 
+Fri Jun 19 10:28:05 1992  John Gilmore  (gnu at cygnus.com)
+
+	* gdb.texinfo:  Document new am29k setting.
+
 Sat Jun 20 16:31:10 1992  John Gilmore  (gnu at cygnus.com)
 
 	* gdb.texinfo:  document `set remotedebug' and `set
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/Doxyfile-base.in ./gdb/doc/Doxyfile-base.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/Doxyfile-base.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/Doxyfile-base.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
 # Base doxyfile for GDB.
 # This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/Doxyfile-gdb-api.in ./gdb/doc/Doxyfile-gdb-api.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/Doxyfile-gdb-api.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/Doxyfile-gdb-api.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
 # Doxygen file for GDB internal API.
 # This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/Doxyfile-gdbserver.in ./gdb/doc/Doxyfile-gdbserver.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/Doxyfile-gdbserver.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/Doxyfile-gdbserver.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
 # Doxygen file for a GDBserver cross-reference.
 # This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/Doxyfile-gdb-xref.in ./gdb/doc/Doxyfile-gdb-xref.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/Doxyfile-gdb-xref.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/Doxyfile-gdb-xref.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
 # Doxygen file for a full GDB cross-reference.
 # This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/doxy-index.in ./gdb/doc/doxy-index.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/doxy-index.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/doxy-index.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2014-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
 Navigation page for Doxygen-generated GDB info.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gcore.1 ./gdb/doc/gcore.1
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gcore.1	2020-03-07 02:11:42.000000000 +0000
+++ ./gdb/doc/gcore.1	2021-05-21 02:00:22.000000000 +0000
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.13)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,27 +38,36 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GCORE 1"
-.TH GCORE 1 "2020-03-07" "gdb-9.1.90.20200307-git" "GNU Development Tools"
+.TH GCORE 1 "2021-05-21" "gdb-10.2.90.20210521-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
@@ -169,11 +178,11 @@ documentation are properly installed at
 .PP
 should give you access to the complete manual.
 .PP
-\&\fIUsing \s-1GDB:\s0 A Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
+\&\fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
 Richard M. Stallman and Roland H. Pesch, July 1991.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1988\-2020 Free Software Foundation, Inc.
+Copyright (c) 1988\-2021 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.1 ./gdb/doc/gdb.1
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.1	2020-03-07 02:11:42.000000000 +0000
+++ ./gdb/doc/gdb.1	2021-05-21 02:00:21.000000000 +0000
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.13)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,27 +38,36 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDB 1"
-.TH GDB 1 "2020-03-07" "gdb-9.1.90.20200307-git" "GNU Development Tools"
+.TH GDB 1 "2021-05-21" "gdb-10.2.90.20210521-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
@@ -159,7 +168,7 @@ Examine what has happened, when your pro
 Change things in your program, so you can experiment with correcting the
 effects of one bug and go on to learn about another.
 .PP
-You can use \s-1GDB\s0 to debug programs written in C, C@t{++}, Fortran and
+You can use \s-1GDB\s0 to debug programs written in C, \*(C+, Fortran and
 Modula\-2.
 .PP
 \&\s-1GDB\s0 is invoked with the shell command \f(CW\*(C`gdb\*(C'\fR.  Once started, it reads
@@ -225,13 +234,13 @@ function calls in the line.
 .IP "\fBhelp [\fR\fIname\fR\fB]\fR" 4
 .IX Item "help [name]"
 Show information about \s-1GDB\s0 command \fIname\fR, or general information
-about using \s-1GDB\s0.
+about using \s-1GDB.\s0
 .IP "\fBquit\fR" 4
 .IX Item "quit"
-Exit from \s-1GDB\s0.
+Exit from \s-1GDB.\s0
 .PP
-For full details on \s-1GDB\s0,
-see \fIUsing \s-1GDB:\s0 A Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
+For full details on \s-1GDB,\s0
+see \fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
 by Richard M. Stallman and Roland H. Pesch.  The same text is available online
 as the \f(CW\*(C`gdb\*(C'\fR entry in the \f(CW\*(C`info\*(C'\fR program.
 .SH "OPTIONS"
@@ -377,11 +386,11 @@ documentation are properly installed at
 .PP
 should give you access to the complete manual.
 .PP
-\&\fIUsing \s-1GDB:\s0 A Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
+\&\fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
 Richard M. Stallman and Roland H. Pesch, July 1991.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1988\-2020 Free Software Foundation, Inc.
+Copyright (c) 1988\-2021 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb-add-index.1 ./gdb/doc/gdb-add-index.1
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb-add-index.1	2020-03-07 02:11:42.000000000 +0000
+++ ./gdb/doc/gdb-add-index.1	2021-05-21 02:00:22.000000000 +0000
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.13)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,27 +38,36 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDB-ADD-INDEX 1"
-.TH GDB-ADD-INDEX 1 "2020-03-07" "gdb-9.1.90.20200307-git" "GNU Development Tools"
+.TH GDB-ADD-INDEX 1 "2021-05-21" "gdb-10.2.90.20210521-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
@@ -170,11 +179,11 @@ documentation are properly installed at
 .PP
 should give you access to the complete manual.
 .PP
-\&\fIUsing \s-1GDB:\s0 A Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
+\&\fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
 Richard M. Stallman and Roland H. Pesch, July 1991.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1988\-2020 Free Software Foundation, Inc.
+Copyright (c) 1988\-2021 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info ./gdb/doc/gdb.info
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info	2020-03-07 02:11:39.000000000 +0000
+++ ./gdb/doc/gdb.info	2021-05-21 02:00:20.000000000 +0000
@@ -1,6 +1,6 @@
-This is gdb.info, produced by makeinfo version 6.3 from gdb.texinfo.
+This is gdb.info, produced by makeinfo version 6.5 from gdb.texinfo.
 
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -21,9 +21,9 @@ 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.1.90.20200307-git.
+Source-Level Debugger' for GDB (GDB) Version 10.2.90.20210521-git.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -38,790 +38,801 @@ developing GNU and promoting software fr
 
 
 Indirect:
-gdb.info-1: 1716
-gdb.info-2: 302441
-gdb.info-3: 602089
-gdb.info-4: 902042
-gdb.info-5: 1212847
-gdb.info-6: 1511800
-gdb.info-7: 1841199
-gdb.info-8: 2230505
+gdb.info-1: 1717
+gdb.info-2: 305672
+gdb.info-3: 601738
+gdb.info-4: 903125
+gdb.info-5: 1202965
+gdb.info-6: 1515831
+gdb.info-7: 1806548
+gdb.info-8: 2114473
 
 Tag Table:
 (Indirect)
-Node: Top1716
-Node: Summary5188
-Node: Free Software7049
-Node: Free Documentation7789
-Node: Contributors12723
-Node: Sample Session21602
-Node: Invocation28454
-Node: Invoking GDB28997
-Node: File Options31339
-Ref: --readnever34410
-Node: Mode Options34884
-Ref: -nx35111
-Ref: -nh36868
-Node: Startup43192
-Ref: Home Directory Init File44038
-Ref: Option -init-eval-command44148
-Ref: Init File in the Current Directory during Startup44488
-Ref: Startup-Footnote-146684
-Node: Quitting GDB46793
-Node: Shell Commands47690
-Ref: pipe48617
-Node: Logging Output50131
-Node: Commands51257
-Node: Command Syntax52018
-Node: Command Settings54190
-Node: Completion57203
-Ref: Completion-Footnote-164143
-Node: Command Options64303
-Node: Help66655
-Node: Running73169
-Node: Compilation74398
-Node: Starting76477
-Ref: set exec-wrapper82267
-Ref: set startup-with-shell83356
-Ref: set auto-connect-native-target84417
-Node: Arguments88813
-Node: Environment90082
-Ref: set environment91964
-Ref: unset environment93146
-Node: Working Directory94152
-Ref: set cwd command94724
-Ref: cd command95664
-Node: Input/Output96358
-Node: Attach98418
-Node: Kill Process100884
-Node: Inferiors and Programs101865
-Node: Threads109597
-Ref: thread numbers111708
-Ref: thread ID lists112598
-Ref: global thread numbers113638
-Ref: thread apply all117490
-Ref: set libthread-db-search-path122329
-Node: Forks124383
-Node: Checkpoint/Restart130901
-Ref: Checkpoint/Restart-Footnote-1135429
-Node: Stopping135464
-Node: Breakpoints136727
-Node: Set Breaks139984
-Node: Set Watchpoints158943
-Node: Set Catchpoints168325
-Ref: catch syscall173823
-Node: Delete Breaks181588
-Node: Disabling183524
-Node: Conditions186904
-Node: Break Commands192551
-Node: Dynamic Printf195771
-Node: Save Breakpoints200075
-Node: Static Probe Points201250
-Ref: Static Probe Points-Footnote-1205428
-Ref: Static Probe Points-Footnote-2205588
-Node: Error in Breakpoints205728
-Node: Breakpoint-related Warnings206464
-Node: Continuing and Stepping208791
-Ref: range stepping218571
-Node: Skipping Over Functions and Files219651
-Node: Signals225500
-Ref: stepping and signal handlers229934
-Ref: stepping into signal handlers230730
-Ref: extra signal information231963
-Node: Thread Stops234429
-Node: All-Stop Mode235528
-Node: Non-Stop Mode239495
-Node: Background Execution242908
-Node: Thread-Specific Breakpoints245124
-Node: Interrupted System Calls247140
-Node: Observer Mode248654
-Node: Reverse Execution252090
-Ref: Reverse Execution-Footnote-1257008
-Ref: Reverse Execution-Footnote-2257635
-Node: Process Record and Replay257685
-Node: Stack279074
-Node: Frames280691
-Node: Backtrace283029
-Ref: backtrace-command283366
-Ref: set backtrace past-main289813
-Ref: set backtrace past-entry290141
-Ref: set backtrace limit290708
-Ref: Backtrace-Footnote-1291332
-Node: Selection291520
-Node: Frame Info296303
-Node: Frame Apply302441
-Ref: frame apply302627
-Node: Frame Filter Management306860
-Ref: disable frame-filter all307388
-Node: Source311696
-Node: List312762
-Node: Specify Location315464
-Node: Linespec Locations316085
-Node: Explicit Locations319484
-Node: Address Locations322696
-Node: Edit324447
-Ref: Edit-Footnote-1325923
-Node: Search326158
-Node: Source Path326966
-Ref: set substitute-path335907
-Node: Machine Code338127
-Node: Data348471
-Ref: print options349310
-Node: Expressions359311
-Node: Ambiguous Expressions361414
-Node: Variables364644
-Node: Arrays371242
-Node: Output Formats373773
-Ref: Output Formats-Footnote-1377146
-Node: Memory377303
-Ref: addressable memory unit383488
-Node: Auto Display384982
-Node: Print Settings389524
-Ref: set print address389822
-Ref: set print symbol393484
-Ref: set print array393972
-Ref: set print array-indexes394300
-Ref: set print elements394786
-Ref: set print frame-arguments395451
-Ref: set print raw-frame-arguments397620
-Ref: set print entry-values398036
-Ref: set print frame-info402415
-Ref: set print repeats404081
-Ref: set print max-depth404723
-Ref: set print null-stop406415
-Ref: set print pretty406739
-Ref: set print raw-values407326
-Ref: set print union408343
-Ref: set print object410649
-Ref: set print static-members411443
-Ref: set print vtbl412120
-Node: Pretty Printing412504
-Node: Pretty-Printer Introduction413018
-Node: Pretty-Printer Example414773
-Node: Pretty-Printer Commands415551
-Node: Value History418482
-Node: Convenience Vars420904
-Node: Convenience Funs428546
-Node: Registers437061
-Ref: standard registers438269
-Ref: Registers-Footnote-1443220
-Node: Floating Point Hardware443615
-Node: Vector Unit444147
-Node: OS Information444534
-Ref: linux info os infotypes446558
-Node: Memory Region Attributes451149
-Node: Dump/Restore Files455813
-Node: Core File Generation458216
-Ref: set use-coredump-filter459776
-Ref: set dump-excluded-mappings461224
-Node: Character Sets461506
-Node: Caching Target Data467871
-Ref: Caching Target Data-Footnote-1470599
-Node: Searching Memory470837
-Node: Value Sizes473980
-Node: Optimized Code475632
-Node: Inline Functions477309
-Node: Tail Call Frames479936
-Ref: set debug entry-values482073
-Node: Macros486137
-Ref: Macros-Footnote-1493713
-Node: Tracepoints493866
-Node: Set Tracepoints495928
-Node: Create and Delete Tracepoints498866
-Node: Enable and Disable Tracepoints505214
-Node: Tracepoint Passcounts506454
-Node: Tracepoint Conditions507865
-Node: Trace State Variables509559
-Node: Tracepoint Actions511754
-Node: Listing Tracepoints518537
-Node: Listing Static Tracepoint Markers520239
-Node: Starting and Stopping Trace Experiments522087
-Ref: disconnected tracing523832
-Node: Tracepoint Restrictions528252
-Node: Analyze Collected Data532021
-Node: tfind533327
-Node: tdump537809
-Node: save tracepoints540324
-Node: Tracepoint Variables540820
-Node: Trace Files541948
-Node: Overlays544324
-Node: How Overlays Work545044
-Ref: A code overlay547599
-Node: Overlay Commands551012
-Node: Automatic Overlay Debugging555194
-Node: Overlay Sample Program557333
-Node: Languages559070
-Node: Setting560233
-Node: Filenames561934
-Node: Manually562745
-Node: Automatically563954
-Node: Show565015
-Ref: show language565303
-Node: Checks566337
-Node: Type Checking567342
-Node: Range Checking569171
-Node: Supported Languages571572
-Node: C572909
-Node: C Operators573873
-Node: C Constants578212
-Node: C Plus Plus Expressions581091
-Node: C Defaults584451
-Node: C Checks585119
-Node: Debugging C585679
-Node: Debugging C Plus Plus586163
-Node: Decimal Floating Point591050
-Node: D592320
-Node: Go592578
-Node: Objective-C593672
-Node: Method Names in Commands594135
-Node: The Print Command with Objective-C595826
-Node: OpenCL C596477
-Node: OpenCL C Datatypes596752
-Node: OpenCL C Expressions597127
-Node: OpenCL C Operators597484
-Node: Fortran597716
-Node: Fortran Operators598437
-Node: Fortran Defaults599482
-Node: Special Fortran Commands599867
-Node: Pascal602089
-Node: Rust602600
-Node: Modula-2605687
-Node: M2 Operators606660
-Node: Built-In Func/Proc609658
-Node: M2 Constants612572
-Node: M2 Types614173
-Node: M2 Defaults617391
-Node: Deviations617992
-Node: M2 Checks619093
-Node: M2 Scope619910
-Node: GDB/M2620934
-Node: Ada621847
-Node: Ada Mode Intro623153
-Node: Omissions from Ada624655
-Node: Additions to Ada629010
-Node: Overloading support for Ada632938
-Node: Stopping Before Main Program634578
-Node: Ada Exceptions635125
-Node: Ada Tasks636324
-Node: Ada Tasks and Core Files642815
-Node: Ravenscar Profile643662
-Node: Ada Settings644733
-Node: Ada Glitches646155
-Node: Unsupported Languages650163
-Node: Symbols650853
-Ref: quoting names651456
-Node: Altering682371
-Node: Assignment683409
-Node: Jumping686515
-Node: Signaling688589
-Node: Returning691518
-Node: Calling694869
-Node: Patching700354
-Node: Compiling and Injecting Code701468
-Ref: set debug compile705095
-Ref: set debug compile-cplus-types705345
-Node: GDB Files715366
-Node: Files716155
-Ref: Shared Libraries729872
-Ref: Files-Footnote-1742070
-Node: File Caching742199
-Node: Separate Debug Files743333
-Ref: debug-file-directory746686
-Node: MiniDebugInfo755301
-Node: Index Files757752
-Node: Symbol Errors761923
-Node: Data Files765539
-Node: Targets766495
-Node: Active Targets767975
-Node: Target Commands769049
-Ref: load773438
-Ref: flash-erase774631
-Node: Byte Order774691
-Node: Remote Debugging776130
-Node: Connecting777392
-Ref: --multi Option in Types of Remote Connnections779618
-Ref: Attaching in Types of Remote Connections781033
-Ref: Host and target files781534
-Node: File Transfer790156
-Node: Server791095
-Ref: Running gdbserver792671
-Ref: Attaching to a program794889
-Ref: Other Command-Line Arguments for gdbserver797414
-Ref: Monitor Commands for gdbserver800733
-Ref: Server-Footnote-1806109
-Node: Remote Configuration806229
-Ref: set remotebreak807489
-Ref: set remote hardware-watchpoint-limit808951
-Ref: set remote hardware-breakpoint-limit808951
-Ref: set remote hardware-watchpoint-length-limit809453
-Ref: set remote exec-file809908
-Node: Remote Stub821713
-Node: Stub Contents824608
-Node: Bootstrapping826715
-Node: Debug Session830530
-Node: Configurations832571
-Node: Native833340
-Node: BSD libkvm Interface833909
-Node: Process Information834961
-Node: DJGPP Native840510
-Node: Cygwin Native847064
-Node: Non-debug DLL Symbols851985
-Node: Hurd Native856224
-Node: Darwin861480
-Node: FreeBSD862757
-Node: Embedded OS863477
-Node: Embedded Processors863888
-Node: ARC864878
-Node: ARM865425
-Node: M68K867972
-Node: MicroBlaze868145
-Node: MIPS Embedded869594
-Node: OpenRISC 1000870891
-Node: PowerPC Embedded871797
-Node: AVR875026
-Node: CRIS875398
-Node: Super-H876374
-Node: Architectures877433
-Node: AArch64877829
-Node: i386879402
-Ref: i386-Footnote-1883612
-Node: Alpha883698
-Node: MIPS883831
-Node: HPPA887725
-Node: PowerPC888247
-Node: Nios II888983
-Node: Sparc64889388
-Node: S12Z891756
-Node: Controlling GDB892049
-Node: Prompt892992
-Node: Editing894710
-Node: Command History896020
-Node: Screen Size902042
-Node: Output Styling904058
-Node: Numbers908141
-Node: ABI910123
-Node: Auto-loading913296
-Ref: set auto-load off914671
-Ref: show auto-load915307
-Ref: info auto-load916086
-Node: Init File in the Current Directory919053
-Ref: set auto-load local-gdbinit919628
-Ref: show auto-load local-gdbinit919810
-Ref: info auto-load local-gdbinit919974
-Node: libthread_db.so.1 file920122
-Ref: set auto-load libthread-db921061
-Ref: show auto-load libthread-db921192
-Ref: info auto-load libthread-db921329
-Node: Auto-loading safe path921513
-Ref: set auto-load safe-path922819
-Ref: show auto-load safe-path923558
-Ref: add-auto-load-safe-path923681
-Node: Auto-loading verbose mode926583
-Ref: set debug auto-load927746
-Ref: show debug auto-load927847
-Node: Messages/Warnings927969
-Ref: confirmation requests929403
-Node: Debugging Output930607
-Node: Other Misc Settings941024
-Node: Extending GDB942048
-Node: Sequences943901
-Node: Define944562
-Node: Hooks950047
-Node: Command Files952413
-Node: Output957486
-Ref: eval962288
-Node: Auto-loading sequences962450
-Ref: set auto-load gdb-scripts962945
-Ref: show auto-load gdb-scripts963069
-Ref: info auto-load gdb-scripts963199
-Node: Python963430
-Node: Python Commands964716
-Node: Python API966830
-Node: Basic Python969435
-Ref: prompt_hook980472
-Node: Exception Handling981070
-Node: Values From Inferior983972
-Node: Types In Python1001308
-Node: Pretty Printing API1011300
-Node: Selecting Pretty-Printers1015743
-Node: Writing a Pretty-Printer1018470
-Node: Type Printing API1023792
-Node: Frame Filter API1026408
-Node: Frame Decorator API1033720
-Ref: frame_args1037461
-Node: Writing a Frame Filter1040791
-Node: Unwinding Frames in Python1052265
-Node: Xmethods In Python1059904
-Node: Xmethod API1062800
-Node: Writing an Xmethod1066612
-Node: Inferiors In Python1072447
-Node: Events In Python1076206
-Node: Threads In Python1085414
-Node: Recordings In Python1088758
-Node: Commands In Python1096092
-Node: Parameters In Python1105505
-Node: Functions In Python1112443
-Node: Progspaces In Python1114660
-Node: Objfiles In Python1119565
-Node: Frames In Python1126227
-Node: Blocks In Python1133233
-Node: Symbols In Python1137900
-Node: Symbol Tables In Python1147363
-Node: Line Tables In Python1150584
-Node: Breakpoints In Python1153421
-Ref: python_breakpoint_thread1159744
-Node: Finish Breakpoints in Python1162777
-Node: Lazy Strings In Python1164883
-Node: Architectures In Python1167111
-Node: Python Auto-loading1169300
-Ref: set auto-load python-scripts1169929
-Ref: show auto-load python-scripts1170029
-Ref: info auto-load python-scripts1170135
-Node: Python modules1171269
-Node: gdb.printing1171655
-Node: gdb.types1173082
-Node: gdb.prompt1176094
-Node: Guile1177690
-Node: Guile Introduction1178349
-Node: Guile Commands1179220
-Node: Guile API1181074
-Node: Basic Guile1183071
-Node: Guile Configuration1188753
-Node: GDB Scheme Data Types1189729
-Node: Guile Exception Handling1191561
-Node: Values From Inferior In Guile1195595
-Node: Arithmetic In Guile1212847
-Node: Types In Guile1214478
-Ref: Fields of a type in Guile1222419
-Node: Guile Pretty Printing API1223807
-Node: Selecting Guile Pretty-Printers1229536
-Node: Writing a Guile Pretty-Printer1231912
-Node: Commands In Guile1237097
-Node: Parameters In Guile1247877
-Ref: Parameters In Guile-Footnote-11254758
-Node: Progspaces In Guile1254874
-Node: Objfiles In Guile1257462
-Node: Frames In Guile1259743
-Node: Blocks In Guile1266321
-Node: Symbols In Guile1271129
-Node: Symbol Tables In Guile1278464
-Node: Breakpoints In Guile1281427
-Node: Lazy Strings In Guile1291688
-Node: Architectures In Guile1293979
-Node: Disassembly In Guile1298286
-Node: I/O Ports in Guile1301488
-Node: Memory Ports in Guile1302044
-Node: Iterators In Guile1305310
-Node: Guile Auto-loading1309599
-Ref: set auto-load guile-scripts1310222
-Ref: show auto-load guile-scripts1310320
-Ref: info auto-load guile-scripts1310424
-Node: Guile Modules1311383
-Node: Guile Printing Module1311705
-Node: Guile Types Module1312524
-Node: Auto-loading extensions1313817
-Node: objfile-gdbdotext file1315015
-Ref: set auto-load scripts-directory1316451
-Ref: with-auto-load-dir1316827
-Ref: show auto-load scripts-directory1317645
-Ref: add-auto-load-scripts-directory1317725
-Node: dotdebug_gdb_scripts section1318201
-Node: Which flavor to choose?1321951
-Node: Multiple Extension Languages1323772
-Node: Aliases1324836
-Node: Interpreters1327701
-Node: TUI1330852
-Node: TUI Overview1331850
-Node: TUI Keys1334283
-Node: TUI Single Key Mode1337006
-Node: TUI Commands1338189
-Node: TUI Configuration1341956
-Node: Emacs1343978
-Node: GDB/MI1349415
-Node: GDB/MI General Design1351389
-Node: Context management1353909
-Node: Asynchronous and non-stop modes1357696
-Node: Thread groups1360669
-Node: GDB/MI Command Syntax1362947
-Node: GDB/MI Input Syntax1363190
-Node: GDB/MI Output Syntax1364740
-Node: GDB/MI Compatibility with CLI1368325
-Node: GDB/MI Development and Front Ends1369062
-Node: GDB/MI Output Records1372581
-Node: GDB/MI Result Records1372987
-Node: GDB/MI Stream Records1374337
-Node: GDB/MI Async Records1375602
-Node: GDB/MI Breakpoint Information1386039
-Node: GDB/MI Frame Information1391675
-Node: GDB/MI Thread Information1392957
-Node: GDB/MI Ada Exception Information1394427
-Node: GDB/MI Simple Examples1394977
-Node: GDB/MI Command Description Format1397213
-Node: GDB/MI Breakpoint Commands1398093
-Ref: -break-insert1405201
-Node: GDB/MI Catchpoint Commands1418775
-Node: Shared Library GDB/MI Catchpoint Commands1419188
-Node: Ada Exception GDB/MI Catchpoint Commands1420846
-Node: C++ Exception GDB/MI Catchpoint Commands1424396
-Node: GDB/MI Program Context1428412
-Node: GDB/MI Thread Commands1432680
-Node: GDB/MI Ada Tasking Commands1435981
-Node: GDB/MI Program Execution1438253
-Node: GDB/MI Stack Manipulation1450520
-Ref: -stack-list-arguments1452444
-Ref: -stack-list-frames1456274
-Ref: -stack-list-locals1460603
-Ref: -stack-list-variables1462093
-Node: GDB/MI Variable Objects1463627
-Ref: -var-set-format1473593
-Ref: -var-list-children1474974
-Ref: -var-update1483782
-Ref: -var-set-frozen1486780
-Ref: -var-set-update-range1487577
-Ref: -var-set-visualizer1488106
-Node: GDB/MI Data Manipulation1489596
-Node: GDB/MI Tracepoint Commands1511800
-Node: GDB/MI Symbol Query1523591
-Ref: -symbol-info-functions1523860
-Ref: -symbol-info-module-functions1528373
-Ref: -symbol-info-module-variables1531353
-Ref: -symbol-info-modules1535070
-Ref: -symbol-info-types1536974
-Ref: -symbol-info-variables1538967
-Node: GDB/MI File Commands1543991
-Node: GDB/MI Target Manipulation1548425
-Node: GDB/MI File Transfer Commands1555083
-Node: GDB/MI Ada Exceptions Commands1556406
-Node: GDB/MI Support Commands1557759
-Node: GDB/MI Miscellaneous Commands1562478
-Ref: -interpreter-exec1572831
-Node: Annotations1576803
-Node: Annotations Overview1577722
-Node: Server Prefix1580185
-Node: Prompting1580919
-Node: Errors1582436
-Node: Invalidation1583332
-Node: Annotations for Running1583811
-Node: Source Annotations1585345
-Node: JIT Interface1586274
-Node: Declarations1588074
-Node: Registering Code1589461
-Node: Unregistering Code1590433
-Node: Custom Debug Info1591060
-Node: Using JIT Debug Info Readers1592356
-Node: Writing JIT Debug Info Readers1593368
-Node: In-Process Agent1595563
-Ref: Control Agent1597506
-Node: In-Process Agent Protocol1598373
-Node: IPA Protocol Objects1599164
-Ref: agent expression object1600162
-Ref: tracepoint action object1600367
-Ref: tracepoint object1600447
-Node: IPA Protocol Commands1602977
-Node: GDB Bugs1604447
-Node: Bug Criteria1605179
-Node: Bug Reporting1606056
-Node: Command Line Editing1613885
-Node: Introduction and Notation1614537
-Node: Readline Interaction1616158
-Node: Readline Bare Essentials1617347
-Node: Readline Movement Commands1619128
-Node: Readline Killing Commands1620086
-Node: Readline Arguments1622002
-Node: Searching1623044
-Node: Readline Init File1625194
-Node: Readline Init File Syntax1626345
-Node: Conditional Init Constructs1646501
-Node: Sample Init File1650695
-Node: Bindable Readline Commands1653810
-Node: Commands For Moving1654862
-Node: Commands For History1656426
-Node: Commands For Text1660688
-Node: Commands For Killing1664127
-Node: Numeric Arguments1666291
-Node: Commands For Completion1667428
-Node: Keyboard Macros1669394
-Node: Miscellaneous Commands1670079
-Node: Readline vi Mode1673998
-Node: Using History Interactively1674908
-Node: History Interaction1675423
-Node: Event Designators1677319
-Node: Word Designators1678456
-Node: Modifiers1680091
-Node: In Memoriam1681312
-Node: Formatting Documentation1682195
-Ref: Formatting Documentation-Footnote-11685571
-Node: Installing GDB1685667
-Node: Requirements1686239
-Ref: Expat1686940
-Ref: MPFR1690233
-Node: Running Configure1691854
-Node: Separate Objdir1694725
-Node: Config Names1697699
-Node: Configure Options1699176
-Node: System-wide configuration1708527
-Node: System-wide Configuration Scripts1711064
-Node: Maintenance Commands1712248
-Ref: maint info breakpoints1713903
-Ref: maint check libthread-db1722368
-Node: Remote Protocol1739043
-Node: Overview1739735
-Ref: Binary Data1742280
-Node: Packets1744805
-Ref: thread-id syntax1745705
-Ref: extended mode1747150
-Ref: ? packet1747408
-Ref: bc1748874
-Ref: bs1749084
-Ref: read registers packet1750701
-Ref: cycle step packet1752556
-Ref: write register packet1755267
-Ref: step with signal packet1756246
-Ref: vCont packet1757722
-Ref: vCtrlC packet1760956
-Ref: vKill packet1763374
-Ref: X packet1764908
-Ref: insert breakpoint or watchpoint packet1765277
-Node: Stop Reply Packets1769603
-Ref: swbreak stop reason1772854
-Ref: thread create event1776451
-Ref: thread exit event1777654
-Node: General Query Packets1779863
-Ref: qCRC packet1782693
-Ref: QEnvironmentHexEncoded1785846
-Ref: QEnvironmentUnset1787076
-Ref: QEnvironmentReset1788020
-Ref: QSetWorkingDir packet1788964
-Ref: QNonStop1795415
-Ref: QCatchSyscalls1796091
-Ref: QPassSignals1797628
-Ref: QProgramSignals1798835
-Ref: QThreadEvents1800402
-Ref: qSearch memory1802420
-Ref: QStartNoAckMode1802928
-Ref: qSupported1803460
-Ref: multiprocess extensions1818980
-Ref: install tracepoint in tracing1821010
-Ref: qXfer read1825533
-Ref: qXfer auxiliary vector read1827140
-Ref: qXfer btrace read1827488
-Ref: qXfer btrace-conf read1828553
-Ref: qXfer executable filename read1828904
-Ref: qXfer target description read1829519
-Ref: qXfer library list read1829953
-Ref: qXfer svr4 library list read1830609
-Ref: qXfer memory map read1832462
-Ref: qXfer sdata read1832849
-Ref: qXfer siginfo read1833315
-Ref: qXfer threads read1833711
-Ref: qXfer traceframe info read1834114
-Ref: qXfer unwind info block1834532
-Ref: qXfer fdpic loadmap read1834766
-Ref: qXfer osdata read1835182
-Ref: qXfer write1835336
-Ref: qXfer siginfo write1836428
-Ref: General Query Packets-Footnote-11839156
-Node: Architecture-Specific Protocol Details1841199
-Node: ARM-Specific Protocol Details1841708
-Node: ARM Breakpoint Kinds1841956
-Node: MIPS-Specific Protocol Details1842287
-Node: MIPS Register packet Format1842570
-Node: MIPS Breakpoint Kinds1843497
-Node: Tracepoint Packets1843915
-Ref: QTEnable1853229
-Ref: QTDisable1853425
-Ref: qTfSTM1858962
-Ref: qTsSTM1858962
-Ref: qTSTMat1860039
-Ref: QTBuffer-size1861190
-Node: Host I/O Packets1863163
-Node: Interrupts1868744
-Ref: interrupting remote targets1868888
-Node: Notification Packets1871056
-Node: Remote Non-Stop1876481
-Node: Packet Acknowledgment1879597
-Node: Examples1881712
-Node: File-I/O Remote Protocol Extension1882306
-Node: File-I/O Overview1882768
-Node: Protocol Basics1884967
-Node: The F Request Packet1887196
-Node: The F Reply Packet1888097
-Node: The Ctrl-C Message1889015
-Node: Console I/O1890641
-Node: List of Supported Calls1891857
-Node: open1892219
-Node: close1894727
-Node: read1895110
-Node: write1895719
-Node: lseek1896490
-Node: rename1897374
-Node: unlink1898781
-Node: stat/fstat1899728
-Node: gettimeofday1900621
-Node: isatty1901057
-Node: system1901653
-Node: Protocol-specific Representation of Datatypes1903195
-Node: Integral Datatypes1903572
-Node: Pointer Values1904379
-Node: Memory Transfer1905083
-Node: struct stat1905703
-Node: struct timeval1907905
-Node: Constants1908422
-Node: Open Flags1908871
-Node: mode_t Values1909212
-Node: Errno Values1909704
-Node: Lseek Flags1910514
-Node: Limits1910699
-Node: File-I/O Examples1911059
-Node: Library List Format1912147
-Node: Library List Format for SVR4 Targets1914929
-Node: Memory Map Format1917396
-Node: Thread List Format1919920
-Node: Traceframe Info Format1920924
-Node: Branch Trace Format1922610
-Node: Branch Trace Configuration Format1924310
-Node: Agent Expressions1925484
-Node: General Bytecode Design1928305
-Node: Bytecode Descriptions1933099
-Node: Using Agent Expressions1946566
-Node: Varying Target Capabilities1948543
-Node: Rationale1949704
-Node: Target Descriptions1957093
-Node: Retrieving Descriptions1959036
-Node: Target Description Format1960121
-Node: Predefined Target Types1969996
-Node: Enum Target Types1971441
-Node: Standard Target Features1972436
-Node: AArch64 Features1974436
-Node: ARC Features1975142
-Node: ARM Features1977203
-Node: i386 Features1978717
-Node: MicroBlaze Features1980932
-Node: MIPS Features1981509
-Node: M68K Features1982700
-Node: NDS32 Features1983361
-Node: Nios II Features1984385
-Node: OpenRISC 1000 Features1984790
-Node: PowerPC Features1985156
-Node: RISC-V Features1989126
-Node: RX Features1990816
-Node: S/390 and System z Features1991178
-Node: Sparc Features1993318
-Node: TIC6x Features1994223
-Node: Operating System Information1994772
-Node: Process list1995608
-Node: Trace File Format1996671
-Node: Index Section Format1999885
-Node: Man Pages2007811
-Node: gdb man2008281
-Node: gdbserver man2014255
-Node: gcore man2021652
-Node: gdbinit man2022774
-Node: gdb-add-index man2023967
-Ref: gdb-add-index2024076
-Node: Copying2024950
-Node: GNU Free Documentation License2062511
-Node: Concept Index2087658
-Node: Command and Variable Index2230505
+Node: Top1717
+Node: Summary5164
+Node: Free Software7025
+Node: Free Documentation7765
+Node: Contributors12699
+Node: Sample Session21730
+Node: Invocation28583
+Node: Invoking GDB29126
+Node: File Options31468
+Ref: --readnever34539
+Node: Mode Options35013
+Ref: -nx35240
+Ref: -nh36997
+Node: Startup43321
+Ref: Home Directory Init File44167
+Ref: Option -init-eval-command44277
+Ref: Init File in the Current Directory during Startup44617
+Ref: Startup-Footnote-146813
+Node: Quitting GDB46922
+Node: Shell Commands47819
+Ref: pipe48811
+Node: Logging Output50325
+Node: Commands51451
+Node: Command Syntax52316
+Node: Command Settings54488
+Node: Completion57501
+Ref: Completion-Footnote-164441
+Node: Command Options64601
+Node: Command aliases default args66977
+Ref: Command aliases default args-Footnote-170430
+Node: Help70584
+Node: Running77658
+Node: Compilation78911
+Node: Starting80990
+Ref: set exec-wrapper86780
+Ref: set startup-with-shell87869
+Ref: set auto-connect-native-target88930
+Node: Arguments93401
+Node: Environment94670
+Ref: set environment96552
+Ref: unset environment97734
+Node: Working Directory98740
+Ref: set cwd command99312
+Ref: cd command100252
+Node: Input/Output100946
+Node: Attach103006
+Ref: set exec-file-mismatch104223
+Node: Kill Process106359
+Node: Inferiors Connections and Programs107352
+Node: Threads117174
+Ref: thread numbers119297
+Ref: thread ID lists120187
+Ref: global thread numbers121227
+Ref: thread apply all125083
+Ref: set libthread-db-search-path129933
+Node: Forks131987
+Node: Checkpoint/Restart138553
+Ref: Checkpoint/Restart-Footnote-1143081
+Node: Stopping143116
+Node: Breakpoints144379
+Node: Set Breaks147636
+Node: Set Watchpoints166595
+Node: Set Catchpoints175977
+Ref: catch syscall181475
+Node: Delete Breaks189240
+Node: Disabling191176
+Node: Conditions194556
+Node: Break Commands200203
+Node: Dynamic printf203423
+Node: Save Breakpoints207727
+Node: Static Probe Points208902
+Ref: Static Probe Points-Footnote-1213080
+Ref: Static Probe Points-Footnote-2213240
+Node: Error in Breakpoints213380
+Node: Breakpoint-related Warnings214116
+Node: Continuing and Stepping216443
+Ref: range stepping226223
+Node: Skipping Over Functions and Files227303
+Node: Signals233152
+Ref: stepping and signal handlers237586
+Ref: stepping into signal handlers238382
+Ref: extra signal information239615
+Node: Thread Stops242081
+Node: All-Stop Mode243180
+Node: Non-Stop Mode247147
+Node: Background Execution250560
+Node: Thread-Specific Breakpoints252776
+Node: Interrupted System Calls254792
+Node: Observer Mode256306
+Node: Reverse Execution259742
+Ref: Reverse Execution-Footnote-1264660
+Ref: Reverse Execution-Footnote-2265287
+Node: Process Record and Replay265337
+Node: Stack286726
+Node: Frames288343
+Node: Backtrace290681
+Ref: backtrace-command291018
+Ref: set backtrace past-main297465
+Ref: set backtrace past-entry297793
+Ref: set backtrace limit298360
+Ref: Backtrace-Footnote-1298984
+Node: Selection299172
+Node: Frame Info305672
+Node: Frame Apply310094
+Node: Frame Filter Management314522
+Ref: disable frame-filter all315048
+Node: Source319356
+Node: List320422
+Node: Specify Location323124
+Node: Linespec Locations323745
+Node: Explicit Locations327144
+Node: Address Locations330356
+Node: Edit332107
+Ref: Edit-Footnote-1333583
+Node: Search333818
+Node: Source Path334626
+Ref: set substitute-path343567
+Node: Machine Code345787
+Node: Data356131
+Ref: print options356970
+Node: Expressions366971
+Node: Ambiguous Expressions369074
+Node: Variables372304
+Node: Arrays378902
+Node: Output Formats381433
+Ref: Output Formats-Footnote-1384806
+Node: Memory384963
+Ref: addressable memory unit391148
+Node: Auto Display392642
+Node: Print Settings397184
+Ref: set print address397482
+Ref: set print symbol401144
+Ref: set print array401632
+Ref: set print array-indexes401960
+Ref: set print elements402446
+Ref: set print frame-arguments403111
+Ref: set print raw-frame-arguments405280
+Ref: set print entry-values405696
+Ref: set print frame-info410075
+Ref: set print repeats411741
+Ref: set print max-depth412383
+Ref: set print null-stop414075
+Ref: set print pretty414399
+Ref: set print raw-values414986
+Ref: set print union416003
+Ref: set print object418309
+Ref: set print static-members419103
+Ref: set print vtbl419780
+Node: Pretty Printing420164
+Node: Pretty-Printer Introduction420678
+Node: Pretty-Printer Example422433
+Node: Pretty-Printer Commands423211
+Node: Value History426142
+Node: Convenience Vars428564
+Node: Convenience Funs436235
+Node: Registers444750
+Ref: info_registers_reggroup445407
+Ref: standard registers445958
+Ref: Registers-Footnote-1450909
+Node: Floating Point Hardware451304
+Node: Vector Unit451836
+Node: OS Information452223
+Ref: linux info os infotypes454247
+Node: Memory Region Attributes458838
+Node: Dump/Restore Files463502
+Node: Core File Generation465905
+Ref: set use-coredump-filter467465
+Ref: set dump-excluded-mappings468913
+Node: Character Sets469195
+Node: Caching Target Data475560
+Ref: Caching Target Data-Footnote-1478300
+Node: Searching Memory478538
+Node: Value Sizes481681
+Node: Optimized Code483333
+Node: Inline Functions485010
+Node: Tail Call Frames487637
+Ref: set debug entry-values489774
+Node: Macros493838
+Ref: Macros-Footnote-1501414
+Node: Tracepoints501567
+Node: Set Tracepoints503629
+Node: Create and Delete Tracepoints506567
+Node: Enable and Disable Tracepoints512915
+Node: Tracepoint Passcounts514155
+Node: Tracepoint Conditions515566
+Node: Trace State Variables517260
+Node: Tracepoint Actions519455
+Node: Listing Tracepoints526238
+Node: Listing Static Tracepoint Markers527940
+Node: Starting and Stopping Trace Experiments529788
+Ref: disconnected tracing531533
+Node: Tracepoint Restrictions535953
+Node: Analyze Collected Data539722
+Node: tfind541028
+Node: tdump545510
+Node: save tracepoints548025
+Node: Tracepoint Variables548521
+Node: Trace Files549649
+Node: Overlays552025
+Node: How Overlays Work552745
+Ref: A code overlay555280
+Node: Overlay Commands558713
+Node: Automatic Overlay Debugging562895
+Node: Overlay Sample Program565034
+Node: Languages566771
+Node: Setting567934
+Node: Filenames569635
+Node: Manually570446
+Node: Automatically571655
+Node: Show572716
+Ref: show language573004
+Node: Checks574038
+Node: Type Checking575043
+Node: Range Checking576872
+Node: Supported Languages579273
+Node: C580610
+Node: C Operators581574
+Node: C Constants585913
+Node: C Plus Plus Expressions588792
+Node: C Defaults592152
+Node: C Checks592820
+Node: Debugging C593380
+Node: Debugging C Plus Plus593864
+Node: Decimal Floating Point598751
+Node: D601738
+Node: Go601996
+Node: Objective-C603090
+Node: Method Names in Commands603553
+Node: The Print Command with Objective-C605244
+Node: OpenCL C605895
+Node: OpenCL C Datatypes606170
+Node: OpenCL C Expressions606545
+Node: OpenCL C Operators606902
+Node: Fortran607134
+Node: Fortran Operators607855
+Node: Fortran Defaults608900
+Node: Special Fortran Commands609285
+Node: Pascal609791
+Node: Rust610302
+Node: Modula-2613389
+Node: M2 Operators614362
+Node: Built-In Func/Proc617360
+Node: M2 Constants620274
+Node: M2 Types621875
+Node: M2 Defaults625093
+Node: Deviations625694
+Node: M2 Checks626795
+Node: M2 Scope627612
+Node: GDB/M2628636
+Node: Ada629549
+Node: Ada Mode Intro630855
+Node: Omissions from Ada632357
+Node: Additions to Ada636712
+Node: Overloading support for Ada640640
+Node: Stopping Before Main Program642280
+Node: Ada Exceptions642827
+Node: Ada Tasks644026
+Node: Ada Tasks and Core Files650517
+Node: Ravenscar Profile651364
+Node: Ada Settings653535
+Node: Ada Glitches654957
+Node: Unsupported Languages658965
+Node: Symbols659655
+Ref: quoting names660258
+Node: Altering691173
+Node: Assignment692211
+Node: Jumping695317
+Node: Signaling697391
+Node: Returning700320
+Node: Calling703671
+Node: Patching709156
+Node: Compiling and Injecting Code710270
+Ref: set debug compile713897
+Ref: set debug compile-cplus-types714147
+Node: GDB Files724168
+Node: Files724957
+Ref: Shared Libraries738669
+Ref: Files-Footnote-1750862
+Node: File Caching750991
+Node: Separate Debug Files752125
+Ref: build ID753366
+Ref: debug-file-directory755478
+Node: MiniDebugInfo764093
+Node: Index Files766544
+Node: Symbol Errors770607
+Node: Data Files774223
+Node: Targets775179
+Node: Active Targets776659
+Node: Target Commands777733
+Ref: load782122
+Ref: flash-erase783315
+Node: Byte Order783375
+Node: Remote Debugging784814
+Node: Connecting786076
+Ref: --multi Option in Types of Remote Connnections788302
+Ref: Attaching in Types of Remote Connections789717
+Ref: Host and target files790597
+Node: File Transfer799219
+Node: Server800158
+Ref: Running gdbserver801734
+Ref: Attaching to a program803952
+Ref: Other Command-Line Arguments for gdbserver806477
+Ref: Monitor Commands for gdbserver809796
+Ref: Server-Footnote-1815172
+Node: Remote Configuration815292
+Ref: set remotebreak816552
+Ref: set remote hardware-watchpoint-limit818014
+Ref: set remote hardware-breakpoint-limit818014
+Ref: set remote hardware-watchpoint-length-limit818516
+Ref: set remote exec-file818971
+Node: Remote Stub830776
+Node: Stub Contents833671
+Node: Bootstrapping835778
+Node: Debug Session839593
+Node: Configurations841634
+Node: Native842403
+Node: BSD libkvm Interface842972
+Node: Process Information844024
+Node: DJGPP Native849648
+Node: Cygwin Native856202
+Node: Non-debug DLL Symbols861123
+Node: Hurd Native865362
+Node: Darwin870618
+Node: FreeBSD871895
+Node: Embedded OS872615
+Node: Embedded Processors873026
+Node: ARC874053
+Node: ARM874600
+Node: BPF877146
+Node: M68K877626
+Node: MicroBlaze877799
+Node: MIPS Embedded879248
+Node: OpenRISC 1000880545
+Node: PowerPC Embedded881451
+Node: AVR884680
+Node: CRIS885052
+Node: Super-H886030
+Node: Architectures887089
+Node: AArch64887485
+Node: i386889054
+Ref: i386-Footnote-1893264
+Node: Alpha893350
+Node: MIPS893483
+Node: HPPA897377
+Node: PowerPC897899
+Node: Nios II898635
+Node: Sparc64899040
+Node: S12Z903125
+Node: Controlling GDB903418
+Node: Prompt904361
+Node: Editing906079
+Node: Command History907389
+Node: Screen Size912583
+Node: Output Styling914599
+Node: Numbers918682
+Node: ABI920664
+Node: Auto-loading923837
+Ref: set auto-load off925212
+Ref: show auto-load925848
+Ref: info auto-load926627
+Node: Init File in the Current Directory929594
+Ref: set auto-load local-gdbinit930169
+Ref: show auto-load local-gdbinit930351
+Ref: info auto-load local-gdbinit930515
+Node: libthread_db.so.1 file930663
+Ref: set auto-load libthread-db931602
+Ref: show auto-load libthread-db931733
+Ref: info auto-load libthread-db931870
+Node: Auto-loading safe path932054
+Ref: set auto-load safe-path933355
+Ref: show auto-load safe-path934094
+Ref: add-auto-load-safe-path934217
+Node: Auto-loading verbose mode937119
+Ref: set debug auto-load938282
+Ref: show debug auto-load938383
+Node: Messages/Warnings938505
+Ref: confirmation requests939939
+Node: Debugging Output941143
+Node: Other Misc Settings951560
+Node: Extending GDB952584
+Node: Sequences954437
+Node: Define955098
+Node: Hooks960583
+Node: Command Files962949
+Node: Output968022
+Ref: eval972824
+Node: Auto-loading sequences972986
+Ref: set auto-load gdb-scripts973481
+Ref: show auto-load gdb-scripts973605
+Ref: info auto-load gdb-scripts973735
+Node: Python973966
+Node: Python Commands975252
+Node: Python API977366
+Node: Basic Python980101
+Ref: prompt_hook991138
+Node: Exception Handling991736
+Node: Values From Inferior994638
+Node: Types In Python1011975
+Node: Pretty Printing API1023205
+Node: Selecting Pretty-Printers1027648
+Node: Writing a Pretty-Printer1030375
+Node: Type Printing API1035697
+Node: Frame Filter API1038313
+Node: Frame Decorator API1045625
+Ref: frame_args1049366
+Node: Writing a Frame Filter1052696
+Node: Unwinding Frames in Python1064170
+Node: Xmethods In Python1071965
+Node: Xmethod API1074861
+Node: Writing an Xmethod1078673
+Node: Inferiors In Python1084508
+Node: Events In Python1088279
+Node: Threads In Python1097487
+Node: Recordings In Python1100832
+Node: Commands In Python1108166
+Node: Parameters In Python1117757
+Node: Functions In Python1124695
+Node: Progspaces In Python1126912
+Node: Objfiles In Python1131836
+Node: Frames In Python1138493
+Ref: gdbpy_frame_read_register1144710
+Node: Blocks In Python1146395
+Node: Symbols In Python1151062
+Node: Symbol Tables In Python1160525
+Node: Line Tables In Python1163746
+Node: Breakpoints In Python1166583
+Ref: python_breakpoint_thread1172906
+Node: Finish Breakpoints in Python1175939
+Node: Lazy Strings In Python1178045
+Node: Architectures In Python1180273
+Ref: gdbpy_architecture_registers1182490
+Ref: gdbpy_architecture_reggroups1182811
+Node: Registers In Python1183010
+Node: TUI Windows In Python1185280
+Node: Python Auto-loading1189507
+Ref: set auto-load python-scripts1190136
+Ref: show auto-load python-scripts1190236
+Ref: info auto-load python-scripts1190342
+Node: Python modules1191476
+Node: gdb.printing1191862
+Node: gdb.types1193289
+Node: gdb.prompt1196301
+Node: Guile1197897
+Node: Guile Introduction1198556
+Node: Guile Commands1199394
+Node: Guile API1202965
+Node: Basic Guile1204962
+Node: Guile Configuration1210644
+Node: GDB Scheme Data Types1211620
+Node: Guile Exception Handling1213452
+Node: Values From Inferior In Guile1217486
+Node: Arithmetic In Guile1233022
+Node: Types In Guile1234653
+Ref: Fields of a type in Guile1242594
+Node: Guile Pretty Printing API1243982
+Node: Selecting Guile Pretty-Printers1249711
+Node: Writing a Guile Pretty-Printer1252087
+Node: Commands In Guile1257272
+Node: Parameters In Guile1268052
+Ref: Parameters In Guile-Footnote-11274933
+Node: Progspaces In Guile1275049
+Node: Objfiles In Guile1277661
+Node: Frames In Guile1279942
+Node: Blocks In Guile1286520
+Node: Symbols In Guile1291328
+Node: Symbol Tables In Guile1298663
+Node: Breakpoints In Guile1301626
+Node: Lazy Strings In Guile1311887
+Node: Architectures In Guile1314178
+Node: Disassembly In Guile1318485
+Node: I/O Ports in Guile1321687
+Node: Memory Ports in Guile1322243
+Node: Iterators In Guile1326094
+Node: Guile Auto-loading1330383
+Ref: set auto-load guile-scripts1331006
+Ref: show auto-load guile-scripts1331104
+Ref: info auto-load guile-scripts1331208
+Node: Guile Modules1332167
+Node: Guile Printing Module1332489
+Node: Guile Types Module1333308
+Node: Auto-loading extensions1334601
+Node: objfile-gdbdotext file1335799
+Ref: set auto-load scripts-directory1337469
+Ref: with-auto-load-dir1337845
+Ref: show auto-load scripts-directory1338663
+Ref: add-auto-load-scripts-directory1338743
+Node: dotdebug_gdb_scripts section1339219
+Node: Which flavor to choose?1342969
+Node: Multiple Extension Languages1344790
+Node: Aliases1345854
+Node: Interpreters1349324
+Node: TUI1352475
+Node: TUI Overview1353473
+Node: TUI Keys1355976
+Node: TUI Single Key Mode1358699
+Node: TUI Commands1359882
+Node: TUI Configuration1365739
+Node: Emacs1367761
+Node: GDB/MI1373198
+Node: GDB/MI General Design1375903
+Node: Context management1378423
+Node: Asynchronous and non-stop modes1382210
+Node: Thread groups1385183
+Node: GDB/MI Command Syntax1387473
+Node: GDB/MI Input Syntax1387716
+Node: GDB/MI Output Syntax1389266
+Node: GDB/MI Compatibility with CLI1392851
+Node: GDB/MI Development and Front Ends1393588
+Node: GDB/MI Output Records1397103
+Node: GDB/MI Result Records1397509
+Node: GDB/MI Stream Records1398859
+Node: GDB/MI Async Records1400124
+Node: GDB/MI Breakpoint Information1410557
+Node: GDB/MI Frame Information1416193
+Node: GDB/MI Thread Information1417475
+Node: GDB/MI Ada Exception Information1418945
+Node: GDB/MI Simple Examples1419495
+Node: GDB/MI Command Description Format1421731
+Node: GDB/MI Breakpoint Commands1422611
+Ref: -break-insert1429719
+Node: GDB/MI Catchpoint Commands1443293
+Node: Shared Library GDB/MI Catchpoint Commands1443706
+Node: Ada Exception GDB/MI Catchpoint Commands1445364
+Node: C++ Exception GDB/MI Catchpoint Commands1448914
+Node: GDB/MI Program Context1452930
+Node: GDB/MI Thread Commands1457198
+Node: GDB/MI Ada Tasking Commands1460499
+Node: GDB/MI Program Execution1462771
+Node: GDB/MI Stack Manipulation1475038
+Ref: -stack-list-arguments1476962
+Ref: -stack-list-frames1480792
+Ref: -stack-list-locals1485121
+Ref: -stack-list-variables1486611
+Node: GDB/MI Variable Objects1488145
+Ref: -var-set-format1498111
+Ref: -var-list-children1499492
+Ref: -var-update1508300
+Ref: -var-set-frozen1511298
+Ref: -var-set-update-range1512095
+Ref: -var-set-visualizer1512624
+Node: GDB/MI Data Manipulation1515831
+Node: GDB/MI Tracepoint Commands1536319
+Node: GDB/MI Symbol Query1548110
+Ref: -symbol-info-functions1548379
+Ref: -symbol-info-module-functions1552892
+Ref: -symbol-info-module-variables1555872
+Ref: -symbol-info-modules1559589
+Ref: -symbol-info-types1561493
+Ref: -symbol-info-variables1563486
+Node: GDB/MI File Commands1568510
+Node: GDB/MI Target Manipulation1572944
+Node: GDB/MI File Transfer Commands1579602
+Node: GDB/MI Ada Exceptions Commands1580925
+Node: GDB/MI Support Commands1582278
+Node: GDB/MI Miscellaneous Commands1586997
+Ref: -interpreter-exec1597361
+Node: Annotations1601333
+Node: Annotations Overview1602252
+Node: Server Prefix1604715
+Node: Prompting1605449
+Node: Errors1606966
+Node: Invalidation1607862
+Node: Annotations for Running1608341
+Node: Source Annotations1609875
+Node: JIT Interface1610804
+Node: Declarations1612604
+Node: Registering Code1613991
+Node: Unregistering Code1614963
+Node: Custom Debug Info1615590
+Node: Using JIT Debug Info Readers1616886
+Node: Writing JIT Debug Info Readers1617898
+Node: In-process Agent1620093
+Ref: Control Agent1622036
+Node: In-process Agent Protocol1622903
+Node: IPA Protocol Objects1623694
+Ref: agent expression object1624692
+Ref: tracepoint action object1624897
+Ref: tracepoint object1624977
+Node: IPA Protocol Commands1627507
+Node: GDB Bugs1628977
+Node: Bug Criteria1629709
+Node: Bug Reporting1630586
+Node: Command Line Editing1637563
+Node: Introduction and Notation1638215
+Node: Readline Interaction1639836
+Node: Readline Bare Essentials1641025
+Node: Readline Movement Commands1642806
+Node: Readline Killing Commands1643764
+Node: Readline Arguments1645680
+Node: Searching1646722
+Node: Readline Init File1648872
+Node: Readline Init File Syntax1650023
+Node: Conditional Init Constructs1670179
+Node: Sample Init File1674373
+Node: Bindable Readline Commands1677488
+Node: Commands For Moving1678540
+Node: Commands For History1680104
+Node: Commands For Text1684366
+Node: Commands For Killing1687805
+Node: Numeric Arguments1689969
+Node: Commands For Completion1691106
+Node: Keyboard Macros1693072
+Node: Miscellaneous Commands1693757
+Node: Readline vi Mode1697676
+Node: Using History Interactively1698586
+Node: History Interaction1699101
+Node: Event Designators1700997
+Node: Word Designators1702134
+Node: Modifiers1703769
+Node: In Memoriam1704990
+Node: Formatting Documentation1705873
+Ref: Formatting Documentation-Footnote-11709253
+Node: Installing GDB1709351
+Node: Requirements1709923
+Ref: Expat1710624
+Ref: MPFR1713917
+Node: Running Configure1715538
+Node: Separate Objdir1718420
+Node: Config Names1721400
+Node: Configure Options1722879
+Node: System-wide configuration1732701
+Node: System-wide Configuration Scripts1735238
+Node: Maintenance Commands1736422
+Ref: maint info breakpoints1738077
+Ref: maint check libthread-db1746962
+Node: Remote Protocol1763880
+Node: Overview1764572
+Ref: Binary Data1767117
+Node: Packets1769773
+Ref: thread-id syntax1770673
+Ref: extended mode1772118
+Ref: ? packet1772376
+Ref: bc1773842
+Ref: bs1774052
+Ref: read registers packet1775669
+Ref: cycle step packet1777524
+Ref: write register packet1780235
+Ref: step with signal packet1781214
+Ref: vCont packet1782690
+Ref: vCtrlC packet1785924
+Ref: vKill packet1788342
+Ref: X packet1789876
+Ref: insert breakpoint or watchpoint packet1790245
+Node: Stop Reply Packets1794571
+Ref: swbreak stop reason1797822
+Ref: thread create event1801419
+Ref: thread exit event1802622
+Node: General Query Packets1806548
+Ref: qCRC packet1809378
+Ref: QEnvironmentHexEncoded1812531
+Ref: QEnvironmentUnset1813761
+Ref: QEnvironmentReset1814705
+Ref: QSetWorkingDir packet1815649
+Ref: QNonStop1822100
+Ref: QCatchSyscalls1822776
+Ref: QPassSignals1824313
+Ref: QProgramSignals1825520
+Ref: QThreadEvents1827087
+Ref: qSearch memory1829105
+Ref: QStartNoAckMode1829613
+Ref: qSupported1830145
+Ref: multiprocess extensions1845665
+Ref: install tracepoint in tracing1847695
+Ref: qXfer read1852218
+Ref: qXfer auxiliary vector read1853825
+Ref: qXfer btrace read1854173
+Ref: qXfer btrace-conf read1855238
+Ref: qXfer executable filename read1855589
+Ref: qXfer target description read1856204
+Ref: qXfer library list read1856638
+Ref: qXfer svr4 library list read1857294
+Ref: qXfer memory map read1859147
+Ref: qXfer sdata read1859534
+Ref: qXfer siginfo read1860000
+Ref: qXfer threads read1860396
+Ref: qXfer traceframe info read1860799
+Ref: qXfer unwind info block1861217
+Ref: qXfer fdpic loadmap read1861451
+Ref: qXfer osdata read1861867
+Ref: qXfer write1862021
+Ref: qXfer siginfo write1863113
+Ref: General Query Packets-Footnote-11865841
+Node: Architecture-Specific Protocol Details1866168
+Node: ARM-Specific Protocol Details1866677
+Node: ARM Breakpoint Kinds1866925
+Node: MIPS-Specific Protocol Details1867256
+Node: MIPS Register packet Format1867539
+Node: MIPS Breakpoint Kinds1868466
+Node: Tracepoint Packets1868884
+Ref: QTEnable1878198
+Ref: QTDisable1878394
+Ref: qTfSTM1883931
+Ref: qTsSTM1883931
+Ref: qTSTMat1885008
+Ref: QTBuffer-size1886159
+Node: Host I/O Packets1888132
+Node: Interrupts1893713
+Ref: interrupting remote targets1893857
+Node: Notification Packets1896025
+Node: Remote Non-Stop1901450
+Node: Packet Acknowledgment1904566
+Node: Examples1906681
+Node: File-I/O Remote Protocol Extension1907275
+Node: File-I/O Overview1907737
+Node: Protocol Basics1909936
+Node: The F Request Packet1912165
+Node: The F Reply Packet1913066
+Node: The Ctrl-C Message1913984
+Node: Console I/O1915610
+Node: List of Supported Calls1916826
+Node: open1917188
+Node: close1919696
+Node: read1920079
+Node: write1920688
+Node: lseek1921459
+Node: rename1922343
+Node: unlink1923750
+Node: stat/fstat1924697
+Node: gettimeofday1925590
+Node: isatty1926026
+Node: system1926622
+Node: Protocol-specific Representation of Datatypes1928164
+Node: Integral Datatypes1928541
+Node: Pointer Values1929348
+Node: Memory Transfer1930052
+Node: struct stat1930672
+Node: struct timeval1932874
+Node: Constants1933391
+Node: Open Flags1933840
+Node: mode_t Values1934181
+Node: errno Values1934673
+Node: Lseek Flags1935483
+Node: Limits1935668
+Node: File-I/O Examples1936028
+Node: Library List Format1937116
+Node: Library List Format for SVR4 Targets1939898
+Node: Memory Map Format1942365
+Node: Thread List Format1944889
+Node: Traceframe Info Format1945893
+Node: Branch Trace Format1947579
+Node: Branch Trace Configuration Format1949279
+Node: Agent Expressions1950453
+Node: General Bytecode Design1953274
+Node: Bytecode Descriptions1958068
+Node: Using Agent Expressions1971535
+Node: Varying Target Capabilities1973512
+Node: Rationale1974673
+Node: Target Descriptions1982062
+Node: Retrieving Descriptions1984005
+Node: Target Description Format1985090
+Node: Predefined Target Types1994965
+Node: Enum Target Types1996410
+Node: Standard Target Features1997405
+Node: AArch64 Features1999405
+Node: ARC Features2000111
+Ref: ARC Features-Footnote-12001930
+Node: ARM Features2001963
+Node: i386 Features2003477
+Node: MicroBlaze Features2005692
+Node: MIPS Features2006269
+Node: M68K Features2007460
+Node: NDS32 Features2008447
+Node: Nios II Features2009471
+Node: OpenRISC 1000 Features2009876
+Node: PowerPC Features2010242
+Node: RISC-V Features2014212
+Node: RX Features2015902
+Node: S/390 and System z Features2016264
+Node: Sparc Features2018404
+Node: TIC6x Features2019309
+Node: Operating System Information2019858
+Node: Process list2020694
+Node: Trace File Format2021757
+Node: Index Section Format2024971
+Node: Man Pages2032897
+Node: gdb man2033367
+Node: gdbserver man2039341
+Node: gcore man2046750
+Node: gdbinit man2047872
+Node: gdb-add-index man2049065
+Ref: gdb-add-index2049174
+Node: Copying2050048
+Node: GNU Free Documentation License2087609
+Node: Concept Index2114473
+Node: Command and Variable Index2256255
 
 End Tag Table
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-1 ./gdb/doc/gdb.info-1
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-1	2020-03-07 02:11:26.000000000 +0000
+++ ./gdb/doc/gdb.info-1	2021-05-21 02:00:13.000000000 +0000
@@ -1,6 +1,6 @@
-This is gdb.info, produced by makeinfo version 6.3 from gdb.texinfo.
+This is gdb.info, produced by makeinfo version 6.5 from gdb.texinfo.
 
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -21,9 +21,9 @@ 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.1.90.20200307-git.
+Source-Level Debugger' for GDB (GDB) Version 10.2.90.20210521-git.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -37,16 +37,17 @@ this GNU Manual.  Buying copies from GNU
 developing GNU and promoting software freedom."
 
 
-File: gdb.info,  Node: Top,  Next: Summary,  Prev: (dir),  Up: (dir)
+File: gdb.info,  Node: Top,  Next: Summary
 
 Debugging with GDB
 ******************
 
 This file describes GDB, the GNU symbolic debugger.
 
-   This is the Tenth Edition, for GDB (GDB) Version 9.1.90.20200307-git.
+   This is the Tenth Edition, for GDB (GDB) Version
+10.2.90.20210521-git.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This edition of the GDB manual is dedicated to the memory of Fred
 Fish.  Fred was a long-standing contributor to GDB and to Free software
@@ -87,7 +88,7 @@ in general.  We will miss him.
 * GDB/MI::                      GDB's Machine Interface.
 * Annotations::                 GDB's annotation interface.
 * JIT Interface::               Using the JIT debugging interface.
-* In-Process Agent::            In-Process Agent
+* In-process Agent::            In-process Agent
 
 * GDB Bugs::                    Reporting bugs in GDB
 
@@ -461,6 +462,10 @@ Alessandro Forin and Per Bothner.  More
 of Jeremy Bennett, Franck Jullien, Stefan Wallentowitz and Stafford
 Horne.
 
+   Weimin Pan, David Faust and Jose E. Marchesi contributed support for
+the Linux kernel BPF virtual architecture.  This work was sponsored by
+Oracle.
+
 
 File: gdb.info,  Node: Sample Session,  Next: Invocation,  Prev: Summary,  Up: Top
 
@@ -507,7 +512,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.1.90.20200307-git, Copyright 1999 Free Software Foundation, Inc...
+     GDB 10.2.90.20210521-git, Copyright 1999 Free Software Foundation, Inc...
      (gdb)
 
 GDB reads only enough symbol data to know where to find the rest when
@@ -1060,7 +1065,7 @@ or quiet mode.
 
 File: gdb.info,  Node: Startup,  Prev: Mode Options,  Up: Invoking GDB
 
-2.1.3 What GDB Does During Startup
+2.1.3 What GDB Does during Startup
 ----------------------------------
 
 Here's the description of what GDB does during session startup:
@@ -1173,9 +1178,10 @@ session, there is no need to leave or su
 'shell COMMAND-STRING'
 '!COMMAND-STRING'
      Invoke a standard shell to execute COMMAND-STRING.  Note that no
-     space is needed between '!' and COMMAND-STRING.  If it exists, the
-     environment variable 'SHELL' determines which shell to run.
-     Otherwise GDB uses the default shell ('/bin/sh' on Unix systems,
+     space is needed between '!' and COMMAND-STRING.  On GNU and Unix
+     systems, the environment variable 'SHELL', if it exists, determines
+     which shell to run.  Otherwise GDB uses the default shell
+     ('/bin/sh' on GNU and Unix systems, 'cmd.exe' on MS-Windows,
      'COMMAND.COM' on MS-DOS, etc.).
 
    The utility 'make' is often needed in development environments.  You
@@ -1282,6 +1288,7 @@ alternatives available, if there is more
 * Command Settings::            How to change default behavior of commands
 * Completion::                  Command completion
 * Command Options::             Command options
+* Command aliases default args::        Automatically prepend default arguments to user-defined aliases
 * Help::                        How to ask GDB for help
 
 
@@ -1570,9 +1577,9 @@ expressions.  Also, it only examines the
 not the dynamic type.
 
 
-File: gdb.info,  Node: Command Options,  Next: Help,  Prev: Completion,  Up: Commands
+File: gdb.info,  Node: Command Options,  Next: Command aliases default args,  Prev: Completion,  Up: Commands
 
-3.4 Command options
+3.4 Command Options
 ===================
 
 Some commands accept options starting with a leading dash.  For example,
@@ -1625,9 +1632,86 @@ uppercase.
 Data.)
 
 
-File: gdb.info,  Node: Help,  Prev: Command Options,  Up: Commands
+File: gdb.info,  Node: Command aliases default args,  Next: Help,  Prev: Command Options,  Up: Commands
+
+3.5 Automatically Prepend Default Arguments to User-Defined Aliases
+===================================================================
+
+You can tell GDB to always prepend some default arguments to the list of
+arguments provided explicitly by the user when using a user-defined
+alias.
+
+   If you repeatedly use the same arguments or options for a command,
+you can define an alias for this command and tell GDB to automatically
+prepend these arguments or options to the list of arguments you type
+explicitly when using the alias(1).
+
+   For example, if you often use the command 'thread apply all'
+specifying to work on the threads in ascending order and to continue in
+case it encounters an error, you can tell GDB to automatically preprend
+the '-ascending' and '-c' options by using:
+
+     (gdb) alias thread apply asc-all = thread apply all -ascending -c
+
+   Once you have defined this alias with its default args, any time you
+type the 'thread apply asc-all' followed by 'some arguments', GDB will
+execute 'thread apply all -ascending -c some arguments'.
+
+   To have even less to type, you can also define a one word alias:
+     (gdb) alias t_a_c = thread apply all -ascending -c
+
+   As usual, unambiguous abbreviations can be used for ALIAS and
+DEFAULT-ARGS.
+
+   The different aliases of a command do not share their default args.
+For example, you define a new alias 'bt_ALL' showing all possible
+information and another alias 'bt_SMALL' showing very limited
+information using:
+     (gdb) alias bt_ALL = backtrace -entry-values both -frame-arg all \
+        -past-main -past-entry -full
+     (gdb) alias bt_SMALL = backtrace -entry-values no -frame-arg none \
+        -past-main off -past-entry off
+
+   (For more on using the 'alias' command, see *note Aliases::.)
+
+   Default args are not limited to the arguments and options of COMMAND,
+but can specify nested commands if COMMAND accepts such a nested command
+as argument.  For example, the below defines 'faalocalsoftype' that
+lists the frames having locals of a certain type, together with the
+matching local vars:
+     (gdb) alias faalocalsoftype = frame apply all info locals -q -t
+     (gdb) faalocalsoftype int
+     #1  0x55554f5e in sleeper_or_burner (v=0xdf50) at sleepers.c:86
+     i = 0
+     ret = 21845
+
+   This is also very useful to define an alias for a set of nested
+'with' commands to have a particular combination of temporary settings.
+For example, the below defines the alias 'pp10' that pretty prints an
+expression argument, with a maximum of 10 elements if the expression is
+a string or an array:
+     (gdb) alias pp10 = with print pretty -- with print elements 10 -- print
+   This defines the alias 'pp10' as being a sequence of 3 commands.  The
+first part 'with print pretty --' temporarily activates the setting 'set
+print pretty', then launches the command that follows the separator
+'--'.  The command following the first part is also a 'with' command
+that temporarily changes the setting 'set print elements' to 10, then
+launches the command that follows the second separator '--'.  The third
+part 'print' is the command the 'pp10' alias will launch, using the
+temporary values of the settings and the arguments explicitly given by
+the user.  For more information about the 'with' command usage, see
+*note Command Settings::.
+
+   ---------- Footnotes ----------
+
+   (1) GDB could easily accept default arguments for pre-defined
+commands and aliases, but it was deemed this would be confusing, and so
+is not allowed.
+
+
+File: gdb.info,  Node: Help,  Prev: Command aliases default args,  Up: Commands
 
-3.5 Getting Help
+3.6 Getting Help
 ================
 
 You can always ask GDB itself for information on its commands, using the
@@ -1641,7 +1725,7 @@ command 'help'.
           (gdb) help
           List of classes of commands:
 
-          aliases -- Aliases of other commands
+          aliases -- User-defined aliases of other commands
           breakpoints -- Making program stop at certain points
           data -- Examining data
           files -- Specifying and examining files
@@ -1664,17 +1748,25 @@ command 'help'.
 
 'help CLASS'
      Using one of the general help classes as an argument, you can get a
-     list of the individual commands in that class.  For example, here
-     is the help display for the class 'status':
+     list of the individual commands in that class.  If a command has
+     aliases, the aliases are given after the command name, separated by
+     commas.  If an alias has default arguments, the full definition of
+     the alias is given after the first line.  For example, here is the
+     help display for the class 'status':
 
           (gdb) help status
           Status inquiries.
 
           List of commands:
 
-          info -- Generic command for showing things
+          info, inf, i -- Generic command for showing things
                   about the program being debugged
-          show -- Generic command for showing things
+          info address, iamain  -- Describe where symbol SYM is stored.
+            alias iamain = info address main
+          info all-registers -- List of all registers and their contents,
+                  for selected stack frame.
+          ...
+          show, info set -- Generic command for showing things
                   about the debugger
 
           Type "help" followed by command name for full
@@ -1684,7 +1776,11 @@ command 'help'.
 
 'help COMMAND'
      With a command name as 'help' argument, GDB displays a short
-     paragraph on how to use that command.
+     paragraph on how to use that command.  If that command has one or
+     more aliases, GDB will display a first line with the command name
+     and all its aliases separated by commas.  This first line will be
+     followed by the full definition of all aliases having default
+     arguments.
 
 'apropos [-v] REGEXP'
      The 'apropos' command searches through all of the GDB commands, and
@@ -1699,10 +1795,7 @@ command 'help'.
      results in:
 
           alias -- Define a new command that is an alias of an existing command
-          aliases -- Aliases of other commands
-          d -- Delete some breakpoints or auto-display expressions
-          del -- Delete some breakpoints or auto-display expressions
-          delete -- Delete some breakpoints or auto-display expressions
+          aliases -- User-defined aliases of other commands
 
      while
 
@@ -1801,7 +1894,7 @@ exceptional in lacking corresponding 'se
 
 File: gdb.info,  Node: Running,  Next: Stopping,  Prev: Commands,  Up: Top
 
-4 Running Programs Under GDB
+4 Running Programs under GDB
 ****************************
 
 When you run a program under GDB, you must first generate debugging
@@ -1823,8 +1916,8 @@ child process.
 * Input/Output::                Your program's input and output
 * Attach::                      Debugging an already-running process
 * Kill Process::                Killing the child process
-
-* Inferiors and Programs::      Debugging multiple inferiors and programs
+* Inferiors Connections and Programs:: Debugging multiple inferiors
+					 connections and programs
 * Threads::                     Debugging programs with multiple threads
 * Forks::                       Debugging forks
 * Checkpoint/Restart::          Setting a _bookmark_ to return to later
@@ -1879,7 +1972,7 @@ format in GDB.
 
 File: gdb.info,  Node: Starting,  Next: Arguments,  Prev: Compilation,  Up: Running
 
-4.2 Starting your Program
+4.2 Starting Your Program
 =========================
 
 'run'
@@ -2049,25 +2142,25 @@ breakpoints.
 'set auto-connect-native-target off'
 'show auto-connect-native-target'
 
-     By default, if not connected to any target yet (e.g., with 'target
-     remote'), the 'run' command starts your program as a native process
-     under GDB, on your local machine.  If you're sure you don't want to
-     debug programs on your local machine, you can tell GDB to not
-     connect to the native target automatically with the 'set
-     auto-connect-native-target off' command.
-
-     If 'on', which is the default, and if GDB is not connected to a
-     target already, the 'run' command automaticaly connects to the
-     native target, if one is available.
+     By default, if the current inferior is not connected to any target
+     yet (e.g., with 'target remote'), the 'run' command starts your
+     program as a native process under GDB, on your local machine.  If
+     you're sure you don't want to debug programs on your local machine,
+     you can tell GDB to not connect to the native target automatically
+     with the 'set auto-connect-native-target off' command.
+
+     If 'on', which is the default, and if the current inferior is not
+     connected to a target already, the 'run' command automaticaly
+     connects to the native target, if one is available.
 
-     If 'off', and if GDB is not connected to a target already, the
-     'run' command fails with an error:
+     If 'off', and if the current inferior is not connected to a target
+     already, the 'run' command fails with an error:
 
           (gdb) run
           Don't know how to run.  Try "help target".
 
-     If GDB is already connected to a target, GDB always uses it with
-     the 'run' command.
+     If the current inferior is already connected to a target, GDB
+     always uses it with the 'run' command.
 
      In any case, you can explicitly connect to the native target with
      the 'target native' command.  For example,
@@ -2365,7 +2458,7 @@ program.
 
 File: gdb.info,  Node: Attach,  Next: Kill Process,  Prev: Input/Output,  Up: Running
 
-4.7 Debugging an Already-running Process
+4.7 Debugging an Already-Running Process
 ========================================
 
 'attach PROCESS-ID'
@@ -2390,6 +2483,25 @@ Specifying Source Directories: Source Pa
 'file' command to load the program.  *Note Commands to Specify Files:
 Files.
 
+   If the debugger can determine that the executable file running in the
+process it is attaching to does not match the current exec-file loaded
+by GDB, the option 'exec-file-mismatch' specifies how to handle the
+mismatch.  GDB tries to compare the files by comparing their build IDs
+(*note build ID::), if available.
+
+'set exec-file-mismatch 'ask|warn|off''
+
+     Whether to detect mismatch between the current executable file
+     loaded by GDB and the executable file used to start the process.
+     If 'ask', the default, display a warning and ask the user whether
+     to load the process executable file; if 'warn', just display a
+     warning; if 'off', don't attempt to detect a mismatch.  If the user
+     confirms loading the process executable file, then its symbols will
+     be loaded as well.
+
+'show exec-file-mismatch'
+     Show the current value of 'exec-file-mismatch'.
+
    The first thing GDB does after arranging to debug the specified
 process is to stop it.  You can examine and modify an attached process
 with all the GDB commands that are ordinarily available when you start
@@ -2415,7 +2527,7 @@ things; you can control whether or not y
 Messages/Warnings.).
 
 
-File: gdb.info,  Node: Kill Process,  Next: Inferiors and Programs,  Prev: Attach,  Up: Running
+File: gdb.info,  Node: Kill Process,  Next: Inferiors Connections and Programs,  Prev: Attach,  Up: Running
 
 4.8 Killing the Child Process
 =============================
@@ -2440,17 +2552,19 @@ the symbol table again (while trying to
 settings).
 
 
-File: gdb.info,  Node: Inferiors and Programs,  Next: Threads,  Prev: Kill Process,  Up: Running
+File: gdb.info,  Node: Inferiors Connections and Programs,  Next: Threads,  Prev: Kill Process,  Up: Running
 
-4.9 Debugging Multiple Inferiors and Programs
-=============================================
+4.9 Debugging Multiple Inferiors Connections and Programs
+=========================================================
 
 GDB lets you run and debug multiple programs in a single session.  In
 addition, GDB on some systems may let you run several programs
 simultaneously (otherwise you have to exit from one before starting
-another).  In the most general case, you can have multiple threads of
-execution in each of multiple processes, launched from multiple
-executables.
+another).  On some systems GDB may even let you debug several programs
+simultaneously on different remote systems.  In the most general case,
+you can have multiple threads of execution in each of multiple
+processes, launched from multiple executables, running on different
+machines.
 
    GDB represents the state of each program execution with an object
 called an "inferior".  An inferior typically corresponds to a process,
@@ -2476,7 +2590,11 @@ Each inferior may in turn have multiple
 
        2. the target system's inferior identifier
 
-       3. the name of the executable the inferior is running.
+       3. the target connection the inferior is bound to, including the
+          unique connection number assigned by GDB, and the protocol
+          used by the connection.
+
+       4. the name of the executable the inferior is running.
 
      An asterisk '*' preceding the GDB inferior number indicates the
      current inferior.
@@ -2484,9 +2602,37 @@ Each inferior may in turn have multiple
      For example,
 
      (gdb) info inferiors
-       Num  Description       Executable
-       2    process 2307      hello
-     * 1    process 3401      goodbye
+       Num  Description       Connection                      Executable
+     * 1    process 3401      1 (native)                      goodbye
+       2    process 2307      2 (extended-remote host:10000)  hello
+
+   To find out what open target connections exist at any moment, use
+'info connections':
+
+'info connections'
+     Print a list of all open target connections currently being managed
+     by GDB.  By default all connections are printed, but the argument
+     ID... - a space separated list of connections numbers - can be used
+     to limit the display to just the requested connections.
+
+     GDB displays for each connection (in this order):
+
+       1. the connection number assigned by GDB.
+
+       2. the protocol used by the connection.
+
+       3. a textual description of the protocol used by the connection.
+
+     An asterisk '*' preceding the connection number indicates the
+     connection of the current inferior.
+
+     For example,
+
+     (gdb) info connections
+       Num  What                        Description
+     * 1    extended-remote host:10000  Extended remote serial target in gdb-specific protocol
+       2    native                      Native process
+       3    core                        Local core dump file
 
    To switch focus between inferiors, use the 'inferior' command:
 
@@ -2507,13 +2653,22 @@ add inferiors to the debug session autom
 'fork' and 'exec'.  To remove inferiors from the debugging session use
 the 'remove-inferiors' command.
 
-'add-inferior [ -copies N ] [ -exec EXECUTABLE ]'
+'add-inferior [ -copies N ] [ -exec EXECUTABLE ] [-no-connection ]'
      Adds N inferiors to be run using EXECUTABLE as the executable; N
      defaults to 1.  If no executable is specified, the inferiors begins
      empty, with no program.  You can still assign or change the program
      assigned to the inferior at any time by using the 'file' command
      with the executable name as its argument.
 
+     By default, the new inferior begins connected to the same target
+     connection as the current inferior.  For example, if the current
+     inferior was connected to 'gdbserver' with 'target remote', then
+     the new inferior will be connected to the same 'gdbserver'
+     instance.  The '-no-connection' option starts the new inferior with
+     no connection yet.  You can then for example use the 'target
+     remote' command to connect to some other 'gdbserver' instance, use
+     'run' to spawn a local program, etc.
+
 'clone-inferior [ -copies N ] [ INFNO ]'
      Adds N inferiors ready to execute the same program as inferior
      INFNO; N defaults to 1, and INFNO defaults to the number of the
@@ -2521,15 +2676,15 @@ the 'remove-inferiors' command.
      run another instance of the inferior you are debugging.
 
           (gdb) info inferiors
-            Num  Description       Executable
-          * 1    process 29964     helloworld
+            Num  Description       Connection   Executable
+          * 1    process 29964     1 (native)   helloworld
           (gdb) clone-inferior
           Added inferior 2.
           1 inferiors added.
           (gdb) info inferiors
-            Num  Description       Executable
-            2    <null>            helloworld
-          * 1    process 29964     helloworld
+            Num  Description       Connection   Executable
+          * 1    process 29964     1 (native)   helloworld
+            2    <null>            1 (native)   helloworld
 
      You can now simply switch focus to inferior 2 and run it.
 
@@ -2624,7 +2779,7 @@ command.
      call.
 
 
-File: gdb.info,  Node: Threads,  Next: Forks,  Prev: Inferiors and Programs,  Up: Running
+File: gdb.info,  Node: Threads,  Next: Forks,  Prev: Inferiors Connections and Programs,  Up: Running
 
 4.10 Debugging Programs with Multiple Threads
 =============================================
@@ -2766,7 +2921,7 @@ thread that hit the breakpoint.
      For example,
 
      (gdb) info threads
-       Id   Target Id         Frame
+       Id   Target Id             Frame
      * 1    process 35 thread 13  main (argc=1, argv=0x7ffffff8)
        2    process 35 thread 23  0x34e5 in sigpause ()
        3    process 35 thread 27  0x34e5 in sigpause ()
@@ -2868,7 +3023,7 @@ a Solaris-specific command:
           (gdb) tfaas p some_local_var_i_do_not_remember_where_it_is
 
      The 'tfaas' command accepts the same options as the 'frame apply'
-     command.  *Note frame apply::.
+     command.  *Note frame apply: Frame Apply.
 
 'thread name [NAME]'
      This command assigns a name to the current thread.  If no argument
@@ -3039,13 +3194,14 @@ use the command 'set detach-on-fork'.
 control of all forked processes (including nested forks).  You can list
 the forked processes under the control of GDB by using the
 'info inferiors' command, and switch from one fork to another by using
-the 'inferior' command (*note Debugging Multiple Inferiors and Programs:
-Inferiors and Programs.).
+the 'inferior' command (*note Debugging Multiple Inferiors Connections
+and Programs: Inferiors Connections and Programs.).
 
    To quit debugging one of the forked processes, you can either detach
 from it by using the 'detach inferiors' command (allowing it to run
 independently), or kill it using the 'kill inferiors' command.  *Note
-Debugging Multiple Inferiors and Programs: Inferiors and Programs.
+Debugging Multiple Inferiors Connections and Programs: Inferiors
+Connections and Programs.
 
    If you ask to debug a child process and a 'vfork' is followed by an
 'exec', GDB executes the new target up to the first breakpoint in the
@@ -3308,7 +3464,7 @@ operated on.
 * Disabling::                   Disabling breakpoints
 * Conditions::                  Break conditions
 * Break Commands::              Breakpoint command lists
-* Dynamic Printf::              Dynamic printf
+* Dynamic printf::              Dynamic printf
 * Save Breakpoints::            How to save breakpoints in a file
 * Static Probe Points::         Listing static probe points
 * Error in Breakpoints::        "Cannot insert breakpoints"
@@ -4430,7 +4586,7 @@ it.
    Ignore counts apply to breakpoints, watchpoints, and catchpoints.
 
 
-File: gdb.info,  Node: Break Commands,  Next: Dynamic Printf,  Prev: Conditions,  Up: Breakpoints
+File: gdb.info,  Node: Break Commands,  Next: Dynamic printf,  Prev: Conditions,  Up: Breakpoints
 
 5.1.7 Breakpoint Command Lists
 ------------------------------
@@ -4509,9 +4665,9 @@ that no output is produced.  Here is an
      end
 
 
-File: gdb.info,  Node: Dynamic Printf,  Next: Save Breakpoints,  Prev: Break Commands,  Up: Breakpoints
+File: gdb.info,  Node: Dynamic printf,  Next: Save Breakpoints,  Prev: Break Commands,  Up: Breakpoints
 
-5.1.8 Dynamic Printf
+5.1.8 Dynamic printf
 --------------------
 
 The dynamic printf command 'dprintf' combines a breakpoint with
@@ -4606,9 +4762,9 @@ dynamic prints must be at locations with
 If evaluation fails, GDB will report an error.
 
 
-File: gdb.info,  Node: Save Breakpoints,  Next: Static Probe Points,  Prev: Dynamic Printf,  Up: Breakpoints
+File: gdb.info,  Node: Save Breakpoints,  Next: Static Probe Points,  Prev: Dynamic printf,  Up: Breakpoints
 
-5.1.9 How to save breakpoints to a file
+5.1.9 How to Save Breakpoints to a File
 ---------------------------------------
 
 To save breakpoint definitions to a file use the 'save breakpoints'
@@ -5040,7 +5196,7 @@ can use the following command to turn of
 
 File: gdb.info,  Node: Skipping Over Functions and Files,  Next: Signals,  Prev: Continuing and Stepping,  Up: Stopping
 
-5.3 Skipping Over Functions and Files
+5.3 Skipping over Functions and Files
 =====================================
 
 The program you are debugging may contain some functions which are
@@ -5414,7 +5570,7 @@ displayed.
 
 File: gdb.info,  Node: Thread Stops,  Prev: Signals,  Up: Stopping
 
-5.5 Stopping and Starting Multi-thread Programs
+5.5 Stopping and Starting Multi-Thread Programs
 ===============================================
 
 GDB supports debugging programs with multiple threads (*note Debugging
@@ -5832,7 +5988,7 @@ will still not be able to be placed.
 
 File: gdb.info,  Node: Reverse Execution,  Next: Process Record and Replay,  Prev: Stopping,  Up: Top
 
-6 Running programs backward
+6 Running Programs Backward
 ***************************
 
 When you are debugging a program, it is not unusual to realize that you
@@ -6847,107 +7003,3 @@ details.
      GDB command scripts, where the output might be unnecessary and
      distracting.
 
-
-File: gdb.info,  Node: Frame Info,  Next: Frame Apply,  Prev: Selection,  Up: Stack
-
-8.4 Information About a Frame
-=============================
-
-There are several other commands to print information about the selected
-stack frame.
-
-'frame'
-'f'
-     When used without any argument, this command does not change which
-     frame is selected, but prints a brief description of the currently
-     selected stack frame.  It can be abbreviated 'f'.  With an
-     argument, this command is used to select a stack frame.  *Note
-     Selecting a Frame: Selection.
-
-'info frame'
-'info f'
-     This command prints a verbose description of the selected stack
-     frame, including:
-
-        * the address of the frame
-        * the address of the next frame down (called by this frame)
-        * the address of the next frame up (caller of this frame)
-        * the language in which the source code corresponding to this
-          frame is written
-        * the address of the frame's arguments
-        * the address of the frame's local variables
-        * the program counter saved in it (the address of execution in
-          the caller frame)
-        * which registers were saved in the frame
-
-     The verbose description is useful when something has gone wrong
-     that has made the stack format fail to fit the usual conventions.
-
-'info frame [ FRAME-SELECTION-SPEC ]'
-'info f [ FRAME-SELECTION-SPEC ]'
-     Print a verbose description of the frame selected by
-     FRAME-SELECTION-SPEC.  The FRAME-SELECTION-SPEC is the same as for
-     the 'frame' command (*note Selecting a Frame: Selection.).  The
-     selected frame remains unchanged by this command.
-
-'info args [-q]'
-     Print the arguments of the selected frame, each on a separate line.
-
-     The optional flag '-q', which stands for 'quiet', disables printing
-     header information and messages explaining why no argument have
-     been printed.
-
-'info args [-q] [-t TYPE_REGEXP] [REGEXP]'
-     Like 'info args', but only print the arguments selected with the
-     provided regexp(s).
-
-     If REGEXP is provided, print only the arguments whose names match
-     the regular expression REGEXP.
-
-     If TYPE_REGEXP is provided, print only the arguments whose types,
-     as printed by the 'whatis' command, match the regular expression
-     TYPE_REGEXP.  If TYPE_REGEXP contains space(s), it should be
-     enclosed in quote characters.  If needed, use backslash to escape
-     the meaning of special characters or quotes.
-
-     If both REGEXP and TYPE_REGEXP are provided, an argument is printed
-     only if its name matches REGEXP and its type matches TYPE_REGEXP.
-
-'info locals [-q]'
-     Print the local variables of the selected frame, each on a separate
-     line.  These are all variables (declared either static or
-     automatic) accessible at the point of execution of the selected
-     frame.
-
-     The optional flag '-q', which stands for 'quiet', disables printing
-     header information and messages explaining why no local variables
-     have been printed.
-
-'info locals [-q] [-t TYPE_REGEXP] [REGEXP]'
-     Like 'info locals', but only print the local variables selected
-     with the provided regexp(s).
-
-     If REGEXP is provided, print only the local variables whose names
-     match the regular expression REGEXP.
-
-     If TYPE_REGEXP is provided, print only the local variables whose
-     types, as printed by the 'whatis' command, match the regular
-     expression TYPE_REGEXP.  If TYPE_REGEXP contains space(s), it
-     should be enclosed in quote characters.  If needed, use backslash
-     to escape the meaning of special characters or quotes.
-
-     If both REGEXP and TYPE_REGEXP are provided, a local variable is
-     printed only if its name matches REGEXP and its type matches
-     TYPE_REGEXP.
-
-     The command 'info locals -q -t TYPE_REGEXP' can usefully be
-     combined with the commands 'frame apply' and 'thread apply'.  For
-     example, your program might use Resource Acquisition Is
-     Initialization types (RAII) such as 'lock_something_t': each local
-     variable of type 'lock_something_t' automatically places a lock
-     that is destroyed when the variable goes out of scope.  You can
-     then list all acquired locks in your program by doing
-          thread apply all -s frame apply all -s info locals -q -t lock_something_t
-     or the equivalent shorter form
-          tfaas i lo -q -t lock_something_t
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-2 ./gdb/doc/gdb.info-2
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-2	2020-03-07 02:11:28.000000000 +0000
+++ ./gdb/doc/gdb.info-2	2021-05-21 02:00:14.000000000 +0000
@@ -1,6 +1,6 @@
-This is gdb.info, produced by makeinfo version 6.3 from gdb.texinfo.
+This is gdb.info, produced by makeinfo version 6.5 from gdb.texinfo.
 
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -21,9 +21,9 @@ 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.1.90.20200307-git.
+Source-Level Debugger' for GDB (GDB) Version 10.2.90.20210521-git.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -37,10 +37,114 @@ this GNU Manual.  Buying copies from GNU
 developing GNU and promoting software freedom."
 
 
+File: gdb.info,  Node: Frame Info,  Next: Frame Apply,  Prev: Selection,  Up: Stack
+
+8.4 Information about a Frame
+=============================
+
+There are several other commands to print information about the selected
+stack frame.
+
+'frame'
+'f'
+     When used without any argument, this command does not change which
+     frame is selected, but prints a brief description of the currently
+     selected stack frame.  It can be abbreviated 'f'.  With an
+     argument, this command is used to select a stack frame.  *Note
+     Selecting a Frame: Selection.
+
+'info frame'
+'info f'
+     This command prints a verbose description of the selected stack
+     frame, including:
+
+        * the address of the frame
+        * the address of the next frame down (called by this frame)
+        * the address of the next frame up (caller of this frame)
+        * the language in which the source code corresponding to this
+          frame is written
+        * the address of the frame's arguments
+        * the address of the frame's local variables
+        * the program counter saved in it (the address of execution in
+          the caller frame)
+        * which registers were saved in the frame
+
+     The verbose description is useful when something has gone wrong
+     that has made the stack format fail to fit the usual conventions.
+
+'info frame [ FRAME-SELECTION-SPEC ]'
+'info f [ FRAME-SELECTION-SPEC ]'
+     Print a verbose description of the frame selected by
+     FRAME-SELECTION-SPEC.  The FRAME-SELECTION-SPEC is the same as for
+     the 'frame' command (*note Selecting a Frame: Selection.).  The
+     selected frame remains unchanged by this command.
+
+'info args [-q]'
+     Print the arguments of the selected frame, each on a separate line.
+
+     The optional flag '-q', which stands for 'quiet', disables printing
+     header information and messages explaining why no argument have
+     been printed.
+
+'info args [-q] [-t TYPE_REGEXP] [REGEXP]'
+     Like 'info args', but only print the arguments selected with the
+     provided regexp(s).
+
+     If REGEXP is provided, print only the arguments whose names match
+     the regular expression REGEXP.
+
+     If TYPE_REGEXP is provided, print only the arguments whose types,
+     as printed by the 'whatis' command, match the regular expression
+     TYPE_REGEXP.  If TYPE_REGEXP contains space(s), it should be
+     enclosed in quote characters.  If needed, use backslash to escape
+     the meaning of special characters or quotes.
+
+     If both REGEXP and TYPE_REGEXP are provided, an argument is printed
+     only if its name matches REGEXP and its type matches TYPE_REGEXP.
+
+'info locals [-q]'
+     Print the local variables of the selected frame, each on a separate
+     line.  These are all variables (declared either static or
+     automatic) accessible at the point of execution of the selected
+     frame.
+
+     The optional flag '-q', which stands for 'quiet', disables printing
+     header information and messages explaining why no local variables
+     have been printed.
+
+'info locals [-q] [-t TYPE_REGEXP] [REGEXP]'
+     Like 'info locals', but only print the local variables selected
+     with the provided regexp(s).
+
+     If REGEXP is provided, print only the local variables whose names
+     match the regular expression REGEXP.
+
+     If TYPE_REGEXP is provided, print only the local variables whose
+     types, as printed by the 'whatis' command, match the regular
+     expression TYPE_REGEXP.  If TYPE_REGEXP contains space(s), it
+     should be enclosed in quote characters.  If needed, use backslash
+     to escape the meaning of special characters or quotes.
+
+     If both REGEXP and TYPE_REGEXP are provided, a local variable is
+     printed only if its name matches REGEXP and its type matches
+     TYPE_REGEXP.
+
+     The command 'info locals -q -t TYPE_REGEXP' can usefully be
+     combined with the commands 'frame apply' and 'thread apply'.  For
+     example, your program might use Resource Acquisition Is
+     Initialization types (RAII) such as 'lock_something_t': each local
+     variable of type 'lock_something_t' automatically places a lock
+     that is destroyed when the variable goes out of scope.  You can
+     then list all acquired locks in your program by doing
+          thread apply all -s frame apply all -s info locals -q -t lock_something_t
+     or the equivalent shorter form
+          tfaas i lo -q -t lock_something_t
+
+
 File: gdb.info,  Node: Frame Apply,  Next: Frame Filter Management,  Prev: Frame Info,  Up: Stack
 
-8.5 Applying a Command to Several Frames.
-=========================================
+8.5 Applying a Command to Several Frames
+========================================
 
 'frame apply [all | COUNT | -COUNT | level LEVEL...] [OPTION]... COMMAND'
      The 'frame apply' command allows you to apply the named COMMAND to
@@ -142,7 +246,7 @@ File: gdb.info,  Node: Frame Apply,  Nex
           (gdb) faas p some_local_var_i_do_not_remember_where_it_is
 
      The 'faas' command accepts the same options as the 'frame apply'
-     command.  *Note frame apply::.
+     command.  *Note frame apply: Frame Apply.
 
      Note that the command 'tfaas COMMAND' applies COMMAND on all frames
      of all threads.  See *Note Threads: Threads.
@@ -150,8 +254,8 @@ File: gdb.info,  Node: Frame Apply,  Nex
 
 File: gdb.info,  Node: Frame Filter Management,  Prev: Frame Apply,  Up: Stack
 
-8.6 Management of Frame Filters.
-================================
+8.6 Management of Frame Filters
+===============================
 
 Frame filters are Python based utilities to manage and decorate the
 output of frames.  *Note Frame Filter API::, for further information.
@@ -622,7 +726,7 @@ parts of the program:
           Edit the file containing FUNCTION at the beginning of its
           definition.
 
-9.3.1 Choosing your Editor
+9.3.1 Choosing Your Editor
 --------------------------
 
 You can customize GDB to use any editor you want (1).  By default, it is
@@ -3164,7 +3268,8 @@ values likely to be useful.
 
 '$_inferior'
      The number of the current inferior.  *Note Debugging Multiple
-     Inferiors and Programs: Inferiors and Programs.
+     Inferiors Connections and Programs: Inferiors Connections and
+     Programs.
 
 '$_thread'
      The thread number of the current thread.  *Note thread numbers::.
@@ -3855,7 +3960,7 @@ checking.  The following commands contro
 
 File: gdb.info,  Node: Dump/Restore Files,  Next: Core File Generation,  Prev: Memory Region Attributes,  Up: Data
 
-10.18 Copy Between Memory and a File
+10.18 Copy between Memory and a File
 ====================================
 
 You can use the commands 'dump', 'append', and 'restore' to copy data
@@ -4168,8 +4273,8 @@ File: gdb.info,  Node: Caching Target Da
 
 GDB caches data exchanged between the debugger and a target.  Each cache
 is associated with the address space of the inferior.  *Note Inferiors
-and Programs::, about inferior and address space.  Such caching
-generally improves performance in remote debugging (*note Remote
+Connections and Programs::, about inferior and address space.  Such
+caching generally improves performance in remote debugging (*note Remote
 Debugging::), because it reduces the overhead of the remote protocol by
 bundling memory reads and writes into large chunks.  Unfortunately,
 simply caching everything would lead to incorrect results, since GDB
@@ -6314,7 +6419,7 @@ language you use to build expressions is
 
 File: gdb.info,  Node: Setting,  Next: Show,  Up: Languages
 
-15.1 Switching Between Source Languages
+15.1 Switching between Source Languages
 =======================================
 
 There are two ways to control the working language--either have GDB set
@@ -7106,7 +7211,7 @@ designed specifically for use with C++.
 
 File: gdb.info,  Node: Decimal Floating Point,  Prev: Debugging C Plus Plus,  Up: C
 
-15.4.1.8 Decimal Floating Point format
+15.4.1.8 Decimal Floating Point Format
 ......................................
 
 GDB can examine, set and perform computations with numbers in decimal
@@ -7131,255 +7236,3 @@ underflow, overflow and divide by zero e
 to inspect '_Decimal128' values stored in floating point registers.  See
 *note PowerPC: PowerPC. for more details.
 
-
-File: gdb.info,  Node: D,  Next: Go,  Prev: C,  Up: Supported Languages
-
-15.4.2 D
---------
-
-GDB can be used to debug programs written in D and compiled with GDC,
-LDC or DMD compilers.  Currently GDB supports only one D specific
-feature -- dynamic arrays.
-
-
-File: gdb.info,  Node: Go,  Next: Objective-C,  Prev: D,  Up: Supported Languages
-
-15.4.3 Go
----------
-
-GDB can be used to debug programs written in Go and compiled with
-'gccgo' or '6g' compilers.
-
-   Here is a summary of the Go-specific features and restrictions:
-
-'The current Go package'
-     The name of the current package does not need to be specified when
-     specifying global variables and functions.
-
-     For example, given the program:
-
-          package main
-          var myglob = "Shall we?"
-          func main () {
-            // ...
-          }
-
-     When stopped inside 'main' either of these work:
-
-          (gdb) p myglob
-          (gdb) p main.myglob
-
-'Builtin Go types'
-     The 'string' type is recognized by GDB and is printed as a string.
-
-'Builtin Go functions'
-     The GDB expression parser recognizes the 'unsafe.Sizeof' function
-     and handles it internally.
-
-'Restrictions on Go expressions'
-     All Go operators are supported except '&^'.  The Go '_' "blank
-     identifier" is not supported.  Automatic dereferencing of pointers
-     is not supported.
-
-
-File: gdb.info,  Node: Objective-C,  Next: OpenCL C,  Prev: Go,  Up: Supported Languages
-
-15.4.4 Objective-C
-------------------
-
-This section provides information about some commands and command
-options that are useful for debugging Objective-C code.  See also *note
-info classes: Symbols, and *note info selectors: Symbols, for a few more
-commands specific to Objective-C support.
-
-* Menu:
-
-* Method Names in Commands::
-* The Print Command with Objective-C::
-
-
-File: gdb.info,  Node: Method Names in Commands,  Next: The Print Command with Objective-C,  Up: Objective-C
-
-15.4.4.1 Method Names in Commands
-.................................
-
-The following commands have been extended to accept Objective-C method
-names as line specifications:
-
-   * 'clear'
-   * 'break'
-   * 'info line'
-   * 'jump'
-   * 'list'
-
-   A fully qualified Objective-C method name is specified as
-
-     -[CLASS METHODNAME]
-
-   where the minus sign is used to indicate an instance method and a
-plus sign (not shown) is used to indicate a class method.  The class
-name CLASS and method name METHODNAME are enclosed in brackets, similar
-to the way messages are specified in Objective-C source code.  For
-example, to set a breakpoint at the 'create' instance method of class
-'Fruit' in the program currently being debugged, enter:
-
-     break -[Fruit create]
-
-   To list ten program lines around the 'initialize' class method,
-enter:
-
-     list +[NSText initialize]
-
-   In the current version of GDB, the plus or minus sign is required.
-In future versions of GDB, the plus or minus sign will be optional, but
-you can use it to narrow the search.  It is also possible to specify
-just a method name:
-
-     break create
-
-   You must specify the complete method name, including any colons.  If
-your program's source files contain more than one 'create' method,
-you'll be presented with a numbered list of classes that implement that
-method.  Indicate your choice by number, or type '0' to exit if none
-apply.
-
-   As another example, to clear a breakpoint established at the
-'makeKeyAndOrderFront:' method of the 'NSWindow' class, enter:
-
-     clear -[NSWindow makeKeyAndOrderFront:]
-
-
-File: gdb.info,  Node: The Print Command with Objective-C,  Prev: Method Names in Commands,  Up: Objective-C
-
-15.4.4.2 The Print Command With Objective-C
-...........................................
-
-The print command has also been extended to accept methods.  For
-example:
-
-     print -[OBJECT hash]
-
-will tell GDB to send the 'hash' message to OBJECT and print the result.
-Also, an additional command has been added, 'print-object' or 'po' for
-short, which is meant to print the description of an object.  However,
-this command may only work with certain Objective-C libraries that have
-a particular hook function, '_NSPrintForDebugger', defined.
-
-
-File: gdb.info,  Node: OpenCL C,  Next: Fortran,  Prev: Objective-C,  Up: Supported Languages
-
-15.4.5 OpenCL C
----------------
-
-This section provides information about GDBs OpenCL C support.
-
-* Menu:
-
-* OpenCL C Datatypes::
-* OpenCL C Expressions::
-* OpenCL C Operators::
-
-
-File: gdb.info,  Node: OpenCL C Datatypes,  Next: OpenCL C Expressions,  Up: OpenCL C
-
-15.4.5.1 OpenCL C Datatypes
-...........................
-
-GDB supports the builtin scalar and vector datatypes specified by OpenCL
-1.1.  In addition the half- and double-precision floating point data
-types of the 'cl_khr_fp16' and 'cl_khr_fp64' OpenCL extensions are also
-known to GDB.
-
-
-File: gdb.info,  Node: OpenCL C Expressions,  Next: OpenCL C Operators,  Prev: OpenCL C Datatypes,  Up: OpenCL C
-
-15.4.5.2 OpenCL C Expressions
-.............................
-
-GDB supports accesses to vector components including the access as
-lvalue where possible.  Since OpenCL C is based on C99 most C
-expressions supported by GDB can be used as well.
-
-
-File: gdb.info,  Node: OpenCL C Operators,  Prev: OpenCL C Expressions,  Up: OpenCL C
-
-15.4.5.3 OpenCL C Operators
-...........................
-
-GDB supports the operators specified by OpenCL 1.1 for scalar and vector
-data types.
-
-
-File: gdb.info,  Node: Fortran,  Next: Pascal,  Prev: OpenCL C,  Up: Supported Languages
-
-15.4.6 Fortran
---------------
-
-GDB can be used to debug programs written in Fortran, but it currently
-supports only the features of Fortran 77 language.
-
-   Some Fortran compilers (GNU Fortran 77 and Fortran 95 compilers among
-them) append an underscore to the names of variables and functions.
-When you debug programs compiled by those compilers, you will need to
-refer to variables and functions with a trailing underscore.
-
-* Menu:
-
-* Fortran Operators::           Fortran operators and expressions
-* Fortran Defaults::            Default settings for Fortran
-* Special Fortran Commands::    Special GDB commands for Fortran
-
-
-File: gdb.info,  Node: Fortran Operators,  Next: Fortran Defaults,  Up: Fortran
-
-15.4.6.1 Fortran Operators and Expressions
-..........................................
-
-Operators must be defined on values of specific types.  For instance,
-'+' is defined on numbers, but not on characters or other non-
-arithmetic types.  Operators are often defined on groups of types.
-
-'**'
-     The exponentiation operator.  It raises the first operand to the
-     power of the second one.
-
-':'
-     The range operator.  Normally used in the form of array(low:high)
-     to represent a section of array.
-
-'%'
-     The access component operator.  Normally used to access elements in
-     derived types.  Also suitable for unions.  As unions aren't part of
-     regular Fortran, this can only happen when accessing a register
-     that uses a gdbarch-defined union type.
-'::'
-     The scope operator.  Normally used to access variables in modules
-     or to set breakpoints on subroutines nested in modules or in other
-     subroutines (internal subroutines).
-
-
-File: gdb.info,  Node: Fortran Defaults,  Next: Special Fortran Commands,  Prev: Fortran Operators,  Up: Fortran
-
-15.4.6.2 Fortran Defaults
-.........................
-
-Fortran symbols are usually case-insensitive, so GDB by default uses
-case-insensitive matches for Fortran symbols.  You can change that with
-the 'set case-insensitive' command, see *note Symbols::, for the
-details.
-
-
-File: gdb.info,  Node: Special Fortran Commands,  Prev: Fortran Defaults,  Up: Fortran
-
-15.4.6.3 Special Fortran Commands
-.................................
-
-GDB has some commands to support Fortran-specific features, such as
-displaying common blocks.
-
-'info common [COMMON-NAME]'
-     This command prints the values contained in the Fortran 'COMMON'
-     block whose name is COMMON-NAME.  With no argument, the names of
-     all 'COMMON' blocks visible at the current program location are
-     printed.
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-3 ./gdb/doc/gdb.info-3
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-3	2020-03-07 02:11:29.000000000 +0000
+++ ./gdb/doc/gdb.info-3	2021-05-21 02:00:15.000000000 +0000
@@ -1,6 +1,6 @@
-This is gdb.info, produced by makeinfo version 6.3 from gdb.texinfo.
+This is gdb.info, produced by makeinfo version 6.5 from gdb.texinfo.
 
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -21,9 +21,9 @@ 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.1.90.20200307-git.
+Source-Level Debugger' for GDB (GDB) Version 10.2.90.20210521-git.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -37,6 +37,258 @@ this GNU Manual.  Buying copies from GNU
 developing GNU and promoting software freedom."
 
 
+File: gdb.info,  Node: D,  Next: Go,  Prev: C,  Up: Supported Languages
+
+15.4.2 D
+--------
+
+GDB can be used to debug programs written in D and compiled with GDC,
+LDC or DMD compilers.  Currently GDB supports only one D specific
+feature -- dynamic arrays.
+
+
+File: gdb.info,  Node: Go,  Next: Objective-C,  Prev: D,  Up: Supported Languages
+
+15.4.3 Go
+---------
+
+GDB can be used to debug programs written in Go and compiled with
+'gccgo' or '6g' compilers.
+
+   Here is a summary of the Go-specific features and restrictions:
+
+'The current Go package'
+     The name of the current package does not need to be specified when
+     specifying global variables and functions.
+
+     For example, given the program:
+
+          package main
+          var myglob = "Shall we?"
+          func main () {
+            // ...
+          }
+
+     When stopped inside 'main' either of these work:
+
+          (gdb) p myglob
+          (gdb) p main.myglob
+
+'Builtin Go types'
+     The 'string' type is recognized by GDB and is printed as a string.
+
+'Builtin Go functions'
+     The GDB expression parser recognizes the 'unsafe.Sizeof' function
+     and handles it internally.
+
+'Restrictions on Go expressions'
+     All Go operators are supported except '&^'.  The Go '_' "blank
+     identifier" is not supported.  Automatic dereferencing of pointers
+     is not supported.
+
+
+File: gdb.info,  Node: Objective-C,  Next: OpenCL C,  Prev: Go,  Up: Supported Languages
+
+15.4.4 Objective-C
+------------------
+
+This section provides information about some commands and command
+options that are useful for debugging Objective-C code.  See also *note
+info classes: Symbols, and *note info selectors: Symbols, for a few more
+commands specific to Objective-C support.
+
+* Menu:
+
+* Method Names in Commands::
+* The Print Command with Objective-C::
+
+
+File: gdb.info,  Node: Method Names in Commands,  Next: The Print Command with Objective-C,  Up: Objective-C
+
+15.4.4.1 Method Names in Commands
+.................................
+
+The following commands have been extended to accept Objective-C method
+names as line specifications:
+
+   * 'clear'
+   * 'break'
+   * 'info line'
+   * 'jump'
+   * 'list'
+
+   A fully qualified Objective-C method name is specified as
+
+     -[CLASS METHODNAME]
+
+   where the minus sign is used to indicate an instance method and a
+plus sign (not shown) is used to indicate a class method.  The class
+name CLASS and method name METHODNAME are enclosed in brackets, similar
+to the way messages are specified in Objective-C source code.  For
+example, to set a breakpoint at the 'create' instance method of class
+'Fruit' in the program currently being debugged, enter:
+
+     break -[Fruit create]
+
+   To list ten program lines around the 'initialize' class method,
+enter:
+
+     list +[NSText initialize]
+
+   In the current version of GDB, the plus or minus sign is required.
+In future versions of GDB, the plus or minus sign will be optional, but
+you can use it to narrow the search.  It is also possible to specify
+just a method name:
+
+     break create
+
+   You must specify the complete method name, including any colons.  If
+your program's source files contain more than one 'create' method,
+you'll be presented with a numbered list of classes that implement that
+method.  Indicate your choice by number, or type '0' to exit if none
+apply.
+
+   As another example, to clear a breakpoint established at the
+'makeKeyAndOrderFront:' method of the 'NSWindow' class, enter:
+
+     clear -[NSWindow makeKeyAndOrderFront:]
+
+
+File: gdb.info,  Node: The Print Command with Objective-C,  Prev: Method Names in Commands,  Up: Objective-C
+
+15.4.4.2 The Print Command with Objective-C
+...........................................
+
+The print command has also been extended to accept methods.  For
+example:
+
+     print -[OBJECT hash]
+
+will tell GDB to send the 'hash' message to OBJECT and print the result.
+Also, an additional command has been added, 'print-object' or 'po' for
+short, which is meant to print the description of an object.  However,
+this command may only work with certain Objective-C libraries that have
+a particular hook function, '_NSPrintForDebugger', defined.
+
+
+File: gdb.info,  Node: OpenCL C,  Next: Fortran,  Prev: Objective-C,  Up: Supported Languages
+
+15.4.5 OpenCL C
+---------------
+
+This section provides information about GDBs OpenCL C support.
+
+* Menu:
+
+* OpenCL C Datatypes::
+* OpenCL C Expressions::
+* OpenCL C Operators::
+
+
+File: gdb.info,  Node: OpenCL C Datatypes,  Next: OpenCL C Expressions,  Up: OpenCL C
+
+15.4.5.1 OpenCL C Datatypes
+...........................
+
+GDB supports the builtin scalar and vector datatypes specified by OpenCL
+1.1.  In addition the half- and double-precision floating point data
+types of the 'cl_khr_fp16' and 'cl_khr_fp64' OpenCL extensions are also
+known to GDB.
+
+
+File: gdb.info,  Node: OpenCL C Expressions,  Next: OpenCL C Operators,  Prev: OpenCL C Datatypes,  Up: OpenCL C
+
+15.4.5.2 OpenCL C Expressions
+.............................
+
+GDB supports accesses to vector components including the access as
+lvalue where possible.  Since OpenCL C is based on C99 most C
+expressions supported by GDB can be used as well.
+
+
+File: gdb.info,  Node: OpenCL C Operators,  Prev: OpenCL C Expressions,  Up: OpenCL C
+
+15.4.5.3 OpenCL C Operators
+...........................
+
+GDB supports the operators specified by OpenCL 1.1 for scalar and vector
+data types.
+
+
+File: gdb.info,  Node: Fortran,  Next: Pascal,  Prev: OpenCL C,  Up: Supported Languages
+
+15.4.6 Fortran
+--------------
+
+GDB can be used to debug programs written in Fortran, but it currently
+supports only the features of Fortran 77 language.
+
+   Some Fortran compilers (GNU Fortran 77 and Fortran 95 compilers among
+them) append an underscore to the names of variables and functions.
+When you debug programs compiled by those compilers, you will need to
+refer to variables and functions with a trailing underscore.
+
+* Menu:
+
+* Fortran Operators::           Fortran operators and expressions
+* Fortran Defaults::            Default settings for Fortran
+* Special Fortran Commands::    Special GDB commands for Fortran
+
+
+File: gdb.info,  Node: Fortran Operators,  Next: Fortran Defaults,  Up: Fortran
+
+15.4.6.1 Fortran Operators and Expressions
+..........................................
+
+Operators must be defined on values of specific types.  For instance,
+'+' is defined on numbers, but not on characters or other non-
+arithmetic types.  Operators are often defined on groups of types.
+
+'**'
+     The exponentiation operator.  It raises the first operand to the
+     power of the second one.
+
+':'
+     The range operator.  Normally used in the form of array(low:high)
+     to represent a section of array.
+
+'%'
+     The access component operator.  Normally used to access elements in
+     derived types.  Also suitable for unions.  As unions aren't part of
+     regular Fortran, this can only happen when accessing a register
+     that uses a gdbarch-defined union type.
+'::'
+     The scope operator.  Normally used to access variables in modules
+     or to set breakpoints on subroutines nested in modules or in other
+     subroutines (internal subroutines).
+
+
+File: gdb.info,  Node: Fortran Defaults,  Next: Special Fortran Commands,  Prev: Fortran Operators,  Up: Fortran
+
+15.4.6.2 Fortran Defaults
+.........................
+
+Fortran symbols are usually case-insensitive, so GDB by default uses
+case-insensitive matches for Fortran symbols.  You can change that with
+the 'set case-insensitive' command, see *note Symbols::, for the
+details.
+
+
+File: gdb.info,  Node: Special Fortran Commands,  Prev: Fortran Defaults,  Up: Fortran
+
+15.4.6.3 Special Fortran Commands
+.................................
+
+GDB has some commands to support Fortran-specific features, such as
+displaying common blocks.
+
+'info common [COMMON-NAME]'
+     This command prints the values contained in the Fortran 'COMMON'
+     block whose name is COMMON-NAME.  With no argument, the names of
+     all 'COMMON' blocks visible at the current program location are
+     printed.
+
+
 File: gdb.info,  Node: Pascal,  Next: Rust,  Prev: Fortran,  Up: Supported Languages
 
 15.4.7 Pascal
@@ -914,7 +1166,7 @@ additions specific to Ada:
 
 File: gdb.info,  Node: Overloading support for Ada,  Next: Stopping Before Main Program,  Prev: Additions to Ada,  Up: Ada
 
-15.4.10.4 Overloading support for Ada
+15.4.10.4 Overloading Support for Ada
 .....................................
 
 The debugger supports limited overloading.  Given a subprogram call in
@@ -1177,7 +1429,7 @@ Threads::).  GDB provides the following
 
 File: gdb.info,  Node: Ada Tasks and Core Files,  Next: Ravenscar Profile,  Prev: Ada Tasks,  Up: Ada
 
-15.4.10.8 Tasking Support when Debugging Core Files
+15.4.10.8 Tasking Support When Debugging Core Files
 ...................................................
 
 When inspecting a core file, as opposed to debugging a live program,
@@ -1195,7 +1447,7 @@ file before inspecting it with GDB.
 
 File: gdb.info,  Node: Ravenscar Profile,  Next: Ada Settings,  Prev: Ada Tasks and Core Files,  Up: Ada
 
-15.4.10.9 Tasking Support when using the Ravenscar Profile
+15.4.10.9 Tasking Support When Using the Ravenscar Profile
 ..........................................................
 
 The "Ravenscar Profile" is a subset of the Ada tasking features,
@@ -1218,6 +1470,29 @@ requirements.
      Show whether it is possible to switch from task to task in a
      program using the Ravenscar Profile.
 
+   When Ravenscar task-switching is enabled, Ravenscar tasks are
+announced by GDB as if they were threads:
+
+     (gdb) continue
+     [New Ravenscar Thread 0x2b8f0]
+
+   Both Ravenscar tasks and the underlying CPU threads will show up in
+the output of 'info threads':
+
+     (gdb) info threads
+       Id   Target Id                  Frame
+       1    Thread 1 (CPU#0 [running]) simple () at simple.adb:10
+       2    Thread 2 (CPU#1 [running]) 0x0000000000003d34 in __gnat_initialize_cpu_devices ()
+       3    Thread 3 (CPU#2 [running]) 0x0000000000003d28 in __gnat_initialize_cpu_devices ()
+       4    Thread 4 (CPU#3 [halted ]) 0x000000000000c6ec in system.task_primitives.operations.idle ()
+     * 5    Ravenscar Thread 0x2b8f0   simple () at simple.adb:10
+       6    Ravenscar Thread 0x2f150   0x000000000000c6ec in system.task_primitives.operations.idle ()
+
+   One known limitation of the Ravenscar support in GDB is that it isn't
+currently possible to single-step through the runtime initialization
+sequence.  If you need to debug this code, you should use 'set ravenscar
+task-switching off'.
+
 
 File: gdb.info,  Node: Ada Settings,  Next: Ada Glitches,  Prev: Ravenscar Profile,  Up: Ada
 
@@ -2220,7 +2495,7 @@ has already executed, in order to examin
 
 File: gdb.info,  Node: Signaling,  Next: Returning,  Prev: Jumping,  Up: Altering
 
-17.3 Giving your Program a Signal
+17.3 Giving Your Program a Signal
 =================================
 
 'signal SIGNAL'
@@ -2424,7 +2699,7 @@ controlled by the 'set unwind-on-termina
 'show may-call-functions'
      Show permission to call functions in the program.
 
-17.5.1 Calling functions with no debug info
+17.5.1 Calling Functions with No Debug Info
 -------------------------------------------
 
 Sometimes, a function you wish to call is missing debug information.  In
@@ -2509,7 +2784,7 @@ turn on internal debugging flags, or eve
 
 File: gdb.info,  Node: Compiling and Injecting Code,  Prev: Patching,  Up: Altering
 
-17.7 Compiling and injecting code in GDB
+17.7 Compiling and Injecting Code in GDB
 ========================================
 
 GDB supports on-demand compilation and code injection into programs
@@ -2603,7 +2878,7 @@ The process of compiling and injecting t
      Displays the current state of displaying debugging information for
      C++ type conversion.
 
-17.7.1 Compilation options for the 'compile' command
+17.7.1 Compilation Options for the 'compile' Command
 ----------------------------------------------------
 
 GDB needs to specify the right compilation options for the code to be
@@ -2641,7 +2916,7 @@ You can override compilation options usi
      does not show all the options actually used during compilation, use
      *note set debug compile:: for that.
 
-17.7.2 Caveats when using the 'compile' command
+17.7.2 Caveats When Using the 'compile' Command
 -----------------------------------------------
 
 There are a few caveats to keep in mind when using the 'compile'
@@ -2779,7 +3054,7 @@ C code examples and caveats
      to those variables will generate a compiler error which GDB will
      print to the console.
 
-17.7.3 Compiler search for the 'compile' command
+17.7.3 Compiler Search for the 'compile' Command
 ------------------------------------------------
 
 GDB needs to find GCC for the inferior being debugged which may not be
@@ -3022,7 +3297,7 @@ files are useful.
           add symbol table from file "/home/user/gdb/mylib.so" at
               .text_addr = 0x7ffff7ff9480
           (y or n) y
-          Reading symbols from /home/user/gdb/mylib.so...done.
+          Reading symbols from /home/user/gdb/mylib.so...
           (gdb) remove-symbol-file -a 0x7ffff7ff9480
           Remove symbol table from file "/home/user/gdb/mylib.so"? (y or n) y
           (gdb)
@@ -3194,9 +3469,9 @@ command:
 of shared library events happen.  The best way to do this is to use
 'catch load' and 'catch unload' (*note Set Catchpoints::).
 
-   GDB also supports the the 'set stop-on-solib-events' command for
-this.  This command exists for historical reasons.  It is less useful
-than setting a catchpoint, because it does not allow for conditions or
+   GDB also supports the 'set stop-on-solib-events' command for this.
+This command exists for historical reasons.  It is less useful than
+setting a catchpoint, because it does not allow for conditions or
 commands as a catchpoint does.
 
 'set stop-on-solib-events'
@@ -3648,7 +3923,7 @@ This computation does not apply to the "
 
 File: gdb.info,  Node: MiniDebugInfo,  Next: Index Files,  Prev: Separate Debug Files,  Up: GDB Files
 
-18.4 Debugging information in a special section
+18.4 Debugging Information in a Special Section
 ===============================================
 
 Some systems ship pre-built executables and libraries that have a
@@ -3770,11 +4045,9 @@ done before gdb reads the file.  The fol
 
      $ gdb -iex "set use-deprecated-index-sections on" <program>
 
-   There are currently some limitation on indices.  They only work when
-using DWARF debugging information, not stabs.  And, only the '-dwarf-5'
-index works for programs using Ada.
+   Indices only work when using DWARF debugging information, not stabs.
 
-18.5.1 Automatic symbol index cache
+18.5.1 Automatic Symbol Index Cache
 -----------------------------------
 
 It is possible for GDB to automatically save a copy of this index in a
@@ -4280,6 +4553,13 @@ Attaching
      'gdbserver' using the '--attach' option (*note Running
      gdbserver::).
 
+     Some remote targets allow GDB to determine the executable file
+     running in the process the debugger is attaching to.  In such a
+     case, GDB uses the value of 'exec-file-mismatch' to handle a
+     possible mismatch between the executable file name running in the
+     process and the name of the current exec-file loaded by GDB (*note
+     set exec-file-mismatch::).
+
 20.1.2 Host and Target Files
 ----------------------------
 
@@ -4475,7 +4755,7 @@ to the target.
 
 File: gdb.info,  Node: File Transfer,  Next: Server,  Prev: Connecting,  Up: Remote Debugging
 
-20.2 Sending files to a remote system
+20.2 Sending Files to a Remote System
 =====================================
 
 Some remote targets offer the ability to transfer files over the same
@@ -4604,7 +4884,7 @@ has the 'pidof' utility:
 multiple threads, most versions of 'pidof' support the '-s' option to
 only return the first process ID.
 
-20.3.1.2 TCP port allocation lifecycle of 'gdbserver'
+20.3.1.2 TCP Port Allocation Lifecycle of 'gdbserver'
 .....................................................
 
 This section applies only when 'gdbserver' is run to listen on a TCP
@@ -4767,7 +5047,7 @@ commands.
      processes it created.  Use 'monitor exit' to terminate 'gdbserver'
      at the end of a multi-process mode debug session.
 
-20.3.4 Tracepoints support in 'gdbserver'
+20.3.4 Tracepoints Support in 'gdbserver'
 -----------------------------------------
 
 On some targets, 'gdbserver' supports tracepoints, fast tracepoints and
@@ -5389,7 +5669,7 @@ subroutines which 'GCC' generates as inl
 
 File: gdb.info,  Node: Debug Session,  Prev: Bootstrapping,  Up: Remote Stub
 
-20.5.3 Putting it All Together
+20.5.3 Putting It All Together
 ------------------------------
 
 In summary, when your program is ready to debug, you must follow these
@@ -5527,8 +5807,8 @@ running on your system.
 to examine the image of a running process using file-system subroutines.
 This facility is supported on GNU/Linux and Solaris systems.
 
-   On FreeBSD systems, system control nodes are used to query process
-information.
+   On FreeBSD and NetBSD systems, system control nodes are used to query
+process information.
 
    In addition, some systems may provide additional process information
 in core files.  Note that a core file may include a subset of the
@@ -5552,15 +5832,15 @@ currently available from cores created o
 
 'info proc cmdline'
      Show the original command line of the process.  This command is
-     supported on GNU/Linux and FreeBSD.
+     supported on GNU/Linux, FreeBSD and NetBSD.
 
 'info proc cwd'
      Show the current working directory of the process.  This command is
-     supported on GNU/Linux and FreeBSD.
+     supported on GNU/Linux, FreeBSD and NetBSD.
 
 'info proc exe'
      Show the name of executable of the process.  This command is
-     supported on GNU/Linux and FreeBSD.
+     supported on GNU/Linux, FreeBSD and NetBSD.
 
 'info proc files'
      Show the file descriptors open by the process.  For each open file
@@ -5591,10 +5871,11 @@ currently available from cores created o
 
 'info proc mappings'
      Report the memory address space ranges accessible in a process.  On
-     Solaris and FreeBSD systems, each memory range includes information
-     on whether the process has read, write, or execute access rights to
-     each range.  On GNU/Linux and FreeBSD systems, each memory range
-     includes the object file which is mapped to that range.
+     Solaris, FreeBSD and NetBSD systems, each memory range includes
+     information on whether the process has read, write, or execute
+     access rights to each range.  On GNU/Linux, FreeBSD and NetBSD
+     systems, each memory range includes the object file which is mapped
+     to that range.
 
 'info proc stat'
 'info proc status'
@@ -5602,13 +5883,13 @@ currently available from cores created o
      and group ID; virtual memory usage; the signals that are pending,
      blocked, and ignored; its TTY; its consumption of system and user
      time; its stack size; its 'nice' value; etc.  These commands are
-     supported on GNU/Linux and FreeBSD.
+     supported on GNU/Linux, FreeBSD and NetBSD.
 
      For GNU/Linux systems, see the 'proc' man page for more information
      (type 'man 5 proc' from your shell prompt).
 
-     For FreeBSD systems, 'info proc stat' is an alias for 'info proc
-     status'.
+     For FreeBSD and NetBSD systems, 'info proc stat' is an alias for
+     'info proc status'.
 
 'info proc all'
      Show all the information about the process described under all of
@@ -6235,6 +6516,7 @@ send an arbitrary command to the simulat
 
 * ARC::                         Synopsys ARC
 * ARM::                         ARM
+* BPF::                         eBPF
 * M68K::                        Motorola M68K
 * MicroBlaze::			Xilinx MicroBlaze
 * MIPS Embedded::               MIPS Embedded
@@ -6265,7 +6547,7 @@ GDB provides the following ARC-specific
      given address.
 
 
-File: gdb.info,  Node: ARM,  Next: M68K,  Prev: ARC,  Up: Embedded Processors
+File: gdb.info,  Node: ARM,  Next: BPF,  Prev: ARC,  Up: Embedded Processors
 
 21.3.2 ARM
 ----------
@@ -6351,9 +6633,24 @@ GDB provides the following ARM-specific
           'all'
 
 
-File: gdb.info,  Node: M68K,  Next: MicroBlaze,  Prev: ARM,  Up: Embedded Processors
+File: gdb.info,  Node: BPF,  Next: M68K,  Prev: ARM,  Up: Embedded Processors
 
-21.3.3 M68k
+21.3.3 BPF
+----------
+
+'target sim [SIMARGS] ...'
+     The GDB BPF simulator accepts the following optional arguments.
+
+     '--skb-data-offset=OFFSET'
+          Tell the simulator the offset, measured in bytes, of the
+          'skb_data' field in the kernel 'struct sk_buff' structure.
+          This offset is used by some BPF specific-purpose load/store
+          instructions.  Defaults to 0.
+
+
+File: gdb.info,  Node: M68K,  Next: MicroBlaze,  Prev: BPF,  Up: Embedded Processors
+
+21.3.4 M68k
 -----------
 
 The Motorola m68k configuration includes ColdFire support.
@@ -6361,7 +6658,7 @@ The Motorola m68k configuration includes
 
 File: gdb.info,  Node: MicroBlaze,  Next: MIPS Embedded,  Prev: M68K,  Up: Embedded Processors
 
-21.3.4 MicroBlaze
+21.3.5 MicroBlaze
 -----------------
 
 The MicroBlaze is a soft-core processor supported on various Xilinx
@@ -6398,7 +6695,7 @@ need to do this.)
 
 File: gdb.info,  Node: MIPS Embedded,  Next: OpenRISC 1000,  Prev: MicroBlaze,  Up: Embedded Processors
 
-21.3.5 MIPS Embedded
+21.3.6 MIPS Embedded
 --------------------
 
 GDB supports these special commands for MIPS targets:
@@ -6430,7 +6727,7 @@ GDB supports these special commands for
 
 File: gdb.info,  Node: OpenRISC 1000,  Next: PowerPC Embedded,  Prev: MIPS Embedded,  Up: Embedded Processors
 
-21.3.6 OpenRISC 1000
+21.3.7 OpenRISC 1000
 --------------------
 
 The OpenRISC 1000 provides a free RISC instruction set architecture.  It
@@ -6459,7 +6756,7 @@ target:
 
 File: gdb.info,  Node: PowerPC Embedded,  Next: AVR,  Prev: OpenRISC 1000,  Up: Embedded Processors
 
-21.3.7 PowerPC Embedded
+21.3.8 PowerPC Embedded
 -----------------------
 
 GDB supports using the DVC (Data Value Compare) register to implement in
@@ -6531,7 +6828,7 @@ command.
 
 File: gdb.info,  Node: AVR,  Next: CRIS,  Prev: PowerPC Embedded,  Up: Embedded Processors
 
-21.3.8 Atmel AVR
+21.3.9 Atmel AVR
 ----------------
 
 When configured for debugging the Atmel AVR, GDB supports the following
@@ -6544,8 +6841,8 @@ AVR-specific commands:
 
 File: gdb.info,  Node: CRIS,  Next: Super-H,  Prev: AVR,  Up: Embedded Processors
 
-21.3.9 CRIS
------------
+21.3.10 CRIS
+------------
 
 When configured for debugging CRIS, GDB provides the following
 CRIS-specific commands:
@@ -6577,7 +6874,7 @@ CRIS-specific commands:
 
 File: gdb.info,  Node: Super-H,  Prev: CRIS,  Up: Embedded Processors
 
-21.3.10 Renesas Super-H
+21.3.11 Renesas Super-H
 -----------------------
 
 For the Renesas Super-H processor, GDB provides these commands:
@@ -6635,8 +6932,8 @@ following special commands:
 'show debug aarch64'
      Show whether AArch64 debugging messages are displayed.
 
-21.4.1.1 AArch64 SVE.
-.....................
+21.4.1.1 AArch64 SVE
+....................
 
 When GDB is debugging the AArch64 architecture, if the Scalable Vector
 Extension (SVE) is present, then GDB will provide the vector registers
@@ -6650,8 +6947,8 @@ updated, but the lengths of the 'z' and
 This is a known limitation of GDB and does not affect the execution of
 the target process.
 
-21.4.1.2 AArch64 Pointer Authentication.
-........................................
+21.4.1.2 AArch64 Pointer Authentication
+.......................................
 
 When GDB is debugging the AArch64 architecture, and the program is using
 the v8.3-A feature Pointer Authentication (PAC), then whenever the link
@@ -6663,7 +6960,7 @@ as part of the 'addr_flags' field.
 
 File: gdb.info,  Node: i386,  Next: Alpha,  Prev: AArch64,  Up: Architectures
 
-21.4.2 x86 Architecture-specific Issues
+21.4.2 x86 Architecture-Specific Issues
 ---------------------------------------
 
 'set struct-convention MODE'
@@ -6746,7 +7043,7 @@ execution.  For example:
      	$ print upper (a, b, c, d, 1)
      	Breakpoint 2, upper (a=0x0, b=0x6e0000005b, c=0x0, d=0x0, len=48)....
      	$ print $bnd0
-	     {lbound = 0x0, ubound = ffffffff} : size -1
+     	{lbound = 0x0, ubound = ffffffff} : size -1
 
    At this last step the value of bnd0 can be changed for investigation
 of bound violations caused along the execution of the call.  In order to
@@ -6993,225 +7290,3 @@ cacheline (64 bytes), can be viewed or m
           (gdb) adi x/100 shmaddr
              0xfff800010002c000:     7 7
 
-
-File: gdb.info,  Node: S12Z,  Prev: Sparc64,  Up: Architectures
-
-21.4.9 S12Z
------------
-
-When GDB is debugging the S12Z architecture, it provides the following
-special command:
-
-'maint info bdccsr'
-     This command displays the current value of the microprocessor's
-     BDCCSR register.
-
-
-File: gdb.info,  Node: Controlling GDB,  Next: Extending GDB,  Prev: Configurations,  Up: Top
-
-22 Controlling GDB
-******************
-
-You can alter the way GDB interacts with you by using the 'set' command.
-For commands controlling how GDB displays data, see *note Print
-Settings: Print Settings.  Other settings are described here.
-
-* Menu:
-
-* Prompt::                      Prompt
-* Editing::                     Command editing
-* Command History::             Command history
-* Screen Size::                 Screen size
-* Output Styling::              Output styling
-* Numbers::                     Numbers
-* ABI::                         Configuring the current ABI
-* Auto-loading::                Automatically loading associated files
-* Messages/Warnings::           Optional warnings and messages
-* Debugging Output::            Optional messages about internal happenings
-* Other Misc Settings::         Other Miscellaneous Settings
-
-
-File: gdb.info,  Node: Prompt,  Next: Editing,  Up: Controlling GDB
-
-22.1 Prompt
-===========
-
-GDB indicates its readiness to read a command by printing a string
-called the "prompt".  This string is normally '(gdb)'.  You can change
-the prompt string with the 'set prompt' command.  For instance, when
-debugging GDB with GDB, it is useful to change the prompt in one of the
-GDB sessions so that you can always tell which one you are talking to.
-
-   _Note:_ 'set prompt' does not add a space for you after the prompt
-you set.  This allows you to set a prompt which ends in a space or a
-prompt that does not.
-
-'set prompt NEWPROMPT'
-     Directs GDB to use NEWPROMPT as its prompt string henceforth.
-
-'show prompt'
-     Prints a line of the form: 'Gdb's prompt is: YOUR-PROMPT'
-
-   Versions of GDB that ship with Python scripting enabled have prompt
-extensions.  The commands for interacting with these extensions are:
-
-'set extended-prompt PROMPT'
-     Set an extended prompt that allows for substitutions.  *Note
-     gdb.prompt::, for a list of escape sequences that can be used for
-     substitution.  Any escape sequences specified as part of the prompt
-     string are replaced with the corresponding strings each time the
-     prompt is displayed.
-
-     For example:
-
-          set extended-prompt Current working directory: \w (gdb)
-
-     Note that when an extended-prompt is set, it takes control of the
-     PROMPT_HOOK hook.  *Note prompt_hook::, for further information.
-
-'show extended-prompt'
-     Prints the extended prompt.  Any escape sequences specified as part
-     of the prompt string with 'set extended-prompt', are replaced with
-     the corresponding strings each time the prompt is displayed.
-
-
-File: gdb.info,  Node: Editing,  Next: Command History,  Prev: Prompt,  Up: Controlling GDB
-
-22.2 Command Editing
-====================
-
-GDB reads its input commands via the "Readline" interface.  This GNU
-library provides consistent behavior for programs which provide a
-command line interface to the user.  Advantages are GNU Emacs-style or
-"vi"-style inline editing of commands, 'csh'-like history substitution,
-and a storage and recall of command history across debugging sessions.
-
-   You may control the behavior of command line editing in GDB with the
-command 'set'.
-
-'set editing'
-'set editing on'
-     Enable command line editing (enabled by default).
-
-'set editing off'
-     Disable command line editing.
-
-'show editing'
-     Show whether command line editing is enabled.
-
-   *Note Command Line Editing::, for more details about the Readline
-interface.  Users unfamiliar with GNU Emacs or 'vi' are encouraged to
-read that chapter.
-
-   GDB sets the Readline application name to 'gdb'.  This is useful for
-conditions in '.inputrc'.
-
-   GDB defines a bindable Readline command, 'operate-and-get-next'.
-This is bound to 'C-o' by default.  This command accepts the current
-line for execution and fetches the next line relative to the current
-line from the history for editing.  Any argument is ignored.
-
-
-File: gdb.info,  Node: Command History,  Next: Screen Size,  Prev: Editing,  Up: Controlling GDB
-
-22.3 Command History
-====================
-
-GDB can keep track of the commands you type during your debugging
-sessions, so that you can be certain of precisely what happened.  Use
-these commands to manage the GDB command history facility.
-
-   GDB uses the GNU History library, a part of the Readline package, to
-provide the history facility.  *Note Using History Interactively::, for
-the detailed description of the History library.
-
-   To issue a command to GDB without affecting certain aspects of the
-state which is seen by users, prefix it with 'server ' (*note Server
-Prefix::).  This means that this command will not affect the command
-history, nor will it affect GDB's notion of which command to repeat if
-<RET> is pressed on a line by itself.
-
-   The server prefix does not affect the recording of values into the
-value history; to print a value without recording it into the value
-history, use the 'output' command instead of the 'print' command.
-
-   Here is the description of GDB commands related to command history.
-
-'set history filename FNAME'
-     Set the name of the GDB command history file to FNAME.  This is the
-     file where GDB reads an initial command history list, and where it
-     writes the command history from this session when it exits.  You
-     can access this list through history expansion or through the
-     history command editing characters listed below.  This file
-     defaults to the value of the environment variable 'GDBHISTFILE', or
-     to './.gdb_history' ('./_gdb_history' on MS-DOS) if this variable
-     is not set.
-
-'set history save'
-'set history save on'
-     Record command history in a file, whose name may be specified with
-     the 'set history filename' command.  By default, this option is
-     disabled.
-
-'set history save off'
-     Stop recording command history in a file.
-
-'set history size SIZE'
-'set history size unlimited'
-     Set the number of commands which GDB keeps in its history list.
-     This defaults to the value of the environment variable
-     'GDBHISTSIZE', or to 256 if this variable is not set.  Non-numeric
-     values of 'GDBHISTSIZE' are ignored.  If SIZE is 'unlimited' or if
-     'GDBHISTSIZE' is either a negative number or the empty string, then
-     the number of commands GDB keeps in the history list is unlimited.
-
-'set history remove-duplicates COUNT'
-'set history remove-duplicates unlimited'
-     Control the removal of duplicate history entries in the command
-     history list.  If COUNT is non-zero, GDB will look back at the last
-     COUNT history entries and remove the first entry that is a
-     duplicate of the current entry being added to the command history
-     list.  If COUNT is 'unlimited' then this lookbehind is unbounded.
-     If COUNT is 0, then removal of duplicate history entries is
-     disabled.
-
-     Only history entries added during the current session are
-     considered for removal.  This option is set to 0 by default.
-
-   History expansion assigns special meaning to the character '!'.
-*Note Event Designators::, for more details.
-
-   Since '!' is also the logical not operator in C, history expansion is
-off by default.  If you decide to enable history expansion with the 'set
-history expansion on' command, you may sometimes need to follow '!'
-(when it is used as logical not, in an expression) with a space or a tab
-to prevent it from being expanded.  The readline history facilities do
-not attempt substitution on the strings '!=' and '!(', even when history
-expansion is enabled.
-
-   The commands to control history expansion are:
-
-'set history expansion on'
-'set history expansion'
-     Enable history expansion.  History expansion is off by default.
-
-'set history expansion off'
-     Disable history expansion.
-
-'show history'
-'show history filename'
-'show history save'
-'show history size'
-'show history expansion'
-     These commands display the state of the GDB history parameters.
-     'show history' by itself displays all four states.
-
-'show commands'
-     Display the last ten commands in the command history.
-
-'show commands N'
-     Print ten commands centered on command number N.
-
-'show commands +'
-     Print ten commands just after the commands last printed.
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-4 ./gdb/doc/gdb.info-4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-4	2020-03-07 02:11:32.000000000 +0000
+++ ./gdb/doc/gdb.info-4	2021-05-21 02:00:16.000000000 +0000
@@ -1,6 +1,6 @@
-This is gdb.info, produced by makeinfo version 6.3 from gdb.texinfo.
+This is gdb.info, produced by makeinfo version 6.5 from gdb.texinfo.
 
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -21,9 +21,9 @@ 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.1.90.20200307-git.
+Source-Level Debugger' for GDB (GDB) Version 10.2.90.20210521-git.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -37,6 +37,243 @@ this GNU Manual.  Buying copies from GNU
 developing GNU and promoting software freedom."
 
 
+File: gdb.info,  Node: S12Z,  Prev: Sparc64,  Up: Architectures
+
+21.4.9 S12Z
+-----------
+
+When GDB is debugging the S12Z architecture, it provides the following
+special command:
+
+'maint info bdccsr'
+     This command displays the current value of the microprocessor's
+     BDCCSR register.
+
+
+File: gdb.info,  Node: Controlling GDB,  Next: Extending GDB,  Prev: Configurations,  Up: Top
+
+22 Controlling GDB
+******************
+
+You can alter the way GDB interacts with you by using the 'set' command.
+For commands controlling how GDB displays data, see *note Print
+Settings: Print Settings.  Other settings are described here.
+
+* Menu:
+
+* Prompt::                      Prompt
+* Editing::                     Command editing
+* Command History::             Command history
+* Screen Size::                 Screen size
+* Output Styling::              Output styling
+* Numbers::                     Numbers
+* ABI::                         Configuring the current ABI
+* Auto-loading::                Automatically loading associated files
+* Messages/Warnings::           Optional warnings and messages
+* Debugging Output::            Optional messages about internal happenings
+* Other Misc Settings::         Other Miscellaneous Settings
+
+
+File: gdb.info,  Node: Prompt,  Next: Editing,  Up: Controlling GDB
+
+22.1 Prompt
+===========
+
+GDB indicates its readiness to read a command by printing a string
+called the "prompt".  This string is normally '(gdb)'.  You can change
+the prompt string with the 'set prompt' command.  For instance, when
+debugging GDB with GDB, it is useful to change the prompt in one of the
+GDB sessions so that you can always tell which one you are talking to.
+
+   _Note:_ 'set prompt' does not add a space for you after the prompt
+you set.  This allows you to set a prompt which ends in a space or a
+prompt that does not.
+
+'set prompt NEWPROMPT'
+     Directs GDB to use NEWPROMPT as its prompt string henceforth.
+
+'show prompt'
+     Prints a line of the form: 'Gdb's prompt is: YOUR-PROMPT'
+
+   Versions of GDB that ship with Python scripting enabled have prompt
+extensions.  The commands for interacting with these extensions are:
+
+'set extended-prompt PROMPT'
+     Set an extended prompt that allows for substitutions.  *Note
+     gdb.prompt::, for a list of escape sequences that can be used for
+     substitution.  Any escape sequences specified as part of the prompt
+     string are replaced with the corresponding strings each time the
+     prompt is displayed.
+
+     For example:
+
+          set extended-prompt Current working directory: \w (gdb)
+
+     Note that when an extended-prompt is set, it takes control of the
+     PROMPT_HOOK hook.  *Note prompt_hook::, for further information.
+
+'show extended-prompt'
+     Prints the extended prompt.  Any escape sequences specified as part
+     of the prompt string with 'set extended-prompt', are replaced with
+     the corresponding strings each time the prompt is displayed.
+
+
+File: gdb.info,  Node: Editing,  Next: Command History,  Prev: Prompt,  Up: Controlling GDB
+
+22.2 Command Editing
+====================
+
+GDB reads its input commands via the "Readline" interface.  This GNU
+library provides consistent behavior for programs which provide a
+command line interface to the user.  Advantages are GNU Emacs-style or
+"vi"-style inline editing of commands, 'csh'-like history substitution,
+and a storage and recall of command history across debugging sessions.
+
+   You may control the behavior of command line editing in GDB with the
+command 'set'.
+
+'set editing'
+'set editing on'
+     Enable command line editing (enabled by default).
+
+'set editing off'
+     Disable command line editing.
+
+'show editing'
+     Show whether command line editing is enabled.
+
+   *Note Command Line Editing::, for more details about the Readline
+interface.  Users unfamiliar with GNU Emacs or 'vi' are encouraged to
+read that chapter.
+
+   GDB sets the Readline application name to 'gdb'.  This is useful for
+conditions in '.inputrc'.
+
+   GDB defines a bindable Readline command, 'operate-and-get-next'.
+This is bound to 'C-o' by default.  This command accepts the current
+line for execution and fetches the next line relative to the current
+line from the history for editing.  Any argument is ignored.
+
+
+File: gdb.info,  Node: Command History,  Next: Screen Size,  Prev: Editing,  Up: Controlling GDB
+
+22.3 Command History
+====================
+
+GDB can keep track of the commands you type during your debugging
+sessions, so that you can be certain of precisely what happened.  Use
+these commands to manage the GDB command history facility.
+
+   GDB uses the GNU History library, a part of the Readline package, to
+provide the history facility.  *Note Using History Interactively::, for
+the detailed description of the History library.
+
+   To issue a command to GDB without affecting certain aspects of the
+state which is seen by users, prefix it with 'server ' (*note Server
+Prefix::).  This means that this command will not affect the command
+history, nor will it affect GDB's notion of which command to repeat if
+<RET> is pressed on a line by itself.
+
+   The server prefix does not affect the recording of values into the
+value history; to print a value without recording it into the value
+history, use the 'output' command instead of the 'print' command.
+
+   Here is the description of GDB commands related to command history.
+
+'set history filename [FNAME]'
+     Set the name of the GDB command history file to FNAME.  This is the
+     file where GDB reads an initial command history list, and where it
+     writes the command history from this session when it exits.  You
+     can access this list through history expansion or through the
+     history command editing characters listed below.  This file
+     defaults to the value of the environment variable 'GDBHISTFILE', or
+     to './.gdb_history' ('./_gdb_history' on MS-DOS) if this variable
+     is not set.
+
+     The 'GDBHISTFILE' environment variable is read after processing any
+     GDB initialization files (*note Startup::) and after processing any
+     commands passed using command line options (for example, '-ex').
+
+     If the FNAME argument is not given, or if the 'GDBHISTFILE' is the
+     empty string then GDB will neither try to load an existing history
+     file, nor will it try to save the history on exit.
+
+'set history save'
+'set history save on'
+     Record command history in a file, whose name may be specified with
+     the 'set history filename' command.  By default, this option is
+     disabled.  The command history will be recorded when GDB exits.  If
+     'set history filename' is set to the empty string then history
+     saving is disabled, even when 'set history save' is 'on'.
+
+'set history save off'
+     Don't record the command history into the file specified by 'set
+     history filename' when GDB exits.
+
+'set history size SIZE'
+'set history size unlimited'
+     Set the number of commands which GDB keeps in its history list.
+     This defaults to the value of the environment variable
+     'GDBHISTSIZE', or to 256 if this variable is not set.  Non-numeric
+     values of 'GDBHISTSIZE' are ignored.  If SIZE is 'unlimited' or if
+     'GDBHISTSIZE' is either a negative number or the empty string, then
+     the number of commands GDB keeps in the history list is unlimited.
+
+     The 'GDBHISTSIZE' environment variable is read after processing any
+     GDB initialization files (*note Startup::) and after processing any
+     commands passed using command line options (for example, '-ex').
+
+'set history remove-duplicates COUNT'
+'set history remove-duplicates unlimited'
+     Control the removal of duplicate history entries in the command
+     history list.  If COUNT is non-zero, GDB will look back at the last
+     COUNT history entries and remove the first entry that is a
+     duplicate of the current entry being added to the command history
+     list.  If COUNT is 'unlimited' then this lookbehind is unbounded.
+     If COUNT is 0, then removal of duplicate history entries is
+     disabled.
+
+     Only history entries added during the current session are
+     considered for removal.  This option is set to 0 by default.
+
+   History expansion assigns special meaning to the character '!'.
+*Note Event Designators::, for more details.
+
+   Since '!' is also the logical not operator in C, history expansion is
+off by default.  If you decide to enable history expansion with the 'set
+history expansion on' command, you may sometimes need to follow '!'
+(when it is used as logical not, in an expression) with a space or a tab
+to prevent it from being expanded.  The readline history facilities do
+not attempt substitution on the strings '!=' and '!(', even when history
+expansion is enabled.
+
+   The commands to control history expansion are:
+
+'set history expansion on'
+'set history expansion'
+     Enable history expansion.  History expansion is off by default.
+
+'set history expansion off'
+     Disable history expansion.
+
+'show history'
+'show history filename'
+'show history save'
+'show history size'
+'show history expansion'
+     These commands display the state of the GDB history parameters.
+     'show history' by itself displays all four states.
+
+'show commands'
+     Display the last ten commands in the command history.
+
+'show commands N'
+     Print ten commands centered on command number N.
+
+'show commands +'
+     Print ten commands just after the commands last printed.
+
+
 File: gdb.info,  Node: Screen Size,  Next: Output Styling,  Prev: Command History,  Up: Controlling GDB
 
 22.4 Screen Size
@@ -314,7 +551,7 @@ the HP ANSI C++ compiler.  Other C++ com
 
 File: gdb.info,  Node: Auto-loading,  Next: Messages/Warnings,  Prev: ABI,  Up: Controlling GDB
 
-22.8 Automatically loading associated files
+22.8 Automatically Loading Associated Files
 ===========================================
 
 GDB sometimes reads files with commands and settings automatically,
@@ -431,7 +668,7 @@ control when to auto-load files and whic
 
 File: gdb.info,  Node: Init File in the Current Directory,  Next: libthread_db.so.1 file,  Up: Auto-loading
 
-22.8.1 Automatically loading init file in the current directory
+22.8.1 Automatically Loading Init File in the Current Directory
 ---------------------------------------------------------------
 
 By default, GDB reads and executes the canned sequences of commands from
@@ -457,7 +694,7 @@ path::).
 
 File: gdb.info,  Node: libthread_db.so.1 file,  Next: Auto-loading safe path,  Prev: Init File in the Current Directory,  Up: Auto-loading
 
-22.8.2 Automatically loading thread debugging library
+22.8.2 Automatically Loading Thread Debugging Library
 -----------------------------------------------------
 
 This feature is currently present only on GNU/Linux native hosts.
@@ -491,7 +728,7 @@ configured 'auto-load safe-path' (*note
 
 File: gdb.info,  Node: Auto-loading safe path,  Next: Auto-loading verbose mode,  Prev: libthread_db.so.1 file,  Up: Auto-loading
 
-22.8.3 Security restriction for auto-loading
+22.8.3 Security Restriction for Auto-Loading
 --------------------------------------------
 
 As the files of inferior can come from untrusted source (such as
@@ -504,7 +741,7 @@ user.  Each directory can also be a shel
 will not get loaded:
 
      $ ./gdb -q ./gdb
-     Reading symbols from /home/user/gdb/gdb...done.
+     Reading symbols from /home/user/gdb/gdb...
      warning: File "/home/user/gdb/gdb-gdb.gdb" auto-loading has been
               declined by your `auto-load safe-path' set
               to "$debugdir:$datadir/auto-load".
@@ -603,7 +840,7 @@ of directories is recommended to be ente
 
 File: gdb.info,  Node: Auto-loading verbose mode,  Prev: Auto-loading safe path,  Up: Auto-loading
 
-22.8.4 Displaying files tried for auto-load
+22.8.4 Displaying Files Tried for Auto-Load
 -------------------------------------------
 
 For better visibility of all the file locations where you can place
@@ -1038,7 +1275,7 @@ execution as a unit: user-defined comman
 
 File: gdb.info,  Node: Define,  Next: Hooks,  Up: Sequences
 
-23.1.1 User-defined Commands
+23.1.1 User-Defined Commands
 ----------------------------
 
 A "user-defined command" is a sequence of GDB commands to which you
@@ -1185,7 +1422,7 @@ omit the messages when used in a user-de
 
 File: gdb.info,  Node: Hooks,  Next: Command Files,  Prev: Define,  Up: Sequences
 
-23.1.2 User-defined Command Hooks
+23.1.2 User-Defined Command Hooks
 ---------------------------------
 
 You may define "hooks", which are a special kind of user-defined
@@ -1484,7 +1721,7 @@ want.
 
 File: gdb.info,  Node: Auto-loading sequences,  Prev: Output,  Up: Sequences
 
-23.1.5 Controlling auto-loading native GDB scripts
+23.1.5 Controlling Auto-Loading Native GDB Scripts
 --------------------------------------------------
 
 When a new object file is read (for example, due to the 'file' command,
@@ -1651,6 +1888,8 @@ optional arguments while skipping others
                                 using Python.
 * Lazy Strings In Python::      Python representation of lazy strings.
 * Architectures In Python::     Python representation of architectures.
+* Registers In Python::         Python representation of registers.
+* TUI Windows In Python::       Implementing new TUI windows.
 
 
 File: gdb.info,  Node: Basic Python,  Next: Exception Handling,  Up: Python API
@@ -2282,7 +2521,7 @@ function, call it like so:
           'False' if the _declared_ type should be used.  (See 'set
           print object' in *note Print Settings::).
 
-     'static_fields'
+     'static_members'
           'True' if static members should be included in the string
           representation of a C++ object, 'False' if they shouldn't (see
           'set print static-members' in *note Print Settings::).
@@ -2415,6 +2654,26 @@ of the 'Type.fields' method for a descri
      The type code for this type.  The type code will be one of the
      'TYPE_CODE_' constants defined below.
 
+ -- Variable: Type.dynamic
+     A boolean indicating whether this type is dynamic.  In some
+     situations, such as Rust 'enum' types or Ada variant records, the
+     concrete type of a value may vary depending on its contents.  That
+     is, the declared type of a variable, or the type returned by
+     'gdb.lookup_type' may be dynamic; while the type of the variable's
+     value will be a concrete instance of that dynamic type.
+
+     For example, consider this code:
+          int n;
+          int array[n];
+
+     Here, at least conceptually (whether your compiler actually does
+     this is a separate issue), examining
+     'gdb.lookup_symbol("array", ...).type' could yield a 'gdb.Type'
+     which reports a size of 'None'.  This is the dynamic type.
+
+     However, examining 'gdb.parse_and_eval("array").type' would yield a
+     concrete type, whose length would be known.
+
  -- Variable: Type.name
      The name of this type.  If this type has no name, then 'None' is
      returned.
@@ -2422,7 +2681,9 @@ of the 'Type.fields' method for a descri
  -- Variable: Type.sizeof
      The size of this type, in target 'char' units.  Usually, a target's
      'char' type will be an 8-bit byte.  However, on some unusual
-     platforms, this type may have a different size.
+     platforms, this type may have a different size.  A dynamic type may
+     not have a fixed size; in this case, this attribute's value will be
+     'None'.
 
  -- Variable: Type.tag
      The tag name for this type.  The tag name is the name after
@@ -2450,7 +2711,11 @@ of the 'Type.fields' method for a descri
      'bitpos'
           This attribute is not available for 'enum' or 'static' (as in
           C++) fields.  The value is the position, counting in bits,
-          from the start of the containing type.
+          from the start of the containing type.  Note that, in a
+          dynamic type, the position of a field may not be constant.  In
+          this case, the value will be 'None'.  Also, a dynamic type may
+          have fields that do not appear in a corresponding concrete
+          type.
 
      'enumval'
           This attribute is only available for 'enum' fields, and its
@@ -3651,11 +3916,10 @@ a method to read frame's registers:
 
  -- Function: PendingFrame.read_register (reg)
      This method returns the contents of the register REG in the frame
-     as a 'gdb.Value' object.  REG can be either a register number or a
-     register name; the values are platform-specific.  They are usually
-     found in the corresponding 'PLATFORM-tdep.h' file in the GDB source
-     tree.  If REG does not name a register for the current
-     architecture, this method will throw an exception.
+     as a 'gdb.Value' object.  For a description of the acceptable
+     values of REG see *note Frame.read_register:
+     gdbpy_frame_read_register.  If REG does not name a register for the
+     current architecture, this method will throw an exception.
 
      Note that this method will always return a 'gdb.Value' for a valid
      register name.  This does not mean that the value will be valid.
@@ -3707,6 +3971,11 @@ instance to be returned to GDB:
 
      Each attribute value should be an instance of 'gdb.Value'.
 
+ -- Function: PendingFrame.architecture ()
+     Return the 'gdb.Architecture' (*note Architectures In Python::) for
+     this 'gdb.PendingFrame'.  This represents the architecture of the
+     particular frame being unwound.
+
 Unwinder Output: UnwindInfo
 ---------------------------
 
@@ -3715,9 +3984,9 @@ Use 'PendingFrame.create_unwind_info' me
 registers that have been saved in this frame:
 
  -- Function: gdb.UnwindInfo.add_saved_register (reg, value)
-     REG identifies the register.  It can be a number or a name, just as
-     for the 'PendingFrame.read_register' method above.  VALUE is a
-     register value (a 'gdb.Value' object).
+     REG identifies the register, for a description of the acceptable
+     values see *note Frame.read_register: gdbpy_frame_read_register.
+     VALUE is a register value (a 'gdb.Value' object).
 
 Unwinder Skeleton Code
 ----------------------
@@ -4110,9 +4379,9 @@ File: gdb.info,  Node: Inferiors In Pyth
 .............................
 
 Programs which are being run under GDB are called inferiors (*note
-Inferiors and Programs::).  Python scripts can access information about
-and manipulate inferiors controlled by GDB via objects of the
-'gdb.Inferior' class.
+Inferiors Connections and Programs::).  Python scripts can access
+information about and manipulate inferiors controlled by GDB via objects
+of the 'gdb.Inferior' class.
 
    The following inferior-related functions are available in the 'gdb'
 module:
@@ -4435,7 +4704,7 @@ module:
      If there is no selected thread, this will return 'None'.
 
    To get the list of threads for an inferior, use the
-'Inferior.threads()' method.  *Note Inferiors In Python::
+'Inferior.threads()' method.  *Note Inferiors In Python::.
 
    A 'gdb.InferiorThread' object has the following attributes:
 
@@ -4859,6 +5128,11 @@ defined in the 'gdb' module:
      tracepoints' at the GDB prompt to see a list of commands in this
      category.
 
+'gdb.COMMAND_TUI'
+     The command has to do with the text user interface (*note TUI::).
+     Type 'help tui' at the GDB prompt to see a list of commands in this
+     category.
+
 'gdb.COMMAND_USER'
      The command is a general purpose command for the user, and
      typically does not fit in one of the other categories.  Type 'help
@@ -5151,17 +5425,17 @@ File: gdb.info,  Node: Progspaces In Pyt
 
 A program space, or "progspace", represents a symbolic view of an
 address space.  It consists of all of the objfiles of the program.
-*Note Objfiles In Python::.  *Note program spaces: Inferiors and
-Programs, for more details about program spaces.
+*Note Objfiles In Python::.  *Note program spaces: Inferiors Connections
+and Programs, for more details about program spaces.
 
    The following progspace-related functions are available in the 'gdb'
 module:
 
  -- Function: gdb.current_progspace ()
      This function returns the program space of the currently selected
-     inferior.  *Note Inferiors and Programs::.  This is identical to
-     'gdb.selected_inferior().progspace' (*note Inferiors In Python::)
-     and is included for historical compatibility.
+     inferior.  *Note Inferiors Connections and Programs::.  This is
+     identical to 'gdb.selected_inferior().progspace' (*note Inferiors
+     In Python::) and is included for historical compatibility.
 
  -- Function: gdb.progspaces ()
      Return a sequence of all the progspaces currently known to GDB.
@@ -5249,7 +5523,7 @@ will be loaded.
      gdb.events.new_objfile.connect(new_objfile_handler)
      end
      (gdb) file /tmp/hello
-     Reading symbols from /tmp/hello...done.
+     Reading symbols from /tmp/hello...
      Computing the answer to the ultimate question ...
      (gdb) python print gdb.current_progspace().expensive_computation
      42
@@ -5372,7 +5646,7 @@ objfile.
      gdb.events.new_objfile.connect(new_objfile_handler)
      end
      (gdb) file ./hello
-     Reading symbols from ./hello...done.
+     Reading symbols from ./hello...
      (gdb) python print gdb.objfiles()[0].time_loaded
      2014-10-09 11:41:36.770345
 
@@ -5569,9 +5843,24 @@ module:
      Python::.
 
  -- Function: Frame.read_register (register)
-     Return the value of REGISTER in this frame.  The REGISTER argument
-     must be a string (e.g., ''sp'' or ''rax'').  Returns a 'Gdb.Value'
-     object.  Throws an exception if REGISTER does not exist.
+     Return the value of REGISTER in this frame.  Returns a 'Gdb.Value'
+     object.  Throws an exception if REGISTER does not exist.  The
+     REGISTER argument must be one of the following:
+       1. A string that is the name of a valid register (e.g., ''sp'' or
+          ''rax'').
+       2. A 'gdb.RegisterDescriptor' object (*note Registers In
+          Python::).
+       3. A GDB internal, platform specific number.  Using these numbers
+          is supported for historic reasons, but is not recommended as
+          future changes to GDB could change the mapping between numbers
+          and the registers they represent, breaking any Python code
+          that uses the platform-specific numbers.  The numbers are
+          usually found in the corresponding 'PLATFORM-tdep.h' file in
+          the GDB source tree.
+     Using a string to access registers will be slightly slower than the
+     other two methods as GDB must look up the mapping between name and
+     internal register number.  If performance is critical consider
+     looking up and caching a 'gdb.RegisterDescriptor' object.
 
  -- Function: Frame.read_var (variable [, block])
      Return the value of VARIABLE in this frame.  If the optional
@@ -6408,7 +6697,7 @@ string is immediately retrieved and enco
      writable.
 
 
-File: gdb.info,  Node: Architectures In Python,  Prev: Lazy Strings In Python,  Up: Python API
+File: gdb.info,  Node: Architectures In Python,  Next: Registers In Python,  Prev: Lazy Strings In Python,  Up: Python API
 
 23.2.2.33 Python representation of architectures
 ................................................
@@ -6454,6 +6743,163 @@ of the 'gdb.Architecture' class.
           The value corresponding to this key is the length (integer
           value) of the instruction in bytes.
 
+ -- Function: Architecture.registers ([ REGGROUP ])
+     Return a 'gdb.RegisterDescriptorIterator' (*note Registers In
+     Python::) for all of the registers in REGGROUP, a string that is
+     the name of a register group.  If REGGROUP is omitted, or is the
+     empty string, then the register group 'all' is assumed.
+
+ -- Function: Architecture.register_groups ()
+     Return a 'gdb.RegisterGroupsIterator' (*note Registers In Python::)
+     for all of the register groups available for the
+     'gdb.Architecture'.
+
+
+File: gdb.info,  Node: Registers In Python,  Next: TUI Windows In Python,  Prev: Architectures In Python,  Up: Python API
+
+23.2.2.34 Registers In Python
+.............................
+
+Python code can request from a 'gdb.Architecture' information about the
+set of registers available (*note 'Architecture.registers':
+gdbpy_architecture_registers.).  The register information is returned as
+a 'gdb.RegisterDescriptorIterator', which is an iterator that in turn
+returns 'gdb.RegisterDescriptor' objects.
+
+   A 'gdb.RegisterDescriptor' does not provide the value of a register
+(*note 'Frame.read_register': gdbpy_frame_read_register. for reading a
+register's value), instead the 'RegisterDescriptor' is a way to discover
+which registers are available for a particular architecture.
+
+   A 'gdb.RegisterDescriptor' has the following read-only properties:
+
+ -- Variable: RegisterDescriptor.name
+     The name of this register.
+
+   It is also possible to lookup a register descriptor based on its name
+using the following 'gdb.RegisterDescriptorIterator' function:
+
+ -- Function: RegisterDescriptorIterator.find (NAME)
+     Takes NAME as an argument, which must be a string, and returns a
+     'gdb.RegisterDescriptor' for the register with that name, or 'None'
+     if there is no register with that name.
+
+   Python code can also request from a 'gdb.Architecture' information
+about the set of register groups available on a given architecture
+(*note 'Architecture.register_groups': gdbpy_architecture_reggroups.).
+
+   Every register can be a member of zero or more register groups.  Some
+register groups are used internally within GDB to control things like
+which registers must be saved when calling into the program being
+debugged (*note Calling Program Functions: Calling.).  Other register
+groups exist to allow users to easily see related sets of registers in
+commands like 'info registers' (*note 'info registers REGGROUP':
+info_registers_reggroup.).
+
+   The register groups information is returned as a
+'gdb.RegisterGroupsIterator', which is an iterator that in turn returns
+'gdb.RegisterGroup' objects.
+
+   A 'gdb.RegisterGroup' object has the following read-only properties:
+
+ -- Variable: RegisterGroup.name
+     A string that is the name of this register group.
+
+
+File: gdb.info,  Node: TUI Windows In Python,  Prev: Registers In Python,  Up: Python API
+
+23.2.2.35 Implementing new TUI windows
+......................................
+
+New TUI (*note TUI::) windows can be implemented in Python.
+
+ -- Function: gdb.register_window_type (NAME, FACTORY)
+     Because TUI windows are created and destroyed depending on the
+     layout the user chooses, new window types are implemented by
+     registering a factory function with GDB.
+
+     NAME is the name of the new window.  It's an error to try to
+     replace one of the built-in windows, but other window types can be
+     replaced.
+
+     FUNCTION is a factory function that is called to create the TUI
+     window.  This is called with a single argument of type
+     'gdb.TuiWindow', described below.  It should return an object that
+     implements the TUI window protocol, also described below.
+
+   As mentioned above, when a factory function is called, it is passed a
+an object of type 'gdb.TuiWindow'.  This object has these methods and
+attributes:
+
+ -- Function: TuiWindow.is_valid ()
+     This method returns 'True' when this window is valid.  When the
+     user changes the TUI layout, windows no longer visible in the new
+     layout will be destroyed.  At this point, the 'gdb.TuiWindow' will
+     no longer be valid, and methods (and attributes) other than
+     'is_valid' will throw an exception.
+
+ -- Variable: TuiWindow.width
+     This attribute holds the width of the window.  It is not writable.
+
+ -- Variable: TuiWindow.height
+     This attribute holds the height of the window.  It is not writable.
+
+ -- Variable: TuiWindow.title
+     This attribute holds the window's title, a string.  This is
+     normally displayed above the window.  This attribute can be
+     modified.
+
+ -- Function: TuiWindow.erase ()
+     Remove all the contents of the window.
+
+ -- Function: TuiWindow.write (STRING)
+     Write STRING to the window.  STRING can contain ANSI terminal
+     escape styling sequences; GDB will translate these as appropriate
+     for the terminal.
+
+   The factory function that you supply should return an object
+conforming to the TUI window protocol.  These are the method that can be
+called on this object, which is referred to below as the "window
+object".  The methods documented below are optional; if the object does
+not implement one of these methods, GDB will not attempt to call it.
+Additional new methods may be added to the window protocol in the
+future.  GDB guarantees that they will begin with a lower-case letter,
+so you can start implementation methods with upper-case letters or
+underscore to avoid any future conflicts.
+
+ -- Function: Window.close ()
+     When the TUI window is closed, the 'gdb.TuiWindow' object will be
+     put into an invalid state.  At this time, GDB will call 'close'
+     method on the window object.
+
+     After this method is called, GDB will discard any references it
+     holds on this window object, and will no longer call methods on
+     this object.
+
+ -- Function: Window.render ()
+     In some situations, a TUI window can change size.  For example,
+     this can happen if the user resizes the terminal, or changes the
+     layout.  When this happens, GDB will call the 'render' method on
+     the window object.
+
+     If your window is intended to update in response to changes in the
+     inferior, you will probably also want to register event listeners
+     and send output to the 'gdb.TuiWindow'.
+
+ -- Function: Window.hscroll (NUM)
+     This is a request to scroll the window horizontally.  NUM is the
+     amount by which to scroll, with negative numbers meaning to scroll
+     right.  In the TUI model, it is the viewport that moves, not the
+     contents.  A positive argument should cause the viewport to move
+     right, and so the content should appear to move to the left.
+
+ -- Function: Window.vscroll (NUM)
+     This is a request to scroll the window vertically.  NUM is the
+     amount by which to scroll, with negative numbers meaning to scroll
+     backward.  In the TUI model, it is the viewport that moves, not the
+     contents.  A positive argument should cause the viewport to move
+     down, and so the content should appear to move up.
+
 
 File: gdb.info,  Node: Python Auto-loading,  Next: Python modules,  Prev: Python API,  Up: Python
 
@@ -6724,8 +7170,7 @@ GNU project's official extension languag
 closely, so concepts there should carry over.  However, some things are
 done differently where it makes sense.
 
-   GDB requires Guile version 2.0 or greater.  Older versions are not
-supported.
+   GDB requires Guile version 3.0, 2.2, or 2.0.
 
    Guile scripts used by GDB should be installed in
 'DATA-DIRECTORY/guile', where DATA-DIRECTORY is the data directory as
@@ -6791,736 +7236,3 @@ interpreter:
      documentation for a description of this function.  (*note
      (guile)Loading::).
 
-
-File: gdb.info,  Node: Guile API,  Next: Guile Auto-loading,  Prev: Guile Commands,  Up: Guile
-
-23.3.3 Guile API
-----------------
-
-You can get quick online help for GDB's Guile API by issuing the command
-'help guile', or by issuing the command ',help' from an interactive
-Guile session.  Furthermore, most Guile procedures provided by GDB have
-doc strings which can be obtained with ',describe PROCEDURE-NAME' or ',d
-PROCEDURE-NAME' from the Guile interactive prompt.
-
-* Menu:
-
-* Basic Guile::              Basic Guile Functions
-* Guile Configuration::      Guile configuration variables
-* GDB Scheme Data Types::    Scheme representations of GDB objects
-* Guile Exception Handling:: How Guile exceptions are translated
-* Values From Inferior In Guile:: Guile representation of values
-* Arithmetic In Guile::      Arithmetic in Guile
-* Types In Guile::           Guile representation of types
-* Guile Pretty Printing API:: Pretty-printing values with Guile
-* Selecting Guile Pretty-Printers:: How GDB chooses a pretty-printer
-* Writing a Guile Pretty-Printer:: Writing a pretty-printer
-* Commands In Guile::        Implementing new commands in Guile
-* Parameters In Guile::      Adding new GDB parameters
-* Progspaces In Guile::      Program spaces
-* Objfiles In Guile::        Object files in Guile
-* Frames In Guile::          Accessing inferior stack frames from Guile
-* Blocks In Guile::          Accessing blocks from Guile
-* Symbols In Guile::         Guile representation of symbols
-* Symbol Tables In Guile::   Guile representation of symbol tables
-* Breakpoints In Guile::     Manipulating breakpoints using Guile
-* Lazy Strings In Guile::    Guile representation of lazy strings
-* Architectures In Guile::   Guile representation of architectures
-* Disassembly In Guile::     Disassembling instructions from Guile
-* I/O Ports in Guile::       GDB I/O ports
-* Memory Ports in Guile::    Accessing memory through ports and bytevectors
-* Iterators In Guile::       Basic iterator support
-
-
-File: gdb.info,  Node: Basic Guile,  Next: Guile Configuration,  Up: Guile API
-
-23.3.3.1 Basic Guile
-....................
-
-At startup, GDB overrides Guile's 'current-output-port' and
-'current-error-port' to print using GDB's output-paging streams.  A
-Guile program which outputs to one of these streams may have its output
-interrupted by the user (*note Screen Size::).  In this situation, a
-Guile 'signal' exception is thrown with value 'SIGINT'.
-
-   Guile's history mechanism uses the same naming as GDB's, namely the
-user of dollar-variables (e.g., $1, $2, etc.).  The results of
-evaluations in Guile and in GDB are counted separately, '$1' in Guile is
-not the same value as '$1' in GDB.
-
-   GDB is not thread-safe.  If your Guile program uses multiple threads,
-you must be careful to only call GDB-specific functions in the GDB
-thread.
-
-   Some care must be taken when writing Guile code to run in GDB.  Two
-things are worth noting in particular:
-
-   * GDB installs handlers for 'SIGCHLD' and 'SIGINT'.  Guile code must
-     not override these, or even change the options using 'sigaction'.
-     If your program changes the handling of these signals, GDB will
-     most likely stop working correctly.  Note that it is unfortunately
-     common for GUI toolkits to install a 'SIGCHLD' handler.
-
-   * GDB takes care to mark its internal file descriptors as
-     close-on-exec.  However, this cannot be done in a thread-safe way
-     on all platforms.  Your Guile programs should be aware of this and
-     should both create new file descriptors with the close-on-exec flag
-     set and arrange to close unneeded file descriptors before starting
-     a child process.
-
-   GDB introduces a new Guile module, named 'gdb'.  All methods and
-classes added by GDB are placed in this module.  GDB does not
-automatically 'import' the 'gdb' module, scripts must do this
-themselves.  There are various options for how to import a module, so
-GDB leaves the choice of how the 'gdb' module is imported to the user.
-To simplify interactive use, it is recommended to add one of the
-following to your ~/.gdbinit.
-
-     guile (use-modules (gdb))
-
-     guile (use-modules ((gdb) #:renamer (symbol-prefix-proc 'gdb:)))
-
-   Which one to choose depends on your preference.  The second one adds
-'gdb:' as a prefix to all module functions and variables.
-
-   The rest of this manual assumes the 'gdb' module has been imported
-without any prefix.  See the Guile documentation for 'use-modules' for
-more information (*note (guile)Using Guile Modules::).
-
-   Example:
-
-     (gdb) guile (value-type (make-value 1))
-     ERROR: Unbound variable: value-type
-     Error while executing Scheme code.
-     (gdb) guile (use-modules (gdb))
-     (gdb) guile (value-type (make-value 1))
-     int
-     (gdb)
-
-   The '(gdb)' module provides these basic Guile functions.
-
- -- Scheme Procedure: execute command [#:from-tty boolean] [#:to-string
-          boolean]
-     Evaluate COMMAND, a string, as a GDB CLI command.  If a GDB
-     exception happens while COMMAND runs, it is translated as described
-     in *note Guile Exception Handling: Guile Exception Handling.
-
-     FROM-TTY specifies whether GDB ought to consider this command as
-     having originated from the user invoking it interactively.  It must
-     be a boolean value.  If omitted, it defaults to '#f'.
-
-     By default, any output produced by COMMAND is sent to GDB's
-     standard output (and to the log output if logging is turned on).
-     If the TO-STRING parameter is '#t', then output will be collected
-     by 'execute' and returned as a string.  The default is '#f', in
-     which case the return value is unspecified.  If TO-STRING is '#t',
-     the GDB virtual terminal will be temporarily set to unlimited width
-     and height, and its pagination will be disabled; *note Screen
-     Size::.
-
- -- Scheme Procedure: history-ref number
-     Return a value from GDB's value history (*note Value History::).
-     The NUMBER argument indicates which history element to return.  If
-     NUMBER is negative, then GDB will take its absolute value and count
-     backward from the last element (i.e., the most recent element) to
-     find the value to return.  If NUMBER is zero, then GDB will return
-     the most recent element.  If the element specified by NUMBER
-     doesn't exist in the value history, a 'gdb:error' exception will be
-     raised.
-
-     If no exception is raised, the return value is always an instance
-     of '<gdb:value>' (*note Values From Inferior In Guile::).
-
-     _Note:_ GDB's value history is independent of Guile's.  '$1' in
-     GDB's value history contains the result of evaluating an expression
-     from GDB's command line and '$1' from Guile's history contains the
-     result of evaluating an expression from Guile's command line.
-
- -- Scheme Procedure: history-append! value
-     Append VALUE, an instance of '<gdb:value>', to GDB's value history.
-     Return its index in the history.
-
-     Putting into history values returned by Guile extensions will allow
-     the user convenient access to those values via CLI history
-     facilities.
-
- -- Scheme Procedure: parse-and-eval expression
-     Parse EXPRESSION as an expression in the current language, evaluate
-     it, and return the result as a '<gdb:value>'.  The EXPRESSION must
-     be a string.
-
-     This function can be useful when implementing a new command (*note
-     Commands In Guile::), as it provides a way to parse the command's
-     arguments as an expression.  It is also is useful when computing
-     values.  For example, it is the only way to get the value of a
-     convenience variable (*note Convenience Vars::) as a '<gdb:value>'.
-
-
-File: gdb.info,  Node: Guile Configuration,  Next: GDB Scheme Data Types,  Prev: Basic Guile,  Up: Guile API
-
-23.3.3.2 Guile Configuration
-............................
-
-GDB provides these Scheme functions to access various configuration
-parameters.
-
- -- Scheme Procedure: data-directory
-     Return a string containing GDB's data directory.  This directory
-     contains GDB's ancillary files.
-
- -- Scheme Procedure: guile-data-directory
-     Return a string containing GDB's Guile data directory.  This
-     directory contains the Guile modules provided by GDB.
-
- -- Scheme Procedure: gdb-version
-     Return a string containing the GDB version.
-
- -- Scheme Procedure: host-config
-     Return a string containing the host configuration.  This is the
-     string passed to '--host' when GDB was configured.
-
- -- Scheme Procedure: target-config
-     Return a string containing the target configuration.  This is the
-     string passed to '--target' when GDB was configured.
-
-
-File: gdb.info,  Node: GDB Scheme Data Types,  Next: Guile Exception Handling,  Prev: Guile Configuration,  Up: Guile API
-
-23.3.3.3 GDB Scheme Data Types
-..............................
-
-The values exposed by GDB to Guile are known as "GDB objects".  There
-are several kinds of GDB object, and each is disjoint from all other
-types known to Guile.
-
- -- Scheme Procedure: gdb-object-kind object
-     Return the kind of the GDB object, e.g., '<gdb:breakpoint>', as a
-     symbol.
-
-   GDB defines the following object types:
-
-'<gdb:arch>'
-     *Note Architectures In Guile::.
-
-'<gdb:block>'
-     *Note Blocks In Guile::.
-
-'<gdb:block-symbols-iterator>'
-     *Note Blocks In Guile::.
-
-'<gdb:breakpoint>'
-     *Note Breakpoints In Guile::.
-
-'<gdb:command>'
-     *Note Commands In Guile::.
-
-'<gdb:exception>'
-     *Note Guile Exception Handling::.
-
-'<gdb:frame>'
-     *Note Frames In Guile::.
-
-'<gdb:iterator>'
-     *Note Iterators In Guile::.
-
-'<gdb:lazy-string>'
-     *Note Lazy Strings In Guile::.
-
-'<gdb:objfile>'
-     *Note Objfiles In Guile::.
-
-'<gdb:parameter>'
-     *Note Parameters In Guile::.
-
-'<gdb:pretty-printer>'
-     *Note Guile Pretty Printing API::.
-
-'<gdb:pretty-printer-worker>'
-     *Note Guile Pretty Printing API::.
-
-'<gdb:progspace>'
-     *Note Progspaces In Guile::.
-
-'<gdb:symbol>'
-     *Note Symbols In Guile::.
-
-'<gdb:symtab>'
-     *Note Symbol Tables In Guile::.
-
-'<gdb:sal>'
-     *Note Symbol Tables In Guile::.
-
-'<gdb:type>'
-     *Note Types In Guile::.
-
-'<gdb:field>'
-     *Note Types In Guile::.
-
-'<gdb:value>'
-     *Note Values From Inferior In Guile::.
-
-   The following GDB objects are managed internally so that the Scheme
-function 'eq?' may be applied to them.
-
-'<gdb:arch>'
-'<gdb:block>'
-'<gdb:breakpoint>'
-'<gdb:frame>'
-'<gdb:objfile>'
-'<gdb:progspace>'
-'<gdb:symbol>'
-'<gdb:symtab>'
-'<gdb:type>'
-
-
-File: gdb.info,  Node: Guile Exception Handling,  Next: Values From Inferior In Guile,  Prev: GDB Scheme Data Types,  Up: Guile API
-
-23.3.3.4 Guile Exception Handling
-.................................
-
-When executing the 'guile' command, Guile exceptions uncaught within the
-Guile code are translated to calls to the GDB error-reporting mechanism.
-If the command that called 'guile' does not handle the error, GDB will
-terminate it and report the error according to the setting of the 'guile
-print-stack' parameter.
-
-   The 'guile print-stack' parameter has three settings:
-
-'none'
-     Nothing is printed.
-
-'message'
-     An error message is printed containing the Guile exception name,
-     the associated value, and the Guile call stack backtrace at the
-     point where the exception was raised.  Example:
-
-          (gdb) guile (display foo)
-          ERROR: In procedure memoize-variable-access!:
-          ERROR: Unbound variable: foo
-          Error while executing Scheme code.
-
-'full'
-     In addition to an error message a full backtrace is printed.
-
-          (gdb) set guile print-stack full
-          (gdb) guile (display foo)
-          Guile Backtrace:
-          In ice-9/boot-9.scm:
-           157: 10 [catch #t #<catch-closure 2c76e20> ...]
-          In unknown file:
-             ?: 9 [apply-smob/1 #<catch-closure 2c76e20>]
-          In ice-9/boot-9.scm:
-           157: 8 [catch #t #<catch-closure 2c76d20> ...]
-          In unknown file:
-             ?: 7 [apply-smob/1 #<catch-closure 2c76d20>]
-             ?: 6 [call-with-input-string "(display foo)" ...]
-          In ice-9/boot-9.scm:
-          2320: 5 [save-module-excursion #<procedure 2c2dc30 ... ()>]
-          In ice-9/eval-string.scm:
-            44: 4 [read-and-eval #<input: string 27cb410> #:lang ...]
-            37: 3 [lp (display foo)]
-          In ice-9/eval.scm:
-           387: 2 [eval # ()]
-           393: 1 [eval #<memoized foo> ()]
-          In unknown file:
-             ?: 0 [memoize-variable-access! #<memoized foo> ...]
-
-          ERROR: In procedure memoize-variable-access!:
-          ERROR: Unbound variable: foo
-          Error while executing Scheme code.
-
-   GDB errors that happen in GDB commands invoked by Guile code are
-converted to Guile exceptions.  The type of the Guile exception depends
-on the error.
-
-   Guile procedures provided by GDB can throw the standard Guile
-exceptions like 'wrong-type-arg' and 'out-of-range'.
-
-   User interrupt (via 'C-c' or by typing 'q' at a pagination prompt) is
-translated to a Guile 'signal' exception with value 'SIGINT'.
-
-   GDB Guile procedures can also throw these exceptions:
-
-'gdb:error'
-     This exception is a catch-all for errors generated from within GDB.
-
-'gdb:invalid-object'
-     This exception is thrown when accessing Guile objects that wrap
-     underlying GDB objects have become invalid.  For example, a
-     '<gdb:breakpoint>' object becomes invalid if the user deletes it
-     from the command line.  The object still exists in Guile, but the
-     object it represents is gone.  Further operations on this
-     breakpoint will throw this exception.
-
-'gdb:memory-error'
-     This exception is thrown when an operation tried to access invalid
-     memory in the inferior.
-
-'gdb:pp-type-error'
-     This exception is thrown when a Guile pretty-printer passes a bad
-     object to GDB.
-
-   The following exception-related procedures are provided by the
-'(gdb)' module.
-
- -- Scheme Procedure: make-exception key args
-     Return a '<gdb:exception>' object given by its KEY and ARGS, which
-     are the standard Guile parameters of an exception.  See the Guile
-     documentation for more information (*note (guile)Exceptions::).
-
- -- Scheme Procedure: exception? object
-     Return '#t' if OBJECT is a '<gdb:exception>' object.  Otherwise
-     return '#f'.
-
- -- Scheme Procedure: exception-key exception
-     Return the ARGS field of a '<gdb:exception>' object.
-
- -- Scheme Procedure: exception-args exception
-     Return the ARGS field of a '<gdb:exception>' object.
-
-
-File: gdb.info,  Node: Values From Inferior In Guile,  Next: Arithmetic In Guile,  Prev: Guile Exception Handling,  Up: Guile API
-
-23.3.3.5 Values From Inferior In Guile
-......................................
-
-GDB provides values it obtains from the inferior program in an object of
-type '<gdb:value>'.  GDB uses this object for its internal bookkeeping
-of the inferior's values, and for fetching values when necessary.
-
-   GDB does not memoize '<gdb:value>' objects.  'make-value' always
-returns a fresh object.
-
-     (gdb) guile (eq? (make-value 1) (make-value 1))
-     $1 = #f
-     (gdb) guile (equal? (make-value 1) (make-value 1))
-     $1 = #t
-
-   A '<gdb:value>' that represents a function can be executed via
-inferior function call with 'value-call'.  Any arguments provided to the
-call must match the function's prototype, and must be provided in the
-order specified by that prototype.
-
-   For example, 'some-val' is a '<gdb:value>' instance representing a
-function that takes two integers as arguments.  To execute this
-function, call it like so:
-
-     (define result (value-call some-val 10 20))
-
-   Any values returned from a function call are '<gdb:value>' objects.
-
-   Note: Unlike Python scripting in GDB, inferior values that are simple
-scalars cannot be used directly in Scheme expressions that are valid for
-the value's data type.  For example, '(+ (parse-and-eval "int_variable")
-2)' does not work.  And inferior values that are structures or instances
-of some class cannot be accessed using any special syntax, instead
-'value-field' must be used.
-
-   The following value-related procedures are provided by the '(gdb)'
-module.
-
- -- Scheme Procedure: value? object
-     Return '#t' if OBJECT is a '<gdb:value>' object.  Otherwise return
-     '#f'.
-
- -- Scheme Procedure: make-value value [#:type type]
-     Many Scheme values can be converted directly to a '<gdb:value>'
-     with this procedure.  If TYPE is specified, the result is a value
-     of this type, and if VALUE can't be represented with this type an
-     exception is thrown.  Otherwise the type of the result is
-     determined from VALUE as described below.
-
-     *Note Architectures In Guile::, for a list of the builtin types for
-     an architecture.
-
-     Here's how Scheme values are converted when TYPE argument to
-     'make-value' is not specified:
-
-     Scheme boolean
-          A Scheme boolean is converted the boolean type for the current
-          language.
-
-     Scheme integer
-          A Scheme integer is converted to the first of a C 'int',
-          'unsigned int', 'long', 'unsigned long', 'long long' or
-          'unsigned long long' type for the current architecture that
-          can represent the value.
-
-          If the Scheme integer cannot be represented as a target
-          integer an 'out-of-range' exception is thrown.
-
-     Scheme real
-          A Scheme real is converted to the C 'double' type for the
-          current architecture.
-
-     Scheme string
-          A Scheme string is converted to a string in the current target
-          language using the current target encoding.  Characters that
-          cannot be represented in the current target encoding are
-          replaced with the corresponding escape sequence.  This is
-          Guile's 'SCM_FAILED_CONVERSION_ESCAPE_SEQUENCE' conversion
-          strategy (*note (guile)Strings::).
-
-          Passing TYPE is not supported in this case, if it is provided
-          a 'wrong-type-arg' exception is thrown.
-
-     '<gdb:lazy-string>'
-          If VALUE is a '<gdb:lazy-string>' object (*note Lazy Strings
-          In Guile::), then the 'lazy-string->value' procedure is
-          called, and its result is used.
-
-          Passing TYPE is not supported in this case, if it is provided
-          a 'wrong-type-arg' exception is thrown.
-
-     Scheme bytevector
-          If VALUE is a Scheme bytevector and TYPE is provided, VALUE
-          must be the same size, in bytes, of values of type TYPE, and
-          the result is essentially created by using 'memcpy'.
-
-          If VALUE is a Scheme bytevector and TYPE is not provided, the
-          result is an array of type 'uint8' of the same length.
-
- -- Scheme Procedure: value-optimized-out? value
-     Return '#t' if the compiler optimized out VALUE, thus it is not
-     available for fetching from the inferior.  Otherwise return '#f'.
-
- -- Scheme Procedure: value-address value
-     If VALUE is addressable, returns a '<gdb:value>' object
-     representing the address.  Otherwise, '#f' is returned.
-
- -- Scheme Procedure: value-type value
-     Return the type of VALUE as a '<gdb:type>' object (*note Types In
-     Guile::).
-
- -- Scheme Procedure: value-dynamic-type value
-     Return the dynamic type of VALUE.  This uses C++ run-time type
-     information (RTTI) to determine the dynamic type of the value.  If
-     the value is of class type, it will return the class in which the
-     value is embedded, if any.  If the value is of pointer or reference
-     to a class type, it will compute the dynamic type of the referenced
-     object, and return a pointer or reference to that type,
-     respectively.  In all other cases, it will return the value's
-     static type.
-
-     Note that this feature will only work when debugging a C++ program
-     that includes RTTI for the object in question.  Otherwise, it will
-     just return the static type of the value as in 'ptype foo'.  *Note
-     ptype: Symbols.
-
- -- Scheme Procedure: value-cast value type
-     Return a new instance of '<gdb:value>' that is the result of
-     casting VALUE to the type described by TYPE, which must be a
-     '<gdb:type>' object.  If the cast cannot be performed for some
-     reason, this method throws an exception.
-
- -- Scheme Procedure: value-dynamic-cast value type
-     Like 'value-cast', but works as if the C++ 'dynamic_cast' operator
-     were used.  Consult a C++ reference for details.
-
- -- Scheme Procedure: value-reinterpret-cast value type
-     Like 'value-cast', but works as if the C++ 'reinterpret_cast'
-     operator were used.  Consult a C++ reference for details.
-
- -- Scheme Procedure: value-dereference value
-     For pointer data types, this method returns a new '<gdb:value>'
-     object whose contents is the object pointed to by VALUE.  For
-     example, if 'foo' is a C pointer to an 'int', declared in your C
-     program as
-
-          int *foo;
-
-     then you can use the corresponding '<gdb:value>' to access what
-     'foo' points to like this:
-
-          (define bar (value-dereference foo))
-
-     The result 'bar' will be a '<gdb:value>' object holding the value
-     pointed to by 'foo'.
-
-     A similar function 'value-referenced-value' exists which also
-     returns '<gdb:value>' objects corresponding to the values pointed
-     to by pointer values (and additionally, values referenced by
-     reference values).  However, the behavior of 'value-dereference'
-     differs from 'value-referenced-value' by the fact that the behavior
-     of 'value-dereference' is identical to applying the C unary
-     operator '*' on a given value.  For example, consider a reference
-     to a pointer 'ptrref', declared in your C++ program as
-
-          typedef int *intptr;
-          ...
-          int val = 10;
-          intptr ptr = &val;
-          intptr &ptrref = ptr;
-
-     Though 'ptrref' is a reference value, one can apply the method
-     'value-dereference' to the '<gdb:value>' object corresponding to it
-     and obtain a '<gdb:value>' which is identical to that corresponding
-     to 'val'.  However, if you apply the method
-     'value-referenced-value', the result would be a '<gdb:value>'
-     object identical to that corresponding to 'ptr'.
-
-          (define scm-ptrref (parse-and-eval "ptrref"))
-          (define scm-val (value-dereference scm-ptrref))
-          (define scm-ptr (value-referenced-value scm-ptrref))
-
-     The '<gdb:value>' object 'scm-val' is identical to that
-     corresponding to 'val', and 'scm-ptr' is identical to that
-     corresponding to 'ptr'.  In general, 'value-dereference' can be
-     applied whenever the C unary operator '*' can be applied to the
-     corresponding C value.  For those cases where applying both
-     'value-dereference' and 'value-referenced-value' is allowed, the
-     results obtained need not be identical (as we have seen in the
-     above example).  The results are however identical when applied on
-     '<gdb:value>' objects corresponding to pointers ('<gdb:value>'
-     objects with type code 'TYPE_CODE_PTR') in a C/C++ program.
-
- -- Scheme Procedure: value-referenced-value value
-     For pointer or reference data types, this method returns a new
-     '<gdb:value>' object corresponding to the value referenced by the
-     pointer/reference value.  For pointer data types,
-     'value-dereference' and 'value-referenced-value' produce identical
-     results.  The difference between these methods is that
-     'value-dereference' cannot get the values referenced by reference
-     values.  For example, consider a reference to an 'int', declared in
-     your C++ program as
-
-          int val = 10;
-          int &ref = val;
-
-     then applying 'value-dereference' to the '<gdb:value>' object
-     corresponding to 'ref' will result in an error, while applying
-     'value-referenced-value' will result in a '<gdb:value>' object
-     identical to that corresponding to 'val'.
-
-          (define scm-ref (parse-and-eval "ref"))
-          (define err-ref (value-dereference scm-ref))      ;; error
-          (define scm-val (value-referenced-value scm-ref)) ;; ok
-
-     The '<gdb:value>' object 'scm-val' is identical to that
-     corresponding to 'val'.
-
- -- Scheme Procedure: value-field value field-name
-     Return field FIELD-NAME from '<gdb:value>' object VALUE.
-
- -- Scheme Procedure: value-subscript value index
-     Return the value of array VALUE at index INDEX.  The VALUE argument
-     must be a subscriptable '<gdb:value>' object.
-
- -- Scheme Procedure: value-call value arg-list
-     Perform an inferior function call, taking VALUE as a pointer to the
-     function to call.  Each element of list ARG-LIST must be a
-     <gdb:value> object or an object that can be converted to a value.
-     The result is the value returned by the function.
-
- -- Scheme Procedure: value->bool value
-     Return the Scheme boolean representing '<gdb:value>' VALUE.  The
-     value must be "integer like".  Pointers are ok.
-
- -- Scheme Procedure: value->integer
-     Return the Scheme integer representing '<gdb:value>' VALUE.  The
-     value must be "integer like".  Pointers are ok.
-
- -- Scheme Procedure: value->real
-     Return the Scheme real number representing '<gdb:value>' VALUE.
-     The value must be a number.
-
- -- Scheme Procedure: value->bytevector
-     Return a Scheme bytevector with the raw contents of '<gdb:value>'
-     VALUE.  No transformation, endian or otherwise, is performed.
-
- -- Scheme Procedure: value->string value [#:encoding encoding]
-          [#:errors errors] [#:length length]
-     If VALUE> represents a string, then this method converts the
-     contents to a Guile string.  Otherwise, this method will throw an
-     exception.
-
-     Values are interpreted as strings according to the rules of the
-     current language.  If the optional length argument is given, the
-     string will be converted to that length, and will include any
-     embedded zeroes that the string may contain.  Otherwise, for
-     languages where the string is zero-terminated, the entire string
-     will be converted.
-
-     For example, in C-like languages, a value is a string if it is a
-     pointer to or an array of characters or ints of type 'wchar_t',
-     'char16_t', or 'char32_t'.
-
-     If the optional ENCODING argument is given, it must be a string
-     naming the encoding of the string in the '<gdb:value>', such as
-     '"ascii"', '"iso-8859-6"' or '"utf-8"'.  It accepts the same
-     encodings as the corresponding argument to Guile's
-     'scm_from_stringn' function, and the Guile codec machinery will be
-     used to convert the string.  If ENCODING is not given, or if
-     ENCODING is the empty string, then either the 'target-charset'
-     (*note Character Sets::) will be used, or a language-specific
-     encoding will be used, if the current language is able to supply
-     one.
-
-     The optional ERRORS argument is one of '#f', 'error' or
-     'substitute'.  'error' and 'substitute' must be symbols.  If ERRORS
-     is not specified, or if its value is '#f', then the default
-     conversion strategy is used, which is set with the Scheme function
-     'set-port-conversion-strategy!'.  If the value is ''error' then an
-     exception is thrown if there is any conversion error.  If the value
-     is ''substitute' then any conversion error is replaced with
-     question marks.  *Note (guile)Strings::.
-
-     If the optional LENGTH argument is given, the string will be
-     fetched and converted to the given length.  The length must be a
-     Scheme integer and not a '<gdb:value>' integer.
-
- -- Scheme Procedure: value->lazy-string value [#:encoding encoding]
-          [#:length length]
-     If this '<gdb:value>' represents a string, then this method
-     converts VALUE to a '<gdb:lazy-string' (*note Lazy Strings In
-     Guile::).  Otherwise, this method will throw an exception.
-
-     If the optional ENCODING argument is given, it must be a string
-     naming the encoding of the '<gdb:lazy-string'.  Some examples are:
-     '"ascii"', '"iso-8859-6"' or '"utf-8"'.  If the ENCODING argument
-     is an encoding that GDB does not recognize, GDB will raise an
-     error.
-
-     When a lazy string is printed, the GDB encoding machinery is used
-     to convert the string during printing.  If the optional ENCODING
-     argument is not provided, or is an empty string, GDB will
-     automatically select the encoding most suitable for the string
-     type.  For further information on encoding in GDB please see *note
-     Character Sets::.
-
-     If the optional LENGTH argument is given, the string will be
-     fetched and encoded to the length of characters specified.  If the
-     LENGTH argument is not provided, the string will be fetched and
-     encoded until a null of appropriate width is found.  The length
-     must be a Scheme integer and not a '<gdb:value>' integer.
-
- -- Scheme Procedure: value-lazy? value
-     Return '#t' if VALUE has not yet been fetched from the inferior.
-     Otherwise return '#f'.  GDB does not fetch values until necessary,
-     for efficiency.  For example:
-
-          (define myval (parse-and-eval "somevar"))
-
-     The value of 'somevar' is not fetched at this time.  It will be
-     fetched when the value is needed, or when the 'fetch-lazy'
-     procedure is invoked.
-
- -- Scheme Procedure: make-lazy-value type address
-     Return a '<gdb:value>' that will be lazily fetched from the target.
-     The object of type '<gdb:type>' whose value to fetch is specified
-     by its TYPE and its target memory ADDRESS, which is a Scheme
-     integer.
-
- -- Scheme Procedure: value-fetch-lazy! value
-     If VALUE is a lazy value ('(value-lazy? value)' is '#t'), then the
-     value is fetched from the inferior.  Any errors that occur in the
-     process will produce a Guile exception.
-
-     If VALUE is not a lazy value, this method has no effect.
-
-     The result of this function is unspecified.
-
- -- Scheme Procedure: value-print value
-     Return the string representation (print form) of '<gdb:value>'
-     VALUE.
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-5 ./gdb/doc/gdb.info-5
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-5	2020-03-07 02:11:34.000000000 +0000
+++ ./gdb/doc/gdb.info-5	2021-05-21 02:00:17.000000000 +0000
@@ -1,6 +1,6 @@
-This is gdb.info, produced by makeinfo version 6.3 from gdb.texinfo.
+This is gdb.info, produced by makeinfo version 6.5 from gdb.texinfo.
 
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -21,9 +21,9 @@ 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.1.90.20200307-git.
+Source-Level Debugger' for GDB (GDB) Version 10.2.90.20210521-git.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -37,6 +37,739 @@ this GNU Manual.  Buying copies from GNU
 developing GNU and promoting software freedom."
 
 
+File: gdb.info,  Node: Guile API,  Next: Guile Auto-loading,  Prev: Guile Commands,  Up: Guile
+
+23.3.3 Guile API
+----------------
+
+You can get quick online help for GDB's Guile API by issuing the command
+'help guile', or by issuing the command ',help' from an interactive
+Guile session.  Furthermore, most Guile procedures provided by GDB have
+doc strings which can be obtained with ',describe PROCEDURE-NAME' or ',d
+PROCEDURE-NAME' from the Guile interactive prompt.
+
+* Menu:
+
+* Basic Guile::              Basic Guile Functions
+* Guile Configuration::      Guile configuration variables
+* GDB Scheme Data Types::    Scheme representations of GDB objects
+* Guile Exception Handling:: How Guile exceptions are translated
+* Values From Inferior In Guile:: Guile representation of values
+* Arithmetic In Guile::      Arithmetic in Guile
+* Types In Guile::           Guile representation of types
+* Guile Pretty Printing API:: Pretty-printing values with Guile
+* Selecting Guile Pretty-Printers:: How GDB chooses a pretty-printer
+* Writing a Guile Pretty-Printer:: Writing a pretty-printer
+* Commands In Guile::        Implementing new commands in Guile
+* Parameters In Guile::      Adding new GDB parameters
+* Progspaces In Guile::      Program spaces
+* Objfiles In Guile::        Object files in Guile
+* Frames In Guile::          Accessing inferior stack frames from Guile
+* Blocks In Guile::          Accessing blocks from Guile
+* Symbols In Guile::         Guile representation of symbols
+* Symbol Tables In Guile::   Guile representation of symbol tables
+* Breakpoints In Guile::     Manipulating breakpoints using Guile
+* Lazy Strings In Guile::    Guile representation of lazy strings
+* Architectures In Guile::   Guile representation of architectures
+* Disassembly In Guile::     Disassembling instructions from Guile
+* I/O Ports in Guile::       GDB I/O ports
+* Memory Ports in Guile::    Accessing memory through ports and bytevectors
+* Iterators In Guile::       Basic iterator support
+
+
+File: gdb.info,  Node: Basic Guile,  Next: Guile Configuration,  Up: Guile API
+
+23.3.3.1 Basic Guile
+....................
+
+At startup, GDB overrides Guile's 'current-output-port' and
+'current-error-port' to print using GDB's output-paging streams.  A
+Guile program which outputs to one of these streams may have its output
+interrupted by the user (*note Screen Size::).  In this situation, a
+Guile 'signal' exception is thrown with value 'SIGINT'.
+
+   Guile's history mechanism uses the same naming as GDB's, namely the
+user of dollar-variables (e.g., $1, $2, etc.).  The results of
+evaluations in Guile and in GDB are counted separately, '$1' in Guile is
+not the same value as '$1' in GDB.
+
+   GDB is not thread-safe.  If your Guile program uses multiple threads,
+you must be careful to only call GDB-specific functions in the GDB
+thread.
+
+   Some care must be taken when writing Guile code to run in GDB.  Two
+things are worth noting in particular:
+
+   * GDB installs handlers for 'SIGCHLD' and 'SIGINT'.  Guile code must
+     not override these, or even change the options using 'sigaction'.
+     If your program changes the handling of these signals, GDB will
+     most likely stop working correctly.  Note that it is unfortunately
+     common for GUI toolkits to install a 'SIGCHLD' handler.
+
+   * GDB takes care to mark its internal file descriptors as
+     close-on-exec.  However, this cannot be done in a thread-safe way
+     on all platforms.  Your Guile programs should be aware of this and
+     should both create new file descriptors with the close-on-exec flag
+     set and arrange to close unneeded file descriptors before starting
+     a child process.
+
+   GDB introduces a new Guile module, named 'gdb'.  All methods and
+classes added by GDB are placed in this module.  GDB does not
+automatically 'import' the 'gdb' module, scripts must do this
+themselves.  There are various options for how to import a module, so
+GDB leaves the choice of how the 'gdb' module is imported to the user.
+To simplify interactive use, it is recommended to add one of the
+following to your ~/.gdbinit.
+
+     guile (use-modules (gdb))
+
+     guile (use-modules ((gdb) #:renamer (symbol-prefix-proc 'gdb:)))
+
+   Which one to choose depends on your preference.  The second one adds
+'gdb:' as a prefix to all module functions and variables.
+
+   The rest of this manual assumes the 'gdb' module has been imported
+without any prefix.  See the Guile documentation for 'use-modules' for
+more information (*note (guile)Using Guile Modules::).
+
+   Example:
+
+     (gdb) guile (value-type (make-value 1))
+     ERROR: Unbound variable: value-type
+     Error while executing Scheme code.
+     (gdb) guile (use-modules (gdb))
+     (gdb) guile (value-type (make-value 1))
+     int
+     (gdb)
+
+   The '(gdb)' module provides these basic Guile functions.
+
+ -- Scheme Procedure: execute command [#:from-tty boolean] [#:to-string
+          boolean]
+     Evaluate COMMAND, a string, as a GDB CLI command.  If a GDB
+     exception happens while COMMAND runs, it is translated as described
+     in *note Guile Exception Handling: Guile Exception Handling.
+
+     FROM-TTY specifies whether GDB ought to consider this command as
+     having originated from the user invoking it interactively.  It must
+     be a boolean value.  If omitted, it defaults to '#f'.
+
+     By default, any output produced by COMMAND is sent to GDB's
+     standard output (and to the log output if logging is turned on).
+     If the TO-STRING parameter is '#t', then output will be collected
+     by 'execute' and returned as a string.  The default is '#f', in
+     which case the return value is unspecified.  If TO-STRING is '#t',
+     the GDB virtual terminal will be temporarily set to unlimited width
+     and height, and its pagination will be disabled; *note Screen
+     Size::.
+
+ -- Scheme Procedure: history-ref number
+     Return a value from GDB's value history (*note Value History::).
+     The NUMBER argument indicates which history element to return.  If
+     NUMBER is negative, then GDB will take its absolute value and count
+     backward from the last element (i.e., the most recent element) to
+     find the value to return.  If NUMBER is zero, then GDB will return
+     the most recent element.  If the element specified by NUMBER
+     doesn't exist in the value history, a 'gdb:error' exception will be
+     raised.
+
+     If no exception is raised, the return value is always an instance
+     of '<gdb:value>' (*note Values From Inferior In Guile::).
+
+     _Note:_ GDB's value history is independent of Guile's.  '$1' in
+     GDB's value history contains the result of evaluating an expression
+     from GDB's command line and '$1' from Guile's history contains the
+     result of evaluating an expression from Guile's command line.
+
+ -- Scheme Procedure: history-append! value
+     Append VALUE, an instance of '<gdb:value>', to GDB's value history.
+     Return its index in the history.
+
+     Putting into history values returned by Guile extensions will allow
+     the user convenient access to those values via CLI history
+     facilities.
+
+ -- Scheme Procedure: parse-and-eval expression
+     Parse EXPRESSION as an expression in the current language, evaluate
+     it, and return the result as a '<gdb:value>'.  The EXPRESSION must
+     be a string.
+
+     This function can be useful when implementing a new command (*note
+     Commands In Guile::), as it provides a way to parse the command's
+     arguments as an expression.  It is also is useful when computing
+     values.  For example, it is the only way to get the value of a
+     convenience variable (*note Convenience Vars::) as a '<gdb:value>'.
+
+
+File: gdb.info,  Node: Guile Configuration,  Next: GDB Scheme Data Types,  Prev: Basic Guile,  Up: Guile API
+
+23.3.3.2 Guile Configuration
+............................
+
+GDB provides these Scheme functions to access various configuration
+parameters.
+
+ -- Scheme Procedure: data-directory
+     Return a string containing GDB's data directory.  This directory
+     contains GDB's ancillary files.
+
+ -- Scheme Procedure: guile-data-directory
+     Return a string containing GDB's Guile data directory.  This
+     directory contains the Guile modules provided by GDB.
+
+ -- Scheme Procedure: gdb-version
+     Return a string containing the GDB version.
+
+ -- Scheme Procedure: host-config
+     Return a string containing the host configuration.  This is the
+     string passed to '--host' when GDB was configured.
+
+ -- Scheme Procedure: target-config
+     Return a string containing the target configuration.  This is the
+     string passed to '--target' when GDB was configured.
+
+
+File: gdb.info,  Node: GDB Scheme Data Types,  Next: Guile Exception Handling,  Prev: Guile Configuration,  Up: Guile API
+
+23.3.3.3 GDB Scheme Data Types
+..............................
+
+The values exposed by GDB to Guile are known as "GDB objects".  There
+are several kinds of GDB object, and each is disjoint from all other
+types known to Guile.
+
+ -- Scheme Procedure: gdb-object-kind object
+     Return the kind of the GDB object, e.g., '<gdb:breakpoint>', as a
+     symbol.
+
+   GDB defines the following object types:
+
+'<gdb:arch>'
+     *Note Architectures In Guile::.
+
+'<gdb:block>'
+     *Note Blocks In Guile::.
+
+'<gdb:block-symbols-iterator>'
+     *Note Blocks In Guile::.
+
+'<gdb:breakpoint>'
+     *Note Breakpoints In Guile::.
+
+'<gdb:command>'
+     *Note Commands In Guile::.
+
+'<gdb:exception>'
+     *Note Guile Exception Handling::.
+
+'<gdb:frame>'
+     *Note Frames In Guile::.
+
+'<gdb:iterator>'
+     *Note Iterators In Guile::.
+
+'<gdb:lazy-string>'
+     *Note Lazy Strings In Guile::.
+
+'<gdb:objfile>'
+     *Note Objfiles In Guile::.
+
+'<gdb:parameter>'
+     *Note Parameters In Guile::.
+
+'<gdb:pretty-printer>'
+     *Note Guile Pretty Printing API::.
+
+'<gdb:pretty-printer-worker>'
+     *Note Guile Pretty Printing API::.
+
+'<gdb:progspace>'
+     *Note Progspaces In Guile::.
+
+'<gdb:symbol>'
+     *Note Symbols In Guile::.
+
+'<gdb:symtab>'
+     *Note Symbol Tables In Guile::.
+
+'<gdb:sal>'
+     *Note Symbol Tables In Guile::.
+
+'<gdb:type>'
+     *Note Types In Guile::.
+
+'<gdb:field>'
+     *Note Types In Guile::.
+
+'<gdb:value>'
+     *Note Values From Inferior In Guile::.
+
+   The following GDB objects are managed internally so that the Scheme
+function 'eq?' may be applied to them.
+
+'<gdb:arch>'
+'<gdb:block>'
+'<gdb:breakpoint>'
+'<gdb:frame>'
+'<gdb:objfile>'
+'<gdb:progspace>'
+'<gdb:symbol>'
+'<gdb:symtab>'
+'<gdb:type>'
+
+
+File: gdb.info,  Node: Guile Exception Handling,  Next: Values From Inferior In Guile,  Prev: GDB Scheme Data Types,  Up: Guile API
+
+23.3.3.4 Guile Exception Handling
+.................................
+
+When executing the 'guile' command, Guile exceptions uncaught within the
+Guile code are translated to calls to the GDB error-reporting mechanism.
+If the command that called 'guile' does not handle the error, GDB will
+terminate it and report the error according to the setting of the 'guile
+print-stack' parameter.
+
+   The 'guile print-stack' parameter has three settings:
+
+'none'
+     Nothing is printed.
+
+'message'
+     An error message is printed containing the Guile exception name,
+     the associated value, and the Guile call stack backtrace at the
+     point where the exception was raised.  Example:
+
+          (gdb) guile (display foo)
+          ERROR: In procedure memoize-variable-access!:
+          ERROR: Unbound variable: foo
+          Error while executing Scheme code.
+
+'full'
+     In addition to an error message a full backtrace is printed.
+
+          (gdb) set guile print-stack full
+          (gdb) guile (display foo)
+          Guile Backtrace:
+          In ice-9/boot-9.scm:
+           157: 10 [catch #t #<catch-closure 2c76e20> ...]
+          In unknown file:
+             ?: 9 [apply-smob/1 #<catch-closure 2c76e20>]
+          In ice-9/boot-9.scm:
+           157: 8 [catch #t #<catch-closure 2c76d20> ...]
+          In unknown file:
+             ?: 7 [apply-smob/1 #<catch-closure 2c76d20>]
+             ?: 6 [call-with-input-string "(display foo)" ...]
+          In ice-9/boot-9.scm:
+          2320: 5 [save-module-excursion #<procedure 2c2dc30 ... ()>]
+          In ice-9/eval-string.scm:
+            44: 4 [read-and-eval #<input: string 27cb410> #:lang ...]
+            37: 3 [lp (display foo)]
+          In ice-9/eval.scm:
+           387: 2 [eval # ()]
+           393: 1 [eval #<memoized foo> ()]
+          In unknown file:
+             ?: 0 [memoize-variable-access! #<memoized foo> ...]
+
+          ERROR: In procedure memoize-variable-access!:
+          ERROR: Unbound variable: foo
+          Error while executing Scheme code.
+
+   GDB errors that happen in GDB commands invoked by Guile code are
+converted to Guile exceptions.  The type of the Guile exception depends
+on the error.
+
+   Guile procedures provided by GDB can throw the standard Guile
+exceptions like 'wrong-type-arg' and 'out-of-range'.
+
+   User interrupt (via 'C-c' or by typing 'q' at a pagination prompt) is
+translated to a Guile 'signal' exception with value 'SIGINT'.
+
+   GDB Guile procedures can also throw these exceptions:
+
+'gdb:error'
+     This exception is a catch-all for errors generated from within GDB.
+
+'gdb:invalid-object'
+     This exception is thrown when accessing Guile objects that wrap
+     underlying GDB objects have become invalid.  For example, a
+     '<gdb:breakpoint>' object becomes invalid if the user deletes it
+     from the command line.  The object still exists in Guile, but the
+     object it represents is gone.  Further operations on this
+     breakpoint will throw this exception.
+
+'gdb:memory-error'
+     This exception is thrown when an operation tried to access invalid
+     memory in the inferior.
+
+'gdb:pp-type-error'
+     This exception is thrown when a Guile pretty-printer passes a bad
+     object to GDB.
+
+   The following exception-related procedures are provided by the
+'(gdb)' module.
+
+ -- Scheme Procedure: make-exception key args
+     Return a '<gdb:exception>' object given by its KEY and ARGS, which
+     are the standard Guile parameters of an exception.  See the Guile
+     documentation for more information (*note (guile)Exceptions::).
+
+ -- Scheme Procedure: exception? object
+     Return '#t' if OBJECT is a '<gdb:exception>' object.  Otherwise
+     return '#f'.
+
+ -- Scheme Procedure: exception-key exception
+     Return the ARGS field of a '<gdb:exception>' object.
+
+ -- Scheme Procedure: exception-args exception
+     Return the ARGS field of a '<gdb:exception>' object.
+
+
+File: gdb.info,  Node: Values From Inferior In Guile,  Next: Arithmetic In Guile,  Prev: Guile Exception Handling,  Up: Guile API
+
+23.3.3.5 Values From Inferior In Guile
+......................................
+
+GDB provides values it obtains from the inferior program in an object of
+type '<gdb:value>'.  GDB uses this object for its internal bookkeeping
+of the inferior's values, and for fetching values when necessary.
+
+   GDB does not memoize '<gdb:value>' objects.  'make-value' always
+returns a fresh object.
+
+     (gdb) guile (eq? (make-value 1) (make-value 1))
+     $1 = #f
+     (gdb) guile (equal? (make-value 1) (make-value 1))
+     $1 = #t
+
+   A '<gdb:value>' that represents a function can be executed via
+inferior function call with 'value-call'.  Any arguments provided to the
+call must match the function's prototype, and must be provided in the
+order specified by that prototype.
+
+   For example, 'some-val' is a '<gdb:value>' instance representing a
+function that takes two integers as arguments.  To execute this
+function, call it like so:
+
+     (define result (value-call some-val 10 20))
+
+   Any values returned from a function call are '<gdb:value>' objects.
+
+   Note: Unlike Python scripting in GDB, inferior values that are simple
+scalars cannot be used directly in Scheme expressions that are valid for
+the value's data type.  For example, '(+ (parse-and-eval "int_variable")
+2)' does not work.  And inferior values that are structures or instances
+of some class cannot be accessed using any special syntax, instead
+'value-field' must be used.
+
+   The following value-related procedures are provided by the '(gdb)'
+module.
+
+ -- Scheme Procedure: value? object
+     Return '#t' if OBJECT is a '<gdb:value>' object.  Otherwise return
+     '#f'.
+
+ -- Scheme Procedure: make-value value [#:type type]
+     Many Scheme values can be converted directly to a '<gdb:value>'
+     with this procedure.  If TYPE is specified, the result is a value
+     of this type, and if VALUE can't be represented with this type an
+     exception is thrown.  Otherwise the type of the result is
+     determined from VALUE as described below.
+
+     *Note Architectures In Guile::, for a list of the builtin types for
+     an architecture.
+
+     Here's how Scheme values are converted when TYPE argument to
+     'make-value' is not specified:
+
+     Scheme boolean
+          A Scheme boolean is converted the boolean type for the current
+          language.
+
+     Scheme integer
+          A Scheme integer is converted to the first of a C 'int',
+          'unsigned int', 'long', 'unsigned long', 'long long' or
+          'unsigned long long' type for the current architecture that
+          can represent the value.
+
+          If the Scheme integer cannot be represented as a target
+          integer an 'out-of-range' exception is thrown.
+
+     Scheme real
+          A Scheme real is converted to the C 'double' type for the
+          current architecture.
+
+     Scheme string
+          A Scheme string is converted to a string in the current target
+          language using the current target encoding.  Characters that
+          cannot be represented in the current target encoding are
+          replaced with the corresponding escape sequence.  This is
+          Guile's 'SCM_FAILED_CONVERSION_ESCAPE_SEQUENCE' conversion
+          strategy (*note (guile)Strings::).
+
+          Passing TYPE is not supported in this case, if it is provided
+          a 'wrong-type-arg' exception is thrown.
+
+     '<gdb:lazy-string>'
+          If VALUE is a '<gdb:lazy-string>' object (*note Lazy Strings
+          In Guile::), then the 'lazy-string->value' procedure is
+          called, and its result is used.
+
+          Passing TYPE is not supported in this case, if it is provided
+          a 'wrong-type-arg' exception is thrown.
+
+     Scheme bytevector
+          If VALUE is a Scheme bytevector and TYPE is provided, VALUE
+          must be the same size, in bytes, of values of type TYPE, and
+          the result is essentially created by using 'memcpy'.
+
+          If VALUE is a Scheme bytevector and TYPE is not provided, the
+          result is an array of type 'uint8' of the same length.
+
+ -- Scheme Procedure: value-optimized-out? value
+     Return '#t' if the compiler optimized out VALUE, thus it is not
+     available for fetching from the inferior.  Otherwise return '#f'.
+
+ -- Scheme Procedure: value-address value
+     If VALUE is addressable, returns a '<gdb:value>' object
+     representing the address.  Otherwise, '#f' is returned.
+
+ -- Scheme Procedure: value-type value
+     Return the type of VALUE as a '<gdb:type>' object (*note Types In
+     Guile::).
+
+ -- Scheme Procedure: value-dynamic-type value
+     Return the dynamic type of VALUE.  This uses C++ run-time type
+     information (RTTI) to determine the dynamic type of the value.  If
+     the value is of class type, it will return the class in which the
+     value is embedded, if any.  If the value is of pointer or reference
+     to a class type, it will compute the dynamic type of the referenced
+     object, and return a pointer or reference to that type,
+     respectively.  In all other cases, it will return the value's
+     static type.
+
+     Note that this feature will only work when debugging a C++ program
+     that includes RTTI for the object in question.  Otherwise, it will
+     just return the static type of the value as in 'ptype foo'.  *Note
+     ptype: Symbols.
+
+ -- Scheme Procedure: value-cast value type
+     Return a new instance of '<gdb:value>' that is the result of
+     casting VALUE to the type described by TYPE, which must be a
+     '<gdb:type>' object.  If the cast cannot be performed for some
+     reason, this method throws an exception.
+
+ -- Scheme Procedure: value-dynamic-cast value type
+     Like 'value-cast', but works as if the C++ 'dynamic_cast' operator
+     were used.  Consult a C++ reference for details.
+
+ -- Scheme Procedure: value-reinterpret-cast value type
+     Like 'value-cast', but works as if the C++ 'reinterpret_cast'
+     operator were used.  Consult a C++ reference for details.
+
+ -- Scheme Procedure: value-dereference value
+     For pointer data types, this method returns a new '<gdb:value>'
+     object whose contents is the object pointed to by VALUE.  For
+     example, if 'foo' is a C pointer to an 'int', declared in your C
+     program as
+
+          int *foo;
+
+     then you can use the corresponding '<gdb:value>' to access what
+     'foo' points to like this:
+
+          (define bar (value-dereference foo))
+
+     The result 'bar' will be a '<gdb:value>' object holding the value
+     pointed to by 'foo'.
+
+     A similar function 'value-referenced-value' exists which also
+     returns '<gdb:value>' objects corresponding to the values pointed
+     to by pointer values (and additionally, values referenced by
+     reference values).  However, the behavior of 'value-dereference'
+     differs from 'value-referenced-value' by the fact that the behavior
+     of 'value-dereference' is identical to applying the C unary
+     operator '*' on a given value.  For example, consider a reference
+     to a pointer 'ptrref', declared in your C++ program as
+
+          typedef int *intptr;
+          ...
+          int val = 10;
+          intptr ptr = &val;
+          intptr &ptrref = ptr;
+
+     Though 'ptrref' is a reference value, one can apply the method
+     'value-dereference' to the '<gdb:value>' object corresponding to it
+     and obtain a '<gdb:value>' which is identical to that corresponding
+     to 'val'.  However, if you apply the method
+     'value-referenced-value', the result would be a '<gdb:value>'
+     object identical to that corresponding to 'ptr'.
+
+          (define scm-ptrref (parse-and-eval "ptrref"))
+          (define scm-val (value-dereference scm-ptrref))
+          (define scm-ptr (value-referenced-value scm-ptrref))
+
+     The '<gdb:value>' object 'scm-val' is identical to that
+     corresponding to 'val', and 'scm-ptr' is identical to that
+     corresponding to 'ptr'.  In general, 'value-dereference' can be
+     applied whenever the C unary operator '*' can be applied to the
+     corresponding C value.  For those cases where applying both
+     'value-dereference' and 'value-referenced-value' is allowed, the
+     results obtained need not be identical (as we have seen in the
+     above example).  The results are however identical when applied on
+     '<gdb:value>' objects corresponding to pointers ('<gdb:value>'
+     objects with type code 'TYPE_CODE_PTR') in a C/C++ program.
+
+ -- Scheme Procedure: value-referenced-value value
+     For pointer or reference data types, this method returns a new
+     '<gdb:value>' object corresponding to the value referenced by the
+     pointer/reference value.  For pointer data types,
+     'value-dereference' and 'value-referenced-value' produce identical
+     results.  The difference between these methods is that
+     'value-dereference' cannot get the values referenced by reference
+     values.  For example, consider a reference to an 'int', declared in
+     your C++ program as
+
+          int val = 10;
+          int &ref = val;
+
+     then applying 'value-dereference' to the '<gdb:value>' object
+     corresponding to 'ref' will result in an error, while applying
+     'value-referenced-value' will result in a '<gdb:value>' object
+     identical to that corresponding to 'val'.
+
+          (define scm-ref (parse-and-eval "ref"))
+          (define err-ref (value-dereference scm-ref))      ;; error
+          (define scm-val (value-referenced-value scm-ref)) ;; ok
+
+     The '<gdb:value>' object 'scm-val' is identical to that
+     corresponding to 'val'.
+
+ -- Scheme Procedure: value-field value field-name
+     Return field FIELD-NAME from '<gdb:value>' object VALUE.
+
+ -- Scheme Procedure: value-subscript value index
+     Return the value of array VALUE at index INDEX.  The VALUE argument
+     must be a subscriptable '<gdb:value>' object.
+
+ -- Scheme Procedure: value-call value arg-list
+     Perform an inferior function call, taking VALUE as a pointer to the
+     function to call.  Each element of list ARG-LIST must be a
+     <gdb:value> object or an object that can be converted to a value.
+     The result is the value returned by the function.
+
+ -- Scheme Procedure: value->bool value
+     Return the Scheme boolean representing '<gdb:value>' VALUE.  The
+     value must be "integer like".  Pointers are ok.
+
+ -- Scheme Procedure: value->integer
+     Return the Scheme integer representing '<gdb:value>' VALUE.  The
+     value must be "integer like".  Pointers are ok.
+
+ -- Scheme Procedure: value->real
+     Return the Scheme real number representing '<gdb:value>' VALUE.
+     The value must be a number.
+
+ -- Scheme Procedure: value->bytevector
+     Return a Scheme bytevector with the raw contents of '<gdb:value>'
+     VALUE.  No transformation, endian or otherwise, is performed.
+
+ -- Scheme Procedure: value->string value [#:encoding encoding]
+          [#:errors errors] [#:length length]
+     If VALUE> represents a string, then this method converts the
+     contents to a Guile string.  Otherwise, this method will throw an
+     exception.
+
+     Values are interpreted as strings according to the rules of the
+     current language.  If the optional length argument is given, the
+     string will be converted to that length, and will include any
+     embedded zeroes that the string may contain.  Otherwise, for
+     languages where the string is zero-terminated, the entire string
+     will be converted.
+
+     For example, in C-like languages, a value is a string if it is a
+     pointer to or an array of characters or ints of type 'wchar_t',
+     'char16_t', or 'char32_t'.
+
+     If the optional ENCODING argument is given, it must be a string
+     naming the encoding of the string in the '<gdb:value>', such as
+     '"ascii"', '"iso-8859-6"' or '"utf-8"'.  It accepts the same
+     encodings as the corresponding argument to Guile's
+     'scm_from_stringn' function, and the Guile codec machinery will be
+     used to convert the string.  If ENCODING is not given, or if
+     ENCODING is the empty string, then either the 'target-charset'
+     (*note Character Sets::) will be used, or a language-specific
+     encoding will be used, if the current language is able to supply
+     one.
+
+     The optional ERRORS argument is one of '#f', 'error' or
+     'substitute'.  'error' and 'substitute' must be symbols.  If ERRORS
+     is not specified, or if its value is '#f', then the default
+     conversion strategy is used, which is set with the Scheme function
+     'set-port-conversion-strategy!'.  If the value is ''error' then an
+     exception is thrown if there is any conversion error.  If the value
+     is ''substitute' then any conversion error is replaced with
+     question marks.  *Note (guile)Strings::.
+
+     If the optional LENGTH argument is given, the string will be
+     fetched and converted to the given length.  The length must be a
+     Scheme integer and not a '<gdb:value>' integer.
+
+ -- Scheme Procedure: value->lazy-string value [#:encoding encoding]
+          [#:length length]
+     If this '<gdb:value>' represents a string, then this method
+     converts VALUE to a '<gdb:lazy-string' (*note Lazy Strings In
+     Guile::).  Otherwise, this method will throw an exception.
+
+     If the optional ENCODING argument is given, it must be a string
+     naming the encoding of the '<gdb:lazy-string'.  Some examples are:
+     '"ascii"', '"iso-8859-6"' or '"utf-8"'.  If the ENCODING argument
+     is an encoding that GDB does not recognize, GDB will raise an
+     error.
+
+     When a lazy string is printed, the GDB encoding machinery is used
+     to convert the string during printing.  If the optional ENCODING
+     argument is not provided, or is an empty string, GDB will
+     automatically select the encoding most suitable for the string
+     type.  For further information on encoding in GDB please see *note
+     Character Sets::.
+
+     If the optional LENGTH argument is given, the string will be
+     fetched and encoded to the length of characters specified.  If the
+     LENGTH argument is not provided, the string will be fetched and
+     encoded until a null of appropriate width is found.  The length
+     must be a Scheme integer and not a '<gdb:value>' integer.
+
+ -- Scheme Procedure: value-lazy? value
+     Return '#t' if VALUE has not yet been fetched from the inferior.
+     Otherwise return '#f'.  GDB does not fetch values until necessary,
+     for efficiency.  For example:
+
+          (define myval (parse-and-eval "somevar"))
+
+     The value of 'somevar' is not fetched at this time.  It will be
+     fetched when the value is needed, or when the 'fetch-lazy'
+     procedure is invoked.
+
+ -- Scheme Procedure: make-lazy-value type address
+     Return a '<gdb:value>' that will be lazily fetched from the target.
+     The object of type '<gdb:type>' whose value to fetch is specified
+     by its TYPE and its target memory ADDRESS, which is a Scheme
+     integer.
+
+ -- Scheme Procedure: value-fetch-lazy! value
+     If VALUE is a lazy value ('(value-lazy? value)' is '#t'), then the
+     value is fetched from the inferior.  Any errors that occur in the
+     process will produce a Guile exception.
+
+     If VALUE is not a lazy value, this method has no effect.
+
+     The result of this function is unspecified.
+
+ -- Scheme Procedure: value-print value
+     Return the string representation (print form) of '<gdb:value>'
+     VALUE.
+
+
 File: gdb.info,  Node: Arithmetic In Guile,  Next: Types In Guile,  Prev: Values From Inferior In Guile,  Up: Guile API
 
 23.3.3.6 Arithmetic In Guile
@@ -1112,8 +1845,8 @@ File: gdb.info,  Node: Progspaces In Gui
 
 A program space, or "progspace", represents a symbolic view of an
 address space.  It consists of all of the objfiles of the program.
-*Note Objfiles In Guile::.  *Note program spaces: Inferiors and
-Programs, for more details about program spaces.
+*Note Objfiles In Guile::.  *Note program spaces: Inferiors Connections
+and Programs, for more details about program spaces.
 
    Each progspace is represented by an instance of the '<gdb:progspace>'
 smob.  *Note GDB Scheme Data Types::.
@@ -1133,7 +1866,7 @@ smob.  *Note GDB Scheme Data Types::.
  -- Scheme Procedure: current-progspace
      This function returns the program space of the currently selected
      inferior.  There is always a current progspace, this never returns
-     '#f'.  *Note Inferiors and Programs::.
+     '#f'.  *Note Inferiors Connections and Programs::.
 
  -- Scheme Procedure: progspaces
      Return a list of all the progspaces currently known to GDB.
@@ -2333,19 +3066,33 @@ object.  One can then read/write memory
      Return the size of the read buffer of '<gdb:memory-port>'
      MEMORY-PORT.
 
+     This procedure is deprecated and will be removed in GDB 11.  It
+     returns 0 when using Guile 2.2 or later.
+
  -- Scheme Procedure: set-memory-port-read-buffer-size! memory-port size
      Set the size of the read buffer of '<gdb:memory-port>' MEMORY-PORT
      to SIZE.  The result is unspecified.
 
+     This procedure is deprecated and will be removed in GDB 11.  When
+     GDB is built with Guile 2.2 or later, you can call 'setvbuf'
+     instead (*note 'setvbuf': (guile)Buffering.).
+
  -- Scheme Procedure: memory-port-write-buffer-size memory-port
      Return the size of the write buffer of '<gdb:memory-port>'
      MEMORY-PORT.
 
+     This procedure is deprecated and will be removed in GDB 11.  It
+     returns 0 when GDB is built with Guile 2.2 or later.
+
  -- Scheme Procedure: set-memory-port-write-buffer-size! memory-port
           size
      Set the size of the write buffer of '<gdb:memory-port>' MEMORY-PORT
      to SIZE.  The result is unspecified.
 
+     This procedure is deprecated and will be removed in GDB 11.  When
+     GDB is built with Guile 2.2 or later, you can call 'setvbuf'
+     instead.
+
    A memory port is closed like any other port, with 'close-port'.
 
    Combined with Guile's 'bytevectors', memory ports provide a lot of
@@ -2597,7 +3344,7 @@ This module provides a collection of uti
 
 File: gdb.info,  Node: Auto-loading extensions,  Next: Multiple Extension Languages,  Prev: Guile,  Up: Extending GDB
 
-23.4 Auto-loading extensions
+23.4 Auto-Loading Extensions
 ============================
 
 GDB provides two mechanisms for automatically loading extensions when a
@@ -2626,7 +3373,7 @@ configured 'auto-load safe-path' (*note
 
 File: gdb.info,  Node: objfile-gdbdotext file,  Next: dotdebug_gdb_scripts section,  Up: Auto-loading extensions
 
-23.4.1 The 'OBJFILE-gdb.EXT' file
+23.4.1 The 'OBJFILE-gdb.EXT' File
 ---------------------------------
 
 When a new object file is read, GDB looks for a file named
@@ -2648,7 +3395,11 @@ readable, GDB will evaluate it as a scri
 language.
 
    If this file does not exist, then GDB will look for SCRIPT-NAME file
-in all of the directories as specified below.
+in all of the directories as specified below.  (On MS-Windows/MS-DOS,
+the drive letter of the executable's leading directories is converted to
+a one-letter subdirectory, i.e. 'd:/usr/bin/' is converted to
+'/d/usr/bin/', because Windows filesystems disallow colons in file
+names.)
 
    Note that loading of these files requires an accordingly configured
 'auto-load safe-path' (*note Auto-loading safe path::).
@@ -2700,7 +3451,7 @@ it is evaluated more than once.
 
 File: gdb.info,  Node: dotdebug_gdb_scripts section,  Next: Which flavor to choose?,  Prev: objfile-gdbdotext file,  Up: Auto-loading extensions
 
-23.4.2 The '.debug_gdb_scripts' section
+23.4.2 The '.debug_gdb_scripts' Section
 ---------------------------------------
 
 For systems using file formats like ELF and COFF, when GDB loads a new
@@ -2793,7 +3544,7 @@ safe-path' (*note Auto-loading safe path
 
 File: gdb.info,  Node: Which flavor to choose?,  Prev: dotdebug_gdb_scripts section,  Up: Auto-loading extensions
 
-23.4.3 Which flavor to choose?
+23.4.3 Which Flavor to Choose?
 ------------------------------
 
 Given the multiple ways of auto-loading extensions, it might not always
@@ -2846,7 +3597,7 @@ The Guile and Python extension languages
 generally do not interfere with each other.  There are some things to be
 aware of, however.
 
-23.5.1 Python comes first
+23.5.1 Python Comes First
 -------------------------
 
 Python was GDB's first extension language, and to avoid breaking
@@ -2863,7 +3614,7 @@ extension languages are not tried.
 
 File: gdb.info,  Node: Aliases,  Prev: Multiple Extension Languages,  Up: Extending GDB
 
-23.6 Creating new spellings of existing commands
+23.6 Creating New Spellings of Existing Commands
 ================================================
 
 It is often useful to define alternate spellings of existing commands.
@@ -2881,7 +3632,7 @@ multi-word commands.  For example, GDB p
 
    You can define a new alias with the 'alias' command.
 
-'alias [-a] [--] ALIAS = COMMAND'
+'alias [-a] [--] ALIAS = COMMAND [DEFAULT-ARGS...]'
 
    ALIAS specifies the name of the new alias.  Each word of ALIAS must
 consist of letters, numbers, dashes and underscores.
@@ -2889,13 +3640,27 @@ consist of letters, numbers, dashes and
    COMMAND specifies the name of an existing command that is being
 aliased.
 
+   COMMAND can also be the name of an existing alias.  In this case,
+COMMAND cannot be an alias that has default arguments.
+
    The '-a' option specifies that the new alias is an abbreviation of
-the command.  Abbreviations are not shown in command lists displayed by
-the 'help' command.
+the command.  Abbreviations are not used in command completion.
 
    The '--' option specifies the end of options, and is useful when
 ALIAS begins with a dash.
 
+   You can specify DEFAULT-ARGS for your alias.  These DEFAULT-ARGS will
+be automatically added before the alias arguments typed explicitly on
+the command line.
+
+   For example, the below defines an alias 'btfullall' that shows all
+local variables and all frame arguments:
+     (gdb) alias btfullall = backtrace -full -frame-arguments all
+
+   For more information about DEFAULT-ARGS, see *note Automatically
+prepend default arguments to user-defined aliases: Command aliases
+default args.
+
    Here is a simple example showing how to make an abbreviation of a
 command so that there is less to type.  Suppose you were tired of typing
 'disas', the current shortest unambiguous abbreviation of the
@@ -3107,6 +3872,8 @@ layouts:
 
    * assembly and registers.
 
+   These are the standard layouts, but other layouts can be defined.
+
    A status line above the command window shows the following
 information:
 
@@ -3279,7 +4046,7 @@ additional bindings to this keymap.
 
 File: gdb.info,  Node: TUI Commands,  Next: TUI Configuration,  Prev: TUI Single Key Mode,  Up: TUI
 
-25.4 TUI-specific Commands
+25.4 TUI-Specific Commands
 ==========================
 
 The TUI has specific commands to control the text windows.  These
@@ -3304,11 +4071,59 @@ window management.
 'info win'
      List and give the size of all displayed windows.
 
+'tui new-layout NAME WINDOW WEIGHT [WINDOW WEIGHT...]'
+     Create a new TUI layout.  The new layout will be named NAME, and
+     can be accessed using the 'layout' command (see below).
+
+     Each WINDOW parameter is either the name of a window to display, or
+     a window description.  The windows will be displayed from top to
+     bottom in the order listed.
+
+     The names of the windows are the same as the ones given to the
+     'focus' command (see below); additional, the 'status' window can be
+     specified.  Note that, because it is of fixed height, the weight
+     assigned to the status window is of no importance.  It is
+     conventional to use '0' here.
+
+     A window description looks a bit like an invocation of 'tui
+     new-layout', and is of the form {['-horizontal']WINDOW WEIGHT
+     [WINDOW WEIGHT...]}.
+
+     This specifies a sub-layout.  If '-horizontal' is given, the
+     windows in this description will be arranged side-by-side, rather
+     than top-to-bottom.
+
+     Each WEIGHT is an integer.  It is the weight of this window
+     relative to all the other windows in the layout.  These numbers are
+     used to calculate how much of the screen is given to each window.
+
+     For example:
+
+          (gdb) tui new-layout example src 1 regs 1 status 0 cmd 1
+
+     Here, the new layout is called 'example'.  It shows the source and
+     register windows, followed by the status window, and then finally
+     the command window.  The non-status windows all have the same
+     weight, so the terminal will be split into three roughly equal
+     sections.
+
+     Here is a more complex example, showing a horizontal layout:
+
+          (gdb) tui new-layout example {-horizontal src 1 asm 1} 2 status 0 cmd 1
+
+     This will result in side-by-side source and assembly windows; with
+     the status and command window being beneath these, filling the
+     entire width of the terminal.  Because they have weight 2, the
+     source and assembly windows will be twice the height of the command
+     window.
+
 'layout NAME'
-     Changes which TUI windows are displayed.  In each layout the
-     command window is always displayed, the NAME parameter controls
-     which additional windows are displayed, and can be any of the
-     following:
+     Changes which TUI windows are displayed.  The NAME parameter
+     controls which layout is shown.  It can be either one of the
+     built-in layout names, or the name of a layout defined by the user
+     using 'tui new-layout'.
+
+     The built-in layouts are as follows:
 
      'next'
           Display the next layout.
@@ -3591,6 +4406,33 @@ File: gdb.info,  Node: GDB/MI,  Next: An
 27 The GDB/MI Interface
 ***********************
 
+* Menu:
+
+* GDB/MI General Design::
+* GDB/MI Command Syntax::
+* GDB/MI Compatibility with CLI::
+* GDB/MI Development and Front Ends::
+* GDB/MI Output Records::
+* GDB/MI Simple Examples::
+* GDB/MI Command Description Format::
+* GDB/MI Breakpoint Commands::
+* GDB/MI Catchpoint Commands::
+* GDB/MI Program Context::
+* GDB/MI Thread Commands::
+* GDB/MI Ada Tasking Commands::
+* GDB/MI Program Execution::
+* GDB/MI Stack Manipulation::
+* GDB/MI Variable Objects::
+* GDB/MI Data Manipulation::
+* GDB/MI Tracepoint Commands::
+* GDB/MI Symbol Query::
+* GDB/MI File Commands::
+* GDB/MI Target Manipulation::
+* GDB/MI File Transfer Commands::
+* GDB/MI Ada Exceptions Commands::
+* GDB/MI Support Commands::
+* GDB/MI Miscellaneous Commands::
+
 Function and Purpose
 ====================
 
@@ -3707,7 +4549,7 @@ the frontend refreshes all the informati
 
 File: gdb.info,  Node: Context management,  Next: Asynchronous and non-stop modes,  Up: GDB/MI General Design
 
-27.1.1 Context management
+27.1.1 Context Management
 -------------------------
 
 27.1.1.1 Threads and Frames
@@ -3781,7 +4623,7 @@ language' command (*note Manually::), ex
 
 File: gdb.info,  Node: Asynchronous and non-stop modes,  Next: Thread groups,  Prev: Context management,  Up: GDB/MI General Design
 
-27.1.2 Asynchronous command execution and non-stop mode
+27.1.2 Asynchronous Command Execution and Non-Stop Mode
 -------------------------------------------------------
 
 On some targets, GDB is capable of processing MI commands even while the
@@ -3840,7 +4682,7 @@ work.
 
 File: gdb.info,  Node: Thread groups,  Prev: Asynchronous and non-stop modes,  Up: GDB/MI General Design
 
-27.1.3 Thread groups
+27.1.3 Thread Groups
 --------------------
 
 GDB may be used to debug several processes at the same time.  On some
@@ -3875,10 +4717,10 @@ of available top-level thread groups can
 '-list-thread-groups --available'.  In general, the content of a thread
 group may be only retrieved only after attaching to that thread group.
 
-   Thread groups are related to inferiors (*note Inferiors and
-Programs::).  Each inferior corresponds to a thread group of a special
-type 'process', and some additional operations are permitted on such
-thread groups.
+   Thread groups are related to inferiors (*note Inferiors Connections
+and Programs::).  Each inferior corresponds to a thread group of a
+special type 'process', and some additional operations are permitted on
+such thread groups.
 
 
 File: gdb.info,  Node: GDB/MI Command Syntax,  Next: GDB/MI Compatibility with CLI,  Prev: GDB/MI General Design,  Up: GDB/MI
@@ -4126,10 +4968,9 @@ is recommended that front ends request a
 launching GDB (e.g.  '--interpreter=mi2') to make sure they get an
 interpreter with the MI version they expect.
 
-   The following table gives a summary of the the released versions of
-the MI interface: the version number, the version of GDB in which it
-first appeared and the breaking changes compared to the previous
-version.
+   The following table gives a summary of the released versions of the
+MI interface: the version number, the version of GDB in which it first
+appeared and the breaking changes compared to the previous version.
 
 MI   GDB  Breaking changes
 versionversion
@@ -4269,9 +5110,9 @@ activity (e.g., target stopped).
 
 '*running,thread-id="THREAD"'
      The target is now running.  The THREAD field can be the global
-     thread ID of the the thread that is now running, and it can be
-     'all' if all threads are running.  The frontend should assume that
-     no interaction with a running thread is possible after this
+     thread ID of the thread that is now running, and it can be 'all' if
+     all threads are running.  The frontend should assume that no
+     interaction with a running thread is possible after this
      notification is produced.  The frontend should not assume that this
      notification is output only once for any command.  GDB may emit
      this notification several times, either for different threads,
@@ -7192,7 +8033,7 @@ access this functionality:
    In the next subsection we describe each operation in detail and
 suggest how it can be used.
 
-Description And Use of Operations on Variable Objects
+Description and Use of Operations on Variable Objects
 -----------------------------------------------------
 
 The '-enable-pretty-printing' Command
@@ -7767,7 +8608,7 @@ Example
      -var-set-update-range V 1 2
      ^done
 
-The '-var-set-visualizer' command
+The '-var-set-visualizer' Command
 ---------------------------------
 
 Synopsis
@@ -7819,618 +8660,3 @@ be used to instantiate this class for a
      -var-set-visualizer V "lambda val: SomeClass()"
      ^done
 
-
-File: gdb.info,  Node: GDB/MI Data Manipulation,  Next: GDB/MI Tracepoint Commands,  Prev: GDB/MI Variable Objects,  Up: GDB/MI
-
-27.16 GDB/MI Data Manipulation
-==============================
-
-This section describes the GDB/MI commands that manipulate data: examine
-memory and registers, evaluate expressions, etc.
-
-   For details about what an addressable memory unit is, *note
-addressable memory unit::.
-
-The '-data-disassemble' Command
--------------------------------
-
-Synopsis
-........
-
-      -data-disassemble
-         [ -s START-ADDR -e END-ADDR ]
-       | [ -a ADDR ]
-       | [ -f FILENAME -l LINENUM [ -n LINES ] ]
-       -- MODE
-
-Where:
-
-'START-ADDR'
-     is the beginning address (or '$pc')
-'END-ADDR'
-     is the end address
-'ADDR'
-     is an address anywhere within (or the name of) the function to
-     disassemble.  If an address is specified, the whole function
-     surrounding that address will be disassembled.  If a name is
-     specified, the whole function with that name will be disassembled.
-'FILENAME'
-     is the name of the file to disassemble
-'LINENUM'
-     is the line number to disassemble around
-'LINES'
-     is the number of disassembly lines to be produced.  If it is -1,
-     the whole function will be disassembled, in case no END-ADDR is
-     specified.  If END-ADDR is specified as a non-zero value, and LINES
-     is lower than the number of disassembly lines between START-ADDR
-     and END-ADDR, only LINES lines are displayed; if LINES is higher
-     than the number of lines between START-ADDR and END-ADDR, only the
-     lines up to END-ADDR are displayed.
-'MODE'
-     is one of:
-        * 0 disassembly only
-        * 1 mixed source and disassembly (deprecated)
-        * 2 disassembly with raw opcodes
-        * 3 mixed source and disassembly with raw opcodes (deprecated)
-        * 4 mixed source and disassembly
-        * 5 mixed source and disassembly with raw opcodes
-
-     Modes 1 and 3 are deprecated.  The output is "source centric" which
-     hasn't proved useful in practice.  *Note Machine Code::, for a
-     discussion of the difference between '/m' and '/s' output of the
-     'disassemble' command.
-
-Result
-......
-
-The result of the '-data-disassemble' command will be a list named
-'asm_insns', the contents of this list depend on the MODE used with the
-'-data-disassemble' command.
-
-   For modes 0 and 2 the 'asm_insns' list contains tuples with the
-following fields:
-
-'address'
-     The address at which this instruction was disassembled.
-
-'func-name'
-     The name of the function this instruction is within.
-
-'offset'
-     The decimal offset in bytes from the start of 'func-name'.
-
-'inst'
-     The text disassembly for this 'address'.
-
-'opcodes'
-     This field is only present for modes 2, 3 and 5.  This contains the
-     raw opcode bytes for the 'inst' field.
-
-   For modes 1, 3, 4 and 5 the 'asm_insns' list contains tuples named
-'src_and_asm_line', each of which has the following fields:
-
-'line'
-     The line number within 'file'.
-
-'file'
-     The file name from the compilation unit.  This might be an absolute
-     file name or a relative file name depending on the compile command
-     used.
-
-'fullname'
-     Absolute file name of 'file'.  It is converted to a canonical form
-     using the source file search path (*note Specifying Source
-     Directories: Source Path.) and after resolving all the symbolic
-     links.
-
-     If the source file is not found this field will contain the path as
-     present in the debug information.
-
-'line_asm_insn'
-     This is a list of tuples containing the disassembly for 'line' in
-     'file'.  The fields of each tuple are the same as for
-     '-data-disassemble' in MODE 0 and 2, so 'address', 'func-name',
-     'offset', 'inst', and optionally 'opcodes'.
-
-   Note that whatever included in the 'inst' field, is not manipulated
-directly by GDB/MI, i.e., it is not possible to adjust its format.
-
-GDB Command
-...........
-
-The corresponding GDB command is 'disassemble'.
-
-Example
-.......
-
-Disassemble from the current value of '$pc' to '$pc + 20':
-
-     (gdb)
-     -data-disassemble -s $pc -e "$pc + 20" -- 0
-     ^done,
-     asm_insns=[
-     {address="0x000107c0",func-name="main",offset="4",
-     inst="mov  2, %o0"},
-     {address="0x000107c4",func-name="main",offset="8",
-     inst="sethi  %hi(0x11800), %o2"},
-     {address="0x000107c8",func-name="main",offset="12",
-     inst="or  %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"},
-     {address="0x000107cc",func-name="main",offset="16",
-     inst="sethi  %hi(0x11800), %o2"},
-     {address="0x000107d0",func-name="main",offset="20",
-     inst="or  %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"}]
-     (gdb)
-
-   Disassemble the whole 'main' function.  Line 32 is part of 'main'.
-
-     -data-disassemble -f basics.c -l 32 -- 0
-     ^done,asm_insns=[
-     {address="0x000107bc",func-name="main",offset="0",
-     inst="save  %sp, -112, %sp"},
-     {address="0x000107c0",func-name="main",offset="4",
-     inst="mov   2, %o0"},
-     {address="0x000107c4",func-name="main",offset="8",
-     inst="sethi %hi(0x11800), %o2"},
-     [...]
-     {address="0x0001081c",func-name="main",offset="96",inst="ret "},
-     {address="0x00010820",func-name="main",offset="100",inst="restore "}]
-     (gdb)
-
-   Disassemble 3 instructions from the start of 'main':
-
-     (gdb)
-     -data-disassemble -f basics.c -l 32 -n 3 -- 0
-     ^done,asm_insns=[
-     {address="0x000107bc",func-name="main",offset="0",
-     inst="save  %sp, -112, %sp"},
-     {address="0x000107c0",func-name="main",offset="4",
-     inst="mov  2, %o0"},
-     {address="0x000107c4",func-name="main",offset="8",
-     inst="sethi  %hi(0x11800), %o2"}]
-     (gdb)
-
-   Disassemble 3 instructions from the start of 'main' in mixed mode:
-
-     (gdb)
-     -data-disassemble -f basics.c -l 32 -n 3 -- 1
-     ^done,asm_insns=[
-     src_and_asm_line={line="31",
-     file="../../../src/gdb/testsuite/gdb.mi/basics.c",
-     fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c",
-     line_asm_insn=[{address="0x000107bc",
-     func-name="main",offset="0",inst="save  %sp, -112, %sp"}]},
-     src_and_asm_line={line="32",
-     file="../../../src/gdb/testsuite/gdb.mi/basics.c",
-     fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c",
-     line_asm_insn=[{address="0x000107c0",
-     func-name="main",offset="4",inst="mov  2, %o0"},
-     {address="0x000107c4",func-name="main",offset="8",
-     inst="sethi  %hi(0x11800), %o2"}]}]
-     (gdb)
-
-The '-data-evaluate-expression' Command
----------------------------------------
-
-Synopsis
-........
-
-      -data-evaluate-expression EXPR
-
-   Evaluate EXPR as an expression.  The expression could contain an
-inferior function call.  The function call will execute synchronously.
-If the expression contains spaces, it must be enclosed in double quotes.
-
-GDB Command
-...........
-
-The corresponding GDB commands are 'print', 'output', and 'call'.  In
-'gdbtk' only, there's a corresponding 'gdb_eval' command.
-
-Example
-.......
-
-In the following example, the numbers that precede the commands are the
-"tokens" described in *note GDB/MI Command Syntax: GDB/MI Command
-Syntax.  Notice how GDB/MI returns the same tokens in its output.
-
-     211-data-evaluate-expression A
-     211^done,value="1"
-     (gdb)
-     311-data-evaluate-expression &A
-     311^done,value="0xefffeb7c"
-     (gdb)
-     411-data-evaluate-expression A+3
-     411^done,value="4"
-     (gdb)
-     511-data-evaluate-expression "A + 3"
-     511^done,value="4"
-     (gdb)
-
-The '-data-list-changed-registers' Command
-------------------------------------------
-
-Synopsis
-........
-
-      -data-list-changed-registers
-
-   Display a list of the registers that have changed.
-
-GDB Command
-...........
-
-GDB doesn't have a direct analog for this command; 'gdbtk' has the
-corresponding command 'gdb_changed_register_list'.
-
-Example
-.......
-
-On a PPC MBX board:
-
-     (gdb)
-     -exec-continue
-     ^running
-
-     (gdb)
-     *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame={
-     func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c",
-     line="5",arch="powerpc"}
-     (gdb)
-     -data-list-changed-registers
-     ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
-     "10","11","13","14","15","16","17","18","19","20","21","22","23",
-     "24","25","26","27","28","30","31","64","65","66","67","69"]
-     (gdb)
-
-The '-data-list-register-names' Command
----------------------------------------
-
-Synopsis
-........
-
-      -data-list-register-names [ ( REGNO )+ ]
-
-   Show a list of register names for the current target.  If no
-arguments are given, it shows a list of the names of all the registers.
-If integer numbers are given as arguments, it will print a list of the
-names of the registers corresponding to the arguments.  To ensure
-consistency between a register name and its number, the output list may
-include empty register names.
-
-GDB Command
-...........
-
-GDB does not have a command which corresponds to
-'-data-list-register-names'.  In 'gdbtk' there is a corresponding
-command 'gdb_regnames'.
-
-Example
-.......
-
-For the PPC MBX board:
-     (gdb)
-     -data-list-register-names
-     ^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
-     "r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
-     "r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
-     "r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
-     "f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
-     "f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
-     "", "pc","ps","cr","lr","ctr","xer"]
-     (gdb)
-     -data-list-register-names 1 2 3
-     ^done,register-names=["r1","r2","r3"]
-     (gdb)
-
-The '-data-list-register-values' Command
-----------------------------------------
-
-Synopsis
-........
-
-      -data-list-register-values
-         [ --skip-unavailable ] FMT [ ( REGNO )*]
-
-   Display the registers' contents.  The format according to which the
-registers' contents are to be returned is given by FMT, followed by an
-optional list of numbers specifying the registers to display.  A missing
-list of numbers indicates that the contents of all the registers must be
-returned.  The '--skip-unavailable' option indicates that only the
-available registers are to be returned.
-
-   Allowed formats for FMT are:
-
-'x'
-     Hexadecimal
-'o'
-     Octal
-'t'
-     Binary
-'d'
-     Decimal
-'r'
-     Raw
-'N'
-     Natural
-
-GDB Command
-...........
-
-The corresponding GDB commands are 'info reg', 'info all-reg', and (in
-'gdbtk') 'gdb_fetch_registers'.
-
-Example
-.......
-
-For a PPC MBX board (note: line breaks are for readability only, they
-don't appear in the actual output):
-
-     (gdb)
-     -data-list-register-values r 64 65
-     ^done,register-values=[{number="64",value="0xfe00a300"},
-     {number="65",value="0x00029002"}]
-     (gdb)
-     -data-list-register-values x
-     ^done,register-values=[{number="0",value="0xfe0043c8"},
-     {number="1",value="0x3fff88"},{number="2",value="0xfffffffe"},
-     {number="3",value="0x0"},{number="4",value="0xa"},
-     {number="5",value="0x3fff68"},{number="6",value="0x3fff58"},
-     {number="7",value="0xfe011e98"},{number="8",value="0x2"},
-     {number="9",value="0xfa202820"},{number="10",value="0xfa202808"},
-     {number="11",value="0x1"},{number="12",value="0x0"},
-     {number="13",value="0x4544"},{number="14",value="0xffdfffff"},
-     {number="15",value="0xffffffff"},{number="16",value="0xfffffeff"},
-     {number="17",value="0xefffffed"},{number="18",value="0xfffffffe"},
-     {number="19",value="0xffffffff"},{number="20",value="0xffffffff"},
-     {number="21",value="0xffffffff"},{number="22",value="0xfffffff7"},
-     {number="23",value="0xffffffff"},{number="24",value="0xffffffff"},
-     {number="25",value="0xffffffff"},{number="26",value="0xfffffffb"},
-     {number="27",value="0xffffffff"},{number="28",value="0xf7bfffff"},
-     {number="29",value="0x0"},{number="30",value="0xfe010000"},
-     {number="31",value="0x0"},{number="32",value="0x0"},
-     {number="33",value="0x0"},{number="34",value="0x0"},
-     {number="35",value="0x0"},{number="36",value="0x0"},
-     {number="37",value="0x0"},{number="38",value="0x0"},
-     {number="39",value="0x0"},{number="40",value="0x0"},
-     {number="41",value="0x0"},{number="42",value="0x0"},
-     {number="43",value="0x0"},{number="44",value="0x0"},
-     {number="45",value="0x0"},{number="46",value="0x0"},
-     {number="47",value="0x0"},{number="48",value="0x0"},
-     {number="49",value="0x0"},{number="50",value="0x0"},
-     {number="51",value="0x0"},{number="52",value="0x0"},
-     {number="53",value="0x0"},{number="54",value="0x0"},
-     {number="55",value="0x0"},{number="56",value="0x0"},
-     {number="57",value="0x0"},{number="58",value="0x0"},
-     {number="59",value="0x0"},{number="60",value="0x0"},
-     {number="61",value="0x0"},{number="62",value="0x0"},
-     {number="63",value="0x0"},{number="64",value="0xfe00a300"},
-     {number="65",value="0x29002"},{number="66",value="0x202f04b5"},
-     {number="67",value="0xfe0043b0"},{number="68",value="0xfe00b3e4"},
-     {number="69",value="0x20002b03"}]
-     (gdb)
-
-The '-data-read-memory' Command
--------------------------------
-
-This command is deprecated, use '-data-read-memory-bytes' instead.
-
-Synopsis
-........
-
-      -data-read-memory [ -o BYTE-OFFSET ]
-        ADDRESS WORD-FORMAT WORD-SIZE
-        NR-ROWS NR-COLS [ ASCHAR ]
-
-where:
-
-'ADDRESS'
-     An expression specifying the address of the first memory word to be
-     read.  Complex expressions containing embedded white space should
-     be quoted using the C convention.
-
-'WORD-FORMAT'
-     The format to be used to print the memory words.  The notation is
-     the same as for GDB's 'print' command (*note Output Formats: Output
-     Formats.).
-
-'WORD-SIZE'
-     The size of each memory word in bytes.
-
-'NR-ROWS'
-     The number of rows in the output table.
-
-'NR-COLS'
-     The number of columns in the output table.
-
-'ASCHAR'
-     If present, indicates that each row should include an ASCII dump.
-     The value of ASCHAR is used as a padding character when a byte is
-     not a member of the printable ASCII character set (printable ASCII
-     characters are those whose code is between 32 and 126,
-     inclusively).
-
-'BYTE-OFFSET'
-     An offset to add to the ADDRESS before fetching memory.
-
-   This command displays memory contents as a table of NR-ROWS by
-NR-COLS words, each word being WORD-SIZE bytes.  In total, 'NR-ROWS *
-NR-COLS * WORD-SIZE' bytes are read (returned as 'total-bytes').  Should
-less than the requested number of bytes be returned by the target, the
-missing words are identified using 'N/A'.  The number of bytes read from
-the target is returned in 'nr-bytes' and the starting address used to
-read memory in 'addr'.
-
-   The address of the next/previous row or page is available in
-'next-row' and 'prev-row', 'next-page' and 'prev-page'.
-
-GDB Command
-...........
-
-The corresponding GDB command is 'x'.  'gdbtk' has 'gdb_get_mem' memory
-read command.
-
-Example
-.......
-
-Read six bytes of memory starting at 'bytes+6' but then offset by '-6'
-bytes.  Format as three rows of two columns.  One byte per word.
-Display each word in hex.
-
-     (gdb)
-     9-data-read-memory -o -6 -- bytes+6 x 1 3 2
-     9^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
-     next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
-     prev-page="0x0000138a",memory=[
-     {addr="0x00001390",data=["0x00","0x01"]},
-     {addr="0x00001392",data=["0x02","0x03"]},
-     {addr="0x00001394",data=["0x04","0x05"]}]
-     (gdb)
-
-   Read two bytes of memory starting at address 'shorts + 64' and
-display as a single word formatted in decimal.
-
-     (gdb)
-     5-data-read-memory shorts+64 d 2 1 1
-     5^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
-     next-row="0x00001512",prev-row="0x0000150e",
-     next-page="0x00001512",prev-page="0x0000150e",memory=[
-     {addr="0x00001510",data=["128"]}]
-     (gdb)
-
-   Read thirty two bytes of memory starting at 'bytes+16' and format as
-eight rows of four columns.  Include a string encoding with 'x' used as
-the non-printable character.
-
-     (gdb)
-     4-data-read-memory bytes+16 x 1 8 4 x
-     4^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
-     next-row="0x000013c0",prev-row="0x0000139c",
-     next-page="0x000013c0",prev-page="0x00001380",memory=[
-     {addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"},
-     {addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"},
-     {addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"},
-     {addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"},
-     {addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"},
-     {addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"},
-     {addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"},
-     {addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"}]
-     (gdb)
-
-The '-data-read-memory-bytes' Command
--------------------------------------
-
-Synopsis
-........
-
-      -data-read-memory-bytes [ -o OFFSET ]
-        ADDRESS COUNT
-
-where:
-
-'ADDRESS'
-     An expression specifying the address of the first addressable
-     memory unit to be read.  Complex expressions containing embedded
-     white space should be quoted using the C convention.
-
-'COUNT'
-     The number of addressable memory units to read.  This should be an
-     integer literal.
-
-'OFFSET'
-     The offset relative to ADDRESS at which to start reading.  This
-     should be an integer literal.  This option is provided so that a
-     frontend is not required to first evaluate address and then perform
-     address arithmetics itself.
-
-   This command attempts to read all accessible memory regions in the
-specified range.  First, all regions marked as unreadable in the memory
-map (if one is defined) will be skipped.  *Note Memory Region
-Attributes::.  Second, GDB will attempt to read the remaining regions.
-For each one, if reading full region results in an errors, GDB will try
-to read a subset of the region.
-
-   In general, every single memory unit in the region may be readable or
-not, and the only way to read every readable unit is to try a read at
-every address, which is not practical.  Therefore, GDB will attempt to
-read all accessible memory units at either beginning or the end of the
-region, using a binary division scheme.  This heuristic works well for
-reading across a memory map boundary.  Note that if a region has a
-readable range that is neither at the beginning or the end, GDB will not
-read it.
-
-   The result record (*note GDB/MI Result Records::) that is output of
-the command includes a field named 'memory' whose content is a list of
-tuples.  Each tuple represent a successfully read memory block and has
-the following fields:
-
-'begin'
-     The start address of the memory block, as hexadecimal literal.
-
-'end'
-     The end address of the memory block, as hexadecimal literal.
-
-'offset'
-     The offset of the memory block, as hexadecimal literal, relative to
-     the start address passed to '-data-read-memory-bytes'.
-
-'contents'
-     The contents of the memory block, in hex.
-
-GDB Command
-...........
-
-The corresponding GDB command is 'x'.
-
-Example
-.......
-
-     (gdb)
-     -data-read-memory-bytes &a 10
-     ^done,memory=[{begin="0xbffff154",offset="0x00000000",
-                   end="0xbffff15e",
-                   contents="01000000020000000300"}]
-     (gdb)
-
-The '-data-write-memory-bytes' Command
---------------------------------------
-
-Synopsis
-........
-
-      -data-write-memory-bytes ADDRESS CONTENTS
-      -data-write-memory-bytes ADDRESS CONTENTS [COUNT]
-
-where:
-
-'ADDRESS'
-     An expression specifying the address of the first addressable
-     memory unit to be written.  Complex expressions containing embedded
-     white space should be quoted using the C convention.
-
-'CONTENTS'
-     The hex-encoded data to write.  It is an error if CONTENTS does not
-     represent an integral number of addressable memory units.
-
-'COUNT'
-     Optional argument indicating the number of addressable memory units
-     to be written.  If COUNT is greater than CONTENTS' length, GDB will
-     repeatedly write CONTENTS until it fills COUNT memory units.
-
-GDB Command
-...........
-
-There's no corresponding GDB command.
-
-Example
-.......
-
-     (gdb)
-     -data-write-memory-bytes &a "aabbccdd"
-     ^done
-     (gdb)
-
-     (gdb)
-     -data-write-memory-bytes &a "aabbccdd" 16e
-     ^done
-     (gdb)
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-6 ./gdb/doc/gdb.info-6
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-6	2020-03-07 02:11:36.000000000 +0000
+++ ./gdb/doc/gdb.info-6	2021-05-21 02:00:18.000000000 +0000
@@ -1,6 +1,6 @@
-This is gdb.info, produced by makeinfo version 6.3 from gdb.texinfo.
+This is gdb.info, produced by makeinfo version 6.5 from gdb.texinfo.
 
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -21,9 +21,9 @@ 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.1.90.20200307-git.
+Source-Level Debugger' for GDB (GDB) Version 10.2.90.20210521-git.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -37,6 +37,621 @@ this GNU Manual.  Buying copies from GNU
 developing GNU and promoting software freedom."
 
 
+File: gdb.info,  Node: GDB/MI Data Manipulation,  Next: GDB/MI Tracepoint Commands,  Prev: GDB/MI Variable Objects,  Up: GDB/MI
+
+27.16 GDB/MI Data Manipulation
+==============================
+
+This section describes the GDB/MI commands that manipulate data: examine
+memory and registers, evaluate expressions, etc.
+
+   For details about what an addressable memory unit is, *note
+addressable memory unit::.
+
+The '-data-disassemble' Command
+-------------------------------
+
+Synopsis
+........
+
+      -data-disassemble
+         [ -s START-ADDR -e END-ADDR ]
+       | [ -a ADDR ]
+       | [ -f FILENAME -l LINENUM [ -n LINES ] ]
+       -- MODE
+
+Where:
+
+'START-ADDR'
+     is the beginning address (or '$pc')
+'END-ADDR'
+     is the end address
+'ADDR'
+     is an address anywhere within (or the name of) the function to
+     disassemble.  If an address is specified, the whole function
+     surrounding that address will be disassembled.  If a name is
+     specified, the whole function with that name will be disassembled.
+'FILENAME'
+     is the name of the file to disassemble
+'LINENUM'
+     is the line number to disassemble around
+'LINES'
+     is the number of disassembly lines to be produced.  If it is -1,
+     the whole function will be disassembled, in case no END-ADDR is
+     specified.  If END-ADDR is specified as a non-zero value, and LINES
+     is lower than the number of disassembly lines between START-ADDR
+     and END-ADDR, only LINES lines are displayed; if LINES is higher
+     than the number of lines between START-ADDR and END-ADDR, only the
+     lines up to END-ADDR are displayed.
+'MODE'
+     is one of:
+        * 0 disassembly only
+        * 1 mixed source and disassembly (deprecated)
+        * 2 disassembly with raw opcodes
+        * 3 mixed source and disassembly with raw opcodes (deprecated)
+        * 4 mixed source and disassembly
+        * 5 mixed source and disassembly with raw opcodes
+
+     Modes 1 and 3 are deprecated.  The output is "source centric" which
+     hasn't proved useful in practice.  *Note Machine Code::, for a
+     discussion of the difference between '/m' and '/s' output of the
+     'disassemble' command.
+
+Result
+......
+
+The result of the '-data-disassemble' command will be a list named
+'asm_insns', the contents of this list depend on the MODE used with the
+'-data-disassemble' command.
+
+   For modes 0 and 2 the 'asm_insns' list contains tuples with the
+following fields:
+
+'address'
+     The address at which this instruction was disassembled.
+
+'func-name'
+     The name of the function this instruction is within.
+
+'offset'
+     The decimal offset in bytes from the start of 'func-name'.
+
+'inst'
+     The text disassembly for this 'address'.
+
+'opcodes'
+     This field is only present for modes 2, 3 and 5.  This contains the
+     raw opcode bytes for the 'inst' field.
+
+   For modes 1, 3, 4 and 5 the 'asm_insns' list contains tuples named
+'src_and_asm_line', each of which has the following fields:
+
+'line'
+     The line number within 'file'.
+
+'file'
+     The file name from the compilation unit.  This might be an absolute
+     file name or a relative file name depending on the compile command
+     used.
+
+'fullname'
+     Absolute file name of 'file'.  It is converted to a canonical form
+     using the source file search path (*note Specifying Source
+     Directories: Source Path.) and after resolving all the symbolic
+     links.
+
+     If the source file is not found this field will contain the path as
+     present in the debug information.
+
+'line_asm_insn'
+     This is a list of tuples containing the disassembly for 'line' in
+     'file'.  The fields of each tuple are the same as for
+     '-data-disassemble' in MODE 0 and 2, so 'address', 'func-name',
+     'offset', 'inst', and optionally 'opcodes'.
+
+   Note that whatever included in the 'inst' field, is not manipulated
+directly by GDB/MI, i.e., it is not possible to adjust its format.
+
+GDB Command
+...........
+
+The corresponding GDB command is 'disassemble'.
+
+Example
+.......
+
+Disassemble from the current value of '$pc' to '$pc + 20':
+
+     (gdb)
+     -data-disassemble -s $pc -e "$pc + 20" -- 0
+     ^done,
+     asm_insns=[
+     {address="0x000107c0",func-name="main",offset="4",
+     inst="mov  2, %o0"},
+     {address="0x000107c4",func-name="main",offset="8",
+     inst="sethi  %hi(0x11800), %o2"},
+     {address="0x000107c8",func-name="main",offset="12",
+     inst="or  %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"},
+     {address="0x000107cc",func-name="main",offset="16",
+     inst="sethi  %hi(0x11800), %o2"},
+     {address="0x000107d0",func-name="main",offset="20",
+     inst="or  %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"}]
+     (gdb)
+
+   Disassemble the whole 'main' function.  Line 32 is part of 'main'.
+
+     -data-disassemble -f basics.c -l 32 -- 0
+     ^done,asm_insns=[
+     {address="0x000107bc",func-name="main",offset="0",
+     inst="save  %sp, -112, %sp"},
+     {address="0x000107c0",func-name="main",offset="4",
+     inst="mov   2, %o0"},
+     {address="0x000107c4",func-name="main",offset="8",
+     inst="sethi %hi(0x11800), %o2"},
+     [...]
+     {address="0x0001081c",func-name="main",offset="96",inst="ret "},
+     {address="0x00010820",func-name="main",offset="100",inst="restore "}]
+     (gdb)
+
+   Disassemble 3 instructions from the start of 'main':
+
+     (gdb)
+     -data-disassemble -f basics.c -l 32 -n 3 -- 0
+     ^done,asm_insns=[
+     {address="0x000107bc",func-name="main",offset="0",
+     inst="save  %sp, -112, %sp"},
+     {address="0x000107c0",func-name="main",offset="4",
+     inst="mov  2, %o0"},
+     {address="0x000107c4",func-name="main",offset="8",
+     inst="sethi  %hi(0x11800), %o2"}]
+     (gdb)
+
+   Disassemble 3 instructions from the start of 'main' in mixed mode:
+
+     (gdb)
+     -data-disassemble -f basics.c -l 32 -n 3 -- 1
+     ^done,asm_insns=[
+     src_and_asm_line={line="31",
+     file="../../../src/gdb/testsuite/gdb.mi/basics.c",
+     fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c",
+     line_asm_insn=[{address="0x000107bc",
+     func-name="main",offset="0",inst="save  %sp, -112, %sp"}]},
+     src_and_asm_line={line="32",
+     file="../../../src/gdb/testsuite/gdb.mi/basics.c",
+     fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c",
+     line_asm_insn=[{address="0x000107c0",
+     func-name="main",offset="4",inst="mov  2, %o0"},
+     {address="0x000107c4",func-name="main",offset="8",
+     inst="sethi  %hi(0x11800), %o2"}]}]
+     (gdb)
+
+The '-data-evaluate-expression' Command
+---------------------------------------
+
+Synopsis
+........
+
+      -data-evaluate-expression EXPR
+
+   Evaluate EXPR as an expression.  The expression could contain an
+inferior function call.  The function call will execute synchronously.
+If the expression contains spaces, it must be enclosed in double quotes.
+
+GDB Command
+...........
+
+The corresponding GDB commands are 'print', 'output', and 'call'.  In
+'gdbtk' only, there's a corresponding 'gdb_eval' command.
+
+Example
+.......
+
+In the following example, the numbers that precede the commands are the
+"tokens" described in *note GDB/MI Command Syntax: GDB/MI Command
+Syntax.  Notice how GDB/MI returns the same tokens in its output.
+
+     211-data-evaluate-expression A
+     211^done,value="1"
+     (gdb)
+     311-data-evaluate-expression &A
+     311^done,value="0xefffeb7c"
+     (gdb)
+     411-data-evaluate-expression A+3
+     411^done,value="4"
+     (gdb)
+     511-data-evaluate-expression "A + 3"
+     511^done,value="4"
+     (gdb)
+
+The '-data-list-changed-registers' Command
+------------------------------------------
+
+Synopsis
+........
+
+      -data-list-changed-registers
+
+   Display a list of the registers that have changed.
+
+GDB Command
+...........
+
+GDB doesn't have a direct analog for this command; 'gdbtk' has the
+corresponding command 'gdb_changed_register_list'.
+
+Example
+.......
+
+On a PPC MBX board:
+
+     (gdb)
+     -exec-continue
+     ^running
+
+     (gdb)
+     *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame={
+     func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c",
+     line="5",arch="powerpc"}
+     (gdb)
+     -data-list-changed-registers
+     ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
+     "10","11","13","14","15","16","17","18","19","20","21","22","23",
+     "24","25","26","27","28","30","31","64","65","66","67","69"]
+     (gdb)
+
+The '-data-list-register-names' Command
+---------------------------------------
+
+Synopsis
+........
+
+      -data-list-register-names [ ( REGNO )+ ]
+
+   Show a list of register names for the current target.  If no
+arguments are given, it shows a list of the names of all the registers.
+If integer numbers are given as arguments, it will print a list of the
+names of the registers corresponding to the arguments.  To ensure
+consistency between a register name and its number, the output list may
+include empty register names.
+
+GDB Command
+...........
+
+GDB does not have a command which corresponds to
+'-data-list-register-names'.  In 'gdbtk' there is a corresponding
+command 'gdb_regnames'.
+
+Example
+.......
+
+For the PPC MBX board:
+     (gdb)
+     -data-list-register-names
+     ^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
+     "r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
+     "r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
+     "r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
+     "f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
+     "f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
+     "", "pc","ps","cr","lr","ctr","xer"]
+     (gdb)
+     -data-list-register-names 1 2 3
+     ^done,register-names=["r1","r2","r3"]
+     (gdb)
+
+The '-data-list-register-values' Command
+----------------------------------------
+
+Synopsis
+........
+
+      -data-list-register-values
+         [ --skip-unavailable ] FMT [ ( REGNO )*]
+
+   Display the registers' contents.  The format according to which the
+registers' contents are to be returned is given by FMT, followed by an
+optional list of numbers specifying the registers to display.  A missing
+list of numbers indicates that the contents of all the registers must be
+returned.  The '--skip-unavailable' option indicates that only the
+available registers are to be returned.
+
+   Allowed formats for FMT are:
+
+'x'
+     Hexadecimal
+'o'
+     Octal
+'t'
+     Binary
+'d'
+     Decimal
+'r'
+     Raw
+'N'
+     Natural
+
+GDB Command
+...........
+
+The corresponding GDB commands are 'info reg', 'info all-reg', and (in
+'gdbtk') 'gdb_fetch_registers'.
+
+Example
+.......
+
+For a PPC MBX board (note: line breaks are for readability only, they
+don't appear in the actual output):
+
+     (gdb)
+     -data-list-register-values r 64 65
+     ^done,register-values=[{number="64",value="0xfe00a300"},
+     {number="65",value="0x00029002"}]
+     (gdb)
+     -data-list-register-values x
+     ^done,register-values=[{number="0",value="0xfe0043c8"},
+     {number="1",value="0x3fff88"},{number="2",value="0xfffffffe"},
+     {number="3",value="0x0"},{number="4",value="0xa"},
+     {number="5",value="0x3fff68"},{number="6",value="0x3fff58"},
+     {number="7",value="0xfe011e98"},{number="8",value="0x2"},
+     {number="9",value="0xfa202820"},{number="10",value="0xfa202808"},
+     {number="11",value="0x1"},{number="12",value="0x0"},
+     {number="13",value="0x4544"},{number="14",value="0xffdfffff"},
+     {number="15",value="0xffffffff"},{number="16",value="0xfffffeff"},
+     {number="17",value="0xefffffed"},{number="18",value="0xfffffffe"},
+     {number="19",value="0xffffffff"},{number="20",value="0xffffffff"},
+     {number="21",value="0xffffffff"},{number="22",value="0xfffffff7"},
+     {number="23",value="0xffffffff"},{number="24",value="0xffffffff"},
+     {number="25",value="0xffffffff"},{number="26",value="0xfffffffb"},
+     {number="27",value="0xffffffff"},{number="28",value="0xf7bfffff"},
+     {number="29",value="0x0"},{number="30",value="0xfe010000"},
+     {number="31",value="0x0"},{number="32",value="0x0"},
+     {number="33",value="0x0"},{number="34",value="0x0"},
+     {number="35",value="0x0"},{number="36",value="0x0"},
+     {number="37",value="0x0"},{number="38",value="0x0"},
+     {number="39",value="0x0"},{number="40",value="0x0"},
+     {number="41",value="0x0"},{number="42",value="0x0"},
+     {number="43",value="0x0"},{number="44",value="0x0"},
+     {number="45",value="0x0"},{number="46",value="0x0"},
+     {number="47",value="0x0"},{number="48",value="0x0"},
+     {number="49",value="0x0"},{number="50",value="0x0"},
+     {number="51",value="0x0"},{number="52",value="0x0"},
+     {number="53",value="0x0"},{number="54",value="0x0"},
+     {number="55",value="0x0"},{number="56",value="0x0"},
+     {number="57",value="0x0"},{number="58",value="0x0"},
+     {number="59",value="0x0"},{number="60",value="0x0"},
+     {number="61",value="0x0"},{number="62",value="0x0"},
+     {number="63",value="0x0"},{number="64",value="0xfe00a300"},
+     {number="65",value="0x29002"},{number="66",value="0x202f04b5"},
+     {number="67",value="0xfe0043b0"},{number="68",value="0xfe00b3e4"},
+     {number="69",value="0x20002b03"}]
+     (gdb)
+
+The '-data-read-memory' Command
+-------------------------------
+
+This command is deprecated, use '-data-read-memory-bytes' instead.
+
+Synopsis
+........
+
+      -data-read-memory [ -o BYTE-OFFSET ]
+        ADDRESS WORD-FORMAT WORD-SIZE
+        NR-ROWS NR-COLS [ ASCHAR ]
+
+where:
+
+'ADDRESS'
+     An expression specifying the address of the first memory word to be
+     read.  Complex expressions containing embedded white space should
+     be quoted using the C convention.
+
+'WORD-FORMAT'
+     The format to be used to print the memory words.  The notation is
+     the same as for GDB's 'print' command (*note Output Formats: Output
+     Formats.).
+
+'WORD-SIZE'
+     The size of each memory word in bytes.
+
+'NR-ROWS'
+     The number of rows in the output table.
+
+'NR-COLS'
+     The number of columns in the output table.
+
+'ASCHAR'
+     If present, indicates that each row should include an ASCII dump.
+     The value of ASCHAR is used as a padding character when a byte is
+     not a member of the printable ASCII character set (printable ASCII
+     characters are those whose code is between 32 and 126,
+     inclusively).
+
+'BYTE-OFFSET'
+     An offset to add to the ADDRESS before fetching memory.
+
+   This command displays memory contents as a table of NR-ROWS by
+NR-COLS words, each word being WORD-SIZE bytes.  In total, 'NR-ROWS *
+NR-COLS * WORD-SIZE' bytes are read (returned as 'total-bytes').  Should
+less than the requested number of bytes be returned by the target, the
+missing words are identified using 'N/A'.  The number of bytes read from
+the target is returned in 'nr-bytes' and the starting address used to
+read memory in 'addr'.
+
+   The address of the next/previous row or page is available in
+'next-row' and 'prev-row', 'next-page' and 'prev-page'.
+
+GDB Command
+...........
+
+The corresponding GDB command is 'x'.  'gdbtk' has 'gdb_get_mem' memory
+read command.
+
+Example
+.......
+
+Read six bytes of memory starting at 'bytes+6' but then offset by '-6'
+bytes.  Format as three rows of two columns.  One byte per word.
+Display each word in hex.
+
+     (gdb)
+     9-data-read-memory -o -6 -- bytes+6 x 1 3 2
+     9^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
+     next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
+     prev-page="0x0000138a",memory=[
+     {addr="0x00001390",data=["0x00","0x01"]},
+     {addr="0x00001392",data=["0x02","0x03"]},
+     {addr="0x00001394",data=["0x04","0x05"]}]
+     (gdb)
+
+   Read two bytes of memory starting at address 'shorts + 64' and
+display as a single word formatted in decimal.
+
+     (gdb)
+     5-data-read-memory shorts+64 d 2 1 1
+     5^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
+     next-row="0x00001512",prev-row="0x0000150e",
+     next-page="0x00001512",prev-page="0x0000150e",memory=[
+     {addr="0x00001510",data=["128"]}]
+     (gdb)
+
+   Read thirty two bytes of memory starting at 'bytes+16' and format as
+eight rows of four columns.  Include a string encoding with 'x' used as
+the non-printable character.
+
+     (gdb)
+     4-data-read-memory bytes+16 x 1 8 4 x
+     4^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
+     next-row="0x000013c0",prev-row="0x0000139c",
+     next-page="0x000013c0",prev-page="0x00001380",memory=[
+     {addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"},
+     {addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"},
+     {addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"},
+     {addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"},
+     {addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"},
+     {addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"},
+     {addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"},
+     {addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"}]
+     (gdb)
+
+The '-data-read-memory-bytes' Command
+-------------------------------------
+
+Synopsis
+........
+
+      -data-read-memory-bytes [ -o OFFSET ]
+        ADDRESS COUNT
+
+where:
+
+'ADDRESS'
+     An expression specifying the address of the first addressable
+     memory unit to be read.  Complex expressions containing embedded
+     white space should be quoted using the C convention.
+
+'COUNT'
+     The number of addressable memory units to read.  This should be an
+     integer literal.
+
+'OFFSET'
+     The offset relative to ADDRESS at which to start reading.  This
+     should be an integer literal.  This option is provided so that a
+     frontend is not required to first evaluate address and then perform
+     address arithmetics itself.
+
+   This command attempts to read all accessible memory regions in the
+specified range.  First, all regions marked as unreadable in the memory
+map (if one is defined) will be skipped.  *Note Memory Region
+Attributes::.  Second, GDB will attempt to read the remaining regions.
+For each one, if reading full region results in an errors, GDB will try
+to read a subset of the region.
+
+   In general, every single memory unit in the region may be readable or
+not, and the only way to read every readable unit is to try a read at
+every address, which is not practical.  Therefore, GDB will attempt to
+read all accessible memory units at either beginning or the end of the
+region, using a binary division scheme.  This heuristic works well for
+reading across a memory map boundary.  Note that if a region has a
+readable range that is neither at the beginning or the end, GDB will not
+read it.
+
+   The result record (*note GDB/MI Result Records::) that is output of
+the command includes a field named 'memory' whose content is a list of
+tuples.  Each tuple represent a successfully read memory block and has
+the following fields:
+
+'begin'
+     The start address of the memory block, as hexadecimal literal.
+
+'end'
+     The end address of the memory block, as hexadecimal literal.
+
+'offset'
+     The offset of the memory block, as hexadecimal literal, relative to
+     the start address passed to '-data-read-memory-bytes'.
+
+'contents'
+     The contents of the memory block, in hex.
+
+GDB Command
+...........
+
+The corresponding GDB command is 'x'.
+
+Example
+.......
+
+     (gdb)
+     -data-read-memory-bytes &a 10
+     ^done,memory=[{begin="0xbffff154",offset="0x00000000",
+                   end="0xbffff15e",
+                   contents="01000000020000000300"}]
+     (gdb)
+
+The '-data-write-memory-bytes' Command
+--------------------------------------
+
+Synopsis
+........
+
+      -data-write-memory-bytes ADDRESS CONTENTS
+      -data-write-memory-bytes ADDRESS CONTENTS [COUNT]
+
+where:
+
+'ADDRESS'
+     An expression specifying the address of the first addressable
+     memory unit to be written.  Complex expressions containing embedded
+     white space should be quoted using the C convention.
+
+'CONTENTS'
+     The hex-encoded data to write.  It is an error if CONTENTS does not
+     represent an integral number of addressable memory units.
+
+'COUNT'
+     Optional argument indicating the number of addressable memory units
+     to be written.  If COUNT is greater than CONTENTS' length, GDB will
+     repeatedly write CONTENTS until it fills COUNT memory units.
+
+GDB Command
+...........
+
+There's no corresponding GDB command.
+
+Example
+.......
+
+     (gdb)
+     -data-write-memory-bytes &a "aabbccdd"
+     ^done
+     (gdb)
+
+     (gdb)
+     -data-write-memory-bytes &a "aabbccdd" 16e
+     ^done
+     (gdb)
+
+
 File: gdb.info,  Node: GDB/MI Tracepoint Commands,  Next: GDB/MI Symbol Query,  Prev: GDB/MI Data Manipulation,  Up: GDB/MI
 
 27.17 GDB/MI Tracepoint Commands
@@ -1872,12 +2487,12 @@ Synopsis
 
      -add-inferior
 
-   Creates a new inferior (*note Inferiors and Programs::).  The created
-inferior is not associated with any executable.  Such association may be
-established with the '-file-exec-and-symbols' command (*note GDB/MI File
-Commands::).  The command response has a single field, 'inferior', whose
-value is the identifier of the thread group corresponding to the new
-inferior.
+   Creates a new inferior (*note Inferiors Connections and Programs::).
+The created inferior is not associated with any executable.  Such
+association may be established with the '-file-exec-and-symbols' command
+(*note GDB/MI File Commands::).  The command response has a single
+field, 'inferior', whose value is the identifier of the thread group
+corresponding to the new inferior.
 
 Example
 -------
@@ -2095,7 +2710,7 @@ GDB/MI::).
 
 File: gdb.info,  Node: Annotations Overview,  Next: Server Prefix,  Up: Annotations
 
-28.1 What is an Annotation?
+28.1 What Is an Annotation?
 ===========================
 
 Annotations start with a newline character, two 'control-z' characters,
@@ -2345,7 +2960,7 @@ followed by one or more lowercase hex di
 depend on the language).
 
 
-File: gdb.info,  Node: JIT Interface,  Next: In-Process Agent,  Prev: Annotations,  Up: Top
+File: gdb.info,  Node: JIT Interface,  Next: In-process Agent,  Prev: Annotations,  Up: Top
 
 29 JIT Compilation Interface
 ****************************
@@ -2584,9 +3199,9 @@ previous frame.  Both have a callback ('
 the target's address space.
 
 
-File: gdb.info,  Node: In-Process Agent,  Next: GDB Bugs,  Prev: JIT Interface,  Up: Top
+File: gdb.info,  Node: In-process Agent,  Next: GDB Bugs,  Prev: JIT Interface,  Up: Top
 
-30 In-Process Agent
+30 In-process Agent
 *******************
 
 The traditional debugging model is conceptually low-speed, but works
@@ -2605,7 +3220,7 @@ be able to observe the program's behavio
 
    Therefore, traditional debugging model is too intrusive to reproduce
 some bugs.  In order to reduce the interference with the program, we can
-reduce the number of operations performed by debugger.  The "In-Process
+reduce the number of operations performed by debugger.  The "In-process
 Agent", a shared library, is running within the same process with
 inferior, and is able to perform some debugging operations itself.  As a
 result, debugger is only involved when necessary, and performance of
@@ -2640,16 +3255,16 @@ debugging with the following commands:
 
 * Menu:
 
-* In-Process Agent Protocol::
+* In-process Agent Protocol::
 
 
-File: gdb.info,  Node: In-Process Agent Protocol,  Up: In-Process Agent
+File: gdb.info,  Node: In-process Agent Protocol,  Up: In-process Agent
 
-30.1 In-Process Agent Protocol
+30.1 In-process Agent Protocol
 ==============================
 
 The in-process agent is able to communicate with both GDB and GDBserver
-(*note In-Process Agent::).  This section documents the protocol used
+(*note In-process Agent::).  This section documents the protocol used
 for communications between GDB or GDBserver and the IPA. In general, GDB
 or GDBserver sends commands (*note IPA Protocol Commands::) and data to
 in-process agent, and then in-process agent replies back with the return
@@ -2664,7 +3279,7 @@ Protocol Objects::).
 * IPA Protocol Commands::
 
 
-File: gdb.info,  Node: IPA Protocol Objects,  Next: IPA Protocol Commands,  Up: In-Process Agent Protocol
+File: gdb.info,  Node: IPA Protocol Objects,  Next: IPA Protocol Commands,  Up: In-process Agent Protocol
 
 30.1.1 IPA Protocol Objects
 ---------------------------
@@ -2751,7 +3366,7 @@ actions                variable       nu
                                       *note tracepoint action object::
 
 
-File: gdb.info,  Node: IPA Protocol Commands,  Prev: IPA Protocol Objects,  Up: In-Process Agent Protocol
+File: gdb.info,  Node: IPA Protocol Commands,  Prev: IPA Protocol Objects,  Up: In-process Agent Protocol
 
 30.1.2 IPA Protocol Commands
 ----------------------------
@@ -2795,7 +3410,7 @@ specification.  They don't exist in real
      Asks in-process agent to unprobe the marker at ADDRESS.
 
 
-File: gdb.info,  Node: GDB Bugs,  Next: Command Line Editing,  Prev: In-Process Agent,  Up: Top
+File: gdb.info,  Node: GDB Bugs,  Next: Command Line Editing,  Prev: In-process Agent,  Up: Top
 
 31 Reporting Bugs in GDB
 ************************
@@ -2852,23 +3467,8 @@ contact that organization first.
    You can find contact information for many support companies and
 individuals in the file 'etc/SERVICE' in the GNU Emacs distribution.
 
-   In any event, we also recommend that you submit bug reports for GDB.
-The preferred method is to submit them directly using GDB's Bugs web
-page (http://www.gnu.org/software/gdb/bugs/).  Alternatively, the e-mail
-gateway <bug-gdb@gnu.org> can be used.
-
-   *Do not send bug reports to 'info-gdb', or to 'help-gdb', or to any
-newsgroups.*  Most users of GDB do not want to receive bug reports.
-Those that do have arranged to receive 'bug-gdb'.
-
-   The mailing list 'bug-gdb' has a newsgroup 'gnu.gdb.bug' which serves
-as a repeater.  The mailing list and the newsgroup carry exactly the
-same messages.  Often people think of posting bug reports to the
-newsgroup instead of mailing them.  This appears to work, but it has one
-problem which can be crucial: a newsgroup posting often lacks a mail
-path back to the sender.  Thus, if we need to ask for more information,
-we may be unable to reach you.  For this reason, it is better to send
-bug reports to the mailing list.
+   In any event, we also recommend that you submit bug reports for GDB
+to <https://www.gnu.org/software/gdb/bugs/>.
 
    The fundamental principle of reporting bugs usefully is this: *report
 all the facts*.  If you are not sure whether to state a fact or leave it
@@ -4704,7 +5304,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.1.90.20200307-git/gdb/gdb.info', and it refers to subordinate
+'gdb-10.2.90.20210521-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'
@@ -4714,8 +5314,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.1.90.20200307-git', in the case of version
-9.1.90.20200307-git), you can make the Info file by typing:
+directory ('gdb-10.2.90.20210521-git', in the case of version
+10.2.90.20210521-git), you can make the Info file by typing:
 
      cd gdb
      make gdb.info
@@ -4740,7 +5340,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.1.90.20200307-git/gdb')
+main source directory (for example, to 'gdb-10.2.90.20210521-git/gdb')
 and type:
 
      make gdb.dvi
@@ -4749,8 +5349,8 @@ and type:
 
    ---------- Footnotes ----------
 
-   (1) In 'gdb-9.1.90.20200307-git/gdb/refcard.ps' of the version
-9.1.90.20200307-git release.
+   (1) In 'gdb-10.2.90.20210521-git/gdb/refcard.ps' of the version
+10.2.90.20210521-git release.
 
 
 File: gdb.info,  Node: Installing GDB,  Next: Maintenance Commands,  Prev: Formatting Documentation,  Up: Top
@@ -4901,35 +5501,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.1.90.20200307-git distribution is in
-the 'gdb-9.1.90.20200307-git' directory.  That directory contains:
+   For example, the GDB version 10.2.90.20210521-git distribution is in
+the 'gdb-10.2.90.20210521-git' directory.  That directory contains:
 
-'gdb-9.1.90.20200307-git/configure (and supporting files)'
+'gdb-10.2.90.20210521-git/configure (and supporting files)'
      script for configuring GDB and all its supporting libraries
 
-'gdb-9.1.90.20200307-git/gdb'
+'gdb-10.2.90.20210521-git/gdb'
      the source specific to GDB itself
 
-'gdb-9.1.90.20200307-git/bfd'
+'gdb-10.2.90.20210521-git/bfd'
      source for the Binary File Descriptor library
 
-'gdb-9.1.90.20200307-git/include'
+'gdb-10.2.90.20210521-git/include'
      GNU include files
 
-'gdb-9.1.90.20200307-git/libiberty'
+'gdb-10.2.90.20210521-git/libiberty'
      source for the '-liberty' free software library
 
-'gdb-9.1.90.20200307-git/opcodes'
+'gdb-10.2.90.20210521-git/opcodes'
      source for the library of opcode tables and disassemblers
 
-'gdb-9.1.90.20200307-git/readline'
+'gdb-10.2.90.20210521-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.1.90.20200307-git' directory.
+the 'gdb-10.2.90.20210521-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
@@ -4937,7 +5537,7 @@ platform on which GDB will run as an arg
 
    For example:
 
-     cd gdb-9.1.90.20200307-git
+     cd gdb-10.2.90.20210521-git
      ./configure
      make
 
@@ -4985,13 +5585,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.1.90.20200307-git, you can build GDB in a
-separate directory for a Sun 4 like this:
+   For example, with version 10.2.90.20210521-git, you can build GDB in
+a separate directory for a Sun 4 like this:
 
-     cd gdb-9.1.90.20200307-git
+     cd gdb-10.2.90.20210521-git
      mkdir ../gdb-sun4
      cd ../gdb-sun4
-     ../gdb-9.1.90.20200307-git/configure
+     ../gdb-10.2.90.20210521-git/configure
      make
 
    When 'configure' builds a configuration using a remote source
@@ -5002,9 +5602,9 @@ 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.1.90.20200307-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'.
+'../gdb-10.2.90.20210521-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'.
 
    One popular reason to build several GDB configurations in separate
 directories is to configure GDB for cross-compiling (where GDB runs on
@@ -5018,8 +5618,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.1.90.20200307-git' (or in a separate configured directory
-configured with '--srcdir=DIRNAME/gdb-9.1.90.20200307-git'), you will
+'gdb-10.2.90.20210521-git' (or in a separate configured directory
+configured with '--srcdir=DIRNAME/gdb-10.2.90.20210521-git'), you will
 build all the required libraries, and then build GDB.
 
    When you have multiple hosts or targets configured in separate
@@ -5064,7 +5664,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.1.90.20200307-git', for version 9.1.90.20200307-git).
+('gdb-10.2.90.20210521-git', for version 10.2.90.20210521-git).
 
 
 File: gdb.info,  Node: Configure Options,  Next: System-wide configuration,  Prev: Config Names,  Up: Installing GDB
@@ -5151,6 +5751,15 @@ described here.
      Use the curses library instead of the termcap library, for
      text-mode terminal operations.
 
+'--with-debuginfod'
+     Build GDB with libdebuginfod, the debuginfod client library.  Used
+     to automatically fetch source files and separate debug files from
+     debuginfod servers using the associated executable's build ID.
+     Enabled by default if libdebuginfod is installed and found at
+     configure time.  debuginfod is packaged with elfutils, starting
+     with version 0.178.  You can get the latest version from
+     'https://sourceware.org/elfutils/'.
+
 '--with-libunwind-ia64'
      Use the libunwind library for unwinding function call stack on ia64
      target platforms.  See http://www.nongnu.org/libunwind/index.html
@@ -5276,7 +5885,7 @@ described here.
 
 File: gdb.info,  Node: System-wide configuration,  Prev: Configure Options,  Up: Installing GDB
 
-C.6 System-wide configuration and settings
+C.6 System-Wide Configuration and Settings
 ==========================================
 
 GDB can be configured to have a system-wide init file and a system-wide
@@ -5334,7 +5943,7 @@ extension.
 
 File: gdb.info,  Node: System-wide Configuration Scripts,  Up: System-wide configuration
 
-C.6.1 Installed System-wide Configuration Scripts
+C.6.1 Installed System-Wide Configuration Scripts
 -------------------------------------------------
 
 The 'system-gdbinit' directory, located inside the data-directory (as
@@ -5387,7 +5996,7 @@ commands that turn on debugging messages
      Translate the given format string and list of argument expressions
      into remote agent bytecodes and display them as a disassembled
      list.  This command is useful for debugging the agent version of
-     dynamic printf (*note Dynamic Printf::).
+     dynamic printf (*note Dynamic printf::).
 
 'maint info breakpoints'
      Using the same format as 'info breakpoints', display both the
@@ -5597,6 +6206,14 @@ commands that turn on debugging messages
      built again.  This command is used by developers after they add or
      modify XML target descriptions.
 
+'maint print xml-tdesc [FILE]'
+     Print the target description (*note Target Descriptions::) as an
+     XML file.  By default print the target description for the current
+     target, but if the optional argument FILE is provided, then that
+     file is read in by GDB and then used to produce the description.
+     The FILE should be an XML document, of the form described in *note
+     Target Description Format::.
+
 'maint check xml-descriptions DIR'
      Check that the target descriptions dynamically created by GDB equal
      the descriptions created from XML files found in DIR.
@@ -5609,6 +6226,12 @@ commands that turn on debugging messages
      Note that parts of the test may be skipped on some platforms when
      debugging core files.
 
+'maint print core-file-backed-mappings'
+     Print the file-backed mappings which were loaded from a core file
+     note.  This output represents state internal to GDB and should be
+     similar to the mappings displayed by the 'info proc mappings'
+     command.
+
 'maint print dummy-frames'
      Prints the contents of GDB's internal dummy-frame stack.
 
@@ -5790,10 +6413,10 @@ commands that turn on debugging messages
      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 '0'
-     (disabled).  A value of 'unlimited' 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.
+     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'
@@ -6104,10 +6727,12 @@ error number.  That number is not well d
 should be returned.  That way it is possible to extend the protocol.  A
 newer GDB can tell if a packet is supported based on that response.
 
-   At a minimum, a stub is required to support the 'g' and 'G' commands
-for register access, and the 'm' and 'M' commands for memory access.
-Stubs that only control single-threaded targets can implement run
-control with the 'c' (continue), and 's' (step) commands.  Stubs that
+   At a minimum, a stub is required to support the '?' command to tell
+GDB the reason for halting, 'g' and 'G' commands for register access,
+and the 'm' and 'M' commands for memory access.  Stubs that only control
+single-threaded targets can implement run control with the 'c'
+(continue) command, and if the target architecture supports
+hardware-assisted single-stepping, the 's' (step) command.  Stubs that
 support multi-threading targets should support the 'vCont' command.  All
 other commands are optional.
 
@@ -7025,1460 +7650,3 @@ components.
      expected to be continued.  *Note File-I/O Remote Protocol
      Extension::, for more details.
 
-
-File: gdb.info,  Node: General Query Packets,  Next: Architecture-Specific Protocol Details,  Prev: Stop Reply Packets,  Up: Remote Protocol
-
-E.4 General Query Packets
-=========================
-
-Packets starting with 'q' are "general query packets"; packets starting
-with 'Q' are "general set packets".  General query and set packets are a
-semi-unified form for retrieving and sending information to and from the
-stub.
-
-   The initial letter of a query or set packet is followed by a name
-indicating what sort of thing the packet applies to.  For example, GDB
-may use a 'qSymbol' packet to exchange symbol definitions with the stub.
-These packet names follow some conventions:
-
-   * The name must not contain commas, colons or semicolons.
-   * Most GDB query and set packets have a leading upper case letter.
-   * The names of custom vendor packets should use a company prefix, in
-     lower case, followed by a period.  For example, packets designed at
-     the Acme Corporation might begin with 'qacme.foo' (for querying
-     foos) or 'Qacme.bar' (for setting bars).
-
-   The name of a query or set packet should be separated from any
-parameters by a ':'; the parameters themselves should be separated by
-',' or ';'.  Stubs must be careful to match the full packet name, and
-check for a separator or the end of the packet, in case two packet names
-share a common prefix.  New packets should not begin with 'qC', 'qP', or
-'qL'(1).
-
-   Like the descriptions of the other packets, each description here has
-a template showing the packet's overall syntax, followed by an
-explanation of the packet's meaning.  We include spaces in some of the
-templates for clarity; these are not part of the packet's syntax.  No
-GDB packet uses spaces to separate its components.
-
-   Here are the currently defined query and set packets:
-
-'QAgent:1'
-'QAgent:0'
-     Turn on or off the agent as a helper to perform some debugging
-     operations delegated from GDB (*note Control Agent::).
-
-'QAllow:OP:VAL...'
-     Specify which operations GDB expects to request of the target, as a
-     semicolon-separated list of operation name and value pairs.
-     Possible values for OP include 'WriteReg', 'WriteMem',
-     'InsertBreak', 'InsertTrace', 'InsertFastTrace', and 'Stop'.  VAL
-     is either 0, indicating that GDB will not request the operation, or
-     1, indicating that it may.  (The target can then use this to set up
-     its own internals optimally, for instance if the debugger never
-     expects to insert breakpoints, it may not need to install its own
-     trap handler.)
-
-'qC'
-     Return the current thread ID.
-
-     Reply:
-     'QC THREAD-ID'
-          Where THREAD-ID is a thread ID as documented in *note
-          thread-id syntax::.
-     '(anything else)'
-          Any other reply implies the old thread ID.
-
-'qCRC:ADDR,LENGTH'
-     Compute the CRC checksum of a block of memory using CRC-32 defined
-     in IEEE 802.3.  The CRC is computed byte at a time, taking the most
-     significant bit of each byte first.  The initial pattern code
-     '0xffffffff' is used to ensure leading zeros affect the CRC.
-
-     _Note:_ This is the same CRC used in validating separate debug
-     files (*note Debugging Information in Separate Files: Separate
-     Debug Files.).  However the algorithm is slightly different.  When
-     validating separate debug files, the CRC is computed taking the
-     _least_ significant bit of each byte first, and the final result is
-     inverted to detect trailing zeros.
-
-     Reply:
-     'E NN'
-          An error (such as memory fault)
-     'C CRC32'
-          The specified memory region's checksum is CRC32.
-
-'QDisableRandomization:VALUE'
-     Some target operating systems will randomize the virtual address
-     space of the inferior process as a security feature, but provide a
-     feature to disable such randomization, e.g. to allow for a more
-     deterministic debugging experience.  On such systems, this packet
-     with a VALUE of 1 directs the target to disable address space
-     randomization for processes subsequently started via 'vRun'
-     packets, while a packet with a VALUE of 0 tells the target to
-     enable address space randomization.
-
-     This packet is only available in extended mode (*note extended
-     mode::).
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-     'E NN'
-          An error occurred.  The error number NN is given as hex
-          digits.
-
-     ''
-          An empty reply indicates that 'QDisableRandomization' is not
-          supported by the stub.
-
-     This packet is not probed by default; the remote stub must request
-     it, by supplying an appropriate 'qSupported' response (*note
-     qSupported::).  This should only be done on targets that actually
-     support disabling address space randomization.
-
-'QStartupWithShell:VALUE'
-     On UNIX-like targets, it is possible to start the inferior using a
-     shell program.  This is the default behavior on both GDB and
-     'gdbserver' (*note set startup-with-shell::).  This packet is used
-     to inform 'gdbserver' whether it should start the inferior using a
-     shell or not.
-
-     If VALUE is '0', 'gdbserver' will not use a shell to start the
-     inferior.  If VALUE is '1', 'gdbserver' will use a shell to start
-     the inferior.  All other values are considered an error.
-
-     This packet is only available in extended mode (*note extended
-     mode::).
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-     'E NN'
-          An error occurred.  The error number NN is given as hex
-          digits.
-
-     This packet is not probed by default; the remote stub must request
-     it, by supplying an appropriate 'qSupported' response (*note
-     qSupported::).  This should only be done on targets that actually
-     support starting the inferior using a shell.
-
-     Use of this packet is controlled by the 'set startup-with-shell'
-     command; *note set startup-with-shell::.
-
-'QEnvironmentHexEncoded:HEX-VALUE'
-     On UNIX-like targets, it is possible to set environment variables
-     that will be passed to the inferior during the startup process.
-     This packet is used to inform 'gdbserver' of an environment
-     variable that has been defined by the user on GDB (*note set
-     environment::).
-
-     The packet is composed by HEX-VALUE, an hex encoded representation
-     of the NAME=VALUE format representing an environment variable.  The
-     name of the environment variable is represented by NAME, and the
-     value to be assigned to the environment variable is represented by
-     VALUE.  If the variable has no value (i.e., the value is 'null'),
-     then VALUE will not be present.
-
-     This packet is only available in extended mode (*note extended
-     mode::).
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-     This packet is not probed by default; the remote stub must request
-     it, by supplying an appropriate 'qSupported' response (*note
-     qSupported::).  This should only be done on targets that actually
-     support passing environment variables to the starting inferior.
-
-     This packet is related to the 'set environment' command; *note set
-     environment::.
-
-'QEnvironmentUnset:HEX-VALUE'
-     On UNIX-like targets, it is possible to unset environment variables
-     before starting the inferior in the remote target.  This packet is
-     used to inform 'gdbserver' of an environment variable that has been
-     unset by the user on GDB (*note unset environment::).
-
-     The packet is composed by HEX-VALUE, an hex encoded representation
-     of the name of the environment variable to be unset.
-
-     This packet is only available in extended mode (*note extended
-     mode::).
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-     This packet is not probed by default; the remote stub must request
-     it, by supplying an appropriate 'qSupported' response (*note
-     qSupported::).  This should only be done on targets that actually
-     support passing environment variables to the starting inferior.
-
-     This packet is related to the 'unset environment' command; *note
-     unset environment::.
-
-'QEnvironmentReset'
-     On UNIX-like targets, this packet is used to reset the state of
-     environment variables in the remote target before starting the
-     inferior.  In this context, reset means unsetting all environment
-     variables that were previously set by the user (i.e., were not
-     initially present in the environment).  It is sent to 'gdbserver'
-     before the 'QEnvironmentHexEncoded' (*note
-     QEnvironmentHexEncoded::) and the 'QEnvironmentUnset' (*note
-     QEnvironmentUnset::) packets.
-
-     This packet is only available in extended mode (*note extended
-     mode::).
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-     This packet is not probed by default; the remote stub must request
-     it, by supplying an appropriate 'qSupported' response (*note
-     qSupported::).  This should only be done on targets that actually
-     support passing environment variables to the starting inferior.
-
-'QSetWorkingDir:[DIRECTORY]'
-     This packet is used to inform the remote server of the intended
-     current working directory for programs that are going to be
-     executed.
-
-     The packet is composed by DIRECTORY, an hex encoded representation
-     of the directory that the remote inferior will use as its current
-     working directory.  If DIRECTORY is an empty string, the remote
-     server should reset the inferior's current working directory to its
-     original, empty value.
-
-     This packet is only available in extended mode (*note extended
-     mode::).
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-'qfThreadInfo'
-'qsThreadInfo'
-     Obtain a list of all active thread IDs from the target (OS). Since
-     there may be too many active threads to fit into one reply packet,
-     this query works iteratively: it may require more than one
-     query/reply sequence to obtain the entire list of threads.  The
-     first query of the sequence will be the 'qfThreadInfo' query;
-     subsequent queries in the sequence will be the 'qsThreadInfo'
-     query.
-
-     NOTE: This packet replaces the 'qL' query (see below).
-
-     Reply:
-     'm THREAD-ID'
-          A single thread ID
-     'm THREAD-ID,THREAD-ID...'
-          a comma-separated list of thread IDs
-     'l'
-          (lower case letter 'L') denotes end of list.
-
-     In response to each query, the target will reply with a list of one
-     or more thread IDs, separated by commas.  GDB will respond to each
-     reply with a request for more thread ids (using the 'qs' form of
-     the query), until the target responds with 'l' (lower-case ell, for
-     "last").  Refer to *note thread-id syntax::, for the format of the
-     THREAD-ID fields.
-
-     _Note: GDB will send the 'qfThreadInfo' query during the initial
-     connection with the remote target, and the very first thread ID
-     mentioned in the reply will be stopped by GDB in a subsequent
-     message.  Therefore, the stub should ensure that the first thread
-     ID in the 'qfThreadInfo' reply is suitable for being stopped by
-     GDB._
-
-'qGetTLSAddr:THREAD-ID,OFFSET,LM'
-     Fetch the address associated with thread local storage specified by
-     THREAD-ID, OFFSET, and LM.
-
-     THREAD-ID is the thread ID associated with the thread for which to
-     fetch the TLS address.  *Note thread-id syntax::.
-
-     OFFSET is the (big endian, hex encoded) offset associated with the
-     thread local variable.  (This offset is obtained from the debug
-     information associated with the variable.)
-
-     LM is the (big endian, hex encoded) OS/ABI-specific encoding of the
-     load module associated with the thread local storage.  For example,
-     a GNU/Linux system will pass the link map address of the shared
-     object associated with the thread local storage under
-     consideration.  Other operating environments may choose to
-     represent the load module differently, so the precise meaning of
-     this parameter will vary.
-
-     Reply:
-     'XX...'
-          Hex encoded (big endian) bytes representing the address of the
-          thread local storage requested.
-
-     'E NN'
-          An error occurred.  The error number NN is given as hex
-          digits.
-
-     ''
-          An empty reply indicates that 'qGetTLSAddr' is not supported
-          by the stub.
-
-'qGetTIBAddr:THREAD-ID'
-     Fetch address of the Windows OS specific Thread Information Block.
-
-     THREAD-ID is the thread ID associated with the thread.
-
-     Reply:
-     'XX...'
-          Hex encoded (big endian) bytes representing the linear address
-          of the thread information block.
-
-     'E NN'
-          An error occured.  This means that either the thread was not
-          found, or the address could not be retrieved.
-
-     ''
-          An empty reply indicates that 'qGetTIBAddr' is not supported
-          by the stub.
-
-'qL STARTFLAG THREADCOUNT NEXTTHREAD'
-     Obtain thread information from RTOS. Where: STARTFLAG (one hex
-     digit) is one to indicate the first query and zero to indicate a
-     subsequent query; THREADCOUNT (two hex digits) is the maximum
-     number of threads the response packet can contain; and NEXTTHREAD
-     (eight hex digits), for subsequent queries (STARTFLAG is zero), is
-     returned in the response as ARGTHREAD.
-
-     Don't use this packet; use the 'qfThreadInfo' query instead (see
-     above).
-
-     Reply:
-     'qM COUNT DONE ARGTHREAD THREAD...'
-          Where: COUNT (two hex digits) is the number of threads being
-          returned; DONE (one hex digit) is zero to indicate more
-          threads and one indicates no further threads; ARGTHREADID
-          (eight hex digits) is NEXTTHREAD from the request packet;
-          THREAD... is a sequence of thread IDs, THREADID (eight hex
-          digits), from the target.  See
-          'remote.c:parse_threadlist_response()'.
-
-'qOffsets'
-     Get section offsets that the target used when relocating the
-     downloaded image.
-
-     Reply:
-     'Text=XXX;Data=YYY[;Bss=ZZZ]'
-          Relocate the 'Text' section by XXX from its original address.
-          Relocate the 'Data' section by YYY from its original address.
-          If the object file format provides segment information (e.g.
-          ELF 'PT_LOAD' program headers), GDB will relocate entire
-          segments by the supplied offsets.
-
-          _Note: while a 'Bss' offset may be included in the response,
-          GDB ignores this and instead applies the 'Data' offset to the
-          'Bss' section._
-
-     'TextSeg=XXX[;DataSeg=YYY]'
-          Relocate the first segment of the object file, which
-          conventionally contains program code, to a starting address of
-          XXX.  If 'DataSeg' is specified, relocate the second segment,
-          which conventionally contains modifiable data, to a starting
-          address of YYY.  GDB will report an error if the object file
-          does not contain segment information, or does not contain at
-          least as many segments as mentioned in the reply.  Extra
-          segments are kept at fixed offsets relative to the last
-          relocated segment.
-
-'qP MODE THREAD-ID'
-     Returns information on THREAD-ID.  Where: MODE is a hex encoded 32
-     bit mode; THREAD-ID is a thread ID (*note thread-id syntax::).
-
-     Don't use this packet; use the 'qThreadExtraInfo' query instead
-     (see below).
-
-     Reply: see 'remote.c:remote_unpack_thread_info_response()'.
-
-'QNonStop:1'
-'QNonStop:0'
-     Enter non-stop ('QNonStop:1') or all-stop ('QNonStop:0') mode.
-     *Note Remote Non-Stop::, for more information.
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-     'E NN'
-          An error occurred.  The error number NN is given as hex
-          digits.
-
-     ''
-          An empty reply indicates that 'QNonStop' is not supported by
-          the stub.
-
-     This packet is not probed by default; the remote stub must request
-     it, by supplying an appropriate 'qSupported' response (*note
-     qSupported::).  Use of this packet is controlled by the 'set
-     non-stop' command; *note Non-Stop Mode::.
-
-'QCatchSyscalls:1 [;SYSNO]...'
-'QCatchSyscalls:0'
-     Enable ('QCatchSyscalls:1') or disable ('QCatchSyscalls:0')
-     catching syscalls from the inferior process.
-
-     For 'QCatchSyscalls:1', each listed syscall SYSNO (encoded in hex)
-     should be reported to GDB.  If no syscall SYSNO is listed, every
-     system call should be reported.
-
-     Note that if a syscall not in the list is reported, GDB will still
-     filter the event according to its own list from all corresponding
-     'catch syscall' commands.  However, it is more efficient to only
-     report the requested syscalls.
-
-     Multiple 'QCatchSyscalls:1' packets do not combine; any earlier
-     'QCatchSyscalls:1' list is completely replaced by the new list.
-
-     If the inferior process execs, the state of 'QCatchSyscalls' is
-     kept for the new process too.  On targets where exec may affect
-     syscall numbers, for example with exec between 32 and 64-bit
-     processes, the client should send a new packet with the new syscall
-     list.
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-     'E NN'
-          An error occurred.  NN are hex digits.
-
-     ''
-          An empty reply indicates that 'QCatchSyscalls' is not
-          supported by the stub.
-
-     Use of this packet is controlled by the 'set remote catch-syscalls'
-     command (*note set remote catch-syscalls: Remote Configuration.).
-     This packet is not probed by default; the remote stub must request
-     it, by supplying an appropriate 'qSupported' response (*note
-     qSupported::).
-
-'QPassSignals: SIGNAL [;SIGNAL]...'
-     Each listed SIGNAL should be passed directly to the inferior
-     process.  Signals are numbered identically to continue packets and
-     stop replies (*note Stop Reply Packets::).  Each SIGNAL list item
-     should be strictly greater than the previous item.  These signals
-     do not need to stop the inferior, or be reported to GDB.  All other
-     signals should be reported to GDB.  Multiple 'QPassSignals' packets
-     do not combine; any earlier 'QPassSignals' list is completely
-     replaced by the new list.  This packet improves performance when
-     using 'handle SIGNAL nostop noprint pass'.
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-     'E NN'
-          An error occurred.  The error number NN is given as hex
-          digits.
-
-     ''
-          An empty reply indicates that 'QPassSignals' is not supported
-          by the stub.
-
-     Use of this packet is controlled by the 'set remote pass-signals'
-     command (*note set remote pass-signals: Remote Configuration.).
-     This packet is not probed by default; the remote stub must request
-     it, by supplying an appropriate 'qSupported' response (*note
-     qSupported::).
-
-'QProgramSignals: SIGNAL [;SIGNAL]...'
-     Each listed SIGNAL may be delivered to the inferior process.
-     Others should be silently discarded.
-
-     In some cases, the remote stub may need to decide whether to
-     deliver a signal to the program or not without GDB involvement.
-     One example of that is while detaching -- the program's threads may
-     have stopped for signals that haven't yet had a chance of being
-     reported to GDB, and so the remote stub can use the signal list
-     specified by this packet to know whether to deliver or ignore those
-     pending signals.
-
-     This does not influence whether to deliver a signal as requested by
-     a resumption packet (*note vCont packet::).
-
-     Signals are numbered identically to continue packets and stop
-     replies (*note Stop Reply Packets::).  Each SIGNAL list item should
-     be strictly greater than the previous item.  Multiple
-     'QProgramSignals' packets do not combine; any earlier
-     'QProgramSignals' list is completely replaced by the new list.
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-     'E NN'
-          An error occurred.  The error number NN is given as hex
-          digits.
-
-     ''
-          An empty reply indicates that 'QProgramSignals' is not
-          supported by the stub.
-
-     Use of this packet is controlled by the 'set remote
-     program-signals' command (*note set remote program-signals: Remote
-     Configuration.).  This packet is not probed by default; the remote
-     stub must request it, by supplying an appropriate 'qSupported'
-     response (*note qSupported::).
-
-'QThreadEvents:1'
-'QThreadEvents:0'
-
-     Enable ('QThreadEvents:1') or disable ('QThreadEvents:0') reporting
-     of thread create and exit events.  *Note thread create event::, for
-     the reply specifications.  For example, this is used in non-stop
-     mode when GDB stops a set of threads and synchronously waits for
-     the their corresponding stop replies.  Without exit events, if one
-     of the threads exits, GDB would hang forever not knowing that it
-     should no longer expect a stop for that same thread.  GDB does not
-     enable this feature unless the stub reports that it supports it by
-     including 'QThreadEvents+' in its 'qSupported' reply.
-
-     Reply:
-     'OK'
-          The request succeeded.
-
-     'E NN'
-          An error occurred.  The error number NN is given as hex
-          digits.
-
-     ''
-          An empty reply indicates that 'QThreadEvents' is not supported
-          by the stub.
-
-     Use of this packet is controlled by the 'set remote thread-events'
-     command (*note set remote thread-events: Remote Configuration.).
-
-'qRcmd,COMMAND'
-     COMMAND (hex encoded) is passed to the local interpreter for
-     execution.  Invalid commands should be reported using the output
-     string.  Before the final result packet, the target may also
-     respond with a number of intermediate 'OOUTPUT' console output
-     packets.  _Implementors should note that providing access to a
-     stubs's interpreter may have security implications_.
-
-     Reply:
-     'OK'
-          A command response with no output.
-     'OUTPUT'
-          A command response with the hex encoded output string OUTPUT.
-     'E NN'
-          Indicate a badly formed request.
-     ''
-          An empty reply indicates that 'qRcmd' is not recognized.
-
-     (Note that the 'qRcmd' packet's name is separated from the command
-     by a ',', not a ':', contrary to the naming conventions above.
-     Please don't use this packet as a model for new packets.)
-
-'qSearch:memory:ADDRESS;LENGTH;SEARCH-PATTERN'
-     Search LENGTH bytes at ADDRESS for SEARCH-PATTERN.  Both ADDRESS
-     and LENGTH are encoded in hex; SEARCH-PATTERN is a sequence of
-     bytes, also hex encoded.
-
-     Reply:
-     '0'
-          The pattern was not found.
-     '1,address'
-          The pattern was found at ADDRESS.
-     'E NN'
-          A badly formed request or an error was encountered while
-          searching memory.
-     ''
-          An empty reply indicates that 'qSearch:memory' is not
-          recognized.
-
-'QStartNoAckMode'
-     Request that the remote stub disable the normal '+'/'-' protocol
-     acknowledgments (*note Packet Acknowledgment::).
-
-     Reply:
-     'OK'
-          The stub has switched to no-acknowledgment mode.  GDB
-          acknowledges this response, but neither the stub nor GDB shall
-          send or expect further '+'/'-' acknowledgments in the current
-          connection.
-     ''
-          An empty reply indicates that the stub does not support
-          no-acknowledgment mode.
-
-'qSupported [:GDBFEATURE [;GDBFEATURE]... ]'
-     Tell the remote stub about features supported by GDB, and query the
-     stub for features it supports.  This packet allows GDB and the
-     remote stub to take advantage of each others' features.
-     'qSupported' also consolidates multiple feature probes at startup,
-     to improve GDB performance--a single larger packet performs better
-     than multiple smaller probe packets on high-latency links.  Some
-     features may enable behavior which must not be on by default, e.g.
-     because it would confuse older clients or stubs.  Other features
-     may describe packets which could be automatically probed for, but
-     are not.  These features must be reported before GDB will use them.
-     This "default unsupported" behavior is not appropriate for all
-     packets, but it helps to keep the initial connection time under
-     control with new versions of GDB which support increasing numbers
-     of packets.
-
-     Reply:
-     'STUBFEATURE [;STUBFEATURE]...'
-          The stub supports or does not support each returned
-          STUBFEATURE, depending on the form of each STUBFEATURE (see
-          below for the possible forms).
-     ''
-          An empty reply indicates that 'qSupported' is not recognized,
-          or that no features needed to be reported to GDB.
-
-     The allowed forms for each feature (either a GDBFEATURE in the
-     'qSupported' packet, or a STUBFEATURE in the response) are:
-
-     'NAME=VALUE'
-          The remote protocol feature NAME is supported, and associated
-          with the specified VALUE.  The format of VALUE depends on the
-          feature, but it must not include a semicolon.
-     'NAME+'
-          The remote protocol feature NAME is supported, and does not
-          need an associated value.
-     'NAME-'
-          The remote protocol feature NAME is not supported.
-     'NAME?'
-          The remote protocol feature NAME may be supported, and GDB
-          should auto-detect support in some other way when it is
-          needed.  This form will not be used for GDBFEATURE
-          notifications, but may be used for STUBFEATURE responses.
-
-     Whenever the stub receives a 'qSupported' request, the supplied set
-     of GDB features should override any previous request.  This allows
-     GDB to put the stub in a known state, even if the stub had
-     previously been communicating with a different version of GDB.
-
-     The following values of GDBFEATURE (for the packet sent by GDB) are
-     defined:
-
-     'multiprocess'
-          This feature indicates whether GDB supports multiprocess
-          extensions to the remote protocol.  GDB does not use such
-          extensions unless the stub also reports that it supports them
-          by including 'multiprocess+' in its 'qSupported' reply.  *Note
-          multiprocess extensions::, for details.
-
-     'xmlRegisters'
-          This feature indicates that GDB supports the XML target
-          description.  If the stub sees 'xmlRegisters=' with target
-          specific strings separated by a comma, it will report register
-          description.
-
-     'qRelocInsn'
-          This feature indicates whether GDB supports the 'qRelocInsn'
-          packet (*note Relocate instruction reply packet: Tracepoint
-          Packets.).
-
-     'swbreak'
-          This feature indicates whether GDB supports the swbreak stop
-          reason in stop replies.  *Note swbreak stop reason::, for
-          details.
-
-     'hwbreak'
-          This feature indicates whether GDB supports the hwbreak stop
-          reason in stop replies.  *Note swbreak stop reason::, for
-          details.
-
-     'fork-events'
-          This feature indicates whether GDB supports fork event
-          extensions to the remote protocol.  GDB does not use such
-          extensions unless the stub also reports that it supports them
-          by including 'fork-events+' in its 'qSupported' reply.
-
-     'vfork-events'
-          This feature indicates whether GDB supports vfork event
-          extensions to the remote protocol.  GDB does not use such
-          extensions unless the stub also reports that it supports them
-          by including 'vfork-events+' in its 'qSupported' reply.
-
-     'exec-events'
-          This feature indicates whether GDB supports exec event
-          extensions to the remote protocol.  GDB does not use such
-          extensions unless the stub also reports that it supports them
-          by including 'exec-events+' in its 'qSupported' reply.
-
-     'vContSupported'
-          This feature indicates whether GDB wants to know the supported
-          actions in the reply to 'vCont?' packet.
-
-     Stubs should ignore any unknown values for GDBFEATURE.  Any GDB
-     which sends a 'qSupported' packet supports receiving packets of
-     unlimited length (earlier versions of GDB may reject overly long
-     responses).  Additional values for GDBFEATURE may be defined in the
-     future to let the stub take advantage of new features in GDB, e.g.
-     incompatible improvements in the remote protocol--the
-     'multiprocess' feature is an example of such a feature.  The stub's
-     reply should be independent of the GDBFEATURE entries sent by GDB;
-     first GDB describes all the features it supports, and then the stub
-     replies with all the features it supports.
-
-     Similarly, GDB will silently ignore unrecognized stub feature
-     responses, as long as each response uses one of the standard forms.
-
-     Some features are flags.  A stub which supports a flag feature
-     should respond with a '+' form response.  Other features require
-     values, and the stub should respond with an '=' form response.
-
-     Each feature has a default value, which GDB will use if
-     'qSupported' is not available or if the feature is not mentioned in
-     the 'qSupported' response.  The default values are fixed; a stub is
-     free to omit any feature responses that match the defaults.
-
-     Not all features can be probed, but for those which can, the
-     probing mechanism is useful: in some cases, a stub's internal
-     architecture may not allow the protocol layer to know some
-     information about the underlying target in advance.  This is
-     especially common in stubs which may be configured for multiple
-     targets.
-
-     These are the currently defined stub features and their properties:
-
-     Feature Name              Value          Default   Probe
-                               Required                 Allowed
-                                                        
-     'PacketSize'              Yes            '-'       No
-                                                        
-     'qXfer:auxv:read'         No             '-'       Yes
-                                                        
-     'qXfer:btrace:read'       No             '-'       Yes
-                                                        
-     'qXfer:btrace-conf:read'  No             '-'       Yes
-                                                        
-     'qXfer:exec-file:read'    No             '-'       Yes
-                                                        
-     'qXfer:features:read'     No             '-'       Yes
-                                                        
-     'qXfer:libraries:read'    No             '-'       Yes
-                                                        
-     'qXfer:libraries-svr4:read'No            '-'       Yes
-                                                        
-     'augmented-libraries-svr4-read'No        '-'       No
-                                                        
-     'qXfer:memory-map:read'   No             '-'       Yes
-                                                        
-     'qXfer:sdata:read'        No             '-'       Yes
-                                                        
-     'qXfer:siginfo:read'      No             '-'       Yes
-                                                        
-     'qXfer:siginfo:write'     No             '-'       Yes
-                                                        
-     'qXfer:threads:read'      No             '-'       Yes
-                                                        
-     'qXfer:traceframe-info:read'No           '-'       Yes
-                                                        
-     'qXfer:uib:read'          No             '-'       Yes
-                                                        
-     'qXfer:fdpic:read'        No             '-'       Yes
-                                                        
-     'Qbtrace:off'             Yes            '-'       Yes
-                                                        
-     'Qbtrace:bts'             Yes            '-'       Yes
-                                                        
-     'Qbtrace:pt'              Yes            '-'       Yes
-                                                        
-     'Qbtrace-conf:bts:size'   Yes            '-'       Yes
-                                                        
-     'Qbtrace-conf:pt:size'    Yes            '-'       Yes
-                                                        
-     'QNonStop'                No             '-'       Yes
-                                                        
-     'QCatchSyscalls'          No             '-'       Yes
-                                                        
-     'QPassSignals'            No             '-'       Yes
-                                                        
-     'QStartNoAckMode'         No             '-'       Yes
-                                                        
-     'multiprocess'            No             '-'       No
-                                                        
-     'ConditionalBreakpoints'  No             '-'       No
-                                                        
-     'ConditionalTracepoints'  No             '-'       No
-                                                        
-     'ReverseContinue'         No             '-'       No
-                                                        
-     'ReverseStep'             No             '-'       No
-                                                        
-     'TracepointSource'        No             '-'       No
-                                                        
-     'QAgent'                  No             '-'       No
-                                                        
-     'QAllow'                  No             '-'       No
-                                                        
-     'QDisableRandomization'   No             '-'       No
-                                                        
-     'EnableDisableTracepoints'No             '-'       No
-                                                        
-     'QTBuffer:size'           No             '-'       No
-                                                        
-     'tracenz'                 No             '-'       No
-                                                        
-     'BreakpointCommands'      No             '-'       No
-                                                        
-     'swbreak'                 No             '-'       No
-                                                        
-     'hwbreak'                 No             '-'       No
-                                                        
-     'fork-events'             No             '-'       No
-                                                        
-     'vfork-events'            No             '-'       No
-                                                        
-     'exec-events'             No             '-'       No
-                                                        
-     'QThreadEvents'           No             '-'       No
-                                                        
-     'no-resumed'              No             '-'       No
-                                                        
-
-     These are the currently defined stub features, in more detail:
-
-     'PacketSize=BYTES'
-          The remote stub can accept packets up to at least BYTES in
-          length.  GDB will send packets up to this size for bulk
-          transfers, and will never send larger packets.  This is a
-          limit on the data characters in the packet, including the
-          frame and checksum.  There is no trailing NUL byte in a remote
-          protocol packet; if the stub stores packets in a
-          NUL-terminated format, it should allow an extra byte in its
-          buffer for the NUL. If this stub feature is not supported, GDB
-          guesses based on the size of the 'g' packet response.
-
-     'qXfer:auxv:read'
-          The remote stub understands the 'qXfer:auxv:read' packet
-          (*note qXfer auxiliary vector read::).
-
-     'qXfer:btrace:read'
-          The remote stub understands the 'qXfer:btrace:read' packet
-          (*note qXfer btrace read::).
-
-     'qXfer:btrace-conf:read'
-          The remote stub understands the 'qXfer:btrace-conf:read'
-          packet (*note qXfer btrace-conf read::).
-
-     'qXfer:exec-file:read'
-          The remote stub understands the 'qXfer:exec-file:read' packet
-          (*note qXfer executable filename read::).
-
-     'qXfer:features:read'
-          The remote stub understands the 'qXfer:features:read' packet
-          (*note qXfer target description read::).
-
-     'qXfer:libraries:read'
-          The remote stub understands the 'qXfer:libraries:read' packet
-          (*note qXfer library list read::).
-
-     'qXfer:libraries-svr4:read'
-          The remote stub understands the 'qXfer:libraries-svr4:read'
-          packet (*note qXfer svr4 library list read::).
-
-     'augmented-libraries-svr4-read'
-          The remote stub understands the augmented form of the
-          'qXfer:libraries-svr4:read' packet (*note qXfer svr4 library
-          list read::).
-
-     'qXfer:memory-map:read'
-          The remote stub understands the 'qXfer:memory-map:read' packet
-          (*note qXfer memory map read::).
-
-     'qXfer:sdata:read'
-          The remote stub understands the 'qXfer:sdata:read' packet
-          (*note qXfer sdata read::).
-
-     'qXfer:siginfo:read'
-          The remote stub understands the 'qXfer:siginfo:read' packet
-          (*note qXfer siginfo read::).
-
-     'qXfer:siginfo:write'
-          The remote stub understands the 'qXfer:siginfo:write' packet
-          (*note qXfer siginfo write::).
-
-     'qXfer:threads:read'
-          The remote stub understands the 'qXfer:threads:read' packet
-          (*note qXfer threads read::).
-
-     'qXfer:traceframe-info:read'
-          The remote stub understands the 'qXfer:traceframe-info:read'
-          packet (*note qXfer traceframe info read::).
-
-     'qXfer:uib:read'
-          The remote stub understands the 'qXfer:uib:read' packet (*note
-          qXfer unwind info block::).
-
-     'qXfer:fdpic:read'
-          The remote stub understands the 'qXfer:fdpic:read' packet
-          (*note qXfer fdpic loadmap read::).
-
-     'QNonStop'
-          The remote stub understands the 'QNonStop' packet (*note
-          QNonStop::).
-
-     'QCatchSyscalls'
-          The remote stub understands the 'QCatchSyscalls' packet (*note
-          QCatchSyscalls::).
-
-     'QPassSignals'
-          The remote stub understands the 'QPassSignals' packet (*note
-          QPassSignals::).
-
-     'QStartNoAckMode'
-          The remote stub understands the 'QStartNoAckMode' packet and
-          prefers to operate in no-acknowledgment mode.  *Note Packet
-          Acknowledgment::.
-
-     'multiprocess'
-          The remote stub understands the multiprocess extensions to the
-          remote protocol syntax.  The multiprocess extensions affect
-          the syntax of thread IDs in both packets and replies (*note
-          thread-id syntax::), and add process IDs to the 'D' packet and
-          'W' and 'X' replies.  Note that reporting this feature
-          indicates support for the syntactic extensions only, not that
-          the stub necessarily supports debugging of more than one
-          process at a time.  The stub must not use multiprocess
-          extensions in packet replies unless GDB has also indicated it
-          supports them in its 'qSupported' request.
-
-     'qXfer:osdata:read'
-          The remote stub understands the 'qXfer:osdata:read' packet
-          ((*note qXfer osdata read::).
-
-     'ConditionalBreakpoints'
-          The target accepts and implements evaluation of conditional
-          expressions defined for breakpoints.  The target will only
-          report breakpoint triggers when such conditions are true
-          (*note Break Conditions: Conditions.).
-
-     'ConditionalTracepoints'
-          The remote stub accepts and implements conditional expressions
-          defined for tracepoints (*note Tracepoint Conditions::).
-
-     'ReverseContinue'
-          The remote stub accepts and implements the reverse continue
-          packet (*note bc::).
-
-     'ReverseStep'
-          The remote stub accepts and implements the reverse step packet
-          (*note bs::).
-
-     'TracepointSource'
-          The remote stub understands the 'QTDPsrc' packet that supplies
-          the source form of tracepoint definitions.
-
-     'QAgent'
-          The remote stub understands the 'QAgent' packet.
-
-     'QAllow'
-          The remote stub understands the 'QAllow' packet.
-
-     'QDisableRandomization'
-          The remote stub understands the 'QDisableRandomization'
-          packet.
-
-     'StaticTracepoint'
-          The remote stub supports static tracepoints.
-
-     'InstallInTrace'
-          The remote stub supports installing tracepoint in tracing.
-
-     'EnableDisableTracepoints'
-          The remote stub supports the 'QTEnable' (*note QTEnable::) and
-          'QTDisable' (*note QTDisable::) packets that allow tracepoints
-          to be enabled and disabled while a trace experiment is
-          running.
-
-     'QTBuffer:size'
-          The remote stub supports the 'QTBuffer:size' (*note
-          QTBuffer-size::) packet that allows to change the size of the
-          trace buffer.
-
-     'tracenz'
-          The remote stub supports the 'tracenz' bytecode for collecting
-          strings.  See *note Bytecode Descriptions:: for details about
-          the bytecode.
-
-     'BreakpointCommands'
-          The remote stub supports running a breakpoint's command list
-          itself, rather than reporting the hit to GDB.
-
-     'Qbtrace:off'
-          The remote stub understands the 'Qbtrace:off' packet.
-
-     'Qbtrace:bts'
-          The remote stub understands the 'Qbtrace:bts' packet.
-
-     'Qbtrace:pt'
-          The remote stub understands the 'Qbtrace:pt' packet.
-
-     'Qbtrace-conf:bts:size'
-          The remote stub understands the 'Qbtrace-conf:bts:size'
-          packet.
-
-     'Qbtrace-conf:pt:size'
-          The remote stub understands the 'Qbtrace-conf:pt:size' packet.
-
-     'swbreak'
-          The remote stub reports the 'swbreak' stop reason for memory
-          breakpoints.
-
-     'hwbreak'
-          The remote stub reports the 'hwbreak' stop reason for hardware
-          breakpoints.
-
-     'fork-events'
-          The remote stub reports the 'fork' stop reason for fork
-          events.
-
-     'vfork-events'
-          The remote stub reports the 'vfork' stop reason for vfork
-          events and vforkdone events.
-
-     'exec-events'
-          The remote stub reports the 'exec' stop reason for exec
-          events.
-
-     'vContSupported'
-          The remote stub reports the supported actions in the reply to
-          'vCont?' packet.
-
-     'QThreadEvents'
-          The remote stub understands the 'QThreadEvents' packet.
-
-     'no-resumed'
-          The remote stub reports the 'N' stop reply.
-
-'qSymbol::'
-     Notify the target that GDB is prepared to serve symbol lookup
-     requests.  Accept requests from the target for the values of
-     symbols.
-
-     Reply:
-     'OK'
-          The target does not need to look up any (more) symbols.
-     'qSymbol:SYM_NAME'
-          The target requests the value of symbol SYM_NAME (hex
-          encoded).  GDB may provide the value by using the
-          'qSymbol:SYM_VALUE:SYM_NAME' message, described below.
-
-'qSymbol:SYM_VALUE:SYM_NAME'
-     Set the value of SYM_NAME to SYM_VALUE.
-
-     SYM_NAME (hex encoded) is the name of a symbol whose value the
-     target has previously requested.
-
-     SYM_VALUE (hex) is the value for symbol SYM_NAME.  If GDB cannot
-     supply a value for SYM_NAME, then this field will be empty.
-
-     Reply:
-     'OK'
-          The target does not need to look up any (more) symbols.
-     'qSymbol:SYM_NAME'
-          The target requests the value of a new symbol SYM_NAME (hex
-          encoded).  GDB will continue to supply the values of symbols
-          (if available), until the target ceases to request them.
-
-'qTBuffer'
-'QTBuffer'
-'QTDisconnected'
-'QTDP'
-'QTDPsrc'
-'QTDV'
-'qTfP'
-'qTfV'
-'QTFrame'
-'qTMinFTPILen'
-
-     *Note Tracepoint Packets::.
-
-'qThreadExtraInfo,THREAD-ID'
-     Obtain from the target OS a printable string description of thread
-     attributes for the thread THREAD-ID; see *note thread-id syntax::,
-     for the forms of THREAD-ID.  This string may contain anything that
-     the target OS thinks is interesting for GDB to tell the user about
-     the thread.  The string is displayed in GDB's 'info threads'
-     display.  Some examples of possible thread extra info strings are
-     'Runnable', or 'Blocked on Mutex'.
-
-     Reply:
-     'XX...'
-          Where 'XX...' is a hex encoding of ASCII data, comprising the
-          printable string containing the extra information about the
-          thread's attributes.
-
-     (Note that the 'qThreadExtraInfo' packet's name is separated from
-     the command by a ',', not a ':', contrary to the naming conventions
-     above.  Please don't use this packet as a model for new packets.)
-
-'QTNotes'
-'qTP'
-'QTSave'
-'qTsP'
-'qTsV'
-'QTStart'
-'QTStop'
-'QTEnable'
-'QTDisable'
-'QTinit'
-'QTro'
-'qTStatus'
-'qTV'
-'qTfSTM'
-'qTsSTM'
-'qTSTMat'
-     *Note Tracepoint Packets::.
-
-'qXfer:OBJECT:read:ANNEX:OFFSET,LENGTH'
-     Read uninterpreted bytes from the target's special data area
-     identified by the keyword OBJECT.  Request LENGTH bytes starting at
-     OFFSET bytes into the data.  The content and encoding of ANNEX is
-     specific to OBJECT; it can supply additional details about what
-     data to access.
-
-     Reply:
-     'm DATA'
-          Data DATA (*note Binary Data::) has been read from the target.
-          There may be more data at a higher address (although it is
-          permitted to return 'm' even for the last valid block of data,
-          as long as at least one byte of data was read).  It is
-          possible for DATA to have fewer bytes than the LENGTH in the
-          request.
-
-     'l DATA'
-          Data DATA (*note Binary Data::) has been read from the target.
-          There is no more data to be read.  It is possible for DATA to
-          have fewer bytes than the LENGTH in the request.
-
-     'l'
-          The OFFSET in the request is at the end of the data.  There is
-          no more data to be read.
-
-     'E00'
-          The request was malformed, or ANNEX was invalid.
-
-     'E NN'
-          The offset was invalid, or there was an error encountered
-          reading the data.  The NN part is a hex-encoded 'errno' value.
-
-     ''
-          An empty reply indicates the OBJECT string was not recognized
-          by the stub, or that the object does not support reading.
-
-     Here are the specific requests of this form defined so far.  All
-     the 'qXfer:OBJECT:read:...' requests use the same reply formats,
-     listed above.
-
-     'qXfer:auxv:read::OFFSET,LENGTH'
-          Access the target's "auxiliary vector".  *Note auxiliary
-          vector: OS Information.  Note ANNEX must be empty.
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:btrace:read:ANNEX:OFFSET,LENGTH'
-
-          Return a description of the current branch trace.  *Note
-          Branch Trace Format::.  The annex part of the generic 'qXfer'
-          packet may have one of the following values:
-
-          'all'
-               Returns all available branch trace.
-
-          'new'
-               Returns all available branch trace if the branch trace
-               changed since the last read request.
-
-          'delta'
-               Returns the new branch trace since the last read request.
-               Adds a new block to the end of the trace that begins at
-               zero and ends at the source location of the first branch
-               in the trace buffer.  This extra block is used to stitch
-               traces together.
-
-               If the trace buffer overflowed, returns an error
-               indicating the overflow.
-
-          This packet is not probed by default; the remote stub must
-          request it by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:btrace-conf:read::OFFSET,LENGTH'
-
-          Return a description of the current branch trace
-          configuration.  *Note Branch Trace Configuration Format::.
-
-          This packet is not probed by default; the remote stub must
-          request it by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:exec-file:read:ANNEX:OFFSET,LENGTH'
-          Return the full absolute name of the file that was executed to
-          create a process running on the remote system.  The annex
-          specifies the numeric process ID of the process to query,
-          encoded as a hexadecimal number.  If the annex part is empty
-          the remote stub should return the filename corresponding to
-          the currently executing process.
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:features:read:ANNEX:OFFSET,LENGTH'
-          Access the "target description".  *Note Target Descriptions::.
-          The annex specifies which XML document to access.  The main
-          description is always loaded from the 'target.xml' annex.
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:libraries:read:ANNEX:OFFSET,LENGTH'
-          Access the target's list of loaded libraries.  *Note Library
-          List Format::.  The annex part of the generic 'qXfer' packet
-          must be empty (*note qXfer read::).
-
-          Targets which maintain a list of libraries in the program's
-          memory do not need to implement this packet; it is designed
-          for platforms where the operating system manages the list of
-          loaded libraries.
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:libraries-svr4:read:ANNEX:OFFSET,LENGTH'
-          Access the target's list of loaded libraries when the target
-          is an SVR4 platform.  *Note Library List Format for SVR4
-          Targets::.  The annex part of the generic 'qXfer' packet must
-          be empty unless the remote stub indicated it supports the
-          augmented form of this packet by supplying an appropriate
-          'qSupported' response (*note qXfer read::, *note
-          qSupported::).
-
-          This packet is optional for better performance on SVR4
-          targets.  GDB uses memory read packets to read the SVR4
-          library list otherwise.
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-          If the remote stub indicates it supports the augmented form of
-          this packet then the annex part of the generic 'qXfer' packet
-          may contain a semicolon-separated list of 'NAME=VALUE'
-          arguments.  The currently supported arguments are:
-
-          'start=ADDRESS'
-               A hexadecimal number specifying the address of the
-               'struct link_map' to start reading the library list from.
-               If unset or zero then the first 'struct link_map' in the
-               library list will be chosen as the starting point.
-
-          'prev=ADDRESS'
-               A hexadecimal number specifying the address of the
-               'struct link_map' immediately preceding the 'struct
-               link_map' specified by the 'start' argument.  If unset or
-               zero then the remote stub will expect that no 'struct
-               link_map' exists prior to the starting point.
-
-          Arguments that are not understood by the remote stub will be
-          silently ignored.
-
-     'qXfer:memory-map:read::OFFSET,LENGTH'
-          Access the target's "memory-map".  *Note Memory Map Format::.
-          The annex part of the generic 'qXfer' packet must be empty
-          (*note qXfer read::).
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:sdata:read::OFFSET,LENGTH'
-
-          Read contents of the extra collected static tracepoint marker
-          information.  The annex part of the generic 'qXfer' packet
-          must be empty (*note qXfer read::).  *Note Tracepoint Action
-          Lists: Tracepoint Actions.
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:siginfo:read::OFFSET,LENGTH'
-          Read contents of the extra signal information on the target
-          system.  The annex part of the generic 'qXfer' packet must be
-          empty (*note qXfer read::).
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:threads:read::OFFSET,LENGTH'
-          Access the list of threads on target.  *Note Thread List
-          Format::.  The annex part of the generic 'qXfer' packet must
-          be empty (*note qXfer read::).
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:traceframe-info:read::OFFSET,LENGTH'
-
-          Return a description of the current traceframe's contents.
-          *Note Traceframe Info Format::.  The annex part of the generic
-          'qXfer' packet must be empty (*note qXfer read::).
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:uib:read:PC:OFFSET,LENGTH'
-
-          Return the unwind information block for PC.  This packet is
-          used on OpenVMS/ia64 to ask the kernel unwind information.
-
-          This packet is not probed by default.
-
-     'qXfer:fdpic:read:ANNEX:OFFSET,LENGTH'
-          Read contents of 'loadmap's on the target system.  The annex,
-          either 'exec' or 'interp', specifies which 'loadmap',
-          executable 'loadmap' or interpreter 'loadmap' to read.
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-     'qXfer:osdata:read::OFFSET,LENGTH'
-          Access the target's "operating system information".  *Note
-          Operating System Information::.
-
-'qXfer:OBJECT:write:ANNEX:OFFSET:DATA...'
-     Write uninterpreted bytes into the target's special data area
-     identified by the keyword OBJECT, starting at OFFSET bytes into the
-     data.  The binary-encoded data (*note Binary Data::) to be written
-     is given by DATA....  The content and encoding of ANNEX is specific
-     to OBJECT; it can supply additional details about what data to
-     access.
-
-     Reply:
-     'NN'
-          NN (hex encoded) is the number of bytes written.  This may be
-          fewer bytes than supplied in the request.
-
-     'E00'
-          The request was malformed, or ANNEX was invalid.
-
-     'E NN'
-          The offset was invalid, or there was an error encountered
-          writing the data.  The NN part is a hex-encoded 'errno' value.
-
-     ''
-          An empty reply indicates the OBJECT string was not recognized
-          by the stub, or that the object does not support writing.
-
-     Here are the specific requests of this form defined so far.  All
-     the 'qXfer:OBJECT:write:...' requests use the same reply formats,
-     listed above.
-
-     'qXfer:siginfo:write::OFFSET:DATA...'
-          Write DATA to the extra signal information on the target
-          system.  The annex part of the generic 'qXfer' packet must be
-          empty (*note qXfer write::).
-
-          This packet is not probed by default; the remote stub must
-          request it, by supplying an appropriate 'qSupported' response
-          (*note qSupported::).
-
-'qXfer:OBJECT:OPERATION:...'
-     Requests of this form may be added in the future.  When a stub does
-     not recognize the OBJECT keyword, or its support for OBJECT does
-     not recognize the OPERATION keyword, the stub must respond with an
-     empty packet.
-
-'qAttached:PID'
-     Return an indication of whether the remote server attached to an
-     existing process or created a new process.  When the multiprocess
-     protocol extensions are supported (*note multiprocess
-     extensions::), PID is an integer in hexadecimal format identifying
-     the target process.  Otherwise, GDB will omit the PID field and the
-     query packet will be simplified as 'qAttached'.
-
-     This query is used, for example, to know whether the remote process
-     should be detached or killed when a GDB session is ended with the
-     'quit' command.
-
-     Reply:
-     '1'
-          The remote server attached to an existing process.
-     '0'
-          The remote server created a new process.
-     'E NN'
-          A badly formed request or an error was encountered.
-
-'Qbtrace:bts'
-     Enable branch tracing for the current thread using Branch Trace
-     Store.
-
-     Reply:
-     'OK'
-          Branch tracing has been enabled.
-     'E.errtext'
-          A badly formed request or an error was encountered.
-
-'Qbtrace:pt'
-     Enable branch tracing for the current thread using Intel Processor
-     Trace.
-
-     Reply:
-     'OK'
-          Branch tracing has been enabled.
-     'E.errtext'
-          A badly formed request or an error was encountered.
-
-'Qbtrace:off'
-     Disable branch tracing for the current thread.
-
-     Reply:
-     'OK'
-          Branch tracing has been disabled.
-     'E.errtext'
-          A badly formed request or an error was encountered.
-
-'Qbtrace-conf:bts:size=VALUE'
-     Set the requested ring buffer size for new threads that use the
-     btrace recording method in bts format.
-
-     Reply:
-     'OK'
-          The ring buffer size has been set.
-     'E.errtext'
-          A badly formed request or an error was encountered.
-
-'Qbtrace-conf:pt:size=VALUE'
-     Set the requested ring buffer size for new threads that use the
-     btrace recording method in pt format.
-
-     Reply:
-     'OK'
-          The ring buffer size has been set.
-     'E.errtext'
-          A badly formed request or an error was encountered.
-
-   ---------- Footnotes ----------
-
-   (1) The 'qP' and 'qL' packets predate these conventions, and have
-arguments without any terminator for the packet name; we suspect they
-are in widespread use in places that are difficult to upgrade.  The 'qC'
-packet has no arguments, but some existing stubs (e.g. RedBoot) are
-known to not check for the end of the packet.
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-7 ./gdb/doc/gdb.info-7
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-7	2020-03-07 02:11:38.000000000 +0000
+++ ./gdb/doc/gdb.info-7	2021-05-21 02:00:19.000000000 +0000
@@ -1,6 +1,6 @@
-This is gdb.info, produced by makeinfo version 6.3 from gdb.texinfo.
+This is gdb.info, produced by makeinfo version 6.5 from gdb.texinfo.
 
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -21,9 +21,9 @@ 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.1.90.20200307-git.
+Source-Level Debugger' for GDB (GDB) Version 10.2.90.20210521-git.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -37,6 +37,1463 @@ this GNU Manual.  Buying copies from GNU
 developing GNU and promoting software freedom."
 
 
+File: gdb.info,  Node: General Query Packets,  Next: Architecture-Specific Protocol Details,  Prev: Stop Reply Packets,  Up: Remote Protocol
+
+E.4 General Query Packets
+=========================
+
+Packets starting with 'q' are "general query packets"; packets starting
+with 'Q' are "general set packets".  General query and set packets are a
+semi-unified form for retrieving and sending information to and from the
+stub.
+
+   The initial letter of a query or set packet is followed by a name
+indicating what sort of thing the packet applies to.  For example, GDB
+may use a 'qSymbol' packet to exchange symbol definitions with the stub.
+These packet names follow some conventions:
+
+   * The name must not contain commas, colons or semicolons.
+   * Most GDB query and set packets have a leading upper case letter.
+   * The names of custom vendor packets should use a company prefix, in
+     lower case, followed by a period.  For example, packets designed at
+     the Acme Corporation might begin with 'qacme.foo' (for querying
+     foos) or 'Qacme.bar' (for setting bars).
+
+   The name of a query or set packet should be separated from any
+parameters by a ':'; the parameters themselves should be separated by
+',' or ';'.  Stubs must be careful to match the full packet name, and
+check for a separator or the end of the packet, in case two packet names
+share a common prefix.  New packets should not begin with 'qC', 'qP', or
+'qL'(1).
+
+   Like the descriptions of the other packets, each description here has
+a template showing the packet's overall syntax, followed by an
+explanation of the packet's meaning.  We include spaces in some of the
+templates for clarity; these are not part of the packet's syntax.  No
+GDB packet uses spaces to separate its components.
+
+   Here are the currently defined query and set packets:
+
+'QAgent:1'
+'QAgent:0'
+     Turn on or off the agent as a helper to perform some debugging
+     operations delegated from GDB (*note Control Agent::).
+
+'QAllow:OP:VAL...'
+     Specify which operations GDB expects to request of the target, as a
+     semicolon-separated list of operation name and value pairs.
+     Possible values for OP include 'WriteReg', 'WriteMem',
+     'InsertBreak', 'InsertTrace', 'InsertFastTrace', and 'Stop'.  VAL
+     is either 0, indicating that GDB will not request the operation, or
+     1, indicating that it may.  (The target can then use this to set up
+     its own internals optimally, for instance if the debugger never
+     expects to insert breakpoints, it may not need to install its own
+     trap handler.)
+
+'qC'
+     Return the current thread ID.
+
+     Reply:
+     'QC THREAD-ID'
+          Where THREAD-ID is a thread ID as documented in *note
+          thread-id syntax::.
+     '(anything else)'
+          Any other reply implies the old thread ID.
+
+'qCRC:ADDR,LENGTH'
+     Compute the CRC checksum of a block of memory using CRC-32 defined
+     in IEEE 802.3.  The CRC is computed byte at a time, taking the most
+     significant bit of each byte first.  The initial pattern code
+     '0xffffffff' is used to ensure leading zeros affect the CRC.
+
+     _Note:_ This is the same CRC used in validating separate debug
+     files (*note Debugging Information in Separate Files: Separate
+     Debug Files.).  However the algorithm is slightly different.  When
+     validating separate debug files, the CRC is computed taking the
+     _least_ significant bit of each byte first, and the final result is
+     inverted to detect trailing zeros.
+
+     Reply:
+     'E NN'
+          An error (such as memory fault)
+     'C CRC32'
+          The specified memory region's checksum is CRC32.
+
+'QDisableRandomization:VALUE'
+     Some target operating systems will randomize the virtual address
+     space of the inferior process as a security feature, but provide a
+     feature to disable such randomization, e.g. to allow for a more
+     deterministic debugging experience.  On such systems, this packet
+     with a VALUE of 1 directs the target to disable address space
+     randomization for processes subsequently started via 'vRun'
+     packets, while a packet with a VALUE of 0 tells the target to
+     enable address space randomization.
+
+     This packet is only available in extended mode (*note extended
+     mode::).
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+     'E NN'
+          An error occurred.  The error number NN is given as hex
+          digits.
+
+     ''
+          An empty reply indicates that 'QDisableRandomization' is not
+          supported by the stub.
+
+     This packet is not probed by default; the remote stub must request
+     it, by supplying an appropriate 'qSupported' response (*note
+     qSupported::).  This should only be done on targets that actually
+     support disabling address space randomization.
+
+'QStartupWithShell:VALUE'
+     On UNIX-like targets, it is possible to start the inferior using a
+     shell program.  This is the default behavior on both GDB and
+     'gdbserver' (*note set startup-with-shell::).  This packet is used
+     to inform 'gdbserver' whether it should start the inferior using a
+     shell or not.
+
+     If VALUE is '0', 'gdbserver' will not use a shell to start the
+     inferior.  If VALUE is '1', 'gdbserver' will use a shell to start
+     the inferior.  All other values are considered an error.
+
+     This packet is only available in extended mode (*note extended
+     mode::).
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+     'E NN'
+          An error occurred.  The error number NN is given as hex
+          digits.
+
+     This packet is not probed by default; the remote stub must request
+     it, by supplying an appropriate 'qSupported' response (*note
+     qSupported::).  This should only be done on targets that actually
+     support starting the inferior using a shell.
+
+     Use of this packet is controlled by the 'set startup-with-shell'
+     command; *note set startup-with-shell::.
+
+'QEnvironmentHexEncoded:HEX-VALUE'
+     On UNIX-like targets, it is possible to set environment variables
+     that will be passed to the inferior during the startup process.
+     This packet is used to inform 'gdbserver' of an environment
+     variable that has been defined by the user on GDB (*note set
+     environment::).
+
+     The packet is composed by HEX-VALUE, an hex encoded representation
+     of the NAME=VALUE format representing an environment variable.  The
+     name of the environment variable is represented by NAME, and the
+     value to be assigned to the environment variable is represented by
+     VALUE.  If the variable has no value (i.e., the value is 'null'),
+     then VALUE will not be present.
+
+     This packet is only available in extended mode (*note extended
+     mode::).
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+     This packet is not probed by default; the remote stub must request
+     it, by supplying an appropriate 'qSupported' response (*note
+     qSupported::).  This should only be done on targets that actually
+     support passing environment variables to the starting inferior.
+
+     This packet is related to the 'set environment' command; *note set
+     environment::.
+
+'QEnvironmentUnset:HEX-VALUE'
+     On UNIX-like targets, it is possible to unset environment variables
+     before starting the inferior in the remote target.  This packet is
+     used to inform 'gdbserver' of an environment variable that has been
+     unset by the user on GDB (*note unset environment::).
+
+     The packet is composed by HEX-VALUE, an hex encoded representation
+     of the name of the environment variable to be unset.
+
+     This packet is only available in extended mode (*note extended
+     mode::).
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+     This packet is not probed by default; the remote stub must request
+     it, by supplying an appropriate 'qSupported' response (*note
+     qSupported::).  This should only be done on targets that actually
+     support passing environment variables to the starting inferior.
+
+     This packet is related to the 'unset environment' command; *note
+     unset environment::.
+
+'QEnvironmentReset'
+     On UNIX-like targets, this packet is used to reset the state of
+     environment variables in the remote target before starting the
+     inferior.  In this context, reset means unsetting all environment
+     variables that were previously set by the user (i.e., were not
+     initially present in the environment).  It is sent to 'gdbserver'
+     before the 'QEnvironmentHexEncoded' (*note
+     QEnvironmentHexEncoded::) and the 'QEnvironmentUnset' (*note
+     QEnvironmentUnset::) packets.
+
+     This packet is only available in extended mode (*note extended
+     mode::).
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+     This packet is not probed by default; the remote stub must request
+     it, by supplying an appropriate 'qSupported' response (*note
+     qSupported::).  This should only be done on targets that actually
+     support passing environment variables to the starting inferior.
+
+'QSetWorkingDir:[DIRECTORY]'
+     This packet is used to inform the remote server of the intended
+     current working directory for programs that are going to be
+     executed.
+
+     The packet is composed by DIRECTORY, an hex encoded representation
+     of the directory that the remote inferior will use as its current
+     working directory.  If DIRECTORY is an empty string, the remote
+     server should reset the inferior's current working directory to its
+     original, empty value.
+
+     This packet is only available in extended mode (*note extended
+     mode::).
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+'qfThreadInfo'
+'qsThreadInfo'
+     Obtain a list of all active thread IDs from the target (OS). Since
+     there may be too many active threads to fit into one reply packet,
+     this query works iteratively: it may require more than one
+     query/reply sequence to obtain the entire list of threads.  The
+     first query of the sequence will be the 'qfThreadInfo' query;
+     subsequent queries in the sequence will be the 'qsThreadInfo'
+     query.
+
+     NOTE: This packet replaces the 'qL' query (see below).
+
+     Reply:
+     'm THREAD-ID'
+          A single thread ID
+     'm THREAD-ID,THREAD-ID...'
+          a comma-separated list of thread IDs
+     'l'
+          (lower case letter 'L') denotes end of list.
+
+     In response to each query, the target will reply with a list of one
+     or more thread IDs, separated by commas.  GDB will respond to each
+     reply with a request for more thread ids (using the 'qs' form of
+     the query), until the target responds with 'l' (lower-case ell, for
+     "last").  Refer to *note thread-id syntax::, for the format of the
+     THREAD-ID fields.
+
+     _Note: GDB will send the 'qfThreadInfo' query during the initial
+     connection with the remote target, and the very first thread ID
+     mentioned in the reply will be stopped by GDB in a subsequent
+     message.  Therefore, the stub should ensure that the first thread
+     ID in the 'qfThreadInfo' reply is suitable for being stopped by
+     GDB._
+
+'qGetTLSAddr:THREAD-ID,OFFSET,LM'
+     Fetch the address associated with thread local storage specified by
+     THREAD-ID, OFFSET, and LM.
+
+     THREAD-ID is the thread ID associated with the thread for which to
+     fetch the TLS address.  *Note thread-id syntax::.
+
+     OFFSET is the (big endian, hex encoded) offset associated with the
+     thread local variable.  (This offset is obtained from the debug
+     information associated with the variable.)
+
+     LM is the (big endian, hex encoded) OS/ABI-specific encoding of the
+     load module associated with the thread local storage.  For example,
+     a GNU/Linux system will pass the link map address of the shared
+     object associated with the thread local storage under
+     consideration.  Other operating environments may choose to
+     represent the load module differently, so the precise meaning of
+     this parameter will vary.
+
+     Reply:
+     'XX...'
+          Hex encoded (big endian) bytes representing the address of the
+          thread local storage requested.
+
+     'E NN'
+          An error occurred.  The error number NN is given as hex
+          digits.
+
+     ''
+          An empty reply indicates that 'qGetTLSAddr' is not supported
+          by the stub.
+
+'qGetTIBAddr:THREAD-ID'
+     Fetch address of the Windows OS specific Thread Information Block.
+
+     THREAD-ID is the thread ID associated with the thread.
+
+     Reply:
+     'XX...'
+          Hex encoded (big endian) bytes representing the linear address
+          of the thread information block.
+
+     'E NN'
+          An error occured.  This means that either the thread was not
+          found, or the address could not be retrieved.
+
+     ''
+          An empty reply indicates that 'qGetTIBAddr' is not supported
+          by the stub.
+
+'qL STARTFLAG THREADCOUNT NEXTTHREAD'
+     Obtain thread information from RTOS. Where: STARTFLAG (one hex
+     digit) is one to indicate the first query and zero to indicate a
+     subsequent query; THREADCOUNT (two hex digits) is the maximum
+     number of threads the response packet can contain; and NEXTTHREAD
+     (eight hex digits), for subsequent queries (STARTFLAG is zero), is
+     returned in the response as ARGTHREAD.
+
+     Don't use this packet; use the 'qfThreadInfo' query instead (see
+     above).
+
+     Reply:
+     'qM COUNT DONE ARGTHREAD THREAD...'
+          Where: COUNT (two hex digits) is the number of threads being
+          returned; DONE (one hex digit) is zero to indicate more
+          threads and one indicates no further threads; ARGTHREADID
+          (eight hex digits) is NEXTTHREAD from the request packet;
+          THREAD... is a sequence of thread IDs, THREADID (eight hex
+          digits), from the target.  See
+          'remote.c:parse_threadlist_response()'.
+
+'qOffsets'
+     Get section offsets that the target used when relocating the
+     downloaded image.
+
+     Reply:
+     'Text=XXX;Data=YYY[;Bss=ZZZ]'
+          Relocate the 'Text' section by XXX from its original address.
+          Relocate the 'Data' section by YYY from its original address.
+          If the object file format provides segment information (e.g.
+          ELF 'PT_LOAD' program headers), GDB will relocate entire
+          segments by the supplied offsets.
+
+          _Note: while a 'Bss' offset may be included in the response,
+          GDB ignores this and instead applies the 'Data' offset to the
+          'Bss' section._
+
+     'TextSeg=XXX[;DataSeg=YYY]'
+          Relocate the first segment of the object file, which
+          conventionally contains program code, to a starting address of
+          XXX.  If 'DataSeg' is specified, relocate the second segment,
+          which conventionally contains modifiable data, to a starting
+          address of YYY.  GDB will report an error if the object file
+          does not contain segment information, or does not contain at
+          least as many segments as mentioned in the reply.  Extra
+          segments are kept at fixed offsets relative to the last
+          relocated segment.
+
+'qP MODE THREAD-ID'
+     Returns information on THREAD-ID.  Where: MODE is a hex encoded 32
+     bit mode; THREAD-ID is a thread ID (*note thread-id syntax::).
+
+     Don't use this packet; use the 'qThreadExtraInfo' query instead
+     (see below).
+
+     Reply: see 'remote.c:remote_unpack_thread_info_response()'.
+
+'QNonStop:1'
+'QNonStop:0'
+     Enter non-stop ('QNonStop:1') or all-stop ('QNonStop:0') mode.
+     *Note Remote Non-Stop::, for more information.
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+     'E NN'
+          An error occurred.  The error number NN is given as hex
+          digits.
+
+     ''
+          An empty reply indicates that 'QNonStop' is not supported by
+          the stub.
+
+     This packet is not probed by default; the remote stub must request
+     it, by supplying an appropriate 'qSupported' response (*note
+     qSupported::).  Use of this packet is controlled by the 'set
+     non-stop' command; *note Non-Stop Mode::.
+
+'QCatchSyscalls:1 [;SYSNO]...'
+'QCatchSyscalls:0'
+     Enable ('QCatchSyscalls:1') or disable ('QCatchSyscalls:0')
+     catching syscalls from the inferior process.
+
+     For 'QCatchSyscalls:1', each listed syscall SYSNO (encoded in hex)
+     should be reported to GDB.  If no syscall SYSNO is listed, every
+     system call should be reported.
+
+     Note that if a syscall not in the list is reported, GDB will still
+     filter the event according to its own list from all corresponding
+     'catch syscall' commands.  However, it is more efficient to only
+     report the requested syscalls.
+
+     Multiple 'QCatchSyscalls:1' packets do not combine; any earlier
+     'QCatchSyscalls:1' list is completely replaced by the new list.
+
+     If the inferior process execs, the state of 'QCatchSyscalls' is
+     kept for the new process too.  On targets where exec may affect
+     syscall numbers, for example with exec between 32 and 64-bit
+     processes, the client should send a new packet with the new syscall
+     list.
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+     'E NN'
+          An error occurred.  NN are hex digits.
+
+     ''
+          An empty reply indicates that 'QCatchSyscalls' is not
+          supported by the stub.
+
+     Use of this packet is controlled by the 'set remote catch-syscalls'
+     command (*note set remote catch-syscalls: Remote Configuration.).
+     This packet is not probed by default; the remote stub must request
+     it, by supplying an appropriate 'qSupported' response (*note
+     qSupported::).
+
+'QPassSignals: SIGNAL [;SIGNAL]...'
+     Each listed SIGNAL should be passed directly to the inferior
+     process.  Signals are numbered identically to continue packets and
+     stop replies (*note Stop Reply Packets::).  Each SIGNAL list item
+     should be strictly greater than the previous item.  These signals
+     do not need to stop the inferior, or be reported to GDB.  All other
+     signals should be reported to GDB.  Multiple 'QPassSignals' packets
+     do not combine; any earlier 'QPassSignals' list is completely
+     replaced by the new list.  This packet improves performance when
+     using 'handle SIGNAL nostop noprint pass'.
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+     'E NN'
+          An error occurred.  The error number NN is given as hex
+          digits.
+
+     ''
+          An empty reply indicates that 'QPassSignals' is not supported
+          by the stub.
+
+     Use of this packet is controlled by the 'set remote pass-signals'
+     command (*note set remote pass-signals: Remote Configuration.).
+     This packet is not probed by default; the remote stub must request
+     it, by supplying an appropriate 'qSupported' response (*note
+     qSupported::).
+
+'QProgramSignals: SIGNAL [;SIGNAL]...'
+     Each listed SIGNAL may be delivered to the inferior process.
+     Others should be silently discarded.
+
+     In some cases, the remote stub may need to decide whether to
+     deliver a signal to the program or not without GDB involvement.
+     One example of that is while detaching -- the program's threads may
+     have stopped for signals that haven't yet had a chance of being
+     reported to GDB, and so the remote stub can use the signal list
+     specified by this packet to know whether to deliver or ignore those
+     pending signals.
+
+     This does not influence whether to deliver a signal as requested by
+     a resumption packet (*note vCont packet::).
+
+     Signals are numbered identically to continue packets and stop
+     replies (*note Stop Reply Packets::).  Each SIGNAL list item should
+     be strictly greater than the previous item.  Multiple
+     'QProgramSignals' packets do not combine; any earlier
+     'QProgramSignals' list is completely replaced by the new list.
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+     'E NN'
+          An error occurred.  The error number NN is given as hex
+          digits.
+
+     ''
+          An empty reply indicates that 'QProgramSignals' is not
+          supported by the stub.
+
+     Use of this packet is controlled by the 'set remote
+     program-signals' command (*note set remote program-signals: Remote
+     Configuration.).  This packet is not probed by default; the remote
+     stub must request it, by supplying an appropriate 'qSupported'
+     response (*note qSupported::).
+
+'QThreadEvents:1'
+'QThreadEvents:0'
+
+     Enable ('QThreadEvents:1') or disable ('QThreadEvents:0') reporting
+     of thread create and exit events.  *Note thread create event::, for
+     the reply specifications.  For example, this is used in non-stop
+     mode when GDB stops a set of threads and synchronously waits for
+     the their corresponding stop replies.  Without exit events, if one
+     of the threads exits, GDB would hang forever not knowing that it
+     should no longer expect a stop for that same thread.  GDB does not
+     enable this feature unless the stub reports that it supports it by
+     including 'QThreadEvents+' in its 'qSupported' reply.
+
+     Reply:
+     'OK'
+          The request succeeded.
+
+     'E NN'
+          An error occurred.  The error number NN is given as hex
+          digits.
+
+     ''
+          An empty reply indicates that 'QThreadEvents' is not supported
+          by the stub.
+
+     Use of this packet is controlled by the 'set remote thread-events'
+     command (*note set remote thread-events: Remote Configuration.).
+
+'qRcmd,COMMAND'
+     COMMAND (hex encoded) is passed to the local interpreter for
+     execution.  Invalid commands should be reported using the output
+     string.  Before the final result packet, the target may also
+     respond with a number of intermediate 'OOUTPUT' console output
+     packets.  _Implementors should note that providing access to a
+     stubs's interpreter may have security implications_.
+
+     Reply:
+     'OK'
+          A command response with no output.
+     'OUTPUT'
+          A command response with the hex encoded output string OUTPUT.
+     'E NN'
+          Indicate a badly formed request.
+     ''
+          An empty reply indicates that 'qRcmd' is not recognized.
+
+     (Note that the 'qRcmd' packet's name is separated from the command
+     by a ',', not a ':', contrary to the naming conventions above.
+     Please don't use this packet as a model for new packets.)
+
+'qSearch:memory:ADDRESS;LENGTH;SEARCH-PATTERN'
+     Search LENGTH bytes at ADDRESS for SEARCH-PATTERN.  Both ADDRESS
+     and LENGTH are encoded in hex; SEARCH-PATTERN is a sequence of
+     bytes, also hex encoded.
+
+     Reply:
+     '0'
+          The pattern was not found.
+     '1,address'
+          The pattern was found at ADDRESS.
+     'E NN'
+          A badly formed request or an error was encountered while
+          searching memory.
+     ''
+          An empty reply indicates that 'qSearch:memory' is not
+          recognized.
+
+'QStartNoAckMode'
+     Request that the remote stub disable the normal '+'/'-' protocol
+     acknowledgments (*note Packet Acknowledgment::).
+
+     Reply:
+     'OK'
+          The stub has switched to no-acknowledgment mode.  GDB
+          acknowledges this response, but neither the stub nor GDB shall
+          send or expect further '+'/'-' acknowledgments in the current
+          connection.
+     ''
+          An empty reply indicates that the stub does not support
+          no-acknowledgment mode.
+
+'qSupported [:GDBFEATURE [;GDBFEATURE]... ]'
+     Tell the remote stub about features supported by GDB, and query the
+     stub for features it supports.  This packet allows GDB and the
+     remote stub to take advantage of each others' features.
+     'qSupported' also consolidates multiple feature probes at startup,
+     to improve GDB performance--a single larger packet performs better
+     than multiple smaller probe packets on high-latency links.  Some
+     features may enable behavior which must not be on by default, e.g.
+     because it would confuse older clients or stubs.  Other features
+     may describe packets which could be automatically probed for, but
+     are not.  These features must be reported before GDB will use them.
+     This "default unsupported" behavior is not appropriate for all
+     packets, but it helps to keep the initial connection time under
+     control with new versions of GDB which support increasing numbers
+     of packets.
+
+     Reply:
+     'STUBFEATURE [;STUBFEATURE]...'
+          The stub supports or does not support each returned
+          STUBFEATURE, depending on the form of each STUBFEATURE (see
+          below for the possible forms).
+     ''
+          An empty reply indicates that 'qSupported' is not recognized,
+          or that no features needed to be reported to GDB.
+
+     The allowed forms for each feature (either a GDBFEATURE in the
+     'qSupported' packet, or a STUBFEATURE in the response) are:
+
+     'NAME=VALUE'
+          The remote protocol feature NAME is supported, and associated
+          with the specified VALUE.  The format of VALUE depends on the
+          feature, but it must not include a semicolon.
+     'NAME+'
+          The remote protocol feature NAME is supported, and does not
+          need an associated value.
+     'NAME-'
+          The remote protocol feature NAME is not supported.
+     'NAME?'
+          The remote protocol feature NAME may be supported, and GDB
+          should auto-detect support in some other way when it is
+          needed.  This form will not be used for GDBFEATURE
+          notifications, but may be used for STUBFEATURE responses.
+
+     Whenever the stub receives a 'qSupported' request, the supplied set
+     of GDB features should override any previous request.  This allows
+     GDB to put the stub in a known state, even if the stub had
+     previously been communicating with a different version of GDB.
+
+     The following values of GDBFEATURE (for the packet sent by GDB) are
+     defined:
+
+     'multiprocess'
+          This feature indicates whether GDB supports multiprocess
+          extensions to the remote protocol.  GDB does not use such
+          extensions unless the stub also reports that it supports them
+          by including 'multiprocess+' in its 'qSupported' reply.  *Note
+          multiprocess extensions::, for details.
+
+     'xmlRegisters'
+          This feature indicates that GDB supports the XML target
+          description.  If the stub sees 'xmlRegisters=' with target
+          specific strings separated by a comma, it will report register
+          description.
+
+     'qRelocInsn'
+          This feature indicates whether GDB supports the 'qRelocInsn'
+          packet (*note Relocate instruction reply packet: Tracepoint
+          Packets.).
+
+     'swbreak'
+          This feature indicates whether GDB supports the swbreak stop
+          reason in stop replies.  *Note swbreak stop reason::, for
+          details.
+
+     'hwbreak'
+          This feature indicates whether GDB supports the hwbreak stop
+          reason in stop replies.  *Note swbreak stop reason::, for
+          details.
+
+     'fork-events'
+          This feature indicates whether GDB supports fork event
+          extensions to the remote protocol.  GDB does not use such
+          extensions unless the stub also reports that it supports them
+          by including 'fork-events+' in its 'qSupported' reply.
+
+     'vfork-events'
+          This feature indicates whether GDB supports vfork event
+          extensions to the remote protocol.  GDB does not use such
+          extensions unless the stub also reports that it supports them
+          by including 'vfork-events+' in its 'qSupported' reply.
+
+     'exec-events'
+          This feature indicates whether GDB supports exec event
+          extensions to the remote protocol.  GDB does not use such
+          extensions unless the stub also reports that it supports them
+          by including 'exec-events+' in its 'qSupported' reply.
+
+     'vContSupported'
+          This feature indicates whether GDB wants to know the supported
+          actions in the reply to 'vCont?' packet.
+
+     Stubs should ignore any unknown values for GDBFEATURE.  Any GDB
+     which sends a 'qSupported' packet supports receiving packets of
+     unlimited length (earlier versions of GDB may reject overly long
+     responses).  Additional values for GDBFEATURE may be defined in the
+     future to let the stub take advantage of new features in GDB, e.g.
+     incompatible improvements in the remote protocol--the
+     'multiprocess' feature is an example of such a feature.  The stub's
+     reply should be independent of the GDBFEATURE entries sent by GDB;
+     first GDB describes all the features it supports, and then the stub
+     replies with all the features it supports.
+
+     Similarly, GDB will silently ignore unrecognized stub feature
+     responses, as long as each response uses one of the standard forms.
+
+     Some features are flags.  A stub which supports a flag feature
+     should respond with a '+' form response.  Other features require
+     values, and the stub should respond with an '=' form response.
+
+     Each feature has a default value, which GDB will use if
+     'qSupported' is not available or if the feature is not mentioned in
+     the 'qSupported' response.  The default values are fixed; a stub is
+     free to omit any feature responses that match the defaults.
+
+     Not all features can be probed, but for those which can, the
+     probing mechanism is useful: in some cases, a stub's internal
+     architecture may not allow the protocol layer to know some
+     information about the underlying target in advance.  This is
+     especially common in stubs which may be configured for multiple
+     targets.
+
+     These are the currently defined stub features and their properties:
+
+     Feature Name              Value          Default   Probe
+                               Required                 Allowed
+                                                        
+     'PacketSize'              Yes            '-'       No
+                                                        
+     'qXfer:auxv:read'         No             '-'       Yes
+                                                        
+     'qXfer:btrace:read'       No             '-'       Yes
+                                                        
+     'qXfer:btrace-conf:read'  No             '-'       Yes
+                                                        
+     'qXfer:exec-file:read'    No             '-'       Yes
+                                                        
+     'qXfer:features:read'     No             '-'       Yes
+                                                        
+     'qXfer:libraries:read'    No             '-'       Yes
+                                                        
+     'qXfer:libraries-svr4:read'No            '-'       Yes
+                                                        
+     'augmented-libraries-svr4-read'No        '-'       No
+                                                        
+     'qXfer:memory-map:read'   No             '-'       Yes
+                                                        
+     'qXfer:sdata:read'        No             '-'       Yes
+                                                        
+     'qXfer:siginfo:read'      No             '-'       Yes
+                                                        
+     'qXfer:siginfo:write'     No             '-'       Yes
+                                                        
+     'qXfer:threads:read'      No             '-'       Yes
+                                                        
+     'qXfer:traceframe-info:read'No           '-'       Yes
+                                                        
+     'qXfer:uib:read'          No             '-'       Yes
+                                                        
+     'qXfer:fdpic:read'        No             '-'       Yes
+                                                        
+     'Qbtrace:off'             Yes            '-'       Yes
+                                                        
+     'Qbtrace:bts'             Yes            '-'       Yes
+                                                        
+     'Qbtrace:pt'              Yes            '-'       Yes
+                                                        
+     'Qbtrace-conf:bts:size'   Yes            '-'       Yes
+                                                        
+     'Qbtrace-conf:pt:size'    Yes            '-'       Yes
+                                                        
+     'QNonStop'                No             '-'       Yes
+                                                        
+     'QCatchSyscalls'          No             '-'       Yes
+                                                        
+     'QPassSignals'            No             '-'       Yes
+                                                        
+     'QStartNoAckMode'         No             '-'       Yes
+                                                        
+     'multiprocess'            No             '-'       No
+                                                        
+     'ConditionalBreakpoints'  No             '-'       No
+                                                        
+     'ConditionalTracepoints'  No             '-'       No
+                                                        
+     'ReverseContinue'         No             '-'       No
+                                                        
+     'ReverseStep'             No             '-'       No
+                                                        
+     'TracepointSource'        No             '-'       No
+                                                        
+     'QAgent'                  No             '-'       No
+                                                        
+     'QAllow'                  No             '-'       No
+                                                        
+     'QDisableRandomization'   No             '-'       No
+                                                        
+     'EnableDisableTracepoints'No             '-'       No
+                                                        
+     'QTBuffer:size'           No             '-'       No
+                                                        
+     'tracenz'                 No             '-'       No
+                                                        
+     'BreakpointCommands'      No             '-'       No
+                                                        
+     'swbreak'                 No             '-'       No
+                                                        
+     'hwbreak'                 No             '-'       No
+                                                        
+     'fork-events'             No             '-'       No
+                                                        
+     'vfork-events'            No             '-'       No
+                                                        
+     'exec-events'             No             '-'       No
+                                                        
+     'QThreadEvents'           No             '-'       No
+                                                        
+     'no-resumed'              No             '-'       No
+                                                        
+
+     These are the currently defined stub features, in more detail:
+
+     'PacketSize=BYTES'
+          The remote stub can accept packets up to at least BYTES in
+          length.  GDB will send packets up to this size for bulk
+          transfers, and will never send larger packets.  This is a
+          limit on the data characters in the packet, including the
+          frame and checksum.  There is no trailing NUL byte in a remote
+          protocol packet; if the stub stores packets in a
+          NUL-terminated format, it should allow an extra byte in its
+          buffer for the NUL. If this stub feature is not supported, GDB
+          guesses based on the size of the 'g' packet response.
+
+     'qXfer:auxv:read'
+          The remote stub understands the 'qXfer:auxv:read' packet
+          (*note qXfer auxiliary vector read::).
+
+     'qXfer:btrace:read'
+          The remote stub understands the 'qXfer:btrace:read' packet
+          (*note qXfer btrace read::).
+
+     'qXfer:btrace-conf:read'
+          The remote stub understands the 'qXfer:btrace-conf:read'
+          packet (*note qXfer btrace-conf read::).
+
+     'qXfer:exec-file:read'
+          The remote stub understands the 'qXfer:exec-file:read' packet
+          (*note qXfer executable filename read::).
+
+     'qXfer:features:read'
+          The remote stub understands the 'qXfer:features:read' packet
+          (*note qXfer target description read::).
+
+     'qXfer:libraries:read'
+          The remote stub understands the 'qXfer:libraries:read' packet
+          (*note qXfer library list read::).
+
+     'qXfer:libraries-svr4:read'
+          The remote stub understands the 'qXfer:libraries-svr4:read'
+          packet (*note qXfer svr4 library list read::).
+
+     'augmented-libraries-svr4-read'
+          The remote stub understands the augmented form of the
+          'qXfer:libraries-svr4:read' packet (*note qXfer svr4 library
+          list read::).
+
+     'qXfer:memory-map:read'
+          The remote stub understands the 'qXfer:memory-map:read' packet
+          (*note qXfer memory map read::).
+
+     'qXfer:sdata:read'
+          The remote stub understands the 'qXfer:sdata:read' packet
+          (*note qXfer sdata read::).
+
+     'qXfer:siginfo:read'
+          The remote stub understands the 'qXfer:siginfo:read' packet
+          (*note qXfer siginfo read::).
+
+     'qXfer:siginfo:write'
+          The remote stub understands the 'qXfer:siginfo:write' packet
+          (*note qXfer siginfo write::).
+
+     'qXfer:threads:read'
+          The remote stub understands the 'qXfer:threads:read' packet
+          (*note qXfer threads read::).
+
+     'qXfer:traceframe-info:read'
+          The remote stub understands the 'qXfer:traceframe-info:read'
+          packet (*note qXfer traceframe info read::).
+
+     'qXfer:uib:read'
+          The remote stub understands the 'qXfer:uib:read' packet (*note
+          qXfer unwind info block::).
+
+     'qXfer:fdpic:read'
+          The remote stub understands the 'qXfer:fdpic:read' packet
+          (*note qXfer fdpic loadmap read::).
+
+     'QNonStop'
+          The remote stub understands the 'QNonStop' packet (*note
+          QNonStop::).
+
+     'QCatchSyscalls'
+          The remote stub understands the 'QCatchSyscalls' packet (*note
+          QCatchSyscalls::).
+
+     'QPassSignals'
+          The remote stub understands the 'QPassSignals' packet (*note
+          QPassSignals::).
+
+     'QStartNoAckMode'
+          The remote stub understands the 'QStartNoAckMode' packet and
+          prefers to operate in no-acknowledgment mode.  *Note Packet
+          Acknowledgment::.
+
+     'multiprocess'
+          The remote stub understands the multiprocess extensions to the
+          remote protocol syntax.  The multiprocess extensions affect
+          the syntax of thread IDs in both packets and replies (*note
+          thread-id syntax::), and add process IDs to the 'D' packet and
+          'W' and 'X' replies.  Note that reporting this feature
+          indicates support for the syntactic extensions only, not that
+          the stub necessarily supports debugging of more than one
+          process at a time.  The stub must not use multiprocess
+          extensions in packet replies unless GDB has also indicated it
+          supports them in its 'qSupported' request.
+
+     'qXfer:osdata:read'
+          The remote stub understands the 'qXfer:osdata:read' packet
+          ((*note qXfer osdata read::).
+
+     'ConditionalBreakpoints'
+          The target accepts and implements evaluation of conditional
+          expressions defined for breakpoints.  The target will only
+          report breakpoint triggers when such conditions are true
+          (*note Break Conditions: Conditions.).
+
+     'ConditionalTracepoints'
+          The remote stub accepts and implements conditional expressions
+          defined for tracepoints (*note Tracepoint Conditions::).
+
+     'ReverseContinue'
+          The remote stub accepts and implements the reverse continue
+          packet (*note bc::).
+
+     'ReverseStep'
+          The remote stub accepts and implements the reverse step packet
+          (*note bs::).
+
+     'TracepointSource'
+          The remote stub understands the 'QTDPsrc' packet that supplies
+          the source form of tracepoint definitions.
+
+     'QAgent'
+          The remote stub understands the 'QAgent' packet.
+
+     'QAllow'
+          The remote stub understands the 'QAllow' packet.
+
+     'QDisableRandomization'
+          The remote stub understands the 'QDisableRandomization'
+          packet.
+
+     'StaticTracepoint'
+          The remote stub supports static tracepoints.
+
+     'InstallInTrace'
+          The remote stub supports installing tracepoint in tracing.
+
+     'EnableDisableTracepoints'
+          The remote stub supports the 'QTEnable' (*note QTEnable::) and
+          'QTDisable' (*note QTDisable::) packets that allow tracepoints
+          to be enabled and disabled while a trace experiment is
+          running.
+
+     'QTBuffer:size'
+          The remote stub supports the 'QTBuffer:size' (*note
+          QTBuffer-size::) packet that allows to change the size of the
+          trace buffer.
+
+     'tracenz'
+          The remote stub supports the 'tracenz' bytecode for collecting
+          strings.  See *note Bytecode Descriptions:: for details about
+          the bytecode.
+
+     'BreakpointCommands'
+          The remote stub supports running a breakpoint's command list
+          itself, rather than reporting the hit to GDB.
+
+     'Qbtrace:off'
+          The remote stub understands the 'Qbtrace:off' packet.
+
+     'Qbtrace:bts'
+          The remote stub understands the 'Qbtrace:bts' packet.
+
+     'Qbtrace:pt'
+          The remote stub understands the 'Qbtrace:pt' packet.
+
+     'Qbtrace-conf:bts:size'
+          The remote stub understands the 'Qbtrace-conf:bts:size'
+          packet.
+
+     'Qbtrace-conf:pt:size'
+          The remote stub understands the 'Qbtrace-conf:pt:size' packet.
+
+     'swbreak'
+          The remote stub reports the 'swbreak' stop reason for memory
+          breakpoints.
+
+     'hwbreak'
+          The remote stub reports the 'hwbreak' stop reason for hardware
+          breakpoints.
+
+     'fork-events'
+          The remote stub reports the 'fork' stop reason for fork
+          events.
+
+     'vfork-events'
+          The remote stub reports the 'vfork' stop reason for vfork
+          events and vforkdone events.
+
+     'exec-events'
+          The remote stub reports the 'exec' stop reason for exec
+          events.
+
+     'vContSupported'
+          The remote stub reports the supported actions in the reply to
+          'vCont?' packet.
+
+     'QThreadEvents'
+          The remote stub understands the 'QThreadEvents' packet.
+
+     'no-resumed'
+          The remote stub reports the 'N' stop reply.
+
+'qSymbol::'
+     Notify the target that GDB is prepared to serve symbol lookup
+     requests.  Accept requests from the target for the values of
+     symbols.
+
+     Reply:
+     'OK'
+          The target does not need to look up any (more) symbols.
+     'qSymbol:SYM_NAME'
+          The target requests the value of symbol SYM_NAME (hex
+          encoded).  GDB may provide the value by using the
+          'qSymbol:SYM_VALUE:SYM_NAME' message, described below.
+
+'qSymbol:SYM_VALUE:SYM_NAME'
+     Set the value of SYM_NAME to SYM_VALUE.
+
+     SYM_NAME (hex encoded) is the name of a symbol whose value the
+     target has previously requested.
+
+     SYM_VALUE (hex) is the value for symbol SYM_NAME.  If GDB cannot
+     supply a value for SYM_NAME, then this field will be empty.
+
+     Reply:
+     'OK'
+          The target does not need to look up any (more) symbols.
+     'qSymbol:SYM_NAME'
+          The target requests the value of a new symbol SYM_NAME (hex
+          encoded).  GDB will continue to supply the values of symbols
+          (if available), until the target ceases to request them.
+
+'qTBuffer'
+'QTBuffer'
+'QTDisconnected'
+'QTDP'
+'QTDPsrc'
+'QTDV'
+'qTfP'
+'qTfV'
+'QTFrame'
+'qTMinFTPILen'
+
+     *Note Tracepoint Packets::.
+
+'qThreadExtraInfo,THREAD-ID'
+     Obtain from the target OS a printable string description of thread
+     attributes for the thread THREAD-ID; see *note thread-id syntax::,
+     for the forms of THREAD-ID.  This string may contain anything that
+     the target OS thinks is interesting for GDB to tell the user about
+     the thread.  The string is displayed in GDB's 'info threads'
+     display.  Some examples of possible thread extra info strings are
+     'Runnable', or 'Blocked on Mutex'.
+
+     Reply:
+     'XX...'
+          Where 'XX...' is a hex encoding of ASCII data, comprising the
+          printable string containing the extra information about the
+          thread's attributes.
+
+     (Note that the 'qThreadExtraInfo' packet's name is separated from
+     the command by a ',', not a ':', contrary to the naming conventions
+     above.  Please don't use this packet as a model for new packets.)
+
+'QTNotes'
+'qTP'
+'QTSave'
+'qTsP'
+'qTsV'
+'QTStart'
+'QTStop'
+'QTEnable'
+'QTDisable'
+'QTinit'
+'QTro'
+'qTStatus'
+'qTV'
+'qTfSTM'
+'qTsSTM'
+'qTSTMat'
+     *Note Tracepoint Packets::.
+
+'qXfer:OBJECT:read:ANNEX:OFFSET,LENGTH'
+     Read uninterpreted bytes from the target's special data area
+     identified by the keyword OBJECT.  Request LENGTH bytes starting at
+     OFFSET bytes into the data.  The content and encoding of ANNEX is
+     specific to OBJECT; it can supply additional details about what
+     data to access.
+
+     Reply:
+     'm DATA'
+          Data DATA (*note Binary Data::) has been read from the target.
+          There may be more data at a higher address (although it is
+          permitted to return 'm' even for the last valid block of data,
+          as long as at least one byte of data was read).  It is
+          possible for DATA to have fewer bytes than the LENGTH in the
+          request.
+
+     'l DATA'
+          Data DATA (*note Binary Data::) has been read from the target.
+          There is no more data to be read.  It is possible for DATA to
+          have fewer bytes than the LENGTH in the request.
+
+     'l'
+          The OFFSET in the request is at the end of the data.  There is
+          no more data to be read.
+
+     'E00'
+          The request was malformed, or ANNEX was invalid.
+
+     'E NN'
+          The offset was invalid, or there was an error encountered
+          reading the data.  The NN part is a hex-encoded 'errno' value.
+
+     ''
+          An empty reply indicates the OBJECT string was not recognized
+          by the stub, or that the object does not support reading.
+
+     Here are the specific requests of this form defined so far.  All
+     the 'qXfer:OBJECT:read:...' requests use the same reply formats,
+     listed above.
+
+     'qXfer:auxv:read::OFFSET,LENGTH'
+          Access the target's "auxiliary vector".  *Note auxiliary
+          vector: OS Information.  Note ANNEX must be empty.
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:btrace:read:ANNEX:OFFSET,LENGTH'
+
+          Return a description of the current branch trace.  *Note
+          Branch Trace Format::.  The annex part of the generic 'qXfer'
+          packet may have one of the following values:
+
+          'all'
+               Returns all available branch trace.
+
+          'new'
+               Returns all available branch trace if the branch trace
+               changed since the last read request.
+
+          'delta'
+               Returns the new branch trace since the last read request.
+               Adds a new block to the end of the trace that begins at
+               zero and ends at the source location of the first branch
+               in the trace buffer.  This extra block is used to stitch
+               traces together.
+
+               If the trace buffer overflowed, returns an error
+               indicating the overflow.
+
+          This packet is not probed by default; the remote stub must
+          request it by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:btrace-conf:read::OFFSET,LENGTH'
+
+          Return a description of the current branch trace
+          configuration.  *Note Branch Trace Configuration Format::.
+
+          This packet is not probed by default; the remote stub must
+          request it by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:exec-file:read:ANNEX:OFFSET,LENGTH'
+          Return the full absolute name of the file that was executed to
+          create a process running on the remote system.  The annex
+          specifies the numeric process ID of the process to query,
+          encoded as a hexadecimal number.  If the annex part is empty
+          the remote stub should return the filename corresponding to
+          the currently executing process.
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:features:read:ANNEX:OFFSET,LENGTH'
+          Access the "target description".  *Note Target Descriptions::.
+          The annex specifies which XML document to access.  The main
+          description is always loaded from the 'target.xml' annex.
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:libraries:read:ANNEX:OFFSET,LENGTH'
+          Access the target's list of loaded libraries.  *Note Library
+          List Format::.  The annex part of the generic 'qXfer' packet
+          must be empty (*note qXfer read::).
+
+          Targets which maintain a list of libraries in the program's
+          memory do not need to implement this packet; it is designed
+          for platforms where the operating system manages the list of
+          loaded libraries.
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:libraries-svr4:read:ANNEX:OFFSET,LENGTH'
+          Access the target's list of loaded libraries when the target
+          is an SVR4 platform.  *Note Library List Format for SVR4
+          Targets::.  The annex part of the generic 'qXfer' packet must
+          be empty unless the remote stub indicated it supports the
+          augmented form of this packet by supplying an appropriate
+          'qSupported' response (*note qXfer read::, *note
+          qSupported::).
+
+          This packet is optional for better performance on SVR4
+          targets.  GDB uses memory read packets to read the SVR4
+          library list otherwise.
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+          If the remote stub indicates it supports the augmented form of
+          this packet then the annex part of the generic 'qXfer' packet
+          may contain a semicolon-separated list of 'NAME=VALUE'
+          arguments.  The currently supported arguments are:
+
+          'start=ADDRESS'
+               A hexadecimal number specifying the address of the
+               'struct link_map' to start reading the library list from.
+               If unset or zero then the first 'struct link_map' in the
+               library list will be chosen as the starting point.
+
+          'prev=ADDRESS'
+               A hexadecimal number specifying the address of the
+               'struct link_map' immediately preceding the 'struct
+               link_map' specified by the 'start' argument.  If unset or
+               zero then the remote stub will expect that no 'struct
+               link_map' exists prior to the starting point.
+
+          Arguments that are not understood by the remote stub will be
+          silently ignored.
+
+     'qXfer:memory-map:read::OFFSET,LENGTH'
+          Access the target's "memory-map".  *Note Memory Map Format::.
+          The annex part of the generic 'qXfer' packet must be empty
+          (*note qXfer read::).
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:sdata:read::OFFSET,LENGTH'
+
+          Read contents of the extra collected static tracepoint marker
+          information.  The annex part of the generic 'qXfer' packet
+          must be empty (*note qXfer read::).  *Note Tracepoint Action
+          Lists: Tracepoint Actions.
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:siginfo:read::OFFSET,LENGTH'
+          Read contents of the extra signal information on the target
+          system.  The annex part of the generic 'qXfer' packet must be
+          empty (*note qXfer read::).
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:threads:read::OFFSET,LENGTH'
+          Access the list of threads on target.  *Note Thread List
+          Format::.  The annex part of the generic 'qXfer' packet must
+          be empty (*note qXfer read::).
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:traceframe-info:read::OFFSET,LENGTH'
+
+          Return a description of the current traceframe's contents.
+          *Note Traceframe Info Format::.  The annex part of the generic
+          'qXfer' packet must be empty (*note qXfer read::).
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:uib:read:PC:OFFSET,LENGTH'
+
+          Return the unwind information block for PC.  This packet is
+          used on OpenVMS/ia64 to ask the kernel unwind information.
+
+          This packet is not probed by default.
+
+     'qXfer:fdpic:read:ANNEX:OFFSET,LENGTH'
+          Read contents of 'loadmap's on the target system.  The annex,
+          either 'exec' or 'interp', specifies which 'loadmap',
+          executable 'loadmap' or interpreter 'loadmap' to read.
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+     'qXfer:osdata:read::OFFSET,LENGTH'
+          Access the target's "operating system information".  *Note
+          Operating System Information::.
+
+'qXfer:OBJECT:write:ANNEX:OFFSET:DATA...'
+     Write uninterpreted bytes into the target's special data area
+     identified by the keyword OBJECT, starting at OFFSET bytes into the
+     data.  The binary-encoded data (*note Binary Data::) to be written
+     is given by DATA....  The content and encoding of ANNEX is specific
+     to OBJECT; it can supply additional details about what data to
+     access.
+
+     Reply:
+     'NN'
+          NN (hex encoded) is the number of bytes written.  This may be
+          fewer bytes than supplied in the request.
+
+     'E00'
+          The request was malformed, or ANNEX was invalid.
+
+     'E NN'
+          The offset was invalid, or there was an error encountered
+          writing the data.  The NN part is a hex-encoded 'errno' value.
+
+     ''
+          An empty reply indicates the OBJECT string was not recognized
+          by the stub, or that the object does not support writing.
+
+     Here are the specific requests of this form defined so far.  All
+     the 'qXfer:OBJECT:write:...' requests use the same reply formats,
+     listed above.
+
+     'qXfer:siginfo:write::OFFSET:DATA...'
+          Write DATA to the extra signal information on the target
+          system.  The annex part of the generic 'qXfer' packet must be
+          empty (*note qXfer write::).
+
+          This packet is not probed by default; the remote stub must
+          request it, by supplying an appropriate 'qSupported' response
+          (*note qSupported::).
+
+'qXfer:OBJECT:OPERATION:...'
+     Requests of this form may be added in the future.  When a stub does
+     not recognize the OBJECT keyword, or its support for OBJECT does
+     not recognize the OPERATION keyword, the stub must respond with an
+     empty packet.
+
+'qAttached:PID'
+     Return an indication of whether the remote server attached to an
+     existing process or created a new process.  When the multiprocess
+     protocol extensions are supported (*note multiprocess
+     extensions::), PID is an integer in hexadecimal format identifying
+     the target process.  Otherwise, GDB will omit the PID field and the
+     query packet will be simplified as 'qAttached'.
+
+     This query is used, for example, to know whether the remote process
+     should be detached or killed when a GDB session is ended with the
+     'quit' command.
+
+     Reply:
+     '1'
+          The remote server attached to an existing process.
+     '0'
+          The remote server created a new process.
+     'E NN'
+          A badly formed request or an error was encountered.
+
+'Qbtrace:bts'
+     Enable branch tracing for the current thread using Branch Trace
+     Store.
+
+     Reply:
+     'OK'
+          Branch tracing has been enabled.
+     'E.errtext'
+          A badly formed request or an error was encountered.
+
+'Qbtrace:pt'
+     Enable branch tracing for the current thread using Intel Processor
+     Trace.
+
+     Reply:
+     'OK'
+          Branch tracing has been enabled.
+     'E.errtext'
+          A badly formed request or an error was encountered.
+
+'Qbtrace:off'
+     Disable branch tracing for the current thread.
+
+     Reply:
+     'OK'
+          Branch tracing has been disabled.
+     'E.errtext'
+          A badly formed request or an error was encountered.
+
+'Qbtrace-conf:bts:size=VALUE'
+     Set the requested ring buffer size for new threads that use the
+     btrace recording method in bts format.
+
+     Reply:
+     'OK'
+          The ring buffer size has been set.
+     'E.errtext'
+          A badly formed request or an error was encountered.
+
+'Qbtrace-conf:pt:size=VALUE'
+     Set the requested ring buffer size for new threads that use the
+     btrace recording method in pt format.
+
+     Reply:
+     'OK'
+          The ring buffer size has been set.
+     'E.errtext'
+          A badly formed request or an error was encountered.
+
+   ---------- Footnotes ----------
+
+   (1) The 'qP' and 'qL' packets predate these conventions, and have
+arguments without any terminator for the packet name; we suspect they
+are in widespread use in places that are difficult to upgrade.  The 'qC'
+packet has no arguments, but some existing stubs (e.g. RedBoot) are
+known to not check for the end of the packet.
+
+
 File: gdb.info,  Node: Architecture-Specific Protocol Details,  Next: Tracepoint Packets,  Prev: General Query Packets,  Up: Remote Protocol
 
 E.5 Architecture-Specific Protocol Details
@@ -54,7 +1511,7 @@ details of XML target descriptions for e
 
 File: gdb.info,  Node: ARM-Specific Protocol Details,  Next: MIPS-Specific Protocol Details,  Up: Architecture-Specific Protocol Details
 
-E.5.1 ARM-specific Protocol Details
+E.5.1 ARM-Specific Protocol Details
 -----------------------------------
 
 * Menu:
@@ -81,7 +1538,7 @@ These breakpoint kinds are defined for t
 
 File: gdb.info,  Node: MIPS-Specific Protocol Details,  Prev: ARM-Specific Protocol Details,  Up: Architecture-Specific Protocol Details
 
-E.5.2 MIPS-specific Protocol Details
+E.5.2 MIPS-Specific Protocol Details
 ------------------------------------
 
 * Menu:
@@ -547,7 +2004,7 @@ Tracepoints::).
      Allowable types include 'user', 'notes', and 'tstop', the TEXT
      fields are arbitrary strings, hex-encoded.
 
-E.6.1 Relocate instruction reply packet
+E.6.1 Relocate Instruction Reply Packet
 ---------------------------------------
 
 When installing fast tracepoints in memory, the target may need to
@@ -616,7 +2073,7 @@ its arguments.  They have this format:
      RESULT is the integer value returned by this operation, usually
      non-negative for success and -1 for errors.  If an error has
      occured, ERRNO will be included in the result specifying a value
-     defined by the File-I/O protocol (*note Errno Values::).  For
+     defined by the File-I/O protocol (*note errno Values::).  For
      operations which return data, ATTACHMENT supplies the data as a
      binary buffer.  Binary buffers in response packets are escaped in
      the normal way (*note Binary Data::).  See the individual packet
@@ -1712,7 +3169,7 @@ system-call-allowed 1' command.
 
 File: gdb.info,  Node: Protocol-specific Representation of Datatypes,  Next: Constants,  Prev: List of Supported Calls,  Up: File-I/O Remote Protocol Extension
 
-E.13.8 Protocol-specific Representation of Datatypes
+E.13.8 Protocol-Specific Representation of Datatypes
 ----------------------------------------------------
 
 * Menu:
@@ -1874,7 +3331,7 @@ after the call as needed.
 
 * Open Flags::
 * mode_t Values::
-* Errno Values::
+* errno Values::
 * Lseek Flags::
 * Limits::
 
@@ -1895,7 +3352,7 @@ All values are given in hexadecimal repr
        O_EXCL        0x800
 
 
-File: gdb.info,  Node: mode_t Values,  Next: Errno Values,  Prev: Open Flags,  Up: Constants
+File: gdb.info,  Node: mode_t Values,  Next: errno Values,  Prev: Open Flags,  Up: Constants
 
 mode_t Values
 .............
@@ -1915,9 +3372,9 @@ All values are given in octal representa
        S_IXOTH            01
 
 
-File: gdb.info,  Node: Errno Values,  Next: Lseek Flags,  Prev: mode_t Values,  Up: Constants
+File: gdb.info,  Node: errno Values,  Next: Lseek Flags,  Prev: mode_t Values,  Up: Constants
 
-Errno Values
+errno Values
 ............
 
 All values are given in decimal representation.
@@ -1947,7 +3404,7 @@ All values are given in decimal represen
 any error value not in the list of supported error numbers.
 
 
-File: gdb.info,  Node: Lseek Flags,  Next: Limits,  Prev: Errno Values,  Up: Constants
+File: gdb.info,  Node: Lseek Flags,  Next: Limits,  Prev: errno Values,  Up: Constants
 
 Lseek Flags
 ...........
@@ -3592,39 +5049,44 @@ File: gdb.info,  Node: ARC Features,  Ne
 G.5.2 ARC Features
 ------------------
 
-ARC processors are highly configurable, so even core registers and their
-number are not completely predetermined.  In addition flags and PC
-registers which are important to GDB are not "core" registers in ARC. It
-is required that one of the core registers features is present.
-'org.gnu.gdb.arc.aux-minimal' feature is mandatory.
-
-   The 'org.gnu.gdb.arc.core.v2' feature is required for ARC EM and ARC
-HS targets with a normal register file.  It should contain registers
-'r0' through 'r25', 'gp', 'fp', 'sp', 'r30', 'blink', 'lp_count' and
-'pcl'.  This feature may contain register 'ilink' and any of extension
-core registers 'r32' through 'r59/acch'.  'ilink' and extension core
-registers are not available to read/write, when debugging GNU/Linux
-applications, thus 'ilink' is made optional.
-
-   The 'org.gnu.gdb.arc.core-reduced.v2' feature is required for ARC EM
-and ARC HS targets with a reduced register file.  It should contain
-registers 'r0' through 'r3', 'r10' through 'r15', 'gp', 'fp', 'sp',
-'r30', 'blink', 'lp_count' and 'pcl'.  This feature may contain register
-'ilink' and any of extension core registers 'r32' through 'r59/acch'.
-
-   The 'org.gnu.gdb.arc.core.arcompact' feature is required for
-ARCompact targets with a normal register file.  It should contain
-registers 'r0' through 'r25', 'gp', 'fp', 'sp', 'r30', 'blink',
-'lp_count' and 'pcl'.  This feature may contain registers 'ilink1',
-'ilink2' and any of extension core registers 'r32' through 'r59/acch'.
-'ilink1' and 'ilink2' and extension core registers are not available
-when debugging GNU/Linux applications.  The only difference with
-'org.gnu.gdb.arc.core.v2' feature is in the names of 'ilink1' and
-'ilink2' registers and that 'r30' is mandatory in ARC v2, but 'ilink2'
-is optional on ARCompact.
+ARC processors are so configurable that even core registers and their
+numbers are not predetermined completely.  Moreover, _flags_ and _PC_
+registers, which are important to GDB, are not "core" registers in ARC.
+Therefore, there are two features that their presence is mandatory:
+'org.gnu.gdb.arc.core' and 'org.gnu.gdb.arc.aux'.
+
+   The 'org.gnu.gdb.arc.core' feature is required for all targets.  It
+must contain registers:
+
+   - 'r0' through 'r25' for normal register file targets.
+   - 'r0' through 'r3', and 'r10' through 'r15' for reduced register
+     file targets.
+   - 'gp', 'fp', 'sp', 'r30'(1), 'blink', 'lp_count', 'pcl'.
+
+   In case of an ARCompact target (ARCv1 ISA), the
+'org.gnu.gdb.arc.core' feature may contain registers 'ilink1' and
+'ilink2'.  While in case of ARC EM and ARC HS targets (ARCv2 ISA),
+register 'ilink' may be present.  The difference between ARCv1 and ARCv2
+is the naming of registers _29th_ and _30th_.  They are called 'ilink1'
+and 'ilink2' for ARCv1 and are optional.  For ARCv2, they are called
+'ilink' and 'r30' and only 'ilink' is optional.  The optionality of
+'ilink*' registers is because of their inaccessibility during user space
+debugging sessions.
+
+   Extension core registers 'r32' through 'r59' are optional and their
+existence depends on the configuration.  When debugging GNU/Linux
+applications, i.e. user space debugging, these core registers are not
+available.
+
+   The 'org.gnu.gdb.arc.aux' feature is required for all ARC targets.
+Here is the list of registers pertinent to this feature:
+
+   - mandatory: 'pc' and 'status32'.
+   - optional: 'lp_start', 'lp_end', and 'bta'.
+
+   ---------- Footnotes ----------
 
-   The 'org.gnu.gdb.arc.aux-minimal' feature is required for all ARC
-targets.  It should contain registers 'pc' and 'status32'.
+   (1) Not necessary for ARCv1.
 
 
 File: gdb.info,  Node: ARM Features,  Next: i386 Features,  Prev: ARC Features,  Up: Standard Target Features
@@ -3789,6 +5251,12 @@ G.5.7 M68K Features
      This feature is optional.  If present, it should contain registers
      'fp0' through 'fp7', 'fpcontrol', 'fpstatus' and 'fpiaddr'.
 
+     Note that, despite the fact that this feature's name says
+     'coldfire', it is used to describe any floating point registers.
+     The size of the registers must match the main m68k flavor; so, for
+     example, if the primary feature is reported as 'coldfire', then
+     64-bit floating point registers are required.
+
 
 File: gdb.info,  Node: NDS32 Features,  Next: Nios II Features,  Prev: M68K Features,  Up: Standard Target Features
 
@@ -3826,7 +5294,7 @@ should contain the 32 core registers ('z
 
 File: gdb.info,  Node: OpenRISC 1000 Features,  Next: PowerPC Features,  Prev: Nios II Features,  Up: Standard Target Features
 
-G.5.10 Openrisc 1000 Features
+G.5.10 OpenRISC 1000 Features
 -----------------------------
 
 The 'org.gnu.gdb.or1k.group0' feature is required for OpenRISC 1000
@@ -4683,8 +6151,8 @@ using the 'target remote' command, other
 looks something like 'Connection refused'.
 
    'gdbserver' can also debug multiple inferiors at once, described in
-*note Inferiors and Programs::.  In such case use the 'extended-remote'
-GDB command variant:
+*note Inferiors Connections and Programs::.  In such case use the
+'extended-remote' GDB command variant:
 
      (gdb) target extended-remote the-target:2345
 
@@ -6070,1981 +7538,3 @@ recommend releasing these examples in pa
 software license, such as the GNU General Public License, to permit
 their use in free software.
 
-
-File: gdb.info,  Node: Concept Index,  Next: Command and Variable Index,  Prev: GNU Free Documentation License,  Up: Top
-
-Concept Index
-*************
-
-[index]
-* Menu:
-
-* ! packet:                              Packets.            (line   49)
-* "No symbol "foo" in current context":  Variables.          (line  122)
-* # in Modula-2:                         GDB/M2.             (line   18)
-* $:                                     Value History.      (line   13)
-* $$:                                    Value History.      (line   13)
-* $_ and info breakpoints:               Set Breaks.         (line  133)
-* $_ and info line:                      Machine Code.       (line   34)
-* $_, $__, and value history:            Memory.             (line  119)
-* &, background execution of commands:   Background Execution.
-                                                             (line   16)
-* --annotate:                            Mode Options.       (line  132)
-* --args:                                Mode Options.       (line  145)
-* --attach, gdbserver option:            Server.             (line   86)
-* --batch:                               Mode Options.       (line   55)
-* --batch-silent:                        Mode Options.       (line   73)
-* --baud:                                Mode Options.       (line  151)
-* --cd:                                  Mode Options.       (line  112)
-* --command:                             File Options.       (line   51)
-* --configuration:                       Mode Options.       (line  195)
-* --core:                                File Options.       (line   43)
-* --data-directory:                      Mode Options.       (line  117)
-* --debug, gdbserver option:             Server.             (line  146)
-* --debug-file, gdbserver option:        Server.             (line  148)
-* --debug-format, gdbserver option:      Server.             (line  153)
-* --directory:                           File Options.       (line   77)
-* --eval-command:                        File Options.       (line   57)
-* --exec:                                File Options.       (line   35)
-* --fullname:                            Mode Options.       (line  122)
-* --init-command:                        File Options.       (line   67)
-* --init-eval-command:                   File Options.       (line   72)
-* --interpreter:                         Mode Options.       (line  170)
-* --multi, gdbserver option:             Connecting.         (line   45)
-* --nh:                                  Mode Options.       (line   45)
-* --nowindows:                           Mode Options.       (line  102)
-* --nx:                                  Mode Options.       (line   11)
-* --once, gdbserver option:              Server.             (line  126)
-* --pid:                                 File Options.       (line   47)
-* --quiet:                               Mode Options.       (line   51)
-* --readnever, command-line option:      File Options.       (line   87)
-* --readnow:                             File Options.       (line   81)
-* --remote-debug, gdbserver option:      Server.             (line  147)
-* --return-child-result:                 Mode Options.       (line   85)
-* --se:                                  File Options.       (line   39)
-* --selftest:                            Server.             (line  187)
-* --silent:                              Mode Options.       (line   51)
-* --statistics:                          Mode Options.       (line  187)
-* --symbols:                             File Options.       (line   31)
-* --tty:                                 Mode Options.       (line  160)
-* --tui:                                 Mode Options.       (line  163)
-* --version:                             Mode Options.       (line  191)
-* --windows:                             Mode Options.       (line  108)
-* --with-gdb-datadir:                    Data Files.         (line   19)
-* --with-relocated-sources:              Source Path.        (line  149)
-* --with-sysroot:                        Files.              (line  453)
-* --wrapper, gdbserver option:           Server.             (line  166)
-* --write:                               Mode Options.       (line  182)
-* -b:                                    Mode Options.       (line  151)
-* -c:                                    File Options.       (line   43)
-* -d:                                    File Options.       (line   77)
-* -D:                                    Mode Options.       (line  117)
-* -e:                                    File Options.       (line   35)
-* -ex:                                   File Options.       (line   57)
-* -f:                                    Mode Options.       (line  122)
-* -iex:                                  File Options.       (line   72)
-* -info-gdb-mi-command:                  GDB/MI Support Commands.
-                                                             (line   14)
-* -ix:                                   File Options.       (line   67)
-* -l:                                    Mode Options.       (line  155)
-* -n:                                    Mode Options.       (line   11)
-* -nw:                                   Mode Options.       (line  102)
-* -p:                                    File Options.       (line   47)
-* -q:                                    Mode Options.       (line   51)
-* -r:                                    File Options.       (line   81)
-* -readnever, option for symbol-file command: Files.         (line  101)
-* -s:                                    File Options.       (line   31)
-* -t:                                    Mode Options.       (line  160)
-* -w:                                    Mode Options.       (line  108)
-* -x:                                    File Options.       (line   51)
-* ., Modula-2 scope operator:            M2 Scope.           (line    6)
-* .build-id directory:                   Separate Debug Files.
-                                                             (line    6)
-* .debug subdirectories:                 Separate Debug Files.
-                                                             (line    6)
-* .debug_gdb_scripts section:            dotdebug_gdb_scripts section.
-                                                             (line    6)
-* .gdbinit:                              Startup.            (line   69)
-* .gdb_index section:                    Index Files.        (line    6)
-* .gdb_index section format:             Index Section Format.
-                                                             (line    6)
-* .gnu_debugdata section:                MiniDebugInfo.      (line    6)
-* .gnu_debuglink sections:               Separate Debug Files.
-                                                             (line   79)
-* .note.gnu.build-id sections:           Separate Debug Files.
-                                                             (line   95)
-* .o files, reading symbols from:        Files.              (line  146)
-* /proc:                                 Process Information.
-                                                             (line    6)
-* <architecture>:                        Target Description Format.
-                                                             (line   72)
-* <compatible>:                          Target Description Format.
-                                                             (line   95)
-* <feature>:                             Target Description Format.
-                                                             (line  119)
-* <flags>:                               Target Description Format.
-                                                             (line  163)
-* <not saved> values:                    Registers.          (line  106)
-* <osabi>:                               Target Description Format.
-                                                             (line   82)
-* <reg>:                                 Target Description Format.
-                                                             (line  222)
-* <struct>:                              Target Description Format.
-                                                             (line  163)
-* <union>:                               Target Description Format.
-                                                             (line  153)
-* <vector>:                              Target Description Format.
-                                                             (line  146)
-* ? packet:                              Packets.            (line   58)
-* _NSPrintForDebugger, and printing Objective-C objects: The Print Command with Objective-C.
-                                                             (line   11)
-* {TYPE}:                                Expressions.        (line   41)
-* A packet:                              Packets.            (line   65)
-* AArch64 Pointer Authentication.:       AArch64.            (line   34)
-* AArch64 support:                       AArch64.            (line    6)
-* AArch64 SVE.:                          AArch64.            (line   19)
-* abbreviation:                          Command Syntax.     (line   13)
-* acknowledgment, for GDB remote:        Packet Acknowledgment.
-                                                             (line    6)
-* active targets:                        Active Targets.     (line    6)
-* Ada:                                   Ada.                (line    6)
-* Ada exception catching:                Set Catchpoints.    (line   66)
-* Ada exception handlers catching:       Set Catchpoints.    (line   92)
-* Ada mode, general:                     Ada Mode Intro.     (line    6)
-* Ada settings:                          Ada Settings.       (line    6)
-* Ada task switching:                    Ada Tasks.          (line  115)
-* Ada tasking and core file debugging:   Ada Tasks and Core Files.
-                                                             (line    6)
-* Ada, deviations from:                  Additions to Ada.   (line    6)
-* Ada, omissions from:                   Omissions from Ada. (line    6)
-* Ada, problems:                         Ada Glitches.       (line    6)
-* Ada, tasking:                          Ada Tasks.          (line    6)
-* add new commands for external monitor: Connecting.         (line  272)
-* address locations:                     Address Locations.  (line    6)
-* address of a symbol:                   Symbols.            (line   85)
-* address size for remote targets:       Remote Configuration.
-                                                             (line   12)
-* addressable memory unit:               Memory.             (line  133)
-* aggregates (Ada):                      Omissions from Ada. (line   44)
-* AIX shared library debugging:          Debugging Output.   (line   30)
-* AIX threads:                           Debugging Output.   (line   36)
-* aliases for commands:                  Aliases.            (line    6)
-* alignment of remote memory accesses:   Packets.            (line  247)
-* all-stop mode:                         All-Stop Mode.      (line    6)
-* Alpha stack:                           MIPS.               (line    6)
-* ambiguous expressions:                 Ambiguous Expressions.
-                                                             (line    6)
-* annotations:                           Annotations Overview.
-                                                             (line    6)
-* annotations for errors, warnings and interrupts: Errors.   (line    6)
-* annotations for invalidation messages: Invalidation.       (line    6)
-* annotations for prompts:               Prompting.          (line    6)
-* annotations for running programs:      Annotations for Running.
-                                                             (line    6)
-* annotations for source display:        Source Annotations. (line    6)
-* append data to a file:                 Dump/Restore Files. (line    6)
-* Application Data Integrity:            Sparc64.            (line    5)
-* apply a command to all frames (ignoring errors and empty output): Frame Apply.
-                                                             (line   96)
-* apply a command to all frames of all threads (ignoring errors and empty output): Threads.
-                                                             (line  229)
-* apply command to all threads (ignoring errors and empty output): Threads.
-                                                             (line  222)
-* apply command to several frames:       Frame Apply.        (line    6)
-* apply command to several threads:      Threads.            (line  187)
-* ARC EM:                                ARC.                (line    6)
-* ARC HS:                                ARC.                (line    6)
-* ARC specific commands:                 ARC.                (line    6)
-* ARC600:                                ARC.                (line    6)
-* ARC700:                                ARC.                (line    6)
-* architecture debugging info:           Debugging Output.   (line   23)
-* argument count in user-defined commands: Define.           (line   25)
-* arguments (to your program):           Arguments.          (line    6)
-* arguments, to gdbserver:               Server.             (line   34)
-* arguments, to user-defined commands:   Define.             (line    6)
-* ARM 32-bit mode:                       ARM.                (line   16)
-* ARM AArch64:                           Debugging Output.   (line   17)
-* array aggregates (Ada):                Omissions from Ada. (line   44)
-* arrays:                                Arrays.             (line    6)
-* arrays in expressions:                 Expressions.        (line   13)
-* artificial array:                      Arrays.             (line    6)
-* assembly instructions:                 Machine Code.       (line   43)
-* assignment:                            Assignment.         (line    6)
-* async output in GDB/MI:                GDB/MI Output Syntax.
-                                                             (line   98)
-* async records in GDB/MI:               GDB/MI Async Records.
-                                                             (line    6)
-* asynchronous execution:                Background Execution.
-                                                             (line    6)
-* asynchronous execution, and process record and replay: Process Record and Replay.
-                                                             (line  101)
-* AT&T disassembly flavor:               Machine Code.       (line  237)
-* attach:                                Attach.             (line    6)
-* attach to a program, gdbserver:        Server.             (line   86)
-* auto-loading:                          Auto-loading.       (line    6)
-* auto-loading extensions:               Auto-loading extensions.
-                                                             (line    6)
-* auto-loading init file in the current directory: Init File in the Current Directory.
-                                                             (line    6)
-* auto-loading libthread_db.so.1:        libthread_db.so.1 file.
-                                                             (line    6)
-* auto-loading safe-path:                Auto-loading safe path.
-                                                             (line    6)
-* auto-loading verbose mode:             Auto-loading verbose mode.
-                                                             (line    6)
-* auto-retry, for remote TCP target:     Remote Configuration.
-                                                             (line  131)
-* automatic display:                     Auto Display.       (line    6)
-* automatic hardware breakpoints:        Set Breaks.         (line  296)
-* automatic overlay debugging:           Automatic Overlay Debugging.
-                                                             (line    6)
-* automatic symbol index cache:          Index Files.        (line   75)
-* automatic thread selection:            All-Stop Mode.      (line   28)
-* auxiliary vector:                      OS Information.     (line    9)
-* AVR:                                   AVR.                (line    6)
-* b packet:                              Packets.            (line   76)
-* B packet:                              Packets.            (line   91)
-* background execution:                  Background Execution.
-                                                             (line    6)
-* backtrace beyond main function:        Backtrace.          (line  155)
-* backtrace limit:                       Backtrace.          (line  192)
-* base name differences:                 Files.              (line  520)
-* baud rate for remote targets:          Remote Configuration.
-                                                             (line   21)
-* bc packet:                             Packets.            (line   96)
-* bcache statistics:                     Maintenance Commands.
-                                                             (line  328)
-* bits in remote address:                Remote Configuration.
-                                                             (line   12)
-* blocks in guile:                       Blocks In Guile.    (line    6)
-* blocks in python:                      Blocks In Python.   (line    6)
-* bookmark:                              Checkpoint/Restart. (line    6)
-* boundary violations, Intel MPX:        Signals.            (line  197)
-* branch trace configuration format:     Branch Trace Configuration Format.
-                                                             (line    6)
-* branch trace format:                   Branch Trace Format.
-                                                             (line    6)
-* branch trace store:                    Process Record and Replay.
-                                                             (line   70)
-* break in overloaded functions:         Debugging C Plus Plus.
-                                                             (line    9)
-* break on a system call.:               Set Catchpoints.    (line  120)
-* break on fork/exec:                    Set Catchpoints.    (line  116)
-* BREAK signal instead of Ctrl-C:        Remote Configuration.
-                                                             (line   36)
-* breakpoint address adjusted:           Breakpoint-related Warnings.
-                                                             (line    6)
-* breakpoint at static probe point:      Linespec Locations. (line   65)
-* breakpoint commands:                   Break Commands.     (line    6)
-* breakpoint commands for GDB/MI:        GDB/MI Breakpoint Commands.
-                                                             (line    6)
-* breakpoint commands, in remote protocol: General Query Packets.
-                                                             (line  983)
-* breakpoint conditions:                 Conditions.         (line    6)
-* breakpoint kinds, ARM:                 ARM Breakpoint Kinds.
-                                                             (line    6)
-* breakpoint kinds, MIPS:                MIPS Breakpoint Kinds.
-                                                             (line    6)
-* breakpoint lists:                      Breakpoints.        (line   45)
-* breakpoint numbers:                    Breakpoints.        (line   38)
-* breakpoint on events:                  Breakpoints.        (line   30)
-* breakpoint on memory address:          Breakpoints.        (line   17)
-* breakpoint on variable modification:   Breakpoints.        (line   17)
-* breakpoint ranges:                     Breakpoints.        (line   45)
-* breakpoint subroutine, remote:         Stub Contents.      (line   31)
-* breakpointing Ada elaboration code:    Stopping Before Main Program.
-                                                             (line    6)
-* breakpoints:                           Breakpoints.        (line    6)
-* breakpoints and tasks, in Ada:         Ada Tasks.          (line  135)
-* breakpoints and threads:               Thread-Specific Breakpoints.
-                                                             (line   10)
-* breakpoints at functions matching a regexp: Set Breaks.    (line   90)
-* breakpoints in guile:                  Breakpoints In Guile.
-                                                             (line    6)
-* breakpoints in overlays:               Overlay Commands.   (line   91)
-* breakpoints in python:                 Breakpoints In Python.
-                                                             (line    6)
-* breakpoints, multiple locations:       Set Breaks.         (line  200)
-* bs packet:                             Packets.            (line  102)
-* bug criteria:                          Bug Criteria.       (line    6)
-* bug reports:                           Bug Reporting.      (line    6)
-* bugs in GDB:                           GDB Bugs.           (line    6)
-* build ID sections:                     Separate Debug Files.
-                                                             (line   95)
-* build ID, and separate debugging files: Separate Debug Files.
-                                                             (line    6)
-* building GDB, requirements for:        Requirements.       (line    6)
-* built-in simulator target:             Target Commands.    (line   73)
-* builtin Go functions:                  Go.                 (line   31)
-* builtin Go types:                      Go.                 (line   28)
-* C and C++:                             C.                  (line    6)
-* C and C++ checks:                      C Checks.           (line    6)
-* C and C++ constants:                   C Constants.        (line    6)
-* C and C++ defaults:                    C Defaults.         (line    6)
-* C and C++ operators:                   C Operators.        (line    6)
-* c packet:                              Packets.            (line  109)
-* C packet:                              Packets.            (line  118)
-* C++:                                   C.                  (line   10)
-* C++ compilers:                         C Plus Plus Expressions.
-                                                             (line    8)
-* C++ demangling:                        Debugging C Plus Plus.
-                                                             (line   36)
-* C++ exception handling:                Debugging C Plus Plus.
-                                                             (line   20)
-* C++ overload debugging info:           Debugging Output.   (line  147)
-* C++ scope resolution:                  Variables.          (line   90)
-* C++ symbol decoding style:             Print Settings.     (line  529)
-* C++ symbol display:                    Debugging C Plus Plus.
-                                                             (line   40)
-* caching data of targets:               Caching Target Data.
-                                                             (line    6)
-* caching of bfd objects:                File Caching.       (line    6)
-* caching of opened files:               File Caching.       (line    6)
-* call dummy stack unwinding:            Calling.            (line   36)
-* call dummy stack unwinding on unhandled exception.: Calling.
-                                                             (line   47)
-* call overloaded functions:             C Plus Plus Expressions.
-                                                             (line   26)
-* call stack:                            Stack.              (line    9)
-* call stack traces:                     Backtrace.          (line    6)
-* call-clobbered registers:              Registers.          (line  106)
-* caller-saved registers:                Registers.          (line  106)
-* calling functions:                     Calling.            (line    6)
-* calling functions in the program, disabling: Calling.      (line   59)
-* calling make:                          Shell Commands.     (line   21)
-* case sensitivity in symbol names:      Symbols.            (line   27)
-* case-insensitive symbol names:         Symbols.            (line   27)
-* casts, in expressions:                 Expressions.        (line   26)
-* casts, to view memory:                 Expressions.        (line   41)
-* catch Ada exceptions:                  Set Catchpoints.    (line   66)
-* catch Ada exceptions when handled:     Set Catchpoints.    (line   92)
-* catch syscalls from inferior, remote request: General Query Packets.
-                                                             (line  401)
-* catchpoints:                           Breakpoints.        (line   30)
-* catchpoints, setting:                  Set Catchpoints.    (line    6)
-* change GDB's working directory:        Working Directory.  (line   32)
-* change inferior's working directory:   Working Directory.  (line   13)
-* character sets:                        Character Sets.     (line    6)
-* charset:                               Character Sets.     (line    6)
-* checkpoint:                            Checkpoint/Restart. (line    6)
-* checkpoints and process id:            Checkpoint/Restart. (line   76)
-* checks, range:                         Type Checking.      (line   44)
-* checks, type:                          Checks.             (line   23)
-* checksum, for GDB remote:              Overview.           (line   21)
-* choosing target byte order:            Byte Order.         (line    6)
-* circular trace buffer:                 Starting and Stopping Trace Experiments.
-                                                             (line   80)
-* clearing breakpoints, watchpoints, catchpoints: Delete Breaks.
-                                                             (line    6)
-* close, file-i/o system call:           close.              (line    6)
-* closest symbol and offset for an address: Symbols.         (line   95)
-* code address and its source line:      Machine Code.       (line   28)
-* code compression, MIPS:                MIPS.               (line   49)
-* COFF/PE exported symbols:              Debugging Output.   (line   50)
-* collected data discarded:              Starting and Stopping Trace Experiments.
-                                                             (line    6)
-* colon, doubled as scope operator:      M2 Scope.           (line    6)
-* colon-colon, context for variables/functions: Variables.   (line   44)
-* colors:                                Output Styling.     (line    6)
-* command editing:                       Readline Bare Essentials.
-                                                             (line    6)
-* command files:                         Command Files.      (line    6)
-* command history:                       Command History.    (line    6)
-* command hooks:                         Hooks.              (line    6)
-* command interpreters:                  Interpreters.       (line    6)
-* command line editing:                  Editing.            (line    6)
-* command options:                       Command Options.    (line    6)
-* command options, boolean:              Command Options.    (line   21)
-* command options, raw input:            Command Options.    (line   13)
-* command scripts, debugging:            Messages/Warnings.  (line   65)
-* command tracing:                       Messages/Warnings.  (line   60)
-* commands for C++:                      Debugging C Plus Plus.
-                                                             (line    6)
-* commands in guile:                     Commands In Guile.  (line    6)
-* commands in python:                    Commands In Python. (line    6)
-* commands to access guile:              Guile Commands.     (line    6)
-* commands to access python:             Python Commands.    (line    6)
-* comment:                               Command Syntax.     (line   37)
-* COMMON blocks, Fortran:                Special Fortran Commands.
-                                                             (line    9)
-* common targets:                        Target Commands.    (line   46)
-* compatibility, GDB/MI and CLI:         GDB/MI Compatibility with CLI.
-                                                             (line    6)
-* compilation directory:                 Source Path.        (line   40)
-* compile C++ type conversion:           Compiling and Injecting Code.
-                                                             (line   90)
-* compile command debugging info:        Compiling and Injecting Code.
-                                                             (line   82)
-* compile command driver filename override: Compiling and Injecting Code.
-                                                             (line  300)
-* compile command options override:      Compiling and Injecting Code.
-                                                             (line  125)
-* compiling code:                        Compiling and Injecting Code.
-                                                             (line    6)
-* completion:                            Completion.         (line    6)
-* completion of Guile commands:          Commands In Guile.  (line  100)
-* completion of Python commands:         Commands In Python. (line   70)
-* completion of quoted strings:          Completion.         (line   83)
-* completion of structure field names:   Completion.         (line  135)
-* completion of union field names:       Completion.         (line  135)
-* compressed debug sections:             Requirements.       (line  110)
-* conditional breakpoints:               Conditions.         (line    6)
-* conditional tracepoints:               Tracepoint Conditions.
-                                                             (line    6)
-* configuring GDB:                       Running Configure.  (line    6)
-* confirmation:                          Messages/Warnings.  (line   49)
-* connection timeout, for remote TCP target: Remote Configuration.
-                                                             (line  147)
-* console i/o as part of file-i/o:       Console I/O.        (line    6)
-* console interpreter:                   Interpreters.       (line   21)
-* console output in GDB/MI:              GDB/MI Output Syntax.
-                                                             (line  106)
-* constants, in file-i/o protocol:       Constants.          (line    6)
-* continuing:                            Continuing and Stepping.
-                                                             (line    6)
-* continuing threads:                    Thread Stops.       (line    6)
-* control C, and remote debugging:       Bootstrapping.      (line   25)
-* controlling terminal:                  Input/Output.       (line   23)
-* convenience functions:                 Convenience Funs.   (line    6)
-* convenience functions in python:       Functions In Python.
-                                                             (line    6)
-* convenience variables:                 Convenience Vars.   (line    6)
-* convenience variables for tracepoints: Tracepoint Variables.
-                                                             (line    6)
-* convenience variables, and trace state variables: Trace State Variables.
-                                                             (line   17)
-* convenience variables, initializing:   Convenience Vars.   (line   42)
-* core dump file:                        Files.              (line    6)
-* core dump file target:                 Target Commands.    (line   54)
-* crash of debugger:                     Bug Criteria.       (line    9)
-* CRC algorithm definition:              Separate Debug Files.
-                                                             (line  140)
-* CRC of memory block, remote request:   General Query Packets.
-                                                             (line   65)
-* CRIS:                                  CRIS.               (line    6)
-* CRIS mode:                             CRIS.               (line   26)
-* CRIS version:                          CRIS.               (line   10)
-* Ctrl-BREAK, MS-Windows:                Cygwin Native.      (line    9)
-* ctrl-c message, in file-i/o protocol:  The Ctrl-C Message. (line    6)
-* current Ada task ID:                   Ada Tasks.          (line  105)
-* current directory:                     Source Path.        (line   40)
-* current Go package:                    Go.                 (line   11)
-* current thread:                        Threads.            (line   29)
-* current thread, remote request:        General Query Packets.
-                                                             (line   55)
-* custom JIT debug info:                 Custom Debug Info.  (line    6)
-* Cygwin DLL, debugging:                 Cygwin Native.      (line   60)
-* Cygwin-specific commands:              Cygwin Native.      (line    6)
-* D:                                     D.                  (line    6)
-* d packet:                              Packets.            (line  127)
-* D packet:                              Packets.            (line  134)
-* Darwin:                                Darwin.             (line    6)
-* data breakpoints:                      Breakpoints.        (line   17)
-* data manipulation, in GDB/MI:          GDB/MI Data Manipulation.
-                                                             (line    6)
-* dcache line-size:                      Caching Target Data.
-                                                             (line   60)
-* dcache size:                           Caching Target Data.
-                                                             (line   57)
-* dead names, GNU Hurd:                  Hurd Native.        (line   84)
-* debug expression parser:               Debugging Output.   (line  152)
-* debug formats and C++:                 C Plus Plus Expressions.
-                                                             (line    8)
-* debug link sections:                   Separate Debug Files.
-                                                             (line   79)
-* debug remote protocol:                 Debugging Output.   (line  159)
-* debugger crash:                        Bug Criteria.       (line    9)
-* debugging agent:                       In-Process Agent.   (line    6)
-* debugging C++ programs:                C Plus Plus Expressions.
-                                                             (line    8)
-* debugging information directory, global: Separate Debug Files.
-                                                             (line    6)
-* debugging information in separate files: Separate Debug Files.
-                                                             (line    6)
-* debugging libthread_db:                Threads.            (line  331)
-* debugging multiple processes:          Forks.              (line   55)
-* debugging optimized code:              Optimized Code.     (line    6)
-* debugging stub, example:               Remote Stub.        (line    6)
-* debugging target:                      Targets.            (line    6)
-* debugging the Cygwin DLL:              Cygwin Native.      (line   60)
-* decimal floating point format:         Decimal Floating Point.
-                                                             (line    6)
-* default behavior of commands, changing: Command Settings.  (line    6)
-* default collection action:             Tracepoint Actions. (line  142)
-* default data directory:                Data Files.         (line   19)
-* default settings, changing:            Command Settings.   (line    6)
-* default source path substitution:      Source Path.        (line  149)
-* default system root:                   Files.              (line  453)
-* define trace state variable, remote request: Tracepoint Packets.
-                                                             (line  121)
-* defining macros interactively:         Macros.             (line   59)
-* definition of a macro, showing:        Macros.             (line   47)
-* delete breakpoints:                    Delete Breaks.      (line   41)
-* deleting breakpoints, watchpoints, catchpoints: Delete Breaks.
-                                                             (line    6)
-* deliver a signal to a program:         Signaling.          (line    6)
-* demangle:                              Symbols.            (line  114)
-* demangler crashes:                     Maintenance Commands.
-                                                             (line  146)
-* demangler crashes <1>:                 Maintenance Commands.
-                                                             (line  173)
-* demangler crashes <2>:                 Maintenance Commands.
-                                                             (line  197)
-* demangling C++ names:                  Print Settings.     (line  510)
-* deprecated commands:                   Maintenance Commands.
-                                                             (line  160)
-* derived type of an object, printing:   Print Settings.     (line  541)
-* descriptor tables display:             DJGPP Native.       (line   24)
-* detach from task, GNU Hurd:            Hurd Native.        (line   59)
-* detach from thread, GNU Hurd:          Hurd Native.        (line  109)
-* direct memory access (DMA) on MS-DOS:  DJGPP Native.       (line   74)
-* directories for source files:          Source Path.        (line    6)
-* directory, compilation:                Source Path.        (line   40)
-* directory, current:                    Source Path.        (line   40)
-* disable address space randomization, remote request: General Query Packets.
-                                                             (line   84)
-* disabling calling functions in the program: Calling.       (line   59)
-* disassembler options:                  Machine Code.       (line  222)
-* disconnected tracing:                  Starting and Stopping Trace Experiments.
-                                                             (line   45)
-* displaced stepping debugging info:     Debugging Output.   (line   75)
-* displaced stepping support:            Maintenance Commands.
-                                                             (line  112)
-* displaced stepping, and process record and replay: Process Record and Replay.
-                                                             (line   96)
-* display command history:               Command History.    (line   95)
-* display derived types:                 Print Settings.     (line  541)
-* display disabled out of scope:         Auto Display.       (line   86)
-* display GDB copyright:                 Help.               (line  158)
-* display of expressions:                Auto Display.       (line    6)
-* display remote monitor communications: Target Commands.    (line  107)
-* display remote packets:                Debugging Output.   (line  159)
-* DJGPP debugging:                       DJGPP Native.       (line    6)
-* DLLs with no debugging symbols:        Non-debug DLL Symbols.
-                                                             (line    6)
-* do not print frame arguments:          Print Settings.     (line  154)
-* documentation:                         Formatting Documentation.
-                                                             (line   22)
-* 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)
-* DOS serial data link, remote debugging: DJGPP Native.      (line  118)
-* DOS serial port status:                DJGPP Native.       (line  139)
-* DPMI:                                  DJGPP Native.       (line    6)
-* dprintf:                               Dynamic Printf.     (line    6)
-* dump all data collected at tracepoint: tdump.              (line    6)
-* dump core from inferior:               Core File Generation.
-                                                             (line    6)
-* dump data to a file:                   Dump/Restore Files. (line    6)
-* dump/restore files:                    Dump/Restore Files. (line    6)
-* DVC register:                          PowerPC Embedded.   (line    6)
-* DWARF compilation units cache:         Maintenance Commands.
-                                                             (line  394)
-* DWARF DIEs:                            Debugging Output.   (line   56)
-* DWARF frame unwinders:                 Maintenance Commands.
-                                                             (line  408)
-* DWARF Line Tables:                     Debugging Output.   (line   61)
-* DWARF Reading:                         Debugging Output.   (line   68)
-* DWARF-2 CFI and CRIS:                  CRIS.               (line   18)
-* dynamic linking:                       Files.              (line  123)
-* dynamic printf:                        Dynamic Printf.     (line    6)
-* dynamic varobj:                        GDB/MI Variable Objects.
-                                                             (line  166)
-* editing:                               Editing.            (line   15)
-* editing command lines:                 Readline Bare Essentials.
-                                                             (line    6)
-* editing source files:                  Edit.               (line    6)
-* eight-bit characters in strings:       Print Settings.     (line  455)
-* elaboration phase:                     Starting.           (line   92)
-* ELinOS system-wide configuration script: System-wide Configuration Scripts.
-                                                             (line   15)
-* Emacs:                                 Emacs.              (line    6)
-* empty response, for unsupported packets: Overview.         (line   97)
-* enable/disable a breakpoint:           Disabling.          (line    6)
-* enabling and disabling probes:         Static Probe Points.
-                                                             (line   52)
-* entering numbers:                      Numbers.            (line    6)
-* environment (of your program):         Environment.        (line    6)
-* errno values, in file-i/o protocol:    Errno Values.       (line    6)
-* error on valid input:                  Bug Criteria.       (line   12)
-* event debugging info:                  Debugging Output.   (line   81)
-* event designators:                     Event Designators.  (line    6)
-* event handling:                        Set Catchpoints.    (line    6)
-* examine process image:                 Process Information.
-                                                             (line    6)
-* examining data:                        Data.               (line    6)
-* examining memory:                      Memory.             (line    9)
-* exception handlers:                    Set Catchpoints.    (line    6)
-* exceptions, guile:                     Guile Exception Handling.
-                                                             (line    6)
-* exceptions, python:                    Exception Handling. (line    6)
-* exec events, remote reply:             Stop Reply Packets. (line  141)
-* executable file:                       Files.              (line   16)
-* executable file target:                Target Commands.    (line   50)
-* executable file, for remote target:    Remote Configuration.
-                                                             (line  102)
-* execute commands from a file:          Command Files.      (line   17)
-* execute forward or backward in time:   Reverse Execution.  (line   92)
-* execute remote command, remote request: General Query Packets.
-                                                             (line  536)
-* execution, foreground, background and asynchronous: Background Execution.
-                                                             (line    6)
-* exit status of shell commands:         Convenience Vars.   (line  187)
-* exiting GDB:                           Quitting GDB.       (line    6)
-* expand macro once:                     Macros.             (line   38)
-* expanding preprocessor macros:         Macros.             (line   29)
-* explicit locations:                    Explicit Locations. (line    6)
-* explore type:                          Data.               (line  234)
-* explore value:                         Data.               (line  227)
-* exploring hierarchical data structures: Data.              (line  125)
-* expression debugging info:             Debugging Output.   (line   86)
-* expression parser, debugging info:     Debugging Output.   (line  152)
-* expressions:                           Expressions.        (line    6)
-* expressions in Ada:                    Ada.                (line   11)
-* expressions in C or C++:               C.                  (line    6)
-* expressions in C++:                    C Plus Plus Expressions.
-                                                             (line    6)
-* expressions in Modula-2:               Modula-2.           (line   12)
-* extend GDB for remote targets:         Connecting.         (line  272)
-* extending GDB:                         Extending GDB.      (line    6)
-* extra signal information:              Signals.            (line  156)
-* F packet:                              Packets.            (line  150)
-* F reply packet:                        The F Reply Packet. (line    6)
-* F request packet:                      The F Request Packet.
-                                                             (line    6)
-* fast tracepoints:                      Set Tracepoints.    (line   24)
-* fast tracepoints, setting:             Create and Delete Tracepoints.
-                                                             (line   50)
-* fatal signal:                          Bug Criteria.       (line    9)
-* fatal signals:                         Signals.            (line   15)
-* features of the remote protocol:       General Query Packets.
-                                                             (line  589)
-* file name canonicalization:            Files.              (line  520)
-* file transfer:                         File Transfer.      (line    6)
-* file transfer, remote protocol:        Host I/O Packets.   (line    6)
-* file-i/o examples:                     File-I/O Examples.  (line    6)
-* file-i/o overview:                     File-I/O Overview.  (line    6)
-* File-I/O remote protocol extension:    File-I/O Remote Protocol Extension.
-                                                             (line    6)
-* file-i/o reply packet:                 The F Reply Packet. (line    6)
-* file-i/o request packet:               The F Request Packet.
-                                                             (line    6)
-* filename-display:                      Backtrace.          (line  202)
-* find trace snapshot:                   tfind.              (line    6)
-* flinching:                             Messages/Warnings.  (line   49)
-* float promotion:                       ABI.                (line   34)
-* floating point:                        Floating Point Hardware.
-                                                             (line    6)
-* floating point registers:              Registers.          (line   15)
-* floating point, MIPS remote:           MIPS Embedded.      (line   13)
-* focus of debugging:                    Threads.            (line   29)
-* foo:                                   Symbol Errors.      (line   54)
-* foreground execution:                  Background Execution.
-                                                             (line    6)
-* fork events, remote reply:             Stop Reply Packets. (line  104)
-* fork, debugging programs which call:   Forks.              (line    6)
-* format options:                        Print Settings.     (line    6)
-* formatted output:                      Output Formats.     (line    6)
-* Fortran:                               Summary.            (line   40)
-* Fortran Defaults:                      Fortran Defaults.   (line    6)
-* Fortran modules, information about:    Symbols.            (line  555)
-* Fortran operators and expressions:     Fortran Operators.  (line    6)
-* Fortran-specific support in GDB:       Fortran.            (line    6)
-* FR-V shared-library debugging:         Debugging Output.   (line  193)
-* frame debugging info:                  Debugging Output.   (line  101)
-* frame decorator api:                   Frame Decorator API.
-                                                             (line    6)
-* frame filters api:                     Frame Filter API.   (line    6)
-* frame information, printing:           Print Settings.     (line  314)
-* frame level:                           Frames.             (line   28)
-* frame number:                          Frames.             (line   28)
-* frame pointer:                         Frames.             (line   21)
-* frame pointer register:                Registers.          (line   31)
-* frame, definition:                     Frames.             (line    6)
-* frameless execution:                   Frames.             (line   34)
-* frames in guile:                       Frames In Guile.    (line    6)
-* frames in python:                      Frames In Python.   (line    6)
-* free memory information (MS-DOS):      DJGPP Native.       (line   19)
-* FreeBSD:                               FreeBSD.            (line    6)
-* FreeBSD LWP debug messages:            Debugging Output.   (line   92)
-* FreeBSD native target debug messages:  Debugging Output.   (line   97)
-* fstat, file-i/o system call:           stat/fstat.         (line    6)
-* Fujitsu:                               Remote Stub.        (line   68)
-* full symbol tables, listing GDB's internal: Symbols.       (line  645)
-* function call arguments, optimized out: Backtrace.         (line  133)
-* function entry/exit, wrong values of variables: Variables. (line  106)
-* functions and variables by Fortran module: Symbols.        (line  555)
-* functions without line info, and stepping: Continuing and Stepping.
-                                                             (line   92)
-* g packet:                              Packets.            (line  155)
-* G packet:                              Packets.            (line  183)
-* g++, GNU C++ compiler:                 C.                  (line   10)
-* garbled pointers:                      DJGPP Native.       (line   42)
-* GCC and C++:                           C Plus Plus Expressions.
-                                                             (line    8)
-* GDB bugs, reporting:                   Bug Reporting.      (line    6)
-* GDB internal error:                    Maintenance Commands.
-                                                             (line  197)
-* gdb module:                            Basic Python.       (line   28)
-* gdb objects:                           GDB Scheme Data Types.
-                                                             (line    6)
-* GDB reference card:                    Formatting Documentation.
-                                                             (line    6)
-* GDB startup:                           Startup.            (line    6)
-* GDB version number:                    Help.               (line  148)
-* gdb.ini:                               Startup.            (line   69)
-* gdb.printing:                          gdb.printing.       (line    6)
-* gdb.prompt:                            gdb.prompt.         (line    6)
-* gdb.types:                             gdb.types.          (line    6)
-* gdb.Value:                             Values From Inferior.
-                                                             (line    6)
-* GDB/MI development:                    GDB/MI Development and Front Ends.
-                                                             (line    6)
-* GDB/MI General Design:                 GDB/MI General Design.
-                                                             (line    6)
-* GDB/MI, async records:                 GDB/MI Async Records.
-                                                             (line    6)
-* GDB/MI, breakpoint commands:           GDB/MI Breakpoint Commands.
-                                                             (line    6)
-* GDB/MI, compatibility with CLI:        GDB/MI Compatibility with CLI.
-                                                             (line    6)
-* GDB/MI, data manipulation:             GDB/MI Data Manipulation.
-                                                             (line    6)
-* GDB/MI, input syntax:                  GDB/MI Input Syntax.
-                                                             (line    6)
-* GDB/MI, its purpose:                   GDB/MI.             (line    9)
-* GDB/MI, output syntax:                 GDB/MI Output Syntax.
-                                                             (line    6)
-* GDB/MI, result records:                GDB/MI Result Records.
-                                                             (line    6)
-* GDB/MI, simple examples:               GDB/MI Simple Examples.
-                                                             (line    6)
-* GDB/MI, stream records:                GDB/MI Stream Records.
-                                                             (line    6)
-* gdbarch debugging info:                Debugging Output.   (line   23)
-* GDBHISTFILE, environment variable:     Command History.    (line   26)
-* GDBHISTSIZE, environment variable:     Command History.    (line   45)
-* gdbserver, command-line arguments:     Server.             (line   34)
-* gdbserver, connecting:                 Connecting.         (line    6)
-* gdbserver, search path for libthread_db: Server.           (line  254)
-* gdbserver, send all debug output to a single file: Server. (line  148)
-* gdbserver, target extended-remote mode: Connecting.        (line    6)
-* gdbserver, target remote mode:         Connecting.         (line    6)
-* gdbserver, types of connections:       Connecting.         (line    6)
-* GDT:                                   DJGPP Native.       (line   24)
-* get thread information block address:  General Query Packets.
-                                                             (line  303)
-* get thread-local storage address, remote request: General Query Packets.
-                                                             (line  271)
-* gettimeofday, file-i/o system call:    gettimeofday.       (line    6)
-* getting structure elements using gdb.Field objects as subscripts: Values From Inferior.
-                                                             (line   40)
-* global debugging information directories: Separate Debug Files.
-                                                             (line    6)
-* global thread identifier (GDB):        Threads.            (line   88)
-* global thread number:                  Threads.            (line   88)
-* GNAT descriptive types:                Ada Glitches.       (line   57)
-* GNAT encoding:                         Ada Glitches.       (line   57)
-* GNU C++:                               C.                  (line   10)
-* GNU Emacs:                             Emacs.              (line    6)
-* GNU Hurd debugging:                    Hurd Native.        (line    6)
-* GNU/Hurd debug messages:               Debugging Output.   (line  106)
-* GNU/Linux LWP debug messages:          Debugging Output.   (line  121)
-* GNU/Linux namespaces debug messages:   Debugging Output.   (line  125)
-* Go (programming language):             Go.                 (line    6)
-* guile api:                             Guile API.          (line    6)
-* guile architectures:                   Architectures In Guile.
-                                                             (line    6)
-* guile auto-loading:                    Guile Auto-loading. (line    6)
-* guile commands:                        Guile Commands.     (line    6)
-* guile commands <1>:                    Commands In Guile.  (line    6)
-* guile configuration:                   Guile Configuration.
-                                                             (line    6)
-* guile exceptions:                      Guile Exception Handling.
-                                                             (line    6)
-* guile gdb module:                      Basic Guile.        (line   37)
-* guile iterators:                       Iterators In Guile. (line    6)
-* guile modules:                         Guile Modules.      (line    6)
-* guile pagination:                      Basic Guile.        (line    6)
-* guile parameters:                      Parameters In Guile.
-                                                             (line    6)
-* guile pretty printing api:             Guile Pretty Printing API.
-                                                             (line    6)
-* guile scripting:                       Guile.              (line    6)
-* guile scripts directory:               Guile Introduction. (line   16)
-* guile stdout:                          Basic Guile.        (line    6)
-* guile, working with types:             Types In Guile.     (line    6)
-* guile, working with values from inferior: Values From Inferior In Guile.
-                                                             (line    6)
-* H packet:                              Packets.            (line  193)
-* handling signals:                      Signals.            (line   27)
-* hardware breakpoints:                  Set Breaks.         (line   61)
-* hardware debug registers:              Maintenance Commands.
-                                                             (line  454)
-* hardware watchpoints:                  Set Watchpoints.    (line   31)
-* hash mark while downloading:           Target Commands.    (line   98)
-* heuristic-fence-post (Alpha, MIPS):    MIPS.               (line   14)
-* history events:                        Event Designators.  (line    8)
-* history expansion:                     History Interaction.
-                                                             (line    6)
-* history expansion, turn on/off:        Command History.    (line   70)
-* history file:                          Command History.    (line   26)
-* history number:                        Value History.      (line   13)
-* history of values printed by GDB:      Value History.      (line    6)
-* history size:                          Command History.    (line   45)
-* history substitution:                  Command History.    (line   26)
-* hooks, for commands:                   Hooks.              (line    6)
-* hooks, post-command:                   Hooks.              (line   11)
-* hooks, pre-command:                    Hooks.              (line    6)
-* host character set:                    Character Sets.     (line    6)
-* Host I/O, remote protocol:             Host I/O Packets.   (line    6)
-* how many arguments (user-defined commands): Define.        (line   25)
-* HPPA support:                          HPPA.               (line    6)
-* i packet:                              Packets.            (line  207)
-* I packet:                              Packets.            (line  212)
-* i/o:                                   Input/Output.       (line    6)
-* I/O registers (Atmel AVR):             AVR.                (line   10)
-* i386:                                  Remote Stub.        (line   56)
-* i386-stub.c:                           Remote Stub.        (line   56)
-* IDT:                                   DJGPP Native.       (line   24)
-* ignore count (of breakpoint):          Conditions.         (line   79)
-* in-process agent protocol:             In-Process Agent Protocol.
-                                                             (line    6)
-* incomplete type:                       Symbols.            (line  346)
-* indentation in structure display:      Print Settings.     (line  417)
-* index files:                           Index Files.        (line    6)
-* index section format:                  Index Section Format.
-                                                             (line    6)
-* inferior:                              Inferiors and Programs.
-                                                             (line   13)
-* inferior debugging info:               Debugging Output.   (line  110)
-* inferior events in Python:             Events In Python.   (line    6)
-* inferior functions, calling:           Calling.            (line    6)
-* inferior tty:                          Input/Output.       (line   44)
-* inferiors in Python:                   Inferiors In Python.
-                                                             (line    6)
-* 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.
-                                                             (line  306)
-* info line, repeated calls:             Machine Code.       (line   40)
-* info proc cmdline:                     Process Information.
-                                                             (line   41)
-* info proc cwd:                         Process Information.
-                                                             (line   45)
-* info proc exe:                         Process Information.
-                                                             (line   49)
-* info proc files:                       Process Information.
-                                                             (line   53)
-* information about static tracepoint markers: Listing Static Tracepoint Markers.
-                                                             (line    6)
-* information about tracepoints:         Listing Tracepoints.
-                                                             (line    6)
-* inheritance:                           Debugging C Plus Plus.
-                                                             (line   26)
-* init file:                             Startup.            (line   11)
-* init file name:                        Startup.            (line   69)
-* initial frame:                         Frames.             (line   12)
-* initialization file, readline:         Readline Init File. (line    6)
-* injecting code:                        Compiling and Injecting Code.
-                                                             (line    6)
-* inline functions, debugging:           Inline Functions.   (line    6)
-* innermost frame:                       Frames.             (line   12)
-* input syntax for GDB/MI:               GDB/MI Input Syntax.
-                                                             (line    6)
-* installation:                          Installing GDB.     (line    6)
-* instructions, assembly:                Machine Code.       (line   43)
-* integral datatypes, in file-i/o protocol: Integral Datatypes.
-                                                             (line    6)
-* Intel:                                 Remote Stub.        (line   56)
-* Intel disassembly flavor:              Machine Code.       (line  237)
-* Intel Memory Protection Extensions (MPX).: i386.           (line   21)
-* Intel MPX boundary violations:         Signals.            (line  197)
-* Intel Processor Trace:                 Process Record and Replay.
-                                                             (line   75)
-* interaction, readline:                 Readline Interaction.
-                                                             (line    6)
-* internal commands:                     Maintenance Commands.
-                                                             (line    6)
-* internal errors, control of GDB behavior: Maintenance Commands.
-                                                             (line  197)
-* internal GDB breakpoints:              Set Breaks.         (line  374)
-* interrupt:                             Quitting GDB.       (line   13)
-* interrupt debuggee on MS-Windows:      Cygwin Native.      (line    9)
-* interrupt remote programs:             Remote Configuration.
-                                                             (line   36)
-* interrupt remote programs <1>:         Remote Configuration.
-                                                             (line  108)
-* interrupting remote programs:          Connecting.         (line  239)
-* interrupting remote targets:           Bootstrapping.      (line   25)
-* interrupts (remote protocol):          Interrupts.         (line    6)
-* invalid input:                         Bug Criteria.       (line   16)
-* invoke another interpreter:            Interpreters.       (line   39)
-* ipa protocol commands:                 IPA Protocol Commands.
-                                                             (line    6)
-* ipa protocol objects:                  IPA Protocol Objects.
-                                                             (line    6)
-* isatty, file-i/o system call:          isatty.             (line    6)
-* JIT compilation interface:             JIT Interface.      (line    6)
-* JIT debug info reader:                 Custom Debug Info.  (line    6)
-* just-in-time compilation:              JIT Interface.      (line    6)
-* just-in-time compilation, debugging messages: Debugging Output.
-                                                             (line  117)
-* k packet:                              Packets.            (line  216)
-* kernel crash dump:                     BSD libkvm Interface.
-                                                             (line    6)
-* kernel memory image:                   BSD libkvm Interface.
-                                                             (line    6)
-* kill ring:                             Readline Killing Commands.
-                                                             (line   18)
-* killing text:                          Readline Killing Commands.
-                                                             (line    6)
-* languages:                             Languages.          (line    6)
-* last tracepoint number:                Create and Delete Tracepoints.
-                                                             (line  122)
-* latest breakpoint:                     Set Breaks.         (line    6)
-* lazy strings in guile:                 Lazy Strings In Guile.
-                                                             (line    6)
-* lazy strings in python:                Lazy Strings In Python.
-                                                             (line    6)
-* LDT:                                   DJGPP Native.       (line   24)
-* leaving GDB:                           Quitting GDB.       (line    6)
-* libkvm:                                BSD libkvm Interface.
-                                                             (line    6)
-* library list format, remote protocol:  Library List Format.
-                                                             (line    6)
-* library list format, remote protocol <1>: Library List Format for SVR4 Targets.
-                                                             (line    6)
-* limit hardware breakpoints and watchpoints: Remote Configuration.
-                                                             (line   79)
-* limit hardware watchpoints length:     Remote Configuration.
-                                                             (line   91)
-* limit on number of printed array elements: Print Settings. (line  141)
-* limits, in file-i/o protocol:          Limits.             (line    6)
-* line tables in python:                 Line Tables In Python.
-                                                             (line    6)
-* line tables, listing GDB's internal:   Symbols.            (line  692)
-* linespec locations:                    Linespec Locations. (line    6)
-* Linux lightweight processes:           Debugging Output.   (line  121)
-* list active threads, remote request:   General Query Packets.
-                                                             (line  238)
-* list of supported file-i/o calls:      List of Supported Calls.
-                                                             (line    6)
-* list output in GDB/MI:                 GDB/MI Output Syntax.
-                                                             (line  117)
-* list, how many lines to display:       List.               (line   30)
-* listing GDB's internal line tables:    Symbols.            (line  692)
-* listing GDB's internal symbol tables:  Symbols.            (line  645)
-* listing machine instructions:          Machine Code.       (line   43)
-* listing mapped overlays:               Overlay Commands.   (line   60)
-* lists of breakpoints:                  Breakpoints.        (line   45)
-* load address, overlay's:               How Overlays Work.  (line    6)
-* load shared library:                   Files.              (line  327)
-* load symbols from memory:              Files.              (line  193)
-* local socket, target remote:           Connecting.         (line  140)
-* local variables:                       Symbols.            (line  415)
-* locate address:                        Output Formats.     (line   35)
-* location:                              Specify Location.   (line    6)
-* lock scheduler:                        All-Stop Mode.      (line   37)
-* log output in GDB/MI:                  GDB/MI Output Syntax.
-                                                             (line  113)
-* logging file name:                     Logging Output.     (line   12)
-* logging GDB output:                    Logging Output.     (line    6)
-* lseek flags, in file-i/o protocol:     Lseek Flags.        (line    6)
-* lseek, file-i/o system call:           lseek.              (line    6)
-* m packet:                              Packets.            (line  239)
-* M packet:                              Packets.            (line  259)
-* m680x0:                                Remote Stub.        (line   59)
-* m68k-stub.c:                           Remote Stub.        (line   59)
-* Mach-O symbols processing:             Debugging Output.   (line  130)
-* machine instructions:                  Machine Code.       (line   43)
-* macro definition, showing:             Macros.             (line   47)
-* macro expansion, showing the results of preprocessor: Macros.
-                                                             (line   29)
-* macros, example of debugging with:     Macros.             (line   83)
-* macros, from debug info:               Macros.             (line   47)
-* macros, user-defined:                  Macros.             (line   59)
-* mailing lists:                         GDB/MI Development and Front Ends.
-                                                             (line   78)
-* maintenance commands:                  Maintenance Commands.
-                                                             (line    6)
-* Man pages:                             Man Pages.          (line    6)
-* managing frame filters:                Frame Filter Management.
-                                                             (line    6)
-* manual overlay debugging:              Overlay Commands.   (line   23)
-* map an overlay:                        Overlay Commands.   (line   30)
-* mapinfo list, QNX Neutrino:            Process Information.
-                                                             (line  130)
-* mapped address:                        How Overlays Work.  (line    6)
-* mapped overlays:                       How Overlays Work.  (line    6)
-* markers, static tracepoints:           Set Tracepoints.    (line   28)
-* maximum value for offset of closest symbol: Print Settings.
-                                                             (line   70)
-* member functions:                      C Plus Plus Expressions.
-                                                             (line   16)
-* memory address space mappings:         Process Information.
-                                                             (line   80)
-* memory map format:                     Memory Map Format.  (line    6)
-* memory region attributes:              Memory Region Attributes.
-                                                             (line    6)
-* memory tracing:                        Breakpoints.        (line   17)
-* memory transfer, in file-i/o protocol: Memory Transfer.    (line    6)
-* memory used by commands:               Maintenance Commands.
-                                                             (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)
-* mi interpreter:                        Interpreters.       (line   26)
-* mi1 interpreter:                       Interpreters.       (line   37)
-* mi2 interpreter:                       Interpreters.       (line   34)
-* mi3 interpreter:                       Interpreters.       (line   31)
-* minimal language:                      Unsupported Languages.
-                                                             (line    6)
-* minimal symbol dump:                   Symbols.            (line  619)
-* Minimal symbols and DLLs:              Non-debug DLL Symbols.
-                                                             (line    6)
-* MIPS addresses, masking:               MIPS.               (line   80)
-* MIPS remote floating point:            MIPS Embedded.      (line   13)
-* MIPS stack:                            MIPS.               (line    6)
-* miscellaneous settings:                Other Misc Settings.
-                                                             (line    6)
-* MMX registers (x86):                   Registers.          (line   76)
-* mode_t values, in file-i/o protocol:   mode_t Values.      (line    6)
-* Modula-2:                              Summary.            (line   29)
-* Modula-2 built-ins:                    Built-In Func/Proc. (line    6)
-* Modula-2 checks:                       M2 Checks.          (line    6)
-* Modula-2 constants:                    Built-In Func/Proc. (line  114)
-* Modula-2 defaults:                     M2 Defaults.        (line    6)
-* Modula-2 operators:                    M2 Operators.       (line    6)
-* Modula-2 types:                        M2 Types.           (line    6)
-* Modula-2, deviations from:             Deviations.         (line    6)
-* Modula-2, GDB support:                 Modula-2.           (line    6)
-* module functions and variables:        Symbols.            (line  555)
-* modules:                               Symbols.            (line  547)
-* monitor commands, for gdbserver:       Server.             (line  218)
-* Motorola 680x0:                        Remote Stub.        (line   59)
-* MS Windows debugging:                  Cygwin Native.      (line    6)
-* MS-DOS system info:                    DJGPP Native.       (line   19)
-* MS-DOS-specific commands:              DJGPP Native.       (line    6)
-* multiple locations, breakpoints:       Set Breaks.         (line  200)
-* multiple processes:                    Forks.              (line    6)
-* multiple targets:                      Active Targets.     (line    6)
-* multiple threads:                      Threads.            (line    6)
-* multiple threads, backtrace:           Backtrace.          (line   97)
-* multiple-symbols menu:                 Ambiguous Expressions.
-                                                             (line   51)
-* multiprocess extensions, in remote protocol: General Query Packets.
-                                                             (line  913)
-* name a thread:                         Threads.            (line  247)
-* names of symbols:                      Symbols.            (line   14)
-* namespace in C++:                      C Plus Plus Expressions.
-                                                             (line   20)
-* native Cygwin debugging:               Cygwin Native.      (line    6)
-* native DJGPP debugging:                DJGPP Native.       (line    6)
-* native script auto-loading:            Auto-loading sequences.
-                                                             (line    6)
-* native target:                         Target Commands.    (line   85)
-* negative breakpoint numbers:           Set Breaks.         (line  374)
-* never read symbols:                    Files.              (line  101)
-* New SYSTAG message:                    Threads.            (line   35)
-* new user interface:                    Interpreters.       (line   68)
-* Newlib OS ABI and its influence on the longjmp handling: ABI.
-                                                             (line   11)
-* Nios II architecture:                  Nios II.            (line    6)
-* no debug info functions:               Calling.            (line   78)
-* no debug info variables:               Variables.          (line  142)
-* non-member C++ functions, set breakpoint in: Set Breaks.   (line  113)
-* non-stop mode:                         Non-Stop Mode.      (line    6)
-* non-stop mode, and process record and replay: Process Record and Replay.
-                                                             (line  101)
-* non-stop mode, and set displaced-stepping: Maintenance Commands.
-                                                             (line  129)
-* non-stop mode, remote request:         General Query Packets.
-                                                             (line  379)
-* noninvasive task options:              Hurd Native.        (line   72)
-* notation, readline:                    Readline Bare Essentials.
-                                                             (line    6)
-* notational conventions, for GDB/MI:    GDB/MI.             (line   25)
-* notification packets:                  Notification Packets.
-                                                             (line    6)
-* notify output in GDB/MI:               GDB/MI Output Syntax.
-                                                             (line  102)
-* NULL elements in arrays:               Print Settings.     (line  408)
-* number of array elements to print:     Print Settings.     (line  141)
-* number representation:                 Numbers.            (line    6)
-* numbers for breakpoints:               Breakpoints.        (line   38)
-* object files, relocatable, reading symbols from: Files.    (line  146)
-* Objective-C:                           Objective-C.        (line    6)
-* Objective-C, classes and selectors:    Symbols.            (line  570)
-* Objective-C, print objects:            The Print Command with Objective-C.
-                                                             (line    6)
-* OBJFILE-gdb.gdb:                       objfile-gdbdotext file.
-                                                             (line    6)
-* OBJFILE-gdb.py:                        objfile-gdbdotext file.
-                                                             (line    6)
-* OBJFILE-gdb.scm:                       objfile-gdbdotext file.
-                                                             (line    6)
-* objfiles in guile:                     Objfiles In Guile.  (line    6)
-* objfiles in python:                    Objfiles In Python. (line    6)
-* observer debugging info:               Debugging Output.   (line  142)
-* octal escapes in strings:              Print Settings.     (line  455)
-* online documentation:                  Help.               (line    6)
-* opaque data types:                     Symbols.            (line  582)
-* open flags, in file-i/o protocol:      Open Flags.         (line    6)
-* open, file-i/o system call:            open.               (line    6)
-* OpenCL C:                              OpenCL C.           (line    6)
-* OpenCL C Datatypes:                    OpenCL C Datatypes. (line    6)
-* OpenCL C Expressions:                  OpenCL C Expressions.
-                                                             (line    6)
-* OpenCL C Operators:                    OpenCL C Operators. (line    6)
-* OpenRISC 1000:                         OpenRISC 1000.      (line    6)
-* operate-and-get-next:                  Editing.            (line   32)
-* operating system information:          Operating System Information.
-                                                             (line    6)
-* operating system information, process list: Process list.  (line    6)
-* optimized code, debugging:             Optimized Code.     (line    6)
-* optimized code, wrong values of variables: Variables.      (line  106)
-* optimized out value in guile:          Values From Inferior In Guile.
-                                                             (line  102)
-* optimized out value in Python:         Values From Inferior.
-                                                             (line   70)
-* optimized out, in backtrace:           Backtrace.          (line  133)
-* optional debugging messages:           Debugging Output.   (line    6)
-* optional warnings:                     Messages/Warnings.  (line    6)
-* OS ABI:                                ABI.                (line   11)
-* OS information:                        OS Information.     (line    6)
-* out-of-line single-stepping:           Maintenance Commands.
-                                                             (line  112)
-* outermost frame:                       Frames.             (line   12)
-* output formats:                        Output Formats.     (line    6)
-* output syntax of GDB/MI:               GDB/MI Output Syntax.
-                                                             (line    6)
-* overlay area:                          How Overlays Work.  (line    6)
-* overlay example program:               Overlay Sample Program.
-                                                             (line    6)
-* overlays:                              Overlays.           (line    6)
-* overlays, setting breakpoints in:      Overlay Commands.   (line   91)
-* overloaded functions, calling:         C Plus Plus Expressions.
-                                                             (line   26)
-* overloaded functions, overload resolution: Debugging C Plus Plus.
-                                                             (line   59)
-* overloading in C++:                    Debugging C Plus Plus.
-                                                             (line   15)
-* overloading, Ada:                      Overloading support for Ada.
-                                                             (line    6)
-* p packet:                              Packets.            (line  271)
-* P packet:                              Packets.            (line  284)
-* packet acknowledgment, for GDB remote: Packet Acknowledgment.
-                                                             (line    6)
-* packet size, remote protocol:          General Query Packets.
-                                                             (line  819)
-* packets, notification:                 Notification Packets.
-                                                             (line    6)
-* packets, reporting on stdout:          Debugging Output.   (line  159)
-* packets, tracepoint:                   Tracepoint Packets. (line    6)
-* page size:                             Screen Size.        (line    6)
-* page tables display (MS-DOS):          DJGPP Native.       (line   55)
-* pagination:                            Screen Size.        (line    6)
-* parameters in guile:                   Parameters In Guile.
-                                                             (line    6)
-* parameters in python:                  Parameters In Python.
-                                                             (line    6)
-* partial symbol dump:                   Symbols.            (line  619)
-* partial symbol tables, listing GDB's internal: Symbols.    (line  645)
-* Pascal:                                Summary.            (line   35)
-* Pascal objects, static members display: Print Settings.    (line  570)
-* Pascal support in GDB, limitations:    Pascal.             (line    6)
-* pass signals to inferior, remote request: General Query Packets.
-                                                             (line  440)
-* patching binaries:                     Patching.           (line    6)
-* patching object files:                 Files.              (line   26)
-* pause current task (GNU Hurd):         Hurd Native.        (line   48)
-* pause current thread (GNU Hurd):       Hurd Native.        (line   90)
-* pauses in output:                      Screen Size.        (line    6)
-* pending breakpoints:                   Set Breaks.         (line  245)
-* physical address from linear address:  DJGPP Native.       (line   80)
-* physname:                              Debugging Output.   (line   41)
-* pipe, target remote to:                Connecting.         (line  227)
-* pipes:                                 Starting.           (line   64)
-* pointer values, in file-i/o protocol:  Pointer Values.     (line    6)
-* pointer, finding referent:             Print Settings.     (line   80)
-* port rights, GNU Hurd:                 Hurd Native.        (line   84)
-* port sets, GNU Hurd:                   Hurd Native.        (line   84)
-* PowerPC architecture:                  PowerPC.            (line    6)
-* prefix for data files:                 Data Files.         (line    6)
-* prefix for executable and shared library file names: Files.
-                                                             (line  386)
-* premature return from system calls:    Interrupted System Calls.
-                                                             (line    6)
-* preprocessor macro expansion, showing the results of: Macros.
-                                                             (line   29)
-* pretty print arrays:                   Print Settings.     (line  115)
-* pretty print C++ virtual function tables: Print Settings.  (line  581)
-* pretty-printer commands:               Pretty-Printer Commands.
-                                                             (line    6)
-* print all frame argument values:       Print Settings.     (line  154)
-* print an Objective-C object description: The Print Command with Objective-C.
-                                                             (line   11)
-* print array indexes:                   Print Settings.     (line  125)
-* print frame argument values for scalars only: Print Settings.
-                                                             (line  154)
-* print list of auto-loaded canned sequences of commands scripts: Auto-loading sequences.
-                                                             (line   21)
-* print list of auto-loaded Guile scripts: Guile Auto-loading.
-                                                             (line   23)
-* print list of auto-loaded Python scripts: Python Auto-loading.
-                                                             (line   23)
-* print messages on inferior start and exit: Inferiors and Programs.
-                                                             (line  126)
-* print messages on thread start and exit: Threads.          (line  272)
-* print messages when symbols are loaded: Symbols.           (line  600)
-* print settings:                        Print Settings.     (line    6)
-* print structures in indented form:     Print Settings.     (line  417)
-* print/don't print memory addresses:    Print Settings.     (line   13)
-* printing byte arrays:                  Output Formats.     (line   60)
-* printing data:                         Data.               (line    6)
-* printing frame argument values:        Print Settings.     (line  154)
-* printing frame information:            Print Settings.     (line  314)
-* printing nested structures:            Print Settings.     (line  362)
-* printing strings:                      Output Formats.     (line   60)
-* probe static tracepoint marker:        Create and Delete Tracepoints.
-                                                             (line   75)
-* probing markers, static tracepoints:   Set Tracepoints.    (line   28)
-* process detailed status information:   Process Information.
-                                                             (line   88)
-* process ID:                            Process Information.
-                                                             (line   25)
-* process info via /proc:                Process Information.
-                                                             (line    6)
-* process list, QNX Neutrino:            Process Information.
-                                                             (line  126)
-* process record and replay:             Process Record and Replay.
-                                                             (line    6)
-* process status register:               Registers.          (line   31)
-* processes, multiple:                   Forks.              (line    6)
-* procfs API calls:                      Process Information.
-                                                             (line  105)
-* profiling GDB:                         Maintenance Commands.
-                                                             (line  438)
-* program counter register:              Registers.          (line   31)
-* program entry point:                   Backtrace.          (line  155)
-* programming in guile:                  Guile API.          (line    6)
-* programming in python:                 Python API.         (line    6)
-* progspaces in guile:                   Progspaces In Guile.
-                                                             (line    6)
-* progspaces in python:                  Progspaces In Python.
-                                                             (line    6)
-* prompt:                                Prompt.             (line    6)
-* protocol basics, file-i/o:             Protocol Basics.    (line    6)
-* protocol, GDB remote serial:           Overview.           (line   14)
-* protocol-specific representation of datatypes, in file-i/o protocol: Protocol-specific Representation of Datatypes.
-                                                             (line    6)
-* python api:                            Python API.         (line    6)
-* Python architectures:                  Architectures In Python.
-                                                             (line    6)
-* Python auto-loading:                   Python Auto-loading.
-                                                             (line    6)
-* python commands:                       Python Commands.    (line    6)
-* python commands <1>:                   Commands In Python. (line    6)
-* python convenience functions:          Functions In Python.
-                                                             (line    6)
-* python directory:                      Python.             (line   12)
-* python exceptions:                     Exception Handling. (line    6)
-* python finish breakpoints:             Finish Breakpoints in Python.
-                                                             (line    6)
-* python functions:                      Basic Python.       (line   28)
-* python module:                         Basic Python.       (line   28)
-* python modules:                        Python modules.     (line    6)
-* python pagination:                     Basic Python.       (line    6)
-* python parameters:                     Parameters In Python.
-                                                             (line    6)
-* python pretty printing api:            Pretty Printing API.
-                                                             (line    6)
-* python scripting:                      Python.             (line    6)
-* python stdout:                         Basic Python.       (line    6)
-* Python, working with types:            Types In Python.    (line    6)
-* python, working with values from inferior: Values From Inferior.
-                                                             (line    6)
-* q packet:                              Packets.            (line  296)
-* Q packet:                              Packets.            (line  296)
-* QAllow packet:                         General Query Packets.
-                                                             (line   44)
-* qAttached packet:                      General Query Packets.
-                                                             (line 1381)
-* qC packet:                             General Query Packets.
-                                                             (line   55)
-* QCatchSyscalls packet:                 General Query Packets.
-                                                             (line  401)
-* qCRC packet:                           General Query Packets.
-                                                             (line   65)
-* QDisableRandomization packet:          General Query Packets.
-                                                             (line   84)
-* QEnvironmentHexEncoded packet:         General Query Packets.
-                                                             (line  144)
-* QEnvironmentReset packet:              General Query Packets.
-                                                             (line  197)
-* QEnvironmentUnset packet:              General Query Packets.
-                                                             (line  173)
-* qfThreadInfo packet:                   General Query Packets.
-                                                             (line  238)
-* qGetTIBAddr packet:                    General Query Packets.
-                                                             (line  303)
-* qGetTLSAddr packet:                    General Query Packets.
-                                                             (line  271)
-* QNonStop packet:                       General Query Packets.
-                                                             (line  379)
-* qOffsets packet:                       General Query Packets.
-                                                             (line  342)
-* qP packet:                             General Query Packets.
-                                                             (line  369)
-* QPassSignals packet:                   General Query Packets.
-                                                             (line  440)
-* QProgramSignals packet:                General Query Packets.
-                                                             (line  469)
-* qRcmd packet:                          General Query Packets.
-                                                             (line  536)
-* qSearch memory packet:                 General Query Packets.
-                                                             (line  558)
-* QSetWorkingDir packet:                 General Query Packets.
-                                                             (line  219)
-* QStartNoAckMode packet:                General Query Packets.
-                                                             (line  575)
-* QStartupWithShell packet:              General Query Packets.
-                                                             (line  114)
-* qsThreadInfo packet:                   General Query Packets.
-                                                             (line  238)
-* qSupported packet:                     General Query Packets.
-                                                             (line  589)
-* qSymbol packet:                        General Query Packets.
-                                                             (line 1033)
-* qTBuffer packet:                       Tracepoint Packets. (line  393)
-* QTBuffer size packet:                  Tracepoint Packets. (line  406)
-* QTDisable packet:                      Tracepoint Packets. (line  209)
-* QTDisconnected packet:                 Tracepoint Packets. (line  228)
-* QTDP packet:                           Tracepoint Packets. (line   10)
-* QTDPsrc packet:                        Tracepoint Packets. (line   90)
-* QTDV packet:                           Tracepoint Packets. (line  121)
-* QTEnable packet:                       Tracepoint Packets. (line  204)
-* qTfP packet:                           Tracepoint Packets. (line  335)
-* QTFrame packet:                        Tracepoint Packets. (line  133)
-* qTfSTM packet:                         Tracepoint Packets. (line  352)
-* qTfV packet:                           Tracepoint Packets. (line  343)
-* QThreadEvents packet:                  General Query Packets.
-                                                             (line  509)
-* qThreadExtraInfo packet:               General Query Packets.
-                                                             (line 1076)
-* QTinit packet:                         Tracepoint Packets. (line  214)
-* qTMinFTPILen packet:                   Tracepoint Packets. (line  171)
-* QTNotes packet:                        Tracepoint Packets. (line  411)
-* qTP packet:                            Tracepoint Packets. (line  307)
-* QTro packet:                           Tracepoint Packets. (line  217)
-* QTSave packet:                         Tracepoint Packets. (line  387)
-* qTsP packet:                           Tracepoint Packets. (line  336)
-* qTsSTM packet:                         Tracepoint Packets. (line  352)
-* QTStart packet:                        Tracepoint Packets. (line  195)
-* qTStatus packet:                       Tracepoint Packets. (line  234)
-* qTSTMat packet:                        Tracepoint Packets. (line  381)
-* QTStop packet:                         Tracepoint Packets. (line  201)
-* qTsV packet:                           Tracepoint Packets. (line  344)
-* qTV packet:                            Tracepoint Packets. (line  318)
-* qualified thread ID:                   Threads.            (line   52)
-* query attached, remote request:        General Query Packets.
-                                                             (line 1381)
-* quotes in commands:                    Completion.         (line   83)
-* quoting Ada internal identifiers:      Additions to Ada.   (line   76)
-* quoting names:                         Symbols.            (line   14)
-* qXfer packet:                          General Query Packets.
-                                                             (line 1113)
-* r packet:                              Packets.            (line  300)
-* R packet:                              Packets.            (line  305)
-* range checking:                        Type Checking.      (line   45)
-* range stepping:                        Continuing and Stepping.
-                                                             (line  217)
-* ranged breakpoint:                     PowerPC Embedded.   (line   33)
-* ranges of breakpoints:                 Breakpoints.        (line   45)
-* Ravenscar Profile:                     Ravenscar Profile.  (line    6)
-* raw printing:                          Output Formats.     (line   76)
-* read special object, remote request:   General Query Packets.
-                                                             (line 1113)
-* read, file-i/o system call:            read.               (line    6)
-* read-only sections:                    Files.              (line  265)
-* reading symbols from relocatable object files: Files.      (line  146)
-* reading symbols immediately:           Files.              (line   94)
-* readline:                              Editing.            (line    6)
-* Readline application name:             Editing.            (line   29)
-* receive rights, GNU Hurd:              Hurd Native.        (line   84)
-* recent tracepoint number:              Create and Delete Tracepoints.
-                                                             (line  122)
-* record aggregates (Ada):               Omissions from Ada. (line   44)
-* record mode:                           Process Record and Replay.
-                                                             (line   19)
-* record serial communications on file:  Remote Configuration.
-                                                             (line   64)
-* recording a session script:            Bug Reporting.      (line  108)
-* recording inferior's execution and replaying it: Process Record and Replay.
-                                                             (line    6)
-* recordings in python:                  Recordings In Python.
-                                                             (line    6)
-* redirection:                           Input/Output.       (line    6)
-* reference card:                        Formatting Documentation.
-                                                             (line    6)
-* reference declarations:                C Plus Plus Expressions.
-                                                             (line   50)
-* register packet format, MIPS:          MIPS Register packet Format.
-                                                             (line    6)
-* registers:                             Registers.          (line    6)
-* regular expression:                    Set Breaks.         (line   90)
-* reloading the overlay table:           Overlay Commands.   (line   52)
-* relocatable object files, reading symbols from: Files.     (line  146)
-* remote async notification debugging info: Debugging Output.
-                                                             (line  136)
-* remote connection commands:            Connecting.         (line  120)
-* remote connection without stubs:       Server.             (line    6)
-* remote debugging:                      Remote Debugging.   (line    6)
-* remote debugging, connecting:          Connecting.         (line    6)
-* remote debugging, detach and program exit: Connecting.     (line   19)
-* remote debugging, symbol files:        Connecting.         (line   90)
-* remote debugging, types of connections: Connecting.        (line    6)
-* remote memory comparison:              Memory.             (line  142)
-* remote packets, enabling and disabling: Remote Configuration.
-                                                             (line  159)
-* remote programs, interrupting:         Connecting.         (line  239)
-* remote protocol debugging:             Debugging Output.   (line  159)
-* remote protocol, binary data:          Overview.           (line   63)
-* remote protocol, field separator:      Overview.           (line   55)
-* remote query requests:                 General Query Packets.
-                                                             (line    6)
-* remote serial debugging summary:       Debug Session.      (line    6)
-* remote serial debugging, overview:     Remote Stub.        (line   14)
-* remote serial protocol:                Overview.           (line   14)
-* remote serial stub:                    Stub Contents.      (line    6)
-* remote serial stub list:               Remote Stub.        (line   53)
-* remote serial stub, initialization:    Stub Contents.      (line   10)
-* remote serial stub, main routine:      Stub Contents.      (line   15)
-* remote stub, example:                  Remote Stub.        (line    6)
-* remote stub, support routines:         Bootstrapping.      (line    6)
-* remote target:                         Target Commands.    (line   58)
-* remote target, file transfer:          File Transfer.      (line    6)
-* remote target, limit break- and watchpoints: Remote Configuration.
-                                                             (line   79)
-* remote target, limit watchpoints length: Remote Configuration.
-                                                             (line   91)
-* remote timeout:                        Remote Configuration.
-                                                             (line   72)
-* remove actions from a tracepoint:      Tracepoint Actions. (line   21)
-* remove duplicate history:              Command History.    (line   54)
-* rename, file-i/o system call:          rename.             (line    6)
-* Renesas:                               Remote Stub.        (line   62)
-* repeated array elements:               Print Settings.     (line  348)
-* repeating command sequences:           Command Syntax.     (line   41)
-* repeating commands:                    Command Syntax.     (line   21)
-* replay log events, remote reply:       Stop Reply Packets. (line   70)
-* replay mode:                           Process Record and Replay.
-                                                             (line   10)
-* reporting bugs in GDB:                 GDB Bugs.           (line    6)
-* reprint the last value:                Data.               (line  112)
-* reprint the last value <1>:            Compiling and Injecting Code.
-                                                             (line   74)
-* reset environment, remote request:     General Query Packets.
-                                                             (line  197)
-* resources used by commands:            Maintenance Commands.
-                                                             (line  509)
-* response time, MIPS debugging:         MIPS.               (line   10)
-* restart:                               Checkpoint/Restart. (line    6)
-* restore data from a file:              Dump/Restore Files. (line    6)
-* restrictions on Go expressions:        Go.                 (line   35)
-* result records in GDB/MI:              GDB/MI Result Records.
-                                                             (line    6)
-* resume threads of multiple processes simultaneously: All-Stop Mode.
-                                                             (line   54)
-* resuming execution:                    Continuing and Stepping.
-                                                             (line    6)
-* returning from a function:             Returning.          (line    6)
-* reverse execution:                     Reverse Execution.  (line    6)
-* rewind program state:                  Checkpoint/Restart. (line    6)
-* run to first instruction:              Starting.           (line  114)
-* run to main procedure:                 Starting.           (line   81)
-* run until specified location:          Continuing and Stepping.
-                                                             (line  124)
-* running:                               Starting.           (line    6)
-* running programs backward:             Reverse Execution.  (line    6)
-* s packet:                              Packets.            (line  312)
-* S packet:                              Packets.            (line  321)
-* S12Z support:                          S12Z.               (line    6)
-* save breakpoints to a file for future sessions: Save Breakpoints.
-                                                             (line    9)
-* save command history:                  Command History.    (line   36)
-* save GDB output to a file:             Logging Output.     (line    6)
-* save tracepoints for future sessions:  save tracepoints.   (line    6)
-* scheduler locking mode:                All-Stop Mode.      (line   37)
-* scope:                                 M2 Scope.           (line    6)
-* screen size:                           Screen Size.        (line    6)
-* scripting commands:                    Command Files.      (line    6)
-* scripting with guile:                  Guile.              (line    6)
-* scripting with python:                 Python.             (line    6)
-* search for a thread:                   Threads.            (line  258)
-* search path for libthread_db:          Threads.            (line  293)
-* searching memory:                      Searching Memory.   (line    6)
-* searching memory, in remote debugging: General Query Packets.
-                                                             (line  558)
-* searching source files:                Search.             (line    6)
-* section offsets, remote request:       General Query Packets.
-                                                             (line  342)
-* segment descriptor tables:             DJGPP Native.       (line   24)
-* select Ctrl-C, BREAK or BREAK-g:       Remote Configuration.
-                                                             (line  108)
-* select trace snapshot:                 tfind.              (line    6)
-* selected frame:                        Stack.              (line   19)
-* selecting guile pretty-printers:       Selecting Guile Pretty-Printers.
-                                                             (line    6)
-* selecting python pretty-printers:      Selecting Pretty-Printers.
-                                                             (line    6)
-* self tests:                            Maintenance Commands.
-                                                             (line  360)
-* self tests <1>:                        Maintenance Commands.
-                                                             (line  366)
-* semaphores on static probe points:     Static Probe Points.
-                                                             (line   20)
-* send command to remote monitor:        Connecting.         (line  272)
-* send command to simulator:             Embedded Processors.
-                                                             (line    9)
-* send interrupt-sequence on start:      Remote Configuration.
-                                                             (line  121)
-* send rights, GNU Hurd:                 Hurd Native.        (line   84)
-* send the output of a gdb command to a shell command: Shell Commands.
-                                                             (line   25)
-* sending files to remote systems:       File Transfer.      (line    6)
-* separate debug sections:               MiniDebugInfo.      (line    6)
-* separate debugging information files:  Separate Debug Files.
-                                                             (line    6)
-* sequence-id, for GDB remote:           Overview.           (line   30)
-* serial connections, debugging:         Debugging Output.   (line  159)
-* serial line, target remote:            Connecting.         (line  129)
-* serial protocol, GDB remote:           Overview.           (line   14)
-* server prefix:                         Server Prefix.      (line    6)
-* server, command prefix:                Command History.    (line   20)
-* set ABI for MIPS:                      MIPS.               (line   32)
-* set breakpoints in many functions:     Set Breaks.         (line   90)
-* set breakpoints on all functions:      Set Breaks.         (line  117)
-* set environment variable, remote request: General Query Packets.
-                                                             (line  144)
-* set fast tracepoint:                   Create and Delete Tracepoints.
-                                                             (line   50)
-* set inferior controlling terminal:     Input/Output.       (line   44)
-* set static tracepoint:                 Create and Delete Tracepoints.
-                                                             (line   75)
-* set tdesc filename:                    Retrieving Descriptions.
-                                                             (line   18)
-* set tracepoint:                        Create and Delete Tracepoints.
-                                                             (line    6)
-* set working directory, remote request: General Query Packets.
-                                                             (line  219)
-* setting variables:                     Assignment.         (line    6)
-* setting watchpoints:                   Set Watchpoints.    (line    6)
-* settings:                              Command Settings.   (line   39)
-* SH:                                    Remote Stub.        (line   62)
-* sh-stub.c:                             Remote Stub.        (line   62)
-* shared libraries:                      Files.              (line  287)
-* shared library events, remote reply:   Stop Reply Packets. (line   65)
-* shell command, exit code:              Convenience Vars.   (line  187)
-* shell command, exit signal:            Convenience Vars.   (line  187)
-* shell escape:                          Shell Commands.     (line   10)
-* show all convenience functions:        Convenience Funs.   (line  228)
-* show all user variables and functions: Convenience Vars.   (line   37)
-* show inferior's working directory:     Working Directory.  (line   27)
-* show last commands:                    Command History.    (line   95)
-* show tdesc filename:                   Retrieving Descriptions.
-                                                             (line   25)
-* signals:                               Signals.            (line    6)
-* signals the inferior may see, remote request: General Query Packets.
-                                                             (line  469)
-* SIGQUIT signal, dump core of GDB:      Maintenance Commands.
-                                                             (line  169)
-* SingleKey keymap name:                 TUI Single Key Mode.
-                                                             (line   53)
-* size of remote memory accesses:        Packets.            (line  247)
-* size of screen:                        Screen Size.        (line    6)
-* skipping over files via glob-style patterns: Skipping Over Functions and Files.
-                                                             (line   55)
-* skipping over functions and files:     Skipping Over Functions and Files.
-                                                             (line    6)
-* skipping over functions via regular expressions: Skipping Over Functions and Files.
-                                                             (line   68)
-* snapshot of a process:                 Checkpoint/Restart. (line    6)
-* software watchpoints:                  Set Watchpoints.    (line   31)
-* source file and line of a symbol:      Print Settings.     (line   50)
-* source line and its code address:      Machine Code.       (line    6)
-* source location:                       Specify Location.   (line    6)
-* source path:                           Source Path.        (line    6)
-* Sparc:                                 Remote Stub.        (line   65)
-* sparc-stub.c:                          Remote Stub.        (line   65)
-* Sparc64 support:                       Sparc64.            (line    6)
-* sparcl-stub.c:                         Remote Stub.        (line   68)
-* SparcLite:                             Remote Stub.        (line   68)
-* Special Fortran commands:              Special Fortran Commands.
-                                                             (line    6)
-* specifying location:                   Specify Location.   (line    6)
-* SSE registers (x86):                   Registers.          (line   76)
-* stack frame:                           Frames.             (line    6)
-* stack on Alpha:                        MIPS.               (line    6)
-* stack on MIPS:                         MIPS.               (line    6)
-* stack pointer register:                Registers.          (line   31)
-* stacking targets:                      Active Targets.     (line    6)
-* standard registers:                    Registers.          (line   31)
-* start a new independent interpreter:   Interpreters.       (line   52)
-* start a new trace experiment:          Starting and Stopping Trace Experiments.
-                                                             (line    6)
-* starting:                              Starting.           (line    6)
-* startup code, and backtrace:           Backtrace.          (line  155)
-* startup with shell, remote request:    General Query Packets.
-                                                             (line  114)
-* stat, file-i/o system call:            stat/fstat.         (line    6)
-* static members of C++ objects:         Print Settings.     (line  559)
-* static members of Pascal objects:      Print Settings.     (line  570)
-* static probe point, DTrace:            Static Probe Points.
-                                                             (line    6)
-* static probe point, SystemTap:         Static Probe Points.
-                                                             (line    6)
-* static tracepoints:                    Set Tracepoints.    (line   28)
-* static tracepoints, in remote protocol: General Query Packets.
-                                                             (line  961)
-* static tracepoints, setting:           Create and Delete Tracepoints.
-                                                             (line   75)
-* status of trace data collection:       Starting and Stopping Trace Experiments.
-                                                             (line   27)
-* status output in GDB/MI:               GDB/MI Output Syntax.
-                                                             (line   94)
-* stepping:                              Continuing and Stepping.
-                                                             (line    6)
-* stepping and signal handlers:          Signals.            (line  106)
-* stepping into functions with no line info: Continuing and Stepping.
-                                                             (line   92)
-* stop a running trace experiment:       Starting and Stopping Trace Experiments.
-                                                             (line   16)
-* stop on C++ exceptions:                Set Catchpoints.    (line   16)
-* stop reply packets:                    Stop Reply Packets. (line    6)
-* stopped threads:                       Thread Stops.       (line    6)
-* stream records in GDB/MI:              GDB/MI Stream Records.
-                                                             (line    6)
-* string tracing, in remote protocol:    General Query Packets.
-                                                             (line  978)
-* struct gdb_reader_funcs:               Writing JIT Debug Info Readers.
-                                                             (line   22)
-* struct gdb_symbol_callbacks:           Writing JIT Debug Info Readers.
-                                                             (line   43)
-* struct gdb_unwind_callbacks:           Writing JIT Debug Info Readers.
-                                                             (line   43)
-* struct return convention:              i386.               (line    7)
-* struct stat, in file-i/o protocol:     struct stat.        (line    6)
-* struct timeval, in file-i/o protocol:  struct timeval.     (line    6)
-* struct/union returned in registers:    i386.               (line    7)
-* structure field name completion:       Completion.         (line  135)
-* stub example, remote debugging:        Remote Stub.        (line    6)
-* stupid questions:                      Messages/Warnings.  (line   49)
-* styling:                               Output Styling.     (line    6)
-* Super-H:                               Super-H.            (line    6)
-* supported GDB/MI features, list:       GDB/MI Support Commands.
-                                                             (line   57)
-* supported packets, remote query:       General Query Packets.
-                                                             (line  589)
-* switching threads:                     Threads.            (line    6)
-* switching threads automatically:       All-Stop Mode.      (line   28)
-* symbol cache size:                     Symbols.            (line  698)
-* symbol cache, flushing:                Symbols.            (line  714)
-* symbol cache, printing its contents:   Symbols.            (line  706)
-* symbol cache, printing usage statistics: Symbols.          (line  710)
-* symbol decoding style, C++:            Print Settings.     (line  529)
-* symbol dump:                           Symbols.            (line  619)
-* symbol file functions:                 Debugging Output.   (line  205)
-* symbol files, remote debugging:        Connecting.         (line   90)
-* symbol from address:                   Symbols.            (line   95)
-* symbol lookup:                         Debugging Output.   (line  198)
-* symbol lookup, remote request:         General Query Packets.
-                                                             (line 1033)
-* symbol names:                          Symbols.            (line   14)
-* symbol table:                          Files.              (line    6)
-* symbol table creation:                 Debugging Output.   (line  210)
-* symbol tables in guile:                Symbol Tables In Guile.
-                                                             (line    6)
-* symbol tables in python:               Symbol Tables In Python.
-                                                             (line    6)
-* symbol tables, listing GDB's internal: Symbols.            (line  645)
-* symbol, source file and line:          Print Settings.     (line   50)
-* symbols in guile:                      Symbols In Guile.   (line    6)
-* symbols in python:                     Symbols In Python.  (line    6)
-* symbols, never read:                   Files.              (line  101)
-* symbols, reading from relocatable object files: Files.     (line  146)
-* symbols, reading immediately:          Files.              (line   94)
-* Synopsys ARC:                          ARC.                (line    6)
-* syscall DSO:                           Files.              (line  193)
-* system calls and thread breakpoints:   Interrupted System Calls.
-                                                             (line    6)
-* system root, alternate:                Files.              (line  386)
-* system, file-i/o system call:          system.             (line    6)
-* system-wide configuration scripts:     System-wide Configuration Scripts.
-                                                             (line    6)
-* system-wide init file:                 System-wide configuration.
-                                                             (line    6)
-* t packet:                              Packets.            (line  331)
-* T packet:                              Packets.            (line  336)
-* T packet reply:                        Stop Reply Packets. (line   26)
-* tail call frames, debugging:           Tail Call Frames.   (line    6)
-* target architecture:                   Targets.            (line   17)
-* target byte order:                     Byte Order.         (line    6)
-* target character set:                  Character Sets.     (line    6)
-* target debugging info:                 Debugging Output.   (line  217)
-* target descriptions:                   Target Descriptions.
-                                                             (line    6)
-* target descriptions, AArch64 features: AArch64 Features.   (line    6)
-* target descriptions, ARC Features:     ARC Features.       (line    6)
-* target descriptions, ARM features:     ARM Features.       (line    6)
-* target descriptions, enum types:       Enum Target Types.  (line    6)
-* target descriptions, i386 features:    i386 Features.      (line    6)
-* target descriptions, inclusion:        Target Description Format.
-                                                             (line   53)
-* target descriptions, M68K features:    M68K Features.      (line    6)
-* target descriptions, MicroBlaze features: MicroBlaze Features.
-                                                             (line    6)
-* target descriptions, MIPS features:    MIPS Features.      (line    6)
-* target descriptions, NDS32 features:   NDS32 Features.     (line    6)
-* target descriptions, Nios II features: Nios II Features.   (line    6)
-* target descriptions, OpenRISC 1000 features: OpenRISC 1000 Features.
-                                                             (line    6)
-* target descriptions, PowerPC features: PowerPC Features.   (line    6)
-* target descriptions, predefined types: Predefined Target Types.
-                                                             (line    6)
-* target descriptions, RISC-V Features:  RISC-V Features.    (line    6)
-* target descriptions, RX Features:      RX Features.        (line    6)
-* target descriptions, S/390 features:   S/390 and System z Features.
-                                                             (line    6)
-* target descriptions, sparc32 features: Sparc Features.     (line    6)
-* target descriptions, sparc64 features: Sparc Features.     (line    6)
-* target descriptions, standard features: Standard Target Features.
-                                                             (line    6)
-* target descriptions, System z features: S/390 and System z Features.
-                                                             (line    6)
-* target descriptions, TIC6x features:   TIC6x Features.     (line    6)
-* target descriptions, TMS320C6x features: TIC6x Features.   (line    6)
-* target descriptions, XML format:       Target Description Format.
-                                                             (line    6)
-* target memory comparison:              Memory.             (line  142)
-* target output in GDB/MI:               GDB/MI Output Syntax.
-                                                             (line  110)
-* target stack description:              Maintenance Commands.
-                                                             (line  341)
-* target-assisted range stepping:        Continuing and Stepping.
-                                                             (line  217)
-* task attributes (GNU Hurd):            Hurd Native.        (line   48)
-* task breakpoints, in Ada:              Ada Tasks.          (line  135)
-* task exception port, GNU Hurd:         Hurd Native.        (line   67)
-* task suspend count:                    Hurd Native.        (line   59)
-* task switching with program using Ravenscar Profile: Ravenscar Profile.
-                                                             (line   10)
-* TCP port, target remote:               Connecting.         (line  166)
-* temporarily change settings:           Command Settings.   (line   39)
-* terminal:                              Input/Output.       (line    6)
-* Text User Interface:                   TUI.                (line    6)
-* thread attributes info, remote request: General Query Packets.
-                                                             (line 1076)
-* thread breakpoints:                    Thread-Specific Breakpoints.
-                                                             (line   10)
-* thread breakpoints and system calls:   Interrupted System Calls.
-                                                             (line    6)
-* thread create event, remote reply:     Stop Reply Packets. (line  152)
-* thread create/exit events, remote request: General Query Packets.
-                                                             (line  509)
-* thread default settings, GNU Hurd:     Hurd Native.        (line  130)
-* thread exit event, remote reply:       Stop Reply Packets. (line  181)
-* thread ID lists:                       Threads.            (line   65)
-* thread identifier (GDB):               Threads.            (line   47)
-* thread identifier (system):            Threads.            (line   35)
-* thread info (Solaris):                 Threads.            (line  167)
-* thread information, remote request:    General Query Packets.
-                                                             (line  369)
-* thread list format:                    Thread List Format. (line    6)
-* thread number, per inferior:           Threads.            (line   47)
-* thread properties, GNU Hurd:           Hurd Native.        (line   90)
-* thread suspend count, GNU Hurd:        Hurd Native.        (line  109)
-* THREAD-ID, in remote protocol:         Packets.            (line   20)
-* threads and watchpoints:               Set Watchpoints.    (line  179)
-* threads in python:                     Threads In Python.  (line    6)
-* threads of execution:                  Threads.            (line    6)
-* threads, automatic switching:          All-Stop Mode.      (line   28)
-* threads, continuing:                   Thread Stops.       (line    6)
-* threads, stopped:                      Thread Stops.       (line    6)
-* time of command execution:             Maintenance Commands.
-                                                             (line  559)
-* timeout for commands:                  Maintenance Commands.
-                                                             (line  610)
-* timeout for serial communications:     Remote Configuration.
-                                                             (line   72)
-* timeout, for remote target connection: Remote Configuration.
-                                                             (line  147)
-* timestamping debugging info:           Debugging Output.   (line  224)
-* trace experiment, status of:           Starting and Stopping Trace Experiments.
-                                                             (line   27)
-* trace file format:                     Trace File Format.  (line    6)
-* trace files:                           Trace Files.        (line    6)
-* trace state variable value, remote request: Tracepoint Packets.
-                                                             (line  318)
-* trace state variables:                 Trace State Variables.
-                                                             (line    6)
-* traceback:                             Backtrace.          (line    6)
-* traceframe info format:                Traceframe Info Format.
-                                                             (line    6)
-* tracepoint actions:                    Tracepoint Actions. (line    6)
-* tracepoint conditions:                 Tracepoint Conditions.
-                                                             (line    6)
-* tracepoint data, display:              tdump.              (line    6)
-* tracepoint deletion:                   Create and Delete Tracepoints.
-                                                             (line  125)
-* tracepoint number:                     Create and Delete Tracepoints.
-                                                             (line  122)
-* tracepoint packets:                    Tracepoint Packets. (line    6)
-* tracepoint pass count:                 Tracepoint Passcounts.
-                                                             (line    6)
-* tracepoint restrictions:               Tracepoint Restrictions.
-                                                             (line    6)
-* tracepoint status, remote request:     Tracepoint Packets. (line  307)
-* tracepoint variables:                  Tracepoint Variables.
-                                                             (line    6)
-* tracepoints:                           Tracepoints.        (line    6)
-* tracepoints support in gdbserver:      Server.             (line  272)
-* trailing underscore, in Fortran symbols: Fortran.          (line    9)
-* translating between character sets:    Character Sets.     (line    6)
-* TUI:                                   TUI.                (line    6)
-* TUI commands:                          TUI Commands.       (line    6)
-* TUI configuration variables:           TUI Configuration.  (line    6)
-* TUI key bindings:                      TUI Keys.           (line    6)
-* TUI single key mode:                   TUI Single Key Mode.
-                                                             (line    6)
-* type casting memory:                   Expressions.        (line   41)
-* type chain of a data type:             Maintenance Commands.
-                                                             (line  353)
-* type checking:                         Checks.             (line   24)
-* type conversions in C++:               C Plus Plus Expressions.
-                                                             (line   26)
-* type printer:                          Type Printing API.  (line    9)
-* type printing API for Python:          Type Printing API.  (line    6)
-* types in guile:                        Types In Guile.     (line    6)
-* types in Python:                       Types In Python.    (line    6)
-* UDP port, target remote:               Connecting.         (line  215)
-* union field name completion:           Completion.         (line  135)
-* unions in structures, printing:        Print Settings.     (line  469)
-* Unix domain socket:                    Connecting.         (line  140)
-* unknown address, locating:             Output Formats.     (line   35)
-* unknown type:                          Symbols.            (line  363)
-* unlink, file-i/o system call:          unlink.             (line    6)
-* unlinked object files:                 Files.              (line   26)
-* unload symbols from shared libraries:  Files.              (line  348)
-* unmap an overlay:                      Overlay Commands.   (line   39)
-* unmapped overlays:                     How Overlays Work.  (line    6)
-* unset environment variable, remote request: General Query Packets.
-                                                             (line  173)
-* unset tdesc filename:                  Retrieving Descriptions.
-                                                             (line   21)
-* unsupported languages:                 Unsupported Languages.
-                                                             (line    6)
-* unwind stack in called functions:      Calling.            (line   36)
-* unwind stack in called functions with unhandled exceptions: Calling.
-                                                             (line   47)
-* unwinding frames in Python:            Unwinding Frames in Python.
-                                                             (line    6)
-* use only software watchpoints:         Set Watchpoints.    (line  108)
-* user registers:                        Maintenance Commands.
-                                                             (line  312)
-* user-defined command:                  Define.             (line    6)
-* user-defined macros:                   Macros.             (line   59)
-* user-defined variables:                Convenience Vars.   (line    6)
-* value history:                         Value History.      (line    6)
-* values from inferior, in guile:        Values From Inferior In Guile.
-                                                             (line    6)
-* values from inferior, with Python:     Values From Inferior.
-                                                             (line    6)
-* variable name conflict:                Variables.          (line   36)
-* variable object debugging info:        Debugging Output.   (line  231)
-* variable objects in GDB/MI:            GDB/MI Variable Objects.
-                                                             (line    9)
-* variable values, wrong:                Variables.          (line  106)
-* variables, readline:                   Readline Init File Syntax.
-                                                             (line   34)
-* variables, setting:                    Assignment.         (line   16)
-* vAttach packet:                        Packets.            (line  350)
-* vCont packet:                          Packets.            (line  368)
-* vCont? packet:                         Packets.            (line  435)
-* vCtrlC packet:                         Packets.            (line  445)
-* vector unit:                           Vector Unit.        (line    6)
-* vector, auxiliary:                     OS Information.     (line    9)
-* verbose operation:                     Messages/Warnings.  (line    6)
-* verify remote memory image:            Memory.             (line  142)
-* verify target memory image:            Memory.             (line  142)
-* vFile packet:                          Packets.            (line  459)
-* vFlashDone packet:                     Packets.            (line  498)
-* vFlashErase packet:                    Packets.            (line  463)
-* vFlashWrite packet:                    Packets.            (line  478)
-* vfork events, remote reply:            Stop Reply Packets. (line  116)
-* vforkdone events, remote reply:        Stop Reply Packets. (line  128)
-* virtual functions (C++) display:       Print Settings.     (line  581)
-* vKill packet:                          Packets.            (line  505)
-* vMustReplyEmpty packet:                Packets.            (line  517)
-* volatile registers:                    Registers.          (line  106)
-* vRun packet:                           Packets.            (line  529)
-* vStopped packet:                       Packets.            (line  544)
-* VTBL display:                          Print Settings.     (line  581)
-* watchdog timer:                        Maintenance Commands.
-                                                             (line  610)
-* watchpoints:                           Breakpoints.        (line   17)
-* watchpoints and threads:               Set Watchpoints.    (line  179)
-* where to look for shared libraries:    Files.              (line  381)
-* wild pointer, interpreting:            Print Settings.     (line   80)
-* Wind River Linux system-wide configuration script: System-wide Configuration Scripts.
-                                                             (line   22)
-* word completion:                       Completion.         (line    6)
-* working directory:                     Source Path.        (line   40)
-* working directory (of your program):   Working Directory.  (line    6)
-* working language:                      Languages.          (line   13)
-* write data into object, remote request: General Query Packets.
-                                                             (line 1338)
-* write, file-i/o system call:           write.              (line    6)
-* writing a frame filter:                Writing a Frame Filter.
-                                                             (line    6)
-* writing a Guile pretty-printer:        Writing a Guile Pretty-Printer.
-                                                             (line    6)
-* writing a pretty-printer:              Writing a Pretty-Printer.
-                                                             (line    6)
-* writing convenience functions:         Functions In Python.
-                                                             (line    6)
-* writing into corefiles:                Patching.           (line    6)
-* writing into executables:              Patching.           (line    6)
-* writing into executables <1>:          Compiling and Injecting Code.
-                                                             (line    6)
-* writing JIT debug info readers:        Writing JIT Debug Info Readers.
-                                                             (line    6)
-* writing xmethods in Python:            Writing an Xmethod. (line    6)
-* wrong values:                          Variables.          (line  106)
-* x command, default address:            Machine Code.       (line   34)
-* X packet:                              Packets.            (line  547)
-* Xilinx MicroBlaze:                     MicroBlaze.         (line    6)
-* XInclude:                              Target Description Format.
-                                                             (line   53)
-* XMD, Xilinx Microprocessor Debugger:   MicroBlaze.         (line    6)
-* xmethod API:                           Xmethod API.        (line    6)
-* xmethods in Python:                    Xmethods In Python. (line    6)
-* XML parser debugging:                  Debugging Output.   (line  237)
-* yanking text:                          Readline Killing Commands.
-                                                             (line    6)
-* z packet:                              Packets.            (line  560)
-* Z packets:                             Packets.            (line  560)
-* z0 packet:                             Packets.            (line  575)
-* Z0 packet:                             Packets.            (line  575)
-* z1 packet:                             Packets.            (line  630)
-* Z1 packet:                             Packets.            (line  630)
-* z2 packet:                             Packets.            (line  651)
-* Z2 packet:                             Packets.            (line  651)
-* z3 packet:                             Packets.            (line  664)
-* Z3 packet:                             Packets.            (line  664)
-* z4 packet:                             Packets.            (line  677)
-* Z4 packet:                             Packets.            (line  677)
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-8 ./gdb/doc/gdb.info-8
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.info-8	2020-03-07 02:11:39.000000000 +0000
+++ ./gdb/doc/gdb.info-8	2021-05-21 02:00:20.000000000 +0000
@@ -1,6 +1,6 @@
-This is gdb.info, produced by makeinfo version 6.3 from gdb.texinfo.
+This is gdb.info, produced by makeinfo version 6.5 from gdb.texinfo.
 
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -21,9 +21,9 @@ 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.1.90.20200307-git.
+Source-Level Debugger' for GDB (GDB) Version 10.2.90.20210521-git.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -37,6 +37,1993 @@ this GNU Manual.  Buying copies from GNU
 developing GNU and promoting software freedom."
 
 
+File: gdb.info,  Node: Concept Index,  Next: Command and Variable Index,  Prev: GNU Free Documentation License,  Up: Top
+
+Concept Index
+*************
+
+[index]
+* Menu:
+
+* ! packet:                              Packets.            (line   49)
+* "No symbol "foo" in current context":  Variables.          (line  122)
+* # in Modula-2:                         GDB/M2.             (line   18)
+* $:                                     Value History.      (line   13)
+* $$:                                    Value History.      (line   13)
+* $_ and info breakpoints:               Set Breaks.         (line  133)
+* $_ and info line:                      Machine Code.       (line   34)
+* $_, $__, and value history:            Memory.             (line  119)
+* &, background execution of commands:   Background Execution.
+                                                             (line   16)
+* --annotate:                            Mode Options.       (line  132)
+* --args:                                Mode Options.       (line  145)
+* --attach, gdbserver option:            Server.             (line   86)
+* --batch:                               Mode Options.       (line   55)
+* --batch-silent:                        Mode Options.       (line   73)
+* --baud:                                Mode Options.       (line  151)
+* --cd:                                  Mode Options.       (line  112)
+* --command:                             File Options.       (line   51)
+* --configuration:                       Mode Options.       (line  195)
+* --core:                                File Options.       (line   43)
+* --data-directory:                      Mode Options.       (line  117)
+* --debug, gdbserver option:             Server.             (line  146)
+* --debug-file, gdbserver option:        Server.             (line  148)
+* --debug-format, gdbserver option:      Server.             (line  153)
+* --directory:                           File Options.       (line   77)
+* --eval-command:                        File Options.       (line   57)
+* --exec:                                File Options.       (line   35)
+* --fullname:                            Mode Options.       (line  122)
+* --init-command:                        File Options.       (line   67)
+* --init-eval-command:                   File Options.       (line   72)
+* --interpreter:                         Mode Options.       (line  170)
+* --multi, gdbserver option:             Connecting.         (line   45)
+* --nh:                                  Mode Options.       (line   45)
+* --nowindows:                           Mode Options.       (line  102)
+* --nx:                                  Mode Options.       (line   11)
+* --once, gdbserver option:              Server.             (line  126)
+* --pid:                                 File Options.       (line   47)
+* --quiet:                               Mode Options.       (line   51)
+* --readnever, command-line option:      File Options.       (line   87)
+* --readnow:                             File Options.       (line   81)
+* --remote-debug, gdbserver option:      Server.             (line  147)
+* --return-child-result:                 Mode Options.       (line   85)
+* --se:                                  File Options.       (line   39)
+* --selftest:                            Server.             (line  187)
+* --silent:                              Mode Options.       (line   51)
+* --statistics:                          Mode Options.       (line  187)
+* --symbols:                             File Options.       (line   31)
+* --tty:                                 Mode Options.       (line  160)
+* --tui:                                 Mode Options.       (line  163)
+* --version:                             Mode Options.       (line  191)
+* --windows:                             Mode Options.       (line  108)
+* --with-gdb-datadir:                    Data Files.         (line   19)
+* --with-relocated-sources:              Source Path.        (line  149)
+* --with-sysroot:                        Files.              (line  453)
+* --wrapper, gdbserver option:           Server.             (line  166)
+* --write:                               Mode Options.       (line  182)
+* -b:                                    Mode Options.       (line  151)
+* -c:                                    File Options.       (line   43)
+* -d:                                    File Options.       (line   77)
+* -D:                                    Mode Options.       (line  117)
+* -e:                                    File Options.       (line   35)
+* -ex:                                   File Options.       (line   57)
+* -f:                                    Mode Options.       (line  122)
+* -iex:                                  File Options.       (line   72)
+* -info-gdb-mi-command:                  GDB/MI Support Commands.
+                                                             (line   14)
+* -ix:                                   File Options.       (line   67)
+* -l:                                    Mode Options.       (line  155)
+* -n:                                    Mode Options.       (line   11)
+* -nw:                                   Mode Options.       (line  102)
+* -p:                                    File Options.       (line   47)
+* -q:                                    Mode Options.       (line   51)
+* -r:                                    File Options.       (line   81)
+* -readnever, option for symbol-file command: Files.         (line  101)
+* -s:                                    File Options.       (line   31)
+* -t:                                    Mode Options.       (line  160)
+* -w:                                    Mode Options.       (line  108)
+* -x:                                    File Options.       (line   51)
+* ., Modula-2 scope operator:            M2 Scope.           (line    6)
+* .build-id directory:                   Separate Debug Files.
+                                                             (line    6)
+* .debug subdirectories:                 Separate Debug Files.
+                                                             (line    6)
+* .debug_gdb_scripts section:            dotdebug_gdb_scripts section.
+                                                             (line    6)
+* .gdbinit:                              Startup.            (line   69)
+* .gdb_index section:                    Index Files.        (line    6)
+* .gdb_index section format:             Index Section Format.
+                                                             (line    6)
+* .gnu_debugdata section:                MiniDebugInfo.      (line    6)
+* .gnu_debuglink sections:               Separate Debug Files.
+                                                             (line   79)
+* .note.gnu.build-id sections:           Separate Debug Files.
+                                                             (line   95)
+* .o files, reading symbols from:        Files.              (line  146)
+* /proc:                                 Process Information.
+                                                             (line    6)
+* <architecture>:                        Target Description Format.
+                                                             (line   72)
+* <compatible>:                          Target Description Format.
+                                                             (line   95)
+* <feature>:                             Target Description Format.
+                                                             (line  119)
+* <flags>:                               Target Description Format.
+                                                             (line  163)
+* <not saved> values:                    Registers.          (line  106)
+* <osabi>:                               Target Description Format.
+                                                             (line   82)
+* <reg>:                                 Target Description Format.
+                                                             (line  222)
+* <struct>:                              Target Description Format.
+                                                             (line  163)
+* <union>:                               Target Description Format.
+                                                             (line  153)
+* <vector>:                              Target Description Format.
+                                                             (line  146)
+* ? packet:                              Packets.            (line   58)
+* _NSPrintForDebugger, and printing Objective-C objects: The Print Command with Objective-C.
+                                                             (line   11)
+* {TYPE}:                                Expressions.        (line   41)
+* A packet:                              Packets.            (line   65)
+* AArch64 Pointer Authentication.:       AArch64.            (line   34)
+* AArch64 support:                       AArch64.            (line    6)
+* AArch64 SVE:                           AArch64.            (line   19)
+* abbreviation:                          Command Syntax.     (line   13)
+* acknowledgment, for GDB remote:        Packet Acknowledgment.
+                                                             (line    6)
+* active targets:                        Active Targets.     (line    6)
+* Ada:                                   Ada.                (line    6)
+* Ada exception catching:                Set Catchpoints.    (line   66)
+* Ada exception handlers catching:       Set Catchpoints.    (line   92)
+* Ada mode, general:                     Ada Mode Intro.     (line    6)
+* Ada settings:                          Ada Settings.       (line    6)
+* Ada task switching:                    Ada Tasks.          (line  115)
+* Ada tasking and core file debugging:   Ada Tasks and Core Files.
+                                                             (line    6)
+* Ada, deviations from:                  Additions to Ada.   (line    6)
+* Ada, omissions from:                   Omissions from Ada. (line    6)
+* Ada, problems:                         Ada Glitches.       (line    6)
+* Ada, tasking:                          Ada Tasks.          (line    6)
+* add new commands for external monitor: Connecting.         (line  279)
+* address locations:                     Address Locations.  (line    6)
+* address of a symbol:                   Symbols.            (line   85)
+* address size for remote targets:       Remote Configuration.
+                                                             (line   12)
+* addressable memory unit:               Memory.             (line  133)
+* aggregates (Ada):                      Omissions from Ada. (line   44)
+* AIX shared library debugging:          Debugging Output.   (line   30)
+* AIX threads:                           Debugging Output.   (line   36)
+* aliases for commands:                  Aliases.            (line    6)
+* alignment of remote memory accesses:   Packets.            (line  247)
+* all-stop mode:                         All-Stop Mode.      (line    6)
+* Alpha stack:                           MIPS.               (line    6)
+* ambiguous expressions:                 Ambiguous Expressions.
+                                                             (line    6)
+* annotations:                           Annotations Overview.
+                                                             (line    6)
+* annotations for errors, warnings and interrupts: Errors.   (line    6)
+* annotations for invalidation messages: Invalidation.       (line    6)
+* annotations for prompts:               Prompting.          (line    6)
+* annotations for running programs:      Annotations for Running.
+                                                             (line    6)
+* annotations for source display:        Source Annotations. (line    6)
+* append data to a file:                 Dump/Restore Files. (line    6)
+* Application Data Integrity:            Sparc64.            (line    5)
+* apply a command to all frames (ignoring errors and empty output): Frame Apply.
+                                                             (line   96)
+* apply a command to all frames of all threads (ignoring errors and empty output): Threads.
+                                                             (line  229)
+* apply command to all threads (ignoring errors and empty output): Threads.
+                                                             (line  222)
+* apply command to several frames:       Frame Apply.        (line    6)
+* apply command to several threads:      Threads.            (line  187)
+* ARC EM:                                ARC.                (line    6)
+* ARC HS:                                ARC.                (line    6)
+* ARC specific commands:                 ARC.                (line    6)
+* ARC600:                                ARC.                (line    6)
+* ARC700:                                ARC.                (line    6)
+* architecture debugging info:           Debugging Output.   (line   23)
+* argument count in user-defined commands: Define.           (line   25)
+* arguments (to your program):           Arguments.          (line    6)
+* arguments, to gdbserver:               Server.             (line   34)
+* arguments, to user-defined commands:   Define.             (line    6)
+* ARM 32-bit mode:                       ARM.                (line   16)
+* ARM AArch64:                           Debugging Output.   (line   17)
+* array aggregates (Ada):                Omissions from Ada. (line   44)
+* arrays:                                Arrays.             (line    6)
+* arrays in expressions:                 Expressions.        (line   13)
+* artificial array:                      Arrays.             (line    6)
+* assembly instructions:                 Machine Code.       (line   43)
+* assignment:                            Assignment.         (line    6)
+* async output in GDB/MI:                GDB/MI Output Syntax.
+                                                             (line   98)
+* async records in GDB/MI:               GDB/MI Async Records.
+                                                             (line    6)
+* asynchronous execution:                Background Execution.
+                                                             (line    6)
+* asynchronous execution, and process record and replay: Process Record and Replay.
+                                                             (line  101)
+* AT&T disassembly flavor:               Machine Code.       (line  237)
+* attach:                                Attach.             (line    6)
+* attach to a program, gdbserver:        Server.             (line   86)
+* auto-loading:                          Auto-loading.       (line    6)
+* auto-loading extensions:               Auto-loading extensions.
+                                                             (line    6)
+* auto-loading init file in the current directory: Init File in the Current Directory.
+                                                             (line    6)
+* auto-loading libthread_db.so.1:        libthread_db.so.1 file.
+                                                             (line    6)
+* auto-loading safe-path:                Auto-loading safe path.
+                                                             (line    6)
+* auto-loading verbose mode:             Auto-loading verbose mode.
+                                                             (line    6)
+* auto-retry, for remote TCP target:     Remote Configuration.
+                                                             (line  131)
+* automatic display:                     Auto Display.       (line    6)
+* automatic hardware breakpoints:        Set Breaks.         (line  296)
+* automatic overlay debugging:           Automatic Overlay Debugging.
+                                                             (line    6)
+* automatic symbol index cache:          Index Files.        (line   73)
+* automatic thread selection:            All-Stop Mode.      (line   28)
+* auxiliary vector:                      OS Information.     (line    9)
+* AVR:                                   AVR.                (line    6)
+* b packet:                              Packets.            (line   76)
+* B packet:                              Packets.            (line   91)
+* background execution:                  Background Execution.
+                                                             (line    6)
+* backtrace beyond main function:        Backtrace.          (line  155)
+* backtrace limit:                       Backtrace.          (line  192)
+* base name differences:                 Files.              (line  520)
+* baud rate for remote targets:          Remote Configuration.
+                                                             (line   21)
+* bc packet:                             Packets.            (line   96)
+* bcache statistics:                     Maintenance Commands.
+                                                             (line  342)
+* bits in remote address:                Remote Configuration.
+                                                             (line   12)
+* blocks in guile:                       Blocks In Guile.    (line    6)
+* blocks in python:                      Blocks In Python.   (line    6)
+* bookmark:                              Checkpoint/Restart. (line    6)
+* boundary violations, Intel MPX:        Signals.            (line  197)
+* branch trace configuration format:     Branch Trace Configuration Format.
+                                                             (line    6)
+* branch trace format:                   Branch Trace Format.
+                                                             (line    6)
+* branch trace store:                    Process Record and Replay.
+                                                             (line   70)
+* break in overloaded functions:         Debugging C Plus Plus.
+                                                             (line    9)
+* break on a system call.:               Set Catchpoints.    (line  120)
+* break on fork/exec:                    Set Catchpoints.    (line  116)
+* BREAK signal instead of Ctrl-C:        Remote Configuration.
+                                                             (line   36)
+* breakpoint address adjusted:           Breakpoint-related Warnings.
+                                                             (line    6)
+* breakpoint at static probe point:      Linespec Locations. (line   65)
+* breakpoint commands:                   Break Commands.     (line    6)
+* breakpoint commands for GDB/MI:        GDB/MI Breakpoint Commands.
+                                                             (line    6)
+* breakpoint commands, in remote protocol: General Query Packets.
+                                                             (line  983)
+* breakpoint conditions:                 Conditions.         (line    6)
+* breakpoint kinds, ARM:                 ARM Breakpoint Kinds.
+                                                             (line    6)
+* breakpoint kinds, MIPS:                MIPS Breakpoint Kinds.
+                                                             (line    6)
+* breakpoint lists:                      Breakpoints.        (line   45)
+* breakpoint numbers:                    Breakpoints.        (line   38)
+* breakpoint on events:                  Breakpoints.        (line   30)
+* breakpoint on memory address:          Breakpoints.        (line   17)
+* breakpoint on variable modification:   Breakpoints.        (line   17)
+* breakpoint ranges:                     Breakpoints.        (line   45)
+* breakpoint subroutine, remote:         Stub Contents.      (line   31)
+* breakpointing Ada elaboration code:    Stopping Before Main Program.
+                                                             (line    6)
+* breakpoints:                           Breakpoints.        (line    6)
+* breakpoints and tasks, in Ada:         Ada Tasks.          (line  135)
+* breakpoints and threads:               Thread-Specific Breakpoints.
+                                                             (line   10)
+* breakpoints at functions matching a regexp: Set Breaks.    (line   90)
+* breakpoints in guile:                  Breakpoints In Guile.
+                                                             (line    6)
+* breakpoints in overlays:               Overlay Commands.   (line   91)
+* breakpoints in python:                 Breakpoints In Python.
+                                                             (line    6)
+* breakpoints, multiple locations:       Set Breaks.         (line  200)
+* bs packet:                             Packets.            (line  102)
+* bug criteria:                          Bug Criteria.       (line    6)
+* bug reports:                           Bug Reporting.      (line    6)
+* bugs in GDB:                           GDB Bugs.           (line    6)
+* build ID sections:                     Separate Debug Files.
+                                                             (line   95)
+* build ID, and separate debugging files: Separate Debug Files.
+                                                             (line    6)
+* building GDB, requirements for:        Requirements.       (line    6)
+* built-in simulator target:             Target Commands.    (line   73)
+* builtin Go functions:                  Go.                 (line   31)
+* builtin Go types:                      Go.                 (line   28)
+* C and C++:                             C.                  (line    6)
+* C and C++ checks:                      C Checks.           (line    6)
+* C and C++ constants:                   C Constants.        (line    6)
+* C and C++ defaults:                    C Defaults.         (line    6)
+* C and C++ operators:                   C Operators.        (line    6)
+* c packet:                              Packets.            (line  109)
+* C packet:                              Packets.            (line  118)
+* C++:                                   C.                  (line   10)
+* C++ compilers:                         C Plus Plus Expressions.
+                                                             (line    8)
+* C++ demangling:                        Debugging C Plus Plus.
+                                                             (line   36)
+* C++ exception handling:                Debugging C Plus Plus.
+                                                             (line   20)
+* C++ overload debugging info:           Debugging Output.   (line  147)
+* C++ scope resolution:                  Variables.          (line   90)
+* C++ symbol decoding style:             Print Settings.     (line  529)
+* C++ symbol display:                    Debugging C Plus Plus.
+                                                             (line   40)
+* caching data of targets:               Caching Target Data.
+                                                             (line    6)
+* caching of bfd objects:                File Caching.       (line    6)
+* caching of opened files:               File Caching.       (line    6)
+* call dummy stack unwinding:            Calling.            (line   36)
+* call dummy stack unwinding on unhandled exception.: Calling.
+                                                             (line   47)
+* call overloaded functions:             C Plus Plus Expressions.
+                                                             (line   26)
+* call stack:                            Stack.              (line    9)
+* call stack traces:                     Backtrace.          (line    6)
+* call-clobbered registers:              Registers.          (line  106)
+* caller-saved registers:                Registers.          (line  106)
+* calling functions:                     Calling.            (line    6)
+* calling functions in the program, disabling: Calling.      (line   59)
+* calling make:                          Shell Commands.     (line   22)
+* case sensitivity in symbol names:      Symbols.            (line   27)
+* case-insensitive symbol names:         Symbols.            (line   27)
+* casts, in expressions:                 Expressions.        (line   26)
+* casts, to view memory:                 Expressions.        (line   41)
+* catch Ada exceptions:                  Set Catchpoints.    (line   66)
+* catch Ada exceptions when handled:     Set Catchpoints.    (line   92)
+* catch syscalls from inferior, remote request: General Query Packets.
+                                                             (line  401)
+* catchpoints:                           Breakpoints.        (line   30)
+* catchpoints, setting:                  Set Catchpoints.    (line    6)
+* change GDB's working directory:        Working Directory.  (line   32)
+* change inferior's working directory:   Working Directory.  (line   13)
+* character sets:                        Character Sets.     (line    6)
+* charset:                               Character Sets.     (line    6)
+* checkpoint:                            Checkpoint/Restart. (line    6)
+* checkpoints and process id:            Checkpoint/Restart. (line   76)
+* checks, range:                         Type Checking.      (line   44)
+* checks, type:                          Checks.             (line   23)
+* checksum, for GDB remote:              Overview.           (line   21)
+* choosing target byte order:            Byte Order.         (line    6)
+* circular trace buffer:                 Starting and Stopping Trace Experiments.
+                                                             (line   80)
+* clearing breakpoints, watchpoints, catchpoints: Delete Breaks.
+                                                             (line    6)
+* close, file-i/o system call:           close.              (line    6)
+* closest symbol and offset for an address: Symbols.         (line   95)
+* code address and its source line:      Machine Code.       (line   28)
+* code compression, MIPS:                MIPS.               (line   49)
+* COFF/PE exported symbols:              Debugging Output.   (line   50)
+* collected data discarded:              Starting and Stopping Trace Experiments.
+                                                             (line    6)
+* colon, doubled as scope operator:      M2 Scope.           (line    6)
+* colon-colon, context for variables/functions: Variables.   (line   44)
+* colors:                                Output Styling.     (line    6)
+* command editing:                       Readline Bare Essentials.
+                                                             (line    6)
+* command files:                         Command Files.      (line    6)
+* command history:                       Command History.    (line    6)
+* command hooks:                         Hooks.              (line    6)
+* command interpreters:                  Interpreters.       (line    6)
+* command line editing:                  Editing.            (line    6)
+* command options:                       Command Options.    (line    6)
+* command options, boolean:              Command Options.    (line   21)
+* command options, raw input:            Command Options.    (line   13)
+* command scripts, debugging:            Messages/Warnings.  (line   65)
+* command tracing:                       Messages/Warnings.  (line   60)
+* commands for C++:                      Debugging C Plus Plus.
+                                                             (line    6)
+* commands in guile:                     Commands In Guile.  (line    6)
+* commands in python:                    Commands In Python. (line    6)
+* commands to access guile:              Guile Commands.     (line    6)
+* commands to access python:             Python Commands.    (line    6)
+* comment:                               Command Syntax.     (line   37)
+* COMMON blocks, Fortran:                Special Fortran Commands.
+                                                             (line    9)
+* common targets:                        Target Commands.    (line   46)
+* compatibility, GDB/MI and CLI:         GDB/MI Compatibility with CLI.
+                                                             (line    6)
+* compilation directory:                 Source Path.        (line   40)
+* compile C++ type conversion:           Compiling and Injecting Code.
+                                                             (line   90)
+* compile command debugging info:        Compiling and Injecting Code.
+                                                             (line   82)
+* compile command driver filename override: Compiling and Injecting Code.
+                                                             (line  300)
+* compile command options override:      Compiling and Injecting Code.
+                                                             (line  125)
+* compiling code:                        Compiling and Injecting Code.
+                                                             (line    6)
+* completion:                            Completion.         (line    6)
+* completion of Guile commands:          Commands In Guile.  (line  100)
+* completion of Python commands:         Commands In Python. (line   70)
+* completion of quoted strings:          Completion.         (line   83)
+* completion of structure field names:   Completion.         (line  135)
+* completion of union field names:       Completion.         (line  135)
+* compressed debug sections:             Requirements.       (line  110)
+* conditional breakpoints:               Conditions.         (line    6)
+* conditional tracepoints:               Tracepoint Conditions.
+                                                             (line    6)
+* configuring GDB:                       Running Configure.  (line    6)
+* confirmation:                          Messages/Warnings.  (line   49)
+* connection timeout, for remote TCP target: Remote Configuration.
+                                                             (line  147)
+* console i/o as part of file-i/o:       Console I/O.        (line    6)
+* console interpreter:                   Interpreters.       (line   21)
+* console output in GDB/MI:              GDB/MI Output Syntax.
+                                                             (line  106)
+* constants, in file-i/o protocol:       Constants.          (line    6)
+* continuing:                            Continuing and Stepping.
+                                                             (line    6)
+* continuing threads:                    Thread Stops.       (line    6)
+* control C, and remote debugging:       Bootstrapping.      (line   25)
+* controlling terminal:                  Input/Output.       (line   23)
+* convenience functions:                 Convenience Funs.   (line    6)
+* convenience functions in python:       Functions In Python.
+                                                             (line    6)
+* convenience variables:                 Convenience Vars.   (line    6)
+* convenience variables for tracepoints: Tracepoint Variables.
+                                                             (line    6)
+* convenience variables, and trace state variables: Trace State Variables.
+                                                             (line   17)
+* convenience variables, initializing:   Convenience Vars.   (line   42)
+* core dump file:                        Files.              (line    6)
+* core dump file target:                 Target Commands.    (line   54)
+* crash of debugger:                     Bug Criteria.       (line    9)
+* CRC algorithm definition:              Separate Debug Files.
+                                                             (line  140)
+* CRC of memory block, remote request:   General Query Packets.
+                                                             (line   65)
+* CRIS:                                  CRIS.               (line    6)
+* CRIS mode:                             CRIS.               (line   26)
+* CRIS version:                          CRIS.               (line   10)
+* Ctrl-BREAK, MS-Windows:                Cygwin Native.      (line    9)
+* ctrl-c message, in file-i/o protocol:  The Ctrl-C Message. (line    6)
+* current Ada task ID:                   Ada Tasks.          (line  105)
+* current directory:                     Source Path.        (line   40)
+* current Go package:                    Go.                 (line   11)
+* current thread:                        Threads.            (line   29)
+* current thread, remote request:        General Query Packets.
+                                                             (line   55)
+* custom JIT debug info:                 Custom Debug Info.  (line    6)
+* Cygwin DLL, debugging:                 Cygwin Native.      (line   60)
+* Cygwin-specific commands:              Cygwin Native.      (line    6)
+* D:                                     D.                  (line    6)
+* d packet:                              Packets.            (line  127)
+* D packet:                              Packets.            (line  134)
+* Darwin:                                Darwin.             (line    6)
+* data breakpoints:                      Breakpoints.        (line   17)
+* data manipulation, in GDB/MI:          GDB/MI Data Manipulation.
+                                                             (line    6)
+* dcache line-size:                      Caching Target Data.
+                                                             (line   60)
+* dcache size:                           Caching Target Data.
+                                                             (line   57)
+* dead names, GNU Hurd:                  Hurd Native.        (line   84)
+* debug expression parser:               Debugging Output.   (line  152)
+* debug formats and C++:                 C Plus Plus Expressions.
+                                                             (line    8)
+* debug link sections:                   Separate Debug Files.
+                                                             (line   79)
+* debug remote protocol:                 Debugging Output.   (line  159)
+* debugger crash:                        Bug Criteria.       (line    9)
+* debugging agent:                       In-process Agent.   (line    6)
+* debugging C++ programs:                C Plus Plus Expressions.
+                                                             (line    8)
+* debugging information directory, global: Separate Debug Files.
+                                                             (line    6)
+* debugging information in separate files: Separate Debug Files.
+                                                             (line    6)
+* debugging libthread_db:                Threads.            (line  331)
+* debugging multiple processes:          Forks.              (line   55)
+* debugging optimized code:              Optimized Code.     (line    6)
+* debugging stub, example:               Remote Stub.        (line    6)
+* debugging target:                      Targets.            (line    6)
+* debugging the Cygwin DLL:              Cygwin Native.      (line   60)
+* decimal floating point format:         Decimal Floating Point.
+                                                             (line    6)
+* default behavior of commands, changing: Command Settings.  (line    6)
+* default collection action:             Tracepoint Actions. (line  142)
+* default data directory:                Data Files.         (line   19)
+* default settings, changing:            Command Settings.   (line    6)
+* default source path substitution:      Source Path.        (line  149)
+* default system root:                   Files.              (line  453)
+* define trace state variable, remote request: Tracepoint Packets.
+                                                             (line  121)
+* defining macros interactively:         Macros.             (line   59)
+* definition of a macro, showing:        Macros.             (line   47)
+* delete breakpoints:                    Delete Breaks.      (line   41)
+* deleting breakpoints, watchpoints, catchpoints: Delete Breaks.
+                                                             (line    6)
+* deliver a signal to a program:         Signaling.          (line    6)
+* demangle:                              Symbols.            (line  114)
+* demangler crashes:                     Maintenance Commands.
+                                                             (line  146)
+* demangler crashes <1>:                 Maintenance Commands.
+                                                             (line  173)
+* demangler crashes <2>:                 Maintenance Commands.
+                                                             (line  197)
+* demangling C++ names:                  Print Settings.     (line  510)
+* deprecated commands:                   Maintenance Commands.
+                                                             (line  160)
+* derived type of an object, printing:   Print Settings.     (line  541)
+* descriptor tables display:             DJGPP Native.       (line   24)
+* detach from task, GNU Hurd:            Hurd Native.        (line   59)
+* detach from thread, GNU Hurd:          Hurd Native.        (line  109)
+* direct memory access (DMA) on MS-DOS:  DJGPP Native.       (line   74)
+* directories for source files:          Source Path.        (line    6)
+* directory, compilation:                Source Path.        (line   40)
+* directory, current:                    Source Path.        (line   40)
+* disable address space randomization, remote request: General Query Packets.
+                                                             (line   84)
+* disabling calling functions in the program: Calling.       (line   59)
+* disassembler options:                  Machine Code.       (line  222)
+* disconnected tracing:                  Starting and Stopping Trace Experiments.
+                                                             (line   45)
+* displaced stepping debugging info:     Debugging Output.   (line   75)
+* displaced stepping support:            Maintenance Commands.
+                                                             (line  112)
+* displaced stepping, and process record and replay: Process Record and Replay.
+                                                             (line   96)
+* display command history:               Command History.    (line  110)
+* display derived types:                 Print Settings.     (line  541)
+* display disabled out of scope:         Auto Display.       (line   86)
+* display GDB copyright:                 Help.               (line  167)
+* display of expressions:                Auto Display.       (line    6)
+* display remote monitor communications: Target Commands.    (line  107)
+* display remote packets:                Debugging Output.   (line  159)
+* DJGPP debugging:                       DJGPP Native.       (line    6)
+* DLLs with no debugging symbols:        Non-debug DLL Symbols.
+                                                             (line    6)
+* do not print frame arguments:          Print Settings.     (line  154)
+* documentation:                         Formatting Documentation.
+                                                             (line   22)
+* 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)
+* DOS serial data link, remote debugging: DJGPP Native.      (line  118)
+* DOS serial port status:                DJGPP Native.       (line  139)
+* DPMI:                                  DJGPP Native.       (line    6)
+* dprintf:                               Dynamic printf.     (line    6)
+* dump all data collected at tracepoint: tdump.              (line    6)
+* dump core from inferior:               Core File Generation.
+                                                             (line    6)
+* dump data to a file:                   Dump/Restore Files. (line    6)
+* dump/restore files:                    Dump/Restore Files. (line    6)
+* DVC register:                          PowerPC Embedded.   (line    6)
+* DWARF compilation units cache:         Maintenance Commands.
+                                                             (line  408)
+* DWARF DIEs:                            Debugging Output.   (line   56)
+* DWARF frame unwinders:                 Maintenance Commands.
+                                                             (line  422)
+* DWARF Line Tables:                     Debugging Output.   (line   61)
+* DWARF Reading:                         Debugging Output.   (line   68)
+* DWARF-2 CFI and CRIS:                  CRIS.               (line   18)
+* dynamic linking:                       Files.              (line  123)
+* dynamic printf:                        Dynamic printf.     (line    6)
+* dynamic varobj:                        GDB/MI Variable Objects.
+                                                             (line  166)
+* editing:                               Editing.            (line   15)
+* editing command lines:                 Readline Bare Essentials.
+                                                             (line    6)
+* editing source files:                  Edit.               (line    6)
+* eight-bit characters in strings:       Print Settings.     (line  455)
+* elaboration phase:                     Starting.           (line   92)
+* ELinOS system-wide configuration script: System-wide Configuration Scripts.
+                                                             (line   15)
+* Emacs:                                 Emacs.              (line    6)
+* empty response, for unsupported packets: Overview.         (line   97)
+* enable/disable a breakpoint:           Disabling.          (line    6)
+* enabling and disabling probes:         Static Probe Points.
+                                                             (line   52)
+* entering numbers:                      Numbers.            (line    6)
+* environment (of your program):         Environment.        (line    6)
+* errno values, in file-i/o protocol:    errno Values.       (line    6)
+* error on valid input:                  Bug Criteria.       (line   12)
+* event debugging info:                  Debugging Output.   (line   81)
+* event designators:                     Event Designators.  (line    6)
+* event handling:                        Set Catchpoints.    (line    6)
+* examine process image:                 Process Information.
+                                                             (line    6)
+* examining data:                        Data.               (line    6)
+* examining memory:                      Memory.             (line    9)
+* exception handlers:                    Set Catchpoints.    (line    6)
+* exceptions, guile:                     Guile Exception Handling.
+                                                             (line    6)
+* exceptions, python:                    Exception Handling. (line    6)
+* exec events, remote reply:             Stop Reply Packets. (line  141)
+* executable file:                       Files.              (line   16)
+* executable file target:                Target Commands.    (line   50)
+* executable file, for remote target:    Remote Configuration.
+                                                             (line  102)
+* execute commands from a file:          Command Files.      (line   17)
+* execute forward or backward in time:   Reverse Execution.  (line   92)
+* execute remote command, remote request: General Query Packets.
+                                                             (line  536)
+* execution, foreground, background and asynchronous: Background Execution.
+                                                             (line    6)
+* exit status of shell commands:         Convenience Vars.   (line  188)
+* exiting GDB:                           Quitting GDB.       (line    6)
+* expand macro once:                     Macros.             (line   38)
+* expanding preprocessor macros:         Macros.             (line   29)
+* explicit locations:                    Explicit Locations. (line    6)
+* explore type:                          Data.               (line  234)
+* explore value:                         Data.               (line  227)
+* exploring hierarchical data structures: Data.              (line  125)
+* expression debugging info:             Debugging Output.   (line   86)
+* expression parser, debugging info:     Debugging Output.   (line  152)
+* expressions:                           Expressions.        (line    6)
+* expressions in Ada:                    Ada.                (line   11)
+* expressions in C or C++:               C.                  (line    6)
+* expressions in C++:                    C Plus Plus Expressions.
+                                                             (line    6)
+* expressions in Modula-2:               Modula-2.           (line   12)
+* extend GDB for remote targets:         Connecting.         (line  279)
+* extending GDB:                         Extending GDB.      (line    6)
+* extra signal information:              Signals.            (line  156)
+* F packet:                              Packets.            (line  150)
+* F reply packet:                        The F Reply Packet. (line    6)
+* F request packet:                      The F Request Packet.
+                                                             (line    6)
+* fast tracepoints:                      Set Tracepoints.    (line   24)
+* fast tracepoints, setting:             Create and Delete Tracepoints.
+                                                             (line   50)
+* fatal signal:                          Bug Criteria.       (line    9)
+* fatal signals:                         Signals.            (line   15)
+* features of the remote protocol:       General Query Packets.
+                                                             (line  589)
+* file name canonicalization:            Files.              (line  520)
+* file transfer:                         File Transfer.      (line    6)
+* file transfer, remote protocol:        Host I/O Packets.   (line    6)
+* file-i/o examples:                     File-I/O Examples.  (line    6)
+* file-i/o overview:                     File-I/O Overview.  (line    6)
+* File-I/O remote protocol extension:    File-I/O Remote Protocol Extension.
+                                                             (line    6)
+* file-i/o reply packet:                 The F Reply Packet. (line    6)
+* file-i/o request packet:               The F Request Packet.
+                                                             (line    6)
+* filename-display:                      Backtrace.          (line  202)
+* find trace snapshot:                   tfind.              (line    6)
+* flinching:                             Messages/Warnings.  (line   49)
+* float promotion:                       ABI.                (line   34)
+* floating point:                        Floating Point Hardware.
+                                                             (line    6)
+* floating point registers:              Registers.          (line   15)
+* floating point, MIPS remote:           MIPS Embedded.      (line   13)
+* focus of debugging:                    Threads.            (line   29)
+* foo:                                   Symbol Errors.      (line   54)
+* foreground execution:                  Background Execution.
+                                                             (line    6)
+* fork events, remote reply:             Stop Reply Packets. (line  104)
+* fork, debugging programs which call:   Forks.              (line    6)
+* format options:                        Print Settings.     (line    6)
+* formatted output:                      Output Formats.     (line    6)
+* Fortran:                               Summary.            (line   40)
+* Fortran Defaults:                      Fortran Defaults.   (line    6)
+* Fortran modules, information about:    Symbols.            (line  555)
+* Fortran operators and expressions:     Fortran Operators.  (line    6)
+* Fortran-specific support in GDB:       Fortran.            (line    6)
+* FR-V shared-library debugging:         Debugging Output.   (line  193)
+* frame debugging info:                  Debugging Output.   (line  101)
+* frame decorator api:                   Frame Decorator API.
+                                                             (line    6)
+* frame filters api:                     Frame Filter API.   (line    6)
+* frame information, printing:           Print Settings.     (line  314)
+* frame level:                           Frames.             (line   28)
+* frame number:                          Frames.             (line   28)
+* frame pointer:                         Frames.             (line   21)
+* frame pointer register:                Registers.          (line   31)
+* frame, definition:                     Frames.             (line    6)
+* frameless execution:                   Frames.             (line   34)
+* frames in guile:                       Frames In Guile.    (line    6)
+* frames in python:                      Frames In Python.   (line    6)
+* free memory information (MS-DOS):      DJGPP Native.       (line   19)
+* FreeBSD:                               FreeBSD.            (line    6)
+* FreeBSD LWP debug messages:            Debugging Output.   (line   92)
+* FreeBSD native target debug messages:  Debugging Output.   (line   97)
+* fstat, file-i/o system call:           stat/fstat.         (line    6)
+* Fujitsu:                               Remote Stub.        (line   68)
+* full symbol tables, listing GDB's internal: Symbols.       (line  645)
+* function call arguments, optimized out: Backtrace.         (line  133)
+* function entry/exit, wrong values of variables: Variables. (line  106)
+* functions and variables by Fortran module: Symbols.        (line  555)
+* functions without line info, and stepping: Continuing and Stepping.
+                                                             (line   92)
+* g packet:                              Packets.            (line  155)
+* G packet:                              Packets.            (line  183)
+* g++, GNU C++ compiler:                 C.                  (line   10)
+* garbled pointers:                      DJGPP Native.       (line   42)
+* GCC and C++:                           C Plus Plus Expressions.
+                                                             (line    8)
+* GDB bugs, reporting:                   Bug Reporting.      (line    6)
+* GDB internal error:                    Maintenance Commands.
+                                                             (line  197)
+* gdb module:                            Basic Python.       (line   28)
+* gdb objects:                           GDB Scheme Data Types.
+                                                             (line    6)
+* GDB reference card:                    Formatting Documentation.
+                                                             (line    6)
+* GDB startup:                           Startup.            (line    6)
+* GDB version number:                    Help.               (line  157)
+* gdb.ini:                               Startup.            (line   69)
+* gdb.printing:                          gdb.printing.       (line    6)
+* gdb.prompt:                            gdb.prompt.         (line    6)
+* gdb.types:                             gdb.types.          (line    6)
+* gdb.Value:                             Values From Inferior.
+                                                             (line    6)
+* GDB/MI development:                    GDB/MI Development and Front Ends.
+                                                             (line    6)
+* GDB/MI General Design:                 GDB/MI General Design.
+                                                             (line    6)
+* GDB/MI, async records:                 GDB/MI Async Records.
+                                                             (line    6)
+* GDB/MI, breakpoint commands:           GDB/MI Breakpoint Commands.
+                                                             (line    6)
+* GDB/MI, compatibility with CLI:        GDB/MI Compatibility with CLI.
+                                                             (line    6)
+* GDB/MI, data manipulation:             GDB/MI Data Manipulation.
+                                                             (line    6)
+* GDB/MI, input syntax:                  GDB/MI Input Syntax.
+                                                             (line    6)
+* GDB/MI, its purpose:                   GDB/MI.             (line   36)
+* GDB/MI, output syntax:                 GDB/MI Output Syntax.
+                                                             (line    6)
+* GDB/MI, result records:                GDB/MI Result Records.
+                                                             (line    6)
+* GDB/MI, simple examples:               GDB/MI Simple Examples.
+                                                             (line    6)
+* GDB/MI, stream records:                GDB/MI Stream Records.
+                                                             (line    6)
+* gdbarch debugging info:                Debugging Output.   (line   23)
+* GDBHISTFILE, environment variable:     Command History.    (line   26)
+* GDBHISTSIZE, environment variable:     Command History.    (line   56)
+* gdbserver, command-line arguments:     Server.             (line   34)
+* gdbserver, connecting:                 Connecting.         (line    6)
+* gdbserver, search path for libthread_db: Server.           (line  254)
+* gdbserver, send all debug output to a single file: Server. (line  148)
+* gdbserver, target extended-remote mode: Connecting.        (line    6)
+* gdbserver, target remote mode:         Connecting.         (line    6)
+* gdbserver, types of connections:       Connecting.         (line    6)
+* GDT:                                   DJGPP Native.       (line   24)
+* get thread information block address:  General Query Packets.
+                                                             (line  303)
+* get thread-local storage address, remote request: General Query Packets.
+                                                             (line  271)
+* gettimeofday, file-i/o system call:    gettimeofday.       (line    6)
+* getting structure elements using gdb.Field objects as subscripts: Values From Inferior.
+                                                             (line   40)
+* global debugging information directories: Separate Debug Files.
+                                                             (line    6)
+* global thread identifier (GDB):        Threads.            (line   88)
+* global thread number:                  Threads.            (line   88)
+* GNAT descriptive types:                Ada Glitches.       (line   57)
+* GNAT encoding:                         Ada Glitches.       (line   57)
+* GNU C++:                               C.                  (line   10)
+* GNU Emacs:                             Emacs.              (line    6)
+* GNU Hurd debugging:                    Hurd Native.        (line    6)
+* GNU/Hurd debug messages:               Debugging Output.   (line  106)
+* GNU/Linux LWP debug messages:          Debugging Output.   (line  121)
+* GNU/Linux namespaces debug messages:   Debugging Output.   (line  125)
+* Go (programming language):             Go.                 (line    6)
+* guile api:                             Guile API.          (line    6)
+* guile architectures:                   Architectures In Guile.
+                                                             (line    6)
+* guile auto-loading:                    Guile Auto-loading. (line    6)
+* guile commands:                        Guile Commands.     (line    6)
+* guile commands <1>:                    Commands In Guile.  (line    6)
+* guile configuration:                   Guile Configuration.
+                                                             (line    6)
+* guile exceptions:                      Guile Exception Handling.
+                                                             (line    6)
+* guile gdb module:                      Basic Guile.        (line   37)
+* guile iterators:                       Iterators In Guile. (line    6)
+* guile modules:                         Guile Modules.      (line    6)
+* guile pagination:                      Basic Guile.        (line    6)
+* guile parameters:                      Parameters In Guile.
+                                                             (line    6)
+* guile pretty printing api:             Guile Pretty Printing API.
+                                                             (line    6)
+* guile scripting:                       Guile.              (line    6)
+* guile scripts directory:               Guile Introduction. (line   15)
+* guile stdout:                          Basic Guile.        (line    6)
+* guile, working with types:             Types In Guile.     (line    6)
+* guile, working with values from inferior: Values From Inferior In Guile.
+                                                             (line    6)
+* H packet:                              Packets.            (line  193)
+* handling signals:                      Signals.            (line   27)
+* hardware breakpoints:                  Set Breaks.         (line   61)
+* hardware debug registers:              Maintenance Commands.
+                                                             (line  468)
+* hardware watchpoints:                  Set Watchpoints.    (line   31)
+* hash mark while downloading:           Target Commands.    (line   98)
+* heuristic-fence-post (Alpha, MIPS):    MIPS.               (line   14)
+* history events:                        Event Designators.  (line    8)
+* history expansion:                     History Interaction.
+                                                             (line    6)
+* history expansion, turn on/off:        Command History.    (line   85)
+* history file:                          Command History.    (line   26)
+* history number:                        Value History.      (line   13)
+* history of values printed by GDB:      Value History.      (line    6)
+* history size:                          Command History.    (line   56)
+* history substitution:                  Command History.    (line   26)
+* hooks, for commands:                   Hooks.              (line    6)
+* hooks, post-command:                   Hooks.              (line   11)
+* hooks, pre-command:                    Hooks.              (line    6)
+* host character set:                    Character Sets.     (line    6)
+* Host I/O, remote protocol:             Host I/O Packets.   (line    6)
+* how many arguments (user-defined commands): Define.        (line   25)
+* HPPA support:                          HPPA.               (line    6)
+* i packet:                              Packets.            (line  207)
+* I packet:                              Packets.            (line  212)
+* i/o:                                   Input/Output.       (line    6)
+* I/O registers (Atmel AVR):             AVR.                (line   10)
+* i386:                                  Remote Stub.        (line   56)
+* i386-stub.c:                           Remote Stub.        (line   56)
+* IDT:                                   DJGPP Native.       (line   24)
+* ignore count (of breakpoint):          Conditions.         (line   79)
+* in-process agent protocol:             In-process Agent Protocol.
+                                                             (line    6)
+* incomplete type:                       Symbols.            (line  346)
+* indentation in structure display:      Print Settings.     (line  417)
+* index files:                           Index Files.        (line    6)
+* index section format:                  Index Section Format.
+                                                             (line    6)
+* inferior:                              Inferiors Connections and Programs.
+                                                             (line   15)
+* inferior debugging info:               Debugging Output.   (line  110)
+* inferior events in Python:             Events In Python.   (line    6)
+* inferior functions, calling:           Calling.            (line    6)
+* inferior tty:                          Input/Output.       (line   44)
+* inferiors in Python:                   Inferiors In Python.
+                                                             (line    6)
+* infinite recursion in user-defined commands: Define.       (line  128)
+* info for known .debug_gdb_scripts-loaded scripts: Maintenance Commands.
+                                                             (line  335)
+* info for known object files:           Maintenance Commands.
+                                                             (line  320)
+* info line, repeated calls:             Machine Code.       (line   40)
+* info proc cmdline:                     Process Information.
+                                                             (line   41)
+* info proc cwd:                         Process Information.
+                                                             (line   45)
+* info proc exe:                         Process Information.
+                                                             (line   49)
+* info proc files:                       Process Information.
+                                                             (line   53)
+* information about static tracepoint markers: Listing Static Tracepoint Markers.
+                                                             (line    6)
+* information about tracepoints:         Listing Tracepoints.
+                                                             (line    6)
+* inheritance:                           Debugging C Plus Plus.
+                                                             (line   26)
+* init file:                             Startup.            (line   11)
+* init file name:                        Startup.            (line   69)
+* initial frame:                         Frames.             (line   12)
+* initialization file, readline:         Readline Init File. (line    6)
+* injecting code:                        Compiling and Injecting Code.
+                                                             (line    6)
+* inline functions, debugging:           Inline Functions.   (line    6)
+* innermost frame:                       Frames.             (line   12)
+* input syntax for GDB/MI:               GDB/MI Input Syntax.
+                                                             (line    6)
+* installation:                          Installing GDB.     (line    6)
+* instructions, assembly:                Machine Code.       (line   43)
+* integral datatypes, in file-i/o protocol: Integral Datatypes.
+                                                             (line    6)
+* Intel:                                 Remote Stub.        (line   56)
+* Intel disassembly flavor:              Machine Code.       (line  237)
+* Intel Memory Protection Extensions (MPX).: i386.           (line   21)
+* Intel MPX boundary violations:         Signals.            (line  197)
+* Intel Processor Trace:                 Process Record and Replay.
+                                                             (line   75)
+* interaction, readline:                 Readline Interaction.
+                                                             (line    6)
+* internal commands:                     Maintenance Commands.
+                                                             (line    6)
+* internal errors, control of GDB behavior: Maintenance Commands.
+                                                             (line  197)
+* internal GDB breakpoints:              Set Breaks.         (line  374)
+* interrupt:                             Quitting GDB.       (line   13)
+* interrupt debuggee on MS-Windows:      Cygwin Native.      (line    9)
+* interrupt remote programs:             Remote Configuration.
+                                                             (line   36)
+* interrupt remote programs <1>:         Remote Configuration.
+                                                             (line  108)
+* interrupting remote programs:          Connecting.         (line  246)
+* interrupting remote targets:           Bootstrapping.      (line   25)
+* interrupts (remote protocol):          Interrupts.         (line    6)
+* invalid input:                         Bug Criteria.       (line   16)
+* invoke another interpreter:            Interpreters.       (line   39)
+* ipa protocol commands:                 IPA Protocol Commands.
+                                                             (line    6)
+* ipa protocol objects:                  IPA Protocol Objects.
+                                                             (line    6)
+* isatty, file-i/o system call:          isatty.             (line    6)
+* JIT compilation interface:             JIT Interface.      (line    6)
+* JIT debug info reader:                 Custom Debug Info.  (line    6)
+* just-in-time compilation:              JIT Interface.      (line    6)
+* just-in-time compilation, debugging messages: Debugging Output.
+                                                             (line  117)
+* k packet:                              Packets.            (line  216)
+* kernel crash dump:                     BSD libkvm Interface.
+                                                             (line    6)
+* kernel memory image:                   BSD libkvm Interface.
+                                                             (line    6)
+* kill ring:                             Readline Killing Commands.
+                                                             (line   18)
+* killing text:                          Readline Killing Commands.
+                                                             (line    6)
+* languages:                             Languages.          (line    6)
+* last tracepoint number:                Create and Delete Tracepoints.
+                                                             (line  122)
+* latest breakpoint:                     Set Breaks.         (line    6)
+* lazy strings in guile:                 Lazy Strings In Guile.
+                                                             (line    6)
+* lazy strings in python:                Lazy Strings In Python.
+                                                             (line    6)
+* LDT:                                   DJGPP Native.       (line   24)
+* leaving GDB:                           Quitting GDB.       (line    6)
+* libkvm:                                BSD libkvm Interface.
+                                                             (line    6)
+* library list format, remote protocol:  Library List Format.
+                                                             (line    6)
+* library list format, remote protocol <1>: Library List Format for SVR4 Targets.
+                                                             (line    6)
+* limit hardware breakpoints and watchpoints: Remote Configuration.
+                                                             (line   79)
+* limit hardware watchpoints length:     Remote Configuration.
+                                                             (line   91)
+* limit on number of printed array elements: Print Settings. (line  141)
+* limits, in file-i/o protocol:          Limits.             (line    6)
+* line tables in python:                 Line Tables In Python.
+                                                             (line    6)
+* line tables, listing GDB's internal:   Symbols.            (line  692)
+* linespec locations:                    Linespec Locations. (line    6)
+* Linux lightweight processes:           Debugging Output.   (line  121)
+* list active threads, remote request:   General Query Packets.
+                                                             (line  238)
+* list of supported file-i/o calls:      List of Supported Calls.
+                                                             (line    6)
+* list output in GDB/MI:                 GDB/MI Output Syntax.
+                                                             (line  117)
+* list, how many lines to display:       List.               (line   30)
+* listing GDB's internal line tables:    Symbols.            (line  692)
+* listing GDB's internal symbol tables:  Symbols.            (line  645)
+* listing machine instructions:          Machine Code.       (line   43)
+* listing mapped overlays:               Overlay Commands.   (line   60)
+* lists of breakpoints:                  Breakpoints.        (line   45)
+* load address, overlay's:               How Overlays Work.  (line    6)
+* load shared library:                   Files.              (line  327)
+* load symbols from memory:              Files.              (line  193)
+* local socket, target remote:           Connecting.         (line  147)
+* local variables:                       Symbols.            (line  415)
+* locate address:                        Output Formats.     (line   35)
+* location:                              Specify Location.   (line    6)
+* lock scheduler:                        All-Stop Mode.      (line   37)
+* log output in GDB/MI:                  GDB/MI Output Syntax.
+                                                             (line  113)
+* logging file name:                     Logging Output.     (line   12)
+* logging GDB output:                    Logging Output.     (line    6)
+* lseek flags, in file-i/o protocol:     Lseek Flags.        (line    6)
+* lseek, file-i/o system call:           lseek.              (line    6)
+* m packet:                              Packets.            (line  239)
+* M packet:                              Packets.            (line  259)
+* m680x0:                                Remote Stub.        (line   59)
+* m68k-stub.c:                           Remote Stub.        (line   59)
+* Mach-O symbols processing:             Debugging Output.   (line  130)
+* machine instructions:                  Machine Code.       (line   43)
+* macro definition, showing:             Macros.             (line   47)
+* macro expansion, showing the results of preprocessor: Macros.
+                                                             (line   29)
+* macros, example of debugging with:     Macros.             (line   83)
+* macros, from debug info:               Macros.             (line   47)
+* macros, user-defined:                  Macros.             (line   59)
+* mailing lists:                         GDB/MI Development and Front Ends.
+                                                             (line   77)
+* maintenance commands:                  Maintenance Commands.
+                                                             (line    6)
+* Man pages:                             Man Pages.          (line    6)
+* managing frame filters:                Frame Filter Management.
+                                                             (line    6)
+* manual overlay debugging:              Overlay Commands.   (line   23)
+* map an overlay:                        Overlay Commands.   (line   30)
+* mapinfo list, QNX Neutrino:            Process Information.
+                                                             (line  131)
+* mapped address:                        How Overlays Work.  (line    6)
+* mapped overlays:                       How Overlays Work.  (line    6)
+* markers, static tracepoints:           Set Tracepoints.    (line   28)
+* maximum value for offset of closest symbol: Print Settings.
+                                                             (line   70)
+* member functions:                      C Plus Plus Expressions.
+                                                             (line   16)
+* memory address space mappings:         Process Information.
+                                                             (line   80)
+* memory address space mappings <1>:     Maintenance Commands.
+                                                             (line  260)
+* memory map format:                     Memory Map Format.  (line    6)
+* memory region attributes:              Memory Region Attributes.
+                                                             (line    6)
+* memory tracing:                        Breakpoints.        (line   17)
+* memory transfer, in file-i/o protocol: Memory Transfer.    (line    6)
+* memory used by commands:               Maintenance Commands.
+                                                             (line  569)
+* 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)
+* mi interpreter:                        Interpreters.       (line   26)
+* mi1 interpreter:                       Interpreters.       (line   37)
+* mi2 interpreter:                       Interpreters.       (line   34)
+* mi3 interpreter:                       Interpreters.       (line   31)
+* minimal language:                      Unsupported Languages.
+                                                             (line    6)
+* minimal symbol dump:                   Symbols.            (line  619)
+* Minimal symbols and DLLs:              Non-debug DLL Symbols.
+                                                             (line    6)
+* MIPS addresses, masking:               MIPS.               (line   80)
+* MIPS remote floating point:            MIPS Embedded.      (line   13)
+* MIPS stack:                            MIPS.               (line    6)
+* miscellaneous settings:                Other Misc Settings.
+                                                             (line    6)
+* MMX registers (x86):                   Registers.          (line   76)
+* mode_t values, in file-i/o protocol:   mode_t Values.      (line    6)
+* Modula-2:                              Summary.            (line   29)
+* Modula-2 built-ins:                    Built-In Func/Proc. (line    6)
+* Modula-2 checks:                       M2 Checks.          (line    6)
+* Modula-2 constants:                    Built-In Func/Proc. (line  114)
+* Modula-2 defaults:                     M2 Defaults.        (line    6)
+* Modula-2 operators:                    M2 Operators.       (line    6)
+* Modula-2 types:                        M2 Types.           (line    6)
+* Modula-2, deviations from:             Deviations.         (line    6)
+* Modula-2, GDB support:                 Modula-2.           (line    6)
+* module functions and variables:        Symbols.            (line  555)
+* modules:                               Symbols.            (line  547)
+* monitor commands, for gdbserver:       Server.             (line  218)
+* Motorola 680x0:                        Remote Stub.        (line   59)
+* MS Windows debugging:                  Cygwin Native.      (line    6)
+* MS-DOS system info:                    DJGPP Native.       (line   19)
+* MS-DOS-specific commands:              DJGPP Native.       (line    6)
+* multiple locations, breakpoints:       Set Breaks.         (line  200)
+* multiple processes:                    Forks.              (line    6)
+* multiple targets:                      Active Targets.     (line    6)
+* multiple threads:                      Threads.            (line    6)
+* multiple threads, backtrace:           Backtrace.          (line   97)
+* multiple-symbols menu:                 Ambiguous Expressions.
+                                                             (line   51)
+* multiprocess extensions, in remote protocol: General Query Packets.
+                                                             (line  913)
+* name a thread:                         Threads.            (line  247)
+* names of symbols:                      Symbols.            (line   14)
+* namespace in C++:                      C Plus Plus Expressions.
+                                                             (line   20)
+* native Cygwin debugging:               Cygwin Native.      (line    6)
+* native DJGPP debugging:                DJGPP Native.       (line    6)
+* native script auto-loading:            Auto-loading sequences.
+                                                             (line    6)
+* native target:                         Target Commands.    (line   85)
+* negative breakpoint numbers:           Set Breaks.         (line  374)
+* never read symbols:                    Files.              (line  101)
+* New SYSTAG message:                    Threads.            (line   35)
+* new user interface:                    Interpreters.       (line   68)
+* Newlib OS ABI and its influence on the longjmp handling: ABI.
+                                                             (line   11)
+* Nios II architecture:                  Nios II.            (line    6)
+* no debug info functions:               Calling.            (line   78)
+* no debug info variables:               Variables.          (line  142)
+* non-member C++ functions, set breakpoint in: Set Breaks.   (line  113)
+* non-stop mode:                         Non-Stop Mode.      (line    6)
+* non-stop mode, and process record and replay: Process Record and Replay.
+                                                             (line  101)
+* non-stop mode, and set displaced-stepping: Maintenance Commands.
+                                                             (line  129)
+* non-stop mode, remote request:         General Query Packets.
+                                                             (line  379)
+* noninvasive task options:              Hurd Native.        (line   72)
+* notation, readline:                    Readline Bare Essentials.
+                                                             (line    6)
+* notational conventions, for GDB/MI:    GDB/MI.             (line   52)
+* notification packets:                  Notification Packets.
+                                                             (line    6)
+* notify output in GDB/MI:               GDB/MI Output Syntax.
+                                                             (line  102)
+* NULL elements in arrays:               Print Settings.     (line  408)
+* number of array elements to print:     Print Settings.     (line  141)
+* number representation:                 Numbers.            (line    6)
+* numbers for breakpoints:               Breakpoints.        (line   38)
+* object files, relocatable, reading symbols from: Files.    (line  146)
+* Objective-C:                           Objective-C.        (line    6)
+* Objective-C, classes and selectors:    Symbols.            (line  570)
+* Objective-C, print objects:            The Print Command with Objective-C.
+                                                             (line    6)
+* OBJFILE-gdb.gdb:                       objfile-gdbdotext file.
+                                                             (line    6)
+* OBJFILE-gdb.py:                        objfile-gdbdotext file.
+                                                             (line    6)
+* OBJFILE-gdb.scm:                       objfile-gdbdotext file.
+                                                             (line    6)
+* objfiles in guile:                     Objfiles In Guile.  (line    6)
+* objfiles in python:                    Objfiles In Python. (line    6)
+* observer debugging info:               Debugging Output.   (line  142)
+* octal escapes in strings:              Print Settings.     (line  455)
+* online documentation:                  Help.               (line    6)
+* opaque data types:                     Symbols.            (line  582)
+* open flags, in file-i/o protocol:      Open Flags.         (line    6)
+* open, file-i/o system call:            open.               (line    6)
+* OpenCL C:                              OpenCL C.           (line    6)
+* OpenCL C Datatypes:                    OpenCL C Datatypes. (line    6)
+* OpenCL C Expressions:                  OpenCL C Expressions.
+                                                             (line    6)
+* OpenCL C Operators:                    OpenCL C Operators. (line    6)
+* OpenRISC 1000:                         OpenRISC 1000.      (line    6)
+* operate-and-get-next:                  Editing.            (line   32)
+* operating system information:          Operating System Information.
+                                                             (line    6)
+* operating system information, process list: Process list.  (line    6)
+* optimized code, debugging:             Optimized Code.     (line    6)
+* optimized code, wrong values of variables: Variables.      (line  106)
+* optimized out value in guile:          Values From Inferior In Guile.
+                                                             (line  102)
+* optimized out value in Python:         Values From Inferior.
+                                                             (line   70)
+* optimized out, in backtrace:           Backtrace.          (line  133)
+* optional debugging messages:           Debugging Output.   (line    6)
+* optional warnings:                     Messages/Warnings.  (line    6)
+* OS ABI:                                ABI.                (line   11)
+* OS information:                        OS Information.     (line    6)
+* out-of-line single-stepping:           Maintenance Commands.
+                                                             (line  112)
+* outermost frame:                       Frames.             (line   12)
+* output formats:                        Output Formats.     (line    6)
+* output syntax of GDB/MI:               GDB/MI Output Syntax.
+                                                             (line    6)
+* overlay area:                          How Overlays Work.  (line    6)
+* overlay example program:               Overlay Sample Program.
+                                                             (line    6)
+* overlays:                              Overlays.           (line    6)
+* overlays, setting breakpoints in:      Overlay Commands.   (line   91)
+* overloaded functions, calling:         C Plus Plus Expressions.
+                                                             (line   26)
+* overloaded functions, overload resolution: Debugging C Plus Plus.
+                                                             (line   59)
+* overloading in C++:                    Debugging C Plus Plus.
+                                                             (line   15)
+* overloading, Ada:                      Overloading support for Ada.
+                                                             (line    6)
+* p packet:                              Packets.            (line  271)
+* P packet:                              Packets.            (line  284)
+* packet acknowledgment, for GDB remote: Packet Acknowledgment.
+                                                             (line    6)
+* packet size, remote protocol:          General Query Packets.
+                                                             (line  819)
+* packets, notification:                 Notification Packets.
+                                                             (line    6)
+* packets, reporting on stdout:          Debugging Output.   (line  159)
+* packets, tracepoint:                   Tracepoint Packets. (line    6)
+* page size:                             Screen Size.        (line    6)
+* page tables display (MS-DOS):          DJGPP Native.       (line   55)
+* pagination:                            Screen Size.        (line    6)
+* parameters in guile:                   Parameters In Guile.
+                                                             (line    6)
+* parameters in python:                  Parameters In Python.
+                                                             (line    6)
+* partial symbol dump:                   Symbols.            (line  619)
+* partial symbol tables, listing GDB's internal: Symbols.    (line  645)
+* Pascal:                                Summary.            (line   35)
+* Pascal objects, static members display: Print Settings.    (line  570)
+* Pascal support in GDB, limitations:    Pascal.             (line    6)
+* pass signals to inferior, remote request: General Query Packets.
+                                                             (line  440)
+* patching binaries:                     Patching.           (line    6)
+* patching object files:                 Files.              (line   26)
+* pause current task (GNU Hurd):         Hurd Native.        (line   48)
+* pause current thread (GNU Hurd):       Hurd Native.        (line   90)
+* pauses in output:                      Screen Size.        (line    6)
+* pending breakpoints:                   Set Breaks.         (line  245)
+* physical address from linear address:  DJGPP Native.       (line   80)
+* physname:                              Debugging Output.   (line   41)
+* pipe, target remote to:                Connecting.         (line  234)
+* pipes:                                 Starting.           (line   64)
+* pointer values, in file-i/o protocol:  Pointer Values.     (line    6)
+* pointer, finding referent:             Print Settings.     (line   80)
+* port rights, GNU Hurd:                 Hurd Native.        (line   84)
+* port sets, GNU Hurd:                   Hurd Native.        (line   84)
+* PowerPC architecture:                  PowerPC.            (line    6)
+* prefix for data files:                 Data Files.         (line    6)
+* prefix for executable and shared library file names: Files.
+                                                             (line  386)
+* premature return from system calls:    Interrupted System Calls.
+                                                             (line    6)
+* preprocessor macro expansion, showing the results of: Macros.
+                                                             (line   29)
+* pretty print arrays:                   Print Settings.     (line  115)
+* pretty print C++ virtual function tables: Print Settings.  (line  581)
+* pretty-printer commands:               Pretty-Printer Commands.
+                                                             (line    6)
+* print all frame argument values:       Print Settings.     (line  154)
+* print an Objective-C object description: The Print Command with Objective-C.
+                                                             (line   11)
+* print array indexes:                   Print Settings.     (line  125)
+* print frame argument values for scalars only: Print Settings.
+                                                             (line  154)
+* print list of auto-loaded canned sequences of commands scripts: Auto-loading sequences.
+                                                             (line   21)
+* print list of auto-loaded Guile scripts: Guile Auto-loading.
+                                                             (line   23)
+* print list of auto-loaded Python scripts: Python Auto-loading.
+                                                             (line   23)
+* print messages on inferior start and exit: Inferiors Connections and Programs.
+                                                             (line  169)
+* print messages on thread start and exit: Threads.          (line  272)
+* print messages when symbols are loaded: Symbols.           (line  600)
+* print settings:                        Print Settings.     (line    6)
+* print structures in indented form:     Print Settings.     (line  417)
+* print/don't print memory addresses:    Print Settings.     (line   13)
+* printing byte arrays:                  Output Formats.     (line   60)
+* printing data:                         Data.               (line    6)
+* printing frame argument values:        Print Settings.     (line  154)
+* printing frame information:            Print Settings.     (line  314)
+* printing nested structures:            Print Settings.     (line  362)
+* printing strings:                      Output Formats.     (line   60)
+* probe static tracepoint marker:        Create and Delete Tracepoints.
+                                                             (line   75)
+* probing markers, static tracepoints:   Set Tracepoints.    (line   28)
+* process detailed status information:   Process Information.
+                                                             (line   89)
+* process ID:                            Process Information.
+                                                             (line   25)
+* process info via /proc:                Process Information.
+                                                             (line    6)
+* process list, QNX Neutrino:            Process Information.
+                                                             (line  127)
+* process record and replay:             Process Record and Replay.
+                                                             (line    6)
+* process status register:               Registers.          (line   31)
+* processes, multiple:                   Forks.              (line    6)
+* procfs API calls:                      Process Information.
+                                                             (line  106)
+* profiling GDB:                         Maintenance Commands.
+                                                             (line  452)
+* program counter register:              Registers.          (line   31)
+* program entry point:                   Backtrace.          (line  155)
+* programming in guile:                  Guile API.          (line    6)
+* programming in python:                 Python API.         (line    6)
+* progspaces in guile:                   Progspaces In Guile.
+                                                             (line    6)
+* progspaces in python:                  Progspaces In Python.
+                                                             (line    6)
+* prompt:                                Prompt.             (line    6)
+* protocol basics, file-i/o:             Protocol Basics.    (line    6)
+* protocol, GDB remote serial:           Overview.           (line   14)
+* protocol-specific representation of datatypes, in file-i/o protocol: Protocol-specific Representation of Datatypes.
+                                                             (line    6)
+* python api:                            Python API.         (line    6)
+* Python architectures:                  Architectures In Python.
+                                                             (line    6)
+* Python auto-loading:                   Python Auto-loading.
+                                                             (line    6)
+* python commands:                       Python Commands.    (line    6)
+* python commands <1>:                   Commands In Python. (line    6)
+* python convenience functions:          Functions In Python.
+                                                             (line    6)
+* python directory:                      Python.             (line   12)
+* python exceptions:                     Exception Handling. (line    6)
+* python finish breakpoints:             Finish Breakpoints in Python.
+                                                             (line    6)
+* python functions:                      Basic Python.       (line   28)
+* python module:                         Basic Python.       (line   28)
+* python modules:                        Python modules.     (line    6)
+* python pagination:                     Basic Python.       (line    6)
+* python parameters:                     Parameters In Python.
+                                                             (line    6)
+* python pretty printing api:            Pretty Printing API.
+                                                             (line    6)
+* python scripting:                      Python.             (line    6)
+* python stdout:                         Basic Python.       (line    6)
+* Python TUI Windows:                    TUI Windows In Python.
+                                                             (line    6)
+* Python, working with types:            Types In Python.    (line    6)
+* python, working with values from inferior: Values From Inferior.
+                                                             (line    6)
+* q packet:                              Packets.            (line  296)
+* Q packet:                              Packets.            (line  296)
+* QAllow packet:                         General Query Packets.
+                                                             (line   44)
+* qAttached packet:                      General Query Packets.
+                                                             (line 1381)
+* qC packet:                             General Query Packets.
+                                                             (line   55)
+* QCatchSyscalls packet:                 General Query Packets.
+                                                             (line  401)
+* qCRC packet:                           General Query Packets.
+                                                             (line   65)
+* QDisableRandomization packet:          General Query Packets.
+                                                             (line   84)
+* QEnvironmentHexEncoded packet:         General Query Packets.
+                                                             (line  144)
+* QEnvironmentReset packet:              General Query Packets.
+                                                             (line  197)
+* QEnvironmentUnset packet:              General Query Packets.
+                                                             (line  173)
+* qfThreadInfo packet:                   General Query Packets.
+                                                             (line  238)
+* qGetTIBAddr packet:                    General Query Packets.
+                                                             (line  303)
+* qGetTLSAddr packet:                    General Query Packets.
+                                                             (line  271)
+* QNonStop packet:                       General Query Packets.
+                                                             (line  379)
+* qOffsets packet:                       General Query Packets.
+                                                             (line  342)
+* qP packet:                             General Query Packets.
+                                                             (line  369)
+* QPassSignals packet:                   General Query Packets.
+                                                             (line  440)
+* QProgramSignals packet:                General Query Packets.
+                                                             (line  469)
+* qRcmd packet:                          General Query Packets.
+                                                             (line  536)
+* qSearch memory packet:                 General Query Packets.
+                                                             (line  558)
+* QSetWorkingDir packet:                 General Query Packets.
+                                                             (line  219)
+* QStartNoAckMode packet:                General Query Packets.
+                                                             (line  575)
+* QStartupWithShell packet:              General Query Packets.
+                                                             (line  114)
+* qsThreadInfo packet:                   General Query Packets.
+                                                             (line  238)
+* qSupported packet:                     General Query Packets.
+                                                             (line  589)
+* qSymbol packet:                        General Query Packets.
+                                                             (line 1033)
+* qTBuffer packet:                       Tracepoint Packets. (line  393)
+* QTBuffer size packet:                  Tracepoint Packets. (line  406)
+* QTDisable packet:                      Tracepoint Packets. (line  209)
+* QTDisconnected packet:                 Tracepoint Packets. (line  228)
+* QTDP packet:                           Tracepoint Packets. (line   10)
+* QTDPsrc packet:                        Tracepoint Packets. (line   90)
+* QTDV packet:                           Tracepoint Packets. (line  121)
+* QTEnable packet:                       Tracepoint Packets. (line  204)
+* qTfP packet:                           Tracepoint Packets. (line  335)
+* QTFrame packet:                        Tracepoint Packets. (line  133)
+* qTfSTM packet:                         Tracepoint Packets. (line  352)
+* qTfV packet:                           Tracepoint Packets. (line  343)
+* QThreadEvents packet:                  General Query Packets.
+                                                             (line  509)
+* qThreadExtraInfo packet:               General Query Packets.
+                                                             (line 1076)
+* QTinit packet:                         Tracepoint Packets. (line  214)
+* qTMinFTPILen packet:                   Tracepoint Packets. (line  171)
+* QTNotes packet:                        Tracepoint Packets. (line  411)
+* qTP packet:                            Tracepoint Packets. (line  307)
+* QTro packet:                           Tracepoint Packets. (line  217)
+* QTSave packet:                         Tracepoint Packets. (line  387)
+* qTsP packet:                           Tracepoint Packets. (line  336)
+* qTsSTM packet:                         Tracepoint Packets. (line  352)
+* QTStart packet:                        Tracepoint Packets. (line  195)
+* qTStatus packet:                       Tracepoint Packets. (line  234)
+* qTSTMat packet:                        Tracepoint Packets. (line  381)
+* QTStop packet:                         Tracepoint Packets. (line  201)
+* qTsV packet:                           Tracepoint Packets. (line  344)
+* qTV packet:                            Tracepoint Packets. (line  318)
+* qualified thread ID:                   Threads.            (line   52)
+* query attached, remote request:        General Query Packets.
+                                                             (line 1381)
+* quotes in commands:                    Completion.         (line   83)
+* quoting Ada internal identifiers:      Additions to Ada.   (line   76)
+* quoting names:                         Symbols.            (line   14)
+* qXfer packet:                          General Query Packets.
+                                                             (line 1113)
+* r packet:                              Packets.            (line  300)
+* R packet:                              Packets.            (line  305)
+* range checking:                        Type Checking.      (line   45)
+* range stepping:                        Continuing and Stepping.
+                                                             (line  217)
+* ranged breakpoint:                     PowerPC Embedded.   (line   33)
+* ranges of breakpoints:                 Breakpoints.        (line   45)
+* Ravenscar Profile:                     Ravenscar Profile.  (line    6)
+* Ravenscar thread:                      Ravenscar Profile.  (line   26)
+* raw printing:                          Output Formats.     (line   76)
+* read special object, remote request:   General Query Packets.
+                                                             (line 1113)
+* read, file-i/o system call:            read.               (line    6)
+* read-only sections:                    Files.              (line  265)
+* reading symbols from relocatable object files: Files.      (line  146)
+* reading symbols immediately:           Files.              (line   94)
+* readline:                              Editing.            (line    6)
+* Readline application name:             Editing.            (line   29)
+* receive rights, GNU Hurd:              Hurd Native.        (line   84)
+* recent tracepoint number:              Create and Delete Tracepoints.
+                                                             (line  122)
+* record aggregates (Ada):               Omissions from Ada. (line   44)
+* record mode:                           Process Record and Replay.
+                                                             (line   19)
+* record serial communications on file:  Remote Configuration.
+                                                             (line   64)
+* recording a session script:            Bug Reporting.      (line   93)
+* recording inferior's execution and replaying it: Process Record and Replay.
+                                                             (line    6)
+* recordings in python:                  Recordings In Python.
+                                                             (line    6)
+* redirection:                           Input/Output.       (line    6)
+* reference card:                        Formatting Documentation.
+                                                             (line    6)
+* reference declarations:                C Plus Plus Expressions.
+                                                             (line   50)
+* register packet format, MIPS:          MIPS Register packet Format.
+                                                             (line    6)
+* registers:                             Registers.          (line    6)
+* Registers In Python:                   Registers In Python.
+                                                             (line    6)
+* regular expression:                    Set Breaks.         (line   90)
+* reloading the overlay table:           Overlay Commands.   (line   52)
+* relocatable object files, reading symbols from: Files.     (line  146)
+* remote async notification debugging info: Debugging Output.
+                                                             (line  136)
+* remote connection commands:            Connecting.         (line  127)
+* remote connection without stubs:       Server.             (line    6)
+* remote debugging:                      Remote Debugging.   (line    6)
+* remote debugging, connecting:          Connecting.         (line    6)
+* remote debugging, detach and program exit: Connecting.     (line   19)
+* remote debugging, symbol files:        Connecting.         (line   97)
+* remote debugging, types of connections: Connecting.        (line    6)
+* remote memory comparison:              Memory.             (line  142)
+* remote packets, enabling and disabling: Remote Configuration.
+                                                             (line  159)
+* remote programs, interrupting:         Connecting.         (line  246)
+* remote protocol debugging:             Debugging Output.   (line  159)
+* remote protocol, binary data:          Overview.           (line   63)
+* remote protocol, field separator:      Overview.           (line   55)
+* remote query requests:                 General Query Packets.
+                                                             (line    6)
+* remote serial debugging summary:       Debug Session.      (line    6)
+* remote serial debugging, overview:     Remote Stub.        (line   14)
+* remote serial protocol:                Overview.           (line   14)
+* remote serial stub:                    Stub Contents.      (line    6)
+* remote serial stub list:               Remote Stub.        (line   53)
+* remote serial stub, initialization:    Stub Contents.      (line   10)
+* remote serial stub, main routine:      Stub Contents.      (line   15)
+* remote stub, example:                  Remote Stub.        (line    6)
+* remote stub, support routines:         Bootstrapping.      (line    6)
+* remote target:                         Target Commands.    (line   58)
+* remote target, file transfer:          File Transfer.      (line    6)
+* remote target, limit break- and watchpoints: Remote Configuration.
+                                                             (line   79)
+* remote target, limit watchpoints length: Remote Configuration.
+                                                             (line   91)
+* remote timeout:                        Remote Configuration.
+                                                             (line   72)
+* remove actions from a tracepoint:      Tracepoint Actions. (line   21)
+* remove duplicate history:              Command History.    (line   69)
+* rename, file-i/o system call:          rename.             (line    6)
+* Renesas:                               Remote Stub.        (line   62)
+* repeated array elements:               Print Settings.     (line  348)
+* repeating command sequences:           Command Syntax.     (line   41)
+* repeating commands:                    Command Syntax.     (line   21)
+* replay log events, remote reply:       Stop Reply Packets. (line   70)
+* replay mode:                           Process Record and Replay.
+                                                             (line   10)
+* reporting bugs in GDB:                 GDB Bugs.           (line    6)
+* reprint the last value:                Data.               (line  112)
+* reprint the last value <1>:            Compiling and Injecting Code.
+                                                             (line   74)
+* reset environment, remote request:     General Query Packets.
+                                                             (line  197)
+* resources used by commands:            Maintenance Commands.
+                                                             (line  523)
+* response time, MIPS debugging:         MIPS.               (line   10)
+* restart:                               Checkpoint/Restart. (line    6)
+* restore data from a file:              Dump/Restore Files. (line    6)
+* restrictions on Go expressions:        Go.                 (line   35)
+* result records in GDB/MI:              GDB/MI Result Records.
+                                                             (line    6)
+* resume threads of multiple processes simultaneously: All-Stop Mode.
+                                                             (line   54)
+* resuming execution:                    Continuing and Stepping.
+                                                             (line    6)
+* returning from a function:             Returning.          (line    6)
+* reverse execution:                     Reverse Execution.  (line    6)
+* rewind program state:                  Checkpoint/Restart. (line    6)
+* run to first instruction:              Starting.           (line  114)
+* run to main procedure:                 Starting.           (line   81)
+* run until specified location:          Continuing and Stepping.
+                                                             (line  124)
+* running:                               Starting.           (line    6)
+* running programs backward:             Reverse Execution.  (line    6)
+* s packet:                              Packets.            (line  312)
+* S packet:                              Packets.            (line  321)
+* S12Z support:                          S12Z.               (line    6)
+* save breakpoints to a file for future sessions: Save Breakpoints.
+                                                             (line    9)
+* save command history:                  Command History.    (line   44)
+* save GDB output to a file:             Logging Output.     (line    6)
+* save tracepoints for future sessions:  save tracepoints.   (line    6)
+* scheduler locking mode:                All-Stop Mode.      (line   37)
+* scope:                                 M2 Scope.           (line    6)
+* screen size:                           Screen Size.        (line    6)
+* scripting commands:                    Command Files.      (line    6)
+* scripting with guile:                  Guile.              (line    6)
+* scripting with python:                 Python.             (line    6)
+* search for a thread:                   Threads.            (line  258)
+* search path for libthread_db:          Threads.            (line  293)
+* searching memory:                      Searching Memory.   (line    6)
+* searching memory, in remote debugging: General Query Packets.
+                                                             (line  558)
+* searching source files:                Search.             (line    6)
+* section offsets, remote request:       General Query Packets.
+                                                             (line  342)
+* segment descriptor tables:             DJGPP Native.       (line   24)
+* select Ctrl-C, BREAK or BREAK-g:       Remote Configuration.
+                                                             (line  108)
+* select trace snapshot:                 tfind.              (line    6)
+* selected frame:                        Stack.              (line   19)
+* selecting guile pretty-printers:       Selecting Guile Pretty-Printers.
+                                                             (line    6)
+* selecting python pretty-printers:      Selecting Pretty-Printers.
+                                                             (line    6)
+* self tests:                            Maintenance Commands.
+                                                             (line  374)
+* self tests <1>:                        Maintenance Commands.
+                                                             (line  380)
+* semaphores on static probe points:     Static Probe Points.
+                                                             (line   20)
+* send command to remote monitor:        Connecting.         (line  279)
+* send command to simulator:             Embedded Processors.
+                                                             (line    9)
+* send interrupt-sequence on start:      Remote Configuration.
+                                                             (line  121)
+* send rights, GNU Hurd:                 Hurd Native.        (line   84)
+* send the output of a gdb command to a shell command: Shell Commands.
+                                                             (line   26)
+* sending files to remote systems:       File Transfer.      (line    6)
+* separate debug sections:               MiniDebugInfo.      (line    6)
+* separate debugging information files:  Separate Debug Files.
+                                                             (line    6)
+* sequence-id, for GDB remote:           Overview.           (line   30)
+* serial connections, debugging:         Debugging Output.   (line  159)
+* serial line, target remote:            Connecting.         (line  136)
+* serial protocol, GDB remote:           Overview.           (line   14)
+* server prefix:                         Server Prefix.      (line    6)
+* server, command prefix:                Command History.    (line   20)
+* set ABI for MIPS:                      MIPS.               (line   32)
+* set breakpoints in many functions:     Set Breaks.         (line   90)
+* set breakpoints on all functions:      Set Breaks.         (line  117)
+* set environment variable, remote request: General Query Packets.
+                                                             (line  144)
+* set exec-file-mismatch:                Attach.             (line   34)
+* set fast tracepoint:                   Create and Delete Tracepoints.
+                                                             (line   50)
+* set inferior controlling terminal:     Input/Output.       (line   44)
+* set static tracepoint:                 Create and Delete Tracepoints.
+                                                             (line   75)
+* set tdesc filename:                    Retrieving Descriptions.
+                                                             (line   18)
+* set tracepoint:                        Create and Delete Tracepoints.
+                                                             (line    6)
+* set working directory, remote request: General Query Packets.
+                                                             (line  219)
+* setting variables:                     Assignment.         (line    6)
+* setting watchpoints:                   Set Watchpoints.    (line    6)
+* settings:                              Command Settings.   (line   39)
+* SH:                                    Remote Stub.        (line   62)
+* sh-stub.c:                             Remote Stub.        (line   62)
+* shared libraries:                      Files.              (line  287)
+* shared library events, remote reply:   Stop Reply Packets. (line   65)
+* shell command, exit code:              Convenience Vars.   (line  188)
+* shell command, exit signal:            Convenience Vars.   (line  188)
+* shell escape:                          Shell Commands.     (line   10)
+* show all convenience functions:        Convenience Funs.   (line  228)
+* show all user variables and functions: Convenience Vars.   (line   37)
+* show exec-file-mismatch:               Attach.             (line   44)
+* show inferior's working directory:     Working Directory.  (line   27)
+* show last commands:                    Command History.    (line  110)
+* show tdesc filename:                   Retrieving Descriptions.
+                                                             (line   25)
+* signals:                               Signals.            (line    6)
+* signals the inferior may see, remote request: General Query Packets.
+                                                             (line  469)
+* SIGQUIT signal, dump core of GDB:      Maintenance Commands.
+                                                             (line  169)
+* SingleKey keymap name:                 TUI Single Key Mode.
+                                                             (line   53)
+* size of remote memory accesses:        Packets.            (line  247)
+* size of screen:                        Screen Size.        (line    6)
+* skipping over files via glob-style patterns: Skipping Over Functions and Files.
+                                                             (line   55)
+* skipping over functions and files:     Skipping Over Functions and Files.
+                                                             (line    6)
+* skipping over functions via regular expressions: Skipping Over Functions and Files.
+                                                             (line   68)
+* snapshot of a process:                 Checkpoint/Restart. (line    6)
+* software watchpoints:                  Set Watchpoints.    (line   31)
+* source file and line of a symbol:      Print Settings.     (line   50)
+* source line and its code address:      Machine Code.       (line    6)
+* source location:                       Specify Location.   (line    6)
+* source path:                           Source Path.        (line    6)
+* Sparc:                                 Remote Stub.        (line   65)
+* sparc-stub.c:                          Remote Stub.        (line   65)
+* Sparc64 support:                       Sparc64.            (line    6)
+* sparcl-stub.c:                         Remote Stub.        (line   68)
+* SparcLite:                             Remote Stub.        (line   68)
+* Special Fortran commands:              Special Fortran Commands.
+                                                             (line    6)
+* specifying location:                   Specify Location.   (line    6)
+* SSE registers (x86):                   Registers.          (line   76)
+* stack frame:                           Frames.             (line    6)
+* stack on Alpha:                        MIPS.               (line    6)
+* stack on MIPS:                         MIPS.               (line    6)
+* stack pointer register:                Registers.          (line   31)
+* stacking targets:                      Active Targets.     (line    6)
+* standard registers:                    Registers.          (line   31)
+* start a new independent interpreter:   Interpreters.       (line   52)
+* start a new trace experiment:          Starting and Stopping Trace Experiments.
+                                                             (line    6)
+* starting:                              Starting.           (line    6)
+* startup code, and backtrace:           Backtrace.          (line  155)
+* startup with shell, remote request:    General Query Packets.
+                                                             (line  114)
+* stat, file-i/o system call:            stat/fstat.         (line    6)
+* static members of C++ objects:         Print Settings.     (line  559)
+* static members of Pascal objects:      Print Settings.     (line  570)
+* static probe point, DTrace:            Static Probe Points.
+                                                             (line    6)
+* static probe point, SystemTap:         Static Probe Points.
+                                                             (line    6)
+* static tracepoints:                    Set Tracepoints.    (line   28)
+* static tracepoints, in remote protocol: General Query Packets.
+                                                             (line  961)
+* static tracepoints, setting:           Create and Delete Tracepoints.
+                                                             (line   75)
+* status of trace data collection:       Starting and Stopping Trace Experiments.
+                                                             (line   27)
+* status output in GDB/MI:               GDB/MI Output Syntax.
+                                                             (line   94)
+* stepping:                              Continuing and Stepping.
+                                                             (line    6)
+* stepping and signal handlers:          Signals.            (line  106)
+* stepping into functions with no line info: Continuing and Stepping.
+                                                             (line   92)
+* stop a running trace experiment:       Starting and Stopping Trace Experiments.
+                                                             (line   16)
+* stop on C++ exceptions:                Set Catchpoints.    (line   16)
+* stop reply packets:                    Stop Reply Packets. (line    6)
+* stopped threads:                       Thread Stops.       (line    6)
+* stream records in GDB/MI:              GDB/MI Stream Records.
+                                                             (line    6)
+* string tracing, in remote protocol:    General Query Packets.
+                                                             (line  978)
+* struct gdb_reader_funcs:               Writing JIT Debug Info Readers.
+                                                             (line   22)
+* struct gdb_symbol_callbacks:           Writing JIT Debug Info Readers.
+                                                             (line   43)
+* struct gdb_unwind_callbacks:           Writing JIT Debug Info Readers.
+                                                             (line   43)
+* struct return convention:              i386.               (line    7)
+* struct stat, in file-i/o protocol:     struct stat.        (line    6)
+* struct timeval, in file-i/o protocol:  struct timeval.     (line    6)
+* struct/union returned in registers:    i386.               (line    7)
+* structure field name completion:       Completion.         (line  135)
+* stub example, remote debugging:        Remote Stub.        (line    6)
+* stupid questions:                      Messages/Warnings.  (line   49)
+* styling:                               Output Styling.     (line    6)
+* Super-H:                               Super-H.            (line    6)
+* supported GDB/MI features, list:       GDB/MI Support Commands.
+                                                             (line   57)
+* supported packets, remote query:       General Query Packets.
+                                                             (line  589)
+* switching threads:                     Threads.            (line    6)
+* switching threads automatically:       All-Stop Mode.      (line   28)
+* symbol cache size:                     Symbols.            (line  698)
+* symbol cache, flushing:                Symbols.            (line  714)
+* symbol cache, printing its contents:   Symbols.            (line  706)
+* symbol cache, printing usage statistics: Symbols.          (line  710)
+* symbol decoding style, C++:            Print Settings.     (line  529)
+* symbol dump:                           Symbols.            (line  619)
+* symbol file functions:                 Debugging Output.   (line  205)
+* symbol files, remote debugging:        Connecting.         (line   97)
+* symbol from address:                   Symbols.            (line   95)
+* symbol lookup:                         Debugging Output.   (line  198)
+* symbol lookup, remote request:         General Query Packets.
+                                                             (line 1033)
+* symbol names:                          Symbols.            (line   14)
+* symbol table:                          Files.              (line    6)
+* symbol table creation:                 Debugging Output.   (line  210)
+* symbol tables in guile:                Symbol Tables In Guile.
+                                                             (line    6)
+* symbol tables in python:               Symbol Tables In Python.
+                                                             (line    6)
+* symbol tables, listing GDB's internal: Symbols.            (line  645)
+* symbol, source file and line:          Print Settings.     (line   50)
+* symbols in guile:                      Symbols In Guile.   (line    6)
+* symbols in python:                     Symbols In Python.  (line    6)
+* symbols, never read:                   Files.              (line  101)
+* symbols, reading from relocatable object files: Files.     (line  146)
+* symbols, reading immediately:          Files.              (line   94)
+* Synopsys ARC:                          ARC.                (line    6)
+* syscall DSO:                           Files.              (line  193)
+* system calls and thread breakpoints:   Interrupted System Calls.
+                                                             (line    6)
+* system root, alternate:                Files.              (line  386)
+* system, file-i/o system call:          system.             (line    6)
+* system-wide configuration scripts:     System-wide Configuration Scripts.
+                                                             (line    6)
+* system-wide init file:                 System-wide configuration.
+                                                             (line    6)
+* t packet:                              Packets.            (line  331)
+* T packet:                              Packets.            (line  336)
+* T packet reply:                        Stop Reply Packets. (line   26)
+* tail call frames, debugging:           Tail Call Frames.   (line    6)
+* target architecture:                   Targets.            (line   17)
+* target byte order:                     Byte Order.         (line    6)
+* target character set:                  Character Sets.     (line    6)
+* target debugging info:                 Debugging Output.   (line  217)
+* target descriptions:                   Target Descriptions.
+                                                             (line    6)
+* target descriptions, AArch64 features: AArch64 Features.   (line    6)
+* target descriptions, ARC Features:     ARC Features.       (line    6)
+* target descriptions, ARM features:     ARM Features.       (line    6)
+* target descriptions, enum types:       Enum Target Types.  (line    6)
+* target descriptions, i386 features:    i386 Features.      (line    6)
+* target descriptions, inclusion:        Target Description Format.
+                                                             (line   53)
+* target descriptions, M68K features:    M68K Features.      (line    6)
+* target descriptions, MicroBlaze features: MicroBlaze Features.
+                                                             (line    6)
+* target descriptions, MIPS features:    MIPS Features.      (line    6)
+* target descriptions, NDS32 features:   NDS32 Features.     (line    6)
+* target descriptions, Nios II features: Nios II Features.   (line    6)
+* target descriptions, OpenRISC 1000 features: OpenRISC 1000 Features.
+                                                             (line    6)
+* target descriptions, PowerPC features: PowerPC Features.   (line    6)
+* target descriptions, predefined types: Predefined Target Types.
+                                                             (line    6)
+* target descriptions, RISC-V Features:  RISC-V Features.    (line    6)
+* target descriptions, RX Features:      RX Features.        (line    6)
+* target descriptions, S/390 features:   S/390 and System z Features.
+                                                             (line    6)
+* target descriptions, sparc32 features: Sparc Features.     (line    6)
+* target descriptions, sparc64 features: Sparc Features.     (line    6)
+* target descriptions, standard features: Standard Target Features.
+                                                             (line    6)
+* target descriptions, System z features: S/390 and System z Features.
+                                                             (line    6)
+* target descriptions, TIC6x features:   TIC6x Features.     (line    6)
+* target descriptions, TMS320C6x features: TIC6x Features.   (line    6)
+* target descriptions, XML format:       Target Description Format.
+                                                             (line    6)
+* target memory comparison:              Memory.             (line  142)
+* target output in GDB/MI:               GDB/MI Output Syntax.
+                                                             (line  110)
+* target stack description:              Maintenance Commands.
+                                                             (line  355)
+* target-assisted range stepping:        Continuing and Stepping.
+                                                             (line  217)
+* task attributes (GNU Hurd):            Hurd Native.        (line   48)
+* task breakpoints, in Ada:              Ada Tasks.          (line  135)
+* task exception port, GNU Hurd:         Hurd Native.        (line   67)
+* task suspend count:                    Hurd Native.        (line   59)
+* task switching with program using Ravenscar Profile: Ravenscar Profile.
+                                                             (line   10)
+* TCP port, target remote:               Connecting.         (line  173)
+* temporarily change settings:           Command Settings.   (line   39)
+* terminal:                              Input/Output.       (line    6)
+* Text User Interface:                   TUI.                (line    6)
+* thread attributes info, remote request: General Query Packets.
+                                                             (line 1076)
+* thread breakpoints:                    Thread-Specific Breakpoints.
+                                                             (line   10)
+* thread breakpoints and system calls:   Interrupted System Calls.
+                                                             (line    6)
+* thread create event, remote reply:     Stop Reply Packets. (line  152)
+* thread create/exit events, remote request: General Query Packets.
+                                                             (line  509)
+* thread default settings, GNU Hurd:     Hurd Native.        (line  130)
+* thread exit event, remote reply:       Stop Reply Packets. (line  181)
+* thread ID lists:                       Threads.            (line   65)
+* thread identifier (GDB):               Threads.            (line   47)
+* thread identifier (system):            Threads.            (line   35)
+* thread info (Solaris):                 Threads.            (line  167)
+* thread information, remote request:    General Query Packets.
+                                                             (line  369)
+* thread list format:                    Thread List Format. (line    6)
+* thread number, per inferior:           Threads.            (line   47)
+* thread properties, GNU Hurd:           Hurd Native.        (line   90)
+* thread suspend count, GNU Hurd:        Hurd Native.        (line  109)
+* THREAD-ID, in remote protocol:         Packets.            (line   20)
+* threads and watchpoints:               Set Watchpoints.    (line  179)
+* threads in python:                     Threads In Python.  (line    6)
+* threads of execution:                  Threads.            (line    6)
+* threads, automatic switching:          All-Stop Mode.      (line   28)
+* threads, continuing:                   Thread Stops.       (line    6)
+* threads, stopped:                      Thread Stops.       (line    6)
+* time of command execution:             Maintenance Commands.
+                                                             (line  573)
+* timeout for commands:                  Maintenance Commands.
+                                                             (line  624)
+* timeout for serial communications:     Remote Configuration.
+                                                             (line   72)
+* timeout, for remote target connection: Remote Configuration.
+                                                             (line  147)
+* timestamping debugging info:           Debugging Output.   (line  224)
+* trace experiment, status of:           Starting and Stopping Trace Experiments.
+                                                             (line   27)
+* trace file format:                     Trace File Format.  (line    6)
+* trace files:                           Trace Files.        (line    6)
+* trace state variable value, remote request: Tracepoint Packets.
+                                                             (line  318)
+* trace state variables:                 Trace State Variables.
+                                                             (line    6)
+* traceback:                             Backtrace.          (line    6)
+* traceframe info format:                Traceframe Info Format.
+                                                             (line    6)
+* tracepoint actions:                    Tracepoint Actions. (line    6)
+* tracepoint conditions:                 Tracepoint Conditions.
+                                                             (line    6)
+* tracepoint data, display:              tdump.              (line    6)
+* tracepoint deletion:                   Create and Delete Tracepoints.
+                                                             (line  125)
+* tracepoint number:                     Create and Delete Tracepoints.
+                                                             (line  122)
+* tracepoint packets:                    Tracepoint Packets. (line    6)
+* tracepoint pass count:                 Tracepoint Passcounts.
+                                                             (line    6)
+* tracepoint restrictions:               Tracepoint Restrictions.
+                                                             (line    6)
+* tracepoint status, remote request:     Tracepoint Packets. (line  307)
+* tracepoint variables:                  Tracepoint Variables.
+                                                             (line    6)
+* tracepoints:                           Tracepoints.        (line    6)
+* tracepoints support in gdbserver:      Server.             (line  272)
+* trailing underscore, in Fortran symbols: Fortran.          (line    9)
+* translating between character sets:    Character Sets.     (line    6)
+* TUI:                                   TUI.                (line    6)
+* TUI commands:                          TUI Commands.       (line    6)
+* TUI configuration variables:           TUI Configuration.  (line    6)
+* TUI key bindings:                      TUI Keys.           (line    6)
+* TUI single key mode:                   TUI Single Key Mode.
+                                                             (line    6)
+* type casting memory:                   Expressions.        (line   41)
+* type chain of a data type:             Maintenance Commands.
+                                                             (line  367)
+* type checking:                         Checks.             (line   24)
+* type conversions in C++:               C Plus Plus Expressions.
+                                                             (line   26)
+* type printer:                          Type Printing API.  (line    9)
+* type printing API for Python:          Type Printing API.  (line    6)
+* types in guile:                        Types In Guile.     (line    6)
+* types in Python:                       Types In Python.    (line    6)
+* UDP port, target remote:               Connecting.         (line  222)
+* union field name completion:           Completion.         (line  135)
+* unions in structures, printing:        Print Settings.     (line  469)
+* Unix domain socket:                    Connecting.         (line  147)
+* unknown address, locating:             Output Formats.     (line   35)
+* unknown type:                          Symbols.            (line  363)
+* unlink, file-i/o system call:          unlink.             (line    6)
+* unlinked object files:                 Files.              (line   26)
+* unload symbols from shared libraries:  Files.              (line  348)
+* unmap an overlay:                      Overlay Commands.   (line   39)
+* unmapped overlays:                     How Overlays Work.  (line    6)
+* unset environment variable, remote request: General Query Packets.
+                                                             (line  173)
+* unset tdesc filename:                  Retrieving Descriptions.
+                                                             (line   21)
+* unsupported languages:                 Unsupported Languages.
+                                                             (line    6)
+* unwind stack in called functions:      Calling.            (line   36)
+* unwind stack in called functions with unhandled exceptions: Calling.
+                                                             (line   47)
+* unwinding frames in Python:            Unwinding Frames in Python.
+                                                             (line    6)
+* use only software watchpoints:         Set Watchpoints.    (line  108)
+* user registers:                        Maintenance Commands.
+                                                             (line  326)
+* user-defined command:                  Define.             (line    6)
+* user-defined macros:                   Macros.             (line   59)
+* user-defined variables:                Convenience Vars.   (line    6)
+* value history:                         Value History.      (line    6)
+* values from inferior, in guile:        Values From Inferior In Guile.
+                                                             (line    6)
+* values from inferior, with Python:     Values From Inferior.
+                                                             (line    6)
+* variable name conflict:                Variables.          (line   36)
+* variable object debugging info:        Debugging Output.   (line  231)
+* variable objects in GDB/MI:            GDB/MI Variable Objects.
+                                                             (line    9)
+* variable values, wrong:                Variables.          (line  106)
+* variables, readline:                   Readline Init File Syntax.
+                                                             (line   34)
+* variables, setting:                    Assignment.         (line   16)
+* vAttach packet:                        Packets.            (line  350)
+* vCont packet:                          Packets.            (line  368)
+* vCont? packet:                         Packets.            (line  435)
+* vCtrlC packet:                         Packets.            (line  445)
+* vector unit:                           Vector Unit.        (line    6)
+* vector, auxiliary:                     OS Information.     (line    9)
+* verbose operation:                     Messages/Warnings.  (line    6)
+* verify remote memory image:            Memory.             (line  142)
+* verify target memory image:            Memory.             (line  142)
+* vFile packet:                          Packets.            (line  459)
+* vFlashDone packet:                     Packets.            (line  498)
+* vFlashErase packet:                    Packets.            (line  463)
+* vFlashWrite packet:                    Packets.            (line  478)
+* vfork events, remote reply:            Stop Reply Packets. (line  116)
+* vforkdone events, remote reply:        Stop Reply Packets. (line  128)
+* virtual functions (C++) display:       Print Settings.     (line  581)
+* vKill packet:                          Packets.            (line  505)
+* vMustReplyEmpty packet:                Packets.            (line  517)
+* volatile registers:                    Registers.          (line  106)
+* vRun packet:                           Packets.            (line  529)
+* vStopped packet:                       Packets.            (line  544)
+* VTBL display:                          Print Settings.     (line  581)
+* watchdog timer:                        Maintenance Commands.
+                                                             (line  624)
+* watchpoints:                           Breakpoints.        (line   17)
+* watchpoints and threads:               Set Watchpoints.    (line  179)
+* where to look for shared libraries:    Files.              (line  381)
+* wild pointer, interpreting:            Print Settings.     (line   80)
+* Wind River Linux system-wide configuration script: System-wide Configuration Scripts.
+                                                             (line   22)
+* word completion:                       Completion.         (line    6)
+* working directory:                     Source Path.        (line   40)
+* working directory (of your program):   Working Directory.  (line    6)
+* working language:                      Languages.          (line   13)
+* write data into object, remote request: General Query Packets.
+                                                             (line 1338)
+* write, file-i/o system call:           write.              (line    6)
+* writing a frame filter:                Writing a Frame Filter.
+                                                             (line    6)
+* writing a Guile pretty-printer:        Writing a Guile Pretty-Printer.
+                                                             (line    6)
+* writing a pretty-printer:              Writing a Pretty-Printer.
+                                                             (line    6)
+* writing convenience functions:         Functions In Python.
+                                                             (line    6)
+* writing into corefiles:                Patching.           (line    6)
+* writing into executables:              Patching.           (line    6)
+* writing into executables <1>:          Compiling and Injecting Code.
+                                                             (line    6)
+* writing JIT debug info readers:        Writing JIT Debug Info Readers.
+                                                             (line    6)
+* writing xmethods in Python:            Writing an Xmethod. (line    6)
+* wrong values:                          Variables.          (line  106)
+* x command, default address:            Machine Code.       (line   34)
+* X packet:                              Packets.            (line  547)
+* Xilinx MicroBlaze:                     MicroBlaze.         (line    6)
+* XInclude:                              Target Description Format.
+                                                             (line   53)
+* XMD, Xilinx Microprocessor Debugger:   MicroBlaze.         (line    6)
+* xmethod API:                           Xmethod API.        (line    6)
+* xmethods in Python:                    Xmethods In Python. (line    6)
+* XML parser debugging:                  Debugging Output.   (line  237)
+* yanking text:                          Readline Killing Commands.
+                                                             (line    6)
+* z packet:                              Packets.            (line  560)
+* Z packets:                             Packets.            (line  560)
+* z0 packet:                             Packets.            (line  575)
+* Z0 packet:                             Packets.            (line  575)
+* z1 packet:                             Packets.            (line  630)
+* Z1 packet:                             Packets.            (line  630)
+* z2 packet:                             Packets.            (line  651)
+* Z2 packet:                             Packets.            (line  651)
+* z3 packet:                             Packets.            (line  664)
+* Z3 packet:                             Packets.            (line  664)
+* z4 packet:                             Packets.            (line  677)
+* Z4 packet:                             Packets.            (line  677)
+
+
 File: gdb.info,  Node: Command and Variable Index,  Prev: Concept Index,  Up: Top
 
 Command, Variable, and Function Index
@@ -79,21 +2066,21 @@ Command, Variable, and Function Index
                                                               (line 129)
 * $_gdb_maint_setting_str, convenience function: Convenience Funs.
                                                               (line 125)
-* $_gdb_major, convenience variable:     Convenience Vars.    (line 178)
-* $_gdb_minor, convenience variable:     Convenience Vars.    (line 178)
+* $_gdb_major, convenience variable:     Convenience Vars.    (line 179)
+* $_gdb_minor, convenience variable:     Convenience Vars.    (line 179)
 * $_gdb_setting, convenience function:   Convenience Funs.    (line  76)
 * $_gdb_setting_str, convenience function: Convenience Funs.  (line  63)
 * $_gthread, convenience variable:       Threads.             (line  98)
-* $_inferior, convenience variable:      Inferiors and Programs.
-                                                              (line  56)
+* $_inferior, convenience variable:      Inferiors Connections and Programs.
+                                                              (line  90)
 * $_isvoid, convenience function:        Convenience Funs.    (line  15)
 * $_memeq, convenience function:         Convenience Funs.    (line 136)
 * $_probe_arg, convenience variable:     Static Probe Points. (line  77)
 * $_regex, convenience function:         Convenience Funs.    (line 140)
 * $_sdata, collect:                      Tracepoint Actions.  (line  86)
 * $_sdata, inspect, convenience variable: Convenience Vars.   (line 147)
-* $_shell_exitcode, convenience variable: Convenience Vars.   (line 187)
-* $_shell_exitsignal, convenience variable: Convenience Vars. (line 187)
+* $_shell_exitcode, convenience variable: Convenience Vars.   (line 188)
+* $_shell_exitsignal, convenience variable: Convenience Vars. (line 188)
 * $_siginfo, convenience variable:       Convenience Vars.    (line 153)
 * $_streq, convenience function:         Convenience Funs.    (line 145)
 * $_strlen, convenience function:        Convenience Funs.    (line 149)
@@ -363,7 +2350,7 @@ Command, Variable, and Function Index
 * ^running:                              GDB/MI Result Records.
                                                               (line  14)
 * __init__ on TypePrinter:               gdb.types.           (line  82)
-* |:                                     Shell Commands.      (line  25)
+* |:                                     Shell Commands.      (line  26)
 * abort (C-g):                           Miscellaneous Commands.
                                                               (line  10)
 * accept-line (Newline or Return):       Commands For History.
@@ -374,9 +2361,9 @@ Command, Variable, and Function Index
 * add-auto-load-safe-path:               Auto-loading safe path.
                                                               (line  50)
 * add-auto-load-scripts-directory:       objfile-gdbdotext file.
-                                                              (line  64)
-* add-inferior:                          Inferiors and Programs.
-                                                              (line  69)
+                                                              (line  68)
+* add-inferior:                          Inferiors Connections and Programs.
+                                                              (line 103)
 * add-symbol-file:                       Files.               (line 123)
 * add-symbol-file-from-memory:           Files.               (line 193)
 * adi assign:                            Sparc64.             (line  45)
@@ -387,7 +2374,7 @@ Command, Variable, and Function Index
 * append:                                Dump/Restore Files.  (line  34)
 * append-pretty-printer!:                Guile Printing Module.
                                                               (line  18)
-* apropos:                               Help.                (line  62)
+* apropos:                               Help.                (line  74)
 * arch-bool-type:                        Architectures In Guile.
                                                               (line  84)
 * arch-char-type:                        Architectures In Guile.
@@ -450,6 +2437,10 @@ Command, Variable, and Function Index
                                                               (line  15)
 * Architecture.name:                     Architectures In Python.
                                                               (line  12)
+* Architecture.registers:                Architectures In Python.
+                                                              (line  47)
+* Architecture.register_groups:          Architectures In Python.
+                                                              (line  53)
 * attach:                                Attach.              (line   6)
 * attach&:                               Background Execution.
                                                               (line  25)
@@ -647,8 +2638,8 @@ Command, Variable, and Function Index
                                                               (line   9)
 * clear-screen (C-l):                    Commands For Moving. (line  40)
 * ClearObjFilesEvent.progspace:          Events In Python.    (line 125)
-* clone-inferior:                        Inferiors and Programs.
-                                                              (line  76)
+* clone-inferior:                        Inferiors Connections and Programs.
+                                                              (line 119)
 * collect (tracepoints):                 Tracepoint Actions.  (line  49)
 * colon-colon, in Modula-2:              M2 Scope.            (line   6)
 * colored-completion-prefix:             Readline Init File Syntax.
@@ -668,11 +2659,11 @@ Command, Variable, and Function Index
 * COMMAND_DATA <1>:                      Commands In Guile.   (line 148)
 * COMMAND_FILES:                         Commands In Python.  (line 124)
 * COMMAND_FILES <1>:                     Commands In Guile.   (line 159)
-* COMMAND_MAINTENANCE:                   Commands In Python.  (line 166)
+* COMMAND_MAINTENANCE:                   Commands In Python.  (line 171)
 * COMMAND_MAINTENANCE <1>:               Commands In Guile.   (line 201)
 * COMMAND_NONE:                          Commands In Python.  (line 103)
 * COMMAND_NONE <1>:                      Commands In Guile.   (line 137)
-* COMMAND_OBSCURE:                       Commands In Python.  (line 160)
+* COMMAND_OBSCURE:                       Commands In Python.  (line 165)
 * COMMAND_OBSCURE <1>:                   Commands In Guile.   (line 195)
 * COMMAND_RUNNING:                       Commands In Python.  (line 107)
 * COMMAND_RUNNING <1>:                   Commands In Guile.   (line 142)
@@ -684,7 +2675,8 @@ Command, Variable, and Function Index
 * COMMAND_SUPPORT <1>:                   Commands In Guile.   (line 164)
 * COMMAND_TRACEPOINTS:                   Commands In Python.  (line 148)
 * COMMAND_TRACEPOINTS <1>:               Commands In Guile.   (line 183)
-* COMMAND_USER:                          Commands In Python.  (line 154)
+* COMMAND_TUI:                           Commands In Python.  (line 154)
+* COMMAND_USER:                          Commands In Python.  (line 159)
 * COMMAND_USER <1>:                      Commands In Guile.   (line 189)
 * comment-begin:                         Readline Init File Syntax.
                                                               (line  65)
@@ -693,20 +2685,20 @@ Command, Variable, and Function Index
                                                               (line  11)
 * compile file:                          Compiling and Injecting Code.
                                                               (line  56)
-* complete:                              Help.                (line  97)
+* complete:                              Help.                (line 106)
 * complete (<TAB>):                      Commands For Completion.
                                                               (line   6)
-* COMPLETE_COMMAND:                      Commands In Python.  (line 187)
+* COMPLETE_COMMAND:                      Commands In Python.  (line 192)
 * COMPLETE_COMMAND <1>:                  Commands In Guile.   (line 222)
-* COMPLETE_EXPRESSION:                   Commands In Python.  (line 195)
+* COMPLETE_EXPRESSION:                   Commands In Python.  (line 200)
 * COMPLETE_EXPRESSION <1>:               Commands In Guile.   (line 230)
-* COMPLETE_FILENAME:                     Commands In Python.  (line 180)
+* COMPLETE_FILENAME:                     Commands In Python.  (line 185)
 * COMPLETE_FILENAME <1>:                 Commands In Guile.   (line 215)
-* COMPLETE_LOCATION:                     Commands In Python.  (line 183)
+* COMPLETE_LOCATION:                     Commands In Python.  (line 188)
 * COMPLETE_LOCATION <1>:                 Commands In Guile.   (line 218)
-* COMPLETE_NONE:                         Commands In Python.  (line 177)
+* COMPLETE_NONE:                         Commands In Python.  (line 182)
 * COMPLETE_NONE <1>:                     Commands In Guile.   (line 212)
-* COMPLETE_SYMBOL:                       Commands In Python.  (line 191)
+* COMPLETE_SYMBOL:                       Commands In Python.  (line 196)
 * COMPLETE_SYMBOL <1>:                   Commands In Guile.   (line 226)
 * completion-display-width:              Readline Init File Syntax.
                                                               (line  70)
@@ -767,10 +2759,10 @@ Command, Variable, and Function Index
 * delete-horizontal-space ():            Commands For Killing.
                                                               (line  37)
 * demangle:                              Symbols.             (line 114)
-* detach:                                Attach.              (line  36)
-* detach (remote):                       Connecting.          (line 256)
-* detach inferiors INFNO...:             Inferiors and Programs.
-                                                              (line 105)
+* detach:                                Attach.              (line  55)
+* detach (remote):                       Connecting.          (line 263)
+* detach inferiors INFNO...:             Inferiors Connections and Programs.
+                                                              (line 148)
 * digit-argument (M-0, M-1, ... M--):    Numeric Arguments.   (line   6)
 * dir:                                   Source Path.         (line  99)
 * directory:                             Source Path.         (line  99)
@@ -790,7 +2782,7 @@ Command, Variable, and Function Index
 * disable-completion:                    Readline Init File Syntax.
                                                               (line 113)
 * disassemble:                           Machine Code.        (line  43)
-* disconnect:                            Connecting.          (line 265)
+* disconnect:                            Connecting.          (line 272)
 * display:                               Auto Display.        (line  23)
 * do (down):                             Selection.           (line  74)
 * do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
@@ -802,10 +2794,10 @@ Command, Variable, and Function Index
 * Down:                                  TUI Keys.            (line  70)
 * down-silently:                         Selection.           (line 106)
 * downcase-word (M-l):                   Commands For Text.   (line  60)
-* dprintf:                               Dynamic Printf.      (line  26)
-* dprintf-style agent:                   Dynamic Printf.      (line  46)
-* dprintf-style call:                    Dynamic Printf.      (line  42)
-* dprintf-style gdb:                     Dynamic Printf.      (line  39)
+* dprintf:                               Dynamic printf.      (line  26)
+* dprintf-style agent:                   Dynamic printf.      (line  46)
+* dprintf-style call:                    Dynamic printf.      (line  42)
+* dprintf-style gdb:                     Dynamic printf.      (line  39)
 * dump:                                  Dump/Restore Files.  (line  13)
 * dump-functions ():                     Miscellaneous Commands.
                                                               (line  70)
@@ -869,6 +2861,7 @@ Command, Variable, and Function Index
 * exchange-point-and-mark (C-x C-x):     Miscellaneous Commands.
                                                               (line  37)
 * exec-file:                             Files.               (line  39)
+* exec-file-mismatch:                    Attach.              (line  34)
 * exec-run-start-option:                 GDB/MI Support Commands.
                                                               (line 105)
 * execute:                               Basic Guile.         (line  68)
@@ -910,10 +2903,10 @@ Command, Variable, and Function Index
                                                               (line  14)
 * flash-erase:                           Target Commands.     (line 140)
 * flushregs:                             Maintenance Commands.
-                                                              (line 303)
+                                                              (line 317)
 * flush_i_cache:                         Bootstrapping.       (line  60)
 * fo (forward-search):                   Search.              (line   9)
-* focus:                                 TUI Commands.        (line  55)
+* focus:                                 TUI Commands.        (line 103)
 * forward-backward-delete-char ():       Commands For Text.   (line  21)
 * forward-char (C-f):                    Commands For Moving. (line  12)
 * forward-search:                        Search.              (line   9)
@@ -950,8 +2943,8 @@ Command, Variable, and Function Index
 * Frame.older:                           Frames In Python.    (line 149)
 * Frame.pc:                              Frames In Python.    (line 136)
 * Frame.read_register:                   Frames In Python.    (line 159)
-* Frame.read_var:                        Frames In Python.    (line 164)
-* Frame.select:                          Frames In Python.    (line 172)
+* Frame.read_var:                        Frames In Python.    (line 179)
+* Frame.select:                          Frames In Python.    (line 187)
 * Frame.type:                            Frames In Python.    (line  57)
 * Frame.unwind_stop_reason:              Frames In Python.    (line  84)
 * frame?:                                Frames In Guile.     (line  22)
@@ -1000,21 +2993,22 @@ Command, Variable, and Function Index
 * gdb.COMMAND_BREAKPOINTS:               Commands In Python.  (line 142)
 * gdb.COMMAND_DATA:                      Commands In Python.  (line 113)
 * gdb.COMMAND_FILES:                     Commands In Python.  (line 124)
-* gdb.COMMAND_MAINTENANCE:               Commands In Python.  (line 166)
+* gdb.COMMAND_MAINTENANCE:               Commands In Python.  (line 171)
 * gdb.COMMAND_NONE:                      Commands In Python.  (line 103)
-* gdb.COMMAND_OBSCURE:                   Commands In Python.  (line 160)
+* gdb.COMMAND_OBSCURE:                   Commands In Python.  (line 165)
 * gdb.COMMAND_RUNNING:                   Commands In Python.  (line 107)
 * gdb.COMMAND_STACK:                     Commands In Python.  (line 118)
 * gdb.COMMAND_STATUS:                    Commands In Python.  (line 136)
 * gdb.COMMAND_SUPPORT:                   Commands In Python.  (line 129)
 * gdb.COMMAND_TRACEPOINTS:               Commands In Python.  (line 148)
-* gdb.COMMAND_USER:                      Commands In Python.  (line 154)
-* gdb.COMPLETE_COMMAND:                  Commands In Python.  (line 187)
-* gdb.COMPLETE_EXPRESSION:               Commands In Python.  (line 195)
-* gdb.COMPLETE_FILENAME:                 Commands In Python.  (line 180)
-* gdb.COMPLETE_LOCATION:                 Commands In Python.  (line 183)
-* gdb.COMPLETE_NONE:                     Commands In Python.  (line 177)
-* gdb.COMPLETE_SYMBOL:                   Commands In Python.  (line 191)
+* gdb.COMMAND_TUI:                       Commands In Python.  (line 154)
+* gdb.COMMAND_USER:                      Commands In Python.  (line 159)
+* gdb.COMPLETE_COMMAND:                  Commands In Python.  (line 192)
+* gdb.COMPLETE_EXPRESSION:               Commands In Python.  (line 200)
+* gdb.COMPLETE_FILENAME:                 Commands In Python.  (line 185)
+* gdb.COMPLETE_LOCATION:                 Commands In Python.  (line 188)
+* gdb.COMPLETE_NONE:                     Commands In Python.  (line 182)
+* gdb.COMPLETE_SYMBOL:                   Commands In Python.  (line 196)
 * gdb.convenience_variable:              Basic Python.        (line 106)
 * gdb.convenience_variable <1>:          Basic Python.        (line 106)
 * gdb.current_objfile:                   Objfiles In Python.  (line  15)
@@ -1119,6 +3113,10 @@ Command, Variable, and Function Index
 * gdb.PYTHONDIR:                         Basic Python.        (line  37)
 * gdb.PYTHONDIR <1>:                     Basic Python.        (line  37)
 * gdb.rbreak:                            Basic Python.        (line  66)
+* gdb.register_window_type:              TUI Windows In Python.
+                                                              (line   8)
+* gdb.register_window_type <1>:          TUI Windows In Python.
+                                                              (line   8)
 * gdb.search_memory:                     Inferiors In Python. (line  71)
 * gdb.selected_frame:                    Frames In Python.    (line  22)
 * gdb.selected_frame <1>:                Frames In Python.    (line  22)
@@ -1171,37 +3169,37 @@ Command, Variable, and Function Index
 * gdb.target_wide_charset:               Basic Python.        (line 217)
 * gdb.target_wide_charset <1>:           Basic Python.        (line 217)
 * gdb.Type:                              Types In Python.     (line   6)
-* gdb.TYPE_CODE_ARRAY:                   Types In Python.     (line 202)
-* gdb.TYPE_CODE_BITSTRING:               Types In Python.     (line 240)
-* gdb.TYPE_CODE_BOOL:                    Types In Python.     (line 264)
-* gdb.TYPE_CODE_CHAR:                    Types In Python.     (line 261)
-* gdb.TYPE_CODE_COMPLEX:                 Types In Python.     (line 267)
-* gdb.TYPE_CODE_DECFLOAT:                Types In Python.     (line 276)
-* gdb.TYPE_CODE_ENUM:                    Types In Python.     (line 211)
-* gdb.TYPE_CODE_ERROR:                   Types In Python.     (line 243)
-* gdb.TYPE_CODE_FLAGS:                   Types In Python.     (line 214)
-* gdb.TYPE_CODE_FLT:                     Types In Python.     (line 223)
-* gdb.TYPE_CODE_FUNC:                    Types In Python.     (line 217)
-* gdb.TYPE_CODE_INT:                     Types In Python.     (line 220)
-* gdb.TYPE_CODE_INTERNAL_FUNCTION:       Types In Python.     (line 279)
-* gdb.TYPE_CODE_MEMBERPTR:               Types In Python.     (line 252)
-* gdb.TYPE_CODE_METHOD:                  Types In Python.     (line 246)
-* gdb.TYPE_CODE_METHODPTR:               Types In Python.     (line 249)
-* gdb.TYPE_CODE_NAMESPACE:               Types In Python.     (line 273)
-* gdb.TYPE_CODE_PTR:                     Types In Python.     (line 199)
-* gdb.TYPE_CODE_RANGE:                   Types In Python.     (line 232)
-* gdb.TYPE_CODE_REF:                     Types In Python.     (line 255)
-* gdb.TYPE_CODE_RVALUE_REF:              Types In Python.     (line 258)
-* gdb.TYPE_CODE_SET:                     Types In Python.     (line 229)
-* gdb.TYPE_CODE_STRING:                  Types In Python.     (line 235)
-* gdb.TYPE_CODE_STRUCT:                  Types In Python.     (line 205)
-* gdb.TYPE_CODE_TYPEDEF:                 Types In Python.     (line 270)
-* gdb.TYPE_CODE_UNION:                   Types In Python.     (line 208)
-* gdb.TYPE_CODE_VOID:                    Types In Python.     (line 226)
+* gdb.TYPE_CODE_ARRAY:                   Types In Python.     (line 228)
+* gdb.TYPE_CODE_BITSTRING:               Types In Python.     (line 266)
+* gdb.TYPE_CODE_BOOL:                    Types In Python.     (line 290)
+* gdb.TYPE_CODE_CHAR:                    Types In Python.     (line 287)
+* gdb.TYPE_CODE_COMPLEX:                 Types In Python.     (line 293)
+* gdb.TYPE_CODE_DECFLOAT:                Types In Python.     (line 302)
+* gdb.TYPE_CODE_ENUM:                    Types In Python.     (line 237)
+* gdb.TYPE_CODE_ERROR:                   Types In Python.     (line 269)
+* gdb.TYPE_CODE_FLAGS:                   Types In Python.     (line 240)
+* gdb.TYPE_CODE_FLT:                     Types In Python.     (line 249)
+* gdb.TYPE_CODE_FUNC:                    Types In Python.     (line 243)
+* gdb.TYPE_CODE_INT:                     Types In Python.     (line 246)
+* gdb.TYPE_CODE_INTERNAL_FUNCTION:       Types In Python.     (line 305)
+* gdb.TYPE_CODE_MEMBERPTR:               Types In Python.     (line 278)
+* gdb.TYPE_CODE_METHOD:                  Types In Python.     (line 272)
+* gdb.TYPE_CODE_METHODPTR:               Types In Python.     (line 275)
+* gdb.TYPE_CODE_NAMESPACE:               Types In Python.     (line 299)
+* gdb.TYPE_CODE_PTR:                     Types In Python.     (line 225)
+* gdb.TYPE_CODE_RANGE:                   Types In Python.     (line 258)
+* gdb.TYPE_CODE_REF:                     Types In Python.     (line 281)
+* gdb.TYPE_CODE_RVALUE_REF:              Types In Python.     (line 284)
+* gdb.TYPE_CODE_SET:                     Types In Python.     (line 255)
+* gdb.TYPE_CODE_STRING:                  Types In Python.     (line 261)
+* gdb.TYPE_CODE_STRUCT:                  Types In Python.     (line 231)
+* gdb.TYPE_CODE_TYPEDEF:                 Types In Python.     (line 296)
+* gdb.TYPE_CODE_UNION:                   Types In Python.     (line 234)
+* gdb.TYPE_CODE_VOID:                    Types In Python.     (line 252)
 * gdb.unwinder.register_unwinder:        Unwinding Frames in Python.
-                                                              (line 157)
+                                                              (line 161)
 * gdb.UnwindInfo.add_saved_register:     Unwinding Frames in Python.
-                                                              (line 107)
+                                                              (line 111)
 * gdb.WP_ACCESS:                         Breakpoints In Python.
                                                               (line  86)
 * gdb.WP_READ:                           Breakpoints In Python.
@@ -1259,12 +3257,12 @@ Command, Variable, and Function Index
 * horizontal-scroll-mode:                Readline Init File Syntax.
                                                               (line 177)
 * host-config:                           Guile Configuration. (line  20)
-* i (info):                              Help.                (line 120)
+* i (info):                              Help.                (line 129)
 * i (SingleKey TUI key):                 TUI Single Key Mode. (line  34)
 * if:                                    Command Files.       (line  74)
 * ignore:                                Conditions.          (line  90)
-* inferior INFNO:                        Inferiors and Programs.
-                                                              (line  51)
+* inferior INFNO:                        Inferiors Connections and Programs.
+                                                              (line  85)
 * Inferior.architecture:                 Inferiors In Python. (line  50)
 * Inferior.is_valid:                     Inferiors In Python. (line  38)
 * Inferior.num:                          Inferiors In Python. (line  22)
@@ -1295,7 +3293,7 @@ Command, Variable, and Function Index
 * InferiorThread.num:                    Threads In Python.   (line  32)
 * InferiorThread.ptid:                   Threads In Python.   (line  40)
 * InferiorThread.switch:                 Threads In Python.   (line  61)
-* info:                                  Help.                (line 120)
+* info:                                  Help.                (line 129)
 * info address:                          Symbols.             (line  85)
 * info all-registers:                    Registers.           (line  15)
 * info args:                             Frame Info.          (line  43)
@@ -1314,7 +3312,9 @@ Command, Variable, and Function Index
 * info classes:                          Symbols.             (line 570)
 * info common:                           Special Fortran Commands.
                                                               (line   9)
-* info copying:                          Help.                (line 158)
+* info connections [ ID... ]:            Inferiors Connections and Programs.
+                                                              (line  58)
+* info copying:                          Help.                (line 167)
 * info dcache:                           Caching Target Data. (line  46)
 * info display:                          Auto Display.        (line  78)
 * info dll:                              Files.               (line 336)
@@ -1331,8 +3331,8 @@ Command, Variable, and Function Index
                                                               (line  12)
 * info functions:                        Symbols.             (line 467)
 * info handle:                           Signals.             (line  33)
-* info inferiors [ ID... ]:              Inferiors and Programs.
-                                                              (line  25)
+* info inferiors [ ID... ]:              Inferiors Connections and Programs.
+                                                              (line  27)
 * info io_registers, AVR:                AVR.                 (line  10)
 * info line:                             Machine Code.        (line  14)
 * info line, and Objective-C:            Method Names in Commands.
@@ -1342,7 +3342,7 @@ Command, Variable, and Function Index
 * info macros:                           Macros.              (line  54)
 * info mem:                              Memory Region Attributes.
                                                               (line  45)
-* info meminfo:                          Process Information. (line 130)
+* info meminfo:                          Process Information. (line 131)
 * info module:                           Symbols.             (line 555)
 * info modules:                          Symbols.             (line 547)
 * info os:                               OS Information.      (line  37)
@@ -1356,7 +3356,7 @@ Command, Variable, and Function Index
 * info os shm:                           OS Information.      (line 102)
 * info os sockets:                       OS Information.      (line 112)
 * info os threads:                       OS Information.      (line 119)
-* info pidlist:                          Process Information. (line 126)
+* info pidlist:                          Process Information. (line 127)
 * info pretty-printer:                   Pretty-Printer Commands.
                                                               (line   6)
 * info probes:                           Static Probe Points. (line  32)
@@ -1368,7 +3368,7 @@ Command, Variable, and Function Index
 * info scope:                            Symbols.             (line 415)
 * info selectors:                        Symbols.             (line 576)
 * info serial:                           DJGPP Native.        (line 139)
-* info set:                              Help.                (line 141)
+* info set:                              Help.                (line 150)
 * info share:                            Files.               (line 330)
 * info sharedlibrary:                    Files.               (line 330)
 * info signals:                          Signals.             (line  33)
@@ -1395,7 +3395,7 @@ Command, Variable, and Function Index
 * info variables:                        Symbols.             (line 512)
 * info vector:                           Vector Unit.         (line   9)
 * info w32:                              Cygwin Native.       (line  19)
-* info warranty:                         Help.                (line 162)
+* info warranty:                         Help.                (line 171)
 * info watchpoints [LIST...]:            Set Watchpoints.     (line  87)
 * info win:                              TUI Commands.        (line  26)
 * info-gdb-mi-command:                   GDB/MI Support Commands.
@@ -1444,8 +3444,8 @@ Command, Variable, and Function Index
 * keymap:                                Readline Init File Syntax.
                                                               (line 199)
 * kill:                                  Kill Process.        (line   6)
-* kill inferiors INFNO...:               Inferiors and Programs.
-                                                              (line 111)
+* kill inferiors INFNO...:               Inferiors Connections and Programs.
+                                                              (line 154)
 * kill-line (C-k):                       Commands For Killing.
                                                               (line   6)
 * kill-region ():                        Commands For Killing.
@@ -1459,7 +3459,7 @@ Command, Variable, and Function Index
 * l (list):                              List.                (line   6)
 * language-option:                       GDB/MI Support Commands.
                                                               (line  96)
-* layout:                                TUI Commands.        (line  29)
+* layout:                                TUI Commands.        (line  75)
 * lazy-string->value:                    Lazy Strings In Guile.
                                                               (line  46)
 * lazy-string-address:                   Lazy Strings In Guile.
@@ -1523,9 +3523,9 @@ Command, Variable, and Function Index
 * maint btrace packet-history:           Maintenance Commands.
                                                               (line  65)
 * maint check libthread-db:              Maintenance Commands.
-                                                              (line 244)
+                                                              (line 252)
 * maint check xml-descriptions:          Maintenance Commands.
-                                                              (line 240)
+                                                              (line 248)
 * maint check-psymtabs:                  Maintenance Commands.
                                                               (line 134)
 * maint check-symtabs:                   Maintenance Commands.
@@ -1550,12 +3550,12 @@ Command, Variable, and Function Index
 * maint info btrace:                     Maintenance Commands.
                                                               (line  62)
 * maint info line-table:                 Symbols.             (line 692)
-* maint info program-spaces:             Inferiors and Programs.
-                                                              (line 148)
+* maint info program-spaces:             Inferiors Connections and Programs.
+                                                              (line 191)
 * maint info psymtabs:                   Symbols.             (line 645)
 * maint info sections:                   Files.               (line 220)
 * maint info selftests:                  Maintenance Commands.
-                                                              (line 366)
+                                                              (line 380)
 * maint info sol-threads:                Threads.             (line 167)
 * maint info symtabs:                    Symbols.             (line 645)
 * maint internal-error:                  Maintenance Commands.
@@ -1570,130 +3570,134 @@ Command, Variable, and Function Index
 * maint print c-tdesc [FILE]:            Maintenance Commands.
                                                               (line 230)
 * maint print cooked-registers:          Maintenance Commands.
-                                                              (line 268)
+                                                              (line 282)
+* maint print core-file-backed-mappings: Maintenance Commands.
+                                                              (line 260)
 * maint print dummy-frames:              Maintenance Commands.
-                                                              (line 252)
+                                                              (line 266)
 * maint print msymbols:                  Symbols.             (line 619)
 * maint print objfiles:                  Maintenance Commands.
-                                                              (line 306)
+                                                              (line 320)
 * maint print psymbols:                  Symbols.             (line 619)
 * maint print raw-registers:             Maintenance Commands.
-                                                              (line 268)
+                                                              (line 282)
 * maint print reggroups:                 Maintenance Commands.
-                                                              (line 287)
+                                                              (line 301)
 * maint print register-groups:           Maintenance Commands.
-                                                              (line 268)
+                                                              (line 282)
 * maint print registers:                 Maintenance Commands.
-                                                              (line 268)
+                                                              (line 282)
 * maint print remote-registers:          Maintenance Commands.
-                                                              (line 268)
+                                                              (line 282)
 * maint print section-scripts:           Maintenance Commands.
-                                                              (line 321)
+                                                              (line 335)
 * maint print statistics:                Maintenance Commands.
-                                                              (line 328)
+                                                              (line 342)
 * maint print symbol-cache:              Symbols.             (line 706)
 * maint print symbol-cache-statistics:   Symbols.             (line 710)
 * maint print symbols:                   Symbols.             (line 619)
 * maint print target-stack:              Maintenance Commands.
-                                                              (line 341)
+                                                              (line 355)
 * maint print type:                      Maintenance Commands.
-                                                              (line 353)
+                                                              (line 367)
 * maint print unwind, HPPA:              HPPA.                (line  17)
 * maint print user-registers:            Maintenance Commands.
-                                                              (line 312)
+                                                              (line 326)
+* maint print xml-tdesc:                 Maintenance Commands.
+                                                              (line 240)
 * maint selftest:                        Maintenance Commands.
-                                                              (line 360)
+                                                              (line 374)
 * maint set bfd-sharing:                 File Caching.        (line  14)
 * maint set btrace pt skip-pad:          Maintenance Commands.
                                                               (line 107)
 * maint set catch-demangler-crashes:     Maintenance Commands.
                                                               (line 146)
 * maint set check-libthread-db:          Maintenance Commands.
-                                                              (line 546)
+                                                              (line 560)
 * maint set demangler-warning:           Maintenance Commands.
                                                               (line 197)
 * maint set dwarf always-disassemble:    Maintenance Commands.
-                                                              (line 369)
+                                                              (line 383)
 * maint set dwarf max-cache-age:         Maintenance Commands.
-                                                              (line 390)
-* maint set dwarf unwinders:             Maintenance Commands.
                                                               (line 404)
+* maint set dwarf unwinders:             Maintenance Commands.
+                                                              (line 418)
 * maint set internal-error:              Maintenance Commands.
                                                               (line 197)
 * maint set internal-warning:            Maintenance Commands.
                                                               (line 197)
 * maint set per-command:                 Maintenance Commands.
-                                                              (line 507)
+                                                              (line 521)
 * maint set profile:                     Maintenance Commands.
-                                                              (line 438)
+                                                              (line 452)
 * maint set show-all-tib:                Maintenance Commands.
-                                                              (line 462)
+                                                              (line 476)
 * maint set show-debug-regs:             Maintenance Commands.
-                                                              (line 454)
+                                                              (line 468)
 * maint set symbol-cache-size:           Symbols.             (line 698)
 * maint set target-async:                Maintenance Commands.
-                                                              (line 468)
+                                                              (line 482)
 * maint set target-non-stop MODE [on|off|auto]: Maintenance Commands.
-                                                              (line 476)
+                                                              (line 490)
 * maint set test-settings:               Maintenance Commands.
-                                                              (line 595)
+                                                              (line 609)
 * maint set tui-resize-message:          Maintenance Commands.
-                                                              (line 496)
+                                                              (line 510)
 * maint set worker-threads:              Maintenance Commands.
-                                                              (line 427)
+                                                              (line 441)
 * 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 546)
+                                                              (line 560)
 * maint show demangler-warning:          Maintenance Commands.
                                                               (line 197)
 * maint show dwarf always-disassemble:   Maintenance Commands.
-                                                              (line 369)
+                                                              (line 383)
 * maint show dwarf max-cache-age:        Maintenance Commands.
-                                                              (line 390)
-* maint show dwarf unwinders:            Maintenance Commands.
                                                               (line 404)
+* maint show dwarf unwinders:            Maintenance Commands.
+                                                              (line 418)
 * maint show internal-error:             Maintenance Commands.
                                                               (line 197)
 * maint show internal-warning:           Maintenance Commands.
                                                               (line 197)
 * maint show per-command:                Maintenance Commands.
-                                                              (line 507)
+                                                              (line 521)
 * maint show profile:                    Maintenance Commands.
-                                                              (line 438)
+                                                              (line 452)
 * maint show show-all-tib:               Maintenance Commands.
-                                                              (line 462)
+                                                              (line 476)
 * maint show show-debug-regs:            Maintenance Commands.
-                                                              (line 454)
+                                                              (line 468)
 * maint show symbol-cache-size:          Symbols.             (line 703)
 * maint show target-async:               Maintenance Commands.
-                                                              (line 468)
+                                                              (line 482)
 * maint show target-non-stop:            Maintenance Commands.
-                                                              (line 476)
+                                                              (line 490)
 * maint show test-options-completion-result: Maintenance Commands.
-                                                              (line 590)
+                                                              (line 604)
 * maint show test-settings:              Maintenance Commands.
-                                                              (line 595)
+                                                              (line 609)
 * maint show tui-resize-message:         Maintenance Commands.
-                                                              (line 496)
+                                                              (line 510)
 * maint show worker-threads:             Maintenance Commands.
-                                                              (line 427)
+                                                              (line 441)
 * maint space:                           Maintenance Commands.
-                                                              (line 555)
+                                                              (line 569)
 * maint test-options:                    Maintenance Commands.
-                                                              (line 576)
+                                                              (line 590)
 * maint time:                            Maintenance Commands.
-                                                              (line 559)
+                                                              (line 573)
 * maint translate-address:               Maintenance Commands.
-                                                              (line 563)
+                                                              (line 577)
 * maint undeprecate:                     Maintenance Commands.
                                                               (line 160)
 * maint with:                            Maintenance Commands.
-                                                              (line 601)
-* make:                                  Shell Commands.      (line  21)
+                                                              (line 615)
+* make:                                  Shell Commands.      (line  22)
 * make-block-symbols-iterator:           Blocks In Guile.     (line 105)
 * make-breakpoint:                       Breakpoints In Guile.
                                                               (line  19)
@@ -1730,7 +3734,7 @@ Command, Variable, and Function Index
 * memory-port-read-buffer-size:          Memory Ports in Guile.
                                                               (line  37)
 * memory-port-write-buffer-size:         Memory Ports in Guile.
-                                                              (line  45)
+                                                              (line  52)
 * memory-port?:                          Memory Ports in Guile.
                                                               (line  29)
 * MemoryChangedEvent.address:            Events In Python.    (line 162)
@@ -1745,7 +3749,7 @@ Command, Variable, and Function Index
 * meta-flag:                             Readline Init File Syntax.
                                                               (line 184)
 * methods:                               Xmethod API.         (line  22)
-* monitor:                               Connecting.          (line 272)
+* monitor:                               Connecting.          (line 279)
 * n (next):                              Continuing and Stepping.
                                                               (line  77)
 * n (SingleKey TUI key):                 TUI Single Key Mode. (line  19)
@@ -1865,14 +3869,16 @@ Command, Variable, and Function Index
 * path:                                  Environment.         (line  14)
 * pending-breakpoints:                   GDB/MI Support Commands.
                                                               (line  79)
+* PendingFrame.architecture:             Unwinding Frames in Python.
+                                                              (line  99)
 * PendingFrame.create_unwind_info:       Unwinding Frames in Python.
-                                                              (line  67)
+                                                              (line  66)
 * PendingFrame.read_register:            Unwinding Frames in Python.
                                                               (line  42)
 * PgDn:                                  TUI Keys.            (line  64)
 * PgUp:                                  TUI Keys.            (line  61)
 * pi:                                    Python Commands.     (line   9)
-* pipe:                                  Shell Commands.      (line  25)
+* pipe:                                  Shell Commands.      (line  26)
 * po (print-object):                     The Print Command with Objective-C.
                                                               (line   6)
 * possible-completions (M-?):            Commands For Completion.
@@ -1908,10 +3914,10 @@ Command, Variable, and Function Index
 * print-object:                          The Print Command with Objective-C.
                                                               (line   6)
 * printf:                                Output.              (line  46)
-* proc-trace-entry:                      Process Information. (line 122)
-* proc-trace-exit:                       Process Information. (line 122)
-* proc-untrace-entry:                    Process Information. (line 122)
-* proc-untrace-exit:                     Process Information. (line 122)
+* proc-trace-entry:                      Process Information. (line 123)
+* proc-trace-exit:                       Process Information. (line 123)
+* proc-untrace-entry:                    Process Information. (line 123)
+* proc-untrace-exit:                     Process Information. (line 123)
 * Progspace:                             Progspaces In Python.
                                                               (line   6)
 * progspace-filename:                    Progspaces In Guile. (line  34)
@@ -2066,19 +4072,22 @@ Command, Variable, and Function Index
 * RecordInstruction.sal:                 Recordings In Python.
                                                               (line  86)
 * redraw-current-line ():                Commands For Moving. (line  44)
-* refresh:                               TUI Commands.        (line  77)
+* refresh:                               TUI Commands.        (line 125)
 * register-breakpoint!:                  Breakpoints In Guile.
                                                               (line  87)
 * register-command!:                     Commands In Guile.   (line  58)
 * register-parameter!:                   Parameters In Guile. (line  94)
 * RegisterChangedEvent.frame:            Events In Python.    (line 172)
 * RegisterChangedEvent.regnum:           Events In Python.    (line 175)
+* RegisterDescriptor.name:               Registers In Python. (line  19)
+* RegisterDescriptorIterator.find:       Registers In Python. (line  25)
+* RegisterGroup.name:                    Registers In Python. (line  48)
 * register_xmethod_matcher:              Xmethod API.         (line  82)
 * remote delete:                         File Transfer.       (line  23)
 * remote get:                            File Transfer.       (line  19)
 * remote put:                            File Transfer.       (line  15)
-* remove-inferiors:                      Inferiors and Programs.
-                                                              (line  95)
+* remove-inferiors:                      Inferiors Connections and Programs.
+                                                              (line 138)
 * remove-symbol-file:                    Files.               (line 174)
 * restart CHECKPOINT-ID:                 Checkpoint/Restart.  (line  41)
 * restore:                               Dump/Restore Files.  (line  40)
@@ -2131,12 +4140,12 @@ Command, Variable, and Function Index
 * selected-frame:                        Frames In Guile.     (line 156)
 * self:                                  Commands In Guile.   (line 100)
 * self-insert (a, b, A, 1, !, ...):      Commands For Text.   (line  33)
-* set:                                   Help.                (line 129)
+* set:                                   Help.                (line 138)
 * set ada print-signatures:              Overloading support for Ada.
                                                               (line  31)
 * set ada trust-PAD-over-XVS:            Ada Glitches.        (line  42)
-* set agent off:                         In-Process Agent.    (line  47)
-* set agent on:                          In-Process Agent.    (line  38)
+* set agent off:                         In-process Agent.    (line  47)
+* set agent on:                          In-process Agent.    (line  38)
 * set annotate:                          Annotations Overview.
                                                               (line  29)
 * set architecture:                      Targets.             (line  21)
@@ -2155,7 +4164,7 @@ Command, Variable, and Function Index
 * set auto-load safe-path:               Auto-loading safe path.
                                                               (line  32)
 * set auto-load scripts-directory:       objfile-gdbdotext file.
-                                                              (line  37)
+                                                              (line  41)
 * set auto-solib-add:                    Files.               (line 307)
 * set backtrace:                         Backtrace.           (line 166)
 * set basenames-may-differ:              Files.               (line 536)
@@ -2218,7 +4227,7 @@ Command, Variable, and Function Index
 * set disassemble-next-line:             Machine Code.        (line 249)
 * set disassembler-options:              Machine Code.        (line 222)
 * set disassembly-flavor:                Machine Code.        (line 237)
-* set disconnected-dprintf:              Dynamic Printf.      (line  83)
+* set disconnected-dprintf:              Dynamic printf.      (line  83)
 * set disconnected-tracing:              Starting and Stopping Trace Experiments.
                                                               (line  55)
 * set displaced-stepping:                Maintenance Commands.
@@ -2234,7 +4243,7 @@ Command, Variable, and Function Index
 * set exec-wrapper:                      Starting.            (line 120)
 * set extended-prompt:                   Prompt.              (line  25)
 * set extension-language:                Show.                (line  30)
-* set follow-exec-mode:                  Forks.               (line 105)
+* set follow-exec-mode:                  Forks.               (line 106)
 * set follow-fork-mode:                  Forks.               (line  39)
 * set frame-filter priority:             Frame Filter Management.
                                                               (line  84)
@@ -2243,13 +4252,13 @@ Command, Variable, and Function Index
                                                               (line   6)
 * set hash, for remote monitors:         Target Commands.     (line  98)
 * set height:                            Screen Size.         (line  22)
-* set history expansion:                 Command History.     (line  82)
+* set history expansion:                 Command History.     (line  97)
 * set history filename:                  Command History.     (line  26)
-* set history remove-duplicates:         Command History.     (line  54)
-* set history save:                      Command History.     (line  36)
-* set history size:                      Command History.     (line  45)
+* set history remove-duplicates:         Command History.     (line  69)
+* set history save:                      Command History.     (line  44)
+* set history size:                      Command History.     (line  56)
 * set host-charset:                      Character Sets.      (line  33)
-* set index-cache:                       Index Files.         (line  81)
+* set index-cache:                       Index Files.         (line  79)
 * set inferior-tty:                      Input/Output.        (line  49)
 * set input-radix:                       Numbers.             (line  14)
 * set interactive-mode:                  Other Misc Settings. (line   6)
@@ -2287,16 +4296,16 @@ Command, Variable, and Function Index
                                                               (line 117)
 * set print frame-arguments:             Print Settings.      (line 154)
 * set print frame-info:                  Print Settings.      (line 314)
-* set print inferior-events:             Inferiors and Programs.
-                                                              (line 126)
+* set print inferior-events:             Inferiors Connections and Programs.
+                                                              (line 169)
 * set print symbol-loading:              Symbols.             (line 600)
 * set print thread-events:               Threads.             (line 272)
 * set print type methods:                Symbols.             (line  44)
 * set print type nested-type-limit:      Symbols.             (line  57)
 * set print type typedefs:               Symbols.             (line  68)
 * set processor:                         Targets.             (line  31)
-* set procfs-file:                       Process Information. (line 111)
-* set procfs-trace:                      Process Information. (line 105)
+* set procfs-file:                       Process Information. (line 112)
+* set procfs-trace:                      Process Information. (line 106)
 * set prompt:                            Prompt.              (line  16)
 * set python print-stack:                Python Commands.     (line  44)
 * set radix:                             Numbers.             (line  43)
@@ -2371,7 +4380,7 @@ Command, Variable, and Function Index
 * set varsize-limit:                     Ada Settings.        (line   6)
 * set verbose:                           Messages/Warnings.   (line  15)
 * set watchdog:                          Maintenance Commands.
-                                                              (line 610)
+                                                              (line 624)
 * set width:                             Screen Size.         (line  22)
 * set write:                             Patching.            (line  15)
 * set-breakpoint-condition!:             Breakpoints In Guile.
@@ -2394,9 +4403,9 @@ Command, Variable, and Function Index
 * set-mark (C-@):                        Miscellaneous Commands.
                                                               (line  33)
 * set-memory-port-read-buffer-size!:     Memory Ports in Guile.
-                                                              (line  41)
+                                                              (line  44)
 * set-memory-port-write-buffer-size!:    Memory Ports in Guile.
-                                                              (line  49)
+                                                              (line  59)
 * set-objfile-pretty-printers!:          Objfiles In Guile.   (line  40)
 * set-parameter-value!:                  Parameters In Guile. (line 107)
 * set-pretty-printer-enabled!:           Guile Pretty Printing API.
@@ -2408,11 +4417,11 @@ Command, Variable, and Function Index
 * share:                                 Files.               (line 339)
 * sharedlibrary:                         Files.               (line 339)
 * shell:                                 Shell Commands.      (line  10)
-* show:                                  Help.                (line 134)
+* show:                                  Help.                (line 143)
 * show ada print-signatures:             Overloading support for Ada.
                                                               (line  36)
 * show ada trust-PAD-over-XVS:           Ada Glitches.        (line  42)
-* show agent:                            In-Process Agent.    (line  51)
+* show agent:                            In-process Agent.    (line  51)
 * show annotate:                         Annotations Overview.
                                                               (line  34)
 * show architecture:                     Targets.             (line  21)
@@ -2430,7 +4439,7 @@ Command, Variable, and Function Index
 * show auto-load safe-path:              Auto-loading safe path.
                                                               (line  46)
 * show auto-load scripts-directory:      objfile-gdbdotext file.
-                                                              (line  61)
+                                                              (line  65)
 * show auto-solib-add:                   Files.               (line 324)
 * show backtrace:                        Backtrace.           (line 173)
 * show basenames-may-differ:             Files.               (line 539)
@@ -2455,12 +4464,12 @@ Command, Variable, and Function Index
 * show com3irq:                          DJGPP Native.        (line 134)
 * show com4base:                         DJGPP Native.        (line 134)
 * show com4irq:                          DJGPP Native.        (line 134)
-* show commands:                         Command History.     (line  95)
+* show commands:                         Command History.     (line 110)
 * show complaints:                       Messages/Warnings.   (line  35)
-* show configuration:                    Help.                (line 167)
+* show configuration:                    Help.                (line 176)
 * show confirm:                          Messages/Warnings.   (line  57)
 * show convenience:                      Convenience Vars.    (line  37)
-* show copying:                          Help.                (line 158)
+* show copying:                          Help.                (line 167)
 * show cp-abi:                           ABI.                 (line  57)
 * show cwd:                              Working Directory.   (line  27)
 * show cygwin-exceptions:                Cygwin Native.       (line  68)
@@ -2489,7 +4498,7 @@ Command, Variable, and Function Index
 * show disassemble-next-line:            Machine Code.        (line 249)
 * show disassembler-options:             Machine Code.        (line 234)
 * show disassembly-flavor:               Machine Code.        (line 246)
-* show disconnected-dprintf:             Dynamic Printf.      (line  88)
+* show disconnected-dprintf:             Dynamic printf.      (line  88)
 * show disconnected-tracing:             Starting and Stopping Trace Experiments.
                                                               (line  62)
 * show displaced-stepping:               Maintenance Commands.
@@ -2505,9 +4514,9 @@ Command, Variable, and Function Index
 * show gnutarget:                        Target Commands.     (line  40)
 * show hash, for remote monitors:        Target Commands.     (line 104)
 * show height:                           Screen Size.         (line  22)
-* show history:                          Command History.     (line  87)
+* show history:                          Command History.     (line 102)
 * show host-charset:                     Character Sets.      (line  55)
-* show index-cache:                      Index Files.         (line  86)
+* show index-cache:                      Index Files.         (line  84)
 * show inferior-tty:                     Input/Output.        (line  54)
 * show input-radix:                      Numbers.             (line  35)
 * show interactive-mode:                 Other Misc Settings. (line  20)
@@ -2542,16 +4551,16 @@ Command, Variable, and Function Index
 * show print:                            Print Settings.      (line  39)
 * show print finish:                     Continuing and Stepping.
                                                               (line 117)
-* show print inferior-events:            Inferiors and Programs.
-                                                              (line 134)
+* show print inferior-events:            Inferiors Connections and Programs.
+                                                              (line 177)
 * show print symbol-loading:             Symbols.             (line 615)
 * show print thread-events:              Threads.             (line 282)
 * show print type methods:               Symbols.             (line  53)
 * show print type nested-type-limit:     Symbols.             (line  64)
 * show print type typedefs:              Symbols.             (line  81)
 * show processor:                        Targets.             (line  31)
-* show procfs-file:                      Process Information. (line 116)
-* show procfs-trace:                     Process Information. (line 108)
+* show procfs-file:                      Process Information. (line 117)
+* show procfs-trace:                     Process Information. (line 109)
 * show prompt:                           Prompt.              (line  19)
 * show radix:                            Numbers.             (line  43)
 * show range-stepping:                   Continuing and Stepping.
@@ -2606,8 +4615,8 @@ Command, Variable, and Function Index
 * show values:                           Value History.       (line  47)
 * show varsize-limit:                    Ada Settings.        (line  26)
 * show verbose:                          Messages/Warnings.   (line  21)
-* show version:                          Help.                (line 148)
-* show warranty:                         Help.                (line 162)
+* show version:                          Help.                (line 157)
+* show warranty:                         Help.                (line 171)
 * show width:                            Screen Size.         (line  22)
 * show write:                            Patching.            (line  26)
 * show-all-if-ambiguous:                 Readline Init File Syntax.
@@ -2841,7 +4850,20 @@ Command, Variable, and Function Index
 * tty:                                   Input/Output.        (line  23)
 * tui disable:                           TUI Commands.        (line  23)
 * tui enable:                            TUI Commands.        (line  18)
-* tui reg:                               TUI Commands.        (line  80)
+* tui new-layout:                        TUI Commands.        (line  29)
+* tui reg:                               TUI Commands.        (line 128)
+* TuiWindow.erase:                       TUI Windows In Python.
+                                                              (line  44)
+* TuiWindow.height:                      TUI Windows In Python.
+                                                              (line  36)
+* TuiWindow.is_valid:                    TUI Windows In Python.
+                                                              (line  26)
+* TuiWindow.title:                       TUI Windows In Python.
+                                                              (line  39)
+* TuiWindow.width:                       TUI Windows In Python.
+                                                              (line  33)
+* TuiWindow.write:                       TUI Windows In Python.
+                                                              (line  47)
 * tvariable:                             Trace State Variables.
                                                               (line  26)
 * type-array:                            Types In Guile.      (line  52)
@@ -2865,77 +4887,78 @@ Command, Variable, and Function Index
 * type-vector:                           Types In Guile.      (line  60)
 * type-volatile:                         Types In Guile.      (line 103)
 * Type.alignof:                          Types In Python.     (line  32)
-* Type.array:                            Types In Python.     (line 112)
+* Type.array:                            Types In Python.     (line 138)
 * Type.code:                             Types In Python.     (line  38)
-* Type.const:                            Types In Python.     (line 133)
-* Type.fields:                           Types In Python.     (line  63)
-* Type.name:                             Types In Python.     (line  42)
-* Type.objfile:                          Types In Python.     (line  57)
-* Type.optimized_out:                    Types In Python.     (line 190)
-* Type.pointer:                          Types In Python.     (line 156)
-* Type.range:                            Types In Python.     (line 146)
-* Type.reference:                        Types In Python.     (line 152)
-* Type.sizeof:                           Types In Python.     (line  46)
-* Type.strip_typedefs:                   Types In Python.     (line 160)
-* Type.tag:                              Types In Python.     (line  51)
-* Type.target:                           Types In Python.     (line 164)
-* Type.template_argument:                Types In Python.     (line 178)
-* Type.unqualified:                      Types In Python.     (line 141)
-* Type.vector:                           Types In Python.     (line 120)
-* Type.volatile:                         Types In Python.     (line 137)
+* Type.const:                            Types In Python.     (line 159)
+* Type.dynamic:                          Types In Python.     (line  42)
+* Type.fields:                           Types In Python.     (line  85)
+* Type.name:                             Types In Python.     (line  62)
+* Type.objfile:                          Types In Python.     (line  79)
+* Type.optimized_out:                    Types In Python.     (line 216)
+* Type.pointer:                          Types In Python.     (line 182)
+* Type.range:                            Types In Python.     (line 172)
+* Type.reference:                        Types In Python.     (line 178)
+* Type.sizeof:                           Types In Python.     (line  66)
+* Type.strip_typedefs:                   Types In Python.     (line 186)
+* Type.tag:                              Types In Python.     (line  73)
+* Type.target:                           Types In Python.     (line 190)
+* Type.template_argument:                Types In Python.     (line 204)
+* Type.unqualified:                      Types In Python.     (line 167)
+* Type.vector:                           Types In Python.     (line 146)
+* Type.volatile:                         Types In Python.     (line 163)
 * type?:                                 Types In Guile.      (line  11)
-* TYPE_CODE_ARRAY:                       Types In Python.     (line 202)
+* TYPE_CODE_ARRAY:                       Types In Python.     (line 228)
 * TYPE_CODE_ARRAY <1>:                   Types In Guile.      (line 153)
-* TYPE_CODE_BITSTRING:                   Types In Python.     (line 240)
+* TYPE_CODE_BITSTRING:                   Types In Python.     (line 266)
 * TYPE_CODE_BITSTRING <1>:               Types In Guile.      (line 191)
-* TYPE_CODE_BOOL:                        Types In Python.     (line 264)
+* TYPE_CODE_BOOL:                        Types In Python.     (line 290)
 * TYPE_CODE_BOOL <1>:                    Types In Guile.      (line 212)
-* TYPE_CODE_CHAR:                        Types In Python.     (line 261)
+* TYPE_CODE_CHAR:                        Types In Python.     (line 287)
 * TYPE_CODE_CHAR <1>:                    Types In Guile.      (line 209)
-* TYPE_CODE_COMPLEX:                     Types In Python.     (line 267)
+* TYPE_CODE_COMPLEX:                     Types In Python.     (line 293)
 * TYPE_CODE_COMPLEX <1>:                 Types In Guile.      (line 215)
-* TYPE_CODE_DECFLOAT:                    Types In Python.     (line 276)
+* TYPE_CODE_DECFLOAT:                    Types In Python.     (line 302)
 * TYPE_CODE_DECFLOAT <1>:                Types In Guile.      (line 224)
-* TYPE_CODE_ENUM:                        Types In Python.     (line 211)
+* TYPE_CODE_ENUM:                        Types In Python.     (line 237)
 * TYPE_CODE_ENUM <1>:                    Types In Guile.      (line 162)
-* TYPE_CODE_ERROR:                       Types In Python.     (line 243)
+* TYPE_CODE_ERROR:                       Types In Python.     (line 269)
 * TYPE_CODE_ERROR <1>:                   Types In Guile.      (line 194)
-* TYPE_CODE_FLAGS:                       Types In Python.     (line 214)
+* TYPE_CODE_FLAGS:                       Types In Python.     (line 240)
 * TYPE_CODE_FLAGS <1>:                   Types In Guile.      (line 165)
-* TYPE_CODE_FLT:                         Types In Python.     (line 223)
+* TYPE_CODE_FLT:                         Types In Python.     (line 249)
 * TYPE_CODE_FLT <1>:                     Types In Guile.      (line 174)
-* TYPE_CODE_FUNC:                        Types In Python.     (line 217)
+* TYPE_CODE_FUNC:                        Types In Python.     (line 243)
 * TYPE_CODE_FUNC <1>:                    Types In Guile.      (line 168)
-* TYPE_CODE_INT:                         Types In Python.     (line 220)
+* TYPE_CODE_INT:                         Types In Python.     (line 246)
 * TYPE_CODE_INT <1>:                     Types In Guile.      (line 171)
-* TYPE_CODE_INTERNAL_FUNCTION:           Types In Python.     (line 279)
+* TYPE_CODE_INTERNAL_FUNCTION:           Types In Python.     (line 305)
 * TYPE_CODE_INTERNAL_FUNCTION <1>:       Types In Guile.      (line 227)
-* TYPE_CODE_MEMBERPTR:                   Types In Python.     (line 252)
+* TYPE_CODE_MEMBERPTR:                   Types In Python.     (line 278)
 * TYPE_CODE_MEMBERPTR <1>:               Types In Guile.      (line 203)
-* TYPE_CODE_METHOD:                      Types In Python.     (line 246)
+* TYPE_CODE_METHOD:                      Types In Python.     (line 272)
 * TYPE_CODE_METHOD <1>:                  Types In Guile.      (line 197)
-* TYPE_CODE_METHODPTR:                   Types In Python.     (line 249)
+* TYPE_CODE_METHODPTR:                   Types In Python.     (line 275)
 * TYPE_CODE_METHODPTR <1>:               Types In Guile.      (line 200)
-* TYPE_CODE_NAMESPACE:                   Types In Python.     (line 273)
+* TYPE_CODE_NAMESPACE:                   Types In Python.     (line 299)
 * TYPE_CODE_NAMESPACE <1>:               Types In Guile.      (line 221)
-* TYPE_CODE_PTR:                         Types In Python.     (line 199)
+* TYPE_CODE_PTR:                         Types In Python.     (line 225)
 * TYPE_CODE_PTR <1>:                     Types In Guile.      (line 150)
-* TYPE_CODE_RANGE:                       Types In Python.     (line 232)
+* TYPE_CODE_RANGE:                       Types In Python.     (line 258)
 * TYPE_CODE_RANGE <1>:                   Types In Guile.      (line 183)
-* TYPE_CODE_REF:                         Types In Python.     (line 255)
+* TYPE_CODE_REF:                         Types In Python.     (line 281)
 * TYPE_CODE_REF <1>:                     Types In Guile.      (line 206)
-* TYPE_CODE_RVALUE_REF:                  Types In Python.     (line 258)
-* TYPE_CODE_SET:                         Types In Python.     (line 229)
+* TYPE_CODE_RVALUE_REF:                  Types In Python.     (line 284)
+* TYPE_CODE_SET:                         Types In Python.     (line 255)
 * TYPE_CODE_SET <1>:                     Types In Guile.      (line 180)
-* TYPE_CODE_STRING:                      Types In Python.     (line 235)
+* TYPE_CODE_STRING:                      Types In Python.     (line 261)
 * TYPE_CODE_STRING <1>:                  Types In Guile.      (line 186)
-* TYPE_CODE_STRUCT:                      Types In Python.     (line 205)
+* TYPE_CODE_STRUCT:                      Types In Python.     (line 231)
 * TYPE_CODE_STRUCT <1>:                  Types In Guile.      (line 156)
-* TYPE_CODE_TYPEDEF:                     Types In Python.     (line 270)
+* TYPE_CODE_TYPEDEF:                     Types In Python.     (line 296)
 * TYPE_CODE_TYPEDEF <1>:                 Types In Guile.      (line 218)
-* TYPE_CODE_UNION:                       Types In Python.     (line 208)
+* TYPE_CODE_UNION:                       Types In Python.     (line 234)
 * TYPE_CODE_UNION <1>:                   Types In Guile.      (line 159)
-* TYPE_CODE_VOID:                        Types In Python.     (line 226)
+* TYPE_CODE_VOID:                        Types In Python.     (line 252)
 * TYPE_CODE_VOID <1>:                    Types In Guile.      (line 177)
 * u (SingleKey TUI key):                 TUI Single Key Mode. (line  37)
 * u (until):                             Continuing and Stepping.
@@ -2963,7 +4986,7 @@ Command, Variable, and Function Index
 * Up:                                    TUI Keys.            (line  67)
 * up-silently:                           Selection.           (line 106)
 * upcase-word (M-u):                     Commands For Text.   (line  56)
-* update:                                TUI Commands.        (line 106)
+* update:                                TUI Commands.        (line 154)
 * v (SingleKey TUI key):                 TUI Single Key Mode. (line  40)
 * value->bool:                           Values From Inferior In Guile.
                                                               (line 234)
@@ -3086,7 +5109,15 @@ Command, Variable, and Function Index
 * where:                                 Backtrace.           (line  94)
 * while:                                 Command Files.       (line  85)
 * while-stepping (tracepoints):          Tracepoint Actions.  (line 126)
-* winheight:                             TUI Commands.        (line 110)
+* Window.close:                          TUI Windows In Python.
+                                                              (line  62)
+* Window.hscroll:                        TUI Windows In Python.
+                                                              (line  81)
+* Window.render:                         TUI Windows In Python.
+                                                              (line  71)
+* Window.vscroll:                        TUI Windows In Python.
+                                                              (line  88)
+* winheight:                             TUI Commands.        (line 158)
 * with command:                          Command Settings.    (line  39)
 * WP_ACCESS:                             Breakpoints In Python.
                                                               (line  86)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdbinit.5 ./gdb/doc/gdbinit.5
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdbinit.5	2020-03-07 02:11:42.000000000 +0000
+++ ./gdb/doc/gdbinit.5	2021-05-21 02:00:22.000000000 +0000
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.13)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,27 +38,36 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDBINIT 5"
-.TH GDBINIT 5 "2020-03-07" "gdb-9.1.90.20200307-git" "GNU Development Tools"
+.TH GDBINIT 5 "2021-05-21" "gdb-10.2.90.20210521-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
@@ -147,7 +156,7 @@ the \s-1GDB\s0 manual in node \f(CW\*(C`
 Please read more in
 the \s-1GDB\s0 manual in node \f(CW\*(C`Startup\*(C'\fR
 \&\*(-- shell command \f(CW\*(C`info \-f gdb \-n Startup\*(C'\fR.
-.ie n .IP "\fB(not enabled with \fB""\-\-with\-system\-gdbinit""\fB during compilation)\fR" 4
+.ie n .IP "\fB(not enabled with \f(CB""\-\-with\-system\-gdbinit""\fB during compilation)\fR" 4
 .el .IP "\fB(not enabled with \f(CB\-\-with\-system\-gdbinit\fB during compilation)\fR" 4
 .IX Item "(not enabled with --with-system-gdbinit during compilation)"
 System-wide initialization file.  It is executed unless user specified
@@ -155,7 +164,7 @@ System-wide initialization file.  It is
 See more in
 the \s-1GDB\s0 manual in node \f(CW\*(C`System\-wide configuration\*(C'\fR
 \&\*(-- shell command \f(CW\*(C`info \-f gdb \-n \*(AqSystem\-wide configuration\*(Aq\*(C'\fR.
-.ie n .IP "\fB(not enabled with \fB""\-\-with\-system\-gdbinit\-dir""\fB during compilation)\fR" 4
+.ie n .IP "\fB(not enabled with \f(CB""\-\-with\-system\-gdbinit\-dir""\fB during compilation)\fR" 4
 .el .IP "\fB(not enabled with \f(CB\-\-with\-system\-gdbinit\-dir\fB during compilation)\fR" 4
 .IX Item "(not enabled with --with-system-gdbinit-dir during compilation)"
 System-wide initialization directory.  All files in this directory are
@@ -179,7 +188,7 @@ the \s-1GDB\s0 manual in node \f(CW\*(C`
 .IX Header "OPTIONS"
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fIgdb\fR\|(1), \f(CW\*(C`info \-f gdb \-n Startup\*(C'\fR
+\&\fBgdb\fR\|(1), \f(CW\*(C`info \-f gdb \-n Startup\*(C'\fR
 .PP
 The full documentation for \s-1GDB\s0 is maintained as a Texinfo manual.
 If the \f(CW\*(C`info\*(C'\fR and \f(CW\*(C`gdb\*(C'\fR programs and \s-1GDB\s0's Texinfo
@@ -191,11 +200,11 @@ documentation are properly installed at
 .PP
 should give you access to the complete manual.
 .PP
-\&\fIUsing \s-1GDB:\s0 A Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
+\&\fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
 Richard M. Stallman and Roland H. Pesch, July 1991.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1988\-2020 Free Software Foundation, Inc.
+Copyright (c) 1988\-2021 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdbserver.1 ./gdb/doc/gdbserver.1
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdbserver.1	2020-03-07 02:11:42.000000000 +0000
+++ ./gdb/doc/gdbserver.1	2021-05-21 02:00:21.000000000 +0000
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.13)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,27 +38,36 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+.    if \nF \{\
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{\
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDBSERVER 1"
-.TH GDBSERVER 1 "2020-03-07" "gdb-9.1.90.20200307-git" "GNU Development Tools"
+.TH GDBSERVER 1 "2021-05-21" "gdb-10.2.90.20210521-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
@@ -151,7 +160,7 @@ the target system.  The program can be s
 the \s-1GDB\s0 running on the host system.
 .PP
 To use the server, you log on to the target system, and run the \fBgdbserver\fR
-program.  You must tell it (a) how to communicate with \s-1GDB\s0, (b) the name of
+program.  You must tell it (a) how to communicate with \s-1GDB,\s0 (b) the name of
 your program, and (c) its arguments.  The general syntax is:
 .PP
 .Vb 1
@@ -175,7 +184,7 @@ To use a \s-1TCP\s0 connection, you coul
 .Ve
 .PP
 This says pretty much the same thing as the last example, except that we are
-going to communicate with the \f(CW\*(C`host\*(C'\fR \s-1GDB\s0 via \s-1TCP\s0.  The \f(CW\*(C`host:2345\*(C'\fR argument means
+going to communicate with the \f(CW\*(C`host\*(C'\fR \s-1GDB\s0 via \s-1TCP.\s0  The \f(CW\*(C`host:2345\*(C'\fR argument means
 that we are expecting to see a \s-1TCP\s0 connection from \f(CW\*(C`host\*(C'\fR to local \s-1TCP\s0 port
 2345.  (Currently, the \f(CW\*(C`host\*(C'\fR part is ignored.)  You can choose any number you
 want for the port number as long as it does not conflict with any existing \s-1TCP\s0
@@ -233,8 +242,8 @@ command, otherwise you may get an error
 .PP
 \&\fBgdbserver\fR can also debug multiple inferiors at once,
 described in
-the \s-1GDB\s0 manual in node \f(CW\*(C`Inferiors and Programs\*(C'\fR
-\&\*(-- shell command \f(CW\*(C`info \-f gdb \-n \*(AqInferiors and Programs\*(Aq\*(C'\fR.
+the \s-1GDB\s0 manual in node \f(CW\*(C`Inferiors Connections and Programs\*(C'\fR
+\&\*(-- shell command \f(CW\*(C`info \-f gdb \-n \*(AqInferiors Connections and Programs\*(Aq\*(C'\fR.
 In such case use the \f(CW\*(C`extended\-remote\*(C'\fR \s-1GDB\s0 command variant:
 .PP
 .Vb 1
@@ -355,11 +364,11 @@ documentation are properly installed at
 .PP
 should give you access to the complete manual.
 .PP
-\&\fIUsing \s-1GDB:\s0 A Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
+\&\fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
 Richard M. Stallman and Roland H. Pesch, July 1991.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1988\-2020 Free Software Foundation, Inc.
+Copyright (c) 1988\-2021 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.texinfo ./gdb/doc/gdb.texinfo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/gdb.texinfo	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/gdb.texinfo	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 \input texinfo      @c -*-texinfo-*-
-@c Copyright (C) 1988-2020 Free Software Foundation, Inc.
+@c Copyright (C) 1988--2021 Free Software Foundation, Inc.
 @c
 @c %**start of header
 @c makeinfo ignores cmds prev to setfilename, so its arg cannot make use
@@ -50,7 +50,7 @@
 
 @copying
 @c man begin COPYRIGHT
-Copyright @copyright{} 1988-2020 Free Software Foundation, Inc.
+Copyright @copyright{} 1988-2021 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -108,7 +108,7 @@ ISBN 978-0-9831592-3-0 @*
 @page
 
 @ifnottex
-@node Top, Summary, (dir), (dir)
+@node Top, Summary
 
 @top Debugging with @value{GDBN}
 
@@ -120,7 +120,7 @@ This is the @value{EDITION} Edition, for
 @end ifset
 Version @value{GDBVN}.
 
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
 This edition of the GDB manual is dedicated to the memory of Fred
 Fish.  Fred was a long-standing contributor to GDB and to Free
@@ -160,7 +160,7 @@ software in general.  We will miss him.
 * GDB/MI::                      @value{GDBN}'s Machine Interface.
 * Annotations::                 @value{GDBN}'s annotation interface.
 * JIT Interface::               Using the JIT debugging interface.
-* In-Process Agent::            In-Process Agent
+* In-process Agent::            In-process Agent
 
 * GDB Bugs::                    Reporting bugs in @value{GDBN}
 
@@ -557,6 +557,10 @@ Alessandro Forin and Per Bothner.  More
 of Jeremy Bennett, Franck Jullien, Stefan Wallentowitz and
 Stafford Horne.
 
+Weimin Pan, David Faust and Jose E. Marchesi contributed support for
+the Linux kernel BPF virtual architecture.  This work was sponsored by
+Oracle.
+
 @node Sample Session
 @chapter A Sample @value{GDBN} Session
 
@@ -1311,7 +1315,7 @@ important when reporting @value{GDBN} bu
 @end table
 
 @node Startup
-@subsection What @value{GDBN} Does During Startup
+@subsection What @value{GDBN} Does during Startup
 @cindex @value{GDBN} startup
 
 Here's the description of what @value{GDBN} does during session startup:
@@ -1451,9 +1455,10 @@ just use the @code{shell} command.
 @itemx !@var{command-string}
 Invoke a standard shell to execute @var{command-string}.
 Note that no space is needed between @code{!} and @var{command-string}.
-If it exists, the environment variable @code{SHELL} determines which
-shell to run.  Otherwise @value{GDBN} uses the default shell
-(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
+On GNU and Unix systems, the environment variable @code{SHELL}, if it
+exists, determines which shell to run.  Otherwise @value{GDBN} uses
+the default shell (@file{/bin/sh} on GNU and Unix systems,
+@file{cmd.exe} on MS-Windows, @file{COMMAND.COM} on MS-DOS, etc.).
 @end table
 
 The utility @code{make} is often needed in development environments.
@@ -1577,6 +1582,7 @@ show you the alternatives available, if
 * Command Settings::            How to change default behavior of commands
 * Completion::                  Command completion
 * Command Options::             Command options
+* Command aliases default args::        Automatically prepend default arguments to user-defined aliases
 * Help::                        How to ask @value{GDBN} for help
 @end menu
 
@@ -1933,7 +1939,7 @@ struct ui_file
 @end smallexample
 
 @node Command Options
-@section Command options
+@section Command Options
 
 @cindex command options
 Some commands accept options starting with a leading dash.  For
@@ -1997,6 +2003,89 @@ uppercase.
 (For more on using the @code{print} command, see @ref{Data, ,Examining
 Data}.)
 
+@node Command aliases default args
+@section Automatically Prepend Default Arguments to User-Defined Aliases
+
+You can tell @value{GDBN} to always prepend some default arguments to
+the list of arguments provided explicitly by the user when using a
+user-defined alias.
+
+If you repeatedly use the same arguments or options for a command, you
+can define an alias for this command and tell @value{GDBN} to
+automatically prepend these arguments or options to the list of
+arguments you type explicitly when using the alias@footnote{@value{GDBN}
+could easily accept default arguments for pre-defined commands and aliases,
+but it was deemed this would be confusing, and so is not allowed.}.
+
+For example, if you often use the command @code{thread apply all}
+specifying to work on the threads in ascending order and to continue in case it
+encounters an error, you can tell @value{GDBN} to automatically preprend
+the @code{-ascending} and @code{-c} options by using:
+
+@smallexample
+(@value{GDBP}) alias thread apply asc-all = thread apply all -ascending -c
+@end smallexample
+
+Once you have defined this alias with its default args, any time you type
+the @code{thread apply asc-all} followed by @code{some arguments},
+@value{GDBN} will execute  @code{thread apply all -ascending -c some arguments}.
+
+To have even less to type, you can also define a one word alias:
+@smallexample
+(@value{GDBP}) alias t_a_c = thread apply all -ascending -c
+@end smallexample
+
+As usual, unambiguous abbreviations can be used for @var{alias}
+and @var{default-args}.
+
+The different aliases of a command do not share their default args.
+For example, you define a new alias @code{bt_ALL} showing all possible
+information and another alias @code{bt_SMALL} showing very limited information
+using:
+@smallexample
+(@value{GDBP}) alias bt_ALL = backtrace -entry-values both -frame-arg all \
+   -past-main -past-entry -full
+(@value{GDBP}) alias bt_SMALL = backtrace -entry-values no -frame-arg none \
+   -past-main off -past-entry off
+@end smallexample
+
+(For more on using the @code{alias} command, see @ref{Aliases}.)
+
+Default args are not limited to the arguments and options of @var{command},
+but can specify nested commands if @var{command} accepts such a nested command
+as argument.
+For example, the below defines @code{faalocalsoftype} that lists the
+frames having locals of a certain type, together with the matching
+local vars:
+@smallexample
+(@value{GDBP}) alias faalocalsoftype = frame apply all info locals -q -t
+(@value{GDBP}) faalocalsoftype int
+#1  0x55554f5e in sleeper_or_burner (v=0xdf50) at sleepers.c:86
+i = 0
+ret = 21845
+@end smallexample
+
+This is also very useful to define an alias for a set of nested @code{with}
+commands to have a particular combination of temporary settings.  For example,
+the below defines the alias @code{pp10} that pretty prints an expression
+argument, with a maximum of 10 elements if the expression is a string or
+an array:
+@smallexample
+(@value{GDBP}) alias pp10 = with print pretty -- with print elements 10 -- print
+@end smallexample
+This defines the alias  @code{pp10} as being a sequence of 3 commands.
+The first part @code{with print pretty --} temporarily activates the setting
+@code{set print pretty}, then launches the command that follows the separator
+@code{--}.
+The command following the first part is also a @code{with} command that
+temporarily changes the setting @code{set print elements} to 10, then
+launches the command that follows the second separator @code{--}.
+The third part @code{print} is the command the @code{pp10} alias will launch,
+using the temporary values of the settings and the arguments explicitly given
+by the user.
+For more information about the @code{with} command usage,
+see @ref{Command Settings}.
+
 @node Help
 @section Getting Help
 @cindex online documentation
@@ -2016,7 +2105,7 @@ display a short list of named classes of
 (@value{GDBP}) help
 List of classes of commands:
 
-aliases -- Aliases of other commands
+aliases -- User-defined aliases of other commands
 breakpoints -- Making program stop at certain points
 data -- Examining data
 files -- Specifying and examining files
@@ -2041,8 +2130,11 @@ Command name abbreviations are allowed i
 
 @item help @var{class}
 Using one of the general help classes as an argument, you can get a
-list of the individual commands in that class.  For example, here is the
-help display for the class @code{status}:
+list of the individual commands in that class.  If a command has
+aliases, the aliases are given after the command name, separated by
+commas.  If an alias has default arguments, the full definition of
+the alias is given after the first line.
+For example, here is the help display for the class @code{status}:
 
 @smallexample
 (@value{GDBP}) help status
@@ -2052,9 +2144,14 @@ List of commands:
 
 @c Line break in "show" line falsifies real output, but needed
 @c to fit in smallbook page size.
-info -- Generic command for showing things
+info, inf, i -- Generic command for showing things
         about the program being debugged
-show -- Generic command for showing things
+info address, iamain  -- Describe where symbol SYM is stored.
+  alias iamain = info address main
+info all-registers -- List of all registers and their contents,
+        for selected stack frame.
+...
+show, info set -- Generic command for showing things
         about the debugger
 
 Type "help" followed by command name for full
@@ -2065,7 +2162,11 @@ Command name abbreviations are allowed i
 
 @item help @var{command}
 With a command name as @code{help} argument, @value{GDBN} displays a
-short paragraph on how to use that command.
+short paragraph on how to use that command.  If that command has
+one or more aliases, @value{GDBN} will display a first line with
+the command name and all its aliases separated by commas.
+This first line will be followed by the full definition of all aliases
+having default arguments.
 
 @kindex apropos
 @item apropos [-v] @var{regexp}
@@ -2086,10 +2187,7 @@ results in:
 @smallexample
 @group
 alias -- Define a new command that is an alias of an existing command
-aliases -- Aliases of other commands
-d -- Delete some breakpoints or auto-display expressions
-del -- Delete some breakpoints or auto-display expressions
-delete -- Delete some breakpoints or auto-display expressions
+aliases -- User-defined aliases of other commands
 @end group
 @end smallexample
 
@@ -2230,7 +2328,7 @@ your report.
 @end table
 
 @node Running
-@chapter Running Programs Under @value{GDBN}
+@chapter Running Programs under @value{GDBN}
 
 When you run a program under @value{GDBN}, you must first generate
 debugging information when you compile it.
@@ -2250,8 +2348,8 @@ kill a child process.
 * Input/Output::                Your program's input and output
 * Attach::                      Debugging an already-running process
 * Kill Process::                Killing the child process
-
-* Inferiors and Programs::      Debugging multiple inferiors and programs
+* Inferiors Connections and Programs:: Debugging multiple inferiors
+					 connections and programs
 * Threads::                     Debugging programs with multiple threads
 * Forks::                       Debugging forks
 * Checkpoint/Restart::          Setting a @emph{bookmark} to return to later
@@ -2303,7 +2401,7 @@ format in @value{GDBN}.
 
 @need 2000
 @node Starting
-@section Starting your Program
+@section Starting Your Program
 @cindex starting
 @cindex running
 
@@ -2506,27 +2604,28 @@ initialization file---such as @file{.csh
 @itemx set auto-connect-native-target off
 @itemx show auto-connect-native-target
 
-By default, if not connected to any target yet (e.g., with
-@code{target remote}), the @code{run} command starts your program as a
-native process under @value{GDBN}, on your local machine.  If you're
-sure you don't want to debug programs on your local machine, you can
-tell @value{GDBN} to not connect to the native target automatically
-with the @code{set auto-connect-native-target off} command.
+By default, if the current inferior is not connected to any target yet
+(e.g., with @code{target remote}), the @code{run} command starts your
+program as a native process under @value{GDBN}, on your local machine.
+If you're sure you don't want to debug programs on your local machine,
+you can tell @value{GDBN} to not connect to the native target
+automatically with the @code{set auto-connect-native-target off}
+command.
 
-If @code{on}, which is the default, and if @value{GDBN} is not
+If @code{on}, which is the default, and if the current inferior is not
 connected to a target already, the @code{run} command automaticaly
 connects to the native target, if one is available.
 
-If @code{off}, and if @value{GDBN} is not connected to a target
-already, the @code{run} command fails with an error:
+If @code{off}, and if the current inferior is not connected to a
+target already, the @code{run} command fails with an error:
 
 @smallexample
 (@value{GDBP}) run
 Don't know how to run.  Try "help target".
 @end smallexample
 
-If @value{GDBN} is already connected to a target, @value{GDBN} always
-uses it with the @code{run} command.
+If the current inferior is already connected to a target, @value{GDBN}
+always uses it with the @code{run} command.
 
 In any case, you can explicitly connect to the native target with the
 @code{target native} command.  For example,
@@ -2876,7 +2975,7 @@ Show the current tty for the program bei
 @end table
 
 @node Attach
-@section Debugging an Already-running Process
+@section Debugging an Already-Running Process
 @kindex attach
 @cindex attach
 
@@ -2904,6 +3003,32 @@ the program is not found) by using the s
 the @code{file} command to load the program.  @xref{Files, ,Commands to
 Specify Files}.
 
+@anchor{set exec-file-mismatch}
+If the debugger can determine that the executable file running in the
+process it is attaching to does not match the current exec-file loaded
+by @value{GDBN}, the option @code{exec-file-mismatch} specifies how to
+handle the mismatch.  @value{GDBN} tries to compare the files by
+comparing their build IDs (@pxref{build ID}), if available.
+
+@table @code
+@kindex exec-file-mismatch
+@cindex set exec-file-mismatch
+@item set exec-file-mismatch @samp{ask|warn|off}
+
+Whether to detect mismatch between the current executable file loaded
+by @value{GDBN} and the executable file used to start the process.  If
+@samp{ask}, the default, display a warning and ask the user whether to
+load the process executable file; if @samp{warn}, just display a
+warning; if @samp{off}, don't attempt to detect a mismatch.
+If the user confirms loading the process executable file, then its symbols
+will be loaded as well.
+
+@cindex show exec-file-mismatch
+@item show exec-file-mismatch
+Show the current value of @code{exec-file-mismatch}.
+
+@end table
+
 The first thing @value{GDBN} does after arranging to debug the specified
 process is to stop it.  You can examine and modify an attached process
 with all the @value{GDBN} commands that are ordinarily available when
@@ -2956,15 +3081,17 @@ next type @code{run}, @value{GDBN} notic
 reads the symbol table again (while trying to preserve your current
 breakpoint settings).
 
-@node Inferiors and Programs
-@section Debugging Multiple Inferiors and Programs
+@node Inferiors Connections and Programs
+@section Debugging Multiple Inferiors Connections and Programs
 
 @value{GDBN} lets you run and debug multiple programs in a single
 session.  In addition, @value{GDBN} on some systems may let you run
 several programs simultaneously (otherwise you have to exit from one
-before starting another).  In the most general case, you can have
-multiple threads of execution in each of multiple processes, launched
-from multiple executables.
+before starting another).  On some systems @value{GDBN} may even let
+you debug several programs simultaneously on different remote systems.
+In the most general case, you can have multiple threads of execution
+in each of multiple processes, launched from multiple executables,
+running on different machines.
 
 @cindex inferior
 @value{GDBN} represents the state of each program execution with an
@@ -2999,6 +3126,11 @@ the inferior number assigned by @value{G
 the target system's inferior identifier
 
 @item
+the target connection the inferior is bound to, including the unique
+connection number assigned by @value{GDBN}, and the protocol used by
+the connection.
+
+@item
 the name of the executable the inferior is running.
 
 @end enumerate
@@ -3013,9 +3145,51 @@ For example,
 
 @smallexample
 (@value{GDBP}) info inferiors
-  Num  Description       Executable
-  2    process 2307      hello
-* 1    process 3401      goodbye
+  Num  Description       Connection                      Executable
+* 1    process 3401      1 (native)                      goodbye
+  2    process 2307      2 (extended-remote host:10000)  hello
+@end smallexample
+
+To find out what open target connections exist at any moment, use
+@w{@code{info connections}}:
+
+@table @code
+@kindex info connections [ @var{id}@dots{} ]
+@item info connections
+Print a list of all open target connections currently being managed by
+@value{GDBN}.  By default all connections are printed, but the
+argument @var{id}@dots{} -- a space separated list of connections
+numbers -- can be used to limit the display to just the requested
+connections.
+
+@value{GDBN} displays for each connection (in this order):
+
+@enumerate
+@item
+the connection number assigned by @value{GDBN}.
+
+@item
+the protocol used by the connection.
+
+@item
+a textual description of the protocol used by the connection.
+
+@end enumerate
+
+@noindent
+An asterisk @samp{*} preceding the connection number indicates the
+connection of the current inferior.
+
+For example,
+@end table
+@c end table here to get a little more width for example
+
+@smallexample
+(@value{GDBP}) info connections
+  Num  What                        Description
+* 1    extended-remote host:10000  Extended remote serial target in gdb-specific protocol
+  2    native                      Native process
+  3    core                        Local core dump file
 @end smallexample
 
 To switch focus between inferiors, use the @code{inferior} command:
@@ -3044,13 +3218,22 @@ remove inferiors from the debugging sess
 
 @table @code
 @kindex add-inferior
-@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ]
+@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ] [-no-connection ]
 Adds @var{n} inferiors to be run using @var{executable} as the
 executable; @var{n} defaults to 1.  If no executable is specified,
 the inferiors begins empty, with no program.  You can still assign or
 change the program assigned to the inferior at any time by using the
 @code{file} command with the executable name as its argument.
 
+By default, the new inferior begins connected to the same target
+connection as the current inferior.  For example, if the current
+inferior was connected to @code{gdbserver} with @code{target remote},
+then the new inferior will be connected to the same @code{gdbserver}
+instance.  The @samp{-no-connection} option starts the new inferior
+with no connection yet.  You can then for example use the @code{target
+remote} command to connect to some other @code{gdbserver} instance,
+use @code{run} to spawn a local program, etc.
+
 @kindex clone-inferior
 @item clone-inferior [ -copies @var{n} ] [ @var{infno} ]
 Adds @var{n} inferiors ready to execute the same program as inferior
@@ -3060,15 +3243,15 @@ want to run another instance of the infe
 
 @smallexample
 (@value{GDBP}) info inferiors
-  Num  Description       Executable
-* 1    process 29964     helloworld
+  Num  Description       Connection   Executable
+* 1    process 29964     1 (native)   helloworld
 (@value{GDBP}) clone-inferior
 Added inferior 2.
 1 inferiors added.
 (@value{GDBP}) info inferiors
-  Num  Description       Executable
-  2    <null>            helloworld
-* 1    process 29964     helloworld
+  Num  Description       Connection   Executable
+* 1    process 29964     1 (native)   helloworld
+  2    <null>            1 (native)   helloworld
 @end smallexample
 
 You can now simply switch focus to inferior 2 and run it.
@@ -3389,7 +3572,7 @@ For example,
 
 @smallexample
 (@value{GDBP}) info threads
-  Id   Target Id         Frame
+  Id   Target Id             Frame
 * 1    process 35 thread 13  main (argc=1, argv=0x7ffffff8)
   2    process 35 thread 23  0x34e5 in sigpause ()
   3    process 35 thread 27  0x34e5 in sigpause ()
@@ -3514,7 +3697,7 @@ is, using:
 @end smallexample
 
 The @code{tfaas} command accepts the same options as the @code{frame
-apply} command.  @xref{frame apply}.
+apply} command.  @xref{Frame Apply,,frame apply}.
 
 @kindex thread name
 @cindex name a thread
@@ -3721,14 +3904,14 @@ If you choose to set @samp{detach-on-for
 will retain control of all forked processes (including nested forks).
 You can list the forked processes under the control of @value{GDBN} by
 using the @w{@code{info inferiors}} command, and switch from one fork
-to another by using the @code{inferior} command (@pxref{Inferiors and
-Programs, ,Debugging Multiple Inferiors and Programs}).
+to another by using the @code{inferior} command (@pxref{Inferiors Connections and
+Programs, ,Debugging Multiple Inferiors Connections and Programs}).
 
 To quit debugging one of the forked processes, you can either detach
 from it by using the @w{@code{detach inferiors}} command (allowing it
 to run independently), or kill it using the @w{@code{kill inferiors}}
-command.  @xref{Inferiors and Programs, ,Debugging Multiple Inferiors
-and Programs}.
+command.  @xref{Inferiors Connections and Programs, ,Debugging
+Multiple Inferiors Connections and Programs}.
 
 If you ask to debug a child process and a @code{vfork} is followed by an
 @code{exec}, @value{GDBN} executes the new target up to the first
@@ -4027,7 +4210,7 @@ are operated on.
 * Disabling::                   Disabling breakpoints
 * Conditions::                  Break conditions
 * Break Commands::              Breakpoint command lists
-* Dynamic Printf::              Dynamic printf
+* Dynamic printf::              Dynamic printf
 * Save Breakpoints::            How to save breakpoints in a file
 * Static Probe Points::         Listing static probe points
 * Error in Breakpoints::        ``Cannot insert breakpoints''
@@ -5412,8 +5595,8 @@ cont
 end
 @end smallexample
 
-@node Dynamic Printf
-@subsection Dynamic Printf
+@node Dynamic printf
+@subsection Dynamic printf
 
 @cindex dynamic printf
 @cindex dprintf
@@ -5523,7 +5706,7 @@ all enabled dynamic prints must be at lo
 those locals.  If evaluation fails, @value{GDBN} will report an error.
 
 @node Save Breakpoints
-@subsection How to save breakpoints to a file
+@subsection How to Save Breakpoints to a File
 
 To save breakpoint definitions to a file use the @w{@code{save
 breakpoints}} command.
@@ -6032,7 +6215,7 @@ default is @code{on}.
 @end table
 
 @node Skipping Over Functions and Files
-@section Skipping Over Functions and Files
+@section Skipping over Functions and Files
 @cindex skipping over functions and files
 
 The program you are debugging may contain some functions which are
@@ -6466,7 +6649,7 @@ Bounds: [lower = 0x7fffffffc390, upper =
 @end smallexample
 
 @node Thread Stops
-@section Stopping and Starting Multi-thread Programs
+@section Stopping and Starting Multi-Thread Programs
 
 @cindex stopped threads
 @cindex threads, stopped
@@ -6953,7 +7136,7 @@ Show the current permission to interrupt
 @end table
 
 @node Reverse Execution
-@chapter Running programs backward
+@chapter Running Programs Backward
 @cindex reverse execution
 @cindex running programs backward
 
@@ -8147,7 +8330,7 @@ distracting.
 @end table
 
 @node Frame Info
-@section Information About a Frame
+@section Information about a Frame
 
 There are several other commands to print information about the selected
 stack frame.
@@ -8271,8 +8454,7 @@ tfaas i lo -q -t lock_something_t
 @end table
 
 @node Frame Apply
-@section Applying a Command to Several Frames.
-@anchor{frame apply}
+@section Applying a Command to Several Frames
 @kindex frame apply
 @cindex apply command to several frames
 @table @code
@@ -8404,7 +8586,7 @@ is, using:
 @end smallexample
 
 The @code{faas} command accepts the same options as the @code{frame
-apply} command.  @xref{frame apply}.
+apply} command.  @xref{Frame Apply,,frame apply}.
 
 Note that the command @code{tfaas @var{command}} applies @var{command}
 on all frames of all threads.  See @xref{Threads,,Threads}.
@@ -8412,7 +8594,7 @@ on all frames of all threads.  See @xref
 
 
 @node Frame Filter Management
-@section Management of Frame Filters.
+@section Management of Frame Filters
 @cindex managing frame filters
 
 Frame filters are Python based utilities to manage and decorate the
@@ -8912,7 +9094,7 @@ Edit the file containing @var{function}
 
 @end table
 
-@subsection Choosing your Editor
+@subsection Choosing Your Editor
 You can customize @value{GDBN} to use any editor you want
 @footnote{
 The only restriction is that your editor (say @code{ex}), recognizes the
@@ -11911,8 +12093,8 @@ gdbserver that supports the @code{qGetTI
 This variable contains the address of the thread information block.
 
 @item $_inferior
-The number of the current inferior.  @xref{Inferiors and
-Programs, ,Debugging Multiple Inferiors and Programs}.
+The number of the current inferior.  @xref{Inferiors Connections and
+Programs, ,Debugging Multiple Inferiors Connections and Programs}.
 
 @item $_thread
 The thread number of the current thread.  @xref{thread numbers}.
@@ -12258,6 +12440,7 @@ and vector registers (in the selected st
 Print the names and values of all registers, including floating-point
 and vector registers (in the selected stack frame).
 
+@anchor{info_registers_reggroup}
 @item info registers @var{reggroup} @dots{}
 Print the name and value of the registers in each of the specified
 @var{reggroup}s.  The @var{reggroup} can be any of those returned by
@@ -12740,7 +12923,7 @@ Show the current handling of accesses to
 @c @end table
 
 @node Dump/Restore Files
-@section Copy Between Memory and a File
+@section Copy between Memory and a File
 @cindex dump/restore files
 @cindex append data to a file
 @cindex dump data to a file
@@ -13108,7 +13291,7 @@ character.
 
 @value{GDBN} caches data exchanged between the debugger and a target.
 Each cache is associated with the address space of the inferior.
-@xref{Inferiors and Programs}, about inferior and address space.
+@xref{Inferiors Connections and Programs}, about inferior and address space.
 Such caching generally improves performance in remote debugging
 (@pxref{Remote Debugging}), because it reduces the overhead of the
 remote protocol by bundling memory reads and writes into large chunks.
@@ -15564,7 +15747,7 @@ language}.
 @end menu
 
 @node Setting
-@section Switching Between Source Languages
+@section Switching between Source Languages
 
 There are two ways to control the working language---either have @value{GDBN}
 set it automatically, or select it manually yourself.  You can use the
@@ -16441,7 +16624,7 @@ name, like:
 @end table
 
 @node Decimal Floating Point
-@subsubsection Decimal Floating Point format
+@subsubsection Decimal Floating Point Format
 @cindex decimal floating point format
 
 @value{GDBN} can examine, set and perform computations with numbers in
@@ -16604,7 +16787,7 @@ clear -[NSWindow makeKeyAndOrderFront:]
 @end smallexample
 
 @node The Print Command with Objective-C
-@subsubsection The Print Command With Objective-C
+@subsubsection The Print Command with Objective-C
 @cindex Objective-C, print objects
 @kindex print-object
 @kindex po @r{(@code{print-object})}
@@ -17783,7 +17966,7 @@ object.
 @end itemize
 
 @node Overloading support for Ada
-@subsubsection Overloading support for Ada
+@subsubsection Overloading Support for Ada
 @cindex overloading, Ada
 
 The debugger supports limited overloading.  Given a subprogram call in which
@@ -18091,7 +18274,7 @@ Breakpoint 5, test_task_debug () at test
 @end table
 
 @node Ada Tasks and Core Files
-@subsubsection Tasking Support when Debugging Core Files
+@subsubsection Tasking Support When Debugging Core Files
 @cindex Ada tasking and core file debugging
 
 When inspecting a core file, as opposed to debugging a live program,
@@ -18108,7 +18291,7 @@ Under these circumstances, you should ma
 file before inspecting it with @value{GDBN}.
 
 @node Ravenscar Profile
-@subsubsection Tasking Support when using the Ravenscar Profile
+@subsubsection Tasking Support When Using the Ravenscar Profile
 @cindex Ravenscar Profile
 
 The @dfn{Ravenscar Profile} is a subset of the Ada tasking features,
@@ -18137,6 +18320,34 @@ using the Ravenscar Profile.
 
 @end table
 
+@cindex Ravenscar thread
+When Ravenscar task-switching is enabled, Ravenscar tasks are
+announced by @value{GDBN} as if they were threads:
+
+@smallexample
+(gdb) continue
+[New Ravenscar Thread 0x2b8f0]
+@end smallexample
+
+Both Ravenscar tasks and the underlying CPU threads will show up in
+the output of @code{info threads}:
+
+@smallexample
+(gdb) info threads
+  Id   Target Id                  Frame
+  1    Thread 1 (CPU#0 [running]) simple () at simple.adb:10
+  2    Thread 2 (CPU#1 [running]) 0x0000000000003d34 in __gnat_initialize_cpu_devices ()
+  3    Thread 3 (CPU#2 [running]) 0x0000000000003d28 in __gnat_initialize_cpu_devices ()
+  4    Thread 4 (CPU#3 [halted ]) 0x000000000000c6ec in system.task_primitives.operations.idle ()
+* 5    Ravenscar Thread 0x2b8f0   simple () at simple.adb:10
+  6    Ravenscar Thread 0x2f150   0x000000000000c6ec in system.task_primitives.operations.idle ()
+@end smallexample
+
+One known limitation of the Ravenscar support in @value{GDBN} is that
+it isn't currently possible to single-step through the runtime
+initialization sequence.  If you need to debug this code, you should
+use @code{set ravenscar task-switching off}.
+
 @node Ada Settings
 @subsubsection Ada Settings
 @cindex Ada settings
@@ -19337,7 +19548,7 @@ detail.
 
 @c @group
 @node Signaling
-@section Giving your Program a Signal
+@section Giving Your Program a Signal
 @cindex deliver a signal to a program
 
 @table @code
@@ -19573,7 +19784,7 @@ Show permission to call functions in the
 
 @end table
 
-@subsection Calling functions with no debug info
+@subsection Calling Functions with No Debug Info
 
 @cindex no debug info functions
 Sometimes, a function you wish to call is missing debug information.
@@ -19677,7 +19888,7 @@ as well as reading.
 @end table
 
 @node Compiling and Injecting Code
-@section Compiling and injecting code in @value{GDBN}
+@section Compiling and Injecting Code in @value{GDBN}
 @cindex injecting code
 @cindex writing into executables
 @cindex compiling code
@@ -19795,7 +20006,7 @@ Displays the current state of displaying
 C@t{++} type conversion.
 @end table
 
-@subsection Compilation options for the @code{compile} command
+@subsection Compilation Options for the @code{compile} Command
 
 @value{GDBN} needs to specify the right compilation options for the code
 to be injected, in part to make its ABI compatible with the inferior
@@ -19840,7 +20051,7 @@ This does not show all the options actua
 use @ref{set debug compile} for that.
 @end table
 
-@subsection Caveats when using the @code{compile} command
+@subsection Caveats When Using the @code{compile} Command
 
 There are a few caveats to keep in mind when using the @code{compile}
 command.  As the caveats are different per language, the table below
@@ -19997,7 +20208,7 @@ Access to those variables will generate
 will print to the console.
 @end table
 
-@subsection Compiler search for the @code{compile} command
+@subsection Compiler Search for the @code{compile} Command
 
 @value{GDBN} needs to find @value{NGCC} for the inferior being debugged
 which may not be obvious for remote targets of different architecture
@@ -20277,7 +20488,7 @@ that lies within the boundaries of this
 add symbol table from file "/home/user/gdb/mylib.so" at
     .text_addr = 0x7ffff7ff9480
 (y or n) y
-Reading symbols from /home/user/gdb/mylib.so...done.
+Reading symbols from /home/user/gdb/mylib.so...
 (gdb) remove-symbol-file -a 0x7ffff7ff9480
 Remove symbol table from file "/home/user/gdb/mylib.so"? (y or n) y
 (gdb)
@@ -20485,7 +20696,7 @@ when any of shared library events happen
 to use @code{catch load} and @code{catch unload} (@pxref{Set
 Catchpoints}).
 
-@value{GDBN} also supports the the @code{set stop-on-solib-events}
+@value{GDBN} also supports the @code{set stop-on-solib-events}
 command for this.  This command exists for historical reasons.  It is
 less useful than setting a catchpoint, because it does not allow for
 conditions or commands as a catchpoint does.
@@ -20788,6 +20999,7 @@ checksum for the debug file, which @valu
 the executable and the debug file came from the same build.
 
 @item
+@anchor{build ID}
 The executable contains a @dfn{build ID}, a unique bit string that is
 also present in the corresponding debug info file.  (This is supported
 only on some operating systems, when using the ELF or PE file formats
@@ -21058,7 +21270,7 @@ gnu_debuglink_crc32 (unsigned long crc,
 This computation does not apply to the ``build ID'' method.
 
 @node MiniDebugInfo
-@section Debugging information in a special section
+@section Debugging Information in a Special Section
 @cindex separate debug sections
 @cindex @samp{.gnu_debugdata} section
 
@@ -21199,11 +21411,9 @@ Instead you must do, for example,
 $ gdb -iex "set use-deprecated-index-sections on" <program>
 @end smallexample
 
-There are currently some limitation on indices.  They only work when
-using DWARF debugging information, not stabs.  And, only the
-@code{-dwarf-5} index works for programs using Ada.
+Indices only work when using DWARF debugging information, not stabs.
 
-@subsection Automatic symbol index cache
+@subsection Automatic Symbol Index Cache
 
 @cindex automatic symbol index cache
 It is possible for @value{GDBN} to automatically save a copy of this index in a
@@ -21780,6 +21990,12 @@ established.  If you are using @code{gdb
 @code{gdbserver} using the @option{--attach} option
 (@pxref{Running gdbserver}).
 
+Some remote targets allow @value{GDBN} to determine the executable file running
+in the process the debugger is attaching to.  In such a case, @value{GDBN}
+uses the value of @code{exec-file-mismatch} to handle a possible mismatch
+between the executable file name running in the process and the name of the
+current exec-file loaded by @value{GDBN} (@pxref{set exec-file-mismatch}).
+
 @end table
 
 @anchor{Host and target files}
@@ -21863,19 +22079,19 @@ This feature is not available if the hos
 Unix domain sockets.
 
 @item target remote @code{@var{host}:@var{port}}
-@itemx target remote @code{@var{[host]}:@var{port}}
+@itemx target remote @code{[@var{host}]:@var{port}}
 @itemx target remote @code{tcp:@var{host}:@var{port}}
-@itemx target remote @code{tcp:@var{[host]}:@var{port}}
+@itemx target remote @code{tcp:[@var{host}]:@var{port}}
 @itemx target remote @code{tcp4:@var{host}:@var{port}}
 @itemx target remote @code{tcp6:@var{host}:@var{port}}
-@itemx target remote @code{tcp6:@var{[host]}:@var{port}}
+@itemx target remote @code{tcp6:[@var{host}]:@var{port}}
 @itemx target extended-remote @code{@var{host}:@var{port}}
-@itemx target extended-remote @code{@var{[host]}:@var{port}}
+@itemx target extended-remote @code{[@var{host}]:@var{port}}
 @itemx target extended-remote @code{tcp:@var{host}:@var{port}}
-@itemx target extended-remote @code{tcp:@var{[host]}:@var{port}}
+@itemx target extended-remote @code{tcp:[@var{host}]:@var{port}}
 @itemx target extended-remote @code{tcp4:@var{host}:@var{port}}
 @itemx target extended-remote @code{tcp6:@var{host}:@var{port}}
-@itemx target extended-remote @code{tcp6:@var{[host]}:@var{port}}
+@itemx target extended-remote @code{tcp6:[@var{host}]:@var{port}}
 @cindex @acronym{TCP} port, @code{target remote}
 Debug using a @acronym{TCP} connection to @var{port} on @var{host}.
 The @var{host} may be either a host name, a numeric @acronym{IPv4}
@@ -21927,15 +22143,15 @@ target remote :1234
 Note that the colon is still required here.
 
 @item target remote @code{udp:@var{host}:@var{port}}
-@itemx target remote @code{udp:@var{[host]}:@var{port}}
+@itemx target remote @code{udp:[@var{host}]:@var{port}}
 @itemx target remote @code{udp4:@var{host}:@var{port}}
-@itemx target remote @code{udp6:@var{[host]}:@var{port}}
+@itemx target remote @code{udp6:[@var{host}]:@var{port}}
 @itemx target extended-remote @code{udp:@var{host}:@var{port}}
 @itemx target extended-remote @code{udp:@var{host}:@var{port}}
-@itemx target extended-remote @code{udp:@var{[host]}:@var{port}}
+@itemx target extended-remote @code{udp:[@var{host}]:@var{port}}
 @itemx target extended-remote @code{udp4:@var{host}:@var{port}}
 @itemx target extended-remote @code{udp6:@var{host}:@var{port}}
-@itemx target extended-remote @code{udp6:@var{[host]}:@var{port}}
+@itemx target extended-remote @code{udp6:[@var{host}]:@var{port}}
 @cindex @acronym{UDP} port, @code{target remote}
 Debug using @acronym{UDP} packets to @var{port} on @var{host}.  For example, to
 connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}:
@@ -22019,7 +22235,7 @@ and implement.
 @end table
 
 @node File Transfer
-@section Sending files to a remote system
+@section Sending Files to a Remote System
 @cindex remote target, file transfer
 @cindex file transfer
 @cindex sending files to remote systems
@@ -22185,7 +22401,7 @@ In case more than one copy of @var{progr
 has multiple threads, most versions of @code{pidof} support the
 @code{-s} option to only return the first process ID.
 
-@subsubsection TCP port allocation lifecycle of @code{gdbserver}
+@subsubsection TCP Port Allocation Lifecycle of @code{gdbserver}
 
 This section applies only when @code{gdbserver} is run to listen on a TCP
 port.
@@ -22374,7 +22590,7 @@ of a multi-process mode debug session.
 
 @end table
 
-@subsection Tracepoints support in @code{gdbserver}
+@subsection Tracepoints Support in @code{gdbserver}
 @cindex tracepoints support in @code{gdbserver}
 
 On some targets, @code{gdbserver} supports tracepoints, fast
@@ -23157,7 +23373,7 @@ subroutines which @code{@value{NGCC}} ge
 
 
 @node Debug Session
-@subsection Putting it All Together
+@subsection Putting It All Together
 
 @cindex remote serial debugging summary
 In summary, when your program is ready to debug, you must follow these
@@ -23318,8 +23534,8 @@ used to examine the image of a running p
 subroutines.  This facility is supported on @sc{gnu}/Linux and Solaris
 systems.
 
-On FreeBSD systems, system control nodes are used to query process
-information.
+On FreeBSD and NetBSD systems, system control nodes are used to query
+process information.
 
 In addition, some systems may provide additional process information
 in core files.  Note that a core file may include a subset of the
@@ -23349,17 +23565,17 @@ a process ID rather than a thread ID).
 @item info proc cmdline
 @cindex info proc cmdline
 Show the original command line of the process.  This command is
-supported on @sc{gnu}/Linux and FreeBSD.
+supported on @sc{gnu}/Linux, FreeBSD and NetBSD.
 
 @item info proc cwd
 @cindex info proc cwd
 Show the current working directory of the process.  This command is
-supported on @sc{gnu}/Linux and FreeBSD.
+supported on @sc{gnu}/Linux, FreeBSD and NetBSD.
 
 @item info proc exe
 @cindex info proc exe
 Show the name of executable of the process.  This command is supported
-on @sc{gnu}/Linux and FreeBSD.
+on @sc{gnu}/Linux, FreeBSD and NetBSD.
 
 @item info proc files
 @cindex info proc files
@@ -23394,9 +23610,9 @@ Open files:
 @item info proc mappings
 @cindex memory address space mappings
 Report the memory address space ranges accessible in a process.  On
-Solaris and FreeBSD systems, each memory range includes information on
-whether the process has read, write, or execute access rights to each
-range.  On @sc{gnu}/Linux and FreeBSD systems, each memory range
+Solaris, FreeBSD and NetBSD systems, each memory range includes information
+on whether the process has read, write, or execute access rights to each
+range.  On @sc{gnu}/Linux, FreeBSD and NetBSD systems, each memory range
 includes the object file which is mapped to that range.
 
 @item info proc stat
@@ -23406,13 +23622,13 @@ Show additional process-related informat
 group ID; virtual memory usage; the signals that are pending, blocked,
 and ignored; its TTY; its consumption of system and user time; its
 stack size; its @samp{nice} value; etc.  These commands are supported
-on @sc{gnu}/Linux and FreeBSD.
+on @sc{gnu}/Linux, FreeBSD and NetBSD.
 
 For @sc{gnu}/Linux systems, see the @samp{proc} man page for more
 information (type @kbd{man 5 proc} from your shell prompt).
 
-For FreeBSD systems, @code{info proc stat} is an alias for @code{info
-proc status}.
+For FreeBSD and NetBSD systems, @code{info proc stat} is an alias for
+@code{info proc status}.
 
 @item info proc all
 Show all the information about the process described under all of the
@@ -24197,6 +24413,7 @@ acceptable commands.
 @menu
 * ARC::                         Synopsys ARC
 * ARM::                         ARM
+* BPF::                         eBPF
 * M68K::                        Motorola M68K
 * MicroBlaze::			Xilinx MicroBlaze
 * MIPS Embedded::               MIPS Embedded
@@ -24331,6 +24548,22 @@ The default value is @code{all}.
 @end table
 @end table
 
+@node BPF
+@subsection BPF
+
+@table @code
+@item target sim @r{[}@var{simargs}@r{]} @dots{}
+The @value{GDBN} BPF simulator accepts the following optional arguments.
+
+@table @code
+@item --skb-data-offset=@var{offset}
+Tell the simulator the offset, measured in bytes, of the
+@code{skb_data} field in the kernel @code{struct sk_buff} structure.
+This offset is used by some BPF specific-purpose load/store
+instructions.  Defaults to 0.
+@end table
+@end table
+
 @node M68K
 @subsection M68k
 
@@ -24637,8 +24870,8 @@ Show whether AArch64 debugging messages
 
 @end table
 
-@subsubsection AArch64 SVE.
-@cindex AArch64 SVE.
+@subsubsection AArch64 SVE
+@cindex AArch64 SVE
 
 When @value{GDBN} is debugging the AArch64 architecture, if the Scalable Vector
 Extension (SVE) is present, then @value{GDBN} will provide the vector registers
@@ -24652,7 +24885,7 @@ but the lengths of the @code{z} and @cod
 is a known limitation of @value{GDBN} and does not affect the execution of the
 target process.
 
-@subsubsection AArch64 Pointer Authentication.
+@subsubsection AArch64 Pointer Authentication
 @cindex AArch64 Pointer Authentication.
 
 When @value{GDBN} is debugging the AArch64 architecture, and the program is
@@ -24663,7 +24896,7 @@ postfixed with the marker [PAC].  When u
 of the @code{addr_flags} field.
 
 @node i386
-@subsection x86 Architecture-specific Issues
+@subsection x86 Architecture-Specific Issues
 
 @table @code
 @item set struct-convention @var{mode}
@@ -25217,7 +25450,7 @@ history.
 @cindex history file
 @kindex set history filename
 @cindex @env{GDBHISTFILE}, environment variable
-@item set history filename @var{fname}
+@item set history filename @r{[}@var{fname}@r{]}
 Set the name of the @value{GDBN} command history file to @var{fname}.
 This is the file where @value{GDBN} reads an initial command history
 list, and where it writes the command history from this session when it
@@ -25227,15 +25460,29 @@ to the value of the environment variable
 @file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
 is not set.
 
+The @code{GDBHISTFILE} environment variable is read after processing
+any @value{GDBN} initialization files (@pxref{Startup}) and after
+processing any commands passed using command line options (for
+example, @code{-ex}).
+
+If the @var{fname} argument is not given, or if the @code{GDBHISTFILE}
+is the empty string then @value{GDBN} will neither try to load an
+existing history file, nor will it try to save the history on exit.
+
 @cindex save command history
 @kindex set history save
 @item set history save
 @itemx set history save on
 Record command history in a file, whose name may be specified with the
-@code{set history filename} command.  By default, this option is disabled.
+@code{set history filename} command.  By default, this option is
+disabled.  The command history will be recorded when @value{GDBN}
+exits.  If @code{set history filename} is set to the empty string then
+history saving is disabled, even when @code{set history save} is
+@code{on}.
 
 @item set history save off
-Stop recording command history in a file.
+Don't record the command history into the file specified by @code{set
+history filename} when @value{GDBN} exits.
 
 @cindex history size
 @kindex set history size
@@ -25249,6 +25496,11 @@ are ignored.  If @var{size} is @code{unl
 either a negative number or the empty string, then the number of commands
 @value{GDBN} keeps in the history list is unlimited.
 
+The @code{GDBHISTSIZE} environment variable is read after processing
+any @value{GDBN} initialization files (@pxref{Startup}) and after
+processing any commands passed using command line options (for
+example, @code{-ex}).
+
 @cindex remove duplicate history
 @kindex set history remove-duplicates
 @item set history remove-duplicates @var{count}
@@ -25649,7 +25901,7 @@ Set the current C@t{++} ABI to @var{abi}
 @end table
 
 @node Auto-loading
-@section Automatically loading associated files
+@section Automatically Loading Associated Files
 @cindex auto-loading
 
 @value{GDBN} sometimes reads files with commands and settings automatically,
@@ -25789,7 +26041,7 @@ These are @value{GDBN} control commands
 @end multitable
 
 @node Init File in the Current Directory
-@subsection Automatically loading init file in the current directory
+@subsection Automatically Loading Init File in the Current Directory
 @cindex auto-loading init file in the current directory
 
 By default, @value{GDBN} reads and executes the canned sequences of commands
@@ -25820,7 +26072,7 @@ current directory have been auto-loaded.
 @end table
 
 @node libthread_db.so.1 file
-@subsection Automatically loading thread debugging library
+@subsection Automatically Loading Thread Debugging Library
 @cindex auto-loading libthread_db.so.1
 
 This feature is currently present only on @sc{gnu}/Linux native hosts.
@@ -25858,7 +26110,7 @@ for each such library print list of infe
 @end table
 
 @node Auto-loading safe path
-@subsection Security restriction for auto-loading
+@subsection Security Restriction for Auto-Loading
 @cindex auto-loading safe-path
 
 As the files of inferior can come from untrusted source (such as submitted by
@@ -25872,7 +26124,7 @@ get loaded:
 
 @smallexample
 $ ./gdb -q ./gdb
-Reading symbols from /home/user/gdb/gdb...done.
+Reading symbols from /home/user/gdb/gdb...
 warning: File "/home/user/gdb/gdb-gdb.gdb" auto-loading has been
          declined by your `auto-load safe-path' set
          to "$debugdir:$datadir/auto-load".
@@ -25981,7 +26233,7 @@ own before starting the comparison so a
 recommended to be entered.
 
 @node Auto-loading verbose mode
-@subsection Displaying files tried for auto-load
+@subsection Displaying Files Tried for Auto-Load
 @cindex auto-loading verbose mode
 
 For better visibility of all the file locations where you can place scripts to
@@ -26501,7 +26753,7 @@ files.
 @end menu
 
 @node Define
-@subsection User-defined Commands
+@subsection User-Defined Commands
 
 @cindex user-defined command
 @cindex arguments, to user-defined commands
@@ -26676,7 +26928,7 @@ commands that normally print messages to
 messages when used in a user-defined command.
 
 @node Hooks
-@subsection User-defined Command Hooks
+@subsection User-Defined Command Hooks
 @cindex command hooks
 @cindex hooks, for commands
 @cindex hooks, pre-command
@@ -27041,7 +27293,7 @@ the string @var{template} to a command l
 @end table
 
 @node Auto-loading sequences
-@subsection Controlling auto-loading native @value{GDBN} scripts
+@subsection Controlling Auto-Loading Native @value{GDBN} Scripts
 @cindex native script auto-loading
 
 When a new object file is read (for example, due to the @code{file}
@@ -27082,7 +27334,7 @@ matching names are printed.
 @include guile.texi
 
 @node Auto-loading extensions
-@section Auto-loading extensions
+@section Auto-Loading Extensions
 @cindex auto-loading extensions
 
 @value{GDBN} provides two mechanisms for automatically loading extensions
@@ -27111,7 +27363,7 @@ Note that loading of this script file al
 @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
 
 @node objfile-gdbdotext file
-@subsection The @file{@var{objfile}-gdb.@var{ext}} file
+@subsection The @file{@var{objfile}-gdb.@var{ext}} File
 @cindex @file{@var{objfile}-gdb.gdb}
 @cindex @file{@var{objfile}-gdb.py}
 @cindex @file{@var{objfile}-gdb.scm}
@@ -27138,6 +27390,10 @@ script in the specified extension langua
 
 If this file does not exist, then @value{GDBN} will look for
 @var{script-name} file in all of the directories as specified below.
+(On MS-Windows/MS-DOS, the drive letter of the executable's leading
+directories is converted to a one-letter subdirectory, i.e.@:
+@file{d:/usr/bin/} is converted to @file{/d/usr/bin/}, because Windows
+filesystems disallow colons in file names.)
 
 Note that loading of these files requires an accordingly configured
 @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
@@ -27196,7 +27452,7 @@ So your @file{-gdb.@var{ext}} file shoul
 is evaluated more than once.
 
 @node dotdebug_gdb_scripts section
-@subsection The @code{.debug_gdb_scripts} section
+@subsection The @code{.debug_gdb_scripts} Section
 @cindex @code{.debug_gdb_scripts} section
 
 For systems using file formats like ELF and COFF,
@@ -27296,7 +27552,7 @@ The path to specify in @code{auto-load s
 containing the @code{.debug_gdb_scripts} section.
 
 @node Which flavor to choose?
-@subsection Which flavor to choose?
+@subsection Which Flavor to Choose?
 
 Given the multiple ways of auto-loading extensions, it might not always
 be clear which one to choose.  This section provides some guidance.
@@ -27357,7 +27613,7 @@ The Guile and Python extension languages
 and generally do not interfere with each other.
 There are some things to be aware of, however.
 
-@subsection Python comes first
+@subsection Python Comes First
 
 Python was @value{GDBN}'s first extension language, and to avoid breaking
 existing behaviour Python comes first.  This is generally solved by the
@@ -27371,7 +27627,7 @@ while, for example, trying to pretty-pri
 reported and any following extension languages are not tried.
 
 @node Aliases
-@section Creating new spellings of existing commands
+@section Creating New Spellings of Existing Commands
 @cindex aliases for commands
 
 It is often useful to define alternate spellings of existing commands.
@@ -27392,7 +27648,7 @@ You can define a new alias with the @sam
 @table @code
 
 @kindex alias
-@item alias [-a] [--] @var{ALIAS} = @var{COMMAND}
+@item alias [-a] [--] @var{ALIAS} = @var{COMMAND} [DEFAULT-ARGS...]
 
 @end table
 
@@ -27403,13 +27659,28 @@ underscores.
 @var{COMMAND} specifies the name of an existing command
 that is being aliased.
 
+@var{COMMAND} can also be the name of an existing alias.  In this case,
+@var{COMMAND} cannot be an alias that has default arguments.
+
 The @samp{-a} option specifies that the new alias is an abbreviation
-of the command.  Abbreviations are not shown in command
-lists displayed by the @samp{help} command.
+of the command.  Abbreviations are not used in command completion.
 
 The @samp{--} option specifies the end of options,
 and is useful when @var{ALIAS} begins with a dash.
 
+You can specify @var{default-args} for your alias.
+These @var{default-args} will be automatically added before the alias
+arguments typed explicitly on the command line.
+
+For example, the below defines an alias @code{btfullall} that shows all local
+variables and all frame arguments:
+@smallexample
+(@value{GDBP}) alias btfullall = backtrace -full -frame-arguments all
+@end smallexample
+
+For more information about @var{default-args}, see @ref{Command aliases default args,
+,Automatically prepend default arguments to user-defined aliases}.
+
 Here is a simple example showing how to make an abbreviation
 of a command so that there is less to type.
 Suppose you were tired of typing @samp{disas}, the current
@@ -27666,6 +27937,8 @@ source and registers, or
 assembly and registers.
 @end itemize
 
+These are the standard layouts, but other layouts can be defined.
+
 A status line above the command window shows the following information:
 
 @table @emph
@@ -27873,7 +28146,7 @@ SingleKey keymap will be named @samp{Sin
 @file{.inputrc} to add additional bindings to this keymap.
 
 @node TUI Commands
-@section TUI-specific Commands
+@section TUI-Specific Commands
 @cindex TUI commands
 
 The TUI has specific commands to control the text windows.
@@ -27902,11 +28175,63 @@ Disable TUI mode, returning to the conso
 @kindex info win
 List and give the size of all displayed windows.
 
+@item tui new-layout @var{name} @var{window} @var{weight} @r{[}@var{window} @var{weight}@dots{}@r{]}
+@kindex tui new-layout
+Create a new TUI layout.  The new layout will be named @var{name}, and
+can be accessed using the @code{layout} command (see below).
+
+Each @var{window} parameter is either the name of a window to display,
+or a window description.  The windows will be displayed from top to
+bottom in the order listed.
+
+The names of the windows are the same as the ones given to the
+@code{focus} command (see below); additional, the @code{status}
+window can be specified.  Note that, because it is of fixed height,
+the weight assigned to the status window is of no importance.  It is
+conventional to use @samp{0} here.
+
+A window description looks a bit like an invocation of @code{tui
+new-layout}, and is of the form
+@{@r{[}@code{-horizontal}@r{]}@var{window} @var{weight} @r{[}@var{window} @var{weight}@dots{}@r{]}@}.
+
+This specifies a sub-layout.  If @code{-horizontal} is given, the
+windows in this description will be arranged side-by-side, rather than
+top-to-bottom.
+
+Each @var{weight} is an integer.  It is the weight of this window
+relative to all the other windows in the layout.  These numbers are
+used to calculate how much of the screen is given to each window.
+
+For example:
+
+@example
+(gdb) tui new-layout example src 1 regs 1 status 0 cmd 1
+@end example
+
+Here, the new layout is called @samp{example}.  It shows the source
+and register windows, followed by the status window, and then finally
+the command window.  The non-status windows all have the same weight,
+so the terminal will be split into three roughly equal sections.
+
+Here is a more complex example, showing a horizontal layout:
+
+@example
+(gdb) tui new-layout example @{-horizontal src 1 asm 1@} 2 status 0 cmd 1
+@end example
+
+This will result in side-by-side source and assembly windows; with the
+status and command window being beneath these, filling the entire
+width of the terminal.  Because they have weight 2, the source and
+assembly windows will be twice the height of the command window.
+
 @item layout @var{name}
 @kindex layout
-Changes which TUI windows are displayed.  In each layout the command
-window is always displayed, the @var{name} parameter controls which
-additional windows are displayed, and can be any of the following:
+Changes which TUI windows are displayed.  The @var{name} parameter
+controls which layout is shown.  It can be either one of the built-in
+layout names, or the name of a layout defined by the user using
+@code{tui new-layout}.
+
+The built-in layouts are as follows:
 
 @table @code
 @item next
@@ -28353,7 +28678,7 @@ the user interface.
 @end menu
 
 @node Context management
-@subsection Context management
+@subsection Context Management
 
 @subsubsection Threads and Frames
 
@@ -28427,7 +28752,7 @@ The valid language names are the same na
 @samp{local} or @samp{unknown}.
 
 @node Asynchronous and non-stop modes
-@subsection Asynchronous command execution and non-stop mode
+@subsection Asynchronous Command Execution and Non-Stop Mode
 
 On some targets, @value{GDBN} is capable of processing MI commands
 even while the target is running.  This is called @dfn{asynchronous
@@ -28488,7 +28813,7 @@ highly target dependent.  However, the t
 to find the state of a thread, will always work.
 
 @node Thread groups
-@subsection Thread groups
+@subsection Thread Groups
 @value{GDBN} may be used to debug several processes at the same time.
 On some platforms, @value{GDBN} may support debugging of several
 hardware systems, each one having several cores with several different
@@ -28524,7 +28849,7 @@ groups can be obtained using @samp{-list
 In general, the content of a thread group may be only retrieved only
 after attaching to that thread group.
 
-Thread groups are related to inferiors (@pxref{Inferiors and
+Thread groups are related to inferiors (@pxref{Inferiors Connections and
 Programs}).  Each inferior corresponds to a thread group of a special
 type @samp{process}, and some additional operations are permitted on
 such thread groups.
@@ -28818,7 +29143,7 @@ recommended that front ends request a sp
 @value{GDBN} (e.g. @code{--interpreter=mi2}) to make sure they get an
 interpreter with the MI version they expect.
 
-The following table gives a summary of the the released versions of the MI
+The following table gives a summary of the released versions of the MI
 interface: the version number, the version of GDB in which it first appeared
 and the breaking changes compared to the previous version.
 
@@ -28996,7 +29321,7 @@ The following is the list of possible as
 
 @item *running,thread-id="@var{thread}"
 The target is now running.  The @var{thread} field can be the global
-thread ID of the the thread that is now running, and it can be
+thread ID of the thread that is now running, and it can be
 @samp{all} if all threads are running.  The frontend should assume
 that no interaction with a running thread is possible after this
 notification is produced.  The frontend should not assume that this
@@ -30635,7 +30960,7 @@ and @samp{tcatch catch} (@pxref{Set Catc
 
 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 @node GDB/MI Program Context
-@section @sc{gdb/mi}  Program Context
+@section @sc{gdb/mi} Program Context
 
 @subheading The @code{-exec-arguments} Command
 @findex -exec-arguments
@@ -32149,7 +32474,7 @@ access this functionality:
 In the next subsection we describe each operation in detail and suggest
 how it can be used.
 
-@subheading Description And Use of Operations on Variable Objects
+@subheading Description and Use of Operations on Variable Objects
 
 @subheading The @code{-enable-pretty-printing} Command
 @findex -enable-pretty-printing
@@ -32801,7 +33126,7 @@ children will be reported.  Otherwise, c
 ^done
 @end smallexample
 
-@subheading The @code{-var-set-visualizer} command
+@subheading The @code{-var-set-visualizer} Command
 @findex -var-set-visualizer
 @anchor{-var-set-visualizer}
 
@@ -35903,7 +36228,7 @@ popup menu, but is needless clutter on t
 -add-inferior
 @end smallexample
 
-Creates a new inferior (@pxref{Inferiors and Programs}).  The created
+Creates a new inferior (@pxref{Inferiors Connections and Programs}).  The created
 inferior is not associated with any executable.  Such association may
 be established with the @samp{-file-exec-and-symbols} command
 (@pxref{GDB/MI File Commands}).  The command response has a single
@@ -36134,7 +36459,7 @@ This is Edition @value{EDITION}, @value{
 @end menu
 
 @node Annotations Overview
-@section What is an Annotation?
+@section What Is an Annotation?
 @cindex annotations
 
 Annotations start with a newline character, two @samp{control-z}
@@ -36686,8 +37011,8 @@ frame and to write out the values of the
 frame.  Both have a callback (@code{target_read}) to read bytes off the
 target's address space.
 
-@node In-Process Agent
-@chapter In-Process Agent
+@node In-process Agent
+@chapter In-process Agent
 @cindex debugging agent
 The traditional debugging model is conceptually low-speed, but works fine,
 because most bugs can be reproduced in debugging-mode execution.  However,
@@ -36706,7 +37031,7 @@ behavior without interrupting it.
 Therefore, traditional debugging model is too intrusive to reproduce
 some bugs.  In order to reduce the interference with the program, we can
 reduce the number of operations performed by debugger.  The
-@dfn{In-Process Agent}, a shared library, is running within the same
+@dfn{In-process Agent}, a shared library, is running within the same
 process with inferior, and is able to perform some debugging operations
 itself.  As a result, debugger is only involved when necessary, and
 performance of debugging can be improved accordingly.  Note that
@@ -36744,15 +37069,15 @@ the in-process agent.
 @end table
 
 @menu
-* In-Process Agent Protocol::
+* In-process Agent Protocol::
 @end menu
 
-@node In-Process Agent Protocol
-@section In-Process Agent Protocol
+@node In-process Agent Protocol
+@section In-process Agent Protocol
 @cindex in-process agent protocol
 
 The in-process agent is able to communicate with both @value{GDBN} and
-GDBserver (@pxref{In-Process Agent}).  This section documents the protocol
+GDBserver (@pxref{In-process Agent}).  This section documents the protocol
 used for communications between @value{GDBN} or GDBserver and the IPA.
 In general, @value{GDBN} or GDBserver sends commands
 (@pxref{IPA Protocol Commands}) and data to in-process agent, and then
@@ -37705,6 +38030,14 @@ supported).
 Use the curses library instead of the termcap library, for text-mode
 terminal operations.
 
+@item --with-debuginfod
+Build @value{GDBN} with libdebuginfod, the debuginfod client library.
+Used to automatically fetch source files and separate debug files from
+debuginfod servers using the associated executable's build ID. Enabled
+by default if libdebuginfod is installed and found at configure time.
+debuginfod is packaged with elfutils, starting with version 0.178. You
+can get the latest version from `https://sourceware.org/elfutils/'.
+
 @item --with-libunwind-ia64
 Use the libunwind library for unwinding function call stack on ia64
 target platforms.  See http://www.nongnu.org/libunwind/index.html for
@@ -37831,7 +38164,7 @@ was first introduced in GCC 4.9.
 @end table
 
 @node System-wide configuration
-@section System-wide configuration and settings
+@section System-Wide Configuration and Settings
 @cindex system-wide init file
 
 @value{GDBN} can be configured to have a system-wide init file and a
@@ -37894,7 +38227,7 @@ extension.
 @end menu
 
 @node System-wide Configuration Scripts
-@subsection Installed System-wide Configuration Scripts
+@subsection Installed System-Wide Configuration Scripts
 @cindex system-wide configuration scripts
 
 The @file{system-gdbinit} directory, located inside the data-directory
@@ -37959,7 +38292,7 @@ If not, generate remote agent bytecode f
 Translate the given format string and list of argument expressions
 into remote agent bytecodes and display them as a disassembled list.
 This command is useful for debugging the agent version of dynamic
-printf (@pxref{Dynamic Printf}).
+printf (@pxref{Dynamic printf}).
 
 @kindex maint info breakpoints
 @item @anchor{maint info breakpoints}maint info breakpoints
@@ -38224,6 +38557,15 @@ The created source file is built into @v
 built again.  This command is used by developers after they add or
 modify XML target descriptions.
 
+@kindex maint print xml-tdesc
+@item maint print xml-tdesc  @r{[}@var{file}@r{]}
+Print the target description (@pxref{Target Descriptions}) as an XML
+file.  By default print the target description for the current target,
+but if the optional argument @var{file} is provided, then that file is
+read in by GDB and then used to produce the description.  The
+@var{file} should be an XML document, of the form described in
+@ref{Target Description Format}.
+
 @kindex maint check xml-descriptions
 @item maint check xml-descriptions @var{dir}
 Check that the target descriptions dynamically created by @value{GDBN}
@@ -38239,6 +38581,14 @@ library.  This exercises all @code{libth
 @code{libthread_db} uses.  Note that parts of the test may be skipped
 on some platforms when debugging core files.
 
+@kindex maint print core-file-backed-mappings
+@cindex memory address space mappings
+@item maint print core-file-backed-mappings
+Print the file-backed mappings which were loaded from a core file note.
+This output represents state internal to @value{GDBN} and should be
+similar to the mappings displayed by the @code{info proc mappings}
+command.
+
 @kindex maint print dummy-frames
 @item maint print dummy-frames
 Prints the contents of @value{GDBN}'s internal dummy-frame stack.
@@ -38460,10 +38810,10 @@ On capable hosts, @value{GDBN} may use m
 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{0} (disabled).  A value of @code{unlimited} 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.
+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
@@ -38841,12 +39191,15 @@ For any @var{command} not supported by t
 protocol.  A newer @value{GDBN} can tell if a packet is supported based
 on that response.
 
-At a minimum, a stub is required to support the @samp{g} and @samp{G}
+At a minimum, a stub is required to support the @samp{?} command to
+tell @value{GDBN} the reason for halting, @samp{g} and @samp{G}
 commands for register access, and the @samp{m} and @samp{M} commands
 for memory access.  Stubs that only control single-threaded targets
-can implement run control with the @samp{c} (continue), and @samp{s}
-(step) commands.  Stubs that support multi-threading targets should
-support the @samp{vCont} command.  All other commands are optional.
+can implement run control with the @samp{c} (continue) command, and if
+the target architecture supports hardware-assisted single-stepping,
+the @samp{s} (step) command.  Stubs that support multi-threading
+targets should support the @samp{vCont} command.  All other commands
+are optional.
 
 @node Packets
 @section Packets
@@ -41719,7 +42072,7 @@ details of XML target descriptions for e
 @end menu
 
 @node ARM-Specific Protocol Details
-@subsection @acronym{ARM}-specific Protocol Details
+@subsection @acronym{ARM}-Specific Protocol Details
 
 @menu
 * ARM Breakpoint Kinds::
@@ -41745,7 +42098,7 @@ These breakpoint kinds are defined for t
 @end table
 
 @node MIPS-Specific Protocol Details
-@subsection @acronym{MIPS}-specific Protocol Details
+@subsection @acronym{MIPS}-Specific Protocol Details
 
 @menu
 * MIPS Register packet Format::
@@ -42284,7 +42637,7 @@ types include @code{user}, @code{notes},
 
 @end table
 
-@subsection Relocate instruction reply packet
+@subsection Relocate Instruction Reply Packet
 When installing fast tracepoints in memory, the target may need to
 relocate the instruction currently at the tracepoint address to a
 different address in memory.  For most instructions, a simple copy is
@@ -42363,7 +42716,7 @@ The valid responses to Host I/O packets
 @var{result} is the integer value returned by this operation, usually
 non-negative for success and -1 for errors.  If an error has occured,
 @var{errno} will be included in the result specifying a
-value defined by the File-I/O protocol (@pxref{Errno Values}).  For
+value defined by the File-I/O protocol (@pxref{errno Values}).  For
 operations which return data, @var{attachment} supplies the data as a
 binary buffer.  Binary buffers in response packets are escaped in the
 normal way (@pxref{Binary Data}).  See the individual packet
@@ -43601,7 +43954,7 @@ protocol.
 @end table
 
 @node Protocol-specific Representation of Datatypes
-@subsection Protocol-specific Representation of Datatypes
+@subsection Protocol-Specific Representation of Datatypes
 @cindex protocol-specific representation of datatypes, in file-i/o protocol
 
 @menu
@@ -43764,7 +44117,7 @@ values before and after the call as need
 @menu
 * Open Flags::
 * mode_t Values::
-* Errno Values::
+* errno Values::
 * Lseek Flags::
 * Limits::
 @end menu
@@ -43805,8 +44158,8 @@ All values are given in octal representa
   S_IXOTH            01
 @end smallexample
 
-@node Errno Values
-@unnumberedsubsubsec Errno Values
+@node errno Values
+@unnumberedsubsubsec errno Values
 @cindex errno values, in file-i/o protocol
 
 All values are given in decimal representation.
@@ -44912,40 +45265,48 @@ it should contain registers @samp{pauth_
 @subsection ARC Features
 @cindex target descriptions, ARC Features
 
-ARC processors are highly configurable, so even core registers and their number
-are not completely predetermined.  In addition flags and PC registers which are
-important to @value{GDBN} are not ``core'' registers in ARC.  It is required
-that one of the core registers features is present.
-@samp{org.gnu.gdb.arc.aux-minimal} feature is mandatory.
-
-The @samp{org.gnu.gdb.arc.core.v2} feature is required for ARC EM and ARC HS
-targets with a normal register file.  It should contain registers @samp{r0}
-through @samp{r25}, @samp{gp}, @samp{fp}, @samp{sp}, @samp{r30}, @samp{blink},
-@samp{lp_count} and @samp{pcl}.  This feature may contain register @samp{ilink}
-and any of extension core registers @samp{r32} through @samp{r59/acch}.
-@samp{ilink} and extension core registers are not available to read/write, when
-debugging GNU/Linux applications, thus @samp{ilink} is made optional.
-
-The @samp{org.gnu.gdb.arc.core-reduced.v2} feature is required for ARC EM and
-ARC HS targets with a reduced register file.  It should contain registers
-@samp{r0} through @samp{r3}, @samp{r10} through @samp{r15}, @samp{gp},
-@samp{fp}, @samp{sp}, @samp{r30}, @samp{blink}, @samp{lp_count} and @samp{pcl}.
-This feature may contain register @samp{ilink} and any of extension core
-registers @samp{r32} through @samp{r59/acch}.
-
-The @samp{org.gnu.gdb.arc.core.arcompact} feature is required for ARCompact
-targets with a normal register file.  It should contain registers @samp{r0}
-through @samp{r25}, @samp{gp}, @samp{fp}, @samp{sp}, @samp{r30}, @samp{blink},
-@samp{lp_count} and @samp{pcl}.  This feature may contain registers
-@samp{ilink1}, @samp{ilink2} and any of extension core registers @samp{r32}
-through @samp{r59/acch}.  @samp{ilink1} and @samp{ilink2} and extension core
-registers are not available when debugging GNU/Linux applications.  The only
-difference with @samp{org.gnu.gdb.arc.core.v2} feature is in the names of
-@samp{ilink1} and @samp{ilink2} registers and that @samp{r30} is mandatory in
-ARC v2, but @samp{ilink2} is optional on ARCompact.
+ARC processors are so configurable that even core registers and their numbers
+are not predetermined completely.  Moreover, @emph{flags} and @emph{PC}
+registers, which are important to @value{GDBN}, are not ``core'' registers in
+ARC.  Therefore, there are two features that their presence is mandatory:
+@samp{org.gnu.gdb.arc.core} and @samp{org.gnu.gdb.arc.aux}.
 
-The @samp{org.gnu.gdb.arc.aux-minimal} feature is required for all ARC
-targets.  It should contain registers @samp{pc} and @samp{status32}.
+The @samp{org.gnu.gdb.arc.core} feature is required for all targets.  It must
+contain registers:
+
+@itemize @minus
+@item
+@samp{r0} through @samp{r25} for normal register file targets.
+@item
+@samp{r0} through @samp{r3}, and @samp{r10} through @samp{r15} for reduced
+register file targets.
+@item
+@samp{gp}, @samp{fp}, @samp{sp}, @samp{r30}@footnote{Not necessary for ARCv1.},
+@samp{blink}, @samp{lp_count}, @samp{pcl}.
+@end itemize
+
+In case of an ARCompact target (ARCv1 ISA), the @samp{org.gnu.gdb.arc.core}
+feature may contain registers @samp{ilink1} and @samp{ilink2}.  While in case
+of ARC EM and ARC HS targets (ARCv2 ISA), register @samp{ilink} may be present.
+The difference between ARCv1 and ARCv2 is the naming of registers @emph{29th}
+and @emph{30th}.  They are called @samp{ilink1} and @samp{ilink2} for ARCv1 and
+are optional.  For ARCv2, they are called @samp{ilink} and @samp{r30} and only
+@samp{ilink} is optional.  The optionality of @samp{ilink*} registers is
+because of their inaccessibility during user space debugging sessions.
+
+Extension core registers @samp{r32} through @samp{r59} are optional and their
+existence depends on the configuration.  When debugging GNU/Linux applications,
+i.e.@: user space debugging, these core registers are not available.
+
+The @samp{org.gnu.gdb.arc.aux} feature is required for all ARC targets.  Here
+is the list of registers pertinent to this feature:
+
+@itemize @minus
+@item
+mandatory: @samp{pc} and @samp{status32}.
+@item
+optional: @samp{lp_start}, @samp{lp_end}, and @samp{bta}.
+@end itemize
 
 @node ARM Features
 @subsection ARM Features
@@ -45141,6 +45502,12 @@ used.  The feature that is present shoul
 This feature is optional.  If present, it should contain registers
 @samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and
 @samp{fpiaddr}.
+
+Note that, despite the fact that this feature's name says
+@samp{coldfire}, it is used to describe any floating point registers.
+The size of the registers must match the main m68k flavor; so, for
+example, if the primary feature is reported as @samp{coldfire}, then
+64-bit floating point registers are required.
 @end table
 
 @node NDS32 Features
@@ -45176,7 +45543,7 @@ targets.  It should contain the 32 core
 @samp{mpuacc}).
 
 @node OpenRISC 1000 Features
-@subsection Openrisc 1000 Features
+@subsection OpenRISC 1000 Features
 @cindex target descriptions, OpenRISC 1000 features
 
 The @samp{org.gnu.gdb.or1k.group0} feature is required for OpenRISC 1000
@@ -46189,11 +46556,11 @@ command, otherwise you may get an error
 @command{gdbserver} can also debug multiple inferiors at once,
 described in
 @ifset man
-the @value{GDBN} manual in node @code{Inferiors and Programs}
--- shell command @code{info -f gdb -n 'Inferiors and Programs'}.
+the @value{GDBN} manual in node @code{Inferiors Connections and Programs}
+-- shell command @code{info -f gdb -n 'Inferiors Connections and Programs'}.
 @end ifset
 @ifclear man
-@ref{Inferiors and Programs}.
+@ref{Inferiors Connections and Programs}.
 @end ifclear
 In such case use the @code{extended-remote} @value{GDBN} command variant:
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/guile.texi ./gdb/doc/guile.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/guile.texi	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/guile.texi	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-@c Copyright (C) 2008-2020 Free Software Foundation, Inc.
+@c Copyright (C) 2008--2021 Free Software Foundation, Inc.
 @c Permission is granted to copy, distribute and/or modify this document
 @c under the terms of the GNU Free Documentation License, Version 1.3 or
 @c any later version published by the Free Software Foundation; with the
@@ -38,8 +38,7 @@ Guile support in @value{GDBN} follows th
 reasonably closely, so concepts there should carry over.
 However, some things are done differently where it makes sense.
 
-@value{GDBN} requires Guile version 2.0 or greater.
-Older versions are not supported.
+@value{GDBN} requires Guile version 3.0, 2.2, or 2.0.
 
 @cindex guile scripts directory
 Guile scripts used by @value{GDBN} should be installed in
@@ -2155,7 +2154,7 @@ A program space, or @dfn{progspace}, rep
 of an address space.
 It consists of all of the objfiles of the program.
 @xref{Objfiles In Guile}.
-@xref{Inferiors and Programs, program spaces}, for more details
+@xref{Inferiors Connections and Programs, program spaces}, for more details
 about program spaces.
 
 Each progspace is represented by an instance of the @code{<gdb:progspace>}
@@ -2178,7 +2177,7 @@ if the program it refers to is not loade
 @deffn {Scheme Procedure} current-progspace
 This function returns the program space of the currently selected inferior.
 There is always a current progspace, this never returns @code{#f}.
-@xref{Inferiors and Programs}.
+@xref{Inferiors Connections and Programs}.
 @end deffn
 
 @deffn {Scheme Procedure} progspaces
@@ -3559,21 +3558,36 @@ inclusive.
 @deffn {Scheme Procedure} memory-port-read-buffer-size memory-port
 Return the size of the read buffer of @code{<gdb:memory-port>}
 @var{memory-port}.
+
+This procedure is deprecated and will be removed in @value{GDBN} 11.
+It returns 0 when using Guile 2.2 or later.
 @end deffn
 
 @deffn {Scheme Procedure} set-memory-port-read-buffer-size! memory-port size
 Set the size of the read buffer of @code{<gdb:memory-port>}
 @var{memory-port} to @var{size}.  The result is unspecified.
+
+This procedure is deprecated and will be removed in @value{GDBN} 11.
+When @value{GDBN} is built with Guile 2.2 or later, you can call
+@code{setvbuf} instead (@pxref{Buffering, @code{setvbuf},, guile, GNU
+Guile Reference Manual}).
 @end deffn
 
 @deffn {Scheme Procedure} memory-port-write-buffer-size memory-port
 Return the size of the write buffer of @code{<gdb:memory-port>}
 @var{memory-port}.
+
+This procedure is deprecated and will be removed in @value{GDBN} 11.
+It returns 0 when @value{GDBN} is built with Guile 2.2 or later.
 @end deffn
 
 @deffn {Scheme Procedure} set-memory-port-write-buffer-size! memory-port size
 Set the size of the write buffer of @code{<gdb:memory-port>}
 @var{memory-port} to @var{size}.  The result is unspecified.
+
+This procedure is deprecated and will be removed in @value{GDBN} 11.
+When @value{GDBN} is built with Guile 2.2 or later, you can call
+@code{setvbuf} instead.
 @end deffn
 
 A memory port is closed like any other port, with @code{close-port}.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/Makefile.in ./gdb/doc/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/Makefile.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/Makefile.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-##Copyright (C) 1991-2020 Free Software Foundation, Inc.
+##Copyright (C) 1991-2021 Free Software Foundation, Inc.
 
 # Makefile for GDB documentation.
 # This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/python.texi ./gdb/doc/python.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/python.texi	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/python.texi	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-@c Copyright (C) 2008-2020 Free Software Foundation, Inc.
+@c Copyright (C) 2008--2021 Free Software Foundation, Inc.
 @c Permission is granted to copy, distribute and/or modify this document
 @c under the terms of the GNU Free Documentation License, Version 1.3 or
 @c any later version published by the Free Software Foundation; with the
@@ -163,6 +163,8 @@ optional arguments while skipping others
                                 using Python.
 * Lazy Strings In Python::      Python representation of lazy strings.
 * Architectures In Python::     Python representation of architectures.
+* Registers In Python::         Python representation of registers.
+* TUI Windows In Python::       Implementing new TUI windows.
 @end menu
 
 @node Basic Python
@@ -919,7 +921,7 @@ identify the @emph{actual} (derived) typ
 the @emph{declared} type should be used.  (See @code{set print object} in
 @ref{Print Settings}).
 
-@item static_fields
+@item static_members
 @code{True} if static members should be included in the string
 representation of a C@t{++} object, @code{False} if they shouldn't (see
 @code{set print static-members} in @ref{Print Settings}).
@@ -1067,6 +1069,29 @@ The type code for this type.  The type c
 @code{TYPE_CODE_} constants defined below.
 @end defvar
 
+@defvar Type.dynamic
+A boolean indicating whether this type is dynamic.  In some
+situations, such as Rust @code{enum} types or Ada variant records, the
+concrete type of a value may vary depending on its contents.  That is,
+the declared type of a variable, or the type returned by
+@code{gdb.lookup_type} may be dynamic; while the type of the
+variable's value will be a concrete instance of that dynamic type.
+
+For example, consider this code:
+@smallexample
+int n;
+int array[n];
+@end smallexample
+
+Here, at least conceptually (whether your compiler actually does this
+is a separate issue), examining @w{@code{gdb.lookup_symbol("array", ...).type}}
+could yield a @code{gdb.Type} which reports a size of @code{None}.
+This is the dynamic type.
+
+However, examining @code{gdb.parse_and_eval("array").type} would yield
+a concrete type, whose length would be known.
+@end defvar
+
 @defvar Type.name
 The name of this type.  If this type has no name, then @code{None}
 is returned.
@@ -1075,7 +1100,9 @@ is returned.
 @defvar Type.sizeof
 The size of this type, in target @code{char} units.  Usually, a
 target's @code{char} type will be an 8-bit byte.  However, on some
-unusual platforms, this type may have a different size.
+unusual platforms, this type may have a different size.  A dynamic
+type may not have a fixed size; in this case, this attribute's value
+will be @code{None}.
 @end defvar
 
 @defvar Type.tag
@@ -1105,7 +1132,10 @@ Each field is a @code{gdb.Field} object,
 @item bitpos
 This attribute is not available for @code{enum} or @code{static}
 (as in C@t{++}) fields.  The value is the position, counting
-in bits, from the start of the containing type.
+in bits, from the start of the containing type.  Note that, in a
+dynamic type, the position of a field may not be constant.  In this
+case, the value will be @code{None}.  Also, a dynamic type may have
+fields that do not appear in a corresponding concrete type.
 
 @item enumval
 This attribute is only available for @code{enum} fields, and its value
@@ -2428,12 +2458,11 @@ provides a method to read frame's regist
 
 @defun PendingFrame.read_register (reg)
 This method returns the contents of the register @var{reg} in the
-frame as a @code{gdb.Value} object.  @var{reg} can be either a
-register number or a register name; the values are platform-specific.
-They are usually found in the corresponding
-@file{@var{platform}-tdep.h} file in the @value{GDBN} source tree.  If
-@var{reg} does not name a register for the current architecture, this
-method will throw an exception.
+frame as a @code{gdb.Value} object.  For a description of the
+acceptable values of @var{reg} see
+@ref{gdbpy_frame_read_register,,Frame.read_register}.  If @var{reg}
+does not name a register for the current architecture, this method
+will throw an exception.
 
 Note that this method will always return a @code{gdb.Value} for a
 valid register name.  This does not mean that the value will be valid.
@@ -2489,6 +2518,12 @@ Each attribute value should be an instan
 
 @end defun
 
+@defun PendingFrame.architecture ()
+Return the @code{gdb.Architecture} (@pxref{Architectures In Python})
+for this @code{gdb.PendingFrame}.  This represents the architecture of
+the particular frame being unwound.
+@end defun
+
 @subheading Unwinder Output: UnwindInfo
 
 Use @code{PendingFrame.create_unwind_info} method described above to
@@ -2496,8 +2531,8 @@ create a @code{gdb.UnwindInfo} instance.
 specify caller registers that have been saved in this frame:
 
 @defun gdb.UnwindInfo.add_saved_register (reg, value)
-@var{reg} identifies the register.  It can be a number or a name, just
-as for the @code{PendingFrame.read_register} method above.
+@var{reg} identifies the register, for a description of the acceptable
+values see @ref{gdbpy_frame_read_register,,Frame.read_register}.
 @var{value} is a register value (a @code{gdb.Value} object).
 @end defun
 
@@ -2928,7 +2963,7 @@ itself.
 
 @findex gdb.Inferior
 Programs which are being run under @value{GDBN} are called inferiors
-(@pxref{Inferiors and Programs}).  Python scripts can access
+(@pxref{Inferiors Connections and Programs}).  Python scripts can access
 information about and manipulate inferiors controlled by @value{GDBN}
 via objects of the @code{gdb.Inferior} class.
 
@@ -3294,7 +3329,7 @@ is no selected thread, this will return
 @end defun
 
 To get the list of threads for an inferior, use the @code{Inferior.threads()}
-method.  @xref{Inferiors In Python}
+method.  @xref{Inferiors In Python}.
 
 A @code{gdb.InferiorThread} object has the following attributes:
 
@@ -3800,6 +3835,13 @@ The command has to do with tracepoints.
 @kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
 commands in this category.
 
+@findex COMMAND_TUI
+@findex gdb.COMMAND_TUI
+@item gdb.COMMAND_TUI
+The command has to do with the text user interface (@pxref{TUI}).
+Type @kbd{help tui} at the @value{GDBN} prompt to see a list of
+commands in this category.
+
 @findex COMMAND_USER
 @findex gdb.COMMAND_USER
 @item gdb.COMMAND_USER
@@ -4161,7 +4203,7 @@ A program space, or @dfn{progspace}, rep
 of an address space.
 It consists of all of the objfiles of the program.
 @xref{Objfiles In Python}.
-@xref{Inferiors and Programs, program spaces}, for more details
+@xref{Inferiors Connections and Programs, program spaces}, for more details
 about program spaces.
 
 The following progspace-related functions are available in the
@@ -4170,7 +4212,7 @@ The following progspace-related function
 @findex gdb.current_progspace
 @defun gdb.current_progspace ()
 This function returns the program space of the currently selected inferior.
-@xref{Inferiors and Programs}.  This is identical to
+@xref{Inferiors Connections and Programs}.  This is identical to
 @code{gdb.selected_inferior().progspace} (@pxref{Inferiors In Python}) and is
 included for historical compatibility.
 @end defun
@@ -4279,7 +4321,7 @@ gdb.events.clear_objfiles.connect(clear_
 gdb.events.new_objfile.connect(new_objfile_handler)
 end
 (gdb) file /tmp/hello
-Reading symbols from /tmp/hello...done.
+Reading symbols from /tmp/hello...
 Computing the answer to the ultimate question ...
 (gdb) python print gdb.current_progspace().expensive_computation
 42
@@ -4418,7 +4460,7 @@ def new_objfile_handler(event):
 gdb.events.new_objfile.connect(new_objfile_handler)
 end
 (gdb) file ./hello
-Reading symbols from ./hello...done.
+Reading symbols from ./hello...
 (gdb) python print gdb.objfiles()[0].time_loaded
 2014-10-09 11:41:36.770345
 @end smallexample
@@ -4642,11 +4684,31 @@ Return the frame's symtab and line objec
 @xref{Symbol Tables In Python}.
 @end defun
 
+@anchor{gdbpy_frame_read_register}
 @defun Frame.read_register (register)
-Return the value of @var{register} in this frame.  The @var{register}
-argument must be a string (e.g., @code{'sp'} or @code{'rax'}).
-Returns a @code{Gdb.Value} object.  Throws an exception if @var{register}
-does not exist.
+Return the value of @var{register} in this frame.  Returns a
+@code{Gdb.Value} object.  Throws an exception if @var{register} does
+not exist.  The @var{register} argument must be one of the following:
+@enumerate
+@item
+A string that is the name of a valid register (e.g., @code{'sp'} or
+@code{'rax'}).
+@item
+A @code{gdb.RegisterDescriptor} object (@pxref{Registers In Python}).
+@item
+A @value{GDBN} internal, platform specific number.  Using these
+numbers is supported for historic reasons, but is not recommended as
+future changes to @value{GDBN} could change the mapping between
+numbers and the registers they represent, breaking any Python code
+that uses the platform-specific numbers.  The numbers are usually
+found in the corresponding @file{@var{platform}-tdep.h} file in the
+@value{GDBN} source tree.
+@end enumerate
+Using a string to access registers will be slightly slower than the
+other two methods as @value{GDBN} must look up the mapping between
+name and internal register number.  If performance is critical
+consider looking up and caching a @code{gdb.RegisterDescriptor}
+object.
 @end defun
 
 @defun Frame.read_var (variable @r{[}, block@r{]})
@@ -5673,6 +5735,182 @@ instruction in bytes.
 @end table
 @end defun
 
+@anchor{gdbpy_architecture_registers}
+@defun Architecture.registers (@r{[} @var{reggroup} @r{]})
+Return a @code{gdb.RegisterDescriptorIterator} (@pxref{Registers In
+Python}) for all of the registers in @var{reggroup}, a string that is
+the name of a register group.  If @var{reggroup} is omitted, or is the
+empty string, then the register group @samp{all} is assumed.
+@end defun
+
+@anchor{gdbpy_architecture_reggroups}
+@defun Architecture.register_groups ()
+Return a @code{gdb.RegisterGroupsIterator} (@pxref{Registers In
+Python}) for all of the register groups available for the
+@code{gdb.Architecture}.
+@end defun
+
+@node Registers In Python
+@subsubsection Registers In Python
+@cindex Registers In Python
+
+Python code can request from a @code{gdb.Architecture} information
+about the set of registers available
+(@pxref{gdbpy_architecture_registers,,@code{Architecture.registers}}).
+The register information is returned as a
+@code{gdb.RegisterDescriptorIterator}, which is an iterator that in
+turn returns @code{gdb.RegisterDescriptor} objects.
+
+A @code{gdb.RegisterDescriptor} does not provide the value of a
+register (@pxref{gdbpy_frame_read_register,,@code{Frame.read_register}}
+for reading a register's value), instead the @code{RegisterDescriptor}
+is a way to discover which registers are available for a particular
+architecture.
+
+A @code{gdb.RegisterDescriptor} has the following read-only properties:
+
+@defvar RegisterDescriptor.name
+The name of this register.
+@end defvar
+
+It is also possible to lookup a register descriptor based on its name
+using the following @code{gdb.RegisterDescriptorIterator} function:
+
+@defun RegisterDescriptorIterator.find (@var{name})
+Takes @var{name} as an argument, which must be a string, and returns a
+@code{gdb.RegisterDescriptor} for the register with that name, or
+@code{None} if there is no register with that name.
+@end defun
+
+Python code can also request from a @code{gdb.Architecture}
+information about the set of register groups available on a given
+architecture
+(@pxref{gdbpy_architecture_reggroups,,@code{Architecture.register_groups}}).
+
+Every register can be a member of zero or more register groups.  Some
+register groups are used internally within @value{GDBN} to control
+things like which registers must be saved when calling into the
+program being debugged (@pxref{Calling,,Calling Program Functions}).
+Other register groups exist to allow users to easily see related sets
+of registers in commands like @code{info registers}
+(@pxref{info_registers_reggroup,,@code{info registers
+@var{reggroup}}}).
+
+The register groups information is returned as a
+@code{gdb.RegisterGroupsIterator}, which is an iterator that in turn
+returns @code{gdb.RegisterGroup} objects.
+
+A @code{gdb.RegisterGroup} object has the following read-only
+properties:
+
+@defvar RegisterGroup.name
+A string that is the name of this register group.
+@end defvar
+
+@node TUI Windows In Python
+@subsubsection Implementing new TUI windows
+@cindex Python TUI Windows
+
+New TUI (@pxref{TUI}) windows can be implemented in Python.
+
+@findex gdb.register_window_type
+@defun gdb.register_window_type (@var{name}, @var{factory})
+Because TUI windows are created and destroyed depending on the layout
+the user chooses, new window types are implemented by registering a
+factory function with @value{GDBN}.
+
+@var{name} is the name of the new window.  It's an error to try to
+replace one of the built-in windows, but other window types can be
+replaced.
+
+@var{function} is a factory function that is called to create the TUI
+window.  This is called with a single argument of type
+@code{gdb.TuiWindow}, described below.  It should return an object
+that implements the TUI window protocol, also described below.
+@end defun
+
+As mentioned above, when a factory function is called, it is passed a
+an object of type @code{gdb.TuiWindow}.  This object has these
+methods and attributes:
+
+@defun TuiWindow.is_valid ()
+This method returns @code{True} when this window is valid.  When the
+user changes the TUI layout, windows no longer visible in the new
+layout will be destroyed.  At this point, the @code{gdb.TuiWindow}
+will no longer be valid, and methods (and attributes) other than
+@code{is_valid} will throw an exception.
+@end defun
+
+@defvar TuiWindow.width
+This attribute holds the width of the window.  It is not writable.
+@end defvar
+
+@defvar TuiWindow.height
+This attribute holds the height of the window.  It is not writable.
+@end defvar
+
+@defvar TuiWindow.title
+This attribute holds the window's title, a string.  This is normally
+displayed above the window.  This attribute can be modified.
+@end defvar
+
+@defun TuiWindow.erase ()
+Remove all the contents of the window.
+@end defun
+
+@defun TuiWindow.write (@var{string})
+Write @var{string} to the window.  @var{string} can contain ANSI
+terminal escape styling sequences; @value{GDBN} will translate these
+as appropriate for the terminal.
+@end defun
+
+The factory function that you supply should return an object
+conforming to the TUI window protocol.  These are the method that can
+be called on this object, which is referred to below as the ``window
+object''.  The methods documented below are optional; if the object
+does not implement one of these methods, @value{GDBN} will not attempt
+to call it.  Additional new methods may be added to the window
+protocol in the future.  @value{GDBN} guarantees that they will begin
+with a lower-case letter, so you can start implementation methods with
+upper-case letters or underscore to avoid any future conflicts.
+
+@defun Window.close ()
+When the TUI window is closed, the @code{gdb.TuiWindow} object will be
+put into an invalid state.  At this time, @value{GDBN} will call
+@code{close} method on the window object.
+
+After this method is called, @value{GDBN} will discard any references
+it holds on this window object, and will no longer call methods on
+this object.
+@end defun
+
+@defun Window.render ()
+In some situations, a TUI window can change size.  For example, this
+can happen if the user resizes the terminal, or changes the layout.
+When this happens, @value{GDBN} will call the @code{render} method on
+the window object.
+
+If your window is intended to update in response to changes in the
+inferior, you will probably also want to register event listeners and
+send output to the @code{gdb.TuiWindow}.
+@end defun
+
+@defun Window.hscroll (@var{num})
+This is a request to scroll the window horizontally.  @var{num} is the
+amount by which to scroll, with negative numbers meaning to scroll
+right.  In the TUI model, it is the viewport that moves, not the
+contents.  A positive argument should cause the viewport to move
+right, and so the content should appear to move to the left.
+@end defun
+
+@defun Window.vscroll (@var{num})
+This is a request to scroll the window vertically.  @var{num} is the
+amount by which to scroll, with negative numbers meaning to scroll
+backward.  In the TUI model, it is the viewport that moves, not the
+contents.  A positive argument should cause the viewport to move down,
+and so the content should appear to move up.
+@end defun
+
 @node Python Auto-loading
 @subsection Python Auto-loading
 @cindex Python auto-loading
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/refcard.tex ./gdb/doc/refcard.tex
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/refcard.tex	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/refcard.tex	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%% gdb-refcard.tex %%%%%%%%%%%%%%%%
 
 %This file is TeX source for a reference card describing GDB, the GNU debugger.
-%Copyright (C) 1991-2020 Free Software Foundation, Inc.
+%Copyright (C) 1991--2021 Free Software Foundation, Inc.
 %Permission is granted to make and distribute verbatim copies of
 %this reference provided the copyright notices and permission notices
 %are preserved on all copies.
@@ -307,7 +307,7 @@ shell {\it cmd}&execute arbitrary shell
 \line{\smrm \opt{ } surround optional arguments \hfill $\ldots$ show
 one or more arguments}
 \vskip\baselineskip
-\centerline{\smrm \copyright 1998-2020 Free Software Foundation, Inc.\qquad Permissions on back}
+\centerline{\smrm \copyright 1998-2021 Free Software Foundation, Inc.\qquad Permissions on back}
 \eject
 \sec Breakpoints and Watchpoints;
 break \opt{\it file\tt:}{\it line}\par
@@ -632,7 +632,7 @@ statement.\cr
 
 \vfill
 {\smrm\parskip=6pt
-Copyright \copyright 1991-2020 Free Software Foundation, Inc.
+Copyright \copyright 1991-2021 Free Software Foundation, Inc.
 Author: Roland H. Pesch
 
 The author assumes no responsibility for any errors on this card.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/stabs.info ./gdb/doc/stabs.info
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/stabs.info	2020-03-07 02:11:41.000000000 +0000
+++ ./gdb/doc/stabs.info	2021-05-21 02:00:21.000000000 +0000
@@ -1,6 +1,6 @@
-This is stabs.info, produced by makeinfo version 6.3 from stabs.texinfo.
+This is stabs.info, produced by makeinfo version 6.5 from stabs.texinfo.
 
-Copyright (C) 1992-2020 Free Software Foundation, Inc.  Contributed by
+Copyright (C) 1992-2021 Free Software Foundation, Inc.  Contributed by
 Cygnus Support.  Written by Julia Menapace, Jim Kingdon, and David
 MacKenzie.
 
@@ -17,7 +17,7 @@ END-INFO-DIR-ENTRY
 
    This document describes the stabs debugging symbol tables.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.  Contributed
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.  Contributed
 by Cygnus Support.  Written by Julia Menapace, Jim Kingdon, and David
 MacKenzie.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/stabs.texinfo ./gdb/doc/stabs.texinfo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/doc/stabs.texinfo	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/doc/stabs.texinfo	2021-05-21 01:57:24.000000000 +0000
@@ -17,7 +17,7 @@
 @end direntry
 
 @copying
-Copyright @copyright{} 1992-2020 Free Software Foundation, Inc.
+Copyright @copyright{} 1992--2021 Free Software Foundation, Inc.
 Contributed by Cygnus Support.  Written by Julia Menapace, Jim Kingdon,
 and David MacKenzie.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dtrace-probe.c ./gdb/dtrace-probe.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dtrace-probe.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dtrace-probe.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* DTrace probe support for GDB.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    Contributed by Oracle, Inc.
 
@@ -520,7 +520,7 @@ dtrace_process_dof (asection *sect, stru
 		    std::vector<std::unique_ptr<probe>> *probesp,
 		    struct dtrace_dof_hdr *dof)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   struct dtrace_dof_sect *section;
   int i;
 
@@ -685,8 +685,7 @@ dtrace_probe::is_enabled () const
 CORE_ADDR
 dtrace_probe::get_relocated_address (struct objfile *objfile)
 {
-  return this->get_address () + ANOFFSET (objfile->section_offsets,
-					  SECT_OFF_DATA (objfile));
+  return this->get_address () + objfile->data_section_offset ();
 }
 
 /* Implementation of the get_argument_count method.  */
@@ -861,7 +860,7 @@ dtrace_static_probe_ops::get_probes
          else
 	    complaint (_("could not obtain the contents of"
 			 "section '%s' in objfile `%s'."),
-		       sect->name, abfd->filename);
+		       bfd_section_name (sect), bfd_get_filename (abfd));
 
 	  xfree (dof);
 	}
@@ -897,8 +896,9 @@ info_probes_dtrace_command (const char *
   info_probes_for_spops (arg, from_tty, &dtrace_static_probe_ops);
 }
 
+void _initialize_dtrace_probe ();
 void
-_initialize_dtrace_probe (void)
+_initialize_dtrace_probe ()
 {
   all_static_probe_ops.push_back (&dtrace_static_probe_ops);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dummy-frame.c ./gdb/dummy-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dummy-frame.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dummy-frame.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code dealing with dummy stack frames, for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -431,8 +431,9 @@ maintenance_print_dummy_frames (const ch
     }
 }
 
+void _initialize_dummy_frame ();
 void
-_initialize_dummy_frame (void)
+_initialize_dummy_frame ()
 {
   add_cmd ("dummy-frames", class_maintenance, maintenance_print_dummy_frames,
 	   _("Print the contents of the internal dummy-frame stack."),
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dummy-frame.h ./gdb/dummy-frame.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dummy-frame.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dummy-frame.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code dealing with dummy stack frames, for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-valprint.c ./gdb/d-valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/d-valprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/d-valprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for printing D values for GDB, the GNU debugger.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -34,8 +34,8 @@ dynamic_array_type (struct type *type,
 		    struct value *val,
 		    const struct value_print_options *options)
 {
-  if (TYPE_NFIELDS (type) == 2
-      && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_INT
+  if (type->num_fields () == 2
+      && type->field (0).type ()->code () == TYPE_CODE_INT
       && strcmp (TYPE_FIELD_NAME (type, 0), "length") == 0
       && strcmp (TYPE_FIELD_NAME (type, 1), "ptr") == 0
       && !value_bits_any_optimized_out (val,
@@ -52,7 +52,7 @@ dynamic_array_type (struct type *type,
 
       length = unpack_field_as_long (type, valaddr + embedded_offset, 0);
 
-      ptr_type = TYPE_FIELD_TYPE (type, 1);
+      ptr_type = type->field (1).type ();
       elttype = check_typedef (TYPE_TARGET_TYPE (ptr_type));
       addr = unpack_pointer (ptr_type,
 			     valaddr + TYPE_FIELD_BITPOS (type, 1) / 8
@@ -63,34 +63,32 @@ dynamic_array_type (struct type *type,
       ival = value_at (true_type, addr);
       true_type = value_type (ival);
 
-      d_val_print (true_type,
-		   value_embedded_offset (ival), addr,
-		   stream, recurse + 1, ival, options);
+      d_value_print_inner (ival, stream, recurse + 1, options);
       return 0;
     }
   return 1;
 }
 
-/* Implements the la_val_print routine for language D.  */
+/* See d-lang.h.  */
+
 void
-d_val_print (struct type *type, int embedded_offset,
-             CORE_ADDR address, struct ui_file *stream, int recurse,
-	     struct value *val,
-             const struct value_print_options *options)
+d_value_print_inner (struct value *val, struct ui_file *stream, int recurse,
+		     const struct value_print_options *options)
 {
   int ret;
 
-  type = check_typedef (type);
-  switch (TYPE_CODE (type))
+  struct type *type = check_typedef (value_type (val));
+  switch (type->code ())
     {
       case TYPE_CODE_STRUCT:
-	ret = dynamic_array_type (type, embedded_offset, address,
+	ret = dynamic_array_type (type, value_embedded_offset (val),
+				  value_address (val),
 				  stream, recurse, val, options);
 	if (ret == 0)
 	  break;
 	/* Fall through.  */
       default:
-	c_val_print (type, embedded_offset, address, stream,
-		     recurse, val, options);
+	c_value_print_inner (val, stream, recurse, options);
+	break;
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/abbrev.c ./gdb/dwarf2/abbrev.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/abbrev.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/abbrev.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,183 @@
+/* DWARF 2 abbreviations
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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 "dwarf2/read.h"
+#include "dwarf2/abbrev.h"
+#include "dwarf2/leb.h"
+#include "bfd.h"
+
+/* Hash function for an abbrev.  */
+
+static hashval_t
+hash_abbrev (const void *item)
+{
+  const struct abbrev_info *info = (const struct abbrev_info *) item;
+  /* Warning: if you change this next line, you must also update the
+     other code in this class using the _with_hash functions.  */
+  return info->number;
+}
+
+/* Comparison function for abbrevs.  */
+
+static int
+eq_abbrev (const void *lhs, const void *rhs)
+{
+  const struct abbrev_info *l_info = (const struct abbrev_info *) lhs;
+  const struct abbrev_info *r_info = (const struct abbrev_info *) rhs;
+  return l_info->number == r_info->number;
+}
+
+/* Abbreviation tables.
+
+   In DWARF version 2, the description of the debugging information is
+   stored in a separate .debug_abbrev section.  Before we read any
+   dies from a section we read in all abbreviations and install them
+   in a hash table.  */
+
+abbrev_table::abbrev_table (sect_offset off)
+  : sect_off (off),
+    m_abbrevs (htab_create_alloc (20, hash_abbrev, eq_abbrev,
+				  nullptr, xcalloc, xfree))
+{
+}
+
+/* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
+
+struct abbrev_info *
+abbrev_table::alloc_abbrev ()
+{
+  struct abbrev_info *abbrev;
+
+  abbrev = XOBNEW (&m_abbrev_obstack, struct abbrev_info);
+  memset (abbrev, 0, sizeof (struct abbrev_info));
+
+  return abbrev;
+}
+
+/* Add an abbreviation to the table.  */
+
+void
+abbrev_table::add_abbrev (struct abbrev_info *abbrev)
+{
+  void **slot = htab_find_slot_with_hash (m_abbrevs.get (), abbrev,
+					  abbrev->number, INSERT);
+  *slot = abbrev;
+}
+
+/* Read in an abbrev table.  */
+
+abbrev_table_up
+abbrev_table::read (struct objfile *objfile,
+		    struct dwarf2_section_info *section,
+		    sect_offset sect_off)
+{
+  bfd *abfd = section->get_bfd_owner ();
+  const gdb_byte *abbrev_ptr;
+  struct abbrev_info *cur_abbrev;
+  unsigned int abbrev_number, bytes_read, abbrev_name;
+  unsigned int abbrev_form;
+  std::vector<struct attr_abbrev> cur_attrs;
+
+  abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
+
+  section->read (objfile);
+  abbrev_ptr = section->buffer + to_underlying (sect_off);
+  abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
+  abbrev_ptr += bytes_read;
+
+  /* Loop until we reach an abbrev number of 0.  */
+  while (abbrev_number)
+    {
+      cur_attrs.clear ();
+      cur_abbrev = abbrev_table->alloc_abbrev ();
+
+      /* read in abbrev header */
+      cur_abbrev->number = abbrev_number;
+      cur_abbrev->tag
+	= (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
+      abbrev_ptr += bytes_read;
+      cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
+      abbrev_ptr += 1;
+
+      /* now read in declarations */
+      for (;;)
+	{
+	  LONGEST implicit_const;
+
+	  abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
+	  abbrev_ptr += bytes_read;
+	  abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
+	  abbrev_ptr += bytes_read;
+	  if (abbrev_form == DW_FORM_implicit_const)
+	    {
+	      implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
+						   &bytes_read);
+	      abbrev_ptr += bytes_read;
+	    }
+	  else
+	    {
+	      /* Initialize it due to a false compiler warning.  */
+	      implicit_const = -1;
+	    }
+
+	  if (abbrev_name == 0)
+	    break;
+
+	  cur_attrs.emplace_back ();
+	  struct attr_abbrev &cur_attr = cur_attrs.back ();
+	  cur_attr.name = (enum dwarf_attribute) abbrev_name;
+	  cur_attr.form = (enum dwarf_form) abbrev_form;
+	  cur_attr.implicit_const = implicit_const;
+	}
+
+      cur_abbrev->num_attrs = cur_attrs.size ();
+      cur_abbrev->attrs =
+	XOBNEWVEC (&abbrev_table->m_abbrev_obstack, struct attr_abbrev,
+		   cur_abbrev->num_attrs);
+      if (!cur_attrs.empty ())
+	memcpy (cur_abbrev->attrs, cur_attrs.data (),
+		cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
+
+      abbrev_table->add_abbrev (cur_abbrev);
+
+      /* Get next abbreviation.
+         Under Irix6 the abbreviations for a compilation unit are not
+         always properly terminated with an abbrev number of 0.
+         Exit loop if we encounter an abbreviation which we have
+         already read (which means we are about to read the abbreviations
+         for the next compile unit) or if the end of the abbreviation
+         table is reached.  */
+      if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
+	break;
+      abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
+      abbrev_ptr += bytes_read;
+      if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
+	break;
+    }
+
+  return abbrev_table;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/abbrev.h ./gdb/dwarf2/abbrev.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/abbrev.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/abbrev.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,99 @@
+/* DWARF abbrev table
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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_DWARF2_ABBREV_H
+#define GDB_DWARF2_ABBREV_H
+
+#include "hashtab.h"
+
+/* This data structure holds the information of an abbrev.  */
+struct abbrev_info
+  {
+    unsigned int number;	/* number identifying abbrev */
+    enum dwarf_tag tag;		/* dwarf tag */
+    unsigned short has_children;		/* boolean */
+    unsigned short num_attrs;	/* number of attributes */
+    struct attr_abbrev *attrs;	/* an array of attribute descriptions */
+  };
+
+struct attr_abbrev
+  {
+    ENUM_BITFIELD(dwarf_attribute) name : 16;
+    ENUM_BITFIELD(dwarf_form) form : 16;
+
+    /* It is valid only if FORM is DW_FORM_implicit_const.  */
+    LONGEST implicit_const;
+  };
+
+struct abbrev_table;
+typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
+
+/* Top level data structure to contain an abbreviation table.  */
+
+struct abbrev_table
+{
+  static abbrev_table_up read (struct objfile *objfile,
+			       struct dwarf2_section_info *section,
+			       sect_offset sect_off);
+
+  /* Look up an abbrev in the table.
+     Returns NULL if the abbrev is not found.  */
+
+  struct abbrev_info *lookup_abbrev (unsigned int abbrev_number)
+  {
+    struct abbrev_info search;
+    search.number = abbrev_number;
+
+    return (struct abbrev_info *) htab_find_with_hash (m_abbrevs.get (),
+						       &search,
+						       abbrev_number);
+  }
+
+  /* Where the abbrev table came from.
+     This is used as a sanity check when the table is used.  */
+  const sect_offset sect_off;
+
+private:
+
+  explicit abbrev_table (sect_offset off);
+
+  DISABLE_COPY_AND_ASSIGN (abbrev_table);
+
+  /* Allocate space for a struct abbrev_info object in
+     ABBREV_TABLE.  */
+  struct abbrev_info *alloc_abbrev ();
+
+  /* Add an abbreviation to the table.  */
+  void add_abbrev (struct abbrev_info *abbrev);
+
+  /* Hash table of abbrevs.  */
+  htab_up m_abbrevs;
+
+  /* Storage for the abbrev table.  */
+  auto_obstack m_abbrev_obstack;
+};
+
+#endif /* GDB_DWARF2_ABBREV_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/attribute.c ./gdb/dwarf2/attribute.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/attribute.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/attribute.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,152 @@
+/* DWARF attributes
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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 "dwarf2/attribute.h"
+#include "dwarf2/stringify.h"
+#include "complaints.h"
+
+/* See attribute.h.  */
+
+CORE_ADDR
+attribute::value_as_address () const
+{
+  CORE_ADDR addr;
+
+  if (form != DW_FORM_addr && form != DW_FORM_addrx
+      && form != DW_FORM_GNU_addr_index)
+    {
+      /* Aside from a few clearly defined exceptions, attributes that
+	 contain an address must always be in DW_FORM_addr form.
+	 Unfortunately, some compilers happen to be violating this
+	 requirement by encoding addresses using other forms, such
+	 as DW_FORM_data4 for example.  For those broken compilers,
+	 we try to do our best, without any guarantee of success,
+	 to interpret the address correctly.  It would also be nice
+	 to generate a complaint, but that would require us to maintain
+	 a list of legitimate cases where a non-address form is allowed,
+	 as well as update callers to pass in at least the CU's DWARF
+	 version.  This is more overhead than what we're willing to
+	 expand for a pretty rare case.  */
+      addr = DW_UNSND (this);
+    }
+  else
+    addr = DW_ADDR (this);
+
+  return addr;
+}
+
+/* See attribute.h.  */
+
+const char *
+attribute::value_as_string () const
+{
+  if (form == DW_FORM_strp || form == DW_FORM_line_strp
+      || form == DW_FORM_string
+      || form == DW_FORM_strx
+      || form == DW_FORM_strx1
+      || form == DW_FORM_strx2
+      || form == DW_FORM_strx3
+      || form == DW_FORM_strx4
+      || form == DW_FORM_GNU_str_index
+      || form == DW_FORM_GNU_strp_alt)
+    return DW_STRING (this);
+  return nullptr;
+}
+
+/* See attribute.h.  */
+
+bool
+attribute::form_is_block () const
+{
+  return (form == DW_FORM_block1
+	  || form == DW_FORM_block2
+	  || form == DW_FORM_block4
+	  || form == DW_FORM_block
+	  || form == DW_FORM_exprloc);
+}
+
+/* See attribute.h.  */
+
+bool
+attribute::form_is_section_offset () const
+{
+  return (form == DW_FORM_data4
+          || form == DW_FORM_data8
+	  || form == DW_FORM_sec_offset
+	  || form == DW_FORM_loclistx);
+}
+
+/* See attribute.h.  */
+
+bool
+attribute::form_is_constant () const
+{
+  switch (form)
+    {
+    case DW_FORM_sdata:
+    case DW_FORM_udata:
+    case DW_FORM_data1:
+    case DW_FORM_data2:
+    case DW_FORM_data4:
+    case DW_FORM_data8:
+    case DW_FORM_implicit_const:
+      return true;
+    default:
+      return false;
+    }
+}
+
+/* See attribute.h.  */
+
+void
+attribute::get_ref_die_offset_complaint () const
+{
+  complaint (_("unsupported die ref attribute form: '%s'"),
+	     dwarf_form_name (form));
+}
+
+/* See attribute.h.  */
+
+LONGEST
+attribute::constant_value (int default_value) const
+{
+  if (form == DW_FORM_sdata || form == DW_FORM_implicit_const)
+    return DW_SND (this);
+  else if (form == DW_FORM_udata
+	   || form == DW_FORM_data1
+	   || form == DW_FORM_data2
+	   || form == DW_FORM_data4
+	   || form == DW_FORM_data8)
+    return DW_UNSND (this);
+  else
+    {
+      /* For DW_FORM_data16 see attribute::form_is_constant.  */
+      complaint (_("Attribute value is not a constant (%s)"),
+		 dwarf_form_name (form));
+      return default_value;
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/attribute.h ./gdb/dwarf2/attribute.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/attribute.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/attribute.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,155 @@
+/* DWARF attributes
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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_DWARF2_ATTRIBUTE_H
+#define GDB_DWARF2_ATTRIBUTE_H
+
+#include "dwarf2.h"
+#include "gdbtypes.h"
+
+/* Blocks are a bunch of untyped bytes.  */
+struct dwarf_block
+{
+  size_t size;
+
+  /* Valid only if SIZE is not zero.  */
+  const gdb_byte *data;
+};
+
+/* Attributes have a name and a value.  */
+struct attribute
+{
+  /* Read the given attribute value as an address, taking the
+     attribute's form into account.  */
+  CORE_ADDR value_as_address () const;
+
+  /* If the attribute has a string form, return the string value;
+     otherwise return NULL.  */
+  const char *value_as_string () const;
+
+  /* Return non-zero if ATTR's value is a section offset --- classes
+     lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
+     You may use DW_UNSND (attr) to retrieve such offsets.
+
+     Section 7.5.4, "Attribute Encodings", explains that no attribute
+     may have a value that belongs to more than one of these classes; it
+     would be ambiguous if we did, because we use the same forms for all
+     of them.  */
+
+  bool form_is_section_offset () const;
+
+  /* Return non-zero if ATTR's value falls in the 'constant' class, or
+     zero otherwise.  When this function returns true, you can apply
+     the constant_value method to it.
+
+     However, note that for some attributes you must check
+     attr_form_is_section_offset before using this test.  DW_FORM_data4
+     and DW_FORM_data8 are members of both the constant class, and of
+     the classes that contain offsets into other debug sections
+     (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
+     that, if an attribute's can be either a constant or one of the
+     section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
+     taken as section offsets, not constants.
+
+     DW_FORM_data16 is not considered as constant_value cannot handle
+     that.  */
+
+  bool form_is_constant () const;
+
+  /* DW_ADDR is always stored already as sect_offset; despite for the forms
+     besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
+
+  bool form_is_ref () const
+  {
+    return (form == DW_FORM_ref_addr
+	    || form == DW_FORM_ref1
+	    || form == DW_FORM_ref2
+	    || form == DW_FORM_ref4
+	    || form == DW_FORM_ref8
+	    || form == DW_FORM_ref_udata
+	    || form == DW_FORM_GNU_ref_alt);
+  }
+
+  /* Check if the attribute's form is a DW_FORM_block*
+     if so return true else false.  */
+
+  bool form_is_block () const;
+
+  /* Return DIE offset of this attribute.  Return 0 with complaint if
+     the attribute is not of the required kind.  */
+
+  sect_offset get_ref_die_offset () const
+  {
+    if (form_is_ref ())
+      return (sect_offset) u.unsnd;
+    get_ref_die_offset_complaint ();
+    return {};
+  }
+
+  /* Return the constant value held by this attribute.  Return
+     DEFAULT_VALUE if the value held by the attribute is not
+     constant.  */
+
+  LONGEST constant_value (int default_value) const;
+
+
+  ENUM_BITFIELD(dwarf_attribute) name : 16;
+  ENUM_BITFIELD(dwarf_form) form : 15;
+
+  /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
+     field should be in u.str (existing only for DW_STRING) but it is kept
+     here for better struct attribute alignment.  */
+  unsigned int string_is_canonical : 1;
+
+  union
+    {
+      const char *str;
+      struct dwarf_block *blk;
+      ULONGEST unsnd;
+      LONGEST snd;
+      CORE_ADDR addr;
+      ULONGEST signature;
+    }
+  u;
+
+private:
+
+  /* Used by get_ref_die_offset to issue a complaint.  */
+
+  void get_ref_die_offset_complaint () const;
+};
+
+/* Get at parts of an attribute structure.  */
+
+#define DW_STRING(attr)    ((attr)->u.str)
+#define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
+#define DW_UNSND(attr)     ((attr)->u.unsnd)
+#define DW_BLOCK(attr)     ((attr)->u.blk)
+#define DW_SND(attr)       ((attr)->u.snd)
+#define DW_ADDR(attr)	   ((attr)->u.addr)
+#define DW_SIGNATURE(attr) ((attr)->u.signature)
+
+#endif /* GDB_DWARF2_ATTRIBUTE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/comp-unit.c ./gdb/dwarf2/comp-unit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/comp-unit.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/comp-unit.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,272 @@
+/* DWARF 2 debugging format support for GDB.
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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 "dwarf2/comp-unit.h"
+#include "dwarf2/leb.h"
+#include "dwarf2/read.h"
+#include "dwarf2/section.h"
+
+/* Convert a unit type to corresponding DW_UT name.  */
+
+static const char *
+dwarf_unit_type_name (int unit_type)
+{
+  switch (unit_type)
+    {
+      case 0x01:
+	return "DW_UT_compile (0x01)";
+      case 0x02:
+	return "DW_UT_type (0x02)";
+      case 0x03:
+	return "DW_UT_partial (0x03)";
+      case 0x04:
+	return "DW_UT_skeleton (0x04)";
+      case 0x05:
+	return "DW_UT_split_compile (0x05)";
+      case 0x06:
+	return "DW_UT_split_type (0x06)";
+      case 0x80:
+	return "DW_UT_lo_user (0x80)";
+      case 0xff:
+	return "DW_UT_hi_user (0xff)";
+      default:
+	return nullptr;
+    }
+}
+
+/* See comp-unit.h.  */
+
+const gdb_byte *
+read_comp_unit_head (struct comp_unit_head *cu_header,
+		     const gdb_byte *info_ptr,
+		     struct dwarf2_section_info *section,
+		     rcuh_kind section_kind)
+{
+  int signed_addr;
+  unsigned int bytes_read;
+  const char *filename = section->get_file_name ();
+  bfd *abfd = section->get_bfd_owner ();
+
+  cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
+  cu_header->initial_length_size = bytes_read;
+  cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
+  info_ptr += bytes_read;
+  cu_header->version = read_2_bytes (abfd, info_ptr);
+  if (cu_header->version < 2 || cu_header->version > 5)
+    error (_("Dwarf Error: wrong version in compilation unit header "
+	   "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
+	   cu_header->version, filename);
+  info_ptr += 2;
+  if (cu_header->version < 5)
+    switch (section_kind)
+      {
+      case rcuh_kind::COMPILE:
+	cu_header->unit_type = DW_UT_compile;
+	break;
+      case rcuh_kind::TYPE:
+	cu_header->unit_type = DW_UT_type;
+	break;
+      default:
+	internal_error (__FILE__, __LINE__,
+			_("read_comp_unit_head: invalid section_kind"));
+      }
+  else
+    {
+      cu_header->unit_type = static_cast<enum dwarf_unit_type>
+						 (read_1_byte (abfd, info_ptr));
+      info_ptr += 1;
+      switch (cu_header->unit_type)
+	{
+	case DW_UT_compile:
+	case DW_UT_partial:
+	case DW_UT_skeleton:
+	case DW_UT_split_compile:
+	  if (section_kind != rcuh_kind::COMPILE)
+	    error (_("Dwarf Error: wrong unit_type in compilation unit header "
+		   "(is %s, should be %s) [in module %s]"),
+		   dwarf_unit_type_name (cu_header->unit_type),
+		   dwarf_unit_type_name (DW_UT_type), filename);
+	  break;
+	case DW_UT_type:
+	case DW_UT_split_type:
+	  section_kind = rcuh_kind::TYPE;
+	  break;
+	default:
+	  error (_("Dwarf Error: wrong unit_type in compilation unit header "
+		 "(is %#04x, should be one of: %s, %s, %s, %s or %s) "
+		 "[in module %s]"), cu_header->unit_type,
+		 dwarf_unit_type_name (DW_UT_compile),
+		 dwarf_unit_type_name (DW_UT_skeleton),
+		 dwarf_unit_type_name (DW_UT_split_compile),
+		 dwarf_unit_type_name (DW_UT_type),
+		 dwarf_unit_type_name (DW_UT_split_type), filename);
+	}
+
+      cu_header->addr_size = read_1_byte (abfd, info_ptr);
+      info_ptr += 1;
+    }
+  cu_header->abbrev_sect_off
+    = (sect_offset) cu_header->read_offset (abfd, info_ptr, &bytes_read);
+  info_ptr += bytes_read;
+  if (cu_header->version < 5)
+    {
+      cu_header->addr_size = read_1_byte (abfd, info_ptr);
+      info_ptr += 1;
+    }
+  signed_addr = bfd_get_sign_extend_vma (abfd);
+  if (signed_addr < 0)
+    internal_error (__FILE__, __LINE__,
+		    _("read_comp_unit_head: dwarf from non elf file"));
+  cu_header->signed_addr_p = signed_addr;
+
+  bool header_has_signature = section_kind == rcuh_kind::TYPE
+    || cu_header->unit_type == DW_UT_skeleton
+    || cu_header->unit_type == DW_UT_split_compile;
+
+  if (header_has_signature)
+    {
+      cu_header->signature = read_8_bytes (abfd, info_ptr);
+      info_ptr += 8;
+    }
+
+  if (section_kind == rcuh_kind::TYPE)
+    {
+      LONGEST type_offset;
+      type_offset = cu_header->read_offset (abfd, info_ptr, &bytes_read);
+      info_ptr += bytes_read;
+      cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
+      if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
+	error (_("Dwarf Error: Too big type_offset in compilation unit "
+	       "header (is %s) [in module %s]"), plongest (type_offset),
+	       filename);
+    }
+
+  return info_ptr;
+}
+
+/* Subroutine of read_and_check_comp_unit_head and
+   read_and_check_type_unit_head to simplify them.
+   Perform various error checking on the header.  */
+
+static void
+error_check_comp_unit_head (dwarf2_per_objfile *per_objfile,
+			    struct comp_unit_head *header,
+			    struct dwarf2_section_info *section,
+			    struct dwarf2_section_info *abbrev_section)
+{
+  const char *filename = section->get_file_name ();
+
+  if (to_underlying (header->abbrev_sect_off)
+      >= abbrev_section->get_size (per_objfile->objfile))
+    error (_("Dwarf Error: bad offset (%s) in compilation unit header "
+	   "(offset %s + 6) [in module %s]"),
+	   sect_offset_str (header->abbrev_sect_off),
+	   sect_offset_str (header->sect_off),
+	   filename);
+
+  /* Cast to ULONGEST to use 64-bit arithmetic when possible to
+     avoid potential 32-bit overflow.  */
+  if (((ULONGEST) header->sect_off + header->get_length ())
+      > section->size)
+    error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
+	   "(offset %s + 0) [in module %s]"),
+	   header->length, sect_offset_str (header->sect_off),
+	   filename);
+}
+
+/* See comp-unit.h.  */
+
+const gdb_byte *
+read_and_check_comp_unit_head (dwarf2_per_objfile *per_objfile,
+			       struct comp_unit_head *header,
+			       struct dwarf2_section_info *section,
+			       struct dwarf2_section_info *abbrev_section,
+			       const gdb_byte *info_ptr,
+			       rcuh_kind section_kind)
+{
+  const gdb_byte *beg_of_comp_unit = info_ptr;
+
+  header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
+
+  info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
+
+  header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
+
+  error_check_comp_unit_head (per_objfile, header, section, abbrev_section);
+
+  return info_ptr;
+}
+
+CORE_ADDR
+comp_unit_head::read_address (bfd *abfd, const gdb_byte *buf,
+			      unsigned int *bytes_read) const
+{
+  CORE_ADDR retval = 0;
+
+  if (signed_addr_p)
+    {
+      switch (addr_size)
+	{
+	case 2:
+	  retval = bfd_get_signed_16 (abfd, buf);
+	  break;
+	case 4:
+	  retval = bfd_get_signed_32 (abfd, buf);
+	  break;
+	case 8:
+	  retval = bfd_get_signed_64 (abfd, buf);
+	  break;
+	default:
+	  internal_error (__FILE__, __LINE__,
+			  _("read_address: bad switch, signed [in module %s]"),
+			  bfd_get_filename (abfd));
+	}
+    }
+  else
+    {
+      switch (addr_size)
+	{
+	case 2:
+	  retval = bfd_get_16 (abfd, buf);
+	  break;
+	case 4:
+	  retval = bfd_get_32 (abfd, buf);
+	  break;
+	case 8:
+	  retval = bfd_get_64 (abfd, buf);
+	  break;
+	default:
+	  internal_error (__FILE__, __LINE__,
+			  _("read_address: bad switch, "
+			    "unsigned [in module %s]"),
+			  bfd_get_filename (abfd));
+	}
+    }
+
+  *bytes_read = addr_size;
+  return retval;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/comp-unit.h ./gdb/dwarf2/comp-unit.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/comp-unit.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/comp-unit.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,122 @@
+/* Low-level DWARF 2 reading code
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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_DWARF2_COMP_UNIT_H
+#define GDB_DWARF2_COMP_UNIT_H
+
+#include "dwarf2/leb.h"
+#include "gdbtypes.h"
+
+/* The data in a compilation unit header, after target2host
+   translation, looks like this.  */
+struct comp_unit_head
+{
+  unsigned int length;
+  short version;
+  unsigned char addr_size;
+  unsigned char signed_addr_p;
+  sect_offset abbrev_sect_off;
+
+  /* Size of file offsets; either 4 or 8.  */
+  unsigned int offset_size;
+
+  /* Size of the length field; either 4 or 12.  */
+  unsigned int initial_length_size;
+
+  enum dwarf_unit_type unit_type;
+
+  /* Offset to the first byte of this compilation unit header in the
+     .debug_info section, for resolving relative reference dies.  */
+  sect_offset sect_off;
+
+  /* Offset to first die in this cu from the start of the cu.
+     This will be the first byte following the compilation unit header.  */
+  cu_offset first_die_cu_offset;
+
+
+  /* 64-bit signature of this unit. For type units, it denotes the signature of
+     the type (DW_UT_type in DWARF 4, additionally DW_UT_split_type in DWARF 5).
+     Also used in DWARF 5, to denote the dwo id when the unit type is
+     DW_UT_skeleton or DW_UT_split_compile.  */
+  ULONGEST signature;
+
+  /* For types, offset in the type's DIE of the type defined by this TU.  */
+  cu_offset type_cu_offset_in_tu;
+
+  /* Return the total length of the CU described by this header.  */
+  unsigned int get_length () const
+  {
+    return initial_length_size + length;
+  }
+
+  /* Return TRUE if OFF is within this CU.  */
+  bool offset_in_cu_p (sect_offset off) const
+  {
+    sect_offset bottom = sect_off;
+    sect_offset top = sect_off + get_length ();
+    return off >= bottom && off < top;
+  }
+
+  /* Read an offset from the data stream.  The size of the offset is
+     given by cu_header->offset_size.  */
+  LONGEST read_offset (bfd *abfd, const gdb_byte *buf,
+		       unsigned int *bytes_read) const
+  {
+    LONGEST offset = ::read_offset (abfd, buf, offset_size);
+    *bytes_read = offset_size;
+    return offset;
+  }
+
+  /* Read an address from BUF.  BYTES_READ is updated.  */
+  CORE_ADDR read_address (bfd *abfd, const gdb_byte *buf,
+			  unsigned int *bytes_read) const;
+};
+
+/* Expected enum dwarf_unit_type for read_comp_unit_head.  */
+enum class rcuh_kind { COMPILE, TYPE };
+
+/* Read in the comp unit header information from the debug_info at info_ptr.
+   Use rcuh_kind::COMPILE as the default type if not known by the caller.
+   NOTE: This leaves members offset, first_die_offset to be filled in
+   by the caller.  */
+extern const gdb_byte *read_comp_unit_head
+  (struct comp_unit_head *cu_header,
+   const gdb_byte *info_ptr,
+   struct dwarf2_section_info *section,
+   rcuh_kind section_kind);
+
+/* Read in a CU/TU header and perform some basic error checking.
+   The contents of the header are stored in HEADER.
+   The result is a pointer to the start of the first DIE.  */
+extern const gdb_byte *read_and_check_comp_unit_head
+  (dwarf2_per_objfile *per_objfile,
+   struct comp_unit_head *header,
+   struct dwarf2_section_info *section,
+   struct dwarf2_section_info *abbrev_section,
+   const gdb_byte *info_ptr,
+   rcuh_kind section_kind);
+
+#endif /* GDB_DWARF2_COMP_UNIT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/die.h ./gdb/dwarf2/die.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/die.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/die.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,103 @@
+/* DWARF DIEs
+
+   Copyright (C) 2003-2021 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_DWARF2_DIE_H
+#define GDB_DWARF2_DIE_H
+
+/* This data structure holds a complete die structure.  */
+struct die_info
+{
+  /* Return the named attribute or NULL if not there, but do not
+     follow DW_AT_specification, etc.  */
+  struct attribute *attr (dwarf_attribute name)
+  {
+    for (unsigned i = 0; i < num_attrs; ++i)
+      if (attrs[i].name == name)
+	return &attrs[i];
+    return NULL;
+  }
+
+  /* Return the address base of the compile unit, which, if exists, is
+     stored either at the attribute DW_AT_GNU_addr_base, or
+     DW_AT_addr_base.  */
+  gdb::optional<ULONGEST> addr_base ()
+  {
+    for (unsigned i = 0; i < num_attrs; ++i)
+      if (attrs[i].name == DW_AT_addr_base
+	  || attrs[i].name == DW_AT_GNU_addr_base)
+	{
+	  /* If both exist, just use the first one.  */
+	  return DW_UNSND (&attrs[i]);
+	}
+    return gdb::optional<ULONGEST> ();
+  }
+
+  /* Return range lists base of the compile unit, which, if exists, is
+     stored either at the attribute DW_AT_rnglists_base or
+     DW_AT_GNU_ranges_base.  */
+  ULONGEST ranges_base ()
+  {
+    for (unsigned i = 0; i < num_attrs; ++i)
+      if (attrs[i].name == DW_AT_rnglists_base
+	  || attrs[i].name == DW_AT_GNU_ranges_base)
+	{
+	  /* If both exist, just use the first one.  */
+	  return DW_UNSND (&attrs[i]);
+	}
+    return 0;
+  }
+
+
+  /* DWARF-2 tag for this DIE.  */
+  ENUM_BITFIELD(dwarf_tag) tag : 16;
+
+  /* Number of attributes */
+  unsigned char num_attrs;
+
+  /* True if we're presently building the full type name for the
+     type derived from this DIE.  */
+  unsigned char building_fullname : 1;
+
+  /* True if this die is in process.  PR 16581.  */
+  unsigned char in_process : 1;
+
+  /* True if this DIE has children.  */
+  unsigned char has_children : 1;
+
+  /* Abbrev number */
+  unsigned int abbrev;
+
+  /* Offset in .debug_info or .debug_types section.  */
+  sect_offset sect_off;
+
+  /* The dies in a compilation unit form an n-ary tree.  PARENT
+     points to this die's parent; CHILD points to the first child of
+     this node; and all the children of a given node are chained
+     together via their SIBLING fields.  */
+  struct die_info *child;	/* Its first child, if any.  */
+  struct die_info *sibling;	/* Its next sibling, if any.  */
+  struct die_info *parent;	/* Its parent, if any.  */
+
+  /* An array of attributes, with NUM_ATTRS elements.  There may be
+     zero, but it's not common and zero-sized arrays are not
+     sufficiently portable C.  */
+  struct attribute attrs[1];
+};
+
+#endif /* GDB_DWARF2_DIE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/dwz.c ./gdb/dwarf2/dwz.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/dwz.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/dwz.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,40 @@
+/* DWARF DWZ handling for GDB.
+
+   Copyright (C) 2003-2021 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 "dwarf2/dwz.h"
+
+const char *
+dwz_file::read_string (struct objfile *objfile, LONGEST str_offset)
+{
+  str.read (objfile);
+
+  if (str.buffer == NULL)
+    error (_("DW_FORM_GNU_strp_alt used without .debug_str "
+	     "section [in module %s]"),
+	   bfd_get_filename (dwz_bfd.get ()));
+  if (str_offset >= str.size)
+    error (_("DW_FORM_GNU_strp_alt pointing outside of "
+	     ".debug_str section [in module %s]"),
+	   bfd_get_filename (dwz_bfd.get ()));
+  gdb_assert (HOST_CHAR_BIT == 8);
+  if (str.buffer[str_offset] == '\0')
+    return NULL;
+  return (const char *) (str.buffer + str_offset);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/dwz.h ./gdb/dwarf2/dwz.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/dwz.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/dwz.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,65 @@
+/* DWARF DWZ handling for GDB.
+
+   Copyright (C) 2003-2021 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_DWARF2_DWZ_H
+#define GDB_DWARF2_DWZ_H
+
+#include "gdb_bfd.h"
+#include "dwarf2/index-cache.h"
+#include "dwarf2/section.h"
+
+/* This represents a '.dwz' file.  */
+
+struct dwz_file
+{
+  dwz_file (gdb_bfd_ref_ptr &&bfd)
+    : dwz_bfd (std::move (bfd))
+  {
+  }
+
+  const char *filename () const
+  {
+    return bfd_get_filename (this->dwz_bfd.get ());
+  }
+
+  /* A dwz file can only contain a few sections.  */
+  struct dwarf2_section_info abbrev {};
+  struct dwarf2_section_info info {};
+  struct dwarf2_section_info str {};
+  struct dwarf2_section_info line {};
+  struct dwarf2_section_info macro {};
+  struct dwarf2_section_info gdb_index {};
+  struct dwarf2_section_info debug_names {};
+
+  /* The dwz's BFD.  */
+  gdb_bfd_ref_ptr dwz_bfd;
+
+  /* If we loaded the index from an external file, this contains the
+     resources associated to the open file, memory mapping, etc.  */
+  std::unique_ptr<index_cache_resource> index_cache_res;
+
+  /* Read a string at offset STR_OFFSET in the .debug_str section from
+     this dwz file.  Throw an error if the offset is too large.  If
+     the string consists of a single NUL byte, return NULL; otherwise
+     return a pointer to the string.  */
+
+  const char *read_string (struct objfile *objfile, LONGEST str_offset);
+};
+
+#endif /* GDB_DWARF2_DWZ_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/expr.c ./gdb/dwarf2/expr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/expr.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/expr.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,1430 @@
+/* DWARF 2 Expression Evaluator.
+
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+
+   Contributed by Daniel Berlin (dan@dberlin.org)
+
+   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 "symtab.h"
+#include "gdbtypes.h"
+#include "value.h"
+#include "gdbcore.h"
+#include "dwarf2.h"
+#include "dwarf2/expr.h"
+#include "dwarf2/loc.h"
+#include "dwarf2/read.h"
+#include "gdbsupport/underlying.h"
+#include "gdbarch.h"
+
+/* Cookie for gdbarch data.  */
+
+static struct gdbarch_data *dwarf_arch_cookie;
+
+/* This holds gdbarch-specific types used by the DWARF expression
+   evaluator.  See comments in execute_stack_op.  */
+
+struct dwarf_gdbarch_types
+{
+  struct type *dw_types[3];
+};
+
+/* Allocate and fill in dwarf_gdbarch_types for an arch.  */
+
+static void *
+dwarf_gdbarch_types_init (struct gdbarch *gdbarch)
+{
+  struct dwarf_gdbarch_types *types
+    = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct dwarf_gdbarch_types);
+
+  /* The types themselves are lazily initialized.  */
+
+  return types;
+}
+
+/* Return the type used for DWARF operations where the type is
+   unspecified in the DWARF spec.  Only certain sizes are
+   supported.  */
+
+struct type *
+dwarf_expr_context::address_type () const
+{
+  struct dwarf_gdbarch_types *types
+    = (struct dwarf_gdbarch_types *) gdbarch_data (this->gdbarch,
+						   dwarf_arch_cookie);
+  int ndx;
+
+  if (this->addr_size == 2)
+    ndx = 0;
+  else if (this->addr_size == 4)
+    ndx = 1;
+  else if (this->addr_size == 8)
+    ndx = 2;
+  else
+    error (_("Unsupported address size in DWARF expressions: %d bits"),
+	   8 * this->addr_size);
+
+  if (types->dw_types[ndx] == NULL)
+    types->dw_types[ndx]
+      = arch_integer_type (this->gdbarch,
+			   8 * this->addr_size,
+			   0, "<signed DWARF address type>");
+
+  return types->dw_types[ndx];
+}
+
+/* Create a new context for the expression evaluator.  */
+
+dwarf_expr_context::dwarf_expr_context (dwarf2_per_objfile *per_objfile)
+: gdbarch (NULL),
+  addr_size (0),
+  ref_addr_size (0),
+  recursion_depth (0),
+  max_recursion_depth (0x100),
+  location (DWARF_VALUE_MEMORY),
+  len (0),
+  data (NULL),
+  initialized (0),
+  per_objfile (per_objfile)
+{
+}
+
+/* Push VALUE onto the stack.  */
+
+void
+dwarf_expr_context::push (struct value *value, bool in_stack_memory)
+{
+  stack.emplace_back (value, in_stack_memory);
+}
+
+/* Push VALUE onto the stack.  */
+
+void
+dwarf_expr_context::push_address (CORE_ADDR value, bool in_stack_memory)
+{
+  push (value_from_ulongest (address_type (), value), in_stack_memory);
+}
+
+/* Pop the top item off of the stack.  */
+
+void
+dwarf_expr_context::pop ()
+{
+  if (stack.empty ())
+    error (_("dwarf expression stack underflow"));
+
+  stack.pop_back ();
+}
+
+/* Retrieve the N'th item on the stack.  */
+
+struct value *
+dwarf_expr_context::fetch (int n)
+{
+  if (stack.size () <= n)
+     error (_("Asked for position %d of stack, "
+	      "stack only has %zu elements on it."),
+	    n, stack.size ());
+  return stack[stack.size () - (1 + n)].value;
+}
+
+/* Require that TYPE be an integral type; throw an exception if not.  */
+
+static void
+dwarf_require_integral (struct type *type)
+{
+  if (type->code () != TYPE_CODE_INT
+      && type->code () != TYPE_CODE_CHAR
+      && type->code () != TYPE_CODE_BOOL)
+    error (_("integral type expected in DWARF expression"));
+}
+
+/* Return the unsigned form of TYPE.  TYPE is necessarily an integral
+   type.  */
+
+static struct type *
+get_unsigned_type (struct gdbarch *gdbarch, struct type *type)
+{
+  switch (TYPE_LENGTH (type))
+    {
+    case 1:
+      return builtin_type (gdbarch)->builtin_uint8;
+    case 2:
+      return builtin_type (gdbarch)->builtin_uint16;
+    case 4:
+      return builtin_type (gdbarch)->builtin_uint32;
+    case 8:
+      return builtin_type (gdbarch)->builtin_uint64;
+    default:
+      error (_("no unsigned variant found for type, while evaluating "
+	       "DWARF expression"));
+    }
+}
+
+/* Return the signed form of TYPE.  TYPE is necessarily an integral
+   type.  */
+
+static struct type *
+get_signed_type (struct gdbarch *gdbarch, struct type *type)
+{
+  switch (TYPE_LENGTH (type))
+    {
+    case 1:
+      return builtin_type (gdbarch)->builtin_int8;
+    case 2:
+      return builtin_type (gdbarch)->builtin_int16;
+    case 4:
+      return builtin_type (gdbarch)->builtin_int32;
+    case 8:
+      return builtin_type (gdbarch)->builtin_int64;
+    default:
+      error (_("no signed variant found for type, while evaluating "
+	       "DWARF expression"));
+    }
+}
+
+/* Retrieve the N'th item on the stack, converted to an address.  */
+
+CORE_ADDR
+dwarf_expr_context::fetch_address (int n)
+{
+  struct value *result_val = fetch (n);
+  enum bfd_endian byte_order = gdbarch_byte_order (this->gdbarch);
+  ULONGEST result;
+
+  dwarf_require_integral (value_type (result_val));
+  result = extract_unsigned_integer (value_contents (result_val),
+				     TYPE_LENGTH (value_type (result_val)),
+				     byte_order);
+
+  /* For most architectures, calling extract_unsigned_integer() alone
+     is sufficient for extracting an address.  However, some
+     architectures (e.g. MIPS) use signed addresses and using
+     extract_unsigned_integer() will not produce a correct
+     result.  Make sure we invoke gdbarch_integer_to_address()
+     for those architectures which require it.  */
+  if (gdbarch_integer_to_address_p (this->gdbarch))
+    {
+      gdb_byte *buf = (gdb_byte *) alloca (this->addr_size);
+      struct type *int_type = get_unsigned_type (this->gdbarch,
+						 value_type (result_val));
+
+      store_unsigned_integer (buf, this->addr_size, byte_order, result);
+      return gdbarch_integer_to_address (this->gdbarch, int_type, buf);
+    }
+
+  return (CORE_ADDR) result;
+}
+
+/* Retrieve the in_stack_memory flag of the N'th item on the stack.  */
+
+bool
+dwarf_expr_context::fetch_in_stack_memory (int n)
+{
+  if (stack.size () <= n)
+     error (_("Asked for position %d of stack, "
+	      "stack only has %zu elements on it."),
+	    n, stack.size ());
+  return stack[stack.size () - (1 + n)].in_stack_memory;
+}
+
+/* Return true if the expression stack is empty.  */
+
+bool
+dwarf_expr_context::stack_empty_p () const
+{
+  return stack.empty ();
+}
+
+/* Add a new piece to the dwarf_expr_context's piece list.  */
+void
+dwarf_expr_context::add_piece (ULONGEST size, ULONGEST offset)
+{
+  this->pieces.emplace_back ();
+  dwarf_expr_piece &p = this->pieces.back ();
+
+  p.location = this->location;
+  p.size = size;
+  p.offset = offset;
+
+  if (p.location == DWARF_VALUE_LITERAL)
+    {
+      p.v.literal.data = this->data;
+      p.v.literal.length = this->len;
+    }
+  else if (stack_empty_p ())
+    {
+      p.location = DWARF_VALUE_OPTIMIZED_OUT;
+      /* Also reset the context's location, for our callers.  This is
+	 a somewhat strange approach, but this lets us avoid setting
+	 the location to DWARF_VALUE_MEMORY in all the individual
+	 cases in the evaluator.  */
+      this->location = DWARF_VALUE_OPTIMIZED_OUT;
+    }
+  else if (p.location == DWARF_VALUE_MEMORY)
+    {
+      p.v.mem.addr = fetch_address (0);
+      p.v.mem.in_stack_memory = fetch_in_stack_memory (0);
+    }
+  else if (p.location == DWARF_VALUE_IMPLICIT_POINTER)
+    {
+      p.v.ptr.die_sect_off = (sect_offset) this->len;
+      p.v.ptr.offset = value_as_long (fetch (0));
+    }
+  else if (p.location == DWARF_VALUE_REGISTER)
+    p.v.regno = value_as_long (fetch (0));
+  else
+    {
+      p.v.value = fetch (0);
+    }
+}
+
+/* Evaluate the expression at ADDR (LEN bytes long).  */
+
+void
+dwarf_expr_context::eval (const gdb_byte *addr, size_t len)
+{
+  int old_recursion_depth = this->recursion_depth;
+
+  execute_stack_op (addr, addr + len);
+
+  /* RECURSION_DEPTH becomes invalid if an exception was thrown here.  */
+
+  gdb_assert (this->recursion_depth == old_recursion_depth);
+}
+
+/* Helper to read a uleb128 value or throw an error.  */
+
+const gdb_byte *
+safe_read_uleb128 (const gdb_byte *buf, const gdb_byte *buf_end,
+		   uint64_t *r)
+{
+  buf = gdb_read_uleb128 (buf, buf_end, r);
+  if (buf == NULL)
+    error (_("DWARF expression error: ran off end of buffer reading uleb128 value"));
+  return buf;
+}
+
+/* Helper to read a sleb128 value or throw an error.  */
+
+const gdb_byte *
+safe_read_sleb128 (const gdb_byte *buf, const gdb_byte *buf_end,
+		   int64_t *r)
+{
+  buf = gdb_read_sleb128 (buf, buf_end, r);
+  if (buf == NULL)
+    error (_("DWARF expression error: ran off end of buffer reading sleb128 value"));
+  return buf;
+}
+
+const gdb_byte *
+safe_skip_leb128 (const gdb_byte *buf, const gdb_byte *buf_end)
+{
+  buf = gdb_skip_leb128 (buf, buf_end);
+  if (buf == NULL)
+    error (_("DWARF expression error: ran off end of buffer reading leb128 value"));
+  return buf;
+}
+
+
+/* Check that the current operator is either at the end of an
+   expression, or that it is followed by a composition operator or by
+   DW_OP_GNU_uninit (which should terminate the expression).  */
+
+void
+dwarf_expr_require_composition (const gdb_byte *op_ptr, const gdb_byte *op_end,
+				const char *op_name)
+{
+  if (op_ptr != op_end && *op_ptr != DW_OP_piece && *op_ptr != DW_OP_bit_piece
+      && *op_ptr != DW_OP_GNU_uninit)
+    error (_("DWARF-2 expression error: `%s' operations must be "
+	     "used either alone or in conjunction with DW_OP_piece "
+	     "or DW_OP_bit_piece."),
+	   op_name);
+}
+
+/* Return true iff the types T1 and T2 are "the same".  This only does
+   checks that might reasonably be needed to compare DWARF base
+   types.  */
+
+static int
+base_types_equal_p (struct type *t1, struct type *t2)
+{
+  if (t1->code () != t2->code ())
+    return 0;
+  if (TYPE_UNSIGNED (t1) != TYPE_UNSIGNED (t2))
+    return 0;
+  return TYPE_LENGTH (t1) == TYPE_LENGTH (t2);
+}
+
+/* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_reg* return the
+   DWARF register number.  Otherwise return -1.  */
+
+int
+dwarf_block_to_dwarf_reg (const gdb_byte *buf, const gdb_byte *buf_end)
+{
+  uint64_t dwarf_reg;
+
+  if (buf_end <= buf)
+    return -1;
+  if (*buf >= DW_OP_reg0 && *buf <= DW_OP_reg31)
+    {
+      if (buf_end - buf != 1)
+	return -1;
+      return *buf - DW_OP_reg0;
+    }
+
+  if (*buf == DW_OP_regval_type || *buf == DW_OP_GNU_regval_type)
+    {
+      buf++;
+      buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
+      if (buf == NULL)
+	return -1;
+      buf = gdb_skip_leb128 (buf, buf_end);
+      if (buf == NULL)
+	return -1;
+    }
+  else if (*buf == DW_OP_regx)
+    {
+      buf++;
+      buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
+      if (buf == NULL)
+	return -1;
+    }
+  else
+    return -1;
+  if (buf != buf_end || (int) dwarf_reg != dwarf_reg)
+    return -1;
+  return dwarf_reg;
+}
+
+/* If <BUF..BUF_END] contains DW_FORM_block* with just DW_OP_breg*(0) and
+   DW_OP_deref* return the DWARF register number.  Otherwise return -1.
+   DEREF_SIZE_RETURN contains -1 for DW_OP_deref; otherwise it contains the
+   size from DW_OP_deref_size.  */
+
+int
+dwarf_block_to_dwarf_reg_deref (const gdb_byte *buf, const gdb_byte *buf_end,
+				CORE_ADDR *deref_size_return)
+{
+  uint64_t dwarf_reg;
+  int64_t offset;
+
+  if (buf_end <= buf)
+    return -1;
+
+  if (*buf >= DW_OP_breg0 && *buf <= DW_OP_breg31)
+    {
+      dwarf_reg = *buf - DW_OP_breg0;
+      buf++;
+      if (buf >= buf_end)
+	return -1;
+    }
+  else if (*buf == DW_OP_bregx)
+    {
+      buf++;
+      buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
+      if (buf == NULL)
+	return -1;
+      if ((int) dwarf_reg != dwarf_reg)
+       return -1;
+    }
+  else
+    return -1;
+
+  buf = gdb_read_sleb128 (buf, buf_end, &offset);
+  if (buf == NULL)
+    return -1;
+  if (offset != 0)
+    return -1;
+
+  if (*buf == DW_OP_deref)
+    {
+      buf++;
+      *deref_size_return = -1;
+    }
+  else if (*buf == DW_OP_deref_size)
+    {
+      buf++;
+      if (buf >= buf_end)
+       return -1;
+      *deref_size_return = *buf++;
+    }
+  else
+    return -1;
+
+  if (buf != buf_end)
+    return -1;
+
+  return dwarf_reg;
+}
+
+/* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_fbreg(X) fill
+   in FB_OFFSET_RETURN with the X offset and return 1.  Otherwise return 0.  */
+
+int
+dwarf_block_to_fb_offset (const gdb_byte *buf, const gdb_byte *buf_end,
+			  CORE_ADDR *fb_offset_return)
+{
+  int64_t fb_offset;
+
+  if (buf_end <= buf)
+    return 0;
+
+  if (*buf != DW_OP_fbreg)
+    return 0;
+  buf++;
+
+  buf = gdb_read_sleb128 (buf, buf_end, &fb_offset);
+  if (buf == NULL)
+    return 0;
+  *fb_offset_return = fb_offset;
+  if (buf != buf_end || fb_offset != (LONGEST) *fb_offset_return)
+    return 0;
+
+  return 1;
+}
+
+/* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_bregSP(X) fill
+   in SP_OFFSET_RETURN with the X offset and return 1.  Otherwise return 0.
+   The matched SP register number depends on GDBARCH.  */
+
+int
+dwarf_block_to_sp_offset (struct gdbarch *gdbarch, const gdb_byte *buf,
+			  const gdb_byte *buf_end, CORE_ADDR *sp_offset_return)
+{
+  uint64_t dwarf_reg;
+  int64_t sp_offset;
+
+  if (buf_end <= buf)
+    return 0;
+  if (*buf >= DW_OP_breg0 && *buf <= DW_OP_breg31)
+    {
+      dwarf_reg = *buf - DW_OP_breg0;
+      buf++;
+    }
+  else
+    {
+      if (*buf != DW_OP_bregx)
+       return 0;
+      buf++;
+      buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
+      if (buf == NULL)
+	return 0;
+    }
+
+  if (dwarf_reg_to_regnum (gdbarch, dwarf_reg)
+      != gdbarch_sp_regnum (gdbarch))
+    return 0;
+
+  buf = gdb_read_sleb128 (buf, buf_end, &sp_offset);
+  if (buf == NULL)
+    return 0;
+  *sp_offset_return = sp_offset;
+  if (buf != buf_end || sp_offset != (LONGEST) *sp_offset_return)
+    return 0;
+
+  return 1;
+}
+
+/* The engine for the expression evaluator.  Using the context in this
+   object, evaluate the expression between OP_PTR and OP_END.  */
+
+void
+dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr,
+				      const gdb_byte *op_end)
+{
+  enum bfd_endian byte_order = gdbarch_byte_order (this->gdbarch);
+  /* Old-style "untyped" DWARF values need special treatment in a
+     couple of places, specifically DW_OP_mod and DW_OP_shr.  We need
+     a special type for these values so we can distinguish them from
+     values that have an explicit type, because explicitly-typed
+     values do not need special treatment.  This special type must be
+     different (in the `==' sense) from any base type coming from the
+     CU.  */
+  struct type *address_type = this->address_type ();
+
+  this->location = DWARF_VALUE_MEMORY;
+  this->initialized = 1;  /* Default is initialized.  */
+
+  if (this->recursion_depth > this->max_recursion_depth)
+    error (_("DWARF-2 expression error: Loop detected (%d)."),
+	   this->recursion_depth);
+  this->recursion_depth++;
+
+  while (op_ptr < op_end)
+    {
+      enum dwarf_location_atom op = (enum dwarf_location_atom) *op_ptr++;
+      ULONGEST result;
+      /* Assume the value is not in stack memory.
+	 Code that knows otherwise sets this to true.
+	 Some arithmetic on stack addresses can probably be assumed to still
+	 be a stack address, but we skip this complication for now.
+	 This is just an optimization, so it's always ok to punt
+	 and leave this as false.  */
+      bool in_stack_memory = false;
+      uint64_t uoffset, reg;
+      int64_t offset;
+      struct value *result_val = NULL;
+
+      /* The DWARF expression might have a bug causing an infinite
+	 loop.  In that case, quitting is the only way out.  */
+      QUIT;
+
+      switch (op)
+	{
+	case DW_OP_lit0:
+	case DW_OP_lit1:
+	case DW_OP_lit2:
+	case DW_OP_lit3:
+	case DW_OP_lit4:
+	case DW_OP_lit5:
+	case DW_OP_lit6:
+	case DW_OP_lit7:
+	case DW_OP_lit8:
+	case DW_OP_lit9:
+	case DW_OP_lit10:
+	case DW_OP_lit11:
+	case DW_OP_lit12:
+	case DW_OP_lit13:
+	case DW_OP_lit14:
+	case DW_OP_lit15:
+	case DW_OP_lit16:
+	case DW_OP_lit17:
+	case DW_OP_lit18:
+	case DW_OP_lit19:
+	case DW_OP_lit20:
+	case DW_OP_lit21:
+	case DW_OP_lit22:
+	case DW_OP_lit23:
+	case DW_OP_lit24:
+	case DW_OP_lit25:
+	case DW_OP_lit26:
+	case DW_OP_lit27:
+	case DW_OP_lit28:
+	case DW_OP_lit29:
+	case DW_OP_lit30:
+	case DW_OP_lit31:
+	  result = op - DW_OP_lit0;
+	  result_val = value_from_ulongest (address_type, result);
+	  break;
+
+	case DW_OP_addr:
+	  result = extract_unsigned_integer (op_ptr,
+					     this->addr_size, byte_order);
+	  op_ptr += this->addr_size;
+	  /* Some versions of GCC emit DW_OP_addr before
+	     DW_OP_GNU_push_tls_address.  In this case the value is an
+	     index, not an address.  We don't support things like
+	     branching between the address and the TLS op.  */
+	  if (op_ptr >= op_end || *op_ptr != DW_OP_GNU_push_tls_address)
+	    result += this->per_objfile->objfile->text_section_offset ();
+	  result_val = value_from_ulongest (address_type, result);
+	  break;
+
+	case DW_OP_addrx:
+	case DW_OP_GNU_addr_index:
+	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
+	  result = this->get_addr_index (uoffset);
+	  result += this->per_objfile->objfile->text_section_offset ();
+	  result_val = value_from_ulongest (address_type, result);
+	  break;
+	case DW_OP_GNU_const_index:
+	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
+	  result = this->get_addr_index (uoffset);
+	  result_val = value_from_ulongest (address_type, result);
+	  break;
+
+	case DW_OP_const1u:
+	  result = extract_unsigned_integer (op_ptr, 1, byte_order);
+	  result_val = value_from_ulongest (address_type, result);
+	  op_ptr += 1;
+	  break;
+	case DW_OP_const1s:
+	  result = extract_signed_integer (op_ptr, 1, byte_order);
+	  result_val = value_from_ulongest (address_type, result);
+	  op_ptr += 1;
+	  break;
+	case DW_OP_const2u:
+	  result = extract_unsigned_integer (op_ptr, 2, byte_order);
+	  result_val = value_from_ulongest (address_type, result);
+	  op_ptr += 2;
+	  break;
+	case DW_OP_const2s:
+	  result = extract_signed_integer (op_ptr, 2, byte_order);
+	  result_val = value_from_ulongest (address_type, result);
+	  op_ptr += 2;
+	  break;
+	case DW_OP_const4u:
+	  result = extract_unsigned_integer (op_ptr, 4, byte_order);
+	  result_val = value_from_ulongest (address_type, result);
+	  op_ptr += 4;
+	  break;
+	case DW_OP_const4s:
+	  result = extract_signed_integer (op_ptr, 4, byte_order);
+	  result_val = value_from_ulongest (address_type, result);
+	  op_ptr += 4;
+	  break;
+	case DW_OP_const8u:
+	  result = extract_unsigned_integer (op_ptr, 8, byte_order);
+	  result_val = value_from_ulongest (address_type, result);
+	  op_ptr += 8;
+	  break;
+	case DW_OP_const8s:
+	  result = extract_signed_integer (op_ptr, 8, byte_order);
+	  result_val = value_from_ulongest (address_type, result);
+	  op_ptr += 8;
+	  break;
+	case DW_OP_constu:
+	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
+	  result = uoffset;
+	  result_val = value_from_ulongest (address_type, result);
+	  break;
+	case DW_OP_consts:
+	  op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
+	  result = offset;
+	  result_val = value_from_ulongest (address_type, result);
+	  break;
+
+	/* The DW_OP_reg operations are required to occur alone in
+	   location expressions.  */
+	case DW_OP_reg0:
+	case DW_OP_reg1:
+	case DW_OP_reg2:
+	case DW_OP_reg3:
+	case DW_OP_reg4:
+	case DW_OP_reg5:
+	case DW_OP_reg6:
+	case DW_OP_reg7:
+	case DW_OP_reg8:
+	case DW_OP_reg9:
+	case DW_OP_reg10:
+	case DW_OP_reg11:
+	case DW_OP_reg12:
+	case DW_OP_reg13:
+	case DW_OP_reg14:
+	case DW_OP_reg15:
+	case DW_OP_reg16:
+	case DW_OP_reg17:
+	case DW_OP_reg18:
+	case DW_OP_reg19:
+	case DW_OP_reg20:
+	case DW_OP_reg21:
+	case DW_OP_reg22:
+	case DW_OP_reg23:
+	case DW_OP_reg24:
+	case DW_OP_reg25:
+	case DW_OP_reg26:
+	case DW_OP_reg27:
+	case DW_OP_reg28:
+	case DW_OP_reg29:
+	case DW_OP_reg30:
+	case DW_OP_reg31:
+	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_reg");
+
+	  result = op - DW_OP_reg0;
+	  result_val = value_from_ulongest (address_type, result);
+	  this->location = DWARF_VALUE_REGISTER;
+	  break;
+
+	case DW_OP_regx:
+	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
+	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
+
+	  result = reg;
+	  result_val = value_from_ulongest (address_type, result);
+	  this->location = DWARF_VALUE_REGISTER;
+	  break;
+
+	case DW_OP_implicit_value:
+	  {
+	    uint64_t len;
+
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &len);
+	    if (op_ptr + len > op_end)
+	      error (_("DW_OP_implicit_value: too few bytes available."));
+	    this->len = len;
+	    this->data = op_ptr;
+	    this->location = DWARF_VALUE_LITERAL;
+	    op_ptr += len;
+	    dwarf_expr_require_composition (op_ptr, op_end,
+					    "DW_OP_implicit_value");
+	  }
+	  goto no_push;
+
+	case DW_OP_stack_value:
+	  this->location = DWARF_VALUE_STACK;
+	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_stack_value");
+	  goto no_push;
+
+	case DW_OP_implicit_pointer:
+	case DW_OP_GNU_implicit_pointer:
+	  {
+	    int64_t len;
+
+	    if (this->ref_addr_size == -1)
+	      error (_("DWARF-2 expression error: DW_OP_implicit_pointer "
+		       "is not allowed in frame context"));
+
+	    /* The referred-to DIE of sect_offset kind.  */
+	    this->len = extract_unsigned_integer (op_ptr, this->ref_addr_size,
+						 byte_order);
+	    op_ptr += this->ref_addr_size;
+
+	    /* The byte offset into the data.  */
+	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &len);
+	    result = (ULONGEST) len;
+	    result_val = value_from_ulongest (address_type, result);
+
+	    this->location = DWARF_VALUE_IMPLICIT_POINTER;
+	    dwarf_expr_require_composition (op_ptr, op_end,
+					    "DW_OP_implicit_pointer");
+	  }
+	  break;
+
+	case DW_OP_breg0:
+	case DW_OP_breg1:
+	case DW_OP_breg2:
+	case DW_OP_breg3:
+	case DW_OP_breg4:
+	case DW_OP_breg5:
+	case DW_OP_breg6:
+	case DW_OP_breg7:
+	case DW_OP_breg8:
+	case DW_OP_breg9:
+	case DW_OP_breg10:
+	case DW_OP_breg11:
+	case DW_OP_breg12:
+	case DW_OP_breg13:
+	case DW_OP_breg14:
+	case DW_OP_breg15:
+	case DW_OP_breg16:
+	case DW_OP_breg17:
+	case DW_OP_breg18:
+	case DW_OP_breg19:
+	case DW_OP_breg20:
+	case DW_OP_breg21:
+	case DW_OP_breg22:
+	case DW_OP_breg23:
+	case DW_OP_breg24:
+	case DW_OP_breg25:
+	case DW_OP_breg26:
+	case DW_OP_breg27:
+	case DW_OP_breg28:
+	case DW_OP_breg29:
+	case DW_OP_breg30:
+	case DW_OP_breg31:
+	  {
+	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
+	    result = this->read_addr_from_reg (op - DW_OP_breg0);
+	    result += offset;
+	    result_val = value_from_ulongest (address_type, result);
+	  }
+	  break;
+	case DW_OP_bregx:
+	  {
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
+	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
+	    result = this->read_addr_from_reg (reg);
+	    result += offset;
+	    result_val = value_from_ulongest (address_type, result);
+	  }
+	  break;
+	case DW_OP_fbreg:
+	  {
+	    const gdb_byte *datastart;
+	    size_t datalen;
+
+	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
+
+	    /* Rather than create a whole new context, we simply
+	       backup the current stack locally and install a new empty stack,
+	       then reset it afterwards, effectively erasing whatever the
+	       recursive call put there.  */
+	    std::vector<dwarf_stack_value> saved_stack = std::move (stack);
+	    stack.clear ();
+
+	    /* FIXME: cagney/2003-03-26: This code should be using
+               get_frame_base_address(), and then implement a dwarf2
+               specific this_base method.  */
+	    this->get_frame_base (&datastart, &datalen);
+	    eval (datastart, datalen);
+	    if (this->location == DWARF_VALUE_MEMORY)
+	      result = fetch_address (0);
+	    else if (this->location == DWARF_VALUE_REGISTER)
+	      result = this->read_addr_from_reg (value_as_long (fetch (0)));
+	    else
+	      error (_("Not implemented: computing frame "
+		       "base using explicit value operator"));
+	    result = result + offset;
+	    result_val = value_from_ulongest (address_type, result);
+	    in_stack_memory = true;
+
+	    /* Restore the content of the original stack.  */
+	    stack = std::move (saved_stack);
+
+	    this->location = DWARF_VALUE_MEMORY;
+	  }
+	  break;
+
+	case DW_OP_dup:
+	  result_val = fetch (0);
+	  in_stack_memory = fetch_in_stack_memory (0);
+	  break;
+
+	case DW_OP_drop:
+	  pop ();
+	  goto no_push;
+
+	case DW_OP_pick:
+	  offset = *op_ptr++;
+	  result_val = fetch (offset);
+	  in_stack_memory = fetch_in_stack_memory (offset);
+	  break;
+	  
+	case DW_OP_swap:
+	  {
+	    if (stack.size () < 2)
+	       error (_("Not enough elements for "
+			"DW_OP_swap.  Need 2, have %zu."),
+		      stack.size ());
+
+	    dwarf_stack_value &t1 = stack[stack.size () - 1];
+	    dwarf_stack_value &t2 = stack[stack.size () - 2];
+	    std::swap (t1, t2);
+	    goto no_push;
+	  }
+
+	case DW_OP_over:
+	  result_val = fetch (1);
+	  in_stack_memory = fetch_in_stack_memory (1);
+	  break;
+
+	case DW_OP_rot:
+	  {
+	    if (stack.size () < 3)
+	       error (_("Not enough elements for "
+			"DW_OP_rot.  Need 3, have %zu."),
+		      stack.size ());
+
+	    dwarf_stack_value temp = stack[stack.size () - 1];
+	    stack[stack.size () - 1] = stack[stack.size () - 2];
+	    stack[stack.size () - 2] = stack[stack.size () - 3];
+	    stack[stack.size () - 3] = temp;
+	    goto no_push;
+	  }
+
+	case DW_OP_deref:
+	case DW_OP_deref_size:
+	case DW_OP_deref_type:
+	case DW_OP_GNU_deref_type:
+	  {
+	    int addr_size = (op == DW_OP_deref ? this->addr_size : *op_ptr++);
+	    gdb_byte *buf = (gdb_byte *) alloca (addr_size);
+	    CORE_ADDR addr = fetch_address (0);
+	    struct type *type;
+
+	    pop ();
+
+	    if (op == DW_OP_deref_type || op == DW_OP_GNU_deref_type)
+	      {
+		op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
+		cu_offset type_die_cu_off = (cu_offset) uoffset;
+		type = get_base_type (type_die_cu_off, 0);
+	      }
+	    else
+	      type = address_type;
+
+	    this->read_mem (buf, addr, addr_size);
+
+	    /* If the size of the object read from memory is different
+	       from the type length, we need to zero-extend it.  */
+	    if (TYPE_LENGTH (type) != addr_size)
+	      {
+		ULONGEST datum =
+		  extract_unsigned_integer (buf, addr_size, byte_order);
+
+		buf = (gdb_byte *) alloca (TYPE_LENGTH (type));
+		store_unsigned_integer (buf, TYPE_LENGTH (type),
+					byte_order, datum);
+	      }
+
+	    result_val = value_from_contents_and_address (type, buf, addr);
+	    break;
+	  }
+
+	case DW_OP_abs:
+	case DW_OP_neg:
+	case DW_OP_not:
+	case DW_OP_plus_uconst:
+	  {
+	    /* Unary operations.  */
+	    result_val = fetch (0);
+	    pop ();
+
+	    switch (op)
+	      {
+	      case DW_OP_abs:
+		if (value_less (result_val,
+				value_zero (value_type (result_val), not_lval)))
+		  result_val = value_neg (result_val);
+		break;
+	      case DW_OP_neg:
+		result_val = value_neg (result_val);
+		break;
+	      case DW_OP_not:
+		dwarf_require_integral (value_type (result_val));
+		result_val = value_complement (result_val);
+		break;
+	      case DW_OP_plus_uconst:
+		dwarf_require_integral (value_type (result_val));
+		result = value_as_long (result_val);
+		op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
+		result += reg;
+		result_val = value_from_ulongest (address_type, result);
+		break;
+	      }
+	  }
+	  break;
+
+	case DW_OP_and:
+	case DW_OP_div:
+	case DW_OP_minus:
+	case DW_OP_mod:
+	case DW_OP_mul:
+	case DW_OP_or:
+	case DW_OP_plus:
+	case DW_OP_shl:
+	case DW_OP_shr:
+	case DW_OP_shra:
+	case DW_OP_xor:
+	case DW_OP_le:
+	case DW_OP_ge:
+	case DW_OP_eq:
+	case DW_OP_lt:
+	case DW_OP_gt:
+	case DW_OP_ne:
+	  {
+	    /* Binary operations.  */
+	    struct value *first, *second;
+
+	    second = fetch (0);
+	    pop ();
+
+	    first = fetch (0);
+	    pop ();
+
+	    if (! base_types_equal_p (value_type (first), value_type (second)))
+	      error (_("Incompatible types on DWARF stack"));
+
+	    switch (op)
+	      {
+	      case DW_OP_and:
+		dwarf_require_integral (value_type (first));
+		dwarf_require_integral (value_type (second));
+		result_val = value_binop (first, second, BINOP_BITWISE_AND);
+		break;
+	      case DW_OP_div:
+		result_val = value_binop (first, second, BINOP_DIV);
+                break;
+	      case DW_OP_minus:
+		result_val = value_binop (first, second, BINOP_SUB);
+		break;
+	      case DW_OP_mod:
+		{
+		  int cast_back = 0;
+		  struct type *orig_type = value_type (first);
+
+		  /* We have to special-case "old-style" untyped values
+		     -- these must have mod computed using unsigned
+		     math.  */
+		  if (orig_type == address_type)
+		    {
+		      struct type *utype
+			= get_unsigned_type (this->gdbarch, orig_type);
+
+		      cast_back = 1;
+		      first = value_cast (utype, first);
+		      second = value_cast (utype, second);
+		    }
+		  /* Note that value_binop doesn't handle float or
+		     decimal float here.  This seems unimportant.  */
+		  result_val = value_binop (first, second, BINOP_MOD);
+		  if (cast_back)
+		    result_val = value_cast (orig_type, result_val);
+		}
+		break;
+	      case DW_OP_mul:
+		result_val = value_binop (first, second, BINOP_MUL);
+		break;
+	      case DW_OP_or:
+		dwarf_require_integral (value_type (first));
+		dwarf_require_integral (value_type (second));
+		result_val = value_binop (first, second, BINOP_BITWISE_IOR);
+		break;
+	      case DW_OP_plus:
+		result_val = value_binop (first, second, BINOP_ADD);
+		break;
+	      case DW_OP_shl:
+		dwarf_require_integral (value_type (first));
+		dwarf_require_integral (value_type (second));
+		result_val = value_binop (first, second, BINOP_LSH);
+		break;
+	      case DW_OP_shr:
+		dwarf_require_integral (value_type (first));
+		dwarf_require_integral (value_type (second));
+		if (!TYPE_UNSIGNED (value_type (first)))
+		  {
+		    struct type *utype
+		      = get_unsigned_type (this->gdbarch, value_type (first));
+
+		    first = value_cast (utype, first);
+		  }
+
+		result_val = value_binop (first, second, BINOP_RSH);
+		/* Make sure we wind up with the same type we started
+		   with.  */
+		if (value_type (result_val) != value_type (second))
+		  result_val = value_cast (value_type (second), result_val);
+                break;
+	      case DW_OP_shra:
+		dwarf_require_integral (value_type (first));
+		dwarf_require_integral (value_type (second));
+		if (TYPE_UNSIGNED (value_type (first)))
+		  {
+		    struct type *stype
+		      = get_signed_type (this->gdbarch, value_type (first));
+
+		    first = value_cast (stype, first);
+		  }
+
+		result_val = value_binop (first, second, BINOP_RSH);
+		/* Make sure we wind up with the same type we started
+		   with.  */
+		if (value_type (result_val) != value_type (second))
+		  result_val = value_cast (value_type (second), result_val);
+		break;
+	      case DW_OP_xor:
+		dwarf_require_integral (value_type (first));
+		dwarf_require_integral (value_type (second));
+		result_val = value_binop (first, second, BINOP_BITWISE_XOR);
+		break;
+	      case DW_OP_le:
+		/* A <= B is !(B < A).  */
+		result = ! value_less (second, first);
+		result_val = value_from_ulongest (address_type, result);
+		break;
+	      case DW_OP_ge:
+		/* A >= B is !(A < B).  */
+		result = ! value_less (first, second);
+		result_val = value_from_ulongest (address_type, result);
+		break;
+	      case DW_OP_eq:
+		result = value_equal (first, second);
+		result_val = value_from_ulongest (address_type, result);
+		break;
+	      case DW_OP_lt:
+		result = value_less (first, second);
+		result_val = value_from_ulongest (address_type, result);
+		break;
+	      case DW_OP_gt:
+		/* A > B is B < A.  */
+		result = value_less (second, first);
+		result_val = value_from_ulongest (address_type, result);
+		break;
+	      case DW_OP_ne:
+		result = ! value_equal (first, second);
+		result_val = value_from_ulongest (address_type, result);
+		break;
+	      default:
+		internal_error (__FILE__, __LINE__,
+				_("Can't be reached."));
+	      }
+	  }
+	  break;
+
+	case DW_OP_call_frame_cfa:
+	  result = this->get_frame_cfa ();
+	  result_val = value_from_ulongest (address_type, result);
+	  in_stack_memory = true;
+	  break;
+
+	case DW_OP_GNU_push_tls_address:
+	case DW_OP_form_tls_address:
+	  /* Variable is at a constant offset in the thread-local
+	  storage block into the objfile for the current thread and
+	  the dynamic linker module containing this expression.  Here
+	  we return returns the offset from that base.  The top of the
+	  stack has the offset from the beginning of the thread
+	  control block at which the variable is located.  Nothing
+	  should follow this operator, so the top of stack would be
+	  returned.  */
+	  result = value_as_long (fetch (0));
+	  pop ();
+	  result = this->get_tls_address (result);
+	  result_val = value_from_ulongest (address_type, result);
+	  break;
+
+	case DW_OP_skip:
+	  offset = extract_signed_integer (op_ptr, 2, byte_order);
+	  op_ptr += 2;
+	  op_ptr += offset;
+	  goto no_push;
+
+	case DW_OP_bra:
+	  {
+	    struct value *val;
+
+	    offset = extract_signed_integer (op_ptr, 2, byte_order);
+	    op_ptr += 2;
+	    val = fetch (0);
+	    dwarf_require_integral (value_type (val));
+	    if (value_as_long (val) != 0)
+	      op_ptr += offset;
+	    pop ();
+	  }
+	  goto no_push;
+
+	case DW_OP_nop:
+	  goto no_push;
+
+        case DW_OP_piece:
+          {
+            uint64_t size;
+
+            /* Record the piece.  */
+            op_ptr = safe_read_uleb128 (op_ptr, op_end, &size);
+	    add_piece (8 * size, 0);
+
+            /* Pop off the address/regnum, and reset the location
+	       type.  */
+	    if (this->location != DWARF_VALUE_LITERAL
+		&& this->location != DWARF_VALUE_OPTIMIZED_OUT)
+	      pop ();
+            this->location = DWARF_VALUE_MEMORY;
+          }
+          goto no_push;
+
+	case DW_OP_bit_piece:
+	  {
+	    uint64_t size, uleb_offset;
+
+            /* Record the piece.  */
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &size);
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &uleb_offset);
+	    add_piece (size, uleb_offset);
+
+            /* Pop off the address/regnum, and reset the location
+	       type.  */
+	    if (this->location != DWARF_VALUE_LITERAL
+		&& this->location != DWARF_VALUE_OPTIMIZED_OUT)
+	      pop ();
+            this->location = DWARF_VALUE_MEMORY;
+	  }
+	  goto no_push;
+
+	case DW_OP_GNU_uninit:
+	  if (op_ptr != op_end)
+	    error (_("DWARF-2 expression error: DW_OP_GNU_uninit must always "
+		   "be the very last op."));
+
+	  this->initialized = 0;
+	  goto no_push;
+
+	case DW_OP_call2:
+	  {
+	    cu_offset cu_off
+	      = (cu_offset) extract_unsigned_integer (op_ptr, 2, byte_order);
+	    op_ptr += 2;
+	    this->dwarf_call (cu_off);
+	  }
+	  goto no_push;
+
+	case DW_OP_call4:
+	  {
+	    cu_offset cu_off
+	      = (cu_offset) extract_unsigned_integer (op_ptr, 4, byte_order);
+	    op_ptr += 4;
+	    this->dwarf_call (cu_off);
+	  }
+	  goto no_push;
+
+	case DW_OP_GNU_variable_value:
+	  {
+	    sect_offset sect_off
+	      = (sect_offset) extract_unsigned_integer (op_ptr,
+	                                                this->ref_addr_size,
+							byte_order);
+	    op_ptr += this->ref_addr_size;
+	    result_val = value_cast (address_type,
+				     this->dwarf_variable_value (sect_off));
+	  }
+	  break;
+	
+	case DW_OP_entry_value:
+	case DW_OP_GNU_entry_value:
+	  {
+	    uint64_t len;
+	    CORE_ADDR deref_size;
+	    union call_site_parameter_u kind_u;
+
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &len);
+	    if (op_ptr + len > op_end)
+	      error (_("DW_OP_entry_value: too few bytes available."));
+
+	    kind_u.dwarf_reg = dwarf_block_to_dwarf_reg (op_ptr, op_ptr + len);
+	    if (kind_u.dwarf_reg != -1)
+	      {
+		op_ptr += len;
+		this->push_dwarf_reg_entry_value (CALL_SITE_PARAMETER_DWARF_REG,
+						  kind_u,
+						  -1 /* deref_size */);
+		goto no_push;
+	      }
+
+	    kind_u.dwarf_reg = dwarf_block_to_dwarf_reg_deref (op_ptr,
+							       op_ptr + len,
+							       &deref_size);
+	    if (kind_u.dwarf_reg != -1)
+	      {
+		if (deref_size == -1)
+		  deref_size = this->addr_size;
+		op_ptr += len;
+		this->push_dwarf_reg_entry_value (CALL_SITE_PARAMETER_DWARF_REG,
+						  kind_u, deref_size);
+		goto no_push;
+	      }
+
+	    error (_("DWARF-2 expression error: DW_OP_entry_value is "
+		     "supported only for single DW_OP_reg* "
+		     "or for DW_OP_breg*(0)+DW_OP_deref*"));
+	  }
+
+	case DW_OP_GNU_parameter_ref:
+	  {
+	    union call_site_parameter_u kind_u;
+
+	    kind_u.param_cu_off
+	      = (cu_offset) extract_unsigned_integer (op_ptr, 4, byte_order);
+	    op_ptr += 4;
+	    this->push_dwarf_reg_entry_value (CALL_SITE_PARAMETER_PARAM_OFFSET,
+					      kind_u,
+					      -1 /* deref_size */);
+	  }
+	  goto no_push;
+
+	case DW_OP_const_type:
+	case DW_OP_GNU_const_type:
+	  {
+	    int n;
+	    const gdb_byte *data;
+	    struct type *type;
+
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
+	    cu_offset type_die_cu_off = (cu_offset) uoffset;
+
+	    n = *op_ptr++;
+	    data = op_ptr;
+	    op_ptr += n;
+
+	    type = get_base_type (type_die_cu_off, n);
+	    result_val = value_from_contents (type, data);
+	  }
+	  break;
+
+	case DW_OP_regval_type:
+	case DW_OP_GNU_regval_type:
+	  {
+	    struct type *type;
+
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
+	    cu_offset type_die_cu_off = (cu_offset) uoffset;
+
+	    type = get_base_type (type_die_cu_off, 0);
+	    result_val = this->get_reg_value (type, reg);
+	  }
+	  break;
+
+	case DW_OP_convert:
+	case DW_OP_GNU_convert:
+	case DW_OP_reinterpret:
+	case DW_OP_GNU_reinterpret:
+	  {
+	    struct type *type;
+
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
+	    cu_offset type_die_cu_off = (cu_offset) uoffset;
+
+	    if (to_underlying (type_die_cu_off) == 0)
+	      type = address_type;
+	    else
+	      type = get_base_type (type_die_cu_off, 0);
+
+	    result_val = fetch (0);
+	    pop ();
+
+	    if (op == DW_OP_convert || op == DW_OP_GNU_convert)
+	      result_val = value_cast (type, result_val);
+	    else if (type == value_type (result_val))
+	      {
+		/* Nothing.  */
+	      }
+	    else if (TYPE_LENGTH (type)
+		     != TYPE_LENGTH (value_type (result_val)))
+	      error (_("DW_OP_reinterpret has wrong size"));
+	    else
+	      result_val
+		= value_from_contents (type,
+				       value_contents_all (result_val));
+	  }
+	  break;
+
+	case DW_OP_push_object_address:
+	  /* Return the address of the object we are currently observing.  */
+	  result = this->get_object_address ();
+	  result_val = value_from_ulongest (address_type, result);
+	  break;
+
+	default:
+	  error (_("Unhandled dwarf expression opcode 0x%x"), op);
+	}
+
+      /* Most things push a result value.  */
+      gdb_assert (result_val != NULL);
+      push (result_val, in_stack_memory);
+    no_push:
+      ;
+    }
+
+  /* To simplify our main caller, if the result is an implicit
+     pointer, then make a pieced value.  This is ok because we can't
+     have implicit pointers in contexts where pieces are invalid.  */
+  if (this->location == DWARF_VALUE_IMPLICIT_POINTER)
+    add_piece (8 * this->addr_size, 0);
+
+  this->recursion_depth--;
+  gdb_assert (this->recursion_depth >= 0);
+}
+
+void _initialize_dwarf2expr ();
+void
+_initialize_dwarf2expr ()
+{
+  dwarf_arch_cookie
+    = gdbarch_data_register_post_init (dwarf_gdbarch_types_init);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/expr.h ./gdb/dwarf2/expr.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/expr.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/expr.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,326 @@
+/* DWARF 2 Expression Evaluator.
+
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
+
+   Contributed by Daniel Berlin <dan@dberlin.org>.
+
+   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/>.  */
+
+#if !defined (DWARF2EXPR_H)
+#define DWARF2EXPR_H
+
+#include "leb128.h"
+#include "gdbtypes.h"
+
+struct dwarf2_per_objfile;
+
+/* The location of a value.  */
+enum dwarf_value_location
+{
+  /* The piece is in memory.
+     The value on the dwarf stack is its address.  */
+  DWARF_VALUE_MEMORY,
+
+  /* The piece is in a register.
+     The value on the dwarf stack is the register number.  */
+  DWARF_VALUE_REGISTER,
+
+  /* The piece is on the dwarf stack.  */
+  DWARF_VALUE_STACK,
+
+  /* The piece is a literal.  */
+  DWARF_VALUE_LITERAL,
+
+  /* The piece was optimized out.  */
+  DWARF_VALUE_OPTIMIZED_OUT,
+
+  /* The piece is an implicit pointer.  */
+  DWARF_VALUE_IMPLICIT_POINTER
+};
+
+/* A piece of an object, as recorded by DW_OP_piece or DW_OP_bit_piece.  */
+struct dwarf_expr_piece
+{
+  enum dwarf_value_location location;
+
+  union
+  {
+    struct
+    {
+      /* This piece's address, for DWARF_VALUE_MEMORY pieces.  */
+      CORE_ADDR addr;
+      /* Non-zero if the piece is known to be in memory and on
+	 the program's stack.  */
+      bool in_stack_memory;
+    } mem;
+
+    /* The piece's register number, for DWARF_VALUE_REGISTER pieces.  */
+    int regno;
+
+    /* The piece's literal value, for DWARF_VALUE_STACK pieces.  */
+    struct value *value;
+
+    struct
+    {
+      /* A pointer to the data making up this piece,
+	 for DWARF_VALUE_LITERAL pieces.  */
+      const gdb_byte *data;
+      /* The length of the available data.  */
+      ULONGEST length;
+    } literal;
+
+    /* Used for DWARF_VALUE_IMPLICIT_POINTER.  */
+    struct
+    {
+      /* The referent DIE from DW_OP_implicit_pointer.  */
+      sect_offset die_sect_off;
+      /* The byte offset into the resulting data.  */
+      LONGEST offset;
+    } ptr;
+  } v;
+
+  /* The length of the piece, in bits.  */
+  ULONGEST size;
+  /* The piece offset, in bits.  */
+  ULONGEST offset;
+};
+
+/* The dwarf expression stack.  */
+
+struct dwarf_stack_value
+{
+  dwarf_stack_value (struct value *value_, int in_stack_memory_)
+  : value (value_), in_stack_memory (in_stack_memory_)
+  {}
+
+  struct value *value;
+
+  /* True if the piece is in memory and is known to be on the program's stack.
+     It is always ok to set this to zero.  This is used, for example, to
+     optimize memory access from the target.  It can vastly speed up backtraces
+     on long latency connections when "set stack-cache on".  */
+  bool in_stack_memory;
+};
+
+/* The expression evaluator works with a dwarf_expr_context, describing
+   its current state and its callbacks.  */
+struct dwarf_expr_context
+{
+  dwarf_expr_context (dwarf2_per_objfile *per_objfile);
+  virtual ~dwarf_expr_context () = default;
+
+  void push_address (CORE_ADDR value, bool in_stack_memory);
+  void eval (const gdb_byte *addr, size_t len);
+  struct value *fetch (int n);
+  CORE_ADDR fetch_address (int n);
+  bool fetch_in_stack_memory (int n);
+
+  /* The stack of values.  */
+  std::vector<dwarf_stack_value> stack;
+
+  /* Target architecture to use for address operations.  */
+  struct gdbarch *gdbarch;
+
+  /* Target address size in bytes.  */
+  int addr_size;
+
+  /* DW_FORM_ref_addr size in bytes.  If -1 DWARF is executed from a frame
+     context and operations depending on DW_FORM_ref_addr are not allowed.  */
+  int ref_addr_size;
+
+  /* The current depth of dwarf expression recursion, via DW_OP_call*,
+     DW_OP_fbreg, DW_OP_push_object_address, etc., and the maximum
+     depth we'll tolerate before raising an error.  */
+  int recursion_depth, max_recursion_depth;
+
+  /* Location of the value.  */
+  enum dwarf_value_location location;
+
+  /* For DWARF_VALUE_LITERAL, the current literal value's length and
+     data.  For DWARF_VALUE_IMPLICIT_POINTER, LEN is the offset of the
+     target DIE of sect_offset kind.  */
+  ULONGEST len;
+  const gdb_byte *data;
+
+  /* Initialization status of variable: Non-zero if variable has been
+     initialized; zero otherwise.  */
+  int initialized;
+
+  /* A vector of pieces.
+
+     Each time DW_OP_piece is executed, we add a new element to the
+     end of this array, recording the current top of the stack, the
+     current location, and the size given as the operand to
+     DW_OP_piece.  We then pop the top value from the stack, reset the
+     location, and resume evaluation.
+
+     The Dwarf spec doesn't say whether DW_OP_piece pops the top value
+     from the stack.  We do, ensuring that clients of this interface
+     expecting to see a value left on the top of the stack (say, code
+     evaluating frame base expressions or CFA's specified with
+     DW_CFA_def_cfa_expression) will get an error if the expression
+     actually marks all the values it computes as pieces.
+
+     If an expression never uses DW_OP_piece, num_pieces will be zero.
+     (It would be nice to present these cases as expressions yielding
+     a single piece, so that callers need not distinguish between the
+     no-DW_OP_piece and one-DW_OP_piece cases.  But expressions with
+     no DW_OP_piece operations have no value to place in a piece's
+     'size' field; the size comes from the surrounding data.  So the
+     two cases need to be handled separately.)  */
+  std::vector<dwarf_expr_piece> pieces;
+
+  /* We evaluate the expression in the context of this objfile.  */
+  dwarf2_per_objfile *per_objfile;
+
+  /* Return the value of register number REGNUM (a DWARF register number),
+     read as an address.  */
+  virtual CORE_ADDR read_addr_from_reg (int regnum) = 0;
+
+  /* Return a value of type TYPE, stored in register number REGNUM
+     of the frame associated to the given BATON.
+
+     REGNUM is a DWARF register number.  */
+  virtual struct value *get_reg_value (struct type *type, int regnum) = 0;
+
+  /* Read LENGTH bytes at ADDR into BUF.  */
+  virtual void read_mem (gdb_byte *buf, CORE_ADDR addr, size_t length) = 0;
+
+  /* Return the location expression for the frame base attribute, in
+     START and LENGTH.  The result must be live until the current
+     expression evaluation is complete.  */
+  virtual void get_frame_base (const gdb_byte **start, size_t *length) = 0;
+
+  /* Return the CFA for the frame.  */
+  virtual CORE_ADDR get_frame_cfa () = 0;
+
+  /* Return the PC for the frame.  */
+  virtual CORE_ADDR get_frame_pc ()
+  {
+    error (_("%s is invalid in this context"), "DW_OP_implicit_pointer");
+  }
+
+  /* Return the thread-local storage address for
+     DW_OP_GNU_push_tls_address or DW_OP_form_tls_address.  */
+  virtual CORE_ADDR get_tls_address (CORE_ADDR offset) = 0;
+
+  /* Execute DW_AT_location expression for the DWARF expression
+     subroutine in the DIE at DIE_CU_OFF in the CU.  Do not touch
+     STACK while it being passed to and returned from the called DWARF
+     subroutine.  */
+  virtual void dwarf_call (cu_offset die_cu_off) = 0;
+
+  /* Execute "variable value" operation on the DIE at SECT_OFF.  */
+  virtual struct value *dwarf_variable_value (sect_offset sect_off) = 0;
+
+  /* Return the base type given by the indicated DIE at DIE_CU_OFF.
+     This can throw an exception if the DIE is invalid or does not
+     represent a base type.  SIZE is non-zero if this function should
+     verify that the resulting type has the correct size.  */
+  virtual struct type *get_base_type (cu_offset die_cu_off, int size)
+  {
+    /* Anything will do.  */
+    return builtin_type (this->gdbarch)->builtin_int;
+  }
+
+  /* Push on DWARF stack an entry evaluated for DW_TAG_call_site's
+     parameter matching KIND and KIND_U at the caller of specified BATON.
+     If DEREF_SIZE is not -1 then use DW_AT_call_data_value instead of
+     DW_AT_call_value.  */
+  virtual void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind,
+					   union call_site_parameter_u kind_u,
+					   int deref_size) = 0;
+
+  /* Return the address indexed by DW_OP_addrx or DW_OP_GNU_addr_index.
+     This can throw an exception if the index is out of range.  */
+  virtual CORE_ADDR get_addr_index (unsigned int index) = 0;
+
+  /* Return the `object address' for DW_OP_push_object_address.  */
+  virtual CORE_ADDR get_object_address () = 0;
+
+private:
+
+  struct type *address_type () const;
+  void push (struct value *value, bool in_stack_memory);
+  bool stack_empty_p () const;
+  void add_piece (ULONGEST size, ULONGEST offset);
+  void execute_stack_op (const gdb_byte *op_ptr, const gdb_byte *op_end);
+  void pop ();
+};
+
+void dwarf_expr_require_composition (const gdb_byte *, const gdb_byte *,
+				     const char *);
+
+int dwarf_block_to_dwarf_reg (const gdb_byte *buf, const gdb_byte *buf_end);
+
+int dwarf_block_to_dwarf_reg_deref (const gdb_byte *buf,
+				    const gdb_byte *buf_end,
+				    CORE_ADDR *deref_size_return);
+
+int dwarf_block_to_fb_offset (const gdb_byte *buf, const gdb_byte *buf_end,
+			      CORE_ADDR *fb_offset_return);
+
+int dwarf_block_to_sp_offset (struct gdbarch *gdbarch, const gdb_byte *buf,
+			      const gdb_byte *buf_end,
+			      CORE_ADDR *sp_offset_return);
+
+/* Wrappers around the leb128 reader routines to simplify them for our
+   purposes.  */
+
+static inline const gdb_byte *
+gdb_read_uleb128 (const gdb_byte *buf, const gdb_byte *buf_end,
+		  uint64_t *r)
+{
+  size_t bytes_read = read_uleb128_to_uint64 (buf, buf_end, r);
+
+  if (bytes_read == 0)
+    return NULL;
+  return buf + bytes_read;
+}
+
+static inline const gdb_byte *
+gdb_read_sleb128 (const gdb_byte *buf, const gdb_byte *buf_end,
+		  int64_t *r)
+{
+  size_t bytes_read = read_sleb128_to_int64 (buf, buf_end, r);
+
+  if (bytes_read == 0)
+    return NULL;
+  return buf + bytes_read;
+}
+
+static inline const gdb_byte *
+gdb_skip_leb128 (const gdb_byte *buf, const gdb_byte *buf_end)
+{
+  size_t bytes_read = skip_leb128 (buf, buf_end);
+
+  if (bytes_read == 0)
+    return NULL;
+  return buf + bytes_read;
+}
+
+extern const gdb_byte *safe_read_uleb128 (const gdb_byte *buf,
+					  const gdb_byte *buf_end,
+					  uint64_t *r);
+
+extern const gdb_byte *safe_read_sleb128 (const gdb_byte *buf,
+					  const gdb_byte *buf_end,
+					  int64_t *r);
+
+extern const gdb_byte *safe_skip_leb128 (const gdb_byte *buf,
+					 const gdb_byte *buf_end);
+
+#endif /* dwarf2expr.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/frame.c ./gdb/dwarf2/frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/frame.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/frame.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,2324 @@
+/* Frame unwinder for frames with DWARF Call Frame Information.
+
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
+
+   Contributed by Mark Kettenis.
+
+   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 "dwarf2/expr.h"
+#include "dwarf2.h"
+#include "dwarf2/leb.h"
+#include "frame.h"
+#include "frame-base.h"
+#include "frame-unwind.h"
+#include "gdbcore.h"
+#include "gdbtypes.h"
+#include "symtab.h"
+#include "objfiles.h"
+#include "regcache.h"
+#include "value.h"
+#include "record.h"
+
+#include "complaints.h"
+#include "dwarf2/frame.h"
+#include "dwarf2/read.h"
+#include "ax.h"
+#include "dwarf2/loc.h"
+#include "dwarf2/frame-tailcall.h"
+#include "gdbsupport/gdb_binary_search.h"
+#if GDB_SELF_TEST
+#include "gdbsupport/selftest.h"
+#include "selftest-arch.h"
+#endif
+#include <unordered_map>
+
+#include <algorithm>
+
+struct comp_unit;
+
+/* Call Frame Information (CFI).  */
+
+/* Common Information Entry (CIE).  */
+
+struct dwarf2_cie
+{
+  /* Computation Unit for this CIE.  */
+  struct comp_unit *unit;
+
+  /* Offset into the .debug_frame section where this CIE was found.
+     Used to identify this CIE.  */
+  ULONGEST cie_pointer;
+
+  /* Constant that is factored out of all advance location
+     instructions.  */
+  ULONGEST code_alignment_factor;
+
+  /* Constants that is factored out of all offset instructions.  */
+  LONGEST data_alignment_factor;
+
+  /* Return address column.  */
+  ULONGEST return_address_register;
+
+  /* Instruction sequence to initialize a register set.  */
+  const gdb_byte *initial_instructions;
+  const gdb_byte *end;
+
+  /* Saved augmentation, in case it's needed later.  */
+  char *augmentation;
+
+  /* Encoding of addresses.  */
+  gdb_byte encoding;
+
+  /* Target address size in bytes.  */
+  int addr_size;
+
+  /* Target pointer size in bytes.  */
+  int ptr_size;
+
+  /* True if a 'z' augmentation existed.  */
+  unsigned char saw_z_augmentation;
+
+  /* True if an 'S' augmentation existed.  */
+  unsigned char signal_frame;
+
+  /* The version recorded in the CIE.  */
+  unsigned char version;
+
+  /* The segment size.  */
+  unsigned char segment_size;
+};
+
+/* The CIE table is used to find CIEs during parsing, but then
+   discarded.  It maps from the CIE's offset to the CIE.  */
+typedef std::unordered_map<ULONGEST, dwarf2_cie *> dwarf2_cie_table;
+
+/* Frame Description Entry (FDE).  */
+
+struct dwarf2_fde
+{
+  /* CIE for this FDE.  */
+  struct dwarf2_cie *cie;
+
+  /* First location associated with this FDE.  */
+  CORE_ADDR initial_location;
+
+  /* Number of bytes of program instructions described by this FDE.  */
+  CORE_ADDR address_range;
+
+  /* Instruction sequence.  */
+  const gdb_byte *instructions;
+  const gdb_byte *end;
+
+  /* True if this FDE is read from a .eh_frame instead of a .debug_frame
+     section.  */
+  unsigned char eh_frame_p;
+};
+
+typedef std::vector<dwarf2_fde *> dwarf2_fde_table;
+
+/* A minimal decoding of DWARF2 compilation units.  We only decode
+   what's needed to get to the call frame information.  */
+
+struct comp_unit
+{
+  comp_unit (struct objfile *objf)
+    : abfd (objf->obfd)
+  {
+  }
+
+  /* Keep the bfd convenient.  */
+  bfd *abfd;
+
+  /* Pointer to the .debug_frame section loaded into memory.  */
+  const gdb_byte *dwarf_frame_buffer = nullptr;
+
+  /* Length of the loaded .debug_frame section.  */
+  bfd_size_type dwarf_frame_size = 0;
+
+  /* Pointer to the .debug_frame section.  */
+  asection *dwarf_frame_section = nullptr;
+
+  /* Base for DW_EH_PE_datarel encodings.  */
+  bfd_vma dbase = 0;
+
+  /* Base for DW_EH_PE_textrel encodings.  */
+  bfd_vma tbase = 0;
+
+  /* The FDE table.  */
+  dwarf2_fde_table fde_table;
+
+  /* Hold data used by this module.  */
+  auto_obstack obstack;
+};
+
+static struct dwarf2_fde *dwarf2_frame_find_fde
+  (CORE_ADDR *pc, dwarf2_per_objfile **out_per_objfile);
+
+static int dwarf2_frame_adjust_regnum (struct gdbarch *gdbarch, int regnum,
+				       int eh_frame_p);
+
+static CORE_ADDR read_encoded_value (struct comp_unit *unit, gdb_byte encoding,
+				     int ptr_len, const gdb_byte *buf,
+				     unsigned int *bytes_read_ptr,
+				     CORE_ADDR func_base);
+
+
+/* See dwarf2-frame.h.  */
+bool dwarf2_frame_unwinders_enabled_p = true;
+
+/* Store the length the expression for the CFA in the `cfa_reg' field,
+   which is unused in that case.  */
+#define cfa_exp_len cfa_reg
+
+dwarf2_frame_state::dwarf2_frame_state (CORE_ADDR pc_, struct dwarf2_cie *cie)
+  : pc (pc_), data_align (cie->data_alignment_factor),
+    code_align (cie->code_alignment_factor),
+    retaddr_column (cie->return_address_register)
+{
+}
+
+
+/* Helper functions for execute_stack_op.  */
+
+static CORE_ADDR
+read_addr_from_reg (struct frame_info *this_frame, int reg)
+{
+  struct gdbarch *gdbarch = get_frame_arch (this_frame);
+  int regnum = dwarf_reg_to_regnum_or_error (gdbarch, reg);
+
+  return address_from_register (regnum, this_frame);
+}
+
+/* Execute the required actions for both the DW_CFA_restore and
+DW_CFA_restore_extended instructions.  */
+static void
+dwarf2_restore_rule (struct gdbarch *gdbarch, ULONGEST reg_num,
+		     struct dwarf2_frame_state *fs, int eh_frame_p)
+{
+  ULONGEST reg;
+
+  reg = dwarf2_frame_adjust_regnum (gdbarch, reg_num, eh_frame_p);
+  fs->regs.alloc_regs (reg + 1);
+
+  /* Check if this register was explicitly initialized in the
+  CIE initial instructions.  If not, default the rule to
+  UNSPECIFIED.  */
+  if (reg < fs->initial.reg.size ())
+    fs->regs.reg[reg] = fs->initial.reg[reg];
+  else
+    fs->regs.reg[reg].how = DWARF2_FRAME_REG_UNSPECIFIED;
+
+  if (fs->regs.reg[reg].how == DWARF2_FRAME_REG_UNSPECIFIED)
+    {
+      int regnum = dwarf_reg_to_regnum (gdbarch, reg);
+
+      complaint (_("\
+incomplete CFI data; DW_CFA_restore unspecified\n\
+register %s (#%d) at %s"),
+		 gdbarch_register_name (gdbarch, regnum), regnum,
+		 paddress (gdbarch, fs->pc));
+    }
+}
+
+class dwarf_expr_executor : public dwarf_expr_context
+{
+public:
+
+  dwarf_expr_executor (dwarf2_per_objfile *per_objfile)
+    : dwarf_expr_context (per_objfile)
+  {}
+
+  struct frame_info *this_frame;
+
+  CORE_ADDR read_addr_from_reg (int reg) override
+  {
+    return ::read_addr_from_reg (this_frame, reg);
+  }
+
+  struct value *get_reg_value (struct type *type, int reg) override
+  {
+    struct gdbarch *gdbarch = get_frame_arch (this_frame);
+    int regnum = dwarf_reg_to_regnum_or_error (gdbarch, reg);
+
+    return value_from_register (type, regnum, this_frame);
+  }
+
+  void read_mem (gdb_byte *buf, CORE_ADDR addr, size_t len) override
+  {
+    read_memory (addr, buf, len);
+  }
+
+  void get_frame_base (const gdb_byte **start, size_t *length) override
+  {
+    invalid ("DW_OP_fbreg");
+  }
+
+  void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind,
+				   union call_site_parameter_u kind_u,
+				   int deref_size) override
+  {
+    invalid ("DW_OP_entry_value");
+  }
+
+  CORE_ADDR get_object_address () override
+  {
+    invalid ("DW_OP_push_object_address");
+  }
+
+  CORE_ADDR get_frame_cfa () override
+  {
+    invalid ("DW_OP_call_frame_cfa");
+  }
+
+  CORE_ADDR get_tls_address (CORE_ADDR offset) override
+  {
+    invalid ("DW_OP_form_tls_address");
+  }
+
+  void dwarf_call (cu_offset die_offset) override
+  {
+    invalid ("DW_OP_call*");
+  }
+
+  struct value *dwarf_variable_value (sect_offset sect_off) override
+  {
+    invalid ("DW_OP_GNU_variable_value");
+  }
+
+  CORE_ADDR get_addr_index (unsigned int index) override
+  {
+    invalid ("DW_OP_addrx or DW_OP_GNU_addr_index");
+  }
+
+ private:
+
+  void invalid (const char *op) ATTRIBUTE_NORETURN
+  {
+    error (_("%s is invalid in this context"), op);
+  }
+};
+
+static CORE_ADDR
+execute_stack_op (const gdb_byte *exp, ULONGEST len, int addr_size,
+		  struct frame_info *this_frame, CORE_ADDR initial,
+		  int initial_in_stack_memory, dwarf2_per_objfile *per_objfile)
+{
+  CORE_ADDR result;
+
+  dwarf_expr_executor ctx (per_objfile);
+  scoped_value_mark free_values;
+
+  ctx.this_frame = this_frame;
+  ctx.gdbarch = get_frame_arch (this_frame);
+  ctx.addr_size = addr_size;
+  ctx.ref_addr_size = -1;
+
+  ctx.push_address (initial, initial_in_stack_memory);
+  ctx.eval (exp, len);
+
+  if (ctx.location == DWARF_VALUE_MEMORY)
+    result = ctx.fetch_address (0);
+  else if (ctx.location == DWARF_VALUE_REGISTER)
+    result = ctx.read_addr_from_reg (value_as_long (ctx.fetch (0)));
+  else
+    {
+      /* This is actually invalid DWARF, but if we ever do run across
+	 it somehow, we might as well support it.  So, instead, report
+	 it as unimplemented.  */
+      error (_("\
+Not implemented: computing unwound register using explicit value operator"));
+    }
+
+  return result;
+}
+
+
+/* Execute FDE program from INSN_PTR possibly up to INSN_END or up to inferior
+   PC.  Modify FS state accordingly.  Return current INSN_PTR where the
+   execution has stopped, one can resume it on the next call.  */
+
+static const gdb_byte *
+execute_cfa_program (struct dwarf2_fde *fde, const gdb_byte *insn_ptr,
+		     const gdb_byte *insn_end, struct gdbarch *gdbarch,
+		     CORE_ADDR pc, struct dwarf2_frame_state *fs,
+		     CORE_ADDR text_offset)
+{
+  int eh_frame_p = fde->eh_frame_p;
+  unsigned int bytes_read;
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+
+  while (insn_ptr < insn_end && fs->pc <= pc)
+    {
+      gdb_byte insn = *insn_ptr++;
+      uint64_t utmp, reg;
+      int64_t offset;
+
+      if ((insn & 0xc0) == DW_CFA_advance_loc)
+	fs->pc += (insn & 0x3f) * fs->code_align;
+      else if ((insn & 0xc0) == DW_CFA_offset)
+	{
+	  reg = insn & 0x3f;
+	  reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
+	  insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+	  offset = utmp * fs->data_align;
+	  fs->regs.alloc_regs (reg + 1);
+	  fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
+	  fs->regs.reg[reg].loc.offset = offset;
+	}
+      else if ((insn & 0xc0) == DW_CFA_restore)
+	{
+	  reg = insn & 0x3f;
+	  dwarf2_restore_rule (gdbarch, reg, fs, eh_frame_p);
+	}
+      else
+	{
+	  switch (insn)
+	    {
+	    case DW_CFA_set_loc:
+	      fs->pc = read_encoded_value (fde->cie->unit, fde->cie->encoding,
+					   fde->cie->ptr_size, insn_ptr,
+					   &bytes_read, fde->initial_location);
+	      /* Apply the text offset for relocatable objects.  */
+	      fs->pc += text_offset;
+	      insn_ptr += bytes_read;
+	      break;
+
+	    case DW_CFA_advance_loc1:
+	      utmp = extract_unsigned_integer (insn_ptr, 1, byte_order);
+	      fs->pc += utmp * fs->code_align;
+	      insn_ptr++;
+	      break;
+	    case DW_CFA_advance_loc2:
+	      utmp = extract_unsigned_integer (insn_ptr, 2, byte_order);
+	      fs->pc += utmp * fs->code_align;
+	      insn_ptr += 2;
+	      break;
+	    case DW_CFA_advance_loc4:
+	      utmp = extract_unsigned_integer (insn_ptr, 4, byte_order);
+	      fs->pc += utmp * fs->code_align;
+	      insn_ptr += 4;
+	      break;
+
+	    case DW_CFA_offset_extended:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+	      offset = utmp * fs->data_align;
+	      fs->regs.alloc_regs (reg + 1);
+	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
+	      fs->regs.reg[reg].loc.offset = offset;
+	      break;
+
+	    case DW_CFA_restore_extended:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      dwarf2_restore_rule (gdbarch, reg, fs, eh_frame_p);
+	      break;
+
+	    case DW_CFA_undefined:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
+	      fs->regs.alloc_regs (reg + 1);
+	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_UNDEFINED;
+	      break;
+
+	    case DW_CFA_same_value:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
+	      fs->regs.alloc_regs (reg + 1);
+	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAME_VALUE;
+	      break;
+
+	    case DW_CFA_register:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+	      utmp = dwarf2_frame_adjust_regnum (gdbarch, utmp, eh_frame_p);
+	      fs->regs.alloc_regs (reg + 1);
+	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_REG;
+	      fs->regs.reg[reg].loc.reg = utmp;
+	      break;
+
+	    case DW_CFA_remember_state:
+	      {
+		struct dwarf2_frame_state_reg_info *new_rs;
+
+		new_rs = new dwarf2_frame_state_reg_info (fs->regs);
+		fs->regs.prev = new_rs;
+	      }
+	      break;
+
+	    case DW_CFA_restore_state:
+	      {
+		struct dwarf2_frame_state_reg_info *old_rs = fs->regs.prev;
+
+		if (old_rs == NULL)
+		  {
+		    complaint (_("\
+bad CFI data; mismatched DW_CFA_restore_state at %s"),
+			       paddress (gdbarch, fs->pc));
+		  }
+		else
+		  fs->regs = std::move (*old_rs);
+	      }
+	      break;
+
+	    case DW_CFA_def_cfa:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      fs->regs.cfa_reg = reg;
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+
+	      if (fs->armcc_cfa_offsets_sf)
+		utmp *= fs->data_align;
+
+	      fs->regs.cfa_offset = utmp;
+	      fs->regs.cfa_how = CFA_REG_OFFSET;
+	      break;
+
+	    case DW_CFA_def_cfa_register:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      fs->regs.cfa_reg = dwarf2_frame_adjust_regnum (gdbarch, reg,
+                                                             eh_frame_p);
+	      fs->regs.cfa_how = CFA_REG_OFFSET;
+	      break;
+
+	    case DW_CFA_def_cfa_offset:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+
+	      if (fs->armcc_cfa_offsets_sf)
+		utmp *= fs->data_align;
+
+	      fs->regs.cfa_offset = utmp;
+	      /* cfa_how deliberately not set.  */
+	      break;
+
+	    case DW_CFA_nop:
+	      break;
+
+	    case DW_CFA_def_cfa_expression:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+	      fs->regs.cfa_exp_len = utmp;
+	      fs->regs.cfa_exp = insn_ptr;
+	      fs->regs.cfa_how = CFA_EXP;
+	      insn_ptr += fs->regs.cfa_exp_len;
+	      break;
+
+	    case DW_CFA_expression:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
+	      fs->regs.alloc_regs (reg + 1);
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+	      fs->regs.reg[reg].loc.exp.start = insn_ptr;
+	      fs->regs.reg[reg].loc.exp.len = utmp;
+	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_EXP;
+	      insn_ptr += utmp;
+	      break;
+
+	    case DW_CFA_offset_extended_sf:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
+	      insn_ptr = safe_read_sleb128 (insn_ptr, insn_end, &offset);
+	      offset *= fs->data_align;
+	      fs->regs.alloc_regs (reg + 1);
+	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
+	      fs->regs.reg[reg].loc.offset = offset;
+	      break;
+
+	    case DW_CFA_val_offset:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      fs->regs.alloc_regs (reg + 1);
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+	      offset = utmp * fs->data_align;
+	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_VAL_OFFSET;
+	      fs->regs.reg[reg].loc.offset = offset;
+	      break;
+
+	    case DW_CFA_val_offset_sf:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      fs->regs.alloc_regs (reg + 1);
+	      insn_ptr = safe_read_sleb128 (insn_ptr, insn_end, &offset);
+	      offset *= fs->data_align;
+	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_VAL_OFFSET;
+	      fs->regs.reg[reg].loc.offset = offset;
+	      break;
+
+	    case DW_CFA_val_expression:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      fs->regs.alloc_regs (reg + 1);
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+	      fs->regs.reg[reg].loc.exp.start = insn_ptr;
+	      fs->regs.reg[reg].loc.exp.len = utmp;
+	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_VAL_EXP;
+	      insn_ptr += utmp;
+	      break;
+
+	    case DW_CFA_def_cfa_sf:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      fs->regs.cfa_reg = dwarf2_frame_adjust_regnum (gdbarch, reg,
+                                                             eh_frame_p);
+	      insn_ptr = safe_read_sleb128 (insn_ptr, insn_end, &offset);
+	      fs->regs.cfa_offset = offset * fs->data_align;
+	      fs->regs.cfa_how = CFA_REG_OFFSET;
+	      break;
+
+	    case DW_CFA_def_cfa_offset_sf:
+	      insn_ptr = safe_read_sleb128 (insn_ptr, insn_end, &offset);
+	      fs->regs.cfa_offset = offset * fs->data_align;
+	      /* cfa_how deliberately not set.  */
+	      break;
+
+	    case DW_CFA_GNU_args_size:
+	      /* Ignored.  */
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+	      break;
+
+	    case DW_CFA_GNU_negative_offset_extended:
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
+	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
+	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
+	      offset = utmp * fs->data_align;
+	      fs->regs.alloc_regs (reg + 1);
+	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
+	      fs->regs.reg[reg].loc.offset = -offset;
+	      break;
+
+	    default:
+	      if (insn >= DW_CFA_lo_user && insn <= DW_CFA_hi_user)
+		{
+		  /* Handle vendor-specific CFI for different architectures.  */
+		  if (!gdbarch_execute_dwarf_cfa_vendor_op (gdbarch, insn, fs))
+		    error (_("Call Frame Instruction op %d in vendor extension "
+			     "space is not handled on this architecture."),
+			   insn);
+		}
+	      else
+		internal_error (__FILE__, __LINE__,
+				_("Unknown CFI encountered."));
+	    }
+	}
+    }
+
+  if (fs->initial.reg.empty ())
+    {
+      /* Don't allow remember/restore between CIE and FDE programs.  */
+      delete fs->regs.prev;
+      fs->regs.prev = NULL;
+    }
+
+  return insn_ptr;
+}
+
+#if GDB_SELF_TEST
+
+namespace selftests {
+
+/* Unit test to function execute_cfa_program.  */
+
+static void
+execute_cfa_program_test (struct gdbarch *gdbarch)
+{
+  struct dwarf2_fde fde;
+  struct dwarf2_cie cie;
+
+  memset (&fde, 0, sizeof fde);
+  memset (&cie, 0, sizeof cie);
+
+  cie.data_alignment_factor = -4;
+  cie.code_alignment_factor = 2;
+  fde.cie = &cie;
+
+  dwarf2_frame_state fs (0, fde.cie);
+
+  gdb_byte insns[] =
+    {
+      DW_CFA_def_cfa, 1, 4,  /* DW_CFA_def_cfa: r1 ofs 4 */
+      DW_CFA_offset | 0x2, 1,  /* DW_CFA_offset: r2 at cfa-4 */
+      DW_CFA_remember_state,
+      DW_CFA_restore_state,
+    };
+
+  const gdb_byte *insn_end = insns + sizeof (insns);
+  const gdb_byte *out = execute_cfa_program (&fde, insns, insn_end, gdbarch,
+					     0, &fs, 0);
+
+  SELF_CHECK (out == insn_end);
+  SELF_CHECK (fs.pc == 0);
+
+  /* The instructions above only use r1 and r2, but the register numbers
+     used are adjusted by dwarf2_frame_adjust_regnum.  */
+  auto r1 = dwarf2_frame_adjust_regnum (gdbarch, 1, fde.eh_frame_p);
+  auto r2 = dwarf2_frame_adjust_regnum (gdbarch, 2, fde.eh_frame_p);
+
+  SELF_CHECK (fs.regs.reg.size () == (std::max (r1, r2) + 1));
+
+  SELF_CHECK (fs.regs.reg[r2].how == DWARF2_FRAME_REG_SAVED_OFFSET);
+  SELF_CHECK (fs.regs.reg[r2].loc.offset == -4);
+
+  for (auto i = 0; i < fs.regs.reg.size (); i++)
+    if (i != r2)
+      SELF_CHECK (fs.regs.reg[i].how == DWARF2_FRAME_REG_UNSPECIFIED);
+
+  SELF_CHECK (fs.regs.cfa_reg == 1);
+  SELF_CHECK (fs.regs.cfa_offset == 4);
+  SELF_CHECK (fs.regs.cfa_how == CFA_REG_OFFSET);
+  SELF_CHECK (fs.regs.cfa_exp == NULL);
+  SELF_CHECK (fs.regs.prev == NULL);
+}
+
+} // namespace selftests
+#endif /* GDB_SELF_TEST */
+
+
+
+/* Architecture-specific operations.  */
+
+/* Per-architecture data key.  */
+static struct gdbarch_data *dwarf2_frame_data;
+
+struct dwarf2_frame_ops
+{
+  /* Pre-initialize the register state REG for register REGNUM.  */
+  void (*init_reg) (struct gdbarch *, int, struct dwarf2_frame_state_reg *,
+		    struct frame_info *);
+
+  /* Check whether the THIS_FRAME is a signal trampoline.  */
+  int (*signal_frame_p) (struct gdbarch *, struct frame_info *);
+
+  /* Convert .eh_frame register number to DWARF register number, or
+     adjust .debug_frame register number.  */
+  int (*adjust_regnum) (struct gdbarch *, int, int);
+};
+
+/* Default architecture-specific register state initialization
+   function.  */
+
+static void
+dwarf2_frame_default_init_reg (struct gdbarch *gdbarch, int regnum,
+			       struct dwarf2_frame_state_reg *reg,
+			       struct frame_info *this_frame)
+{
+  /* If we have a register that acts as a program counter, mark it as
+     a destination for the return address.  If we have a register that
+     serves as the stack pointer, arrange for it to be filled with the
+     call frame address (CFA).  The other registers are marked as
+     unspecified.
+
+     We copy the return address to the program counter, since many
+     parts in GDB assume that it is possible to get the return address
+     by unwinding the program counter register.  However, on ISA's
+     with a dedicated return address register, the CFI usually only
+     contains information to unwind that return address register.
+
+     The reason we're treating the stack pointer special here is
+     because in many cases GCC doesn't emit CFI for the stack pointer
+     and implicitly assumes that it is equal to the CFA.  This makes
+     some sense since the DWARF specification (version 3, draft 8,
+     p. 102) says that:
+
+     "Typically, the CFA is defined to be the value of the stack
+     pointer at the call site in the previous frame (which may be
+     different from its value on entry to the current frame)."
+
+     However, this isn't true for all platforms supported by GCC
+     (e.g. IBM S/390 and zSeries).  Those architectures should provide
+     their own architecture-specific initialization function.  */
+
+  if (regnum == gdbarch_pc_regnum (gdbarch))
+    reg->how = DWARF2_FRAME_REG_RA;
+  else if (regnum == gdbarch_sp_regnum (gdbarch))
+    reg->how = DWARF2_FRAME_REG_CFA;
+}
+
+/* Return a default for the architecture-specific operations.  */
+
+static void *
+dwarf2_frame_init (struct obstack *obstack)
+{
+  struct dwarf2_frame_ops *ops;
+  
+  ops = OBSTACK_ZALLOC (obstack, struct dwarf2_frame_ops);
+  ops->init_reg = dwarf2_frame_default_init_reg;
+  return ops;
+}
+
+/* Set the architecture-specific register state initialization
+   function for GDBARCH to INIT_REG.  */
+
+void
+dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
+			   void (*init_reg) (struct gdbarch *, int,
+					     struct dwarf2_frame_state_reg *,
+					     struct frame_info *))
+{
+  struct dwarf2_frame_ops *ops
+    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
+
+  ops->init_reg = init_reg;
+}
+
+/* Pre-initialize the register state REG for register REGNUM.  */
+
+static void
+dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
+		       struct dwarf2_frame_state_reg *reg,
+		       struct frame_info *this_frame)
+{
+  struct dwarf2_frame_ops *ops
+    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
+
+  ops->init_reg (gdbarch, regnum, reg, this_frame);
+}
+
+/* Set the architecture-specific signal trampoline recognition
+   function for GDBARCH to SIGNAL_FRAME_P.  */
+
+void
+dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch,
+				 int (*signal_frame_p) (struct gdbarch *,
+							struct frame_info *))
+{
+  struct dwarf2_frame_ops *ops
+    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
+
+  ops->signal_frame_p = signal_frame_p;
+}
+
+/* Query the architecture-specific signal frame recognizer for
+   THIS_FRAME.  */
+
+static int
+dwarf2_frame_signal_frame_p (struct gdbarch *gdbarch,
+			     struct frame_info *this_frame)
+{
+  struct dwarf2_frame_ops *ops
+    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
+
+  if (ops->signal_frame_p == NULL)
+    return 0;
+  return ops->signal_frame_p (gdbarch, this_frame);
+}
+
+/* Set the architecture-specific adjustment of .eh_frame and .debug_frame
+   register numbers.  */
+
+void
+dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch,
+				int (*adjust_regnum) (struct gdbarch *,
+						      int, int))
+{
+  struct dwarf2_frame_ops *ops
+    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
+
+  ops->adjust_regnum = adjust_regnum;
+}
+
+/* Translate a .eh_frame register to DWARF register, or adjust a .debug_frame
+   register.  */
+
+static int
+dwarf2_frame_adjust_regnum (struct gdbarch *gdbarch,
+			    int regnum, int eh_frame_p)
+{
+  struct dwarf2_frame_ops *ops
+    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
+
+  if (ops->adjust_regnum == NULL)
+    return regnum;
+  return ops->adjust_regnum (gdbarch, regnum, eh_frame_p);
+}
+
+static void
+dwarf2_frame_find_quirks (struct dwarf2_frame_state *fs,
+			  struct dwarf2_fde *fde)
+{
+  struct compunit_symtab *cust;
+
+  cust = find_pc_compunit_symtab (fs->pc);
+  if (cust == NULL)
+    return;
+
+  if (producer_is_realview (COMPUNIT_PRODUCER (cust)))
+    {
+      if (fde->cie->version == 1)
+	fs->armcc_cfa_offsets_sf = 1;
+
+      if (fde->cie->version == 1)
+	fs->armcc_cfa_offsets_reversed = 1;
+
+      /* The reversed offset problem is present in some compilers
+	 using DWARF3, but it was eventually fixed.  Check the ARM
+	 defined augmentations, which are in the format "armcc" followed
+	 by a list of one-character options.  The "+" option means
+	 this problem is fixed (no quirk needed).  If the armcc
+	 augmentation is missing, the quirk is needed.  */
+      if (fde->cie->version == 3
+	  && (!startswith (fde->cie->augmentation, "armcc")
+	      || strchr (fde->cie->augmentation + 5, '+') == NULL))
+	fs->armcc_cfa_offsets_reversed = 1;
+
+      return;
+    }
+}
+
+
+/* See dwarf2-frame.h.  */
+
+int
+dwarf2_fetch_cfa_info (struct gdbarch *gdbarch, CORE_ADDR pc,
+		       struct dwarf2_per_cu_data *data,
+		       int *regnum_out, LONGEST *offset_out,
+		       CORE_ADDR *text_offset_out,
+		       const gdb_byte **cfa_start_out,
+		       const gdb_byte **cfa_end_out)
+{
+  struct dwarf2_fde *fde;
+  dwarf2_per_objfile *per_objfile;
+  CORE_ADDR pc1 = pc;
+
+  /* Find the correct FDE.  */
+  fde = dwarf2_frame_find_fde (&pc1, &per_objfile);
+  if (fde == NULL)
+    error (_("Could not compute CFA; needed to translate this expression"));
+
+  gdb_assert (per_objfile != nullptr);
+
+  dwarf2_frame_state fs (pc1, fde->cie);
+
+  /* Check for "quirks" - known bugs in producers.  */
+  dwarf2_frame_find_quirks (&fs, fde);
+
+  /* First decode all the insns in the CIE.  */
+  execute_cfa_program (fde, fde->cie->initial_instructions,
+		       fde->cie->end, gdbarch, pc, &fs,
+		       per_objfile->objfile->text_section_offset ());
+
+  /* Save the initialized register set.  */
+  fs.initial = fs.regs;
+
+  /* Then decode the insns in the FDE up to our target PC.  */
+  execute_cfa_program (fde, fde->instructions, fde->end, gdbarch, pc, &fs,
+		       per_objfile->objfile->text_section_offset ());
+
+  /* Calculate the CFA.  */
+  switch (fs.regs.cfa_how)
+    {
+    case CFA_REG_OFFSET:
+      {
+	int regnum = dwarf_reg_to_regnum_or_error (gdbarch, fs.regs.cfa_reg);
+
+	*regnum_out = regnum;
+	if (fs.armcc_cfa_offsets_reversed)
+	  *offset_out = -fs.regs.cfa_offset;
+	else
+	  *offset_out = fs.regs.cfa_offset;
+	return 1;
+      }
+
+    case CFA_EXP:
+      *text_offset_out = per_objfile->objfile->text_section_offset ();
+      *cfa_start_out = fs.regs.cfa_exp;
+      *cfa_end_out = fs.regs.cfa_exp + fs.regs.cfa_exp_len;
+      return 0;
+
+    default:
+      internal_error (__FILE__, __LINE__, _("Unknown CFA rule."));
+    }
+}
+
+
+struct dwarf2_frame_cache
+{
+  /* DWARF Call Frame Address.  */
+  CORE_ADDR cfa;
+
+  /* Set if the return address column was marked as unavailable
+     (required non-collected memory or registers to compute).  */
+  int unavailable_retaddr;
+
+  /* Set if the return address column was marked as undefined.  */
+  int undefined_retaddr;
+
+  /* Saved registers, indexed by GDB register number, not by DWARF
+     register number.  */
+  struct dwarf2_frame_state_reg *reg;
+
+  /* Return address register.  */
+  struct dwarf2_frame_state_reg retaddr_reg;
+
+  /* Target address size in bytes.  */
+  int addr_size;
+
+  /* The dwarf2_per_objfile from which this frame description came.  */
+  dwarf2_per_objfile *per_objfile;
+
+  /* If not NULL then this frame is the bottom frame of a TAILCALL_FRAME
+     sequence.  If NULL then it is a normal case with no TAILCALL_FRAME
+     involved.  Non-bottom frames of a virtual tail call frames chain use
+     dwarf2_tailcall_frame_unwind unwinder so this field does not apply for
+     them.  */
+  void *tailcall_cache;
+};
+
+static struct dwarf2_frame_cache *
+dwarf2_frame_cache (struct frame_info *this_frame, void **this_cache)
+{
+  struct gdbarch *gdbarch = get_frame_arch (this_frame);
+  const int num_regs = gdbarch_num_cooked_regs (gdbarch);
+  struct dwarf2_frame_cache *cache;
+  struct dwarf2_fde *fde;
+  CORE_ADDR entry_pc;
+  const gdb_byte *instr;
+
+  if (*this_cache)
+    return (struct dwarf2_frame_cache *) *this_cache;
+
+  /* Allocate a new cache.  */
+  cache = FRAME_OBSTACK_ZALLOC (struct dwarf2_frame_cache);
+  cache->reg = FRAME_OBSTACK_CALLOC (num_regs, struct dwarf2_frame_state_reg);
+  *this_cache = cache;
+
+  /* Unwind the PC.
+
+     Note that if the next frame is never supposed to return (i.e. a call
+     to abort), the compiler might optimize away the instruction at
+     its return address.  As a result the return address will
+     point at some random instruction, and the CFI for that
+     instruction is probably worthless to us.  GCC's unwinder solves
+     this problem by substracting 1 from the return address to get an
+     address in the middle of a presumed call instruction (or the
+     instruction in the associated delay slot).  This should only be
+     done for "normal" frames and not for resume-type frames (signal
+     handlers, sentinel frames, dummy frames).  The function
+     get_frame_address_in_block does just this.  It's not clear how
+     reliable the method is though; there is the potential for the
+     register state pre-call being different to that on return.  */
+  CORE_ADDR pc1 = get_frame_address_in_block (this_frame);
+
+  /* Find the correct FDE.  */
+  fde = dwarf2_frame_find_fde (&pc1, &cache->per_objfile);
+  gdb_assert (fde != NULL);
+  gdb_assert (cache->per_objfile != nullptr);
+
+  /* Allocate and initialize the frame state.  */
+  struct dwarf2_frame_state fs (pc1, fde->cie);
+
+  cache->addr_size = fde->cie->addr_size;
+
+  /* Check for "quirks" - known bugs in producers.  */
+  dwarf2_frame_find_quirks (&fs, fde);
+
+  /* First decode all the insns in the CIE.  */
+  execute_cfa_program (fde, fde->cie->initial_instructions,
+		       fde->cie->end, gdbarch,
+		       get_frame_address_in_block (this_frame), &fs,
+		       cache->per_objfile->objfile->text_section_offset ());
+
+  /* Save the initialized register set.  */
+  fs.initial = fs.regs;
+
+  /* Fetching the entry pc for THIS_FRAME won't necessarily result
+     in an address that's within the range of FDE locations.  This
+     is due to the possibility of the function occupying non-contiguous
+     ranges.  */
+  LONGEST entry_cfa_sp_offset;
+  int entry_cfa_sp_offset_p = 0;
+  if (get_frame_func_if_available (this_frame, &entry_pc)
+      && fde->initial_location <= entry_pc
+      && entry_pc < fde->initial_location + fde->address_range)
+    {
+      /* Decode the insns in the FDE up to the entry PC.  */
+      instr = execute_cfa_program
+	(fde, fde->instructions, fde->end, gdbarch, entry_pc, &fs,
+	 cache->per_objfile->objfile->text_section_offset ());
+
+      if (fs.regs.cfa_how == CFA_REG_OFFSET
+	  && (dwarf_reg_to_regnum (gdbarch, fs.regs.cfa_reg)
+	      == gdbarch_sp_regnum (gdbarch)))
+	{
+	  entry_cfa_sp_offset = fs.regs.cfa_offset;
+	  entry_cfa_sp_offset_p = 1;
+	}
+    }
+  else
+    instr = fde->instructions;
+
+  /* Then decode the insns in the FDE up to our target PC.  */
+  execute_cfa_program (fde, instr, fde->end, gdbarch,
+		       get_frame_address_in_block (this_frame), &fs,
+		       cache->per_objfile->objfile->text_section_offset ());
+
+  try
+    {
+      /* Calculate the CFA.  */
+      switch (fs.regs.cfa_how)
+	{
+	case CFA_REG_OFFSET:
+	  cache->cfa = read_addr_from_reg (this_frame, fs.regs.cfa_reg);
+	  if (fs.armcc_cfa_offsets_reversed)
+	    cache->cfa -= fs.regs.cfa_offset;
+	  else
+	    cache->cfa += fs.regs.cfa_offset;
+	  break;
+
+	case CFA_EXP:
+	  cache->cfa =
+	    execute_stack_op (fs.regs.cfa_exp, fs.regs.cfa_exp_len,
+			      cache->addr_size, this_frame, 0, 0,
+			      cache->per_objfile);
+	  break;
+
+	default:
+	  internal_error (__FILE__, __LINE__, _("Unknown CFA rule."));
+	}
+    }
+  catch (const gdb_exception_error &ex)
+    {
+      if (ex.error == NOT_AVAILABLE_ERROR)
+	{
+	  cache->unavailable_retaddr = 1;
+	  return cache;
+	}
+
+      throw;
+    }
+
+  /* Initialize the register state.  */
+  {
+    int regnum;
+
+    for (regnum = 0; regnum < num_regs; regnum++)
+      dwarf2_frame_init_reg (gdbarch, regnum, &cache->reg[regnum], this_frame);
+  }
+
+  /* Go through the DWARF2 CFI generated table and save its register
+     location information in the cache.  Note that we don't skip the
+     return address column; it's perfectly all right for it to
+     correspond to a real register.  */
+  {
+    int column;		/* CFI speak for "register number".  */
+
+    for (column = 0; column < fs.regs.reg.size (); column++)
+      {
+	/* Use the GDB register number as the destination index.  */
+	int regnum = dwarf_reg_to_regnum (gdbarch, column);
+
+	/* Protect against a target returning a bad register.  */
+	if (regnum < 0 || regnum >= num_regs)
+	  continue;
+
+	/* NOTE: cagney/2003-09-05: CFI should specify the disposition
+	   of all debug info registers.  If it doesn't, complain (but
+	   not too loudly).  It turns out that GCC assumes that an
+	   unspecified register implies "same value" when CFI (draft
+	   7) specifies nothing at all.  Such a register could equally
+	   be interpreted as "undefined".  Also note that this check
+	   isn't sufficient; it only checks that all registers in the
+	   range [0 .. max column] are specified, and won't detect
+	   problems when a debug info register falls outside of the
+	   table.  We need a way of iterating through all the valid
+	   DWARF2 register numbers.  */
+	if (fs.regs.reg[column].how == DWARF2_FRAME_REG_UNSPECIFIED)
+	  {
+	    if (cache->reg[regnum].how == DWARF2_FRAME_REG_UNSPECIFIED)
+	      complaint (_("\
+incomplete CFI data; unspecified registers (e.g., %s) at %s"),
+			 gdbarch_register_name (gdbarch, regnum),
+			 paddress (gdbarch, fs.pc));
+	  }
+	else
+	  cache->reg[regnum] = fs.regs.reg[column];
+      }
+  }
+
+  /* Eliminate any DWARF2_FRAME_REG_RA rules, and save the information
+     we need for evaluating DWARF2_FRAME_REG_RA_OFFSET rules.  */
+  {
+    int regnum;
+
+    for (regnum = 0; regnum < num_regs; regnum++)
+      {
+	if (cache->reg[regnum].how == DWARF2_FRAME_REG_RA
+	    || cache->reg[regnum].how == DWARF2_FRAME_REG_RA_OFFSET)
+	  {
+	    const std::vector<struct dwarf2_frame_state_reg> &regs
+	      = fs.regs.reg;
+	    ULONGEST retaddr_column = fs.retaddr_column;
+
+	    /* It seems rather bizarre to specify an "empty" column as
+               the return adress column.  However, this is exactly
+               what GCC does on some targets.  It turns out that GCC
+               assumes that the return address can be found in the
+               register corresponding to the return address column.
+               Incidentally, that's how we should treat a return
+               address column specifying "same value" too.  */
+	    if (fs.retaddr_column < fs.regs.reg.size ()
+		&& regs[retaddr_column].how != DWARF2_FRAME_REG_UNSPECIFIED
+		&& regs[retaddr_column].how != DWARF2_FRAME_REG_SAME_VALUE)
+	      {
+		if (cache->reg[regnum].how == DWARF2_FRAME_REG_RA)
+		  cache->reg[regnum] = regs[retaddr_column];
+		else
+		  cache->retaddr_reg = regs[retaddr_column];
+	      }
+	    else
+	      {
+		if (cache->reg[regnum].how == DWARF2_FRAME_REG_RA)
+		  {
+		    cache->reg[regnum].loc.reg = fs.retaddr_column;
+		    cache->reg[regnum].how = DWARF2_FRAME_REG_SAVED_REG;
+		  }
+		else
+		  {
+		    cache->retaddr_reg.loc.reg = fs.retaddr_column;
+		    cache->retaddr_reg.how = DWARF2_FRAME_REG_SAVED_REG;
+		  }
+	      }
+	  }
+      }
+  }
+
+  if (fs.retaddr_column < fs.regs.reg.size ()
+      && fs.regs.reg[fs.retaddr_column].how == DWARF2_FRAME_REG_UNDEFINED)
+    cache->undefined_retaddr = 1;
+
+  dwarf2_tailcall_sniffer_first (this_frame, &cache->tailcall_cache,
+				 (entry_cfa_sp_offset_p
+				  ? &entry_cfa_sp_offset : NULL));
+
+  return cache;
+}
+
+static enum unwind_stop_reason
+dwarf2_frame_unwind_stop_reason (struct frame_info *this_frame,
+				 void **this_cache)
+{
+  struct dwarf2_frame_cache *cache
+    = dwarf2_frame_cache (this_frame, this_cache);
+
+  if (cache->unavailable_retaddr)
+    return UNWIND_UNAVAILABLE;
+
+  if (cache->undefined_retaddr)
+    return UNWIND_OUTERMOST;
+
+  return UNWIND_NO_REASON;
+}
+
+static void
+dwarf2_frame_this_id (struct frame_info *this_frame, void **this_cache,
+		      struct frame_id *this_id)
+{
+  struct dwarf2_frame_cache *cache =
+    dwarf2_frame_cache (this_frame, this_cache);
+
+  if (cache->unavailable_retaddr)
+    (*this_id) = frame_id_build_unavailable_stack (get_frame_func (this_frame));
+  else if (cache->undefined_retaddr)
+    return;
+  else
+    (*this_id) = frame_id_build (cache->cfa, get_frame_func (this_frame));
+}
+
+static struct value *
+dwarf2_frame_prev_register (struct frame_info *this_frame, void **this_cache,
+			    int regnum)
+{
+  struct gdbarch *gdbarch = get_frame_arch (this_frame);
+  struct dwarf2_frame_cache *cache =
+    dwarf2_frame_cache (this_frame, this_cache);
+  CORE_ADDR addr;
+  int realnum;
+
+  /* Non-bottom frames of a virtual tail call frames chain use
+     dwarf2_tailcall_frame_unwind unwinder so this code does not apply for
+     them.  If dwarf2_tailcall_prev_register_first does not have specific value
+     unwind the register, tail call frames are assumed to have the register set
+     of the top caller.  */
+  if (cache->tailcall_cache)
+    {
+      struct value *val;
+      
+      val = dwarf2_tailcall_prev_register_first (this_frame,
+						 &cache->tailcall_cache,
+						 regnum);
+      if (val)
+	return val;
+    }
+
+  switch (cache->reg[regnum].how)
+    {
+    case DWARF2_FRAME_REG_UNDEFINED:
+      /* If CFI explicitly specified that the value isn't defined,
+	 mark it as optimized away; the value isn't available.  */
+      return frame_unwind_got_optimized (this_frame, regnum);
+
+    case DWARF2_FRAME_REG_SAVED_OFFSET:
+      addr = cache->cfa + cache->reg[regnum].loc.offset;
+      return frame_unwind_got_memory (this_frame, regnum, addr);
+
+    case DWARF2_FRAME_REG_SAVED_REG:
+      realnum = dwarf_reg_to_regnum_or_error
+	(gdbarch, cache->reg[regnum].loc.reg);
+      return frame_unwind_got_register (this_frame, regnum, realnum);
+
+    case DWARF2_FRAME_REG_SAVED_EXP:
+      addr = execute_stack_op (cache->reg[regnum].loc.exp.start,
+			       cache->reg[regnum].loc.exp.len,
+			       cache->addr_size,
+			       this_frame, cache->cfa, 1,
+			       cache->per_objfile);
+      return frame_unwind_got_memory (this_frame, regnum, addr);
+
+    case DWARF2_FRAME_REG_SAVED_VAL_OFFSET:
+      addr = cache->cfa + cache->reg[regnum].loc.offset;
+      return frame_unwind_got_constant (this_frame, regnum, addr);
+
+    case DWARF2_FRAME_REG_SAVED_VAL_EXP:
+      addr = execute_stack_op (cache->reg[regnum].loc.exp.start,
+			       cache->reg[regnum].loc.exp.len,
+			       cache->addr_size,
+			       this_frame, cache->cfa, 1,
+			       cache->per_objfile);
+      return frame_unwind_got_constant (this_frame, regnum, addr);
+
+    case DWARF2_FRAME_REG_UNSPECIFIED:
+      /* GCC, in its infinite wisdom decided to not provide unwind
+	 information for registers that are "same value".  Since
+	 DWARF2 (3 draft 7) doesn't define such behavior, said
+	 registers are actually undefined (which is different to CFI
+	 "undefined").  Code above issues a complaint about this.
+	 Here just fudge the books, assume GCC, and that the value is
+	 more inner on the stack.  */
+      return frame_unwind_got_register (this_frame, regnum, regnum);
+
+    case DWARF2_FRAME_REG_SAME_VALUE:
+      return frame_unwind_got_register (this_frame, regnum, regnum);
+
+    case DWARF2_FRAME_REG_CFA:
+      return frame_unwind_got_address (this_frame, regnum, cache->cfa);
+
+    case DWARF2_FRAME_REG_CFA_OFFSET:
+      addr = cache->cfa + cache->reg[regnum].loc.offset;
+      return frame_unwind_got_address (this_frame, regnum, addr);
+
+    case DWARF2_FRAME_REG_RA_OFFSET:
+      addr = cache->reg[regnum].loc.offset;
+      regnum = dwarf_reg_to_regnum_or_error
+	(gdbarch, cache->retaddr_reg.loc.reg);
+      addr += get_frame_register_unsigned (this_frame, regnum);
+      return frame_unwind_got_address (this_frame, regnum, addr);
+
+    case DWARF2_FRAME_REG_FN:
+      return cache->reg[regnum].loc.fn (this_frame, this_cache, regnum);
+
+    default:
+      internal_error (__FILE__, __LINE__, _("Unknown register rule."));
+    }
+}
+
+/* Proxy for tailcall_frame_dealloc_cache for bottom frame of a virtual tail
+   call frames chain.  */
+
+static void
+dwarf2_frame_dealloc_cache (struct frame_info *self, void *this_cache)
+{
+  struct dwarf2_frame_cache *cache = dwarf2_frame_cache (self, &this_cache);
+
+  if (cache->tailcall_cache)
+    dwarf2_tailcall_frame_unwind.dealloc_cache (self, cache->tailcall_cache);
+}
+
+static int
+dwarf2_frame_sniffer (const struct frame_unwind *self,
+		      struct frame_info *this_frame, void **this_cache)
+{
+  if (!dwarf2_frame_unwinders_enabled_p)
+    return 0;
+
+  /* Grab an address that is guaranteed to reside somewhere within the
+     function.  get_frame_pc(), with a no-return next function, can
+     end up returning something past the end of this function's body.
+     If the frame we're sniffing for is a signal frame whose start
+     address is placed on the stack by the OS, its FDE must
+     extend one byte before its start address or we could potentially
+     select the FDE of the previous function.  */
+  CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
+  struct dwarf2_fde *fde = dwarf2_frame_find_fde (&block_addr, NULL);
+
+  if (!fde)
+    return 0;
+
+  /* On some targets, signal trampolines may have unwind information.
+     We need to recognize them so that we set the frame type
+     correctly.  */
+
+  if (fde->cie->signal_frame
+      || dwarf2_frame_signal_frame_p (get_frame_arch (this_frame),
+				      this_frame))
+    return self->type == SIGTRAMP_FRAME;
+
+  if (self->type != NORMAL_FRAME)
+    return 0;
+
+  return 1;
+}
+
+static const struct frame_unwind dwarf2_frame_unwind =
+{
+  NORMAL_FRAME,
+  dwarf2_frame_unwind_stop_reason,
+  dwarf2_frame_this_id,
+  dwarf2_frame_prev_register,
+  NULL,
+  dwarf2_frame_sniffer,
+  dwarf2_frame_dealloc_cache
+};
+
+static const struct frame_unwind dwarf2_signal_frame_unwind =
+{
+  SIGTRAMP_FRAME,
+  dwarf2_frame_unwind_stop_reason,
+  dwarf2_frame_this_id,
+  dwarf2_frame_prev_register,
+  NULL,
+  dwarf2_frame_sniffer,
+
+  /* TAILCALL_CACHE can never be in such frame to need dealloc_cache.  */
+  NULL
+};
+
+/* Append the DWARF-2 frame unwinders to GDBARCH's list.  */
+
+void
+dwarf2_append_unwinders (struct gdbarch *gdbarch)
+{
+  frame_unwind_append_unwinder (gdbarch, &dwarf2_frame_unwind);
+  frame_unwind_append_unwinder (gdbarch, &dwarf2_signal_frame_unwind);
+}
+
+
+/* There is no explicitly defined relationship between the CFA and the
+   location of frame's local variables and arguments/parameters.
+   Therefore, frame base methods on this page should probably only be
+   used as a last resort, just to avoid printing total garbage as a
+   response to the "info frame" command.  */
+
+static CORE_ADDR
+dwarf2_frame_base_address (struct frame_info *this_frame, void **this_cache)
+{
+  struct dwarf2_frame_cache *cache =
+    dwarf2_frame_cache (this_frame, this_cache);
+
+  return cache->cfa;
+}
+
+static const struct frame_base dwarf2_frame_base =
+{
+  &dwarf2_frame_unwind,
+  dwarf2_frame_base_address,
+  dwarf2_frame_base_address,
+  dwarf2_frame_base_address
+};
+
+const struct frame_base *
+dwarf2_frame_base_sniffer (struct frame_info *this_frame)
+{
+  CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
+
+  if (dwarf2_frame_find_fde (&block_addr, NULL))
+    return &dwarf2_frame_base;
+
+  return NULL;
+}
+
+/* Compute the CFA for THIS_FRAME, but only if THIS_FRAME came from
+   the DWARF unwinder.  This is used to implement
+   DW_OP_call_frame_cfa.  */
+
+CORE_ADDR
+dwarf2_frame_cfa (struct frame_info *this_frame)
+{
+  if (frame_unwinder_is (this_frame, &record_btrace_tailcall_frame_unwind)
+      || frame_unwinder_is (this_frame, &record_btrace_frame_unwind))
+    throw_error (NOT_AVAILABLE_ERROR,
+		 _("cfa not available for record btrace target"));
+
+  while (get_frame_type (this_frame) == INLINE_FRAME)
+    this_frame = get_prev_frame (this_frame);
+  if (get_frame_unwind_stop_reason (this_frame) == UNWIND_UNAVAILABLE)
+    throw_error (NOT_AVAILABLE_ERROR,
+                _("can't compute CFA for this frame: "
+                  "required registers or memory are unavailable"));
+
+  if (get_frame_id (this_frame).stack_status != FID_STACK_VALID)
+    throw_error (NOT_AVAILABLE_ERROR,
+                _("can't compute CFA for this frame: "
+                  "frame base not available"));
+
+  return get_frame_base (this_frame);
+}
+
+/* We store the frame data on the BFD.  This is only done if it is
+   independent of the address space and so can be shared.  */
+static const struct bfd_key<comp_unit> dwarf2_frame_bfd_data;
+
+/* If any BFD sections require relocations (note; really should be if
+   any debug info requires relocations), then we store the frame data
+   on the objfile instead, and do not share it.  */
+const struct objfile_key<comp_unit> dwarf2_frame_objfile_data;
+
+
+/* Pointer encoding helper functions.  */
+
+/* GCC supports exception handling based on DWARF2 CFI.  However, for
+   technical reasons, it encodes addresses in its FDE's in a different
+   way.  Several "pointer encodings" are supported.  The encoding
+   that's used for a particular FDE is determined by the 'R'
+   augmentation in the associated CIE.  The argument of this
+   augmentation is a single byte.  
+
+   The address can be encoded as 2 bytes, 4 bytes, 8 bytes, or as a
+   LEB128.  This is encoded in bits 0, 1 and 2.  Bit 3 encodes whether
+   the address is signed or unsigned.  Bits 4, 5 and 6 encode how the
+   address should be interpreted (absolute, relative to the current
+   position in the FDE, ...).  Bit 7, indicates that the address
+   should be dereferenced.  */
+
+static gdb_byte
+encoding_for_size (unsigned int size)
+{
+  switch (size)
+    {
+    case 2:
+      return DW_EH_PE_udata2;
+    case 4:
+      return DW_EH_PE_udata4;
+    case 8:
+      return DW_EH_PE_udata8;
+    default:
+      internal_error (__FILE__, __LINE__, _("Unsupported address size"));
+    }
+}
+
+static CORE_ADDR
+read_encoded_value (struct comp_unit *unit, gdb_byte encoding,
+		    int ptr_len, const gdb_byte *buf,
+		    unsigned int *bytes_read_ptr,
+		    CORE_ADDR func_base)
+{
+  ptrdiff_t offset;
+  CORE_ADDR base;
+
+  /* GCC currently doesn't generate DW_EH_PE_indirect encodings for
+     FDE's.  */
+  if (encoding & DW_EH_PE_indirect)
+    internal_error (__FILE__, __LINE__, 
+		    _("Unsupported encoding: DW_EH_PE_indirect"));
+
+  *bytes_read_ptr = 0;
+
+  switch (encoding & 0x70)
+    {
+    case DW_EH_PE_absptr:
+      base = 0;
+      break;
+    case DW_EH_PE_pcrel:
+      base = bfd_section_vma (unit->dwarf_frame_section);
+      base += (buf - unit->dwarf_frame_buffer);
+      break;
+    case DW_EH_PE_datarel:
+      base = unit->dbase;
+      break;
+    case DW_EH_PE_textrel:
+      base = unit->tbase;
+      break;
+    case DW_EH_PE_funcrel:
+      base = func_base;
+      break;
+    case DW_EH_PE_aligned:
+      base = 0;
+      offset = buf - unit->dwarf_frame_buffer;
+      if ((offset % ptr_len) != 0)
+	{
+	  *bytes_read_ptr = ptr_len - (offset % ptr_len);
+	  buf += *bytes_read_ptr;
+	}
+      break;
+    default:
+      internal_error (__FILE__, __LINE__,
+		      _("Invalid or unsupported encoding"));
+    }
+
+  if ((encoding & 0x07) == 0x00)
+    {
+      encoding |= encoding_for_size (ptr_len);
+      if (bfd_get_sign_extend_vma (unit->abfd))
+	encoding |= DW_EH_PE_signed;
+    }
+
+  switch (encoding & 0x0f)
+    {
+    case DW_EH_PE_uleb128:
+      {
+	uint64_t value;
+	const gdb_byte *end_buf = buf + (sizeof (value) + 1) * 8 / 7;
+
+	*bytes_read_ptr += safe_read_uleb128 (buf, end_buf, &value) - buf;
+	return base + value;
+      }
+    case DW_EH_PE_udata2:
+      *bytes_read_ptr += 2;
+      return (base + bfd_get_16 (unit->abfd, (bfd_byte *) buf));
+    case DW_EH_PE_udata4:
+      *bytes_read_ptr += 4;
+      return (base + bfd_get_32 (unit->abfd, (bfd_byte *) buf));
+    case DW_EH_PE_udata8:
+      *bytes_read_ptr += 8;
+      return (base + bfd_get_64 (unit->abfd, (bfd_byte *) buf));
+    case DW_EH_PE_sleb128:
+      {
+	int64_t value;
+	const gdb_byte *end_buf = buf + (sizeof (value) + 1) * 8 / 7;
+
+	*bytes_read_ptr += safe_read_sleb128 (buf, end_buf, &value) - buf;
+	return base + value;
+      }
+    case DW_EH_PE_sdata2:
+      *bytes_read_ptr += 2;
+      return (base + bfd_get_signed_16 (unit->abfd, (bfd_byte *) buf));
+    case DW_EH_PE_sdata4:
+      *bytes_read_ptr += 4;
+      return (base + bfd_get_signed_32 (unit->abfd, (bfd_byte *) buf));
+    case DW_EH_PE_sdata8:
+      *bytes_read_ptr += 8;
+      return (base + bfd_get_signed_64 (unit->abfd, (bfd_byte *) buf));
+    default:
+      internal_error (__FILE__, __LINE__,
+		      _("Invalid or unsupported encoding"));
+    }
+}
+
+
+/* Find CIE with the given CIE_POINTER in CIE_TABLE.  */
+static struct dwarf2_cie *
+find_cie (const dwarf2_cie_table &cie_table, ULONGEST cie_pointer)
+{
+  auto iter = cie_table.find (cie_pointer);
+  if (iter != cie_table.end ())
+    return iter->second;
+  return NULL;
+}
+
+static inline int
+bsearch_fde_cmp (const dwarf2_fde *fde, CORE_ADDR seek_pc)
+{
+  if (fde->initial_location + fde->address_range <= seek_pc)
+    return -1;
+  if (fde->initial_location <= seek_pc)
+    return 0;
+  return 1;
+}
+
+/* Find an existing comp_unit for an objfile, if any.  */
+
+static comp_unit *
+find_comp_unit (struct objfile *objfile)
+{
+  bfd *abfd = objfile->obfd;
+  if (gdb_bfd_requires_relocations (abfd))
+    return dwarf2_frame_bfd_data.get (abfd);
+  return dwarf2_frame_objfile_data.get (objfile);
+}
+
+/* Store the comp_unit on OBJFILE, or the corresponding BFD, as
+   appropriate.  */
+
+static void
+set_comp_unit (struct objfile *objfile, struct comp_unit *unit)
+{
+  bfd *abfd = objfile->obfd;
+  if (gdb_bfd_requires_relocations (abfd))
+    return dwarf2_frame_bfd_data.set (abfd, unit);
+  return dwarf2_frame_objfile_data.set (objfile, unit);
+}
+
+/* Find the FDE for *PC.  Return a pointer to the FDE, and store the
+   initial location associated with it into *PC.  */
+
+static struct dwarf2_fde *
+dwarf2_frame_find_fde (CORE_ADDR *pc, dwarf2_per_objfile **out_per_objfile)
+{
+  for (objfile *objfile : current_program_space->objfiles ())
+    {
+      CORE_ADDR offset;
+      CORE_ADDR seek_pc;
+
+      comp_unit *unit = find_comp_unit (objfile);
+      if (unit == NULL)
+	{
+	  dwarf2_build_frame_info (objfile);
+	  unit = find_comp_unit (objfile);
+	}
+      gdb_assert (unit != NULL);
+
+      dwarf2_fde_table *fde_table = &unit->fde_table;
+      if (fde_table->empty ())
+	continue;
+
+      gdb_assert (!objfile->section_offsets.empty ());
+      offset = objfile->text_section_offset ();
+
+      gdb_assert (!fde_table->empty ());
+      if (*pc < offset + (*fde_table)[0]->initial_location)
+        continue;
+
+      seek_pc = *pc - offset;
+      auto it = gdb::binary_search (fde_table->begin (), fde_table->end (),
+				    seek_pc, bsearch_fde_cmp);
+      if (it != fde_table->end ())
+        {
+          *pc = (*it)->initial_location + offset;
+	  if (out_per_objfile != nullptr)
+	    *out_per_objfile = get_dwarf2_per_objfile (objfile);
+
+          return *it;
+        }
+    }
+  return NULL;
+}
+
+/* Add FDE to FDE_TABLE.  */
+static void
+add_fde (dwarf2_fde_table *fde_table, struct dwarf2_fde *fde)
+{
+  if (fde->address_range == 0)
+    /* Discard useless FDEs.  */
+    return;
+
+  fde_table->push_back (fde);
+}
+
+#define DW64_CIE_ID 0xffffffffffffffffULL
+
+/* Defines the type of eh_frames that are expected to be decoded: CIE, FDE
+   or any of them.  */
+
+enum eh_frame_type
+{
+  EH_CIE_TYPE_ID = 1 << 0,
+  EH_FDE_TYPE_ID = 1 << 1,
+  EH_CIE_OR_FDE_TYPE_ID = EH_CIE_TYPE_ID | EH_FDE_TYPE_ID
+};
+
+static const gdb_byte *decode_frame_entry (struct gdbarch *gdbarch,
+					   struct comp_unit *unit,
+					   const gdb_byte *start,
+					   int eh_frame_p,
+					   dwarf2_cie_table &cie_table,
+					   dwarf2_fde_table *fde_table,
+					   enum eh_frame_type entry_type);
+
+/* Decode the next CIE or FDE, entry_type specifies the expected type.
+   Return NULL if invalid input, otherwise the next byte to be processed.  */
+
+static const gdb_byte *
+decode_frame_entry_1 (struct gdbarch *gdbarch,
+		      struct comp_unit *unit, const gdb_byte *start,
+		      int eh_frame_p,
+                      dwarf2_cie_table &cie_table,
+                      dwarf2_fde_table *fde_table,
+                      enum eh_frame_type entry_type)
+{
+  const gdb_byte *buf, *end;
+  ULONGEST length;
+  unsigned int bytes_read;
+  int dwarf64_p;
+  ULONGEST cie_id;
+  ULONGEST cie_pointer;
+  int64_t sleb128;
+  uint64_t uleb128;
+
+  buf = start;
+  length = read_initial_length (unit->abfd, buf, &bytes_read, false);
+  buf += bytes_read;
+  end = buf + (size_t) length;
+
+  if (length == 0)
+    return end;
+
+  /* Are we still within the section?  */
+  if (end <= buf || end > unit->dwarf_frame_buffer + unit->dwarf_frame_size)
+    return NULL;
+
+  /* Distinguish between 32 and 64-bit encoded frame info.  */
+  dwarf64_p = (bytes_read == 12);
+
+  /* In a .eh_frame section, zero is used to distinguish CIEs from FDEs.  */
+  if (eh_frame_p)
+    cie_id = 0;
+  else if (dwarf64_p)
+    cie_id = DW64_CIE_ID;
+  else
+    cie_id = DW_CIE_ID;
+
+  if (dwarf64_p)
+    {
+      cie_pointer = read_8_bytes (unit->abfd, buf);
+      buf += 8;
+    }
+  else
+    {
+      cie_pointer = read_4_bytes (unit->abfd, buf);
+      buf += 4;
+    }
+
+  if (cie_pointer == cie_id)
+    {
+      /* This is a CIE.  */
+      struct dwarf2_cie *cie;
+      char *augmentation;
+      unsigned int cie_version;
+
+      /* Check that a CIE was expected.  */
+      if ((entry_type & EH_CIE_TYPE_ID) == 0)
+	error (_("Found a CIE when not expecting it."));
+
+      /* Record the offset into the .debug_frame section of this CIE.  */
+      cie_pointer = start - unit->dwarf_frame_buffer;
+
+      /* Check whether we've already read it.  */
+      if (find_cie (cie_table, cie_pointer))
+	return end;
+
+      cie = XOBNEW (&unit->obstack, struct dwarf2_cie);
+      cie->initial_instructions = NULL;
+      cie->cie_pointer = cie_pointer;
+
+      /* The encoding for FDE's in a normal .debug_frame section
+         depends on the target address size.  */
+      cie->encoding = DW_EH_PE_absptr;
+
+      /* We'll determine the final value later, but we need to
+	 initialize it conservatively.  */
+      cie->signal_frame = 0;
+
+      /* Check version number.  */
+      cie_version = read_1_byte (unit->abfd, buf);
+      if (cie_version != 1 && cie_version != 3 && cie_version != 4)
+	return NULL;
+      cie->version = cie_version;
+      buf += 1;
+
+      /* Interpret the interesting bits of the augmentation.  */
+      cie->augmentation = augmentation = (char *) buf;
+      buf += (strlen (augmentation) + 1);
+
+      /* Ignore armcc augmentations.  We only use them for quirks,
+	 and that doesn't happen until later.  */
+      if (startswith (augmentation, "armcc"))
+	augmentation += strlen (augmentation);
+
+      /* The GCC 2.x "eh" augmentation has a pointer immediately
+         following the augmentation string, so it must be handled
+         first.  */
+      if (augmentation[0] == 'e' && augmentation[1] == 'h')
+	{
+	  /* Skip.  */
+	  buf += gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
+	  augmentation += 2;
+	}
+
+      if (cie->version >= 4)
+	{
+	  /* FIXME: check that this is the same as from the CU header.  */
+	  cie->addr_size = read_1_byte (unit->abfd, buf);
+	  ++buf;
+	  cie->segment_size = read_1_byte (unit->abfd, buf);
+	  ++buf;
+	}
+      else
+	{
+	  cie->addr_size = gdbarch_dwarf2_addr_size (gdbarch);
+	  cie->segment_size = 0;
+	}
+      /* Address values in .eh_frame sections are defined to have the
+	 target's pointer size.  Watchout: This breaks frame info for
+	 targets with pointer size < address size, unless a .debug_frame
+	 section exists as well.  */
+      if (eh_frame_p)
+	cie->ptr_size = gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
+      else
+	cie->ptr_size = cie->addr_size;
+
+      buf = gdb_read_uleb128 (buf, end, &uleb128);
+      if (buf == NULL)
+	return NULL;
+      cie->code_alignment_factor = uleb128;
+
+      buf = gdb_read_sleb128 (buf, end, &sleb128);
+      if (buf == NULL)
+	return NULL;
+      cie->data_alignment_factor = sleb128;
+
+      if (cie_version == 1)
+	{
+	  cie->return_address_register = read_1_byte (unit->abfd, buf);
+	  ++buf;
+	}
+      else
+	{
+	  buf = gdb_read_uleb128 (buf, end, &uleb128);
+	  if (buf == NULL)
+	    return NULL;
+	  cie->return_address_register = uleb128;
+	}
+
+      cie->return_address_register
+	= dwarf2_frame_adjust_regnum (gdbarch,
+				      cie->return_address_register,
+				      eh_frame_p);
+
+      cie->saw_z_augmentation = (*augmentation == 'z');
+      if (cie->saw_z_augmentation)
+	{
+	  uint64_t uleb_length;
+
+	  buf = gdb_read_uleb128 (buf, end, &uleb_length);
+	  if (buf == NULL)
+	    return NULL;
+	  cie->initial_instructions = buf + uleb_length;
+	  augmentation++;
+	}
+
+      while (*augmentation)
+	{
+	  /* "L" indicates a byte showing how the LSDA pointer is encoded.  */
+	  if (*augmentation == 'L')
+	    {
+	      /* Skip.  */
+	      buf++;
+	      augmentation++;
+	    }
+
+	  /* "R" indicates a byte indicating how FDE addresses are encoded.  */
+	  else if (*augmentation == 'R')
+	    {
+	      cie->encoding = *buf++;
+	      augmentation++;
+	    }
+
+	  /* "P" indicates a personality routine in the CIE augmentation.  */
+	  else if (*augmentation == 'P')
+	    {
+	      /* Skip.  Avoid indirection since we throw away the result.  */
+	      gdb_byte encoding = (*buf++) & ~DW_EH_PE_indirect;
+	      read_encoded_value (unit, encoding, cie->ptr_size,
+				  buf, &bytes_read, 0);
+	      buf += bytes_read;
+	      augmentation++;
+	    }
+
+	  /* "S" indicates a signal frame, such that the return
+	     address must not be decremented to locate the call frame
+	     info for the previous frame; it might even be the first
+	     instruction of a function, so decrementing it would take
+	     us to a different function.  */
+	  else if (*augmentation == 'S')
+	    {
+	      cie->signal_frame = 1;
+	      augmentation++;
+	    }
+
+	  /* Otherwise we have an unknown augmentation.  Assume that either
+	     there is no augmentation data, or we saw a 'z' prefix.  */
+	  else
+	    {
+	      if (cie->initial_instructions)
+		buf = cie->initial_instructions;
+	      break;
+	    }
+	}
+
+      cie->initial_instructions = buf;
+      cie->end = end;
+      cie->unit = unit;
+
+      cie_table[cie->cie_pointer] = cie;
+    }
+  else
+    {
+      /* This is a FDE.  */
+      struct dwarf2_fde *fde;
+      CORE_ADDR addr;
+
+      /* Check that an FDE was expected.  */
+      if ((entry_type & EH_FDE_TYPE_ID) == 0)
+	error (_("Found an FDE when not expecting it."));
+
+      /* In an .eh_frame section, the CIE pointer is the delta between the
+	 address within the FDE where the CIE pointer is stored and the
+	 address of the CIE.  Convert it to an offset into the .eh_frame
+	 section.  */
+      if (eh_frame_p)
+	{
+	  cie_pointer = buf - unit->dwarf_frame_buffer - cie_pointer;
+	  cie_pointer -= (dwarf64_p ? 8 : 4);
+	}
+
+      /* In either case, validate the result is still within the section.  */
+      if (cie_pointer >= unit->dwarf_frame_size)
+	return NULL;
+
+      fde = XOBNEW (&unit->obstack, struct dwarf2_fde);
+      fde->cie = find_cie (cie_table, cie_pointer);
+      if (fde->cie == NULL)
+	{
+	  decode_frame_entry (gdbarch, unit,
+			      unit->dwarf_frame_buffer + cie_pointer,
+			      eh_frame_p, cie_table, fde_table,
+			      EH_CIE_TYPE_ID);
+	  fde->cie = find_cie (cie_table, cie_pointer);
+	}
+
+      gdb_assert (fde->cie != NULL);
+
+      addr = read_encoded_value (unit, fde->cie->encoding, fde->cie->ptr_size,
+				 buf, &bytes_read, 0);
+      fde->initial_location = gdbarch_adjust_dwarf2_addr (gdbarch, addr);
+      buf += bytes_read;
+
+      fde->address_range =
+	read_encoded_value (unit, fde->cie->encoding & 0x0f,
+			    fde->cie->ptr_size, buf, &bytes_read, 0);
+      addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + fde->address_range);
+      fde->address_range = addr - fde->initial_location;
+      buf += bytes_read;
+
+      /* A 'z' augmentation in the CIE implies the presence of an
+	 augmentation field in the FDE as well.  The only thing known
+	 to be in here at present is the LSDA entry for EH.  So we
+	 can skip the whole thing.  */
+      if (fde->cie->saw_z_augmentation)
+	{
+	  uint64_t uleb_length;
+
+	  buf = gdb_read_uleb128 (buf, end, &uleb_length);
+	  if (buf == NULL)
+	    return NULL;
+	  buf += uleb_length;
+	  if (buf > end)
+	    return NULL;
+	}
+
+      fde->instructions = buf;
+      fde->end = end;
+
+      fde->eh_frame_p = eh_frame_p;
+
+      add_fde (fde_table, fde);
+    }
+
+  return end;
+}
+
+/* Read a CIE or FDE in BUF and decode it. Entry_type specifies whether we
+   expect an FDE or a CIE.  */
+
+static const gdb_byte *
+decode_frame_entry (struct gdbarch *gdbarch,
+		    struct comp_unit *unit, const gdb_byte *start,
+		    int eh_frame_p,
+		    dwarf2_cie_table &cie_table,
+                    dwarf2_fde_table *fde_table,
+                    enum eh_frame_type entry_type)
+{
+  enum { NONE, ALIGN4, ALIGN8, FAIL } workaround = NONE;
+  const gdb_byte *ret;
+  ptrdiff_t start_offset;
+
+  while (1)
+    {
+      ret = decode_frame_entry_1 (gdbarch, unit, start, eh_frame_p,
+				  cie_table, fde_table, entry_type);
+      if (ret != NULL)
+	break;
+
+      /* We have corrupt input data of some form.  */
+
+      /* ??? Try, weakly, to work around compiler/assembler/linker bugs
+	 and mismatches wrt padding and alignment of debug sections.  */
+      /* Note that there is no requirement in the standard for any
+	 alignment at all in the frame unwind sections.  Testing for
+	 alignment before trying to interpret data would be incorrect.
+
+	 However, GCC traditionally arranged for frame sections to be
+	 sized such that the FDE length and CIE fields happen to be
+	 aligned (in theory, for performance).  This, unfortunately,
+	 was done with .align directives, which had the side effect of
+	 forcing the section to be aligned by the linker.
+
+	 This becomes a problem when you have some other producer that
+	 creates frame sections that are not as strictly aligned.  That
+	 produces a hole in the frame info that gets filled by the 
+	 linker with zeros.
+
+	 The GCC behaviour is arguably a bug, but it's effectively now
+	 part of the ABI, so we're now stuck with it, at least at the
+	 object file level.  A smart linker may decide, in the process
+	 of compressing duplicate CIE information, that it can rewrite
+	 the entire output section without this extra padding.  */
+
+      start_offset = start - unit->dwarf_frame_buffer;
+      if (workaround < ALIGN4 && (start_offset & 3) != 0)
+	{
+	  start += 4 - (start_offset & 3);
+	  workaround = ALIGN4;
+	  continue;
+	}
+      if (workaround < ALIGN8 && (start_offset & 7) != 0)
+	{
+	  start += 8 - (start_offset & 7);
+	  workaround = ALIGN8;
+	  continue;
+	}
+
+      /* Nothing left to try.  Arrange to return as if we've consumed
+	 the entire input section.  Hopefully we'll get valid info from
+	 the other of .debug_frame/.eh_frame.  */
+      workaround = FAIL;
+      ret = unit->dwarf_frame_buffer + unit->dwarf_frame_size;
+      break;
+    }
+
+  switch (workaround)
+    {
+    case NONE:
+      break;
+
+    case ALIGN4:
+      complaint (_("\
+Corrupt data in %s:%s; align 4 workaround apparently succeeded"),
+		 bfd_get_filename (unit->dwarf_frame_section->owner),
+		 bfd_section_name (unit->dwarf_frame_section));
+      break;
+
+    case ALIGN8:
+      complaint (_("\
+Corrupt data in %s:%s; align 8 workaround apparently succeeded"),
+		 bfd_get_filename (unit->dwarf_frame_section->owner),
+		 bfd_section_name (unit->dwarf_frame_section));
+      break;
+
+    default:
+      complaint (_("Corrupt data in %s:%s"),
+		 bfd_get_filename (unit->dwarf_frame_section->owner),
+		 bfd_section_name (unit->dwarf_frame_section));
+      break;
+    }
+
+  return ret;
+}
+
+static bool
+fde_is_less_than (const dwarf2_fde *aa, const dwarf2_fde *bb)
+{
+  if (aa->initial_location == bb->initial_location)
+    {
+      if (aa->address_range != bb->address_range
+          && aa->eh_frame_p == 0 && bb->eh_frame_p == 0)
+        /* Linker bug, e.g. gold/10400.
+           Work around it by keeping stable sort order.  */
+        return aa < bb;
+      else
+        /* Put eh_frame entries after debug_frame ones.  */
+        return aa->eh_frame_p < bb->eh_frame_p;
+    }
+
+  return aa->initial_location < bb->initial_location;
+}
+
+void
+dwarf2_build_frame_info (struct objfile *objfile)
+{
+  const gdb_byte *frame_ptr;
+  dwarf2_cie_table cie_table;
+  dwarf2_fde_table fde_table;
+
+  struct gdbarch *gdbarch = objfile->arch ();
+
+  /* Build a minimal decoding of the DWARF2 compilation unit.  */
+  std::unique_ptr<comp_unit> unit (new comp_unit (objfile));
+
+  if (objfile->separate_debug_objfile_backlink == NULL)
+    {
+      /* Do not read .eh_frame from separate file as they must be also
+         present in the main file.  */
+      dwarf2_get_section_info (objfile, DWARF2_EH_FRAME,
+                               &unit->dwarf_frame_section,
+                               &unit->dwarf_frame_buffer,
+                               &unit->dwarf_frame_size);
+      if (unit->dwarf_frame_size)
+        {
+          asection *got, *txt;
+
+          /* FIXME: kettenis/20030602: This is the DW_EH_PE_datarel base
+             that is used for the i386/amd64 target, which currently is
+             the only target in GCC that supports/uses the
+             DW_EH_PE_datarel encoding.  */
+          got = bfd_get_section_by_name (unit->abfd, ".got");
+          if (got)
+            unit->dbase = got->vma;
+
+          /* GCC emits the DW_EH_PE_textrel encoding type on sh and ia64
+             so far.  */
+          txt = bfd_get_section_by_name (unit->abfd, ".text");
+          if (txt)
+            unit->tbase = txt->vma;
+
+	  try
+	    {
+	      frame_ptr = unit->dwarf_frame_buffer;
+	      while (frame_ptr < unit->dwarf_frame_buffer + unit->dwarf_frame_size)
+		frame_ptr = decode_frame_entry (gdbarch, unit.get (),
+						frame_ptr, 1,
+						cie_table, &fde_table,
+						EH_CIE_OR_FDE_TYPE_ID);
+	    }
+
+	  catch (const gdb_exception_error &e)
+	    {
+	      warning (_("skipping .eh_frame info of %s: %s"),
+		       objfile_name (objfile), e.what ());
+
+	      fde_table.clear ();
+	      /* The cie_table is discarded below.  */
+	    }
+
+	  cie_table.clear ();
+        }
+    }
+
+  dwarf2_get_section_info (objfile, DWARF2_DEBUG_FRAME,
+                           &unit->dwarf_frame_section,
+                           &unit->dwarf_frame_buffer,
+                           &unit->dwarf_frame_size);
+  if (unit->dwarf_frame_size)
+    {
+      size_t num_old_fde_entries = fde_table.size ();
+
+      try
+	{
+	  frame_ptr = unit->dwarf_frame_buffer;
+	  while (frame_ptr < unit->dwarf_frame_buffer + unit->dwarf_frame_size)
+	    frame_ptr = decode_frame_entry (gdbarch, unit.get (), frame_ptr, 0,
+					    cie_table, &fde_table,
+					    EH_CIE_OR_FDE_TYPE_ID);
+	}
+      catch (const gdb_exception_error &e)
+	{
+	  warning (_("skipping .debug_frame info of %s: %s"),
+		   objfile_name (objfile), e.what ());
+
+	  fde_table.resize (num_old_fde_entries);
+	}
+    }
+
+  struct dwarf2_fde *fde_prev = NULL;
+  struct dwarf2_fde *first_non_zero_fde = NULL;
+
+  /* Prepare FDE table for lookups.  */
+  std::sort (fde_table.begin (), fde_table.end (), fde_is_less_than);
+
+  /* Check for leftovers from --gc-sections.  The GNU linker sets
+     the relevant symbols to zero, but doesn't zero the FDE *end*
+     ranges because there's no relocation there.  It's (offset,
+     length), not (start, end).  On targets where address zero is
+     just another valid address this can be a problem, since the
+     FDEs appear to be non-empty in the output --- we could pick
+     out the wrong FDE.  To work around this, when overlaps are
+     detected, we prefer FDEs that do not start at zero.
+
+     Start by finding the first FDE with non-zero start.  Below
+     we'll discard all FDEs that start at zero and overlap this
+     one.  */
+  for (struct dwarf2_fde *fde : fde_table)
+    {
+      if (fde->initial_location != 0)
+	{
+	  first_non_zero_fde = fde;
+	  break;
+	}
+    }
+
+  /* Since we'll be doing bsearch, squeeze out identical (except
+     for eh_frame_p) fde entries so bsearch result is predictable.
+     Also discard leftovers from --gc-sections.  */
+  for (struct dwarf2_fde *fde : fde_table)
+    {
+      if (fde->initial_location == 0
+	  && first_non_zero_fde != NULL
+	  && (first_non_zero_fde->initial_location
+	      < fde->initial_location + fde->address_range))
+	continue;
+
+      if (fde_prev != NULL
+	  && fde_prev->initial_location == fde->initial_location)
+	continue;
+
+      unit->fde_table.push_back (fde);
+      fde_prev = fde;
+    }
+  unit->fde_table.shrink_to_fit ();
+
+  set_comp_unit (objfile, unit.release ());
+}
+
+/* Handle 'maintenance show dwarf unwinders'.  */
+
+static void
+show_dwarf_unwinders_enabled_p (struct ui_file *file, int from_tty,
+				struct cmd_list_element *c,
+				const char *value)
+{
+  fprintf_filtered (file,
+		    _("The DWARF stack unwinders are currently %s.\n"),
+		    value);
+}
+
+void _initialize_dwarf2_frame ();
+void
+_initialize_dwarf2_frame ()
+{
+  dwarf2_frame_data = gdbarch_data_register_pre_init (dwarf2_frame_init);
+
+  add_setshow_boolean_cmd ("unwinders", class_obscure,
+			   &dwarf2_frame_unwinders_enabled_p , _("\
+Set whether the DWARF stack frame unwinders are used."), _("\
+Show whether the DWARF stack frame unwinders are used."), _("\
+When enabled the DWARF stack frame unwinders can be used for architectures\n\
+that support the DWARF unwinders.  Enabling the DWARF unwinders for an\n\
+architecture that doesn't support them will have no effect."),
+			   NULL,
+			   show_dwarf_unwinders_enabled_p,
+			   &set_dwarf_cmdlist,
+			   &show_dwarf_cmdlist);
+
+#if GDB_SELF_TEST
+  selftests::register_test_foreach_arch ("execute_cfa_program",
+					 selftests::execute_cfa_program_test);
+#endif
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/frame.h ./gdb/dwarf2/frame.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/frame.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/frame.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,265 @@
+/* Frame unwinder for frames with DWARF Call Frame Information.
+
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
+
+   Contributed by Mark Kettenis.
+
+   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 DWARF2_FRAME_H
+#define DWARF2_FRAME_H 1
+
+struct gdbarch;
+struct frame_info;
+struct dwarf2_per_cu_data;
+struct agent_expr;
+struct axs_value;
+
+/* Register rule.  */
+
+enum dwarf2_frame_reg_rule
+{
+  /* Make certain that 0 maps onto the correct enum value; the
+     corresponding structure is being initialized using memset zero.
+     This indicates that CFI didn't provide any information at all
+     about a register, leaving how to obtain its value totally
+     unspecified.  */
+  DWARF2_FRAME_REG_UNSPECIFIED = 0,
+
+  /* The term "undefined" comes from the DWARF2 CFI spec which this
+     code is modeling; it indicates that the register's value is
+     "undefined".  GCC uses the less formal term "unsaved".  Its
+     definition is a combination of REG_UNDEFINED and REG_UNSPECIFIED.
+     The failure to differentiate the two helps explain a few problems
+     with the CFI generated by GCC.  */
+  DWARF2_FRAME_REG_UNDEFINED,
+  DWARF2_FRAME_REG_SAVED_OFFSET,
+  DWARF2_FRAME_REG_SAVED_REG,
+  DWARF2_FRAME_REG_SAVED_EXP,
+  DWARF2_FRAME_REG_SAME_VALUE,
+
+  /* These are defined in Dwarf3.  */
+  DWARF2_FRAME_REG_SAVED_VAL_OFFSET,
+  DWARF2_FRAME_REG_SAVED_VAL_EXP,
+
+  /* These aren't defined by the DWARF2 CFI specification, but are
+     used internally by GDB.  */
+  DWARF2_FRAME_REG_FN,		/* Call a registered function.  */
+  DWARF2_FRAME_REG_RA,		/* Return Address.  */
+  DWARF2_FRAME_REG_RA_OFFSET,	/* Return Address with offset.  */
+  DWARF2_FRAME_REG_CFA,		/* Call Frame Address.  */
+  DWARF2_FRAME_REG_CFA_OFFSET	/* Call Frame Address with offset.  */
+};
+
+/* Register state.  */
+
+struct dwarf2_frame_state_reg
+{
+  /* Each register save state can be described in terms of a CFA slot,
+     another register, or a location expression.  */
+  union {
+    LONGEST offset;
+    ULONGEST reg;
+    struct
+    {
+      const gdb_byte *start;
+      ULONGEST len;
+    } exp;
+    struct value *(*fn) (struct frame_info *this_frame, void **this_cache,
+			 int regnum);
+  } loc;
+  enum dwarf2_frame_reg_rule how;
+};
+
+enum cfa_how_kind
+{
+  CFA_UNSET,
+  CFA_REG_OFFSET,
+  CFA_EXP
+};
+
+struct dwarf2_frame_state_reg_info
+{
+  dwarf2_frame_state_reg_info () = default;
+  ~dwarf2_frame_state_reg_info ()
+  {
+    delete prev;
+  }
+
+  /* Copy constructor.  */
+  dwarf2_frame_state_reg_info (const dwarf2_frame_state_reg_info &src)
+    : reg (src.reg), cfa_offset (src.cfa_offset),
+      cfa_reg (src.cfa_reg), cfa_how (src.cfa_how), cfa_exp (src.cfa_exp),
+      prev (src.prev)
+  {
+  }
+
+  /* Assignment operator for both move-assignment and copy-assignment.  */
+  dwarf2_frame_state_reg_info&
+  operator= (dwarf2_frame_state_reg_info rhs)
+  {
+    swap (*this, rhs);
+    return *this;
+  }
+
+  /* Move constructor.  */
+  dwarf2_frame_state_reg_info (dwarf2_frame_state_reg_info &&rhs) noexcept
+    : reg (std::move (rhs.reg)), cfa_offset (rhs.cfa_offset),
+      cfa_reg (rhs.cfa_reg), cfa_how (rhs.cfa_how), cfa_exp (rhs.cfa_exp),
+      prev (rhs.prev)
+  {
+    rhs.prev = nullptr;
+  }
+
+  /* If necessary, enlarge the register set to hold NUM_REGS_REQUESTED
+     registers.  */
+  void alloc_regs (int num_regs_requested)
+  {
+    gdb_assert (num_regs_requested > 0);
+
+    if (num_regs_requested <= reg.size ())
+      return;
+
+    reg.resize (num_regs_requested);
+  }
+
+  std::vector<struct dwarf2_frame_state_reg> reg;
+
+  LONGEST cfa_offset = 0;
+  ULONGEST cfa_reg = 0;
+  enum cfa_how_kind cfa_how = CFA_UNSET;
+  const gdb_byte *cfa_exp = NULL;
+
+  /* Used to implement DW_CFA_remember_state.  */
+  struct dwarf2_frame_state_reg_info *prev = NULL;
+
+private:
+  friend void swap (dwarf2_frame_state_reg_info& lhs,
+		    dwarf2_frame_state_reg_info& rhs)
+  {
+    using std::swap;
+
+    swap (lhs.reg, rhs.reg);
+    swap (lhs.cfa_offset, rhs.cfa_offset);
+    swap (lhs.cfa_reg, rhs.cfa_reg);
+    swap (lhs.cfa_how, rhs.cfa_how);
+    swap (lhs.cfa_exp, rhs.cfa_exp);
+    swap (lhs.prev, rhs.prev);
+  }
+};
+
+struct dwarf2_cie;
+
+/* Structure describing a frame state.  */
+
+struct dwarf2_frame_state
+{
+  dwarf2_frame_state (CORE_ADDR pc, struct dwarf2_cie *cie);
+
+  /* Each register save state can be described in terms of a CFA slot,
+     another register, or a location expression.  */
+  struct dwarf2_frame_state_reg_info regs {};
+
+  /* The PC described by the current frame state.  */
+  CORE_ADDR pc;
+
+  /* Initial register set from the CIE.
+     Used to implement DW_CFA_restore.  */
+  struct dwarf2_frame_state_reg_info initial {};
+
+  /* The information we care about from the CIE.  */
+  const LONGEST data_align;
+  const ULONGEST code_align;
+  const ULONGEST retaddr_column;
+
+  /* Flags for known producer quirks.  */
+
+  /* The ARM compilers, in DWARF2 mode, assume that DW_CFA_def_cfa
+     and DW_CFA_def_cfa_offset takes a factored offset.  */
+  bool armcc_cfa_offsets_sf = false;
+
+  /* The ARM compilers, in DWARF2 or DWARF3 mode, may assume that
+     the CFA is defined as REG - OFFSET rather than REG + OFFSET.  */
+  bool armcc_cfa_offsets_reversed = false;
+};
+
+/* When this is true the DWARF frame unwinders can be used if they are
+   registered with the gdbarch.  Not all architectures can or do use the
+   DWARF unwinders.  Setting this to true on a target that does not
+   otherwise support the DWARF unwinders has no effect.  */
+extern bool dwarf2_frame_unwinders_enabled_p;
+
+/* Set the architecture-specific register state initialization
+   function for GDBARCH to INIT_REG.  */
+
+extern void dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
+				       void (*init_reg) (struct gdbarch *, int,
+					     struct dwarf2_frame_state_reg *,
+					     struct frame_info *));
+
+/* Set the architecture-specific signal trampoline recognition
+   function for GDBARCH to SIGNAL_FRAME_P.  */
+
+extern void
+  dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch,
+				   int (*signal_frame_p) (struct gdbarch *,
+							  struct frame_info *));
+
+/* Set the architecture-specific adjustment of .eh_frame and .debug_frame
+   register numbers.  */
+
+extern void
+  dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch,
+				  int (*adjust_regnum) (struct gdbarch *,
+							int, int));
+
+/* Append the DWARF-2 frame unwinders to GDBARCH's list.  */
+
+void dwarf2_append_unwinders (struct gdbarch *gdbarch);
+
+/* Return the frame base methods for the function that contains PC, or
+   NULL if it can't be handled by the DWARF CFI frame unwinder.  */
+
+extern const struct frame_base *
+  dwarf2_frame_base_sniffer (struct frame_info *this_frame);
+
+/* Compute the DWARF CFA for a frame.  */
+
+CORE_ADDR dwarf2_frame_cfa (struct frame_info *this_frame);
+
+/* Find the CFA information for PC.
+
+   Return 1 if a register is used for the CFA, or 0 if another
+   expression is used.  Throw an exception on error.
+
+   GDBARCH is the architecture to use.
+   DATA is the per-CU data.
+
+   REGNUM_OUT is an out parameter that is set to the register number.
+   OFFSET_OUT is the offset to use from this register.
+   These are only filled in when 1 is returned.
+
+   TEXT_OFFSET_OUT, CFA_START_OUT, and CFA_END_OUT describe the CFA
+   in other cases.  These are only used when 0 is returned.  */
+
+extern int dwarf2_fetch_cfa_info (struct gdbarch *gdbarch, CORE_ADDR pc,
+				  struct dwarf2_per_cu_data *data,
+				  int *regnum_out, LONGEST *offset_out,
+				  CORE_ADDR *text_offset_out,
+				  const gdb_byte **cfa_start_out,
+				  const gdb_byte **cfa_end_out);
+
+#endif /* dwarf2-frame.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/frame-tailcall.c ./gdb/dwarf2/frame-tailcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/frame-tailcall.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/frame-tailcall.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,487 @@
+/* Virtual tail call frames unwinder for GDB.
+
+   Copyright (C) 2010-2021 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 "frame.h"
+#include "dwarf2/frame-tailcall.h"
+#include "dwarf2/loc.h"
+#include "frame-unwind.h"
+#include "block.h"
+#include "hashtab.h"
+#include "gdbtypes.h"
+#include "regcache.h"
+#include "value.h"
+#include "dwarf2/frame.h"
+#include "gdbarch.h"
+
+/* Contains struct tailcall_cache indexed by next_bottom_frame.  */
+static htab_t cache_htab;
+
+/* Associate structure of the unwinder to call_site_chain.  Lifetime of this
+   structure is maintained by REFC decremented by dealloc_cache, all of them
+   get deleted during reinit_frame_cache.  */
+struct tailcall_cache
+{
+  /* It must be the first one of this struct.  It is the furthest callee.  */
+  struct frame_info *next_bottom_frame;
+
+  /* Reference count.  The whole chain of virtual tail call frames shares one
+     tailcall_cache.  */
+  int refc;
+
+  /* Associated found virtual tail call frames chain, it is never NULL.  */
+  struct call_site_chain *chain;
+
+  /* Cached pretended_chain_levels result.  */
+  int chain_levels;
+
+  /* Unwound PC from the top (caller) frame, as it is not contained
+     in CHAIN.  */
+  CORE_ADDR prev_pc;
+
+  /* Compensate SP in caller frames appropriately.  prev_sp and
+     entry_cfa_sp_offset are valid only if PREV_SP_P.  PREV_SP is SP at the top
+     (caller) frame.  ENTRY_CFA_SP_OFFSET is shift of SP in tail call frames
+     against next_bottom_frame SP.  */
+  unsigned prev_sp_p : 1;
+  CORE_ADDR prev_sp;
+  LONGEST entry_cfa_sp_offset;
+};
+
+/* hash_f for htab_create_alloc of cache_htab.  */
+
+static hashval_t
+cache_hash (const void *arg)
+{
+  const struct tailcall_cache *cache = (const struct tailcall_cache *) arg;
+
+  return htab_hash_pointer (cache->next_bottom_frame);
+}
+
+/* eq_f for htab_create_alloc of cache_htab.  */
+
+static int
+cache_eq (const void *arg1, const void *arg2)
+{
+  const struct tailcall_cache *cache1 = (const struct tailcall_cache *) arg1;
+  const struct tailcall_cache *cache2 = (const struct tailcall_cache *) arg2;
+
+  return cache1->next_bottom_frame == cache2->next_bottom_frame;
+}
+
+/* Create new tailcall_cache for NEXT_BOTTOM_FRAME, NEXT_BOTTOM_FRAME must not
+   yet have been indexed by cache_htab.  Caller holds one reference of the new
+   tailcall_cache.  */
+
+static struct tailcall_cache *
+cache_new_ref1 (struct frame_info *next_bottom_frame)
+{
+  struct tailcall_cache *cache = XCNEW (struct tailcall_cache);
+  void **slot;
+
+  cache->next_bottom_frame = next_bottom_frame;
+  cache->refc = 1;
+
+  slot = htab_find_slot (cache_htab, cache, INSERT);
+  gdb_assert (*slot == NULL);
+  *slot = cache;
+
+  return cache;
+}
+
+/* Create new reference to CACHE.  */
+
+static void
+cache_ref (struct tailcall_cache *cache)
+{
+  gdb_assert (cache->refc > 0);
+
+  cache->refc++;
+}
+
+/* Drop reference to CACHE, possibly fully freeing it and unregistering it from
+   cache_htab.  */
+
+static void
+cache_unref (struct tailcall_cache *cache)
+{
+  gdb_assert (cache->refc > 0);
+
+  if (!--cache->refc)
+    {
+      gdb_assert (htab_find_slot (cache_htab, cache, NO_INSERT) != NULL);
+      htab_remove_elt (cache_htab, cache);
+
+      xfree (cache->chain);
+      xfree (cache);
+    }
+}
+
+/* Return 1 if FI is a non-bottom (not the callee) tail call frame.  Otherwise
+   return 0.  */
+
+static int
+frame_is_tailcall (struct frame_info *fi)
+{
+  return frame_unwinder_is (fi, &dwarf2_tailcall_frame_unwind);
+}
+
+/* Try to find tailcall_cache in cache_htab if FI is a part of its virtual tail
+   call chain.  Otherwise return NULL.  No new reference is created.  */
+
+static struct tailcall_cache *
+cache_find (struct frame_info *fi)
+{
+  struct tailcall_cache *cache;
+  void **slot;
+
+  while (frame_is_tailcall (fi))
+    {
+      fi = get_next_frame (fi);
+      gdb_assert (fi != NULL);
+    }
+
+  slot = htab_find_slot (cache_htab, &fi, NO_INSERT);
+  if (slot == NULL)
+    return NULL;
+
+  cache = (struct tailcall_cache *) *slot;
+  gdb_assert (cache != NULL);
+  return cache;
+}
+
+/* Number of virtual frames between THIS_FRAME and CACHE->NEXT_BOTTOM_FRAME.
+   If THIS_FRAME is CACHE-> NEXT_BOTTOM_FRAME return -1.  */
+
+static int
+existing_next_levels (struct frame_info *this_frame,
+		      struct tailcall_cache *cache)
+{
+  int retval = (frame_relative_level (this_frame)
+		- frame_relative_level (cache->next_bottom_frame) - 1);
+
+  gdb_assert (retval >= -1);
+
+  return retval;
+}
+
+/* The number of virtual tail call frames in CHAIN.  With no virtual tail call
+   frames the function would return 0 (but CHAIN does not exist in such
+   case).  */
+
+static int
+pretended_chain_levels (struct call_site_chain *chain)
+{
+  int chain_levels;
+
+  gdb_assert (chain != NULL);
+
+  if (chain->callers == chain->length && chain->callees == chain->length)
+    return chain->length;
+
+  chain_levels = chain->callers + chain->callees;
+  gdb_assert (chain_levels <= chain->length);
+
+  return chain_levels;
+}
+
+/* Implementation of frame_this_id_ftype.  THIS_CACHE must be already
+   initialized with tailcall_cache, THIS_FRAME must be a part of THIS_CACHE.
+
+   Specific virtual tail call frames are tracked by INLINE_DEPTH.  */
+
+static void
+tailcall_frame_this_id (struct frame_info *this_frame, void **this_cache,
+			struct frame_id *this_id)
+{
+  struct tailcall_cache *cache = (struct tailcall_cache *) *this_cache;
+  struct frame_info *next_frame;
+
+  /* Tail call does not make sense for a sentinel frame.  */
+  next_frame = get_next_frame (this_frame);
+  gdb_assert (next_frame != NULL);
+
+  *this_id = get_frame_id (next_frame);
+  (*this_id).code_addr = get_frame_pc (this_frame);
+  (*this_id).code_addr_p = true;
+  (*this_id).artificial_depth = (cache->chain_levels
+				 - existing_next_levels (this_frame, cache));
+  gdb_assert ((*this_id).artificial_depth > 0);
+}
+
+/* Find PC to be unwound from THIS_FRAME.  THIS_FRAME must be a part of
+   CACHE.  */
+
+static CORE_ADDR
+pretend_pc (struct frame_info *this_frame, struct tailcall_cache *cache)
+{
+  int next_levels = existing_next_levels (this_frame, cache);
+  struct call_site_chain *chain = cache->chain;
+
+  gdb_assert (chain != NULL);
+
+  next_levels++;
+  gdb_assert (next_levels >= 0);
+
+  if (next_levels < chain->callees)
+    return chain->call_site[chain->length - next_levels - 1]->pc;
+  next_levels -= chain->callees;
+
+  /* Otherwise CHAIN->CALLEES are already covered by CHAIN->CALLERS.  */
+  if (chain->callees != chain->length)
+    {
+      if (next_levels < chain->callers)
+	return chain->call_site[chain->callers - next_levels - 1]->pc;
+      next_levels -= chain->callers;
+    }
+
+  gdb_assert (next_levels == 0);
+  return cache->prev_pc;
+}
+
+/* Implementation of frame_prev_register_ftype.  If no specific register
+   override is supplied NULL is returned (this is incompatible with
+   frame_prev_register_ftype semantics).  next_bottom_frame and tail call
+   frames unwind the NULL case differently.  */
+
+struct value *
+dwarf2_tailcall_prev_register_first (struct frame_info *this_frame,
+				     void **tailcall_cachep, int regnum)
+{
+  struct gdbarch *this_gdbarch = get_frame_arch (this_frame);
+  struct tailcall_cache *cache = (struct tailcall_cache *) *tailcall_cachep;
+  CORE_ADDR addr;
+
+  if (regnum == gdbarch_pc_regnum (this_gdbarch))
+    addr = pretend_pc (this_frame, cache);
+  else if (cache->prev_sp_p && regnum == gdbarch_sp_regnum (this_gdbarch))
+    {
+      int next_levels = existing_next_levels (this_frame, cache);
+
+      if (next_levels == cache->chain_levels - 1)
+	addr = cache->prev_sp;
+      else
+	addr = dwarf2_frame_cfa (this_frame) - cache->entry_cfa_sp_offset;
+    }
+  else
+    return NULL;
+
+  return frame_unwind_got_address (this_frame, regnum, addr);
+}
+
+/* Implementation of frame_prev_register_ftype for tail call frames.  Register
+   set of virtual tail call frames is assumed to be the one of the top (caller)
+   frame - assume unchanged register value for NULL from
+   dwarf2_tailcall_prev_register_first.  */
+
+static struct value *
+tailcall_frame_prev_register (struct frame_info *this_frame,
+			       void **this_cache, int regnum)
+{
+  struct tailcall_cache *cache = (struct tailcall_cache *) *this_cache;
+  struct value *val;
+
+  gdb_assert (this_frame != cache->next_bottom_frame);
+
+  val = dwarf2_tailcall_prev_register_first (this_frame, this_cache, regnum);
+  if (val)
+    return val;
+
+  return frame_unwind_got_register (this_frame, regnum, regnum);
+}
+
+/* Implementation of frame_sniffer_ftype.  It will never find a new chain, use
+   dwarf2_tailcall_sniffer_first for the bottom (callee) frame.  It will find
+   all the predecessing virtual tail call frames, it will return false when
+   there exist no more tail call frames in this chain.  */
+
+static int
+tailcall_frame_sniffer (const struct frame_unwind *self,
+			 struct frame_info *this_frame, void **this_cache)
+{
+  struct frame_info *next_frame;
+  int next_levels;
+  struct tailcall_cache *cache;
+
+  if (!dwarf2_frame_unwinders_enabled_p)
+    return 0;
+
+  /* Inner tail call element does not make sense for a sentinel frame.  */
+  next_frame = get_next_frame (this_frame);
+  if (next_frame == NULL)
+    return 0;
+
+  cache = cache_find (next_frame);
+  if (cache == NULL)
+    return 0;
+
+  cache_ref (cache);
+
+  next_levels = existing_next_levels (this_frame, cache);
+
+  /* NEXT_LEVELS is -1 only in dwarf2_tailcall_sniffer_first.  */
+  gdb_assert (next_levels >= 0);
+  gdb_assert (next_levels <= cache->chain_levels);
+
+  if (next_levels == cache->chain_levels)
+    {
+      cache_unref (cache);
+      return 0;
+    }
+
+  *this_cache = cache;
+  return 1;
+}
+
+/* The initial "sniffer" whether THIS_FRAME is a bottom (callee) frame of a new
+   chain to create.  Keep TAILCALL_CACHEP NULL if it did not find any chain,
+   initialize it otherwise.  No tail call chain is created if there are no
+   unambiguous virtual tail call frames to report.
+   
+   ENTRY_CFA_SP_OFFSETP is NULL if no special SP handling is possible,
+   otherwise *ENTRY_CFA_SP_OFFSETP is the number of bytes to subtract from tail
+   call frames frame base to get the SP value there - to simulate return
+   address pushed on the stack.  */
+
+void
+dwarf2_tailcall_sniffer_first (struct frame_info *this_frame,
+			       void **tailcall_cachep,
+			       const LONGEST *entry_cfa_sp_offsetp)
+{
+  CORE_ADDR prev_pc = 0, prev_sp = 0;	/* GCC warning.  */
+  int prev_sp_p = 0;
+  CORE_ADDR this_pc;
+  struct gdbarch *prev_gdbarch;
+  gdb::unique_xmalloc_ptr<call_site_chain> chain;
+  struct tailcall_cache *cache;
+
+  gdb_assert (*tailcall_cachep == NULL);
+
+  /* PC may be after the function if THIS_FRAME calls noreturn function,
+     get_frame_address_in_block will decrease it by 1 in such case.  */
+  this_pc = get_frame_address_in_block (this_frame);
+
+  try
+    {
+      int sp_regnum;
+
+      prev_gdbarch = frame_unwind_arch (this_frame);
+
+      /* Simulate frame_unwind_pc without setting this_frame->prev_pc.p.  */
+      prev_pc = gdbarch_unwind_pc (prev_gdbarch, this_frame);
+
+      /* call_site_find_chain can throw an exception.  */
+      chain = call_site_find_chain (prev_gdbarch, prev_pc, this_pc);
+
+      if (entry_cfa_sp_offsetp != NULL)
+	{
+	  sp_regnum = gdbarch_sp_regnum (prev_gdbarch);
+	  if (sp_regnum != -1)
+	    {
+	      prev_sp = frame_unwind_register_unsigned (this_frame, sp_regnum);
+	      prev_sp_p = 1;
+	    }
+	}
+    }
+  catch (const gdb_exception_error &except)
+    {
+      if (entry_values_debug)
+	exception_print (gdb_stdout, except);
+
+      switch (except.error)
+	{
+	case NO_ENTRY_VALUE_ERROR:
+	  /* Thrown by call_site_find_chain.  */
+	case MEMORY_ERROR:
+	case OPTIMIZED_OUT_ERROR:
+	case NOT_AVAILABLE_ERROR:
+	  /* These can normally happen when we try to access an
+	     optimized out or unavailable register, either in a
+	     physical register or spilled to memory.  */
+	  return;
+	}
+
+      /* Let unexpected errors propagate.  */
+      throw;
+    }
+
+  /* Ambiguous unwind or unambiguous unwind verified as matching.  */
+  if (chain == NULL || chain->length == 0)
+    return;
+
+  cache = cache_new_ref1 (this_frame);
+  *tailcall_cachep = cache;
+  cache->chain = chain.release ();
+  cache->prev_pc = prev_pc;
+  cache->chain_levels = pretended_chain_levels (cache->chain);
+  cache->prev_sp_p = prev_sp_p;
+  if (cache->prev_sp_p)
+    {
+      cache->prev_sp = prev_sp;
+      cache->entry_cfa_sp_offset = *entry_cfa_sp_offsetp;
+    }
+  gdb_assert (cache->chain_levels > 0);
+}
+
+/* Implementation of frame_dealloc_cache_ftype.  It can be called even for the
+   bottom chain frame from dwarf2_frame_dealloc_cache which is not a real
+   TAILCALL_FRAME.  */
+
+static void
+tailcall_frame_dealloc_cache (struct frame_info *self, void *this_cache)
+{
+  struct tailcall_cache *cache = (struct tailcall_cache *) this_cache;
+
+  cache_unref (cache);
+}
+
+/* Implementation of frame_prev_arch_ftype.  We assume all the virtual tail
+   call frames have gdbarch of the bottom (callee) frame.  */
+
+static struct gdbarch *
+tailcall_frame_prev_arch (struct frame_info *this_frame,
+			  void **this_prologue_cache)
+{
+  struct tailcall_cache *cache = (struct tailcall_cache *) *this_prologue_cache;
+
+  return get_frame_arch (cache->next_bottom_frame);
+}
+
+/* Virtual tail call frame unwinder if dwarf2_tailcall_sniffer_first finds
+   a chain to create.  */
+
+const struct frame_unwind dwarf2_tailcall_frame_unwind =
+{
+  TAILCALL_FRAME,
+  default_frame_unwind_stop_reason,
+  tailcall_frame_this_id,
+  tailcall_frame_prev_register,
+  NULL,
+  tailcall_frame_sniffer,
+  tailcall_frame_dealloc_cache,
+  tailcall_frame_prev_arch
+};
+
+void _initialize_tailcall_frame ();
+void
+_initialize_tailcall_frame ()
+{
+  cache_htab = htab_create_alloc (50, cache_hash, cache_eq, NULL, xcalloc,
+				  xfree);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/frame-tailcall.h ./gdb/dwarf2/frame-tailcall.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/frame-tailcall.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/frame-tailcall.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,39 @@
+/* Definitions for virtual tail call frames unwinder for GDB.
+
+   Copyright (C) 2010-2021 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 DWARF2_FRAME_TAILCALL_H
+#define DWARF2_FRAME_TAILCALL_H 1
+
+struct frame_info;
+struct frame_unwind;
+
+/* The tail call frame unwinder.  */
+
+extern void
+  dwarf2_tailcall_sniffer_first (struct frame_info *this_frame,
+				 void **tailcall_cachep,
+				 const LONGEST *entry_cfa_sp_offsetp);
+
+extern struct value *
+  dwarf2_tailcall_prev_register_first (struct frame_info *this_frame,
+				       void **tailcall_cachep, int regnum);
+
+extern const struct frame_unwind dwarf2_tailcall_frame_unwind;
+
+#endif /* !DWARF2_FRAME_TAILCALL_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-cache.c ./gdb/dwarf2/index-cache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-cache.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/index-cache.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,376 @@
+/* Caching of GDB/DWARF index files.
+
+   Copyright (C) 1994-2021 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 "dwarf2/index-cache.h"
+
+#include "build-id.h"
+#include "cli/cli-cmds.h"
+#include "command.h"
+#include "gdbsupport/scoped_mmap.h"
+#include "gdbsupport/pathstuff.h"
+#include "dwarf2/index-write.h"
+#include "dwarf2/read.h"
+#include "dwarf2/dwz.h"
+#include "objfiles.h"
+#include "gdbsupport/selftest.h"
+#include <string>
+#include <stdlib.h>
+
+/* When set to true, show debug messages about the index cache.  */
+static bool debug_index_cache = false;
+
+/* The index cache directory, used for "set/show index-cache directory".  */
+static char *index_cache_directory = NULL;
+
+/* See dwarf-index.cache.h.  */
+index_cache global_index_cache;
+
+/* set/show index-cache commands.  */
+static cmd_list_element *set_index_cache_prefix_list;
+static cmd_list_element *show_index_cache_prefix_list;
+
+/* Default destructor of index_cache_resource.  */
+index_cache_resource::~index_cache_resource () = default;
+
+/* See dwarf-index-cache.h.  */
+
+void
+index_cache::set_directory (std::string dir)
+{
+  gdb_assert (!dir.empty ());
+
+  m_dir = std::move (dir);
+
+  if (debug_index_cache)
+    printf_unfiltered ("index cache: now using directory %s\n", m_dir.c_str ());
+}
+
+/* See dwarf-index-cache.h.  */
+
+void
+index_cache::enable ()
+{
+  if (debug_index_cache)
+    printf_unfiltered ("index cache: enabling (%s)\n", m_dir.c_str ());
+
+  m_enabled = true;
+}
+
+/* See dwarf-index-cache.h.  */
+
+void
+index_cache::disable ()
+{
+  if (debug_index_cache)
+    printf_unfiltered ("index cache: disabling\n");
+
+  m_enabled = false;
+}
+
+/* See dwarf-index-cache.h.  */
+
+void
+index_cache::store (dwarf2_per_objfile *per_objfile)
+{
+  objfile *obj = per_objfile->objfile;
+
+  if (!enabled ())
+    return;
+
+  /* Get build id of objfile.  */
+  const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
+  if (build_id == nullptr)
+    {
+      if (debug_index_cache)
+	printf_unfiltered ("index cache: objfile %s has no build id\n",
+			   objfile_name (obj));
+      return;
+    }
+
+  std::string build_id_str = build_id_to_string (build_id);
+
+  /* Get build id of dwz file, if present.  */
+  gdb::optional<std::string> dwz_build_id_str;
+  const dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd);
+  const char *dwz_build_id_ptr = NULL;
+
+  if (dwz != nullptr)
+    {
+      const bfd_build_id *dwz_build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
+
+      if (dwz_build_id == nullptr)
+	{
+	  if (debug_index_cache)
+	    printf_unfiltered ("index cache: dwz objfile %s has no build id\n",
+			       dwz->filename ());
+	  return;
+	}
+
+      dwz_build_id_str = build_id_to_string (dwz_build_id);
+      dwz_build_id_ptr = dwz_build_id_str->c_str ();
+    }
+
+  if (m_dir.empty ())
+    {
+      warning (_("The index cache directory name is empty, skipping store."));
+      return;
+    }
+
+  try
+    {
+      /* Try to create the containing directory.  */
+      if (!mkdir_recursive (m_dir.c_str ()))
+	{
+	  warning (_("index cache: could not make cache directory: %s"),
+		   safe_strerror (errno));
+	  return;
+	}
+
+      if (debug_index_cache)
+        printf_unfiltered ("index cache: writing index cache for objfile %s\n",
+			   objfile_name (obj));
+
+      /* Write the index itself to the directory, using the build id as the
+         filename.  */
+      write_psymtabs_to_index (per_objfile, m_dir.c_str (),
+			       build_id_str.c_str (), dwz_build_id_ptr,
+			       dw_index_kind::GDB_INDEX);
+    }
+  catch (const gdb_exception_error &except)
+    {
+      if (debug_index_cache)
+	printf_unfiltered ("index cache: couldn't store index cache for objfile "
+			   "%s: %s", objfile_name (obj), except.what ());
+    }
+}
+
+#if HAVE_SYS_MMAN_H
+
+/* Hold the resources for an mmapped index file.  */
+
+struct index_cache_resource_mmap final : public index_cache_resource
+{
+  /* Try to mmap FILENAME.  Throw an exception on failure, including if the
+     file doesn't exist. */
+  index_cache_resource_mmap (const char *filename)
+    : mapping (mmap_file (filename))
+  {}
+
+  scoped_mmap mapping;
+};
+
+/* See dwarf-index-cache.h.  */
+
+gdb::array_view<const gdb_byte>
+index_cache::lookup_gdb_index (const bfd_build_id *build_id,
+			       std::unique_ptr<index_cache_resource> *resource)
+{
+  if (!enabled ())
+    return {};
+
+  if (m_dir.empty ())
+    {
+      warning (_("The index cache directory name is empty, skipping cache "
+		 "lookup."));
+      return {};
+    }
+
+  /* Compute where we would expect a gdb index file for this build id to be.  */
+  std::string filename = make_index_filename (build_id, INDEX4_SUFFIX);
+
+  try
+    {
+      if (debug_index_cache)
+        printf_unfiltered ("index cache: trying to read %s\n",
+			   filename.c_str ());
+
+      /* Try to map that file.  */
+      index_cache_resource_mmap *mmap_resource
+	= new index_cache_resource_mmap (filename.c_str ());
+
+      /* Yay, it worked!  Hand the resource to the caller.  */
+      resource->reset (mmap_resource);
+
+      return gdb::array_view<const gdb_byte>
+	  ((const gdb_byte *) mmap_resource->mapping.get (),
+	   mmap_resource->mapping.size ());
+    }
+  catch (const gdb_exception_error &except)
+    {
+      if (debug_index_cache)
+	printf_unfiltered ("index cache: couldn't read %s: %s\n",
+			   filename.c_str (), except.what ());
+    }
+
+  return {};
+}
+
+#else /* !HAVE_SYS_MMAN_H */
+
+/* See dwarf-index-cache.h.  This is a no-op on unsupported systems.  */
+
+gdb::array_view<const gdb_byte>
+index_cache::lookup_gdb_index (const bfd_build_id *build_id,
+			       std::unique_ptr<index_cache_resource> *resource)
+{
+  return {};
+}
+
+#endif
+
+/* See dwarf-index-cache.h.  */
+
+std::string
+index_cache::make_index_filename (const bfd_build_id *build_id,
+				  const char *suffix) const
+{
+  std::string build_id_str = build_id_to_string (build_id);
+
+  return m_dir + SLASH_STRING + build_id_str + suffix;
+}
+
+/* True when we are executing "show index-cache".  This is used to improve the
+   printout a little bit.  */
+static bool in_show_index_cache_command = false;
+
+/* "show index-cache" handler.  */
+
+static void
+show_index_cache_command (const char *arg, int from_tty)
+{
+  /* Note that we are executing "show index-cache".  */
+  auto restore_flag = make_scoped_restore (&in_show_index_cache_command, true);
+
+  /* Call all "show index-cache" subcommands.  */
+  cmd_show_list (show_index_cache_prefix_list, from_tty);
+
+  printf_unfiltered ("\n");
+  printf_unfiltered
+    (_("The index cache is currently %s.\n"),
+     global_index_cache.enabled () ? _("enabled") : _("disabled"));
+}
+
+/* "set index-cache on" handler.  */
+
+static void
+set_index_cache_on_command (const char *arg, int from_tty)
+{
+  global_index_cache.enable ();
+}
+
+/* "set index-cache off" handler.  */
+
+static void
+set_index_cache_off_command (const char *arg, int from_tty)
+{
+  global_index_cache.disable ();
+}
+
+/* "set index-cache directory" handler.  */
+
+static void
+set_index_cache_directory_command (const char *arg, int from_tty,
+				   cmd_list_element *element)
+{
+  /* Make sure the index cache directory is absolute and tilde-expanded.  */
+  gdb::unique_xmalloc_ptr<char> abs (gdb_abspath (index_cache_directory));
+  xfree (index_cache_directory);
+  index_cache_directory = abs.release ();
+  global_index_cache.set_directory (index_cache_directory);
+}
+
+/* "show index-cache stats" handler.  */
+
+static void
+show_index_cache_stats_command (const char *arg, int from_tty)
+{
+  const char *indent = "";
+
+  /* If this command is invoked through "show index-cache", make the display a
+     bit nicer.  */
+  if (in_show_index_cache_command)
+    {
+      indent = "  ";
+      printf_unfiltered ("\n");
+    }
+
+  printf_unfiltered (_("%s  Cache hits (this session): %u\n"),
+		     indent, global_index_cache.n_hits ());
+  printf_unfiltered (_("%sCache misses (this session): %u\n"),
+		     indent, global_index_cache.n_misses ());
+}
+
+void _initialize_index_cache ();
+void
+_initialize_index_cache ()
+{
+  /* Set the default index cache directory.  */
+  std::string cache_dir = get_standard_cache_dir ();
+  if (!cache_dir.empty ())
+    {
+      index_cache_directory = xstrdup (cache_dir.c_str ());
+      global_index_cache.set_directory (std::move (cache_dir));
+    }
+  else
+    warning (_("Couldn't determine a path for the index cache directory."));
+
+  /* set index-cache */
+  add_basic_prefix_cmd ("index-cache", class_files,
+			_("Set index-cache options."),
+			&set_index_cache_prefix_list,
+			"set index-cache ", false, &setlist);
+
+  /* show index-cache */
+  add_prefix_cmd ("index-cache", class_files, show_index_cache_command,
+		  _("Show index-cache options."), &show_index_cache_prefix_list,
+		  "show index-cache ", false, &showlist);
+
+  /* set index-cache on */
+  add_cmd ("on", class_files, set_index_cache_on_command,
+	   _("Enable the index cache."), &set_index_cache_prefix_list);
+
+  /* set index-cache off */
+  add_cmd ("off", class_files, set_index_cache_off_command,
+	   _("Disable the index cache."), &set_index_cache_prefix_list);
+
+  /* set index-cache directory */
+  add_setshow_filename_cmd ("directory", class_files, &index_cache_directory,
+			    _("Set the directory of the index cache."),
+			    _("Show the directory of the index cache."),
+			    NULL,
+			    set_index_cache_directory_command, NULL,
+			    &set_index_cache_prefix_list,
+			    &show_index_cache_prefix_list);
+
+  /* show index-cache stats */
+  add_cmd ("stats", class_files, show_index_cache_stats_command,
+	   _("Show some stats about the index cache."),
+	   &show_index_cache_prefix_list);
+
+  /* set debug index-cache */
+  add_setshow_boolean_cmd ("index-cache", class_maintenance,
+			   &debug_index_cache,
+			   _("Set display of index-cache debug messages."),
+			   _("Show display of index-cache debug messages."),
+			   _("\
+When non-zero, debugging output for the index cache is displayed."),
+			    NULL, NULL,
+			    &setdebuglist, &showdebuglist);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-cache.h ./gdb/dwarf2/index-cache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-cache.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/index-cache.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,112 @@
+/* Caching of GDB/DWARF index files.
+
+   Copyright (C) 2018-2021 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 DWARF_INDEX_CACHE_H
+#define DWARF_INDEX_CACHE_H
+
+#include "dwarf2/index-common.h"
+#include "gdbsupport/array-view.h"
+#include "symfile.h"
+
+/* Base of the classes used to hold the resources of the indices loaded from
+   the cache (e.g. mmapped files).  */
+
+struct index_cache_resource
+{
+  virtual ~index_cache_resource () = 0;
+};
+
+/* Class to manage the access to the DWARF index cache.  */
+
+class index_cache
+{
+public:
+  /* Change the directory used to save/load index files.  */
+  void set_directory (std::string dir);
+
+  /* Return true if the usage of the cache is enabled.  */
+  bool enabled () const
+  {
+    return m_enabled;
+  }
+
+  /* Enable the cache.  */
+  void enable ();
+
+  /* Disable the cache.  */
+  void disable ();
+
+  /* Store an index for the specified object file in the cache.  */
+  void store (dwarf2_per_objfile *per_objfile);
+
+  /* Look for an index file matching BUILD_ID.  If found, return the contents
+     as an array_view and store the underlying resources (allocated memory,
+     mapped file, etc) in RESOURCE.  The returned array_view is valid as long
+     as RESOURCE is not destroyed.
+
+     If no matching index file is found, return an empty array view.  */
+  gdb::array_view<const gdb_byte>
+  lookup_gdb_index (const bfd_build_id *build_id,
+		    std::unique_ptr<index_cache_resource> *resource);
+
+  /* Return the number of cache hits.  */
+  unsigned int n_hits () const
+  { return m_n_hits; }
+
+  /* Record a cache hit.  */
+  void hit ()
+  {
+    if (enabled ())
+      m_n_hits++;
+  }
+
+  /* Return the number of cache misses.  */
+  unsigned int n_misses () const
+  { return m_n_misses; }
+
+  /* Record a cache miss.  */
+  void miss ()
+  {
+    if (enabled ())
+      m_n_misses++;
+  }
+
+private:
+
+  /* Compute the absolute filename where the index of the objfile with build
+     id BUILD_ID will be stored.  SUFFIX is appended at the end of the
+     filename.  */
+  std::string make_index_filename (const bfd_build_id *build_id,
+				   const char *suffix) const;
+
+  /* The base directory where we are storing and looking up index files.  */
+  std::string m_dir;
+
+  /* Whether the cache is enabled.  */
+  bool m_enabled = false;
+
+  /* Number of cache hits and misses during this GDB session.  */
+  unsigned int m_n_hits = 0;
+  unsigned int m_n_misses = 0;
+};
+
+/* The global instance of the index cache.  */
+extern index_cache global_index_cache;
+
+#endif /* DWARF_INDEX_CACHE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-common.c ./gdb/dwarf2/index-common.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-common.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/index-common.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,56 @@
+/* Things needed for both reading and writing DWARF indices.
+
+   Copyright (C) 1994-2021 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 "dwarf2/index-common.h"
+
+/* See dwarf-index-common.h.  */
+
+hashval_t
+mapped_index_string_hash (int index_version, const void *p)
+{
+  const unsigned char *str = (const unsigned char *) p;
+  hashval_t r = 0;
+  unsigned char c;
+
+  while ((c = *str++) != 0)
+    {
+      if (index_version >= 5)
+	c = tolower (c);
+      r = r * 67 + c - 113;
+    }
+
+  return r;
+}
+
+/* See dwarf-index-common.h.  */
+
+uint32_t
+dwarf5_djb_hash (const char *str_)
+{
+  const unsigned char *str = (const unsigned char *) str_;
+
+  /* Note: tolower here ignores UTF-8, which isn't fully compliant.
+     See http://dwarfstd.org/ShowIssue.php?issue=161027.1.  */
+
+  uint32_t hash = 5381;
+  while (int c = *str++)
+    hash = hash * 33 + tolower (c);
+  return hash;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-common.h ./gdb/dwarf2/index-common.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-common.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/index-common.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,68 @@
+/* Things needed for both reading and writing DWARF indices.
+
+   Copyright (C) 1994-2021 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 DWARF_INDEX_COMMON_H
+#define DWARF_INDEX_COMMON_H
+
+/* The suffix for an index file.  */
+#define INDEX4_SUFFIX ".gdb-index"
+#define INDEX5_SUFFIX ".debug_names"
+#define DEBUG_STR_SUFFIX ".debug_str"
+
+/* All offsets in the index are of this type.  It must be
+   architecture-independent.  */
+typedef uint32_t offset_type;
+
+#if WORDS_BIGENDIAN
+
+/* Convert VALUE between big- and little-endian.  */
+
+static inline offset_type
+byte_swap (offset_type value)
+{
+  offset_type result;
+
+  result = (value & 0xff) << 24;
+  result |= (value & 0xff00) << 8;
+  result |= (value & 0xff0000) >> 8;
+  result |= (value & 0xff000000) >> 24;
+  return result;
+}
+
+#define MAYBE_SWAP(V)  byte_swap (V)
+
+#else
+#define MAYBE_SWAP(V) static_cast<offset_type> (V)
+#endif /* WORDS_BIGENDIAN */
+
+/* The hash function for strings in the mapped index.  This is the same as
+   SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
+   implementation.  This is necessary because the hash function is tied to the
+   format of the mapped index file.  The hash values do not have to match with
+   SYMBOL_HASH_NEXT.
+
+   Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
+
+hashval_t mapped_index_string_hash (int index_version, const void *p);
+
+/* Symbol name hashing function as specified by DWARF-5.  */
+
+uint32_t dwarf5_djb_hash (const char *str_);
+
+#endif /* DWARF_INDEX_COMMON_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-write.c ./gdb/dwarf2/index-write.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-write.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/index-write.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,1827 @@
+/* DWARF index writing support for GDB.
+
+   Copyright (C) 1994-2021 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 "dwarf2/index-write.h"
+
+#include "addrmap.h"
+#include "cli/cli-decode.h"
+#include "gdbsupport/byte-vector.h"
+#include "gdbsupport/filestuff.h"
+#include "gdbsupport/gdb_unlinker.h"
+#include "gdbsupport/pathstuff.h"
+#include "gdbsupport/scoped_fd.h"
+#include "complaints.h"
+#include "dwarf2/index-common.h"
+#include "dwarf2.h"
+#include "dwarf2/read.h"
+#include "dwarf2/dwz.h"
+#include "gdb/gdb-index.h"
+#include "gdbcmd.h"
+#include "objfiles.h"
+#include "psympriv.h"
+#include "ada-lang.h"
+
+#include <algorithm>
+#include <cmath>
+#include <forward_list>
+#include <set>
+#include <unordered_map>
+#include <unordered_set>
+
+/* Ensure only legit values are used.  */
+#define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
+  do { \
+    gdb_assert ((unsigned int) (value) <= 1); \
+    GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
+  } while (0)
+
+/* Ensure only legit values are used.  */
+#define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
+  do { \
+    gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
+                && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
+    GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
+  } while (0)
+
+/* Ensure we don't use more than the allotted number of bits for the CU.  */
+#define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
+  do { \
+    gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
+    GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
+  } while (0)
+
+/* The "save gdb-index" command.  */
+
+/* Write SIZE bytes from the buffer pointed to by DATA to FILE, with
+   error checking.  */
+
+static void
+file_write (FILE *file, const void *data, size_t size)
+{
+  if (fwrite (data, 1, size, file) != size)
+    error (_("couldn't data write to file"));
+}
+
+/* Write the contents of VEC to FILE, with error checking.  */
+
+template<typename Elem, typename Alloc>
+static void
+file_write (FILE *file, const std::vector<Elem, Alloc> &vec)
+{
+  if (!vec.empty ())
+    file_write (file, vec.data (), vec.size () * sizeof (vec[0]));
+}
+
+/* In-memory buffer to prepare data to be written later to a file.  */
+class data_buf
+{
+public:
+  /* Copy DATA to the end of the buffer.  */
+  template<typename T>
+  void append_data (const T &data)
+  {
+    std::copy (reinterpret_cast<const gdb_byte *> (&data),
+	       reinterpret_cast<const gdb_byte *> (&data + 1),
+	       grow (sizeof (data)));
+  }
+
+  /* Copy CSTR (a zero-terminated string) to the end of buffer.  The
+     terminating zero is appended too.  */
+  void append_cstr0 (const char *cstr)
+  {
+    const size_t size = strlen (cstr) + 1;
+    std::copy (cstr, cstr + size, grow (size));
+  }
+
+  /* Store INPUT as ULEB128 to the end of buffer.  */
+  void append_unsigned_leb128 (ULONGEST input)
+  {
+    for (;;)
+      {
+	gdb_byte output = input & 0x7f;
+	input >>= 7;
+	if (input)
+	  output |= 0x80;
+	append_data (output);
+	if (input == 0)
+	  break;
+      }
+  }
+
+  /* Accept a host-format integer in VAL and append it to the buffer
+     as a target-format integer which is LEN bytes long.  */
+  void append_uint (size_t len, bfd_endian byte_order, ULONGEST val)
+  {
+    ::store_unsigned_integer (grow (len), len, byte_order, val);
+  }
+
+  /* Return the size of the buffer.  */
+  size_t size () const
+  {
+    return m_vec.size ();
+  }
+
+  /* Return true iff the buffer is empty.  */
+  bool empty () const
+  {
+    return m_vec.empty ();
+  }
+
+  /* Write the buffer to FILE.  */
+  void file_write (FILE *file) const
+  {
+    ::file_write (file, m_vec);
+  }
+
+private:
+  /* Grow SIZE bytes at the end of the buffer.  Returns a pointer to
+     the start of the new block.  */
+  gdb_byte *grow (size_t size)
+  {
+    m_vec.resize (m_vec.size () + size);
+    return &*(m_vec.end () - size);
+  }
+
+  gdb::byte_vector m_vec;
+};
+
+/* An entry in the symbol table.  */
+struct symtab_index_entry
+{
+  /* The name of the symbol.  */
+  const char *name;
+  /* The offset of the name in the constant pool.  */
+  offset_type index_offset;
+  /* A sorted vector of the indices of all the CUs that hold an object
+     of this name.  */
+  std::vector<offset_type> cu_indices;
+};
+
+/* The symbol table.  This is a power-of-2-sized hash table.  */
+struct mapped_symtab
+{
+  mapped_symtab ()
+  {
+    data.resize (1024);
+  }
+
+  offset_type n_elements = 0;
+  std::vector<symtab_index_entry> data;
+
+  /* Temporary storage for Ada names.  */
+  auto_obstack m_string_obstack;
+};
+
+/* Find a slot in SYMTAB for the symbol NAME.  Returns a reference to
+   the slot.
+
+   Function is used only during write_hash_table so no index format backward
+   compatibility is needed.  */
+
+static symtab_index_entry &
+find_slot (struct mapped_symtab *symtab, const char *name)
+{
+  offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
+
+  index = hash & (symtab->data.size () - 1);
+  step = ((hash * 17) & (symtab->data.size () - 1)) | 1;
+
+  for (;;)
+    {
+      if (symtab->data[index].name == NULL
+	  || strcmp (name, symtab->data[index].name) == 0)
+	return symtab->data[index];
+      index = (index + step) & (symtab->data.size () - 1);
+    }
+}
+
+/* Expand SYMTAB's hash table.  */
+
+static void
+hash_expand (struct mapped_symtab *symtab)
+{
+  auto old_entries = std::move (symtab->data);
+
+  symtab->data.clear ();
+  symtab->data.resize (old_entries.size () * 2);
+
+  for (auto &it : old_entries)
+    if (it.name != NULL)
+      {
+	auto &ref = find_slot (symtab, it.name);
+	ref = std::move (it);
+      }
+}
+
+/* Add an entry to SYMTAB.  NAME is the name of the symbol.
+   CU_INDEX is the index of the CU in which the symbol appears.
+   IS_STATIC is one if the symbol is static, otherwise zero (global).  */
+
+static void
+add_index_entry (struct mapped_symtab *symtab, const char *name,
+		 int is_static, gdb_index_symbol_kind kind,
+		 offset_type cu_index)
+{
+  offset_type cu_index_and_attrs;
+
+  ++symtab->n_elements;
+  if (4 * symtab->n_elements / 3 >= symtab->data.size ())
+    hash_expand (symtab);
+
+  symtab_index_entry &slot = find_slot (symtab, name);
+  if (slot.name == NULL)
+    {
+      slot.name = name;
+      /* index_offset is set later.  */
+    }
+
+  cu_index_and_attrs = 0;
+  DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
+  DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
+  DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
+
+  /* We don't want to record an index value twice as we want to avoid the
+     duplication.
+     We process all global symbols and then all static symbols
+     (which would allow us to avoid the duplication by only having to check
+     the last entry pushed), but a symbol could have multiple kinds in one CU.
+     To keep things simple we don't worry about the duplication here and
+     sort and uniquify the list after we've processed all symbols.  */
+  slot.cu_indices.push_back (cu_index_and_attrs);
+}
+
+/* Sort and remove duplicates of all symbols' cu_indices lists.  */
+
+static void
+uniquify_cu_indices (struct mapped_symtab *symtab)
+{
+  for (auto &entry : symtab->data)
+    {
+      if (entry.name != NULL && !entry.cu_indices.empty ())
+	{
+	  auto &cu_indices = entry.cu_indices;
+	  std::sort (cu_indices.begin (), cu_indices.end ());
+	  auto from = std::unique (cu_indices.begin (), cu_indices.end ());
+	  cu_indices.erase (from, cu_indices.end ());
+	}
+    }
+}
+
+/* A form of 'const char *' suitable for container keys.  Only the
+   pointer is stored.  The strings themselves are compared, not the
+   pointers.  */
+class c_str_view
+{
+public:
+  c_str_view (const char *cstr)
+    : m_cstr (cstr)
+  {}
+
+  bool operator== (const c_str_view &other) const
+  {
+    return strcmp (m_cstr, other.m_cstr) == 0;
+  }
+
+  /* Return the underlying C string.  Note, the returned string is
+     only a reference with lifetime of this object.  */
+  const char *c_str () const
+  {
+    return m_cstr;
+  }
+
+private:
+  friend class c_str_view_hasher;
+  const char *const m_cstr;
+};
+
+/* A std::unordered_map::hasher for c_str_view that uses the right
+   hash function for strings in a mapped index.  */
+class c_str_view_hasher
+{
+public:
+  size_t operator () (const c_str_view &x) const
+  {
+    return mapped_index_string_hash (INT_MAX, x.m_cstr);
+  }
+};
+
+/* A std::unordered_map::hasher for std::vector<>.  */
+template<typename T>
+class vector_hasher
+{
+public:
+  size_t operator () (const std::vector<T> &key) const
+  {
+    return iterative_hash (key.data (),
+			   sizeof (key.front ()) * key.size (), 0);
+  }
+};
+
+/* Write the mapped hash table SYMTAB to the data buffer OUTPUT, with
+   constant pool entries going into the data buffer CPOOL.  */
+
+static void
+write_hash_table (mapped_symtab *symtab, data_buf &output, data_buf &cpool)
+{
+  {
+    /* Elements are sorted vectors of the indices of all the CUs that
+       hold an object of this name.  */
+    std::unordered_map<std::vector<offset_type>, offset_type,
+		       vector_hasher<offset_type>>
+      symbol_hash_table;
+
+    /* We add all the index vectors to the constant pool first, to
+       ensure alignment is ok.  */
+    for (symtab_index_entry &entry : symtab->data)
+      {
+	if (entry.name == NULL)
+	  continue;
+	gdb_assert (entry.index_offset == 0);
+
+	/* Finding before inserting is faster than always trying to
+	   insert, because inserting always allocates a node, does the
+	   lookup, and then destroys the new node if another node
+	   already had the same key.  C++17 try_emplace will avoid
+	   this.  */
+	const auto found
+	  = symbol_hash_table.find (entry.cu_indices);
+	if (found != symbol_hash_table.end ())
+	  {
+	    entry.index_offset = found->second;
+	    continue;
+	  }
+
+	symbol_hash_table.emplace (entry.cu_indices, cpool.size ());
+	entry.index_offset = cpool.size ();
+	cpool.append_data (MAYBE_SWAP (entry.cu_indices.size ()));
+	for (const auto index : entry.cu_indices)
+	  cpool.append_data (MAYBE_SWAP (index));
+      }
+  }
+
+  /* Now write out the hash table.  */
+  std::unordered_map<c_str_view, offset_type, c_str_view_hasher> str_table;
+  for (const auto &entry : symtab->data)
+    {
+      offset_type str_off, vec_off;
+
+      if (entry.name != NULL)
+	{
+	  const auto insertpair = str_table.emplace (entry.name, cpool.size ());
+	  if (insertpair.second)
+	    cpool.append_cstr0 (entry.name);
+	  str_off = insertpair.first->second;
+	  vec_off = entry.index_offset;
+	}
+      else
+	{
+	  /* While 0 is a valid constant pool index, it is not valid
+	     to have 0 for both offsets.  */
+	  str_off = 0;
+	  vec_off = 0;
+	}
+
+      output.append_data (MAYBE_SWAP (str_off));
+      output.append_data (MAYBE_SWAP (vec_off));
+    }
+}
+
+typedef std::unordered_map<partial_symtab *, unsigned int> psym_index_map;
+
+/* Helper struct for building the address table.  */
+struct addrmap_index_data
+{
+  addrmap_index_data (data_buf &addr_vec_, psym_index_map &cu_index_htab_)
+    : addr_vec (addr_vec_), cu_index_htab (cu_index_htab_)
+  {}
+
+  struct objfile *objfile;
+  data_buf &addr_vec;
+  psym_index_map &cu_index_htab;
+
+  /* Non-zero if the previous_* fields are valid.
+     We can't write an entry until we see the next entry (since it is only then
+     that we know the end of the entry).  */
+  int previous_valid;
+  /* Index of the CU in the table of all CUs in the index file.  */
+  unsigned int previous_cu_index;
+  /* Start address of the CU.  */
+  CORE_ADDR previous_cu_start;
+};
+
+/* Write an address entry to ADDR_VEC.  */
+
+static void
+add_address_entry (struct objfile *objfile, data_buf &addr_vec,
+		   CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
+{
+  addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, start);
+  addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, end);
+  addr_vec.append_data (MAYBE_SWAP (cu_index));
+}
+
+/* Worker function for traversing an addrmap to build the address table.  */
+
+static int
+add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
+{
+  struct addrmap_index_data *data = (struct addrmap_index_data *) datap;
+  partial_symtab *pst = (partial_symtab *) obj;
+
+  if (data->previous_valid)
+    add_address_entry (data->objfile, data->addr_vec,
+		       data->previous_cu_start, start_addr,
+		       data->previous_cu_index);
+
+  data->previous_cu_start = start_addr;
+  if (pst != NULL)
+    {
+      const auto it = data->cu_index_htab.find (pst);
+      gdb_assert (it != data->cu_index_htab.cend ());
+      data->previous_cu_index = it->second;
+      data->previous_valid = 1;
+    }
+  else
+    data->previous_valid = 0;
+
+  return 0;
+}
+
+/* Write OBJFILE's address map to ADDR_VEC.
+   CU_INDEX_HTAB is used to map addrmap entries to their CU indices
+   in the index file.  */
+
+static void
+write_address_map (struct objfile *objfile, data_buf &addr_vec,
+		   psym_index_map &cu_index_htab)
+{
+  struct addrmap_index_data addrmap_index_data (addr_vec, cu_index_htab);
+
+  /* When writing the address table, we have to cope with the fact that
+     the addrmap iterator only provides the start of a region; we have to
+     wait until the next invocation to get the start of the next region.  */
+
+  addrmap_index_data.objfile = objfile;
+  addrmap_index_data.previous_valid = 0;
+
+  addrmap_foreach (objfile->partial_symtabs->psymtabs_addrmap,
+		   add_address_entry_worker, &addrmap_index_data);
+
+  /* It's highly unlikely the last entry (end address = 0xff...ff)
+     is valid, but we should still handle it.
+     The end address is recorded as the start of the next region, but that
+     doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
+     anyway.  */
+  if (addrmap_index_data.previous_valid)
+    add_address_entry (objfile, addr_vec,
+		       addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
+		       addrmap_index_data.previous_cu_index);
+}
+
+/* Return the symbol kind of PSYM.  */
+
+static gdb_index_symbol_kind
+symbol_kind (struct partial_symbol *psym)
+{
+  domain_enum domain = psym->domain;
+  enum address_class aclass = psym->aclass;
+
+  switch (domain)
+    {
+    case VAR_DOMAIN:
+      switch (aclass)
+	{
+	case LOC_BLOCK:
+	  return GDB_INDEX_SYMBOL_KIND_FUNCTION;
+	case LOC_TYPEDEF:
+	  return GDB_INDEX_SYMBOL_KIND_TYPE;
+	case LOC_COMPUTED:
+	case LOC_CONST_BYTES:
+	case LOC_OPTIMIZED_OUT:
+	case LOC_STATIC:
+	  return GDB_INDEX_SYMBOL_KIND_VARIABLE;
+	case LOC_CONST:
+	  /* Note: It's currently impossible to recognize psyms as enum values
+	     short of reading the type info.  For now punt.  */
+	  return GDB_INDEX_SYMBOL_KIND_VARIABLE;
+	default:
+	  /* There are other LOC_FOO values that one might want to classify
+	     as variables, but dwarf2read.c doesn't currently use them.  */
+	  return GDB_INDEX_SYMBOL_KIND_OTHER;
+	}
+    case STRUCT_DOMAIN:
+      return GDB_INDEX_SYMBOL_KIND_TYPE;
+    default:
+      return GDB_INDEX_SYMBOL_KIND_OTHER;
+    }
+}
+
+/* Add a list of partial symbols to SYMTAB.  */
+
+static void
+write_psymbols (struct mapped_symtab *symtab,
+		std::unordered_set<partial_symbol *> &psyms_seen,
+		struct partial_symbol **psymp,
+		int count,
+		offset_type cu_index,
+		int is_static)
+{
+  for (; count-- > 0; ++psymp)
+    {
+      struct partial_symbol *psym = *psymp;
+      const char *name = psym->ginfo.search_name ();
+
+      if (psym->ginfo.language () == language_ada)
+	{
+	  /* We want to ensure that the Ada main function's name appears
+	     verbatim in the index.  However, this name will be of the
+	     form "_ada_mumble", and will be rewritten by ada_decode.
+	     So, recognize it specially here and add it to the index by
+	     hand.  */
+	  if (strcmp (main_name (), name) == 0)
+	    {
+	      gdb_index_symbol_kind kind = symbol_kind (psym);
+
+	      add_index_entry (symtab, name, is_static, kind, cu_index);
+	    }
+
+	  /* In order for the index to work when read back into gdb, it
+	     has to supply a funny form of the name: it should be the
+	     encoded name, with any suffixes stripped.  Using the
+	     ordinary encoded name will not work properly with the
+	     searching logic in find_name_components_bounds; nor will
+	     using the decoded name.  Furthermore, an Ada "verbatim"
+	     name (of the form "<MumBle>") must be entered without the
+	     angle brackets.  Note that the current index is unusual,
+	     see PR symtab/24820 for details.  */
+	  std::string decoded = ada_decode (name);
+	  if (decoded[0] == '<')
+	    name = (char *) obstack_copy0 (&symtab->m_string_obstack,
+					   decoded.c_str () + 1,
+					   decoded.length () - 2);
+	  else
+	    name = obstack_strdup (&symtab->m_string_obstack,
+				   ada_encode (decoded.c_str ()));
+	}
+
+      /* Only add a given psymbol once.  */
+      if (psyms_seen.insert (psym).second)
+	{
+	  gdb_index_symbol_kind kind = symbol_kind (psym);
+
+	  add_index_entry (symtab, name, is_static, kind, cu_index);
+	}
+    }
+}
+
+/* A helper struct used when iterating over debug_types.  */
+struct signatured_type_index_data
+{
+  signatured_type_index_data (data_buf &types_list_,
+                              std::unordered_set<partial_symbol *> &psyms_seen_)
+    : types_list (types_list_), psyms_seen (psyms_seen_)
+  {}
+
+  struct objfile *objfile;
+  struct mapped_symtab *symtab;
+  data_buf &types_list;
+  std::unordered_set<partial_symbol *> &psyms_seen;
+  int cu_index;
+};
+
+/* A helper function that writes a single signatured_type to an
+   obstack.  */
+
+static int
+write_one_signatured_type (void **slot, void *d)
+{
+  struct signatured_type_index_data *info
+    = (struct signatured_type_index_data *) d;
+  struct signatured_type *entry = (struct signatured_type *) *slot;
+  partial_symtab *psymtab = entry->per_cu.v.psymtab;
+
+  write_psymbols (info->symtab,
+		  info->psyms_seen,
+		  (info->objfile->partial_symtabs->global_psymbols.data ()
+		   + psymtab->globals_offset),
+		  psymtab->n_global_syms, info->cu_index,
+		  0);
+  write_psymbols (info->symtab,
+		  info->psyms_seen,
+		  (info->objfile->partial_symtabs->static_psymbols.data ()
+		   + psymtab->statics_offset),
+		  psymtab->n_static_syms, info->cu_index,
+		  1);
+
+  info->types_list.append_uint (8, BFD_ENDIAN_LITTLE,
+				to_underlying (entry->per_cu.sect_off));
+  info->types_list.append_uint (8, BFD_ENDIAN_LITTLE,
+				to_underlying (entry->type_offset_in_tu));
+  info->types_list.append_uint (8, BFD_ENDIAN_LITTLE, entry->signature);
+
+  ++info->cu_index;
+
+  return 1;
+}
+
+/* Recurse into all "included" dependencies and count their symbols as
+   if they appeared in this psymtab.  */
+
+static void
+recursively_count_psymbols (partial_symtab *psymtab,
+			    size_t &psyms_seen)
+{
+  for (int i = 0; i < psymtab->number_of_dependencies; ++i)
+    if (psymtab->dependencies[i]->user != NULL)
+      recursively_count_psymbols (psymtab->dependencies[i],
+				  psyms_seen);
+
+  psyms_seen += psymtab->n_global_syms;
+  psyms_seen += psymtab->n_static_syms;
+}
+
+/* Recurse into all "included" dependencies and write their symbols as
+   if they appeared in this psymtab.  */
+
+static void
+recursively_write_psymbols (struct objfile *objfile,
+			    partial_symtab *psymtab,
+			    struct mapped_symtab *symtab,
+			    std::unordered_set<partial_symbol *> &psyms_seen,
+			    offset_type cu_index)
+{
+  int i;
+
+  for (i = 0; i < psymtab->number_of_dependencies; ++i)
+    if (psymtab->dependencies[i]->user != NULL)
+      recursively_write_psymbols (objfile,
+				  psymtab->dependencies[i],
+				  symtab, psyms_seen, cu_index);
+
+  write_psymbols (symtab,
+		  psyms_seen,
+		  (objfile->partial_symtabs->global_psymbols.data ()
+		   + psymtab->globals_offset),
+		  psymtab->n_global_syms, cu_index,
+		  0);
+  write_psymbols (symtab,
+		  psyms_seen,
+		  (objfile->partial_symtabs->static_psymbols.data ()
+		   + psymtab->statics_offset),
+		  psymtab->n_static_syms, cu_index,
+		  1);
+}
+
+/* DWARF-5 .debug_names builder.  */
+class debug_names
+{
+public:
+  debug_names (dwarf2_per_objfile *per_objfile, bool is_dwarf64,
+	       bfd_endian dwarf5_byte_order)
+    : m_dwarf5_byte_order (dwarf5_byte_order),
+      m_dwarf32 (dwarf5_byte_order),
+      m_dwarf64 (dwarf5_byte_order),
+      m_dwarf (is_dwarf64
+	       ? static_cast<dwarf &> (m_dwarf64)
+	       : static_cast<dwarf &> (m_dwarf32)),
+      m_name_table_string_offs (m_dwarf.name_table_string_offs),
+      m_name_table_entry_offs (m_dwarf.name_table_entry_offs),
+      m_debugstrlookup (per_objfile)
+  {}
+
+  int dwarf5_offset_size () const
+  {
+    const bool dwarf5_is_dwarf64 = &m_dwarf == &m_dwarf64;
+    return dwarf5_is_dwarf64 ? 8 : 4;
+  }
+
+  /* Is this symbol from DW_TAG_compile_unit or DW_TAG_type_unit?  */
+  enum class unit_kind { cu, tu };
+
+  /* Insert one symbol.  */
+  void insert (const partial_symbol *psym, int cu_index, bool is_static,
+	       unit_kind kind)
+  {
+    const int dwarf_tag = psymbol_tag (psym);
+    if (dwarf_tag == 0)
+      return;
+    const char *name = psym->ginfo.search_name ();
+
+    if (psym->ginfo.language () == language_ada)
+      {
+	/* We want to ensure that the Ada main function's name appears
+	   verbatim in the index.  However, this name will be of the
+	   form "_ada_mumble", and will be rewritten by ada_decode.
+	   So, recognize it specially here and add it to the index by
+	   hand.  */
+	if (strcmp (main_name (), name) == 0)
+	  {
+	    const auto insertpair
+	      = m_name_to_value_set.emplace (c_str_view (name),
+					     std::set<symbol_value> ());
+	    std::set<symbol_value> &value_set = insertpair.first->second;
+	    value_set.emplace (symbol_value (dwarf_tag, cu_index, is_static,
+					     kind));
+	  }
+
+	/* In order for the index to work when read back into gdb, it
+	   has to supply a funny form of the name: it should be the
+	   encoded name, with any suffixes stripped.  Using the
+	   ordinary encoded name will not work properly with the
+	   searching logic in find_name_components_bounds; nor will
+	   using the decoded name.  Furthermore, an Ada "verbatim"
+	   name (of the form "<MumBle>") must be entered without the
+	   angle brackets.  Note that the current index is unusual,
+	   see PR symtab/24820 for details.  */
+	std::string decoded = ada_decode (name);
+	if (decoded[0] == '<')
+	  name = (char *) obstack_copy0 (&m_string_obstack,
+					 decoded.c_str () + 1,
+					 decoded.length () - 2);
+	else
+	  name = obstack_strdup (&m_string_obstack,
+				 ada_encode (decoded.c_str ()));
+      }
+
+    const auto insertpair
+      = m_name_to_value_set.emplace (c_str_view (name),
+				     std::set<symbol_value> ());
+    std::set<symbol_value> &value_set = insertpair.first->second;
+    value_set.emplace (symbol_value (dwarf_tag, cu_index, is_static, kind));
+  }
+
+  /* Build all the tables.  All symbols must be already inserted.
+     This function does not call file_write, caller has to do it
+     afterwards.  */
+  void build ()
+  {
+    /* Verify the build method has not be called twice.  */
+    gdb_assert (m_abbrev_table.empty ());
+    const size_t name_count = m_name_to_value_set.size ();
+    m_bucket_table.resize
+      (std::pow (2, std::ceil (std::log2 (name_count * 4 / 3))));
+    m_hash_table.reserve (name_count);
+    m_name_table_string_offs.reserve (name_count);
+    m_name_table_entry_offs.reserve (name_count);
+
+    /* Map each hash of symbol to its name and value.  */
+    struct hash_it_pair
+    {
+      uint32_t hash;
+      decltype (m_name_to_value_set)::const_iterator it;
+    };
+    std::vector<std::forward_list<hash_it_pair>> bucket_hash;
+    bucket_hash.resize (m_bucket_table.size ());
+    for (decltype (m_name_to_value_set)::const_iterator it
+	   = m_name_to_value_set.cbegin ();
+	 it != m_name_to_value_set.cend ();
+	 ++it)
+      {
+	const char *const name = it->first.c_str ();
+	const uint32_t hash = dwarf5_djb_hash (name);
+	hash_it_pair hashitpair;
+	hashitpair.hash = hash;
+	hashitpair.it = it;
+	auto &slot = bucket_hash[hash % bucket_hash.size()];
+	slot.push_front (std::move (hashitpair));
+      }
+    for (size_t bucket_ix = 0; bucket_ix < bucket_hash.size (); ++bucket_ix)
+      {
+	const std::forward_list<hash_it_pair> &hashitlist
+	  = bucket_hash[bucket_ix];
+	if (hashitlist.empty ())
+	  continue;
+	uint32_t &bucket_slot = m_bucket_table[bucket_ix];
+	/* The hashes array is indexed starting at 1.  */
+	store_unsigned_integer (reinterpret_cast<gdb_byte *> (&bucket_slot),
+				sizeof (bucket_slot), m_dwarf5_byte_order,
+				m_hash_table.size () + 1);
+	for (const hash_it_pair &hashitpair : hashitlist)
+	  {
+	    m_hash_table.push_back (0);
+	    store_unsigned_integer (reinterpret_cast<gdb_byte *>
+							(&m_hash_table.back ()),
+				    sizeof (m_hash_table.back ()),
+				    m_dwarf5_byte_order, hashitpair.hash);
+	    const c_str_view &name = hashitpair.it->first;
+	    const std::set<symbol_value> &value_set = hashitpair.it->second;
+	    m_name_table_string_offs.push_back_reorder
+	      (m_debugstrlookup.lookup (name.c_str ()));
+	    m_name_table_entry_offs.push_back_reorder (m_entry_pool.size ());
+	    gdb_assert (!value_set.empty ());
+	    for (const symbol_value &value : value_set)
+	      {
+		int &idx = m_indexkey_to_idx[index_key (value.dwarf_tag,
+							value.is_static,
+							value.kind)];
+		if (idx == 0)
+		  {
+		    idx = m_idx_next++;
+		    m_abbrev_table.append_unsigned_leb128 (idx);
+		    m_abbrev_table.append_unsigned_leb128 (value.dwarf_tag);
+		    m_abbrev_table.append_unsigned_leb128
+			      (value.kind == unit_kind::cu ? DW_IDX_compile_unit
+							   : DW_IDX_type_unit);
+		    m_abbrev_table.append_unsigned_leb128 (DW_FORM_udata);
+		    m_abbrev_table.append_unsigned_leb128 (value.is_static
+							   ? DW_IDX_GNU_internal
+							   : DW_IDX_GNU_external);
+		    m_abbrev_table.append_unsigned_leb128 (DW_FORM_flag_present);
+
+		    /* Terminate attributes list.  */
+		    m_abbrev_table.append_unsigned_leb128 (0);
+		    m_abbrev_table.append_unsigned_leb128 (0);
+		  }
+
+		m_entry_pool.append_unsigned_leb128 (idx);
+		m_entry_pool.append_unsigned_leb128 (value.cu_index);
+	      }
+
+	    /* Terminate the list of CUs.  */
+	    m_entry_pool.append_unsigned_leb128 (0);
+	  }
+      }
+    gdb_assert (m_hash_table.size () == name_count);
+
+    /* Terminate tags list.  */
+    m_abbrev_table.append_unsigned_leb128 (0);
+  }
+
+  /* Return .debug_names bucket count.  This must be called only after
+     calling the build method.  */
+  uint32_t bucket_count () const
+  {
+    /* Verify the build method has been already called.  */
+    gdb_assert (!m_abbrev_table.empty ());
+    const uint32_t retval = m_bucket_table.size ();
+
+    /* Check for overflow.  */
+    gdb_assert (retval == m_bucket_table.size ());
+    return retval;
+  }
+
+  /* Return .debug_names names count.  This must be called only after
+     calling the build method.  */
+  uint32_t name_count () const
+  {
+    /* Verify the build method has been already called.  */
+    gdb_assert (!m_abbrev_table.empty ());
+    const uint32_t retval = m_hash_table.size ();
+
+    /* Check for overflow.  */
+    gdb_assert (retval == m_hash_table.size ());
+    return retval;
+  }
+
+  /* Return number of bytes of .debug_names abbreviation table.  This
+     must be called only after calling the build method.  */
+  uint32_t abbrev_table_bytes () const
+  {
+    gdb_assert (!m_abbrev_table.empty ());
+    return m_abbrev_table.size ();
+  }
+
+  /* Recurse into all "included" dependencies and store their symbols
+     as if they appeared in this psymtab.  */
+  void recursively_write_psymbols
+    (struct objfile *objfile,
+     partial_symtab *psymtab,
+     std::unordered_set<partial_symbol *> &psyms_seen,
+     int cu_index)
+  {
+    for (int i = 0; i < psymtab->number_of_dependencies; ++i)
+      if (psymtab->dependencies[i]->user != NULL)
+	recursively_write_psymbols
+	  (objfile, psymtab->dependencies[i], psyms_seen, cu_index);
+
+    write_psymbols (psyms_seen,
+		    (objfile->partial_symtabs->global_psymbols.data ()
+		     + psymtab->globals_offset),
+		    psymtab->n_global_syms, cu_index, false, unit_kind::cu);
+    write_psymbols (psyms_seen,
+		    (objfile->partial_symtabs->static_psymbols.data ()
+		     + psymtab->statics_offset),
+		    psymtab->n_static_syms, cu_index, true, unit_kind::cu);
+  }
+
+  /* Return number of bytes the .debug_names section will have.  This
+     must be called only after calling the build method.  */
+  size_t bytes () const
+  {
+    /* Verify the build method has been already called.  */
+    gdb_assert (!m_abbrev_table.empty ());
+    size_t expected_bytes = 0;
+    expected_bytes += m_bucket_table.size () * sizeof (m_bucket_table[0]);
+    expected_bytes += m_hash_table.size () * sizeof (m_hash_table[0]);
+    expected_bytes += m_name_table_string_offs.bytes ();
+    expected_bytes += m_name_table_entry_offs.bytes ();
+    expected_bytes += m_abbrev_table.size ();
+    expected_bytes += m_entry_pool.size ();
+    return expected_bytes;
+  }
+
+  /* Write .debug_names to FILE_NAMES and .debug_str addition to
+     FILE_STR.  This must be called only after calling the build
+     method.  */
+  void file_write (FILE *file_names, FILE *file_str) const
+  {
+    /* Verify the build method has been already called.  */
+    gdb_assert (!m_abbrev_table.empty ());
+    ::file_write (file_names, m_bucket_table);
+    ::file_write (file_names, m_hash_table);
+    m_name_table_string_offs.file_write (file_names);
+    m_name_table_entry_offs.file_write (file_names);
+    m_abbrev_table.file_write (file_names);
+    m_entry_pool.file_write (file_names);
+    m_debugstrlookup.file_write (file_str);
+  }
+
+  /* A helper user data for write_one_signatured_type.  */
+  class write_one_signatured_type_data
+  {
+  public:
+    write_one_signatured_type_data (debug_names &nametable_,
+                                    signatured_type_index_data &&info_)
+    : nametable (nametable_), info (std::move (info_))
+    {}
+    debug_names &nametable;
+    struct signatured_type_index_data info;
+  };
+
+  /* A helper function to pass write_one_signatured_type to
+     htab_traverse_noresize.  */
+  static int
+  write_one_signatured_type (void **slot, void *d)
+  {
+    write_one_signatured_type_data *data = (write_one_signatured_type_data *) d;
+    struct signatured_type_index_data *info = &data->info;
+    struct signatured_type *entry = (struct signatured_type *) *slot;
+
+    data->nametable.write_one_signatured_type (entry, info);
+
+    return 1;
+  }
+
+private:
+
+  /* Storage for symbol names mapping them to their .debug_str section
+     offsets.  */
+  class debug_str_lookup
+  {
+  public:
+
+    /* Object constructor to be called for current DWARF2_PER_OBJFILE.
+       All .debug_str section strings are automatically stored.  */
+    debug_str_lookup (dwarf2_per_objfile *per_objfile)
+      : m_abfd (per_objfile->objfile->obfd),
+	m_per_objfile (per_objfile)
+    {
+      per_objfile->per_bfd->str.read (per_objfile->objfile);
+      if (per_objfile->per_bfd->str.buffer == NULL)
+	return;
+      for (const gdb_byte *data = per_objfile->per_bfd->str.buffer;
+	   data < (per_objfile->per_bfd->str.buffer
+		   + per_objfile->per_bfd->str.size);)
+	{
+	  const char *const s = reinterpret_cast<const char *> (data);
+	  const auto insertpair
+	    = m_str_table.emplace (c_str_view (s),
+				   data - per_objfile->per_bfd->str.buffer);
+	  if (!insertpair.second)
+	    complaint (_("Duplicate string \"%s\" in "
+			 ".debug_str section [in module %s]"),
+		       s, bfd_get_filename (m_abfd));
+	  data += strlen (s) + 1;
+	}
+    }
+
+    /* Return offset of symbol name S in the .debug_str section.  Add
+       such symbol to the section's end if it does not exist there
+       yet.  */
+    size_t lookup (const char *s)
+    {
+      const auto it = m_str_table.find (c_str_view (s));
+      if (it != m_str_table.end ())
+	return it->second;
+      const size_t offset = (m_per_objfile->per_bfd->str.size
+			     + m_str_add_buf.size ());
+      m_str_table.emplace (c_str_view (s), offset);
+      m_str_add_buf.append_cstr0 (s);
+      return offset;
+    }
+
+    /* Append the end of the .debug_str section to FILE.  */
+    void file_write (FILE *file) const
+    {
+      m_str_add_buf.file_write (file);
+    }
+
+  private:
+    std::unordered_map<c_str_view, size_t, c_str_view_hasher> m_str_table;
+    bfd *const m_abfd;
+    dwarf2_per_objfile *m_per_objfile;
+
+    /* Data to add at the end of .debug_str for new needed symbol names.  */
+    data_buf m_str_add_buf;
+  };
+
+  /* Container to map used DWARF tags to their .debug_names abbreviation
+     tags.  */
+  class index_key
+  {
+  public:
+    index_key (int dwarf_tag_, bool is_static_, unit_kind kind_)
+      : dwarf_tag (dwarf_tag_), is_static (is_static_), kind (kind_)
+    {
+    }
+
+    bool
+    operator== (const index_key &other) const
+    {
+      return (dwarf_tag == other.dwarf_tag && is_static == other.is_static
+	      && kind == other.kind);
+    }
+
+    const int dwarf_tag;
+    const bool is_static;
+    const unit_kind kind;
+  };
+
+  /* Provide std::unordered_map::hasher for index_key.  */
+  class index_key_hasher
+  {
+  public:
+    size_t
+    operator () (const index_key &key) const
+    {
+      return (std::hash<int>() (key.dwarf_tag) << 1) | key.is_static;
+    }
+  };
+
+  /* Parameters of one symbol entry.  */
+  class symbol_value
+  {
+  public:
+    const int dwarf_tag, cu_index;
+    const bool is_static;
+    const unit_kind kind;
+
+    symbol_value (int dwarf_tag_, int cu_index_, bool is_static_,
+		  unit_kind kind_)
+      : dwarf_tag (dwarf_tag_), cu_index (cu_index_), is_static (is_static_),
+        kind (kind_)
+    {}
+
+    bool
+    operator< (const symbol_value &other) const
+    {
+#define X(n) \
+  do \
+    { \
+      if (n < other.n) \
+	return true; \
+      if (n > other.n) \
+	return false; \
+    } \
+  while (0)
+      X (dwarf_tag);
+      X (is_static);
+      X (kind);
+      X (cu_index);
+#undef X
+      return false;
+    }
+  };
+
+  /* Abstract base class to unify DWARF-32 and DWARF-64 name table
+     output.  */
+  class offset_vec
+  {
+  protected:
+    const bfd_endian dwarf5_byte_order;
+  public:
+    explicit offset_vec (bfd_endian dwarf5_byte_order_)
+      : dwarf5_byte_order (dwarf5_byte_order_)
+    {}
+
+    /* Call std::vector::reserve for NELEM elements.  */
+    virtual void reserve (size_t nelem) = 0;
+
+    /* Call std::vector::push_back with store_unsigned_integer byte
+       reordering for ELEM.  */
+    virtual void push_back_reorder (size_t elem) = 0;
+
+    /* Return expected output size in bytes.  */
+    virtual size_t bytes () const = 0;
+
+    /* Write name table to FILE.  */
+    virtual void file_write (FILE *file) const = 0;
+  };
+
+  /* Template to unify DWARF-32 and DWARF-64 output.  */
+  template<typename OffsetSize>
+  class offset_vec_tmpl : public offset_vec
+  {
+  public:
+    explicit offset_vec_tmpl (bfd_endian dwarf5_byte_order_)
+      : offset_vec (dwarf5_byte_order_)
+    {}
+
+    /* Implement offset_vec::reserve.  */
+    void reserve (size_t nelem) override
+    {
+      m_vec.reserve (nelem);
+    }
+
+    /* Implement offset_vec::push_back_reorder.  */
+    void push_back_reorder (size_t elem) override
+    {
+      m_vec.push_back (elem);
+      /* Check for overflow.  */
+      gdb_assert (m_vec.back () == elem);
+      store_unsigned_integer (reinterpret_cast<gdb_byte *> (&m_vec.back ()),
+			      sizeof (m_vec.back ()), dwarf5_byte_order, elem);
+    }
+
+    /* Implement offset_vec::bytes.  */
+    size_t bytes () const override
+    {
+      return m_vec.size () * sizeof (m_vec[0]);
+    }
+
+    /* Implement offset_vec::file_write.  */
+    void file_write (FILE *file) const override
+    {
+      ::file_write (file, m_vec);
+    }
+
+  private:
+    std::vector<OffsetSize> m_vec;
+  };
+
+  /* Base class to unify DWARF-32 and DWARF-64 .debug_names output
+     respecting name table width.  */
+  class dwarf
+  {
+  public:
+    offset_vec &name_table_string_offs, &name_table_entry_offs;
+
+    dwarf (offset_vec &name_table_string_offs_,
+	   offset_vec &name_table_entry_offs_)
+      : name_table_string_offs (name_table_string_offs_),
+	name_table_entry_offs (name_table_entry_offs_)
+    {
+    }
+  };
+
+  /* Template to unify DWARF-32 and DWARF-64 .debug_names output
+     respecting name table width.  */
+  template<typename OffsetSize>
+  class dwarf_tmpl : public dwarf
+  {
+  public:
+    explicit dwarf_tmpl (bfd_endian dwarf5_byte_order_)
+      : dwarf (m_name_table_string_offs, m_name_table_entry_offs),
+	m_name_table_string_offs (dwarf5_byte_order_),
+	m_name_table_entry_offs (dwarf5_byte_order_)
+    {}
+
+  private:
+    offset_vec_tmpl<OffsetSize> m_name_table_string_offs;
+    offset_vec_tmpl<OffsetSize> m_name_table_entry_offs;
+  };
+
+  /* Try to reconstruct original DWARF tag for given partial_symbol.
+     This function is not DWARF-5 compliant but it is sufficient for
+     GDB as a DWARF-5 index consumer.  */
+  static int psymbol_tag (const struct partial_symbol *psym)
+  {
+    domain_enum domain = psym->domain;
+    enum address_class aclass = psym->aclass;
+
+    switch (domain)
+      {
+      case VAR_DOMAIN:
+	switch (aclass)
+	  {
+	  case LOC_BLOCK:
+	    return DW_TAG_subprogram;
+	  case LOC_TYPEDEF:
+	    return DW_TAG_typedef;
+	  case LOC_COMPUTED:
+	  case LOC_CONST_BYTES:
+	  case LOC_OPTIMIZED_OUT:
+	  case LOC_STATIC:
+	    return DW_TAG_variable;
+	  case LOC_CONST:
+	    /* Note: It's currently impossible to recognize psyms as enum values
+	       short of reading the type info.  For now punt.  */
+	    return DW_TAG_variable;
+	  default:
+	    /* There are other LOC_FOO values that one might want to classify
+	       as variables, but dwarf2read.c doesn't currently use them.  */
+	    return DW_TAG_variable;
+	  }
+      case STRUCT_DOMAIN:
+	return DW_TAG_structure_type;
+      case MODULE_DOMAIN:
+	return DW_TAG_module;
+      default:
+	return 0;
+      }
+  }
+
+  /* Call insert for all partial symbols and mark them in PSYMS_SEEN.  */
+  void write_psymbols (std::unordered_set<partial_symbol *> &psyms_seen,
+		       struct partial_symbol **psymp, int count, int cu_index,
+		       bool is_static, unit_kind kind)
+  {
+    for (; count-- > 0; ++psymp)
+      {
+	struct partial_symbol *psym = *psymp;
+
+	/* Only add a given psymbol once.  */
+	if (psyms_seen.insert (psym).second)
+	  insert (psym, cu_index, is_static, kind);
+      }
+  }
+
+  /* A helper function that writes a single signatured_type
+     to a debug_names.  */
+  void
+  write_one_signatured_type (struct signatured_type *entry,
+			     struct signatured_type_index_data *info)
+  {
+    partial_symtab *psymtab = entry->per_cu.v.psymtab;
+
+    write_psymbols (info->psyms_seen,
+		    (info->objfile->partial_symtabs->global_psymbols.data ()
+		     + psymtab->globals_offset),
+		    psymtab->n_global_syms, info->cu_index, false,
+		    unit_kind::tu);
+    write_psymbols (info->psyms_seen,
+		    (info->objfile->partial_symtabs->static_psymbols.data ()
+		     + psymtab->statics_offset),
+		    psymtab->n_static_syms, info->cu_index, true,
+		    unit_kind::tu);
+
+    info->types_list.append_uint (dwarf5_offset_size (), m_dwarf5_byte_order,
+				  to_underlying (entry->per_cu.sect_off));
+
+    ++info->cu_index;
+  }
+
+  /* Store value of each symbol.  */
+  std::unordered_map<c_str_view, std::set<symbol_value>, c_str_view_hasher>
+    m_name_to_value_set;
+
+  /* Tables of DWARF-5 .debug_names.  They are in object file byte
+     order.  */
+  std::vector<uint32_t> m_bucket_table;
+  std::vector<uint32_t> m_hash_table;
+
+  const bfd_endian m_dwarf5_byte_order;
+  dwarf_tmpl<uint32_t> m_dwarf32;
+  dwarf_tmpl<uint64_t> m_dwarf64;
+  dwarf &m_dwarf;
+  offset_vec &m_name_table_string_offs, &m_name_table_entry_offs;
+  debug_str_lookup m_debugstrlookup;
+
+  /* Map each used .debug_names abbreviation tag parameter to its
+     index value.  */
+  std::unordered_map<index_key, int, index_key_hasher> m_indexkey_to_idx;
+
+  /* Next unused .debug_names abbreviation tag for
+     m_indexkey_to_idx.  */
+  int m_idx_next = 1;
+
+  /* .debug_names abbreviation table.  */
+  data_buf m_abbrev_table;
+
+  /* .debug_names entry pool.  */
+  data_buf m_entry_pool;
+
+  /* Temporary storage for Ada names.  */
+  auto_obstack m_string_obstack;
+};
+
+/* Return iff any of the needed offsets does not fit into 32-bit
+   .debug_names section.  */
+
+static bool
+check_dwarf64_offsets (dwarf2_per_objfile *per_objfile)
+{
+  for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+    {
+      if (to_underlying (per_cu->sect_off) >= (static_cast<uint64_t> (1) << 32))
+	return true;
+    }
+  for (const signatured_type *sigtype : per_objfile->per_bfd->all_type_units)
+    {
+      const dwarf2_per_cu_data &per_cu = sigtype->per_cu;
+
+      if (to_underlying (per_cu.sect_off) >= (static_cast<uint64_t> (1) << 32))
+	return true;
+    }
+  return false;
+}
+
+/* The psyms_seen set is potentially going to be largish (~40k
+   elements when indexing a -g3 build of GDB itself).  Estimate the
+   number of elements in order to avoid too many rehashes, which
+   require rebuilding buckets and thus many trips to
+   malloc/free.  */
+
+static size_t
+psyms_seen_size (dwarf2_per_objfile *per_objfile)
+{
+  size_t psyms_count = 0;
+  for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+    {
+      partial_symtab *psymtab = per_cu->v.psymtab;
+
+      if (psymtab != NULL && psymtab->user == NULL)
+	recursively_count_psymbols (psymtab, psyms_count);
+    }
+  /* Generating an index for gdb itself shows a ratio of
+     TOTAL_SEEN_SYMS/UNIQUE_SYMS or ~5.  4 seems like a good bet.  */
+  return psyms_count / 4;
+}
+
+/* Assert that FILE's size is EXPECTED_SIZE.  Assumes file's seek
+   position is at the end of the file.  */
+
+static void
+assert_file_size (FILE *file, size_t expected_size)
+{
+  const auto file_size = ftell (file);
+  if (file_size == -1)
+    perror_with_name (("ftell"));
+  gdb_assert (file_size == expected_size);
+}
+
+/* Write a gdb index file to OUT_FILE from all the sections passed as
+   arguments.  */
+
+static void
+write_gdbindex_1 (FILE *out_file,
+		  const data_buf &cu_list,
+		  const data_buf &types_cu_list,
+		  const data_buf &addr_vec,
+		  const data_buf &symtab_vec,
+		  const data_buf &constant_pool)
+{
+  data_buf contents;
+  const offset_type size_of_header = 6 * sizeof (offset_type);
+  offset_type total_len = size_of_header;
+
+  /* The version number.  */
+  contents.append_data (MAYBE_SWAP (8));
+
+  /* The offset of the CU list from the start of the file.  */
+  contents.append_data (MAYBE_SWAP (total_len));
+  total_len += cu_list.size ();
+
+  /* The offset of the types CU list from the start of the file.  */
+  contents.append_data (MAYBE_SWAP (total_len));
+  total_len += types_cu_list.size ();
+
+  /* The offset of the address table from the start of the file.  */
+  contents.append_data (MAYBE_SWAP (total_len));
+  total_len += addr_vec.size ();
+
+  /* The offset of the symbol table from the start of the file.  */
+  contents.append_data (MAYBE_SWAP (total_len));
+  total_len += symtab_vec.size ();
+
+  /* The offset of the constant pool from the start of the file.  */
+  contents.append_data (MAYBE_SWAP (total_len));
+  total_len += constant_pool.size ();
+
+  gdb_assert (contents.size () == size_of_header);
+
+  contents.file_write (out_file);
+  cu_list.file_write (out_file);
+  types_cu_list.file_write (out_file);
+  addr_vec.file_write (out_file);
+  symtab_vec.file_write (out_file);
+  constant_pool.file_write (out_file);
+
+  assert_file_size (out_file, total_len);
+}
+
+/* Write contents of a .gdb_index section for OBJFILE into OUT_FILE.
+   If OBJFILE has an associated dwz file, write contents of a .gdb_index
+   section for that dwz file into DWZ_OUT_FILE.  If OBJFILE does not have an
+   associated dwz file, DWZ_OUT_FILE must be NULL.  */
+
+static void
+write_gdbindex (dwarf2_per_objfile *per_objfile, FILE *out_file,
+		FILE *dwz_out_file)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  mapped_symtab symtab;
+  data_buf objfile_cu_list;
+  data_buf dwz_cu_list;
+
+  /* While we're scanning CU's create a table that maps a psymtab pointer
+     (which is what addrmap records) to its index (which is what is recorded
+     in the index file).  This will later be needed to write the address
+     table.  */
+  psym_index_map cu_index_htab;
+  cu_index_htab.reserve (per_objfile->per_bfd->all_comp_units.size ());
+
+  /* The CU list is already sorted, so we don't need to do additional
+     work here.  Also, the debug_types entries do not appear in
+     all_comp_units, but only in their own hash table.  */
+
+  std::unordered_set<partial_symbol *> psyms_seen
+    (psyms_seen_size (per_objfile));
+  for (int i = 0; i < per_objfile->per_bfd->all_comp_units.size (); ++i)
+    {
+      dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->all_comp_units[i];
+      partial_symtab *psymtab = per_cu->v.psymtab;
+
+      if (psymtab != NULL)
+	{
+	  if (psymtab->user == NULL)
+	    recursively_write_psymbols (objfile, psymtab, &symtab,
+					psyms_seen, i);
+
+	  const auto insertpair = cu_index_htab.emplace (psymtab, i);
+	  gdb_assert (insertpair.second);
+	}
+
+      /* The all_comp_units list contains CUs read from the objfile as well as
+	 from the eventual dwz file.  We need to place the entry in the
+	 corresponding index.  */
+      data_buf &cu_list = per_cu->is_dwz ? dwz_cu_list : objfile_cu_list;
+      cu_list.append_uint (8, BFD_ENDIAN_LITTLE,
+			   to_underlying (per_cu->sect_off));
+      cu_list.append_uint (8, BFD_ENDIAN_LITTLE, per_cu->length);
+    }
+
+  /* Dump the address map.  */
+  data_buf addr_vec;
+  write_address_map (objfile, addr_vec, cu_index_htab);
+
+  /* Write out the .debug_type entries, if any.  */
+  data_buf types_cu_list;
+  if (per_objfile->per_bfd->signatured_types)
+    {
+      signatured_type_index_data sig_data (types_cu_list,
+					   psyms_seen);
+
+      sig_data.objfile = objfile;
+      sig_data.symtab = &symtab;
+      sig_data.cu_index = per_objfile->per_bfd->all_comp_units.size ();
+      htab_traverse_noresize (per_objfile->per_bfd->signatured_types.get (),
+			      write_one_signatured_type, &sig_data);
+    }
+
+  /* Now that we've processed all symbols we can shrink their cu_indices
+     lists.  */
+  uniquify_cu_indices (&symtab);
+
+  data_buf symtab_vec, constant_pool;
+  write_hash_table (&symtab, symtab_vec, constant_pool);
+
+  write_gdbindex_1(out_file, objfile_cu_list, types_cu_list, addr_vec,
+		   symtab_vec, constant_pool);
+
+  if (dwz_out_file != NULL)
+    write_gdbindex_1 (dwz_out_file, dwz_cu_list, {}, {}, {}, {});
+  else
+    gdb_assert (dwz_cu_list.empty ());
+}
+
+/* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
+static const gdb_byte dwarf5_gdb_augmentation[] = { 'G', 'D', 'B', 0 };
+
+/* Write a new .debug_names section for OBJFILE into OUT_FILE, write
+   needed addition to .debug_str section to OUT_FILE_STR.  Return how
+   many bytes were expected to be written into OUT_FILE.  */
+
+static void
+write_debug_names (dwarf2_per_objfile *per_objfile,
+		   FILE *out_file, FILE *out_file_str)
+{
+  const bool dwarf5_is_dwarf64 = check_dwarf64_offsets (per_objfile);
+  struct objfile *objfile = per_objfile->objfile;
+  const enum bfd_endian dwarf5_byte_order
+    = gdbarch_byte_order (objfile->arch ());
+
+  /* The CU list is already sorted, so we don't need to do additional
+     work here.  Also, the debug_types entries do not appear in
+     all_comp_units, but only in their own hash table.  */
+  data_buf cu_list;
+  debug_names nametable (per_objfile, dwarf5_is_dwarf64, dwarf5_byte_order);
+  std::unordered_set<partial_symbol *>
+    psyms_seen (psyms_seen_size (per_objfile));
+  for (int i = 0; i < per_objfile->per_bfd->all_comp_units.size (); ++i)
+    {
+      const dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->all_comp_units[i];
+      partial_symtab *psymtab = per_cu->v.psymtab;
+
+      /* CU of a shared file from 'dwz -m' may be unused by this main
+	 file.  It may be referenced from a local scope but in such
+	 case it does not need to be present in .debug_names.  */
+      if (psymtab == NULL)
+	continue;
+
+      if (psymtab->user == NULL)
+	nametable.recursively_write_psymbols (objfile, psymtab, psyms_seen, i);
+
+      cu_list.append_uint (nametable.dwarf5_offset_size (), dwarf5_byte_order,
+			   to_underlying (per_cu->sect_off));
+    }
+
+  /* Write out the .debug_type entries, if any.  */
+  data_buf types_cu_list;
+  if (per_objfile->per_bfd->signatured_types)
+    {
+      debug_names::write_one_signatured_type_data sig_data (nametable,
+			signatured_type_index_data (types_cu_list, psyms_seen));
+
+      sig_data.info.objfile = objfile;
+      /* It is used only for gdb_index.  */
+      sig_data.info.symtab = nullptr;
+      sig_data.info.cu_index = 0;
+      htab_traverse_noresize (per_objfile->per_bfd->signatured_types.get (),
+			      debug_names::write_one_signatured_type,
+			      &sig_data);
+    }
+
+  nametable.build ();
+
+  /* No addr_vec - DWARF-5 uses .debug_aranges generated by GCC.  */
+
+  const offset_type bytes_of_header
+    = ((dwarf5_is_dwarf64 ? 12 : 4)
+       + 2 + 2 + 7 * 4
+       + sizeof (dwarf5_gdb_augmentation));
+  size_t expected_bytes = 0;
+  expected_bytes += bytes_of_header;
+  expected_bytes += cu_list.size ();
+  expected_bytes += types_cu_list.size ();
+  expected_bytes += nametable.bytes ();
+  data_buf header;
+
+  if (!dwarf5_is_dwarf64)
+    {
+      const uint64_t size64 = expected_bytes - 4;
+      gdb_assert (size64 < 0xfffffff0);
+      header.append_uint (4, dwarf5_byte_order, size64);
+    }
+  else
+    {
+      header.append_uint (4, dwarf5_byte_order, 0xffffffff);
+      header.append_uint (8, dwarf5_byte_order, expected_bytes - 12);
+    }
+
+  /* The version number.  */
+  header.append_uint (2, dwarf5_byte_order, 5);
+
+  /* Padding.  */
+  header.append_uint (2, dwarf5_byte_order, 0);
+
+  /* comp_unit_count - The number of CUs in the CU list.  */
+  header.append_uint (4, dwarf5_byte_order,
+		      per_objfile->per_bfd->all_comp_units.size ());
+
+  /* local_type_unit_count - The number of TUs in the local TU
+     list.  */
+  header.append_uint (4, dwarf5_byte_order,
+		      per_objfile->per_bfd->all_type_units.size ());
+
+  /* foreign_type_unit_count - The number of TUs in the foreign TU
+     list.  */
+  header.append_uint (4, dwarf5_byte_order, 0);
+
+  /* bucket_count - The number of hash buckets in the hash lookup
+     table.  */
+  header.append_uint (4, dwarf5_byte_order, nametable.bucket_count ());
+
+  /* name_count - The number of unique names in the index.  */
+  header.append_uint (4, dwarf5_byte_order, nametable.name_count ());
+
+  /* abbrev_table_size - The size in bytes of the abbreviations
+     table.  */
+  header.append_uint (4, dwarf5_byte_order, nametable.abbrev_table_bytes ());
+
+  /* augmentation_string_size - The size in bytes of the augmentation
+     string.  This value is rounded up to a multiple of 4.  */
+  static_assert (sizeof (dwarf5_gdb_augmentation) % 4 == 0, "");
+  header.append_uint (4, dwarf5_byte_order, sizeof (dwarf5_gdb_augmentation));
+  header.append_data (dwarf5_gdb_augmentation);
+
+  gdb_assert (header.size () == bytes_of_header);
+
+  header.file_write (out_file);
+  cu_list.file_write (out_file);
+  types_cu_list.file_write (out_file);
+  nametable.file_write (out_file, out_file_str);
+
+  assert_file_size (out_file, expected_bytes);
+}
+
+/* This represents an index file being written (work-in-progress).
+
+   The data is initially written to a temporary file.  When the finalize method
+   is called, the file is closed and moved to its final location.
+
+   On failure (if this object is being destroyed with having called finalize),
+   the temporary file is closed and deleted.  */
+
+struct index_wip_file
+{
+  index_wip_file (const char *dir, const char *basename,
+		  const char *suffix)
+  {
+    filename = (std::string (dir) + SLASH_STRING + basename
+    		+ suffix);
+
+    filename_temp = make_temp_filename (filename);
+
+    scoped_fd out_file_fd (gdb_mkostemp_cloexec (filename_temp.data (),
+						 O_BINARY));
+    if (out_file_fd.get () == -1)
+      perror_with_name (("mkstemp"));
+
+    out_file = out_file_fd.to_file ("wb");
+
+    if (out_file == nullptr)
+      error (_("Can't open `%s' for writing"), filename_temp.data ());
+
+    unlink_file.emplace (filename_temp.data ());
+  }
+
+  void finalize ()
+  {
+    /* We want to keep the file.  */
+    unlink_file->keep ();
+
+    /* Close and move the str file in place.  */
+    unlink_file.reset ();
+    if (rename (filename_temp.data (), filename.c_str ()) != 0)
+      perror_with_name (("rename"));
+  }
+
+  std::string filename;
+  gdb::char_vector filename_temp;
+
+  /* Order matters here; we want FILE to be closed before
+     FILENAME_TEMP is unlinked, because on MS-Windows one cannot
+     delete a file that is still open.  So, we wrap the unlinker in an
+     optional and emplace it once we know the file name.  */
+  gdb::optional<gdb::unlinker> unlink_file;
+
+  gdb_file_up out_file;
+};
+
+/* See dwarf-index-write.h.  */
+
+void
+write_psymtabs_to_index (dwarf2_per_objfile *per_objfile, const char *dir,
+			 const char *basename, const char *dwz_basename,
+			 dw_index_kind index_kind)
+{
+  struct objfile *objfile = per_objfile->objfile;
+
+  if (per_objfile->per_bfd->using_index)
+    error (_("Cannot use an index to create the index"));
+
+  if (per_objfile->per_bfd->types.size () > 1)
+    error (_("Cannot make an index when the file has multiple .debug_types sections"));
+
+  if (!objfile->partial_symtabs->psymtabs
+      || !objfile->partial_symtabs->psymtabs_addrmap)
+    return;
+
+  struct stat st;
+  if (stat (objfile_name (objfile), &st) < 0)
+    perror_with_name (objfile_name (objfile));
+
+  const char *index_suffix = (index_kind == dw_index_kind::DEBUG_NAMES
+			      ? INDEX5_SUFFIX : INDEX4_SUFFIX);
+
+  index_wip_file objfile_index_wip (dir, basename, index_suffix);
+  gdb::optional<index_wip_file> dwz_index_wip;
+
+  if (dwz_basename != NULL)
+      dwz_index_wip.emplace (dir, dwz_basename, index_suffix);
+
+  if (index_kind == dw_index_kind::DEBUG_NAMES)
+    {
+      index_wip_file str_wip_file (dir, basename, DEBUG_STR_SUFFIX);
+
+      write_debug_names (per_objfile, objfile_index_wip.out_file.get (),
+			 str_wip_file.out_file.get ());
+
+      str_wip_file.finalize ();
+    }
+  else
+    write_gdbindex (per_objfile, objfile_index_wip.out_file.get (),
+		    (dwz_index_wip.has_value ()
+		     ? dwz_index_wip->out_file.get () : NULL));
+
+  objfile_index_wip.finalize ();
+
+  if (dwz_index_wip.has_value ())
+    dwz_index_wip->finalize ();
+}
+
+/* Implementation of the `save gdb-index' command.
+
+   Note that the .gdb_index file format used by this command is
+   documented in the GDB manual.  Any changes here must be documented
+   there.  */
+
+static void
+save_gdb_index_command (const char *arg, int from_tty)
+{
+  const char dwarf5space[] = "-dwarf-5 ";
+  dw_index_kind index_kind = dw_index_kind::GDB_INDEX;
+
+  if (!arg)
+    arg = "";
+
+  arg = skip_spaces (arg);
+  if (strncmp (arg, dwarf5space, strlen (dwarf5space)) == 0)
+    {
+      index_kind = dw_index_kind::DEBUG_NAMES;
+      arg += strlen (dwarf5space);
+      arg = skip_spaces (arg);
+    }
+
+  if (!*arg)
+    error (_("usage: save gdb-index [-dwarf-5] DIRECTORY"));
+
+  for (objfile *objfile : current_program_space->objfiles ())
+    {
+      struct stat st;
+
+      /* If the objfile does not correspond to an actual file, skip it.  */
+      if (stat (objfile_name (objfile), &st) < 0)
+	continue;
+
+      dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+      if (per_objfile != NULL)
+	{
+	  try
+	    {
+	      const char *basename = lbasename (objfile_name (objfile));
+	      const dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd);
+	      const char *dwz_basename = NULL;
+
+	      if (dwz != NULL)
+		dwz_basename = lbasename (dwz->filename ());
+
+	      write_psymtabs_to_index (per_objfile, arg, basename, dwz_basename,
+				       index_kind);
+	    }
+	  catch (const gdb_exception_error &except)
+	    {
+	      exception_fprintf (gdb_stderr, except,
+				 _("Error while writing index for `%s': "),
+				 objfile_name (objfile));
+	    }
+	    }
+
+    }
+}
+
+void _initialize_dwarf_index_write ();
+void
+_initialize_dwarf_index_write ()
+{
+  cmd_list_element *c = add_cmd ("gdb-index", class_files,
+				 save_gdb_index_command, _("\
+Save a gdb-index file.\n\
+Usage: save gdb-index [-dwarf-5] DIRECTORY\n\
+\n\
+No options create one file with .gdb-index extension for pre-DWARF-5\n\
+compatible .gdb_index section.  With -dwarf-5 creates two files with\n\
+extension .debug_names and .debug_str for DWARF-5 .debug_names section."),
+	       &save_cmdlist);
+  set_cmd_completer (c, filename_completer);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-write.h ./gdb/dwarf2/index-write.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/index-write.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/index-write.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,39 @@
+/* DWARF index writing support for GDB.
+
+   Copyright (C) 2018-2021 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 DWARF_INDEX_WRITE_H
+#define DWARF_INDEX_WRITE_H
+
+#include "symfile.h"
+#include "dwarf2/read.h"
+
+/* Create index files for OBJFILE in the directory DIR.
+
+   An index file is created for OBJFILE itself, and is created for its
+   associated dwz file, if it has one.
+
+   BASENAME is the desired filename base for OBJFILE's index.  An extension
+   derived from INDEX_KIND is added to this base name.  DWZ_BASENAME is the
+   same, but for the dwz file's index.  */
+
+extern void write_psymtabs_to_index
+  (dwarf2_per_objfile *per_objfile, const char *dir, const char *basename,
+   const char *dwz_basename, dw_index_kind index_kind);
+
+#endif /* DWARF_INDEX_WRITE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/leb.c ./gdb/dwarf2/leb.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/leb.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/leb.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,136 @@
+/* Low-level DWARF 2 reading code
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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 "dwarf2/leb.h"
+
+ULONGEST
+read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
+			  unsigned int *bytes_read_ptr)
+{
+  ULONGEST result;
+  unsigned int num_read;
+  int shift;
+  unsigned char byte;
+
+  result = 0;
+  shift = 0;
+  num_read = 0;
+  while (1)
+    {
+      byte = bfd_get_8 (abfd, buf);
+      buf++;
+      num_read++;
+      result |= ((ULONGEST) (byte & 127) << shift);
+      if ((byte & 128) == 0)
+	{
+	  break;
+	}
+      shift += 7;
+    }
+  *bytes_read_ptr = num_read;
+  return result;
+}
+
+LONGEST
+read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
+		    unsigned int *bytes_read_ptr)
+{
+  ULONGEST result;
+  int shift, num_read;
+  unsigned char byte;
+
+  result = 0;
+  shift = 0;
+  num_read = 0;
+  while (1)
+    {
+      byte = bfd_get_8 (abfd, buf);
+      buf++;
+      num_read++;
+      result |= ((ULONGEST) (byte & 127) << shift);
+      shift += 7;
+      if ((byte & 128) == 0)
+	{
+	  break;
+	}
+    }
+  if ((shift < 8 * sizeof (result)) && (byte & 0x40))
+    result |= -(((ULONGEST) 1) << shift);
+  *bytes_read_ptr = num_read;
+  return result;
+}
+
+/* See leb.h.  */
+
+LONGEST
+read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read,
+		     bool handle_nonstd)
+{
+  LONGEST length = bfd_get_32 (abfd, buf);
+
+  if (length == 0xffffffff)
+    {
+      length = bfd_get_64 (abfd, buf + 4);
+      *bytes_read = 12;
+    }
+  else if (handle_nonstd && length == 0)
+    {
+      /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
+      length = bfd_get_64 (abfd, buf);
+      *bytes_read = 8;
+    }
+  else
+    {
+      *bytes_read = 4;
+    }
+
+  return length;
+}
+
+/* See leb.h.  */
+
+LONGEST
+read_offset (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
+{
+  LONGEST retval = 0;
+
+  switch (offset_size)
+    {
+    case 4:
+      retval = bfd_get_32 (abfd, buf);
+      break;
+    case 8:
+      retval = bfd_get_64 (abfd, buf);
+      break;
+    default:
+      internal_error (__FILE__, __LINE__,
+		      _("read_offset_1: bad switch [in module %s]"),
+		      bfd_get_filename (abfd));
+    }
+
+  return retval;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/leb.h ./gdb/dwarf2/leb.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/leb.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/leb.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,164 @@
+/* Low-level DWARF 2 reading code
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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_DWARF2_LEB_H
+#define GDB_DWARF2_LEB_H
+
+/* Read dwarf information from a buffer.  */
+
+static inline unsigned int
+read_1_byte (bfd *abfd, const gdb_byte *buf)
+{
+  return bfd_get_8 (abfd, buf);
+}
+
+static inline int
+read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
+{
+  return bfd_get_signed_8 (abfd, buf);
+}
+
+static inline unsigned int
+read_2_bytes (bfd *abfd, const gdb_byte *buf)
+{
+  return bfd_get_16 (abfd, buf);
+}
+
+static inline int
+read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
+{
+  return bfd_get_signed_16 (abfd, buf);
+}
+
+/* Read the next three bytes (little-endian order) as an unsigned integer.  */
+static inline unsigned int
+read_3_bytes (bfd *abfd, const gdb_byte *buf)
+{
+  unsigned int result = 0;
+  for (int i = 0; i < 3; ++i)
+    {
+      unsigned char byte = bfd_get_8 (abfd, buf);
+      buf++;
+      result |= ((unsigned int) byte << (i * 8));
+    }
+  return result;
+}
+
+static inline unsigned int
+read_4_bytes (bfd *abfd, const gdb_byte *buf)
+{
+  return bfd_get_32 (abfd, buf);
+}
+
+static inline int
+read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
+{
+  return bfd_get_signed_32 (abfd, buf);
+}
+
+static inline ULONGEST
+read_8_bytes (bfd *abfd, const gdb_byte *buf)
+{
+  return bfd_get_64 (abfd, buf);
+}
+
+extern LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
+
+extern ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
+
+/* Read the initial length from a section.  The (draft) DWARF 3
+   specification allows the initial length to take up either 4 bytes
+   or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
+   bytes describe the length and all offsets will be 8 bytes in length
+   instead of 4.
+
+   An older, non-standard 64-bit format is also handled by this
+   function.  The older format in question stores the initial length
+   as an 8-byte quantity without an escape value.  Lengths greater
+   than 2^32 aren't very common which means that the initial 4 bytes
+   is almost always zero.  Since a length value of zero doesn't make
+   sense for the 32-bit format, this initial zero can be considered to
+   be an escape value which indicates the presence of the older 64-bit
+   format.  As written, the code can't detect (old format) lengths
+   greater than 4GB.  If it becomes necessary to handle lengths
+   somewhat larger than 4GB, we could allow other small values (such
+   as the non-sensical values of 1, 2, and 3) to also be used as
+   escape values indicating the presence of the old format.
+
+   The value returned via bytes_read should be used to increment the
+   relevant pointer after calling read_initial_length().
+
+   [ Note:  read_initial_length() and read_offset() are based on the
+     document entitled "DWARF Debugging Information Format", revision
+     3, draft 8, dated November 19, 2001.  This document was obtained
+     from:
+
+	http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
+
+     This document is only a draft and is subject to change.  (So beware.)
+
+     Details regarding the older, non-standard 64-bit format were
+     determined empirically by examining 64-bit ELF files produced by
+     the SGI toolchain on an IRIX 6.5 machine.
+
+     - Kevin, July 16, 2002
+   ] */
+extern LONGEST read_initial_length (bfd *abfd, const gdb_byte *buf,
+				    unsigned int *bytes_read,
+				    bool handle_nonstd = true);
+
+/* Read an offset from the data stream.  */
+extern LONGEST read_offset (bfd *abfd, const gdb_byte *buf,
+			    unsigned int offset_size);
+
+static inline const gdb_byte *
+read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
+{
+  /* If the size of a host char is 8 bits, we can return a pointer
+     to the buffer, otherwise we have to copy the data to a buffer
+     allocated on the temporary obstack.  */
+  gdb_assert (HOST_CHAR_BIT == 8);
+  return buf;
+}
+
+static inline const char *
+read_direct_string (bfd *abfd, const gdb_byte *buf,
+		    unsigned int *bytes_read_ptr)
+{
+  /* If the size of a host char is 8 bits, we can return a pointer
+     to the string, otherwise we have to copy the string to a buffer
+     allocated on the temporary obstack.  */
+  gdb_assert (HOST_CHAR_BIT == 8);
+  if (*buf == '\0')
+    {
+      *bytes_read_ptr = 1;
+      return NULL;
+    }
+  *bytes_read_ptr = strlen ((const char *) buf) + 1;
+  return (const char *) buf;
+}
+
+#endif /* GDB_DWARF2_LEB_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/line-header.c ./gdb/dwarf2/line-header.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/line-header.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/line-header.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,446 @@
+/* DWARF 2 debugging format support for GDB.
+
+   Copyright (C) 1994-2021 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 "dwarf2/comp-unit.h"
+#include "dwarf2/leb.h"
+#include "dwarf2/line-header.h"
+#include "dwarf2/read.h"
+#include "complaints.h"
+#include "filenames.h"
+
+void
+line_header::add_include_dir (const char *include_dir)
+{
+  if (dwarf_line_debug >= 2)
+    {
+      size_t new_size;
+      if (version >= 5)
+        new_size = m_include_dirs.size ();
+      else
+        new_size = m_include_dirs.size () + 1;
+      fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
+			  new_size, include_dir);
+    }
+  m_include_dirs.push_back (include_dir);
+}
+
+void
+line_header::add_file_name (const char *name,
+			    dir_index d_index,
+			    unsigned int mod_time,
+			    unsigned int length)
+{
+  if (dwarf_line_debug >= 2)
+    {
+      size_t new_size;
+      if (version >= 5)
+        new_size = file_names_size ();
+      else
+        new_size = file_names_size () + 1;
+      fprintf_unfiltered (gdb_stdlog, "Adding file %zu: %s\n",
+			  new_size, name);
+    }
+  m_file_names.emplace_back (name, d_index, mod_time, length);
+}
+
+gdb::unique_xmalloc_ptr<char>
+line_header::file_file_name (int file) const
+{
+  /* Is the file number a valid index into the line header's file name
+     table?  Remember that file numbers start with one, not zero.  */
+  if (is_valid_file_index (file))
+    {
+      const file_entry *fe = file_name_at (file);
+
+      if (!IS_ABSOLUTE_PATH (fe->name))
+	{
+	  const char *dir = fe->include_dir (this);
+	  if (dir != NULL)
+	    return gdb::unique_xmalloc_ptr<char> (concat (dir, SLASH_STRING,
+							  fe->name,
+							  (char *) NULL));
+	}
+      return make_unique_xstrdup (fe->name);
+    }
+  else
+    {
+      /* The compiler produced a bogus file number.  We can at least
+         record the macro definitions made in the file, even if we
+         won't be able to find the file by name.  */
+      char fake_name[80];
+
+      xsnprintf (fake_name, sizeof (fake_name),
+		 "<bad macro file number %d>", file);
+
+      complaint (_("bad file number in macro information (%d)"),
+                 file);
+
+      return make_unique_xstrdup (fake_name);
+    }
+}
+
+gdb::unique_xmalloc_ptr<char>
+line_header::file_full_name (int file, const char *comp_dir) const
+{
+  /* Is the file number a valid index into the line header's file name
+     table?  Remember that file numbers start with one, not zero.  */
+  if (is_valid_file_index (file))
+    {
+      gdb::unique_xmalloc_ptr<char> relative = file_file_name (file);
+
+      if (IS_ABSOLUTE_PATH (relative.get ()) || comp_dir == NULL)
+	return relative;
+      return gdb::unique_xmalloc_ptr<char> (concat (comp_dir, SLASH_STRING,
+						    relative.get (),
+						    (char *) NULL));
+    }
+  else
+    return file_file_name (file);
+}
+
+static void
+dwarf2_statement_list_fits_in_line_number_section_complaint (void)
+{
+  complaint (_("statement list doesn't fit in .debug_line section"));
+}
+
+/* Cover function for read_initial_length.
+   Returns the length of the object at BUF, and stores the size of the
+   initial length in *BYTES_READ and stores the size that offsets will be in
+   *OFFSET_SIZE.
+   If the initial length size is not equivalent to that specified in
+   CU_HEADER then issue a complaint.
+   This is useful when reading non-comp-unit headers.  */
+
+static LONGEST
+read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
+					const struct comp_unit_head *cu_header,
+					unsigned int *bytes_read,
+					unsigned int *offset_size)
+{
+  LONGEST length = read_initial_length (abfd, buf, bytes_read);
+
+  gdb_assert (cu_header->initial_length_size == 4
+	      || cu_header->initial_length_size == 8
+	      || cu_header->initial_length_size == 12);
+
+  if (cu_header->initial_length_size != *bytes_read)
+    complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
+
+  *offset_size = (*bytes_read == 4) ? 4 : 8;
+  return length;
+}
+
+/* Read directory or file name entry format, starting with byte of
+   format count entries, ULEB128 pairs of entry formats, ULEB128 of
+   entries count and the entries themselves in the described entry
+   format.  */
+
+static void
+read_formatted_entries (dwarf2_per_objfile *per_objfile, bfd *abfd,
+			const gdb_byte **bufp, struct line_header *lh,
+			const struct comp_unit_head *cu_header,
+			void (*callback) (struct line_header *lh,
+					  const char *name,
+					  dir_index d_index,
+					  unsigned int mod_time,
+					  unsigned int length))
+{
+  gdb_byte format_count, formati;
+  ULONGEST data_count, datai;
+  const gdb_byte *buf = *bufp;
+  const gdb_byte *format_header_data;
+  unsigned int bytes_read;
+
+  format_count = read_1_byte (abfd, buf);
+  buf += 1;
+  format_header_data = buf;
+  for (formati = 0; formati < format_count; formati++)
+    {
+      read_unsigned_leb128 (abfd, buf, &bytes_read);
+      buf += bytes_read;
+      read_unsigned_leb128 (abfd, buf, &bytes_read);
+      buf += bytes_read;
+    }
+
+  data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
+  buf += bytes_read;
+  for (datai = 0; datai < data_count; datai++)
+    {
+      const gdb_byte *format = format_header_data;
+      struct file_entry fe;
+
+      for (formati = 0; formati < format_count; formati++)
+	{
+	  ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
+	  format += bytes_read;
+
+	  ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
+	  format += bytes_read;
+
+	  gdb::optional<const char *> string;
+	  gdb::optional<unsigned int> uint;
+
+	  switch (form)
+	    {
+	    case DW_FORM_string:
+	      string.emplace (read_direct_string (abfd, buf, &bytes_read));
+	      buf += bytes_read;
+	      break;
+
+	    case DW_FORM_line_strp:
+	      string.emplace
+		(per_objfile->read_line_string (buf, cu_header, &bytes_read));
+	      buf += bytes_read;
+	      break;
+
+	    case DW_FORM_data1:
+	      uint.emplace (read_1_byte (abfd, buf));
+	      buf += 1;
+	      break;
+
+	    case DW_FORM_data2:
+	      uint.emplace (read_2_bytes (abfd, buf));
+	      buf += 2;
+	      break;
+
+	    case DW_FORM_data4:
+	      uint.emplace (read_4_bytes (abfd, buf));
+	      buf += 4;
+	      break;
+
+	    case DW_FORM_data8:
+	      uint.emplace (read_8_bytes (abfd, buf));
+	      buf += 8;
+	      break;
+
+	    case DW_FORM_data16:
+	      /*  This is used for MD5, but file_entry does not record MD5s. */
+	      buf += 16;
+	      break;
+
+	    case DW_FORM_udata:
+	      uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
+	      buf += bytes_read;
+	      break;
+
+	    case DW_FORM_block:
+	      /* It is valid only for DW_LNCT_timestamp which is ignored by
+		 current GDB.  */
+	      break;
+	    }
+
+	  switch (content_type)
+	    {
+	    case DW_LNCT_path:
+	      if (string.has_value ())
+		fe.name = *string;
+	      break;
+	    case DW_LNCT_directory_index:
+	      if (uint.has_value ())
+		fe.d_index = (dir_index) *uint;
+	      break;
+	    case DW_LNCT_timestamp:
+	      if (uint.has_value ())
+		fe.mod_time = *uint;
+	      break;
+	    case DW_LNCT_size:
+	      if (uint.has_value ())
+		fe.length = *uint;
+	      break;
+	    case DW_LNCT_MD5:
+	      break;
+	    default:
+	      complaint (_("Unknown format content type %s"),
+			 pulongest (content_type));
+	    }
+	}
+
+      callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
+    }
+
+  *bufp = buf;
+}
+
+/* See line-header.h.  */
+
+line_header_up
+dwarf_decode_line_header  (sect_offset sect_off, bool is_dwz,
+			   dwarf2_per_objfile *per_objfile,
+			   struct dwarf2_section_info *section,
+			   const struct comp_unit_head *cu_header)
+{
+  const gdb_byte *line_ptr;
+  unsigned int bytes_read, offset_size;
+  int i;
+  const char *cur_dir, *cur_file;
+
+  bfd *abfd = section->get_bfd_owner ();
+
+  /* Make sure that at least there's room for the total_length field.
+     That could be 12 bytes long, but we're just going to fudge that.  */
+  if (to_underlying (sect_off) + 4 >= section->size)
+    {
+      dwarf2_statement_list_fits_in_line_number_section_complaint ();
+      return 0;
+    }
+
+  line_header_up lh (new line_header ());
+
+  lh->sect_off = sect_off;
+  lh->offset_in_dwz = is_dwz;
+
+  line_ptr = section->buffer + to_underlying (sect_off);
+
+  /* Read in the header.  */
+  lh->total_length =
+    read_checked_initial_length_and_offset (abfd, line_ptr, cu_header,
+					    &bytes_read, &offset_size);
+  line_ptr += bytes_read;
+
+  const gdb_byte *start_here = line_ptr;
+
+  if (line_ptr + lh->total_length > (section->buffer + section->size))
+    {
+      dwarf2_statement_list_fits_in_line_number_section_complaint ();
+      return 0;
+    }
+  lh->statement_program_end = start_here + lh->total_length;
+  lh->version = read_2_bytes (abfd, line_ptr);
+  line_ptr += 2;
+  if (lh->version > 5)
+    {
+      /* This is a version we don't understand.  The format could have
+	 changed in ways we don't handle properly so just punt.  */
+      complaint (_("unsupported version in .debug_line section"));
+      return NULL;
+    }
+  if (lh->version >= 5)
+    {
+      gdb_byte segment_selector_size;
+
+      /* Skip address size.  */
+      read_1_byte (abfd, line_ptr);
+      line_ptr += 1;
+
+      segment_selector_size = read_1_byte (abfd, line_ptr);
+      line_ptr += 1;
+      if (segment_selector_size != 0)
+	{
+	  complaint (_("unsupported segment selector size %u "
+		       "in .debug_line section"),
+		     segment_selector_size);
+	  return NULL;
+	}
+    }
+  lh->header_length = read_offset (abfd, line_ptr, offset_size);
+  line_ptr += offset_size;
+  lh->statement_program_start = line_ptr + lh->header_length;
+  lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
+  line_ptr += 1;
+  if (lh->version >= 4)
+    {
+      lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
+      line_ptr += 1;
+    }
+  else
+    lh->maximum_ops_per_instruction = 1;
+
+  if (lh->maximum_ops_per_instruction == 0)
+    {
+      lh->maximum_ops_per_instruction = 1;
+      complaint (_("invalid maximum_ops_per_instruction "
+		   "in `.debug_line' section"));
+    }
+
+  lh->default_is_stmt = read_1_byte (abfd, line_ptr);
+  line_ptr += 1;
+  lh->line_base = read_1_signed_byte (abfd, line_ptr);
+  line_ptr += 1;
+  lh->line_range = read_1_byte (abfd, line_ptr);
+  line_ptr += 1;
+  lh->opcode_base = read_1_byte (abfd, line_ptr);
+  line_ptr += 1;
+  lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
+
+  lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
+  for (i = 1; i < lh->opcode_base; ++i)
+    {
+      lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
+      line_ptr += 1;
+    }
+
+  if (lh->version >= 5)
+    {
+      /* Read directory table.  */
+      read_formatted_entries (per_objfile, abfd, &line_ptr, lh.get (),
+			      cu_header,
+			      [] (struct line_header *header, const char *name,
+				  dir_index d_index, unsigned int mod_time,
+				  unsigned int length)
+	{
+	  header->add_include_dir (name);
+	});
+
+      /* Read file name table.  */
+      read_formatted_entries (per_objfile, abfd, &line_ptr, lh.get (),
+			      cu_header,
+			      [] (struct line_header *header, const char *name,
+				  dir_index d_index, unsigned int mod_time,
+				  unsigned int length)
+	{
+	  header->add_file_name (name, d_index, mod_time, length);
+	});
+    }
+  else
+    {
+      /* Read directory table.  */
+      while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
+	{
+	  line_ptr += bytes_read;
+	  lh->add_include_dir (cur_dir);
+	}
+      line_ptr += bytes_read;
+
+      /* Read file name table.  */
+      while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
+	{
+	  unsigned int mod_time, length;
+	  dir_index d_index;
+
+	  line_ptr += bytes_read;
+	  d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+	  line_ptr += bytes_read;
+	  mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+	  line_ptr += bytes_read;
+	  length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+	  line_ptr += bytes_read;
+
+	  lh->add_file_name (cur_file, d_index, mod_time, length);
+	}
+      line_ptr += bytes_read;
+    }
+
+  if (line_ptr > (section->buffer + section->size))
+    complaint (_("line number info header doesn't "
+		 "fit in `.debug_line' section"));
+
+  return lh;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/line-header.h ./gdb/dwarf2/line-header.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/line-header.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/line-header.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,210 @@
+/* DWARF 2 debugging format support for GDB.
+
+   Copyright (C) 1994-2021 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 DWARF2_LINE_HEADER_H
+#define DWARF2_LINE_HEADER_H
+
+#include "gdbtypes.h"
+
+/* dir_index is 1-based in DWARF 4 and before, and is 0-based in DWARF 5 and
+   later.  */
+typedef int dir_index;
+
+/* file_name_index is 1-based in DWARF 4 and before, and is 0-based in DWARF 5
+   and later.  */
+typedef int file_name_index;
+
+struct line_header;
+
+struct file_entry
+{
+  file_entry () = default;
+
+  file_entry (const char *name_, dir_index d_index_,
+	      unsigned int mod_time_, unsigned int length_)
+    : name (name_),
+      d_index (d_index_),
+      mod_time (mod_time_),
+      length (length_)
+  {}
+
+  /* Return the include directory at D_INDEX stored in LH.  Returns
+     NULL if D_INDEX is out of bounds.  */
+  const char *include_dir (const line_header *lh) const;
+
+  /* The file name.  Note this is an observing pointer.  The memory is
+     owned by debug_line_buffer.  */
+  const char *name {};
+
+  /* The directory index (1-based).  */
+  dir_index d_index {};
+
+  unsigned int mod_time {};
+
+  unsigned int length {};
+
+  /* True if referenced by the Line Number Program.  */
+  bool included_p {};
+
+  /* The associated symbol table, if any.  */
+  struct symtab *symtab {};
+};
+
+/* The line number information for a compilation unit (found in the
+   .debug_line section) begins with a "statement program header",
+   which contains the following information.  */
+struct line_header
+{
+  line_header ()
+    : offset_in_dwz {}
+  {}
+
+  /* Add an entry to the include directory table.  */
+  void add_include_dir (const char *include_dir);
+
+  /* Add an entry to the file name table.  */
+  void add_file_name (const char *name, dir_index d_index,
+		      unsigned int mod_time, unsigned int length);
+
+  /* Return the include dir at INDEX (0-based in DWARF 5 and 1-based before).
+     Returns NULL if INDEX is out of bounds.  */
+  const char *include_dir_at (dir_index index) const
+  {
+    int vec_index;
+    if (version >= 5)
+      vec_index = index;
+    else
+      vec_index = index - 1;
+    if (vec_index < 0 || vec_index >= m_include_dirs.size ())
+      return NULL;
+    return m_include_dirs[vec_index];
+  }
+
+  bool is_valid_file_index (int file_index) const
+  {
+    if (version >= 5)
+      return 0 <= file_index && file_index < file_names_size ();
+    return 1 <= file_index && file_index <= file_names_size ();
+  }
+
+  /* Return the file name at INDEX (0-based in DWARF 5 and 1-based before).
+     Returns NULL if INDEX is out of bounds.  */
+  file_entry *file_name_at (file_name_index index)
+  {
+    int vec_index;
+    if (version >= 5)
+      vec_index = index;
+    else
+      vec_index = index - 1;
+    if (vec_index < 0 || vec_index >= m_file_names.size ())
+      return NULL;
+    return &m_file_names[vec_index];
+  }
+
+  /* A const overload of the same.  */
+  const file_entry *file_name_at (file_name_index index) const
+  {
+    line_header *lh = const_cast<line_header *> (this);
+    return lh->file_name_at (index);
+  }
+
+  /* The indexes are 0-based in DWARF 5 and 1-based in DWARF 4. Therefore,
+     this method should only be used to iterate through all file entries in an
+     index-agnostic manner.  */
+  std::vector<file_entry> &file_names ()
+  { return m_file_names; }
+  /* A const overload of the same.  */
+  const std::vector<file_entry> &file_names () const
+  { return m_file_names; }
+
+  /* Offset of line number information in .debug_line section.  */
+  sect_offset sect_off {};
+
+  /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
+  unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
+
+  unsigned int total_length {};
+  unsigned short version {};
+  unsigned int header_length {};
+  unsigned char minimum_instruction_length {};
+  unsigned char maximum_ops_per_instruction {};
+  unsigned char default_is_stmt {};
+  int line_base {};
+  unsigned char line_range {};
+  unsigned char opcode_base {};
+
+  /* standard_opcode_lengths[i] is the number of operands for the
+     standard opcode whose value is i.  This means that
+     standard_opcode_lengths[0] is unused, and the last meaningful
+     element is standard_opcode_lengths[opcode_base - 1].  */
+  std::unique_ptr<unsigned char[]> standard_opcode_lengths;
+
+  int file_names_size () const
+  { return m_file_names.size(); }
+
+  /* The start and end of the statement program following this
+     header.  These point into dwarf2_per_objfile->line_buffer.  */
+  const gdb_byte *statement_program_start {}, *statement_program_end {};
+
+  /* Return the full name of file number I in this object's file name
+     table.  Use COMP_DIR as the name of the current directory of the
+     compilation.  The result is allocated using xmalloc; the caller
+     is responsible for freeing it.  */
+  gdb::unique_xmalloc_ptr<char> file_full_name (int file,
+						const char *comp_dir) const;
+
+  /* Return file name relative to the compilation directory of file
+     number I in this object's file name table.  The result is
+     allocated using xmalloc; the caller is responsible for freeing
+     it.  */
+  gdb::unique_xmalloc_ptr<char> file_file_name (int file) const;
+
+ private:
+  /* The include_directories table.  Note these are observing
+     pointers.  The memory is owned by debug_line_buffer.  */
+  std::vector<const char *> m_include_dirs;
+
+  /* The file_names table. This is private because the meaning of indexes
+     differs among DWARF versions (The first valid index is 1 in DWARF 4 and
+     before, and is 0 in DWARF 5 and later).  So the client should use
+     file_name_at method for access.  */
+  std::vector<file_entry> m_file_names;
+};
+
+typedef std::unique_ptr<line_header> line_header_up;
+
+inline const char *
+file_entry::include_dir (const line_header *lh) const
+{
+  return lh->include_dir_at (d_index);
+}
+
+/* Read the statement program header starting at SECT_OFF in SECTION.
+   Return line_header.  Returns nullptr if there is a problem reading
+   the header, e.g., if it has a version we don't understand.
+
+   NOTE: the strings in the include directory and file name tables of
+   the returned object point into the dwarf line section buffer,
+   and must not be freed.  */
+
+extern line_header_up dwarf_decode_line_header
+  (sect_offset sect_off, bool is_dwz, dwarf2_per_objfile *per_objfile,
+   struct dwarf2_section_info *section, const struct comp_unit_head *cu_header);
+
+#endif /* DWARF2_LINE_HEADER_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/loc.c ./gdb/dwarf2/loc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/loc.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/loc.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,4765 @@
+/* DWARF 2 location expression support for GDB.
+
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
+
+   Contributed by Daniel Jacobowitz, MontaVista Software, 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 "ui-out.h"
+#include "value.h"
+#include "frame.h"
+#include "gdbcore.h"
+#include "target.h"
+#include "inferior.h"
+#include "ax.h"
+#include "ax-gdb.h"
+#include "regcache.h"
+#include "objfiles.h"
+#include "block.h"
+#include "gdbcmd.h"
+#include "complaints.h"
+#include "dwarf2.h"
+#include "dwarf2/expr.h"
+#include "dwarf2/loc.h"
+#include "dwarf2/read.h"
+#include "dwarf2/frame.h"
+#include "dwarf2/leb.h"
+#include "compile/compile.h"
+#include "gdbsupport/selftest.h"
+#include <algorithm>
+#include <vector>
+#include <unordered_set>
+#include "gdbsupport/underlying.h"
+#include "gdbsupport/byte-vector.h"
+
+static struct value *dwarf2_evaluate_loc_desc_full
+  (struct type *type, struct frame_info *frame, const gdb_byte *data,
+   size_t size, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile,
+   struct type *subobj_type, LONGEST subobj_byte_offset);
+
+static struct call_site_parameter *dwarf_expr_reg_to_entry_parameter
+    (struct frame_info *frame,
+     enum call_site_parameter_kind kind,
+     union call_site_parameter_u kind_u,
+     dwarf2_per_cu_data **per_cu_return,
+     dwarf2_per_objfile **per_objfile_return);
+
+static struct value *indirect_synthetic_pointer
+  (sect_offset die, LONGEST byte_offset,
+   dwarf2_per_cu_data *per_cu,
+   dwarf2_per_objfile *per_objfile,
+   struct frame_info *frame,
+   struct type *type, bool resolve_abstract_p = false);
+
+/* Until these have formal names, we define these here.
+   ref: http://gcc.gnu.org/wiki/DebugFission
+   Each entry in .debug_loc.dwo begins with a byte that describes the entry,
+   and is then followed by data specific to that entry.  */
+
+enum debug_loc_kind
+{
+  /* Indicates the end of the list of entries.  */
+  DEBUG_LOC_END_OF_LIST = 0,
+
+  /* This is followed by an unsigned LEB128 number that is an index into
+     .debug_addr and specifies the base address for all following entries.  */
+  DEBUG_LOC_BASE_ADDRESS = 1,
+
+  /* This is followed by two unsigned LEB128 numbers that are indices into
+     .debug_addr and specify the beginning and ending addresses, and then
+     a normal location expression as in .debug_loc.  */
+  DEBUG_LOC_START_END = 2,
+
+  /* This is followed by an unsigned LEB128 number that is an index into
+     .debug_addr and specifies the beginning address, and a 4 byte unsigned
+     number that specifies the length, and then a normal location expression
+     as in .debug_loc.  */
+  DEBUG_LOC_START_LENGTH = 3,
+
+  /* This is followed by two unsigned LEB128 operands. The values of these
+     operands are the starting and ending offsets, respectively, relative to
+     the applicable base address.  */
+  DEBUG_LOC_OFFSET_PAIR = 4,
+
+  /* An internal value indicating there is insufficient data.  */
+  DEBUG_LOC_BUFFER_OVERFLOW = -1,
+
+  /* An internal value indicating an invalid kind of entry was found.  */
+  DEBUG_LOC_INVALID_ENTRY = -2
+};
+
+/* Helper function which throws an error if a synthetic pointer is
+   invalid.  */
+
+static void
+invalid_synthetic_pointer (void)
+{
+  error (_("access outside bounds of object "
+	   "referenced via synthetic pointer"));
+}
+
+/* Decode the addresses in a non-dwo .debug_loc entry.
+   A pointer to the next byte to examine is returned in *NEW_PTR.
+   The encoded low,high addresses are return in *LOW,*HIGH.
+   The result indicates the kind of entry found.  */
+
+static enum debug_loc_kind
+decode_debug_loc_addresses (const gdb_byte *loc_ptr, const gdb_byte *buf_end,
+			    const gdb_byte **new_ptr,
+			    CORE_ADDR *low, CORE_ADDR *high,
+			    enum bfd_endian byte_order,
+			    unsigned int addr_size,
+			    int signed_addr_p)
+{
+  CORE_ADDR base_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
+
+  if (buf_end - loc_ptr < 2 * addr_size)
+    return DEBUG_LOC_BUFFER_OVERFLOW;
+
+  if (signed_addr_p)
+    *low = extract_signed_integer (loc_ptr, addr_size, byte_order);
+  else
+    *low = extract_unsigned_integer (loc_ptr, addr_size, byte_order);
+  loc_ptr += addr_size;
+
+  if (signed_addr_p)
+    *high = extract_signed_integer (loc_ptr, addr_size, byte_order);
+  else
+    *high = extract_unsigned_integer (loc_ptr, addr_size, byte_order);
+  loc_ptr += addr_size;
+
+  *new_ptr = loc_ptr;
+
+  /* A base-address-selection entry.  */
+  if ((*low & base_mask) == base_mask)
+    return DEBUG_LOC_BASE_ADDRESS;
+
+  /* An end-of-list entry.  */
+  if (*low == 0 && *high == 0)
+    return DEBUG_LOC_END_OF_LIST;
+
+  return DEBUG_LOC_START_END;
+}
+
+/* Decode the addresses in .debug_loclists entry.
+   A pointer to the next byte to examine is returned in *NEW_PTR.
+   The encoded low,high addresses are return in *LOW,*HIGH.
+   The result indicates the kind of entry found.  */
+
+static enum debug_loc_kind
+decode_debug_loclists_addresses (dwarf2_per_cu_data *per_cu,
+				 dwarf2_per_objfile *per_objfile,
+				 const gdb_byte *loc_ptr,
+				 const gdb_byte *buf_end,
+				 const gdb_byte **new_ptr,
+				 CORE_ADDR *low, CORE_ADDR *high,
+				 enum bfd_endian byte_order,
+				 unsigned int addr_size,
+				 int signed_addr_p)
+{
+  uint64_t u64;
+
+  if (loc_ptr == buf_end)
+    return DEBUG_LOC_BUFFER_OVERFLOW;
+
+  switch (*loc_ptr++)
+    {
+    case DW_LLE_base_addressx:
+      *low = 0;
+      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
+      if (loc_ptr == NULL)
+	 return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *high = dwarf2_read_addr_index (per_cu, per_objfile, u64);
+      *new_ptr = loc_ptr;
+      return DEBUG_LOC_BASE_ADDRESS;
+
+    case DW_LLE_startx_length:
+      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
+      if (loc_ptr == NULL)
+	 return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *low = dwarf2_read_addr_index (per_cu, per_objfile, u64);
+      *high = *low;
+      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
+      if (loc_ptr == NULL)
+	 return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *high += u64;
+      *new_ptr = loc_ptr;
+      return DEBUG_LOC_START_LENGTH;
+
+    case DW_LLE_start_length:
+      if (buf_end - loc_ptr < addr_size)
+	 return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      if (signed_addr_p)
+	 *low = extract_signed_integer (loc_ptr, addr_size, byte_order);
+      else
+	 *low = extract_unsigned_integer (loc_ptr, addr_size, byte_order);
+
+      loc_ptr += addr_size;
+      *high = *low;
+
+      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
+      if (loc_ptr == NULL)
+	 return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *high += u64;
+      *new_ptr = loc_ptr;
+      return DEBUG_LOC_START_LENGTH;
+
+    case DW_LLE_end_of_list:
+      *new_ptr = loc_ptr;
+      return DEBUG_LOC_END_OF_LIST;
+
+    case DW_LLE_base_address:
+      if (loc_ptr + addr_size > buf_end)
+	return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      if (signed_addr_p)
+	*high = extract_signed_integer (loc_ptr, addr_size, byte_order);
+      else
+	*high = extract_unsigned_integer (loc_ptr, addr_size, byte_order);
+
+      loc_ptr += addr_size;
+      *new_ptr = loc_ptr;
+      return DEBUG_LOC_BASE_ADDRESS;
+
+    case DW_LLE_offset_pair:
+      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
+      if (loc_ptr == NULL)
+	return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *low = u64;
+      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
+      if (loc_ptr == NULL)
+	return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *high = u64;
+      *new_ptr = loc_ptr;
+      return DEBUG_LOC_OFFSET_PAIR;
+
+    /* Following cases are not supported yet.  */
+    case DW_LLE_startx_endx:
+    case DW_LLE_start_end:
+    case DW_LLE_default_location:
+    default:
+      return DEBUG_LOC_INVALID_ENTRY;
+    }
+}
+
+/* Decode the addresses in .debug_loc.dwo entry.
+   A pointer to the next byte to examine is returned in *NEW_PTR.
+   The encoded low,high addresses are return in *LOW,*HIGH.
+   The result indicates the kind of entry found.  */
+
+static enum debug_loc_kind
+decode_debug_loc_dwo_addresses (dwarf2_per_cu_data *per_cu,
+				dwarf2_per_objfile *per_objfile,
+				const gdb_byte *loc_ptr,
+				const gdb_byte *buf_end,
+				const gdb_byte **new_ptr,
+				CORE_ADDR *low, CORE_ADDR *high,
+				enum bfd_endian byte_order)
+{
+  uint64_t low_index, high_index;
+
+  if (loc_ptr == buf_end)
+    return DEBUG_LOC_BUFFER_OVERFLOW;
+
+  switch (*loc_ptr++)
+    {
+    case DW_LLE_GNU_end_of_list_entry:
+      *new_ptr = loc_ptr;
+      return DEBUG_LOC_END_OF_LIST;
+
+    case DW_LLE_GNU_base_address_selection_entry:
+      *low = 0;
+      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &high_index);
+      if (loc_ptr == NULL)
+	return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *high = dwarf2_read_addr_index (per_cu, per_objfile, high_index);
+      *new_ptr = loc_ptr;
+      return DEBUG_LOC_BASE_ADDRESS;
+
+    case DW_LLE_GNU_start_end_entry:
+      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &low_index);
+      if (loc_ptr == NULL)
+	return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *low = dwarf2_read_addr_index (per_cu, per_objfile, low_index);
+      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &high_index);
+      if (loc_ptr == NULL)
+	return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *high = dwarf2_read_addr_index (per_cu, per_objfile, high_index);
+      *new_ptr = loc_ptr;
+      return DEBUG_LOC_START_END;
+
+    case DW_LLE_GNU_start_length_entry:
+      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &low_index);
+      if (loc_ptr == NULL)
+	return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *low = dwarf2_read_addr_index (per_cu, per_objfile, low_index);
+      if (loc_ptr + 4 > buf_end)
+	return DEBUG_LOC_BUFFER_OVERFLOW;
+
+      *high = *low;
+      *high += extract_unsigned_integer (loc_ptr, 4, byte_order);
+      *new_ptr = loc_ptr + 4;
+      return DEBUG_LOC_START_LENGTH;
+
+    default:
+      return DEBUG_LOC_INVALID_ENTRY;
+    }
+}
+
+/* A function for dealing with location lists.  Given a
+   symbol baton (BATON) and a pc value (PC), find the appropriate
+   location expression, set *LOCEXPR_LENGTH, and return a pointer
+   to the beginning of the expression.  Returns NULL on failure.
+
+   For now, only return the first matching location expression; there
+   can be more than one in the list.  */
+
+const gdb_byte *
+dwarf2_find_location_expression (struct dwarf2_loclist_baton *baton,
+				 size_t *locexpr_length, CORE_ADDR pc)
+{
+  dwarf2_per_objfile *per_objfile = baton->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  unsigned int addr_size = baton->per_cu->addr_size ();
+  int signed_addr_p = bfd_get_sign_extend_vma (objfile->obfd);
+  /* Adjust base_address for relocatable objects.  */
+  CORE_ADDR base_offset = baton->per_objfile->objfile->text_section_offset ();
+  CORE_ADDR base_address = baton->base_address + base_offset;
+  const gdb_byte *loc_ptr, *buf_end;
+
+  loc_ptr = baton->data;
+  buf_end = baton->data + baton->size;
+
+  while (1)
+    {
+      CORE_ADDR low = 0, high = 0; /* init for gcc -Wall */
+      int length;
+      enum debug_loc_kind kind;
+      const gdb_byte *new_ptr = NULL; /* init for gcc -Wall */
+
+      if (baton->per_cu->version () < 5 && baton->from_dwo)
+	kind = decode_debug_loc_dwo_addresses (baton->per_cu,
+					       baton->per_objfile,
+					       loc_ptr, buf_end, &new_ptr,
+					       &low, &high, byte_order);
+      else if (baton->per_cu->version () < 5)
+	kind = decode_debug_loc_addresses (loc_ptr, buf_end, &new_ptr,
+					   &low, &high,
+					   byte_order, addr_size,
+					   signed_addr_p);
+      else
+	kind = decode_debug_loclists_addresses (baton->per_cu,
+						baton->per_objfile,
+						loc_ptr, buf_end, &new_ptr,
+						&low, &high, byte_order,
+						addr_size, signed_addr_p);
+
+      loc_ptr = new_ptr;
+      switch (kind)
+	{
+	case DEBUG_LOC_END_OF_LIST:
+	  *locexpr_length = 0;
+	  return NULL;
+
+	case DEBUG_LOC_BASE_ADDRESS:
+	  base_address = high + base_offset;
+	  continue;
+
+	case DEBUG_LOC_START_END:
+	case DEBUG_LOC_START_LENGTH:
+	case DEBUG_LOC_OFFSET_PAIR:
+	  break;
+
+	case DEBUG_LOC_BUFFER_OVERFLOW:
+	case DEBUG_LOC_INVALID_ENTRY:
+	  error (_("dwarf2_find_location_expression: "
+		   "Corrupted DWARF expression."));
+
+	default:
+	  gdb_assert_not_reached ("bad debug_loc_kind");
+	}
+
+      /* Otherwise, a location expression entry.
+	 If the entry is from a DWO, don't add base address: the entry is from
+	 .debug_addr which already has the DWARF "base address". We still add
+	 base_offset in case we're debugging a PIE executable. However, if the
+	 entry is DW_LLE_offset_pair from a DWO, add the base address as the
+	 operands are offsets relative to the applicable base address.  */
+      if (baton->from_dwo && kind != DEBUG_LOC_OFFSET_PAIR)
+	{
+	  low += base_offset;
+	  high += base_offset;
+	}
+      else
+	{
+	  low += base_address;
+	  high += base_address;
+	}
+
+      if (baton->per_cu->version () < 5)
+	{
+	  length = extract_unsigned_integer (loc_ptr, 2, byte_order);
+	  loc_ptr += 2;
+	}
+      else
+	{
+	  unsigned int bytes_read;
+
+	  length = read_unsigned_leb128 (NULL, loc_ptr, &bytes_read);
+	  loc_ptr += bytes_read;
+	}
+
+      if (low == high && pc == low)
+	{
+	  /* This is entry PC record present only at entry point
+	     of a function.  Verify it is really the function entry point.  */
+
+	  const struct block *pc_block = block_for_pc (pc);
+	  struct symbol *pc_func = NULL;
+
+	  if (pc_block)
+	    pc_func = block_linkage_function (pc_block);
+
+	  if (pc_func && pc == BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (pc_func)))
+	    {
+	      *locexpr_length = length;
+	      return loc_ptr;
+	    }
+	}
+
+      if (pc >= low && pc < high)
+	{
+	  *locexpr_length = length;
+	  return loc_ptr;
+	}
+
+      loc_ptr += length;
+    }
+}
+
+/* Implement find_frame_base_location method for LOC_BLOCK functions using
+   DWARF expression for its DW_AT_frame_base.  */
+
+static void
+locexpr_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc,
+				  const gdb_byte **start, size_t *length)
+{
+  struct dwarf2_locexpr_baton *symbaton
+    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (framefunc);
+
+  *length = symbaton->size;
+  *start = symbaton->data;
+}
+
+/* Implement the struct symbol_block_ops::get_frame_base method for
+   LOC_BLOCK functions using a DWARF expression as its DW_AT_frame_base.  */
+
+static CORE_ADDR
+locexpr_get_frame_base (struct symbol *framefunc, struct frame_info *frame)
+{
+  struct gdbarch *gdbarch;
+  struct type *type;
+  struct dwarf2_locexpr_baton *dlbaton;
+  const gdb_byte *start;
+  size_t length;
+  struct value *result;
+
+  /* If this method is called, then FRAMEFUNC is supposed to be a DWARF block.
+     Thus, it's supposed to provide the find_frame_base_location method as
+     well.  */
+  gdb_assert (SYMBOL_BLOCK_OPS (framefunc)->find_frame_base_location != NULL);
+
+  gdbarch = get_frame_arch (frame);
+  type = builtin_type (gdbarch)->builtin_data_ptr;
+  dlbaton = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (framefunc);
+
+  SYMBOL_BLOCK_OPS (framefunc)->find_frame_base_location
+    (framefunc, get_frame_pc (frame), &start, &length);
+  result = dwarf2_evaluate_loc_desc (type, frame, start, length,
+				     dlbaton->per_cu, dlbaton->per_objfile);
+
+  /* The DW_AT_frame_base attribute contains a location description which
+     computes the base address itself.  However, the call to
+     dwarf2_evaluate_loc_desc returns a value representing a variable at
+     that address.  The frame base address is thus this variable's
+     address.  */
+  return value_address (result);
+}
+
+/* Vector for inferior functions as represented by LOC_BLOCK, if the inferior
+   function uses DWARF expression for its DW_AT_frame_base.  */
+
+const struct symbol_block_ops dwarf2_block_frame_base_locexpr_funcs =
+{
+  locexpr_find_frame_base_location,
+  locexpr_get_frame_base
+};
+
+/* Implement find_frame_base_location method for LOC_BLOCK functions using
+   DWARF location list for its DW_AT_frame_base.  */
+
+static void
+loclist_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc,
+				  const gdb_byte **start, size_t *length)
+{
+  struct dwarf2_loclist_baton *symbaton
+    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (framefunc);
+
+  *start = dwarf2_find_location_expression (symbaton, length, pc);
+}
+
+/* Implement the struct symbol_block_ops::get_frame_base method for
+   LOC_BLOCK functions using a DWARF location list as its DW_AT_frame_base.  */
+
+static CORE_ADDR
+loclist_get_frame_base (struct symbol *framefunc, struct frame_info *frame)
+{
+  struct gdbarch *gdbarch;
+  struct type *type;
+  struct dwarf2_loclist_baton *dlbaton;
+  const gdb_byte *start;
+  size_t length;
+  struct value *result;
+
+  /* If this method is called, then FRAMEFUNC is supposed to be a DWARF block.
+     Thus, it's supposed to provide the find_frame_base_location method as
+     well.  */
+  gdb_assert (SYMBOL_BLOCK_OPS (framefunc)->find_frame_base_location != NULL);
+
+  gdbarch = get_frame_arch (frame);
+  type = builtin_type (gdbarch)->builtin_data_ptr;
+  dlbaton = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (framefunc);
+
+  SYMBOL_BLOCK_OPS (framefunc)->find_frame_base_location
+    (framefunc, get_frame_pc (frame), &start, &length);
+  result = dwarf2_evaluate_loc_desc (type, frame, start, length,
+				     dlbaton->per_cu, dlbaton->per_objfile);
+
+  /* The DW_AT_frame_base attribute contains a location description which
+     computes the base address itself.  However, the call to
+     dwarf2_evaluate_loc_desc returns a value representing a variable at
+     that address.  The frame base address is thus this variable's
+     address.  */
+  return value_address (result);
+}
+
+/* Vector for inferior functions as represented by LOC_BLOCK, if the inferior
+   function uses DWARF location list for its DW_AT_frame_base.  */
+
+const struct symbol_block_ops dwarf2_block_frame_base_loclist_funcs =
+{
+  loclist_find_frame_base_location,
+  loclist_get_frame_base
+};
+
+/* See dwarf2loc.h.  */
+
+void
+func_get_frame_base_dwarf_block (struct symbol *framefunc, CORE_ADDR pc,
+				 const gdb_byte **start, size_t *length)
+{
+  if (SYMBOL_BLOCK_OPS (framefunc) != NULL)
+    {
+      const struct symbol_block_ops *ops_block = SYMBOL_BLOCK_OPS (framefunc);
+
+      ops_block->find_frame_base_location (framefunc, pc, start, length);
+    }
+  else
+    *length = 0;
+
+  if (*length == 0)
+    error (_("Could not find the frame base for \"%s\"."),
+	   framefunc->natural_name ());
+}
+
+static void
+per_cu_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset,
+		   dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile)
+{
+  struct dwarf2_locexpr_baton block;
+
+  auto get_frame_pc_from_ctx = [ctx] ()
+    {
+      return ctx->get_frame_pc ();
+    };
+
+  block = dwarf2_fetch_die_loc_cu_off (die_offset, per_cu, per_objfile,
+				       get_frame_pc_from_ctx);
+
+  /* DW_OP_call_ref is currently not supported.  */
+  gdb_assert (block.per_cu == per_cu);
+
+  ctx->eval (block.data, block.size);
+}
+
+/* Given context CTX, section offset SECT_OFF, and compilation unit
+   data PER_CU, execute the "variable value" operation on the DIE
+   found at SECT_OFF.  */
+
+static struct value *
+sect_variable_value (struct dwarf_expr_context *ctx, sect_offset sect_off,
+		     dwarf2_per_cu_data *per_cu,
+		     dwarf2_per_objfile *per_objfile)
+{
+  struct type *die_type
+    = dwarf2_fetch_die_type_sect_off (sect_off, per_cu, per_objfile);
+
+  if (die_type == NULL)
+    error (_("Bad DW_OP_GNU_variable_value DIE."));
+
+  /* Note: Things still work when the following test is removed.  This
+     test and error is here to conform to the proposed specification.  */
+  if (die_type->code () != TYPE_CODE_INT
+      && die_type->code () != TYPE_CODE_PTR)
+    error (_("Type of DW_OP_GNU_variable_value DIE must be an integer or pointer."));
+
+  struct type *type = lookup_pointer_type (die_type);
+  struct frame_info *frame = get_selected_frame (_("No frame selected."));
+  return indirect_synthetic_pointer (sect_off, 0, per_cu, per_objfile, frame,
+				     type, true);
+}
+
+class dwarf_evaluate_loc_desc : public dwarf_expr_context
+{
+public:
+  dwarf_evaluate_loc_desc (dwarf2_per_objfile *per_objfile)
+    : dwarf_expr_context (per_objfile)
+  {}
+
+  struct frame_info *frame;
+  struct dwarf2_per_cu_data *per_cu;
+  CORE_ADDR obj_address;
+
+  /* Helper function for dwarf2_evaluate_loc_desc.  Computes the CFA for
+     the frame in BATON.  */
+
+  CORE_ADDR get_frame_cfa () override
+  {
+    return dwarf2_frame_cfa (frame);
+  }
+
+  /* Helper function for dwarf2_evaluate_loc_desc.  Computes the PC for
+     the frame in BATON.  */
+
+  CORE_ADDR get_frame_pc () override
+  {
+    return get_frame_address_in_block (frame);
+  }
+
+  /* Using the objfile specified in BATON, find the address for the
+     current thread's thread-local storage with offset OFFSET.  */
+  CORE_ADDR get_tls_address (CORE_ADDR offset) override
+  {
+    return target_translate_tls_address (per_objfile->objfile, offset);
+  }
+
+  /* Helper interface of per_cu_dwarf_call for
+     dwarf2_evaluate_loc_desc.  */
+
+  void dwarf_call (cu_offset die_offset) override
+  {
+    per_cu_dwarf_call (this, die_offset, per_cu, per_objfile);
+  }
+
+  /* Helper interface of sect_variable_value for
+     dwarf2_evaluate_loc_desc.  */
+
+  struct value *dwarf_variable_value (sect_offset sect_off) override
+  {
+    return sect_variable_value (this, sect_off, per_cu, per_objfile);
+  }
+
+  struct type *get_base_type (cu_offset die_offset, int size) override
+  {
+    struct type *result = dwarf2_get_die_type (die_offset, per_cu, per_objfile);
+    if (result == NULL)
+      error (_("Could not find type for DW_OP_const_type"));
+    if (size != 0 && TYPE_LENGTH (result) != size)
+      error (_("DW_OP_const_type has different sizes for type and data"));
+    return result;
+  }
+
+  /* Callback function for dwarf2_evaluate_loc_desc.
+     Fetch the address indexed by DW_OP_addrx or DW_OP_GNU_addr_index.  */
+
+  CORE_ADDR get_addr_index (unsigned int index) override
+  {
+    return dwarf2_read_addr_index (per_cu, per_objfile, index);
+  }
+
+  /* Callback function for get_object_address. Return the address of the VLA
+     object.  */
+
+  CORE_ADDR get_object_address () override
+  {
+    if (obj_address == 0)
+      error (_("Location address is not set."));
+    return obj_address;
+  }
+
+  /* Execute DWARF block of call_site_parameter which matches KIND and
+     KIND_U.  Choose DEREF_SIZE value of that parameter.  Search
+     caller of this objects's frame.
+
+     The caller can be from a different CU - per_cu_dwarf_call
+     implementation can be more simple as it does not support cross-CU
+     DWARF executions.  */
+
+  void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind,
+				   union call_site_parameter_u kind_u,
+				   int deref_size) override
+  {
+    struct frame_info *caller_frame;
+    dwarf2_per_cu_data *caller_per_cu;
+    dwarf2_per_objfile *caller_per_objfile;
+    struct call_site_parameter *parameter;
+    const gdb_byte *data_src;
+    size_t size;
+
+    caller_frame = get_prev_frame (frame);
+
+    parameter = dwarf_expr_reg_to_entry_parameter (frame, kind, kind_u,
+						   &caller_per_cu,
+						   &caller_per_objfile);
+    data_src = deref_size == -1 ? parameter->value : parameter->data_value;
+    size = deref_size == -1 ? parameter->value_size : parameter->data_value_size;
+
+    /* DEREF_SIZE size is not verified here.  */
+    if (data_src == NULL)
+      throw_error (NO_ENTRY_VALUE_ERROR,
+		   _("Cannot resolve DW_AT_call_data_value"));
+
+    /* We are about to evaluate an expression in the context of the caller
+       of the current frame.  This evaluation context may be different from
+       the current (callee's) context), so temporarily set the caller's context.
+
+       It is possible for the caller to be from a different objfile from the
+       callee if the call is made through a function pointer.  */
+    scoped_restore save_frame = make_scoped_restore (&this->frame,
+						     caller_frame);
+    scoped_restore save_per_cu = make_scoped_restore (&this->per_cu,
+						      caller_per_cu);
+    scoped_restore save_obj_addr = make_scoped_restore (&this->obj_address,
+							(CORE_ADDR) 0);
+    scoped_restore save_per_objfile = make_scoped_restore (&this->per_objfile,
+							   caller_per_objfile);
+
+    scoped_restore save_arch = make_scoped_restore (&this->gdbarch);
+    this->gdbarch = this->per_objfile->objfile->arch ();
+    scoped_restore save_addr_size = make_scoped_restore (&this->addr_size);
+    this->addr_size = this->per_cu->addr_size ();
+
+    this->eval (data_src, size);
+  }
+
+  /* Using the frame specified in BATON, find the location expression
+     describing the frame base.  Return a pointer to it in START and
+     its length in LENGTH.  */
+  void get_frame_base (const gdb_byte **start, size_t * length) override
+  {
+    /* FIXME: cagney/2003-03-26: This code should be using
+       get_frame_base_address(), and then implement a dwarf2 specific
+       this_base method.  */
+    struct symbol *framefunc;
+    const struct block *bl = get_frame_block (frame, NULL);
+
+    if (bl == NULL)
+      error (_("frame address is not available."));
+
+    /* Use block_linkage_function, which returns a real (not inlined)
+       function, instead of get_frame_function, which may return an
+       inlined function.  */
+    framefunc = block_linkage_function (bl);
+
+    /* If we found a frame-relative symbol then it was certainly within
+       some function associated with a frame. If we can't find the frame,
+       something has gone wrong.  */
+    gdb_assert (framefunc != NULL);
+
+    func_get_frame_base_dwarf_block (framefunc,
+				     get_frame_address_in_block (frame),
+				     start, length);
+  }
+
+  /* Read memory at ADDR (length LEN) into BUF.  */
+
+  void read_mem (gdb_byte *buf, CORE_ADDR addr, size_t len) override
+  {
+    read_memory (addr, buf, len);
+  }
+
+  /* Using the frame specified in BATON, return the value of register
+     REGNUM, treated as a pointer.  */
+  CORE_ADDR read_addr_from_reg (int dwarf_regnum) override
+  {
+    struct gdbarch *gdbarch = get_frame_arch (frame);
+    int regnum = dwarf_reg_to_regnum_or_error (gdbarch, dwarf_regnum);
+
+    return address_from_register (regnum, frame);
+  }
+
+  /* Implement "get_reg_value" callback.  */
+
+  struct value *get_reg_value (struct type *type, int dwarf_regnum) override
+  {
+    struct gdbarch *gdbarch = get_frame_arch (frame);
+    int regnum = dwarf_reg_to_regnum_or_error (gdbarch, dwarf_regnum);
+
+    return value_from_register (type, regnum, frame);
+  }
+};
+
+/* See dwarf2loc.h.  */
+
+unsigned int entry_values_debug = 0;
+
+/* Helper to set entry_values_debug.  */
+
+static void
+show_entry_values_debug (struct ui_file *file, int from_tty,
+			 struct cmd_list_element *c, const char *value)
+{
+  fprintf_filtered (file,
+		    _("Entry values and tail call frames debugging is %s.\n"),
+		    value);
+}
+
+/* Find DW_TAG_call_site's DW_AT_call_target address.
+   CALLER_FRAME (for registers) can be NULL if it is not known.  This function
+   always returns valid address or it throws NO_ENTRY_VALUE_ERROR.  */
+
+static CORE_ADDR
+call_site_to_target_addr (struct gdbarch *call_site_gdbarch,
+			  struct call_site *call_site,
+			  struct frame_info *caller_frame)
+{
+  switch (FIELD_LOC_KIND (call_site->target))
+    {
+    case FIELD_LOC_KIND_DWARF_BLOCK:
+      {
+	struct dwarf2_locexpr_baton *dwarf_block;
+	struct value *val;
+	struct type *caller_core_addr_type;
+	struct gdbarch *caller_arch;
+
+	dwarf_block = FIELD_DWARF_BLOCK (call_site->target);
+	if (dwarf_block == NULL)
+	  {
+	    struct bound_minimal_symbol msym;
+	    
+	    msym = lookup_minimal_symbol_by_pc (call_site->pc - 1);
+	    throw_error (NO_ENTRY_VALUE_ERROR,
+			 _("DW_AT_call_target is not specified at %s in %s"),
+			 paddress (call_site_gdbarch, call_site->pc),
+			 (msym.minsym == NULL ? "???"
+			  : msym.minsym->print_name ()));
+			
+	  }
+	if (caller_frame == NULL)
+	  {
+	    struct bound_minimal_symbol msym;
+	    
+	    msym = lookup_minimal_symbol_by_pc (call_site->pc - 1);
+	    throw_error (NO_ENTRY_VALUE_ERROR,
+			 _("DW_AT_call_target DWARF block resolving "
+			   "requires known frame which is currently not "
+			   "available at %s in %s"),
+			 paddress (call_site_gdbarch, call_site->pc),
+			 (msym.minsym == NULL ? "???"
+			  : msym.minsym->print_name ()));
+			
+	  }
+	caller_arch = get_frame_arch (caller_frame);
+	caller_core_addr_type = builtin_type (caller_arch)->builtin_func_ptr;
+	val = dwarf2_evaluate_loc_desc (caller_core_addr_type, caller_frame,
+					dwarf_block->data, dwarf_block->size,
+					dwarf_block->per_cu,
+					dwarf_block->per_objfile);
+	/* DW_AT_call_target is a DWARF expression, not a DWARF location.  */
+	if (VALUE_LVAL (val) == lval_memory)
+	  return value_address (val);
+	else
+	  return value_as_address (val);
+      }
+
+    case FIELD_LOC_KIND_PHYSNAME:
+      {
+	const char *physname;
+	struct bound_minimal_symbol msym;
+
+	physname = FIELD_STATIC_PHYSNAME (call_site->target);
+
+	/* Handle both the mangled and demangled PHYSNAME.  */
+	msym = lookup_minimal_symbol (physname, NULL, NULL);
+	if (msym.minsym == NULL)
+	  {
+	    msym = lookup_minimal_symbol_by_pc (call_site->pc - 1);
+	    throw_error (NO_ENTRY_VALUE_ERROR,
+			 _("Cannot find function \"%s\" for a call site target "
+			   "at %s in %s"),
+			 physname, paddress (call_site_gdbarch, call_site->pc),
+			 (msym.minsym == NULL ? "???"
+			  : msym.minsym->print_name ()));
+			
+	  }
+	return BMSYMBOL_VALUE_ADDRESS (msym);
+      }
+
+    case FIELD_LOC_KIND_PHYSADDR:
+      return FIELD_STATIC_PHYSADDR (call_site->target);
+
+    default:
+      internal_error (__FILE__, __LINE__, _("invalid call site target kind"));
+    }
+}
+
+/* Convert function entry point exact address ADDR to the function which is
+   compliant with TAIL_CALL_LIST_COMPLETE condition.  Throw
+   NO_ENTRY_VALUE_ERROR otherwise.  */
+
+static struct symbol *
+func_addr_to_tail_call_list (struct gdbarch *gdbarch, CORE_ADDR addr)
+{
+  struct symbol *sym = find_pc_function (addr);
+  struct type *type;
+
+  if (sym == NULL || BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (sym)) != addr)
+    throw_error (NO_ENTRY_VALUE_ERROR,
+		 _("DW_TAG_call_site resolving failed to find function "
+		   "name for address %s"),
+		 paddress (gdbarch, addr));
+
+  type = SYMBOL_TYPE (sym);
+  gdb_assert (type->code () == TYPE_CODE_FUNC);
+  gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_FUNC);
+
+  return sym;
+}
+
+/* Verify function with entry point exact address ADDR can never call itself
+   via its tail calls (incl. transitively).  Throw NO_ENTRY_VALUE_ERROR if it
+   can call itself via tail calls.
+
+   If a funtion can tail call itself its entry value based parameters are
+   unreliable.  There is no verification whether the value of some/all
+   parameters is unchanged through the self tail call, we expect if there is
+   a self tail call all the parameters can be modified.  */
+
+static void
+func_verify_no_selftailcall (struct gdbarch *gdbarch, CORE_ADDR verify_addr)
+{
+  CORE_ADDR addr;
+
+  /* The verification is completely unordered.  Track here function addresses
+     which still need to be iterated.  */
+  std::vector<CORE_ADDR> todo;
+
+  /* Track here CORE_ADDRs which were already visited.  */
+  std::unordered_set<CORE_ADDR> addr_hash;
+
+  todo.push_back (verify_addr);
+  while (!todo.empty ())
+    {
+      struct symbol *func_sym;
+      struct call_site *call_site;
+
+      addr = todo.back ();
+      todo.pop_back ();
+
+      func_sym = func_addr_to_tail_call_list (gdbarch, addr);
+
+      for (call_site = TYPE_TAIL_CALL_LIST (SYMBOL_TYPE (func_sym));
+	   call_site; call_site = call_site->tail_call_next)
+	{
+	  CORE_ADDR target_addr;
+
+	  /* CALLER_FRAME with registers is not available for tail-call jumped
+	     frames.  */
+	  target_addr = call_site_to_target_addr (gdbarch, call_site, NULL);
+
+	  if (target_addr == verify_addr)
+	    {
+	      struct bound_minimal_symbol msym;
+	      
+	      msym = lookup_minimal_symbol_by_pc (verify_addr);
+	      throw_error (NO_ENTRY_VALUE_ERROR,
+			   _("DW_OP_entry_value resolving has found "
+			     "function \"%s\" at %s can call itself via tail "
+			     "calls"),
+			   (msym.minsym == NULL ? "???"
+			    : msym.minsym->print_name ()),
+			   paddress (gdbarch, verify_addr));
+	    }
+
+	  if (addr_hash.insert (target_addr).second)
+	    todo.push_back (target_addr);
+	}
+    }
+}
+
+/* Print user readable form of CALL_SITE->PC to gdb_stdlog.  Used only for
+   ENTRY_VALUES_DEBUG.  */
+
+static void
+tailcall_dump (struct gdbarch *gdbarch, const struct call_site *call_site)
+{
+  CORE_ADDR addr = call_site->pc;
+  struct bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (addr - 1);
+
+  fprintf_unfiltered (gdb_stdlog, " %s(%s)", paddress (gdbarch, addr),
+		      (msym.minsym == NULL ? "???"
+		       : msym.minsym->print_name ()));
+
+}
+
+/* Intersect RESULTP with CHAIN to keep RESULTP unambiguous, keep in RESULTP
+   only top callers and bottom callees which are present in both.  GDBARCH is
+   used only for ENTRY_VALUES_DEBUG.  RESULTP is NULL after return if there are
+   no remaining possibilities to provide unambiguous non-trivial result.
+   RESULTP should point to NULL on the first (initialization) call.  Caller is
+   responsible for xfree of any RESULTP data.  */
+
+static void
+chain_candidate (struct gdbarch *gdbarch,
+		 gdb::unique_xmalloc_ptr<struct call_site_chain> *resultp,
+		 std::vector<struct call_site *> *chain)
+{
+  long length = chain->size ();
+  int callers, callees, idx;
+
+  if (*resultp == NULL)
+    {
+      /* Create the initial chain containing all the passed PCs.  */
+
+      struct call_site_chain *result
+	= ((struct call_site_chain *)
+	   xmalloc (sizeof (*result)
+		    + sizeof (*result->call_site) * (length - 1)));
+      result->length = length;
+      result->callers = result->callees = length;
+      if (!chain->empty ())
+	memcpy (result->call_site, chain->data (),
+		sizeof (*result->call_site) * length);
+      resultp->reset (result);
+
+      if (entry_values_debug)
+	{
+	  fprintf_unfiltered (gdb_stdlog, "tailcall: initial:");
+	  for (idx = 0; idx < length; idx++)
+	    tailcall_dump (gdbarch, result->call_site[idx]);
+	  fputc_unfiltered ('\n', gdb_stdlog);
+	}
+
+      return;
+    }
+
+  if (entry_values_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog, "tailcall: compare:");
+      for (idx = 0; idx < length; idx++)
+	tailcall_dump (gdbarch, chain->at (idx));
+      fputc_unfiltered ('\n', gdb_stdlog);
+    }
+
+  /* Intersect callers.  */
+
+  callers = std::min ((long) (*resultp)->callers, length);
+  for (idx = 0; idx < callers; idx++)
+    if ((*resultp)->call_site[idx] != chain->at (idx))
+      {
+	(*resultp)->callers = idx;
+	break;
+      }
+
+  /* Intersect callees.  */
+
+  callees = std::min ((long) (*resultp)->callees, length);
+  for (idx = 0; idx < callees; idx++)
+    if ((*resultp)->call_site[(*resultp)->length - 1 - idx]
+	!= chain->at (length - 1 - idx))
+      {
+	(*resultp)->callees = idx;
+	break;
+      }
+
+  if (entry_values_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog, "tailcall: reduced:");
+      for (idx = 0; idx < (*resultp)->callers; idx++)
+	tailcall_dump (gdbarch, (*resultp)->call_site[idx]);
+      fputs_unfiltered (" |", gdb_stdlog);
+      for (idx = 0; idx < (*resultp)->callees; idx++)
+	tailcall_dump (gdbarch,
+		       (*resultp)->call_site[(*resultp)->length
+					     - (*resultp)->callees + idx]);
+      fputc_unfiltered ('\n', gdb_stdlog);
+    }
+
+  if ((*resultp)->callers == 0 && (*resultp)->callees == 0)
+    {
+      /* There are no common callers or callees.  It could be also a direct
+	 call (which has length 0) with ambiguous possibility of an indirect
+	 call - CALLERS == CALLEES == 0 is valid during the first allocation
+	 but any subsequence processing of such entry means ambiguity.  */
+      resultp->reset (NULL);
+      return;
+    }
+
+  /* See call_site_find_chain_1 why there is no way to reach the bottom callee
+     PC again.  In such case there must be two different code paths to reach
+     it.  CALLERS + CALLEES equal to LENGTH in the case of self tail-call.  */
+  gdb_assert ((*resultp)->callers + (*resultp)->callees <= (*resultp)->length);
+}
+
+/* Create and return call_site_chain for CALLER_PC and CALLEE_PC.  All the
+   assumed frames between them use GDBARCH.  Use depth first search so we can
+   keep single CHAIN of call_site's back to CALLER_PC.  Function recursion
+   would have needless GDB stack overhead.  Any unreliability results
+   in thrown NO_ENTRY_VALUE_ERROR.  */
+
+static gdb::unique_xmalloc_ptr<call_site_chain>
+call_site_find_chain_1 (struct gdbarch *gdbarch, CORE_ADDR caller_pc,
+			CORE_ADDR callee_pc)
+{
+  CORE_ADDR save_callee_pc = callee_pc;
+  gdb::unique_xmalloc_ptr<struct call_site_chain> retval;
+  struct call_site *call_site;
+
+  /* CHAIN contains only the intermediate CALL_SITEs.  Neither CALLER_PC's
+     call_site nor any possible call_site at CALLEE_PC's function is there.
+     Any CALL_SITE in CHAIN will be iterated to its siblings - via
+     TAIL_CALL_NEXT.  This is inappropriate for CALLER_PC's call_site.  */
+  std::vector<struct call_site *> chain;
+
+  /* We are not interested in the specific PC inside the callee function.  */
+  callee_pc = get_pc_function_start (callee_pc);
+  if (callee_pc == 0)
+    throw_error (NO_ENTRY_VALUE_ERROR, _("Unable to find function for PC %s"),
+		 paddress (gdbarch, save_callee_pc));
+
+  /* Mark CALL_SITEs so we do not visit the same ones twice.  */
+  std::unordered_set<CORE_ADDR> addr_hash;
+
+  /* Do not push CALL_SITE to CHAIN.  Push there only the first tail call site
+     at the target's function.  All the possible tail call sites in the
+     target's function will get iterated as already pushed into CHAIN via their
+     TAIL_CALL_NEXT.  */
+  call_site = call_site_for_pc (gdbarch, caller_pc);
+
+  while (call_site)
+    {
+      CORE_ADDR target_func_addr;
+      struct call_site *target_call_site;
+
+      /* CALLER_FRAME with registers is not available for tail-call jumped
+	 frames.  */
+      target_func_addr = call_site_to_target_addr (gdbarch, call_site, NULL);
+
+      if (target_func_addr == callee_pc)
+	{
+	  chain_candidate (gdbarch, &retval, &chain);
+	  if (retval == NULL)
+	    break;
+
+	  /* There is no way to reach CALLEE_PC again as we would prevent
+	     entering it twice as being already marked in ADDR_HASH.  */
+	  target_call_site = NULL;
+	}
+      else
+	{
+	  struct symbol *target_func;
+
+	  target_func = func_addr_to_tail_call_list (gdbarch, target_func_addr);
+	  target_call_site = TYPE_TAIL_CALL_LIST (SYMBOL_TYPE (target_func));
+	}
+
+      do
+	{
+	  /* Attempt to visit TARGET_CALL_SITE.  */
+
+	  if (target_call_site)
+	    {
+	      if (addr_hash.insert (target_call_site->pc).second)
+		{
+		  /* Successfully entered TARGET_CALL_SITE.  */
+
+		  chain.push_back (target_call_site);
+		  break;
+		}
+	    }
+
+	  /* Backtrack (without revisiting the originating call_site).  Try the
+	     callers's sibling; if there isn't any try the callers's callers's
+	     sibling etc.  */
+
+	  target_call_site = NULL;
+	  while (!chain.empty ())
+	    {
+	      call_site = chain.back ();
+	      chain.pop_back ();
+
+	      size_t removed = addr_hash.erase (call_site->pc);
+	      gdb_assert (removed == 1);
+
+	      target_call_site = call_site->tail_call_next;
+	      if (target_call_site)
+		break;
+	    }
+	}
+      while (target_call_site);
+
+      if (chain.empty ())
+	call_site = NULL;
+      else
+	call_site = chain.back ();
+    }
+
+  if (retval == NULL)
+    {
+      struct bound_minimal_symbol msym_caller, msym_callee;
+      
+      msym_caller = lookup_minimal_symbol_by_pc (caller_pc);
+      msym_callee = lookup_minimal_symbol_by_pc (callee_pc);
+      throw_error (NO_ENTRY_VALUE_ERROR,
+		   _("There are no unambiguously determinable intermediate "
+		     "callers or callees between caller function \"%s\" at %s "
+		     "and callee function \"%s\" at %s"),
+		   (msym_caller.minsym == NULL
+		    ? "???" : msym_caller.minsym->print_name ()),
+		   paddress (gdbarch, caller_pc),
+		   (msym_callee.minsym == NULL
+		    ? "???" : msym_callee.minsym->print_name ()),
+		   paddress (gdbarch, callee_pc));
+    }
+
+  return retval;
+}
+
+/* Create and return call_site_chain for CALLER_PC and CALLEE_PC.  All the
+   assumed frames between them use GDBARCH.  If valid call_site_chain cannot be
+   constructed return NULL.  */
+
+gdb::unique_xmalloc_ptr<call_site_chain>
+call_site_find_chain (struct gdbarch *gdbarch, CORE_ADDR caller_pc,
+		      CORE_ADDR callee_pc)
+{
+  gdb::unique_xmalloc_ptr<call_site_chain> retval;
+
+  try
+    {
+      retval = call_site_find_chain_1 (gdbarch, caller_pc, callee_pc);
+    }
+  catch (const gdb_exception_error &e)
+    {
+      if (e.error == NO_ENTRY_VALUE_ERROR)
+	{
+	  if (entry_values_debug)
+	    exception_print (gdb_stdout, e);
+
+	  return NULL;
+	}
+      else
+	throw;
+    }
+
+  return retval;
+}
+
+/* Return 1 if KIND and KIND_U match PARAMETER.  Return 0 otherwise.  */
+
+static int
+call_site_parameter_matches (struct call_site_parameter *parameter,
+			     enum call_site_parameter_kind kind,
+			     union call_site_parameter_u kind_u)
+{
+  if (kind == parameter->kind)
+    switch (kind)
+      {
+      case CALL_SITE_PARAMETER_DWARF_REG:
+	return kind_u.dwarf_reg == parameter->u.dwarf_reg;
+
+      case CALL_SITE_PARAMETER_FB_OFFSET:
+	return kind_u.fb_offset == parameter->u.fb_offset;
+
+      case CALL_SITE_PARAMETER_PARAM_OFFSET:
+	return kind_u.param_cu_off == parameter->u.param_cu_off;
+      }
+  return 0;
+}
+
+/* Fetch call_site_parameter from caller matching KIND and KIND_U.
+   FRAME is for callee.
+
+   Function always returns non-NULL, it throws NO_ENTRY_VALUE_ERROR
+   otherwise.  */
+
+static struct call_site_parameter *
+dwarf_expr_reg_to_entry_parameter (struct frame_info *frame,
+				   enum call_site_parameter_kind kind,
+				   union call_site_parameter_u kind_u,
+				   dwarf2_per_cu_data **per_cu_return,
+				   dwarf2_per_objfile **per_objfile_return)
+{
+  CORE_ADDR func_addr, caller_pc;
+  struct gdbarch *gdbarch;
+  struct frame_info *caller_frame;
+  struct call_site *call_site;
+  int iparams;
+  /* Initialize it just to avoid a GCC false warning.  */
+  struct call_site_parameter *parameter = NULL;
+  CORE_ADDR target_addr;
+
+  while (get_frame_type (frame) == INLINE_FRAME)
+    {
+      frame = get_prev_frame (frame);
+      gdb_assert (frame != NULL);
+    }
+
+  func_addr = get_frame_func (frame);
+  gdbarch = get_frame_arch (frame);
+  caller_frame = get_prev_frame (frame);
+  if (gdbarch != frame_unwind_arch (frame))
+    {
+      struct bound_minimal_symbol msym
+	= lookup_minimal_symbol_by_pc (func_addr);
+      struct gdbarch *caller_gdbarch = frame_unwind_arch (frame);
+
+      throw_error (NO_ENTRY_VALUE_ERROR,
+		   _("DW_OP_entry_value resolving callee gdbarch %s "
+		     "(of %s (%s)) does not match caller gdbarch %s"),
+		   gdbarch_bfd_arch_info (gdbarch)->printable_name,
+		   paddress (gdbarch, func_addr),
+		   (msym.minsym == NULL ? "???"
+		    : msym.minsym->print_name ()),
+		   gdbarch_bfd_arch_info (caller_gdbarch)->printable_name);
+    }
+
+  if (caller_frame == NULL)
+    {
+      struct bound_minimal_symbol msym
+	= lookup_minimal_symbol_by_pc (func_addr);
+
+      throw_error (NO_ENTRY_VALUE_ERROR, _("DW_OP_entry_value resolving "
+					   "requires caller of %s (%s)"),
+		   paddress (gdbarch, func_addr),
+		   (msym.minsym == NULL ? "???"
+		    : msym.minsym->print_name ()));
+    }
+  caller_pc = get_frame_pc (caller_frame);
+  call_site = call_site_for_pc (gdbarch, caller_pc);
+
+  target_addr = call_site_to_target_addr (gdbarch, call_site, caller_frame);
+  if (target_addr != func_addr)
+    {
+      struct minimal_symbol *target_msym, *func_msym;
+
+      target_msym = lookup_minimal_symbol_by_pc (target_addr).minsym;
+      func_msym = lookup_minimal_symbol_by_pc (func_addr).minsym;
+      throw_error (NO_ENTRY_VALUE_ERROR,
+		   _("DW_OP_entry_value resolving expects callee %s at %s "
+		     "but the called frame is for %s at %s"),
+		   (target_msym == NULL ? "???"
+					: target_msym->print_name ()),
+		   paddress (gdbarch, target_addr),
+		   func_msym == NULL ? "???" : func_msym->print_name (),
+		   paddress (gdbarch, func_addr));
+    }
+
+  /* No entry value based parameters would be reliable if this function can
+     call itself via tail calls.  */
+  func_verify_no_selftailcall (gdbarch, func_addr);
+
+  for (iparams = 0; iparams < call_site->parameter_count; iparams++)
+    {
+      parameter = &call_site->parameter[iparams];
+      if (call_site_parameter_matches (parameter, kind, kind_u))
+	break;
+    }
+  if (iparams == call_site->parameter_count)
+    {
+      struct minimal_symbol *msym
+	= lookup_minimal_symbol_by_pc (caller_pc).minsym;
+
+      /* DW_TAG_call_site_parameter will be missing just if GCC could not
+	 determine its value.  */
+      throw_error (NO_ENTRY_VALUE_ERROR, _("Cannot find matching parameter "
+					   "at DW_TAG_call_site %s at %s"),
+		   paddress (gdbarch, caller_pc),
+		   msym == NULL ? "???" : msym->print_name ()); 
+    }
+
+  *per_cu_return = call_site->per_cu;
+  *per_objfile_return = call_site->per_objfile;
+  return parameter;
+}
+
+/* Return value for PARAMETER matching DEREF_SIZE.  If DEREF_SIZE is -1, return
+   the normal DW_AT_call_value block.  Otherwise return the
+   DW_AT_call_data_value (dereferenced) block.
+
+   TYPE and CALLER_FRAME specify how to evaluate the DWARF block into returned
+   struct value.
+
+   Function always returns non-NULL, non-optimized out value.  It throws
+   NO_ENTRY_VALUE_ERROR if it cannot resolve the value for any reason.  */
+
+static struct value *
+dwarf_entry_parameter_to_value (struct call_site_parameter *parameter,
+				CORE_ADDR deref_size, struct type *type,
+				struct frame_info *caller_frame,
+				dwarf2_per_cu_data *per_cu,
+				dwarf2_per_objfile *per_objfile)
+{
+  const gdb_byte *data_src;
+  gdb_byte *data;
+  size_t size;
+
+  data_src = deref_size == -1 ? parameter->value : parameter->data_value;
+  size = deref_size == -1 ? parameter->value_size : parameter->data_value_size;
+
+  /* DEREF_SIZE size is not verified here.  */
+  if (data_src == NULL)
+    throw_error (NO_ENTRY_VALUE_ERROR,
+		 _("Cannot resolve DW_AT_call_data_value"));
+
+  /* DW_AT_call_value is a DWARF expression, not a DWARF
+     location.  Postprocessing of DWARF_VALUE_MEMORY would lose the type from
+     DWARF block.  */
+  data = (gdb_byte *) alloca (size + 1);
+  memcpy (data, data_src, size);
+  data[size] = DW_OP_stack_value;
+
+  return dwarf2_evaluate_loc_desc (type, caller_frame, data, size + 1, per_cu,
+				   per_objfile);
+}
+
+/* VALUE must be of type lval_computed with entry_data_value_funcs.  Perform
+   the indirect method on it, that is use its stored target value, the sole
+   purpose of entry_data_value_funcs..  */
+
+static struct value *
+entry_data_value_coerce_ref (const struct value *value)
+{
+  struct type *checked_type = check_typedef (value_type (value));
+  struct value *target_val;
+
+  if (!TYPE_IS_REFERENCE (checked_type))
+    return NULL;
+
+  target_val = (struct value *) value_computed_closure (value);
+  value_incref (target_val);
+  return target_val;
+}
+
+/* Implement copy_closure.  */
+
+static void *
+entry_data_value_copy_closure (const struct value *v)
+{
+  struct value *target_val = (struct value *) value_computed_closure (v);
+
+  value_incref (target_val);
+  return target_val;
+}
+
+/* Implement free_closure.  */
+
+static void
+entry_data_value_free_closure (struct value *v)
+{
+  struct value *target_val = (struct value *) value_computed_closure (v);
+
+  value_decref (target_val);
+}
+
+/* Vector for methods for an entry value reference where the referenced value
+   is stored in the caller.  On the first dereference use
+   DW_AT_call_data_value in the caller.  */
+
+static const struct lval_funcs entry_data_value_funcs =
+{
+  NULL,	/* read */
+  NULL,	/* write */
+  NULL,	/* indirect */
+  entry_data_value_coerce_ref,
+  NULL,	/* check_synthetic_pointer */
+  entry_data_value_copy_closure,
+  entry_data_value_free_closure
+};
+
+/* Read parameter of TYPE at (callee) FRAME's function entry.  KIND and KIND_U
+   are used to match DW_AT_location at the caller's
+   DW_TAG_call_site_parameter.
+
+   Function always returns non-NULL value.  It throws NO_ENTRY_VALUE_ERROR if it
+   cannot resolve the parameter for any reason.  */
+
+static struct value *
+value_of_dwarf_reg_entry (struct type *type, struct frame_info *frame,
+			  enum call_site_parameter_kind kind,
+			  union call_site_parameter_u kind_u)
+{
+  struct type *checked_type = check_typedef (type);
+  struct type *target_type = TYPE_TARGET_TYPE (checked_type);
+  struct frame_info *caller_frame = get_prev_frame (frame);
+  struct value *outer_val, *target_val, *val;
+  struct call_site_parameter *parameter;
+  dwarf2_per_cu_data *caller_per_cu;
+  dwarf2_per_objfile *caller_per_objfile;
+
+  parameter = dwarf_expr_reg_to_entry_parameter (frame, kind, kind_u,
+						 &caller_per_cu,
+						 &caller_per_objfile);
+
+  outer_val = dwarf_entry_parameter_to_value (parameter, -1 /* deref_size */,
+					      type, caller_frame,
+					      caller_per_cu,
+					      caller_per_objfile);
+
+  /* Check if DW_AT_call_data_value cannot be used.  If it should be
+     used and it is not available do not fall back to OUTER_VAL - dereferencing
+     TYPE_CODE_REF with non-entry data value would give current value - not the
+     entry value.  */
+
+  if (!TYPE_IS_REFERENCE (checked_type)
+      || TYPE_TARGET_TYPE (checked_type) == NULL)
+    return outer_val;
+
+  target_val = dwarf_entry_parameter_to_value (parameter,
+					       TYPE_LENGTH (target_type),
+					       target_type, caller_frame,
+					       caller_per_cu,
+					       caller_per_objfile);
+
+  val = allocate_computed_value (type, &entry_data_value_funcs,
+				 release_value (target_val).release ());
+
+  /* Copy the referencing pointer to the new computed value.  */
+  memcpy (value_contents_raw (val), value_contents_raw (outer_val),
+	  TYPE_LENGTH (checked_type));
+  set_value_lazy (val, 0);
+
+  return val;
+}
+
+/* Read parameter of TYPE at (callee) FRAME's function entry.  DATA and
+   SIZE are DWARF block used to match DW_AT_location at the caller's
+   DW_TAG_call_site_parameter.
+
+   Function always returns non-NULL value.  It throws NO_ENTRY_VALUE_ERROR if it
+   cannot resolve the parameter for any reason.  */
+
+static struct value *
+value_of_dwarf_block_entry (struct type *type, struct frame_info *frame,
+			    const gdb_byte *block, size_t block_len)
+{
+  union call_site_parameter_u kind_u;
+
+  kind_u.dwarf_reg = dwarf_block_to_dwarf_reg (block, block + block_len);
+  if (kind_u.dwarf_reg != -1)
+    return value_of_dwarf_reg_entry (type, frame, CALL_SITE_PARAMETER_DWARF_REG,
+				     kind_u);
+
+  if (dwarf_block_to_fb_offset (block, block + block_len, &kind_u.fb_offset))
+    return value_of_dwarf_reg_entry (type, frame, CALL_SITE_PARAMETER_FB_OFFSET,
+                                     kind_u);
+
+  /* This can normally happen - throw NO_ENTRY_VALUE_ERROR to get the message
+     suppressed during normal operation.  The expression can be arbitrary if
+     there is no caller-callee entry value binding expected.  */
+  throw_error (NO_ENTRY_VALUE_ERROR,
+	       _("DWARF-2 expression error: DW_OP_entry_value is supported "
+		 "only for single DW_OP_reg* or for DW_OP_fbreg(*)"));
+}
+
+struct piece_closure
+{
+  /* Reference count.  */
+  int refc = 0;
+
+  /* The objfile from which this closure's expression came.  */
+  dwarf2_per_objfile *per_objfile = nullptr;
+
+  /* The CU from which this closure's expression came.  */
+  struct dwarf2_per_cu_data *per_cu = NULL;
+
+  /* The pieces describing this variable.  */
+  std::vector<dwarf_expr_piece> pieces;
+
+  /* Frame ID of frame to which a register value is relative, used
+     only by DWARF_VALUE_REGISTER.  */
+  struct frame_id frame_id;
+};
+
+/* Allocate a closure for a value formed from separately-described
+   PIECES.  */
+
+static struct piece_closure *
+allocate_piece_closure (dwarf2_per_cu_data *per_cu,
+			dwarf2_per_objfile *per_objfile,
+			std::vector<dwarf_expr_piece> &&pieces,
+			struct frame_info *frame)
+{
+  struct piece_closure *c = new piece_closure;
+
+  c->refc = 1;
+  /* We must capture this here due to sharing of DWARF state.  */
+  c->per_objfile = per_objfile;
+  c->per_cu = per_cu;
+  c->pieces = std::move (pieces);
+  if (frame == NULL)
+    c->frame_id = null_frame_id;
+  else
+    c->frame_id = get_frame_id (frame);
+
+  for (dwarf_expr_piece &piece : c->pieces)
+    if (piece.location == DWARF_VALUE_STACK)
+      value_incref (piece.v.value);
+
+  return c;
+}
+
+/* Return the number of bytes overlapping a contiguous chunk of N_BITS
+   bits whose first bit is located at bit offset START.  */
+
+static size_t
+bits_to_bytes (ULONGEST start, ULONGEST n_bits)
+{
+  return (start % 8 + n_bits + 7) / 8;
+}
+
+/* Read or write a pieced value V.  If FROM != NULL, operate in "write
+   mode": copy FROM into the pieces comprising V.  If FROM == NULL,
+   operate in "read mode": fetch the contents of the (lazy) value V by
+   composing it from its pieces.  */
+
+static void
+rw_pieced_value (struct value *v, struct value *from)
+{
+  int i;
+  LONGEST offset = 0, max_offset;
+  ULONGEST bits_to_skip;
+  gdb_byte *v_contents;
+  const gdb_byte *from_contents;
+  struct piece_closure *c
+    = (struct piece_closure *) value_computed_closure (v);
+  gdb::byte_vector buffer;
+  bool bits_big_endian = type_byte_order (value_type (v)) == BFD_ENDIAN_BIG;
+
+  if (from != NULL)
+    {
+      from_contents = value_contents (from);
+      v_contents = NULL;
+    }
+  else
+    {
+      if (value_type (v) != value_enclosing_type (v))
+	internal_error (__FILE__, __LINE__,
+			_("Should not be able to create a lazy value with "
+			  "an enclosing type"));
+      v_contents = value_contents_raw (v);
+      from_contents = NULL;
+    }
+
+  bits_to_skip = 8 * value_offset (v);
+  if (value_bitsize (v))
+    {
+      bits_to_skip += (8 * value_offset (value_parent (v))
+		       + value_bitpos (v));
+      if (from != NULL
+	  && (type_byte_order (value_type (from))
+	      == BFD_ENDIAN_BIG))
+	{
+	  /* Use the least significant bits of FROM.  */
+	  max_offset = 8 * TYPE_LENGTH (value_type (from));
+	  offset = max_offset - value_bitsize (v);
+	}
+      else
+	max_offset = value_bitsize (v);
+    }
+  else
+    max_offset = 8 * TYPE_LENGTH (value_type (v));
+
+  /* Advance to the first non-skipped piece.  */
+  for (i = 0; i < c->pieces.size () && bits_to_skip >= c->pieces[i].size; i++)
+    bits_to_skip -= c->pieces[i].size;
+
+  for (; i < c->pieces.size () && offset < max_offset; i++)
+    {
+      struct dwarf_expr_piece *p = &c->pieces[i];
+      size_t this_size_bits, this_size;
+
+      this_size_bits = p->size - bits_to_skip;
+      if (this_size_bits > max_offset - offset)
+	this_size_bits = max_offset - offset;
+
+      switch (p->location)
+	{
+	case DWARF_VALUE_REGISTER:
+	  {
+	    struct frame_info *frame = frame_find_by_id (c->frame_id);
+	    struct gdbarch *arch = get_frame_arch (frame);
+	    int gdb_regnum = dwarf_reg_to_regnum_or_error (arch, p->v.regno);
+	    ULONGEST reg_bits = 8 * register_size (arch, gdb_regnum);
+	    int optim, unavail;
+
+	    if (gdbarch_byte_order (arch) == BFD_ENDIAN_BIG
+		&& p->offset + p->size < reg_bits)
+	      {
+		/* Big-endian, and we want less than full size.  */
+		bits_to_skip += reg_bits - (p->offset + p->size);
+	      }
+	    else
+	      bits_to_skip += p->offset;
+
+	    this_size = bits_to_bytes (bits_to_skip, this_size_bits);
+	    buffer.resize (this_size);
+
+	    if (from == NULL)
+	      {
+		/* Read mode.  */
+		if (!get_frame_register_bytes (frame, gdb_regnum,
+					       bits_to_skip / 8,
+					       this_size, buffer.data (),
+					       &optim, &unavail))
+		  {
+		    if (optim)
+		      mark_value_bits_optimized_out (v, offset,
+						     this_size_bits);
+		    if (unavail)
+		      mark_value_bits_unavailable (v, offset,
+						   this_size_bits);
+		    break;
+		  }
+
+		copy_bitwise (v_contents, offset,
+			      buffer.data (), bits_to_skip % 8,
+			      this_size_bits, bits_big_endian);
+	      }
+	    else
+	      {
+		/* Write mode.  */
+		if (bits_to_skip % 8 != 0 || this_size_bits % 8 != 0)
+		  {
+		    /* Data is copied non-byte-aligned into the register.
+		       Need some bits from original register value.  */
+		    get_frame_register_bytes (frame, gdb_regnum,
+					      bits_to_skip / 8,
+					      this_size, buffer.data (),
+					      &optim, &unavail);
+		    if (optim)
+		      throw_error (OPTIMIZED_OUT_ERROR,
+				   _("Can't do read-modify-write to "
+				     "update bitfield; containing word "
+				     "has been optimized out"));
+		    if (unavail)
+		      throw_error (NOT_AVAILABLE_ERROR,
+				   _("Can't do read-modify-write to "
+				     "update bitfield; containing word "
+				     "is unavailable"));
+		  }
+
+		copy_bitwise (buffer.data (), bits_to_skip % 8,
+			      from_contents, offset,
+			      this_size_bits, bits_big_endian);
+		put_frame_register_bytes (frame, gdb_regnum,
+					  bits_to_skip / 8,
+					  this_size, buffer.data ());
+	      }
+	  }
+	  break;
+
+	case DWARF_VALUE_MEMORY:
+	  {
+	    bits_to_skip += p->offset;
+
+	    CORE_ADDR start_addr = p->v.mem.addr + bits_to_skip / 8;
+
+	    if (bits_to_skip % 8 == 0 && this_size_bits % 8 == 0
+		&& offset % 8 == 0)
+	      {
+		/* Everything is byte-aligned; no buffer needed.  */
+		if (from != NULL)
+		  write_memory_with_notification (start_addr,
+						  (from_contents
+						   + offset / 8),
+						  this_size_bits / 8);
+		else
+		  read_value_memory (v, offset,
+				     p->v.mem.in_stack_memory,
+				     p->v.mem.addr + bits_to_skip / 8,
+				     v_contents + offset / 8,
+				     this_size_bits / 8);
+		break;
+	      }
+
+	    this_size = bits_to_bytes (bits_to_skip, this_size_bits);
+	    buffer.resize (this_size);
+
+	    if (from == NULL)
+	      {
+		/* Read mode.  */
+		read_value_memory (v, offset,
+				   p->v.mem.in_stack_memory,
+				   p->v.mem.addr + bits_to_skip / 8,
+				   buffer.data (), this_size);
+		copy_bitwise (v_contents, offset,
+			      buffer.data (), bits_to_skip % 8,
+			      this_size_bits, bits_big_endian);
+	      }
+	    else
+	      {
+		/* Write mode.  */
+		if (bits_to_skip % 8 != 0 || this_size_bits % 8 != 0)
+		  {
+		    if (this_size <= 8)
+		      {
+			/* Perform a single read for small sizes.  */
+			read_memory (start_addr, buffer.data (),
+				     this_size);
+		      }
+		    else
+		      {
+			/* Only the first and last bytes can possibly have
+			   any bits reused.  */
+			read_memory (start_addr, buffer.data (), 1);
+			read_memory (start_addr + this_size - 1,
+				     &buffer[this_size - 1], 1);
+		      }
+		  }
+
+		copy_bitwise (buffer.data (), bits_to_skip % 8,
+			      from_contents, offset,
+			      this_size_bits, bits_big_endian);
+		write_memory_with_notification (start_addr,
+						buffer.data (),
+						this_size);
+	      }
+	  }
+	  break;
+
+	case DWARF_VALUE_STACK:
+	  {
+	    if (from != NULL)
+	      {
+		mark_value_bits_optimized_out (v, offset, this_size_bits);
+		break;
+	      }
+
+	    gdbarch *objfile_gdbarch = c->per_objfile->objfile->arch ();
+	    ULONGEST stack_value_size_bits
+	      = 8 * TYPE_LENGTH (value_type (p->v.value));
+
+	    /* Use zeroes if piece reaches beyond stack value.  */
+	    if (p->offset + p->size > stack_value_size_bits)
+	      break;
+
+	    /* Piece is anchored at least significant bit end.  */
+	    if (gdbarch_byte_order (objfile_gdbarch) == BFD_ENDIAN_BIG)
+	      bits_to_skip += stack_value_size_bits - p->offset - p->size;
+	    else
+	      bits_to_skip += p->offset;
+
+	    copy_bitwise (v_contents, offset,
+			  value_contents_all (p->v.value),
+			  bits_to_skip,
+			  this_size_bits, bits_big_endian);
+	  }
+	  break;
+
+	case DWARF_VALUE_LITERAL:
+	  {
+	    if (from != NULL)
+	      {
+		mark_value_bits_optimized_out (v, offset, this_size_bits);
+		break;
+	      }
+
+	    ULONGEST literal_size_bits = 8 * p->v.literal.length;
+	    size_t n = this_size_bits;
+
+	    /* Cut off at the end of the implicit value.  */
+	    bits_to_skip += p->offset;
+	    if (bits_to_skip >= literal_size_bits)
+	      break;
+	    if (n > literal_size_bits - bits_to_skip)
+	      n = literal_size_bits - bits_to_skip;
+
+	    copy_bitwise (v_contents, offset,
+			  p->v.literal.data, bits_to_skip,
+			  n, bits_big_endian);
+	  }
+	  break;
+
+	case DWARF_VALUE_IMPLICIT_POINTER:
+	    if (from != NULL)
+	      {
+		mark_value_bits_optimized_out (v, offset, this_size_bits);
+		break;
+	      }
+
+	  /* These bits show up as zeros -- but do not cause the value to
+	     be considered optimized-out.  */
+	  break;
+
+	case DWARF_VALUE_OPTIMIZED_OUT:
+	  mark_value_bits_optimized_out (v, offset, this_size_bits);
+	  break;
+
+	default:
+	  internal_error (__FILE__, __LINE__, _("invalid location type"));
+	}
+
+      offset += this_size_bits;
+      bits_to_skip = 0;
+    }
+}
+
+
+static void
+read_pieced_value (struct value *v)
+{
+  rw_pieced_value (v, NULL);
+}
+
+static void
+write_pieced_value (struct value *to, struct value *from)
+{
+  rw_pieced_value (to, from);
+}
+
+/* An implementation of an lval_funcs method to see whether a value is
+   a synthetic pointer.  */
+
+static int
+check_pieced_synthetic_pointer (const struct value *value, LONGEST bit_offset,
+				int bit_length)
+{
+  struct piece_closure *c
+    = (struct piece_closure *) value_computed_closure (value);
+  int i;
+
+  bit_offset += 8 * value_offset (value);
+  if (value_bitsize (value))
+    bit_offset += value_bitpos (value);
+
+  for (i = 0; i < c->pieces.size () && bit_length > 0; i++)
+    {
+      struct dwarf_expr_piece *p = &c->pieces[i];
+      size_t this_size_bits = p->size;
+
+      if (bit_offset > 0)
+	{
+	  if (bit_offset >= this_size_bits)
+	    {
+	      bit_offset -= this_size_bits;
+	      continue;
+	    }
+
+	  bit_length -= this_size_bits - bit_offset;
+	  bit_offset = 0;
+	}
+      else
+	bit_length -= this_size_bits;
+
+      if (p->location != DWARF_VALUE_IMPLICIT_POINTER)
+	return 0;
+    }
+
+  return 1;
+}
+
+/* Fetch a DW_AT_const_value through a synthetic pointer.  */
+
+static struct value *
+fetch_const_value_from_synthetic_pointer (sect_offset die, LONGEST byte_offset,
+					  dwarf2_per_cu_data *per_cu,
+					  dwarf2_per_objfile *per_objfile,
+					  struct type *type)
+{
+  struct value *result = NULL;
+  const gdb_byte *bytes;
+  LONGEST len;
+
+  auto_obstack temp_obstack;
+  bytes = dwarf2_fetch_constant_bytes (die, per_cu, per_objfile,
+				       &temp_obstack, &len);
+
+  if (bytes != NULL)
+    {
+      if (byte_offset >= 0
+	  && byte_offset + TYPE_LENGTH (TYPE_TARGET_TYPE (type)) <= len)
+	{
+	  bytes += byte_offset;
+	  result = value_from_contents (TYPE_TARGET_TYPE (type), bytes);
+	}
+      else
+	invalid_synthetic_pointer ();
+    }
+  else
+    result = allocate_optimized_out_value (TYPE_TARGET_TYPE (type));
+
+  return result;
+}
+
+/* Fetch the value pointed to by a synthetic pointer.  */
+
+static struct value *
+indirect_synthetic_pointer (sect_offset die, LONGEST byte_offset,
+			    dwarf2_per_cu_data *per_cu,
+			    dwarf2_per_objfile *per_objfile,
+			    struct frame_info *frame, struct type *type,
+			    bool resolve_abstract_p)
+{
+  /* Fetch the location expression of the DIE we're pointing to.  */
+  auto get_frame_address_in_block_wrapper = [frame] ()
+    {
+     return get_frame_address_in_block (frame);
+    };
+  struct dwarf2_locexpr_baton baton
+    = dwarf2_fetch_die_loc_sect_off (die, per_cu, per_objfile,
+				     get_frame_address_in_block_wrapper,
+				     resolve_abstract_p);
+
+  /* Get type of pointed-to DIE.  */
+  struct type *orig_type = dwarf2_fetch_die_type_sect_off (die, per_cu,
+							   per_objfile);
+  if (orig_type == NULL)
+    invalid_synthetic_pointer ();
+
+  /* If pointed-to DIE has a DW_AT_location, evaluate it and return the
+     resulting value.  Otherwise, it may have a DW_AT_const_value instead,
+     or it may've been optimized out.  */
+  if (baton.data != NULL)
+    return dwarf2_evaluate_loc_desc_full (orig_type, frame, baton.data,
+					  baton.size, baton.per_cu,
+					  baton.per_objfile,
+					  TYPE_TARGET_TYPE (type),
+					  byte_offset);
+  else
+    return fetch_const_value_from_synthetic_pointer (die, byte_offset, per_cu,
+						     per_objfile, type);
+}
+
+/* An implementation of an lval_funcs method to indirect through a
+   pointer.  This handles the synthetic pointer case when needed.  */
+
+static struct value *
+indirect_pieced_value (struct value *value)
+{
+  struct piece_closure *c
+    = (struct piece_closure *) value_computed_closure (value);
+  struct type *type;
+  struct frame_info *frame;
+  int i, bit_length;
+  LONGEST bit_offset;
+  struct dwarf_expr_piece *piece = NULL;
+  LONGEST byte_offset;
+  enum bfd_endian byte_order;
+
+  type = check_typedef (value_type (value));
+  if (type->code () != TYPE_CODE_PTR)
+    return NULL;
+
+  bit_length = 8 * TYPE_LENGTH (type);
+  bit_offset = 8 * value_offset (value);
+  if (value_bitsize (value))
+    bit_offset += value_bitpos (value);
+
+  for (i = 0; i < c->pieces.size () && bit_length > 0; i++)
+    {
+      struct dwarf_expr_piece *p = &c->pieces[i];
+      size_t this_size_bits = p->size;
+
+      if (bit_offset > 0)
+	{
+	  if (bit_offset >= this_size_bits)
+	    {
+	      bit_offset -= this_size_bits;
+	      continue;
+	    }
+
+	  bit_length -= this_size_bits - bit_offset;
+	  bit_offset = 0;
+	}
+      else
+	bit_length -= this_size_bits;
+
+      if (p->location != DWARF_VALUE_IMPLICIT_POINTER)
+	return NULL;
+
+      if (bit_length != 0)
+	error (_("Invalid use of DW_OP_implicit_pointer"));
+
+      piece = p;
+      break;
+    }
+
+  gdb_assert (piece != NULL);
+  frame = get_selected_frame (_("No frame selected."));
+
+  /* This is an offset requested by GDB, such as value subscripts.
+     However, due to how synthetic pointers are implemented, this is
+     always presented to us as a pointer type.  This means we have to
+     sign-extend it manually as appropriate.  Use raw
+     extract_signed_integer directly rather than value_as_address and
+     sign extend afterwards on architectures that would need it
+     (mostly everywhere except MIPS, which has signed addresses) as
+     the later would go through gdbarch_pointer_to_address and thus
+     return a CORE_ADDR with high bits set on architectures that
+     encode address spaces and other things in CORE_ADDR.  */
+  byte_order = gdbarch_byte_order (get_frame_arch (frame));
+  byte_offset = extract_signed_integer (value_contents (value),
+					TYPE_LENGTH (type), byte_order);
+  byte_offset += piece->v.ptr.offset;
+
+  return indirect_synthetic_pointer (piece->v.ptr.die_sect_off,
+				     byte_offset, c->per_cu,
+				     c->per_objfile, frame, type);
+}
+
+/* Implementation of the coerce_ref method of lval_funcs for synthetic C++
+   references.  */
+
+static struct value *
+coerce_pieced_ref (const struct value *value)
+{
+  struct type *type = check_typedef (value_type (value));
+
+  if (value_bits_synthetic_pointer (value, value_embedded_offset (value),
+				    TARGET_CHAR_BIT * TYPE_LENGTH (type)))
+    {
+      const struct piece_closure *closure
+	= (struct piece_closure *) value_computed_closure (value);
+      struct frame_info *frame
+	= get_selected_frame (_("No frame selected."));
+
+      /* gdb represents synthetic pointers as pieced values with a single
+	 piece.  */
+      gdb_assert (closure != NULL);
+      gdb_assert (closure->pieces.size () == 1);
+
+      return indirect_synthetic_pointer
+	(closure->pieces[0].v.ptr.die_sect_off,
+	 closure->pieces[0].v.ptr.offset,
+	 closure->per_cu, closure->per_objfile, frame, type);
+    }
+  else
+    {
+      /* Else: not a synthetic reference; do nothing.  */
+      return NULL;
+    }
+}
+
+static void *
+copy_pieced_value_closure (const struct value *v)
+{
+  struct piece_closure *c
+    = (struct piece_closure *) value_computed_closure (v);
+  
+  ++c->refc;
+  return c;
+}
+
+static void
+free_pieced_value_closure (struct value *v)
+{
+  struct piece_closure *c
+    = (struct piece_closure *) value_computed_closure (v);
+
+  --c->refc;
+  if (c->refc == 0)
+    {
+      for (dwarf_expr_piece &p : c->pieces)
+	if (p.location == DWARF_VALUE_STACK)
+	  value_decref (p.v.value);
+
+      delete c;
+    }
+}
+
+/* Functions for accessing a variable described by DW_OP_piece.  */
+static const struct lval_funcs pieced_value_funcs = {
+  read_pieced_value,
+  write_pieced_value,
+  indirect_pieced_value,
+  coerce_pieced_ref,
+  check_pieced_synthetic_pointer,
+  copy_pieced_value_closure,
+  free_pieced_value_closure
+};
+
+/* Evaluate a location description, starting at DATA and with length
+   SIZE, to find the current location of variable of TYPE in the
+   context of FRAME.  If SUBOBJ_TYPE is non-NULL, return instead the
+   location of the subobject of type SUBOBJ_TYPE at byte offset
+   SUBOBJ_BYTE_OFFSET within the variable of type TYPE.  */
+
+static struct value *
+dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
+			       const gdb_byte *data, size_t size,
+			       dwarf2_per_cu_data *per_cu,
+			       dwarf2_per_objfile *per_objfile,
+			       struct type *subobj_type,
+			       LONGEST subobj_byte_offset)
+{
+  struct value *retval;
+
+  if (subobj_type == NULL)
+    {
+      subobj_type = type;
+      subobj_byte_offset = 0;
+    }
+  else if (subobj_byte_offset < 0)
+    invalid_synthetic_pointer ();
+
+  if (size == 0)
+    return allocate_optimized_out_value (subobj_type);
+
+  dwarf_evaluate_loc_desc ctx (per_objfile);
+  ctx.frame = frame;
+  ctx.per_cu = per_cu;
+  ctx.obj_address = 0;
+
+  scoped_value_mark free_values;
+
+  ctx.gdbarch = per_objfile->objfile->arch ();
+  ctx.addr_size = per_cu->addr_size ();
+  ctx.ref_addr_size = per_cu->ref_addr_size ();
+
+  try
+    {
+      ctx.eval (data, size);
+    }
+  catch (const gdb_exception_error &ex)
+    {
+      if (ex.error == NOT_AVAILABLE_ERROR)
+	{
+	  free_values.free_to_mark ();
+	  retval = allocate_value (subobj_type);
+	  mark_value_bytes_unavailable (retval, 0,
+					TYPE_LENGTH (subobj_type));
+	  return retval;
+	}
+      else if (ex.error == NO_ENTRY_VALUE_ERROR)
+	{
+	  if (entry_values_debug)
+	    exception_print (gdb_stdout, ex);
+	  free_values.free_to_mark ();
+	  return allocate_optimized_out_value (subobj_type);
+	}
+      else
+	throw;
+    }
+
+  if (ctx.pieces.size () > 0)
+    {
+      struct piece_closure *c;
+      ULONGEST bit_size = 0;
+
+      for (dwarf_expr_piece &piece : ctx.pieces)
+	bit_size += piece.size;
+      /* Complain if the expression is larger than the size of the
+	 outer type.  */
+      if (bit_size > 8 * TYPE_LENGTH (type))
+	invalid_synthetic_pointer ();
+
+      c = allocate_piece_closure (per_cu, per_objfile, std::move (ctx.pieces),
+				  frame);
+      /* We must clean up the value chain after creating the piece
+	 closure but before allocating the result.  */
+      free_values.free_to_mark ();
+      retval = allocate_computed_value (subobj_type,
+					&pieced_value_funcs, c);
+      set_value_offset (retval, subobj_byte_offset);
+    }
+  else
+    {
+      switch (ctx.location)
+	{
+	case DWARF_VALUE_REGISTER:
+	  {
+	    struct gdbarch *arch = get_frame_arch (frame);
+	    int dwarf_regnum
+	      = longest_to_int (value_as_long (ctx.fetch (0)));
+	    int gdb_regnum = dwarf_reg_to_regnum_or_error (arch, dwarf_regnum);
+
+	    if (subobj_byte_offset != 0)
+	      error (_("cannot use offset on synthetic pointer to register"));
+	    free_values.free_to_mark ();
+	    retval = value_from_register (subobj_type, gdb_regnum, frame);
+	    if (value_optimized_out (retval))
+	      {
+		struct value *tmp;
+
+		/* This means the register has undefined value / was
+		   not saved.  As we're computing the location of some
+		   variable etc. in the program, not a value for
+		   inspecting a register ($pc, $sp, etc.), return a
+		   generic optimized out value instead, so that we show
+		   <optimized out> instead of <not saved>.  */
+		tmp = allocate_value (subobj_type);
+		value_contents_copy (tmp, 0, retval, 0,
+				     TYPE_LENGTH (subobj_type));
+		retval = tmp;
+	      }
+	  }
+	  break;
+
+	case DWARF_VALUE_MEMORY:
+	  {
+	    struct type *ptr_type;
+	    CORE_ADDR address = ctx.fetch_address (0);
+	    bool in_stack_memory = ctx.fetch_in_stack_memory (0);
+
+	    /* DW_OP_deref_size (and possibly other operations too) may
+	       create a pointer instead of an address.  Ideally, the
+	       pointer to address conversion would be performed as part
+	       of those operations, but the type of the object to
+	       which the address refers is not known at the time of
+	       the operation.  Therefore, we do the conversion here
+	       since the type is readily available.  */
+
+	    switch (subobj_type->code ())
+	      {
+		case TYPE_CODE_FUNC:
+		case TYPE_CODE_METHOD:
+		  ptr_type = builtin_type (ctx.gdbarch)->builtin_func_ptr;
+		  break;
+		default:
+		  ptr_type = builtin_type (ctx.gdbarch)->builtin_data_ptr;
+		  break;
+	      }
+	    address = value_as_address (value_from_pointer (ptr_type, address));
+
+	    free_values.free_to_mark ();
+	    retval = value_at_lazy (subobj_type,
+				    address + subobj_byte_offset);
+	    if (in_stack_memory)
+	      set_value_stack (retval, 1);
+	  }
+	  break;
+
+	case DWARF_VALUE_STACK:
+	  {
+	    struct value *value = ctx.fetch (0);
+	    size_t n = TYPE_LENGTH (value_type (value));
+	    size_t len = TYPE_LENGTH (subobj_type);
+	    size_t max = TYPE_LENGTH (type);
+	    gdbarch *objfile_gdbarch = per_objfile->objfile->arch ();
+
+	    if (subobj_byte_offset + len > max)
+	      invalid_synthetic_pointer ();
+
+	    /* Preserve VALUE because we are going to free values back
+	       to the mark, but we still need the value contents
+	       below.  */
+	    value_ref_ptr value_holder = value_ref_ptr::new_reference (value);
+	    free_values.free_to_mark ();
+
+	    retval = allocate_value (subobj_type);
+
+	    /* The given offset is relative to the actual object.  */
+	    if (gdbarch_byte_order (objfile_gdbarch) == BFD_ENDIAN_BIG)
+	      subobj_byte_offset += n - max;
+
+	    memcpy (value_contents_raw (retval),
+		    value_contents_all (value) + subobj_byte_offset, len);
+	  }
+	  break;
+
+	case DWARF_VALUE_LITERAL:
+	  {
+	    bfd_byte *contents;
+	    size_t n = TYPE_LENGTH (subobj_type);
+
+	    if (subobj_byte_offset + n > ctx.len)
+	      invalid_synthetic_pointer ();
+
+	    free_values.free_to_mark ();
+	    retval = allocate_value (subobj_type);
+	    contents = value_contents_raw (retval);
+	    memcpy (contents, ctx.data + subobj_byte_offset, n);
+	  }
+	  break;
+
+	case DWARF_VALUE_OPTIMIZED_OUT:
+	  free_values.free_to_mark ();
+	  retval = allocate_optimized_out_value (subobj_type);
+	  break;
+
+	  /* DWARF_VALUE_IMPLICIT_POINTER was converted to a pieced
+	     operation by execute_stack_op.  */
+	case DWARF_VALUE_IMPLICIT_POINTER:
+	  /* DWARF_VALUE_OPTIMIZED_OUT can't occur in this context --
+	     it can only be encountered when making a piece.  */
+	default:
+	  internal_error (__FILE__, __LINE__, _("invalid location type"));
+	}
+    }
+
+  set_value_initialized (retval, ctx.initialized);
+
+  return retval;
+}
+
+/* The exported interface to dwarf2_evaluate_loc_desc_full; it always
+   passes 0 as the byte_offset.  */
+
+struct value *
+dwarf2_evaluate_loc_desc (struct type *type, struct frame_info *frame,
+			  const gdb_byte *data, size_t size,
+			  dwarf2_per_cu_data *per_cu,
+			  dwarf2_per_objfile *per_objfile)
+{
+  return dwarf2_evaluate_loc_desc_full (type, frame, data, size, per_cu,
+					per_objfile, NULL, 0);
+}
+
+/* A specialization of dwarf_evaluate_loc_desc that is used by
+   dwarf2_locexpr_baton_eval.  This subclass exists to handle the case
+   where a caller of dwarf2_locexpr_baton_eval passes in some data,
+   but with the address being 0.  In this situation, we arrange for
+   memory reads to come from the passed-in buffer.  */
+
+struct evaluate_for_locexpr_baton : public dwarf_evaluate_loc_desc
+{
+  evaluate_for_locexpr_baton (dwarf2_per_objfile *per_objfile)
+    : dwarf_evaluate_loc_desc (per_objfile)
+  {}
+
+  /* The data that was passed in.  */
+  gdb::array_view<const gdb_byte> data_view;
+
+  CORE_ADDR get_object_address () override
+  {
+    if (data_view.data () == nullptr && obj_address == 0)
+      error (_("Location address is not set."));
+    return obj_address;
+  }
+
+  void read_mem (gdb_byte *buf, CORE_ADDR addr, size_t len) override
+  {
+    if (len == 0)
+      return;
+
+    /* Prefer the passed-in memory, if it exists.  */
+    CORE_ADDR offset = addr - obj_address;
+    if (offset < data_view.size () && offset + len <= data_view.size ())
+      {
+	memcpy (buf, data_view.data (), len);
+	return;
+      }
+
+    read_memory (addr, buf, len);
+  }
+};
+
+/* Evaluates a dwarf expression and stores the result in VAL,
+   expecting that the dwarf expression only produces a single
+   CORE_ADDR.  FRAME is the frame in which the expression is
+   evaluated.  ADDR_STACK is a context (location of a variable) and
+   might be needed to evaluate the location expression.
+   PUSH_INITIAL_VALUE is true if the address (either from ADDR_STACK,
+   or the default of 0) should be pushed on the DWARF expression
+   evaluation stack before evaluating the expression; this is required
+   by certain forms of DWARF expression.  Returns 1 on success, 0
+   otherwise.  */
+
+static int
+dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton,
+			   struct frame_info *frame,
+			   const struct property_addr_info *addr_stack,
+			   CORE_ADDR *valp,
+			   bool push_initial_value)
+{
+  if (dlbaton == NULL || dlbaton->size == 0)
+    return 0;
+
+  dwarf2_per_objfile *per_objfile = dlbaton->per_objfile;
+  evaluate_for_locexpr_baton ctx (per_objfile);
+
+  ctx.frame = frame;
+  ctx.per_cu = dlbaton->per_cu;
+  if (addr_stack == nullptr)
+    ctx.obj_address = 0;
+  else
+    {
+      ctx.obj_address = addr_stack->addr;
+      ctx.data_view = addr_stack->valaddr;
+    }
+
+  ctx.gdbarch = per_objfile->objfile->arch ();
+  ctx.addr_size = dlbaton->per_cu->addr_size ();
+  ctx.ref_addr_size = dlbaton->per_cu->ref_addr_size ();
+
+  if (push_initial_value)
+    ctx.push_address (ctx.obj_address, false);
+
+  try
+    {
+      ctx.eval (dlbaton->data, dlbaton->size);
+    }
+  catch (const gdb_exception_error &ex)
+    {
+      if (ex.error == NOT_AVAILABLE_ERROR)
+	{
+	  return 0;
+	}
+      else if (ex.error == NO_ENTRY_VALUE_ERROR)
+	{
+	  if (entry_values_debug)
+	    exception_print (gdb_stdout, ex);
+	  return 0;
+	}
+      else
+	throw;
+    }
+
+  switch (ctx.location)
+    {
+    case DWARF_VALUE_REGISTER:
+    case DWARF_VALUE_MEMORY:
+    case DWARF_VALUE_STACK:
+      *valp = ctx.fetch_address (0);
+      if (ctx.location == DWARF_VALUE_REGISTER)
+	*valp = ctx.read_addr_from_reg (*valp);
+      return 1;
+    case DWARF_VALUE_LITERAL:
+      *valp = extract_signed_integer (ctx.data, ctx.len,
+				      gdbarch_byte_order (ctx.gdbarch));
+      return 1;
+      /* Unsupported dwarf values.  */
+    case DWARF_VALUE_OPTIMIZED_OUT:
+    case DWARF_VALUE_IMPLICIT_POINTER:
+      break;
+    }
+
+  return 0;
+}
+
+/* See dwarf2loc.h.  */
+
+bool
+dwarf2_evaluate_property (const struct dynamic_prop *prop,
+			  struct frame_info *frame,
+			  const struct property_addr_info *addr_stack,
+			  CORE_ADDR *value,
+			  bool push_initial_value)
+{
+  if (prop == NULL)
+    return false;
+
+  if (frame == NULL && has_stack_frames ())
+    frame = get_selected_frame (NULL);
+
+  switch (prop->kind ())
+    {
+    case PROP_LOCEXPR:
+      {
+	const struct dwarf2_property_baton *baton
+	  = (const struct dwarf2_property_baton *) prop->baton ();
+	gdb_assert (baton->property_type != NULL);
+
+	if (dwarf2_locexpr_baton_eval (&baton->locexpr, frame, addr_stack,
+				       value, push_initial_value))
+	  {
+	    if (baton->locexpr.is_reference)
+	      {
+		struct value *val = value_at (baton->property_type, *value);
+		*value = value_as_address (val);
+	      }
+	    else
+	      {
+		gdb_assert (baton->property_type != NULL);
+
+		struct type *type = check_typedef (baton->property_type);
+		if (TYPE_LENGTH (type) < sizeof (CORE_ADDR)
+		    && !TYPE_UNSIGNED (type))
+		  {
+		    /* If we have a valid return candidate and it's value
+		       is signed, we have to sign-extend the value because
+		       CORE_ADDR on 64bit machine has 8 bytes but address
+		       size of an 32bit application is bytes.  */
+		    const int addr_size
+		      = (baton->locexpr.per_cu->addr_size ()
+			 * TARGET_CHAR_BIT);
+		    const CORE_ADDR neg_mask
+		      = (~((CORE_ADDR) 0) <<  (addr_size - 1));
+
+		    /* Check if signed bit is set and sign-extend values.  */
+		    if (*value & neg_mask)
+		      *value |= neg_mask;
+		  }
+	      }
+	    return true;
+	  }
+      }
+      break;
+
+    case PROP_LOCLIST:
+      {
+	struct dwarf2_property_baton *baton
+	  = (struct dwarf2_property_baton *) prop->baton ();
+	CORE_ADDR pc;
+	const gdb_byte *data;
+	struct value *val;
+	size_t size;
+
+	if (frame == NULL
+	    || !get_frame_address_in_block_if_available (frame, &pc))
+	  return false;
+
+	data = dwarf2_find_location_expression (&baton->loclist, &size, pc);
+	if (data != NULL)
+	  {
+	    val = dwarf2_evaluate_loc_desc (baton->property_type, frame, data,
+					    size, baton->loclist.per_cu,
+					    baton->loclist.per_objfile);
+	    if (!value_optimized_out (val))
+	      {
+		*value = value_as_address (val);
+		return true;
+	      }
+	  }
+      }
+      break;
+
+    case PROP_CONST:
+      *value = prop->const_val ();
+      return true;
+
+    case PROP_ADDR_OFFSET:
+      {
+	struct dwarf2_property_baton *baton
+	  = (struct dwarf2_property_baton *) prop->baton ();
+	const struct property_addr_info *pinfo;
+	struct value *val;
+
+	for (pinfo = addr_stack; pinfo != NULL; pinfo = pinfo->next)
+	  {
+	    /* This approach lets us avoid checking the qualifiers.  */
+	    if (TYPE_MAIN_TYPE (pinfo->type)
+		== TYPE_MAIN_TYPE (baton->property_type))
+	      break;
+	  }
+	if (pinfo == NULL)
+	  error (_("cannot find reference address for offset property"));
+	if (pinfo->valaddr.data () != NULL)
+	  val = value_from_contents
+		  (baton->offset_info.type,
+		   pinfo->valaddr.data () + baton->offset_info.offset);
+	else
+	  val = value_at (baton->offset_info.type,
+			  pinfo->addr + baton->offset_info.offset);
+	*value = value_as_address (val);
+	return true;
+      }
+    }
+
+  return false;
+}
+
+/* See dwarf2loc.h.  */
+
+void
+dwarf2_compile_property_to_c (string_file *stream,
+			      const char *result_name,
+			      struct gdbarch *gdbarch,
+			      unsigned char *registers_used,
+			      const struct dynamic_prop *prop,
+			      CORE_ADDR pc,
+			      struct symbol *sym)
+{
+  struct dwarf2_property_baton *baton
+    = (struct dwarf2_property_baton *) prop->baton ();
+  const gdb_byte *data;
+  size_t size;
+  dwarf2_per_cu_data *per_cu;
+  dwarf2_per_objfile *per_objfile;
+
+  if (prop->kind () == PROP_LOCEXPR)
+    {
+      data = baton->locexpr.data;
+      size = baton->locexpr.size;
+      per_cu = baton->locexpr.per_cu;
+      per_objfile = baton->locexpr.per_objfile;
+    }
+  else
+    {
+      gdb_assert (prop->kind () == PROP_LOCLIST);
+
+      data = dwarf2_find_location_expression (&baton->loclist, &size, pc);
+      per_cu = baton->loclist.per_cu;
+      per_objfile = baton->loclist.per_objfile;
+    }
+
+  compile_dwarf_bounds_to_c (stream, result_name, prop, sym, pc,
+			     gdbarch, registers_used,
+			     per_cu->addr_size (),
+			     data, data + size, per_cu, per_objfile);
+}
+
+
+/* Helper functions and baton for dwarf2_loc_desc_get_symbol_read_needs.  */
+
+class symbol_needs_eval_context : public dwarf_expr_context
+{
+public:
+  symbol_needs_eval_context (dwarf2_per_objfile *per_objfile)
+    : dwarf_expr_context (per_objfile)
+  {}
+
+  enum symbol_needs_kind needs;
+  struct dwarf2_per_cu_data *per_cu;
+
+  /* Reads from registers do require a frame.  */
+  CORE_ADDR read_addr_from_reg (int regnum) override
+  {
+    needs = SYMBOL_NEEDS_FRAME;
+    return 1;
+  }
+
+  /* "get_reg_value" callback: Reads from registers do require a
+     frame.  */
+
+  struct value *get_reg_value (struct type *type, int regnum) override
+  {
+    needs = SYMBOL_NEEDS_FRAME;
+    return value_zero (type, not_lval);
+  }
+
+  /* Reads from memory do not require a frame.  */
+  void read_mem (gdb_byte *buf, CORE_ADDR addr, size_t len) override
+  {
+    memset (buf, 0, len);
+  }
+
+  /* Frame-relative accesses do require a frame.  */
+  void get_frame_base (const gdb_byte **start, size_t *length) override
+  {
+    static gdb_byte lit0 = DW_OP_lit0;
+
+    *start = &lit0;
+    *length = 1;
+
+    needs = SYMBOL_NEEDS_FRAME;
+  }
+
+  /* CFA accesses require a frame.  */
+  CORE_ADDR get_frame_cfa () override
+  {
+    needs = SYMBOL_NEEDS_FRAME;
+    return 1;
+  }
+
+  CORE_ADDR get_frame_pc () override
+  {
+    needs = SYMBOL_NEEDS_FRAME;
+    return 1;
+  }
+
+  /* Thread-local accesses require registers, but not a frame.  */
+  CORE_ADDR get_tls_address (CORE_ADDR offset) override
+  {
+    if (needs <= SYMBOL_NEEDS_REGISTERS)
+      needs = SYMBOL_NEEDS_REGISTERS;
+    return 1;
+  }
+
+  /* Helper interface of per_cu_dwarf_call for
+     dwarf2_loc_desc_get_symbol_read_needs.  */
+
+  void dwarf_call (cu_offset die_offset) override
+  {
+    per_cu_dwarf_call (this, die_offset, per_cu, per_objfile);
+  }
+
+  /* Helper interface of sect_variable_value for
+     dwarf2_loc_desc_get_symbol_read_needs.  */
+
+  struct value *dwarf_variable_value (sect_offset sect_off) override
+  {
+    return sect_variable_value (this, sect_off, per_cu, per_objfile);
+  }
+
+  /* DW_OP_entry_value accesses require a caller, therefore a
+     frame.  */
+
+  void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind,
+				   union call_site_parameter_u kind_u,
+				   int deref_size) override
+  {
+    needs = SYMBOL_NEEDS_FRAME;
+
+    /* The expression may require some stub values on DWARF stack.  */
+    push_address (0, 0);
+  }
+
+  /* DW_OP_addrx and DW_OP_GNU_addr_index doesn't require a frame.  */
+
+  CORE_ADDR get_addr_index (unsigned int index) override
+  {
+    /* Nothing to do.  */
+    return 1;
+  }
+
+  /* DW_OP_push_object_address has a frame already passed through.  */
+
+  CORE_ADDR get_object_address () override
+  {
+    /* Nothing to do.  */
+    return 1;
+  }
+};
+
+/* Compute the correct symbol_needs_kind value for the location
+   expression at DATA (length SIZE).  */
+
+static enum symbol_needs_kind
+dwarf2_loc_desc_get_symbol_read_needs (const gdb_byte *data, size_t size,
+				       dwarf2_per_cu_data *per_cu,
+				       dwarf2_per_objfile *per_objfile)
+{
+  scoped_value_mark free_values;
+
+  symbol_needs_eval_context ctx (per_objfile);
+
+  ctx.needs = SYMBOL_NEEDS_NONE;
+  ctx.per_cu = per_cu;
+  ctx.gdbarch = per_objfile->objfile->arch ();
+  ctx.addr_size = per_cu->addr_size ();
+  ctx.ref_addr_size = per_cu->ref_addr_size ();
+
+  ctx.eval (data, size);
+
+  bool in_reg = ctx.location == DWARF_VALUE_REGISTER;
+
+  /* If the location has several pieces, and any of them are in
+     registers, then we will need a frame to fetch them from.  */
+  for (dwarf_expr_piece &p : ctx.pieces)
+    if (p.location == DWARF_VALUE_REGISTER)
+      in_reg = true;
+
+  if (in_reg)
+    ctx.needs = SYMBOL_NEEDS_FRAME;
+
+  return ctx.needs;
+}
+
+/* A helper function that throws an unimplemented error mentioning a
+   given DWARF operator.  */
+
+static void ATTRIBUTE_NORETURN
+unimplemented (unsigned int op)
+{
+  const char *name = get_DW_OP_name (op);
+
+  if (name)
+    error (_("DWARF operator %s cannot be translated to an agent expression"),
+	   name);
+  else
+    error (_("Unknown DWARF operator 0x%02x cannot be translated "
+	     "to an agent expression"),
+	   op);
+}
+
+/* See dwarf2loc.h.
+
+   This is basically a wrapper on gdbarch_dwarf2_reg_to_regnum so that we
+   can issue a complaint, which is better than having every target's
+   implementation of dwarf2_reg_to_regnum do it.  */
+
+int
+dwarf_reg_to_regnum (struct gdbarch *arch, int dwarf_reg)
+{
+  int reg = gdbarch_dwarf2_reg_to_regnum (arch, dwarf_reg);
+
+  if (reg == -1)
+    {
+      complaint (_("bad DWARF register number %d"), dwarf_reg);
+    }
+  return reg;
+}
+
+/* Subroutine of dwarf_reg_to_regnum_or_error to simplify it.
+   Throw an error because DWARF_REG is bad.  */
+
+static void
+throw_bad_regnum_error (ULONGEST dwarf_reg)
+{
+  /* Still want to print -1 as "-1".
+     We *could* have int and ULONGEST versions of dwarf2_reg_to_regnum_or_error
+     but that's overkill for now.  */
+  if ((int) dwarf_reg == dwarf_reg)
+    error (_("Unable to access DWARF register number %d"), (int) dwarf_reg);
+  error (_("Unable to access DWARF register number %s"),
+	 pulongest (dwarf_reg));
+}
+
+/* See dwarf2loc.h.  */
+
+int
+dwarf_reg_to_regnum_or_error (struct gdbarch *arch, ULONGEST dwarf_reg)
+{
+  int reg;
+
+  if (dwarf_reg > INT_MAX)
+    throw_bad_regnum_error (dwarf_reg);
+  /* Yes, we will end up issuing a complaint and an error if DWARF_REG is
+     bad, but that's ok.  */
+  reg = dwarf_reg_to_regnum (arch, (int) dwarf_reg);
+  if (reg == -1)
+    throw_bad_regnum_error (dwarf_reg);
+  return reg;
+}
+
+/* A helper function that emits an access to memory.  ARCH is the
+   target architecture.  EXPR is the expression which we are building.
+   NBITS is the number of bits we want to read.  This emits the
+   opcodes needed to read the memory and then extract the desired
+   bits.  */
+
+static void
+access_memory (struct gdbarch *arch, struct agent_expr *expr, ULONGEST nbits)
+{
+  ULONGEST nbytes = (nbits + 7) / 8;
+
+  gdb_assert (nbytes > 0 && nbytes <= sizeof (LONGEST));
+
+  if (expr->tracing)
+    ax_trace_quick (expr, nbytes);
+
+  if (nbits <= 8)
+    ax_simple (expr, aop_ref8);
+  else if (nbits <= 16)
+    ax_simple (expr, aop_ref16);
+  else if (nbits <= 32)
+    ax_simple (expr, aop_ref32);
+  else
+    ax_simple (expr, aop_ref64);
+
+  /* If we read exactly the number of bytes we wanted, we're done.  */
+  if (8 * nbytes == nbits)
+    return;
+
+  if (gdbarch_byte_order (arch) == BFD_ENDIAN_BIG)
+    {
+      /* On a bits-big-endian machine, we want the high-order
+	 NBITS.  */
+      ax_const_l (expr, 8 * nbytes - nbits);
+      ax_simple (expr, aop_rsh_unsigned);
+    }
+  else
+    {
+      /* On a bits-little-endian box, we want the low-order NBITS.  */
+      ax_zero_ext (expr, nbits);
+    }
+}
+
+/* Compile a DWARF location expression to an agent expression.
+   
+   EXPR is the agent expression we are building.
+   LOC is the agent value we modify.
+   ARCH is the architecture.
+   ADDR_SIZE is the size of addresses, in bytes.
+   OP_PTR is the start of the location expression.
+   OP_END is one past the last byte of the location expression.
+   
+   This will throw an exception for various kinds of errors -- for
+   example, if the expression cannot be compiled, or if the expression
+   is invalid.  */
+
+static void
+dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
+			   unsigned int addr_size, const gdb_byte *op_ptr,
+			   const gdb_byte *op_end,
+			   dwarf2_per_cu_data *per_cu,
+			   dwarf2_per_objfile *per_objfile)
+{
+  gdbarch *arch = expr->gdbarch;
+  std::vector<int> dw_labels, patches;
+  const gdb_byte * const base = op_ptr;
+  const gdb_byte *previous_piece = op_ptr;
+  enum bfd_endian byte_order = gdbarch_byte_order (arch);
+  ULONGEST bits_collected = 0;
+  unsigned int addr_size_bits = 8 * addr_size;
+  bool bits_big_endian = byte_order == BFD_ENDIAN_BIG;
+
+  std::vector<int> offsets (op_end - op_ptr, -1);
+
+  /* By default we are making an address.  */
+  loc->kind = axs_lvalue_memory;
+
+  while (op_ptr < op_end)
+    {
+      enum dwarf_location_atom op = (enum dwarf_location_atom) *op_ptr;
+      uint64_t uoffset, reg;
+      int64_t offset;
+      int i;
+
+      offsets[op_ptr - base] = expr->len;
+      ++op_ptr;
+
+      /* Our basic approach to code generation is to map DWARF
+	 operations directly to AX operations.  However, there are
+	 some differences.
+
+	 First, DWARF works on address-sized units, but AX always uses
+	 LONGEST.  For most operations we simply ignore this
+	 difference; instead we generate sign extensions as needed
+	 before division and comparison operations.  It would be nice
+	 to omit the sign extensions, but there is no way to determine
+	 the size of the target's LONGEST.  (This code uses the size
+	 of the host LONGEST in some cases -- that is a bug but it is
+	 difficult to fix.)
+
+	 Second, some DWARF operations cannot be translated to AX.
+	 For these we simply fail.  See
+	 http://sourceware.org/bugzilla/show_bug.cgi?id=11662.  */
+      switch (op)
+	{
+	case DW_OP_lit0:
+	case DW_OP_lit1:
+	case DW_OP_lit2:
+	case DW_OP_lit3:
+	case DW_OP_lit4:
+	case DW_OP_lit5:
+	case DW_OP_lit6:
+	case DW_OP_lit7:
+	case DW_OP_lit8:
+	case DW_OP_lit9:
+	case DW_OP_lit10:
+	case DW_OP_lit11:
+	case DW_OP_lit12:
+	case DW_OP_lit13:
+	case DW_OP_lit14:
+	case DW_OP_lit15:
+	case DW_OP_lit16:
+	case DW_OP_lit17:
+	case DW_OP_lit18:
+	case DW_OP_lit19:
+	case DW_OP_lit20:
+	case DW_OP_lit21:
+	case DW_OP_lit22:
+	case DW_OP_lit23:
+	case DW_OP_lit24:
+	case DW_OP_lit25:
+	case DW_OP_lit26:
+	case DW_OP_lit27:
+	case DW_OP_lit28:
+	case DW_OP_lit29:
+	case DW_OP_lit30:
+	case DW_OP_lit31:
+	  ax_const_l (expr, op - DW_OP_lit0);
+	  break;
+
+	case DW_OP_addr:
+	  uoffset = extract_unsigned_integer (op_ptr, addr_size, byte_order);
+	  op_ptr += addr_size;
+	  /* Some versions of GCC emit DW_OP_addr before
+	     DW_OP_GNU_push_tls_address.  In this case the value is an
+	     index, not an address.  We don't support things like
+	     branching between the address and the TLS op.  */
+	  if (op_ptr >= op_end || *op_ptr != DW_OP_GNU_push_tls_address)
+	    uoffset += per_objfile->objfile->text_section_offset ();
+	  ax_const_l (expr, uoffset);
+	  break;
+
+	case DW_OP_const1u:
+	  ax_const_l (expr, extract_unsigned_integer (op_ptr, 1, byte_order));
+	  op_ptr += 1;
+	  break;
+
+	case DW_OP_const1s:
+	  ax_const_l (expr, extract_signed_integer (op_ptr, 1, byte_order));
+	  op_ptr += 1;
+	  break;
+
+	case DW_OP_const2u:
+	  ax_const_l (expr, extract_unsigned_integer (op_ptr, 2, byte_order));
+	  op_ptr += 2;
+	  break;
+
+	case DW_OP_const2s:
+	  ax_const_l (expr, extract_signed_integer (op_ptr, 2, byte_order));
+	  op_ptr += 2;
+	  break;
+
+	case DW_OP_const4u:
+	  ax_const_l (expr, extract_unsigned_integer (op_ptr, 4, byte_order));
+	  op_ptr += 4;
+	  break;
+
+	case DW_OP_const4s:
+	  ax_const_l (expr, extract_signed_integer (op_ptr, 4, byte_order));
+	  op_ptr += 4;
+	  break;
+
+	case DW_OP_const8u:
+	  ax_const_l (expr, extract_unsigned_integer (op_ptr, 8, byte_order));
+	  op_ptr += 8;
+	  break;
+
+	case DW_OP_const8s:
+	  ax_const_l (expr, extract_signed_integer (op_ptr, 8, byte_order));
+	  op_ptr += 8;
+	  break;
+
+	case DW_OP_constu:
+	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
+	  ax_const_l (expr, uoffset);
+	  break;
+
+	case DW_OP_consts:
+	  op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
+	  ax_const_l (expr, offset);
+	  break;
+
+	case DW_OP_reg0:
+	case DW_OP_reg1:
+	case DW_OP_reg2:
+	case DW_OP_reg3:
+	case DW_OP_reg4:
+	case DW_OP_reg5:
+	case DW_OP_reg6:
+	case DW_OP_reg7:
+	case DW_OP_reg8:
+	case DW_OP_reg9:
+	case DW_OP_reg10:
+	case DW_OP_reg11:
+	case DW_OP_reg12:
+	case DW_OP_reg13:
+	case DW_OP_reg14:
+	case DW_OP_reg15:
+	case DW_OP_reg16:
+	case DW_OP_reg17:
+	case DW_OP_reg18:
+	case DW_OP_reg19:
+	case DW_OP_reg20:
+	case DW_OP_reg21:
+	case DW_OP_reg22:
+	case DW_OP_reg23:
+	case DW_OP_reg24:
+	case DW_OP_reg25:
+	case DW_OP_reg26:
+	case DW_OP_reg27:
+	case DW_OP_reg28:
+	case DW_OP_reg29:
+	case DW_OP_reg30:
+	case DW_OP_reg31:
+	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
+	  loc->u.reg = dwarf_reg_to_regnum_or_error (arch, op - DW_OP_reg0);
+	  loc->kind = axs_lvalue_register;
+	  break;
+
+	case DW_OP_regx:
+	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
+	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
+	  loc->u.reg = dwarf_reg_to_regnum_or_error (arch, reg);
+	  loc->kind = axs_lvalue_register;
+	  break;
+
+	case DW_OP_implicit_value:
+	  {
+	    uint64_t len;
+
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &len);
+	    if (op_ptr + len > op_end)
+	      error (_("DW_OP_implicit_value: too few bytes available."));
+	    if (len > sizeof (ULONGEST))
+	      error (_("Cannot translate DW_OP_implicit_value of %d bytes"),
+		     (int) len);
+
+	    ax_const_l (expr, extract_unsigned_integer (op_ptr, len,
+							byte_order));
+	    op_ptr += len;
+	    dwarf_expr_require_composition (op_ptr, op_end,
+					    "DW_OP_implicit_value");
+
+	    loc->kind = axs_rvalue;
+	  }
+	  break;
+
+	case DW_OP_stack_value:
+	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_stack_value");
+	  loc->kind = axs_rvalue;
+	  break;
+
+	case DW_OP_breg0:
+	case DW_OP_breg1:
+	case DW_OP_breg2:
+	case DW_OP_breg3:
+	case DW_OP_breg4:
+	case DW_OP_breg5:
+	case DW_OP_breg6:
+	case DW_OP_breg7:
+	case DW_OP_breg8:
+	case DW_OP_breg9:
+	case DW_OP_breg10:
+	case DW_OP_breg11:
+	case DW_OP_breg12:
+	case DW_OP_breg13:
+	case DW_OP_breg14:
+	case DW_OP_breg15:
+	case DW_OP_breg16:
+	case DW_OP_breg17:
+	case DW_OP_breg18:
+	case DW_OP_breg19:
+	case DW_OP_breg20:
+	case DW_OP_breg21:
+	case DW_OP_breg22:
+	case DW_OP_breg23:
+	case DW_OP_breg24:
+	case DW_OP_breg25:
+	case DW_OP_breg26:
+	case DW_OP_breg27:
+	case DW_OP_breg28:
+	case DW_OP_breg29:
+	case DW_OP_breg30:
+	case DW_OP_breg31:
+	  op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
+	  i = dwarf_reg_to_regnum_or_error (arch, op - DW_OP_breg0);
+	  ax_reg (expr, i);
+	  if (offset != 0)
+	    {
+	      ax_const_l (expr, offset);
+	      ax_simple (expr, aop_add);
+	    }
+	  break;
+
+	case DW_OP_bregx:
+	  {
+	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
+	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
+	    i = dwarf_reg_to_regnum_or_error (arch, reg);
+	    ax_reg (expr, i);
+	    if (offset != 0)
+	      {
+		ax_const_l (expr, offset);
+		ax_simple (expr, aop_add);
+	      }
+	  }
+	  break;
+
+	case DW_OP_fbreg:
+	  {
+	    const gdb_byte *datastart;
+	    size_t datalen;
+	    const struct block *b;
+	    struct symbol *framefunc;
+
+	    b = block_for_pc (expr->scope);
+
+	    if (!b)
+	      error (_("No block found for address"));
+
+	    framefunc = block_linkage_function (b);
+
+	    if (!framefunc)
+	      error (_("No function found for block"));
+
+	    func_get_frame_base_dwarf_block (framefunc, expr->scope,
+					     &datastart, &datalen);
+
+	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
+	    dwarf2_compile_expr_to_ax (expr, loc, addr_size, datastart,
+				       datastart + datalen, per_cu,
+				       per_objfile);
+	    if (loc->kind == axs_lvalue_register)
+	      require_rvalue (expr, loc);
+
+	    if (offset != 0)
+	      {
+		ax_const_l (expr, offset);
+		ax_simple (expr, aop_add);
+	      }
+
+	    loc->kind = axs_lvalue_memory;
+	  }
+	  break;
+
+	case DW_OP_dup:
+	  ax_simple (expr, aop_dup);
+	  break;
+
+	case DW_OP_drop:
+	  ax_simple (expr, aop_pop);
+	  break;
+
+	case DW_OP_pick:
+	  offset = *op_ptr++;
+	  ax_pick (expr, offset);
+	  break;
+
+	case DW_OP_swap:
+	  ax_simple (expr, aop_swap);
+	  break;
+
+	case DW_OP_over:
+	  ax_pick (expr, 1);
+	  break;
+
+	case DW_OP_rot:
+	  ax_simple (expr, aop_rot);
+	  break;
+
+	case DW_OP_deref:
+	case DW_OP_deref_size:
+	  {
+	    int size;
+
+	    if (op == DW_OP_deref_size)
+	      size = *op_ptr++;
+	    else
+	      size = addr_size;
+
+	    if (size != 1 && size != 2 && size != 4 && size != 8)
+	      error (_("Unsupported size %d in %s"),
+		     size, get_DW_OP_name (op));
+	    access_memory (arch, expr, size * TARGET_CHAR_BIT);
+	  }
+	  break;
+
+	case DW_OP_abs:
+	  /* Sign extend the operand.  */
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_dup);
+	  ax_const_l (expr, 0);
+	  ax_simple (expr, aop_less_signed);
+	  ax_simple (expr, aop_log_not);
+	  i = ax_goto (expr, aop_if_goto);
+	  /* We have to emit 0 - X.  */
+	  ax_const_l (expr, 0);
+	  ax_simple (expr, aop_swap);
+	  ax_simple (expr, aop_sub);
+	  ax_label (expr, i, expr->len);
+	  break;
+
+	case DW_OP_neg:
+	  /* No need to sign extend here.  */
+	  ax_const_l (expr, 0);
+	  ax_simple (expr, aop_swap);
+	  ax_simple (expr, aop_sub);
+	  break;
+
+	case DW_OP_not:
+	  /* Sign extend the operand.  */
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_bit_not);
+	  break;
+
+	case DW_OP_plus_uconst:
+	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
+	  /* It would be really weird to emit `DW_OP_plus_uconst 0',
+	     but we micro-optimize anyhow.  */
+	  if (reg != 0)
+	    {
+	      ax_const_l (expr, reg);
+	      ax_simple (expr, aop_add);
+	    }
+	  break;
+
+	case DW_OP_and:
+	  ax_simple (expr, aop_bit_and);
+	  break;
+
+	case DW_OP_div:
+	  /* Sign extend the operands.  */
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_swap);
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_swap);
+	  ax_simple (expr, aop_div_signed);
+	  break;
+
+	case DW_OP_minus:
+	  ax_simple (expr, aop_sub);
+	  break;
+
+	case DW_OP_mod:
+	  ax_simple (expr, aop_rem_unsigned);
+	  break;
+
+	case DW_OP_mul:
+	  ax_simple (expr, aop_mul);
+	  break;
+
+	case DW_OP_or:
+	  ax_simple (expr, aop_bit_or);
+	  break;
+
+	case DW_OP_plus:
+	  ax_simple (expr, aop_add);
+	  break;
+
+	case DW_OP_shl:
+	  ax_simple (expr, aop_lsh);
+	  break;
+
+	case DW_OP_shr:
+	  ax_simple (expr, aop_rsh_unsigned);
+	  break;
+
+	case DW_OP_shra:
+	  ax_simple (expr, aop_rsh_signed);
+	  break;
+
+	case DW_OP_xor:
+	  ax_simple (expr, aop_bit_xor);
+	  break;
+
+	case DW_OP_le:
+	  /* Sign extend the operands.  */
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_swap);
+	  ax_ext (expr, addr_size_bits);
+	  /* Note no swap here: A <= B is !(B < A).  */
+	  ax_simple (expr, aop_less_signed);
+	  ax_simple (expr, aop_log_not);
+	  break;
+
+	case DW_OP_ge:
+	  /* Sign extend the operands.  */
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_swap);
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_swap);
+	  /* A >= B is !(A < B).  */
+	  ax_simple (expr, aop_less_signed);
+	  ax_simple (expr, aop_log_not);
+	  break;
+
+	case DW_OP_eq:
+	  /* Sign extend the operands.  */
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_swap);
+	  ax_ext (expr, addr_size_bits);
+	  /* No need for a second swap here.  */
+	  ax_simple (expr, aop_equal);
+	  break;
+
+	case DW_OP_lt:
+	  /* Sign extend the operands.  */
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_swap);
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_swap);
+	  ax_simple (expr, aop_less_signed);
+	  break;
+
+	case DW_OP_gt:
+	  /* Sign extend the operands.  */
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_swap);
+	  ax_ext (expr, addr_size_bits);
+	  /* Note no swap here: A > B is B < A.  */
+	  ax_simple (expr, aop_less_signed);
+	  break;
+
+	case DW_OP_ne:
+	  /* Sign extend the operands.  */
+	  ax_ext (expr, addr_size_bits);
+	  ax_simple (expr, aop_swap);
+	  ax_ext (expr, addr_size_bits);
+	  /* No need for a swap here.  */
+	  ax_simple (expr, aop_equal);
+	  ax_simple (expr, aop_log_not);
+	  break;
+
+	case DW_OP_call_frame_cfa:
+	  {
+	    int regnum;
+	    CORE_ADDR text_offset;
+	    LONGEST off;
+	    const gdb_byte *cfa_start, *cfa_end;
+
+	    if (dwarf2_fetch_cfa_info (arch, expr->scope, per_cu,
+				       &regnum, &off,
+				       &text_offset, &cfa_start, &cfa_end))
+	      {
+		/* Register.  */
+		ax_reg (expr, regnum);
+		if (off != 0)
+		  {
+		    ax_const_l (expr, off);
+		    ax_simple (expr, aop_add);
+		  }
+	      }
+	    else
+	      {
+		/* Another expression.  */
+		ax_const_l (expr, text_offset);
+		dwarf2_compile_expr_to_ax (expr, loc, addr_size, cfa_start,
+					   cfa_end, per_cu, per_objfile);
+	      }
+
+	    loc->kind = axs_lvalue_memory;
+	  }
+	  break;
+
+	case DW_OP_GNU_push_tls_address:
+	case DW_OP_form_tls_address:
+	  unimplemented (op);
+	  break;
+
+	case DW_OP_push_object_address:
+	  unimplemented (op);
+	  break;
+
+	case DW_OP_skip:
+	  offset = extract_signed_integer (op_ptr, 2, byte_order);
+	  op_ptr += 2;
+	  i = ax_goto (expr, aop_goto);
+	  dw_labels.push_back (op_ptr + offset - base);
+	  patches.push_back (i);
+	  break;
+
+	case DW_OP_bra:
+	  offset = extract_signed_integer (op_ptr, 2, byte_order);
+	  op_ptr += 2;
+	  /* Zero extend the operand.  */
+	  ax_zero_ext (expr, addr_size_bits);
+	  i = ax_goto (expr, aop_if_goto);
+	  dw_labels.push_back (op_ptr + offset - base);
+	  patches.push_back (i);
+	  break;
+
+	case DW_OP_nop:
+	  break;
+
+        case DW_OP_piece:
+	case DW_OP_bit_piece:
+	  {
+	    uint64_t size;
+
+	    if (op_ptr - 1 == previous_piece)
+	      error (_("Cannot translate empty pieces to agent expressions"));
+	    previous_piece = op_ptr - 1;
+
+            op_ptr = safe_read_uleb128 (op_ptr, op_end, &size);
+	    if (op == DW_OP_piece)
+	      {
+		size *= 8;
+		uoffset = 0;
+	      }
+	    else
+	      op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
+
+	    if (bits_collected + size > 8 * sizeof (LONGEST))
+	      error (_("Expression pieces exceed word size"));
+
+	    /* Access the bits.  */
+	    switch (loc->kind)
+	      {
+	      case axs_lvalue_register:
+		ax_reg (expr, loc->u.reg);
+		break;
+
+	      case axs_lvalue_memory:
+		/* Offset the pointer, if needed.  */
+		if (uoffset > 8)
+		  {
+		    ax_const_l (expr, uoffset / 8);
+		    ax_simple (expr, aop_add);
+		    uoffset %= 8;
+		  }
+		access_memory (arch, expr, size);
+		break;
+	      }
+
+	    /* For a bits-big-endian target, shift up what we already
+	       have.  For a bits-little-endian target, shift up the
+	       new data.  Note that there is a potential bug here if
+	       the DWARF expression leaves multiple values on the
+	       stack.  */
+	    if (bits_collected > 0)
+	      {
+		if (bits_big_endian)
+		  {
+		    ax_simple (expr, aop_swap);
+		    ax_const_l (expr, size);
+		    ax_simple (expr, aop_lsh);
+		    /* We don't need a second swap here, because
+		       aop_bit_or is symmetric.  */
+		  }
+		else
+		  {
+		    ax_const_l (expr, size);
+		    ax_simple (expr, aop_lsh);
+		  }
+		ax_simple (expr, aop_bit_or);
+	      }
+
+	    bits_collected += size;
+	    loc->kind = axs_rvalue;
+	  }
+	  break;
+
+	case DW_OP_GNU_uninit:
+	  unimplemented (op);
+
+	case DW_OP_call2:
+	case DW_OP_call4:
+	  {
+	    struct dwarf2_locexpr_baton block;
+	    int size = (op == DW_OP_call2 ? 2 : 4);
+
+	    uoffset = extract_unsigned_integer (op_ptr, size, byte_order);
+	    op_ptr += size;
+
+	    auto get_frame_pc_from_expr = [expr] ()
+	      {
+		return expr->scope;
+	      };
+	    cu_offset cuoffset = (cu_offset) uoffset;
+	    block = dwarf2_fetch_die_loc_cu_off (cuoffset, per_cu, per_objfile,
+						 get_frame_pc_from_expr);
+
+	    /* DW_OP_call_ref is currently not supported.  */
+	    gdb_assert (block.per_cu == per_cu);
+
+	    dwarf2_compile_expr_to_ax (expr, loc, addr_size, block.data,
+				       block.data + block.size, per_cu,
+				       per_objfile);
+	  }
+	  break;
+
+	case DW_OP_call_ref:
+	  unimplemented (op);
+
+	case DW_OP_GNU_variable_value:
+	  unimplemented (op);
+
+	default:
+	  unimplemented (op);
+	}
+    }
+
+  /* Patch all the branches we emitted.  */
+  for (int i = 0; i < patches.size (); ++i)
+    {
+      int targ = offsets[dw_labels[i]];
+      if (targ == -1)
+	internal_error (__FILE__, __LINE__, _("invalid label"));
+      ax_label (expr, patches[i], targ);
+    }
+}
+
+
+/* Return the value of SYMBOL in FRAME using the DWARF-2 expression
+   evaluator to calculate the location.  */
+static struct value *
+locexpr_read_variable (struct symbol *symbol, struct frame_info *frame)
+{
+  struct dwarf2_locexpr_baton *dlbaton
+    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
+  struct value *val;
+
+  val = dwarf2_evaluate_loc_desc (SYMBOL_TYPE (symbol), frame, dlbaton->data,
+				  dlbaton->size, dlbaton->per_cu,
+				  dlbaton->per_objfile);
+
+  return val;
+}
+
+/* Return the value of SYMBOL in FRAME at (callee) FRAME's function
+   entry.  SYMBOL should be a function parameter, otherwise NO_ENTRY_VALUE_ERROR
+   will be thrown.  */
+
+static struct value *
+locexpr_read_variable_at_entry (struct symbol *symbol, struct frame_info *frame)
+{
+  struct dwarf2_locexpr_baton *dlbaton
+    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
+
+  return value_of_dwarf_block_entry (SYMBOL_TYPE (symbol), frame, dlbaton->data,
+				     dlbaton->size);
+}
+
+/* Implementation of get_symbol_read_needs from
+   symbol_computed_ops.  */
+
+static enum symbol_needs_kind
+locexpr_get_symbol_read_needs (struct symbol *symbol)
+{
+  struct dwarf2_locexpr_baton *dlbaton
+    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
+
+  return dwarf2_loc_desc_get_symbol_read_needs (dlbaton->data, dlbaton->size,
+						dlbaton->per_cu,
+						dlbaton->per_objfile);
+}
+
+/* Return true if DATA points to the end of a piece.  END is one past
+   the last byte in the expression.  */
+
+static int
+piece_end_p (const gdb_byte *data, const gdb_byte *end)
+{
+  return data == end || data[0] == DW_OP_piece || data[0] == DW_OP_bit_piece;
+}
+
+/* Helper for locexpr_describe_location_piece that finds the name of a
+   DWARF register.  */
+
+static const char *
+locexpr_regname (struct gdbarch *gdbarch, int dwarf_regnum)
+{
+  int regnum;
+
+  /* This doesn't use dwarf_reg_to_regnum_or_error on purpose.
+     We'd rather print *something* here than throw an error.  */
+  regnum = dwarf_reg_to_regnum (gdbarch, dwarf_regnum);
+  /* gdbarch_register_name may just return "", return something more
+     descriptive for bad register numbers.  */
+  if (regnum == -1)
+    {
+      /* The text is output as "$bad_register_number".
+	 That is why we use the underscores.  */
+      return _("bad_register_number");
+    }
+  return gdbarch_register_name (gdbarch, regnum);
+}
+
+/* Nicely describe a single piece of a location, returning an updated
+   position in the bytecode sequence.  This function cannot recognize
+   all locations; if a location is not recognized, it simply returns
+   DATA.  If there is an error during reading, e.g. we run off the end
+   of the buffer, an error is thrown.  */
+
+static const gdb_byte *
+locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream,
+				 CORE_ADDR addr, dwarf2_per_cu_data *per_cu,
+				 dwarf2_per_objfile *per_objfile,
+				 const gdb_byte *data, const gdb_byte *end,
+				 unsigned int addr_size)
+{
+  objfile *objfile = per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  size_t leb128_size;
+
+  if (data[0] >= DW_OP_reg0 && data[0] <= DW_OP_reg31)
+    {
+      fprintf_filtered (stream, _("a variable in $%s"),
+			locexpr_regname (gdbarch, data[0] - DW_OP_reg0));
+      data += 1;
+    }
+  else if (data[0] == DW_OP_regx)
+    {
+      uint64_t reg;
+
+      data = safe_read_uleb128 (data + 1, end, &reg);
+      fprintf_filtered (stream, _("a variable in $%s"),
+			locexpr_regname (gdbarch, reg));
+    }
+  else if (data[0] == DW_OP_fbreg)
+    {
+      const struct block *b;
+      struct symbol *framefunc;
+      int frame_reg = 0;
+      int64_t frame_offset;
+      const gdb_byte *base_data, *new_data, *save_data = data;
+      size_t base_size;
+      int64_t base_offset = 0;
+
+      new_data = safe_read_sleb128 (data + 1, end, &frame_offset);
+      if (!piece_end_p (new_data, end))
+	return data;
+      data = new_data;
+
+      b = block_for_pc (addr);
+
+      if (!b)
+	error (_("No block found for address for symbol \"%s\"."),
+	       symbol->print_name ());
+
+      framefunc = block_linkage_function (b);
+
+      if (!framefunc)
+	error (_("No function found for block for symbol \"%s\"."),
+	       symbol->print_name ());
+
+      func_get_frame_base_dwarf_block (framefunc, addr, &base_data, &base_size);
+
+      if (base_data[0] >= DW_OP_breg0 && base_data[0] <= DW_OP_breg31)
+	{
+	  const gdb_byte *buf_end;
+	  
+	  frame_reg = base_data[0] - DW_OP_breg0;
+	  buf_end = safe_read_sleb128 (base_data + 1, base_data + base_size,
+				       &base_offset);
+	  if (buf_end != base_data + base_size)
+	    error (_("Unexpected opcode after "
+		     "DW_OP_breg%u for symbol \"%s\"."),
+		   frame_reg, symbol->print_name ());
+	}
+      else if (base_data[0] >= DW_OP_reg0 && base_data[0] <= DW_OP_reg31)
+	{
+	  /* The frame base is just the register, with no offset.  */
+	  frame_reg = base_data[0] - DW_OP_reg0;
+	  base_offset = 0;
+	}
+      else
+	{
+	  /* We don't know what to do with the frame base expression,
+	     so we can't trace this variable; give up.  */
+	  return save_data;
+	}
+
+      fprintf_filtered (stream,
+			_("a variable at frame base reg $%s offset %s+%s"),
+			locexpr_regname (gdbarch, frame_reg),
+			plongest (base_offset), plongest (frame_offset));
+    }
+  else if (data[0] >= DW_OP_breg0 && data[0] <= DW_OP_breg31
+	   && piece_end_p (data, end))
+    {
+      int64_t offset;
+
+      data = safe_read_sleb128 (data + 1, end, &offset);
+
+      fprintf_filtered (stream,
+			_("a variable at offset %s from base reg $%s"),
+			plongest (offset),
+			locexpr_regname (gdbarch, data[0] - DW_OP_breg0));
+    }
+
+  /* The location expression for a TLS variable looks like this (on a
+     64-bit LE machine):
+
+     DW_AT_location    : 10 byte block: 3 4 0 0 0 0 0 0 0 e0
+                        (DW_OP_addr: 4; DW_OP_GNU_push_tls_address)
+
+     0x3 is the encoding for DW_OP_addr, which has an operand as long
+     as the size of an address on the target machine (here is 8
+     bytes).  Note that more recent version of GCC emit DW_OP_const4u
+     or DW_OP_const8u, depending on address size, rather than
+     DW_OP_addr.  0xe0 is the encoding for DW_OP_GNU_push_tls_address.
+     The operand represents the offset at which the variable is within
+     the thread local storage.  */
+
+  else if (data + 1 + addr_size < end
+	   && (data[0] == DW_OP_addr
+	       || (addr_size == 4 && data[0] == DW_OP_const4u)
+	       || (addr_size == 8 && data[0] == DW_OP_const8u))
+	   && (data[1 + addr_size] == DW_OP_GNU_push_tls_address
+	       || data[1 + addr_size] == DW_OP_form_tls_address)
+	   && piece_end_p (data + 2 + addr_size, end))
+    {
+      ULONGEST offset;
+      offset = extract_unsigned_integer (data + 1, addr_size,
+					 gdbarch_byte_order (gdbarch));
+
+      fprintf_filtered (stream, 
+			_("a thread-local variable at offset 0x%s "
+			  "in the thread-local storage for `%s'"),
+			phex_nz (offset, addr_size), objfile_name (objfile));
+
+      data += 1 + addr_size + 1;
+    }
+
+  /* With -gsplit-dwarf a TLS variable can also look like this:
+     DW_AT_location    : 3 byte block: fc 4 e0
+                        (DW_OP_GNU_const_index: 4;
+			 DW_OP_GNU_push_tls_address)  */
+  else if (data + 3 <= end
+	   && data + 1 + (leb128_size = skip_leb128 (data + 1, end)) < end
+	   && data[0] == DW_OP_GNU_const_index
+	   && leb128_size > 0
+	   && (data[1 + leb128_size] == DW_OP_GNU_push_tls_address
+	       || data[1 + leb128_size] == DW_OP_form_tls_address)
+	   && piece_end_p (data + 2 + leb128_size, end))
+    {
+      uint64_t offset;
+
+      data = safe_read_uleb128 (data + 1, end, &offset);
+      offset = dwarf2_read_addr_index (per_cu, per_objfile, offset);
+      fprintf_filtered (stream, 
+			_("a thread-local variable at offset 0x%s "
+			  "in the thread-local storage for `%s'"),
+			phex_nz (offset, addr_size), objfile_name (objfile));
+      ++data;
+    }
+
+  else if (data[0] >= DW_OP_lit0
+	   && data[0] <= DW_OP_lit31
+	   && data + 1 < end
+	   && data[1] == DW_OP_stack_value)
+    {
+      fprintf_filtered (stream, _("the constant %d"), data[0] - DW_OP_lit0);
+      data += 2;
+    }
+
+  return data;
+}
+
+/* Disassemble an expression, stopping at the end of a piece or at the
+   end of the expression.  Returns a pointer to the next unread byte
+   in the input expression.  If ALL is nonzero, then this function
+   will keep going until it reaches the end of the expression.
+   If there is an error during reading, e.g. we run off the end
+   of the buffer, an error is thrown.  */
+
+static const gdb_byte *
+disassemble_dwarf_expression (struct ui_file *stream,
+			      struct gdbarch *arch, unsigned int addr_size,
+			      int offset_size, const gdb_byte *start,
+			      const gdb_byte *data, const gdb_byte *end,
+			      int indent, int all,
+			      dwarf2_per_cu_data *per_cu,
+			      dwarf2_per_objfile *per_objfile)
+{
+  while (data < end
+	 && (all
+	     || (data[0] != DW_OP_piece && data[0] != DW_OP_bit_piece)))
+    {
+      enum dwarf_location_atom op = (enum dwarf_location_atom) *data++;
+      uint64_t ul;
+      int64_t l;
+      const char *name;
+
+      name = get_DW_OP_name (op);
+
+      if (!name)
+	error (_("Unrecognized DWARF opcode 0x%02x at %ld"),
+	       op, (long) (data - 1 - start));
+      fprintf_filtered (stream, "  %*ld: %s", indent + 4,
+			(long) (data - 1 - start), name);
+
+      switch (op)
+	{
+	case DW_OP_addr:
+	  ul = extract_unsigned_integer (data, addr_size,
+					 gdbarch_byte_order (arch));
+	  data += addr_size;
+	  fprintf_filtered (stream, " 0x%s", phex_nz (ul, addr_size));
+	  break;
+
+	case DW_OP_const1u:
+	  ul = extract_unsigned_integer (data, 1, gdbarch_byte_order (arch));
+	  data += 1;
+	  fprintf_filtered (stream, " %s", pulongest (ul));
+	  break;
+
+	case DW_OP_const1s:
+	  l = extract_signed_integer (data, 1, gdbarch_byte_order (arch));
+	  data += 1;
+	  fprintf_filtered (stream, " %s", plongest (l));
+	  break;
+
+	case DW_OP_const2u:
+	  ul = extract_unsigned_integer (data, 2, gdbarch_byte_order (arch));
+	  data += 2;
+	  fprintf_filtered (stream, " %s", pulongest (ul));
+	  break;
+
+	case DW_OP_const2s:
+	  l = extract_signed_integer (data, 2, gdbarch_byte_order (arch));
+	  data += 2;
+	  fprintf_filtered (stream, " %s", plongest (l));
+	  break;
+
+	case DW_OP_const4u:
+	  ul = extract_unsigned_integer (data, 4, gdbarch_byte_order (arch));
+	  data += 4;
+	  fprintf_filtered (stream, " %s", pulongest (ul));
+	  break;
+
+	case DW_OP_const4s:
+	  l = extract_signed_integer (data, 4, gdbarch_byte_order (arch));
+	  data += 4;
+	  fprintf_filtered (stream, " %s", plongest (l));
+	  break;
+
+	case DW_OP_const8u:
+	  ul = extract_unsigned_integer (data, 8, gdbarch_byte_order (arch));
+	  data += 8;
+	  fprintf_filtered (stream, " %s", pulongest (ul));
+	  break;
+
+	case DW_OP_const8s:
+	  l = extract_signed_integer (data, 8, gdbarch_byte_order (arch));
+	  data += 8;
+	  fprintf_filtered (stream, " %s", plongest (l));
+	  break;
+
+	case DW_OP_constu:
+	  data = safe_read_uleb128 (data, end, &ul);
+	  fprintf_filtered (stream, " %s", pulongest (ul));
+	  break;
+
+	case DW_OP_consts:
+	  data = safe_read_sleb128 (data, end, &l);
+	  fprintf_filtered (stream, " %s", plongest (l));
+	  break;
+
+	case DW_OP_reg0:
+	case DW_OP_reg1:
+	case DW_OP_reg2:
+	case DW_OP_reg3:
+	case DW_OP_reg4:
+	case DW_OP_reg5:
+	case DW_OP_reg6:
+	case DW_OP_reg7:
+	case DW_OP_reg8:
+	case DW_OP_reg9:
+	case DW_OP_reg10:
+	case DW_OP_reg11:
+	case DW_OP_reg12:
+	case DW_OP_reg13:
+	case DW_OP_reg14:
+	case DW_OP_reg15:
+	case DW_OP_reg16:
+	case DW_OP_reg17:
+	case DW_OP_reg18:
+	case DW_OP_reg19:
+	case DW_OP_reg20:
+	case DW_OP_reg21:
+	case DW_OP_reg22:
+	case DW_OP_reg23:
+	case DW_OP_reg24:
+	case DW_OP_reg25:
+	case DW_OP_reg26:
+	case DW_OP_reg27:
+	case DW_OP_reg28:
+	case DW_OP_reg29:
+	case DW_OP_reg30:
+	case DW_OP_reg31:
+	  fprintf_filtered (stream, " [$%s]",
+			    locexpr_regname (arch, op - DW_OP_reg0));
+	  break;
+
+	case DW_OP_regx:
+	  data = safe_read_uleb128 (data, end, &ul);
+	  fprintf_filtered (stream, " %s [$%s]", pulongest (ul),
+			    locexpr_regname (arch, (int) ul));
+	  break;
+
+	case DW_OP_implicit_value:
+	  data = safe_read_uleb128 (data, end, &ul);
+	  data += ul;
+	  fprintf_filtered (stream, " %s", pulongest (ul));
+	  break;
+
+	case DW_OP_breg0:
+	case DW_OP_breg1:
+	case DW_OP_breg2:
+	case DW_OP_breg3:
+	case DW_OP_breg4:
+	case DW_OP_breg5:
+	case DW_OP_breg6:
+	case DW_OP_breg7:
+	case DW_OP_breg8:
+	case DW_OP_breg9:
+	case DW_OP_breg10:
+	case DW_OP_breg11:
+	case DW_OP_breg12:
+	case DW_OP_breg13:
+	case DW_OP_breg14:
+	case DW_OP_breg15:
+	case DW_OP_breg16:
+	case DW_OP_breg17:
+	case DW_OP_breg18:
+	case DW_OP_breg19:
+	case DW_OP_breg20:
+	case DW_OP_breg21:
+	case DW_OP_breg22:
+	case DW_OP_breg23:
+	case DW_OP_breg24:
+	case DW_OP_breg25:
+	case DW_OP_breg26:
+	case DW_OP_breg27:
+	case DW_OP_breg28:
+	case DW_OP_breg29:
+	case DW_OP_breg30:
+	case DW_OP_breg31:
+	  data = safe_read_sleb128 (data, end, &l);
+	  fprintf_filtered (stream, " %s [$%s]", plongest (l),
+			    locexpr_regname (arch, op - DW_OP_breg0));
+	  break;
+
+	case DW_OP_bregx:
+	  data = safe_read_uleb128 (data, end, &ul);
+	  data = safe_read_sleb128 (data, end, &l);
+	  fprintf_filtered (stream, " register %s [$%s] offset %s",
+			    pulongest (ul),
+			    locexpr_regname (arch, (int) ul),
+			    plongest (l));
+	  break;
+
+	case DW_OP_fbreg:
+	  data = safe_read_sleb128 (data, end, &l);
+	  fprintf_filtered (stream, " %s", plongest (l));
+	  break;
+
+	case DW_OP_xderef_size:
+	case DW_OP_deref_size:
+	case DW_OP_pick:
+	  fprintf_filtered (stream, " %d", *data);
+	  ++data;
+	  break;
+
+	case DW_OP_plus_uconst:
+	  data = safe_read_uleb128 (data, end, &ul);
+	  fprintf_filtered (stream, " %s", pulongest (ul));
+	  break;
+
+	case DW_OP_skip:
+	  l = extract_signed_integer (data, 2, gdbarch_byte_order (arch));
+	  data += 2;
+	  fprintf_filtered (stream, " to %ld",
+			    (long) (data + l - start));
+	  break;
+
+	case DW_OP_bra:
+	  l = extract_signed_integer (data, 2, gdbarch_byte_order (arch));
+	  data += 2;
+	  fprintf_filtered (stream, " %ld",
+			    (long) (data + l - start));
+	  break;
+
+	case DW_OP_call2:
+	  ul = extract_unsigned_integer (data, 2, gdbarch_byte_order (arch));
+	  data += 2;
+	  fprintf_filtered (stream, " offset %s", phex_nz (ul, 2));
+	  break;
+
+	case DW_OP_call4:
+	  ul = extract_unsigned_integer (data, 4, gdbarch_byte_order (arch));
+	  data += 4;
+	  fprintf_filtered (stream, " offset %s", phex_nz (ul, 4));
+	  break;
+
+	case DW_OP_call_ref:
+	  ul = extract_unsigned_integer (data, offset_size,
+					 gdbarch_byte_order (arch));
+	  data += offset_size;
+	  fprintf_filtered (stream, " offset %s", phex_nz (ul, offset_size));
+	  break;
+
+        case DW_OP_piece:
+	  data = safe_read_uleb128 (data, end, &ul);
+	  fprintf_filtered (stream, " %s (bytes)", pulongest (ul));
+	  break;
+
+	case DW_OP_bit_piece:
+	  {
+	    uint64_t offset;
+
+	    data = safe_read_uleb128 (data, end, &ul);
+	    data = safe_read_uleb128 (data, end, &offset);
+	    fprintf_filtered (stream, " size %s offset %s (bits)",
+			      pulongest (ul), pulongest (offset));
+	  }
+	  break;
+
+	case DW_OP_implicit_pointer:
+	case DW_OP_GNU_implicit_pointer:
+	  {
+	    ul = extract_unsigned_integer (data, offset_size,
+					   gdbarch_byte_order (arch));
+	    data += offset_size;
+
+	    data = safe_read_sleb128 (data, end, &l);
+
+	    fprintf_filtered (stream, " DIE %s offset %s",
+			      phex_nz (ul, offset_size),
+			      plongest (l));
+	  }
+	  break;
+
+	case DW_OP_deref_type:
+	case DW_OP_GNU_deref_type:
+	  {
+	    int deref_addr_size = *data++;
+	    struct type *type;
+
+	    data = safe_read_uleb128 (data, end, &ul);
+	    cu_offset offset = (cu_offset) ul;
+	    type = dwarf2_get_die_type (offset, per_cu, per_objfile);
+	    fprintf_filtered (stream, "<");
+	    type_print (type, "", stream, -1);
+	    fprintf_filtered (stream, " [0x%s]> %d",
+			      phex_nz (to_underlying (offset), 0),
+			      deref_addr_size);
+	  }
+	  break;
+
+	case DW_OP_const_type:
+	case DW_OP_GNU_const_type:
+	  {
+	    struct type *type;
+
+	    data = safe_read_uleb128 (data, end, &ul);
+	    cu_offset type_die = (cu_offset) ul;
+	    type = dwarf2_get_die_type (type_die, per_cu, per_objfile);
+	    fprintf_filtered (stream, "<");
+	    type_print (type, "", stream, -1);
+	    fprintf_filtered (stream, " [0x%s]>",
+			      phex_nz (to_underlying (type_die), 0));
+
+	    int n = *data++;
+	    fprintf_filtered (stream, " %d byte block:", n);
+	    for (int i = 0; i < n; ++i)
+	      fprintf_filtered (stream, " %02x", data[i]);
+	    data += n;
+	  }
+	  break;
+
+	case DW_OP_regval_type:
+	case DW_OP_GNU_regval_type:
+	  {
+	    uint64_t reg;
+	    struct type *type;
+
+	    data = safe_read_uleb128 (data, end, &reg);
+	    data = safe_read_uleb128 (data, end, &ul);
+	    cu_offset type_die = (cu_offset) ul;
+
+	    type = dwarf2_get_die_type (type_die, per_cu, per_objfile);
+	    fprintf_filtered (stream, "<");
+	    type_print (type, "", stream, -1);
+	    fprintf_filtered (stream, " [0x%s]> [$%s]",
+			      phex_nz (to_underlying (type_die), 0),
+			      locexpr_regname (arch, reg));
+	  }
+	  break;
+
+	case DW_OP_convert:
+	case DW_OP_GNU_convert:
+	case DW_OP_reinterpret:
+	case DW_OP_GNU_reinterpret:
+	  {
+	    data = safe_read_uleb128 (data, end, &ul);
+	    cu_offset type_die = (cu_offset) ul;
+
+	    if (to_underlying (type_die) == 0)
+	      fprintf_filtered (stream, "<0>");
+	    else
+	      {
+		struct type *type;
+
+		type = dwarf2_get_die_type (type_die, per_cu, per_objfile);
+		fprintf_filtered (stream, "<");
+		type_print (type, "", stream, -1);
+		fprintf_filtered (stream, " [0x%s]>",
+				  phex_nz (to_underlying (type_die), 0));
+	      }
+	  }
+	  break;
+
+	case DW_OP_entry_value:
+	case DW_OP_GNU_entry_value:
+	  data = safe_read_uleb128 (data, end, &ul);
+	  fputc_filtered ('\n', stream);
+	  disassemble_dwarf_expression (stream, arch, addr_size, offset_size,
+					start, data, data + ul, indent + 2,
+					all, per_cu, per_objfile);
+	  data += ul;
+	  continue;
+
+	case DW_OP_GNU_parameter_ref:
+	  ul = extract_unsigned_integer (data, 4, gdbarch_byte_order (arch));
+	  data += 4;
+	  fprintf_filtered (stream, " offset %s", phex_nz (ul, 4));
+	  break;
+
+	case DW_OP_addrx:
+	case DW_OP_GNU_addr_index:
+	  data = safe_read_uleb128 (data, end, &ul);
+	  ul = dwarf2_read_addr_index (per_cu, per_objfile, ul);
+	  fprintf_filtered (stream, " 0x%s", phex_nz (ul, addr_size));
+	  break;
+
+	case DW_OP_GNU_const_index:
+	  data = safe_read_uleb128 (data, end, &ul);
+	  ul = dwarf2_read_addr_index (per_cu, per_objfile, ul);
+	  fprintf_filtered (stream, " %s", pulongest (ul));
+	  break;
+
+	case DW_OP_GNU_variable_value:
+	  ul = extract_unsigned_integer (data, offset_size,
+					 gdbarch_byte_order (arch));
+	  data += offset_size;
+	  fprintf_filtered (stream, " offset %s", phex_nz (ul, offset_size));
+	  break;
+	}
+
+      fprintf_filtered (stream, "\n");
+    }
+
+  return data;
+}
+
+static bool dwarf_always_disassemble;
+
+static void
+show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
+			       struct cmd_list_element *c, const char *value)
+{
+  fprintf_filtered (file,
+		    _("Whether to always disassemble "
+		      "DWARF expressions is %s.\n"),
+		    value);
+}
+
+/* Describe a single location, which may in turn consist of multiple
+   pieces.  */
+
+static void
+locexpr_describe_location_1 (struct symbol *symbol, CORE_ADDR addr,
+			     struct ui_file *stream,
+			     const gdb_byte *data, size_t size,
+			     unsigned int addr_size,
+			     int offset_size, dwarf2_per_cu_data *per_cu,
+			     dwarf2_per_objfile *per_objfile)
+{
+  const gdb_byte *end = data + size;
+  int first_piece = 1, bad = 0;
+  objfile *objfile = per_objfile->objfile;
+
+  while (data < end)
+    {
+      const gdb_byte *here = data;
+      int disassemble = 1;
+
+      if (first_piece)
+	first_piece = 0;
+      else
+	fprintf_filtered (stream, _(", and "));
+
+      if (!dwarf_always_disassemble)
+	{
+	  data = locexpr_describe_location_piece (symbol, stream,
+						  addr, per_cu, per_objfile,
+						  data, end, addr_size);
+	  /* If we printed anything, or if we have an empty piece,
+	     then don't disassemble.  */
+	  if (data != here
+	      || data[0] == DW_OP_piece
+	      || data[0] == DW_OP_bit_piece)
+	    disassemble = 0;
+	}
+      if (disassemble)
+	{
+	  fprintf_filtered (stream, _("a complex DWARF expression:\n"));
+	  data = disassemble_dwarf_expression (stream,
+					       objfile->arch (),
+					       addr_size, offset_size, data,
+					       data, end, 0,
+					       dwarf_always_disassemble,
+					       per_cu, per_objfile);
+	}
+
+      if (data < end)
+	{
+	  int empty = data == here;
+	      
+	  if (disassemble)
+	    fprintf_filtered (stream, "   ");
+	  if (data[0] == DW_OP_piece)
+	    {
+	      uint64_t bytes;
+
+	      data = safe_read_uleb128 (data + 1, end, &bytes);
+
+	      if (empty)
+		fprintf_filtered (stream, _("an empty %s-byte piece"),
+				  pulongest (bytes));
+	      else
+		fprintf_filtered (stream, _(" [%s-byte piece]"),
+				  pulongest (bytes));
+	    }
+	  else if (data[0] == DW_OP_bit_piece)
+	    {
+	      uint64_t bits, offset;
+
+	      data = safe_read_uleb128 (data + 1, end, &bits);
+	      data = safe_read_uleb128 (data, end, &offset);
+
+	      if (empty)
+		fprintf_filtered (stream,
+				  _("an empty %s-bit piece"),
+				  pulongest (bits));
+	      else
+		fprintf_filtered (stream,
+				  _(" [%s-bit piece, offset %s bits]"),
+				  pulongest (bits), pulongest (offset));
+	    }
+	  else
+	    {
+	      bad = 1;
+	      break;
+	    }
+	}
+    }
+
+  if (bad || data > end)
+    error (_("Corrupted DWARF2 expression for \"%s\"."),
+	   symbol->print_name ());
+}
+
+/* Print a natural-language description of SYMBOL to STREAM.  This
+   version is for a symbol with a single location.  */
+
+static void
+locexpr_describe_location (struct symbol *symbol, CORE_ADDR addr,
+			   struct ui_file *stream)
+{
+  struct dwarf2_locexpr_baton *dlbaton
+    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
+  unsigned int addr_size = dlbaton->per_cu->addr_size ();
+  int offset_size = dlbaton->per_cu->offset_size ();
+
+  locexpr_describe_location_1 (symbol, addr, stream,
+			       dlbaton->data, dlbaton->size,
+			       addr_size, offset_size,
+			       dlbaton->per_cu, dlbaton->per_objfile);
+}
+
+/* Describe the location of SYMBOL as an agent value in VALUE, generating
+   any necessary bytecode in AX.  */
+
+static void
+locexpr_tracepoint_var_ref (struct symbol *symbol, struct agent_expr *ax,
+			    struct axs_value *value)
+{
+  struct dwarf2_locexpr_baton *dlbaton
+    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
+  unsigned int addr_size = dlbaton->per_cu->addr_size ();
+
+  if (dlbaton->size == 0)
+    value->optimized_out = 1;
+  else
+    dwarf2_compile_expr_to_ax (ax, value, addr_size, dlbaton->data,
+			       dlbaton->data + dlbaton->size, dlbaton->per_cu,
+			       dlbaton->per_objfile);
+}
+
+/* symbol_computed_ops 'generate_c_location' method.  */
+
+static void
+locexpr_generate_c_location (struct symbol *sym, string_file *stream,
+			     struct gdbarch *gdbarch,
+			     unsigned char *registers_used,
+			     CORE_ADDR pc, const char *result_name)
+{
+  struct dwarf2_locexpr_baton *dlbaton
+    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (sym);
+  unsigned int addr_size = dlbaton->per_cu->addr_size ();
+
+  if (dlbaton->size == 0)
+    error (_("symbol \"%s\" is optimized out"), sym->natural_name ());
+
+  compile_dwarf_expr_to_c (stream, result_name,
+			   sym, pc, gdbarch, registers_used, addr_size,
+			   dlbaton->data, dlbaton->data + dlbaton->size,
+			   dlbaton->per_cu, dlbaton->per_objfile);
+}
+
+/* The set of location functions used with the DWARF-2 expression
+   evaluator.  */
+const struct symbol_computed_ops dwarf2_locexpr_funcs = {
+  locexpr_read_variable,
+  locexpr_read_variable_at_entry,
+  locexpr_get_symbol_read_needs,
+  locexpr_describe_location,
+  0,	/* location_has_loclist */
+  locexpr_tracepoint_var_ref,
+  locexpr_generate_c_location
+};
+
+
+/* Wrapper functions for location lists.  These generally find
+   the appropriate location expression and call something above.  */
+
+/* Return the value of SYMBOL in FRAME using the DWARF-2 expression
+   evaluator to calculate the location.  */
+static struct value *
+loclist_read_variable (struct symbol *symbol, struct frame_info *frame)
+{
+  struct dwarf2_loclist_baton *dlbaton
+    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
+  struct value *val;
+  const gdb_byte *data;
+  size_t size;
+  CORE_ADDR pc = frame ? get_frame_address_in_block (frame) : 0;
+
+  data = dwarf2_find_location_expression (dlbaton, &size, pc);
+  val = dwarf2_evaluate_loc_desc (SYMBOL_TYPE (symbol), frame, data, size,
+				  dlbaton->per_cu, dlbaton->per_objfile);
+
+  return val;
+}
+
+/* Read variable SYMBOL like loclist_read_variable at (callee) FRAME's function
+   entry.  SYMBOL should be a function parameter, otherwise NO_ENTRY_VALUE_ERROR
+   will be thrown.
+
+   Function always returns non-NULL value, it may be marked optimized out if
+   inferior frame information is not available.  It throws NO_ENTRY_VALUE_ERROR
+   if it cannot resolve the parameter for any reason.  */
+
+static struct value *
+loclist_read_variable_at_entry (struct symbol *symbol, struct frame_info *frame)
+{
+  struct dwarf2_loclist_baton *dlbaton
+    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
+  const gdb_byte *data;
+  size_t size;
+  CORE_ADDR pc;
+
+  if (frame == NULL || !get_frame_func_if_available (frame, &pc))
+    return allocate_optimized_out_value (SYMBOL_TYPE (symbol));
+
+  data = dwarf2_find_location_expression (dlbaton, &size, pc);
+  if (data == NULL)
+    return allocate_optimized_out_value (SYMBOL_TYPE (symbol));
+
+  return value_of_dwarf_block_entry (SYMBOL_TYPE (symbol), frame, data, size);
+}
+
+/* Implementation of get_symbol_read_needs from
+   symbol_computed_ops.  */
+
+static enum symbol_needs_kind
+loclist_symbol_needs (struct symbol *symbol)
+{
+  /* If there's a location list, then assume we need to have a frame
+     to choose the appropriate location expression.  With tracking of
+     global variables this is not necessarily true, but such tracking
+     is disabled in GCC at the moment until we figure out how to
+     represent it.  */
+
+  return SYMBOL_NEEDS_FRAME;
+}
+
+/* Print a natural-language description of SYMBOL to STREAM.  This
+   version applies when there is a list of different locations, each
+   with a specified address range.  */
+
+static void
+loclist_describe_location (struct symbol *symbol, CORE_ADDR addr,
+			   struct ui_file *stream)
+{
+  struct dwarf2_loclist_baton *dlbaton
+    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
+  const gdb_byte *loc_ptr, *buf_end;
+  dwarf2_per_objfile *per_objfile = dlbaton->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  unsigned int addr_size = dlbaton->per_cu->addr_size ();
+  int offset_size = dlbaton->per_cu->offset_size ();
+  int signed_addr_p = bfd_get_sign_extend_vma (objfile->obfd);
+  /* Adjust base_address for relocatable objects.  */
+  CORE_ADDR base_offset = objfile->text_section_offset ();
+  CORE_ADDR base_address = dlbaton->base_address + base_offset;
+  int done = 0;
+
+  loc_ptr = dlbaton->data;
+  buf_end = dlbaton->data + dlbaton->size;
+
+  fprintf_filtered (stream, _("multi-location:\n"));
+
+  /* Iterate through locations until we run out.  */
+  while (!done)
+    {
+      CORE_ADDR low = 0, high = 0; /* init for gcc -Wall */
+      int length;
+      enum debug_loc_kind kind;
+      const gdb_byte *new_ptr = NULL; /* init for gcc -Wall */
+
+      if (dlbaton->per_cu->version () < 5 && dlbaton->from_dwo)
+	kind = decode_debug_loc_dwo_addresses (dlbaton->per_cu,
+					       dlbaton->per_objfile,
+					       loc_ptr, buf_end, &new_ptr,
+					       &low, &high, byte_order);
+      else if (dlbaton->per_cu->version () < 5)
+	kind = decode_debug_loc_addresses (loc_ptr, buf_end, &new_ptr,
+					   &low, &high,
+					   byte_order, addr_size,
+					   signed_addr_p);
+      else
+	kind = decode_debug_loclists_addresses (dlbaton->per_cu,
+						dlbaton->per_objfile,
+						loc_ptr, buf_end, &new_ptr,
+						&low, &high, byte_order,
+						addr_size, signed_addr_p);
+      loc_ptr = new_ptr;
+      switch (kind)
+	{
+	case DEBUG_LOC_END_OF_LIST:
+	  done = 1;
+	  continue;
+
+	case DEBUG_LOC_BASE_ADDRESS:
+	  base_address = high + base_offset;
+	  fprintf_filtered (stream, _("  Base address %s"),
+			    paddress (gdbarch, base_address));
+	  continue;
+
+	case DEBUG_LOC_START_END:
+	case DEBUG_LOC_START_LENGTH:
+	case DEBUG_LOC_OFFSET_PAIR:
+	  break;
+
+	case DEBUG_LOC_BUFFER_OVERFLOW:
+	case DEBUG_LOC_INVALID_ENTRY:
+	  error (_("Corrupted DWARF expression for symbol \"%s\"."),
+		 symbol->print_name ());
+
+	default:
+	  gdb_assert_not_reached ("bad debug_loc_kind");
+	}
+
+      /* Otherwise, a location expression entry.  */
+      low += base_address;
+      high += base_address;
+
+      low = gdbarch_adjust_dwarf2_addr (gdbarch, low);
+      high = gdbarch_adjust_dwarf2_addr (gdbarch, high);
+
+      if (dlbaton->per_cu->version () < 5)
+	 {
+	   length = extract_unsigned_integer (loc_ptr, 2, byte_order);
+	   loc_ptr += 2;
+	 }
+      else
+	 {
+	   unsigned int bytes_read;
+	   length = read_unsigned_leb128 (NULL, loc_ptr, &bytes_read);
+	   loc_ptr += bytes_read;
+	 }
+
+      /* (It would improve readability to print only the minimum
+	 necessary digits of the second number of the range.)  */
+      fprintf_filtered (stream, _("  Range %s-%s: "),
+			paddress (gdbarch, low), paddress (gdbarch, high));
+
+      /* Now describe this particular location.  */
+      locexpr_describe_location_1 (symbol, low, stream, loc_ptr, length,
+				   addr_size, offset_size,
+				   dlbaton->per_cu, dlbaton->per_objfile);
+
+      fprintf_filtered (stream, "\n");
+
+      loc_ptr += length;
+    }
+}
+
+/* Describe the location of SYMBOL as an agent value in VALUE, generating
+   any necessary bytecode in AX.  */
+static void
+loclist_tracepoint_var_ref (struct symbol *symbol, struct agent_expr *ax,
+			    struct axs_value *value)
+{
+  struct dwarf2_loclist_baton *dlbaton
+    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
+  const gdb_byte *data;
+  size_t size;
+  unsigned int addr_size = dlbaton->per_cu->addr_size ();
+
+  data = dwarf2_find_location_expression (dlbaton, &size, ax->scope);
+  if (size == 0)
+    value->optimized_out = 1;
+  else
+    dwarf2_compile_expr_to_ax (ax, value, addr_size, data, data + size,
+			       dlbaton->per_cu, dlbaton->per_objfile);
+}
+
+/* symbol_computed_ops 'generate_c_location' method.  */
+
+static void
+loclist_generate_c_location (struct symbol *sym, string_file *stream,
+			     struct gdbarch *gdbarch,
+			     unsigned char *registers_used,
+			     CORE_ADDR pc, const char *result_name)
+{
+  struct dwarf2_loclist_baton *dlbaton
+    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (sym);
+  unsigned int addr_size = dlbaton->per_cu->addr_size ();
+  const gdb_byte *data;
+  size_t size;
+
+  data = dwarf2_find_location_expression (dlbaton, &size, pc);
+  if (size == 0)
+    error (_("symbol \"%s\" is optimized out"), sym->natural_name ());
+
+  compile_dwarf_expr_to_c (stream, result_name,
+			   sym, pc, gdbarch, registers_used, addr_size,
+			   data, data + size,
+			   dlbaton->per_cu,
+			   dlbaton->per_objfile);
+}
+
+/* The set of location functions used with the DWARF-2 expression
+   evaluator and location lists.  */
+const struct symbol_computed_ops dwarf2_loclist_funcs = {
+  loclist_read_variable,
+  loclist_read_variable_at_entry,
+  loclist_symbol_needs,
+  loclist_describe_location,
+  1,	/* location_has_loclist */
+  loclist_tracepoint_var_ref,
+  loclist_generate_c_location
+};
+
+void _initialize_dwarf2loc ();
+void
+_initialize_dwarf2loc ()
+{
+  add_setshow_zuinteger_cmd ("entry-values", class_maintenance,
+			     &entry_values_debug,
+			     _("Set entry values and tail call frames "
+			       "debugging."),
+			     _("Show entry values and tail call frames "
+			       "debugging."),
+			     _("When non-zero, the process of determining "
+			       "parameter values from function entry point "
+			       "and tail call frames will be printed."),
+			     NULL,
+			     show_entry_values_debug,
+			     &setdebuglist, &showdebuglist);
+
+  add_setshow_boolean_cmd ("always-disassemble", class_obscure,
+			   &dwarf_always_disassemble, _("\
+Set whether `info address' always disassembles DWARF expressions."), _("\
+Show whether `info address' always disassembles DWARF expressions."), _("\
+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."),
+			   NULL,
+			   show_dwarf_always_disassemble,
+			   &set_dwarf_cmdlist,
+			   &show_dwarf_cmdlist);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/loc.h ./gdb/dwarf2/loc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/loc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/loc.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,267 @@
+/* DWARF 2 location expression support for GDB.
+
+   Copyright (C) 2003-2021 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/>.  */
+
+#if !defined (DWARF2LOC_H)
+#define DWARF2LOC_H
+
+#include "dwarf2/expr.h"
+
+struct symbol_computed_ops;
+struct dwarf2_per_objfile;
+struct dwarf2_per_cu_data;
+struct dwarf2_loclist_baton;
+struct agent_expr;
+struct axs_value;
+
+/* This header is private to the DWARF-2 reader.  It is shared between
+   dwarf2read.c and dwarf2loc.c.  */
+
+/* `set debug entry-values' setting.  */
+extern unsigned int entry_values_debug;
+
+/* Find a particular location expression from a location list.  */
+const gdb_byte *dwarf2_find_location_expression
+  (struct dwarf2_loclist_baton *baton,
+   size_t *locexpr_length,
+   CORE_ADDR pc);
+
+/* Find the frame base information for FRAMEFUNC at PC.  START is an
+   out parameter which is set to point to the DWARF expression to
+   compute.  LENGTH is an out parameter which is set to the length of
+   the DWARF expression.  This throws an exception on error or if an
+   expression is not found; the returned length will never be
+   zero.  */
+
+extern void func_get_frame_base_dwarf_block (struct symbol *framefunc,
+					     CORE_ADDR pc,
+					     const gdb_byte **start,
+					     size_t *length);
+
+/* Evaluate a location description, starting at DATA and with length
+   SIZE, to find the current location of variable of TYPE in the context
+   of FRAME.  */
+
+struct value *dwarf2_evaluate_loc_desc (struct type *type,
+					struct frame_info *frame,
+					const gdb_byte *data,
+					size_t size,
+					dwarf2_per_cu_data *per_cu,
+					dwarf2_per_objfile *per_objfile);
+
+/* A chain of addresses that might be needed to resolve a dynamic
+   property.  */
+
+struct property_addr_info
+{
+  /* The type of the object whose dynamic properties, if any, are
+     being resolved.  */
+  struct type *type;
+
+  /* If not NULL, a buffer containing the object's value.  */
+  gdb::array_view<const gdb_byte> valaddr;
+
+  /* The address of that object.  */
+  CORE_ADDR addr;
+
+  /* If not NULL, a pointer to the info for the object containing
+     the object described by this node.  */
+  struct property_addr_info *next;
+};
+
+/* Converts a dynamic property into a static one.  FRAME is the frame in which
+   the property is evaluated; if NULL, the selected frame (if any) is used
+   instead.
+
+   ADDR_STACK is the stack of addresses that might be needed to evaluate the
+   property. When evaluating a property that is not related to a type, it can
+   be NULL.
+
+   Returns true if PROP could be converted and the static value is passed
+   back into VALUE, otherwise returns false.
+
+   If PUSH_INITIAL_VALUE is true, then the top value of ADDR_STACK
+   will be pushed before evaluating a location expression.  */
+
+bool dwarf2_evaluate_property (const struct dynamic_prop *prop,
+			       struct frame_info *frame,
+			       const struct property_addr_info *addr_stack,
+			       CORE_ADDR *value,
+			       bool push_initial_value = false);
+
+/* A helper for the compiler interface that compiles a single dynamic
+   property to C code.
+
+   STREAM is where the C code is to be written.
+   RESULT_NAME is the name of the generated variable.
+   GDBARCH is the architecture to use.
+   REGISTERS_USED is a bit-vector that is filled to note which
+   registers are required by the generated expression.
+   PROP is the property for which code is generated.
+   ADDRESS is the address at which the property is considered to be
+   evaluated.
+   SYM the originating symbol, used for error reporting.  */
+
+void dwarf2_compile_property_to_c (string_file *stream,
+				   const char *result_name,
+				   struct gdbarch *gdbarch,
+				   unsigned char *registers_used,
+				   const struct dynamic_prop *prop,
+				   CORE_ADDR address,
+				   struct symbol *sym);
+
+/* The symbol location baton types used by the DWARF-2 reader (i.e.
+   SYMBOL_LOCATION_BATON for a LOC_COMPUTED symbol).  "struct
+   dwarf2_locexpr_baton" is for a symbol with a single location
+   expression; "struct dwarf2_loclist_baton" is for a symbol with a
+   location list.  */
+
+struct dwarf2_locexpr_baton
+{
+  /* Pointer to the start of the location expression.  Valid only if SIZE is
+     not zero.  */
+  const gdb_byte *data;
+
+  /* Length of the location expression.  For optimized out expressions it is
+     zero.  */
+  size_t size;
+
+  /* When true this location expression is a reference and actually
+     describes the address at which the value of the attribute can be
+     found.  When false the expression provides the value of the attribute
+     directly.  */
+  bool is_reference;
+
+  /* The objfile that was used when creating this.  */
+  dwarf2_per_objfile *per_objfile;
+
+  /* The compilation unit containing the symbol whose location
+     we're computing.  */
+  struct dwarf2_per_cu_data *per_cu;
+};
+
+struct dwarf2_loclist_baton
+{
+  /* The initial base address for the location list, based on the compilation
+     unit.  */
+  CORE_ADDR base_address;
+
+  /* Pointer to the start of the location list.  */
+  const gdb_byte *data;
+
+  /* Length of the location list.  */
+  size_t size;
+
+  /* The objfile that was used when creating this.  */
+  dwarf2_per_objfile *per_objfile;
+
+  /* The compilation unit containing the symbol whose location
+     we're computing.  */
+  struct dwarf2_per_cu_data *per_cu;
+
+  /* Non-zero if the location list lives in .debug_loc.dwo.
+     The format of entries in this section are different.  */
+  unsigned char from_dwo;
+};
+
+/* The baton used when a dynamic property is an offset to a parent
+   type.  This can be used, for instance, then the bound of an array
+   inside a record is determined by the value of another field inside
+   that record.  */
+
+struct dwarf2_offset_baton
+{
+  /* The offset from the parent type where the value of the property
+     is stored.  In the example provided above, this would be the offset
+     of the field being used as the array bound.  */
+  LONGEST offset;
+
+  /* The type of the object whose property is dynamic.  In the example
+     provided above, this would the array's index type.  */
+  struct type *type;
+};
+
+/* A dynamic property is either expressed as a single location expression
+   or a location list.  If the property is an indirection, pointing to
+   another die, keep track of the targeted type in PROPERTY_TYPE.
+   Alternatively, if the property location gives the property value
+   directly then it will have PROPERTY_TYPE.  */
+
+struct dwarf2_property_baton
+{
+  /* If the property is an indirection, we need to evaluate the location
+     in the context of the type PROPERTY_TYPE.  If the property is supplied
+     by value then it will be of PROPERTY_TYPE.  This field should never be
+     NULL.  */
+  struct type *property_type;
+  union
+  {
+    /* Location expression either evaluated in the context of
+       PROPERTY_TYPE, or a value of type PROPERTY_TYPE.  */
+    struct dwarf2_locexpr_baton locexpr;
+
+    /* Location list to be evaluated in the context of PROPERTY_TYPE.  */
+    struct dwarf2_loclist_baton loclist;
+
+    /* The location is an offset to PROPERTY_TYPE.  */
+    struct dwarf2_offset_baton offset_info;
+  };
+};
+
+extern const struct symbol_computed_ops dwarf2_locexpr_funcs;
+extern const struct symbol_computed_ops dwarf2_loclist_funcs;
+
+extern const struct symbol_block_ops dwarf2_block_frame_base_locexpr_funcs;
+extern const struct symbol_block_ops dwarf2_block_frame_base_loclist_funcs;
+
+/* Determined tail calls for constructing virtual tail call frames.  */
+
+struct call_site_chain
+  {
+    /* Initially CALLERS == CALLEES == LENGTH.  For partially ambiguous result
+       CALLERS + CALLEES < LENGTH.  */
+    int callers, callees, length;
+
+    /* Variably sized array with LENGTH elements.  Later [0..CALLERS-1] contain
+       top (GDB "prev") sites and [LENGTH-CALLEES..LENGTH-1] contain bottom
+       (GDB "next") sites.  One is interested primarily in the PC field.  */
+    struct call_site *call_site[1];
+  };
+
+struct call_site_stuff;
+extern gdb::unique_xmalloc_ptr<call_site_chain> call_site_find_chain
+  (struct gdbarch *gdbarch, CORE_ADDR caller_pc, CORE_ADDR callee_pc);
+
+/* A helper function to convert a DWARF register to an arch register.
+   ARCH is the architecture.
+   DWARF_REG is the register.
+   If DWARF_REG is bad then a complaint is issued and -1 is returned.
+   Note: Some targets get this wrong.  */
+
+extern int dwarf_reg_to_regnum (struct gdbarch *arch, int dwarf_reg);
+
+/* A wrapper on dwarf_reg_to_regnum to throw an exception if the
+   DWARF register cannot be translated to an architecture register.
+   This takes a ULONGEST instead of an int because some callers actually have
+   a ULONGEST.  Negative values passed as ints will still be flagged as
+   invalid.  */
+
+extern int dwarf_reg_to_regnum_or_error (struct gdbarch *arch,
+					 ULONGEST dwarf_reg);
+
+#endif /* dwarf2loc.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/macro.c ./gdb/dwarf2/macro.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/macro.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/macro.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,865 @@
+/* Read DWARF macro information
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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 "dwarf2/read.h"
+#include "dwarf2/leb.h"
+#include "dwarf2/expr.h"
+#include "dwarf2/line-header.h"
+#include "dwarf2/section.h"
+#include "dwarf2/macro.h"
+#include "dwarf2/dwz.h"
+#include "buildsym.h"
+#include "macrotab.h"
+#include "complaints.h"
+
+static void
+dwarf2_macro_malformed_definition_complaint (const char *arg1)
+{
+  complaint (_("macro debug info contains a "
+	       "malformed macro definition:\n`%s'"),
+	     arg1);
+}
+
+static struct macro_source_file *
+macro_start_file (buildsym_compunit *builder,
+		  int file, int line,
+                  struct macro_source_file *current_file,
+                  const struct line_header *lh)
+{
+  /* File name relative to the compilation directory of this source file.  */
+  gdb::unique_xmalloc_ptr<char> file_name = lh->file_file_name (file);
+
+  if (! current_file)
+    {
+      /* Note: We don't create a macro table for this compilation unit
+	 at all until we actually get a filename.  */
+      struct macro_table *macro_table = builder->get_macro_table ();
+
+      /* If we have no current file, then this must be the start_file
+	 directive for the compilation unit's main source file.  */
+      current_file = macro_set_main (macro_table, file_name.get ());
+      macro_define_special (macro_table);
+    }
+  else
+    current_file = macro_include (current_file, line, file_name.get ());
+
+  return current_file;
+}
+
+static const char *
+consume_improper_spaces (const char *p, const char *body)
+{
+  if (*p == ' ')
+    {
+      complaint (_("macro definition contains spaces "
+		   "in formal argument list:\n`%s'"),
+		 body);
+
+      while (*p == ' ')
+        p++;
+    }
+
+  return p;
+}
+
+
+static void
+parse_macro_definition (struct macro_source_file *file, int line,
+                        const char *body)
+{
+  const char *p;
+
+  /* The body string takes one of two forms.  For object-like macro
+     definitions, it should be:
+
+        <macro name> " " <definition>
+
+     For function-like macro definitions, it should be:
+
+        <macro name> "() " <definition>
+     or
+        <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
+
+     Spaces may appear only where explicitly indicated, and in the
+     <definition>.
+
+     The Dwarf 2 spec says that an object-like macro's name is always
+     followed by a space, but versions of GCC around March 2002 omit
+     the space when the macro's definition is the empty string.
+
+     The Dwarf 2 spec says that there should be no spaces between the
+     formal arguments in a function-like macro's formal argument list,
+     but versions of GCC around March 2002 include spaces after the
+     commas.  */
+
+
+  /* Find the extent of the macro name.  The macro name is terminated
+     by either a space or null character (for an object-like macro) or
+     an opening paren (for a function-like macro).  */
+  for (p = body; *p; p++)
+    if (*p == ' ' || *p == '(')
+      break;
+
+  if (*p == ' ' || *p == '\0')
+    {
+      /* It's an object-like macro.  */
+      int name_len = p - body;
+      std::string name (body, name_len);
+      const char *replacement;
+
+      if (*p == ' ')
+        replacement = body + name_len + 1;
+      else
+        {
+	  dwarf2_macro_malformed_definition_complaint (body);
+          replacement = body + name_len;
+        }
+
+      macro_define_object (file, line, name.c_str (), replacement);
+    }
+  else if (*p == '(')
+    {
+      /* It's a function-like macro.  */
+      std::string name (body, p - body);
+      int argc = 0;
+      int argv_size = 1;
+      char **argv = XNEWVEC (char *, argv_size);
+
+      p++;
+
+      p = consume_improper_spaces (p, body);
+
+      /* Parse the formal argument list.  */
+      while (*p && *p != ')')
+        {
+          /* Find the extent of the current argument name.  */
+          const char *arg_start = p;
+
+          while (*p && *p != ',' && *p != ')' && *p != ' ')
+            p++;
+
+          if (! *p || p == arg_start)
+	    dwarf2_macro_malformed_definition_complaint (body);
+          else
+            {
+              /* Make sure argv has room for the new argument.  */
+              if (argc >= argv_size)
+                {
+                  argv_size *= 2;
+                  argv = XRESIZEVEC (char *, argv, argv_size);
+                }
+
+              argv[argc++] = savestring (arg_start, p - arg_start);
+            }
+
+          p = consume_improper_spaces (p, body);
+
+          /* Consume the comma, if present.  */
+          if (*p == ',')
+            {
+              p++;
+
+              p = consume_improper_spaces (p, body);
+            }
+        }
+
+      if (*p == ')')
+        {
+          p++;
+
+          if (*p == ' ')
+            /* Perfectly formed definition, no complaints.  */
+            macro_define_function (file, line, name.c_str (),
+                                   argc, (const char **) argv,
+                                   p + 1);
+          else if (*p == '\0')
+            {
+              /* Complain, but do define it.  */
+	      dwarf2_macro_malformed_definition_complaint (body);
+              macro_define_function (file, line, name.c_str (),
+                                     argc, (const char **) argv,
+                                     p);
+            }
+          else
+            /* Just complain.  */
+	    dwarf2_macro_malformed_definition_complaint (body);
+        }
+      else
+        /* Just complain.  */
+	dwarf2_macro_malformed_definition_complaint (body);
+
+      {
+        int i;
+
+        for (i = 0; i < argc; i++)
+          xfree (argv[i]);
+      }
+      xfree (argv);
+    }
+  else
+    dwarf2_macro_malformed_definition_complaint (body);
+}
+
+/* Skip some bytes from BYTES according to the form given in FORM.
+   Returns the new pointer.  */
+
+static const gdb_byte *
+skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
+		 enum dwarf_form form,
+		 unsigned int offset_size,
+		 const struct dwarf2_section_info *section)
+{
+  unsigned int bytes_read;
+
+  switch (form)
+    {
+    case DW_FORM_data1:
+    case DW_FORM_flag:
+      ++bytes;
+      break;
+
+    case DW_FORM_data2:
+      bytes += 2;
+      break;
+
+    case DW_FORM_data4:
+      bytes += 4;
+      break;
+
+    case DW_FORM_data8:
+      bytes += 8;
+      break;
+
+    case DW_FORM_data16:
+      bytes += 16;
+      break;
+
+    case DW_FORM_string:
+      read_direct_string (abfd, bytes, &bytes_read);
+      bytes += bytes_read;
+      break;
+
+    case DW_FORM_sec_offset:
+    case DW_FORM_strp:
+    case DW_FORM_GNU_strp_alt:
+      bytes += offset_size;
+      break;
+
+    case DW_FORM_block:
+      bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
+      bytes += bytes_read;
+      break;
+
+    case DW_FORM_block1:
+      bytes += 1 + read_1_byte (abfd, bytes);
+      break;
+    case DW_FORM_block2:
+      bytes += 2 + read_2_bytes (abfd, bytes);
+      break;
+    case DW_FORM_block4:
+      bytes += 4 + read_4_bytes (abfd, bytes);
+      break;
+
+    case DW_FORM_addrx:
+    case DW_FORM_sdata:
+    case DW_FORM_strx:
+    case DW_FORM_udata:
+    case DW_FORM_GNU_addr_index:
+    case DW_FORM_GNU_str_index:
+      bytes = gdb_skip_leb128 (bytes, buffer_end);
+      if (bytes == NULL)
+	{
+	  section->overflow_complaint ();
+	  return NULL;
+	}
+      break;
+
+    case DW_FORM_implicit_const:
+      break;
+
+    default:
+      {
+	complaint (_("invalid form 0x%x in `%s'"),
+		   form, section->get_name ());
+	return NULL;
+      }
+    }
+
+  return bytes;
+}
+
+/* A helper for dwarf_decode_macros that handles skipping an unknown
+   opcode.  Returns an updated pointer to the macro data buffer; or,
+   on error, issues a complaint and returns NULL.  */
+
+static const gdb_byte *
+skip_unknown_opcode (unsigned int opcode,
+		     const gdb_byte **opcode_definitions,
+		     const gdb_byte *mac_ptr, const gdb_byte *mac_end,
+		     bfd *abfd,
+		     unsigned int offset_size,
+		     const struct dwarf2_section_info *section)
+{
+  unsigned int bytes_read, i;
+  unsigned long arg;
+  const gdb_byte *defn;
+
+  if (opcode_definitions[opcode] == NULL)
+    {
+      complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
+		 opcode);
+      return NULL;
+    }
+
+  defn = opcode_definitions[opcode];
+  arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
+  defn += bytes_read;
+
+  for (i = 0; i < arg; ++i)
+    {
+      mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
+				 (enum dwarf_form) defn[i], offset_size,
+				 section);
+      if (mac_ptr == NULL)
+	{
+	  /* skip_form_bytes already issued the complaint.  */
+	  return NULL;
+	}
+    }
+
+  return mac_ptr;
+}
+
+/* A helper function which parses the header of a macro section.
+   If the macro section is the extended (for now called "GNU") type,
+   then this updates *OFFSET_SIZE.  Returns a pointer to just after
+   the header, or issues a complaint and returns NULL on error.  */
+
+static const gdb_byte *
+dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
+			  bfd *abfd,
+			  const gdb_byte *mac_ptr,
+			  unsigned int *offset_size,
+			  int section_is_gnu)
+{
+  memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
+
+  if (section_is_gnu)
+    {
+      unsigned int version, flags;
+
+      version = read_2_bytes (abfd, mac_ptr);
+      if (version != 4 && version != 5)
+	{
+	  complaint (_("unrecognized version `%d' in .debug_macro section"),
+		     version);
+	  return NULL;
+	}
+      mac_ptr += 2;
+
+      flags = read_1_byte (abfd, mac_ptr);
+      ++mac_ptr;
+      *offset_size = (flags & 1) ? 8 : 4;
+
+      if ((flags & 2) != 0)
+	/* We don't need the line table offset.  */
+	mac_ptr += *offset_size;
+
+      /* Vendor opcode descriptions.  */
+      if ((flags & 4) != 0)
+	{
+	  unsigned int i, count;
+
+	  count = read_1_byte (abfd, mac_ptr);
+	  ++mac_ptr;
+	  for (i = 0; i < count; ++i)
+	    {
+	      unsigned int opcode, bytes_read;
+	      unsigned long arg;
+
+	      opcode = read_1_byte (abfd, mac_ptr);
+	      ++mac_ptr;
+	      opcode_definitions[opcode] = mac_ptr;
+	      arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
+	      mac_ptr += bytes_read;
+	      mac_ptr += arg;
+	    }
+	}
+    }
+
+  return mac_ptr;
+}
+
+/* A helper for dwarf_decode_macros that handles the GNU extensions,
+   including DW_MACRO_import.  */
+
+static void
+dwarf_decode_macro_bytes (dwarf2_per_objfile *per_objfile,
+			  buildsym_compunit *builder,
+			  bfd *abfd,
+			  const gdb_byte *mac_ptr, const gdb_byte *mac_end,
+			  struct macro_source_file *current_file,
+			  const struct line_header *lh,
+			  const struct dwarf2_section_info *section,
+			  int section_is_gnu, int section_is_dwz,
+			  unsigned int offset_size,
+			  htab_t include_hash)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  enum dwarf_macro_record_type macinfo_type;
+  int at_commandline;
+  const gdb_byte *opcode_definitions[256];
+
+  mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
+				      &offset_size, section_is_gnu);
+  if (mac_ptr == NULL)
+    {
+      /* We already issued a complaint.  */
+      return;
+    }
+
+  /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
+     GDB is still reading the definitions from command line.  First
+     DW_MACINFO_start_file will need to be ignored as it was already executed
+     to create CURRENT_FILE for the main source holding also the command line
+     definitions.  On first met DW_MACINFO_start_file this flag is reset to
+     normally execute all the remaining DW_MACINFO_start_file macinfos.  */
+
+  at_commandline = 1;
+
+  do
+    {
+      /* Do we at least have room for a macinfo type byte?  */
+      if (mac_ptr >= mac_end)
+	{
+	  section->overflow_complaint ();
+	  break;
+	}
+
+      macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
+      mac_ptr++;
+
+      /* Note that we rely on the fact that the corresponding GNU and
+	 DWARF constants are the same.  */
+      DIAGNOSTIC_PUSH
+      DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
+      switch (macinfo_type)
+	{
+	  /* A zero macinfo type indicates the end of the macro
+	     information.  */
+	case 0:
+	  break;
+
+        case DW_MACRO_define:
+        case DW_MACRO_undef:
+	case DW_MACRO_define_strp:
+	case DW_MACRO_undef_strp:
+	case DW_MACRO_define_sup:
+	case DW_MACRO_undef_sup:
+          {
+            unsigned int bytes_read;
+            int line;
+            const char *body;
+	    int is_define;
+
+	    line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
+	    mac_ptr += bytes_read;
+
+	    if (macinfo_type == DW_MACRO_define
+		|| macinfo_type == DW_MACRO_undef)
+	      {
+		body = read_direct_string (abfd, mac_ptr, &bytes_read);
+		mac_ptr += bytes_read;
+	      }
+	    else
+	      {
+		LONGEST str_offset;
+
+		str_offset = read_offset (abfd, mac_ptr, offset_size);
+		mac_ptr += offset_size;
+
+		if (macinfo_type == DW_MACRO_define_sup
+		    || macinfo_type == DW_MACRO_undef_sup
+		    || section_is_dwz)
+		  {
+		    dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd);
+
+		    body = dwz->read_string (objfile, str_offset);
+		  }
+		else
+		  body = per_objfile->per_bfd->str.read_string (objfile,
+								str_offset,
+								"DW_FORM_strp");
+	      }
+
+	    is_define = (macinfo_type == DW_MACRO_define
+			 || macinfo_type == DW_MACRO_define_strp
+			 || macinfo_type == DW_MACRO_define_sup);
+            if (! current_file)
+	      {
+		/* DWARF violation as no main source is present.  */
+		complaint (_("debug info with no main source gives macro %s "
+			     "on line %d: %s"),
+			   is_define ? _("definition") : _("undefinition"),
+			   line, body);
+		break;
+	      }
+	    if ((line == 0 && !at_commandline)
+		|| (line != 0 && at_commandline))
+	      complaint (_("debug info gives %s macro %s with %s line %d: %s"),
+			 at_commandline ? _("command-line") : _("in-file"),
+			 is_define ? _("definition") : _("undefinition"),
+			 line == 0 ? _("zero") : _("non-zero"), line, body);
+
+	    if (body == NULL)
+	      {
+		/* Fedora's rpm-build's "debugedit" binary
+		   corrupted .debug_macro sections.
+
+		   For more info, see
+		   https://bugzilla.redhat.com/show_bug.cgi?id=1708786 */
+		complaint (_("debug info gives %s invalid macro %s "
+			     "without body (corrupted?) at line %d "
+			     "on file %s"),
+			   at_commandline ? _("command-line") : _("in-file"),
+			   is_define ? _("definition") : _("undefinition"),
+			   line, current_file->filename);
+	      }
+	    else if (is_define)
+	      parse_macro_definition (current_file, line, body);
+	    else
+	      {
+		gdb_assert (macinfo_type == DW_MACRO_undef
+			    || macinfo_type == DW_MACRO_undef_strp
+			    || macinfo_type == DW_MACRO_undef_sup);
+		macro_undef (current_file, line, body);
+	      }
+          }
+          break;
+
+        case DW_MACRO_start_file:
+          {
+            unsigned int bytes_read;
+            int line, file;
+
+            line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
+            mac_ptr += bytes_read;
+            file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
+            mac_ptr += bytes_read;
+
+	    if ((line == 0 && !at_commandline)
+		|| (line != 0 && at_commandline))
+	      complaint (_("debug info gives source %d included "
+			   "from %s at %s line %d"),
+			 file, at_commandline ? _("command-line") : _("file"),
+			 line == 0 ? _("zero") : _("non-zero"), line);
+
+	    if (at_commandline)
+	      {
+		/* This DW_MACRO_start_file was executed in the
+		   pass one.  */
+		at_commandline = 0;
+	      }
+	    else
+	      current_file = macro_start_file (builder, file, line,
+					       current_file, lh);
+          }
+          break;
+
+        case DW_MACRO_end_file:
+          if (! current_file)
+	    complaint (_("macro debug info has an unmatched "
+			 "`close_file' directive"));
+          else
+            {
+              current_file = current_file->included_by;
+              if (! current_file)
+                {
+                  enum dwarf_macro_record_type next_type;
+
+                  /* GCC circa March 2002 doesn't produce the zero
+                     type byte marking the end of the compilation
+                     unit.  Complain if it's not there, but exit no
+                     matter what.  */
+
+                  /* Do we at least have room for a macinfo type byte?  */
+                  if (mac_ptr >= mac_end)
+                    {
+		      section->overflow_complaint ();
+                      return;
+                    }
+
+                  /* We don't increment mac_ptr here, so this is just
+                     a look-ahead.  */
+                  next_type
+		    = (enum dwarf_macro_record_type) read_1_byte (abfd,
+								  mac_ptr);
+                  if (next_type != 0)
+		    complaint (_("no terminating 0-type entry for "
+				 "macros in `.debug_macinfo' section"));
+
+                  return;
+                }
+            }
+          break;
+
+	case DW_MACRO_import:
+	case DW_MACRO_import_sup:
+	  {
+	    LONGEST offset;
+	    void **slot;
+	    bfd *include_bfd = abfd;
+	    const struct dwarf2_section_info *include_section = section;
+	    const gdb_byte *include_mac_end = mac_end;
+	    int is_dwz = section_is_dwz;
+	    const gdb_byte *new_mac_ptr;
+
+	    offset = read_offset (abfd, mac_ptr, offset_size);
+	    mac_ptr += offset_size;
+
+	    if (macinfo_type == DW_MACRO_import_sup)
+	      {
+		dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd);
+
+		dwz->macro.read (objfile);
+
+		include_section = &dwz->macro;
+		include_bfd = include_section->get_bfd_owner ();
+		include_mac_end = dwz->macro.buffer + dwz->macro.size;
+		is_dwz = 1;
+	      }
+
+	    new_mac_ptr = include_section->buffer + offset;
+	    slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
+
+	    if (*slot != NULL)
+	      {
+		/* This has actually happened; see
+		   http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
+		complaint (_("recursive DW_MACRO_import in "
+			     ".debug_macro section"));
+	      }
+	    else
+	      {
+		*slot = (void *) new_mac_ptr;
+
+		dwarf_decode_macro_bytes (per_objfile, builder, include_bfd,
+					  new_mac_ptr, include_mac_end,
+					  current_file, lh, section,
+					  section_is_gnu, is_dwz, offset_size,
+					  include_hash);
+
+		htab_remove_elt (include_hash, (void *) new_mac_ptr);
+	      }
+	  }
+	  break;
+
+        case DW_MACINFO_vendor_ext:
+	  if (!section_is_gnu)
+	    {
+	      unsigned int bytes_read;
+
+	      /* This reads the constant, but since we don't recognize
+		 any vendor extensions, we ignore it.  */
+	      read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
+	      mac_ptr += bytes_read;
+	      read_direct_string (abfd, mac_ptr, &bytes_read);
+	      mac_ptr += bytes_read;
+
+	      /* We don't recognize any vendor extensions.  */
+	      break;
+	    }
+	  /* FALLTHROUGH */
+
+	default:
+	  mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
+					 mac_ptr, mac_end, abfd, offset_size,
+					 section);
+	  if (mac_ptr == NULL)
+	    return;
+	  break;
+        }
+      DIAGNOSTIC_POP
+    } while (macinfo_type != 0);
+}
+
+void
+dwarf_decode_macros (dwarf2_per_objfile *per_objfile,
+		     buildsym_compunit *builder,
+		     const dwarf2_section_info *section,
+		     const struct line_header *lh, unsigned int offset_size,
+		     unsigned int offset, int section_is_gnu)
+{
+  bfd *abfd;
+  const gdb_byte *mac_ptr, *mac_end;
+  struct macro_source_file *current_file = 0;
+  enum dwarf_macro_record_type macinfo_type;
+  const gdb_byte *opcode_definitions[256];
+  void **slot;
+
+  abfd = section->get_bfd_owner ();
+
+  /* First pass: Find the name of the base filename.
+     This filename is needed in order to process all macros whose definition
+     (or undefinition) comes from the command line.  These macros are defined
+     before the first DW_MACINFO_start_file entry, and yet still need to be
+     associated to the base file.
+
+     To determine the base file name, we scan the macro definitions until we
+     reach the first DW_MACINFO_start_file entry.  We then initialize
+     CURRENT_FILE accordingly so that any macro definition found before the
+     first DW_MACINFO_start_file can still be associated to the base file.  */
+
+  mac_ptr = section->buffer + offset;
+  mac_end = section->buffer + section->size;
+
+  mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
+				      &offset_size, section_is_gnu);
+  if (mac_ptr == NULL)
+    {
+      /* We already issued a complaint.  */
+      return;
+    }
+
+  do
+    {
+      /* Do we at least have room for a macinfo type byte?  */
+      if (mac_ptr >= mac_end)
+        {
+	  /* Complaint is printed during the second pass as GDB will probably
+	     stop the first pass earlier upon finding
+	     DW_MACINFO_start_file.  */
+	  break;
+        }
+
+      macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
+      mac_ptr++;
+
+      /* Note that we rely on the fact that the corresponding GNU and
+	 DWARF constants are the same.  */
+      DIAGNOSTIC_PUSH
+      DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
+      switch (macinfo_type)
+        {
+          /* A zero macinfo type indicates the end of the macro
+             information.  */
+        case 0:
+	  break;
+
+	case DW_MACRO_define:
+	case DW_MACRO_undef:
+	  /* Only skip the data by MAC_PTR.  */
+	  {
+	    unsigned int bytes_read;
+
+	    read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
+	    mac_ptr += bytes_read;
+	    read_direct_string (abfd, mac_ptr, &bytes_read);
+	    mac_ptr += bytes_read;
+	  }
+	  break;
+
+	case DW_MACRO_start_file:
+	  {
+	    unsigned int bytes_read;
+	    int line, file;
+
+	    line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
+	    mac_ptr += bytes_read;
+	    file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
+	    mac_ptr += bytes_read;
+
+	    current_file = macro_start_file (builder, file, line,
+					     current_file, lh);
+	  }
+	  break;
+
+	case DW_MACRO_end_file:
+	  /* No data to skip by MAC_PTR.  */
+	  break;
+
+	case DW_MACRO_define_strp:
+	case DW_MACRO_undef_strp:
+	case DW_MACRO_define_sup:
+	case DW_MACRO_undef_sup:
+	  {
+	    unsigned int bytes_read;
+
+	    read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
+	    mac_ptr += bytes_read;
+	    mac_ptr += offset_size;
+	  }
+	  break;
+
+	case DW_MACRO_import:
+	case DW_MACRO_import_sup:
+	  /* Note that, according to the spec, a transparent include
+	     chain cannot call DW_MACRO_start_file.  So, we can just
+	     skip this opcode.  */
+	  mac_ptr += offset_size;
+	  break;
+
+	case DW_MACINFO_vendor_ext:
+	  /* Only skip the data by MAC_PTR.  */
+	  if (!section_is_gnu)
+	    {
+	      unsigned int bytes_read;
+
+	      read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
+	      mac_ptr += bytes_read;
+	      read_direct_string (abfd, mac_ptr, &bytes_read);
+	      mac_ptr += bytes_read;
+	    }
+	  /* FALLTHROUGH */
+
+	default:
+	  mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
+					 mac_ptr, mac_end, abfd, offset_size,
+					 section);
+	  if (mac_ptr == NULL)
+	    return;
+	  break;
+	}
+      DIAGNOSTIC_POP
+    } while (macinfo_type != 0 && current_file == NULL);
+
+  /* Second pass: Process all entries.
+
+     Use the AT_COMMAND_LINE flag to determine whether we are still processing
+     command-line macro definitions/undefinitions.  This flag is unset when we
+     reach the first DW_MACINFO_start_file entry.  */
+
+  htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
+					   htab_eq_pointer,
+					   NULL, xcalloc, xfree));
+  mac_ptr = section->buffer + offset;
+  slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
+  *slot = (void *) mac_ptr;
+  dwarf_decode_macro_bytes (per_objfile, builder, abfd, mac_ptr, mac_end,
+			    current_file, lh, section, section_is_gnu, 0,
+			    offset_size, include_hash.get ());
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/macro.h ./gdb/dwarf2/macro.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/macro.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/macro.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,33 @@
+/* DWARF macro support for GDB.
+
+   Copyright (C) 2003-2021 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_DWARF2_MACRO_H
+#define GDB_DWARF2_MACRO_H
+
+struct buildsym_compunit;
+
+extern void dwarf_decode_macros (dwarf2_per_objfile *per_objfile,
+				 buildsym_compunit *builder,
+				 const dwarf2_section_info *section,
+				 const struct line_header *lh,
+				 unsigned int offset_size,
+				 unsigned int offset,
+				 int section_is_gnu);
+
+#endif /* GDB_DWARF2_MACRO_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/read.c ./gdb/dwarf2/read.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/read.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/read.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,24824 @@
+/* DWARF 2 debugging format support for GDB.
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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/>.  */
+
+/* FIXME: Various die-reading functions need to be more careful with
+   reading off the end of the section.
+   E.g., load_partial_dies, read_partial_die.  */
+
+#include "defs.h"
+#include "dwarf2/read.h"
+#include "dwarf2/abbrev.h"
+#include "dwarf2/attribute.h"
+#include "dwarf2/comp-unit.h"
+#include "dwarf2/index-cache.h"
+#include "dwarf2/index-common.h"
+#include "dwarf2/leb.h"
+#include "dwarf2/line-header.h"
+#include "dwarf2/dwz.h"
+#include "dwarf2/macro.h"
+#include "dwarf2/die.h"
+#include "dwarf2/stringify.h"
+#include "bfd.h"
+#include "elf-bfd.h"
+#include "symtab.h"
+#include "gdbtypes.h"
+#include "objfiles.h"
+#include "dwarf2.h"
+#include "buildsym.h"
+#include "demangle.h"
+#include "gdb-demangle.h"
+#include "filenames.h"	/* for DOSish file names */
+#include "language.h"
+#include "complaints.h"
+#include "dwarf2/expr.h"
+#include "dwarf2/loc.h"
+#include "cp-support.h"
+#include "hashtab.h"
+#include "command.h"
+#include "gdbcmd.h"
+#include "block.h"
+#include "addrmap.h"
+#include "typeprint.h"
+#include "psympriv.h"
+#include "c-lang.h"
+#include "go-lang.h"
+#include "valprint.h"
+#include "gdbcore.h" /* for gnutarget */
+#include "gdb/gdb-index.h"
+#include "gdb_bfd.h"
+#include "f-lang.h"
+#include "source.h"
+#include "build-id.h"
+#include "namespace.h"
+#include "gdbsupport/function-view.h"
+#include "gdbsupport/gdb_optional.h"
+#include "gdbsupport/underlying.h"
+#include "gdbsupport/hash_enum.h"
+#include "filename-seen-cache.h"
+#include "producer.h"
+#include <fcntl.h>
+#include <algorithm>
+#include <unordered_map>
+#include "gdbsupport/selftest.h"
+#include "rust-lang.h"
+#include "gdbsupport/pathstuff.h"
+#include "count-one-bits.h"
+#include "debuginfod-support.h"
+
+/* When == 1, print basic high level tracing messages.
+   When > 1, be more verbose.
+   This is in contrast to the low level DIE reading of dwarf_die_debug.  */
+static unsigned int dwarf_read_debug = 0;
+
+/* When non-zero, dump DIEs after they are read in.  */
+static unsigned int dwarf_die_debug = 0;
+
+/* When non-zero, dump line number entries as they are read in.  */
+unsigned int dwarf_line_debug = 0;
+
+/* When true, cross-check physname against demangler.  */
+static bool check_physname = false;
+
+/* When true, do not reject deprecated .gdb_index sections.  */
+static bool use_deprecated_index_sections = false;
+
+/* This is used to store the data that is always per objfile.  */
+static const objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
+
+/* These are used to store the dwarf2_per_bfd objects.
+
+   objfiles having the same BFD, which doesn't require relocations, are going to
+   share a dwarf2_per_bfd object, which is held in the _bfd_data_key version.
+
+   Other objfiles are not going to share a dwarf2_per_bfd with any other
+   objfiles, so they'll have their own version kept in the _objfile_data_key
+   version.  */
+static const struct bfd_key<dwarf2_per_bfd> dwarf2_per_bfd_bfd_data_key;
+static const struct objfile_key<dwarf2_per_bfd> dwarf2_per_bfd_objfile_data_key;
+
+/* The "aclass" indices for various kinds of computed DWARF symbols.  */
+
+static int dwarf2_locexpr_index;
+static int dwarf2_loclist_index;
+static int dwarf2_locexpr_block_index;
+static int dwarf2_loclist_block_index;
+
+/* Size of .debug_loclists section header for 32-bit DWARF format.  */
+#define LOCLIST_HEADER_SIZE32 12
+
+/* Size of .debug_loclists section header for 64-bit DWARF format.  */
+#define LOCLIST_HEADER_SIZE64 20
+
+/* Size of .debug_rnglists section header for 32-bit DWARF format.  */
+#define RNGLIST_HEADER_SIZE32 12
+
+/* Size of .debug_rnglists section header for 64-bit DWARF format.  */
+#define RNGLIST_HEADER_SIZE64 20
+
+/* An index into a (C++) symbol name component in a symbol name as
+   recorded in the mapped_index's symbol table.  For each C++ symbol
+   in the symbol table, we record one entry for the start of each
+   component in the symbol in a table of name components, and then
+   sort the table, in order to be able to binary search symbol names,
+   ignoring leading namespaces, both completion and regular look up.
+   For example, for symbol "A::B::C", we'll have an entry that points
+   to "A::B::C", another that points to "B::C", and another for "C".
+   Note that function symbols in GDB index have no parameter
+   information, just the function/method names.  You can convert a
+   name_component to a "const char *" using the
+   'mapped_index::symbol_name_at(offset_type)' method.  */
+
+struct name_component
+{
+  /* Offset in the symbol name where the component starts.  Stored as
+     a (32-bit) offset instead of a pointer to save memory and improve
+     locality on 64-bit architectures.  */
+  offset_type name_offset;
+
+  /* The symbol's index in the symbol and constant pool tables of a
+     mapped_index.  */
+  offset_type idx;
+};
+
+/* Base class containing bits shared by both .gdb_index and
+   .debug_name indexes.  */
+
+struct mapped_index_base
+{
+  mapped_index_base () = default;
+  DISABLE_COPY_AND_ASSIGN (mapped_index_base);
+
+  /* The name_component table (a sorted vector).  See name_component's
+     description above.  */
+  std::vector<name_component> name_components;
+
+  /* How NAME_COMPONENTS is sorted.  */
+  enum case_sensitivity name_components_casing;
+
+  /* Return the number of names in the symbol table.  */
+  virtual size_t symbol_name_count () const = 0;
+
+  /* Get the name of the symbol at IDX in the symbol table.  */
+  virtual const char *symbol_name_at
+    (offset_type idx, dwarf2_per_objfile *per_objfile) const = 0;
+
+  /* Return whether the name at IDX in the symbol table should be
+     ignored.  */
+  virtual bool symbol_name_slot_invalid (offset_type idx) const
+  {
+    return false;
+  }
+
+  /* Build the symbol name component sorted vector, if we haven't
+     yet.  */
+  void build_name_components (dwarf2_per_objfile *per_objfile);
+
+  /* Returns the lower (inclusive) and upper (exclusive) bounds of the
+     possible matches for LN_NO_PARAMS in the name component
+     vector.  */
+  std::pair<std::vector<name_component>::const_iterator,
+	    std::vector<name_component>::const_iterator>
+    find_name_components_bounds (const lookup_name_info &ln_no_params,
+				 enum language lang,
+				 dwarf2_per_objfile *per_objfile) const;
+
+  /* Prevent deleting/destroying via a base class pointer.  */
+protected:
+  ~mapped_index_base() = default;
+};
+
+/* A description of the mapped index.  The file format is described in
+   a comment by the code that writes the index.  */
+struct mapped_index final : public mapped_index_base
+{
+  /* A slot/bucket in the symbol table hash.  */
+  struct symbol_table_slot
+  {
+    const offset_type name;
+    const offset_type vec;
+  };
+
+  /* Index data format version.  */
+  int version = 0;
+
+  /* The address table data.  */
+  gdb::array_view<const gdb_byte> address_table;
+
+  /* The symbol table, implemented as a hash table.  */
+  gdb::array_view<symbol_table_slot> symbol_table;
+
+  /* A pointer to the constant pool.  */
+  const char *constant_pool = nullptr;
+
+  bool symbol_name_slot_invalid (offset_type idx) const override
+  {
+    const auto &bucket = this->symbol_table[idx];
+    return bucket.name == 0 && bucket.vec == 0;
+  }
+
+  /* Convenience method to get at the name of the symbol at IDX in the
+     symbol table.  */
+  const char *symbol_name_at
+    (offset_type idx, dwarf2_per_objfile *per_objfile) const override
+  { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
+
+  size_t symbol_name_count () const override
+  { return this->symbol_table.size (); }
+};
+
+/* A description of the mapped .debug_names.
+   Uninitialized map has CU_COUNT 0.  */
+struct mapped_debug_names final : public mapped_index_base
+{
+  bfd_endian dwarf5_byte_order;
+  bool dwarf5_is_dwarf64;
+  bool augmentation_is_gdb;
+  uint8_t offset_size;
+  uint32_t cu_count = 0;
+  uint32_t tu_count, bucket_count, name_count;
+  const gdb_byte *cu_table_reordered, *tu_table_reordered;
+  const uint32_t *bucket_table_reordered, *hash_table_reordered;
+  const gdb_byte *name_table_string_offs_reordered;
+  const gdb_byte *name_table_entry_offs_reordered;
+  const gdb_byte *entry_pool;
+
+  struct index_val
+  {
+    ULONGEST dwarf_tag;
+    struct attr
+    {
+      /* Attribute name DW_IDX_*.  */
+      ULONGEST dw_idx;
+
+      /* Attribute form DW_FORM_*.  */
+      ULONGEST form;
+
+      /* Value if FORM is DW_FORM_implicit_const.  */
+      LONGEST implicit_const;
+    };
+    std::vector<attr> attr_vec;
+  };
+
+  std::unordered_map<ULONGEST, index_val> abbrev_map;
+
+  const char *namei_to_name
+    (uint32_t namei, dwarf2_per_objfile *per_objfile) const;
+
+  /* Implementation of the mapped_index_base virtual interface, for
+     the name_components cache.  */
+
+  const char *symbol_name_at
+    (offset_type idx, dwarf2_per_objfile *per_objfile) const override
+  { return namei_to_name (idx, per_objfile); }
+
+  size_t symbol_name_count () const override
+  { return this->name_count; }
+};
+
+/* See dwarf2read.h.  */
+
+dwarf2_per_objfile *
+get_dwarf2_per_objfile (struct objfile *objfile)
+{
+  return dwarf2_objfile_data_key.get (objfile);
+}
+
+/* Default names of the debugging sections.  */
+
+/* Note that if the debugging section has been compressed, it might
+   have a name like .zdebug_info.  */
+
+static const struct dwarf2_debug_sections dwarf2_elf_names =
+{
+  { ".debug_info", ".zdebug_info" },
+  { ".debug_abbrev", ".zdebug_abbrev" },
+  { ".debug_line", ".zdebug_line" },
+  { ".debug_loc", ".zdebug_loc" },
+  { ".debug_loclists", ".zdebug_loclists" },
+  { ".debug_macinfo", ".zdebug_macinfo" },
+  { ".debug_macro", ".zdebug_macro" },
+  { ".debug_str", ".zdebug_str" },
+  { ".debug_str_offsets", ".zdebug_str_offsets" },
+  { ".debug_line_str", ".zdebug_line_str" },
+  { ".debug_ranges", ".zdebug_ranges" },
+  { ".debug_rnglists", ".zdebug_rnglists" },
+  { ".debug_types", ".zdebug_types" },
+  { ".debug_addr", ".zdebug_addr" },
+  { ".debug_frame", ".zdebug_frame" },
+  { ".eh_frame", NULL },
+  { ".gdb_index", ".zgdb_index" },
+  { ".debug_names", ".zdebug_names" },
+  { ".debug_aranges", ".zdebug_aranges" },
+  23
+};
+
+/* List of DWO/DWP sections.  */
+
+static const struct dwop_section_names
+{
+  struct dwarf2_section_names abbrev_dwo;
+  struct dwarf2_section_names info_dwo;
+  struct dwarf2_section_names line_dwo;
+  struct dwarf2_section_names loc_dwo;
+  struct dwarf2_section_names loclists_dwo;
+  struct dwarf2_section_names macinfo_dwo;
+  struct dwarf2_section_names macro_dwo;
+  struct dwarf2_section_names rnglists_dwo;
+  struct dwarf2_section_names str_dwo;
+  struct dwarf2_section_names str_offsets_dwo;
+  struct dwarf2_section_names types_dwo;
+  struct dwarf2_section_names cu_index;
+  struct dwarf2_section_names tu_index;
+}
+dwop_section_names =
+{
+  { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
+  { ".debug_info.dwo", ".zdebug_info.dwo" },
+  { ".debug_line.dwo", ".zdebug_line.dwo" },
+  { ".debug_loc.dwo", ".zdebug_loc.dwo" },
+  { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
+  { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
+  { ".debug_macro.dwo", ".zdebug_macro.dwo" },
+  { ".debug_rnglists.dwo", ".zdebug_rnglists.dwo" },
+  { ".debug_str.dwo", ".zdebug_str.dwo" },
+  { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
+  { ".debug_types.dwo", ".zdebug_types.dwo" },
+  { ".debug_cu_index", ".zdebug_cu_index" },
+  { ".debug_tu_index", ".zdebug_tu_index" },
+};
+
+/* local data types */
+
+/* The location list and range list sections (.debug_loclists & .debug_rnglists)
+   begin with a header,  which contains the following information.  */
+struct loclists_rnglists_header
+{
+  /* A 4-byte or 12-byte length containing the length of the
+     set of entries for this compilation unit, not including the
+     length field itself.  */
+  unsigned int length;
+
+  /* A 2-byte version identifier.  */
+  short version;
+
+  /* A 1-byte unsigned integer containing the size in bytes of an address on
+     the target system.  */
+  unsigned char addr_size;
+
+  /* A 1-byte unsigned integer containing the size in bytes of a segment selector
+     on the target system.  */
+  unsigned char segment_collector_size;
+
+  /* A 4-byte count of the number of offsets that follow the header.  */
+  unsigned int offset_entry_count;
+};
+
+/* Type used for delaying computation of method physnames.
+   See comments for compute_delayed_physnames.  */
+struct delayed_method_info
+{
+  /* The type to which the method is attached, i.e., its parent class.  */
+  struct type *type;
+
+  /* The index of the method in the type's function fieldlists.  */
+  int fnfield_index;
+
+  /* The index of the method in the fieldlist.  */
+  int index;
+
+  /* The name of the DIE.  */
+  const char *name;
+
+  /*  The DIE associated with this method.  */
+  struct die_info *die;
+};
+
+/* Internal state when decoding a particular compilation unit.  */
+struct dwarf2_cu
+{
+  explicit dwarf2_cu (dwarf2_per_cu_data *per_cu,
+		      dwarf2_per_objfile *per_objfile);
+
+  DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
+
+  /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
+     Create the set of symtabs used by this TU, or if this TU is sharing
+     symtabs with another TU and the symtabs have already been created
+     then restore those symtabs in the line header.
+     We don't need the pc/line-number mapping for type units.  */
+  void setup_type_unit_groups (struct die_info *die);
+
+  /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
+     buildsym_compunit constructor.  */
+  struct compunit_symtab *start_symtab (const char *name,
+					const char *comp_dir,
+					CORE_ADDR low_pc);
+
+  /* Reset the builder.  */
+  void reset_builder () { m_builder.reset (); }
+
+  /* Return a type that is a generic pointer type, the size of which
+     matches the address size given in the compilation unit header for
+     this CU.  */
+  struct type *addr_type () const;
+
+  /* Find an integer type the same size as the address size given in
+     the compilation unit header for this CU.  UNSIGNED_P controls if
+     the integer is unsigned or not.  */
+  struct type *addr_sized_int_type (bool unsigned_p) const;
+
+  /* The header of the compilation unit.  */
+  struct comp_unit_head header {};
+
+  /* Base address of this compilation unit.  */
+  gdb::optional<CORE_ADDR> base_address;
+
+  /* The language we are debugging.  */
+  enum language language = language_unknown;
+  const struct language_defn *language_defn = nullptr;
+
+  const char *producer = nullptr;
+
+private:
+  /* The symtab builder for this CU.  This is only non-NULL when full
+     symbols are being read.  */
+  std::unique_ptr<buildsym_compunit> m_builder;
+
+public:
+  /* The generic symbol table building routines have separate lists for
+     file scope symbols and all all other scopes (local scopes).  So
+     we need to select the right one to pass to add_symbol_to_list().
+     We do it by keeping a pointer to the correct list in list_in_scope.
+
+     FIXME: The original dwarf code just treated the file scope as the
+     first local scope, and all other local scopes as nested local
+     scopes, and worked fine.  Check to see if we really need to
+     distinguish these in buildsym.c.  */
+  struct pending **list_in_scope = nullptr;
+
+  /* Hash table holding all the loaded partial DIEs
+     with partial_die->offset.SECT_OFF as hash.  */
+  htab_t partial_dies = nullptr;
+
+  /* Storage for things with the same lifetime as this read-in compilation
+     unit, including partial DIEs.  */
+  auto_obstack comp_unit_obstack;
+
+  /* Backlink to our per_cu entry.  */
+  struct dwarf2_per_cu_data *per_cu;
+
+  /* The dwarf2_per_objfile that owns this.  */
+  dwarf2_per_objfile *per_objfile;
+
+  /* How many compilation units ago was this CU last referenced?  */
+  int last_used = 0;
+
+  /* A hash table of DIE cu_offset for following references with
+     die_info->offset.sect_off as hash.  */
+  htab_t die_hash = nullptr;
+
+  /* Full DIEs if read in.  */
+  struct die_info *dies = nullptr;
+
+  /* A set of pointers to dwarf2_per_cu_data objects for compilation
+     units referenced by this one.  Only set during full symbol processing;
+     partial symbol tables do not have dependencies.  */
+  htab_t dependencies = nullptr;
+
+  /* Header data from the line table, during full symbol processing.  */
+  struct line_header *line_header = nullptr;
+  /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
+     it's owned by dwarf2_per_bfd::line_header_hash.  If non-NULL,
+     this is the DW_TAG_compile_unit die for this CU.  We'll hold on
+     to the line header as long as this DIE is being processed.  See
+     process_die_scope.  */
+  die_info *line_header_die_owner = nullptr;
+
+  /* A list of methods which need to have physnames computed
+     after all type information has been read.  */
+  std::vector<delayed_method_info> method_list;
+
+  /* To be copied to symtab->call_site_htab.  */
+  htab_t call_site_htab = nullptr;
+
+  /* Non-NULL if this CU came from a DWO file.
+     There is an invariant here that is important to remember:
+     Except for attributes copied from the top level DIE in the "main"
+     (or "stub") file in preparation for reading the DWO file
+     (e.g., DW_AT_addr_base), we KISS: there is only *one* CU.
+     Either there isn't a DWO file (in which case this is NULL and the point
+     is moot), or there is and either we're not going to read it (in which
+     case this is NULL) or there is and we are reading it (in which case this
+     is non-NULL).  */
+  struct dwo_unit *dwo_unit = nullptr;
+
+  /* The DW_AT_addr_base (DW_AT_GNU_addr_base) attribute if present.
+     Note this value comes from the Fission stub CU/TU's DIE.  */
+  gdb::optional<ULONGEST> addr_base;
+
+  /* The DW_AT_rnglists_base attribute if present.
+     Note this value comes from the Fission stub CU/TU's DIE.
+     Also note that the value is zero in the non-DWO case so this value can
+     be used without needing to know whether DWO files are in use or not.
+     N.B. This does not apply to DW_AT_ranges appearing in
+     DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
+     DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
+     DW_AT_rnglists_base *would* have to be applied, and we'd have to care
+     whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
+  ULONGEST ranges_base = 0;
+
+  /* The DW_AT_loclists_base attribute if present.  */
+  ULONGEST loclist_base = 0;
+
+  /* When reading debug info generated by older versions of rustc, we
+     have to rewrite some union types to be struct types with a
+     variant part.  This rewriting must be done after the CU is fully
+     read in, because otherwise at the point of rewriting some struct
+     type might not have been fully processed.  So, we keep a list of
+     all such types here and process them after expansion.  */
+  std::vector<struct type *> rust_unions;
+
+  /* The DW_AT_str_offsets_base attribute if present.  For DWARF 4 version DWO
+     files, the value is implicitly zero.  For DWARF 5 version DWO files, the
+     value is often implicit and is the size of the header of
+     .debug_str_offsets section (8 or 4, depending on the address size).  */
+  gdb::optional<ULONGEST> str_offsets_base;
+
+  /* Mark used when releasing cached dies.  */
+  bool mark : 1;
+
+  /* This CU references .debug_loc.  See the symtab->locations_valid field.
+     This test is imperfect as there may exist optimized debug code not using
+     any location list and still facing inlining issues if handled as
+     unoptimized code.  For a future better test see GCC PR other/32998.  */
+  bool has_loclist : 1;
+
+  /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is true
+     if all the producer_is_* fields are valid.  This information is cached
+     because profiling CU expansion showed excessive time spent in
+     producer_is_gxx_lt_4_6.  */
+  bool checked_producer : 1;
+  bool producer_is_gxx_lt_4_6 : 1;
+  bool producer_is_gcc_lt_4_3 : 1;
+  bool producer_is_icc : 1;
+  bool producer_is_icc_lt_14 : 1;
+  bool producer_is_codewarrior : 1;
+
+  /* When true, the file that we're processing is known to have
+     debugging info for C++ namespaces.  GCC 3.3.x did not produce
+     this information, but later versions do.  */
+
+  bool processing_has_namespace_info : 1;
+
+  struct partial_die_info *find_partial_die (sect_offset sect_off);
+
+  /* If this CU was inherited by another CU (via specification,
+     abstract_origin, etc), this is the ancestor CU.  */
+  dwarf2_cu *ancestor;
+
+  /* Get the buildsym_compunit for this CU.  */
+  buildsym_compunit *get_builder ()
+  {
+    /* If this CU has a builder associated with it, use that.  */
+    if (m_builder != nullptr)
+      return m_builder.get ();
+
+    /* Otherwise, search ancestors for a valid builder.  */
+    if (ancestor != nullptr)
+      return ancestor->get_builder ();
+
+    return nullptr;
+  }
+};
+
+/* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
+   This includes type_unit_group and quick_file_names.  */
+
+struct stmt_list_hash
+{
+  /* The DWO unit this table is from or NULL if there is none.  */
+  struct dwo_unit *dwo_unit;
+
+  /* Offset in .debug_line or .debug_line.dwo.  */
+  sect_offset line_sect_off;
+};
+
+/* Each element of dwarf2_per_bfd->type_unit_groups is a pointer to
+   an object of this type.  This contains elements of type unit groups
+   that can be shared across objfiles.  The non-shareable parts are in
+   type_unit_group_unshareable.  */
+
+struct type_unit_group
+{
+  /* dwarf2read.c's main "handle" on a TU symtab.
+     To simplify things we create an artificial CU that "includes" all the
+     type units using this stmt_list so that the rest of the code still has
+     a "per_cu" handle on the symtab.  */
+  struct dwarf2_per_cu_data per_cu;
+
+  /* The TUs that share this DW_AT_stmt_list entry.
+     This is added to while parsing type units to build partial symtabs,
+     and is deleted afterwards and not used again.  */
+  std::vector<signatured_type *> *tus;
+
+  /* The data used to construct the hash key.  */
+  struct stmt_list_hash hash;
+};
+
+/* These sections are what may appear in a (real or virtual) DWO file.  */
+
+struct dwo_sections
+{
+  struct dwarf2_section_info abbrev;
+  struct dwarf2_section_info line;
+  struct dwarf2_section_info loc;
+  struct dwarf2_section_info loclists;
+  struct dwarf2_section_info macinfo;
+  struct dwarf2_section_info macro;
+  struct dwarf2_section_info rnglists;
+  struct dwarf2_section_info str;
+  struct dwarf2_section_info str_offsets;
+  /* In the case of a virtual DWO file, these two are unused.  */
+  struct dwarf2_section_info info;
+  std::vector<dwarf2_section_info> types;
+};
+
+/* CUs/TUs in DWP/DWO files.  */
+
+struct dwo_unit
+{
+  /* Backlink to the containing struct dwo_file.  */
+  struct dwo_file *dwo_file;
+
+  /* The "id" that distinguishes this CU/TU.
+     .debug_info calls this "dwo_id", .debug_types calls this "signature".
+     Since signatures came first, we stick with it for consistency.  */
+  ULONGEST signature;
+
+  /* The section this CU/TU lives in, in the DWO file.  */
+  struct dwarf2_section_info *section;
+
+  /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
+  sect_offset sect_off;
+  unsigned int length;
+
+  /* For types, offset in the type's DIE of the type defined by this TU.  */
+  cu_offset type_offset_in_tu;
+};
+
+/* include/dwarf2.h defines the DWP section codes.
+   It defines a max value but it doesn't define a min value, which we
+   use for error checking, so provide one.  */
+
+enum dwp_v2_section_ids
+{
+  DW_SECT_MIN = 1
+};
+
+/* Data for one DWO file.
+
+   This includes virtual DWO files (a virtual DWO file is a DWO file as it
+   appears in a DWP file).  DWP files don't really have DWO files per se -
+   comdat folding of types "loses" the DWO file they came from, and from
+   a high level view DWP files appear to contain a mass of random types.
+   However, to maintain consistency with the non-DWP case we pretend DWP
+   files contain virtual DWO files, and we assign each TU with one virtual
+   DWO file (generally based on the line and abbrev section offsets -
+   a heuristic that seems to work in practice).  */
+
+struct dwo_file
+{
+  dwo_file () = default;
+  DISABLE_COPY_AND_ASSIGN (dwo_file);
+
+  /* The DW_AT_GNU_dwo_name or DW_AT_dwo_name attribute.
+     For virtual DWO files the name is constructed from the section offsets
+     of abbrev,line,loc,str_offsets so that we combine virtual DWO files
+     from related CU+TUs.  */
+  const char *dwo_name = nullptr;
+
+  /* The DW_AT_comp_dir attribute.  */
+  const char *comp_dir = nullptr;
+
+  /* The bfd, when the file is open.  Otherwise this is NULL.
+     This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
+  gdb_bfd_ref_ptr dbfd;
+
+  /* The sections that make up this DWO file.
+     Remember that for virtual DWO files in DWP V2 or DWP V5, these are virtual
+     sections (for lack of a better name).  */
+  struct dwo_sections sections {};
+
+  /* The CUs in the file.
+     Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
+     an extension to handle LLVM's Link Time Optimization output (where
+     multiple source files may be compiled into a single object/dwo pair). */
+  htab_up cus;
+
+  /* Table of TUs in the file.
+     Each element is a struct dwo_unit.  */
+  htab_up tus;
+};
+
+/* These sections are what may appear in a DWP file.  */
+
+struct dwp_sections
+{
+  /* These are used by all DWP versions (1, 2 and 5).  */
+  struct dwarf2_section_info str;
+  struct dwarf2_section_info cu_index;
+  struct dwarf2_section_info tu_index;
+
+  /* These are only used by DWP version 2 and version 5 files.
+     In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
+     sections are referenced by section number, and are not recorded here.
+     In DWP version 2 or 5 there is at most one copy of all these sections,
+     each section being (effectively) comprised of the concatenation of all of
+     the individual sections that exist in the version 1 format.
+     To keep the code simple we treat each of these concatenated pieces as a
+     section itself (a virtual section?).  */
+  struct dwarf2_section_info abbrev;
+  struct dwarf2_section_info info;
+  struct dwarf2_section_info line;
+  struct dwarf2_section_info loc;
+  struct dwarf2_section_info loclists;
+  struct dwarf2_section_info macinfo;
+  struct dwarf2_section_info macro;
+  struct dwarf2_section_info rnglists;
+  struct dwarf2_section_info str_offsets;
+  struct dwarf2_section_info types;
+};
+
+/* These sections are what may appear in a virtual DWO file in DWP version 1.
+   A virtual DWO file is a DWO file as it appears in a DWP file.  */
+
+struct virtual_v1_dwo_sections
+{
+  struct dwarf2_section_info abbrev;
+  struct dwarf2_section_info line;
+  struct dwarf2_section_info loc;
+  struct dwarf2_section_info macinfo;
+  struct dwarf2_section_info macro;
+  struct dwarf2_section_info str_offsets;
+  /* Each DWP hash table entry records one CU or one TU.
+     That is recorded here, and copied to dwo_unit.section.  */
+  struct dwarf2_section_info info_or_types;
+};
+
+/* Similar to virtual_v1_dwo_sections, but for DWP version 2 or 5.
+   In version 2, the sections of the DWO files are concatenated together
+   and stored in one section of that name.  Thus each ELF section contains
+   several "virtual" sections.  */
+
+struct virtual_v2_or_v5_dwo_sections
+{
+  bfd_size_type abbrev_offset;
+  bfd_size_type abbrev_size;
+
+  bfd_size_type line_offset;
+  bfd_size_type line_size;
+
+  bfd_size_type loc_offset;
+  bfd_size_type loc_size;
+
+  bfd_size_type loclists_offset;
+  bfd_size_type loclists_size;
+
+  bfd_size_type macinfo_offset;
+  bfd_size_type macinfo_size;
+
+  bfd_size_type macro_offset;
+  bfd_size_type macro_size;
+
+  bfd_size_type rnglists_offset;
+  bfd_size_type rnglists_size;
+
+  bfd_size_type str_offsets_offset;
+  bfd_size_type str_offsets_size;
+
+  /* Each DWP hash table entry records one CU or one TU.
+     That is recorded here, and copied to dwo_unit.section.  */
+  bfd_size_type info_or_types_offset;
+  bfd_size_type info_or_types_size;
+};
+
+/* Contents of DWP hash tables.  */
+
+struct dwp_hash_table
+{
+  uint32_t version, nr_columns;
+  uint32_t nr_units, nr_slots;
+  const gdb_byte *hash_table, *unit_table;
+  union
+  {
+    struct
+    {
+      const gdb_byte *indices;
+    } v1;
+    struct
+    {
+      /* This is indexed by column number and gives the id of the section
+	 in that column.  */
+#define MAX_NR_V2_DWO_SECTIONS \
+  (1 /* .debug_info or .debug_types */ \
+   + 1 /* .debug_abbrev */ \
+   + 1 /* .debug_line */ \
+   + 1 /* .debug_loc */ \
+   + 1 /* .debug_str_offsets */ \
+   + 1 /* .debug_macro or .debug_macinfo */)
+      int section_ids[MAX_NR_V2_DWO_SECTIONS];
+      const gdb_byte *offsets;
+      const gdb_byte *sizes;
+    } v2;
+    struct
+    {
+      /* This is indexed by column number and gives the id of the section
+	 in that column.  */
+#define MAX_NR_V5_DWO_SECTIONS \
+  (1 /* .debug_info */ \
+   + 1 /* .debug_abbrev */ \
+   + 1 /* .debug_line */ \
+   + 1 /* .debug_loclists */ \
+   + 1 /* .debug_str_offsets */ \
+   + 1 /* .debug_macro */ \
+   + 1 /* .debug_rnglists */)
+      int section_ids[MAX_NR_V5_DWO_SECTIONS];
+      const gdb_byte *offsets;
+      const gdb_byte *sizes;
+    } v5;
+  } section_pool;
+};
+
+/* Data for one DWP file.  */
+
+struct dwp_file
+{
+  dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
+    : name (name_),
+      dbfd (std::move (abfd))
+  {
+  }
+
+  /* Name of the file.  */
+  const char *name;
+
+  /* File format version.  */
+  int version = 0;
+
+  /* The bfd.  */
+  gdb_bfd_ref_ptr dbfd;
+
+  /* Section info for this file.  */
+  struct dwp_sections sections {};
+
+  /* Table of CUs in the file.  */
+  const struct dwp_hash_table *cus = nullptr;
+
+  /* Table of TUs in the file.  */
+  const struct dwp_hash_table *tus = nullptr;
+
+  /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
+  htab_up loaded_cus;
+  htab_up loaded_tus;
+
+  /* Table to map ELF section numbers to their sections.
+     This is only needed for the DWP V1 file format.  */
+  unsigned int num_sections = 0;
+  asection **elf_sections = nullptr;
+};
+
+/* Struct used to pass misc. parameters to read_die_and_children, et
+   al.  which are used for both .debug_info and .debug_types dies.
+   All parameters here are unchanging for the life of the call.  This
+   struct exists to abstract away the constant parameters of die reading.  */
+
+struct die_reader_specs
+{
+  /* The bfd of die_section.  */
+  bfd* abfd;
+
+  /* The CU of the DIE we are parsing.  */
+  struct dwarf2_cu *cu;
+
+  /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
+  struct dwo_file *dwo_file;
+
+  /* The section the die comes from.
+     This is either .debug_info or .debug_types, or the .dwo variants.  */
+  struct dwarf2_section_info *die_section;
+
+  /* die_section->buffer.  */
+  const gdb_byte *buffer;
+
+  /* The end of the buffer.  */
+  const gdb_byte *buffer_end;
+
+  /* The abbreviation table to use when reading the DIEs.  */
+  struct abbrev_table *abbrev_table;
+};
+
+/* A subclass of die_reader_specs that holds storage and has complex
+   constructor and destructor behavior.  */
+
+class cutu_reader : public die_reader_specs
+{
+public:
+
+  cutu_reader (dwarf2_per_cu_data *this_cu,
+	       dwarf2_per_objfile *per_objfile,
+	       struct abbrev_table *abbrev_table,
+	       dwarf2_cu *existing_cu,
+	       bool skip_partial);
+
+  explicit cutu_reader (struct dwarf2_per_cu_data *this_cu,
+			dwarf2_per_objfile *per_objfile,
+			struct dwarf2_cu *parent_cu = nullptr,
+			struct dwo_file *dwo_file = nullptr);
+
+  DISABLE_COPY_AND_ASSIGN (cutu_reader);
+
+  const gdb_byte *info_ptr = nullptr;
+  struct die_info *comp_unit_die = nullptr;
+  bool dummy_p = false;
+
+  /* Release the new CU, putting it on the chain.  This cannot be done
+     for dummy CUs.  */
+  void keep ();
+
+private:
+  void init_tu_and_read_dwo_dies (dwarf2_per_cu_data *this_cu,
+				  dwarf2_per_objfile *per_objfile,
+				  dwarf2_cu *existing_cu);
+
+  struct dwarf2_per_cu_data *m_this_cu;
+  std::unique_ptr<dwarf2_cu> m_new_cu;
+
+  /* The ordinary abbreviation table.  */
+  abbrev_table_up m_abbrev_table_holder;
+
+  /* The DWO abbreviation table.  */
+  abbrev_table_up m_dwo_abbrev_table;
+};
+
+/* When we construct a partial symbol table entry we only
+   need this much information.  */
+struct partial_die_info : public allocate_on_obstack
+  {
+    partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
+
+    /* Disable assign but still keep copy ctor, which is needed
+       load_partial_dies.   */
+    partial_die_info& operator=(const partial_die_info& rhs) = delete;
+
+    /* Adjust the partial die before generating a symbol for it.  This
+       function may set the is_external flag or change the DIE's
+       name.  */
+    void fixup (struct dwarf2_cu *cu);
+
+    /* Read a minimal amount of information into the minimal die
+       structure.  */
+    const gdb_byte *read (const struct die_reader_specs *reader,
+			  const struct abbrev_info &abbrev,
+			  const gdb_byte *info_ptr);
+
+    /* Compute the name of this partial DIE.  This memoizes the
+       result, so it is safe to call multiple times.  */
+    const char *name (dwarf2_cu *cu);
+
+    /* Offset of this DIE.  */
+    const sect_offset sect_off;
+
+    /* DWARF-2 tag for this DIE.  */
+    const ENUM_BITFIELD(dwarf_tag) tag : 16;
+
+    /* Assorted flags describing the data found in this DIE.  */
+    const unsigned int has_children : 1;
+
+    unsigned int is_external : 1;
+    unsigned int is_declaration : 1;
+    unsigned int has_type : 1;
+    unsigned int has_specification : 1;
+    unsigned int has_pc_info : 1;
+    unsigned int may_be_inlined : 1;
+
+    /* This DIE has been marked DW_AT_main_subprogram.  */
+    unsigned int main_subprogram : 1;
+
+    /* Flag set if the SCOPE field of this structure has been
+       computed.  */
+    unsigned int scope_set : 1;
+
+    /* Flag set if the DIE has a byte_size attribute.  */
+    unsigned int has_byte_size : 1;
+
+    /* Flag set if the DIE has a DW_AT_const_value attribute.  */
+    unsigned int has_const_value : 1;
+
+    /* Flag set if any of the DIE's children are template arguments.  */
+    unsigned int has_template_arguments : 1;
+
+    /* Flag set if fixup has been called on this die.  */
+    unsigned int fixup_called : 1;
+
+    /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
+    unsigned int is_dwz : 1;
+
+    /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
+    unsigned int spec_is_dwz : 1;
+
+    unsigned int canonical_name : 1;
+
+    /* The name of this DIE.  Normally the value of DW_AT_name, but
+       sometimes a default name for unnamed DIEs.  */
+    const char *raw_name = nullptr;
+
+    /* The linkage name, if present.  */
+    const char *linkage_name = nullptr;
+
+    /* The scope to prepend to our children.  This is generally
+       allocated on the comp_unit_obstack, so will disappear
+       when this compilation unit leaves the cache.  */
+    const char *scope = nullptr;
+
+    /* Some data associated with the partial DIE.  The tag determines
+       which field is live.  */
+    union
+    {
+      /* The location description associated with this DIE, if any.  */
+      struct dwarf_block *locdesc;
+      /* The offset of an import, for DW_TAG_imported_unit.  */
+      sect_offset sect_off;
+    } d {};
+
+    /* If HAS_PC_INFO, the PC range associated with this DIE.  */
+    CORE_ADDR lowpc = 0;
+    CORE_ADDR highpc = 0;
+
+    /* Pointer into the info_buffer (or types_buffer) pointing at the target of
+       DW_AT_sibling, if any.  */
+    /* NOTE: This member isn't strictly necessary, partial_die_info::read
+       could return DW_AT_sibling values to its caller load_partial_dies.  */
+    const gdb_byte *sibling = nullptr;
+
+    /* If HAS_SPECIFICATION, the offset of the DIE referred to by
+       DW_AT_specification (or DW_AT_abstract_origin or
+       DW_AT_extension).  */
+    sect_offset spec_offset {};
+
+    /* Pointers to this DIE's parent, first child, and next sibling,
+       if any.  */
+    struct partial_die_info *die_parent = nullptr;
+    struct partial_die_info *die_child = nullptr;
+    struct partial_die_info *die_sibling = nullptr;
+
+    friend struct partial_die_info *
+    dwarf2_cu::find_partial_die (sect_offset sect_off);
+
+  private:
+    /* Only need to do look up in dwarf2_cu::find_partial_die.  */
+    partial_die_info (sect_offset sect_off)
+      : partial_die_info (sect_off, DW_TAG_padding, 0)
+    {
+    }
+
+    partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
+		      int has_children_)
+      : sect_off (sect_off_), tag (tag_), has_children (has_children_)
+    {
+      is_external = 0;
+      is_declaration = 0;
+      has_type = 0;
+      has_specification = 0;
+      has_pc_info = 0;
+      may_be_inlined = 0;
+      main_subprogram = 0;
+      scope_set = 0;
+      has_byte_size = 0;
+      has_const_value = 0;
+      has_template_arguments = 0;
+      fixup_called = 0;
+      is_dwz = 0;
+      spec_is_dwz = 0;
+      canonical_name = 0;
+    }
+  };
+
+/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
+   but this would require a corresponding change in unpack_field_as_long
+   and friends.  */
+static int bits_per_byte = 8;
+
+struct variant_part_builder;
+
+/* When reading a variant, we track a bit more information about the
+   field, and store it in an object of this type.  */
+
+struct variant_field
+{
+  int first_field = -1;
+  int last_field = -1;
+
+  /* A variant can contain other variant parts.  */
+  std::vector<variant_part_builder> variant_parts;
+
+  /* If we see a DW_TAG_variant, then this will be set if this is the
+     default branch.  */
+  bool default_branch = false;
+  /* If we see a DW_AT_discr_value, then this will be the discriminant
+     value.  */
+  ULONGEST discriminant_value = 0;
+  /* If we see a DW_AT_discr_list, then this is a pointer to the list
+     data.  */
+  struct dwarf_block *discr_list_data = nullptr;
+};
+
+/* This represents a DW_TAG_variant_part.  */
+
+struct variant_part_builder
+{
+  /* The offset of the discriminant field.  */
+  sect_offset discriminant_offset {};
+
+  /* Variants that are direct children of this variant part.  */
+  std::vector<variant_field> variants;
+
+  /* True if we're currently reading a variant.  */
+  bool processing_variant = false;
+};
+
+struct nextfield
+{
+  int accessibility = 0;
+  int virtuality = 0;
+  /* Variant parts need to find the discriminant, which is a DIE
+     reference.  We track the section offset of each field to make
+     this link.  */
+  sect_offset offset;
+  struct field field {};
+};
+
+struct fnfieldlist
+{
+  const char *name = nullptr;
+  std::vector<struct fn_field> fnfields;
+};
+
+/* The routines that read and process dies for a C struct or C++ class
+   pass lists of data member fields and lists of member function fields
+   in an instance of a field_info structure, as defined below.  */
+struct field_info
+{
+  /* List of data member and baseclasses fields.  */
+  std::vector<struct nextfield> fields;
+  std::vector<struct nextfield> baseclasses;
+
+  /* Set if the accessibility of one of the fields is not public.  */
+  bool non_public_fields = false;
+
+  /* Member function fieldlist array, contains name of possibly overloaded
+     member function, number of overloaded member functions and a pointer
+     to the head of the member function field chain.  */
+  std::vector<struct fnfieldlist> fnfieldlists;
+
+  /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
+     a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
+  std::vector<struct decl_field> typedef_field_list;
+
+  /* Nested types defined by this class and the number of elements in this
+     list.  */
+  std::vector<struct decl_field> nested_types_list;
+
+  /* If non-null, this is the variant part we are currently
+     reading.  */
+  variant_part_builder *current_variant_part = nullptr;
+  /* This holds all the top-level variant parts attached to the type
+     we're reading.  */
+  std::vector<variant_part_builder> variant_parts;
+
+  /* Return the total number of fields (including baseclasses).  */
+  int nfields () const
+  {
+    return fields.size () + baseclasses.size ();
+  }
+};
+
+/* Loaded secondary compilation units are kept in memory until they
+   have not been referenced for the processing of this many
+   compilation units.  Set this to zero to disable caching.  Cache
+   sizes of up to at least twenty will improve startup time for
+   typical inter-CU-reference binaries, at an obvious memory cost.  */
+static int dwarf_max_cache_age = 5;
+static void
+show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
+			  struct cmd_list_element *c, const char *value)
+{
+  fprintf_filtered (file, _("The upper bound on the age of cached "
+			    "DWARF compilation units is %s.\n"),
+		    value);
+}
+
+/* local function prototypes */
+
+static void dwarf2_find_base_address (struct die_info *die,
+				      struct dwarf2_cu *cu);
+
+static dwarf2_psymtab *create_partial_symtab
+  (dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile,
+   const char *name);
+
+static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
+					const gdb_byte *info_ptr,
+					struct die_info *type_unit_die);
+
+static void dwarf2_build_psymtabs_hard (dwarf2_per_objfile *per_objfile);
+
+static void scan_partial_symbols (struct partial_die_info *,
+				  CORE_ADDR *, CORE_ADDR *,
+				  int, struct dwarf2_cu *);
+
+static void add_partial_symbol (struct partial_die_info *,
+				struct dwarf2_cu *);
+
+static void add_partial_namespace (struct partial_die_info *pdi,
+				   CORE_ADDR *lowpc, CORE_ADDR *highpc,
+				   int set_addrmap, struct dwarf2_cu *cu);
+
+static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
+				CORE_ADDR *highpc, int set_addrmap,
+				struct dwarf2_cu *cu);
+
+static void add_partial_enumeration (struct partial_die_info *enum_pdi,
+				     struct dwarf2_cu *cu);
+
+static void add_partial_subprogram (struct partial_die_info *pdi,
+				    CORE_ADDR *lowpc, CORE_ADDR *highpc,
+				    int need_pc, struct dwarf2_cu *cu);
+
+static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
+
+static struct partial_die_info *load_partial_dies
+  (const struct die_reader_specs *, const gdb_byte *, int);
+
+/* A pair of partial_die_info and compilation unit.  */
+struct cu_partial_die_info
+{
+  /* The compilation unit of the partial_die_info.  */
+  struct dwarf2_cu *cu;
+  /* A partial_die_info.  */
+  struct partial_die_info *pdi;
+
+  cu_partial_die_info (struct dwarf2_cu *cu, struct partial_die_info *pdi)
+    : cu (cu),
+      pdi (pdi)
+  { /* Nothing.  */ }
+
+private:
+  cu_partial_die_info () = delete;
+};
+
+static const struct cu_partial_die_info find_partial_die (sect_offset, int,
+							  struct dwarf2_cu *);
+
+static const gdb_byte *read_attribute (const struct die_reader_specs *,
+				       struct attribute *, struct attr_abbrev *,
+				       const gdb_byte *, bool *need_reprocess);
+
+static void read_attribute_reprocess (const struct die_reader_specs *reader,
+				      struct attribute *attr, dwarf_tag tag);
+
+static CORE_ADDR read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index);
+
+static sect_offset read_abbrev_offset (dwarf2_per_objfile *per_objfile,
+				       dwarf2_section_info *, sect_offset);
+
+static const char *read_indirect_string
+  (dwarf2_per_objfile *per_objfile, bfd *, const gdb_byte *,
+   const struct comp_unit_head *, unsigned int *);
+
+static const char *read_indirect_string_at_offset
+  (dwarf2_per_objfile *per_objfile, LONGEST str_offset);
+
+static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
+					      const gdb_byte *,
+					      unsigned int *);
+
+static const char *read_dwo_str_index (const struct die_reader_specs *reader,
+				       ULONGEST str_index);
+
+static const char *read_stub_str_index (struct dwarf2_cu *cu,
+					ULONGEST str_index);
+
+static void set_cu_language (unsigned int, struct dwarf2_cu *);
+
+static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
+				      struct dwarf2_cu *);
+
+static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
+                                       struct dwarf2_cu *cu);
+
+static const char *dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu);
+
+static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
+                               struct dwarf2_cu *cu);
+
+static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
+
+static struct die_info *die_specification (struct die_info *die,
+					   struct dwarf2_cu **);
+
+static line_header_up dwarf_decode_line_header (sect_offset sect_off,
+						struct dwarf2_cu *cu);
+
+static void dwarf_decode_lines (struct line_header *, const char *,
+				struct dwarf2_cu *, dwarf2_psymtab *,
+				CORE_ADDR, int decode_mapping);
+
+static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
+				  const char *);
+
+static struct symbol *new_symbol (struct die_info *, struct type *,
+				  struct dwarf2_cu *, struct symbol * = NULL);
+
+static void dwarf2_const_value (const struct attribute *, struct symbol *,
+				struct dwarf2_cu *);
+
+static void dwarf2_const_value_attr (const struct attribute *attr,
+				     struct type *type,
+				     const char *name,
+				     struct obstack *obstack,
+				     struct dwarf2_cu *cu, LONGEST *value,
+				     const gdb_byte **bytes,
+				     struct dwarf2_locexpr_baton **baton);
+
+static struct type *die_type (struct die_info *, struct dwarf2_cu *);
+
+static int need_gnat_info (struct dwarf2_cu *);
+
+static struct type *die_descriptive_type (struct die_info *,
+					  struct dwarf2_cu *);
+
+static void set_descriptive_type (struct type *, struct die_info *,
+				  struct dwarf2_cu *);
+
+static struct type *die_containing_type (struct die_info *,
+					 struct dwarf2_cu *);
+
+static struct type *lookup_die_type (struct die_info *, const struct attribute *,
+				     struct dwarf2_cu *);
+
+static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
+
+static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
+
+static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
+
+static char *typename_concat (struct obstack *obs, const char *prefix,
+			      const char *suffix, int physname,
+			      struct dwarf2_cu *cu);
+
+static void read_file_scope (struct die_info *, struct dwarf2_cu *);
+
+static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
+
+static void read_func_scope (struct die_info *, struct dwarf2_cu *);
+
+static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
+
+static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
+
+static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
+
+/* Return the .debug_loclists section to use for cu.  */
+static struct dwarf2_section_info *cu_debug_loc_section (struct dwarf2_cu *cu);
+
+/* Return the .debug_rnglists section to use for cu.  */
+static struct dwarf2_section_info *cu_debug_rnglists_section
+  (struct dwarf2_cu *cu, dwarf_tag tag);
+
+/* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
+   values.  Keep the items ordered with increasing constraints compliance.  */
+enum pc_bounds_kind
+{
+  /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
+  PC_BOUNDS_NOT_PRESENT,
+
+  /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
+     were present but they do not form a valid range of PC addresses.  */
+  PC_BOUNDS_INVALID,
+
+  /* Discontiguous range was found - that is DW_AT_ranges was found.  */
+  PC_BOUNDS_RANGES,
+
+  /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
+  PC_BOUNDS_HIGH_LOW,
+};
+
+static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
+						 CORE_ADDR *, CORE_ADDR *,
+						 struct dwarf2_cu *,
+						 dwarf2_psymtab *);
+
+static void get_scope_pc_bounds (struct die_info *,
+				 CORE_ADDR *, CORE_ADDR *,
+				 struct dwarf2_cu *);
+
+static void dwarf2_record_block_ranges (struct die_info *, struct block *,
+                                        CORE_ADDR, struct dwarf2_cu *);
+
+static void dwarf2_add_field (struct field_info *, struct die_info *,
+			      struct dwarf2_cu *);
+
+static void dwarf2_attach_fields_to_type (struct field_info *,
+					  struct type *, struct dwarf2_cu *);
+
+static void dwarf2_add_member_fn (struct field_info *,
+				  struct die_info *, struct type *,
+				  struct dwarf2_cu *);
+
+static void dwarf2_attach_fn_fields_to_type (struct field_info *,
+					     struct type *,
+					     struct dwarf2_cu *);
+
+static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
+
+static void read_common_block (struct die_info *, struct dwarf2_cu *);
+
+static void read_namespace (struct die_info *die, struct dwarf2_cu *);
+
+static void read_module (struct die_info *die, struct dwarf2_cu *cu);
+
+static struct using_direct **using_directives (struct dwarf2_cu *cu);
+
+static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
+
+static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
+
+static struct type *read_module_type (struct die_info *die,
+				      struct dwarf2_cu *cu);
+
+static const char *namespace_name (struct die_info *die,
+				   int *is_anonymous, struct dwarf2_cu *);
+
+static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
+
+static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *,
+				 bool * = nullptr);
+
+static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
+						       struct dwarf2_cu *);
+
+static struct die_info *read_die_and_siblings_1
+  (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
+   struct die_info *);
+
+static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
+					       const gdb_byte *info_ptr,
+					       const gdb_byte **new_info_ptr,
+					       struct die_info *parent);
+
+static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
+					struct die_info **, const gdb_byte *,
+					int);
+
+static const gdb_byte *read_full_die (const struct die_reader_specs *,
+				      struct die_info **, const gdb_byte *);
+
+static void process_die (struct die_info *, struct dwarf2_cu *);
+
+static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
+					     struct objfile *);
+
+static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
+
+static const char *dwarf2_full_name (const char *name,
+				     struct die_info *die,
+				     struct dwarf2_cu *cu);
+
+static const char *dwarf2_physname (const char *name, struct die_info *die,
+				    struct dwarf2_cu *cu);
+
+static struct die_info *dwarf2_extension (struct die_info *die,
+					  struct dwarf2_cu **);
+
+static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
+
+static void dump_die_for_error (struct die_info *);
+
+static void dump_die_1 (struct ui_file *, int level, int max_level,
+			struct die_info *);
+
+/*static*/ void dump_die (struct die_info *, int max_level);
+
+static void store_in_ref_table (struct die_info *,
+				struct dwarf2_cu *);
+
+static struct die_info *follow_die_ref_or_sig (struct die_info *,
+					       const struct attribute *,
+					       struct dwarf2_cu **);
+
+static struct die_info *follow_die_ref (struct die_info *,
+					const struct attribute *,
+					struct dwarf2_cu **);
+
+static struct die_info *follow_die_sig (struct die_info *,
+					const struct attribute *,
+					struct dwarf2_cu **);
+
+static struct type *get_signatured_type (struct die_info *, ULONGEST,
+					 struct dwarf2_cu *);
+
+static struct type *get_DW_AT_signature_type (struct die_info *,
+					      const struct attribute *,
+					      struct dwarf2_cu *);
+
+static void load_full_type_unit (dwarf2_per_cu_data *per_cu,
+				 dwarf2_per_objfile *per_objfile);
+
+static void read_signatured_type (signatured_type *sig_type,
+				  dwarf2_per_objfile *per_objfile);
+
+static int attr_to_dynamic_prop (const struct attribute *attr,
+				 struct die_info *die, struct dwarf2_cu *cu,
+				 struct dynamic_prop *prop, struct type *type);
+
+/* memory allocation interface */
+
+static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
+
+static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
+
+static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
+
+static void fill_in_loclist_baton (struct dwarf2_cu *cu,
+				   struct dwarf2_loclist_baton *baton,
+				   const struct attribute *attr);
+
+static void dwarf2_symbol_mark_computed (const struct attribute *attr,
+					 struct symbol *sym,
+					 struct dwarf2_cu *cu,
+					 int is_block);
+
+static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
+				     const gdb_byte *info_ptr,
+				     struct abbrev_info *abbrev);
+
+static hashval_t partial_die_hash (const void *item);
+
+static int partial_die_eq (const void *item_lhs, const void *item_rhs);
+
+static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
+  (sect_offset sect_off, unsigned int offset_in_dwz,
+   dwarf2_per_objfile *per_objfile);
+
+static void prepare_one_comp_unit (struct dwarf2_cu *cu,
+				   struct die_info *comp_unit_die,
+				   enum language pretend_language);
+
+static struct type *set_die_type (struct die_info *, struct type *,
+				  struct dwarf2_cu *);
+
+static void create_all_comp_units (dwarf2_per_objfile *per_objfile);
+
+static int create_all_type_units (dwarf2_per_objfile *per_objfile);
+
+static void load_full_comp_unit (dwarf2_per_cu_data *per_cu,
+				 dwarf2_per_objfile *per_objfile,
+				 dwarf2_cu *existing_cu,
+				 bool skip_partial,
+				 enum language pretend_language);
+
+static void process_full_comp_unit (dwarf2_cu *cu,
+				    enum language pretend_language);
+
+static void process_full_type_unit (dwarf2_cu *cu,
+				    enum language pretend_language);
+
+static void dwarf2_add_dependence (struct dwarf2_cu *,
+				   struct dwarf2_per_cu_data *);
+
+static void dwarf2_mark (struct dwarf2_cu *);
+
+static struct type *get_die_type_at_offset (sect_offset,
+					    dwarf2_per_cu_data *per_cu,
+					    dwarf2_per_objfile *per_objfile);
+
+static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
+
+static void queue_comp_unit (dwarf2_per_cu_data *per_cu,
+			     dwarf2_per_objfile *per_objfile,
+			     enum language pretend_language);
+
+static void process_queue (dwarf2_per_objfile *per_objfile);
+
+/* 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
+   dwarf.  If no error was thrown then the queue entries should have all
+   been processed, and freed, as we went along.  */
+
+class dwarf2_queue_guard
+{
+public:
+  explicit dwarf2_queue_guard (dwarf2_per_objfile *per_objfile)
+    : m_per_objfile (per_objfile)
+  {
+    gdb_assert (!m_per_objfile->per_bfd->queue.has_value ());
+
+    m_per_objfile->per_bfd->queue.emplace ();
+  }
+
+  /* Free any entries remaining on the queue.  There should only be
+     entries left if we hit an error while processing the dwarf.  */
+  ~dwarf2_queue_guard ()
+  {
+    gdb_assert (m_per_objfile->per_bfd->queue.has_value ());
+
+    m_per_objfile->per_bfd->queue.reset ();
+  }
+
+  DISABLE_COPY_AND_ASSIGN (dwarf2_queue_guard);
+
+private:
+  dwarf2_per_objfile *m_per_objfile;
+};
+
+dwarf2_queue_item::~dwarf2_queue_item ()
+{
+  /* Anything still marked queued is likely to be in an
+     inconsistent state, so discard it.  */
+  if (per_cu->queued)
+    {
+      per_objfile->remove_cu (per_cu);
+      per_cu->queued = 0;
+    }
+}
+
+/* The return type of find_file_and_directory.  Note, the enclosed
+   string pointers are only valid while this object is valid.  */
+
+struct file_and_directory
+{
+  /* The filename.  This is never NULL.  */
+  const char *name;
+
+  /* The compilation directory.  NULL if not known.  If we needed to
+     compute a new string, this points to COMP_DIR_STORAGE, otherwise,
+     points directly to the DW_AT_comp_dir string attribute owned by
+     the obstack that owns the DIE.  */
+  const char *comp_dir;
+
+  /* If we needed to build a new string for comp_dir, this is what
+     owns the storage.  */
+  std::string comp_dir_storage;
+};
+
+static file_and_directory find_file_and_directory (struct die_info *die,
+						   struct dwarf2_cu *cu);
+
+static htab_up allocate_signatured_type_table ();
+
+static htab_up allocate_dwo_unit_table ();
+
+static struct dwo_unit *lookup_dwo_unit_in_dwp
+  (dwarf2_per_objfile *per_objfile, struct dwp_file *dwp_file,
+   const char *comp_dir, ULONGEST signature, int is_debug_types);
+
+static struct dwp_file *get_dwp_file (dwarf2_per_objfile *per_objfile);
+
+static struct dwo_unit *lookup_dwo_comp_unit
+  (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir,
+   ULONGEST signature);
+
+static struct dwo_unit *lookup_dwo_type_unit
+  (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir);
+
+static void queue_and_load_all_dwo_tus (dwarf2_cu *cu);
+
+/* A unique pointer to a dwo_file.  */
+
+typedef std::unique_ptr<struct dwo_file> dwo_file_up;
+
+static void process_cu_includes (dwarf2_per_objfile *per_objfile);
+
+static void check_producer (struct dwarf2_cu *cu);
+
+static void free_line_header_voidp (void *arg);
+
+/* Various complaints about symbol reading that don't abort the process.  */
+
+static void
+dwarf2_debug_line_missing_file_complaint (void)
+{
+  complaint (_(".debug_line section has line data without a file"));
+}
+
+static void
+dwarf2_debug_line_missing_end_sequence_complaint (void)
+{
+  complaint (_(".debug_line section has line "
+	       "program sequence without an end"));
+}
+
+static void
+dwarf2_complex_location_expr_complaint (void)
+{
+  complaint (_("location expression too complex"));
+}
+
+static void
+dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
+					      int arg3)
+{
+  complaint (_("const value length mismatch for '%s', got %d, expected %d"),
+	     arg1, arg2, arg3);
+}
+
+static void
+dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
+{
+  complaint (_("invalid attribute class or form for '%s' in '%s'"),
+	     arg1, arg2);
+}
+
+/* Hash function for line_header_hash.  */
+
+static hashval_t
+line_header_hash (const struct line_header *ofs)
+{
+  return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
+}
+
+/* Hash function for htab_create_alloc_ex for line_header_hash.  */
+
+static hashval_t
+line_header_hash_voidp (const void *item)
+{
+  const struct line_header *ofs = (const struct line_header *) item;
+
+  return line_header_hash (ofs);
+}
+
+/* Equality function for line_header_hash.  */
+
+static int
+line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
+{
+  const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
+  const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
+
+  return (ofs_lhs->sect_off == ofs_rhs->sect_off
+	  && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
+}
+
+
+
+/* See declaration.  */
+
+dwarf2_per_bfd::dwarf2_per_bfd (bfd *obfd, const dwarf2_debug_sections *names,
+				bool can_copy_)
+  : obfd (obfd),
+    can_copy (can_copy_)
+{
+  if (names == NULL)
+    names = &dwarf2_elf_names;
+
+  for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
+    locate_sections (obfd, sec, *names);
+}
+
+dwarf2_per_bfd::~dwarf2_per_bfd ()
+{
+  for (dwarf2_per_cu_data *per_cu : all_comp_units)
+    per_cu->imported_symtabs_free ();
+
+  for (signatured_type *sig_type : all_type_units)
+    sig_type->per_cu.imported_symtabs_free ();
+
+  /* Everything else should be on this->obstack.  */
+}
+
+/* See read.h.  */
+
+void
+dwarf2_per_objfile::remove_all_cus ()
+{
+  gdb_assert (!this->per_bfd->queue.has_value ());
+
+  for (auto pair : m_dwarf2_cus)
+    delete pair.second;
+
+  m_dwarf2_cus.clear ();
+}
+
+/* A helper class that calls free_cached_comp_units on
+   destruction.  */
+
+class free_cached_comp_units
+{
+public:
+
+  explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
+    : m_per_objfile (per_objfile)
+  {
+  }
+
+  ~free_cached_comp_units ()
+  {
+    m_per_objfile->remove_all_cus ();
+  }
+
+  DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
+
+private:
+
+  dwarf2_per_objfile *m_per_objfile;
+};
+
+/* See read.h.  */
+
+bool
+dwarf2_per_objfile::symtab_set_p (const dwarf2_per_cu_data *per_cu) const
+{
+  gdb_assert (per_cu->index < this->m_symtabs.size ());
+
+  return this->m_symtabs[per_cu->index] != nullptr;
+}
+
+/* See read.h.  */
+
+compunit_symtab *
+dwarf2_per_objfile::get_symtab (const dwarf2_per_cu_data *per_cu) const
+{
+  gdb_assert (per_cu->index < this->m_symtabs.size ());
+
+  return this->m_symtabs[per_cu->index];
+}
+
+/* See read.h.  */
+
+void
+dwarf2_per_objfile::set_symtab (const dwarf2_per_cu_data *per_cu,
+				compunit_symtab *symtab)
+{
+  gdb_assert (per_cu->index < this->m_symtabs.size ());
+  gdb_assert (this->m_symtabs[per_cu->index] == nullptr);
+
+  this->m_symtabs[per_cu->index] = symtab;
+}
+
+/* Try to locate the sections we need for DWARF 2 debugging
+   information and return true if we have enough to do something.
+   NAMES points to the dwarf2 section names, or is NULL if the standard
+   ELF names are used.  CAN_COPY is true for formats where symbol
+   interposition is possible and so symbol values must follow copy
+   relocation rules.  */
+
+int
+dwarf2_has_info (struct objfile *objfile,
+                 const struct dwarf2_debug_sections *names,
+		 bool can_copy)
+{
+  if (objfile->flags & OBJF_READNEVER)
+    return 0;
+
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  if (per_objfile == NULL)
+    {
+      dwarf2_per_bfd *per_bfd;
+
+      /* We can share a "dwarf2_per_bfd" with other objfiles if the BFD
+         doesn't require relocations and if there aren't partial symbols
+	 from some other reader.
+
+	 We don't share with objfiles for which -readnow was requested,
+	 because it would complicate things when loading the same BFD with
+	 -readnow and then without -readnow.  */
+      if (!objfile_has_partial_symbols (objfile)
+	  && !gdb_bfd_requires_relocations (objfile->obfd)
+	  && (objfile->flags & OBJF_READNOW) == 0)
+	{
+	  /* See if one has been created for this BFD yet.  */
+	  per_bfd = dwarf2_per_bfd_bfd_data_key.get (objfile->obfd);
+
+	  if (per_bfd == nullptr)
+	    {
+	      /* No, create it now.  */
+	      per_bfd = new dwarf2_per_bfd (objfile->obfd, names, can_copy);
+	      dwarf2_per_bfd_bfd_data_key.set (objfile->obfd, per_bfd);
+	    }
+	}
+      else
+	{
+	  /* No sharing possible, create one specifically for this objfile.  */
+	  per_bfd = new dwarf2_per_bfd (objfile->obfd, names, can_copy);
+	  dwarf2_per_bfd_objfile_data_key.set (objfile, per_bfd);
+	}
+
+      per_objfile = dwarf2_objfile_data_key.emplace (objfile, objfile, per_bfd);
+    }
+
+  return (!per_objfile->per_bfd->info.is_virtual
+	  && per_objfile->per_bfd->info.s.section != NULL
+	  && !per_objfile->per_bfd->abbrev.is_virtual
+	  && per_objfile->per_bfd->abbrev.s.section != NULL);
+}
+
+/* When loading sections, we look either for uncompressed section or for
+   compressed section names.  */
+
+static int
+section_is_p (const char *section_name,
+              const struct dwarf2_section_names *names)
+{
+  if (names->normal != NULL
+      && strcmp (section_name, names->normal) == 0)
+    return 1;
+  if (names->compressed != NULL
+      && strcmp (section_name, names->compressed) == 0)
+    return 1;
+  return 0;
+}
+
+/* See declaration.  */
+
+void
+dwarf2_per_bfd::locate_sections (bfd *abfd, asection *sectp,
+				 const dwarf2_debug_sections &names)
+{
+  flagword aflag = bfd_section_flags (sectp);
+
+  if ((aflag & SEC_HAS_CONTENTS) == 0)
+    {
+    }
+  else if (elf_section_data (sectp)->this_hdr.sh_size
+	   > bfd_get_file_size (abfd))
+    {
+      bfd_size_type size = elf_section_data (sectp)->this_hdr.sh_size;
+      warning (_("Discarding section %s which has a section size (%s"
+		 ") larger than the file size [in module %s]"),
+	       bfd_section_name (sectp), phex_nz (size, sizeof (size)),
+	       bfd_get_filename (abfd));
+    }
+  else if (section_is_p (sectp->name, &names.info))
+    {
+      this->info.s.section = sectp;
+      this->info.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.abbrev))
+    {
+      this->abbrev.s.section = sectp;
+      this->abbrev.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.line))
+    {
+      this->line.s.section = sectp;
+      this->line.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.loc))
+    {
+      this->loc.s.section = sectp;
+      this->loc.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.loclists))
+    {
+      this->loclists.s.section = sectp;
+      this->loclists.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.macinfo))
+    {
+      this->macinfo.s.section = sectp;
+      this->macinfo.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.macro))
+    {
+      this->macro.s.section = sectp;
+      this->macro.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.str))
+    {
+      this->str.s.section = sectp;
+      this->str.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.str_offsets))
+    {
+      this->str_offsets.s.section = sectp;
+      this->str_offsets.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.line_str))
+    {
+      this->line_str.s.section = sectp;
+      this->line_str.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.addr))
+    {
+      this->addr.s.section = sectp;
+      this->addr.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.frame))
+    {
+      this->frame.s.section = sectp;
+      this->frame.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.eh_frame))
+    {
+      this->eh_frame.s.section = sectp;
+      this->eh_frame.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.ranges))
+    {
+      this->ranges.s.section = sectp;
+      this->ranges.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.rnglists))
+    {
+      this->rnglists.s.section = sectp;
+      this->rnglists.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.types))
+    {
+      struct dwarf2_section_info type_section;
+
+      memset (&type_section, 0, sizeof (type_section));
+      type_section.s.section = sectp;
+      type_section.size = bfd_section_size (sectp);
+
+      this->types.push_back (type_section);
+    }
+  else if (section_is_p (sectp->name, &names.gdb_index))
+    {
+      this->gdb_index.s.section = sectp;
+      this->gdb_index.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.debug_names))
+    {
+      this->debug_names.s.section = sectp;
+      this->debug_names.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names.debug_aranges))
+    {
+      this->debug_aranges.s.section = sectp;
+      this->debug_aranges.size = bfd_section_size (sectp);
+    }
+
+  if ((bfd_section_flags (sectp) & (SEC_LOAD | SEC_ALLOC))
+      && bfd_section_vma (sectp) == 0)
+    this->has_section_at_zero = true;
+}
+
+/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
+   SECTION_NAME.  */
+
+void
+dwarf2_get_section_info (struct objfile *objfile,
+                         enum dwarf2_section_enum sect,
+                         asection **sectp, const gdb_byte **bufp,
+                         bfd_size_type *sizep)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  struct dwarf2_section_info *info;
+
+  /* We may see an objfile without any DWARF, in which case we just
+     return nothing.  */
+  if (per_objfile == NULL)
+    {
+      *sectp = NULL;
+      *bufp = NULL;
+      *sizep = 0;
+      return;
+    }
+  switch (sect)
+    {
+    case DWARF2_DEBUG_FRAME:
+      info = &per_objfile->per_bfd->frame;
+      break;
+    case DWARF2_EH_FRAME:
+      info = &per_objfile->per_bfd->eh_frame;
+      break;
+    default:
+      gdb_assert_not_reached ("unexpected section");
+    }
+
+  info->read (objfile);
+
+  *sectp = info->get_bfd_section ();
+  *bufp = info->buffer;
+  *sizep = info->size;
+}
+
+/* A helper function to find the sections for a .dwz file.  */
+
+static void
+locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
+{
+  struct dwz_file *dwz_file = (struct dwz_file *) arg;
+
+  /* Note that we only support the standard ELF names, because .dwz
+     is ELF-only (at the time of writing).  */
+  if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
+    {
+      dwz_file->abbrev.s.section = sectp;
+      dwz_file->abbrev.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
+    {
+      dwz_file->info.s.section = sectp;
+      dwz_file->info.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
+    {
+      dwz_file->str.s.section = sectp;
+      dwz_file->str.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
+    {
+      dwz_file->line.s.section = sectp;
+      dwz_file->line.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
+    {
+      dwz_file->macro.s.section = sectp;
+      dwz_file->macro.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
+    {
+      dwz_file->gdb_index.s.section = sectp;
+      dwz_file->gdb_index.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
+    {
+      dwz_file->debug_names.s.section = sectp;
+      dwz_file->debug_names.size = bfd_section_size (sectp);
+    }
+}
+
+/* See dwarf2read.h.  */
+
+struct dwz_file *
+dwarf2_get_dwz_file (dwarf2_per_bfd *per_bfd)
+{
+  const char *filename;
+  bfd_size_type buildid_len_arg;
+  size_t buildid_len;
+  bfd_byte *buildid;
+
+  if (per_bfd->dwz_file != NULL)
+    return per_bfd->dwz_file.get ();
+
+  bfd_set_error (bfd_error_no_error);
+  gdb::unique_xmalloc_ptr<char> data
+    (bfd_get_alt_debug_link_info (per_bfd->obfd,
+				  &buildid_len_arg, &buildid));
+  if (data == NULL)
+    {
+      if (bfd_get_error () == bfd_error_no_error)
+	return NULL;
+      error (_("could not read '.gnu_debugaltlink' section: %s"),
+	     bfd_errmsg (bfd_get_error ()));
+    }
+
+  gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
+
+  buildid_len = (size_t) buildid_len_arg;
+
+  filename = data.get ();
+
+  std::string abs_storage;
+  if (!IS_ABSOLUTE_PATH (filename))
+    {
+      gdb::unique_xmalloc_ptr<char> abs
+	= gdb_realpath (bfd_get_filename (per_bfd->obfd));
+
+      abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
+      filename = abs_storage.c_str ();
+    }
+
+  /* First try the file name given in the section.  If that doesn't
+     work, try to use the build-id instead.  */
+  gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget));
+  if (dwz_bfd != NULL)
+    {
+      if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
+	dwz_bfd.reset (nullptr);
+    }
+
+  if (dwz_bfd == NULL)
+    dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
+
+  if (dwz_bfd == nullptr)
+    {
+      gdb::unique_xmalloc_ptr<char> alt_filename;
+      const char *origname = bfd_get_filename (per_bfd->obfd);
+
+      scoped_fd fd (debuginfod_debuginfo_query (buildid,
+						buildid_len,
+						origname,
+						&alt_filename));
+
+      if (fd.get () >= 0)
+	{
+	  /* File successfully retrieved from server.  */
+	  dwz_bfd = gdb_bfd_open (alt_filename.get (), gnutarget);
+
+	  if (dwz_bfd == nullptr)
+	    warning (_("File \"%s\" from debuginfod cannot be opened as bfd"),
+		     alt_filename.get ());
+	  else if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
+	    dwz_bfd.reset (nullptr);
+	}
+    }
+
+  if (dwz_bfd == NULL)
+    error (_("could not find '.gnu_debugaltlink' file for %s"),
+	   bfd_get_filename (per_bfd->obfd));
+
+  std::unique_ptr<struct dwz_file> result
+    (new struct dwz_file (std::move (dwz_bfd)));
+
+  bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
+			 result.get ());
+
+  gdb_bfd_record_inclusion (per_bfd->obfd, result->dwz_bfd.get ());
+  per_bfd->dwz_file = std::move (result);
+  return per_bfd->dwz_file.get ();
+}
+
+/* DWARF quick_symbols_functions support.  */
+
+/* TUs can share .debug_line entries, and there can be a lot more TUs than
+   unique line tables, so we maintain a separate table of all .debug_line
+   derived entries to support the sharing.
+   All the quick functions need is the list of file names.  We discard the
+   line_header when we're done and don't need to record it here.  */
+struct quick_file_names
+{
+  /* The data used to construct the hash key.  */
+  struct stmt_list_hash hash;
+
+  /* The number of entries in file_names, real_names.  */
+  unsigned int num_file_names;
+
+  /* The file names from the line table, after being run through
+     file_full_name.  */
+  const char **file_names;
+
+  /* The file names from the line table after being run through
+     gdb_realpath.  These are computed lazily.  */
+  const char **real_names;
+};
+
+/* When using the index (and thus not using psymtabs), each CU has an
+   object of this type.  This is used to hold information needed by
+   the various "quick" methods.  */
+struct dwarf2_per_cu_quick_data
+{
+  /* The file table.  This can be NULL if there was no file table
+     or it's currently not read in.
+     NOTE: This points into dwarf2_per_objfile->per_bfd->quick_file_names_table.  */
+  struct quick_file_names *file_names;
+
+  /* A temporary mark bit used when iterating over all CUs in
+     expand_symtabs_matching.  */
+  unsigned int mark : 1;
+
+  /* True if we've tried to read the file table and found there isn't one.
+     There will be no point in trying to read it again next time.  */
+  unsigned int no_file_data : 1;
+};
+
+/* Utility hash function for a stmt_list_hash.  */
+
+static hashval_t
+hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
+{
+  hashval_t v = 0;
+
+  if (stmt_list_hash->dwo_unit != NULL)
+    v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
+  v += to_underlying (stmt_list_hash->line_sect_off);
+  return v;
+}
+
+/* Utility equality function for a stmt_list_hash.  */
+
+static int
+eq_stmt_list_entry (const struct stmt_list_hash *lhs,
+		    const struct stmt_list_hash *rhs)
+{
+  if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
+    return 0;
+  if (lhs->dwo_unit != NULL
+      && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
+    return 0;
+
+  return lhs->line_sect_off == rhs->line_sect_off;
+}
+
+/* Hash function for a quick_file_names.  */
+
+static hashval_t
+hash_file_name_entry (const void *e)
+{
+  const struct quick_file_names *file_data
+    = (const struct quick_file_names *) e;
+
+  return hash_stmt_list_entry (&file_data->hash);
+}
+
+/* Equality function for a quick_file_names.  */
+
+static int
+eq_file_name_entry (const void *a, const void *b)
+{
+  const struct quick_file_names *ea = (const struct quick_file_names *) a;
+  const struct quick_file_names *eb = (const struct quick_file_names *) b;
+
+  return eq_stmt_list_entry (&ea->hash, &eb->hash);
+}
+
+/* Delete function for a quick_file_names.  */
+
+static void
+delete_file_name_entry (void *e)
+{
+  struct quick_file_names *file_data = (struct quick_file_names *) e;
+  int i;
+
+  for (i = 0; i < file_data->num_file_names; ++i)
+    {
+      xfree ((void*) file_data->file_names[i]);
+      if (file_data->real_names)
+	xfree ((void*) file_data->real_names[i]);
+    }
+
+  /* The space for the struct itself lives on the obstack, so we don't
+     free it here.  */
+}
+
+/* Create a quick_file_names hash table.  */
+
+static htab_up
+create_quick_file_names_table (unsigned int nr_initial_entries)
+{
+  return htab_up (htab_create_alloc (nr_initial_entries,
+				     hash_file_name_entry, eq_file_name_entry,
+				     delete_file_name_entry, xcalloc, xfree));
+}
+
+/* Read in CU (dwarf2_cu object) for PER_CU in the context of PER_OBJFILE.  This
+   function is unrelated to symtabs, symtab would have to be created afterwards.
+   You should call age_cached_comp_units after processing the CU.  */
+
+static dwarf2_cu *
+load_cu (dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile,
+	 bool skip_partial)
+{
+  if (per_cu->is_debug_types)
+    load_full_type_unit (per_cu, per_objfile);
+  else
+    load_full_comp_unit (per_cu, per_objfile, per_objfile->get_cu (per_cu),
+			 skip_partial, language_minimal);
+
+  dwarf2_cu *cu = per_objfile->get_cu (per_cu);
+  if (cu == nullptr)
+    return nullptr;  /* Dummy CU.  */
+
+  dwarf2_find_base_address (cu->dies, cu);
+
+  return cu;
+}
+
+/* Read in the symbols for PER_CU in the context of DWARF"_PER_OBJFILE.  */
+
+static void
+dw2_do_instantiate_symtab (dwarf2_per_cu_data *per_cu,
+			   dwarf2_per_objfile *per_objfile, bool skip_partial)
+{
+  /* Skip type_unit_groups, reading the type units they contain
+     is handled elsewhere.  */
+  if (per_cu->type_unit_group_p ())
+    return;
+
+  {
+    /* The destructor of dwarf2_queue_guard frees any entries left on
+       the queue.  After this point we're guaranteed to leave this function
+       with the dwarf queue empty.  */
+    dwarf2_queue_guard q_guard (per_objfile);
+
+    if (!per_objfile->symtab_set_p (per_cu))
+      {
+	queue_comp_unit (per_cu, per_objfile, language_minimal);
+	dwarf2_cu *cu = load_cu (per_cu, per_objfile, skip_partial);
+
+	/* If we just loaded a CU from a DWO, and we're working with an index
+	   that may badly handle TUs, load all the TUs in that DWO as well.
+	   http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
+	if (!per_cu->is_debug_types
+	    && cu != NULL
+	    && cu->dwo_unit != NULL
+	    && per_objfile->per_bfd->index_table != NULL
+	    && per_objfile->per_bfd->index_table->version <= 7
+	    /* DWP files aren't supported yet.  */
+	    && get_dwp_file (per_objfile) == NULL)
+	  queue_and_load_all_dwo_tus (cu);
+      }
+
+    process_queue (per_objfile);
+  }
+
+  /* Age the cache, releasing compilation units that have not
+     been used recently.  */
+  per_objfile->age_comp_units ();
+}
+
+/* Ensure that the symbols for PER_CU have been read in.  DWARF2_PER_OBJFILE is
+   the per-objfile for which this symtab is instantiated.
+
+   Returns the resulting symbol table.  */
+
+static struct compunit_symtab *
+dw2_instantiate_symtab (dwarf2_per_cu_data *per_cu,
+			dwarf2_per_objfile *per_objfile,
+			bool skip_partial)
+{
+  gdb_assert (per_objfile->per_bfd->using_index);
+
+  if (!per_objfile->symtab_set_p (per_cu))
+    {
+      free_cached_comp_units freer (per_objfile);
+      scoped_restore decrementer = increment_reading_symtab ();
+      dw2_do_instantiate_symtab (per_cu, per_objfile, skip_partial);
+      process_cu_includes (per_objfile);
+    }
+
+  return per_objfile->get_symtab (per_cu);
+}
+
+/* See declaration.  */
+
+dwarf2_per_cu_data *
+dwarf2_per_bfd::get_cutu (int index)
+{
+  if (index >= this->all_comp_units.size ())
+    {
+      index -= this->all_comp_units.size ();
+      gdb_assert (index < this->all_type_units.size ());
+      return &this->all_type_units[index]->per_cu;
+    }
+
+  return this->all_comp_units[index];
+}
+
+/* See declaration.  */
+
+dwarf2_per_cu_data *
+dwarf2_per_bfd::get_cu (int index)
+{
+  gdb_assert (index >= 0 && index < this->all_comp_units.size ());
+
+  return this->all_comp_units[index];
+}
+
+/* See declaration.  */
+
+signatured_type *
+dwarf2_per_bfd::get_tu (int index)
+{
+  gdb_assert (index >= 0 && index < this->all_type_units.size ());
+
+  return this->all_type_units[index];
+}
+
+/* See read.h.  */
+
+dwarf2_per_cu_data *
+dwarf2_per_bfd::allocate_per_cu ()
+{
+  dwarf2_per_cu_data *result = OBSTACK_ZALLOC (&obstack, dwarf2_per_cu_data);
+  result->per_bfd = this;
+  result->index = m_num_psymtabs++;
+  return result;
+}
+
+/* See read.h.  */
+
+signatured_type *
+dwarf2_per_bfd::allocate_signatured_type ()
+{
+  signatured_type *result = OBSTACK_ZALLOC (&obstack, signatured_type);
+  result->per_cu.per_bfd = this;
+  result->per_cu.index = m_num_psymtabs++;
+  return result;
+}
+
+/* Return a new dwarf2_per_cu_data allocated on the per-bfd
+   obstack, and constructed with the specified field values.  */
+
+static dwarf2_per_cu_data *
+create_cu_from_index_list (dwarf2_per_bfd *per_bfd,
+			   struct dwarf2_section_info *section,
+			   int is_dwz,
+			   sect_offset sect_off, ULONGEST length)
+{
+  dwarf2_per_cu_data *the_cu = per_bfd->allocate_per_cu ();
+  the_cu->sect_off = sect_off;
+  the_cu->length = length;
+  the_cu->section = section;
+  the_cu->v.quick = OBSTACK_ZALLOC (&per_bfd->obstack,
+				    struct dwarf2_per_cu_quick_data);
+  the_cu->is_dwz = is_dwz;
+  return the_cu;
+}
+
+/* A helper for create_cus_from_index that handles a given list of
+   CUs.  */
+
+static void
+create_cus_from_index_list (dwarf2_per_bfd *per_bfd,
+			    const gdb_byte *cu_list, offset_type n_elements,
+			    struct dwarf2_section_info *section,
+			    int is_dwz)
+{
+  for (offset_type i = 0; i < n_elements; i += 2)
+    {
+      gdb_static_assert (sizeof (ULONGEST) >= 8);
+
+      sect_offset sect_off
+	= (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
+      ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
+      cu_list += 2 * 8;
+
+      dwarf2_per_cu_data *per_cu
+	= create_cu_from_index_list (per_bfd, section, is_dwz, sect_off,
+				     length);
+      per_bfd->all_comp_units.push_back (per_cu);
+    }
+}
+
+/* Read the CU list from the mapped index, and use it to create all
+   the CU objects for PER_BFD.  */
+
+static void
+create_cus_from_index (dwarf2_per_bfd *per_bfd,
+		       const gdb_byte *cu_list, offset_type cu_list_elements,
+		       const gdb_byte *dwz_list, offset_type dwz_elements)
+{
+  gdb_assert (per_bfd->all_comp_units.empty ());
+  per_bfd->all_comp_units.reserve ((cu_list_elements + dwz_elements) / 2);
+
+  create_cus_from_index_list (per_bfd, cu_list, cu_list_elements,
+			      &per_bfd->info, 0);
+
+  if (dwz_elements == 0)
+    return;
+
+  dwz_file *dwz = dwarf2_get_dwz_file (per_bfd);
+  create_cus_from_index_list (per_bfd, dwz_list, dwz_elements,
+			      &dwz->info, 1);
+}
+
+/* Create the signatured type hash table from the index.  */
+
+static void
+create_signatured_type_table_from_index
+  (dwarf2_per_bfd *per_bfd, struct dwarf2_section_info *section,
+   const gdb_byte *bytes, offset_type elements)
+{
+  gdb_assert (per_bfd->all_type_units.empty ());
+  per_bfd->all_type_units.reserve (elements / 3);
+
+  htab_up sig_types_hash = allocate_signatured_type_table ();
+
+  for (offset_type i = 0; i < elements; i += 3)
+    {
+      struct signatured_type *sig_type;
+      ULONGEST signature;
+      void **slot;
+      cu_offset type_offset_in_tu;
+
+      gdb_static_assert (sizeof (ULONGEST) >= 8);
+      sect_offset sect_off
+	= (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
+      type_offset_in_tu
+	= (cu_offset) extract_unsigned_integer (bytes + 8, 8,
+						BFD_ENDIAN_LITTLE);
+      signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
+      bytes += 3 * 8;
+
+      sig_type = per_bfd->allocate_signatured_type ();
+      sig_type->signature = signature;
+      sig_type->type_offset_in_tu = type_offset_in_tu;
+      sig_type->per_cu.is_debug_types = 1;
+      sig_type->per_cu.section = section;
+      sig_type->per_cu.sect_off = sect_off;
+      sig_type->per_cu.v.quick
+	= OBSTACK_ZALLOC (&per_bfd->obstack,
+			  struct dwarf2_per_cu_quick_data);
+
+      slot = htab_find_slot (sig_types_hash.get (), sig_type, INSERT);
+      *slot = sig_type;
+
+      per_bfd->all_type_units.push_back (sig_type);
+    }
+
+  per_bfd->signatured_types = std::move (sig_types_hash);
+}
+
+/* Create the signatured type hash table from .debug_names.  */
+
+static void
+create_signatured_type_table_from_debug_names
+  (dwarf2_per_objfile *per_objfile,
+   const mapped_debug_names &map,
+   struct dwarf2_section_info *section,
+   struct dwarf2_section_info *abbrev_section)
+{
+  struct objfile *objfile = per_objfile->objfile;
+
+  section->read (objfile);
+  abbrev_section->read (objfile);
+
+  gdb_assert (per_objfile->per_bfd->all_type_units.empty ());
+  per_objfile->per_bfd->all_type_units.reserve (map.tu_count);
+
+  htab_up sig_types_hash = allocate_signatured_type_table ();
+
+  for (uint32_t i = 0; i < map.tu_count; ++i)
+    {
+      struct signatured_type *sig_type;
+      void **slot;
+
+      sect_offset sect_off
+	= (sect_offset) (extract_unsigned_integer
+			 (map.tu_table_reordered + i * map.offset_size,
+			  map.offset_size,
+			  map.dwarf5_byte_order));
+
+      comp_unit_head cu_header;
+      read_and_check_comp_unit_head (per_objfile, &cu_header, section,
+				     abbrev_section,
+				     section->buffer + to_underlying (sect_off),
+				     rcuh_kind::TYPE);
+
+      sig_type = per_objfile->per_bfd->allocate_signatured_type ();
+      sig_type->signature = cu_header.signature;
+      sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
+      sig_type->per_cu.is_debug_types = 1;
+      sig_type->per_cu.section = section;
+      sig_type->per_cu.sect_off = sect_off;
+      sig_type->per_cu.v.quick
+	= OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack,
+			  struct dwarf2_per_cu_quick_data);
+
+      slot = htab_find_slot (sig_types_hash.get (), sig_type, INSERT);
+      *slot = sig_type;
+
+      per_objfile->per_bfd->all_type_units.push_back (sig_type);
+    }
+
+  per_objfile->per_bfd->signatured_types = std::move (sig_types_hash);
+}
+
+/* Read the address map data from the mapped index, and use it to
+   populate the objfile's psymtabs_addrmap.  */
+
+static void
+create_addrmap_from_index (dwarf2_per_objfile *per_objfile,
+			   struct mapped_index *index)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  const gdb_byte *iter, *end;
+  struct addrmap *mutable_map;
+  CORE_ADDR baseaddr;
+
+  auto_obstack temp_obstack;
+
+  mutable_map = addrmap_create_mutable (&temp_obstack);
+
+  iter = index->address_table.data ();
+  end = iter + index->address_table.size ();
+
+  baseaddr = objfile->text_section_offset ();
+
+  while (iter < end)
+    {
+      ULONGEST hi, lo, cu_index;
+      lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
+      iter += 8;
+      hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
+      iter += 8;
+      cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
+      iter += 4;
+
+      if (lo > hi)
+	{
+	  complaint (_(".gdb_index address table has invalid range (%s - %s)"),
+		     hex_string (lo), hex_string (hi));
+	  continue;
+	}
+
+      if (cu_index >= per_objfile->per_bfd->all_comp_units.size ())
+	{
+	  complaint (_(".gdb_index address table has invalid CU number %u"),
+		     (unsigned) cu_index);
+	  continue;
+	}
+
+      lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
+      hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
+      addrmap_set_empty (mutable_map, lo, hi - 1,
+			 per_objfile->per_bfd->get_cu (cu_index));
+    }
+
+  objfile->partial_symtabs->psymtabs_addrmap
+    = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
+}
+
+/* Read the address map data from DWARF-5 .debug_aranges, and use it to
+   populate the objfile's psymtabs_addrmap.  */
+
+static void
+create_addrmap_from_aranges (dwarf2_per_objfile *per_objfile,
+			     struct dwarf2_section_info *section)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  bfd *abfd = objfile->obfd;
+  struct gdbarch *gdbarch = objfile->arch ();
+  const CORE_ADDR baseaddr = objfile->text_section_offset ();
+
+  auto_obstack temp_obstack;
+  addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
+
+  std::unordered_map<sect_offset,
+		     dwarf2_per_cu_data *,
+		     gdb::hash_enum<sect_offset>>
+    debug_info_offset_to_per_cu;
+  for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+    {
+      const auto insertpair
+	= debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
+      if (!insertpair.second)
+	{
+	  warning (_("Section .debug_aranges in %s has duplicate "
+		     "debug_info_offset %s, ignoring .debug_aranges."),
+		   objfile_name (objfile), sect_offset_str (per_cu->sect_off));
+	  return;
+	}
+    }
+
+  section->read (objfile);
+
+  const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
+
+  const gdb_byte *addr = section->buffer;
+
+  while (addr < section->buffer + section->size)
+    {
+      const gdb_byte *const entry_addr = addr;
+      unsigned int bytes_read;
+
+      const LONGEST entry_length = read_initial_length (abfd, addr,
+							&bytes_read);
+      addr += bytes_read;
+
+      const gdb_byte *const entry_end = addr + entry_length;
+      const bool dwarf5_is_dwarf64 = bytes_read != 4;
+      const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
+      if (addr + entry_length > section->buffer + section->size)
+	{
+	  warning (_("Section .debug_aranges in %s entry at offset %s "
+	             "length %s exceeds section length %s, "
+		     "ignoring .debug_aranges."),
+		   objfile_name (objfile),
+		   plongest (entry_addr - section->buffer),
+		   plongest (bytes_read + entry_length),
+		   pulongest (section->size));
+	  return;
+	}
+
+      /* The version number.  */
+      const uint16_t version = read_2_bytes (abfd, addr);
+      addr += 2;
+      if (version != 2)
+	{
+	  warning (_("Section .debug_aranges in %s entry at offset %s "
+		     "has unsupported version %d, ignoring .debug_aranges."),
+		   objfile_name (objfile),
+		   plongest (entry_addr - section->buffer), version);
+	  return;
+	}
+
+      const uint64_t debug_info_offset
+	= extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
+      addr += offset_size;
+      const auto per_cu_it
+	= debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
+      if (per_cu_it == debug_info_offset_to_per_cu.cend ())
+	{
+	  warning (_("Section .debug_aranges in %s entry at offset %s "
+		     "debug_info_offset %s does not exists, "
+		     "ignoring .debug_aranges."),
+		   objfile_name (objfile),
+		   plongest (entry_addr - section->buffer),
+		   pulongest (debug_info_offset));
+	  return;
+	}
+      dwarf2_per_cu_data *const per_cu = per_cu_it->second;
+
+      const uint8_t address_size = *addr++;
+      if (address_size < 1 || address_size > 8)
+	{
+	  warning (_("Section .debug_aranges in %s entry at offset %s "
+		     "address_size %u is invalid, ignoring .debug_aranges."),
+		   objfile_name (objfile),
+		   plongest (entry_addr - section->buffer), address_size);
+	  return;
+	}
+
+      const uint8_t segment_selector_size = *addr++;
+      if (segment_selector_size != 0)
+	{
+	  warning (_("Section .debug_aranges in %s entry at offset %s "
+		     "segment_selector_size %u is not supported, "
+		     "ignoring .debug_aranges."),
+		   objfile_name (objfile),
+		   plongest (entry_addr - section->buffer),
+		   segment_selector_size);
+	  return;
+	}
+
+      /* Must pad to an alignment boundary that is twice the address
+         size.  It is undocumented by the DWARF standard but GCC does
+         use it.  */
+      for (size_t padding = ((-(addr - section->buffer))
+			     & (2 * address_size - 1));
+           padding > 0; padding--)
+	if (*addr++ != 0)
+	  {
+	    warning (_("Section .debug_aranges in %s entry at offset %s "
+		       "padding is not zero, ignoring .debug_aranges."),
+		     objfile_name (objfile),
+		     plongest (entry_addr - section->buffer));
+	    return;
+	  }
+
+      for (;;)
+	{
+	  if (addr + 2 * address_size > entry_end)
+	    {
+	      warning (_("Section .debug_aranges in %s entry at offset %s "
+			 "address list is not properly terminated, "
+			 "ignoring .debug_aranges."),
+		       objfile_name (objfile),
+		       plongest (entry_addr - section->buffer));
+	      return;
+	    }
+	  ULONGEST start = extract_unsigned_integer (addr, address_size,
+						     dwarf5_byte_order);
+	  addr += address_size;
+	  ULONGEST length = extract_unsigned_integer (addr, address_size,
+						      dwarf5_byte_order);
+	  addr += address_size;
+	  if (start == 0 && length == 0)
+	    break;
+	  if (start == 0 && !per_objfile->per_bfd->has_section_at_zero)
+	    {
+	      /* Symbol was eliminated due to a COMDAT group.  */
+	      continue;
+	    }
+	  ULONGEST end = start + length;
+	  start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
+		   - baseaddr);
+	  end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
+		 - baseaddr);
+	  addrmap_set_empty (mutable_map, start, end - 1, per_cu);
+	}
+    }
+
+  objfile->partial_symtabs->psymtabs_addrmap
+    = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
+}
+
+/* Find a slot in the mapped index INDEX for the object named NAME.
+   If NAME is found, set *VEC_OUT to point to the CU vector in the
+   constant pool and return true.  If NAME cannot be found, return
+   false.  */
+
+static bool
+find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
+			  offset_type **vec_out)
+{
+  offset_type hash;
+  offset_type slot, step;
+  int (*cmp) (const char *, const char *);
+
+  gdb::unique_xmalloc_ptr<char> without_params;
+  if (current_language->la_language == language_cplus
+      || current_language->la_language == language_fortran
+      || current_language->la_language == language_d)
+    {
+      /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
+	 not contain any.  */
+
+      if (strchr (name, '(') != NULL)
+	{
+	  without_params = cp_remove_params (name);
+
+	  if (without_params != NULL)
+	    name = without_params.get ();
+	}
+    }
+
+  /* Index version 4 did not support case insensitive searches.  But the
+     indices for case insensitive languages are built in lowercase, therefore
+     simulate our NAME being searched is also lowercased.  */
+  hash = mapped_index_string_hash ((index->version == 4
+                                    && case_sensitivity == case_sensitive_off
+				    ? 5 : index->version),
+				   name);
+
+  slot = hash & (index->symbol_table.size () - 1);
+  step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
+  cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
+
+  for (;;)
+    {
+      const char *str;
+
+      const auto &bucket = index->symbol_table[slot];
+      if (bucket.name == 0 && bucket.vec == 0)
+	return false;
+
+      str = index->constant_pool + MAYBE_SWAP (bucket.name);
+      if (!cmp (name, str))
+	{
+	  *vec_out = (offset_type *) (index->constant_pool
+				      + MAYBE_SWAP (bucket.vec));
+	  return true;
+	}
+
+      slot = (slot + step) & (index->symbol_table.size () - 1);
+    }
+}
+
+/* A helper function that reads the .gdb_index from BUFFER and fills
+   in MAP.  FILENAME is the name of the file containing the data;
+   it is used for error reporting.  DEPRECATED_OK is true if it is
+   ok to use deprecated sections.
+
+   CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
+   out parameters that are filled in with information about the CU and
+   TU lists in the section.
+
+   Returns true if all went well, false otherwise.  */
+
+static bool
+read_gdb_index_from_buffer (const char *filename,
+			    bool deprecated_ok,
+			    gdb::array_view<const gdb_byte> buffer,
+			    struct mapped_index *map,
+			    const gdb_byte **cu_list,
+			    offset_type *cu_list_elements,
+			    const gdb_byte **types_list,
+			    offset_type *types_list_elements)
+{
+  const gdb_byte *addr = &buffer[0];
+
+  /* Version check.  */
+  offset_type version = MAYBE_SWAP (*(offset_type *) addr);
+  /* Versions earlier than 3 emitted every copy of a psymbol.  This
+     causes the index to behave very poorly for certain requests.  Version 3
+     contained incomplete addrmap.  So, it seems better to just ignore such
+     indices.  */
+  if (version < 4)
+    {
+      static int warning_printed = 0;
+      if (!warning_printed)
+	{
+	  warning (_("Skipping obsolete .gdb_index section in %s."),
+		   filename);
+	  warning_printed = 1;
+	}
+      return 0;
+    }
+  /* Index version 4 uses a different hash function than index version
+     5 and later.
+
+     Versions earlier than 6 did not emit psymbols for inlined
+     functions.  Using these files will cause GDB not to be able to
+     set breakpoints on inlined functions by name, so we ignore these
+     indices unless the user has done
+     "set use-deprecated-index-sections on".  */
+  if (version < 6 && !deprecated_ok)
+    {
+      static int warning_printed = 0;
+      if (!warning_printed)
+	{
+	  warning (_("\
+Skipping deprecated .gdb_index section in %s.\n\
+Do \"set use-deprecated-index-sections on\" before the file is read\n\
+to use the section anyway."),
+		   filename);
+	  warning_printed = 1;
+	}
+      return 0;
+    }
+  /* Version 7 indices generated by gold refer to the CU for a symbol instead
+     of the TU (for symbols coming from TUs),
+     http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
+     Plus gold-generated indices can have duplicate entries for global symbols,
+     http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
+     These are just performance bugs, and we can't distinguish gdb-generated
+     indices from gold-generated ones, so issue no warning here.  */
+
+  /* Indexes with higher version than the one supported by GDB may be no
+     longer backward compatible.  */
+  if (version > 8)
+    return 0;
+
+  map->version = version;
+
+  offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
+
+  int i = 0;
+  *cu_list = addr + MAYBE_SWAP (metadata[i]);
+  *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
+		       / 8);
+  ++i;
+
+  *types_list = addr + MAYBE_SWAP (metadata[i]);
+  *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
+			   - MAYBE_SWAP (metadata[i]))
+			  / 8);
+  ++i;
+
+  const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
+  const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
+  map->address_table
+    = gdb::array_view<const gdb_byte> (address_table, address_table_end);
+  ++i;
+
+  const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
+  const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
+  map->symbol_table
+    = gdb::array_view<mapped_index::symbol_table_slot>
+       ((mapped_index::symbol_table_slot *) symbol_table,
+	(mapped_index::symbol_table_slot *) symbol_table_end);
+
+  ++i;
+  map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
+
+  return 1;
+}
+
+/* Callback types for dwarf2_read_gdb_index.  */
+
+typedef gdb::function_view
+    <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_bfd *)>
+    get_gdb_index_contents_ftype;
+typedef gdb::function_view
+    <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
+    get_gdb_index_contents_dwz_ftype;
+
+/* Read .gdb_index.  If everything went ok, initialize the "quick"
+   elements of all the CUs and return 1.  Otherwise, return 0.  */
+
+static int
+dwarf2_read_gdb_index
+  (dwarf2_per_objfile *per_objfile,
+   get_gdb_index_contents_ftype get_gdb_index_contents,
+   get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
+{
+  const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
+  offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
+  struct dwz_file *dwz;
+  struct objfile *objfile = per_objfile->objfile;
+  dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
+
+  gdb::array_view<const gdb_byte> main_index_contents
+    = get_gdb_index_contents (objfile, per_bfd);
+
+  if (main_index_contents.empty ())
+    return 0;
+
+  std::unique_ptr<struct mapped_index> map (new struct mapped_index);
+  if (!read_gdb_index_from_buffer (objfile_name (objfile),
+				   use_deprecated_index_sections,
+				   main_index_contents, map.get (), &cu_list,
+				   &cu_list_elements, &types_list,
+				   &types_list_elements))
+    return 0;
+
+  /* Don't use the index if it's empty.  */
+  if (map->symbol_table.empty ())
+    return 0;
+
+  /* If there is a .dwz file, read it so we can get its CU list as
+     well.  */
+  dwz = dwarf2_get_dwz_file (per_bfd);
+  if (dwz != NULL)
+    {
+      struct mapped_index dwz_map;
+      const gdb_byte *dwz_types_ignore;
+      offset_type dwz_types_elements_ignore;
+
+      gdb::array_view<const gdb_byte> dwz_index_content
+	= get_gdb_index_contents_dwz (objfile, dwz);
+
+      if (dwz_index_content.empty ())
+	return 0;
+
+      if (!read_gdb_index_from_buffer (bfd_get_filename (dwz->dwz_bfd.get ()),
+				       1, dwz_index_content, &dwz_map,
+				       &dwz_list, &dwz_list_elements,
+				       &dwz_types_ignore,
+				       &dwz_types_elements_ignore))
+	{
+	  warning (_("could not read '.gdb_index' section from %s; skipping"),
+		   bfd_get_filename (dwz->dwz_bfd.get ()));
+	  return 0;
+	}
+    }
+
+  create_cus_from_index (per_bfd, cu_list, cu_list_elements, dwz_list,
+			 dwz_list_elements);
+
+  if (types_list_elements)
+    {
+      /* We can only handle a single .debug_types when we have an
+	 index.  */
+      if (per_bfd->types.size () != 1)
+	return 0;
+
+      dwarf2_section_info *section = &per_bfd->types[0];
+
+      create_signatured_type_table_from_index (per_bfd, section, types_list,
+					       types_list_elements);
+    }
+
+  create_addrmap_from_index (per_objfile, map.get ());
+
+  per_bfd->index_table = std::move (map);
+  per_bfd->using_index = 1;
+  per_bfd->quick_file_names_table =
+    create_quick_file_names_table (per_bfd->all_comp_units.size ());
+
+  /* Save partial symtabs in the per_bfd object, for the benefit of subsequent
+     objfiles using the same BFD.  */
+  gdb_assert (per_bfd->partial_symtabs == nullptr);
+  per_bfd->partial_symtabs = objfile->partial_symtabs;
+
+  return 1;
+}
+
+/* die_reader_func for dw2_get_file_names.  */
+
+static void
+dw2_get_file_names_reader (const struct die_reader_specs *reader,
+			   const gdb_byte *info_ptr,
+			   struct die_info *comp_unit_die)
+{
+  struct dwarf2_cu *cu = reader->cu;
+  struct dwarf2_per_cu_data *this_cu = cu->per_cu;
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct dwarf2_per_cu_data *lh_cu;
+  struct attribute *attr;
+  void **slot;
+  struct quick_file_names *qfn;
+
+  gdb_assert (! this_cu->is_debug_types);
+
+  /* Our callers never want to match partial units -- instead they
+     will match the enclosing full CU.  */
+  if (comp_unit_die->tag == DW_TAG_partial_unit)
+    {
+      this_cu->v.quick->no_file_data = 1;
+      return;
+    }
+
+  lh_cu = this_cu;
+  slot = NULL;
+
+  line_header_up lh;
+  sect_offset line_offset {};
+
+  attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
+  if (attr != nullptr)
+    {
+      struct quick_file_names find_entry;
+
+      line_offset = (sect_offset) DW_UNSND (attr);
+
+      /* We may have already read in this line header (TU line header sharing).
+	 If we have we're done.  */
+      find_entry.hash.dwo_unit = cu->dwo_unit;
+      find_entry.hash.line_sect_off = line_offset;
+      slot = htab_find_slot (per_objfile->per_bfd->quick_file_names_table.get (),
+			     &find_entry, INSERT);
+      if (*slot != NULL)
+	{
+	  lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
+	  return;
+	}
+
+      lh = dwarf_decode_line_header (line_offset, cu);
+    }
+  if (lh == NULL)
+    {
+      lh_cu->v.quick->no_file_data = 1;
+      return;
+    }
+
+  qfn = XOBNEW (&per_objfile->per_bfd->obstack, struct quick_file_names);
+  qfn->hash.dwo_unit = cu->dwo_unit;
+  qfn->hash.line_sect_off = line_offset;
+  gdb_assert (slot != NULL);
+  *slot = qfn;
+
+  file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
+
+  int offset = 0;
+  if (strcmp (fnd.name, "<unknown>") != 0)
+    ++offset;
+
+  qfn->num_file_names = offset + lh->file_names_size ();
+  qfn->file_names =
+    XOBNEWVEC (&per_objfile->per_bfd->obstack, const char *,
+	       qfn->num_file_names);
+  if (offset != 0)
+    qfn->file_names[0] = xstrdup (fnd.name);
+  for (int i = 0; i < lh->file_names_size (); ++i)
+    qfn->file_names[i + offset] = lh->file_full_name (i + 1,
+						      fnd.comp_dir).release ();
+  qfn->real_names = NULL;
+
+  lh_cu->v.quick->file_names = qfn;
+}
+
+/* A helper for the "quick" functions which attempts to read the line
+   table for THIS_CU.  */
+
+static struct quick_file_names *
+dw2_get_file_names (dwarf2_per_cu_data *this_cu,
+		    dwarf2_per_objfile *per_objfile)
+{
+  /* This should never be called for TUs.  */
+  gdb_assert (! this_cu->is_debug_types);
+  /* Nor type unit groups.  */
+  gdb_assert (! this_cu->type_unit_group_p ());
+
+  if (this_cu->v.quick->file_names != NULL)
+    return this_cu->v.quick->file_names;
+  /* If we know there is no line data, no point in looking again.  */
+  if (this_cu->v.quick->no_file_data)
+    return NULL;
+
+  cutu_reader reader (this_cu, per_objfile);
+  if (!reader.dummy_p)
+    dw2_get_file_names_reader (&reader, reader.info_ptr, reader.comp_unit_die);
+
+  if (this_cu->v.quick->no_file_data)
+    return NULL;
+  return this_cu->v.quick->file_names;
+}
+
+/* A helper for the "quick" functions which computes and caches the
+   real path for a given file name from the line table.  */
+
+static const char *
+dw2_get_real_path (dwarf2_per_objfile *per_objfile,
+		   struct quick_file_names *qfn, int index)
+{
+  if (qfn->real_names == NULL)
+    qfn->real_names = OBSTACK_CALLOC (&per_objfile->per_bfd->obstack,
+				      qfn->num_file_names, const char *);
+
+  if (qfn->real_names[index] == NULL)
+    qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
+
+  return qfn->real_names[index];
+}
+
+static struct symtab *
+dw2_find_last_source_symtab (struct objfile *objfile)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  dwarf2_per_cu_data *dwarf_cu = per_objfile->per_bfd->all_comp_units.back ();
+  compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, per_objfile, false);
+
+  if (cust == NULL)
+    return NULL;
+
+  return compunit_primary_filetab (cust);
+}
+
+/* Traversal function for dw2_forget_cached_source_info.  */
+
+static int
+dw2_free_cached_file_names (void **slot, void *info)
+{
+  struct quick_file_names *file_data = (struct quick_file_names *) *slot;
+
+  if (file_data->real_names)
+    {
+      int i;
+
+      for (i = 0; i < file_data->num_file_names; ++i)
+	{
+	  xfree ((void*) file_data->real_names[i]);
+	  file_data->real_names[i] = NULL;
+	}
+    }
+
+  return 1;
+}
+
+static void
+dw2_forget_cached_source_info (struct objfile *objfile)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  htab_traverse_noresize (per_objfile->per_bfd->quick_file_names_table.get (),
+			  dw2_free_cached_file_names, NULL);
+}
+
+/* Helper function for dw2_map_symtabs_matching_filename that expands
+   the symtabs and calls the iterator.  */
+
+static int
+dw2_map_expand_apply (struct objfile *objfile,
+		      struct dwarf2_per_cu_data *per_cu,
+		      const char *name, const char *real_path,
+		      gdb::function_view<bool (symtab *)> callback)
+{
+  struct compunit_symtab *last_made = objfile->compunit_symtabs;
+
+  /* Don't visit already-expanded CUs.  */
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  if (per_objfile->symtab_set_p (per_cu))
+    return 0;
+
+  /* This may expand more than one symtab, and we want to iterate over
+     all of them.  */
+  dw2_instantiate_symtab (per_cu, per_objfile, false);
+
+  return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
+				    last_made, callback);
+}
+
+/* Implementation of the map_symtabs_matching_filename method.  */
+
+static bool
+dw2_map_symtabs_matching_filename
+  (struct objfile *objfile, const char *name, const char *real_path,
+   gdb::function_view<bool (symtab *)> callback)
+{
+  const char *name_basename = lbasename (name);
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  /* The rule is CUs specify all the files, including those used by
+     any TU, so there's no need to scan TUs here.  */
+
+  for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+    {
+      /* We only need to look at symtabs not already expanded.  */
+      if (per_objfile->symtab_set_p (per_cu))
+	continue;
+
+      quick_file_names *file_data = dw2_get_file_names (per_cu, per_objfile);
+      if (file_data == NULL)
+	continue;
+
+      for (int j = 0; j < file_data->num_file_names; ++j)
+	{
+	  const char *this_name = file_data->file_names[j];
+	  const char *this_real_name;
+
+	  if (compare_filenames_for_search (this_name, name))
+	    {
+	      if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
+					callback))
+		return true;
+	      continue;
+	    }
+
+	  /* Before we invoke realpath, which can get expensive when many
+	     files are involved, do a quick comparison of the basenames.  */
+	  if (! basenames_may_differ
+	      && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
+	    continue;
+
+	  this_real_name = dw2_get_real_path (per_objfile, file_data, j);
+	  if (compare_filenames_for_search (this_real_name, name))
+	    {
+	      if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
+					callback))
+		return true;
+	      continue;
+	    }
+
+	  if (real_path != NULL)
+	    {
+	      gdb_assert (IS_ABSOLUTE_PATH (real_path));
+	      gdb_assert (IS_ABSOLUTE_PATH (name));
+	      if (this_real_name != NULL
+		  && FILENAME_CMP (real_path, this_real_name) == 0)
+		{
+		  if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
+					    callback))
+		    return true;
+		  continue;
+		}
+	    }
+	}
+    }
+
+  return false;
+}
+
+/* Struct used to manage iterating over all CUs looking for a symbol.  */
+
+struct dw2_symtab_iterator
+{
+  /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
+  dwarf2_per_objfile *per_objfile;
+  /* If set, only look for symbols that match that block.  Valid values are
+     GLOBAL_BLOCK and STATIC_BLOCK.  */
+  gdb::optional<block_enum> block_index;
+  /* The kind of symbol we're looking for.  */
+  domain_enum domain;
+  /* The list of CUs from the index entry of the symbol,
+     or NULL if not found.  */
+  offset_type *vec;
+  /* The next element in VEC to look at.  */
+  int next;
+  /* The number of elements in VEC, or zero if there is no match.  */
+  int length;
+  /* Have we seen a global version of the symbol?
+     If so we can ignore all further global instances.
+     This is to work around gold/15646, inefficient gold-generated
+     indices.  */
+  int global_seen;
+};
+
+/* Initialize the index symtab iterator ITER, common part.  */
+
+static void
+dw2_symtab_iter_init_common (struct dw2_symtab_iterator *iter,
+			     dwarf2_per_objfile *per_objfile,
+			     gdb::optional<block_enum> block_index,
+			     domain_enum domain)
+{
+  iter->per_objfile = per_objfile;
+  iter->block_index = block_index;
+  iter->domain = domain;
+  iter->next = 0;
+  iter->global_seen = 0;
+  iter->vec = NULL;
+  iter->length = 0;
+}
+
+/* Initialize the index symtab iterator ITER, const char *NAME variant.  */
+
+static void
+dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
+		      dwarf2_per_objfile *per_objfile,
+		      gdb::optional<block_enum> block_index,
+		      domain_enum domain,
+		      const char *name)
+{
+  dw2_symtab_iter_init_common (iter, per_objfile, block_index, domain);
+
+  mapped_index *index = per_objfile->per_bfd->index_table.get ();
+  /* index is NULL if OBJF_READNOW.  */
+  if (index == NULL)
+    return;
+
+  if (find_slot_in_mapped_hash (index, name, &iter->vec))
+    iter->length = MAYBE_SWAP (*iter->vec);
+}
+
+/* Initialize the index symtab iterator ITER, offset_type NAMEI variant.  */
+
+static void
+dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
+		      dwarf2_per_objfile *per_objfile,
+		      gdb::optional<block_enum> block_index,
+		      domain_enum domain, offset_type namei)
+{
+  dw2_symtab_iter_init_common (iter, per_objfile, block_index, domain);
+
+  mapped_index *index = per_objfile->per_bfd->index_table.get ();
+  /* index is NULL if OBJF_READNOW.  */
+  if (index == NULL)
+    return;
+
+  gdb_assert (!index->symbol_name_slot_invalid (namei));
+  const auto &bucket = index->symbol_table[namei];
+
+  iter->vec = (offset_type *) (index->constant_pool
+			       + MAYBE_SWAP (bucket.vec));
+  iter->length = MAYBE_SWAP (*iter->vec);
+}
+
+/* Return the next matching CU or NULL if there are no more.  */
+
+static struct dwarf2_per_cu_data *
+dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
+{
+  dwarf2_per_objfile *per_objfile = iter->per_objfile;
+
+  for ( ; iter->next < iter->length; ++iter->next)
+    {
+      offset_type cu_index_and_attrs =
+	MAYBE_SWAP (iter->vec[iter->next + 1]);
+      offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
+      gdb_index_symbol_kind symbol_kind =
+	GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
+      /* Only check the symbol attributes if they're present.
+	 Indices prior to version 7 don't record them,
+	 and indices >= 7 may elide them for certain symbols
+	 (gold does this).  */
+      int attrs_valid =
+	(per_objfile->per_bfd->index_table->version >= 7
+	 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
+
+      /* Don't crash on bad data.  */
+      if (cu_index >= (per_objfile->per_bfd->all_comp_units.size ()
+		       + per_objfile->per_bfd->all_type_units.size ()))
+	{
+	  complaint (_(".gdb_index entry has bad CU index"
+		       " [in module %s]"), objfile_name (per_objfile->objfile));
+	  continue;
+	}
+
+      dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cutu (cu_index);
+
+      /* Skip if already read in.  */
+      if (per_objfile->symtab_set_p (per_cu))
+	continue;
+
+      /* Check static vs global.  */
+      if (attrs_valid)
+	{
+	  bool is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
+
+	  if (iter->block_index.has_value ())
+	    {
+	      bool want_static = *iter->block_index == STATIC_BLOCK;
+
+	      if (is_static != want_static)
+		continue;
+	    }
+
+	  /* Work around gold/15646.  */
+	  if (!is_static
+	      && symbol_kind == GDB_INDEX_SYMBOL_KIND_TYPE)
+	    {
+	      if (iter->global_seen)
+		continue;
+
+	      iter->global_seen = 1;
+	    }
+	}
+
+      /* Only check the symbol's kind if it has one.  */
+      if (attrs_valid)
+	{
+	  switch (iter->domain)
+	    {
+	    case VAR_DOMAIN:
+	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
+		  && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
+		  /* Some types are also in VAR_DOMAIN.  */
+		  && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
+		continue;
+	      break;
+	    case STRUCT_DOMAIN:
+	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
+		continue;
+	      break;
+	    case LABEL_DOMAIN:
+	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
+		continue;
+	      break;
+	    case MODULE_DOMAIN:
+	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
+		continue;
+	      break;
+	    default:
+	      break;
+	    }
+	}
+
+      ++iter->next;
+      return per_cu;
+    }
+
+  return NULL;
+}
+
+static struct compunit_symtab *
+dw2_lookup_symbol (struct objfile *objfile, block_enum block_index,
+		   const char *name, domain_enum domain)
+{
+  struct compunit_symtab *stab_best = NULL;
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
+
+  struct dw2_symtab_iterator iter;
+  struct dwarf2_per_cu_data *per_cu;
+
+  dw2_symtab_iter_init (&iter, per_objfile, block_index, domain, name);
+
+  while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
+    {
+      struct symbol *sym, *with_opaque = NULL;
+      struct compunit_symtab *stab
+	= dw2_instantiate_symtab (per_cu, per_objfile, false);
+      const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
+      const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
+
+      sym = block_find_symbol (block, name, domain,
+			       block_find_non_opaque_type_preferred,
+			       &with_opaque);
+
+      /* Some caution must be observed with overloaded functions
+	 and methods, since the index will not contain any overload
+	 information (but NAME might contain it).  */
+
+      if (sym != NULL
+	  && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
+	return stab;
+      if (with_opaque != NULL
+	  && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
+	stab_best = stab;
+
+      /* Keep looking through other CUs.  */
+    }
+
+  return stab_best;
+}
+
+static void
+dw2_print_stats (struct objfile *objfile)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  int total = (per_objfile->per_bfd->all_comp_units.size ()
+	       + per_objfile->per_bfd->all_type_units.size ());
+  int count = 0;
+
+  for (int i = 0; i < total; ++i)
+    {
+      dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cutu (i);
+
+      if (!per_objfile->symtab_set_p (per_cu))
+	++count;
+    }
+  printf_filtered (_("  Number of read CUs: %d\n"), total - count);
+  printf_filtered (_("  Number of unread CUs: %d\n"), count);
+}
+
+/* This dumps minimal information about the index.
+   It is called via "mt print objfiles".
+   One use is to verify .gdb_index has been loaded by the
+   gdb.dwarf2/gdb-index.exp testcase.  */
+
+static void
+dw2_dump (struct objfile *objfile)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  gdb_assert (per_objfile->per_bfd->using_index);
+  printf_filtered (".gdb_index:");
+  if (per_objfile->per_bfd->index_table != NULL)
+    {
+      printf_filtered (" version %d\n",
+		       per_objfile->per_bfd->index_table->version);
+    }
+  else
+    printf_filtered (" faked for \"readnow\"\n");
+  printf_filtered ("\n");
+}
+
+static void
+dw2_expand_symtabs_for_function (struct objfile *objfile,
+				 const char *func_name)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  struct dw2_symtab_iterator iter;
+  struct dwarf2_per_cu_data *per_cu;
+
+  dw2_symtab_iter_init (&iter, per_objfile, {}, VAR_DOMAIN, func_name);
+
+  while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
+    dw2_instantiate_symtab (per_cu, per_objfile, false);
+
+}
+
+static void
+dw2_expand_all_symtabs (struct objfile *objfile)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  int total_units = (per_objfile->per_bfd->all_comp_units.size ()
+		     + per_objfile->per_bfd->all_type_units.size ());
+
+  for (int i = 0; i < total_units; ++i)
+    {
+      dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cutu (i);
+
+      /* We don't want to directly expand a partial CU, because if we
+	 read it with the wrong language, then assertion failures can
+	 be triggered later on.  See PR symtab/23010.  So, tell
+	 dw2_instantiate_symtab to skip partial CUs -- any important
+	 partial CU will be read via DW_TAG_imported_unit anyway.  */
+      dw2_instantiate_symtab (per_cu, per_objfile, true);
+    }
+}
+
+static void
+dw2_expand_symtabs_with_fullname (struct objfile *objfile,
+				  const char *fullname)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  /* We don't need to consider type units here.
+     This is only called for examining code, e.g. expand_line_sal.
+     There can be an order of magnitude (or more) more type units
+     than comp units, and we avoid them if we can.  */
+
+  for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+    {
+      /* We only need to look at symtabs not already expanded.  */
+      if (per_objfile->symtab_set_p (per_cu))
+	continue;
+
+      quick_file_names *file_data = dw2_get_file_names (per_cu, per_objfile);
+      if (file_data == NULL)
+	continue;
+
+      for (int j = 0; j < file_data->num_file_names; ++j)
+	{
+	  const char *this_fullname = file_data->file_names[j];
+
+	  if (filename_cmp (this_fullname, fullname) == 0)
+	    {
+	      dw2_instantiate_symtab (per_cu, per_objfile, false);
+	      break;
+	    }
+	}
+    }
+}
+
+static void
+dw2_expand_symtabs_matching_symbol
+  (mapped_index_base &index,
+   const lookup_name_info &lookup_name_in,
+   gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
+   enum search_domain kind,
+   gdb::function_view<bool (offset_type)> match_callback,
+   dwarf2_per_objfile *per_objfile);
+
+static void
+dw2_expand_symtabs_matching_one
+  (dwarf2_per_cu_data *per_cu,
+   dwarf2_per_objfile *per_objfile,
+   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
+   gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify);
+
+static void
+dw2_map_matching_symbols
+  (struct objfile *objfile,
+   const lookup_name_info &name, domain_enum domain,
+   int global,
+   gdb::function_view<symbol_found_callback_ftype> callback,
+   symbol_compare_ftype *ordered_compare)
+{
+  /* Used for Ada.  */
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  const block_enum block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
+
+  if (per_objfile->per_bfd->index_table != nullptr)
+    {
+      mapped_index &index = *per_objfile->per_bfd->index_table;
+
+      const char *match_name = name.ada ().lookup_name ().c_str ();
+      auto matcher = [&] (const char *symname)
+	{
+	  if (ordered_compare == nullptr)
+	    return true;
+	  return ordered_compare (symname, match_name) == 0;
+	};
+
+      dw2_expand_symtabs_matching_symbol (index, name, matcher, ALL_DOMAIN,
+					  [&] (offset_type namei)
+      {
+	struct dw2_symtab_iterator iter;
+	struct dwarf2_per_cu_data *per_cu;
+
+	dw2_symtab_iter_init (&iter, per_objfile, block_kind, domain,
+			      namei);
+	while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
+	  dw2_expand_symtabs_matching_one (per_cu, per_objfile, nullptr,
+					   nullptr);
+	return true;
+      }, per_objfile);
+    }
+  else
+    {
+      /* We have -readnow: no .gdb_index, but no partial symtabs either.  So,
+	 proceed assuming all symtabs have been read in.  */
+    }
+
+  for (compunit_symtab *cust : objfile->compunits ())
+    {
+      const struct block *block;
+
+      if (cust == NULL)
+	continue;
+      block = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), block_kind);
+      if (!iterate_over_symbols_terminated (block, name,
+					    domain, callback))
+	return;
+    }
+}
+
+/* Starting from a search name, return the string that finds the upper
+   bound of all strings that start with SEARCH_NAME in a sorted name
+   list.  Returns the empty string to indicate that the upper bound is
+   the end of the list.  */
+
+static std::string
+make_sort_after_prefix_name (const char *search_name)
+{
+  /* When looking to complete "func", we find the upper bound of all
+     symbols that start with "func" by looking for where we'd insert
+     the closest string that would follow "func" in lexicographical
+     order.  Usually, that's "func"-with-last-character-incremented,
+     i.e. "fund".  Mind non-ASCII characters, though.  Usually those
+     will be UTF-8 multi-byte sequences, but we can't be certain.
+     Especially mind the 0xff character, which is a valid character in
+     non-UTF-8 source character sets (e.g. Latin1 'Ã¿'), and we can't
+     rule out compilers allowing it in identifiers.  Note that
+     conveniently, strcmp/strcasecmp are specified to compare
+     characters interpreted as unsigned char.  So what we do is treat
+     the whole string as a base 256 number composed of a sequence of
+     base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
+     to 0, and carries 1 to the following more-significant position.
+     If the very first character in SEARCH_NAME ends up incremented
+     and carries/overflows, then the upper bound is the end of the
+     list.  The string after the empty string is also the empty
+     string.
+
+     Some examples of this operation:
+
+       SEARCH_NAME  => "+1" RESULT
+
+       "abc"              => "abd"
+       "ab\xff"           => "ac"
+       "\xff" "a" "\xff"  => "\xff" "b"
+       "\xff"             => ""
+       "\xff\xff"         => ""
+       ""                 => ""
+
+     Then, with these symbols for example:
+
+      func
+      func1
+      fund
+
+     completing "func" looks for symbols between "func" and
+     "func"-with-last-character-incremented, i.e. "fund" (exclusive),
+     which finds "func" and "func1", but not "fund".
+
+     And with:
+
+      funcÃ¿     (Latin1 'Ã¿' [0xff])
+      funcÃ¿1
+      fund
+
+     completing "funcÃ¿" looks for symbols between "funcÃ¿" and "fund"
+     (exclusive), which finds "funcÃ¿" and "funcÃ¿1", but not "fund".
+
+     And with:
+
+      Ã¿Ã¿        (Latin1 'Ã¿' [0xff])
+      Ã¿Ã¿1
+
+     completing "Ã¿" or "Ã¿Ã¿" looks for symbols between between "Ã¿Ã¿" and
+     the end of the list.
+  */
+  std::string after = search_name;
+  while (!after.empty () && (unsigned char) after.back () == 0xff)
+    after.pop_back ();
+  if (!after.empty ())
+    after.back () = (unsigned char) after.back () + 1;
+  return after;
+}
+
+/* See declaration.  */
+
+std::pair<std::vector<name_component>::const_iterator,
+	  std::vector<name_component>::const_iterator>
+mapped_index_base::find_name_components_bounds
+  (const lookup_name_info &lookup_name_without_params, language lang,
+   dwarf2_per_objfile *per_objfile) const
+{
+  auto *name_cmp
+    = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
+
+  const char *lang_name
+    = lookup_name_without_params.language_lookup_name (lang);
+
+  /* Comparison function object for lower_bound that matches against a
+     given symbol name.  */
+  auto lookup_compare_lower = [&] (const name_component &elem,
+				   const char *name)
+    {
+      const char *elem_qualified = this->symbol_name_at (elem.idx, per_objfile);
+      const char *elem_name = elem_qualified + elem.name_offset;
+      return name_cmp (elem_name, name) < 0;
+    };
+
+  /* Comparison function object for upper_bound that matches against a
+     given symbol name.  */
+  auto lookup_compare_upper = [&] (const char *name,
+				   const name_component &elem)
+    {
+      const char *elem_qualified = this->symbol_name_at (elem.idx, per_objfile);
+      const char *elem_name = elem_qualified + elem.name_offset;
+      return name_cmp (name, elem_name) < 0;
+    };
+
+  auto begin = this->name_components.begin ();
+  auto end = this->name_components.end ();
+
+  /* Find the lower bound.  */
+  auto lower = [&] ()
+    {
+      if (lookup_name_without_params.completion_mode () && lang_name[0] == '\0')
+	return begin;
+      else
+	return std::lower_bound (begin, end, lang_name, lookup_compare_lower);
+    } ();
+
+  /* Find the upper bound.  */
+  auto upper = [&] ()
+    {
+      if (lookup_name_without_params.completion_mode ())
+	{
+	  /* In completion mode, we want UPPER to point past all
+	     symbols names that have the same prefix.  I.e., with
+	     these symbols, and completing "func":
+
+	      function        << lower bound
+	      function1
+	      other_function  << upper bound
+
+	     We find the upper bound by looking for the insertion
+	     point of "func"-with-last-character-incremented,
+	     i.e. "fund".  */
+	  std::string after = make_sort_after_prefix_name (lang_name);
+	  if (after.empty ())
+	    return end;
+	  return std::lower_bound (lower, end, after.c_str (),
+				   lookup_compare_lower);
+	}
+      else
+	return std::upper_bound (lower, end, lang_name, lookup_compare_upper);
+    } ();
+
+  return {lower, upper};
+}
+
+/* See declaration.  */
+
+void
+mapped_index_base::build_name_components (dwarf2_per_objfile *per_objfile)
+{
+  if (!this->name_components.empty ())
+    return;
+
+  this->name_components_casing = case_sensitivity;
+  auto *name_cmp
+    = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
+
+  /* The code below only knows how to break apart components of C++
+     symbol names (and other languages that use '::' as
+     namespace/module separator) and Ada symbol names.  */
+  auto count = this->symbol_name_count ();
+  for (offset_type idx = 0; idx < count; idx++)
+    {
+      if (this->symbol_name_slot_invalid (idx))
+	continue;
+
+      const char *name = this->symbol_name_at (idx, per_objfile);
+
+      /* Add each name component to the name component table.  */
+      unsigned int previous_len = 0;
+
+      if (strstr (name, "::") != nullptr)
+	{
+	  for (unsigned int current_len = cp_find_first_component (name);
+	       name[current_len] != '\0';
+	       current_len += cp_find_first_component (name + current_len))
+	    {
+	      gdb_assert (name[current_len] == ':');
+	      this->name_components.push_back ({previous_len, idx});
+	      /* Skip the '::'.  */
+	      current_len += 2;
+	      previous_len = current_len;
+	    }
+	}
+      else
+	{
+	  /* Handle the Ada encoded (aka mangled) form here.  */
+	  for (const char *iter = strstr (name, "__");
+	       iter != nullptr;
+	       iter = strstr (iter, "__"))
+	    {
+	      this->name_components.push_back ({previous_len, idx});
+	      iter += 2;
+	      previous_len = iter - name;
+	    }
+	}
+
+      this->name_components.push_back ({previous_len, idx});
+    }
+
+  /* Sort name_components elements by name.  */
+  auto name_comp_compare = [&] (const name_component &left,
+				const name_component &right)
+    {
+      const char *left_qualified
+	= this->symbol_name_at (left.idx, per_objfile);
+      const char *right_qualified
+	= this->symbol_name_at (right.idx, per_objfile);
+
+      const char *left_name = left_qualified + left.name_offset;
+      const char *right_name = right_qualified + right.name_offset;
+
+      return name_cmp (left_name, right_name) < 0;
+    };
+
+  std::sort (this->name_components.begin (),
+	     this->name_components.end (),
+	     name_comp_compare);
+}
+
+/* Helper for dw2_expand_symtabs_matching that works with a
+   mapped_index_base instead of the containing objfile.  This is split
+   to a separate function in order to be able to unit test the
+   name_components matching using a mock mapped_index_base.  For each
+   symbol name that matches, calls MATCH_CALLBACK, passing it the
+   symbol's index in the mapped_index_base symbol table.  */
+
+static void
+dw2_expand_symtabs_matching_symbol
+  (mapped_index_base &index,
+   const lookup_name_info &lookup_name_in,
+   gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
+   enum search_domain kind,
+   gdb::function_view<bool (offset_type)> match_callback,
+   dwarf2_per_objfile *per_objfile)
+{
+  lookup_name_info lookup_name_without_params
+    = lookup_name_in.make_ignore_params ();
+
+  /* Build the symbol name component sorted vector, if we haven't
+     yet.  */
+  index.build_name_components (per_objfile);
+
+  /* The same symbol may appear more than once in the range though.
+     E.g., if we're looking for symbols that complete "w", and we have
+     a symbol named "w1::w2", we'll find the two name components for
+     that same symbol in the range.  To be sure we only call the
+     callback once per symbol, we first collect the symbol name
+     indexes that matched in a temporary vector and ignore
+     duplicates.  */
+  std::vector<offset_type> matches;
+
+  struct name_and_matcher
+  {
+    symbol_name_matcher_ftype *matcher;
+    const char *name;
+
+    bool operator== (const name_and_matcher &other) const
+    {
+      return matcher == other.matcher && strcmp (name, other.name) == 0;
+    }
+  };
+
+  /* A vector holding all the different symbol name matchers, for all
+     languages.  */
+  std::vector<name_and_matcher> matchers;
+
+  for (int i = 0; i < nr_languages; i++)
+    {
+      enum language lang_e = (enum language) i;
+
+      const language_defn *lang = language_def (lang_e);
+      symbol_name_matcher_ftype *name_matcher
+	= lang->get_symbol_name_matcher (lookup_name_without_params);
+
+      name_and_matcher key {
+         name_matcher,
+	 lookup_name_without_params.language_lookup_name (lang_e)
+      };
+
+      /* Don't insert the same comparison routine more than once.
+	 Note that we do this linear walk.  This is not a problem in
+	 practice because the number of supported languages is
+	 low.  */
+      if (std::find (matchers.begin (), matchers.end (), key)
+	  != matchers.end ())
+	continue;
+      matchers.push_back (std::move (key));
+
+      auto bounds
+	= index.find_name_components_bounds (lookup_name_without_params,
+					     lang_e, per_objfile);
+
+      /* Now for each symbol name in range, check to see if we have a name
+	 match, and if so, call the MATCH_CALLBACK callback.  */
+
+      for (; bounds.first != bounds.second; ++bounds.first)
+	{
+	  const char *qualified
+	    = index.symbol_name_at (bounds.first->idx, per_objfile);
+
+	  if (!name_matcher (qualified, lookup_name_without_params, NULL)
+	      || (symbol_matcher != NULL && !symbol_matcher (qualified)))
+	    continue;
+
+	  matches.push_back (bounds.first->idx);
+	}
+    }
+
+  std::sort (matches.begin (), matches.end ());
+
+  /* Finally call the callback, once per match.  */
+  ULONGEST prev = -1;
+  for (offset_type idx : matches)
+    {
+      if (prev != idx)
+	{
+	  if (!match_callback (idx))
+	    break;
+	  prev = idx;
+	}
+    }
+
+  /* Above we use a type wider than idx's for 'prev', since 0 and
+     (offset_type)-1 are both possible values.  */
+  static_assert (sizeof (prev) > sizeof (offset_type), "");
+}
+
+#if GDB_SELF_TEST
+
+namespace selftests { namespace dw2_expand_symtabs_matching {
+
+/* A mock .gdb_index/.debug_names-like name index table, enough to
+   exercise dw2_expand_symtabs_matching_symbol, which works with the
+   mapped_index_base interface.  Builds an index from the symbol list
+   passed as parameter to the constructor.  */
+class mock_mapped_index : public mapped_index_base
+{
+public:
+  mock_mapped_index (gdb::array_view<const char *> symbols)
+    : m_symbol_table (symbols)
+  {}
+
+  DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
+
+  /* Return the number of names in the symbol table.  */
+  size_t symbol_name_count () const override
+  {
+    return m_symbol_table.size ();
+  }
+
+  /* Get the name of the symbol at IDX in the symbol table.  */
+  const char *symbol_name_at
+    (offset_type idx, dwarf2_per_objfile *per_objfile) const override
+  {
+    return m_symbol_table[idx];
+  }
+
+private:
+  gdb::array_view<const char *> m_symbol_table;
+};
+
+/* Convenience function that converts a NULL pointer to a "<null>"
+   string, to pass to print routines.  */
+
+static const char *
+string_or_null (const char *str)
+{
+  return str != NULL ? str : "<null>";
+}
+
+/* Check if a lookup_name_info built from
+   NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
+   index.  EXPECTED_LIST is the list of expected matches, in expected
+   matching order.  If no match expected, then an empty list is
+   specified.  Returns true on success.  On failure prints a warning
+   indicating the file:line that failed, and returns false.  */
+
+static bool
+check_match (const char *file, int line,
+	     mock_mapped_index &mock_index,
+	     const char *name, symbol_name_match_type match_type,
+	     bool completion_mode,
+	     std::initializer_list<const char *> expected_list,
+	     dwarf2_per_objfile *per_objfile)
+{
+  lookup_name_info lookup_name (name, match_type, completion_mode);
+
+  bool matched = true;
+
+  auto mismatch = [&] (const char *expected_str,
+		       const char *got)
+  {
+    warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
+	       "expected=\"%s\", got=\"%s\"\n"),
+	     file, line,
+	     (match_type == symbol_name_match_type::FULL
+	      ? "FULL" : "WILD"),
+	     name, string_or_null (expected_str), string_or_null (got));
+    matched = false;
+  };
+
+  auto expected_it = expected_list.begin ();
+  auto expected_end = expected_list.end ();
+
+  dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
+				      NULL, ALL_DOMAIN,
+				      [&] (offset_type idx)
+  {
+    const char *matched_name = mock_index.symbol_name_at (idx, per_objfile);
+    const char *expected_str
+      = expected_it == expected_end ? NULL : *expected_it++;
+
+    if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
+      mismatch (expected_str, matched_name);
+    return true;
+  }, per_objfile);
+
+  const char *expected_str
+  = expected_it == expected_end ? NULL : *expected_it++;
+  if (expected_str != NULL)
+    mismatch (expected_str, NULL);
+
+  return matched;
+}
+
+/* The symbols added to the mock mapped_index for testing (in
+   canonical form).  */
+static const char *test_symbols[] = {
+  "function",
+  "std::bar",
+  "std::zfunction",
+  "std::zfunction2",
+  "w1::w2",
+  "ns::foo<char*>",
+  "ns::foo<int>",
+  "ns::foo<long>",
+  "ns2::tmpl<int>::foo2",
+  "(anonymous namespace)::A::B::C",
+
+  /* These are used to check that the increment-last-char in the
+     matching algorithm for completion doesn't match "t1_fund" when
+     completing "t1_func".  */
+  "t1_func",
+  "t1_func1",
+  "t1_fund",
+  "t1_fund1",
+
+  /* A UTF-8 name with multi-byte sequences to make sure that
+     cp-name-parser understands this as a single identifier ("funÃ§Ã£o"
+     is "function" in PT).  */
+  u8"u8funÃ§Ã£o",
+
+  /* \377 (0xff) is Latin1 'Ã¿'.  */
+  "yfunc\377",
+
+  /* \377 (0xff) is Latin1 'Ã¿'.  */
+  "\377",
+  "\377\377123",
+
+  /* A name with all sorts of complications.  Starts with "z" to make
+     it easier for the completion tests below.  */
+#define Z_SYM_NAME \
+  "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
+    "::tuple<(anonymous namespace)::ui*, " \
+    "std::default_delete<(anonymous namespace)::ui>, void>"
+
+  Z_SYM_NAME
+};
+
+/* Returns true if the mapped_index_base::find_name_component_bounds
+   method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
+   in completion mode.  */
+
+static bool
+check_find_bounds_finds (mapped_index_base &index,
+			 const char *search_name,
+			 gdb::array_view<const char *> expected_syms,
+			 dwarf2_per_objfile *per_objfile)
+{
+  lookup_name_info lookup_name (search_name,
+				symbol_name_match_type::FULL, true);
+
+  auto bounds = index.find_name_components_bounds (lookup_name,
+						   language_cplus,
+						   per_objfile);
+
+  size_t distance = std::distance (bounds.first, bounds.second);
+  if (distance != expected_syms.size ())
+    return false;
+
+  for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
+    {
+      auto nc_elem = bounds.first + exp_elem;
+      const char *qualified = index.symbol_name_at (nc_elem->idx, per_objfile);
+      if (strcmp (qualified, expected_syms[exp_elem]) != 0)
+	return false;
+    }
+
+  return true;
+}
+
+/* Test the lower-level mapped_index::find_name_component_bounds
+   method.  */
+
+static void
+test_mapped_index_find_name_component_bounds ()
+{
+  mock_mapped_index mock_index (test_symbols);
+
+  mock_index.build_name_components (NULL /* per_objfile */);
+
+  /* Test the lower-level mapped_index::find_name_component_bounds
+     method in completion mode.  */
+  {
+    static const char *expected_syms[] = {
+      "t1_func",
+      "t1_func1",
+    };
+
+    SELF_CHECK (check_find_bounds_finds
+		  (mock_index, "t1_func", expected_syms,
+		   NULL /* per_objfile */));
+  }
+
+  /* Check that the increment-last-char in the name matching algorithm
+     for completion doesn't get confused with Ansi1 'Ã¿' / 0xff.  */
+  {
+    static const char *expected_syms1[] = {
+      "\377",
+      "\377\377123",
+    };
+    SELF_CHECK (check_find_bounds_finds
+		  (mock_index, "\377", expected_syms1, NULL /* per_objfile */));
+
+    static const char *expected_syms2[] = {
+      "\377\377123",
+    };
+    SELF_CHECK (check_find_bounds_finds
+		  (mock_index, "\377\377", expected_syms2,
+		   NULL /* per_objfile */));
+  }
+}
+
+/* Test dw2_expand_symtabs_matching_symbol.  */
+
+static void
+test_dw2_expand_symtabs_matching_symbol ()
+{
+  mock_mapped_index mock_index (test_symbols);
+
+  /* We let all tests run until the end even if some fails, for debug
+     convenience.  */
+  bool any_mismatch = false;
+
+  /* Create the expected symbols list (an initializer_list).  Needed
+     because lists have commas, and we need to pass them to CHECK,
+     which is a macro.  */
+#define EXPECT(...) { __VA_ARGS__ }
+
+  /* Wrapper for check_match that passes down the current
+     __FILE__/__LINE__.  */
+#define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)	\
+  any_mismatch |= !check_match (__FILE__, __LINE__,			\
+				mock_index,				\
+				NAME, MATCH_TYPE, COMPLETION_MODE,	\
+				EXPECTED_LIST, NULL)
+
+  /* Identity checks.  */
+  for (const char *sym : test_symbols)
+    {
+      /* Should be able to match all existing symbols.  */
+      CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
+		   EXPECT (sym));
+
+      /* Should be able to match all existing symbols with
+	 parameters.  */
+      std::string with_params = std::string (sym) + "(int)";
+      CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
+		   EXPECT (sym));
+
+      /* Should be able to match all existing symbols with
+	 parameters and qualifiers.  */
+      with_params = std::string (sym) + " ( int ) const";
+      CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
+		   EXPECT (sym));
+
+      /* This should really find sym, but cp-name-parser.y doesn't
+	 know about lvalue/rvalue qualifiers yet.  */
+      with_params = std::string (sym) + " ( int ) &&";
+      CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
+		   {});
+    }
+
+  /* Check that the name matching algorithm for completion doesn't get
+     confused with Latin1 'Ã¿' / 0xff.  */
+  {
+    static const char str[] = "\377";
+    CHECK_MATCH (str, symbol_name_match_type::FULL, true,
+		 EXPECT ("\377", "\377\377123"));
+  }
+
+  /* Check that the increment-last-char in the matching algorithm for
+     completion doesn't match "t1_fund" when completing "t1_func".  */
+  {
+    static const char str[] = "t1_func";
+    CHECK_MATCH (str, symbol_name_match_type::FULL, true,
+		 EXPECT ("t1_func", "t1_func1"));
+  }
+
+  /* Check that completion mode works at each prefix of the expected
+     symbol name.  */
+  {
+    static const char str[] = "function(int)";
+    size_t len = strlen (str);
+    std::string lookup;
+
+    for (size_t i = 1; i < len; i++)
+      {
+	lookup.assign (str, i);
+	CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
+		     EXPECT ("function"));
+      }
+  }
+
+  /* While "w" is a prefix of both components, the match function
+     should still only be called once.  */
+  {
+    CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
+		 EXPECT ("w1::w2"));
+    CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
+		 EXPECT ("w1::w2"));
+  }
+
+  /* Same, with a "complicated" symbol.  */
+  {
+    static const char str[] = Z_SYM_NAME;
+    size_t len = strlen (str);
+    std::string lookup;
+
+    for (size_t i = 1; i < len; i++)
+      {
+	lookup.assign (str, i);
+	CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
+		     EXPECT (Z_SYM_NAME));
+      }
+  }
+
+  /* In FULL mode, an incomplete symbol doesn't match.  */
+  {
+    CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
+		 {});
+  }
+
+  /* A complete symbol with parameters matches any overload, since the
+     index has no overload info.  */
+  {
+    CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
+		 EXPECT ("std::zfunction", "std::zfunction2"));
+    CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
+		 EXPECT ("std::zfunction", "std::zfunction2"));
+    CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
+		 EXPECT ("std::zfunction", "std::zfunction2"));
+  }
+
+  /* Check that whitespace is ignored appropriately.  A symbol with a
+     template argument list. */
+  {
+    static const char expected[] = "ns::foo<int>";
+    CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
+		 EXPECT (expected));
+    CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
+		 EXPECT (expected));
+  }
+
+  /* Check that whitespace is ignored appropriately.  A symbol with a
+     template argument list that includes a pointer.  */
+  {
+    static const char expected[] = "ns::foo<char*>";
+    /* Try both completion and non-completion modes.  */
+    static const bool completion_mode[2] = {false, true};
+    for (size_t i = 0; i < 2; i++)
+      {
+	CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
+		     completion_mode[i], EXPECT (expected));
+	CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
+		     completion_mode[i], EXPECT (expected));
+
+	CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
+		     completion_mode[i], EXPECT (expected));
+	CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
+		     completion_mode[i], EXPECT (expected));
+      }
+  }
+
+  {
+    /* Check method qualifiers are ignored.  */
+    static const char expected[] = "ns::foo<char*>";
+    CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
+		 symbol_name_match_type::FULL, true, EXPECT (expected));
+    CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
+		 symbol_name_match_type::FULL, true, EXPECT (expected));
+    CHECK_MATCH ("foo < char * >  ( int ) const",
+		 symbol_name_match_type::WILD, true, EXPECT (expected));
+    CHECK_MATCH ("foo < char * >  ( int ) &&",
+		 symbol_name_match_type::WILD, true, EXPECT (expected));
+  }
+
+  /* Test lookup names that don't match anything.  */
+  {
+    CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
+		 {});
+
+    CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
+		 {});
+  }
+
+  /* Some wild matching tests, exercising "(anonymous namespace)",
+     which should not be confused with a parameter list.  */
+  {
+    static const char *syms[] = {
+      "A::B::C",
+      "B::C",
+      "C",
+      "A :: B :: C ( int )",
+      "B :: C ( int )",
+      "C ( int )",
+    };
+
+    for (const char *s : syms)
+      {
+	CHECK_MATCH (s, symbol_name_match_type::WILD, false,
+		     EXPECT ("(anonymous namespace)::A::B::C"));
+      }
+  }
+
+  {
+    static const char expected[] = "ns2::tmpl<int>::foo2";
+    CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
+		 EXPECT (expected));
+    CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
+		 EXPECT (expected));
+  }
+
+  SELF_CHECK (!any_mismatch);
+
+#undef EXPECT
+#undef CHECK_MATCH
+}
+
+static void
+run_test ()
+{
+  test_mapped_index_find_name_component_bounds ();
+  test_dw2_expand_symtabs_matching_symbol ();
+}
+
+}} // namespace selftests::dw2_expand_symtabs_matching
+
+#endif /* GDB_SELF_TEST */
+
+/* If FILE_MATCHER is NULL or if PER_CU has
+   dwarf2_per_cu_quick_data::MARK set (see
+   dw_expand_symtabs_matching_file_matcher), expand the CU and call
+   EXPANSION_NOTIFY on it.  */
+
+static void
+dw2_expand_symtabs_matching_one
+  (dwarf2_per_cu_data *per_cu,
+   dwarf2_per_objfile *per_objfile,
+   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
+   gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
+{
+  if (file_matcher == NULL || per_cu->v.quick->mark)
+    {
+      bool symtab_was_null = !per_objfile->symtab_set_p (per_cu);
+
+      compunit_symtab *symtab
+	= dw2_instantiate_symtab (per_cu, per_objfile, false);
+      gdb_assert (symtab != nullptr);
+
+      if (expansion_notify != NULL && symtab_was_null)
+	expansion_notify (symtab);
+    }
+}
+
+/* Helper for dw2_expand_matching symtabs.  Called on each symbol
+   matched, to expand corresponding CUs that were marked.  IDX is the
+   index of the symbol name that matched.  */
+
+static void
+dw2_expand_marked_cus
+  (dwarf2_per_objfile *per_objfile, offset_type idx,
+   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
+   gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
+   search_domain kind)
+{
+  offset_type *vec, vec_len, vec_idx;
+  bool global_seen = false;
+  mapped_index &index = *per_objfile->per_bfd->index_table;
+
+  vec = (offset_type *) (index.constant_pool
+			 + MAYBE_SWAP (index.symbol_table[idx].vec));
+  vec_len = MAYBE_SWAP (vec[0]);
+  for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
+    {
+      offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
+      /* This value is only valid for index versions >= 7.  */
+      int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
+      gdb_index_symbol_kind symbol_kind =
+	GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
+      int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
+      /* Only check the symbol attributes if they're present.
+	 Indices prior to version 7 don't record them,
+	 and indices >= 7 may elide them for certain symbols
+	 (gold does this).  */
+      int attrs_valid =
+	(index.version >= 7
+	 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
+
+      /* Work around gold/15646.  */
+      if (attrs_valid
+	  && !is_static
+	  && symbol_kind == GDB_INDEX_SYMBOL_KIND_TYPE)
+	{
+	  if (global_seen)
+	    continue;
+
+	  global_seen = true;
+	}
+
+      /* Only check the symbol's kind if it has one.  */
+      if (attrs_valid)
+	{
+	  switch (kind)
+	    {
+	    case VARIABLES_DOMAIN:
+	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
+		continue;
+	      break;
+	    case FUNCTIONS_DOMAIN:
+	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
+		continue;
+	      break;
+	    case TYPES_DOMAIN:
+	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
+		continue;
+	      break;
+	    case MODULES_DOMAIN:
+	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
+		continue;
+	      break;
+	    default:
+	      break;
+	    }
+	}
+
+      /* Don't crash on bad data.  */
+      if (cu_index >= (per_objfile->per_bfd->all_comp_units.size ()
+		       + per_objfile->per_bfd->all_type_units.size ()))
+	{
+	  complaint (_(".gdb_index entry has bad CU index"
+		       " [in module %s]"), objfile_name (per_objfile->objfile));
+	  continue;
+	}
+
+      dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cutu (cu_index);
+      dw2_expand_symtabs_matching_one (per_cu, per_objfile, file_matcher,
+				       expansion_notify);
+    }
+}
+
+/* If FILE_MATCHER is non-NULL, set all the
+   dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
+   that match FILE_MATCHER.  */
+
+static void
+dw_expand_symtabs_matching_file_matcher
+  (dwarf2_per_objfile *per_objfile,
+   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
+{
+  if (file_matcher == NULL)
+    return;
+
+  htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
+					    htab_eq_pointer,
+					    NULL, xcalloc, xfree));
+  htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
+						htab_eq_pointer,
+						NULL, xcalloc, xfree));
+
+  /* The rule is CUs specify all the files, including those used by
+     any TU, so there's no need to scan TUs here.  */
+
+  for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+    {
+      QUIT;
+
+      per_cu->v.quick->mark = 0;
+
+      /* We only need to look at symtabs not already expanded.  */
+      if (per_objfile->symtab_set_p (per_cu))
+	continue;
+
+      quick_file_names *file_data = dw2_get_file_names (per_cu, per_objfile);
+      if (file_data == NULL)
+	continue;
+
+      if (htab_find (visited_not_found.get (), file_data) != NULL)
+	continue;
+      else if (htab_find (visited_found.get (), file_data) != NULL)
+	{
+	  per_cu->v.quick->mark = 1;
+	  continue;
+	}
+
+      for (int j = 0; j < file_data->num_file_names; ++j)
+	{
+	  const char *this_real_name;
+
+	  if (file_matcher (file_data->file_names[j], false))
+	    {
+	      per_cu->v.quick->mark = 1;
+	      break;
+	    }
+
+	  /* Before we invoke realpath, which can get expensive when many
+	     files are involved, do a quick comparison of the basenames.  */
+	  if (!basenames_may_differ
+	      && !file_matcher (lbasename (file_data->file_names[j]),
+				true))
+	    continue;
+
+	  this_real_name = dw2_get_real_path (per_objfile, file_data, j);
+	  if (file_matcher (this_real_name, false))
+	    {
+	      per_cu->v.quick->mark = 1;
+	      break;
+	    }
+	}
+
+      void **slot = htab_find_slot (per_cu->v.quick->mark
+				    ? visited_found.get ()
+				    : visited_not_found.get (),
+				    file_data, INSERT);
+      *slot = file_data;
+    }
+}
+
+static void
+dw2_expand_symtabs_matching
+  (struct objfile *objfile,
+   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
+   const lookup_name_info *lookup_name,
+   gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
+   gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
+   enum search_domain kind)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  /* index_table is NULL if OBJF_READNOW.  */
+  if (!per_objfile->per_bfd->index_table)
+    return;
+
+  dw_expand_symtabs_matching_file_matcher (per_objfile, file_matcher);
+
+  if (symbol_matcher == NULL && lookup_name == NULL)
+    {
+      for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+	{
+	  QUIT;
+
+	  dw2_expand_symtabs_matching_one (per_cu, per_objfile,
+					   file_matcher, expansion_notify);
+	}
+      return;
+    }
+
+  mapped_index &index = *per_objfile->per_bfd->index_table;
+
+  dw2_expand_symtabs_matching_symbol (index, *lookup_name,
+				      symbol_matcher,
+				      kind, [&] (offset_type idx)
+    {
+      dw2_expand_marked_cus (per_objfile, idx, file_matcher, expansion_notify,
+			     kind);
+      return true;
+    }, per_objfile);
+}
+
+/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
+   symtab.  */
+
+static struct compunit_symtab *
+recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
+					  CORE_ADDR pc)
+{
+  int i;
+
+  if (COMPUNIT_BLOCKVECTOR (cust) != NULL
+      && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
+    return cust;
+
+  if (cust->includes == NULL)
+    return NULL;
+
+  for (i = 0; cust->includes[i]; ++i)
+    {
+      struct compunit_symtab *s = cust->includes[i];
+
+      s = recursively_find_pc_sect_compunit_symtab (s, pc);
+      if (s != NULL)
+	return s;
+    }
+
+  return NULL;
+}
+
+static struct compunit_symtab *
+dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
+				  struct bound_minimal_symbol msymbol,
+				  CORE_ADDR pc,
+				  struct obj_section *section,
+				  int warn_if_readin)
+{
+  struct dwarf2_per_cu_data *data;
+  struct compunit_symtab *result;
+
+  if (!objfile->partial_symtabs->psymtabs_addrmap)
+    return NULL;
+
+  CORE_ADDR baseaddr = objfile->text_section_offset ();
+  data = (struct dwarf2_per_cu_data *) addrmap_find
+    (objfile->partial_symtabs->psymtabs_addrmap, pc - baseaddr);
+  if (!data)
+    return NULL;
+
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  if (warn_if_readin && per_objfile->symtab_set_p (data))
+    warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
+	     paddress (objfile->arch (), pc));
+
+  result = recursively_find_pc_sect_compunit_symtab
+    (dw2_instantiate_symtab (data, per_objfile, false), pc);
+
+  gdb_assert (result != NULL);
+  return result;
+}
+
+static void
+dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
+			  void *data, int need_fullname)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  if (!per_objfile->per_bfd->filenames_cache)
+    {
+      per_objfile->per_bfd->filenames_cache.emplace ();
+
+      htab_up visited (htab_create_alloc (10,
+					  htab_hash_pointer, htab_eq_pointer,
+					  NULL, xcalloc, xfree));
+
+      /* The rule is CUs specify all the files, including those used
+	 by any TU, so there's no need to scan TUs here.  We can
+	 ignore file names coming from already-expanded CUs.  */
+
+      for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+	{
+	  if (per_objfile->symtab_set_p (per_cu))
+	    {
+	      void **slot = htab_find_slot (visited.get (),
+					    per_cu->v.quick->file_names,
+					    INSERT);
+
+	      *slot = per_cu->v.quick->file_names;
+	    }
+	}
+
+      for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+	{
+	  /* We only need to look at symtabs not already expanded.  */
+	  if (per_objfile->symtab_set_p (per_cu))
+	    continue;
+
+	  quick_file_names *file_data
+	    = dw2_get_file_names (per_cu, per_objfile);
+	  if (file_data == NULL)
+	    continue;
+
+	  void **slot = htab_find_slot (visited.get (), file_data, INSERT);
+	  if (*slot)
+	    {
+	      /* Already visited.  */
+	      continue;
+	    }
+	  *slot = file_data;
+
+	  for (int j = 0; j < file_data->num_file_names; ++j)
+	    {
+	      const char *filename = file_data->file_names[j];
+	      per_objfile->per_bfd->filenames_cache->seen (filename);
+	    }
+	}
+    }
+
+  per_objfile->per_bfd->filenames_cache->traverse ([&] (const char *filename)
+    {
+      gdb::unique_xmalloc_ptr<char> this_real_name;
+
+      if (need_fullname)
+	this_real_name = gdb_realpath (filename);
+      (*fun) (filename, this_real_name.get (), data);
+    });
+}
+
+static int
+dw2_has_symbols (struct objfile *objfile)
+{
+  return 1;
+}
+
+const struct quick_symbol_functions dwarf2_gdb_index_functions =
+{
+  dw2_has_symbols,
+  dw2_find_last_source_symtab,
+  dw2_forget_cached_source_info,
+  dw2_map_symtabs_matching_filename,
+  dw2_lookup_symbol,
+  NULL,
+  dw2_print_stats,
+  dw2_dump,
+  dw2_expand_symtabs_for_function,
+  dw2_expand_all_symtabs,
+  dw2_expand_symtabs_with_fullname,
+  dw2_map_matching_symbols,
+  dw2_expand_symtabs_matching,
+  dw2_find_pc_sect_compunit_symtab,
+  NULL,
+  dw2_map_symbol_filenames
+};
+
+/* DWARF-5 debug_names reader.  */
+
+/* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
+static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
+
+/* A helper function that reads the .debug_names section in SECTION
+   and fills in MAP.  FILENAME is the name of the file containing the
+   section; it is used for error reporting.
+
+   Returns true if all went well, false otherwise.  */
+
+static bool
+read_debug_names_from_section (struct objfile *objfile,
+			       const char *filename,
+			       struct dwarf2_section_info *section,
+			       mapped_debug_names &map)
+{
+  if (section->empty ())
+    return false;
+
+  /* Older elfutils strip versions could keep the section in the main
+     executable while splitting it for the separate debug info file.  */
+  if ((section->get_flags () & SEC_HAS_CONTENTS) == 0)
+    return false;
+
+  section->read (objfile);
+
+  map.dwarf5_byte_order = gdbarch_byte_order (objfile->arch ());
+
+  const gdb_byte *addr = section->buffer;
+
+  bfd *const abfd = section->get_bfd_owner ();
+
+  unsigned int bytes_read;
+  LONGEST length = read_initial_length (abfd, addr, &bytes_read);
+  addr += bytes_read;
+
+  map.dwarf5_is_dwarf64 = bytes_read != 4;
+  map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
+  if (bytes_read + length != section->size)
+    {
+      /* There may be multiple per-CU indices.  */
+      warning (_("Section .debug_names in %s length %s does not match "
+		 "section length %s, ignoring .debug_names."),
+	       filename, plongest (bytes_read + length),
+	       pulongest (section->size));
+      return false;
+    }
+
+  /* The version number.  */
+  uint16_t version = read_2_bytes (abfd, addr);
+  addr += 2;
+  if (version != 5)
+    {
+      warning (_("Section .debug_names in %s has unsupported version %d, "
+		 "ignoring .debug_names."),
+	       filename, version);
+      return false;
+    }
+
+  /* Padding.  */
+  uint16_t padding = read_2_bytes (abfd, addr);
+  addr += 2;
+  if (padding != 0)
+    {
+      warning (_("Section .debug_names in %s has unsupported padding %d, "
+		 "ignoring .debug_names."),
+	       filename, padding);
+      return false;
+    }
+
+  /* comp_unit_count - The number of CUs in the CU list.  */
+  map.cu_count = read_4_bytes (abfd, addr);
+  addr += 4;
+
+  /* local_type_unit_count - The number of TUs in the local TU
+     list.  */
+  map.tu_count = read_4_bytes (abfd, addr);
+  addr += 4;
+
+  /* foreign_type_unit_count - The number of TUs in the foreign TU
+     list.  */
+  uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
+  addr += 4;
+  if (foreign_tu_count != 0)
+    {
+      warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
+		 "ignoring .debug_names."),
+	       filename, static_cast<unsigned long> (foreign_tu_count));
+      return false;
+    }
+
+  /* bucket_count - The number of hash buckets in the hash lookup
+     table.  */
+  map.bucket_count = read_4_bytes (abfd, addr);
+  addr += 4;
+
+  /* name_count - The number of unique names in the index.  */
+  map.name_count = read_4_bytes (abfd, addr);
+  addr += 4;
+
+  /* abbrev_table_size - The size in bytes of the abbreviations
+     table.  */
+  uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
+  addr += 4;
+
+  /* augmentation_string_size - The size in bytes of the augmentation
+     string.  This value is rounded up to a multiple of 4.  */
+  uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
+  addr += 4;
+  map.augmentation_is_gdb = ((augmentation_string_size
+			      == sizeof (dwarf5_augmentation))
+			     && memcmp (addr, dwarf5_augmentation,
+					sizeof (dwarf5_augmentation)) == 0);
+  augmentation_string_size += (-augmentation_string_size) & 3;
+  addr += augmentation_string_size;
+
+  /* List of CUs */
+  map.cu_table_reordered = addr;
+  addr += map.cu_count * map.offset_size;
+
+  /* List of Local TUs */
+  map.tu_table_reordered = addr;
+  addr += map.tu_count * map.offset_size;
+
+  /* Hash Lookup Table */
+  map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
+  addr += map.bucket_count * 4;
+  map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
+  addr += map.name_count * 4;
+
+  /* Name Table */
+  map.name_table_string_offs_reordered = addr;
+  addr += map.name_count * map.offset_size;
+  map.name_table_entry_offs_reordered = addr;
+  addr += map.name_count * map.offset_size;
+
+  const gdb_byte *abbrev_table_start = addr;
+  for (;;)
+    {
+      const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
+      addr += bytes_read;
+      if (index_num == 0)
+	break;
+
+      const auto insertpair
+	= map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
+      if (!insertpair.second)
+	{
+	  warning (_("Section .debug_names in %s has duplicate index %s, "
+		     "ignoring .debug_names."),
+		   filename, pulongest (index_num));
+	  return false;
+	}
+      mapped_debug_names::index_val &indexval = insertpair.first->second;
+      indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
+      addr += bytes_read;
+
+      for (;;)
+	{
+	  mapped_debug_names::index_val::attr attr;
+	  attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
+	  addr += bytes_read;
+	  attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
+	  addr += bytes_read;
+	  if (attr.form == DW_FORM_implicit_const)
+	    {
+	      attr.implicit_const = read_signed_leb128 (abfd, addr,
+							&bytes_read);
+	      addr += bytes_read;
+	    }
+	  if (attr.dw_idx == 0 && attr.form == 0)
+	    break;
+	  indexval.attr_vec.push_back (std::move (attr));
+	}
+    }
+  if (addr != abbrev_table_start + abbrev_table_size)
+    {
+      warning (_("Section .debug_names in %s has abbreviation_table "
+		 "of size %s vs. written as %u, ignoring .debug_names."),
+	       filename, plongest (addr - abbrev_table_start),
+	       abbrev_table_size);
+      return false;
+    }
+  map.entry_pool = addr;
+
+  return true;
+}
+
+/* A helper for create_cus_from_debug_names that handles the MAP's CU
+   list.  */
+
+static void
+create_cus_from_debug_names_list (dwarf2_per_bfd *per_bfd,
+				  const mapped_debug_names &map,
+				  dwarf2_section_info &section,
+				  bool is_dwz)
+{
+  if (!map.augmentation_is_gdb)
+    {
+    for (uint32_t i = 0; i < map.cu_count; ++i)
+      {
+	sect_offset sect_off
+	  = (sect_offset) (extract_unsigned_integer
+			   (map.cu_table_reordered + i * map.offset_size,
+			    map.offset_size,
+			    map.dwarf5_byte_order));
+	/* We don't know the length of the CU, because the CU list in a
+	   .debug_names index can be incomplete, so we can't use the start of
+	   the next CU as end of this CU.  We create the CUs here with length 0,
+	   and in cutu_reader::cutu_reader we'll fill in the actual length.  */
+	dwarf2_per_cu_data *per_cu
+	  = create_cu_from_index_list (per_bfd, &section, is_dwz, sect_off, 0);
+	per_bfd->all_comp_units.push_back (per_cu);
+      }
+    }
+
+  sect_offset sect_off_prev;
+  for (uint32_t i = 0; i <= map.cu_count; ++i)
+    {
+      sect_offset sect_off_next;
+      if (i < map.cu_count)
+	{
+	  sect_off_next
+	    = (sect_offset) (extract_unsigned_integer
+			     (map.cu_table_reordered + i * map.offset_size,
+			      map.offset_size,
+			      map.dwarf5_byte_order));
+	}
+      else
+	sect_off_next = (sect_offset) section.size;
+      if (i >= 1)
+	{
+	  const ULONGEST length = sect_off_next - sect_off_prev;
+	  dwarf2_per_cu_data *per_cu
+	    = create_cu_from_index_list (per_bfd, &section, is_dwz,
+					 sect_off_prev, length);
+	  per_bfd->all_comp_units.push_back (per_cu);
+	}
+      sect_off_prev = sect_off_next;
+    }
+}
+
+/* Read the CU list from the mapped index, and use it to create all
+   the CU objects for this dwarf2_per_objfile.  */
+
+static void
+create_cus_from_debug_names (dwarf2_per_bfd *per_bfd,
+			     const mapped_debug_names &map,
+			     const mapped_debug_names &dwz_map)
+{
+  gdb_assert (per_bfd->all_comp_units.empty ());
+  per_bfd->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
+
+  create_cus_from_debug_names_list (per_bfd, map, per_bfd->info,
+				    false /* is_dwz */);
+
+  if (dwz_map.cu_count == 0)
+    return;
+
+  dwz_file *dwz = dwarf2_get_dwz_file (per_bfd);
+  create_cus_from_debug_names_list (per_bfd, dwz_map, dwz->info,
+				    true /* is_dwz */);
+}
+
+/* Read .debug_names.  If everything went ok, initialize the "quick"
+   elements of all the CUs and return true.  Otherwise, return false.  */
+
+static bool
+dwarf2_read_debug_names (dwarf2_per_objfile *per_objfile)
+{
+  std::unique_ptr<mapped_debug_names> map (new mapped_debug_names);
+  mapped_debug_names dwz_map;
+  struct objfile *objfile = per_objfile->objfile;
+  dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
+
+  if (!read_debug_names_from_section (objfile, objfile_name (objfile),
+				      &per_objfile->per_bfd->debug_names, *map))
+    return false;
+
+  /* Don't use the index if it's empty.  */
+  if (map->name_count == 0)
+    return false;
+
+  /* If there is a .dwz file, read it so we can get its CU list as
+     well.  */
+  dwz_file *dwz = dwarf2_get_dwz_file (per_bfd);
+  if (dwz != NULL)
+    {
+      if (!read_debug_names_from_section (objfile,
+					  bfd_get_filename (dwz->dwz_bfd.get ()),
+					  &dwz->debug_names, dwz_map))
+	{
+	  warning (_("could not read '.debug_names' section from %s; skipping"),
+		   bfd_get_filename (dwz->dwz_bfd.get ()));
+	  return false;
+	}
+    }
+
+  create_cus_from_debug_names (per_bfd, *map, dwz_map);
+
+  if (map->tu_count != 0)
+    {
+      /* We can only handle a single .debug_types when we have an
+	 index.  */
+      if (per_bfd->types.size () != 1)
+	return false;
+
+      dwarf2_section_info *section = &per_bfd->types[0];
+
+      create_signatured_type_table_from_debug_names
+	(per_objfile, *map, section, &per_bfd->abbrev);
+    }
+
+  create_addrmap_from_aranges (per_objfile, &per_bfd->debug_aranges);
+
+  per_bfd->debug_names_table = std::move (map);
+  per_bfd->using_index = 1;
+  per_bfd->quick_file_names_table =
+    create_quick_file_names_table (per_objfile->per_bfd->all_comp_units.size ());
+
+  /* Save partial symtabs in the per_bfd object, for the benefit of subsequent
+     objfiles using the same BFD.  */
+  gdb_assert (per_bfd->partial_symtabs == nullptr);
+  per_bfd->partial_symtabs = objfile->partial_symtabs;
+
+  return true;
+}
+
+/* Type used to manage iterating over all CUs looking for a symbol for
+   .debug_names.  */
+
+class dw2_debug_names_iterator
+{
+public:
+  dw2_debug_names_iterator (const mapped_debug_names &map,
+			    gdb::optional<block_enum> block_index,
+			    domain_enum domain,
+			    const char *name, dwarf2_per_objfile *per_objfile)
+    : m_map (map), m_block_index (block_index), m_domain (domain),
+      m_addr (find_vec_in_debug_names (map, name, per_objfile)),
+      m_per_objfile (per_objfile)
+  {}
+
+  dw2_debug_names_iterator (const mapped_debug_names &map,
+			    search_domain search, uint32_t namei, dwarf2_per_objfile *per_objfile)
+    : m_map (map),
+      m_search (search),
+      m_addr (find_vec_in_debug_names (map, namei, per_objfile)),
+      m_per_objfile (per_objfile)
+  {}
+
+  dw2_debug_names_iterator (const mapped_debug_names &map,
+			    block_enum block_index, domain_enum domain,
+			    uint32_t namei, dwarf2_per_objfile *per_objfile)
+    : m_map (map), m_block_index (block_index), m_domain (domain),
+      m_addr (find_vec_in_debug_names (map, namei, per_objfile)),
+      m_per_objfile (per_objfile)
+  {}
+
+  /* Return the next matching CU or NULL if there are no more.  */
+  dwarf2_per_cu_data *next ();
+
+private:
+  static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
+						  const char *name,
+						  dwarf2_per_objfile *per_objfile);
+  static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
+						  uint32_t namei,
+						  dwarf2_per_objfile *per_objfile);
+
+  /* The internalized form of .debug_names.  */
+  const mapped_debug_names &m_map;
+
+  /* If set, only look for symbols that match that block.  Valid values are
+     GLOBAL_BLOCK and STATIC_BLOCK.  */
+  const gdb::optional<block_enum> m_block_index;
+
+  /* The kind of symbol we're looking for.  */
+  const domain_enum m_domain = UNDEF_DOMAIN;
+  const search_domain m_search = ALL_DOMAIN;
+
+  /* The list of CUs from the index entry of the symbol, or NULL if
+     not found.  */
+  const gdb_byte *m_addr;
+
+  dwarf2_per_objfile *m_per_objfile;
+};
+
+const char *
+mapped_debug_names::namei_to_name
+  (uint32_t namei, dwarf2_per_objfile *per_objfile) const
+{
+  const ULONGEST namei_string_offs
+    = extract_unsigned_integer ((name_table_string_offs_reordered
+				 + namei * offset_size),
+				offset_size,
+				dwarf5_byte_order);
+  return read_indirect_string_at_offset (per_objfile, namei_string_offs);
+}
+
+/* Find a slot in .debug_names for the object named NAME.  If NAME is
+   found, return pointer to its pool data.  If NAME cannot be found,
+   return NULL.  */
+
+const gdb_byte *
+dw2_debug_names_iterator::find_vec_in_debug_names
+  (const mapped_debug_names &map, const char *name,
+   dwarf2_per_objfile *per_objfile)
+{
+  int (*cmp) (const char *, const char *);
+
+  gdb::unique_xmalloc_ptr<char> without_params;
+  if (current_language->la_language == language_cplus
+      || current_language->la_language == language_fortran
+      || current_language->la_language == language_d)
+    {
+      /* NAME is already canonical.  Drop any qualifiers as
+	 .debug_names does not contain any.  */
+
+      if (strchr (name, '(') != NULL)
+	{
+	  without_params = cp_remove_params (name);
+	  if (without_params != NULL)
+	    name = without_params.get ();
+	}
+    }
+
+  cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
+
+  const uint32_t full_hash = dwarf5_djb_hash (name);
+  uint32_t namei
+    = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
+				(map.bucket_table_reordered
+				 + (full_hash % map.bucket_count)), 4,
+				map.dwarf5_byte_order);
+  if (namei == 0)
+    return NULL;
+  --namei;
+  if (namei >= map.name_count)
+    {
+      complaint (_("Wrong .debug_names with name index %u but name_count=%u "
+		   "[in module %s]"),
+		 namei, map.name_count,
+		 objfile_name (per_objfile->objfile));
+      return NULL;
+    }
+
+  for (;;)
+    {
+      const uint32_t namei_full_hash
+	= extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
+				    (map.hash_table_reordered + namei), 4,
+				    map.dwarf5_byte_order);
+      if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
+	return NULL;
+
+      if (full_hash == namei_full_hash)
+	{
+	  const char *const namei_string = map.namei_to_name (namei, per_objfile);
+
+#if 0 /* An expensive sanity check.  */
+	  if (namei_full_hash != dwarf5_djb_hash (namei_string))
+	    {
+	      complaint (_("Wrong .debug_names hash for string at index %u "
+			   "[in module %s]"),
+			 namei, objfile_name (dwarf2_per_objfile->objfile));
+	      return NULL;
+	    }
+#endif
+
+	  if (cmp (namei_string, name) == 0)
+	    {
+	      const ULONGEST namei_entry_offs
+		= extract_unsigned_integer ((map.name_table_entry_offs_reordered
+					     + namei * map.offset_size),
+					    map.offset_size, map.dwarf5_byte_order);
+	      return map.entry_pool + namei_entry_offs;
+	    }
+	}
+
+      ++namei;
+      if (namei >= map.name_count)
+	return NULL;
+    }
+}
+
+const gdb_byte *
+dw2_debug_names_iterator::find_vec_in_debug_names
+  (const mapped_debug_names &map, uint32_t namei, dwarf2_per_objfile *per_objfile)
+{
+  if (namei >= map.name_count)
+    {
+      complaint (_("Wrong .debug_names with name index %u but name_count=%u "
+		   "[in module %s]"),
+		 namei, map.name_count,
+		 objfile_name (per_objfile->objfile));
+      return NULL;
+    }
+
+  const ULONGEST namei_entry_offs
+    = extract_unsigned_integer ((map.name_table_entry_offs_reordered
+				 + namei * map.offset_size),
+				map.offset_size, map.dwarf5_byte_order);
+  return map.entry_pool + namei_entry_offs;
+}
+
+/* See dw2_debug_names_iterator.  */
+
+dwarf2_per_cu_data *
+dw2_debug_names_iterator::next ()
+{
+  if (m_addr == NULL)
+    return NULL;
+
+  dwarf2_per_bfd *per_bfd = m_per_objfile->per_bfd;
+  struct objfile *objfile = m_per_objfile->objfile;
+  bfd *const abfd = objfile->obfd;
+
+ again:
+
+  unsigned int bytes_read;
+  const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
+  m_addr += bytes_read;
+  if (abbrev == 0)
+    return NULL;
+
+  const auto indexval_it = m_map.abbrev_map.find (abbrev);
+  if (indexval_it == m_map.abbrev_map.cend ())
+    {
+      complaint (_("Wrong .debug_names undefined abbrev code %s "
+		   "[in module %s]"),
+		 pulongest (abbrev), objfile_name (objfile));
+      return NULL;
+    }
+  const mapped_debug_names::index_val &indexval = indexval_it->second;
+  enum class symbol_linkage {
+    unknown,
+    static_,
+    extern_,
+  } symbol_linkage_ = symbol_linkage::unknown;
+  dwarf2_per_cu_data *per_cu = NULL;
+  for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
+    {
+      ULONGEST ull;
+      switch (attr.form)
+	{
+	case DW_FORM_implicit_const:
+	  ull = attr.implicit_const;
+	  break;
+	case DW_FORM_flag_present:
+	  ull = 1;
+	  break;
+	case DW_FORM_udata:
+	  ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
+	  m_addr += bytes_read;
+	  break;
+	case DW_FORM_ref4:
+	  ull = read_4_bytes (abfd, m_addr);
+	  m_addr += 4;
+	  break;
+	case DW_FORM_ref8:
+	  ull = read_8_bytes (abfd, m_addr);
+	  m_addr += 8;
+	  break;
+	case DW_FORM_ref_sig8:
+	  ull = read_8_bytes (abfd, m_addr);
+	  m_addr += 8;
+	  break;
+	default:
+	  complaint (_("Unsupported .debug_names form %s [in module %s]"),
+		     dwarf_form_name (attr.form),
+		     objfile_name (objfile));
+	  return NULL;
+	}
+      switch (attr.dw_idx)
+	{
+	case DW_IDX_compile_unit:
+	  /* Don't crash on bad data.  */
+	  if (ull >= m_per_objfile->per_bfd->all_comp_units.size ())
+	    {
+	      complaint (_(".debug_names entry has bad CU index %s"
+			   " [in module %s]"),
+			 pulongest (ull),
+			 objfile_name (objfile));
+	      continue;
+	    }
+	  per_cu = per_bfd->get_cutu (ull);
+	  break;
+	case DW_IDX_type_unit:
+	  /* Don't crash on bad data.  */
+	  if (ull >= per_bfd->all_type_units.size ())
+	    {
+	      complaint (_(".debug_names entry has bad TU index %s"
+			   " [in module %s]"),
+			 pulongest (ull),
+			 objfile_name (objfile));
+	      continue;
+	    }
+	  per_cu = &per_bfd->get_tu (ull)->per_cu;
+	  break;
+	case DW_IDX_die_offset:
+	  /* In a per-CU index (as opposed to a per-module index), index
+	     entries without CU attribute implicitly refer to the single CU.  */
+	  if (per_cu == NULL)
+	    per_cu = per_bfd->get_cu (0);
+	  break;
+	case DW_IDX_GNU_internal:
+	  if (!m_map.augmentation_is_gdb)
+	    break;
+	  symbol_linkage_ = symbol_linkage::static_;
+	  break;
+	case DW_IDX_GNU_external:
+	  if (!m_map.augmentation_is_gdb)
+	    break;
+	  symbol_linkage_ = symbol_linkage::extern_;
+	  break;
+	}
+    }
+
+  /* Skip if already read in.  */
+  if (m_per_objfile->symtab_set_p (per_cu))
+    goto again;
+
+  /* Check static vs global.  */
+  if (symbol_linkage_ != symbol_linkage::unknown && m_block_index.has_value ())
+    {
+	const bool want_static = *m_block_index == STATIC_BLOCK;
+	const bool symbol_is_static =
+	  symbol_linkage_ == symbol_linkage::static_;
+	if (want_static != symbol_is_static)
+	  goto again;
+    }
+
+  /* Match dw2_symtab_iter_next, symbol_kind
+     and debug_names::psymbol_tag.  */
+  switch (m_domain)
+    {
+    case VAR_DOMAIN:
+      switch (indexval.dwarf_tag)
+	{
+	case DW_TAG_variable:
+	case DW_TAG_subprogram:
+	/* Some types are also in VAR_DOMAIN.  */
+	case DW_TAG_typedef:
+	case DW_TAG_structure_type:
+	  break;
+	default:
+	  goto again;
+	}
+      break;
+    case STRUCT_DOMAIN:
+      switch (indexval.dwarf_tag)
+	{
+	case DW_TAG_typedef:
+	case DW_TAG_structure_type:
+	  break;
+	default:
+	  goto again;
+	}
+      break;
+    case LABEL_DOMAIN:
+      switch (indexval.dwarf_tag)
+	{
+	case 0:
+	case DW_TAG_variable:
+	  break;
+	default:
+	  goto again;
+	}
+      break;
+    case MODULE_DOMAIN:
+      switch (indexval.dwarf_tag)
+	{
+	case DW_TAG_module:
+	  break;
+	default:
+	  goto again;
+	}
+      break;
+    default:
+      break;
+    }
+
+  /* Match dw2_expand_symtabs_matching, symbol_kind and
+     debug_names::psymbol_tag.  */
+  switch (m_search)
+    {
+    case VARIABLES_DOMAIN:
+      switch (indexval.dwarf_tag)
+	{
+	case DW_TAG_variable:
+	  break;
+	default:
+	  goto again;
+	}
+      break;
+    case FUNCTIONS_DOMAIN:
+      switch (indexval.dwarf_tag)
+	{
+	case DW_TAG_subprogram:
+	  break;
+	default:
+	  goto again;
+	}
+      break;
+    case TYPES_DOMAIN:
+      switch (indexval.dwarf_tag)
+	{
+	case DW_TAG_typedef:
+	case DW_TAG_structure_type:
+	  break;
+	default:
+	  goto again;
+	}
+      break;
+    case MODULES_DOMAIN:
+      switch (indexval.dwarf_tag)
+	{
+	case DW_TAG_module:
+	  break;
+	default:
+	  goto again;
+	}
+    default:
+      break;
+    }
+
+  return per_cu;
+}
+
+static struct compunit_symtab *
+dw2_debug_names_lookup_symbol (struct objfile *objfile, block_enum block_index,
+			       const char *name, domain_enum domain)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  const auto &mapp = per_objfile->per_bfd->debug_names_table;
+  if (!mapp)
+    {
+      /* index is NULL if OBJF_READNOW.  */
+      return NULL;
+    }
+  const auto &map = *mapp;
+
+  dw2_debug_names_iterator iter (map, block_index, domain, name, per_objfile);
+
+  struct compunit_symtab *stab_best = NULL;
+  struct dwarf2_per_cu_data *per_cu;
+  while ((per_cu = iter.next ()) != NULL)
+    {
+      struct symbol *sym, *with_opaque = NULL;
+      compunit_symtab *stab
+	= dw2_instantiate_symtab (per_cu, per_objfile, false);
+      const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
+      const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
+
+      sym = block_find_symbol (block, name, domain,
+			       block_find_non_opaque_type_preferred,
+			       &with_opaque);
+
+      /* Some caution must be observed with overloaded functions and
+	 methods, since the index will not contain any overload
+	 information (but NAME might contain it).  */
+
+      if (sym != NULL
+	  && strcmp_iw (sym->search_name (), name) == 0)
+	return stab;
+      if (with_opaque != NULL
+	  && strcmp_iw (with_opaque->search_name (), name) == 0)
+	stab_best = stab;
+
+      /* Keep looking through other CUs.  */
+    }
+
+  return stab_best;
+}
+
+/* This dumps minimal information about .debug_names.  It is called
+   via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
+   uses this to verify that .debug_names has been loaded.  */
+
+static void
+dw2_debug_names_dump (struct objfile *objfile)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  gdb_assert (per_objfile->per_bfd->using_index);
+  printf_filtered (".debug_names:");
+  if (per_objfile->per_bfd->debug_names_table)
+    printf_filtered (" exists\n");
+  else
+    printf_filtered (" faked for \"readnow\"\n");
+  printf_filtered ("\n");
+}
+
+static void
+dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
+					     const char *func_name)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  /* per_objfile->per_bfd->debug_names_table is NULL if OBJF_READNOW.  */
+  if (per_objfile->per_bfd->debug_names_table)
+    {
+      const mapped_debug_names &map = *per_objfile->per_bfd->debug_names_table;
+
+      dw2_debug_names_iterator iter (map, {}, VAR_DOMAIN, func_name,
+				     per_objfile);
+
+      struct dwarf2_per_cu_data *per_cu;
+      while ((per_cu = iter.next ()) != NULL)
+	dw2_instantiate_symtab (per_cu, per_objfile, false);
+    }
+}
+
+static void
+dw2_debug_names_map_matching_symbols
+  (struct objfile *objfile,
+   const lookup_name_info &name, domain_enum domain,
+   int global,
+   gdb::function_view<symbol_found_callback_ftype> callback,
+   symbol_compare_ftype *ordered_compare)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  /* debug_names_table is NULL if OBJF_READNOW.  */
+  if (!per_objfile->per_bfd->debug_names_table)
+    return;
+
+  mapped_debug_names &map = *per_objfile->per_bfd->debug_names_table;
+  const block_enum block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
+
+  const char *match_name = name.ada ().lookup_name ().c_str ();
+  auto matcher = [&] (const char *symname)
+    {
+      if (ordered_compare == nullptr)
+	return true;
+      return ordered_compare (symname, match_name) == 0;
+    };
+
+  dw2_expand_symtabs_matching_symbol (map, name, matcher, ALL_DOMAIN,
+				      [&] (offset_type namei)
+    {
+      /* The name was matched, now expand corresponding CUs that were
+	 marked.  */
+      dw2_debug_names_iterator iter (map, block_kind, domain, namei,
+				     per_objfile);
+
+      struct dwarf2_per_cu_data *per_cu;
+      while ((per_cu = iter.next ()) != NULL)
+	dw2_expand_symtabs_matching_one (per_cu, per_objfile, nullptr,
+					 nullptr);
+      return true;
+    }, per_objfile);
+
+  /* It's a shame we couldn't do this inside the
+     dw2_expand_symtabs_matching_symbol callback, but that skips CUs
+     that have already been expanded.  Instead, this loop matches what
+     the psymtab code does.  */
+  for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+    {
+      compunit_symtab *symtab = per_objfile->get_symtab (per_cu);
+      if (symtab != nullptr)
+	{
+	  const struct block *block
+	    = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (symtab), block_kind);
+	  if (!iterate_over_symbols_terminated (block, name,
+						domain, callback))
+	    break;
+	}
+    }
+}
+
+static void
+dw2_debug_names_expand_symtabs_matching
+  (struct objfile *objfile,
+   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
+   const lookup_name_info *lookup_name,
+   gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
+   gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
+   enum search_domain kind)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  /* debug_names_table is NULL if OBJF_READNOW.  */
+  if (!per_objfile->per_bfd->debug_names_table)
+    return;
+
+  dw_expand_symtabs_matching_file_matcher (per_objfile, file_matcher);
+
+  if (symbol_matcher == NULL && lookup_name == NULL)
+    {
+      for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+	{
+	  QUIT;
+
+	  dw2_expand_symtabs_matching_one (per_cu, per_objfile, file_matcher,
+					   expansion_notify);
+	}
+      return;
+    }
+
+  mapped_debug_names &map = *per_objfile->per_bfd->debug_names_table;
+
+  dw2_expand_symtabs_matching_symbol (map, *lookup_name,
+				      symbol_matcher,
+				      kind, [&] (offset_type namei)
+    {
+      /* The name was matched, now expand corresponding CUs that were
+	 marked.  */
+      dw2_debug_names_iterator iter (map, kind, namei, per_objfile);
+
+      struct dwarf2_per_cu_data *per_cu;
+      while ((per_cu = iter.next ()) != NULL)
+	dw2_expand_symtabs_matching_one (per_cu, per_objfile, file_matcher,
+					 expansion_notify);
+      return true;
+    }, per_objfile);
+}
+
+const struct quick_symbol_functions dwarf2_debug_names_functions =
+{
+  dw2_has_symbols,
+  dw2_find_last_source_symtab,
+  dw2_forget_cached_source_info,
+  dw2_map_symtabs_matching_filename,
+  dw2_debug_names_lookup_symbol,
+  NULL,
+  dw2_print_stats,
+  dw2_debug_names_dump,
+  dw2_debug_names_expand_symtabs_for_function,
+  dw2_expand_all_symtabs,
+  dw2_expand_symtabs_with_fullname,
+  dw2_debug_names_map_matching_symbols,
+  dw2_debug_names_expand_symtabs_matching,
+  dw2_find_pc_sect_compunit_symtab,
+  NULL,
+  dw2_map_symbol_filenames
+};
+
+/* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
+   to either a dwarf2_per_bfd or dwz_file object.  */
+
+template <typename T>
+static gdb::array_view<const gdb_byte>
+get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
+{
+  dwarf2_section_info *section = &section_owner->gdb_index;
+
+  if (section->empty ())
+    return {};
+
+  /* Older elfutils strip versions could keep the section in the main
+     executable while splitting it for the separate debug info file.  */
+  if ((section->get_flags () & SEC_HAS_CONTENTS) == 0)
+    return {};
+
+  section->read (obj);
+
+  /* dwarf2_section_info::size is a bfd_size_type, while
+     gdb::array_view works with size_t.  On 32-bit hosts, with
+     --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
+     is 32-bit.  So we need an explicit narrowing conversion here.
+     This is fine, because it's impossible to allocate or mmap an
+     array/buffer larger than what size_t can represent.  */
+  return gdb::make_array_view (section->buffer, section->size);
+}
+
+/* Lookup the index cache for the contents of the index associated to
+   DWARF2_OBJ.  */
+
+static gdb::array_view<const gdb_byte>
+get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_bfd *dwarf2_per_bfd)
+{
+  const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
+  if (build_id == nullptr)
+    return {};
+
+  return global_index_cache.lookup_gdb_index (build_id,
+					      &dwarf2_per_bfd->index_cache_res);
+}
+
+/* Same as the above, but for DWZ.  */
+
+static gdb::array_view<const gdb_byte>
+get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
+{
+  const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
+  if (build_id == nullptr)
+    return {};
+
+  return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
+}
+
+/* See symfile.h.  */
+
+bool
+dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
+
+  /* If we're about to read full symbols, don't bother with the
+     indices.  In this case we also don't care if some other debug
+     format is making psymtabs, because they are all about to be
+     expanded anyway.  */
+  if ((objfile->flags & OBJF_READNOW))
+    {
+      /* When using READNOW, the using_index flag (set below) indicates that
+	 PER_BFD was already initialized, when we loaded some other objfile.  */
+      if (per_bfd->using_index)
+	{
+	  *index_kind = dw_index_kind::GDB_INDEX;
+	  per_objfile->resize_symtabs ();
+	  return true;
+	}
+
+      per_bfd->using_index = 1;
+      create_all_comp_units (per_objfile);
+      create_all_type_units (per_objfile);
+      per_bfd->quick_file_names_table
+	= create_quick_file_names_table (per_bfd->all_comp_units.size ());
+      per_objfile->resize_symtabs ();
+
+      for (int i = 0; i < (per_bfd->all_comp_units.size ()
+			   + per_bfd->all_type_units.size ()); ++i)
+	{
+	  dwarf2_per_cu_data *per_cu = per_bfd->get_cutu (i);
+
+	  per_cu->v.quick = OBSTACK_ZALLOC (&per_bfd->obstack,
+					    struct dwarf2_per_cu_quick_data);
+	}
+
+      /* Return 1 so that gdb sees the "quick" functions.  However,
+	 these functions will be no-ops because we will have expanded
+	 all symtabs.  */
+      *index_kind = dw_index_kind::GDB_INDEX;
+      return true;
+    }
+
+  /* Was a debug names index already read when we processed an objfile sharing
+     PER_BFD?  */
+  if (per_bfd->debug_names_table != nullptr)
+    {
+      *index_kind = dw_index_kind::DEBUG_NAMES;
+      per_objfile->objfile->partial_symtabs = per_bfd->partial_symtabs;
+      per_objfile->resize_symtabs ();
+      return true;
+    }
+
+  /* Was a GDB index already read when we processed an objfile sharing
+     PER_BFD?  */
+  if (per_bfd->index_table != nullptr)
+    {
+      *index_kind = dw_index_kind::GDB_INDEX;
+      per_objfile->objfile->partial_symtabs = per_bfd->partial_symtabs;
+      per_objfile->resize_symtabs ();
+      return true;
+    }
+
+  /* There might already be partial symtabs built for this BFD.  This happens
+     when loading the same binary twice with the index-cache enabled.  If so,
+     don't try to read an index.  The objfile / per_objfile initialization will
+     be completed in dwarf2_build_psymtabs, in the standard partial symtabs
+     code path.  */
+  if (per_bfd->partial_symtabs != nullptr)
+    return false;
+
+  if (dwarf2_read_debug_names (per_objfile))
+    {
+      *index_kind = dw_index_kind::DEBUG_NAMES;
+      per_objfile->resize_symtabs ();
+      return true;
+    }
+
+  if (dwarf2_read_gdb_index (per_objfile,
+			     get_gdb_index_contents_from_section<struct dwarf2_per_bfd>,
+			     get_gdb_index_contents_from_section<dwz_file>))
+    {
+      *index_kind = dw_index_kind::GDB_INDEX;
+      per_objfile->resize_symtabs ();
+      return true;
+    }
+
+  /* ... otherwise, try to find the index in the index cache.  */
+  if (dwarf2_read_gdb_index (per_objfile,
+			     get_gdb_index_contents_from_cache,
+			     get_gdb_index_contents_from_cache_dwz))
+    {
+      global_index_cache.hit ();
+      *index_kind = dw_index_kind::GDB_INDEX;
+      per_objfile->resize_symtabs ();
+      return true;
+    }
+
+  global_index_cache.miss ();
+  return false;
+}
+
+
+
+/* Build a partial symbol table.  */
+
+void
+dwarf2_build_psymtabs (struct objfile *objfile)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
+
+  if (per_bfd->partial_symtabs != nullptr)
+    {
+      /* Partial symbols were already read, so now we can simply
+	 attach them.  */
+      objfile->partial_symtabs = per_bfd->partial_symtabs;
+      per_objfile->resize_symtabs ();
+      return;
+    }
+
+  init_psymbol_list (objfile, 1024);
+
+  try
+    {
+      /* This isn't really ideal: all the data we allocate on the
+	 objfile's obstack is still uselessly kept around.  However,
+	 freeing it seems unsafe.  */
+      psymtab_discarder psymtabs (objfile);
+      dwarf2_build_psymtabs_hard (per_objfile);
+      psymtabs.keep ();
+
+      per_objfile->resize_symtabs ();
+
+      /* (maybe) store an index in the cache.  */
+      global_index_cache.store (per_objfile);
+    }
+  catch (const gdb_exception_error &except)
+    {
+      exception_print (gdb_stderr, except);
+    }
+
+  /* Finish by setting the local reference to partial symtabs, so that
+     we don't try to read them again if reading another objfile with the same
+     BFD.  If we can't in fact share, this won't make a difference anyway as
+     the dwarf2_per_bfd object won't be shared.  */
+  per_bfd->partial_symtabs = objfile->partial_symtabs;
+}
+
+/* Find the base address of the compilation unit for range lists and
+   location lists.  It will normally be specified by DW_AT_low_pc.
+   In DWARF-3 draft 4, the base address could be overridden by
+   DW_AT_entry_pc.  It's been removed, but GCC still uses this for
+   compilation units with discontinuous ranges.  */
+
+static void
+dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+
+  cu->base_address.reset ();
+
+  attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
+  if (attr != nullptr)
+    cu->base_address = attr->value_as_address ();
+  else
+    {
+      attr = dwarf2_attr (die, DW_AT_low_pc, cu);
+      if (attr != nullptr)
+	cu->base_address = attr->value_as_address ();
+    }
+}
+
+/* Helper function that returns the proper abbrev section for
+   THIS_CU.  */
+
+static struct dwarf2_section_info *
+get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
+{
+  struct dwarf2_section_info *abbrev;
+  dwarf2_per_bfd *per_bfd = this_cu->per_bfd;
+
+  if (this_cu->is_dwz)
+    abbrev = &dwarf2_get_dwz_file (per_bfd)->abbrev;
+  else
+    abbrev = &per_bfd->abbrev;
+
+  return abbrev;
+}
+
+/* Fetch the abbreviation table offset from a comp or type unit header.  */
+
+static sect_offset
+read_abbrev_offset (dwarf2_per_objfile *per_objfile,
+		    struct dwarf2_section_info *section,
+		    sect_offset sect_off)
+{
+  bfd *abfd = section->get_bfd_owner ();
+  const gdb_byte *info_ptr;
+  unsigned int initial_length_size, offset_size;
+  uint16_t version;
+
+  section->read (per_objfile->objfile);
+  info_ptr = section->buffer + to_underlying (sect_off);
+  read_initial_length (abfd, info_ptr, &initial_length_size);
+  offset_size = initial_length_size == 4 ? 4 : 8;
+  info_ptr += initial_length_size;
+
+  version = read_2_bytes (abfd, info_ptr);
+  info_ptr += 2;
+  if (version >= 5)
+    {
+      /* Skip unit type and address size.  */
+      info_ptr += 2;
+    }
+
+  return (sect_offset) read_offset (abfd, info_ptr, offset_size);
+}
+
+/* A partial symtab that is used only for include files.  */
+struct dwarf2_include_psymtab : public partial_symtab
+{
+  dwarf2_include_psymtab (const char *filename, struct objfile *objfile)
+    : partial_symtab (filename, objfile)
+  {
+  }
+
+  void read_symtab (struct objfile *objfile) override
+  {
+    /* It's an include file, no symbols to read for it.
+       Everything is in the includer symtab.  */
+
+    /* The expansion of a dwarf2_include_psymtab is just a trigger for
+       expansion of the includer psymtab.  We use the dependencies[0] field to
+       model the includer.  But if we go the regular route of calling
+       expand_psymtab here, and having expand_psymtab call expand_dependencies
+       to expand the includer, we'll only use expand_psymtab on the includer
+       (making it a non-toplevel psymtab), while if we expand the includer via
+       another path, we'll use read_symtab (making it a toplevel psymtab).
+       So, don't pretend a dwarf2_include_psymtab is an actual toplevel
+       psymtab, and trigger read_symtab on the includer here directly.  */
+    includer ()->read_symtab (objfile);
+  }
+
+  void expand_psymtab (struct objfile *objfile) override
+  {
+    /* This is not called by read_symtab, and should not be called by any
+       expand_dependencies.  */
+    gdb_assert (false);
+  }
+
+  bool readin_p (struct objfile *objfile) const override
+  {
+    return includer ()->readin_p (objfile);
+  }
+
+  compunit_symtab *get_compunit_symtab (struct objfile *objfile) const override
+  {
+    return nullptr;
+  }
+
+private:
+  partial_symtab *includer () const
+  {
+    /* An include psymtab has exactly one dependency: the psymtab that
+       includes it.  */
+    gdb_assert (this->number_of_dependencies == 1);
+    return this->dependencies[0];
+  }
+};
+
+/* Allocate a new partial symtab for file named NAME and mark this new
+   partial symtab as being an include of PST.  */
+
+static void
+dwarf2_create_include_psymtab (const char *name, dwarf2_psymtab *pst,
+                               struct objfile *objfile)
+{
+  dwarf2_include_psymtab *subpst = new dwarf2_include_psymtab (name, objfile);
+
+  if (!IS_ABSOLUTE_PATH (subpst->filename))
+    subpst->dirname = pst->dirname;
+
+  subpst->dependencies = objfile->partial_symtabs->allocate_dependencies (1);
+  subpst->dependencies[0] = pst;
+  subpst->number_of_dependencies = 1;
+}
+
+/* Read the Line Number Program data and extract the list of files
+   included by the source file represented by PST.  Build an include
+   partial symtab for each of these included files.  */
+
+static void
+dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
+			       struct die_info *die,
+			       dwarf2_psymtab *pst)
+{
+  line_header_up lh;
+  struct attribute *attr;
+
+  attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
+  if (attr != nullptr)
+    lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
+  if (lh == NULL)
+    return;  /* No linetable, so no includes.  */
+
+  /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
+     that we pass in the raw text_low here; that is ok because we're
+     only decoding the line table to make include partial symtabs, and
+     so the addresses aren't really used.  */
+  dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
+		      pst->raw_text_low (), 1);
+}
+
+static hashval_t
+hash_signatured_type (const void *item)
+{
+  const struct signatured_type *sig_type
+    = (const struct signatured_type *) item;
+
+  /* This drops the top 32 bits of the signature, but is ok for a hash.  */
+  return sig_type->signature;
+}
+
+static int
+eq_signatured_type (const void *item_lhs, const void *item_rhs)
+{
+  const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
+  const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
+
+  return lhs->signature == rhs->signature;
+}
+
+/* Allocate a hash table for signatured types.  */
+
+static htab_up
+allocate_signatured_type_table ()
+{
+  return htab_up (htab_create_alloc (41,
+				     hash_signatured_type,
+				     eq_signatured_type,
+				     NULL, xcalloc, xfree));
+}
+
+/* A helper function to add a signatured type CU to a table.  */
+
+static int
+add_signatured_type_cu_to_table (void **slot, void *datum)
+{
+  struct signatured_type *sigt = (struct signatured_type *) *slot;
+  std::vector<signatured_type *> *all_type_units
+    = (std::vector<signatured_type *> *) datum;
+
+  all_type_units->push_back (sigt);
+
+  return 1;
+}
+
+/* A helper for create_debug_types_hash_table.  Read types from SECTION
+   and fill them into TYPES_HTAB.  It will process only type units,
+   therefore DW_UT_type.  */
+
+static void
+create_debug_type_hash_table (dwarf2_per_objfile *per_objfile,
+			      struct dwo_file *dwo_file,
+			      dwarf2_section_info *section, htab_up &types_htab,
+			      rcuh_kind section_kind)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  struct dwarf2_section_info *abbrev_section;
+  bfd *abfd;
+  const gdb_byte *info_ptr, *end_ptr;
+
+  abbrev_section = (dwo_file != NULL
+		    ? &dwo_file->sections.abbrev
+		    : &per_objfile->per_bfd->abbrev);
+
+  if (dwarf_read_debug)
+    fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
+			section->get_name (),
+			abbrev_section->get_file_name ());
+
+  section->read (objfile);
+  info_ptr = section->buffer;
+
+  if (info_ptr == NULL)
+    return;
+
+  /* We can't set abfd until now because the section may be empty or
+     not present, in which case the bfd is unknown.  */
+  abfd = section->get_bfd_owner ();
+
+  /* We don't use cutu_reader here because we don't need to read
+     any dies: the signature is in the header.  */
+
+  end_ptr = info_ptr + section->size;
+  while (info_ptr < end_ptr)
+    {
+      struct signatured_type *sig_type;
+      struct dwo_unit *dwo_tu;
+      void **slot;
+      const gdb_byte *ptr = info_ptr;
+      struct comp_unit_head header;
+      unsigned int length;
+
+      sect_offset sect_off = (sect_offset) (ptr - section->buffer);
+
+      /* Initialize it due to a false compiler warning.  */
+      header.signature = -1;
+      header.type_cu_offset_in_tu = (cu_offset) -1;
+
+      /* We need to read the type's signature in order to build the hash
+	 table, but we don't need anything else just yet.  */
+
+      ptr = read_and_check_comp_unit_head (per_objfile, &header, section,
+					   abbrev_section, ptr, section_kind);
+
+      length = header.get_length ();
+
+      /* Skip dummy type units.  */
+      if (ptr >= info_ptr + length
+	  || peek_abbrev_code (abfd, ptr) == 0
+	  || (header.unit_type != DW_UT_type
+	      && header.unit_type != DW_UT_split_type))
+	{
+	  info_ptr += length;
+	  continue;
+	}
+
+      if (types_htab == NULL)
+	{
+	  if (dwo_file)
+	    types_htab = allocate_dwo_unit_table ();
+	  else
+	    types_htab = allocate_signatured_type_table ();
+	}
+
+      if (dwo_file)
+	{
+	  sig_type = NULL;
+	  dwo_tu = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, dwo_unit);
+	  dwo_tu->dwo_file = dwo_file;
+	  dwo_tu->signature = header.signature;
+	  dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
+	  dwo_tu->section = section;
+	  dwo_tu->sect_off = sect_off;
+	  dwo_tu->length = length;
+	}
+      else
+	{
+	  /* N.B.: type_offset is not usable if this type uses a DWO file.
+	     The real type_offset is in the DWO file.  */
+	  dwo_tu = NULL;
+	  sig_type = per_objfile->per_bfd->allocate_signatured_type ();
+	  sig_type->signature = header.signature;
+	  sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
+	  sig_type->per_cu.is_debug_types = 1;
+	  sig_type->per_cu.section = section;
+	  sig_type->per_cu.sect_off = sect_off;
+	  sig_type->per_cu.length = length;
+	}
+
+      slot = htab_find_slot (types_htab.get (),
+			     dwo_file ? (void*) dwo_tu : (void *) sig_type,
+			     INSERT);
+      gdb_assert (slot != NULL);
+      if (*slot != NULL)
+	{
+	  sect_offset dup_sect_off;
+
+	  if (dwo_file)
+	    {
+	      const struct dwo_unit *dup_tu
+		= (const struct dwo_unit *) *slot;
+
+	      dup_sect_off = dup_tu->sect_off;
+	    }
+	  else
+	    {
+	      const struct signatured_type *dup_tu
+		= (const struct signatured_type *) *slot;
+
+	      dup_sect_off = dup_tu->per_cu.sect_off;
+	    }
+
+	  complaint (_("debug type entry at offset %s is duplicate to"
+		       " the entry at offset %s, signature %s"),
+		     sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
+		     hex_string (header.signature));
+	}
+      *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
+
+      if (dwarf_read_debug > 1)
+	fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
+			    sect_offset_str (sect_off),
+			    hex_string (header.signature));
+
+      info_ptr += length;
+    }
+}
+
+/* Create the hash table of all entries in the .debug_types
+   (or .debug_types.dwo) section(s).
+   If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
+   otherwise it is NULL.
+
+   The result is a pointer to the hash table or NULL if there are no types.
+
+   Note: This function processes DWO files only, not DWP files.  */
+
+static void
+create_debug_types_hash_table (dwarf2_per_objfile *per_objfile,
+			       struct dwo_file *dwo_file,
+			       gdb::array_view<dwarf2_section_info> type_sections,
+			       htab_up &types_htab)
+{
+  for (dwarf2_section_info &section : type_sections)
+    create_debug_type_hash_table (per_objfile, dwo_file, &section, types_htab,
+				  rcuh_kind::TYPE);
+}
+
+/* Create the hash table of all entries in the .debug_types section,
+   and initialize all_type_units.
+   The result is zero if there is an error (e.g. missing .debug_types section),
+   otherwise non-zero.	*/
+
+static int
+create_all_type_units (dwarf2_per_objfile *per_objfile)
+{
+  htab_up types_htab;
+
+  create_debug_type_hash_table (per_objfile, NULL, &per_objfile->per_bfd->info,
+				types_htab, rcuh_kind::COMPILE);
+  create_debug_types_hash_table (per_objfile, NULL, per_objfile->per_bfd->types,
+				 types_htab);
+  if (types_htab == NULL)
+    {
+      per_objfile->per_bfd->signatured_types = NULL;
+      return 0;
+    }
+
+  per_objfile->per_bfd->signatured_types = std::move (types_htab);
+
+  gdb_assert (per_objfile->per_bfd->all_type_units.empty ());
+  per_objfile->per_bfd->all_type_units.reserve
+    (htab_elements (per_objfile->per_bfd->signatured_types.get ()));
+
+  htab_traverse_noresize (per_objfile->per_bfd->signatured_types.get (),
+			  add_signatured_type_cu_to_table,
+			  &per_objfile->per_bfd->all_type_units);
+
+  return 1;
+}
+
+/* Add an entry for signature SIG to dwarf2_per_objfile->per_bfd->signatured_types.
+   If SLOT is non-NULL, it is the entry to use in the hash table.
+   Otherwise we find one.  */
+
+static struct signatured_type *
+add_type_unit (dwarf2_per_objfile *per_objfile, ULONGEST sig, void **slot)
+{
+  if (per_objfile->per_bfd->all_type_units.size ()
+      == per_objfile->per_bfd->all_type_units.capacity ())
+    ++per_objfile->per_bfd->tu_stats.nr_all_type_units_reallocs;
+
+  signatured_type *sig_type = per_objfile->per_bfd->allocate_signatured_type ();
+
+  per_objfile->resize_symtabs ();
+
+  per_objfile->per_bfd->all_type_units.push_back (sig_type);
+  sig_type->signature = sig;
+  sig_type->per_cu.is_debug_types = 1;
+  if (per_objfile->per_bfd->using_index)
+    {
+      sig_type->per_cu.v.quick =
+	OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack,
+			struct dwarf2_per_cu_quick_data);
+    }
+
+  if (slot == NULL)
+    {
+      slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
+			     sig_type, INSERT);
+    }
+  gdb_assert (*slot == NULL);
+  *slot = sig_type;
+  /* The rest of sig_type must be filled in by the caller.  */
+  return sig_type;
+}
+
+/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
+   Fill in SIG_ENTRY with DWO_ENTRY.  */
+
+static void
+fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile *per_objfile,
+				  struct signatured_type *sig_entry,
+				  struct dwo_unit *dwo_entry)
+{
+  dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
+
+  /* Make sure we're not clobbering something we don't expect to.  */
+  gdb_assert (! sig_entry->per_cu.queued);
+  gdb_assert (per_objfile->get_cu (&sig_entry->per_cu) == NULL);
+  if (per_bfd->using_index)
+    {
+      gdb_assert (sig_entry->per_cu.v.quick != NULL);
+      gdb_assert (!per_objfile->symtab_set_p (&sig_entry->per_cu));
+    }
+  else
+      gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
+  gdb_assert (sig_entry->signature == dwo_entry->signature);
+  gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
+  gdb_assert (sig_entry->type_unit_group == NULL);
+  gdb_assert (sig_entry->dwo_unit == NULL);
+
+  sig_entry->per_cu.section = dwo_entry->section;
+  sig_entry->per_cu.sect_off = dwo_entry->sect_off;
+  sig_entry->per_cu.length = dwo_entry->length;
+  sig_entry->per_cu.reading_dwo_directly = 1;
+  sig_entry->per_cu.per_bfd = per_bfd;
+  sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
+  sig_entry->dwo_unit = dwo_entry;
+}
+
+/* Subroutine of lookup_signatured_type.
+   If we haven't read the TU yet, create the signatured_type data structure
+   for a TU to be read in directly from a DWO file, bypassing the stub.
+   This is the "Stay in DWO Optimization": When there is no DWP file and we're
+   using .gdb_index, then when reading a CU we want to stay in the DWO file
+   containing that CU.  Otherwise we could end up reading several other DWO
+   files (due to comdat folding) to process the transitive closure of all the
+   mentioned TUs, and that can be slow.  The current DWO file will have every
+   type signature that it needs.
+   We only do this for .gdb_index because in the psymtab case we already have
+   to read all the DWOs to build the type unit groups.  */
+
+static struct signatured_type *
+lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct dwo_file *dwo_file;
+  struct dwo_unit find_dwo_entry, *dwo_entry;
+  struct signatured_type find_sig_entry, *sig_entry;
+  void **slot;
+
+  gdb_assert (cu->dwo_unit && per_objfile->per_bfd->using_index);
+
+  /* If TU skeletons have been removed then we may not have read in any
+     TUs yet.  */
+  if (per_objfile->per_bfd->signatured_types == NULL)
+    per_objfile->per_bfd->signatured_types = allocate_signatured_type_table ();
+
+  /* We only ever need to read in one copy of a signatured type.
+     Use the global signatured_types array to do our own comdat-folding
+     of types.  If this is the first time we're reading this TU, and
+     the TU has an entry in .gdb_index, replace the recorded data from
+     .gdb_index with this TU.  */
+
+  find_sig_entry.signature = sig;
+  slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
+			 &find_sig_entry, INSERT);
+  sig_entry = (struct signatured_type *) *slot;
+
+  /* We can get here with the TU already read, *or* in the process of being
+     read.  Don't reassign the global entry to point to this DWO if that's
+     the case.  Also note that if the TU is already being read, it may not
+     have come from a DWO, the program may be a mix of Fission-compiled
+     code and non-Fission-compiled code.  */
+
+  /* Have we already tried to read this TU?
+     Note: sig_entry can be NULL if the skeleton TU was removed (thus it
+     needn't exist in the global table yet).  */
+  if (sig_entry != NULL && sig_entry->per_cu.tu_read)
+    return sig_entry;
+
+  /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
+     dwo_unit of the TU itself.  */
+  dwo_file = cu->dwo_unit->dwo_file;
+
+  /* Ok, this is the first time we're reading this TU.  */
+  if (dwo_file->tus == NULL)
+    return NULL;
+  find_dwo_entry.signature = sig;
+  dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus.get (),
+					     &find_dwo_entry);
+  if (dwo_entry == NULL)
+    return NULL;
+
+  /* If the global table doesn't have an entry for this TU, add one.  */
+  if (sig_entry == NULL)
+    sig_entry = add_type_unit (per_objfile, sig, slot);
+
+  fill_in_sig_entry_from_dwo_entry (per_objfile, sig_entry, dwo_entry);
+  sig_entry->per_cu.tu_read = 1;
+  return sig_entry;
+}
+
+/* Subroutine of lookup_signatured_type.
+   Look up the type for signature SIG, and if we can't find SIG in .gdb_index
+   then try the DWP file.  If the TU stub (skeleton) has been removed then
+   it won't be in .gdb_index.  */
+
+static struct signatured_type *
+lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct dwp_file *dwp_file = get_dwp_file (per_objfile);
+  struct dwo_unit *dwo_entry;
+  struct signatured_type find_sig_entry, *sig_entry;
+  void **slot;
+
+  gdb_assert (cu->dwo_unit && per_objfile->per_bfd->using_index);
+  gdb_assert (dwp_file != NULL);
+
+  /* If TU skeletons have been removed then we may not have read in any
+     TUs yet.  */
+  if (per_objfile->per_bfd->signatured_types == NULL)
+    per_objfile->per_bfd->signatured_types = allocate_signatured_type_table ();
+
+  find_sig_entry.signature = sig;
+  slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
+			 &find_sig_entry, INSERT);
+  sig_entry = (struct signatured_type *) *slot;
+
+  /* Have we already tried to read this TU?
+     Note: sig_entry can be NULL if the skeleton TU was removed (thus it
+     needn't exist in the global table yet).  */
+  if (sig_entry != NULL)
+    return sig_entry;
+
+  if (dwp_file->tus == NULL)
+    return NULL;
+  dwo_entry = lookup_dwo_unit_in_dwp (per_objfile, dwp_file, NULL, sig,
+				      1 /* is_debug_types */);
+  if (dwo_entry == NULL)
+    return NULL;
+
+  sig_entry = add_type_unit (per_objfile, sig, slot);
+  fill_in_sig_entry_from_dwo_entry (per_objfile, sig_entry, dwo_entry);
+
+  return sig_entry;
+}
+
+/* Lookup a signature based type for DW_FORM_ref_sig8.
+   Returns NULL if signature SIG is not present in the table.
+   It is up to the caller to complain about this.  */
+
+static struct signatured_type *
+lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+
+  if (cu->dwo_unit && per_objfile->per_bfd->using_index)
+    {
+      /* We're in a DWO/DWP file, and we're using .gdb_index.
+	 These cases require special processing.  */
+      if (get_dwp_file (per_objfile) == NULL)
+	return lookup_dwo_signatured_type (cu, sig);
+      else
+	return lookup_dwp_signatured_type (cu, sig);
+    }
+  else
+    {
+      struct signatured_type find_entry, *entry;
+
+      if (per_objfile->per_bfd->signatured_types == NULL)
+	return NULL;
+      find_entry.signature = sig;
+      entry = ((struct signatured_type *)
+	       htab_find (per_objfile->per_bfd->signatured_types.get (),
+			  &find_entry));
+      return entry;
+    }
+}
+
+/* Low level DIE reading support.  */
+
+/* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
+
+static void
+init_cu_die_reader (struct die_reader_specs *reader,
+		    struct dwarf2_cu *cu,
+		    struct dwarf2_section_info *section,
+		    struct dwo_file *dwo_file,
+		    struct abbrev_table *abbrev_table)
+{
+  gdb_assert (section->readin && section->buffer != NULL);
+  reader->abfd = section->get_bfd_owner ();
+  reader->cu = cu;
+  reader->dwo_file = dwo_file;
+  reader->die_section = section;
+  reader->buffer = section->buffer;
+  reader->buffer_end = section->buffer + section->size;
+  reader->abbrev_table = abbrev_table;
+}
+
+/* Subroutine of cutu_reader to simplify it.
+   Read in the rest of a CU/TU top level DIE from DWO_UNIT.
+   There's just a lot of work to do, and cutu_reader is big enough
+   already.
+
+   STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
+   from it to the DIE in the DWO.  If NULL we are skipping the stub.
+   STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
+   from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
+   attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
+   STUB_COMP_DIR may be non-NULL.
+   *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE
+   are filled in with the info of the DIE from the DWO file.
+   *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
+   from the dwo.  Since *RESULT_READER references this abbrev table, it must be
+   kept around for at least as long as *RESULT_READER.
+
+   The result is non-zero if a valid (non-dummy) DIE was found.  */
+
+static int
+read_cutu_die_from_dwo (dwarf2_cu *cu,
+			struct dwo_unit *dwo_unit,
+			struct die_info *stub_comp_unit_die,
+			const char *stub_comp_dir,
+			struct die_reader_specs *result_reader,
+			const gdb_byte **result_info_ptr,
+			struct die_info **result_comp_unit_die,
+			abbrev_table_up *result_dwo_abbrev_table)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  dwarf2_per_cu_data *per_cu = cu->per_cu;
+  struct objfile *objfile = per_objfile->objfile;
+  bfd *abfd;
+  const gdb_byte *begin_info_ptr, *info_ptr;
+  struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
+  int i,num_extra_attrs;
+  struct dwarf2_section_info *dwo_abbrev_section;
+  struct die_info *comp_unit_die;
+
+  /* At most one of these may be provided.  */
+  gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
+
+  /* These attributes aren't processed until later:
+     DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
+     DW_AT_comp_dir is used now, to find the DWO file, but it is also
+     referenced later.  However, these attributes are found in the stub
+     which we won't have later.  In order to not impose this complication
+     on the rest of the code, we read them here and copy them to the
+     DWO CU/TU die.  */
+
+  stmt_list = NULL;
+  low_pc = NULL;
+  high_pc = NULL;
+  ranges = NULL;
+  comp_dir = NULL;
+
+  if (stub_comp_unit_die != NULL)
+    {
+      /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
+	 DWO file.  */
+      if (!per_cu->is_debug_types)
+	stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
+      low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
+      high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
+      ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
+      comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
+
+      cu->addr_base = stub_comp_unit_die->addr_base ();
+
+      /* There should be a DW_AT_rnglists_base (DW_AT_GNU_ranges_base) attribute
+	 here (if needed). We need the value before we can process
+	 DW_AT_ranges.  */
+      cu->ranges_base = stub_comp_unit_die->ranges_base ();
+    }
+  else if (stub_comp_dir != NULL)
+    {
+      /* Reconstruct the comp_dir attribute to simplify the code below.  */
+      comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
+      comp_dir->name = DW_AT_comp_dir;
+      comp_dir->form = DW_FORM_string;
+      DW_STRING_IS_CANONICAL (comp_dir) = 0;
+      DW_STRING (comp_dir) = stub_comp_dir;
+    }
+
+  /* Set up for reading the DWO CU/TU.  */
+  cu->dwo_unit = dwo_unit;
+  dwarf2_section_info *section = dwo_unit->section;
+  section->read (objfile);
+  abfd = section->get_bfd_owner ();
+  begin_info_ptr = info_ptr = (section->buffer
+			       + to_underlying (dwo_unit->sect_off));
+  dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
+
+  if (per_cu->is_debug_types)
+    {
+      signatured_type *sig_type = (struct signatured_type *) per_cu;
+
+      info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
+						section, dwo_abbrev_section,
+						info_ptr, rcuh_kind::TYPE);
+      /* This is not an assert because it can be caused by bad debug info.  */
+      if (sig_type->signature != cu->header.signature)
+	{
+	  error (_("Dwarf Error: signature mismatch %s vs %s while reading"
+		   " TU at offset %s [in module %s]"),
+		 hex_string (sig_type->signature),
+		 hex_string (cu->header.signature),
+		 sect_offset_str (dwo_unit->sect_off),
+		 bfd_get_filename (abfd));
+	}
+      gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
+      /* For DWOs coming from DWP files, we don't know the CU length
+	 nor the type's offset in the TU until now.  */
+      dwo_unit->length = cu->header.get_length ();
+      dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
+
+      /* Establish the type offset that can be used to lookup the type.
+	 For DWO files, we don't know it until now.  */
+      sig_type->type_offset_in_section
+	= dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
+    }
+  else
+    {
+      info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
+						section, dwo_abbrev_section,
+						info_ptr, rcuh_kind::COMPILE);
+      gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
+      /* For DWOs coming from DWP files, we don't know the CU length
+	 until now.  */
+      dwo_unit->length = cu->header.get_length ();
+    }
+
+  *result_dwo_abbrev_table
+    = abbrev_table::read (objfile, dwo_abbrev_section,
+			  cu->header.abbrev_sect_off);
+  init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
+		      result_dwo_abbrev_table->get ());
+
+  /* Read in the die, but leave space to copy over the attributes
+     from the stub.  This has the benefit of simplifying the rest of
+     the code - all the work to maintain the illusion of a single
+     DW_TAG_{compile,type}_unit DIE is done here.  */
+  num_extra_attrs = ((stmt_list != NULL)
+		     + (low_pc != NULL)
+		     + (high_pc != NULL)
+		     + (ranges != NULL)
+		     + (comp_dir != NULL));
+  info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
+			      num_extra_attrs);
+
+  /* Copy over the attributes from the stub to the DIE we just read in.  */
+  comp_unit_die = *result_comp_unit_die;
+  i = comp_unit_die->num_attrs;
+  if (stmt_list != NULL)
+    comp_unit_die->attrs[i++] = *stmt_list;
+  if (low_pc != NULL)
+    comp_unit_die->attrs[i++] = *low_pc;
+  if (high_pc != NULL)
+    comp_unit_die->attrs[i++] = *high_pc;
+  if (ranges != NULL)
+    comp_unit_die->attrs[i++] = *ranges;
+  if (comp_dir != NULL)
+    comp_unit_die->attrs[i++] = *comp_dir;
+  comp_unit_die->num_attrs += num_extra_attrs;
+
+  if (dwarf_die_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+			  "Read die from %s@0x%x of %s:\n",
+			  section->get_name (),
+			  (unsigned) (begin_info_ptr - section->buffer),
+			  bfd_get_filename (abfd));
+      dump_die (comp_unit_die, dwarf_die_debug);
+    }
+
+  /* Skip dummy compilation units.  */
+  if (info_ptr >= begin_info_ptr + dwo_unit->length
+      || peek_abbrev_code (abfd, info_ptr) == 0)
+    return 0;
+
+  *result_info_ptr = info_ptr;
+  return 1;
+}
+
+/* Return the signature of the compile unit, if found. In DWARF 4 and before,
+   the signature is in the DW_AT_GNU_dwo_id attribute. In DWARF 5 and later, the
+   signature is part of the header.  */
+static gdb::optional<ULONGEST>
+lookup_dwo_id (struct dwarf2_cu *cu, struct die_info* comp_unit_die)
+{
+  if (cu->header.version >= 5)
+    return cu->header.signature;
+  struct attribute *attr;
+  attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
+  if (attr == nullptr)
+    return gdb::optional<ULONGEST> ();
+  return DW_UNSND (attr);
+}
+
+/* Subroutine of cutu_reader to simplify it.
+   Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
+   Returns NULL if the specified DWO unit cannot be found.  */
+
+static struct dwo_unit *
+lookup_dwo_unit (dwarf2_cu *cu, die_info *comp_unit_die, const char *dwo_name)
+{
+  dwarf2_per_cu_data *per_cu = cu->per_cu;
+  struct dwo_unit *dwo_unit;
+  const char *comp_dir;
+
+  gdb_assert (cu != NULL);
+
+  /* Yeah, we look dwo_name up again, but it simplifies the code.  */
+  dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
+  comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
+
+  if (per_cu->is_debug_types)
+    dwo_unit = lookup_dwo_type_unit (cu, dwo_name, comp_dir);
+  else
+    {
+      gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
+
+      if (!signature.has_value ())
+	error (_("Dwarf Error: missing dwo_id for dwo_name %s"
+		 " [in module %s]"),
+	       dwo_name, bfd_get_filename (per_cu->per_bfd->obfd));
+
+      dwo_unit = lookup_dwo_comp_unit (cu, dwo_name, comp_dir, *signature);
+    }
+
+  return dwo_unit;
+}
+
+/* Subroutine of cutu_reader to simplify it.
+   See it for a description of the parameters.
+   Read a TU directly from a DWO file, bypassing the stub.  */
+
+void
+cutu_reader::init_tu_and_read_dwo_dies (dwarf2_per_cu_data *this_cu,
+					dwarf2_per_objfile *per_objfile,
+					dwarf2_cu *existing_cu)
+{
+  struct signatured_type *sig_type;
+
+  /* Verify we can do the following downcast, and that we have the
+     data we need.  */
+  gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
+  sig_type = (struct signatured_type *) this_cu;
+  gdb_assert (sig_type->dwo_unit != NULL);
+
+  dwarf2_cu *cu;
+
+  if (existing_cu != nullptr)
+    {
+      cu = existing_cu;
+      gdb_assert (cu->dwo_unit == sig_type->dwo_unit);
+      /* There's no need to do the rereading_dwo_cu handling that
+	 cutu_reader does since we don't read the stub.  */
+    }
+  else
+    {
+      /* If an existing_cu is provided, a dwarf2_cu must not exist for this_cu
+         in per_objfile yet.  */
+      gdb_assert (per_objfile->get_cu (this_cu) == nullptr);
+      m_new_cu.reset (new dwarf2_cu (this_cu, per_objfile));
+      cu = m_new_cu.get ();
+    }
+
+  /* A future optimization, if needed, would be to use an existing
+     abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
+     could share abbrev tables.  */
+
+  if (read_cutu_die_from_dwo (cu, sig_type->dwo_unit,
+			      NULL /* stub_comp_unit_die */,
+			      sig_type->dwo_unit->dwo_file->comp_dir,
+			      this, &info_ptr,
+			      &comp_unit_die,
+			      &m_dwo_abbrev_table) == 0)
+    {
+      /* Dummy die.  */
+      dummy_p = true;
+    }
+}
+
+/* Initialize a CU (or TU) and read its DIEs.
+   If the CU defers to a DWO file, read the DWO file as well.
+
+   ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
+   Otherwise the table specified in the comp unit header is read in and used.
+   This is an optimization for when we already have the abbrev table.
+
+   If EXISTING_CU is non-NULL, then use it.  Otherwise, a new CU is
+   allocated.  */
+
+cutu_reader::cutu_reader (dwarf2_per_cu_data *this_cu,
+			  dwarf2_per_objfile *per_objfile,
+			  struct abbrev_table *abbrev_table,
+			  dwarf2_cu *existing_cu,
+			  bool skip_partial)
+  : die_reader_specs {},
+    m_this_cu (this_cu)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  struct dwarf2_section_info *section = this_cu->section;
+  bfd *abfd = section->get_bfd_owner ();
+  const gdb_byte *begin_info_ptr;
+  struct signatured_type *sig_type = NULL;
+  struct dwarf2_section_info *abbrev_section;
+  /* Non-zero if CU currently points to a DWO file and we need to
+     reread it.  When this happens we need to reread the skeleton die
+     before we can reread the DWO file (this only applies to CUs, not TUs).  */
+  int rereading_dwo_cu = 0;
+
+  if (dwarf_die_debug)
+    fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
+			this_cu->is_debug_types ? "type" : "comp",
+			sect_offset_str (this_cu->sect_off));
+
+  /* If we're reading a TU directly from a DWO file, including a virtual DWO
+     file (instead of going through the stub), short-circuit all of this.  */
+  if (this_cu->reading_dwo_directly)
+    {
+      /* Narrow down the scope of possibilities to have to understand.  */
+      gdb_assert (this_cu->is_debug_types);
+      gdb_assert (abbrev_table == NULL);
+      init_tu_and_read_dwo_dies (this_cu, per_objfile, existing_cu);
+      return;
+    }
+
+  /* This is cheap if the section is already read in.  */
+  section->read (objfile);
+
+  begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
+
+  abbrev_section = get_abbrev_section_for_cu (this_cu);
+
+  dwarf2_cu *cu;
+
+  if (existing_cu != nullptr)
+    {
+      cu = existing_cu;
+      /* If this CU is from a DWO file we need to start over, we need to
+	 refetch the attributes from the skeleton CU.
+	 This could be optimized by retrieving those attributes from when we
+	 were here the first time: the previous comp_unit_die was stored in
+	 comp_unit_obstack.  But there's no data yet that we need this
+	 optimization.  */
+      if (cu->dwo_unit != NULL)
+	rereading_dwo_cu = 1;
+    }
+  else
+    {
+      /* If an existing_cu is provided, a dwarf2_cu must not exist for this_cu
+         in per_objfile yet.  */
+      gdb_assert (per_objfile->get_cu (this_cu) == nullptr);
+      m_new_cu.reset (new dwarf2_cu (this_cu, per_objfile));
+      cu = m_new_cu.get ();
+    }
+
+  /* Get the header.  */
+  if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
+    {
+      /* We already have the header, there's no need to read it in again.  */
+      info_ptr += to_underlying (cu->header.first_die_cu_offset);
+    }
+  else
+    {
+      if (this_cu->is_debug_types)
+	{
+	  info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
+						    section, abbrev_section,
+						    info_ptr, rcuh_kind::TYPE);
+
+	  /* Since per_cu is the first member of struct signatured_type,
+	     we can go from a pointer to one to a pointer to the other.  */
+	  sig_type = (struct signatured_type *) this_cu;
+	  gdb_assert (sig_type->signature == cu->header.signature);
+	  gdb_assert (sig_type->type_offset_in_tu
+		      == cu->header.type_cu_offset_in_tu);
+	  gdb_assert (this_cu->sect_off == cu->header.sect_off);
+
+	  /* LENGTH has not been set yet for type units if we're
+	     using .gdb_index.  */
+	  this_cu->length = cu->header.get_length ();
+
+	  /* Establish the type offset that can be used to lookup the type.  */
+	  sig_type->type_offset_in_section =
+	    this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
+
+	  this_cu->dwarf_version = cu->header.version;
+	}
+      else
+	{
+	  info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
+						    section, abbrev_section,
+						    info_ptr,
+						    rcuh_kind::COMPILE);
+
+	  gdb_assert (this_cu->sect_off == cu->header.sect_off);
+	  if (this_cu->length == 0)
+	    this_cu->length = cu->header.get_length ();
+	  else
+	    gdb_assert (this_cu->length == cu->header.get_length ());
+	  this_cu->dwarf_version = cu->header.version;
+	}
+    }
+
+  /* Skip dummy compilation units.  */
+  if (info_ptr >= begin_info_ptr + this_cu->length
+      || peek_abbrev_code (abfd, info_ptr) == 0)
+    {
+      dummy_p = true;
+      return;
+    }
+
+  /* If we don't have them yet, read the abbrevs for this compilation unit.
+     And if we need to read them now, make sure they're freed when we're
+     done.  */
+  if (abbrev_table != NULL)
+    gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
+  else
+    {
+      m_abbrev_table_holder
+	= abbrev_table::read (objfile, abbrev_section,
+			      cu->header.abbrev_sect_off);
+      abbrev_table = m_abbrev_table_holder.get ();
+    }
+
+  /* Read the top level CU/TU die.  */
+  init_cu_die_reader (this, cu, section, NULL, abbrev_table);
+  info_ptr = read_full_die (this, &comp_unit_die, info_ptr);
+
+  if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
+    {
+      dummy_p = true;
+      return;
+    }
+
+  /* If we are in a DWO stub, process it and then read in the "real" CU/TU
+     from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
+     table from the DWO file and pass the ownership over to us.  It will be
+     referenced from READER, so we must make sure to free it after we're done
+     with READER.
+
+     Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
+     DWO CU, that this test will fail (the attribute will not be present).  */
+  const char *dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
+  if (dwo_name != nullptr)
+    {
+      struct dwo_unit *dwo_unit;
+      struct die_info *dwo_comp_unit_die;
+
+      if (comp_unit_die->has_children)
+	{
+	  complaint (_("compilation unit with DW_AT_GNU_dwo_name"
+		       " has children (offset %s) [in module %s]"),
+		     sect_offset_str (this_cu->sect_off),
+		     bfd_get_filename (abfd));
+	}
+      dwo_unit = lookup_dwo_unit (cu, comp_unit_die, dwo_name);
+      if (dwo_unit != NULL)
+	{
+	  if (read_cutu_die_from_dwo (cu, dwo_unit,
+				      comp_unit_die, NULL,
+				      this, &info_ptr,
+				      &dwo_comp_unit_die,
+				      &m_dwo_abbrev_table) == 0)
+	    {
+	      /* Dummy die.  */
+	      dummy_p = true;
+	      return;
+	    }
+	  comp_unit_die = dwo_comp_unit_die;
+	}
+      else
+	{
+	  /* Yikes, we couldn't find the rest of the DIE, we only have
+	     the stub.  A complaint has already been logged.  There's
+	     not much more we can do except pass on the stub DIE to
+	     die_reader_func.  We don't want to throw an error on bad
+	     debug info.  */
+	}
+    }
+}
+
+void
+cutu_reader::keep ()
+{
+  /* Done, clean up.  */
+  gdb_assert (!dummy_p);
+  if (m_new_cu != NULL)
+    {
+      /* Save this dwarf2_cu in the per_objfile.  The per_objfile owns it
+         now.  */
+      dwarf2_per_objfile *per_objfile = m_new_cu->per_objfile;
+      per_objfile->set_cu (m_this_cu, m_new_cu.release ());
+    }
+}
+
+/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name (DW_AT_dwo_name)
+   if present. DWO_FILE, if non-NULL, is the DWO file to read (the caller is
+   assumed to have already done the lookup to find the DWO file).
+
+   The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
+   THIS_CU->is_debug_types, but nothing else.
+
+   We fill in THIS_CU->length.
+
+   THIS_CU->cu is always freed when done.
+   This is done in order to not leave THIS_CU->cu in a state where we have
+   to care whether it refers to the "main" CU or the DWO CU.
+
+   When parent_cu is passed, it is used to provide a default value for
+   str_offsets_base and addr_base from the parent.  */
+
+cutu_reader::cutu_reader (dwarf2_per_cu_data *this_cu,
+			  dwarf2_per_objfile *per_objfile,
+			  struct dwarf2_cu *parent_cu,
+			  struct dwo_file *dwo_file)
+  : die_reader_specs {},
+    m_this_cu (this_cu)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  struct dwarf2_section_info *section = this_cu->section;
+  bfd *abfd = section->get_bfd_owner ();
+  struct dwarf2_section_info *abbrev_section;
+  const gdb_byte *begin_info_ptr, *info_ptr;
+
+  if (dwarf_die_debug)
+    fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
+			this_cu->is_debug_types ? "type" : "comp",
+			sect_offset_str (this_cu->sect_off));
+
+  gdb_assert (per_objfile->get_cu (this_cu) == nullptr);
+
+  abbrev_section = (dwo_file != NULL
+		    ? &dwo_file->sections.abbrev
+		    : get_abbrev_section_for_cu (this_cu));
+
+  /* This is cheap if the section is already read in.  */
+  section->read (objfile);
+
+  m_new_cu.reset (new dwarf2_cu (this_cu, per_objfile));
+
+  begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
+  info_ptr = read_and_check_comp_unit_head (per_objfile, &m_new_cu->header,
+					    section, abbrev_section, info_ptr,
+					    (this_cu->is_debug_types
+					     ? rcuh_kind::TYPE
+					     : rcuh_kind::COMPILE));
+
+  if (parent_cu != nullptr)
+    {
+      m_new_cu->str_offsets_base = parent_cu->str_offsets_base;
+      m_new_cu->addr_base = parent_cu->addr_base;
+    }
+  this_cu->length = m_new_cu->header.get_length ();
+
+  /* Skip dummy compilation units.  */
+  if (info_ptr >= begin_info_ptr + this_cu->length
+      || peek_abbrev_code (abfd, info_ptr) == 0)
+    {
+      dummy_p = true;
+      return;
+    }
+
+  m_abbrev_table_holder
+    = abbrev_table::read (objfile, abbrev_section,
+			  m_new_cu->header.abbrev_sect_off);
+
+  init_cu_die_reader (this, m_new_cu.get (), section, dwo_file,
+		      m_abbrev_table_holder.get ());
+  info_ptr = read_full_die (this, &comp_unit_die, info_ptr);
+}
+
+
+/* Type Unit Groups.
+
+   Type Unit Groups are a way to collapse the set of all TUs (type units) into
+   a more manageable set.  The grouping is done by DW_AT_stmt_list entry
+   so that all types coming from the same compilation (.o file) are grouped
+   together.  A future step could be to put the types in the same symtab as
+   the CU the types ultimately came from.  */
+
+static hashval_t
+hash_type_unit_group (const void *item)
+{
+  const struct type_unit_group *tu_group
+    = (const struct type_unit_group *) item;
+
+  return hash_stmt_list_entry (&tu_group->hash);
+}
+
+static int
+eq_type_unit_group (const void *item_lhs, const void *item_rhs)
+{
+  const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
+  const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
+
+  return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
+}
+
+/* Allocate a hash table for type unit groups.  */
+
+static htab_up
+allocate_type_unit_groups_table ()
+{
+  return htab_up (htab_create_alloc (3,
+				     hash_type_unit_group,
+				     eq_type_unit_group,
+				     NULL, xcalloc, xfree));
+}
+
+/* Type units that don't have DW_AT_stmt_list are grouped into their own
+   partial symtabs.  We combine several TUs per psymtab to not let the size
+   of any one psymtab grow too big.  */
+#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
+#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
+
+/* Helper routine for get_type_unit_group.
+   Create the type_unit_group object used to hold one or more TUs.  */
+
+static struct type_unit_group *
+create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
+  struct dwarf2_per_cu_data *per_cu;
+  struct type_unit_group *tu_group;
+
+  tu_group = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, type_unit_group);
+  per_cu = &tu_group->per_cu;
+  per_cu->per_bfd = per_bfd;
+
+  if (per_bfd->using_index)
+    {
+      per_cu->v.quick = OBSTACK_ZALLOC (&per_bfd->obstack,
+					struct dwarf2_per_cu_quick_data);
+    }
+  else
+    {
+      unsigned int line_offset = to_underlying (line_offset_struct);
+      dwarf2_psymtab *pst;
+      std::string name;
+
+      /* Give the symtab a useful name for debug purposes.  */
+      if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
+	name = string_printf ("<type_units_%d>",
+			      (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
+      else
+	name = string_printf ("<type_units_at_0x%x>", line_offset);
+
+      pst = create_partial_symtab (per_cu, per_objfile, name.c_str ());
+      pst->anonymous = true;
+    }
+
+  tu_group->hash.dwo_unit = cu->dwo_unit;
+  tu_group->hash.line_sect_off = line_offset_struct;
+
+  return tu_group;
+}
+
+/* Look up the type_unit_group for type unit CU, and create it if necessary.
+   STMT_LIST is a DW_AT_stmt_list attribute.  */
+
+static struct type_unit_group *
+get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
+  struct type_unit_group *tu_group;
+  void **slot;
+  unsigned int line_offset;
+  struct type_unit_group type_unit_group_for_lookup;
+
+  if (per_objfile->per_bfd->type_unit_groups == NULL)
+    per_objfile->per_bfd->type_unit_groups = allocate_type_unit_groups_table ();
+
+  /* Do we need to create a new group, or can we use an existing one?  */
+
+  if (stmt_list)
+    {
+      line_offset = DW_UNSND (stmt_list);
+      ++tu_stats->nr_symtab_sharers;
+    }
+  else
+    {
+      /* Ugh, no stmt_list.  Rare, but we have to handle it.
+	 We can do various things here like create one group per TU or
+	 spread them over multiple groups to split up the expansion work.
+	 To avoid worst case scenarios (too many groups or too large groups)
+	 we, umm, group them in bunches.  */
+      line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
+		     | (tu_stats->nr_stmt_less_type_units
+			/ NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
+      ++tu_stats->nr_stmt_less_type_units;
+    }
+
+  type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
+  type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
+  slot = htab_find_slot (per_objfile->per_bfd->type_unit_groups.get (),
+			 &type_unit_group_for_lookup, INSERT);
+  if (*slot != NULL)
+    {
+      tu_group = (struct type_unit_group *) *slot;
+      gdb_assert (tu_group != NULL);
+    }
+  else
+    {
+      sect_offset line_offset_struct = (sect_offset) line_offset;
+      tu_group = create_type_unit_group (cu, line_offset_struct);
+      *slot = tu_group;
+      ++tu_stats->nr_symtabs;
+    }
+
+  return tu_group;
+}
+
+/* Partial symbol tables.  */
+
+/* Create a psymtab named NAME and assign it to PER_CU.
+
+   The caller must fill in the following details:
+   dirname, textlow, texthigh.  */
+
+static dwarf2_psymtab *
+create_partial_symtab (dwarf2_per_cu_data *per_cu,
+		       dwarf2_per_objfile *per_objfile,
+		       const char *name)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  dwarf2_psymtab *pst;
+
+  pst = new dwarf2_psymtab (name, objfile, per_cu);
+
+  pst->psymtabs_addrmap_supported = true;
+
+  /* This is the glue that links PST into GDB's symbol API.  */
+  per_cu->v.psymtab = pst;
+
+  return pst;
+}
+
+/* DIE reader function for process_psymtab_comp_unit.  */
+
+static void
+process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
+				  const gdb_byte *info_ptr,
+				  struct die_info *comp_unit_die,
+				  enum language pretend_language)
+{
+  struct dwarf2_cu *cu = reader->cu;
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  struct dwarf2_per_cu_data *per_cu = cu->per_cu;
+  CORE_ADDR baseaddr;
+  CORE_ADDR best_lowpc = 0, best_highpc = 0;
+  dwarf2_psymtab *pst;
+  enum pc_bounds_kind cu_bounds_kind;
+  const char *filename;
+
+  gdb_assert (! per_cu->is_debug_types);
+
+  prepare_one_comp_unit (cu, comp_unit_die, pretend_language);
+
+  /* Allocate a new partial symbol table structure.  */
+  gdb::unique_xmalloc_ptr<char> debug_filename;
+  static const char artificial[] = "<artificial>";
+  filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
+  if (filename == NULL)
+    filename = "";
+  else if (strcmp (filename, artificial) == 0)
+    {
+      debug_filename.reset (concat (artificial, "@",
+				    sect_offset_str (per_cu->sect_off),
+				    (char *) NULL));
+      filename = debug_filename.get ();
+    }
+
+  pst = create_partial_symtab (per_cu, per_objfile, filename);
+
+  /* This must be done before calling dwarf2_build_include_psymtabs.  */
+  pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
+
+  baseaddr = objfile->text_section_offset ();
+
+  dwarf2_find_base_address (comp_unit_die, cu);
+
+  /* Possibly set the default values of LOWPC and HIGHPC from
+     `DW_AT_ranges'.  */
+  cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
+					 &best_highpc, cu, pst);
+  if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
+    {
+      CORE_ADDR low
+	= (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
+	   - baseaddr);
+      CORE_ADDR high
+	= (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
+	   - baseaddr - 1);
+      /* Store the contiguous range if it is not empty; it can be
+	 empty for CUs with no code.  */
+      addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
+			 low, high, pst);
+    }
+
+  /* Check if comp unit has_children.
+     If so, read the rest of the partial symbols from this comp unit.
+     If not, there's no more debug_info for this comp unit.  */
+  if (comp_unit_die->has_children)
+    {
+      struct partial_die_info *first_die;
+      CORE_ADDR lowpc, highpc;
+
+      lowpc = ((CORE_ADDR) -1);
+      highpc = ((CORE_ADDR) 0);
+
+      first_die = load_partial_dies (reader, info_ptr, 1);
+
+      scan_partial_symbols (first_die, &lowpc, &highpc,
+			    cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
+
+      /* If we didn't find a lowpc, set it to highpc to avoid
+	 complaints from `maint check'.	 */
+      if (lowpc == ((CORE_ADDR) -1))
+	lowpc = highpc;
+
+      /* If the compilation unit didn't have an explicit address range,
+	 then use the information extracted from its child dies.  */
+      if (cu_bounds_kind <= PC_BOUNDS_INVALID)
+	{
+	  best_lowpc = lowpc;
+	  best_highpc = highpc;
+	}
+    }
+  pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
+						 best_lowpc + baseaddr)
+		     - baseaddr);
+  pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
+						  best_highpc + baseaddr)
+		      - baseaddr);
+
+  end_psymtab_common (objfile, pst);
+
+  if (!cu->per_cu->imported_symtabs_empty ())
+    {
+      int i;
+      int len = cu->per_cu->imported_symtabs_size ();
+
+      /* Fill in 'dependencies' here; we fill in 'users' in a
+	 post-pass.  */
+      pst->number_of_dependencies = len;
+      pst->dependencies
+	= objfile->partial_symtabs->allocate_dependencies (len);
+      for (i = 0; i < len; ++i)
+	{
+	  pst->dependencies[i]
+	    = cu->per_cu->imported_symtabs->at (i)->v.psymtab;
+	}
+
+      cu->per_cu->imported_symtabs_free ();
+    }
+
+  /* Get the list of files included in the current compilation unit,
+     and build a psymtab for each of them.  */
+  dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
+
+  if (dwarf_read_debug)
+    fprintf_unfiltered (gdb_stdlog,
+			"Psymtab for %s unit @%s: %s - %s"
+			", %d global, %d static syms\n",
+			per_cu->is_debug_types ? "type" : "comp",
+			sect_offset_str (per_cu->sect_off),
+			paddress (gdbarch, pst->text_low (objfile)),
+			paddress (gdbarch, pst->text_high (objfile)),
+			pst->n_global_syms, pst->n_static_syms);
+}
+
+/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
+   Process compilation unit THIS_CU for a psymtab.  */
+
+static void
+process_psymtab_comp_unit (dwarf2_per_cu_data *this_cu,
+			   dwarf2_per_objfile *per_objfile,
+			   bool want_partial_unit,
+			   enum language pretend_language)
+{
+  /* If this compilation unit was already read in, free the
+     cached copy in order to read it in again.	This is
+     necessary because we skipped some symbols when we first
+     read in the compilation unit (see load_partial_dies).
+     This problem could be avoided, but the benefit is unclear.  */
+  per_objfile->remove_cu (this_cu);
+
+  cutu_reader reader (this_cu, per_objfile, nullptr, nullptr, false);
+
+  switch (reader.comp_unit_die->tag)
+    {
+    case DW_TAG_compile_unit:
+      this_cu->unit_type = DW_UT_compile;
+      break;
+    case DW_TAG_partial_unit:
+      this_cu->unit_type = DW_UT_partial;
+      break;
+    case DW_TAG_type_unit:
+      this_cu->unit_type = DW_UT_type;
+      break;
+    default:
+      abort ();
+    }
+
+  if (reader.dummy_p)
+    {
+      /* Nothing.  */
+    }
+  else if (this_cu->is_debug_types)
+    build_type_psymtabs_reader (&reader, reader.info_ptr,
+				reader.comp_unit_die);
+  else if (want_partial_unit
+	   || reader.comp_unit_die->tag != DW_TAG_partial_unit)
+    process_psymtab_comp_unit_reader (&reader, reader.info_ptr,
+				      reader.comp_unit_die,
+				      pretend_language);
+
+  this_cu->lang = reader.cu->language;
+
+  /* Age out any secondary CUs.  */
+  per_objfile->age_comp_units ();
+}
+
+/* Reader function for build_type_psymtabs.  */
+
+static void
+build_type_psymtabs_reader (const struct die_reader_specs *reader,
+			    const gdb_byte *info_ptr,
+			    struct die_info *type_unit_die)
+{
+  dwarf2_per_objfile *per_objfile = reader->cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct dwarf2_cu *cu = reader->cu;
+  struct dwarf2_per_cu_data *per_cu = cu->per_cu;
+  struct signatured_type *sig_type;
+  struct type_unit_group *tu_group;
+  struct attribute *attr;
+  struct partial_die_info *first_die;
+  CORE_ADDR lowpc, highpc;
+  dwarf2_psymtab *pst;
+
+  gdb_assert (per_cu->is_debug_types);
+  sig_type = (struct signatured_type *) per_cu;
+
+  if (! type_unit_die->has_children)
+    return;
+
+  attr = type_unit_die->attr (DW_AT_stmt_list);
+  tu_group = get_type_unit_group (cu, attr);
+
+  if (tu_group->tus == nullptr)
+    tu_group->tus = new std::vector<signatured_type *>;
+  tu_group->tus->push_back (sig_type);
+
+  prepare_one_comp_unit (cu, type_unit_die, language_minimal);
+  pst = create_partial_symtab (per_cu, per_objfile, "");
+  pst->anonymous = true;
+
+  first_die = load_partial_dies (reader, info_ptr, 1);
+
+  lowpc = (CORE_ADDR) -1;
+  highpc = (CORE_ADDR) 0;
+  scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
+
+  end_psymtab_common (objfile, pst);
+}
+
+/* Struct used to sort TUs by their abbreviation table offset.  */
+
+struct tu_abbrev_offset
+{
+  tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
+  : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
+  {}
+
+  signatured_type *sig_type;
+  sect_offset abbrev_offset;
+};
+
+/* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
+
+static bool
+sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
+			  const struct tu_abbrev_offset &b)
+{
+  return a.abbrev_offset < b.abbrev_offset;
+}
+
+/* Efficiently read all the type units.
+   This does the bulk of the work for build_type_psymtabs.
+
+   The efficiency is because we sort TUs by the abbrev table they use and
+   only read each abbrev table once.  In one program there are 200K TUs
+   sharing 8K abbrev tables.
+
+   The main purpose of this function is to support building the
+   dwarf2_per_objfile->per_bfd->type_unit_groups table.
+   TUs typically share the DW_AT_stmt_list of the CU they came from, so we
+   can collapse the search space by grouping them by stmt_list.
+   The savings can be significant, in the same program from above the 200K TUs
+   share 8K stmt_list tables.
+
+   FUNC is expected to call get_type_unit_group, which will create the
+   struct type_unit_group if necessary and add it to
+   dwarf2_per_objfile->per_bfd->type_unit_groups.  */
+
+static void
+build_type_psymtabs_1 (dwarf2_per_objfile *per_objfile)
+{
+  struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
+  abbrev_table_up abbrev_table;
+  sect_offset abbrev_offset;
+
+  /* It's up to the caller to not call us multiple times.  */
+  gdb_assert (per_objfile->per_bfd->type_unit_groups == NULL);
+
+  if (per_objfile->per_bfd->all_type_units.empty ())
+    return;
+
+  /* TUs typically share abbrev tables, and there can be way more TUs than
+     abbrev tables.  Sort by abbrev table to reduce the number of times we
+     read each abbrev table in.
+     Alternatives are to punt or to maintain a cache of abbrev tables.
+     This is simpler and efficient enough for now.
+
+     Later we group TUs by their DW_AT_stmt_list value (as this defines the
+     symtab to use).  Typically TUs with the same abbrev offset have the same
+     stmt_list value too so in practice this should work well.
+
+     The basic algorithm here is:
+
+      sort TUs by abbrev table
+      for each TU with same abbrev table:
+	read abbrev table if first user
+	read TU top level DIE
+	  [IWBN if DWO skeletons had DW_AT_stmt_list]
+	call FUNC  */
+
+  if (dwarf_read_debug)
+    fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
+
+  /* Sort in a separate table to maintain the order of all_type_units
+     for .gdb_index: TU indices directly index all_type_units.  */
+  std::vector<tu_abbrev_offset> sorted_by_abbrev;
+  sorted_by_abbrev.reserve (per_objfile->per_bfd->all_type_units.size ());
+
+  for (signatured_type *sig_type : per_objfile->per_bfd->all_type_units)
+    sorted_by_abbrev.emplace_back
+      (sig_type, read_abbrev_offset (per_objfile, sig_type->per_cu.section,
+				     sig_type->per_cu.sect_off));
+
+  std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
+	     sort_tu_by_abbrev_offset);
+
+  abbrev_offset = (sect_offset) ~(unsigned) 0;
+
+  for (const tu_abbrev_offset &tu : sorted_by_abbrev)
+    {
+      /* Switch to the next abbrev table if necessary.  */
+      if (abbrev_table == NULL
+	  || tu.abbrev_offset != abbrev_offset)
+	{
+	  abbrev_offset = tu.abbrev_offset;
+	  abbrev_table =
+	    abbrev_table::read (per_objfile->objfile,
+				&per_objfile->per_bfd->abbrev, abbrev_offset);
+	  ++tu_stats->nr_uniq_abbrev_tables;
+	}
+
+      cutu_reader reader (&tu.sig_type->per_cu, per_objfile,
+			  abbrev_table.get (), nullptr, false);
+      if (!reader.dummy_p)
+	build_type_psymtabs_reader (&reader, reader.info_ptr,
+				    reader.comp_unit_die);
+    }
+}
+
+/* Print collected type unit statistics.  */
+
+static void
+print_tu_stats (dwarf2_per_objfile *per_objfile)
+{
+  struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
+
+  fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
+  fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
+		      per_objfile->per_bfd->all_type_units.size ());
+  fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
+		      tu_stats->nr_uniq_abbrev_tables);
+  fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
+		      tu_stats->nr_symtabs);
+  fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
+		      tu_stats->nr_symtab_sharers);
+  fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
+		      tu_stats->nr_stmt_less_type_units);
+  fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
+		      tu_stats->nr_all_type_units_reallocs);
+}
+
+/* Traversal function for build_type_psymtabs.  */
+
+static int
+build_type_psymtab_dependencies (void **slot, void *info)
+{
+  dwarf2_per_objfile *per_objfile = (dwarf2_per_objfile *) info;
+  struct objfile *objfile = per_objfile->objfile;
+  struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
+  struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
+  dwarf2_psymtab *pst = per_cu->v.psymtab;
+  int len = (tu_group->tus == nullptr) ? 0 : tu_group->tus->size ();
+  int i;
+
+  gdb_assert (len > 0);
+  gdb_assert (per_cu->type_unit_group_p ());
+
+  pst->number_of_dependencies = len;
+  pst->dependencies = objfile->partial_symtabs->allocate_dependencies (len);
+  for (i = 0; i < len; ++i)
+    {
+      struct signatured_type *iter = tu_group->tus->at (i);
+      gdb_assert (iter->per_cu.is_debug_types);
+      pst->dependencies[i] = iter->per_cu.v.psymtab;
+      iter->type_unit_group = tu_group;
+    }
+
+  delete tu_group->tus;
+  tu_group->tus = nullptr;
+
+  return 1;
+}
+
+/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
+   Build partial symbol tables for the .debug_types comp-units.  */
+
+static void
+build_type_psymtabs (dwarf2_per_objfile *per_objfile)
+{
+  if (! create_all_type_units (per_objfile))
+    return;
+
+  build_type_psymtabs_1 (per_objfile);
+}
+
+/* Traversal function for process_skeletonless_type_unit.
+   Read a TU in a DWO file and build partial symbols for it.  */
+
+static int
+process_skeletonless_type_unit (void **slot, void *info)
+{
+  struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
+  dwarf2_per_objfile *per_objfile = (dwarf2_per_objfile *) info;
+  struct signatured_type find_entry, *entry;
+
+  /* If this TU doesn't exist in the global table, add it and read it in.  */
+
+  if (per_objfile->per_bfd->signatured_types == NULL)
+    per_objfile->per_bfd->signatured_types = allocate_signatured_type_table ();
+
+  find_entry.signature = dwo_unit->signature;
+  slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
+			 &find_entry, INSERT);
+  /* If we've already seen this type there's nothing to do.  What's happening
+     is we're doing our own version of comdat-folding here.  */
+  if (*slot != NULL)
+    return 1;
+
+  /* This does the job that create_all_type_units would have done for
+     this TU.  */
+  entry = add_type_unit (per_objfile, dwo_unit->signature, slot);
+  fill_in_sig_entry_from_dwo_entry (per_objfile, entry, dwo_unit);
+  *slot = entry;
+
+  /* This does the job that build_type_psymtabs_1 would have done.  */
+  cutu_reader reader (&entry->per_cu, per_objfile, nullptr, nullptr, false);
+  if (!reader.dummy_p)
+    build_type_psymtabs_reader (&reader, reader.info_ptr,
+				reader.comp_unit_die);
+
+  return 1;
+}
+
+/* Traversal function for process_skeletonless_type_units.  */
+
+static int
+process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
+{
+  struct dwo_file *dwo_file = (struct dwo_file *) *slot;
+
+  if (dwo_file->tus != NULL)
+    htab_traverse_noresize (dwo_file->tus.get (),
+			    process_skeletonless_type_unit, info);
+
+  return 1;
+}
+
+/* Scan all TUs of DWO files, verifying we've processed them.
+   This is needed in case a TU was emitted without its skeleton.
+   Note: This can't be done until we know what all the DWO files are.  */
+
+static void
+process_skeletonless_type_units (dwarf2_per_objfile *per_objfile)
+{
+  /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
+  if (get_dwp_file (per_objfile) == NULL
+      && per_objfile->per_bfd->dwo_files != NULL)
+    {
+      htab_traverse_noresize (per_objfile->per_bfd->dwo_files.get (),
+			      process_dwo_file_for_skeletonless_type_units,
+			      per_objfile);
+    }
+}
+
+/* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
+
+static void
+set_partial_user (dwarf2_per_objfile *per_objfile)
+{
+  for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+    {
+      dwarf2_psymtab *pst = per_cu->v.psymtab;
+
+      if (pst == NULL)
+	continue;
+
+      for (int j = 0; j < pst->number_of_dependencies; ++j)
+	{
+	  /* Set the 'user' field only if it is not already set.  */
+	  if (pst->dependencies[j]->user == NULL)
+	    pst->dependencies[j]->user = pst;
+	}
+    }
+}
+
+/* Build the partial symbol table by doing a quick pass through the
+   .debug_info and .debug_abbrev sections.  */
+
+static void
+dwarf2_build_psymtabs_hard (dwarf2_per_objfile *per_objfile)
+{
+  struct objfile *objfile = per_objfile->objfile;
+
+  if (dwarf_read_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
+			  objfile_name (objfile));
+    }
+
+  scoped_restore restore_reading_psyms
+    = make_scoped_restore (&per_objfile->per_bfd->reading_partial_symbols,
+			   true);
+
+  per_objfile->per_bfd->info.read (objfile);
+
+  /* Any cached compilation units will be linked by the per-objfile
+     read_in_chain.  Make sure to free them when we're done.  */
+  free_cached_comp_units freer (per_objfile);
+
+  build_type_psymtabs (per_objfile);
+
+  create_all_comp_units (per_objfile);
+
+  /* Create a temporary address map on a temporary obstack.  We later
+     copy this to the final obstack.  */
+  auto_obstack temp_obstack;
+
+  scoped_restore save_psymtabs_addrmap
+    = make_scoped_restore (&objfile->partial_symtabs->psymtabs_addrmap,
+			   addrmap_create_mutable (&temp_obstack));
+
+  for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
+    {
+      if (per_cu->v.psymtab != NULL)
+	/* In case a forward DW_TAG_imported_unit has read the CU already.  */
+	continue;
+      process_psymtab_comp_unit (per_cu, per_objfile, false,
+				 language_minimal);
+    }
+
+  /* This has to wait until we read the CUs, we need the list of DWOs.  */
+  process_skeletonless_type_units (per_objfile);
+
+  /* Now that all TUs have been processed we can fill in the dependencies.  */
+  if (per_objfile->per_bfd->type_unit_groups != NULL)
+    {
+      htab_traverse_noresize (per_objfile->per_bfd->type_unit_groups.get (),
+			      build_type_psymtab_dependencies, per_objfile);
+    }
+
+  if (dwarf_read_debug)
+    print_tu_stats (per_objfile);
+
+  set_partial_user (per_objfile);
+
+  objfile->partial_symtabs->psymtabs_addrmap
+    = addrmap_create_fixed (objfile->partial_symtabs->psymtabs_addrmap,
+			    objfile->partial_symtabs->obstack ());
+  /* At this point we want to keep the address map.  */
+  save_psymtabs_addrmap.release ();
+
+  if (dwarf_read_debug)
+    fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
+			objfile_name (objfile));
+}
+
+/* Load the partial DIEs for a secondary CU into memory.
+   This is also used when rereading a primary CU with load_all_dies.  */
+
+static void
+load_partial_comp_unit (dwarf2_per_cu_data *this_cu,
+			dwarf2_per_objfile *per_objfile,
+			dwarf2_cu *existing_cu)
+{
+  cutu_reader reader (this_cu, per_objfile, nullptr, existing_cu, false);
+
+  if (!reader.dummy_p)
+    {
+      prepare_one_comp_unit (reader.cu, reader.comp_unit_die,
+			     language_minimal);
+
+      /* Check if comp unit has_children.
+	 If so, read the rest of the partial symbols from this comp unit.
+	 If not, there's no more debug_info for this comp unit.  */
+      if (reader.comp_unit_die->has_children)
+	load_partial_dies (&reader, reader.info_ptr, 0);
+
+      reader.keep ();
+    }
+}
+
+static void
+read_comp_units_from_section (dwarf2_per_objfile *per_objfile,
+			      struct dwarf2_section_info *section,
+			      struct dwarf2_section_info *abbrev_section,
+			      unsigned int is_dwz)
+{
+  const gdb_byte *info_ptr;
+  struct objfile *objfile = per_objfile->objfile;
+
+  if (dwarf_read_debug)
+    fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
+			section->get_name (),
+			section->get_file_name ());
+
+  section->read (objfile);
+
+  info_ptr = section->buffer;
+
+  while (info_ptr < section->buffer + section->size)
+    {
+      struct dwarf2_per_cu_data *this_cu;
+
+      sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
+
+      comp_unit_head cu_header;
+      read_and_check_comp_unit_head (per_objfile, &cu_header, section,
+				     abbrev_section, info_ptr,
+				     rcuh_kind::COMPILE);
+
+      /* Save the compilation unit for later lookup.  */
+      if (cu_header.unit_type != DW_UT_type)
+	this_cu = per_objfile->per_bfd->allocate_per_cu ();
+      else
+	{
+	  auto sig_type = per_objfile->per_bfd->allocate_signatured_type ();
+	  sig_type->signature = cu_header.signature;
+	  sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
+	  this_cu = &sig_type->per_cu;
+	}
+      this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
+      this_cu->sect_off = sect_off;
+      this_cu->length = cu_header.length + cu_header.initial_length_size;
+      this_cu->is_dwz = is_dwz;
+      this_cu->section = section;
+
+      per_objfile->per_bfd->all_comp_units.push_back (this_cu);
+
+      info_ptr = info_ptr + this_cu->length;
+    }
+}
+
+/* Create a list of all compilation units in OBJFILE.
+   This is only done for -readnow and building partial symtabs.  */
+
+static void
+create_all_comp_units (dwarf2_per_objfile *per_objfile)
+{
+  gdb_assert (per_objfile->per_bfd->all_comp_units.empty ());
+  read_comp_units_from_section (per_objfile, &per_objfile->per_bfd->info,
+				&per_objfile->per_bfd->abbrev, 0);
+
+  dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd);
+  if (dwz != NULL)
+    read_comp_units_from_section (per_objfile, &dwz->info, &dwz->abbrev, 1);
+}
+
+/* Process all loaded DIEs for compilation unit CU, starting at
+   FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
+   unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
+   DW_AT_ranges).  See the comments of add_partial_subprogram on how
+   SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
+
+static void
+scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
+		      CORE_ADDR *highpc, int set_addrmap,
+		      struct dwarf2_cu *cu)
+{
+  struct partial_die_info *pdi;
+
+  /* Now, march along the PDI's, descending into ones which have
+     interesting children but skipping the children of the other ones,
+     until we reach the end of the compilation unit.  */
+
+  pdi = first_die;
+
+  while (pdi != NULL)
+    {
+      pdi->fixup (cu);
+
+      /* Anonymous namespaces or modules have no name but have interesting
+	 children, so we need to look at them.  Ditto for anonymous
+	 enums.  */
+
+      if (pdi->raw_name != NULL || pdi->tag == DW_TAG_namespace
+	  || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
+	  || pdi->tag == DW_TAG_imported_unit
+	  || pdi->tag == DW_TAG_inlined_subroutine)
+	{
+	  switch (pdi->tag)
+	    {
+	    case DW_TAG_subprogram:
+	    case DW_TAG_inlined_subroutine:
+	      add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
+	      if (cu->language == language_cplus)
+		scan_partial_symbols (pdi->die_child, lowpc, highpc,
+				      set_addrmap, cu);
+	      break;
+	    case DW_TAG_constant:
+	    case DW_TAG_variable:
+	    case DW_TAG_typedef:
+	    case DW_TAG_union_type:
+	      if (!pdi->is_declaration
+		  || (pdi->tag == DW_TAG_variable && pdi->is_external))
+		{
+		  add_partial_symbol (pdi, cu);
+		}
+	      break;
+	    case DW_TAG_class_type:
+	    case DW_TAG_interface_type:
+	    case DW_TAG_structure_type:
+	      if (!pdi->is_declaration)
+		{
+		  add_partial_symbol (pdi, cu);
+		}
+	      if ((cu->language == language_rust
+		   || cu->language == language_cplus) && pdi->has_children)
+		scan_partial_symbols (pdi->die_child, lowpc, highpc,
+				      set_addrmap, cu);
+	      break;
+	    case DW_TAG_enumeration_type:
+	      if (!pdi->is_declaration)
+		add_partial_enumeration (pdi, cu);
+	      break;
+	    case DW_TAG_base_type:
+            case DW_TAG_subrange_type:
+	      /* File scope base type definitions are added to the partial
+	         symbol table.  */
+	      add_partial_symbol (pdi, cu);
+	      break;
+	    case DW_TAG_namespace:
+	      add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
+	      break;
+	    case DW_TAG_module:
+	      if (!pdi->is_declaration)
+		add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
+	      break;
+	    case DW_TAG_imported_unit:
+	      {
+		struct dwarf2_per_cu_data *per_cu;
+
+		/* For now we don't handle imported units in type units.  */
+		if (cu->per_cu->is_debug_types)
+		  {
+		    error (_("Dwarf Error: DW_TAG_imported_unit is not"
+			     " supported in type units [in module %s]"),
+			   objfile_name (cu->per_objfile->objfile));
+		  }
+
+		per_cu = dwarf2_find_containing_comp_unit
+			   (pdi->d.sect_off, pdi->is_dwz, cu->per_objfile);
+
+		/* Go read the partial unit, if needed.  */
+		if (per_cu->v.psymtab == NULL)
+		  process_psymtab_comp_unit (per_cu, cu->per_objfile, true,
+					     cu->language);
+
+		cu->per_cu->imported_symtabs_push (per_cu);
+	      }
+	      break;
+	    case DW_TAG_imported_declaration:
+	      add_partial_symbol (pdi, cu);
+	      break;
+	    default:
+	      break;
+	    }
+	}
+
+      /* If the die has a sibling, skip to the sibling.  */
+
+      pdi = pdi->die_sibling;
+    }
+}
+
+/* Functions used to compute the fully scoped name of a partial DIE.
+
+   Normally, this is simple.  For C++, the parent DIE's fully scoped
+   name is concatenated with "::" and the partial DIE's name.
+   Enumerators are an exception; they use the scope of their parent
+   enumeration type, i.e. the name of the enumeration type is not
+   prepended to the enumerator.
+
+   There are two complexities.  One is DW_AT_specification; in this
+   case "parent" means the parent of the target of the specification,
+   instead of the direct parent of the DIE.  The other is compilers
+   which do not emit DW_TAG_namespace; in this case we try to guess
+   the fully qualified name of structure types from their members'
+   linkage names.  This must be done using the DIE's children rather
+   than the children of any DW_AT_specification target.  We only need
+   to do this for structures at the top level, i.e. if the target of
+   any DW_AT_specification (if any; otherwise the DIE itself) does not
+   have a parent.  */
+
+/* Compute the scope prefix associated with PDI's parent, in
+   compilation unit CU.  The result will be allocated on CU's
+   comp_unit_obstack, or a copy of the already allocated PDI->NAME
+   field.  NULL is returned if no prefix is necessary.  */
+static const char *
+partial_die_parent_scope (struct partial_die_info *pdi,
+			  struct dwarf2_cu *cu)
+{
+  const char *grandparent_scope;
+  struct partial_die_info *parent, *real_pdi;
+
+  /* We need to look at our parent DIE; if we have a DW_AT_specification,
+     then this means the parent of the specification DIE.  */
+
+  real_pdi = pdi;
+  while (real_pdi->has_specification)
+    {
+      auto res = find_partial_die (real_pdi->spec_offset,
+				   real_pdi->spec_is_dwz, cu);
+      real_pdi = res.pdi;
+      cu = res.cu;
+    }
+
+  parent = real_pdi->die_parent;
+  if (parent == NULL)
+    return NULL;
+
+  if (parent->scope_set)
+    return parent->scope;
+
+  parent->fixup (cu);
+
+  grandparent_scope = partial_die_parent_scope (parent, cu);
+
+  /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
+     DW_TAG_namespace DIEs with a name of "::" for the global namespace.
+     Work around this problem here.  */
+  if (cu->language == language_cplus
+      && parent->tag == DW_TAG_namespace
+      && strcmp (parent->name (cu), "::") == 0
+      && grandparent_scope == NULL)
+    {
+      parent->scope = NULL;
+      parent->scope_set = 1;
+      return NULL;
+    }
+
+  /* Nested subroutines in Fortran get a prefix.  */
+  if (pdi->tag == DW_TAG_enumerator)
+    /* Enumerators should not get the name of the enumeration as a prefix.  */
+    parent->scope = grandparent_scope;
+  else if (parent->tag == DW_TAG_namespace
+      || parent->tag == DW_TAG_module
+      || parent->tag == DW_TAG_structure_type
+      || parent->tag == DW_TAG_class_type
+      || parent->tag == DW_TAG_interface_type
+      || parent->tag == DW_TAG_union_type
+      || parent->tag == DW_TAG_enumeration_type
+      || (cu->language == language_fortran
+	  && parent->tag == DW_TAG_subprogram
+	  && pdi->tag == DW_TAG_subprogram))
+    {
+      if (grandparent_scope == NULL)
+	parent->scope = parent->name (cu);
+      else
+	parent->scope = typename_concat (&cu->comp_unit_obstack,
+					 grandparent_scope,
+					 parent->name (cu), 0, cu);
+    }
+  else
+    {
+      /* FIXME drow/2004-04-01: What should we be doing with
+	 function-local names?  For partial symbols, we should probably be
+	 ignoring them.  */
+      complaint (_("unhandled containing DIE tag %s for DIE at %s"),
+		 dwarf_tag_name (parent->tag),
+		 sect_offset_str (pdi->sect_off));
+      parent->scope = grandparent_scope;
+    }
+
+  parent->scope_set = 1;
+  return parent->scope;
+}
+
+/* Return the fully scoped name associated with PDI, from compilation unit
+   CU.  The result will be allocated with malloc.  */
+
+static gdb::unique_xmalloc_ptr<char>
+partial_die_full_name (struct partial_die_info *pdi,
+		       struct dwarf2_cu *cu)
+{
+  const char *parent_scope;
+
+  /* If this is a template instantiation, we can not work out the
+     template arguments from partial DIEs.  So, unfortunately, we have
+     to go through the full DIEs.  At least any work we do building
+     types here will be reused if full symbols are loaded later.  */
+  if (pdi->has_template_arguments)
+    {
+      pdi->fixup (cu);
+
+      if (pdi->name (cu) != NULL && strchr (pdi->name (cu), '<') == NULL)
+	{
+	  struct die_info *die;
+	  struct attribute attr;
+	  struct dwarf2_cu *ref_cu = cu;
+
+	  /* DW_FORM_ref_addr is using section offset.  */
+	  attr.name = (enum dwarf_attribute) 0;
+	  attr.form = DW_FORM_ref_addr;
+	  attr.u.unsnd = to_underlying (pdi->sect_off);
+	  die = follow_die_ref (NULL, &attr, &ref_cu);
+
+	  return make_unique_xstrdup (dwarf2_full_name (NULL, die, ref_cu));
+	}
+    }
+
+  parent_scope = partial_die_parent_scope (pdi, cu);
+  if (parent_scope == NULL)
+    return NULL;
+  else
+    return gdb::unique_xmalloc_ptr<char> (typename_concat (NULL, parent_scope,
+							   pdi->name (cu),
+							   0, cu));
+}
+
+static void
+add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  CORE_ADDR addr = 0;
+  const char *actual_name = NULL;
+  CORE_ADDR baseaddr;
+
+  baseaddr = objfile->text_section_offset ();
+
+  gdb::unique_xmalloc_ptr<char> built_actual_name
+    = partial_die_full_name (pdi, cu);
+  if (built_actual_name != NULL)
+    actual_name = built_actual_name.get ();
+
+  if (actual_name == NULL)
+    actual_name = pdi->name (cu);
+
+  partial_symbol psymbol;
+  memset (&psymbol, 0, sizeof (psymbol));
+  psymbol.ginfo.set_language (cu->language, &objfile->objfile_obstack);
+  psymbol.ginfo.section = -1;
+
+  /* The code below indicates that the psymbol should be installed by
+     setting this.  */
+  gdb::optional<psymbol_placement> where;
+
+  switch (pdi->tag)
+    {
+    case DW_TAG_inlined_subroutine:
+    case DW_TAG_subprogram:
+      addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
+	      - baseaddr);
+      if (pdi->is_external
+	  || cu->language == language_ada
+	  || (cu->language == language_fortran
+	      && pdi->die_parent != NULL
+	      && pdi->die_parent->tag == DW_TAG_subprogram))
+	{
+          /* Normally, only "external" DIEs are part of the global scope.
+             But in Ada and Fortran, we want to be able to access nested
+             procedures globally.  So all Ada and Fortran subprograms are
+             stored in the global scope.  */
+	  where = psymbol_placement::GLOBAL;
+	}
+      else
+	where = psymbol_placement::STATIC;
+
+      psymbol.domain = VAR_DOMAIN;
+      psymbol.aclass = LOC_BLOCK;
+      psymbol.ginfo.section = SECT_OFF_TEXT (objfile);
+      psymbol.ginfo.value.address = addr;
+
+      if (pdi->main_subprogram && actual_name != NULL)
+	set_objfile_main_name (objfile, actual_name, cu->language);
+      break;
+    case DW_TAG_constant:
+      psymbol.domain = VAR_DOMAIN;
+      psymbol.aclass = LOC_STATIC;
+      where = (pdi->is_external
+	       ? psymbol_placement::GLOBAL
+	       : psymbol_placement::STATIC);
+      break;
+    case DW_TAG_variable:
+      if (pdi->d.locdesc)
+	addr = decode_locdesc (pdi->d.locdesc, cu);
+
+      if (pdi->d.locdesc
+	  && addr == 0
+	  && !per_objfile->per_bfd->has_section_at_zero)
+	{
+	  /* A global or static variable may also have been stripped
+	     out by the linker if unused, in which case its address
+	     will be nullified; do not add such variables into partial
+	     symbol table then.  */
+	}
+      else if (pdi->is_external)
+	{
+	  /* Global Variable.
+	     Don't enter into the minimal symbol tables as there is
+	     a minimal symbol table entry from the ELF symbols already.
+	     Enter into partial symbol table if it has a location
+	     descriptor or a type.
+	     If the location descriptor is missing, new_symbol will create
+	     a LOC_UNRESOLVED symbol, the address of the variable will then
+	     be determined from the minimal symbol table whenever the variable
+	     is referenced.
+	     The address for the partial symbol table entry is not
+	     used by GDB, but it comes in handy for debugging partial symbol
+	     table building.  */
+
+	  if (pdi->d.locdesc || pdi->has_type)
+	    {
+	      psymbol.domain = VAR_DOMAIN;
+	      psymbol.aclass = LOC_STATIC;
+	      psymbol.ginfo.section = SECT_OFF_TEXT (objfile);
+	      psymbol.ginfo.value.address = addr;
+	      where = psymbol_placement::GLOBAL;
+	    }
+	}
+      else
+	{
+	  int has_loc = pdi->d.locdesc != NULL;
+
+	  /* Static Variable.  Skip symbols whose value we cannot know (those
+	     without location descriptors or constant values).  */
+	  if (!has_loc && !pdi->has_const_value)
+	    return;
+
+	  psymbol.domain = VAR_DOMAIN;
+	  psymbol.aclass = LOC_STATIC;
+	  psymbol.ginfo.section = SECT_OFF_TEXT (objfile);
+	  if (has_loc)
+	    psymbol.ginfo.value.address = addr;
+	  where = psymbol_placement::STATIC;
+	}
+      break;
+    case DW_TAG_typedef:
+    case DW_TAG_base_type:
+    case DW_TAG_subrange_type:
+      psymbol.domain = VAR_DOMAIN;
+      psymbol.aclass = LOC_TYPEDEF;
+      where = psymbol_placement::STATIC;
+      break;
+    case DW_TAG_imported_declaration:
+    case DW_TAG_namespace:
+      psymbol.domain = VAR_DOMAIN;
+      psymbol.aclass = LOC_TYPEDEF;
+      where = psymbol_placement::GLOBAL;
+      break;
+    case DW_TAG_module:
+      /* With Fortran 77 there might be a "BLOCK DATA" module
+         available without any name.  If so, we skip the module as it
+         doesn't bring any value.  */
+      if (actual_name != nullptr)
+	{
+	  psymbol.domain = MODULE_DOMAIN;
+	  psymbol.aclass = LOC_TYPEDEF;
+	  where = psymbol_placement::GLOBAL;
+	}
+      break;
+    case DW_TAG_class_type:
+    case DW_TAG_interface_type:
+    case DW_TAG_structure_type:
+    case DW_TAG_union_type:
+    case DW_TAG_enumeration_type:
+      /* Skip external references.  The DWARF standard says in the section
+         about "Structure, Union, and Class Type Entries": "An incomplete
+         structure, union or class type is represented by a structure,
+         union or class entry that does not have a byte size attribute
+         and that has a DW_AT_declaration attribute."  */
+      if (!pdi->has_byte_size && pdi->is_declaration)
+	return;
+
+      /* NOTE: carlton/2003-10-07: See comment in new_symbol about
+	 static vs. global.  */
+      psymbol.domain = STRUCT_DOMAIN;
+      psymbol.aclass = LOC_TYPEDEF;
+      where = (cu->language == language_cplus
+	       ? psymbol_placement::GLOBAL
+	       : psymbol_placement::STATIC);
+      break;
+    case DW_TAG_enumerator:
+      psymbol.domain = VAR_DOMAIN;
+      psymbol.aclass = LOC_CONST;
+      where = (cu->language == language_cplus
+	       ? psymbol_placement::GLOBAL
+	       : psymbol_placement::STATIC);
+      break;
+    default:
+      break;
+    }
+
+  if (where.has_value ())
+    {
+      if (built_actual_name != nullptr)
+	actual_name = objfile->intern (actual_name);
+      if (pdi->linkage_name == nullptr || cu->language == language_ada)
+	psymbol.ginfo.set_linkage_name (actual_name);
+      else
+	{
+	  psymbol.ginfo.set_demangled_name (actual_name,
+					    &objfile->objfile_obstack);
+	  psymbol.ginfo.set_linkage_name (pdi->linkage_name);
+	}
+      add_psymbol_to_list (psymbol, *where, objfile);
+    }
+}
+
+/* Read a partial die corresponding to a namespace; also, add a symbol
+   corresponding to that namespace to the symbol table.  NAMESPACE is
+   the name of the enclosing namespace.  */
+
+static void
+add_partial_namespace (struct partial_die_info *pdi,
+		       CORE_ADDR *lowpc, CORE_ADDR *highpc,
+		       int set_addrmap, struct dwarf2_cu *cu)
+{
+  /* Add a symbol for the namespace.  */
+
+  add_partial_symbol (pdi, cu);
+
+  /* Now scan partial symbols in that namespace.  */
+
+  if (pdi->has_children)
+    scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
+}
+
+/* Read a partial die corresponding to a Fortran module.  */
+
+static void
+add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
+		    CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
+{
+  /* Add a symbol for the namespace.  */
+
+  add_partial_symbol (pdi, cu);
+
+  /* Now scan partial symbols in that module.  */
+
+  if (pdi->has_children)
+    scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
+}
+
+/* Read a partial die corresponding to a subprogram or an inlined
+   subprogram and create a partial symbol for that subprogram.
+   When the CU language allows it, this routine also defines a partial
+   symbol for each nested subprogram that this subprogram contains.
+   If SET_ADDRMAP is true, record the covered ranges in the addrmap.
+   Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
+
+   PDI may also be a lexical block, in which case we simply search
+   recursively for subprograms defined inside that lexical block.
+   Again, this is only performed when the CU language allows this
+   type of definitions.  */
+
+static void
+add_partial_subprogram (struct partial_die_info *pdi,
+			CORE_ADDR *lowpc, CORE_ADDR *highpc,
+			int set_addrmap, struct dwarf2_cu *cu)
+{
+  if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
+    {
+      if (pdi->has_pc_info)
+        {
+          if (pdi->lowpc < *lowpc)
+            *lowpc = pdi->lowpc;
+          if (pdi->highpc > *highpc)
+            *highpc = pdi->highpc;
+	  if (set_addrmap)
+	    {
+	      struct objfile *objfile = cu->per_objfile->objfile;
+	      struct gdbarch *gdbarch = objfile->arch ();
+	      CORE_ADDR baseaddr;
+	      CORE_ADDR this_highpc;
+	      CORE_ADDR this_lowpc;
+
+	      baseaddr = objfile->text_section_offset ();
+	      this_lowpc
+		= (gdbarch_adjust_dwarf2_addr (gdbarch,
+					       pdi->lowpc + baseaddr)
+		   - baseaddr);
+	      this_highpc
+		= (gdbarch_adjust_dwarf2_addr (gdbarch,
+					       pdi->highpc + baseaddr)
+		   - baseaddr);
+	      addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
+				 this_lowpc, this_highpc - 1,
+				 cu->per_cu->v.psymtab);
+	    }
+        }
+
+      if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
+	{
+          if (!pdi->is_declaration)
+	    /* Ignore subprogram DIEs that do not have a name, they are
+	       illegal.  Do not emit a complaint at this point, we will
+	       do so when we convert this psymtab into a symtab.  */
+	    if (pdi->name (cu))
+	      add_partial_symbol (pdi, cu);
+        }
+    }
+
+  if (! pdi->has_children)
+    return;
+
+  if (cu->language == language_ada || cu->language == language_fortran)
+    {
+      pdi = pdi->die_child;
+      while (pdi != NULL)
+	{
+	  pdi->fixup (cu);
+	  if (pdi->tag == DW_TAG_subprogram
+	      || pdi->tag == DW_TAG_inlined_subroutine
+	      || pdi->tag == DW_TAG_lexical_block)
+	    add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
+	  pdi = pdi->die_sibling;
+	}
+    }
+}
+
+/* Read a partial die corresponding to an enumeration type.  */
+
+static void
+add_partial_enumeration (struct partial_die_info *enum_pdi,
+			 struct dwarf2_cu *cu)
+{
+  struct partial_die_info *pdi;
+
+  if (enum_pdi->name (cu) != NULL)
+    add_partial_symbol (enum_pdi, cu);
+
+  pdi = enum_pdi->die_child;
+  while (pdi)
+    {
+      if (pdi->tag != DW_TAG_enumerator || pdi->raw_name == NULL)
+	complaint (_("malformed enumerator DIE ignored"));
+      else
+	add_partial_symbol (pdi, cu);
+      pdi = pdi->die_sibling;
+    }
+}
+
+/* Return the initial uleb128 in the die at INFO_PTR.  */
+
+static unsigned int
+peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
+{
+  unsigned int bytes_read;
+
+  return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
+}
+
+/* Read the initial uleb128 in the die at INFO_PTR in compilation unit
+   READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
+
+   Return the corresponding abbrev, or NULL if the number is zero (indicating
+   an empty DIE).  In either case *BYTES_READ will be set to the length of
+   the initial number.  */
+
+static struct abbrev_info *
+peek_die_abbrev (const die_reader_specs &reader,
+		 const gdb_byte *info_ptr, unsigned int *bytes_read)
+{
+  dwarf2_cu *cu = reader.cu;
+  bfd *abfd = cu->per_objfile->objfile->obfd;
+  unsigned int abbrev_number
+    = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
+
+  if (abbrev_number == 0)
+    return NULL;
+
+  abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
+  if (!abbrev)
+    {
+      error (_("Dwarf Error: Could not find abbrev number %d in %s"
+	       " at offset %s [in module %s]"),
+	     abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
+	     sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
+    }
+
+  return abbrev;
+}
+
+/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
+   Returns a pointer to the end of a series of DIEs, terminated by an empty
+   DIE.  Any children of the skipped DIEs will also be skipped.  */
+
+static const gdb_byte *
+skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
+{
+  while (1)
+    {
+      unsigned int bytes_read;
+      abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
+
+      if (abbrev == NULL)
+	return info_ptr + bytes_read;
+      else
+	info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
+    }
+}
+
+/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
+   INFO_PTR should point just after the initial uleb128 of a DIE, and the
+   abbrev corresponding to that skipped uleb128 should be passed in
+   ABBREV.  Returns a pointer to this DIE's sibling, skipping any
+   children.  */
+
+static const gdb_byte *
+skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
+	      struct abbrev_info *abbrev)
+{
+  unsigned int bytes_read;
+  struct attribute attr;
+  bfd *abfd = reader->abfd;
+  struct dwarf2_cu *cu = reader->cu;
+  const gdb_byte *buffer = reader->buffer;
+  const gdb_byte *buffer_end = reader->buffer_end;
+  unsigned int form, i;
+
+  for (i = 0; i < abbrev->num_attrs; i++)
+    {
+      /* The only abbrev we care about is DW_AT_sibling.  */
+      if (abbrev->attrs[i].name == DW_AT_sibling)
+	{
+	  bool ignored;
+	  read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr,
+			  &ignored);
+	  if (attr.form == DW_FORM_ref_addr)
+	    complaint (_("ignoring absolute DW_AT_sibling"));
+	  else
+	    {
+	      sect_offset off = attr.get_ref_die_offset ();
+	      const gdb_byte *sibling_ptr = buffer + to_underlying (off);
+
+	      if (sibling_ptr < info_ptr)
+		complaint (_("DW_AT_sibling points backwards"));
+	      else if (sibling_ptr > reader->buffer_end)
+		reader->die_section->overflow_complaint ();
+	      else
+		return sibling_ptr;
+	    }
+	}
+
+      /* If it isn't DW_AT_sibling, skip this attribute.  */
+      form = abbrev->attrs[i].form;
+    skip_attribute:
+      switch (form)
+	{
+	case DW_FORM_ref_addr:
+	  /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
+	     and later it is offset sized.  */
+	  if (cu->header.version == 2)
+	    info_ptr += cu->header.addr_size;
+	  else
+	    info_ptr += cu->header.offset_size;
+	  break;
+	case DW_FORM_GNU_ref_alt:
+	  info_ptr += cu->header.offset_size;
+	  break;
+	case DW_FORM_addr:
+	  info_ptr += cu->header.addr_size;
+	  break;
+	case DW_FORM_data1:
+	case DW_FORM_ref1:
+	case DW_FORM_flag:
+	case DW_FORM_strx1:
+	  info_ptr += 1;
+	  break;
+	case DW_FORM_flag_present:
+	case DW_FORM_implicit_const:
+	  break;
+	case DW_FORM_data2:
+	case DW_FORM_ref2:
+	case DW_FORM_strx2:
+	  info_ptr += 2;
+	  break;
+	case DW_FORM_strx3:
+	  info_ptr += 3;
+	  break;
+	case DW_FORM_data4:
+	case DW_FORM_ref4:
+	case DW_FORM_strx4:
+	  info_ptr += 4;
+	  break;
+	case DW_FORM_data8:
+	case DW_FORM_ref8:
+	case DW_FORM_ref_sig8:
+	  info_ptr += 8;
+	  break;
+	case DW_FORM_data16:
+	  info_ptr += 16;
+	  break;
+	case DW_FORM_string:
+	  read_direct_string (abfd, info_ptr, &bytes_read);
+	  info_ptr += bytes_read;
+	  break;
+	case DW_FORM_sec_offset:
+	case DW_FORM_strp:
+	case DW_FORM_GNU_strp_alt:
+	  info_ptr += cu->header.offset_size;
+	  break;
+	case DW_FORM_exprloc:
+	case DW_FORM_block:
+	  info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
+	  info_ptr += bytes_read;
+	  break;
+	case DW_FORM_block1:
+	  info_ptr += 1 + read_1_byte (abfd, info_ptr);
+	  break;
+	case DW_FORM_block2:
+	  info_ptr += 2 + read_2_bytes (abfd, info_ptr);
+	  break;
+	case DW_FORM_block4:
+	  info_ptr += 4 + read_4_bytes (abfd, info_ptr);
+	  break;
+	case DW_FORM_addrx:
+	case DW_FORM_strx:
+	case DW_FORM_sdata:
+	case DW_FORM_udata:
+	case DW_FORM_ref_udata:
+	case DW_FORM_GNU_addr_index:
+	case DW_FORM_GNU_str_index:
+	case DW_FORM_rnglistx:
+	case DW_FORM_loclistx:
+	  info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
+	  break;
+	case DW_FORM_indirect:
+	  form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
+	  info_ptr += bytes_read;
+	  /* We need to continue parsing from here, so just go back to
+	     the top.  */
+	  goto skip_attribute;
+
+	default:
+	  error (_("Dwarf Error: Cannot handle %s "
+		   "in DWARF reader [in module %s]"),
+		 dwarf_form_name (form),
+		 bfd_get_filename (abfd));
+	}
+    }
+
+  if (abbrev->has_children)
+    return skip_children (reader, info_ptr);
+  else
+    return info_ptr;
+}
+
+/* Locate ORIG_PDI's sibling.
+   INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
+
+static const gdb_byte *
+locate_pdi_sibling (const struct die_reader_specs *reader,
+		    struct partial_die_info *orig_pdi,
+		    const gdb_byte *info_ptr)
+{
+  /* Do we know the sibling already?  */
+
+  if (orig_pdi->sibling)
+    return orig_pdi->sibling;
+
+  /* Are there any children to deal with?  */
+
+  if (!orig_pdi->has_children)
+    return info_ptr;
+
+  /* Skip the children the long way.  */
+
+  return skip_children (reader, info_ptr);
+}
+
+/* Expand this partial symbol table into a full symbol table.  SELF is
+   not NULL.  */
+
+void
+dwarf2_psymtab::read_symtab (struct objfile *objfile)
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+
+  gdb_assert (!per_objfile->symtab_set_p (per_cu_data));
+
+  /* If this psymtab is constructed from a debug-only objfile, the
+     has_section_at_zero flag will not necessarily be correct.  We
+     can get the correct value for this flag by looking at the data
+     associated with the (presumably stripped) associated objfile.  */
+  if (objfile->separate_debug_objfile_backlink)
+    {
+      dwarf2_per_objfile *per_objfile_backlink
+	= get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
+
+      per_objfile->per_bfd->has_section_at_zero
+	= per_objfile_backlink->per_bfd->has_section_at_zero;
+    }
+
+  expand_psymtab (objfile);
+
+  process_cu_includes (per_objfile);
+}
+
+/* Reading in full CUs.  */
+
+/* Add PER_CU to the queue.  */
+
+static void
+queue_comp_unit (dwarf2_per_cu_data *per_cu,
+		 dwarf2_per_objfile *per_objfile,
+		 enum language pretend_language)
+{
+  per_cu->queued = 1;
+
+  gdb_assert (per_objfile->per_bfd->queue.has_value ());
+  per_cu->per_bfd->queue->emplace (per_cu, per_objfile, pretend_language);
+}
+
+/* If PER_CU is not yet expanded of queued for expansion, add it to the queue.
+
+   If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
+   dependency.
+
+   Return true if maybe_queue_comp_unit requires the caller to load the CU's
+   DIEs, false otherwise.
+
+   Explanation: there is an invariant that if a CU is queued for expansion
+   (present in `dwarf2_per_bfd::queue`), then its DIEs are loaded
+   (a dwarf2_cu object exists for this CU, and `dwarf2_per_objfile::get_cu`
+   returns non-nullptr).  If the CU gets enqueued by this function but its DIEs
+   are not yet loaded, the the caller must load the CU's DIEs to ensure the
+   invariant is respected.
+
+   The caller is therefore not required to load the CU's DIEs (we return false)
+   if:
+
+     - the CU is already expanded, and therefore does not get enqueued
+     - the CU gets enqueued for expansion, but its DIEs are already loaded
+
+   Note that the caller should not use this function's return value as an
+   indicator of whether the CU's DIEs are loaded right now, it should check
+   that by calling `dwarf2_per_objfile::get_cu` instead.  */
+
+static int
+maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
+		       dwarf2_per_cu_data *per_cu,
+		       dwarf2_per_objfile *per_objfile,
+		       enum language pretend_language)
+{
+  /* We may arrive here during partial symbol reading, if we need full
+     DIEs to process an unusual case (e.g. template arguments).  Do
+     not queue PER_CU, just tell our caller to load its DIEs.  */
+  if (per_cu->per_bfd->reading_partial_symbols)
+    {
+      dwarf2_cu *cu = per_objfile->get_cu (per_cu);
+
+      if (cu == NULL || cu->dies == NULL)
+	return 1;
+      return 0;
+    }
+
+  /* Mark the dependence relation so that we don't flush PER_CU
+     too early.  */
+  if (dependent_cu != NULL)
+    dwarf2_add_dependence (dependent_cu, per_cu);
+
+  /* If it's already on the queue, we have nothing to do.  */
+  if (per_cu->queued)
+    {
+      /* Verify the invariant that if a CU is queued for expansion, its DIEs are
+	 loaded.  */
+      gdb_assert (per_objfile->get_cu (per_cu) != nullptr);
+
+      /* If the CU is queued for expansion, it should not already be
+	 expanded.  */
+      gdb_assert (!per_objfile->symtab_set_p (per_cu));
+
+      /* The DIEs are already loaded, the caller doesn't need to do it.  */
+      return 0;
+    }
+
+  bool queued = false;
+  if (!per_objfile->symtab_set_p (per_cu))
+    {
+      /* Add it to the queue.  */
+      queue_comp_unit (per_cu, per_objfile,  pretend_language);
+      queued = true;
+    }
+
+  /* If the compilation unit is already loaded, just mark it as
+     used.  */
+  dwarf2_cu *cu = per_objfile->get_cu (per_cu);
+  if (cu != nullptr)
+    cu->last_used = 0;
+
+  /* Ask the caller to load the CU's DIEs if the CU got enqueued for expansion
+     and the DIEs are not already loaded.  */
+  return queued && cu == nullptr;
+}
+
+/* Process the queue.  */
+
+static void
+process_queue (dwarf2_per_objfile *per_objfile)
+{
+  if (dwarf_read_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+			  "Expanding one or more symtabs of objfile %s ...\n",
+			  objfile_name (per_objfile->objfile));
+    }
+
+  /* The queue starts out with one item, but following a DIE reference
+     may load a new CU, adding it to the end of the queue.  */
+  while (!per_objfile->per_bfd->queue->empty ())
+    {
+      dwarf2_queue_item &item = per_objfile->per_bfd->queue->front ();
+      dwarf2_per_cu_data *per_cu = item.per_cu;
+
+      if (!per_objfile->symtab_set_p (per_cu))
+	{
+	  dwarf2_cu *cu = per_objfile->get_cu (per_cu);
+
+	  /* Skip dummy CUs.  */
+	  if (cu != nullptr)
+	    {
+	      unsigned int debug_print_threshold;
+	      char buf[100];
+
+	      if (per_cu->is_debug_types)
+		{
+		  struct signatured_type *sig_type =
+		    (struct signatured_type *) per_cu;
+
+		  sprintf (buf, "TU %s at offset %s",
+			   hex_string (sig_type->signature),
+			   sect_offset_str (per_cu->sect_off));
+		  /* There can be 100s of TUs.
+		     Only print them in verbose mode.  */
+		  debug_print_threshold = 2;
+		}
+	      else
+		{
+		  sprintf (buf, "CU at offset %s",
+			   sect_offset_str (per_cu->sect_off));
+		  debug_print_threshold = 1;
+		}
+
+	      if (dwarf_read_debug >= debug_print_threshold)
+		fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
+
+	      if (per_cu->is_debug_types)
+		process_full_type_unit (cu, item.pretend_language);
+	      else
+		process_full_comp_unit (cu, item.pretend_language);
+
+	      if (dwarf_read_debug >= debug_print_threshold)
+		fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
+	    }
+	}
+
+      per_cu->queued = 0;
+      per_objfile->per_bfd->queue->pop ();
+    }
+
+  if (dwarf_read_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
+			  objfile_name (per_objfile->objfile));
+    }
+}
+
+/* Read in full symbols for PST, and anything it depends on.  */
+
+void
+dwarf2_psymtab::expand_psymtab (struct objfile *objfile)
+{
+  gdb_assert (!readin_p (objfile));
+
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  free_cached_comp_units freer (per_objfile);
+  expand_dependencies (objfile);
+
+  dw2_do_instantiate_symtab (per_cu_data, per_objfile, false);
+  gdb_assert (get_compunit_symtab (objfile) != nullptr);
+}
+
+/* See psympriv.h.  */
+
+bool
+dwarf2_psymtab::readin_p (struct objfile *objfile) const
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  return per_objfile->symtab_set_p (per_cu_data);
+}
+
+/* See psympriv.h.  */
+
+compunit_symtab *
+dwarf2_psymtab::get_compunit_symtab (struct objfile *objfile) const
+{
+  dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
+  return per_objfile->get_symtab (per_cu_data);
+}
+
+/* Trivial hash function for die_info: the hash value of a DIE
+   is its offset in .debug_info for this objfile.  */
+
+static hashval_t
+die_hash (const void *item)
+{
+  const struct die_info *die = (const struct die_info *) item;
+
+  return to_underlying (die->sect_off);
+}
+
+/* Trivial comparison function for die_info structures: two DIEs
+   are equal if they have the same offset.  */
+
+static int
+die_eq (const void *item_lhs, const void *item_rhs)
+{
+  const struct die_info *die_lhs = (const struct die_info *) item_lhs;
+  const struct die_info *die_rhs = (const struct die_info *) item_rhs;
+
+  return die_lhs->sect_off == die_rhs->sect_off;
+}
+
+/* Load the DIEs associated with PER_CU into memory.
+
+   In some cases, the caller, while reading partial symbols, will need to load
+   the full symbols for the CU for some reason.  It will already have a
+   dwarf2_cu object for THIS_CU and pass it as EXISTING_CU, so it can be re-used
+   rather than creating a new one.  */
+
+static void
+load_full_comp_unit (dwarf2_per_cu_data *this_cu,
+		     dwarf2_per_objfile *per_objfile,
+		     dwarf2_cu *existing_cu,
+		     bool skip_partial,
+		     enum language pretend_language)
+{
+  gdb_assert (! this_cu->is_debug_types);
+
+  cutu_reader reader (this_cu, per_objfile, NULL, existing_cu, skip_partial);
+  if (reader.dummy_p)
+    return;
+
+  struct dwarf2_cu *cu = reader.cu;
+  const gdb_byte *info_ptr = reader.info_ptr;
+
+  gdb_assert (cu->die_hash == NULL);
+  cu->die_hash =
+    htab_create_alloc_ex (cu->header.length / 12,
+			  die_hash,
+			  die_eq,
+			  NULL,
+			  &cu->comp_unit_obstack,
+			  hashtab_obstack_allocate,
+			  dummy_obstack_deallocate);
+
+  if (reader.comp_unit_die->has_children)
+    reader.comp_unit_die->child
+      = read_die_and_siblings (&reader, reader.info_ptr,
+			       &info_ptr, reader.comp_unit_die);
+  cu->dies = reader.comp_unit_die;
+  /* comp_unit_die is not stored in die_hash, no need.  */
+
+  /* We try not to read any attributes in this function, because not
+     all CUs needed for references have been loaded yet, and symbol
+     table processing isn't initialized.  But we have to set the CU language,
+     or we won't be able to build types correctly.
+     Similarly, if we do not read the producer, we can not apply
+     producer-specific interpretation.  */
+  prepare_one_comp_unit (cu, cu->dies, pretend_language);
+
+  reader.keep ();
+}
+
+/* Add a DIE to the delayed physname list.  */
+
+static void
+add_to_method_list (struct type *type, int fnfield_index, int index,
+		    const char *name, struct die_info *die,
+		    struct dwarf2_cu *cu)
+{
+  struct delayed_method_info mi;
+  mi.type = type;
+  mi.fnfield_index = fnfield_index;
+  mi.index = index;
+  mi.name = name;
+  mi.die = die;
+  cu->method_list.push_back (mi);
+}
+
+/* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
+   "const" / "volatile".  If so, decrements LEN by the length of the
+   modifier and return true.  Otherwise return false.  */
+
+template<size_t N>
+static bool
+check_modifier (const char *physname, size_t &len, const char (&mod)[N])
+{
+  size_t mod_len = sizeof (mod) - 1;
+  if (len > mod_len && startswith (physname + (len - mod_len), mod))
+    {
+      len -= mod_len;
+      return true;
+    }
+  return false;
+}
+
+/* Compute the physnames of any methods on the CU's method list.
+
+   The computation of method physnames is delayed in order to avoid the
+   (bad) condition that one of the method's formal parameters is of an as yet
+   incomplete type.  */
+
+static void
+compute_delayed_physnames (struct dwarf2_cu *cu)
+{
+  /* Only C++ delays computing physnames.  */
+  if (cu->method_list.empty ())
+    return;
+  gdb_assert (cu->language == language_cplus);
+
+  for (const delayed_method_info &mi : cu->method_list)
+    {
+      const char *physname;
+      struct fn_fieldlist *fn_flp
+	= &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
+      physname = dwarf2_physname (mi.name, mi.die, cu);
+      TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
+	= physname ? physname : "";
+
+      /* Since there's no tag to indicate whether a method is a
+	 const/volatile overload, extract that information out of the
+	 demangled name.  */
+      if (physname != NULL)
+	{
+	  size_t len = strlen (physname);
+
+	  while (1)
+	    {
+	      if (physname[len] == ')') /* shortcut */
+		break;
+	      else if (check_modifier (physname, len, " const"))
+		TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
+	      else if (check_modifier (physname, len, " volatile"))
+		TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
+	      else
+		break;
+	    }
+	}
+    }
+
+  /* The list is no longer needed.  */
+  cu->method_list.clear ();
+}
+
+/* Go objects should be embedded in a DW_TAG_module DIE,
+   and it's not clear if/how imported objects will appear.
+   To keep Go support simple until that's worked out,
+   go back through what we've read and create something usable.
+   We could do this while processing each DIE, and feels kinda cleaner,
+   but that way is more invasive.
+   This is to, for example, allow the user to type "p var" or "b main"
+   without having to specify the package name, and allow lookups
+   of module.object to work in contexts that use the expression
+   parser.  */
+
+static void
+fixup_go_packaging (struct dwarf2_cu *cu)
+{
+  gdb::unique_xmalloc_ptr<char> package_name;
+  struct pending *list;
+  int i;
+
+  for (list = *cu->get_builder ()->get_global_symbols ();
+       list != NULL;
+       list = list->next)
+    {
+      for (i = 0; i < list->nsyms; ++i)
+	{
+	  struct symbol *sym = list->symbol[i];
+
+	  if (sym->language () == language_go
+	      && SYMBOL_CLASS (sym) == LOC_BLOCK)
+	    {
+	      gdb::unique_xmalloc_ptr<char> this_package_name
+		(go_symbol_package_name (sym));
+
+	      if (this_package_name == NULL)
+		continue;
+	      if (package_name == NULL)
+		package_name = std::move (this_package_name);
+	      else
+		{
+		  struct objfile *objfile = cu->per_objfile->objfile;
+		  if (strcmp (package_name.get (), this_package_name.get ()) != 0)
+		    complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
+			       (symbol_symtab (sym) != NULL
+				? symtab_to_filename_for_display
+				    (symbol_symtab (sym))
+				: objfile_name (objfile)),
+			       this_package_name.get (), package_name.get ());
+		}
+	    }
+	}
+    }
+
+  if (package_name != NULL)
+    {
+      struct objfile *objfile = cu->per_objfile->objfile;
+      const char *saved_package_name = objfile->intern (package_name.get ());
+      struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
+				     saved_package_name);
+      struct symbol *sym;
+
+      sym = new (&objfile->objfile_obstack) symbol;
+      sym->set_language (language_go, &objfile->objfile_obstack);
+      sym->compute_and_set_names (saved_package_name, false, objfile->per_bfd);
+      /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
+	 e.g., "main" finds the "main" module and not C's main().  */
+      SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
+      SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
+      SYMBOL_TYPE (sym) = type;
+
+      add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
+    }
+}
+
+/* Allocate a fully-qualified name consisting of the two parts on the
+   obstack.  */
+
+static const char *
+rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
+{
+  return obconcat (obstack, p1, "::", p2, (char *) NULL);
+}
+
+/* A helper that allocates a variant part to attach to a Rust enum
+   type.  OBSTACK is where the results should be allocated.  TYPE is
+   the type we're processing.  DISCRIMINANT_INDEX is the index of the
+   discriminant.  It must be the index of one of the fields of TYPE,
+   or -1 to mean there is no discriminant (univariant enum).
+   DEFAULT_INDEX is the index of the default field; or -1 if there is
+   no default.  RANGES is indexed by "effective" field number (the
+   field index, but omitting the discriminant and default fields) and
+   must hold the discriminant values used by the variants.  Note that
+   RANGES must have a lifetime at least as long as OBSTACK -- either
+   already allocated on it, or static.  */
+
+static void
+alloc_rust_variant (struct obstack *obstack, struct type *type,
+		    int discriminant_index, int default_index,
+		    gdb::array_view<discriminant_range> ranges)
+{
+  /* When DISCRIMINANT_INDEX == -1, we have a univariant enum.  */
+  gdb_assert (discriminant_index == -1
+	      || (discriminant_index >= 0
+		  && discriminant_index < type->num_fields ()));
+  gdb_assert (default_index == -1
+	      || (default_index >= 0 && default_index < type->num_fields ()));
+
+  /* We have one variant for each non-discriminant field.  */
+  int n_variants = type->num_fields ();
+  if (discriminant_index != -1)
+    --n_variants;
+
+  variant *variants = new (obstack) variant[n_variants];
+  int var_idx = 0;
+  int range_idx = 0;
+  for (int i = 0; i < type->num_fields (); ++i)
+    {
+      if (i == discriminant_index)
+	continue;
+
+      variants[var_idx].first_field = i;
+      variants[var_idx].last_field = i + 1;
+
+      /* The default field does not need a range, but other fields do.
+	 We skipped the discriminant above.  */
+      if (i != default_index)
+	{
+	  variants[var_idx].discriminants = ranges.slice (range_idx, 1);
+	  ++range_idx;
+	}
+
+      ++var_idx;
+    }
+
+  gdb_assert (range_idx == ranges.size ());
+  gdb_assert (var_idx == n_variants);
+
+  variant_part *part = new (obstack) variant_part;
+  part->discriminant_index = discriminant_index;
+  /* If there is no discriminant, then whether it is signed is of no
+     consequence.  */
+  part->is_unsigned
+    = (discriminant_index == -1
+       ? false
+       : TYPE_UNSIGNED (type->field (discriminant_index).type ()));
+  part->variants = gdb::array_view<variant> (variants, n_variants);
+
+  void *storage = obstack_alloc (obstack, sizeof (gdb::array_view<variant_part>));
+  gdb::array_view<variant_part> *prop_value
+    = new (storage) gdb::array_view<variant_part> (part, 1);
+
+  struct dynamic_prop prop;
+  prop.set_variant_parts (prop_value);
+
+  type->add_dyn_prop (DYN_PROP_VARIANT_PARTS, prop);
+}
+
+/* Some versions of rustc emitted enums in an unusual way.
+
+   Ordinary enums were emitted as unions.  The first element of each
+   structure in the union was named "RUST$ENUM$DISR".  This element
+   held the discriminant.
+
+   These versions of Rust also implemented the "non-zero"
+   optimization.  When the enum had two values, and one is empty and
+   the other holds a pointer that cannot be zero, the pointer is used
+   as the discriminant, with a zero value meaning the empty variant.
+   Here, the union's first member is of the form
+   RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
+   where the fieldnos are the indices of the fields that should be
+   traversed in order to find the field (which may be several fields deep)
+   and the variantname is the name of the variant of the case when the
+   field is zero.
+
+   This function recognizes whether TYPE is of one of these forms,
+   and, if so, smashes it to be a variant type.  */
+
+static void
+quirk_rust_enum (struct type *type, struct objfile *objfile)
+{
+  gdb_assert (type->code () == TYPE_CODE_UNION);
+
+  /* We don't need to deal with empty enums.  */
+  if (type->num_fields () == 0)
+    return;
+
+#define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
+  if (type->num_fields () == 1
+      && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
+    {
+      const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
+
+      /* Decode the field name to find the offset of the
+	 discriminant.  */
+      ULONGEST bit_offset = 0;
+      struct type *field_type = type->field (0).type ();
+      while (name[0] >= '0' && name[0] <= '9')
+	{
+	  char *tail;
+	  unsigned long index = strtoul (name, &tail, 10);
+	  name = tail;
+	  if (*name != '$'
+	      || index >= field_type->num_fields ()
+	      || (TYPE_FIELD_LOC_KIND (field_type, index)
+		  != FIELD_LOC_KIND_BITPOS))
+	    {
+	      complaint (_("Could not parse Rust enum encoding string \"%s\""
+			   "[in module %s]"),
+			 TYPE_FIELD_NAME (type, 0),
+			 objfile_name (objfile));
+	      return;
+	    }
+	  ++name;
+
+	  bit_offset += TYPE_FIELD_BITPOS (field_type, index);
+	  field_type = field_type->field (index).type ();
+	}
+
+      /* Smash this type to be a structure type.  We have to do this
+	 because the type has already been recorded.  */
+      type->set_code (TYPE_CODE_STRUCT);
+      type->set_num_fields (3);
+      /* Save the field we care about.  */
+      struct field saved_field = type->field (0);
+      type->set_fields
+	((struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field)));
+
+      /* Put the discriminant at index 0.  */
+      type->field (0).set_type (field_type);
+      TYPE_FIELD_ARTIFICIAL (type, 0) = 1;
+      TYPE_FIELD_NAME (type, 0) = "<<discriminant>>";
+      SET_FIELD_BITPOS (type->field (0), bit_offset);
+
+      /* The order of fields doesn't really matter, so put the real
+	 field at index 1 and the data-less field at index 2.  */
+      type->field (1) = saved_field;
+      TYPE_FIELD_NAME (type, 1)
+	= rust_last_path_segment (type->field (1).type ()->name ());
+      type->field (1).type ()->set_name
+	(rust_fully_qualify (&objfile->objfile_obstack, type->name (),
+			     TYPE_FIELD_NAME (type, 1)));
+
+      const char *dataless_name
+	= rust_fully_qualify (&objfile->objfile_obstack, type->name (),
+			      name);
+      struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
+					      dataless_name);
+      type->field (2).set_type (dataless_type);
+      /* NAME points into the original discriminant name, which
+	 already has the correct lifetime.  */
+      TYPE_FIELD_NAME (type, 2) = name;
+      SET_FIELD_BITPOS (type->field (2), 0);
+
+      /* Indicate that this is a variant type.  */
+      static discriminant_range ranges[1] = { { 0, 0 } };
+      alloc_rust_variant (&objfile->objfile_obstack, type, 0, 1, ranges);
+    }
+  /* A union with a single anonymous field is probably an old-style
+     univariant enum.  */
+  else if (type->num_fields () == 1 && streq (TYPE_FIELD_NAME (type, 0), ""))
+    {
+      /* Smash this type to be a structure type.  We have to do this
+	 because the type has already been recorded.  */
+      type->set_code (TYPE_CODE_STRUCT);
+
+      struct type *field_type = type->field (0).type ();
+      const char *variant_name
+	= rust_last_path_segment (field_type->name ());
+      TYPE_FIELD_NAME (type, 0) = variant_name;
+      field_type->set_name
+	(rust_fully_qualify (&objfile->objfile_obstack,
+			     type->name (), variant_name));
+
+      alloc_rust_variant (&objfile->objfile_obstack, type, -1, 0, {});
+    }
+  else
+    {
+      struct type *disr_type = nullptr;
+      for (int i = 0; i < type->num_fields (); ++i)
+	{
+	  disr_type = type->field (i).type ();
+
+	  if (disr_type->code () != TYPE_CODE_STRUCT)
+	    {
+	      /* All fields of a true enum will be structs.  */
+	      return;
+	    }
+	  else if (disr_type->num_fields () == 0)
+	    {
+	      /* Could be data-less variant, so keep going.  */
+	      disr_type = nullptr;
+	    }
+	  else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
+			   "RUST$ENUM$DISR") != 0)
+	    {
+	      /* Not a Rust enum.  */
+	      return;
+	    }
+	  else
+	    {
+	      /* Found one.  */
+	      break;
+	    }
+	}
+
+      /* If we got here without a discriminant, then it's probably
+	 just a union.  */
+      if (disr_type == nullptr)
+	return;
+
+      /* Smash this type to be a structure type.  We have to do this
+	 because the type has already been recorded.  */
+      type->set_code (TYPE_CODE_STRUCT);
+
+      /* Make space for the discriminant field.  */
+      struct field *disr_field = &disr_type->field (0);
+      field *new_fields
+	= (struct field *) TYPE_ZALLOC (type, ((type->num_fields () + 1)
+					       * sizeof (struct field)));
+      memcpy (new_fields + 1, type->fields (),
+	      type->num_fields () * sizeof (struct field));
+      type->set_fields (new_fields);
+      type->set_num_fields (type->num_fields () + 1);
+
+      /* Install the discriminant at index 0 in the union.  */
+      type->field (0) = *disr_field;
+      TYPE_FIELD_ARTIFICIAL (type, 0) = 1;
+      TYPE_FIELD_NAME (type, 0) = "<<discriminant>>";
+
+      /* We need a way to find the correct discriminant given a
+	 variant name.  For convenience we build a map here.  */
+      struct type *enum_type = disr_field->type ();
+      std::unordered_map<std::string, ULONGEST> discriminant_map;
+      for (int i = 0; i < enum_type->num_fields (); ++i)
+	{
+	  if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
+	    {
+	      const char *name
+		= rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
+	      discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
+	    }
+	}
+
+      int n_fields = type->num_fields ();
+      /* We don't need a range entry for the discriminant, but we do
+	 need one for every other field, as there is no default
+	 variant.  */
+      discriminant_range *ranges = XOBNEWVEC (&objfile->objfile_obstack,
+					      discriminant_range,
+					      n_fields - 1);
+      /* Skip the discriminant here.  */
+      for (int i = 1; i < n_fields; ++i)
+	{
+	  /* Find the final word in the name of this variant's type.
+	     That name can be used to look up the correct
+	     discriminant.  */
+	  const char *variant_name
+	    = rust_last_path_segment (type->field (i).type ()->name ());
+
+	  auto iter = discriminant_map.find (variant_name);
+	  if (iter != discriminant_map.end ())
+	    {
+	      ranges[i - 1].low = iter->second;
+	      ranges[i - 1].high = iter->second;
+	    }
+
+	  /* In Rust, each element should have the size of the
+	     enclosing enum.  */
+	  TYPE_LENGTH (type->field (i).type ()) = TYPE_LENGTH (type);
+
+	  /* Remove the discriminant field, if it exists.  */
+	  struct type *sub_type = type->field (i).type ();
+	  if (sub_type->num_fields () > 0)
+	    {
+	      sub_type->set_num_fields (sub_type->num_fields () - 1);
+	      sub_type->set_fields (sub_type->fields () + 1);
+	    }
+	  TYPE_FIELD_NAME (type, i) = variant_name;
+	  sub_type->set_name
+	    (rust_fully_qualify (&objfile->objfile_obstack,
+				 type->name (), variant_name));
+	}
+
+      /* Indicate that this is a variant type.  */
+      alloc_rust_variant (&objfile->objfile_obstack, type, 0, -1,
+			  gdb::array_view<discriminant_range> (ranges,
+							       n_fields - 1));
+    }
+}
+
+/* Rewrite some Rust unions to be structures with variants parts.  */
+
+static void
+rust_union_quirks (struct dwarf2_cu *cu)
+{
+  gdb_assert (cu->language == language_rust);
+  for (type *type_ : cu->rust_unions)
+    quirk_rust_enum (type_, cu->per_objfile->objfile);
+  /* We don't need this any more.  */
+  cu->rust_unions.clear ();
+}
+
+/* See read.h.  */
+
+type_unit_group_unshareable *
+dwarf2_per_objfile::get_type_unit_group_unshareable (type_unit_group *tu_group)
+{
+  auto iter = this->m_type_units.find (tu_group);
+  if (iter != this->m_type_units.end ())
+    return iter->second.get ();
+
+  type_unit_group_unshareable_up uniq (new type_unit_group_unshareable);
+  type_unit_group_unshareable *result = uniq.get ();
+  this->m_type_units[tu_group] = std::move (uniq);
+  return result;
+}
+
+struct type *
+dwarf2_per_objfile::get_type_for_signatured_type
+  (signatured_type *sig_type) const
+{
+  auto iter = this->m_type_map.find (sig_type);
+  if (iter == this->m_type_map.end ())
+    return nullptr;
+
+  return iter->second;
+}
+
+void dwarf2_per_objfile::set_type_for_signatured_type
+  (signatured_type *sig_type, struct type *type)
+{
+  gdb_assert (this->m_type_map.find (sig_type) == this->m_type_map.end ());
+
+  this->m_type_map[sig_type] = type;
+}
+
+/* A helper function for computing the list of all symbol tables
+   included by PER_CU.  */
+
+static void
+recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
+				htab_t all_children, htab_t all_type_symtabs,
+				dwarf2_per_cu_data *per_cu,
+				dwarf2_per_objfile *per_objfile,
+				struct compunit_symtab *immediate_parent)
+{
+  void **slot = htab_find_slot (all_children, per_cu, INSERT);
+  if (*slot != NULL)
+    {
+      /* This inclusion and its children have been processed.  */
+      return;
+    }
+
+  *slot = per_cu;
+
+  /* Only add a CU if it has a symbol table.  */
+  compunit_symtab *cust = per_objfile->get_symtab (per_cu);
+  if (cust != NULL)
+    {
+      /* If this is a type unit only add its symbol table if we haven't
+	 seen it yet (type unit per_cu's can share symtabs).  */
+      if (per_cu->is_debug_types)
+	{
+	  slot = htab_find_slot (all_type_symtabs, cust, INSERT);
+	  if (*slot == NULL)
+	    {
+	      *slot = cust;
+	      result->push_back (cust);
+	      if (cust->user == NULL)
+		cust->user = immediate_parent;
+	    }
+	}
+      else
+	{
+	  result->push_back (cust);
+	  if (cust->user == NULL)
+	    cust->user = immediate_parent;
+	}
+    }
+
+  if (!per_cu->imported_symtabs_empty ())
+    for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
+      {
+	recursively_compute_inclusions (result, all_children,
+					all_type_symtabs, ptr, per_objfile,
+					cust);
+      }
+}
+
+/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
+   PER_CU.  */
+
+static void
+compute_compunit_symtab_includes (dwarf2_per_cu_data *per_cu,
+				  dwarf2_per_objfile *per_objfile)
+{
+  gdb_assert (! per_cu->is_debug_types);
+
+  if (!per_cu->imported_symtabs_empty ())
+    {
+      int len;
+      std::vector<compunit_symtab *> result_symtabs;
+      htab_t all_children, all_type_symtabs;
+      compunit_symtab *cust = per_objfile->get_symtab (per_cu);
+
+      /* If we don't have a symtab, we can just skip this case.  */
+      if (cust == NULL)
+	return;
+
+      all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
+					NULL, xcalloc, xfree);
+      all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
+					    NULL, xcalloc, xfree);
+
+      for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
+	{
+	  recursively_compute_inclusions (&result_symtabs, all_children,
+					  all_type_symtabs, ptr, per_objfile,
+					  cust);
+	}
+
+      /* Now we have a transitive closure of all the included symtabs.  */
+      len = result_symtabs.size ();
+      cust->includes
+	= XOBNEWVEC (&per_objfile->objfile->objfile_obstack,
+		     struct compunit_symtab *, len + 1);
+      memcpy (cust->includes, result_symtabs.data (),
+	      len * sizeof (compunit_symtab *));
+      cust->includes[len] = NULL;
+
+      htab_delete (all_children);
+      htab_delete (all_type_symtabs);
+    }
+}
+
+/* Compute the 'includes' field for the symtabs of all the CUs we just
+   read.  */
+
+static void
+process_cu_includes (dwarf2_per_objfile *per_objfile)
+{
+  for (dwarf2_per_cu_data *iter : per_objfile->per_bfd->just_read_cus)
+    {
+      if (! iter->is_debug_types)
+	compute_compunit_symtab_includes (iter, per_objfile);
+    }
+
+  per_objfile->per_bfd->just_read_cus.clear ();
+}
+
+/* Generate full symbol information for CU, whose DIEs have
+   already been loaded into memory.  */
+
+static void
+process_full_comp_unit (dwarf2_cu *cu, enum language pretend_language)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  CORE_ADDR lowpc, highpc;
+  struct compunit_symtab *cust;
+  CORE_ADDR baseaddr;
+  struct block *static_block;
+  CORE_ADDR addr;
+
+  baseaddr = objfile->text_section_offset ();
+
+  /* Clear the list here in case something was left over.  */
+  cu->method_list.clear ();
+
+  cu->language = pretend_language;
+  cu->language_defn = language_def (cu->language);
+
+  /* Do line number decoding in read_file_scope () */
+  process_die (cu->dies, cu);
+
+  /* For now fudge the Go package.  */
+  if (cu->language == language_go)
+    fixup_go_packaging (cu);
+
+  /* Now that we have processed all the DIEs in the CU, all the types
+     should be complete, and it should now be safe to compute all of the
+     physnames.  */
+  compute_delayed_physnames (cu);
+
+  if (cu->language == language_rust)
+    rust_union_quirks (cu);
+
+  /* Some compilers don't define a DW_AT_high_pc attribute for the
+     compilation unit.  If the DW_AT_high_pc is missing, synthesize
+     it, by scanning the DIE's below the compilation unit.  */
+  get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
+
+  addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
+  static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
+
+  /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
+     Also, DW_AT_ranges may record ranges not belonging to any child DIEs
+     (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
+     addrmap to help ensure it has an accurate map of pc values belonging to
+     this comp unit.  */
+  dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
+
+  cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
+						    SECT_OFF_TEXT (objfile),
+						    0);
+
+  if (cust != NULL)
+    {
+      int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
+
+      /* Set symtab language to language from DW_AT_language.  If the
+	 compilation is from a C file generated by language preprocessors, do
+	 not set the language if it was already deduced by start_subfile.  */
+      if (!(cu->language == language_c
+	    && COMPUNIT_FILETABS (cust)->language != language_unknown))
+	COMPUNIT_FILETABS (cust)->language = cu->language;
+
+      /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
+	 produce DW_AT_location with location lists but it can be possibly
+	 invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
+	 there were bugs in prologue debug info, fixed later in GCC-4.5
+	 by "unwind info for epilogues" patch (which is not directly related).
+
+	 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
+	 needed, it would be wrong due to missing DW_AT_producer there.
+
+	 Still one can confuse GDB by using non-standard GCC compilation
+	 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
+	 */
+      if (cu->has_loclist && gcc_4_minor >= 5)
+	cust->locations_valid = 1;
+
+      if (gcc_4_minor >= 5)
+	cust->epilogue_unwind_valid = 1;
+
+      cust->call_site_htab = cu->call_site_htab;
+    }
+
+  per_objfile->set_symtab (cu->per_cu, cust);
+
+  /* Push it for inclusion processing later.  */
+  per_objfile->per_bfd->just_read_cus.push_back (cu->per_cu);
+
+  /* Not needed any more.  */
+  cu->reset_builder ();
+}
+
+/* Generate full symbol information for type unit CU, whose DIEs have
+   already been loaded into memory.  */
+
+static void
+process_full_type_unit (dwarf2_cu *cu,
+			enum language pretend_language)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct compunit_symtab *cust;
+  struct signatured_type *sig_type;
+
+  gdb_assert (cu->per_cu->is_debug_types);
+  sig_type = (struct signatured_type *) cu->per_cu;
+
+  /* Clear the list here in case something was left over.  */
+  cu->method_list.clear ();
+
+  cu->language = pretend_language;
+  cu->language_defn = language_def (cu->language);
+
+  /* The symbol tables are set up in read_type_unit_scope.  */
+  process_die (cu->dies, cu);
+
+  /* For now fudge the Go package.  */
+  if (cu->language == language_go)
+    fixup_go_packaging (cu);
+
+  /* Now that we have processed all the DIEs in the CU, all the types
+     should be complete, and it should now be safe to compute all of the
+     physnames.  */
+  compute_delayed_physnames (cu);
+
+  if (cu->language == language_rust)
+    rust_union_quirks (cu);
+
+  /* TUs share symbol tables.
+     If this is the first TU to use this symtab, complete the construction
+     of it with end_expandable_symtab.  Otherwise, complete the addition of
+     this TU's symbols to the existing symtab.  */
+  type_unit_group_unshareable *tug_unshare =
+    per_objfile->get_type_unit_group_unshareable (sig_type->type_unit_group);
+  if (tug_unshare->compunit_symtab == NULL)
+    {
+      buildsym_compunit *builder = cu->get_builder ();
+      cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
+      tug_unshare->compunit_symtab = cust;
+
+      if (cust != NULL)
+	{
+	  /* Set symtab language to language from DW_AT_language.  If the
+	     compilation is from a C file generated by language preprocessors,
+	     do not set the language if it was already deduced by
+	     start_subfile.  */
+	  if (!(cu->language == language_c
+		&& COMPUNIT_FILETABS (cust)->language != language_c))
+	    COMPUNIT_FILETABS (cust)->language = cu->language;
+	}
+    }
+  else
+    {
+      cu->get_builder ()->augment_type_symtab ();
+      cust = tug_unshare->compunit_symtab;
+    }
+
+  per_objfile->set_symtab (cu->per_cu, cust);
+
+  /* Not needed any more.  */
+  cu->reset_builder ();
+}
+
+/* Process an imported unit DIE.  */
+
+static void
+process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+
+  /* For now we don't handle imported units in type units.  */
+  if (cu->per_cu->is_debug_types)
+    {
+      error (_("Dwarf Error: DW_TAG_imported_unit is not"
+	       " supported in type units [in module %s]"),
+	     objfile_name (cu->per_objfile->objfile));
+    }
+
+  attr = dwarf2_attr (die, DW_AT_import, cu);
+  if (attr != NULL)
+    {
+      sect_offset sect_off = attr->get_ref_die_offset ();
+      bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
+      dwarf2_per_objfile *per_objfile = cu->per_objfile;
+      dwarf2_per_cu_data *per_cu
+	= dwarf2_find_containing_comp_unit (sect_off, is_dwz, per_objfile);
+
+      /* We're importing a C++ compilation unit with tag DW_TAG_compile_unit
+	 into another compilation unit, at root level.  Regard this as a hint,
+	 and ignore it.  */
+      if (die->parent && die->parent->parent == NULL
+	  && per_cu->unit_type == DW_UT_compile
+	  && per_cu->lang == language_cplus)
+	return;
+
+      /* If necessary, add it to the queue and load its DIEs.  */
+      if (maybe_queue_comp_unit (cu, per_cu, per_objfile, cu->language))
+	load_full_comp_unit (per_cu, per_objfile, per_objfile->get_cu (per_cu),
+			     false, cu->language);
+
+      cu->per_cu->imported_symtabs_push (per_cu);
+    }
+}
+
+/* RAII object that represents a process_die scope: i.e.,
+   starts/finishes processing a DIE.  */
+class process_die_scope
+{
+public:
+  process_die_scope (die_info *die, dwarf2_cu *cu)
+    : m_die (die), m_cu (cu)
+  {
+    /* We should only be processing DIEs not already in process.  */
+    gdb_assert (!m_die->in_process);
+    m_die->in_process = true;
+  }
+
+  ~process_die_scope ()
+  {
+    m_die->in_process = false;
+
+    /* If we're done processing the DIE for the CU that owns the line
+       header, we don't need the line header anymore.  */
+    if (m_cu->line_header_die_owner == m_die)
+      {
+	delete m_cu->line_header;
+	m_cu->line_header = NULL;
+	m_cu->line_header_die_owner = NULL;
+      }
+  }
+
+private:
+  die_info *m_die;
+  dwarf2_cu *m_cu;
+};
+
+/* Process a die and its children.  */
+
+static void
+process_die (struct die_info *die, struct dwarf2_cu *cu)
+{
+  process_die_scope scope (die, cu);
+
+  switch (die->tag)
+    {
+    case DW_TAG_padding:
+      break;
+    case DW_TAG_compile_unit:
+    case DW_TAG_partial_unit:
+      read_file_scope (die, cu);
+      break;
+    case DW_TAG_type_unit:
+      read_type_unit_scope (die, cu);
+      break;
+    case DW_TAG_subprogram:
+      /* Nested subprograms in Fortran get a prefix.  */
+      if (cu->language == language_fortran
+	  && die->parent != NULL
+	  && die->parent->tag == DW_TAG_subprogram)
+	cu->processing_has_namespace_info = true;
+      /* Fall through.  */
+    case DW_TAG_inlined_subroutine:
+      read_func_scope (die, cu);
+      break;
+    case DW_TAG_lexical_block:
+    case DW_TAG_try_block:
+    case DW_TAG_catch_block:
+      read_lexical_block_scope (die, cu);
+      break;
+    case DW_TAG_call_site:
+    case DW_TAG_GNU_call_site:
+      read_call_site_scope (die, cu);
+      break;
+    case DW_TAG_class_type:
+    case DW_TAG_interface_type:
+    case DW_TAG_structure_type:
+    case DW_TAG_union_type:
+      process_structure_scope (die, cu);
+      break;
+    case DW_TAG_enumeration_type:
+      process_enumeration_scope (die, cu);
+      break;
+
+    /* These dies have a type, but processing them does not create
+       a symbol or recurse to process the children.  Therefore we can
+       read them on-demand through read_type_die.  */
+    case DW_TAG_subroutine_type:
+    case DW_TAG_set_type:
+    case DW_TAG_array_type:
+    case DW_TAG_pointer_type:
+    case DW_TAG_ptr_to_member_type:
+    case DW_TAG_reference_type:
+    case DW_TAG_rvalue_reference_type:
+    case DW_TAG_string_type:
+      break;
+
+    case DW_TAG_base_type:
+    case DW_TAG_subrange_type:
+    case DW_TAG_typedef:
+      /* Add a typedef symbol for the type definition, if it has a
+         DW_AT_name.  */
+      new_symbol (die, read_type_die (die, cu), cu);
+      break;
+    case DW_TAG_common_block:
+      read_common_block (die, cu);
+      break;
+    case DW_TAG_common_inclusion:
+      break;
+    case DW_TAG_namespace:
+      cu->processing_has_namespace_info = true;
+      read_namespace (die, cu);
+      break;
+    case DW_TAG_module:
+      cu->processing_has_namespace_info = true;
+      read_module (die, cu);
+      break;
+    case DW_TAG_imported_declaration:
+      cu->processing_has_namespace_info = true;
+      if (read_namespace_alias (die, cu))
+	break;
+      /* The declaration is not a global namespace alias.  */
+      /* Fall through.  */
+    case DW_TAG_imported_module:
+      cu->processing_has_namespace_info = true;
+      if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
+				 || cu->language != language_fortran))
+	complaint (_("Tag '%s' has unexpected children"),
+		   dwarf_tag_name (die->tag));
+      read_import_statement (die, cu);
+      break;
+
+    case DW_TAG_imported_unit:
+      process_imported_unit_die (die, cu);
+      break;
+
+    case DW_TAG_variable:
+      read_variable (die, cu);
+      break;
+
+    default:
+      new_symbol (die, NULL, cu);
+      break;
+    }
+}
+
+/* DWARF name computation.  */
+
+/* A helper function for dwarf2_compute_name which determines whether DIE
+   needs to have the name of the scope prepended to the name listed in the
+   die.  */
+
+static int
+die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+
+  switch (die->tag)
+    {
+    case DW_TAG_namespace:
+    case DW_TAG_typedef:
+    case DW_TAG_class_type:
+    case DW_TAG_interface_type:
+    case DW_TAG_structure_type:
+    case DW_TAG_union_type:
+    case DW_TAG_enumeration_type:
+    case DW_TAG_enumerator:
+    case DW_TAG_subprogram:
+    case DW_TAG_inlined_subroutine:
+    case DW_TAG_member:
+    case DW_TAG_imported_declaration:
+      return 1;
+
+    case DW_TAG_variable:
+    case DW_TAG_constant:
+      /* We only need to prefix "globally" visible variables.  These include
+	 any variable marked with DW_AT_external or any variable that
+	 lives in a namespace.  [Variables in anonymous namespaces
+	 require prefixing, but they are not DW_AT_external.]  */
+
+      if (dwarf2_attr (die, DW_AT_specification, cu))
+	{
+	  struct dwarf2_cu *spec_cu = cu;
+
+	  return die_needs_namespace (die_specification (die, &spec_cu),
+				      spec_cu);
+	}
+
+      attr = dwarf2_attr (die, DW_AT_external, cu);
+      if (attr == NULL && die->parent->tag != DW_TAG_namespace
+	  && die->parent->tag != DW_TAG_module)
+	return 0;
+      /* A variable in a lexical block of some kind does not need a
+	 namespace, even though in C++ such variables may be external
+	 and have a mangled name.  */
+      if (die->parent->tag ==  DW_TAG_lexical_block
+	  || die->parent->tag ==  DW_TAG_try_block
+	  || die->parent->tag ==  DW_TAG_catch_block
+	  || die->parent->tag == DW_TAG_subprogram)
+	return 0;
+      return 1;
+
+    default:
+      return 0;
+    }
+}
+
+/* Return the DIE's linkage name attribute, either DW_AT_linkage_name
+   or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
+   defined for the given DIE.  */
+
+static struct attribute *
+dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+
+  attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
+  if (attr == NULL)
+    attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
+
+  return attr;
+}
+
+/* Return the DIE's linkage name as a string, either DW_AT_linkage_name
+   or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
+   defined for the given DIE.  */
+
+static const char *
+dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
+{
+  const char *linkage_name;
+
+  linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
+  if (linkage_name == NULL)
+    linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
+
+  /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
+     See https://github.com/rust-lang/rust/issues/32925.  */
+  if (cu->language == language_rust && linkage_name != NULL
+      && strchr (linkage_name, '{') != NULL)
+    linkage_name = NULL;
+
+  return linkage_name;
+}
+
+/* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
+   compute the physname for the object, which include a method's:
+   - formal parameters (C++),
+   - receiver type (Go),
+
+   The term "physname" is a bit confusing.
+   For C++, for example, it is the demangled name.
+   For Go, for example, it's the mangled name.
+
+   For Ada, return the DIE's linkage name rather than the fully qualified
+   name.  PHYSNAME is ignored..
+
+   The result is allocated on the objfile->per_bfd's obstack and
+   canonicalized.  */
+
+static const char *
+dwarf2_compute_name (const char *name,
+		     struct die_info *die, struct dwarf2_cu *cu,
+		     int physname)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+
+  if (name == NULL)
+    name = dwarf2_name (die, cu);
+
+  /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
+     but otherwise compute it by typename_concat inside GDB.
+     FIXME: Actually this is not really true, or at least not always true.
+     It's all very confusing.  compute_and_set_names doesn't try to demangle
+     Fortran names because there is no mangling standard.  So new_symbol
+     will set the demangled name to the result of dwarf2_full_name, and it is
+     the demangled name that GDB uses if it exists.  */
+  if (cu->language == language_ada
+      || (cu->language == language_fortran && physname))
+    {
+      /* For Ada unit, we prefer the linkage name over the name, as
+	 the former contains the exported name, which the user expects
+	 to be able to reference.  Ideally, we want the user to be able
+	 to reference this entity using either natural or linkage name,
+	 but we haven't started looking at this enhancement yet.  */
+      const char *linkage_name = dw2_linkage_name (die, cu);
+
+      if (linkage_name != NULL)
+	return linkage_name;
+    }
+
+  /* These are the only languages we know how to qualify names in.  */
+  if (name != NULL
+      && (cu->language == language_cplus
+	  || cu->language == language_fortran || cu->language == language_d
+	  || cu->language == language_rust))
+    {
+      if (die_needs_namespace (die, cu))
+	{
+	  const char *prefix;
+	  const char *canonical_name = NULL;
+
+	  string_file buf;
+
+	  prefix = determine_prefix (die, cu);
+	  if (*prefix != '\0')
+	    {
+	      gdb::unique_xmalloc_ptr<char> prefixed_name
+		(typename_concat (NULL, prefix, name, physname, cu));
+
+	      buf.puts (prefixed_name.get ());
+	    }
+	  else
+	    buf.puts (name);
+
+	  /* Template parameters may be specified in the DIE's DW_AT_name, or
+	     as children with DW_TAG_template_type_param or
+	     DW_TAG_value_type_param.  If the latter, add them to the name
+	     here.  If the name already has template parameters, then
+	     skip this step; some versions of GCC emit both, and
+	     it is more efficient to use the pre-computed name.
+
+	     Something to keep in mind about this process: it is very
+	     unlikely, or in some cases downright impossible, to produce
+	     something that will match the mangled name of a function.
+	     If the definition of the function has the same debug info,
+	     we should be able to match up with it anyway.  But fallbacks
+	     using the minimal symbol, for instance to find a method
+	     implemented in a stripped copy of libstdc++, will not work.
+	     If we do not have debug info for the definition, we will have to
+	     match them up some other way.
+
+	     When we do name matching there is a related problem with function
+	     templates; two instantiated function templates are allowed to
+	     differ only by their return types, which we do not add here.  */
+
+	  if (cu->language == language_cplus && strchr (name, '<') == NULL)
+	    {
+	      struct attribute *attr;
+	      struct die_info *child;
+	      int first = 1;
+
+	      die->building_fullname = 1;
+
+	      for (child = die->child; child != NULL; child = child->sibling)
+		{
+		  struct type *type;
+		  LONGEST value;
+		  const gdb_byte *bytes;
+		  struct dwarf2_locexpr_baton *baton;
+		  struct value *v;
+
+		  if (child->tag != DW_TAG_template_type_param
+		      && child->tag != DW_TAG_template_value_param)
+		    continue;
+
+		  if (first)
+		    {
+		      buf.puts ("<");
+		      first = 0;
+		    }
+		  else
+		    buf.puts (", ");
+
+		  attr = dwarf2_attr (child, DW_AT_type, cu);
+		  if (attr == NULL)
+		    {
+		      complaint (_("template parameter missing DW_AT_type"));
+		      buf.puts ("UNKNOWN_TYPE");
+		      continue;
+		    }
+		  type = die_type (child, cu);
+
+		  if (child->tag == DW_TAG_template_type_param)
+		    {
+		      c_print_type (type, "", &buf, -1, 0, cu->language,
+				    &type_print_raw_options);
+		      continue;
+		    }
+
+		  attr = dwarf2_attr (child, DW_AT_const_value, cu);
+		  if (attr == NULL)
+		    {
+		      complaint (_("template parameter missing "
+				   "DW_AT_const_value"));
+		      buf.puts ("UNKNOWN_VALUE");
+		      continue;
+		    }
+
+		  dwarf2_const_value_attr (attr, type, name,
+					   &cu->comp_unit_obstack, cu,
+					   &value, &bytes, &baton);
+
+		  if (TYPE_NOSIGN (type))
+		    /* GDB prints characters as NUMBER 'CHAR'.  If that's
+		       changed, this can use value_print instead.  */
+		    c_printchar (value, type, &buf);
+		  else
+		    {
+		      struct value_print_options opts;
+
+		      if (baton != NULL)
+			v = dwarf2_evaluate_loc_desc (type, NULL,
+						      baton->data,
+						      baton->size,
+						      baton->per_cu,
+						      baton->per_objfile);
+		      else if (bytes != NULL)
+			{
+			  v = allocate_value (type);
+			  memcpy (value_contents_writeable (v), bytes,
+				  TYPE_LENGTH (type));
+			}
+		      else
+			v = value_from_longest (type, value);
+
+		      /* Specify decimal so that we do not depend on
+			 the radix.  */
+		      get_formatted_print_options (&opts, 'd');
+		      opts.raw = 1;
+		      value_print (v, &buf, &opts);
+		      release_value (v);
+		    }
+		}
+
+	      die->building_fullname = 0;
+
+	      if (!first)
+		{
+		  /* Close the argument list, with a space if necessary
+		     (nested templates).  */
+		  if (!buf.empty () && buf.string ().back () == '>')
+		    buf.puts (" >");
+		  else
+		    buf.puts (">");
+		}
+	    }
+
+	  /* For C++ methods, append formal parameter type
+	     information, if PHYSNAME.  */
+
+	  if (physname && die->tag == DW_TAG_subprogram
+	      && cu->language == language_cplus)
+	    {
+	      struct type *type = read_type_die (die, cu);
+
+	      c_type_print_args (type, &buf, 1, cu->language,
+				 &type_print_raw_options);
+
+	      if (cu->language == language_cplus)
+		{
+		  /* Assume that an artificial first parameter is
+		     "this", but do not crash if it is not.  RealView
+		     marks unnamed (and thus unused) parameters as
+		     artificial; there is no way to differentiate
+		     the two cases.  */
+		  if (type->num_fields () > 0
+		      && TYPE_FIELD_ARTIFICIAL (type, 0)
+		      && type->field (0).type ()->code () == TYPE_CODE_PTR
+		      && TYPE_CONST (TYPE_TARGET_TYPE (type->field (0).type ())))
+		    buf.puts (" const");
+		}
+	    }
+
+	  const std::string &intermediate_name = buf.string ();
+
+	  if (cu->language == language_cplus)
+	    canonical_name
+	      = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
+					  objfile);
+
+	  /* If we only computed INTERMEDIATE_NAME, or if
+	     INTERMEDIATE_NAME is already canonical, then we need to
+	     intern it.  */
+	  if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
+	    name = objfile->intern (intermediate_name);
+	  else
+	    name = canonical_name;
+	}
+    }
+
+  return name;
+}
+
+/* Return the fully qualified name of DIE, based on its DW_AT_name.
+   If scope qualifiers are appropriate they will be added.  The result
+   will be allocated on the storage_obstack, or NULL if the DIE does
+   not have a name.  NAME may either be from a previous call to
+   dwarf2_name or NULL.
+
+   The output string will be canonicalized (if C++).  */
+
+static const char *
+dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
+{
+  return dwarf2_compute_name (name, die, cu, 0);
+}
+
+/* Construct a physname for the given DIE in CU.  NAME may either be
+   from a previous call to dwarf2_name or NULL.  The result will be
+   allocated on the objfile_objstack or NULL if the DIE does not have a
+   name.
+
+   The output string will be canonicalized (if C++).  */
+
+static const char *
+dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  const char *retval, *mangled = NULL, *canon = NULL;
+  int need_copy = 1;
+
+  /* In this case dwarf2_compute_name is just a shortcut not building anything
+     on its own.  */
+  if (!die_needs_namespace (die, cu))
+    return dwarf2_compute_name (name, die, cu, 1);
+
+  if (cu->language != language_rust)
+    mangled = dw2_linkage_name (die, cu);
+
+  /* DW_AT_linkage_name is missing in some cases - depend on what GDB
+     has computed.  */
+  gdb::unique_xmalloc_ptr<char> demangled;
+  if (mangled != NULL)
+    {
+
+      if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
+	{
+	  /* Do nothing (do not demangle the symbol name).  */
+	}
+      else if (cu->language == language_go)
+	{
+	  /* This is a lie, but we already lie to the caller new_symbol.
+	     new_symbol assumes we return the mangled name.
+	     This just undoes that lie until things are cleaned up.  */
+	}
+      else
+	{
+	  /* Use DMGL_RET_DROP for C++ template functions to suppress
+	     their return type.  It is easier for GDB users to search
+	     for such functions as `name(params)' than `long name(params)'.
+	     In such case the minimal symbol names do not match the full
+	     symbol names but for template functions there is never a need
+	     to look up their definition from their declaration so
+	     the only disadvantage remains the minimal symbol variant
+	     `long name(params)' does not have the proper inferior type.  */
+	  demangled.reset (gdb_demangle (mangled,
+					 (DMGL_PARAMS | DMGL_ANSI
+					  | DMGL_RET_DROP)));
+	}
+      if (demangled)
+	canon = demangled.get ();
+      else
+	{
+	  canon = mangled;
+	  need_copy = 0;
+	}
+    }
+
+  if (canon == NULL || check_physname)
+    {
+      const char *physname = dwarf2_compute_name (name, die, cu, 1);
+
+      if (canon != NULL && strcmp (physname, canon) != 0)
+	{
+	  /* 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.  */
+
+	  complaint (_("Computed physname <%s> does not match demangled <%s> "
+		       "(from linkage <%s>) - DIE at %s [in module %s]"),
+		     physname, canon, mangled, sect_offset_str (die->sect_off),
+		     objfile_name (objfile));
+
+	  /* Prefer DW_AT_linkage_name (in the CANON form) - when it
+	     is available here - over computed PHYSNAME.  It is safer
+	     against both buggy GDB and buggy compilers.  */
+
+	  retval = canon;
+	}
+      else
+	{
+	  retval = physname;
+	  need_copy = 0;
+	}
+    }
+  else
+    retval = canon;
+
+  if (need_copy)
+    retval = objfile->intern (retval);
+
+  return retval;
+}
+
+/* Inspect DIE in CU for a namespace alias.  If one exists, record
+   a new symbol for it.
+
+   Returns 1 if a namespace alias was recorded, 0 otherwise.  */
+
+static int
+read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+
+  /* If the die does not have a name, this is not a namespace
+     alias.  */
+  attr = dwarf2_attr (die, DW_AT_name, cu);
+  if (attr != NULL)
+    {
+      int num;
+      struct die_info *d = die;
+      struct dwarf2_cu *imported_cu = cu;
+
+      /* If the compiler has nested DW_AT_imported_declaration DIEs,
+	 keep inspecting DIEs until we hit the underlying import.  */
+#define MAX_NESTED_IMPORTED_DECLARATIONS 100
+      for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
+	{
+	  attr = dwarf2_attr (d, DW_AT_import, cu);
+	  if (attr == NULL)
+	    break;
+
+	  d = follow_die_ref (d, attr, &imported_cu);
+	  if (d->tag != DW_TAG_imported_declaration)
+	    break;
+	}
+
+      if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
+	{
+	  complaint (_("DIE at %s has too many recursively imported "
+		       "declarations"), sect_offset_str (d->sect_off));
+	  return 0;
+	}
+
+      if (attr != NULL)
+	{
+	  struct type *type;
+	  sect_offset sect_off = attr->get_ref_die_offset ();
+
+	  type = get_die_type_at_offset (sect_off, cu->per_cu, cu->per_objfile);
+	  if (type != NULL && type->code () == TYPE_CODE_NAMESPACE)
+	    {
+	      /* This declaration is a global namespace alias.  Add
+		 a symbol for it whose type is the aliased namespace.  */
+	      new_symbol (die, type, cu);
+	      return 1;
+	    }
+	}
+    }
+
+  return 0;
+}
+
+/* Return the using directives repository (global or local?) to use in the
+   current context for CU.
+
+   For Ada, imported declarations can materialize renamings, which *may* be
+   global.  However it is impossible (for now?) in DWARF to distinguish
+   "external" imported declarations and "static" ones.  As all imported
+   declarations seem to be static in all other languages, make them all CU-wide
+   global only in Ada.  */
+
+static struct using_direct **
+using_directives (struct dwarf2_cu *cu)
+{
+  if (cu->language == language_ada
+      && cu->get_builder ()->outermost_context_p ())
+    return cu->get_builder ()->get_global_using_directives ();
+  else
+    return cu->get_builder ()->get_local_using_directives ();
+}
+
+/* Read the import statement specified by the given die and record it.  */
+
+static void
+read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct attribute *import_attr;
+  struct die_info *imported_die, *child_die;
+  struct dwarf2_cu *imported_cu;
+  const char *imported_name;
+  const char *imported_name_prefix;
+  const char *canonical_name;
+  const char *import_alias;
+  const char *imported_declaration = NULL;
+  const char *import_prefix;
+  std::vector<const char *> excludes;
+
+  import_attr = dwarf2_attr (die, DW_AT_import, cu);
+  if (import_attr == NULL)
+    {
+      complaint (_("Tag '%s' has no DW_AT_import"),
+		 dwarf_tag_name (die->tag));
+      return;
+    }
+
+  imported_cu = cu;
+  imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
+  imported_name = dwarf2_name (imported_die, imported_cu);
+  if (imported_name == NULL)
+    {
+      /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
+
+        The import in the following code:
+        namespace A
+          {
+            typedef int B;
+          }
+
+        int main ()
+          {
+            using A::B;
+            B b;
+            return b;
+          }
+
+        ...
+         <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
+            <52>   DW_AT_decl_file   : 1
+            <53>   DW_AT_decl_line   : 6
+            <54>   DW_AT_import      : <0x75>
+         <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
+            <59>   DW_AT_name        : B
+            <5b>   DW_AT_decl_file   : 1
+            <5c>   DW_AT_decl_line   : 2
+            <5d>   DW_AT_type        : <0x6e>
+        ...
+         <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
+            <76>   DW_AT_byte_size   : 4
+            <77>   DW_AT_encoding    : 5        (signed)
+
+        imports the wrong die ( 0x75 instead of 0x58 ).
+        This case will be ignored until the gcc bug is fixed.  */
+      return;
+    }
+
+  /* Figure out the local name after import.  */
+  import_alias = dwarf2_name (die, cu);
+
+  /* Figure out where the statement is being imported to.  */
+  import_prefix = determine_prefix (die, cu);
+
+  /* Figure out what the scope of the imported die is and prepend it
+     to the name of the imported die.  */
+  imported_name_prefix = determine_prefix (imported_die, imported_cu);
+
+  if (imported_die->tag != DW_TAG_namespace
+      && imported_die->tag != DW_TAG_module)
+    {
+      imported_declaration = imported_name;
+      canonical_name = imported_name_prefix;
+    }
+  else if (strlen (imported_name_prefix) > 0)
+    canonical_name = obconcat (&objfile->objfile_obstack,
+			       imported_name_prefix,
+			       (cu->language == language_d ? "." : "::"),
+			       imported_name, (char *) NULL);
+  else
+    canonical_name = imported_name;
+
+  if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
+    for (child_die = die->child; child_die && child_die->tag;
+	 child_die = child_die->sibling)
+      {
+	/* DWARF-4: A Fortran use statement with a â€œrename listâ€� may be
+	   represented by an imported module entry with an import attribute
+	   referring to the module and owned entries corresponding to those
+	   entities that are renamed as part of being imported.  */
+
+	if (child_die->tag != DW_TAG_imported_declaration)
+	  {
+	    complaint (_("child DW_TAG_imported_declaration expected "
+			 "- DIE at %s [in module %s]"),
+		       sect_offset_str (child_die->sect_off),
+		       objfile_name (objfile));
+	    continue;
+	  }
+
+	import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
+	if (import_attr == NULL)
+	  {
+	    complaint (_("Tag '%s' has no DW_AT_import"),
+		       dwarf_tag_name (child_die->tag));
+	    continue;
+	  }
+
+	imported_cu = cu;
+	imported_die = follow_die_ref_or_sig (child_die, import_attr,
+					      &imported_cu);
+	imported_name = dwarf2_name (imported_die, imported_cu);
+	if (imported_name == NULL)
+	  {
+	    complaint (_("child DW_TAG_imported_declaration has unknown "
+			 "imported name - DIE at %s [in module %s]"),
+		       sect_offset_str (child_die->sect_off),
+		       objfile_name (objfile));
+	    continue;
+	  }
+
+	excludes.push_back (imported_name);
+
+	process_die (child_die, cu);
+      }
+
+  add_using_directive (using_directives (cu),
+		       import_prefix,
+		       canonical_name,
+		       import_alias,
+		       imported_declaration,
+		       excludes,
+		       0,
+		       &objfile->objfile_obstack);
+}
+
+/* ICC<14 does not output the required DW_AT_declaration on incomplete
+   types, but gives them a size of zero.  Starting with version 14,
+   ICC is compatible with GCC.  */
+
+static bool
+producer_is_icc_lt_14 (struct dwarf2_cu *cu)
+{
+  if (!cu->checked_producer)
+    check_producer (cu);
+
+  return cu->producer_is_icc_lt_14;
+}
+
+/* ICC generates a DW_AT_type for C void functions.  This was observed on
+   ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
+   which says that void functions should not have a DW_AT_type.  */
+
+static bool
+producer_is_icc (struct dwarf2_cu *cu)
+{
+  if (!cu->checked_producer)
+    check_producer (cu);
+
+  return cu->producer_is_icc;
+}
+
+/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
+   directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
+   this, it was first present in GCC release 4.3.0.  */
+
+static bool
+producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
+{
+  if (!cu->checked_producer)
+    check_producer (cu);
+
+  return cu->producer_is_gcc_lt_4_3;
+}
+
+static file_and_directory
+find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
+{
+  file_and_directory res;
+
+  /* Find the filename.  Do not use dwarf2_name here, since the filename
+     is not a source language identifier.  */
+  res.name = dwarf2_string_attr (die, DW_AT_name, cu);
+  res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
+
+  if (res.comp_dir == NULL
+      && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
+      && IS_ABSOLUTE_PATH (res.name))
+    {
+      res.comp_dir_storage = ldirname (res.name);
+      if (!res.comp_dir_storage.empty ())
+	res.comp_dir = res.comp_dir_storage.c_str ();
+    }
+  if (res.comp_dir != NULL)
+    {
+      /* Irix 6.2 native cc prepends <machine>.: to the compilation
+	 directory, get rid of it.  */
+      const char *cp = strchr (res.comp_dir, ':');
+
+      if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
+	res.comp_dir = cp + 1;
+    }
+
+  if (res.name == NULL)
+    res.name = "<unknown>";
+
+  return res;
+}
+
+/* Handle DW_AT_stmt_list for a compilation unit.
+   DIE is the DW_TAG_compile_unit die for CU.
+   COMP_DIR is the compilation directory.  LOWPC is passed to
+   dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
+
+static void
+handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
+			const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct attribute *attr;
+  struct line_header line_header_local;
+  hashval_t line_header_local_hash;
+  void **slot;
+  int decode_mapping;
+
+  gdb_assert (! cu->per_cu->is_debug_types);
+
+  attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
+  if (attr == NULL)
+    return;
+
+  sect_offset line_offset = (sect_offset) DW_UNSND (attr);
+
+  /* The line header hash table is only created if needed (it exists to
+     prevent redundant reading of the line table for partial_units).
+     If we're given a partial_unit, we'll need it.  If we're given a
+     compile_unit, then use the line header hash table if it's already
+     created, but don't create one just yet.  */
+
+  if (per_objfile->line_header_hash == NULL
+      && die->tag == DW_TAG_partial_unit)
+    {
+      per_objfile->line_header_hash
+	.reset (htab_create_alloc (127, line_header_hash_voidp,
+				   line_header_eq_voidp,
+				   free_line_header_voidp,
+				   xcalloc, xfree));
+    }
+
+  line_header_local.sect_off = line_offset;
+  line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
+  line_header_local_hash = line_header_hash (&line_header_local);
+  if (per_objfile->line_header_hash != NULL)
+    {
+      slot = htab_find_slot_with_hash (per_objfile->line_header_hash.get (),
+				       &line_header_local,
+				       line_header_local_hash, NO_INSERT);
+
+      /* For DW_TAG_compile_unit we need info like symtab::linetable which
+	 is not present in *SLOT (since if there is something in *SLOT then
+	 it will be for a partial_unit).  */
+      if (die->tag == DW_TAG_partial_unit && slot != NULL)
+	{
+	  gdb_assert (*slot != NULL);
+	  cu->line_header = (struct line_header *) *slot;
+	  return;
+	}
+    }
+
+  /* dwarf_decode_line_header does not yet provide sufficient information.
+     We always have to call also dwarf_decode_lines for it.  */
+  line_header_up lh = dwarf_decode_line_header (line_offset, cu);
+  if (lh == NULL)
+    return;
+
+  cu->line_header = lh.release ();
+  cu->line_header_die_owner = die;
+
+  if (per_objfile->line_header_hash == NULL)
+    slot = NULL;
+  else
+    {
+      slot = htab_find_slot_with_hash (per_objfile->line_header_hash.get (),
+				       &line_header_local,
+				       line_header_local_hash, INSERT);
+      gdb_assert (slot != NULL);
+    }
+  if (slot != NULL && *slot == NULL)
+    {
+      /* This newly decoded line number information unit will be owned
+	 by line_header_hash hash table.  */
+      *slot = cu->line_header;
+      cu->line_header_die_owner = NULL;
+    }
+  else
+    {
+      /* We cannot free any current entry in (*slot) as that struct line_header
+         may be already used by multiple CUs.  Create only temporary decoded
+	 line_header for this CU - it may happen at most once for each line
+	 number information unit.  And if we're not using line_header_hash
+	 then this is what we want as well.  */
+      gdb_assert (die->tag != DW_TAG_partial_unit);
+    }
+  decode_mapping = (die->tag != DW_TAG_partial_unit);
+  dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
+		      decode_mapping);
+
+}
+
+/* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
+
+static void
+read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  CORE_ADDR lowpc = ((CORE_ADDR) -1);
+  CORE_ADDR highpc = ((CORE_ADDR) 0);
+  struct attribute *attr;
+  struct die_info *child_die;
+  CORE_ADDR baseaddr;
+
+  prepare_one_comp_unit (cu, die, cu->language);
+  baseaddr = objfile->text_section_offset ();
+
+  get_scope_pc_bounds (die, &lowpc, &highpc, cu);
+
+  /* If we didn't find a lowpc, set it to highpc to avoid complaints
+     from finish_block.  */
+  if (lowpc == ((CORE_ADDR) -1))
+    lowpc = highpc;
+  lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
+
+  file_and_directory fnd = find_file_and_directory (die, cu);
+
+  /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
+     standardised yet.  As a workaround for the language detection we fall
+     back to the DW_AT_producer string.  */
+  if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
+    cu->language = language_opencl;
+
+  /* Similar hack for Go.  */
+  if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
+    set_cu_language (DW_LANG_Go, cu);
+
+  cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
+
+  /* Decode line number information if present.  We do this before
+     processing child DIEs, so that the line header table is available
+     for DW_AT_decl_file.  */
+  handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
+
+  /* Process all dies in compilation unit.  */
+  if (die->child != NULL)
+    {
+      child_die = die->child;
+      while (child_die && child_die->tag)
+	{
+	  process_die (child_die, cu);
+	  child_die = child_die->sibling;
+	}
+    }
+
+  /* Decode macro information, if present.  Dwarf 2 macro information
+     refers to information in the line number info statement program
+     header, so we can only read it if we've read the header
+     successfully.  */
+  attr = dwarf2_attr (die, DW_AT_macros, cu);
+  if (attr == NULL)
+    attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
+  if (attr && cu->line_header)
+    {
+      if (dwarf2_attr (die, DW_AT_macro_info, cu))
+	complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
+
+      dwarf_decode_macros (cu, DW_UNSND (attr), 1);
+    }
+  else
+    {
+      attr = dwarf2_attr (die, DW_AT_macro_info, cu);
+      if (attr && cu->line_header)
+	{
+	  unsigned int macro_offset = DW_UNSND (attr);
+
+	  dwarf_decode_macros (cu, macro_offset, 0);
+	}
+    }
+}
+
+void
+dwarf2_cu::setup_type_unit_groups (struct die_info *die)
+{
+  struct type_unit_group *tu_group;
+  int first_time;
+  struct attribute *attr;
+  unsigned int i;
+  struct signatured_type *sig_type;
+
+  gdb_assert (per_cu->is_debug_types);
+  sig_type = (struct signatured_type *) per_cu;
+
+  attr = dwarf2_attr (die, DW_AT_stmt_list, this);
+
+  /* If we're using .gdb_index (includes -readnow) then
+     per_cu->type_unit_group may not have been set up yet.  */
+  if (sig_type->type_unit_group == NULL)
+    sig_type->type_unit_group = get_type_unit_group (this, attr);
+  tu_group = sig_type->type_unit_group;
+
+  /* If we've already processed this stmt_list there's no real need to
+     do it again, we could fake it and just recreate the part we need
+     (file name,index -> symtab mapping).  If data shows this optimization
+     is useful we can do it then.  */
+  type_unit_group_unshareable *tug_unshare
+    = per_objfile->get_type_unit_group_unshareable (tu_group);
+  first_time = tug_unshare->compunit_symtab == NULL;
+
+  /* We have to handle the case of both a missing DW_AT_stmt_list or bad
+     debug info.  */
+  line_header_up lh;
+  if (attr != NULL)
+    {
+      sect_offset line_offset = (sect_offset) DW_UNSND (attr);
+      lh = dwarf_decode_line_header (line_offset, this);
+    }
+  if (lh == NULL)
+    {
+      if (first_time)
+	start_symtab ("", NULL, 0);
+      else
+	{
+	  gdb_assert (tug_unshare->symtabs == NULL);
+	  gdb_assert (m_builder == nullptr);
+	  struct compunit_symtab *cust = tug_unshare->compunit_symtab;
+	  m_builder.reset (new struct buildsym_compunit
+			   (COMPUNIT_OBJFILE (cust), "",
+			    COMPUNIT_DIRNAME (cust),
+			    compunit_language (cust),
+			    0, cust));
+	  list_in_scope = get_builder ()->get_file_symbols ();
+	}
+      return;
+    }
+
+  line_header = lh.release ();
+  line_header_die_owner = die;
+
+  if (first_time)
+    {
+      struct compunit_symtab *cust = start_symtab ("", NULL, 0);
+
+      /* Note: We don't assign tu_group->compunit_symtab yet because we're
+	 still initializing it, and our caller (a few levels up)
+	 process_full_type_unit still needs to know if this is the first
+	 time.  */
+
+      tug_unshare->symtabs
+	= XOBNEWVEC (&COMPUNIT_OBJFILE (cust)->objfile_obstack,
+		     struct symtab *, line_header->file_names_size ());
+
+      auto &file_names = line_header->file_names ();
+      for (i = 0; i < file_names.size (); ++i)
+	{
+	  file_entry &fe = file_names[i];
+	  dwarf2_start_subfile (this, fe.name,
+				fe.include_dir (line_header));
+	  buildsym_compunit *b = get_builder ();
+	  if (b->get_current_subfile ()->symtab == NULL)
+	    {
+	      /* NOTE: start_subfile will recognize when it's been
+		 passed a file it has already seen.  So we can't
+		 assume there's a simple mapping from
+		 cu->line_header->file_names to subfiles, plus
+		 cu->line_header->file_names may contain dups.  */
+	      b->get_current_subfile ()->symtab
+		= allocate_symtab (cust, b->get_current_subfile ()->name);
+	    }
+
+	  fe.symtab = b->get_current_subfile ()->symtab;
+	  tug_unshare->symtabs[i] = fe.symtab;
+	}
+    }
+  else
+    {
+      gdb_assert (m_builder == nullptr);
+      struct compunit_symtab *cust = tug_unshare->compunit_symtab;
+      m_builder.reset (new struct buildsym_compunit
+		       (COMPUNIT_OBJFILE (cust), "",
+			COMPUNIT_DIRNAME (cust),
+			compunit_language (cust),
+			0, cust));
+      list_in_scope = get_builder ()->get_file_symbols ();
+
+      auto &file_names = line_header->file_names ();
+      for (i = 0; i < file_names.size (); ++i)
+	{
+	  file_entry &fe = file_names[i];
+	  fe.symtab = tug_unshare->symtabs[i];
+	}
+    }
+
+  /* The main symtab is allocated last.  Type units don't have DW_AT_name
+     so they don't have a "real" (so to speak) symtab anyway.
+     There is later code that will assign the main symtab to all symbols
+     that don't have one.  We need to handle the case of a symbol with a
+     missing symtab (DW_AT_decl_file) anyway.  */
+}
+
+/* Process DW_TAG_type_unit.
+   For TUs we want to skip the first top level sibling if it's not the
+   actual type being defined by this TU.  In this case the first top
+   level sibling is there to provide context only.  */
+
+static void
+read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct die_info *child_die;
+
+  prepare_one_comp_unit (cu, die, language_minimal);
+
+  /* Initialize (or reinitialize) the machinery for building symtabs.
+     We do this before processing child DIEs, so that the line header table
+     is available for DW_AT_decl_file.  */
+  cu->setup_type_unit_groups (die);
+
+  if (die->child != NULL)
+    {
+      child_die = die->child;
+      while (child_die && child_die->tag)
+	{
+	  process_die (child_die, cu);
+	  child_die = child_die->sibling;
+	}
+    }
+}
+
+/* DWO/DWP files.
+
+   http://gcc.gnu.org/wiki/DebugFission
+   http://gcc.gnu.org/wiki/DebugFissionDWP
+
+   To simplify handling of both DWO files ("object" files with the DWARF info)
+   and DWP files (a file with the DWOs packaged up into one file), we treat
+   DWP files as having a collection of virtual DWO files.  */
+
+static hashval_t
+hash_dwo_file (const void *item)
+{
+  const struct dwo_file *dwo_file = (const struct dwo_file *) item;
+  hashval_t hash;
+
+  hash = htab_hash_string (dwo_file->dwo_name);
+  if (dwo_file->comp_dir != NULL)
+    hash += htab_hash_string (dwo_file->comp_dir);
+  return hash;
+}
+
+static int
+eq_dwo_file (const void *item_lhs, const void *item_rhs)
+{
+  const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
+  const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
+
+  if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
+    return 0;
+  if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
+    return lhs->comp_dir == rhs->comp_dir;
+  return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
+}
+
+/* Allocate a hash table for DWO files.  */
+
+static htab_up
+allocate_dwo_file_hash_table ()
+{
+  auto delete_dwo_file = [] (void *item)
+    {
+      struct dwo_file *dwo_file = (struct dwo_file *) item;
+
+      delete dwo_file;
+    };
+
+  return htab_up (htab_create_alloc (41,
+				     hash_dwo_file,
+				     eq_dwo_file,
+				     delete_dwo_file,
+				     xcalloc, xfree));
+}
+
+/* Lookup DWO file DWO_NAME.  */
+
+static void **
+lookup_dwo_file_slot (dwarf2_per_objfile *per_objfile,
+		      const char *dwo_name,
+		      const char *comp_dir)
+{
+  struct dwo_file find_entry;
+  void **slot;
+
+  if (per_objfile->per_bfd->dwo_files == NULL)
+    per_objfile->per_bfd->dwo_files = allocate_dwo_file_hash_table ();
+
+  find_entry.dwo_name = dwo_name;
+  find_entry.comp_dir = comp_dir;
+  slot = htab_find_slot (per_objfile->per_bfd->dwo_files.get (), &find_entry,
+			 INSERT);
+
+  return slot;
+}
+
+static hashval_t
+hash_dwo_unit (const void *item)
+{
+  const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
+
+  /* This drops the top 32 bits of the id, but is ok for a hash.  */
+  return dwo_unit->signature;
+}
+
+static int
+eq_dwo_unit (const void *item_lhs, const void *item_rhs)
+{
+  const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
+  const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
+
+  /* The signature is assumed to be unique within the DWO file.
+     So while object file CU dwo_id's always have the value zero,
+     that's OK, assuming each object file DWO file has only one CU,
+     and that's the rule for now.  */
+  return lhs->signature == rhs->signature;
+}
+
+/* Allocate a hash table for DWO CUs,TUs.
+   There is one of these tables for each of CUs,TUs for each DWO file.  */
+
+static htab_up
+allocate_dwo_unit_table ()
+{
+  /* Start out with a pretty small number.
+     Generally DWO files contain only one CU and maybe some TUs.  */
+  return htab_up (htab_create_alloc (3,
+				     hash_dwo_unit,
+				     eq_dwo_unit,
+				     NULL, xcalloc, xfree));
+}
+
+/* die_reader_func for create_dwo_cu.  */
+
+static void
+create_dwo_cu_reader (const struct die_reader_specs *reader,
+		      const gdb_byte *info_ptr,
+		      struct die_info *comp_unit_die,
+		      struct dwo_file *dwo_file,
+		      struct dwo_unit *dwo_unit)
+{
+  struct dwarf2_cu *cu = reader->cu;
+  sect_offset sect_off = cu->per_cu->sect_off;
+  struct dwarf2_section_info *section = cu->per_cu->section;
+
+  gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
+  if (!signature.has_value ())
+    {
+      complaint (_("Dwarf Error: debug entry at offset %s is missing"
+		   " its dwo_id [in module %s]"),
+		 sect_offset_str (sect_off), dwo_file->dwo_name);
+      return;
+    }
+
+  dwo_unit->dwo_file = dwo_file;
+  dwo_unit->signature = *signature;
+  dwo_unit->section = section;
+  dwo_unit->sect_off = sect_off;
+  dwo_unit->length = cu->per_cu->length;
+
+  if (dwarf_read_debug)
+    fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
+			sect_offset_str (sect_off),
+			hex_string (dwo_unit->signature));
+}
+
+/* Create the dwo_units for the CUs in a DWO_FILE.
+   Note: This function processes DWO files only, not DWP files.  */
+
+static void
+create_cus_hash_table (dwarf2_per_objfile *per_objfile,
+		       dwarf2_cu *cu, struct dwo_file &dwo_file,
+		       dwarf2_section_info &section, htab_up &cus_htab)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
+  const gdb_byte *info_ptr, *end_ptr;
+
+  section.read (objfile);
+  info_ptr = section.buffer;
+
+  if (info_ptr == NULL)
+    return;
+
+  if (dwarf_read_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
+			  section.get_name (),
+			  section.get_file_name ());
+    }
+
+  end_ptr = info_ptr + section.size;
+  while (info_ptr < end_ptr)
+    {
+      struct dwarf2_per_cu_data per_cu;
+      struct dwo_unit read_unit {};
+      struct dwo_unit *dwo_unit;
+      void **slot;
+      sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
+
+      memset (&per_cu, 0, sizeof (per_cu));
+      per_cu.per_bfd = per_bfd;
+      per_cu.is_debug_types = 0;
+      per_cu.sect_off = sect_offset (info_ptr - section.buffer);
+      per_cu.section = &section;
+
+      cutu_reader reader (&per_cu, per_objfile, cu, &dwo_file);
+      if (!reader.dummy_p)
+	create_dwo_cu_reader (&reader, reader.info_ptr, reader.comp_unit_die,
+			      &dwo_file, &read_unit);
+      info_ptr += per_cu.length;
+
+      // If the unit could not be parsed, skip it.
+      if (read_unit.dwo_file == NULL)
+	continue;
+
+      if (cus_htab == NULL)
+	cus_htab = allocate_dwo_unit_table ();
+
+      dwo_unit = OBSTACK_ZALLOC (&per_bfd->obstack,
+				 struct dwo_unit);
+      *dwo_unit = read_unit;
+      slot = htab_find_slot (cus_htab.get (), dwo_unit, INSERT);
+      gdb_assert (slot != NULL);
+      if (*slot != NULL)
+	{
+	  const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
+	  sect_offset dup_sect_off = dup_cu->sect_off;
+
+	  complaint (_("debug cu entry at offset %s is duplicate to"
+		       " the entry at offset %s, signature %s"),
+		     sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
+		     hex_string (dwo_unit->signature));
+	}
+      *slot = (void *)dwo_unit;
+    }
+}
+
+/* DWP file .debug_{cu,tu}_index section format:
+   [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
+   [ref: http://dwarfstd.org/doc/DWARF5.pdf, sect 7.3.5 "DWARF Package Files"]
+
+   DWP Versions 1 & 2 are older, pre-standard format versions.  The first
+   officially standard DWP format was published with DWARF v5 and is called
+   Version 5.  There are no versions 3 or 4.
+
+   DWP Version 1:
+
+   Both index sections have the same format, and serve to map a 64-bit
+   signature to a set of section numbers.  Each section begins with a header,
+   followed by a hash table of 64-bit signatures, a parallel table of 32-bit
+   indexes, and a pool of 32-bit section numbers.  The index sections will be
+   aligned at 8-byte boundaries in the file.
+
+   The index section header consists of:
+
+    V, 32 bit version number
+    -, 32 bits unused
+    N, 32 bit number of compilation units or type units in the index
+    M, 32 bit number of slots in the hash table
+
+   Numbers are recorded using the byte order of the application binary.
+
+   The hash table begins at offset 16 in the section, and consists of an array
+   of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
+   order of the application binary).  Unused slots in the hash table are 0.
+   (We rely on the extreme unlikeliness of a signature being exactly 0.)
+
+   The parallel table begins immediately after the hash table
+   (at offset 16 + 8 * M from the beginning of the section), and consists of an
+   array of 32-bit indexes (using the byte order of the application binary),
+   corresponding 1-1 with slots in the hash table.  Each entry in the parallel
+   table contains a 32-bit index into the pool of section numbers.  For unused
+   hash table slots, the corresponding entry in the parallel table will be 0.
+
+   The pool of section numbers begins immediately following the hash table
+   (at offset 16 + 12 * M from the beginning of the section).  The pool of
+   section numbers consists of an array of 32-bit words (using the byte order
+   of the application binary).  Each item in the array is indexed starting
+   from 0.  The hash table entry provides the index of the first section
+   number in the set.  Additional section numbers in the set follow, and the
+   set is terminated by a 0 entry (section number 0 is not used in ELF).
+
+   In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
+   section must be the first entry in the set, and the .debug_abbrev.dwo must
+   be the second entry. Other members of the set may follow in any order.
+
+   ---
+
+   DWP Versions 2 and 5:
+
+   DWP Versions 2 and 5 combine all the .debug_info, etc. sections into one,
+   and the entries in the index tables are now offsets into these sections.
+   CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
+   section.
+
+   Index Section Contents:
+    Header
+    Hash Table of Signatures   dwp_hash_table.hash_table
+    Parallel Table of Indices  dwp_hash_table.unit_table
+    Table of Section Offsets   dwp_hash_table.{v2|v5}.{section_ids,offsets}
+    Table of Section Sizes     dwp_hash_table.{v2|v5}.sizes
+
+   The index section header consists of:
+
+    V, 32 bit version number
+    L, 32 bit number of columns in the table of section offsets
+    N, 32 bit number of compilation units or type units in the index
+    M, 32 bit number of slots in the hash table
+
+   Numbers are recorded using the byte order of the application binary.
+
+   The hash table has the same format as version 1.
+   The parallel table of indices has the same format as version 1,
+   except that the entries are origin-1 indices into the table of sections
+   offsets and the table of section sizes.
+
+   The table of offsets begins immediately following the parallel table
+   (at offset 16 + 12 * M from the beginning of the section).  The table is
+   a two-dimensional array of 32-bit words (using the byte order of the
+   application binary), with L columns and N+1 rows, in row-major order.
+   Each row in the array is indexed starting from 0.  The first row provides
+   a key to the remaining rows: each column in this row provides an identifier
+   for a debug section, and the offsets in the same column of subsequent rows
+   refer to that section.  The section identifiers for Version 2 are:
+
+    DW_SECT_INFO         1  .debug_info.dwo
+    DW_SECT_TYPES        2  .debug_types.dwo
+    DW_SECT_ABBREV       3  .debug_abbrev.dwo
+    DW_SECT_LINE         4  .debug_line.dwo
+    DW_SECT_LOC          5  .debug_loc.dwo
+    DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
+    DW_SECT_MACINFO      7  .debug_macinfo.dwo
+    DW_SECT_MACRO        8  .debug_macro.dwo
+
+   The section identifiers for Version 5 are:
+
+    DW_SECT_INFO_V5         1  .debug_info.dwo
+    DW_SECT_RESERVED_V5     2  --
+    DW_SECT_ABBREV_V5       3  .debug_abbrev.dwo
+    DW_SECT_LINE_V5         4  .debug_line.dwo
+    DW_SECT_LOCLISTS_V5     5  .debug_loclists.dwo
+    DW_SECT_STR_OFFSETS_V5  6  .debug_str_offsets.dwo
+    DW_SECT_MACRO_V5        7  .debug_macro.dwo
+    DW_SECT_RNGLISTS_V5     8  .debug_rnglists.dwo
+
+   The offsets provided by the CU and TU index sections are the base offsets
+   for the contributions made by each CU or TU to the corresponding section
+   in the package file.  Each CU and TU header contains an abbrev_offset
+   field, used to find the abbreviations table for that CU or TU within the
+   contribution to the .debug_abbrev.dwo section for that CU or TU, and should
+   be interpreted as relative to the base offset given in the index section.
+   Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
+   should be interpreted as relative to the base offset for .debug_line.dwo,
+   and offsets into other debug sections obtained from DWARF attributes should
+   also be interpreted as relative to the corresponding base offset.
+
+   The table of sizes begins immediately following the table of offsets.
+   Like the table of offsets, it is a two-dimensional array of 32-bit words,
+   with L columns and N rows, in row-major order.  Each row in the array is
+   indexed starting from 1 (row 0 is shared by the two tables).
+
+   ---
+
+   Hash table lookup is handled the same in version 1 and 2:
+
+   We assume that N and M will not exceed 2^32 - 1.
+   The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
+
+   Given a 64-bit compilation unit signature or a type signature S, an entry
+   in the hash table is located as follows:
+
+   1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
+      the low-order k bits all set to 1.
+
+   2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
+
+   3) If the hash table entry at index H matches the signature, use that
+      entry.  If the hash table entry at index H is unused (all zeroes),
+      terminate the search: the signature is not present in the table.
+
+   4) Let H = (H + H') modulo M. Repeat at Step 3.
+
+   Because M > N and H' and M are relatively prime, the search is guaranteed
+   to stop at an unused slot or find the match.  */
+
+/* Create a hash table to map DWO IDs to their CU/TU entry in
+   .debug_{info,types}.dwo in DWP_FILE.
+   Returns NULL if there isn't one.
+   Note: This function processes DWP files only, not DWO files.  */
+
+static struct dwp_hash_table *
+create_dwp_hash_table (dwarf2_per_objfile *per_objfile,
+		       struct dwp_file *dwp_file, int is_debug_types)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  bfd *dbfd = dwp_file->dbfd.get ();
+  const gdb_byte *index_ptr, *index_end;
+  struct dwarf2_section_info *index;
+  uint32_t version, nr_columns, nr_units, nr_slots;
+  struct dwp_hash_table *htab;
+
+  if (is_debug_types)
+    index = &dwp_file->sections.tu_index;
+  else
+    index = &dwp_file->sections.cu_index;
+
+  if (index->empty ())
+    return NULL;
+  index->read (objfile);
+
+  index_ptr = index->buffer;
+  index_end = index_ptr + index->size;
+
+  /* For Version 5, the version is really 2 bytes of data & 2 bytes of padding.
+     For now it's safe to just read 4 bytes (particularly as it's difficult to
+     tell if you're dealing with Version 5 before you've read the version).   */
+  version = read_4_bytes (dbfd, index_ptr);
+  index_ptr += 4;
+  if (version == 2 || version == 5)
+    nr_columns = read_4_bytes (dbfd, index_ptr);
+  else
+    nr_columns = 0;
+  index_ptr += 4;
+  nr_units = read_4_bytes (dbfd, index_ptr);
+  index_ptr += 4;
+  nr_slots = read_4_bytes (dbfd, index_ptr);
+  index_ptr += 4;
+
+  if (version != 1 && version != 2 && version != 5)
+    {
+      error (_("Dwarf Error: unsupported DWP file version (%s)"
+	       " [in module %s]"),
+	     pulongest (version), dwp_file->name);
+    }
+  if (nr_slots != (nr_slots & -nr_slots))
+    {
+      error (_("Dwarf Error: number of slots in DWP hash table (%s)"
+	       " is not power of 2 [in module %s]"),
+	     pulongest (nr_slots), dwp_file->name);
+    }
+
+  htab = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwp_hash_table);
+  htab->version = version;
+  htab->nr_columns = nr_columns;
+  htab->nr_units = nr_units;
+  htab->nr_slots = nr_slots;
+  htab->hash_table = index_ptr;
+  htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
+
+  /* Exit early if the table is empty.  */
+  if (nr_slots == 0 || nr_units == 0
+      || (version == 2 && nr_columns == 0)
+      || (version == 5 && nr_columns == 0))
+    {
+      /* All must be zero.  */
+      if (nr_slots != 0 || nr_units != 0
+	  || (version == 2 && nr_columns != 0)
+	  || (version == 5 && nr_columns != 0))
+	{
+	  complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
+		       " all zero [in modules %s]"),
+		     dwp_file->name);
+	}
+      return htab;
+    }
+
+  if (version == 1)
+    {
+      htab->section_pool.v1.indices =
+	htab->unit_table + sizeof (uint32_t) * nr_slots;
+      /* It's harder to decide whether the section is too small in v1.
+	 V1 is deprecated anyway so we punt.  */
+    }
+  else if (version == 2)
+    {
+      const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
+      int *ids = htab->section_pool.v2.section_ids;
+      size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
+      /* Reverse map for error checking.  */
+      int ids_seen[DW_SECT_MAX + 1];
+      int i;
+
+      if (nr_columns < 2)
+	{
+	  error (_("Dwarf Error: bad DWP hash table, too few columns"
+		   " in section table [in module %s]"),
+		 dwp_file->name);
+	}
+      if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
+	{
+	  error (_("Dwarf Error: bad DWP hash table, too many columns"
+		   " in section table [in module %s]"),
+		 dwp_file->name);
+	}
+      memset (ids, 255, sizeof_ids);
+      memset (ids_seen, 255, sizeof (ids_seen));
+      for (i = 0; i < nr_columns; ++i)
+	{
+	  int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
+
+	  if (id < DW_SECT_MIN || id > DW_SECT_MAX)
+	    {
+	      error (_("Dwarf Error: bad DWP hash table, bad section id %d"
+		       " in section table [in module %s]"),
+		     id, dwp_file->name);
+	    }
+	  if (ids_seen[id] != -1)
+	    {
+	      error (_("Dwarf Error: bad DWP hash table, duplicate section"
+		       " id %d in section table [in module %s]"),
+		     id, dwp_file->name);
+	    }
+	  ids_seen[id] = i;
+	  ids[i] = id;
+	}
+      /* Must have exactly one info or types section.  */
+      if (((ids_seen[DW_SECT_INFO] != -1)
+	   + (ids_seen[DW_SECT_TYPES] != -1))
+	  != 1)
+	{
+	  error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
+		   " DWO info/types section [in module %s]"),
+		 dwp_file->name);
+	}
+      /* Must have an abbrev section.  */
+      if (ids_seen[DW_SECT_ABBREV] == -1)
+	{
+	  error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
+		   " section [in module %s]"),
+		 dwp_file->name);
+	}
+      htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
+      htab->section_pool.v2.sizes =
+	htab->section_pool.v2.offsets + (sizeof (uint32_t)
+					 * nr_units * nr_columns);
+      if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
+					  * nr_units * nr_columns))
+	  > index_end)
+	{
+	  error (_("Dwarf Error: DWP index section is corrupt (too small)"
+		   " [in module %s]"),
+		 dwp_file->name);
+	}
+    }
+  else /* version == 5  */
+    {
+      const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
+      int *ids = htab->section_pool.v5.section_ids;
+      size_t sizeof_ids = sizeof (htab->section_pool.v5.section_ids);
+      /* Reverse map for error checking.  */
+      int ids_seen[DW_SECT_MAX_V5 + 1];
+
+      if (nr_columns < 2)
+	{
+	  error (_("Dwarf Error: bad DWP hash table, too few columns"
+		   " in section table [in module %s]"),
+		 dwp_file->name);
+	}
+      if (nr_columns > MAX_NR_V5_DWO_SECTIONS)
+	{
+	  error (_("Dwarf Error: bad DWP hash table, too many columns"
+		   " in section table [in module %s]"),
+		 dwp_file->name);
+	}
+      memset (ids, 255, sizeof_ids);
+      memset (ids_seen, 255, sizeof (ids_seen));
+      for (int i = 0; i < nr_columns; ++i)
+	{
+	  int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
+
+	  if (id < DW_SECT_MIN || id > DW_SECT_MAX_V5)
+	    {
+	      error (_("Dwarf Error: bad DWP hash table, bad section id %d"
+		       " in section table [in module %s]"),
+		     id, dwp_file->name);
+	    }
+	  if (ids_seen[id] != -1)
+	    {
+	      error (_("Dwarf Error: bad DWP hash table, duplicate section"
+		       " id %d in section table [in module %s]"),
+		     id, dwp_file->name);
+	    }
+	  ids_seen[id] = i;
+	  ids[i] = id;
+	}
+      /* Must have seen an info section.  */
+      if (ids_seen[DW_SECT_INFO_V5] == -1)
+	{
+	  error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
+		   " DWO info/types section [in module %s]"),
+		 dwp_file->name);
+	}
+      /* Must have an abbrev section.  */
+      if (ids_seen[DW_SECT_ABBREV_V5] == -1)
+	{
+	  error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
+		   " section [in module %s]"),
+		 dwp_file->name);
+	}
+      htab->section_pool.v5.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
+      htab->section_pool.v5.sizes
+	= htab->section_pool.v5.offsets + (sizeof (uint32_t)
+					 * nr_units * nr_columns);
+      if ((htab->section_pool.v5.sizes + (sizeof (uint32_t)
+					  * nr_units * nr_columns))
+	  > index_end)
+	{
+	  error (_("Dwarf Error: DWP index section is corrupt (too small)"
+		   " [in module %s]"),
+		 dwp_file->name);
+	}
+    }
+
+  return htab;
+}
+
+/* Update SECTIONS with the data from SECTP.
+
+   This function is like the other "locate" section routines that are
+   passed to bfd_map_over_sections, but in this context the sections to
+   read comes from the DWP V1 hash table, not the full ELF section table.
+
+   The result is non-zero for success, or zero if an error was found.  */
+
+static int
+locate_v1_virtual_dwo_sections (asection *sectp,
+				struct virtual_v1_dwo_sections *sections)
+{
+  const struct dwop_section_names *names = &dwop_section_names;
+
+  if (section_is_p (sectp->name, &names->abbrev_dwo))
+    {
+      /* There can be only one.  */
+      if (sections->abbrev.s.section != NULL)
+	return 0;
+      sections->abbrev.s.section = sectp;
+      sections->abbrev.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->info_dwo)
+	   || section_is_p (sectp->name, &names->types_dwo))
+    {
+      /* There can be only one.  */
+      if (sections->info_or_types.s.section != NULL)
+	return 0;
+      sections->info_or_types.s.section = sectp;
+      sections->info_or_types.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->line_dwo))
+    {
+      /* There can be only one.  */
+      if (sections->line.s.section != NULL)
+	return 0;
+      sections->line.s.section = sectp;
+      sections->line.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->loc_dwo))
+    {
+      /* There can be only one.  */
+      if (sections->loc.s.section != NULL)
+	return 0;
+      sections->loc.s.section = sectp;
+      sections->loc.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->macinfo_dwo))
+    {
+      /* There can be only one.  */
+      if (sections->macinfo.s.section != NULL)
+	return 0;
+      sections->macinfo.s.section = sectp;
+      sections->macinfo.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->macro_dwo))
+    {
+      /* There can be only one.  */
+      if (sections->macro.s.section != NULL)
+	return 0;
+      sections->macro.s.section = sectp;
+      sections->macro.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->str_offsets_dwo))
+    {
+      /* There can be only one.  */
+      if (sections->str_offsets.s.section != NULL)
+	return 0;
+      sections->str_offsets.s.section = sectp;
+      sections->str_offsets.size = bfd_section_size (sectp);
+    }
+  else
+    {
+      /* No other kind of section is valid.  */
+      return 0;
+    }
+
+  return 1;
+}
+
+/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
+   UNIT_INDEX is the index of the DWO unit in the DWP hash table.
+   COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
+   This is for DWP version 1 files.  */
+
+static struct dwo_unit *
+create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile *per_objfile,
+			   struct dwp_file *dwp_file,
+			   uint32_t unit_index,
+			   const char *comp_dir,
+			   ULONGEST signature, int is_debug_types)
+{
+  const struct dwp_hash_table *dwp_htab =
+    is_debug_types ? dwp_file->tus : dwp_file->cus;
+  bfd *dbfd = dwp_file->dbfd.get ();
+  const char *kind = is_debug_types ? "TU" : "CU";
+  struct dwo_file *dwo_file;
+  struct dwo_unit *dwo_unit;
+  struct virtual_v1_dwo_sections sections;
+  void **dwo_file_slot;
+  int i;
+
+  gdb_assert (dwp_file->version == 1);
+
+  if (dwarf_read_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
+			  kind,
+			  pulongest (unit_index), hex_string (signature),
+			  dwp_file->name);
+    }
+
+  /* Fetch the sections of this DWO unit.
+     Put a limit on the number of sections we look for so that bad data
+     doesn't cause us to loop forever.  */
+
+#define MAX_NR_V1_DWO_SECTIONS \
+  (1 /* .debug_info or .debug_types */ \
+   + 1 /* .debug_abbrev */ \
+   + 1 /* .debug_line */ \
+   + 1 /* .debug_loc */ \
+   + 1 /* .debug_str_offsets */ \
+   + 1 /* .debug_macro or .debug_macinfo */ \
+   + 1 /* trailing zero */)
+
+  memset (&sections, 0, sizeof (sections));
+
+  for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
+    {
+      asection *sectp;
+      uint32_t section_nr =
+	read_4_bytes (dbfd,
+		      dwp_htab->section_pool.v1.indices
+		      + (unit_index + i) * sizeof (uint32_t));
+
+      if (section_nr == 0)
+	break;
+      if (section_nr >= dwp_file->num_sections)
+	{
+	  error (_("Dwarf Error: bad DWP hash table, section number too large"
+		   " [in module %s]"),
+		 dwp_file->name);
+	}
+
+      sectp = dwp_file->elf_sections[section_nr];
+      if (! locate_v1_virtual_dwo_sections (sectp, &sections))
+	{
+	  error (_("Dwarf Error: bad DWP hash table, invalid section found"
+		   " [in module %s]"),
+		 dwp_file->name);
+	}
+    }
+
+  if (i < 2
+      || sections.info_or_types.empty ()
+      || sections.abbrev.empty ())
+    {
+      error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
+	       " [in module %s]"),
+	     dwp_file->name);
+    }
+  if (i == MAX_NR_V1_DWO_SECTIONS)
+    {
+      error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
+	       " [in module %s]"),
+	     dwp_file->name);
+    }
+
+  /* It's easier for the rest of the code if we fake a struct dwo_file and
+     have dwo_unit "live" in that.  At least for now.
+
+     The DWP file can be made up of a random collection of CUs and TUs.
+     However, for each CU + set of TUs that came from the same original DWO
+     file, we can combine them back into a virtual DWO file to save space
+     (fewer struct dwo_file objects to allocate).  Remember that for really
+     large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
+
+  std::string virtual_dwo_name =
+    string_printf ("virtual-dwo/%d-%d-%d-%d",
+		   sections.abbrev.get_id (),
+		   sections.line.get_id (),
+		   sections.loc.get_id (),
+		   sections.str_offsets.get_id ());
+  /* Can we use an existing virtual DWO file?  */
+  dwo_file_slot = lookup_dwo_file_slot (per_objfile, virtual_dwo_name.c_str (),
+					comp_dir);
+  /* Create one if necessary.  */
+  if (*dwo_file_slot == NULL)
+    {
+      if (dwarf_read_debug)
+	{
+	  fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
+			      virtual_dwo_name.c_str ());
+	}
+      dwo_file = new struct dwo_file;
+      dwo_file->dwo_name = per_objfile->objfile->intern (virtual_dwo_name);
+      dwo_file->comp_dir = comp_dir;
+      dwo_file->sections.abbrev = sections.abbrev;
+      dwo_file->sections.line = sections.line;
+      dwo_file->sections.loc = sections.loc;
+      dwo_file->sections.macinfo = sections.macinfo;
+      dwo_file->sections.macro = sections.macro;
+      dwo_file->sections.str_offsets = sections.str_offsets;
+      /* The "str" section is global to the entire DWP file.  */
+      dwo_file->sections.str = dwp_file->sections.str;
+      /* The info or types section is assigned below to dwo_unit,
+	 there's no need to record it in dwo_file.
+	 Also, we can't simply record type sections in dwo_file because
+	 we record a pointer into the vector in dwo_unit.  As we collect more
+	 types we'll grow the vector and eventually have to reallocate space
+	 for it, invalidating all copies of pointers into the previous
+	 contents.  */
+      *dwo_file_slot = dwo_file;
+    }
+  else
+    {
+      if (dwarf_read_debug)
+	{
+	  fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
+			      virtual_dwo_name.c_str ());
+	}
+      dwo_file = (struct dwo_file *) *dwo_file_slot;
+    }
+
+  dwo_unit = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwo_unit);
+  dwo_unit->dwo_file = dwo_file;
+  dwo_unit->signature = signature;
+  dwo_unit->section =
+    XOBNEW (&per_objfile->per_bfd->obstack, struct dwarf2_section_info);
+  *dwo_unit->section = sections.info_or_types;
+  /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
+
+  return dwo_unit;
+}
+
+/* Subroutine of create_dwo_unit_in_dwp_v2 and create_dwo_unit_in_dwp_v5 to
+   simplify them.  Given a pointer to the containing section SECTION, and
+   OFFSET,SIZE of the piece within that section used by a TU/CU, return a
+   virtual section of just that piece.  */
+
+static struct dwarf2_section_info
+create_dwp_v2_or_v5_section (dwarf2_per_objfile *per_objfile,
+			     struct dwarf2_section_info *section,
+			     bfd_size_type offset, bfd_size_type size)
+{
+  struct dwarf2_section_info result;
+  asection *sectp;
+
+  gdb_assert (section != NULL);
+  gdb_assert (!section->is_virtual);
+
+  memset (&result, 0, sizeof (result));
+  result.s.containing_section = section;
+  result.is_virtual = true;
+
+  if (size == 0)
+    return result;
+
+  sectp = section->get_bfd_section ();
+
+  /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
+     bounds of the real section.  This is a pretty-rare event, so just
+     flag an error (easier) instead of a warning and trying to cope.  */
+  if (sectp == NULL
+      || offset + size > bfd_section_size (sectp))
+    {
+      error (_("Dwarf Error: Bad DWP V2 or V5 section info, doesn't fit"
+	       " in section %s [in module %s]"),
+	     sectp ? bfd_section_name (sectp) : "<unknown>",
+	     objfile_name (per_objfile->objfile));
+    }
+
+  result.virtual_offset = offset;
+  result.size = size;
+  return result;
+}
+
+/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
+   UNIT_INDEX is the index of the DWO unit in the DWP hash table.
+   COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
+   This is for DWP version 2 files.  */
+
+static struct dwo_unit *
+create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile *per_objfile,
+			   struct dwp_file *dwp_file,
+			   uint32_t unit_index,
+			   const char *comp_dir,
+			   ULONGEST signature, int is_debug_types)
+{
+  const struct dwp_hash_table *dwp_htab =
+    is_debug_types ? dwp_file->tus : dwp_file->cus;
+  bfd *dbfd = dwp_file->dbfd.get ();
+  const char *kind = is_debug_types ? "TU" : "CU";
+  struct dwo_file *dwo_file;
+  struct dwo_unit *dwo_unit;
+  struct virtual_v2_or_v5_dwo_sections sections;
+  void **dwo_file_slot;
+  int i;
+
+  gdb_assert (dwp_file->version == 2);
+
+  if (dwarf_read_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
+			  kind,
+			  pulongest (unit_index), hex_string (signature),
+			  dwp_file->name);
+    }
+
+  /* Fetch the section offsets of this DWO unit.  */
+
+  memset (&sections, 0, sizeof (sections));
+
+  for (i = 0; i < dwp_htab->nr_columns; ++i)
+    {
+      uint32_t offset = read_4_bytes (dbfd,
+				      dwp_htab->section_pool.v2.offsets
+				      + (((unit_index - 1) * dwp_htab->nr_columns
+					  + i)
+					 * sizeof (uint32_t)));
+      uint32_t size = read_4_bytes (dbfd,
+				    dwp_htab->section_pool.v2.sizes
+				    + (((unit_index - 1) * dwp_htab->nr_columns
+					+ i)
+				       * sizeof (uint32_t)));
+
+      switch (dwp_htab->section_pool.v2.section_ids[i])
+	{
+	case DW_SECT_INFO:
+	case DW_SECT_TYPES:
+	  sections.info_or_types_offset = offset;
+	  sections.info_or_types_size = size;
+	  break;
+	case DW_SECT_ABBREV:
+	  sections.abbrev_offset = offset;
+	  sections.abbrev_size = size;
+	  break;
+	case DW_SECT_LINE:
+	  sections.line_offset = offset;
+	  sections.line_size = size;
+	  break;
+	case DW_SECT_LOC:
+	  sections.loc_offset = offset;
+	  sections.loc_size = size;
+	  break;
+	case DW_SECT_STR_OFFSETS:
+	  sections.str_offsets_offset = offset;
+	  sections.str_offsets_size = size;
+	  break;
+	case DW_SECT_MACINFO:
+	  sections.macinfo_offset = offset;
+	  sections.macinfo_size = size;
+	  break;
+	case DW_SECT_MACRO:
+	  sections.macro_offset = offset;
+	  sections.macro_size = size;
+	  break;
+	}
+    }
+
+  /* It's easier for the rest of the code if we fake a struct dwo_file and
+     have dwo_unit "live" in that.  At least for now.
+
+     The DWP file can be made up of a random collection of CUs and TUs.
+     However, for each CU + set of TUs that came from the same original DWO
+     file, we can combine them back into a virtual DWO file to save space
+     (fewer struct dwo_file objects to allocate).  Remember that for really
+     large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
+
+  std::string virtual_dwo_name =
+    string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
+		   (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
+		   (long) (sections.line_size ? sections.line_offset : 0),
+		   (long) (sections.loc_size ? sections.loc_offset : 0),
+		   (long) (sections.str_offsets_size
+			   ? sections.str_offsets_offset : 0));
+  /* Can we use an existing virtual DWO file?  */
+  dwo_file_slot = lookup_dwo_file_slot (per_objfile, virtual_dwo_name.c_str (),
+					comp_dir);
+  /* Create one if necessary.  */
+  if (*dwo_file_slot == NULL)
+    {
+      if (dwarf_read_debug)
+	{
+	  fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
+			      virtual_dwo_name.c_str ());
+	}
+      dwo_file = new struct dwo_file;
+      dwo_file->dwo_name = per_objfile->objfile->intern (virtual_dwo_name);
+      dwo_file->comp_dir = comp_dir;
+      dwo_file->sections.abbrev =
+	create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.abbrev,
+				     sections.abbrev_offset,
+				     sections.abbrev_size);
+      dwo_file->sections.line =
+	create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.line,
+				     sections.line_offset,
+				     sections.line_size);
+      dwo_file->sections.loc =
+	create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.loc,
+				     sections.loc_offset, sections.loc_size);
+      dwo_file->sections.macinfo =
+	create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.macinfo,
+				     sections.macinfo_offset,
+				     sections.macinfo_size);
+      dwo_file->sections.macro =
+	create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.macro,
+				     sections.macro_offset,
+				     sections.macro_size);
+      dwo_file->sections.str_offsets =
+	create_dwp_v2_or_v5_section (per_objfile,
+				     &dwp_file->sections.str_offsets,
+				     sections.str_offsets_offset,
+				     sections.str_offsets_size);
+      /* The "str" section is global to the entire DWP file.  */
+      dwo_file->sections.str = dwp_file->sections.str;
+      /* The info or types section is assigned below to dwo_unit,
+	 there's no need to record it in dwo_file.
+	 Also, we can't simply record type sections in dwo_file because
+	 we record a pointer into the vector in dwo_unit.  As we collect more
+	 types we'll grow the vector and eventually have to reallocate space
+	 for it, invalidating all copies of pointers into the previous
+	 contents.  */
+      *dwo_file_slot = dwo_file;
+    }
+  else
+    {
+      if (dwarf_read_debug)
+	{
+	  fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
+			      virtual_dwo_name.c_str ());
+	}
+      dwo_file = (struct dwo_file *) *dwo_file_slot;
+    }
+
+  dwo_unit = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwo_unit);
+  dwo_unit->dwo_file = dwo_file;
+  dwo_unit->signature = signature;
+  dwo_unit->section =
+    XOBNEW (&per_objfile->per_bfd->obstack, struct dwarf2_section_info);
+  *dwo_unit->section = create_dwp_v2_or_v5_section
+                         (per_objfile,
+			  is_debug_types
+			  ? &dwp_file->sections.types
+			  : &dwp_file->sections.info,
+			  sections.info_or_types_offset,
+			  sections.info_or_types_size);
+  /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
+
+  return dwo_unit;
+}
+
+/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
+   UNIT_INDEX is the index of the DWO unit in the DWP hash table.
+   COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
+   This is for DWP version 5 files.  */
+
+static struct dwo_unit *
+create_dwo_unit_in_dwp_v5 (dwarf2_per_objfile *per_objfile,
+			   struct dwp_file *dwp_file,
+			   uint32_t unit_index,
+			   const char *comp_dir,
+			   ULONGEST signature, int is_debug_types)
+{
+  const struct dwp_hash_table *dwp_htab
+    = is_debug_types ? dwp_file->tus : dwp_file->cus;
+  bfd *dbfd = dwp_file->dbfd.get ();
+  const char *kind = is_debug_types ? "TU" : "CU";
+  struct dwo_file *dwo_file;
+  struct dwo_unit *dwo_unit;
+  struct virtual_v2_or_v5_dwo_sections sections {};
+  void **dwo_file_slot;
+
+  gdb_assert (dwp_file->version == 5);
+
+  if (dwarf_read_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V5 file: %s\n",
+                          kind,
+                          pulongest (unit_index), hex_string (signature),
+                          dwp_file->name);
+    }
+
+  /* Fetch the section offsets of this DWO unit.  */
+
+  /*  memset (&sections, 0, sizeof (sections)); */
+
+  for (int i = 0; i < dwp_htab->nr_columns; ++i)
+    {
+      uint32_t offset = read_4_bytes (dbfd,
+                                      dwp_htab->section_pool.v5.offsets
+                                      + (((unit_index - 1)
+                                          * dwp_htab->nr_columns
+                                          + i)
+                                         * sizeof (uint32_t)));
+      uint32_t size = read_4_bytes (dbfd,
+                                    dwp_htab->section_pool.v5.sizes
+                                    + (((unit_index - 1) * dwp_htab->nr_columns
+                                        + i)
+                                       * sizeof (uint32_t)));
+
+      switch (dwp_htab->section_pool.v5.section_ids[i])
+        {
+          case DW_SECT_ABBREV_V5:
+            sections.abbrev_offset = offset;
+            sections.abbrev_size = size;
+            break;
+          case DW_SECT_INFO_V5:
+            sections.info_or_types_offset = offset;
+            sections.info_or_types_size = size;
+            break;
+          case DW_SECT_LINE_V5:
+            sections.line_offset = offset;
+            sections.line_size = size;
+            break;
+          case DW_SECT_LOCLISTS_V5:
+            sections.loclists_offset = offset;
+            sections.loclists_size = size;
+            break;
+          case DW_SECT_MACRO_V5:
+            sections.macro_offset = offset;
+            sections.macro_size = size;
+            break;
+          case DW_SECT_RNGLISTS_V5:
+            sections.rnglists_offset = offset;
+            sections.rnglists_size = size;
+            break;
+          case DW_SECT_STR_OFFSETS_V5:
+            sections.str_offsets_offset = offset;
+            sections.str_offsets_size = size;
+            break;
+          case DW_SECT_RESERVED_V5:
+          default:
+            break;
+        }
+    }
+
+  /* It's easier for the rest of the code if we fake a struct dwo_file and
+     have dwo_unit "live" in that.  At least for now.
+
+     The DWP file can be made up of a random collection of CUs and TUs.
+     However, for each CU + set of TUs that came from the same original DWO
+     file, we can combine them back into a virtual DWO file to save space
+     (fewer struct dwo_file objects to allocate).  Remember that for really
+     large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
+
+  std::string virtual_dwo_name =
+    string_printf ("virtual-dwo/%ld-%ld-%ld-%ld-%ld-%ld",
+                 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
+                 (long) (sections.line_size ? sections.line_offset : 0),
+                 (long) (sections.loclists_size ? sections.loclists_offset : 0),
+                 (long) (sections.str_offsets_size
+                            ? sections.str_offsets_offset : 0),
+                 (long) (sections.macro_size ? sections.macro_offset : 0),
+                 (long) (sections.rnglists_size ? sections.rnglists_offset: 0));
+  /* Can we use an existing virtual DWO file?  */
+  dwo_file_slot = lookup_dwo_file_slot (per_objfile,
+                                        virtual_dwo_name.c_str (),
+                                        comp_dir);
+  /* Create one if necessary.  */
+  if (*dwo_file_slot == NULL)
+    {
+      if (dwarf_read_debug)
+        {
+          fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
+                              virtual_dwo_name.c_str ());
+        }
+      dwo_file = new struct dwo_file;
+      dwo_file->dwo_name = per_objfile->objfile->intern (virtual_dwo_name);
+      dwo_file->comp_dir = comp_dir;
+      dwo_file->sections.abbrev =
+        create_dwp_v2_or_v5_section (per_objfile,
+                                     &dwp_file->sections.abbrev,
+                                     sections.abbrev_offset,
+                                     sections.abbrev_size);
+      dwo_file->sections.line =
+        create_dwp_v2_or_v5_section (per_objfile,
+                                     &dwp_file->sections.line,
+                                     sections.line_offset, sections.line_size);
+      dwo_file->sections.macro =
+        create_dwp_v2_or_v5_section (per_objfile,
+                                     &dwp_file->sections.macro,
+                                     sections.macro_offset,
+                                     sections.macro_size);
+      dwo_file->sections.loclists =
+        create_dwp_v2_or_v5_section (per_objfile,
+                                     &dwp_file->sections.loclists,
+                                     sections.loclists_offset,
+                                     sections.loclists_size);
+      dwo_file->sections.rnglists =
+        create_dwp_v2_or_v5_section (per_objfile,
+                                     &dwp_file->sections.rnglists,
+                                     sections.rnglists_offset,
+                                     sections.rnglists_size);
+      dwo_file->sections.str_offsets =
+        create_dwp_v2_or_v5_section (per_objfile,
+                                     &dwp_file->sections.str_offsets,
+                                     sections.str_offsets_offset,
+                                     sections.str_offsets_size);
+      /* The "str" section is global to the entire DWP file.  */
+      dwo_file->sections.str = dwp_file->sections.str;
+      /* The info or types section is assigned below to dwo_unit,
+         there's no need to record it in dwo_file.
+         Also, we can't simply record type sections in dwo_file because
+         we record a pointer into the vector in dwo_unit.  As we collect more
+         types we'll grow the vector and eventually have to reallocate space
+         for it, invalidating all copies of pointers into the previous
+         contents.  */
+      *dwo_file_slot = dwo_file;
+    }
+  else
+    {
+      if (dwarf_read_debug)
+        {
+          fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
+                              virtual_dwo_name.c_str ());
+        }
+      dwo_file = (struct dwo_file *) *dwo_file_slot;
+    }
+
+  dwo_unit = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwo_unit);
+  dwo_unit->dwo_file = dwo_file;
+  dwo_unit->signature = signature;
+  dwo_unit->section
+    = XOBNEW (&per_objfile->per_bfd->obstack, struct dwarf2_section_info);
+  *dwo_unit->section = create_dwp_v2_or_v5_section (per_objfile,
+                                              &dwp_file->sections.info,
+                                              sections.info_or_types_offset,
+                                              sections.info_or_types_size);
+  /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
+
+  return dwo_unit;
+}
+
+/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
+   Returns NULL if the signature isn't found.  */
+
+static struct dwo_unit *
+lookup_dwo_unit_in_dwp (dwarf2_per_objfile *per_objfile,
+			struct dwp_file *dwp_file, const char *comp_dir,
+			ULONGEST signature, int is_debug_types)
+{
+  const struct dwp_hash_table *dwp_htab =
+    is_debug_types ? dwp_file->tus : dwp_file->cus;
+  bfd *dbfd = dwp_file->dbfd.get ();
+  uint32_t mask = dwp_htab->nr_slots - 1;
+  uint32_t hash = signature & mask;
+  uint32_t hash2 = ((signature >> 32) & mask) | 1;
+  unsigned int i;
+  void **slot;
+  struct dwo_unit find_dwo_cu;
+
+  memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
+  find_dwo_cu.signature = signature;
+  slot = htab_find_slot (is_debug_types
+			 ? dwp_file->loaded_tus.get ()
+			 : dwp_file->loaded_cus.get (),
+			 &find_dwo_cu, INSERT);
+
+  if (*slot != NULL)
+    return (struct dwo_unit *) *slot;
+
+  /* Use a for loop so that we don't loop forever on bad debug info.  */
+  for (i = 0; i < dwp_htab->nr_slots; ++i)
+    {
+      ULONGEST signature_in_table;
+
+      signature_in_table =
+	read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
+      if (signature_in_table == signature)
+	{
+	  uint32_t unit_index =
+	    read_4_bytes (dbfd,
+			  dwp_htab->unit_table + hash * sizeof (uint32_t));
+
+	  if (dwp_file->version == 1)
+	    {
+	      *slot = create_dwo_unit_in_dwp_v1 (per_objfile, dwp_file,
+						 unit_index, comp_dir,
+						 signature, is_debug_types);
+	    }
+	  else if (dwp_file->version == 2)
+	    {
+	      *slot = create_dwo_unit_in_dwp_v2 (per_objfile, dwp_file,
+						 unit_index, comp_dir,
+						 signature, is_debug_types);
+	    }
+	  else /* version == 5  */
+	    {
+	      *slot = create_dwo_unit_in_dwp_v5 (per_objfile, dwp_file,
+						 unit_index, comp_dir,
+						 signature, is_debug_types);
+	    }
+	  return (struct dwo_unit *) *slot;
+	}
+      if (signature_in_table == 0)
+	return NULL;
+      hash = (hash + hash2) & mask;
+    }
+
+  error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
+	   " [in module %s]"),
+	 dwp_file->name);
+}
+
+/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
+   Open the file specified by FILE_NAME and hand it off to BFD for
+   preliminary analysis.  Return a newly initialized bfd *, which
+   includes a canonicalized copy of FILE_NAME.
+   If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
+   SEARCH_CWD is true if the current directory is to be searched.
+   It will be searched before debug-file-directory.
+   If successful, the file is added to the bfd include table of the
+   objfile's bfd (see gdb_bfd_record_inclusion).
+   If unable to find/open the file, return NULL.
+   NOTE: This function is derived from symfile_bfd_open.  */
+
+static gdb_bfd_ref_ptr
+try_open_dwop_file (dwarf2_per_objfile *per_objfile,
+		    const char *file_name, int is_dwp, int search_cwd)
+{
+  int desc;
+  /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
+     FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
+     to debug_file_directory.  */
+  const char *search_path;
+  static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
+
+  gdb::unique_xmalloc_ptr<char> search_path_holder;
+  if (search_cwd)
+    {
+      if (*debug_file_directory != '\0')
+	{
+	  search_path_holder.reset (concat (".", dirname_separator_string,
+					    debug_file_directory,
+					    (char *) NULL));
+	  search_path = search_path_holder.get ();
+	}
+      else
+	search_path = ".";
+    }
+  else
+    search_path = debug_file_directory;
+
+  openp_flags flags = OPF_RETURN_REALPATH;
+  if (is_dwp)
+    flags |= OPF_SEARCH_IN_PATH;
+
+  gdb::unique_xmalloc_ptr<char> absolute_name;
+  desc = openp (search_path, flags, file_name,
+		O_RDONLY | O_BINARY, &absolute_name);
+  if (desc < 0)
+    return NULL;
+
+  gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
+					 gnutarget, desc));
+  if (sym_bfd == NULL)
+    return NULL;
+  bfd_set_cacheable (sym_bfd.get (), 1);
+
+  if (!bfd_check_format (sym_bfd.get (), bfd_object))
+    return NULL;
+
+  /* Success.  Record the bfd as having been included by the objfile's bfd.
+     This is important because things like demangled_names_hash lives in the
+     objfile's per_bfd space and may have references to things like symbol
+     names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
+  gdb_bfd_record_inclusion (per_objfile->objfile->obfd, sym_bfd.get ());
+
+  return sym_bfd;
+}
+
+/* Try to open DWO file FILE_NAME.
+   COMP_DIR is the DW_AT_comp_dir attribute.
+   The result is the bfd handle of the file.
+   If there is a problem finding or opening the file, return NULL.
+   Upon success, the canonicalized path of the file is stored in the bfd,
+   same as symfile_bfd_open.  */
+
+static gdb_bfd_ref_ptr
+open_dwo_file (dwarf2_per_objfile *per_objfile,
+	       const char *file_name, const char *comp_dir)
+{
+  if (IS_ABSOLUTE_PATH (file_name))
+    return try_open_dwop_file (per_objfile, file_name,
+			       0 /*is_dwp*/, 0 /*search_cwd*/);
+
+  /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
+
+  if (comp_dir != NULL)
+    {
+      gdb::unique_xmalloc_ptr<char> path_to_try
+	(concat (comp_dir, SLASH_STRING, file_name, (char *) NULL));
+
+      /* NOTE: If comp_dir is a relative path, this will also try the
+	 search path, which seems useful.  */
+      gdb_bfd_ref_ptr abfd (try_open_dwop_file (per_objfile, path_to_try.get (),
+						0 /*is_dwp*/,
+						1 /*search_cwd*/));
+      if (abfd != NULL)
+	return abfd;
+    }
+
+  /* That didn't work, try debug-file-directory, which, despite its name,
+     is a list of paths.  */
+
+  if (*debug_file_directory == '\0')
+    return NULL;
+
+  return try_open_dwop_file (per_objfile, file_name,
+			     0 /*is_dwp*/, 1 /*search_cwd*/);
+}
+
+/* This function is mapped across the sections and remembers the offset and
+   size of each of the DWO debugging sections we are interested in.  */
+
+static void
+dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
+{
+  struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
+  const struct dwop_section_names *names = &dwop_section_names;
+
+  if (section_is_p (sectp->name, &names->abbrev_dwo))
+    {
+      dwo_sections->abbrev.s.section = sectp;
+      dwo_sections->abbrev.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->info_dwo))
+    {
+      dwo_sections->info.s.section = sectp;
+      dwo_sections->info.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->line_dwo))
+    {
+      dwo_sections->line.s.section = sectp;
+      dwo_sections->line.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->loc_dwo))
+    {
+      dwo_sections->loc.s.section = sectp;
+      dwo_sections->loc.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->loclists_dwo))
+    {
+      dwo_sections->loclists.s.section = sectp;
+      dwo_sections->loclists.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->macinfo_dwo))
+    {
+      dwo_sections->macinfo.s.section = sectp;
+      dwo_sections->macinfo.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->macro_dwo))
+    {
+      dwo_sections->macro.s.section = sectp;
+      dwo_sections->macro.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->rnglists_dwo))
+    {
+      dwo_sections->rnglists.s.section = sectp;
+      dwo_sections->rnglists.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->str_dwo))
+    {
+      dwo_sections->str.s.section = sectp;
+      dwo_sections->str.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->str_offsets_dwo))
+    {
+      dwo_sections->str_offsets.s.section = sectp;
+      dwo_sections->str_offsets.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->types_dwo))
+    {
+      struct dwarf2_section_info type_section;
+
+      memset (&type_section, 0, sizeof (type_section));
+      type_section.s.section = sectp;
+      type_section.size = bfd_section_size (sectp);
+      dwo_sections->types.push_back (type_section);
+    }
+}
+
+/* Initialize the use of the DWO file specified by DWO_NAME and referenced
+   by PER_CU.  This is for the non-DWP case.
+   The result is NULL if DWO_NAME can't be found.  */
+
+static struct dwo_file *
+open_and_init_dwo_file (dwarf2_cu *cu, const char *dwo_name,
+			const char *comp_dir)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+
+  gdb_bfd_ref_ptr dbfd = open_dwo_file (per_objfile, dwo_name, comp_dir);
+  if (dbfd == NULL)
+    {
+      if (dwarf_read_debug)
+	fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
+      return NULL;
+    }
+
+  dwo_file_up dwo_file (new struct dwo_file);
+  dwo_file->dwo_name = dwo_name;
+  dwo_file->comp_dir = comp_dir;
+  dwo_file->dbfd = std::move (dbfd);
+
+  bfd_map_over_sections (dwo_file->dbfd.get (), dwarf2_locate_dwo_sections,
+			 &dwo_file->sections);
+
+  create_cus_hash_table (per_objfile, cu, *dwo_file, dwo_file->sections.info,
+			 dwo_file->cus);
+
+  if (cu->per_cu->dwarf_version < 5)
+    {
+      create_debug_types_hash_table (per_objfile, dwo_file.get (),
+				     dwo_file->sections.types, dwo_file->tus);
+    }
+  else
+    {
+      create_debug_type_hash_table (per_objfile, dwo_file.get (),
+				    &dwo_file->sections.info, dwo_file->tus,
+				    rcuh_kind::TYPE);
+    }
+
+  if (dwarf_read_debug)
+    fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
+
+  return dwo_file.release ();
+}
+
+/* This function is mapped across the sections and remembers the offset and
+   size of each of the DWP debugging sections common to version 1 and 2 that
+   we are interested in.  */
+
+static void
+dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
+				   void *dwp_file_ptr)
+{
+  struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
+  const struct dwop_section_names *names = &dwop_section_names;
+  unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
+
+  /* Record the ELF section number for later lookup: this is what the
+     .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
+  gdb_assert (elf_section_nr < dwp_file->num_sections);
+  dwp_file->elf_sections[elf_section_nr] = sectp;
+
+  /* Look for specific sections that we need.  */
+  if (section_is_p (sectp->name, &names->str_dwo))
+    {
+      dwp_file->sections.str.s.section = sectp;
+      dwp_file->sections.str.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->cu_index))
+    {
+      dwp_file->sections.cu_index.s.section = sectp;
+      dwp_file->sections.cu_index.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->tu_index))
+    {
+      dwp_file->sections.tu_index.s.section = sectp;
+      dwp_file->sections.tu_index.size = bfd_section_size (sectp);
+    }
+}
+
+/* This function is mapped across the sections and remembers the offset and
+   size of each of the DWP version 2 debugging sections that we are interested
+   in.  This is split into a separate function because we don't know if we
+   have version 1 or 2 or 5 until we parse the cu_index/tu_index sections.  */
+
+static void
+dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
+{
+  struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
+  const struct dwop_section_names *names = &dwop_section_names;
+  unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
+
+  /* Record the ELF section number for later lookup: this is what the
+     .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
+  gdb_assert (elf_section_nr < dwp_file->num_sections);
+  dwp_file->elf_sections[elf_section_nr] = sectp;
+
+  /* Look for specific sections that we need.  */
+  if (section_is_p (sectp->name, &names->abbrev_dwo))
+    {
+      dwp_file->sections.abbrev.s.section = sectp;
+      dwp_file->sections.abbrev.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->info_dwo))
+    {
+      dwp_file->sections.info.s.section = sectp;
+      dwp_file->sections.info.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->line_dwo))
+    {
+      dwp_file->sections.line.s.section = sectp;
+      dwp_file->sections.line.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->loc_dwo))
+    {
+      dwp_file->sections.loc.s.section = sectp;
+      dwp_file->sections.loc.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->macinfo_dwo))
+    {
+      dwp_file->sections.macinfo.s.section = sectp;
+      dwp_file->sections.macinfo.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->macro_dwo))
+    {
+      dwp_file->sections.macro.s.section = sectp;
+      dwp_file->sections.macro.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->str_offsets_dwo))
+    {
+      dwp_file->sections.str_offsets.s.section = sectp;
+      dwp_file->sections.str_offsets.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->types_dwo))
+    {
+      dwp_file->sections.types.s.section = sectp;
+      dwp_file->sections.types.size = bfd_section_size (sectp);
+    }
+}
+
+/* This function is mapped across the sections and remembers the offset and
+   size of each of the DWP version 5 debugging sections that we are interested
+   in.  This is split into a separate function because we don't know if we
+   have version 1 or 2 or 5 until we parse the cu_index/tu_index sections.  */
+
+static void
+dwarf2_locate_v5_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
+{
+  struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
+  const struct dwop_section_names *names = &dwop_section_names;
+  unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
+
+  /* Record the ELF section number for later lookup: this is what the
+     .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
+  gdb_assert (elf_section_nr < dwp_file->num_sections);
+  dwp_file->elf_sections[elf_section_nr] = sectp;
+
+  /* Look for specific sections that we need.  */
+  if (section_is_p (sectp->name, &names->abbrev_dwo))
+    {
+      dwp_file->sections.abbrev.s.section = sectp;
+      dwp_file->sections.abbrev.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->info_dwo))
+    {
+      dwp_file->sections.info.s.section = sectp;
+      dwp_file->sections.info.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->line_dwo))
+   {
+     dwp_file->sections.line.s.section = sectp;
+     dwp_file->sections.line.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->loclists_dwo))
+    {
+      dwp_file->sections.loclists.s.section = sectp;
+      dwp_file->sections.loclists.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->macro_dwo))
+    {
+      dwp_file->sections.macro.s.section = sectp;
+      dwp_file->sections.macro.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->rnglists_dwo))
+    {
+      dwp_file->sections.rnglists.s.section = sectp;
+      dwp_file->sections.rnglists.size = bfd_section_size (sectp);
+    }
+  else if (section_is_p (sectp->name, &names->str_offsets_dwo))
+    {
+      dwp_file->sections.str_offsets.s.section = sectp;
+      dwp_file->sections.str_offsets.size = bfd_section_size (sectp);
+    }
+}
+
+/* Hash function for dwp_file loaded CUs/TUs.  */
+
+static hashval_t
+hash_dwp_loaded_cutus (const void *item)
+{
+  const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
+
+  /* This drops the top 32 bits of the signature, but is ok for a hash.  */
+  return dwo_unit->signature;
+}
+
+/* Equality function for dwp_file loaded CUs/TUs.  */
+
+static int
+eq_dwp_loaded_cutus (const void *a, const void *b)
+{
+  const struct dwo_unit *dua = (const struct dwo_unit *) a;
+  const struct dwo_unit *dub = (const struct dwo_unit *) b;
+
+  return dua->signature == dub->signature;
+}
+
+/* Allocate a hash table for dwp_file loaded CUs/TUs.  */
+
+static htab_up
+allocate_dwp_loaded_cutus_table ()
+{
+  return htab_up (htab_create_alloc (3,
+				     hash_dwp_loaded_cutus,
+				     eq_dwp_loaded_cutus,
+				     NULL, xcalloc, xfree));
+}
+
+/* Try to open DWP file FILE_NAME.
+   The result is the bfd handle of the file.
+   If there is a problem finding or opening the file, return NULL.
+   Upon success, the canonicalized path of the file is stored in the bfd,
+   same as symfile_bfd_open.  */
+
+static gdb_bfd_ref_ptr
+open_dwp_file (dwarf2_per_objfile *per_objfile, const char *file_name)
+{
+  gdb_bfd_ref_ptr abfd (try_open_dwop_file (per_objfile, file_name,
+					    1 /*is_dwp*/,
+					    1 /*search_cwd*/));
+  if (abfd != NULL)
+    return abfd;
+
+  /* Work around upstream bug 15652.
+     http://sourceware.org/bugzilla/show_bug.cgi?id=15652
+     [Whether that's a "bug" is debatable, but it is getting in our way.]
+     We have no real idea where the dwp file is, because gdb's realpath-ing
+     of the executable's path may have discarded the needed info.
+     [IWBN if the dwp file name was recorded in the executable, akin to
+     .gnu_debuglink, but that doesn't exist yet.]
+     Strip the directory from FILE_NAME and search again.  */
+  if (*debug_file_directory != '\0')
+    {
+      /* Don't implicitly search the current directory here.
+	 If the user wants to search "." to handle this case,
+	 it must be added to debug-file-directory.  */
+      return try_open_dwop_file (per_objfile, lbasename (file_name),
+				 1 /*is_dwp*/,
+				 0 /*search_cwd*/);
+    }
+
+  return NULL;
+}
+
+/* Initialize the use of the DWP file for the current objfile.
+   By convention the name of the DWP file is ${objfile}.dwp.
+   The result is NULL if it can't be found.  */
+
+static std::unique_ptr<struct dwp_file>
+open_and_init_dwp_file (dwarf2_per_objfile *per_objfile)
+{
+  struct objfile *objfile = per_objfile->objfile;
+
+  /* Try to find first .dwp for the binary file before any symbolic links
+     resolving.  */
+
+  /* If the objfile is a debug file, find the name of the real binary
+     file and get the name of dwp file from there.  */
+  std::string dwp_name;
+  if (objfile->separate_debug_objfile_backlink != NULL)
+    {
+      struct objfile *backlink = objfile->separate_debug_objfile_backlink;
+      const char *backlink_basename = lbasename (backlink->original_name);
+
+      dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
+    }
+  else
+    dwp_name = objfile->original_name;
+
+  dwp_name += ".dwp";
+
+  gdb_bfd_ref_ptr dbfd (open_dwp_file (per_objfile, dwp_name.c_str ()));
+  if (dbfd == NULL
+      && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
+    {
+      /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
+      dwp_name = objfile_name (objfile);
+      dwp_name += ".dwp";
+      dbfd = open_dwp_file (per_objfile, dwp_name.c_str ());
+    }
+
+  if (dbfd == NULL)
+    {
+      if (dwarf_read_debug)
+	fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
+      return std::unique_ptr<dwp_file> ();
+    }
+
+  const char *name = bfd_get_filename (dbfd.get ());
+  std::unique_ptr<struct dwp_file> dwp_file
+    (new struct dwp_file (name, std::move (dbfd)));
+
+  dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
+  dwp_file->elf_sections =
+    OBSTACK_CALLOC (&per_objfile->per_bfd->obstack,
+		    dwp_file->num_sections, asection *);
+
+  bfd_map_over_sections (dwp_file->dbfd.get (),
+			 dwarf2_locate_common_dwp_sections,
+			 dwp_file.get ());
+
+  dwp_file->cus = create_dwp_hash_table (per_objfile, dwp_file.get (), 0);
+
+  dwp_file->tus = create_dwp_hash_table (per_objfile, dwp_file.get (), 1);
+
+  /* The DWP file version is stored in the hash table.  Oh well.  */
+  if (dwp_file->cus && dwp_file->tus
+      && dwp_file->cus->version != dwp_file->tus->version)
+    {
+      /* 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).  */
+      error (_("Dwarf Error: DWP file CU version %s doesn't match"
+	       " TU version %s [in DWP file %s]"),
+	     pulongest (dwp_file->cus->version),
+	     pulongest (dwp_file->tus->version), dwp_name.c_str ());
+    }
+
+  if (dwp_file->cus)
+    dwp_file->version = dwp_file->cus->version;
+  else if (dwp_file->tus)
+    dwp_file->version = dwp_file->tus->version;
+  else
+    dwp_file->version = 2;
+
+  if (dwp_file->version == 2)
+    bfd_map_over_sections (dwp_file->dbfd.get (),
+			   dwarf2_locate_v2_dwp_sections,
+			   dwp_file.get ());
+  else if (dwp_file->version == 5)
+    bfd_map_over_sections (dwp_file->dbfd.get (),
+			   dwarf2_locate_v5_dwp_sections,
+			   dwp_file.get ());
+
+
+  dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table ();
+  dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table ();
+
+  if (dwarf_read_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
+      fprintf_unfiltered (gdb_stdlog,
+			  "    %s CUs, %s TUs\n",
+			  pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
+			  pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
+    }
+
+  return dwp_file;
+}
+
+/* Wrapper around open_and_init_dwp_file, only open it once.  */
+
+static struct dwp_file *
+get_dwp_file (dwarf2_per_objfile *per_objfile)
+{
+  if (!per_objfile->per_bfd->dwp_checked)
+    {
+      per_objfile->per_bfd->dwp_file = open_and_init_dwp_file (per_objfile);
+      per_objfile->per_bfd->dwp_checked = 1;
+    }
+  return per_objfile->per_bfd->dwp_file.get ();
+}
+
+/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
+   Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
+   or in the DWP file for the objfile, referenced by THIS_UNIT.
+   If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
+   IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
+
+   This is called, for example, when wanting to read a variable with a
+   complex location.  Therefore we don't want to do file i/o for every call.
+   Therefore we don't want to look for a DWO file on every call.
+   Therefore we first see if we've already seen SIGNATURE in a DWP file,
+   then we check if we've already seen DWO_NAME, and only THEN do we check
+   for a DWO file.
+
+   The result is a pointer to the dwo_unit object or NULL if we didn't find it
+   (dwo_id mismatch or couldn't find the DWO/DWP file).  */
+
+static struct dwo_unit *
+lookup_dwo_cutu (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir,
+		 ULONGEST signature, int is_debug_types)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  const char *kind = is_debug_types ? "TU" : "CU";
+  void **dwo_file_slot;
+  struct dwo_file *dwo_file;
+  struct dwp_file *dwp_file;
+
+  /* First see if there's a DWP file.
+     If we have a DWP file but didn't find the DWO inside it, don't
+     look for the original DWO file.  It makes gdb behave differently
+     depending on whether one is debugging in the build tree.  */
+
+  dwp_file = get_dwp_file (per_objfile);
+  if (dwp_file != NULL)
+    {
+      const struct dwp_hash_table *dwp_htab =
+	is_debug_types ? dwp_file->tus : dwp_file->cus;
+
+      if (dwp_htab != NULL)
+	{
+	  struct dwo_unit *dwo_cutu =
+	    lookup_dwo_unit_in_dwp (per_objfile, dwp_file, comp_dir, signature,
+				    is_debug_types);
+
+	  if (dwo_cutu != NULL)
+	    {
+	      if (dwarf_read_debug)
+		{
+		  fprintf_unfiltered (gdb_stdlog,
+				      "Virtual DWO %s %s found: @%s\n",
+				      kind, hex_string (signature),
+				      host_address_to_string (dwo_cutu));
+		}
+	      return dwo_cutu;
+	    }
+	}
+    }
+  else
+    {
+      /* No DWP file, look for the DWO file.  */
+
+      dwo_file_slot = lookup_dwo_file_slot (per_objfile, dwo_name, comp_dir);
+      if (*dwo_file_slot == NULL)
+	{
+	  /* Read in the file and build a table of the CUs/TUs it contains.  */
+	  *dwo_file_slot = open_and_init_dwo_file (cu, dwo_name, comp_dir);
+	}
+      /* NOTE: This will be NULL if unable to open the file.  */
+      dwo_file = (struct dwo_file *) *dwo_file_slot;
+
+      if (dwo_file != NULL)
+	{
+	  struct dwo_unit *dwo_cutu = NULL;
+
+	  if (is_debug_types && dwo_file->tus)
+	    {
+	      struct dwo_unit find_dwo_cutu;
+
+	      memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
+	      find_dwo_cutu.signature = signature;
+	      dwo_cutu
+		= (struct dwo_unit *) htab_find (dwo_file->tus.get (),
+						 &find_dwo_cutu);
+	    }
+	  else if (!is_debug_types && dwo_file->cus)
+	    {
+	      struct dwo_unit find_dwo_cutu;
+
+	      memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
+	      find_dwo_cutu.signature = signature;
+	      dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus.get (),
+						       &find_dwo_cutu);
+	    }
+
+	  if (dwo_cutu != NULL)
+	    {
+	      if (dwarf_read_debug)
+		{
+		  fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
+				      kind, dwo_name, hex_string (signature),
+				      host_address_to_string (dwo_cutu));
+		}
+	      return dwo_cutu;
+	    }
+	}
+    }
+
+  /* We didn't find it.  This could mean a dwo_id mismatch, or
+     someone deleted the DWO/DWP file, or the search path isn't set up
+     correctly to find the file.  */
+
+  if (dwarf_read_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
+			  kind, dwo_name, hex_string (signature));
+    }
+
+  /* This is a warning and not a complaint because it can be caused by
+     pilot error (e.g., user accidentally deleting the DWO).  */
+  {
+    /* Print the name of the DWP file if we looked there, helps the user
+       better diagnose the problem.  */
+    std::string dwp_text;
+
+    if (dwp_file != NULL)
+      dwp_text = string_printf (" [in DWP file %s]",
+				lbasename (dwp_file->name));
+
+    warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
+	       " [in module %s]"),
+	     kind, dwo_name, hex_string (signature), dwp_text.c_str (), kind,
+	     sect_offset_str (cu->per_cu->sect_off), objfile_name (objfile));
+  }
+  return NULL;
+}
+
+/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
+   See lookup_dwo_cutu_unit for details.  */
+
+static struct dwo_unit *
+lookup_dwo_comp_unit (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir,
+		      ULONGEST signature)
+{
+  gdb_assert (!cu->per_cu->is_debug_types);
+
+  return lookup_dwo_cutu (cu, dwo_name, comp_dir, signature, 0);
+}
+
+/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
+   See lookup_dwo_cutu_unit for details.  */
+
+static struct dwo_unit *
+lookup_dwo_type_unit (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir)
+{
+  gdb_assert (cu->per_cu->is_debug_types);
+
+  signatured_type *sig_type = (signatured_type *) cu->per_cu;
+
+  return lookup_dwo_cutu (cu, dwo_name, comp_dir, sig_type->signature, 1);
+}
+
+/* Traversal function for queue_and_load_all_dwo_tus.  */
+
+static int
+queue_and_load_dwo_tu (void **slot, void *info)
+{
+  struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
+  dwarf2_cu *cu = (dwarf2_cu *) info;
+  ULONGEST signature = dwo_unit->signature;
+  signatured_type *sig_type = lookup_dwo_signatured_type (cu, signature);
+
+  if (sig_type != NULL)
+    {
+      struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
+
+      /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
+	 a real dependency of PER_CU on SIG_TYPE.  That is detected later
+	 while processing PER_CU.  */
+      if (maybe_queue_comp_unit (NULL, sig_cu, cu->per_objfile, cu->language))
+	load_full_type_unit (sig_cu, cu->per_objfile);
+      cu->per_cu->imported_symtabs_push (sig_cu);
+    }
+
+  return 1;
+}
+
+/* Queue all TUs contained in the DWO of CU to be read in.
+   The DWO may have the only definition of the type, though it may not be
+   referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
+   http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
+
+static void
+queue_and_load_all_dwo_tus (dwarf2_cu *cu)
+{
+  struct dwo_unit *dwo_unit;
+  struct dwo_file *dwo_file;
+
+  gdb_assert (cu != nullptr);
+  gdb_assert (!cu->per_cu->is_debug_types);
+  gdb_assert (get_dwp_file (cu->per_objfile) == nullptr);
+
+  dwo_unit = cu->dwo_unit;
+  gdb_assert (dwo_unit != NULL);
+
+  dwo_file = dwo_unit->dwo_file;
+  if (dwo_file->tus != NULL)
+    htab_traverse_noresize (dwo_file->tus.get (), queue_and_load_dwo_tu, cu);
+}
+
+/* Read in various DIEs.  */
+
+/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
+   Inherit only the children of the DW_AT_abstract_origin DIE not being
+   already referenced by DW_AT_abstract_origin from the children of the
+   current DIE.  */
+
+static void
+inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct die_info *child_die;
+  sect_offset *offsetp;
+  /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
+  struct die_info *origin_die;
+  /* Iterator of the ORIGIN_DIE children.  */
+  struct die_info *origin_child_die;
+  struct attribute *attr;
+  struct dwarf2_cu *origin_cu;
+  struct pending **origin_previous_list_in_scope;
+
+  attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
+  if (!attr)
+    return;
+
+  /* Note that following die references may follow to a die in a
+     different cu.  */
+
+  origin_cu = cu;
+  origin_die = follow_die_ref (die, attr, &origin_cu);
+
+  /* We're inheriting ORIGIN's children into the scope we'd put DIE's
+     symbols in.  */
+  origin_previous_list_in_scope = origin_cu->list_in_scope;
+  origin_cu->list_in_scope = cu->list_in_scope;
+
+  if (die->tag != origin_die->tag
+      && !(die->tag == DW_TAG_inlined_subroutine
+	   && origin_die->tag == DW_TAG_subprogram))
+    complaint (_("DIE %s and its abstract origin %s have different tags"),
+	       sect_offset_str (die->sect_off),
+	       sect_offset_str (origin_die->sect_off));
+
+  std::vector<sect_offset> offsets;
+
+  for (child_die = die->child;
+       child_die && child_die->tag;
+       child_die = child_die->sibling)
+    {
+      struct die_info *child_origin_die;
+      struct dwarf2_cu *child_origin_cu;
+
+      /* We are trying to process concrete instance entries:
+	 DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
+	 it's not relevant to our analysis here. i.e. detecting DIEs that are
+	 present in the abstract instance but not referenced in the concrete
+	 one.  */
+      if (child_die->tag == DW_TAG_call_site
+          || child_die->tag == DW_TAG_GNU_call_site)
+	continue;
+
+      /* For each CHILD_DIE, find the corresponding child of
+	 ORIGIN_DIE.  If there is more than one layer of
+	 DW_AT_abstract_origin, follow them all; there shouldn't be,
+	 but GCC versions at least through 4.4 generate this (GCC PR
+	 40573).  */
+      child_origin_die = child_die;
+      child_origin_cu = cu;
+      while (1)
+	{
+	  attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
+			      child_origin_cu);
+	  if (attr == NULL)
+	    break;
+	  child_origin_die = follow_die_ref (child_origin_die, attr,
+					     &child_origin_cu);
+	}
+
+      /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
+	 counterpart may exist.  */
+      if (child_origin_die != child_die)
+	{
+	  if (child_die->tag != child_origin_die->tag
+	      && !(child_die->tag == DW_TAG_inlined_subroutine
+		   && child_origin_die->tag == DW_TAG_subprogram))
+	    complaint (_("Child DIE %s and its abstract origin %s have "
+			 "different tags"),
+		       sect_offset_str (child_die->sect_off),
+		       sect_offset_str (child_origin_die->sect_off));
+	  if (child_origin_die->parent != origin_die)
+	    complaint (_("Child DIE %s and its abstract origin %s have "
+			 "different parents"),
+		       sect_offset_str (child_die->sect_off),
+		       sect_offset_str (child_origin_die->sect_off));
+	  else
+	    offsets.push_back (child_origin_die->sect_off);
+	}
+    }
+  std::sort (offsets.begin (), offsets.end ());
+  sect_offset *offsets_end = offsets.data () + offsets.size ();
+  for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
+    if (offsetp[-1] == *offsetp)
+      complaint (_("Multiple children of DIE %s refer "
+		   "to DIE %s as their abstract origin"),
+		 sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
+
+  offsetp = offsets.data ();
+  origin_child_die = origin_die->child;
+  while (origin_child_die && origin_child_die->tag)
+    {
+      /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
+      while (offsetp < offsets_end
+	     && *offsetp < origin_child_die->sect_off)
+	offsetp++;
+      if (offsetp >= offsets_end
+	  || *offsetp > origin_child_die->sect_off)
+	{
+	  /* Found that ORIGIN_CHILD_DIE is really not referenced.
+	     Check whether we're already processing ORIGIN_CHILD_DIE.
+	     This can happen with mutually referenced abstract_origins.
+	     PR 16581.  */
+	  if (!origin_child_die->in_process)
+	    process_die (origin_child_die, origin_cu);
+	}
+      origin_child_die = origin_child_die->sibling;
+    }
+  origin_cu->list_in_scope = origin_previous_list_in_scope;
+
+  if (cu != origin_cu)
+    compute_delayed_physnames (origin_cu);
+}
+
+static void
+read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  struct context_stack *newobj;
+  CORE_ADDR lowpc;
+  CORE_ADDR highpc;
+  struct die_info *child_die;
+  struct attribute *attr, *call_line, *call_file;
+  const char *name;
+  CORE_ADDR baseaddr;
+  struct block *block;
+  int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
+  std::vector<struct symbol *> template_args;
+  struct template_symbol *templ_func = NULL;
+
+  if (inlined_func)
+    {
+      /* If we do not have call site information, we can't show the
+	 caller of this inlined function.  That's too confusing, so
+	 only use the scope for local variables.  */
+      call_line = dwarf2_attr (die, DW_AT_call_line, cu);
+      call_file = dwarf2_attr (die, DW_AT_call_file, cu);
+      if (call_line == NULL || call_file == NULL)
+	{
+	  read_lexical_block_scope (die, cu);
+	  return;
+	}
+    }
+
+  baseaddr = objfile->text_section_offset ();
+
+  name = dwarf2_name (die, cu);
+
+  /* Ignore functions with missing or empty names.  These are actually
+     illegal according to the DWARF standard.  */
+  if (name == NULL)
+    {
+      complaint (_("missing name for subprogram DIE at %s"),
+		 sect_offset_str (die->sect_off));
+      return;
+    }
+
+  /* Ignore functions with missing or invalid low and high pc attributes.  */
+  if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
+      <= PC_BOUNDS_INVALID)
+    {
+      attr = dwarf2_attr (die, DW_AT_external, cu);
+      if (!attr || !DW_UNSND (attr))
+	complaint (_("cannot get low and high bounds "
+		     "for subprogram DIE at %s"),
+		   sect_offset_str (die->sect_off));
+      return;
+    }
+
+  lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
+  highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
+
+  /* If we have any template arguments, then we must allocate a
+     different sort of symbol.  */
+  for (child_die = die->child; child_die; child_die = child_die->sibling)
+    {
+      if (child_die->tag == DW_TAG_template_type_param
+	  || child_die->tag == DW_TAG_template_value_param)
+	{
+	  templ_func = new (&objfile->objfile_obstack) template_symbol;
+	  templ_func->subclass = SYMBOL_TEMPLATE;
+	  break;
+	}
+    }
+
+  newobj = cu->get_builder ()->push_context (0, lowpc);
+  newobj->name = new_symbol (die, read_type_die (die, cu), cu,
+			     (struct symbol *) templ_func);
+
+  if (dwarf2_flag_true_p (die, DW_AT_main_subprogram, cu))
+    set_objfile_main_name (objfile, newobj->name->linkage_name (),
+			   cu->language);
+
+  /* If there is a location expression for DW_AT_frame_base, record
+     it.  */
+  attr = dwarf2_attr (die, DW_AT_frame_base, cu);
+  if (attr != nullptr)
+    dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
+
+  /* If there is a location for the static link, record it.  */
+  newobj->static_link = NULL;
+  attr = dwarf2_attr (die, DW_AT_static_link, cu);
+  if (attr != nullptr)
+    {
+      newobj->static_link
+	= XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
+      attr_to_dynamic_prop (attr, die, cu, newobj->static_link,
+			    cu->addr_type ());
+    }
+
+  cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
+
+  if (die->child != NULL)
+    {
+      child_die = die->child;
+      while (child_die && child_die->tag)
+	{
+	  if (child_die->tag == DW_TAG_template_type_param
+	      || child_die->tag == DW_TAG_template_value_param)
+	    {
+	      struct symbol *arg = new_symbol (child_die, NULL, cu);
+
+	      if (arg != NULL)
+		template_args.push_back (arg);
+	    }
+	  else
+	    process_die (child_die, cu);
+	  child_die = child_die->sibling;
+	}
+    }
+
+  inherit_abstract_dies (die, cu);
+
+  /* If we have a DW_AT_specification, we might need to import using
+     directives from the context of the specification DIE.  See the
+     comment in determine_prefix.  */
+  if (cu->language == language_cplus
+      && dwarf2_attr (die, DW_AT_specification, cu))
+    {
+      struct dwarf2_cu *spec_cu = cu;
+      struct die_info *spec_die = die_specification (die, &spec_cu);
+
+      while (spec_die)
+	{
+	  child_die = spec_die->child;
+	  while (child_die && child_die->tag)
+	    {
+	      if (child_die->tag == DW_TAG_imported_module)
+		process_die (child_die, spec_cu);
+	      child_die = child_die->sibling;
+	    }
+
+	  /* In some cases, GCC generates specification DIEs that
+	     themselves contain DW_AT_specification attributes.  */
+	  spec_die = die_specification (spec_die, &spec_cu);
+	}
+    }
+
+  struct context_stack cstk = cu->get_builder ()->pop_context ();
+  /* Make a block for the local symbols within.  */
+  block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
+				     cstk.static_link, lowpc, highpc);
+
+  /* For C++, set the block's scope.  */
+  if ((cu->language == language_cplus
+       || cu->language == language_fortran
+       || cu->language == language_d
+       || cu->language == language_rust)
+      && cu->processing_has_namespace_info)
+    block_set_scope (block, determine_prefix (die, cu),
+		     &objfile->objfile_obstack);
+
+  /* If we have address ranges, record them.  */
+  dwarf2_record_block_ranges (die, block, baseaddr, cu);
+
+  gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
+
+  /* Attach template arguments to function.  */
+  if (!template_args.empty ())
+    {
+      gdb_assert (templ_func != NULL);
+
+      templ_func->n_template_arguments = template_args.size ();
+      templ_func->template_arguments
+        = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
+		     templ_func->n_template_arguments);
+      memcpy (templ_func->template_arguments,
+	      template_args.data (),
+	      (templ_func->n_template_arguments * sizeof (struct symbol *)));
+
+      /* Make sure that the symtab is set on the new symbols.  Even
+	 though they don't appear in this symtab directly, other parts
+	 of gdb assume that symbols do, and this is reasonably
+	 true.  */
+      for (symbol *sym : template_args)
+	symbol_set_symtab (sym, symbol_symtab (templ_func));
+    }
+
+  /* In C++, we can have functions nested inside functions (e.g., when
+     a function declares a class that has methods).  This means that
+     when we finish processing a function scope, we may need to go
+     back to building a containing block's symbol lists.  */
+  *cu->get_builder ()->get_local_symbols () = cstk.locals;
+  cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
+
+  /* If we've finished processing a top-level function, subsequent
+     symbols go in the file symbol list.  */
+  if (cu->get_builder ()->outermost_context_p ())
+    cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
+}
+
+/* Process all the DIES contained within a lexical block scope.  Start
+   a new scope, process the dies, and then close the scope.  */
+
+static void
+read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  CORE_ADDR lowpc, highpc;
+  struct die_info *child_die;
+  CORE_ADDR baseaddr;
+
+  baseaddr = objfile->text_section_offset ();
+
+  /* Ignore blocks with missing or invalid low and high pc attributes.  */
+  /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
+     as multiple lexical blocks?  Handling children in a sane way would
+     be nasty.  Might be easier to properly extend generic blocks to
+     describe ranges.  */
+  switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
+    {
+    case PC_BOUNDS_NOT_PRESENT:
+      /* DW_TAG_lexical_block has no attributes, process its children as if
+	 there was no wrapping by that DW_TAG_lexical_block.
+	 GCC does no longer produces such DWARF since GCC r224161.  */
+      for (child_die = die->child;
+	   child_die != NULL && child_die->tag;
+	   child_die = child_die->sibling)
+	{
+	  /* We might already be processing this DIE.  This can happen
+	     in an unusual circumstance -- where a subroutine A
+	     appears lexically in another subroutine B, but A actually
+	     inlines B.  The recursion is broken here, rather than in
+	     inherit_abstract_dies, because it seems better to simply
+	     drop concrete children here.  */
+	  if (!child_die->in_process)
+	    process_die (child_die, cu);
+	}
+      return;
+    case PC_BOUNDS_INVALID:
+      return;
+    }
+  lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
+  highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
+
+  cu->get_builder ()->push_context (0, lowpc);
+  if (die->child != NULL)
+    {
+      child_die = die->child;
+      while (child_die && child_die->tag)
+	{
+	  process_die (child_die, cu);
+	  child_die = child_die->sibling;
+	}
+    }
+  inherit_abstract_dies (die, cu);
+  struct context_stack cstk = cu->get_builder ()->pop_context ();
+
+  if (*cu->get_builder ()->get_local_symbols () != NULL
+      || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
+    {
+      struct block *block
+        = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
+				     cstk.start_addr, highpc);
+
+      /* Note that recording ranges after traversing children, as we
+         do here, means that recording a parent's ranges entails
+         walking across all its children's ranges as they appear in
+         the address map, which is quadratic behavior.
+
+         It would be nicer to record the parent's ranges before
+         traversing its children, simply overriding whatever you find
+         there.  But since we don't even decide whether to create a
+         block until after we've traversed its children, that's hard
+         to do.  */
+      dwarf2_record_block_ranges (die, block, baseaddr, cu);
+    }
+  *cu->get_builder ()->get_local_symbols () = cstk.locals;
+  cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
+}
+
+/* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
+
+static void
+read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  CORE_ADDR pc, baseaddr;
+  struct attribute *attr;
+  struct call_site *call_site, call_site_local;
+  void **slot;
+  int nparams;
+  struct die_info *child_die;
+
+  baseaddr = objfile->text_section_offset ();
+
+  attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
+  if (attr == NULL)
+    {
+      /* This was a pre-DWARF-5 GNU extension alias
+	 for DW_AT_call_return_pc.  */
+      attr = dwarf2_attr (die, DW_AT_low_pc, cu);
+    }
+  if (!attr)
+    {
+      complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
+		   "DIE %s [in module %s]"),
+		 sect_offset_str (die->sect_off), objfile_name (objfile));
+      return;
+    }
+  pc = attr->value_as_address () + baseaddr;
+  pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
+
+  if (cu->call_site_htab == NULL)
+    cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
+					       NULL, &objfile->objfile_obstack,
+					       hashtab_obstack_allocate, NULL);
+  call_site_local.pc = pc;
+  slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
+  if (*slot != NULL)
+    {
+      complaint (_("Duplicate PC %s for DW_TAG_call_site "
+		   "DIE %s [in module %s]"),
+		 paddress (gdbarch, pc), sect_offset_str (die->sect_off),
+		 objfile_name (objfile));
+      return;
+    }
+
+  /* Count parameters at the caller.  */
+
+  nparams = 0;
+  for (child_die = die->child; child_die && child_die->tag;
+       child_die = child_die->sibling)
+    {
+      if (child_die->tag != DW_TAG_call_site_parameter
+          && child_die->tag != DW_TAG_GNU_call_site_parameter)
+	{
+	  complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
+		       "DW_TAG_call_site child DIE %s [in module %s]"),
+		     child_die->tag, sect_offset_str (child_die->sect_off),
+		     objfile_name (objfile));
+	  continue;
+	}
+
+      nparams++;
+    }
+
+  call_site
+    = ((struct call_site *)
+       obstack_alloc (&objfile->objfile_obstack,
+		      sizeof (*call_site)
+		      + (sizeof (*call_site->parameter) * (nparams - 1))));
+  *slot = call_site;
+  memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
+  call_site->pc = pc;
+
+  if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
+      || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
+    {
+      struct die_info *func_die;
+
+      /* Skip also over DW_TAG_inlined_subroutine.  */
+      for (func_die = die->parent;
+	   func_die && func_die->tag != DW_TAG_subprogram
+	   && func_die->tag != DW_TAG_subroutine_type;
+	   func_die = func_die->parent);
+
+      /* DW_AT_call_all_calls is a superset
+	 of DW_AT_call_all_tail_calls.  */
+      if (func_die
+          && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
+          && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
+	  && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
+	  && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
+	{
+	  /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
+	     not complete.  But keep CALL_SITE for look ups via call_site_htab,
+	     both the initial caller containing the real return address PC and
+	     the final callee containing the current PC of a chain of tail
+	     calls do not need to have the tail call list complete.  But any
+	     function candidate for a virtual tail call frame searched via
+	     TYPE_TAIL_CALL_LIST must have the tail call list complete to be
+	     determined unambiguously.  */
+	}
+      else
+	{
+	  struct type *func_type = NULL;
+
+	  if (func_die)
+	    func_type = get_die_type (func_die, cu);
+	  if (func_type != NULL)
+	    {
+	      gdb_assert (func_type->code () == TYPE_CODE_FUNC);
+
+	      /* Enlist this call site to the function.  */
+	      call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
+	      TYPE_TAIL_CALL_LIST (func_type) = call_site;
+	    }
+	  else
+	    complaint (_("Cannot find function owning DW_TAG_call_site "
+			 "DIE %s [in module %s]"),
+		       sect_offset_str (die->sect_off), objfile_name (objfile));
+	}
+    }
+
+  attr = dwarf2_attr (die, DW_AT_call_target, cu);
+  if (attr == NULL)
+    attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
+  if (attr == NULL)
+    attr = dwarf2_attr (die, DW_AT_call_origin, cu);
+  if (attr == NULL)
+    {
+      /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
+      attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
+    }
+  SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
+  if (!attr || (attr->form_is_block () && DW_BLOCK (attr)->size == 0))
+    /* Keep NULL DWARF_BLOCK.  */;
+  else if (attr->form_is_block ())
+    {
+      struct dwarf2_locexpr_baton *dlbaton;
+
+      dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
+      dlbaton->data = DW_BLOCK (attr)->data;
+      dlbaton->size = DW_BLOCK (attr)->size;
+      dlbaton->per_objfile = per_objfile;
+      dlbaton->per_cu = cu->per_cu;
+
+      SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
+    }
+  else if (attr->form_is_ref ())
+    {
+      struct dwarf2_cu *target_cu = cu;
+      struct die_info *target_die;
+
+      target_die = follow_die_ref (die, attr, &target_cu);
+      gdb_assert (target_cu->per_objfile->objfile == objfile);
+      if (die_is_declaration (target_die, target_cu))
+	{
+	  const char *target_physname;
+
+	  /* Prefer the mangled name; otherwise compute the demangled one.  */
+	  target_physname = dw2_linkage_name (target_die, target_cu);
+	  if (target_physname == NULL)
+	    target_physname = dwarf2_physname (NULL, target_die, target_cu);
+	  if (target_physname == NULL)
+	    complaint (_("DW_AT_call_target target DIE has invalid "
+		         "physname, for referencing DIE %s [in module %s]"),
+		       sect_offset_str (die->sect_off), objfile_name (objfile));
+	  else
+	    SET_FIELD_PHYSNAME (call_site->target, target_physname);
+	}
+      else
+	{
+	  CORE_ADDR lowpc;
+
+	  /* DW_AT_entry_pc should be preferred.  */
+	  if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
+	      <= PC_BOUNDS_INVALID)
+	    complaint (_("DW_AT_call_target target DIE has invalid "
+		         "low pc, for referencing DIE %s [in module %s]"),
+		       sect_offset_str (die->sect_off), objfile_name (objfile));
+	  else
+	    {
+	      lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
+	      SET_FIELD_PHYSADDR (call_site->target, lowpc);
+	    }
+	}
+    }
+  else
+    complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
+		 "block nor reference, for DIE %s [in module %s]"),
+	       sect_offset_str (die->sect_off), objfile_name (objfile));
+
+  call_site->per_cu = cu->per_cu;
+  call_site->per_objfile = per_objfile;
+
+  for (child_die = die->child;
+       child_die && child_die->tag;
+       child_die = child_die->sibling)
+    {
+      struct call_site_parameter *parameter;
+      struct attribute *loc, *origin;
+
+      if (child_die->tag != DW_TAG_call_site_parameter
+          && child_die->tag != DW_TAG_GNU_call_site_parameter)
+	{
+	  /* Already printed the complaint above.  */
+	  continue;
+	}
+
+      gdb_assert (call_site->parameter_count < nparams);
+      parameter = &call_site->parameter[call_site->parameter_count];
+
+      /* DW_AT_location specifies the register number or DW_AT_abstract_origin
+	 specifies DW_TAG_formal_parameter.  Value of the data assumed for the
+	 register is contained in DW_AT_call_value.  */
+
+      loc = dwarf2_attr (child_die, DW_AT_location, cu);
+      origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
+      if (origin == NULL)
+	{
+	  /* This was a pre-DWARF-5 GNU extension alias
+	     for DW_AT_call_parameter.  */
+	  origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
+	}
+      if (loc == NULL && origin != NULL && origin->form_is_ref ())
+	{
+	  parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
+
+	  sect_offset sect_off = origin->get_ref_die_offset ();
+	  if (!cu->header.offset_in_cu_p (sect_off))
+	    {
+	      /* 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.  */
+	      complaint (_("DW_AT_call_parameter offset is not in CU for "
+			   "DW_TAG_call_site child DIE %s [in module %s]"),
+			 sect_offset_str (child_die->sect_off),
+			 objfile_name (objfile));
+	      continue;
+	    }
+	  parameter->u.param_cu_off
+	    = (cu_offset) (sect_off - cu->header.sect_off);
+	}
+      else if (loc == NULL || origin != NULL || !loc->form_is_block ())
+	{
+	  complaint (_("No DW_FORM_block* DW_AT_location for "
+		       "DW_TAG_call_site child DIE %s [in module %s]"),
+		     sect_offset_str (child_die->sect_off), objfile_name (objfile));
+	  continue;
+	}
+      else
+	{
+	  parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
+	    (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
+	  if (parameter->u.dwarf_reg != -1)
+	    parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
+	  else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
+				    &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
+					     &parameter->u.fb_offset))
+	    parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
+	  else
+	    {
+	      complaint (_("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]"),
+			 sect_offset_str (child_die->sect_off),
+			 objfile_name (objfile));
+	      continue;
+	    }
+	}
+
+      attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
+      if (attr == NULL)
+	attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
+      if (attr == NULL || !attr->form_is_block ())
+	{
+	  complaint (_("No DW_FORM_block* DW_AT_call_value for "
+		       "DW_TAG_call_site child DIE %s [in module %s]"),
+		     sect_offset_str (child_die->sect_off),
+		     objfile_name (objfile));
+	  continue;
+	}
+      parameter->value = DW_BLOCK (attr)->data;
+      parameter->value_size = DW_BLOCK (attr)->size;
+
+      /* Parameters are not pre-cleared by memset above.  */
+      parameter->data_value = NULL;
+      parameter->data_value_size = 0;
+      call_site->parameter_count++;
+
+      attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
+      if (attr == NULL)
+	attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
+      if (attr != nullptr)
+	{
+	  if (!attr->form_is_block ())
+	    complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
+			 "DW_TAG_call_site child DIE %s [in module %s]"),
+		       sect_offset_str (child_die->sect_off),
+		       objfile_name (objfile));
+	  else
+	    {
+	      parameter->data_value = DW_BLOCK (attr)->data;
+	      parameter->data_value_size = DW_BLOCK (attr)->size;
+	    }
+	}
+    }
+}
+
+/* Helper function for read_variable.  If DIE represents a virtual
+   table, then return the type of the concrete object that is
+   associated with the virtual table.  Otherwise, return NULL.  */
+
+static struct type *
+rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
+  if (attr == NULL)
+    return NULL;
+
+  /* Find the type DIE.  */
+  struct die_info *type_die = NULL;
+  struct dwarf2_cu *type_cu = cu;
+
+  if (attr->form_is_ref ())
+    type_die = follow_die_ref (die, attr, &type_cu);
+  if (type_die == NULL)
+    return NULL;
+
+  if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
+    return NULL;
+  return die_containing_type (type_die, type_cu);
+}
+
+/* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
+
+static void
+read_variable (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct rust_vtable_symbol *storage = NULL;
+
+  if (cu->language == language_rust)
+    {
+      struct type *containing_type = rust_containing_type (die, cu);
+
+      if (containing_type != NULL)
+	{
+	  struct objfile *objfile = cu->per_objfile->objfile;
+
+	  storage = new (&objfile->objfile_obstack) rust_vtable_symbol;
+	  storage->concrete_type = containing_type;
+	  storage->subclass = SYMBOL_RUST_VTABLE;
+	}
+    }
+
+  struct symbol *res = new_symbol (die, NULL, cu, storage);
+  struct attribute *abstract_origin
+    = dwarf2_attr (die, DW_AT_abstract_origin, cu);
+  struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
+  if (res == NULL && loc && abstract_origin)
+    {
+      /* We have a variable without a name, but with a location and an abstract
+	 origin.  This may be a concrete instance of an abstract variable
+	 referenced from an DW_OP_GNU_variable_value, so save it to find it back
+	 later.  */
+      struct dwarf2_cu *origin_cu = cu;
+      struct die_info *origin_die
+	= follow_die_ref (die, abstract_origin, &origin_cu);
+      dwarf2_per_objfile *per_objfile = cu->per_objfile;
+      per_objfile->per_bfd->abstract_to_concrete
+	[origin_die->sect_off].push_back (die->sect_off);
+    }
+}
+
+/* Call CALLBACK from DW_AT_ranges attribute value OFFSET
+   reading .debug_rnglists.
+   Callback's type should be:
+    void (CORE_ADDR range_beginning, CORE_ADDR range_end)
+   Return true if the attributes are present and valid, otherwise,
+   return false.  */
+
+template <typename Callback>
+static bool
+dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
+			 dwarf_tag tag, Callback &&callback)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  bfd *obfd = objfile->obfd;
+  /* Base address selection entry.  */
+  gdb::optional<CORE_ADDR> base;
+  const gdb_byte *buffer;
+  CORE_ADDR baseaddr;
+  bool overflow = false;
+  ULONGEST addr_index;
+  struct dwarf2_section_info *rnglists_section;
+
+  base = cu->base_address;
+  rnglists_section = cu_debug_rnglists_section (cu, tag);
+  rnglists_section->read (objfile);
+
+  if (offset >= rnglists_section->size)
+    {
+      complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
+		 offset);
+      return false;
+    }
+  buffer = rnglists_section->buffer + offset;
+
+  baseaddr = objfile->text_section_offset ();
+
+  while (1)
+    {
+      /* Initialize it due to a false compiler warning.  */
+      CORE_ADDR range_beginning = 0, range_end = 0;
+      const gdb_byte *buf_end = (rnglists_section->buffer
+				 + rnglists_section->size);
+      unsigned int bytes_read;
+
+      if (buffer == buf_end)
+	{
+	  overflow = true;
+	  break;
+	}
+      const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
+      switch (rlet)
+	{
+	case DW_RLE_end_of_list:
+	  break;
+	case DW_RLE_base_address:
+	  if (buffer + cu->header.addr_size > buf_end)
+	    {
+	      overflow = true;
+	      break;
+	    }
+	  base = cu->header.read_address (obfd, buffer, &bytes_read);
+	  buffer += bytes_read;
+	  break;
+        case DW_RLE_base_addressx:
+          addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
+          buffer += bytes_read;
+          base = read_addr_index (cu, addr_index);
+          break;
+	case DW_RLE_start_length:
+	  if (buffer + cu->header.addr_size > buf_end)
+	    {
+	      overflow = true;
+	      break;
+	    }
+	  range_beginning = cu->header.read_address (obfd, buffer,
+						     &bytes_read);
+	  buffer += bytes_read;
+	  range_end = (range_beginning
+		       + read_unsigned_leb128 (obfd, buffer, &bytes_read));
+	  buffer += bytes_read;
+	  if (buffer > buf_end)
+	    {
+	      overflow = true;
+	      break;
+	    }
+	  break;
+	case DW_RLE_startx_length:
+          addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
+          buffer += bytes_read;
+          range_beginning = read_addr_index (cu, addr_index);
+          if (buffer > buf_end)
+            {
+              overflow = true;
+              break;
+            }
+          range_end = (range_beginning
+                       + read_unsigned_leb128 (obfd, buffer, &bytes_read));
+          buffer += bytes_read;
+          break;
+	case DW_RLE_offset_pair:
+	  range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
+	  buffer += bytes_read;
+	  if (buffer > buf_end)
+	    {
+	      overflow = true;
+	      break;
+	    }
+	  range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
+	  buffer += bytes_read;
+	  if (buffer > buf_end)
+	    {
+	      overflow = true;
+	      break;
+	    }
+	  break;
+	case DW_RLE_start_end:
+	  if (buffer + 2 * cu->header.addr_size > buf_end)
+	    {
+	      overflow = true;
+	      break;
+	    }
+	  range_beginning = cu->header.read_address (obfd, buffer,
+						     &bytes_read);
+	  buffer += bytes_read;
+	  range_end = cu->header.read_address (obfd, buffer, &bytes_read);
+	  buffer += bytes_read;
+	  break;
+	case DW_RLE_startx_endx:
+          addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
+          buffer += bytes_read;
+          range_beginning = read_addr_index (cu, addr_index);
+          if (buffer > buf_end)
+            {
+              overflow = true;
+              break;
+            }
+          addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
+          buffer += bytes_read;
+          range_end = read_addr_index (cu, addr_index);
+          break;
+	default:
+	  complaint (_("Invalid .debug_rnglists data (no base address)"));
+	  return false;
+	}
+      if (rlet == DW_RLE_end_of_list || overflow)
+	break;
+      if (rlet == DW_RLE_base_address)
+	continue;
+
+      if (range_beginning > range_end)
+	{
+	  /* Inverted range entries are invalid.  */
+	  complaint (_("Invalid .debug_rnglists data (inverted range)"));
+	  return false;
+	}
+
+      /* Empty range entries have no effect.  */
+      if (range_beginning == range_end)
+	continue;
+
+      /* Only DW_RLE_offset_pair needs the base address added.  */
+      if (rlet == DW_RLE_offset_pair)
+	{
+	  if (!base.has_value ())
+	    {
+	      /* We have no valid base address for the DW_RLE_offset_pair.  */
+	      complaint (_("Invalid .debug_rnglists data (no base address for "
+			   "DW_RLE_offset_pair)"));
+	      return false;
+	    }
+
+	  range_beginning += *base;
+	  range_end += *base;
+	}
+
+      /* A not-uncommon case of bad debug info.
+	 Don't pollute the addrmap with bad data.  */
+      if (range_beginning + baseaddr == 0
+	  && !per_objfile->per_bfd->has_section_at_zero)
+	{
+	  complaint (_(".debug_rnglists entry has start address of zero"
+		       " [in module %s]"), objfile_name (objfile));
+	  continue;
+	}
+
+      callback (range_beginning, range_end);
+    }
+
+  if (overflow)
+    {
+      complaint (_("Offset %d is not terminated "
+		   "for DW_AT_ranges attribute"),
+		 offset);
+      return false;
+    }
+
+  return true;
+}
+
+/* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
+   Callback's type should be:
+    void (CORE_ADDR range_beginning, CORE_ADDR range_end)
+   Return 1 if the attributes are present and valid, otherwise, return 0.  */
+
+template <typename Callback>
+static int
+dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu, dwarf_tag tag,
+		       Callback &&callback)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct comp_unit_head *cu_header = &cu->header;
+  bfd *obfd = objfile->obfd;
+  unsigned int addr_size = cu_header->addr_size;
+  CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
+  /* Base address selection entry.  */
+  gdb::optional<CORE_ADDR> base;
+  unsigned int dummy;
+  const gdb_byte *buffer;
+  CORE_ADDR baseaddr;
+
+  if (cu_header->version >= 5)
+    return dwarf2_rnglists_process (offset, cu, tag, callback);
+
+  base = cu->base_address;
+
+  per_objfile->per_bfd->ranges.read (objfile);
+  if (offset >= per_objfile->per_bfd->ranges.size)
+    {
+      complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
+		 offset);
+      return 0;
+    }
+  buffer = per_objfile->per_bfd->ranges.buffer + offset;
+
+  baseaddr = objfile->text_section_offset ();
+
+  while (1)
+    {
+      CORE_ADDR range_beginning, range_end;
+
+      range_beginning = cu->header.read_address (obfd, buffer, &dummy);
+      buffer += addr_size;
+      range_end = cu->header.read_address (obfd, buffer, &dummy);
+      buffer += addr_size;
+      offset += 2 * addr_size;
+
+      /* An end of list marker is a pair of zero addresses.  */
+      if (range_beginning == 0 && range_end == 0)
+	/* Found the end of list entry.  */
+	break;
+
+      /* Each base address selection entry is a pair of 2 values.
+	 The first is the largest possible address, the second is
+	 the base address.  Check for a base address here.  */
+      if ((range_beginning & mask) == mask)
+	{
+	  /* If we found the largest possible address, then we already
+	     have the base address in range_end.  */
+	  base = range_end;
+	  continue;
+	}
+
+      if (!base.has_value ())
+	{
+	  /* We have no valid base address for the ranges
+	     data.  */
+	  complaint (_("Invalid .debug_ranges data (no base address)"));
+	  return 0;
+	}
+
+      if (range_beginning > range_end)
+	{
+	  /* Inverted range entries are invalid.  */
+	  complaint (_("Invalid .debug_ranges data (inverted range)"));
+	  return 0;
+	}
+
+      /* Empty range entries have no effect.  */
+      if (range_beginning == range_end)
+	continue;
+
+      range_beginning += *base;
+      range_end += *base;
+
+      /* A not-uncommon case of bad debug info.
+	 Don't pollute the addrmap with bad data.  */
+      if (range_beginning + baseaddr == 0
+	  && !per_objfile->per_bfd->has_section_at_zero)
+	{
+	  complaint (_(".debug_ranges entry has start address of zero"
+		       " [in module %s]"), objfile_name (objfile));
+	  continue;
+	}
+
+      callback (range_beginning, range_end);
+    }
+
+  return 1;
+}
+
+/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
+   Return 1 if the attributes are present and valid, otherwise, return 0.
+   If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
+
+static int
+dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
+		    CORE_ADDR *high_return, struct dwarf2_cu *cu,
+		    dwarf2_psymtab *ranges_pst, dwarf_tag tag)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  const CORE_ADDR baseaddr = objfile->text_section_offset ();
+  int low_set = 0;
+  CORE_ADDR low = 0;
+  CORE_ADDR high = 0;
+  int retval;
+
+  retval = dwarf2_ranges_process (offset, cu, tag,
+    [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
+    {
+      if (ranges_pst != NULL)
+	{
+	  CORE_ADDR lowpc;
+	  CORE_ADDR highpc;
+
+	  lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
+					       range_beginning + baseaddr)
+		   - baseaddr);
+	  highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
+						range_end + baseaddr)
+		    - baseaddr);
+	  addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
+			     lowpc, highpc - 1, ranges_pst);
+	}
+
+      /* FIXME: This is recording everything as a low-high
+	 segment of consecutive addresses.  We should have a
+	 data structure for discontiguous block ranges
+	 instead.  */
+      if (! low_set)
+	{
+	  low = range_beginning;
+	  high = range_end;
+	  low_set = 1;
+	}
+      else
+	{
+	  if (range_beginning < low)
+	    low = range_beginning;
+	  if (range_end > high)
+	    high = range_end;
+	}
+    });
+  if (!retval)
+    return 0;
+
+  if (! low_set)
+    /* If the first entry is an end-of-list marker, the range
+       describes an empty scope, i.e. no instructions.  */
+    return 0;
+
+  if (low_return)
+    *low_return = low;
+  if (high_return)
+    *high_return = high;
+  return 1;
+}
+
+/* Get low and high pc attributes from a die.  See enum pc_bounds_kind
+   definition for the return value.  *LOWPC and *HIGHPC are set iff
+   neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
+
+static enum pc_bounds_kind
+dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
+		      CORE_ADDR *highpc, struct dwarf2_cu *cu,
+		      dwarf2_psymtab *pst)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct attribute *attr;
+  struct attribute *attr_high;
+  CORE_ADDR low = 0;
+  CORE_ADDR high = 0;
+  enum pc_bounds_kind ret;
+
+  attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
+  if (attr_high)
+    {
+      attr = dwarf2_attr (die, DW_AT_low_pc, cu);
+      if (attr != nullptr)
+        {
+	  low = attr->value_as_address ();
+	  high = attr_high->value_as_address ();
+	  if (cu->header.version >= 4 && attr_high->form_is_constant ())
+	    high += low;
+	}
+      else
+	/* Found high w/o low attribute.  */
+	return PC_BOUNDS_INVALID;
+
+      /* Found consecutive range of addresses.  */
+      ret = PC_BOUNDS_HIGH_LOW;
+    }
+  else
+    {
+      attr = dwarf2_attr (die, DW_AT_ranges, cu);
+      if (attr != NULL)
+	{
+	  /* DW_AT_rnglists_base does not apply to DIEs from the DWO skeleton.
+	     We take advantage of the fact that DW_AT_ranges does not appear
+	     in DW_TAG_compile_unit of DWO files.
+
+	     Attributes of the form DW_FORM_rnglistx have already had their
+	     value changed by read_rnglist_index and already include
+	     DW_AT_rnglists_base, so don't need to add the ranges base,
+	     either.  */
+	  int need_ranges_base = (die->tag != DW_TAG_compile_unit
+				  && attr->form != DW_FORM_rnglistx);
+	  unsigned int ranges_offset = (DW_UNSND (attr)
+					+ (need_ranges_base
+					   ? cu->ranges_base
+					   : 0));
+
+	  /* Value of the DW_AT_ranges attribute is the offset in the
+	     .debug_ranges section.  */
+	  if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst,
+				   die->tag))
+	    return PC_BOUNDS_INVALID;
+	  /* Found discontinuous range of addresses.  */
+	  ret = PC_BOUNDS_RANGES;
+	}
+      else
+	return PC_BOUNDS_NOT_PRESENT;
+    }
+
+  /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
+  if (high <= low)
+    return PC_BOUNDS_INVALID;
+
+  /* When using the GNU linker, .gnu.linkonce. sections are used to
+     eliminate duplicate copies of functions and vtables and such.
+     The linker will arbitrarily choose one and discard the others.
+     The AT_*_pc values for such functions refer to local labels in
+     these sections.  If the section from that file was discarded, the
+     labels are not in the output, so the relocs get a value of 0.
+     If this is a discarded function, mark the pc bounds as invalid,
+     so that GDB will ignore it.  */
+  if (low == 0 && !per_objfile->per_bfd->has_section_at_zero)
+    return PC_BOUNDS_INVALID;
+
+  *lowpc = low;
+  if (highpc)
+    *highpc = high;
+  return ret;
+}
+
+/* Assuming that DIE represents a subprogram DIE or a lexical block, get
+   its low and high PC addresses.  Do nothing if these addresses could not
+   be determined.  Otherwise, set LOWPC to the low address if it is smaller,
+   and HIGHPC to the high address if greater than HIGHPC.  */
+
+static void
+dwarf2_get_subprogram_pc_bounds (struct die_info *die,
+                                 CORE_ADDR *lowpc, CORE_ADDR *highpc,
+                                 struct dwarf2_cu *cu)
+{
+  CORE_ADDR low, high;
+  struct die_info *child = die->child;
+
+  if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
+    {
+      *lowpc = std::min (*lowpc, low);
+      *highpc = std::max (*highpc, high);
+    }
+
+  /* If the language does not allow nested subprograms (either inside
+     subprograms or lexical blocks), we're done.  */
+  if (cu->language != language_ada)
+    return;
+
+  /* Check all the children of the given DIE.  If it contains nested
+     subprograms, then check their pc bounds.  Likewise, we need to
+     check lexical blocks as well, as they may also contain subprogram
+     definitions.  */
+  while (child && child->tag)
+    {
+      if (child->tag == DW_TAG_subprogram
+          || child->tag == DW_TAG_lexical_block)
+        dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
+      child = child->sibling;
+    }
+}
+
+/* Get the low and high pc's represented by the scope DIE, and store
+   them in *LOWPC and *HIGHPC.  If the correct values can't be
+   determined, set *LOWPC to -1 and *HIGHPC to 0.  */
+
+static void
+get_scope_pc_bounds (struct die_info *die,
+		     CORE_ADDR *lowpc, CORE_ADDR *highpc,
+		     struct dwarf2_cu *cu)
+{
+  CORE_ADDR best_low = (CORE_ADDR) -1;
+  CORE_ADDR best_high = (CORE_ADDR) 0;
+  CORE_ADDR current_low, current_high;
+
+  if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
+      >= PC_BOUNDS_RANGES)
+    {
+      best_low = current_low;
+      best_high = current_high;
+    }
+  else
+    {
+      struct die_info *child = die->child;
+
+      while (child && child->tag)
+	{
+	  switch (child->tag) {
+	  case DW_TAG_subprogram:
+            dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
+	    break;
+	  case DW_TAG_namespace:
+	  case DW_TAG_module:
+	    /* FIXME: carlton/2004-01-16: Should we do this for
+	       DW_TAG_class_type/DW_TAG_structure_type, too?  I think
+	       that current GCC's always emit the DIEs corresponding
+	       to definitions of methods of classes as children of a
+	       DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
+	       the DIEs giving the declarations, which could be
+	       anywhere).  But I don't see any reason why the
+	       standards says that they have to be there.  */
+	    get_scope_pc_bounds (child, &current_low, &current_high, cu);
+
+	    if (current_low != ((CORE_ADDR) -1))
+	      {
+		best_low = std::min (best_low, current_low);
+		best_high = std::max (best_high, current_high);
+	      }
+	    break;
+	  default:
+	    /* Ignore.  */
+	    break;
+	  }
+
+	  child = child->sibling;
+	}
+    }
+
+  *lowpc = best_low;
+  *highpc = best_high;
+}
+
+/* Record the address ranges for BLOCK, offset by BASEADDR, as given
+   in DIE.  */
+
+static void
+dwarf2_record_block_ranges (struct die_info *die, struct block *block,
+                            CORE_ADDR baseaddr, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  struct attribute *attr;
+  struct attribute *attr_high;
+
+  attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
+  if (attr_high)
+    {
+      attr = dwarf2_attr (die, DW_AT_low_pc, cu);
+      if (attr != nullptr)
+        {
+          CORE_ADDR low = attr->value_as_address ();
+	  CORE_ADDR high = attr_high->value_as_address ();
+
+	  if (cu->header.version >= 4 && attr_high->form_is_constant ())
+	    high += low;
+
+	  low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
+	  high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
+	  cu->get_builder ()->record_block_range (block, low, high - 1);
+        }
+    }
+
+  attr = dwarf2_attr (die, DW_AT_ranges, cu);
+  if (attr != nullptr)
+    {
+      /* DW_AT_rnglists_base does not apply to DIEs from the DWO skeleton.
+	 We take advantage of the fact that DW_AT_ranges does not appear
+	 in DW_TAG_compile_unit of DWO files.
+
+	 Attributes of the form DW_FORM_rnglistx have already had their
+	 value changed by read_rnglist_index and already include
+	 DW_AT_rnglists_base, so don't need to add the ranges base,
+	 either.  */
+      int need_ranges_base = (die->tag != DW_TAG_compile_unit
+			      && attr->form != DW_FORM_rnglistx);
+
+      /* The value of the DW_AT_ranges attribute is the offset of the
+         address range list in the .debug_ranges section.  */
+      unsigned long offset = (DW_UNSND (attr)
+			      + (need_ranges_base ? cu->ranges_base : 0));
+
+      std::vector<blockrange> blockvec;
+      dwarf2_ranges_process (offset, cu, die->tag,
+	[&] (CORE_ADDR start, CORE_ADDR end)
+	{
+	  start += baseaddr;
+	  end += baseaddr;
+	  start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
+	  end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
+	  cu->get_builder ()->record_block_range (block, start, end - 1);
+	  blockvec.emplace_back (start, end);
+	});
+
+      BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
+    }
+}
+
+/* Check whether the producer field indicates either of GCC < 4.6, or the
+   Intel C/C++ compiler, and cache the result in CU.  */
+
+static void
+check_producer (struct dwarf2_cu *cu)
+{
+  int major, minor;
+
+  if (cu->producer == NULL)
+    {
+      /* For unknown compilers expect their behavior is DWARF version
+	 compliant.
+
+	 GCC started to support .debug_types sections by -gdwarf-4 since
+	 gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
+	 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
+	 combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
+	 interpreted incorrectly by GDB now - GCC PR debug/48229.  */
+    }
+  else if (producer_is_gcc (cu->producer, &major, &minor))
+    {
+      cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
+      cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
+    }
+  else if (producer_is_icc (cu->producer, &major, &minor))
+    {
+      cu->producer_is_icc = true;
+      cu->producer_is_icc_lt_14 = major < 14;
+    }
+  else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
+    cu->producer_is_codewarrior = true;
+  else
+    {
+      /* For other non-GCC compilers, expect their behavior is DWARF version
+	 compliant.  */
+    }
+
+  cu->checked_producer = true;
+}
+
+/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
+   to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
+   during 4.6.0 experimental.  */
+
+static bool
+producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
+{
+  if (!cu->checked_producer)
+    check_producer (cu);
+
+  return cu->producer_is_gxx_lt_4_6;
+}
+
+
+/* Codewarrior (at least as of version 5.0.40) generates dwarf line information
+   with incorrect is_stmt attributes.  */
+
+static bool
+producer_is_codewarrior (struct dwarf2_cu *cu)
+{
+  if (!cu->checked_producer)
+    check_producer (cu);
+
+  return cu->producer_is_codewarrior;
+}
+
+/* Return the default accessibility type if it is not overridden by
+   DW_AT_accessibility.  */
+
+static enum dwarf_access_attribute
+dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
+{
+  if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
+    {
+      /* The default DWARF 2 accessibility for members is public, the default
+	 accessibility for inheritance is private.  */
+
+      if (die->tag != DW_TAG_inheritance)
+	return DW_ACCESS_public;
+      else
+	return DW_ACCESS_private;
+    }
+  else
+    {
+      /* DWARF 3+ defines the default accessibility a different way.  The same
+	 rules apply now for DW_TAG_inheritance as for the members and it only
+	 depends on the container kind.  */
+
+      if (die->parent->tag == DW_TAG_class_type)
+	return DW_ACCESS_private;
+      else
+	return DW_ACCESS_public;
+    }
+}
+
+/* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
+   offset.  If the attribute was not found return 0, otherwise return
+   1.  If it was found but could not properly be handled, set *OFFSET
+   to 0.  */
+
+static int
+handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
+			     LONGEST *offset)
+{
+  struct attribute *attr;
+
+  attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
+  if (attr != NULL)
+    {
+      *offset = 0;
+
+      /* Note that we do not check for a section offset first here.
+	 This is because DW_AT_data_member_location is new in DWARF 4,
+	 so if we see it, we can assume that a constant form is really
+	 a constant and not a section offset.  */
+      if (attr->form_is_constant ())
+	*offset = attr->constant_value (0);
+      else if (attr->form_is_section_offset ())
+	dwarf2_complex_location_expr_complaint ();
+      else if (attr->form_is_block ())
+	*offset = decode_locdesc (DW_BLOCK (attr), cu);
+      else
+	dwarf2_complex_location_expr_complaint ();
+
+      return 1;
+    }
+
+  return 0;
+}
+
+/* Look for DW_AT_data_member_location and store the results in FIELD.  */
+
+static void
+handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
+			     struct field *field)
+{
+  struct attribute *attr;
+
+  attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
+  if (attr != NULL)
+    {
+      if (attr->form_is_constant ())
+	{
+	  LONGEST offset = attr->constant_value (0);
+	  SET_FIELD_BITPOS (*field, offset * bits_per_byte);
+	}
+      else if (attr->form_is_section_offset ())
+	dwarf2_complex_location_expr_complaint ();
+      else if (attr->form_is_block ())
+	{
+	  bool handled;
+	  CORE_ADDR offset = decode_locdesc (DW_BLOCK (attr), cu, &handled);
+	  if (handled)
+	    SET_FIELD_BITPOS (*field, offset * bits_per_byte);
+	  else
+	    {
+	      dwarf2_per_objfile *per_objfile = cu->per_objfile;
+	      struct objfile *objfile = per_objfile->objfile;
+	      struct dwarf2_locexpr_baton *dlbaton
+		= XOBNEW (&objfile->objfile_obstack,
+			  struct dwarf2_locexpr_baton);
+	      dlbaton->data = DW_BLOCK (attr)->data;
+	      dlbaton->size = DW_BLOCK (attr)->size;
+	      /* When using this baton, we want to compute the address
+		 of the field, not the value.  This is why
+		 is_reference is set to false here.  */
+	      dlbaton->is_reference = false;
+	      dlbaton->per_objfile = per_objfile;
+	      dlbaton->per_cu = cu->per_cu;
+
+	      SET_FIELD_DWARF_BLOCK (*field, dlbaton);
+	    }
+	}
+      else
+	dwarf2_complex_location_expr_complaint ();
+    }
+}
+
+/* Add an aggregate field to the field list.  */
+
+static void
+dwarf2_add_field (struct field_info *fip, struct die_info *die,
+		  struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  struct nextfield *new_field;
+  struct attribute *attr;
+  struct field *fp;
+  const char *fieldname = "";
+
+  if (die->tag == DW_TAG_inheritance)
+    {
+      fip->baseclasses.emplace_back ();
+      new_field = &fip->baseclasses.back ();
+    }
+  else
+    {
+      fip->fields.emplace_back ();
+      new_field = &fip->fields.back ();
+    }
+
+  new_field->offset = die->sect_off;
+
+  attr = dwarf2_attr (die, DW_AT_accessibility, cu);
+  if (attr != nullptr)
+    new_field->accessibility = DW_UNSND (attr);
+  else
+    new_field->accessibility = dwarf2_default_access_attribute (die, cu);
+  if (new_field->accessibility != DW_ACCESS_public)
+    fip->non_public_fields = true;
+
+  attr = dwarf2_attr (die, DW_AT_virtuality, cu);
+  if (attr != nullptr)
+    new_field->virtuality = DW_UNSND (attr);
+  else
+    new_field->virtuality = DW_VIRTUALITY_none;
+
+  fp = &new_field->field;
+
+  if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
+    {
+      /* Data member other than a C++ static data member.  */
+
+      /* Get type of field.  */
+      fp->set_type (die_type (die, cu));
+
+      SET_FIELD_BITPOS (*fp, 0);
+
+      /* Get bit size of field (zero if none).  */
+      attr = dwarf2_attr (die, DW_AT_bit_size, cu);
+      if (attr != nullptr)
+	{
+	  FIELD_BITSIZE (*fp) = DW_UNSND (attr);
+	}
+      else
+	{
+	  FIELD_BITSIZE (*fp) = 0;
+	}
+
+      /* Get bit offset of field.  */
+      handle_data_member_location (die, cu, fp);
+      attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
+      if (attr != nullptr)
+	{
+	  if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
+	    {
+	      /* For big endian bits, the DW_AT_bit_offset gives the
+	         additional bit offset from the MSB of the containing
+	         anonymous object to the MSB of the field.  We don't
+	         have to do anything special since we don't need to
+	         know the size of the anonymous object.  */
+	      SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
+	    }
+	  else
+	    {
+	      /* For little endian bits, compute the bit offset to the
+	         MSB of the anonymous object, subtract off the number of
+	         bits from the MSB of the field to the MSB of the
+	         object, and then subtract off the number of bits of
+	         the field itself.  The result is the bit offset of
+	         the LSB of the field.  */
+	      int anonymous_size;
+	      int bit_offset = DW_UNSND (attr);
+
+	      attr = dwarf2_attr (die, DW_AT_byte_size, cu);
+	      if (attr != nullptr)
+		{
+		  /* The size of the anonymous object containing
+		     the bit field is explicit, so use the
+		     indicated size (in bytes).  */
+		  anonymous_size = DW_UNSND (attr);
+		}
+	      else
+		{
+		  /* The size of the anonymous object containing
+		     the bit field must be inferred from the type
+		     attribute of the data member containing the
+		     bit field.  */
+		  anonymous_size = TYPE_LENGTH (fp->type ());
+		}
+	      SET_FIELD_BITPOS (*fp,
+				(FIELD_BITPOS (*fp)
+				 + anonymous_size * bits_per_byte
+				 - bit_offset - FIELD_BITSIZE (*fp)));
+	    }
+	}
+      attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
+      if (attr != NULL)
+	SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
+				+ attr->constant_value (0)));
+
+      /* Get name of field.  */
+      fieldname = dwarf2_name (die, cu);
+      if (fieldname == NULL)
+	fieldname = "";
+
+      /* The name is already allocated along with this objfile, so we don't
+	 need to duplicate it for the type.  */
+      fp->name = fieldname;
+
+      /* Change accessibility for artificial fields (e.g. virtual table
+         pointer or virtual base class pointer) to private.  */
+      if (dwarf2_attr (die, DW_AT_artificial, cu))
+	{
+	  FIELD_ARTIFICIAL (*fp) = 1;
+	  new_field->accessibility = DW_ACCESS_private;
+	  fip->non_public_fields = true;
+	}
+    }
+  else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
+    {
+      /* C++ static member.  */
+
+      /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
+	 is a declaration, but all versions of G++ as of this writing
+	 (so through at least 3.2.1) incorrectly generate
+	 DW_TAG_variable tags.  */
+
+      const char *physname;
+
+      /* Get name of field.  */
+      fieldname = dwarf2_name (die, cu);
+      if (fieldname == NULL)
+	return;
+
+      attr = dwarf2_attr (die, DW_AT_const_value, cu);
+      if (attr
+	  /* Only create a symbol if this is an external value.
+	     new_symbol checks this and puts the value in the global symbol
+	     table, which we want.  If it is not external, new_symbol
+	     will try to put the value in cu->list_in_scope which is wrong.  */
+	  && dwarf2_flag_true_p (die, DW_AT_external, cu))
+	{
+	  /* A static const member, not much different than an enum as far as
+	     we're concerned, except that we can support more types.  */
+	  new_symbol (die, NULL, cu);
+	}
+
+      /* Get physical name.  */
+      physname = dwarf2_physname (fieldname, die, cu);
+
+      /* The name is already allocated along with this objfile, so we don't
+	 need to duplicate it for the type.  */
+      SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
+      fp->set_type (die_type (die, cu));
+      FIELD_NAME (*fp) = fieldname;
+    }
+  else if (die->tag == DW_TAG_inheritance)
+    {
+      /* C++ base class field.  */
+      handle_data_member_location (die, cu, fp);
+      FIELD_BITSIZE (*fp) = 0;
+      fp->set_type (die_type (die, cu));
+      FIELD_NAME (*fp) = fp->type ()->name ();
+    }
+  else
+    gdb_assert_not_reached ("missing case in dwarf2_add_field");
+}
+
+/* Can the type given by DIE define another type?  */
+
+static bool
+type_can_define_types (const struct die_info *die)
+{
+  switch (die->tag)
+    {
+    case DW_TAG_typedef:
+    case DW_TAG_class_type:
+    case DW_TAG_structure_type:
+    case DW_TAG_union_type:
+    case DW_TAG_enumeration_type:
+      return true;
+
+    default:
+      return false;
+    }
+}
+
+/* Add a type definition defined in the scope of the FIP's class.  */
+
+static void
+dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
+		      struct dwarf2_cu *cu)
+{
+  struct decl_field fp;
+  memset (&fp, 0, sizeof (fp));
+
+  gdb_assert (type_can_define_types (die));
+
+  /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
+  fp.name = dwarf2_name (die, cu);
+  fp.type = read_type_die (die, cu);
+
+  /* Save accessibility.  */
+  enum dwarf_access_attribute accessibility;
+  struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
+  if (attr != NULL)
+    accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
+  else
+    accessibility = dwarf2_default_access_attribute (die, cu);
+  switch (accessibility)
+    {
+    case DW_ACCESS_public:
+      /* The assumed value if neither private nor protected.  */
+      break;
+    case DW_ACCESS_private:
+      fp.is_private = 1;
+      break;
+    case DW_ACCESS_protected:
+      fp.is_protected = 1;
+      break;
+    default:
+      complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
+    }
+
+  if (die->tag == DW_TAG_typedef)
+    fip->typedef_field_list.push_back (fp);
+  else
+    fip->nested_types_list.push_back (fp);
+}
+
+/* A convenience typedef that's used when finding the discriminant
+   field for a variant part.  */
+typedef std::unordered_map<sect_offset, int, gdb::hash_enum<sect_offset>>
+  offset_map_type;
+
+/* Compute the discriminant range for a given variant.  OBSTACK is
+   where the results will be stored.  VARIANT is the variant to
+   process.  IS_UNSIGNED indicates whether the discriminant is signed
+   or unsigned.  */
+
+static const gdb::array_view<discriminant_range>
+convert_variant_range (struct obstack *obstack, const variant_field &variant,
+		       bool is_unsigned)
+{
+  std::vector<discriminant_range> ranges;
+
+  if (variant.default_branch)
+    return {};
+
+  if (variant.discr_list_data == nullptr)
+    {
+      discriminant_range r
+	= {variant.discriminant_value, variant.discriminant_value};
+      ranges.push_back (r);
+    }
+  else
+    {
+      gdb::array_view<const gdb_byte> data (variant.discr_list_data->data,
+					    variant.discr_list_data->size);
+      while (!data.empty ())
+	{
+	  if (data[0] != DW_DSC_range && data[0] != DW_DSC_label)
+	    {
+	      complaint (_("invalid discriminant marker: %d"), data[0]);
+	      break;
+	    }
+	  bool is_range = data[0] == DW_DSC_range;
+	  data = data.slice (1);
+
+	  ULONGEST low, high;
+	  unsigned int bytes_read;
+
+	  if (data.empty ())
+	    {
+	      complaint (_("DW_AT_discr_list missing low value"));
+	      break;
+	    }
+	  if (is_unsigned)
+	    low = read_unsigned_leb128 (nullptr, data.data (), &bytes_read);
+	  else
+	    low = (ULONGEST) read_signed_leb128 (nullptr, data.data (),
+						 &bytes_read);
+	  data = data.slice (bytes_read);
+
+	  if (is_range)
+	    {
+	      if (data.empty ())
+		{
+		  complaint (_("DW_AT_discr_list missing high value"));
+		  break;
+		}
+	      if (is_unsigned)
+		high = read_unsigned_leb128 (nullptr, data.data (),
+					     &bytes_read);
+	      else
+		high = (LONGEST) read_signed_leb128 (nullptr, data.data (),
+						     &bytes_read);
+	      data = data.slice (bytes_read);
+	    }
+	  else
+	    high = low;
+
+	  ranges.push_back ({ low, high });
+	}
+    }
+
+  discriminant_range *result = XOBNEWVEC (obstack, discriminant_range,
+					  ranges.size ());
+  std::copy (ranges.begin (), ranges.end (), result);
+  return gdb::array_view<discriminant_range> (result, ranges.size ());
+}
+
+static const gdb::array_view<variant_part> create_variant_parts
+  (struct obstack *obstack,
+   const offset_map_type &offset_map,
+   struct field_info *fi,
+   const std::vector<variant_part_builder> &variant_parts);
+
+/* Fill in a "struct variant" for a given variant field.  RESULT is
+   the variant to fill in.  OBSTACK is where any needed allocations
+   will be done.  OFFSET_MAP holds the mapping from section offsets to
+   fields for the type.  FI describes the fields of the type we're
+   processing.  FIELD is the variant field we're converting.  */
+
+static void
+create_one_variant (variant &result, struct obstack *obstack,
+		    const offset_map_type &offset_map,
+		    struct field_info *fi, const variant_field &field)
+{
+  result.discriminants = convert_variant_range (obstack, field, false);
+  result.first_field = field.first_field + fi->baseclasses.size ();
+  result.last_field = field.last_field + fi->baseclasses.size ();
+  result.parts = create_variant_parts (obstack, offset_map, fi,
+				       field.variant_parts);
+}
+
+/* Fill in a "struct variant_part" for a given variant part.  RESULT
+   is the variant part to fill in.  OBSTACK is where any needed
+   allocations will be done.  OFFSET_MAP holds the mapping from
+   section offsets to fields for the type.  FI describes the fields of
+   the type we're processing.  BUILDER is the variant part to be
+   converted.  */
+
+static void
+create_one_variant_part (variant_part &result,
+			 struct obstack *obstack,
+			 const offset_map_type &offset_map,
+			 struct field_info *fi,
+			 const variant_part_builder &builder)
+{
+  auto iter = offset_map.find (builder.discriminant_offset);
+  if (iter == offset_map.end ())
+    {
+      result.discriminant_index = -1;
+      /* Doesn't matter.  */
+      result.is_unsigned = false;
+    }
+  else
+    {
+      result.discriminant_index = iter->second;
+      result.is_unsigned
+	= TYPE_UNSIGNED (fi->fields[result.discriminant_index].field.type ());
+    }
+
+  size_t n = builder.variants.size ();
+  variant *output = new (obstack) variant[n];
+  for (size_t i = 0; i < n; ++i)
+    create_one_variant (output[i], obstack, offset_map, fi,
+			builder.variants[i]);
+
+  result.variants = gdb::array_view<variant> (output, n);
+}
+
+/* Create a vector of variant parts that can be attached to a type.
+   OBSTACK is where any needed allocations will be done.  OFFSET_MAP
+   holds the mapping from section offsets to fields for the type.  FI
+   describes the fields of the type we're processing.  VARIANT_PARTS
+   is the vector to convert.  */
+
+static const gdb::array_view<variant_part>
+create_variant_parts (struct obstack *obstack,
+		      const offset_map_type &offset_map,
+		      struct field_info *fi,
+		      const std::vector<variant_part_builder> &variant_parts)
+{
+  if (variant_parts.empty ())
+    return {};
+
+  size_t n = variant_parts.size ();
+  variant_part *result = new (obstack) variant_part[n];
+  for (size_t i = 0; i < n; ++i)
+    create_one_variant_part (result[i], obstack, offset_map, fi,
+			     variant_parts[i]);
+
+  return gdb::array_view<variant_part> (result, n);
+}
+
+/* Compute the variant part vector for FIP, attaching it to TYPE when
+   done.  */
+
+static void
+add_variant_property (struct field_info *fip, struct type *type,
+		      struct dwarf2_cu *cu)
+{
+  /* Map section offsets of fields to their field index.  Note the
+     field index here does not take the number of baseclasses into
+     account.  */
+  offset_map_type offset_map;
+  for (int i = 0; i < fip->fields.size (); ++i)
+    offset_map[fip->fields[i].offset] = i;
+
+  struct objfile *objfile = cu->per_objfile->objfile;
+  gdb::array_view<variant_part> parts
+    = create_variant_parts (&objfile->objfile_obstack, offset_map, fip,
+			    fip->variant_parts);
+
+  struct dynamic_prop prop;
+  prop.set_variant_parts ((gdb::array_view<variant_part> *)
+			  obstack_copy (&objfile->objfile_obstack, &parts,
+					sizeof (parts)));
+
+  type->add_dyn_prop (DYN_PROP_VARIANT_PARTS, prop);
+}
+
+/* Create the vector of fields, and attach it to the type.  */
+
+static void
+dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
+			      struct dwarf2_cu *cu)
+{
+  int nfields = fip->nfields ();
+
+  /* Record the field count, allocate space for the array of fields,
+     and create blank accessibility bitfields if necessary.  */
+  type->set_num_fields (nfields);
+  type->set_fields
+    ((struct field *) TYPE_ZALLOC (type, sizeof (struct field) * nfields));
+
+  if (fip->non_public_fields && cu->language != language_ada)
+    {
+      ALLOCATE_CPLUS_STRUCT_TYPE (type);
+
+      TYPE_FIELD_PRIVATE_BITS (type) =
+	(B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
+      B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
+
+      TYPE_FIELD_PROTECTED_BITS (type) =
+	(B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
+      B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
+
+      TYPE_FIELD_IGNORE_BITS (type) =
+	(B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
+      B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
+    }
+
+  /* If the type has baseclasses, allocate and clear a bit vector for
+     TYPE_FIELD_VIRTUAL_BITS.  */
+  if (!fip->baseclasses.empty () && cu->language != language_ada)
+    {
+      int num_bytes = B_BYTES (fip->baseclasses.size ());
+      unsigned char *pointer;
+
+      ALLOCATE_CPLUS_STRUCT_TYPE (type);
+      pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
+      TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
+      B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
+      TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
+    }
+
+  if (!fip->variant_parts.empty ())
+    add_variant_property (fip, type, cu);
+
+  /* Copy the saved-up fields into the field vector.  */
+  for (int i = 0; i < nfields; ++i)
+    {
+      struct nextfield &field
+	= ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
+	   : fip->fields[i - fip->baseclasses.size ()]);
+
+      type->field (i) = field.field;
+      switch (field.accessibility)
+	{
+	case DW_ACCESS_private:
+	  if (cu->language != language_ada)
+	    SET_TYPE_FIELD_PRIVATE (type, i);
+	  break;
+
+	case DW_ACCESS_protected:
+	  if (cu->language != language_ada)
+	    SET_TYPE_FIELD_PROTECTED (type, i);
+	  break;
+
+	case DW_ACCESS_public:
+	  break;
+
+	default:
+	  /* Unknown accessibility.  Complain and treat it as public.  */
+	  {
+	    complaint (_("unsupported accessibility %d"),
+		       field.accessibility);
+	  }
+	  break;
+	}
+      if (i < fip->baseclasses.size ())
+	{
+	  switch (field.virtuality)
+	    {
+	    case DW_VIRTUALITY_virtual:
+	    case DW_VIRTUALITY_pure_virtual:
+	      if (cu->language == language_ada)
+		error (_("unexpected virtuality in component of Ada type"));
+	      SET_TYPE_FIELD_VIRTUAL (type, i);
+	      break;
+	    }
+	}
+    }
+}
+
+/* Return true if this member function is a constructor, false
+   otherwise.  */
+
+static int
+dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
+{
+  const char *fieldname;
+  const char *type_name;
+  int len;
+
+  if (die->parent == NULL)
+    return 0;
+
+  if (die->parent->tag != DW_TAG_structure_type
+      && die->parent->tag != DW_TAG_union_type
+      && die->parent->tag != DW_TAG_class_type)
+    return 0;
+
+  fieldname = dwarf2_name (die, cu);
+  type_name = dwarf2_name (die->parent, cu);
+  if (fieldname == NULL || type_name == NULL)
+    return 0;
+
+  len = strlen (fieldname);
+  return (strncmp (fieldname, type_name, len) == 0
+	  && (type_name[len] == '\0' || type_name[len] == '<'));
+}
+
+/* Check if the given VALUE is a recognized enum
+   dwarf_defaulted_attribute constant according to DWARF5 spec,
+   Table 7.24.  */
+
+static bool
+is_valid_DW_AT_defaulted (ULONGEST value)
+{
+  switch (value)
+    {
+    case DW_DEFAULTED_no:
+    case DW_DEFAULTED_in_class:
+    case DW_DEFAULTED_out_of_class:
+      return true;
+    }
+
+  complaint (_("unrecognized DW_AT_defaulted value (%s)"), pulongest (value));
+  return false;
+}
+
+/* Add a member function to the proper fieldlist.  */
+
+static void
+dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
+		      struct type *type, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct attribute *attr;
+  int i;
+  struct fnfieldlist *flp = nullptr;
+  struct fn_field *fnp;
+  const char *fieldname;
+  struct type *this_type;
+  enum dwarf_access_attribute accessibility;
+
+  if (cu->language == language_ada)
+    error (_("unexpected member function in Ada type"));
+
+  /* Get name of member function.  */
+  fieldname = dwarf2_name (die, cu);
+  if (fieldname == NULL)
+    return;
+
+  /* Look up member function name in fieldlist.  */
+  for (i = 0; i < fip->fnfieldlists.size (); i++)
+    {
+      if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
+	{
+	  flp = &fip->fnfieldlists[i];
+	  break;
+	}
+    }
+
+  /* Create a new fnfieldlist if necessary.  */
+  if (flp == nullptr)
+    {
+      fip->fnfieldlists.emplace_back ();
+      flp = &fip->fnfieldlists.back ();
+      flp->name = fieldname;
+      i = fip->fnfieldlists.size () - 1;
+    }
+
+  /* Create a new member function field and add it to the vector of
+     fnfieldlists.  */
+  flp->fnfields.emplace_back ();
+  fnp = &flp->fnfields.back ();
+
+  /* Delay processing of the physname until later.  */
+  if (cu->language == language_cplus)
+    add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
+			die, cu);
+  else
+    {
+      const char *physname = dwarf2_physname (fieldname, die, cu);
+      fnp->physname = physname ? physname : "";
+    }
+
+  fnp->type = alloc_type (objfile);
+  this_type = read_type_die (die, cu);
+  if (this_type && this_type->code () == TYPE_CODE_FUNC)
+    {
+      int nparams = this_type->num_fields ();
+
+      /* TYPE is the domain of this method, and THIS_TYPE is the type
+	   of the method itself (TYPE_CODE_METHOD).  */
+      smash_to_method_type (fnp->type, type,
+			    TYPE_TARGET_TYPE (this_type),
+			    this_type->fields (),
+			    this_type->num_fields (),
+			    TYPE_VARARGS (this_type));
+
+      /* Handle static member functions.
+         Dwarf2 has no clean way to discern C++ static and non-static
+         member functions.  G++ helps GDB by marking the first
+         parameter for non-static member functions (which is the this
+         pointer) as artificial.  We obtain this information from
+         read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
+      if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
+	fnp->voffset = VOFFSET_STATIC;
+    }
+  else
+    complaint (_("member function type missing for '%s'"),
+	       dwarf2_full_name (fieldname, die, cu));
+
+  /* Get fcontext from DW_AT_containing_type if present.  */
+  if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
+    fnp->fcontext = die_containing_type (die, cu);
+
+  /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
+     is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
+
+  /* Get accessibility.  */
+  attr = dwarf2_attr (die, DW_AT_accessibility, cu);
+  if (attr != nullptr)
+    accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
+  else
+    accessibility = dwarf2_default_access_attribute (die, cu);
+  switch (accessibility)
+    {
+    case DW_ACCESS_private:
+      fnp->is_private = 1;
+      break;
+    case DW_ACCESS_protected:
+      fnp->is_protected = 1;
+      break;
+    }
+
+  /* Check for artificial methods.  */
+  attr = dwarf2_attr (die, DW_AT_artificial, cu);
+  if (attr && DW_UNSND (attr) != 0)
+    fnp->is_artificial = 1;
+
+  /* Check for defaulted methods.  */
+  attr = dwarf2_attr (die, DW_AT_defaulted, cu);
+  if (attr != nullptr && is_valid_DW_AT_defaulted (DW_UNSND (attr)))
+    fnp->defaulted = (enum dwarf_defaulted_attribute) DW_UNSND (attr);
+
+  /* Check for deleted methods.  */
+  attr = dwarf2_attr (die, DW_AT_deleted, cu);
+  if (attr != nullptr && DW_UNSND (attr) != 0)
+    fnp->is_deleted = 1;
+
+  fnp->is_constructor = dwarf2_is_constructor (die, cu);
+
+  /* Get index in virtual function table if it is a virtual member
+     function.  For older versions of GCC, this is an offset in the
+     appropriate virtual table, as specified by DW_AT_containing_type.
+     For everyone else, it is an expression to be evaluated relative
+     to the object address.  */
+
+  attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
+  if (attr != nullptr)
+    {
+      if (attr->form_is_block () && DW_BLOCK (attr)->size > 0)
+        {
+	  if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
+	    {
+	      /* Old-style GCC.  */
+	      fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
+	    }
+	  else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
+		   || (DW_BLOCK (attr)->size > 1
+		       && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
+		       && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
+	    {
+	      fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
+	      if ((fnp->voffset % cu->header.addr_size) != 0)
+		dwarf2_complex_location_expr_complaint ();
+	      else
+		fnp->voffset /= cu->header.addr_size;
+	      fnp->voffset += 2;
+	    }
+	  else
+	    dwarf2_complex_location_expr_complaint ();
+
+	  if (!fnp->fcontext)
+	    {
+	      /* If there is no `this' field and no DW_AT_containing_type,
+		 we cannot actually find a base class context for the
+		 vtable!  */
+	      if (this_type->num_fields () == 0
+		  || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
+		{
+		  complaint (_("cannot determine context for virtual member "
+			       "function \"%s\" (offset %s)"),
+			     fieldname, sect_offset_str (die->sect_off));
+		}
+	      else
+		{
+		  fnp->fcontext
+		    = TYPE_TARGET_TYPE (this_type->field (0).type ());
+		}
+	    }
+	}
+      else if (attr->form_is_section_offset ())
+        {
+	  dwarf2_complex_location_expr_complaint ();
+        }
+      else
+        {
+	  dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
+						 fieldname);
+        }
+    }
+  else
+    {
+      attr = dwarf2_attr (die, DW_AT_virtuality, cu);
+      if (attr && DW_UNSND (attr))
+	{
+	  /* GCC does this, as of 2008-08-25; PR debug/37237.  */
+	  complaint (_("Member function \"%s\" (offset %s) is virtual "
+		       "but the vtable offset is not specified"),
+		     fieldname, sect_offset_str (die->sect_off));
+	  ALLOCATE_CPLUS_STRUCT_TYPE (type);
+	  TYPE_CPLUS_DYNAMIC (type) = 1;
+	}
+    }
+}
+
+/* Create the vector of member function fields, and attach it to the type.  */
+
+static void
+dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
+				 struct dwarf2_cu *cu)
+{
+  if (cu->language == language_ada)
+    error (_("unexpected member functions in Ada type"));
+
+  ALLOCATE_CPLUS_STRUCT_TYPE (type);
+  TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
+    TYPE_ALLOC (type,
+		sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
+
+  for (int i = 0; i < fip->fnfieldlists.size (); i++)
+    {
+      struct fnfieldlist &nf = fip->fnfieldlists[i];
+      struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
+
+      TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
+      TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
+      fn_flp->fn_fields = (struct fn_field *)
+	TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
+
+      for (int k = 0; k < nf.fnfields.size (); ++k)
+	fn_flp->fn_fields[k] = nf.fnfields[k];
+    }
+
+  TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
+}
+
+/* Returns non-zero if NAME is the name of a vtable member in CU's
+   language, zero otherwise.  */
+static int
+is_vtable_name (const char *name, struct dwarf2_cu *cu)
+{
+  static const char vptr[] = "_vptr";
+
+  /* Look for the C++ form of the vtable.  */
+  if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
+    return 1;
+
+  return 0;
+}
+
+/* GCC outputs unnamed structures that are really pointers to member
+   functions, with the ABI-specified layout.  If TYPE describes
+   such a structure, smash it into a member function type.
+
+   GCC shouldn't do this; it should just output pointer to member DIEs.
+   This is GCC PR debug/28767.  */
+
+static void
+quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
+{
+  struct type *pfn_type, *self_type, *new_type;
+
+  /* Check for a structure with no name and two children.  */
+  if (type->code () != TYPE_CODE_STRUCT || type->num_fields () != 2)
+    return;
+
+  /* Check for __pfn and __delta members.  */
+  if (TYPE_FIELD_NAME (type, 0) == NULL
+      || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
+      || TYPE_FIELD_NAME (type, 1) == NULL
+      || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
+    return;
+
+  /* Find the type of the method.  */
+  pfn_type = type->field (0).type ();
+  if (pfn_type == NULL
+      || pfn_type->code () != TYPE_CODE_PTR
+      || TYPE_TARGET_TYPE (pfn_type)->code () != TYPE_CODE_FUNC)
+    return;
+
+  /* Look for the "this" argument.  */
+  pfn_type = TYPE_TARGET_TYPE (pfn_type);
+  if (pfn_type->num_fields () == 0
+      /* || pfn_type->field (0).type () == NULL */
+      || pfn_type->field (0).type ()->code () != TYPE_CODE_PTR)
+    return;
+
+  self_type = TYPE_TARGET_TYPE (pfn_type->field (0).type ());
+  new_type = alloc_type (objfile);
+  smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
+			pfn_type->fields (), pfn_type->num_fields (),
+			TYPE_VARARGS (pfn_type));
+  smash_to_methodptr_type (type, new_type);
+}
+
+/* If the DIE has a DW_AT_alignment attribute, return its value, doing
+   appropriate error checking and issuing complaints if there is a
+   problem.  */
+
+static ULONGEST
+get_alignment (struct dwarf2_cu *cu, struct die_info *die)
+{
+  struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
+
+  if (attr == nullptr)
+    return 0;
+
+  if (!attr->form_is_constant ())
+    {
+      complaint (_("DW_AT_alignment must have constant form"
+		   " - DIE at %s [in module %s]"),
+		 sect_offset_str (die->sect_off),
+		 objfile_name (cu->per_objfile->objfile));
+      return 0;
+    }
+
+  ULONGEST align;
+  if (attr->form == DW_FORM_sdata)
+    {
+      LONGEST val = DW_SND (attr);
+      if (val < 0)
+	{
+	  complaint (_("DW_AT_alignment value must not be negative"
+		       " - DIE at %s [in module %s]"),
+		     sect_offset_str (die->sect_off),
+		     objfile_name (cu->per_objfile->objfile));
+	  return 0;
+	}
+      align = val;
+    }
+  else
+    align = DW_UNSND (attr);
+
+  if (align == 0)
+    {
+      complaint (_("DW_AT_alignment value must not be zero"
+		   " - DIE at %s [in module %s]"),
+		 sect_offset_str (die->sect_off),
+		 objfile_name (cu->per_objfile->objfile));
+      return 0;
+    }
+  if ((align & (align - 1)) != 0)
+    {
+      complaint (_("DW_AT_alignment value must be a power of 2"
+		   " - DIE at %s [in module %s]"),
+		 sect_offset_str (die->sect_off),
+		 objfile_name (cu->per_objfile->objfile));
+      return 0;
+    }
+
+  return align;
+}
+
+/* If the DIE has a DW_AT_alignment attribute, use its value to set
+   the alignment for TYPE.  */
+
+static void
+maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
+		     struct type *type)
+{
+  if (!set_type_align (type, get_alignment (cu, die)))
+    complaint (_("DW_AT_alignment value too large"
+		 " - DIE at %s [in module %s]"),
+	       sect_offset_str (die->sect_off),
+	       objfile_name (cu->per_objfile->objfile));
+}
+
+/* Check if the given VALUE is a valid enum dwarf_calling_convention
+   constant for a type, according to DWARF5 spec, Table 5.5.  */
+
+static bool
+is_valid_DW_AT_calling_convention_for_type (ULONGEST value)
+{
+  switch (value)
+    {
+    case DW_CC_normal:
+    case DW_CC_pass_by_reference:
+    case DW_CC_pass_by_value:
+      return true;
+
+    default:
+      complaint (_("unrecognized DW_AT_calling_convention value "
+		   "(%s) for a type"), pulongest (value));
+      return false;
+    }
+}
+
+/* Check if the given VALUE is a valid enum dwarf_calling_convention
+   constant for a subroutine, according to DWARF5 spec, Table 3.3, and
+   also according to GNU-specific values (see include/dwarf2.h).  */
+
+static bool
+is_valid_DW_AT_calling_convention_for_subroutine (ULONGEST value)
+{
+  switch (value)
+    {
+    case DW_CC_normal:
+    case DW_CC_program:
+    case DW_CC_nocall:
+      return true;
+
+    case DW_CC_GNU_renesas_sh:
+    case DW_CC_GNU_borland_fastcall_i386:
+    case DW_CC_GDB_IBM_OpenCL:
+      return true;
+
+    default:
+      complaint (_("unrecognized DW_AT_calling_convention value "
+		   "(%s) for a subroutine"), pulongest (value));
+      return false;
+    }
+}
+
+/* Called when we find the DIE that starts a structure or union scope
+   (definition) to create a type for the structure or union.  Fill in
+   the type's name and general properties; the members will not be
+   processed until process_structure_scope.  A symbol table entry for
+   the type will also not be done until process_structure_scope (assuming
+   the type has a name).
+
+   NOTE: we need to call these functions regardless of whether or not the
+   DIE has a DW_AT_name attribute, since it might be an anonymous
+   structure or union.  This gets the type entered into our set of
+   user defined types.  */
+
+static struct type *
+read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct type *type;
+  struct attribute *attr;
+  const char *name;
+
+  /* If the definition of this type lives in .debug_types, read that type.
+     Don't follow DW_AT_specification though, that will take us back up
+     the chain and we want to go down.  */
+  attr = die->attr (DW_AT_signature);
+  if (attr != nullptr)
+    {
+      type = get_DW_AT_signature_type (die, attr, cu);
+
+      /* The type's CU may not be the same as CU.
+	 Ensure TYPE is recorded with CU in die_type_hash.  */
+      return set_die_type (die, type, cu);
+    }
+
+  type = alloc_type (objfile);
+  INIT_CPLUS_SPECIFIC (type);
+
+  name = dwarf2_name (die, cu);
+  if (name != NULL)
+    {
+      if (cu->language == language_cplus
+	  || cu->language == language_d
+	  || cu->language == language_rust)
+	{
+	  const char *full_name = dwarf2_full_name (name, die, cu);
+
+	  /* dwarf2_full_name might have already finished building the DIE's
+	     type.  If so, there is no need to continue.  */
+	  if (get_die_type (die, cu) != NULL)
+	    return get_die_type (die, cu);
+
+	  type->set_name (full_name);
+	}
+      else
+	{
+	  /* The name is already allocated along with this objfile, so
+	     we don't need to duplicate it for the type.  */
+	  type->set_name (name);
+	}
+    }
+
+  if (die->tag == DW_TAG_structure_type)
+    {
+      type->set_code (TYPE_CODE_STRUCT);
+    }
+  else if (die->tag == DW_TAG_union_type)
+    {
+      type->set_code (TYPE_CODE_UNION);
+    }
+  else
+    {
+      type->set_code (TYPE_CODE_STRUCT);
+    }
+
+  if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
+    TYPE_DECLARED_CLASS (type) = 1;
+
+  /* Store the calling convention in the type if it's available in
+     the die.  Otherwise the calling convention remains set to
+     the default value DW_CC_normal.  */
+  attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
+  if (attr != nullptr
+      && is_valid_DW_AT_calling_convention_for_type (DW_UNSND (attr)))
+    {
+      ALLOCATE_CPLUS_STRUCT_TYPE (type);
+      TYPE_CPLUS_CALLING_CONVENTION (type)
+	= (enum dwarf_calling_convention) (DW_UNSND (attr));
+    }
+
+  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
+  if (attr != nullptr)
+    {
+      if (attr->form_is_constant ())
+        TYPE_LENGTH (type) = DW_UNSND (attr);
+      else
+	{
+	  struct dynamic_prop prop;
+	  if (attr_to_dynamic_prop (attr, die, cu, &prop, cu->addr_type ()))
+	    type->add_dyn_prop (DYN_PROP_BYTE_SIZE, prop);
+          TYPE_LENGTH (type) = 0;
+	}
+    }
+  else
+    {
+      TYPE_LENGTH (type) = 0;
+    }
+
+  maybe_set_alignment (cu, die, type);
+
+  if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
+    {
+      /* ICC<14 does not output the required DW_AT_declaration on
+	 incomplete types, but gives them a size of zero.  */
+      TYPE_STUB (type) = 1;
+    }
+  else
+    TYPE_STUB_SUPPORTED (type) = 1;
+
+  if (die_is_declaration (die, cu))
+    TYPE_STUB (type) = 1;
+  else if (attr == NULL && die->child == NULL
+	   && producer_is_realview (cu->producer))
+    /* RealView does not output the required DW_AT_declaration
+       on incomplete types.  */
+    TYPE_STUB (type) = 1;
+
+  /* We need to add the type field to the die immediately so we don't
+     infinitely recurse when dealing with pointers to the structure
+     type within the structure itself.  */
+  set_die_type (die, type, cu);
+
+  /* set_die_type should be already done.  */
+  set_descriptive_type (type, die, cu);
+
+  return type;
+}
+
+static void handle_struct_member_die
+  (struct die_info *child_die,
+   struct type *type,
+   struct field_info *fi,
+   std::vector<struct symbol *> *template_args,
+   struct dwarf2_cu *cu);
+
+/* A helper for handle_struct_member_die that handles
+   DW_TAG_variant_part.  */
+
+static void
+handle_variant_part (struct die_info *die, struct type *type,
+		     struct field_info *fi,
+		     std::vector<struct symbol *> *template_args,
+		     struct dwarf2_cu *cu)
+{
+  variant_part_builder *new_part;
+  if (fi->current_variant_part == nullptr)
+    {
+      fi->variant_parts.emplace_back ();
+      new_part = &fi->variant_parts.back ();
+    }
+  else if (!fi->current_variant_part->processing_variant)
+    {
+      complaint (_("nested DW_TAG_variant_part seen "
+		   "- DIE at %s [in module %s]"),
+		 sect_offset_str (die->sect_off),
+		 objfile_name (cu->per_objfile->objfile));
+      return;
+    }
+  else
+    {
+      variant_field &current = fi->current_variant_part->variants.back ();
+      current.variant_parts.emplace_back ();
+      new_part = &current.variant_parts.back ();
+    }
+
+  /* When we recurse, we want callees to add to this new variant
+     part.  */
+  scoped_restore save_current_variant_part
+    = make_scoped_restore (&fi->current_variant_part, new_part);
+
+  struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
+  if (discr == NULL)
+    {
+      /* It's a univariant form, an extension we support.  */
+    }
+  else if (discr->form_is_ref ())
+    {
+      struct dwarf2_cu *target_cu = cu;
+      struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
+
+      new_part->discriminant_offset = target_die->sect_off;
+    }
+  else
+    {
+      complaint (_("DW_AT_discr does not have DIE reference form"
+		   " - DIE at %s [in module %s]"),
+		 sect_offset_str (die->sect_off),
+		 objfile_name (cu->per_objfile->objfile));
+    }
+
+  for (die_info *child_die = die->child;
+       child_die != NULL;
+       child_die = child_die->sibling)
+    handle_struct_member_die (child_die, type, fi, template_args, cu);
+}
+
+/* A helper for handle_struct_member_die that handles
+   DW_TAG_variant.  */
+
+static void
+handle_variant (struct die_info *die, struct type *type,
+		struct field_info *fi,
+		std::vector<struct symbol *> *template_args,
+		struct dwarf2_cu *cu)
+{
+  if (fi->current_variant_part == nullptr)
+    {
+      complaint (_("saw DW_TAG_variant outside DW_TAG_variant_part "
+		   "- DIE at %s [in module %s]"),
+		 sect_offset_str (die->sect_off),
+		 objfile_name (cu->per_objfile->objfile));
+      return;
+    }
+  if (fi->current_variant_part->processing_variant)
+    {
+      complaint (_("nested DW_TAG_variant seen "
+		   "- DIE at %s [in module %s]"),
+		 sect_offset_str (die->sect_off),
+		 objfile_name (cu->per_objfile->objfile));
+      return;
+    }
+
+  scoped_restore save_processing_variant
+    = make_scoped_restore (&fi->current_variant_part->processing_variant,
+			   true);
+
+  fi->current_variant_part->variants.emplace_back ();
+  variant_field &variant = fi->current_variant_part->variants.back ();
+  variant.first_field = fi->fields.size ();
+
+  /* In a variant we want to get the discriminant and also add a
+     field for our sole member child.  */
+  struct attribute *discr = dwarf2_attr (die, DW_AT_discr_value, cu);
+  if (discr == nullptr)
+    {
+      discr = dwarf2_attr (die, DW_AT_discr_list, cu);
+      if (discr == nullptr || DW_BLOCK (discr)->size == 0)
+	variant.default_branch = true;
+      else
+	variant.discr_list_data = DW_BLOCK (discr);
+    }
+  else
+    variant.discriminant_value = DW_UNSND (discr);
+
+  for (die_info *variant_child = die->child;
+       variant_child != NULL;
+       variant_child = variant_child->sibling)
+    handle_struct_member_die (variant_child, type, fi, template_args, cu);
+
+  variant.last_field = fi->fields.size ();
+}
+
+/* A helper for process_structure_scope that handles a single member
+   DIE.  */
+
+static void
+handle_struct_member_die (struct die_info *child_die, struct type *type,
+			  struct field_info *fi,
+			  std::vector<struct symbol *> *template_args,
+			  struct dwarf2_cu *cu)
+{
+  if (child_die->tag == DW_TAG_member
+      || child_die->tag == DW_TAG_variable)
+    {
+      /* NOTE: carlton/2002-11-05: A C++ static data member
+	 should be a DW_TAG_member that is a declaration, but
+	 all versions of G++ as of this writing (so through at
+	 least 3.2.1) incorrectly generate DW_TAG_variable
+	 tags for them instead.  */
+      dwarf2_add_field (fi, child_die, cu);
+    }
+  else if (child_die->tag == DW_TAG_subprogram)
+    {
+      /* Rust doesn't have member functions in the C++ sense.
+	 However, it does emit ordinary functions as children
+	 of a struct DIE.  */
+      if (cu->language == language_rust)
+	read_func_scope (child_die, cu);
+      else
+	{
+	  /* C++ member function.  */
+	  dwarf2_add_member_fn (fi, child_die, type, cu);
+	}
+    }
+  else if (child_die->tag == DW_TAG_inheritance)
+    {
+      /* C++ base class field.  */
+      dwarf2_add_field (fi, child_die, cu);
+    }
+  else if (type_can_define_types (child_die))
+    dwarf2_add_type_defn (fi, child_die, cu);
+  else if (child_die->tag == DW_TAG_template_type_param
+	   || child_die->tag == DW_TAG_template_value_param)
+    {
+      struct symbol *arg = new_symbol (child_die, NULL, cu);
+
+      if (arg != NULL)
+	template_args->push_back (arg);
+    }
+  else if (child_die->tag == DW_TAG_variant_part)
+    handle_variant_part (child_die, type, fi, template_args, cu);
+  else if (child_die->tag == DW_TAG_variant)
+    handle_variant (child_die, type, fi, template_args, cu);
+}
+
+/* Finish creating a structure or union type, including filling in
+   its members and creating a symbol for it.  */
+
+static void
+process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct die_info *child_die;
+  struct type *type;
+
+  type = get_die_type (die, cu);
+  if (type == NULL)
+    type = read_structure_type (die, cu);
+
+  bool has_template_parameters = false;
+  if (die->child != NULL && ! die_is_declaration (die, cu))
+    {
+      struct field_info fi;
+      std::vector<struct symbol *> template_args;
+
+      child_die = die->child;
+
+      while (child_die && child_die->tag)
+	{
+	  handle_struct_member_die (child_die, type, &fi, &template_args, cu);
+	  child_die = child_die->sibling;
+	}
+
+      /* Attach template arguments to type.  */
+      if (!template_args.empty ())
+	{
+	  has_template_parameters = true;
+	  ALLOCATE_CPLUS_STRUCT_TYPE (type);
+	  TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
+	  TYPE_TEMPLATE_ARGUMENTS (type)
+	    = XOBNEWVEC (&objfile->objfile_obstack,
+			 struct symbol *,
+			 TYPE_N_TEMPLATE_ARGUMENTS (type));
+	  memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
+		  template_args.data (),
+		  (TYPE_N_TEMPLATE_ARGUMENTS (type)
+		   * sizeof (struct symbol *)));
+	}
+
+      /* Attach fields and member functions to the type.  */
+      if (fi.nfields () > 0)
+	dwarf2_attach_fields_to_type (&fi, type, cu);
+      if (!fi.fnfieldlists.empty ())
+	{
+	  dwarf2_attach_fn_fields_to_type (&fi, type, cu);
+
+	  /* Get the type which refers to the base class (possibly this
+	     class itself) which contains the vtable pointer for the current
+	     class from the DW_AT_containing_type attribute.  This use of
+	     DW_AT_containing_type is a GNU extension.  */
+
+	  if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
+	    {
+	      struct type *t = die_containing_type (die, cu);
+
+	      set_type_vptr_basetype (type, t);
+	      if (type == t)
+		{
+		  int i;
+
+		  /* Our own class provides vtbl ptr.  */
+		  for (i = t->num_fields () - 1;
+		       i >= TYPE_N_BASECLASSES (t);
+		       --i)
+		    {
+		      const char *fieldname = TYPE_FIELD_NAME (t, i);
+
+                      if (is_vtable_name (fieldname, cu))
+			{
+			  set_type_vptr_fieldno (type, i);
+			  break;
+			}
+		    }
+
+		  /* Complain if virtual function table field not found.  */
+		  if (i < TYPE_N_BASECLASSES (t))
+		    complaint (_("virtual function table pointer "
+				 "not found when defining class '%s'"),
+			       type->name () ? type->name () : "");
+		}
+	      else
+		{
+		  set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
+		}
+	    }
+	  else if (cu->producer
+		   && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
+	    {
+	      /* The IBM XLC compiler does not provide direct indication
+	         of the containing type, but the vtable pointer is
+	         always named __vfp.  */
+
+	      int i;
+
+	      for (i = type->num_fields () - 1;
+		   i >= TYPE_N_BASECLASSES (type);
+		   --i)
+		{
+		  if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
+		    {
+		      set_type_vptr_fieldno (type, i);
+		      set_type_vptr_basetype (type, type);
+		      break;
+		    }
+		}
+	    }
+	}
+
+      /* Copy fi.typedef_field_list linked list elements content into the
+	 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
+      if (!fi.typedef_field_list.empty ())
+	{
+	  int count = fi.typedef_field_list.size ();
+
+	  ALLOCATE_CPLUS_STRUCT_TYPE (type);
+	  TYPE_TYPEDEF_FIELD_ARRAY (type)
+	    = ((struct decl_field *)
+	       TYPE_ALLOC (type,
+			   sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
+	  TYPE_TYPEDEF_FIELD_COUNT (type) = count;
+
+	  for (int i = 0; i < fi.typedef_field_list.size (); ++i)
+	    TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
+	}
+
+      /* Copy fi.nested_types_list linked list elements content into the
+	 allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
+      if (!fi.nested_types_list.empty () && cu->language != language_ada)
+	{
+	  int count = fi.nested_types_list.size ();
+
+	  ALLOCATE_CPLUS_STRUCT_TYPE (type);
+	  TYPE_NESTED_TYPES_ARRAY (type)
+	    = ((struct decl_field *)
+	       TYPE_ALLOC (type, sizeof (struct decl_field) * count));
+	  TYPE_NESTED_TYPES_COUNT (type) = count;
+
+	  for (int i = 0; i < fi.nested_types_list.size (); ++i)
+	    TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
+	}
+    }
+
+  quirk_gcc_member_function_pointer (type, objfile);
+  if (cu->language == language_rust && die->tag == DW_TAG_union_type)
+    cu->rust_unions.push_back (type);
+
+  /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
+     snapshots) has been known to create a die giving a declaration
+     for a class that has, as a child, a die giving a definition for a
+     nested class.  So we have to process our children even if the
+     current die is a declaration.  Normally, of course, a declaration
+     won't have any children at all.  */
+
+  child_die = die->child;
+
+  while (child_die != NULL && child_die->tag)
+    {
+      if (child_die->tag == DW_TAG_member
+	  || child_die->tag == DW_TAG_variable
+	  || child_die->tag == DW_TAG_inheritance
+	  || child_die->tag == DW_TAG_template_value_param
+	  || child_die->tag == DW_TAG_template_type_param)
+	{
+	  /* Do nothing.  */
+	}
+      else
+	process_die (child_die, cu);
+
+      child_die = child_die->sibling;
+    }
+
+  /* Do not consider external references.  According to the DWARF standard,
+     these DIEs are identified by the fact that they have no byte_size
+     attribute, and a declaration attribute.  */
+  if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
+      || !die_is_declaration (die, cu)
+      || dwarf2_attr (die, DW_AT_signature, cu) != NULL)
+    {
+      struct symbol *sym = new_symbol (die, type, cu);
+
+      if (has_template_parameters)
+	{
+	  struct symtab *symtab;
+	  if (sym != nullptr)
+	    symtab = symbol_symtab (sym);
+	  else if (cu->line_header != nullptr)
+	    {
+	      /* Any related symtab will do.  */
+	      symtab
+		= cu->line_header->file_names ()[0].symtab;
+	    }
+	  else
+	    {
+	      symtab = nullptr;
+	      complaint (_("could not find suitable "
+			   "symtab for template parameter"
+			   " - DIE at %s [in module %s]"),
+			 sect_offset_str (die->sect_off),
+			 objfile_name (objfile));
+	    }
+
+	  if (symtab != nullptr)
+	    {
+	      /* Make sure that the symtab is set on the new symbols.
+		 Even though they don't appear in this symtab directly,
+		 other parts of gdb assume that symbols do, and this is
+		 reasonably true.  */
+	      for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
+		symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab);
+	    }
+	}
+    }
+}
+
+/* Assuming DIE is an enumeration type, and TYPE is its associated
+   type, update TYPE using some information only available in DIE's
+   children.  In particular, the fields are computed.  */
+
+static void
+update_enumeration_type_from_children (struct die_info *die,
+				       struct type *type,
+				       struct dwarf2_cu *cu)
+{
+  struct die_info *child_die;
+  int unsigned_enum = 1;
+  int flag_enum = 1;
+
+  auto_obstack obstack;
+  std::vector<struct field> fields;
+
+  for (child_die = die->child;
+       child_die != NULL && child_die->tag;
+       child_die = child_die->sibling)
+    {
+      struct attribute *attr;
+      LONGEST value;
+      const gdb_byte *bytes;
+      struct dwarf2_locexpr_baton *baton;
+      const char *name;
+
+      if (child_die->tag != DW_TAG_enumerator)
+	continue;
+
+      attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
+      if (attr == NULL)
+	continue;
+
+      name = dwarf2_name (child_die, cu);
+      if (name == NULL)
+	name = "<anonymous enumerator>";
+
+      dwarf2_const_value_attr (attr, type, name, &obstack, cu,
+			       &value, &bytes, &baton);
+      if (value < 0)
+	{
+	  unsigned_enum = 0;
+	  flag_enum = 0;
+	}
+      else
+	{
+	  if (count_one_bits_ll (value) >= 2)
+	    flag_enum = 0;
+	}
+
+      fields.emplace_back ();
+      struct field &field = fields.back ();
+      FIELD_NAME (field) = dwarf2_physname (name, child_die, cu);
+      SET_FIELD_ENUMVAL (field, value);
+    }
+
+  if (!fields.empty ())
+    {
+      type->set_num_fields (fields.size ());
+      type->set_fields
+	((struct field *)
+	 TYPE_ALLOC (type, sizeof (struct field) * fields.size ()));
+      memcpy (type->fields (), fields.data (),
+	      sizeof (struct field) * fields.size ());
+    }
+
+  if (unsigned_enum)
+    TYPE_UNSIGNED (type) = 1;
+  if (flag_enum)
+    TYPE_FLAG_ENUM (type) = 1;
+}
+
+/* Given a DW_AT_enumeration_type die, set its type.  We do not
+   complete the type's fields yet, or create any symbols.  */
+
+static struct type *
+read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct type *type;
+  struct attribute *attr;
+  const char *name;
+
+  /* If the definition of this type lives in .debug_types, read that type.
+     Don't follow DW_AT_specification though, that will take us back up
+     the chain and we want to go down.  */
+  attr = die->attr (DW_AT_signature);
+  if (attr != nullptr)
+    {
+      type = get_DW_AT_signature_type (die, attr, cu);
+
+      /* The type's CU may not be the same as CU.
+	 Ensure TYPE is recorded with CU in die_type_hash.  */
+      return set_die_type (die, type, cu);
+    }
+
+  type = alloc_type (objfile);
+
+  type->set_code (TYPE_CODE_ENUM);
+  name = dwarf2_full_name (NULL, die, cu);
+  if (name != NULL)
+    type->set_name (name);
+
+  attr = dwarf2_attr (die, DW_AT_type, cu);
+  if (attr != NULL)
+    {
+      struct type *underlying_type = die_type (die, cu);
+
+      TYPE_TARGET_TYPE (type) = underlying_type;
+    }
+
+  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
+  if (attr != nullptr)
+    {
+      TYPE_LENGTH (type) = DW_UNSND (attr);
+    }
+  else
+    {
+      TYPE_LENGTH (type) = 0;
+    }
+
+  maybe_set_alignment (cu, die, type);
+
+  /* The enumeration DIE can be incomplete.  In Ada, any type can be
+     declared as private in the package spec, and then defined only
+     inside the package body.  Such types are known as Taft Amendment
+     Types.  When another package uses such a type, an incomplete DIE
+     may be generated by the compiler.  */
+  if (die_is_declaration (die, cu))
+    TYPE_STUB (type) = 1;
+
+  /* If this type has an underlying type that is not a stub, then we
+     may use its attributes.  We always use the "unsigned" attribute
+     in this situation, because ordinarily we guess whether the type
+     is unsigned -- but the guess can be wrong and the underlying type
+     can tell us the reality.  However, we defer to a local size
+     attribute if one exists, because this lets the compiler override
+     the underlying type if needed.  */
+  if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
+    {
+      struct type *underlying_type = TYPE_TARGET_TYPE (type);
+      underlying_type = check_typedef (underlying_type);
+      TYPE_UNSIGNED (type) = TYPE_UNSIGNED (underlying_type);
+      if (TYPE_LENGTH (type) == 0)
+	TYPE_LENGTH (type) = TYPE_LENGTH (underlying_type);
+      if (TYPE_RAW_ALIGN (type) == 0
+	  && TYPE_RAW_ALIGN (underlying_type) != 0)
+	set_type_align (type, TYPE_RAW_ALIGN (underlying_type));
+    }
+
+  TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
+
+  set_die_type (die, type, cu);
+
+  /* Finish the creation of this type by using the enum's children.
+     Note that, as usual, this must come after set_die_type to avoid
+     infinite recursion when trying to compute the names of the
+     enumerators.  */
+  update_enumeration_type_from_children (die, type, cu);
+
+  return type;
+}
+
+/* Given a pointer to a die which begins an enumeration, process all
+   the dies that define the members of the enumeration, and create the
+   symbol for the enumeration type.
+
+   NOTE: We reverse the order of the element list.  */
+
+static void
+process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *this_type;
+
+  this_type = get_die_type (die, cu);
+  if (this_type == NULL)
+    this_type = read_enumeration_type (die, cu);
+
+  if (die->child != NULL)
+    {
+      struct die_info *child_die;
+      const char *name;
+
+      child_die = die->child;
+      while (child_die && child_die->tag)
+	{
+	  if (child_die->tag != DW_TAG_enumerator)
+	    {
+	      process_die (child_die, cu);
+	    }
+	  else
+	    {
+	      name = dwarf2_name (child_die, cu);
+	      if (name)
+		new_symbol (child_die, this_type, cu);
+	    }
+
+	  child_die = child_die->sibling;
+	}
+    }
+
+  /* If we are reading an enum from a .debug_types unit, and the enum
+     is a declaration, and the enum is not the signatured type in the
+     unit, then we do not want to add a symbol for it.  Adding a
+     symbol would in some cases obscure the true definition of the
+     enum, giving users an incomplete type when the definition is
+     actually available.  Note that we do not want to do this for all
+     enums which are just declarations, because C++0x allows forward
+     enum declarations.  */
+  if (cu->per_cu->is_debug_types
+      && die_is_declaration (die, cu))
+    {
+      struct signatured_type *sig_type;
+
+      sig_type = (struct signatured_type *) cu->per_cu;
+      gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
+      if (sig_type->type_offset_in_section != die->sect_off)
+	return;
+    }
+
+  new_symbol (die, this_type, cu);
+}
+
+/* Extract all information from a DW_TAG_array_type DIE and put it in
+   the DIE's type field.  For now, this only handles one dimensional
+   arrays.  */
+
+static struct type *
+read_array_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct die_info *child_die;
+  struct type *type;
+  struct type *element_type, *range_type, *index_type;
+  struct attribute *attr;
+  const char *name;
+  struct dynamic_prop *byte_stride_prop = NULL;
+  unsigned int bit_stride = 0;
+
+  element_type = die_type (die, cu);
+
+  /* The die_type call above may have already set the type for this DIE.  */
+  type = get_die_type (die, cu);
+  if (type)
+    return type;
+
+  attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
+  if (attr != NULL)
+    {
+      int stride_ok;
+      struct type *prop_type = cu->addr_sized_int_type (false);
+
+      byte_stride_prop
+	= (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
+      stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop,
+					prop_type);
+      if (!stride_ok)
+	{
+	  complaint (_("unable to read array DW_AT_byte_stride "
+		       " - DIE at %s [in module %s]"),
+		     sect_offset_str (die->sect_off),
+		     objfile_name (cu->per_objfile->objfile));
+	  /* Ignore this attribute.  We will likely not be able to print
+	     arrays of this type correctly, but there is little we can do
+	     to help if we cannot read the attribute's value.  */
+	  byte_stride_prop = NULL;
+	}
+    }
+
+  attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
+  if (attr != NULL)
+    bit_stride = DW_UNSND (attr);
+
+  /* Irix 6.2 native cc creates array types without children for
+     arrays with unspecified length.  */
+  if (die->child == NULL)
+    {
+      index_type = objfile_type (objfile)->builtin_int;
+      range_type = create_static_range_type (NULL, index_type, 0, -1);
+      type = create_array_type_with_stride (NULL, element_type, range_type,
+					    byte_stride_prop, bit_stride);
+      return set_die_type (die, type, cu);
+    }
+
+  std::vector<struct type *> range_types;
+  child_die = die->child;
+  while (child_die && child_die->tag)
+    {
+      if (child_die->tag == DW_TAG_subrange_type)
+	{
+	  struct type *child_type = read_type_die (child_die, cu);
+
+          if (child_type != NULL)
+            {
+	      /* The range type was succesfully read.  Save it for the
+                 array type creation.  */
+	      range_types.push_back (child_type);
+            }
+	}
+      child_die = child_die->sibling;
+    }
+
+  if (range_types.empty ())
+    {
+      complaint (_("unable to find array range - DIE at %s [in module %s]"),
+		 sect_offset_str (die->sect_off),
+		 objfile_name (cu->per_objfile->objfile));
+      return NULL;
+    }
+
+  /* Dwarf2 dimensions are output from left to right, create the
+     necessary array types in backwards order.  */
+
+  type = element_type;
+
+  if (read_array_order (die, cu) == DW_ORD_col_major)
+    {
+      int i = 0;
+
+      while (i < range_types.size ())
+	type = create_array_type_with_stride (NULL, type, range_types[i++],
+					      byte_stride_prop, bit_stride);
+    }
+  else
+    {
+      size_t ndim = range_types.size ();
+      while (ndim-- > 0)
+	type = create_array_type_with_stride (NULL, type, range_types[ndim],
+					      byte_stride_prop, bit_stride);
+    }
+
+  gdb_assert (type != element_type);
+
+  /* Understand Dwarf2 support for vector types (like they occur on
+     the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
+     array type.  This is not part of the Dwarf2/3 standard yet, but a
+     custom vendor extension.  The main difference between a regular
+     array and the vector variant is that vectors are passed by value
+     to functions.  */
+  attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
+  if (attr != nullptr)
+    make_vector_type (type);
+
+  /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
+     implementation may choose to implement triple vectors using this
+     attribute.  */
+  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
+  if (attr != nullptr)
+    {
+      if (DW_UNSND (attr) >= TYPE_LENGTH (type))
+	TYPE_LENGTH (type) = DW_UNSND (attr);
+      else
+	complaint (_("DW_AT_byte_size for array type smaller "
+		     "than the total size of elements"));
+    }
+
+  name = dwarf2_name (die, cu);
+  if (name)
+    type->set_name (name);
+
+  maybe_set_alignment (cu, die, type);
+
+  /* Install the type in the die.  */
+  set_die_type (die, type, cu);
+
+  /* set_die_type should be already done.  */
+  set_descriptive_type (type, die, cu);
+
+  return type;
+}
+
+static enum dwarf_array_dim_ordering
+read_array_order (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+
+  attr = dwarf2_attr (die, DW_AT_ordering, cu);
+
+  if (attr != nullptr)
+    return (enum dwarf_array_dim_ordering) DW_SND (attr);
+
+  /* GNU F77 is a special case, as at 08/2004 array type info is the
+     opposite order to the dwarf2 specification, but data is still
+     laid out as per normal fortran.
+
+     FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
+     version checking.  */
+
+  if (cu->language == language_fortran
+      && cu->producer && strstr (cu->producer, "GNU F77"))
+    {
+      return DW_ORD_row_major;
+    }
+
+  switch (cu->language_defn->la_array_ordering)
+    {
+    case array_column_major:
+      return DW_ORD_col_major;
+    case array_row_major:
+    default:
+      return DW_ORD_row_major;
+    };
+}
+
+/* Extract all information from a DW_TAG_set_type DIE and put it in
+   the DIE's type field.  */
+
+static struct type *
+read_set_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *domain_type, *set_type;
+  struct attribute *attr;
+
+  domain_type = die_type (die, cu);
+
+  /* The die_type call above may have already set the type for this DIE.  */
+  set_type = get_die_type (die, cu);
+  if (set_type)
+    return set_type;
+
+  set_type = create_set_type (NULL, domain_type);
+
+  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
+  if (attr != nullptr)
+    TYPE_LENGTH (set_type) = DW_UNSND (attr);
+
+  maybe_set_alignment (cu, die, set_type);
+
+  return set_die_type (die, set_type, cu);
+}
+
+/* A helper for read_common_block that creates a locexpr baton.
+   SYM is the symbol which we are marking as computed.
+   COMMON_DIE is the DIE for the common block.
+   COMMON_LOC is the location expression attribute for the common
+   block itself.
+   MEMBER_LOC is the location expression attribute for the particular
+   member of the common block that we are processing.
+   CU is the CU from which the above come.  */
+
+static void
+mark_common_block_symbol_computed (struct symbol *sym,
+				   struct die_info *common_die,
+				   struct attribute *common_loc,
+				   struct attribute *member_loc,
+				   struct dwarf2_cu *cu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct dwarf2_locexpr_baton *baton;
+  gdb_byte *ptr;
+  unsigned int cu_off;
+  enum bfd_endian byte_order = gdbarch_byte_order (objfile->arch ());
+  LONGEST offset = 0;
+
+  gdb_assert (common_loc && member_loc);
+  gdb_assert (common_loc->form_is_block ());
+  gdb_assert (member_loc->form_is_block ()
+	      || member_loc->form_is_constant ());
+
+  baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
+  baton->per_objfile = per_objfile;
+  baton->per_cu = cu->per_cu;
+  gdb_assert (baton->per_cu);
+
+  baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
+
+  if (member_loc->form_is_constant ())
+    {
+      offset = member_loc->constant_value (0);
+      baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
+    }
+  else
+    baton->size += DW_BLOCK (member_loc)->size;
+
+  ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
+  baton->data = ptr;
+
+  *ptr++ = DW_OP_call4;
+  cu_off = common_die->sect_off - cu->per_cu->sect_off;
+  store_unsigned_integer (ptr, 4, byte_order, cu_off);
+  ptr += 4;
+
+  if (member_loc->form_is_constant ())
+    {
+      *ptr++ = DW_OP_addr;
+      store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
+      ptr += cu->header.addr_size;
+    }
+  else
+    {
+      /* We have to copy the data here, because DW_OP_call4 will only
+	 use a DW_AT_location attribute.  */
+      memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
+      ptr += DW_BLOCK (member_loc)->size;
+    }
+
+  *ptr++ = DW_OP_plus;
+  gdb_assert (ptr - baton->data == baton->size);
+
+  SYMBOL_LOCATION_BATON (sym) = baton;
+  SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
+}
+
+/* Create appropriate locally-scoped variables for all the
+   DW_TAG_common_block entries.  Also create a struct common_block
+   listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
+   is used to separate the common blocks name namespace from regular
+   variable names.  */
+
+static void
+read_common_block (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+
+  attr = dwarf2_attr (die, DW_AT_location, cu);
+  if (attr != nullptr)
+    {
+      /* Support the .debug_loc offsets.  */
+      if (attr->form_is_block ())
+        {
+	  /* Ok.  */
+        }
+      else if (attr->form_is_section_offset ())
+        {
+	  dwarf2_complex_location_expr_complaint ();
+	  attr = NULL;
+        }
+      else
+        {
+	  dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
+						 "common block member");
+	  attr = NULL;
+        }
+    }
+
+  if (die->child != NULL)
+    {
+      struct objfile *objfile = cu->per_objfile->objfile;
+      struct die_info *child_die;
+      size_t n_entries = 0, size;
+      struct common_block *common_block;
+      struct symbol *sym;
+
+      for (child_die = die->child;
+	   child_die && child_die->tag;
+	   child_die = child_die->sibling)
+	++n_entries;
+
+      size = (sizeof (struct common_block)
+	      + (n_entries - 1) * sizeof (struct symbol *));
+      common_block
+	= (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
+						 size);
+      memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
+      common_block->n_entries = 0;
+
+      for (child_die = die->child;
+	   child_die && child_die->tag;
+	   child_die = child_die->sibling)
+	{
+	  /* Create the symbol in the DW_TAG_common_block block in the current
+	     symbol scope.  */
+	  sym = new_symbol (child_die, NULL, cu);
+	  if (sym != NULL)
+	    {
+	      struct attribute *member_loc;
+
+	      common_block->contents[common_block->n_entries++] = sym;
+
+	      member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
+					cu);
+	      if (member_loc)
+		{
+		  /* GDB has handled this for a long time, but it is
+		     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.  */
+		  complaint (_("Variable in common block has "
+			       "DW_AT_data_member_location "
+			       "- DIE at %s [in module %s]"),
+			       sect_offset_str (child_die->sect_off),
+			     objfile_name (objfile));
+
+		  if (member_loc->form_is_section_offset ())
+		    dwarf2_complex_location_expr_complaint ();
+		  else if (member_loc->form_is_constant ()
+			   || member_loc->form_is_block ())
+		    {
+		      if (attr != nullptr)
+			mark_common_block_symbol_computed (sym, die, attr,
+							   member_loc, cu);
+		    }
+		  else
+		    dwarf2_complex_location_expr_complaint ();
+		}
+	    }
+	}
+
+      sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
+      SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
+    }
+}
+
+/* Create a type for a C++ namespace.  */
+
+static struct type *
+read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  const char *previous_prefix, *name;
+  int is_anonymous;
+  struct type *type;
+
+  /* For extensions, reuse the type of the original namespace.  */
+  if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
+    {
+      struct die_info *ext_die;
+      struct dwarf2_cu *ext_cu = cu;
+
+      ext_die = dwarf2_extension (die, &ext_cu);
+      type = read_type_die (ext_die, ext_cu);
+
+      /* EXT_CU may not be the same as CU.
+	 Ensure TYPE is recorded with CU in die_type_hash.  */
+      return set_die_type (die, type, cu);
+    }
+
+  name = namespace_name (die, &is_anonymous, cu);
+
+  /* Now build the name of the current namespace.  */
+
+  previous_prefix = determine_prefix (die, cu);
+  if (previous_prefix[0] != '\0')
+    name = typename_concat (&objfile->objfile_obstack,
+			    previous_prefix, name, 0, cu);
+
+  /* Create the type.  */
+  type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
+
+  return set_die_type (die, type, cu);
+}
+
+/* Read a namespace scope.  */
+
+static void
+read_namespace (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  int is_anonymous;
+
+  /* Add a symbol associated to this if we haven't seen the namespace
+     before.  Also, add a using directive if it's an anonymous
+     namespace.  */
+
+  if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
+    {
+      struct type *type;
+
+      type = read_type_die (die, cu);
+      new_symbol (die, type, cu);
+
+      namespace_name (die, &is_anonymous, cu);
+      if (is_anonymous)
+	{
+	  const char *previous_prefix = determine_prefix (die, cu);
+
+	  std::vector<const char *> excludes;
+	  add_using_directive (using_directives (cu),
+			       previous_prefix, type->name (), NULL,
+			       NULL, excludes, 0, &objfile->objfile_obstack);
+	}
+    }
+
+  if (die->child != NULL)
+    {
+      struct die_info *child_die = die->child;
+
+      while (child_die && child_die->tag)
+	{
+	  process_die (child_die, cu);
+	  child_die = child_die->sibling;
+	}
+    }
+}
+
+/* Read a Fortran module as type.  This DIE can be only a declaration used for
+   imported module.  Still we need that type as local Fortran "use ... only"
+   declaration imports depend on the created type in determine_prefix.  */
+
+static struct type *
+read_module_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  const char *module_name;
+  struct type *type;
+
+  module_name = dwarf2_name (die, cu);
+  type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
+
+  return set_die_type (die, type, cu);
+}
+
+/* Read a Fortran module.  */
+
+static void
+read_module (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct die_info *child_die = die->child;
+  struct type *type;
+
+  type = read_type_die (die, cu);
+  new_symbol (die, type, cu);
+
+  while (child_die && child_die->tag)
+    {
+      process_die (child_die, cu);
+      child_die = child_die->sibling;
+    }
+}
+
+/* Return the name of the namespace represented by DIE.  Set
+   *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
+   namespace.  */
+
+static const char *
+namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
+{
+  struct die_info *current_die;
+  const char *name = NULL;
+
+  /* Loop through the extensions until we find a name.  */
+
+  for (current_die = die;
+       current_die != NULL;
+       current_die = dwarf2_extension (die, &cu))
+    {
+      /* We don't use dwarf2_name here so that we can detect the absence
+	 of a name -> anonymous namespace.  */
+      name = dwarf2_string_attr (die, DW_AT_name, cu);
+
+      if (name != NULL)
+	break;
+    }
+
+  /* Is it an anonymous namespace?  */
+
+  *is_anonymous = (name == NULL);
+  if (*is_anonymous)
+    name = CP_ANONYMOUS_NAMESPACE_STR;
+
+  return name;
+}
+
+/* Extract all information from a DW_TAG_pointer_type DIE and add to
+   the user defined type vector.  */
+
+static struct type *
+read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct gdbarch *gdbarch = cu->per_objfile->objfile->arch ();
+  struct comp_unit_head *cu_header = &cu->header;
+  struct type *type;
+  struct attribute *attr_byte_size;
+  struct attribute *attr_address_class;
+  int byte_size, addr_class;
+  struct type *target_type;
+
+  target_type = die_type (die, cu);
+
+  /* The die_type call above may have already set the type for this DIE.  */
+  type = get_die_type (die, cu);
+  if (type)
+    return type;
+
+  type = lookup_pointer_type (target_type);
+
+  attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
+  if (attr_byte_size)
+    byte_size = DW_UNSND (attr_byte_size);
+  else
+    byte_size = cu_header->addr_size;
+
+  attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
+  if (attr_address_class)
+    addr_class = DW_UNSND (attr_address_class);
+  else
+    addr_class = DW_ADDR_none;
+
+  ULONGEST alignment = get_alignment (cu, die);
+
+  /* If the pointer size, alignment, or address class is different
+     than the default, create a type variant marked as such and set
+     the length accordingly.  */
+  if (TYPE_LENGTH (type) != byte_size
+      || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
+	  && alignment != TYPE_RAW_ALIGN (type))
+      || addr_class != DW_ADDR_none)
+    {
+      if (gdbarch_address_class_type_flags_p (gdbarch))
+	{
+	  int type_flags;
+
+	  type_flags = gdbarch_address_class_type_flags
+			 (gdbarch, byte_size, addr_class);
+	  gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
+		      == 0);
+	  type = make_type_with_address_space (type, type_flags);
+	}
+      else if (TYPE_LENGTH (type) != byte_size)
+	{
+	  complaint (_("invalid pointer size %d"), byte_size);
+	}
+      else if (TYPE_RAW_ALIGN (type) != alignment)
+	{
+	  complaint (_("Invalid DW_AT_alignment"
+		       " - DIE at %s [in module %s]"),
+		     sect_offset_str (die->sect_off),
+		     objfile_name (cu->per_objfile->objfile));
+	}
+      else
+	{
+	  /* Should we also complain about unhandled address classes?  */
+	}
+    }
+
+  TYPE_LENGTH (type) = byte_size;
+  set_type_align (type, alignment);
+  return set_die_type (die, type, cu);
+}
+
+/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
+   the user defined type vector.  */
+
+static struct type *
+read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *type;
+  struct type *to_type;
+  struct type *domain;
+
+  to_type = die_type (die, cu);
+  domain = die_containing_type (die, cu);
+
+  /* The calls above may have already set the type for this DIE.  */
+  type = get_die_type (die, cu);
+  if (type)
+    return type;
+
+  if (check_typedef (to_type)->code () == TYPE_CODE_METHOD)
+    type = lookup_methodptr_type (to_type);
+  else if (check_typedef (to_type)->code () == TYPE_CODE_FUNC)
+    {
+      struct type *new_type = alloc_type (cu->per_objfile->objfile);
+
+      smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
+			    to_type->fields (), to_type->num_fields (),
+			    TYPE_VARARGS (to_type));
+      type = lookup_methodptr_type (new_type);
+    }
+  else
+    type = lookup_memberptr_type (to_type, domain);
+
+  return set_die_type (die, type, cu);
+}
+
+/* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
+   the user defined type vector.  */
+
+static struct type *
+read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
+                          enum type_code refcode)
+{
+  struct comp_unit_head *cu_header = &cu->header;
+  struct type *type, *target_type;
+  struct attribute *attr;
+
+  gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
+
+  target_type = die_type (die, cu);
+
+  /* The die_type call above may have already set the type for this DIE.  */
+  type = get_die_type (die, cu);
+  if (type)
+    return type;
+
+  type = lookup_reference_type (target_type, refcode);
+  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
+  if (attr != nullptr)
+    {
+      TYPE_LENGTH (type) = DW_UNSND (attr);
+    }
+  else
+    {
+      TYPE_LENGTH (type) = cu_header->addr_size;
+    }
+  maybe_set_alignment (cu, die, type);
+  return set_die_type (die, type, cu);
+}
+
+/* Add the given cv-qualifiers to the element type of the array.  GCC
+   outputs DWARF type qualifiers that apply to an array, not the
+   element type.  But GDB relies on the array element type to carry
+   the cv-qualifiers.  This mimics section 6.7.3 of the C99
+   specification.  */
+
+static struct type *
+add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
+		   struct type *base_type, int cnst, int voltl)
+{
+  struct type *el_type, *inner_array;
+
+  base_type = copy_type (base_type);
+  inner_array = base_type;
+
+  while (TYPE_TARGET_TYPE (inner_array)->code () == TYPE_CODE_ARRAY)
+    {
+      TYPE_TARGET_TYPE (inner_array) =
+	copy_type (TYPE_TARGET_TYPE (inner_array));
+      inner_array = TYPE_TARGET_TYPE (inner_array);
+    }
+
+  el_type = TYPE_TARGET_TYPE (inner_array);
+  cnst |= TYPE_CONST (el_type);
+  voltl |= TYPE_VOLATILE (el_type);
+  TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
+
+  return set_die_type (die, base_type, cu);
+}
+
+static struct type *
+read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *base_type, *cv_type;
+
+  base_type = die_type (die, cu);
+
+  /* The die_type call above may have already set the type for this DIE.  */
+  cv_type = get_die_type (die, cu);
+  if (cv_type)
+    return cv_type;
+
+  /* In case the const qualifier is applied to an array type, the element type
+     is so qualified, not the array type (section 6.7.3 of C99).  */
+  if (base_type->code () == TYPE_CODE_ARRAY)
+    return add_array_cv_type (die, cu, base_type, 1, 0);
+
+  cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
+  return set_die_type (die, cv_type, cu);
+}
+
+static struct type *
+read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *base_type, *cv_type;
+
+  base_type = die_type (die, cu);
+
+  /* The die_type call above may have already set the type for this DIE.  */
+  cv_type = get_die_type (die, cu);
+  if (cv_type)
+    return cv_type;
+
+  /* In case the volatile qualifier is applied to an array type, the
+     element type is so qualified, not the array type (section 6.7.3
+     of C99).  */
+  if (base_type->code () == TYPE_CODE_ARRAY)
+    return add_array_cv_type (die, cu, base_type, 0, 1);
+
+  cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
+  return set_die_type (die, cv_type, cu);
+}
+
+/* Handle DW_TAG_restrict_type.  */
+
+static struct type *
+read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *base_type, *cv_type;
+
+  base_type = die_type (die, cu);
+
+  /* The die_type call above may have already set the type for this DIE.  */
+  cv_type = get_die_type (die, cu);
+  if (cv_type)
+    return cv_type;
+
+  cv_type = make_restrict_type (base_type);
+  return set_die_type (die, cv_type, cu);
+}
+
+/* Handle DW_TAG_atomic_type.  */
+
+static struct type *
+read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *base_type, *cv_type;
+
+  base_type = die_type (die, cu);
+
+  /* The die_type call above may have already set the type for this DIE.  */
+  cv_type = get_die_type (die, cu);
+  if (cv_type)
+    return cv_type;
+
+  cv_type = make_atomic_type (base_type);
+  return set_die_type (die, cv_type, cu);
+}
+
+/* Extract all information from a DW_TAG_string_type DIE and add to
+   the user defined type vector.  It isn't really a user defined type,
+   but it behaves like one, with other DIE's using an AT_user_def_type
+   attribute to reference it.  */
+
+static struct type *
+read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  struct type *type, *range_type, *index_type, *char_type;
+  struct attribute *attr;
+  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 && !attr->form_is_constant ())
+    {
+      /* 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 && len->form_is_constant ())
+	{
+	  /* Pass 0 as the default as we know this attribute is constant
+	     and the default value will not be returned.  */
+	  LONGEST sz = len->constant_value (0);
+	  prop_type = cu->per_objfile->int_type (sz, true);
+	}
+      else
+	{
+	  /* If the size is not specified then we assume it is the size of
+	     an address on this target.  */
+	  prop_type = cu->addr_sized_int_type (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 = attr->constant_value (0);
+    }
+  else if ((attr = dwarf2_attr (die, DW_AT_byte_size, cu)) != nullptr)
+    {
+      /* We don't currently support non-constant byte sizes for strings.  */
+      length = attr->constant_value (1);
+    }
+  else
+    {
+      /* Use 1 as a fallback length if we have nothing else.  */
+      length = 1;
+    }
+
+  index_type = objfile_type (objfile)->builtin_int;
+  if (length_is_constant)
+    range_type = create_static_range_type (NULL, index_type, 1, length);
+  else
+    {
+      struct dynamic_prop low_bound;
+
+      low_bound.set_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);
+
+  return set_die_type (die, type, cu);
+}
+
+/* Assuming that DIE corresponds to a function, returns nonzero
+   if the function is prototyped.  */
+
+static int
+prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+
+  attr = dwarf2_attr (die, DW_AT_prototyped, cu);
+  if (attr && (DW_UNSND (attr) != 0))
+    return 1;
+
+  /* The DWARF standard implies that the DW_AT_prototyped attribute
+     is only meaningful for C, but the concept also extends to other
+     languages that allow unprototyped functions (Eg: Objective C).
+     For all other languages, assume that functions are always
+     prototyped.  */
+  if (cu->language != language_c
+      && cu->language != language_objc
+      && cu->language != language_opencl)
+    return 1;
+
+  /* RealView does not emit DW_AT_prototyped.  We can not distinguish
+     prototyped and unprototyped functions; default to prototyped,
+     since that is more common in modern code (and RealView warns
+     about unprototyped functions).  */
+  if (producer_is_realview (cu->producer))
+    return 1;
+
+  return 0;
+}
+
+/* Handle DIES due to C code like:
+
+   struct foo
+   {
+   int (*funcp)(int a, long l);
+   int b;
+   };
+
+   ('funcp' generates a DW_TAG_subroutine_type DIE).  */
+
+static struct type *
+read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct type *type;		/* Type that this function returns.  */
+  struct type *ftype;		/* Function that returns above type.  */
+  struct attribute *attr;
+
+  type = die_type (die, cu);
+
+  /* The die_type call above may have already set the type for this DIE.  */
+  ftype = get_die_type (die, cu);
+  if (ftype)
+    return ftype;
+
+  ftype = lookup_function_type (type);
+
+  if (prototyped_function_p (die, cu))
+    TYPE_PROTOTYPED (ftype) = 1;
+
+  /* Store the calling convention in the type if it's available in
+     the subroutine die.  Otherwise set the calling convention to
+     the default value DW_CC_normal.  */
+  attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
+  if (attr != nullptr
+      && is_valid_DW_AT_calling_convention_for_subroutine (DW_UNSND (attr)))
+    TYPE_CALLING_CONVENTION (ftype)
+      = (enum dwarf_calling_convention) (DW_UNSND (attr));
+  else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
+    TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
+  else
+    TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
+
+  /* Record whether the function returns normally to its caller or not
+     if the DWARF producer set that information.  */
+  attr = dwarf2_attr (die, DW_AT_noreturn, cu);
+  if (attr && (DW_UNSND (attr) != 0))
+    TYPE_NO_RETURN (ftype) = 1;
+
+  /* We need to add the subroutine type to the die immediately so
+     we don't infinitely recurse when dealing with parameters
+     declared as the same subroutine type.  */
+  set_die_type (die, ftype, cu);
+
+  if (die->child != NULL)
+    {
+      struct type *void_type = objfile_type (objfile)->builtin_void;
+      struct die_info *child_die;
+      int nparams, iparams;
+
+      /* Count the number of parameters.
+         FIXME: GDB currently ignores vararg functions, but knows about
+         vararg member functions.  */
+      nparams = 0;
+      child_die = die->child;
+      while (child_die && child_die->tag)
+	{
+	  if (child_die->tag == DW_TAG_formal_parameter)
+	    nparams++;
+	  else if (child_die->tag == DW_TAG_unspecified_parameters)
+	    TYPE_VARARGS (ftype) = 1;
+	  child_die = child_die->sibling;
+	}
+
+      /* Allocate storage for parameters and fill them in.  */
+      ftype->set_num_fields (nparams);
+      ftype->set_fields
+	((struct field *) TYPE_ZALLOC (ftype, nparams * sizeof (struct field)));
+
+      /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
+	 even if we error out during the parameters reading below.  */
+      for (iparams = 0; iparams < nparams; iparams++)
+	ftype->field (iparams).set_type (void_type);
+
+      iparams = 0;
+      child_die = die->child;
+      while (child_die && child_die->tag)
+	{
+	  if (child_die->tag == DW_TAG_formal_parameter)
+	    {
+	      struct type *arg_type;
+
+	      /* DWARF version 2 has no clean way to discern C++
+		 static and non-static member functions.  G++ helps
+		 GDB by marking the first parameter for non-static
+		 member functions (which is the this pointer) as
+		 artificial.  We pass this information to
+		 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
+
+		 DWARF version 3 added DW_AT_object_pointer, which GCC
+		 4.5 does not yet generate.  */
+	      attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
+	      if (attr != nullptr)
+		TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
+	      else
+		TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
+	      arg_type = die_type (child_die, cu);
+
+	      /* RealView does not mark THIS as const, which the testsuite
+		 expects.  GCC marks THIS as const in method definitions,
+		 but not in the class specifications (GCC PR 43053).  */
+	      if (cu->language == language_cplus && !TYPE_CONST (arg_type)
+		  && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
+		{
+		  int is_this = 0;
+		  struct dwarf2_cu *arg_cu = cu;
+		  const char *name = dwarf2_name (child_die, cu);
+
+		  attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
+		  if (attr != nullptr)
+		    {
+		      /* If the compiler emits this, use it.  */
+		      if (follow_die_ref (die, attr, &arg_cu) == child_die)
+			is_this = 1;
+		    }
+		  else if (name && strcmp (name, "this") == 0)
+		    /* Function definitions will have the argument names.  */
+		    is_this = 1;
+		  else if (name == NULL && iparams == 0)
+		    /* Declarations may not have the names, so like
+		       elsewhere in GDB, assume an artificial first
+		       argument is "this".  */
+		    is_this = 1;
+
+		  if (is_this)
+		    arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
+					     arg_type, 0);
+		}
+
+	      ftype->field (iparams).set_type (arg_type);
+	      iparams++;
+	    }
+	  child_die = child_die->sibling;
+	}
+    }
+
+  return ftype;
+}
+
+static struct type *
+read_typedef (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  const char *name = NULL;
+  struct type *this_type, *target_type;
+
+  name = dwarf2_full_name (NULL, die, cu);
+  this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
+  TYPE_TARGET_STUB (this_type) = 1;
+  set_die_type (die, this_type, cu);
+  target_type = die_type (die, cu);
+  if (target_type != this_type)
+    TYPE_TARGET_TYPE (this_type) = target_type;
+  else
+    {
+      /* Self-referential typedefs are, it seems, not allowed by the DWARF
+	 spec and cause infinite loops in GDB.  */
+      complaint (_("Self-referential DW_TAG_typedef "
+		   "- DIE at %s [in module %s]"),
+		 sect_offset_str (die->sect_off), objfile_name (objfile));
+      TYPE_TARGET_TYPE (this_type) = NULL;
+    }
+  if (name == NULL)
+    {
+      /* Gcc-7 and before supports -feliminate-dwarf2-dups, which generates
+	 anonymous typedefs, which is, strictly speaking, invalid DWARF.
+	 Handle these by just returning the target type, rather than
+	 constructing an anonymous typedef type and trying to handle this
+	 elsewhere.  */
+      set_die_type (die, target_type, cu);
+      return target_type;
+    }
+  return this_type;
+}
+
+/* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
+   (which may be different from NAME) to the architecture back-end to allow
+   it to guess the correct format if necessary.  */
+
+static struct type *
+dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
+			const char *name_hint, enum bfd_endian byte_order)
+{
+  struct gdbarch *gdbarch = objfile->arch ();
+  const struct floatformat **format;
+  struct type *type;
+
+  format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
+  if (format)
+    type = init_float_type (objfile, bits, name, format, byte_order);
+  else
+    type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
+
+  return type;
+}
+
+/* Allocate an integer type of size BITS and name NAME.  */
+
+static struct type *
+dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
+			  int bits, int unsigned_p, const char *name)
+{
+  struct type *type;
+
+  /* Versions of Intel's C Compiler generate an integer type called "void"
+     instead of using DW_TAG_unspecified_type.  This has been seen on
+     at least versions 14, 17, and 18.  */
+  if (bits == 0 && producer_is_icc (cu) && name != nullptr
+      && strcmp (name, "void") == 0)
+    type = objfile_type (objfile)->builtin_void;
+  else
+    type = init_integer_type (objfile, bits, unsigned_p, name);
+
+  return type;
+}
+
+/* Initialise and return a floating point type of size BITS suitable for
+   use as a component of a complex number.  The NAME_HINT is passed through
+   when initialising the floating point type and is the name of the complex
+   type.
+
+   As DWARF doesn't currently provide an explicit name for the components
+   of a complex number, but it can be helpful to have these components
+   named, we try to select a suitable name based on the size of the
+   component.  */
+static struct type *
+dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
+				 struct objfile *objfile,
+				 int bits, const char *name_hint,
+				 enum bfd_endian byte_order)
+{
+  gdbarch *gdbarch = objfile->arch ();
+  struct type *tt = nullptr;
+
+  /* Try to find a suitable floating point builtin type of size BITS.
+     We're going to use the name of this type as the name for the complex
+     target type that we are about to create.  */
+  switch (cu->language)
+    {
+    case language_fortran:
+      switch (bits)
+	{
+	case 32:
+	  tt = builtin_f_type (gdbarch)->builtin_real;
+	  break;
+	case 64:
+	  tt = builtin_f_type (gdbarch)->builtin_real_s8;
+	  break;
+	case 96:	/* The x86-32 ABI specifies 96-bit long double.  */
+	case 128:
+	  tt = builtin_f_type (gdbarch)->builtin_real_s16;
+	  break;
+	}
+      break;
+    default:
+      switch (bits)
+	{
+	case 32:
+	  tt = builtin_type (gdbarch)->builtin_float;
+	  break;
+	case 64:
+	  tt = builtin_type (gdbarch)->builtin_double;
+	  break;
+	case 96:	/* The x86-32 ABI specifies 96-bit long double.  */
+	case 128:
+	  tt = builtin_type (gdbarch)->builtin_long_double;
+	  break;
+	}
+      break;
+    }
+
+  /* If the type we found doesn't match the size we were looking for, then
+     pretend we didn't find a type at all, the complex target type we
+     create will then be nameless.  */
+  if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
+    tt = nullptr;
+
+  const char *name = (tt == nullptr) ? nullptr : tt->name ();
+  return dwarf2_init_float_type (objfile, bits, name, name_hint, byte_order);
+}
+
+/* Find a representation of a given base type and install
+   it in the TYPE field of the die.  */
+
+static struct type *
+read_base_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct type *type;
+  struct attribute *attr;
+  int encoding = 0, bits = 0;
+  const char *name;
+  gdbarch *arch;
+
+  attr = dwarf2_attr (die, DW_AT_encoding, cu);
+  if (attr != nullptr)
+    encoding = DW_UNSND (attr);
+  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
+  if (attr != nullptr)
+    bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
+  name = dwarf2_name (die, cu);
+  if (!name)
+    complaint (_("DW_AT_name missing from DW_TAG_base_type"));
+
+  arch = objfile->arch ();
+  enum bfd_endian byte_order = gdbarch_byte_order (arch);
+
+  attr = dwarf2_attr (die, DW_AT_endianity, cu);
+  if (attr)
+    {
+      int endianity = DW_UNSND (attr);
+
+      switch (endianity)
+	{
+	case DW_END_big:
+	  byte_order = BFD_ENDIAN_BIG;
+	  break;
+	case DW_END_little:
+	  byte_order = BFD_ENDIAN_LITTLE;
+	  break;
+	default:
+	  complaint (_("DW_AT_endianity has unrecognized value %d"), endianity);
+	  break;
+	}
+    }
+
+  switch (encoding)
+    {
+      case DW_ATE_address:
+	/* Turn DW_ATE_address into a void * pointer.  */
+	type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
+	type = init_pointer_type (objfile, bits, name, type);
+	break;
+      case DW_ATE_boolean:
+	type = init_boolean_type (objfile, bits, 1, name);
+	break;
+      case DW_ATE_complex_float:
+	type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name,
+						byte_order);
+	if (type->code () == TYPE_CODE_ERROR)
+	  {
+	    if (name == nullptr)
+	      {
+		struct obstack *obstack
+		  = &cu->per_objfile->objfile->objfile_obstack;
+		name = obconcat (obstack, "_Complex ", type->name (),
+				 nullptr);
+	      }
+	    type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
+	  }
+	else
+	  type = init_complex_type (name, type);
+	break;
+      case DW_ATE_decimal_float:
+	type = init_decfloat_type (objfile, bits, name);
+	break;
+      case DW_ATE_float:
+	type = dwarf2_init_float_type (objfile, bits, name, name, byte_order);
+	break;
+      case DW_ATE_signed:
+	type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
+	break;
+      case DW_ATE_unsigned:
+	if (cu->language == language_fortran
+	    && name
+	    && startswith (name, "character("))
+	  type = init_character_type (objfile, bits, 1, name);
+	else
+	  type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
+	break;
+      case DW_ATE_signed_char:
+	if (cu->language == language_ada || cu->language == language_m2
+	    || cu->language == language_pascal
+	    || cu->language == language_fortran)
+	  type = init_character_type (objfile, bits, 0, name);
+	else
+	  type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
+	break;
+      case DW_ATE_unsigned_char:
+	if (cu->language == language_ada || cu->language == language_m2
+	    || cu->language == language_pascal
+	    || cu->language == language_fortran
+	    || cu->language == language_rust)
+	  type = init_character_type (objfile, bits, 1, name);
+	else
+	  type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
+	break;
+      case DW_ATE_UTF:
+	{
+	  if (bits == 16)
+	    type = builtin_type (arch)->builtin_char16;
+	  else if (bits == 32)
+	    type = builtin_type (arch)->builtin_char32;
+	  else
+	    {
+	      complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
+			 bits);
+	      type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
+	    }
+	  return set_die_type (die, type, cu);
+	}
+	break;
+
+      default:
+	complaint (_("unsupported DW_AT_encoding: '%s'"),
+		   dwarf_type_encoding_name (encoding));
+	type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
+	break;
+    }
+
+  if (name && strcmp (name, "char") == 0)
+    TYPE_NOSIGN (type) = 1;
+
+  maybe_set_alignment (cu, die, type);
+
+  TYPE_ENDIANITY_NOT_DEFAULT (type) = gdbarch_byte_order (arch) != byte_order;
+
+  return set_die_type (die, type, cu);
+}
+
+/* Parse dwarf attribute if it's a block, reference or constant and put the
+   resulting value of the attribute into struct bound_prop.
+   Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
+
+static int
+attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
+		      struct dwarf2_cu *cu, struct dynamic_prop *prop,
+		      struct type *default_type)
+{
+  struct dwarf2_property_baton *baton;
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct obstack *obstack = &objfile->objfile_obstack;
+
+  gdb_assert (default_type != NULL);
+
+  if (attr == NULL || prop == NULL)
+    return 0;
+
+  if (attr->form_is_block ())
+    {
+      baton = XOBNEW (obstack, struct dwarf2_property_baton);
+      baton->property_type = default_type;
+      baton->locexpr.per_cu = cu->per_cu;
+      baton->locexpr.per_objfile = per_objfile;
+      baton->locexpr.size = DW_BLOCK (attr)->size;
+      baton->locexpr.data = DW_BLOCK (attr)->data;
+      switch (attr->name)
+	{
+	case DW_AT_string_length:
+	  baton->locexpr.is_reference = true;
+	  break;
+	default:
+	  baton->locexpr.is_reference = false;
+	  break;
+	}
+
+      prop->set_locexpr (baton);
+      gdb_assert (prop->baton () != NULL);
+    }
+  else if (attr->form_is_ref ())
+    {
+      struct dwarf2_cu *target_cu = cu;
+      struct die_info *target_die;
+      struct attribute *target_attr;
+
+      target_die = follow_die_ref (die, attr, &target_cu);
+      target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
+      if (target_attr == NULL)
+	target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
+				   target_cu);
+      if (target_attr == NULL)
+	return 0;
+
+      switch (target_attr->name)
+	{
+	  case DW_AT_location:
+	    if (target_attr->form_is_section_offset ())
+	      {
+		baton = XOBNEW (obstack, struct dwarf2_property_baton);
+		baton->property_type = die_type (target_die, target_cu);
+		fill_in_loclist_baton (cu, &baton->loclist, target_attr);
+		prop->set_loclist (baton);
+		gdb_assert (prop->baton () != NULL);
+	      }
+	    else if (target_attr->form_is_block ())
+	      {
+		baton = XOBNEW (obstack, struct dwarf2_property_baton);
+		baton->property_type = die_type (target_die, target_cu);
+		baton->locexpr.per_cu = cu->per_cu;
+		baton->locexpr.per_objfile = per_objfile;
+		baton->locexpr.size = DW_BLOCK (target_attr)->size;
+		baton->locexpr.data = DW_BLOCK (target_attr)->data;
+		baton->locexpr.is_reference = true;
+		prop->set_locexpr (baton);
+		gdb_assert (prop->baton () != NULL);
+	      }
+	    else
+	      {
+		dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
+						       "dynamic property");
+		return 0;
+	      }
+	    break;
+	  case DW_AT_data_member_location:
+	    {
+	      LONGEST offset;
+
+	      if (!handle_data_member_location (target_die, target_cu,
+						&offset))
+		return 0;
+
+	      baton = XOBNEW (obstack, struct dwarf2_property_baton);
+	      baton->property_type = read_type_die (target_die->parent,
+						      target_cu);
+	      baton->offset_info.offset = offset;
+	      baton->offset_info.type = die_type (target_die, target_cu);
+	      prop->set_addr_offset (baton);
+	      break;
+	    }
+	}
+    }
+  else if (attr->form_is_constant ())
+    prop->set_const_val (attr->constant_value (0));
+  else
+    {
+      dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
+					     dwarf2_name (die, cu));
+      return 0;
+    }
+
+  return 1;
+}
+
+/* See read.h.  */
+
+struct type *
+dwarf2_per_objfile::int_type (int size_in_bytes, bool unsigned_p) const
+{
+  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) == size_in_bytes)	\
+    return int_type
+
+  TRY_TYPE (char);
+  TRY_TYPE (short);
+  TRY_TYPE (int);
+  TRY_TYPE (long);
+  TRY_TYPE (long_long);
+
+#undef TRY_TYPE
+
+  gdb_assert_not_reached ("unable to find suitable integer type");
+}
+
+/* See read.h.  */
+
+struct type *
+dwarf2_cu::addr_sized_int_type (bool unsigned_p) const
+{
+  int addr_size = this->per_cu->addr_size ();
+  return this->per_objfile->int_type (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.  */
+
+static struct type *
+read_subrange_index_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *index_type = die_type (die, cu);
+
+  /* Dwarf-2 specifications explicitly allows to create subrange types
+     without specifying a base type.
+     In that case, the base type must be set to the type of
+     the lower bound, upper bound or count, in that order, if any of these
+     three attributes references an object that has a type.
+     If no base type is found, the Dwarf-2 specifications say that
+     a signed integer type of size equal to the size of an address should
+     be used.
+     For the following C code: `extern char gdb_int [];'
+     GCC produces an empty range DIE.
+     FIXME: muller/2010-05-28: Possible references to object for low bound,
+     high bound or count are not yet handled by this code.  */
+  if (index_type->code () == TYPE_CODE_VOID)
+    index_type = cu->addr_sized_int_type (false);
+
+  return index_type;
+}
+
+/* Read the given DW_AT_subrange DIE.  */
+
+static struct type *
+read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *base_type, *orig_base_type;
+  struct type *range_type;
+  struct attribute *attr;
+  struct dynamic_prop low, high;
+  int low_default_is_valid;
+  int high_bound_is_count = 0;
+  const char *name;
+  ULONGEST negative_mask;
+
+  orig_base_type = read_subrange_index_type (die, cu);
+
+  /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
+     whereas the real type might be.  So, we use ORIG_BASE_TYPE when
+     creating the range type, but we use the result of check_typedef
+     when examining properties of the type.  */
+  base_type = check_typedef (orig_base_type);
+
+  /* The die_type call above may have already set the type for this DIE.  */
+  range_type = get_die_type (die, cu);
+  if (range_type)
+    return range_type;
+
+  high.set_const_val (0);
+
+  /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
+     omitting DW_AT_lower_bound.  */
+  switch (cu->language)
+    {
+    case language_c:
+    case language_cplus:
+      low.set_const_val (0);
+      low_default_is_valid = 1;
+      break;
+    case language_fortran:
+      low.set_const_val (1);
+      low_default_is_valid = 1;
+      break;
+    case language_d:
+    case language_objc:
+    case language_rust:
+      low.set_const_val (0);
+      low_default_is_valid = (cu->header.version >= 4);
+      break;
+    case language_ada:
+    case language_m2:
+    case language_pascal:
+      low.set_const_val (1);
+      low_default_is_valid = (cu->header.version >= 4);
+      break;
+    default:
+      low.set_const_val (0);
+      low_default_is_valid = 0;
+      break;
+    }
+
+  attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
+  if (attr != nullptr)
+    attr_to_dynamic_prop (attr, die, cu, &low, base_type);
+  else if (!low_default_is_valid)
+    complaint (_("Missing DW_AT_lower_bound "
+				      "- DIE at %s [in module %s]"),
+	       sect_offset_str (die->sect_off),
+	       objfile_name (cu->per_objfile->objfile));
+
+  struct attribute *attr_ub, *attr_count;
+  attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
+  if (!attr_to_dynamic_prop (attr, die, cu, &high, base_type))
+    {
+      attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
+      if (attr_to_dynamic_prop (attr, die, cu, &high, base_type))
+	{
+	  /* If bounds are constant do the final calculation here.  */
+	  if (low.kind () == PROP_CONST && high.kind () == PROP_CONST)
+	    high.set_const_val (low.const_val () + high.const_val () - 1);
+	  else
+	    high_bound_is_count = 1;
+	}
+      else
+	{
+	  if (attr_ub != NULL)
+	    complaint (_("Unresolved DW_AT_upper_bound "
+			 "- DIE at %s [in module %s]"),
+		       sect_offset_str (die->sect_off),
+		       objfile_name (cu->per_objfile->objfile));
+	  if (attr_count != NULL)
+	    complaint (_("Unresolved DW_AT_count "
+			 "- DIE at %s [in module %s]"),
+		       sect_offset_str (die->sect_off),
+		       objfile_name (cu->per_objfile->objfile));
+	}
+    }
+
+  LONGEST bias = 0;
+  struct attribute *bias_attr = dwarf2_attr (die, DW_AT_GNU_bias, cu);
+  if (bias_attr != nullptr && bias_attr->form_is_constant ())
+    bias = bias_attr->constant_value (0);
+
+  /* Normally, the DWARF producers are expected to use a signed
+     constant form (Eg. DW_FORM_sdata) to express negative bounds.
+     But this is unfortunately not always the case, as witnessed
+     with GCC, for instance, where the ambiguous DW_FORM_dataN form
+     is used instead.  To work around that ambiguity, we treat
+     the bounds as signed, and thus sign-extend their values, when
+     the base type is signed.  */
+  negative_mask =
+    -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
+  if (low.kind () == PROP_CONST
+      && !TYPE_UNSIGNED (base_type) && (low.const_val () & negative_mask))
+    low.set_const_val (low.const_val () | negative_mask);
+  if (high.kind () == PROP_CONST
+      && !TYPE_UNSIGNED (base_type) && (high.const_val () & negative_mask))
+    high.set_const_val (high.const_val () | negative_mask);
+
+  /* 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 = cu->addr_sized_int_type (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_objfile->objfile));
+	  attr_bit_stride = nullptr;
+	}
+      else
+	{
+	  struct type *prop_type = cu->addr_sized_int_type (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)
+    range_type->bounds ()->flag_upper_bound_is_count = 1;
+
+  /* Ada expects an empty array on no boundary attributes.  */
+  if (attr == NULL && cu->language != language_ada)
+    range_type->bounds ()->high.set_undefined ();
+
+  name = dwarf2_name (die, cu);
+  if (name)
+    range_type->set_name (name);
+
+  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
+  if (attr != nullptr)
+    TYPE_LENGTH (range_type) = DW_UNSND (attr);
+
+  maybe_set_alignment (cu, die, range_type);
+
+  set_die_type (die, range_type, cu);
+
+  /* set_die_type should be already done.  */
+  set_descriptive_type (range_type, die, cu);
+
+  return range_type;
+}
+
+static struct type *
+read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *type;
+
+  type = init_type (cu->per_objfile->objfile, TYPE_CODE_VOID, 0, NULL);
+  type->set_name (dwarf2_name (die, cu));
+
+  /* In Ada, an unspecified type is typically used when the description
+     of the type is deferred to a different unit.  When encountering
+     such a type, we treat it as a stub, and try to resolve it later on,
+     when needed.  */
+  if (cu->language == language_ada)
+    TYPE_STUB (type) = 1;
+
+  return set_die_type (die, type, cu);
+}
+
+/* Read a single die and all its descendents.  Set the die's sibling
+   field to NULL; set other fields in the die correctly, and set all
+   of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
+   location of the info_ptr after reading all of those dies.  PARENT
+   is the parent of the die in question.  */
+
+static struct die_info *
+read_die_and_children (const struct die_reader_specs *reader,
+		       const gdb_byte *info_ptr,
+		       const gdb_byte **new_info_ptr,
+		       struct die_info *parent)
+{
+  struct die_info *die;
+  const gdb_byte *cur_ptr;
+
+  cur_ptr = read_full_die_1 (reader, &die, info_ptr, 0);
+  if (die == NULL)
+    {
+      *new_info_ptr = cur_ptr;
+      return NULL;
+    }
+  store_in_ref_table (die, reader->cu);
+
+  if (die->has_children)
+    die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
+  else
+    {
+      die->child = NULL;
+      *new_info_ptr = cur_ptr;
+    }
+
+  die->sibling = NULL;
+  die->parent = parent;
+  return die;
+}
+
+/* Read a die, all of its descendents, and all of its siblings; set
+   all of the fields of all of the dies correctly.  Arguments are as
+   in read_die_and_children.  */
+
+static struct die_info *
+read_die_and_siblings_1 (const struct die_reader_specs *reader,
+			 const gdb_byte *info_ptr,
+			 const gdb_byte **new_info_ptr,
+			 struct die_info *parent)
+{
+  struct die_info *first_die, *last_sibling;
+  const gdb_byte *cur_ptr;
+
+  cur_ptr = info_ptr;
+  first_die = last_sibling = NULL;
+
+  while (1)
+    {
+      struct die_info *die
+	= read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
+
+      if (die == NULL)
+	{
+	  *new_info_ptr = cur_ptr;
+	  return first_die;
+	}
+
+      if (!first_die)
+	first_die = die;
+      else
+	last_sibling->sibling = die;
+
+      last_sibling = die;
+    }
+}
+
+/* Read a die, all of its descendents, and all of its siblings; set
+   all of the fields of all of the dies correctly.  Arguments are as
+   in read_die_and_children.
+   This the main entry point for reading a DIE and all its children.  */
+
+static struct die_info *
+read_die_and_siblings (const struct die_reader_specs *reader,
+		       const gdb_byte *info_ptr,
+		       const gdb_byte **new_info_ptr,
+		       struct die_info *parent)
+{
+  struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
+						  new_info_ptr, parent);
+
+  if (dwarf_die_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+			  "Read die from %s@0x%x of %s:\n",
+			  reader->die_section->get_name (),
+			  (unsigned) (info_ptr - reader->die_section->buffer),
+			  bfd_get_filename (reader->abfd));
+      dump_die (die, dwarf_die_debug);
+    }
+
+  return die;
+}
+
+/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
+   attributes.
+   The caller is responsible for filling in the extra attributes
+   and updating (*DIEP)->num_attrs.
+   Set DIEP to point to a newly allocated die with its information,
+   except for its child, sibling, and parent fields.  */
+
+static const gdb_byte *
+read_full_die_1 (const struct die_reader_specs *reader,
+		 struct die_info **diep, const gdb_byte *info_ptr,
+		 int num_extra_attrs)
+{
+  unsigned int abbrev_number, bytes_read, i;
+  struct abbrev_info *abbrev;
+  struct die_info *die;
+  struct dwarf2_cu *cu = reader->cu;
+  bfd *abfd = reader->abfd;
+
+  sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
+  abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
+  info_ptr += bytes_read;
+  if (!abbrev_number)
+    {
+      *diep = NULL;
+      return info_ptr;
+    }
+
+  abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
+  if (!abbrev)
+    error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
+	   abbrev_number,
+	   bfd_get_filename (abfd));
+
+  die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
+  die->sect_off = sect_off;
+  die->tag = abbrev->tag;
+  die->abbrev = abbrev_number;
+  die->has_children = abbrev->has_children;
+
+  /* Make the result usable.
+     The caller needs to update num_attrs after adding the extra
+     attributes.  */
+  die->num_attrs = abbrev->num_attrs;
+
+  std::vector<int> indexes_that_need_reprocess;
+  for (i = 0; i < abbrev->num_attrs; ++i)
+    {
+      bool need_reprocess;
+      info_ptr =
+        read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
+			info_ptr, &need_reprocess);
+      if (need_reprocess)
+        indexes_that_need_reprocess.push_back (i);
+    }
+
+  struct attribute *attr = die->attr (DW_AT_str_offsets_base);
+  if (attr != nullptr)
+    cu->str_offsets_base = DW_UNSND (attr);
+
+  attr = die->attr (DW_AT_loclists_base);
+  if (attr != nullptr)
+    cu->loclist_base = DW_UNSND (attr);
+
+  auto maybe_addr_base = die->addr_base ();
+  if (maybe_addr_base.has_value ())
+    cu->addr_base = *maybe_addr_base;
+
+  attr = die->attr (DW_AT_rnglists_base);
+  if (attr != nullptr)
+    cu->ranges_base = DW_UNSND (attr);
+
+  for (int index : indexes_that_need_reprocess)
+    read_attribute_reprocess (reader, &die->attrs[index], die->tag);
+  *diep = die;
+  return info_ptr;
+}
+
+/* Read a die and all its attributes.
+   Set DIEP to point to a newly allocated die with its information,
+   except for its child, sibling, and parent fields.  */
+
+static const gdb_byte *
+read_full_die (const struct die_reader_specs *reader,
+	       struct die_info **diep, const gdb_byte *info_ptr)
+{
+  const gdb_byte *result;
+
+  result = read_full_die_1 (reader, diep, info_ptr, 0);
+
+  if (dwarf_die_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+			  "Read die from %s@0x%x of %s:\n",
+			  reader->die_section->get_name (),
+			  (unsigned) (info_ptr - reader->die_section->buffer),
+			  bfd_get_filename (reader->abfd));
+      dump_die (*diep, dwarf_die_debug);
+    }
+
+  return result;
+}
+
+
+/* Returns nonzero if TAG represents a type that we might generate a partial
+   symbol for.  */
+
+static int
+is_type_tag_for_partial (int tag)
+{
+  switch (tag)
+    {
+#if 0
+    /* Some types that would be reasonable to generate partial symbols for,
+       that we don't at present.  */
+    case DW_TAG_array_type:
+    case DW_TAG_file_type:
+    case DW_TAG_ptr_to_member_type:
+    case DW_TAG_set_type:
+    case DW_TAG_string_type:
+    case DW_TAG_subroutine_type:
+#endif
+    case DW_TAG_base_type:
+    case DW_TAG_class_type:
+    case DW_TAG_interface_type:
+    case DW_TAG_enumeration_type:
+    case DW_TAG_structure_type:
+    case DW_TAG_subrange_type:
+    case DW_TAG_typedef:
+    case DW_TAG_union_type:
+      return 1;
+    default:
+      return 0;
+    }
+}
+
+/* Load all DIEs that are interesting for partial symbols into memory.  */
+
+static struct partial_die_info *
+load_partial_dies (const struct die_reader_specs *reader,
+		   const gdb_byte *info_ptr, int building_psymtab)
+{
+  struct dwarf2_cu *cu = reader->cu;
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct partial_die_info *parent_die, *last_die, *first_die = NULL;
+  unsigned int bytes_read;
+  unsigned int load_all = 0;
+  int nesting_level = 1;
+
+  parent_die = NULL;
+  last_die = NULL;
+
+  gdb_assert (cu->per_cu != NULL);
+  if (cu->per_cu->load_all_dies)
+    load_all = 1;
+
+  cu->partial_dies
+    = htab_create_alloc_ex (cu->header.length / 12,
+			    partial_die_hash,
+			    partial_die_eq,
+			    NULL,
+			    &cu->comp_unit_obstack,
+			    hashtab_obstack_allocate,
+			    dummy_obstack_deallocate);
+
+  while (1)
+    {
+      abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
+
+      /* A NULL abbrev means the end of a series of children.  */
+      if (abbrev == NULL)
+	{
+	  if (--nesting_level == 0)
+	    return first_die;
+
+	  info_ptr += bytes_read;
+	  last_die = parent_die;
+	  parent_die = parent_die->die_parent;
+	  continue;
+	}
+
+      /* Check for template arguments.  We never save these; if
+	 they're seen, we just mark the parent, and go on our way.  */
+      if (parent_die != NULL
+	  && cu->language == language_cplus
+	  && (abbrev->tag == DW_TAG_template_type_param
+	      || abbrev->tag == DW_TAG_template_value_param))
+	{
+	  parent_die->has_template_arguments = 1;
+
+	  if (!load_all)
+	    {
+	      /* We don't need a partial DIE for the template argument.  */
+	      info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
+	      continue;
+	    }
+	}
+
+      /* We only recurse into c++ subprograms looking for template arguments.
+	 Skip their other children.  */
+      if (!load_all
+	  && cu->language == language_cplus
+	  && parent_die != NULL
+	  && parent_die->tag == DW_TAG_subprogram
+	  && abbrev->tag != DW_TAG_inlined_subroutine)
+	{
+	  info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
+	  continue;
+	}
+
+      /* Check whether this DIE is interesting enough to save.  Normally
+	 we would not be interested in members here, but there may be
+	 later variables referencing them via DW_AT_specification (for
+	 static members).  */
+      if (!load_all
+	  && !is_type_tag_for_partial (abbrev->tag)
+	  && abbrev->tag != DW_TAG_constant
+	  && abbrev->tag != DW_TAG_enumerator
+	  && abbrev->tag != DW_TAG_subprogram
+	  && abbrev->tag != DW_TAG_inlined_subroutine
+	  && abbrev->tag != DW_TAG_lexical_block
+	  && abbrev->tag != DW_TAG_variable
+	  && abbrev->tag != DW_TAG_namespace
+	  && abbrev->tag != DW_TAG_module
+	  && abbrev->tag != DW_TAG_member
+	  && abbrev->tag != DW_TAG_imported_unit
+	  && abbrev->tag != DW_TAG_imported_declaration)
+	{
+	  /* Otherwise we skip to the next sibling, if any.  */
+	  info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
+	  continue;
+	}
+
+      struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
+				   abbrev);
+
+      info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
+
+      /* This two-pass algorithm for processing partial symbols has a
+	 high cost in cache pressure.  Thus, handle some simple cases
+	 here which cover the majority of C partial symbols.  DIEs
+	 which neither have specification tags in them, nor could have
+	 specification tags elsewhere pointing at them, can simply be
+	 processed and discarded.
+
+	 This segment is also optional; scan_partial_symbols and
+	 add_partial_symbol will handle these DIEs if we chain
+	 them in normally.  When compilers which do not emit large
+	 quantities of duplicate debug information are more common,
+	 this code can probably be removed.  */
+
+      /* Any complete simple types at the top level (pretty much all
+	 of them, for a language without namespaces), can be processed
+	 directly.  */
+      if (parent_die == NULL
+	  && pdi.has_specification == 0
+	  && pdi.is_declaration == 0
+	  && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
+	      || pdi.tag == DW_TAG_base_type
+	      || pdi.tag == DW_TAG_subrange_type))
+	{
+	  if (building_psymtab && pdi.raw_name != NULL)
+	    add_partial_symbol (&pdi, cu);
+
+	  info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
+	  continue;
+	}
+
+      /* The exception for DW_TAG_typedef with has_children above is
+	 a workaround of GCC PR debug/47510.  In the case of this complaint
+	 type_name_or_error will error on such types later.
+
+	 GDB skipped children of DW_TAG_typedef by the shortcut above and then
+	 it could not find the child DIEs referenced later, this is checked
+	 above.  In correct DWARF DW_TAG_typedef should have no children.  */
+
+      if (pdi.tag == DW_TAG_typedef && pdi.has_children)
+	complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
+		     "- DIE at %s [in module %s]"),
+		   sect_offset_str (pdi.sect_off), objfile_name (objfile));
+
+      /* If we're at the second level, and we're an enumerator, and
+	 our parent has no specification (meaning possibly lives in a
+	 namespace elsewhere), then we can add the partial symbol now
+	 instead of queueing it.  */
+      if (pdi.tag == DW_TAG_enumerator
+	  && parent_die != NULL
+	  && parent_die->die_parent == NULL
+	  && parent_die->tag == DW_TAG_enumeration_type
+	  && parent_die->has_specification == 0)
+	{
+	  if (pdi.raw_name == NULL)
+	    complaint (_("malformed enumerator DIE ignored"));
+	  else if (building_psymtab)
+	    add_partial_symbol (&pdi, cu);
+
+	  info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
+	  continue;
+	}
+
+      struct partial_die_info *part_die
+	= new (&cu->comp_unit_obstack) partial_die_info (pdi);
+
+      /* We'll save this DIE so link it in.  */
+      part_die->die_parent = parent_die;
+      part_die->die_sibling = NULL;
+      part_die->die_child = NULL;
+
+      if (last_die && last_die == parent_die)
+	last_die->die_child = part_die;
+      else if (last_die)
+	last_die->die_sibling = part_die;
+
+      last_die = part_die;
+
+      if (first_die == NULL)
+	first_die = part_die;
+
+      /* Maybe add the DIE to the hash table.  Not all DIEs that we
+	 find interesting need to be in the hash table, because we
+	 also have the parent/sibling/child chains; only those that we
+	 might refer to by offset later during partial symbol reading.
+
+	 For now this means things that might have be the target of a
+	 DW_AT_specification, DW_AT_abstract_origin, or
+	 DW_AT_extension.  DW_AT_extension will refer only to
+	 namespaces; DW_AT_abstract_origin refers to functions (and
+	 many things under the function DIE, but we do not recurse
+	 into function DIEs during partial symbol reading) and
+	 possibly variables as well; DW_AT_specification refers to
+	 declarations.  Declarations ought to have the DW_AT_declaration
+	 flag.  It happens that GCC forgets to put it in sometimes, but
+	 only for functions, not for types.
+
+	 Adding more things than necessary to the hash table is harmless
+	 except for the performance cost.  Adding too few will result in
+	 wasted time in find_partial_die, when we reread the compilation
+	 unit with load_all_dies set.  */
+
+      if (load_all
+	  || abbrev->tag == DW_TAG_constant
+	  || abbrev->tag == DW_TAG_subprogram
+	  || abbrev->tag == DW_TAG_variable
+	  || abbrev->tag == DW_TAG_namespace
+	  || part_die->is_declaration)
+	{
+	  void **slot;
+
+	  slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
+					   to_underlying (part_die->sect_off),
+					   INSERT);
+	  *slot = part_die;
+	}
+
+      /* For some DIEs we want to follow their children (if any).  For C
+	 we have no reason to follow the children of structures; for other
+	 languages we have to, so that we can get at method physnames
+	 to infer fully qualified class names, for DW_AT_specification,
+	 and for C++ template arguments.  For C++, we also look one level
+	 inside functions to find template arguments (if the name of the
+	 function does not already contain the template arguments).
+
+	 For Ada and Fortran, we need to scan the children of subprograms
+	 and lexical blocks as well because these languages allow the
+	 definition of nested entities that could be interesting for the
+	 debugger, such as nested subprograms for instance.  */
+      if (last_die->has_children
+	  && (load_all
+	      || last_die->tag == DW_TAG_namespace
+	      || last_die->tag == DW_TAG_module
+	      || last_die->tag == DW_TAG_enumeration_type
+	      || (cu->language == language_cplus
+		  && last_die->tag == DW_TAG_subprogram
+		  && (last_die->raw_name == NULL
+		      || strchr (last_die->raw_name, '<') == NULL))
+	      || (cu->language != language_c
+		  && (last_die->tag == DW_TAG_class_type
+		      || last_die->tag == DW_TAG_interface_type
+		      || last_die->tag == DW_TAG_structure_type
+		      || last_die->tag == DW_TAG_union_type))
+	      || ((cu->language == language_ada
+		   || cu->language == language_fortran)
+		  && (last_die->tag == DW_TAG_subprogram
+		      || last_die->tag == DW_TAG_lexical_block))))
+	{
+	  nesting_level++;
+	  parent_die = last_die;
+	  continue;
+	}
+
+      /* Otherwise we skip to the next sibling, if any.  */
+      info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
+
+      /* Back to the top, do it again.  */
+    }
+}
+
+partial_die_info::partial_die_info (sect_offset sect_off_,
+				    struct abbrev_info *abbrev)
+  : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
+{
+}
+
+/* See class definition.  */
+
+const char *
+partial_die_info::name (dwarf2_cu *cu)
+{
+  if (!canonical_name && raw_name != nullptr)
+    {
+      struct objfile *objfile = cu->per_objfile->objfile;
+      raw_name = dwarf2_canonicalize_name (raw_name, cu, objfile);
+      canonical_name = 1;
+    }
+
+  return raw_name;
+}
+
+/* Read a minimal amount of information into the minimal die structure.
+   INFO_PTR should point just after the initial uleb128 of a DIE.  */
+
+const gdb_byte *
+partial_die_info::read (const struct die_reader_specs *reader,
+			const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
+{
+  struct dwarf2_cu *cu = reader->cu;
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  unsigned int i;
+  int has_low_pc_attr = 0;
+  int has_high_pc_attr = 0;
+  int high_pc_relative = 0;
+
+  for (i = 0; i < abbrev.num_attrs; ++i)
+    {
+      attribute attr;
+      bool need_reprocess;
+      info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i],
+				 info_ptr, &need_reprocess);
+      /* String and address offsets that need to do the reprocessing have
+         already been read at this point, so there is no need to wait until
+	 the loop terminates to do the reprocessing.  */
+      if (need_reprocess)
+	read_attribute_reprocess (reader, &attr, tag);
+      /* Store the data if it is of an attribute we want to keep in a
+         partial symbol table.  */
+      switch (attr.name)
+	{
+	case DW_AT_name:
+	  switch (tag)
+	    {
+	    case DW_TAG_compile_unit:
+	    case DW_TAG_partial_unit:
+	    case DW_TAG_type_unit:
+	      /* Compilation units have a DW_AT_name that is a filename, not
+		 a source language identifier.  */
+	    case DW_TAG_enumeration_type:
+	    case DW_TAG_enumerator:
+	      /* These tags always have simple identifiers already; no need
+		 to canonicalize them.  */
+	      canonical_name = 1;
+	      raw_name = DW_STRING (&attr);
+	      break;
+	    default:
+	      canonical_name = 0;
+	      raw_name = DW_STRING (&attr);
+	      break;
+	    }
+	  break;
+	case DW_AT_linkage_name:
+	case DW_AT_MIPS_linkage_name:
+	  /* Note that both forms of linkage name might appear.  We
+	     assume they will be the same, and we only store the last
+	     one we see.  */
+	  linkage_name = attr.value_as_string ();
+	  /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
+	     See https://github.com/rust-lang/rust/issues/32925.  */
+	  if (cu->language == language_rust && linkage_name != NULL
+	      && strchr (linkage_name, '{') != NULL)
+	    linkage_name = NULL;
+	  break;
+	case DW_AT_low_pc:
+	  has_low_pc_attr = 1;
+	  lowpc = attr.value_as_address ();
+	  break;
+	case DW_AT_high_pc:
+	  has_high_pc_attr = 1;
+	  highpc = attr.value_as_address ();
+	  if (cu->header.version >= 4 && attr.form_is_constant ())
+		high_pc_relative = 1;
+	  break;
+	case DW_AT_location:
+          /* Support the .debug_loc offsets.  */
+          if (attr.form_is_block ())
+            {
+	       d.locdesc = DW_BLOCK (&attr);
+            }
+          else if (attr.form_is_section_offset ())
+            {
+	      dwarf2_complex_location_expr_complaint ();
+            }
+          else
+            {
+	      dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
+						     "partial symbol information");
+            }
+	  break;
+	case DW_AT_external:
+	  is_external = DW_UNSND (&attr);
+	  break;
+	case DW_AT_declaration:
+	  is_declaration = DW_UNSND (&attr);
+	  break;
+	case DW_AT_type:
+	  has_type = 1;
+	  break;
+	case DW_AT_abstract_origin:
+	case DW_AT_specification:
+	case DW_AT_extension:
+	  has_specification = 1;
+	  spec_offset = attr.get_ref_die_offset ();
+	  spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
+				   || cu->per_cu->is_dwz);
+	  break;
+	case DW_AT_sibling:
+	  /* Ignore absolute siblings, they might point outside of
+	     the current compile unit.  */
+	  if (attr.form == DW_FORM_ref_addr)
+	    complaint (_("ignoring absolute DW_AT_sibling"));
+	  else
+	    {
+	      const gdb_byte *buffer = reader->buffer;
+	      sect_offset off = attr.get_ref_die_offset ();
+	      const gdb_byte *sibling_ptr = buffer + to_underlying (off);
+
+	      if (sibling_ptr < info_ptr)
+		complaint (_("DW_AT_sibling points backwards"));
+	      else if (sibling_ptr > reader->buffer_end)
+		reader->die_section->overflow_complaint ();
+	      else
+		sibling = sibling_ptr;
+	    }
+	  break;
+        case DW_AT_byte_size:
+          has_byte_size = 1;
+          break;
+        case DW_AT_const_value:
+          has_const_value = 1;
+          break;
+	case DW_AT_calling_convention:
+	  /* DWARF doesn't provide a way to identify a program's source-level
+	     entry point.  DW_AT_calling_convention attributes are only meant
+	     to describe functions' calling conventions.
+
+	     However, because it's a necessary piece of information in
+	     Fortran, and before DWARF 4 DW_CC_program was the only
+	     piece of debugging information whose definition refers to
+	     a 'main program' at all, several compilers marked Fortran
+	     main programs with DW_CC_program --- even when those
+	     functions use the standard calling conventions.
+
+	     Although DWARF now specifies a way to provide this
+	     information, we support this practice for backward
+	     compatibility.  */
+	  if (DW_UNSND (&attr) == DW_CC_program
+	      && cu->language == language_fortran)
+	    main_subprogram = 1;
+	  break;
+	case DW_AT_inline:
+	  if (DW_UNSND (&attr) == DW_INL_inlined
+	      || DW_UNSND (&attr) == DW_INL_declared_inlined)
+	    may_be_inlined = 1;
+	  break;
+
+	case DW_AT_import:
+	  if (tag == DW_TAG_imported_unit)
+	    {
+	      d.sect_off = attr.get_ref_die_offset ();
+	      is_dwz = (attr.form == DW_FORM_GNU_ref_alt
+				  || cu->per_cu->is_dwz);
+	    }
+	  break;
+
+	case DW_AT_main_subprogram:
+	  main_subprogram = DW_UNSND (&attr);
+	  break;
+
+	case DW_AT_ranges:
+	  {
+	    /* DW_AT_rnglists_base does not apply to DIEs from the DWO
+	       skeleton.  We take advantage of the fact the DW_AT_ranges
+	       does not appear in DW_TAG_compile_unit of DWO files.
+
+	       Attributes of the form DW_FORM_rnglistx have already had
+               their value changed by read_rnglist_index and already
+	       include DW_AT_rnglists_base, so don't need to add the ranges
+	       base, either.  */
+	    int need_ranges_base = (tag != DW_TAG_compile_unit
+				    && attr.form != DW_FORM_rnglistx);
+	    unsigned int ranges_offset = (DW_UNSND (&attr)
+					  + (need_ranges_base
+					     ? cu->ranges_base
+					     : 0));
+
+	    /* Value of the DW_AT_ranges attribute is the offset in the
+	       .debug_ranges section.  */
+	    if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
+				    nullptr, tag))
+	      has_pc_info = 1;
+	  }
+	  break;
+
+	default:
+	  break;
+	}
+    }
+
+  /* For Ada, if both the name and the linkage name appear, we prefer
+     the latter.  This lets "catch exception" work better, regardless
+     of the order in which the name and linkage name were emitted.
+     Really, though, this is just a workaround for the fact that gdb
+     doesn't store both the name and the linkage name.  */
+  if (cu->language == language_ada && linkage_name != nullptr)
+    raw_name = linkage_name;
+
+  if (high_pc_relative)
+    highpc += lowpc;
+
+  if (has_low_pc_attr && has_high_pc_attr)
+    {
+      /* When using the GNU linker, .gnu.linkonce. sections are used to
+	 eliminate duplicate copies of functions and vtables and such.
+	 The linker will arbitrarily choose one and discard the others.
+	 The AT_*_pc values for such functions refer to local labels in
+	 these sections.  If the section from that file was discarded, the
+	 labels are not in the output, so the relocs get a value of 0.
+	 If this is a discarded function, mark the pc bounds as invalid,
+	 so that GDB will ignore it.  */
+      if (lowpc == 0 && !per_objfile->per_bfd->has_section_at_zero)
+	{
+	  struct objfile *objfile = per_objfile->objfile;
+	  struct gdbarch *gdbarch = objfile->arch ();
+
+	  complaint (_("DW_AT_low_pc %s is zero "
+		       "for DIE at %s [in module %s]"),
+		     paddress (gdbarch, lowpc),
+		     sect_offset_str (sect_off),
+		     objfile_name (objfile));
+	}
+      /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
+      else if (lowpc >= highpc)
+	{
+	  struct objfile *objfile = per_objfile->objfile;
+	  struct gdbarch *gdbarch = objfile->arch ();
+
+	  complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
+		       "for DIE at %s [in module %s]"),
+		     paddress (gdbarch, lowpc),
+		     paddress (gdbarch, highpc),
+		     sect_offset_str (sect_off),
+		     objfile_name (objfile));
+	}
+      else
+	has_pc_info = 1;
+    }
+
+  return info_ptr;
+}
+
+/* Find a cached partial DIE at OFFSET in CU.  */
+
+struct partial_die_info *
+dwarf2_cu::find_partial_die (sect_offset sect_off)
+{
+  struct partial_die_info *lookup_die = NULL;
+  struct partial_die_info part_die (sect_off);
+
+  lookup_die = ((struct partial_die_info *)
+		htab_find_with_hash (partial_dies, &part_die,
+				     to_underlying (sect_off)));
+
+  return lookup_die;
+}
+
+/* Find a partial DIE at OFFSET, which may or may not be in CU,
+   except in the case of .debug_types DIEs which do not reference
+   outside their CU (they do however referencing other types via
+   DW_FORM_ref_sig8).  */
+
+static const struct cu_partial_die_info
+find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct partial_die_info *pd = NULL;
+
+  if (offset_in_dwz == cu->per_cu->is_dwz
+      && cu->header.offset_in_cu_p (sect_off))
+    {
+      pd = cu->find_partial_die (sect_off);
+      if (pd != NULL)
+	return { cu, pd };
+      /* We missed recording what we needed.
+	 Load all dies and try again.  */
+    }
+  else
+    {
+      /* TUs don't reference other CUs/TUs (except via type signatures).  */
+      if (cu->per_cu->is_debug_types)
+	{
+	  error (_("Dwarf Error: Type Unit at offset %s contains"
+		   " external reference to offset %s [in module %s].\n"),
+		 sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
+		 bfd_get_filename (objfile->obfd));
+	}
+      dwarf2_per_cu_data *per_cu
+	= dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
+					    per_objfile);
+
+      cu = per_objfile->get_cu (per_cu);
+      if (cu == NULL || cu->partial_dies == NULL)
+	load_partial_comp_unit (per_cu, per_objfile, nullptr);
+
+      cu = per_objfile->get_cu (per_cu);
+
+      cu->last_used = 0;
+      pd = cu->find_partial_die (sect_off);
+    }
+
+  /* If we didn't find it, and not all dies have been loaded,
+     load them all and try again.  */
+
+  if (pd == NULL && cu->per_cu->load_all_dies == 0)
+    {
+      cu->per_cu->load_all_dies = 1;
+
+      /* This is nasty.  When we reread the DIEs, somewhere up the call chain
+	 THIS_CU->cu may already be in use.  So we can't just free it and
+	 replace its DIEs with the ones we read in.  Instead, we leave those
+	 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
+	 and clobber THIS_CU->cu->partial_dies with the hash table for the new
+	 set.  */
+      load_partial_comp_unit (cu->per_cu, per_objfile, cu);
+
+      pd = cu->find_partial_die (sect_off);
+    }
+
+  if (pd == NULL)
+    error (_("Dwarf Error: Cannot not find DIE at %s [from module %s]\n"),
+		    sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
+  return { cu, pd };
+}
+
+/* See if we can figure out if the class lives in a namespace.  We do
+   this by looking for a member function; its demangled name will
+   contain namespace info, if there is any.  */
+
+static void
+guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
+				  struct dwarf2_cu *cu)
+{
+  /* NOTE: carlton/2003-10-07: Getting the info this way changes
+     what template types look like, because the demangler
+     frequently doesn't give the same name as the debug info.  We
+     could fix this by only using the demangled name to get the
+     prefix (but see comment in read_structure_type).  */
+
+  struct partial_die_info *real_pdi;
+  struct partial_die_info *child_pdi;
+
+  /* If this DIE (this DIE's specification, if any) has a parent, then
+     we should not do this.  We'll prepend the parent's fully qualified
+     name when we create the partial symbol.  */
+
+  real_pdi = struct_pdi;
+  while (real_pdi->has_specification)
+    {
+      auto res = find_partial_die (real_pdi->spec_offset,
+				   real_pdi->spec_is_dwz, cu);
+      real_pdi = res.pdi;
+      cu = res.cu;
+    }
+
+  if (real_pdi->die_parent != NULL)
+    return;
+
+  for (child_pdi = struct_pdi->die_child;
+       child_pdi != NULL;
+       child_pdi = child_pdi->die_sibling)
+    {
+      if (child_pdi->tag == DW_TAG_subprogram
+	  && child_pdi->linkage_name != NULL)
+	{
+	  gdb::unique_xmalloc_ptr<char> actual_class_name
+	    (cu->language_defn->class_name_from_physname
+	     (child_pdi->linkage_name));
+	  if (actual_class_name != NULL)
+	    {
+	      struct objfile *objfile = cu->per_objfile->objfile;
+	      struct_pdi->raw_name = objfile->intern (actual_class_name.get ());
+	      struct_pdi->canonical_name = 1;
+	    }
+	  break;
+	}
+    }
+}
+
+/* Return true if a DIE with TAG may have the DW_AT_const_value
+   attribute.  */
+
+static bool
+can_have_DW_AT_const_value_p (enum dwarf_tag tag)
+{
+  switch (tag)
+    {
+    case DW_TAG_constant:
+    case DW_TAG_enumerator:
+    case DW_TAG_formal_parameter:
+    case DW_TAG_template_value_param:
+    case DW_TAG_variable:
+      return true;
+    }
+
+  return false;
+}
+
+void
+partial_die_info::fixup (struct dwarf2_cu *cu)
+{
+  /* Once we've fixed up a die, there's no point in doing so again.
+     This also avoids a memory leak if we were to call
+     guess_partial_die_structure_name multiple times.  */
+  if (fixup_called)
+    return;
+
+  /* If we found a reference attribute and the DIE has no name, try
+     to find a name in the referred to DIE.  */
+
+  if (raw_name == NULL && has_specification)
+    {
+      struct partial_die_info *spec_die;
+
+      auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
+      spec_die = res.pdi;
+      cu = res.cu;
+
+      spec_die->fixup (cu);
+
+      if (spec_die->raw_name)
+	{
+	  raw_name = spec_die->raw_name;
+	  canonical_name = spec_die->canonical_name;
+
+	  /* Copy DW_AT_external attribute if it is set.  */
+	  if (spec_die->is_external)
+	    is_external = spec_die->is_external;
+	}
+    }
+
+  if (!has_const_value && has_specification
+      && can_have_DW_AT_const_value_p (tag))
+    {
+      struct partial_die_info *spec_die;
+
+      auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
+      spec_die = res.pdi;
+      cu = res.cu;
+
+      spec_die->fixup (cu);
+
+      if (spec_die->has_const_value)
+	{
+	  /* Copy DW_AT_const_value attribute if it is set.  */
+	  has_const_value = spec_die->has_const_value;
+	}
+    }
+
+  /* Set default names for some unnamed DIEs.  */
+
+  if (raw_name == NULL && tag == DW_TAG_namespace)
+    {
+      raw_name = CP_ANONYMOUS_NAMESPACE_STR;
+      canonical_name = 1;
+    }
+
+  /* If there is no parent die to provide a namespace, and there are
+     children, see if we can determine the namespace from their linkage
+     name.  */
+  if (cu->language == language_cplus
+      && !cu->per_objfile->per_bfd->types.empty ()
+      && die_parent == NULL
+      && has_children
+      && (tag == DW_TAG_class_type
+	  || tag == DW_TAG_structure_type
+	  || tag == DW_TAG_union_type))
+    guess_partial_die_structure_name (this, cu);
+
+  /* GCC might emit a nameless struct or union that has a linkage
+     name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
+  if (raw_name == NULL
+      && (tag == DW_TAG_class_type
+	  || tag == DW_TAG_interface_type
+	  || tag == DW_TAG_structure_type
+	  || tag == DW_TAG_union_type)
+      && linkage_name != NULL)
+    {
+      gdb::unique_xmalloc_ptr<char> demangled
+	(gdb_demangle (linkage_name, DMGL_TYPES));
+      if (demangled != nullptr)
+	{
+	  const char *base;
+
+	  /* Strip any leading namespaces/classes, keep only the base name.
+	     DW_AT_name for named DIEs does not contain the prefixes.  */
+	  base = strrchr (demangled.get (), ':');
+	  if (base && base > demangled.get () && base[-1] == ':')
+	    base++;
+	  else
+	    base = demangled.get ();
+
+	  struct objfile *objfile = cu->per_objfile->objfile;
+	  raw_name = objfile->intern (base);
+	  canonical_name = 1;
+	}
+    }
+
+  fixup_called = 1;
+}
+
+/* Read the .debug_loclists or .debug_rnglists header (they are the same format)
+   contents from the given SECTION in the HEADER.
+
+   HEADER_OFFSET is the offset of the header in the section.  */
+static void
+read_loclists_rnglists_header (struct loclists_rnglists_header *header,
+			       struct dwarf2_section_info *section,
+			       sect_offset header_offset)
+{
+  unsigned int bytes_read;
+  bfd *abfd = section->get_bfd_owner ();
+  const gdb_byte *info_ptr = section->buffer + to_underlying (header_offset);
+
+  header->length = read_initial_length (abfd, info_ptr, &bytes_read);
+  info_ptr += bytes_read;
+
+  header->version = read_2_bytes (abfd, info_ptr);
+  info_ptr += 2;
+
+  header->addr_size = read_1_byte (abfd, info_ptr);
+  info_ptr += 1;
+
+  header->segment_collector_size = read_1_byte (abfd, info_ptr);
+  info_ptr += 1;
+
+  header->offset_entry_count = read_4_bytes (abfd, info_ptr);
+}
+
+/* Return the DW_AT_loclists_base value for the CU.  */
+static ULONGEST
+lookup_loclist_base (struct dwarf2_cu *cu)
+{
+  /* For the .dwo unit, the loclist_base points to the first offset following
+     the header. The header consists of the following entities-
+     1. Unit Length (4 bytes for 32 bit DWARF format, and 12 bytes for the 64
+	 bit format)
+     2. version (2 bytes)
+     3. address size (1 byte)
+     4. segment selector size (1 byte)
+     5. offset entry count (4 bytes)
+     These sizes are derived as per the DWARFv5 standard.  */
+  if (cu->dwo_unit != nullptr)
+    {
+      if (cu->header.initial_length_size == 4)
+	 return LOCLIST_HEADER_SIZE32;
+      return LOCLIST_HEADER_SIZE64;
+    }
+  return cu->loclist_base;
+}
+
+/* Given a DW_FORM_loclistx value LOCLIST_INDEX, fetch the offset from the
+   array of offsets in the .debug_loclists section.  */
+static CORE_ADDR
+read_loclist_index (struct dwarf2_cu *cu, ULONGEST loclist_index)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  bfd *abfd = objfile->obfd;
+  ULONGEST loclist_header_size =
+    (cu->header.initial_length_size == 4 ? LOCLIST_HEADER_SIZE32
+     : LOCLIST_HEADER_SIZE64);
+  ULONGEST loclist_base = lookup_loclist_base (cu);
+
+  /* Offset in .debug_loclists of the offset for LOCLIST_INDEX.  */
+  ULONGEST start_offset =
+    loclist_base + loclist_index * cu->header.offset_size;
+
+  /* Get loclists section.  */
+  struct dwarf2_section_info *section = cu_debug_loc_section (cu);
+
+  /* Read the loclists section content.  */
+  section->read (objfile);
+  if (section->buffer == NULL)
+    error (_("DW_FORM_loclistx used without .debug_loclists "
+	     "section [in module %s]"), objfile_name (objfile));
+
+  /* DW_AT_loclists_base points after the .debug_loclists contribution header,
+     so if loclist_base is smaller than the header size, we have a problem.  */
+  if (loclist_base < loclist_header_size)
+    error (_("DW_AT_loclists_base is smaller than header size [in module %s]"),
+	   objfile_name (objfile));
+
+  /* Read the header of the loclists contribution.  */
+  struct loclists_rnglists_header header;
+  read_loclists_rnglists_header (&header, section,
+				 (sect_offset) (loclist_base - loclist_header_size));
+
+  /* Verify the loclist index is valid.  */
+  if (loclist_index >= header.offset_entry_count)
+    error (_("DW_FORM_loclistx pointing outside of "
+	     ".debug_loclists offset array [in module %s]"),
+	   objfile_name (objfile));
+
+  if (start_offset >= section->size)
+    error (_("DW_FORM_loclistx pointing outside of "
+	     ".debug_loclists section [in module %s]"),
+	   objfile_name (objfile));
+
+  /* Validate that reading won't go beyond the end of the section.  */
+  if (start_offset + cu->header.offset_size > section->size)
+    error (_("Reading DW_FORM_loclistx index beyond end of"
+	     ".debug_loclists section [in module %s]"),
+	   objfile_name (objfile));
+
+  const gdb_byte *info_ptr = section->buffer + start_offset;
+
+  if (cu->header.offset_size == 4)
+    return bfd_get_32 (abfd, info_ptr) + loclist_base;
+  else
+    return bfd_get_64 (abfd, info_ptr) + loclist_base;
+}
+
+/* Given a DW_FORM_rnglistx value RNGLIST_INDEX, fetch the offset from the
+   array of offsets in the .debug_rnglists section.  */
+static CORE_ADDR
+read_rnglist_index (struct dwarf2_cu *cu, ULONGEST rnglist_index,
+		    dwarf_tag tag)
+{
+  struct dwarf2_per_objfile *dwarf2_per_objfile = cu->per_objfile;
+  struct objfile *objfile = dwarf2_per_objfile->objfile;
+  bfd *abfd = objfile->obfd;
+  ULONGEST rnglist_header_size =
+    (cu->header.initial_length_size == 4 ? RNGLIST_HEADER_SIZE32
+     : RNGLIST_HEADER_SIZE64);
+  ULONGEST rnglist_base =
+      (cu->dwo_unit != nullptr) ? rnglist_header_size : cu->ranges_base;
+
+  /* Offset in .debug_rnglists of the offset for RNGLIST_INDEX.  */
+  ULONGEST start_offset =
+    rnglist_base + rnglist_index * cu->header.offset_size;
+
+  /* Get rnglists section.  */
+  struct dwarf2_section_info *section = cu_debug_rnglists_section (cu, tag);
+
+  /* Read the rnglists section content.  */
+  section->read (objfile);
+  if (section->buffer == nullptr)
+    error (_("DW_FORM_rnglistx used without .debug_rnglists section "
+	     "[in module %s]"),
+	   objfile_name (objfile));
+
+  /* DW_AT_rnglists_base points after the .debug_rnglists contribution header,
+     so if rnglist_base is smaller than the header size, we have a problem.  */
+  if (rnglist_base < rnglist_header_size)
+    error (_("DW_AT_rnglists_base is smaller than header size [in module %s]"),
+	   objfile_name (objfile));
+
+  /* Read the header of the rnglists contribution.  */
+  struct loclists_rnglists_header header;
+  read_loclists_rnglists_header (&header, section,
+				 (sect_offset) (rnglist_base - rnglist_header_size));
+
+  /* Verify the rnglist index is valid.  */
+  if (rnglist_index >= header.offset_entry_count)
+    error (_("DW_FORM_rnglistx index pointing outside of "
+	     ".debug_rnglists offset array [in module %s]"),
+	   objfile_name (objfile));
+
+  /* Validate that the offset is within the section's range.  */
+  if (start_offset >= section->size)
+    error (_("DW_FORM_rnglistx pointing outside of "
+             ".debug_rnglists section [in module %s]"),
+	   objfile_name (objfile));
+
+  /* Validate that reading won't go beyond the end of the section.  */
+  if (start_offset + cu->header.offset_size > section->size)
+    error (_("Reading DW_FORM_rnglistx index beyond end of"
+	     ".debug_rnglists section [in module %s]"),
+	   objfile_name (objfile));
+
+  const gdb_byte *info_ptr = section->buffer + start_offset;
+
+  if (cu->header.offset_size == 4)
+    return read_4_bytes (abfd, info_ptr) + rnglist_base;
+  else
+    return read_8_bytes (abfd, info_ptr) + rnglist_base;
+}
+
+/* Process the attributes that had to be skipped in the first round. These
+   attributes are the ones that need str_offsets_base or addr_base attributes.
+   They could not have been processed in the first round, because at the time
+   the values of str_offsets_base or addr_base may not have been known.  */
+static void
+read_attribute_reprocess (const struct die_reader_specs *reader,
+			  struct attribute *attr, dwarf_tag tag)
+{
+  struct dwarf2_cu *cu = reader->cu;
+  switch (attr->form)
+    {
+      case DW_FORM_addrx:
+      case DW_FORM_GNU_addr_index:
+        DW_ADDR (attr) = read_addr_index (cu, DW_UNSND (attr));
+        break;
+      case DW_FORM_loclistx:
+	 DW_UNSND (attr) = read_loclist_index (cu, DW_UNSND (attr));
+	 break;
+      case DW_FORM_rnglistx:
+        DW_UNSND (attr) = read_rnglist_index (cu, DW_UNSND (attr), tag);
+        break;
+      case DW_FORM_strx:
+      case DW_FORM_strx1:
+      case DW_FORM_strx2:
+      case DW_FORM_strx3:
+      case DW_FORM_strx4:
+      case DW_FORM_GNU_str_index:
+	{
+	  unsigned int str_index = DW_UNSND (attr);
+	  if (reader->dwo_file != NULL)
+	    {
+	      DW_STRING (attr) = read_dwo_str_index (reader, str_index);
+	      DW_STRING_IS_CANONICAL (attr) = 0;
+	    }
+	  else
+	    {
+	      DW_STRING (attr) = read_stub_str_index (cu, str_index);
+	      DW_STRING_IS_CANONICAL (attr) = 0;
+	    }
+	  break;
+	}
+      default:
+	gdb_assert_not_reached (_("Unexpected DWARF form."));
+    }
+}
+
+/* Read an attribute value described by an attribute form.  */
+
+static const gdb_byte *
+read_attribute_value (const struct die_reader_specs *reader,
+		      struct attribute *attr, unsigned form,
+		      LONGEST implicit_const, const gdb_byte *info_ptr,
+		      bool *need_reprocess)
+{
+  struct dwarf2_cu *cu = reader->cu;
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  bfd *abfd = reader->abfd;
+  struct comp_unit_head *cu_header = &cu->header;
+  unsigned int bytes_read;
+  struct dwarf_block *blk;
+  *need_reprocess = false;
+
+  attr->form = (enum dwarf_form) form;
+  switch (form)
+    {
+    case DW_FORM_ref_addr:
+      if (cu->header.version == 2)
+	DW_UNSND (attr) = cu->header.read_address (abfd, info_ptr,
+						   &bytes_read);
+      else
+	DW_UNSND (attr) = cu->header.read_offset (abfd, info_ptr,
+						  &bytes_read);
+      info_ptr += bytes_read;
+      break;
+    case DW_FORM_GNU_ref_alt:
+      DW_UNSND (attr) = cu->header.read_offset (abfd, info_ptr, &bytes_read);
+      info_ptr += bytes_read;
+      break;
+    case DW_FORM_addr:
+      {
+	struct gdbarch *gdbarch = objfile->arch ();
+	DW_ADDR (attr) = cu->header.read_address (abfd, info_ptr, &bytes_read);
+	DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
+	info_ptr += bytes_read;
+      }
+      break;
+    case DW_FORM_block2:
+      blk = dwarf_alloc_block (cu);
+      blk->size = read_2_bytes (abfd, info_ptr);
+      info_ptr += 2;
+      blk->data = read_n_bytes (abfd, info_ptr, blk->size);
+      info_ptr += blk->size;
+      DW_BLOCK (attr) = blk;
+      break;
+    case DW_FORM_block4:
+      blk = dwarf_alloc_block (cu);
+      blk->size = read_4_bytes (abfd, info_ptr);
+      info_ptr += 4;
+      blk->data = read_n_bytes (abfd, info_ptr, blk->size);
+      info_ptr += blk->size;
+      DW_BLOCK (attr) = blk;
+      break;
+    case DW_FORM_data2:
+      DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
+      info_ptr += 2;
+      break;
+    case DW_FORM_data4:
+      DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
+      info_ptr += 4;
+      break;
+    case DW_FORM_data8:
+      DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
+      info_ptr += 8;
+      break;
+    case DW_FORM_data16:
+      blk = dwarf_alloc_block (cu);
+      blk->size = 16;
+      blk->data = read_n_bytes (abfd, info_ptr, 16);
+      info_ptr += 16;
+      DW_BLOCK (attr) = blk;
+      break;
+    case DW_FORM_sec_offset:
+      DW_UNSND (attr) = cu->header.read_offset (abfd, info_ptr, &bytes_read);
+      info_ptr += bytes_read;
+      break;
+    case DW_FORM_loclistx:
+      {
+	 *need_reprocess = true;
+	 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
+	 info_ptr += bytes_read;
+      }
+      break;
+    case DW_FORM_string:
+      DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
+      DW_STRING_IS_CANONICAL (attr) = 0;
+      info_ptr += bytes_read;
+      break;
+    case DW_FORM_strp:
+      if (!cu->per_cu->is_dwz)
+	{
+	  DW_STRING (attr) = read_indirect_string (per_objfile,
+						   abfd, info_ptr, cu_header,
+						   &bytes_read);
+	  DW_STRING_IS_CANONICAL (attr) = 0;
+	  info_ptr += bytes_read;
+	  break;
+	}
+      /* FALLTHROUGH */
+    case DW_FORM_line_strp:
+      if (!cu->per_cu->is_dwz)
+	{
+	  DW_STRING (attr) = per_objfile->read_line_string (info_ptr, cu_header,
+							    &bytes_read);
+	  DW_STRING_IS_CANONICAL (attr) = 0;
+	  info_ptr += bytes_read;
+	  break;
+	}
+      /* FALLTHROUGH */
+    case DW_FORM_GNU_strp_alt:
+      {
+	dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd);
+	LONGEST str_offset = cu_header->read_offset (abfd, info_ptr,
+						     &bytes_read);
+
+	DW_STRING (attr) = dwz->read_string (objfile, str_offset);
+	DW_STRING_IS_CANONICAL (attr) = 0;
+	info_ptr += bytes_read;
+      }
+      break;
+    case DW_FORM_exprloc:
+    case DW_FORM_block:
+      blk = dwarf_alloc_block (cu);
+      blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
+      info_ptr += bytes_read;
+      blk->data = read_n_bytes (abfd, info_ptr, blk->size);
+      info_ptr += blk->size;
+      DW_BLOCK (attr) = blk;
+      break;
+    case DW_FORM_block1:
+      blk = dwarf_alloc_block (cu);
+      blk->size = read_1_byte (abfd, info_ptr);
+      info_ptr += 1;
+      blk->data = read_n_bytes (abfd, info_ptr, blk->size);
+      info_ptr += blk->size;
+      DW_BLOCK (attr) = blk;
+      break;
+    case DW_FORM_data1:
+      DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
+      info_ptr += 1;
+      break;
+    case DW_FORM_flag:
+      DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
+      info_ptr += 1;
+      break;
+    case DW_FORM_flag_present:
+      DW_UNSND (attr) = 1;
+      break;
+    case DW_FORM_sdata:
+      DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
+      info_ptr += bytes_read;
+      break;
+    case DW_FORM_rnglistx:
+      *need_reprocess = true;
+      /* FALLTHROUGH */
+    case DW_FORM_udata:
+      DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
+      info_ptr += bytes_read;
+      break;
+    case DW_FORM_ref1:
+      DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
+			 + read_1_byte (abfd, info_ptr));
+      info_ptr += 1;
+      break;
+    case DW_FORM_ref2:
+      DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
+			 + read_2_bytes (abfd, info_ptr));
+      info_ptr += 2;
+      break;
+    case DW_FORM_ref4:
+      DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
+			 + read_4_bytes (abfd, info_ptr));
+      info_ptr += 4;
+      break;
+    case DW_FORM_ref8:
+      DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
+			 + read_8_bytes (abfd, info_ptr));
+      info_ptr += 8;
+      break;
+    case DW_FORM_ref_sig8:
+      DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
+      info_ptr += 8;
+      break;
+    case DW_FORM_ref_udata:
+      DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
+			 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
+      info_ptr += bytes_read;
+      break;
+    case DW_FORM_indirect:
+      form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
+      info_ptr += bytes_read;
+      if (form == DW_FORM_implicit_const)
+	{
+	  implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
+	  info_ptr += bytes_read;
+	}
+      info_ptr = read_attribute_value (reader, attr, form, implicit_const,
+				       info_ptr, need_reprocess);
+      break;
+    case DW_FORM_implicit_const:
+      DW_SND (attr) = implicit_const;
+      break;
+    case DW_FORM_addrx:
+    case DW_FORM_GNU_addr_index:
+      *need_reprocess = true;
+      DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
+      info_ptr += bytes_read;
+      break;
+    case DW_FORM_strx:
+    case DW_FORM_strx1:
+    case DW_FORM_strx2:
+    case DW_FORM_strx3:
+    case DW_FORM_strx4:
+    case DW_FORM_GNU_str_index:
+      {
+	ULONGEST str_index;
+	if (form == DW_FORM_strx1)
+	  {
+	    str_index = read_1_byte (abfd, info_ptr);
+	    info_ptr += 1;
+	  }
+	else if (form == DW_FORM_strx2)
+	  {
+	    str_index = read_2_bytes (abfd, info_ptr);
+	    info_ptr += 2;
+	  }
+	else if (form == DW_FORM_strx3)
+	  {
+	    str_index = read_3_bytes (abfd, info_ptr);
+	    info_ptr += 3;
+	  }
+	else if (form == DW_FORM_strx4)
+	  {
+	    str_index = read_4_bytes (abfd, info_ptr);
+	    info_ptr += 4;
+	  }
+	else
+	  {
+	    str_index = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
+	    info_ptr += bytes_read;
+	  }
+	*need_reprocess = true;
+	 DW_UNSND (attr) = str_index;
+	}
+      break;
+    default:
+      error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
+	     dwarf_form_name (form),
+	     bfd_get_filename (abfd));
+    }
+
+  /* Super hack.  */
+  if (cu->per_cu->is_dwz && attr->form_is_ref ())
+    attr->form = DW_FORM_GNU_ref_alt;
+
+  /* We have seen instances where the compiler tried to emit a byte
+     size attribute of -1 which ended up being encoded as an unsigned
+     0xffffffff.  Although 0xffffffff is technically a valid size value,
+     an object of this size seems pretty unlikely so we can relatively
+     safely treat these cases as if the size attribute was invalid and
+     treat them as zero by default.  */
+  if (attr->name == DW_AT_byte_size
+      && form == DW_FORM_data4
+      && DW_UNSND (attr) >= 0xffffffff)
+    {
+      complaint
+        (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
+         hex_string (DW_UNSND (attr)));
+      DW_UNSND (attr) = 0;
+    }
+
+  return info_ptr;
+}
+
+/* Read an attribute described by an abbreviated attribute.  */
+
+static const gdb_byte *
+read_attribute (const struct die_reader_specs *reader,
+		struct attribute *attr, struct attr_abbrev *abbrev,
+		const gdb_byte *info_ptr, bool *need_reprocess)
+{
+  attr->name = abbrev->name;
+  return read_attribute_value (reader, attr, abbrev->form,
+			       abbrev->implicit_const, info_ptr,
+			       need_reprocess);
+}
+
+/* Return pointer to string at .debug_str offset STR_OFFSET.  */
+
+static const char *
+read_indirect_string_at_offset (dwarf2_per_objfile *per_objfile,
+				LONGEST str_offset)
+{
+  return per_objfile->per_bfd->str.read_string (per_objfile->objfile,
+						str_offset, "DW_FORM_strp");
+}
+
+/* Return pointer to string at .debug_str offset as read from BUF.
+   BUF is assumed to be in a compilation unit described by CU_HEADER.
+   Return *BYTES_READ_PTR count of bytes read from BUF.  */
+
+static const char *
+read_indirect_string (dwarf2_per_objfile *per_objfile, bfd *abfd,
+		      const gdb_byte *buf,
+		      const struct comp_unit_head *cu_header,
+		      unsigned int *bytes_read_ptr)
+{
+  LONGEST str_offset = cu_header->read_offset (abfd, buf, bytes_read_ptr);
+
+  return read_indirect_string_at_offset (per_objfile, str_offset);
+}
+
+/* See read.h.  */
+
+const char *
+dwarf2_per_objfile::read_line_string (const gdb_byte *buf,
+				      const struct comp_unit_head *cu_header,
+				      unsigned int *bytes_read_ptr)
+{
+  bfd *abfd = objfile->obfd;
+  LONGEST str_offset = cu_header->read_offset (abfd, buf, bytes_read_ptr);
+
+  return per_bfd->line_str.read_string (objfile, str_offset, "DW_FORM_line_strp");
+}
+
+/* Given index ADDR_INDEX in .debug_addr, fetch the value.
+   ADDR_BASE is the DW_AT_addr_base (DW_AT_GNU_addr_base) attribute or zero.
+   ADDR_SIZE is the size of addresses from the CU header.  */
+
+static CORE_ADDR
+read_addr_index_1 (dwarf2_per_objfile *per_objfile, unsigned int addr_index,
+		   gdb::optional<ULONGEST> addr_base, int addr_size)
+{
+  struct objfile *objfile = per_objfile->objfile;
+  bfd *abfd = objfile->obfd;
+  const gdb_byte *info_ptr;
+  ULONGEST addr_base_or_zero = addr_base.has_value () ? *addr_base : 0;
+
+  per_objfile->per_bfd->addr.read (objfile);
+  if (per_objfile->per_bfd->addr.buffer == NULL)
+    error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
+	   objfile_name (objfile));
+  if (addr_base_or_zero + addr_index * addr_size
+      >= per_objfile->per_bfd->addr.size)
+    error (_("DW_FORM_addr_index pointing outside of "
+	     ".debug_addr section [in module %s]"),
+	   objfile_name (objfile));
+  info_ptr = (per_objfile->per_bfd->addr.buffer + addr_base_or_zero
+	      + addr_index * addr_size);
+  if (addr_size == 4)
+    return bfd_get_32 (abfd, info_ptr);
+  else
+    return bfd_get_64 (abfd, info_ptr);
+}
+
+/* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
+
+static CORE_ADDR
+read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
+{
+  return read_addr_index_1 (cu->per_objfile, addr_index,
+			    cu->addr_base, cu->header.addr_size);
+}
+
+/* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
+
+static CORE_ADDR
+read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
+			     unsigned int *bytes_read)
+{
+  bfd *abfd = cu->per_objfile->objfile->obfd;
+  unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
+
+  return read_addr_index (cu, addr_index);
+}
+
+/* See read.h.  */
+
+CORE_ADDR
+dwarf2_read_addr_index (dwarf2_per_cu_data *per_cu,
+			dwarf2_per_objfile *per_objfile,
+			unsigned int addr_index)
+{
+  struct dwarf2_cu *cu = per_objfile->get_cu (per_cu);
+  gdb::optional<ULONGEST> addr_base;
+  int addr_size;
+
+  /* We need addr_base and addr_size.
+     If we don't have PER_CU->cu, we have to get it.
+     Nasty, but the alternative is storing the needed info in PER_CU,
+     which at this point doesn't seem justified: it's not clear how frequently
+     it would get used and it would increase the size of every PER_CU.
+     Entry points like dwarf2_per_cu_addr_size do a similar thing
+     so we're not in uncharted territory here.
+     Alas we need to be a bit more complicated as addr_base is contained
+     in the DIE.
+
+     We don't need to read the entire CU(/TU).
+     We just need the header and top level die.
+
+     IWBN to use the aging mechanism to let us lazily later discard the CU.
+     For now we skip this optimization.  */
+
+  if (cu != NULL)
+    {
+      addr_base = cu->addr_base;
+      addr_size = cu->header.addr_size;
+    }
+  else
+    {
+      cutu_reader reader (per_cu, per_objfile, nullptr, nullptr, false);
+      addr_base = reader.cu->addr_base;
+      addr_size = reader.cu->header.addr_size;
+    }
+
+  return read_addr_index_1 (per_objfile, addr_index, addr_base, addr_size);
+}
+
+/* Given a DW_FORM_GNU_str_index value STR_INDEX, fetch the string.
+   STR_SECTION, STR_OFFSETS_SECTION can be from a Fission stub or a
+   DWO file.  */
+
+static const char *
+read_str_index (struct dwarf2_cu *cu,
+		struct dwarf2_section_info *str_section,
+		struct dwarf2_section_info *str_offsets_section,
+		ULONGEST str_offsets_base, ULONGEST str_index)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  const char *objf_name = objfile_name (objfile);
+  bfd *abfd = objfile->obfd;
+  const gdb_byte *info_ptr;
+  ULONGEST str_offset;
+  static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx";
+
+  str_section->read (objfile);
+  str_offsets_section->read (objfile);
+  if (str_section->buffer == NULL)
+    error (_("%s used without %s section"
+	     " in CU at offset %s [in module %s]"),
+	   form_name, str_section->get_name (),
+           sect_offset_str (cu->header.sect_off), objf_name);
+  if (str_offsets_section->buffer == NULL)
+    error (_("%s used without %s section"
+	     " in CU at offset %s [in module %s]"),
+	   form_name, str_section->get_name (),
+           sect_offset_str (cu->header.sect_off), objf_name);
+  info_ptr = (str_offsets_section->buffer
+	      + str_offsets_base
+	      + str_index * cu->header.offset_size);
+  if (cu->header.offset_size == 4)
+    str_offset = bfd_get_32 (abfd, info_ptr);
+  else
+    str_offset = bfd_get_64 (abfd, info_ptr);
+  if (str_offset >= str_section->size)
+    error (_("Offset from %s pointing outside of"
+	     " .debug_str.dwo section in CU at offset %s [in module %s]"),
+	   form_name, sect_offset_str (cu->header.sect_off), objf_name);
+  return (const char *) (str_section->buffer + str_offset);
+}
+
+/* Given a DW_FORM_GNU_str_index from a DWO file, fetch the string.  */
+
+static const char *
+read_dwo_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
+{
+  ULONGEST str_offsets_base = reader->cu->header.version >= 5
+			      ? reader->cu->header.addr_size : 0;
+  return read_str_index (reader->cu,
+			 &reader->dwo_file->sections.str,
+			 &reader->dwo_file->sections.str_offsets,
+			 str_offsets_base, str_index);
+}
+
+/* Given a DW_FORM_GNU_str_index from a Fission stub, fetch the string.  */
+
+static const char *
+read_stub_str_index (struct dwarf2_cu *cu, ULONGEST str_index)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  const char *objf_name = objfile_name (objfile);
+  static const char form_name[] = "DW_FORM_GNU_str_index";
+  static const char str_offsets_attr_name[] = "DW_AT_str_offsets";
+
+  if (!cu->str_offsets_base.has_value ())
+    error (_("%s used in Fission stub without %s"
+	     " in CU at offset 0x%lx [in module %s]"),
+	   form_name, str_offsets_attr_name,
+	   (long) cu->header.offset_size, objf_name);
+
+  return read_str_index (cu,
+			 &cu->per_objfile->per_bfd->str,
+			 &cu->per_objfile->per_bfd->str_offsets,
+			 *cu->str_offsets_base, str_index);
+}
+
+/* Return the length of an LEB128 number in BUF.  */
+
+static int
+leb128_size (const gdb_byte *buf)
+{
+  const gdb_byte *begin = buf;
+  gdb_byte byte;
+
+  while (1)
+    {
+      byte = *buf++;
+      if ((byte & 128) == 0)
+	return buf - begin;
+    }
+}
+
+static void
+set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
+{
+  switch (lang)
+    {
+    case DW_LANG_C89:
+    case DW_LANG_C99:
+    case DW_LANG_C11:
+    case DW_LANG_C:
+    case DW_LANG_UPC:
+      cu->language = language_c;
+      break;
+    case DW_LANG_Java:
+    case DW_LANG_C_plus_plus:
+    case DW_LANG_C_plus_plus_11:
+    case DW_LANG_C_plus_plus_14:
+      cu->language = language_cplus;
+      break;
+    case DW_LANG_D:
+      cu->language = language_d;
+      break;
+    case DW_LANG_Fortran77:
+    case DW_LANG_Fortran90:
+    case DW_LANG_Fortran95:
+    case DW_LANG_Fortran03:
+    case DW_LANG_Fortran08:
+      cu->language = language_fortran;
+      break;
+    case DW_LANG_Go:
+      cu->language = language_go;
+      break;
+    case DW_LANG_Mips_Assembler:
+      cu->language = language_asm;
+      break;
+    case DW_LANG_Ada83:
+    case DW_LANG_Ada95:
+      cu->language = language_ada;
+      break;
+    case DW_LANG_Modula2:
+      cu->language = language_m2;
+      break;
+    case DW_LANG_Pascal83:
+      cu->language = language_pascal;
+      break;
+    case DW_LANG_ObjC:
+      cu->language = language_objc;
+      break;
+    case DW_LANG_Rust:
+    case DW_LANG_Rust_old:
+      cu->language = language_rust;
+      break;
+    case DW_LANG_Cobol74:
+    case DW_LANG_Cobol85:
+    default:
+      cu->language = language_minimal;
+      break;
+    }
+  cu->language_defn = language_def (cu->language);
+}
+
+/* Return the named attribute or NULL if not there.  */
+
+static struct attribute *
+dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
+{
+  for (;;)
+    {
+      unsigned int i;
+      struct attribute *spec = NULL;
+
+      for (i = 0; i < die->num_attrs; ++i)
+	{
+	  if (die->attrs[i].name == name)
+	    return &die->attrs[i];
+	  if (die->attrs[i].name == DW_AT_specification
+	      || die->attrs[i].name == DW_AT_abstract_origin)
+	    spec = &die->attrs[i];
+	}
+
+      if (!spec)
+	break;
+
+      die = follow_die_ref (die, spec, &cu);
+    }
+
+  return NULL;
+}
+
+/* Return the string associated with a string-typed attribute, or NULL if it
+   is either not found or is of an incorrect type.  */
+
+static const char *
+dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+  const char *str = NULL;
+
+  attr = dwarf2_attr (die, name, cu);
+
+  if (attr != NULL)
+    {
+      str = attr->value_as_string ();
+      if (str == nullptr)
+        complaint (_("string type expected for attribute %s for "
+		     "DIE at %s in module %s"),
+		   dwarf_attr_name (name), sect_offset_str (die->sect_off),
+		   objfile_name (cu->per_objfile->objfile));
+    }
+
+  return str;
+}
+
+/* Return the dwo name or NULL if not present. If present, it is in either
+   DW_AT_GNU_dwo_name or DW_AT_dwo_name attribute.  */
+static const char *
+dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu)
+{
+  const char *dwo_name = dwarf2_string_attr (die, DW_AT_GNU_dwo_name, cu);
+  if (dwo_name == nullptr)
+    dwo_name = dwarf2_string_attr (die, DW_AT_dwo_name, cu);
+  return dwo_name;
+}
+
+/* Return non-zero iff the attribute NAME is defined for the given DIE,
+   and holds a non-zero value.  This function should only be used for
+   DW_FORM_flag or DW_FORM_flag_present attributes.  */
+
+static int
+dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
+{
+  struct attribute *attr = dwarf2_attr (die, name, cu);
+
+  return (attr && DW_UNSND (attr));
+}
+
+static int
+die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
+{
+  /* A DIE is a declaration if it has a DW_AT_declaration attribute
+     which value is non-zero.  However, we have to be careful with
+     DIEs having a DW_AT_specification attribute, because dwarf2_attr()
+     (via dwarf2_flag_true_p) follows this attribute.  So we may
+     end up accidently finding a declaration attribute that belongs
+     to a different DIE referenced by the specification attribute,
+     even though the given DIE does not have a declaration attribute.  */
+  return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
+	  && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
+}
+
+/* Return the die giving the specification for DIE, if there is
+   one.  *SPEC_CU is the CU containing DIE on input, and the CU
+   containing the return value on output.  If there is no
+   specification, but there is an abstract origin, that is
+   returned.  */
+
+static struct die_info *
+die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
+{
+  struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
+					     *spec_cu);
+
+  if (spec_attr == NULL)
+    spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
+
+  if (spec_attr == NULL)
+    return NULL;
+  else
+    return follow_die_ref (die, spec_attr, spec_cu);
+}
+
+/* Stub for free_line_header to match void * callback types.  */
+
+static void
+free_line_header_voidp (void *arg)
+{
+  struct line_header *lh = (struct line_header *) arg;
+
+  delete lh;
+}
+
+/* A convenience function to find the proper .debug_line section for a CU.  */
+
+static struct dwarf2_section_info *
+get_debug_line_section (struct dwarf2_cu *cu)
+{
+  struct dwarf2_section_info *section;
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+
+  /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
+     DWO file.  */
+  if (cu->dwo_unit && cu->per_cu->is_debug_types)
+    section = &cu->dwo_unit->dwo_file->sections.line;
+  else if (cu->per_cu->is_dwz)
+    {
+      dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd);
+
+      section = &dwz->line;
+    }
+  else
+    section = &per_objfile->per_bfd->line;
+
+  return section;
+}
+
+/* Read the statement program header starting at OFFSET in
+   .debug_line, or .debug_line.dwo.  Return a pointer
+   to a struct line_header, allocated using xmalloc.
+   Returns NULL if there is a problem reading the header, e.g., if it
+   has a version we don't understand.
+
+   NOTE: the strings in the include directory and file name tables of
+   the returned object point into the dwarf line section buffer,
+   and must not be freed.  */
+
+static line_header_up
+dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
+{
+  struct dwarf2_section_info *section;
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+
+  section = get_debug_line_section (cu);
+  section->read (per_objfile->objfile);
+  if (section->buffer == NULL)
+    {
+      if (cu->dwo_unit && cu->per_cu->is_debug_types)
+	complaint (_("missing .debug_line.dwo section"));
+      else
+	complaint (_("missing .debug_line section"));
+      return 0;
+    }
+
+  return dwarf_decode_line_header (sect_off, cu->per_cu->is_dwz,
+				   per_objfile, section, &cu->header);
+}
+
+/* Subroutine of dwarf_decode_lines to simplify it.
+   Return the file name of the psymtab for the given file_entry.
+   COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
+   If space for the result is malloc'd, *NAME_HOLDER will be set.
+   Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
+
+static const char *
+psymtab_include_file_name (const struct line_header *lh, const file_entry &fe,
+			   const dwarf2_psymtab *pst,
+			   const char *comp_dir,
+			   gdb::unique_xmalloc_ptr<char> *name_holder)
+{
+  const char *include_name = fe.name;
+  const char *include_name_to_compare = include_name;
+  const char *pst_filename;
+  int file_is_pst;
+
+  const char *dir_name = fe.include_dir (lh);
+
+  gdb::unique_xmalloc_ptr<char> hold_compare;
+  if (!IS_ABSOLUTE_PATH (include_name)
+      && (dir_name != NULL || comp_dir != NULL))
+    {
+      /* Avoid creating a duplicate psymtab for PST.
+	 We do this by comparing INCLUDE_NAME and PST_FILENAME.
+	 Before we do the comparison, however, we need to account
+	 for DIR_NAME and COMP_DIR.
+	 First prepend dir_name (if non-NULL).  If we still don't
+	 have an absolute path prepend comp_dir (if non-NULL).
+	 However, the directory we record in the include-file's
+	 psymtab does not contain COMP_DIR (to match the
+	 corresponding symtab(s)).
+
+	 Example:
+
+	 bash$ cd /tmp
+	 bash$ gcc -g ./hello.c
+	 include_name = "hello.c"
+	 dir_name = "."
+	 DW_AT_comp_dir = comp_dir = "/tmp"
+	 DW_AT_name = "./hello.c"
+
+      */
+
+      if (dir_name != NULL)
+	{
+	  name_holder->reset (concat (dir_name, SLASH_STRING,
+				      include_name, (char *) NULL));
+	  include_name = name_holder->get ();
+	  include_name_to_compare = include_name;
+	}
+      if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
+	{
+	  hold_compare.reset (concat (comp_dir, SLASH_STRING,
+				      include_name, (char *) NULL));
+	  include_name_to_compare = hold_compare.get ();
+	}
+    }
+
+  pst_filename = pst->filename;
+  gdb::unique_xmalloc_ptr<char> copied_name;
+  if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
+    {
+      copied_name.reset (concat (pst->dirname, SLASH_STRING,
+				 pst_filename, (char *) NULL));
+      pst_filename = copied_name.get ();
+    }
+
+  file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
+
+  if (file_is_pst)
+    return NULL;
+  return include_name;
+}
+
+/* State machine to track the state of the line number program.  */
+
+class lnp_state_machine
+{
+public:
+  /* Initialize a machine state for the start of a line number
+     program.  */
+  lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
+		     bool record_lines_p);
+
+  file_entry *current_file ()
+  {
+    /* lh->file_names is 0-based, but the file name numbers in the
+       statement program are 1-based.  */
+    return m_line_header->file_name_at (m_file);
+  }
+
+  /* Record the line in the state machine.  END_SEQUENCE is true if
+     we're processing the end of a sequence.  */
+  void record_line (bool end_sequence);
+
+  /* Check ADDRESS is -1, or zero and less than UNRELOCATED_LOWPC, and if true
+     nop-out rest of the lines in this sequence.  */
+  void check_line_address (struct dwarf2_cu *cu,
+			   const gdb_byte *line_ptr,
+			   CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
+
+  void handle_set_discriminator (unsigned int discriminator)
+  {
+    m_discriminator = discriminator;
+    m_line_has_non_zero_discriminator |= discriminator != 0;
+  }
+
+  /* Handle DW_LNE_set_address.  */
+  void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
+  {
+    m_op_index = 0;
+    address += baseaddr;
+    m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
+  }
+
+  /* Handle DW_LNS_advance_pc.  */
+  void handle_advance_pc (CORE_ADDR adjust);
+
+  /* Handle a special opcode.  */
+  void handle_special_opcode (unsigned char op_code);
+
+  /* Handle DW_LNS_advance_line.  */
+  void handle_advance_line (int line_delta)
+  {
+    advance_line (line_delta);
+  }
+
+  /* Handle DW_LNS_set_file.  */
+  void handle_set_file (file_name_index file);
+
+  /* Handle DW_LNS_negate_stmt.  */
+  void handle_negate_stmt ()
+  {
+    m_is_stmt = !m_is_stmt;
+  }
+
+  /* Handle DW_LNS_const_add_pc.  */
+  void handle_const_add_pc ();
+
+  /* Handle DW_LNS_fixed_advance_pc.  */
+  void handle_fixed_advance_pc (CORE_ADDR addr_adj)
+  {
+    m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
+    m_op_index = 0;
+  }
+
+  /* Handle DW_LNS_copy.  */
+  void handle_copy ()
+  {
+    record_line (false);
+    m_discriminator = 0;
+  }
+
+  /* Handle DW_LNE_end_sequence.  */
+  void handle_end_sequence ()
+  {
+    m_currently_recording_lines = true;
+  }
+
+private:
+  /* Advance the line by LINE_DELTA.  */
+  void advance_line (int line_delta)
+  {
+    m_line += line_delta;
+
+    if (line_delta != 0)
+      m_line_has_non_zero_discriminator = m_discriminator != 0;
+  }
+
+  struct dwarf2_cu *m_cu;
+
+  gdbarch *m_gdbarch;
+
+  /* True if we're recording lines.
+     Otherwise we're building partial symtabs and are just interested in
+     finding include files mentioned by the line number program.  */
+  bool m_record_lines_p;
+
+  /* The line number header.  */
+  line_header *m_line_header;
+
+  /* These are part of the standard DWARF line number state machine,
+     and initialized according to the DWARF spec.  */
+
+  unsigned char m_op_index = 0;
+  /* The line table index of the current file.  */
+  file_name_index m_file = 1;
+  unsigned int m_line = 1;
+
+  /* These are initialized in the constructor.  */
+
+  CORE_ADDR m_address;
+  bool m_is_stmt;
+  unsigned int m_discriminator;
+
+  /* Additional bits of state we need to track.  */
+
+  /* The last file that we called dwarf2_start_subfile for.
+     This is only used for TLLs.  */
+  unsigned int m_last_file = 0;
+  /* The last file a line number was recorded for.  */
+  struct subfile *m_last_subfile = NULL;
+
+  /* The address of the last line entry.  */
+  CORE_ADDR m_last_address;
+
+  /* Set to true when a previous line at the same address (using
+     m_last_address) had m_is_stmt true.  This is reset to false when a
+     line entry at a new address (m_address different to m_last_address) is
+     processed.  */
+  bool m_stmt_at_address = false;
+
+  /* When true, record the lines we decode.  */
+  bool m_currently_recording_lines = false;
+
+  /* The last line number that was recorded, used to coalesce
+     consecutive entries for the same line.  This can happen, for
+     example, when discriminators are present.  PR 17276.  */
+  unsigned int m_last_line = 0;
+  bool m_line_has_non_zero_discriminator = false;
+};
+
+void
+lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
+{
+  CORE_ADDR addr_adj = (((m_op_index + adjust)
+			 / m_line_header->maximum_ops_per_instruction)
+			* m_line_header->minimum_instruction_length);
+  m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
+  m_op_index = ((m_op_index + adjust)
+		% m_line_header->maximum_ops_per_instruction);
+}
+
+void
+lnp_state_machine::handle_special_opcode (unsigned char op_code)
+{
+  unsigned char adj_opcode = op_code - m_line_header->opcode_base;
+  unsigned char adj_opcode_d = adj_opcode / m_line_header->line_range;
+  unsigned char adj_opcode_r = adj_opcode % m_line_header->line_range;
+  CORE_ADDR addr_adj = (((m_op_index + adj_opcode_d)
+			 / m_line_header->maximum_ops_per_instruction)
+			* m_line_header->minimum_instruction_length);
+  m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
+  m_op_index = ((m_op_index + adj_opcode_d)
+		% m_line_header->maximum_ops_per_instruction);
+
+  int line_delta = m_line_header->line_base + adj_opcode_r;
+  advance_line (line_delta);
+  record_line (false);
+  m_discriminator = 0;
+}
+
+void
+lnp_state_machine::handle_set_file (file_name_index file)
+{
+  m_file = file;
+
+  const file_entry *fe = current_file ();
+  if (fe == NULL)
+    dwarf2_debug_line_missing_file_complaint ();
+  else if (m_record_lines_p)
+    {
+      const char *dir = fe->include_dir (m_line_header);
+
+      m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
+      m_line_has_non_zero_discriminator = m_discriminator != 0;
+      dwarf2_start_subfile (m_cu, fe->name, dir);
+    }
+}
+
+void
+lnp_state_machine::handle_const_add_pc ()
+{
+  CORE_ADDR adjust
+    = (255 - m_line_header->opcode_base) / m_line_header->line_range;
+
+  CORE_ADDR addr_adj
+    = (((m_op_index + adjust)
+	/ m_line_header->maximum_ops_per_instruction)
+       * m_line_header->minimum_instruction_length);
+
+  m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
+  m_op_index = ((m_op_index + adjust)
+		% m_line_header->maximum_ops_per_instruction);
+}
+
+/* Return non-zero if we should add LINE to the line number table.
+   LINE is the line to add, LAST_LINE is the last line that was added,
+   LAST_SUBFILE is the subfile for LAST_LINE.
+   LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
+   had a non-zero discriminator.
+
+   We have to be careful in the presence of discriminators.
+   E.g., for this line:
+
+     for (i = 0; i < 100000; i++);
+
+   clang can emit four line number entries for that one line,
+   each with a different discriminator.
+   See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
+
+   However, we want gdb to coalesce all four entries into one.
+   Otherwise the user could stepi into the middle of the line and
+   gdb would get confused about whether the pc really was in the
+   middle of the line.
+
+   Things are further complicated by the fact that two consecutive
+   line number entries for the same line is a heuristic used by gcc
+   to denote the end of the prologue.  So we can't just discard duplicate
+   entries, we have to be selective about it.  The heuristic we use is
+   that we only collapse consecutive entries for the same line if at least
+   one of those entries has a non-zero discriminator.  PR 17276.
+
+   Note: Addresses in the line number state machine can never go backwards
+   within one sequence, thus this coalescing is ok.  */
+
+static int
+dwarf_record_line_p (struct dwarf2_cu *cu,
+		     unsigned int line, unsigned int last_line,
+		     int line_has_non_zero_discriminator,
+		     struct subfile *last_subfile)
+{
+  if (cu->get_builder ()->get_current_subfile () != last_subfile)
+    return 1;
+  if (line != last_line)
+    return 1;
+  /* Same line for the same file that we've seen already.
+     As a last check, for pr 17276, only record the line if the line
+     has never had a non-zero discriminator.  */
+  if (!line_has_non_zero_discriminator)
+    return 1;
+  return 0;
+}
+
+/* Use the CU's builder to record line number LINE beginning at
+   address ADDRESS in the line table of subfile SUBFILE.  */
+
+static void
+dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
+		     unsigned int line, CORE_ADDR address, bool is_stmt,
+		     struct dwarf2_cu *cu)
+{
+  CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
+
+  if (dwarf_line_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+			  "Recording line %u, file %s, address %s\n",
+			  line, lbasename (subfile->name),
+			  paddress (gdbarch, address));
+    }
+
+  if (cu != nullptr)
+    cu->get_builder ()->record_line (subfile, line, addr, is_stmt);
+}
+
+/* Subroutine of dwarf_decode_lines_1 to simplify it.
+   Mark the end of a set of line number records.
+   The arguments are the same as for dwarf_record_line_1.
+   If SUBFILE is NULL the request is ignored.  */
+
+static void
+dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
+		   CORE_ADDR address, struct dwarf2_cu *cu)
+{
+  if (subfile == NULL)
+    return;
+
+  if (dwarf_line_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+			  "Finishing current line, file %s, address %s\n",
+			  lbasename (subfile->name),
+			  paddress (gdbarch, address));
+    }
+
+  dwarf_record_line_1 (gdbarch, subfile, 0, address, true, cu);
+}
+
+void
+lnp_state_machine::record_line (bool end_sequence)
+{
+  if (dwarf_line_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+			  "Processing actual line %u: file %u,"
+			  " address %s, is_stmt %u, discrim %u%s\n",
+			  m_line, m_file,
+			  paddress (m_gdbarch, m_address),
+			  m_is_stmt, m_discriminator,
+			  (end_sequence ? "\t(end sequence)" : ""));
+    }
+
+  file_entry *fe = current_file ();
+
+  if (fe == NULL)
+    dwarf2_debug_line_missing_file_complaint ();
+  /* For now we ignore lines not starting on an instruction boundary.
+     But not when processing end_sequence for compatibility with the
+     previous version of the code.  */
+  else if (m_op_index == 0 || end_sequence)
+    {
+      fe->included_p = 1;
+      if (m_record_lines_p)
+	{
+	  /* When we switch files we insert an end maker in the first file,
+	     switch to the second file and add a new line entry.  The
+	     problem is that the end marker inserted in the first file will
+	     discard any previous line entries at the same address.  If the
+	     line entries in the first file are marked as is-stmt, while
+	     the new line in the second file is non-stmt, then this means
+	     the end marker will discard is-stmt lines so we can have a
+	     non-stmt line.  This means that there are less addresses at
+	     which the user can insert a breakpoint.
+
+	     To improve this we track the last address in m_last_address,
+	     and whether we have seen an is-stmt at this address.  Then
+	     when switching files, if we have seen a stmt at the current
+	     address, and we are switching to create a non-stmt line, then
+	     discard the new line.  */
+	  bool file_changed
+	    = m_last_subfile != m_cu->get_builder ()->get_current_subfile ();
+	  bool ignore_this_line
+           = ((file_changed && !end_sequence && m_last_address == m_address
+               && !m_is_stmt && m_stmt_at_address)
+              || (!end_sequence && m_line == 0));
+
+	  if ((file_changed && !ignore_this_line) || end_sequence)
+	    {
+	      dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
+				 m_currently_recording_lines ? m_cu : nullptr);
+	    }
+
+	  if (!end_sequence && !ignore_this_line)
+	    {
+	      bool is_stmt = producer_is_codewarrior (m_cu) || m_is_stmt;
+
+	      if (dwarf_record_line_p (m_cu, m_line, m_last_line,
+				       m_line_has_non_zero_discriminator,
+				       m_last_subfile))
+		{
+		  buildsym_compunit *builder = m_cu->get_builder ();
+		  dwarf_record_line_1 (m_gdbarch,
+				       builder->get_current_subfile (),
+				       m_line, m_address, is_stmt,
+				       m_currently_recording_lines ? m_cu : nullptr);
+		}
+	      m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
+	      m_last_line = m_line;
+	    }
+	}
+    }
+
+  /* Track whether we have seen any m_is_stmt true at m_address in case we
+     have multiple line table entries all at m_address.  */
+  if (m_last_address != m_address)
+    {
+      m_stmt_at_address = false;
+      m_last_address = m_address;
+    }
+  m_stmt_at_address |= m_is_stmt;
+}
+
+lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
+				      line_header *lh, bool record_lines_p)
+{
+  m_cu = cu;
+  m_gdbarch = arch;
+  m_record_lines_p = record_lines_p;
+  m_line_header = lh;
+
+  m_currently_recording_lines = true;
+
+  /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
+     was a line entry for it so that the backend has a chance to adjust it
+     and also record it in case it needs it.  This is currently used by MIPS
+     code, cf. `mips_adjust_dwarf2_line'.  */
+  m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
+  m_is_stmt = lh->default_is_stmt;
+  m_discriminator = 0;
+
+  m_last_address = m_address;
+  m_stmt_at_address = false;
+}
+
+void
+lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
+				       const gdb_byte *line_ptr,
+				       CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
+{
+  /* Linkers resolve a symbolic relocation referencing a GC'd function to 0 or
+     -1.  If ADDRESS is 0, ignoring the opcode will err if the text section is
+     located at 0x0.  In this case, additionally check that if
+     ADDRESS < UNRELOCATED_LOWPC.  */
+
+  if ((address == 0 && address < unrelocated_lowpc)
+      || address == (CORE_ADDR) -1)
+    {
+      /* This line table is for a function which has been
+	 GCd by the linker.  Ignore it.  PR gdb/12528 */
+
+      struct objfile *objfile = cu->per_objfile->objfile;
+      long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
+
+      complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
+		 line_offset, objfile_name (objfile));
+      m_currently_recording_lines = false;
+      /* Note: m_currently_recording_lines is left as false until we see
+	 DW_LNE_end_sequence.  */
+    }
+}
+
+/* Subroutine of dwarf_decode_lines to simplify it.
+   Process the line number information in LH.
+   If DECODE_FOR_PST_P is non-zero, all we do is process the line number
+   program in order to set included_p for every referenced header.  */
+
+static void
+dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
+		      const int decode_for_pst_p, CORE_ADDR lowpc)
+{
+  const gdb_byte *line_ptr, *extended_end;
+  const gdb_byte *line_end;
+  unsigned int bytes_read, extended_len;
+  unsigned char op_code, extended_op;
+  CORE_ADDR baseaddr;
+  struct objfile *objfile = cu->per_objfile->objfile;
+  bfd *abfd = objfile->obfd;
+  struct gdbarch *gdbarch = objfile->arch ();
+  /* True if we're recording line info (as opposed to building partial
+     symtabs and just interested in finding include files mentioned by
+     the line number program).  */
+  bool record_lines_p = !decode_for_pst_p;
+
+  baseaddr = objfile->text_section_offset ();
+
+  line_ptr = lh->statement_program_start;
+  line_end = lh->statement_program_end;
+
+  /* Read the statement sequences until there's nothing left.  */
+  while (line_ptr < line_end)
+    {
+      /* The DWARF line number program state machine.  Reset the state
+	 machine at the start of each sequence.  */
+      lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
+      bool end_sequence = false;
+
+      if (record_lines_p)
+	{
+	  /* Start a subfile for the current file of the state
+	     machine.  */
+	  const file_entry *fe = state_machine.current_file ();
+
+	  if (fe != NULL)
+	    dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
+	}
+
+      /* Decode the table.  */
+      while (line_ptr < line_end && !end_sequence)
+	{
+	  op_code = read_1_byte (abfd, line_ptr);
+	  line_ptr += 1;
+
+	  if (op_code >= lh->opcode_base)
+	    {
+	      /* Special opcode.  */
+	      state_machine.handle_special_opcode (op_code);
+	    }
+	  else switch (op_code)
+	    {
+	    case DW_LNS_extended_op:
+	      extended_len = read_unsigned_leb128 (abfd, line_ptr,
+						   &bytes_read);
+	      line_ptr += bytes_read;
+	      extended_end = line_ptr + extended_len;
+	      extended_op = read_1_byte (abfd, line_ptr);
+	      line_ptr += 1;
+	      if (DW_LNE_lo_user <= extended_op
+		  && extended_op <= DW_LNE_hi_user)
+		{
+		  /* Vendor extension, ignore.  */
+		  line_ptr = extended_end;
+		  break;
+		}
+	      switch (extended_op)
+		{
+		case DW_LNE_end_sequence:
+		  state_machine.handle_end_sequence ();
+		  end_sequence = true;
+		  break;
+		case DW_LNE_set_address:
+		  {
+		    CORE_ADDR address
+		      = cu->header.read_address (abfd, line_ptr, &bytes_read);
+		    line_ptr += bytes_read;
+
+		    state_machine.check_line_address (cu, line_ptr,
+						      lowpc - baseaddr, address);
+		    state_machine.handle_set_address (baseaddr, address);
+		  }
+		  break;
+		case DW_LNE_define_file:
+                  {
+                    const char *cur_file;
+		    unsigned int mod_time, length;
+		    dir_index dindex;
+
+                    cur_file = read_direct_string (abfd, line_ptr,
+						   &bytes_read);
+                    line_ptr += bytes_read;
+                    dindex = (dir_index)
+                      read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+                    line_ptr += bytes_read;
+                    mod_time =
+                      read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+                    line_ptr += bytes_read;
+                    length =
+                      read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+                    line_ptr += bytes_read;
+                    lh->add_file_name (cur_file, dindex, mod_time, length);
+                  }
+		  break;
+		case DW_LNE_set_discriminator:
+		  {
+		    /* The discriminator is not interesting to the
+		       debugger; just ignore it.  We still need to
+		       check its value though:
+		       if there are consecutive entries for the same
+		       (non-prologue) line we want to coalesce them.
+		       PR 17276.  */
+		    unsigned int discr
+		      = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+		    line_ptr += bytes_read;
+
+		    state_machine.handle_set_discriminator (discr);
+		  }
+		  break;
+		default:
+		  complaint (_("mangled .debug_line section"));
+		  return;
+		}
+	      /* Make sure that we parsed the extended op correctly.  If e.g.
+		 we expected a different address size than the producer used,
+		 we may have read the wrong number of bytes.  */
+	      if (line_ptr != extended_end)
+		{
+		  complaint (_("mangled .debug_line section"));
+		  return;
+		}
+	      break;
+	    case DW_LNS_copy:
+	      state_machine.handle_copy ();
+	      break;
+	    case DW_LNS_advance_pc:
+	      {
+		CORE_ADDR adjust
+		  = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+		line_ptr += bytes_read;
+
+		state_machine.handle_advance_pc (adjust);
+	      }
+	      break;
+	    case DW_LNS_advance_line:
+	      {
+		int line_delta
+		  = read_signed_leb128 (abfd, line_ptr, &bytes_read);
+		line_ptr += bytes_read;
+
+		state_machine.handle_advance_line (line_delta);
+	      }
+	      break;
+	    case DW_LNS_set_file:
+	      {
+		file_name_index file
+		  = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
+							    &bytes_read);
+		line_ptr += bytes_read;
+
+		state_machine.handle_set_file (file);
+	      }
+	      break;
+	    case DW_LNS_set_column:
+	      (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+	      line_ptr += bytes_read;
+	      break;
+	    case DW_LNS_negate_stmt:
+	      state_machine.handle_negate_stmt ();
+	      break;
+	    case DW_LNS_set_basic_block:
+	      break;
+	    /* Add to the address register of the state machine the
+	       address increment value corresponding to special opcode
+	       255.  I.e., this value is scaled by the minimum
+	       instruction length since special opcode 255 would have
+	       scaled the increment.  */
+	    case DW_LNS_const_add_pc:
+	      state_machine.handle_const_add_pc ();
+	      break;
+	    case DW_LNS_fixed_advance_pc:
+	      {
+		CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
+		line_ptr += 2;
+
+		state_machine.handle_fixed_advance_pc (addr_adj);
+	      }
+	      break;
+	    default:
+	      {
+		/* Unknown standard opcode, ignore it.  */
+		int i;
+
+		for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
+		  {
+		    (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
+		    line_ptr += bytes_read;
+		  }
+	      }
+	    }
+	}
+
+      if (!end_sequence)
+	dwarf2_debug_line_missing_end_sequence_complaint ();
+
+      /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
+	 in which case we still finish recording the last line).  */
+      state_machine.record_line (true);
+    }
+}
+
+/* Decode the Line Number Program (LNP) for the given line_header
+   structure and CU.  The actual information extracted and the type
+   of structures created from the LNP depends on the value of PST.
+
+   1. If PST is NULL, then this procedure uses the data from the program
+      to create all necessary symbol tables, and their linetables.
+
+   2. If PST is not NULL, this procedure reads the program to determine
+      the list of files included by the unit represented by PST, and
+      builds all the associated partial symbol tables.
+
+   COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
+   It is used for relative paths in the line table.
+   NOTE: When processing partial symtabs (pst != NULL),
+   comp_dir == pst->dirname.
+
+   NOTE: It is important that psymtabs have the same file name (via strcmp)
+   as the corresponding symtab.  Since COMP_DIR is not used in the name of the
+   symtab we don't use it in the name of the psymtabs we create.
+   E.g. expand_line_sal requires this when finding psymtabs to expand.
+   A good testcase for this is mb-inline.exp.
+
+   LOWPC is the lowest address in CU (or 0 if not known).
+
+   Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
+   for its PC<->lines mapping information.  Otherwise only the filename
+   table is read in.  */
+
+static void
+dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
+		    struct dwarf2_cu *cu, dwarf2_psymtab *pst,
+		    CORE_ADDR lowpc, int decode_mapping)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  const int decode_for_pst_p = (pst != NULL);
+
+  if (decode_mapping)
+    dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
+
+  if (decode_for_pst_p)
+    {
+      /* Now that we're done scanning the Line Header Program, we can
+         create the psymtab of each included file.  */
+      for (auto &file_entry : lh->file_names ())
+        if (file_entry.included_p == 1)
+          {
+	    gdb::unique_xmalloc_ptr<char> name_holder;
+	    const char *include_name =
+	      psymtab_include_file_name (lh, file_entry, pst,
+					 comp_dir, &name_holder);
+	    if (include_name != NULL)
+              dwarf2_create_include_psymtab (include_name, pst, objfile);
+          }
+    }
+  else
+    {
+      /* Make sure a symtab is created for every file, even files
+	 which contain only variables (i.e. no code with associated
+	 line numbers).  */
+      buildsym_compunit *builder = cu->get_builder ();
+      struct compunit_symtab *cust = builder->get_compunit_symtab ();
+
+      for (auto &fe : lh->file_names ())
+	{
+	  dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
+	  if (builder->get_current_subfile ()->symtab == NULL)
+	    {
+	      builder->get_current_subfile ()->symtab
+		= allocate_symtab (cust,
+				   builder->get_current_subfile ()->name);
+	    }
+	  fe.symtab = builder->get_current_subfile ()->symtab;
+	}
+    }
+}
+
+/* Start a subfile for DWARF.  FILENAME is the name of the file and
+   DIRNAME the name of the source directory which contains FILENAME
+   or NULL if not known.
+   This routine tries to keep line numbers from identical absolute and
+   relative file names in a common subfile.
+
+   Using the `list' example from the GDB testsuite, which resides in
+   /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
+   of /srcdir/list0.c yields the following debugging information for list0.c:
+
+   DW_AT_name:          /srcdir/list0.c
+   DW_AT_comp_dir:      /compdir
+   files.files[0].name: list0.h
+   files.files[0].dir:  /srcdir
+   files.files[1].name: list0.c
+   files.files[1].dir:  /srcdir
+
+   The line number information for list0.c has to end up in a single
+   subfile, so that `break /srcdir/list0.c:1' works as expected.
+   start_subfile will ensure that this happens provided that we pass the
+   concatenation of files.files[1].dir and files.files[1].name as the
+   subfile's name.  */
+
+static void
+dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
+		      const char *dirname)
+{
+  gdb::unique_xmalloc_ptr<char> copy;
+
+  /* In order not to lose the line information directory,
+     we concatenate it to the filename when it makes sense.
+     Note that the Dwarf3 standard says (speaking of filenames in line
+     information): ``The directory index is ignored for file names
+     that represent full path names''.  Thus ignoring dirname in the
+     `else' branch below isn't an issue.  */
+
+  if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
+    {
+      copy.reset (concat (dirname, SLASH_STRING, filename, (char *) NULL));
+      filename = copy.get ();
+    }
+
+  cu->get_builder ()->start_subfile (filename);
+}
+
+/* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
+   buildsym_compunit constructor.  */
+
+struct compunit_symtab *
+dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
+			 CORE_ADDR low_pc)
+{
+  gdb_assert (m_builder == nullptr);
+
+  m_builder.reset (new struct buildsym_compunit
+		   (this->per_objfile->objfile,
+		    name, comp_dir, language, low_pc));
+
+  list_in_scope = get_builder ()->get_file_symbols ();
+
+  get_builder ()->record_debugformat ("DWARF 2");
+  get_builder ()->record_producer (producer);
+
+  processing_has_namespace_info = false;
+
+  return get_builder ()->get_compunit_symtab ();
+}
+
+static void
+var_decode_location (struct attribute *attr, struct symbol *sym,
+		     struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  struct comp_unit_head *cu_header = &cu->header;
+
+  /* NOTE drow/2003-01-30: There used to be a comment and some special
+     code here to turn a symbol with DW_AT_external and a
+     SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
+     necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
+     with some versions of binutils) where shared libraries could have
+     relocations against symbols in their debug information - the
+     minimal symbol would have the right address, but the debug info
+     would not.  It's no longer necessary, because we will explicitly
+     apply relocations when we read in the debug information now.  */
+
+  /* A DW_AT_location attribute with no contents indicates that a
+     variable has been optimized away.  */
+  if (attr->form_is_block () && DW_BLOCK (attr)->size == 0)
+    {
+      SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
+      return;
+    }
+
+  /* Handle one degenerate form of location expression specially, to
+     preserve GDB's previous behavior when section offsets are
+     specified.  If this is just a DW_OP_addr, DW_OP_addrx, or
+     DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC.  */
+
+  if (attr->form_is_block ()
+      && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
+	   && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
+	  || ((DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
+               || DW_BLOCK (attr)->data[0] == DW_OP_addrx)
+	      && (DW_BLOCK (attr)->size
+		  == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
+    {
+      unsigned int dummy;
+
+      if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
+	SET_SYMBOL_VALUE_ADDRESS
+	  (sym, cu->header.read_address (objfile->obfd,
+					 DW_BLOCK (attr)->data + 1,
+					 &dummy));
+      else
+	SET_SYMBOL_VALUE_ADDRESS
+	  (sym, read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1,
+					     &dummy));
+      SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
+      fixup_symbol_section (sym, objfile);
+      SET_SYMBOL_VALUE_ADDRESS
+	(sym,
+	 SYMBOL_VALUE_ADDRESS (sym)
+	 + objfile->section_offsets[SYMBOL_SECTION (sym)]);
+      return;
+    }
+
+  /* NOTE drow/2002-01-30: It might be worthwhile to have a static
+     expression evaluator, and use LOC_COMPUTED only when necessary
+     (i.e. when the value of a register or memory location is
+     referenced, or a thread-local block, etc.).  Then again, it might
+     not be worthwhile.  I'm assuming that it isn't unless performance
+     or memory numbers show me otherwise.  */
+
+  dwarf2_symbol_mark_computed (attr, sym, cu, 0);
+
+  if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
+    cu->has_loclist = true;
+}
+
+/* Given a pointer to a DWARF information entry, figure out if we need
+   to make a symbol table entry for it, and if so, create a new entry
+   and return a pointer to it.
+   If TYPE is NULL, determine symbol type from the die, otherwise
+   used the passed type.
+   If SPACE is not NULL, use it to hold the new symbol.  If it is
+   NULL, allocate a new symbol on the objfile's obstack.  */
+
+static struct symbol *
+new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
+	    struct symbol *space)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct gdbarch *gdbarch = objfile->arch ();
+  struct symbol *sym = NULL;
+  const char *name;
+  struct attribute *attr = NULL;
+  struct attribute *attr2 = NULL;
+  CORE_ADDR baseaddr;
+  struct pending **list_to_add = NULL;
+
+  int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
+
+  baseaddr = objfile->text_section_offset ();
+
+  name = dwarf2_name (die, cu);
+  if (name)
+    {
+      int suppress_add = 0;
+
+      if (space)
+	sym = space;
+      else
+	sym = new (&objfile->objfile_obstack) symbol;
+      OBJSTAT (objfile, n_syms++);
+
+      /* Cache this symbol's name and the name's demangled form (if any).  */
+      sym->set_language (cu->language, &objfile->objfile_obstack);
+      /* Fortran does not have mangling standard and the mangling does differ
+	 between gfortran, iFort etc.  */
+      const char *physname
+	= (cu->language == language_fortran
+	   ? dwarf2_full_name (name, die, cu)
+	   : dwarf2_physname (name, die, cu));
+      const char *linkagename = dw2_linkage_name (die, cu);
+
+      if (linkagename == nullptr || cu->language == language_ada)
+	sym->set_linkage_name (physname);
+      else
+	{
+	  sym->set_demangled_name (physname, &objfile->objfile_obstack);
+	  sym->set_linkage_name (linkagename);
+	}
+
+      /* Default assumptions.
+         Use the passed type or decode it from the die.  */
+      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
+      SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
+      if (type != NULL)
+	SYMBOL_TYPE (sym) = type;
+      else
+	SYMBOL_TYPE (sym) = die_type (die, cu);
+      attr = dwarf2_attr (die,
+			  inlined_func ? DW_AT_call_line : DW_AT_decl_line,
+			  cu);
+      if (attr != nullptr)
+	{
+	  SYMBOL_LINE (sym) = DW_UNSND (attr);
+	}
+
+      attr = dwarf2_attr (die,
+			  inlined_func ? DW_AT_call_file : DW_AT_decl_file,
+			  cu);
+      if (attr != nullptr)
+	{
+	  file_name_index file_index = (file_name_index) DW_UNSND (attr);
+	  struct file_entry *fe;
+
+	  if (cu->line_header != NULL)
+	    fe = cu->line_header->file_name_at (file_index);
+	  else
+	    fe = NULL;
+
+	  if (fe == NULL)
+	    complaint (_("file index out of range"));
+	  else
+	    symbol_set_symtab (sym, fe->symtab);
+	}
+
+      switch (die->tag)
+	{
+	case DW_TAG_label:
+	  attr = dwarf2_attr (die, DW_AT_low_pc, cu);
+	  if (attr != nullptr)
+	    {
+	      CORE_ADDR addr;
+
+	      addr = attr->value_as_address ();
+	      addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
+	      SET_SYMBOL_VALUE_ADDRESS (sym, addr);
+	      SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
+	    }
+	  else
+	    SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
+	  SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
+	  SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
+	  add_symbol_to_list (sym, cu->list_in_scope);
+	  break;
+	case DW_TAG_subprogram:
+	  /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
+	     finish_block.  */
+	  SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
+	  attr2 = dwarf2_attr (die, DW_AT_external, cu);
+	  if ((attr2 && (DW_UNSND (attr2) != 0))
+	      || cu->language == language_ada
+	      || cu->language == language_fortran)
+	    {
+              /* Subprograms marked external are stored as a global symbol.
+                 Ada and Fortran subprograms, whether marked external or
+                 not, are always stored as a global symbol, because we want
+                 to be able to access them globally.  For instance, we want
+                 to be able to break on a nested subprogram without having
+                 to specify the context.  */
+	      list_to_add = cu->get_builder ()->get_global_symbols ();
+	    }
+	  else
+	    {
+	      list_to_add = cu->list_in_scope;
+	    }
+	  break;
+	case DW_TAG_inlined_subroutine:
+	  /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
+	     finish_block.  */
+	  SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
+	  SYMBOL_INLINED (sym) = 1;
+	  list_to_add = cu->list_in_scope;
+	  break;
+	case DW_TAG_template_value_param:
+	  suppress_add = 1;
+	  /* Fall through.  */
+	case DW_TAG_constant:
+	case DW_TAG_variable:
+	case DW_TAG_member:
+	  /* Compilation with minimal debug info may result in
+	     variables with missing type entries.  Change the
+	     misleading `void' type to something sensible.  */
+	  if (SYMBOL_TYPE (sym)->code () == TYPE_CODE_VOID)
+	    SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
+
+	  attr = dwarf2_attr (die, DW_AT_const_value, cu);
+	  /* In the case of DW_TAG_member, we should only be called for
+	     static const members.  */
+	  if (die->tag == DW_TAG_member)
+	    {
+	      /* dwarf2_add_field uses die_is_declaration,
+		 so we do the same.  */
+	      gdb_assert (die_is_declaration (die, cu));
+	      gdb_assert (attr);
+	    }
+	  if (attr != nullptr)
+	    {
+	      dwarf2_const_value (attr, sym, cu);
+	      attr2 = dwarf2_attr (die, DW_AT_external, cu);
+	      if (!suppress_add)
+		{
+		  if (attr2 && (DW_UNSND (attr2) != 0))
+		    list_to_add = cu->get_builder ()->get_global_symbols ();
+		  else
+		    list_to_add = cu->list_in_scope;
+		}
+	      break;
+	    }
+	  attr = dwarf2_attr (die, DW_AT_location, cu);
+	  if (attr != nullptr)
+	    {
+	      var_decode_location (attr, sym, cu);
+	      attr2 = dwarf2_attr (die, DW_AT_external, cu);
+
+	      /* Fortran explicitly imports any global symbols to the local
+		 scope by DW_TAG_common_block.  */
+	      if (cu->language == language_fortran && die->parent
+		  && die->parent->tag == DW_TAG_common_block)
+		attr2 = NULL;
+
+	      if (SYMBOL_CLASS (sym) == LOC_STATIC
+		  && SYMBOL_VALUE_ADDRESS (sym) == 0
+		  && !per_objfile->per_bfd->has_section_at_zero)
+		{
+		  /* When a static variable is eliminated by the linker,
+		     the corresponding debug information is not stripped
+		     out, but the variable address is set to null;
+		     do not add such variables into symbol table.  */
+		}
+	      else if (attr2 && (DW_UNSND (attr2) != 0))
+		{
+		  if (SYMBOL_CLASS (sym) == LOC_STATIC
+		      && (objfile->flags & OBJF_MAINLINE) == 0
+		      && per_objfile->per_bfd->can_copy)
+		    {
+		      /* A global static variable might be subject to
+			 copy relocation.  We first check for a local
+			 minsym, though, because maybe the symbol was
+			 marked hidden, in which case this would not
+			 apply.  */
+		      bound_minimal_symbol found
+			= (lookup_minimal_symbol_linkage
+			   (sym->linkage_name (), objfile));
+		      if (found.minsym != nullptr)
+			sym->maybe_copied = 1;
+		    }
+
+		  /* A variable with DW_AT_external is never static,
+		     but it may be block-scoped.  */
+		  list_to_add
+		    = ((cu->list_in_scope
+			== cu->get_builder ()->get_file_symbols ())
+		       ? cu->get_builder ()->get_global_symbols ()
+		       : cu->list_in_scope);
+		}
+	      else
+		list_to_add = cu->list_in_scope;
+	    }
+	  else
+	    {
+	      /* We do not know the address of this symbol.
+	         If it is an external symbol and we have type information
+	         for it, enter the symbol as a LOC_UNRESOLVED symbol.
+	         The address of the variable will then be determined from
+	         the minimal symbol table whenever the variable is
+	         referenced.  */
+	      attr2 = dwarf2_attr (die, DW_AT_external, cu);
+
+	      /* Fortran explicitly imports any global symbols to the local
+		 scope by DW_TAG_common_block.  */
+	      if (cu->language == language_fortran && die->parent
+		  && die->parent->tag == DW_TAG_common_block)
+		{
+		  /* SYMBOL_CLASS doesn't matter here because
+		     read_common_block is going to reset it.  */
+		  if (!suppress_add)
+		    list_to_add = cu->list_in_scope;
+		}
+	      else if (attr2 && (DW_UNSND (attr2) != 0)
+		       && dwarf2_attr (die, DW_AT_type, cu) != NULL)
+		{
+		  /* A variable with DW_AT_external is never static, but it
+		     may be block-scoped.  */
+		  list_to_add
+		    = ((cu->list_in_scope
+			== cu->get_builder ()->get_file_symbols ())
+		       ? cu->get_builder ()->get_global_symbols ()
+		       : cu->list_in_scope);
+
+		  SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
+		}
+	      else if (!die_is_declaration (die, cu))
+		{
+		  /* Use the default LOC_OPTIMIZED_OUT class.  */
+		  gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
+		  if (!suppress_add)
+		    list_to_add = cu->list_in_scope;
+		}
+	    }
+	  break;
+	case DW_TAG_formal_parameter:
+	  {
+	    /* If we are inside a function, mark this as an argument.  If
+	       not, we might be looking at an argument to an inlined function
+	       when we do not have enough information to show inlined frames;
+	       pretend it's a local variable in that case so that the user can
+	       still see it.  */
+	    struct context_stack *curr
+	      = cu->get_builder ()->get_current_context_stack ();
+	    if (curr != nullptr && curr->name != nullptr)
+	      SYMBOL_IS_ARGUMENT (sym) = 1;
+	    attr = dwarf2_attr (die, DW_AT_location, cu);
+	    if (attr != nullptr)
+	      {
+		var_decode_location (attr, sym, cu);
+	      }
+	    attr = dwarf2_attr (die, DW_AT_const_value, cu);
+	    if (attr != nullptr)
+	      {
+		dwarf2_const_value (attr, sym, cu);
+	      }
+
+	    list_to_add = cu->list_in_scope;
+	  }
+	  break;
+	case DW_TAG_unspecified_parameters:
+	  /* From varargs functions; gdb doesn't seem to have any
+	     interest in this information, so just ignore it for now.
+	     (FIXME?) */
+	  break;
+	case DW_TAG_template_type_param:
+	  suppress_add = 1;
+	  /* Fall through.  */
+	case DW_TAG_class_type:
+	case DW_TAG_interface_type:
+	case DW_TAG_structure_type:
+	case DW_TAG_union_type:
+	case DW_TAG_set_type:
+	case DW_TAG_enumeration_type:
+	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
+	  SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
+
+	  {
+	    /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
+	       really ever be static objects: otherwise, if you try
+	       to, say, break of a class's method and you're in a file
+	       which doesn't mention that class, it won't work unless
+	       the check for all static symbols in lookup_symbol_aux
+	       saves you.  See the OtherFileClass tests in
+	       gdb.c++/namespace.exp.  */
+
+	    if (!suppress_add)
+	      {
+		buildsym_compunit *builder = cu->get_builder ();
+		list_to_add
+		  = (cu->list_in_scope == builder->get_file_symbols ()
+		     && cu->language == language_cplus
+		     ? builder->get_global_symbols ()
+		     : cu->list_in_scope);
+
+		/* The semantics of C++ state that "struct foo {
+		   ... }" also defines a typedef for "foo".  */
+		if (cu->language == language_cplus
+		    || cu->language == language_ada
+		    || cu->language == language_d
+		    || cu->language == language_rust)
+		  {
+		    /* The symbol's name is already allocated along
+		       with this objfile, so we don't need to
+		       duplicate it for the type.  */
+		    if (SYMBOL_TYPE (sym)->name () == 0)
+		      SYMBOL_TYPE (sym)->set_name (sym->search_name ());
+		  }
+	      }
+	  }
+	  break;
+	case DW_TAG_typedef:
+	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
+	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
+	  list_to_add = cu->list_in_scope;
+	  break;
+	case DW_TAG_base_type:
+        case DW_TAG_subrange_type:
+	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
+	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
+	  list_to_add = cu->list_in_scope;
+	  break;
+	case DW_TAG_enumerator:
+	  attr = dwarf2_attr (die, DW_AT_const_value, cu);
+	  if (attr != nullptr)
+	    {
+	      dwarf2_const_value (attr, sym, cu);
+	    }
+	  {
+	    /* NOTE: carlton/2003-11-10: See comment above in the
+	       DW_TAG_class_type, etc. block.  */
+
+	    list_to_add
+	      = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
+		 && cu->language == language_cplus
+		 ? cu->get_builder ()->get_global_symbols ()
+		 : cu->list_in_scope);
+	  }
+	  break;
+	case DW_TAG_imported_declaration:
+	case DW_TAG_namespace:
+	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
+	  list_to_add = cu->get_builder ()->get_global_symbols ();
+	  break;
+	case DW_TAG_module:
+	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
+	  SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
+	  list_to_add = cu->get_builder ()->get_global_symbols ();
+	  break;
+	case DW_TAG_common_block:
+	  SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
+	  SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
+	  add_symbol_to_list (sym, cu->list_in_scope);
+	  break;
+	default:
+	  /* Not a tag we recognize.  Hopefully we aren't processing
+	     trash data, but since we must specifically ignore things
+	     we don't recognize, there is nothing else we should do at
+	     this point.  */
+	  complaint (_("unsupported tag: '%s'"),
+		     dwarf_tag_name (die->tag));
+	  break;
+	}
+
+      if (suppress_add)
+	{
+	  sym->hash_next = objfile->template_symbols;
+	  objfile->template_symbols = sym;
+	  list_to_add = NULL;
+	}
+
+      if (list_to_add != NULL)
+	add_symbol_to_list (sym, list_to_add);
+
+      /* For the benefit of old versions of GCC, check for anonymous
+	 namespaces based on the demangled name.  */
+      if (!cu->processing_has_namespace_info
+	  && cu->language == language_cplus)
+	cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
+    }
+  return (sym);
+}
+
+/* Given an attr with a DW_FORM_dataN value in host byte order,
+   zero-extend it as appropriate for the symbol's type.  The DWARF
+   standard (v4) is not entirely clear about the meaning of using
+   DW_FORM_dataN for a constant with a signed type, where the type is
+   wider than the data.  The conclusion of a discussion on the DWARF
+   list was that this is unspecified.  We choose to always zero-extend
+   because that is the interpretation long in use by GCC.  */
+
+static gdb_byte *
+dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
+			 struct dwarf2_cu *cu, LONGEST *value, int bits)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
+				BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
+  LONGEST l = DW_UNSND (attr);
+
+  if (bits < sizeof (*value) * 8)
+    {
+      l &= ((LONGEST) 1 << bits) - 1;
+      *value = l;
+    }
+  else if (bits == sizeof (*value) * 8)
+    *value = l;
+  else
+    {
+      gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
+      store_unsigned_integer (bytes, bits / 8, byte_order, l);
+      return bytes;
+    }
+
+  return NULL;
+}
+
+/* Read a constant value from an attribute.  Either set *VALUE, or if
+   the value does not fit in *VALUE, set *BYTES - either already
+   allocated on the objfile obstack, or newly allocated on OBSTACK,
+   or, set *BATON, if we translated the constant to a location
+   expression.  */
+
+static void
+dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
+			 const char *name, struct obstack *obstack,
+			 struct dwarf2_cu *cu,
+			 LONGEST *value, const gdb_byte **bytes,
+			 struct dwarf2_locexpr_baton **baton)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct comp_unit_head *cu_header = &cu->header;
+  struct dwarf_block *blk;
+  enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
+				BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
+
+  *value = 0;
+  *bytes = NULL;
+  *baton = NULL;
+
+  switch (attr->form)
+    {
+    case DW_FORM_addr:
+    case DW_FORM_addrx:
+    case DW_FORM_GNU_addr_index:
+      {
+	gdb_byte *data;
+
+	if (TYPE_LENGTH (type) != cu_header->addr_size)
+	  dwarf2_const_value_length_mismatch_complaint (name,
+							cu_header->addr_size,
+							TYPE_LENGTH (type));
+	/* Symbols of this form are reasonably rare, so we just
+	   piggyback on the existing location code rather than writing
+	   a new implementation of symbol_computed_ops.  */
+	*baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
+	(*baton)->per_objfile = per_objfile;
+	(*baton)->per_cu = cu->per_cu;
+	gdb_assert ((*baton)->per_cu);
+
+	(*baton)->size = 2 + cu_header->addr_size;
+	data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
+	(*baton)->data = data;
+
+	data[0] = DW_OP_addr;
+	store_unsigned_integer (&data[1], cu_header->addr_size,
+				byte_order, DW_ADDR (attr));
+	data[cu_header->addr_size + 1] = DW_OP_stack_value;
+      }
+      break;
+    case DW_FORM_string:
+    case DW_FORM_strp:
+    case DW_FORM_strx:
+    case DW_FORM_GNU_str_index:
+    case DW_FORM_GNU_strp_alt:
+      /* DW_STRING is already allocated on the objfile obstack, point
+	 directly to it.  */
+      *bytes = (const gdb_byte *) DW_STRING (attr);
+      break;
+    case DW_FORM_block1:
+    case DW_FORM_block2:
+    case DW_FORM_block4:
+    case DW_FORM_block:
+    case DW_FORM_exprloc:
+    case DW_FORM_data16:
+      blk = DW_BLOCK (attr);
+      if (TYPE_LENGTH (type) != blk->size)
+	dwarf2_const_value_length_mismatch_complaint (name, blk->size,
+						      TYPE_LENGTH (type));
+      *bytes = blk->data;
+      break;
+
+      /* The DW_AT_const_value attributes are supposed to carry the
+	 symbol's value "represented as it would be on the target
+	 architecture."  By the time we get here, it's already been
+	 converted to host endianness, so we just need to sign- or
+	 zero-extend it as appropriate.  */
+    case DW_FORM_data1:
+      *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
+      break;
+    case DW_FORM_data2:
+      *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
+      break;
+    case DW_FORM_data4:
+      *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
+      break;
+    case DW_FORM_data8:
+      *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
+      break;
+
+    case DW_FORM_sdata:
+    case DW_FORM_implicit_const:
+      *value = DW_SND (attr);
+      break;
+
+    case DW_FORM_udata:
+      *value = DW_UNSND (attr);
+      break;
+
+    default:
+      complaint (_("unsupported const value attribute form: '%s'"),
+		 dwarf_form_name (attr->form));
+      *value = 0;
+      break;
+    }
+}
+
+
+/* Copy constant value from an attribute to a symbol.  */
+
+static void
+dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
+		    struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  LONGEST value;
+  const gdb_byte *bytes;
+  struct dwarf2_locexpr_baton *baton;
+
+  dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
+			   sym->print_name (),
+			   &objfile->objfile_obstack, cu,
+			   &value, &bytes, &baton);
+
+  if (baton != NULL)
+    {
+      SYMBOL_LOCATION_BATON (sym) = baton;
+      SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
+    }
+  else if (bytes != NULL)
+     {
+      SYMBOL_VALUE_BYTES (sym) = bytes;
+      SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
+    }
+  else
+    {
+      SYMBOL_VALUE (sym) = value;
+      SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
+    }
+}
+
+/* Return the type of the die in question using its DW_AT_type attribute.  */
+
+static struct type *
+die_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *type_attr;
+
+  type_attr = dwarf2_attr (die, DW_AT_type, cu);
+  if (!type_attr)
+    {
+      struct objfile *objfile = cu->per_objfile->objfile;
+      /* A missing DW_AT_type represents a void type.  */
+      return objfile_type (objfile)->builtin_void;
+    }
+
+  return lookup_die_type (die, type_attr, cu);
+}
+
+/* True iff CU's producer generates GNAT Ada auxiliary information
+   that allows to find parallel types through that information instead
+   of having to do expensive parallel lookups by type name.  */
+
+static int
+need_gnat_info (struct dwarf2_cu *cu)
+{
+  /* Assume that the Ada compiler was GNAT, which always produces
+     the auxiliary information.  */
+  return (cu->language == language_ada);
+}
+
+/* Return the auxiliary type of the die in question using its
+   DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
+   attribute is not present.  */
+
+static struct type *
+die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *type_attr;
+
+  type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
+  if (!type_attr)
+    return NULL;
+
+  return lookup_die_type (die, type_attr, cu);
+}
+
+/* If DIE has a descriptive_type attribute, then set the TYPE's
+   descriptive type accordingly.  */
+
+static void
+set_descriptive_type (struct type *type, struct die_info *die,
+		      struct dwarf2_cu *cu)
+{
+  struct type *descriptive_type = die_descriptive_type (die, cu);
+
+  if (descriptive_type)
+    {
+      ALLOCATE_GNAT_AUX_TYPE (type);
+      TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
+    }
+}
+
+/* Return the containing type of the die in question using its
+   DW_AT_containing_type attribute.  */
+
+static struct type *
+die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *type_attr;
+  struct objfile *objfile = cu->per_objfile->objfile;
+
+  type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
+  if (!type_attr)
+    error (_("Dwarf Error: Problem turning containing type into gdb type "
+	     "[in module %s]"), objfile_name (objfile));
+
+  return lookup_die_type (die, type_attr, cu);
+}
+
+/* Return an error marker type to use for the ill formed type in DIE/CU.  */
+
+static struct type *
+build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  char *saved;
+
+  std::string message
+    = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
+		     objfile_name (objfile),
+		     sect_offset_str (cu->header.sect_off),
+		     sect_offset_str (die->sect_off));
+  saved = obstack_strdup (&objfile->objfile_obstack, message);
+
+  return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
+}
+
+/* Look up the type of DIE in CU using its type attribute ATTR.
+   ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
+   DW_AT_containing_type.
+   If there is no type substitute an error marker.  */
+
+static struct type *
+lookup_die_type (struct die_info *die, const struct attribute *attr,
+		 struct dwarf2_cu *cu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct type *this_type;
+
+  gdb_assert (attr->name == DW_AT_type
+	      || attr->name == DW_AT_GNAT_descriptive_type
+	      || attr->name == DW_AT_containing_type);
+
+  /* First see if we have it cached.  */
+
+  if (attr->form == DW_FORM_GNU_ref_alt)
+    {
+      struct dwarf2_per_cu_data *per_cu;
+      sect_offset sect_off = attr->get_ref_die_offset ();
+
+      per_cu = dwarf2_find_containing_comp_unit (sect_off, 1, per_objfile);
+      this_type = get_die_type_at_offset (sect_off, per_cu, per_objfile);
+    }
+  else if (attr->form_is_ref ())
+    {
+      sect_offset sect_off = attr->get_ref_die_offset ();
+
+      this_type = get_die_type_at_offset (sect_off, cu->per_cu, per_objfile);
+    }
+  else if (attr->form == DW_FORM_ref_sig8)
+    {
+      ULONGEST signature = DW_SIGNATURE (attr);
+
+      return get_signatured_type (die, signature, cu);
+    }
+  else
+    {
+      complaint (_("Dwarf Error: Bad type attribute %s in DIE"
+		   " at %s [in module %s]"),
+		 dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
+		 objfile_name (objfile));
+      return build_error_marker_type (cu, die);
+    }
+
+  /* If not cached we need to read it in.  */
+
+  if (this_type == NULL)
+    {
+      struct die_info *type_die = NULL;
+      struct dwarf2_cu *type_cu = cu;
+
+      if (attr->form_is_ref ())
+	type_die = follow_die_ref (die, attr, &type_cu);
+      if (type_die == NULL)
+	return build_error_marker_type (cu, die);
+      /* If we find the type now, it's probably because the type came
+	 from an inter-CU reference and the type's CU got expanded before
+	 ours.  */
+      this_type = read_type_die (type_die, type_cu);
+    }
+
+  /* If we still don't have a type use an error marker.  */
+
+  if (this_type == NULL)
+    return build_error_marker_type (cu, die);
+
+  return this_type;
+}
+
+/* Return the type in DIE, CU.
+   Returns NULL for invalid types.
+
+   This first does a lookup in die_type_hash,
+   and only reads the die in if necessary.
+
+   NOTE: This can be called when reading in partial or full symbols.  */
+
+static struct type *
+read_type_die (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *this_type;
+
+  this_type = get_die_type (die, cu);
+  if (this_type)
+    return this_type;
+
+  return read_type_die_1 (die, cu);
+}
+
+/* Read the type in DIE, CU.
+   Returns NULL for invalid types.  */
+
+static struct type *
+read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct type *this_type = NULL;
+
+  switch (die->tag)
+    {
+    case DW_TAG_class_type:
+    case DW_TAG_interface_type:
+    case DW_TAG_structure_type:
+    case DW_TAG_union_type:
+      this_type = read_structure_type (die, cu);
+      break;
+    case DW_TAG_enumeration_type:
+      this_type = read_enumeration_type (die, cu);
+      break;
+    case DW_TAG_subprogram:
+    case DW_TAG_subroutine_type:
+    case DW_TAG_inlined_subroutine:
+      this_type = read_subroutine_type (die, cu);
+      break;
+    case DW_TAG_array_type:
+      this_type = read_array_type (die, cu);
+      break;
+    case DW_TAG_set_type:
+      this_type = read_set_type (die, cu);
+      break;
+    case DW_TAG_pointer_type:
+      this_type = read_tag_pointer_type (die, cu);
+      break;
+    case DW_TAG_ptr_to_member_type:
+      this_type = read_tag_ptr_to_member_type (die, cu);
+      break;
+    case DW_TAG_reference_type:
+      this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
+      break;
+    case DW_TAG_rvalue_reference_type:
+      this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
+      break;
+    case DW_TAG_const_type:
+      this_type = read_tag_const_type (die, cu);
+      break;
+    case DW_TAG_volatile_type:
+      this_type = read_tag_volatile_type (die, cu);
+      break;
+    case DW_TAG_restrict_type:
+      this_type = read_tag_restrict_type (die, cu);
+      break;
+    case DW_TAG_string_type:
+      this_type = read_tag_string_type (die, cu);
+      break;
+    case DW_TAG_typedef:
+      this_type = read_typedef (die, cu);
+      break;
+    case DW_TAG_subrange_type:
+      this_type = read_subrange_type (die, cu);
+      break;
+    case DW_TAG_base_type:
+      this_type = read_base_type (die, cu);
+      break;
+    case DW_TAG_unspecified_type:
+      this_type = read_unspecified_type (die, cu);
+      break;
+    case DW_TAG_namespace:
+      this_type = read_namespace_type (die, cu);
+      break;
+    case DW_TAG_module:
+      this_type = read_module_type (die, cu);
+      break;
+    case DW_TAG_atomic_type:
+      this_type = read_tag_atomic_type (die, cu);
+      break;
+    default:
+      complaint (_("unexpected tag in read_type_die: '%s'"),
+		 dwarf_tag_name (die->tag));
+      break;
+    }
+
+  return this_type;
+}
+
+/* See if we can figure out if the class lives in a namespace.  We do
+   this by looking for a member function; its demangled name will
+   contain namespace info, if there is any.
+   Return the computed name or NULL.
+   Space for the result is allocated on the objfile's obstack.
+   This is the full-die version of guess_partial_die_structure_name.
+   In this case we know DIE has no useful parent.  */
+
+static const char *
+guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct die_info *spec_die;
+  struct dwarf2_cu *spec_cu;
+  struct die_info *child;
+  struct objfile *objfile = cu->per_objfile->objfile;
+
+  spec_cu = cu;
+  spec_die = die_specification (die, &spec_cu);
+  if (spec_die != NULL)
+    {
+      die = spec_die;
+      cu = spec_cu;
+    }
+
+  for (child = die->child;
+       child != NULL;
+       child = child->sibling)
+    {
+      if (child->tag == DW_TAG_subprogram)
+	{
+	  const char *linkage_name = dw2_linkage_name (child, cu);
+
+	  if (linkage_name != NULL)
+	    {
+	      gdb::unique_xmalloc_ptr<char> actual_name
+		(cu->language_defn->class_name_from_physname (linkage_name));
+	      const char *name = NULL;
+
+	      if (actual_name != NULL)
+		{
+		  const char *die_name = dwarf2_name (die, cu);
+
+		  if (die_name != NULL
+		      && strcmp (die_name, actual_name.get ()) != 0)
+		    {
+		      /* Strip off the class name from the full name.
+			 We want the prefix.  */
+		      int die_name_len = strlen (die_name);
+		      int actual_name_len = strlen (actual_name.get ());
+		      const char *ptr = actual_name.get ();
+
+		      /* Test for '::' as a sanity check.  */
+		      if (actual_name_len > die_name_len + 2
+			  && ptr[actual_name_len - die_name_len - 1] == ':')
+			name = obstack_strndup (
+			  &objfile->per_bfd->storage_obstack,
+			  ptr, actual_name_len - die_name_len - 2);
+		    }
+		}
+	      return name;
+	    }
+	}
+    }
+
+  return NULL;
+}
+
+/* GCC might emit a nameless typedef that has a linkage name.  Determine the
+   prefix part in such case.  See
+   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
+
+static const char *
+anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+  const char *base;
+
+  if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
+      && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
+    return NULL;
+
+  if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
+    return NULL;
+
+  attr = dw2_linkage_name_attr (die, cu);
+  if (attr == NULL || DW_STRING (attr) == NULL)
+    return NULL;
+
+  /* dwarf2_name had to be already called.  */
+  gdb_assert (DW_STRING_IS_CANONICAL (attr));
+
+  /* Strip the base name, keep any leading namespaces/classes.  */
+  base = strrchr (DW_STRING (attr), ':');
+  if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
+    return "";
+
+  struct objfile *objfile = cu->per_objfile->objfile;
+  return obstack_strndup (&objfile->per_bfd->storage_obstack,
+			  DW_STRING (attr),
+			  &base[-1] - DW_STRING (attr));
+}
+
+/* Return the name of the namespace/class that DIE is defined within,
+   or "" if we can't tell.  The caller should not xfree the result.
+
+   For example, if we're within the method foo() in the following
+   code:
+
+   namespace N {
+     class C {
+       void foo () {
+       }
+     };
+   }
+
+   then determine_prefix on foo's die will return "N::C".  */
+
+static const char *
+determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct die_info *parent, *spec_die;
+  struct dwarf2_cu *spec_cu;
+  struct type *parent_type;
+  const char *retval;
+
+  if (cu->language != language_cplus
+      && cu->language != language_fortran && cu->language != language_d
+      && cu->language != language_rust)
+    return "";
+
+  retval = anonymous_struct_prefix (die, cu);
+  if (retval)
+    return retval;
+
+  /* We have to be careful in the presence of DW_AT_specification.
+     For example, with GCC 3.4, given the code
+
+     namespace N {
+       void foo() {
+	 // Definition of N::foo.
+       }
+     }
+
+     then we'll have a tree of DIEs like this:
+
+     1: DW_TAG_compile_unit
+       2: DW_TAG_namespace        // N
+	 3: DW_TAG_subprogram     // declaration of N::foo
+       4: DW_TAG_subprogram       // definition of N::foo
+	    DW_AT_specification   // refers to die #3
+
+     Thus, when processing die #4, we have to pretend that we're in
+     the context of its DW_AT_specification, namely the contex of die
+     #3.  */
+  spec_cu = cu;
+  spec_die = die_specification (die, &spec_cu);
+  if (spec_die == NULL)
+    parent = die->parent;
+  else
+    {
+      parent = spec_die->parent;
+      cu = spec_cu;
+    }
+
+  if (parent == NULL)
+    return "";
+  else if (parent->building_fullname)
+    {
+      const char *name;
+      const char *parent_name;
+
+      /* It has been seen on RealView 2.2 built binaries,
+	 DW_TAG_template_type_param types actually _defined_ as
+	 children of the parent class:
+
+	 enum E {};
+	 template class <class Enum> Class{};
+	 Class<enum E> class_e;
+
+         1: DW_TAG_class_type (Class)
+           2: DW_TAG_enumeration_type (E)
+             3: DW_TAG_enumerator (enum1:0)
+             3: DW_TAG_enumerator (enum2:1)
+             ...
+           2: DW_TAG_template_type_param
+              DW_AT_type  DW_FORM_ref_udata (E)
+
+	 Besides being broken debug info, it can put GDB into an
+	 infinite loop.  Consider:
+
+	 When we're building the full name for Class<E>, we'll start
+	 at Class, and go look over its template type parameters,
+	 finding E.  We'll then try to build the full name of E, and
+	 reach here.  We're now trying to build the full name of E,
+	 and look over the parent DIE for containing scope.  In the
+	 broken case, if we followed the parent DIE of E, we'd again
+	 find Class, and once again go look at its template type
+	 arguments, etc., etc.  Simply don't consider such parent die
+	 as source-level parent of this die (it can't be, the language
+	 doesn't allow it), and break the loop here.  */
+      name = dwarf2_name (die, cu);
+      parent_name = dwarf2_name (parent, cu);
+      complaint (_("template param type '%s' defined within parent '%s'"),
+		 name ? name : "<unknown>",
+		 parent_name ? parent_name : "<unknown>");
+      return "";
+    }
+  else
+    switch (parent->tag)
+      {
+      case DW_TAG_namespace:
+	parent_type = read_type_die (parent, cu);
+	/* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
+	   DW_TAG_namespace DIEs with a name of "::" for the global namespace.
+	   Work around this problem here.  */
+	if (cu->language == language_cplus
+	    && strcmp (parent_type->name (), "::") == 0)
+	  return "";
+	/* We give a name to even anonymous namespaces.  */
+	return parent_type->name ();
+      case DW_TAG_class_type:
+      case DW_TAG_interface_type:
+      case DW_TAG_structure_type:
+      case DW_TAG_union_type:
+      case DW_TAG_module:
+	parent_type = read_type_die (parent, cu);
+	if (parent_type->name () != NULL)
+	  return parent_type->name ();
+	else
+	  /* An anonymous structure is only allowed non-static data
+	     members; no typedefs, no member functions, et cetera.
+	     So it does not need a prefix.  */
+	  return "";
+      case DW_TAG_compile_unit:
+      case DW_TAG_partial_unit:
+	/* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
+	if (cu->language == language_cplus
+	    && !per_objfile->per_bfd->types.empty ()
+	    && die->child != NULL
+	    && (die->tag == DW_TAG_class_type
+		|| die->tag == DW_TAG_structure_type
+		|| die->tag == DW_TAG_union_type))
+	  {
+	    const char *name = guess_full_die_structure_name (die, cu);
+	    if (name != NULL)
+	      return name;
+	  }
+	return "";
+      case DW_TAG_subprogram:
+	/* Nested subroutines in Fortran get a prefix with the name
+	   of the parent's subroutine.  */
+	if (cu->language == language_fortran)
+	  {
+	    if ((die->tag ==  DW_TAG_subprogram)
+		&& (dwarf2_name (parent, cu) != NULL))
+	      return dwarf2_name (parent, cu);
+	  }
+	return determine_prefix (parent, cu);
+      case DW_TAG_enumeration_type:
+	parent_type = read_type_die (parent, cu);
+	if (TYPE_DECLARED_CLASS (parent_type))
+	  {
+	    if (parent_type->name () != NULL)
+	      return parent_type->name ();
+	    return "";
+	  }
+	/* Fall through.  */
+      default:
+	return determine_prefix (parent, cu);
+      }
+}
+
+/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
+   with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
+   simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
+   an obconcat, otherwise allocate storage for the result.  The CU argument is
+   used to determine the language and hence, the appropriate separator.  */
+
+#define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
+
+static char *
+typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
+                 int physname, struct dwarf2_cu *cu)
+{
+  const char *lead = "";
+  const char *sep;
+
+  if (suffix == NULL || suffix[0] == '\0'
+      || prefix == NULL || prefix[0] == '\0')
+    sep = "";
+  else if (cu->language == language_d)
+    {
+      /* For D, the 'main' function could be defined in any module, but it
+	 should never be prefixed.  */
+      if (strcmp (suffix, "D main") == 0)
+	{
+	  prefix = "";
+	  sep = "";
+	}
+      else
+	sep = ".";
+    }
+  else if (cu->language == language_fortran && physname)
+    {
+      /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
+	 DW_AT_MIPS_linkage_name is preferred and used instead.  */
+
+      lead = "__";
+      sep = "_MOD_";
+    }
+  else
+    sep = "::";
+
+  if (prefix == NULL)
+    prefix = "";
+  if (suffix == NULL)
+    suffix = "";
+
+  if (obs == NULL)
+    {
+      char *retval
+	= ((char *)
+	   xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
+
+      strcpy (retval, lead);
+      strcat (retval, prefix);
+      strcat (retval, sep);
+      strcat (retval, suffix);
+      return retval;
+    }
+  else
+    {
+      /* We have an obstack.  */
+      return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
+    }
+}
+
+/* Get name of a die, return NULL if not found.  */
+
+static const char *
+dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
+			  struct objfile *objfile)
+{
+  if (name && cu->language == language_cplus)
+    {
+      gdb::unique_xmalloc_ptr<char> canon_name
+	= cp_canonicalize_string (name);
+
+      if (canon_name != nullptr)
+	name = objfile->intern (canon_name.get ());
+    }
+
+  return name;
+}
+
+/* Get name of a die, return NULL if not found.
+   Anonymous namespaces are converted to their magic string.  */
+
+static const char *
+dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
+{
+  struct attribute *attr;
+  struct objfile *objfile = cu->per_objfile->objfile;
+
+  attr = dwarf2_attr (die, DW_AT_name, cu);
+  if ((!attr || !DW_STRING (attr))
+      && die->tag != DW_TAG_namespace
+      && die->tag != DW_TAG_class_type
+      && die->tag != DW_TAG_interface_type
+      && die->tag != DW_TAG_structure_type
+      && die->tag != DW_TAG_union_type)
+    return NULL;
+
+  switch (die->tag)
+    {
+    case DW_TAG_compile_unit:
+    case DW_TAG_partial_unit:
+      /* Compilation units have a DW_AT_name that is a filename, not
+	 a source language identifier.  */
+    case DW_TAG_enumeration_type:
+    case DW_TAG_enumerator:
+      /* These tags always have simple identifiers already; no need
+	 to canonicalize them.  */
+      return DW_STRING (attr);
+
+    case DW_TAG_namespace:
+      if (attr != NULL && DW_STRING (attr) != NULL)
+	return DW_STRING (attr);
+      return CP_ANONYMOUS_NAMESPACE_STR;
+
+    case DW_TAG_class_type:
+    case DW_TAG_interface_type:
+    case DW_TAG_structure_type:
+    case DW_TAG_union_type:
+      /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
+	 structures or unions.  These were of the form "._%d" in GCC 4.1,
+	 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
+	 and GCC 4.4.  We work around this problem by ignoring these.  */
+      if (attr && DW_STRING (attr)
+	  && (startswith (DW_STRING (attr), "._")
+	      || startswith (DW_STRING (attr), "<anonymous")))
+	return NULL;
+
+      /* GCC might emit a nameless typedef that has a linkage name.  See
+	 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
+      if (!attr || DW_STRING (attr) == NULL)
+	{
+	  attr = dw2_linkage_name_attr (die, cu);
+	  if (attr == NULL || DW_STRING (attr) == NULL)
+	    return NULL;
+
+	  /* Avoid demangling DW_STRING (attr) the second time on a second
+	     call for the same DIE.  */
+	  if (!DW_STRING_IS_CANONICAL (attr))
+	    {
+	      gdb::unique_xmalloc_ptr<char> demangled
+		(gdb_demangle (DW_STRING (attr), DMGL_TYPES));
+	      if (demangled == nullptr)
+		return nullptr;
+
+	      DW_STRING (attr) = objfile->intern (demangled.get ());
+	      DW_STRING_IS_CANONICAL (attr) = 1;
+	    }
+
+	  /* Strip any leading namespaces/classes, keep only the base name.
+	     DW_AT_name for named DIEs does not contain the prefixes.  */
+	  const char *base = strrchr (DW_STRING (attr), ':');
+	  if (base && base > DW_STRING (attr) && base[-1] == ':')
+	    return &base[1];
+	  else
+	    return DW_STRING (attr);
+	}
+      break;
+
+    default:
+      break;
+    }
+
+  if (!DW_STRING_IS_CANONICAL (attr))
+    {
+      DW_STRING (attr) = dwarf2_canonicalize_name (DW_STRING (attr), cu,
+						   objfile);
+      DW_STRING_IS_CANONICAL (attr) = 1;
+    }
+  return DW_STRING (attr);
+}
+
+/* Return the die that this die in an extension of, or NULL if there
+   is none.  *EXT_CU is the CU containing DIE on input, and the CU
+   containing the return value on output.  */
+
+static struct die_info *
+dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
+{
+  struct attribute *attr;
+
+  attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
+  if (attr == NULL)
+    return NULL;
+
+  return follow_die_ref (die, attr, ext_cu);
+}
+
+static void
+dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
+{
+  unsigned int i;
+
+  print_spaces (indent, f);
+  fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
+		      dwarf_tag_name (die->tag), die->abbrev,
+		      sect_offset_str (die->sect_off));
+
+  if (die->parent != NULL)
+    {
+      print_spaces (indent, f);
+      fprintf_unfiltered (f, "  parent at offset: %s\n",
+			  sect_offset_str (die->parent->sect_off));
+    }
+
+  print_spaces (indent, f);
+  fprintf_unfiltered (f, "  has children: %s\n",
+	   dwarf_bool_name (die->child != NULL));
+
+  print_spaces (indent, f);
+  fprintf_unfiltered (f, "  attributes:\n");
+
+  for (i = 0; i < die->num_attrs; ++i)
+    {
+      print_spaces (indent, f);
+      fprintf_unfiltered (f, "    %s (%s) ",
+	       dwarf_attr_name (die->attrs[i].name),
+	       dwarf_form_name (die->attrs[i].form));
+
+      switch (die->attrs[i].form)
+	{
+	case DW_FORM_addr:
+	case DW_FORM_addrx:
+	case DW_FORM_GNU_addr_index:
+	  fprintf_unfiltered (f, "address: ");
+	  fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
+	  break;
+	case DW_FORM_block2:
+	case DW_FORM_block4:
+	case DW_FORM_block:
+	case DW_FORM_block1:
+	  fprintf_unfiltered (f, "block: size %s",
+			      pulongest (DW_BLOCK (&die->attrs[i])->size));
+	  break;
+	case DW_FORM_exprloc:
+	  fprintf_unfiltered (f, "expression: size %s",
+			      pulongest (DW_BLOCK (&die->attrs[i])->size));
+	  break;
+	case DW_FORM_data16:
+	  fprintf_unfiltered (f, "constant of 16 bytes");
+	  break;
+	case DW_FORM_ref_addr:
+	  fprintf_unfiltered (f, "ref address: ");
+	  fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
+	  break;
+	case DW_FORM_GNU_ref_alt:
+	  fprintf_unfiltered (f, "alt ref address: ");
+	  fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
+	  break;
+	case DW_FORM_ref1:
+	case DW_FORM_ref2:
+	case DW_FORM_ref4:
+	case DW_FORM_ref8:
+	case DW_FORM_ref_udata:
+	  fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
+			      (long) (DW_UNSND (&die->attrs[i])));
+	  break;
+	case DW_FORM_data1:
+	case DW_FORM_data2:
+	case DW_FORM_data4:
+	case DW_FORM_data8:
+	case DW_FORM_udata:
+	case DW_FORM_sdata:
+	  fprintf_unfiltered (f, "constant: %s",
+			      pulongest (DW_UNSND (&die->attrs[i])));
+	  break;
+	case DW_FORM_sec_offset:
+	  fprintf_unfiltered (f, "section offset: %s",
+			      pulongest (DW_UNSND (&die->attrs[i])));
+	  break;
+	case DW_FORM_ref_sig8:
+	  fprintf_unfiltered (f, "signature: %s",
+			      hex_string (DW_SIGNATURE (&die->attrs[i])));
+	  break;
+	case DW_FORM_string:
+	case DW_FORM_strp:
+	case DW_FORM_line_strp:
+	case DW_FORM_strx:
+	case DW_FORM_GNU_str_index:
+	case DW_FORM_GNU_strp_alt:
+	  fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
+		   DW_STRING (&die->attrs[i])
+		   ? DW_STRING (&die->attrs[i]) : "",
+		   DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
+	  break;
+	case DW_FORM_flag:
+	  if (DW_UNSND (&die->attrs[i]))
+	    fprintf_unfiltered (f, "flag: TRUE");
+	  else
+	    fprintf_unfiltered (f, "flag: FALSE");
+	  break;
+	case DW_FORM_flag_present:
+	  fprintf_unfiltered (f, "flag: TRUE");
+	  break;
+	case DW_FORM_indirect:
+	  /* The reader will have reduced the indirect form to
+	     the "base form" so this form should not occur.  */
+	  fprintf_unfiltered (f,
+			      "unexpected attribute form: DW_FORM_indirect");
+	  break;
+	case DW_FORM_implicit_const:
+	  fprintf_unfiltered (f, "constant: %s",
+			      plongest (DW_SND (&die->attrs[i])));
+	  break;
+	default:
+	  fprintf_unfiltered (f, "unsupported attribute form: %d.",
+		   die->attrs[i].form);
+	  break;
+	}
+      fprintf_unfiltered (f, "\n");
+    }
+}
+
+static void
+dump_die_for_error (struct die_info *die)
+{
+  dump_die_shallow (gdb_stderr, 0, die);
+}
+
+static void
+dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
+{
+  int indent = level * 4;
+
+  gdb_assert (die != NULL);
+
+  if (level >= max_level)
+    return;
+
+  dump_die_shallow (f, indent, die);
+
+  if (die->child != NULL)
+    {
+      print_spaces (indent, f);
+      fprintf_unfiltered (f, "  Children:");
+      if (level + 1 < max_level)
+	{
+	  fprintf_unfiltered (f, "\n");
+	  dump_die_1 (f, level + 1, max_level, die->child);
+	}
+      else
+	{
+	  fprintf_unfiltered (f,
+			      " [not printed, max nesting level reached]\n");
+	}
+    }
+
+  if (die->sibling != NULL && level > 0)
+    {
+      dump_die_1 (f, level, max_level, die->sibling);
+    }
+}
+
+/* This is called from the pdie macro in gdbinit.in.
+   It's not static so gcc will keep a copy callable from gdb.  */
+
+void
+dump_die (struct die_info *die, int max_level)
+{
+  dump_die_1 (gdb_stdlog, 0, max_level, die);
+}
+
+static void
+store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
+{
+  void **slot;
+
+  slot = htab_find_slot_with_hash (cu->die_hash, die,
+				   to_underlying (die->sect_off),
+				   INSERT);
+
+  *slot = die;
+}
+
+/* Follow reference or signature attribute ATTR of SRC_DIE.
+   On entry *REF_CU is the CU of SRC_DIE.
+   On exit *REF_CU is the CU of the result.  */
+
+static struct die_info *
+follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
+		       struct dwarf2_cu **ref_cu)
+{
+  struct die_info *die;
+
+  if (attr->form_is_ref ())
+    die = follow_die_ref (src_die, attr, ref_cu);
+  else if (attr->form == DW_FORM_ref_sig8)
+    die = follow_die_sig (src_die, attr, ref_cu);
+  else
+    {
+      dump_die_for_error (src_die);
+      error (_("Dwarf Error: Expected reference attribute [in module %s]"),
+	     objfile_name ((*ref_cu)->per_objfile->objfile));
+    }
+
+  return die;
+}
+
+/* Follow reference OFFSET.
+   On entry *REF_CU is the CU of the source die referencing OFFSET.
+   On exit *REF_CU is the CU of the result.
+   Returns NULL if OFFSET is invalid.  */
+
+static struct die_info *
+follow_die_offset (sect_offset sect_off, int offset_in_dwz,
+		   struct dwarf2_cu **ref_cu)
+{
+  struct die_info temp_die;
+  struct dwarf2_cu *target_cu, *cu = *ref_cu;
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+
+  gdb_assert (cu->per_cu != NULL);
+
+  target_cu = cu;
+
+  if (cu->per_cu->is_debug_types)
+    {
+      /* .debug_types CUs cannot reference anything outside their CU.
+	 If they need to, they have to reference a signatured type via
+	 DW_FORM_ref_sig8.  */
+      if (!cu->header.offset_in_cu_p (sect_off))
+	return NULL;
+    }
+  else if (offset_in_dwz != cu->per_cu->is_dwz
+	   || !cu->header.offset_in_cu_p (sect_off))
+    {
+      struct dwarf2_per_cu_data *per_cu;
+
+      per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
+						 per_objfile);
+
+      if (dwarf_read_debug > 1)
+	fprintf_unfiltered (gdb_stdlog,
+			    "target CU offset: %s, target CU DIEs loaded: %d\n",
+			    sect_offset_str (per_cu->sect_off),
+			    per_objfile->get_cu (per_cu) != nullptr);
+
+      /* If necessary, add it to the queue and load its DIEs.
+
+	 Even if maybe_queue_comp_unit doesn't require us to load the CU's DIEs,
+	 it doesn't mean they are currently loaded.  Since we require them
+	 to be loaded, we must check for ourselves.  */
+      if (maybe_queue_comp_unit (cu, per_cu, per_objfile, cu->language)
+	  || per_objfile->get_cu (per_cu) == nullptr)
+	load_full_comp_unit (per_cu, per_objfile, per_objfile->get_cu (per_cu),
+			     false, cu->language);
+
+      target_cu = per_objfile->get_cu (per_cu);
+      gdb_assert (target_cu != nullptr);
+    }
+  else if (cu->dies == NULL)
+    {
+      /* We're loading full DIEs during partial symbol reading.  */
+      gdb_assert (per_objfile->per_bfd->reading_partial_symbols);
+      load_full_comp_unit (cu->per_cu, per_objfile, cu, false,
+			   language_minimal);
+    }
+
+  *ref_cu = target_cu;
+  temp_die.sect_off = sect_off;
+
+  if (target_cu != cu)
+    target_cu->ancestor = cu;
+
+  return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
+						  &temp_die,
+						  to_underlying (sect_off));
+}
+
+/* Follow reference attribute ATTR of SRC_DIE.
+   On entry *REF_CU is the CU of SRC_DIE.
+   On exit *REF_CU is the CU of the result.  */
+
+static struct die_info *
+follow_die_ref (struct die_info *src_die, const struct attribute *attr,
+		struct dwarf2_cu **ref_cu)
+{
+  sect_offset sect_off = attr->get_ref_die_offset ();
+  struct dwarf2_cu *cu = *ref_cu;
+  struct die_info *die;
+
+  die = follow_die_offset (sect_off,
+			   (attr->form == DW_FORM_GNU_ref_alt
+			    || cu->per_cu->is_dwz),
+			   ref_cu);
+  if (!die)
+    error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
+	   "at %s [in module %s]"),
+	   sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
+	   objfile_name (cu->per_objfile->objfile));
+
+  return die;
+}
+
+/* See read.h.  */
+
+struct dwarf2_locexpr_baton
+dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
+			       dwarf2_per_cu_data *per_cu,
+			       dwarf2_per_objfile *per_objfile,
+			       gdb::function_view<CORE_ADDR ()> get_frame_pc,
+			       bool resolve_abstract_p)
+{
+  struct die_info *die;
+  struct attribute *attr;
+  struct dwarf2_locexpr_baton retval;
+  struct objfile *objfile = per_objfile->objfile;
+
+  dwarf2_cu *cu = per_objfile->get_cu (per_cu);
+  if (cu == nullptr)
+    cu = load_cu (per_cu, per_objfile, false);
+
+  if (cu == nullptr)
+    {
+      /* 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.  */
+      error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
+	     sect_offset_str (sect_off), objfile_name (objfile));
+    }
+
+  die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
+  if (!die)
+    error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
+	   sect_offset_str (sect_off), objfile_name (objfile));
+
+  attr = dwarf2_attr (die, DW_AT_location, cu);
+  if (!attr && resolve_abstract_p
+      && (per_objfile->per_bfd->abstract_to_concrete.find (die->sect_off)
+	  != per_objfile->per_bfd->abstract_to_concrete.end ()))
+    {
+      CORE_ADDR pc = get_frame_pc ();
+      CORE_ADDR baseaddr = objfile->text_section_offset ();
+      struct gdbarch *gdbarch = objfile->arch ();
+
+      for (const auto &cand_off
+	     : per_objfile->per_bfd->abstract_to_concrete[die->sect_off])
+	{
+	  struct dwarf2_cu *cand_cu = cu;
+	  struct die_info *cand
+	    = follow_die_offset (cand_off, per_cu->is_dwz, &cand_cu);
+	  if (!cand
+	      || !cand->parent
+	      || cand->parent->tag != DW_TAG_subprogram)
+	    continue;
+
+	  CORE_ADDR pc_low, pc_high;
+	  get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
+	  if (pc_low == ((CORE_ADDR) -1))
+	    continue;
+	  pc_low = gdbarch_adjust_dwarf2_addr (gdbarch, pc_low + baseaddr);
+	  pc_high = gdbarch_adjust_dwarf2_addr (gdbarch, pc_high + baseaddr);
+	  if (!(pc_low <= pc && pc < pc_high))
+	    continue;
+
+	  die = cand;
+	  attr = dwarf2_attr (die, DW_AT_location, cu);
+	  break;
+	}
+    }
+
+  if (!attr)
+    {
+      /* DWARF: "If there is no such attribute, then there is no effect.".
+	 DATA is ignored if SIZE is 0.  */
+
+      retval.data = NULL;
+      retval.size = 0;
+    }
+  else if (attr->form_is_section_offset ())
+    {
+      struct dwarf2_loclist_baton loclist_baton;
+      CORE_ADDR pc = get_frame_pc ();
+      size_t size;
+
+      fill_in_loclist_baton (cu, &loclist_baton, attr);
+
+      retval.data = dwarf2_find_location_expression (&loclist_baton,
+						     &size, pc);
+      retval.size = size;
+    }
+  else
+    {
+      if (!attr->form_is_block ())
+	error (_("Dwarf Error: DIE at %s referenced in module %s "
+		 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
+	       sect_offset_str (sect_off), objfile_name (objfile));
+
+      retval.data = DW_BLOCK (attr)->data;
+      retval.size = DW_BLOCK (attr)->size;
+    }
+  retval.per_objfile = per_objfile;
+  retval.per_cu = cu->per_cu;
+
+  per_objfile->age_comp_units ();
+
+  return retval;
+}
+
+/* See read.h.  */
+
+struct dwarf2_locexpr_baton
+dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
+			     dwarf2_per_cu_data *per_cu,
+			     dwarf2_per_objfile *per_objfile,
+			     gdb::function_view<CORE_ADDR ()> get_frame_pc)
+{
+  sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
+
+  return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, per_objfile,
+					get_frame_pc);
+}
+
+/* Write a constant of a given type as target-ordered bytes into
+   OBSTACK.  */
+
+static const gdb_byte *
+write_constant_as_bytes (struct obstack *obstack,
+			 enum bfd_endian byte_order,
+			 struct type *type,
+			 ULONGEST value,
+			 LONGEST *len)
+{
+  gdb_byte *result;
+
+  *len = TYPE_LENGTH (type);
+  result = (gdb_byte *) obstack_alloc (obstack, *len);
+  store_unsigned_integer (result, *len, byte_order, value);
+
+  return result;
+}
+
+/* See read.h.  */
+
+const gdb_byte *
+dwarf2_fetch_constant_bytes (sect_offset sect_off,
+			     dwarf2_per_cu_data *per_cu,
+			     dwarf2_per_objfile *per_objfile,
+			     obstack *obstack,
+			     LONGEST *len)
+{
+  struct die_info *die;
+  struct attribute *attr;
+  const gdb_byte *result = NULL;
+  struct type *type;
+  LONGEST value;
+  enum bfd_endian byte_order;
+  struct objfile *objfile = per_objfile->objfile;
+
+  dwarf2_cu *cu = per_objfile->get_cu (per_cu);
+  if (cu == nullptr)
+    cu = load_cu (per_cu, per_objfile, false);
+
+  if (cu == nullptr)
+    {
+      /* 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.  */
+      error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
+	     sect_offset_str (sect_off), objfile_name (objfile));
+    }
+
+  die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
+  if (!die)
+    error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
+	   sect_offset_str (sect_off), objfile_name (objfile));
+
+  attr = dwarf2_attr (die, DW_AT_const_value, cu);
+  if (attr == NULL)
+    return NULL;
+
+  byte_order = (bfd_big_endian (objfile->obfd)
+		? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
+
+  switch (attr->form)
+    {
+    case DW_FORM_addr:
+    case DW_FORM_addrx:
+    case DW_FORM_GNU_addr_index:
+      {
+	gdb_byte *tem;
+
+	*len = cu->header.addr_size;
+	tem = (gdb_byte *) obstack_alloc (obstack, *len);
+	store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
+	result = tem;
+      }
+      break;
+    case DW_FORM_string:
+    case DW_FORM_strp:
+    case DW_FORM_strx:
+    case DW_FORM_GNU_str_index:
+    case DW_FORM_GNU_strp_alt:
+      /* DW_STRING is already allocated on the objfile obstack, point
+	 directly to it.  */
+      result = (const gdb_byte *) DW_STRING (attr);
+      *len = strlen (DW_STRING (attr));
+      break;
+    case DW_FORM_block1:
+    case DW_FORM_block2:
+    case DW_FORM_block4:
+    case DW_FORM_block:
+    case DW_FORM_exprloc:
+    case DW_FORM_data16:
+      result = DW_BLOCK (attr)->data;
+      *len = DW_BLOCK (attr)->size;
+      break;
+
+      /* The DW_AT_const_value attributes are supposed to carry the
+	 symbol's value "represented as it would be on the target
+	 architecture."  By the time we get here, it's already been
+	 converted to host endianness, so we just need to sign- or
+	 zero-extend it as appropriate.  */
+    case DW_FORM_data1:
+      type = die_type (die, cu);
+      result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
+      if (result == NULL)
+	result = write_constant_as_bytes (obstack, byte_order,
+					  type, value, len);
+      break;
+    case DW_FORM_data2:
+      type = die_type (die, cu);
+      result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
+      if (result == NULL)
+	result = write_constant_as_bytes (obstack, byte_order,
+					  type, value, len);
+      break;
+    case DW_FORM_data4:
+      type = die_type (die, cu);
+      result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
+      if (result == NULL)
+	result = write_constant_as_bytes (obstack, byte_order,
+					  type, value, len);
+      break;
+    case DW_FORM_data8:
+      type = die_type (die, cu);
+      result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
+      if (result == NULL)
+	result = write_constant_as_bytes (obstack, byte_order,
+					  type, value, len);
+      break;
+
+    case DW_FORM_sdata:
+    case DW_FORM_implicit_const:
+      type = die_type (die, cu);
+      result = write_constant_as_bytes (obstack, byte_order,
+					type, DW_SND (attr), len);
+      break;
+
+    case DW_FORM_udata:
+      type = die_type (die, cu);
+      result = write_constant_as_bytes (obstack, byte_order,
+					type, DW_UNSND (attr), len);
+      break;
+
+    default:
+      complaint (_("unsupported const value attribute form: '%s'"),
+		 dwarf_form_name (attr->form));
+      break;
+    }
+
+  return result;
+}
+
+/* See read.h.  */
+
+struct type *
+dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
+				dwarf2_per_cu_data *per_cu,
+				dwarf2_per_objfile *per_objfile)
+{
+  struct die_info *die;
+
+  dwarf2_cu *cu = per_objfile->get_cu (per_cu);
+  if (cu == nullptr)
+    cu = load_cu (per_cu, per_objfile, false);
+
+  if (cu == nullptr)
+    return nullptr;
+
+  die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
+  if (!die)
+    return NULL;
+
+  return die_type (die, cu);
+}
+
+/* See read.h.  */
+
+struct type *
+dwarf2_get_die_type (cu_offset die_offset,
+		     dwarf2_per_cu_data *per_cu,
+		     dwarf2_per_objfile *per_objfile)
+{
+  sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
+  return get_die_type_at_offset (die_offset_sect, per_cu, per_objfile);
+}
+
+/* Follow type unit SIG_TYPE referenced by SRC_DIE.
+   On entry *REF_CU is the CU of SRC_DIE.
+   On exit *REF_CU is the CU of the result.
+   Returns NULL if the referenced DIE isn't found.  */
+
+static struct die_info *
+follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
+		  struct dwarf2_cu **ref_cu)
+{
+  struct die_info temp_die;
+  struct dwarf2_cu *sig_cu, *cu = *ref_cu;
+  struct die_info *die;
+  dwarf2_per_objfile *per_objfile = (*ref_cu)->per_objfile;
+
+
+  /* While it might be nice to assert sig_type->type == NULL here,
+     we can get here for DW_AT_imported_declaration where we need
+     the DIE not the type.  */
+
+  /* If necessary, add it to the queue and load its DIEs.
+
+     Even if maybe_queue_comp_unit doesn't require us to load the CU's DIEs,
+     it doesn't mean they are currently loaded.  Since we require them
+     to be loaded, we must check for ourselves.  */
+  if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, per_objfile,
+			     language_minimal)
+      || per_objfile->get_cu (&sig_type->per_cu) == nullptr)
+    read_signatured_type (sig_type, per_objfile);
+
+  sig_cu = per_objfile->get_cu (&sig_type->per_cu);
+  gdb_assert (sig_cu != NULL);
+  gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
+  temp_die.sect_off = sig_type->type_offset_in_section;
+  die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
+						 to_underlying (temp_die.sect_off));
+  if (die)
+    {
+      /* For .gdb_index version 7 keep track of included TUs.
+	 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
+      if (per_objfile->per_bfd->index_table != NULL
+	  && per_objfile->per_bfd->index_table->version <= 7)
+	{
+	  (*ref_cu)->per_cu->imported_symtabs_push (sig_cu->per_cu);
+	}
+
+      *ref_cu = sig_cu;
+      if (sig_cu != cu)
+	sig_cu->ancestor = cu;
+
+      return die;
+    }
+
+  return NULL;
+}
+
+/* Follow signatured type referenced by ATTR in SRC_DIE.
+   On entry *REF_CU is the CU of SRC_DIE.
+   On exit *REF_CU is the CU of the result.
+   The result is the DIE of the type.
+   If the referenced type cannot be found an error is thrown.  */
+
+static struct die_info *
+follow_die_sig (struct die_info *src_die, const struct attribute *attr,
+		struct dwarf2_cu **ref_cu)
+{
+  ULONGEST signature = DW_SIGNATURE (attr);
+  struct signatured_type *sig_type;
+  struct die_info *die;
+
+  gdb_assert (attr->form == DW_FORM_ref_sig8);
+
+  sig_type = lookup_signatured_type (*ref_cu, signature);
+  /* sig_type will be NULL if the signatured type is missing from
+     the debug info.  */
+  if (sig_type == NULL)
+    {
+      error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
+               " from DIE at %s [in module %s]"),
+             hex_string (signature), sect_offset_str (src_die->sect_off),
+	     objfile_name ((*ref_cu)->per_objfile->objfile));
+    }
+
+  die = follow_die_sig_1 (src_die, sig_type, ref_cu);
+  if (die == NULL)
+    {
+      dump_die_for_error (src_die);
+      error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
+	       " from DIE at %s [in module %s]"),
+	     hex_string (signature), sect_offset_str (src_die->sect_off),
+	     objfile_name ((*ref_cu)->per_objfile->objfile));
+    }
+
+  return die;
+}
+
+/* Get the type specified by SIGNATURE referenced in DIE/CU,
+   reading in and processing the type unit if necessary.  */
+
+static struct type *
+get_signatured_type (struct die_info *die, ULONGEST signature,
+		     struct dwarf2_cu *cu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct signatured_type *sig_type;
+  struct dwarf2_cu *type_cu;
+  struct die_info *type_die;
+  struct type *type;
+
+  sig_type = lookup_signatured_type (cu, signature);
+  /* sig_type will be NULL if the signatured type is missing from
+     the debug info.  */
+  if (sig_type == NULL)
+    {
+      complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
+		   " from DIE at %s [in module %s]"),
+		 hex_string (signature), sect_offset_str (die->sect_off),
+		 objfile_name (per_objfile->objfile));
+      return build_error_marker_type (cu, die);
+    }
+
+  /* If we already know the type we're done.  */
+  type = per_objfile->get_type_for_signatured_type (sig_type);
+  if (type != nullptr)
+    return type;
+
+  type_cu = cu;
+  type_die = follow_die_sig_1 (die, sig_type, &type_cu);
+  if (type_die != NULL)
+    {
+      /* N.B. We need to call get_die_type to ensure only one type for this DIE
+	 is created.  This is important, for example, because for c++ classes
+	 we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
+      type = read_type_die (type_die, type_cu);
+      if (type == NULL)
+	{
+	  complaint (_("Dwarf Error: Cannot build signatured type %s"
+		       " referenced from DIE at %s [in module %s]"),
+		     hex_string (signature), sect_offset_str (die->sect_off),
+		     objfile_name (per_objfile->objfile));
+	  type = build_error_marker_type (cu, die);
+	}
+    }
+  else
+    {
+      complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
+		   " from DIE at %s [in module %s]"),
+		 hex_string (signature), sect_offset_str (die->sect_off),
+		 objfile_name (per_objfile->objfile));
+      type = build_error_marker_type (cu, die);
+    }
+
+  per_objfile->set_type_for_signatured_type (sig_type, type);
+
+  return type;
+}
+
+/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
+   reading in and processing the type unit if necessary.  */
+
+static struct type *
+get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
+			  struct dwarf2_cu *cu) /* ARI: editCase function */
+{
+  /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
+  if (attr->form_is_ref ())
+    {
+      struct dwarf2_cu *type_cu = cu;
+      struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
+
+      return read_type_die (type_die, type_cu);
+    }
+  else if (attr->form == DW_FORM_ref_sig8)
+    {
+      return get_signatured_type (die, DW_SIGNATURE (attr), cu);
+    }
+  else
+    {
+      dwarf2_per_objfile *per_objfile = cu->per_objfile;
+
+      complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
+		   " at %s [in module %s]"),
+		 dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
+		 objfile_name (per_objfile->objfile));
+      return build_error_marker_type (cu, die);
+    }
+}
+
+/* Load the DIEs associated with type unit PER_CU into memory.  */
+
+static void
+load_full_type_unit (dwarf2_per_cu_data *per_cu,
+		     dwarf2_per_objfile *per_objfile)
+{
+  struct signatured_type *sig_type;
+
+  /* Caller is responsible for ensuring type_unit_groups don't get here.  */
+  gdb_assert (! per_cu->type_unit_group_p ());
+
+  /* We have the per_cu, but we need the signatured_type.
+     Fortunately this is an easy translation.  */
+  gdb_assert (per_cu->is_debug_types);
+  sig_type = (struct signatured_type *) per_cu;
+
+  gdb_assert (per_objfile->get_cu (per_cu) == nullptr);
+
+  read_signatured_type (sig_type, per_objfile);
+
+  gdb_assert (per_objfile->get_cu (per_cu) != nullptr);
+}
+
+/* Read in a signatured type and build its CU and DIEs.
+   If the type is a stub for the real type in a DWO file,
+   read in the real type from the DWO file as well.  */
+
+static void
+read_signatured_type (signatured_type *sig_type,
+		      dwarf2_per_objfile *per_objfile)
+{
+  struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
+
+  gdb_assert (per_cu->is_debug_types);
+  gdb_assert (per_objfile->get_cu (per_cu) == nullptr);
+
+  cutu_reader reader (per_cu, per_objfile, nullptr, nullptr, false);
+
+  if (!reader.dummy_p)
+    {
+      struct dwarf2_cu *cu = reader.cu;
+      const gdb_byte *info_ptr = reader.info_ptr;
+
+      gdb_assert (cu->die_hash == NULL);
+      cu->die_hash =
+	htab_create_alloc_ex (cu->header.length / 12,
+			      die_hash,
+			      die_eq,
+			      NULL,
+			      &cu->comp_unit_obstack,
+			      hashtab_obstack_allocate,
+			      dummy_obstack_deallocate);
+
+      if (reader.comp_unit_die->has_children)
+	reader.comp_unit_die->child
+	  = read_die_and_siblings (&reader, info_ptr, &info_ptr,
+				   reader.comp_unit_die);
+      cu->dies = reader.comp_unit_die;
+      /* comp_unit_die is not stored in die_hash, no need.  */
+
+      /* We try not to read any attributes in this function, because
+	 not all CUs needed for references have been loaded yet, and
+	 symbol table processing isn't initialized.  But we have to
+	 set the CU language, or we won't be able to build types
+	 correctly.  Similarly, if we do not read the producer, we can
+	 not apply producer-specific interpretation.  */
+      prepare_one_comp_unit (cu, cu->dies, language_minimal);
+
+      reader.keep ();
+    }
+
+  sig_type->per_cu.tu_read = 1;
+}
+
+/* Decode simple location descriptions.
+   Given a pointer to a dwarf block that defines a location, compute
+   the location and return the value.  If COMPUTED is non-null, it is
+   set to true to indicate that decoding was successful, and false
+   otherwise.  If COMPUTED is null, then this function may emit a
+   complaint.  */
+
+static CORE_ADDR
+decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu, bool *computed)
+{
+  struct objfile *objfile = cu->per_objfile->objfile;
+  size_t i;
+  size_t size = blk->size;
+  const gdb_byte *data = blk->data;
+  CORE_ADDR stack[64];
+  int stacki;
+  unsigned int bytes_read, unsnd;
+  gdb_byte op;
+
+  if (computed != nullptr)
+    *computed = false;
+
+  i = 0;
+  stacki = 0;
+  stack[stacki] = 0;
+  stack[++stacki] = 0;
+
+  while (i < size)
+    {
+      op = data[i++];
+      switch (op)
+	{
+	case DW_OP_lit0:
+	case DW_OP_lit1:
+	case DW_OP_lit2:
+	case DW_OP_lit3:
+	case DW_OP_lit4:
+	case DW_OP_lit5:
+	case DW_OP_lit6:
+	case DW_OP_lit7:
+	case DW_OP_lit8:
+	case DW_OP_lit9:
+	case DW_OP_lit10:
+	case DW_OP_lit11:
+	case DW_OP_lit12:
+	case DW_OP_lit13:
+	case DW_OP_lit14:
+	case DW_OP_lit15:
+	case DW_OP_lit16:
+	case DW_OP_lit17:
+	case DW_OP_lit18:
+	case DW_OP_lit19:
+	case DW_OP_lit20:
+	case DW_OP_lit21:
+	case DW_OP_lit22:
+	case DW_OP_lit23:
+	case DW_OP_lit24:
+	case DW_OP_lit25:
+	case DW_OP_lit26:
+	case DW_OP_lit27:
+	case DW_OP_lit28:
+	case DW_OP_lit29:
+	case DW_OP_lit30:
+	case DW_OP_lit31:
+	  stack[++stacki] = op - DW_OP_lit0;
+	  break;
+
+	case DW_OP_reg0:
+	case DW_OP_reg1:
+	case DW_OP_reg2:
+	case DW_OP_reg3:
+	case DW_OP_reg4:
+	case DW_OP_reg5:
+	case DW_OP_reg6:
+	case DW_OP_reg7:
+	case DW_OP_reg8:
+	case DW_OP_reg9:
+	case DW_OP_reg10:
+	case DW_OP_reg11:
+	case DW_OP_reg12:
+	case DW_OP_reg13:
+	case DW_OP_reg14:
+	case DW_OP_reg15:
+	case DW_OP_reg16:
+	case DW_OP_reg17:
+	case DW_OP_reg18:
+	case DW_OP_reg19:
+	case DW_OP_reg20:
+	case DW_OP_reg21:
+	case DW_OP_reg22:
+	case DW_OP_reg23:
+	case DW_OP_reg24:
+	case DW_OP_reg25:
+	case DW_OP_reg26:
+	case DW_OP_reg27:
+	case DW_OP_reg28:
+	case DW_OP_reg29:
+	case DW_OP_reg30:
+	case DW_OP_reg31:
+	  stack[++stacki] = op - DW_OP_reg0;
+	  if (i < size)
+	    {
+	      if (computed == nullptr)
+		dwarf2_complex_location_expr_complaint ();
+	      else
+		return 0;
+	    }
+	  break;
+
+	case DW_OP_regx:
+	  unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
+	  i += bytes_read;
+	  stack[++stacki] = unsnd;
+	  if (i < size)
+	    {
+	      if (computed == nullptr)
+		dwarf2_complex_location_expr_complaint ();
+	      else
+		return 0;
+	    }
+	  break;
+
+	case DW_OP_addr:
+	  stack[++stacki] = cu->header.read_address (objfile->obfd, &data[i],
+						     &bytes_read);
+	  i += bytes_read;
+	  break;
+
+	case DW_OP_const1u:
+	  stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
+	  i += 1;
+	  break;
+
+	case DW_OP_const1s:
+	  stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
+	  i += 1;
+	  break;
+
+	case DW_OP_const2u:
+	  stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
+	  i += 2;
+	  break;
+
+	case DW_OP_const2s:
+	  stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
+	  i += 2;
+	  break;
+
+	case DW_OP_const4u:
+	  stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
+	  i += 4;
+	  break;
+
+	case DW_OP_const4s:
+	  stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
+	  i += 4;
+	  break;
+
+	case DW_OP_const8u:
+	  stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
+	  i += 8;
+	  break;
+
+	case DW_OP_constu:
+	  stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
+						  &bytes_read);
+	  i += bytes_read;
+	  break;
+
+	case DW_OP_consts:
+	  stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
+	  i += bytes_read;
+	  break;
+
+	case DW_OP_dup:
+	  stack[stacki + 1] = stack[stacki];
+	  stacki++;
+	  break;
+
+	case DW_OP_plus:
+	  stack[stacki - 1] += stack[stacki];
+	  stacki--;
+	  break;
+
+	case DW_OP_plus_uconst:
+	  stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
+						 &bytes_read);
+	  i += bytes_read;
+	  break;
+
+	case DW_OP_minus:
+	  stack[stacki - 1] -= stack[stacki];
+	  stacki--;
+	  break;
+
+	case DW_OP_deref:
+	  /* If we're not the last op, then we definitely can't encode
+	     this using GDB's address_class enum.  This is valid for partial
+	     global symbols, although the variable's address will be bogus
+	     in the psymtab.  */
+	  if (i < size)
+	    {
+	      if (computed == nullptr)
+		dwarf2_complex_location_expr_complaint ();
+	      else
+		return 0;
+	    }
+	  break;
+
+        case DW_OP_GNU_push_tls_address:
+	case DW_OP_form_tls_address:
+	  /* The top of the stack has the offset from the beginning
+	     of the thread control block at which the variable is located.  */
+	  /* Nothing should follow this operator, so the top of stack would
+	     be returned.  */
+	  /* This is valid for partial global symbols, but the variable's
+	     address will be bogus in the psymtab.  Make it always at least
+	     non-zero to not look as a variable garbage collected by linker
+	     which have DW_OP_addr 0.  */
+	  if (i < size)
+	    {
+	      if (computed == nullptr)
+		dwarf2_complex_location_expr_complaint ();
+	      else
+		return 0;
+	    }
+	  stack[stacki]++;
+          break;
+
+	case DW_OP_GNU_uninit:
+	  if (computed != nullptr)
+	    return 0;
+	  break;
+
+	case DW_OP_addrx:
+	case DW_OP_GNU_addr_index:
+	case DW_OP_GNU_const_index:
+	  stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
+							 &bytes_read);
+	  i += bytes_read;
+	  break;
+
+	default:
+	  if (computed == nullptr)
+	    {
+	      const char *name = get_DW_OP_name (op);
+
+	      if (name)
+		complaint (_("unsupported stack op: '%s'"),
+			   name);
+	      else
+		complaint (_("unsupported stack op: '%02x'"),
+			   op);
+	    }
+
+	  return (stack[stacki]);
+	}
+
+      /* Enforce maximum stack depth of SIZE-1 to avoid writing
+         outside of the allocated space.  Also enforce minimum>0.  */
+      if (stacki >= ARRAY_SIZE (stack) - 1)
+	{
+	  if (computed == nullptr)
+	    complaint (_("location description stack overflow"));
+	  return 0;
+	}
+
+      if (stacki <= 0)
+	{
+	  if (computed == nullptr)
+	    complaint (_("location description stack underflow"));
+	  return 0;
+	}
+    }
+
+  if (computed != nullptr)
+    *computed = true;
+  return (stack[stacki]);
+}
+
+/* memory allocation interface */
+
+static struct dwarf_block *
+dwarf_alloc_block (struct dwarf2_cu *cu)
+{
+  return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
+}
+
+static struct die_info *
+dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
+{
+  struct die_info *die;
+  size_t size = sizeof (struct die_info);
+
+  if (num_attrs > 1)
+    size += (num_attrs - 1) * sizeof (struct attribute);
+
+  die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
+  memset (die, 0, sizeof (struct die_info));
+  return (die);
+}
+
+
+
+/* Macro support.  */
+
+/* An overload of dwarf_decode_macros that finds the correct section
+   and ensures it is read in before calling the other overload.  */
+
+static void
+dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
+		     int section_is_gnu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  const struct line_header *lh = cu->line_header;
+  unsigned int offset_size = cu->header.offset_size;
+  struct dwarf2_section_info *section;
+  const char *section_name;
+
+  if (cu->dwo_unit != nullptr)
+    {
+      if (section_is_gnu)
+	{
+	  section = &cu->dwo_unit->dwo_file->sections.macro;
+	  section_name = ".debug_macro.dwo";
+	}
+      else
+	{
+	  section = &cu->dwo_unit->dwo_file->sections.macinfo;
+	  section_name = ".debug_macinfo.dwo";
+	}
+    }
+  else
+    {
+      if (section_is_gnu)
+	{
+	  section = &per_objfile->per_bfd->macro;
+	  section_name = ".debug_macro";
+	}
+      else
+	{
+	  section = &per_objfile->per_bfd->macinfo;
+	  section_name = ".debug_macinfo";
+	}
+    }
+
+  section->read (objfile);
+  if (section->buffer == nullptr)
+    {
+      complaint (_("missing %s section"), section_name);
+      return;
+    }
+
+  buildsym_compunit *builder = cu->get_builder ();
+
+  dwarf_decode_macros (per_objfile, builder, section, lh,
+		       offset_size, offset, section_is_gnu);
+}
+
+/* Return the .debug_loc section to use for CU.
+   For DWO files use .debug_loc.dwo.  */
+
+static struct dwarf2_section_info *
+cu_debug_loc_section (struct dwarf2_cu *cu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+
+  if (cu->dwo_unit)
+    {
+      struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
+
+      return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
+    }
+  return (cu->header.version >= 5 ? &per_objfile->per_bfd->loclists
+				  : &per_objfile->per_bfd->loc);
+}
+
+/* Return the .debug_rnglists section to use for CU.  */
+static struct dwarf2_section_info *
+cu_debug_rnglists_section (struct dwarf2_cu *cu, dwarf_tag tag)
+{
+  if (cu->header.version < 5)
+    error (_(".debug_rnglists section cannot be used in DWARF %d"),
+	   cu->header.version);
+  struct dwarf2_per_objfile *dwarf2_per_objfile = cu->per_objfile;
+
+  /* Make sure we read the .debug_rnglists section from the file that
+     contains the DW_AT_ranges attribute we are reading.  Normally that
+     would be the .dwo file, if there is one.  However for DW_TAG_compile_unit
+     or DW_TAG_skeleton unit, we always want to read from objfile/linked
+     program.  */
+  if (cu->dwo_unit != nullptr
+      && tag != DW_TAG_compile_unit
+      && tag != DW_TAG_skeleton_unit)
+    {
+      struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
+
+      if (sections->rnglists.size > 0)
+	return &sections->rnglists;
+      else
+	error (_(".debug_rnglists section is missing from .dwo file."));
+    }
+  return &dwarf2_per_objfile->per_bfd->rnglists;
+}
+
+/* A helper function that fills in a dwarf2_loclist_baton.  */
+
+static void
+fill_in_loclist_baton (struct dwarf2_cu *cu,
+		       struct dwarf2_loclist_baton *baton,
+		       const struct attribute *attr)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct dwarf2_section_info *section = cu_debug_loc_section (cu);
+
+  section->read (per_objfile->objfile);
+
+  baton->per_objfile = per_objfile;
+  baton->per_cu = cu->per_cu;
+  gdb_assert (baton->per_cu);
+  /* We don't know how long the location list is, but make sure we
+     don't run off the edge of the section.  */
+  baton->size = section->size - DW_UNSND (attr);
+  baton->data = section->buffer + DW_UNSND (attr);
+  if (cu->base_address.has_value ())
+    baton->base_address = *cu->base_address;
+  else
+    baton->base_address = 0;
+  baton->from_dwo = cu->dwo_unit != NULL;
+}
+
+static void
+dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
+			     struct dwarf2_cu *cu, int is_block)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct objfile *objfile = per_objfile->objfile;
+  struct dwarf2_section_info *section = cu_debug_loc_section (cu);
+
+  if (attr->form_is_section_offset ()
+      /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
+	 the section.  If so, fall through to the complaint in the
+	 other branch.  */
+      && DW_UNSND (attr) < section->get_size (objfile))
+    {
+      struct dwarf2_loclist_baton *baton;
+
+      baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
+
+      fill_in_loclist_baton (cu, baton, attr);
+
+      if (!cu->base_address.has_value ())
+	complaint (_("Location list used without "
+		     "specifying the CU base address."));
+
+      SYMBOL_ACLASS_INDEX (sym) = (is_block
+				   ? dwarf2_loclist_block_index
+				   : dwarf2_loclist_index);
+      SYMBOL_LOCATION_BATON (sym) = baton;
+    }
+  else
+    {
+      struct dwarf2_locexpr_baton *baton;
+
+      baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
+      baton->per_objfile = per_objfile;
+      baton->per_cu = cu->per_cu;
+      gdb_assert (baton->per_cu);
+
+      if (attr->form_is_block ())
+	{
+	  /* Note that we're just copying the block's data pointer
+	     here, not the actual data.  We're still pointing into the
+	     info_buffer for SYM's objfile; right now we never release
+	     that buffer, but when we do clean up properly this may
+	     need to change.  */
+	  baton->size = DW_BLOCK (attr)->size;
+	  baton->data = DW_BLOCK (attr)->data;
+	}
+      else
+	{
+	  dwarf2_invalid_attrib_class_complaint ("location description",
+						 sym->natural_name ());
+	  baton->size = 0;
+	}
+
+      SYMBOL_ACLASS_INDEX (sym) = (is_block
+				   ? dwarf2_locexpr_block_index
+				   : dwarf2_locexpr_index);
+      SYMBOL_LOCATION_BATON (sym) = baton;
+    }
+}
+
+/* See read.h.  */
+
+const comp_unit_head *
+dwarf2_per_cu_data::get_header () const
+{
+  if (!m_header_read_in)
+    {
+      const gdb_byte *info_ptr
+	= this->section->buffer + to_underlying (this->sect_off);
+
+      memset (&m_header, 0, sizeof (m_header));
+
+      read_comp_unit_head (&m_header, info_ptr, this->section,
+			   rcuh_kind::COMPILE);
+    }
+
+  return &m_header;
+}
+
+/* See read.h.  */
+
+int
+dwarf2_per_cu_data::addr_size () const
+{
+  return this->get_header ()->addr_size;
+}
+
+/* See read.h.  */
+
+int
+dwarf2_per_cu_data::offset_size () const
+{
+  return this->get_header ()->offset_size;
+}
+
+/* See read.h.  */
+
+int
+dwarf2_per_cu_data::ref_addr_size () const
+{
+  const comp_unit_head *header = this->get_header ();
+
+  if (header->version == 2)
+    return header->addr_size;
+  else
+    return header->offset_size;
+}
+
+/* See read.h.  */
+
+struct type *
+dwarf2_cu::addr_type () const
+{
+  struct objfile *objfile = this->per_objfile->objfile;
+  struct type *void_type = objfile_type (objfile)->builtin_void;
+  struct type *addr_type = lookup_pointer_type (void_type);
+  int addr_size = this->per_cu->addr_size ();
+
+  if (TYPE_LENGTH (addr_type) == addr_size)
+    return addr_type;
+
+  addr_type = addr_sized_int_type (TYPE_UNSIGNED (addr_type));
+  return addr_type;
+}
+
+/* A helper function for dwarf2_find_containing_comp_unit that returns
+   the index of the result, and that searches a vector.  It will
+   return a result even if the offset in question does not actually
+   occur in any CU.  This is separate so that it can be unit
+   tested.  */
+
+static int
+dwarf2_find_containing_comp_unit
+  (sect_offset sect_off,
+   unsigned int offset_in_dwz,
+   const std::vector<dwarf2_per_cu_data *> &all_comp_units)
+{
+  int low, high;
+
+  low = 0;
+  high = all_comp_units.size () - 1;
+  while (high > low)
+    {
+      struct dwarf2_per_cu_data *mid_cu;
+      int mid = low + (high - low) / 2;
+
+      mid_cu = all_comp_units[mid];
+      if (mid_cu->is_dwz > offset_in_dwz
+	  || (mid_cu->is_dwz == offset_in_dwz
+	      && mid_cu->sect_off + mid_cu->length > sect_off))
+	high = mid;
+      else
+	low = mid + 1;
+    }
+  gdb_assert (low == high);
+  return low;
+}
+
+/* Locate the .debug_info compilation unit from CU's objfile which contains
+   the DIE at OFFSET.  Raises an error on failure.  */
+
+static struct dwarf2_per_cu_data *
+dwarf2_find_containing_comp_unit (sect_offset sect_off,
+				  unsigned int offset_in_dwz,
+				  dwarf2_per_objfile *per_objfile)
+{
+  int low = dwarf2_find_containing_comp_unit
+    (sect_off, offset_in_dwz, per_objfile->per_bfd->all_comp_units);
+  dwarf2_per_cu_data *this_cu = per_objfile->per_bfd->all_comp_units[low];
+
+  if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
+    {
+      if (low == 0 || this_cu->is_dwz != offset_in_dwz)
+	error (_("Dwarf Error: could not find partial DIE containing "
+	       "offset %s [in module %s]"),
+	       sect_offset_str (sect_off),
+	       bfd_get_filename (per_objfile->objfile->obfd));
+
+      gdb_assert (per_objfile->per_bfd->all_comp_units[low-1]->sect_off
+		  <= sect_off);
+      return per_objfile->per_bfd->all_comp_units[low-1];
+    }
+  else
+    {
+      if (low == per_objfile->per_bfd->all_comp_units.size () - 1
+	  && sect_off >= this_cu->sect_off + this_cu->length)
+	error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
+      gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
+      return this_cu;
+    }
+}
+
+#if GDB_SELF_TEST
+
+namespace selftests {
+namespace find_containing_comp_unit {
+
+static void
+run_test ()
+{
+  struct dwarf2_per_cu_data one {};
+  struct dwarf2_per_cu_data two {};
+  struct dwarf2_per_cu_data three {};
+  struct dwarf2_per_cu_data four {};
+
+  one.length = 5;
+  two.sect_off = sect_offset (one.length);
+  two.length = 7;
+
+  three.length = 5;
+  three.is_dwz = 1;
+  four.sect_off = sect_offset (three.length);
+  four.length = 7;
+  four.is_dwz = 1;
+
+  std::vector<dwarf2_per_cu_data *> units;
+  units.push_back (&one);
+  units.push_back (&two);
+  units.push_back (&three);
+  units.push_back (&four);
+
+  int result;
+
+  result = dwarf2_find_containing_comp_unit (sect_offset (0), 0, units);
+  SELF_CHECK (units[result] == &one);
+  result = dwarf2_find_containing_comp_unit (sect_offset (3), 0, units);
+  SELF_CHECK (units[result] == &one);
+  result = dwarf2_find_containing_comp_unit (sect_offset (5), 0, units);
+  SELF_CHECK (units[result] == &two);
+
+  result = dwarf2_find_containing_comp_unit (sect_offset (0), 1, units);
+  SELF_CHECK (units[result] == &three);
+  result = dwarf2_find_containing_comp_unit (sect_offset (3), 1, units);
+  SELF_CHECK (units[result] == &three);
+  result = dwarf2_find_containing_comp_unit (sect_offset (5), 1, units);
+  SELF_CHECK (units[result] == &four);
+}
+
+}
+}
+
+#endif /* GDB_SELF_TEST */
+
+/* Initialize dwarf2_cu to read PER_CU, in the context of PER_OBJFILE.  */
+
+dwarf2_cu::dwarf2_cu (dwarf2_per_cu_data *per_cu,
+		      dwarf2_per_objfile *per_objfile)
+  : per_cu (per_cu),
+    per_objfile (per_objfile),
+    mark (false),
+    has_loclist (false),
+    checked_producer (false),
+    producer_is_gxx_lt_4_6 (false),
+    producer_is_gcc_lt_4_3 (false),
+    producer_is_icc (false),
+    producer_is_icc_lt_14 (false),
+    producer_is_codewarrior (false),
+    processing_has_namespace_info (false)
+{
+}
+
+/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
+
+static void
+prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
+		       enum language pretend_language)
+{
+  struct attribute *attr;
+
+  /* Set the language we're debugging.  */
+  attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
+  if (attr != nullptr)
+    set_cu_language (DW_UNSND (attr), cu);
+  else
+    {
+      cu->language = pretend_language;
+      cu->language_defn = language_def (cu->language);
+    }
+
+  cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
+}
+
+/* See read.h.  */
+
+dwarf2_cu *
+dwarf2_per_objfile::get_cu (dwarf2_per_cu_data *per_cu)
+{
+  auto it = m_dwarf2_cus.find (per_cu);
+  if (it == m_dwarf2_cus.end ())
+    return nullptr;
+
+  return it->second;
+}
+
+/* See read.h.  */
+
+void
+dwarf2_per_objfile::set_cu (dwarf2_per_cu_data *per_cu, dwarf2_cu *cu)
+{
+  gdb_assert (this->get_cu (per_cu) == nullptr);
+
+  m_dwarf2_cus[per_cu] = cu;
+}
+
+/* See read.h.  */
+
+void
+dwarf2_per_objfile::age_comp_units ()
+{
+  if (dwarf_read_debug > 1)
+    fprintf_unfiltered (gdb_stdlog, "age_comp_units: running\n");
+
+  /* This is not expected to be called in the middle of CU expansion.  There is
+     an invariant that if a CU is in the CUs-to-expand queue, its DIEs are
+     loaded in memory.  Calling age_comp_units while the queue is in use could
+     make us free the DIEs for a CU that is in the queue and therefore break
+     that invariant.  */
+  gdb_assert (!this->per_bfd->queue.has_value ());
+
+  /* Start by clearing all marks.  */
+  for (auto pair : m_dwarf2_cus)
+    pair.second->mark = false;
+
+  /* Traverse all CUs, mark them and their dependencies if used recently
+     enough.  */
+  for (auto pair : m_dwarf2_cus)
+    {
+      dwarf2_cu *cu = pair.second;
+
+      cu->last_used++;
+      if (cu->last_used <= dwarf_max_cache_age)
+	dwarf2_mark (cu);
+    }
+
+  /* Delete all CUs still not marked.  */
+  for (auto it = m_dwarf2_cus.begin (); it != m_dwarf2_cus.end ();)
+    {
+      dwarf2_cu *cu = it->second;
+
+      if (!cu->mark)
+	{
+	  delete cu;
+	  it = m_dwarf2_cus.erase (it);
+	}
+      else
+	it++;
+    }
+}
+
+/* See read.h.  */
+
+void
+dwarf2_per_objfile::remove_cu (dwarf2_per_cu_data *per_cu)
+{
+  auto it = m_dwarf2_cus.find (per_cu);
+  if (it == m_dwarf2_cus.end ())
+    return;
+
+  delete it->second;
+
+  m_dwarf2_cus.erase (it);
+}
+
+dwarf2_per_objfile::~dwarf2_per_objfile ()
+{
+  remove_all_cus ();
+}
+
+/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
+   We store these in a hash table separate from the DIEs, and preserve them
+   when the DIEs are flushed out of cache.
+
+   The CU "per_cu" pointer is needed because offset alone is not enough to
+   uniquely identify the type.  A file may have multiple .debug_types sections,
+   or the type may come from a DWO file.  Furthermore, while it's more logical
+   to use per_cu->section+offset, with Fission the section with the data is in
+   the DWO file but we don't know that section at the point we need it.
+   We have to use something in dwarf2_per_cu_data (or the pointer to it)
+   because we can enter the lookup routine, get_die_type_at_offset, from
+   outside this file, and thus won't necessarily have PER_CU->cu.
+   Fortunately, PER_CU is stable for the life of the objfile.  */
+
+struct dwarf2_per_cu_offset_and_type
+{
+  const struct dwarf2_per_cu_data *per_cu;
+  sect_offset sect_off;
+  struct type *type;
+};
+
+/* Hash function for a dwarf2_per_cu_offset_and_type.  */
+
+static hashval_t
+per_cu_offset_and_type_hash (const void *item)
+{
+  const struct dwarf2_per_cu_offset_and_type *ofs
+    = (const struct dwarf2_per_cu_offset_and_type *) item;
+
+  return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
+}
+
+/* Equality function for a dwarf2_per_cu_offset_and_type.  */
+
+static int
+per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
+{
+  const struct dwarf2_per_cu_offset_and_type *ofs_lhs
+    = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
+  const struct dwarf2_per_cu_offset_and_type *ofs_rhs
+    = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
+
+  return (ofs_lhs->per_cu == ofs_rhs->per_cu
+	  && ofs_lhs->sect_off == ofs_rhs->sect_off);
+}
+
+/* Set the type associated with DIE to TYPE.  Save it in CU's hash
+   table if necessary.  For convenience, return TYPE.
+
+   The DIEs reading must have careful ordering to:
+    * Not cause infinite loops trying to read in DIEs as a prerequisite for
+      reading current DIE.
+    * Not trying to dereference contents of still incompletely read in types
+      while reading in other DIEs.
+    * Enable referencing still incompletely read in types just by a pointer to
+      the type without accessing its fields.
+
+   Therefore caller should follow these rules:
+     * Try to fetch any prerequisite types we may need to build this DIE type
+       before building the type and calling set_die_type.
+     * After building type call set_die_type for current DIE as soon as
+       possible before fetching more types to complete the current type.
+     * Make the type as complete as possible before fetching more types.  */
+
+static struct type *
+set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+{
+  dwarf2_per_objfile *per_objfile = cu->per_objfile;
+  struct dwarf2_per_cu_offset_and_type **slot, ofs;
+  struct objfile *objfile = per_objfile->objfile;
+  struct attribute *attr;
+  struct dynamic_prop prop;
+
+  /* For Ada types, make sure that the gnat-specific data is always
+     initialized (if not already set).  There are a few types where
+     we should not be doing so, because the type-specific area is
+     already used to hold some other piece of info (eg: TYPE_CODE_FLT
+     where the type-specific area is used to store the floatformat).
+     But this is not a problem, because the gnat-specific information
+     is actually not needed for these types.  */
+  if (need_gnat_info (cu)
+      && type->code () != TYPE_CODE_FUNC
+      && type->code () != TYPE_CODE_FLT
+      && type->code () != TYPE_CODE_METHODPTR
+      && type->code () != TYPE_CODE_MEMBERPTR
+      && type->code () != TYPE_CODE_METHOD
+      && !HAVE_GNAT_AUX_INFO (type))
+    INIT_GNAT_SPECIFIC (type);
+
+  /* Read DW_AT_allocated and set in type.  */
+  attr = dwarf2_attr (die, DW_AT_allocated, cu);
+  if (attr != NULL)
+    {
+      struct type *prop_type = cu->addr_sized_int_type (false);
+      if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
+        type->add_dyn_prop (DYN_PROP_ALLOCATED, prop);
+    }
+
+  /* Read DW_AT_associated and set in type.  */
+  attr = dwarf2_attr (die, DW_AT_associated, cu);
+  if (attr != NULL)
+    {
+      struct type *prop_type = cu->addr_sized_int_type (false);
+      if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
+        type->add_dyn_prop (DYN_PROP_ASSOCIATED, prop);
+    }
+
+  /* Read DW_AT_data_location and set in type.  */
+  attr = dwarf2_attr (die, DW_AT_data_location, cu);
+  if (attr_to_dynamic_prop (attr, die, cu, &prop, cu->addr_type ()))
+    type->add_dyn_prop (DYN_PROP_DATA_LOCATION, prop);
+
+  if (per_objfile->die_type_hash == NULL)
+    per_objfile->die_type_hash
+      = htab_up (htab_create_alloc (127,
+				    per_cu_offset_and_type_hash,
+				    per_cu_offset_and_type_eq,
+				    NULL, xcalloc, xfree));
+
+  ofs.per_cu = cu->per_cu;
+  ofs.sect_off = die->sect_off;
+  ofs.type = type;
+  slot = (struct dwarf2_per_cu_offset_and_type **)
+    htab_find_slot (per_objfile->die_type_hash.get (), &ofs, INSERT);
+  if (*slot)
+    complaint (_("A problem internal to GDB: DIE %s has type already set"),
+	       sect_offset_str (die->sect_off));
+  *slot = XOBNEW (&objfile->objfile_obstack,
+		  struct dwarf2_per_cu_offset_and_type);
+  **slot = ofs;
+  return type;
+}
+
+/* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
+   or return NULL if the die does not have a saved type.  */
+
+static struct type *
+get_die_type_at_offset (sect_offset sect_off,
+			dwarf2_per_cu_data *per_cu,
+			dwarf2_per_objfile *per_objfile)
+{
+  struct dwarf2_per_cu_offset_and_type *slot, ofs;
+
+  if (per_objfile->die_type_hash == NULL)
+    return NULL;
+
+  ofs.per_cu = per_cu;
+  ofs.sect_off = sect_off;
+  slot = ((struct dwarf2_per_cu_offset_and_type *)
+	  htab_find (per_objfile->die_type_hash.get (), &ofs));
+  if (slot)
+    return slot->type;
+  else
+    return NULL;
+}
+
+/* Look up the type for DIE in CU in die_type_hash,
+   or return NULL if DIE does not have a saved type.  */
+
+static struct type *
+get_die_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+  return get_die_type_at_offset (die->sect_off, cu->per_cu, cu->per_objfile);
+}
+
+/* Add a dependence relationship from CU to REF_PER_CU.  */
+
+static void
+dwarf2_add_dependence (struct dwarf2_cu *cu,
+		       struct dwarf2_per_cu_data *ref_per_cu)
+{
+  void **slot;
+
+  if (cu->dependencies == NULL)
+    cu->dependencies
+      = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
+			      NULL, &cu->comp_unit_obstack,
+			      hashtab_obstack_allocate,
+			      dummy_obstack_deallocate);
+
+  slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
+  if (*slot == NULL)
+    *slot = ref_per_cu;
+}
+
+/* Subroutine of dwarf2_mark to pass to htab_traverse.
+   Set the mark field in every compilation unit in the
+   cache that we must keep because we are keeping CU.
+
+   DATA is the dwarf2_per_objfile object in which to look up CUs.  */
+
+static int
+dwarf2_mark_helper (void **slot, void *data)
+{
+  dwarf2_per_cu_data *per_cu = (dwarf2_per_cu_data *) *slot;
+  dwarf2_per_objfile *per_objfile = (dwarf2_per_objfile *) data;
+  dwarf2_cu *cu = per_objfile->get_cu (per_cu);
+
+  /* cu->dependencies references may not yet have been ever read if QUIT aborts
+     reading of the chain.  As such dependencies remain valid it is not much
+     useful to track and undo them during QUIT cleanups.  */
+  if (cu == nullptr)
+    return 1;
+
+  if (cu->mark)
+    return 1;
+
+  cu->mark = true;
+
+  if (cu->dependencies != nullptr)
+    htab_traverse (cu->dependencies, dwarf2_mark_helper, per_objfile);
+
+  return 1;
+}
+
+/* Set the mark field in CU and in every other compilation unit in the
+   cache that we must keep because we are keeping CU.  */
+
+static void
+dwarf2_mark (struct dwarf2_cu *cu)
+{
+  if (cu->mark)
+    return;
+
+  cu->mark = true;
+
+  if (cu->dependencies != nullptr)
+    htab_traverse (cu->dependencies, dwarf2_mark_helper, cu->per_objfile);
+}
+
+/* Trivial hash function for partial_die_info: the hash value of a DIE
+   is its offset in .debug_info for this objfile.  */
+
+static hashval_t
+partial_die_hash (const void *item)
+{
+  const struct partial_die_info *part_die
+    = (const struct partial_die_info *) item;
+
+  return to_underlying (part_die->sect_off);
+}
+
+/* Trivial comparison function for partial_die_info structures: two DIEs
+   are equal if they have the same offset.  */
+
+static int
+partial_die_eq (const void *item_lhs, const void *item_rhs)
+{
+  const struct partial_die_info *part_die_lhs
+    = (const struct partial_die_info *) item_lhs;
+  const struct partial_die_info *part_die_rhs
+    = (const struct partial_die_info *) item_rhs;
+
+  return part_die_lhs->sect_off == part_die_rhs->sect_off;
+}
+
+struct cmd_list_element *set_dwarf_cmdlist;
+struct cmd_list_element *show_dwarf_cmdlist;
+
+static void
+show_check_physname (struct ui_file *file, int from_tty,
+		     struct cmd_list_element *c, const char *value)
+{
+  fprintf_filtered (file,
+		    _("Whether to check \"physname\" is %s.\n"),
+		    value);
+}
+
+void _initialize_dwarf2_read ();
+void
+_initialize_dwarf2_read ()
+{
+  add_basic_prefix_cmd ("dwarf", class_maintenance, _("\
+Set DWARF specific variables.\n\
+Configure DWARF variables such as the cache size."),
+			&set_dwarf_cmdlist, "maintenance set dwarf ",
+			0/*allow-unknown*/, &maintenance_set_cmdlist);
+
+  add_show_prefix_cmd ("dwarf", class_maintenance, _("\
+Show DWARF specific variables.\n\
+Show DWARF variables such as the cache size."),
+		       &show_dwarf_cmdlist, "maintenance show dwarf ",
+		       0/*allow-unknown*/, &maintenance_show_cmdlist);
+
+  add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
+			    &dwarf_max_cache_age, _("\
+Set the upper bound on the age of cached DWARF compilation units."), _("\
+Show the upper bound on the age of cached DWARF compilation units."), _("\
+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."),
+			    NULL,
+			    show_dwarf_max_cache_age,
+			    &set_dwarf_cmdlist,
+			    &show_dwarf_cmdlist);
+
+  add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
+Set debugging of the DWARF reader."), _("\
+Show debugging of the DWARF reader."), _("\
+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."),
+			    NULL,
+			    NULL,
+			    &setdebuglist, &showdebuglist);
+
+  add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
+Set debugging of the DWARF DIE reader."), _("\
+Show debugging of the DWARF DIE reader."), _("\
+When enabled (non-zero), DIEs are dumped after they are read in.\n\
+The value is the maximum depth to print."),
+			     NULL,
+			     NULL,
+			     &setdebuglist, &showdebuglist);
+
+  add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
+Set debugging of the dwarf line reader."), _("\
+Show debugging of the dwarf line reader."), _("\
+When enabled (non-zero), line number entries are dumped as they are read in.\n\
+A value of 1 (one) provides basic information.\n\
+A value greater than 1 provides more verbose information."),
+			     NULL,
+			     NULL,
+			     &setdebuglist, &showdebuglist);
+
+  add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
+Set cross-checking of \"physname\" code against demangler."), _("\
+Show cross-checking of \"physname\" code against demangler."), _("\
+When enabled, GDB's internal \"physname\" code is checked against\n\
+the demangler."),
+			   NULL, show_check_physname,
+			   &setdebuglist, &showdebuglist);
+
+  add_setshow_boolean_cmd ("use-deprecated-index-sections",
+			   no_class, &use_deprecated_index_sections, _("\
+Set whether to use deprecated gdb_index sections."), _("\
+Show whether to use deprecated gdb_index sections."), _("\
+When enabled, deprecated .gdb_index sections are used anyway.\n\
+Normally they are ignored either because of a missing feature or\n\
+performance issue.\n\
+Warning: This option must be enabled before gdb reads the file."),
+			   NULL,
+			   NULL,
+			   &setlist, &showlist);
+
+  dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
+							&dwarf2_locexpr_funcs);
+  dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
+							&dwarf2_loclist_funcs);
+
+  dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
+					&dwarf2_block_frame_base_locexpr_funcs);
+  dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
+					&dwarf2_block_frame_base_loclist_funcs);
+
+#if GDB_SELF_TEST
+  selftests::register_test ("dw2_expand_symtabs_matching",
+			    selftests::dw2_expand_symtabs_matching::run_test);
+  selftests::register_test ("dwarf2_find_containing_comp_unit",
+			    selftests::find_containing_comp_unit::run_test);
+#endif
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/read.h ./gdb/dwarf2/read.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/read.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/read.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,697 @@
+/* DWARF 2 debugging format support for GDB.
+
+   Copyright (C) 1994-2021 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 DWARF2READ_H
+#define DWARF2READ_H
+
+#include <queue>
+#include <unordered_map>
+#include "dwarf2/comp-unit.h"
+#include "dwarf2/index-cache.h"
+#include "dwarf2/section.h"
+#include "filename-seen-cache.h"
+#include "gdb_obstack.h"
+#include "gdbsupport/hash_enum.h"
+#include "gdbsupport/function-view.h"
+#include "psympriv.h"
+
+/* Hold 'maintenance (set|show) dwarf' commands.  */
+extern struct cmd_list_element *set_dwarf_cmdlist;
+extern struct cmd_list_element *show_dwarf_cmdlist;
+
+struct tu_stats
+{
+  int nr_uniq_abbrev_tables;
+  int nr_symtabs;
+  int nr_symtab_sharers;
+  int nr_stmt_less_type_units;
+  int nr_all_type_units_reallocs;
+};
+
+struct dwarf2_cu;
+struct dwarf2_debug_sections;
+struct dwarf2_per_cu_data;
+struct mapped_index;
+struct mapped_debug_names;
+struct signatured_type;
+struct type_unit_group;
+
+/* One item on the queue of compilation units to read in full symbols
+   for.  */
+struct dwarf2_queue_item
+{
+  dwarf2_queue_item (dwarf2_per_cu_data *cu, dwarf2_per_objfile *per_objfile,
+		     enum language lang)
+    : per_cu (cu),
+      per_objfile (per_objfile),
+      pretend_language (lang)
+  {
+  }
+
+  ~dwarf2_queue_item ();
+
+  DISABLE_COPY_AND_ASSIGN (dwarf2_queue_item);
+
+  dwarf2_per_cu_data *per_cu;
+  dwarf2_per_objfile *per_objfile;
+  enum language pretend_language;
+};
+
+/* Some DWARF data can be shared across objfiles who share the same BFD,
+   this data is stored in this object.
+
+   Two dwarf2_per_objfile objects representing objfiles sharing the same BFD
+   will point to the same instance of dwarf2_per_bfd, unless the BFD requires
+   relocation.  */
+
+struct dwarf2_per_bfd
+{
+  /* Construct a dwarf2_per_bfd for OBFD.  NAMES points to the
+     dwarf2 section names, or is NULL if the standard ELF names are
+     used.  CAN_COPY is true for formats where symbol
+     interposition is possible and so symbol values must follow copy
+     relocation rules.  */
+  dwarf2_per_bfd (bfd *obfd, const dwarf2_debug_sections *names, bool can_copy);
+
+  ~dwarf2_per_bfd ();
+
+  DISABLE_COPY_AND_ASSIGN (dwarf2_per_bfd);
+
+  /* Return the CU/TU given its index.
+
+     This is intended for loops like:
+
+     for (i = 0; i < (dwarf2_per_bfd->n_comp_units
+		      + dwarf2_per_bfd->n_type_units); ++i)
+       {
+         dwarf2_per_cu_data *per_cu = dwarf2_per_bfd->get_cutu (i);
+
+         ...;
+       }
+  */
+  dwarf2_per_cu_data *get_cutu (int index);
+
+  /* Return the CU given its index.
+     This differs from get_cutu in that it's for when you know INDEX refers to a
+     CU.  */
+  dwarf2_per_cu_data *get_cu (int index);
+
+  /* Return the TU given its index.
+     This differs from get_cutu in that it's for when you know INDEX refers to a
+     TU.  */
+  signatured_type *get_tu (int index);
+
+  /* A convenience function to allocate a dwarf2_per_cu_data.  The
+     returned object has its "index" field set properly.  The object
+     is allocated on the dwarf2_per_bfd obstack.  */
+  dwarf2_per_cu_data *allocate_per_cu ();
+
+  /* A convenience function to allocate a signatured_type.  The
+     returned object has its "index" field set properly.  The object
+     is allocated on the dwarf2_per_bfd obstack.  */
+  signatured_type *allocate_signatured_type ();
+
+  /* Return the number of partial symtabs allocated with allocate_per_cu
+     and allocate_signatured_type so far.  */
+  int num_psymtabs () const
+  { return m_num_psymtabs; }
+
+private:
+  /* This function is mapped across the sections and remembers the
+     offset and size of each of the debugging sections we are
+     interested in.  */
+  void locate_sections (bfd *abfd, asection *sectp,
+			const dwarf2_debug_sections &names);
+
+public:
+  /* The corresponding BFD.  */
+  bfd *obfd;
+
+  /* Objects that can be shared across objfiles are stored in this
+     obstack or on the psymtab obstack, while objects that are
+     objfile-specific are stored on the objfile obstack.  */
+  auto_obstack obstack;
+
+  dwarf2_section_info info {};
+  dwarf2_section_info abbrev {};
+  dwarf2_section_info line {};
+  dwarf2_section_info loc {};
+  dwarf2_section_info loclists {};
+  dwarf2_section_info macinfo {};
+  dwarf2_section_info macro {};
+  dwarf2_section_info str {};
+  dwarf2_section_info str_offsets {};
+  dwarf2_section_info line_str {};
+  dwarf2_section_info ranges {};
+  dwarf2_section_info rnglists {};
+  dwarf2_section_info addr {};
+  dwarf2_section_info frame {};
+  dwarf2_section_info eh_frame {};
+  dwarf2_section_info gdb_index {};
+  dwarf2_section_info debug_names {};
+  dwarf2_section_info debug_aranges {};
+
+  std::vector<dwarf2_section_info> types;
+
+  /* Table of all the compilation units.  This is used to locate
+     the target compilation unit of a particular reference.  */
+  std::vector<dwarf2_per_cu_data *> all_comp_units;
+
+  /* The .debug_types-related CUs (TUs).  */
+  std::vector<signatured_type *> all_type_units;
+
+  /* Table of struct type_unit_group objects.
+     The hash key is the DW_AT_stmt_list value.  */
+  htab_up type_unit_groups;
+
+  /* A table mapping .debug_types signatures to its signatured_type entry.
+     This is NULL if the .debug_types section hasn't been read in yet.  */
+  htab_up signatured_types;
+
+  /* Type unit statistics, to see how well the scaling improvements
+     are doing.  */
+  struct tu_stats tu_stats {};
+
+  /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
+     This is NULL if the table hasn't been allocated yet.  */
+  htab_up dwo_files;
+
+  /* True if we've checked for whether there is a DWP file.  */
+  bool dwp_checked = false;
+
+  /* The DWP file if there is one, or NULL.  */
+  std::unique_ptr<struct dwp_file> dwp_file;
+
+  /* The shared '.dwz' file, if one exists.  This is used when the
+     original data was compressed using 'dwz -m'.  */
+  std::unique_ptr<struct dwz_file> dwz_file;
+
+  /* Whether copy relocations are supported by this object format.  */
+  bool can_copy;
+
+  /* A flag indicating whether this objfile has a section loaded at a
+     VMA of 0.  */
+  bool has_section_at_zero = false;
+
+  /* True if we are using the mapped index,
+     or we are faking it for OBJF_READNOW's sake.  */
+  bool using_index = false;
+
+  /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
+  std::unique_ptr<mapped_index> index_table;
+
+  /* The mapped index, or NULL if .debug_names is missing or not being used.  */
+  std::unique_ptr<mapped_debug_names> debug_names_table;
+
+  /* When using index_table, this keeps track of all quick_file_names entries.
+     TUs typically share line table entries with a CU, so we maintain a
+     separate table of all line table entries to support the sharing.
+     Note that while there can be way more TUs than CUs, we've already
+     sorted all the TUs into "type unit groups", grouped by their
+     DW_AT_stmt_list value.  Therefore the only sharing done here is with a
+     CU and its associated TU group if there is one.  */
+  htab_up quick_file_names_table;
+
+  /* Set during partial symbol reading, to prevent queueing of full
+     symbols.  */
+  bool reading_partial_symbols = false;
+
+  /* The CUs we recently read.  */
+  std::vector<dwarf2_per_cu_data *> just_read_cus;
+
+  /* Table containing all filenames.  This is an optional because the
+     table is lazily constructed on first access.  */
+  gdb::optional<filename_seen_cache> filenames_cache;
+
+  /* If we loaded the index from an external file, this contains the
+     resources associated to the open file, memory mapping, etc.  */
+  std::unique_ptr<index_cache_resource> index_cache_res;
+
+  /* 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>>
+    abstract_to_concrete;
+
+  /* CUs that are queued to be read.  */
+  gdb::optional<std::queue<dwarf2_queue_item>> queue;
+
+  /* We keep a separate reference to the partial symtabs, in case we
+     are sharing them between objfiles.  This is only set after
+     partial symbols have been read the first time.  */
+  std::shared_ptr<psymtab_storage> partial_symtabs;
+
+private:
+
+  /* The total number of per_cu and signatured_type objects that have
+     been created so far for this reader.  */
+  size_t m_num_psymtabs = 0;
+};
+
+/* This is the per-objfile data associated with a type_unit_group.  */
+
+struct type_unit_group_unshareable
+{
+  /* The compunit symtab.
+     Type units in a group needn't all be defined in the same source file,
+     so we create an essentially anonymous symtab as the compunit symtab.  */
+  struct compunit_symtab *compunit_symtab = nullptr;
+
+  /* The number of symtabs from the line header.
+     The value here must match line_header.num_file_names.  */
+  unsigned int num_symtabs = 0;
+
+  /* The symbol tables for this TU (obtained from the files listed in
+     DW_AT_stmt_list).
+     WARNING: The order of entries here must match the order of entries
+     in the line header.  After the first TU using this type_unit_group, the
+     line header for the subsequent TUs is recreated from this.  This is done
+     because we need to use the same symtabs for each TU using the same
+     DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
+     there's no guarantee the line header doesn't have duplicate entries.  */
+  struct symtab **symtabs = nullptr;
+};
+
+/* Collection of data recorded per objfile.
+   This hangs off of dwarf2_objfile_data_key.
+
+   Some DWARF data cannot (currently) be shared across objfiles.  Such
+   data is stored in this object.  */
+
+struct dwarf2_per_objfile
+{
+  dwarf2_per_objfile (struct objfile *objfile, dwarf2_per_bfd *per_bfd)
+    : objfile (objfile), per_bfd (per_bfd)
+  {}
+
+  ~dwarf2_per_objfile ();
+
+  /* Return pointer to string at .debug_line_str offset as read from BUF.
+     BUF is assumed to be in a compilation unit described by CU_HEADER.
+     Return *BYTES_READ_PTR count of bytes read from BUF.  */
+  const char *read_line_string (const gdb_byte *buf,
+				const struct comp_unit_head *cu_header,
+				unsigned int *bytes_read_ptr);
+
+  /* Resize the M_SYMTABS vector to the needed size (the number of partial
+     symtabs allocated by the per-bfd).  */
+  void resize_symtabs ()
+  {
+    /* The symtabs vector should only grow, not shrink.  */
+    gdb_assert (per_bfd->num_psymtabs () >= m_symtabs.size ());
+
+    m_symtabs.resize (per_bfd->num_psymtabs ());
+  }
+
+  /* Return true if the symtab corresponding to PER_CU has been set,
+     false otherwise.  */
+  bool symtab_set_p (const dwarf2_per_cu_data *per_cu) const;
+
+  /* Return the compunit_symtab associated to PER_CU, if it has been created.  */
+  compunit_symtab *get_symtab (const dwarf2_per_cu_data *per_cu) const;
+
+  /* Set the compunit_symtab associated to PER_CU.  */
+  void set_symtab (const dwarf2_per_cu_data *per_cu, compunit_symtab *symtab);
+
+  /* Get the type_unit_group_unshareable corresponding to TU_GROUP.  If one
+     does not exist, create it.  */
+  type_unit_group_unshareable *get_type_unit_group_unshareable
+    (type_unit_group *tu_group);
+
+  struct type *get_type_for_signatured_type (signatured_type *sig_type) const;
+
+  void set_type_for_signatured_type (signatured_type *sig_type,
+				     struct type *type);
+
+  /* Find an integer type SIZE_IN_BYTES bytes in size and return it.
+     UNSIGNED_P controls if the integer is unsigned or not.  */
+  struct type *int_type (int size_in_bytes, bool unsigned_p) const;
+
+  /* Get the dwarf2_cu matching PER_CU for this objfile.  */
+  dwarf2_cu *get_cu (dwarf2_per_cu_data *per_cu);
+
+  /* Set the dwarf2_cu matching PER_CU for this objfile.  */
+  void set_cu (dwarf2_per_cu_data *per_cu, dwarf2_cu *cu);
+
+  /* Remove/free the dwarf2_cu matching PER_CU for this objfile.  */
+  void remove_cu (dwarf2_per_cu_data *per_cu);
+
+  /* Free all cached compilation units.  */
+  void remove_all_cus ();
+
+  /* Increase the age counter on each CU compilation unit and free
+     any that are too old.  */
+  void age_comp_units ();
+
+  /* Back link.  */
+  struct objfile *objfile;
+
+  /* Pointer to the data that is (possibly) shared between this objfile and
+     other objfiles backed by the same BFD.  */
+  struct dwarf2_per_bfd *per_bfd;
+
+  /* Table mapping type DIEs to their struct type *.
+     This is nullptr if not allocated yet.
+     The mapping is done via (CU/TU + DIE offset) -> type.  */
+  htab_up die_type_hash;
+
+  /* Table containing line_header indexed by offset and offset_in_dwz.  */
+  htab_up line_header_hash;
+
+private:
+  /* Hold the corresponding compunit_symtab for each CU or TU.  This
+     is indexed by dwarf2_per_cu_data::index.  A NULL value means
+     that the CU/TU has not been expanded yet.  */
+  std::vector<compunit_symtab *> m_symtabs;
+
+  /* Map from a type unit group to the corresponding unshared
+     structure.  */
+  typedef std::unique_ptr<type_unit_group_unshareable>
+    type_unit_group_unshareable_up;
+
+  std::unordered_map<type_unit_group *, type_unit_group_unshareable_up>
+    m_type_units;
+
+  /* Map from signatured types to the corresponding struct type.  */
+  std::unordered_map<signatured_type *, struct type *> m_type_map;
+
+  /* Map from the objfile-independent dwarf2_per_cu_data instances to the
+     corresponding objfile-dependent dwarf2_cu instances.  */
+  std::unordered_map<dwarf2_per_cu_data *, dwarf2_cu *> m_dwarf2_cus;
+};
+
+/* Get the dwarf2_per_objfile associated to OBJFILE.  */
+
+dwarf2_per_objfile *get_dwarf2_per_objfile (struct objfile *objfile);
+
+/* A partial symtab specialized for DWARF.  */
+struct dwarf2_psymtab : public partial_symtab
+{
+  dwarf2_psymtab (const char *filename, struct objfile *objfile,
+		  dwarf2_per_cu_data *per_cu)
+    : partial_symtab (filename, objfile, 0),
+      per_cu_data (per_cu)
+  {
+  }
+
+  void read_symtab (struct objfile *) override;
+  void expand_psymtab (struct objfile *) override;
+  bool readin_p (struct objfile *) const override;
+  compunit_symtab *get_compunit_symtab (struct objfile *) const override;
+
+  struct dwarf2_per_cu_data *per_cu_data;
+};
+
+/* Persistent data held for a compilation unit, even when not
+   processing it.  We put a pointer to this structure in the
+   psymtab.  */
+
+struct dwarf2_per_cu_data
+{
+  /* The start offset and length of this compilation unit.
+     NOTE: Unlike comp_unit_head.length, this length includes
+     initial_length_size.
+     If the DIE refers to a DWO file, this is always of the original die,
+     not the DWO file.  */
+  sect_offset sect_off;
+  unsigned int length;
+
+  /* DWARF standard version this data has been read from (such as 4 or 5).  */
+  short dwarf_version;
+
+  /* Flag indicating this compilation unit will be read in before
+     any of the current compilation units are processed.  */
+  unsigned int queued : 1;
+
+  /* This flag will be set when reading partial DIEs if we need to load
+     absolutely all DIEs for this compilation unit, instead of just the ones
+     we think are interesting.  It gets set if we look for a DIE in the
+     hash table and don't find it.  */
+  unsigned int load_all_dies : 1;
+
+  /* Non-zero if this CU is from .debug_types.
+     Struct dwarf2_per_cu_data is contained in struct signatured_type iff
+     this is non-zero.  */
+  unsigned int is_debug_types : 1;
+
+  /* Non-zero if this CU is from the .dwz file.  */
+  unsigned int is_dwz : 1;
+
+  /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
+     This flag is only valid if is_debug_types is true.
+     We can't read a CU directly from a DWO file: There are required
+     attributes in the stub.  */
+  unsigned int reading_dwo_directly : 1;
+
+  /* Non-zero if the TU has been read.
+     This is used to assist the "Stay in DWO Optimization" for Fission:
+     When reading a DWO, it's faster to read TUs from the DWO instead of
+     fetching them from random other DWOs (due to comdat folding).
+     If the TU has already been read, the optimization is unnecessary
+     (and unwise - we don't want to change where gdb thinks the TU lives
+     "midflight").
+     This flag is only valid if is_debug_types is true.  */
+  unsigned int tu_read : 1;
+
+  /* Our index in the unshared "symtabs" vector.  */
+  unsigned index;
+
+  /* The section this CU/TU lives in.
+     If the DIE refers to a DWO file, this is always the original die,
+     not the DWO file.  */
+  struct dwarf2_section_info *section;
+
+  /* The unit type of this CU.  */
+  enum dwarf_unit_type unit_type;
+
+  /* The language of this CU.  */
+  enum language lang;
+
+  /* Backlink to the owner of this.  */
+  dwarf2_per_bfd *per_bfd;
+
+  /* DWARF header of this CU.  Note that dwarf2_cu reads its own version of the
+     header, which may differ from this one, since it may pass rcuh_kind::TYPE
+     to read_comp_unit_head, whereas for dwarf2_per_cu_data we always pass
+     rcuh_kind::COMPILE.
+
+     Don't access this field directly, use the get_header method instead.  It
+     should be private, but we can't make it private at the moment.  */
+  mutable comp_unit_head m_header;
+
+  /* True if HEADER has been read in.
+
+     Don't access this field directly.  It should be private, but we can't make
+     it private at the moment.  */
+  mutable bool m_header_read_in;
+
+  /* When dwarf2_per_bfd::using_index is true, the 'quick' field
+     is active.  Otherwise, the 'psymtab' field is active.  */
+  union
+  {
+    /* The partial symbol table associated with this compilation unit,
+       or NULL for unread partial units.  */
+    dwarf2_psymtab *psymtab;
+
+    /* Data needed by the "quick" functions.  */
+    struct dwarf2_per_cu_quick_data *quick;
+  } v;
+
+  /* The CUs we import using DW_TAG_imported_unit.  This is filled in
+     while reading psymtabs, used to compute the psymtab dependencies,
+     and then cleared.  Then it is filled in again while reading full
+     symbols, and only deleted when the objfile is destroyed.
+
+     This is also used to work around a difference between the way gold
+     generates .gdb_index version <=7 and the way gdb does.  Arguably this
+     is a gold bug.  For symbols coming from TUs, gold records in the index
+     the CU that includes the TU instead of the TU itself.  This breaks
+     dw2_lookup_symbol: It assumes that if the index says symbol X lives
+     in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
+     will find X.  Alas TUs live in their own symtab, so after expanding CU Y
+     we need to look in TU Z to find X.  Fortunately, this is akin to
+     DW_TAG_imported_unit, so we just use the same mechanism: For
+     .gdb_index version <=7 this also records the TUs that the CU referred
+     to.  Concurrently with this change gdb was modified to emit version 8
+     indices so we only pay a price for gold generated indices.
+     http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
+
+     This currently needs to be a public member due to how
+     dwarf2_per_cu_data is allocated and used.  Ideally in future things
+     could be refactored to make this private.  Until then please try to
+     avoid direct access to this member, and instead use the helper
+     functions above.  */
+  std::vector <dwarf2_per_cu_data *> *imported_symtabs;
+
+  /* Return true of IMPORTED_SYMTABS is empty or not yet allocated.  */
+  bool imported_symtabs_empty () const
+  {
+    return (imported_symtabs == nullptr || imported_symtabs->empty ());
+  }
+
+  /* Push P to the back of IMPORTED_SYMTABS, allocated IMPORTED_SYMTABS
+     first if required.  */
+  void imported_symtabs_push (dwarf2_per_cu_data *p)
+  {
+    if (imported_symtabs == nullptr)
+      imported_symtabs = new std::vector <dwarf2_per_cu_data *>;
+    imported_symtabs->push_back (p);
+  }
+
+  /* Return the size of IMPORTED_SYMTABS if it is allocated, otherwise
+     return 0.  */
+  size_t imported_symtabs_size () const
+  {
+    if (imported_symtabs == nullptr)
+      return 0;
+    return imported_symtabs->size ();
+  }
+
+  /* Delete IMPORTED_SYMTABS and set the pointer back to nullptr.  */
+  void imported_symtabs_free ()
+  {
+    delete imported_symtabs;
+    imported_symtabs = nullptr;
+  }
+
+  /* Get the header of this per_cu, reading it if necessary.  */
+  const comp_unit_head *get_header () const;
+
+  /* Return the address size given in the compilation unit header for
+     this CU.  */
+  int addr_size () const;
+
+  /* Return the offset size given in the compilation unit header for
+     this CU.  */
+  int offset_size () const;
+
+  /* Return the DW_FORM_ref_addr size given in the compilation unit
+     header for this CU.  */
+  int ref_addr_size () const;
+
+  /* Return DWARF version number of this CU.  */
+  short version () const
+  {
+    return dwarf_version;
+  }
+
+  /* A type unit group has a per_cu object that is recognized by
+     having no section.  */
+  bool type_unit_group_p () const
+  {
+    return section == nullptr;
+  }
+};
+
+/* Entry in the signatured_types hash table.  */
+
+struct signatured_type
+{
+  /* The "per_cu" object of this type.
+     This struct is used iff per_cu.is_debug_types.
+     N.B.: This is the first member so that it's easy to convert pointers
+     between them.  */
+  struct dwarf2_per_cu_data per_cu;
+
+  /* The type's signature.  */
+  ULONGEST signature;
+
+  /* Offset in the TU of the type's DIE, as read from the TU header.
+     If this TU is a DWO stub and the definition lives in a DWO file
+     (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
+  cu_offset type_offset_in_tu;
+
+  /* Offset in the section of the type's DIE.
+     If the definition lives in a DWO file, this is the offset in the
+     .debug_types.dwo section.
+     The value is zero until the actual value is known.
+     Zero is otherwise not a valid section offset.  */
+  sect_offset type_offset_in_section;
+
+  /* Type units are grouped by their DW_AT_stmt_list entry so that they
+     can share them.  This points to the containing symtab.  */
+  struct type_unit_group *type_unit_group;
+
+  /* Containing DWO unit.
+     This field is valid iff per_cu.reading_dwo_directly.  */
+  struct dwo_unit *dwo_unit;
+};
+
+/* Open the separate '.dwz' debug file, if needed.  Return NULL if
+   there is no .gnu_debugaltlink section in the file.  Error if there
+   is such a section but the file cannot be found.  */
+
+extern dwz_file *dwarf2_get_dwz_file (dwarf2_per_bfd *per_bfd);
+
+/* Return the type of the DIE at DIE_OFFSET in the CU named by
+   PER_CU.  */
+
+struct type *dwarf2_get_die_type (cu_offset die_offset,
+				  dwarf2_per_cu_data *per_cu,
+				  dwarf2_per_objfile *per_objfile);
+
+/* Given an index in .debug_addr, fetch the value.
+   NOTE: This can be called during dwarf expression evaluation,
+   long after the debug information has been read, and thus per_cu->cu
+   may no longer exist.  */
+
+CORE_ADDR dwarf2_read_addr_index (dwarf2_per_cu_data *per_cu,
+				  dwarf2_per_objfile *per_objfile,
+				  unsigned int addr_index);
+
+/* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
+   Returned value is intended for DW_OP_call*.  Returned
+   dwarf2_locexpr_baton->data has lifetime of
+   PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
+
+struct dwarf2_locexpr_baton dwarf2_fetch_die_loc_sect_off
+  (sect_offset sect_off, dwarf2_per_cu_data *per_cu,
+   dwarf2_per_objfile *per_objfile,
+   gdb::function_view<CORE_ADDR ()> get_frame_pc,
+   bool resolve_abstract_p = false);
+
+/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
+   offset.  */
+
+struct dwarf2_locexpr_baton dwarf2_fetch_die_loc_cu_off
+  (cu_offset offset_in_cu, dwarf2_per_cu_data *per_cu,
+   dwarf2_per_objfile *per_objfile,
+   gdb::function_view<CORE_ADDR ()> get_frame_pc);
+
+/* If the DIE at SECT_OFF in PER_CU has a DW_AT_const_value, return a
+   pointer to the constant bytes and set LEN to the length of the
+   data.  If memory is needed, allocate it on OBSTACK.  If the DIE
+   does not have a DW_AT_const_value, return NULL.  */
+
+extern const gdb_byte *dwarf2_fetch_constant_bytes
+  (sect_offset sect_off, dwarf2_per_cu_data *per_cu,
+   dwarf2_per_objfile *per_objfile, obstack *obstack,
+   LONGEST *len);
+
+/* Return the type of the die at SECT_OFF in PER_CU.  Return NULL if no
+   valid type for this die is found.  */
+
+struct type *dwarf2_fetch_die_type_sect_off
+  (sect_offset sect_off, dwarf2_per_cu_data *per_cu,
+   dwarf2_per_objfile *per_objfile);
+
+/* When non-zero, dump line number entries as they are read in.  */
+extern unsigned int dwarf_line_debug;
+
+#endif /* DWARF2READ_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/section.c ./gdb/dwarf2/section.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/section.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/section.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,206 @@
+/* DWARF 2 low-level section code
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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 "dwarf2/section.h"
+#include "gdb_bfd.h"
+#include "objfiles.h"
+#include "complaints.h"
+
+void
+dwarf2_section_info::overflow_complaint () const
+{
+  complaint (_("debug info runs off end of %s section"
+	       " [in module %s]"),
+	     get_name (), get_file_name ());
+}
+
+struct dwarf2_section_info *
+dwarf2_section_info::get_containing_section () const
+{
+  gdb_assert (is_virtual);
+  return s.containing_section;
+}
+
+struct bfd *
+dwarf2_section_info::get_bfd_owner () const
+{
+  const dwarf2_section_info *section = this;
+  if (is_virtual)
+    {
+      section = get_containing_section ();
+      gdb_assert (!section->is_virtual);
+    }
+  return section->s.section->owner;
+}
+
+asection *
+dwarf2_section_info::get_bfd_section () const
+{
+  const dwarf2_section_info *section = this;
+  if (section->is_virtual)
+    {
+      section = get_containing_section ();
+      gdb_assert (!section->is_virtual);
+    }
+  return section->s.section;
+}
+
+const char *
+dwarf2_section_info::get_name () const
+{
+  asection *sectp = get_bfd_section ();
+
+  gdb_assert (sectp != NULL);
+  return bfd_section_name (sectp);
+}
+
+const char *
+dwarf2_section_info::get_file_name () const
+{
+  bfd *abfd = get_bfd_owner ();
+
+  return bfd_get_filename (abfd);
+}
+
+int
+dwarf2_section_info::get_id () const
+{
+  asection *sectp = get_bfd_section ();
+
+  if (sectp == NULL)
+    return 0;
+  return sectp->id;
+}
+
+int
+dwarf2_section_info::get_flags () const
+{
+  asection *sectp = get_bfd_section ();
+
+  gdb_assert (sectp != NULL);
+  return bfd_section_flags (sectp);
+}
+
+bool
+dwarf2_section_info::empty () const
+{
+  if (is_virtual)
+    return size == 0;
+  return s.section == NULL || size == 0;
+}
+
+void
+dwarf2_section_info::read (struct objfile *objfile)
+{
+  asection *sectp;
+  bfd *abfd;
+  gdb_byte *buf, *retbuf;
+
+  if (readin)
+    return;
+  buffer = NULL;
+  readin = true;
+
+  if (empty ())
+    return;
+
+  sectp = get_bfd_section ();
+
+  /* If this is a virtual section we need to read in the real one first.  */
+  if (is_virtual)
+    {
+      struct dwarf2_section_info *containing_section =
+	get_containing_section ();
+
+      gdb_assert (sectp != NULL);
+      if ((sectp->flags & SEC_RELOC) != 0)
+	{
+	  error (_("Dwarf Error: DWP format V2 with relocations is not"
+		   " supported in section %s [in module %s]"),
+		 get_name (), get_file_name ());
+	}
+      containing_section->read (objfile);
+      /* Other code should have already caught virtual sections that don't
+	 fit.  */
+      gdb_assert (virtual_offset + size <= containing_section->size);
+      /* If the real section is empty or there was a problem reading the
+	 section we shouldn't get here.  */
+      gdb_assert (containing_section->buffer != NULL);
+      buffer = containing_section->buffer + virtual_offset;
+      return;
+    }
+
+  /* If the section has relocations, we must read it ourselves.
+     Otherwise we attach it to the BFD.  */
+  if ((sectp->flags & SEC_RELOC) == 0)
+    {
+      buffer = gdb_bfd_map_section (sectp, &size);
+      return;
+    }
+
+  buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, size);
+  buffer = buf;
+
+  /* When debugging .o files, we may need to apply relocations; see
+     http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
+     We never compress sections in .o files, so we only need to
+     try this when the section is not compressed.  */
+  retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
+  if (retbuf != NULL)
+    {
+      buffer = retbuf;
+      return;
+    }
+
+  abfd = get_bfd_owner ();
+  gdb_assert (abfd != NULL);
+
+  if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
+      || bfd_bread (buf, size, abfd) != size)
+    {
+      error (_("Dwarf Error: Can't read DWARF data"
+	       " in section %s [in module %s]"),
+	     bfd_section_name (sectp), bfd_get_filename (abfd));
+    }
+}
+
+const char *
+dwarf2_section_info::read_string (struct objfile *objfile, LONGEST str_offset,
+				  const char *form_name)
+{
+  read (objfile);
+  if (buffer == NULL)
+    error (_("%s used without %s section [in module %s]"),
+	   form_name, get_name (), get_file_name ());
+  if (str_offset >= size)
+    error (_("%s pointing outside of %s section [in module %s]"),
+	   form_name, get_name (), get_file_name ());
+  gdb_assert (HOST_CHAR_BIT == 8);
+  if (buffer[str_offset] == '\0')
+    return NULL;
+  return (const char *) (buffer + str_offset);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/section.h ./gdb/dwarf2/section.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/section.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/section.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,128 @@
+/* DWARF 2 low-level section code
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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_DWARF2_SECTION_H
+#define GDB_DWARF2_SECTION_H
+
+/* A descriptor for dwarf sections.
+
+   S.ASECTION, SIZE are typically initialized when the objfile is first
+   scanned.  BUFFER, READIN are filled in later when the section is read.
+   If the section contained compressed data then SIZE is updated to record
+   the uncompressed size of the section.
+
+   DWP file format V2 introduces a wrinkle that is easiest to handle by
+   creating the concept of virtual sections contained within a real section.
+   In DWP V2 the sections of the input DWO files are concatenated together
+   into one section, but section offsets are kept relative to the original
+   input section.
+   If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
+   the real section this "virtual" section is contained in, and BUFFER,SIZE
+   describe the virtual section.  */
+
+struct dwarf2_section_info
+{
+  /* Return the name of this section.  */
+  const char *get_name () const;
+
+  /* Return the containing section of this section, which must be a
+     virtual section.  */
+  struct dwarf2_section_info *get_containing_section () const;
+
+  /* Return the bfd owner of this section.  */
+  struct bfd *get_bfd_owner () const;
+
+  /* Return the bfd section of this section.
+     Returns NULL if the section is not present.  */
+  asection *get_bfd_section () const;
+
+  /* Return the name of the file this section is in.  */
+  const char *get_file_name () const;
+
+  /* Return the id of this section.
+     Returns 0 if this section doesn't exist.  */
+  int get_id () const;
+
+  /* Return the flags of this section.  This section (or containing
+     section if this is a virtual section) must exist.  */
+  int get_flags () const;
+
+  /* Return true if this section does not exist or if it has no
+     contents. */
+  bool empty () const;
+
+  /* Read the contents of this section.
+     OBJFILE is the main object file, but not necessarily the file where
+     the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
+     of the DWO file.
+     If the section is compressed, uncompress it before returning.  */
+  void read (struct objfile *objfile);
+
+  /* A helper function that returns the size of a section in a safe way.
+     If you are positive that the section has been read before using the
+     size, then it is safe to refer to the dwarf2_section_info object's
+     "size" field directly.  In other cases, you must call this
+     function, because for compressed sections the size field is not set
+     correctly until the section has been read.  */
+  bfd_size_type get_size (struct objfile *objfile)
+  {
+    if (!readin)
+      read (objfile);
+    return size;
+  }
+
+  /* Issue a complaint that something was outside the bounds of this
+     buffer.  */
+  void overflow_complaint () const;
+
+  /* Return pointer to string in this section at offset STR_OFFSET
+     with error reporting string FORM_NAME.  */
+  const char *read_string (struct objfile *objfile, LONGEST str_offset,
+			   const char *form_name);
+
+  union
+  {
+    /* If this is a real section, the bfd section.  */
+    asection *section;
+    /* If this is a virtual section, pointer to the containing ("real")
+       section.  */
+    struct dwarf2_section_info *containing_section;
+  } s;
+  /* Pointer to section data, only valid if readin.  */
+  const gdb_byte *buffer;
+  /* The size of the section, real or virtual.  */
+  bfd_size_type size;
+  /* If this is a virtual section, the offset in the real section.
+     Only valid if is_virtual.  */
+  bfd_size_type virtual_offset;
+  /* True if we have tried to read this section.  */
+  bool readin;
+  /* True if this is a virtual section, False otherwise.
+     This specifies which of s.section and s.containing_section to use.  */
+  bool is_virtual;
+};
+
+#endif /* GDB_DWARF2_SECTION_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/stringify.c ./gdb/dwarf2/stringify.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/stringify.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/stringify.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,114 @@
+/* DWARF stringify code
+
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+   Inc.  with support from Florida State University (under contract
+   with the Ada Joint Program Office), and Silicon Graphics, Inc.
+   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+   support.
+
+   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 "dwarf2.h"
+#include "dwarf2/stringify.h"
+
+/* A convenience function that returns an "unknown" DWARF name,
+   including the value of V.  STR is the name of the entity being
+   printed, e.g., "TAG".  */
+
+static const char *
+dwarf_unknown (const char *str, unsigned v)
+{
+  char *cell = get_print_cell ();
+  xsnprintf (cell, PRINT_CELL_SIZE, "DW_%s_<unknown: %u>", str, v);
+  return cell;
+}
+
+/* See stringify.h.  */
+
+const char *
+dwarf_tag_name (unsigned tag)
+{
+  const char *name = get_DW_TAG_name (tag);
+
+  if (name == NULL)
+    return dwarf_unknown ("TAG", tag);
+
+  return name;
+}
+
+/* See stringify.h.  */
+
+const char *
+dwarf_attr_name (unsigned attr)
+{
+  const char *name;
+
+#ifdef MIPS /* collides with DW_AT_HP_block_index */
+  if (attr == DW_AT_MIPS_fde)
+    return "DW_AT_MIPS_fde";
+#else
+  if (attr == DW_AT_HP_block_index)
+    return "DW_AT_HP_block_index";
+#endif
+
+  name = get_DW_AT_name (attr);
+
+  if (name == NULL)
+    return dwarf_unknown ("AT", attr);
+
+  return name;
+}
+
+/* See stringify.h.  */
+
+const char *
+dwarf_form_name (unsigned form)
+{
+  const char *name = get_DW_FORM_name (form);
+
+  if (name == NULL)
+    return dwarf_unknown ("FORM", form);
+
+  return name;
+}
+
+/* See stringify.h.  */
+
+const char *
+dwarf_bool_name (unsigned mybool)
+{
+  if (mybool)
+    return "TRUE";
+  else
+    return "FALSE";
+}
+
+/* See stringify.h.  */
+
+const char *
+dwarf_type_encoding_name (unsigned enc)
+{
+  const char *name = get_DW_ATE_name (enc);
+
+  if (name == NULL)
+    return dwarf_unknown ("ATE", enc);
+
+  return name;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/stringify.h ./gdb/dwarf2/stringify.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2/stringify.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/dwarf2/stringify.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,38 @@
+/* DWARF stringify code
+
+   Copyright (C) 2003-2021 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_DWARF2_STRINGIFY_H
+#define GDB_DWARF2_STRINGIFY_H
+
+/* Convert a DIE tag into its string name.  */
+extern const char *dwarf_tag_name (unsigned tag);
+
+/* Convert a DWARF attribute code into its string name.  */
+extern const char *dwarf_attr_name (unsigned attr);
+
+/* Convert a DWARF value form code into its string name.  */
+extern const char *dwarf_form_name (unsigned form);
+
+/* Convert a boolean to a string form.  */
+extern const char *dwarf_bool_name (unsigned mybool);
+
+/* Convert a DWARF type code into its string name.  */
+extern const char *dwarf_type_encoding_name (unsigned enc);
+
+#endif /* GDB_DWARF2_STRINGIFY_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2expr.c ./gdb/dwarf2expr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2expr.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf2expr.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,1427 +0,0 @@
-/* DWARF 2 Expression Evaluator.
-
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
-
-   Contributed by Daniel Berlin (dan@dberlin.org)
-
-   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 "symtab.h"
-#include "gdbtypes.h"
-#include "value.h"
-#include "gdbcore.h"
-#include "dwarf2.h"
-#include "dwarf2expr.h"
-#include "dwarf2loc.h"
-#include "gdbsupport/underlying.h"
-#include "gdbarch.h"
-
-/* Cookie for gdbarch data.  */
-
-static struct gdbarch_data *dwarf_arch_cookie;
-
-/* This holds gdbarch-specific types used by the DWARF expression
-   evaluator.  See comments in execute_stack_op.  */
-
-struct dwarf_gdbarch_types
-{
-  struct type *dw_types[3];
-};
-
-/* Allocate and fill in dwarf_gdbarch_types for an arch.  */
-
-static void *
-dwarf_gdbarch_types_init (struct gdbarch *gdbarch)
-{
-  struct dwarf_gdbarch_types *types
-    = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct dwarf_gdbarch_types);
-
-  /* The types themselves are lazily initialized.  */
-
-  return types;
-}
-
-/* Return the type used for DWARF operations where the type is
-   unspecified in the DWARF spec.  Only certain sizes are
-   supported.  */
-
-struct type *
-dwarf_expr_context::address_type () const
-{
-  struct dwarf_gdbarch_types *types
-    = (struct dwarf_gdbarch_types *) gdbarch_data (this->gdbarch,
-						   dwarf_arch_cookie);
-  int ndx;
-
-  if (this->addr_size == 2)
-    ndx = 0;
-  else if (this->addr_size == 4)
-    ndx = 1;
-  else if (this->addr_size == 8)
-    ndx = 2;
-  else
-    error (_("Unsupported address size in DWARF expressions: %d bits"),
-	   8 * this->addr_size);
-
-  if (types->dw_types[ndx] == NULL)
-    types->dw_types[ndx]
-      = arch_integer_type (this->gdbarch,
-			   8 * this->addr_size,
-			   0, "<signed DWARF address type>");
-
-  return types->dw_types[ndx];
-}
-
-/* Create a new context for the expression evaluator.  */
-
-dwarf_expr_context::dwarf_expr_context ()
-: gdbarch (NULL),
-  addr_size (0),
-  ref_addr_size (0),
-  offset (0),
-  recursion_depth (0),
-  max_recursion_depth (0x100),
-  location (DWARF_VALUE_MEMORY),
-  len (0),
-  data (NULL),
-  initialized (0)
-{
-}
-
-/* Push VALUE onto the stack.  */
-
-void
-dwarf_expr_context::push (struct value *value, bool in_stack_memory)
-{
-  stack.emplace_back (value, in_stack_memory);
-}
-
-/* Push VALUE onto the stack.  */
-
-void
-dwarf_expr_context::push_address (CORE_ADDR value, bool in_stack_memory)
-{
-  push (value_from_ulongest (address_type (), value), in_stack_memory);
-}
-
-/* Pop the top item off of the stack.  */
-
-void
-dwarf_expr_context::pop ()
-{
-  if (stack.empty ())
-    error (_("dwarf expression stack underflow"));
-
-  stack.pop_back ();
-}
-
-/* Retrieve the N'th item on the stack.  */
-
-struct value *
-dwarf_expr_context::fetch (int n)
-{
-  if (stack.size () <= n)
-     error (_("Asked for position %d of stack, "
-	      "stack only has %zu elements on it."),
-	    n, stack.size ());
-  return stack[stack.size () - (1 + n)].value;
-}
-
-/* Require that TYPE be an integral type; throw an exception if not.  */
-
-static void
-dwarf_require_integral (struct type *type)
-{
-  if (TYPE_CODE (type) != TYPE_CODE_INT
-      && TYPE_CODE (type) != TYPE_CODE_CHAR
-      && TYPE_CODE (type) != TYPE_CODE_BOOL)
-    error (_("integral type expected in DWARF expression"));
-}
-
-/* Return the unsigned form of TYPE.  TYPE is necessarily an integral
-   type.  */
-
-static struct type *
-get_unsigned_type (struct gdbarch *gdbarch, struct type *type)
-{
-  switch (TYPE_LENGTH (type))
-    {
-    case 1:
-      return builtin_type (gdbarch)->builtin_uint8;
-    case 2:
-      return builtin_type (gdbarch)->builtin_uint16;
-    case 4:
-      return builtin_type (gdbarch)->builtin_uint32;
-    case 8:
-      return builtin_type (gdbarch)->builtin_uint64;
-    default:
-      error (_("no unsigned variant found for type, while evaluating "
-	       "DWARF expression"));
-    }
-}
-
-/* Return the signed form of TYPE.  TYPE is necessarily an integral
-   type.  */
-
-static struct type *
-get_signed_type (struct gdbarch *gdbarch, struct type *type)
-{
-  switch (TYPE_LENGTH (type))
-    {
-    case 1:
-      return builtin_type (gdbarch)->builtin_int8;
-    case 2:
-      return builtin_type (gdbarch)->builtin_int16;
-    case 4:
-      return builtin_type (gdbarch)->builtin_int32;
-    case 8:
-      return builtin_type (gdbarch)->builtin_int64;
-    default:
-      error (_("no signed variant found for type, while evaluating "
-	       "DWARF expression"));
-    }
-}
-
-/* Retrieve the N'th item on the stack, converted to an address.  */
-
-CORE_ADDR
-dwarf_expr_context::fetch_address (int n)
-{
-  struct value *result_val = fetch (n);
-  enum bfd_endian byte_order = gdbarch_byte_order (this->gdbarch);
-  ULONGEST result;
-
-  dwarf_require_integral (value_type (result_val));
-  result = extract_unsigned_integer (value_contents (result_val),
-				     TYPE_LENGTH (value_type (result_val)),
-				     byte_order);
-
-  /* For most architectures, calling extract_unsigned_integer() alone
-     is sufficient for extracting an address.  However, some
-     architectures (e.g. MIPS) use signed addresses and using
-     extract_unsigned_integer() will not produce a correct
-     result.  Make sure we invoke gdbarch_integer_to_address()
-     for those architectures which require it.  */
-  if (gdbarch_integer_to_address_p (this->gdbarch))
-    {
-      gdb_byte *buf = (gdb_byte *) alloca (this->addr_size);
-      struct type *int_type = get_unsigned_type (this->gdbarch,
-						 value_type (result_val));
-
-      store_unsigned_integer (buf, this->addr_size, byte_order, result);
-      return gdbarch_integer_to_address (this->gdbarch, int_type, buf);
-    }
-
-  return (CORE_ADDR) result;
-}
-
-/* Retrieve the in_stack_memory flag of the N'th item on the stack.  */
-
-bool
-dwarf_expr_context::fetch_in_stack_memory (int n)
-{
-  if (stack.size () <= n)
-     error (_("Asked for position %d of stack, "
-	      "stack only has %zu elements on it."),
-	    n, stack.size ());
-  return stack[stack.size () - (1 + n)].in_stack_memory;
-}
-
-/* Return true if the expression stack is empty.  */
-
-bool
-dwarf_expr_context::stack_empty_p () const
-{
-  return stack.empty ();
-}
-
-/* Add a new piece to the dwarf_expr_context's piece list.  */
-void
-dwarf_expr_context::add_piece (ULONGEST size, ULONGEST offset)
-{
-  this->pieces.emplace_back ();
-  dwarf_expr_piece &p = this->pieces.back ();
-
-  p.location = this->location;
-  p.size = size;
-  p.offset = offset;
-
-  if (p.location == DWARF_VALUE_LITERAL)
-    {
-      p.v.literal.data = this->data;
-      p.v.literal.length = this->len;
-    }
-  else if (stack_empty_p ())
-    {
-      p.location = DWARF_VALUE_OPTIMIZED_OUT;
-      /* Also reset the context's location, for our callers.  This is
-	 a somewhat strange approach, but this lets us avoid setting
-	 the location to DWARF_VALUE_MEMORY in all the individual
-	 cases in the evaluator.  */
-      this->location = DWARF_VALUE_OPTIMIZED_OUT;
-    }
-  else if (p.location == DWARF_VALUE_MEMORY)
-    {
-      p.v.mem.addr = fetch_address (0);
-      p.v.mem.in_stack_memory = fetch_in_stack_memory (0);
-    }
-  else if (p.location == DWARF_VALUE_IMPLICIT_POINTER)
-    {
-      p.v.ptr.die_sect_off = (sect_offset) this->len;
-      p.v.ptr.offset = value_as_long (fetch (0));
-    }
-  else if (p.location == DWARF_VALUE_REGISTER)
-    p.v.regno = value_as_long (fetch (0));
-  else
-    {
-      p.v.value = fetch (0);
-    }
-}
-
-/* Evaluate the expression at ADDR (LEN bytes long).  */
-
-void
-dwarf_expr_context::eval (const gdb_byte *addr, size_t len)
-{
-  int old_recursion_depth = this->recursion_depth;
-
-  execute_stack_op (addr, addr + len);
-
-  /* RECURSION_DEPTH becomes invalid if an exception was thrown here.  */
-
-  gdb_assert (this->recursion_depth == old_recursion_depth);
-}
-
-/* Helper to read a uleb128 value or throw an error.  */
-
-const gdb_byte *
-safe_read_uleb128 (const gdb_byte *buf, const gdb_byte *buf_end,
-		   uint64_t *r)
-{
-  buf = gdb_read_uleb128 (buf, buf_end, r);
-  if (buf == NULL)
-    error (_("DWARF expression error: ran off end of buffer reading uleb128 value"));
-  return buf;
-}
-
-/* Helper to read a sleb128 value or throw an error.  */
-
-const gdb_byte *
-safe_read_sleb128 (const gdb_byte *buf, const gdb_byte *buf_end,
-		   int64_t *r)
-{
-  buf = gdb_read_sleb128 (buf, buf_end, r);
-  if (buf == NULL)
-    error (_("DWARF expression error: ran off end of buffer reading sleb128 value"));
-  return buf;
-}
-
-const gdb_byte *
-safe_skip_leb128 (const gdb_byte *buf, const gdb_byte *buf_end)
-{
-  buf = gdb_skip_leb128 (buf, buf_end);
-  if (buf == NULL)
-    error (_("DWARF expression error: ran off end of buffer reading leb128 value"));
-  return buf;
-}
-
-
-/* Check that the current operator is either at the end of an
-   expression, or that it is followed by a composition operator or by
-   DW_OP_GNU_uninit (which should terminate the expression).  */
-
-void
-dwarf_expr_require_composition (const gdb_byte *op_ptr, const gdb_byte *op_end,
-				const char *op_name)
-{
-  if (op_ptr != op_end && *op_ptr != DW_OP_piece && *op_ptr != DW_OP_bit_piece
-      && *op_ptr != DW_OP_GNU_uninit)
-    error (_("DWARF-2 expression error: `%s' operations must be "
-	     "used either alone or in conjunction with DW_OP_piece "
-	     "or DW_OP_bit_piece."),
-	   op_name);
-}
-
-/* Return true iff the types T1 and T2 are "the same".  This only does
-   checks that might reasonably be needed to compare DWARF base
-   types.  */
-
-static int
-base_types_equal_p (struct type *t1, struct type *t2)
-{
-  if (TYPE_CODE (t1) != TYPE_CODE (t2))
-    return 0;
-  if (TYPE_UNSIGNED (t1) != TYPE_UNSIGNED (t2))
-    return 0;
-  return TYPE_LENGTH (t1) == TYPE_LENGTH (t2);
-}
-
-/* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_reg* return the
-   DWARF register number.  Otherwise return -1.  */
-
-int
-dwarf_block_to_dwarf_reg (const gdb_byte *buf, const gdb_byte *buf_end)
-{
-  uint64_t dwarf_reg;
-
-  if (buf_end <= buf)
-    return -1;
-  if (*buf >= DW_OP_reg0 && *buf <= DW_OP_reg31)
-    {
-      if (buf_end - buf != 1)
-	return -1;
-      return *buf - DW_OP_reg0;
-    }
-
-  if (*buf == DW_OP_regval_type || *buf == DW_OP_GNU_regval_type)
-    {
-      buf++;
-      buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
-      if (buf == NULL)
-	return -1;
-      buf = gdb_skip_leb128 (buf, buf_end);
-      if (buf == NULL)
-	return -1;
-    }
-  else if (*buf == DW_OP_regx)
-    {
-      buf++;
-      buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
-      if (buf == NULL)
-	return -1;
-    }
-  else
-    return -1;
-  if (buf != buf_end || (int) dwarf_reg != dwarf_reg)
-    return -1;
-  return dwarf_reg;
-}
-
-/* If <BUF..BUF_END] contains DW_FORM_block* with just DW_OP_breg*(0) and
-   DW_OP_deref* return the DWARF register number.  Otherwise return -1.
-   DEREF_SIZE_RETURN contains -1 for DW_OP_deref; otherwise it contains the
-   size from DW_OP_deref_size.  */
-
-int
-dwarf_block_to_dwarf_reg_deref (const gdb_byte *buf, const gdb_byte *buf_end,
-				CORE_ADDR *deref_size_return)
-{
-  uint64_t dwarf_reg;
-  int64_t offset;
-
-  if (buf_end <= buf)
-    return -1;
-
-  if (*buf >= DW_OP_breg0 && *buf <= DW_OP_breg31)
-    {
-      dwarf_reg = *buf - DW_OP_breg0;
-      buf++;
-      if (buf >= buf_end)
-	return -1;
-    }
-  else if (*buf == DW_OP_bregx)
-    {
-      buf++;
-      buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
-      if (buf == NULL)
-	return -1;
-      if ((int) dwarf_reg != dwarf_reg)
-       return -1;
-    }
-  else
-    return -1;
-
-  buf = gdb_read_sleb128 (buf, buf_end, &offset);
-  if (buf == NULL)
-    return -1;
-  if (offset != 0)
-    return -1;
-
-  if (*buf == DW_OP_deref)
-    {
-      buf++;
-      *deref_size_return = -1;
-    }
-  else if (*buf == DW_OP_deref_size)
-    {
-      buf++;
-      if (buf >= buf_end)
-       return -1;
-      *deref_size_return = *buf++;
-    }
-  else
-    return -1;
-
-  if (buf != buf_end)
-    return -1;
-
-  return dwarf_reg;
-}
-
-/* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_fbreg(X) fill
-   in FB_OFFSET_RETURN with the X offset and return 1.  Otherwise return 0.  */
-
-int
-dwarf_block_to_fb_offset (const gdb_byte *buf, const gdb_byte *buf_end,
-			  CORE_ADDR *fb_offset_return)
-{
-  int64_t fb_offset;
-
-  if (buf_end <= buf)
-    return 0;
-
-  if (*buf != DW_OP_fbreg)
-    return 0;
-  buf++;
-
-  buf = gdb_read_sleb128 (buf, buf_end, &fb_offset);
-  if (buf == NULL)
-    return 0;
-  *fb_offset_return = fb_offset;
-  if (buf != buf_end || fb_offset != (LONGEST) *fb_offset_return)
-    return 0;
-
-  return 1;
-}
-
-/* If <BUF..BUF_END] contains DW_FORM_block* with single DW_OP_bregSP(X) fill
-   in SP_OFFSET_RETURN with the X offset and return 1.  Otherwise return 0.
-   The matched SP register number depends on GDBARCH.  */
-
-int
-dwarf_block_to_sp_offset (struct gdbarch *gdbarch, const gdb_byte *buf,
-			  const gdb_byte *buf_end, CORE_ADDR *sp_offset_return)
-{
-  uint64_t dwarf_reg;
-  int64_t sp_offset;
-
-  if (buf_end <= buf)
-    return 0;
-  if (*buf >= DW_OP_breg0 && *buf <= DW_OP_breg31)
-    {
-      dwarf_reg = *buf - DW_OP_breg0;
-      buf++;
-    }
-  else
-    {
-      if (*buf != DW_OP_bregx)
-       return 0;
-      buf++;
-      buf = gdb_read_uleb128 (buf, buf_end, &dwarf_reg);
-      if (buf == NULL)
-	return 0;
-    }
-
-  if (dwarf_reg_to_regnum (gdbarch, dwarf_reg)
-      != gdbarch_sp_regnum (gdbarch))
-    return 0;
-
-  buf = gdb_read_sleb128 (buf, buf_end, &sp_offset);
-  if (buf == NULL)
-    return 0;
-  *sp_offset_return = sp_offset;
-  if (buf != buf_end || sp_offset != (LONGEST) *sp_offset_return)
-    return 0;
-
-  return 1;
-}
-
-/* The engine for the expression evaluator.  Using the context in this
-   object, evaluate the expression between OP_PTR and OP_END.  */
-
-void
-dwarf_expr_context::execute_stack_op (const gdb_byte *op_ptr,
-				      const gdb_byte *op_end)
-{
-  enum bfd_endian byte_order = gdbarch_byte_order (this->gdbarch);
-  /* Old-style "untyped" DWARF values need special treatment in a
-     couple of places, specifically DW_OP_mod and DW_OP_shr.  We need
-     a special type for these values so we can distinguish them from
-     values that have an explicit type, because explicitly-typed
-     values do not need special treatment.  This special type must be
-     different (in the `==' sense) from any base type coming from the
-     CU.  */
-  struct type *address_type = this->address_type ();
-
-  this->location = DWARF_VALUE_MEMORY;
-  this->initialized = 1;  /* Default is initialized.  */
-
-  if (this->recursion_depth > this->max_recursion_depth)
-    error (_("DWARF-2 expression error: Loop detected (%d)."),
-	   this->recursion_depth);
-  this->recursion_depth++;
-
-  while (op_ptr < op_end)
-    {
-      enum dwarf_location_atom op = (enum dwarf_location_atom) *op_ptr++;
-      ULONGEST result;
-      /* Assume the value is not in stack memory.
-	 Code that knows otherwise sets this to true.
-	 Some arithmetic on stack addresses can probably be assumed to still
-	 be a stack address, but we skip this complication for now.
-	 This is just an optimization, so it's always ok to punt
-	 and leave this as false.  */
-      bool in_stack_memory = false;
-      uint64_t uoffset, reg;
-      int64_t offset;
-      struct value *result_val = NULL;
-
-      /* The DWARF expression might have a bug causing an infinite
-	 loop.  In that case, quitting is the only way out.  */
-      QUIT;
-
-      switch (op)
-	{
-	case DW_OP_lit0:
-	case DW_OP_lit1:
-	case DW_OP_lit2:
-	case DW_OP_lit3:
-	case DW_OP_lit4:
-	case DW_OP_lit5:
-	case DW_OP_lit6:
-	case DW_OP_lit7:
-	case DW_OP_lit8:
-	case DW_OP_lit9:
-	case DW_OP_lit10:
-	case DW_OP_lit11:
-	case DW_OP_lit12:
-	case DW_OP_lit13:
-	case DW_OP_lit14:
-	case DW_OP_lit15:
-	case DW_OP_lit16:
-	case DW_OP_lit17:
-	case DW_OP_lit18:
-	case DW_OP_lit19:
-	case DW_OP_lit20:
-	case DW_OP_lit21:
-	case DW_OP_lit22:
-	case DW_OP_lit23:
-	case DW_OP_lit24:
-	case DW_OP_lit25:
-	case DW_OP_lit26:
-	case DW_OP_lit27:
-	case DW_OP_lit28:
-	case DW_OP_lit29:
-	case DW_OP_lit30:
-	case DW_OP_lit31:
-	  result = op - DW_OP_lit0;
-	  result_val = value_from_ulongest (address_type, result);
-	  break;
-
-	case DW_OP_addr:
-	  result = extract_unsigned_integer (op_ptr,
-					     this->addr_size, byte_order);
-	  op_ptr += this->addr_size;
-	  /* Some versions of GCC emit DW_OP_addr before
-	     DW_OP_GNU_push_tls_address.  In this case the value is an
-	     index, not an address.  We don't support things like
-	     branching between the address and the TLS op.  */
-	  if (op_ptr >= op_end || *op_ptr != DW_OP_GNU_push_tls_address)
-	    result += this->offset;
-	  result_val = value_from_ulongest (address_type, result);
-	  break;
-
-	case DW_OP_addrx:
-	case DW_OP_GNU_addr_index:
-	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
-	  result = this->get_addr_index (uoffset);
-	  result += this->offset;
-	  result_val = value_from_ulongest (address_type, result);
-	  break;
-	case DW_OP_GNU_const_index:
-	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
-	  result = this->get_addr_index (uoffset);
-	  result_val = value_from_ulongest (address_type, result);
-	  break;
-
-	case DW_OP_const1u:
-	  result = extract_unsigned_integer (op_ptr, 1, byte_order);
-	  result_val = value_from_ulongest (address_type, result);
-	  op_ptr += 1;
-	  break;
-	case DW_OP_const1s:
-	  result = extract_signed_integer (op_ptr, 1, byte_order);
-	  result_val = value_from_ulongest (address_type, result);
-	  op_ptr += 1;
-	  break;
-	case DW_OP_const2u:
-	  result = extract_unsigned_integer (op_ptr, 2, byte_order);
-	  result_val = value_from_ulongest (address_type, result);
-	  op_ptr += 2;
-	  break;
-	case DW_OP_const2s:
-	  result = extract_signed_integer (op_ptr, 2, byte_order);
-	  result_val = value_from_ulongest (address_type, result);
-	  op_ptr += 2;
-	  break;
-	case DW_OP_const4u:
-	  result = extract_unsigned_integer (op_ptr, 4, byte_order);
-	  result_val = value_from_ulongest (address_type, result);
-	  op_ptr += 4;
-	  break;
-	case DW_OP_const4s:
-	  result = extract_signed_integer (op_ptr, 4, byte_order);
-	  result_val = value_from_ulongest (address_type, result);
-	  op_ptr += 4;
-	  break;
-	case DW_OP_const8u:
-	  result = extract_unsigned_integer (op_ptr, 8, byte_order);
-	  result_val = value_from_ulongest (address_type, result);
-	  op_ptr += 8;
-	  break;
-	case DW_OP_const8s:
-	  result = extract_signed_integer (op_ptr, 8, byte_order);
-	  result_val = value_from_ulongest (address_type, result);
-	  op_ptr += 8;
-	  break;
-	case DW_OP_constu:
-	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
-	  result = uoffset;
-	  result_val = value_from_ulongest (address_type, result);
-	  break;
-	case DW_OP_consts:
-	  op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
-	  result = offset;
-	  result_val = value_from_ulongest (address_type, result);
-	  break;
-
-	/* The DW_OP_reg operations are required to occur alone in
-	   location expressions.  */
-	case DW_OP_reg0:
-	case DW_OP_reg1:
-	case DW_OP_reg2:
-	case DW_OP_reg3:
-	case DW_OP_reg4:
-	case DW_OP_reg5:
-	case DW_OP_reg6:
-	case DW_OP_reg7:
-	case DW_OP_reg8:
-	case DW_OP_reg9:
-	case DW_OP_reg10:
-	case DW_OP_reg11:
-	case DW_OP_reg12:
-	case DW_OP_reg13:
-	case DW_OP_reg14:
-	case DW_OP_reg15:
-	case DW_OP_reg16:
-	case DW_OP_reg17:
-	case DW_OP_reg18:
-	case DW_OP_reg19:
-	case DW_OP_reg20:
-	case DW_OP_reg21:
-	case DW_OP_reg22:
-	case DW_OP_reg23:
-	case DW_OP_reg24:
-	case DW_OP_reg25:
-	case DW_OP_reg26:
-	case DW_OP_reg27:
-	case DW_OP_reg28:
-	case DW_OP_reg29:
-	case DW_OP_reg30:
-	case DW_OP_reg31:
-	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_reg");
-
-	  result = op - DW_OP_reg0;
-	  result_val = value_from_ulongest (address_type, result);
-	  this->location = DWARF_VALUE_REGISTER;
-	  break;
-
-	case DW_OP_regx:
-	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
-	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
-
-	  result = reg;
-	  result_val = value_from_ulongest (address_type, result);
-	  this->location = DWARF_VALUE_REGISTER;
-	  break;
-
-	case DW_OP_implicit_value:
-	  {
-	    uint64_t len;
-
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &len);
-	    if (op_ptr + len > op_end)
-	      error (_("DW_OP_implicit_value: too few bytes available."));
-	    this->len = len;
-	    this->data = op_ptr;
-	    this->location = DWARF_VALUE_LITERAL;
-	    op_ptr += len;
-	    dwarf_expr_require_composition (op_ptr, op_end,
-					    "DW_OP_implicit_value");
-	  }
-	  goto no_push;
-
-	case DW_OP_stack_value:
-	  this->location = DWARF_VALUE_STACK;
-	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_stack_value");
-	  goto no_push;
-
-	case DW_OP_implicit_pointer:
-	case DW_OP_GNU_implicit_pointer:
-	  {
-	    int64_t len;
-
-	    if (this->ref_addr_size == -1)
-	      error (_("DWARF-2 expression error: DW_OP_implicit_pointer "
-		       "is not allowed in frame context"));
-
-	    /* The referred-to DIE of sect_offset kind.  */
-	    this->len = extract_unsigned_integer (op_ptr, this->ref_addr_size,
-						 byte_order);
-	    op_ptr += this->ref_addr_size;
-
-	    /* The byte offset into the data.  */
-	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &len);
-	    result = (ULONGEST) len;
-	    result_val = value_from_ulongest (address_type, result);
-
-	    this->location = DWARF_VALUE_IMPLICIT_POINTER;
-	    dwarf_expr_require_composition (op_ptr, op_end,
-					    "DW_OP_implicit_pointer");
-	  }
-	  break;
-
-	case DW_OP_breg0:
-	case DW_OP_breg1:
-	case DW_OP_breg2:
-	case DW_OP_breg3:
-	case DW_OP_breg4:
-	case DW_OP_breg5:
-	case DW_OP_breg6:
-	case DW_OP_breg7:
-	case DW_OP_breg8:
-	case DW_OP_breg9:
-	case DW_OP_breg10:
-	case DW_OP_breg11:
-	case DW_OP_breg12:
-	case DW_OP_breg13:
-	case DW_OP_breg14:
-	case DW_OP_breg15:
-	case DW_OP_breg16:
-	case DW_OP_breg17:
-	case DW_OP_breg18:
-	case DW_OP_breg19:
-	case DW_OP_breg20:
-	case DW_OP_breg21:
-	case DW_OP_breg22:
-	case DW_OP_breg23:
-	case DW_OP_breg24:
-	case DW_OP_breg25:
-	case DW_OP_breg26:
-	case DW_OP_breg27:
-	case DW_OP_breg28:
-	case DW_OP_breg29:
-	case DW_OP_breg30:
-	case DW_OP_breg31:
-	  {
-	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
-	    result = this->read_addr_from_reg (op - DW_OP_breg0);
-	    result += offset;
-	    result_val = value_from_ulongest (address_type, result);
-	  }
-	  break;
-	case DW_OP_bregx:
-	  {
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
-	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
-	    result = this->read_addr_from_reg (reg);
-	    result += offset;
-	    result_val = value_from_ulongest (address_type, result);
-	  }
-	  break;
-	case DW_OP_fbreg:
-	  {
-	    const gdb_byte *datastart;
-	    size_t datalen;
-
-	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
-
-	    /* Rather than create a whole new context, we simply
-	       backup the current stack locally and install a new empty stack,
-	       then reset it afterwards, effectively erasing whatever the
-	       recursive call put there.  */
-	    std::vector<dwarf_stack_value> saved_stack = std::move (stack);
-	    stack.clear ();
-
-	    /* FIXME: cagney/2003-03-26: This code should be using
-               get_frame_base_address(), and then implement a dwarf2
-               specific this_base method.  */
-	    this->get_frame_base (&datastart, &datalen);
-	    eval (datastart, datalen);
-	    if (this->location == DWARF_VALUE_MEMORY)
-	      result = fetch_address (0);
-	    else if (this->location == DWARF_VALUE_REGISTER)
-	      result = this->read_addr_from_reg (value_as_long (fetch (0)));
-	    else
-	      error (_("Not implemented: computing frame "
-		       "base using explicit value operator"));
-	    result = result + offset;
-	    result_val = value_from_ulongest (address_type, result);
-	    in_stack_memory = true;
-
-	    /* Restore the content of the original stack.  */
-	    stack = std::move (saved_stack);
-
-	    this->location = DWARF_VALUE_MEMORY;
-	  }
-	  break;
-
-	case DW_OP_dup:
-	  result_val = fetch (0);
-	  in_stack_memory = fetch_in_stack_memory (0);
-	  break;
-
-	case DW_OP_drop:
-	  pop ();
-	  goto no_push;
-
-	case DW_OP_pick:
-	  offset = *op_ptr++;
-	  result_val = fetch (offset);
-	  in_stack_memory = fetch_in_stack_memory (offset);
-	  break;
-	  
-	case DW_OP_swap:
-	  {
-	    if (stack.size () < 2)
-	       error (_("Not enough elements for "
-			"DW_OP_swap.  Need 2, have %zu."),
-		      stack.size ());
-
-	    dwarf_stack_value &t1 = stack[stack.size () - 1];
-	    dwarf_stack_value &t2 = stack[stack.size () - 2];
-	    std::swap (t1, t2);
-	    goto no_push;
-	  }
-
-	case DW_OP_over:
-	  result_val = fetch (1);
-	  in_stack_memory = fetch_in_stack_memory (1);
-	  break;
-
-	case DW_OP_rot:
-	  {
-	    if (stack.size () < 3)
-	       error (_("Not enough elements for "
-			"DW_OP_rot.  Need 3, have %zu."),
-		      stack.size ());
-
-	    dwarf_stack_value temp = stack[stack.size () - 1];
-	    stack[stack.size () - 1] = stack[stack.size () - 2];
-	    stack[stack.size () - 2] = stack[stack.size () - 3];
-	    stack[stack.size () - 3] = temp;
-	    goto no_push;
-	  }
-
-	case DW_OP_deref:
-	case DW_OP_deref_size:
-	case DW_OP_deref_type:
-	case DW_OP_GNU_deref_type:
-	  {
-	    int addr_size = (op == DW_OP_deref ? this->addr_size : *op_ptr++);
-	    gdb_byte *buf = (gdb_byte *) alloca (addr_size);
-	    CORE_ADDR addr = fetch_address (0);
-	    struct type *type;
-
-	    pop ();
-
-	    if (op == DW_OP_deref_type || op == DW_OP_GNU_deref_type)
-	      {
-		op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
-		cu_offset type_die_cu_off = (cu_offset) uoffset;
-		type = get_base_type (type_die_cu_off, 0);
-	      }
-	    else
-	      type = address_type;
-
-	    this->read_mem (buf, addr, addr_size);
-
-	    /* If the size of the object read from memory is different
-	       from the type length, we need to zero-extend it.  */
-	    if (TYPE_LENGTH (type) != addr_size)
-	      {
-		ULONGEST datum =
-		  extract_unsigned_integer (buf, addr_size, byte_order);
-
-		buf = (gdb_byte *) alloca (TYPE_LENGTH (type));
-		store_unsigned_integer (buf, TYPE_LENGTH (type),
-					byte_order, datum);
-	      }
-
-	    result_val = value_from_contents_and_address (type, buf, addr);
-	    break;
-	  }
-
-	case DW_OP_abs:
-	case DW_OP_neg:
-	case DW_OP_not:
-	case DW_OP_plus_uconst:
-	  {
-	    /* Unary operations.  */
-	    result_val = fetch (0);
-	    pop ();
-
-	    switch (op)
-	      {
-	      case DW_OP_abs:
-		if (value_less (result_val,
-				value_zero (value_type (result_val), not_lval)))
-		  result_val = value_neg (result_val);
-		break;
-	      case DW_OP_neg:
-		result_val = value_neg (result_val);
-		break;
-	      case DW_OP_not:
-		dwarf_require_integral (value_type (result_val));
-		result_val = value_complement (result_val);
-		break;
-	      case DW_OP_plus_uconst:
-		dwarf_require_integral (value_type (result_val));
-		result = value_as_long (result_val);
-		op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
-		result += reg;
-		result_val = value_from_ulongest (address_type, result);
-		break;
-	      }
-	  }
-	  break;
-
-	case DW_OP_and:
-	case DW_OP_div:
-	case DW_OP_minus:
-	case DW_OP_mod:
-	case DW_OP_mul:
-	case DW_OP_or:
-	case DW_OP_plus:
-	case DW_OP_shl:
-	case DW_OP_shr:
-	case DW_OP_shra:
-	case DW_OP_xor:
-	case DW_OP_le:
-	case DW_OP_ge:
-	case DW_OP_eq:
-	case DW_OP_lt:
-	case DW_OP_gt:
-	case DW_OP_ne:
-	  {
-	    /* Binary operations.  */
-	    struct value *first, *second;
-
-	    second = fetch (0);
-	    pop ();
-
-	    first = fetch (0);
-	    pop ();
-
-	    if (! base_types_equal_p (value_type (first), value_type (second)))
-	      error (_("Incompatible types on DWARF stack"));
-
-	    switch (op)
-	      {
-	      case DW_OP_and:
-		dwarf_require_integral (value_type (first));
-		dwarf_require_integral (value_type (second));
-		result_val = value_binop (first, second, BINOP_BITWISE_AND);
-		break;
-	      case DW_OP_div:
-		result_val = value_binop (first, second, BINOP_DIV);
-                break;
-	      case DW_OP_minus:
-		result_val = value_binop (first, second, BINOP_SUB);
-		break;
-	      case DW_OP_mod:
-		{
-		  int cast_back = 0;
-		  struct type *orig_type = value_type (first);
-
-		  /* We have to special-case "old-style" untyped values
-		     -- these must have mod computed using unsigned
-		     math.  */
-		  if (orig_type == address_type)
-		    {
-		      struct type *utype
-			= get_unsigned_type (this->gdbarch, orig_type);
-
-		      cast_back = 1;
-		      first = value_cast (utype, first);
-		      second = value_cast (utype, second);
-		    }
-		  /* Note that value_binop doesn't handle float or
-		     decimal float here.  This seems unimportant.  */
-		  result_val = value_binop (first, second, BINOP_MOD);
-		  if (cast_back)
-		    result_val = value_cast (orig_type, result_val);
-		}
-		break;
-	      case DW_OP_mul:
-		result_val = value_binop (first, second, BINOP_MUL);
-		break;
-	      case DW_OP_or:
-		dwarf_require_integral (value_type (first));
-		dwarf_require_integral (value_type (second));
-		result_val = value_binop (first, second, BINOP_BITWISE_IOR);
-		break;
-	      case DW_OP_plus:
-		result_val = value_binop (first, second, BINOP_ADD);
-		break;
-	      case DW_OP_shl:
-		dwarf_require_integral (value_type (first));
-		dwarf_require_integral (value_type (second));
-		result_val = value_binop (first, second, BINOP_LSH);
-		break;
-	      case DW_OP_shr:
-		dwarf_require_integral (value_type (first));
-		dwarf_require_integral (value_type (second));
-		if (!TYPE_UNSIGNED (value_type (first)))
-		  {
-		    struct type *utype
-		      = get_unsigned_type (this->gdbarch, value_type (first));
-
-		    first = value_cast (utype, first);
-		  }
-
-		result_val = value_binop (first, second, BINOP_RSH);
-		/* Make sure we wind up with the same type we started
-		   with.  */
-		if (value_type (result_val) != value_type (second))
-		  result_val = value_cast (value_type (second), result_val);
-                break;
-	      case DW_OP_shra:
-		dwarf_require_integral (value_type (first));
-		dwarf_require_integral (value_type (second));
-		if (TYPE_UNSIGNED (value_type (first)))
-		  {
-		    struct type *stype
-		      = get_signed_type (this->gdbarch, value_type (first));
-
-		    first = value_cast (stype, first);
-		  }
-
-		result_val = value_binop (first, second, BINOP_RSH);
-		/* Make sure we wind up with the same type we started
-		   with.  */
-		if (value_type (result_val) != value_type (second))
-		  result_val = value_cast (value_type (second), result_val);
-		break;
-	      case DW_OP_xor:
-		dwarf_require_integral (value_type (first));
-		dwarf_require_integral (value_type (second));
-		result_val = value_binop (first, second, BINOP_BITWISE_XOR);
-		break;
-	      case DW_OP_le:
-		/* A <= B is !(B < A).  */
-		result = ! value_less (second, first);
-		result_val = value_from_ulongest (address_type, result);
-		break;
-	      case DW_OP_ge:
-		/* A >= B is !(A < B).  */
-		result = ! value_less (first, second);
-		result_val = value_from_ulongest (address_type, result);
-		break;
-	      case DW_OP_eq:
-		result = value_equal (first, second);
-		result_val = value_from_ulongest (address_type, result);
-		break;
-	      case DW_OP_lt:
-		result = value_less (first, second);
-		result_val = value_from_ulongest (address_type, result);
-		break;
-	      case DW_OP_gt:
-		/* A > B is B < A.  */
-		result = value_less (second, first);
-		result_val = value_from_ulongest (address_type, result);
-		break;
-	      case DW_OP_ne:
-		result = ! value_equal (first, second);
-		result_val = value_from_ulongest (address_type, result);
-		break;
-	      default:
-		internal_error (__FILE__, __LINE__,
-				_("Can't be reached."));
-	      }
-	  }
-	  break;
-
-	case DW_OP_call_frame_cfa:
-	  result = this->get_frame_cfa ();
-	  result_val = value_from_ulongest (address_type, result);
-	  in_stack_memory = true;
-	  break;
-
-	case DW_OP_GNU_push_tls_address:
-	case DW_OP_form_tls_address:
-	  /* Variable is at a constant offset in the thread-local
-	  storage block into the objfile for the current thread and
-	  the dynamic linker module containing this expression.  Here
-	  we return returns the offset from that base.  The top of the
-	  stack has the offset from the beginning of the thread
-	  control block at which the variable is located.  Nothing
-	  should follow this operator, so the top of stack would be
-	  returned.  */
-	  result = value_as_long (fetch (0));
-	  pop ();
-	  result = this->get_tls_address (result);
-	  result_val = value_from_ulongest (address_type, result);
-	  break;
-
-	case DW_OP_skip:
-	  offset = extract_signed_integer (op_ptr, 2, byte_order);
-	  op_ptr += 2;
-	  op_ptr += offset;
-	  goto no_push;
-
-	case DW_OP_bra:
-	  {
-	    struct value *val;
-
-	    offset = extract_signed_integer (op_ptr, 2, byte_order);
-	    op_ptr += 2;
-	    val = fetch (0);
-	    dwarf_require_integral (value_type (val));
-	    if (value_as_long (val) != 0)
-	      op_ptr += offset;
-	    pop ();
-	  }
-	  goto no_push;
-
-	case DW_OP_nop:
-	  goto no_push;
-
-        case DW_OP_piece:
-          {
-            uint64_t size;
-
-            /* Record the piece.  */
-            op_ptr = safe_read_uleb128 (op_ptr, op_end, &size);
-	    add_piece (8 * size, 0);
-
-            /* Pop off the address/regnum, and reset the location
-	       type.  */
-	    if (this->location != DWARF_VALUE_LITERAL
-		&& this->location != DWARF_VALUE_OPTIMIZED_OUT)
-	      pop ();
-            this->location = DWARF_VALUE_MEMORY;
-          }
-          goto no_push;
-
-	case DW_OP_bit_piece:
-	  {
-	    uint64_t size, uleb_offset;
-
-            /* Record the piece.  */
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &size);
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &uleb_offset);
-	    add_piece (size, uleb_offset);
-
-            /* Pop off the address/regnum, and reset the location
-	       type.  */
-	    if (this->location != DWARF_VALUE_LITERAL
-		&& this->location != DWARF_VALUE_OPTIMIZED_OUT)
-	      pop ();
-            this->location = DWARF_VALUE_MEMORY;
-	  }
-	  goto no_push;
-
-	case DW_OP_GNU_uninit:
-	  if (op_ptr != op_end)
-	    error (_("DWARF-2 expression error: DW_OP_GNU_uninit must always "
-		   "be the very last op."));
-
-	  this->initialized = 0;
-	  goto no_push;
-
-	case DW_OP_call2:
-	  {
-	    cu_offset cu_off
-	      = (cu_offset) extract_unsigned_integer (op_ptr, 2, byte_order);
-	    op_ptr += 2;
-	    this->dwarf_call (cu_off);
-	  }
-	  goto no_push;
-
-	case DW_OP_call4:
-	  {
-	    cu_offset cu_off
-	      = (cu_offset) extract_unsigned_integer (op_ptr, 4, byte_order);
-	    op_ptr += 4;
-	    this->dwarf_call (cu_off);
-	  }
-	  goto no_push;
-
-	case DW_OP_GNU_variable_value:
-	  {
-	    sect_offset sect_off
-	      = (sect_offset) extract_unsigned_integer (op_ptr,
-	                                                this->ref_addr_size,
-							byte_order);
-	    op_ptr += this->ref_addr_size;
-	    result_val = this->dwarf_variable_value (sect_off);
-	  }
-	  break;
-	
-	case DW_OP_entry_value:
-	case DW_OP_GNU_entry_value:
-	  {
-	    uint64_t len;
-	    CORE_ADDR deref_size;
-	    union call_site_parameter_u kind_u;
-
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &len);
-	    if (op_ptr + len > op_end)
-	      error (_("DW_OP_entry_value: too few bytes available."));
-
-	    kind_u.dwarf_reg = dwarf_block_to_dwarf_reg (op_ptr, op_ptr + len);
-	    if (kind_u.dwarf_reg != -1)
-	      {
-		op_ptr += len;
-		this->push_dwarf_reg_entry_value (CALL_SITE_PARAMETER_DWARF_REG,
-						  kind_u,
-						  -1 /* deref_size */);
-		goto no_push;
-	      }
-
-	    kind_u.dwarf_reg = dwarf_block_to_dwarf_reg_deref (op_ptr,
-							       op_ptr + len,
-							       &deref_size);
-	    if (kind_u.dwarf_reg != -1)
-	      {
-		if (deref_size == -1)
-		  deref_size = this->addr_size;
-		op_ptr += len;
-		this->push_dwarf_reg_entry_value (CALL_SITE_PARAMETER_DWARF_REG,
-						  kind_u, deref_size);
-		goto no_push;
-	      }
-
-	    error (_("DWARF-2 expression error: DW_OP_entry_value is "
-		     "supported only for single DW_OP_reg* "
-		     "or for DW_OP_breg*(0)+DW_OP_deref*"));
-	  }
-
-	case DW_OP_GNU_parameter_ref:
-	  {
-	    union call_site_parameter_u kind_u;
-
-	    kind_u.param_cu_off
-	      = (cu_offset) extract_unsigned_integer (op_ptr, 4, byte_order);
-	    op_ptr += 4;
-	    this->push_dwarf_reg_entry_value (CALL_SITE_PARAMETER_PARAM_OFFSET,
-					      kind_u,
-					      -1 /* deref_size */);
-	  }
-	  goto no_push;
-
-	case DW_OP_const_type:
-	case DW_OP_GNU_const_type:
-	  {
-	    int n;
-	    const gdb_byte *data;
-	    struct type *type;
-
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
-	    cu_offset type_die_cu_off = (cu_offset) uoffset;
-
-	    n = *op_ptr++;
-	    data = op_ptr;
-	    op_ptr += n;
-
-	    type = get_base_type (type_die_cu_off, n);
-	    result_val = value_from_contents (type, data);
-	  }
-	  break;
-
-	case DW_OP_regval_type:
-	case DW_OP_GNU_regval_type:
-	  {
-	    struct type *type;
-
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
-	    cu_offset type_die_cu_off = (cu_offset) uoffset;
-
-	    type = get_base_type (type_die_cu_off, 0);
-	    result_val = this->get_reg_value (type, reg);
-	  }
-	  break;
-
-	case DW_OP_convert:
-	case DW_OP_GNU_convert:
-	case DW_OP_reinterpret:
-	case DW_OP_GNU_reinterpret:
-	  {
-	    struct type *type;
-
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
-	    cu_offset type_die_cu_off = (cu_offset) uoffset;
-
-	    if (to_underlying (type_die_cu_off) == 0)
-	      type = address_type;
-	    else
-	      type = get_base_type (type_die_cu_off, 0);
-
-	    result_val = fetch (0);
-	    pop ();
-
-	    if (op == DW_OP_convert || op == DW_OP_GNU_convert)
-	      result_val = value_cast (type, result_val);
-	    else if (type == value_type (result_val))
-	      {
-		/* Nothing.  */
-	      }
-	    else if (TYPE_LENGTH (type)
-		     != TYPE_LENGTH (value_type (result_val)))
-	      error (_("DW_OP_reinterpret has wrong size"));
-	    else
-	      result_val
-		= value_from_contents (type,
-				       value_contents_all (result_val));
-	  }
-	  break;
-
-	case DW_OP_push_object_address:
-	  /* Return the address of the object we are currently observing.  */
-	  result = this->get_object_address ();
-	  result_val = value_from_ulongest (address_type, result);
-	  break;
-
-	default:
-	  error (_("Unhandled dwarf expression opcode 0x%x"), op);
-	}
-
-      /* Most things push a result value.  */
-      gdb_assert (result_val != NULL);
-      push (result_val, in_stack_memory);
-    no_push:
-      ;
-    }
-
-  /* To simplify our main caller, if the result is an implicit
-     pointer, then make a pieced value.  This is ok because we can't
-     have implicit pointers in contexts where pieces are invalid.  */
-  if (this->location == DWARF_VALUE_IMPLICIT_POINTER)
-    add_piece (8 * this->addr_size, 0);
-
-  this->recursion_depth--;
-  gdb_assert (this->recursion_depth >= 0);
-}
-
-void
-_initialize_dwarf2expr (void)
-{
-  dwarf_arch_cookie
-    = gdbarch_data_register_post_init (dwarf_gdbarch_types_init);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2expr.h ./gdb/dwarf2expr.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2expr.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf2expr.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,325 +0,0 @@
-/* DWARF 2 Expression Evaluator.
-
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
-
-   Contributed by Daniel Berlin <dan@dberlin.org>.
-
-   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/>.  */
-
-#if !defined (DWARF2EXPR_H)
-#define DWARF2EXPR_H
-
-#include "leb128.h"
-#include "gdbtypes.h"
-
-/* The location of a value.  */
-enum dwarf_value_location
-{
-  /* The piece is in memory.
-     The value on the dwarf stack is its address.  */
-  DWARF_VALUE_MEMORY,
-
-  /* The piece is in a register.
-     The value on the dwarf stack is the register number.  */
-  DWARF_VALUE_REGISTER,
-
-  /* The piece is on the dwarf stack.  */
-  DWARF_VALUE_STACK,
-
-  /* The piece is a literal.  */
-  DWARF_VALUE_LITERAL,
-
-  /* The piece was optimized out.  */
-  DWARF_VALUE_OPTIMIZED_OUT,
-
-  /* The piece is an implicit pointer.  */
-  DWARF_VALUE_IMPLICIT_POINTER
-};
-
-/* A piece of an object, as recorded by DW_OP_piece or DW_OP_bit_piece.  */
-struct dwarf_expr_piece
-{
-  enum dwarf_value_location location;
-
-  union
-  {
-    struct
-    {
-      /* This piece's address, for DWARF_VALUE_MEMORY pieces.  */
-      CORE_ADDR addr;
-      /* Non-zero if the piece is known to be in memory and on
-	 the program's stack.  */
-      bool in_stack_memory;
-    } mem;
-
-    /* The piece's register number, for DWARF_VALUE_REGISTER pieces.  */
-    int regno;
-
-    /* The piece's literal value, for DWARF_VALUE_STACK pieces.  */
-    struct value *value;
-
-    struct
-    {
-      /* A pointer to the data making up this piece,
-	 for DWARF_VALUE_LITERAL pieces.  */
-      const gdb_byte *data;
-      /* The length of the available data.  */
-      ULONGEST length;
-    } literal;
-
-    /* Used for DWARF_VALUE_IMPLICIT_POINTER.  */
-    struct
-    {
-      /* The referent DIE from DW_OP_implicit_pointer.  */
-      sect_offset die_sect_off;
-      /* The byte offset into the resulting data.  */
-      LONGEST offset;
-    } ptr;
-  } v;
-
-  /* The length of the piece, in bits.  */
-  ULONGEST size;
-  /* The piece offset, in bits.  */
-  ULONGEST offset;
-};
-
-/* The dwarf expression stack.  */
-
-struct dwarf_stack_value
-{
-  dwarf_stack_value (struct value *value_, int in_stack_memory_)
-  : value (value_), in_stack_memory (in_stack_memory_)
-  {}
-
-  struct value *value;
-
-  /* True if the piece is in memory and is known to be on the program's stack.
-     It is always ok to set this to zero.  This is used, for example, to
-     optimize memory access from the target.  It can vastly speed up backtraces
-     on long latency connections when "set stack-cache on".  */
-  bool in_stack_memory;
-};
-
-/* The expression evaluator works with a dwarf_expr_context, describing
-   its current state and its callbacks.  */
-struct dwarf_expr_context
-{
-  dwarf_expr_context ();
-  virtual ~dwarf_expr_context () = default;
-
-  void push_address (CORE_ADDR value, bool in_stack_memory);
-  void eval (const gdb_byte *addr, size_t len);
-  struct value *fetch (int n);
-  CORE_ADDR fetch_address (int n);
-  bool fetch_in_stack_memory (int n);
-
-  /* The stack of values.  */
-  std::vector<dwarf_stack_value> stack;
-
-  /* Target architecture to use for address operations.  */
-  struct gdbarch *gdbarch;
-
-  /* Target address size in bytes.  */
-  int addr_size;
-
-  /* DW_FORM_ref_addr size in bytes.  If -1 DWARF is executed from a frame
-     context and operations depending on DW_FORM_ref_addr are not allowed.  */
-  int ref_addr_size;
-
-  /* Offset used to relocate DW_OP_addr, DW_OP_addrx, and
-     DW_OP_GNU_addr_index arguments.  */
-  CORE_ADDR offset;
-
-  /* The current depth of dwarf expression recursion, via DW_OP_call*,
-     DW_OP_fbreg, DW_OP_push_object_address, etc., and the maximum
-     depth we'll tolerate before raising an error.  */
-  int recursion_depth, max_recursion_depth;
-
-  /* Location of the value.  */
-  enum dwarf_value_location location;
-
-  /* For DWARF_VALUE_LITERAL, the current literal value's length and
-     data.  For DWARF_VALUE_IMPLICIT_POINTER, LEN is the offset of the
-     target DIE of sect_offset kind.  */
-  ULONGEST len;
-  const gdb_byte *data;
-
-  /* Initialization status of variable: Non-zero if variable has been
-     initialized; zero otherwise.  */
-  int initialized;
-
-  /* A vector of pieces.
-
-     Each time DW_OP_piece is executed, we add a new element to the
-     end of this array, recording the current top of the stack, the
-     current location, and the size given as the operand to
-     DW_OP_piece.  We then pop the top value from the stack, reset the
-     location, and resume evaluation.
-
-     The Dwarf spec doesn't say whether DW_OP_piece pops the top value
-     from the stack.  We do, ensuring that clients of this interface
-     expecting to see a value left on the top of the stack (say, code
-     evaluating frame base expressions or CFA's specified with
-     DW_CFA_def_cfa_expression) will get an error if the expression
-     actually marks all the values it computes as pieces.
-
-     If an expression never uses DW_OP_piece, num_pieces will be zero.
-     (It would be nice to present these cases as expressions yielding
-     a single piece, so that callers need not distinguish between the
-     no-DW_OP_piece and one-DW_OP_piece cases.  But expressions with
-     no DW_OP_piece operations have no value to place in a piece's
-     'size' field; the size comes from the surrounding data.  So the
-     two cases need to be handled separately.)  */
-  std::vector<dwarf_expr_piece> pieces;
-
-  /* Return the value of register number REGNUM (a DWARF register number),
-     read as an address.  */
-  virtual CORE_ADDR read_addr_from_reg (int regnum) = 0;
-
-  /* Return a value of type TYPE, stored in register number REGNUM
-     of the frame associated to the given BATON.
-
-     REGNUM is a DWARF register number.  */
-  virtual struct value *get_reg_value (struct type *type, int regnum) = 0;
-
-  /* Read LENGTH bytes at ADDR into BUF.  */
-  virtual void read_mem (gdb_byte *buf, CORE_ADDR addr, size_t length) = 0;
-
-  /* Return the location expression for the frame base attribute, in
-     START and LENGTH.  The result must be live until the current
-     expression evaluation is complete.  */
-  virtual void get_frame_base (const gdb_byte **start, size_t *length) = 0;
-
-  /* Return the CFA for the frame.  */
-  virtual CORE_ADDR get_frame_cfa () = 0;
-
-  /* Return the PC for the frame.  */
-  virtual CORE_ADDR get_frame_pc ()
-  {
-    error (_("%s is invalid in this context"), "DW_OP_implicit_pointer");
-  }
-
-  /* Return the thread-local storage address for
-     DW_OP_GNU_push_tls_address or DW_OP_form_tls_address.  */
-  virtual CORE_ADDR get_tls_address (CORE_ADDR offset) = 0;
-
-  /* Execute DW_AT_location expression for the DWARF expression
-     subroutine in the DIE at DIE_CU_OFF in the CU.  Do not touch
-     STACK while it being passed to and returned from the called DWARF
-     subroutine.  */
-  virtual void dwarf_call (cu_offset die_cu_off) = 0;
-
-  /* Execute "variable value" operation on the DIE at SECT_OFF.  */
-  virtual struct value *dwarf_variable_value (sect_offset sect_off) = 0;
-
-  /* Return the base type given by the indicated DIE at DIE_CU_OFF.
-     This can throw an exception if the DIE is invalid or does not
-     represent a base type.  SIZE is non-zero if this function should
-     verify that the resulting type has the correct size.  */
-  virtual struct type *get_base_type (cu_offset die_cu_off, int size)
-  {
-    /* Anything will do.  */
-    return builtin_type (this->gdbarch)->builtin_int;
-  }
-
-  /* Push on DWARF stack an entry evaluated for DW_TAG_call_site's
-     parameter matching KIND and KIND_U at the caller of specified BATON.
-     If DEREF_SIZE is not -1 then use DW_AT_call_data_value instead of
-     DW_AT_call_value.  */
-  virtual void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind,
-					   union call_site_parameter_u kind_u,
-					   int deref_size) = 0;
-
-  /* Return the address indexed by DW_OP_addrx or DW_OP_GNU_addr_index.
-     This can throw an exception if the index is out of range.  */
-  virtual CORE_ADDR get_addr_index (unsigned int index) = 0;
-
-  /* Return the `object address' for DW_OP_push_object_address.  */
-  virtual CORE_ADDR get_object_address () = 0;
-
-private:
-
-  struct type *address_type () const;
-  void push (struct value *value, bool in_stack_memory);
-  bool stack_empty_p () const;
-  void add_piece (ULONGEST size, ULONGEST offset);
-  void execute_stack_op (const gdb_byte *op_ptr, const gdb_byte *op_end);
-  void pop ();
-};
-
-void dwarf_expr_require_composition (const gdb_byte *, const gdb_byte *,
-				     const char *);
-
-int dwarf_block_to_dwarf_reg (const gdb_byte *buf, const gdb_byte *buf_end);
-
-int dwarf_block_to_dwarf_reg_deref (const gdb_byte *buf,
-				    const gdb_byte *buf_end,
-				    CORE_ADDR *deref_size_return);
-
-int dwarf_block_to_fb_offset (const gdb_byte *buf, const gdb_byte *buf_end,
-			      CORE_ADDR *fb_offset_return);
-
-int dwarf_block_to_sp_offset (struct gdbarch *gdbarch, const gdb_byte *buf,
-			      const gdb_byte *buf_end,
-			      CORE_ADDR *sp_offset_return);
-
-/* Wrappers around the leb128 reader routines to simplify them for our
-   purposes.  */
-
-static inline const gdb_byte *
-gdb_read_uleb128 (const gdb_byte *buf, const gdb_byte *buf_end,
-		  uint64_t *r)
-{
-  size_t bytes_read = read_uleb128_to_uint64 (buf, buf_end, r);
-
-  if (bytes_read == 0)
-    return NULL;
-  return buf + bytes_read;
-}
-
-static inline const gdb_byte *
-gdb_read_sleb128 (const gdb_byte *buf, const gdb_byte *buf_end,
-		  int64_t *r)
-{
-  size_t bytes_read = read_sleb128_to_int64 (buf, buf_end, r);
-
-  if (bytes_read == 0)
-    return NULL;
-  return buf + bytes_read;
-}
-
-static inline const gdb_byte *
-gdb_skip_leb128 (const gdb_byte *buf, const gdb_byte *buf_end)
-{
-  size_t bytes_read = skip_leb128 (buf, buf_end);
-
-  if (bytes_read == 0)
-    return NULL;
-  return buf + bytes_read;
-}
-
-extern const gdb_byte *safe_read_uleb128 (const gdb_byte *buf,
-					  const gdb_byte *buf_end,
-					  uint64_t *r);
-
-extern const gdb_byte *safe_read_sleb128 (const gdb_byte *buf,
-					  const gdb_byte *buf_end,
-					  int64_t *r);
-
-extern const gdb_byte *safe_skip_leb128 (const gdb_byte *buf,
-					 const gdb_byte *buf_end);
-
-#endif /* dwarf2expr.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2-frame.c ./gdb/dwarf2-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2-frame.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf2-frame.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,2379 +0,0 @@
-/* Frame unwinder for frames with DWARF Call Frame Information.
-
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
-
-   Contributed by Mark Kettenis.
-
-   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 "dwarf2expr.h"
-#include "dwarf2.h"
-#include "frame.h"
-#include "frame-base.h"
-#include "frame-unwind.h"
-#include "gdbcore.h"
-#include "gdbtypes.h"
-#include "symtab.h"
-#include "objfiles.h"
-#include "regcache.h"
-#include "value.h"
-#include "record.h"
-
-#include "complaints.h"
-#include "dwarf2-frame.h"
-#include "dwarf2read.h"
-#include "ax.h"
-#include "dwarf2loc.h"
-#include "dwarf2-frame-tailcall.h"
-#include "gdbsupport/gdb_binary_search.h"
-#if GDB_SELF_TEST
-#include "gdbsupport/selftest.h"
-#include "selftest-arch.h"
-#endif
-#include <unordered_map>
-
-#include <algorithm>
-
-struct comp_unit;
-
-/* Call Frame Information (CFI).  */
-
-/* Common Information Entry (CIE).  */
-
-struct dwarf2_cie
-{
-  /* Computation Unit for this CIE.  */
-  struct comp_unit *unit;
-
-  /* Offset into the .debug_frame section where this CIE was found.
-     Used to identify this CIE.  */
-  ULONGEST cie_pointer;
-
-  /* Constant that is factored out of all advance location
-     instructions.  */
-  ULONGEST code_alignment_factor;
-
-  /* Constants that is factored out of all offset instructions.  */
-  LONGEST data_alignment_factor;
-
-  /* Return address column.  */
-  ULONGEST return_address_register;
-
-  /* Instruction sequence to initialize a register set.  */
-  const gdb_byte *initial_instructions;
-  const gdb_byte *end;
-
-  /* Saved augmentation, in case it's needed later.  */
-  char *augmentation;
-
-  /* Encoding of addresses.  */
-  gdb_byte encoding;
-
-  /* Target address size in bytes.  */
-  int addr_size;
-
-  /* Target pointer size in bytes.  */
-  int ptr_size;
-
-  /* True if a 'z' augmentation existed.  */
-  unsigned char saw_z_augmentation;
-
-  /* True if an 'S' augmentation existed.  */
-  unsigned char signal_frame;
-
-  /* The version recorded in the CIE.  */
-  unsigned char version;
-
-  /* The segment size.  */
-  unsigned char segment_size;
-};
-
-/* The CIE table is used to find CIEs during parsing, but then
-   discarded.  It maps from the CIE's offset to the CIE.  */
-typedef std::unordered_map<ULONGEST, dwarf2_cie *> dwarf2_cie_table;
-
-/* Frame Description Entry (FDE).  */
-
-struct dwarf2_fde
-{
-  /* CIE for this FDE.  */
-  struct dwarf2_cie *cie;
-
-  /* First location associated with this FDE.  */
-  CORE_ADDR initial_location;
-
-  /* Number of bytes of program instructions described by this FDE.  */
-  CORE_ADDR address_range;
-
-  /* Instruction sequence.  */
-  const gdb_byte *instructions;
-  const gdb_byte *end;
-
-  /* True if this FDE is read from a .eh_frame instead of a .debug_frame
-     section.  */
-  unsigned char eh_frame_p;
-};
-
-struct dwarf2_fde_table
-{
-  int num_entries;
-  struct dwarf2_fde **entries;
-};
-
-/* A minimal decoding of DWARF2 compilation units.  We only decode
-   what's needed to get to the call frame information.  */
-
-struct comp_unit
-{
-  /* Keep the bfd convenient.  */
-  bfd *abfd;
-
-  struct objfile *objfile;
-
-  /* Pointer to the .debug_frame section loaded into memory.  */
-  const gdb_byte *dwarf_frame_buffer;
-
-  /* Length of the loaded .debug_frame section.  */
-  bfd_size_type dwarf_frame_size;
-
-  /* Pointer to the .debug_frame section.  */
-  asection *dwarf_frame_section;
-
-  /* Base for DW_EH_PE_datarel encodings.  */
-  bfd_vma dbase;
-
-  /* Base for DW_EH_PE_textrel encodings.  */
-  bfd_vma tbase;
-};
-
-static struct dwarf2_fde *dwarf2_frame_find_fde (CORE_ADDR *pc,
-						 CORE_ADDR *out_offset);
-
-static int dwarf2_frame_adjust_regnum (struct gdbarch *gdbarch, int regnum,
-				       int eh_frame_p);
-
-static CORE_ADDR read_encoded_value (struct comp_unit *unit, gdb_byte encoding,
-				     int ptr_len, const gdb_byte *buf,
-				     unsigned int *bytes_read_ptr,
-				     CORE_ADDR func_base);
-
-
-/* See dwarf2-frame.h.  */
-bool dwarf2_frame_unwinders_enabled_p = true;
-
-/* Store the length the expression for the CFA in the `cfa_reg' field,
-   which is unused in that case.  */
-#define cfa_exp_len cfa_reg
-
-dwarf2_frame_state::dwarf2_frame_state (CORE_ADDR pc_, struct dwarf2_cie *cie)
-  : pc (pc_), data_align (cie->data_alignment_factor),
-    code_align (cie->code_alignment_factor),
-    retaddr_column (cie->return_address_register)
-{
-}
-
-
-/* Helper functions for execute_stack_op.  */
-
-static CORE_ADDR
-read_addr_from_reg (struct frame_info *this_frame, int reg)
-{
-  struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  int regnum = dwarf_reg_to_regnum_or_error (gdbarch, reg);
-
-  return address_from_register (regnum, this_frame);
-}
-
-/* Execute the required actions for both the DW_CFA_restore and
-DW_CFA_restore_extended instructions.  */
-static void
-dwarf2_restore_rule (struct gdbarch *gdbarch, ULONGEST reg_num,
-		     struct dwarf2_frame_state *fs, int eh_frame_p)
-{
-  ULONGEST reg;
-
-  reg = dwarf2_frame_adjust_regnum (gdbarch, reg_num, eh_frame_p);
-  fs->regs.alloc_regs (reg + 1);
-
-  /* Check if this register was explicitly initialized in the
-  CIE initial instructions.  If not, default the rule to
-  UNSPECIFIED.  */
-  if (reg < fs->initial.reg.size ())
-    fs->regs.reg[reg] = fs->initial.reg[reg];
-  else
-    fs->regs.reg[reg].how = DWARF2_FRAME_REG_UNSPECIFIED;
-
-  if (fs->regs.reg[reg].how == DWARF2_FRAME_REG_UNSPECIFIED)
-    {
-      int regnum = dwarf_reg_to_regnum (gdbarch, reg);
-
-      complaint (_("\
-incomplete CFI data; DW_CFA_restore unspecified\n\
-register %s (#%d) at %s"),
-		 gdbarch_register_name (gdbarch, regnum), regnum,
-		 paddress (gdbarch, fs->pc));
-    }
-}
-
-class dwarf_expr_executor : public dwarf_expr_context
-{
- public:
-
-  struct frame_info *this_frame;
-
-  CORE_ADDR read_addr_from_reg (int reg) override
-  {
-    return ::read_addr_from_reg (this_frame, reg);
-  }
-
-  struct value *get_reg_value (struct type *type, int reg) override
-  {
-    struct gdbarch *gdbarch = get_frame_arch (this_frame);
-    int regnum = dwarf_reg_to_regnum_or_error (gdbarch, reg);
-
-    return value_from_register (type, regnum, this_frame);
-  }
-
-  void read_mem (gdb_byte *buf, CORE_ADDR addr, size_t len) override
-  {
-    read_memory (addr, buf, len);
-  }
-
-  void get_frame_base (const gdb_byte **start, size_t *length) override
-  {
-    invalid ("DW_OP_fbreg");
-  }
-
-  void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind,
-				   union call_site_parameter_u kind_u,
-				   int deref_size) override
-  {
-    invalid ("DW_OP_entry_value");
-  }
-
-  CORE_ADDR get_object_address () override
-  {
-    invalid ("DW_OP_push_object_address");
-  }
-
-  CORE_ADDR get_frame_cfa () override
-  {
-    invalid ("DW_OP_call_frame_cfa");
-  }
-
-  CORE_ADDR get_tls_address (CORE_ADDR offset) override
-  {
-    invalid ("DW_OP_form_tls_address");
-  }
-
-  void dwarf_call (cu_offset die_offset) override
-  {
-    invalid ("DW_OP_call*");
-  }
-
-  struct value *dwarf_variable_value (sect_offset sect_off) override
-  {
-    invalid ("DW_OP_GNU_variable_value");
-  }
-
-  CORE_ADDR get_addr_index (unsigned int index) override
-  {
-    invalid ("DW_OP_addrx or DW_OP_GNU_addr_index");
-  }
-
- private:
-
-  void invalid (const char *op) ATTRIBUTE_NORETURN
-  {
-    error (_("%s is invalid in this context"), op);
-  }
-};
-
-static CORE_ADDR
-execute_stack_op (const gdb_byte *exp, ULONGEST len, int addr_size,
-		  CORE_ADDR offset, struct frame_info *this_frame,
-		  CORE_ADDR initial, int initial_in_stack_memory)
-{
-  CORE_ADDR result;
-
-  dwarf_expr_executor ctx;
-  scoped_value_mark free_values;
-
-  ctx.this_frame = this_frame;
-  ctx.gdbarch = get_frame_arch (this_frame);
-  ctx.addr_size = addr_size;
-  ctx.ref_addr_size = -1;
-  ctx.offset = offset;
-
-  ctx.push_address (initial, initial_in_stack_memory);
-  ctx.eval (exp, len);
-
-  if (ctx.location == DWARF_VALUE_MEMORY)
-    result = ctx.fetch_address (0);
-  else if (ctx.location == DWARF_VALUE_REGISTER)
-    result = ctx.read_addr_from_reg (value_as_long (ctx.fetch (0)));
-  else
-    {
-      /* This is actually invalid DWARF, but if we ever do run across
-	 it somehow, we might as well support it.  So, instead, report
-	 it as unimplemented.  */
-      error (_("\
-Not implemented: computing unwound register using explicit value operator"));
-    }
-
-  return result;
-}
-
-
-/* Execute FDE program from INSN_PTR possibly up to INSN_END or up to inferior
-   PC.  Modify FS state accordingly.  Return current INSN_PTR where the
-   execution has stopped, one can resume it on the next call.  */
-
-static const gdb_byte *
-execute_cfa_program (struct dwarf2_fde *fde, const gdb_byte *insn_ptr,
-		     const gdb_byte *insn_end, struct gdbarch *gdbarch,
-		     CORE_ADDR pc, struct dwarf2_frame_state *fs)
-{
-  int eh_frame_p = fde->eh_frame_p;
-  unsigned int bytes_read;
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-
-  while (insn_ptr < insn_end && fs->pc <= pc)
-    {
-      gdb_byte insn = *insn_ptr++;
-      uint64_t utmp, reg;
-      int64_t offset;
-
-      if ((insn & 0xc0) == DW_CFA_advance_loc)
-	fs->pc += (insn & 0x3f) * fs->code_align;
-      else if ((insn & 0xc0) == DW_CFA_offset)
-	{
-	  reg = insn & 0x3f;
-	  reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
-	  insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-	  offset = utmp * fs->data_align;
-	  fs->regs.alloc_regs (reg + 1);
-	  fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
-	  fs->regs.reg[reg].loc.offset = offset;
-	}
-      else if ((insn & 0xc0) == DW_CFA_restore)
-	{
-	  reg = insn & 0x3f;
-	  dwarf2_restore_rule (gdbarch, reg, fs, eh_frame_p);
-	}
-      else
-	{
-	  switch (insn)
-	    {
-	    case DW_CFA_set_loc:
-	      fs->pc = read_encoded_value (fde->cie->unit, fde->cie->encoding,
-					   fde->cie->ptr_size, insn_ptr,
-					   &bytes_read, fde->initial_location);
-	      /* Apply the objfile offset for relocatable objects.  */
-	      fs->pc += ANOFFSET (fde->cie->unit->objfile->section_offsets,
-				  SECT_OFF_TEXT (fde->cie->unit->objfile));
-	      insn_ptr += bytes_read;
-	      break;
-
-	    case DW_CFA_advance_loc1:
-	      utmp = extract_unsigned_integer (insn_ptr, 1, byte_order);
-	      fs->pc += utmp * fs->code_align;
-	      insn_ptr++;
-	      break;
-	    case DW_CFA_advance_loc2:
-	      utmp = extract_unsigned_integer (insn_ptr, 2, byte_order);
-	      fs->pc += utmp * fs->code_align;
-	      insn_ptr += 2;
-	      break;
-	    case DW_CFA_advance_loc4:
-	      utmp = extract_unsigned_integer (insn_ptr, 4, byte_order);
-	      fs->pc += utmp * fs->code_align;
-	      insn_ptr += 4;
-	      break;
-
-	    case DW_CFA_offset_extended:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-	      offset = utmp * fs->data_align;
-	      fs->regs.alloc_regs (reg + 1);
-	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
-	      fs->regs.reg[reg].loc.offset = offset;
-	      break;
-
-	    case DW_CFA_restore_extended:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      dwarf2_restore_rule (gdbarch, reg, fs, eh_frame_p);
-	      break;
-
-	    case DW_CFA_undefined:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
-	      fs->regs.alloc_regs (reg + 1);
-	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_UNDEFINED;
-	      break;
-
-	    case DW_CFA_same_value:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
-	      fs->regs.alloc_regs (reg + 1);
-	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAME_VALUE;
-	      break;
-
-	    case DW_CFA_register:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-	      utmp = dwarf2_frame_adjust_regnum (gdbarch, utmp, eh_frame_p);
-	      fs->regs.alloc_regs (reg + 1);
-	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_REG;
-	      fs->regs.reg[reg].loc.reg = utmp;
-	      break;
-
-	    case DW_CFA_remember_state:
-	      {
-		struct dwarf2_frame_state_reg_info *new_rs;
-
-		new_rs = new dwarf2_frame_state_reg_info (fs->regs);
-		fs->regs.prev = new_rs;
-	      }
-	      break;
-
-	    case DW_CFA_restore_state:
-	      {
-		struct dwarf2_frame_state_reg_info *old_rs = fs->regs.prev;
-
-		if (old_rs == NULL)
-		  {
-		    complaint (_("\
-bad CFI data; mismatched DW_CFA_restore_state at %s"),
-			       paddress (gdbarch, fs->pc));
-		  }
-		else
-		  fs->regs = std::move (*old_rs);
-	      }
-	      break;
-
-	    case DW_CFA_def_cfa:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      fs->regs.cfa_reg = reg;
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-
-	      if (fs->armcc_cfa_offsets_sf)
-		utmp *= fs->data_align;
-
-	      fs->regs.cfa_offset = utmp;
-	      fs->regs.cfa_how = CFA_REG_OFFSET;
-	      break;
-
-	    case DW_CFA_def_cfa_register:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      fs->regs.cfa_reg = dwarf2_frame_adjust_regnum (gdbarch, reg,
-                                                             eh_frame_p);
-	      fs->regs.cfa_how = CFA_REG_OFFSET;
-	      break;
-
-	    case DW_CFA_def_cfa_offset:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-
-	      if (fs->armcc_cfa_offsets_sf)
-		utmp *= fs->data_align;
-
-	      fs->regs.cfa_offset = utmp;
-	      /* cfa_how deliberately not set.  */
-	      break;
-
-	    case DW_CFA_nop:
-	      break;
-
-	    case DW_CFA_def_cfa_expression:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-	      fs->regs.cfa_exp_len = utmp;
-	      fs->regs.cfa_exp = insn_ptr;
-	      fs->regs.cfa_how = CFA_EXP;
-	      insn_ptr += fs->regs.cfa_exp_len;
-	      break;
-
-	    case DW_CFA_expression:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
-	      fs->regs.alloc_regs (reg + 1);
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-	      fs->regs.reg[reg].loc.exp.start = insn_ptr;
-	      fs->regs.reg[reg].loc.exp.len = utmp;
-	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_EXP;
-	      insn_ptr += utmp;
-	      break;
-
-	    case DW_CFA_offset_extended_sf:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
-	      insn_ptr = safe_read_sleb128 (insn_ptr, insn_end, &offset);
-	      offset *= fs->data_align;
-	      fs->regs.alloc_regs (reg + 1);
-	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
-	      fs->regs.reg[reg].loc.offset = offset;
-	      break;
-
-	    case DW_CFA_val_offset:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      fs->regs.alloc_regs (reg + 1);
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-	      offset = utmp * fs->data_align;
-	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_VAL_OFFSET;
-	      fs->regs.reg[reg].loc.offset = offset;
-	      break;
-
-	    case DW_CFA_val_offset_sf:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      fs->regs.alloc_regs (reg + 1);
-	      insn_ptr = safe_read_sleb128 (insn_ptr, insn_end, &offset);
-	      offset *= fs->data_align;
-	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_VAL_OFFSET;
-	      fs->regs.reg[reg].loc.offset = offset;
-	      break;
-
-	    case DW_CFA_val_expression:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      fs->regs.alloc_regs (reg + 1);
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-	      fs->regs.reg[reg].loc.exp.start = insn_ptr;
-	      fs->regs.reg[reg].loc.exp.len = utmp;
-	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_VAL_EXP;
-	      insn_ptr += utmp;
-	      break;
-
-	    case DW_CFA_def_cfa_sf:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      fs->regs.cfa_reg = dwarf2_frame_adjust_regnum (gdbarch, reg,
-                                                             eh_frame_p);
-	      insn_ptr = safe_read_sleb128 (insn_ptr, insn_end, &offset);
-	      fs->regs.cfa_offset = offset * fs->data_align;
-	      fs->regs.cfa_how = CFA_REG_OFFSET;
-	      break;
-
-	    case DW_CFA_def_cfa_offset_sf:
-	      insn_ptr = safe_read_sleb128 (insn_ptr, insn_end, &offset);
-	      fs->regs.cfa_offset = offset * fs->data_align;
-	      /* cfa_how deliberately not set.  */
-	      break;
-
-	    case DW_CFA_GNU_args_size:
-	      /* Ignored.  */
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-	      break;
-
-	    case DW_CFA_GNU_negative_offset_extended:
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &reg);
-	      reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p);
-	      insn_ptr = safe_read_uleb128 (insn_ptr, insn_end, &utmp);
-	      offset = utmp * fs->data_align;
-	      fs->regs.alloc_regs (reg + 1);
-	      fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
-	      fs->regs.reg[reg].loc.offset = -offset;
-	      break;
-
-	    default:
-	      if (insn >= DW_CFA_lo_user && insn <= DW_CFA_hi_user)
-		{
-		  /* Handle vendor-specific CFI for different architectures.  */
-		  if (!gdbarch_execute_dwarf_cfa_vendor_op (gdbarch, insn, fs))
-		    error (_("Call Frame Instruction op %d in vendor extension "
-			     "space is not handled on this architecture."),
-			   insn);
-		}
-	      else
-		internal_error (__FILE__, __LINE__,
-				_("Unknown CFI encountered."));
-	    }
-	}
-    }
-
-  if (fs->initial.reg.empty ())
-    {
-      /* Don't allow remember/restore between CIE and FDE programs.  */
-      delete fs->regs.prev;
-      fs->regs.prev = NULL;
-    }
-
-  return insn_ptr;
-}
-
-#if GDB_SELF_TEST
-
-namespace selftests {
-
-/* Unit test to function execute_cfa_program.  */
-
-static void
-execute_cfa_program_test (struct gdbarch *gdbarch)
-{
-  struct dwarf2_fde fde;
-  struct dwarf2_cie cie;
-
-  memset (&fde, 0, sizeof fde);
-  memset (&cie, 0, sizeof cie);
-
-  cie.data_alignment_factor = -4;
-  cie.code_alignment_factor = 2;
-  fde.cie = &cie;
-
-  dwarf2_frame_state fs (0, fde.cie);
-
-  gdb_byte insns[] =
-    {
-      DW_CFA_def_cfa, 1, 4,  /* DW_CFA_def_cfa: r1 ofs 4 */
-      DW_CFA_offset | 0x2, 1,  /* DW_CFA_offset: r2 at cfa-4 */
-      DW_CFA_remember_state,
-      DW_CFA_restore_state,
-    };
-
-  const gdb_byte *insn_end = insns + sizeof (insns);
-  const gdb_byte *out = execute_cfa_program (&fde, insns, insn_end, gdbarch,
-					     0, &fs);
-
-  SELF_CHECK (out == insn_end);
-  SELF_CHECK (fs.pc == 0);
-
-  /* The instructions above only use r1 and r2, but the register numbers
-     used are adjusted by dwarf2_frame_adjust_regnum.  */
-  auto r1 = dwarf2_frame_adjust_regnum (gdbarch, 1, fde.eh_frame_p);
-  auto r2 = dwarf2_frame_adjust_regnum (gdbarch, 2, fde.eh_frame_p);
-
-  SELF_CHECK (fs.regs.reg.size () == (std::max (r1, r2) + 1));
-
-  SELF_CHECK (fs.regs.reg[r2].how == DWARF2_FRAME_REG_SAVED_OFFSET);
-  SELF_CHECK (fs.regs.reg[r2].loc.offset == -4);
-
-  for (auto i = 0; i < fs.regs.reg.size (); i++)
-    if (i != r2)
-      SELF_CHECK (fs.regs.reg[i].how == DWARF2_FRAME_REG_UNSPECIFIED);
-
-  SELF_CHECK (fs.regs.cfa_reg == 1);
-  SELF_CHECK (fs.regs.cfa_offset == 4);
-  SELF_CHECK (fs.regs.cfa_how == CFA_REG_OFFSET);
-  SELF_CHECK (fs.regs.cfa_exp == NULL);
-  SELF_CHECK (fs.regs.prev == NULL);
-}
-
-} // namespace selftests
-#endif /* GDB_SELF_TEST */
-
-
-
-/* Architecture-specific operations.  */
-
-/* Per-architecture data key.  */
-static struct gdbarch_data *dwarf2_frame_data;
-
-struct dwarf2_frame_ops
-{
-  /* Pre-initialize the register state REG for register REGNUM.  */
-  void (*init_reg) (struct gdbarch *, int, struct dwarf2_frame_state_reg *,
-		    struct frame_info *);
-
-  /* Check whether the THIS_FRAME is a signal trampoline.  */
-  int (*signal_frame_p) (struct gdbarch *, struct frame_info *);
-
-  /* Convert .eh_frame register number to DWARF register number, or
-     adjust .debug_frame register number.  */
-  int (*adjust_regnum) (struct gdbarch *, int, int);
-};
-
-/* Default architecture-specific register state initialization
-   function.  */
-
-static void
-dwarf2_frame_default_init_reg (struct gdbarch *gdbarch, int regnum,
-			       struct dwarf2_frame_state_reg *reg,
-			       struct frame_info *this_frame)
-{
-  /* If we have a register that acts as a program counter, mark it as
-     a destination for the return address.  If we have a register that
-     serves as the stack pointer, arrange for it to be filled with the
-     call frame address (CFA).  The other registers are marked as
-     unspecified.
-
-     We copy the return address to the program counter, since many
-     parts in GDB assume that it is possible to get the return address
-     by unwinding the program counter register.  However, on ISA's
-     with a dedicated return address register, the CFI usually only
-     contains information to unwind that return address register.
-
-     The reason we're treating the stack pointer special here is
-     because in many cases GCC doesn't emit CFI for the stack pointer
-     and implicitly assumes that it is equal to the CFA.  This makes
-     some sense since the DWARF specification (version 3, draft 8,
-     p. 102) says that:
-
-     "Typically, the CFA is defined to be the value of the stack
-     pointer at the call site in the previous frame (which may be
-     different from its value on entry to the current frame)."
-
-     However, this isn't true for all platforms supported by GCC
-     (e.g. IBM S/390 and zSeries).  Those architectures should provide
-     their own architecture-specific initialization function.  */
-
-  if (regnum == gdbarch_pc_regnum (gdbarch))
-    reg->how = DWARF2_FRAME_REG_RA;
-  else if (regnum == gdbarch_sp_regnum (gdbarch))
-    reg->how = DWARF2_FRAME_REG_CFA;
-}
-
-/* Return a default for the architecture-specific operations.  */
-
-static void *
-dwarf2_frame_init (struct obstack *obstack)
-{
-  struct dwarf2_frame_ops *ops;
-  
-  ops = OBSTACK_ZALLOC (obstack, struct dwarf2_frame_ops);
-  ops->init_reg = dwarf2_frame_default_init_reg;
-  return ops;
-}
-
-/* Set the architecture-specific register state initialization
-   function for GDBARCH to INIT_REG.  */
-
-void
-dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
-			   void (*init_reg) (struct gdbarch *, int,
-					     struct dwarf2_frame_state_reg *,
-					     struct frame_info *))
-{
-  struct dwarf2_frame_ops *ops
-    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
-
-  ops->init_reg = init_reg;
-}
-
-/* Pre-initialize the register state REG for register REGNUM.  */
-
-static void
-dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
-		       struct dwarf2_frame_state_reg *reg,
-		       struct frame_info *this_frame)
-{
-  struct dwarf2_frame_ops *ops
-    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
-
-  ops->init_reg (gdbarch, regnum, reg, this_frame);
-}
-
-/* Set the architecture-specific signal trampoline recognition
-   function for GDBARCH to SIGNAL_FRAME_P.  */
-
-void
-dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch,
-				 int (*signal_frame_p) (struct gdbarch *,
-							struct frame_info *))
-{
-  struct dwarf2_frame_ops *ops
-    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
-
-  ops->signal_frame_p = signal_frame_p;
-}
-
-/* Query the architecture-specific signal frame recognizer for
-   THIS_FRAME.  */
-
-static int
-dwarf2_frame_signal_frame_p (struct gdbarch *gdbarch,
-			     struct frame_info *this_frame)
-{
-  struct dwarf2_frame_ops *ops
-    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
-
-  if (ops->signal_frame_p == NULL)
-    return 0;
-  return ops->signal_frame_p (gdbarch, this_frame);
-}
-
-/* Set the architecture-specific adjustment of .eh_frame and .debug_frame
-   register numbers.  */
-
-void
-dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch,
-				int (*adjust_regnum) (struct gdbarch *,
-						      int, int))
-{
-  struct dwarf2_frame_ops *ops
-    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
-
-  ops->adjust_regnum = adjust_regnum;
-}
-
-/* Translate a .eh_frame register to DWARF register, or adjust a .debug_frame
-   register.  */
-
-static int
-dwarf2_frame_adjust_regnum (struct gdbarch *gdbarch,
-			    int regnum, int eh_frame_p)
-{
-  struct dwarf2_frame_ops *ops
-    = (struct dwarf2_frame_ops *) gdbarch_data (gdbarch, dwarf2_frame_data);
-
-  if (ops->adjust_regnum == NULL)
-    return regnum;
-  return ops->adjust_regnum (gdbarch, regnum, eh_frame_p);
-}
-
-static void
-dwarf2_frame_find_quirks (struct dwarf2_frame_state *fs,
-			  struct dwarf2_fde *fde)
-{
-  struct compunit_symtab *cust;
-
-  cust = find_pc_compunit_symtab (fs->pc);
-  if (cust == NULL)
-    return;
-
-  if (producer_is_realview (COMPUNIT_PRODUCER (cust)))
-    {
-      if (fde->cie->version == 1)
-	fs->armcc_cfa_offsets_sf = 1;
-
-      if (fde->cie->version == 1)
-	fs->armcc_cfa_offsets_reversed = 1;
-
-      /* The reversed offset problem is present in some compilers
-	 using DWARF3, but it was eventually fixed.  Check the ARM
-	 defined augmentations, which are in the format "armcc" followed
-	 by a list of one-character options.  The "+" option means
-	 this problem is fixed (no quirk needed).  If the armcc
-	 augmentation is missing, the quirk is needed.  */
-      if (fde->cie->version == 3
-	  && (!startswith (fde->cie->augmentation, "armcc")
-	      || strchr (fde->cie->augmentation + 5, '+') == NULL))
-	fs->armcc_cfa_offsets_reversed = 1;
-
-      return;
-    }
-}
-
-
-/* See dwarf2-frame.h.  */
-
-int
-dwarf2_fetch_cfa_info (struct gdbarch *gdbarch, CORE_ADDR pc,
-		       struct dwarf2_per_cu_data *data,
-		       int *regnum_out, LONGEST *offset_out,
-		       CORE_ADDR *text_offset_out,
-		       const gdb_byte **cfa_start_out,
-		       const gdb_byte **cfa_end_out)
-{
-  struct dwarf2_fde *fde;
-  CORE_ADDR text_offset;
-  CORE_ADDR pc1 = pc;
-
-  /* Find the correct FDE.  */
-  fde = dwarf2_frame_find_fde (&pc1, &text_offset);
-  if (fde == NULL)
-    error (_("Could not compute CFA; needed to translate this expression"));
-
-  dwarf2_frame_state fs (pc1, fde->cie);
-
-  /* Check for "quirks" - known bugs in producers.  */
-  dwarf2_frame_find_quirks (&fs, fde);
-
-  /* First decode all the insns in the CIE.  */
-  execute_cfa_program (fde, fde->cie->initial_instructions,
-		       fde->cie->end, gdbarch, pc, &fs);
-
-  /* Save the initialized register set.  */
-  fs.initial = fs.regs;
-
-  /* Then decode the insns in the FDE up to our target PC.  */
-  execute_cfa_program (fde, fde->instructions, fde->end, gdbarch, pc, &fs);
-
-  /* Calculate the CFA.  */
-  switch (fs.regs.cfa_how)
-    {
-    case CFA_REG_OFFSET:
-      {
-	int regnum = dwarf_reg_to_regnum_or_error (gdbarch, fs.regs.cfa_reg);
-
-	*regnum_out = regnum;
-	if (fs.armcc_cfa_offsets_reversed)
-	  *offset_out = -fs.regs.cfa_offset;
-	else
-	  *offset_out = fs.regs.cfa_offset;
-	return 1;
-      }
-
-    case CFA_EXP:
-      *text_offset_out = text_offset;
-      *cfa_start_out = fs.regs.cfa_exp;
-      *cfa_end_out = fs.regs.cfa_exp + fs.regs.cfa_exp_len;
-      return 0;
-
-    default:
-      internal_error (__FILE__, __LINE__, _("Unknown CFA rule."));
-    }
-}
-
-
-struct dwarf2_frame_cache
-{
-  /* DWARF Call Frame Address.  */
-  CORE_ADDR cfa;
-
-  /* Set if the return address column was marked as unavailable
-     (required non-collected memory or registers to compute).  */
-  int unavailable_retaddr;
-
-  /* Set if the return address column was marked as undefined.  */
-  int undefined_retaddr;
-
-  /* Saved registers, indexed by GDB register number, not by DWARF
-     register number.  */
-  struct dwarf2_frame_state_reg *reg;
-
-  /* Return address register.  */
-  struct dwarf2_frame_state_reg retaddr_reg;
-
-  /* Target address size in bytes.  */
-  int addr_size;
-
-  /* The .text offset.  */
-  CORE_ADDR text_offset;
-
-  /* True if we already checked whether this frame is the bottom frame
-     of a virtual tail call frame chain.  */
-  int checked_tailcall_bottom;
-
-  /* If not NULL then this frame is the bottom frame of a TAILCALL_FRAME
-     sequence.  If NULL then it is a normal case with no TAILCALL_FRAME
-     involved.  Non-bottom frames of a virtual tail call frames chain use
-     dwarf2_tailcall_frame_unwind unwinder so this field does not apply for
-     them.  */
-  void *tailcall_cache;
-
-  /* The number of bytes to subtract from TAILCALL_FRAME frames frame
-     base to get the SP, to simulate the return address pushed on the
-     stack.  */
-  LONGEST entry_cfa_sp_offset;
-  int entry_cfa_sp_offset_p;
-};
-
-static struct dwarf2_frame_cache *
-dwarf2_frame_cache (struct frame_info *this_frame, void **this_cache)
-{
-  struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  const int num_regs = gdbarch_num_cooked_regs (gdbarch);
-  struct dwarf2_frame_cache *cache;
-  struct dwarf2_fde *fde;
-  CORE_ADDR entry_pc;
-  const gdb_byte *instr;
-
-  if (*this_cache)
-    return (struct dwarf2_frame_cache *) *this_cache;
-
-  /* Allocate a new cache.  */
-  cache = FRAME_OBSTACK_ZALLOC (struct dwarf2_frame_cache);
-  cache->reg = FRAME_OBSTACK_CALLOC (num_regs, struct dwarf2_frame_state_reg);
-  *this_cache = cache;
-
-  /* Unwind the PC.
-
-     Note that if the next frame is never supposed to return (i.e. a call
-     to abort), the compiler might optimize away the instruction at
-     its return address.  As a result the return address will
-     point at some random instruction, and the CFI for that
-     instruction is probably worthless to us.  GCC's unwinder solves
-     this problem by substracting 1 from the return address to get an
-     address in the middle of a presumed call instruction (or the
-     instruction in the associated delay slot).  This should only be
-     done for "normal" frames and not for resume-type frames (signal
-     handlers, sentinel frames, dummy frames).  The function
-     get_frame_address_in_block does just this.  It's not clear how
-     reliable the method is though; there is the potential for the
-     register state pre-call being different to that on return.  */
-  CORE_ADDR pc1 = get_frame_address_in_block (this_frame);
-
-  /* Find the correct FDE.  */
-  fde = dwarf2_frame_find_fde (&pc1, &cache->text_offset);
-  gdb_assert (fde != NULL);
-
-  /* Allocate and initialize the frame state.  */
-  struct dwarf2_frame_state fs (pc1, fde->cie);
-
-  cache->addr_size = fde->cie->addr_size;
-
-  /* Check for "quirks" - known bugs in producers.  */
-  dwarf2_frame_find_quirks (&fs, fde);
-
-  /* First decode all the insns in the CIE.  */
-  execute_cfa_program (fde, fde->cie->initial_instructions,
-		       fde->cie->end, gdbarch,
-		       get_frame_address_in_block (this_frame), &fs);
-
-  /* Save the initialized register set.  */
-  fs.initial = fs.regs;
-
-  /* Fetching the entry pc for THIS_FRAME won't necessarily result
-     in an address that's within the range of FDE locations.  This
-     is due to the possibility of the function occupying non-contiguous
-     ranges.  */
-  if (get_frame_func_if_available (this_frame, &entry_pc)
-      && fde->initial_location <= entry_pc
-      && entry_pc < fde->initial_location + fde->address_range)
-    {
-      /* Decode the insns in the FDE up to the entry PC.  */
-      instr = execute_cfa_program (fde, fde->instructions, fde->end, gdbarch,
-				   entry_pc, &fs);
-
-      if (fs.regs.cfa_how == CFA_REG_OFFSET
-	  && (dwarf_reg_to_regnum (gdbarch, fs.regs.cfa_reg)
-	      == gdbarch_sp_regnum (gdbarch)))
-	{
-	  cache->entry_cfa_sp_offset = fs.regs.cfa_offset;
-	  cache->entry_cfa_sp_offset_p = 1;
-	}
-    }
-  else
-    instr = fde->instructions;
-
-  /* Then decode the insns in the FDE up to our target PC.  */
-  execute_cfa_program (fde, instr, fde->end, gdbarch,
-		       get_frame_address_in_block (this_frame), &fs);
-
-  try
-    {
-      /* Calculate the CFA.  */
-      switch (fs.regs.cfa_how)
-	{
-	case CFA_REG_OFFSET:
-	  cache->cfa = read_addr_from_reg (this_frame, fs.regs.cfa_reg);
-	  if (fs.armcc_cfa_offsets_reversed)
-	    cache->cfa -= fs.regs.cfa_offset;
-	  else
-	    cache->cfa += fs.regs.cfa_offset;
-	  break;
-
-	case CFA_EXP:
-	  cache->cfa =
-	    execute_stack_op (fs.regs.cfa_exp, fs.regs.cfa_exp_len,
-			      cache->addr_size, cache->text_offset,
-			      this_frame, 0, 0);
-	  break;
-
-	default:
-	  internal_error (__FILE__, __LINE__, _("Unknown CFA rule."));
-	}
-    }
-  catch (const gdb_exception_error &ex)
-    {
-      if (ex.error == NOT_AVAILABLE_ERROR)
-	{
-	  cache->unavailable_retaddr = 1;
-	  return cache;
-	}
-
-      throw;
-    }
-
-  /* Initialize the register state.  */
-  {
-    int regnum;
-
-    for (regnum = 0; regnum < num_regs; regnum++)
-      dwarf2_frame_init_reg (gdbarch, regnum, &cache->reg[regnum], this_frame);
-  }
-
-  /* Go through the DWARF2 CFI generated table and save its register
-     location information in the cache.  Note that we don't skip the
-     return address column; it's perfectly all right for it to
-     correspond to a real register.  */
-  {
-    int column;		/* CFI speak for "register number".  */
-
-    for (column = 0; column < fs.regs.reg.size (); column++)
-      {
-	/* Use the GDB register number as the destination index.  */
-	int regnum = dwarf_reg_to_regnum (gdbarch, column);
-
-	/* Protect against a target returning a bad register.  */
-	if (regnum < 0 || regnum >= num_regs)
-	  continue;
-
-	/* NOTE: cagney/2003-09-05: CFI should specify the disposition
-	   of all debug info registers.  If it doesn't, complain (but
-	   not too loudly).  It turns out that GCC assumes that an
-	   unspecified register implies "same value" when CFI (draft
-	   7) specifies nothing at all.  Such a register could equally
-	   be interpreted as "undefined".  Also note that this check
-	   isn't sufficient; it only checks that all registers in the
-	   range [0 .. max column] are specified, and won't detect
-	   problems when a debug info register falls outside of the
-	   table.  We need a way of iterating through all the valid
-	   DWARF2 register numbers.  */
-	if (fs.regs.reg[column].how == DWARF2_FRAME_REG_UNSPECIFIED)
-	  {
-	    if (cache->reg[regnum].how == DWARF2_FRAME_REG_UNSPECIFIED)
-	      complaint (_("\
-incomplete CFI data; unspecified registers (e.g., %s) at %s"),
-			 gdbarch_register_name (gdbarch, regnum),
-			 paddress (gdbarch, fs.pc));
-	  }
-	else
-	  cache->reg[regnum] = fs.regs.reg[column];
-      }
-  }
-
-  /* Eliminate any DWARF2_FRAME_REG_RA rules, and save the information
-     we need for evaluating DWARF2_FRAME_REG_RA_OFFSET rules.  */
-  {
-    int regnum;
-
-    for (regnum = 0; regnum < num_regs; regnum++)
-      {
-	if (cache->reg[regnum].how == DWARF2_FRAME_REG_RA
-	    || cache->reg[regnum].how == DWARF2_FRAME_REG_RA_OFFSET)
-	  {
-	    const std::vector<struct dwarf2_frame_state_reg> &regs
-	      = fs.regs.reg;
-	    ULONGEST retaddr_column = fs.retaddr_column;
-
-	    /* It seems rather bizarre to specify an "empty" column as
-               the return adress column.  However, this is exactly
-               what GCC does on some targets.  It turns out that GCC
-               assumes that the return address can be found in the
-               register corresponding to the return address column.
-               Incidentally, that's how we should treat a return
-               address column specifying "same value" too.  */
-	    if (fs.retaddr_column < fs.regs.reg.size ()
-		&& regs[retaddr_column].how != DWARF2_FRAME_REG_UNSPECIFIED
-		&& regs[retaddr_column].how != DWARF2_FRAME_REG_SAME_VALUE)
-	      {
-		if (cache->reg[regnum].how == DWARF2_FRAME_REG_RA)
-		  cache->reg[regnum] = regs[retaddr_column];
-		else
-		  cache->retaddr_reg = regs[retaddr_column];
-	      }
-	    else
-	      {
-		if (cache->reg[regnum].how == DWARF2_FRAME_REG_RA)
-		  {
-		    cache->reg[regnum].loc.reg = fs.retaddr_column;
-		    cache->reg[regnum].how = DWARF2_FRAME_REG_SAVED_REG;
-		  }
-		else
-		  {
-		    cache->retaddr_reg.loc.reg = fs.retaddr_column;
-		    cache->retaddr_reg.how = DWARF2_FRAME_REG_SAVED_REG;
-		  }
-	      }
-	  }
-      }
-  }
-
-  if (fs.retaddr_column < fs.regs.reg.size ()
-      && fs.regs.reg[fs.retaddr_column].how == DWARF2_FRAME_REG_UNDEFINED)
-    cache->undefined_retaddr = 1;
-
-  return cache;
-}
-
-static enum unwind_stop_reason
-dwarf2_frame_unwind_stop_reason (struct frame_info *this_frame,
-				 void **this_cache)
-{
-  struct dwarf2_frame_cache *cache
-    = dwarf2_frame_cache (this_frame, this_cache);
-
-  if (cache->unavailable_retaddr)
-    return UNWIND_UNAVAILABLE;
-
-  if (cache->undefined_retaddr)
-    return UNWIND_OUTERMOST;
-
-  return UNWIND_NO_REASON;
-}
-
-static void
-dwarf2_frame_this_id (struct frame_info *this_frame, void **this_cache,
-		      struct frame_id *this_id)
-{
-  struct dwarf2_frame_cache *cache =
-    dwarf2_frame_cache (this_frame, this_cache);
-
-  if (cache->unavailable_retaddr)
-    (*this_id) = frame_id_build_unavailable_stack (get_frame_func (this_frame));
-  else if (cache->undefined_retaddr)
-    return;
-  else
-    (*this_id) = frame_id_build (cache->cfa, get_frame_func (this_frame));
-}
-
-static struct value *
-dwarf2_frame_prev_register (struct frame_info *this_frame, void **this_cache,
-			    int regnum)
-{
-  struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  struct dwarf2_frame_cache *cache =
-    dwarf2_frame_cache (this_frame, this_cache);
-  CORE_ADDR addr;
-  int realnum;
-
-  /* Check whether THIS_FRAME is the bottom frame of a virtual tail
-     call frame chain.  */
-  if (!cache->checked_tailcall_bottom)
-    {
-      cache->checked_tailcall_bottom = 1;
-      dwarf2_tailcall_sniffer_first (this_frame, &cache->tailcall_cache,
-				     (cache->entry_cfa_sp_offset_p
-				      ? &cache->entry_cfa_sp_offset : NULL));
-    }
-
-  /* Non-bottom frames of a virtual tail call frames chain use
-     dwarf2_tailcall_frame_unwind unwinder so this code does not apply for
-     them.  If dwarf2_tailcall_prev_register_first does not have specific value
-     unwind the register, tail call frames are assumed to have the register set
-     of the top caller.  */
-  if (cache->tailcall_cache)
-    {
-      struct value *val;
-      
-      val = dwarf2_tailcall_prev_register_first (this_frame,
-						 &cache->tailcall_cache,
-						 regnum);
-      if (val)
-	return val;
-    }
-
-  switch (cache->reg[regnum].how)
-    {
-    case DWARF2_FRAME_REG_UNDEFINED:
-      /* If CFI explicitly specified that the value isn't defined,
-	 mark it as optimized away; the value isn't available.  */
-      return frame_unwind_got_optimized (this_frame, regnum);
-
-    case DWARF2_FRAME_REG_SAVED_OFFSET:
-      addr = cache->cfa + cache->reg[regnum].loc.offset;
-      return frame_unwind_got_memory (this_frame, regnum, addr);
-
-    case DWARF2_FRAME_REG_SAVED_REG:
-      realnum = dwarf_reg_to_regnum_or_error
-	(gdbarch, cache->reg[regnum].loc.reg);
-      return frame_unwind_got_register (this_frame, regnum, realnum);
-
-    case DWARF2_FRAME_REG_SAVED_EXP:
-      addr = execute_stack_op (cache->reg[regnum].loc.exp.start,
-			       cache->reg[regnum].loc.exp.len,
-			       cache->addr_size, cache->text_offset,
-			       this_frame, cache->cfa, 1);
-      return frame_unwind_got_memory (this_frame, regnum, addr);
-
-    case DWARF2_FRAME_REG_SAVED_VAL_OFFSET:
-      addr = cache->cfa + cache->reg[regnum].loc.offset;
-      return frame_unwind_got_constant (this_frame, regnum, addr);
-
-    case DWARF2_FRAME_REG_SAVED_VAL_EXP:
-      addr = execute_stack_op (cache->reg[regnum].loc.exp.start,
-			       cache->reg[regnum].loc.exp.len,
-			       cache->addr_size, cache->text_offset,
-			       this_frame, cache->cfa, 1);
-      return frame_unwind_got_constant (this_frame, regnum, addr);
-
-    case DWARF2_FRAME_REG_UNSPECIFIED:
-      /* GCC, in its infinite wisdom decided to not provide unwind
-	 information for registers that are "same value".  Since
-	 DWARF2 (3 draft 7) doesn't define such behavior, said
-	 registers are actually undefined (which is different to CFI
-	 "undefined").  Code above issues a complaint about this.
-	 Here just fudge the books, assume GCC, and that the value is
-	 more inner on the stack.  */
-      return frame_unwind_got_register (this_frame, regnum, regnum);
-
-    case DWARF2_FRAME_REG_SAME_VALUE:
-      return frame_unwind_got_register (this_frame, regnum, regnum);
-
-    case DWARF2_FRAME_REG_CFA:
-      return frame_unwind_got_address (this_frame, regnum, cache->cfa);
-
-    case DWARF2_FRAME_REG_CFA_OFFSET:
-      addr = cache->cfa + cache->reg[regnum].loc.offset;
-      return frame_unwind_got_address (this_frame, regnum, addr);
-
-    case DWARF2_FRAME_REG_RA_OFFSET:
-      addr = cache->reg[regnum].loc.offset;
-      regnum = dwarf_reg_to_regnum_or_error
-	(gdbarch, cache->retaddr_reg.loc.reg);
-      addr += get_frame_register_unsigned (this_frame, regnum);
-      return frame_unwind_got_address (this_frame, regnum, addr);
-
-    case DWARF2_FRAME_REG_FN:
-      return cache->reg[regnum].loc.fn (this_frame, this_cache, regnum);
-
-    default:
-      internal_error (__FILE__, __LINE__, _("Unknown register rule."));
-    }
-}
-
-/* Proxy for tailcall_frame_dealloc_cache for bottom frame of a virtual tail
-   call frames chain.  */
-
-static void
-dwarf2_frame_dealloc_cache (struct frame_info *self, void *this_cache)
-{
-  struct dwarf2_frame_cache *cache = dwarf2_frame_cache (self, &this_cache);
-
-  if (cache->tailcall_cache)
-    dwarf2_tailcall_frame_unwind.dealloc_cache (self, cache->tailcall_cache);
-}
-
-static int
-dwarf2_frame_sniffer (const struct frame_unwind *self,
-		      struct frame_info *this_frame, void **this_cache)
-{
-  if (!dwarf2_frame_unwinders_enabled_p)
-    return 0;
-
-  /* Grab an address that is guaranteed to reside somewhere within the
-     function.  get_frame_pc(), with a no-return next function, can
-     end up returning something past the end of this function's body.
-     If the frame we're sniffing for is a signal frame whose start
-     address is placed on the stack by the OS, its FDE must
-     extend one byte before its start address or we could potentially
-     select the FDE of the previous function.  */
-  CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
-  struct dwarf2_fde *fde = dwarf2_frame_find_fde (&block_addr, NULL);
-
-  if (!fde)
-    return 0;
-
-  /* On some targets, signal trampolines may have unwind information.
-     We need to recognize them so that we set the frame type
-     correctly.  */
-
-  if (fde->cie->signal_frame
-      || dwarf2_frame_signal_frame_p (get_frame_arch (this_frame),
-				      this_frame))
-    return self->type == SIGTRAMP_FRAME;
-
-  if (self->type != NORMAL_FRAME)
-    return 0;
-
-  return 1;
-}
-
-static const struct frame_unwind dwarf2_frame_unwind =
-{
-  NORMAL_FRAME,
-  dwarf2_frame_unwind_stop_reason,
-  dwarf2_frame_this_id,
-  dwarf2_frame_prev_register,
-  NULL,
-  dwarf2_frame_sniffer,
-  dwarf2_frame_dealloc_cache
-};
-
-static const struct frame_unwind dwarf2_signal_frame_unwind =
-{
-  SIGTRAMP_FRAME,
-  dwarf2_frame_unwind_stop_reason,
-  dwarf2_frame_this_id,
-  dwarf2_frame_prev_register,
-  NULL,
-  dwarf2_frame_sniffer,
-
-  /* TAILCALL_CACHE can never be in such frame to need dealloc_cache.  */
-  NULL
-};
-
-/* Append the DWARF-2 frame unwinders to GDBARCH's list.  */
-
-void
-dwarf2_append_unwinders (struct gdbarch *gdbarch)
-{
-  /* TAILCALL_FRAME must be first to find the record by
-     dwarf2_tailcall_sniffer_first.  */
-  frame_unwind_append_unwinder (gdbarch, &dwarf2_tailcall_frame_unwind);
-
-  frame_unwind_append_unwinder (gdbarch, &dwarf2_frame_unwind);
-  frame_unwind_append_unwinder (gdbarch, &dwarf2_signal_frame_unwind);
-}
-
-
-/* There is no explicitly defined relationship between the CFA and the
-   location of frame's local variables and arguments/parameters.
-   Therefore, frame base methods on this page should probably only be
-   used as a last resort, just to avoid printing total garbage as a
-   response to the "info frame" command.  */
-
-static CORE_ADDR
-dwarf2_frame_base_address (struct frame_info *this_frame, void **this_cache)
-{
-  struct dwarf2_frame_cache *cache =
-    dwarf2_frame_cache (this_frame, this_cache);
-
-  return cache->cfa;
-}
-
-static const struct frame_base dwarf2_frame_base =
-{
-  &dwarf2_frame_unwind,
-  dwarf2_frame_base_address,
-  dwarf2_frame_base_address,
-  dwarf2_frame_base_address
-};
-
-const struct frame_base *
-dwarf2_frame_base_sniffer (struct frame_info *this_frame)
-{
-  CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
-
-  if (dwarf2_frame_find_fde (&block_addr, NULL))
-    return &dwarf2_frame_base;
-
-  return NULL;
-}
-
-/* Compute the CFA for THIS_FRAME, but only if THIS_FRAME came from
-   the DWARF unwinder.  This is used to implement
-   DW_OP_call_frame_cfa.  */
-
-CORE_ADDR
-dwarf2_frame_cfa (struct frame_info *this_frame)
-{
-  if (frame_unwinder_is (this_frame, &record_btrace_tailcall_frame_unwind)
-      || frame_unwinder_is (this_frame, &record_btrace_frame_unwind))
-    throw_error (NOT_AVAILABLE_ERROR,
-		 _("cfa not available for record btrace target"));
-
-  while (get_frame_type (this_frame) == INLINE_FRAME)
-    this_frame = get_prev_frame (this_frame);
-  if (get_frame_unwind_stop_reason (this_frame) == UNWIND_UNAVAILABLE)
-    throw_error (NOT_AVAILABLE_ERROR,
-                _("can't compute CFA for this frame: "
-                  "required registers or memory are unavailable"));
-
-  if (get_frame_id (this_frame).stack_status != FID_STACK_VALID)
-    throw_error (NOT_AVAILABLE_ERROR,
-                _("can't compute CFA for this frame: "
-                  "frame base not available"));
-
-  return get_frame_base (this_frame);
-}
-
-const struct objfile_key<dwarf2_fde_table,
-			 gdb::noop_deleter<dwarf2_fde_table>>
-  dwarf2_frame_objfile_data;
-
-static unsigned int
-read_1_byte (bfd *abfd, const gdb_byte *buf)
-{
-  return bfd_get_8 (abfd, buf);
-}
-
-static unsigned int
-read_4_bytes (bfd *abfd, const gdb_byte *buf)
-{
-  return bfd_get_32 (abfd, buf);
-}
-
-static ULONGEST
-read_8_bytes (bfd *abfd, const gdb_byte *buf)
-{
-  return bfd_get_64 (abfd, buf);
-}
-
-static ULONGEST
-read_initial_length (bfd *abfd, const gdb_byte *buf,
-		     unsigned int *bytes_read_ptr)
-{
-  ULONGEST result;
-
-  result = bfd_get_32 (abfd, buf);
-  if (result == 0xffffffff)
-    {
-      result = bfd_get_64 (abfd, buf + 4);
-      *bytes_read_ptr = 12;
-    }
-  else
-    *bytes_read_ptr = 4;
-
-  return result;
-}
-
-
-/* Pointer encoding helper functions.  */
-
-/* GCC supports exception handling based on DWARF2 CFI.  However, for
-   technical reasons, it encodes addresses in its FDE's in a different
-   way.  Several "pointer encodings" are supported.  The encoding
-   that's used for a particular FDE is determined by the 'R'
-   augmentation in the associated CIE.  The argument of this
-   augmentation is a single byte.  
-
-   The address can be encoded as 2 bytes, 4 bytes, 8 bytes, or as a
-   LEB128.  This is encoded in bits 0, 1 and 2.  Bit 3 encodes whether
-   the address is signed or unsigned.  Bits 4, 5 and 6 encode how the
-   address should be interpreted (absolute, relative to the current
-   position in the FDE, ...).  Bit 7, indicates that the address
-   should be dereferenced.  */
-
-static gdb_byte
-encoding_for_size (unsigned int size)
-{
-  switch (size)
-    {
-    case 2:
-      return DW_EH_PE_udata2;
-    case 4:
-      return DW_EH_PE_udata4;
-    case 8:
-      return DW_EH_PE_udata8;
-    default:
-      internal_error (__FILE__, __LINE__, _("Unsupported address size"));
-    }
-}
-
-static CORE_ADDR
-read_encoded_value (struct comp_unit *unit, gdb_byte encoding,
-		    int ptr_len, const gdb_byte *buf,
-		    unsigned int *bytes_read_ptr,
-		    CORE_ADDR func_base)
-{
-  ptrdiff_t offset;
-  CORE_ADDR base;
-
-  /* GCC currently doesn't generate DW_EH_PE_indirect encodings for
-     FDE's.  */
-  if (encoding & DW_EH_PE_indirect)
-    internal_error (__FILE__, __LINE__, 
-		    _("Unsupported encoding: DW_EH_PE_indirect"));
-
-  *bytes_read_ptr = 0;
-
-  switch (encoding & 0x70)
-    {
-    case DW_EH_PE_absptr:
-      base = 0;
-      break;
-    case DW_EH_PE_pcrel:
-      base = bfd_section_vma (unit->dwarf_frame_section);
-      base += (buf - unit->dwarf_frame_buffer);
-      break;
-    case DW_EH_PE_datarel:
-      base = unit->dbase;
-      break;
-    case DW_EH_PE_textrel:
-      base = unit->tbase;
-      break;
-    case DW_EH_PE_funcrel:
-      base = func_base;
-      break;
-    case DW_EH_PE_aligned:
-      base = 0;
-      offset = buf - unit->dwarf_frame_buffer;
-      if ((offset % ptr_len) != 0)
-	{
-	  *bytes_read_ptr = ptr_len - (offset % ptr_len);
-	  buf += *bytes_read_ptr;
-	}
-      break;
-    default:
-      internal_error (__FILE__, __LINE__,
-		      _("Invalid or unsupported encoding"));
-    }
-
-  if ((encoding & 0x07) == 0x00)
-    {
-      encoding |= encoding_for_size (ptr_len);
-      if (bfd_get_sign_extend_vma (unit->abfd))
-	encoding |= DW_EH_PE_signed;
-    }
-
-  switch (encoding & 0x0f)
-    {
-    case DW_EH_PE_uleb128:
-      {
-	uint64_t value;
-	const gdb_byte *end_buf = buf + (sizeof (value) + 1) * 8 / 7;
-
-	*bytes_read_ptr += safe_read_uleb128 (buf, end_buf, &value) - buf;
-	return base + value;
-      }
-    case DW_EH_PE_udata2:
-      *bytes_read_ptr += 2;
-      return (base + bfd_get_16 (unit->abfd, (bfd_byte *) buf));
-    case DW_EH_PE_udata4:
-      *bytes_read_ptr += 4;
-      return (base + bfd_get_32 (unit->abfd, (bfd_byte *) buf));
-    case DW_EH_PE_udata8:
-      *bytes_read_ptr += 8;
-      return (base + bfd_get_64 (unit->abfd, (bfd_byte *) buf));
-    case DW_EH_PE_sleb128:
-      {
-	int64_t value;
-	const gdb_byte *end_buf = buf + (sizeof (value) + 1) * 8 / 7;
-
-	*bytes_read_ptr += safe_read_sleb128 (buf, end_buf, &value) - buf;
-	return base + value;
-      }
-    case DW_EH_PE_sdata2:
-      *bytes_read_ptr += 2;
-      return (base + bfd_get_signed_16 (unit->abfd, (bfd_byte *) buf));
-    case DW_EH_PE_sdata4:
-      *bytes_read_ptr += 4;
-      return (base + bfd_get_signed_32 (unit->abfd, (bfd_byte *) buf));
-    case DW_EH_PE_sdata8:
-      *bytes_read_ptr += 8;
-      return (base + bfd_get_signed_64 (unit->abfd, (bfd_byte *) buf));
-    default:
-      internal_error (__FILE__, __LINE__,
-		      _("Invalid or unsupported encoding"));
-    }
-}
-
-
-/* Find CIE with the given CIE_POINTER in CIE_TABLE.  */
-static struct dwarf2_cie *
-find_cie (const dwarf2_cie_table &cie_table, ULONGEST cie_pointer)
-{
-  auto iter = cie_table.find (cie_pointer);
-  if (iter != cie_table.end ())
-    return iter->second;
-  return NULL;
-}
-
-static inline int
-bsearch_fde_cmp (const dwarf2_fde *fde, CORE_ADDR seek_pc)
-{
-  if (fde->initial_location + fde->address_range <= seek_pc)
-    return -1;
-  if (fde->initial_location <= seek_pc)
-    return 0;
-  return 1;
-}
-
-/* Find the FDE for *PC.  Return a pointer to the FDE, and store the
-   initial location associated with it into *PC.  */
-
-static struct dwarf2_fde *
-dwarf2_frame_find_fde (CORE_ADDR *pc, CORE_ADDR *out_offset)
-{
-  for (objfile *objfile : current_program_space->objfiles ())
-    {
-      struct dwarf2_fde_table *fde_table;
-      CORE_ADDR offset;
-      CORE_ADDR seek_pc;
-
-      fde_table = dwarf2_frame_objfile_data.get (objfile);
-      if (fde_table == NULL)
-	{
-	  dwarf2_build_frame_info (objfile);
-	  fde_table = dwarf2_frame_objfile_data.get (objfile);
-	}
-      gdb_assert (fde_table != NULL);
-
-      if (fde_table->num_entries == 0)
-	continue;
-
-      gdb_assert (objfile->section_offsets);
-      offset = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-      gdb_assert (fde_table->num_entries > 0);
-      if (*pc < offset + fde_table->entries[0]->initial_location)
-        continue;
-
-      seek_pc = *pc - offset;
-      auto end = fde_table->entries + fde_table->num_entries;
-      auto it = gdb::binary_search (fde_table->entries, end, seek_pc, bsearch_fde_cmp);
-      if (it != end)
-        {
-          *pc = (*it)->initial_location + offset;
-	  if (out_offset)
-	    *out_offset = offset;
-          return *it;
-        }
-    }
-  return NULL;
-}
-
-/* Add a pointer to new FDE to the FDE_TABLE, allocating space for it.  */
-static void
-add_fde (struct dwarf2_fde_table *fde_table, struct dwarf2_fde *fde)
-{
-  if (fde->address_range == 0)
-    /* Discard useless FDEs.  */
-    return;
-
-  fde_table->num_entries += 1;
-  fde_table->entries = XRESIZEVEC (struct dwarf2_fde *, fde_table->entries,
-				   fde_table->num_entries);
-  fde_table->entries[fde_table->num_entries - 1] = fde;
-}
-
-#define DW64_CIE_ID 0xffffffffffffffffULL
-
-/* Defines the type of eh_frames that are expected to be decoded: CIE, FDE
-   or any of them.  */
-
-enum eh_frame_type
-{
-  EH_CIE_TYPE_ID = 1 << 0,
-  EH_FDE_TYPE_ID = 1 << 1,
-  EH_CIE_OR_FDE_TYPE_ID = EH_CIE_TYPE_ID | EH_FDE_TYPE_ID
-};
-
-static const gdb_byte *decode_frame_entry (struct comp_unit *unit,
-					   const gdb_byte *start,
-					   int eh_frame_p,
-					   dwarf2_cie_table &cie_table,
-					   struct dwarf2_fde_table *fde_table,
-					   enum eh_frame_type entry_type);
-
-/* Decode the next CIE or FDE, entry_type specifies the expected type.
-   Return NULL if invalid input, otherwise the next byte to be processed.  */
-
-static const gdb_byte *
-decode_frame_entry_1 (struct comp_unit *unit, const gdb_byte *start,
-		      int eh_frame_p,
-                      dwarf2_cie_table &cie_table,
-                      struct dwarf2_fde_table *fde_table,
-                      enum eh_frame_type entry_type)
-{
-  struct gdbarch *gdbarch = get_objfile_arch (unit->objfile);
-  const gdb_byte *buf, *end;
-  ULONGEST length;
-  unsigned int bytes_read;
-  int dwarf64_p;
-  ULONGEST cie_id;
-  ULONGEST cie_pointer;
-  int64_t sleb128;
-  uint64_t uleb128;
-
-  buf = start;
-  length = read_initial_length (unit->abfd, buf, &bytes_read);
-  buf += bytes_read;
-  end = buf + (size_t) length;
-
-  if (length == 0)
-    return end;
-
-  /* Are we still within the section?  */
-  if (end <= buf || end > unit->dwarf_frame_buffer + unit->dwarf_frame_size)
-    return NULL;
-
-  /* Distinguish between 32 and 64-bit encoded frame info.  */
-  dwarf64_p = (bytes_read == 12);
-
-  /* In a .eh_frame section, zero is used to distinguish CIEs from FDEs.  */
-  if (eh_frame_p)
-    cie_id = 0;
-  else if (dwarf64_p)
-    cie_id = DW64_CIE_ID;
-  else
-    cie_id = DW_CIE_ID;
-
-  if (dwarf64_p)
-    {
-      cie_pointer = read_8_bytes (unit->abfd, buf);
-      buf += 8;
-    }
-  else
-    {
-      cie_pointer = read_4_bytes (unit->abfd, buf);
-      buf += 4;
-    }
-
-  if (cie_pointer == cie_id)
-    {
-      /* This is a CIE.  */
-      struct dwarf2_cie *cie;
-      char *augmentation;
-      unsigned int cie_version;
-
-      /* Check that a CIE was expected.  */
-      if ((entry_type & EH_CIE_TYPE_ID) == 0)
-	error (_("Found a CIE when not expecting it."));
-
-      /* Record the offset into the .debug_frame section of this CIE.  */
-      cie_pointer = start - unit->dwarf_frame_buffer;
-
-      /* Check whether we've already read it.  */
-      if (find_cie (cie_table, cie_pointer))
-	return end;
-
-      cie = XOBNEW (&unit->objfile->objfile_obstack, struct dwarf2_cie);
-      cie->initial_instructions = NULL;
-      cie->cie_pointer = cie_pointer;
-
-      /* The encoding for FDE's in a normal .debug_frame section
-         depends on the target address size.  */
-      cie->encoding = DW_EH_PE_absptr;
-
-      /* We'll determine the final value later, but we need to
-	 initialize it conservatively.  */
-      cie->signal_frame = 0;
-
-      /* Check version number.  */
-      cie_version = read_1_byte (unit->abfd, buf);
-      if (cie_version != 1 && cie_version != 3 && cie_version != 4)
-	return NULL;
-      cie->version = cie_version;
-      buf += 1;
-
-      /* Interpret the interesting bits of the augmentation.  */
-      cie->augmentation = augmentation = (char *) buf;
-      buf += (strlen (augmentation) + 1);
-
-      /* Ignore armcc augmentations.  We only use them for quirks,
-	 and that doesn't happen until later.  */
-      if (startswith (augmentation, "armcc"))
-	augmentation += strlen (augmentation);
-
-      /* The GCC 2.x "eh" augmentation has a pointer immediately
-         following the augmentation string, so it must be handled
-         first.  */
-      if (augmentation[0] == 'e' && augmentation[1] == 'h')
-	{
-	  /* Skip.  */
-	  buf += gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
-	  augmentation += 2;
-	}
-
-      if (cie->version >= 4)
-	{
-	  /* FIXME: check that this is the same as from the CU header.  */
-	  cie->addr_size = read_1_byte (unit->abfd, buf);
-	  ++buf;
-	  cie->segment_size = read_1_byte (unit->abfd, buf);
-	  ++buf;
-	}
-      else
-	{
-	  cie->addr_size = gdbarch_dwarf2_addr_size (gdbarch);
-	  cie->segment_size = 0;
-	}
-      /* Address values in .eh_frame sections are defined to have the
-	 target's pointer size.  Watchout: This breaks frame info for
-	 targets with pointer size < address size, unless a .debug_frame
-	 section exists as well.  */
-      if (eh_frame_p)
-	cie->ptr_size = gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
-      else
-	cie->ptr_size = cie->addr_size;
-
-      buf = gdb_read_uleb128 (buf, end, &uleb128);
-      if (buf == NULL)
-	return NULL;
-      cie->code_alignment_factor = uleb128;
-
-      buf = gdb_read_sleb128 (buf, end, &sleb128);
-      if (buf == NULL)
-	return NULL;
-      cie->data_alignment_factor = sleb128;
-
-      if (cie_version == 1)
-	{
-	  cie->return_address_register = read_1_byte (unit->abfd, buf);
-	  ++buf;
-	}
-      else
-	{
-	  buf = gdb_read_uleb128 (buf, end, &uleb128);
-	  if (buf == NULL)
-	    return NULL;
-	  cie->return_address_register = uleb128;
-	}
-
-      cie->return_address_register
-	= dwarf2_frame_adjust_regnum (gdbarch,
-				      cie->return_address_register,
-				      eh_frame_p);
-
-      cie->saw_z_augmentation = (*augmentation == 'z');
-      if (cie->saw_z_augmentation)
-	{
-	  uint64_t uleb_length;
-
-	  buf = gdb_read_uleb128 (buf, end, &uleb_length);
-	  if (buf == NULL)
-	    return NULL;
-	  cie->initial_instructions = buf + uleb_length;
-	  augmentation++;
-	}
-
-      while (*augmentation)
-	{
-	  /* "L" indicates a byte showing how the LSDA pointer is encoded.  */
-	  if (*augmentation == 'L')
-	    {
-	      /* Skip.  */
-	      buf++;
-	      augmentation++;
-	    }
-
-	  /* "R" indicates a byte indicating how FDE addresses are encoded.  */
-	  else if (*augmentation == 'R')
-	    {
-	      cie->encoding = *buf++;
-	      augmentation++;
-	    }
-
-	  /* "P" indicates a personality routine in the CIE augmentation.  */
-	  else if (*augmentation == 'P')
-	    {
-	      /* Skip.  Avoid indirection since we throw away the result.  */
-	      gdb_byte encoding = (*buf++) & ~DW_EH_PE_indirect;
-	      read_encoded_value (unit, encoding, cie->ptr_size,
-				  buf, &bytes_read, 0);
-	      buf += bytes_read;
-	      augmentation++;
-	    }
-
-	  /* "S" indicates a signal frame, such that the return
-	     address must not be decremented to locate the call frame
-	     info for the previous frame; it might even be the first
-	     instruction of a function, so decrementing it would take
-	     us to a different function.  */
-	  else if (*augmentation == 'S')
-	    {
-	      cie->signal_frame = 1;
-	      augmentation++;
-	    }
-
-	  /* Otherwise we have an unknown augmentation.  Assume that either
-	     there is no augmentation data, or we saw a 'z' prefix.  */
-	  else
-	    {
-	      if (cie->initial_instructions)
-		buf = cie->initial_instructions;
-	      break;
-	    }
-	}
-
-      cie->initial_instructions = buf;
-      cie->end = end;
-      cie->unit = unit;
-
-      cie_table[cie->cie_pointer] = cie;
-    }
-  else
-    {
-      /* This is a FDE.  */
-      struct dwarf2_fde *fde;
-      CORE_ADDR addr;
-
-      /* Check that an FDE was expected.  */
-      if ((entry_type & EH_FDE_TYPE_ID) == 0)
-	error (_("Found an FDE when not expecting it."));
-
-      /* In an .eh_frame section, the CIE pointer is the delta between the
-	 address within the FDE where the CIE pointer is stored and the
-	 address of the CIE.  Convert it to an offset into the .eh_frame
-	 section.  */
-      if (eh_frame_p)
-	{
-	  cie_pointer = buf - unit->dwarf_frame_buffer - cie_pointer;
-	  cie_pointer -= (dwarf64_p ? 8 : 4);
-	}
-
-      /* In either case, validate the result is still within the section.  */
-      if (cie_pointer >= unit->dwarf_frame_size)
-	return NULL;
-
-      fde = XOBNEW (&unit->objfile->objfile_obstack, struct dwarf2_fde);
-      fde->cie = find_cie (cie_table, cie_pointer);
-      if (fde->cie == NULL)
-	{
-	  decode_frame_entry (unit, unit->dwarf_frame_buffer + cie_pointer,
-			      eh_frame_p, cie_table, fde_table,
-			      EH_CIE_TYPE_ID);
-	  fde->cie = find_cie (cie_table, cie_pointer);
-	}
-
-      gdb_assert (fde->cie != NULL);
-
-      addr = read_encoded_value (unit, fde->cie->encoding, fde->cie->ptr_size,
-				 buf, &bytes_read, 0);
-      fde->initial_location = gdbarch_adjust_dwarf2_addr (gdbarch, addr);
-      buf += bytes_read;
-
-      fde->address_range =
-	read_encoded_value (unit, fde->cie->encoding & 0x0f,
-			    fde->cie->ptr_size, buf, &bytes_read, 0);
-      addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + fde->address_range);
-      fde->address_range = addr - fde->initial_location;
-      buf += bytes_read;
-
-      /* A 'z' augmentation in the CIE implies the presence of an
-	 augmentation field in the FDE as well.  The only thing known
-	 to be in here at present is the LSDA entry for EH.  So we
-	 can skip the whole thing.  */
-      if (fde->cie->saw_z_augmentation)
-	{
-	  uint64_t uleb_length;
-
-	  buf = gdb_read_uleb128 (buf, end, &uleb_length);
-	  if (buf == NULL)
-	    return NULL;
-	  buf += uleb_length;
-	  if (buf > end)
-	    return NULL;
-	}
-
-      fde->instructions = buf;
-      fde->end = end;
-
-      fde->eh_frame_p = eh_frame_p;
-
-      add_fde (fde_table, fde);
-    }
-
-  return end;
-}
-
-/* Read a CIE or FDE in BUF and decode it. Entry_type specifies whether we
-   expect an FDE or a CIE.  */
-
-static const gdb_byte *
-decode_frame_entry (struct comp_unit *unit, const gdb_byte *start,
-		    int eh_frame_p,
-		    dwarf2_cie_table &cie_table,
-                    struct dwarf2_fde_table *fde_table,
-                    enum eh_frame_type entry_type)
-{
-  enum { NONE, ALIGN4, ALIGN8, FAIL } workaround = NONE;
-  const gdb_byte *ret;
-  ptrdiff_t start_offset;
-
-  while (1)
-    {
-      ret = decode_frame_entry_1 (unit, start, eh_frame_p,
-				  cie_table, fde_table, entry_type);
-      if (ret != NULL)
-	break;
-
-      /* We have corrupt input data of some form.  */
-
-      /* ??? Try, weakly, to work around compiler/assembler/linker bugs
-	 and mismatches wrt padding and alignment of debug sections.  */
-      /* Note that there is no requirement in the standard for any
-	 alignment at all in the frame unwind sections.  Testing for
-	 alignment before trying to interpret data would be incorrect.
-
-	 However, GCC traditionally arranged for frame sections to be
-	 sized such that the FDE length and CIE fields happen to be
-	 aligned (in theory, for performance).  This, unfortunately,
-	 was done with .align directives, which had the side effect of
-	 forcing the section to be aligned by the linker.
-
-	 This becomes a problem when you have some other producer that
-	 creates frame sections that are not as strictly aligned.  That
-	 produces a hole in the frame info that gets filled by the 
-	 linker with zeros.
-
-	 The GCC behaviour is arguably a bug, but it's effectively now
-	 part of the ABI, so we're now stuck with it, at least at the
-	 object file level.  A smart linker may decide, in the process
-	 of compressing duplicate CIE information, that it can rewrite
-	 the entire output section without this extra padding.  */
-
-      start_offset = start - unit->dwarf_frame_buffer;
-      if (workaround < ALIGN4 && (start_offset & 3) != 0)
-	{
-	  start += 4 - (start_offset & 3);
-	  workaround = ALIGN4;
-	  continue;
-	}
-      if (workaround < ALIGN8 && (start_offset & 7) != 0)
-	{
-	  start += 8 - (start_offset & 7);
-	  workaround = ALIGN8;
-	  continue;
-	}
-
-      /* Nothing left to try.  Arrange to return as if we've consumed
-	 the entire input section.  Hopefully we'll get valid info from
-	 the other of .debug_frame/.eh_frame.  */
-      workaround = FAIL;
-      ret = unit->dwarf_frame_buffer + unit->dwarf_frame_size;
-      break;
-    }
-
-  switch (workaround)
-    {
-    case NONE:
-      break;
-
-    case ALIGN4:
-      complaint (_("\
-Corrupt data in %s:%s; align 4 workaround apparently succeeded"),
-		 unit->dwarf_frame_section->owner->filename,
-		 unit->dwarf_frame_section->name);
-      break;
-
-    case ALIGN8:
-      complaint (_("\
-Corrupt data in %s:%s; align 8 workaround apparently succeeded"),
-		 unit->dwarf_frame_section->owner->filename,
-		 unit->dwarf_frame_section->name);
-      break;
-
-    default:
-      complaint (_("Corrupt data in %s:%s"),
-		 unit->dwarf_frame_section->owner->filename,
-		 unit->dwarf_frame_section->name);
-      break;
-    }
-
-  return ret;
-}
-
-static bool
-fde_is_less_than (const dwarf2_fde *aa, const dwarf2_fde *bb)
-{
-  if (aa->initial_location == bb->initial_location)
-    {
-      if (aa->address_range != bb->address_range
-          && aa->eh_frame_p == 0 && bb->eh_frame_p == 0)
-        /* Linker bug, e.g. gold/10400.
-           Work around it by keeping stable sort order.  */
-        return aa < bb;
-      else
-        /* Put eh_frame entries after debug_frame ones.  */
-        return aa->eh_frame_p < bb->eh_frame_p;
-    }
-
-  return aa->initial_location < bb->initial_location;
-}
-
-void
-dwarf2_build_frame_info (struct objfile *objfile)
-{
-  struct comp_unit *unit;
-  const gdb_byte *frame_ptr;
-  dwarf2_cie_table cie_table;
-  struct dwarf2_fde_table fde_table;
-  struct dwarf2_fde_table *fde_table2;
-
-  fde_table.num_entries = 0;
-  fde_table.entries = NULL;
-
-  /* Build a minimal decoding of the DWARF2 compilation unit.  */
-  unit = XOBNEW (&objfile->objfile_obstack, comp_unit);
-  unit->abfd = objfile->obfd;
-  unit->objfile = objfile;
-  unit->dbase = 0;
-  unit->tbase = 0;
-
-  if (objfile->separate_debug_objfile_backlink == NULL)
-    {
-      /* Do not read .eh_frame from separate file as they must be also
-         present in the main file.  */
-      dwarf2_get_section_info (objfile, DWARF2_EH_FRAME,
-                               &unit->dwarf_frame_section,
-                               &unit->dwarf_frame_buffer,
-                               &unit->dwarf_frame_size);
-      if (unit->dwarf_frame_size)
-        {
-          asection *got, *txt;
-
-          /* FIXME: kettenis/20030602: This is the DW_EH_PE_datarel base
-             that is used for the i386/amd64 target, which currently is
-             the only target in GCC that supports/uses the
-             DW_EH_PE_datarel encoding.  */
-          got = bfd_get_section_by_name (unit->abfd, ".got");
-          if (got)
-            unit->dbase = got->vma;
-
-          /* GCC emits the DW_EH_PE_textrel encoding type on sh and ia64
-             so far.  */
-          txt = bfd_get_section_by_name (unit->abfd, ".text");
-          if (txt)
-            unit->tbase = txt->vma;
-
-	  try
-	    {
-	      frame_ptr = unit->dwarf_frame_buffer;
-	      while (frame_ptr < unit->dwarf_frame_buffer + unit->dwarf_frame_size)
-		frame_ptr = decode_frame_entry (unit, frame_ptr, 1,
-						cie_table, &fde_table,
-						EH_CIE_OR_FDE_TYPE_ID);
-	    }
-
-	  catch (const gdb_exception_error &e)
-	    {
-	      warning (_("skipping .eh_frame info of %s: %s"),
-		       objfile_name (objfile), e.what ());
-
-	      if (fde_table.num_entries != 0)
-		{
-                  xfree (fde_table.entries);
-		  fde_table.entries = NULL;
-		  fde_table.num_entries = 0;
-		}
-	      /* The cie_table is discarded below.  */
-	    }
-
-	  cie_table.clear ();
-        }
-    }
-
-  dwarf2_get_section_info (objfile, DWARF2_DEBUG_FRAME,
-                           &unit->dwarf_frame_section,
-                           &unit->dwarf_frame_buffer,
-                           &unit->dwarf_frame_size);
-  if (unit->dwarf_frame_size)
-    {
-      int num_old_fde_entries = fde_table.num_entries;
-
-      try
-	{
-	  frame_ptr = unit->dwarf_frame_buffer;
-	  while (frame_ptr < unit->dwarf_frame_buffer + unit->dwarf_frame_size)
-	    frame_ptr = decode_frame_entry (unit, frame_ptr, 0,
-					    cie_table, &fde_table,
-					    EH_CIE_OR_FDE_TYPE_ID);
-	}
-      catch (const gdb_exception_error &e)
-	{
-	  warning (_("skipping .debug_frame info of %s: %s"),
-		   objfile_name (objfile), e.what ());
-
-	  if (fde_table.num_entries != 0)
-	    {
-	      fde_table.num_entries = num_old_fde_entries;
-	      if (num_old_fde_entries == 0)
-		{
-		  xfree (fde_table.entries);
-		  fde_table.entries = NULL;
-		}
-	      else
-		{
-		  fde_table.entries
-		    = XRESIZEVEC (struct dwarf2_fde *, fde_table.entries,
-				  fde_table.num_entries);
-		}
-	    }
-	  fde_table.num_entries = num_old_fde_entries;
-	}
-    }
-
-  /* Copy fde_table to obstack: it is needed at runtime.  */
-  fde_table2 = XOBNEW (&objfile->objfile_obstack, struct dwarf2_fde_table);
-
-  if (fde_table.num_entries == 0)
-    {
-      fde_table2->entries = NULL;
-      fde_table2->num_entries = 0;
-    }
-  else
-    {
-      struct dwarf2_fde *fde_prev = NULL;
-      struct dwarf2_fde *first_non_zero_fde = NULL;
-      int i;
-
-      /* Prepare FDE table for lookups.  */
-      std::sort (fde_table.entries, fde_table.entries + fde_table.num_entries,
-		 fde_is_less_than);
-
-      /* Check for leftovers from --gc-sections.  The GNU linker sets
-	 the relevant symbols to zero, but doesn't zero the FDE *end*
-	 ranges because there's no relocation there.  It's (offset,
-	 length), not (start, end).  On targets where address zero is
-	 just another valid address this can be a problem, since the
-	 FDEs appear to be non-empty in the output --- we could pick
-	 out the wrong FDE.  To work around this, when overlaps are
-	 detected, we prefer FDEs that do not start at zero.
-
-	 Start by finding the first FDE with non-zero start.  Below
-	 we'll discard all FDEs that start at zero and overlap this
-	 one.  */
-      for (i = 0; i < fde_table.num_entries; i++)
-	{
-	  struct dwarf2_fde *fde = fde_table.entries[i];
-
-	  if (fde->initial_location != 0)
-	    {
-	      first_non_zero_fde = fde;
-	      break;
-	    }
-	}
-
-      /* Since we'll be doing bsearch, squeeze out identical (except
-	 for eh_frame_p) fde entries so bsearch result is predictable.
-	 Also discard leftovers from --gc-sections.  */
-      fde_table2->num_entries = 0;
-      for (i = 0; i < fde_table.num_entries; i++)
-	{
-	  struct dwarf2_fde *fde = fde_table.entries[i];
-
-	  if (fde->initial_location == 0
-	      && first_non_zero_fde != NULL
-	      && (first_non_zero_fde->initial_location
-		  < fde->initial_location + fde->address_range))
-	    continue;
-
-	  if (fde_prev != NULL
-	      && fde_prev->initial_location == fde->initial_location)
-	    continue;
-
-	  obstack_grow (&objfile->objfile_obstack, &fde_table.entries[i],
-			sizeof (fde_table.entries[0]));
-	  ++fde_table2->num_entries;
-	  fde_prev = fde;
-	}
-      fde_table2->entries
-	= (struct dwarf2_fde **) obstack_finish (&objfile->objfile_obstack);
-
-      /* Discard the original fde_table.  */
-      xfree (fde_table.entries);
-    }
-
-  dwarf2_frame_objfile_data.set (objfile, fde_table2);
-}
-
-/* Handle 'maintenance show dwarf unwinders'.  */
-
-static void
-show_dwarf_unwinders_enabled_p (struct ui_file *file, int from_tty,
-				struct cmd_list_element *c,
-				const char *value)
-{
-  fprintf_filtered (file,
-		    _("The DWARF stack unwinders are currently %s.\n"),
-		    value);
-}
-
-void
-_initialize_dwarf2_frame (void)
-{
-  dwarf2_frame_data = gdbarch_data_register_pre_init (dwarf2_frame_init);
-
-  add_setshow_boolean_cmd ("unwinders", class_obscure,
-			   &dwarf2_frame_unwinders_enabled_p , _("\
-Set whether the DWARF stack frame unwinders are used."), _("\
-Show whether the DWARF stack frame unwinders are used."), _("\
-When enabled the DWARF stack frame unwinders can be used for architectures\n\
-that support the DWARF unwinders.  Enabling the DWARF unwinders for an\n\
-architecture that doesn't support them will have no effect."),
-			   NULL,
-			   show_dwarf_unwinders_enabled_p,
-			   &set_dwarf_cmdlist,
-			   &show_dwarf_cmdlist);
-
-#if GDB_SELF_TEST
-  selftests::register_test_foreach_arch ("execute_cfa_program",
-					 selftests::execute_cfa_program_test);
-#endif
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2-frame.h ./gdb/dwarf2-frame.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2-frame.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf2-frame.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,266 +0,0 @@
-/* Frame unwinder for frames with DWARF Call Frame Information.
-
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
-
-   Contributed by Mark Kettenis.
-
-   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 DWARF2_FRAME_H
-#define DWARF2_FRAME_H 1
-
-struct gdbarch;
-struct objfile;
-struct frame_info;
-struct dwarf2_per_cu_data;
-struct agent_expr;
-struct axs_value;
-
-/* Register rule.  */
-
-enum dwarf2_frame_reg_rule
-{
-  /* Make certain that 0 maps onto the correct enum value; the
-     corresponding structure is being initialized using memset zero.
-     This indicates that CFI didn't provide any information at all
-     about a register, leaving how to obtain its value totally
-     unspecified.  */
-  DWARF2_FRAME_REG_UNSPECIFIED = 0,
-
-  /* The term "undefined" comes from the DWARF2 CFI spec which this
-     code is modeling; it indicates that the register's value is
-     "undefined".  GCC uses the less formal term "unsaved".  Its
-     definition is a combination of REG_UNDEFINED and REG_UNSPECIFIED.
-     The failure to differentiate the two helps explain a few problems
-     with the CFI generated by GCC.  */
-  DWARF2_FRAME_REG_UNDEFINED,
-  DWARF2_FRAME_REG_SAVED_OFFSET,
-  DWARF2_FRAME_REG_SAVED_REG,
-  DWARF2_FRAME_REG_SAVED_EXP,
-  DWARF2_FRAME_REG_SAME_VALUE,
-
-  /* These are defined in Dwarf3.  */
-  DWARF2_FRAME_REG_SAVED_VAL_OFFSET,
-  DWARF2_FRAME_REG_SAVED_VAL_EXP,
-
-  /* These aren't defined by the DWARF2 CFI specification, but are
-     used internally by GDB.  */
-  DWARF2_FRAME_REG_FN,		/* Call a registered function.  */
-  DWARF2_FRAME_REG_RA,		/* Return Address.  */
-  DWARF2_FRAME_REG_RA_OFFSET,	/* Return Address with offset.  */
-  DWARF2_FRAME_REG_CFA,		/* Call Frame Address.  */
-  DWARF2_FRAME_REG_CFA_OFFSET	/* Call Frame Address with offset.  */
-};
-
-/* Register state.  */
-
-struct dwarf2_frame_state_reg
-{
-  /* Each register save state can be described in terms of a CFA slot,
-     another register, or a location expression.  */
-  union {
-    LONGEST offset;
-    ULONGEST reg;
-    struct
-    {
-      const gdb_byte *start;
-      ULONGEST len;
-    } exp;
-    struct value *(*fn) (struct frame_info *this_frame, void **this_cache,
-			 int regnum);
-  } loc;
-  enum dwarf2_frame_reg_rule how;
-};
-
-enum cfa_how_kind
-{
-  CFA_UNSET,
-  CFA_REG_OFFSET,
-  CFA_EXP
-};
-
-struct dwarf2_frame_state_reg_info
-{
-  dwarf2_frame_state_reg_info () = default;
-  ~dwarf2_frame_state_reg_info ()
-  {
-    delete prev;
-  }
-
-  /* Copy constructor.  */
-  dwarf2_frame_state_reg_info (const dwarf2_frame_state_reg_info &src)
-    : reg (src.reg), cfa_offset (src.cfa_offset),
-      cfa_reg (src.cfa_reg), cfa_how (src.cfa_how), cfa_exp (src.cfa_exp),
-      prev (src.prev)
-  {
-  }
-
-  /* Assignment operator for both move-assignment and copy-assignment.  */
-  dwarf2_frame_state_reg_info&
-  operator= (dwarf2_frame_state_reg_info rhs)
-  {
-    swap (*this, rhs);
-    return *this;
-  }
-
-  /* Move constructor.  */
-  dwarf2_frame_state_reg_info (dwarf2_frame_state_reg_info &&rhs) noexcept
-    : reg (std::move (rhs.reg)), cfa_offset (rhs.cfa_offset),
-      cfa_reg (rhs.cfa_reg), cfa_how (rhs.cfa_how), cfa_exp (rhs.cfa_exp),
-      prev (rhs.prev)
-  {
-    rhs.prev = nullptr;
-  }
-
-  /* If necessary, enlarge the register set to hold NUM_REGS_REQUESTED
-     registers.  */
-  void alloc_regs (int num_regs_requested)
-  {
-    gdb_assert (num_regs_requested > 0);
-
-    if (num_regs_requested <= reg.size ())
-      return;
-
-    reg.resize (num_regs_requested);
-  }
-
-  std::vector<struct dwarf2_frame_state_reg> reg;
-
-  LONGEST cfa_offset = 0;
-  ULONGEST cfa_reg = 0;
-  enum cfa_how_kind cfa_how = CFA_UNSET;
-  const gdb_byte *cfa_exp = NULL;
-
-  /* Used to implement DW_CFA_remember_state.  */
-  struct dwarf2_frame_state_reg_info *prev = NULL;
-
-private:
-  friend void swap (dwarf2_frame_state_reg_info& lhs,
-		    dwarf2_frame_state_reg_info& rhs)
-  {
-    using std::swap;
-
-    swap (lhs.reg, rhs.reg);
-    swap (lhs.cfa_offset, rhs.cfa_offset);
-    swap (lhs.cfa_reg, rhs.cfa_reg);
-    swap (lhs.cfa_how, rhs.cfa_how);
-    swap (lhs.cfa_exp, rhs.cfa_exp);
-    swap (lhs.prev, rhs.prev);
-  }
-};
-
-struct dwarf2_cie;
-
-/* Structure describing a frame state.  */
-
-struct dwarf2_frame_state
-{
-  dwarf2_frame_state (CORE_ADDR pc, struct dwarf2_cie *cie);
-
-  /* Each register save state can be described in terms of a CFA slot,
-     another register, or a location expression.  */
-  struct dwarf2_frame_state_reg_info regs {};
-
-  /* The PC described by the current frame state.  */
-  CORE_ADDR pc;
-
-  /* Initial register set from the CIE.
-     Used to implement DW_CFA_restore.  */
-  struct dwarf2_frame_state_reg_info initial {};
-
-  /* The information we care about from the CIE.  */
-  const LONGEST data_align;
-  const ULONGEST code_align;
-  const ULONGEST retaddr_column;
-
-  /* Flags for known producer quirks.  */
-
-  /* The ARM compilers, in DWARF2 mode, assume that DW_CFA_def_cfa
-     and DW_CFA_def_cfa_offset takes a factored offset.  */
-  bool armcc_cfa_offsets_sf = false;
-
-  /* The ARM compilers, in DWARF2 or DWARF3 mode, may assume that
-     the CFA is defined as REG - OFFSET rather than REG + OFFSET.  */
-  bool armcc_cfa_offsets_reversed = false;
-};
-
-/* When this is true the DWARF frame unwinders can be used if they are
-   registered with the gdbarch.  Not all architectures can or do use the
-   DWARF unwinders.  Setting this to true on a target that does not
-   otherwise support the DWARF unwinders has no effect.  */
-extern bool dwarf2_frame_unwinders_enabled_p;
-
-/* Set the architecture-specific register state initialization
-   function for GDBARCH to INIT_REG.  */
-
-extern void dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
-				       void (*init_reg) (struct gdbarch *, int,
-					     struct dwarf2_frame_state_reg *,
-					     struct frame_info *));
-
-/* Set the architecture-specific signal trampoline recognition
-   function for GDBARCH to SIGNAL_FRAME_P.  */
-
-extern void
-  dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch,
-				   int (*signal_frame_p) (struct gdbarch *,
-							  struct frame_info *));
-
-/* Set the architecture-specific adjustment of .eh_frame and .debug_frame
-   register numbers.  */
-
-extern void
-  dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch,
-				  int (*adjust_regnum) (struct gdbarch *,
-							int, int));
-
-/* Append the DWARF-2 frame unwinders to GDBARCH's list.  */
-
-void dwarf2_append_unwinders (struct gdbarch *gdbarch);
-
-/* Return the frame base methods for the function that contains PC, or
-   NULL if it can't be handled by the DWARF CFI frame unwinder.  */
-
-extern const struct frame_base *
-  dwarf2_frame_base_sniffer (struct frame_info *this_frame);
-
-/* Compute the DWARF CFA for a frame.  */
-
-CORE_ADDR dwarf2_frame_cfa (struct frame_info *this_frame);
-
-/* Find the CFA information for PC.
-
-   Return 1 if a register is used for the CFA, or 0 if another
-   expression is used.  Throw an exception on error.
-
-   GDBARCH is the architecture to use.
-   DATA is the per-CU data.
-
-   REGNUM_OUT is an out parameter that is set to the register number.
-   OFFSET_OUT is the offset to use from this register.
-   These are only filled in when 1 is returned.
-
-   TEXT_OFFSET_OUT, CFA_START_OUT, and CFA_END_OUT describe the CFA
-   in other cases.  These are only used when 0 is returned.  */
-
-extern int dwarf2_fetch_cfa_info (struct gdbarch *gdbarch, CORE_ADDR pc,
-				  struct dwarf2_per_cu_data *data,
-				  int *regnum_out, LONGEST *offset_out,
-				  CORE_ADDR *text_offset_out,
-				  const gdb_byte **cfa_start_out,
-				  const gdb_byte **cfa_end_out);
-
-#endif /* dwarf2-frame.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2-frame-tailcall.c ./gdb/dwarf2-frame-tailcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2-frame-tailcall.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf2-frame-tailcall.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,475 +0,0 @@
-/* Virtual tail call frames unwinder for GDB.
-
-   Copyright (C) 2010-2020 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 "frame.h"
-#include "dwarf2-frame-tailcall.h"
-#include "dwarf2loc.h"
-#include "frame-unwind.h"
-#include "block.h"
-#include "hashtab.h"
-#include "gdbtypes.h"
-#include "regcache.h"
-#include "value.h"
-#include "dwarf2-frame.h"
-#include "gdbarch.h"
-
-/* Contains struct tailcall_cache indexed by next_bottom_frame.  */
-static htab_t cache_htab;
-
-/* Associate structure of the unwinder to call_site_chain.  Lifetime of this
-   structure is maintained by REFC decremented by dealloc_cache, all of them
-   get deleted during reinit_frame_cache.  */
-struct tailcall_cache
-{
-  /* It must be the first one of this struct.  It is the furthest callee.  */
-  struct frame_info *next_bottom_frame;
-
-  /* Reference count.  The whole chain of virtual tail call frames shares one
-     tailcall_cache.  */
-  int refc;
-
-  /* Associated found virtual tail call frames chain, it is never NULL.  */
-  struct call_site_chain *chain;
-
-  /* Cached pretended_chain_levels result.  */
-  int chain_levels;
-
-  /* Unwound PC from the top (caller) frame, as it is not contained
-     in CHAIN.  */
-  CORE_ADDR prev_pc;
-
-  /* Compensate SP in caller frames appropriately.  prev_sp and
-     entry_cfa_sp_offset are valid only if PREV_SP_P.  PREV_SP is SP at the top
-     (caller) frame.  ENTRY_CFA_SP_OFFSET is shift of SP in tail call frames
-     against next_bottom_frame SP.  */
-  unsigned prev_sp_p : 1;
-  CORE_ADDR prev_sp;
-  LONGEST entry_cfa_sp_offset;
-};
-
-/* hash_f for htab_create_alloc of cache_htab.  */
-
-static hashval_t
-cache_hash (const void *arg)
-{
-  const struct tailcall_cache *cache = (const struct tailcall_cache *) arg;
-
-  return htab_hash_pointer (cache->next_bottom_frame);
-}
-
-/* eq_f for htab_create_alloc of cache_htab.  */
-
-static int
-cache_eq (const void *arg1, const void *arg2)
-{
-  const struct tailcall_cache *cache1 = (const struct tailcall_cache *) arg1;
-  const struct tailcall_cache *cache2 = (const struct tailcall_cache *) arg2;
-
-  return cache1->next_bottom_frame == cache2->next_bottom_frame;
-}
-
-/* Create new tailcall_cache for NEXT_BOTTOM_FRAME, NEXT_BOTTOM_FRAME must not
-   yet have been indexed by cache_htab.  Caller holds one reference of the new
-   tailcall_cache.  */
-
-static struct tailcall_cache *
-cache_new_ref1 (struct frame_info *next_bottom_frame)
-{
-  struct tailcall_cache *cache = XCNEW (struct tailcall_cache);
-  void **slot;
-
-  cache->next_bottom_frame = next_bottom_frame;
-  cache->refc = 1;
-
-  slot = htab_find_slot (cache_htab, cache, INSERT);
-  gdb_assert (*slot == NULL);
-  *slot = cache;
-
-  return cache;
-}
-
-/* Create new reference to CACHE.  */
-
-static void
-cache_ref (struct tailcall_cache *cache)
-{
-  gdb_assert (cache->refc > 0);
-
-  cache->refc++;
-}
-
-/* Drop reference to CACHE, possibly fully freeing it and unregistering it from
-   cache_htab.  */
-
-static void
-cache_unref (struct tailcall_cache *cache)
-{
-  gdb_assert (cache->refc > 0);
-
-  if (!--cache->refc)
-    {
-      gdb_assert (htab_find_slot (cache_htab, cache, NO_INSERT) != NULL);
-      htab_remove_elt (cache_htab, cache);
-
-      xfree (cache->chain);
-      xfree (cache);
-    }
-}
-
-/* Return 1 if FI is a non-bottom (not the callee) tail call frame.  Otherwise
-   return 0.  */
-
-static int
-frame_is_tailcall (struct frame_info *fi)
-{
-  return frame_unwinder_is (fi, &dwarf2_tailcall_frame_unwind);
-}
-
-/* Try to find tailcall_cache in cache_htab if FI is a part of its virtual tail
-   call chain.  Otherwise return NULL.  No new reference is created.  */
-
-static struct tailcall_cache *
-cache_find (struct frame_info *fi)
-{
-  struct tailcall_cache *cache;
-  void **slot;
-
-  while (frame_is_tailcall (fi))
-    {
-      fi = get_next_frame (fi);
-      gdb_assert (fi != NULL);
-    }
-
-  slot = htab_find_slot (cache_htab, &fi, NO_INSERT);
-  if (slot == NULL)
-    return NULL;
-
-  cache = (struct tailcall_cache *) *slot;
-  gdb_assert (cache != NULL);
-  return cache;
-}
-
-/* Number of virtual frames between THIS_FRAME and CACHE->NEXT_BOTTOM_FRAME.
-   If THIS_FRAME is CACHE-> NEXT_BOTTOM_FRAME return -1.  */
-
-static int
-existing_next_levels (struct frame_info *this_frame,
-		      struct tailcall_cache *cache)
-{
-  int retval = (frame_relative_level (this_frame)
-		- frame_relative_level (cache->next_bottom_frame) - 1);
-
-  gdb_assert (retval >= -1);
-
-  return retval;
-}
-
-/* The number of virtual tail call frames in CHAIN.  With no virtual tail call
-   frames the function would return 0 (but CHAIN does not exist in such
-   case).  */
-
-static int
-pretended_chain_levels (struct call_site_chain *chain)
-{
-  int chain_levels;
-
-  gdb_assert (chain != NULL);
-
-  if (chain->callers == chain->length && chain->callees == chain->length)
-    return chain->length;
-
-  chain_levels = chain->callers + chain->callees;
-  gdb_assert (chain_levels <= chain->length);
-
-  return chain_levels;
-}
-
-/* Implementation of frame_this_id_ftype.  THIS_CACHE must be already
-   initialized with tailcall_cache, THIS_FRAME must be a part of THIS_CACHE.
-
-   Specific virtual tail call frames are tracked by INLINE_DEPTH.  */
-
-static void
-tailcall_frame_this_id (struct frame_info *this_frame, void **this_cache,
-			struct frame_id *this_id)
-{
-  struct tailcall_cache *cache = (struct tailcall_cache *) *this_cache;
-  struct frame_info *next_frame;
-
-  /* Tail call does not make sense for a sentinel frame.  */
-  next_frame = get_next_frame (this_frame);
-  gdb_assert (next_frame != NULL);
-
-  *this_id = get_frame_id (next_frame);
-  (*this_id).code_addr = get_frame_pc (this_frame);
-  (*this_id).code_addr_p = 1;
-  (*this_id).artificial_depth = (cache->chain_levels
-				 - existing_next_levels (this_frame, cache));
-  gdb_assert ((*this_id).artificial_depth > 0);
-}
-
-/* Find PC to be unwound from THIS_FRAME.  THIS_FRAME must be a part of
-   CACHE.  */
-
-static CORE_ADDR
-pretend_pc (struct frame_info *this_frame, struct tailcall_cache *cache)
-{
-  int next_levels = existing_next_levels (this_frame, cache);
-  struct call_site_chain *chain = cache->chain;
-
-  gdb_assert (chain != NULL);
-
-  next_levels++;
-  gdb_assert (next_levels >= 0);
-
-  if (next_levels < chain->callees)
-    return chain->call_site[chain->length - next_levels - 1]->pc;
-  next_levels -= chain->callees;
-
-  /* Otherwise CHAIN->CALLEES are already covered by CHAIN->CALLERS.  */
-  if (chain->callees != chain->length)
-    {
-      if (next_levels < chain->callers)
-	return chain->call_site[chain->callers - next_levels - 1]->pc;
-      next_levels -= chain->callers;
-    }
-
-  gdb_assert (next_levels == 0);
-  return cache->prev_pc;
-}
-
-/* Implementation of frame_prev_register_ftype.  If no specific register
-   override is supplied NULL is returned (this is incompatible with
-   frame_prev_register_ftype semantics).  next_bottom_frame and tail call
-   frames unwind the NULL case differently.  */
-
-struct value *
-dwarf2_tailcall_prev_register_first (struct frame_info *this_frame,
-				     void **tailcall_cachep, int regnum)
-{
-  struct gdbarch *this_gdbarch = get_frame_arch (this_frame);
-  struct tailcall_cache *cache = (struct tailcall_cache *) *tailcall_cachep;
-  CORE_ADDR addr;
-
-  if (regnum == gdbarch_pc_regnum (this_gdbarch))
-    addr = pretend_pc (this_frame, cache);
-  else if (cache->prev_sp_p && regnum == gdbarch_sp_regnum (this_gdbarch))
-    {
-      int next_levels = existing_next_levels (this_frame, cache);
-
-      if (next_levels == cache->chain_levels - 1)
-	addr = cache->prev_sp;
-      else
-	addr = dwarf2_frame_cfa (this_frame) - cache->entry_cfa_sp_offset;
-    }
-  else
-    return NULL;
-
-  return frame_unwind_got_address (this_frame, regnum, addr);
-}
-
-/* Implementation of frame_prev_register_ftype for tail call frames.  Register
-   set of virtual tail call frames is assumed to be the one of the top (caller)
-   frame - assume unchanged register value for NULL from
-   dwarf2_tailcall_prev_register_first.  */
-
-static struct value *
-tailcall_frame_prev_register (struct frame_info *this_frame,
-			       void **this_cache, int regnum)
-{
-  struct tailcall_cache *cache = (struct tailcall_cache *) *this_cache;
-  struct value *val;
-
-  gdb_assert (this_frame != cache->next_bottom_frame);
-
-  val = dwarf2_tailcall_prev_register_first (this_frame, this_cache, regnum);
-  if (val)
-    return val;
-
-  return frame_unwind_got_register (this_frame, regnum, regnum);
-}
-
-/* Implementation of frame_sniffer_ftype.  It will never find a new chain, use
-   dwarf2_tailcall_sniffer_first for the bottom (callee) frame.  It will find
-   all the predecessing virtual tail call frames, it will return false when
-   there exist no more tail call frames in this chain.  */
-
-static int
-tailcall_frame_sniffer (const struct frame_unwind *self,
-			 struct frame_info *this_frame, void **this_cache)
-{
-  struct frame_info *next_frame;
-  int next_levels;
-  struct tailcall_cache *cache;
-
-  if (!dwarf2_frame_unwinders_enabled_p)
-    return 0;
-
-  /* Inner tail call element does not make sense for a sentinel frame.  */
-  next_frame = get_next_frame (this_frame);
-  if (next_frame == NULL)
-    return 0;
-
-  cache = cache_find (next_frame);
-  if (cache == NULL)
-    return 0;
-
-  cache_ref (cache);
-
-  next_levels = existing_next_levels (this_frame, cache);
-
-  /* NEXT_LEVELS is -1 only in dwarf2_tailcall_sniffer_first.  */
-  gdb_assert (next_levels >= 0);
-  gdb_assert (next_levels <= cache->chain_levels);
-
-  if (next_levels == cache->chain_levels)
-    {
-      cache_unref (cache);
-      return 0;
-    }
-
-  *this_cache = cache;
-  return 1;
-}
-
-/* The initial "sniffer" whether THIS_FRAME is a bottom (callee) frame of a new
-   chain to create.  Keep TAILCALL_CACHEP NULL if it did not find any chain,
-   initialize it otherwise.  No tail call chain is created if there are no
-   unambiguous virtual tail call frames to report.
-   
-   ENTRY_CFA_SP_OFFSETP is NULL if no special SP handling is possible,
-   otherwise *ENTRY_CFA_SP_OFFSETP is the number of bytes to subtract from tail
-   call frames frame base to get the SP value there - to simulate return
-   address pushed on the stack.  */
-
-void
-dwarf2_tailcall_sniffer_first (struct frame_info *this_frame,
-			       void **tailcall_cachep,
-			       const LONGEST *entry_cfa_sp_offsetp)
-{
-  CORE_ADDR prev_pc = 0, prev_sp = 0;	/* GCC warning.  */
-  int prev_sp_p = 0;
-  CORE_ADDR this_pc;
-  struct gdbarch *prev_gdbarch;
-  struct call_site_chain *chain = NULL;
-  struct tailcall_cache *cache;
-
-  gdb_assert (*tailcall_cachep == NULL);
-
-  /* PC may be after the function if THIS_FRAME calls noreturn function,
-     get_frame_address_in_block will decrease it by 1 in such case.  */
-  this_pc = get_frame_address_in_block (this_frame);
-
-  /* Catch any unwinding errors.  */
-  try
-    {
-      int sp_regnum;
-
-      prev_gdbarch = frame_unwind_arch (this_frame);
-
-      /* Simulate frame_unwind_pc without setting this_frame->prev_pc.p.  */
-      prev_pc = gdbarch_unwind_pc (prev_gdbarch, this_frame);
-
-      /* call_site_find_chain can throw an exception.  */
-      chain = call_site_find_chain (prev_gdbarch, prev_pc, this_pc);
-
-      if (entry_cfa_sp_offsetp != NULL)
-	{
-	  sp_regnum = gdbarch_sp_regnum (prev_gdbarch);
-	  if (sp_regnum != -1)
-	    {
-	      prev_sp = frame_unwind_register_unsigned (this_frame, sp_regnum);
-	      prev_sp_p = 1;
-	    }
-	}
-    }
-  catch (const gdb_exception_error &except)
-    {
-      if (entry_values_debug)
-	exception_print (gdb_stdout, except);
-      return;
-    }
-
-  /* Ambiguous unwind or unambiguous unwind verified as matching.  */
-  if (chain == NULL || chain->length == 0)
-    {
-      xfree (chain);
-      return;
-    }
-
-  cache = cache_new_ref1 (this_frame);
-  *tailcall_cachep = cache;
-  cache->chain = chain;
-  cache->prev_pc = prev_pc;
-  cache->chain_levels = pretended_chain_levels (chain);
-  cache->prev_sp_p = prev_sp_p;
-  if (cache->prev_sp_p)
-    {
-      cache->prev_sp = prev_sp;
-      cache->entry_cfa_sp_offset = *entry_cfa_sp_offsetp;
-    }
-  gdb_assert (cache->chain_levels > 0);
-}
-
-/* Implementation of frame_dealloc_cache_ftype.  It can be called even for the
-   bottom chain frame from dwarf2_frame_dealloc_cache which is not a real
-   TAILCALL_FRAME.  */
-
-static void
-tailcall_frame_dealloc_cache (struct frame_info *self, void *this_cache)
-{
-  struct tailcall_cache *cache = (struct tailcall_cache *) this_cache;
-
-  cache_unref (cache);
-}
-
-/* Implementation of frame_prev_arch_ftype.  We assume all the virtual tail
-   call frames have gdbarch of the bottom (callee) frame.  */
-
-static struct gdbarch *
-tailcall_frame_prev_arch (struct frame_info *this_frame,
-			  void **this_prologue_cache)
-{
-  struct tailcall_cache *cache = (struct tailcall_cache *) *this_prologue_cache;
-
-  return get_frame_arch (cache->next_bottom_frame);
-}
-
-/* Virtual tail call frame unwinder if dwarf2_tailcall_sniffer_first finds
-   a chain to create.  */
-
-const struct frame_unwind dwarf2_tailcall_frame_unwind =
-{
-  TAILCALL_FRAME,
-  default_frame_unwind_stop_reason,
-  tailcall_frame_this_id,
-  tailcall_frame_prev_register,
-  NULL,
-  tailcall_frame_sniffer,
-  tailcall_frame_dealloc_cache,
-  tailcall_frame_prev_arch
-};
-
-void
-_initialize_tailcall_frame (void)
-{
-  cache_htab = htab_create_alloc (50, cache_hash, cache_eq, NULL, xcalloc,
-				  xfree);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2-frame-tailcall.h ./gdb/dwarf2-frame-tailcall.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2-frame-tailcall.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf2-frame-tailcall.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,39 +0,0 @@
-/* Definitions for virtual tail call frames unwinder for GDB.
-
-   Copyright (C) 2010-2020 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 DWARF2_FRAME_TAILCALL_H
-#define DWARF2_FRAME_TAILCALL_H 1
-
-struct frame_info;
-struct frame_unwind;
-
-/* The tail call frame unwinder.  */
-
-extern void
-  dwarf2_tailcall_sniffer_first (struct frame_info *this_frame,
-				 void **tailcall_cachep,
-				 const LONGEST *entry_cfa_sp_offsetp);
-
-extern struct value *
-  dwarf2_tailcall_prev_register_first (struct frame_info *this_frame,
-				       void **tailcall_cachep, int regnum);
-
-extern const struct frame_unwind dwarf2_tailcall_frame_unwind;
-
-#endif /* !DWARF2_FRAME_TAILCALL_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2loc.c ./gdb/dwarf2loc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2loc.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf2loc.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,4532 +0,0 @@
-/* DWARF 2 location expression support for GDB.
-
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
-
-   Contributed by Daniel Jacobowitz, MontaVista Software, 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 "ui-out.h"
-#include "value.h"
-#include "frame.h"
-#include "gdbcore.h"
-#include "target.h"
-#include "inferior.h"
-#include "ax.h"
-#include "ax-gdb.h"
-#include "regcache.h"
-#include "objfiles.h"
-#include "block.h"
-#include "gdbcmd.h"
-#include "complaints.h"
-#include "dwarf2.h"
-#include "dwarf2expr.h"
-#include "dwarf2loc.h"
-#include "dwarf2read.h"
-#include "dwarf2-frame.h"
-#include "compile/compile.h"
-#include "gdbsupport/selftest.h"
-#include <algorithm>
-#include <vector>
-#include <unordered_set>
-#include "gdbsupport/underlying.h"
-#include "gdbsupport/byte-vector.h"
-
-static struct value *dwarf2_evaluate_loc_desc_full (struct type *type,
-						    struct frame_info *frame,
-						    const gdb_byte *data,
-						    size_t size,
-						    struct dwarf2_per_cu_data *per_cu,
-						    struct type *subobj_type,
-						    LONGEST subobj_byte_offset);
-
-static struct call_site_parameter *dwarf_expr_reg_to_entry_parameter
-    (struct frame_info *frame,
-     enum call_site_parameter_kind kind,
-     union call_site_parameter_u kind_u,
-     struct dwarf2_per_cu_data **per_cu_return);
-
-static struct value *indirect_synthetic_pointer
-  (sect_offset die, LONGEST byte_offset,
-   struct dwarf2_per_cu_data *per_cu,
-   struct frame_info *frame,
-   struct type *type, bool resolve_abstract_p = false);
-
-/* Until these have formal names, we define these here.
-   ref: http://gcc.gnu.org/wiki/DebugFission
-   Each entry in .debug_loc.dwo begins with a byte that describes the entry,
-   and is then followed by data specific to that entry.  */
-
-enum debug_loc_kind
-{
-  /* Indicates the end of the list of entries.  */
-  DEBUG_LOC_END_OF_LIST = 0,
-
-  /* This is followed by an unsigned LEB128 number that is an index into
-     .debug_addr and specifies the base address for all following entries.  */
-  DEBUG_LOC_BASE_ADDRESS = 1,
-
-  /* This is followed by two unsigned LEB128 numbers that are indices into
-     .debug_addr and specify the beginning and ending addresses, and then
-     a normal location expression as in .debug_loc.  */
-  DEBUG_LOC_START_END = 2,
-
-  /* This is followed by an unsigned LEB128 number that is an index into
-     .debug_addr and specifies the beginning address, and a 4 byte unsigned
-     number that specifies the length, and then a normal location expression
-     as in .debug_loc.  */
-  DEBUG_LOC_START_LENGTH = 3,
-
-  /* An internal value indicating there is insufficient data.  */
-  DEBUG_LOC_BUFFER_OVERFLOW = -1,
-
-  /* An internal value indicating an invalid kind of entry was found.  */
-  DEBUG_LOC_INVALID_ENTRY = -2
-};
-
-/* Helper function which throws an error if a synthetic pointer is
-   invalid.  */
-
-static void
-invalid_synthetic_pointer (void)
-{
-  error (_("access outside bounds of object "
-	   "referenced via synthetic pointer"));
-}
-
-/* Decode the addresses in a non-dwo .debug_loc entry.
-   A pointer to the next byte to examine is returned in *NEW_PTR.
-   The encoded low,high addresses are return in *LOW,*HIGH.
-   The result indicates the kind of entry found.  */
-
-static enum debug_loc_kind
-decode_debug_loc_addresses (const gdb_byte *loc_ptr, const gdb_byte *buf_end,
-			    const gdb_byte **new_ptr,
-			    CORE_ADDR *low, CORE_ADDR *high,
-			    enum bfd_endian byte_order,
-			    unsigned int addr_size,
-			    int signed_addr_p)
-{
-  CORE_ADDR base_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
-
-  if (buf_end - loc_ptr < 2 * addr_size)
-    return DEBUG_LOC_BUFFER_OVERFLOW;
-
-  if (signed_addr_p)
-    *low = extract_signed_integer (loc_ptr, addr_size, byte_order);
-  else
-    *low = extract_unsigned_integer (loc_ptr, addr_size, byte_order);
-  loc_ptr += addr_size;
-
-  if (signed_addr_p)
-    *high = extract_signed_integer (loc_ptr, addr_size, byte_order);
-  else
-    *high = extract_unsigned_integer (loc_ptr, addr_size, byte_order);
-  loc_ptr += addr_size;
-
-  *new_ptr = loc_ptr;
-
-  /* A base-address-selection entry.  */
-  if ((*low & base_mask) == base_mask)
-    return DEBUG_LOC_BASE_ADDRESS;
-
-  /* An end-of-list entry.  */
-  if (*low == 0 && *high == 0)
-    return DEBUG_LOC_END_OF_LIST;
-
-  return DEBUG_LOC_START_END;
-}
-
-/* Decode the addresses in .debug_loclists entry.
-   A pointer to the next byte to examine is returned in *NEW_PTR.
-   The encoded low,high addresses are return in *LOW,*HIGH.
-   The result indicates the kind of entry found.  */
-
-static enum debug_loc_kind
-decode_debug_loclists_addresses (struct dwarf2_per_cu_data *per_cu,
-				 const gdb_byte *loc_ptr,
-				 const gdb_byte *buf_end,
-				 const gdb_byte **new_ptr,
-				 CORE_ADDR *low, CORE_ADDR *high,
-				 enum bfd_endian byte_order,
-				 unsigned int addr_size,
-				 int signed_addr_p)
-{
-  uint64_t u64;
-
-  if (loc_ptr == buf_end)
-    return DEBUG_LOC_BUFFER_OVERFLOW;
-
-  switch (*loc_ptr++)
-    {
-    case DW_LLE_end_of_list:
-      *new_ptr = loc_ptr;
-      return DEBUG_LOC_END_OF_LIST;
-    case DW_LLE_base_address:
-      if (loc_ptr + addr_size > buf_end)
-	return DEBUG_LOC_BUFFER_OVERFLOW;
-      if (signed_addr_p)
-	*high = extract_signed_integer (loc_ptr, addr_size, byte_order);
-      else
-	*high = extract_unsigned_integer (loc_ptr, addr_size, byte_order);
-      loc_ptr += addr_size;
-      *new_ptr = loc_ptr;
-      return DEBUG_LOC_BASE_ADDRESS;
-    case DW_LLE_offset_pair:
-      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
-      if (loc_ptr == NULL)
-	return DEBUG_LOC_BUFFER_OVERFLOW;
-      *low = u64;
-      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
-      if (loc_ptr == NULL)
-	return DEBUG_LOC_BUFFER_OVERFLOW;
-      *high = u64;
-      *new_ptr = loc_ptr;
-      return DEBUG_LOC_START_END;
-    default:
-      return DEBUG_LOC_INVALID_ENTRY;
-    }
-}
-
-/* Decode the addresses in .debug_loc.dwo entry.
-   A pointer to the next byte to examine is returned in *NEW_PTR.
-   The encoded low,high addresses are return in *LOW,*HIGH.
-   The result indicates the kind of entry found.  */
-
-static enum debug_loc_kind
-decode_debug_loc_dwo_addresses (struct dwarf2_per_cu_data *per_cu,
-				const gdb_byte *loc_ptr,
-				const gdb_byte *buf_end,
-				const gdb_byte **new_ptr,
-				CORE_ADDR *low, CORE_ADDR *high,
-				enum bfd_endian byte_order)
-{
-  uint64_t low_index, high_index;
-
-  if (loc_ptr == buf_end)
-    return DEBUG_LOC_BUFFER_OVERFLOW;
-
-  switch (*loc_ptr++)
-    {
-    case DW_LLE_GNU_end_of_list_entry:
-      *new_ptr = loc_ptr;
-      return DEBUG_LOC_END_OF_LIST;
-    case DW_LLE_GNU_base_address_selection_entry:
-      *low = 0;
-      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &high_index);
-      if (loc_ptr == NULL)
-	return DEBUG_LOC_BUFFER_OVERFLOW;
-      *high = dwarf2_read_addr_index (per_cu, high_index);
-      *new_ptr = loc_ptr;
-      return DEBUG_LOC_BASE_ADDRESS;
-    case DW_LLE_GNU_start_end_entry:
-      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &low_index);
-      if (loc_ptr == NULL)
-	return DEBUG_LOC_BUFFER_OVERFLOW;
-      *low = dwarf2_read_addr_index (per_cu, low_index);
-      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &high_index);
-      if (loc_ptr == NULL)
-	return DEBUG_LOC_BUFFER_OVERFLOW;
-      *high = dwarf2_read_addr_index (per_cu, high_index);
-      *new_ptr = loc_ptr;
-      return DEBUG_LOC_START_END;
-    case DW_LLE_GNU_start_length_entry:
-      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &low_index);
-      if (loc_ptr == NULL)
-	return DEBUG_LOC_BUFFER_OVERFLOW;
-      *low = dwarf2_read_addr_index (per_cu, low_index);
-      if (loc_ptr + 4 > buf_end)
-	return DEBUG_LOC_BUFFER_OVERFLOW;
-      *high = *low;
-      *high += extract_unsigned_integer (loc_ptr, 4, byte_order);
-      *new_ptr = loc_ptr + 4;
-      return DEBUG_LOC_START_LENGTH;
-    default:
-      return DEBUG_LOC_INVALID_ENTRY;
-    }
-}
-
-/* A function for dealing with location lists.  Given a
-   symbol baton (BATON) and a pc value (PC), find the appropriate
-   location expression, set *LOCEXPR_LENGTH, and return a pointer
-   to the beginning of the expression.  Returns NULL on failure.
-
-   For now, only return the first matching location expression; there
-   can be more than one in the list.  */
-
-const gdb_byte *
-dwarf2_find_location_expression (struct dwarf2_loclist_baton *baton,
-				 size_t *locexpr_length, CORE_ADDR pc)
-{
-  struct objfile *objfile = dwarf2_per_cu_objfile (baton->per_cu);
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  unsigned int addr_size = dwarf2_per_cu_addr_size (baton->per_cu);
-  int signed_addr_p = bfd_get_sign_extend_vma (objfile->obfd);
-  /* Adjust base_address for relocatable objects.  */
-  CORE_ADDR base_offset = dwarf2_per_cu_text_offset (baton->per_cu);
-  CORE_ADDR base_address = baton->base_address + base_offset;
-  const gdb_byte *loc_ptr, *buf_end;
-
-  loc_ptr = baton->data;
-  buf_end = baton->data + baton->size;
-
-  while (1)
-    {
-      CORE_ADDR low = 0, high = 0; /* init for gcc -Wall */
-      int length;
-      enum debug_loc_kind kind;
-      const gdb_byte *new_ptr = NULL; /* init for gcc -Wall */
-
-      if (baton->from_dwo)
-	kind = decode_debug_loc_dwo_addresses (baton->per_cu,
-					       loc_ptr, buf_end, &new_ptr,
-					       &low, &high, byte_order);
-      else if (dwarf2_version (baton->per_cu) < 5)
-	kind = decode_debug_loc_addresses (loc_ptr, buf_end, &new_ptr,
-					   &low, &high,
-					   byte_order, addr_size,
-					   signed_addr_p);
-      else
-	kind = decode_debug_loclists_addresses (baton->per_cu,
-						loc_ptr, buf_end, &new_ptr,
-						&low, &high, byte_order,
-						addr_size, signed_addr_p);
-
-      loc_ptr = new_ptr;
-      switch (kind)
-	{
-	case DEBUG_LOC_END_OF_LIST:
-	  *locexpr_length = 0;
-	  return NULL;
-	case DEBUG_LOC_BASE_ADDRESS:
-	  base_address = high + base_offset;
-	  continue;
-	case DEBUG_LOC_START_END:
-	case DEBUG_LOC_START_LENGTH:
-	  break;
-	case DEBUG_LOC_BUFFER_OVERFLOW:
-	case DEBUG_LOC_INVALID_ENTRY:
-	  error (_("dwarf2_find_location_expression: "
-		   "Corrupted DWARF expression."));
-	default:
-	  gdb_assert_not_reached ("bad debug_loc_kind");
-	}
-
-      /* Otherwise, a location expression entry.
-	 If the entry is from a DWO, don't add base address: the entry is from
-	 .debug_addr which already has the DWARF "base address".  We still add
-	 base_offset in case we're debugging a PIE executable.  */
-      if (baton->from_dwo)
-	{
-	  low += base_offset;
-	  high += base_offset;
-	}
-      else
-	{
-	  low += base_address;
-	  high += base_address;
-	}
-
-      if (dwarf2_version (baton->per_cu) < 5)
-	{
-	  length = extract_unsigned_integer (loc_ptr, 2, byte_order);
-	  loc_ptr += 2;
-	}
-      else
-	{
-	  unsigned int bytes_read;
-
-	  length = read_unsigned_leb128 (NULL, loc_ptr, &bytes_read);
-	  loc_ptr += bytes_read;
-	}
-
-      if (low == high && pc == low)
-	{
-	  /* This is entry PC record present only at entry point
-	     of a function.  Verify it is really the function entry point.  */
-
-	  const struct block *pc_block = block_for_pc (pc);
-	  struct symbol *pc_func = NULL;
-
-	  if (pc_block)
-	    pc_func = block_linkage_function (pc_block);
-
-	  if (pc_func && pc == BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (pc_func)))
-	    {
-	      *locexpr_length = length;
-	      return loc_ptr;
-	    }
-	}
-
-      if (pc >= low && pc < high)
-	{
-	  *locexpr_length = length;
-	  return loc_ptr;
-	}
-
-      loc_ptr += length;
-    }
-}
-
-/* This is the baton used when performing dwarf2 expression
-   evaluation.  */
-struct dwarf_expr_baton
-{
-  struct frame_info *frame;
-  struct dwarf2_per_cu_data *per_cu;
-  CORE_ADDR obj_address;
-};
-
-/* Implement find_frame_base_location method for LOC_BLOCK functions using
-   DWARF expression for its DW_AT_frame_base.  */
-
-static void
-locexpr_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc,
-				  const gdb_byte **start, size_t *length)
-{
-  struct dwarf2_locexpr_baton *symbaton
-    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (framefunc);
-
-  *length = symbaton->size;
-  *start = symbaton->data;
-}
-
-/* Implement the struct symbol_block_ops::get_frame_base method for
-   LOC_BLOCK functions using a DWARF expression as its DW_AT_frame_base.  */
-
-static CORE_ADDR
-locexpr_get_frame_base (struct symbol *framefunc, struct frame_info *frame)
-{
-  struct gdbarch *gdbarch;
-  struct type *type;
-  struct dwarf2_locexpr_baton *dlbaton;
-  const gdb_byte *start;
-  size_t length;
-  struct value *result;
-
-  /* If this method is called, then FRAMEFUNC is supposed to be a DWARF block.
-     Thus, it's supposed to provide the find_frame_base_location method as
-     well.  */
-  gdb_assert (SYMBOL_BLOCK_OPS (framefunc)->find_frame_base_location != NULL);
-
-  gdbarch = get_frame_arch (frame);
-  type = builtin_type (gdbarch)->builtin_data_ptr;
-  dlbaton = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (framefunc);
-
-  SYMBOL_BLOCK_OPS (framefunc)->find_frame_base_location
-    (framefunc, get_frame_pc (frame), &start, &length);
-  result = dwarf2_evaluate_loc_desc (type, frame, start, length,
-				     dlbaton->per_cu);
-
-  /* The DW_AT_frame_base attribute contains a location description which
-     computes the base address itself.  However, the call to
-     dwarf2_evaluate_loc_desc returns a value representing a variable at
-     that address.  The frame base address is thus this variable's
-     address.  */
-  return value_address (result);
-}
-
-/* Vector for inferior functions as represented by LOC_BLOCK, if the inferior
-   function uses DWARF expression for its DW_AT_frame_base.  */
-
-const struct symbol_block_ops dwarf2_block_frame_base_locexpr_funcs =
-{
-  locexpr_find_frame_base_location,
-  locexpr_get_frame_base
-};
-
-/* Implement find_frame_base_location method for LOC_BLOCK functions using
-   DWARF location list for its DW_AT_frame_base.  */
-
-static void
-loclist_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc,
-				  const gdb_byte **start, size_t *length)
-{
-  struct dwarf2_loclist_baton *symbaton
-    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (framefunc);
-
-  *start = dwarf2_find_location_expression (symbaton, length, pc);
-}
-
-/* Implement the struct symbol_block_ops::get_frame_base method for
-   LOC_BLOCK functions using a DWARF location list as its DW_AT_frame_base.  */
-
-static CORE_ADDR
-loclist_get_frame_base (struct symbol *framefunc, struct frame_info *frame)
-{
-  struct gdbarch *gdbarch;
-  struct type *type;
-  struct dwarf2_loclist_baton *dlbaton;
-  const gdb_byte *start;
-  size_t length;
-  struct value *result;
-
-  /* If this method is called, then FRAMEFUNC is supposed to be a DWARF block.
-     Thus, it's supposed to provide the find_frame_base_location method as
-     well.  */
-  gdb_assert (SYMBOL_BLOCK_OPS (framefunc)->find_frame_base_location != NULL);
-
-  gdbarch = get_frame_arch (frame);
-  type = builtin_type (gdbarch)->builtin_data_ptr;
-  dlbaton = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (framefunc);
-
-  SYMBOL_BLOCK_OPS (framefunc)->find_frame_base_location
-    (framefunc, get_frame_pc (frame), &start, &length);
-  result = dwarf2_evaluate_loc_desc (type, frame, start, length,
-				     dlbaton->per_cu);
-
-  /* The DW_AT_frame_base attribute contains a location description which
-     computes the base address itself.  However, the call to
-     dwarf2_evaluate_loc_desc returns a value representing a variable at
-     that address.  The frame base address is thus this variable's
-     address.  */
-  return value_address (result);
-}
-
-/* Vector for inferior functions as represented by LOC_BLOCK, if the inferior
-   function uses DWARF location list for its DW_AT_frame_base.  */
-
-const struct symbol_block_ops dwarf2_block_frame_base_loclist_funcs =
-{
-  loclist_find_frame_base_location,
-  loclist_get_frame_base
-};
-
-/* See dwarf2loc.h.  */
-
-void
-func_get_frame_base_dwarf_block (struct symbol *framefunc, CORE_ADDR pc,
-				 const gdb_byte **start, size_t *length)
-{
-  if (SYMBOL_BLOCK_OPS (framefunc) != NULL)
-    {
-      const struct symbol_block_ops *ops_block = SYMBOL_BLOCK_OPS (framefunc);
-
-      ops_block->find_frame_base_location (framefunc, pc, start, length);
-    }
-  else
-    *length = 0;
-
-  if (*length == 0)
-    error (_("Could not find the frame base for \"%s\"."),
-	   framefunc->natural_name ());
-}
-
-static CORE_ADDR
-get_frame_pc_for_per_cu_dwarf_call (void *baton)
-{
-  dwarf_expr_context *ctx = (dwarf_expr_context *) baton;
-
-  return ctx->get_frame_pc ();
-}
-
-static void
-per_cu_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset,
-		   struct dwarf2_per_cu_data *per_cu)
-{
-  struct dwarf2_locexpr_baton block;
-
-  block = dwarf2_fetch_die_loc_cu_off (die_offset, per_cu,
-				       get_frame_pc_for_per_cu_dwarf_call,
-				       ctx);
-
-  /* DW_OP_call_ref is currently not supported.  */
-  gdb_assert (block.per_cu == per_cu);
-
-  ctx->eval (block.data, block.size);
-}
-
-/* Given context CTX, section offset SECT_OFF, and compilation unit
-   data PER_CU, execute the "variable value" operation on the DIE
-   found at SECT_OFF.  */
-
-static struct value *
-sect_variable_value (struct dwarf_expr_context *ctx, sect_offset sect_off,
-		     struct dwarf2_per_cu_data *per_cu)
-{
-  struct type *die_type = dwarf2_fetch_die_type_sect_off (sect_off, per_cu);
-
-  if (die_type == NULL)
-    error (_("Bad DW_OP_GNU_variable_value DIE."));
-
-  /* Note: Things still work when the following test is removed.  This
-     test and error is here to conform to the proposed specification.  */
-  if (TYPE_CODE (die_type) != TYPE_CODE_INT
-      && TYPE_CODE (die_type) != TYPE_CODE_PTR)
-    error (_("Type of DW_OP_GNU_variable_value DIE must be an integer or pointer."));
-
-  struct type *type = lookup_pointer_type (die_type);
-  struct frame_info *frame = get_selected_frame (_("No frame selected."));
-  return indirect_synthetic_pointer (sect_off, 0, per_cu, frame, type, true);
-}
-
-class dwarf_evaluate_loc_desc : public dwarf_expr_context
-{
- public:
-
-  struct frame_info *frame;
-  struct dwarf2_per_cu_data *per_cu;
-  CORE_ADDR obj_address;
-
-  /* Helper function for dwarf2_evaluate_loc_desc.  Computes the CFA for
-     the frame in BATON.  */
-
-  CORE_ADDR get_frame_cfa () override
-  {
-    return dwarf2_frame_cfa (frame);
-  }
-
-  /* Helper function for dwarf2_evaluate_loc_desc.  Computes the PC for
-     the frame in BATON.  */
-
-  CORE_ADDR get_frame_pc () override
-  {
-    return get_frame_address_in_block (frame);
-  }
-
-  /* Using the objfile specified in BATON, find the address for the
-     current thread's thread-local storage with offset OFFSET.  */
-  CORE_ADDR get_tls_address (CORE_ADDR offset) override
-  {
-    struct objfile *objfile = dwarf2_per_cu_objfile (per_cu);
-
-    return target_translate_tls_address (objfile, offset);
-  }
-
-  /* Helper interface of per_cu_dwarf_call for
-     dwarf2_evaluate_loc_desc.  */
-
-  void dwarf_call (cu_offset die_offset) override
-  {
-    per_cu_dwarf_call (this, die_offset, per_cu);
-  }
-
-  /* Helper interface of sect_variable_value for
-     dwarf2_evaluate_loc_desc.  */
-
-  struct value *dwarf_variable_value (sect_offset sect_off) override
-  {
-    return sect_variable_value (this, sect_off, per_cu);
-  }
-
-  struct type *get_base_type (cu_offset die_offset, int size) override
-  {
-    struct type *result = dwarf2_get_die_type (die_offset, per_cu);
-    if (result == NULL)
-      error (_("Could not find type for DW_OP_const_type"));
-    if (size != 0 && TYPE_LENGTH (result) != size)
-      error (_("DW_OP_const_type has different sizes for type and data"));
-    return result;
-  }
-
-  /* Callback function for dwarf2_evaluate_loc_desc.
-     Fetch the address indexed by DW_OP_addrx or DW_OP_GNU_addr_index.  */
-
-  CORE_ADDR get_addr_index (unsigned int index) override
-  {
-    return dwarf2_read_addr_index (per_cu, index);
-  }
-
-  /* Callback function for get_object_address. Return the address of the VLA
-     object.  */
-
-  CORE_ADDR get_object_address () override
-  {
-    if (obj_address == 0)
-      error (_("Location address is not set."));
-    return obj_address;
-  }
-
-  /* Execute DWARF block of call_site_parameter which matches KIND and
-     KIND_U.  Choose DEREF_SIZE value of that parameter.  Search
-     caller of this objects's frame.
-
-     The caller can be from a different CU - per_cu_dwarf_call
-     implementation can be more simple as it does not support cross-CU
-     DWARF executions.  */
-
-  void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind,
-				   union call_site_parameter_u kind_u,
-				   int deref_size) override
-  {
-    struct frame_info *caller_frame;
-    struct dwarf2_per_cu_data *caller_per_cu;
-    struct call_site_parameter *parameter;
-    const gdb_byte *data_src;
-    size_t size;
-
-    caller_frame = get_prev_frame (frame);
-
-    parameter = dwarf_expr_reg_to_entry_parameter (frame, kind, kind_u,
-						   &caller_per_cu);
-    data_src = deref_size == -1 ? parameter->value : parameter->data_value;
-    size = deref_size == -1 ? parameter->value_size : parameter->data_value_size;
-
-    /* DEREF_SIZE size is not verified here.  */
-    if (data_src == NULL)
-      throw_error (NO_ENTRY_VALUE_ERROR,
-		   _("Cannot resolve DW_AT_call_data_value"));
-
-    scoped_restore save_frame = make_scoped_restore (&this->frame,
-						     caller_frame);
-    scoped_restore save_per_cu = make_scoped_restore (&this->per_cu,
-						      caller_per_cu);
-    scoped_restore save_obj_addr = make_scoped_restore (&this->obj_address,
-							(CORE_ADDR) 0);
-
-    scoped_restore save_arch = make_scoped_restore (&this->gdbarch);
-    this->gdbarch
-      = get_objfile_arch (dwarf2_per_cu_objfile (per_cu));
-    scoped_restore save_addr_size = make_scoped_restore (&this->addr_size);
-    this->addr_size = dwarf2_per_cu_addr_size (per_cu);
-    scoped_restore save_offset = make_scoped_restore (&this->offset);
-    this->offset = dwarf2_per_cu_text_offset (per_cu);
-
-    this->eval (data_src, size);
-  }
-
-  /* Using the frame specified in BATON, find the location expression
-     describing the frame base.  Return a pointer to it in START and
-     its length in LENGTH.  */
-  void get_frame_base (const gdb_byte **start, size_t * length) override
-  {
-    /* FIXME: cagney/2003-03-26: This code should be using
-       get_frame_base_address(), and then implement a dwarf2 specific
-       this_base method.  */
-    struct symbol *framefunc;
-    const struct block *bl = get_frame_block (frame, NULL);
-
-    if (bl == NULL)
-      error (_("frame address is not available."));
-
-    /* Use block_linkage_function, which returns a real (not inlined)
-       function, instead of get_frame_function, which may return an
-       inlined function.  */
-    framefunc = block_linkage_function (bl);
-
-    /* If we found a frame-relative symbol then it was certainly within
-       some function associated with a frame. If we can't find the frame,
-       something has gone wrong.  */
-    gdb_assert (framefunc != NULL);
-
-    func_get_frame_base_dwarf_block (framefunc,
-				     get_frame_address_in_block (frame),
-				     start, length);
-  }
-
-  /* Read memory at ADDR (length LEN) into BUF.  */
-
-  void read_mem (gdb_byte *buf, CORE_ADDR addr, size_t len) override
-  {
-    read_memory (addr, buf, len);
-  }
-
-  /* Using the frame specified in BATON, return the value of register
-     REGNUM, treated as a pointer.  */
-  CORE_ADDR read_addr_from_reg (int dwarf_regnum) override
-  {
-    struct gdbarch *gdbarch = get_frame_arch (frame);
-    int regnum = dwarf_reg_to_regnum_or_error (gdbarch, dwarf_regnum);
-
-    return address_from_register (regnum, frame);
-  }
-
-  /* Implement "get_reg_value" callback.  */
-
-  struct value *get_reg_value (struct type *type, int dwarf_regnum) override
-  {
-    struct gdbarch *gdbarch = get_frame_arch (frame);
-    int regnum = dwarf_reg_to_regnum_or_error (gdbarch, dwarf_regnum);
-
-    return value_from_register (type, regnum, frame);
-  }
-};
-
-/* See dwarf2loc.h.  */
-
-unsigned int entry_values_debug = 0;
-
-/* Helper to set entry_values_debug.  */
-
-static void
-show_entry_values_debug (struct ui_file *file, int from_tty,
-			 struct cmd_list_element *c, const char *value)
-{
-  fprintf_filtered (file,
-		    _("Entry values and tail call frames debugging is %s.\n"),
-		    value);
-}
-
-/* Find DW_TAG_call_site's DW_AT_call_target address.
-   CALLER_FRAME (for registers) can be NULL if it is not known.  This function
-   always returns valid address or it throws NO_ENTRY_VALUE_ERROR.  */
-
-static CORE_ADDR
-call_site_to_target_addr (struct gdbarch *call_site_gdbarch,
-			  struct call_site *call_site,
-			  struct frame_info *caller_frame)
-{
-  switch (FIELD_LOC_KIND (call_site->target))
-    {
-    case FIELD_LOC_KIND_DWARF_BLOCK:
-      {
-	struct dwarf2_locexpr_baton *dwarf_block;
-	struct value *val;
-	struct type *caller_core_addr_type;
-	struct gdbarch *caller_arch;
-
-	dwarf_block = FIELD_DWARF_BLOCK (call_site->target);
-	if (dwarf_block == NULL)
-	  {
-	    struct bound_minimal_symbol msym;
-	    
-	    msym = lookup_minimal_symbol_by_pc (call_site->pc - 1);
-	    throw_error (NO_ENTRY_VALUE_ERROR,
-			 _("DW_AT_call_target is not specified at %s in %s"),
-			 paddress (call_site_gdbarch, call_site->pc),
-			 (msym.minsym == NULL ? "???"
-			  : msym.minsym->print_name ()));
-			
-	  }
-	if (caller_frame == NULL)
-	  {
-	    struct bound_minimal_symbol msym;
-	    
-	    msym = lookup_minimal_symbol_by_pc (call_site->pc - 1);
-	    throw_error (NO_ENTRY_VALUE_ERROR,
-			 _("DW_AT_call_target DWARF block resolving "
-			   "requires known frame which is currently not "
-			   "available at %s in %s"),
-			 paddress (call_site_gdbarch, call_site->pc),
-			 (msym.minsym == NULL ? "???"
-			  : msym.minsym->print_name ()));
-			
-	  }
-	caller_arch = get_frame_arch (caller_frame);
-	caller_core_addr_type = builtin_type (caller_arch)->builtin_func_ptr;
-	val = dwarf2_evaluate_loc_desc (caller_core_addr_type, caller_frame,
-					dwarf_block->data, dwarf_block->size,
-					dwarf_block->per_cu);
-	/* DW_AT_call_target is a DWARF expression, not a DWARF location.  */
-	if (VALUE_LVAL (val) == lval_memory)
-	  return value_address (val);
-	else
-	  return value_as_address (val);
-      }
-
-    case FIELD_LOC_KIND_PHYSNAME:
-      {
-	const char *physname;
-	struct bound_minimal_symbol msym;
-
-	physname = FIELD_STATIC_PHYSNAME (call_site->target);
-
-	/* Handle both the mangled and demangled PHYSNAME.  */
-	msym = lookup_minimal_symbol (physname, NULL, NULL);
-	if (msym.minsym == NULL)
-	  {
-	    msym = lookup_minimal_symbol_by_pc (call_site->pc - 1);
-	    throw_error (NO_ENTRY_VALUE_ERROR,
-			 _("Cannot find function \"%s\" for a call site target "
-			   "at %s in %s"),
-			 physname, paddress (call_site_gdbarch, call_site->pc),
-			 (msym.minsym == NULL ? "???"
-			  : msym.minsym->print_name ()));
-			
-	  }
-	return BMSYMBOL_VALUE_ADDRESS (msym);
-      }
-
-    case FIELD_LOC_KIND_PHYSADDR:
-      return FIELD_STATIC_PHYSADDR (call_site->target);
-
-    default:
-      internal_error (__FILE__, __LINE__, _("invalid call site target kind"));
-    }
-}
-
-/* Convert function entry point exact address ADDR to the function which is
-   compliant with TAIL_CALL_LIST_COMPLETE condition.  Throw
-   NO_ENTRY_VALUE_ERROR otherwise.  */
-
-static struct symbol *
-func_addr_to_tail_call_list (struct gdbarch *gdbarch, CORE_ADDR addr)
-{
-  struct symbol *sym = find_pc_function (addr);
-  struct type *type;
-
-  if (sym == NULL || BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (sym)) != addr)
-    throw_error (NO_ENTRY_VALUE_ERROR,
-		 _("DW_TAG_call_site resolving failed to find function "
-		   "name for address %s"),
-		 paddress (gdbarch, addr));
-
-  type = SYMBOL_TYPE (sym);
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_FUNC);
-  gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_FUNC);
-
-  return sym;
-}
-
-/* Verify function with entry point exact address ADDR can never call itself
-   via its tail calls (incl. transitively).  Throw NO_ENTRY_VALUE_ERROR if it
-   can call itself via tail calls.
-
-   If a funtion can tail call itself its entry value based parameters are
-   unreliable.  There is no verification whether the value of some/all
-   parameters is unchanged through the self tail call, we expect if there is
-   a self tail call all the parameters can be modified.  */
-
-static void
-func_verify_no_selftailcall (struct gdbarch *gdbarch, CORE_ADDR verify_addr)
-{
-  CORE_ADDR addr;
-
-  /* The verification is completely unordered.  Track here function addresses
-     which still need to be iterated.  */
-  std::vector<CORE_ADDR> todo;
-
-  /* Track here CORE_ADDRs which were already visited.  */
-  std::unordered_set<CORE_ADDR> addr_hash;
-
-  todo.push_back (verify_addr);
-  while (!todo.empty ())
-    {
-      struct symbol *func_sym;
-      struct call_site *call_site;
-
-      addr = todo.back ();
-      todo.pop_back ();
-
-      func_sym = func_addr_to_tail_call_list (gdbarch, addr);
-
-      for (call_site = TYPE_TAIL_CALL_LIST (SYMBOL_TYPE (func_sym));
-	   call_site; call_site = call_site->tail_call_next)
-	{
-	  CORE_ADDR target_addr;
-
-	  /* CALLER_FRAME with registers is not available for tail-call jumped
-	     frames.  */
-	  target_addr = call_site_to_target_addr (gdbarch, call_site, NULL);
-
-	  if (target_addr == verify_addr)
-	    {
-	      struct bound_minimal_symbol msym;
-	      
-	      msym = lookup_minimal_symbol_by_pc (verify_addr);
-	      throw_error (NO_ENTRY_VALUE_ERROR,
-			   _("DW_OP_entry_value resolving has found "
-			     "function \"%s\" at %s can call itself via tail "
-			     "calls"),
-			   (msym.minsym == NULL ? "???"
-			    : msym.minsym->print_name ()),
-			   paddress (gdbarch, verify_addr));
-	    }
-
-	  if (addr_hash.insert (target_addr).second)
-	    todo.push_back (target_addr);
-	}
-    }
-}
-
-/* Print user readable form of CALL_SITE->PC to gdb_stdlog.  Used only for
-   ENTRY_VALUES_DEBUG.  */
-
-static void
-tailcall_dump (struct gdbarch *gdbarch, const struct call_site *call_site)
-{
-  CORE_ADDR addr = call_site->pc;
-  struct bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (addr - 1);
-
-  fprintf_unfiltered (gdb_stdlog, " %s(%s)", paddress (gdbarch, addr),
-		      (msym.minsym == NULL ? "???"
-		       : msym.minsym->print_name ()));
-
-}
-
-/* Intersect RESULTP with CHAIN to keep RESULTP unambiguous, keep in RESULTP
-   only top callers and bottom callees which are present in both.  GDBARCH is
-   used only for ENTRY_VALUES_DEBUG.  RESULTP is NULL after return if there are
-   no remaining possibilities to provide unambiguous non-trivial result.
-   RESULTP should point to NULL on the first (initialization) call.  Caller is
-   responsible for xfree of any RESULTP data.  */
-
-static void
-chain_candidate (struct gdbarch *gdbarch,
-		 gdb::unique_xmalloc_ptr<struct call_site_chain> *resultp,
-		 std::vector<struct call_site *> *chain)
-{
-  long length = chain->size ();
-  int callers, callees, idx;
-
-  if (*resultp == NULL)
-    {
-      /* Create the initial chain containing all the passed PCs.  */
-
-      struct call_site_chain *result
-	= ((struct call_site_chain *)
-	   xmalloc (sizeof (*result)
-		    + sizeof (*result->call_site) * (length - 1)));
-      result->length = length;
-      result->callers = result->callees = length;
-      if (!chain->empty ())
-	memcpy (result->call_site, chain->data (),
-		sizeof (*result->call_site) * length);
-      resultp->reset (result);
-
-      if (entry_values_debug)
-	{
-	  fprintf_unfiltered (gdb_stdlog, "tailcall: initial:");
-	  for (idx = 0; idx < length; idx++)
-	    tailcall_dump (gdbarch, result->call_site[idx]);
-	  fputc_unfiltered ('\n', gdb_stdlog);
-	}
-
-      return;
-    }
-
-  if (entry_values_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog, "tailcall: compare:");
-      for (idx = 0; idx < length; idx++)
-	tailcall_dump (gdbarch, chain->at (idx));
-      fputc_unfiltered ('\n', gdb_stdlog);
-    }
-
-  /* Intersect callers.  */
-
-  callers = std::min ((long) (*resultp)->callers, length);
-  for (idx = 0; idx < callers; idx++)
-    if ((*resultp)->call_site[idx] != chain->at (idx))
-      {
-	(*resultp)->callers = idx;
-	break;
-      }
-
-  /* Intersect callees.  */
-
-  callees = std::min ((long) (*resultp)->callees, length);
-  for (idx = 0; idx < callees; idx++)
-    if ((*resultp)->call_site[(*resultp)->length - 1 - idx]
-	!= chain->at (length - 1 - idx))
-      {
-	(*resultp)->callees = idx;
-	break;
-      }
-
-  if (entry_values_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog, "tailcall: reduced:");
-      for (idx = 0; idx < (*resultp)->callers; idx++)
-	tailcall_dump (gdbarch, (*resultp)->call_site[idx]);
-      fputs_unfiltered (" |", gdb_stdlog);
-      for (idx = 0; idx < (*resultp)->callees; idx++)
-	tailcall_dump (gdbarch,
-		       (*resultp)->call_site[(*resultp)->length
-					     - (*resultp)->callees + idx]);
-      fputc_unfiltered ('\n', gdb_stdlog);
-    }
-
-  if ((*resultp)->callers == 0 && (*resultp)->callees == 0)
-    {
-      /* There are no common callers or callees.  It could be also a direct
-	 call (which has length 0) with ambiguous possibility of an indirect
-	 call - CALLERS == CALLEES == 0 is valid during the first allocation
-	 but any subsequence processing of such entry means ambiguity.  */
-      resultp->reset (NULL);
-      return;
-    }
-
-  /* See call_site_find_chain_1 why there is no way to reach the bottom callee
-     PC again.  In such case there must be two different code paths to reach
-     it.  CALLERS + CALLEES equal to LENGTH in the case of self tail-call.  */
-  gdb_assert ((*resultp)->callers + (*resultp)->callees <= (*resultp)->length);
-}
-
-/* Create and return call_site_chain for CALLER_PC and CALLEE_PC.  All the
-   assumed frames between them use GDBARCH.  Use depth first search so we can
-   keep single CHAIN of call_site's back to CALLER_PC.  Function recursion
-   would have needless GDB stack overhead.  Caller is responsible for xfree of
-   the returned result.  Any unreliability results in thrown
-   NO_ENTRY_VALUE_ERROR.  */
-
-static struct call_site_chain *
-call_site_find_chain_1 (struct gdbarch *gdbarch, CORE_ADDR caller_pc,
-			CORE_ADDR callee_pc)
-{
-  CORE_ADDR save_callee_pc = callee_pc;
-  gdb::unique_xmalloc_ptr<struct call_site_chain> retval;
-  struct call_site *call_site;
-
-  /* CHAIN contains only the intermediate CALL_SITEs.  Neither CALLER_PC's
-     call_site nor any possible call_site at CALLEE_PC's function is there.
-     Any CALL_SITE in CHAIN will be iterated to its siblings - via
-     TAIL_CALL_NEXT.  This is inappropriate for CALLER_PC's call_site.  */
-  std::vector<struct call_site *> chain;
-
-  /* We are not interested in the specific PC inside the callee function.  */
-  callee_pc = get_pc_function_start (callee_pc);
-  if (callee_pc == 0)
-    throw_error (NO_ENTRY_VALUE_ERROR, _("Unable to find function for PC %s"),
-		 paddress (gdbarch, save_callee_pc));
-
-  /* Mark CALL_SITEs so we do not visit the same ones twice.  */
-  std::unordered_set<CORE_ADDR> addr_hash;
-
-  /* Do not push CALL_SITE to CHAIN.  Push there only the first tail call site
-     at the target's function.  All the possible tail call sites in the
-     target's function will get iterated as already pushed into CHAIN via their
-     TAIL_CALL_NEXT.  */
-  call_site = call_site_for_pc (gdbarch, caller_pc);
-
-  while (call_site)
-    {
-      CORE_ADDR target_func_addr;
-      struct call_site *target_call_site;
-
-      /* CALLER_FRAME with registers is not available for tail-call jumped
-	 frames.  */
-      target_func_addr = call_site_to_target_addr (gdbarch, call_site, NULL);
-
-      if (target_func_addr == callee_pc)
-	{
-	  chain_candidate (gdbarch, &retval, &chain);
-	  if (retval == NULL)
-	    break;
-
-	  /* There is no way to reach CALLEE_PC again as we would prevent
-	     entering it twice as being already marked in ADDR_HASH.  */
-	  target_call_site = NULL;
-	}
-      else
-	{
-	  struct symbol *target_func;
-
-	  target_func = func_addr_to_tail_call_list (gdbarch, target_func_addr);
-	  target_call_site = TYPE_TAIL_CALL_LIST (SYMBOL_TYPE (target_func));
-	}
-
-      do
-	{
-	  /* Attempt to visit TARGET_CALL_SITE.  */
-
-	  if (target_call_site)
-	    {
-	      if (addr_hash.insert (target_call_site->pc).second)
-		{
-		  /* Successfully entered TARGET_CALL_SITE.  */
-
-		  chain.push_back (target_call_site);
-		  break;
-		}
-	    }
-
-	  /* Backtrack (without revisiting the originating call_site).  Try the
-	     callers's sibling; if there isn't any try the callers's callers's
-	     sibling etc.  */
-
-	  target_call_site = NULL;
-	  while (!chain.empty ())
-	    {
-	      call_site = chain.back ();
-	      chain.pop_back ();
-
-	      size_t removed = addr_hash.erase (call_site->pc);
-	      gdb_assert (removed == 1);
-
-	      target_call_site = call_site->tail_call_next;
-	      if (target_call_site)
-		break;
-	    }
-	}
-      while (target_call_site);
-
-      if (chain.empty ())
-	call_site = NULL;
-      else
-	call_site = chain.back ();
-    }
-
-  if (retval == NULL)
-    {
-      struct bound_minimal_symbol msym_caller, msym_callee;
-      
-      msym_caller = lookup_minimal_symbol_by_pc (caller_pc);
-      msym_callee = lookup_minimal_symbol_by_pc (callee_pc);
-      throw_error (NO_ENTRY_VALUE_ERROR,
-		   _("There are no unambiguously determinable intermediate "
-		     "callers or callees between caller function \"%s\" at %s "
-		     "and callee function \"%s\" at %s"),
-		   (msym_caller.minsym == NULL
-		    ? "???" : msym_caller.minsym->print_name ()),
-		   paddress (gdbarch, caller_pc),
-		   (msym_callee.minsym == NULL
-		    ? "???" : msym_callee.minsym->print_name ()),
-		   paddress (gdbarch, callee_pc));
-    }
-
-  return retval.release ();
-}
-
-/* Create and return call_site_chain for CALLER_PC and CALLEE_PC.  All the
-   assumed frames between them use GDBARCH.  If valid call_site_chain cannot be
-   constructed return NULL.  Caller is responsible for xfree of the returned
-   result.  */
-
-struct call_site_chain *
-call_site_find_chain (struct gdbarch *gdbarch, CORE_ADDR caller_pc,
-		      CORE_ADDR callee_pc)
-{
-  struct call_site_chain *retval = NULL;
-
-  try
-    {
-      retval = call_site_find_chain_1 (gdbarch, caller_pc, callee_pc);
-    }
-  catch (const gdb_exception_error &e)
-    {
-      if (e.error == NO_ENTRY_VALUE_ERROR)
-	{
-	  if (entry_values_debug)
-	    exception_print (gdb_stdout, e);
-
-	  return NULL;
-	}
-      else
-	throw;
-    }
-
-  return retval;
-}
-
-/* Return 1 if KIND and KIND_U match PARAMETER.  Return 0 otherwise.  */
-
-static int
-call_site_parameter_matches (struct call_site_parameter *parameter,
-			     enum call_site_parameter_kind kind,
-			     union call_site_parameter_u kind_u)
-{
-  if (kind == parameter->kind)
-    switch (kind)
-      {
-      case CALL_SITE_PARAMETER_DWARF_REG:
-	return kind_u.dwarf_reg == parameter->u.dwarf_reg;
-      case CALL_SITE_PARAMETER_FB_OFFSET:
-	return kind_u.fb_offset == parameter->u.fb_offset;
-      case CALL_SITE_PARAMETER_PARAM_OFFSET:
-	return kind_u.param_cu_off == parameter->u.param_cu_off;
-      }
-  return 0;
-}
-
-/* Fetch call_site_parameter from caller matching KIND and KIND_U.
-   FRAME is for callee.
-
-   Function always returns non-NULL, it throws NO_ENTRY_VALUE_ERROR
-   otherwise.  */
-
-static struct call_site_parameter *
-dwarf_expr_reg_to_entry_parameter (struct frame_info *frame,
-				   enum call_site_parameter_kind kind,
-				   union call_site_parameter_u kind_u,
-				   struct dwarf2_per_cu_data **per_cu_return)
-{
-  CORE_ADDR func_addr, caller_pc;
-  struct gdbarch *gdbarch;
-  struct frame_info *caller_frame;
-  struct call_site *call_site;
-  int iparams;
-  /* Initialize it just to avoid a GCC false warning.  */
-  struct call_site_parameter *parameter = NULL;
-  CORE_ADDR target_addr;
-
-  while (get_frame_type (frame) == INLINE_FRAME)
-    {
-      frame = get_prev_frame (frame);
-      gdb_assert (frame != NULL);
-    }
-
-  func_addr = get_frame_func (frame);
-  gdbarch = get_frame_arch (frame);
-  caller_frame = get_prev_frame (frame);
-  if (gdbarch != frame_unwind_arch (frame))
-    {
-      struct bound_minimal_symbol msym
-	= lookup_minimal_symbol_by_pc (func_addr);
-      struct gdbarch *caller_gdbarch = frame_unwind_arch (frame);
-
-      throw_error (NO_ENTRY_VALUE_ERROR,
-		   _("DW_OP_entry_value resolving callee gdbarch %s "
-		     "(of %s (%s)) does not match caller gdbarch %s"),
-		   gdbarch_bfd_arch_info (gdbarch)->printable_name,
-		   paddress (gdbarch, func_addr),
-		   (msym.minsym == NULL ? "???"
-		    : msym.minsym->print_name ()),
-		   gdbarch_bfd_arch_info (caller_gdbarch)->printable_name);
-    }
-
-  if (caller_frame == NULL)
-    {
-      struct bound_minimal_symbol msym
-	= lookup_minimal_symbol_by_pc (func_addr);
-
-      throw_error (NO_ENTRY_VALUE_ERROR, _("DW_OP_entry_value resolving "
-					   "requires caller of %s (%s)"),
-		   paddress (gdbarch, func_addr),
-		   (msym.minsym == NULL ? "???"
-		    : msym.minsym->print_name ()));
-    }
-  caller_pc = get_frame_pc (caller_frame);
-  call_site = call_site_for_pc (gdbarch, caller_pc);
-
-  target_addr = call_site_to_target_addr (gdbarch, call_site, caller_frame);
-  if (target_addr != func_addr)
-    {
-      struct minimal_symbol *target_msym, *func_msym;
-
-      target_msym = lookup_minimal_symbol_by_pc (target_addr).minsym;
-      func_msym = lookup_minimal_symbol_by_pc (func_addr).minsym;
-      throw_error (NO_ENTRY_VALUE_ERROR,
-		   _("DW_OP_entry_value resolving expects callee %s at %s "
-		     "but the called frame is for %s at %s"),
-		   (target_msym == NULL ? "???"
-					: target_msym->print_name ()),
-		   paddress (gdbarch, target_addr),
-		   func_msym == NULL ? "???" : func_msym->print_name (),
-		   paddress (gdbarch, func_addr));
-    }
-
-  /* No entry value based parameters would be reliable if this function can
-     call itself via tail calls.  */
-  func_verify_no_selftailcall (gdbarch, func_addr);
-
-  for (iparams = 0; iparams < call_site->parameter_count; iparams++)
-    {
-      parameter = &call_site->parameter[iparams];
-      if (call_site_parameter_matches (parameter, kind, kind_u))
-	break;
-    }
-  if (iparams == call_site->parameter_count)
-    {
-      struct minimal_symbol *msym
-	= lookup_minimal_symbol_by_pc (caller_pc).minsym;
-
-      /* DW_TAG_call_site_parameter will be missing just if GCC could not
-	 determine its value.  */
-      throw_error (NO_ENTRY_VALUE_ERROR, _("Cannot find matching parameter "
-					   "at DW_TAG_call_site %s at %s"),
-		   paddress (gdbarch, caller_pc),
-		   msym == NULL ? "???" : msym->print_name ()); 
-    }
-
-  *per_cu_return = call_site->per_cu;
-  return parameter;
-}
-
-/* Return value for PARAMETER matching DEREF_SIZE.  If DEREF_SIZE is -1, return
-   the normal DW_AT_call_value block.  Otherwise return the
-   DW_AT_call_data_value (dereferenced) block.
-
-   TYPE and CALLER_FRAME specify how to evaluate the DWARF block into returned
-   struct value.
-
-   Function always returns non-NULL, non-optimized out value.  It throws
-   NO_ENTRY_VALUE_ERROR if it cannot resolve the value for any reason.  */
-
-static struct value *
-dwarf_entry_parameter_to_value (struct call_site_parameter *parameter,
-				CORE_ADDR deref_size, struct type *type,
-				struct frame_info *caller_frame,
-				struct dwarf2_per_cu_data *per_cu)
-{
-  const gdb_byte *data_src;
-  gdb_byte *data;
-  size_t size;
-
-  data_src = deref_size == -1 ? parameter->value : parameter->data_value;
-  size = deref_size == -1 ? parameter->value_size : parameter->data_value_size;
-
-  /* DEREF_SIZE size is not verified here.  */
-  if (data_src == NULL)
-    throw_error (NO_ENTRY_VALUE_ERROR,
-		 _("Cannot resolve DW_AT_call_data_value"));
-
-  /* DW_AT_call_value is a DWARF expression, not a DWARF
-     location.  Postprocessing of DWARF_VALUE_MEMORY would lose the type from
-     DWARF block.  */
-  data = (gdb_byte *) alloca (size + 1);
-  memcpy (data, data_src, size);
-  data[size] = DW_OP_stack_value;
-
-  return dwarf2_evaluate_loc_desc (type, caller_frame, data, size + 1, per_cu);
-}
-
-/* VALUE must be of type lval_computed with entry_data_value_funcs.  Perform
-   the indirect method on it, that is use its stored target value, the sole
-   purpose of entry_data_value_funcs..  */
-
-static struct value *
-entry_data_value_coerce_ref (const struct value *value)
-{
-  struct type *checked_type = check_typedef (value_type (value));
-  struct value *target_val;
-
-  if (!TYPE_IS_REFERENCE (checked_type))
-    return NULL;
-
-  target_val = (struct value *) value_computed_closure (value);
-  value_incref (target_val);
-  return target_val;
-}
-
-/* Implement copy_closure.  */
-
-static void *
-entry_data_value_copy_closure (const struct value *v)
-{
-  struct value *target_val = (struct value *) value_computed_closure (v);
-
-  value_incref (target_val);
-  return target_val;
-}
-
-/* Implement free_closure.  */
-
-static void
-entry_data_value_free_closure (struct value *v)
-{
-  struct value *target_val = (struct value *) value_computed_closure (v);
-
-  value_decref (target_val);
-}
-
-/* Vector for methods for an entry value reference where the referenced value
-   is stored in the caller.  On the first dereference use
-   DW_AT_call_data_value in the caller.  */
-
-static const struct lval_funcs entry_data_value_funcs =
-{
-  NULL,	/* read */
-  NULL,	/* write */
-  NULL,	/* indirect */
-  entry_data_value_coerce_ref,
-  NULL,	/* check_synthetic_pointer */
-  entry_data_value_copy_closure,
-  entry_data_value_free_closure
-};
-
-/* Read parameter of TYPE at (callee) FRAME's function entry.  KIND and KIND_U
-   are used to match DW_AT_location at the caller's
-   DW_TAG_call_site_parameter.
-
-   Function always returns non-NULL value.  It throws NO_ENTRY_VALUE_ERROR if it
-   cannot resolve the parameter for any reason.  */
-
-static struct value *
-value_of_dwarf_reg_entry (struct type *type, struct frame_info *frame,
-			  enum call_site_parameter_kind kind,
-			  union call_site_parameter_u kind_u)
-{
-  struct type *checked_type = check_typedef (type);
-  struct type *target_type = TYPE_TARGET_TYPE (checked_type);
-  struct frame_info *caller_frame = get_prev_frame (frame);
-  struct value *outer_val, *target_val, *val;
-  struct call_site_parameter *parameter;
-  struct dwarf2_per_cu_data *caller_per_cu;
-
-  parameter = dwarf_expr_reg_to_entry_parameter (frame, kind, kind_u,
-						 &caller_per_cu);
-
-  outer_val = dwarf_entry_parameter_to_value (parameter, -1 /* deref_size */,
-					      type, caller_frame,
-					      caller_per_cu);
-
-  /* Check if DW_AT_call_data_value cannot be used.  If it should be
-     used and it is not available do not fall back to OUTER_VAL - dereferencing
-     TYPE_CODE_REF with non-entry data value would give current value - not the
-     entry value.  */
-
-  if (!TYPE_IS_REFERENCE (checked_type)
-      || TYPE_TARGET_TYPE (checked_type) == NULL)
-    return outer_val;
-
-  target_val = dwarf_entry_parameter_to_value (parameter,
-					       TYPE_LENGTH (target_type),
-					       target_type, caller_frame,
-					       caller_per_cu);
-
-  val = allocate_computed_value (type, &entry_data_value_funcs,
-				 release_value (target_val).release ());
-
-  /* Copy the referencing pointer to the new computed value.  */
-  memcpy (value_contents_raw (val), value_contents_raw (outer_val),
-	  TYPE_LENGTH (checked_type));
-  set_value_lazy (val, 0);
-
-  return val;
-}
-
-/* Read parameter of TYPE at (callee) FRAME's function entry.  DATA and
-   SIZE are DWARF block used to match DW_AT_location at the caller's
-   DW_TAG_call_site_parameter.
-
-   Function always returns non-NULL value.  It throws NO_ENTRY_VALUE_ERROR if it
-   cannot resolve the parameter for any reason.  */
-
-static struct value *
-value_of_dwarf_block_entry (struct type *type, struct frame_info *frame,
-			    const gdb_byte *block, size_t block_len)
-{
-  union call_site_parameter_u kind_u;
-
-  kind_u.dwarf_reg = dwarf_block_to_dwarf_reg (block, block + block_len);
-  if (kind_u.dwarf_reg != -1)
-    return value_of_dwarf_reg_entry (type, frame, CALL_SITE_PARAMETER_DWARF_REG,
-				     kind_u);
-
-  if (dwarf_block_to_fb_offset (block, block + block_len, &kind_u.fb_offset))
-    return value_of_dwarf_reg_entry (type, frame, CALL_SITE_PARAMETER_FB_OFFSET,
-                                     kind_u);
-
-  /* This can normally happen - throw NO_ENTRY_VALUE_ERROR to get the message
-     suppressed during normal operation.  The expression can be arbitrary if
-     there is no caller-callee entry value binding expected.  */
-  throw_error (NO_ENTRY_VALUE_ERROR,
-	       _("DWARF-2 expression error: DW_OP_entry_value is supported "
-		 "only for single DW_OP_reg* or for DW_OP_fbreg(*)"));
-}
-
-struct piece_closure
-{
-  /* Reference count.  */
-  int refc = 0;
-
-  /* The CU from which this closure's expression came.  */
-  struct dwarf2_per_cu_data *per_cu = NULL;
-
-  /* The pieces describing this variable.  */
-  std::vector<dwarf_expr_piece> pieces;
-
-  /* Frame ID of frame to which a register value is relative, used
-     only by DWARF_VALUE_REGISTER.  */
-  struct frame_id frame_id;
-};
-
-/* Allocate a closure for a value formed from separately-described
-   PIECES.  */
-
-static struct piece_closure *
-allocate_piece_closure (struct dwarf2_per_cu_data *per_cu,
-			std::vector<dwarf_expr_piece> &&pieces,
-			struct frame_info *frame)
-{
-  struct piece_closure *c = new piece_closure;
-
-  c->refc = 1;
-  c->per_cu = per_cu;
-  c->pieces = std::move (pieces);
-  if (frame == NULL)
-    c->frame_id = null_frame_id;
-  else
-    c->frame_id = get_frame_id (frame);
-
-  for (dwarf_expr_piece &piece : c->pieces)
-    if (piece.location == DWARF_VALUE_STACK)
-      value_incref (piece.v.value);
-
-  return c;
-}
-
-/* Return the number of bytes overlapping a contiguous chunk of N_BITS
-   bits whose first bit is located at bit offset START.  */
-
-static size_t
-bits_to_bytes (ULONGEST start, ULONGEST n_bits)
-{
-  return (start % 8 + n_bits + 7) / 8;
-}
-
-/* Read or write a pieced value V.  If FROM != NULL, operate in "write
-   mode": copy FROM into the pieces comprising V.  If FROM == NULL,
-   operate in "read mode": fetch the contents of the (lazy) value V by
-   composing it from its pieces.  */
-
-static void
-rw_pieced_value (struct value *v, struct value *from)
-{
-  int i;
-  LONGEST offset = 0, max_offset;
-  ULONGEST bits_to_skip;
-  gdb_byte *v_contents;
-  const gdb_byte *from_contents;
-  struct piece_closure *c
-    = (struct piece_closure *) value_computed_closure (v);
-  gdb::byte_vector buffer;
-  bool bits_big_endian = type_byte_order (value_type (v)) == BFD_ENDIAN_BIG;
-
-  if (from != NULL)
-    {
-      from_contents = value_contents (from);
-      v_contents = NULL;
-    }
-  else
-    {
-      if (value_type (v) != value_enclosing_type (v))
-	internal_error (__FILE__, __LINE__,
-			_("Should not be able to create a lazy value with "
-			  "an enclosing type"));
-      v_contents = value_contents_raw (v);
-      from_contents = NULL;
-    }
-
-  bits_to_skip = 8 * value_offset (v);
-  if (value_bitsize (v))
-    {
-      bits_to_skip += (8 * value_offset (value_parent (v))
-		       + value_bitpos (v));
-      if (from != NULL
-	  && (type_byte_order (value_type (from))
-	      == BFD_ENDIAN_BIG))
-	{
-	  /* Use the least significant bits of FROM.  */
-	  max_offset = 8 * TYPE_LENGTH (value_type (from));
-	  offset = max_offset - value_bitsize (v);
-	}
-      else
-	max_offset = value_bitsize (v);
-    }
-  else
-    max_offset = 8 * TYPE_LENGTH (value_type (v));
-
-  /* Advance to the first non-skipped piece.  */
-  for (i = 0; i < c->pieces.size () && bits_to_skip >= c->pieces[i].size; i++)
-    bits_to_skip -= c->pieces[i].size;
-
-  for (; i < c->pieces.size () && offset < max_offset; i++)
-    {
-      struct dwarf_expr_piece *p = &c->pieces[i];
-      size_t this_size_bits, this_size;
-
-      this_size_bits = p->size - bits_to_skip;
-      if (this_size_bits > max_offset - offset)
-	this_size_bits = max_offset - offset;
-
-      switch (p->location)
-	{
-	case DWARF_VALUE_REGISTER:
-	  {
-	    struct frame_info *frame = frame_find_by_id (c->frame_id);
-	    struct gdbarch *arch = get_frame_arch (frame);
-	    int gdb_regnum = dwarf_reg_to_regnum_or_error (arch, p->v.regno);
-	    ULONGEST reg_bits = 8 * register_size (arch, gdb_regnum);
-	    int optim, unavail;
-
-	    if (gdbarch_byte_order (arch) == BFD_ENDIAN_BIG
-		&& p->offset + p->size < reg_bits)
-	      {
-		/* Big-endian, and we want less than full size.  */
-		bits_to_skip += reg_bits - (p->offset + p->size);
-	      }
-	    else
-	      bits_to_skip += p->offset;
-
-	    this_size = bits_to_bytes (bits_to_skip, this_size_bits);
-	    buffer.resize (this_size);
-
-	    if (from == NULL)
-	      {
-		/* Read mode.  */
-		if (!get_frame_register_bytes (frame, gdb_regnum,
-					       bits_to_skip / 8,
-					       this_size, buffer.data (),
-					       &optim, &unavail))
-		  {
-		    if (optim)
-		      mark_value_bits_optimized_out (v, offset,
-						     this_size_bits);
-		    if (unavail)
-		      mark_value_bits_unavailable (v, offset,
-						   this_size_bits);
-		    break;
-		  }
-
-		copy_bitwise (v_contents, offset,
-			      buffer.data (), bits_to_skip % 8,
-			      this_size_bits, bits_big_endian);
-	      }
-	    else
-	      {
-		/* Write mode.  */
-		if (bits_to_skip % 8 != 0 || this_size_bits % 8 != 0)
-		  {
-		    /* Data is copied non-byte-aligned into the register.
-		       Need some bits from original register value.  */
-		    get_frame_register_bytes (frame, gdb_regnum,
-					      bits_to_skip / 8,
-					      this_size, buffer.data (),
-					      &optim, &unavail);
-		    if (optim)
-		      throw_error (OPTIMIZED_OUT_ERROR,
-				   _("Can't do read-modify-write to "
-				     "update bitfield; containing word "
-				     "has been optimized out"));
-		    if (unavail)
-		      throw_error (NOT_AVAILABLE_ERROR,
-				   _("Can't do read-modify-write to "
-				     "update bitfield; containing word "
-				     "is unavailable"));
-		  }
-
-		copy_bitwise (buffer.data (), bits_to_skip % 8,
-			      from_contents, offset,
-			      this_size_bits, bits_big_endian);
-		put_frame_register_bytes (frame, gdb_regnum,
-					  bits_to_skip / 8,
-					  this_size, buffer.data ());
-	      }
-	  }
-	  break;
-
-	case DWARF_VALUE_MEMORY:
-	  {
-	    bits_to_skip += p->offset;
-
-	    CORE_ADDR start_addr = p->v.mem.addr + bits_to_skip / 8;
-
-	    if (bits_to_skip % 8 == 0 && this_size_bits % 8 == 0
-		&& offset % 8 == 0)
-	      {
-		/* Everything is byte-aligned; no buffer needed.  */
-		if (from != NULL)
-		  write_memory_with_notification (start_addr,
-						  (from_contents
-						   + offset / 8),
-						  this_size_bits / 8);
-		else
-		  read_value_memory (v, offset,
-				     p->v.mem.in_stack_memory,
-				     p->v.mem.addr + bits_to_skip / 8,
-				     v_contents + offset / 8,
-				     this_size_bits / 8);
-		break;
-	      }
-
-	    this_size = bits_to_bytes (bits_to_skip, this_size_bits);
-	    buffer.resize (this_size);
-
-	    if (from == NULL)
-	      {
-		/* Read mode.  */
-		read_value_memory (v, offset,
-				   p->v.mem.in_stack_memory,
-				   p->v.mem.addr + bits_to_skip / 8,
-				   buffer.data (), this_size);
-		copy_bitwise (v_contents, offset,
-			      buffer.data (), bits_to_skip % 8,
-			      this_size_bits, bits_big_endian);
-	      }
-	    else
-	      {
-		/* Write mode.  */
-		if (bits_to_skip % 8 != 0 || this_size_bits % 8 != 0)
-		  {
-		    if (this_size <= 8)
-		      {
-			/* Perform a single read for small sizes.  */
-			read_memory (start_addr, buffer.data (),
-				     this_size);
-		      }
-		    else
-		      {
-			/* Only the first and last bytes can possibly have
-			   any bits reused.  */
-			read_memory (start_addr, buffer.data (), 1);
-			read_memory (start_addr + this_size - 1,
-				     &buffer[this_size - 1], 1);
-		      }
-		  }
-
-		copy_bitwise (buffer.data (), bits_to_skip % 8,
-			      from_contents, offset,
-			      this_size_bits, bits_big_endian);
-		write_memory_with_notification (start_addr,
-						buffer.data (),
-						this_size);
-	      }
-	  }
-	  break;
-
-	case DWARF_VALUE_STACK:
-	  {
-	    if (from != NULL)
-	      {
-		mark_value_bits_optimized_out (v, offset, this_size_bits);
-		break;
-	      }
-
-	    struct objfile *objfile = dwarf2_per_cu_objfile (c->per_cu);
-	    struct gdbarch *objfile_gdbarch = get_objfile_arch (objfile);
-	    ULONGEST stack_value_size_bits
-	      = 8 * TYPE_LENGTH (value_type (p->v.value));
-
-	    /* Use zeroes if piece reaches beyond stack value.  */
-	    if (p->offset + p->size > stack_value_size_bits)
-	      break;
-
-	    /* Piece is anchored at least significant bit end.  */
-	    if (gdbarch_byte_order (objfile_gdbarch) == BFD_ENDIAN_BIG)
-	      bits_to_skip += stack_value_size_bits - p->offset - p->size;
-	    else
-	      bits_to_skip += p->offset;
-
-	    copy_bitwise (v_contents, offset,
-			  value_contents_all (p->v.value),
-			  bits_to_skip,
-			  this_size_bits, bits_big_endian);
-	  }
-	  break;
-
-	case DWARF_VALUE_LITERAL:
-	  {
-	    if (from != NULL)
-	      {
-		mark_value_bits_optimized_out (v, offset, this_size_bits);
-		break;
-	      }
-
-	    ULONGEST literal_size_bits = 8 * p->v.literal.length;
-	    size_t n = this_size_bits;
-
-	    /* Cut off at the end of the implicit value.  */
-	    bits_to_skip += p->offset;
-	    if (bits_to_skip >= literal_size_bits)
-	      break;
-	    if (n > literal_size_bits - bits_to_skip)
-	      n = literal_size_bits - bits_to_skip;
-
-	    copy_bitwise (v_contents, offset,
-			  p->v.literal.data, bits_to_skip,
-			  n, bits_big_endian);
-	  }
-	  break;
-
-	case DWARF_VALUE_IMPLICIT_POINTER:
-	    if (from != NULL)
-	      {
-		mark_value_bits_optimized_out (v, offset, this_size_bits);
-		break;
-	      }
-
-	  /* These bits show up as zeros -- but do not cause the value to
-	     be considered optimized-out.  */
-	  break;
-
-	case DWARF_VALUE_OPTIMIZED_OUT:
-	  mark_value_bits_optimized_out (v, offset, this_size_bits);
-	  break;
-
-	default:
-	  internal_error (__FILE__, __LINE__, _("invalid location type"));
-	}
-
-      offset += this_size_bits;
-      bits_to_skip = 0;
-    }
-}
-
-
-static void
-read_pieced_value (struct value *v)
-{
-  rw_pieced_value (v, NULL);
-}
-
-static void
-write_pieced_value (struct value *to, struct value *from)
-{
-  rw_pieced_value (to, from);
-}
-
-/* An implementation of an lval_funcs method to see whether a value is
-   a synthetic pointer.  */
-
-static int
-check_pieced_synthetic_pointer (const struct value *value, LONGEST bit_offset,
-				int bit_length)
-{
-  struct piece_closure *c
-    = (struct piece_closure *) value_computed_closure (value);
-  int i;
-
-  bit_offset += 8 * value_offset (value);
-  if (value_bitsize (value))
-    bit_offset += value_bitpos (value);
-
-  for (i = 0; i < c->pieces.size () && bit_length > 0; i++)
-    {
-      struct dwarf_expr_piece *p = &c->pieces[i];
-      size_t this_size_bits = p->size;
-
-      if (bit_offset > 0)
-	{
-	  if (bit_offset >= this_size_bits)
-	    {
-	      bit_offset -= this_size_bits;
-	      continue;
-	    }
-
-	  bit_length -= this_size_bits - bit_offset;
-	  bit_offset = 0;
-	}
-      else
-	bit_length -= this_size_bits;
-
-      if (p->location != DWARF_VALUE_IMPLICIT_POINTER)
-	return 0;
-    }
-
-  return 1;
-}
-
-/* A wrapper function for get_frame_address_in_block.  */
-
-static CORE_ADDR
-get_frame_address_in_block_wrapper (void *baton)
-{
-  return get_frame_address_in_block ((struct frame_info *) baton);
-}
-
-/* Fetch a DW_AT_const_value through a synthetic pointer.  */
-
-static struct value *
-fetch_const_value_from_synthetic_pointer (sect_offset die, LONGEST byte_offset,
-					  struct dwarf2_per_cu_data *per_cu,
-					  struct type *type)
-{
-  struct value *result = NULL;
-  const gdb_byte *bytes;
-  LONGEST len;
-
-  auto_obstack temp_obstack;
-  bytes = dwarf2_fetch_constant_bytes (die, per_cu, &temp_obstack, &len);
-
-  if (bytes != NULL)
-    {
-      if (byte_offset >= 0
-	  && byte_offset + TYPE_LENGTH (TYPE_TARGET_TYPE (type)) <= len)
-	{
-	  bytes += byte_offset;
-	  result = value_from_contents (TYPE_TARGET_TYPE (type), bytes);
-	}
-      else
-	invalid_synthetic_pointer ();
-    }
-  else
-    result = allocate_optimized_out_value (TYPE_TARGET_TYPE (type));
-
-  return result;
-}
-
-/* Fetch the value pointed to by a synthetic pointer.  */
-
-static struct value *
-indirect_synthetic_pointer (sect_offset die, LONGEST byte_offset,
-			    struct dwarf2_per_cu_data *per_cu,
-			    struct frame_info *frame, struct type *type,
-			    bool resolve_abstract_p)
-{
-  /* Fetch the location expression of the DIE we're pointing to.  */
-  struct dwarf2_locexpr_baton baton
-    = dwarf2_fetch_die_loc_sect_off (die, per_cu,
-				     get_frame_address_in_block_wrapper, frame,
-				     resolve_abstract_p);
-
-  /* Get type of pointed-to DIE.  */
-  struct type *orig_type = dwarf2_fetch_die_type_sect_off (die, per_cu);
-  if (orig_type == NULL)
-    invalid_synthetic_pointer ();
-
-  /* If pointed-to DIE has a DW_AT_location, evaluate it and return the
-     resulting value.  Otherwise, it may have a DW_AT_const_value instead,
-     or it may've been optimized out.  */
-  if (baton.data != NULL)
-    return dwarf2_evaluate_loc_desc_full (orig_type, frame, baton.data,
-					  baton.size, baton.per_cu,
-					  TYPE_TARGET_TYPE (type),
-					  byte_offset);
-  else
-    return fetch_const_value_from_synthetic_pointer (die, byte_offset, per_cu,
-						     type);
-}
-
-/* An implementation of an lval_funcs method to indirect through a
-   pointer.  This handles the synthetic pointer case when needed.  */
-
-static struct value *
-indirect_pieced_value (struct value *value)
-{
-  struct piece_closure *c
-    = (struct piece_closure *) value_computed_closure (value);
-  struct type *type;
-  struct frame_info *frame;
-  int i, bit_length;
-  LONGEST bit_offset;
-  struct dwarf_expr_piece *piece = NULL;
-  LONGEST byte_offset;
-  enum bfd_endian byte_order;
-
-  type = check_typedef (value_type (value));
-  if (TYPE_CODE (type) != TYPE_CODE_PTR)
-    return NULL;
-
-  bit_length = 8 * TYPE_LENGTH (type);
-  bit_offset = 8 * value_offset (value);
-  if (value_bitsize (value))
-    bit_offset += value_bitpos (value);
-
-  for (i = 0; i < c->pieces.size () && bit_length > 0; i++)
-    {
-      struct dwarf_expr_piece *p = &c->pieces[i];
-      size_t this_size_bits = p->size;
-
-      if (bit_offset > 0)
-	{
-	  if (bit_offset >= this_size_bits)
-	    {
-	      bit_offset -= this_size_bits;
-	      continue;
-	    }
-
-	  bit_length -= this_size_bits - bit_offset;
-	  bit_offset = 0;
-	}
-      else
-	bit_length -= this_size_bits;
-
-      if (p->location != DWARF_VALUE_IMPLICIT_POINTER)
-	return NULL;
-
-      if (bit_length != 0)
-	error (_("Invalid use of DW_OP_implicit_pointer"));
-
-      piece = p;
-      break;
-    }
-
-  gdb_assert (piece != NULL);
-  frame = get_selected_frame (_("No frame selected."));
-
-  /* This is an offset requested by GDB, such as value subscripts.
-     However, due to how synthetic pointers are implemented, this is
-     always presented to us as a pointer type.  This means we have to
-     sign-extend it manually as appropriate.  Use raw
-     extract_signed_integer directly rather than value_as_address and
-     sign extend afterwards on architectures that would need it
-     (mostly everywhere except MIPS, which has signed addresses) as
-     the later would go through gdbarch_pointer_to_address and thus
-     return a CORE_ADDR with high bits set on architectures that
-     encode address spaces and other things in CORE_ADDR.  */
-  byte_order = gdbarch_byte_order (get_frame_arch (frame));
-  byte_offset = extract_signed_integer (value_contents (value),
-					TYPE_LENGTH (type), byte_order);
-  byte_offset += piece->v.ptr.offset;
-
-  return indirect_synthetic_pointer (piece->v.ptr.die_sect_off,
-				     byte_offset, c->per_cu,
-				     frame, type);
-}
-
-/* Implementation of the coerce_ref method of lval_funcs for synthetic C++
-   references.  */
-
-static struct value *
-coerce_pieced_ref (const struct value *value)
-{
-  struct type *type = check_typedef (value_type (value));
-
-  if (value_bits_synthetic_pointer (value, value_embedded_offset (value),
-				    TARGET_CHAR_BIT * TYPE_LENGTH (type)))
-    {
-      const struct piece_closure *closure
-	= (struct piece_closure *) value_computed_closure (value);
-      struct frame_info *frame
-	= get_selected_frame (_("No frame selected."));
-
-      /* gdb represents synthetic pointers as pieced values with a single
-	 piece.  */
-      gdb_assert (closure != NULL);
-      gdb_assert (closure->pieces.size () == 1);
-
-      return indirect_synthetic_pointer
-	(closure->pieces[0].v.ptr.die_sect_off,
-	 closure->pieces[0].v.ptr.offset,
-	 closure->per_cu, frame, type);
-    }
-  else
-    {
-      /* Else: not a synthetic reference; do nothing.  */
-      return NULL;
-    }
-}
-
-static void *
-copy_pieced_value_closure (const struct value *v)
-{
-  struct piece_closure *c
-    = (struct piece_closure *) value_computed_closure (v);
-  
-  ++c->refc;
-  return c;
-}
-
-static void
-free_pieced_value_closure (struct value *v)
-{
-  struct piece_closure *c
-    = (struct piece_closure *) value_computed_closure (v);
-
-  --c->refc;
-  if (c->refc == 0)
-    {
-      for (dwarf_expr_piece &p : c->pieces)
-	if (p.location == DWARF_VALUE_STACK)
-	  value_decref (p.v.value);
-
-      delete c;
-    }
-}
-
-/* Functions for accessing a variable described by DW_OP_piece.  */
-static const struct lval_funcs pieced_value_funcs = {
-  read_pieced_value,
-  write_pieced_value,
-  indirect_pieced_value,
-  coerce_pieced_ref,
-  check_pieced_synthetic_pointer,
-  copy_pieced_value_closure,
-  free_pieced_value_closure
-};
-
-/* Evaluate a location description, starting at DATA and with length
-   SIZE, to find the current location of variable of TYPE in the
-   context of FRAME.  If SUBOBJ_TYPE is non-NULL, return instead the
-   location of the subobject of type SUBOBJ_TYPE at byte offset
-   SUBOBJ_BYTE_OFFSET within the variable of type TYPE.  */
-
-static struct value *
-dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
-			       const gdb_byte *data, size_t size,
-			       struct dwarf2_per_cu_data *per_cu,
-			       struct type *subobj_type,
-			       LONGEST subobj_byte_offset)
-{
-  struct value *retval;
-  struct objfile *objfile = dwarf2_per_cu_objfile (per_cu);
-
-  if (subobj_type == NULL)
-    {
-      subobj_type = type;
-      subobj_byte_offset = 0;
-    }
-  else if (subobj_byte_offset < 0)
-    invalid_synthetic_pointer ();
-
-  if (size == 0)
-    return allocate_optimized_out_value (subobj_type);
-
-  dwarf_evaluate_loc_desc ctx;
-  ctx.frame = frame;
-  ctx.per_cu = per_cu;
-  ctx.obj_address = 0;
-
-  scoped_value_mark free_values;
-
-  ctx.gdbarch = get_objfile_arch (objfile);
-  ctx.addr_size = dwarf2_per_cu_addr_size (per_cu);
-  ctx.ref_addr_size = dwarf2_per_cu_ref_addr_size (per_cu);
-  ctx.offset = dwarf2_per_cu_text_offset (per_cu);
-
-  try
-    {
-      ctx.eval (data, size);
-    }
-  catch (const gdb_exception_error &ex)
-    {
-      if (ex.error == NOT_AVAILABLE_ERROR)
-	{
-	  free_values.free_to_mark ();
-	  retval = allocate_value (subobj_type);
-	  mark_value_bytes_unavailable (retval, 0,
-					TYPE_LENGTH (subobj_type));
-	  return retval;
-	}
-      else if (ex.error == NO_ENTRY_VALUE_ERROR)
-	{
-	  if (entry_values_debug)
-	    exception_print (gdb_stdout, ex);
-	  free_values.free_to_mark ();
-	  return allocate_optimized_out_value (subobj_type);
-	}
-      else
-	throw;
-    }
-
-  if (ctx.pieces.size () > 0)
-    {
-      struct piece_closure *c;
-      ULONGEST bit_size = 0;
-
-      for (dwarf_expr_piece &piece : ctx.pieces)
-	bit_size += piece.size;
-      /* Complain if the expression is larger than the size of the
-	 outer type.  */
-      if (bit_size > 8 * TYPE_LENGTH (type))
-	invalid_synthetic_pointer ();
-
-      c = allocate_piece_closure (per_cu, std::move (ctx.pieces), frame);
-      /* We must clean up the value chain after creating the piece
-	 closure but before allocating the result.  */
-      free_values.free_to_mark ();
-      retval = allocate_computed_value (subobj_type,
-					&pieced_value_funcs, c);
-      set_value_offset (retval, subobj_byte_offset);
-    }
-  else
-    {
-      switch (ctx.location)
-	{
-	case DWARF_VALUE_REGISTER:
-	  {
-	    struct gdbarch *arch = get_frame_arch (frame);
-	    int dwarf_regnum
-	      = longest_to_int (value_as_long (ctx.fetch (0)));
-	    int gdb_regnum = dwarf_reg_to_regnum_or_error (arch, dwarf_regnum);
-
-	    if (subobj_byte_offset != 0)
-	      error (_("cannot use offset on synthetic pointer to register"));
-	    free_values.free_to_mark ();
-	    retval = value_from_register (subobj_type, gdb_regnum, frame);
-	    if (value_optimized_out (retval))
-	      {
-		struct value *tmp;
-
-		/* This means the register has undefined value / was
-		   not saved.  As we're computing the location of some
-		   variable etc. in the program, not a value for
-		   inspecting a register ($pc, $sp, etc.), return a
-		   generic optimized out value instead, so that we show
-		   <optimized out> instead of <not saved>.  */
-		tmp = allocate_value (subobj_type);
-		value_contents_copy (tmp, 0, retval, 0,
-				     TYPE_LENGTH (subobj_type));
-		retval = tmp;
-	      }
-	  }
-	  break;
-
-	case DWARF_VALUE_MEMORY:
-	  {
-	    struct type *ptr_type;
-	    CORE_ADDR address = ctx.fetch_address (0);
-	    bool in_stack_memory = ctx.fetch_in_stack_memory (0);
-
-	    /* DW_OP_deref_size (and possibly other operations too) may
-	       create a pointer instead of an address.  Ideally, the
-	       pointer to address conversion would be performed as part
-	       of those operations, but the type of the object to
-	       which the address refers is not known at the time of
-	       the operation.  Therefore, we do the conversion here
-	       since the type is readily available.  */
-
-	    switch (TYPE_CODE (subobj_type))
-	      {
-		case TYPE_CODE_FUNC:
-		case TYPE_CODE_METHOD:
-		  ptr_type = builtin_type (ctx.gdbarch)->builtin_func_ptr;
-		  break;
-		default:
-		  ptr_type = builtin_type (ctx.gdbarch)->builtin_data_ptr;
-		  break;
-	      }
-	    address = value_as_address (value_from_pointer (ptr_type, address));
-
-	    free_values.free_to_mark ();
-	    retval = value_at_lazy (subobj_type,
-				    address + subobj_byte_offset);
-	    if (in_stack_memory)
-	      set_value_stack (retval, 1);
-	  }
-	  break;
-
-	case DWARF_VALUE_STACK:
-	  {
-	    struct value *value = ctx.fetch (0);
-	    size_t n = TYPE_LENGTH (value_type (value));
-	    size_t len = TYPE_LENGTH (subobj_type);
-	    size_t max = TYPE_LENGTH (type);
-	    struct gdbarch *objfile_gdbarch = get_objfile_arch (objfile);
-
-	    if (subobj_byte_offset + len > max)
-	      invalid_synthetic_pointer ();
-
-	    /* Preserve VALUE because we are going to free values back
-	       to the mark, but we still need the value contents
-	       below.  */
-	    value_ref_ptr value_holder = value_ref_ptr::new_reference (value);
-	    free_values.free_to_mark ();
-
-	    retval = allocate_value (subobj_type);
-
-	    /* The given offset is relative to the actual object.  */
-	    if (gdbarch_byte_order (objfile_gdbarch) == BFD_ENDIAN_BIG)
-	      subobj_byte_offset += n - max;
-
-	    memcpy (value_contents_raw (retval),
-		    value_contents_all (value) + subobj_byte_offset, len);
-	  }
-	  break;
-
-	case DWARF_VALUE_LITERAL:
-	  {
-	    bfd_byte *contents;
-	    size_t n = TYPE_LENGTH (subobj_type);
-
-	    if (subobj_byte_offset + n > ctx.len)
-	      invalid_synthetic_pointer ();
-
-	    free_values.free_to_mark ();
-	    retval = allocate_value (subobj_type);
-	    contents = value_contents_raw (retval);
-	    memcpy (contents, ctx.data + subobj_byte_offset, n);
-	  }
-	  break;
-
-	case DWARF_VALUE_OPTIMIZED_OUT:
-	  free_values.free_to_mark ();
-	  retval = allocate_optimized_out_value (subobj_type);
-	  break;
-
-	  /* DWARF_VALUE_IMPLICIT_POINTER was converted to a pieced
-	     operation by execute_stack_op.  */
-	case DWARF_VALUE_IMPLICIT_POINTER:
-	  /* DWARF_VALUE_OPTIMIZED_OUT can't occur in this context --
-	     it can only be encountered when making a piece.  */
-	default:
-	  internal_error (__FILE__, __LINE__, _("invalid location type"));
-	}
-    }
-
-  set_value_initialized (retval, ctx.initialized);
-
-  return retval;
-}
-
-/* The exported interface to dwarf2_evaluate_loc_desc_full; it always
-   passes 0 as the byte_offset.  */
-
-struct value *
-dwarf2_evaluate_loc_desc (struct type *type, struct frame_info *frame,
-			  const gdb_byte *data, size_t size,
-			  struct dwarf2_per_cu_data *per_cu)
-{
-  return dwarf2_evaluate_loc_desc_full (type, frame, data, size, per_cu,
-					NULL, 0);
-}
-
-/* Evaluates a dwarf expression and stores the result in VAL, expecting
-   that the dwarf expression only produces a single CORE_ADDR.  FRAME is the
-   frame in which the expression is evaluated.  ADDR is a context (location of
-   a variable) and might be needed to evaluate the location expression.
-   Returns 1 on success, 0 otherwise.   */
-
-static int
-dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton,
-			   struct frame_info *frame,
-			   CORE_ADDR addr,
-			   CORE_ADDR *valp)
-{
-  struct objfile *objfile;
-
-  if (dlbaton == NULL || dlbaton->size == 0)
-    return 0;
-
-  dwarf_evaluate_loc_desc ctx;
-
-  ctx.frame = frame;
-  ctx.per_cu = dlbaton->per_cu;
-  ctx.obj_address = addr;
-
-  objfile = dwarf2_per_cu_objfile (dlbaton->per_cu);
-
-  ctx.gdbarch = get_objfile_arch (objfile);
-  ctx.addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu);
-  ctx.ref_addr_size = dwarf2_per_cu_ref_addr_size (dlbaton->per_cu);
-  ctx.offset = dwarf2_per_cu_text_offset (dlbaton->per_cu);
-
-  try
-    {
-      ctx.eval (dlbaton->data, dlbaton->size);
-    }
-  catch (const gdb_exception_error &ex)
-    {
-      if (ex.error == NOT_AVAILABLE_ERROR)
-	{
-	  return 0;
-	}
-      else if (ex.error == NO_ENTRY_VALUE_ERROR)
-	{
-	  if (entry_values_debug)
-	    exception_print (gdb_stdout, ex);
-	  return 0;
-	}
-      else
-	throw;
-    }
-
-  switch (ctx.location)
-    {
-    case DWARF_VALUE_REGISTER:
-    case DWARF_VALUE_MEMORY:
-    case DWARF_VALUE_STACK:
-      *valp = ctx.fetch_address (0);
-      if (ctx.location == DWARF_VALUE_REGISTER)
-	*valp = ctx.read_addr_from_reg (*valp);
-      return 1;
-    case DWARF_VALUE_LITERAL:
-      *valp = extract_signed_integer (ctx.data, ctx.len,
-				      gdbarch_byte_order (ctx.gdbarch));
-      return 1;
-      /* Unsupported dwarf values.  */
-    case DWARF_VALUE_OPTIMIZED_OUT:
-    case DWARF_VALUE_IMPLICIT_POINTER:
-      break;
-    }
-
-  return 0;
-}
-
-/* See dwarf2loc.h.  */
-
-bool
-dwarf2_evaluate_property (const struct dynamic_prop *prop,
-			  struct frame_info *frame,
-			  struct property_addr_info *addr_stack,
-			  CORE_ADDR *value)
-{
-  if (prop == NULL)
-    return false;
-
-  if (frame == NULL && has_stack_frames ())
-    frame = get_selected_frame (NULL);
-
-  switch (prop->kind)
-    {
-    case PROP_LOCEXPR:
-      {
-	const struct dwarf2_property_baton *baton
-	  = (const struct dwarf2_property_baton *) prop->data.baton;
-	gdb_assert (baton->property_type != NULL);
-
-	if (dwarf2_locexpr_baton_eval (&baton->locexpr, frame,
-				       addr_stack ? addr_stack->addr : 0,
-				       value))
-	  {
-	    if (baton->locexpr.is_reference)
-	      {
-		struct value *val = value_at (baton->property_type, *value);
-		*value = value_as_address (val);
-	      }
-	    else
-	      {
-		gdb_assert (baton->property_type != NULL);
-
-		struct type *type = check_typedef (baton->property_type);
-		if (TYPE_LENGTH (type) < sizeof (CORE_ADDR)
-		    && !TYPE_UNSIGNED (type))
-		  {
-		    /* If we have a valid return candidate and it's value
-		       is signed, we have to sign-extend the value because
-		       CORE_ADDR on 64bit machine has 8 bytes but address
-		       size of an 32bit application is bytes.  */
-		    const int addr_size
-		      = (dwarf2_per_cu_addr_size (baton->locexpr.per_cu)
-			 * TARGET_CHAR_BIT);
-		    const CORE_ADDR neg_mask
-		      = (~((CORE_ADDR) 0) <<  (addr_size - 1));
-
-		    /* Check if signed bit is set and sign-extend values.  */
-		    if (*value & neg_mask)
-		      *value |= neg_mask;
-		  }
-	      }
-	    return true;
-	  }
-      }
-      break;
-
-    case PROP_LOCLIST:
-      {
-	struct dwarf2_property_baton *baton
-	  = (struct dwarf2_property_baton *) prop->data.baton;
-	CORE_ADDR pc = get_frame_address_in_block (frame);
-	const gdb_byte *data;
-	struct value *val;
-	size_t size;
-
-	data = dwarf2_find_location_expression (&baton->loclist, &size, pc);
-	if (data != NULL)
-	  {
-	    val = dwarf2_evaluate_loc_desc (baton->property_type, frame, data,
-					    size, baton->loclist.per_cu);
-	    if (!value_optimized_out (val))
-	      {
-		*value = value_as_address (val);
-		return true;
-	      }
-	  }
-      }
-      break;
-
-    case PROP_CONST:
-      *value = prop->data.const_val;
-      return true;
-
-    case PROP_ADDR_OFFSET:
-      {
-	struct dwarf2_property_baton *baton
-	  = (struct dwarf2_property_baton *) prop->data.baton;
-	struct property_addr_info *pinfo;
-	struct value *val;
-
-	for (pinfo = addr_stack; pinfo != NULL; pinfo = pinfo->next)
-	  {
-	    /* This approach lets us avoid checking the qualifiers.  */
-	    if (TYPE_MAIN_TYPE (pinfo->type)
-		== TYPE_MAIN_TYPE (baton->property_type))
-	      break;
-	  }
-	if (pinfo == NULL)
-	  error (_("cannot find reference address for offset property"));
-	if (pinfo->valaddr != NULL)
-	  val = value_from_contents
-		  (baton->offset_info.type,
-		   pinfo->valaddr + baton->offset_info.offset);
-	else
-	  val = value_at (baton->offset_info.type,
-			  pinfo->addr + baton->offset_info.offset);
-	*value = value_as_address (val);
-	return true;
-      }
-    }
-
-  return false;
-}
-
-/* See dwarf2loc.h.  */
-
-void
-dwarf2_compile_property_to_c (string_file *stream,
-			      const char *result_name,
-			      struct gdbarch *gdbarch,
-			      unsigned char *registers_used,
-			      const struct dynamic_prop *prop,
-			      CORE_ADDR pc,
-			      struct symbol *sym)
-{
-  struct dwarf2_property_baton *baton
-    = (struct dwarf2_property_baton *) prop->data.baton;
-  const gdb_byte *data;
-  size_t size;
-  struct dwarf2_per_cu_data *per_cu;
-
-  if (prop->kind == PROP_LOCEXPR)
-    {
-      data = baton->locexpr.data;
-      size = baton->locexpr.size;
-      per_cu = baton->locexpr.per_cu;
-    }
-  else
-    {
-      gdb_assert (prop->kind == PROP_LOCLIST);
-
-      data = dwarf2_find_location_expression (&baton->loclist, &size, pc);
-      per_cu = baton->loclist.per_cu;
-    }
-
-  compile_dwarf_bounds_to_c (stream, result_name, prop, sym, pc,
-			     gdbarch, registers_used,
-			     dwarf2_per_cu_addr_size (per_cu),
-			     data, data + size, per_cu);
-}
-
-
-/* Helper functions and baton for dwarf2_loc_desc_get_symbol_read_needs.  */
-
-class symbol_needs_eval_context : public dwarf_expr_context
-{
- public:
-
-  enum symbol_needs_kind needs;
-  struct dwarf2_per_cu_data *per_cu;
-
-  /* Reads from registers do require a frame.  */
-  CORE_ADDR read_addr_from_reg (int regnum) override
-  {
-    needs = SYMBOL_NEEDS_FRAME;
-    return 1;
-  }
-
-  /* "get_reg_value" callback: Reads from registers do require a
-     frame.  */
-
-  struct value *get_reg_value (struct type *type, int regnum) override
-  {
-    needs = SYMBOL_NEEDS_FRAME;
-    return value_zero (type, not_lval);
-  }
-
-  /* Reads from memory do not require a frame.  */
-  void read_mem (gdb_byte *buf, CORE_ADDR addr, size_t len) override
-  {
-    memset (buf, 0, len);
-  }
-
-  /* Frame-relative accesses do require a frame.  */
-  void get_frame_base (const gdb_byte **start, size_t *length) override
-  {
-    static gdb_byte lit0 = DW_OP_lit0;
-
-    *start = &lit0;
-    *length = 1;
-
-    needs = SYMBOL_NEEDS_FRAME;
-  }
-
-  /* CFA accesses require a frame.  */
-  CORE_ADDR get_frame_cfa () override
-  {
-    needs = SYMBOL_NEEDS_FRAME;
-    return 1;
-  }
-
-  CORE_ADDR get_frame_pc () override
-  {
-    needs = SYMBOL_NEEDS_FRAME;
-    return 1;
-  }
-
-  /* Thread-local accesses require registers, but not a frame.  */
-  CORE_ADDR get_tls_address (CORE_ADDR offset) override
-  {
-    if (needs <= SYMBOL_NEEDS_REGISTERS)
-      needs = SYMBOL_NEEDS_REGISTERS;
-    return 1;
-  }
-
-  /* Helper interface of per_cu_dwarf_call for
-     dwarf2_loc_desc_get_symbol_read_needs.  */
-
-  void dwarf_call (cu_offset die_offset) override
-  {
-    per_cu_dwarf_call (this, die_offset, per_cu);
-  }
-
-  /* Helper interface of sect_variable_value for
-     dwarf2_loc_desc_get_symbol_read_needs.  */
-
-  struct value *dwarf_variable_value (sect_offset sect_off) override
-  {
-    return sect_variable_value (this, sect_off, per_cu);
-  }
-
-  /* DW_OP_entry_value accesses require a caller, therefore a
-     frame.  */
-
-  void push_dwarf_reg_entry_value (enum call_site_parameter_kind kind,
-				   union call_site_parameter_u kind_u,
-				   int deref_size) override
-  {
-    needs = SYMBOL_NEEDS_FRAME;
-
-    /* The expression may require some stub values on DWARF stack.  */
-    push_address (0, 0);
-  }
-
-  /* DW_OP_addrx and DW_OP_GNU_addr_index doesn't require a frame.  */
-
-   CORE_ADDR get_addr_index (unsigned int index) override
-   {
-     /* Nothing to do.  */
-     return 1;
-   }
-
-   /* DW_OP_push_object_address has a frame already passed through.  */
-
-   CORE_ADDR get_object_address () override
-   {
-     /* Nothing to do.  */
-     return 1;
-   }
-};
-
-/* Compute the correct symbol_needs_kind value for the location
-   expression at DATA (length SIZE).  */
-
-static enum symbol_needs_kind
-dwarf2_loc_desc_get_symbol_read_needs (const gdb_byte *data, size_t size,
-				       struct dwarf2_per_cu_data *per_cu)
-{
-  int in_reg;
-  struct objfile *objfile = dwarf2_per_cu_objfile (per_cu);
-
-  scoped_value_mark free_values;
-
-  symbol_needs_eval_context ctx;
-
-  ctx.needs = SYMBOL_NEEDS_NONE;
-  ctx.per_cu = per_cu;
-  ctx.gdbarch = get_objfile_arch (objfile);
-  ctx.addr_size = dwarf2_per_cu_addr_size (per_cu);
-  ctx.ref_addr_size = dwarf2_per_cu_ref_addr_size (per_cu);
-  ctx.offset = dwarf2_per_cu_text_offset (per_cu);
-
-  ctx.eval (data, size);
-
-  in_reg = ctx.location == DWARF_VALUE_REGISTER;
-
-  /* If the location has several pieces, and any of them are in
-     registers, then we will need a frame to fetch them from.  */
-  for (dwarf_expr_piece &p : ctx.pieces)
-    if (p.location == DWARF_VALUE_REGISTER)
-      in_reg = 1;
-
-  if (in_reg)
-    ctx.needs = SYMBOL_NEEDS_FRAME;
-  return ctx.needs;
-}
-
-/* A helper function that throws an unimplemented error mentioning a
-   given DWARF operator.  */
-
-static void ATTRIBUTE_NORETURN
-unimplemented (unsigned int op)
-{
-  const char *name = get_DW_OP_name (op);
-
-  if (name)
-    error (_("DWARF operator %s cannot be translated to an agent expression"),
-	   name);
-  else
-    error (_("Unknown DWARF operator 0x%02x cannot be translated "
-	     "to an agent expression"),
-	   op);
-}
-
-/* See dwarf2loc.h.
-
-   This is basically a wrapper on gdbarch_dwarf2_reg_to_regnum so that we
-   can issue a complaint, which is better than having every target's
-   implementation of dwarf2_reg_to_regnum do it.  */
-
-int
-dwarf_reg_to_regnum (struct gdbarch *arch, int dwarf_reg)
-{
-  int reg = gdbarch_dwarf2_reg_to_regnum (arch, dwarf_reg);
-
-  if (reg == -1)
-    {
-      complaint (_("bad DWARF register number %d"), dwarf_reg);
-    }
-  return reg;
-}
-
-/* Subroutine of dwarf_reg_to_regnum_or_error to simplify it.
-   Throw an error because DWARF_REG is bad.  */
-
-static void
-throw_bad_regnum_error (ULONGEST dwarf_reg)
-{
-  /* Still want to print -1 as "-1".
-     We *could* have int and ULONGEST versions of dwarf2_reg_to_regnum_or_error
-     but that's overkill for now.  */
-  if ((int) dwarf_reg == dwarf_reg)
-    error (_("Unable to access DWARF register number %d"), (int) dwarf_reg);
-  error (_("Unable to access DWARF register number %s"),
-	 pulongest (dwarf_reg));
-}
-
-/* See dwarf2loc.h.  */
-
-int
-dwarf_reg_to_regnum_or_error (struct gdbarch *arch, ULONGEST dwarf_reg)
-{
-  int reg;
-
-  if (dwarf_reg > INT_MAX)
-    throw_bad_regnum_error (dwarf_reg);
-  /* Yes, we will end up issuing a complaint and an error if DWARF_REG is
-     bad, but that's ok.  */
-  reg = dwarf_reg_to_regnum (arch, (int) dwarf_reg);
-  if (reg == -1)
-    throw_bad_regnum_error (dwarf_reg);
-  return reg;
-}
-
-/* A helper function that emits an access to memory.  ARCH is the
-   target architecture.  EXPR is the expression which we are building.
-   NBITS is the number of bits we want to read.  This emits the
-   opcodes needed to read the memory and then extract the desired
-   bits.  */
-
-static void
-access_memory (struct gdbarch *arch, struct agent_expr *expr, ULONGEST nbits)
-{
-  ULONGEST nbytes = (nbits + 7) / 8;
-
-  gdb_assert (nbytes > 0 && nbytes <= sizeof (LONGEST));
-
-  if (expr->tracing)
-    ax_trace_quick (expr, nbytes);
-
-  if (nbits <= 8)
-    ax_simple (expr, aop_ref8);
-  else if (nbits <= 16)
-    ax_simple (expr, aop_ref16);
-  else if (nbits <= 32)
-    ax_simple (expr, aop_ref32);
-  else
-    ax_simple (expr, aop_ref64);
-
-  /* If we read exactly the number of bytes we wanted, we're done.  */
-  if (8 * nbytes == nbits)
-    return;
-
-  if (gdbarch_byte_order (arch) == BFD_ENDIAN_BIG)
-    {
-      /* On a bits-big-endian machine, we want the high-order
-	 NBITS.  */
-      ax_const_l (expr, 8 * nbytes - nbits);
-      ax_simple (expr, aop_rsh_unsigned);
-    }
-  else
-    {
-      /* On a bits-little-endian box, we want the low-order NBITS.  */
-      ax_zero_ext (expr, nbits);
-    }
-}
-
-/* A helper function to return the frame's PC.  */
-
-static CORE_ADDR
-get_ax_pc (void *baton)
-{
-  struct agent_expr *expr = (struct agent_expr *) baton;
-
-  return expr->scope;
-}
-
-/* Compile a DWARF location expression to an agent expression.
-   
-   EXPR is the agent expression we are building.
-   LOC is the agent value we modify.
-   ARCH is the architecture.
-   ADDR_SIZE is the size of addresses, in bytes.
-   OP_PTR is the start of the location expression.
-   OP_END is one past the last byte of the location expression.
-   
-   This will throw an exception for various kinds of errors -- for
-   example, if the expression cannot be compiled, or if the expression
-   is invalid.  */
-
-void
-dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
-			   unsigned int addr_size, const gdb_byte *op_ptr,
-			   const gdb_byte *op_end,
-			   struct dwarf2_per_cu_data *per_cu)
-{
-  gdbarch *arch = expr->gdbarch;
-  std::vector<int> dw_labels, patches;
-  const gdb_byte * const base = op_ptr;
-  const gdb_byte *previous_piece = op_ptr;
-  enum bfd_endian byte_order = gdbarch_byte_order (arch);
-  ULONGEST bits_collected = 0;
-  unsigned int addr_size_bits = 8 * addr_size;
-  bool bits_big_endian = byte_order == BFD_ENDIAN_BIG;
-
-  std::vector<int> offsets (op_end - op_ptr, -1);
-
-  /* By default we are making an address.  */
-  loc->kind = axs_lvalue_memory;
-
-  while (op_ptr < op_end)
-    {
-      enum dwarf_location_atom op = (enum dwarf_location_atom) *op_ptr;
-      uint64_t uoffset, reg;
-      int64_t offset;
-      int i;
-
-      offsets[op_ptr - base] = expr->len;
-      ++op_ptr;
-
-      /* Our basic approach to code generation is to map DWARF
-	 operations directly to AX operations.  However, there are
-	 some differences.
-
-	 First, DWARF works on address-sized units, but AX always uses
-	 LONGEST.  For most operations we simply ignore this
-	 difference; instead we generate sign extensions as needed
-	 before division and comparison operations.  It would be nice
-	 to omit the sign extensions, but there is no way to determine
-	 the size of the target's LONGEST.  (This code uses the size
-	 of the host LONGEST in some cases -- that is a bug but it is
-	 difficult to fix.)
-
-	 Second, some DWARF operations cannot be translated to AX.
-	 For these we simply fail.  See
-	 http://sourceware.org/bugzilla/show_bug.cgi?id=11662.  */
-      switch (op)
-	{
-	case DW_OP_lit0:
-	case DW_OP_lit1:
-	case DW_OP_lit2:
-	case DW_OP_lit3:
-	case DW_OP_lit4:
-	case DW_OP_lit5:
-	case DW_OP_lit6:
-	case DW_OP_lit7:
-	case DW_OP_lit8:
-	case DW_OP_lit9:
-	case DW_OP_lit10:
-	case DW_OP_lit11:
-	case DW_OP_lit12:
-	case DW_OP_lit13:
-	case DW_OP_lit14:
-	case DW_OP_lit15:
-	case DW_OP_lit16:
-	case DW_OP_lit17:
-	case DW_OP_lit18:
-	case DW_OP_lit19:
-	case DW_OP_lit20:
-	case DW_OP_lit21:
-	case DW_OP_lit22:
-	case DW_OP_lit23:
-	case DW_OP_lit24:
-	case DW_OP_lit25:
-	case DW_OP_lit26:
-	case DW_OP_lit27:
-	case DW_OP_lit28:
-	case DW_OP_lit29:
-	case DW_OP_lit30:
-	case DW_OP_lit31:
-	  ax_const_l (expr, op - DW_OP_lit0);
-	  break;
-
-	case DW_OP_addr:
-	  uoffset = extract_unsigned_integer (op_ptr, addr_size, byte_order);
-	  op_ptr += addr_size;
-	  /* Some versions of GCC emit DW_OP_addr before
-	     DW_OP_GNU_push_tls_address.  In this case the value is an
-	     index, not an address.  We don't support things like
-	     branching between the address and the TLS op.  */
-	  if (op_ptr >= op_end || *op_ptr != DW_OP_GNU_push_tls_address)
-	    uoffset += dwarf2_per_cu_text_offset (per_cu);
-	  ax_const_l (expr, uoffset);
-	  break;
-
-	case DW_OP_const1u:
-	  ax_const_l (expr, extract_unsigned_integer (op_ptr, 1, byte_order));
-	  op_ptr += 1;
-	  break;
-	case DW_OP_const1s:
-	  ax_const_l (expr, extract_signed_integer (op_ptr, 1, byte_order));
-	  op_ptr += 1;
-	  break;
-	case DW_OP_const2u:
-	  ax_const_l (expr, extract_unsigned_integer (op_ptr, 2, byte_order));
-	  op_ptr += 2;
-	  break;
-	case DW_OP_const2s:
-	  ax_const_l (expr, extract_signed_integer (op_ptr, 2, byte_order));
-	  op_ptr += 2;
-	  break;
-	case DW_OP_const4u:
-	  ax_const_l (expr, extract_unsigned_integer (op_ptr, 4, byte_order));
-	  op_ptr += 4;
-	  break;
-	case DW_OP_const4s:
-	  ax_const_l (expr, extract_signed_integer (op_ptr, 4, byte_order));
-	  op_ptr += 4;
-	  break;
-	case DW_OP_const8u:
-	  ax_const_l (expr, extract_unsigned_integer (op_ptr, 8, byte_order));
-	  op_ptr += 8;
-	  break;
-	case DW_OP_const8s:
-	  ax_const_l (expr, extract_signed_integer (op_ptr, 8, byte_order));
-	  op_ptr += 8;
-	  break;
-	case DW_OP_constu:
-	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
-	  ax_const_l (expr, uoffset);
-	  break;
-	case DW_OP_consts:
-	  op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
-	  ax_const_l (expr, offset);
-	  break;
-
-	case DW_OP_reg0:
-	case DW_OP_reg1:
-	case DW_OP_reg2:
-	case DW_OP_reg3:
-	case DW_OP_reg4:
-	case DW_OP_reg5:
-	case DW_OP_reg6:
-	case DW_OP_reg7:
-	case DW_OP_reg8:
-	case DW_OP_reg9:
-	case DW_OP_reg10:
-	case DW_OP_reg11:
-	case DW_OP_reg12:
-	case DW_OP_reg13:
-	case DW_OP_reg14:
-	case DW_OP_reg15:
-	case DW_OP_reg16:
-	case DW_OP_reg17:
-	case DW_OP_reg18:
-	case DW_OP_reg19:
-	case DW_OP_reg20:
-	case DW_OP_reg21:
-	case DW_OP_reg22:
-	case DW_OP_reg23:
-	case DW_OP_reg24:
-	case DW_OP_reg25:
-	case DW_OP_reg26:
-	case DW_OP_reg27:
-	case DW_OP_reg28:
-	case DW_OP_reg29:
-	case DW_OP_reg30:
-	case DW_OP_reg31:
-	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
-	  loc->u.reg = dwarf_reg_to_regnum_or_error (arch, op - DW_OP_reg0);
-	  loc->kind = axs_lvalue_register;
-	  break;
-
-	case DW_OP_regx:
-	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
-	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_regx");
-	  loc->u.reg = dwarf_reg_to_regnum_or_error (arch, reg);
-	  loc->kind = axs_lvalue_register;
-	  break;
-
-	case DW_OP_implicit_value:
-	  {
-	    uint64_t len;
-
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &len);
-	    if (op_ptr + len > op_end)
-	      error (_("DW_OP_implicit_value: too few bytes available."));
-	    if (len > sizeof (ULONGEST))
-	      error (_("Cannot translate DW_OP_implicit_value of %d bytes"),
-		     (int) len);
-
-	    ax_const_l (expr, extract_unsigned_integer (op_ptr, len,
-							byte_order));
-	    op_ptr += len;
-	    dwarf_expr_require_composition (op_ptr, op_end,
-					    "DW_OP_implicit_value");
-
-	    loc->kind = axs_rvalue;
-	  }
-	  break;
-
-	case DW_OP_stack_value:
-	  dwarf_expr_require_composition (op_ptr, op_end, "DW_OP_stack_value");
-	  loc->kind = axs_rvalue;
-	  break;
-
-	case DW_OP_breg0:
-	case DW_OP_breg1:
-	case DW_OP_breg2:
-	case DW_OP_breg3:
-	case DW_OP_breg4:
-	case DW_OP_breg5:
-	case DW_OP_breg6:
-	case DW_OP_breg7:
-	case DW_OP_breg8:
-	case DW_OP_breg9:
-	case DW_OP_breg10:
-	case DW_OP_breg11:
-	case DW_OP_breg12:
-	case DW_OP_breg13:
-	case DW_OP_breg14:
-	case DW_OP_breg15:
-	case DW_OP_breg16:
-	case DW_OP_breg17:
-	case DW_OP_breg18:
-	case DW_OP_breg19:
-	case DW_OP_breg20:
-	case DW_OP_breg21:
-	case DW_OP_breg22:
-	case DW_OP_breg23:
-	case DW_OP_breg24:
-	case DW_OP_breg25:
-	case DW_OP_breg26:
-	case DW_OP_breg27:
-	case DW_OP_breg28:
-	case DW_OP_breg29:
-	case DW_OP_breg30:
-	case DW_OP_breg31:
-	  op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
-	  i = dwarf_reg_to_regnum_or_error (arch, op - DW_OP_breg0);
-	  ax_reg (expr, i);
-	  if (offset != 0)
-	    {
-	      ax_const_l (expr, offset);
-	      ax_simple (expr, aop_add);
-	    }
-	  break;
-	case DW_OP_bregx:
-	  {
-	    op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
-	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
-	    i = dwarf_reg_to_regnum_or_error (arch, reg);
-	    ax_reg (expr, i);
-	    if (offset != 0)
-	      {
-		ax_const_l (expr, offset);
-		ax_simple (expr, aop_add);
-	      }
-	  }
-	  break;
-	case DW_OP_fbreg:
-	  {
-	    const gdb_byte *datastart;
-	    size_t datalen;
-	    const struct block *b;
-	    struct symbol *framefunc;
-
-	    b = block_for_pc (expr->scope);
-
-	    if (!b)
-	      error (_("No block found for address"));
-
-	    framefunc = block_linkage_function (b);
-
-	    if (!framefunc)
-	      error (_("No function found for block"));
-
-	    func_get_frame_base_dwarf_block (framefunc, expr->scope,
-					     &datastart, &datalen);
-
-	    op_ptr = safe_read_sleb128 (op_ptr, op_end, &offset);
-	    dwarf2_compile_expr_to_ax (expr, loc, addr_size, datastart,
-				       datastart + datalen, per_cu);
-	    if (loc->kind == axs_lvalue_register)
-	      require_rvalue (expr, loc);
-
-	    if (offset != 0)
-	      {
-		ax_const_l (expr, offset);
-		ax_simple (expr, aop_add);
-	      }
-
-	    loc->kind = axs_lvalue_memory;
-	  }
-	  break;
-
-	case DW_OP_dup:
-	  ax_simple (expr, aop_dup);
-	  break;
-
-	case DW_OP_drop:
-	  ax_simple (expr, aop_pop);
-	  break;
-
-	case DW_OP_pick:
-	  offset = *op_ptr++;
-	  ax_pick (expr, offset);
-	  break;
-	  
-	case DW_OP_swap:
-	  ax_simple (expr, aop_swap);
-	  break;
-
-	case DW_OP_over:
-	  ax_pick (expr, 1);
-	  break;
-
-	case DW_OP_rot:
-	  ax_simple (expr, aop_rot);
-	  break;
-
-	case DW_OP_deref:
-	case DW_OP_deref_size:
-	  {
-	    int size;
-
-	    if (op == DW_OP_deref_size)
-	      size = *op_ptr++;
-	    else
-	      size = addr_size;
-
-	    if (size != 1 && size != 2 && size != 4 && size != 8)
-	      error (_("Unsupported size %d in %s"),
-		     size, get_DW_OP_name (op));
-	    access_memory (arch, expr, size * TARGET_CHAR_BIT);
-	  }
-	  break;
-
-	case DW_OP_abs:
-	  /* Sign extend the operand.  */
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_dup);
-	  ax_const_l (expr, 0);
-	  ax_simple (expr, aop_less_signed);
-	  ax_simple (expr, aop_log_not);
-	  i = ax_goto (expr, aop_if_goto);
-	  /* We have to emit 0 - X.  */
-	  ax_const_l (expr, 0);
-	  ax_simple (expr, aop_swap);
-	  ax_simple (expr, aop_sub);
-	  ax_label (expr, i, expr->len);
-	  break;
-
-	case DW_OP_neg:
-	  /* No need to sign extend here.  */
-	  ax_const_l (expr, 0);
-	  ax_simple (expr, aop_swap);
-	  ax_simple (expr, aop_sub);
-	  break;
-
-	case DW_OP_not:
-	  /* Sign extend the operand.  */
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_bit_not);
-	  break;
-
-	case DW_OP_plus_uconst:
-	  op_ptr = safe_read_uleb128 (op_ptr, op_end, &reg);
-	  /* It would be really weird to emit `DW_OP_plus_uconst 0',
-	     but we micro-optimize anyhow.  */
-	  if (reg != 0)
-	    {
-	      ax_const_l (expr, reg);
-	      ax_simple (expr, aop_add);
-	    }
-	  break;
-
-	case DW_OP_and:
-	  ax_simple (expr, aop_bit_and);
-	  break;
-
-	case DW_OP_div:
-	  /* Sign extend the operands.  */
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_swap);
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_swap);
-	  ax_simple (expr, aop_div_signed);
-	  break;
-
-	case DW_OP_minus:
-	  ax_simple (expr, aop_sub);
-	  break;
-
-	case DW_OP_mod:
-	  ax_simple (expr, aop_rem_unsigned);
-	  break;
-
-	case DW_OP_mul:
-	  ax_simple (expr, aop_mul);
-	  break;
-
-	case DW_OP_or:
-	  ax_simple (expr, aop_bit_or);
-	  break;
-
-	case DW_OP_plus:
-	  ax_simple (expr, aop_add);
-	  break;
-
-	case DW_OP_shl:
-	  ax_simple (expr, aop_lsh);
-	  break;
-
-	case DW_OP_shr:
-	  ax_simple (expr, aop_rsh_unsigned);
-	  break;
-
-	case DW_OP_shra:
-	  ax_simple (expr, aop_rsh_signed);
-	  break;
-
-	case DW_OP_xor:
-	  ax_simple (expr, aop_bit_xor);
-	  break;
-
-	case DW_OP_le:
-	  /* Sign extend the operands.  */
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_swap);
-	  ax_ext (expr, addr_size_bits);
-	  /* Note no swap here: A <= B is !(B < A).  */
-	  ax_simple (expr, aop_less_signed);
-	  ax_simple (expr, aop_log_not);
-	  break;
-
-	case DW_OP_ge:
-	  /* Sign extend the operands.  */
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_swap);
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_swap);
-	  /* A >= B is !(A < B).  */
-	  ax_simple (expr, aop_less_signed);
-	  ax_simple (expr, aop_log_not);
-	  break;
-
-	case DW_OP_eq:
-	  /* Sign extend the operands.  */
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_swap);
-	  ax_ext (expr, addr_size_bits);
-	  /* No need for a second swap here.  */
-	  ax_simple (expr, aop_equal);
-	  break;
-
-	case DW_OP_lt:
-	  /* Sign extend the operands.  */
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_swap);
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_swap);
-	  ax_simple (expr, aop_less_signed);
-	  break;
-
-	case DW_OP_gt:
-	  /* Sign extend the operands.  */
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_swap);
-	  ax_ext (expr, addr_size_bits);
-	  /* Note no swap here: A > B is B < A.  */
-	  ax_simple (expr, aop_less_signed);
-	  break;
-
-	case DW_OP_ne:
-	  /* Sign extend the operands.  */
-	  ax_ext (expr, addr_size_bits);
-	  ax_simple (expr, aop_swap);
-	  ax_ext (expr, addr_size_bits);
-	  /* No need for a swap here.  */
-	  ax_simple (expr, aop_equal);
-	  ax_simple (expr, aop_log_not);
-	  break;
-
-	case DW_OP_call_frame_cfa:
-	  {
-	    int regnum;
-	    CORE_ADDR text_offset;
-	    LONGEST off;
-	    const gdb_byte *cfa_start, *cfa_end;
-
-	    if (dwarf2_fetch_cfa_info (arch, expr->scope, per_cu,
-				       &regnum, &off,
-				       &text_offset, &cfa_start, &cfa_end))
-	      {
-		/* Register.  */
-		ax_reg (expr, regnum);
-		if (off != 0)
-		  {
-		    ax_const_l (expr, off);
-		    ax_simple (expr, aop_add);
-		  }
-	      }
-	    else
-	      {
-		/* Another expression.  */
-		ax_const_l (expr, text_offset);
-		dwarf2_compile_expr_to_ax (expr, loc, addr_size, cfa_start,
-					   cfa_end, per_cu);
-	      }
-
-	    loc->kind = axs_lvalue_memory;
-	  }
-	  break;
-
-	case DW_OP_GNU_push_tls_address:
-	case DW_OP_form_tls_address:
-	  unimplemented (op);
-	  break;
-
-	case DW_OP_push_object_address:
-	  unimplemented (op);
-	  break;
-
-	case DW_OP_skip:
-	  offset = extract_signed_integer (op_ptr, 2, byte_order);
-	  op_ptr += 2;
-	  i = ax_goto (expr, aop_goto);
-	  dw_labels.push_back (op_ptr + offset - base);
-	  patches.push_back (i);
-	  break;
-
-	case DW_OP_bra:
-	  offset = extract_signed_integer (op_ptr, 2, byte_order);
-	  op_ptr += 2;
-	  /* Zero extend the operand.  */
-	  ax_zero_ext (expr, addr_size_bits);
-	  i = ax_goto (expr, aop_if_goto);
-	  dw_labels.push_back (op_ptr + offset - base);
-	  patches.push_back (i);
-	  break;
-
-	case DW_OP_nop:
-	  break;
-
-        case DW_OP_piece:
-	case DW_OP_bit_piece:
-	  {
-	    uint64_t size;
-
-	    if (op_ptr - 1 == previous_piece)
-	      error (_("Cannot translate empty pieces to agent expressions"));
-	    previous_piece = op_ptr - 1;
-
-            op_ptr = safe_read_uleb128 (op_ptr, op_end, &size);
-	    if (op == DW_OP_piece)
-	      {
-		size *= 8;
-		uoffset = 0;
-	      }
-	    else
-	      op_ptr = safe_read_uleb128 (op_ptr, op_end, &uoffset);
-
-	    if (bits_collected + size > 8 * sizeof (LONGEST))
-	      error (_("Expression pieces exceed word size"));
-
-	    /* Access the bits.  */
-	    switch (loc->kind)
-	      {
-	      case axs_lvalue_register:
-		ax_reg (expr, loc->u.reg);
-		break;
-
-	      case axs_lvalue_memory:
-		/* Offset the pointer, if needed.  */
-		if (uoffset > 8)
-		  {
-		    ax_const_l (expr, uoffset / 8);
-		    ax_simple (expr, aop_add);
-		    uoffset %= 8;
-		  }
-		access_memory (arch, expr, size);
-		break;
-	      }
-
-	    /* For a bits-big-endian target, shift up what we already
-	       have.  For a bits-little-endian target, shift up the
-	       new data.  Note that there is a potential bug here if
-	       the DWARF expression leaves multiple values on the
-	       stack.  */
-	    if (bits_collected > 0)
-	      {
-		if (bits_big_endian)
-		  {
-		    ax_simple (expr, aop_swap);
-		    ax_const_l (expr, size);
-		    ax_simple (expr, aop_lsh);
-		    /* We don't need a second swap here, because
-		       aop_bit_or is symmetric.  */
-		  }
-		else
-		  {
-		    ax_const_l (expr, size);
-		    ax_simple (expr, aop_lsh);
-		  }
-		ax_simple (expr, aop_bit_or);
-	      }
-
-	    bits_collected += size;
-	    loc->kind = axs_rvalue;
-	  }
-	  break;
-
-	case DW_OP_GNU_uninit:
-	  unimplemented (op);
-
-	case DW_OP_call2:
-	case DW_OP_call4:
-	  {
-	    struct dwarf2_locexpr_baton block;
-	    int size = (op == DW_OP_call2 ? 2 : 4);
-
-	    uoffset = extract_unsigned_integer (op_ptr, size, byte_order);
-	    op_ptr += size;
-
-	    cu_offset cuoffset = (cu_offset) uoffset;
-	    block = dwarf2_fetch_die_loc_cu_off (cuoffset, per_cu,
-						 get_ax_pc, expr);
-
-	    /* DW_OP_call_ref is currently not supported.  */
-	    gdb_assert (block.per_cu == per_cu);
-
-	    dwarf2_compile_expr_to_ax (expr, loc, addr_size, block.data,
-				       block.data + block.size, per_cu);
-	  }
-	  break;
-
-	case DW_OP_call_ref:
-	  unimplemented (op);
-
-	case DW_OP_GNU_variable_value:
-	  unimplemented (op);
-
-	default:
-	  unimplemented (op);
-	}
-    }
-
-  /* Patch all the branches we emitted.  */
-  for (int i = 0; i < patches.size (); ++i)
-    {
-      int targ = offsets[dw_labels[i]];
-      if (targ == -1)
-	internal_error (__FILE__, __LINE__, _("invalid label"));
-      ax_label (expr, patches[i], targ);
-    }
-}
-
-
-/* Return the value of SYMBOL in FRAME using the DWARF-2 expression
-   evaluator to calculate the location.  */
-static struct value *
-locexpr_read_variable (struct symbol *symbol, struct frame_info *frame)
-{
-  struct dwarf2_locexpr_baton *dlbaton
-    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
-  struct value *val;
-
-  val = dwarf2_evaluate_loc_desc (SYMBOL_TYPE (symbol), frame, dlbaton->data,
-				  dlbaton->size, dlbaton->per_cu);
-
-  return val;
-}
-
-/* Return the value of SYMBOL in FRAME at (callee) FRAME's function
-   entry.  SYMBOL should be a function parameter, otherwise NO_ENTRY_VALUE_ERROR
-   will be thrown.  */
-
-static struct value *
-locexpr_read_variable_at_entry (struct symbol *symbol, struct frame_info *frame)
-{
-  struct dwarf2_locexpr_baton *dlbaton
-    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
-
-  return value_of_dwarf_block_entry (SYMBOL_TYPE (symbol), frame, dlbaton->data,
-				     dlbaton->size);
-}
-
-/* Implementation of get_symbol_read_needs from
-   symbol_computed_ops.  */
-
-static enum symbol_needs_kind
-locexpr_get_symbol_read_needs (struct symbol *symbol)
-{
-  struct dwarf2_locexpr_baton *dlbaton
-    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
-
-  return dwarf2_loc_desc_get_symbol_read_needs (dlbaton->data, dlbaton->size,
-						dlbaton->per_cu);
-}
-
-/* Return true if DATA points to the end of a piece.  END is one past
-   the last byte in the expression.  */
-
-static int
-piece_end_p (const gdb_byte *data, const gdb_byte *end)
-{
-  return data == end || data[0] == DW_OP_piece || data[0] == DW_OP_bit_piece;
-}
-
-/* Helper for locexpr_describe_location_piece that finds the name of a
-   DWARF register.  */
-
-static const char *
-locexpr_regname (struct gdbarch *gdbarch, int dwarf_regnum)
-{
-  int regnum;
-
-  /* This doesn't use dwarf_reg_to_regnum_or_error on purpose.
-     We'd rather print *something* here than throw an error.  */
-  regnum = dwarf_reg_to_regnum (gdbarch, dwarf_regnum);
-  /* gdbarch_register_name may just return "", return something more
-     descriptive for bad register numbers.  */
-  if (regnum == -1)
-    {
-      /* The text is output as "$bad_register_number".
-	 That is why we use the underscores.  */
-      return _("bad_register_number");
-    }
-  return gdbarch_register_name (gdbarch, regnum);
-}
-
-/* Nicely describe a single piece of a location, returning an updated
-   position in the bytecode sequence.  This function cannot recognize
-   all locations; if a location is not recognized, it simply returns
-   DATA.  If there is an error during reading, e.g. we run off the end
-   of the buffer, an error is thrown.  */
-
-static const gdb_byte *
-locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream,
-				 CORE_ADDR addr, struct objfile *objfile,
-				 struct dwarf2_per_cu_data *per_cu,
-				 const gdb_byte *data, const gdb_byte *end,
-				 unsigned int addr_size)
-{
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  size_t leb128_size;
-
-  if (data[0] >= DW_OP_reg0 && data[0] <= DW_OP_reg31)
-    {
-      fprintf_filtered (stream, _("a variable in $%s"),
-			locexpr_regname (gdbarch, data[0] - DW_OP_reg0));
-      data += 1;
-    }
-  else if (data[0] == DW_OP_regx)
-    {
-      uint64_t reg;
-
-      data = safe_read_uleb128 (data + 1, end, &reg);
-      fprintf_filtered (stream, _("a variable in $%s"),
-			locexpr_regname (gdbarch, reg));
-    }
-  else if (data[0] == DW_OP_fbreg)
-    {
-      const struct block *b;
-      struct symbol *framefunc;
-      int frame_reg = 0;
-      int64_t frame_offset;
-      const gdb_byte *base_data, *new_data, *save_data = data;
-      size_t base_size;
-      int64_t base_offset = 0;
-
-      new_data = safe_read_sleb128 (data + 1, end, &frame_offset);
-      if (!piece_end_p (new_data, end))
-	return data;
-      data = new_data;
-
-      b = block_for_pc (addr);
-
-      if (!b)
-	error (_("No block found for address for symbol \"%s\"."),
-	       symbol->print_name ());
-
-      framefunc = block_linkage_function (b);
-
-      if (!framefunc)
-	error (_("No function found for block for symbol \"%s\"."),
-	       symbol->print_name ());
-
-      func_get_frame_base_dwarf_block (framefunc, addr, &base_data, &base_size);
-
-      if (base_data[0] >= DW_OP_breg0 && base_data[0] <= DW_OP_breg31)
-	{
-	  const gdb_byte *buf_end;
-	  
-	  frame_reg = base_data[0] - DW_OP_breg0;
-	  buf_end = safe_read_sleb128 (base_data + 1, base_data + base_size,
-				       &base_offset);
-	  if (buf_end != base_data + base_size)
-	    error (_("Unexpected opcode after "
-		     "DW_OP_breg%u for symbol \"%s\"."),
-		   frame_reg, symbol->print_name ());
-	}
-      else if (base_data[0] >= DW_OP_reg0 && base_data[0] <= DW_OP_reg31)
-	{
-	  /* The frame base is just the register, with no offset.  */
-	  frame_reg = base_data[0] - DW_OP_reg0;
-	  base_offset = 0;
-	}
-      else
-	{
-	  /* We don't know what to do with the frame base expression,
-	     so we can't trace this variable; give up.  */
-	  return save_data;
-	}
-
-      fprintf_filtered (stream,
-			_("a variable at frame base reg $%s offset %s+%s"),
-			locexpr_regname (gdbarch, frame_reg),
-			plongest (base_offset), plongest (frame_offset));
-    }
-  else if (data[0] >= DW_OP_breg0 && data[0] <= DW_OP_breg31
-	   && piece_end_p (data, end))
-    {
-      int64_t offset;
-
-      data = safe_read_sleb128 (data + 1, end, &offset);
-
-      fprintf_filtered (stream,
-			_("a variable at offset %s from base reg $%s"),
-			plongest (offset),
-			locexpr_regname (gdbarch, data[0] - DW_OP_breg0));
-    }
-
-  /* The location expression for a TLS variable looks like this (on a
-     64-bit LE machine):
-
-     DW_AT_location    : 10 byte block: 3 4 0 0 0 0 0 0 0 e0
-                        (DW_OP_addr: 4; DW_OP_GNU_push_tls_address)
-
-     0x3 is the encoding for DW_OP_addr, which has an operand as long
-     as the size of an address on the target machine (here is 8
-     bytes).  Note that more recent version of GCC emit DW_OP_const4u
-     or DW_OP_const8u, depending on address size, rather than
-     DW_OP_addr.  0xe0 is the encoding for DW_OP_GNU_push_tls_address.
-     The operand represents the offset at which the variable is within
-     the thread local storage.  */
-
-  else if (data + 1 + addr_size < end
-	   && (data[0] == DW_OP_addr
-	       || (addr_size == 4 && data[0] == DW_OP_const4u)
-	       || (addr_size == 8 && data[0] == DW_OP_const8u))
-	   && (data[1 + addr_size] == DW_OP_GNU_push_tls_address
-	       || data[1 + addr_size] == DW_OP_form_tls_address)
-	   && piece_end_p (data + 2 + addr_size, end))
-    {
-      ULONGEST offset;
-      offset = extract_unsigned_integer (data + 1, addr_size,
-					 gdbarch_byte_order (gdbarch));
-
-      fprintf_filtered (stream, 
-			_("a thread-local variable at offset 0x%s "
-			  "in the thread-local storage for `%s'"),
-			phex_nz (offset, addr_size), objfile_name (objfile));
-
-      data += 1 + addr_size + 1;
-    }
-
-  /* With -gsplit-dwarf a TLS variable can also look like this:
-     DW_AT_location    : 3 byte block: fc 4 e0
-                        (DW_OP_GNU_const_index: 4;
-			 DW_OP_GNU_push_tls_address)  */
-  else if (data + 3 <= end
-	   && data + 1 + (leb128_size = skip_leb128 (data + 1, end)) < end
-	   && data[0] == DW_OP_GNU_const_index
-	   && leb128_size > 0
-	   && (data[1 + leb128_size] == DW_OP_GNU_push_tls_address
-	       || data[1 + leb128_size] == DW_OP_form_tls_address)
-	   && piece_end_p (data + 2 + leb128_size, end))
-    {
-      uint64_t offset;
-
-      data = safe_read_uleb128 (data + 1, end, &offset);
-      offset = dwarf2_read_addr_index (per_cu, offset);
-      fprintf_filtered (stream, 
-			_("a thread-local variable at offset 0x%s "
-			  "in the thread-local storage for `%s'"),
-			phex_nz (offset, addr_size), objfile_name (objfile));
-      ++data;
-    }
-
-  else if (data[0] >= DW_OP_lit0
-	   && data[0] <= DW_OP_lit31
-	   && data + 1 < end
-	   && data[1] == DW_OP_stack_value)
-    {
-      fprintf_filtered (stream, _("the constant %d"), data[0] - DW_OP_lit0);
-      data += 2;
-    }
-
-  return data;
-}
-
-/* Disassemble an expression, stopping at the end of a piece or at the
-   end of the expression.  Returns a pointer to the next unread byte
-   in the input expression.  If ALL is nonzero, then this function
-   will keep going until it reaches the end of the expression.
-   If there is an error during reading, e.g. we run off the end
-   of the buffer, an error is thrown.  */
-
-static const gdb_byte *
-disassemble_dwarf_expression (struct ui_file *stream,
-			      struct gdbarch *arch, unsigned int addr_size,
-			      int offset_size, const gdb_byte *start,
-			      const gdb_byte *data, const gdb_byte *end,
-			      int indent, int all,
-			      struct dwarf2_per_cu_data *per_cu)
-{
-  while (data < end
-	 && (all
-	     || (data[0] != DW_OP_piece && data[0] != DW_OP_bit_piece)))
-    {
-      enum dwarf_location_atom op = (enum dwarf_location_atom) *data++;
-      uint64_t ul;
-      int64_t l;
-      const char *name;
-
-      name = get_DW_OP_name (op);
-
-      if (!name)
-	error (_("Unrecognized DWARF opcode 0x%02x at %ld"),
-	       op, (long) (data - 1 - start));
-      fprintf_filtered (stream, "  %*ld: %s", indent + 4,
-			(long) (data - 1 - start), name);
-
-      switch (op)
-	{
-	case DW_OP_addr:
-	  ul = extract_unsigned_integer (data, addr_size,
-					 gdbarch_byte_order (arch));
-	  data += addr_size;
-	  fprintf_filtered (stream, " 0x%s", phex_nz (ul, addr_size));
-	  break;
-
-	case DW_OP_const1u:
-	  ul = extract_unsigned_integer (data, 1, gdbarch_byte_order (arch));
-	  data += 1;
-	  fprintf_filtered (stream, " %s", pulongest (ul));
-	  break;
-	case DW_OP_const1s:
-	  l = extract_signed_integer (data, 1, gdbarch_byte_order (arch));
-	  data += 1;
-	  fprintf_filtered (stream, " %s", plongest (l));
-	  break;
-	case DW_OP_const2u:
-	  ul = extract_unsigned_integer (data, 2, gdbarch_byte_order (arch));
-	  data += 2;
-	  fprintf_filtered (stream, " %s", pulongest (ul));
-	  break;
-	case DW_OP_const2s:
-	  l = extract_signed_integer (data, 2, gdbarch_byte_order (arch));
-	  data += 2;
-	  fprintf_filtered (stream, " %s", plongest (l));
-	  break;
-	case DW_OP_const4u:
-	  ul = extract_unsigned_integer (data, 4, gdbarch_byte_order (arch));
-	  data += 4;
-	  fprintf_filtered (stream, " %s", pulongest (ul));
-	  break;
-	case DW_OP_const4s:
-	  l = extract_signed_integer (data, 4, gdbarch_byte_order (arch));
-	  data += 4;
-	  fprintf_filtered (stream, " %s", plongest (l));
-	  break;
-	case DW_OP_const8u:
-	  ul = extract_unsigned_integer (data, 8, gdbarch_byte_order (arch));
-	  data += 8;
-	  fprintf_filtered (stream, " %s", pulongest (ul));
-	  break;
-	case DW_OP_const8s:
-	  l = extract_signed_integer (data, 8, gdbarch_byte_order (arch));
-	  data += 8;
-	  fprintf_filtered (stream, " %s", plongest (l));
-	  break;
-	case DW_OP_constu:
-	  data = safe_read_uleb128 (data, end, &ul);
-	  fprintf_filtered (stream, " %s", pulongest (ul));
-	  break;
-	case DW_OP_consts:
-	  data = safe_read_sleb128 (data, end, &l);
-	  fprintf_filtered (stream, " %s", plongest (l));
-	  break;
-
-	case DW_OP_reg0:
-	case DW_OP_reg1:
-	case DW_OP_reg2:
-	case DW_OP_reg3:
-	case DW_OP_reg4:
-	case DW_OP_reg5:
-	case DW_OP_reg6:
-	case DW_OP_reg7:
-	case DW_OP_reg8:
-	case DW_OP_reg9:
-	case DW_OP_reg10:
-	case DW_OP_reg11:
-	case DW_OP_reg12:
-	case DW_OP_reg13:
-	case DW_OP_reg14:
-	case DW_OP_reg15:
-	case DW_OP_reg16:
-	case DW_OP_reg17:
-	case DW_OP_reg18:
-	case DW_OP_reg19:
-	case DW_OP_reg20:
-	case DW_OP_reg21:
-	case DW_OP_reg22:
-	case DW_OP_reg23:
-	case DW_OP_reg24:
-	case DW_OP_reg25:
-	case DW_OP_reg26:
-	case DW_OP_reg27:
-	case DW_OP_reg28:
-	case DW_OP_reg29:
-	case DW_OP_reg30:
-	case DW_OP_reg31:
-	  fprintf_filtered (stream, " [$%s]",
-			    locexpr_regname (arch, op - DW_OP_reg0));
-	  break;
-
-	case DW_OP_regx:
-	  data = safe_read_uleb128 (data, end, &ul);
-	  fprintf_filtered (stream, " %s [$%s]", pulongest (ul),
-			    locexpr_regname (arch, (int) ul));
-	  break;
-
-	case DW_OP_implicit_value:
-	  data = safe_read_uleb128 (data, end, &ul);
-	  data += ul;
-	  fprintf_filtered (stream, " %s", pulongest (ul));
-	  break;
-
-	case DW_OP_breg0:
-	case DW_OP_breg1:
-	case DW_OP_breg2:
-	case DW_OP_breg3:
-	case DW_OP_breg4:
-	case DW_OP_breg5:
-	case DW_OP_breg6:
-	case DW_OP_breg7:
-	case DW_OP_breg8:
-	case DW_OP_breg9:
-	case DW_OP_breg10:
-	case DW_OP_breg11:
-	case DW_OP_breg12:
-	case DW_OP_breg13:
-	case DW_OP_breg14:
-	case DW_OP_breg15:
-	case DW_OP_breg16:
-	case DW_OP_breg17:
-	case DW_OP_breg18:
-	case DW_OP_breg19:
-	case DW_OP_breg20:
-	case DW_OP_breg21:
-	case DW_OP_breg22:
-	case DW_OP_breg23:
-	case DW_OP_breg24:
-	case DW_OP_breg25:
-	case DW_OP_breg26:
-	case DW_OP_breg27:
-	case DW_OP_breg28:
-	case DW_OP_breg29:
-	case DW_OP_breg30:
-	case DW_OP_breg31:
-	  data = safe_read_sleb128 (data, end, &l);
-	  fprintf_filtered (stream, " %s [$%s]", plongest (l),
-			    locexpr_regname (arch, op - DW_OP_breg0));
-	  break;
-
-	case DW_OP_bregx:
-	  data = safe_read_uleb128 (data, end, &ul);
-	  data = safe_read_sleb128 (data, end, &l);
-	  fprintf_filtered (stream, " register %s [$%s] offset %s",
-			    pulongest (ul),
-			    locexpr_regname (arch, (int) ul),
-			    plongest (l));
-	  break;
-
-	case DW_OP_fbreg:
-	  data = safe_read_sleb128 (data, end, &l);
-	  fprintf_filtered (stream, " %s", plongest (l));
-	  break;
-
-	case DW_OP_xderef_size:
-	case DW_OP_deref_size:
-	case DW_OP_pick:
-	  fprintf_filtered (stream, " %d", *data);
-	  ++data;
-	  break;
-
-	case DW_OP_plus_uconst:
-	  data = safe_read_uleb128 (data, end, &ul);
-	  fprintf_filtered (stream, " %s", pulongest (ul));
-	  break;
-
-	case DW_OP_skip:
-	  l = extract_signed_integer (data, 2, gdbarch_byte_order (arch));
-	  data += 2;
-	  fprintf_filtered (stream, " to %ld",
-			    (long) (data + l - start));
-	  break;
-
-	case DW_OP_bra:
-	  l = extract_signed_integer (data, 2, gdbarch_byte_order (arch));
-	  data += 2;
-	  fprintf_filtered (stream, " %ld",
-			    (long) (data + l - start));
-	  break;
-
-	case DW_OP_call2:
-	  ul = extract_unsigned_integer (data, 2, gdbarch_byte_order (arch));
-	  data += 2;
-	  fprintf_filtered (stream, " offset %s", phex_nz (ul, 2));
-	  break;
-
-	case DW_OP_call4:
-	  ul = extract_unsigned_integer (data, 4, gdbarch_byte_order (arch));
-	  data += 4;
-	  fprintf_filtered (stream, " offset %s", phex_nz (ul, 4));
-	  break;
-
-	case DW_OP_call_ref:
-	  ul = extract_unsigned_integer (data, offset_size,
-					 gdbarch_byte_order (arch));
-	  data += offset_size;
-	  fprintf_filtered (stream, " offset %s", phex_nz (ul, offset_size));
-	  break;
-
-        case DW_OP_piece:
-	  data = safe_read_uleb128 (data, end, &ul);
-	  fprintf_filtered (stream, " %s (bytes)", pulongest (ul));
-	  break;
-
-	case DW_OP_bit_piece:
-	  {
-	    uint64_t offset;
-
-	    data = safe_read_uleb128 (data, end, &ul);
-	    data = safe_read_uleb128 (data, end, &offset);
-	    fprintf_filtered (stream, " size %s offset %s (bits)",
-			      pulongest (ul), pulongest (offset));
-	  }
-	  break;
-
-	case DW_OP_implicit_pointer:
-	case DW_OP_GNU_implicit_pointer:
-	  {
-	    ul = extract_unsigned_integer (data, offset_size,
-					   gdbarch_byte_order (arch));
-	    data += offset_size;
-
-	    data = safe_read_sleb128 (data, end, &l);
-
-	    fprintf_filtered (stream, " DIE %s offset %s",
-			      phex_nz (ul, offset_size),
-			      plongest (l));
-	  }
-	  break;
-
-	case DW_OP_deref_type:
-	case DW_OP_GNU_deref_type:
-	  {
-	    int deref_addr_size = *data++;
-	    struct type *type;
-
-	    data = safe_read_uleb128 (data, end, &ul);
-	    cu_offset offset = (cu_offset) ul;
-	    type = dwarf2_get_die_type (offset, per_cu);
-	    fprintf_filtered (stream, "<");
-	    type_print (type, "", stream, -1);
-	    fprintf_filtered (stream, " [0x%s]> %d",
-			      phex_nz (to_underlying (offset), 0),
-			      deref_addr_size);
-	  }
-	  break;
-
-	case DW_OP_const_type:
-	case DW_OP_GNU_const_type:
-	  {
-	    struct type *type;
-
-	    data = safe_read_uleb128 (data, end, &ul);
-	    cu_offset type_die = (cu_offset) ul;
-	    type = dwarf2_get_die_type (type_die, per_cu);
-	    fprintf_filtered (stream, "<");
-	    type_print (type, "", stream, -1);
-	    fprintf_filtered (stream, " [0x%s]>",
-			      phex_nz (to_underlying (type_die), 0));
-	  }
-	  break;
-
-	case DW_OP_regval_type:
-	case DW_OP_GNU_regval_type:
-	  {
-	    uint64_t reg;
-	    struct type *type;
-
-	    data = safe_read_uleb128 (data, end, &reg);
-	    data = safe_read_uleb128 (data, end, &ul);
-	    cu_offset type_die = (cu_offset) ul;
-
-	    type = dwarf2_get_die_type (type_die, per_cu);
-	    fprintf_filtered (stream, "<");
-	    type_print (type, "", stream, -1);
-	    fprintf_filtered (stream, " [0x%s]> [$%s]",
-			      phex_nz (to_underlying (type_die), 0),
-			      locexpr_regname (arch, reg));
-	  }
-	  break;
-
-	case DW_OP_convert:
-	case DW_OP_GNU_convert:
-	case DW_OP_reinterpret:
-	case DW_OP_GNU_reinterpret:
-	  {
-	    data = safe_read_uleb128 (data, end, &ul);
-	    cu_offset type_die = (cu_offset) ul;
-
-	    if (to_underlying (type_die) == 0)
-	      fprintf_filtered (stream, "<0>");
-	    else
-	      {
-		struct type *type;
-
-		type = dwarf2_get_die_type (type_die, per_cu);
-		fprintf_filtered (stream, "<");
-		type_print (type, "", stream, -1);
-		fprintf_filtered (stream, " [0x%s]>",
-				  phex_nz (to_underlying (type_die), 0));
-	      }
-	  }
-	  break;
-
-	case DW_OP_entry_value:
-	case DW_OP_GNU_entry_value:
-	  data = safe_read_uleb128 (data, end, &ul);
-	  fputc_filtered ('\n', stream);
-	  disassemble_dwarf_expression (stream, arch, addr_size, offset_size,
-					start, data, data + ul, indent + 2,
-					all, per_cu);
-	  data += ul;
-	  continue;
-
-	case DW_OP_GNU_parameter_ref:
-	  ul = extract_unsigned_integer (data, 4, gdbarch_byte_order (arch));
-	  data += 4;
-	  fprintf_filtered (stream, " offset %s", phex_nz (ul, 4));
-	  break;
-
-	case DW_OP_addrx:
-	case DW_OP_GNU_addr_index:
-	  data = safe_read_uleb128 (data, end, &ul);
-	  ul = dwarf2_read_addr_index (per_cu, ul);
-	  fprintf_filtered (stream, " 0x%s", phex_nz (ul, addr_size));
-	  break;
-	case DW_OP_GNU_const_index:
-	  data = safe_read_uleb128 (data, end, &ul);
-	  ul = dwarf2_read_addr_index (per_cu, ul);
-	  fprintf_filtered (stream, " %s", pulongest (ul));
-	  break;
-
-	case DW_OP_GNU_variable_value:
-	  ul = extract_unsigned_integer (data, offset_size,
-					 gdbarch_byte_order (arch));
-	  data += offset_size;
-	  fprintf_filtered (stream, " offset %s", phex_nz (ul, offset_size));
-	  break;
-	}
-
-      fprintf_filtered (stream, "\n");
-    }
-
-  return data;
-}
-
-/* Describe a single location, which may in turn consist of multiple
-   pieces.  */
-
-static void
-locexpr_describe_location_1 (struct symbol *symbol, CORE_ADDR addr,
-			     struct ui_file *stream,
-			     const gdb_byte *data, size_t size,
-			     struct objfile *objfile, unsigned int addr_size,
-			     int offset_size, struct dwarf2_per_cu_data *per_cu)
-{
-  const gdb_byte *end = data + size;
-  int first_piece = 1, bad = 0;
-
-  while (data < end)
-    {
-      const gdb_byte *here = data;
-      int disassemble = 1;
-
-      if (first_piece)
-	first_piece = 0;
-      else
-	fprintf_filtered (stream, _(", and "));
-
-      if (!dwarf_always_disassemble)
-	{
-	  data = locexpr_describe_location_piece (symbol, stream,
-						  addr, objfile, per_cu,
-						  data, end, addr_size);
-	  /* If we printed anything, or if we have an empty piece,
-	     then don't disassemble.  */
-	  if (data != here
-	      || data[0] == DW_OP_piece
-	      || data[0] == DW_OP_bit_piece)
-	    disassemble = 0;
-	}
-      if (disassemble)
-	{
-	  fprintf_filtered (stream, _("a complex DWARF expression:\n"));
-	  data = disassemble_dwarf_expression (stream,
-					       get_objfile_arch (objfile),
-					       addr_size, offset_size, data,
-					       data, end, 0,
-					       dwarf_always_disassemble,
-					       per_cu);
-	}
-
-      if (data < end)
-	{
-	  int empty = data == here;
-	      
-	  if (disassemble)
-	    fprintf_filtered (stream, "   ");
-	  if (data[0] == DW_OP_piece)
-	    {
-	      uint64_t bytes;
-
-	      data = safe_read_uleb128 (data + 1, end, &bytes);
-
-	      if (empty)
-		fprintf_filtered (stream, _("an empty %s-byte piece"),
-				  pulongest (bytes));
-	      else
-		fprintf_filtered (stream, _(" [%s-byte piece]"),
-				  pulongest (bytes));
-	    }
-	  else if (data[0] == DW_OP_bit_piece)
-	    {
-	      uint64_t bits, offset;
-
-	      data = safe_read_uleb128 (data + 1, end, &bits);
-	      data = safe_read_uleb128 (data, end, &offset);
-
-	      if (empty)
-		fprintf_filtered (stream,
-				  _("an empty %s-bit piece"),
-				  pulongest (bits));
-	      else
-		fprintf_filtered (stream,
-				  _(" [%s-bit piece, offset %s bits]"),
-				  pulongest (bits), pulongest (offset));
-	    }
-	  else
-	    {
-	      bad = 1;
-	      break;
-	    }
-	}
-    }
-
-  if (bad || data > end)
-    error (_("Corrupted DWARF2 expression for \"%s\"."),
-	   symbol->print_name ());
-}
-
-/* Print a natural-language description of SYMBOL to STREAM.  This
-   version is for a symbol with a single location.  */
-
-static void
-locexpr_describe_location (struct symbol *symbol, CORE_ADDR addr,
-			   struct ui_file *stream)
-{
-  struct dwarf2_locexpr_baton *dlbaton
-    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
-  struct objfile *objfile = dwarf2_per_cu_objfile (dlbaton->per_cu);
-  unsigned int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu);
-  int offset_size = dwarf2_per_cu_offset_size (dlbaton->per_cu);
-
-  locexpr_describe_location_1 (symbol, addr, stream,
-			       dlbaton->data, dlbaton->size,
-			       objfile, addr_size, offset_size,
-			       dlbaton->per_cu);
-}
-
-/* Describe the location of SYMBOL as an agent value in VALUE, generating
-   any necessary bytecode in AX.  */
-
-static void
-locexpr_tracepoint_var_ref (struct symbol *symbol, struct agent_expr *ax,
-			    struct axs_value *value)
-{
-  struct dwarf2_locexpr_baton *dlbaton
-    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
-  unsigned int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu);
-
-  if (dlbaton->size == 0)
-    value->optimized_out = 1;
-  else
-    dwarf2_compile_expr_to_ax (ax, value, addr_size, dlbaton->data,
-			       dlbaton->data + dlbaton->size, dlbaton->per_cu);
-}
-
-/* symbol_computed_ops 'generate_c_location' method.  */
-
-static void
-locexpr_generate_c_location (struct symbol *sym, string_file *stream,
-			     struct gdbarch *gdbarch,
-			     unsigned char *registers_used,
-			     CORE_ADDR pc, const char *result_name)
-{
-  struct dwarf2_locexpr_baton *dlbaton
-    = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (sym);
-  unsigned int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu);
-
-  if (dlbaton->size == 0)
-    error (_("symbol \"%s\" is optimized out"), sym->natural_name ());
-
-  compile_dwarf_expr_to_c (stream, result_name,
-			   sym, pc, gdbarch, registers_used, addr_size,
-			   dlbaton->data, dlbaton->data + dlbaton->size,
-			   dlbaton->per_cu);
-}
-
-/* The set of location functions used with the DWARF-2 expression
-   evaluator.  */
-const struct symbol_computed_ops dwarf2_locexpr_funcs = {
-  locexpr_read_variable,
-  locexpr_read_variable_at_entry,
-  locexpr_get_symbol_read_needs,
-  locexpr_describe_location,
-  0,	/* location_has_loclist */
-  locexpr_tracepoint_var_ref,
-  locexpr_generate_c_location
-};
-
-
-/* Wrapper functions for location lists.  These generally find
-   the appropriate location expression and call something above.  */
-
-/* Return the value of SYMBOL in FRAME using the DWARF-2 expression
-   evaluator to calculate the location.  */
-static struct value *
-loclist_read_variable (struct symbol *symbol, struct frame_info *frame)
-{
-  struct dwarf2_loclist_baton *dlbaton
-    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
-  struct value *val;
-  const gdb_byte *data;
-  size_t size;
-  CORE_ADDR pc = frame ? get_frame_address_in_block (frame) : 0;
-
-  data = dwarf2_find_location_expression (dlbaton, &size, pc);
-  val = dwarf2_evaluate_loc_desc (SYMBOL_TYPE (symbol), frame, data, size,
-				  dlbaton->per_cu);
-
-  return val;
-}
-
-/* Read variable SYMBOL like loclist_read_variable at (callee) FRAME's function
-   entry.  SYMBOL should be a function parameter, otherwise NO_ENTRY_VALUE_ERROR
-   will be thrown.
-
-   Function always returns non-NULL value, it may be marked optimized out if
-   inferior frame information is not available.  It throws NO_ENTRY_VALUE_ERROR
-   if it cannot resolve the parameter for any reason.  */
-
-static struct value *
-loclist_read_variable_at_entry (struct symbol *symbol, struct frame_info *frame)
-{
-  struct dwarf2_loclist_baton *dlbaton
-    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
-  const gdb_byte *data;
-  size_t size;
-  CORE_ADDR pc;
-
-  if (frame == NULL || !get_frame_func_if_available (frame, &pc))
-    return allocate_optimized_out_value (SYMBOL_TYPE (symbol));
-
-  data = dwarf2_find_location_expression (dlbaton, &size, pc);
-  if (data == NULL)
-    return allocate_optimized_out_value (SYMBOL_TYPE (symbol));
-
-  return value_of_dwarf_block_entry (SYMBOL_TYPE (symbol), frame, data, size);
-}
-
-/* Implementation of get_symbol_read_needs from
-   symbol_computed_ops.  */
-
-static enum symbol_needs_kind
-loclist_symbol_needs (struct symbol *symbol)
-{
-  /* If there's a location list, then assume we need to have a frame
-     to choose the appropriate location expression.  With tracking of
-     global variables this is not necessarily true, but such tracking
-     is disabled in GCC at the moment until we figure out how to
-     represent it.  */
-
-  return SYMBOL_NEEDS_FRAME;
-}
-
-/* Print a natural-language description of SYMBOL to STREAM.  This
-   version applies when there is a list of different locations, each
-   with a specified address range.  */
-
-static void
-loclist_describe_location (struct symbol *symbol, CORE_ADDR addr,
-			   struct ui_file *stream)
-{
-  struct dwarf2_loclist_baton *dlbaton
-    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
-  const gdb_byte *loc_ptr, *buf_end;
-  struct objfile *objfile = dwarf2_per_cu_objfile (dlbaton->per_cu);
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  unsigned int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu);
-  int offset_size = dwarf2_per_cu_offset_size (dlbaton->per_cu);
-  int signed_addr_p = bfd_get_sign_extend_vma (objfile->obfd);
-  /* Adjust base_address for relocatable objects.  */
-  CORE_ADDR base_offset = dwarf2_per_cu_text_offset (dlbaton->per_cu);
-  CORE_ADDR base_address = dlbaton->base_address + base_offset;
-  int done = 0;
-
-  loc_ptr = dlbaton->data;
-  buf_end = dlbaton->data + dlbaton->size;
-
-  fprintf_filtered (stream, _("multi-location:\n"));
-
-  /* Iterate through locations until we run out.  */
-  while (!done)
-    {
-      CORE_ADDR low = 0, high = 0; /* init for gcc -Wall */
-      int length;
-      enum debug_loc_kind kind;
-      const gdb_byte *new_ptr = NULL; /* init for gcc -Wall */
-
-      if (dlbaton->from_dwo)
-	kind = decode_debug_loc_dwo_addresses (dlbaton->per_cu,
-					       loc_ptr, buf_end, &new_ptr,
-					       &low, &high, byte_order);
-      else
-	kind = decode_debug_loc_addresses (loc_ptr, buf_end, &new_ptr,
-					   &low, &high,
-					   byte_order, addr_size,
-					   signed_addr_p);
-      loc_ptr = new_ptr;
-      switch (kind)
-	{
-	case DEBUG_LOC_END_OF_LIST:
-	  done = 1;
-	  continue;
-	case DEBUG_LOC_BASE_ADDRESS:
-	  base_address = high + base_offset;
-	  fprintf_filtered (stream, _("  Base address %s"),
-			    paddress (gdbarch, base_address));
-	  continue;
-	case DEBUG_LOC_START_END:
-	case DEBUG_LOC_START_LENGTH:
-	  break;
-	case DEBUG_LOC_BUFFER_OVERFLOW:
-	case DEBUG_LOC_INVALID_ENTRY:
-	  error (_("Corrupted DWARF expression for symbol \"%s\"."),
-		 symbol->print_name ());
-	default:
-	  gdb_assert_not_reached ("bad debug_loc_kind");
-	}
-
-      /* Otherwise, a location expression entry.  */
-      low += base_address;
-      high += base_address;
-
-      low = gdbarch_adjust_dwarf2_addr (gdbarch, low);
-      high = gdbarch_adjust_dwarf2_addr (gdbarch, high);
-
-      length = extract_unsigned_integer (loc_ptr, 2, byte_order);
-      loc_ptr += 2;
-
-      /* (It would improve readability to print only the minimum
-	 necessary digits of the second number of the range.)  */
-      fprintf_filtered (stream, _("  Range %s-%s: "),
-			paddress (gdbarch, low), paddress (gdbarch, high));
-
-      /* Now describe this particular location.  */
-      locexpr_describe_location_1 (symbol, low, stream, loc_ptr, length,
-				   objfile, addr_size, offset_size,
-				   dlbaton->per_cu);
-
-      fprintf_filtered (stream, "\n");
-
-      loc_ptr += length;
-    }
-}
-
-/* Describe the location of SYMBOL as an agent value in VALUE, generating
-   any necessary bytecode in AX.  */
-static void
-loclist_tracepoint_var_ref (struct symbol *symbol, struct agent_expr *ax,
-			    struct axs_value *value)
-{
-  struct dwarf2_loclist_baton *dlbaton
-    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
-  const gdb_byte *data;
-  size_t size;
-  unsigned int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu);
-
-  data = dwarf2_find_location_expression (dlbaton, &size, ax->scope);
-  if (size == 0)
-    value->optimized_out = 1;
-  else
-    dwarf2_compile_expr_to_ax (ax, value, addr_size, data, data + size,
-			       dlbaton->per_cu);
-}
-
-/* symbol_computed_ops 'generate_c_location' method.  */
-
-static void
-loclist_generate_c_location (struct symbol *sym, string_file *stream,
-			     struct gdbarch *gdbarch,
-			     unsigned char *registers_used,
-			     CORE_ADDR pc, const char *result_name)
-{
-  struct dwarf2_loclist_baton *dlbaton
-    = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (sym);
-  unsigned int addr_size = dwarf2_per_cu_addr_size (dlbaton->per_cu);
-  const gdb_byte *data;
-  size_t size;
-
-  data = dwarf2_find_location_expression (dlbaton, &size, pc);
-  if (size == 0)
-    error (_("symbol \"%s\" is optimized out"), sym->natural_name ());
-
-  compile_dwarf_expr_to_c (stream, result_name,
-			   sym, pc, gdbarch, registers_used, addr_size,
-			   data, data + size,
-			   dlbaton->per_cu);
-}
-
-/* The set of location functions used with the DWARF-2 expression
-   evaluator and location lists.  */
-const struct symbol_computed_ops dwarf2_loclist_funcs = {
-  loclist_read_variable,
-  loclist_read_variable_at_entry,
-  loclist_symbol_needs,
-  loclist_describe_location,
-  1,	/* location_has_loclist */
-  loclist_tracepoint_var_ref,
-  loclist_generate_c_location
-};
-
-void
-_initialize_dwarf2loc (void)
-{
-  add_setshow_zuinteger_cmd ("entry-values", class_maintenance,
-			     &entry_values_debug,
-			     _("Set entry values and tail call frames "
-			       "debugging."),
-			     _("Show entry values and tail call frames "
-			       "debugging."),
-			     _("When non-zero, the process of determining "
-			       "parameter values from function entry point "
-			       "and tail call frames will be printed."),
-			     NULL,
-			     show_entry_values_debug,
-			     &setdebuglist, &showdebuglist);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2loc.h ./gdb/dwarf2loc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2loc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf2loc.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,324 +0,0 @@
-/* DWARF 2 location expression support for GDB.
-
-   Copyright (C) 2003-2020 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/>.  */
-
-#if !defined (DWARF2LOC_H)
-#define DWARF2LOC_H
-
-#include "dwarf2expr.h"
-
-struct symbol_computed_ops;
-struct objfile;
-struct dwarf2_per_cu_data;
-struct dwarf2_loclist_baton;
-struct agent_expr;
-struct axs_value;
-
-/* This header is private to the DWARF-2 reader.  It is shared between
-   dwarf2read.c and dwarf2loc.c.  */
-
-/* `set debug entry-values' setting.  */
-extern unsigned int entry_values_debug;
-
-/* Return the OBJFILE associated with the compilation unit CU.  If CU
-   came from a separate debuginfo file, then the master objfile is
-   returned.  */
-struct objfile *dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *cu);
-
-/* Return the address size given in the compilation unit header for CU.  */
-int dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *cu);
-
-/* Return the DW_FORM_ref_addr size given in the compilation unit header for
-   CU.  */
-int dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *cu);
-
-/* Return the offset size given in the compilation unit header for CU.  */
-int dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *cu);
-
-/* Return the text offset of the CU.  The returned offset comes from
-   this CU's objfile.  If this objfile came from a separate debuginfo
-   file, then the offset may be different from the corresponding
-   offset in the parent objfile.  */
-CORE_ADDR dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *cu);
-
-short dwarf2_version (struct dwarf2_per_cu_data *per_cu);
-
-/* Find a particular location expression from a location list.  */
-const gdb_byte *dwarf2_find_location_expression
-  (struct dwarf2_loclist_baton *baton,
-   size_t *locexpr_length,
-   CORE_ADDR pc);
-
-struct dwarf2_locexpr_baton dwarf2_fetch_die_loc_sect_off
-  (sect_offset offset_in_cu, struct dwarf2_per_cu_data *per_cu,
-   CORE_ADDR (*get_frame_pc) (void *baton),
-   void *baton, bool resolve_abstract_p = false);
-
-struct dwarf2_locexpr_baton dwarf2_fetch_die_loc_cu_off
-  (cu_offset offset_in_cu, struct dwarf2_per_cu_data *per_cu,
-   CORE_ADDR (*get_frame_pc) (void *baton),
-   void *baton);
-
-extern const gdb_byte *dwarf2_fetch_constant_bytes (sect_offset,
-						    struct dwarf2_per_cu_data *,
-						    struct obstack *,
-						    LONGEST *);
-
-struct type *dwarf2_fetch_die_type_sect_off (sect_offset,
-					     struct dwarf2_per_cu_data *);
-
-struct type *dwarf2_get_die_type (cu_offset die_offset,
-				  struct dwarf2_per_cu_data *per_cu);
-
-/* Find the frame base information for FRAMEFUNC at PC.  START is an
-   out parameter which is set to point to the DWARF expression to
-   compute.  LENGTH is an out parameter which is set to the length of
-   the DWARF expression.  This throws an exception on error or if an
-   expression is not found; the returned length will never be
-   zero.  */
-
-extern void func_get_frame_base_dwarf_block (struct symbol *framefunc,
-					     CORE_ADDR pc,
-					     const gdb_byte **start,
-					     size_t *length);
-
-/* Evaluate a location description, starting at DATA and with length
-   SIZE, to find the current location of variable of TYPE in the context
-   of FRAME.  */
-
-struct value *dwarf2_evaluate_loc_desc (struct type *type,
-					struct frame_info *frame,
-					const gdb_byte *data,
-					size_t size,
-					struct dwarf2_per_cu_data *per_cu);
-
-/* A chain of addresses that might be needed to resolve a dynamic
-   property.  */
-
-struct property_addr_info
-{
-  /* The type of the object whose dynamic properties, if any, are
-     being resolved.  */
-  struct type *type;
-
-  /* If not NULL, a buffer containing the object's value.  */
-  const gdb_byte *valaddr;
-
-  /* The address of that object.  */
-  CORE_ADDR addr;
-
-  /* If not NULL, a pointer to the info for the object containing
-     the object described by this node.  */
-  struct property_addr_info *next;
-};
-
-/* Converts a dynamic property into a static one.  FRAME is the frame in which
-   the property is evaluated; if NULL, the selected frame (if any) is used
-   instead.
-
-   ADDR_STACK is the stack of addresses that might be needed to evaluate the
-   property. When evaluating a property that is not related to a type, it can
-   be NULL.
-
-   Returns true if PROP could be converted and the static value is passed
-   back into VALUE, otherwise returns false.  */
-
-bool dwarf2_evaluate_property (const struct dynamic_prop *prop,
-			       struct frame_info *frame,
-			       struct property_addr_info *addr_stack,
-			       CORE_ADDR *value);
-
-/* A helper for the compiler interface that compiles a single dynamic
-   property to C code.
-
-   STREAM is where the C code is to be written.
-   RESULT_NAME is the name of the generated variable.
-   GDBARCH is the architecture to use.
-   REGISTERS_USED is a bit-vector that is filled to note which
-   registers are required by the generated expression.
-   PROP is the property for which code is generated.
-   ADDRESS is the address at which the property is considered to be
-   evaluated.
-   SYM the originating symbol, used for error reporting.  */
-
-void dwarf2_compile_property_to_c (string_file *stream,
-				   const char *result_name,
-				   struct gdbarch *gdbarch,
-				   unsigned char *registers_used,
-				   const struct dynamic_prop *prop,
-				   CORE_ADDR address,
-				   struct symbol *sym);
-
-CORE_ADDR dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
-				  unsigned int addr_index);
-
-/* The symbol location baton types used by the DWARF-2 reader (i.e.
-   SYMBOL_LOCATION_BATON for a LOC_COMPUTED symbol).  "struct
-   dwarf2_locexpr_baton" is for a symbol with a single location
-   expression; "struct dwarf2_loclist_baton" is for a symbol with a
-   location list.  */
-
-struct dwarf2_locexpr_baton
-{
-  /* Pointer to the start of the location expression.  Valid only if SIZE is
-     not zero.  */
-  const gdb_byte *data;
-
-  /* Length of the location expression.  For optimized out expressions it is
-     zero.  */
-  size_t size;
-
-  /* When true this location expression is a reference and actually
-     describes the address at which the value of the attribute can be
-     found.  When false the expression provides the value of the attribute
-     directly.  */
-  bool is_reference;
-
-  /* The compilation unit containing the symbol whose location
-     we're computing.  */
-  struct dwarf2_per_cu_data *per_cu;
-};
-
-struct dwarf2_loclist_baton
-{
-  /* The initial base address for the location list, based on the compilation
-     unit.  */
-  CORE_ADDR base_address;
-
-  /* Pointer to the start of the location list.  */
-  const gdb_byte *data;
-
-  /* Length of the location list.  */
-  size_t size;
-
-  /* The compilation unit containing the symbol whose location
-     we're computing.  */
-  struct dwarf2_per_cu_data *per_cu;
-
-  /* Non-zero if the location list lives in .debug_loc.dwo.
-     The format of entries in this section are different.  */
-  unsigned char from_dwo;
-};
-
-/* The baton used when a dynamic property is an offset to a parent
-   type.  This can be used, for instance, then the bound of an array
-   inside a record is determined by the value of another field inside
-   that record.  */
-
-struct dwarf2_offset_baton
-{
-  /* The offset from the parent type where the value of the property
-     is stored.  In the example provided above, this would be the offset
-     of the field being used as the array bound.  */
-  LONGEST offset;
-
-  /* The type of the object whose property is dynamic.  In the example
-     provided above, this would the array's index type.  */
-  struct type *type;
-};
-
-/* A dynamic property is either expressed as a single location expression
-   or a location list.  If the property is an indirection, pointing to
-   another die, keep track of the targeted type in PROPERTY_TYPE.
-   Alternatively, if the property location gives the property value
-   directly then it will have PROPERTY_TYPE.  */
-
-struct dwarf2_property_baton
-{
-  /* If the property is an indirection, we need to evaluate the location
-     in the context of the type PROPERTY_TYPE.  If the property is supplied
-     by value then it will be of PROPERTY_TYPE.  This field should never be
-     NULL.  */
-  struct type *property_type;
-  union
-  {
-    /* Location expression either evaluated in the context of
-       PROPERTY_TYPE, or a value of type PROPERTY_TYPE.  */
-    struct dwarf2_locexpr_baton locexpr;
-
-    /* Location list to be evaluated in the context of PROPERTY_TYPE.  */
-    struct dwarf2_loclist_baton loclist;
-
-    /* The location is an offset to PROPERTY_TYPE.  */
-    struct dwarf2_offset_baton offset_info;
-  };
-};
-
-extern const struct symbol_computed_ops dwarf2_locexpr_funcs;
-extern const struct symbol_computed_ops dwarf2_loclist_funcs;
-
-extern const struct symbol_block_ops dwarf2_block_frame_base_locexpr_funcs;
-extern const struct symbol_block_ops dwarf2_block_frame_base_loclist_funcs;
-
-/* Compile a DWARF location expression to an agent expression.
-   
-   EXPR is the agent expression we are building.
-   LOC is the agent value we modify.
-   ARCH is the architecture.
-   ADDR_SIZE is the size of addresses, in bytes.
-   OP_PTR is the start of the location expression.
-   OP_END is one past the last byte of the location expression.
-   
-   This will throw an exception for various kinds of errors -- for
-   example, if the expression cannot be compiled, or if the expression
-   is invalid.  */
-
-extern void dwarf2_compile_expr_to_ax (struct agent_expr *expr,
-				       struct axs_value *loc,
-				       unsigned int addr_size,
-				       const gdb_byte *op_ptr,
-				       const gdb_byte *op_end,
-				       struct dwarf2_per_cu_data *per_cu);
-
-/* Determined tail calls for constructing virtual tail call frames.  */
-
-struct call_site_chain
-  {
-    /* Initially CALLERS == CALLEES == LENGTH.  For partially ambiguous result
-       CALLERS + CALLEES < LENGTH.  */
-    int callers, callees, length;
-
-    /* Variably sized array with LENGTH elements.  Later [0..CALLERS-1] contain
-       top (GDB "prev") sites and [LENGTH-CALLEES..LENGTH-1] contain bottom
-       (GDB "next") sites.  One is interested primarily in the PC field.  */
-    struct call_site *call_site[1];
-  };
-
-struct call_site_stuff;
-extern struct call_site_chain *call_site_find_chain (struct gdbarch *gdbarch,
-						     CORE_ADDR caller_pc,
-						     CORE_ADDR callee_pc);
-
-/* A helper function to convert a DWARF register to an arch register.
-   ARCH is the architecture.
-   DWARF_REG is the register.
-   If DWARF_REG is bad then a complaint is issued and -1 is returned.
-   Note: Some targets get this wrong.  */
-
-extern int dwarf_reg_to_regnum (struct gdbarch *arch, int dwarf_reg);
-
-/* A wrapper on dwarf_reg_to_regnum to throw an exception if the
-   DWARF register cannot be translated to an architecture register.
-   This takes a ULONGEST instead of an int because some callers actually have
-   a ULONGEST.  Negative values passed as ints will still be flagged as
-   invalid.  */
-
-extern int dwarf_reg_to_regnum_or_error (struct gdbarch *arch,
-					 ULONGEST dwarf_reg);
-
-#endif /* dwarf2loc.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2read.c ./gdb/dwarf2read.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2read.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf2read.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,26207 +0,0 @@
-/* DWARF 2 debugging format support for GDB.
-
-   Copyright (C) 1994-2020 Free Software Foundation, Inc.
-
-   Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
-   Inc.  with support from Florida State University (under contract
-   with the Ada Joint Program Office), and Silicon Graphics, Inc.
-   Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
-   based on Fred Fish's (Cygnus Support) implementation of DWARF 1
-   support.
-
-   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/>.  */
-
-/* FIXME: Various die-reading functions need to be more careful with
-   reading off the end of the section.
-   E.g., load_partial_dies, read_partial_die.  */
-
-#include "defs.h"
-#include "dwarf2read.h"
-#include "dwarf-index-cache.h"
-#include "dwarf-index-common.h"
-#include "bfd.h"
-#include "elf-bfd.h"
-#include "symtab.h"
-#include "gdbtypes.h"
-#include "objfiles.h"
-#include "dwarf2.h"
-#include "buildsym.h"
-#include "demangle.h"
-#include "gdb-demangle.h"
-#include "filenames.h"	/* for DOSish file names */
-#include "macrotab.h"
-#include "language.h"
-#include "complaints.h"
-#include "dwarf2expr.h"
-#include "dwarf2loc.h"
-#include "cp-support.h"
-#include "hashtab.h"
-#include "command.h"
-#include "gdbcmd.h"
-#include "block.h"
-#include "addrmap.h"
-#include "typeprint.h"
-#include "psympriv.h"
-#include "c-lang.h"
-#include "go-lang.h"
-#include "valprint.h"
-#include "gdbcore.h" /* for gnutarget */
-#include "gdb/gdb-index.h"
-#include "gdb_bfd.h"
-#include "f-lang.h"
-#include "source.h"
-#include "build-id.h"
-#include "namespace.h"
-#include "gdbsupport/function-view.h"
-#include "gdbsupport/gdb_optional.h"
-#include "gdbsupport/underlying.h"
-#include "gdbsupport/hash_enum.h"
-#include "filename-seen-cache.h"
-#include "producer.h"
-#include <fcntl.h>
-#include <algorithm>
-#include <unordered_map>
-#include "gdbsupport/selftest.h"
-#include "rust-lang.h"
-#include "gdbsupport/pathstuff.h"
-
-/* When == 1, print basic high level tracing messages.
-   When > 1, be more verbose.
-   This is in contrast to the low level DIE reading of dwarf_die_debug.  */
-static unsigned int dwarf_read_debug = 0;
-
-/* When non-zero, dump DIEs after they are read in.  */
-static unsigned int dwarf_die_debug = 0;
-
-/* When non-zero, dump line number entries as they are read in.  */
-static unsigned int dwarf_line_debug = 0;
-
-/* When true, cross-check physname against demangler.  */
-static bool check_physname = false;
-
-/* When true, do not reject deprecated .gdb_index sections.  */
-static bool use_deprecated_index_sections = false;
-
-static const struct objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
-
-/* The "aclass" indices for various kinds of computed DWARF symbols.  */
-
-static int dwarf2_locexpr_index;
-static int dwarf2_loclist_index;
-static int dwarf2_locexpr_block_index;
-static int dwarf2_loclist_block_index;
-
-/* An index into a (C++) symbol name component in a symbol name as
-   recorded in the mapped_index's symbol table.  For each C++ symbol
-   in the symbol table, we record one entry for the start of each
-   component in the symbol in a table of name components, and then
-   sort the table, in order to be able to binary search symbol names,
-   ignoring leading namespaces, both completion and regular look up.
-   For example, for symbol "A::B::C", we'll have an entry that points
-   to "A::B::C", another that points to "B::C", and another for "C".
-   Note that function symbols in GDB index have no parameter
-   information, just the function/method names.  You can convert a
-   name_component to a "const char *" using the
-   'mapped_index::symbol_name_at(offset_type)' method.  */
-
-struct name_component
-{
-  /* Offset in the symbol name where the component starts.  Stored as
-     a (32-bit) offset instead of a pointer to save memory and improve
-     locality on 64-bit architectures.  */
-  offset_type name_offset;
-
-  /* The symbol's index in the symbol and constant pool tables of a
-     mapped_index.  */
-  offset_type idx;
-};
-
-/* Base class containing bits shared by both .gdb_index and
-   .debug_name indexes.  */
-
-struct mapped_index_base
-{
-  mapped_index_base () = default;
-  DISABLE_COPY_AND_ASSIGN (mapped_index_base);
-
-  /* The name_component table (a sorted vector).  See name_component's
-     description above.  */
-  std::vector<name_component> name_components;
-
-  /* How NAME_COMPONENTS is sorted.  */
-  enum case_sensitivity name_components_casing;
-
-  /* Return the number of names in the symbol table.  */
-  virtual size_t symbol_name_count () const = 0;
-
-  /* Get the name of the symbol at IDX in the symbol table.  */
-  virtual const char *symbol_name_at (offset_type idx) const = 0;
-
-  /* Return whether the name at IDX in the symbol table should be
-     ignored.  */
-  virtual bool symbol_name_slot_invalid (offset_type idx) const
-  {
-    return false;
-  }
-
-  /* Build the symbol name component sorted vector, if we haven't
-     yet.  */
-  void build_name_components ();
-
-  /* Returns the lower (inclusive) and upper (exclusive) bounds of the
-     possible matches for LN_NO_PARAMS in the name component
-     vector.  */
-  std::pair<std::vector<name_component>::const_iterator,
-	    std::vector<name_component>::const_iterator>
-    find_name_components_bounds (const lookup_name_info &ln_no_params,
-				 enum language lang) const;
-
-  /* Prevent deleting/destroying via a base class pointer.  */
-protected:
-  ~mapped_index_base() = default;
-};
-
-/* A description of the mapped index.  The file format is described in
-   a comment by the code that writes the index.  */
-struct mapped_index final : public mapped_index_base
-{
-  /* A slot/bucket in the symbol table hash.  */
-  struct symbol_table_slot
-  {
-    const offset_type name;
-    const offset_type vec;
-  };
-
-  /* Index data format version.  */
-  int version = 0;
-
-  /* The address table data.  */
-  gdb::array_view<const gdb_byte> address_table;
-
-  /* The symbol table, implemented as a hash table.  */
-  gdb::array_view<symbol_table_slot> symbol_table;
-
-  /* A pointer to the constant pool.  */
-  const char *constant_pool = nullptr;
-
-  bool symbol_name_slot_invalid (offset_type idx) const override
-  {
-    const auto &bucket = this->symbol_table[idx];
-    return bucket.name == 0 && bucket.vec == 0;
-  }
-
-  /* Convenience method to get at the name of the symbol at IDX in the
-     symbol table.  */
-  const char *symbol_name_at (offset_type idx) const override
-  { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
-
-  size_t symbol_name_count () const override
-  { return this->symbol_table.size (); }
-};
-
-/* A description of the mapped .debug_names.
-   Uninitialized map has CU_COUNT 0.  */
-struct mapped_debug_names final : public mapped_index_base
-{
-  mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
-  : dwarf2_per_objfile (dwarf2_per_objfile_)
-  {}
-
-  struct dwarf2_per_objfile *dwarf2_per_objfile;
-  bfd_endian dwarf5_byte_order;
-  bool dwarf5_is_dwarf64;
-  bool augmentation_is_gdb;
-  uint8_t offset_size;
-  uint32_t cu_count = 0;
-  uint32_t tu_count, bucket_count, name_count;
-  const gdb_byte *cu_table_reordered, *tu_table_reordered;
-  const uint32_t *bucket_table_reordered, *hash_table_reordered;
-  const gdb_byte *name_table_string_offs_reordered;
-  const gdb_byte *name_table_entry_offs_reordered;
-  const gdb_byte *entry_pool;
-
-  struct index_val
-  {
-    ULONGEST dwarf_tag;
-    struct attr
-    {
-      /* Attribute name DW_IDX_*.  */
-      ULONGEST dw_idx;
-
-      /* Attribute form DW_FORM_*.  */
-      ULONGEST form;
-
-      /* Value if FORM is DW_FORM_implicit_const.  */
-      LONGEST implicit_const;
-    };
-    std::vector<attr> attr_vec;
-  };
-
-  std::unordered_map<ULONGEST, index_val> abbrev_map;
-
-  const char *namei_to_name (uint32_t namei) const;
-
-  /* Implementation of the mapped_index_base virtual interface, for
-     the name_components cache.  */
-
-  const char *symbol_name_at (offset_type idx) const override
-  { return namei_to_name (idx); }
-
-  size_t symbol_name_count () const override
-  { return this->name_count; }
-};
-
-/* See dwarf2read.h.  */
-
-dwarf2_per_objfile *
-get_dwarf2_per_objfile (struct objfile *objfile)
-{
-  return dwarf2_objfile_data_key.get (objfile);
-}
-
-/* Default names of the debugging sections.  */
-
-/* Note that if the debugging section has been compressed, it might
-   have a name like .zdebug_info.  */
-
-static const struct dwarf2_debug_sections dwarf2_elf_names =
-{
-  { ".debug_info", ".zdebug_info" },
-  { ".debug_abbrev", ".zdebug_abbrev" },
-  { ".debug_line", ".zdebug_line" },
-  { ".debug_loc", ".zdebug_loc" },
-  { ".debug_loclists", ".zdebug_loclists" },
-  { ".debug_macinfo", ".zdebug_macinfo" },
-  { ".debug_macro", ".zdebug_macro" },
-  { ".debug_str", ".zdebug_str" },
-  { ".debug_line_str", ".zdebug_line_str" },
-  { ".debug_ranges", ".zdebug_ranges" },
-  { ".debug_rnglists", ".zdebug_rnglists" },
-  { ".debug_types", ".zdebug_types" },
-  { ".debug_addr", ".zdebug_addr" },
-  { ".debug_frame", ".zdebug_frame" },
-  { ".eh_frame", NULL },
-  { ".gdb_index", ".zgdb_index" },
-  { ".debug_names", ".zdebug_names" },
-  { ".debug_aranges", ".zdebug_aranges" },
-  23
-};
-
-/* List of DWO/DWP sections.  */
-
-static const struct dwop_section_names
-{
-  struct dwarf2_section_names abbrev_dwo;
-  struct dwarf2_section_names info_dwo;
-  struct dwarf2_section_names line_dwo;
-  struct dwarf2_section_names loc_dwo;
-  struct dwarf2_section_names loclists_dwo;
-  struct dwarf2_section_names macinfo_dwo;
-  struct dwarf2_section_names macro_dwo;
-  struct dwarf2_section_names str_dwo;
-  struct dwarf2_section_names str_offsets_dwo;
-  struct dwarf2_section_names types_dwo;
-  struct dwarf2_section_names cu_index;
-  struct dwarf2_section_names tu_index;
-}
-dwop_section_names =
-{
-  { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
-  { ".debug_info.dwo", ".zdebug_info.dwo" },
-  { ".debug_line.dwo", ".zdebug_line.dwo" },
-  { ".debug_loc.dwo", ".zdebug_loc.dwo" },
-  { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
-  { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
-  { ".debug_macro.dwo", ".zdebug_macro.dwo" },
-  { ".debug_str.dwo", ".zdebug_str.dwo" },
-  { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
-  { ".debug_types.dwo", ".zdebug_types.dwo" },
-  { ".debug_cu_index", ".zdebug_cu_index" },
-  { ".debug_tu_index", ".zdebug_tu_index" },
-};
-
-/* local data types */
-
-/* The data in a compilation unit header, after target2host
-   translation, looks like this.  */
-struct comp_unit_head
-{
-  unsigned int length;
-  short version;
-  unsigned char addr_size;
-  unsigned char signed_addr_p;
-  sect_offset abbrev_sect_off;
-
-  /* Size of file offsets; either 4 or 8.  */
-  unsigned int offset_size;
-
-  /* Size of the length field; either 4 or 12.  */
-  unsigned int initial_length_size;
-
-  enum dwarf_unit_type unit_type;
-
-  /* Offset to the first byte of this compilation unit header in the
-     .debug_info section, for resolving relative reference dies.  */
-  sect_offset sect_off;
-
-  /* Offset to first die in this cu from the start of the cu.
-     This will be the first byte following the compilation unit header.  */
-  cu_offset first_die_cu_offset;
-
-
-  /* 64-bit signature of this unit. For type units, it denotes the signature of
-     the type (DW_UT_type in DWARF 4, additionally DW_UT_split_type in DWARF 5).
-     Also used in DWARF 5, to denote the dwo id when the unit type is
-     DW_UT_skeleton or DW_UT_split_compile.  */
-  ULONGEST signature;
-
-  /* For types, offset in the type's DIE of the type defined by this TU.  */
-  cu_offset type_cu_offset_in_tu;
-};
-
-/* Type used for delaying computation of method physnames.
-   See comments for compute_delayed_physnames.  */
-struct delayed_method_info
-{
-  /* The type to which the method is attached, i.e., its parent class.  */
-  struct type *type;
-
-  /* The index of the method in the type's function fieldlists.  */
-  int fnfield_index;
-
-  /* The index of the method in the fieldlist.  */
-  int index;
-
-  /* The name of the DIE.  */
-  const char *name;
-
-  /*  The DIE associated with this method.  */
-  struct die_info *die;
-};
-
-/* Internal state when decoding a particular compilation unit.  */
-struct dwarf2_cu
-{
-  explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
-  ~dwarf2_cu ();
-
-  DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
-
-  /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
-     Create the set of symtabs used by this TU, or if this TU is sharing
-     symtabs with another TU and the symtabs have already been created
-     then restore those symtabs in the line header.
-     We don't need the pc/line-number mapping for type units.  */
-  void setup_type_unit_groups (struct die_info *die);
-
-  /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
-     buildsym_compunit constructor.  */
-  struct compunit_symtab *start_symtab (const char *name,
-					const char *comp_dir,
-					CORE_ADDR low_pc);
-
-  /* Reset the builder.  */
-  void reset_builder () { m_builder.reset (); }
-
-  /* The header of the compilation unit.  */
-  struct comp_unit_head header {};
-
-  /* Base address of this compilation unit.  */
-  CORE_ADDR base_address = 0;
-
-  /* Non-zero if base_address has been set.  */
-  int base_known = 0;
-
-  /* The language we are debugging.  */
-  enum language language = language_unknown;
-  const struct language_defn *language_defn = nullptr;
-
-  const char *producer = nullptr;
-
-private:
-  /* The symtab builder for this CU.  This is only non-NULL when full
-     symbols are being read.  */
-  std::unique_ptr<buildsym_compunit> m_builder;
-
-public:
-  /* The generic symbol table building routines have separate lists for
-     file scope symbols and all all other scopes (local scopes).  So
-     we need to select the right one to pass to add_symbol_to_list().
-     We do it by keeping a pointer to the correct list in list_in_scope.
-
-     FIXME: The original dwarf code just treated the file scope as the
-     first local scope, and all other local scopes as nested local
-     scopes, and worked fine.  Check to see if we really need to
-     distinguish these in buildsym.c.  */
-  struct pending **list_in_scope = nullptr;
-
-  /* Hash table holding all the loaded partial DIEs
-     with partial_die->offset.SECT_OFF as hash.  */
-  htab_t partial_dies = nullptr;
-
-  /* Storage for things with the same lifetime as this read-in compilation
-     unit, including partial DIEs.  */
-  auto_obstack comp_unit_obstack;
-
-  /* When multiple dwarf2_cu structures are living in memory, this field
-     chains them all together, so that they can be released efficiently.
-     We will probably also want a generation counter so that most-recently-used
-     compilation units are cached...  */
-  struct dwarf2_per_cu_data *read_in_chain = nullptr;
-
-  /* Backlink to our per_cu entry.  */
-  struct dwarf2_per_cu_data *per_cu;
-
-  /* How many compilation units ago was this CU last referenced?  */
-  int last_used = 0;
-
-  /* A hash table of DIE cu_offset for following references with
-     die_info->offset.sect_off as hash.  */
-  htab_t die_hash = nullptr;
-
-  /* Full DIEs if read in.  */
-  struct die_info *dies = nullptr;
-
-  /* A set of pointers to dwarf2_per_cu_data objects for compilation
-     units referenced by this one.  Only set during full symbol processing;
-     partial symbol tables do not have dependencies.  */
-  htab_t dependencies = nullptr;
-
-  /* Header data from the line table, during full symbol processing.  */
-  struct line_header *line_header = nullptr;
-  /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
-     it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
-     this is the DW_TAG_compile_unit die for this CU.  We'll hold on
-     to the line header as long as this DIE is being processed.  See
-     process_die_scope.  */
-  die_info *line_header_die_owner = nullptr;
-
-  /* A list of methods which need to have physnames computed
-     after all type information has been read.  */
-  std::vector<delayed_method_info> method_list;
-
-  /* To be copied to symtab->call_site_htab.  */
-  htab_t call_site_htab = nullptr;
-
-  /* Non-NULL if this CU came from a DWO file.
-     There is an invariant here that is important to remember:
-     Except for attributes copied from the top level DIE in the "main"
-     (or "stub") file in preparation for reading the DWO file
-     (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
-     Either there isn't a DWO file (in which case this is NULL and the point
-     is moot), or there is and either we're not going to read it (in which
-     case this is NULL) or there is and we are reading it (in which case this
-     is non-NULL).  */
-  struct dwo_unit *dwo_unit = nullptr;
-
-  /* The DW_AT_addr_base attribute if present, zero otherwise
-     (zero is a valid value though).
-     Note this value comes from the Fission stub CU/TU's DIE.  */
-  ULONGEST addr_base = 0;
-
-  /* The DW_AT_ranges_base attribute if present, zero otherwise
-     (zero is a valid value though).
-     Note this value comes from the Fission stub CU/TU's DIE.
-     Also note that the value is zero in the non-DWO case so this value can
-     be used without needing to know whether DWO files are in use or not.
-     N.B. This does not apply to DW_AT_ranges appearing in
-     DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
-     DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
-     DW_AT_ranges_base *would* have to be applied, and we'd have to care
-     whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
-  ULONGEST ranges_base = 0;
-
-  /* When reading debug info generated by older versions of rustc, we
-     have to rewrite some union types to be struct types with a
-     variant part.  This rewriting must be done after the CU is fully
-     read in, because otherwise at the point of rewriting some struct
-     type might not have been fully processed.  So, we keep a list of
-     all such types here and process them after expansion.  */
-  std::vector<struct type *> rust_unions;
-
-  /* Mark used when releasing cached dies.  */
-  bool mark : 1;
-
-  /* This CU references .debug_loc.  See the symtab->locations_valid field.
-     This test is imperfect as there may exist optimized debug code not using
-     any location list and still facing inlining issues if handled as
-     unoptimized code.  For a future better test see GCC PR other/32998.  */
-  bool has_loclist : 1;
-
-  /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is true
-     if all the producer_is_* fields are valid.  This information is cached
-     because profiling CU expansion showed excessive time spent in
-     producer_is_gxx_lt_4_6.  */
-  bool checked_producer : 1;
-  bool producer_is_gxx_lt_4_6 : 1;
-  bool producer_is_gcc_lt_4_3 : 1;
-  bool producer_is_icc : 1;
-  bool producer_is_icc_lt_14 : 1;
-  bool producer_is_codewarrior : 1;
-
-  /* When true, the file that we're processing is known to have
-     debugging info for C++ namespaces.  GCC 3.3.x did not produce
-     this information, but later versions do.  */
-
-  bool processing_has_namespace_info : 1;
-
-  struct partial_die_info *find_partial_die (sect_offset sect_off);
-
-  /* If this CU was inherited by another CU (via specification,
-     abstract_origin, etc), this is the ancestor CU.  */
-  dwarf2_cu *ancestor;
-
-  /* Get the buildsym_compunit for this CU.  */
-  buildsym_compunit *get_builder ()
-  {
-    /* If this CU has a builder associated with it, use that.  */
-    if (m_builder != nullptr)
-      return m_builder.get ();
-
-    /* Otherwise, search ancestors for a valid builder.  */
-    if (ancestor != nullptr)
-      return ancestor->get_builder ();
-
-    return nullptr;
-  }
-};
-
-/* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
-   This includes type_unit_group and quick_file_names.  */
-
-struct stmt_list_hash
-{
-  /* The DWO unit this table is from or NULL if there is none.  */
-  struct dwo_unit *dwo_unit;
-
-  /* Offset in .debug_line or .debug_line.dwo.  */
-  sect_offset line_sect_off;
-};
-
-/* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
-   an object of this type.  */
-
-struct type_unit_group
-{
-  /* dwarf2read.c's main "handle" on a TU symtab.
-     To simplify things we create an artificial CU that "includes" all the
-     type units using this stmt_list so that the rest of the code still has
-     a "per_cu" handle on the symtab.
-     This PER_CU is recognized by having no section.  */
-#define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
-  struct dwarf2_per_cu_data per_cu;
-
-  /* The TUs that share this DW_AT_stmt_list entry.
-     This is added to while parsing type units to build partial symtabs,
-     and is deleted afterwards and not used again.  */
-  std::vector<signatured_type *> *tus;
-
-  /* The compunit symtab.
-     Type units in a group needn't all be defined in the same source file,
-     so we create an essentially anonymous symtab as the compunit symtab.  */
-  struct compunit_symtab *compunit_symtab;
-
-  /* The data used to construct the hash key.  */
-  struct stmt_list_hash hash;
-
-  /* The number of symtabs from the line header.
-     The value here must match line_header.num_file_names.  */
-  unsigned int num_symtabs;
-
-  /* The symbol tables for this TU (obtained from the files listed in
-     DW_AT_stmt_list).
-     WARNING: The order of entries here must match the order of entries
-     in the line header.  After the first TU using this type_unit_group, the
-     line header for the subsequent TUs is recreated from this.  This is done
-     because we need to use the same symtabs for each TU using the same
-     DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
-     there's no guarantee the line header doesn't have duplicate entries.  */
-  struct symtab **symtabs;
-};
-
-/* These sections are what may appear in a (real or virtual) DWO file.  */
-
-struct dwo_sections
-{
-  struct dwarf2_section_info abbrev;
-  struct dwarf2_section_info line;
-  struct dwarf2_section_info loc;
-  struct dwarf2_section_info loclists;
-  struct dwarf2_section_info macinfo;
-  struct dwarf2_section_info macro;
-  struct dwarf2_section_info str;
-  struct dwarf2_section_info str_offsets;
-  /* In the case of a virtual DWO file, these two are unused.  */
-  struct dwarf2_section_info info;
-  std::vector<dwarf2_section_info> types;
-};
-
-/* CUs/TUs in DWP/DWO files.  */
-
-struct dwo_unit
-{
-  /* Backlink to the containing struct dwo_file.  */
-  struct dwo_file *dwo_file;
-
-  /* The "id" that distinguishes this CU/TU.
-     .debug_info calls this "dwo_id", .debug_types calls this "signature".
-     Since signatures came first, we stick with it for consistency.  */
-  ULONGEST signature;
-
-  /* The section this CU/TU lives in, in the DWO file.  */
-  struct dwarf2_section_info *section;
-
-  /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
-  sect_offset sect_off;
-  unsigned int length;
-
-  /* For types, offset in the type's DIE of the type defined by this TU.  */
-  cu_offset type_offset_in_tu;
-};
-
-/* include/dwarf2.h defines the DWP section codes.
-   It defines a max value but it doesn't define a min value, which we
-   use for error checking, so provide one.  */
-
-enum dwp_v2_section_ids
-{
-  DW_SECT_MIN = 1
-};
-
-/* Data for one DWO file.
-
-   This includes virtual DWO files (a virtual DWO file is a DWO file as it
-   appears in a DWP file).  DWP files don't really have DWO files per se -
-   comdat folding of types "loses" the DWO file they came from, and from
-   a high level view DWP files appear to contain a mass of random types.
-   However, to maintain consistency with the non-DWP case we pretend DWP
-   files contain virtual DWO files, and we assign each TU with one virtual
-   DWO file (generally based on the line and abbrev section offsets -
-   a heuristic that seems to work in practice).  */
-
-struct dwo_file
-{
-  dwo_file () = default;
-  DISABLE_COPY_AND_ASSIGN (dwo_file);
-
-  /* The DW_AT_GNU_dwo_name attribute.
-     For virtual DWO files the name is constructed from the section offsets
-     of abbrev,line,loc,str_offsets so that we combine virtual DWO files
-     from related CU+TUs.  */
-  const char *dwo_name = nullptr;
-
-  /* The DW_AT_comp_dir attribute.  */
-  const char *comp_dir = nullptr;
-
-  /* The bfd, when the file is open.  Otherwise this is NULL.
-     This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
-  gdb_bfd_ref_ptr dbfd;
-
-  /* The sections that make up this DWO file.
-     Remember that for virtual DWO files in DWP V2, these are virtual
-     sections (for lack of a better name).  */
-  struct dwo_sections sections {};
-
-  /* The CUs in the file.
-     Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
-     an extension to handle LLVM's Link Time Optimization output (where
-     multiple source files may be compiled into a single object/dwo pair). */
-  htab_t cus {};
-
-  /* Table of TUs in the file.
-     Each element is a struct dwo_unit.  */
-  htab_t tus {};
-};
-
-/* These sections are what may appear in a DWP file.  */
-
-struct dwp_sections
-{
-  /* These are used by both DWP version 1 and 2.  */
-  struct dwarf2_section_info str;
-  struct dwarf2_section_info cu_index;
-  struct dwarf2_section_info tu_index;
-
-  /* These are only used by DWP version 2 files.
-     In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
-     sections are referenced by section number, and are not recorded here.
-     In DWP version 2 there is at most one copy of all these sections, each
-     section being (effectively) comprised of the concatenation of all of the
-     individual sections that exist in the version 1 format.
-     To keep the code simple we treat each of these concatenated pieces as a
-     section itself (a virtual section?).  */
-  struct dwarf2_section_info abbrev;
-  struct dwarf2_section_info info;
-  struct dwarf2_section_info line;
-  struct dwarf2_section_info loc;
-  struct dwarf2_section_info macinfo;
-  struct dwarf2_section_info macro;
-  struct dwarf2_section_info str_offsets;
-  struct dwarf2_section_info types;
-};
-
-/* These sections are what may appear in a virtual DWO file in DWP version 1.
-   A virtual DWO file is a DWO file as it appears in a DWP file.  */
-
-struct virtual_v1_dwo_sections
-{
-  struct dwarf2_section_info abbrev;
-  struct dwarf2_section_info line;
-  struct dwarf2_section_info loc;
-  struct dwarf2_section_info macinfo;
-  struct dwarf2_section_info macro;
-  struct dwarf2_section_info str_offsets;
-  /* Each DWP hash table entry records one CU or one TU.
-     That is recorded here, and copied to dwo_unit.section.  */
-  struct dwarf2_section_info info_or_types;
-};
-
-/* Similar to virtual_v1_dwo_sections, but for DWP version 2.
-   In version 2, the sections of the DWO files are concatenated together
-   and stored in one section of that name.  Thus each ELF section contains
-   several "virtual" sections.  */
-
-struct virtual_v2_dwo_sections
-{
-  bfd_size_type abbrev_offset;
-  bfd_size_type abbrev_size;
-
-  bfd_size_type line_offset;
-  bfd_size_type line_size;
-
-  bfd_size_type loc_offset;
-  bfd_size_type loc_size;
-
-  bfd_size_type macinfo_offset;
-  bfd_size_type macinfo_size;
-
-  bfd_size_type macro_offset;
-  bfd_size_type macro_size;
-
-  bfd_size_type str_offsets_offset;
-  bfd_size_type str_offsets_size;
-
-  /* Each DWP hash table entry records one CU or one TU.
-     That is recorded here, and copied to dwo_unit.section.  */
-  bfd_size_type info_or_types_offset;
-  bfd_size_type info_or_types_size;
-};
-
-/* Contents of DWP hash tables.  */
-
-struct dwp_hash_table
-{
-  uint32_t version, nr_columns;
-  uint32_t nr_units, nr_slots;
-  const gdb_byte *hash_table, *unit_table;
-  union
-  {
-    struct
-    {
-      const gdb_byte *indices;
-    } v1;
-    struct
-    {
-      /* This is indexed by column number and gives the id of the section
-	 in that column.  */
-#define MAX_NR_V2_DWO_SECTIONS \
-  (1 /* .debug_info or .debug_types */ \
-   + 1 /* .debug_abbrev */ \
-   + 1 /* .debug_line */ \
-   + 1 /* .debug_loc */ \
-   + 1 /* .debug_str_offsets */ \
-   + 1 /* .debug_macro or .debug_macinfo */)
-      int section_ids[MAX_NR_V2_DWO_SECTIONS];
-      const gdb_byte *offsets;
-      const gdb_byte *sizes;
-    } v2;
-  } section_pool;
-};
-
-/* Data for one DWP file.  */
-
-struct dwp_file
-{
-  dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
-    : name (name_),
-      dbfd (std::move (abfd))
-  {
-  }
-
-  /* Name of the file.  */
-  const char *name;
-
-  /* File format version.  */
-  int version = 0;
-
-  /* The bfd.  */
-  gdb_bfd_ref_ptr dbfd;
-
-  /* Section info for this file.  */
-  struct dwp_sections sections {};
-
-  /* Table of CUs in the file.  */
-  const struct dwp_hash_table *cus = nullptr;
-
-  /* Table of TUs in the file.  */
-  const struct dwp_hash_table *tus = nullptr;
-
-  /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
-  htab_t loaded_cus {};
-  htab_t loaded_tus {};
-
-  /* Table to map ELF section numbers to their sections.
-     This is only needed for the DWP V1 file format.  */
-  unsigned int num_sections = 0;
-  asection **elf_sections = nullptr;
-};
-
-/* Struct used to pass misc. parameters to read_die_and_children, et
-   al.  which are used for both .debug_info and .debug_types dies.
-   All parameters here are unchanging for the life of the call.  This
-   struct exists to abstract away the constant parameters of die reading.  */
-
-struct die_reader_specs
-{
-  /* The bfd of die_section.  */
-  bfd* abfd;
-
-  /* The CU of the DIE we are parsing.  */
-  struct dwarf2_cu *cu;
-
-  /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
-  struct dwo_file *dwo_file;
-
-  /* The section the die comes from.
-     This is either .debug_info or .debug_types, or the .dwo variants.  */
-  struct dwarf2_section_info *die_section;
-
-  /* die_section->buffer.  */
-  const gdb_byte *buffer;
-
-  /* The end of the buffer.  */
-  const gdb_byte *buffer_end;
-
-  /* The value of the DW_AT_comp_dir attribute.  */
-  const char *comp_dir;
-
-  /* The abbreviation table to use when reading the DIEs.  */
-  struct abbrev_table *abbrev_table;
-};
-
-/* Type of function passed to init_cutu_and_read_dies, et.al.  */
-typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
-				      const gdb_byte *info_ptr,
-				      struct die_info *comp_unit_die,
-				      int has_children,
-				      void *data);
-
-/* dir_index is 1-based in DWARF 4 and before, and is 0-based in DWARF 5 and
-   later.  */
-typedef int dir_index;
-
-/* file_name_index is 1-based in DWARF 4 and before, and is 0-based in DWARF 5
-   and later.  */
-typedef int file_name_index;
-
-struct file_entry
-{
-  file_entry () = default;
-
-  file_entry (const char *name_, dir_index d_index_,
-	      unsigned int mod_time_, unsigned int length_)
-    : name (name_),
-      d_index (d_index_),
-      mod_time (mod_time_),
-      length (length_)
-  {}
-
-  /* Return the include directory at D_INDEX stored in LH.  Returns
-     NULL if D_INDEX is out of bounds.  */
-  const char *include_dir (const line_header *lh) const;
-
-  /* The file name.  Note this is an observing pointer.  The memory is
-     owned by debug_line_buffer.  */
-  const char *name {};
-
-  /* The directory index (1-based).  */
-  dir_index d_index {};
-
-  unsigned int mod_time {};
-
-  unsigned int length {};
-
-  /* True if referenced by the Line Number Program.  */
-  bool included_p {};
-
-  /* The associated symbol table, if any.  */
-  struct symtab *symtab {};
-};
-
-/* The line number information for a compilation unit (found in the
-   .debug_line section) begins with a "statement program header",
-   which contains the following information.  */
-struct line_header
-{
-  line_header ()
-    : offset_in_dwz {}
-  {}
-
-  /* Add an entry to the include directory table.  */
-  void add_include_dir (const char *include_dir);
-
-  /* Add an entry to the file name table.  */
-  void add_file_name (const char *name, dir_index d_index,
-		      unsigned int mod_time, unsigned int length);
-
-  /* Return the include dir at INDEX (0-based in DWARF 5 and 1-based before).
-     Returns NULL if INDEX is out of bounds.  */
-  const char *include_dir_at (dir_index index) const
-  {
-    int vec_index;
-    if (version >= 5)
-      vec_index = index;
-    else
-      vec_index = index - 1;
-    if (vec_index < 0 || vec_index >= m_include_dirs.size ())
-      return NULL;
-    return m_include_dirs[vec_index];
-  }
-
-  bool is_valid_file_index (int file_index)
-  {
-    if (version >= 5)
-      return 0 <= file_index && file_index < file_names_size ();
-    return 1 <= file_index && file_index <= file_names_size ();
-  }
-
-  /* Return the file name at INDEX (0-based in DWARF 5 and 1-based before).
-     Returns NULL if INDEX is out of bounds.  */
-  file_entry *file_name_at (file_name_index index)
-  {
-    int vec_index;
-    if (version >= 5)
-      vec_index = index;
-    else
-      vec_index = index - 1;
-    if (vec_index < 0 || vec_index >= m_file_names.size ())
-      return NULL;
-    return &m_file_names[vec_index];
-  }
-
-  /* The indexes are 0-based in DWARF 5 and 1-based in DWARF 4. Therefore,
-     this method should only be used to iterate through all file entries in an
-     index-agnostic manner.  */
-  std::vector<file_entry> &file_names ()
-  { return m_file_names; }
-
-  /* Offset of line number information in .debug_line section.  */
-  sect_offset sect_off {};
-
-  /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
-  unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
-
-  unsigned int total_length {};
-  unsigned short version {};
-  unsigned int header_length {};
-  unsigned char minimum_instruction_length {};
-  unsigned char maximum_ops_per_instruction {};
-  unsigned char default_is_stmt {};
-  int line_base {};
-  unsigned char line_range {};
-  unsigned char opcode_base {};
-
-  /* standard_opcode_lengths[i] is the number of operands for the
-     standard opcode whose value is i.  This means that
-     standard_opcode_lengths[0] is unused, and the last meaningful
-     element is standard_opcode_lengths[opcode_base - 1].  */
-  std::unique_ptr<unsigned char[]> standard_opcode_lengths;
-
-  int file_names_size ()
-  { return m_file_names.size(); }
-
-  /* The start and end of the statement program following this
-     header.  These point into dwarf2_per_objfile->line_buffer.  */
-  const gdb_byte *statement_program_start {}, *statement_program_end {};
-
- private:
-  /* The include_directories table.  Note these are observing
-     pointers.  The memory is owned by debug_line_buffer.  */
-  std::vector<const char *> m_include_dirs;
-
-  /* The file_names table. This is private because the meaning of indexes
-     differs among DWARF versions (The first valid index is 1 in DWARF 4 and
-     before, and is 0 in DWARF 5 and later).  So the client should use
-     file_name_at method for access.  */
-  std::vector<file_entry> m_file_names;
-};
-
-typedef std::unique_ptr<line_header> line_header_up;
-
-const char *
-file_entry::include_dir (const line_header *lh) const
-{
-  return lh->include_dir_at (d_index);
-}
-
-/* When we construct a partial symbol table entry we only
-   need this much information.  */
-struct partial_die_info : public allocate_on_obstack
-  {
-    partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
-
-    /* Disable assign but still keep copy ctor, which is needed
-       load_partial_dies.   */
-    partial_die_info& operator=(const partial_die_info& rhs) = delete;
-
-    /* Adjust the partial die before generating a symbol for it.  This
-       function may set the is_external flag or change the DIE's
-       name.  */
-    void fixup (struct dwarf2_cu *cu);
-
-    /* Read a minimal amount of information into the minimal die
-       structure.  */
-    const gdb_byte *read (const struct die_reader_specs *reader,
-			  const struct abbrev_info &abbrev,
-			  const gdb_byte *info_ptr);
-
-    /* Offset of this DIE.  */
-    const sect_offset sect_off;
-
-    /* DWARF-2 tag for this DIE.  */
-    const ENUM_BITFIELD(dwarf_tag) tag : 16;
-
-    /* Assorted flags describing the data found in this DIE.  */
-    const unsigned int has_children : 1;
-
-    unsigned int is_external : 1;
-    unsigned int is_declaration : 1;
-    unsigned int has_type : 1;
-    unsigned int has_specification : 1;
-    unsigned int has_pc_info : 1;
-    unsigned int may_be_inlined : 1;
-
-    /* This DIE has been marked DW_AT_main_subprogram.  */
-    unsigned int main_subprogram : 1;
-
-    /* Flag set if the SCOPE field of this structure has been
-       computed.  */
-    unsigned int scope_set : 1;
-
-    /* Flag set if the DIE has a byte_size attribute.  */
-    unsigned int has_byte_size : 1;
-
-    /* Flag set if the DIE has a DW_AT_const_value attribute.  */
-    unsigned int has_const_value : 1;
-
-    /* Flag set if any of the DIE's children are template arguments.  */
-    unsigned int has_template_arguments : 1;
-
-    /* Flag set if fixup has been called on this die.  */
-    unsigned int fixup_called : 1;
-
-    /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
-    unsigned int is_dwz : 1;
-
-    /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
-    unsigned int spec_is_dwz : 1;
-
-    /* The name of this DIE.  Normally the value of DW_AT_name, but
-       sometimes a default name for unnamed DIEs.  */
-    const char *name = nullptr;
-
-    /* The linkage name, if present.  */
-    const char *linkage_name = nullptr;
-
-    /* The scope to prepend to our children.  This is generally
-       allocated on the comp_unit_obstack, so will disappear
-       when this compilation unit leaves the cache.  */
-    const char *scope = nullptr;
-
-    /* Some data associated with the partial DIE.  The tag determines
-       which field is live.  */
-    union
-    {
-      /* The location description associated with this DIE, if any.  */
-      struct dwarf_block *locdesc;
-      /* The offset of an import, for DW_TAG_imported_unit.  */
-      sect_offset sect_off;
-    } d {};
-
-    /* If HAS_PC_INFO, the PC range associated with this DIE.  */
-    CORE_ADDR lowpc = 0;
-    CORE_ADDR highpc = 0;
-
-    /* Pointer into the info_buffer (or types_buffer) pointing at the target of
-       DW_AT_sibling, if any.  */
-    /* NOTE: This member isn't strictly necessary, partial_die_info::read
-       could return DW_AT_sibling values to its caller load_partial_dies.  */
-    const gdb_byte *sibling = nullptr;
-
-    /* If HAS_SPECIFICATION, the offset of the DIE referred to by
-       DW_AT_specification (or DW_AT_abstract_origin or
-       DW_AT_extension).  */
-    sect_offset spec_offset {};
-
-    /* Pointers to this DIE's parent, first child, and next sibling,
-       if any.  */
-    struct partial_die_info *die_parent = nullptr;
-    struct partial_die_info *die_child = nullptr;
-    struct partial_die_info *die_sibling = nullptr;
-
-    friend struct partial_die_info *
-    dwarf2_cu::find_partial_die (sect_offset sect_off);
-
-  private:
-    /* Only need to do look up in dwarf2_cu::find_partial_die.  */
-    partial_die_info (sect_offset sect_off)
-      : partial_die_info (sect_off, DW_TAG_padding, 0)
-    {
-    }
-
-    partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
-		      int has_children_)
-      : sect_off (sect_off_), tag (tag_), has_children (has_children_)
-    {
-      is_external = 0;
-      is_declaration = 0;
-      has_type = 0;
-      has_specification = 0;
-      has_pc_info = 0;
-      may_be_inlined = 0;
-      main_subprogram = 0;
-      scope_set = 0;
-      has_byte_size = 0;
-      has_const_value = 0;
-      has_template_arguments = 0;
-      fixup_called = 0;
-      is_dwz = 0;
-      spec_is_dwz = 0;
-    }
-  };
-
-/* This data structure holds the information of an abbrev.  */
-struct abbrev_info
-  {
-    unsigned int number;	/* number identifying abbrev */
-    enum dwarf_tag tag;		/* dwarf tag */
-    unsigned short has_children;		/* boolean */
-    unsigned short num_attrs;	/* number of attributes */
-    struct attr_abbrev *attrs;	/* an array of attribute descriptions */
-    struct abbrev_info *next;	/* next in chain */
-  };
-
-struct attr_abbrev
-  {
-    ENUM_BITFIELD(dwarf_attribute) name : 16;
-    ENUM_BITFIELD(dwarf_form) form : 16;
-
-    /* It is valid only if FORM is DW_FORM_implicit_const.  */
-    LONGEST implicit_const;
-  };
-
-/* Size of abbrev_table.abbrev_hash_table.  */
-#define ABBREV_HASH_SIZE 121
-
-/* Top level data structure to contain an abbreviation table.  */
-
-struct abbrev_table
-{
-  explicit abbrev_table (sect_offset off)
-    : sect_off (off)
-  {
-    m_abbrevs =
-      XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
-    memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
-  }
-
-  DISABLE_COPY_AND_ASSIGN (abbrev_table);
-
-  /* Allocate space for a struct abbrev_info object in
-     ABBREV_TABLE.  */
-  struct abbrev_info *alloc_abbrev ();
-
-  /* Add an abbreviation to the table.  */
-  void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
-
-  /* Look up an abbrev in the table.
-     Returns NULL if the abbrev is not found.  */
-
-  struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
-
-
-  /* Where the abbrev table came from.
-     This is used as a sanity check when the table is used.  */
-  const sect_offset sect_off;
-
-  /* Storage for the abbrev table.  */
-  auto_obstack abbrev_obstack;
-
-private:
-
-  /* Hash table of abbrevs.
-     This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
-     It could be statically allocated, but the previous code didn't so we
-     don't either.  */
-  struct abbrev_info **m_abbrevs;
-};
-
-typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
-
-/* Attributes have a name and a value.  */
-struct attribute
-  {
-    ENUM_BITFIELD(dwarf_attribute) name : 16;
-    ENUM_BITFIELD(dwarf_form) form : 15;
-
-    /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
-       field should be in u.str (existing only for DW_STRING) but it is kept
-       here for better struct attribute alignment.  */
-    unsigned int string_is_canonical : 1;
-
-    union
-      {
-	const char *str;
-	struct dwarf_block *blk;
-	ULONGEST unsnd;
-	LONGEST snd;
-	CORE_ADDR addr;
-	ULONGEST signature;
-      }
-    u;
-  };
-
-/* This data structure holds a complete die structure.  */
-struct die_info
-  {
-    /* DWARF-2 tag for this DIE.  */
-    ENUM_BITFIELD(dwarf_tag) tag : 16;
-
-    /* Number of attributes */
-    unsigned char num_attrs;
-
-    /* True if we're presently building the full type name for the
-       type derived from this DIE.  */
-    unsigned char building_fullname : 1;
-
-    /* True if this die is in process.  PR 16581.  */
-    unsigned char in_process : 1;
-
-    /* Abbrev number */
-    unsigned int abbrev;
-
-    /* Offset in .debug_info or .debug_types section.  */
-    sect_offset sect_off;
-
-    /* The dies in a compilation unit form an n-ary tree.  PARENT
-       points to this die's parent; CHILD points to the first child of
-       this node; and all the children of a given node are chained
-       together via their SIBLING fields.  */
-    struct die_info *child;	/* Its first child, if any.  */
-    struct die_info *sibling;	/* Its next sibling, if any.  */
-    struct die_info *parent;	/* Its parent, if any.  */
-
-    /* An array of attributes, with NUM_ATTRS elements.  There may be
-       zero, but it's not common and zero-sized arrays are not
-       sufficiently portable C.  */
-    struct attribute attrs[1];
-  };
-
-/* Get at parts of an attribute structure.  */
-
-#define DW_STRING(attr)    ((attr)->u.str)
-#define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
-#define DW_UNSND(attr)     ((attr)->u.unsnd)
-#define DW_BLOCK(attr)     ((attr)->u.blk)
-#define DW_SND(attr)       ((attr)->u.snd)
-#define DW_ADDR(attr)	   ((attr)->u.addr)
-#define DW_SIGNATURE(attr) ((attr)->u.signature)
-
-/* Blocks are a bunch of untyped bytes.  */
-struct dwarf_block
-  {
-    size_t size;
-
-    /* Valid only if SIZE is not zero.  */
-    const gdb_byte *data;
-  };
-
-#ifndef ATTR_ALLOC_CHUNK
-#define ATTR_ALLOC_CHUNK 4
-#endif
-
-/* Allocate fields for structs, unions and enums in this size.  */
-#ifndef DW_FIELD_ALLOC_CHUNK
-#define DW_FIELD_ALLOC_CHUNK 4
-#endif
-
-/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
-   but this would require a corresponding change in unpack_field_as_long
-   and friends.  */
-static int bits_per_byte = 8;
-
-/* When reading a variant or variant part, we track a bit more
-   information about the field, and store it in an object of this
-   type.  */
-
-struct variant_field
-{
-  /* If we see a DW_TAG_variant, then this will be the discriminant
-     value.  */
-  ULONGEST discriminant_value;
-  /* If we see a DW_TAG_variant, then this will be set if this is the
-     default branch.  */
-  bool default_branch;
-  /* While reading a DW_TAG_variant_part, this will be set if this
-     field is the discriminant.  */
-  bool is_discriminant;
-};
-
-struct nextfield
-{
-  int accessibility = 0;
-  int virtuality = 0;
-  /* Extra information to describe a variant or variant part.  */
-  struct variant_field variant {};
-  struct field field {};
-};
-
-struct fnfieldlist
-{
-  const char *name = nullptr;
-  std::vector<struct fn_field> fnfields;
-};
-
-/* The routines that read and process dies for a C struct or C++ class
-   pass lists of data member fields and lists of member function fields
-   in an instance of a field_info structure, as defined below.  */
-struct field_info
-  {
-    /* List of data member and baseclasses fields.  */
-    std::vector<struct nextfield> fields;
-    std::vector<struct nextfield> baseclasses;
-
-    /* Number of fields (including baseclasses).  */
-    int nfields = 0;
-
-    /* Set if the accessibility of one of the fields is not public.  */
-    int non_public_fields = 0;
-
-    /* Member function fieldlist array, contains name of possibly overloaded
-       member function, number of overloaded member functions and a pointer
-       to the head of the member function field chain.  */
-    std::vector<struct fnfieldlist> fnfieldlists;
-
-    /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
-       a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
-    std::vector<struct decl_field> typedef_field_list;
-
-    /* Nested types defined by this class and the number of elements in this
-       list.  */
-    std::vector<struct decl_field> nested_types_list;
-  };
-
-/* One item on the queue of compilation units to read in full symbols
-   for.  */
-struct dwarf2_queue_item
-{
-  struct dwarf2_per_cu_data *per_cu;
-  enum language pretend_language;
-  struct dwarf2_queue_item *next;
-};
-
-/* The current queue.  */
-static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
-
-/* Loaded secondary compilation units are kept in memory until they
-   have not been referenced for the processing of this many
-   compilation units.  Set this to zero to disable caching.  Cache
-   sizes of up to at least twenty will improve startup time for
-   typical inter-CU-reference binaries, at an obvious memory cost.  */
-static int dwarf_max_cache_age = 5;
-static void
-show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
-			  struct cmd_list_element *c, const char *value)
-{
-  fprintf_filtered (file, _("The upper bound on the age of cached "
-			    "DWARF compilation units is %s.\n"),
-		    value);
-}
-
-/* local function prototypes */
-
-static const char *get_section_name (const struct dwarf2_section_info *);
-
-static const char *get_section_file_name (const struct dwarf2_section_info *);
-
-static void dwarf2_find_base_address (struct die_info *die,
-				      struct dwarf2_cu *cu);
-
-static struct partial_symtab *create_partial_symtab
-  (struct dwarf2_per_cu_data *per_cu, const char *name);
-
-static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
-					const gdb_byte *info_ptr,
-					struct die_info *type_unit_die,
-					int has_children, void *data);
-
-static void dwarf2_build_psymtabs_hard
-  (struct dwarf2_per_objfile *dwarf2_per_objfile);
-
-static void scan_partial_symbols (struct partial_die_info *,
-				  CORE_ADDR *, CORE_ADDR *,
-				  int, struct dwarf2_cu *);
-
-static void add_partial_symbol (struct partial_die_info *,
-				struct dwarf2_cu *);
-
-static void add_partial_namespace (struct partial_die_info *pdi,
-				   CORE_ADDR *lowpc, CORE_ADDR *highpc,
-				   int set_addrmap, struct dwarf2_cu *cu);
-
-static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
-				CORE_ADDR *highpc, int set_addrmap,
-				struct dwarf2_cu *cu);
-
-static void add_partial_enumeration (struct partial_die_info *enum_pdi,
-				     struct dwarf2_cu *cu);
-
-static void add_partial_subprogram (struct partial_die_info *pdi,
-				    CORE_ADDR *lowpc, CORE_ADDR *highpc,
-				    int need_pc, struct dwarf2_cu *cu);
-
-static void dwarf2_read_symtab (struct partial_symtab *,
-				struct objfile *);
-
-static void psymtab_to_symtab_1 (struct partial_symtab *);
-
-static abbrev_table_up abbrev_table_read_table
-  (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
-   sect_offset);
-
-static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
-
-static struct partial_die_info *load_partial_dies
-  (const struct die_reader_specs *, const gdb_byte *, int);
-
-/* A pair of partial_die_info and compilation unit.  */
-struct cu_partial_die_info
-{
-  /* The compilation unit of the partial_die_info.  */
-  struct dwarf2_cu *cu;
-  /* A partial_die_info.  */
-  struct partial_die_info *pdi;
-
-  cu_partial_die_info (struct dwarf2_cu *cu, struct partial_die_info *pdi)
-    : cu (cu),
-      pdi (pdi)
-  { /* Nothing.  */ }
-
-private:
-  cu_partial_die_info () = delete;
-};
-
-static const struct cu_partial_die_info find_partial_die (sect_offset, int,
-							  struct dwarf2_cu *);
-
-static const gdb_byte *read_attribute (const struct die_reader_specs *,
-				       struct attribute *, struct attr_abbrev *,
-				       const gdb_byte *);
-
-static unsigned int read_1_byte (bfd *, const gdb_byte *);
-
-static int read_1_signed_byte (bfd *, const gdb_byte *);
-
-static unsigned int read_2_bytes (bfd *, const gdb_byte *);
-
-/* Read the next three bytes (little-endian order) as an unsigned integer.  */
-static unsigned int read_3_bytes (bfd *, const gdb_byte *);
-
-static unsigned int read_4_bytes (bfd *, const gdb_byte *);
-
-static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
-
-static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
-			       unsigned int *);
-
-static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
-
-static LONGEST read_checked_initial_length_and_offset
-  (bfd *, const gdb_byte *, const struct comp_unit_head *,
-   unsigned int *, unsigned int *);
-
-static LONGEST read_offset (bfd *, const gdb_byte *,
-			    const struct comp_unit_head *,
-			    unsigned int *);
-
-static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
-
-static sect_offset read_abbrev_offset
-  (struct dwarf2_per_objfile *dwarf2_per_objfile,
-   struct dwarf2_section_info *, sect_offset);
-
-static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
-
-static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
-
-static const char *read_indirect_string
-  (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
-   const struct comp_unit_head *, unsigned int *);
-
-static const char *read_indirect_line_string
-  (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
-   const struct comp_unit_head *, unsigned int *);
-
-static const char *read_indirect_string_at_offset
-  (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
-   LONGEST str_offset);
-
-static const char *read_indirect_string_from_dwz
-  (struct objfile *objfile, struct dwz_file *, LONGEST);
-
-static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
-
-static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
-					      const gdb_byte *,
-					      unsigned int *);
-
-static const char *read_str_index (const struct die_reader_specs *reader,
-				   ULONGEST str_index);
-
-static void set_cu_language (unsigned int, struct dwarf2_cu *);
-
-static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
-				      struct dwarf2_cu *);
-
-static struct attribute *dwarf2_attr_no_follow (struct die_info *,
-						unsigned int);
-
-static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
-                                       struct dwarf2_cu *cu);
-
-static const char *dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu);
-
-static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
-                               struct dwarf2_cu *cu);
-
-static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
-
-static struct die_info *die_specification (struct die_info *die,
-					   struct dwarf2_cu **);
-
-static line_header_up dwarf_decode_line_header (sect_offset sect_off,
-						struct dwarf2_cu *cu);
-
-static void dwarf_decode_lines (struct line_header *, const char *,
-				struct dwarf2_cu *, struct partial_symtab *,
-				CORE_ADDR, int decode_mapping);
-
-static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
-				  const char *);
-
-static struct symbol *new_symbol (struct die_info *, struct type *,
-				  struct dwarf2_cu *, struct symbol * = NULL);
-
-static void dwarf2_const_value (const struct attribute *, struct symbol *,
-				struct dwarf2_cu *);
-
-static void dwarf2_const_value_attr (const struct attribute *attr,
-				     struct type *type,
-				     const char *name,
-				     struct obstack *obstack,
-				     struct dwarf2_cu *cu, LONGEST *value,
-				     const gdb_byte **bytes,
-				     struct dwarf2_locexpr_baton **baton);
-
-static struct type *die_type (struct die_info *, struct dwarf2_cu *);
-
-static int need_gnat_info (struct dwarf2_cu *);
-
-static struct type *die_descriptive_type (struct die_info *,
-					  struct dwarf2_cu *);
-
-static void set_descriptive_type (struct type *, struct die_info *,
-				  struct dwarf2_cu *);
-
-static struct type *die_containing_type (struct die_info *,
-					 struct dwarf2_cu *);
-
-static struct type *lookup_die_type (struct die_info *, const struct attribute *,
-				     struct dwarf2_cu *);
-
-static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
-
-static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
-
-static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
-
-static char *typename_concat (struct obstack *obs, const char *prefix,
-			      const char *suffix, int physname,
-			      struct dwarf2_cu *cu);
-
-static void read_file_scope (struct die_info *, struct dwarf2_cu *);
-
-static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
-
-static void read_func_scope (struct die_info *, struct dwarf2_cu *);
-
-static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
-
-static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
-
-static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
-
-static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
-			       struct dwarf2_cu *, struct partial_symtab *);
-
-/* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
-   values.  Keep the items ordered with increasing constraints compliance.  */
-enum pc_bounds_kind
-{
-  /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
-  PC_BOUNDS_NOT_PRESENT,
-
-  /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
-     were present but they do not form a valid range of PC addresses.  */
-  PC_BOUNDS_INVALID,
-
-  /* Discontiguous range was found - that is DW_AT_ranges was found.  */
-  PC_BOUNDS_RANGES,
-
-  /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
-  PC_BOUNDS_HIGH_LOW,
-};
-
-static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
-						 CORE_ADDR *, CORE_ADDR *,
-						 struct dwarf2_cu *,
-						 struct partial_symtab *);
-
-static void get_scope_pc_bounds (struct die_info *,
-				 CORE_ADDR *, CORE_ADDR *,
-				 struct dwarf2_cu *);
-
-static void dwarf2_record_block_ranges (struct die_info *, struct block *,
-                                        CORE_ADDR, struct dwarf2_cu *);
-
-static void dwarf2_add_field (struct field_info *, struct die_info *,
-			      struct dwarf2_cu *);
-
-static void dwarf2_attach_fields_to_type (struct field_info *,
-					  struct type *, struct dwarf2_cu *);
-
-static void dwarf2_add_member_fn (struct field_info *,
-				  struct die_info *, struct type *,
-				  struct dwarf2_cu *);
-
-static void dwarf2_attach_fn_fields_to_type (struct field_info *,
-					     struct type *,
-					     struct dwarf2_cu *);
-
-static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
-
-static void read_common_block (struct die_info *, struct dwarf2_cu *);
-
-static void read_namespace (struct die_info *die, struct dwarf2_cu *);
-
-static void read_module (struct die_info *die, struct dwarf2_cu *cu);
-
-static struct using_direct **using_directives (struct dwarf2_cu *cu);
-
-static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
-
-static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
-
-static struct type *read_module_type (struct die_info *die,
-				      struct dwarf2_cu *cu);
-
-static const char *namespace_name (struct die_info *die,
-				   int *is_anonymous, struct dwarf2_cu *);
-
-static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
-
-static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
-
-static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
-						       struct dwarf2_cu *);
-
-static struct die_info *read_die_and_siblings_1
-  (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
-   struct die_info *);
-
-static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
-					       const gdb_byte *info_ptr,
-					       const gdb_byte **new_info_ptr,
-					       struct die_info *parent);
-
-static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
-					struct die_info **, const gdb_byte *,
-					int *, int);
-
-static const gdb_byte *read_full_die (const struct die_reader_specs *,
-				      struct die_info **, const gdb_byte *,
-				      int *);
-
-static void process_die (struct die_info *, struct dwarf2_cu *);
-
-static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
-					     struct obstack *);
-
-static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
-
-static const char *dwarf2_full_name (const char *name,
-				     struct die_info *die,
-				     struct dwarf2_cu *cu);
-
-static const char *dwarf2_physname (const char *name, struct die_info *die,
-				    struct dwarf2_cu *cu);
-
-static struct die_info *dwarf2_extension (struct die_info *die,
-					  struct dwarf2_cu **);
-
-static const char *dwarf_tag_name (unsigned int);
-
-static const char *dwarf_attr_name (unsigned int);
-
-static const char *dwarf_unit_type_name (int unit_type);
-
-static const char *dwarf_form_name (unsigned int);
-
-static const char *dwarf_bool_name (unsigned int);
-
-static const char *dwarf_type_encoding_name (unsigned int);
-
-static struct die_info *sibling_die (struct die_info *);
-
-static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
-
-static void dump_die_for_error (struct die_info *);
-
-static void dump_die_1 (struct ui_file *, int level, int max_level,
-			struct die_info *);
-
-/*static*/ void dump_die (struct die_info *, int max_level);
-
-static void store_in_ref_table (struct die_info *,
-				struct dwarf2_cu *);
-
-static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
-
-static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
-
-static struct die_info *follow_die_ref_or_sig (struct die_info *,
-					       const struct attribute *,
-					       struct dwarf2_cu **);
-
-static struct die_info *follow_die_ref (struct die_info *,
-					const struct attribute *,
-					struct dwarf2_cu **);
-
-static struct die_info *follow_die_sig (struct die_info *,
-					const struct attribute *,
-					struct dwarf2_cu **);
-
-static struct type *get_signatured_type (struct die_info *, ULONGEST,
-					 struct dwarf2_cu *);
-
-static struct type *get_DW_AT_signature_type (struct die_info *,
-					      const struct attribute *,
-					      struct dwarf2_cu *);
-
-static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
-
-static void read_signatured_type (struct signatured_type *);
-
-static int attr_to_dynamic_prop (const struct attribute *attr,
-				 struct die_info *die, struct dwarf2_cu *cu,
-				 struct dynamic_prop *prop, struct type *type);
-
-/* memory allocation interface */
-
-static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
-
-static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
-
-static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
-
-static int attr_form_is_block (const struct attribute *);
-
-static int attr_form_is_section_offset (const struct attribute *);
-
-static int attr_form_is_constant (const struct attribute *);
-
-static int attr_form_is_ref (const struct attribute *);
-
-static void fill_in_loclist_baton (struct dwarf2_cu *cu,
-				   struct dwarf2_loclist_baton *baton,
-				   const struct attribute *attr);
-
-static void dwarf2_symbol_mark_computed (const struct attribute *attr,
-					 struct symbol *sym,
-					 struct dwarf2_cu *cu,
-					 int is_block);
-
-static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
-				     const gdb_byte *info_ptr,
-				     struct abbrev_info *abbrev);
-
-static hashval_t partial_die_hash (const void *item);
-
-static int partial_die_eq (const void *item_lhs, const void *item_rhs);
-
-static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
-  (sect_offset sect_off, unsigned int offset_in_dwz,
-   struct dwarf2_per_objfile *dwarf2_per_objfile);
-
-static void prepare_one_comp_unit (struct dwarf2_cu *cu,
-				   struct die_info *comp_unit_die,
-				   enum language pretend_language);
-
-static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
-
-static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
-
-static struct type *set_die_type (struct die_info *, struct type *,
-				  struct dwarf2_cu *);
-
-static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
-
-static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
-
-static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
-				 enum language);
-
-static void process_full_comp_unit (struct dwarf2_per_cu_data *,
-				    enum language);
-
-static void process_full_type_unit (struct dwarf2_per_cu_data *,
-				    enum language);
-
-static void dwarf2_add_dependence (struct dwarf2_cu *,
-				   struct dwarf2_per_cu_data *);
-
-static void dwarf2_mark (struct dwarf2_cu *);
-
-static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
-
-static struct type *get_die_type_at_offset (sect_offset,
-					    struct dwarf2_per_cu_data *);
-
-static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
-
-static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
-			     enum language pretend_language);
-
-static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
-
-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
-   dwarf.  If no error was thrown then the queue entries should have all
-   been processed, and freed, as we went along.  */
-
-class dwarf2_queue_guard
-{
-public:
-  dwarf2_queue_guard () = default;
-
-  /* Free any entries remaining on the queue.  There should only be
-     entries left if we hit an error while processing the dwarf.  */
-  ~dwarf2_queue_guard ()
-  {
-    struct dwarf2_queue_item *item, *last;
-
-    item = dwarf2_queue;
-    while (item)
-      {
-	/* Anything still marked queued is likely to be in an
-	   inconsistent state, so discard it.  */
-	if (item->per_cu->queued)
-	  {
-	    if (item->per_cu->cu != NULL)
-	      free_one_cached_comp_unit (item->per_cu);
-	    item->per_cu->queued = 0;
-	  }
-
-	last = item;
-	item = item->next;
-	xfree (last);
-      }
-
-    dwarf2_queue = dwarf2_queue_tail = NULL;
-  }
-};
-
-/* The return type of find_file_and_directory.  Note, the enclosed
-   string pointers are only valid while this object is valid.  */
-
-struct file_and_directory
-{
-  /* The filename.  This is never NULL.  */
-  const char *name;
-
-  /* The compilation directory.  NULL if not known.  If we needed to
-     compute a new string, this points to COMP_DIR_STORAGE, otherwise,
-     points directly to the DW_AT_comp_dir string attribute owned by
-     the obstack that owns the DIE.  */
-  const char *comp_dir;
-
-  /* If we needed to build a new string for comp_dir, this is what
-     owns the storage.  */
-  std::string comp_dir_storage;
-};
-
-static file_and_directory find_file_and_directory (struct die_info *die,
-						   struct dwarf2_cu *cu);
-
-static char *file_full_name (int file, struct line_header *lh,
-			     const char *comp_dir);
-
-/* Expected enum dwarf_unit_type for read_comp_unit_head.  */
-enum class rcuh_kind { COMPILE, TYPE };
-
-static const gdb_byte *read_and_check_comp_unit_head
-  (struct dwarf2_per_objfile* dwarf2_per_objfile,
-   struct comp_unit_head *header,
-   struct dwarf2_section_info *section,
-   struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
-   rcuh_kind section_kind);
-
-static void init_cutu_and_read_dies
-  (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
-   int use_existing_cu, int keep, bool skip_partial,
-   die_reader_func_ftype *die_reader_func, void *data);
-
-static void init_cutu_and_read_dies_simple
-  (struct dwarf2_per_cu_data *this_cu,
-   die_reader_func_ftype *die_reader_func, void *data);
-
-static htab_t allocate_signatured_type_table (struct objfile *objfile);
-
-static htab_t allocate_dwo_unit_table (struct objfile *objfile);
-
-static struct dwo_unit *lookup_dwo_unit_in_dwp
-  (struct dwarf2_per_objfile *dwarf2_per_objfile,
-   struct dwp_file *dwp_file, const char *comp_dir,
-   ULONGEST signature, int is_debug_types);
-
-static struct dwp_file *get_dwp_file
-  (struct dwarf2_per_objfile *dwarf2_per_objfile);
-
-static struct dwo_unit *lookup_dwo_comp_unit
-  (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
-
-static struct dwo_unit *lookup_dwo_type_unit
-  (struct signatured_type *, const char *, const char *);
-
-static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
-
-/* A unique pointer to a dwo_file.  */
-
-typedef std::unique_ptr<struct dwo_file> dwo_file_up;
-
-static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
-
-static void check_producer (struct dwarf2_cu *cu);
-
-static void free_line_header_voidp (void *arg);
-
-/* Various complaints about symbol reading that don't abort the process.  */
-
-static void
-dwarf2_statement_list_fits_in_line_number_section_complaint (void)
-{
-  complaint (_("statement list doesn't fit in .debug_line section"));
-}
-
-static void
-dwarf2_debug_line_missing_file_complaint (void)
-{
-  complaint (_(".debug_line section has line data without a file"));
-}
-
-static void
-dwarf2_debug_line_missing_end_sequence_complaint (void)
-{
-  complaint (_(".debug_line section has line "
-	       "program sequence without an end"));
-}
-
-static void
-dwarf2_complex_location_expr_complaint (void)
-{
-  complaint (_("location expression too complex"));
-}
-
-static void
-dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
-					      int arg3)
-{
-  complaint (_("const value length mismatch for '%s', got %d, expected %d"),
-	     arg1, arg2, arg3);
-}
-
-static void
-dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
-{
-  complaint (_("debug info runs off end of %s section"
-	       " [in module %s]"),
-	     get_section_name (section),
-	     get_section_file_name (section));
-}
-
-static void
-dwarf2_macro_malformed_definition_complaint (const char *arg1)
-{
-  complaint (_("macro debug info contains a "
-	       "malformed macro definition:\n`%s'"),
-	     arg1);
-}
-
-static void
-dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
-{
-  complaint (_("invalid attribute class or form for '%s' in '%s'"),
-	     arg1, arg2);
-}
-
-/* Hash function for line_header_hash.  */
-
-static hashval_t
-line_header_hash (const struct line_header *ofs)
-{
-  return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
-}
-
-/* Hash function for htab_create_alloc_ex for line_header_hash.  */
-
-static hashval_t
-line_header_hash_voidp (const void *item)
-{
-  const struct line_header *ofs = (const struct line_header *) item;
-
-  return line_header_hash (ofs);
-}
-
-/* Equality function for line_header_hash.  */
-
-static int
-line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
-{
-  const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
-  const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
-
-  return (ofs_lhs->sect_off == ofs_rhs->sect_off
-	  && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
-}
-
-
-
-/* Read the given attribute value as an address, taking the attribute's
-   form into account.  */
-
-static CORE_ADDR
-attr_value_as_address (struct attribute *attr)
-{
-  CORE_ADDR addr;
-
-  if (attr->form != DW_FORM_addr && attr->form != DW_FORM_addrx
-      && attr->form != DW_FORM_GNU_addr_index)
-    {
-      /* Aside from a few clearly defined exceptions, attributes that
-	 contain an address must always be in DW_FORM_addr form.
-	 Unfortunately, some compilers happen to be violating this
-	 requirement by encoding addresses using other forms, such
-	 as DW_FORM_data4 for example.  For those broken compilers,
-	 we try to do our best, without any guarantee of success,
-	 to interpret the address correctly.  It would also be nice
-	 to generate a complaint, but that would require us to maintain
-	 a list of legitimate cases where a non-address form is allowed,
-	 as well as update callers to pass in at least the CU's DWARF
-	 version.  This is more overhead than what we're willing to
-	 expand for a pretty rare case.  */
-      addr = DW_UNSND (attr);
-    }
-  else
-    addr = DW_ADDR (attr);
-
-  return addr;
-}
-
-/* See declaration.  */
-
-dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
-					const dwarf2_debug_sections *names,
-					bool can_copy_)
-  : objfile (objfile_),
-    can_copy (can_copy_)
-{
-  if (names == NULL)
-    names = &dwarf2_elf_names;
-
-  bfd *obfd = objfile->obfd;
-
-  for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
-    locate_sections (obfd, sec, *names);
-}
-
-dwarf2_per_objfile::~dwarf2_per_objfile ()
-{
-  /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
-  free_cached_comp_units ();
-
-  if (quick_file_names_table)
-    htab_delete (quick_file_names_table);
-
-  if (line_header_hash)
-    htab_delete (line_header_hash);
-
-  for (dwarf2_per_cu_data *per_cu : all_comp_units)
-    per_cu->imported_symtabs_free ();
-
-  for (signatured_type *sig_type : all_type_units)
-    sig_type->per_cu.imported_symtabs_free ();
-
-  /* Everything else should be on the objfile obstack.  */
-}
-
-/* See declaration.  */
-
-void
-dwarf2_per_objfile::free_cached_comp_units ()
-{
-  dwarf2_per_cu_data *per_cu = read_in_chain;
-  dwarf2_per_cu_data **last_chain = &read_in_chain;
-  while (per_cu != NULL)
-    {
-      dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
-
-      delete per_cu->cu;
-      *last_chain = next_cu;
-      per_cu = next_cu;
-    }
-}
-
-/* A helper class that calls free_cached_comp_units on
-   destruction.  */
-
-class free_cached_comp_units
-{
-public:
-
-  explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
-    : m_per_objfile (per_objfile)
-  {
-  }
-
-  ~free_cached_comp_units ()
-  {
-    m_per_objfile->free_cached_comp_units ();
-  }
-
-  DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
-
-private:
-
-  dwarf2_per_objfile *m_per_objfile;
-};
-
-/* Try to locate the sections we need for DWARF 2 debugging
-   information and return true if we have enough to do something.
-   NAMES points to the dwarf2 section names, or is NULL if the standard
-   ELF names are used.  CAN_COPY is true for formats where symbol
-   interposition is possible and so symbol values must follow copy
-   relocation rules.  */
-
-int
-dwarf2_has_info (struct objfile *objfile,
-                 const struct dwarf2_debug_sections *names,
-		 bool can_copy)
-{
-  if (objfile->flags & OBJF_READNEVER)
-    return 0;
-
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  if (dwarf2_per_objfile == NULL)
-    dwarf2_per_objfile = dwarf2_objfile_data_key.emplace (objfile, objfile,
-							  names,
-							  can_copy);
-
-  return (!dwarf2_per_objfile->info.is_virtual
-	  && dwarf2_per_objfile->info.s.section != NULL
-	  && !dwarf2_per_objfile->abbrev.is_virtual
-	  && dwarf2_per_objfile->abbrev.s.section != NULL);
-}
-
-/* Return the containing section of virtual section SECTION.  */
-
-static struct dwarf2_section_info *
-get_containing_section (const struct dwarf2_section_info *section)
-{
-  gdb_assert (section->is_virtual);
-  return section->s.containing_section;
-}
-
-/* Return the bfd owner of SECTION.  */
-
-static struct bfd *
-get_section_bfd_owner (const struct dwarf2_section_info *section)
-{
-  if (section->is_virtual)
-    {
-      section = get_containing_section (section);
-      gdb_assert (!section->is_virtual);
-    }
-  return section->s.section->owner;
-}
-
-/* Return the bfd section of SECTION.
-   Returns NULL if the section is not present.  */
-
-static asection *
-get_section_bfd_section (const struct dwarf2_section_info *section)
-{
-  if (section->is_virtual)
-    {
-      section = get_containing_section (section);
-      gdb_assert (!section->is_virtual);
-    }
-  return section->s.section;
-}
-
-/* Return the name of SECTION.  */
-
-static const char *
-get_section_name (const struct dwarf2_section_info *section)
-{
-  asection *sectp = get_section_bfd_section (section);
-
-  gdb_assert (sectp != NULL);
-  return bfd_section_name (sectp);
-}
-
-/* Return the name of the file SECTION is in.  */
-
-static const char *
-get_section_file_name (const struct dwarf2_section_info *section)
-{
-  bfd *abfd = get_section_bfd_owner (section);
-
-  return bfd_get_filename (abfd);
-}
-
-/* Return the id of SECTION.
-   Returns 0 if SECTION doesn't exist.  */
-
-static int
-get_section_id (const struct dwarf2_section_info *section)
-{
-  asection *sectp = get_section_bfd_section (section);
-
-  if (sectp == NULL)
-    return 0;
-  return sectp->id;
-}
-
-/* Return the flags of SECTION.
-   SECTION (or containing section if this is a virtual section) must exist.  */
-
-static int
-get_section_flags (const struct dwarf2_section_info *section)
-{
-  asection *sectp = get_section_bfd_section (section);
-
-  gdb_assert (sectp != NULL);
-  return bfd_section_flags (sectp);
-}
-
-/* When loading sections, we look either for uncompressed section or for
-   compressed section names.  */
-
-static int
-section_is_p (const char *section_name,
-              const struct dwarf2_section_names *names)
-{
-  if (names->normal != NULL
-      && strcmp (section_name, names->normal) == 0)
-    return 1;
-  if (names->compressed != NULL
-      && strcmp (section_name, names->compressed) == 0)
-    return 1;
-  return 0;
-}
-
-/* See declaration.  */
-
-void
-dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
-				     const dwarf2_debug_sections &names)
-{
-  flagword aflag = bfd_section_flags (sectp);
-
-  if ((aflag & SEC_HAS_CONTENTS) == 0)
-    {
-    }
-  else if (elf_section_data (sectp)->this_hdr.sh_size
-	   > bfd_get_file_size (abfd))
-    {
-      bfd_size_type size = elf_section_data (sectp)->this_hdr.sh_size;
-      warning (_("Discarding section %s which has a section size (%s"
-		 ") larger than the file size [in module %s]"),
-	       bfd_section_name (sectp), phex_nz (size, sizeof (size)),
-	       bfd_get_filename (abfd));
-    }
-  else if (section_is_p (sectp->name, &names.info))
-    {
-      this->info.s.section = sectp;
-      this->info.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.abbrev))
-    {
-      this->abbrev.s.section = sectp;
-      this->abbrev.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.line))
-    {
-      this->line.s.section = sectp;
-      this->line.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.loc))
-    {
-      this->loc.s.section = sectp;
-      this->loc.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.loclists))
-    {
-      this->loclists.s.section = sectp;
-      this->loclists.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.macinfo))
-    {
-      this->macinfo.s.section = sectp;
-      this->macinfo.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.macro))
-    {
-      this->macro.s.section = sectp;
-      this->macro.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.str))
-    {
-      this->str.s.section = sectp;
-      this->str.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.line_str))
-    {
-      this->line_str.s.section = sectp;
-      this->line_str.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.addr))
-    {
-      this->addr.s.section = sectp;
-      this->addr.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.frame))
-    {
-      this->frame.s.section = sectp;
-      this->frame.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.eh_frame))
-    {
-      this->eh_frame.s.section = sectp;
-      this->eh_frame.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.ranges))
-    {
-      this->ranges.s.section = sectp;
-      this->ranges.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.rnglists))
-    {
-      this->rnglists.s.section = sectp;
-      this->rnglists.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.types))
-    {
-      struct dwarf2_section_info type_section;
-
-      memset (&type_section, 0, sizeof (type_section));
-      type_section.s.section = sectp;
-      type_section.size = bfd_section_size (sectp);
-
-      this->types.push_back (type_section);
-    }
-  else if (section_is_p (sectp->name, &names.gdb_index))
-    {
-      this->gdb_index.s.section = sectp;
-      this->gdb_index.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.debug_names))
-    {
-      this->debug_names.s.section = sectp;
-      this->debug_names.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names.debug_aranges))
-    {
-      this->debug_aranges.s.section = sectp;
-      this->debug_aranges.size = bfd_section_size (sectp);
-    }
-
-  if ((bfd_section_flags (sectp) & (SEC_LOAD | SEC_ALLOC))
-      && bfd_section_vma (sectp) == 0)
-    this->has_section_at_zero = true;
-}
-
-/* A helper function that decides whether a section is empty,
-   or not present.  */
-
-static int
-dwarf2_section_empty_p (const struct dwarf2_section_info *section)
-{
-  if (section->is_virtual)
-    return section->size == 0;
-  return section->s.section == NULL || section->size == 0;
-}
-
-/* See dwarf2read.h.  */
-
-void
-dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
-{
-  asection *sectp;
-  bfd *abfd;
-  gdb_byte *buf, *retbuf;
-
-  if (info->readin)
-    return;
-  info->buffer = NULL;
-  info->readin = true;
-
-  if (dwarf2_section_empty_p (info))
-    return;
-
-  sectp = get_section_bfd_section (info);
-
-  /* If this is a virtual section we need to read in the real one first.  */
-  if (info->is_virtual)
-    {
-      struct dwarf2_section_info *containing_section =
-	get_containing_section (info);
-
-      gdb_assert (sectp != NULL);
-      if ((sectp->flags & SEC_RELOC) != 0)
-	{
-	  error (_("Dwarf Error: DWP format V2 with relocations is not"
-		   " supported in section %s [in module %s]"),
-		 get_section_name (info), get_section_file_name (info));
-	}
-      dwarf2_read_section (objfile, containing_section);
-      /* Other code should have already caught virtual sections that don't
-	 fit.  */
-      gdb_assert (info->virtual_offset + info->size
-		  <= containing_section->size);
-      /* If the real section is empty or there was a problem reading the
-	 section we shouldn't get here.  */
-      gdb_assert (containing_section->buffer != NULL);
-      info->buffer = containing_section->buffer + info->virtual_offset;
-      return;
-    }
-
-  /* If the section has relocations, we must read it ourselves.
-     Otherwise we attach it to the BFD.  */
-  if ((sectp->flags & SEC_RELOC) == 0)
-    {
-      info->buffer = gdb_bfd_map_section (sectp, &info->size);
-      return;
-    }
-
-  buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
-  info->buffer = buf;
-
-  /* When debugging .o files, we may need to apply relocations; see
-     http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
-     We never compress sections in .o files, so we only need to
-     try this when the section is not compressed.  */
-  retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
-  if (retbuf != NULL)
-    {
-      info->buffer = retbuf;
-      return;
-    }
-
-  abfd = get_section_bfd_owner (info);
-  gdb_assert (abfd != NULL);
-
-  if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
-      || bfd_bread (buf, info->size, abfd) != info->size)
-    {
-      error (_("Dwarf Error: Can't read DWARF data"
-	       " in section %s [in module %s]"),
-	     bfd_section_name (sectp), bfd_get_filename (abfd));
-    }
-}
-
-/* A helper function that returns the size of a section in a safe way.
-   If you are positive that the section has been read before using the
-   size, then it is safe to refer to the dwarf2_section_info object's
-   "size" field directly.  In other cases, you must call this
-   function, because for compressed sections the size field is not set
-   correctly until the section has been read.  */
-
-static bfd_size_type
-dwarf2_section_size (struct objfile *objfile,
-		     struct dwarf2_section_info *info)
-{
-  if (!info->readin)
-    dwarf2_read_section (objfile, info);
-  return info->size;
-}
-
-/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
-   SECTION_NAME.  */
-
-void
-dwarf2_get_section_info (struct objfile *objfile,
-                         enum dwarf2_section_enum sect,
-                         asection **sectp, const gdb_byte **bufp,
-                         bfd_size_type *sizep)
-{
-  struct dwarf2_per_objfile *data = dwarf2_objfile_data_key.get (objfile);
-  struct dwarf2_section_info *info;
-
-  /* We may see an objfile without any DWARF, in which case we just
-     return nothing.  */
-  if (data == NULL)
-    {
-      *sectp = NULL;
-      *bufp = NULL;
-      *sizep = 0;
-      return;
-    }
-  switch (sect)
-    {
-    case DWARF2_DEBUG_FRAME:
-      info = &data->frame;
-      break;
-    case DWARF2_EH_FRAME:
-      info = &data->eh_frame;
-      break;
-    default:
-      gdb_assert_not_reached ("unexpected section");
-    }
-
-  dwarf2_read_section (objfile, info);
-
-  *sectp = get_section_bfd_section (info);
-  *bufp = info->buffer;
-  *sizep = info->size;
-}
-
-/* A helper function to find the sections for a .dwz file.  */
-
-static void
-locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
-{
-  struct dwz_file *dwz_file = (struct dwz_file *) arg;
-
-  /* Note that we only support the standard ELF names, because .dwz
-     is ELF-only (at the time of writing).  */
-  if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
-    {
-      dwz_file->abbrev.s.section = sectp;
-      dwz_file->abbrev.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
-    {
-      dwz_file->info.s.section = sectp;
-      dwz_file->info.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
-    {
-      dwz_file->str.s.section = sectp;
-      dwz_file->str.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
-    {
-      dwz_file->line.s.section = sectp;
-      dwz_file->line.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
-    {
-      dwz_file->macro.s.section = sectp;
-      dwz_file->macro.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
-    {
-      dwz_file->gdb_index.s.section = sectp;
-      dwz_file->gdb_index.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
-    {
-      dwz_file->debug_names.s.section = sectp;
-      dwz_file->debug_names.size = bfd_section_size (sectp);
-    }
-}
-
-/* See dwarf2read.h.  */
-
-struct dwz_file *
-dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  const char *filename;
-  bfd_size_type buildid_len_arg;
-  size_t buildid_len;
-  bfd_byte *buildid;
-
-  if (dwarf2_per_objfile->dwz_file != NULL)
-    return dwarf2_per_objfile->dwz_file.get ();
-
-  bfd_set_error (bfd_error_no_error);
-  gdb::unique_xmalloc_ptr<char> data
-    (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
-				  &buildid_len_arg, &buildid));
-  if (data == NULL)
-    {
-      if (bfd_get_error () == bfd_error_no_error)
-	return NULL;
-      error (_("could not read '.gnu_debugaltlink' section: %s"),
-	     bfd_errmsg (bfd_get_error ()));
-    }
-
-  gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
-
-  buildid_len = (size_t) buildid_len_arg;
-
-  filename = data.get ();
-
-  std::string abs_storage;
-  if (!IS_ABSOLUTE_PATH (filename))
-    {
-      gdb::unique_xmalloc_ptr<char> abs
-	= gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
-
-      abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
-      filename = abs_storage.c_str ();
-    }
-
-  /* First try the file name given in the section.  If that doesn't
-     work, try to use the build-id instead.  */
-  gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
-  if (dwz_bfd != NULL)
-    {
-      if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
-	dwz_bfd.reset (nullptr);
-    }
-
-  if (dwz_bfd == NULL)
-    dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
-
-  if (dwz_bfd == NULL)
-    error (_("could not find '.gnu_debugaltlink' file for %s"),
-	   objfile_name (dwarf2_per_objfile->objfile));
-
-  std::unique_ptr<struct dwz_file> result
-    (new struct dwz_file (std::move (dwz_bfd)));
-
-  bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
-			 result.get ());
-
-  gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
-			    result->dwz_bfd.get ());
-  dwarf2_per_objfile->dwz_file = std::move (result);
-  return dwarf2_per_objfile->dwz_file.get ();
-}
-
-/* DWARF quick_symbols_functions support.  */
-
-/* TUs can share .debug_line entries, and there can be a lot more TUs than
-   unique line tables, so we maintain a separate table of all .debug_line
-   derived entries to support the sharing.
-   All the quick functions need is the list of file names.  We discard the
-   line_header when we're done and don't need to record it here.  */
-struct quick_file_names
-{
-  /* The data used to construct the hash key.  */
-  struct stmt_list_hash hash;
-
-  /* The number of entries in file_names, real_names.  */
-  unsigned int num_file_names;
-
-  /* The file names from the line table, after being run through
-     file_full_name.  */
-  const char **file_names;
-
-  /* The file names from the line table after being run through
-     gdb_realpath.  These are computed lazily.  */
-  const char **real_names;
-};
-
-/* When using the index (and thus not using psymtabs), each CU has an
-   object of this type.  This is used to hold information needed by
-   the various "quick" methods.  */
-struct dwarf2_per_cu_quick_data
-{
-  /* The file table.  This can be NULL if there was no file table
-     or it's currently not read in.
-     NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
-  struct quick_file_names *file_names;
-
-  /* The corresponding symbol table.  This is NULL if symbols for this
-     CU have not yet been read.  */
-  struct compunit_symtab *compunit_symtab;
-
-  /* A temporary mark bit used when iterating over all CUs in
-     expand_symtabs_matching.  */
-  unsigned int mark : 1;
-
-  /* True if we've tried to read the file table and found there isn't one.
-     There will be no point in trying to read it again next time.  */
-  unsigned int no_file_data : 1;
-};
-
-/* Utility hash function for a stmt_list_hash.  */
-
-static hashval_t
-hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
-{
-  hashval_t v = 0;
-
-  if (stmt_list_hash->dwo_unit != NULL)
-    v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
-  v += to_underlying (stmt_list_hash->line_sect_off);
-  return v;
-}
-
-/* Utility equality function for a stmt_list_hash.  */
-
-static int
-eq_stmt_list_entry (const struct stmt_list_hash *lhs,
-		    const struct stmt_list_hash *rhs)
-{
-  if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
-    return 0;
-  if (lhs->dwo_unit != NULL
-      && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
-    return 0;
-
-  return lhs->line_sect_off == rhs->line_sect_off;
-}
-
-/* Hash function for a quick_file_names.  */
-
-static hashval_t
-hash_file_name_entry (const void *e)
-{
-  const struct quick_file_names *file_data
-    = (const struct quick_file_names *) e;
-
-  return hash_stmt_list_entry (&file_data->hash);
-}
-
-/* Equality function for a quick_file_names.  */
-
-static int
-eq_file_name_entry (const void *a, const void *b)
-{
-  const struct quick_file_names *ea = (const struct quick_file_names *) a;
-  const struct quick_file_names *eb = (const struct quick_file_names *) b;
-
-  return eq_stmt_list_entry (&ea->hash, &eb->hash);
-}
-
-/* Delete function for a quick_file_names.  */
-
-static void
-delete_file_name_entry (void *e)
-{
-  struct quick_file_names *file_data = (struct quick_file_names *) e;
-  int i;
-
-  for (i = 0; i < file_data->num_file_names; ++i)
-    {
-      xfree ((void*) file_data->file_names[i]);
-      if (file_data->real_names)
-	xfree ((void*) file_data->real_names[i]);
-    }
-
-  /* The space for the struct itself lives on objfile_obstack,
-     so we don't free it here.  */
-}
-
-/* Create a quick_file_names hash table.  */
-
-static htab_t
-create_quick_file_names_table (unsigned int nr_initial_entries)
-{
-  return htab_create_alloc (nr_initial_entries,
-			    hash_file_name_entry, eq_file_name_entry,
-			    delete_file_name_entry, xcalloc, xfree);
-}
-
-/* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
-   have to be created afterwards.  You should call age_cached_comp_units after
-   processing PER_CU->CU.  dw2_setup must have been already called.  */
-
-static void
-load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
-{
-  if (per_cu->is_debug_types)
-    load_full_type_unit (per_cu);
-  else
-    load_full_comp_unit (per_cu, skip_partial, language_minimal);
-
-  if (per_cu->cu == NULL)
-    return;  /* Dummy CU.  */
-
-  dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
-}
-
-/* Read in the symbols for PER_CU.  */
-
-static void
-dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
-
-  /* Skip type_unit_groups, reading the type units they contain
-     is handled elsewhere.  */
-  if (IS_TYPE_UNIT_GROUP (per_cu))
-    return;
-
-  /* The destructor of dwarf2_queue_guard frees any entries left on
-     the queue.  After this point we're guaranteed to leave this function
-     with the dwarf queue empty.  */
-  dwarf2_queue_guard q_guard;
-
-  if (dwarf2_per_objfile->using_index
-      ? per_cu->v.quick->compunit_symtab == NULL
-      : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
-    {
-      queue_comp_unit (per_cu, language_minimal);
-      load_cu (per_cu, skip_partial);
-
-      /* If we just loaded a CU from a DWO, and we're working with an index
-	 that may badly handle TUs, load all the TUs in that DWO as well.
-	 http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
-      if (!per_cu->is_debug_types
-	  && per_cu->cu != NULL
-	  && per_cu->cu->dwo_unit != NULL
-	  && dwarf2_per_objfile->index_table != NULL
-	  && dwarf2_per_objfile->index_table->version <= 7
-	  /* DWP files aren't supported yet.  */
-	  && get_dwp_file (dwarf2_per_objfile) == NULL)
-	queue_and_load_all_dwo_tus (per_cu);
-    }
-
-  process_queue (dwarf2_per_objfile);
-
-  /* Age the cache, releasing compilation units that have not
-     been used recently.  */
-  age_cached_comp_units (dwarf2_per_objfile);
-}
-
-/* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
-   the objfile from which this CU came.  Returns the resulting symbol
-   table.  */
-
-static struct compunit_symtab *
-dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
-
-  gdb_assert (dwarf2_per_objfile->using_index);
-  if (!per_cu->v.quick->compunit_symtab)
-    {
-      free_cached_comp_units freer (dwarf2_per_objfile);
-      scoped_restore decrementer = increment_reading_symtab ();
-      dw2_do_instantiate_symtab (per_cu, skip_partial);
-      process_cu_includes (dwarf2_per_objfile);
-    }
-
-  return per_cu->v.quick->compunit_symtab;
-}
-
-/* See declaration.  */
-
-dwarf2_per_cu_data *
-dwarf2_per_objfile::get_cutu (int index)
-{
-  if (index >= this->all_comp_units.size ())
-    {
-      index -= this->all_comp_units.size ();
-      gdb_assert (index < this->all_type_units.size ());
-      return &this->all_type_units[index]->per_cu;
-    }
-
-  return this->all_comp_units[index];
-}
-
-/* See declaration.  */
-
-dwarf2_per_cu_data *
-dwarf2_per_objfile::get_cu (int index)
-{
-  gdb_assert (index >= 0 && index < this->all_comp_units.size ());
-
-  return this->all_comp_units[index];
-}
-
-/* See declaration.  */
-
-signatured_type *
-dwarf2_per_objfile::get_tu (int index)
-{
-  gdb_assert (index >= 0 && index < this->all_type_units.size ());
-
-  return this->all_type_units[index];
-}
-
-/* Return a new dwarf2_per_cu_data allocated on OBJFILE's
-   objfile_obstack, and constructed with the specified field
-   values.  */
-
-static dwarf2_per_cu_data *
-create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
-                          struct dwarf2_section_info *section,
-                          int is_dwz,
-                          sect_offset sect_off, ULONGEST length)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  dwarf2_per_cu_data *the_cu
-    = OBSTACK_ZALLOC (&objfile->objfile_obstack,
-                     struct dwarf2_per_cu_data);
-  the_cu->sect_off = sect_off;
-  the_cu->length = length;
-  the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
-  the_cu->section = section;
-  the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
-                                   struct dwarf2_per_cu_quick_data);
-  the_cu->is_dwz = is_dwz;
-  return the_cu;
-}
-
-/* A helper for create_cus_from_index that handles a given list of
-   CUs.  */
-
-static void
-create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			    const gdb_byte *cu_list, offset_type n_elements,
-			    struct dwarf2_section_info *section,
-			    int is_dwz)
-{
-  for (offset_type i = 0; i < n_elements; i += 2)
-    {
-      gdb_static_assert (sizeof (ULONGEST) >= 8);
-
-      sect_offset sect_off
-	= (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
-      ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
-      cu_list += 2 * 8;
-
-      dwarf2_per_cu_data *per_cu
-	= create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
-				     sect_off, length);
-      dwarf2_per_objfile->all_comp_units.push_back (per_cu);
-    }
-}
-
-/* Read the CU list from the mapped index, and use it to create all
-   the CU objects for this objfile.  */
-
-static void
-create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
-		       const gdb_byte *cu_list, offset_type cu_list_elements,
-		       const gdb_byte *dwz_list, offset_type dwz_elements)
-{
-  gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
-  dwarf2_per_objfile->all_comp_units.reserve
-    ((cu_list_elements + dwz_elements) / 2);
-
-  create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
-			      &dwarf2_per_objfile->info, 0);
-
-  if (dwz_elements == 0)
-    return;
-
-  dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
-  create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
-			      &dwz->info, 1);
-}
-
-/* Create the signatured type hash table from the index.  */
-
-static void
-create_signatured_type_table_from_index
-  (struct dwarf2_per_objfile *dwarf2_per_objfile,
-   struct dwarf2_section_info *section,
-   const gdb_byte *bytes,
-   offset_type elements)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-  gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
-  dwarf2_per_objfile->all_type_units.reserve (elements / 3);
-
-  htab_t sig_types_hash = allocate_signatured_type_table (objfile);
-
-  for (offset_type i = 0; i < elements; i += 3)
-    {
-      struct signatured_type *sig_type;
-      ULONGEST signature;
-      void **slot;
-      cu_offset type_offset_in_tu;
-
-      gdb_static_assert (sizeof (ULONGEST) >= 8);
-      sect_offset sect_off
-	= (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
-      type_offset_in_tu
-	= (cu_offset) extract_unsigned_integer (bytes + 8, 8,
-						BFD_ENDIAN_LITTLE);
-      signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
-      bytes += 3 * 8;
-
-      sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
-				 struct signatured_type);
-      sig_type->signature = signature;
-      sig_type->type_offset_in_tu = type_offset_in_tu;
-      sig_type->per_cu.is_debug_types = 1;
-      sig_type->per_cu.section = section;
-      sig_type->per_cu.sect_off = sect_off;
-      sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
-      sig_type->per_cu.v.quick
-	= OBSTACK_ZALLOC (&objfile->objfile_obstack,
-			  struct dwarf2_per_cu_quick_data);
-
-      slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
-      *slot = sig_type;
-
-      dwarf2_per_objfile->all_type_units.push_back (sig_type);
-    }
-
-  dwarf2_per_objfile->signatured_types = sig_types_hash;
-}
-
-/* Create the signatured type hash table from .debug_names.  */
-
-static void
-create_signatured_type_table_from_debug_names
-  (struct dwarf2_per_objfile *dwarf2_per_objfile,
-   const mapped_debug_names &map,
-   struct dwarf2_section_info *section,
-   struct dwarf2_section_info *abbrev_section)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-  dwarf2_read_section (objfile, section);
-  dwarf2_read_section (objfile, abbrev_section);
-
-  gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
-  dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
-
-  htab_t sig_types_hash = allocate_signatured_type_table (objfile);
-
-  for (uint32_t i = 0; i < map.tu_count; ++i)
-    {
-      struct signatured_type *sig_type;
-      void **slot;
-
-      sect_offset sect_off
-	= (sect_offset) (extract_unsigned_integer
-			 (map.tu_table_reordered + i * map.offset_size,
-			  map.offset_size,
-			  map.dwarf5_byte_order));
-
-      comp_unit_head cu_header;
-      read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
-				     abbrev_section,
-				     section->buffer + to_underlying (sect_off),
-				     rcuh_kind::TYPE);
-
-      sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
-				 struct signatured_type);
-      sig_type->signature = cu_header.signature;
-      sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
-      sig_type->per_cu.is_debug_types = 1;
-      sig_type->per_cu.section = section;
-      sig_type->per_cu.sect_off = sect_off;
-      sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
-      sig_type->per_cu.v.quick
-	= OBSTACK_ZALLOC (&objfile->objfile_obstack,
-			  struct dwarf2_per_cu_quick_data);
-
-      slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
-      *slot = sig_type;
-
-      dwarf2_per_objfile->all_type_units.push_back (sig_type);
-    }
-
-  dwarf2_per_objfile->signatured_types = sig_types_hash;
-}
-
-/* Read the address map data from the mapped index, and use it to
-   populate the objfile's psymtabs_addrmap.  */
-
-static void
-create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			   struct mapped_index *index)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  const gdb_byte *iter, *end;
-  struct addrmap *mutable_map;
-  CORE_ADDR baseaddr;
-
-  auto_obstack temp_obstack;
-
-  mutable_map = addrmap_create_mutable (&temp_obstack);
-
-  iter = index->address_table.data ();
-  end = iter + index->address_table.size ();
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  while (iter < end)
-    {
-      ULONGEST hi, lo, cu_index;
-      lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
-      iter += 8;
-      hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
-      iter += 8;
-      cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
-      iter += 4;
-
-      if (lo > hi)
-	{
-	  complaint (_(".gdb_index address table has invalid range (%s - %s)"),
-		     hex_string (lo), hex_string (hi));
-	  continue;
-	}
-
-      if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
-	{
-	  complaint (_(".gdb_index address table has invalid CU number %u"),
-		     (unsigned) cu_index);
-	  continue;
-	}
-
-      lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
-      hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
-      addrmap_set_empty (mutable_map, lo, hi - 1,
-			 dwarf2_per_objfile->get_cu (cu_index));
-    }
-
-  objfile->partial_symtabs->psymtabs_addrmap
-    = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
-}
-
-/* Read the address map data from DWARF-5 .debug_aranges, and use it to
-   populate the objfile's psymtabs_addrmap.  */
-
-static void
-create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			     struct dwarf2_section_info *section)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  bfd *abfd = objfile->obfd;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
-				       SECT_OFF_TEXT (objfile));
-
-  auto_obstack temp_obstack;
-  addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
-
-  std::unordered_map<sect_offset,
-		     dwarf2_per_cu_data *,
-		     gdb::hash_enum<sect_offset>>
-    debug_info_offset_to_per_cu;
-  for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-    {
-      const auto insertpair
-	= debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
-      if (!insertpair.second)
-	{
-	  warning (_("Section .debug_aranges in %s has duplicate "
-		     "debug_info_offset %s, ignoring .debug_aranges."),
-		   objfile_name (objfile), sect_offset_str (per_cu->sect_off));
-	  return;
-	}
-    }
-
-  dwarf2_read_section (objfile, section);
-
-  const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
-
-  const gdb_byte *addr = section->buffer;
-
-  while (addr < section->buffer + section->size)
-    {
-      const gdb_byte *const entry_addr = addr;
-      unsigned int bytes_read;
-
-      const LONGEST entry_length = read_initial_length (abfd, addr,
-							&bytes_read);
-      addr += bytes_read;
-
-      const gdb_byte *const entry_end = addr + entry_length;
-      const bool dwarf5_is_dwarf64 = bytes_read != 4;
-      const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
-      if (addr + entry_length > section->buffer + section->size)
-	{
-	  warning (_("Section .debug_aranges in %s entry at offset %s "
-	             "length %s exceeds section length %s, "
-		     "ignoring .debug_aranges."),
-		   objfile_name (objfile),
-		   plongest (entry_addr - section->buffer),
-		   plongest (bytes_read + entry_length),
-		   pulongest (section->size));
-	  return;
-	}
-
-      /* The version number.  */
-      const uint16_t version = read_2_bytes (abfd, addr);
-      addr += 2;
-      if (version != 2)
-	{
-	  warning (_("Section .debug_aranges in %s entry at offset %s "
-		     "has unsupported version %d, ignoring .debug_aranges."),
-		   objfile_name (objfile),
-		   plongest (entry_addr - section->buffer), version);
-	  return;
-	}
-
-      const uint64_t debug_info_offset
-	= extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
-      addr += offset_size;
-      const auto per_cu_it
-	= debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
-      if (per_cu_it == debug_info_offset_to_per_cu.cend ())
-	{
-	  warning (_("Section .debug_aranges in %s entry at offset %s "
-		     "debug_info_offset %s does not exists, "
-		     "ignoring .debug_aranges."),
-		   objfile_name (objfile),
-		   plongest (entry_addr - section->buffer),
-		   pulongest (debug_info_offset));
-	  return;
-	}
-      dwarf2_per_cu_data *const per_cu = per_cu_it->second;
-
-      const uint8_t address_size = *addr++;
-      if (address_size < 1 || address_size > 8)
-	{
-	  warning (_("Section .debug_aranges in %s entry at offset %s "
-		     "address_size %u is invalid, ignoring .debug_aranges."),
-		   objfile_name (objfile),
-		   plongest (entry_addr - section->buffer), address_size);
-	  return;
-	}
-
-      const uint8_t segment_selector_size = *addr++;
-      if (segment_selector_size != 0)
-	{
-	  warning (_("Section .debug_aranges in %s entry at offset %s "
-		     "segment_selector_size %u is not supported, "
-		     "ignoring .debug_aranges."),
-		   objfile_name (objfile),
-		   plongest (entry_addr - section->buffer),
-		   segment_selector_size);
-	  return;
-	}
-
-      /* Must pad to an alignment boundary that is twice the address
-         size.  It is undocumented by the DWARF standard but GCC does
-         use it.  */
-      for (size_t padding = ((-(addr - section->buffer))
-			     & (2 * address_size - 1));
-           padding > 0; padding--)
-	if (*addr++ != 0)
-	  {
-	    warning (_("Section .debug_aranges in %s entry at offset %s "
-		       "padding is not zero, ignoring .debug_aranges."),
-		     objfile_name (objfile),
-		     plongest (entry_addr - section->buffer));
-	    return;
-	  }
-
-      for (;;)
-	{
-	  if (addr + 2 * address_size > entry_end)
-	    {
-	      warning (_("Section .debug_aranges in %s entry at offset %s "
-			 "address list is not properly terminated, "
-			 "ignoring .debug_aranges."),
-		       objfile_name (objfile),
-		       plongest (entry_addr - section->buffer));
-	      return;
-	    }
-	  ULONGEST start = extract_unsigned_integer (addr, address_size,
-						     dwarf5_byte_order);
-	  addr += address_size;
-	  ULONGEST length = extract_unsigned_integer (addr, address_size,
-						      dwarf5_byte_order);
-	  addr += address_size;
-	  if (start == 0 && length == 0)
-	    break;
-	  if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
-	    {
-	      /* Symbol was eliminated due to a COMDAT group.  */
-	      continue;
-	    }
-	  ULONGEST end = start + length;
-	  start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
-		   - baseaddr);
-	  end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
-		 - baseaddr);
-	  addrmap_set_empty (mutable_map, start, end - 1, per_cu);
-	}
-    }
-
-  objfile->partial_symtabs->psymtabs_addrmap
-    = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
-}
-
-/* Find a slot in the mapped index INDEX for the object named NAME.
-   If NAME is found, set *VEC_OUT to point to the CU vector in the
-   constant pool and return true.  If NAME cannot be found, return
-   false.  */
-
-static bool
-find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
-			  offset_type **vec_out)
-{
-  offset_type hash;
-  offset_type slot, step;
-  int (*cmp) (const char *, const char *);
-
-  gdb::unique_xmalloc_ptr<char> without_params;
-  if (current_language->la_language == language_cplus
-      || current_language->la_language == language_fortran
-      || current_language->la_language == language_d)
-    {
-      /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
-	 not contain any.  */
-
-      if (strchr (name, '(') != NULL)
-	{
-	  without_params = cp_remove_params (name);
-
-	  if (without_params != NULL)
-	    name = without_params.get ();
-	}
-    }
-
-  /* Index version 4 did not support case insensitive searches.  But the
-     indices for case insensitive languages are built in lowercase, therefore
-     simulate our NAME being searched is also lowercased.  */
-  hash = mapped_index_string_hash ((index->version == 4
-                                    && case_sensitivity == case_sensitive_off
-				    ? 5 : index->version),
-				   name);
-
-  slot = hash & (index->symbol_table.size () - 1);
-  step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
-  cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
-
-  for (;;)
-    {
-      const char *str;
-
-      const auto &bucket = index->symbol_table[slot];
-      if (bucket.name == 0 && bucket.vec == 0)
-	return false;
-
-      str = index->constant_pool + MAYBE_SWAP (bucket.name);
-      if (!cmp (name, str))
-	{
-	  *vec_out = (offset_type *) (index->constant_pool
-				      + MAYBE_SWAP (bucket.vec));
-	  return true;
-	}
-
-      slot = (slot + step) & (index->symbol_table.size () - 1);
-    }
-}
-
-/* A helper function that reads the .gdb_index from BUFFER and fills
-   in MAP.  FILENAME is the name of the file containing the data;
-   it is used for error reporting.  DEPRECATED_OK is true if it is
-   ok to use deprecated sections.
-
-   CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
-   out parameters that are filled in with information about the CU and
-   TU lists in the section.
-
-   Returns true if all went well, false otherwise.  */
-
-static bool
-read_gdb_index_from_buffer (struct objfile *objfile,
-			    const char *filename,
-			    bool deprecated_ok,
-			    gdb::array_view<const gdb_byte> buffer,
-			    struct mapped_index *map,
-			    const gdb_byte **cu_list,
-			    offset_type *cu_list_elements,
-			    const gdb_byte **types_list,
-			    offset_type *types_list_elements)
-{
-  const gdb_byte *addr = &buffer[0];
-
-  /* Version check.  */
-  offset_type version = MAYBE_SWAP (*(offset_type *) addr);
-  /* Versions earlier than 3 emitted every copy of a psymbol.  This
-     causes the index to behave very poorly for certain requests.  Version 3
-     contained incomplete addrmap.  So, it seems better to just ignore such
-     indices.  */
-  if (version < 4)
-    {
-      static int warning_printed = 0;
-      if (!warning_printed)
-	{
-	  warning (_("Skipping obsolete .gdb_index section in %s."),
-		   filename);
-	  warning_printed = 1;
-	}
-      return 0;
-    }
-  /* Index version 4 uses a different hash function than index version
-     5 and later.
-
-     Versions earlier than 6 did not emit psymbols for inlined
-     functions.  Using these files will cause GDB not to be able to
-     set breakpoints on inlined functions by name, so we ignore these
-     indices unless the user has done
-     "set use-deprecated-index-sections on".  */
-  if (version < 6 && !deprecated_ok)
-    {
-      static int warning_printed = 0;
-      if (!warning_printed)
-	{
-	  warning (_("\
-Skipping deprecated .gdb_index section in %s.\n\
-Do \"set use-deprecated-index-sections on\" before the file is read\n\
-to use the section anyway."),
-		   filename);
-	  warning_printed = 1;
-	}
-      return 0;
-    }
-  /* Version 7 indices generated by gold refer to the CU for a symbol instead
-     of the TU (for symbols coming from TUs),
-     http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
-     Plus gold-generated indices can have duplicate entries for global symbols,
-     http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
-     These are just performance bugs, and we can't distinguish gdb-generated
-     indices from gold-generated ones, so issue no warning here.  */
-
-  /* Indexes with higher version than the one supported by GDB may be no
-     longer backward compatible.  */
-  if (version > 8)
-    return 0;
-
-  map->version = version;
-
-  offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
-
-  int i = 0;
-  *cu_list = addr + MAYBE_SWAP (metadata[i]);
-  *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
-		       / 8);
-  ++i;
-
-  *types_list = addr + MAYBE_SWAP (metadata[i]);
-  *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
-			   - MAYBE_SWAP (metadata[i]))
-			  / 8);
-  ++i;
-
-  const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
-  const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
-  map->address_table
-    = gdb::array_view<const gdb_byte> (address_table, address_table_end);
-  ++i;
-
-  const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
-  const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
-  map->symbol_table
-    = gdb::array_view<mapped_index::symbol_table_slot>
-       ((mapped_index::symbol_table_slot *) symbol_table,
-	(mapped_index::symbol_table_slot *) symbol_table_end);
-
-  ++i;
-  map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
-
-  return 1;
-}
-
-/* Callback types for dwarf2_read_gdb_index.  */
-
-typedef gdb::function_view
-    <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
-    get_gdb_index_contents_ftype;
-typedef gdb::function_view
-    <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
-    get_gdb_index_contents_dwz_ftype;
-
-/* Read .gdb_index.  If everything went ok, initialize the "quick"
-   elements of all the CUs and return 1.  Otherwise, return 0.  */
-
-static int
-dwarf2_read_gdb_index
-  (struct dwarf2_per_objfile *dwarf2_per_objfile,
-   get_gdb_index_contents_ftype get_gdb_index_contents,
-   get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
-{
-  const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
-  offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
-  struct dwz_file *dwz;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-  gdb::array_view<const gdb_byte> main_index_contents
-    = get_gdb_index_contents (objfile, dwarf2_per_objfile);
-
-  if (main_index_contents.empty ())
-    return 0;
-
-  std::unique_ptr<struct mapped_index> map (new struct mapped_index);
-  if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
-				   use_deprecated_index_sections,
-				   main_index_contents, map.get (), &cu_list,
-				   &cu_list_elements, &types_list,
-				   &types_list_elements))
-    return 0;
-
-  /* Don't use the index if it's empty.  */
-  if (map->symbol_table.empty ())
-    return 0;
-
-  /* If there is a .dwz file, read it so we can get its CU list as
-     well.  */
-  dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
-  if (dwz != NULL)
-    {
-      struct mapped_index dwz_map;
-      const gdb_byte *dwz_types_ignore;
-      offset_type dwz_types_elements_ignore;
-
-      gdb::array_view<const gdb_byte> dwz_index_content
-	= get_gdb_index_contents_dwz (objfile, dwz);
-
-      if (dwz_index_content.empty ())
-	return 0;
-
-      if (!read_gdb_index_from_buffer (objfile,
-				       bfd_get_filename (dwz->dwz_bfd.get ()),
-				       1, dwz_index_content, &dwz_map,
-				       &dwz_list, &dwz_list_elements,
-				       &dwz_types_ignore,
-				       &dwz_types_elements_ignore))
-	{
-	  warning (_("could not read '.gdb_index' section from %s; skipping"),
-		   bfd_get_filename (dwz->dwz_bfd.get ()));
-	  return 0;
-	}
-    }
-
-  create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
-			 dwz_list, dwz_list_elements);
-
-  if (types_list_elements)
-    {
-      /* We can only handle a single .debug_types when we have an
-	 index.  */
-      if (dwarf2_per_objfile->types.size () != 1)
-	return 0;
-
-      dwarf2_section_info *section = &dwarf2_per_objfile->types[0];
-
-      create_signatured_type_table_from_index (dwarf2_per_objfile, section,
-					       types_list, types_list_elements);
-    }
-
-  create_addrmap_from_index (dwarf2_per_objfile, map.get ());
-
-  dwarf2_per_objfile->index_table = std::move (map);
-  dwarf2_per_objfile->using_index = 1;
-  dwarf2_per_objfile->quick_file_names_table =
-    create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
-
-  return 1;
-}
-
-/* die_reader_func for dw2_get_file_names.  */
-
-static void
-dw2_get_file_names_reader (const struct die_reader_specs *reader,
-			   const gdb_byte *info_ptr,
-			   struct die_info *comp_unit_die,
-			   int has_children,
-			   void *data)
-{
-  struct dwarf2_cu *cu = reader->cu;
-  struct dwarf2_per_cu_data *this_cu = cu->per_cu;
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwarf2_per_cu_data *lh_cu;
-  struct attribute *attr;
-  void **slot;
-  struct quick_file_names *qfn;
-
-  gdb_assert (! this_cu->is_debug_types);
-
-  /* Our callers never want to match partial units -- instead they
-     will match the enclosing full CU.  */
-  if (comp_unit_die->tag == DW_TAG_partial_unit)
-    {
-      this_cu->v.quick->no_file_data = 1;
-      return;
-    }
-
-  lh_cu = this_cu;
-  slot = NULL;
-
-  line_header_up lh;
-  sect_offset line_offset {};
-
-  attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
-  if (attr != nullptr)
-    {
-      struct quick_file_names find_entry;
-
-      line_offset = (sect_offset) DW_UNSND (attr);
-
-      /* We may have already read in this line header (TU line header sharing).
-	 If we have we're done.  */
-      find_entry.hash.dwo_unit = cu->dwo_unit;
-      find_entry.hash.line_sect_off = line_offset;
-      slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
-			     &find_entry, INSERT);
-      if (*slot != NULL)
-	{
-	  lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
-	  return;
-	}
-
-      lh = dwarf_decode_line_header (line_offset, cu);
-    }
-  if (lh == NULL)
-    {
-      lh_cu->v.quick->no_file_data = 1;
-      return;
-    }
-
-  qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
-  qfn->hash.dwo_unit = cu->dwo_unit;
-  qfn->hash.line_sect_off = line_offset;
-  gdb_assert (slot != NULL);
-  *slot = qfn;
-
-  file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
-
-  int offset = 0;
-  if (strcmp (fnd.name, "<unknown>") != 0)
-    ++offset;
-
-  qfn->num_file_names = offset + lh->file_names_size ();
-  qfn->file_names =
-    XOBNEWVEC (&objfile->objfile_obstack, const char *, qfn->num_file_names);
-  if (offset != 0)
-    qfn->file_names[0] = xstrdup (fnd.name);
-  for (int i = 0; i < lh->file_names_size (); ++i)
-    qfn->file_names[i + offset] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
-  qfn->real_names = NULL;
-
-  lh_cu->v.quick->file_names = qfn;
-}
-
-/* A helper for the "quick" functions which attempts to read the line
-   table for THIS_CU.  */
-
-static struct quick_file_names *
-dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
-{
-  /* This should never be called for TUs.  */
-  gdb_assert (! this_cu->is_debug_types);
-  /* Nor type unit groups.  */
-  gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
-
-  if (this_cu->v.quick->file_names != NULL)
-    return this_cu->v.quick->file_names;
-  /* If we know there is no line data, no point in looking again.  */
-  if (this_cu->v.quick->no_file_data)
-    return NULL;
-
-  init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
-
-  if (this_cu->v.quick->no_file_data)
-    return NULL;
-  return this_cu->v.quick->file_names;
-}
-
-/* A helper for the "quick" functions which computes and caches the
-   real path for a given file name from the line table.  */
-
-static const char *
-dw2_get_real_path (struct objfile *objfile,
-		   struct quick_file_names *qfn, int index)
-{
-  if (qfn->real_names == NULL)
-    qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
-				      qfn->num_file_names, const char *);
-
-  if (qfn->real_names[index] == NULL)
-    qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
-
-  return qfn->real_names[index];
-}
-
-static struct symtab *
-dw2_find_last_source_symtab (struct objfile *objfile)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-  dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
-  compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
-
-  if (cust == NULL)
-    return NULL;
-
-  return compunit_primary_filetab (cust);
-}
-
-/* Traversal function for dw2_forget_cached_source_info.  */
-
-static int
-dw2_free_cached_file_names (void **slot, void *info)
-{
-  struct quick_file_names *file_data = (struct quick_file_names *) *slot;
-
-  if (file_data->real_names)
-    {
-      int i;
-
-      for (i = 0; i < file_data->num_file_names; ++i)
-	{
-	  xfree ((void*) file_data->real_names[i]);
-	  file_data->real_names[i] = NULL;
-	}
-    }
-
-  return 1;
-}
-
-static void
-dw2_forget_cached_source_info (struct objfile *objfile)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
-			  dw2_free_cached_file_names, NULL);
-}
-
-/* Helper function for dw2_map_symtabs_matching_filename that expands
-   the symtabs and calls the iterator.  */
-
-static int
-dw2_map_expand_apply (struct objfile *objfile,
-		      struct dwarf2_per_cu_data *per_cu,
-		      const char *name, const char *real_path,
-		      gdb::function_view<bool (symtab *)> callback)
-{
-  struct compunit_symtab *last_made = objfile->compunit_symtabs;
-
-  /* Don't visit already-expanded CUs.  */
-  if (per_cu->v.quick->compunit_symtab)
-    return 0;
-
-  /* This may expand more than one symtab, and we want to iterate over
-     all of them.  */
-  dw2_instantiate_symtab (per_cu, false);
-
-  return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
-				    last_made, callback);
-}
-
-/* Implementation of the map_symtabs_matching_filename method.  */
-
-static bool
-dw2_map_symtabs_matching_filename
-  (struct objfile *objfile, const char *name, const char *real_path,
-   gdb::function_view<bool (symtab *)> callback)
-{
-  const char *name_basename = lbasename (name);
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  /* The rule is CUs specify all the files, including those used by
-     any TU, so there's no need to scan TUs here.  */
-
-  for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-    {
-      /* We only need to look at symtabs not already expanded.  */
-      if (per_cu->v.quick->compunit_symtab)
-	continue;
-
-      quick_file_names *file_data = dw2_get_file_names (per_cu);
-      if (file_data == NULL)
-	continue;
-
-      for (int j = 0; j < file_data->num_file_names; ++j)
-	{
-	  const char *this_name = file_data->file_names[j];
-	  const char *this_real_name;
-
-	  if (compare_filenames_for_search (this_name, name))
-	    {
-	      if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
-					callback))
-		return true;
-	      continue;
-	    }
-
-	  /* Before we invoke realpath, which can get expensive when many
-	     files are involved, do a quick comparison of the basenames.  */
-	  if (! basenames_may_differ
-	      && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
-	    continue;
-
-	  this_real_name = dw2_get_real_path (objfile, file_data, j);
-	  if (compare_filenames_for_search (this_real_name, name))
-	    {
-	      if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
-					callback))
-		return true;
-	      continue;
-	    }
-
-	  if (real_path != NULL)
-	    {
-	      gdb_assert (IS_ABSOLUTE_PATH (real_path));
-	      gdb_assert (IS_ABSOLUTE_PATH (name));
-	      if (this_real_name != NULL
-		  && FILENAME_CMP (real_path, this_real_name) == 0)
-		{
-		  if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
-					    callback))
-		    return true;
-		  continue;
-		}
-	    }
-	}
-    }
-
-  return false;
-}
-
-/* Struct used to manage iterating over all CUs looking for a symbol.  */
-
-struct dw2_symtab_iterator
-{
-  /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
-  struct dwarf2_per_objfile *dwarf2_per_objfile;
-  /* If set, only look for symbols that match that block.  Valid values are
-     GLOBAL_BLOCK and STATIC_BLOCK.  */
-  gdb::optional<block_enum> block_index;
-  /* The kind of symbol we're looking for.  */
-  domain_enum domain;
-  /* The list of CUs from the index entry of the symbol,
-     or NULL if not found.  */
-  offset_type *vec;
-  /* The next element in VEC to look at.  */
-  int next;
-  /* The number of elements in VEC, or zero if there is no match.  */
-  int length;
-  /* Have we seen a global version of the symbol?
-     If so we can ignore all further global instances.
-     This is to work around gold/15646, inefficient gold-generated
-     indices.  */
-  int global_seen;
-};
-
-/* Initialize the index symtab iterator ITER.  */
-
-static void
-dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
-		      struct dwarf2_per_objfile *dwarf2_per_objfile,
-		      gdb::optional<block_enum> block_index,
-		      domain_enum domain,
-		      const char *name)
-{
-  iter->dwarf2_per_objfile = dwarf2_per_objfile;
-  iter->block_index = block_index;
-  iter->domain = domain;
-  iter->next = 0;
-  iter->global_seen = 0;
-
-  mapped_index *index = dwarf2_per_objfile->index_table.get ();
-
-  /* index is NULL if OBJF_READNOW.  */
-  if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
-    iter->length = MAYBE_SWAP (*iter->vec);
-  else
-    {
-      iter->vec = NULL;
-      iter->length = 0;
-    }
-}
-
-/* Return the next matching CU or NULL if there are no more.  */
-
-static struct dwarf2_per_cu_data *
-dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
-
-  for ( ; iter->next < iter->length; ++iter->next)
-    {
-      offset_type cu_index_and_attrs =
-	MAYBE_SWAP (iter->vec[iter->next + 1]);
-      offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
-      gdb_index_symbol_kind symbol_kind =
-	GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
-      /* Only check the symbol attributes if they're present.
-	 Indices prior to version 7 don't record them,
-	 and indices >= 7 may elide them for certain symbols
-	 (gold does this).  */
-      int attrs_valid =
-	(dwarf2_per_objfile->index_table->version >= 7
-	 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
-
-      /* Don't crash on bad data.  */
-      if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
-		       + dwarf2_per_objfile->all_type_units.size ()))
-	{
-	  complaint (_(".gdb_index entry has bad CU index"
-		       " [in module %s]"),
-		     objfile_name (dwarf2_per_objfile->objfile));
-	  continue;
-	}
-
-      dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
-
-      /* Skip if already read in.  */
-      if (per_cu->v.quick->compunit_symtab)
-	continue;
-
-      /* Check static vs global.  */
-      if (attrs_valid)
-	{
-	  bool is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
-
-	  if (iter->block_index.has_value ())
-	    {
-	      bool want_static = *iter->block_index == STATIC_BLOCK;
-
-	      if (is_static != want_static)
-		continue;
-	    }
-
-	  /* Work around gold/15646.  */
-	  if (!is_static && iter->global_seen)
-	    continue;
-	  if (!is_static)
-	    iter->global_seen = 1;
-	}
-
-      /* Only check the symbol's kind if it has one.  */
-      if (attrs_valid)
-	{
-	  switch (iter->domain)
-	    {
-	    case VAR_DOMAIN:
-	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
-		  && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
-		  /* Some types are also in VAR_DOMAIN.  */
-		  && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
-		continue;
-	      break;
-	    case STRUCT_DOMAIN:
-	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
-		continue;
-	      break;
-	    case LABEL_DOMAIN:
-	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
-		continue;
-	      break;
-	    case MODULE_DOMAIN:
-	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
-		continue;
-	      break;
-	    default:
-	      break;
-	    }
-	}
-
-      ++iter->next;
-      return per_cu;
-    }
-
-  return NULL;
-}
-
-static struct compunit_symtab *
-dw2_lookup_symbol (struct objfile *objfile, block_enum block_index,
-		   const char *name, domain_enum domain)
-{
-  struct compunit_symtab *stab_best = NULL;
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
-
-  struct dw2_symtab_iterator iter;
-  struct dwarf2_per_cu_data *per_cu;
-
-  dw2_symtab_iter_init (&iter, dwarf2_per_objfile, block_index, domain, name);
-
-  while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
-    {
-      struct symbol *sym, *with_opaque = NULL;
-      struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
-      const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
-      const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
-
-      sym = block_find_symbol (block, name, domain,
-			       block_find_non_opaque_type_preferred,
-			       &with_opaque);
-
-      /* Some caution must be observed with overloaded functions
-	 and methods, since the index will not contain any overload
-	 information (but NAME might contain it).  */
-
-      if (sym != NULL
-	  && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
-	return stab;
-      if (with_opaque != NULL
-	  && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
-	stab_best = stab;
-
-      /* Keep looking through other CUs.  */
-    }
-
-  return stab_best;
-}
-
-static void
-dw2_print_stats (struct objfile *objfile)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-  int total = (dwarf2_per_objfile->all_comp_units.size ()
-	       + dwarf2_per_objfile->all_type_units.size ());
-  int count = 0;
-
-  for (int i = 0; i < total; ++i)
-    {
-      dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
-
-      if (!per_cu->v.quick->compunit_symtab)
-	++count;
-    }
-  printf_filtered (_("  Number of read CUs: %d\n"), total - count);
-  printf_filtered (_("  Number of unread CUs: %d\n"), count);
-}
-
-/* This dumps minimal information about the index.
-   It is called via "mt print objfiles".
-   One use is to verify .gdb_index has been loaded by the
-   gdb.dwarf2/gdb-index.exp testcase.  */
-
-static void
-dw2_dump (struct objfile *objfile)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  gdb_assert (dwarf2_per_objfile->using_index);
-  printf_filtered (".gdb_index:");
-  if (dwarf2_per_objfile->index_table != NULL)
-    {
-      printf_filtered (" version %d\n",
-		       dwarf2_per_objfile->index_table->version);
-    }
-  else
-    printf_filtered (" faked for \"readnow\"\n");
-  printf_filtered ("\n");
-}
-
-static void
-dw2_expand_symtabs_for_function (struct objfile *objfile,
-				 const char *func_name)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  struct dw2_symtab_iterator iter;
-  struct dwarf2_per_cu_data *per_cu;
-
-  dw2_symtab_iter_init (&iter, dwarf2_per_objfile, {}, VAR_DOMAIN, func_name);
-
-  while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
-    dw2_instantiate_symtab (per_cu, false);
-
-}
-
-static void
-dw2_expand_all_symtabs (struct objfile *objfile)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-  int total_units = (dwarf2_per_objfile->all_comp_units.size ()
-		     + dwarf2_per_objfile->all_type_units.size ());
-
-  for (int i = 0; i < total_units; ++i)
-    {
-      dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
-
-      /* We don't want to directly expand a partial CU, because if we
-	 read it with the wrong language, then assertion failures can
-	 be triggered later on.  See PR symtab/23010.  So, tell
-	 dw2_instantiate_symtab to skip partial CUs -- any important
-	 partial CU will be read via DW_TAG_imported_unit anyway.  */
-      dw2_instantiate_symtab (per_cu, true);
-    }
-}
-
-static void
-dw2_expand_symtabs_with_fullname (struct objfile *objfile,
-				  const char *fullname)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  /* We don't need to consider type units here.
-     This is only called for examining code, e.g. expand_line_sal.
-     There can be an order of magnitude (or more) more type units
-     than comp units, and we avoid them if we can.  */
-
-  for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-    {
-      /* We only need to look at symtabs not already expanded.  */
-      if (per_cu->v.quick->compunit_symtab)
-	continue;
-
-      quick_file_names *file_data = dw2_get_file_names (per_cu);
-      if (file_data == NULL)
-	continue;
-
-      for (int j = 0; j < file_data->num_file_names; ++j)
-	{
-	  const char *this_fullname = file_data->file_names[j];
-
-	  if (filename_cmp (this_fullname, fullname) == 0)
-	    {
-	      dw2_instantiate_symtab (per_cu, false);
-	      break;
-	    }
-	}
-    }
-}
-
-static void
-dw2_map_matching_symbols
-  (struct objfile *objfile,
-   const lookup_name_info &name, domain_enum domain,
-   int global,
-   gdb::function_view<symbol_found_callback_ftype> callback,
-   symbol_compare_ftype *ordered_compare)
-{
-  /* Currently unimplemented; used for Ada.  The function can be called if the
-     current language is Ada for a non-Ada objfile using GNU index.  As Ada
-     does not look for non-Ada symbols this function should just return.  */
-}
-
-/* Starting from a search name, return the string that finds the upper
-   bound of all strings that start with SEARCH_NAME in a sorted name
-   list.  Returns the empty string to indicate that the upper bound is
-   the end of the list.  */
-
-static std::string
-make_sort_after_prefix_name (const char *search_name)
-{
-  /* When looking to complete "func", we find the upper bound of all
-     symbols that start with "func" by looking for where we'd insert
-     the closest string that would follow "func" in lexicographical
-     order.  Usually, that's "func"-with-last-character-incremented,
-     i.e. "fund".  Mind non-ASCII characters, though.  Usually those
-     will be UTF-8 multi-byte sequences, but we can't be certain.
-     Especially mind the 0xff character, which is a valid character in
-     non-UTF-8 source character sets (e.g. Latin1 'Ã¿'), and we can't
-     rule out compilers allowing it in identifiers.  Note that
-     conveniently, strcmp/strcasecmp are specified to compare
-     characters interpreted as unsigned char.  So what we do is treat
-     the whole string as a base 256 number composed of a sequence of
-     base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
-     to 0, and carries 1 to the following more-significant position.
-     If the very first character in SEARCH_NAME ends up incremented
-     and carries/overflows, then the upper bound is the end of the
-     list.  The string after the empty string is also the empty
-     string.
-
-     Some examples of this operation:
-
-       SEARCH_NAME  => "+1" RESULT
-
-       "abc"              => "abd"
-       "ab\xff"           => "ac"
-       "\xff" "a" "\xff"  => "\xff" "b"
-       "\xff"             => ""
-       "\xff\xff"         => ""
-       ""                 => ""
-
-     Then, with these symbols for example:
-
-      func
-      func1
-      fund
-
-     completing "func" looks for symbols between "func" and
-     "func"-with-last-character-incremented, i.e. "fund" (exclusive),
-     which finds "func" and "func1", but not "fund".
-
-     And with:
-
-      funcÃ¿     (Latin1 'Ã¿' [0xff])
-      funcÃ¿1
-      fund
-
-     completing "funcÃ¿" looks for symbols between "funcÃ¿" and "fund"
-     (exclusive), which finds "funcÃ¿" and "funcÃ¿1", but not "fund".
-
-     And with:
-
-      Ã¿Ã¿        (Latin1 'Ã¿' [0xff])
-      Ã¿Ã¿1
-
-     completing "Ã¿" or "Ã¿Ã¿" looks for symbols between between "Ã¿Ã¿" and
-     the end of the list.
-  */
-  std::string after = search_name;
-  while (!after.empty () && (unsigned char) after.back () == 0xff)
-    after.pop_back ();
-  if (!after.empty ())
-    after.back () = (unsigned char) after.back () + 1;
-  return after;
-}
-
-/* See declaration.  */
-
-std::pair<std::vector<name_component>::const_iterator,
-	  std::vector<name_component>::const_iterator>
-mapped_index_base::find_name_components_bounds
-  (const lookup_name_info &lookup_name_without_params, language lang) const
-{
-  auto *name_cmp
-    = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
-
-  const char *lang_name
-    = lookup_name_without_params.language_lookup_name (lang).c_str ();
-
-  /* Comparison function object for lower_bound that matches against a
-     given symbol name.  */
-  auto lookup_compare_lower = [&] (const name_component &elem,
-				   const char *name)
-    {
-      const char *elem_qualified = this->symbol_name_at (elem.idx);
-      const char *elem_name = elem_qualified + elem.name_offset;
-      return name_cmp (elem_name, name) < 0;
-    };
-
-  /* Comparison function object for upper_bound that matches against a
-     given symbol name.  */
-  auto lookup_compare_upper = [&] (const char *name,
-				   const name_component &elem)
-    {
-      const char *elem_qualified = this->symbol_name_at (elem.idx);
-      const char *elem_name = elem_qualified + elem.name_offset;
-      return name_cmp (name, elem_name) < 0;
-    };
-
-  auto begin = this->name_components.begin ();
-  auto end = this->name_components.end ();
-
-  /* Find the lower bound.  */
-  auto lower = [&] ()
-    {
-      if (lookup_name_without_params.completion_mode () && lang_name[0] == '\0')
-	return begin;
-      else
-	return std::lower_bound (begin, end, lang_name, lookup_compare_lower);
-    } ();
-
-  /* Find the upper bound.  */
-  auto upper = [&] ()
-    {
-      if (lookup_name_without_params.completion_mode ())
-	{
-	  /* In completion mode, we want UPPER to point past all
-	     symbols names that have the same prefix.  I.e., with
-	     these symbols, and completing "func":
-
-	      function        << lower bound
-	      function1
-	      other_function  << upper bound
-
-	     We find the upper bound by looking for the insertion
-	     point of "func"-with-last-character-incremented,
-	     i.e. "fund".  */
-	  std::string after = make_sort_after_prefix_name (lang_name);
-	  if (after.empty ())
-	    return end;
-	  return std::lower_bound (lower, end, after.c_str (),
-				   lookup_compare_lower);
-	}
-      else
-	return std::upper_bound (lower, end, lang_name, lookup_compare_upper);
-    } ();
-
-  return {lower, upper};
-}
-
-/* See declaration.  */
-
-void
-mapped_index_base::build_name_components ()
-{
-  if (!this->name_components.empty ())
-    return;
-
-  this->name_components_casing = case_sensitivity;
-  auto *name_cmp
-    = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
-
-  /* The code below only knows how to break apart components of C++
-     symbol names (and other languages that use '::' as
-     namespace/module separator) and Ada symbol names.  */
-  auto count = this->symbol_name_count ();
-  for (offset_type idx = 0; idx < count; idx++)
-    {
-      if (this->symbol_name_slot_invalid (idx))
-	continue;
-
-      const char *name = this->symbol_name_at (idx);
-
-      /* Add each name component to the name component table.  */
-      unsigned int previous_len = 0;
-
-      if (strstr (name, "::") != nullptr)
-	{
-	  for (unsigned int current_len = cp_find_first_component (name);
-	       name[current_len] != '\0';
-	       current_len += cp_find_first_component (name + current_len))
-	    {
-	      gdb_assert (name[current_len] == ':');
-	      this->name_components.push_back ({previous_len, idx});
-	      /* Skip the '::'.  */
-	      current_len += 2;
-	      previous_len = current_len;
-	    }
-	}
-      else
-	{
-	  /* Handle the Ada encoded (aka mangled) form here.  */
-	  for (const char *iter = strstr (name, "__");
-	       iter != nullptr;
-	       iter = strstr (iter, "__"))
-	    {
-	      this->name_components.push_back ({previous_len, idx});
-	      iter += 2;
-	      previous_len = iter - name;
-	    }
-	}
-
-      this->name_components.push_back ({previous_len, idx});
-    }
-
-  /* Sort name_components elements by name.  */
-  auto name_comp_compare = [&] (const name_component &left,
-				const name_component &right)
-    {
-      const char *left_qualified = this->symbol_name_at (left.idx);
-      const char *right_qualified = this->symbol_name_at (right.idx);
-
-      const char *left_name = left_qualified + left.name_offset;
-      const char *right_name = right_qualified + right.name_offset;
-
-      return name_cmp (left_name, right_name) < 0;
-    };
-
-  std::sort (this->name_components.begin (),
-	     this->name_components.end (),
-	     name_comp_compare);
-}
-
-/* Helper for dw2_expand_symtabs_matching that works with a
-   mapped_index_base instead of the containing objfile.  This is split
-   to a separate function in order to be able to unit test the
-   name_components matching using a mock mapped_index_base.  For each
-   symbol name that matches, calls MATCH_CALLBACK, passing it the
-   symbol's index in the mapped_index_base symbol table.  */
-
-static void
-dw2_expand_symtabs_matching_symbol
-  (mapped_index_base &index,
-   const lookup_name_info &lookup_name_in,
-   gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
-   enum search_domain kind,
-   gdb::function_view<bool (offset_type)> match_callback)
-{
-  lookup_name_info lookup_name_without_params
-    = lookup_name_in.make_ignore_params ();
-
-  /* Build the symbol name component sorted vector, if we haven't
-     yet.  */
-  index.build_name_components ();
-
-  /* The same symbol may appear more than once in the range though.
-     E.g., if we're looking for symbols that complete "w", and we have
-     a symbol named "w1::w2", we'll find the two name components for
-     that same symbol in the range.  To be sure we only call the
-     callback once per symbol, we first collect the symbol name
-     indexes that matched in a temporary vector and ignore
-     duplicates.  */
-  std::vector<offset_type> matches;
-
-  struct name_and_matcher
-  {
-    symbol_name_matcher_ftype *matcher;
-    const std::string &name;
-
-    bool operator== (const name_and_matcher &other) const
-    {
-      return matcher == other.matcher && name == other.name;
-    }
-  };
-
-  /* A vector holding all the different symbol name matchers, for all
-     languages.  */
-  std::vector<name_and_matcher> matchers;
-
-  for (int i = 0; i < nr_languages; i++)
-    {
-      enum language lang_e = (enum language) i;
-
-      const language_defn *lang = language_def (lang_e);
-      symbol_name_matcher_ftype *name_matcher
-	= get_symbol_name_matcher (lang, lookup_name_without_params);
-
-      name_and_matcher key {
-         name_matcher,
-	 lookup_name_without_params.language_lookup_name (lang_e)
-      };
-
-      /* Don't insert the same comparison routine more than once.
-	 Note that we do this linear walk.  This is not a problem in
-	 practice because the number of supported languages is
-	 low.  */
-      if (std::find (matchers.begin (), matchers.end (), key)
-	  != matchers.end ())
-	continue;
-      matchers.push_back (std::move (key));
-
-      auto bounds
-	= index.find_name_components_bounds (lookup_name_without_params,
-					     lang_e);
-
-      /* Now for each symbol name in range, check to see if we have a name
-	 match, and if so, call the MATCH_CALLBACK callback.  */
-
-      for (; bounds.first != bounds.second; ++bounds.first)
-	{
-	  const char *qualified = index.symbol_name_at (bounds.first->idx);
-
-	  if (!name_matcher (qualified, lookup_name_without_params, NULL)
-	      || (symbol_matcher != NULL && !symbol_matcher (qualified)))
-	    continue;
-
-	  matches.push_back (bounds.first->idx);
-	}
-    }
-
-  std::sort (matches.begin (), matches.end ());
-
-  /* Finally call the callback, once per match.  */
-  ULONGEST prev = -1;
-  for (offset_type idx : matches)
-    {
-      if (prev != idx)
-	{
-	  if (!match_callback (idx))
-	    break;
-	  prev = idx;
-	}
-    }
-
-  /* Above we use a type wider than idx's for 'prev', since 0 and
-     (offset_type)-1 are both possible values.  */
-  static_assert (sizeof (prev) > sizeof (offset_type), "");
-}
-
-#if GDB_SELF_TEST
-
-namespace selftests { namespace dw2_expand_symtabs_matching {
-
-/* A mock .gdb_index/.debug_names-like name index table, enough to
-   exercise dw2_expand_symtabs_matching_symbol, which works with the
-   mapped_index_base interface.  Builds an index from the symbol list
-   passed as parameter to the constructor.  */
-class mock_mapped_index : public mapped_index_base
-{
-public:
-  mock_mapped_index (gdb::array_view<const char *> symbols)
-    : m_symbol_table (symbols)
-  {}
-
-  DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
-
-  /* Return the number of names in the symbol table.  */
-  size_t symbol_name_count () const override
-  {
-    return m_symbol_table.size ();
-  }
-
-  /* Get the name of the symbol at IDX in the symbol table.  */
-  const char *symbol_name_at (offset_type idx) const override
-  {
-    return m_symbol_table[idx];
-  }
-
-private:
-  gdb::array_view<const char *> m_symbol_table;
-};
-
-/* Convenience function that converts a NULL pointer to a "<null>"
-   string, to pass to print routines.  */
-
-static const char *
-string_or_null (const char *str)
-{
-  return str != NULL ? str : "<null>";
-}
-
-/* Check if a lookup_name_info built from
-   NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
-   index.  EXPECTED_LIST is the list of expected matches, in expected
-   matching order.  If no match expected, then an empty list is
-   specified.  Returns true on success.  On failure prints a warning
-   indicating the file:line that failed, and returns false.  */
-
-static bool
-check_match (const char *file, int line,
-	     mock_mapped_index &mock_index,
-	     const char *name, symbol_name_match_type match_type,
-	     bool completion_mode,
-	     std::initializer_list<const char *> expected_list)
-{
-  lookup_name_info lookup_name (name, match_type, completion_mode);
-
-  bool matched = true;
-
-  auto mismatch = [&] (const char *expected_str,
-		       const char *got)
-  {
-    warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
-	       "expected=\"%s\", got=\"%s\"\n"),
-	     file, line,
-	     (match_type == symbol_name_match_type::FULL
-	      ? "FULL" : "WILD"),
-	     name, string_or_null (expected_str), string_or_null (got));
-    matched = false;
-  };
-
-  auto expected_it = expected_list.begin ();
-  auto expected_end = expected_list.end ();
-
-  dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
-				      NULL, ALL_DOMAIN,
-				      [&] (offset_type idx)
-  {
-    const char *matched_name = mock_index.symbol_name_at (idx);
-    const char *expected_str
-      = expected_it == expected_end ? NULL : *expected_it++;
-
-    if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
-      mismatch (expected_str, matched_name);
-    return true;
-  });
-
-  const char *expected_str
-  = expected_it == expected_end ? NULL : *expected_it++;
-  if (expected_str != NULL)
-    mismatch (expected_str, NULL);
-
-  return matched;
-}
-
-/* The symbols added to the mock mapped_index for testing (in
-   canonical form).  */
-static const char *test_symbols[] = {
-  "function",
-  "std::bar",
-  "std::zfunction",
-  "std::zfunction2",
-  "w1::w2",
-  "ns::foo<char*>",
-  "ns::foo<int>",
-  "ns::foo<long>",
-  "ns2::tmpl<int>::foo2",
-  "(anonymous namespace)::A::B::C",
-
-  /* These are used to check that the increment-last-char in the
-     matching algorithm for completion doesn't match "t1_fund" when
-     completing "t1_func".  */
-  "t1_func",
-  "t1_func1",
-  "t1_fund",
-  "t1_fund1",
-
-  /* A UTF-8 name with multi-byte sequences to make sure that
-     cp-name-parser understands this as a single identifier ("funÃ§Ã£o"
-     is "function" in PT).  */
-  u8"u8funÃ§Ã£o",
-
-  /* \377 (0xff) is Latin1 'Ã¿'.  */
-  "yfunc\377",
-
-  /* \377 (0xff) is Latin1 'Ã¿'.  */
-  "\377",
-  "\377\377123",
-
-  /* A name with all sorts of complications.  Starts with "z" to make
-     it easier for the completion tests below.  */
-#define Z_SYM_NAME \
-  "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
-    "::tuple<(anonymous namespace)::ui*, " \
-    "std::default_delete<(anonymous namespace)::ui>, void>"
-
-  Z_SYM_NAME
-};
-
-/* Returns true if the mapped_index_base::find_name_component_bounds
-   method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
-   in completion mode.  */
-
-static bool
-check_find_bounds_finds (mapped_index_base &index,
-			 const char *search_name,
-			 gdb::array_view<const char *> expected_syms)
-{
-  lookup_name_info lookup_name (search_name,
-				symbol_name_match_type::FULL, true);
-
-  auto bounds = index.find_name_components_bounds (lookup_name,
-						   language_cplus);
-
-  size_t distance = std::distance (bounds.first, bounds.second);
-  if (distance != expected_syms.size ())
-    return false;
-
-  for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
-    {
-      auto nc_elem = bounds.first + exp_elem;
-      const char *qualified = index.symbol_name_at (nc_elem->idx);
-      if (strcmp (qualified, expected_syms[exp_elem]) != 0)
-	return false;
-    }
-
-  return true;
-}
-
-/* Test the lower-level mapped_index::find_name_component_bounds
-   method.  */
-
-static void
-test_mapped_index_find_name_component_bounds ()
-{
-  mock_mapped_index mock_index (test_symbols);
-
-  mock_index.build_name_components ();
-
-  /* Test the lower-level mapped_index::find_name_component_bounds
-     method in completion mode.  */
-  {
-    static const char *expected_syms[] = {
-      "t1_func",
-      "t1_func1",
-    };
-
-    SELF_CHECK (check_find_bounds_finds (mock_index,
-					 "t1_func", expected_syms));
-  }
-
-  /* Check that the increment-last-char in the name matching algorithm
-     for completion doesn't get confused with Ansi1 'Ã¿' / 0xff.  */
-  {
-    static const char *expected_syms1[] = {
-      "\377",
-      "\377\377123",
-    };
-    SELF_CHECK (check_find_bounds_finds (mock_index,
-					 "\377", expected_syms1));
-
-    static const char *expected_syms2[] = {
-      "\377\377123",
-    };
-    SELF_CHECK (check_find_bounds_finds (mock_index,
-					 "\377\377", expected_syms2));
-  }
-}
-
-/* Test dw2_expand_symtabs_matching_symbol.  */
-
-static void
-test_dw2_expand_symtabs_matching_symbol ()
-{
-  mock_mapped_index mock_index (test_symbols);
-
-  /* We let all tests run until the end even if some fails, for debug
-     convenience.  */
-  bool any_mismatch = false;
-
-  /* Create the expected symbols list (an initializer_list).  Needed
-     because lists have commas, and we need to pass them to CHECK,
-     which is a macro.  */
-#define EXPECT(...) { __VA_ARGS__ }
-
-  /* Wrapper for check_match that passes down the current
-     __FILE__/__LINE__.  */
-#define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)	\
-  any_mismatch |= !check_match (__FILE__, __LINE__,			\
-				mock_index,				\
-				NAME, MATCH_TYPE, COMPLETION_MODE,	\
-				EXPECTED_LIST)
-
-  /* Identity checks.  */
-  for (const char *sym : test_symbols)
-    {
-      /* Should be able to match all existing symbols.  */
-      CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
-		   EXPECT (sym));
-
-      /* Should be able to match all existing symbols with
-	 parameters.  */
-      std::string with_params = std::string (sym) + "(int)";
-      CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
-		   EXPECT (sym));
-
-      /* Should be able to match all existing symbols with
-	 parameters and qualifiers.  */
-      with_params = std::string (sym) + " ( int ) const";
-      CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
-		   EXPECT (sym));
-
-      /* This should really find sym, but cp-name-parser.y doesn't
-	 know about lvalue/rvalue qualifiers yet.  */
-      with_params = std::string (sym) + " ( int ) &&";
-      CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
-		   {});
-    }
-
-  /* Check that the name matching algorithm for completion doesn't get
-     confused with Latin1 'Ã¿' / 0xff.  */
-  {
-    static const char str[] = "\377";
-    CHECK_MATCH (str, symbol_name_match_type::FULL, true,
-		 EXPECT ("\377", "\377\377123"));
-  }
-
-  /* Check that the increment-last-char in the matching algorithm for
-     completion doesn't match "t1_fund" when completing "t1_func".  */
-  {
-    static const char str[] = "t1_func";
-    CHECK_MATCH (str, symbol_name_match_type::FULL, true,
-		 EXPECT ("t1_func", "t1_func1"));
-  }
-
-  /* Check that completion mode works at each prefix of the expected
-     symbol name.  */
-  {
-    static const char str[] = "function(int)";
-    size_t len = strlen (str);
-    std::string lookup;
-
-    for (size_t i = 1; i < len; i++)
-      {
-	lookup.assign (str, i);
-	CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
-		     EXPECT ("function"));
-      }
-  }
-
-  /* While "w" is a prefix of both components, the match function
-     should still only be called once.  */
-  {
-    CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
-		 EXPECT ("w1::w2"));
-    CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
-		 EXPECT ("w1::w2"));
-  }
-
-  /* Same, with a "complicated" symbol.  */
-  {
-    static const char str[] = Z_SYM_NAME;
-    size_t len = strlen (str);
-    std::string lookup;
-
-    for (size_t i = 1; i < len; i++)
-      {
-	lookup.assign (str, i);
-	CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
-		     EXPECT (Z_SYM_NAME));
-      }
-  }
-
-  /* In FULL mode, an incomplete symbol doesn't match.  */
-  {
-    CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
-		 {});
-  }
-
-  /* A complete symbol with parameters matches any overload, since the
-     index has no overload info.  */
-  {
-    CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
-		 EXPECT ("std::zfunction", "std::zfunction2"));
-    CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
-		 EXPECT ("std::zfunction", "std::zfunction2"));
-    CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
-		 EXPECT ("std::zfunction", "std::zfunction2"));
-  }
-
-  /* Check that whitespace is ignored appropriately.  A symbol with a
-     template argument list. */
-  {
-    static const char expected[] = "ns::foo<int>";
-    CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
-		 EXPECT (expected));
-    CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
-		 EXPECT (expected));
-  }
-
-  /* Check that whitespace is ignored appropriately.  A symbol with a
-     template argument list that includes a pointer.  */
-  {
-    static const char expected[] = "ns::foo<char*>";
-    /* Try both completion and non-completion modes.  */
-    static const bool completion_mode[2] = {false, true};
-    for (size_t i = 0; i < 2; i++)
-      {
-	CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
-		     completion_mode[i], EXPECT (expected));
-	CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
-		     completion_mode[i], EXPECT (expected));
-
-	CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
-		     completion_mode[i], EXPECT (expected));
-	CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
-		     completion_mode[i], EXPECT (expected));
-      }
-  }
-
-  {
-    /* Check method qualifiers are ignored.  */
-    static const char expected[] = "ns::foo<char*>";
-    CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
-		 symbol_name_match_type::FULL, true, EXPECT (expected));
-    CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
-		 symbol_name_match_type::FULL, true, EXPECT (expected));
-    CHECK_MATCH ("foo < char * >  ( int ) const",
-		 symbol_name_match_type::WILD, true, EXPECT (expected));
-    CHECK_MATCH ("foo < char * >  ( int ) &&",
-		 symbol_name_match_type::WILD, true, EXPECT (expected));
-  }
-
-  /* Test lookup names that don't match anything.  */
-  {
-    CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
-		 {});
-
-    CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
-		 {});
-  }
-
-  /* Some wild matching tests, exercising "(anonymous namespace)",
-     which should not be confused with a parameter list.  */
-  {
-    static const char *syms[] = {
-      "A::B::C",
-      "B::C",
-      "C",
-      "A :: B :: C ( int )",
-      "B :: C ( int )",
-      "C ( int )",
-    };
-
-    for (const char *s : syms)
-      {
-	CHECK_MATCH (s, symbol_name_match_type::WILD, false,
-		     EXPECT ("(anonymous namespace)::A::B::C"));
-      }
-  }
-
-  {
-    static const char expected[] = "ns2::tmpl<int>::foo2";
-    CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
-		 EXPECT (expected));
-    CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
-		 EXPECT (expected));
-  }
-
-  SELF_CHECK (!any_mismatch);
-
-#undef EXPECT
-#undef CHECK_MATCH
-}
-
-static void
-run_test ()
-{
-  test_mapped_index_find_name_component_bounds ();
-  test_dw2_expand_symtabs_matching_symbol ();
-}
-
-}} // namespace selftests::dw2_expand_symtabs_matching
-
-#endif /* GDB_SELF_TEST */
-
-/* If FILE_MATCHER is NULL or if PER_CU has
-   dwarf2_per_cu_quick_data::MARK set (see
-   dw_expand_symtabs_matching_file_matcher), expand the CU and call
-   EXPANSION_NOTIFY on it.  */
-
-static void
-dw2_expand_symtabs_matching_one
-  (struct dwarf2_per_cu_data *per_cu,
-   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
-   gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
-{
-  if (file_matcher == NULL || per_cu->v.quick->mark)
-    {
-      bool symtab_was_null
-	= (per_cu->v.quick->compunit_symtab == NULL);
-
-      dw2_instantiate_symtab (per_cu, false);
-
-      if (expansion_notify != NULL
-	  && symtab_was_null
-	  && per_cu->v.quick->compunit_symtab != NULL)
-	expansion_notify (per_cu->v.quick->compunit_symtab);
-    }
-}
-
-/* Helper for dw2_expand_matching symtabs.  Called on each symbol
-   matched, to expand corresponding CUs that were marked.  IDX is the
-   index of the symbol name that matched.  */
-
-static void
-dw2_expand_marked_cus
-  (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
-   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
-   gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
-   search_domain kind)
-{
-  offset_type *vec, vec_len, vec_idx;
-  bool global_seen = false;
-  mapped_index &index = *dwarf2_per_objfile->index_table;
-
-  vec = (offset_type *) (index.constant_pool
-			 + MAYBE_SWAP (index.symbol_table[idx].vec));
-  vec_len = MAYBE_SWAP (vec[0]);
-  for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
-    {
-      offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
-      /* This value is only valid for index versions >= 7.  */
-      int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
-      gdb_index_symbol_kind symbol_kind =
-	GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
-      int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
-      /* Only check the symbol attributes if they're present.
-	 Indices prior to version 7 don't record them,
-	 and indices >= 7 may elide them for certain symbols
-	 (gold does this).  */
-      int attrs_valid =
-	(index.version >= 7
-	 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
-
-      /* Work around gold/15646.  */
-      if (attrs_valid)
-	{
-	  if (!is_static && global_seen)
-	    continue;
-	  if (!is_static)
-	    global_seen = true;
-	}
-
-      /* Only check the symbol's kind if it has one.  */
-      if (attrs_valid)
-	{
-	  switch (kind)
-	    {
-	    case VARIABLES_DOMAIN:
-	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
-		continue;
-	      break;
-	    case FUNCTIONS_DOMAIN:
-	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
-		continue;
-	      break;
-	    case TYPES_DOMAIN:
-	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
-		continue;
-	      break;
-	    case MODULES_DOMAIN:
-	      if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
-		continue;
-	      break;
-	    default:
-	      break;
-	    }
-	}
-
-      /* Don't crash on bad data.  */
-      if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
-		       + dwarf2_per_objfile->all_type_units.size ()))
-	{
-	  complaint (_(".gdb_index entry has bad CU index"
-		       " [in module %s]"),
-		       objfile_name (dwarf2_per_objfile->objfile));
-	  continue;
-	}
-
-      dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
-      dw2_expand_symtabs_matching_one (per_cu, file_matcher,
-				       expansion_notify);
-    }
-}
-
-/* If FILE_MATCHER is non-NULL, set all the
-   dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
-   that match FILE_MATCHER.  */
-
-static void
-dw_expand_symtabs_matching_file_matcher
-  (struct dwarf2_per_objfile *dwarf2_per_objfile,
-   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
-{
-  if (file_matcher == NULL)
-    return;
-
-  objfile *const objfile = dwarf2_per_objfile->objfile;
-
-  htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
-					    htab_eq_pointer,
-					    NULL, xcalloc, xfree));
-  htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
-						htab_eq_pointer,
-						NULL, xcalloc, xfree));
-
-  /* The rule is CUs specify all the files, including those used by
-     any TU, so there's no need to scan TUs here.  */
-
-  for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-    {
-      QUIT;
-
-      per_cu->v.quick->mark = 0;
-
-      /* We only need to look at symtabs not already expanded.  */
-      if (per_cu->v.quick->compunit_symtab)
-	continue;
-
-      quick_file_names *file_data = dw2_get_file_names (per_cu);
-      if (file_data == NULL)
-	continue;
-
-      if (htab_find (visited_not_found.get (), file_data) != NULL)
-	continue;
-      else if (htab_find (visited_found.get (), file_data) != NULL)
-	{
-	  per_cu->v.quick->mark = 1;
-	  continue;
-	}
-
-      for (int j = 0; j < file_data->num_file_names; ++j)
-	{
-	  const char *this_real_name;
-
-	  if (file_matcher (file_data->file_names[j], false))
-	    {
-	      per_cu->v.quick->mark = 1;
-	      break;
-	    }
-
-	  /* Before we invoke realpath, which can get expensive when many
-	     files are involved, do a quick comparison of the basenames.  */
-	  if (!basenames_may_differ
-	      && !file_matcher (lbasename (file_data->file_names[j]),
-				true))
-	    continue;
-
-	  this_real_name = dw2_get_real_path (objfile, file_data, j);
-	  if (file_matcher (this_real_name, false))
-	    {
-	      per_cu->v.quick->mark = 1;
-	      break;
-	    }
-	}
-
-      void **slot = htab_find_slot (per_cu->v.quick->mark
-				    ? visited_found.get ()
-				    : visited_not_found.get (),
-				    file_data, INSERT);
-      *slot = file_data;
-    }
-}
-
-static void
-dw2_expand_symtabs_matching
-  (struct objfile *objfile,
-   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
-   const lookup_name_info &lookup_name,
-   gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
-   gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
-   enum search_domain kind)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  /* index_table is NULL if OBJF_READNOW.  */
-  if (!dwarf2_per_objfile->index_table)
-    return;
-
-  dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
-
-  mapped_index &index = *dwarf2_per_objfile->index_table;
-
-  dw2_expand_symtabs_matching_symbol (index, lookup_name,
-				      symbol_matcher,
-				      kind, [&] (offset_type idx)
-    {
-      dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
-			     expansion_notify, kind);
-      return true;
-    });
-}
-
-/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
-   symtab.  */
-
-static struct compunit_symtab *
-recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
-					  CORE_ADDR pc)
-{
-  int i;
-
-  if (COMPUNIT_BLOCKVECTOR (cust) != NULL
-      && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
-    return cust;
-
-  if (cust->includes == NULL)
-    return NULL;
-
-  for (i = 0; cust->includes[i]; ++i)
-    {
-      struct compunit_symtab *s = cust->includes[i];
-
-      s = recursively_find_pc_sect_compunit_symtab (s, pc);
-      if (s != NULL)
-	return s;
-    }
-
-  return NULL;
-}
-
-static struct compunit_symtab *
-dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
-				  struct bound_minimal_symbol msymbol,
-				  CORE_ADDR pc,
-				  struct obj_section *section,
-				  int warn_if_readin)
-{
-  struct dwarf2_per_cu_data *data;
-  struct compunit_symtab *result;
-
-  if (!objfile->partial_symtabs->psymtabs_addrmap)
-    return NULL;
-
-  CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
-				 SECT_OFF_TEXT (objfile));
-  data = (struct dwarf2_per_cu_data *) addrmap_find
-    (objfile->partial_symtabs->psymtabs_addrmap, pc - baseaddr);
-  if (!data)
-    return NULL;
-
-  if (warn_if_readin && data->v.quick->compunit_symtab)
-    warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
-	     paddress (get_objfile_arch (objfile), pc));
-
-  result
-    = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
-									false),
-						pc);
-  gdb_assert (result != NULL);
-  return result;
-}
-
-static void
-dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
-			  void *data, int need_fullname)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  if (!dwarf2_per_objfile->filenames_cache)
-    {
-      dwarf2_per_objfile->filenames_cache.emplace ();
-
-      htab_up visited (htab_create_alloc (10,
-					  htab_hash_pointer, htab_eq_pointer,
-					  NULL, xcalloc, xfree));
-
-      /* The rule is CUs specify all the files, including those used
-	 by any TU, so there's no need to scan TUs here.  We can
-	 ignore file names coming from already-expanded CUs.  */
-
-      for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-	{
-	  if (per_cu->v.quick->compunit_symtab)
-	    {
-	      void **slot = htab_find_slot (visited.get (),
-					    per_cu->v.quick->file_names,
-					    INSERT);
-
-	      *slot = per_cu->v.quick->file_names;
-	    }
-	}
-
-      for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-	{
-	  /* We only need to look at symtabs not already expanded.  */
-	  if (per_cu->v.quick->compunit_symtab)
-	    continue;
-
-	  quick_file_names *file_data = dw2_get_file_names (per_cu);
-	  if (file_data == NULL)
-	    continue;
-
-	  void **slot = htab_find_slot (visited.get (), file_data, INSERT);
-	  if (*slot)
-	    {
-	      /* Already visited.  */
-	      continue;
-	    }
-	  *slot = file_data;
-
-	  for (int j = 0; j < file_data->num_file_names; ++j)
-	    {
-	      const char *filename = file_data->file_names[j];
-	      dwarf2_per_objfile->filenames_cache->seen (filename);
-	    }
-	}
-    }
-
-  dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
-    {
-      gdb::unique_xmalloc_ptr<char> this_real_name;
-
-      if (need_fullname)
-	this_real_name = gdb_realpath (filename);
-      (*fun) (filename, this_real_name.get (), data);
-    });
-}
-
-static int
-dw2_has_symbols (struct objfile *objfile)
-{
-  return 1;
-}
-
-const struct quick_symbol_functions dwarf2_gdb_index_functions =
-{
-  dw2_has_symbols,
-  dw2_find_last_source_symtab,
-  dw2_forget_cached_source_info,
-  dw2_map_symtabs_matching_filename,
-  dw2_lookup_symbol,
-  dw2_print_stats,
-  dw2_dump,
-  dw2_expand_symtabs_for_function,
-  dw2_expand_all_symtabs,
-  dw2_expand_symtabs_with_fullname,
-  dw2_map_matching_symbols,
-  dw2_expand_symtabs_matching,
-  dw2_find_pc_sect_compunit_symtab,
-  NULL,
-  dw2_map_symbol_filenames
-};
-
-/* DWARF-5 debug_names reader.  */
-
-/* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
-static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
-
-/* A helper function that reads the .debug_names section in SECTION
-   and fills in MAP.  FILENAME is the name of the file containing the
-   section; it is used for error reporting.
-
-   Returns true if all went well, false otherwise.  */
-
-static bool
-read_debug_names_from_section (struct objfile *objfile,
-			       const char *filename,
-			       struct dwarf2_section_info *section,
-			       mapped_debug_names &map)
-{
-  if (dwarf2_section_empty_p (section))
-    return false;
-
-  /* Older elfutils strip versions could keep the section in the main
-     executable while splitting it for the separate debug info file.  */
-  if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
-    return false;
-
-  dwarf2_read_section (objfile, section);
-
-  map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
-
-  const gdb_byte *addr = section->buffer;
-
-  bfd *const abfd = get_section_bfd_owner (section);
-
-  unsigned int bytes_read;
-  LONGEST length = read_initial_length (abfd, addr, &bytes_read);
-  addr += bytes_read;
-
-  map.dwarf5_is_dwarf64 = bytes_read != 4;
-  map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
-  if (bytes_read + length != section->size)
-    {
-      /* There may be multiple per-CU indices.  */
-      warning (_("Section .debug_names in %s length %s does not match "
-		 "section length %s, ignoring .debug_names."),
-	       filename, plongest (bytes_read + length),
-	       pulongest (section->size));
-      return false;
-    }
-
-  /* The version number.  */
-  uint16_t version = read_2_bytes (abfd, addr);
-  addr += 2;
-  if (version != 5)
-    {
-      warning (_("Section .debug_names in %s has unsupported version %d, "
-		 "ignoring .debug_names."),
-	       filename, version);
-      return false;
-    }
-
-  /* Padding.  */
-  uint16_t padding = read_2_bytes (abfd, addr);
-  addr += 2;
-  if (padding != 0)
-    {
-      warning (_("Section .debug_names in %s has unsupported padding %d, "
-		 "ignoring .debug_names."),
-	       filename, padding);
-      return false;
-    }
-
-  /* comp_unit_count - The number of CUs in the CU list.  */
-  map.cu_count = read_4_bytes (abfd, addr);
-  addr += 4;
-
-  /* local_type_unit_count - The number of TUs in the local TU
-     list.  */
-  map.tu_count = read_4_bytes (abfd, addr);
-  addr += 4;
-
-  /* foreign_type_unit_count - The number of TUs in the foreign TU
-     list.  */
-  uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
-  addr += 4;
-  if (foreign_tu_count != 0)
-    {
-      warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
-		 "ignoring .debug_names."),
-	       filename, static_cast<unsigned long> (foreign_tu_count));
-      return false;
-    }
-
-  /* bucket_count - The number of hash buckets in the hash lookup
-     table.  */
-  map.bucket_count = read_4_bytes (abfd, addr);
-  addr += 4;
-
-  /* name_count - The number of unique names in the index.  */
-  map.name_count = read_4_bytes (abfd, addr);
-  addr += 4;
-
-  /* abbrev_table_size - The size in bytes of the abbreviations
-     table.  */
-  uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
-  addr += 4;
-
-  /* augmentation_string_size - The size in bytes of the augmentation
-     string.  This value is rounded up to a multiple of 4.  */
-  uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
-  addr += 4;
-  map.augmentation_is_gdb = ((augmentation_string_size
-			      == sizeof (dwarf5_augmentation))
-			     && memcmp (addr, dwarf5_augmentation,
-					sizeof (dwarf5_augmentation)) == 0);
-  augmentation_string_size += (-augmentation_string_size) & 3;
-  addr += augmentation_string_size;
-
-  /* List of CUs */
-  map.cu_table_reordered = addr;
-  addr += map.cu_count * map.offset_size;
-
-  /* List of Local TUs */
-  map.tu_table_reordered = addr;
-  addr += map.tu_count * map.offset_size;
-
-  /* Hash Lookup Table */
-  map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
-  addr += map.bucket_count * 4;
-  map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
-  addr += map.name_count * 4;
-
-  /* Name Table */
-  map.name_table_string_offs_reordered = addr;
-  addr += map.name_count * map.offset_size;
-  map.name_table_entry_offs_reordered = addr;
-  addr += map.name_count * map.offset_size;
-
-  const gdb_byte *abbrev_table_start = addr;
-  for (;;)
-    {
-      const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
-      addr += bytes_read;
-      if (index_num == 0)
-	break;
-
-      const auto insertpair
-	= map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
-      if (!insertpair.second)
-	{
-	  warning (_("Section .debug_names in %s has duplicate index %s, "
-		     "ignoring .debug_names."),
-		   filename, pulongest (index_num));
-	  return false;
-	}
-      mapped_debug_names::index_val &indexval = insertpair.first->second;
-      indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
-      addr += bytes_read;
-
-      for (;;)
-	{
-	  mapped_debug_names::index_val::attr attr;
-	  attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
-	  addr += bytes_read;
-	  attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
-	  addr += bytes_read;
-	  if (attr.form == DW_FORM_implicit_const)
-	    {
-	      attr.implicit_const = read_signed_leb128 (abfd, addr,
-							&bytes_read);
-	      addr += bytes_read;
-	    }
-	  if (attr.dw_idx == 0 && attr.form == 0)
-	    break;
-	  indexval.attr_vec.push_back (std::move (attr));
-	}
-    }
-  if (addr != abbrev_table_start + abbrev_table_size)
-    {
-      warning (_("Section .debug_names in %s has abbreviation_table "
-		 "of size %s vs. written as %u, ignoring .debug_names."),
-	       filename, plongest (addr - abbrev_table_start),
-	       abbrev_table_size);
-      return false;
-    }
-  map.entry_pool = addr;
-
-  return true;
-}
-
-/* A helper for create_cus_from_debug_names that handles the MAP's CU
-   list.  */
-
-static void
-create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
-				  const mapped_debug_names &map,
-				  dwarf2_section_info &section,
-				  bool is_dwz)
-{
-  sect_offset sect_off_prev;
-  for (uint32_t i = 0; i <= map.cu_count; ++i)
-    {
-      sect_offset sect_off_next;
-      if (i < map.cu_count)
-	{
-	  sect_off_next
-	    = (sect_offset) (extract_unsigned_integer
-			     (map.cu_table_reordered + i * map.offset_size,
-			      map.offset_size,
-			      map.dwarf5_byte_order));
-	}
-      else
-	sect_off_next = (sect_offset) section.size;
-      if (i >= 1)
-	{
-	  const ULONGEST length = sect_off_next - sect_off_prev;
-	  dwarf2_per_cu_data *per_cu
-	    = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
-					 sect_off_prev, length);
-	  dwarf2_per_objfile->all_comp_units.push_back (per_cu);
-	}
-      sect_off_prev = sect_off_next;
-    }
-}
-
-/* Read the CU list from the mapped index, and use it to create all
-   the CU objects for this dwarf2_per_objfile.  */
-
-static void
-create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			     const mapped_debug_names &map,
-			     const mapped_debug_names &dwz_map)
-{
-  gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
-  dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
-
-  create_cus_from_debug_names_list (dwarf2_per_objfile, map,
-				    dwarf2_per_objfile->info,
-				    false /* is_dwz */);
-
-  if (dwz_map.cu_count == 0)
-    return;
-
-  dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
-  create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
-				    true /* is_dwz */);
-}
-
-/* Read .debug_names.  If everything went ok, initialize the "quick"
-   elements of all the CUs and return true.  Otherwise, return false.  */
-
-static bool
-dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  std::unique_ptr<mapped_debug_names> map
-    (new mapped_debug_names (dwarf2_per_objfile));
-  mapped_debug_names dwz_map (dwarf2_per_objfile);
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-  if (!read_debug_names_from_section (objfile, objfile_name (objfile),
-				      &dwarf2_per_objfile->debug_names,
-				      *map))
-    return false;
-
-  /* Don't use the index if it's empty.  */
-  if (map->name_count == 0)
-    return false;
-
-  /* If there is a .dwz file, read it so we can get its CU list as
-     well.  */
-  dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
-  if (dwz != NULL)
-    {
-      if (!read_debug_names_from_section (objfile,
-					  bfd_get_filename (dwz->dwz_bfd.get ()),
-					  &dwz->debug_names, dwz_map))
-	{
-	  warning (_("could not read '.debug_names' section from %s; skipping"),
-		   bfd_get_filename (dwz->dwz_bfd.get ()));
-	  return false;
-	}
-    }
-
-  create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
-
-  if (map->tu_count != 0)
-    {
-      /* We can only handle a single .debug_types when we have an
-	 index.  */
-      if (dwarf2_per_objfile->types.size () != 1)
-	return false;
-
-      dwarf2_section_info *section = &dwarf2_per_objfile->types[0];
-
-      create_signatured_type_table_from_debug_names
-	(dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
-    }
-
-  create_addrmap_from_aranges (dwarf2_per_objfile,
-			       &dwarf2_per_objfile->debug_aranges);
-
-  dwarf2_per_objfile->debug_names_table = std::move (map);
-  dwarf2_per_objfile->using_index = 1;
-  dwarf2_per_objfile->quick_file_names_table =
-    create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
-
-  return true;
-}
-
-/* Type used to manage iterating over all CUs looking for a symbol for
-   .debug_names.  */
-
-class dw2_debug_names_iterator
-{
-public:
-  dw2_debug_names_iterator (const mapped_debug_names &map,
-			    gdb::optional<block_enum> block_index,
-			    domain_enum domain,
-			    const char *name)
-    : m_map (map), m_block_index (block_index), m_domain (domain),
-      m_addr (find_vec_in_debug_names (map, name))
-  {}
-
-  dw2_debug_names_iterator (const mapped_debug_names &map,
-			    search_domain search, uint32_t namei)
-    : m_map (map),
-      m_search (search),
-      m_addr (find_vec_in_debug_names (map, namei))
-  {}
-
-  dw2_debug_names_iterator (const mapped_debug_names &map,
-			    block_enum block_index, domain_enum domain,
-			    uint32_t namei)
-    : m_map (map), m_block_index (block_index), m_domain (domain),
-      m_addr (find_vec_in_debug_names (map, namei))
-  {}
-
-  /* Return the next matching CU or NULL if there are no more.  */
-  dwarf2_per_cu_data *next ();
-
-private:
-  static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
-						  const char *name);
-  static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
-						  uint32_t namei);
-
-  /* The internalized form of .debug_names.  */
-  const mapped_debug_names &m_map;
-
-  /* If set, only look for symbols that match that block.  Valid values are
-     GLOBAL_BLOCK and STATIC_BLOCK.  */
-  const gdb::optional<block_enum> m_block_index;
-
-  /* The kind of symbol we're looking for.  */
-  const domain_enum m_domain = UNDEF_DOMAIN;
-  const search_domain m_search = ALL_DOMAIN;
-
-  /* The list of CUs from the index entry of the symbol, or NULL if
-     not found.  */
-  const gdb_byte *m_addr;
-};
-
-const char *
-mapped_debug_names::namei_to_name (uint32_t namei) const
-{
-  const ULONGEST namei_string_offs
-    = extract_unsigned_integer ((name_table_string_offs_reordered
-				 + namei * offset_size),
-				offset_size,
-				dwarf5_byte_order);
-  return read_indirect_string_at_offset
-    (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
-}
-
-/* Find a slot in .debug_names for the object named NAME.  If NAME is
-   found, return pointer to its pool data.  If NAME cannot be found,
-   return NULL.  */
-
-const gdb_byte *
-dw2_debug_names_iterator::find_vec_in_debug_names
-  (const mapped_debug_names &map, const char *name)
-{
-  int (*cmp) (const char *, const char *);
-
-  gdb::unique_xmalloc_ptr<char> without_params;
-  if (current_language->la_language == language_cplus
-      || current_language->la_language == language_fortran
-      || current_language->la_language == language_d)
-    {
-      /* NAME is already canonical.  Drop any qualifiers as
-	 .debug_names does not contain any.  */
-
-      if (strchr (name, '(') != NULL)
-	{
-	  without_params = cp_remove_params (name);
-	  if (without_params != NULL)
-	    name = without_params.get ();
-	}
-    }
-
-  cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
-
-  const uint32_t full_hash = dwarf5_djb_hash (name);
-  uint32_t namei
-    = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
-				(map.bucket_table_reordered
-				 + (full_hash % map.bucket_count)), 4,
-				map.dwarf5_byte_order);
-  if (namei == 0)
-    return NULL;
-  --namei;
-  if (namei >= map.name_count)
-    {
-      complaint (_("Wrong .debug_names with name index %u but name_count=%u "
-		   "[in module %s]"),
-		 namei, map.name_count,
-		 objfile_name (map.dwarf2_per_objfile->objfile));
-      return NULL;
-    }
-
-  for (;;)
-    {
-      const uint32_t namei_full_hash
-	= extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
-				    (map.hash_table_reordered + namei), 4,
-				    map.dwarf5_byte_order);
-      if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
-	return NULL;
-
-      if (full_hash == namei_full_hash)
-	{
-	  const char *const namei_string = map.namei_to_name (namei);
-
-#if 0 /* An expensive sanity check.  */
-	  if (namei_full_hash != dwarf5_djb_hash (namei_string))
-	    {
-	      complaint (_("Wrong .debug_names hash for string at index %u "
-			   "[in module %s]"),
-			 namei, objfile_name (dwarf2_per_objfile->objfile));
-	      return NULL;
-	    }
-#endif
-
-	  if (cmp (namei_string, name) == 0)
-	    {
-	      const ULONGEST namei_entry_offs
-		= extract_unsigned_integer ((map.name_table_entry_offs_reordered
-					     + namei * map.offset_size),
-					    map.offset_size, map.dwarf5_byte_order);
-	      return map.entry_pool + namei_entry_offs;
-	    }
-	}
-
-      ++namei;
-      if (namei >= map.name_count)
-	return NULL;
-    }
-}
-
-const gdb_byte *
-dw2_debug_names_iterator::find_vec_in_debug_names
-  (const mapped_debug_names &map, uint32_t namei)
-{
-  if (namei >= map.name_count)
-    {
-      complaint (_("Wrong .debug_names with name index %u but name_count=%u "
-		   "[in module %s]"),
-		 namei, map.name_count,
-		 objfile_name (map.dwarf2_per_objfile->objfile));
-      return NULL;
-    }
-
-  const ULONGEST namei_entry_offs
-    = extract_unsigned_integer ((map.name_table_entry_offs_reordered
-				 + namei * map.offset_size),
-				map.offset_size, map.dwarf5_byte_order);
-  return map.entry_pool + namei_entry_offs;
-}
-
-/* See dw2_debug_names_iterator.  */
-
-dwarf2_per_cu_data *
-dw2_debug_names_iterator::next ()
-{
-  if (m_addr == NULL)
-    return NULL;
-
-  struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  bfd *const abfd = objfile->obfd;
-
- again:
-
-  unsigned int bytes_read;
-  const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
-  m_addr += bytes_read;
-  if (abbrev == 0)
-    return NULL;
-
-  const auto indexval_it = m_map.abbrev_map.find (abbrev);
-  if (indexval_it == m_map.abbrev_map.cend ())
-    {
-      complaint (_("Wrong .debug_names undefined abbrev code %s "
-		   "[in module %s]"),
-		 pulongest (abbrev), objfile_name (objfile));
-      return NULL;
-    }
-  const mapped_debug_names::index_val &indexval = indexval_it->second;
-  enum class symbol_linkage {
-    unknown,
-    static_,
-    extern_,
-  } symbol_linkage_ = symbol_linkage::unknown;
-  dwarf2_per_cu_data *per_cu = NULL;
-  for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
-    {
-      ULONGEST ull;
-      switch (attr.form)
-	{
-	case DW_FORM_implicit_const:
-	  ull = attr.implicit_const;
-	  break;
-	case DW_FORM_flag_present:
-	  ull = 1;
-	  break;
-	case DW_FORM_udata:
-	  ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
-	  m_addr += bytes_read;
-	  break;
-	default:
-	  complaint (_("Unsupported .debug_names form %s [in module %s]"),
-		     dwarf_form_name (attr.form),
-		     objfile_name (objfile));
-	  return NULL;
-	}
-      switch (attr.dw_idx)
-	{
-	case DW_IDX_compile_unit:
-	  /* Don't crash on bad data.  */
-	  if (ull >= dwarf2_per_objfile->all_comp_units.size ())
-	    {
-	      complaint (_(".debug_names entry has bad CU index %s"
-			   " [in module %s]"),
-			 pulongest (ull),
-			 objfile_name (dwarf2_per_objfile->objfile));
-	      continue;
-	    }
-	  per_cu = dwarf2_per_objfile->get_cutu (ull);
-	  break;
-	case DW_IDX_type_unit:
-	  /* Don't crash on bad data.  */
-	  if (ull >= dwarf2_per_objfile->all_type_units.size ())
-	    {
-	      complaint (_(".debug_names entry has bad TU index %s"
-			   " [in module %s]"),
-			 pulongest (ull),
-			 objfile_name (dwarf2_per_objfile->objfile));
-	      continue;
-	    }
-	  per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
-	  break;
-	case DW_IDX_GNU_internal:
-	  if (!m_map.augmentation_is_gdb)
-	    break;
-	  symbol_linkage_ = symbol_linkage::static_;
-	  break;
-	case DW_IDX_GNU_external:
-	  if (!m_map.augmentation_is_gdb)
-	    break;
-	  symbol_linkage_ = symbol_linkage::extern_;
-	  break;
-	}
-    }
-
-  /* Skip if already read in.  */
-  if (per_cu->v.quick->compunit_symtab)
-    goto again;
-
-  /* Check static vs global.  */
-  if (symbol_linkage_ != symbol_linkage::unknown && m_block_index.has_value ())
-    {
-	const bool want_static = *m_block_index == STATIC_BLOCK;
-	const bool symbol_is_static =
-	  symbol_linkage_ == symbol_linkage::static_;
-	if (want_static != symbol_is_static)
-	  goto again;
-    }
-
-  /* Match dw2_symtab_iter_next, symbol_kind
-     and debug_names::psymbol_tag.  */
-  switch (m_domain)
-    {
-    case VAR_DOMAIN:
-      switch (indexval.dwarf_tag)
-	{
-	case DW_TAG_variable:
-	case DW_TAG_subprogram:
-	/* Some types are also in VAR_DOMAIN.  */
-	case DW_TAG_typedef:
-	case DW_TAG_structure_type:
-	  break;
-	default:
-	  goto again;
-	}
-      break;
-    case STRUCT_DOMAIN:
-      switch (indexval.dwarf_tag)
-	{
-	case DW_TAG_typedef:
-	case DW_TAG_structure_type:
-	  break;
-	default:
-	  goto again;
-	}
-      break;
-    case LABEL_DOMAIN:
-      switch (indexval.dwarf_tag)
-	{
-	case 0:
-	case DW_TAG_variable:
-	  break;
-	default:
-	  goto again;
-	}
-      break;
-    case MODULE_DOMAIN:
-      switch (indexval.dwarf_tag)
-	{
-	case DW_TAG_module:
-	  break;
-	default:
-	  goto again;
-	}
-      break;
-    default:
-      break;
-    }
-
-  /* Match dw2_expand_symtabs_matching, symbol_kind and
-     debug_names::psymbol_tag.  */
-  switch (m_search)
-    {
-    case VARIABLES_DOMAIN:
-      switch (indexval.dwarf_tag)
-	{
-	case DW_TAG_variable:
-	  break;
-	default:
-	  goto again;
-	}
-      break;
-    case FUNCTIONS_DOMAIN:
-      switch (indexval.dwarf_tag)
-	{
-	case DW_TAG_subprogram:
-	  break;
-	default:
-	  goto again;
-	}
-      break;
-    case TYPES_DOMAIN:
-      switch (indexval.dwarf_tag)
-	{
-	case DW_TAG_typedef:
-	case DW_TAG_structure_type:
-	  break;
-	default:
-	  goto again;
-	}
-      break;
-    case MODULES_DOMAIN:
-      switch (indexval.dwarf_tag)
-	{
-	case DW_TAG_module:
-	  break;
-	default:
-	  goto again;
-	}
-    default:
-      break;
-    }
-
-  return per_cu;
-}
-
-static struct compunit_symtab *
-dw2_debug_names_lookup_symbol (struct objfile *objfile, block_enum block_index,
-			       const char *name, domain_enum domain)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  const auto &mapp = dwarf2_per_objfile->debug_names_table;
-  if (!mapp)
-    {
-      /* index is NULL if OBJF_READNOW.  */
-      return NULL;
-    }
-  const auto &map = *mapp;
-
-  dw2_debug_names_iterator iter (map, block_index, domain, name);
-
-  struct compunit_symtab *stab_best = NULL;
-  struct dwarf2_per_cu_data *per_cu;
-  while ((per_cu = iter.next ()) != NULL)
-    {
-      struct symbol *sym, *with_opaque = NULL;
-      struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
-      const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
-      const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
-
-      sym = block_find_symbol (block, name, domain,
-			       block_find_non_opaque_type_preferred,
-			       &with_opaque);
-
-      /* Some caution must be observed with overloaded functions and
-	 methods, since the index will not contain any overload
-	 information (but NAME might contain it).  */
-
-      if (sym != NULL
-	  && strcmp_iw (sym->search_name (), name) == 0)
-	return stab;
-      if (with_opaque != NULL
-	  && strcmp_iw (with_opaque->search_name (), name) == 0)
-	stab_best = stab;
-
-      /* Keep looking through other CUs.  */
-    }
-
-  return stab_best;
-}
-
-/* This dumps minimal information about .debug_names.  It is called
-   via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
-   uses this to verify that .debug_names has been loaded.  */
-
-static void
-dw2_debug_names_dump (struct objfile *objfile)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  gdb_assert (dwarf2_per_objfile->using_index);
-  printf_filtered (".debug_names:");
-  if (dwarf2_per_objfile->debug_names_table)
-    printf_filtered (" exists\n");
-  else
-    printf_filtered (" faked for \"readnow\"\n");
-  printf_filtered ("\n");
-}
-
-static void
-dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
-					     const char *func_name)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
-  if (dwarf2_per_objfile->debug_names_table)
-    {
-      const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
-
-      dw2_debug_names_iterator iter (map, {}, VAR_DOMAIN, func_name);
-
-      struct dwarf2_per_cu_data *per_cu;
-      while ((per_cu = iter.next ()) != NULL)
-	dw2_instantiate_symtab (per_cu, false);
-    }
-}
-
-static void
-dw2_debug_names_map_matching_symbols
-  (struct objfile *objfile,
-   const lookup_name_info &name, domain_enum domain,
-   int global,
-   gdb::function_view<symbol_found_callback_ftype> callback,
-   symbol_compare_ftype *ordered_compare)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  /* debug_names_table is NULL if OBJF_READNOW.  */
-  if (!dwarf2_per_objfile->debug_names_table)
-    return;
-
-  mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
-  const block_enum block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
-
-  const char *match_name = name.ada ().lookup_name ().c_str ();
-  auto matcher = [&] (const char *symname)
-    {
-      if (ordered_compare == nullptr)
-	return true;
-      return ordered_compare (symname, match_name) == 0;
-    };
-
-  dw2_expand_symtabs_matching_symbol (map, name, matcher, ALL_DOMAIN,
-				      [&] (offset_type namei)
-    {
-      /* The name was matched, now expand corresponding CUs that were
-	 marked.  */
-      dw2_debug_names_iterator iter (map, block_kind, domain, namei);
-
-      struct dwarf2_per_cu_data *per_cu;
-      while ((per_cu = iter.next ()) != NULL)
-	dw2_expand_symtabs_matching_one (per_cu, nullptr, nullptr);
-      return true;
-    });
-
-  /* It's a shame we couldn't do this inside the
-     dw2_expand_symtabs_matching_symbol callback, but that skips CUs
-     that have already been expanded.  Instead, this loop matches what
-     the psymtab code does.  */
-  for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-    {
-      struct compunit_symtab *cust = per_cu->v.quick->compunit_symtab;
-      if (cust != nullptr)
-	{
-	  const struct block *block
-	    = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), block_kind);
-	  if (!iterate_over_symbols_terminated (block, name,
-						domain, callback))
-	    break;
-	}
-    }
-}
-
-static void
-dw2_debug_names_expand_symtabs_matching
-  (struct objfile *objfile,
-   gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
-   const lookup_name_info &lookup_name,
-   gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
-   gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
-   enum search_domain kind)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  /* debug_names_table is NULL if OBJF_READNOW.  */
-  if (!dwarf2_per_objfile->debug_names_table)
-    return;
-
-  dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
-
-  mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
-
-  dw2_expand_symtabs_matching_symbol (map, lookup_name,
-				      symbol_matcher,
-				      kind, [&] (offset_type namei)
-    {
-      /* The name was matched, now expand corresponding CUs that were
-	 marked.  */
-      dw2_debug_names_iterator iter (map, kind, namei);
-
-      struct dwarf2_per_cu_data *per_cu;
-      while ((per_cu = iter.next ()) != NULL)
-	dw2_expand_symtabs_matching_one (per_cu, file_matcher,
-					 expansion_notify);
-      return true;
-    });
-}
-
-const struct quick_symbol_functions dwarf2_debug_names_functions =
-{
-  dw2_has_symbols,
-  dw2_find_last_source_symtab,
-  dw2_forget_cached_source_info,
-  dw2_map_symtabs_matching_filename,
-  dw2_debug_names_lookup_symbol,
-  dw2_print_stats,
-  dw2_debug_names_dump,
-  dw2_debug_names_expand_symtabs_for_function,
-  dw2_expand_all_symtabs,
-  dw2_expand_symtabs_with_fullname,
-  dw2_debug_names_map_matching_symbols,
-  dw2_debug_names_expand_symtabs_matching,
-  dw2_find_pc_sect_compunit_symtab,
-  NULL,
-  dw2_map_symbol_filenames
-};
-
-/* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
-   to either a dwarf2_per_objfile or dwz_file object.  */
-
-template <typename T>
-static gdb::array_view<const gdb_byte>
-get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
-{
-  dwarf2_section_info *section = &section_owner->gdb_index;
-
-  if (dwarf2_section_empty_p (section))
-    return {};
-
-  /* Older elfutils strip versions could keep the section in the main
-     executable while splitting it for the separate debug info file.  */
-  if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
-    return {};
-
-  dwarf2_read_section (obj, section);
-
-  /* dwarf2_section_info::size is a bfd_size_type, while
-     gdb::array_view works with size_t.  On 32-bit hosts, with
-     --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
-     is 32-bit.  So we need an explicit narrowing conversion here.
-     This is fine, because it's impossible to allocate or mmap an
-     array/buffer larger than what size_t can represent.  */
-  return gdb::make_array_view (section->buffer, section->size);
-}
-
-/* Lookup the index cache for the contents of the index associated to
-   DWARF2_OBJ.  */
-
-static gdb::array_view<const gdb_byte>
-get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
-{
-  const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
-  if (build_id == nullptr)
-    return {};
-
-  return global_index_cache.lookup_gdb_index (build_id,
-					      &dwarf2_obj->index_cache_res);
-}
-
-/* Same as the above, but for DWZ.  */
-
-static gdb::array_view<const gdb_byte>
-get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
-{
-  const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
-  if (build_id == nullptr)
-    return {};
-
-  return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
-}
-
-/* See symfile.h.  */
-
-bool
-dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  /* If we're about to read full symbols, don't bother with the
-     indices.  In this case we also don't care if some other debug
-     format is making psymtabs, because they are all about to be
-     expanded anyway.  */
-  if ((objfile->flags & OBJF_READNOW))
-    {
-      dwarf2_per_objfile->using_index = 1;
-      create_all_comp_units (dwarf2_per_objfile);
-      create_all_type_units (dwarf2_per_objfile);
-      dwarf2_per_objfile->quick_file_names_table
-	= create_quick_file_names_table
-	    (dwarf2_per_objfile->all_comp_units.size ());
-
-      for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
-			   + dwarf2_per_objfile->all_type_units.size ()); ++i)
-	{
-	  dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
-
-	  per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
-					    struct dwarf2_per_cu_quick_data);
-	}
-
-      /* Return 1 so that gdb sees the "quick" functions.  However,
-	 these functions will be no-ops because we will have expanded
-	 all symtabs.  */
-      *index_kind = dw_index_kind::GDB_INDEX;
-      return true;
-    }
-
-  if (dwarf2_read_debug_names (dwarf2_per_objfile))
-    {
-      *index_kind = dw_index_kind::DEBUG_NAMES;
-      return true;
-    }
-
-  if (dwarf2_read_gdb_index (dwarf2_per_objfile,
-			     get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
-			     get_gdb_index_contents_from_section<dwz_file>))
-    {
-      *index_kind = dw_index_kind::GDB_INDEX;
-      return true;
-    }
-
-  /* ... otherwise, try to find the index in the index cache.  */
-  if (dwarf2_read_gdb_index (dwarf2_per_objfile,
-			     get_gdb_index_contents_from_cache,
-			     get_gdb_index_contents_from_cache_dwz))
-    {
-      global_index_cache.hit ();
-      *index_kind = dw_index_kind::GDB_INDEX;
-      return true;
-    }
-
-  global_index_cache.miss ();
-  return false;
-}
-
-
-
-/* Build a partial symbol table.  */
-
-void
-dwarf2_build_psymtabs (struct objfile *objfile)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  init_psymbol_list (objfile, 1024);
-
-  try
-    {
-      /* This isn't really ideal: all the data we allocate on the
-	 objfile's obstack is still uselessly kept around.  However,
-	 freeing it seems unsafe.  */
-      psymtab_discarder psymtabs (objfile);
-      dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
-      psymtabs.keep ();
-
-      /* (maybe) store an index in the cache.  */
-      global_index_cache.store (dwarf2_per_objfile);
-    }
-  catch (const gdb_exception_error &except)
-    {
-      exception_print (gdb_stderr, except);
-    }
-}
-
-/* Return the total length of the CU described by HEADER.  */
-
-static unsigned int
-get_cu_length (const struct comp_unit_head *header)
-{
-  return header->initial_length_size + header->length;
-}
-
-/* Return TRUE if SECT_OFF is within CU_HEADER.  */
-
-static inline bool
-offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
-{
-  sect_offset bottom = cu_header->sect_off;
-  sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
-
-  return sect_off >= bottom && sect_off < top;
-}
-
-/* Find the base address of the compilation unit for range lists and
-   location lists.  It will normally be specified by DW_AT_low_pc.
-   In DWARF-3 draft 4, the base address could be overridden by
-   DW_AT_entry_pc.  It's been removed, but GCC still uses this for
-   compilation units with discontinuous ranges.  */
-
-static void
-dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-
-  cu->base_known = 0;
-  cu->base_address = 0;
-
-  attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
-  if (attr != nullptr)
-    {
-      cu->base_address = attr_value_as_address (attr);
-      cu->base_known = 1;
-    }
-  else
-    {
-      attr = dwarf2_attr (die, DW_AT_low_pc, cu);
-      if (attr != nullptr)
-	{
-	  cu->base_address = attr_value_as_address (attr);
-	  cu->base_known = 1;
-	}
-    }
-}
-
-/* Read in the comp unit header information from the debug_info at info_ptr.
-   Use rcuh_kind::COMPILE as the default type if not known by the caller.
-   NOTE: This leaves members offset, first_die_offset to be filled in
-   by the caller.  */
-
-static const gdb_byte *
-read_comp_unit_head (struct comp_unit_head *cu_header,
-		     const gdb_byte *info_ptr,
-		     struct dwarf2_section_info *section,
-		     rcuh_kind section_kind)
-{
-  int signed_addr;
-  unsigned int bytes_read;
-  const char *filename = get_section_file_name (section);
-  bfd *abfd = get_section_bfd_owner (section);
-
-  cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
-  cu_header->initial_length_size = bytes_read;
-  cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
-  info_ptr += bytes_read;
-  cu_header->version = read_2_bytes (abfd, info_ptr);
-  if (cu_header->version < 2 || cu_header->version > 5)
-    error (_("Dwarf Error: wrong version in compilation unit header "
-	   "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
-	   cu_header->version, filename);
-  info_ptr += 2;
-  if (cu_header->version < 5)
-    switch (section_kind)
-      {
-      case rcuh_kind::COMPILE:
-	cu_header->unit_type = DW_UT_compile;
-	break;
-      case rcuh_kind::TYPE:
-	cu_header->unit_type = DW_UT_type;
-	break;
-      default:
-	internal_error (__FILE__, __LINE__,
-			_("read_comp_unit_head: invalid section_kind"));
-      }
-  else
-    {
-      cu_header->unit_type = static_cast<enum dwarf_unit_type>
-						 (read_1_byte (abfd, info_ptr));
-      info_ptr += 1;
-      switch (cu_header->unit_type)
-	{
-	case DW_UT_compile:
-	case DW_UT_partial:
-	case DW_UT_skeleton:
-	case DW_UT_split_compile:
-	  if (section_kind != rcuh_kind::COMPILE)
-	    error (_("Dwarf Error: wrong unit_type in compilation unit header "
-		   "(is %s, should be %s) [in module %s]"),
-		   dwarf_unit_type_name (cu_header->unit_type),
-		   dwarf_unit_type_name (DW_UT_type), filename);
-	  break;
-	case DW_UT_type:
-	case DW_UT_split_type:
-	  section_kind = rcuh_kind::TYPE;
-	  break;
-	default:
-	  error (_("Dwarf Error: wrong unit_type in compilation unit header "
-		 "(is %#04x, should be one of: %s, %s, %s, %s or %s) "
-		 "[in module %s]"), cu_header->unit_type,
-		 dwarf_unit_type_name (DW_UT_compile),
-		 dwarf_unit_type_name (DW_UT_skeleton),
-		 dwarf_unit_type_name (DW_UT_split_compile),
-		 dwarf_unit_type_name (DW_UT_type),
-		 dwarf_unit_type_name (DW_UT_split_type), filename);
-	}
-
-      cu_header->addr_size = read_1_byte (abfd, info_ptr);
-      info_ptr += 1;
-    }
-  cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
-							  cu_header,
-							  &bytes_read);
-  info_ptr += bytes_read;
-  if (cu_header->version < 5)
-    {
-      cu_header->addr_size = read_1_byte (abfd, info_ptr);
-      info_ptr += 1;
-    }
-  signed_addr = bfd_get_sign_extend_vma (abfd);
-  if (signed_addr < 0)
-    internal_error (__FILE__, __LINE__,
-		    _("read_comp_unit_head: dwarf from non elf file"));
-  cu_header->signed_addr_p = signed_addr;
-
-  bool header_has_signature = section_kind == rcuh_kind::TYPE
-    || cu_header->unit_type == DW_UT_skeleton
-    || cu_header->unit_type == DW_UT_split_compile;
-
-  if (header_has_signature)
-    {
-      cu_header->signature = read_8_bytes (abfd, info_ptr);
-      info_ptr += 8;
-    }
-
-  if (section_kind == rcuh_kind::TYPE)
-    {
-      LONGEST type_offset;
-      type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
-      info_ptr += bytes_read;
-      cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
-      if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
-	error (_("Dwarf Error: Too big type_offset in compilation unit "
-	       "header (is %s) [in module %s]"), plongest (type_offset),
-	       filename);
-    }
-
-  return info_ptr;
-}
-
-/* Helper function that returns the proper abbrev section for
-   THIS_CU.  */
-
-static struct dwarf2_section_info *
-get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
-{
-  struct dwarf2_section_info *abbrev;
-  struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
-
-  if (this_cu->is_dwz)
-    abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
-  else
-    abbrev = &dwarf2_per_objfile->abbrev;
-
-  return abbrev;
-}
-
-/* Subroutine of read_and_check_comp_unit_head and
-   read_and_check_type_unit_head to simplify them.
-   Perform various error checking on the header.  */
-
-static void
-error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			    struct comp_unit_head *header,
-			    struct dwarf2_section_info *section,
-			    struct dwarf2_section_info *abbrev_section)
-{
-  const char *filename = get_section_file_name (section);
-
-  if (to_underlying (header->abbrev_sect_off)
-      >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
-    error (_("Dwarf Error: bad offset (%s) in compilation unit header "
-	   "(offset %s + 6) [in module %s]"),
-	   sect_offset_str (header->abbrev_sect_off),
-	   sect_offset_str (header->sect_off),
-	   filename);
-
-  /* Cast to ULONGEST to use 64-bit arithmetic when possible to
-     avoid potential 32-bit overflow.  */
-  if (((ULONGEST) header->sect_off + get_cu_length (header))
-      > section->size)
-    error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
-	   "(offset %s + 0) [in module %s]"),
-	   header->length, sect_offset_str (header->sect_off),
-	   filename);
-}
-
-/* Read in a CU/TU header and perform some basic error checking.
-   The contents of the header are stored in HEADER.
-   The result is a pointer to the start of the first DIE.  */
-
-static const gdb_byte *
-read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			       struct comp_unit_head *header,
-			       struct dwarf2_section_info *section,
-			       struct dwarf2_section_info *abbrev_section,
-			       const gdb_byte *info_ptr,
-			       rcuh_kind section_kind)
-{
-  const gdb_byte *beg_of_comp_unit = info_ptr;
-
-  header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
-
-  info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
-
-  header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
-
-  error_check_comp_unit_head (dwarf2_per_objfile, header, section,
-			      abbrev_section);
-
-  return info_ptr;
-}
-
-/* Fetch the abbreviation table offset from a comp or type unit header.  */
-
-static sect_offset
-read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
-		    struct dwarf2_section_info *section,
-		    sect_offset sect_off)
-{
-  bfd *abfd = get_section_bfd_owner (section);
-  const gdb_byte *info_ptr;
-  unsigned int initial_length_size, offset_size;
-  uint16_t version;
-
-  dwarf2_read_section (dwarf2_per_objfile->objfile, section);
-  info_ptr = section->buffer + to_underlying (sect_off);
-  read_initial_length (abfd, info_ptr, &initial_length_size);
-  offset_size = initial_length_size == 4 ? 4 : 8;
-  info_ptr += initial_length_size;
-
-  version = read_2_bytes (abfd, info_ptr);
-  info_ptr += 2;
-  if (version >= 5)
-    {
-      /* Skip unit type and address size.  */
-      info_ptr += 2;
-    }
-
-  return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
-}
-
-/* Allocate a new partial symtab for file named NAME and mark this new
-   partial symtab as being an include of PST.  */
-
-static void
-dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
-                               struct objfile *objfile)
-{
-  struct partial_symtab *subpst = allocate_psymtab (name, objfile);
-
-  if (!IS_ABSOLUTE_PATH (subpst->filename))
-    {
-      /* It shares objfile->objfile_obstack.  */
-      subpst->dirname = pst->dirname;
-    }
-
-  subpst->dependencies = objfile->partial_symtabs->allocate_dependencies (1);
-  subpst->dependencies[0] = pst;
-  subpst->number_of_dependencies = 1;
-
-  subpst->read_symtab = pst->read_symtab;
-
-  /* No private part is necessary for include psymtabs.  This property
-     can be used to differentiate between such include psymtabs and
-     the regular ones.  */
-  subpst->read_symtab_private = NULL;
-}
-
-/* Read the Line Number Program data and extract the list of files
-   included by the source file represented by PST.  Build an include
-   partial symtab for each of these included files.  */
-
-static void
-dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
-			       struct die_info *die,
-			       struct partial_symtab *pst)
-{
-  line_header_up lh;
-  struct attribute *attr;
-
-  attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
-  if (attr != nullptr)
-    lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
-  if (lh == NULL)
-    return;  /* No linetable, so no includes.  */
-
-  /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
-     that we pass in the raw text_low here; that is ok because we're
-     only decoding the line table to make include partial symtabs, and
-     so the addresses aren't really used.  */
-  dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
-		      pst->raw_text_low (), 1);
-}
-
-static hashval_t
-hash_signatured_type (const void *item)
-{
-  const struct signatured_type *sig_type
-    = (const struct signatured_type *) item;
-
-  /* This drops the top 32 bits of the signature, but is ok for a hash.  */
-  return sig_type->signature;
-}
-
-static int
-eq_signatured_type (const void *item_lhs, const void *item_rhs)
-{
-  const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
-  const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
-
-  return lhs->signature == rhs->signature;
-}
-
-/* Allocate a hash table for signatured types.  */
-
-static htab_t
-allocate_signatured_type_table (struct objfile *objfile)
-{
-  return htab_create_alloc_ex (41,
-			       hash_signatured_type,
-			       eq_signatured_type,
-			       NULL,
-			       &objfile->objfile_obstack,
-			       hashtab_obstack_allocate,
-			       dummy_obstack_deallocate);
-}
-
-/* A helper function to add a signatured type CU to a table.  */
-
-static int
-add_signatured_type_cu_to_table (void **slot, void *datum)
-{
-  struct signatured_type *sigt = (struct signatured_type *) *slot;
-  std::vector<signatured_type *> *all_type_units
-    = (std::vector<signatured_type *> *) datum;
-
-  all_type_units->push_back (sigt);
-
-  return 1;
-}
-
-/* A helper for create_debug_types_hash_table.  Read types from SECTION
-   and fill them into TYPES_HTAB.  It will process only type units,
-   therefore DW_UT_type.  */
-
-static void
-create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			      struct dwo_file *dwo_file,
-			      dwarf2_section_info *section, htab_t &types_htab,
-			      rcuh_kind section_kind)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwarf2_section_info *abbrev_section;
-  bfd *abfd;
-  const gdb_byte *info_ptr, *end_ptr;
-
-  abbrev_section = (dwo_file != NULL
-		    ? &dwo_file->sections.abbrev
-		    : &dwarf2_per_objfile->abbrev);
-
-  if (dwarf_read_debug)
-    fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
-			get_section_name (section),
-			get_section_file_name (abbrev_section));
-
-  dwarf2_read_section (objfile, section);
-  info_ptr = section->buffer;
-
-  if (info_ptr == NULL)
-    return;
-
-  /* We can't set abfd until now because the section may be empty or
-     not present, in which case the bfd is unknown.  */
-  abfd = get_section_bfd_owner (section);
-
-  /* We don't use init_cutu_and_read_dies_simple, or some such, here
-     because we don't need to read any dies: the signature is in the
-     header.  */
-
-  end_ptr = info_ptr + section->size;
-  while (info_ptr < end_ptr)
-    {
-      struct signatured_type *sig_type;
-      struct dwo_unit *dwo_tu;
-      void **slot;
-      const gdb_byte *ptr = info_ptr;
-      struct comp_unit_head header;
-      unsigned int length;
-
-      sect_offset sect_off = (sect_offset) (ptr - section->buffer);
-
-      /* Initialize it due to a false compiler warning.  */
-      header.signature = -1;
-      header.type_cu_offset_in_tu = (cu_offset) -1;
-
-      /* We need to read the type's signature in order to build the hash
-	 table, but we don't need anything else just yet.  */
-
-      ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
-					   abbrev_section, ptr, section_kind);
-
-      length = get_cu_length (&header);
-
-      /* Skip dummy type units.  */
-      if (ptr >= info_ptr + length
-	  || peek_abbrev_code (abfd, ptr) == 0
-	  || header.unit_type != DW_UT_type)
-	{
-	  info_ptr += length;
-	  continue;
-	}
-
-      if (types_htab == NULL)
-	{
-	  if (dwo_file)
-	    types_htab = allocate_dwo_unit_table (objfile);
-	  else
-	    types_htab = allocate_signatured_type_table (objfile);
-	}
-
-      if (dwo_file)
-	{
-	  sig_type = NULL;
-	  dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
-				   struct dwo_unit);
-	  dwo_tu->dwo_file = dwo_file;
-	  dwo_tu->signature = header.signature;
-	  dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
-	  dwo_tu->section = section;
-	  dwo_tu->sect_off = sect_off;
-	  dwo_tu->length = length;
-	}
-      else
-	{
-	  /* N.B.: type_offset is not usable if this type uses a DWO file.
-	     The real type_offset is in the DWO file.  */
-	  dwo_tu = NULL;
-	  sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
-				     struct signatured_type);
-	  sig_type->signature = header.signature;
-	  sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
-	  sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
-	  sig_type->per_cu.is_debug_types = 1;
-	  sig_type->per_cu.section = section;
-	  sig_type->per_cu.sect_off = sect_off;
-	  sig_type->per_cu.length = length;
-	}
-
-      slot = htab_find_slot (types_htab,
-			     dwo_file ? (void*) dwo_tu : (void *) sig_type,
-			     INSERT);
-      gdb_assert (slot != NULL);
-      if (*slot != NULL)
-	{
-	  sect_offset dup_sect_off;
-
-	  if (dwo_file)
-	    {
-	      const struct dwo_unit *dup_tu
-		= (const struct dwo_unit *) *slot;
-
-	      dup_sect_off = dup_tu->sect_off;
-	    }
-	  else
-	    {
-	      const struct signatured_type *dup_tu
-		= (const struct signatured_type *) *slot;
-
-	      dup_sect_off = dup_tu->per_cu.sect_off;
-	    }
-
-	  complaint (_("debug type entry at offset %s is duplicate to"
-		       " the entry at offset %s, signature %s"),
-		     sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
-		     hex_string (header.signature));
-	}
-      *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
-
-      if (dwarf_read_debug > 1)
-	fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
-			    sect_offset_str (sect_off),
-			    hex_string (header.signature));
-
-      info_ptr += length;
-    }
-}
-
-/* Create the hash table of all entries in the .debug_types
-   (or .debug_types.dwo) section(s).
-   If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
-   otherwise it is NULL.
-
-   The result is a pointer to the hash table or NULL if there are no types.
-
-   Note: This function processes DWO files only, not DWP files.  */
-
-static void
-create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			       struct dwo_file *dwo_file,
-			       gdb::array_view<dwarf2_section_info> type_sections,
-			       htab_t &types_htab)
-{
-  for (dwarf2_section_info &section : type_sections)
-    create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, &section,
-				  types_htab, rcuh_kind::TYPE);
-}
-
-/* Create the hash table of all entries in the .debug_types section,
-   and initialize all_type_units.
-   The result is zero if there is an error (e.g. missing .debug_types section),
-   otherwise non-zero.	*/
-
-static int
-create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  htab_t types_htab = NULL;
-
-  create_debug_type_hash_table (dwarf2_per_objfile, NULL,
-				&dwarf2_per_objfile->info, types_htab,
-				rcuh_kind::COMPILE);
-  create_debug_types_hash_table (dwarf2_per_objfile, NULL,
-				 dwarf2_per_objfile->types, types_htab);
-  if (types_htab == NULL)
-    {
-      dwarf2_per_objfile->signatured_types = NULL;
-      return 0;
-    }
-
-  dwarf2_per_objfile->signatured_types = types_htab;
-
-  gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
-  dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
-
-  htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
-			  &dwarf2_per_objfile->all_type_units);
-
-  return 1;
-}
-
-/* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
-   If SLOT is non-NULL, it is the entry to use in the hash table.
-   Otherwise we find one.  */
-
-static struct signatured_type *
-add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
-	       void **slot)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-  if (dwarf2_per_objfile->all_type_units.size ()
-      == dwarf2_per_objfile->all_type_units.capacity ())
-    ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
-
-  signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
-					      struct signatured_type);
-
-  dwarf2_per_objfile->all_type_units.push_back (sig_type);
-  sig_type->signature = sig;
-  sig_type->per_cu.is_debug_types = 1;
-  if (dwarf2_per_objfile->using_index)
-    {
-      sig_type->per_cu.v.quick =
-	OBSTACK_ZALLOC (&objfile->objfile_obstack,
-			struct dwarf2_per_cu_quick_data);
-    }
-
-  if (slot == NULL)
-    {
-      slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
-			     sig_type, INSERT);
-    }
-  gdb_assert (*slot == NULL);
-  *slot = sig_type;
-  /* The rest of sig_type must be filled in by the caller.  */
-  return sig_type;
-}
-
-/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
-   Fill in SIG_ENTRY with DWO_ENTRY.  */
-
-static void
-fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
-				  struct signatured_type *sig_entry,
-				  struct dwo_unit *dwo_entry)
-{
-  /* Make sure we're not clobbering something we don't expect to.  */
-  gdb_assert (! sig_entry->per_cu.queued);
-  gdb_assert (sig_entry->per_cu.cu == NULL);
-  if (dwarf2_per_objfile->using_index)
-    {
-      gdb_assert (sig_entry->per_cu.v.quick != NULL);
-      gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
-    }
-  else
-      gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
-  gdb_assert (sig_entry->signature == dwo_entry->signature);
-  gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
-  gdb_assert (sig_entry->type_unit_group == NULL);
-  gdb_assert (sig_entry->dwo_unit == NULL);
-
-  sig_entry->per_cu.section = dwo_entry->section;
-  sig_entry->per_cu.sect_off = dwo_entry->sect_off;
-  sig_entry->per_cu.length = dwo_entry->length;
-  sig_entry->per_cu.reading_dwo_directly = 1;
-  sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
-  sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
-  sig_entry->dwo_unit = dwo_entry;
-}
-
-/* Subroutine of lookup_signatured_type.
-   If we haven't read the TU yet, create the signatured_type data structure
-   for a TU to be read in directly from a DWO file, bypassing the stub.
-   This is the "Stay in DWO Optimization": When there is no DWP file and we're
-   using .gdb_index, then when reading a CU we want to stay in the DWO file
-   containing that CU.  Otherwise we could end up reading several other DWO
-   files (due to comdat folding) to process the transitive closure of all the
-   mentioned TUs, and that can be slow.  The current DWO file will have every
-   type signature that it needs.
-   We only do this for .gdb_index because in the psymtab case we already have
-   to read all the DWOs to build the type unit groups.  */
-
-static struct signatured_type *
-lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwo_file *dwo_file;
-  struct dwo_unit find_dwo_entry, *dwo_entry;
-  struct signatured_type find_sig_entry, *sig_entry;
-  void **slot;
-
-  gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
-
-  /* If TU skeletons have been removed then we may not have read in any
-     TUs yet.  */
-  if (dwarf2_per_objfile->signatured_types == NULL)
-    {
-      dwarf2_per_objfile->signatured_types
-	= allocate_signatured_type_table (objfile);
-    }
-
-  /* We only ever need to read in one copy of a signatured type.
-     Use the global signatured_types array to do our own comdat-folding
-     of types.  If this is the first time we're reading this TU, and
-     the TU has an entry in .gdb_index, replace the recorded data from
-     .gdb_index with this TU.  */
-
-  find_sig_entry.signature = sig;
-  slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
-			 &find_sig_entry, INSERT);
-  sig_entry = (struct signatured_type *) *slot;
-
-  /* We can get here with the TU already read, *or* in the process of being
-     read.  Don't reassign the global entry to point to this DWO if that's
-     the case.  Also note that if the TU is already being read, it may not
-     have come from a DWO, the program may be a mix of Fission-compiled
-     code and non-Fission-compiled code.  */
-
-  /* Have we already tried to read this TU?
-     Note: sig_entry can be NULL if the skeleton TU was removed (thus it
-     needn't exist in the global table yet).  */
-  if (sig_entry != NULL && sig_entry->per_cu.tu_read)
-    return sig_entry;
-
-  /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
-     dwo_unit of the TU itself.  */
-  dwo_file = cu->dwo_unit->dwo_file;
-
-  /* Ok, this is the first time we're reading this TU.  */
-  if (dwo_file->tus == NULL)
-    return NULL;
-  find_dwo_entry.signature = sig;
-  dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
-  if (dwo_entry == NULL)
-    return NULL;
-
-  /* If the global table doesn't have an entry for this TU, add one.  */
-  if (sig_entry == NULL)
-    sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
-
-  fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
-  sig_entry->per_cu.tu_read = 1;
-  return sig_entry;
-}
-
-/* Subroutine of lookup_signatured_type.
-   Look up the type for signature SIG, and if we can't find SIG in .gdb_index
-   then try the DWP file.  If the TU stub (skeleton) has been removed then
-   it won't be in .gdb_index.  */
-
-static struct signatured_type *
-lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
-  struct dwo_unit *dwo_entry;
-  struct signatured_type find_sig_entry, *sig_entry;
-  void **slot;
-
-  gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
-  gdb_assert (dwp_file != NULL);
-
-  /* If TU skeletons have been removed then we may not have read in any
-     TUs yet.  */
-  if (dwarf2_per_objfile->signatured_types == NULL)
-    {
-      dwarf2_per_objfile->signatured_types
-	= allocate_signatured_type_table (objfile);
-    }
-
-  find_sig_entry.signature = sig;
-  slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
-			 &find_sig_entry, INSERT);
-  sig_entry = (struct signatured_type *) *slot;
-
-  /* Have we already tried to read this TU?
-     Note: sig_entry can be NULL if the skeleton TU was removed (thus it
-     needn't exist in the global table yet).  */
-  if (sig_entry != NULL)
-    return sig_entry;
-
-  if (dwp_file->tus == NULL)
-    return NULL;
-  dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
-				      sig, 1 /* is_debug_types */);
-  if (dwo_entry == NULL)
-    return NULL;
-
-  sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
-  fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
-
-  return sig_entry;
-}
-
-/* Lookup a signature based type for DW_FORM_ref_sig8.
-   Returns NULL if signature SIG is not present in the table.
-   It is up to the caller to complain about this.  */
-
-static struct signatured_type *
-lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-
-  if (cu->dwo_unit
-      && dwarf2_per_objfile->using_index)
-    {
-      /* We're in a DWO/DWP file, and we're using .gdb_index.
-	 These cases require special processing.  */
-      if (get_dwp_file (dwarf2_per_objfile) == NULL)
-	return lookup_dwo_signatured_type (cu, sig);
-      else
-	return lookup_dwp_signatured_type (cu, sig);
-    }
-  else
-    {
-      struct signatured_type find_entry, *entry;
-
-      if (dwarf2_per_objfile->signatured_types == NULL)
-	return NULL;
-      find_entry.signature = sig;
-      entry = ((struct signatured_type *)
-	       htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
-      return entry;
-    }
-}
-
-/* Low level DIE reading support.  */
-
-/* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
-
-static void
-init_cu_die_reader (struct die_reader_specs *reader,
-		    struct dwarf2_cu *cu,
-		    struct dwarf2_section_info *section,
-		    struct dwo_file *dwo_file,
-		    struct abbrev_table *abbrev_table)
-{
-  gdb_assert (section->readin && section->buffer != NULL);
-  reader->abfd = get_section_bfd_owner (section);
-  reader->cu = cu;
-  reader->dwo_file = dwo_file;
-  reader->die_section = section;
-  reader->buffer = section->buffer;
-  reader->buffer_end = section->buffer + section->size;
-  reader->comp_dir = NULL;
-  reader->abbrev_table = abbrev_table;
-}
-
-/* Subroutine of init_cutu_and_read_dies to simplify it.
-   Read in the rest of a CU/TU top level DIE from DWO_UNIT.
-   There's just a lot of work to do, and init_cutu_and_read_dies is big enough
-   already.
-
-   STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
-   from it to the DIE in the DWO.  If NULL we are skipping the stub.
-   STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
-   from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
-   attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
-   STUB_COMP_DIR may be non-NULL.
-   *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
-   are filled in with the info of the DIE from the DWO file.
-   *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
-   from the dwo.  Since *RESULT_READER references this abbrev table, it must be
-   kept around for at least as long as *RESULT_READER.
-
-   The result is non-zero if a valid (non-dummy) DIE was found.  */
-
-static int
-read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
-			struct dwo_unit *dwo_unit,
-			struct die_info *stub_comp_unit_die,
-			const char *stub_comp_dir,
-			struct die_reader_specs *result_reader,
-			const gdb_byte **result_info_ptr,
-			struct die_info **result_comp_unit_die,
-			int *result_has_children,
-			abbrev_table_up *result_dwo_abbrev_table)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwarf2_cu *cu = this_cu->cu;
-  bfd *abfd;
-  const gdb_byte *begin_info_ptr, *info_ptr;
-  struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
-  int i,num_extra_attrs;
-  struct dwarf2_section_info *dwo_abbrev_section;
-  struct attribute *attr;
-  struct die_info *comp_unit_die;
-
-  /* At most one of these may be provided.  */
-  gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
-
-  /* These attributes aren't processed until later:
-     DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
-     DW_AT_comp_dir is used now, to find the DWO file, but it is also
-     referenced later.  However, these attributes are found in the stub
-     which we won't have later.  In order to not impose this complication
-     on the rest of the code, we read them here and copy them to the
-     DWO CU/TU die.  */
-
-  stmt_list = NULL;
-  low_pc = NULL;
-  high_pc = NULL;
-  ranges = NULL;
-  comp_dir = NULL;
-
-  if (stub_comp_unit_die != NULL)
-    {
-      /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
-	 DWO file.  */
-      if (! this_cu->is_debug_types)
-	stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
-      low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
-      high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
-      ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
-      comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
-
-      /* There should be a DW_AT_addr_base attribute here (if needed).
-	 We need the value before we can process DW_FORM_GNU_addr_index
-         or DW_FORM_addrx.  */
-      cu->addr_base = 0;
-      attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
-      if (attr != nullptr)
-	cu->addr_base = DW_UNSND (attr);
-
-      /* There should be a DW_AT_ranges_base attribute here (if needed).
-	 We need the value before we can process DW_AT_ranges.  */
-      cu->ranges_base = 0;
-      attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
-      if (attr != nullptr)
-	cu->ranges_base = DW_UNSND (attr);
-    }
-  else if (stub_comp_dir != NULL)
-    {
-      /* Reconstruct the comp_dir attribute to simplify the code below.  */
-      comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
-      comp_dir->name = DW_AT_comp_dir;
-      comp_dir->form = DW_FORM_string;
-      DW_STRING_IS_CANONICAL (comp_dir) = 0;
-      DW_STRING (comp_dir) = stub_comp_dir;
-    }
-
-  /* Set up for reading the DWO CU/TU.  */
-  cu->dwo_unit = dwo_unit;
-  dwarf2_section_info *section = dwo_unit->section;
-  dwarf2_read_section (objfile, section);
-  abfd = get_section_bfd_owner (section);
-  begin_info_ptr = info_ptr = (section->buffer
-			       + to_underlying (dwo_unit->sect_off));
-  dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
-
-  if (this_cu->is_debug_types)
-    {
-      struct signatured_type *sig_type = (struct signatured_type *) this_cu;
-
-      info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
-						&cu->header, section,
-						dwo_abbrev_section,
-						info_ptr, rcuh_kind::TYPE);
-      /* This is not an assert because it can be caused by bad debug info.  */
-      if (sig_type->signature != cu->header.signature)
-	{
-	  error (_("Dwarf Error: signature mismatch %s vs %s while reading"
-		   " TU at offset %s [in module %s]"),
-		 hex_string (sig_type->signature),
-		 hex_string (cu->header.signature),
-		 sect_offset_str (dwo_unit->sect_off),
-		 bfd_get_filename (abfd));
-	}
-      gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
-      /* For DWOs coming from DWP files, we don't know the CU length
-	 nor the type's offset in the TU until now.  */
-      dwo_unit->length = get_cu_length (&cu->header);
-      dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
-
-      /* Establish the type offset that can be used to lookup the type.
-	 For DWO files, we don't know it until now.  */
-      sig_type->type_offset_in_section
-	= dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
-    }
-  else
-    {
-      info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
-						&cu->header, section,
-						dwo_abbrev_section,
-						info_ptr, rcuh_kind::COMPILE);
-      gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
-      /* For DWOs coming from DWP files, we don't know the CU length
-	 until now.  */
-      dwo_unit->length = get_cu_length (&cu->header);
-    }
-
-  *result_dwo_abbrev_table
-    = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
-			       cu->header.abbrev_sect_off);
-  init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
-		      result_dwo_abbrev_table->get ());
-
-  /* Read in the die, but leave space to copy over the attributes
-     from the stub.  This has the benefit of simplifying the rest of
-     the code - all the work to maintain the illusion of a single
-     DW_TAG_{compile,type}_unit DIE is done here.  */
-  num_extra_attrs = ((stmt_list != NULL)
-		     + (low_pc != NULL)
-		     + (high_pc != NULL)
-		     + (ranges != NULL)
-		     + (comp_dir != NULL));
-  info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
-			      result_has_children, num_extra_attrs);
-
-  /* Copy over the attributes from the stub to the DIE we just read in.  */
-  comp_unit_die = *result_comp_unit_die;
-  i = comp_unit_die->num_attrs;
-  if (stmt_list != NULL)
-    comp_unit_die->attrs[i++] = *stmt_list;
-  if (low_pc != NULL)
-    comp_unit_die->attrs[i++] = *low_pc;
-  if (high_pc != NULL)
-    comp_unit_die->attrs[i++] = *high_pc;
-  if (ranges != NULL)
-    comp_unit_die->attrs[i++] = *ranges;
-  if (comp_dir != NULL)
-    comp_unit_die->attrs[i++] = *comp_dir;
-  comp_unit_die->num_attrs += num_extra_attrs;
-
-  if (dwarf_die_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog,
-			  "Read die from %s@0x%x of %s:\n",
-			  get_section_name (section),
-			  (unsigned) (begin_info_ptr - section->buffer),
-			  bfd_get_filename (abfd));
-      dump_die (comp_unit_die, dwarf_die_debug);
-    }
-
-  /* Save the comp_dir attribute.  If there is no DWP file then we'll read
-     TUs by skipping the stub and going directly to the entry in the DWO file.
-     However, skipping the stub means we won't get DW_AT_comp_dir, so we have
-     to get it via circuitous means.  Blech.  */
-  if (comp_dir != NULL)
-    result_reader->comp_dir = DW_STRING (comp_dir);
-
-  /* Skip dummy compilation units.  */
-  if (info_ptr >= begin_info_ptr + dwo_unit->length
-      || peek_abbrev_code (abfd, info_ptr) == 0)
-    return 0;
-
-  *result_info_ptr = info_ptr;
-  return 1;
-}
-
-/* Return the signature of the compile unit, if found. In DWARF 4 and before,
-   the signature is in the DW_AT_GNU_dwo_id attribute. In DWARF 5 and later, the
-   signature is part of the header.  */
-static gdb::optional<ULONGEST>
-lookup_dwo_id (struct dwarf2_cu *cu, struct die_info* comp_unit_die)
-{
-  if (cu->header.version >= 5)
-    return cu->header.signature;
-  struct attribute *attr;
-  attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
-  if (attr == nullptr)
-    return gdb::optional<ULONGEST> ();
-  return DW_UNSND (attr);
-}
-
-/* Subroutine of init_cutu_and_read_dies to simplify it.
-   Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
-   Returns NULL if the specified DWO unit cannot be found.  */
-
-static struct dwo_unit *
-lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
-		 struct die_info *comp_unit_die)
-{
-  struct dwarf2_cu *cu = this_cu->cu;
-  struct dwo_unit *dwo_unit;
-  const char *comp_dir, *dwo_name;
-
-  gdb_assert (cu != NULL);
-
-  /* Yeah, we look dwo_name up again, but it simplifies the code.  */
-  dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
-  comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
-
-  if (this_cu->is_debug_types)
-    {
-      struct signatured_type *sig_type;
-
-      /* Since this_cu is the first member of struct signatured_type,
-	 we can go from a pointer to one to a pointer to the other.  */
-      sig_type = (struct signatured_type *) this_cu;
-      dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
-    }
-  else
-    {
-      gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
-      if (!signature.has_value ())
-	error (_("Dwarf Error: missing dwo_id for dwo_name %s"
-		 " [in module %s]"),
-	       dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
-      dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
-				       *signature);
-    }
-
-  return dwo_unit;
-}
-
-/* Subroutine of init_cutu_and_read_dies to simplify it.
-   See it for a description of the parameters.
-   Read a TU directly from a DWO file, bypassing the stub.  */
-
-static void
-init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
-			   int use_existing_cu, int keep,
-			   die_reader_func_ftype *die_reader_func,
-			   void *data)
-{
-  std::unique_ptr<dwarf2_cu> new_cu;
-  struct signatured_type *sig_type;
-  struct die_reader_specs reader;
-  const gdb_byte *info_ptr;
-  struct die_info *comp_unit_die;
-  int has_children;
-  struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
-
-  /* Verify we can do the following downcast, and that we have the
-     data we need.  */
-  gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
-  sig_type = (struct signatured_type *) this_cu;
-  gdb_assert (sig_type->dwo_unit != NULL);
-
-  if (use_existing_cu && this_cu->cu != NULL)
-    {
-      gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
-      /* There's no need to do the rereading_dwo_cu handling that
-	 init_cutu_and_read_dies does since we don't read the stub.  */
-    }
-  else
-    {
-      /* If !use_existing_cu, this_cu->cu must be NULL.  */
-      gdb_assert (this_cu->cu == NULL);
-      new_cu.reset (new dwarf2_cu (this_cu));
-    }
-
-  /* A future optimization, if needed, would be to use an existing
-     abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
-     could share abbrev tables.  */
-
-  /* The abbreviation table used by READER, this must live at least as long as
-     READER.  */
-  abbrev_table_up dwo_abbrev_table;
-
-  if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
-			      NULL /* stub_comp_unit_die */,
-			      sig_type->dwo_unit->dwo_file->comp_dir,
-			      &reader, &info_ptr,
-			      &comp_unit_die, &has_children,
-			      &dwo_abbrev_table) == 0)
-    {
-      /* Dummy die.  */
-      return;
-    }
-
-  /* All the "real" work is done here.  */
-  die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
-
-  /* This duplicates the code in init_cutu_and_read_dies,
-     but the alternative is making the latter more complex.
-     This function is only for the special case of using DWO files directly:
-     no point in overly complicating the general case just to handle this.  */
-  if (new_cu != NULL && keep)
-    {
-      /* Link this CU into read_in_chain.  */
-      this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
-      dwarf2_per_objfile->read_in_chain = this_cu;
-      /* The chain owns it now.  */
-      new_cu.release ();
-    }
-}
-
-/* Initialize a CU (or TU) and read its DIEs.
-   If the CU defers to a DWO file, read the DWO file as well.
-
-   ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
-   Otherwise the table specified in the comp unit header is read in and used.
-   This is an optimization for when we already have the abbrev table.
-
-   If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
-   Otherwise, a new CU is allocated with xmalloc.
-
-   If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
-   read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
-
-   WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
-   linker) then DIE_READER_FUNC will not get called.  */
-
-static void
-init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
-			 struct abbrev_table *abbrev_table,
-			 int use_existing_cu, int keep,
-			 bool skip_partial,
-			 die_reader_func_ftype *die_reader_func,
-			 void *data)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwarf2_section_info *section = this_cu->section;
-  bfd *abfd = get_section_bfd_owner (section);
-  struct dwarf2_cu *cu;
-  const gdb_byte *begin_info_ptr, *info_ptr;
-  struct die_reader_specs reader;
-  struct die_info *comp_unit_die;
-  int has_children;
-  struct signatured_type *sig_type = NULL;
-  struct dwarf2_section_info *abbrev_section;
-  /* Non-zero if CU currently points to a DWO file and we need to
-     reread it.  When this happens we need to reread the skeleton die
-     before we can reread the DWO file (this only applies to CUs, not TUs).  */
-  int rereading_dwo_cu = 0;
-
-  if (dwarf_die_debug)
-    fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
-			this_cu->is_debug_types ? "type" : "comp",
-			sect_offset_str (this_cu->sect_off));
-
-  if (use_existing_cu)
-    gdb_assert (keep);
-
-  /* If we're reading a TU directly from a DWO file, including a virtual DWO
-     file (instead of going through the stub), short-circuit all of this.  */
-  if (this_cu->reading_dwo_directly)
-    {
-      /* Narrow down the scope of possibilities to have to understand.  */
-      gdb_assert (this_cu->is_debug_types);
-      gdb_assert (abbrev_table == NULL);
-      init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
-				 die_reader_func, data);
-      return;
-    }
-
-  /* This is cheap if the section is already read in.  */
-  dwarf2_read_section (objfile, section);
-
-  begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
-
-  abbrev_section = get_abbrev_section_for_cu (this_cu);
-
-  std::unique_ptr<dwarf2_cu> new_cu;
-  if (use_existing_cu && this_cu->cu != NULL)
-    {
-      cu = this_cu->cu;
-      /* If this CU is from a DWO file we need to start over, we need to
-	 refetch the attributes from the skeleton CU.
-	 This could be optimized by retrieving those attributes from when we
-	 were here the first time: the previous comp_unit_die was stored in
-	 comp_unit_obstack.  But there's no data yet that we need this
-	 optimization.  */
-      if (cu->dwo_unit != NULL)
-	rereading_dwo_cu = 1;
-    }
-  else
-    {
-      /* If !use_existing_cu, this_cu->cu must be NULL.  */
-      gdb_assert (this_cu->cu == NULL);
-      new_cu.reset (new dwarf2_cu (this_cu));
-      cu = new_cu.get ();
-    }
-
-  /* Get the header.  */
-  if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
-    {
-      /* We already have the header, there's no need to read it in again.  */
-      info_ptr += to_underlying (cu->header.first_die_cu_offset);
-    }
-  else
-    {
-      if (this_cu->is_debug_types)
-	{
-	  info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
-						    &cu->header, section,
-						    abbrev_section, info_ptr,
-						    rcuh_kind::TYPE);
-
-	  /* Since per_cu is the first member of struct signatured_type,
-	     we can go from a pointer to one to a pointer to the other.  */
-	  sig_type = (struct signatured_type *) this_cu;
-	  gdb_assert (sig_type->signature == cu->header.signature);
-	  gdb_assert (sig_type->type_offset_in_tu
-		      == cu->header.type_cu_offset_in_tu);
-	  gdb_assert (this_cu->sect_off == cu->header.sect_off);
-
-	  /* LENGTH has not been set yet for type units if we're
-	     using .gdb_index.  */
-	  this_cu->length = get_cu_length (&cu->header);
-
-	  /* Establish the type offset that can be used to lookup the type.  */
-	  sig_type->type_offset_in_section =
-	    this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
-
-	  this_cu->dwarf_version = cu->header.version;
-	}
-      else
-	{
-	  info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
-						    &cu->header, section,
-						    abbrev_section,
-						    info_ptr,
-						    rcuh_kind::COMPILE);
-
-	  gdb_assert (this_cu->sect_off == cu->header.sect_off);
-	  gdb_assert (this_cu->length == get_cu_length (&cu->header));
-	  this_cu->dwarf_version = cu->header.version;
-	}
-    }
-
-  /* Skip dummy compilation units.  */
-  if (info_ptr >= begin_info_ptr + this_cu->length
-      || peek_abbrev_code (abfd, info_ptr) == 0)
-    return;
-
-  /* If we don't have them yet, read the abbrevs for this compilation unit.
-     And if we need to read them now, make sure they're freed when we're
-     done (own the table through ABBREV_TABLE_HOLDER).  */
-  abbrev_table_up abbrev_table_holder;
-  if (abbrev_table != NULL)
-    gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
-  else
-    {
-      abbrev_table_holder
-	= abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
-				   cu->header.abbrev_sect_off);
-      abbrev_table = abbrev_table_holder.get ();
-    }
-
-  /* Read the top level CU/TU die.  */
-  init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
-  info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
-
-  if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
-    return;
-
-  /* If we are in a DWO stub, process it and then read in the "real" CU/TU
-     from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
-     table from the DWO file and pass the ownership over to us.  It will be
-     referenced from READER, so we must make sure to free it after we're done
-     with READER.
-
-     Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
-     DWO CU, that this test will fail (the attribute will not be present).  */
-  const char *dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
-  abbrev_table_up dwo_abbrev_table;
-  if (dwo_name != nullptr)
-    {
-      struct dwo_unit *dwo_unit;
-      struct die_info *dwo_comp_unit_die;
-
-      if (has_children)
-	{
-	  complaint (_("compilation unit with DW_AT_GNU_dwo_name"
-		       " has children (offset %s) [in module %s]"),
-		     sect_offset_str (this_cu->sect_off),
-		     bfd_get_filename (abfd));
-	}
-      dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
-      if (dwo_unit != NULL)
-	{
-	  if (read_cutu_die_from_dwo (this_cu, dwo_unit,
-				      comp_unit_die, NULL,
-				      &reader, &info_ptr,
-				      &dwo_comp_unit_die, &has_children,
-				      &dwo_abbrev_table) == 0)
-	    {
-	      /* Dummy die.  */
-	      return;
-	    }
-	  comp_unit_die = dwo_comp_unit_die;
-	}
-      else
-	{
-	  /* Yikes, we couldn't find the rest of the DIE, we only have
-	     the stub.  A complaint has already been logged.  There's
-	     not much more we can do except pass on the stub DIE to
-	     die_reader_func.  We don't want to throw an error on bad
-	     debug info.  */
-	}
-    }
-
-  /* All of the above is setup for this call.  Yikes.  */
-  die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
-
-  /* Done, clean up.  */
-  if (new_cu != NULL && keep)
-    {
-      /* Link this CU into read_in_chain.  */
-      this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
-      dwarf2_per_objfile->read_in_chain = this_cu;
-      /* The chain owns it now.  */
-      new_cu.release ();
-    }
-}
-
-/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
-   DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
-   to have already done the lookup to find the DWO file).
-
-   The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
-   THIS_CU->is_debug_types, but nothing else.
-
-   We fill in THIS_CU->length.
-
-   WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
-   linker) then DIE_READER_FUNC will not get called.
-
-   THIS_CU->cu is always freed when done.
-   This is done in order to not leave THIS_CU->cu in a state where we have
-   to care whether it refers to the "main" CU or the DWO CU.  */
-
-static void
-init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
-				   struct dwo_file *dwo_file,
-				   die_reader_func_ftype *die_reader_func,
-				   void *data)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwarf2_section_info *section = this_cu->section;
-  bfd *abfd = get_section_bfd_owner (section);
-  struct dwarf2_section_info *abbrev_section;
-  const gdb_byte *begin_info_ptr, *info_ptr;
-  struct die_reader_specs reader;
-  struct die_info *comp_unit_die;
-  int has_children;
-
-  if (dwarf_die_debug)
-    fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
-			this_cu->is_debug_types ? "type" : "comp",
-			sect_offset_str (this_cu->sect_off));
-
-  gdb_assert (this_cu->cu == NULL);
-
-  abbrev_section = (dwo_file != NULL
-		    ? &dwo_file->sections.abbrev
-		    : get_abbrev_section_for_cu (this_cu));
-
-  /* This is cheap if the section is already read in.  */
-  dwarf2_read_section (objfile, section);
-
-  struct dwarf2_cu cu (this_cu);
-
-  begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
-  info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
-					    &cu.header, section,
-					    abbrev_section, info_ptr,
-					    (this_cu->is_debug_types
-					     ? rcuh_kind::TYPE
-					     : rcuh_kind::COMPILE));
-
-  this_cu->length = get_cu_length (&cu.header);
-
-  /* Skip dummy compilation units.  */
-  if (info_ptr >= begin_info_ptr + this_cu->length
-      || peek_abbrev_code (abfd, info_ptr) == 0)
-    return;
-
-  abbrev_table_up abbrev_table
-    = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
-			       cu.header.abbrev_sect_off);
-
-  init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
-  info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
-
-  die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
-}
-
-/* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
-   does not lookup the specified DWO file.
-   This cannot be used to read DWO files.
-
-   THIS_CU->cu is always freed when done.
-   This is done in order to not leave THIS_CU->cu in a state where we have
-   to care whether it refers to the "main" CU or the DWO CU.
-   We can revisit this if the data shows there's a performance issue.  */
-
-static void
-init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
-				die_reader_func_ftype *die_reader_func,
-				void *data)
-{
-  init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
-}
-
-/* Type Unit Groups.
-
-   Type Unit Groups are a way to collapse the set of all TUs (type units) into
-   a more manageable set.  The grouping is done by DW_AT_stmt_list entry
-   so that all types coming from the same compilation (.o file) are grouped
-   together.  A future step could be to put the types in the same symtab as
-   the CU the types ultimately came from.  */
-
-static hashval_t
-hash_type_unit_group (const void *item)
-{
-  const struct type_unit_group *tu_group
-    = (const struct type_unit_group *) item;
-
-  return hash_stmt_list_entry (&tu_group->hash);
-}
-
-static int
-eq_type_unit_group (const void *item_lhs, const void *item_rhs)
-{
-  const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
-  const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
-
-  return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
-}
-
-/* Allocate a hash table for type unit groups.  */
-
-static htab_t
-allocate_type_unit_groups_table (struct objfile *objfile)
-{
-  return htab_create_alloc_ex (3,
-			       hash_type_unit_group,
-			       eq_type_unit_group,
-			       NULL,
-			       &objfile->objfile_obstack,
-			       hashtab_obstack_allocate,
-			       dummy_obstack_deallocate);
-}
-
-/* Type units that don't have DW_AT_stmt_list are grouped into their own
-   partial symtabs.  We combine several TUs per psymtab to not let the size
-   of any one psymtab grow too big.  */
-#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
-#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
-
-/* Helper routine for get_type_unit_group.
-   Create the type_unit_group object used to hold one or more TUs.  */
-
-static struct type_unit_group *
-create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwarf2_per_cu_data *per_cu;
-  struct type_unit_group *tu_group;
-
-  tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
-			     struct type_unit_group);
-  per_cu = &tu_group->per_cu;
-  per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
-
-  if (dwarf2_per_objfile->using_index)
-    {
-      per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
-					struct dwarf2_per_cu_quick_data);
-    }
-  else
-    {
-      unsigned int line_offset = to_underlying (line_offset_struct);
-      struct partial_symtab *pst;
-      std::string name;
-
-      /* Give the symtab a useful name for debug purposes.  */
-      if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
-	name = string_printf ("<type_units_%d>",
-			      (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
-      else
-	name = string_printf ("<type_units_at_0x%x>", line_offset);
-
-      pst = create_partial_symtab (per_cu, name.c_str ());
-      pst->anonymous = 1;
-    }
-
-  tu_group->hash.dwo_unit = cu->dwo_unit;
-  tu_group->hash.line_sect_off = line_offset_struct;
-
-  return tu_group;
-}
-
-/* Look up the type_unit_group for type unit CU, and create it if necessary.
-   STMT_LIST is a DW_AT_stmt_list attribute.  */
-
-static struct type_unit_group *
-get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
-  struct type_unit_group *tu_group;
-  void **slot;
-  unsigned int line_offset;
-  struct type_unit_group type_unit_group_for_lookup;
-
-  if (dwarf2_per_objfile->type_unit_groups == NULL)
-    {
-      dwarf2_per_objfile->type_unit_groups =
-	allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
-    }
-
-  /* Do we need to create a new group, or can we use an existing one?  */
-
-  if (stmt_list)
-    {
-      line_offset = DW_UNSND (stmt_list);
-      ++tu_stats->nr_symtab_sharers;
-    }
-  else
-    {
-      /* Ugh, no stmt_list.  Rare, but we have to handle it.
-	 We can do various things here like create one group per TU or
-	 spread them over multiple groups to split up the expansion work.
-	 To avoid worst case scenarios (too many groups or too large groups)
-	 we, umm, group them in bunches.  */
-      line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
-		     | (tu_stats->nr_stmt_less_type_units
-			/ NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
-      ++tu_stats->nr_stmt_less_type_units;
-    }
-
-  type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
-  type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
-  slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
-			 &type_unit_group_for_lookup, INSERT);
-  if (*slot != NULL)
-    {
-      tu_group = (struct type_unit_group *) *slot;
-      gdb_assert (tu_group != NULL);
-    }
-  else
-    {
-      sect_offset line_offset_struct = (sect_offset) line_offset;
-      tu_group = create_type_unit_group (cu, line_offset_struct);
-      *slot = tu_group;
-      ++tu_stats->nr_symtabs;
-    }
-
-  return tu_group;
-}
-
-/* Partial symbol tables.  */
-
-/* Create a psymtab named NAME and assign it to PER_CU.
-
-   The caller must fill in the following details:
-   dirname, textlow, texthigh.  */
-
-static struct partial_symtab *
-create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
-{
-  struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
-  struct partial_symtab *pst;
-
-  pst = start_psymtab_common (objfile, name, 0);
-
-  pst->psymtabs_addrmap_supported = 1;
-
-  /* This is the glue that links PST into GDB's symbol API.  */
-  pst->read_symtab_private = per_cu;
-  pst->read_symtab = dwarf2_read_symtab;
-  per_cu->v.psymtab = pst;
-
-  return pst;
-}
-
-/* The DATA object passed to process_psymtab_comp_unit_reader has this
-   type.  */
-
-struct process_psymtab_comp_unit_data
-{
-  /* True if we are reading a DW_TAG_partial_unit.  */
-
-  int want_partial_unit;
-
-  /* The "pretend" language that is used if the CU doesn't declare a
-     language.  */
-
-  enum language pretend_language;
-};
-
-/* die_reader_func for process_psymtab_comp_unit.  */
-
-static void
-process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
-				  const gdb_byte *info_ptr,
-				  struct die_info *comp_unit_die,
-				  int has_children,
-				  void *data)
-{
-  struct dwarf2_cu *cu = reader->cu;
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  struct dwarf2_per_cu_data *per_cu = cu->per_cu;
-  CORE_ADDR baseaddr;
-  CORE_ADDR best_lowpc = 0, best_highpc = 0;
-  struct partial_symtab *pst;
-  enum pc_bounds_kind cu_bounds_kind;
-  const char *filename;
-  struct process_psymtab_comp_unit_data *info
-    = (struct process_psymtab_comp_unit_data *) data;
-
-  if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
-    return;
-
-  gdb_assert (! per_cu->is_debug_types);
-
-  prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
-
-  /* Allocate a new partial symbol table structure.  */
-  filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
-  if (filename == NULL)
-    filename = "";
-
-  pst = create_partial_symtab (per_cu, filename);
-
-  /* This must be done before calling dwarf2_build_include_psymtabs.  */
-  pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  dwarf2_find_base_address (comp_unit_die, cu);
-
-  /* Possibly set the default values of LOWPC and HIGHPC from
-     `DW_AT_ranges'.  */
-  cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
-					 &best_highpc, cu, pst);
-  if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
-    {
-      CORE_ADDR low
-	= (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
-	   - baseaddr);
-      CORE_ADDR high
-	= (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
-	   - baseaddr - 1);
-      /* Store the contiguous range if it is not empty; it can be
-	 empty for CUs with no code.  */
-      addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
-			 low, high, pst);
-    }
-
-  /* Check if comp unit has_children.
-     If so, read the rest of the partial symbols from this comp unit.
-     If not, there's no more debug_info for this comp unit.  */
-  if (has_children)
-    {
-      struct partial_die_info *first_die;
-      CORE_ADDR lowpc, highpc;
-
-      lowpc = ((CORE_ADDR) -1);
-      highpc = ((CORE_ADDR) 0);
-
-      first_die = load_partial_dies (reader, info_ptr, 1);
-
-      scan_partial_symbols (first_die, &lowpc, &highpc,
-			    cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
-
-      /* If we didn't find a lowpc, set it to highpc to avoid
-	 complaints from `maint check'.	 */
-      if (lowpc == ((CORE_ADDR) -1))
-	lowpc = highpc;
-
-      /* If the compilation unit didn't have an explicit address range,
-	 then use the information extracted from its child dies.  */
-      if (cu_bounds_kind <= PC_BOUNDS_INVALID)
-	{
-	  best_lowpc = lowpc;
-	  best_highpc = highpc;
-	}
-    }
-  pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
-						 best_lowpc + baseaddr)
-		     - baseaddr);
-  pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
-						  best_highpc + baseaddr)
-		      - baseaddr);
-
-  end_psymtab_common (objfile, pst);
-
-  if (!cu->per_cu->imported_symtabs_empty ())
-    {
-      int i;
-      int len = cu->per_cu->imported_symtabs_size ();
-
-      /* Fill in 'dependencies' here; we fill in 'users' in a
-	 post-pass.  */
-      pst->number_of_dependencies = len;
-      pst->dependencies
-	= objfile->partial_symtabs->allocate_dependencies (len);
-      for (i = 0; i < len; ++i)
-	{
-	  pst->dependencies[i]
-	    = cu->per_cu->imported_symtabs->at (i)->v.psymtab;
-	}
-
-      cu->per_cu->imported_symtabs_free ();
-    }
-
-  /* Get the list of files included in the current compilation unit,
-     and build a psymtab for each of them.  */
-  dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
-
-  if (dwarf_read_debug)
-    fprintf_unfiltered (gdb_stdlog,
-			"Psymtab for %s unit @%s: %s - %s"
-			", %d global, %d static syms\n",
-			per_cu->is_debug_types ? "type" : "comp",
-			sect_offset_str (per_cu->sect_off),
-			paddress (gdbarch, pst->text_low (objfile)),
-			paddress (gdbarch, pst->text_high (objfile)),
-			pst->n_global_syms, pst->n_static_syms);
-}
-
-/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
-   Process compilation unit THIS_CU for a psymtab.  */
-
-static void
-process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
-			   int want_partial_unit,
-			   enum language pretend_language)
-{
-  /* If this compilation unit was already read in, free the
-     cached copy in order to read it in again.	This is
-     necessary because we skipped some symbols when we first
-     read in the compilation unit (see load_partial_dies).
-     This problem could be avoided, but the benefit is unclear.  */
-  if (this_cu->cu != NULL)
-    free_one_cached_comp_unit (this_cu);
-
-  if (this_cu->is_debug_types)
-    init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
-			     build_type_psymtabs_reader, NULL);
-  else
-    {
-      process_psymtab_comp_unit_data info;
-      info.want_partial_unit = want_partial_unit;
-      info.pretend_language = pretend_language;
-      init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
-			       process_psymtab_comp_unit_reader, &info);
-    }
-
-  /* Age out any secondary CUs.  */
-  age_cached_comp_units (this_cu->dwarf2_per_objfile);
-}
-
-/* Reader function for build_type_psymtabs.  */
-
-static void
-build_type_psymtabs_reader (const struct die_reader_specs *reader,
-			    const gdb_byte *info_ptr,
-			    struct die_info *type_unit_die,
-			    int has_children,
-			    void *data)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = reader->cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwarf2_cu *cu = reader->cu;
-  struct dwarf2_per_cu_data *per_cu = cu->per_cu;
-  struct signatured_type *sig_type;
-  struct type_unit_group *tu_group;
-  struct attribute *attr;
-  struct partial_die_info *first_die;
-  CORE_ADDR lowpc, highpc;
-  struct partial_symtab *pst;
-
-  gdb_assert (data == NULL);
-  gdb_assert (per_cu->is_debug_types);
-  sig_type = (struct signatured_type *) per_cu;
-
-  if (! has_children)
-    return;
-
-  attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
-  tu_group = get_type_unit_group (cu, attr);
-
-  if (tu_group->tus == nullptr)
-    tu_group->tus = new std::vector<signatured_type *>;
-  tu_group->tus->push_back (sig_type);
-
-  prepare_one_comp_unit (cu, type_unit_die, language_minimal);
-  pst = create_partial_symtab (per_cu, "");
-  pst->anonymous = 1;
-
-  first_die = load_partial_dies (reader, info_ptr, 1);
-
-  lowpc = (CORE_ADDR) -1;
-  highpc = (CORE_ADDR) 0;
-  scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
-
-  end_psymtab_common (objfile, pst);
-}
-
-/* Struct used to sort TUs by their abbreviation table offset.  */
-
-struct tu_abbrev_offset
-{
-  tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
-  : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
-  {}
-
-  signatured_type *sig_type;
-  sect_offset abbrev_offset;
-};
-
-/* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
-
-static bool
-sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
-			  const struct tu_abbrev_offset &b)
-{
-  return a.abbrev_offset < b.abbrev_offset;
-}
-
-/* Efficiently read all the type units.
-   This does the bulk of the work for build_type_psymtabs.
-
-   The efficiency is because we sort TUs by the abbrev table they use and
-   only read each abbrev table once.  In one program there are 200K TUs
-   sharing 8K abbrev tables.
-
-   The main purpose of this function is to support building the
-   dwarf2_per_objfile->type_unit_groups table.
-   TUs typically share the DW_AT_stmt_list of the CU they came from, so we
-   can collapse the search space by grouping them by stmt_list.
-   The savings can be significant, in the same program from above the 200K TUs
-   share 8K stmt_list tables.
-
-   FUNC is expected to call get_type_unit_group, which will create the
-   struct type_unit_group if necessary and add it to
-   dwarf2_per_objfile->type_unit_groups.  */
-
-static void
-build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
-  abbrev_table_up abbrev_table;
-  sect_offset abbrev_offset;
-
-  /* It's up to the caller to not call us multiple times.  */
-  gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
-
-  if (dwarf2_per_objfile->all_type_units.empty ())
-    return;
-
-  /* TUs typically share abbrev tables, and there can be way more TUs than
-     abbrev tables.  Sort by abbrev table to reduce the number of times we
-     read each abbrev table in.
-     Alternatives are to punt or to maintain a cache of abbrev tables.
-     This is simpler and efficient enough for now.
-
-     Later we group TUs by their DW_AT_stmt_list value (as this defines the
-     symtab to use).  Typically TUs with the same abbrev offset have the same
-     stmt_list value too so in practice this should work well.
-
-     The basic algorithm here is:
-
-      sort TUs by abbrev table
-      for each TU with same abbrev table:
-	read abbrev table if first user
-	read TU top level DIE
-	  [IWBN if DWO skeletons had DW_AT_stmt_list]
-	call FUNC  */
-
-  if (dwarf_read_debug)
-    fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
-
-  /* Sort in a separate table to maintain the order of all_type_units
-     for .gdb_index: TU indices directly index all_type_units.  */
-  std::vector<tu_abbrev_offset> sorted_by_abbrev;
-  sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
-
-  for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
-    sorted_by_abbrev.emplace_back
-      (sig_type, read_abbrev_offset (dwarf2_per_objfile,
-				     sig_type->per_cu.section,
-				     sig_type->per_cu.sect_off));
-
-  std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
-	     sort_tu_by_abbrev_offset);
-
-  abbrev_offset = (sect_offset) ~(unsigned) 0;
-
-  for (const tu_abbrev_offset &tu : sorted_by_abbrev)
-    {
-      /* Switch to the next abbrev table if necessary.  */
-      if (abbrev_table == NULL
-	  || tu.abbrev_offset != abbrev_offset)
-	{
-	  abbrev_offset = tu.abbrev_offset;
-	  abbrev_table =
-	    abbrev_table_read_table (dwarf2_per_objfile,
-				     &dwarf2_per_objfile->abbrev,
-				     abbrev_offset);
-	  ++tu_stats->nr_uniq_abbrev_tables;
-	}
-
-      init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
-			       0, 0, false, build_type_psymtabs_reader, NULL);
-    }
-}
-
-/* Print collected type unit statistics.  */
-
-static void
-print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
-
-  fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
-  fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
-		      dwarf2_per_objfile->all_type_units.size ());
-  fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
-		      tu_stats->nr_uniq_abbrev_tables);
-  fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
-		      tu_stats->nr_symtabs);
-  fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
-		      tu_stats->nr_symtab_sharers);
-  fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
-		      tu_stats->nr_stmt_less_type_units);
-  fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
-		      tu_stats->nr_all_type_units_reallocs);
-}
-
-/* Traversal function for build_type_psymtabs.  */
-
-static int
-build_type_psymtab_dependencies (void **slot, void *info)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = (struct dwarf2_per_objfile *) info;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
-  struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
-  struct partial_symtab *pst = per_cu->v.psymtab;
-  int len = (tu_group->tus == nullptr) ? 0 : tu_group->tus->size ();
-  int i;
-
-  gdb_assert (len > 0);
-  gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
-
-  pst->number_of_dependencies = len;
-  pst->dependencies = objfile->partial_symtabs->allocate_dependencies (len);
-  for (i = 0; i < len; ++i)
-    {
-      struct signatured_type *iter = tu_group->tus->at (i);
-      gdb_assert (iter->per_cu.is_debug_types);
-      pst->dependencies[i] = iter->per_cu.v.psymtab;
-      iter->type_unit_group = tu_group;
-    }
-
-  delete tu_group->tus;
-  tu_group->tus = nullptr;
-
-  return 1;
-}
-
-/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
-   Build partial symbol tables for the .debug_types comp-units.  */
-
-static void
-build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  if (! create_all_type_units (dwarf2_per_objfile))
-    return;
-
-  build_type_psymtabs_1 (dwarf2_per_objfile);
-}
-
-/* Traversal function for process_skeletonless_type_unit.
-   Read a TU in a DWO file and build partial symbols for it.  */
-
-static int
-process_skeletonless_type_unit (void **slot, void *info)
-{
-  struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = (struct dwarf2_per_objfile *) info;
-  struct signatured_type find_entry, *entry;
-
-  /* If this TU doesn't exist in the global table, add it and read it in.  */
-
-  if (dwarf2_per_objfile->signatured_types == NULL)
-    {
-      dwarf2_per_objfile->signatured_types
-	= allocate_signatured_type_table (dwarf2_per_objfile->objfile);
-    }
-
-  find_entry.signature = dwo_unit->signature;
-  slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
-			 INSERT);
-  /* If we've already seen this type there's nothing to do.  What's happening
-     is we're doing our own version of comdat-folding here.  */
-  if (*slot != NULL)
-    return 1;
-
-  /* This does the job that create_all_type_units would have done for
-     this TU.  */
-  entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
-  fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
-  *slot = entry;
-
-  /* This does the job that build_type_psymtabs_1 would have done.  */
-  init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
-			   build_type_psymtabs_reader, NULL);
-
-  return 1;
-}
-
-/* Traversal function for process_skeletonless_type_units.  */
-
-static int
-process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
-{
-  struct dwo_file *dwo_file = (struct dwo_file *) *slot;
-
-  if (dwo_file->tus != NULL)
-    {
-      htab_traverse_noresize (dwo_file->tus,
-			      process_skeletonless_type_unit, info);
-    }
-
-  return 1;
-}
-
-/* Scan all TUs of DWO files, verifying we've processed them.
-   This is needed in case a TU was emitted without its skeleton.
-   Note: This can't be done until we know what all the DWO files are.  */
-
-static void
-process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
-  if (get_dwp_file (dwarf2_per_objfile) == NULL
-      && dwarf2_per_objfile->dwo_files != NULL)
-    {
-      htab_traverse_noresize (dwarf2_per_objfile->dwo_files.get (),
-			      process_dwo_file_for_skeletonless_type_units,
-			      dwarf2_per_objfile);
-    }
-}
-
-/* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
-
-static void
-set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-    {
-      struct partial_symtab *pst = per_cu->v.psymtab;
-
-      if (pst == NULL)
-	continue;
-
-      for (int j = 0; j < pst->number_of_dependencies; ++j)
-	{
-	  /* Set the 'user' field only if it is not already set.  */
-	  if (pst->dependencies[j]->user == NULL)
-	    pst->dependencies[j]->user = pst;
-	}
-    }
-}
-
-/* Build the partial symbol table by doing a quick pass through the
-   .debug_info and .debug_abbrev sections.  */
-
-static void
-dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-  if (dwarf_read_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
-			  objfile_name (objfile));
-    }
-
-  dwarf2_per_objfile->reading_partial_symbols = 1;
-
-  dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
-
-  /* Any cached compilation units will be linked by the per-objfile
-     read_in_chain.  Make sure to free them when we're done.  */
-  free_cached_comp_units freer (dwarf2_per_objfile);
-
-  build_type_psymtabs (dwarf2_per_objfile);
-
-  create_all_comp_units (dwarf2_per_objfile);
-
-  /* Create a temporary address map on a temporary obstack.  We later
-     copy this to the final obstack.  */
-  auto_obstack temp_obstack;
-
-  scoped_restore save_psymtabs_addrmap
-    = make_scoped_restore (&objfile->partial_symtabs->psymtabs_addrmap,
-			   addrmap_create_mutable (&temp_obstack));
-
-  for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-    process_psymtab_comp_unit (per_cu, 0, language_minimal);
-
-  /* This has to wait until we read the CUs, we need the list of DWOs.  */
-  process_skeletonless_type_units (dwarf2_per_objfile);
-
-  /* Now that all TUs have been processed we can fill in the dependencies.  */
-  if (dwarf2_per_objfile->type_unit_groups != NULL)
-    {
-      htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
-			      build_type_psymtab_dependencies, dwarf2_per_objfile);
-    }
-
-  if (dwarf_read_debug)
-    print_tu_stats (dwarf2_per_objfile);
-
-  set_partial_user (dwarf2_per_objfile);
-
-  objfile->partial_symtabs->psymtabs_addrmap
-    = addrmap_create_fixed (objfile->partial_symtabs->psymtabs_addrmap,
-			    objfile->partial_symtabs->obstack ());
-  /* At this point we want to keep the address map.  */
-  save_psymtabs_addrmap.release ();
-
-  if (dwarf_read_debug)
-    fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
-			objfile_name (objfile));
-}
-
-/* die_reader_func for load_partial_comp_unit.  */
-
-static void
-load_partial_comp_unit_reader (const struct die_reader_specs *reader,
-			       const gdb_byte *info_ptr,
-			       struct die_info *comp_unit_die,
-			       int has_children,
-			       void *data)
-{
-  struct dwarf2_cu *cu = reader->cu;
-
-  prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
-
-  /* Check if comp unit has_children.
-     If so, read the rest of the partial symbols from this comp unit.
-     If not, there's no more debug_info for this comp unit.  */
-  if (has_children)
-    load_partial_dies (reader, info_ptr, 0);
-}
-
-/* Load the partial DIEs for a secondary CU into memory.
-   This is also used when rereading a primary CU with load_all_dies.  */
-
-static void
-load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
-{
-  init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
-			   load_partial_comp_unit_reader, NULL);
-}
-
-static void
-read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			      struct dwarf2_section_info *section,
-			      struct dwarf2_section_info *abbrev_section,
-			      unsigned int is_dwz)
-{
-  const gdb_byte *info_ptr;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-  if (dwarf_read_debug)
-    fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
-			get_section_name (section),
-			get_section_file_name (section));
-
-  dwarf2_read_section (objfile, section);
-
-  info_ptr = section->buffer;
-
-  while (info_ptr < section->buffer + section->size)
-    {
-      struct dwarf2_per_cu_data *this_cu;
-
-      sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
-
-      comp_unit_head cu_header;
-      read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
-				     abbrev_section, info_ptr,
-				     rcuh_kind::COMPILE);
-
-      /* Save the compilation unit for later lookup.  */
-      if (cu_header.unit_type != DW_UT_type)
-	{
-	  this_cu = XOBNEW (&objfile->objfile_obstack,
-			    struct dwarf2_per_cu_data);
-	  memset (this_cu, 0, sizeof (*this_cu));
-	}
-      else
-	{
-	  auto sig_type = XOBNEW (&objfile->objfile_obstack,
-				  struct signatured_type);
-	  memset (sig_type, 0, sizeof (*sig_type));
-	  sig_type->signature = cu_header.signature;
-	  sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
-	  this_cu = &sig_type->per_cu;
-	}
-      this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
-      this_cu->sect_off = sect_off;
-      this_cu->length = cu_header.length + cu_header.initial_length_size;
-      this_cu->is_dwz = is_dwz;
-      this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
-      this_cu->section = section;
-
-      dwarf2_per_objfile->all_comp_units.push_back (this_cu);
-
-      info_ptr = info_ptr + this_cu->length;
-    }
-}
-
-/* Create a list of all compilation units in OBJFILE.
-   This is only done for -readnow and building partial symtabs.  */
-
-static void
-create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
-  read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
-				&dwarf2_per_objfile->abbrev, 0);
-
-  dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
-  if (dwz != NULL)
-    read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
-				  1);
-}
-
-/* Process all loaded DIEs for compilation unit CU, starting at
-   FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
-   unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
-   DW_AT_ranges).  See the comments of add_partial_subprogram on how
-   SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
-
-static void
-scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
-		      CORE_ADDR *highpc, int set_addrmap,
-		      struct dwarf2_cu *cu)
-{
-  struct partial_die_info *pdi;
-
-  /* Now, march along the PDI's, descending into ones which have
-     interesting children but skipping the children of the other ones,
-     until we reach the end of the compilation unit.  */
-
-  pdi = first_die;
-
-  while (pdi != NULL)
-    {
-      pdi->fixup (cu);
-
-      /* Anonymous namespaces or modules have no name but have interesting
-	 children, so we need to look at them.  Ditto for anonymous
-	 enums.  */
-
-      if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
-	  || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
-	  || pdi->tag == DW_TAG_imported_unit
-	  || pdi->tag == DW_TAG_inlined_subroutine)
-	{
-	  switch (pdi->tag)
-	    {
-	    case DW_TAG_subprogram:
-	    case DW_TAG_inlined_subroutine:
-	      add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
-	      break;
-	    case DW_TAG_constant:
-	    case DW_TAG_variable:
-	    case DW_TAG_typedef:
-	    case DW_TAG_union_type:
-	      if (!pdi->is_declaration)
-		{
-		  add_partial_symbol (pdi, cu);
-		}
-	      break;
-	    case DW_TAG_class_type:
-	    case DW_TAG_interface_type:
-	    case DW_TAG_structure_type:
-	      if (!pdi->is_declaration)
-		{
-		  add_partial_symbol (pdi, cu);
-		}
-	      if ((cu->language == language_rust
-		   || cu->language == language_cplus) && pdi->has_children)
-		scan_partial_symbols (pdi->die_child, lowpc, highpc,
-				      set_addrmap, cu);
-	      break;
-	    case DW_TAG_enumeration_type:
-	      if (!pdi->is_declaration)
-		add_partial_enumeration (pdi, cu);
-	      break;
-	    case DW_TAG_base_type:
-            case DW_TAG_subrange_type:
-	      /* File scope base type definitions are added to the partial
-	         symbol table.  */
-	      add_partial_symbol (pdi, cu);
-	      break;
-	    case DW_TAG_namespace:
-	      add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
-	      break;
-	    case DW_TAG_module:
-	      if (!pdi->is_declaration)
-		add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
-	      break;
-	    case DW_TAG_imported_unit:
-	      {
-		struct dwarf2_per_cu_data *per_cu;
-
-		/* For now we don't handle imported units in type units.  */
-		if (cu->per_cu->is_debug_types)
-		  {
-		    error (_("Dwarf Error: DW_TAG_imported_unit is not"
-			     " supported in type units [in module %s]"),
-			   objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-		  }
-
-		per_cu = dwarf2_find_containing_comp_unit
-			   (pdi->d.sect_off, pdi->is_dwz,
-			    cu->per_cu->dwarf2_per_objfile);
-
-		/* Go read the partial unit, if needed.  */
-		if (per_cu->v.psymtab == NULL)
-		  process_psymtab_comp_unit (per_cu, 1, cu->language);
-
-		cu->per_cu->imported_symtabs_push (per_cu);
-	      }
-	      break;
-	    case DW_TAG_imported_declaration:
-	      add_partial_symbol (pdi, cu);
-	      break;
-	    default:
-	      break;
-	    }
-	}
-
-      /* If the die has a sibling, skip to the sibling.  */
-
-      pdi = pdi->die_sibling;
-    }
-}
-
-/* Functions used to compute the fully scoped name of a partial DIE.
-
-   Normally, this is simple.  For C++, the parent DIE's fully scoped
-   name is concatenated with "::" and the partial DIE's name.
-   Enumerators are an exception; they use the scope of their parent
-   enumeration type, i.e. the name of the enumeration type is not
-   prepended to the enumerator.
-
-   There are two complexities.  One is DW_AT_specification; in this
-   case "parent" means the parent of the target of the specification,
-   instead of the direct parent of the DIE.  The other is compilers
-   which do not emit DW_TAG_namespace; in this case we try to guess
-   the fully qualified name of structure types from their members'
-   linkage names.  This must be done using the DIE's children rather
-   than the children of any DW_AT_specification target.  We only need
-   to do this for structures at the top level, i.e. if the target of
-   any DW_AT_specification (if any; otherwise the DIE itself) does not
-   have a parent.  */
-
-/* Compute the scope prefix associated with PDI's parent, in
-   compilation unit CU.  The result will be allocated on CU's
-   comp_unit_obstack, or a copy of the already allocated PDI->NAME
-   field.  NULL is returned if no prefix is necessary.  */
-static const char *
-partial_die_parent_scope (struct partial_die_info *pdi,
-			  struct dwarf2_cu *cu)
-{
-  const char *grandparent_scope;
-  struct partial_die_info *parent, *real_pdi;
-
-  /* We need to look at our parent DIE; if we have a DW_AT_specification,
-     then this means the parent of the specification DIE.  */
-
-  real_pdi = pdi;
-  while (real_pdi->has_specification)
-    {
-      auto res = find_partial_die (real_pdi->spec_offset,
-				   real_pdi->spec_is_dwz, cu);
-      real_pdi = res.pdi;
-      cu = res.cu;
-    }
-
-  parent = real_pdi->die_parent;
-  if (parent == NULL)
-    return NULL;
-
-  if (parent->scope_set)
-    return parent->scope;
-
-  parent->fixup (cu);
-
-  grandparent_scope = partial_die_parent_scope (parent, cu);
-
-  /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
-     DW_TAG_namespace DIEs with a name of "::" for the global namespace.
-     Work around this problem here.  */
-  if (cu->language == language_cplus
-      && parent->tag == DW_TAG_namespace
-      && strcmp (parent->name, "::") == 0
-      && grandparent_scope == NULL)
-    {
-      parent->scope = NULL;
-      parent->scope_set = 1;
-      return NULL;
-    }
-
-  /* Nested subroutines in Fortran get a prefix.  */
-  if (pdi->tag == DW_TAG_enumerator)
-    /* Enumerators should not get the name of the enumeration as a prefix.  */
-    parent->scope = grandparent_scope;
-  else if (parent->tag == DW_TAG_namespace
-      || parent->tag == DW_TAG_module
-      || parent->tag == DW_TAG_structure_type
-      || parent->tag == DW_TAG_class_type
-      || parent->tag == DW_TAG_interface_type
-      || parent->tag == DW_TAG_union_type
-      || parent->tag == DW_TAG_enumeration_type
-      || (cu->language == language_fortran
-	  && parent->tag == DW_TAG_subprogram
-	  && pdi->tag == DW_TAG_subprogram))
-    {
-      if (grandparent_scope == NULL)
-	parent->scope = parent->name;
-      else
-	parent->scope = typename_concat (&cu->comp_unit_obstack,
-					 grandparent_scope,
-					 parent->name, 0, cu);
-    }
-  else
-    {
-      /* FIXME drow/2004-04-01: What should we be doing with
-	 function-local names?  For partial symbols, we should probably be
-	 ignoring them.  */
-      complaint (_("unhandled containing DIE tag %s for DIE at %s"),
-		 dwarf_tag_name (parent->tag),
-		 sect_offset_str (pdi->sect_off));
-      parent->scope = grandparent_scope;
-    }
-
-  parent->scope_set = 1;
-  return parent->scope;
-}
-
-/* Return the fully scoped name associated with PDI, from compilation unit
-   CU.  The result will be allocated with malloc.  */
-
-static char *
-partial_die_full_name (struct partial_die_info *pdi,
-		       struct dwarf2_cu *cu)
-{
-  const char *parent_scope;
-
-  /* If this is a template instantiation, we can not work out the
-     template arguments from partial DIEs.  So, unfortunately, we have
-     to go through the full DIEs.  At least any work we do building
-     types here will be reused if full symbols are loaded later.  */
-  if (pdi->has_template_arguments)
-    {
-      pdi->fixup (cu);
-
-      if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
-	{
-	  struct die_info *die;
-	  struct attribute attr;
-	  struct dwarf2_cu *ref_cu = cu;
-
-	  /* DW_FORM_ref_addr is using section offset.  */
-	  attr.name = (enum dwarf_attribute) 0;
-	  attr.form = DW_FORM_ref_addr;
-	  attr.u.unsnd = to_underlying (pdi->sect_off);
-	  die = follow_die_ref (NULL, &attr, &ref_cu);
-
-	  return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
-	}
-    }
-
-  parent_scope = partial_die_parent_scope (pdi, cu);
-  if (parent_scope == NULL)
-    return NULL;
-  else
-    return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
-}
-
-static void
-add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  CORE_ADDR addr = 0;
-  const char *actual_name = NULL;
-  CORE_ADDR baseaddr;
-  char *built_actual_name;
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  built_actual_name = partial_die_full_name (pdi, cu);
-  if (built_actual_name != NULL)
-    actual_name = built_actual_name;
-
-  if (actual_name == NULL)
-    actual_name = pdi->name;
-
-  switch (pdi->tag)
-    {
-    case DW_TAG_inlined_subroutine:
-    case DW_TAG_subprogram:
-      addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
-	      - baseaddr);
-      if (pdi->is_external
-	  || cu->language == language_ada
-	  || (cu->language == language_fortran
-	      && pdi->die_parent != NULL
-	      && pdi->die_parent->tag == DW_TAG_subprogram))
-	{
-          /* Normally, only "external" DIEs are part of the global scope.
-             But in Ada and Fortran, we want to be able to access nested
-             procedures globally.  So all Ada and Fortran subprograms are
-             stored in the global scope.  */
-	  add_psymbol_to_list (actual_name,
-			       built_actual_name != NULL,
-			       VAR_DOMAIN, LOC_BLOCK,
-			       SECT_OFF_TEXT (objfile),
-			       psymbol_placement::GLOBAL,
-			       addr,
-			       cu->language, objfile);
-	}
-      else
-	{
-	  add_psymbol_to_list (actual_name,
-			       built_actual_name != NULL,
-			       VAR_DOMAIN, LOC_BLOCK,
-			       SECT_OFF_TEXT (objfile),
-			       psymbol_placement::STATIC,
-			       addr, cu->language, objfile);
-	}
-
-      if (pdi->main_subprogram && actual_name != NULL)
-	set_objfile_main_name (objfile, actual_name, cu->language);
-      break;
-    case DW_TAG_constant:
-      add_psymbol_to_list (actual_name,
-			   built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
-			   -1, (pdi->is_external
-				? psymbol_placement::GLOBAL
-				: psymbol_placement::STATIC),
-			   0, cu->language, objfile);
-      break;
-    case DW_TAG_variable:
-      if (pdi->d.locdesc)
-	addr = decode_locdesc (pdi->d.locdesc, cu);
-
-      if (pdi->d.locdesc
-	  && addr == 0
-	  && !dwarf2_per_objfile->has_section_at_zero)
-	{
-	  /* A global or static variable may also have been stripped
-	     out by the linker if unused, in which case its address
-	     will be nullified; do not add such variables into partial
-	     symbol table then.  */
-	}
-      else if (pdi->is_external)
-	{
-	  /* Global Variable.
-	     Don't enter into the minimal symbol tables as there is
-	     a minimal symbol table entry from the ELF symbols already.
-	     Enter into partial symbol table if it has a location
-	     descriptor or a type.
-	     If the location descriptor is missing, new_symbol will create
-	     a LOC_UNRESOLVED symbol, the address of the variable will then
-	     be determined from the minimal symbol table whenever the variable
-	     is referenced.
-	     The address for the partial symbol table entry is not
-	     used by GDB, but it comes in handy for debugging partial symbol
-	     table building.  */
-
-	  if (pdi->d.locdesc || pdi->has_type)
-	    add_psymbol_to_list (actual_name,
-				 built_actual_name != NULL,
-				 VAR_DOMAIN, LOC_STATIC,
-				 SECT_OFF_TEXT (objfile),
-				 psymbol_placement::GLOBAL,
-				 addr, cu->language, objfile);
-	}
-      else
-	{
-	  int has_loc = pdi->d.locdesc != NULL;
-
-	  /* Static Variable.  Skip symbols whose value we cannot know (those
-	     without location descriptors or constant values).  */
-	  if (!has_loc && !pdi->has_const_value)
-	    {
-	      xfree (built_actual_name);
-	      return;
-	    }
-
-	  add_psymbol_to_list (actual_name,
-			       built_actual_name != NULL,
-			       VAR_DOMAIN, LOC_STATIC,
-			       SECT_OFF_TEXT (objfile),
-			       psymbol_placement::STATIC,
-			       has_loc ? addr : 0,
-			       cu->language, objfile);
-	}
-      break;
-    case DW_TAG_typedef:
-    case DW_TAG_base_type:
-    case DW_TAG_subrange_type:
-      add_psymbol_to_list (actual_name,
-			   built_actual_name != NULL,
-			   VAR_DOMAIN, LOC_TYPEDEF, -1,
-			   psymbol_placement::STATIC,
-			   0, cu->language, objfile);
-      break;
-    case DW_TAG_imported_declaration:
-    case DW_TAG_namespace:
-      add_psymbol_to_list (actual_name,
-			   built_actual_name != NULL,
-			   VAR_DOMAIN, LOC_TYPEDEF, -1,
-			   psymbol_placement::GLOBAL,
-			   0, cu->language, objfile);
-      break;
-    case DW_TAG_module:
-      /* With Fortran 77 there might be a "BLOCK DATA" module
-         available without any name.  If so, we skip the module as it
-         doesn't bring any value.  */
-      if (actual_name != nullptr)
-	add_psymbol_to_list (actual_name,
-			     built_actual_name != NULL,
-			     MODULE_DOMAIN, LOC_TYPEDEF, -1,
-			     psymbol_placement::GLOBAL,
-			     0, cu->language, objfile);
-      break;
-    case DW_TAG_class_type:
-    case DW_TAG_interface_type:
-    case DW_TAG_structure_type:
-    case DW_TAG_union_type:
-    case DW_TAG_enumeration_type:
-      /* Skip external references.  The DWARF standard says in the section
-         about "Structure, Union, and Class Type Entries": "An incomplete
-         structure, union or class type is represented by a structure,
-         union or class entry that does not have a byte size attribute
-         and that has a DW_AT_declaration attribute."  */
-      if (!pdi->has_byte_size && pdi->is_declaration)
-	{
-	  xfree (built_actual_name);
-	  return;
-	}
-
-      /* NOTE: carlton/2003-10-07: See comment in new_symbol about
-	 static vs. global.  */
-      add_psymbol_to_list (actual_name,
-			   built_actual_name != NULL,
-			   STRUCT_DOMAIN, LOC_TYPEDEF, -1,
-			   cu->language == language_cplus
-			   ? psymbol_placement::GLOBAL
-			   : psymbol_placement::STATIC,
-			   0, cu->language, objfile);
-
-      break;
-    case DW_TAG_enumerator:
-      add_psymbol_to_list (actual_name,
-			   built_actual_name != NULL,
-			   VAR_DOMAIN, LOC_CONST, -1,
-			   cu->language == language_cplus
-			   ? psymbol_placement::GLOBAL
-			   : psymbol_placement::STATIC,
-			   0, cu->language, objfile);
-      break;
-    default:
-      break;
-    }
-
-  xfree (built_actual_name);
-}
-
-/* Read a partial die corresponding to a namespace; also, add a symbol
-   corresponding to that namespace to the symbol table.  NAMESPACE is
-   the name of the enclosing namespace.  */
-
-static void
-add_partial_namespace (struct partial_die_info *pdi,
-		       CORE_ADDR *lowpc, CORE_ADDR *highpc,
-		       int set_addrmap, struct dwarf2_cu *cu)
-{
-  /* Add a symbol for the namespace.  */
-
-  add_partial_symbol (pdi, cu);
-
-  /* Now scan partial symbols in that namespace.  */
-
-  if (pdi->has_children)
-    scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
-}
-
-/* Read a partial die corresponding to a Fortran module.  */
-
-static void
-add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
-		    CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
-{
-  /* Add a symbol for the namespace.  */
-
-  add_partial_symbol (pdi, cu);
-
-  /* Now scan partial symbols in that module.  */
-
-  if (pdi->has_children)
-    scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
-}
-
-/* Read a partial die corresponding to a subprogram or an inlined
-   subprogram and create a partial symbol for that subprogram.
-   When the CU language allows it, this routine also defines a partial
-   symbol for each nested subprogram that this subprogram contains.
-   If SET_ADDRMAP is true, record the covered ranges in the addrmap.
-   Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
-
-   PDI may also be a lexical block, in which case we simply search
-   recursively for subprograms defined inside that lexical block.
-   Again, this is only performed when the CU language allows this
-   type of definitions.  */
-
-static void
-add_partial_subprogram (struct partial_die_info *pdi,
-			CORE_ADDR *lowpc, CORE_ADDR *highpc,
-			int set_addrmap, struct dwarf2_cu *cu)
-{
-  if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
-    {
-      if (pdi->has_pc_info)
-        {
-          if (pdi->lowpc < *lowpc)
-            *lowpc = pdi->lowpc;
-          if (pdi->highpc > *highpc)
-            *highpc = pdi->highpc;
-	  if (set_addrmap)
-	    {
-	      struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-	      struct gdbarch *gdbarch = get_objfile_arch (objfile);
-	      CORE_ADDR baseaddr;
-	      CORE_ADDR this_highpc;
-	      CORE_ADDR this_lowpc;
-
-	      baseaddr = ANOFFSET (objfile->section_offsets,
-				   SECT_OFF_TEXT (objfile));
-	      this_lowpc
-		= (gdbarch_adjust_dwarf2_addr (gdbarch,
-					       pdi->lowpc + baseaddr)
-		   - baseaddr);
-	      this_highpc
-		= (gdbarch_adjust_dwarf2_addr (gdbarch,
-					       pdi->highpc + baseaddr)
-		   - baseaddr);
-	      addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
-				 this_lowpc, this_highpc - 1,
-				 cu->per_cu->v.psymtab);
-	    }
-        }
-
-      if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
-	{
-          if (!pdi->is_declaration)
-	    /* Ignore subprogram DIEs that do not have a name, they are
-	       illegal.  Do not emit a complaint at this point, we will
-	       do so when we convert this psymtab into a symtab.  */
-	    if (pdi->name)
-	      add_partial_symbol (pdi, cu);
-        }
-    }
-
-  if (! pdi->has_children)
-    return;
-
-  if (cu->language == language_ada || cu->language == language_fortran)
-    {
-      pdi = pdi->die_child;
-      while (pdi != NULL)
-	{
-	  pdi->fixup (cu);
-	  if (pdi->tag == DW_TAG_subprogram
-	      || pdi->tag == DW_TAG_inlined_subroutine
-	      || pdi->tag == DW_TAG_lexical_block)
-	    add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
-	  pdi = pdi->die_sibling;
-	}
-    }
-}
-
-/* Read a partial die corresponding to an enumeration type.  */
-
-static void
-add_partial_enumeration (struct partial_die_info *enum_pdi,
-			 struct dwarf2_cu *cu)
-{
-  struct partial_die_info *pdi;
-
-  if (enum_pdi->name != NULL)
-    add_partial_symbol (enum_pdi, cu);
-
-  pdi = enum_pdi->die_child;
-  while (pdi)
-    {
-      if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
-	complaint (_("malformed enumerator DIE ignored"));
-      else
-	add_partial_symbol (pdi, cu);
-      pdi = pdi->die_sibling;
-    }
-}
-
-/* Return the initial uleb128 in the die at INFO_PTR.  */
-
-static unsigned int
-peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
-{
-  unsigned int bytes_read;
-
-  return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
-}
-
-/* Read the initial uleb128 in the die at INFO_PTR in compilation unit
-   READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
-
-   Return the corresponding abbrev, or NULL if the number is zero (indicating
-   an empty DIE).  In either case *BYTES_READ will be set to the length of
-   the initial number.  */
-
-static struct abbrev_info *
-peek_die_abbrev (const die_reader_specs &reader,
-		 const gdb_byte *info_ptr, unsigned int *bytes_read)
-{
-  dwarf2_cu *cu = reader.cu;
-  bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
-  unsigned int abbrev_number
-    = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
-
-  if (abbrev_number == 0)
-    return NULL;
-
-  abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
-  if (!abbrev)
-    {
-      error (_("Dwarf Error: Could not find abbrev number %d in %s"
-	       " at offset %s [in module %s]"),
-	     abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
-	     sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
-    }
-
-  return abbrev;
-}
-
-/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
-   Returns a pointer to the end of a series of DIEs, terminated by an empty
-   DIE.  Any children of the skipped DIEs will also be skipped.  */
-
-static const gdb_byte *
-skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
-{
-  while (1)
-    {
-      unsigned int bytes_read;
-      abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
-
-      if (abbrev == NULL)
-	return info_ptr + bytes_read;
-      else
-	info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
-    }
-}
-
-/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
-   INFO_PTR should point just after the initial uleb128 of a DIE, and the
-   abbrev corresponding to that skipped uleb128 should be passed in
-   ABBREV.  Returns a pointer to this DIE's sibling, skipping any
-   children.  */
-
-static const gdb_byte *
-skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
-	      struct abbrev_info *abbrev)
-{
-  unsigned int bytes_read;
-  struct attribute attr;
-  bfd *abfd = reader->abfd;
-  struct dwarf2_cu *cu = reader->cu;
-  const gdb_byte *buffer = reader->buffer;
-  const gdb_byte *buffer_end = reader->buffer_end;
-  unsigned int form, i;
-
-  for (i = 0; i < abbrev->num_attrs; i++)
-    {
-      /* The only abbrev we care about is DW_AT_sibling.  */
-      if (abbrev->attrs[i].name == DW_AT_sibling)
-	{
-	  read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
-	  if (attr.form == DW_FORM_ref_addr)
-	    complaint (_("ignoring absolute DW_AT_sibling"));
-	  else
-	    {
-	      sect_offset off = dwarf2_get_ref_die_offset (&attr);
-	      const gdb_byte *sibling_ptr = buffer + to_underlying (off);
-
-	      if (sibling_ptr < info_ptr)
-		complaint (_("DW_AT_sibling points backwards"));
-	      else if (sibling_ptr > reader->buffer_end)
-		dwarf2_section_buffer_overflow_complaint (reader->die_section);
-	      else
-		return sibling_ptr;
-	    }
-	}
-
-      /* If it isn't DW_AT_sibling, skip this attribute.  */
-      form = abbrev->attrs[i].form;
-    skip_attribute:
-      switch (form)
-	{
-	case DW_FORM_ref_addr:
-	  /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
-	     and later it is offset sized.  */
-	  if (cu->header.version == 2)
-	    info_ptr += cu->header.addr_size;
-	  else
-	    info_ptr += cu->header.offset_size;
-	  break;
-	case DW_FORM_GNU_ref_alt:
-	  info_ptr += cu->header.offset_size;
-	  break;
-	case DW_FORM_addr:
-	  info_ptr += cu->header.addr_size;
-	  break;
-	case DW_FORM_data1:
-	case DW_FORM_ref1:
-	case DW_FORM_flag:
-	case DW_FORM_strx1:
-	  info_ptr += 1;
-	  break;
-	case DW_FORM_flag_present:
-	case DW_FORM_implicit_const:
-	  break;
-	case DW_FORM_data2:
-	case DW_FORM_ref2:
-	case DW_FORM_strx2:
-	  info_ptr += 2;
-	  break;
-	case DW_FORM_strx3:
-	  info_ptr += 3;
-	  break;
-	case DW_FORM_data4:
-	case DW_FORM_ref4:
-	case DW_FORM_strx4:
-	  info_ptr += 4;
-	  break;
-	case DW_FORM_data8:
-	case DW_FORM_ref8:
-	case DW_FORM_ref_sig8:
-	  info_ptr += 8;
-	  break;
-	case DW_FORM_data16:
-	  info_ptr += 16;
-	  break;
-	case DW_FORM_string:
-	  read_direct_string (abfd, info_ptr, &bytes_read);
-	  info_ptr += bytes_read;
-	  break;
-	case DW_FORM_sec_offset:
-	case DW_FORM_strp:
-	case DW_FORM_GNU_strp_alt:
-	  info_ptr += cu->header.offset_size;
-	  break;
-	case DW_FORM_exprloc:
-	case DW_FORM_block:
-	  info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
-	  info_ptr += bytes_read;
-	  break;
-	case DW_FORM_block1:
-	  info_ptr += 1 + read_1_byte (abfd, info_ptr);
-	  break;
-	case DW_FORM_block2:
-	  info_ptr += 2 + read_2_bytes (abfd, info_ptr);
-	  break;
-	case DW_FORM_block4:
-	  info_ptr += 4 + read_4_bytes (abfd, info_ptr);
-	  break;
-	case DW_FORM_addrx:
-	case DW_FORM_strx:
-	case DW_FORM_sdata:
-	case DW_FORM_udata:
-	case DW_FORM_ref_udata:
-	case DW_FORM_GNU_addr_index:
-	case DW_FORM_GNU_str_index:
-	  info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
-	  break;
-	case DW_FORM_indirect:
-	  form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
-	  info_ptr += bytes_read;
-	  /* We need to continue parsing from here, so just go back to
-	     the top.  */
-	  goto skip_attribute;
-
-	default:
-	  error (_("Dwarf Error: Cannot handle %s "
-		   "in DWARF reader [in module %s]"),
-		 dwarf_form_name (form),
-		 bfd_get_filename (abfd));
-	}
-    }
-
-  if (abbrev->has_children)
-    return skip_children (reader, info_ptr);
-  else
-    return info_ptr;
-}
-
-/* Locate ORIG_PDI's sibling.
-   INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
-
-static const gdb_byte *
-locate_pdi_sibling (const struct die_reader_specs *reader,
-		    struct partial_die_info *orig_pdi,
-		    const gdb_byte *info_ptr)
-{
-  /* Do we know the sibling already?  */
-
-  if (orig_pdi->sibling)
-    return orig_pdi->sibling;
-
-  /* Are there any children to deal with?  */
-
-  if (!orig_pdi->has_children)
-    return info_ptr;
-
-  /* Skip the children the long way.  */
-
-  return skip_children (reader, info_ptr);
-}
-
-/* Expand this partial symbol table into a full symbol table.  SELF is
-   not NULL.  */
-
-static void
-dwarf2_read_symtab (struct partial_symtab *self,
-		    struct objfile *objfile)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = get_dwarf2_per_objfile (objfile);
-
-  if (self->readin)
-    {
-      warning (_("bug: psymtab for %s is already read in."),
-	       self->filename);
-    }
-  else
-    {
-      if (info_verbose)
-	{
-	  printf_filtered (_("Reading in symbols for %s..."),
-			   self->filename);
-	  gdb_flush (gdb_stdout);
-	}
-
-      /* If this psymtab is constructed from a debug-only objfile, the
-	 has_section_at_zero flag will not necessarily be correct.  We
-	 can get the correct value for this flag by looking at the data
-	 associated with the (presumably stripped) associated objfile.  */
-      if (objfile->separate_debug_objfile_backlink)
-	{
-	  struct dwarf2_per_objfile *dpo_backlink
-	    = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
-
-	  dwarf2_per_objfile->has_section_at_zero
-	    = dpo_backlink->has_section_at_zero;
-	}
-
-      dwarf2_per_objfile->reading_partial_symbols = 0;
-
-      psymtab_to_symtab_1 (self);
-
-      /* Finish up the debug error message.  */
-      if (info_verbose)
-	printf_filtered (_("done.\n"));
-    }
-
-  process_cu_includes (dwarf2_per_objfile);
-}
-
-/* Reading in full CUs.  */
-
-/* Add PER_CU to the queue.  */
-
-static void
-queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
-		 enum language pretend_language)
-{
-  struct dwarf2_queue_item *item;
-
-  per_cu->queued = 1;
-  item = XNEW (struct dwarf2_queue_item);
-  item->per_cu = per_cu;
-  item->pretend_language = pretend_language;
-  item->next = NULL;
-
-  if (dwarf2_queue == NULL)
-    dwarf2_queue = item;
-  else
-    dwarf2_queue_tail->next = item;
-
-  dwarf2_queue_tail = item;
-}
-
-/* If PER_CU is not yet queued, add it to the queue.
-   If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
-   dependency.
-   The result is non-zero if PER_CU was queued, otherwise the result is zero
-   meaning either PER_CU is already queued or it is already loaded.
-
-   N.B. There is an invariant here that if a CU is queued then it is loaded.
-   The caller is required to load PER_CU if we return non-zero.  */
-
-static int
-maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
-		       struct dwarf2_per_cu_data *per_cu,
-		       enum language pretend_language)
-{
-  /* We may arrive here during partial symbol reading, if we need full
-     DIEs to process an unusual case (e.g. template arguments).  Do
-     not queue PER_CU, just tell our caller to load its DIEs.  */
-  if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
-    {
-      if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
-	return 1;
-      return 0;
-    }
-
-  /* Mark the dependence relation so that we don't flush PER_CU
-     too early.  */
-  if (dependent_cu != NULL)
-    dwarf2_add_dependence (dependent_cu, per_cu);
-
-  /* If it's already on the queue, we have nothing to do.  */
-  if (per_cu->queued)
-    return 0;
-
-  /* If the compilation unit is already loaded, just mark it as
-     used.  */
-  if (per_cu->cu != NULL)
-    {
-      per_cu->cu->last_used = 0;
-      return 0;
-    }
-
-  /* Add it to the queue.  */
-  queue_comp_unit (per_cu, pretend_language);
-
-  return 1;
-}
-
-/* Process the queue.  */
-
-static void
-process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  struct dwarf2_queue_item *item, *next_item;
-
-  if (dwarf_read_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog,
-			  "Expanding one or more symtabs of objfile %s ...\n",
-			  objfile_name (dwarf2_per_objfile->objfile));
-    }
-
-  /* The queue starts out with one item, but following a DIE reference
-     may load a new CU, adding it to the end of the queue.  */
-  for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
-    {
-      if ((dwarf2_per_objfile->using_index
-	   ? !item->per_cu->v.quick->compunit_symtab
-	   : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
-	  /* Skip dummy CUs.  */
-	  && item->per_cu->cu != NULL)
-	{
-	  struct dwarf2_per_cu_data *per_cu = item->per_cu;
-	  unsigned int debug_print_threshold;
-	  char buf[100];
-
-	  if (per_cu->is_debug_types)
-	    {
-	      struct signatured_type *sig_type =
-		(struct signatured_type *) per_cu;
-
-	      sprintf (buf, "TU %s at offset %s",
-		       hex_string (sig_type->signature),
-		       sect_offset_str (per_cu->sect_off));
-	      /* There can be 100s of TUs.
-		 Only print them in verbose mode.  */
-	      debug_print_threshold = 2;
-	    }
-	  else
-	    {
-	      sprintf (buf, "CU at offset %s",
-		       sect_offset_str (per_cu->sect_off));
-	      debug_print_threshold = 1;
-	    }
-
-	  if (dwarf_read_debug >= debug_print_threshold)
-	    fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
-
-	  if (per_cu->is_debug_types)
-	    process_full_type_unit (per_cu, item->pretend_language);
-	  else
-	    process_full_comp_unit (per_cu, item->pretend_language);
-
-	  if (dwarf_read_debug >= debug_print_threshold)
-	    fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
-	}
-
-      item->per_cu->queued = 0;
-      next_item = item->next;
-      xfree (item);
-    }
-
-  dwarf2_queue_tail = NULL;
-
-  if (dwarf_read_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
-			  objfile_name (dwarf2_per_objfile->objfile));
-    }
-}
-
-/* Read in full symbols for PST, and anything it depends on.  */
-
-static void
-psymtab_to_symtab_1 (struct partial_symtab *pst)
-{
-  struct dwarf2_per_cu_data *per_cu;
-  int i;
-
-  if (pst->readin)
-    return;
-
-  for (i = 0; i < pst->number_of_dependencies; i++)
-    if (!pst->dependencies[i]->readin
-	&& pst->dependencies[i]->user == NULL)
-      {
-        /* Inform about additional files that need to be read in.  */
-        if (info_verbose)
-          {
-	    /* FIXME: i18n: Need to make this a single string.  */
-            fputs_filtered (" ", gdb_stdout);
-            wrap_here ("");
-            fputs_filtered ("and ", gdb_stdout);
-            wrap_here ("");
-            printf_filtered ("%s...", pst->dependencies[i]->filename);
-            wrap_here ("");     /* Flush output.  */
-            gdb_flush (gdb_stdout);
-          }
-        psymtab_to_symtab_1 (pst->dependencies[i]);
-      }
-
-  per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
-
-  if (per_cu == NULL)
-    {
-      /* It's an include file, no symbols to read for it.
-         Everything is in the parent symtab.  */
-      pst->readin = 1;
-      return;
-    }
-
-  dw2_do_instantiate_symtab (per_cu, false);
-}
-
-/* Trivial hash function for die_info: the hash value of a DIE
-   is its offset in .debug_info for this objfile.  */
-
-static hashval_t
-die_hash (const void *item)
-{
-  const struct die_info *die = (const struct die_info *) item;
-
-  return to_underlying (die->sect_off);
-}
-
-/* Trivial comparison function for die_info structures: two DIEs
-   are equal if they have the same offset.  */
-
-static int
-die_eq (const void *item_lhs, const void *item_rhs)
-{
-  const struct die_info *die_lhs = (const struct die_info *) item_lhs;
-  const struct die_info *die_rhs = (const struct die_info *) item_rhs;
-
-  return die_lhs->sect_off == die_rhs->sect_off;
-}
-
-/* die_reader_func for load_full_comp_unit.
-   This is identical to read_signatured_type_reader,
-   but is kept separate for now.  */
-
-static void
-load_full_comp_unit_reader (const struct die_reader_specs *reader,
-			    const gdb_byte *info_ptr,
-			    struct die_info *comp_unit_die,
-			    int has_children,
-			    void *data)
-{
-  struct dwarf2_cu *cu = reader->cu;
-  enum language *language_ptr = (enum language *) data;
-
-  gdb_assert (cu->die_hash == NULL);
-  cu->die_hash =
-    htab_create_alloc_ex (cu->header.length / 12,
-			  die_hash,
-			  die_eq,
-			  NULL,
-			  &cu->comp_unit_obstack,
-			  hashtab_obstack_allocate,
-			  dummy_obstack_deallocate);
-
-  if (has_children)
-    comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
-						  &info_ptr, comp_unit_die);
-  cu->dies = comp_unit_die;
-  /* comp_unit_die is not stored in die_hash, no need.  */
-
-  /* We try not to read any attributes in this function, because not
-     all CUs needed for references have been loaded yet, and symbol
-     table processing isn't initialized.  But we have to set the CU language,
-     or we won't be able to build types correctly.
-     Similarly, if we do not read the producer, we can not apply
-     producer-specific interpretation.  */
-  prepare_one_comp_unit (cu, cu->dies, *language_ptr);
-}
-
-/* Load the DIEs associated with PER_CU into memory.  */
-
-static void
-load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
-		     bool skip_partial,
-		     enum language pretend_language)
-{
-  gdb_assert (! this_cu->is_debug_types);
-
-  init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
-			   load_full_comp_unit_reader, &pretend_language);
-}
-
-/* Add a DIE to the delayed physname list.  */
-
-static void
-add_to_method_list (struct type *type, int fnfield_index, int index,
-		    const char *name, struct die_info *die,
-		    struct dwarf2_cu *cu)
-{
-  struct delayed_method_info mi;
-  mi.type = type;
-  mi.fnfield_index = fnfield_index;
-  mi.index = index;
-  mi.name = name;
-  mi.die = die;
-  cu->method_list.push_back (mi);
-}
-
-/* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
-   "const" / "volatile".  If so, decrements LEN by the length of the
-   modifier and return true.  Otherwise return false.  */
-
-template<size_t N>
-static bool
-check_modifier (const char *physname, size_t &len, const char (&mod)[N])
-{
-  size_t mod_len = sizeof (mod) - 1;
-  if (len > mod_len && startswith (physname + (len - mod_len), mod))
-    {
-      len -= mod_len;
-      return true;
-    }
-  return false;
-}
-
-/* Compute the physnames of any methods on the CU's method list.
-
-   The computation of method physnames is delayed in order to avoid the
-   (bad) condition that one of the method's formal parameters is of an as yet
-   incomplete type.  */
-
-static void
-compute_delayed_physnames (struct dwarf2_cu *cu)
-{
-  /* Only C++ delays computing physnames.  */
-  if (cu->method_list.empty ())
-    return;
-  gdb_assert (cu->language == language_cplus);
-
-  for (const delayed_method_info &mi : cu->method_list)
-    {
-      const char *physname;
-      struct fn_fieldlist *fn_flp
-	= &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
-      physname = dwarf2_physname (mi.name, mi.die, cu);
-      TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
-	= physname ? physname : "";
-
-      /* Since there's no tag to indicate whether a method is a
-	 const/volatile overload, extract that information out of the
-	 demangled name.  */
-      if (physname != NULL)
-	{
-	  size_t len = strlen (physname);
-
-	  while (1)
-	    {
-	      if (physname[len] == ')') /* shortcut */
-		break;
-	      else if (check_modifier (physname, len, " const"))
-		TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
-	      else if (check_modifier (physname, len, " volatile"))
-		TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
-	      else
-		break;
-	    }
-	}
-    }
-
-  /* The list is no longer needed.  */
-  cu->method_list.clear ();
-}
-
-/* Go objects should be embedded in a DW_TAG_module DIE,
-   and it's not clear if/how imported objects will appear.
-   To keep Go support simple until that's worked out,
-   go back through what we've read and create something usable.
-   We could do this while processing each DIE, and feels kinda cleaner,
-   but that way is more invasive.
-   This is to, for example, allow the user to type "p var" or "b main"
-   without having to specify the package name, and allow lookups
-   of module.object to work in contexts that use the expression
-   parser.  */
-
-static void
-fixup_go_packaging (struct dwarf2_cu *cu)
-{
-  char *package_name = NULL;
-  struct pending *list;
-  int i;
-
-  for (list = *cu->get_builder ()->get_global_symbols ();
-       list != NULL;
-       list = list->next)
-    {
-      for (i = 0; i < list->nsyms; ++i)
-	{
-	  struct symbol *sym = list->symbol[i];
-
-	  if (SYMBOL_LANGUAGE (sym) == language_go
-	      && SYMBOL_CLASS (sym) == LOC_BLOCK)
-	    {
-	      char *this_package_name = go_symbol_package_name (sym);
-
-	      if (this_package_name == NULL)
-		continue;
-	      if (package_name == NULL)
-		package_name = this_package_name;
-	      else
-		{
-		  struct objfile *objfile
-		    = cu->per_cu->dwarf2_per_objfile->objfile;
-		  if (strcmp (package_name, this_package_name) != 0)
-		    complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
-			       (symbol_symtab (sym) != NULL
-				? symtab_to_filename_for_display
-				    (symbol_symtab (sym))
-				: objfile_name (objfile)),
-			       this_package_name, package_name);
-		  xfree (this_package_name);
-		}
-	    }
-	}
-    }
-
-  if (package_name != NULL)
-    {
-      struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-      const char *saved_package_name
-	= obstack_strdup (&objfile->per_bfd->storage_obstack, package_name);
-      struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
-				     saved_package_name);
-      struct symbol *sym;
-
-      sym = allocate_symbol (objfile);
-      SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
-      SYMBOL_SET_NAMES (sym, saved_package_name, false, objfile);
-      /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
-	 e.g., "main" finds the "main" module and not C's main().  */
-      SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
-      SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
-      SYMBOL_TYPE (sym) = type;
-
-      add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
-
-      xfree (package_name);
-    }
-}
-
-/* Allocate a fully-qualified name consisting of the two parts on the
-   obstack.  */
-
-static const char *
-rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
-{
-  return obconcat (obstack, p1, "::", p2, (char *) NULL);
-}
-
-/* A helper that allocates a struct discriminant_info to attach to a
-   union type.  */
-
-static struct discriminant_info *
-alloc_discriminant_info (struct type *type, int discriminant_index,
-			 int default_index)
-{
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
-  gdb_assert (discriminant_index == -1
-	      || (discriminant_index >= 0
-		  && discriminant_index < TYPE_NFIELDS (type)));
-  gdb_assert (default_index == -1
-	      || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
-
-  TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
-
-  struct discriminant_info *disc
-    = ((struct discriminant_info *)
-       TYPE_ZALLOC (type,
-		    offsetof (struct discriminant_info, discriminants)
-		    + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
-  disc->default_index = default_index;
-  disc->discriminant_index = discriminant_index;
-
-  struct dynamic_prop prop;
-  prop.kind = PROP_UNDEFINED;
-  prop.data.baton = disc;
-
-  add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
-
-  return disc;
-}
-
-/* Some versions of rustc emitted enums in an unusual way.
-
-   Ordinary enums were emitted as unions.  The first element of each
-   structure in the union was named "RUST$ENUM$DISR".  This element
-   held the discriminant.
-
-   These versions of Rust also implemented the "non-zero"
-   optimization.  When the enum had two values, and one is empty and
-   the other holds a pointer that cannot be zero, the pointer is used
-   as the discriminant, with a zero value meaning the empty variant.
-   Here, the union's first member is of the form
-   RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
-   where the fieldnos are the indices of the fields that should be
-   traversed in order to find the field (which may be several fields deep)
-   and the variantname is the name of the variant of the case when the
-   field is zero.
-
-   This function recognizes whether TYPE is of one of these forms,
-   and, if so, smashes it to be a variant type.  */
-
-static void
-quirk_rust_enum (struct type *type, struct objfile *objfile)
-{
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
-
-  /* We don't need to deal with empty enums.  */
-  if (TYPE_NFIELDS (type) == 0)
-    return;
-
-#define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
-  if (TYPE_NFIELDS (type) == 1
-      && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
-    {
-      const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
-
-      /* Decode the field name to find the offset of the
-	 discriminant.  */
-      ULONGEST bit_offset = 0;
-      struct type *field_type = TYPE_FIELD_TYPE (type, 0);
-      while (name[0] >= '0' && name[0] <= '9')
-	{
-	  char *tail;
-	  unsigned long index = strtoul (name, &tail, 10);
-	  name = tail;
-	  if (*name != '$'
-	      || index >= TYPE_NFIELDS (field_type)
-	      || (TYPE_FIELD_LOC_KIND (field_type, index)
-		  != FIELD_LOC_KIND_BITPOS))
-	    {
-	      complaint (_("Could not parse Rust enum encoding string \"%s\""
-			   "[in module %s]"),
-			 TYPE_FIELD_NAME (type, 0),
-			 objfile_name (objfile));
-	      return;
-	    }
-	  ++name;
-
-	  bit_offset += TYPE_FIELD_BITPOS (field_type, index);
-	  field_type = TYPE_FIELD_TYPE (field_type, index);
-	}
-
-      /* Make a union to hold the variants.  */
-      struct type *union_type = alloc_type (objfile);
-      TYPE_CODE (union_type) = TYPE_CODE_UNION;
-      TYPE_NFIELDS (union_type) = 3;
-      TYPE_FIELDS (union_type)
-	= (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
-      TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
-      set_type_align (union_type, TYPE_RAW_ALIGN (type));
-
-      /* Put the discriminant must at index 0.  */
-      TYPE_FIELD_TYPE (union_type, 0) = field_type;
-      TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
-      TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
-      SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
-
-      /* The order of fields doesn't really matter, so put the real
-	 field at index 1 and the data-less field at index 2.  */
-      struct discriminant_info *disc
-	= alloc_discriminant_info (union_type, 0, 1);
-      TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
-      TYPE_FIELD_NAME (union_type, 1)
-	= rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
-      TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
-	= rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
-			      TYPE_FIELD_NAME (union_type, 1));
-
-      const char *dataless_name
-	= rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
-			      name);
-      struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
-					      dataless_name);
-      TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
-      /* NAME points into the original discriminant name, which
-	 already has the correct lifetime.  */
-      TYPE_FIELD_NAME (union_type, 2) = name;
-      SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
-      disc->discriminants[2] = 0;
-
-      /* Smash this type to be a structure type.  We have to do this
-	 because the type has already been recorded.  */
-      TYPE_CODE (type) = TYPE_CODE_STRUCT;
-      TYPE_NFIELDS (type) = 1;
-      TYPE_FIELDS (type)
-	= (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
-
-      /* Install the variant part.  */
-      TYPE_FIELD_TYPE (type, 0) = union_type;
-      SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
-      TYPE_FIELD_NAME (type, 0) = "<<variants>>";
-    }
-  /* A union with a single anonymous field is probably an old-style
-     univariant enum.  */
-  else if (TYPE_NFIELDS (type) == 1 && streq (TYPE_FIELD_NAME (type, 0), ""))
-    {
-      /* Smash this type to be a structure type.  We have to do this
-	 because the type has already been recorded.  */
-      TYPE_CODE (type) = TYPE_CODE_STRUCT;
-
-      /* Make a union to hold the variants.  */
-      struct type *union_type = alloc_type (objfile);
-      TYPE_CODE (union_type) = TYPE_CODE_UNION;
-      TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
-      TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
-      set_type_align (union_type, TYPE_RAW_ALIGN (type));
-      TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
-
-      struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
-      const char *variant_name
-	= rust_last_path_segment (TYPE_NAME (field_type));
-      TYPE_FIELD_NAME (union_type, 0) = variant_name;
-      TYPE_NAME (field_type)
-	= rust_fully_qualify (&objfile->objfile_obstack,
-			      TYPE_NAME (type), variant_name);
-
-      /* Install the union in the outer struct type.  */
-      TYPE_NFIELDS (type) = 1;
-      TYPE_FIELDS (type)
-	= (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
-      TYPE_FIELD_TYPE (type, 0) = union_type;
-      TYPE_FIELD_NAME (type, 0) = "<<variants>>";
-      SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
-
-      alloc_discriminant_info (union_type, -1, 0);
-    }
-  else
-    {
-      struct type *disr_type = nullptr;
-      for (int i = 0; i < TYPE_NFIELDS (type); ++i)
-	{
-	  disr_type = TYPE_FIELD_TYPE (type, i);
-
-	  if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
-	    {
-	      /* All fields of a true enum will be structs.  */
-	      return;
-	    }
-	  else if (TYPE_NFIELDS (disr_type) == 0)
-	    {
-	      /* Could be data-less variant, so keep going.  */
-	      disr_type = nullptr;
-	    }
-	  else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
-			   "RUST$ENUM$DISR") != 0)
-	    {
-	      /* Not a Rust enum.  */
-	      return;
-	    }
-	  else
-	    {
-	      /* Found one.  */
-	      break;
-	    }
-	}
-
-      /* If we got here without a discriminant, then it's probably
-	 just a union.  */
-      if (disr_type == nullptr)
-	return;
-
-      /* Smash this type to be a structure type.  We have to do this
-	 because the type has already been recorded.  */
-      TYPE_CODE (type) = TYPE_CODE_STRUCT;
-
-      /* Make a union to hold the variants.  */
-      struct field *disr_field = &TYPE_FIELD (disr_type, 0);
-      struct type *union_type = alloc_type (objfile);
-      TYPE_CODE (union_type) = TYPE_CODE_UNION;
-      TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
-      TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
-      set_type_align (union_type, TYPE_RAW_ALIGN (type));
-      TYPE_FIELDS (union_type)
-	= (struct field *) TYPE_ZALLOC (union_type,
-					(TYPE_NFIELDS (union_type)
-					 * sizeof (struct field)));
-
-      memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
-	      TYPE_NFIELDS (type) * sizeof (struct field));
-
-      /* Install the discriminant at index 0 in the union.  */
-      TYPE_FIELD (union_type, 0) = *disr_field;
-      TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
-      TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
-
-      /* Install the union in the outer struct type.  */
-      TYPE_FIELD_TYPE (type, 0) = union_type;
-      TYPE_FIELD_NAME (type, 0) = "<<variants>>";
-      TYPE_NFIELDS (type) = 1;
-
-      /* Set the size and offset of the union type.  */
-      SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
-
-      /* We need a way to find the correct discriminant given a
-	 variant name.  For convenience we build a map here.  */
-      struct type *enum_type = FIELD_TYPE (*disr_field);
-      std::unordered_map<std::string, ULONGEST> discriminant_map;
-      for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
-	{
-	  if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
-	    {
-	      const char *name
-		= rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
-	      discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
-	    }
-	}
-
-      int n_fields = TYPE_NFIELDS (union_type);
-      struct discriminant_info *disc
-	= alloc_discriminant_info (union_type, 0, -1);
-      /* Skip the discriminant here.  */
-      for (int i = 1; i < n_fields; ++i)
-	{
-	  /* Find the final word in the name of this variant's type.
-	     That name can be used to look up the correct
-	     discriminant.  */
-	  const char *variant_name
-	    = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
-								  i)));
-
-	  auto iter = discriminant_map.find (variant_name);
-	  if (iter != discriminant_map.end ())
-	    disc->discriminants[i] = iter->second;
-
-	  /* Remove the discriminant field, if it exists.  */
-	  struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
-	  if (TYPE_NFIELDS (sub_type) > 0)
-	    {
-	      --TYPE_NFIELDS (sub_type);
-	      ++TYPE_FIELDS (sub_type);
-	    }
-	  TYPE_FIELD_NAME (union_type, i) = variant_name;
-	  TYPE_NAME (sub_type)
-	    = rust_fully_qualify (&objfile->objfile_obstack,
-				  TYPE_NAME (type), variant_name);
-	}
-    }
-}
-
-/* Rewrite some Rust unions to be structures with variants parts.  */
-
-static void
-rust_union_quirks (struct dwarf2_cu *cu)
-{
-  gdb_assert (cu->language == language_rust);
-  for (type *type_ : cu->rust_unions)
-    quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
-  /* We don't need this any more.  */
-  cu->rust_unions.clear ();
-}
-
-/* Return the symtab for PER_CU.  This works properly regardless of
-   whether we're using the index or psymtabs.  */
-
-static struct compunit_symtab *
-get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
-{
-  return (per_cu->dwarf2_per_objfile->using_index
-	  ? per_cu->v.quick->compunit_symtab
-	  : per_cu->v.psymtab->compunit_symtab);
-}
-
-/* A helper function for computing the list of all symbol tables
-   included by PER_CU.  */
-
-static void
-recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
-				htab_t all_children, htab_t all_type_symtabs,
-				struct dwarf2_per_cu_data *per_cu,
-				struct compunit_symtab *immediate_parent)
-{
-  void **slot;
-  struct compunit_symtab *cust;
-
-  slot = htab_find_slot (all_children, per_cu, INSERT);
-  if (*slot != NULL)
-    {
-      /* This inclusion and its children have been processed.  */
-      return;
-    }
-
-  *slot = per_cu;
-  /* Only add a CU if it has a symbol table.  */
-  cust = get_compunit_symtab (per_cu);
-  if (cust != NULL)
-    {
-      /* If this is a type unit only add its symbol table if we haven't
-	 seen it yet (type unit per_cu's can share symtabs).  */
-      if (per_cu->is_debug_types)
-	{
-	  slot = htab_find_slot (all_type_symtabs, cust, INSERT);
-	  if (*slot == NULL)
-	    {
-	      *slot = cust;
-	      result->push_back (cust);
-	      if (cust->user == NULL)
-		cust->user = immediate_parent;
-	    }
-	}
-      else
-	{
-	  result->push_back (cust);
-	  if (cust->user == NULL)
-	    cust->user = immediate_parent;
-	}
-    }
-
-  if (!per_cu->imported_symtabs_empty ())
-    for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
-      {
-	recursively_compute_inclusions (result, all_children,
-					all_type_symtabs, ptr, cust);
-      }
-}
-
-/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
-   PER_CU.  */
-
-static void
-compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
-{
-  gdb_assert (! per_cu->is_debug_types);
-
-  if (!per_cu->imported_symtabs_empty ())
-    {
-      int len;
-      std::vector<compunit_symtab *> result_symtabs;
-      htab_t all_children, all_type_symtabs;
-      struct compunit_symtab *cust = get_compunit_symtab (per_cu);
-
-      /* If we don't have a symtab, we can just skip this case.  */
-      if (cust == NULL)
-	return;
-
-      all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
-					NULL, xcalloc, xfree);
-      all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
-					    NULL, xcalloc, xfree);
-
-      for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
-	{
-	  recursively_compute_inclusions (&result_symtabs, all_children,
-					  all_type_symtabs, ptr, cust);
-	}
-
-      /* Now we have a transitive closure of all the included symtabs.  */
-      len = result_symtabs.size ();
-      cust->includes
-	= XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
-		     struct compunit_symtab *, len + 1);
-      memcpy (cust->includes, result_symtabs.data (),
-	      len * sizeof (compunit_symtab *));
-      cust->includes[len] = NULL;
-
-      htab_delete (all_children);
-      htab_delete (all_type_symtabs);
-    }
-}
-
-/* Compute the 'includes' field for the symtabs of all the CUs we just
-   read.  */
-
-static void
-process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
-    {
-      if (! iter->is_debug_types)
-	compute_compunit_symtab_includes (iter);
-    }
-
-  dwarf2_per_objfile->just_read_cus.clear ();
-}
-
-/* Generate full symbol information for PER_CU, whose DIEs have
-   already been loaded into memory.  */
-
-static void
-process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
-			enum language pretend_language)
-{
-  struct dwarf2_cu *cu = per_cu->cu;
-  struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  CORE_ADDR lowpc, highpc;
-  struct compunit_symtab *cust;
-  CORE_ADDR baseaddr;
-  struct block *static_block;
-  CORE_ADDR addr;
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  /* Clear the list here in case something was left over.  */
-  cu->method_list.clear ();
-
-  cu->language = pretend_language;
-  cu->language_defn = language_def (cu->language);
-
-  /* Do line number decoding in read_file_scope () */
-  process_die (cu->dies, cu);
-
-  /* For now fudge the Go package.  */
-  if (cu->language == language_go)
-    fixup_go_packaging (cu);
-
-  /* Now that we have processed all the DIEs in the CU, all the types
-     should be complete, and it should now be safe to compute all of the
-     physnames.  */
-  compute_delayed_physnames (cu);
-
-  if (cu->language == language_rust)
-    rust_union_quirks (cu);
-
-  /* Some compilers don't define a DW_AT_high_pc attribute for the
-     compilation unit.  If the DW_AT_high_pc is missing, synthesize
-     it, by scanning the DIE's below the compilation unit.  */
-  get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
-
-  addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
-  static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
-
-  /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
-     Also, DW_AT_ranges may record ranges not belonging to any child DIEs
-     (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
-     addrmap to help ensure it has an accurate map of pc values belonging to
-     this comp unit.  */
-  dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
-
-  cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
-						    SECT_OFF_TEXT (objfile),
-						    0);
-
-  if (cust != NULL)
-    {
-      int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
-
-      /* Set symtab language to language from DW_AT_language.  If the
-	 compilation is from a C file generated by language preprocessors, do
-	 not set the language if it was already deduced by start_subfile.  */
-      if (!(cu->language == language_c
-	    && COMPUNIT_FILETABS (cust)->language != language_unknown))
-	COMPUNIT_FILETABS (cust)->language = cu->language;
-
-      /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
-	 produce DW_AT_location with location lists but it can be possibly
-	 invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
-	 there were bugs in prologue debug info, fixed later in GCC-4.5
-	 by "unwind info for epilogues" patch (which is not directly related).
-
-	 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
-	 needed, it would be wrong due to missing DW_AT_producer there.
-
-	 Still one can confuse GDB by using non-standard GCC compilation
-	 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
-	 */
-      if (cu->has_loclist && gcc_4_minor >= 5)
-	cust->locations_valid = 1;
-
-      if (gcc_4_minor >= 5)
-	cust->epilogue_unwind_valid = 1;
-
-      cust->call_site_htab = cu->call_site_htab;
-    }
-
-  if (dwarf2_per_objfile->using_index)
-    per_cu->v.quick->compunit_symtab = cust;
-  else
-    {
-      struct partial_symtab *pst = per_cu->v.psymtab;
-      pst->compunit_symtab = cust;
-      pst->readin = 1;
-    }
-
-  /* Push it for inclusion processing later.  */
-  dwarf2_per_objfile->just_read_cus.push_back (per_cu);
-
-  /* Not needed any more.  */
-  cu->reset_builder ();
-}
-
-/* Generate full symbol information for type unit PER_CU, whose DIEs have
-   already been loaded into memory.  */
-
-static void
-process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
-			enum language pretend_language)
-{
-  struct dwarf2_cu *cu = per_cu->cu;
-  struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct compunit_symtab *cust;
-  struct signatured_type *sig_type;
-
-  gdb_assert (per_cu->is_debug_types);
-  sig_type = (struct signatured_type *) per_cu;
-
-  /* Clear the list here in case something was left over.  */
-  cu->method_list.clear ();
-
-  cu->language = pretend_language;
-  cu->language_defn = language_def (cu->language);
-
-  /* The symbol tables are set up in read_type_unit_scope.  */
-  process_die (cu->dies, cu);
-
-  /* For now fudge the Go package.  */
-  if (cu->language == language_go)
-    fixup_go_packaging (cu);
-
-  /* Now that we have processed all the DIEs in the CU, all the types
-     should be complete, and it should now be safe to compute all of the
-     physnames.  */
-  compute_delayed_physnames (cu);
-
-  if (cu->language == language_rust)
-    rust_union_quirks (cu);
-
-  /* TUs share symbol tables.
-     If this is the first TU to use this symtab, complete the construction
-     of it with end_expandable_symtab.  Otherwise, complete the addition of
-     this TU's symbols to the existing symtab.  */
-  if (sig_type->type_unit_group->compunit_symtab == NULL)
-    {
-      buildsym_compunit *builder = cu->get_builder ();
-      cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
-      sig_type->type_unit_group->compunit_symtab = cust;
-
-      if (cust != NULL)
-	{
-	  /* Set symtab language to language from DW_AT_language.  If the
-	     compilation is from a C file generated by language preprocessors,
-	     do not set the language if it was already deduced by
-	     start_subfile.  */
-	  if (!(cu->language == language_c
-		&& COMPUNIT_FILETABS (cust)->language != language_c))
-	    COMPUNIT_FILETABS (cust)->language = cu->language;
-	}
-    }
-  else
-    {
-      cu->get_builder ()->augment_type_symtab ();
-      cust = sig_type->type_unit_group->compunit_symtab;
-    }
-
-  if (dwarf2_per_objfile->using_index)
-    per_cu->v.quick->compunit_symtab = cust;
-  else
-    {
-      struct partial_symtab *pst = per_cu->v.psymtab;
-      pst->compunit_symtab = cust;
-      pst->readin = 1;
-    }
-
-  /* Not needed any more.  */
-  cu->reset_builder ();
-}
-
-/* Process an imported unit DIE.  */
-
-static void
-process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-
-  /* For now we don't handle imported units in type units.  */
-  if (cu->per_cu->is_debug_types)
-    {
-      error (_("Dwarf Error: DW_TAG_imported_unit is not"
-	       " supported in type units [in module %s]"),
-	     objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-    }
-
-  attr = dwarf2_attr (die, DW_AT_import, cu);
-  if (attr != NULL)
-    {
-      sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
-      bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
-      dwarf2_per_cu_data *per_cu
-	= dwarf2_find_containing_comp_unit (sect_off, is_dwz,
-					    cu->per_cu->dwarf2_per_objfile);
-
-      /* If necessary, add it to the queue and load its DIEs.  */
-      if (maybe_queue_comp_unit (cu, per_cu, cu->language))
-	load_full_comp_unit (per_cu, false, cu->language);
-
-      cu->per_cu->imported_symtabs_push (per_cu);
-    }
-}
-
-/* RAII object that represents a process_die scope: i.e.,
-   starts/finishes processing a DIE.  */
-class process_die_scope
-{
-public:
-  process_die_scope (die_info *die, dwarf2_cu *cu)
-    : m_die (die), m_cu (cu)
-  {
-    /* We should only be processing DIEs not already in process.  */
-    gdb_assert (!m_die->in_process);
-    m_die->in_process = true;
-  }
-
-  ~process_die_scope ()
-  {
-    m_die->in_process = false;
-
-    /* If we're done processing the DIE for the CU that owns the line
-       header, we don't need the line header anymore.  */
-    if (m_cu->line_header_die_owner == m_die)
-      {
-	delete m_cu->line_header;
-	m_cu->line_header = NULL;
-	m_cu->line_header_die_owner = NULL;
-      }
-  }
-
-private:
-  die_info *m_die;
-  dwarf2_cu *m_cu;
-};
-
-/* Process a die and its children.  */
-
-static void
-process_die (struct die_info *die, struct dwarf2_cu *cu)
-{
-  process_die_scope scope (die, cu);
-
-  switch (die->tag)
-    {
-    case DW_TAG_padding:
-      break;
-    case DW_TAG_compile_unit:
-    case DW_TAG_partial_unit:
-      read_file_scope (die, cu);
-      break;
-    case DW_TAG_type_unit:
-      read_type_unit_scope (die, cu);
-      break;
-    case DW_TAG_subprogram:
-      /* Nested subprograms in Fortran get a prefix.  */
-      if (cu->language == language_fortran
-	  && die->parent != NULL
-	  && die->parent->tag == DW_TAG_subprogram)
-	cu->processing_has_namespace_info = true;
-      /* Fall through.  */
-    case DW_TAG_inlined_subroutine:
-      read_func_scope (die, cu);
-      break;
-    case DW_TAG_lexical_block:
-    case DW_TAG_try_block:
-    case DW_TAG_catch_block:
-      read_lexical_block_scope (die, cu);
-      break;
-    case DW_TAG_call_site:
-    case DW_TAG_GNU_call_site:
-      read_call_site_scope (die, cu);
-      break;
-    case DW_TAG_class_type:
-    case DW_TAG_interface_type:
-    case DW_TAG_structure_type:
-    case DW_TAG_union_type:
-      process_structure_scope (die, cu);
-      break;
-    case DW_TAG_enumeration_type:
-      process_enumeration_scope (die, cu);
-      break;
-
-    /* These dies have a type, but processing them does not create
-       a symbol or recurse to process the children.  Therefore we can
-       read them on-demand through read_type_die.  */
-    case DW_TAG_subroutine_type:
-    case DW_TAG_set_type:
-    case DW_TAG_array_type:
-    case DW_TAG_pointer_type:
-    case DW_TAG_ptr_to_member_type:
-    case DW_TAG_reference_type:
-    case DW_TAG_rvalue_reference_type:
-    case DW_TAG_string_type:
-      break;
-
-    case DW_TAG_base_type:
-    case DW_TAG_subrange_type:
-    case DW_TAG_typedef:
-      /* Add a typedef symbol for the type definition, if it has a
-         DW_AT_name.  */
-      new_symbol (die, read_type_die (die, cu), cu);
-      break;
-    case DW_TAG_common_block:
-      read_common_block (die, cu);
-      break;
-    case DW_TAG_common_inclusion:
-      break;
-    case DW_TAG_namespace:
-      cu->processing_has_namespace_info = true;
-      read_namespace (die, cu);
-      break;
-    case DW_TAG_module:
-      cu->processing_has_namespace_info = true;
-      read_module (die, cu);
-      break;
-    case DW_TAG_imported_declaration:
-      cu->processing_has_namespace_info = true;
-      if (read_namespace_alias (die, cu))
-	break;
-      /* The declaration is not a global namespace alias.  */
-      /* Fall through.  */
-    case DW_TAG_imported_module:
-      cu->processing_has_namespace_info = true;
-      if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
-				 || cu->language != language_fortran))
-	complaint (_("Tag '%s' has unexpected children"),
-		   dwarf_tag_name (die->tag));
-      read_import_statement (die, cu);
-      break;
-
-    case DW_TAG_imported_unit:
-      process_imported_unit_die (die, cu);
-      break;
-
-    case DW_TAG_variable:
-      read_variable (die, cu);
-      break;
-
-    default:
-      new_symbol (die, NULL, cu);
-      break;
-    }
-}
-
-/* DWARF name computation.  */
-
-/* A helper function for dwarf2_compute_name which determines whether DIE
-   needs to have the name of the scope prepended to the name listed in the
-   die.  */
-
-static int
-die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-
-  switch (die->tag)
-    {
-    case DW_TAG_namespace:
-    case DW_TAG_typedef:
-    case DW_TAG_class_type:
-    case DW_TAG_interface_type:
-    case DW_TAG_structure_type:
-    case DW_TAG_union_type:
-    case DW_TAG_enumeration_type:
-    case DW_TAG_enumerator:
-    case DW_TAG_subprogram:
-    case DW_TAG_inlined_subroutine:
-    case DW_TAG_member:
-    case DW_TAG_imported_declaration:
-      return 1;
-
-    case DW_TAG_variable:
-    case DW_TAG_constant:
-      /* We only need to prefix "globally" visible variables.  These include
-	 any variable marked with DW_AT_external or any variable that
-	 lives in a namespace.  [Variables in anonymous namespaces
-	 require prefixing, but they are not DW_AT_external.]  */
-
-      if (dwarf2_attr (die, DW_AT_specification, cu))
-	{
-	  struct dwarf2_cu *spec_cu = cu;
-
-	  return die_needs_namespace (die_specification (die, &spec_cu),
-				      spec_cu);
-	}
-
-      attr = dwarf2_attr (die, DW_AT_external, cu);
-      if (attr == NULL && die->parent->tag != DW_TAG_namespace
-	  && die->parent->tag != DW_TAG_module)
-	return 0;
-      /* A variable in a lexical block of some kind does not need a
-	 namespace, even though in C++ such variables may be external
-	 and have a mangled name.  */
-      if (die->parent->tag ==  DW_TAG_lexical_block
-	  || die->parent->tag ==  DW_TAG_try_block
-	  || die->parent->tag ==  DW_TAG_catch_block
-	  || die->parent->tag == DW_TAG_subprogram)
-	return 0;
-      return 1;
-
-    default:
-      return 0;
-    }
-}
-
-/* Return the DIE's linkage name attribute, either DW_AT_linkage_name
-   or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
-   defined for the given DIE.  */
-
-static struct attribute *
-dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-
-  attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
-  if (attr == NULL)
-    attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
-
-  return attr;
-}
-
-/* Return the DIE's linkage name as a string, either DW_AT_linkage_name
-   or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
-   defined for the given DIE.  */
-
-static const char *
-dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
-{
-  const char *linkage_name;
-
-  linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
-  if (linkage_name == NULL)
-    linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
-
-  return linkage_name;
-}
-
-/* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
-   compute the physname for the object, which include a method's:
-   - formal parameters (C++),
-   - receiver type (Go),
-
-   The term "physname" is a bit confusing.
-   For C++, for example, it is the demangled name.
-   For Go, for example, it's the mangled name.
-
-   For Ada, return the DIE's linkage name rather than the fully qualified
-   name.  PHYSNAME is ignored..
-
-   The result is allocated on the objfile_obstack and canonicalized.  */
-
-static const char *
-dwarf2_compute_name (const char *name,
-		     struct die_info *die, struct dwarf2_cu *cu,
-		     int physname)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-
-  if (name == NULL)
-    name = dwarf2_name (die, cu);
-
-  /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
-     but otherwise compute it by typename_concat inside GDB.
-     FIXME: Actually this is not really true, or at least not always true.
-     It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
-     Fortran names because there is no mangling standard.  So new_symbol
-     will set the demangled name to the result of dwarf2_full_name, and it is
-     the demangled name that GDB uses if it exists.  */
-  if (cu->language == language_ada
-      || (cu->language == language_fortran && physname))
-    {
-      /* For Ada unit, we prefer the linkage name over the name, as
-	 the former contains the exported name, which the user expects
-	 to be able to reference.  Ideally, we want the user to be able
-	 to reference this entity using either natural or linkage name,
-	 but we haven't started looking at this enhancement yet.  */
-      const char *linkage_name = dw2_linkage_name (die, cu);
-
-      if (linkage_name != NULL)
-	return linkage_name;
-    }
-
-  /* These are the only languages we know how to qualify names in.  */
-  if (name != NULL
-      && (cu->language == language_cplus
-	  || cu->language == language_fortran || cu->language == language_d
-	  || cu->language == language_rust))
-    {
-      if (die_needs_namespace (die, cu))
-	{
-	  const char *prefix;
-	  const char *canonical_name = NULL;
-
-	  string_file buf;
-
-	  prefix = determine_prefix (die, cu);
-	  if (*prefix != '\0')
-	    {
-	      char *prefixed_name = typename_concat (NULL, prefix, name,
-						     physname, cu);
-
-	      buf.puts (prefixed_name);
-	      xfree (prefixed_name);
-	    }
-	  else
-	    buf.puts (name);
-
-	  /* Template parameters may be specified in the DIE's DW_AT_name, or
-	     as children with DW_TAG_template_type_param or
-	     DW_TAG_value_type_param.  If the latter, add them to the name
-	     here.  If the name already has template parameters, then
-	     skip this step; some versions of GCC emit both, and
-	     it is more efficient to use the pre-computed name.
-
-	     Something to keep in mind about this process: it is very
-	     unlikely, or in some cases downright impossible, to produce
-	     something that will match the mangled name of a function.
-	     If the definition of the function has the same debug info,
-	     we should be able to match up with it anyway.  But fallbacks
-	     using the minimal symbol, for instance to find a method
-	     implemented in a stripped copy of libstdc++, will not work.
-	     If we do not have debug info for the definition, we will have to
-	     match them up some other way.
-
-	     When we do name matching there is a related problem with function
-	     templates; two instantiated function templates are allowed to
-	     differ only by their return types, which we do not add here.  */
-
-	  if (cu->language == language_cplus && strchr (name, '<') == NULL)
-	    {
-	      struct attribute *attr;
-	      struct die_info *child;
-	      int first = 1;
-
-	      die->building_fullname = 1;
-
-	      for (child = die->child; child != NULL; child = child->sibling)
-		{
-		  struct type *type;
-		  LONGEST value;
-		  const gdb_byte *bytes;
-		  struct dwarf2_locexpr_baton *baton;
-		  struct value *v;
-
-		  if (child->tag != DW_TAG_template_type_param
-		      && child->tag != DW_TAG_template_value_param)
-		    continue;
-
-		  if (first)
-		    {
-		      buf.puts ("<");
-		      first = 0;
-		    }
-		  else
-		    buf.puts (", ");
-
-		  attr = dwarf2_attr (child, DW_AT_type, cu);
-		  if (attr == NULL)
-		    {
-		      complaint (_("template parameter missing DW_AT_type"));
-		      buf.puts ("UNKNOWN_TYPE");
-		      continue;
-		    }
-		  type = die_type (child, cu);
-
-		  if (child->tag == DW_TAG_template_type_param)
-		    {
-		      c_print_type (type, "", &buf, -1, 0, cu->language,
-				    &type_print_raw_options);
-		      continue;
-		    }
-
-		  attr = dwarf2_attr (child, DW_AT_const_value, cu);
-		  if (attr == NULL)
-		    {
-		      complaint (_("template parameter missing "
-				   "DW_AT_const_value"));
-		      buf.puts ("UNKNOWN_VALUE");
-		      continue;
-		    }
-
-		  dwarf2_const_value_attr (attr, type, name,
-					   &cu->comp_unit_obstack, cu,
-					   &value, &bytes, &baton);
-
-		  if (TYPE_NOSIGN (type))
-		    /* GDB prints characters as NUMBER 'CHAR'.  If that's
-		       changed, this can use value_print instead.  */
-		    c_printchar (value, type, &buf);
-		  else
-		    {
-		      struct value_print_options opts;
-
-		      if (baton != NULL)
-			v = dwarf2_evaluate_loc_desc (type, NULL,
-						      baton->data,
-						      baton->size,
-						      baton->per_cu);
-		      else if (bytes != NULL)
-			{
-			  v = allocate_value (type);
-			  memcpy (value_contents_writeable (v), bytes,
-				  TYPE_LENGTH (type));
-			}
-		      else
-			v = value_from_longest (type, value);
-
-		      /* Specify decimal so that we do not depend on
-			 the radix.  */
-		      get_formatted_print_options (&opts, 'd');
-		      opts.raw = 1;
-		      value_print (v, &buf, &opts);
-		      release_value (v);
-		    }
-		}
-
-	      die->building_fullname = 0;
-
-	      if (!first)
-		{
-		  /* Close the argument list, with a space if necessary
-		     (nested templates).  */
-		  if (!buf.empty () && buf.string ().back () == '>')
-		    buf.puts (" >");
-		  else
-		    buf.puts (">");
-		}
-	    }
-
-	  /* For C++ methods, append formal parameter type
-	     information, if PHYSNAME.  */
-
-	  if (physname && die->tag == DW_TAG_subprogram
-	      && cu->language == language_cplus)
-	    {
-	      struct type *type = read_type_die (die, cu);
-
-	      c_type_print_args (type, &buf, 1, cu->language,
-				 &type_print_raw_options);
-
-	      if (cu->language == language_cplus)
-		{
-		  /* Assume that an artificial first parameter is
-		     "this", but do not crash if it is not.  RealView
-		     marks unnamed (and thus unused) parameters as
-		     artificial; there is no way to differentiate
-		     the two cases.  */
-		  if (TYPE_NFIELDS (type) > 0
-		      && TYPE_FIELD_ARTIFICIAL (type, 0)
-		      && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
-		      && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
-									0))))
-		    buf.puts (" const");
-		}
-	    }
-
-	  const std::string &intermediate_name = buf.string ();
-
-	  if (cu->language == language_cplus)
-	    canonical_name
-	      = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
-					  &objfile->per_bfd->storage_obstack);
-
-	  /* If we only computed INTERMEDIATE_NAME, or if
-	     INTERMEDIATE_NAME is already canonical, then we need to
-	     copy it to the appropriate obstack.  */
-	  if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
-	    name = obstack_strdup (&objfile->per_bfd->storage_obstack,
-				   intermediate_name);
-	  else
-	    name = canonical_name;
-	}
-    }
-
-  return name;
-}
-
-/* Return the fully qualified name of DIE, based on its DW_AT_name.
-   If scope qualifiers are appropriate they will be added.  The result
-   will be allocated on the storage_obstack, or NULL if the DIE does
-   not have a name.  NAME may either be from a previous call to
-   dwarf2_name or NULL.
-
-   The output string will be canonicalized (if C++).  */
-
-static const char *
-dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
-{
-  return dwarf2_compute_name (name, die, cu, 0);
-}
-
-/* Construct a physname for the given DIE in CU.  NAME may either be
-   from a previous call to dwarf2_name or NULL.  The result will be
-   allocated on the objfile_objstack or NULL if the DIE does not have a
-   name.
-
-   The output string will be canonicalized (if C++).  */
-
-static const char *
-dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  const char *retval, *mangled = NULL, *canon = NULL;
-  int need_copy = 1;
-
-  /* In this case dwarf2_compute_name is just a shortcut not building anything
-     on its own.  */
-  if (!die_needs_namespace (die, cu))
-    return dwarf2_compute_name (name, die, cu, 1);
-
-  mangled = dw2_linkage_name (die, cu);
-
-  /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
-     See https://github.com/rust-lang/rust/issues/32925.  */
-  if (cu->language == language_rust && mangled != NULL
-      && strchr (mangled, '{') != NULL)
-    mangled = NULL;
-
-  /* DW_AT_linkage_name is missing in some cases - depend on what GDB
-     has computed.  */
-  gdb::unique_xmalloc_ptr<char> demangled;
-  if (mangled != NULL)
-    {
-
-      if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
-	{
-	  /* Do nothing (do not demangle the symbol name).  */
-	}
-      else if (cu->language == language_go)
-	{
-	  /* This is a lie, but we already lie to the caller new_symbol.
-	     new_symbol assumes we return the mangled name.
-	     This just undoes that lie until things are cleaned up.  */
-	}
-      else
-	{
-	  /* Use DMGL_RET_DROP for C++ template functions to suppress
-	     their return type.  It is easier for GDB users to search
-	     for such functions as `name(params)' than `long name(params)'.
-	     In such case the minimal symbol names do not match the full
-	     symbol names but for template functions there is never a need
-	     to look up their definition from their declaration so
-	     the only disadvantage remains the minimal symbol variant
-	     `long name(params)' does not have the proper inferior type.  */
-	  demangled.reset (gdb_demangle (mangled,
-					 (DMGL_PARAMS | DMGL_ANSI
-					  | DMGL_RET_DROP)));
-	}
-      if (demangled)
-	canon = demangled.get ();
-      else
-	{
-	  canon = mangled;
-	  need_copy = 0;
-	}
-    }
-
-  if (canon == NULL || check_physname)
-    {
-      const char *physname = dwarf2_compute_name (name, die, cu, 1);
-
-      if (canon != NULL && strcmp (physname, canon) != 0)
-	{
-	  /* 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.  */
-
-	  complaint (_("Computed physname <%s> does not match demangled <%s> "
-		       "(from linkage <%s>) - DIE at %s [in module %s]"),
-		     physname, canon, mangled, sect_offset_str (die->sect_off),
-		     objfile_name (objfile));
-
-	  /* Prefer DW_AT_linkage_name (in the CANON form) - when it
-	     is available here - over computed PHYSNAME.  It is safer
-	     against both buggy GDB and buggy compilers.  */
-
-	  retval = canon;
-	}
-      else
-	{
-	  retval = physname;
-	  need_copy = 0;
-	}
-    }
-  else
-    retval = canon;
-
-  if (need_copy)
-    retval = obstack_strdup (&objfile->per_bfd->storage_obstack, retval);
-
-  return retval;
-}
-
-/* Inspect DIE in CU for a namespace alias.  If one exists, record
-   a new symbol for it.
-
-   Returns 1 if a namespace alias was recorded, 0 otherwise.  */
-
-static int
-read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-
-  /* If the die does not have a name, this is not a namespace
-     alias.  */
-  attr = dwarf2_attr (die, DW_AT_name, cu);
-  if (attr != NULL)
-    {
-      int num;
-      struct die_info *d = die;
-      struct dwarf2_cu *imported_cu = cu;
-
-      /* If the compiler has nested DW_AT_imported_declaration DIEs,
-	 keep inspecting DIEs until we hit the underlying import.  */
-#define MAX_NESTED_IMPORTED_DECLARATIONS 100
-      for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
-	{
-	  attr = dwarf2_attr (d, DW_AT_import, cu);
-	  if (attr == NULL)
-	    break;
-
-	  d = follow_die_ref (d, attr, &imported_cu);
-	  if (d->tag != DW_TAG_imported_declaration)
-	    break;
-	}
-
-      if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
-	{
-	  complaint (_("DIE at %s has too many recursively imported "
-		       "declarations"), sect_offset_str (d->sect_off));
-	  return 0;
-	}
-
-      if (attr != NULL)
-	{
-	  struct type *type;
-	  sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
-
-	  type = get_die_type_at_offset (sect_off, cu->per_cu);
-	  if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
-	    {
-	      /* This declaration is a global namespace alias.  Add
-		 a symbol for it whose type is the aliased namespace.  */
-	      new_symbol (die, type, cu);
-	      return 1;
-	    }
-	}
-    }
-
-  return 0;
-}
-
-/* Return the using directives repository (global or local?) to use in the
-   current context for CU.
-
-   For Ada, imported declarations can materialize renamings, which *may* be
-   global.  However it is impossible (for now?) in DWARF to distinguish
-   "external" imported declarations and "static" ones.  As all imported
-   declarations seem to be static in all other languages, make them all CU-wide
-   global only in Ada.  */
-
-static struct using_direct **
-using_directives (struct dwarf2_cu *cu)
-{
-  if (cu->language == language_ada
-      && cu->get_builder ()->outermost_context_p ())
-    return cu->get_builder ()->get_global_using_directives ();
-  else
-    return cu->get_builder ()->get_local_using_directives ();
-}
-
-/* Read the import statement specified by the given die and record it.  */
-
-static void
-read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct attribute *import_attr;
-  struct die_info *imported_die, *child_die;
-  struct dwarf2_cu *imported_cu;
-  const char *imported_name;
-  const char *imported_name_prefix;
-  const char *canonical_name;
-  const char *import_alias;
-  const char *imported_declaration = NULL;
-  const char *import_prefix;
-  std::vector<const char *> excludes;
-
-  import_attr = dwarf2_attr (die, DW_AT_import, cu);
-  if (import_attr == NULL)
-    {
-      complaint (_("Tag '%s' has no DW_AT_import"),
-		 dwarf_tag_name (die->tag));
-      return;
-    }
-
-  imported_cu = cu;
-  imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
-  imported_name = dwarf2_name (imported_die, imported_cu);
-  if (imported_name == NULL)
-    {
-      /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
-
-        The import in the following code:
-        namespace A
-          {
-            typedef int B;
-          }
-
-        int main ()
-          {
-            using A::B;
-            B b;
-            return b;
-          }
-
-        ...
-         <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
-            <52>   DW_AT_decl_file   : 1
-            <53>   DW_AT_decl_line   : 6
-            <54>   DW_AT_import      : <0x75>
-         <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
-            <59>   DW_AT_name        : B
-            <5b>   DW_AT_decl_file   : 1
-            <5c>   DW_AT_decl_line   : 2
-            <5d>   DW_AT_type        : <0x6e>
-        ...
-         <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
-            <76>   DW_AT_byte_size   : 4
-            <77>   DW_AT_encoding    : 5        (signed)
-
-        imports the wrong die ( 0x75 instead of 0x58 ).
-        This case will be ignored until the gcc bug is fixed.  */
-      return;
-    }
-
-  /* Figure out the local name after import.  */
-  import_alias = dwarf2_name (die, cu);
-
-  /* Figure out where the statement is being imported to.  */
-  import_prefix = determine_prefix (die, cu);
-
-  /* Figure out what the scope of the imported die is and prepend it
-     to the name of the imported die.  */
-  imported_name_prefix = determine_prefix (imported_die, imported_cu);
-
-  if (imported_die->tag != DW_TAG_namespace
-      && imported_die->tag != DW_TAG_module)
-    {
-      imported_declaration = imported_name;
-      canonical_name = imported_name_prefix;
-    }
-  else if (strlen (imported_name_prefix) > 0)
-    canonical_name = obconcat (&objfile->objfile_obstack,
-			       imported_name_prefix,
-			       (cu->language == language_d ? "." : "::"),
-			       imported_name, (char *) NULL);
-  else
-    canonical_name = imported_name;
-
-  if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
-    for (child_die = die->child; child_die && child_die->tag;
-	 child_die = sibling_die (child_die))
-      {
-	/* DWARF-4: A Fortran use statement with a â€œrename listâ€� may be
-	   represented by an imported module entry with an import attribute
-	   referring to the module and owned entries corresponding to those
-	   entities that are renamed as part of being imported.  */
-
-	if (child_die->tag != DW_TAG_imported_declaration)
-	  {
-	    complaint (_("child DW_TAG_imported_declaration expected "
-			 "- DIE at %s [in module %s]"),
-		       sect_offset_str (child_die->sect_off),
-		       objfile_name (objfile));
-	    continue;
-	  }
-
-	import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
-	if (import_attr == NULL)
-	  {
-	    complaint (_("Tag '%s' has no DW_AT_import"),
-		       dwarf_tag_name (child_die->tag));
-	    continue;
-	  }
-
-	imported_cu = cu;
-	imported_die = follow_die_ref_or_sig (child_die, import_attr,
-					      &imported_cu);
-	imported_name = dwarf2_name (imported_die, imported_cu);
-	if (imported_name == NULL)
-	  {
-	    complaint (_("child DW_TAG_imported_declaration has unknown "
-			 "imported name - DIE at %s [in module %s]"),
-		       sect_offset_str (child_die->sect_off),
-		       objfile_name (objfile));
-	    continue;
-	  }
-
-	excludes.push_back (imported_name);
-
-	process_die (child_die, cu);
-      }
-
-  add_using_directive (using_directives (cu),
-		       import_prefix,
-		       canonical_name,
-		       import_alias,
-		       imported_declaration,
-		       excludes,
-		       0,
-		       &objfile->objfile_obstack);
-}
-
-/* ICC<14 does not output the required DW_AT_declaration on incomplete
-   types, but gives them a size of zero.  Starting with version 14,
-   ICC is compatible with GCC.  */
-
-static bool
-producer_is_icc_lt_14 (struct dwarf2_cu *cu)
-{
-  if (!cu->checked_producer)
-    check_producer (cu);
-
-  return cu->producer_is_icc_lt_14;
-}
-
-/* ICC generates a DW_AT_type for C void functions.  This was observed on
-   ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
-   which says that void functions should not have a DW_AT_type.  */
-
-static bool
-producer_is_icc (struct dwarf2_cu *cu)
-{
-  if (!cu->checked_producer)
-    check_producer (cu);
-
-  return cu->producer_is_icc;
-}
-
-/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
-   directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
-   this, it was first present in GCC release 4.3.0.  */
-
-static bool
-producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
-{
-  if (!cu->checked_producer)
-    check_producer (cu);
-
-  return cu->producer_is_gcc_lt_4_3;
-}
-
-static file_and_directory
-find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
-{
-  file_and_directory res;
-
-  /* Find the filename.  Do not use dwarf2_name here, since the filename
-     is not a source language identifier.  */
-  res.name = dwarf2_string_attr (die, DW_AT_name, cu);
-  res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
-
-  if (res.comp_dir == NULL
-      && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
-      && IS_ABSOLUTE_PATH (res.name))
-    {
-      res.comp_dir_storage = ldirname (res.name);
-      if (!res.comp_dir_storage.empty ())
-	res.comp_dir = res.comp_dir_storage.c_str ();
-    }
-  if (res.comp_dir != NULL)
-    {
-      /* Irix 6.2 native cc prepends <machine>.: to the compilation
-	 directory, get rid of it.  */
-      const char *cp = strchr (res.comp_dir, ':');
-
-      if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
-	res.comp_dir = cp + 1;
-    }
-
-  if (res.name == NULL)
-    res.name = "<unknown>";
-
-  return res;
-}
-
-/* Handle DW_AT_stmt_list for a compilation unit.
-   DIE is the DW_TAG_compile_unit die for CU.
-   COMP_DIR is the compilation directory.  LOWPC is passed to
-   dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
-
-static void
-handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
-			const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct attribute *attr;
-  struct line_header line_header_local;
-  hashval_t line_header_local_hash;
-  void **slot;
-  int decode_mapping;
-
-  gdb_assert (! cu->per_cu->is_debug_types);
-
-  attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
-  if (attr == NULL)
-    return;
-
-  sect_offset line_offset = (sect_offset) DW_UNSND (attr);
-
-  /* The line header hash table is only created if needed (it exists to
-     prevent redundant reading of the line table for partial_units).
-     If we're given a partial_unit, we'll need it.  If we're given a
-     compile_unit, then use the line header hash table if it's already
-     created, but don't create one just yet.  */
-
-  if (dwarf2_per_objfile->line_header_hash == NULL
-      && die->tag == DW_TAG_partial_unit)
-    {
-      dwarf2_per_objfile->line_header_hash
-	= htab_create_alloc_ex (127, line_header_hash_voidp,
-				line_header_eq_voidp,
-				free_line_header_voidp,
-				&objfile->objfile_obstack,
-				hashtab_obstack_allocate,
-				dummy_obstack_deallocate);
-    }
-
-  line_header_local.sect_off = line_offset;
-  line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
-  line_header_local_hash = line_header_hash (&line_header_local);
-  if (dwarf2_per_objfile->line_header_hash != NULL)
-    {
-      slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
-				       &line_header_local,
-				       line_header_local_hash, NO_INSERT);
-
-      /* For DW_TAG_compile_unit we need info like symtab::linetable which
-	 is not present in *SLOT (since if there is something in *SLOT then
-	 it will be for a partial_unit).  */
-      if (die->tag == DW_TAG_partial_unit && slot != NULL)
-	{
-	  gdb_assert (*slot != NULL);
-	  cu->line_header = (struct line_header *) *slot;
-	  return;
-	}
-    }
-
-  /* dwarf_decode_line_header does not yet provide sufficient information.
-     We always have to call also dwarf_decode_lines for it.  */
-  line_header_up lh = dwarf_decode_line_header (line_offset, cu);
-  if (lh == NULL)
-    return;
-
-  cu->line_header = lh.release ();
-  cu->line_header_die_owner = die;
-
-  if (dwarf2_per_objfile->line_header_hash == NULL)
-    slot = NULL;
-  else
-    {
-      slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
-				       &line_header_local,
-				       line_header_local_hash, INSERT);
-      gdb_assert (slot != NULL);
-    }
-  if (slot != NULL && *slot == NULL)
-    {
-      /* This newly decoded line number information unit will be owned
-	 by line_header_hash hash table.  */
-      *slot = cu->line_header;
-      cu->line_header_die_owner = NULL;
-    }
-  else
-    {
-      /* We cannot free any current entry in (*slot) as that struct line_header
-         may be already used by multiple CUs.  Create only temporary decoded
-	 line_header for this CU - it may happen at most once for each line
-	 number information unit.  And if we're not using line_header_hash
-	 then this is what we want as well.  */
-      gdb_assert (die->tag != DW_TAG_partial_unit);
-    }
-  decode_mapping = (die->tag != DW_TAG_partial_unit);
-  dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
-		      decode_mapping);
-
-}
-
-/* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
-
-static void
-read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  CORE_ADDR lowpc = ((CORE_ADDR) -1);
-  CORE_ADDR highpc = ((CORE_ADDR) 0);
-  struct attribute *attr;
-  struct die_info *child_die;
-  CORE_ADDR baseaddr;
-
-  prepare_one_comp_unit (cu, die, cu->language);
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  get_scope_pc_bounds (die, &lowpc, &highpc, cu);
-
-  /* If we didn't find a lowpc, set it to highpc to avoid complaints
-     from finish_block.  */
-  if (lowpc == ((CORE_ADDR) -1))
-    lowpc = highpc;
-  lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
-
-  file_and_directory fnd = find_file_and_directory (die, cu);
-
-  /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
-     standardised yet.  As a workaround for the language detection we fall
-     back to the DW_AT_producer string.  */
-  if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
-    cu->language = language_opencl;
-
-  /* Similar hack for Go.  */
-  if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
-    set_cu_language (DW_LANG_Go, cu);
-
-  cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
-
-  /* Decode line number information if present.  We do this before
-     processing child DIEs, so that the line header table is available
-     for DW_AT_decl_file.  */
-  handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
-
-  /* Process all dies in compilation unit.  */
-  if (die->child != NULL)
-    {
-      child_die = die->child;
-      while (child_die && child_die->tag)
-	{
-	  process_die (child_die, cu);
-	  child_die = sibling_die (child_die);
-	}
-    }
-
-  /* Decode macro information, if present.  Dwarf 2 macro information
-     refers to information in the line number info statement program
-     header, so we can only read it if we've read the header
-     successfully.  */
-  attr = dwarf2_attr (die, DW_AT_macros, cu);
-  if (attr == NULL)
-    attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
-  if (attr && cu->line_header)
-    {
-      if (dwarf2_attr (die, DW_AT_macro_info, cu))
-	complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
-
-      dwarf_decode_macros (cu, DW_UNSND (attr), 1);
-    }
-  else
-    {
-      attr = dwarf2_attr (die, DW_AT_macro_info, cu);
-      if (attr && cu->line_header)
-	{
-	  unsigned int macro_offset = DW_UNSND (attr);
-
-	  dwarf_decode_macros (cu, macro_offset, 0);
-	}
-    }
-}
-
-void
-dwarf2_cu::setup_type_unit_groups (struct die_info *die)
-{
-  struct type_unit_group *tu_group;
-  int first_time;
-  struct attribute *attr;
-  unsigned int i;
-  struct signatured_type *sig_type;
-
-  gdb_assert (per_cu->is_debug_types);
-  sig_type = (struct signatured_type *) per_cu;
-
-  attr = dwarf2_attr (die, DW_AT_stmt_list, this);
-
-  /* If we're using .gdb_index (includes -readnow) then
-     per_cu->type_unit_group may not have been set up yet.  */
-  if (sig_type->type_unit_group == NULL)
-    sig_type->type_unit_group = get_type_unit_group (this, attr);
-  tu_group = sig_type->type_unit_group;
-
-  /* If we've already processed this stmt_list there's no real need to
-     do it again, we could fake it and just recreate the part we need
-     (file name,index -> symtab mapping).  If data shows this optimization
-     is useful we can do it then.  */
-  first_time = tu_group->compunit_symtab == NULL;
-
-  /* We have to handle the case of both a missing DW_AT_stmt_list or bad
-     debug info.  */
-  line_header_up lh;
-  if (attr != NULL)
-    {
-      sect_offset line_offset = (sect_offset) DW_UNSND (attr);
-      lh = dwarf_decode_line_header (line_offset, this);
-    }
-  if (lh == NULL)
-    {
-      if (first_time)
-	start_symtab ("", NULL, 0);
-      else
-	{
-	  gdb_assert (tu_group->symtabs == NULL);
-	  gdb_assert (m_builder == nullptr);
-	  struct compunit_symtab *cust = tu_group->compunit_symtab;
-	  m_builder.reset (new struct buildsym_compunit
-			   (COMPUNIT_OBJFILE (cust), "",
-			    COMPUNIT_DIRNAME (cust),
-			    compunit_language (cust),
-			    0, cust));
-	}
-      return;
-    }
-
-  line_header = lh.release ();
-  line_header_die_owner = die;
-
-  if (first_time)
-    {
-      struct compunit_symtab *cust = start_symtab ("", NULL, 0);
-
-      /* Note: We don't assign tu_group->compunit_symtab yet because we're
-	 still initializing it, and our caller (a few levels up)
-	 process_full_type_unit still needs to know if this is the first
-	 time.  */
-
-      tu_group->num_symtabs = line_header->file_names_size ();
-      tu_group->symtabs = XNEWVEC (struct symtab *,
-				   line_header->file_names_size ());
-
-      auto &file_names = line_header->file_names ();
-      for (i = 0; i < file_names.size (); ++i)
-	{
-	  file_entry &fe = file_names[i];
-	  dwarf2_start_subfile (this, fe.name,
-				fe.include_dir (line_header));
-	  buildsym_compunit *b = get_builder ();
-	  if (b->get_current_subfile ()->symtab == NULL)
-	    {
-	      /* NOTE: start_subfile will recognize when it's been
-		 passed a file it has already seen.  So we can't
-		 assume there's a simple mapping from
-		 cu->line_header->file_names to subfiles, plus
-		 cu->line_header->file_names may contain dups.  */
-	      b->get_current_subfile ()->symtab
-		= allocate_symtab (cust, b->get_current_subfile ()->name);
-	    }
-
-	  fe.symtab = b->get_current_subfile ()->symtab;
-	  tu_group->symtabs[i] = fe.symtab;
-	}
-    }
-  else
-    {
-      gdb_assert (m_builder == nullptr);
-      struct compunit_symtab *cust = tu_group->compunit_symtab;
-      m_builder.reset (new struct buildsym_compunit
-		       (COMPUNIT_OBJFILE (cust), "",
-			COMPUNIT_DIRNAME (cust),
-			compunit_language (cust),
-			0, cust));
-
-      auto &file_names = line_header->file_names ();
-      for (i = 0; i < file_names.size (); ++i)
-	{
-	  file_entry &fe = file_names[i];
-	  fe.symtab = tu_group->symtabs[i];
-	}
-    }
-
-  /* The main symtab is allocated last.  Type units don't have DW_AT_name
-     so they don't have a "real" (so to speak) symtab anyway.
-     There is later code that will assign the main symtab to all symbols
-     that don't have one.  We need to handle the case of a symbol with a
-     missing symtab (DW_AT_decl_file) anyway.  */
-}
-
-/* Process DW_TAG_type_unit.
-   For TUs we want to skip the first top level sibling if it's not the
-   actual type being defined by this TU.  In this case the first top
-   level sibling is there to provide context only.  */
-
-static void
-read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct die_info *child_die;
-
-  prepare_one_comp_unit (cu, die, language_minimal);
-
-  /* Initialize (or reinitialize) the machinery for building symtabs.
-     We do this before processing child DIEs, so that the line header table
-     is available for DW_AT_decl_file.  */
-  cu->setup_type_unit_groups (die);
-
-  if (die->child != NULL)
-    {
-      child_die = die->child;
-      while (child_die && child_die->tag)
-	{
-	  process_die (child_die, cu);
-	  child_die = sibling_die (child_die);
-	}
-    }
-}
-
-/* DWO/DWP files.
-
-   http://gcc.gnu.org/wiki/DebugFission
-   http://gcc.gnu.org/wiki/DebugFissionDWP
-
-   To simplify handling of both DWO files ("object" files with the DWARF info)
-   and DWP files (a file with the DWOs packaged up into one file), we treat
-   DWP files as having a collection of virtual DWO files.  */
-
-static hashval_t
-hash_dwo_file (const void *item)
-{
-  const struct dwo_file *dwo_file = (const struct dwo_file *) item;
-  hashval_t hash;
-
-  hash = htab_hash_string (dwo_file->dwo_name);
-  if (dwo_file->comp_dir != NULL)
-    hash += htab_hash_string (dwo_file->comp_dir);
-  return hash;
-}
-
-static int
-eq_dwo_file (const void *item_lhs, const void *item_rhs)
-{
-  const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
-  const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
-
-  if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
-    return 0;
-  if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
-    return lhs->comp_dir == rhs->comp_dir;
-  return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
-}
-
-/* Allocate a hash table for DWO files.  */
-
-static htab_up
-allocate_dwo_file_hash_table (struct objfile *objfile)
-{
-  auto delete_dwo_file = [] (void *item)
-    {
-      struct dwo_file *dwo_file = (struct dwo_file *) item;
-
-      delete dwo_file;
-    };
-
-  return htab_up (htab_create_alloc_ex (41,
-					hash_dwo_file,
-					eq_dwo_file,
-					delete_dwo_file,
-					&objfile->objfile_obstack,
-					hashtab_obstack_allocate,
-					dummy_obstack_deallocate));
-}
-
-/* Lookup DWO file DWO_NAME.  */
-
-static void **
-lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
-		      const char *dwo_name,
-		      const char *comp_dir)
-{
-  struct dwo_file find_entry;
-  void **slot;
-
-  if (dwarf2_per_objfile->dwo_files == NULL)
-    dwarf2_per_objfile->dwo_files
-      = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
-
-  find_entry.dwo_name = dwo_name;
-  find_entry.comp_dir = comp_dir;
-  slot = htab_find_slot (dwarf2_per_objfile->dwo_files.get (), &find_entry,
-			 INSERT);
-
-  return slot;
-}
-
-static hashval_t
-hash_dwo_unit (const void *item)
-{
-  const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
-
-  /* This drops the top 32 bits of the id, but is ok for a hash.  */
-  return dwo_unit->signature;
-}
-
-static int
-eq_dwo_unit (const void *item_lhs, const void *item_rhs)
-{
-  const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
-  const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
-
-  /* The signature is assumed to be unique within the DWO file.
-     So while object file CU dwo_id's always have the value zero,
-     that's OK, assuming each object file DWO file has only one CU,
-     and that's the rule for now.  */
-  return lhs->signature == rhs->signature;
-}
-
-/* Allocate a hash table for DWO CUs,TUs.
-   There is one of these tables for each of CUs,TUs for each DWO file.  */
-
-static htab_t
-allocate_dwo_unit_table (struct objfile *objfile)
-{
-  /* Start out with a pretty small number.
-     Generally DWO files contain only one CU and maybe some TUs.  */
-  return htab_create_alloc_ex (3,
-			       hash_dwo_unit,
-			       eq_dwo_unit,
-			       NULL,
-			       &objfile->objfile_obstack,
-			       hashtab_obstack_allocate,
-			       dummy_obstack_deallocate);
-}
-
-/* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
-
-struct create_dwo_cu_data
-{
-  struct dwo_file *dwo_file;
-  struct dwo_unit dwo_unit;
-};
-
-/* die_reader_func for create_dwo_cu.  */
-
-static void
-create_dwo_cu_reader (const struct die_reader_specs *reader,
-		      const gdb_byte *info_ptr,
-		      struct die_info *comp_unit_die,
-		      int has_children,
-		      void *datap)
-{
-  struct dwarf2_cu *cu = reader->cu;
-  sect_offset sect_off = cu->per_cu->sect_off;
-  struct dwarf2_section_info *section = cu->per_cu->section;
-  struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
-  struct dwo_file *dwo_file = data->dwo_file;
-  struct dwo_unit *dwo_unit = &data->dwo_unit;
-
-  gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
-  if (!signature.has_value ())
-    {
-      complaint (_("Dwarf Error: debug entry at offset %s is missing"
-		   " its dwo_id [in module %s]"),
-		 sect_offset_str (sect_off), dwo_file->dwo_name);
-      return;
-    }
-
-  dwo_unit->dwo_file = dwo_file;
-  dwo_unit->signature = *signature;
-  dwo_unit->section = section;
-  dwo_unit->sect_off = sect_off;
-  dwo_unit->length = cu->per_cu->length;
-
-  if (dwarf_read_debug)
-    fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
-			sect_offset_str (sect_off),
-			hex_string (dwo_unit->signature));
-}
-
-/* Create the dwo_units for the CUs in a DWO_FILE.
-   Note: This function processes DWO files only, not DWP files.  */
-
-static void
-create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
-		       struct dwo_file &dwo_file, dwarf2_section_info &section,
-		       htab_t &cus_htab)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  const gdb_byte *info_ptr, *end_ptr;
-
-  dwarf2_read_section (objfile, &section);
-  info_ptr = section.buffer;
-
-  if (info_ptr == NULL)
-    return;
-
-  if (dwarf_read_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
-			  get_section_name (&section),
-			  get_section_file_name (&section));
-    }
-
-  end_ptr = info_ptr + section.size;
-  while (info_ptr < end_ptr)
-    {
-      struct dwarf2_per_cu_data per_cu;
-      struct create_dwo_cu_data create_dwo_cu_data;
-      struct dwo_unit *dwo_unit;
-      void **slot;
-      sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
-
-      memset (&create_dwo_cu_data.dwo_unit, 0,
-	      sizeof (create_dwo_cu_data.dwo_unit));
-      memset (&per_cu, 0, sizeof (per_cu));
-      per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
-      per_cu.is_debug_types = 0;
-      per_cu.sect_off = sect_offset (info_ptr - section.buffer);
-      per_cu.section = &section;
-      create_dwo_cu_data.dwo_file = &dwo_file;
-
-      init_cutu_and_read_dies_no_follow (
-	  &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
-      info_ptr += per_cu.length;
-
-      // If the unit could not be parsed, skip it.
-      if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
-	continue;
-
-      if (cus_htab == NULL)
-	cus_htab = allocate_dwo_unit_table (objfile);
-
-      dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
-      *dwo_unit = create_dwo_cu_data.dwo_unit;
-      slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
-      gdb_assert (slot != NULL);
-      if (*slot != NULL)
-	{
-	  const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
-	  sect_offset dup_sect_off = dup_cu->sect_off;
-
-	  complaint (_("debug cu entry at offset %s is duplicate to"
-		       " the entry at offset %s, signature %s"),
-		     sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
-		     hex_string (dwo_unit->signature));
-	}
-      *slot = (void *)dwo_unit;
-    }
-}
-
-/* DWP file .debug_{cu,tu}_index section format:
-   [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
-
-   DWP Version 1:
-
-   Both index sections have the same format, and serve to map a 64-bit
-   signature to a set of section numbers.  Each section begins with a header,
-   followed by a hash table of 64-bit signatures, a parallel table of 32-bit
-   indexes, and a pool of 32-bit section numbers.  The index sections will be
-   aligned at 8-byte boundaries in the file.
-
-   The index section header consists of:
-
-    V, 32 bit version number
-    -, 32 bits unused
-    N, 32 bit number of compilation units or type units in the index
-    M, 32 bit number of slots in the hash table
-
-   Numbers are recorded using the byte order of the application binary.
-
-   The hash table begins at offset 16 in the section, and consists of an array
-   of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
-   order of the application binary).  Unused slots in the hash table are 0.
-   (We rely on the extreme unlikeliness of a signature being exactly 0.)
-
-   The parallel table begins immediately after the hash table
-   (at offset 16 + 8 * M from the beginning of the section), and consists of an
-   array of 32-bit indexes (using the byte order of the application binary),
-   corresponding 1-1 with slots in the hash table.  Each entry in the parallel
-   table contains a 32-bit index into the pool of section numbers.  For unused
-   hash table slots, the corresponding entry in the parallel table will be 0.
-
-   The pool of section numbers begins immediately following the hash table
-   (at offset 16 + 12 * M from the beginning of the section).  The pool of
-   section numbers consists of an array of 32-bit words (using the byte order
-   of the application binary).  Each item in the array is indexed starting
-   from 0.  The hash table entry provides the index of the first section
-   number in the set.  Additional section numbers in the set follow, and the
-   set is terminated by a 0 entry (section number 0 is not used in ELF).
-
-   In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
-   section must be the first entry in the set, and the .debug_abbrev.dwo must
-   be the second entry. Other members of the set may follow in any order.
-
-   ---
-
-   DWP Version 2:
-
-   DWP Version 2 combines all the .debug_info, etc. sections into one,
-   and the entries in the index tables are now offsets into these sections.
-   CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
-   section.
-
-   Index Section Contents:
-    Header
-    Hash Table of Signatures   dwp_hash_table.hash_table
-    Parallel Table of Indices  dwp_hash_table.unit_table
-    Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
-    Table of Section Sizes     dwp_hash_table.v2.sizes
-
-   The index section header consists of:
-
-    V, 32 bit version number
-    L, 32 bit number of columns in the table of section offsets
-    N, 32 bit number of compilation units or type units in the index
-    M, 32 bit number of slots in the hash table
-
-   Numbers are recorded using the byte order of the application binary.
-
-   The hash table has the same format as version 1.
-   The parallel table of indices has the same format as version 1,
-   except that the entries are origin-1 indices into the table of sections
-   offsets and the table of section sizes.
-
-   The table of offsets begins immediately following the parallel table
-   (at offset 16 + 12 * M from the beginning of the section).  The table is
-   a two-dimensional array of 32-bit words (using the byte order of the
-   application binary), with L columns and N+1 rows, in row-major order.
-   Each row in the array is indexed starting from 0.  The first row provides
-   a key to the remaining rows: each column in this row provides an identifier
-   for a debug section, and the offsets in the same column of subsequent rows
-   refer to that section.  The section identifiers are:
-
-    DW_SECT_INFO         1  .debug_info.dwo
-    DW_SECT_TYPES        2  .debug_types.dwo
-    DW_SECT_ABBREV       3  .debug_abbrev.dwo
-    DW_SECT_LINE         4  .debug_line.dwo
-    DW_SECT_LOC          5  .debug_loc.dwo
-    DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
-    DW_SECT_MACINFO      7  .debug_macinfo.dwo
-    DW_SECT_MACRO        8  .debug_macro.dwo
-
-   The offsets provided by the CU and TU index sections are the base offsets
-   for the contributions made by each CU or TU to the corresponding section
-   in the package file.  Each CU and TU header contains an abbrev_offset
-   field, used to find the abbreviations table for that CU or TU within the
-   contribution to the .debug_abbrev.dwo section for that CU or TU, and should
-   be interpreted as relative to the base offset given in the index section.
-   Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
-   should be interpreted as relative to the base offset for .debug_line.dwo,
-   and offsets into other debug sections obtained from DWARF attributes should
-   also be interpreted as relative to the corresponding base offset.
-
-   The table of sizes begins immediately following the table of offsets.
-   Like the table of offsets, it is a two-dimensional array of 32-bit words,
-   with L columns and N rows, in row-major order.  Each row in the array is
-   indexed starting from 1 (row 0 is shared by the two tables).
-
-   ---
-
-   Hash table lookup is handled the same in version 1 and 2:
-
-   We assume that N and M will not exceed 2^32 - 1.
-   The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
-
-   Given a 64-bit compilation unit signature or a type signature S, an entry
-   in the hash table is located as follows:
-
-   1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
-      the low-order k bits all set to 1.
-
-   2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
-
-   3) If the hash table entry at index H matches the signature, use that
-      entry.  If the hash table entry at index H is unused (all zeroes),
-      terminate the search: the signature is not present in the table.
-
-   4) Let H = (H + H') modulo M. Repeat at Step 3.
-
-   Because M > N and H' and M are relatively prime, the search is guaranteed
-   to stop at an unused slot or find the match.  */
-
-/* Create a hash table to map DWO IDs to their CU/TU entry in
-   .debug_{info,types}.dwo in DWP_FILE.
-   Returns NULL if there isn't one.
-   Note: This function processes DWP files only, not DWO files.  */
-
-static struct dwp_hash_table *
-create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
-		       struct dwp_file *dwp_file, int is_debug_types)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  bfd *dbfd = dwp_file->dbfd.get ();
-  const gdb_byte *index_ptr, *index_end;
-  struct dwarf2_section_info *index;
-  uint32_t version, nr_columns, nr_units, nr_slots;
-  struct dwp_hash_table *htab;
-
-  if (is_debug_types)
-    index = &dwp_file->sections.tu_index;
-  else
-    index = &dwp_file->sections.cu_index;
-
-  if (dwarf2_section_empty_p (index))
-    return NULL;
-  dwarf2_read_section (objfile, index);
-
-  index_ptr = index->buffer;
-  index_end = index_ptr + index->size;
-
-  version = read_4_bytes (dbfd, index_ptr);
-  index_ptr += 4;
-  if (version == 2)
-    nr_columns = read_4_bytes (dbfd, index_ptr);
-  else
-    nr_columns = 0;
-  index_ptr += 4;
-  nr_units = read_4_bytes (dbfd, index_ptr);
-  index_ptr += 4;
-  nr_slots = read_4_bytes (dbfd, index_ptr);
-  index_ptr += 4;
-
-  if (version != 1 && version != 2)
-    {
-      error (_("Dwarf Error: unsupported DWP file version (%s)"
-	       " [in module %s]"),
-	     pulongest (version), dwp_file->name);
-    }
-  if (nr_slots != (nr_slots & -nr_slots))
-    {
-      error (_("Dwarf Error: number of slots in DWP hash table (%s)"
-	       " is not power of 2 [in module %s]"),
-	     pulongest (nr_slots), dwp_file->name);
-    }
-
-  htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
-  htab->version = version;
-  htab->nr_columns = nr_columns;
-  htab->nr_units = nr_units;
-  htab->nr_slots = nr_slots;
-  htab->hash_table = index_ptr;
-  htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
-
-  /* Exit early if the table is empty.  */
-  if (nr_slots == 0 || nr_units == 0
-      || (version == 2 && nr_columns == 0))
-    {
-      /* All must be zero.  */
-      if (nr_slots != 0 || nr_units != 0
-	  || (version == 2 && nr_columns != 0))
-	{
-	  complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
-		       " all zero [in modules %s]"),
-		     dwp_file->name);
-	}
-      return htab;
-    }
-
-  if (version == 1)
-    {
-      htab->section_pool.v1.indices =
-	htab->unit_table + sizeof (uint32_t) * nr_slots;
-      /* It's harder to decide whether the section is too small in v1.
-	 V1 is deprecated anyway so we punt.  */
-    }
-  else
-    {
-      const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
-      int *ids = htab->section_pool.v2.section_ids;
-      size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
-      /* Reverse map for error checking.  */
-      int ids_seen[DW_SECT_MAX + 1];
-      int i;
-
-      if (nr_columns < 2)
-	{
-	  error (_("Dwarf Error: bad DWP hash table, too few columns"
-		   " in section table [in module %s]"),
-		 dwp_file->name);
-	}
-      if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
-	{
-	  error (_("Dwarf Error: bad DWP hash table, too many columns"
-		   " in section table [in module %s]"),
-		 dwp_file->name);
-	}
-      memset (ids, 255, sizeof_ids);
-      memset (ids_seen, 255, sizeof (ids_seen));
-      for (i = 0; i < nr_columns; ++i)
-	{
-	  int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
-
-	  if (id < DW_SECT_MIN || id > DW_SECT_MAX)
-	    {
-	      error (_("Dwarf Error: bad DWP hash table, bad section id %d"
-		       " in section table [in module %s]"),
-		     id, dwp_file->name);
-	    }
-	  if (ids_seen[id] != -1)
-	    {
-	      error (_("Dwarf Error: bad DWP hash table, duplicate section"
-		       " id %d in section table [in module %s]"),
-		     id, dwp_file->name);
-	    }
-	  ids_seen[id] = i;
-	  ids[i] = id;
-	}
-      /* Must have exactly one info or types section.  */
-      if (((ids_seen[DW_SECT_INFO] != -1)
-	   + (ids_seen[DW_SECT_TYPES] != -1))
-	  != 1)
-	{
-	  error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
-		   " DWO info/types section [in module %s]"),
-		 dwp_file->name);
-	}
-      /* Must have an abbrev section.  */
-      if (ids_seen[DW_SECT_ABBREV] == -1)
-	{
-	  error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
-		   " section [in module %s]"),
-		 dwp_file->name);
-	}
-      htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
-      htab->section_pool.v2.sizes =
-	htab->section_pool.v2.offsets + (sizeof (uint32_t)
-					 * nr_units * nr_columns);
-      if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
-					  * nr_units * nr_columns))
-	  > index_end)
-	{
-	  error (_("Dwarf Error: DWP index section is corrupt (too small)"
-		   " [in module %s]"),
-		 dwp_file->name);
-	}
-    }
-
-  return htab;
-}
-
-/* Update SECTIONS with the data from SECTP.
-
-   This function is like the other "locate" section routines that are
-   passed to bfd_map_over_sections, but in this context the sections to
-   read comes from the DWP V1 hash table, not the full ELF section table.
-
-   The result is non-zero for success, or zero if an error was found.  */
-
-static int
-locate_v1_virtual_dwo_sections (asection *sectp,
-				struct virtual_v1_dwo_sections *sections)
-{
-  const struct dwop_section_names *names = &dwop_section_names;
-
-  if (section_is_p (sectp->name, &names->abbrev_dwo))
-    {
-      /* There can be only one.  */
-      if (sections->abbrev.s.section != NULL)
-	return 0;
-      sections->abbrev.s.section = sectp;
-      sections->abbrev.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->info_dwo)
-	   || section_is_p (sectp->name, &names->types_dwo))
-    {
-      /* There can be only one.  */
-      if (sections->info_or_types.s.section != NULL)
-	return 0;
-      sections->info_or_types.s.section = sectp;
-      sections->info_or_types.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->line_dwo))
-    {
-      /* There can be only one.  */
-      if (sections->line.s.section != NULL)
-	return 0;
-      sections->line.s.section = sectp;
-      sections->line.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->loc_dwo))
-    {
-      /* There can be only one.  */
-      if (sections->loc.s.section != NULL)
-	return 0;
-      sections->loc.s.section = sectp;
-      sections->loc.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->macinfo_dwo))
-    {
-      /* There can be only one.  */
-      if (sections->macinfo.s.section != NULL)
-	return 0;
-      sections->macinfo.s.section = sectp;
-      sections->macinfo.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->macro_dwo))
-    {
-      /* There can be only one.  */
-      if (sections->macro.s.section != NULL)
-	return 0;
-      sections->macro.s.section = sectp;
-      sections->macro.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->str_offsets_dwo))
-    {
-      /* There can be only one.  */
-      if (sections->str_offsets.s.section != NULL)
-	return 0;
-      sections->str_offsets.s.section = sectp;
-      sections->str_offsets.size = bfd_section_size (sectp);
-    }
-  else
-    {
-      /* No other kind of section is valid.  */
-      return 0;
-    }
-
-  return 1;
-}
-
-/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
-   UNIT_INDEX is the index of the DWO unit in the DWP hash table.
-   COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
-   This is for DWP version 1 files.  */
-
-static struct dwo_unit *
-create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			   struct dwp_file *dwp_file,
-			   uint32_t unit_index,
-			   const char *comp_dir,
-			   ULONGEST signature, int is_debug_types)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  const struct dwp_hash_table *dwp_htab =
-    is_debug_types ? dwp_file->tus : dwp_file->cus;
-  bfd *dbfd = dwp_file->dbfd.get ();
-  const char *kind = is_debug_types ? "TU" : "CU";
-  struct dwo_file *dwo_file;
-  struct dwo_unit *dwo_unit;
-  struct virtual_v1_dwo_sections sections;
-  void **dwo_file_slot;
-  int i;
-
-  gdb_assert (dwp_file->version == 1);
-
-  if (dwarf_read_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
-			  kind,
-			  pulongest (unit_index), hex_string (signature),
-			  dwp_file->name);
-    }
-
-  /* Fetch the sections of this DWO unit.
-     Put a limit on the number of sections we look for so that bad data
-     doesn't cause us to loop forever.  */
-
-#define MAX_NR_V1_DWO_SECTIONS \
-  (1 /* .debug_info or .debug_types */ \
-   + 1 /* .debug_abbrev */ \
-   + 1 /* .debug_line */ \
-   + 1 /* .debug_loc */ \
-   + 1 /* .debug_str_offsets */ \
-   + 1 /* .debug_macro or .debug_macinfo */ \
-   + 1 /* trailing zero */)
-
-  memset (&sections, 0, sizeof (sections));
-
-  for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
-    {
-      asection *sectp;
-      uint32_t section_nr =
-	read_4_bytes (dbfd,
-		      dwp_htab->section_pool.v1.indices
-		      + (unit_index + i) * sizeof (uint32_t));
-
-      if (section_nr == 0)
-	break;
-      if (section_nr >= dwp_file->num_sections)
-	{
-	  error (_("Dwarf Error: bad DWP hash table, section number too large"
-		   " [in module %s]"),
-		 dwp_file->name);
-	}
-
-      sectp = dwp_file->elf_sections[section_nr];
-      if (! locate_v1_virtual_dwo_sections (sectp, &sections))
-	{
-	  error (_("Dwarf Error: bad DWP hash table, invalid section found"
-		   " [in module %s]"),
-		 dwp_file->name);
-	}
-    }
-
-  if (i < 2
-      || dwarf2_section_empty_p (&sections.info_or_types)
-      || dwarf2_section_empty_p (&sections.abbrev))
-    {
-      error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
-	       " [in module %s]"),
-	     dwp_file->name);
-    }
-  if (i == MAX_NR_V1_DWO_SECTIONS)
-    {
-      error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
-	       " [in module %s]"),
-	     dwp_file->name);
-    }
-
-  /* It's easier for the rest of the code if we fake a struct dwo_file and
-     have dwo_unit "live" in that.  At least for now.
-
-     The DWP file can be made up of a random collection of CUs and TUs.
-     However, for each CU + set of TUs that came from the same original DWO
-     file, we can combine them back into a virtual DWO file to save space
-     (fewer struct dwo_file objects to allocate).  Remember that for really
-     large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
-
-  std::string virtual_dwo_name =
-    string_printf ("virtual-dwo/%d-%d-%d-%d",
-		   get_section_id (&sections.abbrev),
-		   get_section_id (&sections.line),
-		   get_section_id (&sections.loc),
-		   get_section_id (&sections.str_offsets));
-  /* Can we use an existing virtual DWO file?  */
-  dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
-					virtual_dwo_name.c_str (),
-					comp_dir);
-  /* Create one if necessary.  */
-  if (*dwo_file_slot == NULL)
-    {
-      if (dwarf_read_debug)
-	{
-	  fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
-			      virtual_dwo_name.c_str ());
-	}
-      dwo_file = new struct dwo_file;
-      dwo_file->dwo_name = obstack_strdup (&objfile->objfile_obstack,
-					   virtual_dwo_name);
-      dwo_file->comp_dir = comp_dir;
-      dwo_file->sections.abbrev = sections.abbrev;
-      dwo_file->sections.line = sections.line;
-      dwo_file->sections.loc = sections.loc;
-      dwo_file->sections.macinfo = sections.macinfo;
-      dwo_file->sections.macro = sections.macro;
-      dwo_file->sections.str_offsets = sections.str_offsets;
-      /* The "str" section is global to the entire DWP file.  */
-      dwo_file->sections.str = dwp_file->sections.str;
-      /* The info or types section is assigned below to dwo_unit,
-	 there's no need to record it in dwo_file.
-	 Also, we can't simply record type sections in dwo_file because
-	 we record a pointer into the vector in dwo_unit.  As we collect more
-	 types we'll grow the vector and eventually have to reallocate space
-	 for it, invalidating all copies of pointers into the previous
-	 contents.  */
-      *dwo_file_slot = dwo_file;
-    }
-  else
-    {
-      if (dwarf_read_debug)
-	{
-	  fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
-			      virtual_dwo_name.c_str ());
-	}
-      dwo_file = (struct dwo_file *) *dwo_file_slot;
-    }
-
-  dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
-  dwo_unit->dwo_file = dwo_file;
-  dwo_unit->signature = signature;
-  dwo_unit->section =
-    XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
-  *dwo_unit->section = sections.info_or_types;
-  /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
-
-  return dwo_unit;
-}
-
-/* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
-   Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
-   piece within that section used by a TU/CU, return a virtual section
-   of just that piece.  */
-
-static struct dwarf2_section_info
-create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
-		       struct dwarf2_section_info *section,
-		       bfd_size_type offset, bfd_size_type size)
-{
-  struct dwarf2_section_info result;
-  asection *sectp;
-
-  gdb_assert (section != NULL);
-  gdb_assert (!section->is_virtual);
-
-  memset (&result, 0, sizeof (result));
-  result.s.containing_section = section;
-  result.is_virtual = true;
-
-  if (size == 0)
-    return result;
-
-  sectp = get_section_bfd_section (section);
-
-  /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
-     bounds of the real section.  This is a pretty-rare event, so just
-     flag an error (easier) instead of a warning and trying to cope.  */
-  if (sectp == NULL
-      || offset + size > bfd_section_size (sectp))
-    {
-      error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
-	       " in section %s [in module %s]"),
-	     sectp ? bfd_section_name (sectp) : "<unknown>",
-	     objfile_name (dwarf2_per_objfile->objfile));
-    }
-
-  result.virtual_offset = offset;
-  result.size = size;
-  return result;
-}
-
-/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
-   UNIT_INDEX is the index of the DWO unit in the DWP hash table.
-   COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
-   This is for DWP version 2 files.  */
-
-static struct dwo_unit *
-create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			   struct dwp_file *dwp_file,
-			   uint32_t unit_index,
-			   const char *comp_dir,
-			   ULONGEST signature, int is_debug_types)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  const struct dwp_hash_table *dwp_htab =
-    is_debug_types ? dwp_file->tus : dwp_file->cus;
-  bfd *dbfd = dwp_file->dbfd.get ();
-  const char *kind = is_debug_types ? "TU" : "CU";
-  struct dwo_file *dwo_file;
-  struct dwo_unit *dwo_unit;
-  struct virtual_v2_dwo_sections sections;
-  void **dwo_file_slot;
-  int i;
-
-  gdb_assert (dwp_file->version == 2);
-
-  if (dwarf_read_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
-			  kind,
-			  pulongest (unit_index), hex_string (signature),
-			  dwp_file->name);
-    }
-
-  /* Fetch the section offsets of this DWO unit.  */
-
-  memset (&sections, 0, sizeof (sections));
-
-  for (i = 0; i < dwp_htab->nr_columns; ++i)
-    {
-      uint32_t offset = read_4_bytes (dbfd,
-				      dwp_htab->section_pool.v2.offsets
-				      + (((unit_index - 1) * dwp_htab->nr_columns
-					  + i)
-					 * sizeof (uint32_t)));
-      uint32_t size = read_4_bytes (dbfd,
-				    dwp_htab->section_pool.v2.sizes
-				    + (((unit_index - 1) * dwp_htab->nr_columns
-					+ i)
-				       * sizeof (uint32_t)));
-
-      switch (dwp_htab->section_pool.v2.section_ids[i])
-	{
-	case DW_SECT_INFO:
-	case DW_SECT_TYPES:
-	  sections.info_or_types_offset = offset;
-	  sections.info_or_types_size = size;
-	  break;
-	case DW_SECT_ABBREV:
-	  sections.abbrev_offset = offset;
-	  sections.abbrev_size = size;
-	  break;
-	case DW_SECT_LINE:
-	  sections.line_offset = offset;
-	  sections.line_size = size;
-	  break;
-	case DW_SECT_LOC:
-	  sections.loc_offset = offset;
-	  sections.loc_size = size;
-	  break;
-	case DW_SECT_STR_OFFSETS:
-	  sections.str_offsets_offset = offset;
-	  sections.str_offsets_size = size;
-	  break;
-	case DW_SECT_MACINFO:
-	  sections.macinfo_offset = offset;
-	  sections.macinfo_size = size;
-	  break;
-	case DW_SECT_MACRO:
-	  sections.macro_offset = offset;
-	  sections.macro_size = size;
-	  break;
-	}
-    }
-
-  /* It's easier for the rest of the code if we fake a struct dwo_file and
-     have dwo_unit "live" in that.  At least for now.
-
-     The DWP file can be made up of a random collection of CUs and TUs.
-     However, for each CU + set of TUs that came from the same original DWO
-     file, we can combine them back into a virtual DWO file to save space
-     (fewer struct dwo_file objects to allocate).  Remember that for really
-     large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
-
-  std::string virtual_dwo_name =
-    string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
-		   (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
-		   (long) (sections.line_size ? sections.line_offset : 0),
-		   (long) (sections.loc_size ? sections.loc_offset : 0),
-		   (long) (sections.str_offsets_size
-			   ? sections.str_offsets_offset : 0));
-  /* Can we use an existing virtual DWO file?  */
-  dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
-					virtual_dwo_name.c_str (),
-					comp_dir);
-  /* Create one if necessary.  */
-  if (*dwo_file_slot == NULL)
-    {
-      if (dwarf_read_debug)
-	{
-	  fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
-			      virtual_dwo_name.c_str ());
-	}
-      dwo_file = new struct dwo_file;
-      dwo_file->dwo_name = obstack_strdup (&objfile->objfile_obstack,
-					   virtual_dwo_name);
-      dwo_file->comp_dir = comp_dir;
-      dwo_file->sections.abbrev =
-	create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
-			       sections.abbrev_offset, sections.abbrev_size);
-      dwo_file->sections.line =
-	create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
-			       sections.line_offset, sections.line_size);
-      dwo_file->sections.loc =
-	create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
-			       sections.loc_offset, sections.loc_size);
-      dwo_file->sections.macinfo =
-	create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
-			       sections.macinfo_offset, sections.macinfo_size);
-      dwo_file->sections.macro =
-	create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
-			       sections.macro_offset, sections.macro_size);
-      dwo_file->sections.str_offsets =
-	create_dwp_v2_section (dwarf2_per_objfile,
-			       &dwp_file->sections.str_offsets,
-			       sections.str_offsets_offset,
-			       sections.str_offsets_size);
-      /* The "str" section is global to the entire DWP file.  */
-      dwo_file->sections.str = dwp_file->sections.str;
-      /* The info or types section is assigned below to dwo_unit,
-	 there's no need to record it in dwo_file.
-	 Also, we can't simply record type sections in dwo_file because
-	 we record a pointer into the vector in dwo_unit.  As we collect more
-	 types we'll grow the vector and eventually have to reallocate space
-	 for it, invalidating all copies of pointers into the previous
-	 contents.  */
-      *dwo_file_slot = dwo_file;
-    }
-  else
-    {
-      if (dwarf_read_debug)
-	{
-	  fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
-			      virtual_dwo_name.c_str ());
-	}
-      dwo_file = (struct dwo_file *) *dwo_file_slot;
-    }
-
-  dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
-  dwo_unit->dwo_file = dwo_file;
-  dwo_unit->signature = signature;
-  dwo_unit->section =
-    XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
-  *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
-					      is_debug_types
-					      ? &dwp_file->sections.types
-					      : &dwp_file->sections.info,
-					      sections.info_or_types_offset,
-					      sections.info_or_types_size);
-  /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
-
-  return dwo_unit;
-}
-
-/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
-   Returns NULL if the signature isn't found.  */
-
-static struct dwo_unit *
-lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			struct dwp_file *dwp_file, const char *comp_dir,
-			ULONGEST signature, int is_debug_types)
-{
-  const struct dwp_hash_table *dwp_htab =
-    is_debug_types ? dwp_file->tus : dwp_file->cus;
-  bfd *dbfd = dwp_file->dbfd.get ();
-  uint32_t mask = dwp_htab->nr_slots - 1;
-  uint32_t hash = signature & mask;
-  uint32_t hash2 = ((signature >> 32) & mask) | 1;
-  unsigned int i;
-  void **slot;
-  struct dwo_unit find_dwo_cu;
-
-  memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
-  find_dwo_cu.signature = signature;
-  slot = htab_find_slot (is_debug_types
-			 ? dwp_file->loaded_tus
-			 : dwp_file->loaded_cus,
-			 &find_dwo_cu, INSERT);
-
-  if (*slot != NULL)
-    return (struct dwo_unit *) *slot;
-
-  /* Use a for loop so that we don't loop forever on bad debug info.  */
-  for (i = 0; i < dwp_htab->nr_slots; ++i)
-    {
-      ULONGEST signature_in_table;
-
-      signature_in_table =
-	read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
-      if (signature_in_table == signature)
-	{
-	  uint32_t unit_index =
-	    read_4_bytes (dbfd,
-			  dwp_htab->unit_table + hash * sizeof (uint32_t));
-
-	  if (dwp_file->version == 1)
-	    {
-	      *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
-						 dwp_file, unit_index,
-						 comp_dir, signature,
-						 is_debug_types);
-	    }
-	  else
-	    {
-	      *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
-						 dwp_file, unit_index,
-						 comp_dir, signature,
-						 is_debug_types);
-	    }
-	  return (struct dwo_unit *) *slot;
-	}
-      if (signature_in_table == 0)
-	return NULL;
-      hash = (hash + hash2) & mask;
-    }
-
-  error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
-	   " [in module %s]"),
-	 dwp_file->name);
-}
-
-/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
-   Open the file specified by FILE_NAME and hand it off to BFD for
-   preliminary analysis.  Return a newly initialized bfd *, which
-   includes a canonicalized copy of FILE_NAME.
-   If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
-   SEARCH_CWD is true if the current directory is to be searched.
-   It will be searched before debug-file-directory.
-   If successful, the file is added to the bfd include table of the
-   objfile's bfd (see gdb_bfd_record_inclusion).
-   If unable to find/open the file, return NULL.
-   NOTE: This function is derived from symfile_bfd_open.  */
-
-static gdb_bfd_ref_ptr
-try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
-		    const char *file_name, int is_dwp, int search_cwd)
-{
-  int desc;
-  /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
-     FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
-     to debug_file_directory.  */
-  const char *search_path;
-  static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
-
-  gdb::unique_xmalloc_ptr<char> search_path_holder;
-  if (search_cwd)
-    {
-      if (*debug_file_directory != '\0')
-	{
-	  search_path_holder.reset (concat (".", dirname_separator_string,
-					    debug_file_directory,
-					    (char *) NULL));
-	  search_path = search_path_holder.get ();
-	}
-      else
-	search_path = ".";
-    }
-  else
-    search_path = debug_file_directory;
-
-  openp_flags flags = OPF_RETURN_REALPATH;
-  if (is_dwp)
-    flags |= OPF_SEARCH_IN_PATH;
-
-  gdb::unique_xmalloc_ptr<char> absolute_name;
-  desc = openp (search_path, flags, file_name,
-		O_RDONLY | O_BINARY, &absolute_name);
-  if (desc < 0)
-    return NULL;
-
-  gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
-					 gnutarget, desc));
-  if (sym_bfd == NULL)
-    return NULL;
-  bfd_set_cacheable (sym_bfd.get (), 1);
-
-  if (!bfd_check_format (sym_bfd.get (), bfd_object))
-    return NULL;
-
-  /* Success.  Record the bfd as having been included by the objfile's bfd.
-     This is important because things like demangled_names_hash lives in the
-     objfile's per_bfd space and may have references to things like symbol
-     names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
-  gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
-
-  return sym_bfd;
-}
-
-/* Try to open DWO file FILE_NAME.
-   COMP_DIR is the DW_AT_comp_dir attribute.
-   The result is the bfd handle of the file.
-   If there is a problem finding or opening the file, return NULL.
-   Upon success, the canonicalized path of the file is stored in the bfd,
-   same as symfile_bfd_open.  */
-
-static gdb_bfd_ref_ptr
-open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
-	       const char *file_name, const char *comp_dir)
-{
-  if (IS_ABSOLUTE_PATH (file_name))
-    return try_open_dwop_file (dwarf2_per_objfile, file_name,
-			       0 /*is_dwp*/, 0 /*search_cwd*/);
-
-  /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
-
-  if (comp_dir != NULL)
-    {
-      char *path_to_try = concat (comp_dir, SLASH_STRING,
-				  file_name, (char *) NULL);
-
-      /* NOTE: If comp_dir is a relative path, this will also try the
-	 search path, which seems useful.  */
-      gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
-						path_to_try,
-						0 /*is_dwp*/,
-						1 /*search_cwd*/));
-      xfree (path_to_try);
-      if (abfd != NULL)
-	return abfd;
-    }
-
-  /* That didn't work, try debug-file-directory, which, despite its name,
-     is a list of paths.  */
-
-  if (*debug_file_directory == '\0')
-    return NULL;
-
-  return try_open_dwop_file (dwarf2_per_objfile, file_name,
-			     0 /*is_dwp*/, 1 /*search_cwd*/);
-}
-
-/* This function is mapped across the sections and remembers the offset and
-   size of each of the DWO debugging sections we are interested in.  */
-
-static void
-dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
-{
-  struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
-  const struct dwop_section_names *names = &dwop_section_names;
-
-  if (section_is_p (sectp->name, &names->abbrev_dwo))
-    {
-      dwo_sections->abbrev.s.section = sectp;
-      dwo_sections->abbrev.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->info_dwo))
-    {
-      dwo_sections->info.s.section = sectp;
-      dwo_sections->info.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->line_dwo))
-    {
-      dwo_sections->line.s.section = sectp;
-      dwo_sections->line.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->loc_dwo))
-    {
-      dwo_sections->loc.s.section = sectp;
-      dwo_sections->loc.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->macinfo_dwo))
-    {
-      dwo_sections->macinfo.s.section = sectp;
-      dwo_sections->macinfo.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->macro_dwo))
-    {
-      dwo_sections->macro.s.section = sectp;
-      dwo_sections->macro.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->str_dwo))
-    {
-      dwo_sections->str.s.section = sectp;
-      dwo_sections->str.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->str_offsets_dwo))
-    {
-      dwo_sections->str_offsets.s.section = sectp;
-      dwo_sections->str_offsets.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->types_dwo))
-    {
-      struct dwarf2_section_info type_section;
-
-      memset (&type_section, 0, sizeof (type_section));
-      type_section.s.section = sectp;
-      type_section.size = bfd_section_size (sectp);
-      dwo_sections->types.push_back (type_section);
-    }
-}
-
-/* Initialize the use of the DWO file specified by DWO_NAME and referenced
-   by PER_CU.  This is for the non-DWP case.
-   The result is NULL if DWO_NAME can't be found.  */
-
-static struct dwo_file *
-open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
-			const char *dwo_name, const char *comp_dir)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
-
-  gdb_bfd_ref_ptr dbfd = open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir);
-  if (dbfd == NULL)
-    {
-      if (dwarf_read_debug)
-	fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
-      return NULL;
-    }
-
-  dwo_file_up dwo_file (new struct dwo_file);
-  dwo_file->dwo_name = dwo_name;
-  dwo_file->comp_dir = comp_dir;
-  dwo_file->dbfd = std::move (dbfd);
-
-  bfd_map_over_sections (dwo_file->dbfd.get (), dwarf2_locate_dwo_sections,
-			 &dwo_file->sections);
-
-  create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
-			 dwo_file->cus);
-
-  create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
-				 dwo_file->sections.types, dwo_file->tus);
-
-  if (dwarf_read_debug)
-    fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
-
-  return dwo_file.release ();
-}
-
-/* This function is mapped across the sections and remembers the offset and
-   size of each of the DWP debugging sections common to version 1 and 2 that
-   we are interested in.  */
-
-static void
-dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
-				   void *dwp_file_ptr)
-{
-  struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
-  const struct dwop_section_names *names = &dwop_section_names;
-  unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
-
-  /* Record the ELF section number for later lookup: this is what the
-     .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
-  gdb_assert (elf_section_nr < dwp_file->num_sections);
-  dwp_file->elf_sections[elf_section_nr] = sectp;
-
-  /* Look for specific sections that we need.  */
-  if (section_is_p (sectp->name, &names->str_dwo))
-    {
-      dwp_file->sections.str.s.section = sectp;
-      dwp_file->sections.str.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->cu_index))
-    {
-      dwp_file->sections.cu_index.s.section = sectp;
-      dwp_file->sections.cu_index.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->tu_index))
-    {
-      dwp_file->sections.tu_index.s.section = sectp;
-      dwp_file->sections.tu_index.size = bfd_section_size (sectp);
-    }
-}
-
-/* This function is mapped across the sections and remembers the offset and
-   size of each of the DWP version 2 debugging sections that we are interested
-   in.  This is split into a separate function because we don't know if we
-   have version 1 or 2 until we parse the cu_index/tu_index sections.  */
-
-static void
-dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
-{
-  struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
-  const struct dwop_section_names *names = &dwop_section_names;
-  unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
-
-  /* Record the ELF section number for later lookup: this is what the
-     .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
-  gdb_assert (elf_section_nr < dwp_file->num_sections);
-  dwp_file->elf_sections[elf_section_nr] = sectp;
-
-  /* Look for specific sections that we need.  */
-  if (section_is_p (sectp->name, &names->abbrev_dwo))
-    {
-      dwp_file->sections.abbrev.s.section = sectp;
-      dwp_file->sections.abbrev.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->info_dwo))
-    {
-      dwp_file->sections.info.s.section = sectp;
-      dwp_file->sections.info.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->line_dwo))
-    {
-      dwp_file->sections.line.s.section = sectp;
-      dwp_file->sections.line.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->loc_dwo))
-    {
-      dwp_file->sections.loc.s.section = sectp;
-      dwp_file->sections.loc.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->macinfo_dwo))
-    {
-      dwp_file->sections.macinfo.s.section = sectp;
-      dwp_file->sections.macinfo.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->macro_dwo))
-    {
-      dwp_file->sections.macro.s.section = sectp;
-      dwp_file->sections.macro.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->str_offsets_dwo))
-    {
-      dwp_file->sections.str_offsets.s.section = sectp;
-      dwp_file->sections.str_offsets.size = bfd_section_size (sectp);
-    }
-  else if (section_is_p (sectp->name, &names->types_dwo))
-    {
-      dwp_file->sections.types.s.section = sectp;
-      dwp_file->sections.types.size = bfd_section_size (sectp);
-    }
-}
-
-/* Hash function for dwp_file loaded CUs/TUs.  */
-
-static hashval_t
-hash_dwp_loaded_cutus (const void *item)
-{
-  const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
-
-  /* This drops the top 32 bits of the signature, but is ok for a hash.  */
-  return dwo_unit->signature;
-}
-
-/* Equality function for dwp_file loaded CUs/TUs.  */
-
-static int
-eq_dwp_loaded_cutus (const void *a, const void *b)
-{
-  const struct dwo_unit *dua = (const struct dwo_unit *) a;
-  const struct dwo_unit *dub = (const struct dwo_unit *) b;
-
-  return dua->signature == dub->signature;
-}
-
-/* Allocate a hash table for dwp_file loaded CUs/TUs.  */
-
-static htab_t
-allocate_dwp_loaded_cutus_table (struct objfile *objfile)
-{
-  return htab_create_alloc_ex (3,
-			       hash_dwp_loaded_cutus,
-			       eq_dwp_loaded_cutus,
-			       NULL,
-			       &objfile->objfile_obstack,
-			       hashtab_obstack_allocate,
-			       dummy_obstack_deallocate);
-}
-
-/* Try to open DWP file FILE_NAME.
-   The result is the bfd handle of the file.
-   If there is a problem finding or opening the file, return NULL.
-   Upon success, the canonicalized path of the file is stored in the bfd,
-   same as symfile_bfd_open.  */
-
-static gdb_bfd_ref_ptr
-open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
-	       const char *file_name)
-{
-  gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
-					    1 /*is_dwp*/,
-					    1 /*search_cwd*/));
-  if (abfd != NULL)
-    return abfd;
-
-  /* Work around upstream bug 15652.
-     http://sourceware.org/bugzilla/show_bug.cgi?id=15652
-     [Whether that's a "bug" is debatable, but it is getting in our way.]
-     We have no real idea where the dwp file is, because gdb's realpath-ing
-     of the executable's path may have discarded the needed info.
-     [IWBN if the dwp file name was recorded in the executable, akin to
-     .gnu_debuglink, but that doesn't exist yet.]
-     Strip the directory from FILE_NAME and search again.  */
-  if (*debug_file_directory != '\0')
-    {
-      /* Don't implicitly search the current directory here.
-	 If the user wants to search "." to handle this case,
-	 it must be added to debug-file-directory.  */
-      return try_open_dwop_file (dwarf2_per_objfile,
-				 lbasename (file_name), 1 /*is_dwp*/,
-				 0 /*search_cwd*/);
-    }
-
-  return NULL;
-}
-
-/* Initialize the use of the DWP file for the current objfile.
-   By convention the name of the DWP file is ${objfile}.dwp.
-   The result is NULL if it can't be found.  */
-
-static std::unique_ptr<struct dwp_file>
-open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-  /* Try to find first .dwp for the binary file before any symbolic links
-     resolving.  */
-
-  /* If the objfile is a debug file, find the name of the real binary
-     file and get the name of dwp file from there.  */
-  std::string dwp_name;
-  if (objfile->separate_debug_objfile_backlink != NULL)
-    {
-      struct objfile *backlink = objfile->separate_debug_objfile_backlink;
-      const char *backlink_basename = lbasename (backlink->original_name);
-
-      dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
-    }
-  else
-    dwp_name = objfile->original_name;
-
-  dwp_name += ".dwp";
-
-  gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
-  if (dbfd == NULL
-      && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
-    {
-      /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
-      dwp_name = objfile_name (objfile);
-      dwp_name += ".dwp";
-      dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
-    }
-
-  if (dbfd == NULL)
-    {
-      if (dwarf_read_debug)
-	fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
-      return std::unique_ptr<dwp_file> ();
-    }
-
-  const char *name = bfd_get_filename (dbfd.get ());
-  std::unique_ptr<struct dwp_file> dwp_file
-    (new struct dwp_file (name, std::move (dbfd)));
-
-  dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
-  dwp_file->elf_sections =
-    OBSTACK_CALLOC (&objfile->objfile_obstack,
-		    dwp_file->num_sections, asection *);
-
-  bfd_map_over_sections (dwp_file->dbfd.get (),
-			 dwarf2_locate_common_dwp_sections,
-			 dwp_file.get ());
-
-  dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
-					 0);
-
-  dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
-					 1);
-
-  /* The DWP file version is stored in the hash table.  Oh well.  */
-  if (dwp_file->cus && dwp_file->tus
-      && dwp_file->cus->version != dwp_file->tus->version)
-    {
-      /* 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).  */
-      error (_("Dwarf Error: DWP file CU version %s doesn't match"
-	       " TU version %s [in DWP file %s]"),
-	     pulongest (dwp_file->cus->version),
-	     pulongest (dwp_file->tus->version), dwp_name.c_str ());
-    }
-
-  if (dwp_file->cus)
-    dwp_file->version = dwp_file->cus->version;
-  else if (dwp_file->tus)
-    dwp_file->version = dwp_file->tus->version;
-  else
-    dwp_file->version = 2;
-
-  if (dwp_file->version == 2)
-    bfd_map_over_sections (dwp_file->dbfd.get (),
-			   dwarf2_locate_v2_dwp_sections,
-			   dwp_file.get ());
-
-  dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
-  dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
-
-  if (dwarf_read_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
-      fprintf_unfiltered (gdb_stdlog,
-			  "    %s CUs, %s TUs\n",
-			  pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
-			  pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
-    }
-
-  return dwp_file;
-}
-
-/* Wrapper around open_and_init_dwp_file, only open it once.  */
-
-static struct dwp_file *
-get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  if (! dwarf2_per_objfile->dwp_checked)
-    {
-      dwarf2_per_objfile->dwp_file
-	= open_and_init_dwp_file (dwarf2_per_objfile);
-      dwarf2_per_objfile->dwp_checked = 1;
-    }
-  return dwarf2_per_objfile->dwp_file.get ();
-}
-
-/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
-   Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
-   or in the DWP file for the objfile, referenced by THIS_UNIT.
-   If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
-   IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
-
-   This is called, for example, when wanting to read a variable with a
-   complex location.  Therefore we don't want to do file i/o for every call.
-   Therefore we don't want to look for a DWO file on every call.
-   Therefore we first see if we've already seen SIGNATURE in a DWP file,
-   then we check if we've already seen DWO_NAME, and only THEN do we check
-   for a DWO file.
-
-   The result is a pointer to the dwo_unit object or NULL if we didn't find it
-   (dwo_id mismatch or couldn't find the DWO/DWP file).  */
-
-static struct dwo_unit *
-lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
-		 const char *dwo_name, const char *comp_dir,
-		 ULONGEST signature, int is_debug_types)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  const char *kind = is_debug_types ? "TU" : "CU";
-  void **dwo_file_slot;
-  struct dwo_file *dwo_file;
-  struct dwp_file *dwp_file;
-
-  /* First see if there's a DWP file.
-     If we have a DWP file but didn't find the DWO inside it, don't
-     look for the original DWO file.  It makes gdb behave differently
-     depending on whether one is debugging in the build tree.  */
-
-  dwp_file = get_dwp_file (dwarf2_per_objfile);
-  if (dwp_file != NULL)
-    {
-      const struct dwp_hash_table *dwp_htab =
-	is_debug_types ? dwp_file->tus : dwp_file->cus;
-
-      if (dwp_htab != NULL)
-	{
-	  struct dwo_unit *dwo_cutu =
-	    lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
-				    signature, is_debug_types);
-
-	  if (dwo_cutu != NULL)
-	    {
-	      if (dwarf_read_debug)
-		{
-		  fprintf_unfiltered (gdb_stdlog,
-				      "Virtual DWO %s %s found: @%s\n",
-				      kind, hex_string (signature),
-				      host_address_to_string (dwo_cutu));
-		}
-	      return dwo_cutu;
-	    }
-	}
-    }
-  else
-    {
-      /* No DWP file, look for the DWO file.  */
-
-      dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
-					    dwo_name, comp_dir);
-      if (*dwo_file_slot == NULL)
-	{
-	  /* Read in the file and build a table of the CUs/TUs it contains.  */
-	  *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
-	}
-      /* NOTE: This will be NULL if unable to open the file.  */
-      dwo_file = (struct dwo_file *) *dwo_file_slot;
-
-      if (dwo_file != NULL)
-	{
-	  struct dwo_unit *dwo_cutu = NULL;
-
-	  if (is_debug_types && dwo_file->tus)
-	    {
-	      struct dwo_unit find_dwo_cutu;
-
-	      memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
-	      find_dwo_cutu.signature = signature;
-	      dwo_cutu
-		= (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
-	    }
-	  else if (!is_debug_types && dwo_file->cus)
-	    {
-	      struct dwo_unit find_dwo_cutu;
-
-	      memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
-	      find_dwo_cutu.signature = signature;
-	      dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
-						       &find_dwo_cutu);
-	    }
-
-	  if (dwo_cutu != NULL)
-	    {
-	      if (dwarf_read_debug)
-		{
-		  fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
-				      kind, dwo_name, hex_string (signature),
-				      host_address_to_string (dwo_cutu));
-		}
-	      return dwo_cutu;
-	    }
-	}
-    }
-
-  /* We didn't find it.  This could mean a dwo_id mismatch, or
-     someone deleted the DWO/DWP file, or the search path isn't set up
-     correctly to find the file.  */
-
-  if (dwarf_read_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
-			  kind, dwo_name, hex_string (signature));
-    }
-
-  /* This is a warning and not a complaint because it can be caused by
-     pilot error (e.g., user accidentally deleting the DWO).  */
-  {
-    /* Print the name of the DWP file if we looked there, helps the user
-       better diagnose the problem.  */
-    std::string dwp_text;
-
-    if (dwp_file != NULL)
-      dwp_text = string_printf (" [in DWP file %s]",
-				lbasename (dwp_file->name));
-
-    warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
-	       " [in module %s]"),
-	     kind, dwo_name, hex_string (signature),
-	     dwp_text.c_str (),
-	     this_unit->is_debug_types ? "TU" : "CU",
-	     sect_offset_str (this_unit->sect_off), objfile_name (objfile));
-  }
-  return NULL;
-}
-
-/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
-   See lookup_dwo_cutu_unit for details.  */
-
-static struct dwo_unit *
-lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
-		      const char *dwo_name, const char *comp_dir,
-		      ULONGEST signature)
-{
-  return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
-}
-
-/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
-   See lookup_dwo_cutu_unit for details.  */
-
-static struct dwo_unit *
-lookup_dwo_type_unit (struct signatured_type *this_tu,
-		      const char *dwo_name, const char *comp_dir)
-{
-  return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
-}
-
-/* Traversal function for queue_and_load_all_dwo_tus.  */
-
-static int
-queue_and_load_dwo_tu (void **slot, void *info)
-{
-  struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
-  struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
-  ULONGEST signature = dwo_unit->signature;
-  struct signatured_type *sig_type =
-    lookup_dwo_signatured_type (per_cu->cu, signature);
-
-  if (sig_type != NULL)
-    {
-      struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
-
-      /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
-	 a real dependency of PER_CU on SIG_TYPE.  That is detected later
-	 while processing PER_CU.  */
-      if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
-	load_full_type_unit (sig_cu);
-      per_cu->imported_symtabs_push (sig_cu);
-    }
-
-  return 1;
-}
-
-/* Queue all TUs contained in the DWO of PER_CU to be read in.
-   The DWO may have the only definition of the type, though it may not be
-   referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
-   http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
-
-static void
-queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
-{
-  struct dwo_unit *dwo_unit;
-  struct dwo_file *dwo_file;
-
-  gdb_assert (!per_cu->is_debug_types);
-  gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
-  gdb_assert (per_cu->cu != NULL);
-
-  dwo_unit = per_cu->cu->dwo_unit;
-  gdb_assert (dwo_unit != NULL);
-
-  dwo_file = dwo_unit->dwo_file;
-  if (dwo_file->tus != NULL)
-    htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
-}
-
-/* Read in various DIEs.  */
-
-/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
-   Inherit only the children of the DW_AT_abstract_origin DIE not being
-   already referenced by DW_AT_abstract_origin from the children of the
-   current DIE.  */
-
-static void
-inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct die_info *child_die;
-  sect_offset *offsetp;
-  /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
-  struct die_info *origin_die;
-  /* Iterator of the ORIGIN_DIE children.  */
-  struct die_info *origin_child_die;
-  struct attribute *attr;
-  struct dwarf2_cu *origin_cu;
-  struct pending **origin_previous_list_in_scope;
-
-  attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
-  if (!attr)
-    return;
-
-  /* Note that following die references may follow to a die in a
-     different cu.  */
-
-  origin_cu = cu;
-  origin_die = follow_die_ref (die, attr, &origin_cu);
-
-  /* We're inheriting ORIGIN's children into the scope we'd put DIE's
-     symbols in.  */
-  origin_previous_list_in_scope = origin_cu->list_in_scope;
-  origin_cu->list_in_scope = cu->list_in_scope;
-
-  if (die->tag != origin_die->tag
-      && !(die->tag == DW_TAG_inlined_subroutine
-	   && origin_die->tag == DW_TAG_subprogram))
-    complaint (_("DIE %s and its abstract origin %s have different tags"),
-	       sect_offset_str (die->sect_off),
-	       sect_offset_str (origin_die->sect_off));
-
-  std::vector<sect_offset> offsets;
-
-  for (child_die = die->child;
-       child_die && child_die->tag;
-       child_die = sibling_die (child_die))
-    {
-      struct die_info *child_origin_die;
-      struct dwarf2_cu *child_origin_cu;
-
-      /* We are trying to process concrete instance entries:
-	 DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
-	 it's not relevant to our analysis here. i.e. detecting DIEs that are
-	 present in the abstract instance but not referenced in the concrete
-	 one.  */
-      if (child_die->tag == DW_TAG_call_site
-          || child_die->tag == DW_TAG_GNU_call_site)
-	continue;
-
-      /* For each CHILD_DIE, find the corresponding child of
-	 ORIGIN_DIE.  If there is more than one layer of
-	 DW_AT_abstract_origin, follow them all; there shouldn't be,
-	 but GCC versions at least through 4.4 generate this (GCC PR
-	 40573).  */
-      child_origin_die = child_die;
-      child_origin_cu = cu;
-      while (1)
-	{
-	  attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
-			      child_origin_cu);
-	  if (attr == NULL)
-	    break;
-	  child_origin_die = follow_die_ref (child_origin_die, attr,
-					     &child_origin_cu);
-	}
-
-      /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
-	 counterpart may exist.  */
-      if (child_origin_die != child_die)
-	{
-	  if (child_die->tag != child_origin_die->tag
-	      && !(child_die->tag == DW_TAG_inlined_subroutine
-		   && child_origin_die->tag == DW_TAG_subprogram))
-	    complaint (_("Child DIE %s and its abstract origin %s have "
-			 "different tags"),
-		       sect_offset_str (child_die->sect_off),
-		       sect_offset_str (child_origin_die->sect_off));
-	  if (child_origin_die->parent != origin_die)
-	    complaint (_("Child DIE %s and its abstract origin %s have "
-			 "different parents"),
-		       sect_offset_str (child_die->sect_off),
-		       sect_offset_str (child_origin_die->sect_off));
-	  else
-	    offsets.push_back (child_origin_die->sect_off);
-	}
-    }
-  std::sort (offsets.begin (), offsets.end ());
-  sect_offset *offsets_end = offsets.data () + offsets.size ();
-  for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
-    if (offsetp[-1] == *offsetp)
-      complaint (_("Multiple children of DIE %s refer "
-		   "to DIE %s as their abstract origin"),
-		 sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
-
-  offsetp = offsets.data ();
-  origin_child_die = origin_die->child;
-  while (origin_child_die && origin_child_die->tag)
-    {
-      /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
-      while (offsetp < offsets_end
-	     && *offsetp < origin_child_die->sect_off)
-	offsetp++;
-      if (offsetp >= offsets_end
-	  || *offsetp > origin_child_die->sect_off)
-	{
-	  /* Found that ORIGIN_CHILD_DIE is really not referenced.
-	     Check whether we're already processing ORIGIN_CHILD_DIE.
-	     This can happen with mutually referenced abstract_origins.
-	     PR 16581.  */
-	  if (!origin_child_die->in_process)
-	    process_die (origin_child_die, origin_cu);
-	}
-      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
-read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  struct context_stack *newobj;
-  CORE_ADDR lowpc;
-  CORE_ADDR highpc;
-  struct die_info *child_die;
-  struct attribute *attr, *call_line, *call_file;
-  const char *name;
-  CORE_ADDR baseaddr;
-  struct block *block;
-  int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
-  std::vector<struct symbol *> template_args;
-  struct template_symbol *templ_func = NULL;
-
-  if (inlined_func)
-    {
-      /* If we do not have call site information, we can't show the
-	 caller of this inlined function.  That's too confusing, so
-	 only use the scope for local variables.  */
-      call_line = dwarf2_attr (die, DW_AT_call_line, cu);
-      call_file = dwarf2_attr (die, DW_AT_call_file, cu);
-      if (call_line == NULL || call_file == NULL)
-	{
-	  read_lexical_block_scope (die, cu);
-	  return;
-	}
-    }
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  name = dwarf2_name (die, cu);
-
-  /* Ignore functions with missing or empty names.  These are actually
-     illegal according to the DWARF standard.  */
-  if (name == NULL)
-    {
-      complaint (_("missing name for subprogram DIE at %s"),
-		 sect_offset_str (die->sect_off));
-      return;
-    }
-
-  /* Ignore functions with missing or invalid low and high pc attributes.  */
-  if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
-      <= PC_BOUNDS_INVALID)
-    {
-      attr = dwarf2_attr (die, DW_AT_external, cu);
-      if (!attr || !DW_UNSND (attr))
-	complaint (_("cannot get low and high bounds "
-		     "for subprogram DIE at %s"),
-		   sect_offset_str (die->sect_off));
-      return;
-    }
-
-  lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
-  highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
-
-  /* If we have any template arguments, then we must allocate a
-     different sort of symbol.  */
-  for (child_die = die->child; child_die; child_die = sibling_die (child_die))
-    {
-      if (child_die->tag == DW_TAG_template_type_param
-	  || child_die->tag == DW_TAG_template_value_param)
-	{
-	  templ_func = allocate_template_symbol (objfile);
-	  templ_func->subclass = SYMBOL_TEMPLATE;
-	  break;
-	}
-    }
-
-  newobj = cu->get_builder ()->push_context (0, lowpc);
-  newobj->name = new_symbol (die, read_type_die (die, cu), cu,
-			     (struct symbol *) templ_func);
-
-  if (dwarf2_flag_true_p (die, DW_AT_main_subprogram, cu))
-    set_objfile_main_name (objfile, newobj->name->linkage_name (),
-			   cu->language);
-
-  /* If there is a location expression for DW_AT_frame_base, record
-     it.  */
-  attr = dwarf2_attr (die, DW_AT_frame_base, cu);
-  if (attr != nullptr)
-    dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
-
-  /* If there is a location for the static link, record it.  */
-  newobj->static_link = NULL;
-  attr = dwarf2_attr (die, DW_AT_static_link, cu);
-  if (attr != nullptr)
-    {
-      newobj->static_link
-	= XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
-      attr_to_dynamic_prop (attr, die, cu, newobj->static_link,
-			    dwarf2_per_cu_addr_type (cu->per_cu));
-    }
-
-  cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
-
-  if (die->child != NULL)
-    {
-      child_die = die->child;
-      while (child_die && child_die->tag)
-	{
-	  if (child_die->tag == DW_TAG_template_type_param
-	      || child_die->tag == DW_TAG_template_value_param)
-	    {
-	      struct symbol *arg = new_symbol (child_die, NULL, cu);
-
-	      if (arg != NULL)
-		template_args.push_back (arg);
-	    }
-	  else
-	    process_die (child_die, cu);
-	  child_die = sibling_die (child_die);
-	}
-    }
-
-  inherit_abstract_dies (die, cu);
-
-  /* If we have a DW_AT_specification, we might need to import using
-     directives from the context of the specification DIE.  See the
-     comment in determine_prefix.  */
-  if (cu->language == language_cplus
-      && dwarf2_attr (die, DW_AT_specification, cu))
-    {
-      struct dwarf2_cu *spec_cu = cu;
-      struct die_info *spec_die = die_specification (die, &spec_cu);
-
-      while (spec_die)
-	{
-	  child_die = spec_die->child;
-	  while (child_die && child_die->tag)
-	    {
-	      if (child_die->tag == DW_TAG_imported_module)
-		process_die (child_die, spec_cu);
-	      child_die = sibling_die (child_die);
-	    }
-
-	  /* In some cases, GCC generates specification DIEs that
-	     themselves contain DW_AT_specification attributes.  */
-	  spec_die = die_specification (spec_die, &spec_cu);
-	}
-    }
-
-  struct context_stack cstk = cu->get_builder ()->pop_context ();
-  /* Make a block for the local symbols within.  */
-  block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
-				     cstk.static_link, lowpc, highpc);
-
-  /* For C++, set the block's scope.  */
-  if ((cu->language == language_cplus
-       || cu->language == language_fortran
-       || cu->language == language_d
-       || cu->language == language_rust)
-      && cu->processing_has_namespace_info)
-    block_set_scope (block, determine_prefix (die, cu),
-		     &objfile->objfile_obstack);
-
-  /* If we have address ranges, record them.  */
-  dwarf2_record_block_ranges (die, block, baseaddr, cu);
-
-  gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
-
-  /* Attach template arguments to function.  */
-  if (!template_args.empty ())
-    {
-      gdb_assert (templ_func != NULL);
-
-      templ_func->n_template_arguments = template_args.size ();
-      templ_func->template_arguments
-        = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
-		     templ_func->n_template_arguments);
-      memcpy (templ_func->template_arguments,
-	      template_args.data (),
-	      (templ_func->n_template_arguments * sizeof (struct symbol *)));
-
-      /* Make sure that the symtab is set on the new symbols.  Even
-	 though they don't appear in this symtab directly, other parts
-	 of gdb assume that symbols do, and this is reasonably
-	 true.  */
-      for (symbol *sym : template_args)
-	symbol_set_symtab (sym, symbol_symtab (templ_func));
-    }
-
-  /* In C++, we can have functions nested inside functions (e.g., when
-     a function declares a class that has methods).  This means that
-     when we finish processing a function scope, we may need to go
-     back to building a containing block's symbol lists.  */
-  *cu->get_builder ()->get_local_symbols () = cstk.locals;
-  cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
-
-  /* If we've finished processing a top-level function, subsequent
-     symbols go in the file symbol list.  */
-  if (cu->get_builder ()->outermost_context_p ())
-    cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
-}
-
-/* Process all the DIES contained within a lexical block scope.  Start
-   a new scope, process the dies, and then close the scope.  */
-
-static void
-read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  CORE_ADDR lowpc, highpc;
-  struct die_info *child_die;
-  CORE_ADDR baseaddr;
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  /* Ignore blocks with missing or invalid low and high pc attributes.  */
-  /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
-     as multiple lexical blocks?  Handling children in a sane way would
-     be nasty.  Might be easier to properly extend generic blocks to
-     describe ranges.  */
-  switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
-    {
-    case PC_BOUNDS_NOT_PRESENT:
-      /* DW_TAG_lexical_block has no attributes, process its children as if
-	 there was no wrapping by that DW_TAG_lexical_block.
-	 GCC does no longer produces such DWARF since GCC r224161.  */
-      for (child_die = die->child;
-	   child_die != NULL && child_die->tag;
-	   child_die = sibling_die (child_die))
-	process_die (child_die, cu);
-      return;
-    case PC_BOUNDS_INVALID:
-      return;
-    }
-  lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
-  highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
-
-  cu->get_builder ()->push_context (0, lowpc);
-  if (die->child != NULL)
-    {
-      child_die = die->child;
-      while (child_die && child_die->tag)
-	{
-	  process_die (child_die, cu);
-	  child_die = sibling_die (child_die);
-	}
-    }
-  inherit_abstract_dies (die, cu);
-  struct context_stack cstk = cu->get_builder ()->pop_context ();
-
-  if (*cu->get_builder ()->get_local_symbols () != NULL
-      || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
-    {
-      struct block *block
-        = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
-				     cstk.start_addr, highpc);
-
-      /* Note that recording ranges after traversing children, as we
-         do here, means that recording a parent's ranges entails
-         walking across all its children's ranges as they appear in
-         the address map, which is quadratic behavior.
-
-         It would be nicer to record the parent's ranges before
-         traversing its children, simply overriding whatever you find
-         there.  But since we don't even decide whether to create a
-         block until after we've traversed its children, that's hard
-         to do.  */
-      dwarf2_record_block_ranges (die, block, baseaddr, cu);
-    }
-  *cu->get_builder ()->get_local_symbols () = cstk.locals;
-  cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
-}
-
-/* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
-
-static void
-read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  CORE_ADDR pc, baseaddr;
-  struct attribute *attr;
-  struct call_site *call_site, call_site_local;
-  void **slot;
-  int nparams;
-  struct die_info *child_die;
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
-  if (attr == NULL)
-    {
-      /* This was a pre-DWARF-5 GNU extension alias
-	 for DW_AT_call_return_pc.  */
-      attr = dwarf2_attr (die, DW_AT_low_pc, cu);
-    }
-  if (!attr)
-    {
-      complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
-		   "DIE %s [in module %s]"),
-		 sect_offset_str (die->sect_off), objfile_name (objfile));
-      return;
-    }
-  pc = attr_value_as_address (attr) + baseaddr;
-  pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
-
-  if (cu->call_site_htab == NULL)
-    cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
-					       NULL, &objfile->objfile_obstack,
-					       hashtab_obstack_allocate, NULL);
-  call_site_local.pc = pc;
-  slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
-  if (*slot != NULL)
-    {
-      complaint (_("Duplicate PC %s for DW_TAG_call_site "
-		   "DIE %s [in module %s]"),
-		 paddress (gdbarch, pc), sect_offset_str (die->sect_off),
-		 objfile_name (objfile));
-      return;
-    }
-
-  /* Count parameters at the caller.  */
-
-  nparams = 0;
-  for (child_die = die->child; child_die && child_die->tag;
-       child_die = sibling_die (child_die))
-    {
-      if (child_die->tag != DW_TAG_call_site_parameter
-          && child_die->tag != DW_TAG_GNU_call_site_parameter)
-	{
-	  complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
-		       "DW_TAG_call_site child DIE %s [in module %s]"),
-		     child_die->tag, sect_offset_str (child_die->sect_off),
-		     objfile_name (objfile));
-	  continue;
-	}
-
-      nparams++;
-    }
-
-  call_site
-    = ((struct call_site *)
-       obstack_alloc (&objfile->objfile_obstack,
-		      sizeof (*call_site)
-		      + (sizeof (*call_site->parameter) * (nparams - 1))));
-  *slot = call_site;
-  memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
-  call_site->pc = pc;
-
-  if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
-      || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
-    {
-      struct die_info *func_die;
-
-      /* Skip also over DW_TAG_inlined_subroutine.  */
-      for (func_die = die->parent;
-	   func_die && func_die->tag != DW_TAG_subprogram
-	   && func_die->tag != DW_TAG_subroutine_type;
-	   func_die = func_die->parent);
-
-      /* DW_AT_call_all_calls is a superset
-	 of DW_AT_call_all_tail_calls.  */
-      if (func_die
-          && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
-          && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
-	  && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
-	  && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
-	{
-	  /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
-	     not complete.  But keep CALL_SITE for look ups via call_site_htab,
-	     both the initial caller containing the real return address PC and
-	     the final callee containing the current PC of a chain of tail
-	     calls do not need to have the tail call list complete.  But any
-	     function candidate for a virtual tail call frame searched via
-	     TYPE_TAIL_CALL_LIST must have the tail call list complete to be
-	     determined unambiguously.  */
-	}
-      else
-	{
-	  struct type *func_type = NULL;
-
-	  if (func_die)
-	    func_type = get_die_type (func_die, cu);
-	  if (func_type != NULL)
-	    {
-	      gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
-
-	      /* Enlist this call site to the function.  */
-	      call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
-	      TYPE_TAIL_CALL_LIST (func_type) = call_site;
-	    }
-	  else
-	    complaint (_("Cannot find function owning DW_TAG_call_site "
-			 "DIE %s [in module %s]"),
-		       sect_offset_str (die->sect_off), objfile_name (objfile));
-	}
-    }
-
-  attr = dwarf2_attr (die, DW_AT_call_target, cu);
-  if (attr == NULL)
-    attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
-  if (attr == NULL)
-    attr = dwarf2_attr (die, DW_AT_call_origin, cu);
-  if (attr == NULL)
-    {
-      /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
-      attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
-    }
-  SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
-  if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
-    /* Keep NULL DWARF_BLOCK.  */;
-  else if (attr_form_is_block (attr))
-    {
-      struct dwarf2_locexpr_baton *dlbaton;
-
-      dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
-      dlbaton->data = DW_BLOCK (attr)->data;
-      dlbaton->size = DW_BLOCK (attr)->size;
-      dlbaton->per_cu = cu->per_cu;
-
-      SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
-    }
-  else if (attr_form_is_ref (attr))
-    {
-      struct dwarf2_cu *target_cu = cu;
-      struct die_info *target_die;
-
-      target_die = follow_die_ref (die, attr, &target_cu);
-      gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
-      if (die_is_declaration (target_die, target_cu))
-	{
-	  const char *target_physname;
-
-	  /* Prefer the mangled name; otherwise compute the demangled one.  */
-	  target_physname = dw2_linkage_name (target_die, target_cu);
-	  if (target_physname == NULL)
-	    target_physname = dwarf2_physname (NULL, target_die, target_cu);
-	  if (target_physname == NULL)
-	    complaint (_("DW_AT_call_target target DIE has invalid "
-		         "physname, for referencing DIE %s [in module %s]"),
-		       sect_offset_str (die->sect_off), objfile_name (objfile));
-	  else
-	    SET_FIELD_PHYSNAME (call_site->target, target_physname);
-	}
-      else
-	{
-	  CORE_ADDR lowpc;
-
-	  /* DW_AT_entry_pc should be preferred.  */
-	  if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
-	      <= PC_BOUNDS_INVALID)
-	    complaint (_("DW_AT_call_target target DIE has invalid "
-		         "low pc, for referencing DIE %s [in module %s]"),
-		       sect_offset_str (die->sect_off), objfile_name (objfile));
-	  else
-	    {
-	      lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
-	      SET_FIELD_PHYSADDR (call_site->target, lowpc);
-	    }
-	}
-    }
-  else
-    complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
-		 "block nor reference, for DIE %s [in module %s]"),
-	       sect_offset_str (die->sect_off), objfile_name (objfile));
-
-  call_site->per_cu = cu->per_cu;
-
-  for (child_die = die->child;
-       child_die && child_die->tag;
-       child_die = sibling_die (child_die))
-    {
-      struct call_site_parameter *parameter;
-      struct attribute *loc, *origin;
-
-      if (child_die->tag != DW_TAG_call_site_parameter
-          && child_die->tag != DW_TAG_GNU_call_site_parameter)
-	{
-	  /* Already printed the complaint above.  */
-	  continue;
-	}
-
-      gdb_assert (call_site->parameter_count < nparams);
-      parameter = &call_site->parameter[call_site->parameter_count];
-
-      /* DW_AT_location specifies the register number or DW_AT_abstract_origin
-	 specifies DW_TAG_formal_parameter.  Value of the data assumed for the
-	 register is contained in DW_AT_call_value.  */
-
-      loc = dwarf2_attr (child_die, DW_AT_location, cu);
-      origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
-      if (origin == NULL)
-	{
-	  /* This was a pre-DWARF-5 GNU extension alias
-	     for DW_AT_call_parameter.  */
-	  origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
-	}
-      if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
-	{
-	  parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
-
-	  sect_offset sect_off
-	    = (sect_offset) dwarf2_get_ref_die_offset (origin);
-	  if (!offset_in_cu_p (&cu->header, sect_off))
-	    {
-	      /* 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.  */
-	      complaint (_("DW_AT_call_parameter offset is not in CU for "
-			   "DW_TAG_call_site child DIE %s [in module %s]"),
-			 sect_offset_str (child_die->sect_off),
-			 objfile_name (objfile));
-	      continue;
-	    }
-	  parameter->u.param_cu_off
-	    = (cu_offset) (sect_off - cu->header.sect_off);
-	}
-      else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
-	{
-	  complaint (_("No DW_FORM_block* DW_AT_location for "
-		       "DW_TAG_call_site child DIE %s [in module %s]"),
-		     sect_offset_str (child_die->sect_off), objfile_name (objfile));
-	  continue;
-	}
-      else
-	{
-	  parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
-	    (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
-	  if (parameter->u.dwarf_reg != -1)
-	    parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
-	  else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
-				    &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
-					     &parameter->u.fb_offset))
-	    parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
-	  else
-	    {
-	      complaint (_("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]"),
-			 sect_offset_str (child_die->sect_off),
-			 objfile_name (objfile));
-	      continue;
-	    }
-	}
-
-      attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
-      if (attr == NULL)
-	attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
-      if (!attr_form_is_block (attr))
-	{
-	  complaint (_("No DW_FORM_block* DW_AT_call_value for "
-		       "DW_TAG_call_site child DIE %s [in module %s]"),
-		     sect_offset_str (child_die->sect_off),
-		     objfile_name (objfile));
-	  continue;
-	}
-      parameter->value = DW_BLOCK (attr)->data;
-      parameter->value_size = DW_BLOCK (attr)->size;
-
-      /* Parameters are not pre-cleared by memset above.  */
-      parameter->data_value = NULL;
-      parameter->data_value_size = 0;
-      call_site->parameter_count++;
-
-      attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
-      if (attr == NULL)
-	attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
-      if (attr != nullptr)
-	{
-	  if (!attr_form_is_block (attr))
-	    complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
-			 "DW_TAG_call_site child DIE %s [in module %s]"),
-		       sect_offset_str (child_die->sect_off),
-		       objfile_name (objfile));
-	  else
-	    {
-	      parameter->data_value = DW_BLOCK (attr)->data;
-	      parameter->data_value_size = DW_BLOCK (attr)->size;
-	    }
-	}
-    }
-}
-
-/* Helper function for read_variable.  If DIE represents a virtual
-   table, then return the type of the concrete object that is
-   associated with the virtual table.  Otherwise, return NULL.  */
-
-static struct type *
-rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
-  if (attr == NULL)
-    return NULL;
-
-  /* Find the type DIE.  */
-  struct die_info *type_die = NULL;
-  struct dwarf2_cu *type_cu = cu;
-
-  if (attr_form_is_ref (attr))
-    type_die = follow_die_ref (die, attr, &type_cu);
-  if (type_die == NULL)
-    return NULL;
-
-  if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
-    return NULL;
-  return die_containing_type (type_die, type_cu);
-}
-
-/* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
-
-static void
-read_variable (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct rust_vtable_symbol *storage = NULL;
-
-  if (cu->language == language_rust)
-    {
-      struct type *containing_type = rust_containing_type (die, cu);
-
-      if (containing_type != NULL)
-	{
-	  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-
-	  storage = new (&objfile->objfile_obstack) rust_vtable_symbol ();
-	  initialize_objfile_symbol (storage);
-	  storage->concrete_type = containing_type;
-	  storage->subclass = SYMBOL_RUST_VTABLE;
-	}
-    }
-
-  struct symbol *res = new_symbol (die, NULL, cu, storage);
-  struct attribute *abstract_origin
-    = dwarf2_attr (die, DW_AT_abstract_origin, cu);
-  struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
-  if (res == NULL && loc && abstract_origin)
-    {
-      /* We have a variable without a name, but with a location and an abstract
-	 origin.  This may be a concrete instance of an abstract variable
-	 referenced from an DW_OP_GNU_variable_value, so save it to find it back
-	 later.  */
-      struct dwarf2_cu *origin_cu = cu;
-      struct die_info *origin_die
-	= follow_die_ref (die, abstract_origin, &origin_cu);
-      dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
-      dpo->abstract_to_concrete[origin_die->sect_off].push_back (die->sect_off);
-    }
-}
-
-/* Call CALLBACK from DW_AT_ranges attribute value OFFSET
-   reading .debug_rnglists.
-   Callback's type should be:
-    void (CORE_ADDR range_beginning, CORE_ADDR range_end)
-   Return true if the attributes are present and valid, otherwise,
-   return false.  */
-
-template <typename Callback>
-static bool
-dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
-			 Callback &&callback)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  bfd *obfd = objfile->obfd;
-  /* Base address selection entry.  */
-  CORE_ADDR base;
-  int found_base;
-  const gdb_byte *buffer;
-  CORE_ADDR baseaddr;
-  bool overflow = false;
-
-  found_base = cu->base_known;
-  base = cu->base_address;
-
-  dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
-  if (offset >= dwarf2_per_objfile->rnglists.size)
-    {
-      complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
-		 offset);
-      return false;
-    }
-  buffer = dwarf2_per_objfile->rnglists.buffer + offset;
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  while (1)
-    {
-      /* Initialize it due to a false compiler warning.  */
-      CORE_ADDR range_beginning = 0, range_end = 0;
-      const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
-				 + dwarf2_per_objfile->rnglists.size);
-      unsigned int bytes_read;
-
-      if (buffer == buf_end)
-	{
-	  overflow = true;
-	  break;
-	}
-      const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
-      switch (rlet)
-	{
-	case DW_RLE_end_of_list:
-	  break;
-	case DW_RLE_base_address:
-	  if (buffer + cu->header.addr_size > buf_end)
-	    {
-	      overflow = true;
-	      break;
-	    }
-	  base = read_address (obfd, buffer, cu, &bytes_read);
-	  found_base = 1;
-	  buffer += bytes_read;
-	  break;
-	case DW_RLE_start_length:
-	  if (buffer + cu->header.addr_size > buf_end)
-	    {
-	      overflow = true;
-	      break;
-	    }
-	  range_beginning = read_address (obfd, buffer, cu, &bytes_read);
-	  buffer += bytes_read;
-	  range_end = (range_beginning
-		       + read_unsigned_leb128 (obfd, buffer, &bytes_read));
-	  buffer += bytes_read;
-	  if (buffer > buf_end)
-	    {
-	      overflow = true;
-	      break;
-	    }
-	  break;
-	case DW_RLE_offset_pair:
-	  range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
-	  buffer += bytes_read;
-	  if (buffer > buf_end)
-	    {
-	      overflow = true;
-	      break;
-	    }
-	  range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
-	  buffer += bytes_read;
-	  if (buffer > buf_end)
-	    {
-	      overflow = true;
-	      break;
-	    }
-	  break;
-	case DW_RLE_start_end:
-	  if (buffer + 2 * cu->header.addr_size > buf_end)
-	    {
-	      overflow = true;
-	      break;
-	    }
-	  range_beginning = read_address (obfd, buffer, cu, &bytes_read);
-	  buffer += bytes_read;
-	  range_end = read_address (obfd, buffer, cu, &bytes_read);
-	  buffer += bytes_read;
-	  break;
-	default:
-	  complaint (_("Invalid .debug_rnglists data (no base address)"));
-	  return false;
-	}
-      if (rlet == DW_RLE_end_of_list || overflow)
-	break;
-      if (rlet == DW_RLE_base_address)
-	continue;
-
-      if (!found_base)
-	{
-	  /* We have no valid base address for the ranges
-	     data.  */
-	  complaint (_("Invalid .debug_rnglists data (no base address)"));
-	  return false;
-	}
-
-      if (range_beginning > range_end)
-	{
-	  /* Inverted range entries are invalid.  */
-	  complaint (_("Invalid .debug_rnglists data (inverted range)"));
-	  return false;
-	}
-
-      /* Empty range entries have no effect.  */
-      if (range_beginning == range_end)
-	continue;
-
-      range_beginning += base;
-      range_end += base;
-
-      /* A not-uncommon case of bad debug info.
-	 Don't pollute the addrmap with bad data.  */
-      if (range_beginning + baseaddr == 0
-	  && !dwarf2_per_objfile->has_section_at_zero)
-	{
-	  complaint (_(".debug_rnglists entry has start address of zero"
-		       " [in module %s]"), objfile_name (objfile));
-	  continue;
-	}
-
-      callback (range_beginning, range_end);
-    }
-
-  if (overflow)
-    {
-      complaint (_("Offset %d is not terminated "
-		   "for DW_AT_ranges attribute"),
-		 offset);
-      return false;
-    }
-
-  return true;
-}
-
-/* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
-   Callback's type should be:
-    void (CORE_ADDR range_beginning, CORE_ADDR range_end)
-   Return 1 if the attributes are present and valid, otherwise, return 0.  */
-
-template <typename Callback>
-static int
-dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
-		       Callback &&callback)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-      = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct comp_unit_head *cu_header = &cu->header;
-  bfd *obfd = objfile->obfd;
-  unsigned int addr_size = cu_header->addr_size;
-  CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
-  /* Base address selection entry.  */
-  CORE_ADDR base;
-  int found_base;
-  unsigned int dummy;
-  const gdb_byte *buffer;
-  CORE_ADDR baseaddr;
-
-  if (cu_header->version >= 5)
-    return dwarf2_rnglists_process (offset, cu, callback);
-
-  found_base = cu->base_known;
-  base = cu->base_address;
-
-  dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
-  if (offset >= dwarf2_per_objfile->ranges.size)
-    {
-      complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
-		 offset);
-      return 0;
-    }
-  buffer = dwarf2_per_objfile->ranges.buffer + offset;
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  while (1)
-    {
-      CORE_ADDR range_beginning, range_end;
-
-      range_beginning = read_address (obfd, buffer, cu, &dummy);
-      buffer += addr_size;
-      range_end = read_address (obfd, buffer, cu, &dummy);
-      buffer += addr_size;
-      offset += 2 * addr_size;
-
-      /* An end of list marker is a pair of zero addresses.  */
-      if (range_beginning == 0 && range_end == 0)
-	/* Found the end of list entry.  */
-	break;
-
-      /* Each base address selection entry is a pair of 2 values.
-	 The first is the largest possible address, the second is
-	 the base address.  Check for a base address here.  */
-      if ((range_beginning & mask) == mask)
-	{
-	  /* If we found the largest possible address, then we already
-	     have the base address in range_end.  */
-	  base = range_end;
-	  found_base = 1;
-	  continue;
-	}
-
-      if (!found_base)
-	{
-	  /* We have no valid base address for the ranges
-	     data.  */
-	  complaint (_("Invalid .debug_ranges data (no base address)"));
-	  return 0;
-	}
-
-      if (range_beginning > range_end)
-	{
-	  /* Inverted range entries are invalid.  */
-	  complaint (_("Invalid .debug_ranges data (inverted range)"));
-	  return 0;
-	}
-
-      /* Empty range entries have no effect.  */
-      if (range_beginning == range_end)
-	continue;
-
-      range_beginning += base;
-      range_end += base;
-
-      /* A not-uncommon case of bad debug info.
-	 Don't pollute the addrmap with bad data.  */
-      if (range_beginning + baseaddr == 0
-	  && !dwarf2_per_objfile->has_section_at_zero)
-	{
-	  complaint (_(".debug_ranges entry has start address of zero"
-		       " [in module %s]"), objfile_name (objfile));
-	  continue;
-	}
-
-      callback (range_beginning, range_end);
-    }
-
-  return 1;
-}
-
-/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
-   Return 1 if the attributes are present and valid, otherwise, return 0.
-   If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
-
-static int
-dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
-		    CORE_ADDR *high_return, struct dwarf2_cu *cu,
-		    struct partial_symtab *ranges_pst)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
-				       SECT_OFF_TEXT (objfile));
-  int low_set = 0;
-  CORE_ADDR low = 0;
-  CORE_ADDR high = 0;
-  int retval;
-
-  retval = dwarf2_ranges_process (offset, cu,
-    [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
-    {
-      if (ranges_pst != NULL)
-	{
-	  CORE_ADDR lowpc;
-	  CORE_ADDR highpc;
-
-	  lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
-					       range_beginning + baseaddr)
-		   - baseaddr);
-	  highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
-						range_end + baseaddr)
-		    - baseaddr);
-	  addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
-			     lowpc, highpc - 1, ranges_pst);
-	}
-
-      /* FIXME: This is recording everything as a low-high
-	 segment of consecutive addresses.  We should have a
-	 data structure for discontiguous block ranges
-	 instead.  */
-      if (! low_set)
-	{
-	  low = range_beginning;
-	  high = range_end;
-	  low_set = 1;
-	}
-      else
-	{
-	  if (range_beginning < low)
-	    low = range_beginning;
-	  if (range_end > high)
-	    high = range_end;
-	}
-    });
-  if (!retval)
-    return 0;
-
-  if (! low_set)
-    /* If the first entry is an end-of-list marker, the range
-       describes an empty scope, i.e. no instructions.  */
-    return 0;
-
-  if (low_return)
-    *low_return = low;
-  if (high_return)
-    *high_return = high;
-  return 1;
-}
-
-/* Get low and high pc attributes from a die.  See enum pc_bounds_kind
-   definition for the return value.  *LOWPC and *HIGHPC are set iff
-   neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
-
-static enum pc_bounds_kind
-dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
-		      CORE_ADDR *highpc, struct dwarf2_cu *cu,
-		      struct partial_symtab *pst)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct attribute *attr;
-  struct attribute *attr_high;
-  CORE_ADDR low = 0;
-  CORE_ADDR high = 0;
-  enum pc_bounds_kind ret;
-
-  attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
-  if (attr_high)
-    {
-      attr = dwarf2_attr (die, DW_AT_low_pc, cu);
-      if (attr != nullptr)
-        {
-	  low = attr_value_as_address (attr);
-	  high = attr_value_as_address (attr_high);
-	  if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
-	    high += low;
-	}
-      else
-	/* Found high w/o low attribute.  */
-	return PC_BOUNDS_INVALID;
-
-      /* Found consecutive range of addresses.  */
-      ret = PC_BOUNDS_HIGH_LOW;
-    }
-  else
-    {
-      attr = dwarf2_attr (die, DW_AT_ranges, cu);
-      if (attr != NULL)
-	{
-	  /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
-	     We take advantage of the fact that DW_AT_ranges does not appear
-	     in DW_TAG_compile_unit of DWO files.  */
-	  int need_ranges_base = die->tag != DW_TAG_compile_unit;
-	  unsigned int ranges_offset = (DW_UNSND (attr)
-					+ (need_ranges_base
-					   ? cu->ranges_base
-					   : 0));
-
-	  /* Value of the DW_AT_ranges attribute is the offset in the
-	     .debug_ranges section.  */
-	  if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
-	    return PC_BOUNDS_INVALID;
-	  /* Found discontinuous range of addresses.  */
-	  ret = PC_BOUNDS_RANGES;
-	}
-      else
-	return PC_BOUNDS_NOT_PRESENT;
-    }
-
-  /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
-  if (high <= low)
-    return PC_BOUNDS_INVALID;
-
-  /* When using the GNU linker, .gnu.linkonce. sections are used to
-     eliminate duplicate copies of functions and vtables and such.
-     The linker will arbitrarily choose one and discard the others.
-     The AT_*_pc values for such functions refer to local labels in
-     these sections.  If the section from that file was discarded, the
-     labels are not in the output, so the relocs get a value of 0.
-     If this is a discarded function, mark the pc bounds as invalid,
-     so that GDB will ignore it.  */
-  if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
-    return PC_BOUNDS_INVALID;
-
-  *lowpc = low;
-  if (highpc)
-    *highpc = high;
-  return ret;
-}
-
-/* Assuming that DIE represents a subprogram DIE or a lexical block, get
-   its low and high PC addresses.  Do nothing if these addresses could not
-   be determined.  Otherwise, set LOWPC to the low address if it is smaller,
-   and HIGHPC to the high address if greater than HIGHPC.  */
-
-static void
-dwarf2_get_subprogram_pc_bounds (struct die_info *die,
-                                 CORE_ADDR *lowpc, CORE_ADDR *highpc,
-                                 struct dwarf2_cu *cu)
-{
-  CORE_ADDR low, high;
-  struct die_info *child = die->child;
-
-  if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
-    {
-      *lowpc = std::min (*lowpc, low);
-      *highpc = std::max (*highpc, high);
-    }
-
-  /* If the language does not allow nested subprograms (either inside
-     subprograms or lexical blocks), we're done.  */
-  if (cu->language != language_ada)
-    return;
-
-  /* Check all the children of the given DIE.  If it contains nested
-     subprograms, then check their pc bounds.  Likewise, we need to
-     check lexical blocks as well, as they may also contain subprogram
-     definitions.  */
-  while (child && child->tag)
-    {
-      if (child->tag == DW_TAG_subprogram
-          || child->tag == DW_TAG_lexical_block)
-        dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
-      child = sibling_die (child);
-    }
-}
-
-/* Get the low and high pc's represented by the scope DIE, and store
-   them in *LOWPC and *HIGHPC.  If the correct values can't be
-   determined, set *LOWPC to -1 and *HIGHPC to 0.  */
-
-static void
-get_scope_pc_bounds (struct die_info *die,
-		     CORE_ADDR *lowpc, CORE_ADDR *highpc,
-		     struct dwarf2_cu *cu)
-{
-  CORE_ADDR best_low = (CORE_ADDR) -1;
-  CORE_ADDR best_high = (CORE_ADDR) 0;
-  CORE_ADDR current_low, current_high;
-
-  if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
-      >= PC_BOUNDS_RANGES)
-    {
-      best_low = current_low;
-      best_high = current_high;
-    }
-  else
-    {
-      struct die_info *child = die->child;
-
-      while (child && child->tag)
-	{
-	  switch (child->tag) {
-	  case DW_TAG_subprogram:
-            dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
-	    break;
-	  case DW_TAG_namespace:
-	  case DW_TAG_module:
-	    /* FIXME: carlton/2004-01-16: Should we do this for
-	       DW_TAG_class_type/DW_TAG_structure_type, too?  I think
-	       that current GCC's always emit the DIEs corresponding
-	       to definitions of methods of classes as children of a
-	       DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
-	       the DIEs giving the declarations, which could be
-	       anywhere).  But I don't see any reason why the
-	       standards says that they have to be there.  */
-	    get_scope_pc_bounds (child, &current_low, &current_high, cu);
-
-	    if (current_low != ((CORE_ADDR) -1))
-	      {
-		best_low = std::min (best_low, current_low);
-		best_high = std::max (best_high, current_high);
-	      }
-	    break;
-	  default:
-	    /* Ignore.  */
-	    break;
-	  }
-
-	  child = sibling_die (child);
-	}
-    }
-
-  *lowpc = best_low;
-  *highpc = best_high;
-}
-
-/* Record the address ranges for BLOCK, offset by BASEADDR, as given
-   in DIE.  */
-
-static void
-dwarf2_record_block_ranges (struct die_info *die, struct block *block,
-                            CORE_ADDR baseaddr, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  struct attribute *attr;
-  struct attribute *attr_high;
-
-  attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
-  if (attr_high)
-    {
-      attr = dwarf2_attr (die, DW_AT_low_pc, cu);
-      if (attr != nullptr)
-        {
-          CORE_ADDR low = attr_value_as_address (attr);
-	  CORE_ADDR high = attr_value_as_address (attr_high);
-
-	  if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
-	    high += low;
-
-	  low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
-	  high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
-	  cu->get_builder ()->record_block_range (block, low, high - 1);
-        }
-    }
-
-  attr = dwarf2_attr (die, DW_AT_ranges, cu);
-  if (attr != nullptr)
-    {
-      /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
-	 We take advantage of the fact that DW_AT_ranges does not appear
-	 in DW_TAG_compile_unit of DWO files.  */
-      int need_ranges_base = die->tag != DW_TAG_compile_unit;
-
-      /* The value of the DW_AT_ranges attribute is the offset of the
-         address range list in the .debug_ranges section.  */
-      unsigned long offset = (DW_UNSND (attr)
-			      + (need_ranges_base ? cu->ranges_base : 0));
-
-      std::vector<blockrange> blockvec;
-      dwarf2_ranges_process (offset, cu,
-	[&] (CORE_ADDR start, CORE_ADDR end)
-	{
-	  start += baseaddr;
-	  end += baseaddr;
-	  start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
-	  end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
-	  cu->get_builder ()->record_block_range (block, start, end - 1);
-	  blockvec.emplace_back (start, end);
-	});
-
-      BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
-    }
-}
-
-/* Check whether the producer field indicates either of GCC < 4.6, or the
-   Intel C/C++ compiler, and cache the result in CU.  */
-
-static void
-check_producer (struct dwarf2_cu *cu)
-{
-  int major, minor;
-
-  if (cu->producer == NULL)
-    {
-      /* For unknown compilers expect their behavior is DWARF version
-	 compliant.
-
-	 GCC started to support .debug_types sections by -gdwarf-4 since
-	 gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
-	 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
-	 combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
-	 interpreted incorrectly by GDB now - GCC PR debug/48229.  */
-    }
-  else if (producer_is_gcc (cu->producer, &major, &minor))
-    {
-      cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
-      cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
-    }
-  else if (producer_is_icc (cu->producer, &major, &minor))
-    {
-      cu->producer_is_icc = true;
-      cu->producer_is_icc_lt_14 = major < 14;
-    }
-  else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
-    cu->producer_is_codewarrior = true;
-  else
-    {
-      /* For other non-GCC compilers, expect their behavior is DWARF version
-	 compliant.  */
-    }
-
-  cu->checked_producer = true;
-}
-
-/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
-   to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
-   during 4.6.0 experimental.  */
-
-static bool
-producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
-{
-  if (!cu->checked_producer)
-    check_producer (cu);
-
-  return cu->producer_is_gxx_lt_4_6;
-}
-
-
-/* Codewarrior (at least as of version 5.0.40) generates dwarf line information
-   with incorrect is_stmt attributes.  */
-
-static bool
-producer_is_codewarrior (struct dwarf2_cu *cu)
-{
-  if (!cu->checked_producer)
-    check_producer (cu);
-
-  return cu->producer_is_codewarrior;
-}
-
-/* Return the default accessibility type if it is not overridden by
-   DW_AT_accessibility.  */
-
-static enum dwarf_access_attribute
-dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
-{
-  if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
-    {
-      /* The default DWARF 2 accessibility for members is public, the default
-	 accessibility for inheritance is private.  */
-
-      if (die->tag != DW_TAG_inheritance)
-	return DW_ACCESS_public;
-      else
-	return DW_ACCESS_private;
-    }
-  else
-    {
-      /* DWARF 3+ defines the default accessibility a different way.  The same
-	 rules apply now for DW_TAG_inheritance as for the members and it only
-	 depends on the container kind.  */
-
-      if (die->parent->tag == DW_TAG_class_type)
-	return DW_ACCESS_private;
-      else
-	return DW_ACCESS_public;
-    }
-}
-
-/* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
-   offset.  If the attribute was not found return 0, otherwise return
-   1.  If it was found but could not properly be handled, set *OFFSET
-   to 0.  */
-
-static int
-handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
-			     LONGEST *offset)
-{
-  struct attribute *attr;
-
-  attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
-  if (attr != NULL)
-    {
-      *offset = 0;
-
-      /* Note that we do not check for a section offset first here.
-	 This is because DW_AT_data_member_location is new in DWARF 4,
-	 so if we see it, we can assume that a constant form is really
-	 a constant and not a section offset.  */
-      if (attr_form_is_constant (attr))
-	*offset = dwarf2_get_attr_constant_value (attr, 0);
-      else if (attr_form_is_section_offset (attr))
-	dwarf2_complex_location_expr_complaint ();
-      else if (attr_form_is_block (attr))
-	*offset = decode_locdesc (DW_BLOCK (attr), cu);
-      else
-	dwarf2_complex_location_expr_complaint ();
-
-      return 1;
-    }
-
-  return 0;
-}
-
-/* Add an aggregate field to the field list.  */
-
-static void
-dwarf2_add_field (struct field_info *fip, struct die_info *die,
-		  struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  struct nextfield *new_field;
-  struct attribute *attr;
-  struct field *fp;
-  const char *fieldname = "";
-
-  if (die->tag == DW_TAG_inheritance)
-    {
-      fip->baseclasses.emplace_back ();
-      new_field = &fip->baseclasses.back ();
-    }
-  else
-    {
-      fip->fields.emplace_back ();
-      new_field = &fip->fields.back ();
-    }
-
-  fip->nfields++;
-
-  attr = dwarf2_attr (die, DW_AT_accessibility, cu);
-  if (attr != nullptr)
-    new_field->accessibility = DW_UNSND (attr);
-  else
-    new_field->accessibility = dwarf2_default_access_attribute (die, cu);
-  if (new_field->accessibility != DW_ACCESS_public)
-    fip->non_public_fields = 1;
-
-  attr = dwarf2_attr (die, DW_AT_virtuality, cu);
-  if (attr != nullptr)
-    new_field->virtuality = DW_UNSND (attr);
-  else
-    new_field->virtuality = DW_VIRTUALITY_none;
-
-  fp = &new_field->field;
-
-  if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
-    {
-      LONGEST offset;
-
-      /* Data member other than a C++ static data member.  */
-
-      /* Get type of field.  */
-      fp->type = die_type (die, cu);
-
-      SET_FIELD_BITPOS (*fp, 0);
-
-      /* Get bit size of field (zero if none).  */
-      attr = dwarf2_attr (die, DW_AT_bit_size, cu);
-      if (attr != nullptr)
-	{
-	  FIELD_BITSIZE (*fp) = DW_UNSND (attr);
-	}
-      else
-	{
-	  FIELD_BITSIZE (*fp) = 0;
-	}
-
-      /* Get bit offset of field.  */
-      if (handle_data_member_location (die, cu, &offset))
-	SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
-      attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
-      if (attr != nullptr)
-	{
-	  if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
-	    {
-	      /* For big endian bits, the DW_AT_bit_offset gives the
-	         additional bit offset from the MSB of the containing
-	         anonymous object to the MSB of the field.  We don't
-	         have to do anything special since we don't need to
-	         know the size of the anonymous object.  */
-	      SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
-	    }
-	  else
-	    {
-	      /* For little endian bits, compute the bit offset to the
-	         MSB of the anonymous object, subtract off the number of
-	         bits from the MSB of the field to the MSB of the
-	         object, and then subtract off the number of bits of
-	         the field itself.  The result is the bit offset of
-	         the LSB of the field.  */
-	      int anonymous_size;
-	      int bit_offset = DW_UNSND (attr);
-
-	      attr = dwarf2_attr (die, DW_AT_byte_size, cu);
-	      if (attr != nullptr)
-		{
-		  /* The size of the anonymous object containing
-		     the bit field is explicit, so use the
-		     indicated size (in bytes).  */
-		  anonymous_size = DW_UNSND (attr);
-		}
-	      else
-		{
-		  /* The size of the anonymous object containing
-		     the bit field must be inferred from the type
-		     attribute of the data member containing the
-		     bit field.  */
-		  anonymous_size = TYPE_LENGTH (fp->type);
-		}
-	      SET_FIELD_BITPOS (*fp,
-				(FIELD_BITPOS (*fp)
-				 + anonymous_size * bits_per_byte
-				 - bit_offset - FIELD_BITSIZE (*fp)));
-	    }
-	}
-      attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
-      if (attr != NULL)
-	SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
-				+ dwarf2_get_attr_constant_value (attr, 0)));
-
-      /* Get name of field.  */
-      fieldname = dwarf2_name (die, cu);
-      if (fieldname == NULL)
-	fieldname = "";
-
-      /* The name is already allocated along with this objfile, so we don't
-	 need to duplicate it for the type.  */
-      fp->name = fieldname;
-
-      /* Change accessibility for artificial fields (e.g. virtual table
-         pointer or virtual base class pointer) to private.  */
-      if (dwarf2_attr (die, DW_AT_artificial, cu))
-	{
-	  FIELD_ARTIFICIAL (*fp) = 1;
-	  new_field->accessibility = DW_ACCESS_private;
-	  fip->non_public_fields = 1;
-	}
-    }
-  else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
-    {
-      /* C++ static member.  */
-
-      /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
-	 is a declaration, but all versions of G++ as of this writing
-	 (so through at least 3.2.1) incorrectly generate
-	 DW_TAG_variable tags.  */
-
-      const char *physname;
-
-      /* Get name of field.  */
-      fieldname = dwarf2_name (die, cu);
-      if (fieldname == NULL)
-	return;
-
-      attr = dwarf2_attr (die, DW_AT_const_value, cu);
-      if (attr
-	  /* Only create a symbol if this is an external value.
-	     new_symbol checks this and puts the value in the global symbol
-	     table, which we want.  If it is not external, new_symbol
-	     will try to put the value in cu->list_in_scope which is wrong.  */
-	  && dwarf2_flag_true_p (die, DW_AT_external, cu))
-	{
-	  /* A static const member, not much different than an enum as far as
-	     we're concerned, except that we can support more types.  */
-	  new_symbol (die, NULL, cu);
-	}
-
-      /* Get physical name.  */
-      physname = dwarf2_physname (fieldname, die, cu);
-
-      /* The name is already allocated along with this objfile, so we don't
-	 need to duplicate it for the type.  */
-      SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
-      FIELD_TYPE (*fp) = die_type (die, cu);
-      FIELD_NAME (*fp) = fieldname;
-    }
-  else if (die->tag == DW_TAG_inheritance)
-    {
-      LONGEST offset;
-
-      /* C++ base class field.  */
-      if (handle_data_member_location (die, cu, &offset))
-	SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
-      FIELD_BITSIZE (*fp) = 0;
-      FIELD_TYPE (*fp) = die_type (die, cu);
-      FIELD_NAME (*fp) = TYPE_NAME (fp->type);
-    }
-  else if (die->tag == DW_TAG_variant_part)
-    {
-      /* process_structure_scope will treat this DIE as a union.  */
-      process_structure_scope (die, cu);
-
-      /* The variant part is relative to the start of the enclosing
-	 structure.  */
-      SET_FIELD_BITPOS (*fp, 0);
-      fp->type = get_die_type (die, cu);
-      fp->artificial = 1;
-      fp->name = "<<variant>>";
-
-      /* 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, 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)
-	    {
-	      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;
-	}
-    }
-  else
-    gdb_assert_not_reached ("missing case in dwarf2_add_field");
-}
-
-/* Can the type given by DIE define another type?  */
-
-static bool
-type_can_define_types (const struct die_info *die)
-{
-  switch (die->tag)
-    {
-    case DW_TAG_typedef:
-    case DW_TAG_class_type:
-    case DW_TAG_structure_type:
-    case DW_TAG_union_type:
-    case DW_TAG_enumeration_type:
-      return true;
-
-    default:
-      return false;
-    }
-}
-
-/* Add a type definition defined in the scope of the FIP's class.  */
-
-static void
-dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
-		      struct dwarf2_cu *cu)
-{
-  struct decl_field fp;
-  memset (&fp, 0, sizeof (fp));
-
-  gdb_assert (type_can_define_types (die));
-
-  /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
-  fp.name = dwarf2_name (die, cu);
-  fp.type = read_type_die (die, cu);
-
-  /* Save accessibility.  */
-  enum dwarf_access_attribute accessibility;
-  struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
-  if (attr != NULL)
-    accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
-  else
-    accessibility = dwarf2_default_access_attribute (die, cu);
-  switch (accessibility)
-    {
-    case DW_ACCESS_public:
-      /* The assumed value if neither private nor protected.  */
-      break;
-    case DW_ACCESS_private:
-      fp.is_private = 1;
-      break;
-    case DW_ACCESS_protected:
-      fp.is_protected = 1;
-      break;
-    default:
-      complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
-    }
-
-  if (die->tag == DW_TAG_typedef)
-    fip->typedef_field_list.push_back (fp);
-  else
-    fip->nested_types_list.push_back (fp);
-}
-
-/* Create the vector of fields, and attach it to the type.  */
-
-static void
-dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
-			      struct dwarf2_cu *cu)
-{
-  int nfields = fip->nfields;
-
-  /* Record the field count, allocate space for the array of fields,
-     and create blank accessibility bitfields if necessary.  */
-  TYPE_NFIELDS (type) = nfields;
-  TYPE_FIELDS (type) = (struct field *)
-    TYPE_ZALLOC (type, sizeof (struct field) * nfields);
-
-  if (fip->non_public_fields && cu->language != language_ada)
-    {
-      ALLOCATE_CPLUS_STRUCT_TYPE (type);
-
-      TYPE_FIELD_PRIVATE_BITS (type) =
-	(B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
-      B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
-
-      TYPE_FIELD_PROTECTED_BITS (type) =
-	(B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
-      B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
-
-      TYPE_FIELD_IGNORE_BITS (type) =
-	(B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
-      B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
-    }
-
-  /* If the type has baseclasses, allocate and clear a bit vector for
-     TYPE_FIELD_VIRTUAL_BITS.  */
-  if (!fip->baseclasses.empty () && cu->language != language_ada)
-    {
-      int num_bytes = B_BYTES (fip->baseclasses.size ());
-      unsigned char *pointer;
-
-      ALLOCATE_CPLUS_STRUCT_TYPE (type);
-      pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
-      TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
-      B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
-      TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
-    }
-
-  if (TYPE_FLAG_DISCRIMINATED_UNION (type))
-    {
-      struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
-
-      for (int index = 0; index < nfields; ++index)
-	{
-	  struct nextfield &field = fip->fields[index];
-
-	  if (field.variant.is_discriminant)
-	    di->discriminant_index = index;
-	  else if (field.variant.default_branch)
-	    di->default_index = index;
-	  else
-	    di->discriminants[index] = field.variant.discriminant_value;
-	}
-    }
-
-  /* Copy the saved-up fields into the field vector.  */
-  for (int i = 0; i < nfields; ++i)
-    {
-      struct nextfield &field
-	= ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
-	   : fip->fields[i - fip->baseclasses.size ()]);
-
-      TYPE_FIELD (type, i) = field.field;
-      switch (field.accessibility)
-	{
-	case DW_ACCESS_private:
-	  if (cu->language != language_ada)
-	    SET_TYPE_FIELD_PRIVATE (type, i);
-	  break;
-
-	case DW_ACCESS_protected:
-	  if (cu->language != language_ada)
-	    SET_TYPE_FIELD_PROTECTED (type, i);
-	  break;
-
-	case DW_ACCESS_public:
-	  break;
-
-	default:
-	  /* Unknown accessibility.  Complain and treat it as public.  */
-	  {
-	    complaint (_("unsupported accessibility %d"),
-		       field.accessibility);
-	  }
-	  break;
-	}
-      if (i < fip->baseclasses.size ())
-	{
-	  switch (field.virtuality)
-	    {
-	    case DW_VIRTUALITY_virtual:
-	    case DW_VIRTUALITY_pure_virtual:
-	      if (cu->language == language_ada)
-		error (_("unexpected virtuality in component of Ada type"));
-	      SET_TYPE_FIELD_VIRTUAL (type, i);
-	      break;
-	    }
-	}
-    }
-}
-
-/* Return true if this member function is a constructor, false
-   otherwise.  */
-
-static int
-dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
-{
-  const char *fieldname;
-  const char *type_name;
-  int len;
-
-  if (die->parent == NULL)
-    return 0;
-
-  if (die->parent->tag != DW_TAG_structure_type
-      && die->parent->tag != DW_TAG_union_type
-      && die->parent->tag != DW_TAG_class_type)
-    return 0;
-
-  fieldname = dwarf2_name (die, cu);
-  type_name = dwarf2_name (die->parent, cu);
-  if (fieldname == NULL || type_name == NULL)
-    return 0;
-
-  len = strlen (fieldname);
-  return (strncmp (fieldname, type_name, len) == 0
-	  && (type_name[len] == '\0' || type_name[len] == '<'));
-}
-
-/* Add a member function to the proper fieldlist.  */
-
-static void
-dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
-		      struct type *type, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct attribute *attr;
-  int i;
-  struct fnfieldlist *flp = nullptr;
-  struct fn_field *fnp;
-  const char *fieldname;
-  struct type *this_type;
-  enum dwarf_access_attribute accessibility;
-
-  if (cu->language == language_ada)
-    error (_("unexpected member function in Ada type"));
-
-  /* Get name of member function.  */
-  fieldname = dwarf2_name (die, cu);
-  if (fieldname == NULL)
-    return;
-
-  /* Look up member function name in fieldlist.  */
-  for (i = 0; i < fip->fnfieldlists.size (); i++)
-    {
-      if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
-	{
-	  flp = &fip->fnfieldlists[i];
-	  break;
-	}
-    }
-
-  /* Create a new fnfieldlist if necessary.  */
-  if (flp == nullptr)
-    {
-      fip->fnfieldlists.emplace_back ();
-      flp = &fip->fnfieldlists.back ();
-      flp->name = fieldname;
-      i = fip->fnfieldlists.size () - 1;
-    }
-
-  /* Create a new member function field and add it to the vector of
-     fnfieldlists.  */
-  flp->fnfields.emplace_back ();
-  fnp = &flp->fnfields.back ();
-
-  /* Delay processing of the physname until later.  */
-  if (cu->language == language_cplus)
-    add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
-			die, cu);
-  else
-    {
-      const char *physname = dwarf2_physname (fieldname, die, cu);
-      fnp->physname = physname ? physname : "";
-    }
-
-  fnp->type = alloc_type (objfile);
-  this_type = read_type_die (die, cu);
-  if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
-    {
-      int nparams = TYPE_NFIELDS (this_type);
-
-      /* TYPE is the domain of this method, and THIS_TYPE is the type
-	   of the method itself (TYPE_CODE_METHOD).  */
-      smash_to_method_type (fnp->type, type,
-			    TYPE_TARGET_TYPE (this_type),
-			    TYPE_FIELDS (this_type),
-			    TYPE_NFIELDS (this_type),
-			    TYPE_VARARGS (this_type));
-
-      /* Handle static member functions.
-         Dwarf2 has no clean way to discern C++ static and non-static
-         member functions.  G++ helps GDB by marking the first
-         parameter for non-static member functions (which is the this
-         pointer) as artificial.  We obtain this information from
-         read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
-      if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
-	fnp->voffset = VOFFSET_STATIC;
-    }
-  else
-    complaint (_("member function type missing for '%s'"),
-	       dwarf2_full_name (fieldname, die, cu));
-
-  /* Get fcontext from DW_AT_containing_type if present.  */
-  if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
-    fnp->fcontext = die_containing_type (die, cu);
-
-  /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
-     is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
-
-  /* Get accessibility.  */
-  attr = dwarf2_attr (die, DW_AT_accessibility, cu);
-  if (attr != nullptr)
-    accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
-  else
-    accessibility = dwarf2_default_access_attribute (die, cu);
-  switch (accessibility)
-    {
-    case DW_ACCESS_private:
-      fnp->is_private = 1;
-      break;
-    case DW_ACCESS_protected:
-      fnp->is_protected = 1;
-      break;
-    }
-
-  /* Check for artificial methods.  */
-  attr = dwarf2_attr (die, DW_AT_artificial, cu);
-  if (attr && DW_UNSND (attr) != 0)
-    fnp->is_artificial = 1;
-
-  fnp->is_constructor = dwarf2_is_constructor (die, cu);
-
-  /* Get index in virtual function table if it is a virtual member
-     function.  For older versions of GCC, this is an offset in the
-     appropriate virtual table, as specified by DW_AT_containing_type.
-     For everyone else, it is an expression to be evaluated relative
-     to the object address.  */
-
-  attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
-  if (attr != nullptr)
-    {
-      if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
-        {
-	  if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
-	    {
-	      /* Old-style GCC.  */
-	      fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
-	    }
-	  else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
-		   || (DW_BLOCK (attr)->size > 1
-		       && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
-		       && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
-	    {
-	      fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
-	      if ((fnp->voffset % cu->header.addr_size) != 0)
-		dwarf2_complex_location_expr_complaint ();
-	      else
-		fnp->voffset /= cu->header.addr_size;
-	      fnp->voffset += 2;
-	    }
-	  else
-	    dwarf2_complex_location_expr_complaint ();
-
-	  if (!fnp->fcontext)
-	    {
-	      /* If there is no `this' field and no DW_AT_containing_type,
-		 we cannot actually find a base class context for the
-		 vtable!  */
-	      if (TYPE_NFIELDS (this_type) == 0
-		  || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
-		{
-		  complaint (_("cannot determine context for virtual member "
-			       "function \"%s\" (offset %s)"),
-			     fieldname, sect_offset_str (die->sect_off));
-		}
-	      else
-		{
-		  fnp->fcontext
-		    = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
-		}
-	    }
-	}
-      else if (attr_form_is_section_offset (attr))
-        {
-	  dwarf2_complex_location_expr_complaint ();
-        }
-      else
-        {
-	  dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
-						 fieldname);
-        }
-    }
-  else
-    {
-      attr = dwarf2_attr (die, DW_AT_virtuality, cu);
-      if (attr && DW_UNSND (attr))
-	{
-	  /* GCC does this, as of 2008-08-25; PR debug/37237.  */
-	  complaint (_("Member function \"%s\" (offset %s) is virtual "
-		       "but the vtable offset is not specified"),
-		     fieldname, sect_offset_str (die->sect_off));
-	  ALLOCATE_CPLUS_STRUCT_TYPE (type);
-	  TYPE_CPLUS_DYNAMIC (type) = 1;
-	}
-    }
-}
-
-/* Create the vector of member function fields, and attach it to the type.  */
-
-static void
-dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
-				 struct dwarf2_cu *cu)
-{
-  if (cu->language == language_ada)
-    error (_("unexpected member functions in Ada type"));
-
-  ALLOCATE_CPLUS_STRUCT_TYPE (type);
-  TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
-    TYPE_ALLOC (type,
-		sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
-
-  for (int i = 0; i < fip->fnfieldlists.size (); i++)
-    {
-      struct fnfieldlist &nf = fip->fnfieldlists[i];
-      struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
-
-      TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
-      TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
-      fn_flp->fn_fields = (struct fn_field *)
-	TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
-
-      for (int k = 0; k < nf.fnfields.size (); ++k)
-	fn_flp->fn_fields[k] = nf.fnfields[k];
-    }
-
-  TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
-}
-
-/* Returns non-zero if NAME is the name of a vtable member in CU's
-   language, zero otherwise.  */
-static int
-is_vtable_name (const char *name, struct dwarf2_cu *cu)
-{
-  static const char vptr[] = "_vptr";
-
-  /* Look for the C++ form of the vtable.  */
-  if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
-    return 1;
-
-  return 0;
-}
-
-/* GCC outputs unnamed structures that are really pointers to member
-   functions, with the ABI-specified layout.  If TYPE describes
-   such a structure, smash it into a member function type.
-
-   GCC shouldn't do this; it should just output pointer to member DIEs.
-   This is GCC PR debug/28767.  */
-
-static void
-quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
-{
-  struct type *pfn_type, *self_type, *new_type;
-
-  /* Check for a structure with no name and two children.  */
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
-    return;
-
-  /* Check for __pfn and __delta members.  */
-  if (TYPE_FIELD_NAME (type, 0) == NULL
-      || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
-      || TYPE_FIELD_NAME (type, 1) == NULL
-      || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
-    return;
-
-  /* Find the type of the method.  */
-  pfn_type = TYPE_FIELD_TYPE (type, 0);
-  if (pfn_type == NULL
-      || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
-      || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
-    return;
-
-  /* Look for the "this" argument.  */
-  pfn_type = TYPE_TARGET_TYPE (pfn_type);
-  if (TYPE_NFIELDS (pfn_type) == 0
-      /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
-      || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
-    return;
-
-  self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
-  new_type = alloc_type (objfile);
-  smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
-			TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
-			TYPE_VARARGS (pfn_type));
-  smash_to_methodptr_type (type, new_type);
-}
-
-/* If the DIE has a DW_AT_alignment attribute, return its value, doing
-   appropriate error checking and issuing complaints if there is a
-   problem.  */
-
-static ULONGEST
-get_alignment (struct dwarf2_cu *cu, struct die_info *die)
-{
-  struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
-
-  if (attr == nullptr)
-    return 0;
-
-  if (!attr_form_is_constant (attr))
-    {
-      complaint (_("DW_AT_alignment must have constant form"
-		   " - DIE at %s [in module %s]"),
-		 sect_offset_str (die->sect_off),
-		 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-      return 0;
-    }
-
-  ULONGEST align;
-  if (attr->form == DW_FORM_sdata)
-    {
-      LONGEST val = DW_SND (attr);
-      if (val < 0)
-	{
-	  complaint (_("DW_AT_alignment value must not be negative"
-		       " - DIE at %s [in module %s]"),
-		     sect_offset_str (die->sect_off),
-		     objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-	  return 0;
-	}
-      align = val;
-    }
-  else
-    align = DW_UNSND (attr);
-
-  if (align == 0)
-    {
-      complaint (_("DW_AT_alignment value must not be zero"
-		   " - DIE at %s [in module %s]"),
-		 sect_offset_str (die->sect_off),
-		 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-      return 0;
-    }
-  if ((align & (align - 1)) != 0)
-    {
-      complaint (_("DW_AT_alignment value must be a power of 2"
-		   " - DIE at %s [in module %s]"),
-		 sect_offset_str (die->sect_off),
-		 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-      return 0;
-    }
-
-  return align;
-}
-
-/* If the DIE has a DW_AT_alignment attribute, use its value to set
-   the alignment for TYPE.  */
-
-static void
-maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
-		     struct type *type)
-{
-  if (!set_type_align (type, get_alignment (cu, die)))
-    complaint (_("DW_AT_alignment value too large"
-		 " - DIE at %s [in module %s]"),
-	       sect_offset_str (die->sect_off),
-	       objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-}
-
-/* Called when we find the DIE that starts a structure or union scope
-   (definition) to create a type for the structure or union.  Fill in
-   the type's name and general properties; the members will not be
-   processed until process_structure_scope.  A symbol table entry for
-   the type will also not be done until process_structure_scope (assuming
-   the type has a name).
-
-   NOTE: we need to call these functions regardless of whether or not the
-   DIE has a DW_AT_name attribute, since it might be an anonymous
-   structure or union.  This gets the type entered into our set of
-   user defined types.  */
-
-static struct type *
-read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct type *type;
-  struct attribute *attr;
-  const char *name;
-
-  /* If the definition of this type lives in .debug_types, read that type.
-     Don't follow DW_AT_specification though, that will take us back up
-     the chain and we want to go down.  */
-  attr = dwarf2_attr_no_follow (die, DW_AT_signature);
-  if (attr != nullptr)
-    {
-      type = get_DW_AT_signature_type (die, attr, cu);
-
-      /* The type's CU may not be the same as CU.
-	 Ensure TYPE is recorded with CU in die_type_hash.  */
-      return set_die_type (die, type, cu);
-    }
-
-  type = alloc_type (objfile);
-  INIT_CPLUS_SPECIFIC (type);
-
-  name = dwarf2_name (die, cu);
-  if (name != NULL)
-    {
-      if (cu->language == language_cplus
-	  || cu->language == language_d
-	  || cu->language == language_rust)
-	{
-	  const char *full_name = dwarf2_full_name (name, die, cu);
-
-	  /* dwarf2_full_name might have already finished building the DIE's
-	     type.  If so, there is no need to continue.  */
-	  if (get_die_type (die, cu) != NULL)
-	    return get_die_type (die, cu);
-
-	  TYPE_NAME (type) = full_name;
-	}
-      else
-	{
-	  /* The name is already allocated along with this objfile, so
-	     we don't need to duplicate it for the type.  */
-	  TYPE_NAME (type) = name;
-	}
-    }
-
-  if (die->tag == DW_TAG_structure_type)
-    {
-      TYPE_CODE (type) = TYPE_CODE_STRUCT;
-    }
-  else if (die->tag == DW_TAG_union_type)
-    {
-      TYPE_CODE (type) = TYPE_CODE_UNION;
-    }
-  else if (die->tag == DW_TAG_variant_part)
-    {
-      TYPE_CODE (type) = TYPE_CODE_UNION;
-      TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
-    }
-  else
-    {
-      TYPE_CODE (type) = TYPE_CODE_STRUCT;
-    }
-
-  if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
-    TYPE_DECLARED_CLASS (type) = 1;
-
-  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
-  if (attr != nullptr)
-    {
-      if (attr_form_is_constant (attr))
-        TYPE_LENGTH (type) = DW_UNSND (attr);
-      else
-	{
-	  /* For the moment, dynamic type sizes are not supported
-	     by GDB's struct type.  The actual size is determined
-	     on-demand when resolving the type of a given object,
-	     so set the type's length to zero for now.  Otherwise,
-	     we record an expression as the length, and that expression
-	     could lead to a very large value, which could eventually
-	     lead to us trying to allocate that much memory when creating
-	     a value of that type.  */
-          TYPE_LENGTH (type) = 0;
-	}
-    }
-  else
-    {
-      TYPE_LENGTH (type) = 0;
-    }
-
-  maybe_set_alignment (cu, die, type);
-
-  if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
-    {
-      /* ICC<14 does not output the required DW_AT_declaration on
-	 incomplete types, but gives them a size of zero.  */
-      TYPE_STUB (type) = 1;
-    }
-  else
-    TYPE_STUB_SUPPORTED (type) = 1;
-
-  if (die_is_declaration (die, cu))
-    TYPE_STUB (type) = 1;
-  else if (attr == NULL && die->child == NULL
-	   && producer_is_realview (cu->producer))
-    /* RealView does not output the required DW_AT_declaration
-       on incomplete types.  */
-    TYPE_STUB (type) = 1;
-
-  /* We need to add the type field to the die immediately so we don't
-     infinitely recurse when dealing with pointers to the structure
-     type within the structure itself.  */
-  set_die_type (die, type, cu);
-
-  /* set_die_type should be already done.  */
-  set_descriptive_type (type, die, cu);
-
-  return type;
-}
-
-/* A helper for process_structure_scope that handles a single member
-   DIE.  */
-
-static void
-handle_struct_member_die (struct die_info *child_die, struct type *type,
-			  struct field_info *fi,
-			  std::vector<struct symbol *> *template_args,
-			  struct dwarf2_cu *cu)
-{
-  if (child_die->tag == DW_TAG_member
-      || child_die->tag == DW_TAG_variable
-      || child_die->tag == DW_TAG_variant_part)
-    {
-      /* NOTE: carlton/2002-11-05: A C++ static data member
-	 should be a DW_TAG_member that is a declaration, but
-	 all versions of G++ as of this writing (so through at
-	 least 3.2.1) incorrectly generate DW_TAG_variable
-	 tags for them instead.  */
-      dwarf2_add_field (fi, child_die, cu);
-    }
-  else if (child_die->tag == DW_TAG_subprogram)
-    {
-      /* Rust doesn't have member functions in the C++ sense.
-	 However, it does emit ordinary functions as children
-	 of a struct DIE.  */
-      if (cu->language == language_rust)
-	read_func_scope (child_die, cu);
-      else
-	{
-	  /* C++ member function.  */
-	  dwarf2_add_member_fn (fi, child_die, type, cu);
-	}
-    }
-  else if (child_die->tag == DW_TAG_inheritance)
-    {
-      /* C++ base class field.  */
-      dwarf2_add_field (fi, child_die, cu);
-    }
-  else if (type_can_define_types (child_die))
-    dwarf2_add_type_defn (fi, child_die, cu);
-  else if (child_die->tag == DW_TAG_template_type_param
-	   || child_die->tag == DW_TAG_template_value_param)
-    {
-      struct symbol *arg = new_symbol (child_die, NULL, cu);
-
-      if (arg != NULL)
-	template_args->push_back (arg);
-    }
-  else if (child_die->tag == DW_TAG_variant)
-    {
-      /* In a variant we want to get the discriminant and also add a
-	 field for our sole member child.  */
-      struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
-
-      for (die_info *variant_child = child_die->child;
-	   variant_child != NULL;
-	   variant_child = sibling_die (variant_child))
-	{
-	  if (variant_child->tag == DW_TAG_member)
-	    {
-	      handle_struct_member_die (variant_child, type, fi,
-					template_args, cu);
-	      /* Only handle the one.  */
-	      break;
-	    }
-	}
-
-      /* We don't handle this but we might as well report it if we see
-	 it.  */
-      if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
-	  complaint (_("DW_AT_discr_list is not supported yet"
-		       " - DIE at %s [in module %s]"),
-		     sect_offset_str (child_die->sect_off),
-		     objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-
-      /* The first field was just added, so we can stash the
-	 discriminant there.  */
-      gdb_assert (!fi->fields.empty ());
-      if (discr == NULL)
-	fi->fields.back ().variant.default_branch = true;
-      else
-	fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
-    }
-}
-
-/* Finish creating a structure or union type, including filling in
-   its members and creating a symbol for it.  */
-
-static void
-process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct die_info *child_die;
-  struct type *type;
-
-  type = get_die_type (die, cu);
-  if (type == NULL)
-    type = read_structure_type (die, cu);
-
-  /* When reading a DW_TAG_variant_part, we need to notice when we
-     read the discriminant member, so we can record it later in the
-     discriminant_info.  */
-  bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
-  sect_offset discr_offset {};
-  bool has_template_parameters = false;
-
-  if (is_variant_part)
-    {
-      struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
-      if (discr == NULL)
-	{
-	  /* Maybe it's a univariant form, an extension we support.
-	     In this case arrange not to check the offset.  */
-	  is_variant_part = false;
-	}
-      else if (attr_form_is_ref (discr))
-	{
-	  struct dwarf2_cu *target_cu = cu;
-	  struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
-
-	  discr_offset = target_die->sect_off;
-	}
-      else
-	{
-	  complaint (_("DW_AT_discr does not have DIE reference form"
-		       " - DIE at %s [in module %s]"),
-		     sect_offset_str (die->sect_off),
-		     objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-	  is_variant_part = false;
-	}
-    }
-
-  if (die->child != NULL && ! die_is_declaration (die, cu))
-    {
-      struct field_info fi;
-      std::vector<struct symbol *> template_args;
-
-      child_die = die->child;
-
-      while (child_die && child_die->tag)
-	{
-	  handle_struct_member_die (child_die, type, &fi, &template_args, cu);
-
-	  if (is_variant_part && discr_offset == child_die->sect_off)
-	    fi.fields.back ().variant.is_discriminant = true;
-
-	  child_die = sibling_die (child_die);
-	}
-
-      /* Attach template arguments to type.  */
-      if (!template_args.empty ())
-	{
-	  has_template_parameters = true;
-	  ALLOCATE_CPLUS_STRUCT_TYPE (type);
-	  TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
-	  TYPE_TEMPLATE_ARGUMENTS (type)
-	    = XOBNEWVEC (&objfile->objfile_obstack,
-			 struct symbol *,
-			 TYPE_N_TEMPLATE_ARGUMENTS (type));
-	  memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
-		  template_args.data (),
-		  (TYPE_N_TEMPLATE_ARGUMENTS (type)
-		   * sizeof (struct symbol *)));
-	}
-
-      /* Attach fields and member functions to the type.  */
-      if (fi.nfields)
-	dwarf2_attach_fields_to_type (&fi, type, cu);
-      if (!fi.fnfieldlists.empty ())
-	{
-	  dwarf2_attach_fn_fields_to_type (&fi, type, cu);
-
-	  /* Get the type which refers to the base class (possibly this
-	     class itself) which contains the vtable pointer for the current
-	     class from the DW_AT_containing_type attribute.  This use of
-	     DW_AT_containing_type is a GNU extension.  */
-
-	  if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
-	    {
-	      struct type *t = die_containing_type (die, cu);
-
-	      set_type_vptr_basetype (type, t);
-	      if (type == t)
-		{
-		  int i;
-
-		  /* Our own class provides vtbl ptr.  */
-		  for (i = TYPE_NFIELDS (t) - 1;
-		       i >= TYPE_N_BASECLASSES (t);
-		       --i)
-		    {
-		      const char *fieldname = TYPE_FIELD_NAME (t, i);
-
-                      if (is_vtable_name (fieldname, cu))
-			{
-			  set_type_vptr_fieldno (type, i);
-			  break;
-			}
-		    }
-
-		  /* Complain if virtual function table field not found.  */
-		  if (i < TYPE_N_BASECLASSES (t))
-		    complaint (_("virtual function table pointer "
-				 "not found when defining class '%s'"),
-			       TYPE_NAME (type) ? TYPE_NAME (type) : "");
-		}
-	      else
-		{
-		  set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
-		}
-	    }
-	  else if (cu->producer
-		   && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
-	    {
-	      /* The IBM XLC compiler does not provide direct indication
-	         of the containing type, but the vtable pointer is
-	         always named __vfp.  */
-
-	      int i;
-
-	      for (i = TYPE_NFIELDS (type) - 1;
-		   i >= TYPE_N_BASECLASSES (type);
-		   --i)
-		{
-		  if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
-		    {
-		      set_type_vptr_fieldno (type, i);
-		      set_type_vptr_basetype (type, type);
-		      break;
-		    }
-		}
-	    }
-	}
-
-      /* Copy fi.typedef_field_list linked list elements content into the
-	 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
-      if (!fi.typedef_field_list.empty ())
-	{
-	  int count = fi.typedef_field_list.size ();
-
-	  ALLOCATE_CPLUS_STRUCT_TYPE (type);
-	  TYPE_TYPEDEF_FIELD_ARRAY (type)
-	    = ((struct decl_field *)
-	       TYPE_ALLOC (type,
-			   sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
-	  TYPE_TYPEDEF_FIELD_COUNT (type) = count;
-
-	  for (int i = 0; i < fi.typedef_field_list.size (); ++i)
-	    TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
-	}
-
-      /* Copy fi.nested_types_list linked list elements content into the
-	 allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
-      if (!fi.nested_types_list.empty () && cu->language != language_ada)
-	{
-	  int count = fi.nested_types_list.size ();
-
-	  ALLOCATE_CPLUS_STRUCT_TYPE (type);
-	  TYPE_NESTED_TYPES_ARRAY (type)
-	    = ((struct decl_field *)
-	       TYPE_ALLOC (type, sizeof (struct decl_field) * count));
-	  TYPE_NESTED_TYPES_COUNT (type) = count;
-
-	  for (int i = 0; i < fi.nested_types_list.size (); ++i)
-	    TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
-	}
-    }
-
-  quirk_gcc_member_function_pointer (type, objfile);
-  if (cu->language == language_rust && die->tag == DW_TAG_union_type)
-    cu->rust_unions.push_back (type);
-
-  /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
-     snapshots) has been known to create a die giving a declaration
-     for a class that has, as a child, a die giving a definition for a
-     nested class.  So we have to process our children even if the
-     current die is a declaration.  Normally, of course, a declaration
-     won't have any children at all.  */
-
-  child_die = die->child;
-
-  while (child_die != NULL && child_die->tag)
-    {
-      if (child_die->tag == DW_TAG_member
-	  || child_die->tag == DW_TAG_variable
-	  || child_die->tag == DW_TAG_inheritance
-	  || child_die->tag == DW_TAG_template_value_param
-	  || child_die->tag == DW_TAG_template_type_param)
-	{
-	  /* Do nothing.  */
-	}
-      else
-	process_die (child_die, cu);
-
-      child_die = sibling_die (child_die);
-    }
-
-  /* Do not consider external references.  According to the DWARF standard,
-     these DIEs are identified by the fact that they have no byte_size
-     attribute, and a declaration attribute.  */
-  if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
-      || !die_is_declaration (die, cu))
-    {
-      struct symbol *sym = new_symbol (die, type, cu);
-
-      if (has_template_parameters)
-	{
-	  struct symtab *symtab;
-	  if (sym != nullptr)
-	    symtab = symbol_symtab (sym);
-	  else if (cu->line_header != nullptr)
-	    {
-	      /* Any related symtab will do.  */
-	      symtab
-		= cu->line_header->file_names ()[0].symtab;
-	    }
-	  else
-	    {
-	      symtab = nullptr;
-	      complaint (_("could not find suitable "
-			   "symtab for template parameter"
-			   " - DIE at %s [in module %s]"),
-			 sect_offset_str (die->sect_off),
-			 objfile_name (objfile));
-	    }
-
-	  if (symtab != nullptr)
-	    {
-	      /* Make sure that the symtab is set on the new symbols.
-		 Even though they don't appear in this symtab directly,
-		 other parts of gdb assume that symbols do, and this is
-		 reasonably true.  */
-	      for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
-		symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab);
-	    }
-	}
-    }
-}
-
-/* Assuming DIE is an enumeration type, and TYPE is its associated type,
-   update TYPE using some information only available in DIE's children.  */
-
-static void
-update_enumeration_type_from_children (struct die_info *die,
-				       struct type *type,
-				       struct dwarf2_cu *cu)
-{
-  struct die_info *child_die;
-  int unsigned_enum = 1;
-  int flag_enum = 1;
-  ULONGEST mask = 0;
-
-  auto_obstack obstack;
-
-  for (child_die = die->child;
-       child_die != NULL && child_die->tag;
-       child_die = sibling_die (child_die))
-    {
-      struct attribute *attr;
-      LONGEST value;
-      const gdb_byte *bytes;
-      struct dwarf2_locexpr_baton *baton;
-      const char *name;
-
-      if (child_die->tag != DW_TAG_enumerator)
-	continue;
-
-      attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
-      if (attr == NULL)
-	continue;
-
-      name = dwarf2_name (child_die, cu);
-      if (name == NULL)
-	name = "<anonymous enumerator>";
-
-      dwarf2_const_value_attr (attr, type, name, &obstack, cu,
-			       &value, &bytes, &baton);
-      if (value < 0)
-	{
-	  unsigned_enum = 0;
-	  flag_enum = 0;
-	}
-      else if ((mask & value) != 0)
-	flag_enum = 0;
-      else
-	mask |= value;
-
-      /* If we already know that the enum type is neither unsigned, nor
-	 a flag type, no need to look at the rest of the enumerates.  */
-      if (!unsigned_enum && !flag_enum)
-	break;
-    }
-
-  if (unsigned_enum)
-    TYPE_UNSIGNED (type) = 1;
-  if (flag_enum)
-    TYPE_FLAG_ENUM (type) = 1;
-}
-
-/* Given a DW_AT_enumeration_type die, set its type.  We do not
-   complete the type's fields yet, or create any symbols.  */
-
-static struct type *
-read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct type *type;
-  struct attribute *attr;
-  const char *name;
-
-  /* If the definition of this type lives in .debug_types, read that type.
-     Don't follow DW_AT_specification though, that will take us back up
-     the chain and we want to go down.  */
-  attr = dwarf2_attr_no_follow (die, DW_AT_signature);
-  if (attr != nullptr)
-    {
-      type = get_DW_AT_signature_type (die, attr, cu);
-
-      /* The type's CU may not be the same as CU.
-	 Ensure TYPE is recorded with CU in die_type_hash.  */
-      return set_die_type (die, type, cu);
-    }
-
-  type = alloc_type (objfile);
-
-  TYPE_CODE (type) = TYPE_CODE_ENUM;
-  name = dwarf2_full_name (NULL, die, cu);
-  if (name != NULL)
-    TYPE_NAME (type) = name;
-
-  attr = dwarf2_attr (die, DW_AT_type, cu);
-  if (attr != NULL)
-    {
-      struct type *underlying_type = die_type (die, cu);
-
-      TYPE_TARGET_TYPE (type) = underlying_type;
-    }
-
-  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
-  if (attr != nullptr)
-    {
-      TYPE_LENGTH (type) = DW_UNSND (attr);
-    }
-  else
-    {
-      TYPE_LENGTH (type) = 0;
-    }
-
-  maybe_set_alignment (cu, die, type);
-
-  /* The enumeration DIE can be incomplete.  In Ada, any type can be
-     declared as private in the package spec, and then defined only
-     inside the package body.  Such types are known as Taft Amendment
-     Types.  When another package uses such a type, an incomplete DIE
-     may be generated by the compiler.  */
-  if (die_is_declaration (die, cu))
-    TYPE_STUB (type) = 1;
-
-  /* Finish the creation of this type by using the enum's children.
-     We must call this even when the underlying type has been provided
-     so that we can determine if we're looking at a "flag" enum.  */
-  update_enumeration_type_from_children (die, type, cu);
-
-  /* If this type has an underlying type that is not a stub, then we
-     may use its attributes.  We always use the "unsigned" attribute
-     in this situation, because ordinarily we guess whether the type
-     is unsigned -- but the guess can be wrong and the underlying type
-     can tell us the reality.  However, we defer to a local size
-     attribute if one exists, because this lets the compiler override
-     the underlying type if needed.  */
-  if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
-    {
-      TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
-      if (TYPE_LENGTH (type) == 0)
-	TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
-      if (TYPE_RAW_ALIGN (type) == 0
-	  && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
-	set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
-    }
-
-  TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
-
-  return set_die_type (die, type, cu);
-}
-
-/* Given a pointer to a die which begins an enumeration, process all
-   the dies that define the members of the enumeration, and create the
-   symbol for the enumeration type.
-
-   NOTE: We reverse the order of the element list.  */
-
-static void
-process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *this_type;
-
-  this_type = get_die_type (die, cu);
-  if (this_type == NULL)
-    this_type = read_enumeration_type (die, cu);
-
-  if (die->child != NULL)
-    {
-      struct die_info *child_die;
-      struct symbol *sym;
-      struct field *fields = NULL;
-      int num_fields = 0;
-      const char *name;
-
-      child_die = die->child;
-      while (child_die && child_die->tag)
-	{
-	  if (child_die->tag != DW_TAG_enumerator)
-	    {
-	      process_die (child_die, cu);
-	    }
-	  else
-	    {
-	      name = dwarf2_name (child_die, cu);
-	      if (name)
-		{
-		  sym = new_symbol (child_die, this_type, cu);
-
-		  if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
-		    {
-		      fields = (struct field *)
-			xrealloc (fields,
-				  (num_fields + DW_FIELD_ALLOC_CHUNK)
-				  * sizeof (struct field));
-		    }
-
-		  FIELD_NAME (fields[num_fields]) = sym->linkage_name ();
-		  FIELD_TYPE (fields[num_fields]) = NULL;
-		  SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
-		  FIELD_BITSIZE (fields[num_fields]) = 0;
-
-		  num_fields++;
-		}
-	    }
-
-	  child_die = sibling_die (child_die);
-	}
-
-      if (num_fields)
-	{
-	  TYPE_NFIELDS (this_type) = num_fields;
-	  TYPE_FIELDS (this_type) = (struct field *)
-	    TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
-	  memcpy (TYPE_FIELDS (this_type), fields,
-		  sizeof (struct field) * num_fields);
-	  xfree (fields);
-	}
-    }
-
-  /* If we are reading an enum from a .debug_types unit, and the enum
-     is a declaration, and the enum is not the signatured type in the
-     unit, then we do not want to add a symbol for it.  Adding a
-     symbol would in some cases obscure the true definition of the
-     enum, giving users an incomplete type when the definition is
-     actually available.  Note that we do not want to do this for all
-     enums which are just declarations, because C++0x allows forward
-     enum declarations.  */
-  if (cu->per_cu->is_debug_types
-      && die_is_declaration (die, cu))
-    {
-      struct signatured_type *sig_type;
-
-      sig_type = (struct signatured_type *) cu->per_cu;
-      gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
-      if (sig_type->type_offset_in_section != die->sect_off)
-	return;
-    }
-
-  new_symbol (die, this_type, cu);
-}
-
-/* Extract all information from a DW_TAG_array_type DIE and put it in
-   the DIE's type field.  For now, this only handles one dimensional
-   arrays.  */
-
-static struct type *
-read_array_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct die_info *child_die;
-  struct type *type;
-  struct type *element_type, *range_type, *index_type;
-  struct attribute *attr;
-  const char *name;
-  struct dynamic_prop *byte_stride_prop = NULL;
-  unsigned int bit_stride = 0;
-
-  element_type = die_type (die, cu);
-
-  /* The die_type call above may have already set the type for this DIE.  */
-  type = get_die_type (die, cu);
-  if (type)
-    return type;
-
-  attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
-  if (attr != NULL)
-    {
-      int stride_ok;
-      struct type *prop_type
-	= dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
-
-      byte_stride_prop
-	= (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
-      stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop,
-					prop_type);
-      if (!stride_ok)
-	{
-	  complaint (_("unable to read array 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));
-	  /* Ignore this attribute.  We will likely not be able to print
-	     arrays of this type correctly, but there is little we can do
-	     to help if we cannot read the attribute's value.  */
-	  byte_stride_prop = NULL;
-	}
-    }
-
-  attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
-  if (attr != NULL)
-    bit_stride = DW_UNSND (attr);
-
-  /* Irix 6.2 native cc creates array types without children for
-     arrays with unspecified length.  */
-  if (die->child == NULL)
-    {
-      index_type = objfile_type (objfile)->builtin_int;
-      range_type = create_static_range_type (NULL, index_type, 0, -1);
-      type = create_array_type_with_stride (NULL, element_type, range_type,
-					    byte_stride_prop, bit_stride);
-      return set_die_type (die, type, cu);
-    }
-
-  std::vector<struct type *> range_types;
-  child_die = die->child;
-  while (child_die && child_die->tag)
-    {
-      if (child_die->tag == DW_TAG_subrange_type)
-	{
-	  struct type *child_type = read_type_die (child_die, cu);
-
-          if (child_type != NULL)
-            {
-	      /* The range type was succesfully read.  Save it for the
-                 array type creation.  */
-	      range_types.push_back (child_type);
-            }
-	}
-      child_die = sibling_die (child_die);
-    }
-
-  /* Dwarf2 dimensions are output from left to right, create the
-     necessary array types in backwards order.  */
-
-  type = element_type;
-
-  if (read_array_order (die, cu) == DW_ORD_col_major)
-    {
-      int i = 0;
-
-      while (i < range_types.size ())
-	type = create_array_type_with_stride (NULL, type, range_types[i++],
-					      byte_stride_prop, bit_stride);
-    }
-  else
-    {
-      size_t ndim = range_types.size ();
-      while (ndim-- > 0)
-	type = create_array_type_with_stride (NULL, type, range_types[ndim],
-					      byte_stride_prop, bit_stride);
-    }
-
-  /* Understand Dwarf2 support for vector types (like they occur on
-     the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
-     array type.  This is not part of the Dwarf2/3 standard yet, but a
-     custom vendor extension.  The main difference between a regular
-     array and the vector variant is that vectors are passed by value
-     to functions.  */
-  attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
-  if (attr != nullptr)
-    make_vector_type (type);
-
-  /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
-     implementation may choose to implement triple vectors using this
-     attribute.  */
-  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
-  if (attr != nullptr)
-    {
-      if (DW_UNSND (attr) >= TYPE_LENGTH (type))
-	TYPE_LENGTH (type) = DW_UNSND (attr);
-      else
-	complaint (_("DW_AT_byte_size for array type smaller "
-		     "than the total size of elements"));
-    }
-
-  name = dwarf2_name (die, cu);
-  if (name)
-    TYPE_NAME (type) = name;
-
-  maybe_set_alignment (cu, die, type);
-
-  /* Install the type in the die.  */
-  set_die_type (die, type, cu);
-
-  /* set_die_type should be already done.  */
-  set_descriptive_type (type, die, cu);
-
-  return type;
-}
-
-static enum dwarf_array_dim_ordering
-read_array_order (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-
-  attr = dwarf2_attr (die, DW_AT_ordering, cu);
-
-  if (attr != nullptr)
-    return (enum dwarf_array_dim_ordering) DW_SND (attr);
-
-  /* GNU F77 is a special case, as at 08/2004 array type info is the
-     opposite order to the dwarf2 specification, but data is still
-     laid out as per normal fortran.
-
-     FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
-     version checking.  */
-
-  if (cu->language == language_fortran
-      && cu->producer && strstr (cu->producer, "GNU F77"))
-    {
-      return DW_ORD_row_major;
-    }
-
-  switch (cu->language_defn->la_array_ordering)
-    {
-    case array_column_major:
-      return DW_ORD_col_major;
-    case array_row_major:
-    default:
-      return DW_ORD_row_major;
-    };
-}
-
-/* Extract all information from a DW_TAG_set_type DIE and put it in
-   the DIE's type field.  */
-
-static struct type *
-read_set_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *domain_type, *set_type;
-  struct attribute *attr;
-
-  domain_type = die_type (die, cu);
-
-  /* The die_type call above may have already set the type for this DIE.  */
-  set_type = get_die_type (die, cu);
-  if (set_type)
-    return set_type;
-
-  set_type = create_set_type (NULL, domain_type);
-
-  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
-  if (attr != nullptr)
-    TYPE_LENGTH (set_type) = DW_UNSND (attr);
-
-  maybe_set_alignment (cu, die, set_type);
-
-  return set_die_type (die, set_type, cu);
-}
-
-/* A helper for read_common_block that creates a locexpr baton.
-   SYM is the symbol which we are marking as computed.
-   COMMON_DIE is the DIE for the common block.
-   COMMON_LOC is the location expression attribute for the common
-   block itself.
-   MEMBER_LOC is the location expression attribute for the particular
-   member of the common block that we are processing.
-   CU is the CU from which the above come.  */
-
-static void
-mark_common_block_symbol_computed (struct symbol *sym,
-				   struct die_info *common_die,
-				   struct attribute *common_loc,
-				   struct attribute *member_loc,
-				   struct dwarf2_cu *cu)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwarf2_locexpr_baton *baton;
-  gdb_byte *ptr;
-  unsigned int cu_off;
-  enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
-  LONGEST offset = 0;
-
-  gdb_assert (common_loc && member_loc);
-  gdb_assert (attr_form_is_block (common_loc));
-  gdb_assert (attr_form_is_block (member_loc)
-	      || attr_form_is_constant (member_loc));
-
-  baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
-  baton->per_cu = cu->per_cu;
-  gdb_assert (baton->per_cu);
-
-  baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
-
-  if (attr_form_is_constant (member_loc))
-    {
-      offset = dwarf2_get_attr_constant_value (member_loc, 0);
-      baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
-    }
-  else
-    baton->size += DW_BLOCK (member_loc)->size;
-
-  ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
-  baton->data = ptr;
-
-  *ptr++ = DW_OP_call4;
-  cu_off = common_die->sect_off - cu->per_cu->sect_off;
-  store_unsigned_integer (ptr, 4, byte_order, cu_off);
-  ptr += 4;
-
-  if (attr_form_is_constant (member_loc))
-    {
-      *ptr++ = DW_OP_addr;
-      store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
-      ptr += cu->header.addr_size;
-    }
-  else
-    {
-      /* We have to copy the data here, because DW_OP_call4 will only
-	 use a DW_AT_location attribute.  */
-      memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
-      ptr += DW_BLOCK (member_loc)->size;
-    }
-
-  *ptr++ = DW_OP_plus;
-  gdb_assert (ptr - baton->data == baton->size);
-
-  SYMBOL_LOCATION_BATON (sym) = baton;
-  SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
-}
-
-/* Create appropriate locally-scoped variables for all the
-   DW_TAG_common_block entries.  Also create a struct common_block
-   listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
-   is used to separate the common blocks name namespace from regular
-   variable names.  */
-
-static void
-read_common_block (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-
-  attr = dwarf2_attr (die, DW_AT_location, cu);
-  if (attr != nullptr)
-    {
-      /* Support the .debug_loc offsets.  */
-      if (attr_form_is_block (attr))
-        {
-	  /* Ok.  */
-        }
-      else if (attr_form_is_section_offset (attr))
-        {
-	  dwarf2_complex_location_expr_complaint ();
-	  attr = NULL;
-        }
-      else
-        {
-	  dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
-						 "common block member");
-	  attr = NULL;
-        }
-    }
-
-  if (die->child != NULL)
-    {
-      struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-      struct die_info *child_die;
-      size_t n_entries = 0, size;
-      struct common_block *common_block;
-      struct symbol *sym;
-
-      for (child_die = die->child;
-	   child_die && child_die->tag;
-	   child_die = sibling_die (child_die))
-	++n_entries;
-
-      size = (sizeof (struct common_block)
-	      + (n_entries - 1) * sizeof (struct symbol *));
-      common_block
-	= (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
-						 size);
-      memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
-      common_block->n_entries = 0;
-
-      for (child_die = die->child;
-	   child_die && child_die->tag;
-	   child_die = sibling_die (child_die))
-	{
-	  /* Create the symbol in the DW_TAG_common_block block in the current
-	     symbol scope.  */
-	  sym = new_symbol (child_die, NULL, cu);
-	  if (sym != NULL)
-	    {
-	      struct attribute *member_loc;
-
-	      common_block->contents[common_block->n_entries++] = sym;
-
-	      member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
-					cu);
-	      if (member_loc)
-		{
-		  /* GDB has handled this for a long time, but it is
-		     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.  */
-		  complaint (_("Variable in common block has "
-			       "DW_AT_data_member_location "
-			       "- DIE at %s [in module %s]"),
-			       sect_offset_str (child_die->sect_off),
-			     objfile_name (objfile));
-
-		  if (attr_form_is_section_offset (member_loc))
-		    dwarf2_complex_location_expr_complaint ();
-		  else if (attr_form_is_constant (member_loc)
-			   || attr_form_is_block (member_loc))
-		    {
-		      if (attr != nullptr)
-			mark_common_block_symbol_computed (sym, die, attr,
-							   member_loc, cu);
-		    }
-		  else
-		    dwarf2_complex_location_expr_complaint ();
-		}
-	    }
-	}
-
-      sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
-      SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
-    }
-}
-
-/* Create a type for a C++ namespace.  */
-
-static struct type *
-read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  const char *previous_prefix, *name;
-  int is_anonymous;
-  struct type *type;
-
-  /* For extensions, reuse the type of the original namespace.  */
-  if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
-    {
-      struct die_info *ext_die;
-      struct dwarf2_cu *ext_cu = cu;
-
-      ext_die = dwarf2_extension (die, &ext_cu);
-      type = read_type_die (ext_die, ext_cu);
-
-      /* EXT_CU may not be the same as CU.
-	 Ensure TYPE is recorded with CU in die_type_hash.  */
-      return set_die_type (die, type, cu);
-    }
-
-  name = namespace_name (die, &is_anonymous, cu);
-
-  /* Now build the name of the current namespace.  */
-
-  previous_prefix = determine_prefix (die, cu);
-  if (previous_prefix[0] != '\0')
-    name = typename_concat (&objfile->objfile_obstack,
-			    previous_prefix, name, 0, cu);
-
-  /* Create the type.  */
-  type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
-
-  return set_die_type (die, type, cu);
-}
-
-/* Read a namespace scope.  */
-
-static void
-read_namespace (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  int is_anonymous;
-
-  /* Add a symbol associated to this if we haven't seen the namespace
-     before.  Also, add a using directive if it's an anonymous
-     namespace.  */
-
-  if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
-    {
-      struct type *type;
-
-      type = read_type_die (die, cu);
-      new_symbol (die, type, cu);
-
-      namespace_name (die, &is_anonymous, cu);
-      if (is_anonymous)
-	{
-	  const char *previous_prefix = determine_prefix (die, cu);
-
-	  std::vector<const char *> excludes;
-	  add_using_directive (using_directives (cu),
-			       previous_prefix, TYPE_NAME (type), NULL,
-			       NULL, excludes, 0, &objfile->objfile_obstack);
-	}
-    }
-
-  if (die->child != NULL)
-    {
-      struct die_info *child_die = die->child;
-
-      while (child_die && child_die->tag)
-	{
-	  process_die (child_die, cu);
-	  child_die = sibling_die (child_die);
-	}
-    }
-}
-
-/* Read a Fortran module as type.  This DIE can be only a declaration used for
-   imported module.  Still we need that type as local Fortran "use ... only"
-   declaration imports depend on the created type in determine_prefix.  */
-
-static struct type *
-read_module_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  const char *module_name;
-  struct type *type;
-
-  module_name = dwarf2_name (die, cu);
-  type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
-
-  return set_die_type (die, type, cu);
-}
-
-/* Read a Fortran module.  */
-
-static void
-read_module (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct die_info *child_die = die->child;
-  struct type *type;
-
-  type = read_type_die (die, cu);
-  new_symbol (die, type, cu);
-
-  while (child_die && child_die->tag)
-    {
-      process_die (child_die, cu);
-      child_die = sibling_die (child_die);
-    }
-}
-
-/* Return the name of the namespace represented by DIE.  Set
-   *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
-   namespace.  */
-
-static const char *
-namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
-{
-  struct die_info *current_die;
-  const char *name = NULL;
-
-  /* Loop through the extensions until we find a name.  */
-
-  for (current_die = die;
-       current_die != NULL;
-       current_die = dwarf2_extension (die, &cu))
-    {
-      /* We don't use dwarf2_name here so that we can detect the absence
-	 of a name -> anonymous namespace.  */
-      name = dwarf2_string_attr (die, DW_AT_name, cu);
-
-      if (name != NULL)
-	break;
-    }
-
-  /* Is it an anonymous namespace?  */
-
-  *is_anonymous = (name == NULL);
-  if (*is_anonymous)
-    name = CP_ANONYMOUS_NAMESPACE_STR;
-
-  return name;
-}
-
-/* Extract all information from a DW_TAG_pointer_type DIE and add to
-   the user defined type vector.  */
-
-static struct type *
-read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct gdbarch *gdbarch
-    = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
-  struct comp_unit_head *cu_header = &cu->header;
-  struct type *type;
-  struct attribute *attr_byte_size;
-  struct attribute *attr_address_class;
-  int byte_size, addr_class;
-  struct type *target_type;
-
-  target_type = die_type (die, cu);
-
-  /* The die_type call above may have already set the type for this DIE.  */
-  type = get_die_type (die, cu);
-  if (type)
-    return type;
-
-  type = lookup_pointer_type (target_type);
-
-  attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
-  if (attr_byte_size)
-    byte_size = DW_UNSND (attr_byte_size);
-  else
-    byte_size = cu_header->addr_size;
-
-  attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
-  if (attr_address_class)
-    addr_class = DW_UNSND (attr_address_class);
-  else
-    addr_class = DW_ADDR_none;
-
-  ULONGEST alignment = get_alignment (cu, die);
-
-  /* If the pointer size, alignment, or address class is different
-     than the default, create a type variant marked as such and set
-     the length accordingly.  */
-  if (TYPE_LENGTH (type) != byte_size
-      || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
-	  && alignment != TYPE_RAW_ALIGN (type))
-      || addr_class != DW_ADDR_none)
-    {
-      if (gdbarch_address_class_type_flags_p (gdbarch))
-	{
-	  int type_flags;
-
-	  type_flags = gdbarch_address_class_type_flags
-			 (gdbarch, byte_size, addr_class);
-	  gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
-		      == 0);
-	  type = make_type_with_address_space (type, type_flags);
-	}
-      else if (TYPE_LENGTH (type) != byte_size)
-	{
-	  complaint (_("invalid pointer size %d"), byte_size);
-	}
-      else if (TYPE_RAW_ALIGN (type) != alignment)
-	{
-	  complaint (_("Invalid DW_AT_alignment"
-		       " - DIE at %s [in module %s]"),
-		     sect_offset_str (die->sect_off),
-		     objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-	}
-      else
-	{
-	  /* Should we also complain about unhandled address classes?  */
-	}
-    }
-
-  TYPE_LENGTH (type) = byte_size;
-  set_type_align (type, alignment);
-  return set_die_type (die, type, cu);
-}
-
-/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
-   the user defined type vector.  */
-
-static struct type *
-read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *type;
-  struct type *to_type;
-  struct type *domain;
-
-  to_type = die_type (die, cu);
-  domain = die_containing_type (die, cu);
-
-  /* The calls above may have already set the type for this DIE.  */
-  type = get_die_type (die, cu);
-  if (type)
-    return type;
-
-  if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
-    type = lookup_methodptr_type (to_type);
-  else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
-    {
-      struct type *new_type
-	= alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
-
-      smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
-			    TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
-			    TYPE_VARARGS (to_type));
-      type = lookup_methodptr_type (new_type);
-    }
-  else
-    type = lookup_memberptr_type (to_type, domain);
-
-  return set_die_type (die, type, cu);
-}
-
-/* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
-   the user defined type vector.  */
-
-static struct type *
-read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
-                          enum type_code refcode)
-{
-  struct comp_unit_head *cu_header = &cu->header;
-  struct type *type, *target_type;
-  struct attribute *attr;
-
-  gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
-
-  target_type = die_type (die, cu);
-
-  /* The die_type call above may have already set the type for this DIE.  */
-  type = get_die_type (die, cu);
-  if (type)
-    return type;
-
-  type = lookup_reference_type (target_type, refcode);
-  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
-  if (attr != nullptr)
-    {
-      TYPE_LENGTH (type) = DW_UNSND (attr);
-    }
-  else
-    {
-      TYPE_LENGTH (type) = cu_header->addr_size;
-    }
-  maybe_set_alignment (cu, die, type);
-  return set_die_type (die, type, cu);
-}
-
-/* Add the given cv-qualifiers to the element type of the array.  GCC
-   outputs DWARF type qualifiers that apply to an array, not the
-   element type.  But GDB relies on the array element type to carry
-   the cv-qualifiers.  This mimics section 6.7.3 of the C99
-   specification.  */
-
-static struct type *
-add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
-		   struct type *base_type, int cnst, int voltl)
-{
-  struct type *el_type, *inner_array;
-
-  base_type = copy_type (base_type);
-  inner_array = base_type;
-
-  while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
-    {
-      TYPE_TARGET_TYPE (inner_array) =
-	copy_type (TYPE_TARGET_TYPE (inner_array));
-      inner_array = TYPE_TARGET_TYPE (inner_array);
-    }
-
-  el_type = TYPE_TARGET_TYPE (inner_array);
-  cnst |= TYPE_CONST (el_type);
-  voltl |= TYPE_VOLATILE (el_type);
-  TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
-
-  return set_die_type (die, base_type, cu);
-}
-
-static struct type *
-read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *base_type, *cv_type;
-
-  base_type = die_type (die, cu);
-
-  /* The die_type call above may have already set the type for this DIE.  */
-  cv_type = get_die_type (die, cu);
-  if (cv_type)
-    return cv_type;
-
-  /* In case the const qualifier is applied to an array type, the element type
-     is so qualified, not the array type (section 6.7.3 of C99).  */
-  if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
-    return add_array_cv_type (die, cu, base_type, 1, 0);
-
-  cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
-  return set_die_type (die, cv_type, cu);
-}
-
-static struct type *
-read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *base_type, *cv_type;
-
-  base_type = die_type (die, cu);
-
-  /* The die_type call above may have already set the type for this DIE.  */
-  cv_type = get_die_type (die, cu);
-  if (cv_type)
-    return cv_type;
-
-  /* In case the volatile qualifier is applied to an array type, the
-     element type is so qualified, not the array type (section 6.7.3
-     of C99).  */
-  if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
-    return add_array_cv_type (die, cu, base_type, 0, 1);
-
-  cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
-  return set_die_type (die, cv_type, cu);
-}
-
-/* Handle DW_TAG_restrict_type.  */
-
-static struct type *
-read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *base_type, *cv_type;
-
-  base_type = die_type (die, cu);
-
-  /* The die_type call above may have already set the type for this DIE.  */
-  cv_type = get_die_type (die, cu);
-  if (cv_type)
-    return cv_type;
-
-  cv_type = make_restrict_type (base_type);
-  return set_die_type (die, cv_type, cu);
-}
-
-/* Handle DW_TAG_atomic_type.  */
-
-static struct type *
-read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *base_type, *cv_type;
-
-  base_type = die_type (die, cu);
-
-  /* The die_type call above may have already set the type for this DIE.  */
-  cv_type = get_die_type (die, cu);
-  if (cv_type)
-    return cv_type;
-
-  cv_type = make_atomic_type (base_type);
-  return set_die_type (die, cv_type, cu);
-}
-
-/* Extract all information from a DW_TAG_string_type DIE and add to
-   the user defined type vector.  It isn't really a user defined type,
-   but it behaves like one, with other DIE's using an AT_user_def_type
-   attribute to reference it.  */
-
-static struct type *
-read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  struct type *type, *range_type, *index_type, *char_type;
-  struct attribute *attr;
-  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 && !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)
-    {
-      /* We don't currently support non-constant byte sizes for strings.  */
-      length = dwarf2_get_attr_constant_value (attr, 1);
-    }
-  else
-    {
-      /* Use 1 as a fallback length if we have nothing else.  */
-      length = 1;
-    }
-
-  index_type = objfile_type (objfile)->builtin_int;
-  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);
-
-  return set_die_type (die, type, cu);
-}
-
-/* Assuming that DIE corresponds to a function, returns nonzero
-   if the function is prototyped.  */
-
-static int
-prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-
-  attr = dwarf2_attr (die, DW_AT_prototyped, cu);
-  if (attr && (DW_UNSND (attr) != 0))
-    return 1;
-
-  /* The DWARF standard implies that the DW_AT_prototyped attribute
-     is only meaningful for C, but the concept also extends to other
-     languages that allow unprototyped functions (Eg: Objective C).
-     For all other languages, assume that functions are always
-     prototyped.  */
-  if (cu->language != language_c
-      && cu->language != language_objc
-      && cu->language != language_opencl)
-    return 1;
-
-  /* RealView does not emit DW_AT_prototyped.  We can not distinguish
-     prototyped and unprototyped functions; default to prototyped,
-     since that is more common in modern code (and RealView warns
-     about unprototyped functions).  */
-  if (producer_is_realview (cu->producer))
-    return 1;
-
-  return 0;
-}
-
-/* Handle DIES due to C code like:
-
-   struct foo
-   {
-   int (*funcp)(int a, long l);
-   int b;
-   };
-
-   ('funcp' generates a DW_TAG_subroutine_type DIE).  */
-
-static struct type *
-read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct type *type;		/* Type that this function returns.  */
-  struct type *ftype;		/* Function that returns above type.  */
-  struct attribute *attr;
-
-  type = die_type (die, cu);
-
-  /* The die_type call above may have already set the type for this DIE.  */
-  ftype = get_die_type (die, cu);
-  if (ftype)
-    return ftype;
-
-  ftype = lookup_function_type (type);
-
-  if (prototyped_function_p (die, cu))
-    TYPE_PROTOTYPED (ftype) = 1;
-
-  /* Store the calling convention in the type if it's available in
-     the subroutine die.  Otherwise set the calling convention to
-     the default value DW_CC_normal.  */
-  attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
-  if (attr != nullptr)
-    TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
-  else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
-    TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
-  else
-    TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
-
-  /* Record whether the function returns normally to its caller or not
-     if the DWARF producer set that information.  */
-  attr = dwarf2_attr (die, DW_AT_noreturn, cu);
-  if (attr && (DW_UNSND (attr) != 0))
-    TYPE_NO_RETURN (ftype) = 1;
-
-  /* We need to add the subroutine type to the die immediately so
-     we don't infinitely recurse when dealing with parameters
-     declared as the same subroutine type.  */
-  set_die_type (die, ftype, cu);
-
-  if (die->child != NULL)
-    {
-      struct type *void_type = objfile_type (objfile)->builtin_void;
-      struct die_info *child_die;
-      int nparams, iparams;
-
-      /* Count the number of parameters.
-         FIXME: GDB currently ignores vararg functions, but knows about
-         vararg member functions.  */
-      nparams = 0;
-      child_die = die->child;
-      while (child_die && child_die->tag)
-	{
-	  if (child_die->tag == DW_TAG_formal_parameter)
-	    nparams++;
-	  else if (child_die->tag == DW_TAG_unspecified_parameters)
-	    TYPE_VARARGS (ftype) = 1;
-	  child_die = sibling_die (child_die);
-	}
-
-      /* Allocate storage for parameters and fill them in.  */
-      TYPE_NFIELDS (ftype) = nparams;
-      TYPE_FIELDS (ftype) = (struct field *)
-	TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
-
-      /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
-	 even if we error out during the parameters reading below.  */
-      for (iparams = 0; iparams < nparams; iparams++)
-	TYPE_FIELD_TYPE (ftype, iparams) = void_type;
-
-      iparams = 0;
-      child_die = die->child;
-      while (child_die && child_die->tag)
-	{
-	  if (child_die->tag == DW_TAG_formal_parameter)
-	    {
-	      struct type *arg_type;
-
-	      /* DWARF version 2 has no clean way to discern C++
-		 static and non-static member functions.  G++ helps
-		 GDB by marking the first parameter for non-static
-		 member functions (which is the this pointer) as
-		 artificial.  We pass this information to
-		 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
-
-		 DWARF version 3 added DW_AT_object_pointer, which GCC
-		 4.5 does not yet generate.  */
-	      attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
-	      if (attr != nullptr)
-		TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
-	      else
-		TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
-	      arg_type = die_type (child_die, cu);
-
-	      /* RealView does not mark THIS as const, which the testsuite
-		 expects.  GCC marks THIS as const in method definitions,
-		 but not in the class specifications (GCC PR 43053).  */
-	      if (cu->language == language_cplus && !TYPE_CONST (arg_type)
-		  && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
-		{
-		  int is_this = 0;
-		  struct dwarf2_cu *arg_cu = cu;
-		  const char *name = dwarf2_name (child_die, cu);
-
-		  attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
-		  if (attr != nullptr)
-		    {
-		      /* If the compiler emits this, use it.  */
-		      if (follow_die_ref (die, attr, &arg_cu) == child_die)
-			is_this = 1;
-		    }
-		  else if (name && strcmp (name, "this") == 0)
-		    /* Function definitions will have the argument names.  */
-		    is_this = 1;
-		  else if (name == NULL && iparams == 0)
-		    /* Declarations may not have the names, so like
-		       elsewhere in GDB, assume an artificial first
-		       argument is "this".  */
-		    is_this = 1;
-
-		  if (is_this)
-		    arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
-					     arg_type, 0);
-		}
-
-	      TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
-	      iparams++;
-	    }
-	  child_die = sibling_die (child_die);
-	}
-    }
-
-  return ftype;
-}
-
-static struct type *
-read_typedef (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  const char *name = NULL;
-  struct type *this_type, *target_type;
-
-  name = dwarf2_full_name (NULL, die, cu);
-  this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
-  TYPE_TARGET_STUB (this_type) = 1;
-  set_die_type (die, this_type, cu);
-  target_type = die_type (die, cu);
-  if (target_type != this_type)
-    TYPE_TARGET_TYPE (this_type) = target_type;
-  else
-    {
-      /* Self-referential typedefs are, it seems, not allowed by the DWARF
-	 spec and cause infinite loops in GDB.  */
-      complaint (_("Self-referential DW_TAG_typedef "
-		   "- DIE at %s [in module %s]"),
-		 sect_offset_str (die->sect_off), objfile_name (objfile));
-      TYPE_TARGET_TYPE (this_type) = NULL;
-    }
-  return this_type;
-}
-
-/* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
-   (which may be different from NAME) to the architecture back-end to allow
-   it to guess the correct format if necessary.  */
-
-static struct type *
-dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
-			const char *name_hint, enum bfd_endian byte_order)
-{
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  const struct floatformat **format;
-  struct type *type;
-
-  format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
-  if (format)
-    type = init_float_type (objfile, bits, name, format, byte_order);
-  else
-    type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
-
-  return type;
-}
-
-/* Allocate an integer type of size BITS and name NAME.  */
-
-static struct type *
-dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
-			  int bits, int unsigned_p, const char *name)
-{
-  struct type *type;
-
-  /* Versions of Intel's C Compiler generate an integer type called "void"
-     instead of using DW_TAG_unspecified_type.  This has been seen on
-     at least versions 14, 17, and 18.  */
-  if (bits == 0 && producer_is_icc (cu) && name != nullptr
-      && strcmp (name, "void") == 0)
-    type = objfile_type (objfile)->builtin_void;
-  else
-    type = init_integer_type (objfile, bits, unsigned_p, name);
-
-  return type;
-}
-
-/* Initialise and return a floating point type of size BITS suitable for
-   use as a component of a complex number.  The NAME_HINT is passed through
-   when initialising the floating point type and is the name of the complex
-   type.
-
-   As DWARF doesn't currently provide an explicit name for the components
-   of a complex number, but it can be helpful to have these components
-   named, we try to select a suitable name based on the size of the
-   component.  */
-static struct type *
-dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
-				 struct objfile *objfile,
-				 int bits, const char *name_hint,
-				 enum bfd_endian byte_order)
-{
-  gdbarch *gdbarch = get_objfile_arch (objfile);
-  struct type *tt = nullptr;
-
-  /* Try to find a suitable floating point builtin type of size BITS.
-     We're going to use the name of this type as the name for the complex
-     target type that we are about to create.  */
-  switch (cu->language)
-    {
-    case language_fortran:
-      switch (bits)
-	{
-	case 32:
-	  tt = builtin_f_type (gdbarch)->builtin_real;
-	  break;
-	case 64:
-	  tt = builtin_f_type (gdbarch)->builtin_real_s8;
-	  break;
-	case 96:	/* The x86-32 ABI specifies 96-bit long double.  */
-	case 128:
-	  tt = builtin_f_type (gdbarch)->builtin_real_s16;
-	  break;
-	}
-      break;
-    default:
-      switch (bits)
-	{
-	case 32:
-	  tt = builtin_type (gdbarch)->builtin_float;
-	  break;
-	case 64:
-	  tt = builtin_type (gdbarch)->builtin_double;
-	  break;
-	case 96:	/* The x86-32 ABI specifies 96-bit long double.  */
-	case 128:
-	  tt = builtin_type (gdbarch)->builtin_long_double;
-	  break;
-	}
-      break;
-    }
-
-  /* If the type we found doesn't match the size we were looking for, then
-     pretend we didn't find a type at all, the complex target type we
-     create will then be nameless.  */
-  if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
-    tt = nullptr;
-
-  const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt);
-  return dwarf2_init_float_type (objfile, bits, name, name_hint, byte_order);
-}
-
-/* Find a representation of a given base type and install
-   it in the TYPE field of the die.  */
-
-static struct type *
-read_base_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct type *type;
-  struct attribute *attr;
-  int encoding = 0, bits = 0;
-  const char *name;
-  gdbarch *arch;
-
-  attr = dwarf2_attr (die, DW_AT_encoding, cu);
-  if (attr != nullptr)
-    encoding = DW_UNSND (attr);
-  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
-  if (attr != nullptr)
-    bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
-  name = dwarf2_name (die, cu);
-  if (!name)
-    complaint (_("DW_AT_name missing from DW_TAG_base_type"));
-
-  arch = get_objfile_arch (objfile);
-  enum bfd_endian byte_order = gdbarch_byte_order (arch);
-
-  attr = dwarf2_attr (die, DW_AT_endianity, cu);
-  if (attr)
-    {
-      int endianity = DW_UNSND (attr);
-
-      switch (endianity)
-	{
-	case DW_END_big:
-	  byte_order = BFD_ENDIAN_BIG;
-	  break;
-	case DW_END_little:
-	  byte_order = BFD_ENDIAN_LITTLE;
-	  break;
-	default:
-	  complaint (_("DW_AT_endianity has unrecognized value %d"), endianity);
-	  break;
-	}
-    }
-
-  switch (encoding)
-    {
-      case DW_ATE_address:
-	/* Turn DW_ATE_address into a void * pointer.  */
-	type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
-	type = init_pointer_type (objfile, bits, name, type);
-	break;
-      case DW_ATE_boolean:
-	type = init_boolean_type (objfile, bits, 1, name);
-	break;
-      case DW_ATE_complex_float:
-	type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name,
-						byte_order);
-	type = init_complex_type (objfile, name, type);
-	break;
-      case DW_ATE_decimal_float:
-	type = init_decfloat_type (objfile, bits, name);
-	break;
-      case DW_ATE_float:
-	type = dwarf2_init_float_type (objfile, bits, name, name, byte_order);
-	break;
-      case DW_ATE_signed:
-	type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
-	break;
-      case DW_ATE_unsigned:
-	if (cu->language == language_fortran
-	    && name
-	    && startswith (name, "character("))
-	  type = init_character_type (objfile, bits, 1, name);
-	else
-	  type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
-	break;
-      case DW_ATE_signed_char:
-	if (cu->language == language_ada || cu->language == language_m2
-	    || cu->language == language_pascal
-	    || cu->language == language_fortran)
-	  type = init_character_type (objfile, bits, 0, name);
-	else
-	  type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
-	break;
-      case DW_ATE_unsigned_char:
-	if (cu->language == language_ada || cu->language == language_m2
-	    || cu->language == language_pascal
-	    || cu->language == language_fortran
-	    || cu->language == language_rust)
-	  type = init_character_type (objfile, bits, 1, name);
-	else
-	  type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
-	break;
-      case DW_ATE_UTF:
-	{
-	  if (bits == 16)
-	    type = builtin_type (arch)->builtin_char16;
-	  else if (bits == 32)
-	    type = builtin_type (arch)->builtin_char32;
-	  else
-	    {
-	      complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
-			 bits);
-	      type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
-	    }
-	  return set_die_type (die, type, cu);
-	}
-	break;
-
-      default:
-	complaint (_("unsupported DW_AT_encoding: '%s'"),
-		   dwarf_type_encoding_name (encoding));
-	type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
-	break;
-    }
-
-  if (name && strcmp (name, "char") == 0)
-    TYPE_NOSIGN (type) = 1;
-
-  maybe_set_alignment (cu, die, type);
-
-  TYPE_ENDIANITY_NOT_DEFAULT (type) = gdbarch_byte_order (arch) != byte_order;
-
-  return set_die_type (die, type, cu);
-}
-
-/* Parse dwarf attribute if it's a block, reference or constant and put the
-   resulting value of the attribute into struct bound_prop.
-   Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
-
-static int
-attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
-		      struct dwarf2_cu *cu, struct dynamic_prop *prop,
-		      struct type *default_type)
-{
-  struct dwarf2_property_baton *baton;
-  struct obstack *obstack
-    = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
-
-  gdb_assert (default_type != NULL);
-
-  if (attr == NULL || prop == NULL)
-    return 0;
-
-  if (attr_form_is_block (attr))
-    {
-      baton = XOBNEW (obstack, struct dwarf2_property_baton);
-      baton->property_type = default_type;
-      baton->locexpr.per_cu = cu->per_cu;
-      baton->locexpr.size = DW_BLOCK (attr)->size;
-      baton->locexpr.data = DW_BLOCK (attr)->data;
-      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);
-    }
-  else if (attr_form_is_ref (attr))
-    {
-      struct dwarf2_cu *target_cu = cu;
-      struct die_info *target_die;
-      struct attribute *target_attr;
-
-      target_die = follow_die_ref (die, attr, &target_cu);
-      target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
-      if (target_attr == NULL)
-	target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
-				   target_cu);
-      if (target_attr == NULL)
-	return 0;
-
-      switch (target_attr->name)
-	{
-	  case DW_AT_location:
-	    if (attr_form_is_section_offset (target_attr))
-	      {
-		baton = XOBNEW (obstack, struct dwarf2_property_baton);
-		baton->property_type = die_type (target_die, target_cu);
-		fill_in_loclist_baton (cu, &baton->loclist, target_attr);
-		prop->data.baton = baton;
-		prop->kind = PROP_LOCLIST;
-		gdb_assert (prop->data.baton != NULL);
-	      }
-	    else if (attr_form_is_block (target_attr))
-	      {
-		baton = XOBNEW (obstack, struct dwarf2_property_baton);
-		baton->property_type = die_type (target_die, target_cu);
-		baton->locexpr.per_cu = cu->per_cu;
-		baton->locexpr.size = DW_BLOCK (target_attr)->size;
-		baton->locexpr.data = DW_BLOCK (target_attr)->data;
-		baton->locexpr.is_reference = true;
-		prop->data.baton = baton;
-		prop->kind = PROP_LOCEXPR;
-		gdb_assert (prop->data.baton != NULL);
-	      }
-	    else
-	      {
-		dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
-						       "dynamic property");
-		return 0;
-	      }
-	    break;
-	  case DW_AT_data_member_location:
-	    {
-	      LONGEST offset;
-
-	      if (!handle_data_member_location (target_die, target_cu,
-						&offset))
-		return 0;
-
-	      baton = XOBNEW (obstack, struct dwarf2_property_baton);
-	      baton->property_type = read_type_die (target_die->parent,
-						      target_cu);
-	      baton->offset_info.offset = offset;
-	      baton->offset_info.type = die_type (target_die, target_cu);
-	      prop->data.baton = baton;
-	      prop->kind = PROP_ADDR_OFFSET;
-	      break;
-	    }
-	}
-    }
-  else if (attr_form_is_constant (attr))
-    {
-      prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
-      prop->kind = PROP_CONST;
-    }
-  else
-    {
-      dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
-					     dwarf2_name (die, cu));
-      return 0;
-    }
-
-  return 1;
-}
-
-/* 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_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;
-  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) == size_in_bytes)	\
-    return int_type
-
-  TRY_TYPE (char);
-  TRY_TYPE (short);
-  TRY_TYPE (int);
-  TRY_TYPE (long);
-  TRY_TYPE (long_long);
-
-#undef TRY_TYPE
-
-  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.  */
-
-static struct type *
-read_subrange_index_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *index_type = die_type (die, cu);
-
-  /* Dwarf-2 specifications explicitly allows to create subrange types
-     without specifying a base type.
-     In that case, the base type must be set to the type of
-     the lower bound, upper bound or count, in that order, if any of these
-     three attributes references an object that has a type.
-     If no base type is found, the Dwarf-2 specifications say that
-     a signed integer type of size equal to the size of an address should
-     be used.
-     For the following C code: `extern char gdb_int [];'
-     GCC produces an empty range DIE.
-     FIXME: muller/2010-05-28: Possible references to object for low bound,
-     high bound or count are not yet handled by this code.  */
-  if (TYPE_CODE (index_type) == TYPE_CODE_VOID)
-    index_type = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
-
-  return index_type;
-}
-
-/* Read the given DW_AT_subrange DIE.  */
-
-static struct type *
-read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *base_type, *orig_base_type;
-  struct type *range_type;
-  struct attribute *attr;
-  struct dynamic_prop low, high;
-  int low_default_is_valid;
-  int high_bound_is_count = 0;
-  const char *name;
-  ULONGEST negative_mask;
-
-  orig_base_type = read_subrange_index_type (die, cu);
-
-  /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
-     whereas the real type might be.  So, we use ORIG_BASE_TYPE when
-     creating the range type, but we use the result of check_typedef
-     when examining properties of the type.  */
-  base_type = check_typedef (orig_base_type);
-
-  /* The die_type call above may have already set the type for this DIE.  */
-  range_type = get_die_type (die, cu);
-  if (range_type)
-    return range_type;
-
-  low.kind = PROP_CONST;
-  high.kind = PROP_CONST;
-  high.data.const_val = 0;
-
-  /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
-     omitting DW_AT_lower_bound.  */
-  switch (cu->language)
-    {
-    case language_c:
-    case language_cplus:
-      low.data.const_val = 0;
-      low_default_is_valid = 1;
-      break;
-    case language_fortran:
-      low.data.const_val = 1;
-      low_default_is_valid = 1;
-      break;
-    case language_d:
-    case language_objc:
-    case language_rust:
-      low.data.const_val = 0;
-      low_default_is_valid = (cu->header.version >= 4);
-      break;
-    case language_ada:
-    case language_m2:
-    case language_pascal:
-      low.data.const_val = 1;
-      low_default_is_valid = (cu->header.version >= 4);
-      break;
-    default:
-      low.data.const_val = 0;
-      low_default_is_valid = 0;
-      break;
-    }
-
-  attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
-  if (attr != nullptr)
-    attr_to_dynamic_prop (attr, die, cu, &low, base_type);
-  else if (!low_default_is_valid)
-    complaint (_("Missing DW_AT_lower_bound "
-				      "- DIE at %s [in module %s]"),
-	       sect_offset_str (die->sect_off),
-	       objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-
-  struct attribute *attr_ub, *attr_count;
-  attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
-  if (!attr_to_dynamic_prop (attr, die, cu, &high, base_type))
-    {
-      attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
-      if (attr_to_dynamic_prop (attr, die, cu, &high, base_type))
-	{
-	  /* If bounds are constant do the final calculation here.  */
-	  if (low.kind == PROP_CONST && high.kind == PROP_CONST)
-	    high.data.const_val = low.data.const_val + high.data.const_val - 1;
-	  else
-	    high_bound_is_count = 1;
-	}
-      else
-	{
-	  if (attr_ub != NULL)
-	    complaint (_("Unresolved DW_AT_upper_bound "
-			 "- DIE at %s [in module %s]"),
-		       sect_offset_str (die->sect_off),
-		       objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-	  if (attr_count != NULL)
-	    complaint (_("Unresolved DW_AT_count "
-			 "- DIE at %s [in module %s]"),
-		       sect_offset_str (die->sect_off),
-		       objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-	}
-    }
-
-  LONGEST bias = 0;
-  struct attribute *bias_attr = dwarf2_attr (die, DW_AT_GNU_bias, cu);
-  if (bias_attr != nullptr && attr_form_is_constant (bias_attr))
-    bias = dwarf2_get_attr_constant_value (bias_attr, 0);
-
-  /* Normally, the DWARF producers are expected to use a signed
-     constant form (Eg. DW_FORM_sdata) to express negative bounds.
-     But this is unfortunately not always the case, as witnessed
-     with GCC, for instance, where the ambiguous DW_FORM_dataN form
-     is used instead.  To work around that ambiguity, we treat
-     the bounds as signed, and thus sign-extend their values, when
-     the base type is signed.  */
-  negative_mask =
-    -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
-  if (low.kind == PROP_CONST
-      && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
-    low.data.const_val |= negative_mask;
-  if (high.kind == PROP_CONST
-      && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
-    high.data.const_val |= negative_mask;
-
-  /* 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;
-
-  /* Ada expects an empty array on no boundary attributes.  */
-  if (attr == NULL && cu->language != language_ada)
-    TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
-
-  name = dwarf2_name (die, cu);
-  if (name)
-    TYPE_NAME (range_type) = name;
-
-  attr = dwarf2_attr (die, DW_AT_byte_size, cu);
-  if (attr != nullptr)
-    TYPE_LENGTH (range_type) = DW_UNSND (attr);
-
-  maybe_set_alignment (cu, die, range_type);
-
-  set_die_type (die, range_type, cu);
-
-  /* set_die_type should be already done.  */
-  set_descriptive_type (range_type, die, cu);
-
-  return range_type;
-}
-
-static struct type *
-read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *type;
-
-  type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
-		    NULL);
-  TYPE_NAME (type) = dwarf2_name (die, cu);
-
-  /* In Ada, an unspecified type is typically used when the description
-     of the type is deferred to a different unit.  When encountering
-     such a type, we treat it as a stub, and try to resolve it later on,
-     when needed.  */
-  if (cu->language == language_ada)
-    TYPE_STUB (type) = 1;
-
-  return set_die_type (die, type, cu);
-}
-
-/* Read a single die and all its descendents.  Set the die's sibling
-   field to NULL; set other fields in the die correctly, and set all
-   of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
-   location of the info_ptr after reading all of those dies.  PARENT
-   is the parent of the die in question.  */
-
-static struct die_info *
-read_die_and_children (const struct die_reader_specs *reader,
-		       const gdb_byte *info_ptr,
-		       const gdb_byte **new_info_ptr,
-		       struct die_info *parent)
-{
-  struct die_info *die;
-  const gdb_byte *cur_ptr;
-  int has_children;
-
-  cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
-  if (die == NULL)
-    {
-      *new_info_ptr = cur_ptr;
-      return NULL;
-    }
-  store_in_ref_table (die, reader->cu);
-
-  if (has_children)
-    die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
-  else
-    {
-      die->child = NULL;
-      *new_info_ptr = cur_ptr;
-    }
-
-  die->sibling = NULL;
-  die->parent = parent;
-  return die;
-}
-
-/* Read a die, all of its descendents, and all of its siblings; set
-   all of the fields of all of the dies correctly.  Arguments are as
-   in read_die_and_children.  */
-
-static struct die_info *
-read_die_and_siblings_1 (const struct die_reader_specs *reader,
-			 const gdb_byte *info_ptr,
-			 const gdb_byte **new_info_ptr,
-			 struct die_info *parent)
-{
-  struct die_info *first_die, *last_sibling;
-  const gdb_byte *cur_ptr;
-
-  cur_ptr = info_ptr;
-  first_die = last_sibling = NULL;
-
-  while (1)
-    {
-      struct die_info *die
-	= read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
-
-      if (die == NULL)
-	{
-	  *new_info_ptr = cur_ptr;
-	  return first_die;
-	}
-
-      if (!first_die)
-	first_die = die;
-      else
-	last_sibling->sibling = die;
-
-      last_sibling = die;
-    }
-}
-
-/* Read a die, all of its descendents, and all of its siblings; set
-   all of the fields of all of the dies correctly.  Arguments are as
-   in read_die_and_children.
-   This the main entry point for reading a DIE and all its children.  */
-
-static struct die_info *
-read_die_and_siblings (const struct die_reader_specs *reader,
-		       const gdb_byte *info_ptr,
-		       const gdb_byte **new_info_ptr,
-		       struct die_info *parent)
-{
-  struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
-						  new_info_ptr, parent);
-
-  if (dwarf_die_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog,
-			  "Read die from %s@0x%x of %s:\n",
-			  get_section_name (reader->die_section),
-			  (unsigned) (info_ptr - reader->die_section->buffer),
-			  bfd_get_filename (reader->abfd));
-      dump_die (die, dwarf_die_debug);
-    }
-
-  return die;
-}
-
-/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
-   attributes.
-   The caller is responsible for filling in the extra attributes
-   and updating (*DIEP)->num_attrs.
-   Set DIEP to point to a newly allocated die with its information,
-   except for its child, sibling, and parent fields.
-   Set HAS_CHILDREN to tell whether the die has children or not.  */
-
-static const gdb_byte *
-read_full_die_1 (const struct die_reader_specs *reader,
-		 struct die_info **diep, const gdb_byte *info_ptr,
-		 int *has_children, int num_extra_attrs)
-{
-  unsigned int abbrev_number, bytes_read, i;
-  struct abbrev_info *abbrev;
-  struct die_info *die;
-  struct dwarf2_cu *cu = reader->cu;
-  bfd *abfd = reader->abfd;
-
-  sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
-  abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
-  info_ptr += bytes_read;
-  if (!abbrev_number)
-    {
-      *diep = NULL;
-      *has_children = 0;
-      return info_ptr;
-    }
-
-  abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
-  if (!abbrev)
-    error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
-	   abbrev_number,
-	   bfd_get_filename (abfd));
-
-  die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
-  die->sect_off = sect_off;
-  die->tag = abbrev->tag;
-  die->abbrev = abbrev_number;
-
-  /* Make the result usable.
-     The caller needs to update num_attrs after adding the extra
-     attributes.  */
-  die->num_attrs = abbrev->num_attrs;
-
-  for (i = 0; i < abbrev->num_attrs; ++i)
-    info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
-			       info_ptr);
-
-  *diep = die;
-  *has_children = abbrev->has_children;
-  return info_ptr;
-}
-
-/* Read a die and all its attributes.
-   Set DIEP to point to a newly allocated die with its information,
-   except for its child, sibling, and parent fields.
-   Set HAS_CHILDREN to tell whether the die has children or not.  */
-
-static const gdb_byte *
-read_full_die (const struct die_reader_specs *reader,
-	       struct die_info **diep, const gdb_byte *info_ptr,
-	       int *has_children)
-{
-  const gdb_byte *result;
-
-  result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
-
-  if (dwarf_die_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog,
-			  "Read die from %s@0x%x of %s:\n",
-			  get_section_name (reader->die_section),
-			  (unsigned) (info_ptr - reader->die_section->buffer),
-			  bfd_get_filename (reader->abfd));
-      dump_die (*diep, dwarf_die_debug);
-    }
-
-  return result;
-}
-
-/* Abbreviation tables.
-
-   In DWARF version 2, the description of the debugging information is
-   stored in a separate .debug_abbrev section.  Before we read any
-   dies from a section we read in all abbreviations and install them
-   in a hash table.  */
-
-/* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
-
-struct abbrev_info *
-abbrev_table::alloc_abbrev ()
-{
-  struct abbrev_info *abbrev;
-
-  abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
-  memset (abbrev, 0, sizeof (struct abbrev_info));
-
-  return abbrev;
-}
-
-/* Add an abbreviation to the table.  */
-
-void
-abbrev_table::add_abbrev (unsigned int abbrev_number,
-			  struct abbrev_info *abbrev)
-{
-  unsigned int hash_number;
-
-  hash_number = abbrev_number % ABBREV_HASH_SIZE;
-  abbrev->next = m_abbrevs[hash_number];
-  m_abbrevs[hash_number] = abbrev;
-}
-
-/* Look up an abbrev in the table.
-   Returns NULL if the abbrev is not found.  */
-
-struct abbrev_info *
-abbrev_table::lookup_abbrev (unsigned int abbrev_number)
-{
-  unsigned int hash_number;
-  struct abbrev_info *abbrev;
-
-  hash_number = abbrev_number % ABBREV_HASH_SIZE;
-  abbrev = m_abbrevs[hash_number];
-
-  while (abbrev)
-    {
-      if (abbrev->number == abbrev_number)
-	return abbrev;
-      abbrev = abbrev->next;
-    }
-  return NULL;
-}
-
-/* Read in an abbrev table.  */
-
-static abbrev_table_up
-abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			 struct dwarf2_section_info *section,
-			 sect_offset sect_off)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  bfd *abfd = get_section_bfd_owner (section);
-  const gdb_byte *abbrev_ptr;
-  struct abbrev_info *cur_abbrev;
-  unsigned int abbrev_number, bytes_read, abbrev_name;
-  unsigned int abbrev_form;
-  struct attr_abbrev *cur_attrs;
-  unsigned int allocated_attrs;
-
-  abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
-
-  dwarf2_read_section (objfile, section);
-  abbrev_ptr = section->buffer + to_underlying (sect_off);
-  abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
-  abbrev_ptr += bytes_read;
-
-  allocated_attrs = ATTR_ALLOC_CHUNK;
-  cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
-
-  /* Loop until we reach an abbrev number of 0.  */
-  while (abbrev_number)
-    {
-      cur_abbrev = abbrev_table->alloc_abbrev ();
-
-      /* read in abbrev header */
-      cur_abbrev->number = abbrev_number;
-      cur_abbrev->tag
-	= (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
-      abbrev_ptr += bytes_read;
-      cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
-      abbrev_ptr += 1;
-
-      /* now read in declarations */
-      for (;;)
-	{
-	  LONGEST implicit_const;
-
-	  abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
-	  abbrev_ptr += bytes_read;
-	  abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
-	  abbrev_ptr += bytes_read;
-	  if (abbrev_form == DW_FORM_implicit_const)
-	    {
-	      implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
-						   &bytes_read);
-	      abbrev_ptr += bytes_read;
-	    }
-	  else
-	    {
-	      /* Initialize it due to a false compiler warning.  */
-	      implicit_const = -1;
-	    }
-
-	  if (abbrev_name == 0)
-	    break;
-
-	  if (cur_abbrev->num_attrs == allocated_attrs)
-	    {
-	      allocated_attrs += ATTR_ALLOC_CHUNK;
-	      cur_attrs
-		= XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
-	    }
-
-	  cur_attrs[cur_abbrev->num_attrs].name
-	    = (enum dwarf_attribute) abbrev_name;
-	  cur_attrs[cur_abbrev->num_attrs].form
-	    = (enum dwarf_form) abbrev_form;
-	  cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
-	  ++cur_abbrev->num_attrs;
-	}
-
-      cur_abbrev->attrs =
-	XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
-		   cur_abbrev->num_attrs);
-      memcpy (cur_abbrev->attrs, cur_attrs,
-	      cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
-
-      abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
-
-      /* Get next abbreviation.
-         Under Irix6 the abbreviations for a compilation unit are not
-         always properly terminated with an abbrev number of 0.
-         Exit loop if we encounter an abbreviation which we have
-         already read (which means we are about to read the abbreviations
-         for the next compile unit) or if the end of the abbreviation
-         table is reached.  */
-      if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
-	break;
-      abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
-      abbrev_ptr += bytes_read;
-      if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
-	break;
-    }
-
-  xfree (cur_attrs);
-  return abbrev_table;
-}
-
-/* Returns nonzero if TAG represents a type that we might generate a partial
-   symbol for.  */
-
-static int
-is_type_tag_for_partial (int tag)
-{
-  switch (tag)
-    {
-#if 0
-    /* Some types that would be reasonable to generate partial symbols for,
-       that we don't at present.  */
-    case DW_TAG_array_type:
-    case DW_TAG_file_type:
-    case DW_TAG_ptr_to_member_type:
-    case DW_TAG_set_type:
-    case DW_TAG_string_type:
-    case DW_TAG_subroutine_type:
-#endif
-    case DW_TAG_base_type:
-    case DW_TAG_class_type:
-    case DW_TAG_interface_type:
-    case DW_TAG_enumeration_type:
-    case DW_TAG_structure_type:
-    case DW_TAG_subrange_type:
-    case DW_TAG_typedef:
-    case DW_TAG_union_type:
-      return 1;
-    default:
-      return 0;
-    }
-}
-
-/* Load all DIEs that are interesting for partial symbols into memory.  */
-
-static struct partial_die_info *
-load_partial_dies (const struct die_reader_specs *reader,
-		   const gdb_byte *info_ptr, int building_psymtab)
-{
-  struct dwarf2_cu *cu = reader->cu;
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct partial_die_info *parent_die, *last_die, *first_die = NULL;
-  unsigned int bytes_read;
-  unsigned int load_all = 0;
-  int nesting_level = 1;
-
-  parent_die = NULL;
-  last_die = NULL;
-
-  gdb_assert (cu->per_cu != NULL);
-  if (cu->per_cu->load_all_dies)
-    load_all = 1;
-
-  cu->partial_dies
-    = htab_create_alloc_ex (cu->header.length / 12,
-			    partial_die_hash,
-			    partial_die_eq,
-			    NULL,
-			    &cu->comp_unit_obstack,
-			    hashtab_obstack_allocate,
-			    dummy_obstack_deallocate);
-
-  while (1)
-    {
-      abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
-
-      /* A NULL abbrev means the end of a series of children.  */
-      if (abbrev == NULL)
-	{
-	  if (--nesting_level == 0)
-	    return first_die;
-
-	  info_ptr += bytes_read;
-	  last_die = parent_die;
-	  parent_die = parent_die->die_parent;
-	  continue;
-	}
-
-      /* Check for template arguments.  We never save these; if
-	 they're seen, we just mark the parent, and go on our way.  */
-      if (parent_die != NULL
-	  && cu->language == language_cplus
-	  && (abbrev->tag == DW_TAG_template_type_param
-	      || abbrev->tag == DW_TAG_template_value_param))
-	{
-	  parent_die->has_template_arguments = 1;
-
-	  if (!load_all)
-	    {
-	      /* We don't need a partial DIE for the template argument.  */
-	      info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
-	      continue;
-	    }
-	}
-
-      /* We only recurse into c++ subprograms looking for template arguments.
-	 Skip their other children.  */
-      if (!load_all
-	  && cu->language == language_cplus
-	  && parent_die != NULL
-	  && parent_die->tag == DW_TAG_subprogram)
-	{
-	  info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
-	  continue;
-	}
-
-      /* Check whether this DIE is interesting enough to save.  Normally
-	 we would not be interested in members here, but there may be
-	 later variables referencing them via DW_AT_specification (for
-	 static members).  */
-      if (!load_all
-	  && !is_type_tag_for_partial (abbrev->tag)
-	  && abbrev->tag != DW_TAG_constant
-	  && abbrev->tag != DW_TAG_enumerator
-	  && abbrev->tag != DW_TAG_subprogram
-	  && abbrev->tag != DW_TAG_inlined_subroutine
-	  && abbrev->tag != DW_TAG_lexical_block
-	  && abbrev->tag != DW_TAG_variable
-	  && abbrev->tag != DW_TAG_namespace
-	  && abbrev->tag != DW_TAG_module
-	  && abbrev->tag != DW_TAG_member
-	  && abbrev->tag != DW_TAG_imported_unit
-	  && abbrev->tag != DW_TAG_imported_declaration)
-	{
-	  /* Otherwise we skip to the next sibling, if any.  */
-	  info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
-	  continue;
-	}
-
-      struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
-				   abbrev);
-
-      info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
-
-      /* This two-pass algorithm for processing partial symbols has a
-	 high cost in cache pressure.  Thus, handle some simple cases
-	 here which cover the majority of C partial symbols.  DIEs
-	 which neither have specification tags in them, nor could have
-	 specification tags elsewhere pointing at them, can simply be
-	 processed and discarded.
-
-	 This segment is also optional; scan_partial_symbols and
-	 add_partial_symbol will handle these DIEs if we chain
-	 them in normally.  When compilers which do not emit large
-	 quantities of duplicate debug information are more common,
-	 this code can probably be removed.  */
-
-      /* Any complete simple types at the top level (pretty much all
-	 of them, for a language without namespaces), can be processed
-	 directly.  */
-      if (parent_die == NULL
-	  && pdi.has_specification == 0
-	  && pdi.is_declaration == 0
-	  && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
-	      || pdi.tag == DW_TAG_base_type
-	      || pdi.tag == DW_TAG_subrange_type))
-	{
-	  if (building_psymtab && pdi.name != NULL)
-	    add_psymbol_to_list (pdi.name, false,
-				 VAR_DOMAIN, LOC_TYPEDEF, -1,
-				 psymbol_placement::STATIC,
-				 0, cu->language, objfile);
-	  info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
-	  continue;
-	}
-
-      /* The exception for DW_TAG_typedef with has_children above is
-	 a workaround of GCC PR debug/47510.  In the case of this complaint
-	 type_name_or_error will error on such types later.
-
-	 GDB skipped children of DW_TAG_typedef by the shortcut above and then
-	 it could not find the child DIEs referenced later, this is checked
-	 above.  In correct DWARF DW_TAG_typedef should have no children.  */
-
-      if (pdi.tag == DW_TAG_typedef && pdi.has_children)
-	complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
-		     "- DIE at %s [in module %s]"),
-		   sect_offset_str (pdi.sect_off), objfile_name (objfile));
-
-      /* If we're at the second level, and we're an enumerator, and
-	 our parent has no specification (meaning possibly lives in a
-	 namespace elsewhere), then we can add the partial symbol now
-	 instead of queueing it.  */
-      if (pdi.tag == DW_TAG_enumerator
-	  && parent_die != NULL
-	  && parent_die->die_parent == NULL
-	  && parent_die->tag == DW_TAG_enumeration_type
-	  && parent_die->has_specification == 0)
-	{
-	  if (pdi.name == NULL)
-	    complaint (_("malformed enumerator DIE ignored"));
-	  else if (building_psymtab)
-	    add_psymbol_to_list (pdi.name, false,
-				 VAR_DOMAIN, LOC_CONST, -1,
-				 cu->language == language_cplus
-				 ? psymbol_placement::GLOBAL
-				 : psymbol_placement::STATIC,
-				 0, cu->language, objfile);
-
-	  info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
-	  continue;
-	}
-
-      struct partial_die_info *part_die
-	= new (&cu->comp_unit_obstack) partial_die_info (pdi);
-
-      /* We'll save this DIE so link it in.  */
-      part_die->die_parent = parent_die;
-      part_die->die_sibling = NULL;
-      part_die->die_child = NULL;
-
-      if (last_die && last_die == parent_die)
-	last_die->die_child = part_die;
-      else if (last_die)
-	last_die->die_sibling = part_die;
-
-      last_die = part_die;
-
-      if (first_die == NULL)
-	first_die = part_die;
-
-      /* Maybe add the DIE to the hash table.  Not all DIEs that we
-	 find interesting need to be in the hash table, because we
-	 also have the parent/sibling/child chains; only those that we
-	 might refer to by offset later during partial symbol reading.
-
-	 For now this means things that might have be the target of a
-	 DW_AT_specification, DW_AT_abstract_origin, or
-	 DW_AT_extension.  DW_AT_extension will refer only to
-	 namespaces; DW_AT_abstract_origin refers to functions (and
-	 many things under the function DIE, but we do not recurse
-	 into function DIEs during partial symbol reading) and
-	 possibly variables as well; DW_AT_specification refers to
-	 declarations.  Declarations ought to have the DW_AT_declaration
-	 flag.  It happens that GCC forgets to put it in sometimes, but
-	 only for functions, not for types.
-
-	 Adding more things than necessary to the hash table is harmless
-	 except for the performance cost.  Adding too few will result in
-	 wasted time in find_partial_die, when we reread the compilation
-	 unit with load_all_dies set.  */
-
-      if (load_all
-	  || abbrev->tag == DW_TAG_constant
-	  || abbrev->tag == DW_TAG_subprogram
-	  || abbrev->tag == DW_TAG_variable
-	  || abbrev->tag == DW_TAG_namespace
-	  || part_die->is_declaration)
-	{
-	  void **slot;
-
-	  slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
-					   to_underlying (part_die->sect_off),
-					   INSERT);
-	  *slot = part_die;
-	}
-
-      /* For some DIEs we want to follow their children (if any).  For C
-	 we have no reason to follow the children of structures; for other
-	 languages we have to, so that we can get at method physnames
-	 to infer fully qualified class names, for DW_AT_specification,
-	 and for C++ template arguments.  For C++, we also look one level
-	 inside functions to find template arguments (if the name of the
-	 function does not already contain the template arguments).
-
-	 For Ada and Fortran, we need to scan the children of subprograms
-	 and lexical blocks as well because these languages allow the
-	 definition of nested entities that could be interesting for the
-	 debugger, such as nested subprograms for instance.  */
-      if (last_die->has_children
-	  && (load_all
-	      || last_die->tag == DW_TAG_namespace
-	      || last_die->tag == DW_TAG_module
-	      || last_die->tag == DW_TAG_enumeration_type
-	      || (cu->language == language_cplus
-		  && last_die->tag == DW_TAG_subprogram
-		  && (last_die->name == NULL
-		      || strchr (last_die->name, '<') == NULL))
-	      || (cu->language != language_c
-		  && (last_die->tag == DW_TAG_class_type
-		      || last_die->tag == DW_TAG_interface_type
-		      || last_die->tag == DW_TAG_structure_type
-		      || last_die->tag == DW_TAG_union_type))
-	      || ((cu->language == language_ada
-		   || cu->language == language_fortran)
-		  && (last_die->tag == DW_TAG_subprogram
-		      || last_die->tag == DW_TAG_lexical_block))))
-	{
-	  nesting_level++;
-	  parent_die = last_die;
-	  continue;
-	}
-
-      /* Otherwise we skip to the next sibling, if any.  */
-      info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
-
-      /* Back to the top, do it again.  */
-    }
-}
-
-partial_die_info::partial_die_info (sect_offset sect_off_,
-				    struct abbrev_info *abbrev)
-  : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
-{
-}
-
-/* Read a minimal amount of information into the minimal die structure.
-   INFO_PTR should point just after the initial uleb128 of a DIE.  */
-
-const gdb_byte *
-partial_die_info::read (const struct die_reader_specs *reader,
-			const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
-{
-  struct dwarf2_cu *cu = reader->cu;
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  unsigned int i;
-  int has_low_pc_attr = 0;
-  int has_high_pc_attr = 0;
-  int high_pc_relative = 0;
-
-  for (i = 0; i < abbrev.num_attrs; ++i)
-    {
-      struct attribute attr;
-
-      info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
-
-      /* Store the data if it is of an attribute we want to keep in a
-         partial symbol table.  */
-      switch (attr.name)
-	{
-	case DW_AT_name:
-	  switch (tag)
-	    {
-	    case DW_TAG_compile_unit:
-	    case DW_TAG_partial_unit:
-	    case DW_TAG_type_unit:
-	      /* Compilation units have a DW_AT_name that is a filename, not
-		 a source language identifier.  */
-	    case DW_TAG_enumeration_type:
-	    case DW_TAG_enumerator:
-	      /* These tags always have simple identifiers already; no need
-		 to canonicalize them.  */
-	      name = DW_STRING (&attr);
-	      break;
-	    default:
-	      {
-		struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-		name
-		  = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
-					      &objfile->per_bfd->storage_obstack);
-	      }
-	      break;
-	    }
-	  break;
-	case DW_AT_linkage_name:
-	case DW_AT_MIPS_linkage_name:
-	  /* Note that both forms of linkage name might appear.  We
-	     assume they will be the same, and we only store the last
-	     one we see.  */
-	  linkage_name = DW_STRING (&attr);
-	  break;
-	case DW_AT_low_pc:
-	  has_low_pc_attr = 1;
-	  lowpc = attr_value_as_address (&attr);
-	  break;
-	case DW_AT_high_pc:
-	  has_high_pc_attr = 1;
-	  highpc = attr_value_as_address (&attr);
-	  if (cu->header.version >= 4 && attr_form_is_constant (&attr))
-		high_pc_relative = 1;
-	  break;
-	case DW_AT_location:
-          /* Support the .debug_loc offsets.  */
-          if (attr_form_is_block (&attr))
-            {
-	       d.locdesc = DW_BLOCK (&attr);
-            }
-          else if (attr_form_is_section_offset (&attr))
-            {
-	      dwarf2_complex_location_expr_complaint ();
-            }
-          else
-            {
-	      dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
-						     "partial symbol information");
-            }
-	  break;
-	case DW_AT_external:
-	  is_external = DW_UNSND (&attr);
-	  break;
-	case DW_AT_declaration:
-	  is_declaration = DW_UNSND (&attr);
-	  break;
-	case DW_AT_type:
-	  has_type = 1;
-	  break;
-	case DW_AT_abstract_origin:
-	case DW_AT_specification:
-	case DW_AT_extension:
-	  has_specification = 1;
-	  spec_offset = dwarf2_get_ref_die_offset (&attr);
-	  spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
-				   || cu->per_cu->is_dwz);
-	  break;
-	case DW_AT_sibling:
-	  /* Ignore absolute siblings, they might point outside of
-	     the current compile unit.  */
-	  if (attr.form == DW_FORM_ref_addr)
-	    complaint (_("ignoring absolute DW_AT_sibling"));
-	  else
-	    {
-	      const gdb_byte *buffer = reader->buffer;
-	      sect_offset off = dwarf2_get_ref_die_offset (&attr);
-	      const gdb_byte *sibling_ptr = buffer + to_underlying (off);
-
-	      if (sibling_ptr < info_ptr)
-		complaint (_("DW_AT_sibling points backwards"));
-	      else if (sibling_ptr > reader->buffer_end)
-		dwarf2_section_buffer_overflow_complaint (reader->die_section);
-	      else
-		sibling = sibling_ptr;
-	    }
-	  break;
-        case DW_AT_byte_size:
-          has_byte_size = 1;
-          break;
-        case DW_AT_const_value:
-          has_const_value = 1;
-          break;
-	case DW_AT_calling_convention:
-	  /* DWARF doesn't provide a way to identify a program's source-level
-	     entry point.  DW_AT_calling_convention attributes are only meant
-	     to describe functions' calling conventions.
-
-	     However, because it's a necessary piece of information in
-	     Fortran, and before DWARF 4 DW_CC_program was the only
-	     piece of debugging information whose definition refers to
-	     a 'main program' at all, several compilers marked Fortran
-	     main programs with DW_CC_program --- even when those
-	     functions use the standard calling conventions.
-
-	     Although DWARF now specifies a way to provide this
-	     information, we support this practice for backward
-	     compatibility.  */
-	  if (DW_UNSND (&attr) == DW_CC_program
-	      && cu->language == language_fortran)
-	    main_subprogram = 1;
-	  break;
-	case DW_AT_inline:
-	  if (DW_UNSND (&attr) == DW_INL_inlined
-	      || DW_UNSND (&attr) == DW_INL_declared_inlined)
-	    may_be_inlined = 1;
-	  break;
-
-	case DW_AT_import:
-	  if (tag == DW_TAG_imported_unit)
-	    {
-	      d.sect_off = dwarf2_get_ref_die_offset (&attr);
-	      is_dwz = (attr.form == DW_FORM_GNU_ref_alt
-				  || cu->per_cu->is_dwz);
-	    }
-	  break;
-
-	case DW_AT_main_subprogram:
-	  main_subprogram = DW_UNSND (&attr);
-	  break;
-
-	case DW_AT_ranges:
-	  {
-	    /* It would be nice to reuse dwarf2_get_pc_bounds here,
-	       but that requires a full DIE, so instead we just
-	       reimplement it.  */
-	    int need_ranges_base = tag != DW_TAG_compile_unit;
-	    unsigned int ranges_offset = (DW_UNSND (&attr)
-					  + (need_ranges_base
-					     ? cu->ranges_base
-					     : 0));
-
-	    /* Value of the DW_AT_ranges attribute is the offset in the
-	       .debug_ranges section.  */
-	    if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
-				    nullptr))
-	      has_pc_info = 1;
-	  }
-	  break;
-
-	default:
-	  break;
-	}
-    }
-
-  /* For Ada, if both the name and the linkage name appear, we prefer
-     the latter.  This lets "catch exception" work better, regardless
-     of the order in which the name and linkage name were emitted.
-     Really, though, this is just a workaround for the fact that gdb
-     doesn't store both the name and the linkage name.  */
-  if (cu->language == language_ada && linkage_name != nullptr)
-    name = linkage_name;
-
-  if (high_pc_relative)
-    highpc += lowpc;
-
-  if (has_low_pc_attr && has_high_pc_attr)
-    {
-      /* When using the GNU linker, .gnu.linkonce. sections are used to
-	 eliminate duplicate copies of functions and vtables and such.
-	 The linker will arbitrarily choose one and discard the others.
-	 The AT_*_pc values for such functions refer to local labels in
-	 these sections.  If the section from that file was discarded, the
-	 labels are not in the output, so the relocs get a value of 0.
-	 If this is a discarded function, mark the pc bounds as invalid,
-	 so that GDB will ignore it.  */
-      if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
-	{
-	  struct objfile *objfile = dwarf2_per_objfile->objfile;
-	  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-
-	  complaint (_("DW_AT_low_pc %s is zero "
-		       "for DIE at %s [in module %s]"),
-		     paddress (gdbarch, lowpc),
-		     sect_offset_str (sect_off),
-		     objfile_name (objfile));
-	}
-      /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
-      else if (lowpc >= highpc)
-	{
-	  struct objfile *objfile = dwarf2_per_objfile->objfile;
-	  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-
-	  complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
-		       "for DIE at %s [in module %s]"),
-		     paddress (gdbarch, lowpc),
-		     paddress (gdbarch, highpc),
-		     sect_offset_str (sect_off),
-		     objfile_name (objfile));
-	}
-      else
-	has_pc_info = 1;
-    }
-
-  return info_ptr;
-}
-
-/* Find a cached partial DIE at OFFSET in CU.  */
-
-struct partial_die_info *
-dwarf2_cu::find_partial_die (sect_offset sect_off)
-{
-  struct partial_die_info *lookup_die = NULL;
-  struct partial_die_info part_die (sect_off);
-
-  lookup_die = ((struct partial_die_info *)
-		htab_find_with_hash (partial_dies, &part_die,
-				     to_underlying (sect_off)));
-
-  return lookup_die;
-}
-
-/* Find a partial DIE at OFFSET, which may or may not be in CU,
-   except in the case of .debug_types DIEs which do not reference
-   outside their CU (they do however referencing other types via
-   DW_FORM_ref_sig8).  */
-
-static const struct cu_partial_die_info
-find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwarf2_per_cu_data *per_cu = NULL;
-  struct partial_die_info *pd = NULL;
-
-  if (offset_in_dwz == cu->per_cu->is_dwz
-      && offset_in_cu_p (&cu->header, sect_off))
-    {
-      pd = cu->find_partial_die (sect_off);
-      if (pd != NULL)
-	return { cu, pd };
-      /* We missed recording what we needed.
-	 Load all dies and try again.  */
-      per_cu = cu->per_cu;
-    }
-  else
-    {
-      /* TUs don't reference other CUs/TUs (except via type signatures).  */
-      if (cu->per_cu->is_debug_types)
-	{
-	  error (_("Dwarf Error: Type Unit at offset %s contains"
-		   " external reference to offset %s [in module %s].\n"),
-		 sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
-		 bfd_get_filename (objfile->obfd));
-	}
-      per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
-						 dwarf2_per_objfile);
-
-      if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
-	load_partial_comp_unit (per_cu);
-
-      per_cu->cu->last_used = 0;
-      pd = per_cu->cu->find_partial_die (sect_off);
-    }
-
-  /* If we didn't find it, and not all dies have been loaded,
-     load them all and try again.  */
-
-  if (pd == NULL && per_cu->load_all_dies == 0)
-    {
-      per_cu->load_all_dies = 1;
-
-      /* This is nasty.  When we reread the DIEs, somewhere up the call chain
-	 THIS_CU->cu may already be in use.  So we can't just free it and
-	 replace its DIEs with the ones we read in.  Instead, we leave those
-	 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
-	 and clobber THIS_CU->cu->partial_dies with the hash table for the new
-	 set.  */
-      load_partial_comp_unit (per_cu);
-
-      pd = per_cu->cu->find_partial_die (sect_off);
-    }
-
-  if (pd == NULL)
-    internal_error (__FILE__, __LINE__,
-		    _("could not find partial DIE %s "
-		      "in cache [from module %s]\n"),
-		    sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
-  return { per_cu->cu, pd };
-}
-
-/* See if we can figure out if the class lives in a namespace.  We do
-   this by looking for a member function; its demangled name will
-   contain namespace info, if there is any.  */
-
-static void
-guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
-				  struct dwarf2_cu *cu)
-{
-  /* NOTE: carlton/2003-10-07: Getting the info this way changes
-     what template types look like, because the demangler
-     frequently doesn't give the same name as the debug info.  We
-     could fix this by only using the demangled name to get the
-     prefix (but see comment in read_structure_type).  */
-
-  struct partial_die_info *real_pdi;
-  struct partial_die_info *child_pdi;
-
-  /* If this DIE (this DIE's specification, if any) has a parent, then
-     we should not do this.  We'll prepend the parent's fully qualified
-     name when we create the partial symbol.  */
-
-  real_pdi = struct_pdi;
-  while (real_pdi->has_specification)
-    {
-      auto res = find_partial_die (real_pdi->spec_offset,
-				   real_pdi->spec_is_dwz, cu);
-      real_pdi = res.pdi;
-      cu = res.cu;
-    }
-
-  if (real_pdi->die_parent != NULL)
-    return;
-
-  for (child_pdi = struct_pdi->die_child;
-       child_pdi != NULL;
-       child_pdi = child_pdi->die_sibling)
-    {
-      if (child_pdi->tag == DW_TAG_subprogram
-	  && child_pdi->linkage_name != NULL)
-	{
-	  char *actual_class_name
-	    = language_class_name_from_physname (cu->language_defn,
-						 child_pdi->linkage_name);
-	  if (actual_class_name != NULL)
-	    {
-	      struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-	      struct_pdi->name
-		= obstack_strdup (&objfile->per_bfd->storage_obstack,
-				  actual_class_name);
-	      xfree (actual_class_name);
-	    }
-	  break;
-	}
-    }
-}
-
-void
-partial_die_info::fixup (struct dwarf2_cu *cu)
-{
-  /* Once we've fixed up a die, there's no point in doing so again.
-     This also avoids a memory leak if we were to call
-     guess_partial_die_structure_name multiple times.  */
-  if (fixup_called)
-    return;
-
-  /* If we found a reference attribute and the DIE has no name, try
-     to find a name in the referred to DIE.  */
-
-  if (name == NULL && has_specification)
-    {
-      struct partial_die_info *spec_die;
-
-      auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
-      spec_die = res.pdi;
-      cu = res.cu;
-
-      spec_die->fixup (cu);
-
-      if (spec_die->name)
-	{
-	  name = spec_die->name;
-
-	  /* Copy DW_AT_external attribute if it is set.  */
-	  if (spec_die->is_external)
-	    is_external = spec_die->is_external;
-	}
-    }
-
-  /* Set default names for some unnamed DIEs.  */
-
-  if (name == NULL && tag == DW_TAG_namespace)
-    name = CP_ANONYMOUS_NAMESPACE_STR;
-
-  /* If there is no parent die to provide a namespace, and there are
-     children, see if we can determine the namespace from their linkage
-     name.  */
-  if (cu->language == language_cplus
-      && !cu->per_cu->dwarf2_per_objfile->types.empty ()
-      && die_parent == NULL
-      && has_children
-      && (tag == DW_TAG_class_type
-	  || tag == DW_TAG_structure_type
-	  || tag == DW_TAG_union_type))
-    guess_partial_die_structure_name (this, cu);
-
-  /* GCC might emit a nameless struct or union that has a linkage
-     name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
-  if (name == NULL
-      && (tag == DW_TAG_class_type
-	  || tag == DW_TAG_interface_type
-	  || tag == DW_TAG_structure_type
-	  || tag == DW_TAG_union_type)
-      && linkage_name != NULL)
-    {
-      char *demangled;
-
-      demangled = gdb_demangle (linkage_name, DMGL_TYPES);
-      if (demangled)
-	{
-	  const char *base;
-
-	  /* Strip any leading namespaces/classes, keep only the base name.
-	     DW_AT_name for named DIEs does not contain the prefixes.  */
-	  base = strrchr (demangled, ':');
-	  if (base && base > demangled && base[-1] == ':')
-	    base++;
-	  else
-	    base = demangled;
-
-	  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-	  name = obstack_strdup (&objfile->per_bfd->storage_obstack, base);
-	  xfree (demangled);
-	}
-    }
-
-  fixup_called = 1;
-}
-
-/* Read an attribute value described by an attribute form.  */
-
-static const gdb_byte *
-read_attribute_value (const struct die_reader_specs *reader,
-		      struct attribute *attr, unsigned form,
-		      LONGEST implicit_const, const gdb_byte *info_ptr)
-{
-  struct dwarf2_cu *cu = reader->cu;
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  bfd *abfd = reader->abfd;
-  struct comp_unit_head *cu_header = &cu->header;
-  unsigned int bytes_read;
-  struct dwarf_block *blk;
-
-  attr->form = (enum dwarf_form) form;
-  switch (form)
-    {
-    case DW_FORM_ref_addr:
-      if (cu->header.version == 2)
-	DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
-      else
-	DW_UNSND (attr) = read_offset (abfd, info_ptr,
-				       &cu->header, &bytes_read);
-      info_ptr += bytes_read;
-      break;
-    case DW_FORM_GNU_ref_alt:
-      DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
-      info_ptr += bytes_read;
-      break;
-    case DW_FORM_addr:
-      DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
-      DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
-      info_ptr += bytes_read;
-      break;
-    case DW_FORM_block2:
-      blk = dwarf_alloc_block (cu);
-      blk->size = read_2_bytes (abfd, info_ptr);
-      info_ptr += 2;
-      blk->data = read_n_bytes (abfd, info_ptr, blk->size);
-      info_ptr += blk->size;
-      DW_BLOCK (attr) = blk;
-      break;
-    case DW_FORM_block4:
-      blk = dwarf_alloc_block (cu);
-      blk->size = read_4_bytes (abfd, info_ptr);
-      info_ptr += 4;
-      blk->data = read_n_bytes (abfd, info_ptr, blk->size);
-      info_ptr += blk->size;
-      DW_BLOCK (attr) = blk;
-      break;
-    case DW_FORM_data2:
-      DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
-      info_ptr += 2;
-      break;
-    case DW_FORM_data4:
-      DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
-      info_ptr += 4;
-      break;
-    case DW_FORM_data8:
-      DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
-      info_ptr += 8;
-      break;
-    case DW_FORM_data16:
-      blk = dwarf_alloc_block (cu);
-      blk->size = 16;
-      blk->data = read_n_bytes (abfd, info_ptr, 16);
-      info_ptr += 16;
-      DW_BLOCK (attr) = blk;
-      break;
-    case DW_FORM_sec_offset:
-      DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
-      info_ptr += bytes_read;
-      break;
-    case DW_FORM_string:
-      DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
-      DW_STRING_IS_CANONICAL (attr) = 0;
-      info_ptr += bytes_read;
-      break;
-    case DW_FORM_strp:
-      if (!cu->per_cu->is_dwz)
-	{
-	  DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
-						   abfd, info_ptr, cu_header,
-						   &bytes_read);
-	  DW_STRING_IS_CANONICAL (attr) = 0;
-	  info_ptr += bytes_read;
-	  break;
-	}
-      /* FALLTHROUGH */
-    case DW_FORM_line_strp:
-      if (!cu->per_cu->is_dwz)
-	{
-	  DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
-							abfd, info_ptr,
-							cu_header, &bytes_read);
-	  DW_STRING_IS_CANONICAL (attr) = 0;
-	  info_ptr += bytes_read;
-	  break;
-	}
-      /* FALLTHROUGH */
-    case DW_FORM_GNU_strp_alt:
-      {
-	struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
-	LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
-					  &bytes_read);
-
-	DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
-							  dwz, str_offset);
-	DW_STRING_IS_CANONICAL (attr) = 0;
-	info_ptr += bytes_read;
-      }
-      break;
-    case DW_FORM_exprloc:
-    case DW_FORM_block:
-      blk = dwarf_alloc_block (cu);
-      blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
-      info_ptr += bytes_read;
-      blk->data = read_n_bytes (abfd, info_ptr, blk->size);
-      info_ptr += blk->size;
-      DW_BLOCK (attr) = blk;
-      break;
-    case DW_FORM_block1:
-      blk = dwarf_alloc_block (cu);
-      blk->size = read_1_byte (abfd, info_ptr);
-      info_ptr += 1;
-      blk->data = read_n_bytes (abfd, info_ptr, blk->size);
-      info_ptr += blk->size;
-      DW_BLOCK (attr) = blk;
-      break;
-    case DW_FORM_data1:
-      DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
-      info_ptr += 1;
-      break;
-    case DW_FORM_flag:
-      DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
-      info_ptr += 1;
-      break;
-    case DW_FORM_flag_present:
-      DW_UNSND (attr) = 1;
-      break;
-    case DW_FORM_sdata:
-      DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
-      info_ptr += bytes_read;
-      break;
-    case DW_FORM_udata:
-      DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
-      info_ptr += bytes_read;
-      break;
-    case DW_FORM_ref1:
-      DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
-			 + read_1_byte (abfd, info_ptr));
-      info_ptr += 1;
-      break;
-    case DW_FORM_ref2:
-      DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
-			 + read_2_bytes (abfd, info_ptr));
-      info_ptr += 2;
-      break;
-    case DW_FORM_ref4:
-      DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
-			 + read_4_bytes (abfd, info_ptr));
-      info_ptr += 4;
-      break;
-    case DW_FORM_ref8:
-      DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
-			 + read_8_bytes (abfd, info_ptr));
-      info_ptr += 8;
-      break;
-    case DW_FORM_ref_sig8:
-      DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
-      info_ptr += 8;
-      break;
-    case DW_FORM_ref_udata:
-      DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
-			 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
-      info_ptr += bytes_read;
-      break;
-    case DW_FORM_indirect:
-      form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
-      info_ptr += bytes_read;
-      if (form == DW_FORM_implicit_const)
-	{
-	  implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
-	  info_ptr += bytes_read;
-	}
-      info_ptr = read_attribute_value (reader, attr, form, implicit_const,
-				       info_ptr);
-      break;
-    case DW_FORM_implicit_const:
-      DW_SND (attr) = implicit_const;
-      break;
-    case DW_FORM_addrx:
-    case DW_FORM_GNU_addr_index:
-      if (reader->dwo_file == NULL)
-	{
-	  /* For now flag a hard error.
-	     Later we can turn this into a complaint.  */
-	  error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
-		 dwarf_form_name (form),
-		 bfd_get_filename (abfd));
-	}
-      DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
-      info_ptr += bytes_read;
-      break;
-    case DW_FORM_strx:
-    case DW_FORM_strx1:
-    case DW_FORM_strx2:
-    case DW_FORM_strx3:
-    case DW_FORM_strx4:
-    case DW_FORM_GNU_str_index:
-      if (reader->dwo_file == NULL)
-	{
-	  /* For now flag a hard error.
-	     Later we can turn this into a complaint if warranted.  */
-	  error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
-		 dwarf_form_name (form),
-		 bfd_get_filename (abfd));
-	}
-      {
-	ULONGEST str_index;
-	if (form == DW_FORM_strx1)
-	  {
-	    str_index = read_1_byte (abfd, info_ptr);
-	    info_ptr += 1;
-	  }
-	else if (form == DW_FORM_strx2)
-	  {
-	    str_index = read_2_bytes (abfd, info_ptr);
-	    info_ptr += 2;
-	  }
-	else if (form == DW_FORM_strx3)
-	  {
-	    str_index = read_3_bytes (abfd, info_ptr);
-	    info_ptr += 3;
-	  }
-	else if (form == DW_FORM_strx4)
-	  {
-	    str_index = read_4_bytes (abfd, info_ptr);
-	    info_ptr += 4;
-	  }
-	else
-	  {
-	    str_index = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
-	    info_ptr += bytes_read;
-	  }
-	DW_STRING (attr) = read_str_index (reader, str_index);
-	DW_STRING_IS_CANONICAL (attr) = 0;
-      }
-      break;
-    default:
-      error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
-	     dwarf_form_name (form),
-	     bfd_get_filename (abfd));
-    }
-
-  /* Super hack.  */
-  if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
-    attr->form = DW_FORM_GNU_ref_alt;
-
-  /* We have seen instances where the compiler tried to emit a byte
-     size attribute of -1 which ended up being encoded as an unsigned
-     0xffffffff.  Although 0xffffffff is technically a valid size value,
-     an object of this size seems pretty unlikely so we can relatively
-     safely treat these cases as if the size attribute was invalid and
-     treat them as zero by default.  */
-  if (attr->name == DW_AT_byte_size
-      && form == DW_FORM_data4
-      && DW_UNSND (attr) >= 0xffffffff)
-    {
-      complaint
-        (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
-         hex_string (DW_UNSND (attr)));
-      DW_UNSND (attr) = 0;
-    }
-
-  return info_ptr;
-}
-
-/* Read an attribute described by an abbreviated attribute.  */
-
-static const gdb_byte *
-read_attribute (const struct die_reader_specs *reader,
-		struct attribute *attr, struct attr_abbrev *abbrev,
-		const gdb_byte *info_ptr)
-{
-  attr->name = abbrev->name;
-  return read_attribute_value (reader, attr, abbrev->form,
-			       abbrev->implicit_const, info_ptr);
-}
-
-/* Read dwarf information from a buffer.  */
-
-static unsigned int
-read_1_byte (bfd *abfd, const gdb_byte *buf)
-{
-  return bfd_get_8 (abfd, buf);
-}
-
-static int
-read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
-{
-  return bfd_get_signed_8 (abfd, buf);
-}
-
-static unsigned int
-read_2_bytes (bfd *abfd, const gdb_byte *buf)
-{
-  return bfd_get_16 (abfd, buf);
-}
-
-static int
-read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
-{
-  return bfd_get_signed_16 (abfd, buf);
-}
-
-static unsigned int
-read_3_bytes (bfd *abfd, const gdb_byte *buf)
-{
-  unsigned int result = 0;
-  for (int i = 0; i < 3; ++i)
-    {
-      unsigned char byte = bfd_get_8 (abfd, buf);
-      buf++;
-      result |= ((unsigned int) byte << (i * 8));
-    }
-  return result;
-}
-
-static unsigned int
-read_4_bytes (bfd *abfd, const gdb_byte *buf)
-{
-  return bfd_get_32 (abfd, buf);
-}
-
-static int
-read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
-{
-  return bfd_get_signed_32 (abfd, buf);
-}
-
-static ULONGEST
-read_8_bytes (bfd *abfd, const gdb_byte *buf)
-{
-  return bfd_get_64 (abfd, buf);
-}
-
-static CORE_ADDR
-read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
-	      unsigned int *bytes_read)
-{
-  struct comp_unit_head *cu_header = &cu->header;
-  CORE_ADDR retval = 0;
-
-  if (cu_header->signed_addr_p)
-    {
-      switch (cu_header->addr_size)
-	{
-	case 2:
-	  retval = bfd_get_signed_16 (abfd, buf);
-	  break;
-	case 4:
-	  retval = bfd_get_signed_32 (abfd, buf);
-	  break;
-	case 8:
-	  retval = bfd_get_signed_64 (abfd, buf);
-	  break;
-	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("read_address: bad switch, signed [in module %s]"),
-			  bfd_get_filename (abfd));
-	}
-    }
-  else
-    {
-      switch (cu_header->addr_size)
-	{
-	case 2:
-	  retval = bfd_get_16 (abfd, buf);
-	  break;
-	case 4:
-	  retval = bfd_get_32 (abfd, buf);
-	  break;
-	case 8:
-	  retval = bfd_get_64 (abfd, buf);
-	  break;
-	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("read_address: bad switch, "
-			    "unsigned [in module %s]"),
-			  bfd_get_filename (abfd));
-	}
-    }
-
-  *bytes_read = cu_header->addr_size;
-  return retval;
-}
-
-/* Read the initial length from a section.  The (draft) DWARF 3
-   specification allows the initial length to take up either 4 bytes
-   or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
-   bytes describe the length and all offsets will be 8 bytes in length
-   instead of 4.
-
-   An older, non-standard 64-bit format is also handled by this
-   function.  The older format in question stores the initial length
-   as an 8-byte quantity without an escape value.  Lengths greater
-   than 2^32 aren't very common which means that the initial 4 bytes
-   is almost always zero.  Since a length value of zero doesn't make
-   sense for the 32-bit format, this initial zero can be considered to
-   be an escape value which indicates the presence of the older 64-bit
-   format.  As written, the code can't detect (old format) lengths
-   greater than 4GB.  If it becomes necessary to handle lengths
-   somewhat larger than 4GB, we could allow other small values (such
-   as the non-sensical values of 1, 2, and 3) to also be used as
-   escape values indicating the presence of the old format.
-
-   The value returned via bytes_read should be used to increment the
-   relevant pointer after calling read_initial_length().
-
-   [ Note:  read_initial_length() and read_offset() are based on the
-     document entitled "DWARF Debugging Information Format", revision
-     3, draft 8, dated November 19, 2001.  This document was obtained
-     from:
-
-	http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
-
-     This document is only a draft and is subject to change.  (So beware.)
-
-     Details regarding the older, non-standard 64-bit format were
-     determined empirically by examining 64-bit ELF files produced by
-     the SGI toolchain on an IRIX 6.5 machine.
-
-     - Kevin, July 16, 2002
-   ] */
-
-static LONGEST
-read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
-{
-  LONGEST length = bfd_get_32 (abfd, buf);
-
-  if (length == 0xffffffff)
-    {
-      length = bfd_get_64 (abfd, buf + 4);
-      *bytes_read = 12;
-    }
-  else if (length == 0)
-    {
-      /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
-      length = bfd_get_64 (abfd, buf);
-      *bytes_read = 8;
-    }
-  else
-    {
-      *bytes_read = 4;
-    }
-
-  return length;
-}
-
-/* Cover function for read_initial_length.
-   Returns the length of the object at BUF, and stores the size of the
-   initial length in *BYTES_READ and stores the size that offsets will be in
-   *OFFSET_SIZE.
-   If the initial length size is not equivalent to that specified in
-   CU_HEADER then issue a complaint.
-   This is useful when reading non-comp-unit headers.  */
-
-static LONGEST
-read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
-					const struct comp_unit_head *cu_header,
-					unsigned int *bytes_read,
-					unsigned int *offset_size)
-{
-  LONGEST length = read_initial_length (abfd, buf, bytes_read);
-
-  gdb_assert (cu_header->initial_length_size == 4
-	      || cu_header->initial_length_size == 8
-	      || cu_header->initial_length_size == 12);
-
-  if (cu_header->initial_length_size != *bytes_read)
-    complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
-
-  *offset_size = (*bytes_read == 4) ? 4 : 8;
-  return length;
-}
-
-/* Read an offset from the data stream.  The size of the offset is
-   given by cu_header->offset_size.  */
-
-static LONGEST
-read_offset (bfd *abfd, const gdb_byte *buf,
-	     const struct comp_unit_head *cu_header,
-             unsigned int *bytes_read)
-{
-  LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
-
-  *bytes_read = cu_header->offset_size;
-  return offset;
-}
-
-/* Read an offset from the data stream.  */
-
-static LONGEST
-read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
-{
-  LONGEST retval = 0;
-
-  switch (offset_size)
-    {
-    case 4:
-      retval = bfd_get_32 (abfd, buf);
-      break;
-    case 8:
-      retval = bfd_get_64 (abfd, buf);
-      break;
-    default:
-      internal_error (__FILE__, __LINE__,
-		      _("read_offset_1: bad switch [in module %s]"),
-		      bfd_get_filename (abfd));
-    }
-
-  return retval;
-}
-
-static const gdb_byte *
-read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
-{
-  /* If the size of a host char is 8 bits, we can return a pointer
-     to the buffer, otherwise we have to copy the data to a buffer
-     allocated on the temporary obstack.  */
-  gdb_assert (HOST_CHAR_BIT == 8);
-  return buf;
-}
-
-static const char *
-read_direct_string (bfd *abfd, const gdb_byte *buf,
-		    unsigned int *bytes_read_ptr)
-{
-  /* If the size of a host char is 8 bits, we can return a pointer
-     to the string, otherwise we have to copy the string to a buffer
-     allocated on the temporary obstack.  */
-  gdb_assert (HOST_CHAR_BIT == 8);
-  if (*buf == '\0')
-    {
-      *bytes_read_ptr = 1;
-      return NULL;
-    }
-  *bytes_read_ptr = strlen ((const char *) buf) + 1;
-  return (const char *) buf;
-}
-
-/* Return pointer to string at section SECT offset STR_OFFSET with error
-   reporting strings FORM_NAME and SECT_NAME.  */
-
-static const char *
-read_indirect_string_at_offset_from (struct objfile *objfile,
-				     bfd *abfd, LONGEST str_offset,
-				     struct dwarf2_section_info *sect,
-				     const char *form_name,
-				     const char *sect_name)
-{
-  dwarf2_read_section (objfile, sect);
-  if (sect->buffer == NULL)
-    error (_("%s used without %s section [in module %s]"),
-	   form_name, sect_name, bfd_get_filename (abfd));
-  if (str_offset >= sect->size)
-    error (_("%s pointing outside of %s section [in module %s]"),
-	   form_name, sect_name, bfd_get_filename (abfd));
-  gdb_assert (HOST_CHAR_BIT == 8);
-  if (sect->buffer[str_offset] == '\0')
-    return NULL;
-  return (const char *) (sect->buffer + str_offset);
-}
-
-/* Return pointer to string at .debug_str offset STR_OFFSET.  */
-
-static const char *
-read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
-				bfd *abfd, LONGEST str_offset)
-{
-  return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
-					      abfd, str_offset,
-					      &dwarf2_per_objfile->str,
-					      "DW_FORM_strp", ".debug_str");
-}
-
-/* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
-
-static const char *
-read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
-				     bfd *abfd, LONGEST str_offset)
-{
-  return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
-					      abfd, str_offset,
-					      &dwarf2_per_objfile->line_str,
-					      "DW_FORM_line_strp",
-					      ".debug_line_str");
-}
-
-/* Read a string at offset STR_OFFSET in the .debug_str section from
-   the .dwz file DWZ.  Throw an error if the offset is too large.  If
-   the string consists of a single NUL byte, return NULL; otherwise
-   return a pointer to the string.  */
-
-static const char *
-read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
-			       LONGEST str_offset)
-{
-  dwarf2_read_section (objfile, &dwz->str);
-
-  if (dwz->str.buffer == NULL)
-    error (_("DW_FORM_GNU_strp_alt used without .debug_str "
-	     "section [in module %s]"),
-	   bfd_get_filename (dwz->dwz_bfd.get ()));
-  if (str_offset >= dwz->str.size)
-    error (_("DW_FORM_GNU_strp_alt pointing outside of "
-	     ".debug_str section [in module %s]"),
-	   bfd_get_filename (dwz->dwz_bfd.get ()));
-  gdb_assert (HOST_CHAR_BIT == 8);
-  if (dwz->str.buffer[str_offset] == '\0')
-    return NULL;
-  return (const char *) (dwz->str.buffer + str_offset);
-}
-
-/* Return pointer to string at .debug_str offset as read from BUF.
-   BUF is assumed to be in a compilation unit described by CU_HEADER.
-   Return *BYTES_READ_PTR count of bytes read from BUF.  */
-
-static const char *
-read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
-		      const gdb_byte *buf,
-		      const struct comp_unit_head *cu_header,
-		      unsigned int *bytes_read_ptr)
-{
-  LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
-
-  return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
-}
-
-/* Return pointer to string at .debug_line_str offset as read from BUF.
-   BUF is assumed to be in a compilation unit described by CU_HEADER.
-   Return *BYTES_READ_PTR count of bytes read from BUF.  */
-
-static const char *
-read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			   bfd *abfd, const gdb_byte *buf,
-			   const struct comp_unit_head *cu_header,
-			   unsigned int *bytes_read_ptr)
-{
-  LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
-
-  return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
-					      str_offset);
-}
-
-ULONGEST
-read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
-			  unsigned int *bytes_read_ptr)
-{
-  ULONGEST result;
-  unsigned int num_read;
-  int shift;
-  unsigned char byte;
-
-  result = 0;
-  shift = 0;
-  num_read = 0;
-  while (1)
-    {
-      byte = bfd_get_8 (abfd, buf);
-      buf++;
-      num_read++;
-      result |= ((ULONGEST) (byte & 127) << shift);
-      if ((byte & 128) == 0)
-	{
-	  break;
-	}
-      shift += 7;
-    }
-  *bytes_read_ptr = num_read;
-  return result;
-}
-
-static LONGEST
-read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
-		    unsigned int *bytes_read_ptr)
-{
-  ULONGEST result;
-  int shift, num_read;
-  unsigned char byte;
-
-  result = 0;
-  shift = 0;
-  num_read = 0;
-  while (1)
-    {
-      byte = bfd_get_8 (abfd, buf);
-      buf++;
-      num_read++;
-      result |= ((ULONGEST) (byte & 127) << shift);
-      shift += 7;
-      if ((byte & 128) == 0)
-	{
-	  break;
-	}
-    }
-  if ((shift < 8 * sizeof (result)) && (byte & 0x40))
-    result |= -(((ULONGEST) 1) << shift);
-  *bytes_read_ptr = num_read;
-  return result;
-}
-
-/* Given index ADDR_INDEX in .debug_addr, fetch the value.
-   ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
-   ADDR_SIZE is the size of addresses from the CU header.  */
-
-static CORE_ADDR
-read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
-		   unsigned int addr_index, ULONGEST addr_base, int addr_size)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  bfd *abfd = objfile->obfd;
-  const gdb_byte *info_ptr;
-
-  dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
-  if (dwarf2_per_objfile->addr.buffer == NULL)
-    error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
-	   objfile_name (objfile));
-  if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
-    error (_("DW_FORM_addr_index pointing outside of "
-	     ".debug_addr section [in module %s]"),
-	   objfile_name (objfile));
-  info_ptr = (dwarf2_per_objfile->addr.buffer
-	      + addr_base + addr_index * addr_size);
-  if (addr_size == 4)
-    return bfd_get_32 (abfd, info_ptr);
-  else
-    return bfd_get_64 (abfd, info_ptr);
-}
-
-/* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
-
-static CORE_ADDR
-read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
-{
-  return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
-			    cu->addr_base, cu->header.addr_size);
-}
-
-/* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
-
-static CORE_ADDR
-read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
-			     unsigned int *bytes_read)
-{
-  bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
-  unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
-
-  return read_addr_index (cu, addr_index);
-}
-
-/* Data structure to pass results from dwarf2_read_addr_index_reader
-   back to dwarf2_read_addr_index.  */
-
-struct dwarf2_read_addr_index_data
-{
-  ULONGEST addr_base;
-  int addr_size;
-};
-
-/* die_reader_func for dwarf2_read_addr_index.  */
-
-static void
-dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
-			       const gdb_byte *info_ptr,
-			       struct die_info *comp_unit_die,
-			       int has_children,
-			       void *data)
-{
-  struct dwarf2_cu *cu = reader->cu;
-  struct dwarf2_read_addr_index_data *aidata =
-    (struct dwarf2_read_addr_index_data *) data;
-
-  aidata->addr_base = cu->addr_base;
-  aidata->addr_size = cu->header.addr_size;
-}
-
-/* Given an index in .debug_addr, fetch the value.
-   NOTE: This can be called during dwarf expression evaluation,
-   long after the debug information has been read, and thus per_cu->cu
-   may no longer exist.  */
-
-CORE_ADDR
-dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
-			unsigned int addr_index)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
-  struct dwarf2_cu *cu = per_cu->cu;
-  ULONGEST addr_base;
-  int addr_size;
-
-  /* We need addr_base and addr_size.
-     If we don't have PER_CU->cu, we have to get it.
-     Nasty, but the alternative is storing the needed info in PER_CU,
-     which at this point doesn't seem justified: it's not clear how frequently
-     it would get used and it would increase the size of every PER_CU.
-     Entry points like dwarf2_per_cu_addr_size do a similar thing
-     so we're not in uncharted territory here.
-     Alas we need to be a bit more complicated as addr_base is contained
-     in the DIE.
-
-     We don't need to read the entire CU(/TU).
-     We just need the header and top level die.
-
-     IWBN to use the aging mechanism to let us lazily later discard the CU.
-     For now we skip this optimization.  */
-
-  if (cu != NULL)
-    {
-      addr_base = cu->addr_base;
-      addr_size = cu->header.addr_size;
-    }
-  else
-    {
-      struct dwarf2_read_addr_index_data aidata;
-
-      /* Note: We can't use init_cutu_and_read_dies_simple here,
-	 we need addr_base.  */
-      init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
-			       dwarf2_read_addr_index_reader, &aidata);
-      addr_base = aidata.addr_base;
-      addr_size = aidata.addr_size;
-    }
-
-  return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
-			    addr_size);
-}
-
-/* Given a DW_FORM_GNU_str_index or DW_FORM_strx, fetch the string.
-   This is only used by the Fission support.  */
-
-static const char *
-read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
-{
-  struct dwarf2_cu *cu = reader->cu;
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  const char *objf_name = objfile_name (objfile);
-  bfd *abfd = objfile->obfd;
-  struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
-  struct dwarf2_section_info *str_offsets_section =
-    &reader->dwo_file->sections.str_offsets;
-  const gdb_byte *info_ptr;
-  ULONGEST str_offset;
-  static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx";
-
-  dwarf2_read_section (objfile, str_section);
-  dwarf2_read_section (objfile, str_offsets_section);
-  if (str_section->buffer == NULL)
-    error (_("%s used without .debug_str.dwo section"
-	     " in CU at offset %s [in module %s]"),
-	   form_name, sect_offset_str (cu->header.sect_off), objf_name);
-  if (str_offsets_section->buffer == NULL)
-    error (_("%s used without .debug_str_offsets.dwo section"
-	     " in CU at offset %s [in module %s]"),
-	   form_name, sect_offset_str (cu->header.sect_off), objf_name);
-  if (str_index * cu->header.offset_size >= str_offsets_section->size)
-    error (_("%s pointing outside of .debug_str_offsets.dwo"
-	     " section in CU at offset %s [in module %s]"),
-	   form_name, sect_offset_str (cu->header.sect_off), objf_name);
-  info_ptr = (str_offsets_section->buffer
-	      + str_index * cu->header.offset_size);
-  if (cu->header.offset_size == 4)
-    str_offset = bfd_get_32 (abfd, info_ptr);
-  else
-    str_offset = bfd_get_64 (abfd, info_ptr);
-  if (str_offset >= str_section->size)
-    error (_("Offset from %s pointing outside of"
-	     " .debug_str.dwo section in CU at offset %s [in module %s]"),
-	   form_name, sect_offset_str (cu->header.sect_off), objf_name);
-  return (const char *) (str_section->buffer + str_offset);
-}
-
-/* Return the length of an LEB128 number in BUF.  */
-
-static int
-leb128_size (const gdb_byte *buf)
-{
-  const gdb_byte *begin = buf;
-  gdb_byte byte;
-
-  while (1)
-    {
-      byte = *buf++;
-      if ((byte & 128) == 0)
-	return buf - begin;
-    }
-}
-
-static void
-set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
-{
-  switch (lang)
-    {
-    case DW_LANG_C89:
-    case DW_LANG_C99:
-    case DW_LANG_C11:
-    case DW_LANG_C:
-    case DW_LANG_UPC:
-      cu->language = language_c;
-      break;
-    case DW_LANG_Java:
-    case DW_LANG_C_plus_plus:
-    case DW_LANG_C_plus_plus_11:
-    case DW_LANG_C_plus_plus_14:
-      cu->language = language_cplus;
-      break;
-    case DW_LANG_D:
-      cu->language = language_d;
-      break;
-    case DW_LANG_Fortran77:
-    case DW_LANG_Fortran90:
-    case DW_LANG_Fortran95:
-    case DW_LANG_Fortran03:
-    case DW_LANG_Fortran08:
-      cu->language = language_fortran;
-      break;
-    case DW_LANG_Go:
-      cu->language = language_go;
-      break;
-    case DW_LANG_Mips_Assembler:
-      cu->language = language_asm;
-      break;
-    case DW_LANG_Ada83:
-    case DW_LANG_Ada95:
-      cu->language = language_ada;
-      break;
-    case DW_LANG_Modula2:
-      cu->language = language_m2;
-      break;
-    case DW_LANG_Pascal83:
-      cu->language = language_pascal;
-      break;
-    case DW_LANG_ObjC:
-      cu->language = language_objc;
-      break;
-    case DW_LANG_Rust:
-    case DW_LANG_Rust_old:
-      cu->language = language_rust;
-      break;
-    case DW_LANG_Cobol74:
-    case DW_LANG_Cobol85:
-    default:
-      cu->language = language_minimal;
-      break;
-    }
-  cu->language_defn = language_def (cu->language);
-}
-
-/* Return the named attribute or NULL if not there.  */
-
-static struct attribute *
-dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
-{
-  for (;;)
-    {
-      unsigned int i;
-      struct attribute *spec = NULL;
-
-      for (i = 0; i < die->num_attrs; ++i)
-	{
-	  if (die->attrs[i].name == name)
-	    return &die->attrs[i];
-	  if (die->attrs[i].name == DW_AT_specification
-	      || die->attrs[i].name == DW_AT_abstract_origin)
-	    spec = &die->attrs[i];
-	}
-
-      if (!spec)
-	break;
-
-      die = follow_die_ref (die, spec, &cu);
-    }
-
-  return NULL;
-}
-
-/* Return the named attribute or NULL if not there,
-   but do not follow DW_AT_specification, etc.
-   This is for use in contexts where we're reading .debug_types dies.
-   Following DW_AT_specification, DW_AT_abstract_origin will take us
-   back up the chain, and we want to go down.  */
-
-static struct attribute *
-dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
-{
-  unsigned int i;
-
-  for (i = 0; i < die->num_attrs; ++i)
-    if (die->attrs[i].name == name)
-      return &die->attrs[i];
-
-  return NULL;
-}
-
-/* Return the string associated with a string-typed attribute, or NULL if it
-   is either not found or is of an incorrect type.  */
-
-static const char *
-dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-  const char *str = NULL;
-
-  attr = dwarf2_attr (die, name, cu);
-
-  if (attr != NULL)
-    {
-      if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
-	  || attr->form == DW_FORM_string
-	  || attr->form == DW_FORM_strx
-	  || attr->form == DW_FORM_strx1
-	  || attr->form == DW_FORM_strx2
-	  || attr->form == DW_FORM_strx3
-	  || attr->form == DW_FORM_strx4
-	  || attr->form == DW_FORM_GNU_str_index
-	  || attr->form == DW_FORM_GNU_strp_alt)
-	str = DW_STRING (attr);
-      else
-        complaint (_("string type expected for attribute %s for "
-		     "DIE at %s in module %s"),
-		   dwarf_attr_name (name), sect_offset_str (die->sect_off),
-		   objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-    }
-
-  return str;
-}
-
-/* Return the dwo name or NULL if not present. If present, it is in either
-   DW_AT_GNU_dwo_name or DW_AT_dwo_name attribute.  */
-static const char *
-dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu)
-{
-  const char *dwo_name = dwarf2_string_attr (die, DW_AT_GNU_dwo_name, cu);
-  if (dwo_name == nullptr)
-    dwo_name = dwarf2_string_attr (die, DW_AT_dwo_name, cu);
-  return dwo_name;
-}
-
-/* Return non-zero iff the attribute NAME is defined for the given DIE,
-   and holds a non-zero value.  This function should only be used for
-   DW_FORM_flag or DW_FORM_flag_present attributes.  */
-
-static int
-dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
-{
-  struct attribute *attr = dwarf2_attr (die, name, cu);
-
-  return (attr && DW_UNSND (attr));
-}
-
-static int
-die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
-{
-  /* A DIE is a declaration if it has a DW_AT_declaration attribute
-     which value is non-zero.  However, we have to be careful with
-     DIEs having a DW_AT_specification attribute, because dwarf2_attr()
-     (via dwarf2_flag_true_p) follows this attribute.  So we may
-     end up accidently finding a declaration attribute that belongs
-     to a different DIE referenced by the specification attribute,
-     even though the given DIE does not have a declaration attribute.  */
-  return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
-	  && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
-}
-
-/* Return the die giving the specification for DIE, if there is
-   one.  *SPEC_CU is the CU containing DIE on input, and the CU
-   containing the return value on output.  If there is no
-   specification, but there is an abstract origin, that is
-   returned.  */
-
-static struct die_info *
-die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
-{
-  struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
-					     *spec_cu);
-
-  if (spec_attr == NULL)
-    spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
-
-  if (spec_attr == NULL)
-    return NULL;
-  else
-    return follow_die_ref (die, spec_attr, spec_cu);
-}
-
-/* Stub for free_line_header to match void * callback types.  */
-
-static void
-free_line_header_voidp (void *arg)
-{
-  struct line_header *lh = (struct line_header *) arg;
-
-  delete lh;
-}
-
-void
-line_header::add_include_dir (const char *include_dir)
-{
-  if (dwarf_line_debug >= 2)
-    {
-      size_t new_size;
-      if (version >= 5)
-        new_size = m_include_dirs.size ();
-      else
-        new_size = m_include_dirs.size () + 1;
-      fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
-			  new_size, include_dir);
-    }
-  m_include_dirs.push_back (include_dir);
-}
-
-void
-line_header::add_file_name (const char *name,
-			    dir_index d_index,
-			    unsigned int mod_time,
-			    unsigned int length)
-{
-  if (dwarf_line_debug >= 2)
-    {
-      size_t new_size;
-      if (version >= 5)
-        new_size = file_names_size ();
-      else
-        new_size = file_names_size () + 1;
-      fprintf_unfiltered (gdb_stdlog, "Adding file %zu: %s\n",
-			  new_size, name);
-    }
-  m_file_names.emplace_back (name, d_index, mod_time, length);
-}
-
-/* A convenience function to find the proper .debug_line section for a CU.  */
-
-static struct dwarf2_section_info *
-get_debug_line_section (struct dwarf2_cu *cu)
-{
-  struct dwarf2_section_info *section;
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-
-  /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
-     DWO file.  */
-  if (cu->dwo_unit && cu->per_cu->is_debug_types)
-    section = &cu->dwo_unit->dwo_file->sections.line;
-  else if (cu->per_cu->is_dwz)
-    {
-      struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
-
-      section = &dwz->line;
-    }
-  else
-    section = &dwarf2_per_objfile->line;
-
-  return section;
-}
-
-/* Read directory or file name entry format, starting with byte of
-   format count entries, ULEB128 pairs of entry formats, ULEB128 of
-   entries count and the entries themselves in the described entry
-   format.  */
-
-static void
-read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			bfd *abfd, const gdb_byte **bufp,
-			struct line_header *lh,
-			const struct comp_unit_head *cu_header,
-			void (*callback) (struct line_header *lh,
-					  const char *name,
-					  dir_index d_index,
-					  unsigned int mod_time,
-					  unsigned int length))
-{
-  gdb_byte format_count, formati;
-  ULONGEST data_count, datai;
-  const gdb_byte *buf = *bufp;
-  const gdb_byte *format_header_data;
-  unsigned int bytes_read;
-
-  format_count = read_1_byte (abfd, buf);
-  buf += 1;
-  format_header_data = buf;
-  for (formati = 0; formati < format_count; formati++)
-    {
-      read_unsigned_leb128 (abfd, buf, &bytes_read);
-      buf += bytes_read;
-      read_unsigned_leb128 (abfd, buf, &bytes_read);
-      buf += bytes_read;
-    }
-
-  data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
-  buf += bytes_read;
-  for (datai = 0; datai < data_count; datai++)
-    {
-      const gdb_byte *format = format_header_data;
-      struct file_entry fe;
-
-      for (formati = 0; formati < format_count; formati++)
-	{
-	  ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
-	  format += bytes_read;
-
-	  ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
-	  format += bytes_read;
-
-	  gdb::optional<const char *> string;
-	  gdb::optional<unsigned int> uint;
-
-	  switch (form)
-	    {
-	    case DW_FORM_string:
-	      string.emplace (read_direct_string (abfd, buf, &bytes_read));
-	      buf += bytes_read;
-	      break;
-
-	    case DW_FORM_line_strp:
-	      string.emplace (read_indirect_line_string (dwarf2_per_objfile,
-							 abfd, buf,
-							 cu_header,
-							 &bytes_read));
-	      buf += bytes_read;
-	      break;
-
-	    case DW_FORM_data1:
-	      uint.emplace (read_1_byte (abfd, buf));
-	      buf += 1;
-	      break;
-
-	    case DW_FORM_data2:
-	      uint.emplace (read_2_bytes (abfd, buf));
-	      buf += 2;
-	      break;
-
-	    case DW_FORM_data4:
-	      uint.emplace (read_4_bytes (abfd, buf));
-	      buf += 4;
-	      break;
-
-	    case DW_FORM_data8:
-	      uint.emplace (read_8_bytes (abfd, buf));
-	      buf += 8;
-	      break;
-
-	    case DW_FORM_data16:
-	      /*  This is used for MD5, but file_entry does not record MD5s. */
-	      buf += 16;
-	      break;
-
-	    case DW_FORM_udata:
-	      uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
-	      buf += bytes_read;
-	      break;
-
-	    case DW_FORM_block:
-	      /* It is valid only for DW_LNCT_timestamp which is ignored by
-		 current GDB.  */
-	      break;
-	    }
-
-	  switch (content_type)
-	    {
-	    case DW_LNCT_path:
-	      if (string.has_value ())
-		fe.name = *string;
-	      break;
-	    case DW_LNCT_directory_index:
-	      if (uint.has_value ())
-		fe.d_index = (dir_index) *uint;
-	      break;
-	    case DW_LNCT_timestamp:
-	      if (uint.has_value ())
-		fe.mod_time = *uint;
-	      break;
-	    case DW_LNCT_size:
-	      if (uint.has_value ())
-		fe.length = *uint;
-	      break;
-	    case DW_LNCT_MD5:
-	      break;
-	    default:
-	      complaint (_("Unknown format content type %s"),
-			 pulongest (content_type));
-	    }
-	}
-
-      callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
-    }
-
-  *bufp = buf;
-}
-
-/* Read the statement program header starting at OFFSET in
-   .debug_line, or .debug_line.dwo.  Return a pointer
-   to a struct line_header, allocated using xmalloc.
-   Returns NULL if there is a problem reading the header, e.g., if it
-   has a version we don't understand.
-
-   NOTE: the strings in the include directory and file name tables of
-   the returned object point into the dwarf line section buffer,
-   and must not be freed.  */
-
-static line_header_up
-dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
-{
-  const gdb_byte *line_ptr;
-  unsigned int bytes_read, offset_size;
-  int i;
-  const char *cur_dir, *cur_file;
-  struct dwarf2_section_info *section;
-  bfd *abfd;
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-
-  section = get_debug_line_section (cu);
-  dwarf2_read_section (dwarf2_per_objfile->objfile, section);
-  if (section->buffer == NULL)
-    {
-      if (cu->dwo_unit && cu->per_cu->is_debug_types)
-	complaint (_("missing .debug_line.dwo section"));
-      else
-	complaint (_("missing .debug_line section"));
-      return 0;
-    }
-
-  /* We can't do this until we know the section is non-empty.
-     Only then do we know we have such a section.  */
-  abfd = get_section_bfd_owner (section);
-
-  /* Make sure that at least there's room for the total_length field.
-     That could be 12 bytes long, but we're just going to fudge that.  */
-  if (to_underlying (sect_off) + 4 >= section->size)
-    {
-      dwarf2_statement_list_fits_in_line_number_section_complaint ();
-      return 0;
-    }
-
-  line_header_up lh (new line_header ());
-
-  lh->sect_off = sect_off;
-  lh->offset_in_dwz = cu->per_cu->is_dwz;
-
-  line_ptr = section->buffer + to_underlying (sect_off);
-
-  /* Read in the header.  */
-  lh->total_length =
-    read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
-					    &bytes_read, &offset_size);
-  line_ptr += bytes_read;
-
-  const gdb_byte *start_here = line_ptr;
-
-  if (line_ptr + lh->total_length > (section->buffer + section->size))
-    {
-      dwarf2_statement_list_fits_in_line_number_section_complaint ();
-      return 0;
-    }
-  lh->statement_program_end = start_here + lh->total_length;
-  lh->version = read_2_bytes (abfd, line_ptr);
-  line_ptr += 2;
-  if (lh->version > 5)
-    {
-      /* This is a version we don't understand.  The format could have
-	 changed in ways we don't handle properly so just punt.  */
-      complaint (_("unsupported version in .debug_line section"));
-      return NULL;
-    }
-  if (lh->version >= 5)
-    {
-      gdb_byte segment_selector_size;
-
-      /* Skip address size.  */
-      read_1_byte (abfd, line_ptr);
-      line_ptr += 1;
-
-      segment_selector_size = read_1_byte (abfd, line_ptr);
-      line_ptr += 1;
-      if (segment_selector_size != 0)
-	{
-	  complaint (_("unsupported segment selector size %u "
-		       "in .debug_line section"),
-		     segment_selector_size);
-	  return NULL;
-	}
-    }
-  lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
-  line_ptr += offset_size;
-  lh->statement_program_start = line_ptr + lh->header_length;
-  lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
-  line_ptr += 1;
-  if (lh->version >= 4)
-    {
-      lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
-      line_ptr += 1;
-    }
-  else
-    lh->maximum_ops_per_instruction = 1;
-
-  if (lh->maximum_ops_per_instruction == 0)
-    {
-      lh->maximum_ops_per_instruction = 1;
-      complaint (_("invalid maximum_ops_per_instruction "
-		   "in `.debug_line' section"));
-    }
-
-  lh->default_is_stmt = read_1_byte (abfd, line_ptr);
-  line_ptr += 1;
-  lh->line_base = read_1_signed_byte (abfd, line_ptr);
-  line_ptr += 1;
-  lh->line_range = read_1_byte (abfd, line_ptr);
-  line_ptr += 1;
-  lh->opcode_base = read_1_byte (abfd, line_ptr);
-  line_ptr += 1;
-  lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
-
-  lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
-  for (i = 1; i < lh->opcode_base; ++i)
-    {
-      lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
-      line_ptr += 1;
-    }
-
-  if (lh->version >= 5)
-    {
-      /* Read directory table.  */
-      read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
-			      &cu->header,
-			      [] (struct line_header *header, const char *name,
-				  dir_index d_index, unsigned int mod_time,
-				  unsigned int length)
-	{
-	  header->add_include_dir (name);
-	});
-
-      /* Read file name table.  */
-      read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
-			      &cu->header,
-			      [] (struct line_header *header, const char *name,
-				  dir_index d_index, unsigned int mod_time,
-				  unsigned int length)
-	{
-	  header->add_file_name (name, d_index, mod_time, length);
-	});
-    }
-  else
-    {
-      /* Read directory table.  */
-      while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
-	{
-	  line_ptr += bytes_read;
-	  lh->add_include_dir (cur_dir);
-	}
-      line_ptr += bytes_read;
-
-      /* Read file name table.  */
-      while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
-	{
-	  unsigned int mod_time, length;
-	  dir_index d_index;
-
-	  line_ptr += bytes_read;
-	  d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
-	  line_ptr += bytes_read;
-	  mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
-	  line_ptr += bytes_read;
-	  length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
-	  line_ptr += bytes_read;
-
-	  lh->add_file_name (cur_file, d_index, mod_time, length);
-	}
-      line_ptr += bytes_read;
-    }
-
-  if (line_ptr > (section->buffer + section->size))
-    complaint (_("line number info header doesn't "
-		 "fit in `.debug_line' section"));
-
-  return lh;
-}
-
-/* Subroutine of dwarf_decode_lines to simplify it.
-   Return the file name of the psymtab for the given file_entry.
-   COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
-   If space for the result is malloc'd, *NAME_HOLDER will be set.
-   Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
-
-static const char *
-psymtab_include_file_name (const struct line_header *lh, const file_entry &fe,
-			   const struct partial_symtab *pst,
-			   const char *comp_dir,
-			   gdb::unique_xmalloc_ptr<char> *name_holder)
-{
-  const char *include_name = fe.name;
-  const char *include_name_to_compare = include_name;
-  const char *pst_filename;
-  int file_is_pst;
-
-  const char *dir_name = fe.include_dir (lh);
-
-  gdb::unique_xmalloc_ptr<char> hold_compare;
-  if (!IS_ABSOLUTE_PATH (include_name)
-      && (dir_name != NULL || comp_dir != NULL))
-    {
-      /* Avoid creating a duplicate psymtab for PST.
-	 We do this by comparing INCLUDE_NAME and PST_FILENAME.
-	 Before we do the comparison, however, we need to account
-	 for DIR_NAME and COMP_DIR.
-	 First prepend dir_name (if non-NULL).  If we still don't
-	 have an absolute path prepend comp_dir (if non-NULL).
-	 However, the directory we record in the include-file's
-	 psymtab does not contain COMP_DIR (to match the
-	 corresponding symtab(s)).
-
-	 Example:
-
-	 bash$ cd /tmp
-	 bash$ gcc -g ./hello.c
-	 include_name = "hello.c"
-	 dir_name = "."
-	 DW_AT_comp_dir = comp_dir = "/tmp"
-	 DW_AT_name = "./hello.c"
-
-      */
-
-      if (dir_name != NULL)
-	{
-	  name_holder->reset (concat (dir_name, SLASH_STRING,
-				      include_name, (char *) NULL));
-	  include_name = name_holder->get ();
-	  include_name_to_compare = include_name;
-	}
-      if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
-	{
-	  hold_compare.reset (concat (comp_dir, SLASH_STRING,
-				      include_name, (char *) NULL));
-	  include_name_to_compare = hold_compare.get ();
-	}
-    }
-
-  pst_filename = pst->filename;
-  gdb::unique_xmalloc_ptr<char> copied_name;
-  if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
-    {
-      copied_name.reset (concat (pst->dirname, SLASH_STRING,
-				 pst_filename, (char *) NULL));
-      pst_filename = copied_name.get ();
-    }
-
-  file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
-
-  if (file_is_pst)
-    return NULL;
-  return include_name;
-}
-
-/* State machine to track the state of the line number program.  */
-
-class lnp_state_machine
-{
-public:
-  /* Initialize a machine state for the start of a line number
-     program.  */
-  lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
-		     bool record_lines_p);
-
-  file_entry *current_file ()
-  {
-    /* lh->file_names is 0-based, but the file name numbers in the
-       statement program are 1-based.  */
-    return m_line_header->file_name_at (m_file);
-  }
-
-  /* Record the line in the state machine.  END_SEQUENCE is true if
-     we're processing the end of a sequence.  */
-  void record_line (bool end_sequence);
-
-  /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
-     nop-out rest of the lines in this sequence.  */
-  void check_line_address (struct dwarf2_cu *cu,
-			   const gdb_byte *line_ptr,
-			   CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
-
-  void handle_set_discriminator (unsigned int discriminator)
-  {
-    m_discriminator = discriminator;
-    m_line_has_non_zero_discriminator |= discriminator != 0;
-  }
-
-  /* Handle DW_LNE_set_address.  */
-  void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
-  {
-    m_op_index = 0;
-    address += baseaddr;
-    m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
-  }
-
-  /* Handle DW_LNS_advance_pc.  */
-  void handle_advance_pc (CORE_ADDR adjust);
-
-  /* Handle a special opcode.  */
-  void handle_special_opcode (unsigned char op_code);
-
-  /* Handle DW_LNS_advance_line.  */
-  void handle_advance_line (int line_delta)
-  {
-    advance_line (line_delta);
-  }
-
-  /* Handle DW_LNS_set_file.  */
-  void handle_set_file (file_name_index file);
-
-  /* Handle DW_LNS_negate_stmt.  */
-  void handle_negate_stmt ()
-  {
-    m_is_stmt = !m_is_stmt;
-  }
-
-  /* Handle DW_LNS_const_add_pc.  */
-  void handle_const_add_pc ();
-
-  /* Handle DW_LNS_fixed_advance_pc.  */
-  void handle_fixed_advance_pc (CORE_ADDR addr_adj)
-  {
-    m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
-    m_op_index = 0;
-  }
-
-  /* Handle DW_LNS_copy.  */
-  void handle_copy ()
-  {
-    record_line (false);
-    m_discriminator = 0;
-  }
-
-  /* Handle DW_LNE_end_sequence.  */
-  void handle_end_sequence ()
-  {
-    m_currently_recording_lines = true;
-  }
-
-private:
-  /* Advance the line by LINE_DELTA.  */
-  void advance_line (int line_delta)
-  {
-    m_line += line_delta;
-
-    if (line_delta != 0)
-      m_line_has_non_zero_discriminator = m_discriminator != 0;
-  }
-
-  struct dwarf2_cu *m_cu;
-
-  gdbarch *m_gdbarch;
-
-  /* True if we're recording lines.
-     Otherwise we're building partial symtabs and are just interested in
-     finding include files mentioned by the line number program.  */
-  bool m_record_lines_p;
-
-  /* The line number header.  */
-  line_header *m_line_header;
-
-  /* These are part of the standard DWARF line number state machine,
-     and initialized according to the DWARF spec.  */
-
-  unsigned char m_op_index = 0;
-  /* The line table index of the current file.  */
-  file_name_index m_file = 1;
-  unsigned int m_line = 1;
-
-  /* These are initialized in the constructor.  */
-
-  CORE_ADDR m_address;
-  bool m_is_stmt;
-  unsigned int m_discriminator;
-
-  /* Additional bits of state we need to track.  */
-
-  /* The last file that we called dwarf2_start_subfile for.
-     This is only used for TLLs.  */
-  unsigned int m_last_file = 0;
-  /* The last file a line number was recorded for.  */
-  struct subfile *m_last_subfile = NULL;
-
-  /* When true, record the lines we decode.  */
-  bool m_currently_recording_lines = false;
-
-  /* The last line number that was recorded, used to coalesce
-     consecutive entries for the same line.  This can happen, for
-     example, when discriminators are present.  PR 17276.  */
-  unsigned int m_last_line = 0;
-  bool m_line_has_non_zero_discriminator = false;
-};
-
-void
-lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
-{
-  CORE_ADDR addr_adj = (((m_op_index + adjust)
-			 / m_line_header->maximum_ops_per_instruction)
-			* m_line_header->minimum_instruction_length);
-  m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
-  m_op_index = ((m_op_index + adjust)
-		% m_line_header->maximum_ops_per_instruction);
-}
-
-void
-lnp_state_machine::handle_special_opcode (unsigned char op_code)
-{
-  unsigned char adj_opcode = op_code - m_line_header->opcode_base;
-  CORE_ADDR addr_adj = (((m_op_index
-			  + (adj_opcode / m_line_header->line_range))
-			 / m_line_header->maximum_ops_per_instruction)
-			* m_line_header->minimum_instruction_length);
-  m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
-  m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
-		% m_line_header->maximum_ops_per_instruction);
-
-  int line_delta = (m_line_header->line_base
-		    + (adj_opcode % m_line_header->line_range));
-  advance_line (line_delta);
-  record_line (false);
-  m_discriminator = 0;
-}
-
-void
-lnp_state_machine::handle_set_file (file_name_index file)
-{
-  m_file = file;
-
-  const file_entry *fe = current_file ();
-  if (fe == NULL)
-    dwarf2_debug_line_missing_file_complaint ();
-  else if (m_record_lines_p)
-    {
-      const char *dir = fe->include_dir (m_line_header);
-
-      m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
-      m_line_has_non_zero_discriminator = m_discriminator != 0;
-      dwarf2_start_subfile (m_cu, fe->name, dir);
-    }
-}
-
-void
-lnp_state_machine::handle_const_add_pc ()
-{
-  CORE_ADDR adjust
-    = (255 - m_line_header->opcode_base) / m_line_header->line_range;
-
-  CORE_ADDR addr_adj
-    = (((m_op_index + adjust)
-	/ m_line_header->maximum_ops_per_instruction)
-       * m_line_header->minimum_instruction_length);
-
-  m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
-  m_op_index = ((m_op_index + adjust)
-		% m_line_header->maximum_ops_per_instruction);
-}
-
-/* Return non-zero if we should add LINE to the line number table.
-   LINE is the line to add, LAST_LINE is the last line that was added,
-   LAST_SUBFILE is the subfile for LAST_LINE.
-   LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
-   had a non-zero discriminator.
-
-   We have to be careful in the presence of discriminators.
-   E.g., for this line:
-
-     for (i = 0; i < 100000; i++);
-
-   clang can emit four line number entries for that one line,
-   each with a different discriminator.
-   See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
-
-   However, we want gdb to coalesce all four entries into one.
-   Otherwise the user could stepi into the middle of the line and
-   gdb would get confused about whether the pc really was in the
-   middle of the line.
-
-   Things are further complicated by the fact that two consecutive
-   line number entries for the same line is a heuristic used by gcc
-   to denote the end of the prologue.  So we can't just discard duplicate
-   entries, we have to be selective about it.  The heuristic we use is
-   that we only collapse consecutive entries for the same line if at least
-   one of those entries has a non-zero discriminator.  PR 17276.
-
-   Note: Addresses in the line number state machine can never go backwards
-   within one sequence, thus this coalescing is ok.  */
-
-static int
-dwarf_record_line_p (struct dwarf2_cu *cu,
-		     unsigned int line, unsigned int last_line,
-		     int line_has_non_zero_discriminator,
-		     struct subfile *last_subfile)
-{
-  if (cu->get_builder ()->get_current_subfile () != last_subfile)
-    return 1;
-  if (line != last_line)
-    return 1;
-  /* Same line for the same file that we've seen already.
-     As a last check, for pr 17276, only record the line if the line
-     has never had a non-zero discriminator.  */
-  if (!line_has_non_zero_discriminator)
-    return 1;
-  return 0;
-}
-
-/* Use the CU's builder to record line number LINE beginning at
-   address ADDRESS in the line table of subfile SUBFILE.  */
-
-static void
-dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
-		     unsigned int line, CORE_ADDR address,
-		     struct dwarf2_cu *cu)
-{
-  CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
-
-  if (dwarf_line_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog,
-			  "Recording line %u, file %s, address %s\n",
-			  line, lbasename (subfile->name),
-			  paddress (gdbarch, address));
-    }
-
-  if (cu != nullptr)
-    cu->get_builder ()->record_line (subfile, line, addr);
-}
-
-/* Subroutine of dwarf_decode_lines_1 to simplify it.
-   Mark the end of a set of line number records.
-   The arguments are the same as for dwarf_record_line_1.
-   If SUBFILE is NULL the request is ignored.  */
-
-static void
-dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
-		   CORE_ADDR address, struct dwarf2_cu *cu)
-{
-  if (subfile == NULL)
-    return;
-
-  if (dwarf_line_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog,
-			  "Finishing current line, file %s, address %s\n",
-			  lbasename (subfile->name),
-			  paddress (gdbarch, address));
-    }
-
-  dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
-}
-
-void
-lnp_state_machine::record_line (bool end_sequence)
-{
-  if (dwarf_line_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog,
-			  "Processing actual line %u: file %u,"
-			  " address %s, is_stmt %u, discrim %u\n",
-			  m_line, m_file,
-			  paddress (m_gdbarch, m_address),
-			  m_is_stmt, m_discriminator);
-    }
-
-  file_entry *fe = current_file ();
-
-  if (fe == NULL)
-    dwarf2_debug_line_missing_file_complaint ();
-  /* For now we ignore lines not starting on an instruction boundary.
-     But not when processing end_sequence for compatibility with the
-     previous version of the code.  */
-  else if (m_op_index == 0 || end_sequence)
-    {
-      fe->included_p = 1;
-      if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
-	{
-	  if (m_last_subfile != m_cu->get_builder ()->get_current_subfile ()
-	      || end_sequence)
-	    {
-	      dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
-				 m_currently_recording_lines ? m_cu : nullptr);
-	    }
-
-	  if (!end_sequence)
-	    {
-	      if (dwarf_record_line_p (m_cu, m_line, m_last_line,
-				       m_line_has_non_zero_discriminator,
-				       m_last_subfile))
-		{
-		  buildsym_compunit *builder = m_cu->get_builder ();
-		  dwarf_record_line_1 (m_gdbarch,
-				       builder->get_current_subfile (),
-				       m_line, m_address,
-				       m_currently_recording_lines ? m_cu : nullptr);
-		}
-	      m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
-	      m_last_line = m_line;
-	    }
-	}
-    }
-}
-
-lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
-				      line_header *lh, bool record_lines_p)
-{
-  m_cu = cu;
-  m_gdbarch = arch;
-  m_record_lines_p = record_lines_p;
-  m_line_header = lh;
-
-  m_currently_recording_lines = true;
-
-  /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
-     was a line entry for it so that the backend has a chance to adjust it
-     and also record it in case it needs it.  This is currently used by MIPS
-     code, cf. `mips_adjust_dwarf2_line'.  */
-  m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
-  m_is_stmt = lh->default_is_stmt;
-  m_discriminator = 0;
-}
-
-void
-lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
-				       const gdb_byte *line_ptr,
-				       CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
-{
-  /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
-     the pc range of the CU.  However, we restrict the test to only ADDRESS
-     values of zero to preserve GDB's previous behaviour which is to handle
-     the specific case of a function being GC'd by the linker.  */
-
-  if (address == 0 && address < unrelocated_lowpc)
-    {
-      /* This line table is for a function which has been
-	 GCd by the linker.  Ignore it.  PR gdb/12528 */
-
-      struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-      long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
-
-      complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
-		 line_offset, objfile_name (objfile));
-      m_currently_recording_lines = false;
-      /* Note: m_currently_recording_lines is left as false until we see
-	 DW_LNE_end_sequence.  */
-    }
-}
-
-/* Subroutine of dwarf_decode_lines to simplify it.
-   Process the line number information in LH.
-   If DECODE_FOR_PST_P is non-zero, all we do is process the line number
-   program in order to set included_p for every referenced header.  */
-
-static void
-dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
-		      const int decode_for_pst_p, CORE_ADDR lowpc)
-{
-  const gdb_byte *line_ptr, *extended_end;
-  const gdb_byte *line_end;
-  unsigned int bytes_read, extended_len;
-  unsigned char op_code, extended_op;
-  CORE_ADDR baseaddr;
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  bfd *abfd = objfile->obfd;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  /* True if we're recording line info (as opposed to building partial
-     symtabs and just interested in finding include files mentioned by
-     the line number program).  */
-  bool record_lines_p = !decode_for_pst_p;
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  line_ptr = lh->statement_program_start;
-  line_end = lh->statement_program_end;
-
-  /* Read the statement sequences until there's nothing left.  */
-  while (line_ptr < line_end)
-    {
-      /* The DWARF line number program state machine.  Reset the state
-	 machine at the start of each sequence.  */
-      lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
-      bool end_sequence = false;
-
-      if (record_lines_p)
-	{
-	  /* Start a subfile for the current file of the state
-	     machine.  */
-	  const file_entry *fe = state_machine.current_file ();
-
-	  if (fe != NULL)
-	    dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
-	}
-
-      /* Decode the table.  */
-      while (line_ptr < line_end && !end_sequence)
-	{
-	  op_code = read_1_byte (abfd, line_ptr);
-	  line_ptr += 1;
-
-	  if (op_code >= lh->opcode_base)
-	    {
-	      /* Special opcode.  */
-	      state_machine.handle_special_opcode (op_code);
-	    }
-	  else switch (op_code)
-	    {
-	    case DW_LNS_extended_op:
-	      extended_len = read_unsigned_leb128 (abfd, line_ptr,
-						   &bytes_read);
-	      line_ptr += bytes_read;
-	      extended_end = line_ptr + extended_len;
-	      extended_op = read_1_byte (abfd, line_ptr);
-	      line_ptr += 1;
-	      switch (extended_op)
-		{
-		case DW_LNE_end_sequence:
-		  state_machine.handle_end_sequence ();
-		  end_sequence = true;
-		  break;
-		case DW_LNE_set_address:
-		  {
-		    CORE_ADDR address
-		      = read_address (abfd, line_ptr, cu, &bytes_read);
-		    line_ptr += bytes_read;
-
-		    state_machine.check_line_address (cu, line_ptr,
-						      lowpc - baseaddr, address);
-		    state_machine.handle_set_address (baseaddr, address);
-		  }
-		  break;
-		case DW_LNE_define_file:
-                  {
-                    const char *cur_file;
-		    unsigned int mod_time, length;
-		    dir_index dindex;
-
-                    cur_file = read_direct_string (abfd, line_ptr,
-						   &bytes_read);
-                    line_ptr += bytes_read;
-                    dindex = (dir_index)
-                      read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
-                    line_ptr += bytes_read;
-                    mod_time =
-                      read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
-                    line_ptr += bytes_read;
-                    length =
-                      read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
-                    line_ptr += bytes_read;
-                    lh->add_file_name (cur_file, dindex, mod_time, length);
-                  }
-		  break;
-		case DW_LNE_set_discriminator:
-		  {
-		    /* The discriminator is not interesting to the
-		       debugger; just ignore it.  We still need to
-		       check its value though:
-		       if there are consecutive entries for the same
-		       (non-prologue) line we want to coalesce them.
-		       PR 17276.  */
-		    unsigned int discr
-		      = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
-		    line_ptr += bytes_read;
-
-		    state_machine.handle_set_discriminator (discr);
-		  }
-		  break;
-		default:
-		  complaint (_("mangled .debug_line section"));
-		  return;
-		}
-	      /* Make sure that we parsed the extended op correctly.  If e.g.
-		 we expected a different address size than the producer used,
-		 we may have read the wrong number of bytes.  */
-	      if (line_ptr != extended_end)
-		{
-		  complaint (_("mangled .debug_line section"));
-		  return;
-		}
-	      break;
-	    case DW_LNS_copy:
-	      state_machine.handle_copy ();
-	      break;
-	    case DW_LNS_advance_pc:
-	      {
-		CORE_ADDR adjust
-		  = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
-		line_ptr += bytes_read;
-
-		state_machine.handle_advance_pc (adjust);
-	      }
-	      break;
-	    case DW_LNS_advance_line:
-	      {
-		int line_delta
-		  = read_signed_leb128 (abfd, line_ptr, &bytes_read);
-		line_ptr += bytes_read;
-
-		state_machine.handle_advance_line (line_delta);
-	      }
-	      break;
-	    case DW_LNS_set_file:
-	      {
-		file_name_index file
-		  = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
-							    &bytes_read);
-		line_ptr += bytes_read;
-
-		state_machine.handle_set_file (file);
-	      }
-	      break;
-	    case DW_LNS_set_column:
-	      (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
-	      line_ptr += bytes_read;
-	      break;
-	    case DW_LNS_negate_stmt:
-	      state_machine.handle_negate_stmt ();
-	      break;
-	    case DW_LNS_set_basic_block:
-	      break;
-	    /* Add to the address register of the state machine the
-	       address increment value corresponding to special opcode
-	       255.  I.e., this value is scaled by the minimum
-	       instruction length since special opcode 255 would have
-	       scaled the increment.  */
-	    case DW_LNS_const_add_pc:
-	      state_machine.handle_const_add_pc ();
-	      break;
-	    case DW_LNS_fixed_advance_pc:
-	      {
-		CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
-		line_ptr += 2;
-
-		state_machine.handle_fixed_advance_pc (addr_adj);
-	      }
-	      break;
-	    default:
-	      {
-		/* Unknown standard opcode, ignore it.  */
-		int i;
-
-		for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
-		  {
-		    (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
-		    line_ptr += bytes_read;
-		  }
-	      }
-	    }
-	}
-
-      if (!end_sequence)
-	dwarf2_debug_line_missing_end_sequence_complaint ();
-
-      /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
-	 in which case we still finish recording the last line).  */
-      state_machine.record_line (true);
-    }
-}
-
-/* Decode the Line Number Program (LNP) for the given line_header
-   structure and CU.  The actual information extracted and the type
-   of structures created from the LNP depends on the value of PST.
-
-   1. If PST is NULL, then this procedure uses the data from the program
-      to create all necessary symbol tables, and their linetables.
-
-   2. If PST is not NULL, this procedure reads the program to determine
-      the list of files included by the unit represented by PST, and
-      builds all the associated partial symbol tables.
-
-   COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
-   It is used for relative paths in the line table.
-   NOTE: When processing partial symtabs (pst != NULL),
-   comp_dir == pst->dirname.
-
-   NOTE: It is important that psymtabs have the same file name (via strcmp)
-   as the corresponding symtab.  Since COMP_DIR is not used in the name of the
-   symtab we don't use it in the name of the psymtabs we create.
-   E.g. expand_line_sal requires this when finding psymtabs to expand.
-   A good testcase for this is mb-inline.exp.
-
-   LOWPC is the lowest address in CU (or 0 if not known).
-
-   Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
-   for its PC<->lines mapping information.  Otherwise only the filename
-   table is read in.  */
-
-static void
-dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
-		    struct dwarf2_cu *cu, struct partial_symtab *pst,
-		    CORE_ADDR lowpc, int decode_mapping)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  const int decode_for_pst_p = (pst != NULL);
-
-  if (decode_mapping)
-    dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
-
-  if (decode_for_pst_p)
-    {
-      /* Now that we're done scanning the Line Header Program, we can
-         create the psymtab of each included file.  */
-      for (auto &file_entry : lh->file_names ())
-        if (file_entry.included_p == 1)
-          {
-	    gdb::unique_xmalloc_ptr<char> name_holder;
-	    const char *include_name =
-	      psymtab_include_file_name (lh, file_entry, pst,
-					 comp_dir, &name_holder);
-	    if (include_name != NULL)
-              dwarf2_create_include_psymtab (include_name, pst, objfile);
-          }
-    }
-  else
-    {
-      /* Make sure a symtab is created for every file, even files
-	 which contain only variables (i.e. no code with associated
-	 line numbers).  */
-      buildsym_compunit *builder = cu->get_builder ();
-      struct compunit_symtab *cust = builder->get_compunit_symtab ();
-
-      for (auto &fe : lh->file_names ())
-	{
-	  dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
-	  if (builder->get_current_subfile ()->symtab == NULL)
-	    {
-	      builder->get_current_subfile ()->symtab
-		= allocate_symtab (cust,
-				   builder->get_current_subfile ()->name);
-	    }
-	  fe.symtab = builder->get_current_subfile ()->symtab;
-	}
-    }
-}
-
-/* Start a subfile for DWARF.  FILENAME is the name of the file and
-   DIRNAME the name of the source directory which contains FILENAME
-   or NULL if not known.
-   This routine tries to keep line numbers from identical absolute and
-   relative file names in a common subfile.
-
-   Using the `list' example from the GDB testsuite, which resides in
-   /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
-   of /srcdir/list0.c yields the following debugging information for list0.c:
-
-   DW_AT_name:          /srcdir/list0.c
-   DW_AT_comp_dir:      /compdir
-   files.files[0].name: list0.h
-   files.files[0].dir:  /srcdir
-   files.files[1].name: list0.c
-   files.files[1].dir:  /srcdir
-
-   The line number information for list0.c has to end up in a single
-   subfile, so that `break /srcdir/list0.c:1' works as expected.
-   start_subfile will ensure that this happens provided that we pass the
-   concatenation of files.files[1].dir and files.files[1].name as the
-   subfile's name.  */
-
-static void
-dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
-		      const char *dirname)
-{
-  char *copy = NULL;
-
-  /* In order not to lose the line information directory,
-     we concatenate it to the filename when it makes sense.
-     Note that the Dwarf3 standard says (speaking of filenames in line
-     information): ``The directory index is ignored for file names
-     that represent full path names''.  Thus ignoring dirname in the
-     `else' branch below isn't an issue.  */
-
-  if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
-    {
-      copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
-      filename = copy;
-    }
-
-  cu->get_builder ()->start_subfile (filename);
-
-  if (copy != NULL)
-    xfree (copy);
-}
-
-/* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
-   buildsym_compunit constructor.  */
-
-struct compunit_symtab *
-dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
-			 CORE_ADDR low_pc)
-{
-  gdb_assert (m_builder == nullptr);
-
-  m_builder.reset (new struct buildsym_compunit
-		   (per_cu->dwarf2_per_objfile->objfile,
-		    name, comp_dir, language, low_pc));
-
-  list_in_scope = get_builder ()->get_file_symbols ();
-
-  get_builder ()->record_debugformat ("DWARF 2");
-  get_builder ()->record_producer (producer);
-
-  processing_has_namespace_info = false;
-
-  return get_builder ()->get_compunit_symtab ();
-}
-
-static void
-var_decode_location (struct attribute *attr, struct symbol *sym,
-		     struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct comp_unit_head *cu_header = &cu->header;
-
-  /* NOTE drow/2003-01-30: There used to be a comment and some special
-     code here to turn a symbol with DW_AT_external and a
-     SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
-     necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
-     with some versions of binutils) where shared libraries could have
-     relocations against symbols in their debug information - the
-     minimal symbol would have the right address, but the debug info
-     would not.  It's no longer necessary, because we will explicitly
-     apply relocations when we read in the debug information now.  */
-
-  /* A DW_AT_location attribute with no contents indicates that a
-     variable has been optimized away.  */
-  if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
-    {
-      SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
-      return;
-    }
-
-  /* Handle one degenerate form of location expression specially, to
-     preserve GDB's previous behavior when section offsets are
-     specified.  If this is just a DW_OP_addr, DW_OP_addrx, or
-     DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC.  */
-
-  if (attr_form_is_block (attr)
-      && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
-	   && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
-	  || ((DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
-               || DW_BLOCK (attr)->data[0] == DW_OP_addrx)
-	      && (DW_BLOCK (attr)->size
-		  == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
-    {
-      unsigned int dummy;
-
-      if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
-	SET_SYMBOL_VALUE_ADDRESS (sym,
-				  read_address (objfile->obfd,
-						DW_BLOCK (attr)->data + 1,
-						cu, &dummy));
-      else
-	SET_SYMBOL_VALUE_ADDRESS
-	  (sym, read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1,
-					     &dummy));
-      SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
-      fixup_symbol_section (sym, objfile);
-      SET_SYMBOL_VALUE_ADDRESS (sym,
-				SYMBOL_VALUE_ADDRESS (sym)
-				+ ANOFFSET (objfile->section_offsets,
-					    SYMBOL_SECTION (sym)));
-      return;
-    }
-
-  /* NOTE drow/2002-01-30: It might be worthwhile to have a static
-     expression evaluator, and use LOC_COMPUTED only when necessary
-     (i.e. when the value of a register or memory location is
-     referenced, or a thread-local block, etc.).  Then again, it might
-     not be worthwhile.  I'm assuming that it isn't unless performance
-     or memory numbers show me otherwise.  */
-
-  dwarf2_symbol_mark_computed (attr, sym, cu, 0);
-
-  if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
-    cu->has_loclist = true;
-}
-
-/* Given a pointer to a DWARF information entry, figure out if we need
-   to make a symbol table entry for it, and if so, create a new entry
-   and return a pointer to it.
-   If TYPE is NULL, determine symbol type from the die, otherwise
-   used the passed type.
-   If SPACE is not NULL, use it to hold the new symbol.  If it is
-   NULL, allocate a new symbol on the objfile's obstack.  */
-
-static struct symbol *
-new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
-	    struct symbol *space)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
-  struct symbol *sym = NULL;
-  const char *name;
-  struct attribute *attr = NULL;
-  struct attribute *attr2 = NULL;
-  CORE_ADDR baseaddr;
-  struct pending **list_to_add = NULL;
-
-  int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
-
-  baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-
-  name = dwarf2_name (die, cu);
-  if (name)
-    {
-      const char *linkagename;
-      int suppress_add = 0;
-
-      if (space)
-	sym = space;
-      else
-	sym = allocate_symbol (objfile);
-      OBJSTAT (objfile, n_syms++);
-
-      /* Cache this symbol's name and the name's demangled form (if any).  */
-      SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
-      linkagename = dwarf2_physname (name, die, cu);
-      SYMBOL_SET_NAMES (sym, linkagename, false, objfile);
-
-      /* Fortran does not have mangling standard and the mangling does differ
-	 between gfortran, iFort etc.  */
-      if (cu->language == language_fortran
-          && symbol_get_demangled_name (sym) == NULL)
-	symbol_set_demangled_name (sym,
-				   dwarf2_full_name (name, die, cu),
-	                           NULL);
-
-      /* Default assumptions.
-         Use the passed type or decode it from the die.  */
-      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-      SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
-      if (type != NULL)
-	SYMBOL_TYPE (sym) = type;
-      else
-	SYMBOL_TYPE (sym) = die_type (die, cu);
-      attr = dwarf2_attr (die,
-			  inlined_func ? DW_AT_call_line : DW_AT_decl_line,
-			  cu);
-      if (attr != nullptr)
-	{
-	  SYMBOL_LINE (sym) = DW_UNSND (attr);
-	}
-
-      attr = dwarf2_attr (die,
-			  inlined_func ? DW_AT_call_file : DW_AT_decl_file,
-			  cu);
-      if (attr != nullptr)
-	{
-	  file_name_index file_index = (file_name_index) DW_UNSND (attr);
-	  struct file_entry *fe;
-
-	  if (cu->line_header != NULL)
-	    fe = cu->line_header->file_name_at (file_index);
-	  else
-	    fe = NULL;
-
-	  if (fe == NULL)
-	    complaint (_("file index out of range"));
-	  else
-	    symbol_set_symtab (sym, fe->symtab);
-	}
-
-      switch (die->tag)
-	{
-	case DW_TAG_label:
-	  attr = dwarf2_attr (die, DW_AT_low_pc, cu);
-	  if (attr != nullptr)
-	    {
-	      CORE_ADDR addr;
-
-	      addr = attr_value_as_address (attr);
-	      addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
-	      SET_SYMBOL_VALUE_ADDRESS (sym, addr);
-	    }
-	  SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
-	  SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
-	  add_symbol_to_list (sym, cu->list_in_scope);
-	  break;
-	case DW_TAG_subprogram:
-	  /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
-	     finish_block.  */
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
-	  attr2 = dwarf2_attr (die, DW_AT_external, cu);
-	  if ((attr2 && (DW_UNSND (attr2) != 0))
-	      || cu->language == language_ada
-	      || cu->language == language_fortran)
-	    {
-              /* Subprograms marked external are stored as a global symbol.
-                 Ada and Fortran subprograms, whether marked external or
-                 not, are always stored as a global symbol, because we want
-                 to be able to access them globally.  For instance, we want
-                 to be able to break on a nested subprogram without having
-                 to specify the context.  */
-	      list_to_add = cu->get_builder ()->get_global_symbols ();
-	    }
-	  else
-	    {
-	      list_to_add = cu->list_in_scope;
-	    }
-	  break;
-	case DW_TAG_inlined_subroutine:
-	  /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
-	     finish_block.  */
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
-	  SYMBOL_INLINED (sym) = 1;
-	  list_to_add = cu->list_in_scope;
-	  break;
-	case DW_TAG_template_value_param:
-	  suppress_add = 1;
-	  /* Fall through.  */
-	case DW_TAG_constant:
-	case DW_TAG_variable:
-	case DW_TAG_member:
-	  /* Compilation with minimal debug info may result in
-	     variables with missing type entries.  Change the
-	     misleading `void' type to something sensible.  */
-	  if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
-	    SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
-
-	  attr = dwarf2_attr (die, DW_AT_const_value, cu);
-	  /* In the case of DW_TAG_member, we should only be called for
-	     static const members.  */
-	  if (die->tag == DW_TAG_member)
-	    {
-	      /* dwarf2_add_field uses die_is_declaration,
-		 so we do the same.  */
-	      gdb_assert (die_is_declaration (die, cu));
-	      gdb_assert (attr);
-	    }
-	  if (attr != nullptr)
-	    {
-	      dwarf2_const_value (attr, sym, cu);
-	      attr2 = dwarf2_attr (die, DW_AT_external, cu);
-	      if (!suppress_add)
-		{
-		  if (attr2 && (DW_UNSND (attr2) != 0))
-		    list_to_add = cu->get_builder ()->get_global_symbols ();
-		  else
-		    list_to_add = cu->list_in_scope;
-		}
-	      break;
-	    }
-	  attr = dwarf2_attr (die, DW_AT_location, cu);
-	  if (attr != nullptr)
-	    {
-	      var_decode_location (attr, sym, cu);
-	      attr2 = dwarf2_attr (die, DW_AT_external, cu);
-
-	      /* Fortran explicitly imports any global symbols to the local
-		 scope by DW_TAG_common_block.  */
-	      if (cu->language == language_fortran && die->parent
-		  && die->parent->tag == DW_TAG_common_block)
-		attr2 = NULL;
-
-	      if (SYMBOL_CLASS (sym) == LOC_STATIC
-		  && SYMBOL_VALUE_ADDRESS (sym) == 0
-		  && !dwarf2_per_objfile->has_section_at_zero)
-		{
-		  /* When a static variable is eliminated by the linker,
-		     the corresponding debug information is not stripped
-		     out, but the variable address is set to null;
-		     do not add such variables into symbol table.  */
-		}
-	      else if (attr2 && (DW_UNSND (attr2) != 0))
-		{
-		  if (SYMBOL_CLASS (sym) == LOC_STATIC
-		      && (objfile->flags & OBJF_MAINLINE) == 0
-		      && dwarf2_per_objfile->can_copy)
-		    {
-		      /* A global static variable might be subject to
-			 copy relocation.  We first check for a local
-			 minsym, though, because maybe the symbol was
-			 marked hidden, in which case this would not
-			 apply.  */
-		      bound_minimal_symbol found
-			= (lookup_minimal_symbol_linkage
-			   (sym->linkage_name (), objfile));
-		      if (found.minsym != nullptr)
-			sym->maybe_copied = 1;
-		    }
-
-		  /* A variable with DW_AT_external is never static,
-		     but it may be block-scoped.  */
-		  list_to_add
-		    = ((cu->list_in_scope
-			== cu->get_builder ()->get_file_symbols ())
-		       ? cu->get_builder ()->get_global_symbols ()
-		       : cu->list_in_scope);
-		}
-	      else
-		list_to_add = cu->list_in_scope;
-	    }
-	  else
-	    {
-	      /* We do not know the address of this symbol.
-	         If it is an external symbol and we have type information
-	         for it, enter the symbol as a LOC_UNRESOLVED symbol.
-	         The address of the variable will then be determined from
-	         the minimal symbol table whenever the variable is
-	         referenced.  */
-	      attr2 = dwarf2_attr (die, DW_AT_external, cu);
-
-	      /* Fortran explicitly imports any global symbols to the local
-		 scope by DW_TAG_common_block.  */
-	      if (cu->language == language_fortran && die->parent
-		  && die->parent->tag == DW_TAG_common_block)
-		{
-		  /* SYMBOL_CLASS doesn't matter here because
-		     read_common_block is going to reset it.  */
-		  if (!suppress_add)
-		    list_to_add = cu->list_in_scope;
-		}
-	      else if (attr2 && (DW_UNSND (attr2) != 0)
-		       && dwarf2_attr (die, DW_AT_type, cu) != NULL)
-		{
-		  /* A variable with DW_AT_external is never static, but it
-		     may be block-scoped.  */
-		  list_to_add
-		    = ((cu->list_in_scope
-			== cu->get_builder ()->get_file_symbols ())
-		       ? cu->get_builder ()->get_global_symbols ()
-		       : cu->list_in_scope);
-
-		  SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
-		}
-	      else if (!die_is_declaration (die, cu))
-		{
-		  /* Use the default LOC_OPTIMIZED_OUT class.  */
-		  gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
-		  if (!suppress_add)
-		    list_to_add = cu->list_in_scope;
-		}
-	    }
-	  break;
-	case DW_TAG_formal_parameter:
-	  {
-	    /* If we are inside a function, mark this as an argument.  If
-	       not, we might be looking at an argument to an inlined function
-	       when we do not have enough information to show inlined frames;
-	       pretend it's a local variable in that case so that the user can
-	       still see it.  */
-	    struct context_stack *curr
-	      = cu->get_builder ()->get_current_context_stack ();
-	    if (curr != nullptr && curr->name != nullptr)
-	      SYMBOL_IS_ARGUMENT (sym) = 1;
-	    attr = dwarf2_attr (die, DW_AT_location, cu);
-	    if (attr != nullptr)
-	      {
-		var_decode_location (attr, sym, cu);
-	      }
-	    attr = dwarf2_attr (die, DW_AT_const_value, cu);
-	    if (attr != nullptr)
-	      {
-		dwarf2_const_value (attr, sym, cu);
-	      }
-
-	    list_to_add = cu->list_in_scope;
-	  }
-	  break;
-	case DW_TAG_unspecified_parameters:
-	  /* From varargs functions; gdb doesn't seem to have any
-	     interest in this information, so just ignore it for now.
-	     (FIXME?) */
-	  break;
-	case DW_TAG_template_type_param:
-	  suppress_add = 1;
-	  /* Fall through.  */
-	case DW_TAG_class_type:
-	case DW_TAG_interface_type:
-	case DW_TAG_structure_type:
-	case DW_TAG_union_type:
-	case DW_TAG_set_type:
-	case DW_TAG_enumeration_type:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
-	  SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
-
-	  {
-	    /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
-	       really ever be static objects: otherwise, if you try
-	       to, say, break of a class's method and you're in a file
-	       which doesn't mention that class, it won't work unless
-	       the check for all static symbols in lookup_symbol_aux
-	       saves you.  See the OtherFileClass tests in
-	       gdb.c++/namespace.exp.  */
-
-	    if (!suppress_add)
-	      {
-		buildsym_compunit *builder = cu->get_builder ();
-		list_to_add
-		  = (cu->list_in_scope == builder->get_file_symbols ()
-		     && cu->language == language_cplus
-		     ? builder->get_global_symbols ()
-		     : cu->list_in_scope);
-
-		/* The semantics of C++ state that "struct foo {
-		   ... }" also defines a typedef for "foo".  */
-		if (cu->language == language_cplus
-		    || cu->language == language_ada
-		    || cu->language == language_d
-		    || cu->language == language_rust)
-		  {
-		    /* The symbol's name is already allocated along
-		       with this objfile, so we don't need to
-		       duplicate it for the type.  */
-		    if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-		      TYPE_NAME (SYMBOL_TYPE (sym)) = sym->search_name ();
-		  }
-	      }
-	  }
-	  break;
-	case DW_TAG_typedef:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
-	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-	  list_to_add = cu->list_in_scope;
-	  break;
-	case DW_TAG_base_type:
-        case DW_TAG_subrange_type:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
-	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-	  list_to_add = cu->list_in_scope;
-	  break;
-	case DW_TAG_enumerator:
-	  attr = dwarf2_attr (die, DW_AT_const_value, cu);
-	  if (attr != nullptr)
-	    {
-	      dwarf2_const_value (attr, sym, cu);
-	    }
-	  {
-	    /* NOTE: carlton/2003-11-10: See comment above in the
-	       DW_TAG_class_type, etc. block.  */
-
-	    list_to_add
-	      = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
-		 && cu->language == language_cplus
-		 ? cu->get_builder ()->get_global_symbols ()
-		 : cu->list_in_scope);
-	  }
-	  break;
-	case DW_TAG_imported_declaration:
-	case DW_TAG_namespace:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
-	  list_to_add = cu->get_builder ()->get_global_symbols ();
-	  break;
-	case DW_TAG_module:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
-	  SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
-	  list_to_add = cu->get_builder ()->get_global_symbols ();
-	  break;
-	case DW_TAG_common_block:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
-	  SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
-	  add_symbol_to_list (sym, cu->list_in_scope);
-	  break;
-	default:
-	  /* Not a tag we recognize.  Hopefully we aren't processing
-	     trash data, but since we must specifically ignore things
-	     we don't recognize, there is nothing else we should do at
-	     this point.  */
-	  complaint (_("unsupported tag: '%s'"),
-		     dwarf_tag_name (die->tag));
-	  break;
-	}
-
-      if (suppress_add)
-	{
-	  sym->hash_next = objfile->template_symbols;
-	  objfile->template_symbols = sym;
-	  list_to_add = NULL;
-	}
-
-      if (list_to_add != NULL)
-	add_symbol_to_list (sym, list_to_add);
-
-      /* For the benefit of old versions of GCC, check for anonymous
-	 namespaces based on the demangled name.  */
-      if (!cu->processing_has_namespace_info
-	  && cu->language == language_cplus)
-	cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
-    }
-  return (sym);
-}
-
-/* Given an attr with a DW_FORM_dataN value in host byte order,
-   zero-extend it as appropriate for the symbol's type.  The DWARF
-   standard (v4) is not entirely clear about the meaning of using
-   DW_FORM_dataN for a constant with a signed type, where the type is
-   wider than the data.  The conclusion of a discussion on the DWARF
-   list was that this is unspecified.  We choose to always zero-extend
-   because that is the interpretation long in use by GCC.  */
-
-static gdb_byte *
-dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
-			 struct dwarf2_cu *cu, LONGEST *value, int bits)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
-				BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
-  LONGEST l = DW_UNSND (attr);
-
-  if (bits < sizeof (*value) * 8)
-    {
-      l &= ((LONGEST) 1 << bits) - 1;
-      *value = l;
-    }
-  else if (bits == sizeof (*value) * 8)
-    *value = l;
-  else
-    {
-      gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
-      store_unsigned_integer (bytes, bits / 8, byte_order, l);
-      return bytes;
-    }
-
-  return NULL;
-}
-
-/* Read a constant value from an attribute.  Either set *VALUE, or if
-   the value does not fit in *VALUE, set *BYTES - either already
-   allocated on the objfile obstack, or newly allocated on OBSTACK,
-   or, set *BATON, if we translated the constant to a location
-   expression.  */
-
-static void
-dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
-			 const char *name, struct obstack *obstack,
-			 struct dwarf2_cu *cu,
-			 LONGEST *value, const gdb_byte **bytes,
-			 struct dwarf2_locexpr_baton **baton)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  struct comp_unit_head *cu_header = &cu->header;
-  struct dwarf_block *blk;
-  enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
-				BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
-
-  *value = 0;
-  *bytes = NULL;
-  *baton = NULL;
-
-  switch (attr->form)
-    {
-    case DW_FORM_addr:
-    case DW_FORM_addrx:
-    case DW_FORM_GNU_addr_index:
-      {
-	gdb_byte *data;
-
-	if (TYPE_LENGTH (type) != cu_header->addr_size)
-	  dwarf2_const_value_length_mismatch_complaint (name,
-							cu_header->addr_size,
-							TYPE_LENGTH (type));
-	/* Symbols of this form are reasonably rare, so we just
-	   piggyback on the existing location code rather than writing
-	   a new implementation of symbol_computed_ops.  */
-	*baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
-	(*baton)->per_cu = cu->per_cu;
-	gdb_assert ((*baton)->per_cu);
-
-	(*baton)->size = 2 + cu_header->addr_size;
-	data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
-	(*baton)->data = data;
-
-	data[0] = DW_OP_addr;
-	store_unsigned_integer (&data[1], cu_header->addr_size,
-				byte_order, DW_ADDR (attr));
-	data[cu_header->addr_size + 1] = DW_OP_stack_value;
-      }
-      break;
-    case DW_FORM_string:
-    case DW_FORM_strp:
-    case DW_FORM_strx:
-    case DW_FORM_GNU_str_index:
-    case DW_FORM_GNU_strp_alt:
-      /* DW_STRING is already allocated on the objfile obstack, point
-	 directly to it.  */
-      *bytes = (const gdb_byte *) DW_STRING (attr);
-      break;
-    case DW_FORM_block1:
-    case DW_FORM_block2:
-    case DW_FORM_block4:
-    case DW_FORM_block:
-    case DW_FORM_exprloc:
-    case DW_FORM_data16:
-      blk = DW_BLOCK (attr);
-      if (TYPE_LENGTH (type) != blk->size)
-	dwarf2_const_value_length_mismatch_complaint (name, blk->size,
-						      TYPE_LENGTH (type));
-      *bytes = blk->data;
-      break;
-
-      /* The DW_AT_const_value attributes are supposed to carry the
-	 symbol's value "represented as it would be on the target
-	 architecture."  By the time we get here, it's already been
-	 converted to host endianness, so we just need to sign- or
-	 zero-extend it as appropriate.  */
-    case DW_FORM_data1:
-      *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
-      break;
-    case DW_FORM_data2:
-      *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
-      break;
-    case DW_FORM_data4:
-      *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
-      break;
-    case DW_FORM_data8:
-      *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
-      break;
-
-    case DW_FORM_sdata:
-    case DW_FORM_implicit_const:
-      *value = DW_SND (attr);
-      break;
-
-    case DW_FORM_udata:
-      *value = DW_UNSND (attr);
-      break;
-
-    default:
-      complaint (_("unsupported const value attribute form: '%s'"),
-		 dwarf_form_name (attr->form));
-      *value = 0;
-      break;
-    }
-}
-
-
-/* Copy constant value from an attribute to a symbol.  */
-
-static void
-dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
-		    struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  LONGEST value;
-  const gdb_byte *bytes;
-  struct dwarf2_locexpr_baton *baton;
-
-  dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
-			   sym->print_name (),
-			   &objfile->objfile_obstack, cu,
-			   &value, &bytes, &baton);
-
-  if (baton != NULL)
-    {
-      SYMBOL_LOCATION_BATON (sym) = baton;
-      SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
-    }
-  else if (bytes != NULL)
-     {
-      SYMBOL_VALUE_BYTES (sym) = bytes;
-      SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
-    }
-  else
-    {
-      SYMBOL_VALUE (sym) = value;
-      SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
-    }
-}
-
-/* Return the type of the die in question using its DW_AT_type attribute.  */
-
-static struct type *
-die_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *type_attr;
-
-  type_attr = dwarf2_attr (die, DW_AT_type, cu);
-  if (!type_attr)
-    {
-      struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-      /* A missing DW_AT_type represents a void type.  */
-      return objfile_type (objfile)->builtin_void;
-    }
-
-  return lookup_die_type (die, type_attr, cu);
-}
-
-/* True iff CU's producer generates GNAT Ada auxiliary information
-   that allows to find parallel types through that information instead
-   of having to do expensive parallel lookups by type name.  */
-
-static int
-need_gnat_info (struct dwarf2_cu *cu)
-{
-  /* Assume that the Ada compiler was GNAT, which always produces
-     the auxiliary information.  */
-  return (cu->language == language_ada);
-}
-
-/* Return the auxiliary type of the die in question using its
-   DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
-   attribute is not present.  */
-
-static struct type *
-die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *type_attr;
-
-  type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
-  if (!type_attr)
-    return NULL;
-
-  return lookup_die_type (die, type_attr, cu);
-}
-
-/* If DIE has a descriptive_type attribute, then set the TYPE's
-   descriptive type accordingly.  */
-
-static void
-set_descriptive_type (struct type *type, struct die_info *die,
-		      struct dwarf2_cu *cu)
-{
-  struct type *descriptive_type = die_descriptive_type (die, cu);
-
-  if (descriptive_type)
-    {
-      ALLOCATE_GNAT_AUX_TYPE (type);
-      TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
-    }
-}
-
-/* Return the containing type of the die in question using its
-   DW_AT_containing_type attribute.  */
-
-static struct type *
-die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *type_attr;
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-
-  type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
-  if (!type_attr)
-    error (_("Dwarf Error: Problem turning containing type into gdb type "
-	     "[in module %s]"), objfile_name (objfile));
-
-  return lookup_die_type (die, type_attr, cu);
-}
-
-/* Return an error marker type to use for the ill formed type in DIE/CU.  */
-
-static struct type *
-build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  char *saved;
-
-  std::string message
-    = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
-		     objfile_name (objfile),
-		     sect_offset_str (cu->header.sect_off),
-		     sect_offset_str (die->sect_off));
-  saved = obstack_strdup (&objfile->objfile_obstack, message);
-
-  return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
-}
-
-/* Look up the type of DIE in CU using its type attribute ATTR.
-   ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
-   DW_AT_containing_type.
-   If there is no type substitute an error marker.  */
-
-static struct type *
-lookup_die_type (struct die_info *die, const struct attribute *attr,
-		 struct dwarf2_cu *cu)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct type *this_type;
-
-  gdb_assert (attr->name == DW_AT_type
-	      || attr->name == DW_AT_GNAT_descriptive_type
-	      || attr->name == DW_AT_containing_type);
-
-  /* First see if we have it cached.  */
-
-  if (attr->form == DW_FORM_GNU_ref_alt)
-    {
-      struct dwarf2_per_cu_data *per_cu;
-      sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
-
-      per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
-						 dwarf2_per_objfile);
-      this_type = get_die_type_at_offset (sect_off, per_cu);
-    }
-  else if (attr_form_is_ref (attr))
-    {
-      sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
-
-      this_type = get_die_type_at_offset (sect_off, cu->per_cu);
-    }
-  else if (attr->form == DW_FORM_ref_sig8)
-    {
-      ULONGEST signature = DW_SIGNATURE (attr);
-
-      return get_signatured_type (die, signature, cu);
-    }
-  else
-    {
-      complaint (_("Dwarf Error: Bad type attribute %s in DIE"
-		   " at %s [in module %s]"),
-		 dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
-		 objfile_name (objfile));
-      return build_error_marker_type (cu, die);
-    }
-
-  /* If not cached we need to read it in.  */
-
-  if (this_type == NULL)
-    {
-      struct die_info *type_die = NULL;
-      struct dwarf2_cu *type_cu = cu;
-
-      if (attr_form_is_ref (attr))
-	type_die = follow_die_ref (die, attr, &type_cu);
-      if (type_die == NULL)
-	return build_error_marker_type (cu, die);
-      /* If we find the type now, it's probably because the type came
-	 from an inter-CU reference and the type's CU got expanded before
-	 ours.  */
-      this_type = read_type_die (type_die, type_cu);
-    }
-
-  /* If we still don't have a type use an error marker.  */
-
-  if (this_type == NULL)
-    return build_error_marker_type (cu, die);
-
-  return this_type;
-}
-
-/* Return the type in DIE, CU.
-   Returns NULL for invalid types.
-
-   This first does a lookup in die_type_hash,
-   and only reads the die in if necessary.
-
-   NOTE: This can be called when reading in partial or full symbols.  */
-
-static struct type *
-read_type_die (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *this_type;
-
-  this_type = get_die_type (die, cu);
-  if (this_type)
-    return this_type;
-
-  return read_type_die_1 (die, cu);
-}
-
-/* Read the type in DIE, CU.
-   Returns NULL for invalid types.  */
-
-static struct type *
-read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct type *this_type = NULL;
-
-  switch (die->tag)
-    {
-    case DW_TAG_class_type:
-    case DW_TAG_interface_type:
-    case DW_TAG_structure_type:
-    case DW_TAG_union_type:
-      this_type = read_structure_type (die, cu);
-      break;
-    case DW_TAG_enumeration_type:
-      this_type = read_enumeration_type (die, cu);
-      break;
-    case DW_TAG_subprogram:
-    case DW_TAG_subroutine_type:
-    case DW_TAG_inlined_subroutine:
-      this_type = read_subroutine_type (die, cu);
-      break;
-    case DW_TAG_array_type:
-      this_type = read_array_type (die, cu);
-      break;
-    case DW_TAG_set_type:
-      this_type = read_set_type (die, cu);
-      break;
-    case DW_TAG_pointer_type:
-      this_type = read_tag_pointer_type (die, cu);
-      break;
-    case DW_TAG_ptr_to_member_type:
-      this_type = read_tag_ptr_to_member_type (die, cu);
-      break;
-    case DW_TAG_reference_type:
-      this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
-      break;
-    case DW_TAG_rvalue_reference_type:
-      this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
-      break;
-    case DW_TAG_const_type:
-      this_type = read_tag_const_type (die, cu);
-      break;
-    case DW_TAG_volatile_type:
-      this_type = read_tag_volatile_type (die, cu);
-      break;
-    case DW_TAG_restrict_type:
-      this_type = read_tag_restrict_type (die, cu);
-      break;
-    case DW_TAG_string_type:
-      this_type = read_tag_string_type (die, cu);
-      break;
-    case DW_TAG_typedef:
-      this_type = read_typedef (die, cu);
-      break;
-    case DW_TAG_subrange_type:
-      this_type = read_subrange_type (die, cu);
-      break;
-    case DW_TAG_base_type:
-      this_type = read_base_type (die, cu);
-      break;
-    case DW_TAG_unspecified_type:
-      this_type = read_unspecified_type (die, cu);
-      break;
-    case DW_TAG_namespace:
-      this_type = read_namespace_type (die, cu);
-      break;
-    case DW_TAG_module:
-      this_type = read_module_type (die, cu);
-      break;
-    case DW_TAG_atomic_type:
-      this_type = read_tag_atomic_type (die, cu);
-      break;
-    default:
-      complaint (_("unexpected tag in read_type_die: '%s'"),
-		 dwarf_tag_name (die->tag));
-      break;
-    }
-
-  return this_type;
-}
-
-/* See if we can figure out if the class lives in a namespace.  We do
-   this by looking for a member function; its demangled name will
-   contain namespace info, if there is any.
-   Return the computed name or NULL.
-   Space for the result is allocated on the objfile's obstack.
-   This is the full-die version of guess_partial_die_structure_name.
-   In this case we know DIE has no useful parent.  */
-
-static char *
-guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct die_info *spec_die;
-  struct dwarf2_cu *spec_cu;
-  struct die_info *child;
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-
-  spec_cu = cu;
-  spec_die = die_specification (die, &spec_cu);
-  if (spec_die != NULL)
-    {
-      die = spec_die;
-      cu = spec_cu;
-    }
-
-  for (child = die->child;
-       child != NULL;
-       child = child->sibling)
-    {
-      if (child->tag == DW_TAG_subprogram)
-	{
-	  const char *linkage_name = dw2_linkage_name (child, cu);
-
-	  if (linkage_name != NULL)
-	    {
-	      char *actual_name
-		= language_class_name_from_physname (cu->language_defn,
-						     linkage_name);
-	      char *name = NULL;
-
-	      if (actual_name != NULL)
-		{
-		  const char *die_name = dwarf2_name (die, cu);
-
-		  if (die_name != NULL
-		      && strcmp (die_name, actual_name) != 0)
-		    {
-		      /* Strip off the class name from the full name.
-			 We want the prefix.  */
-		      int die_name_len = strlen (die_name);
-		      int actual_name_len = strlen (actual_name);
-
-		      /* Test for '::' as a sanity check.  */
-		      if (actual_name_len > die_name_len + 2
-			  && actual_name[actual_name_len
-					 - die_name_len - 1] == ':')
-			name = obstack_strndup (
-			  &objfile->per_bfd->storage_obstack,
-			  actual_name, actual_name_len - die_name_len - 2);
-		    }
-		}
-	      xfree (actual_name);
-	      return name;
-	    }
-	}
-    }
-
-  return NULL;
-}
-
-/* GCC might emit a nameless typedef that has a linkage name.  Determine the
-   prefix part in such case.  See
-   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
-
-static const char *
-anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-  const char *base;
-
-  if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
-      && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
-    return NULL;
-
-  if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
-    return NULL;
-
-  attr = dw2_linkage_name_attr (die, cu);
-  if (attr == NULL || DW_STRING (attr) == NULL)
-    return NULL;
-
-  /* dwarf2_name had to be already called.  */
-  gdb_assert (DW_STRING_IS_CANONICAL (attr));
-
-  /* Strip the base name, keep any leading namespaces/classes.  */
-  base = strrchr (DW_STRING (attr), ':');
-  if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
-    return "";
-
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  return obstack_strndup (&objfile->per_bfd->storage_obstack,
-			  DW_STRING (attr),
-			  &base[-1] - DW_STRING (attr));
-}
-
-/* Return the name of the namespace/class that DIE is defined within,
-   or "" if we can't tell.  The caller should not xfree the result.
-
-   For example, if we're within the method foo() in the following
-   code:
-
-   namespace N {
-     class C {
-       void foo () {
-       }
-     };
-   }
-
-   then determine_prefix on foo's die will return "N::C".  */
-
-static const char *
-determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct die_info *parent, *spec_die;
-  struct dwarf2_cu *spec_cu;
-  struct type *parent_type;
-  const char *retval;
-
-  if (cu->language != language_cplus
-      && cu->language != language_fortran && cu->language != language_d
-      && cu->language != language_rust)
-    return "";
-
-  retval = anonymous_struct_prefix (die, cu);
-  if (retval)
-    return retval;
-
-  /* We have to be careful in the presence of DW_AT_specification.
-     For example, with GCC 3.4, given the code
-
-     namespace N {
-       void foo() {
-	 // Definition of N::foo.
-       }
-     }
-
-     then we'll have a tree of DIEs like this:
-
-     1: DW_TAG_compile_unit
-       2: DW_TAG_namespace        // N
-	 3: DW_TAG_subprogram     // declaration of N::foo
-       4: DW_TAG_subprogram       // definition of N::foo
-	    DW_AT_specification   // refers to die #3
-
-     Thus, when processing die #4, we have to pretend that we're in
-     the context of its DW_AT_specification, namely the contex of die
-     #3.  */
-  spec_cu = cu;
-  spec_die = die_specification (die, &spec_cu);
-  if (spec_die == NULL)
-    parent = die->parent;
-  else
-    {
-      parent = spec_die->parent;
-      cu = spec_cu;
-    }
-
-  if (parent == NULL)
-    return "";
-  else if (parent->building_fullname)
-    {
-      const char *name;
-      const char *parent_name;
-
-      /* It has been seen on RealView 2.2 built binaries,
-	 DW_TAG_template_type_param types actually _defined_ as
-	 children of the parent class:
-
-	 enum E {};
-	 template class <class Enum> Class{};
-	 Class<enum E> class_e;
-
-         1: DW_TAG_class_type (Class)
-           2: DW_TAG_enumeration_type (E)
-             3: DW_TAG_enumerator (enum1:0)
-             3: DW_TAG_enumerator (enum2:1)
-             ...
-           2: DW_TAG_template_type_param
-              DW_AT_type  DW_FORM_ref_udata (E)
-
-	 Besides being broken debug info, it can put GDB into an
-	 infinite loop.  Consider:
-
-	 When we're building the full name for Class<E>, we'll start
-	 at Class, and go look over its template type parameters,
-	 finding E.  We'll then try to build the full name of E, and
-	 reach here.  We're now trying to build the full name of E,
-	 and look over the parent DIE for containing scope.  In the
-	 broken case, if we followed the parent DIE of E, we'd again
-	 find Class, and once again go look at its template type
-	 arguments, etc., etc.  Simply don't consider such parent die
-	 as source-level parent of this die (it can't be, the language
-	 doesn't allow it), and break the loop here.  */
-      name = dwarf2_name (die, cu);
-      parent_name = dwarf2_name (parent, cu);
-      complaint (_("template param type '%s' defined within parent '%s'"),
-		 name ? name : "<unknown>",
-		 parent_name ? parent_name : "<unknown>");
-      return "";
-    }
-  else
-    switch (parent->tag)
-      {
-      case DW_TAG_namespace:
-	parent_type = read_type_die (parent, cu);
-	/* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
-	   DW_TAG_namespace DIEs with a name of "::" for the global namespace.
-	   Work around this problem here.  */
-	if (cu->language == language_cplus
-	    && strcmp (TYPE_NAME (parent_type), "::") == 0)
-	  return "";
-	/* We give a name to even anonymous namespaces.  */
-	return TYPE_NAME (parent_type);
-      case DW_TAG_class_type:
-      case DW_TAG_interface_type:
-      case DW_TAG_structure_type:
-      case DW_TAG_union_type:
-      case DW_TAG_module:
-	parent_type = read_type_die (parent, cu);
-	if (TYPE_NAME (parent_type) != NULL)
-	  return TYPE_NAME (parent_type);
-	else
-	  /* An anonymous structure is only allowed non-static data
-	     members; no typedefs, no member functions, et cetera.
-	     So it does not need a prefix.  */
-	  return "";
-      case DW_TAG_compile_unit:
-      case DW_TAG_partial_unit:
-	/* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
-	if (cu->language == language_cplus
-	    && !dwarf2_per_objfile->types.empty ()
-	    && die->child != NULL
-	    && (die->tag == DW_TAG_class_type
-		|| die->tag == DW_TAG_structure_type
-		|| die->tag == DW_TAG_union_type))
-	  {
-	    char *name = guess_full_die_structure_name (die, cu);
-	    if (name != NULL)
-	      return name;
-	  }
-	return "";
-      case DW_TAG_subprogram:
-	/* Nested subroutines in Fortran get a prefix with the name
-	   of the parent's subroutine.  */
-	if (cu->language == language_fortran)
-	  {
-	    if ((die->tag ==  DW_TAG_subprogram)
-		&& (dwarf2_name (parent, cu) != NULL))
-	      return dwarf2_name (parent, cu);
-	  }
-	return determine_prefix (parent, cu);
-      case DW_TAG_enumeration_type:
-	parent_type = read_type_die (parent, cu);
-	if (TYPE_DECLARED_CLASS (parent_type))
-	  {
-	    if (TYPE_NAME (parent_type) != NULL)
-	      return TYPE_NAME (parent_type);
-	    return "";
-	  }
-	/* Fall through.  */
-      default:
-	return determine_prefix (parent, cu);
-      }
-}
-
-/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
-   with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
-   simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
-   an obconcat, otherwise allocate storage for the result.  The CU argument is
-   used to determine the language and hence, the appropriate separator.  */
-
-#define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
-
-static char *
-typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
-                 int physname, struct dwarf2_cu *cu)
-{
-  const char *lead = "";
-  const char *sep;
-
-  if (suffix == NULL || suffix[0] == '\0'
-      || prefix == NULL || prefix[0] == '\0')
-    sep = "";
-  else if (cu->language == language_d)
-    {
-      /* For D, the 'main' function could be defined in any module, but it
-	 should never be prefixed.  */
-      if (strcmp (suffix, "D main") == 0)
-	{
-	  prefix = "";
-	  sep = "";
-	}
-      else
-	sep = ".";
-    }
-  else if (cu->language == language_fortran && physname)
-    {
-      /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
-	 DW_AT_MIPS_linkage_name is preferred and used instead.  */
-
-      lead = "__";
-      sep = "_MOD_";
-    }
-  else
-    sep = "::";
-
-  if (prefix == NULL)
-    prefix = "";
-  if (suffix == NULL)
-    suffix = "";
-
-  if (obs == NULL)
-    {
-      char *retval
-	= ((char *)
-	   xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
-
-      strcpy (retval, lead);
-      strcat (retval, prefix);
-      strcat (retval, sep);
-      strcat (retval, suffix);
-      return retval;
-    }
-  else
-    {
-      /* We have an obstack.  */
-      return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
-    }
-}
-
-/* Return sibling of die, NULL if no sibling.  */
-
-static struct die_info *
-sibling_die (struct die_info *die)
-{
-  return die->sibling;
-}
-
-/* Get name of a die, return NULL if not found.  */
-
-static const char *
-dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
-			  struct obstack *obstack)
-{
-  if (name && cu->language == language_cplus)
-    {
-      std::string canon_name = cp_canonicalize_string (name);
-
-      if (!canon_name.empty ())
-	{
-	  if (canon_name != name)
-	    name = obstack_strdup (obstack, canon_name);
-	}
-    }
-
-  return name;
-}
-
-/* Get name of a die, return NULL if not found.
-   Anonymous namespaces are converted to their magic string.  */
-
-static const char *
-dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
-{
-  struct attribute *attr;
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-
-  attr = dwarf2_attr (die, DW_AT_name, cu);
-  if ((!attr || !DW_STRING (attr))
-      && die->tag != DW_TAG_namespace
-      && die->tag != DW_TAG_class_type
-      && die->tag != DW_TAG_interface_type
-      && die->tag != DW_TAG_structure_type
-      && die->tag != DW_TAG_union_type)
-    return NULL;
-
-  switch (die->tag)
-    {
-    case DW_TAG_compile_unit:
-    case DW_TAG_partial_unit:
-      /* Compilation units have a DW_AT_name that is a filename, not
-	 a source language identifier.  */
-    case DW_TAG_enumeration_type:
-    case DW_TAG_enumerator:
-      /* These tags always have simple identifiers already; no need
-	 to canonicalize them.  */
-      return DW_STRING (attr);
-
-    case DW_TAG_namespace:
-      if (attr != NULL && DW_STRING (attr) != NULL)
-	return DW_STRING (attr);
-      return CP_ANONYMOUS_NAMESPACE_STR;
-
-    case DW_TAG_class_type:
-    case DW_TAG_interface_type:
-    case DW_TAG_structure_type:
-    case DW_TAG_union_type:
-      /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
-	 structures or unions.  These were of the form "._%d" in GCC 4.1,
-	 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
-	 and GCC 4.4.  We work around this problem by ignoring these.  */
-      if (attr && DW_STRING (attr)
-	  && (startswith (DW_STRING (attr), "._")
-	      || startswith (DW_STRING (attr), "<anonymous")))
-	return NULL;
-
-      /* GCC might emit a nameless typedef that has a linkage name.  See
-	 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
-      if (!attr || DW_STRING (attr) == NULL)
-	{
-	  char *demangled = NULL;
-
-	  attr = dw2_linkage_name_attr (die, cu);
-	  if (attr == NULL || DW_STRING (attr) == NULL)
-	    return NULL;
-
-	  /* Avoid demangling DW_STRING (attr) the second time on a second
-	     call for the same DIE.  */
-	  if (!DW_STRING_IS_CANONICAL (attr))
-	    demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
-
-	  if (demangled)
-	    {
-	      const char *base;
-
-	      /* FIXME: we already did this for the partial symbol... */
-	      DW_STRING (attr)
-		= obstack_strdup (&objfile->per_bfd->storage_obstack,
-				  demangled);
-	      DW_STRING_IS_CANONICAL (attr) = 1;
-	      xfree (demangled);
-
-	      /* Strip any leading namespaces/classes, keep only the base name.
-		 DW_AT_name for named DIEs does not contain the prefixes.  */
-	      base = strrchr (DW_STRING (attr), ':');
-	      if (base && base > DW_STRING (attr) && base[-1] == ':')
-		return &base[1];
-	      else
-		return DW_STRING (attr);
-	    }
-	}
-      break;
-
-    default:
-      break;
-    }
-
-  if (!DW_STRING_IS_CANONICAL (attr))
-    {
-      DW_STRING (attr)
-	= dwarf2_canonicalize_name (DW_STRING (attr), cu,
-				    &objfile->per_bfd->storage_obstack);
-      DW_STRING_IS_CANONICAL (attr) = 1;
-    }
-  return DW_STRING (attr);
-}
-
-/* Return the die that this die in an extension of, or NULL if there
-   is none.  *EXT_CU is the CU containing DIE on input, and the CU
-   containing the return value on output.  */
-
-static struct die_info *
-dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
-{
-  struct attribute *attr;
-
-  attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
-  if (attr == NULL)
-    return NULL;
-
-  return follow_die_ref (die, attr, ext_cu);
-}
-
-/* A convenience function that returns an "unknown" DWARF name,
-   including the value of V.  STR is the name of the entity being
-   printed, e.g., "TAG".  */
-
-static const char *
-dwarf_unknown (const char *str, unsigned v)
-{
-  char *cell = get_print_cell ();
-  xsnprintf (cell, PRINT_CELL_SIZE, "DW_%s_<unknown: %u>", str, v);
-  return cell;
-}
-
-/* Convert a DIE tag into its string name.  */
-
-static const char *
-dwarf_tag_name (unsigned tag)
-{
-  const char *name = get_DW_TAG_name (tag);
-
-  if (name == NULL)
-    return dwarf_unknown ("TAG", tag);
-
-  return name;
-}
-
-/* Convert a DWARF attribute code into its string name.  */
-
-static const char *
-dwarf_attr_name (unsigned attr)
-{
-  const char *name;
-
-#ifdef MIPS /* collides with DW_AT_HP_block_index */
-  if (attr == DW_AT_MIPS_fde)
-    return "DW_AT_MIPS_fde";
-#else
-  if (attr == DW_AT_HP_block_index)
-    return "DW_AT_HP_block_index";
-#endif
-
-  name = get_DW_AT_name (attr);
-
-  if (name == NULL)
-    return dwarf_unknown ("AT", attr);
-
-  return name;
-}
-
-/* Convert a unit type to corresponding DW_UT name.  */
-
-static const char *
-dwarf_unit_type_name (int unit_type) {
-  switch (unit_type)
-    {
-      case 0x01:
-	return "DW_UT_compile (0x01)";
-      case 0x02:
-	return "DW_UT_type (0x02)";
-      case 0x03:
-	return "DW_UT_partial (0x03)";
-      case 0x04:
-	return "DW_UT_skeleton (0x04)";
-      case 0x05:
-	return "DW_UT_split_compile (0x05)";
-      case 0x06:
-	return "DW_UT_split_type (0x06)";
-      case 0x80:
-	return "DW_UT_lo_user (0x80)";
-      case 0xff:
-	return "DW_UT_hi_user (0xff)";
-      default:
-	return nullptr;
-    }
-}
-
-/* Convert a DWARF value form code into its string name.  */
-
-static const char *
-dwarf_form_name (unsigned form)
-{
-  const char *name = get_DW_FORM_name (form);
-
-  if (name == NULL)
-    return dwarf_unknown ("FORM", form);
-
-  return name;
-}
-
-static const char *
-dwarf_bool_name (unsigned mybool)
-{
-  if (mybool)
-    return "TRUE";
-  else
-    return "FALSE";
-}
-
-/* Convert a DWARF type code into its string name.  */
-
-static const char *
-dwarf_type_encoding_name (unsigned enc)
-{
-  const char *name = get_DW_ATE_name (enc);
-
-  if (name == NULL)
-    return dwarf_unknown ("ATE", enc);
-
-  return name;
-}
-
-static void
-dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
-{
-  unsigned int i;
-
-  print_spaces (indent, f);
-  fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
-		      dwarf_tag_name (die->tag), die->abbrev,
-		      sect_offset_str (die->sect_off));
-
-  if (die->parent != NULL)
-    {
-      print_spaces (indent, f);
-      fprintf_unfiltered (f, "  parent at offset: %s\n",
-			  sect_offset_str (die->parent->sect_off));
-    }
-
-  print_spaces (indent, f);
-  fprintf_unfiltered (f, "  has children: %s\n",
-	   dwarf_bool_name (die->child != NULL));
-
-  print_spaces (indent, f);
-  fprintf_unfiltered (f, "  attributes:\n");
-
-  for (i = 0; i < die->num_attrs; ++i)
-    {
-      print_spaces (indent, f);
-      fprintf_unfiltered (f, "    %s (%s) ",
-	       dwarf_attr_name (die->attrs[i].name),
-	       dwarf_form_name (die->attrs[i].form));
-
-      switch (die->attrs[i].form)
-	{
-	case DW_FORM_addr:
-	case DW_FORM_addrx:
-	case DW_FORM_GNU_addr_index:
-	  fprintf_unfiltered (f, "address: ");
-	  fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
-	  break;
-	case DW_FORM_block2:
-	case DW_FORM_block4:
-	case DW_FORM_block:
-	case DW_FORM_block1:
-	  fprintf_unfiltered (f, "block: size %s",
-			      pulongest (DW_BLOCK (&die->attrs[i])->size));
-	  break;
-	case DW_FORM_exprloc:
-	  fprintf_unfiltered (f, "expression: size %s",
-			      pulongest (DW_BLOCK (&die->attrs[i])->size));
-	  break;
-	case DW_FORM_data16:
-	  fprintf_unfiltered (f, "constant of 16 bytes");
-	  break;
-	case DW_FORM_ref_addr:
-	  fprintf_unfiltered (f, "ref address: ");
-	  fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
-	  break;
-	case DW_FORM_GNU_ref_alt:
-	  fprintf_unfiltered (f, "alt ref address: ");
-	  fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
-	  break;
-	case DW_FORM_ref1:
-	case DW_FORM_ref2:
-	case DW_FORM_ref4:
-	case DW_FORM_ref8:
-	case DW_FORM_ref_udata:
-	  fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
-			      (long) (DW_UNSND (&die->attrs[i])));
-	  break;
-	case DW_FORM_data1:
-	case DW_FORM_data2:
-	case DW_FORM_data4:
-	case DW_FORM_data8:
-	case DW_FORM_udata:
-	case DW_FORM_sdata:
-	  fprintf_unfiltered (f, "constant: %s",
-			      pulongest (DW_UNSND (&die->attrs[i])));
-	  break;
-	case DW_FORM_sec_offset:
-	  fprintf_unfiltered (f, "section offset: %s",
-			      pulongest (DW_UNSND (&die->attrs[i])));
-	  break;
-	case DW_FORM_ref_sig8:
-	  fprintf_unfiltered (f, "signature: %s",
-			      hex_string (DW_SIGNATURE (&die->attrs[i])));
-	  break;
-	case DW_FORM_string:
-	case DW_FORM_strp:
-	case DW_FORM_line_strp:
-	case DW_FORM_strx:
-	case DW_FORM_GNU_str_index:
-	case DW_FORM_GNU_strp_alt:
-	  fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
-		   DW_STRING (&die->attrs[i])
-		   ? DW_STRING (&die->attrs[i]) : "",
-		   DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
-	  break;
-	case DW_FORM_flag:
-	  if (DW_UNSND (&die->attrs[i]))
-	    fprintf_unfiltered (f, "flag: TRUE");
-	  else
-	    fprintf_unfiltered (f, "flag: FALSE");
-	  break;
-	case DW_FORM_flag_present:
-	  fprintf_unfiltered (f, "flag: TRUE");
-	  break;
-	case DW_FORM_indirect:
-	  /* The reader will have reduced the indirect form to
-	     the "base form" so this form should not occur.  */
-	  fprintf_unfiltered (f,
-			      "unexpected attribute form: DW_FORM_indirect");
-	  break;
-	case DW_FORM_implicit_const:
-	  fprintf_unfiltered (f, "constant: %s",
-			      plongest (DW_SND (&die->attrs[i])));
-	  break;
-	default:
-	  fprintf_unfiltered (f, "unsupported attribute form: %d.",
-		   die->attrs[i].form);
-	  break;
-	}
-      fprintf_unfiltered (f, "\n");
-    }
-}
-
-static void
-dump_die_for_error (struct die_info *die)
-{
-  dump_die_shallow (gdb_stderr, 0, die);
-}
-
-static void
-dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
-{
-  int indent = level * 4;
-
-  gdb_assert (die != NULL);
-
-  if (level >= max_level)
-    return;
-
-  dump_die_shallow (f, indent, die);
-
-  if (die->child != NULL)
-    {
-      print_spaces (indent, f);
-      fprintf_unfiltered (f, "  Children:");
-      if (level + 1 < max_level)
-	{
-	  fprintf_unfiltered (f, "\n");
-	  dump_die_1 (f, level + 1, max_level, die->child);
-	}
-      else
-	{
-	  fprintf_unfiltered (f,
-			      " [not printed, max nesting level reached]\n");
-	}
-    }
-
-  if (die->sibling != NULL && level > 0)
-    {
-      dump_die_1 (f, level, max_level, die->sibling);
-    }
-}
-
-/* This is called from the pdie macro in gdbinit.in.
-   It's not static so gcc will keep a copy callable from gdb.  */
-
-void
-dump_die (struct die_info *die, int max_level)
-{
-  dump_die_1 (gdb_stdlog, 0, max_level, die);
-}
-
-static void
-store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
-{
-  void **slot;
-
-  slot = htab_find_slot_with_hash (cu->die_hash, die,
-				   to_underlying (die->sect_off),
-				   INSERT);
-
-  *slot = die;
-}
-
-/* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
-   required kind.  */
-
-static sect_offset
-dwarf2_get_ref_die_offset (const struct attribute *attr)
-{
-  if (attr_form_is_ref (attr))
-    return (sect_offset) DW_UNSND (attr);
-
-  complaint (_("unsupported die ref attribute form: '%s'"),
-	     dwarf_form_name (attr->form));
-  return {};
-}
-
-/* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
- * the value held by the attribute is not constant.  */
-
-static LONGEST
-dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
-{
-  if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
-    return DW_SND (attr);
-  else if (attr->form == DW_FORM_udata
-           || attr->form == DW_FORM_data1
-           || attr->form == DW_FORM_data2
-           || attr->form == DW_FORM_data4
-           || attr->form == DW_FORM_data8)
-    return DW_UNSND (attr);
-  else
-    {
-      /* For DW_FORM_data16 see attr_form_is_constant.  */
-      complaint (_("Attribute value is not a constant (%s)"),
-                 dwarf_form_name (attr->form));
-      return default_value;
-    }
-}
-
-/* Follow reference or signature attribute ATTR of SRC_DIE.
-   On entry *REF_CU is the CU of SRC_DIE.
-   On exit *REF_CU is the CU of the result.  */
-
-static struct die_info *
-follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
-		       struct dwarf2_cu **ref_cu)
-{
-  struct die_info *die;
-
-  if (attr_form_is_ref (attr))
-    die = follow_die_ref (src_die, attr, ref_cu);
-  else if (attr->form == DW_FORM_ref_sig8)
-    die = follow_die_sig (src_die, attr, ref_cu);
-  else
-    {
-      dump_die_for_error (src_die);
-      error (_("Dwarf Error: Expected reference attribute [in module %s]"),
-	     objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
-    }
-
-  return die;
-}
-
-/* Follow reference OFFSET.
-   On entry *REF_CU is the CU of the source die referencing OFFSET.
-   On exit *REF_CU is the CU of the result.
-   Returns NULL if OFFSET is invalid.  */
-
-static struct die_info *
-follow_die_offset (sect_offset sect_off, int offset_in_dwz,
-		   struct dwarf2_cu **ref_cu)
-{
-  struct die_info temp_die;
-  struct dwarf2_cu *target_cu, *cu = *ref_cu;
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-
-  gdb_assert (cu->per_cu != NULL);
-
-  target_cu = cu;
-
-  if (cu->per_cu->is_debug_types)
-    {
-      /* .debug_types CUs cannot reference anything outside their CU.
-	 If they need to, they have to reference a signatured type via
-	 DW_FORM_ref_sig8.  */
-      if (!offset_in_cu_p (&cu->header, sect_off))
-	return NULL;
-    }
-  else if (offset_in_dwz != cu->per_cu->is_dwz
-	   || !offset_in_cu_p (&cu->header, sect_off))
-    {
-      struct dwarf2_per_cu_data *per_cu;
-
-      per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
-						 dwarf2_per_objfile);
-
-      /* If necessary, add it to the queue and load its DIEs.  */
-      if (maybe_queue_comp_unit (cu, per_cu, cu->language))
-	load_full_comp_unit (per_cu, false, cu->language);
-
-      target_cu = per_cu->cu;
-    }
-  else if (cu->dies == NULL)
-    {
-      /* We're loading full DIEs during partial symbol reading.  */
-      gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
-      load_full_comp_unit (cu->per_cu, false, language_minimal);
-    }
-
-  *ref_cu = target_cu;
-  temp_die.sect_off = sect_off;
-
-  if (target_cu != cu)
-    target_cu->ancestor = cu;
-
-  return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
-						  &temp_die,
-						  to_underlying (sect_off));
-}
-
-/* Follow reference attribute ATTR of SRC_DIE.
-   On entry *REF_CU is the CU of SRC_DIE.
-   On exit *REF_CU is the CU of the result.  */
-
-static struct die_info *
-follow_die_ref (struct die_info *src_die, const struct attribute *attr,
-		struct dwarf2_cu **ref_cu)
-{
-  sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
-  struct dwarf2_cu *cu = *ref_cu;
-  struct die_info *die;
-
-  die = follow_die_offset (sect_off,
-			   (attr->form == DW_FORM_GNU_ref_alt
-			    || cu->per_cu->is_dwz),
-			   ref_cu);
-  if (!die)
-    error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
-	   "at %s [in module %s]"),
-	   sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
-	   objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
-
-  return die;
-}
-
-/* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
-   Returned value is intended for DW_OP_call*.  Returned
-   dwarf2_locexpr_baton->data has lifetime of
-   PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
-
-struct dwarf2_locexpr_baton
-dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
-			       struct dwarf2_per_cu_data *per_cu,
-			       CORE_ADDR (*get_frame_pc) (void *baton),
-			       void *baton, bool resolve_abstract_p)
-{
-  struct dwarf2_cu *cu;
-  struct die_info *die;
-  struct attribute *attr;
-  struct dwarf2_locexpr_baton retval;
-  struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-  if (per_cu->cu == NULL)
-    load_cu (per_cu, false);
-  cu = per_cu->cu;
-  if (cu == NULL)
-    {
-      /* 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.  */
-      error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
-	     sect_offset_str (sect_off), objfile_name (objfile));
-    }
-
-  die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
-  if (!die)
-    error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
-	   sect_offset_str (sect_off), objfile_name (objfile));
-
-  attr = dwarf2_attr (die, DW_AT_location, cu);
-  if (!attr && resolve_abstract_p
-      && (dwarf2_per_objfile->abstract_to_concrete.find (die->sect_off)
-	  != dwarf2_per_objfile->abstract_to_concrete.end ()))
-    {
-      CORE_ADDR pc = (*get_frame_pc) (baton);
-      CORE_ADDR baseaddr
-	= ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-      struct gdbarch *gdbarch = get_objfile_arch (objfile);
-
-      for (const auto &cand_off
-	     : dwarf2_per_objfile->abstract_to_concrete[die->sect_off])
-	{
-	  struct dwarf2_cu *cand_cu = cu;
-	  struct die_info *cand
-	    = follow_die_offset (cand_off, per_cu->is_dwz, &cand_cu);
-	  if (!cand
-	      || !cand->parent
-	      || cand->parent->tag != DW_TAG_subprogram)
-	    continue;
-
-	  CORE_ADDR pc_low, pc_high;
-	  get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
-	  if (pc_low == ((CORE_ADDR) -1))
-	    continue;
-	  pc_low = gdbarch_adjust_dwarf2_addr (gdbarch, pc_low + baseaddr);
-	  pc_high = gdbarch_adjust_dwarf2_addr (gdbarch, pc_high + baseaddr);
-	  if (!(pc_low <= pc && pc < pc_high))
-	    continue;
-
-	  die = cand;
-	  attr = dwarf2_attr (die, DW_AT_location, cu);
-	  break;
-	}
-    }
-
-  if (!attr)
-    {
-      /* DWARF: "If there is no such attribute, then there is no effect.".
-	 DATA is ignored if SIZE is 0.  */
-
-      retval.data = NULL;
-      retval.size = 0;
-    }
-  else if (attr_form_is_section_offset (attr))
-    {
-      struct dwarf2_loclist_baton loclist_baton;
-      CORE_ADDR pc = (*get_frame_pc) (baton);
-      size_t size;
-
-      fill_in_loclist_baton (cu, &loclist_baton, attr);
-
-      retval.data = dwarf2_find_location_expression (&loclist_baton,
-						     &size, pc);
-      retval.size = size;
-    }
-  else
-    {
-      if (!attr_form_is_block (attr))
-	error (_("Dwarf Error: DIE at %s referenced in module %s "
-		 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
-	       sect_offset_str (sect_off), objfile_name (objfile));
-
-      retval.data = DW_BLOCK (attr)->data;
-      retval.size = DW_BLOCK (attr)->size;
-    }
-  retval.per_cu = cu->per_cu;
-
-  age_cached_comp_units (dwarf2_per_objfile);
-
-  return retval;
-}
-
-/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
-   offset.  */
-
-struct dwarf2_locexpr_baton
-dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
-			     struct dwarf2_per_cu_data *per_cu,
-			     CORE_ADDR (*get_frame_pc) (void *baton),
-			     void *baton)
-{
-  sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
-
-  return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
-}
-
-/* Write a constant of a given type as target-ordered bytes into
-   OBSTACK.  */
-
-static const gdb_byte *
-write_constant_as_bytes (struct obstack *obstack,
-			 enum bfd_endian byte_order,
-			 struct type *type,
-			 ULONGEST value,
-			 LONGEST *len)
-{
-  gdb_byte *result;
-
-  *len = TYPE_LENGTH (type);
-  result = (gdb_byte *) obstack_alloc (obstack, *len);
-  store_unsigned_integer (result, *len, byte_order, value);
-
-  return result;
-}
-
-/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
-   pointer to the constant bytes and set LEN to the length of the
-   data.  If memory is needed, allocate it on OBSTACK.  If the DIE
-   does not have a DW_AT_const_value, return NULL.  */
-
-const gdb_byte *
-dwarf2_fetch_constant_bytes (sect_offset sect_off,
-			     struct dwarf2_per_cu_data *per_cu,
-			     struct obstack *obstack,
-			     LONGEST *len)
-{
-  struct dwarf2_cu *cu;
-  struct die_info *die;
-  struct attribute *attr;
-  const gdb_byte *result = NULL;
-  struct type *type;
-  LONGEST value;
-  enum bfd_endian byte_order;
-  struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
-
-  if (per_cu->cu == NULL)
-    load_cu (per_cu, false);
-  cu = per_cu->cu;
-  if (cu == NULL)
-    {
-      /* 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.  */
-      error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
-	     sect_offset_str (sect_off), objfile_name (objfile));
-    }
-
-  die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
-  if (!die)
-    error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
-	   sect_offset_str (sect_off), objfile_name (objfile));
-
-  attr = dwarf2_attr (die, DW_AT_const_value, cu);
-  if (attr == NULL)
-    return NULL;
-
-  byte_order = (bfd_big_endian (objfile->obfd)
-		? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
-
-  switch (attr->form)
-    {
-    case DW_FORM_addr:
-    case DW_FORM_addrx:
-    case DW_FORM_GNU_addr_index:
-      {
-	gdb_byte *tem;
-
-	*len = cu->header.addr_size;
-	tem = (gdb_byte *) obstack_alloc (obstack, *len);
-	store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
-	result = tem;
-      }
-      break;
-    case DW_FORM_string:
-    case DW_FORM_strp:
-    case DW_FORM_strx:
-    case DW_FORM_GNU_str_index:
-    case DW_FORM_GNU_strp_alt:
-      /* DW_STRING is already allocated on the objfile obstack, point
-	 directly to it.  */
-      result = (const gdb_byte *) DW_STRING (attr);
-      *len = strlen (DW_STRING (attr));
-      break;
-    case DW_FORM_block1:
-    case DW_FORM_block2:
-    case DW_FORM_block4:
-    case DW_FORM_block:
-    case DW_FORM_exprloc:
-    case DW_FORM_data16:
-      result = DW_BLOCK (attr)->data;
-      *len = DW_BLOCK (attr)->size;
-      break;
-
-      /* The DW_AT_const_value attributes are supposed to carry the
-	 symbol's value "represented as it would be on the target
-	 architecture."  By the time we get here, it's already been
-	 converted to host endianness, so we just need to sign- or
-	 zero-extend it as appropriate.  */
-    case DW_FORM_data1:
-      type = die_type (die, cu);
-      result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
-      if (result == NULL)
-	result = write_constant_as_bytes (obstack, byte_order,
-					  type, value, len);
-      break;
-    case DW_FORM_data2:
-      type = die_type (die, cu);
-      result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
-      if (result == NULL)
-	result = write_constant_as_bytes (obstack, byte_order,
-					  type, value, len);
-      break;
-    case DW_FORM_data4:
-      type = die_type (die, cu);
-      result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
-      if (result == NULL)
-	result = write_constant_as_bytes (obstack, byte_order,
-					  type, value, len);
-      break;
-    case DW_FORM_data8:
-      type = die_type (die, cu);
-      result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
-      if (result == NULL)
-	result = write_constant_as_bytes (obstack, byte_order,
-					  type, value, len);
-      break;
-
-    case DW_FORM_sdata:
-    case DW_FORM_implicit_const:
-      type = die_type (die, cu);
-      result = write_constant_as_bytes (obstack, byte_order,
-					type, DW_SND (attr), len);
-      break;
-
-    case DW_FORM_udata:
-      type = die_type (die, cu);
-      result = write_constant_as_bytes (obstack, byte_order,
-					type, DW_UNSND (attr), len);
-      break;
-
-    default:
-      complaint (_("unsupported const value attribute form: '%s'"),
-		 dwarf_form_name (attr->form));
-      break;
-    }
-
-  return result;
-}
-
-/* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
-   valid type for this die is found.  */
-
-struct type *
-dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
-				struct dwarf2_per_cu_data *per_cu)
-{
-  struct dwarf2_cu *cu;
-  struct die_info *die;
-
-  if (per_cu->cu == NULL)
-    load_cu (per_cu, false);
-  cu = per_cu->cu;
-  if (!cu)
-    return NULL;
-
-  die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
-  if (!die)
-    return NULL;
-
-  return die_type (die, cu);
-}
-
-/* Return the type of the DIE at DIE_OFFSET in the CU named by
-   PER_CU.  */
-
-struct type *
-dwarf2_get_die_type (cu_offset die_offset,
-		     struct dwarf2_per_cu_data *per_cu)
-{
-  sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
-  return get_die_type_at_offset (die_offset_sect, per_cu);
-}
-
-/* Follow type unit SIG_TYPE referenced by SRC_DIE.
-   On entry *REF_CU is the CU of SRC_DIE.
-   On exit *REF_CU is the CU of the result.
-   Returns NULL if the referenced DIE isn't found.  */
-
-static struct die_info *
-follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
-		  struct dwarf2_cu **ref_cu)
-{
-  struct die_info temp_die;
-  struct dwarf2_cu *sig_cu, *cu = *ref_cu;
-  struct die_info *die;
-
-  /* While it might be nice to assert sig_type->type == NULL here,
-     we can get here for DW_AT_imported_declaration where we need
-     the DIE not the type.  */
-
-  /* If necessary, add it to the queue and load its DIEs.  */
-
-  if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
-    read_signatured_type (sig_type);
-
-  sig_cu = sig_type->per_cu.cu;
-  gdb_assert (sig_cu != NULL);
-  gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
-  temp_die.sect_off = sig_type->type_offset_in_section;
-  die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
-						 to_underlying (temp_die.sect_off));
-  if (die)
-    {
-      struct dwarf2_per_objfile *dwarf2_per_objfile
-	= (*ref_cu)->per_cu->dwarf2_per_objfile;
-
-      /* For .gdb_index version 7 keep track of included TUs.
-	 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
-      if (dwarf2_per_objfile->index_table != NULL
-	  && dwarf2_per_objfile->index_table->version <= 7)
-	{
-	  (*ref_cu)->per_cu->imported_symtabs_push (sig_cu->per_cu);
-	}
-
-      *ref_cu = sig_cu;
-      if (sig_cu != cu)
-	sig_cu->ancestor = cu;
-
-      return die;
-    }
-
-  return NULL;
-}
-
-/* Follow signatured type referenced by ATTR in SRC_DIE.
-   On entry *REF_CU is the CU of SRC_DIE.
-   On exit *REF_CU is the CU of the result.
-   The result is the DIE of the type.
-   If the referenced type cannot be found an error is thrown.  */
-
-static struct die_info *
-follow_die_sig (struct die_info *src_die, const struct attribute *attr,
-		struct dwarf2_cu **ref_cu)
-{
-  ULONGEST signature = DW_SIGNATURE (attr);
-  struct signatured_type *sig_type;
-  struct die_info *die;
-
-  gdb_assert (attr->form == DW_FORM_ref_sig8);
-
-  sig_type = lookup_signatured_type (*ref_cu, signature);
-  /* sig_type will be NULL if the signatured type is missing from
-     the debug info.  */
-  if (sig_type == NULL)
-    {
-      error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
-               " from DIE at %s [in module %s]"),
-             hex_string (signature), sect_offset_str (src_die->sect_off),
-	     objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
-    }
-
-  die = follow_die_sig_1 (src_die, sig_type, ref_cu);
-  if (die == NULL)
-    {
-      dump_die_for_error (src_die);
-      error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
-	       " from DIE at %s [in module %s]"),
-	     hex_string (signature), sect_offset_str (src_die->sect_off),
-	     objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
-    }
-
-  return die;
-}
-
-/* Get the type specified by SIGNATURE referenced in DIE/CU,
-   reading in and processing the type unit if necessary.  */
-
-static struct type *
-get_signatured_type (struct die_info *die, ULONGEST signature,
-		     struct dwarf2_cu *cu)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct signatured_type *sig_type;
-  struct dwarf2_cu *type_cu;
-  struct die_info *type_die;
-  struct type *type;
-
-  sig_type = lookup_signatured_type (cu, signature);
-  /* sig_type will be NULL if the signatured type is missing from
-     the debug info.  */
-  if (sig_type == NULL)
-    {
-      complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
-		   " from DIE at %s [in module %s]"),
-		 hex_string (signature), sect_offset_str (die->sect_off),
-		 objfile_name (dwarf2_per_objfile->objfile));
-      return build_error_marker_type (cu, die);
-    }
-
-  /* If we already know the type we're done.  */
-  if (sig_type->type != NULL)
-    return sig_type->type;
-
-  type_cu = cu;
-  type_die = follow_die_sig_1 (die, sig_type, &type_cu);
-  if (type_die != NULL)
-    {
-      /* N.B. We need to call get_die_type to ensure only one type for this DIE
-	 is created.  This is important, for example, because for c++ classes
-	 we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
-      type = read_type_die (type_die, type_cu);
-      if (type == NULL)
-	{
-	  complaint (_("Dwarf Error: Cannot build signatured type %s"
-		       " referenced from DIE at %s [in module %s]"),
-		     hex_string (signature), sect_offset_str (die->sect_off),
-		     objfile_name (dwarf2_per_objfile->objfile));
-	  type = build_error_marker_type (cu, die);
-	}
-    }
-  else
-    {
-      complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
-		   " from DIE at %s [in module %s]"),
-		 hex_string (signature), sect_offset_str (die->sect_off),
-		 objfile_name (dwarf2_per_objfile->objfile));
-      type = build_error_marker_type (cu, die);
-    }
-  sig_type->type = type;
-
-  return type;
-}
-
-/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
-   reading in and processing the type unit if necessary.  */
-
-static struct type *
-get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
-			  struct dwarf2_cu *cu) /* ARI: editCase function */
-{
-  /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
-  if (attr_form_is_ref (attr))
-    {
-      struct dwarf2_cu *type_cu = cu;
-      struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
-
-      return read_type_die (type_die, type_cu);
-    }
-  else if (attr->form == DW_FORM_ref_sig8)
-    {
-      return get_signatured_type (die, DW_SIGNATURE (attr), cu);
-    }
-  else
-    {
-      struct dwarf2_per_objfile *dwarf2_per_objfile
-	= cu->per_cu->dwarf2_per_objfile;
-
-      complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
-		   " at %s [in module %s]"),
-		 dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
-		 objfile_name (dwarf2_per_objfile->objfile));
-      return build_error_marker_type (cu, die);
-    }
-}
-
-/* Load the DIEs associated with type unit PER_CU into memory.  */
-
-static void
-load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
-{
-  struct signatured_type *sig_type;
-
-  /* Caller is responsible for ensuring type_unit_groups don't get here.  */
-  gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
-
-  /* We have the per_cu, but we need the signatured_type.
-     Fortunately this is an easy translation.  */
-  gdb_assert (per_cu->is_debug_types);
-  sig_type = (struct signatured_type *) per_cu;
-
-  gdb_assert (per_cu->cu == NULL);
-
-  read_signatured_type (sig_type);
-
-  gdb_assert (per_cu->cu != NULL);
-}
-
-/* die_reader_func for read_signatured_type.
-   This is identical to load_full_comp_unit_reader,
-   but is kept separate for now.  */
-
-static void
-read_signatured_type_reader (const struct die_reader_specs *reader,
-			     const gdb_byte *info_ptr,
-			     struct die_info *comp_unit_die,
-			     int has_children,
-			     void *data)
-{
-  struct dwarf2_cu *cu = reader->cu;
-
-  gdb_assert (cu->die_hash == NULL);
-  cu->die_hash =
-    htab_create_alloc_ex (cu->header.length / 12,
-			  die_hash,
-			  die_eq,
-			  NULL,
-			  &cu->comp_unit_obstack,
-			  hashtab_obstack_allocate,
-			  dummy_obstack_deallocate);
-
-  if (has_children)
-    comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
-						  &info_ptr, comp_unit_die);
-  cu->dies = comp_unit_die;
-  /* comp_unit_die is not stored in die_hash, no need.  */
-
-  /* We try not to read any attributes in this function, because not
-     all CUs needed for references have been loaded yet, and symbol
-     table processing isn't initialized.  But we have to set the CU language,
-     or we won't be able to build types correctly.
-     Similarly, if we do not read the producer, we can not apply
-     producer-specific interpretation.  */
-  prepare_one_comp_unit (cu, cu->dies, language_minimal);
-}
-
-/* Read in a signatured type and build its CU and DIEs.
-   If the type is a stub for the real type in a DWO file,
-   read in the real type from the DWO file as well.  */
-
-static void
-read_signatured_type (struct signatured_type *sig_type)
-{
-  struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
-
-  gdb_assert (per_cu->is_debug_types);
-  gdb_assert (per_cu->cu == NULL);
-
-  init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
-			   read_signatured_type_reader, NULL);
-  sig_type->per_cu.tu_read = 1;
-}
-
-/* Decode simple location descriptions.
-   Given a pointer to a dwarf block that defines a location, compute
-   the location and return the value.
-
-   NOTE drow/2003-11-18: This function is called in two situations
-   now: for the address of static or global variables (partial symbols
-   only) and for offsets into structures which are expected to be
-   (more or less) constant.  The partial symbol case should go away,
-   and only the constant case should remain.  That will let this
-   function complain more accurately.  A few special modes are allowed
-   without complaint for global variables (for instance, global
-   register values and thread-local values).
-
-   A location description containing no operations indicates that the
-   object is optimized out.  The return value is 0 for that case.
-   FIXME drow/2003-11-16: No callers check for this case any more; soon all
-   callers will only want a very basic result and this can become a
-   complaint.
-
-   Note that stack[0] is unused except as a default error return.  */
-
-static CORE_ADDR
-decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
-{
-  struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
-  size_t i;
-  size_t size = blk->size;
-  const gdb_byte *data = blk->data;
-  CORE_ADDR stack[64];
-  int stacki;
-  unsigned int bytes_read, unsnd;
-  gdb_byte op;
-
-  i = 0;
-  stacki = 0;
-  stack[stacki] = 0;
-  stack[++stacki] = 0;
-
-  while (i < size)
-    {
-      op = data[i++];
-      switch (op)
-	{
-	case DW_OP_lit0:
-	case DW_OP_lit1:
-	case DW_OP_lit2:
-	case DW_OP_lit3:
-	case DW_OP_lit4:
-	case DW_OP_lit5:
-	case DW_OP_lit6:
-	case DW_OP_lit7:
-	case DW_OP_lit8:
-	case DW_OP_lit9:
-	case DW_OP_lit10:
-	case DW_OP_lit11:
-	case DW_OP_lit12:
-	case DW_OP_lit13:
-	case DW_OP_lit14:
-	case DW_OP_lit15:
-	case DW_OP_lit16:
-	case DW_OP_lit17:
-	case DW_OP_lit18:
-	case DW_OP_lit19:
-	case DW_OP_lit20:
-	case DW_OP_lit21:
-	case DW_OP_lit22:
-	case DW_OP_lit23:
-	case DW_OP_lit24:
-	case DW_OP_lit25:
-	case DW_OP_lit26:
-	case DW_OP_lit27:
-	case DW_OP_lit28:
-	case DW_OP_lit29:
-	case DW_OP_lit30:
-	case DW_OP_lit31:
-	  stack[++stacki] = op - DW_OP_lit0;
-	  break;
-
-	case DW_OP_reg0:
-	case DW_OP_reg1:
-	case DW_OP_reg2:
-	case DW_OP_reg3:
-	case DW_OP_reg4:
-	case DW_OP_reg5:
-	case DW_OP_reg6:
-	case DW_OP_reg7:
-	case DW_OP_reg8:
-	case DW_OP_reg9:
-	case DW_OP_reg10:
-	case DW_OP_reg11:
-	case DW_OP_reg12:
-	case DW_OP_reg13:
-	case DW_OP_reg14:
-	case DW_OP_reg15:
-	case DW_OP_reg16:
-	case DW_OP_reg17:
-	case DW_OP_reg18:
-	case DW_OP_reg19:
-	case DW_OP_reg20:
-	case DW_OP_reg21:
-	case DW_OP_reg22:
-	case DW_OP_reg23:
-	case DW_OP_reg24:
-	case DW_OP_reg25:
-	case DW_OP_reg26:
-	case DW_OP_reg27:
-	case DW_OP_reg28:
-	case DW_OP_reg29:
-	case DW_OP_reg30:
-	case DW_OP_reg31:
-	  stack[++stacki] = op - DW_OP_reg0;
-	  if (i < size)
-	    dwarf2_complex_location_expr_complaint ();
-	  break;
-
-	case DW_OP_regx:
-	  unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
-	  i += bytes_read;
-	  stack[++stacki] = unsnd;
-	  if (i < size)
-	    dwarf2_complex_location_expr_complaint ();
-	  break;
-
-	case DW_OP_addr:
-	  stack[++stacki] = read_address (objfile->obfd, &data[i],
-					  cu, &bytes_read);
-	  i += bytes_read;
-	  break;
-
-	case DW_OP_const1u:
-	  stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
-	  i += 1;
-	  break;
-
-	case DW_OP_const1s:
-	  stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
-	  i += 1;
-	  break;
-
-	case DW_OP_const2u:
-	  stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
-	  i += 2;
-	  break;
-
-	case DW_OP_const2s:
-	  stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
-	  i += 2;
-	  break;
-
-	case DW_OP_const4u:
-	  stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
-	  i += 4;
-	  break;
-
-	case DW_OP_const4s:
-	  stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
-	  i += 4;
-	  break;
-
-	case DW_OP_const8u:
-	  stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
-	  i += 8;
-	  break;
-
-	case DW_OP_constu:
-	  stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
-						  &bytes_read);
-	  i += bytes_read;
-	  break;
-
-	case DW_OP_consts:
-	  stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
-	  i += bytes_read;
-	  break;
-
-	case DW_OP_dup:
-	  stack[stacki + 1] = stack[stacki];
-	  stacki++;
-	  break;
-
-	case DW_OP_plus:
-	  stack[stacki - 1] += stack[stacki];
-	  stacki--;
-	  break;
-
-	case DW_OP_plus_uconst:
-	  stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
-						 &bytes_read);
-	  i += bytes_read;
-	  break;
-
-	case DW_OP_minus:
-	  stack[stacki - 1] -= stack[stacki];
-	  stacki--;
-	  break;
-
-	case DW_OP_deref:
-	  /* If we're not the last op, then we definitely can't encode
-	     this using GDB's address_class enum.  This is valid for partial
-	     global symbols, although the variable's address will be bogus
-	     in the psymtab.  */
-	  if (i < size)
-	    dwarf2_complex_location_expr_complaint ();
-	  break;
-
-        case DW_OP_GNU_push_tls_address:
-	case DW_OP_form_tls_address:
-	  /* The top of the stack has the offset from the beginning
-	     of the thread control block at which the variable is located.  */
-	  /* Nothing should follow this operator, so the top of stack would
-	     be returned.  */
-	  /* This is valid for partial global symbols, but the variable's
-	     address will be bogus in the psymtab.  Make it always at least
-	     non-zero to not look as a variable garbage collected by linker
-	     which have DW_OP_addr 0.  */
-	  if (i < size)
-	    dwarf2_complex_location_expr_complaint ();
-	  stack[stacki]++;
-          break;
-
-	case DW_OP_GNU_uninit:
-	  break;
-
-	case DW_OP_addrx:
-	case DW_OP_GNU_addr_index:
-	case DW_OP_GNU_const_index:
-	  stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
-							 &bytes_read);
-	  i += bytes_read;
-	  break;
-
-	default:
-	  {
-	    const char *name = get_DW_OP_name (op);
-
-	    if (name)
-	      complaint (_("unsupported stack op: '%s'"),
-			 name);
-	    else
-	      complaint (_("unsupported stack op: '%02x'"),
-			 op);
-	  }
-
-	  return (stack[stacki]);
-	}
-
-      /* Enforce maximum stack depth of SIZE-1 to avoid writing
-         outside of the allocated space.  Also enforce minimum>0.  */
-      if (stacki >= ARRAY_SIZE (stack) - 1)
-	{
-	  complaint (_("location description stack overflow"));
-	  return 0;
-	}
-
-      if (stacki <= 0)
-	{
-	  complaint (_("location description stack underflow"));
-	  return 0;
-	}
-    }
-  return (stack[stacki]);
-}
-
-/* memory allocation interface */
-
-static struct dwarf_block *
-dwarf_alloc_block (struct dwarf2_cu *cu)
-{
-  return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
-}
-
-static struct die_info *
-dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
-{
-  struct die_info *die;
-  size_t size = sizeof (struct die_info);
-
-  if (num_attrs > 1)
-    size += (num_attrs - 1) * sizeof (struct attribute);
-
-  die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
-  memset (die, 0, sizeof (struct die_info));
-  return (die);
-}
-
-
-/* Macro support.  */
-
-/* Return file name relative to the compilation directory of file number I in
-   *LH's file name table.  The result is allocated using xmalloc; the caller is
-   responsible for freeing it.  */
-
-static char *
-file_file_name (int file, struct line_header *lh)
-{
-  /* Is the file number a valid index into the line header's file name
-     table?  Remember that file numbers start with one, not zero.  */
-  if (lh->is_valid_file_index (file))
-    {
-      const file_entry *fe = lh->file_name_at (file);
-
-      if (!IS_ABSOLUTE_PATH (fe->name))
-	{
-	  const char *dir = fe->include_dir (lh);
-	  if (dir != NULL)
-	    return concat (dir, SLASH_STRING, fe->name, (char *) NULL);
-	}
-      return xstrdup (fe->name);
-    }
-  else
-    {
-      /* The compiler produced a bogus file number.  We can at least
-         record the macro definitions made in the file, even if we
-         won't be able to find the file by name.  */
-      char fake_name[80];
-
-      xsnprintf (fake_name, sizeof (fake_name),
-		 "<bad macro file number %d>", file);
-
-      complaint (_("bad file number in macro information (%d)"),
-                 file);
-
-      return xstrdup (fake_name);
-    }
-}
-
-/* Return the full name of file number I in *LH's file name table.
-   Use COMP_DIR as the name of the current directory of the
-   compilation.  The result is allocated using xmalloc; the caller is
-   responsible for freeing it.  */
-static char *
-file_full_name (int file, struct line_header *lh, const char *comp_dir)
-{
-  /* Is the file number a valid index into the line header's file name
-     table?  Remember that file numbers start with one, not zero.  */
-  if (lh->is_valid_file_index (file))
-    {
-      char *relative = file_file_name (file, lh);
-
-      if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
-	return relative;
-      return reconcat (relative, comp_dir, SLASH_STRING,
-		       relative, (char *) NULL);
-    }
-  else
-    return file_file_name (file, lh);
-}
-
-
-static struct macro_source_file *
-macro_start_file (struct dwarf2_cu *cu,
-		  int file, int line,
-                  struct macro_source_file *current_file,
-                  struct line_header *lh)
-{
-  /* File name relative to the compilation directory of this source file.  */
-  char *file_name = file_file_name (file, lh);
-
-  if (! current_file)
-    {
-      /* Note: We don't create a macro table for this compilation unit
-	 at all until we actually get a filename.  */
-      struct macro_table *macro_table = cu->get_builder ()->get_macro_table ();
-
-      /* If we have no current file, then this must be the start_file
-	 directive for the compilation unit's main source file.  */
-      current_file = macro_set_main (macro_table, file_name);
-      macro_define_special (macro_table);
-    }
-  else
-    current_file = macro_include (current_file, line, file_name);
-
-  xfree (file_name);
-
-  return current_file;
-}
-
-static const char *
-consume_improper_spaces (const char *p, const char *body)
-{
-  if (*p == ' ')
-    {
-      complaint (_("macro definition contains spaces "
-		   "in formal argument list:\n`%s'"),
-		 body);
-
-      while (*p == ' ')
-        p++;
-    }
-
-  return p;
-}
-
-
-static void
-parse_macro_definition (struct macro_source_file *file, int line,
-                        const char *body)
-{
-  const char *p;
-
-  /* The body string takes one of two forms.  For object-like macro
-     definitions, it should be:
-
-        <macro name> " " <definition>
-
-     For function-like macro definitions, it should be:
-
-        <macro name> "() " <definition>
-     or
-        <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
-
-     Spaces may appear only where explicitly indicated, and in the
-     <definition>.
-
-     The Dwarf 2 spec says that an object-like macro's name is always
-     followed by a space, but versions of GCC around March 2002 omit
-     the space when the macro's definition is the empty string.
-
-     The Dwarf 2 spec says that there should be no spaces between the
-     formal arguments in a function-like macro's formal argument list,
-     but versions of GCC around March 2002 include spaces after the
-     commas.  */
-
-
-  /* Find the extent of the macro name.  The macro name is terminated
-     by either a space or null character (for an object-like macro) or
-     an opening paren (for a function-like macro).  */
-  for (p = body; *p; p++)
-    if (*p == ' ' || *p == '(')
-      break;
-
-  if (*p == ' ' || *p == '\0')
-    {
-      /* It's an object-like macro.  */
-      int name_len = p - body;
-      char *name = savestring (body, name_len);
-      const char *replacement;
-
-      if (*p == ' ')
-        replacement = body + name_len + 1;
-      else
-        {
-	  dwarf2_macro_malformed_definition_complaint (body);
-          replacement = body + name_len;
-        }
-
-      macro_define_object (file, line, name, replacement);
-
-      xfree (name);
-    }
-  else if (*p == '(')
-    {
-      /* It's a function-like macro.  */
-      char *name = savestring (body, p - body);
-      int argc = 0;
-      int argv_size = 1;
-      char **argv = XNEWVEC (char *, argv_size);
-
-      p++;
-
-      p = consume_improper_spaces (p, body);
-
-      /* Parse the formal argument list.  */
-      while (*p && *p != ')')
-        {
-          /* Find the extent of the current argument name.  */
-          const char *arg_start = p;
-
-          while (*p && *p != ',' && *p != ')' && *p != ' ')
-            p++;
-
-          if (! *p || p == arg_start)
-	    dwarf2_macro_malformed_definition_complaint (body);
-          else
-            {
-              /* Make sure argv has room for the new argument.  */
-              if (argc >= argv_size)
-                {
-                  argv_size *= 2;
-                  argv = XRESIZEVEC (char *, argv, argv_size);
-                }
-
-              argv[argc++] = savestring (arg_start, p - arg_start);
-            }
-
-          p = consume_improper_spaces (p, body);
-
-          /* Consume the comma, if present.  */
-          if (*p == ',')
-            {
-              p++;
-
-              p = consume_improper_spaces (p, body);
-            }
-        }
-
-      if (*p == ')')
-        {
-          p++;
-
-          if (*p == ' ')
-            /* Perfectly formed definition, no complaints.  */
-            macro_define_function (file, line, name,
-                                   argc, (const char **) argv,
-                                   p + 1);
-          else if (*p == '\0')
-            {
-              /* Complain, but do define it.  */
-	      dwarf2_macro_malformed_definition_complaint (body);
-              macro_define_function (file, line, name,
-                                     argc, (const char **) argv,
-                                     p);
-            }
-          else
-            /* Just complain.  */
-	    dwarf2_macro_malformed_definition_complaint (body);
-        }
-      else
-        /* Just complain.  */
-	dwarf2_macro_malformed_definition_complaint (body);
-
-      xfree (name);
-      {
-        int i;
-
-        for (i = 0; i < argc; i++)
-          xfree (argv[i]);
-      }
-      xfree (argv);
-    }
-  else
-    dwarf2_macro_malformed_definition_complaint (body);
-}
-
-/* Skip some bytes from BYTES according to the form given in FORM.
-   Returns the new pointer.  */
-
-static const gdb_byte *
-skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
-		 enum dwarf_form form,
-		 unsigned int offset_size,
-		 struct dwarf2_section_info *section)
-{
-  unsigned int bytes_read;
-
-  switch (form)
-    {
-    case DW_FORM_data1:
-    case DW_FORM_flag:
-      ++bytes;
-      break;
-
-    case DW_FORM_data2:
-      bytes += 2;
-      break;
-
-    case DW_FORM_data4:
-      bytes += 4;
-      break;
-
-    case DW_FORM_data8:
-      bytes += 8;
-      break;
-
-    case DW_FORM_data16:
-      bytes += 16;
-      break;
-
-    case DW_FORM_string:
-      read_direct_string (abfd, bytes, &bytes_read);
-      bytes += bytes_read;
-      break;
-
-    case DW_FORM_sec_offset:
-    case DW_FORM_strp:
-    case DW_FORM_GNU_strp_alt:
-      bytes += offset_size;
-      break;
-
-    case DW_FORM_block:
-      bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
-      bytes += bytes_read;
-      break;
-
-    case DW_FORM_block1:
-      bytes += 1 + read_1_byte (abfd, bytes);
-      break;
-    case DW_FORM_block2:
-      bytes += 2 + read_2_bytes (abfd, bytes);
-      break;
-    case DW_FORM_block4:
-      bytes += 4 + read_4_bytes (abfd, bytes);
-      break;
-
-    case DW_FORM_addrx:
-    case DW_FORM_sdata:
-    case DW_FORM_strx:
-    case DW_FORM_udata:
-    case DW_FORM_GNU_addr_index:
-    case DW_FORM_GNU_str_index:
-      bytes = gdb_skip_leb128 (bytes, buffer_end);
-      if (bytes == NULL)
-	{
-	  dwarf2_section_buffer_overflow_complaint (section);
-	  return NULL;
-	}
-      break;
-
-    case DW_FORM_implicit_const:
-      break;
-
-    default:
-      {
-	complaint (_("invalid form 0x%x in `%s'"),
-		   form, get_section_name (section));
-	return NULL;
-      }
-    }
-
-  return bytes;
-}
-
-/* A helper for dwarf_decode_macros that handles skipping an unknown
-   opcode.  Returns an updated pointer to the macro data buffer; or,
-   on error, issues a complaint and returns NULL.  */
-
-static const gdb_byte *
-skip_unknown_opcode (unsigned int opcode,
-		     const gdb_byte **opcode_definitions,
-		     const gdb_byte *mac_ptr, const gdb_byte *mac_end,
-		     bfd *abfd,
-		     unsigned int offset_size,
-		     struct dwarf2_section_info *section)
-{
-  unsigned int bytes_read, i;
-  unsigned long arg;
-  const gdb_byte *defn;
-
-  if (opcode_definitions[opcode] == NULL)
-    {
-      complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
-		 opcode);
-      return NULL;
-    }
-
-  defn = opcode_definitions[opcode];
-  arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
-  defn += bytes_read;
-
-  for (i = 0; i < arg; ++i)
-    {
-      mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
-				 (enum dwarf_form) defn[i], offset_size,
-				 section);
-      if (mac_ptr == NULL)
-	{
-	  /* skip_form_bytes already issued the complaint.  */
-	  return NULL;
-	}
-    }
-
-  return mac_ptr;
-}
-
-/* A helper function which parses the header of a macro section.
-   If the macro section is the extended (for now called "GNU") type,
-   then this updates *OFFSET_SIZE.  Returns a pointer to just after
-   the header, or issues a complaint and returns NULL on error.  */
-
-static const gdb_byte *
-dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
-			  bfd *abfd,
-			  const gdb_byte *mac_ptr,
-			  unsigned int *offset_size,
-			  int section_is_gnu)
-{
-  memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
-
-  if (section_is_gnu)
-    {
-      unsigned int version, flags;
-
-      version = read_2_bytes (abfd, mac_ptr);
-      if (version != 4 && version != 5)
-	{
-	  complaint (_("unrecognized version `%d' in .debug_macro section"),
-		     version);
-	  return NULL;
-	}
-      mac_ptr += 2;
-
-      flags = read_1_byte (abfd, mac_ptr);
-      ++mac_ptr;
-      *offset_size = (flags & 1) ? 8 : 4;
-
-      if ((flags & 2) != 0)
-	/* We don't need the line table offset.  */
-	mac_ptr += *offset_size;
-
-      /* Vendor opcode descriptions.  */
-      if ((flags & 4) != 0)
-	{
-	  unsigned int i, count;
-
-	  count = read_1_byte (abfd, mac_ptr);
-	  ++mac_ptr;
-	  for (i = 0; i < count; ++i)
-	    {
-	      unsigned int opcode, bytes_read;
-	      unsigned long arg;
-
-	      opcode = read_1_byte (abfd, mac_ptr);
-	      ++mac_ptr;
-	      opcode_definitions[opcode] = mac_ptr;
-	      arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
-	      mac_ptr += bytes_read;
-	      mac_ptr += arg;
-	    }
-	}
-    }
-
-  return mac_ptr;
-}
-
-/* A helper for dwarf_decode_macros that handles the GNU extensions,
-   including DW_MACRO_import.  */
-
-static void
-dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
-			  bfd *abfd,
-			  const gdb_byte *mac_ptr, const gdb_byte *mac_end,
-			  struct macro_source_file *current_file,
-			  struct line_header *lh,
-			  struct dwarf2_section_info *section,
-			  int section_is_gnu, int section_is_dwz,
-			  unsigned int offset_size,
-			  htab_t include_hash)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  enum dwarf_macro_record_type macinfo_type;
-  int at_commandline;
-  const gdb_byte *opcode_definitions[256];
-
-  mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
-				      &offset_size, section_is_gnu);
-  if (mac_ptr == NULL)
-    {
-      /* We already issued a complaint.  */
-      return;
-    }
-
-  /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
-     GDB is still reading the definitions from command line.  First
-     DW_MACINFO_start_file will need to be ignored as it was already executed
-     to create CURRENT_FILE for the main source holding also the command line
-     definitions.  On first met DW_MACINFO_start_file this flag is reset to
-     normally execute all the remaining DW_MACINFO_start_file macinfos.  */
-
-  at_commandline = 1;
-
-  do
-    {
-      /* Do we at least have room for a macinfo type byte?  */
-      if (mac_ptr >= mac_end)
-	{
-	  dwarf2_section_buffer_overflow_complaint (section);
-	  break;
-	}
-
-      macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
-      mac_ptr++;
-
-      /* Note that we rely on the fact that the corresponding GNU and
-	 DWARF constants are the same.  */
-      DIAGNOSTIC_PUSH
-      DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
-      switch (macinfo_type)
-	{
-	  /* A zero macinfo type indicates the end of the macro
-	     information.  */
-	case 0:
-	  break;
-
-        case DW_MACRO_define:
-        case DW_MACRO_undef:
-	case DW_MACRO_define_strp:
-	case DW_MACRO_undef_strp:
-	case DW_MACRO_define_sup:
-	case DW_MACRO_undef_sup:
-          {
-            unsigned int bytes_read;
-            int line;
-            const char *body;
-	    int is_define;
-
-	    line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
-	    mac_ptr += bytes_read;
-
-	    if (macinfo_type == DW_MACRO_define
-		|| macinfo_type == DW_MACRO_undef)
-	      {
-		body = read_direct_string (abfd, mac_ptr, &bytes_read);
-		mac_ptr += bytes_read;
-	      }
-	    else
-	      {
-		LONGEST str_offset;
-
-		str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
-		mac_ptr += offset_size;
-
-		if (macinfo_type == DW_MACRO_define_sup
-		    || macinfo_type == DW_MACRO_undef_sup
-		    || section_is_dwz)
-		  {
-		    struct dwz_file *dwz
-		      = dwarf2_get_dwz_file (dwarf2_per_objfile);
-
-		    body = read_indirect_string_from_dwz (objfile,
-							  dwz, str_offset);
-		  }
-		else
-		  body = read_indirect_string_at_offset (dwarf2_per_objfile,
-							 abfd, str_offset);
-	      }
-
-	    is_define = (macinfo_type == DW_MACRO_define
-			 || macinfo_type == DW_MACRO_define_strp
-			 || macinfo_type == DW_MACRO_define_sup);
-            if (! current_file)
-	      {
-		/* DWARF violation as no main source is present.  */
-		complaint (_("debug info with no main source gives macro %s "
-			     "on line %d: %s"),
-			   is_define ? _("definition") : _("undefinition"),
-			   line, body);
-		break;
-	      }
-	    if ((line == 0 && !at_commandline)
-		|| (line != 0 && at_commandline))
-	      complaint (_("debug info gives %s macro %s with %s line %d: %s"),
-			 at_commandline ? _("command-line") : _("in-file"),
-			 is_define ? _("definition") : _("undefinition"),
-			 line == 0 ? _("zero") : _("non-zero"), line, body);
-
-	    if (body == NULL)
-	      {
-		/* Fedora's rpm-build's "debugedit" binary
-		   corrupted .debug_macro sections.
-
-		   For more info, see
-		   https://bugzilla.redhat.com/show_bug.cgi?id=1708786 */
-		complaint (_("debug info gives %s invalid macro %s "
-			     "without body (corrupted?) at line %d "
-			     "on file %s"),
-			   at_commandline ? _("command-line") : _("in-file"),
-			   is_define ? _("definition") : _("undefinition"),
-			   line, current_file->filename);
-	      }
-	    else if (is_define)
-	      parse_macro_definition (current_file, line, body);
-	    else
-	      {
-		gdb_assert (macinfo_type == DW_MACRO_undef
-			    || macinfo_type == DW_MACRO_undef_strp
-			    || macinfo_type == DW_MACRO_undef_sup);
-		macro_undef (current_file, line, body);
-	      }
-          }
-          break;
-
-        case DW_MACRO_start_file:
-          {
-            unsigned int bytes_read;
-            int line, file;
-
-            line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
-            mac_ptr += bytes_read;
-            file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
-            mac_ptr += bytes_read;
-
-	    if ((line == 0 && !at_commandline)
-		|| (line != 0 && at_commandline))
-	      complaint (_("debug info gives source %d included "
-			   "from %s at %s line %d"),
-			 file, at_commandline ? _("command-line") : _("file"),
-			 line == 0 ? _("zero") : _("non-zero"), line);
-
-	    if (at_commandline)
-	      {
-		/* This DW_MACRO_start_file was executed in the
-		   pass one.  */
-		at_commandline = 0;
-	      }
-	    else
-	      current_file = macro_start_file (cu, file, line, current_file,
-					       lh);
-          }
-          break;
-
-        case DW_MACRO_end_file:
-          if (! current_file)
-	    complaint (_("macro debug info has an unmatched "
-			 "`close_file' directive"));
-          else
-            {
-              current_file = current_file->included_by;
-              if (! current_file)
-                {
-                  enum dwarf_macro_record_type next_type;
-
-                  /* GCC circa March 2002 doesn't produce the zero
-                     type byte marking the end of the compilation
-                     unit.  Complain if it's not there, but exit no
-                     matter what.  */
-
-                  /* Do we at least have room for a macinfo type byte?  */
-                  if (mac_ptr >= mac_end)
-                    {
-		      dwarf2_section_buffer_overflow_complaint (section);
-                      return;
-                    }
-
-                  /* We don't increment mac_ptr here, so this is just
-                     a look-ahead.  */
-                  next_type
-		    = (enum dwarf_macro_record_type) read_1_byte (abfd,
-								  mac_ptr);
-                  if (next_type != 0)
-		    complaint (_("no terminating 0-type entry for "
-				 "macros in `.debug_macinfo' section"));
-
-                  return;
-                }
-            }
-          break;
-
-	case DW_MACRO_import:
-	case DW_MACRO_import_sup:
-	  {
-	    LONGEST offset;
-	    void **slot;
-	    bfd *include_bfd = abfd;
-	    struct dwarf2_section_info *include_section = section;
-	    const gdb_byte *include_mac_end = mac_end;
-	    int is_dwz = section_is_dwz;
-	    const gdb_byte *new_mac_ptr;
-
-	    offset = read_offset_1 (abfd, mac_ptr, offset_size);
-	    mac_ptr += offset_size;
-
-	    if (macinfo_type == DW_MACRO_import_sup)
-	      {
-		struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
-
-		dwarf2_read_section (objfile, &dwz->macro);
-
-		include_section = &dwz->macro;
-		include_bfd = get_section_bfd_owner (include_section);
-		include_mac_end = dwz->macro.buffer + dwz->macro.size;
-		is_dwz = 1;
-	      }
-
-	    new_mac_ptr = include_section->buffer + offset;
-	    slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
-
-	    if (*slot != NULL)
-	      {
-		/* This has actually happened; see
-		   http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
-		complaint (_("recursive DW_MACRO_import in "
-			     ".debug_macro section"));
-	      }
-	    else
-	      {
-		*slot = (void *) new_mac_ptr;
-
-		dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
-					  include_mac_end, current_file, lh,
-					  section, section_is_gnu, is_dwz,
-					  offset_size, include_hash);
-
-		htab_remove_elt (include_hash, (void *) new_mac_ptr);
-	      }
-	  }
-	  break;
-
-        case DW_MACINFO_vendor_ext:
-	  if (!section_is_gnu)
-	    {
-	      unsigned int bytes_read;
-
-	      /* This reads the constant, but since we don't recognize
-		 any vendor extensions, we ignore it.  */
-	      read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
-	      mac_ptr += bytes_read;
-	      read_direct_string (abfd, mac_ptr, &bytes_read);
-	      mac_ptr += bytes_read;
-
-	      /* We don't recognize any vendor extensions.  */
-	      break;
-	    }
-	  /* FALLTHROUGH */
-
-	default:
-	  mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
-					 mac_ptr, mac_end, abfd, offset_size,
-					 section);
-	  if (mac_ptr == NULL)
-	    return;
-	  break;
-        }
-      DIAGNOSTIC_POP
-    } while (macinfo_type != 0);
-}
-
-static void
-dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
-                     int section_is_gnu)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct line_header *lh = cu->line_header;
-  bfd *abfd;
-  const gdb_byte *mac_ptr, *mac_end;
-  struct macro_source_file *current_file = 0;
-  enum dwarf_macro_record_type macinfo_type;
-  unsigned int offset_size = cu->header.offset_size;
-  const gdb_byte *opcode_definitions[256];
-  void **slot;
-  struct dwarf2_section_info *section;
-  const char *section_name;
-
-  if (cu->dwo_unit != NULL)
-    {
-      if (section_is_gnu)
-	{
-	  section = &cu->dwo_unit->dwo_file->sections.macro;
-	  section_name = ".debug_macro.dwo";
-	}
-      else
-	{
-	  section = &cu->dwo_unit->dwo_file->sections.macinfo;
-	  section_name = ".debug_macinfo.dwo";
-	}
-    }
-  else
-    {
-      if (section_is_gnu)
-	{
-	  section = &dwarf2_per_objfile->macro;
-	  section_name = ".debug_macro";
-	}
-      else
-	{
-	  section = &dwarf2_per_objfile->macinfo;
-	  section_name = ".debug_macinfo";
-	}
-    }
-
-  dwarf2_read_section (objfile, section);
-  if (section->buffer == NULL)
-    {
-      complaint (_("missing %s section"), section_name);
-      return;
-    }
-  abfd = get_section_bfd_owner (section);
-
-  /* First pass: Find the name of the base filename.
-     This filename is needed in order to process all macros whose definition
-     (or undefinition) comes from the command line.  These macros are defined
-     before the first DW_MACINFO_start_file entry, and yet still need to be
-     associated to the base file.
-
-     To determine the base file name, we scan the macro definitions until we
-     reach the first DW_MACINFO_start_file entry.  We then initialize
-     CURRENT_FILE accordingly so that any macro definition found before the
-     first DW_MACINFO_start_file can still be associated to the base file.  */
-
-  mac_ptr = section->buffer + offset;
-  mac_end = section->buffer + section->size;
-
-  mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
-				      &offset_size, section_is_gnu);
-  if (mac_ptr == NULL)
-    {
-      /* We already issued a complaint.  */
-      return;
-    }
-
-  do
-    {
-      /* Do we at least have room for a macinfo type byte?  */
-      if (mac_ptr >= mac_end)
-        {
-	  /* Complaint is printed during the second pass as GDB will probably
-	     stop the first pass earlier upon finding
-	     DW_MACINFO_start_file.  */
-	  break;
-        }
-
-      macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
-      mac_ptr++;
-
-      /* Note that we rely on the fact that the corresponding GNU and
-	 DWARF constants are the same.  */
-      DIAGNOSTIC_PUSH
-      DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
-      switch (macinfo_type)
-        {
-          /* A zero macinfo type indicates the end of the macro
-             information.  */
-        case 0:
-	  break;
-
-	case DW_MACRO_define:
-	case DW_MACRO_undef:
-	  /* Only skip the data by MAC_PTR.  */
-	  {
-	    unsigned int bytes_read;
-
-	    read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
-	    mac_ptr += bytes_read;
-	    read_direct_string (abfd, mac_ptr, &bytes_read);
-	    mac_ptr += bytes_read;
-	  }
-	  break;
-
-	case DW_MACRO_start_file:
-	  {
-	    unsigned int bytes_read;
-	    int line, file;
-
-	    line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
-	    mac_ptr += bytes_read;
-	    file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
-	    mac_ptr += bytes_read;
-
-	    current_file = macro_start_file (cu, file, line, current_file, lh);
-	  }
-	  break;
-
-	case DW_MACRO_end_file:
-	  /* No data to skip by MAC_PTR.  */
-	  break;
-
-	case DW_MACRO_define_strp:
-	case DW_MACRO_undef_strp:
-	case DW_MACRO_define_sup:
-	case DW_MACRO_undef_sup:
-	  {
-	    unsigned int bytes_read;
-
-	    read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
-	    mac_ptr += bytes_read;
-	    mac_ptr += offset_size;
-	  }
-	  break;
-
-	case DW_MACRO_import:
-	case DW_MACRO_import_sup:
-	  /* Note that, according to the spec, a transparent include
-	     chain cannot call DW_MACRO_start_file.  So, we can just
-	     skip this opcode.  */
-	  mac_ptr += offset_size;
-	  break;
-
-	case DW_MACINFO_vendor_ext:
-	  /* Only skip the data by MAC_PTR.  */
-	  if (!section_is_gnu)
-	    {
-	      unsigned int bytes_read;
-
-	      read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
-	      mac_ptr += bytes_read;
-	      read_direct_string (abfd, mac_ptr, &bytes_read);
-	      mac_ptr += bytes_read;
-	    }
-	  /* FALLTHROUGH */
-
-	default:
-	  mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
-					 mac_ptr, mac_end, abfd, offset_size,
-					 section);
-	  if (mac_ptr == NULL)
-	    return;
-	  break;
-	}
-      DIAGNOSTIC_POP
-    } while (macinfo_type != 0 && current_file == NULL);
-
-  /* Second pass: Process all entries.
-
-     Use the AT_COMMAND_LINE flag to determine whether we are still processing
-     command-line macro definitions/undefinitions.  This flag is unset when we
-     reach the first DW_MACINFO_start_file entry.  */
-
-  htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
-					   htab_eq_pointer,
-					   NULL, xcalloc, xfree));
-  mac_ptr = section->buffer + offset;
-  slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
-  *slot = (void *) mac_ptr;
-  dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
-			    current_file, lh, section,
-			    section_is_gnu, 0, offset_size,
-			    include_hash.get ());
-}
-
-/* Check if the attribute's form is a DW_FORM_block*
-   if so return true else false.  */
-
-static int
-attr_form_is_block (const struct attribute *attr)
-{
-  return (attr == NULL ? 0 :
-      attr->form == DW_FORM_block1
-      || attr->form == DW_FORM_block2
-      || attr->form == DW_FORM_block4
-      || attr->form == DW_FORM_block
-      || attr->form == DW_FORM_exprloc);
-}
-
-/* Return non-zero if ATTR's value is a section offset --- classes
-   lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
-   You may use DW_UNSND (attr) to retrieve such offsets.
-
-   Section 7.5.4, "Attribute Encodings", explains that no attribute
-   may have a value that belongs to more than one of these classes; it
-   would be ambiguous if we did, because we use the same forms for all
-   of them.  */
-
-static int
-attr_form_is_section_offset (const struct attribute *attr)
-{
-  return (attr->form == DW_FORM_data4
-          || attr->form == DW_FORM_data8
-	  || attr->form == DW_FORM_sec_offset);
-}
-
-/* Return non-zero if ATTR's value falls in the 'constant' class, or
-   zero otherwise.  When this function returns true, you can apply
-   dwarf2_get_attr_constant_value to it.
-
-   However, note that for some attributes you must check
-   attr_form_is_section_offset before using this test.  DW_FORM_data4
-   and DW_FORM_data8 are members of both the constant class, and of
-   the classes that contain offsets into other debug sections
-   (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
-   that, if an attribute's can be either a constant or one of the
-   section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
-   taken as section offsets, not constants.
-
-   DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
-   cannot handle that.  */
-
-static int
-attr_form_is_constant (const struct attribute *attr)
-{
-  switch (attr->form)
-    {
-    case DW_FORM_sdata:
-    case DW_FORM_udata:
-    case DW_FORM_data1:
-    case DW_FORM_data2:
-    case DW_FORM_data4:
-    case DW_FORM_data8:
-    case DW_FORM_implicit_const:
-      return 1;
-    default:
-      return 0;
-    }
-}
-
-
-/* DW_ADDR is always stored already as sect_offset; despite for the forms
-   besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
-
-static int
-attr_form_is_ref (const struct attribute *attr)
-{
-  switch (attr->form)
-    {
-    case DW_FORM_ref_addr:
-    case DW_FORM_ref1:
-    case DW_FORM_ref2:
-    case DW_FORM_ref4:
-    case DW_FORM_ref8:
-    case DW_FORM_ref_udata:
-    case DW_FORM_GNU_ref_alt:
-      return 1;
-    default:
-      return 0;
-    }
-}
-
-/* Return the .debug_loc section to use for CU.
-   For DWO files use .debug_loc.dwo.  */
-
-static struct dwarf2_section_info *
-cu_debug_loc_section (struct dwarf2_cu *cu)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-
-  if (cu->dwo_unit)
-    {
-      struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
-
-      return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
-    }
-  return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
-				  : &dwarf2_per_objfile->loc);
-}
-
-/* A helper function that fills in a dwarf2_loclist_baton.  */
-
-static void
-fill_in_loclist_baton (struct dwarf2_cu *cu,
-		       struct dwarf2_loclist_baton *baton,
-		       const struct attribute *attr)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct dwarf2_section_info *section = cu_debug_loc_section (cu);
-
-  dwarf2_read_section (dwarf2_per_objfile->objfile, section);
-
-  baton->per_cu = cu->per_cu;
-  gdb_assert (baton->per_cu);
-  /* We don't know how long the location list is, but make sure we
-     don't run off the edge of the section.  */
-  baton->size = section->size - DW_UNSND (attr);
-  baton->data = section->buffer + DW_UNSND (attr);
-  baton->base_address = cu->base_address;
-  baton->from_dwo = cu->dwo_unit != NULL;
-}
-
-static void
-dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
-			     struct dwarf2_cu *cu, int is_block)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct dwarf2_section_info *section = cu_debug_loc_section (cu);
-
-  if (attr_form_is_section_offset (attr)
-      /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
-	 the section.  If so, fall through to the complaint in the
-	 other branch.  */
-      && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
-    {
-      struct dwarf2_loclist_baton *baton;
-
-      baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
-
-      fill_in_loclist_baton (cu, baton, attr);
-
-      if (cu->base_known == 0)
-	complaint (_("Location list used without "
-		     "specifying the CU base address."));
-
-      SYMBOL_ACLASS_INDEX (sym) = (is_block
-				   ? dwarf2_loclist_block_index
-				   : dwarf2_loclist_index);
-      SYMBOL_LOCATION_BATON (sym) = baton;
-    }
-  else
-    {
-      struct dwarf2_locexpr_baton *baton;
-
-      baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
-      baton->per_cu = cu->per_cu;
-      gdb_assert (baton->per_cu);
-
-      if (attr_form_is_block (attr))
-	{
-	  /* Note that we're just copying the block's data pointer
-	     here, not the actual data.  We're still pointing into the
-	     info_buffer for SYM's objfile; right now we never release
-	     that buffer, but when we do clean up properly this may
-	     need to change.  */
-	  baton->size = DW_BLOCK (attr)->size;
-	  baton->data = DW_BLOCK (attr)->data;
-	}
-      else
-	{
-	  dwarf2_invalid_attrib_class_complaint ("location description",
-						 sym->natural_name ());
-	  baton->size = 0;
-	}
-
-      SYMBOL_ACLASS_INDEX (sym) = (is_block
-				   ? dwarf2_locexpr_block_index
-				   : dwarf2_locexpr_index);
-      SYMBOL_LOCATION_BATON (sym) = baton;
-    }
-}
-
-/* Return the OBJFILE associated with the compilation unit CU.  If CU
-   came from a separate debuginfo file, then the master objfile is
-   returned.  */
-
-struct objfile *
-dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
-{
-  struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
-
-  /* Return the master objfile, so that we can report and look up the
-     correct file containing this variable.  */
-  if (objfile->separate_debug_objfile_backlink)
-    objfile = objfile->separate_debug_objfile_backlink;
-
-  return objfile;
-}
-
-/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
-   (CU_HEADERP is unused in such case) or prepare a temporary copy at
-   CU_HEADERP first.  */
-
-static const struct comp_unit_head *
-per_cu_header_read_in (struct comp_unit_head *cu_headerp,
-		       struct dwarf2_per_cu_data *per_cu)
-{
-  const gdb_byte *info_ptr;
-
-  if (per_cu->cu)
-    return &per_cu->cu->header;
-
-  info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
-
-  memset (cu_headerp, 0, sizeof (*cu_headerp));
-  read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
-		       rcuh_kind::COMPILE);
-
-  return cu_headerp;
-}
-
-/* Return the address size given in the compilation unit header for CU.  */
-
-int
-dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
-{
-  struct comp_unit_head cu_header_local;
-  const struct comp_unit_head *cu_headerp;
-
-  cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
-
-  return cu_headerp->addr_size;
-}
-
-/* Return the offset size given in the compilation unit header for CU.  */
-
-int
-dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
-{
-  struct comp_unit_head cu_header_local;
-  const struct comp_unit_head *cu_headerp;
-
-  cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
-
-  return cu_headerp->offset_size;
-}
-
-/* See its dwarf2loc.h declaration.  */
-
-int
-dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
-{
-  struct comp_unit_head cu_header_local;
-  const struct comp_unit_head *cu_headerp;
-
-  cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
-
-  if (cu_headerp->version == 2)
-    return cu_headerp->addr_size;
-  else
-    return cu_headerp->offset_size;
-}
-
-/* Return the text offset of the CU.  The returned offset comes from
-   this CU's objfile.  If this objfile came from a separate debuginfo
-   file, then the offset may be different from the corresponding
-   offset in the parent objfile.  */
-
-CORE_ADDR
-dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
-{
-  struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
-
-  return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-}
-
-/* Return a type that is a generic pointer type, the size of which matches
-   the address size given in the compilation unit header for PER_CU.  */
-static struct type *
-dwarf2_per_cu_addr_type (struct dwarf2_per_cu_data *per_cu)
-{
-  struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
-  struct type *void_type = objfile_type (objfile)->builtin_void;
-  struct type *addr_type = lookup_pointer_type (void_type);
-  int addr_size = dwarf2_per_cu_addr_size (per_cu);
-
-  if (TYPE_LENGTH (addr_type) == addr_size)
-    return addr_type;
-
-  addr_type
-    = dwarf2_per_cu_addr_sized_int_type (per_cu, TYPE_UNSIGNED (addr_type));
-  return addr_type;
-}
-
-/* Return DWARF version number of PER_CU.  */
-
-short
-dwarf2_version (struct dwarf2_per_cu_data *per_cu)
-{
-  return per_cu->dwarf_version;
-}
-
-/* Locate the .debug_info compilation unit from CU's objfile which contains
-   the DIE at OFFSET.  Raises an error on failure.  */
-
-static struct dwarf2_per_cu_data *
-dwarf2_find_containing_comp_unit (sect_offset sect_off,
-				  unsigned int offset_in_dwz,
-				  struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  struct dwarf2_per_cu_data *this_cu;
-  int low, high;
-
-  low = 0;
-  high = dwarf2_per_objfile->all_comp_units.size () - 1;
-  while (high > low)
-    {
-      struct dwarf2_per_cu_data *mid_cu;
-      int mid = low + (high - low) / 2;
-
-      mid_cu = dwarf2_per_objfile->all_comp_units[mid];
-      if (mid_cu->is_dwz > offset_in_dwz
-	  || (mid_cu->is_dwz == offset_in_dwz
-	      && mid_cu->sect_off + mid_cu->length >= sect_off))
-	high = mid;
-      else
-	low = mid + 1;
-    }
-  gdb_assert (low == high);
-  this_cu = dwarf2_per_objfile->all_comp_units[low];
-  if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
-    {
-      if (low == 0 || this_cu->is_dwz != offset_in_dwz)
-	error (_("Dwarf Error: could not find partial DIE containing "
-	       "offset %s [in module %s]"),
-	       sect_offset_str (sect_off),
-	       bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
-
-      gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
-		  <= sect_off);
-      return dwarf2_per_objfile->all_comp_units[low-1];
-    }
-  else
-    {
-      if (low == dwarf2_per_objfile->all_comp_units.size () - 1
-	  && sect_off >= this_cu->sect_off + this_cu->length)
-	error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
-      gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
-      return this_cu;
-    }
-}
-
-/* Initialize dwarf2_cu CU, owned by PER_CU.  */
-
-dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
-  : per_cu (per_cu_),
-    mark (false),
-    has_loclist (false),
-    checked_producer (false),
-    producer_is_gxx_lt_4_6 (false),
-    producer_is_gcc_lt_4_3 (false),
-    producer_is_icc (false),
-    producer_is_icc_lt_14 (false),
-    producer_is_codewarrior (false),
-    processing_has_namespace_info (false)
-{
-  per_cu->cu = this;
-}
-
-/* Destroy a dwarf2_cu.  */
-
-dwarf2_cu::~dwarf2_cu ()
-{
-  per_cu->cu = NULL;
-}
-
-/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
-
-static void
-prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
-		       enum language pretend_language)
-{
-  struct attribute *attr;
-
-  /* Set the language we're debugging.  */
-  attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
-  if (attr != nullptr)
-    set_cu_language (DW_UNSND (attr), cu);
-  else
-    {
-      cu->language = pretend_language;
-      cu->language_defn = language_def (cu->language);
-    }
-
-  cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
-}
-
-/* Increase the age counter on each cached compilation unit, and free
-   any that are too old.  */
-
-static void
-age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  struct dwarf2_per_cu_data *per_cu, **last_chain;
-
-  dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
-  per_cu = dwarf2_per_objfile->read_in_chain;
-  while (per_cu != NULL)
-    {
-      per_cu->cu->last_used ++;
-      if (per_cu->cu->last_used <= dwarf_max_cache_age)
-	dwarf2_mark (per_cu->cu);
-      per_cu = per_cu->cu->read_in_chain;
-    }
-
-  per_cu = dwarf2_per_objfile->read_in_chain;
-  last_chain = &dwarf2_per_objfile->read_in_chain;
-  while (per_cu != NULL)
-    {
-      struct dwarf2_per_cu_data *next_cu;
-
-      next_cu = per_cu->cu->read_in_chain;
-
-      if (!per_cu->cu->mark)
-	{
-	  delete per_cu->cu;
-	  *last_chain = next_cu;
-	}
-      else
-	last_chain = &per_cu->cu->read_in_chain;
-
-      per_cu = next_cu;
-    }
-}
-
-/* Remove a single compilation unit from the cache.  */
-
-static void
-free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
-{
-  struct dwarf2_per_cu_data *per_cu, **last_chain;
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = target_per_cu->dwarf2_per_objfile;
-
-  per_cu = dwarf2_per_objfile->read_in_chain;
-  last_chain = &dwarf2_per_objfile->read_in_chain;
-  while (per_cu != NULL)
-    {
-      struct dwarf2_per_cu_data *next_cu;
-
-      next_cu = per_cu->cu->read_in_chain;
-
-      if (per_cu == target_per_cu)
-	{
-	  delete per_cu->cu;
-	  per_cu->cu = NULL;
-	  *last_chain = next_cu;
-	  break;
-	}
-      else
-	last_chain = &per_cu->cu->read_in_chain;
-
-      per_cu = next_cu;
-    }
-}
-
-/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
-   We store these in a hash table separate from the DIEs, and preserve them
-   when the DIEs are flushed out of cache.
-
-   The CU "per_cu" pointer is needed because offset alone is not enough to
-   uniquely identify the type.  A file may have multiple .debug_types sections,
-   or the type may come from a DWO file.  Furthermore, while it's more logical
-   to use per_cu->section+offset, with Fission the section with the data is in
-   the DWO file but we don't know that section at the point we need it.
-   We have to use something in dwarf2_per_cu_data (or the pointer to it)
-   because we can enter the lookup routine, get_die_type_at_offset, from
-   outside this file, and thus won't necessarily have PER_CU->cu.
-   Fortunately, PER_CU is stable for the life of the objfile.  */
-
-struct dwarf2_per_cu_offset_and_type
-{
-  const struct dwarf2_per_cu_data *per_cu;
-  sect_offset sect_off;
-  struct type *type;
-};
-
-/* Hash function for a dwarf2_per_cu_offset_and_type.  */
-
-static hashval_t
-per_cu_offset_and_type_hash (const void *item)
-{
-  const struct dwarf2_per_cu_offset_and_type *ofs
-    = (const struct dwarf2_per_cu_offset_and_type *) item;
-
-  return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
-}
-
-/* Equality function for a dwarf2_per_cu_offset_and_type.  */
-
-static int
-per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
-{
-  const struct dwarf2_per_cu_offset_and_type *ofs_lhs
-    = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
-  const struct dwarf2_per_cu_offset_and_type *ofs_rhs
-    = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
-
-  return (ofs_lhs->per_cu == ofs_rhs->per_cu
-	  && ofs_lhs->sect_off == ofs_rhs->sect_off);
-}
-
-/* Set the type associated with DIE to TYPE.  Save it in CU's hash
-   table if necessary.  For convenience, return TYPE.
-
-   The DIEs reading must have careful ordering to:
-    * Not cause infinite loops trying to read in DIEs as a prerequisite for
-      reading current DIE.
-    * Not trying to dereference contents of still incompletely read in types
-      while reading in other DIEs.
-    * Enable referencing still incompletely read in types just by a pointer to
-      the type without accessing its fields.
-
-   Therefore caller should follow these rules:
-     * Try to fetch any prerequisite types we may need to build this DIE type
-       before building the type and calling set_die_type.
-     * After building type call set_die_type for current DIE as soon as
-       possible before fetching more types to complete the current type.
-     * Make the type as complete as possible before fetching more types.  */
-
-static struct type *
-set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
-{
-  struct dwarf2_per_objfile *dwarf2_per_objfile
-    = cu->per_cu->dwarf2_per_objfile;
-  struct dwarf2_per_cu_offset_and_type **slot, ofs;
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  struct attribute *attr;
-  struct dynamic_prop prop;
-
-  /* For Ada types, make sure that the gnat-specific data is always
-     initialized (if not already set).  There are a few types where
-     we should not be doing so, because the type-specific area is
-     already used to hold some other piece of info (eg: TYPE_CODE_FLT
-     where the type-specific area is used to store the floatformat).
-     But this is not a problem, because the gnat-specific information
-     is actually not needed for these types.  */
-  if (need_gnat_info (cu)
-      && TYPE_CODE (type) != TYPE_CODE_FUNC
-      && TYPE_CODE (type) != TYPE_CODE_FLT
-      && TYPE_CODE (type) != TYPE_CODE_METHODPTR
-      && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
-      && TYPE_CODE (type) != TYPE_CODE_METHOD
-      && !HAVE_GNAT_AUX_INFO (type))
-    INIT_GNAT_SPECIFIC (type);
-
-  /* Read DW_AT_allocated and set in type.  */
-  attr = dwarf2_attr (die, DW_AT_allocated, cu);
-  if (attr_form_is_block (attr))
-    {
-      struct type *prop_type
-	= dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
-      if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
-        add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
-    }
-  else if (attr != NULL)
-    {
-      complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
-		 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
-		 sect_offset_str (die->sect_off));
-    }
-
-  /* Read DW_AT_associated and set in type.  */
-  attr = dwarf2_attr (die, DW_AT_associated, cu);
-  if (attr_form_is_block (attr))
-    {
-      struct type *prop_type
-	= dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
-      if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
-        add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
-    }
-  else if (attr != NULL)
-    {
-      complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
-		 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
-		 sect_offset_str (die->sect_off));
-    }
-
-  /* Read DW_AT_data_location and set in type.  */
-  attr = dwarf2_attr (die, DW_AT_data_location, cu);
-  if (attr_to_dynamic_prop (attr, die, cu, &prop,
-			    dwarf2_per_cu_addr_type (cu->per_cu)))
-    add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
-
-  if (dwarf2_per_objfile->die_type_hash == NULL)
-    {
-      dwarf2_per_objfile->die_type_hash =
-	htab_create_alloc_ex (127,
-			      per_cu_offset_and_type_hash,
-			      per_cu_offset_and_type_eq,
-			      NULL,
-			      &objfile->objfile_obstack,
-			      hashtab_obstack_allocate,
-			      dummy_obstack_deallocate);
-    }
-
-  ofs.per_cu = cu->per_cu;
-  ofs.sect_off = die->sect_off;
-  ofs.type = type;
-  slot = (struct dwarf2_per_cu_offset_and_type **)
-    htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
-  if (*slot)
-    complaint (_("A problem internal to GDB: DIE %s has type already set"),
-	       sect_offset_str (die->sect_off));
-  *slot = XOBNEW (&objfile->objfile_obstack,
-		  struct dwarf2_per_cu_offset_and_type);
-  **slot = ofs;
-  return type;
-}
-
-/* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
-   or return NULL if the die does not have a saved type.  */
-
-static struct type *
-get_die_type_at_offset (sect_offset sect_off,
-			struct dwarf2_per_cu_data *per_cu)
-{
-  struct dwarf2_per_cu_offset_and_type *slot, ofs;
-  struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
-
-  if (dwarf2_per_objfile->die_type_hash == NULL)
-    return NULL;
-
-  ofs.per_cu = per_cu;
-  ofs.sect_off = sect_off;
-  slot = ((struct dwarf2_per_cu_offset_and_type *)
-	  htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
-  if (slot)
-    return slot->type;
-  else
-    return NULL;
-}
-
-/* Look up the type for DIE in CU in die_type_hash,
-   or return NULL if DIE does not have a saved type.  */
-
-static struct type *
-get_die_type (struct die_info *die, struct dwarf2_cu *cu)
-{
-  return get_die_type_at_offset (die->sect_off, cu->per_cu);
-}
-
-/* Add a dependence relationship from CU to REF_PER_CU.  */
-
-static void
-dwarf2_add_dependence (struct dwarf2_cu *cu,
-		       struct dwarf2_per_cu_data *ref_per_cu)
-{
-  void **slot;
-
-  if (cu->dependencies == NULL)
-    cu->dependencies
-      = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
-			      NULL, &cu->comp_unit_obstack,
-			      hashtab_obstack_allocate,
-			      dummy_obstack_deallocate);
-
-  slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
-  if (*slot == NULL)
-    *slot = ref_per_cu;
-}
-
-/* Subroutine of dwarf2_mark to pass to htab_traverse.
-   Set the mark field in every compilation unit in the
-   cache that we must keep because we are keeping CU.  */
-
-static int
-dwarf2_mark_helper (void **slot, void *data)
-{
-  struct dwarf2_per_cu_data *per_cu;
-
-  per_cu = (struct dwarf2_per_cu_data *) *slot;
-
-  /* cu->dependencies references may not yet have been ever read if QUIT aborts
-     reading of the chain.  As such dependencies remain valid it is not much
-     useful to track and undo them during QUIT cleanups.  */
-  if (per_cu->cu == NULL)
-    return 1;
-
-  if (per_cu->cu->mark)
-    return 1;
-  per_cu->cu->mark = true;
-
-  if (per_cu->cu->dependencies != NULL)
-    htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
-
-  return 1;
-}
-
-/* Set the mark field in CU and in every other compilation unit in the
-   cache that we must keep because we are keeping CU.  */
-
-static void
-dwarf2_mark (struct dwarf2_cu *cu)
-{
-  if (cu->mark)
-    return;
-  cu->mark = true;
-  if (cu->dependencies != NULL)
-    htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
-}
-
-static void
-dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
-{
-  while (per_cu)
-    {
-      per_cu->cu->mark = false;
-      per_cu = per_cu->cu->read_in_chain;
-    }
-}
-
-/* Trivial hash function for partial_die_info: the hash value of a DIE
-   is its offset in .debug_info for this objfile.  */
-
-static hashval_t
-partial_die_hash (const void *item)
-{
-  const struct partial_die_info *part_die
-    = (const struct partial_die_info *) item;
-
-  return to_underlying (part_die->sect_off);
-}
-
-/* Trivial comparison function for partial_die_info structures: two DIEs
-   are equal if they have the same offset.  */
-
-static int
-partial_die_eq (const void *item_lhs, const void *item_rhs)
-{
-  const struct partial_die_info *part_die_lhs
-    = (const struct partial_die_info *) item_lhs;
-  const struct partial_die_info *part_die_rhs
-    = (const struct partial_die_info *) item_rhs;
-
-  return part_die_lhs->sect_off == part_die_rhs->sect_off;
-}
-
-struct cmd_list_element *set_dwarf_cmdlist;
-struct cmd_list_element *show_dwarf_cmdlist;
-
-static void
-set_dwarf_cmd (const char *args, int from_tty)
-{
-  help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
-	     gdb_stdout);
-}
-
-static void
-show_dwarf_cmd (const char *args, int from_tty)
-{
-  cmd_show_list (show_dwarf_cmdlist, from_tty, "");
-}
-
-bool dwarf_always_disassemble;
-
-static void
-show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
-			       struct cmd_list_element *c, const char *value)
-{
-  fprintf_filtered (file,
-		    _("Whether to always disassemble "
-		      "DWARF expressions is %s.\n"),
-		    value);
-}
-
-static void
-show_check_physname (struct ui_file *file, int from_tty,
-		     struct cmd_list_element *c, const char *value)
-{
-  fprintf_filtered (file,
-		    _("Whether to check \"physname\" is %s.\n"),
-		    value);
-}
-
-void
-_initialize_dwarf2_read (void)
-{
-  add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
-Set DWARF specific variables.\n\
-Configure DWARF variables such as the cache size."),
-                  &set_dwarf_cmdlist, "maintenance set dwarf ",
-                  0/*allow-unknown*/, &maintenance_set_cmdlist);
-
-  add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
-Show DWARF specific variables.\n\
-Show DWARF variables such as the cache size."),
-                  &show_dwarf_cmdlist, "maintenance show dwarf ",
-                  0/*allow-unknown*/, &maintenance_show_cmdlist);
-
-  add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
-			    &dwarf_max_cache_age, _("\
-Set the upper bound on the age of cached DWARF compilation units."), _("\
-Show the upper bound on the age of cached DWARF compilation units."), _("\
-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."),
-			    NULL,
-			    show_dwarf_max_cache_age,
-			    &set_dwarf_cmdlist,
-			    &show_dwarf_cmdlist);
-
-  add_setshow_boolean_cmd ("always-disassemble", class_obscure,
-			   &dwarf_always_disassemble, _("\
-Set whether `info address' always disassembles DWARF expressions."), _("\
-Show whether `info address' always disassembles DWARF expressions."), _("\
-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."),
-			   NULL,
-			   show_dwarf_always_disassemble,
-			   &set_dwarf_cmdlist,
-			   &show_dwarf_cmdlist);
-
-  add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
-Set debugging of the DWARF reader."), _("\
-Show debugging of the DWARF reader."), _("\
-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."),
-			    NULL,
-			    NULL,
-			    &setdebuglist, &showdebuglist);
-
-  add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
-Set debugging of the DWARF DIE reader."), _("\
-Show debugging of the DWARF DIE reader."), _("\
-When enabled (non-zero), DIEs are dumped after they are read in.\n\
-The value is the maximum depth to print."),
-			     NULL,
-			     NULL,
-			     &setdebuglist, &showdebuglist);
-
-  add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
-Set debugging of the dwarf line reader."), _("\
-Show debugging of the dwarf line reader."), _("\
-When enabled (non-zero), line number entries are dumped as they are read in.\n\
-A value of 1 (one) provides basic information.\n\
-A value greater than 1 provides more verbose information."),
-			     NULL,
-			     NULL,
-			     &setdebuglist, &showdebuglist);
-
-  add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
-Set cross-checking of \"physname\" code against demangler."), _("\
-Show cross-checking of \"physname\" code against demangler."), _("\
-When enabled, GDB's internal \"physname\" code is checked against\n\
-the demangler."),
-			   NULL, show_check_physname,
-			   &setdebuglist, &showdebuglist);
-
-  add_setshow_boolean_cmd ("use-deprecated-index-sections",
-			   no_class, &use_deprecated_index_sections, _("\
-Set whether to use deprecated gdb_index sections."), _("\
-Show whether to use deprecated gdb_index sections."), _("\
-When enabled, deprecated .gdb_index sections are used anyway.\n\
-Normally they are ignored either because of a missing feature or\n\
-performance issue.\n\
-Warning: This option must be enabled before gdb reads the file."),
-			   NULL,
-			   NULL,
-			   &setlist, &showlist);
-
-  dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
-							&dwarf2_locexpr_funcs);
-  dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
-							&dwarf2_loclist_funcs);
-
-  dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
-					&dwarf2_block_frame_base_locexpr_funcs);
-  dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
-					&dwarf2_block_frame_base_loclist_funcs);
-
-#if GDB_SELF_TEST
-  selftests::register_test ("dw2_expand_symtabs_matching",
-			    selftests::dw2_expand_symtabs_matching::run_test);
-#endif
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2read.h ./gdb/dwarf2read.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf2read.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf2read.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,484 +0,0 @@
-/* DWARF 2 debugging format support for GDB.
-
-   Copyright (C) 1994-2020 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 DWARF2READ_H
-#define DWARF2READ_H
-
-#include <unordered_map>
-#include "dwarf-index-cache.h"
-#include "filename-seen-cache.h"
-#include "gdb_obstack.h"
-#include "gdbsupport/hash_enum.h"
-
-/* Hold 'maintenance (set|show) dwarf' commands.  */
-extern struct cmd_list_element *set_dwarf_cmdlist;
-extern struct cmd_list_element *show_dwarf_cmdlist;
-
-extern bool dwarf_always_disassemble;
-
-/* A descriptor for dwarf sections.
-
-   S.ASECTION, SIZE are typically initialized when the objfile is first
-   scanned.  BUFFER, READIN are filled in later when the section is read.
-   If the section contained compressed data then SIZE is updated to record
-   the uncompressed size of the section.
-
-   DWP file format V2 introduces a wrinkle that is easiest to handle by
-   creating the concept of virtual sections contained within a real section.
-   In DWP V2 the sections of the input DWO files are concatenated together
-   into one section, but section offsets are kept relative to the original
-   input section.
-   If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
-   the real section this "virtual" section is contained in, and BUFFER,SIZE
-   describe the virtual section.  */
-
-struct dwarf2_section_info
-{
-  union
-  {
-    /* If this is a real section, the bfd section.  */
-    asection *section;
-    /* If this is a virtual section, pointer to the containing ("real")
-       section.  */
-    struct dwarf2_section_info *containing_section;
-  } s;
-  /* Pointer to section data, only valid if readin.  */
-  const gdb_byte *buffer;
-  /* The size of the section, real or virtual.  */
-  bfd_size_type size;
-  /* If this is a virtual section, the offset in the real section.
-     Only valid if is_virtual.  */
-  bfd_size_type virtual_offset;
-  /* True if we have tried to read this section.  */
-  bool readin;
-  /* True if this is a virtual section, False otherwise.
-     This specifies which of s.section and s.containing_section to use.  */
-  bool is_virtual;
-};
-
-/* Read the contents of the section INFO.
-   OBJFILE is the main object file, but not necessarily the file where
-   the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
-   of the DWO file.
-   If the section is compressed, uncompress it before returning.  */
-
-void dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info);
-
-struct tu_stats
-{
-  int nr_uniq_abbrev_tables;
-  int nr_symtabs;
-  int nr_symtab_sharers;
-  int nr_stmt_less_type_units;
-  int nr_all_type_units_reallocs;
-};
-
-struct dwarf2_debug_sections;
-struct mapped_index;
-struct mapped_debug_names;
-struct signatured_type;
-struct die_info;
-typedef struct die_info *die_info_ptr;
-
-/* Collection of data recorded per objfile.
-   This hangs off of dwarf2_objfile_data_key.  */
-
-struct dwarf2_per_objfile
-{
-  /* Construct a dwarf2_per_objfile for OBJFILE.  NAMES points to the
-     dwarf2 section names, or is NULL if the standard ELF names are
-     used.  CAN_COPY is true for formats where symbol
-     interposition is possible and so symbol values must follow copy
-     relocation rules.  */
-  dwarf2_per_objfile (struct objfile *objfile,
-		      const dwarf2_debug_sections *names,
-		      bool can_copy);
-
-  ~dwarf2_per_objfile ();
-
-  DISABLE_COPY_AND_ASSIGN (dwarf2_per_objfile);
-
-  /* Return the CU/TU given its index.
-
-     This is intended for loops like:
-
-     for (i = 0; i < (dwarf2_per_objfile->n_comp_units
-		      + dwarf2_per_objfile->n_type_units); ++i)
-       {
-         dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
-
-         ...;
-       }
-  */
-  dwarf2_per_cu_data *get_cutu (int index);
-
-  /* Return the CU given its index.
-     This differs from get_cutu in that it's for when you know INDEX refers to a
-     CU.  */
-  dwarf2_per_cu_data *get_cu (int index);
-
-  /* Return the TU given its index.
-     This differs from get_cutu in that it's for when you know INDEX refers to a
-     TU.  */
-  signatured_type *get_tu (int index);
-
-  /* Free all cached compilation units.  */
-  void free_cached_comp_units ();
-private:
-  /* This function is mapped across the sections and remembers the
-     offset and size of each of the debugging sections we are
-     interested in.  */
-  void locate_sections (bfd *abfd, asection *sectp,
-			const dwarf2_debug_sections &names);
-
-public:
-  dwarf2_section_info info {};
-  dwarf2_section_info abbrev {};
-  dwarf2_section_info line {};
-  dwarf2_section_info loc {};
-  dwarf2_section_info loclists {};
-  dwarf2_section_info macinfo {};
-  dwarf2_section_info macro {};
-  dwarf2_section_info str {};
-  dwarf2_section_info line_str {};
-  dwarf2_section_info ranges {};
-  dwarf2_section_info rnglists {};
-  dwarf2_section_info addr {};
-  dwarf2_section_info frame {};
-  dwarf2_section_info eh_frame {};
-  dwarf2_section_info gdb_index {};
-  dwarf2_section_info debug_names {};
-  dwarf2_section_info debug_aranges {};
-
-  std::vector<dwarf2_section_info> types;
-
-  /* Back link.  */
-  struct objfile *objfile = NULL;
-
-  /* Table of all the compilation units.  This is used to locate
-     the target compilation unit of a particular reference.  */
-  std::vector<dwarf2_per_cu_data *> all_comp_units;
-
-  /* The .debug_types-related CUs (TUs).  */
-  std::vector<signatured_type *> all_type_units;
-
-  /* Table of struct type_unit_group objects.
-     The hash key is the DW_AT_stmt_list value.  */
-  htab_t type_unit_groups {};
-
-  /* A table mapping .debug_types signatures to its signatured_type entry.
-     This is NULL if the .debug_types section hasn't been read in yet.  */
-  htab_t signatured_types {};
-
-  /* Type unit statistics, to see how well the scaling improvements
-     are doing.  */
-  struct tu_stats tu_stats {};
-
-  /* A chain of compilation units that are currently read in, so that
-     they can be freed later.  */
-  dwarf2_per_cu_data *read_in_chain = NULL;
-
-  /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
-     This is NULL if the table hasn't been allocated yet.  */
-  htab_up dwo_files;
-
-  /* True if we've checked for whether there is a DWP file.  */
-  bool dwp_checked = false;
-
-  /* The DWP file if there is one, or NULL.  */
-  std::unique_ptr<struct dwp_file> dwp_file;
-
-  /* The shared '.dwz' file, if one exists.  This is used when the
-     original data was compressed using 'dwz -m'.  */
-  std::unique_ptr<struct dwz_file> dwz_file;
-
-  /* Whether copy relocations are supported by this object format.  */
-  bool can_copy;
-
-  /* A flag indicating whether this objfile has a section loaded at a
-     VMA of 0.  */
-  bool has_section_at_zero = false;
-
-  /* True if we are using the mapped index,
-     or we are faking it for OBJF_READNOW's sake.  */
-  bool using_index = false;
-
-  /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
-  std::unique_ptr<mapped_index> index_table;
-
-  /* The mapped index, or NULL if .debug_names is missing or not being used.  */
-  std::unique_ptr<mapped_debug_names> debug_names_table;
-
-  /* When using index_table, this keeps track of all quick_file_names entries.
-     TUs typically share line table entries with a CU, so we maintain a
-     separate table of all line table entries to support the sharing.
-     Note that while there can be way more TUs than CUs, we've already
-     sorted all the TUs into "type unit groups", grouped by their
-     DW_AT_stmt_list value.  Therefore the only sharing done here is with a
-     CU and its associated TU group if there is one.  */
-  htab_t quick_file_names_table {};
-
-  /* Set during partial symbol reading, to prevent queueing of full
-     symbols.  */
-  bool reading_partial_symbols = false;
-
-  /* Table mapping type DIEs to their struct type *.
-     This is NULL if not allocated yet.
-     The mapping is done via (CU/TU + DIE offset) -> type.  */
-  htab_t die_type_hash {};
-
-  /* The CUs we recently read.  */
-  std::vector<dwarf2_per_cu_data *> just_read_cus;
-
-  /* Table containing line_header indexed by offset and offset_in_dwz.  */
-  htab_t line_header_hash {};
-
-  /* Table containing all filenames.  This is an optional because the
-     table is lazily constructed on first access.  */
-  gdb::optional<filename_seen_cache> filenames_cache;
-
-  /* If we loaded the index from an external file, this contains the
-     resources associated to the open file, memory mapping, etc.  */
-  std::unique_ptr<index_cache_resource> index_cache_res;
-
-  /* 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>>
-    abstract_to_concrete;
-};
-
-/* Get the dwarf2_per_objfile associated to OBJFILE.  */
-
-dwarf2_per_objfile *get_dwarf2_per_objfile (struct objfile *objfile);
-
-/* Persistent data held for a compilation unit, even when not
-   processing it.  We put a pointer to this structure in the
-   read_symtab_private field of the psymtab.  */
-
-struct dwarf2_per_cu_data
-{
-  /* The start offset and length of this compilation unit.
-     NOTE: Unlike comp_unit_head.length, this length includes
-     initial_length_size.
-     If the DIE refers to a DWO file, this is always of the original die,
-     not the DWO file.  */
-  sect_offset sect_off;
-  unsigned int length;
-
-  /* DWARF standard version this data has been read from (such as 4 or 5).  */
-  short dwarf_version;
-
-  /* Flag indicating this compilation unit will be read in before
-     any of the current compilation units are processed.  */
-  unsigned int queued : 1;
-
-  /* This flag will be set when reading partial DIEs if we need to load
-     absolutely all DIEs for this compilation unit, instead of just the ones
-     we think are interesting.  It gets set if we look for a DIE in the
-     hash table and don't find it.  */
-  unsigned int load_all_dies : 1;
-
-  /* Non-zero if this CU is from .debug_types.
-     Struct dwarf2_per_cu_data is contained in struct signatured_type iff
-     this is non-zero.  */
-  unsigned int is_debug_types : 1;
-
-  /* Non-zero if this CU is from the .dwz file.  */
-  unsigned int is_dwz : 1;
-
-  /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
-     This flag is only valid if is_debug_types is true.
-     We can't read a CU directly from a DWO file: There are required
-     attributes in the stub.  */
-  unsigned int reading_dwo_directly : 1;
-
-  /* Non-zero if the TU has been read.
-     This is used to assist the "Stay in DWO Optimization" for Fission:
-     When reading a DWO, it's faster to read TUs from the DWO instead of
-     fetching them from random other DWOs (due to comdat folding).
-     If the TU has already been read, the optimization is unnecessary
-     (and unwise - we don't want to change where gdb thinks the TU lives
-     "midflight").
-     This flag is only valid if is_debug_types is true.  */
-  unsigned int tu_read : 1;
-
-  /* The section this CU/TU lives in.
-     If the DIE refers to a DWO file, this is always the original die,
-     not the DWO file.  */
-  struct dwarf2_section_info *section;
-
-  /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
-     of the CU cache it gets reset to NULL again.  This is left as NULL for
-     dummy CUs (a CU header, but nothing else).  */
-  struct dwarf2_cu *cu;
-
-  /* The corresponding dwarf2_per_objfile.  */
-  struct dwarf2_per_objfile *dwarf2_per_objfile;
-
-  /* When dwarf2_per_objfile->using_index is true, the 'quick' field
-     is active.  Otherwise, the 'psymtab' field is active.  */
-  union
-  {
-    /* The partial symbol table associated with this compilation unit,
-       or NULL for unread partial units.  */
-    struct partial_symtab *psymtab;
-
-    /* Data needed by the "quick" functions.  */
-    struct dwarf2_per_cu_quick_data *quick;
-  } v;
-
-  /* Return true of IMPORTED_SYMTABS is empty or not yet allocated.  */
-  bool imported_symtabs_empty () const
-  {
-    return (imported_symtabs == nullptr || imported_symtabs->empty ());
-  }
-
-  /* Push P to the back of IMPORTED_SYMTABS, allocated IMPORTED_SYMTABS
-     first if required.  */
-  void imported_symtabs_push (dwarf2_per_cu_data *p)
-  {
-    if (imported_symtabs == nullptr)
-      imported_symtabs = new std::vector <dwarf2_per_cu_data *>;
-    imported_symtabs->push_back (p);
-  }
-
-  /* Return the size of IMPORTED_SYMTABS if it is allocated, otherwise
-     return 0.  */
-  size_t imported_symtabs_size () const
-  {
-    if (imported_symtabs == nullptr)
-      return 0;
-    return imported_symtabs->size ();
-  }
-
-  /* Delete IMPORTED_SYMTABS and set the pointer back to nullptr.  */
-  void imported_symtabs_free ()
-  {
-    delete imported_symtabs;
-    imported_symtabs = nullptr;
-  }
-
-  /* The CUs we import using DW_TAG_imported_unit.  This is filled in
-     while reading psymtabs, used to compute the psymtab dependencies,
-     and then cleared.  Then it is filled in again while reading full
-     symbols, and only deleted when the objfile is destroyed.
-
-     This is also used to work around a difference between the way gold
-     generates .gdb_index version <=7 and the way gdb does.  Arguably this
-     is a gold bug.  For symbols coming from TUs, gold records in the index
-     the CU that includes the TU instead of the TU itself.  This breaks
-     dw2_lookup_symbol: It assumes that if the index says symbol X lives
-     in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
-     will find X.  Alas TUs live in their own symtab, so after expanding CU Y
-     we need to look in TU Z to find X.  Fortunately, this is akin to
-     DW_TAG_imported_unit, so we just use the same mechanism: For
-     .gdb_index version <=7 this also records the TUs that the CU referred
-     to.  Concurrently with this change gdb was modified to emit version 8
-     indices so we only pay a price for gold generated indices.
-     http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
-
-     This currently needs to be a public member due to how
-     dwarf2_per_cu_data is allocated and used.  Ideally in future things
-     could be refactored to make this private.  Until then please try to
-     avoid direct access to this member, and instead use the helper
-     functions above.  */
-  std::vector <dwarf2_per_cu_data *> *imported_symtabs;
-};
-
-/* Entry in the signatured_types hash table.  */
-
-struct signatured_type
-{
-  /* The "per_cu" object of this type.
-     This struct is used iff per_cu.is_debug_types.
-     N.B.: This is the first member so that it's easy to convert pointers
-     between them.  */
-  struct dwarf2_per_cu_data per_cu;
-
-  /* The type's signature.  */
-  ULONGEST signature;
-
-  /* Offset in the TU of the type's DIE, as read from the TU header.
-     If this TU is a DWO stub and the definition lives in a DWO file
-     (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
-  cu_offset type_offset_in_tu;
-
-  /* Offset in the section of the type's DIE.
-     If the definition lives in a DWO file, this is the offset in the
-     .debug_types.dwo section.
-     The value is zero until the actual value is known.
-     Zero is otherwise not a valid section offset.  */
-  sect_offset type_offset_in_section;
-
-  /* Type units are grouped by their DW_AT_stmt_list entry so that they
-     can share them.  This points to the containing symtab.  */
-  struct type_unit_group *type_unit_group;
-
-  /* The type.
-     The first time we encounter this type we fully read it in and install it
-     in the symbol tables.  Subsequent times we only need the type.  */
-  struct type *type;
-
-  /* Containing DWO unit.
-     This field is valid iff per_cu.reading_dwo_directly.  */
-  struct dwo_unit *dwo_unit;
-};
-
-ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
-
-/* This represents a '.dwz' file.  */
-
-struct dwz_file
-{
-  dwz_file (gdb_bfd_ref_ptr &&bfd)
-    : dwz_bfd (std::move (bfd))
-  {
-  }
-
-  const char *filename () const
-  {
-    return bfd_get_filename (this->dwz_bfd.get ());
-  }
-
-  /* A dwz file can only contain a few sections.  */
-  struct dwarf2_section_info abbrev {};
-  struct dwarf2_section_info info {};
-  struct dwarf2_section_info str {};
-  struct dwarf2_section_info line {};
-  struct dwarf2_section_info macro {};
-  struct dwarf2_section_info gdb_index {};
-  struct dwarf2_section_info debug_names {};
-
-  /* The dwz's BFD.  */
-  gdb_bfd_ref_ptr dwz_bfd;
-
-  /* If we loaded the index from an external file, this contains the
-     resources associated to the open file, memory mapping, etc.  */
-  std::unique_ptr<index_cache_resource> index_cache_res;
-};
-
-/* Open the separate '.dwz' debug file, if needed.  Return NULL if
-   there is no .gnu_debugaltlink section in the file.  Error if there
-   is such a section but the file cannot be found.  */
-
-extern struct dwz_file *dwarf2_get_dwz_file
-    (struct dwarf2_per_objfile *dwarf2_per_objfile);
-
-#endif /* DWARF2READ_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-cache.c ./gdb/dwarf-index-cache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-cache.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf-index-cache.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,382 +0,0 @@
-/* Caching of GDB/DWARF index files.
-
-   Copyright (C) 1994-2020 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 "dwarf-index-cache.h"
-
-#include "build-id.h"
-#include "cli/cli-cmds.h"
-#include "command.h"
-#include "gdbsupport/scoped_mmap.h"
-#include "gdbsupport/pathstuff.h"
-#include "dwarf-index-write.h"
-#include "dwarf2read.h"
-#include "objfiles.h"
-#include "gdbsupport/selftest.h"
-#include <string>
-#include <stdlib.h>
-
-/* When set to true, show debug messages about the index cache.  */
-static bool debug_index_cache = false;
-
-/* The index cache directory, used for "set/show index-cache directory".  */
-static char *index_cache_directory = NULL;
-
-/* See dwarf-index.cache.h.  */
-index_cache global_index_cache;
-
-/* set/show index-cache commands.  */
-static cmd_list_element *set_index_cache_prefix_list;
-static cmd_list_element *show_index_cache_prefix_list;
-
-/* Default destructor of index_cache_resource.  */
-index_cache_resource::~index_cache_resource () = default;
-
-/* See dwarf-index-cache.h.  */
-
-void
-index_cache::set_directory (std::string dir)
-{
-  gdb_assert (!dir.empty ());
-
-  m_dir = std::move (dir);
-
-  if (debug_index_cache)
-    printf_unfiltered ("index cache: now using directory %s\n", m_dir.c_str ());
-}
-
-/* See dwarf-index-cache.h.  */
-
-void
-index_cache::enable ()
-{
-  if (debug_index_cache)
-    printf_unfiltered ("index cache: enabling (%s)\n", m_dir.c_str ());
-
-  m_enabled = true;
-}
-
-/* See dwarf-index-cache.h.  */
-
-void
-index_cache::disable ()
-{
-  if (debug_index_cache)
-    printf_unfiltered ("index cache: disabling\n");
-
-  m_enabled = false;
-}
-
-/* See dwarf-index-cache.h.  */
-
-void
-index_cache::store (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  objfile *obj = dwarf2_per_objfile->objfile;
-
-  if (!enabled ())
-    return;
-
-  /* Get build id of objfile.  */
-  const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
-  if (build_id == nullptr)
-    {
-      if (debug_index_cache)
-	printf_unfiltered ("index cache: objfile %s has no build id\n",
-			   objfile_name (obj));
-      return;
-    }
-
-  std::string build_id_str = build_id_to_string (build_id);
-
-  /* Get build id of dwz file, if present.  */
-  gdb::optional<std::string> dwz_build_id_str;
-  const dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
-  const char *dwz_build_id_ptr = NULL;
-
-  if (dwz != nullptr)
-    {
-      const bfd_build_id *dwz_build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
-
-      if (dwz_build_id == nullptr)
-	{
-	  if (debug_index_cache)
-	    printf_unfiltered ("index cache: dwz objfile %s has no build id\n",
-			       dwz->filename ());
-	  return;
-	}
-
-      dwz_build_id_str = build_id_to_string (dwz_build_id);
-      dwz_build_id_ptr = dwz_build_id_str->c_str ();
-    }
-
-  if (m_dir.empty ())
-    {
-      warning (_("The index cache directory name is empty, skipping store."));
-      return;
-    }
-
-  try
-    {
-      /* Try to create the containing directory.  */
-      if (!mkdir_recursive (m_dir.c_str ()))
-	{
-	  warning (_("index cache: could not make cache directory: %s"),
-		   safe_strerror (errno));
-	  return;
-	}
-
-      if (debug_index_cache)
-        printf_unfiltered ("index cache: writing index cache for objfile %s\n",
-			   objfile_name (obj));
-
-      /* Write the index itself to the directory, using the build id as the
-         filename.  */
-      write_psymtabs_to_index (dwarf2_per_objfile, m_dir.c_str (),
-			       build_id_str.c_str (), dwz_build_id_ptr,
-			       dw_index_kind::GDB_INDEX);
-    }
-  catch (const gdb_exception_error &except)
-    {
-      if (debug_index_cache)
-	printf_unfiltered ("index cache: couldn't store index cache for objfile "
-			   "%s: %s", objfile_name (obj), except.what ());
-    }
-}
-
-#if HAVE_SYS_MMAN_H
-
-/* Hold the resources for an mmapped index file.  */
-
-struct index_cache_resource_mmap final : public index_cache_resource
-{
-  /* Try to mmap FILENAME.  Throw an exception on failure, including if the
-     file doesn't exist. */
-  index_cache_resource_mmap (const char *filename)
-    : mapping (mmap_file (filename))
-  {}
-
-  scoped_mmap mapping;
-};
-
-/* See dwarf-index-cache.h.  */
-
-gdb::array_view<const gdb_byte>
-index_cache::lookup_gdb_index (const bfd_build_id *build_id,
-			       std::unique_ptr<index_cache_resource> *resource)
-{
-  if (!enabled ())
-    return {};
-
-  if (m_dir.empty ())
-    {
-      warning (_("The index cache directory name is empty, skipping cache "
-		 "lookup."));
-      return {};
-    }
-
-  /* Compute where we would expect a gdb index file for this build id to be.  */
-  std::string filename = make_index_filename (build_id, INDEX4_SUFFIX);
-
-  try
-    {
-      if (debug_index_cache)
-        printf_unfiltered ("index cache: trying to read %s\n",
-			   filename.c_str ());
-
-      /* Try to map that file.  */
-      index_cache_resource_mmap *mmap_resource
-	= new index_cache_resource_mmap (filename.c_str ());
-
-      /* Yay, it worked!  Hand the resource to the caller.  */
-      resource->reset (mmap_resource);
-
-      return gdb::array_view<const gdb_byte>
-	  ((const gdb_byte *) mmap_resource->mapping.get (),
-	   mmap_resource->mapping.size ());
-    }
-  catch (const gdb_exception_error &except)
-    {
-      if (debug_index_cache)
-	printf_unfiltered ("index cache: couldn't read %s: %s\n",
-			   filename.c_str (), except.what ());
-    }
-
-  return {};
-}
-
-#else /* !HAVE_SYS_MMAN_H */
-
-/* See dwarf-index-cache.h.  This is a no-op on unsupported systems.  */
-
-gdb::array_view<const gdb_byte>
-index_cache::lookup_gdb_index (const bfd_build_id *build_id,
-			       std::unique_ptr<index_cache_resource> *resource)
-{
-  return {};
-}
-
-#endif
-
-/* See dwarf-index-cache.h.  */
-
-std::string
-index_cache::make_index_filename (const bfd_build_id *build_id,
-				  const char *suffix) const
-{
-  std::string build_id_str = build_id_to_string (build_id);
-
-  return m_dir + SLASH_STRING + build_id_str + suffix;
-}
-
-/* "set index-cache" handler.  */
-
-static void
-set_index_cache_command (const char *arg, int from_tty)
-{
-  printf_unfiltered (_("\
-Missing arguments.  See \"help set index-cache\" for help.\n"));
-}
-
-/* True when we are executing "show index-cache".  This is used to improve the
-   printout a little bit.  */
-static bool in_show_index_cache_command = false;
-
-/* "show index-cache" handler.  */
-
-static void
-show_index_cache_command (const char *arg, int from_tty)
-{
-  /* Note that we are executing "show index-cache".  */
-  auto restore_flag = make_scoped_restore (&in_show_index_cache_command, true);
-
-  /* Call all "show index-cache" subcommands.  */
-  cmd_show_list (show_index_cache_prefix_list, from_tty, "");
-
-  printf_unfiltered ("\n");
-  printf_unfiltered
-    (_("The index cache is currently %s.\n"),
-     global_index_cache.enabled () ? _("enabled") : _("disabled"));
-}
-
-/* "set index-cache on" handler.  */
-
-static void
-set_index_cache_on_command (const char *arg, int from_tty)
-{
-  global_index_cache.enable ();
-}
-
-/* "set index-cache off" handler.  */
-
-static void
-set_index_cache_off_command (const char *arg, int from_tty)
-{
-  global_index_cache.disable ();
-}
-
-/* "set index-cache directory" handler.  */
-
-static void
-set_index_cache_directory_command (const char *arg, int from_tty,
-				   cmd_list_element *element)
-{
-  /* Make sure the index cache directory is absolute and tilde-expanded.  */
-  gdb::unique_xmalloc_ptr<char> abs (gdb_abspath (index_cache_directory));
-  xfree (index_cache_directory);
-  index_cache_directory = abs.release ();
-  global_index_cache.set_directory (index_cache_directory);
-}
-
-/* "show index-cache stats" handler.  */
-
-static void
-show_index_cache_stats_command (const char *arg, int from_tty)
-{
-  const char *indent = "";
-
-  /* If this command is invoked through "show index-cache", make the display a
-     bit nicer.  */
-  if (in_show_index_cache_command)
-    {
-      indent = "  ";
-      printf_unfiltered ("\n");
-    }
-
-  printf_unfiltered (_("%s  Cache hits (this session): %u\n"),
-		     indent, global_index_cache.n_hits ());
-  printf_unfiltered (_("%sCache misses (this session): %u\n"),
-		     indent, global_index_cache.n_misses ());
-}
-
-void
-_initialize_index_cache ()
-{
-  /* Set the default index cache directory.  */
-  std::string cache_dir = get_standard_cache_dir ();
-  if (!cache_dir.empty ())
-    {
-      index_cache_directory = xstrdup (cache_dir.c_str ());
-      global_index_cache.set_directory (std::move (cache_dir));
-    }
-  else
-    warning (_("Couldn't determine a path for the index cache directory."));
-
-  /* set index-cache */
-  add_prefix_cmd ("index-cache", class_files, set_index_cache_command,
-		  _("Set index-cache options."), &set_index_cache_prefix_list,
-		  "set index-cache ", false, &setlist);
-
-  /* show index-cache */
-  add_prefix_cmd ("index-cache", class_files, show_index_cache_command,
-		  _("Show index-cache options."), &show_index_cache_prefix_list,
-		  "show index-cache ", false, &showlist);
-
-  /* set index-cache on */
-  add_cmd ("on", class_files, set_index_cache_on_command,
-	   _("Enable the index cache."), &set_index_cache_prefix_list);
-
-  /* set index-cache off */
-  add_cmd ("off", class_files, set_index_cache_off_command,
-	   _("Disable the index cache."), &set_index_cache_prefix_list);
-
-  /* set index-cache directory */
-  add_setshow_filename_cmd ("directory", class_files, &index_cache_directory,
-			    _("Set the directory of the index cache."),
-			    _("Show the directory of the index cache."),
-			    NULL,
-			    set_index_cache_directory_command, NULL,
-			    &set_index_cache_prefix_list,
-			    &show_index_cache_prefix_list);
-
-  /* show index-cache stats */
-  add_cmd ("stats", class_files, show_index_cache_stats_command,
-	   _("Show some stats about the index cache."),
-	   &show_index_cache_prefix_list);
-
-  /* set debug index-cache */
-  add_setshow_boolean_cmd ("index-cache", class_maintenance,
-			   &debug_index_cache,
-			   _("Set display of index-cache debug messages."),
-			   _("Show display of index-cache debug messages."),
-			   _("\
-When non-zero, debugging output for the index cache is displayed."),
-			    NULL, NULL,
-			    &setdebuglist, &showdebuglist);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-cache.h ./gdb/dwarf-index-cache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-cache.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf-index-cache.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,112 +0,0 @@
-/* Caching of GDB/DWARF index files.
-
-   Copyright (C) 2018-2020 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 DWARF_INDEX_CACHE_H
-#define DWARF_INDEX_CACHE_H
-
-#include "dwarf-index-common.h"
-#include "gdbsupport/array-view.h"
-#include "symfile.h"
-
-/* Base of the classes used to hold the resources of the indices loaded from
-   the cache (e.g. mmapped files).  */
-
-struct index_cache_resource
-{
-  virtual ~index_cache_resource () = 0;
-};
-
-/* Class to manage the access to the DWARF index cache.  */
-
-class index_cache
-{
-public:
-  /* Change the directory used to save/load index files.  */
-  void set_directory (std::string dir);
-
-  /* Return true if the usage of the cache is enabled.  */
-  bool enabled () const
-  {
-    return m_enabled;
-  }
-
-  /* Enable the cache.  */
-  void enable ();
-
-  /* Disable the cache.  */
-  void disable ();
-
-  /* Store an index for the specified object file in the cache.  */
-  void store (struct dwarf2_per_objfile *dwarf2_per_objfile);
-
-  /* Look for an index file matching BUILD_ID.  If found, return the contents
-     as an array_view and store the underlying resources (allocated memory,
-     mapped file, etc) in RESOURCE.  The returned array_view is valid as long
-     as RESOURCE is not destroyed.
-
-     If no matching index file is found, return an empty array view.  */
-  gdb::array_view<const gdb_byte>
-  lookup_gdb_index (const bfd_build_id *build_id,
-		    std::unique_ptr<index_cache_resource> *resource);
-
-  /* Return the number of cache hits.  */
-  unsigned int n_hits () const
-  { return m_n_hits; }
-
-  /* Record a cache hit.  */
-  void hit ()
-  {
-    if (enabled ())
-      m_n_hits++;
-  }
-
-  /* Return the number of cache misses.  */
-  unsigned int n_misses () const
-  { return m_n_misses; }
-
-  /* Record a cache miss.  */
-  void miss ()
-  {
-    if (enabled ())
-      m_n_misses++;
-  }
-
-private:
-
-  /* Compute the absolute filename where the index of the objfile with build
-     id BUILD_ID will be stored.  SUFFIX is appended at the end of the
-     filename.  */
-  std::string make_index_filename (const bfd_build_id *build_id,
-				   const char *suffix) const;
-
-  /* The base directory where we are storing and looking up index files.  */
-  std::string m_dir;
-
-  /* Whether the cache is enabled.  */
-  bool m_enabled = false;
-
-  /* Number of cache hits and misses during this GDB session.  */
-  unsigned int m_n_hits = 0;
-  unsigned int m_n_misses = 0;
-};
-
-/* The global instance of the index cache.  */
-extern index_cache global_index_cache;
-
-#endif /* DWARF_INDEX_CACHE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-common.c ./gdb/dwarf-index-common.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-common.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf-index-common.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,56 +0,0 @@
-/* Things needed for both reading and writing DWARF indices.
-
-   Copyright (C) 1994-2020 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 "dwarf-index-common.h"
-
-/* See dwarf-index-common.h.  */
-
-hashval_t
-mapped_index_string_hash (int index_version, const void *p)
-{
-  const unsigned char *str = (const unsigned char *) p;
-  hashval_t r = 0;
-  unsigned char c;
-
-  while ((c = *str++) != 0)
-    {
-      if (index_version >= 5)
-	c = tolower (c);
-      r = r * 67 + c - 113;
-    }
-
-  return r;
-}
-
-/* See dwarf-index-common.h.  */
-
-uint32_t
-dwarf5_djb_hash (const char *str_)
-{
-  const unsigned char *str = (const unsigned char *) str_;
-
-  /* Note: tolower here ignores UTF-8, which isn't fully compliant.
-     See http://dwarfstd.org/ShowIssue.php?issue=161027.1.  */
-
-  uint32_t hash = 5381;
-  while (int c = *str++)
-    hash = hash * 33 + tolower (c);
-  return hash;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-common.h ./gdb/dwarf-index-common.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-common.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf-index-common.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,68 +0,0 @@
-/* Things needed for both reading and writing DWARF indices.
-
-   Copyright (C) 1994-2020 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 DWARF_INDEX_COMMON_H
-#define DWARF_INDEX_COMMON_H
-
-/* The suffix for an index file.  */
-#define INDEX4_SUFFIX ".gdb-index"
-#define INDEX5_SUFFIX ".debug_names"
-#define DEBUG_STR_SUFFIX ".debug_str"
-
-/* All offsets in the index are of this type.  It must be
-   architecture-independent.  */
-typedef uint32_t offset_type;
-
-#if WORDS_BIGENDIAN
-
-/* Convert VALUE between big- and little-endian.  */
-
-static inline offset_type
-byte_swap (offset_type value)
-{
-  offset_type result;
-
-  result = (value & 0xff) << 24;
-  result |= (value & 0xff00) << 8;
-  result |= (value & 0xff0000) >> 8;
-  result |= (value & 0xff000000) >> 24;
-  return result;
-}
-
-#define MAYBE_SWAP(V)  byte_swap (V)
-
-#else
-#define MAYBE_SWAP(V) static_cast<offset_type> (V)
-#endif /* WORDS_BIGENDIAN */
-
-/* The hash function for strings in the mapped index.  This is the same as
-   SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
-   implementation.  This is necessary because the hash function is tied to the
-   format of the mapped index file.  The hash values do not have to match with
-   SYMBOL_HASH_NEXT.
-
-   Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
-
-hashval_t mapped_index_string_hash (int index_version, const void *p);
-
-/* Symbol name hashing function as specified by DWARF-5.  */
-
-uint32_t dwarf5_djb_hash (const char *str_);
-
-#endif /* DWARF_INDEX_COMMON_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-write.c ./gdb/dwarf-index-write.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-write.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf-index-write.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,1797 +0,0 @@
-/* DWARF index writing support for GDB.
-
-   Copyright (C) 1994-2020 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 "dwarf-index-write.h"
-
-#include "addrmap.h"
-#include "cli/cli-decode.h"
-#include "gdbsupport/byte-vector.h"
-#include "gdbsupport/filestuff.h"
-#include "gdbsupport/gdb_unlinker.h"
-#include "gdbsupport/pathstuff.h"
-#include "gdbsupport/scoped_fd.h"
-#include "complaints.h"
-#include "dwarf-index-common.h"
-#include "dwarf2.h"
-#include "dwarf2read.h"
-#include "gdb/gdb-index.h"
-#include "gdbcmd.h"
-#include "objfiles.h"
-#include "psympriv.h"
-#include "ada-lang.h"
-
-#include <algorithm>
-#include <cmath>
-#include <set>
-#include <unordered_map>
-#include <unordered_set>
-
-/* Ensure only legit values are used.  */
-#define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
-  do { \
-    gdb_assert ((unsigned int) (value) <= 1); \
-    GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
-  } while (0)
-
-/* Ensure only legit values are used.  */
-#define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
-  do { \
-    gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
-                && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
-    GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
-  } while (0)
-
-/* Ensure we don't use more than the allotted number of bits for the CU.  */
-#define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
-  do { \
-    gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
-    GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
-  } while (0)
-
-/* The "save gdb-index" command.  */
-
-/* Write SIZE bytes from the buffer pointed to by DATA to FILE, with
-   error checking.  */
-
-static void
-file_write (FILE *file, const void *data, size_t size)
-{
-  if (fwrite (data, 1, size, file) != size)
-    error (_("couldn't data write to file"));
-}
-
-/* Write the contents of VEC to FILE, with error checking.  */
-
-template<typename Elem, typename Alloc>
-static void
-file_write (FILE *file, const std::vector<Elem, Alloc> &vec)
-{
-  if (!vec.empty ())
-    file_write (file, vec.data (), vec.size () * sizeof (vec[0]));
-}
-
-/* In-memory buffer to prepare data to be written later to a file.  */
-class data_buf
-{
-public:
-  /* Copy DATA to the end of the buffer.  */
-  template<typename T>
-  void append_data (const T &data)
-  {
-    std::copy (reinterpret_cast<const gdb_byte *> (&data),
-	       reinterpret_cast<const gdb_byte *> (&data + 1),
-	       grow (sizeof (data)));
-  }
-
-  /* Copy CSTR (a zero-terminated string) to the end of buffer.  The
-     terminating zero is appended too.  */
-  void append_cstr0 (const char *cstr)
-  {
-    const size_t size = strlen (cstr) + 1;
-    std::copy (cstr, cstr + size, grow (size));
-  }
-
-  /* Store INPUT as ULEB128 to the end of buffer.  */
-  void append_unsigned_leb128 (ULONGEST input)
-  {
-    for (;;)
-      {
-	gdb_byte output = input & 0x7f;
-	input >>= 7;
-	if (input)
-	  output |= 0x80;
-	append_data (output);
-	if (input == 0)
-	  break;
-      }
-  }
-
-  /* Accept a host-format integer in VAL and append it to the buffer
-     as a target-format integer which is LEN bytes long.  */
-  void append_uint (size_t len, bfd_endian byte_order, ULONGEST val)
-  {
-    ::store_unsigned_integer (grow (len), len, byte_order, val);
-  }
-
-  /* Return the size of the buffer.  */
-  size_t size () const
-  {
-    return m_vec.size ();
-  }
-
-  /* Return true iff the buffer is empty.  */
-  bool empty () const
-  {
-    return m_vec.empty ();
-  }
-
-  /* Write the buffer to FILE.  */
-  void file_write (FILE *file) const
-  {
-    ::file_write (file, m_vec);
-  }
-
-private:
-  /* Grow SIZE bytes at the end of the buffer.  Returns a pointer to
-     the start of the new block.  */
-  gdb_byte *grow (size_t size)
-  {
-    m_vec.resize (m_vec.size () + size);
-    return &*(m_vec.end () - size);
-  }
-
-  gdb::byte_vector m_vec;
-};
-
-/* An entry in the symbol table.  */
-struct symtab_index_entry
-{
-  /* The name of the symbol.  */
-  const char *name;
-  /* The offset of the name in the constant pool.  */
-  offset_type index_offset;
-  /* A sorted vector of the indices of all the CUs that hold an object
-     of this name.  */
-  std::vector<offset_type> cu_indices;
-};
-
-/* The symbol table.  This is a power-of-2-sized hash table.  */
-struct mapped_symtab
-{
-  mapped_symtab ()
-  {
-    data.resize (1024);
-  }
-
-  offset_type n_elements = 0;
-  std::vector<symtab_index_entry> data;
-};
-
-/* Find a slot in SYMTAB for the symbol NAME.  Returns a reference to
-   the slot.
-
-   Function is used only during write_hash_table so no index format backward
-   compatibility is needed.  */
-
-static symtab_index_entry &
-find_slot (struct mapped_symtab *symtab, const char *name)
-{
-  offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
-
-  index = hash & (symtab->data.size () - 1);
-  step = ((hash * 17) & (symtab->data.size () - 1)) | 1;
-
-  for (;;)
-    {
-      if (symtab->data[index].name == NULL
-	  || strcmp (name, symtab->data[index].name) == 0)
-	return symtab->data[index];
-      index = (index + step) & (symtab->data.size () - 1);
-    }
-}
-
-/* Expand SYMTAB's hash table.  */
-
-static void
-hash_expand (struct mapped_symtab *symtab)
-{
-  auto old_entries = std::move (symtab->data);
-
-  symtab->data.clear ();
-  symtab->data.resize (old_entries.size () * 2);
-
-  for (auto &it : old_entries)
-    if (it.name != NULL)
-      {
-	auto &ref = find_slot (symtab, it.name);
-	ref = std::move (it);
-      }
-}
-
-/* Add an entry to SYMTAB.  NAME is the name of the symbol.
-   CU_INDEX is the index of the CU in which the symbol appears.
-   IS_STATIC is one if the symbol is static, otherwise zero (global).  */
-
-static void
-add_index_entry (struct mapped_symtab *symtab, const char *name,
-		 int is_static, gdb_index_symbol_kind kind,
-		 offset_type cu_index)
-{
-  offset_type cu_index_and_attrs;
-
-  ++symtab->n_elements;
-  if (4 * symtab->n_elements / 3 >= symtab->data.size ())
-    hash_expand (symtab);
-
-  symtab_index_entry &slot = find_slot (symtab, name);
-  if (slot.name == NULL)
-    {
-      slot.name = name;
-      /* index_offset is set later.  */
-    }
-
-  cu_index_and_attrs = 0;
-  DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
-  DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
-  DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
-
-  /* We don't want to record an index value twice as we want to avoid the
-     duplication.
-     We process all global symbols and then all static symbols
-     (which would allow us to avoid the duplication by only having to check
-     the last entry pushed), but a symbol could have multiple kinds in one CU.
-     To keep things simple we don't worry about the duplication here and
-     sort and uniquify the list after we've processed all symbols.  */
-  slot.cu_indices.push_back (cu_index_and_attrs);
-}
-
-/* Sort and remove duplicates of all symbols' cu_indices lists.  */
-
-static void
-uniquify_cu_indices (struct mapped_symtab *symtab)
-{
-  for (auto &entry : symtab->data)
-    {
-      if (entry.name != NULL && !entry.cu_indices.empty ())
-	{
-	  auto &cu_indices = entry.cu_indices;
-	  std::sort (cu_indices.begin (), cu_indices.end ());
-	  auto from = std::unique (cu_indices.begin (), cu_indices.end ());
-	  cu_indices.erase (from, cu_indices.end ());
-	}
-    }
-}
-
-/* A form of 'const char *' suitable for container keys.  Only the
-   pointer is stored.  The strings themselves are compared, not the
-   pointers.  */
-class c_str_view
-{
-public:
-  c_str_view (const char *cstr)
-    : m_cstr (cstr)
-  {}
-
-  bool operator== (const c_str_view &other) const
-  {
-    return strcmp (m_cstr, other.m_cstr) == 0;
-  }
-
-  /* Return the underlying C string.  Note, the returned string is
-     only a reference with lifetime of this object.  */
-  const char *c_str () const
-  {
-    return m_cstr;
-  }
-
-private:
-  friend class c_str_view_hasher;
-  const char *const m_cstr;
-};
-
-/* A std::unordered_map::hasher for c_str_view that uses the right
-   hash function for strings in a mapped index.  */
-class c_str_view_hasher
-{
-public:
-  size_t operator () (const c_str_view &x) const
-  {
-    return mapped_index_string_hash (INT_MAX, x.m_cstr);
-  }
-};
-
-/* A std::unordered_map::hasher for std::vector<>.  */
-template<typename T>
-class vector_hasher
-{
-public:
-  size_t operator () (const std::vector<T> &key) const
-  {
-    return iterative_hash (key.data (),
-			   sizeof (key.front ()) * key.size (), 0);
-  }
-};
-
-/* Write the mapped hash table SYMTAB to the data buffer OUTPUT, with
-   constant pool entries going into the data buffer CPOOL.  */
-
-static void
-write_hash_table (mapped_symtab *symtab, data_buf &output, data_buf &cpool)
-{
-  {
-    /* Elements are sorted vectors of the indices of all the CUs that
-       hold an object of this name.  */
-    std::unordered_map<std::vector<offset_type>, offset_type,
-		       vector_hasher<offset_type>>
-      symbol_hash_table;
-
-    /* We add all the index vectors to the constant pool first, to
-       ensure alignment is ok.  */
-    for (symtab_index_entry &entry : symtab->data)
-      {
-	if (entry.name == NULL)
-	  continue;
-	gdb_assert (entry.index_offset == 0);
-
-	/* Finding before inserting is faster than always trying to
-	   insert, because inserting always allocates a node, does the
-	   lookup, and then destroys the new node if another node
-	   already had the same key.  C++17 try_emplace will avoid
-	   this.  */
-	const auto found
-	  = symbol_hash_table.find (entry.cu_indices);
-	if (found != symbol_hash_table.end ())
-	  {
-	    entry.index_offset = found->second;
-	    continue;
-	  }
-
-	symbol_hash_table.emplace (entry.cu_indices, cpool.size ());
-	entry.index_offset = cpool.size ();
-	cpool.append_data (MAYBE_SWAP (entry.cu_indices.size ()));
-	for (const auto index : entry.cu_indices)
-	  cpool.append_data (MAYBE_SWAP (index));
-      }
-  }
-
-  /* Now write out the hash table.  */
-  std::unordered_map<c_str_view, offset_type, c_str_view_hasher> str_table;
-  for (const auto &entry : symtab->data)
-    {
-      offset_type str_off, vec_off;
-
-      if (entry.name != NULL)
-	{
-	  const auto insertpair = str_table.emplace (entry.name, cpool.size ());
-	  if (insertpair.second)
-	    cpool.append_cstr0 (entry.name);
-	  str_off = insertpair.first->second;
-	  vec_off = entry.index_offset;
-	}
-      else
-	{
-	  /* While 0 is a valid constant pool index, it is not valid
-	     to have 0 for both offsets.  */
-	  str_off = 0;
-	  vec_off = 0;
-	}
-
-      output.append_data (MAYBE_SWAP (str_off));
-      output.append_data (MAYBE_SWAP (vec_off));
-    }
-}
-
-typedef std::unordered_map<partial_symtab *, unsigned int> psym_index_map;
-
-/* Helper struct for building the address table.  */
-struct addrmap_index_data
-{
-  addrmap_index_data (data_buf &addr_vec_, psym_index_map &cu_index_htab_)
-    : addr_vec (addr_vec_), cu_index_htab (cu_index_htab_)
-  {}
-
-  struct objfile *objfile;
-  data_buf &addr_vec;
-  psym_index_map &cu_index_htab;
-
-  /* Non-zero if the previous_* fields are valid.
-     We can't write an entry until we see the next entry (since it is only then
-     that we know the end of the entry).  */
-  int previous_valid;
-  /* Index of the CU in the table of all CUs in the index file.  */
-  unsigned int previous_cu_index;
-  /* Start address of the CU.  */
-  CORE_ADDR previous_cu_start;
-};
-
-/* Write an address entry to ADDR_VEC.  */
-
-static void
-add_address_entry (struct objfile *objfile, data_buf &addr_vec,
-		   CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
-{
-  addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, start);
-  addr_vec.append_uint (8, BFD_ENDIAN_LITTLE, end);
-  addr_vec.append_data (MAYBE_SWAP (cu_index));
-}
-
-/* Worker function for traversing an addrmap to build the address table.  */
-
-static int
-add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
-{
-  struct addrmap_index_data *data = (struct addrmap_index_data *) datap;
-  struct partial_symtab *pst = (struct partial_symtab *) obj;
-
-  if (data->previous_valid)
-    add_address_entry (data->objfile, data->addr_vec,
-		       data->previous_cu_start, start_addr,
-		       data->previous_cu_index);
-
-  data->previous_cu_start = start_addr;
-  if (pst != NULL)
-    {
-      const auto it = data->cu_index_htab.find (pst);
-      gdb_assert (it != data->cu_index_htab.cend ());
-      data->previous_cu_index = it->second;
-      data->previous_valid = 1;
-    }
-  else
-    data->previous_valid = 0;
-
-  return 0;
-}
-
-/* Write OBJFILE's address map to ADDR_VEC.
-   CU_INDEX_HTAB is used to map addrmap entries to their CU indices
-   in the index file.  */
-
-static void
-write_address_map (struct objfile *objfile, data_buf &addr_vec,
-		   psym_index_map &cu_index_htab)
-{
-  struct addrmap_index_data addrmap_index_data (addr_vec, cu_index_htab);
-
-  /* When writing the address table, we have to cope with the fact that
-     the addrmap iterator only provides the start of a region; we have to
-     wait until the next invocation to get the start of the next region.  */
-
-  addrmap_index_data.objfile = objfile;
-  addrmap_index_data.previous_valid = 0;
-
-  addrmap_foreach (objfile->partial_symtabs->psymtabs_addrmap,
-		   add_address_entry_worker, &addrmap_index_data);
-
-  /* It's highly unlikely the last entry (end address = 0xff...ff)
-     is valid, but we should still handle it.
-     The end address is recorded as the start of the next region, but that
-     doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
-     anyway.  */
-  if (addrmap_index_data.previous_valid)
-    add_address_entry (objfile, addr_vec,
-		       addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
-		       addrmap_index_data.previous_cu_index);
-}
-
-/* Return the symbol kind of PSYM.  */
-
-static gdb_index_symbol_kind
-symbol_kind (struct partial_symbol *psym)
-{
-  domain_enum domain = psym->domain;
-  enum address_class aclass = psym->aclass;
-
-  switch (domain)
-    {
-    case VAR_DOMAIN:
-      switch (aclass)
-	{
-	case LOC_BLOCK:
-	  return GDB_INDEX_SYMBOL_KIND_FUNCTION;
-	case LOC_TYPEDEF:
-	  return GDB_INDEX_SYMBOL_KIND_TYPE;
-	case LOC_COMPUTED:
-	case LOC_CONST_BYTES:
-	case LOC_OPTIMIZED_OUT:
-	case LOC_STATIC:
-	  return GDB_INDEX_SYMBOL_KIND_VARIABLE;
-	case LOC_CONST:
-	  /* Note: It's currently impossible to recognize psyms as enum values
-	     short of reading the type info.  For now punt.  */
-	  return GDB_INDEX_SYMBOL_KIND_VARIABLE;
-	default:
-	  /* There are other LOC_FOO values that one might want to classify
-	     as variables, but dwarf2read.c doesn't currently use them.  */
-	  return GDB_INDEX_SYMBOL_KIND_OTHER;
-	}
-    case STRUCT_DOMAIN:
-      return GDB_INDEX_SYMBOL_KIND_TYPE;
-    default:
-      return GDB_INDEX_SYMBOL_KIND_OTHER;
-    }
-}
-
-/* Add a list of partial symbols to SYMTAB.  */
-
-static void
-write_psymbols (struct mapped_symtab *symtab,
-		std::unordered_set<partial_symbol *> &psyms_seen,
-		struct partial_symbol **psymp,
-		int count,
-		offset_type cu_index,
-		int is_static)
-{
-  for (; count-- > 0; ++psymp)
-    {
-      struct partial_symbol *psym = *psymp;
-
-      if (psym->ginfo.language == language_ada)
-	error (_("Ada is not currently supported by the index; "
-		 "use the DWARF 5 index instead"));
-
-      /* Only add a given psymbol once.  */
-      if (psyms_seen.insert (psym).second)
-	{
-	  gdb_index_symbol_kind kind = symbol_kind (psym);
-
-	  add_index_entry (symtab, psym->ginfo.search_name (),
-			   is_static, kind, cu_index);
-	}
-    }
-}
-
-/* A helper struct used when iterating over debug_types.  */
-struct signatured_type_index_data
-{
-  signatured_type_index_data (data_buf &types_list_,
-                              std::unordered_set<partial_symbol *> &psyms_seen_)
-    : types_list (types_list_), psyms_seen (psyms_seen_)
-  {}
-
-  struct objfile *objfile;
-  struct mapped_symtab *symtab;
-  data_buf &types_list;
-  std::unordered_set<partial_symbol *> &psyms_seen;
-  int cu_index;
-};
-
-/* A helper function that writes a single signatured_type to an
-   obstack.  */
-
-static int
-write_one_signatured_type (void **slot, void *d)
-{
-  struct signatured_type_index_data *info
-    = (struct signatured_type_index_data *) d;
-  struct signatured_type *entry = (struct signatured_type *) *slot;
-  struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
-
-  write_psymbols (info->symtab,
-		  info->psyms_seen,
-		  (info->objfile->partial_symtabs->global_psymbols.data ()
-		   + psymtab->globals_offset),
-		  psymtab->n_global_syms, info->cu_index,
-		  0);
-  write_psymbols (info->symtab,
-		  info->psyms_seen,
-		  (info->objfile->partial_symtabs->static_psymbols.data ()
-		   + psymtab->statics_offset),
-		  psymtab->n_static_syms, info->cu_index,
-		  1);
-
-  info->types_list.append_uint (8, BFD_ENDIAN_LITTLE,
-				to_underlying (entry->per_cu.sect_off));
-  info->types_list.append_uint (8, BFD_ENDIAN_LITTLE,
-				to_underlying (entry->type_offset_in_tu));
-  info->types_list.append_uint (8, BFD_ENDIAN_LITTLE, entry->signature);
-
-  ++info->cu_index;
-
-  return 1;
-}
-
-/* Recurse into all "included" dependencies and count their symbols as
-   if they appeared in this psymtab.  */
-
-static void
-recursively_count_psymbols (struct partial_symtab *psymtab,
-			    size_t &psyms_seen)
-{
-  for (int i = 0; i < psymtab->number_of_dependencies; ++i)
-    if (psymtab->dependencies[i]->user != NULL)
-      recursively_count_psymbols (psymtab->dependencies[i],
-				  psyms_seen);
-
-  psyms_seen += psymtab->n_global_syms;
-  psyms_seen += psymtab->n_static_syms;
-}
-
-/* Recurse into all "included" dependencies and write their symbols as
-   if they appeared in this psymtab.  */
-
-static void
-recursively_write_psymbols (struct objfile *objfile,
-			    struct partial_symtab *psymtab,
-			    struct mapped_symtab *symtab,
-			    std::unordered_set<partial_symbol *> &psyms_seen,
-			    offset_type cu_index)
-{
-  int i;
-
-  for (i = 0; i < psymtab->number_of_dependencies; ++i)
-    if (psymtab->dependencies[i]->user != NULL)
-      recursively_write_psymbols (objfile, psymtab->dependencies[i],
-				  symtab, psyms_seen, cu_index);
-
-  write_psymbols (symtab,
-		  psyms_seen,
-		  (objfile->partial_symtabs->global_psymbols.data ()
-		   + psymtab->globals_offset),
-		  psymtab->n_global_syms, cu_index,
-		  0);
-  write_psymbols (symtab,
-		  psyms_seen,
-		  (objfile->partial_symtabs->static_psymbols.data ()
-		   + psymtab->statics_offset),
-		  psymtab->n_static_syms, cu_index,
-		  1);
-}
-
-/* DWARF-5 .debug_names builder.  */
-class debug_names
-{
-public:
-  debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile, bool is_dwarf64,
-	       bfd_endian dwarf5_byte_order)
-    : m_dwarf5_byte_order (dwarf5_byte_order),
-      m_dwarf32 (dwarf5_byte_order),
-      m_dwarf64 (dwarf5_byte_order),
-      m_dwarf (is_dwarf64
-	       ? static_cast<dwarf &> (m_dwarf64)
-	       : static_cast<dwarf &> (m_dwarf32)),
-      m_name_table_string_offs (m_dwarf.name_table_string_offs),
-      m_name_table_entry_offs (m_dwarf.name_table_entry_offs),
-      m_debugstrlookup (dwarf2_per_objfile)
-  {}
-
-  int dwarf5_offset_size () const
-  {
-    const bool dwarf5_is_dwarf64 = &m_dwarf == &m_dwarf64;
-    return dwarf5_is_dwarf64 ? 8 : 4;
-  }
-
-  /* Is this symbol from DW_TAG_compile_unit or DW_TAG_type_unit?  */
-  enum class unit_kind { cu, tu };
-
-  /* Insert one symbol.  */
-  void insert (const partial_symbol *psym, int cu_index, bool is_static,
-	       unit_kind kind)
-  {
-    const int dwarf_tag = psymbol_tag (psym);
-    if (dwarf_tag == 0)
-      return;
-    const char *name = psym->ginfo.search_name ();
-
-    if (psym->ginfo.language == language_ada)
-      {
-	/* We want to ensure that the Ada main function's name appears
-	   verbatim in the index.  However, this name will be of the
-	   form "_ada_mumble", and will be rewritten by ada_decode.
-	   So, recognize it specially here and add it to the index by
-	   hand.  */
-	if (strcmp (main_name (), name) == 0)
-	  {
-	    const auto insertpair
-	      = m_name_to_value_set.emplace (c_str_view (name),
-					     std::set<symbol_value> ());
-	    std::set<symbol_value> &value_set = insertpair.first->second;
-	    value_set.emplace (symbol_value (dwarf_tag, cu_index, is_static,
-					     kind));
-	  }
-
-	/* In order for the index to work when read back into gdb, it
-	   has to supply a funny form of the name: it should be the
-	   encoded name, with any suffixes stripped.  Using the
-	   ordinary encoded name will not work properly with the
-	   searching logic in find_name_components_bounds; nor will
-	   using the decoded name.  Furthermore, an Ada "verbatim"
-	   name (of the form "<MumBle>") must be entered without the
-	   angle brackets.  Note that the current index is unusual,
-	   see PR symtab/24820 for details.  */
-	std::string decoded = ada_decode (name);
-	if (decoded[0] == '<')
-	  name = (char *) obstack_copy0 (&m_string_obstack,
-					 decoded.c_str () + 1,
-					 decoded.length () - 2);
-	else
-	  name = obstack_strdup (&m_string_obstack,
-				 ada_encode (decoded.c_str ()));
-      }
-
-    const auto insertpair
-      = m_name_to_value_set.emplace (c_str_view (name),
-				     std::set<symbol_value> ());
-    std::set<symbol_value> &value_set = insertpair.first->second;
-    value_set.emplace (symbol_value (dwarf_tag, cu_index, is_static, kind));
-  }
-
-  /* Build all the tables.  All symbols must be already inserted.
-     This function does not call file_write, caller has to do it
-     afterwards.  */
-  void build ()
-  {
-    /* Verify the build method has not be called twice.  */
-    gdb_assert (m_abbrev_table.empty ());
-    const size_t name_count = m_name_to_value_set.size ();
-    m_bucket_table.resize
-      (std::pow (2, std::ceil (std::log2 (name_count * 4 / 3))));
-    m_hash_table.reserve (name_count);
-    m_name_table_string_offs.reserve (name_count);
-    m_name_table_entry_offs.reserve (name_count);
-
-    /* Map each hash of symbol to its name and value.  */
-    struct hash_it_pair
-    {
-      uint32_t hash;
-      decltype (m_name_to_value_set)::const_iterator it;
-    };
-    std::vector<std::forward_list<hash_it_pair>> bucket_hash;
-    bucket_hash.resize (m_bucket_table.size ());
-    for (decltype (m_name_to_value_set)::const_iterator it
-	   = m_name_to_value_set.cbegin ();
-	 it != m_name_to_value_set.cend ();
-	 ++it)
-      {
-	const char *const name = it->first.c_str ();
-	const uint32_t hash = dwarf5_djb_hash (name);
-	hash_it_pair hashitpair;
-	hashitpair.hash = hash;
-	hashitpair.it = it;
-	auto &slot = bucket_hash[hash % bucket_hash.size()];
-	slot.push_front (std::move (hashitpair));
-      }
-    for (size_t bucket_ix = 0; bucket_ix < bucket_hash.size (); ++bucket_ix)
-      {
-	const std::forward_list<hash_it_pair> &hashitlist
-	  = bucket_hash[bucket_ix];
-	if (hashitlist.empty ())
-	  continue;
-	uint32_t &bucket_slot = m_bucket_table[bucket_ix];
-	/* The hashes array is indexed starting at 1.  */
-	store_unsigned_integer (reinterpret_cast<gdb_byte *> (&bucket_slot),
-				sizeof (bucket_slot), m_dwarf5_byte_order,
-				m_hash_table.size () + 1);
-	for (const hash_it_pair &hashitpair : hashitlist)
-	  {
-	    m_hash_table.push_back (0);
-	    store_unsigned_integer (reinterpret_cast<gdb_byte *>
-							(&m_hash_table.back ()),
-				    sizeof (m_hash_table.back ()),
-				    m_dwarf5_byte_order, hashitpair.hash);
-	    const c_str_view &name = hashitpair.it->first;
-	    const std::set<symbol_value> &value_set = hashitpair.it->second;
-	    m_name_table_string_offs.push_back_reorder
-	      (m_debugstrlookup.lookup (name.c_str ()));
-	    m_name_table_entry_offs.push_back_reorder (m_entry_pool.size ());
-	    gdb_assert (!value_set.empty ());
-	    for (const symbol_value &value : value_set)
-	      {
-		int &idx = m_indexkey_to_idx[index_key (value.dwarf_tag,
-							value.is_static,
-							value.kind)];
-		if (idx == 0)
-		  {
-		    idx = m_idx_next++;
-		    m_abbrev_table.append_unsigned_leb128 (idx);
-		    m_abbrev_table.append_unsigned_leb128 (value.dwarf_tag);
-		    m_abbrev_table.append_unsigned_leb128
-			      (value.kind == unit_kind::cu ? DW_IDX_compile_unit
-							   : DW_IDX_type_unit);
-		    m_abbrev_table.append_unsigned_leb128 (DW_FORM_udata);
-		    m_abbrev_table.append_unsigned_leb128 (value.is_static
-							   ? DW_IDX_GNU_internal
-							   : DW_IDX_GNU_external);
-		    m_abbrev_table.append_unsigned_leb128 (DW_FORM_flag_present);
-
-		    /* Terminate attributes list.  */
-		    m_abbrev_table.append_unsigned_leb128 (0);
-		    m_abbrev_table.append_unsigned_leb128 (0);
-		  }
-
-		m_entry_pool.append_unsigned_leb128 (idx);
-		m_entry_pool.append_unsigned_leb128 (value.cu_index);
-	      }
-
-	    /* Terminate the list of CUs.  */
-	    m_entry_pool.append_unsigned_leb128 (0);
-	  }
-      }
-    gdb_assert (m_hash_table.size () == name_count);
-
-    /* Terminate tags list.  */
-    m_abbrev_table.append_unsigned_leb128 (0);
-  }
-
-  /* Return .debug_names bucket count.  This must be called only after
-     calling the build method.  */
-  uint32_t bucket_count () const
-  {
-    /* Verify the build method has been already called.  */
-    gdb_assert (!m_abbrev_table.empty ());
-    const uint32_t retval = m_bucket_table.size ();
-
-    /* Check for overflow.  */
-    gdb_assert (retval == m_bucket_table.size ());
-    return retval;
-  }
-
-  /* Return .debug_names names count.  This must be called only after
-     calling the build method.  */
-  uint32_t name_count () const
-  {
-    /* Verify the build method has been already called.  */
-    gdb_assert (!m_abbrev_table.empty ());
-    const uint32_t retval = m_hash_table.size ();
-
-    /* Check for overflow.  */
-    gdb_assert (retval == m_hash_table.size ());
-    return retval;
-  }
-
-  /* Return number of bytes of .debug_names abbreviation table.  This
-     must be called only after calling the build method.  */
-  uint32_t abbrev_table_bytes () const
-  {
-    gdb_assert (!m_abbrev_table.empty ());
-    return m_abbrev_table.size ();
-  }
-
-  /* Recurse into all "included" dependencies and store their symbols
-     as if they appeared in this psymtab.  */
-  void recursively_write_psymbols
-    (struct objfile *objfile,
-     struct partial_symtab *psymtab,
-     std::unordered_set<partial_symbol *> &psyms_seen,
-     int cu_index)
-  {
-    for (int i = 0; i < psymtab->number_of_dependencies; ++i)
-      if (psymtab->dependencies[i]->user != NULL)
-	recursively_write_psymbols (objfile, psymtab->dependencies[i],
-				    psyms_seen, cu_index);
-
-    write_psymbols (psyms_seen,
-		    (objfile->partial_symtabs->global_psymbols.data ()
-		     + psymtab->globals_offset),
-		    psymtab->n_global_syms, cu_index, false, unit_kind::cu);
-    write_psymbols (psyms_seen,
-		    (objfile->partial_symtabs->static_psymbols.data ()
-		     + psymtab->statics_offset),
-		    psymtab->n_static_syms, cu_index, true, unit_kind::cu);
-  }
-
-  /* Return number of bytes the .debug_names section will have.  This
-     must be called only after calling the build method.  */
-  size_t bytes () const
-  {
-    /* Verify the build method has been already called.  */
-    gdb_assert (!m_abbrev_table.empty ());
-    size_t expected_bytes = 0;
-    expected_bytes += m_bucket_table.size () * sizeof (m_bucket_table[0]);
-    expected_bytes += m_hash_table.size () * sizeof (m_hash_table[0]);
-    expected_bytes += m_name_table_string_offs.bytes ();
-    expected_bytes += m_name_table_entry_offs.bytes ();
-    expected_bytes += m_abbrev_table.size ();
-    expected_bytes += m_entry_pool.size ();
-    return expected_bytes;
-  }
-
-  /* Write .debug_names to FILE_NAMES and .debug_str addition to
-     FILE_STR.  This must be called only after calling the build
-     method.  */
-  void file_write (FILE *file_names, FILE *file_str) const
-  {
-    /* Verify the build method has been already called.  */
-    gdb_assert (!m_abbrev_table.empty ());
-    ::file_write (file_names, m_bucket_table);
-    ::file_write (file_names, m_hash_table);
-    m_name_table_string_offs.file_write (file_names);
-    m_name_table_entry_offs.file_write (file_names);
-    m_abbrev_table.file_write (file_names);
-    m_entry_pool.file_write (file_names);
-    m_debugstrlookup.file_write (file_str);
-  }
-
-  /* A helper user data for write_one_signatured_type.  */
-  class write_one_signatured_type_data
-  {
-  public:
-    write_one_signatured_type_data (debug_names &nametable_,
-                                    signatured_type_index_data &&info_)
-    : nametable (nametable_), info (std::move (info_))
-    {}
-    debug_names &nametable;
-    struct signatured_type_index_data info;
-  };
-
-  /* A helper function to pass write_one_signatured_type to
-     htab_traverse_noresize.  */
-  static int
-  write_one_signatured_type (void **slot, void *d)
-  {
-    write_one_signatured_type_data *data = (write_one_signatured_type_data *) d;
-    struct signatured_type_index_data *info = &data->info;
-    struct signatured_type *entry = (struct signatured_type *) *slot;
-
-    data->nametable.write_one_signatured_type (entry, info);
-
-    return 1;
-  }
-
-private:
-
-  /* Storage for symbol names mapping them to their .debug_str section
-     offsets.  */
-  class debug_str_lookup
-  {
-  public:
-
-    /* Object constructor to be called for current DWARF2_PER_OBJFILE.
-       All .debug_str section strings are automatically stored.  */
-    debug_str_lookup (struct dwarf2_per_objfile *dwarf2_per_objfile)
-      : m_abfd (dwarf2_per_objfile->objfile->obfd),
-	m_dwarf2_per_objfile (dwarf2_per_objfile)
-    {
-      dwarf2_read_section (dwarf2_per_objfile->objfile,
-			   &dwarf2_per_objfile->str);
-      if (dwarf2_per_objfile->str.buffer == NULL)
-	return;
-      for (const gdb_byte *data = dwarf2_per_objfile->str.buffer;
-	   data < (dwarf2_per_objfile->str.buffer
-		   + dwarf2_per_objfile->str.size);)
-	{
-	  const char *const s = reinterpret_cast<const char *> (data);
-	  const auto insertpair
-	    = m_str_table.emplace (c_str_view (s),
-				   data - dwarf2_per_objfile->str.buffer);
-	  if (!insertpair.second)
-	    complaint (_("Duplicate string \"%s\" in "
-			 ".debug_str section [in module %s]"),
-		       s, bfd_get_filename (m_abfd));
-	  data += strlen (s) + 1;
-	}
-    }
-
-    /* Return offset of symbol name S in the .debug_str section.  Add
-       such symbol to the section's end if it does not exist there
-       yet.  */
-    size_t lookup (const char *s)
-    {
-      const auto it = m_str_table.find (c_str_view (s));
-      if (it != m_str_table.end ())
-	return it->second;
-      const size_t offset = (m_dwarf2_per_objfile->str.size
-			     + m_str_add_buf.size ());
-      m_str_table.emplace (c_str_view (s), offset);
-      m_str_add_buf.append_cstr0 (s);
-      return offset;
-    }
-
-    /* Append the end of the .debug_str section to FILE.  */
-    void file_write (FILE *file) const
-    {
-      m_str_add_buf.file_write (file);
-    }
-
-  private:
-    std::unordered_map<c_str_view, size_t, c_str_view_hasher> m_str_table;
-    bfd *const m_abfd;
-    struct dwarf2_per_objfile *m_dwarf2_per_objfile;
-
-    /* Data to add at the end of .debug_str for new needed symbol names.  */
-    data_buf m_str_add_buf;
-  };
-
-  /* Container to map used DWARF tags to their .debug_names abbreviation
-     tags.  */
-  class index_key
-  {
-  public:
-    index_key (int dwarf_tag_, bool is_static_, unit_kind kind_)
-      : dwarf_tag (dwarf_tag_), is_static (is_static_), kind (kind_)
-    {
-    }
-
-    bool
-    operator== (const index_key &other) const
-    {
-      return (dwarf_tag == other.dwarf_tag && is_static == other.is_static
-	      && kind == other.kind);
-    }
-
-    const int dwarf_tag;
-    const bool is_static;
-    const unit_kind kind;
-  };
-
-  /* Provide std::unordered_map::hasher for index_key.  */
-  class index_key_hasher
-  {
-  public:
-    size_t
-    operator () (const index_key &key) const
-    {
-      return (std::hash<int>() (key.dwarf_tag) << 1) | key.is_static;
-    }
-  };
-
-  /* Parameters of one symbol entry.  */
-  class symbol_value
-  {
-  public:
-    const int dwarf_tag, cu_index;
-    const bool is_static;
-    const unit_kind kind;
-
-    symbol_value (int dwarf_tag_, int cu_index_, bool is_static_,
-		  unit_kind kind_)
-      : dwarf_tag (dwarf_tag_), cu_index (cu_index_), is_static (is_static_),
-        kind (kind_)
-    {}
-
-    bool
-    operator< (const symbol_value &other) const
-    {
-#define X(n) \
-  do \
-    { \
-      if (n < other.n) \
-	return true; \
-      if (n > other.n) \
-	return false; \
-    } \
-  while (0)
-      X (dwarf_tag);
-      X (is_static);
-      X (kind);
-      X (cu_index);
-#undef X
-      return false;
-    }
-  };
-
-  /* Abstract base class to unify DWARF-32 and DWARF-64 name table
-     output.  */
-  class offset_vec
-  {
-  protected:
-    const bfd_endian dwarf5_byte_order;
-  public:
-    explicit offset_vec (bfd_endian dwarf5_byte_order_)
-      : dwarf5_byte_order (dwarf5_byte_order_)
-    {}
-
-    /* Call std::vector::reserve for NELEM elements.  */
-    virtual void reserve (size_t nelem) = 0;
-
-    /* Call std::vector::push_back with store_unsigned_integer byte
-       reordering for ELEM.  */
-    virtual void push_back_reorder (size_t elem) = 0;
-
-    /* Return expected output size in bytes.  */
-    virtual size_t bytes () const = 0;
-
-    /* Write name table to FILE.  */
-    virtual void file_write (FILE *file) const = 0;
-  };
-
-  /* Template to unify DWARF-32 and DWARF-64 output.  */
-  template<typename OffsetSize>
-  class offset_vec_tmpl : public offset_vec
-  {
-  public:
-    explicit offset_vec_tmpl (bfd_endian dwarf5_byte_order_)
-      : offset_vec (dwarf5_byte_order_)
-    {}
-
-    /* Implement offset_vec::reserve.  */
-    void reserve (size_t nelem) override
-    {
-      m_vec.reserve (nelem);
-    }
-
-    /* Implement offset_vec::push_back_reorder.  */
-    void push_back_reorder (size_t elem) override
-    {
-      m_vec.push_back (elem);
-      /* Check for overflow.  */
-      gdb_assert (m_vec.back () == elem);
-      store_unsigned_integer (reinterpret_cast<gdb_byte *> (&m_vec.back ()),
-			      sizeof (m_vec.back ()), dwarf5_byte_order, elem);
-    }
-
-    /* Implement offset_vec::bytes.  */
-    size_t bytes () const override
-    {
-      return m_vec.size () * sizeof (m_vec[0]);
-    }
-
-    /* Implement offset_vec::file_write.  */
-    void file_write (FILE *file) const override
-    {
-      ::file_write (file, m_vec);
-    }
-
-  private:
-    std::vector<OffsetSize> m_vec;
-  };
-
-  /* Base class to unify DWARF-32 and DWARF-64 .debug_names output
-     respecting name table width.  */
-  class dwarf
-  {
-  public:
-    offset_vec &name_table_string_offs, &name_table_entry_offs;
-
-    dwarf (offset_vec &name_table_string_offs_,
-	   offset_vec &name_table_entry_offs_)
-      : name_table_string_offs (name_table_string_offs_),
-	name_table_entry_offs (name_table_entry_offs_)
-    {
-    }
-  };
-
-  /* Template to unify DWARF-32 and DWARF-64 .debug_names output
-     respecting name table width.  */
-  template<typename OffsetSize>
-  class dwarf_tmpl : public dwarf
-  {
-  public:
-    explicit dwarf_tmpl (bfd_endian dwarf5_byte_order_)
-      : dwarf (m_name_table_string_offs, m_name_table_entry_offs),
-	m_name_table_string_offs (dwarf5_byte_order_),
-	m_name_table_entry_offs (dwarf5_byte_order_)
-    {}
-
-  private:
-    offset_vec_tmpl<OffsetSize> m_name_table_string_offs;
-    offset_vec_tmpl<OffsetSize> m_name_table_entry_offs;
-  };
-
-  /* Try to reconstruct original DWARF tag for given partial_symbol.
-     This function is not DWARF-5 compliant but it is sufficient for
-     GDB as a DWARF-5 index consumer.  */
-  static int psymbol_tag (const struct partial_symbol *psym)
-  {
-    domain_enum domain = psym->domain;
-    enum address_class aclass = psym->aclass;
-
-    switch (domain)
-      {
-      case VAR_DOMAIN:
-	switch (aclass)
-	  {
-	  case LOC_BLOCK:
-	    return DW_TAG_subprogram;
-	  case LOC_TYPEDEF:
-	    return DW_TAG_typedef;
-	  case LOC_COMPUTED:
-	  case LOC_CONST_BYTES:
-	  case LOC_OPTIMIZED_OUT:
-	  case LOC_STATIC:
-	    return DW_TAG_variable;
-	  case LOC_CONST:
-	    /* Note: It's currently impossible to recognize psyms as enum values
-	       short of reading the type info.  For now punt.  */
-	    return DW_TAG_variable;
-	  default:
-	    /* There are other LOC_FOO values that one might want to classify
-	       as variables, but dwarf2read.c doesn't currently use them.  */
-	    return DW_TAG_variable;
-	  }
-      case STRUCT_DOMAIN:
-	return DW_TAG_structure_type;
-      default:
-	return 0;
-      }
-  }
-
-  /* Call insert for all partial symbols and mark them in PSYMS_SEEN.  */
-  void write_psymbols (std::unordered_set<partial_symbol *> &psyms_seen,
-		       struct partial_symbol **psymp, int count, int cu_index,
-		       bool is_static, unit_kind kind)
-  {
-    for (; count-- > 0; ++psymp)
-      {
-	struct partial_symbol *psym = *psymp;
-
-	/* Only add a given psymbol once.  */
-	if (psyms_seen.insert (psym).second)
-	  insert (psym, cu_index, is_static, kind);
-      }
-  }
-
-  /* A helper function that writes a single signatured_type
-     to a debug_names.  */
-  void
-  write_one_signatured_type (struct signatured_type *entry,
-			     struct signatured_type_index_data *info)
-  {
-    struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
-
-    write_psymbols (info->psyms_seen,
-		    (info->objfile->partial_symtabs->global_psymbols.data ()
-		     + psymtab->globals_offset),
-		    psymtab->n_global_syms, info->cu_index, false,
-		    unit_kind::tu);
-    write_psymbols (info->psyms_seen,
-		    (info->objfile->partial_symtabs->static_psymbols.data ()
-		     + psymtab->statics_offset),
-		    psymtab->n_static_syms, info->cu_index, true,
-		    unit_kind::tu);
-
-    info->types_list.append_uint (dwarf5_offset_size (), m_dwarf5_byte_order,
-				  to_underlying (entry->per_cu.sect_off));
-
-    ++info->cu_index;
-  }
-
-  /* Store value of each symbol.  */
-  std::unordered_map<c_str_view, std::set<symbol_value>, c_str_view_hasher>
-    m_name_to_value_set;
-
-  /* Tables of DWARF-5 .debug_names.  They are in object file byte
-     order.  */
-  std::vector<uint32_t> m_bucket_table;
-  std::vector<uint32_t> m_hash_table;
-
-  const bfd_endian m_dwarf5_byte_order;
-  dwarf_tmpl<uint32_t> m_dwarf32;
-  dwarf_tmpl<uint64_t> m_dwarf64;
-  dwarf &m_dwarf;
-  offset_vec &m_name_table_string_offs, &m_name_table_entry_offs;
-  debug_str_lookup m_debugstrlookup;
-
-  /* Map each used .debug_names abbreviation tag parameter to its
-     index value.  */
-  std::unordered_map<index_key, int, index_key_hasher> m_indexkey_to_idx;
-
-  /* Next unused .debug_names abbreviation tag for
-     m_indexkey_to_idx.  */
-  int m_idx_next = 1;
-
-  /* .debug_names abbreviation table.  */
-  data_buf m_abbrev_table;
-
-  /* .debug_names entry pool.  */
-  data_buf m_entry_pool;
-
-  /* Temporary storage for Ada names.  */
-  auto_obstack m_string_obstack;
-};
-
-/* Return iff any of the needed offsets does not fit into 32-bit
-   .debug_names section.  */
-
-static bool
-check_dwarf64_offsets (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-    {
-      if (to_underlying (per_cu->sect_off) >= (static_cast<uint64_t> (1) << 32))
-	return true;
-    }
-  for (const signatured_type *sigtype : dwarf2_per_objfile->all_type_units)
-    {
-      const dwarf2_per_cu_data &per_cu = sigtype->per_cu;
-
-      if (to_underlying (per_cu.sect_off) >= (static_cast<uint64_t> (1) << 32))
-	return true;
-    }
-  return false;
-}
-
-/* The psyms_seen set is potentially going to be largish (~40k
-   elements when indexing a -g3 build of GDB itself).  Estimate the
-   number of elements in order to avoid too many rehashes, which
-   require rebuilding buckets and thus many trips to
-   malloc/free.  */
-
-static size_t
-psyms_seen_size (struct dwarf2_per_objfile *dwarf2_per_objfile)
-{
-  size_t psyms_count = 0;
-  for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
-    {
-      struct partial_symtab *psymtab = per_cu->v.psymtab;
-
-      if (psymtab != NULL && psymtab->user == NULL)
-	recursively_count_psymbols (psymtab, psyms_count);
-    }
-  /* Generating an index for gdb itself shows a ratio of
-     TOTAL_SEEN_SYMS/UNIQUE_SYMS or ~5.  4 seems like a good bet.  */
-  return psyms_count / 4;
-}
-
-/* Assert that FILE's size is EXPECTED_SIZE.  Assumes file's seek
-   position is at the end of the file.  */
-
-static void
-assert_file_size (FILE *file, size_t expected_size)
-{
-  const auto file_size = ftell (file);
-  if (file_size == -1)
-    perror_with_name (("ftell"));
-  gdb_assert (file_size == expected_size);
-}
-
-/* Write a gdb index file to OUT_FILE from all the sections passed as
-   arguments.  */
-
-static void
-write_gdbindex_1 (FILE *out_file,
-		  const data_buf &cu_list,
-		  const data_buf &types_cu_list,
-		  const data_buf &addr_vec,
-		  const data_buf &symtab_vec,
-		  const data_buf &constant_pool)
-{
-  data_buf contents;
-  const offset_type size_of_header = 6 * sizeof (offset_type);
-  offset_type total_len = size_of_header;
-
-  /* The version number.  */
-  contents.append_data (MAYBE_SWAP (8));
-
-  /* The offset of the CU list from the start of the file.  */
-  contents.append_data (MAYBE_SWAP (total_len));
-  total_len += cu_list.size ();
-
-  /* The offset of the types CU list from the start of the file.  */
-  contents.append_data (MAYBE_SWAP (total_len));
-  total_len += types_cu_list.size ();
-
-  /* The offset of the address table from the start of the file.  */
-  contents.append_data (MAYBE_SWAP (total_len));
-  total_len += addr_vec.size ();
-
-  /* The offset of the symbol table from the start of the file.  */
-  contents.append_data (MAYBE_SWAP (total_len));
-  total_len += symtab_vec.size ();
-
-  /* The offset of the constant pool from the start of the file.  */
-  contents.append_data (MAYBE_SWAP (total_len));
-  total_len += constant_pool.size ();
-
-  gdb_assert (contents.size () == size_of_header);
-
-  contents.file_write (out_file);
-  cu_list.file_write (out_file);
-  types_cu_list.file_write (out_file);
-  addr_vec.file_write (out_file);
-  symtab_vec.file_write (out_file);
-  constant_pool.file_write (out_file);
-
-  assert_file_size (out_file, total_len);
-}
-
-/* Write contents of a .gdb_index section for OBJFILE into OUT_FILE.
-   If OBJFILE has an associated dwz file, write contents of a .gdb_index
-   section for that dwz file into DWZ_OUT_FILE.  If OBJFILE does not have an
-   associated dwz file, DWZ_OUT_FILE must be NULL.  */
-
-static void
-write_gdbindex (struct dwarf2_per_objfile *dwarf2_per_objfile, FILE *out_file,
-		FILE *dwz_out_file)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  mapped_symtab symtab;
-  data_buf objfile_cu_list;
-  data_buf dwz_cu_list;
-
-  /* While we're scanning CU's create a table that maps a psymtab pointer
-     (which is what addrmap records) to its index (which is what is recorded
-     in the index file).  This will later be needed to write the address
-     table.  */
-  psym_index_map cu_index_htab;
-  cu_index_htab.reserve (dwarf2_per_objfile->all_comp_units.size ());
-
-  /* The CU list is already sorted, so we don't need to do additional
-     work here.  Also, the debug_types entries do not appear in
-     all_comp_units, but only in their own hash table.  */
-
-  std::unordered_set<partial_symbol *> psyms_seen
-    (psyms_seen_size (dwarf2_per_objfile));
-  for (int i = 0; i < dwarf2_per_objfile->all_comp_units.size (); ++i)
-    {
-      struct dwarf2_per_cu_data *per_cu
-	= dwarf2_per_objfile->all_comp_units[i];
-      struct partial_symtab *psymtab = per_cu->v.psymtab;
-
-      /* CU of a shared file from 'dwz -m' may be unused by this main file.
-	 It may be referenced from a local scope but in such case it does not
-	 need to be present in .gdb_index.  */
-      if (psymtab == NULL)
-	continue;
-
-      if (psymtab->user == NULL)
-	recursively_write_psymbols (objfile, psymtab, &symtab,
-				    psyms_seen, i);
-
-      const auto insertpair = cu_index_htab.emplace (psymtab, i);
-      gdb_assert (insertpair.second);
-
-      /* The all_comp_units list contains CUs read from the objfile as well as
-	 from the eventual dwz file.  We need to place the entry in the
-	 corresponding index.  */
-      data_buf &cu_list = per_cu->is_dwz ? dwz_cu_list : objfile_cu_list;
-      cu_list.append_uint (8, BFD_ENDIAN_LITTLE,
-			   to_underlying (per_cu->sect_off));
-      cu_list.append_uint (8, BFD_ENDIAN_LITTLE, per_cu->length);
-    }
-
-  /* Dump the address map.  */
-  data_buf addr_vec;
-  write_address_map (objfile, addr_vec, cu_index_htab);
-
-  /* Write out the .debug_type entries, if any.  */
-  data_buf types_cu_list;
-  if (dwarf2_per_objfile->signatured_types)
-    {
-      signatured_type_index_data sig_data (types_cu_list,
-					   psyms_seen);
-
-      sig_data.objfile = objfile;
-      sig_data.symtab = &symtab;
-      sig_data.cu_index = dwarf2_per_objfile->all_comp_units.size ();
-      htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
-			      write_one_signatured_type, &sig_data);
-    }
-
-  /* Now that we've processed all symbols we can shrink their cu_indices
-     lists.  */
-  uniquify_cu_indices (&symtab);
-
-  data_buf symtab_vec, constant_pool;
-  write_hash_table (&symtab, symtab_vec, constant_pool);
-
-  write_gdbindex_1(out_file, objfile_cu_list, types_cu_list, addr_vec,
-		   symtab_vec, constant_pool);
-
-  if (dwz_out_file != NULL)
-    write_gdbindex_1 (dwz_out_file, dwz_cu_list, {}, {}, {}, {});
-  else
-    gdb_assert (dwz_cu_list.empty ());
-}
-
-/* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
-static const gdb_byte dwarf5_gdb_augmentation[] = { 'G', 'D', 'B', 0 };
-
-/* Write a new .debug_names section for OBJFILE into OUT_FILE, write
-   needed addition to .debug_str section to OUT_FILE_STR.  Return how
-   many bytes were expected to be written into OUT_FILE.  */
-
-static void
-write_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
-		   FILE *out_file, FILE *out_file_str)
-{
-  const bool dwarf5_is_dwarf64 = check_dwarf64_offsets (dwarf2_per_objfile);
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-  const enum bfd_endian dwarf5_byte_order
-    = gdbarch_byte_order (get_objfile_arch (objfile));
-
-  /* The CU list is already sorted, so we don't need to do additional
-     work here.  Also, the debug_types entries do not appear in
-     all_comp_units, but only in their own hash table.  */
-  data_buf cu_list;
-  debug_names nametable (dwarf2_per_objfile, dwarf5_is_dwarf64,
-			 dwarf5_byte_order);
-  std::unordered_set<partial_symbol *>
-    psyms_seen (psyms_seen_size (dwarf2_per_objfile));
-  for (int i = 0; i < dwarf2_per_objfile->all_comp_units.size (); ++i)
-    {
-      const dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->all_comp_units[i];
-      partial_symtab *psymtab = per_cu->v.psymtab;
-
-      /* CU of a shared file from 'dwz -m' may be unused by this main
-	 file.  It may be referenced from a local scope but in such
-	 case it does not need to be present in .debug_names.  */
-      if (psymtab == NULL)
-	continue;
-
-      if (psymtab->user == NULL)
-	nametable.recursively_write_psymbols (objfile, psymtab, psyms_seen, i);
-
-      cu_list.append_uint (nametable.dwarf5_offset_size (), dwarf5_byte_order,
-			   to_underlying (per_cu->sect_off));
-    }
-
-  /* Write out the .debug_type entries, if any.  */
-  data_buf types_cu_list;
-  if (dwarf2_per_objfile->signatured_types)
-    {
-      debug_names::write_one_signatured_type_data sig_data (nametable,
-			signatured_type_index_data (types_cu_list, psyms_seen));
-
-      sig_data.info.objfile = objfile;
-      /* It is used only for gdb_index.  */
-      sig_data.info.symtab = nullptr;
-      sig_data.info.cu_index = 0;
-      htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
-			      debug_names::write_one_signatured_type,
-			      &sig_data);
-    }
-
-  nametable.build ();
-
-  /* No addr_vec - DWARF-5 uses .debug_aranges generated by GCC.  */
-
-  const offset_type bytes_of_header
-    = ((dwarf5_is_dwarf64 ? 12 : 4)
-       + 2 + 2 + 7 * 4
-       + sizeof (dwarf5_gdb_augmentation));
-  size_t expected_bytes = 0;
-  expected_bytes += bytes_of_header;
-  expected_bytes += cu_list.size ();
-  expected_bytes += types_cu_list.size ();
-  expected_bytes += nametable.bytes ();
-  data_buf header;
-
-  if (!dwarf5_is_dwarf64)
-    {
-      const uint64_t size64 = expected_bytes - 4;
-      gdb_assert (size64 < 0xfffffff0);
-      header.append_uint (4, dwarf5_byte_order, size64);
-    }
-  else
-    {
-      header.append_uint (4, dwarf5_byte_order, 0xffffffff);
-      header.append_uint (8, dwarf5_byte_order, expected_bytes - 12);
-    }
-
-  /* The version number.  */
-  header.append_uint (2, dwarf5_byte_order, 5);
-
-  /* Padding.  */
-  header.append_uint (2, dwarf5_byte_order, 0);
-
-  /* comp_unit_count - The number of CUs in the CU list.  */
-  header.append_uint (4, dwarf5_byte_order,
-		      dwarf2_per_objfile->all_comp_units.size ());
-
-  /* local_type_unit_count - The number of TUs in the local TU
-     list.  */
-  header.append_uint (4, dwarf5_byte_order,
-		      dwarf2_per_objfile->all_type_units.size ());
-
-  /* foreign_type_unit_count - The number of TUs in the foreign TU
-     list.  */
-  header.append_uint (4, dwarf5_byte_order, 0);
-
-  /* bucket_count - The number of hash buckets in the hash lookup
-     table.  */
-  header.append_uint (4, dwarf5_byte_order, nametable.bucket_count ());
-
-  /* name_count - The number of unique names in the index.  */
-  header.append_uint (4, dwarf5_byte_order, nametable.name_count ());
-
-  /* abbrev_table_size - The size in bytes of the abbreviations
-     table.  */
-  header.append_uint (4, dwarf5_byte_order, nametable.abbrev_table_bytes ());
-
-  /* augmentation_string_size - The size in bytes of the augmentation
-     string.  This value is rounded up to a multiple of 4.  */
-  static_assert (sizeof (dwarf5_gdb_augmentation) % 4 == 0, "");
-  header.append_uint (4, dwarf5_byte_order, sizeof (dwarf5_gdb_augmentation));
-  header.append_data (dwarf5_gdb_augmentation);
-
-  gdb_assert (header.size () == bytes_of_header);
-
-  header.file_write (out_file);
-  cu_list.file_write (out_file);
-  types_cu_list.file_write (out_file);
-  nametable.file_write (out_file, out_file_str);
-
-  assert_file_size (out_file, expected_bytes);
-}
-
-/* This represents an index file being written (work-in-progress).
-
-   The data is initially written to a temporary file.  When the finalize method
-   is called, the file is closed and moved to its final location.
-
-   On failure (if this object is being destroyed with having called finalize),
-   the temporary file is closed and deleted.  */
-
-struct index_wip_file
-{
-  index_wip_file (const char *dir, const char *basename,
-		  const char *suffix)
-  {
-    filename = (std::string (dir) + SLASH_STRING + basename
-    		+ suffix);
-
-    filename_temp = make_temp_filename (filename);
-
-    scoped_fd out_file_fd (gdb_mkostemp_cloexec (filename_temp.data (),
-						 O_BINARY));
-    if (out_file_fd.get () == -1)
-      perror_with_name (("mkstemp"));
-
-    out_file = out_file_fd.to_file ("wb");
-
-    if (out_file == nullptr)
-      error (_("Can't open `%s' for writing"), filename_temp.data ());
-
-    unlink_file.emplace (filename_temp.data ());
-  }
-
-  void finalize ()
-  {
-    /* We want to keep the file.  */
-    unlink_file->keep ();
-
-    /* Close and move the str file in place.  */
-    unlink_file.reset ();
-    if (rename (filename_temp.data (), filename.c_str ()) != 0)
-      perror_with_name (("rename"));
-  }
-
-  std::string filename;
-  gdb::char_vector filename_temp;
-
-  /* Order matters here; we want FILE to be closed before
-     FILENAME_TEMP is unlinked, because on MS-Windows one cannot
-     delete a file that is still open.  So, we wrap the unlinker in an
-     optional and emplace it once we know the file name.  */
-  gdb::optional<gdb::unlinker> unlink_file;
-
-  gdb_file_up out_file;
-};
-
-/* See dwarf-index-write.h.  */
-
-void
-write_psymtabs_to_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
-			 const char *dir, const char *basename,
-			 const char *dwz_basename,
-			 dw_index_kind index_kind)
-{
-  struct objfile *objfile = dwarf2_per_objfile->objfile;
-
-  if (dwarf2_per_objfile->using_index)
-    error (_("Cannot use an index to create the index"));
-
-  if (dwarf2_per_objfile->types.size () > 1)
-    error (_("Cannot make an index when the file has multiple .debug_types sections"));
-
-  if (!objfile->partial_symtabs->psymtabs
-      || !objfile->partial_symtabs->psymtabs_addrmap)
-    return;
-
-  struct stat st;
-  if (stat (objfile_name (objfile), &st) < 0)
-    perror_with_name (objfile_name (objfile));
-
-  const char *index_suffix = (index_kind == dw_index_kind::DEBUG_NAMES
-			      ? INDEX5_SUFFIX : INDEX4_SUFFIX);
-
-  index_wip_file objfile_index_wip (dir, basename, index_suffix);
-  gdb::optional<index_wip_file> dwz_index_wip;
-
-  if (dwz_basename != NULL)
-      dwz_index_wip.emplace (dir, dwz_basename, index_suffix);
-
-  if (index_kind == dw_index_kind::DEBUG_NAMES)
-    {
-      index_wip_file str_wip_file (dir, basename, DEBUG_STR_SUFFIX);
-
-      write_debug_names (dwarf2_per_objfile, objfile_index_wip.out_file.get (),
-			 str_wip_file.out_file.get ());
-
-      str_wip_file.finalize ();
-    }
-  else
-    write_gdbindex (dwarf2_per_objfile, objfile_index_wip.out_file.get (),
-		    (dwz_index_wip.has_value ()
-		     ? dwz_index_wip->out_file.get () : NULL));
-
-  objfile_index_wip.finalize ();
-
-  if (dwz_index_wip.has_value ())
-    dwz_index_wip->finalize ();
-}
-
-/* Implementation of the `save gdb-index' command.
-
-   Note that the .gdb_index file format used by this command is
-   documented in the GDB manual.  Any changes here must be documented
-   there.  */
-
-static void
-save_gdb_index_command (const char *arg, int from_tty)
-{
-  const char dwarf5space[] = "-dwarf-5 ";
-  dw_index_kind index_kind = dw_index_kind::GDB_INDEX;
-
-  if (!arg)
-    arg = "";
-
-  arg = skip_spaces (arg);
-  if (strncmp (arg, dwarf5space, strlen (dwarf5space)) == 0)
-    {
-      index_kind = dw_index_kind::DEBUG_NAMES;
-      arg += strlen (dwarf5space);
-      arg = skip_spaces (arg);
-    }
-
-  if (!*arg)
-    error (_("usage: save gdb-index [-dwarf-5] DIRECTORY"));
-
-  for (objfile *objfile : current_program_space->objfiles ())
-    {
-      struct stat st;
-
-      /* If the objfile does not correspond to an actual file, skip it.  */
-      if (stat (objfile_name (objfile), &st) < 0)
-	continue;
-
-      struct dwarf2_per_objfile *dwarf2_per_objfile
-	= get_dwarf2_per_objfile (objfile);
-
-      if (dwarf2_per_objfile != NULL)
-	{
-	  try
-	    {
-	      const char *basename = lbasename (objfile_name (objfile));
-	      const dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
-	      const char *dwz_basename = NULL;
-
-	      if (dwz != NULL)
-		dwz_basename = lbasename (dwz->filename ());
-
-	      write_psymtabs_to_index (dwarf2_per_objfile, arg, basename,
-				       dwz_basename, index_kind);
-	    }
-	  catch (const gdb_exception_error &except)
-	    {
-	      exception_fprintf (gdb_stderr, except,
-				 _("Error while writing index for `%s': "),
-				 objfile_name (objfile));
-	    }
-	    }
-
-    }
-}
-
-void
-_initialize_dwarf_index_write ()
-{
-  cmd_list_element *c = add_cmd ("gdb-index", class_files,
-				 save_gdb_index_command, _("\
-Save a gdb-index file.\n\
-Usage: save gdb-index [-dwarf-5] DIRECTORY\n\
-\n\
-No options create one file with .gdb-index extension for pre-DWARF-5\n\
-compatible .gdb_index section.  With -dwarf-5 creates two files with\n\
-extension .debug_names and .debug_str for DWARF-5 .debug_names section."),
-	       &save_cmdlist);
-  set_cmd_completer (c, filename_completer);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-write.h ./gdb/dwarf-index-write.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/dwarf-index-write.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/dwarf-index-write.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,39 +0,0 @@
-/* DWARF index writing support for GDB.
-
-   Copyright (C) 2018-2020 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 DWARF_INDEX_WRITE_H
-#define DWARF_INDEX_WRITE_H
-
-#include "symfile.h"
-#include "dwarf2read.h"
-
-/* Create index files for OBJFILE in the directory DIR.
-
-   An index file is created for OBJFILE itself, and is created for its
-   associated dwz file, if it has one.
-
-   BASENAME is the desired filename base for OBJFILE's index.  An extension
-   derived from INDEX_KIND is added to this base name.  DWZ_BASENAME is the
-   same, but for the dwz file's index.  */
-
-extern void write_psymtabs_to_index
-  (struct dwarf2_per_objfile *dwarf2_per_objfile, const char *dir,
-   const char *basename, const char *dwz_basename, dw_index_kind index_kind);
-
-#endif /* DWARF_INDEX_WRITE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/elfread.c ./gdb/elfread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/elfread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/elfread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Read ELF (Executable and Linking Format) object files for GDB.
 
-   Copyright (C) 1991-2020 Free Software Foundation, Inc.
+   Copyright (C) 1991-2021 Free Software Foundation, Inc.
 
    Written by Fred Fish at Cygnus Support.
 
@@ -49,6 +49,8 @@
 #include "mdebugread.h"
 #include "ctfread.h"
 #include "gdbsupport/gdb_string_view.h"
+#include "gdbsupport/scoped_fd.h"
+#include "debuginfod-support.h"
 
 /* Forward declarations.  */
 extern const struct sym_fns elf_sym_fns_gdb_index;
@@ -83,14 +85,13 @@ static const struct bfd_key<elfread_data
 
 /* Locate the segments in ABFD.  */
 
-static struct symfile_segment_data *
+static symfile_segment_data_up
 elf_symfile_segments (bfd *abfd)
 {
   Elf_Internal_Phdr *phdrs, **segments;
   long phdrs_size;
   int num_phdrs, num_segments, num_sections, i;
   asection *sect;
-  struct symfile_segment_data *data;
 
   phdrs_size = bfd_get_elf_phdr_upper_bound (abfd);
   if (phdrs_size == -1)
@@ -110,19 +111,16 @@ elf_symfile_segments (bfd *abfd)
   if (num_segments == 0)
     return NULL;
 
-  data = XCNEW (struct symfile_segment_data);
-  data->num_segments = num_segments;
-  data->segment_bases = XCNEWVEC (CORE_ADDR, num_segments);
-  data->segment_sizes = XCNEWVEC (CORE_ADDR, num_segments);
+  symfile_segment_data_up data (new symfile_segment_data);
+  data->segments.reserve (num_segments);
 
   for (i = 0; i < num_segments; i++)
-    {
-      data->segment_bases[i] = segments[i]->p_vaddr;
-      data->segment_sizes[i] = segments[i]->p_memsz;
-    }
+    data->segments.emplace_back (segments[i]->p_vaddr, segments[i]->p_memsz);
 
   num_sections = bfd_count_sections (abfd);
-  data->segment_info = XCNEWVEC (int, num_sections);
+
+  /* All elements are initialized to 0 (map to no segment).  */
+  data->segment_info.resize (num_sections);
 
   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
     {
@@ -204,17 +202,22 @@ record_minimal_symbol (minimal_symbol_re
 		       enum minimal_symbol_type ms_type,
 		       asection *bfd_section, struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
 
   if (ms_type == mst_text || ms_type == mst_file_text
       || ms_type == mst_text_gnu_ifunc)
     address = gdbarch_addr_bits_remove (gdbarch, address);
 
+  /* We only setup section information for allocatable sections.  Usually
+     we'd only expect to find msymbols for allocatable sections, but if the
+     ELF is malformed then this might not be the case.  In that case don't
+     create an msymbol that references an uninitialised section object.  */
+  int section_index = 0;
+  if ((bfd_section_flags (bfd_section) & SEC_ALLOC) == SEC_ALLOC)
+    section_index = gdb_bfd_section_index (objfile->obfd, bfd_section);
+
   struct minimal_symbol *result
-    = reader.record_full (name, copy_name, address,
-			  ms_type,
-			  gdb_bfd_section_index (objfile->obfd,
-						 bfd_section));
+    = reader.record_full (name, copy_name, address, ms_type, section_index);
   if ((objfile->flags & OBJF_MAINLINE) == 0
       && (ms_type == mst_data || ms_type == mst_bss))
     result->maybe_copied = 1;
@@ -244,7 +247,7 @@ elf_symtab_read (minimal_symbol_reader &
 		 long number_of_symbols, asymbol **symbol_table,
 		 bool copy_names)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   asymbol *sym;
   long i;
   CORE_ADDR symaddr;
@@ -348,11 +351,7 @@ elf_symtab_read (minimal_symbol_reader &
       if (type == ST_DYNAMIC && !stripped)
 	continue;
       if (sym->flags & BSF_FILE)
-	{
-	  filesymname
-	    = ((const char *) objfile->per_bfd->filename_cache.insert
-	       (sym->name, strlen (sym->name) + 1));
-	}
+	filesymname = objfile->intern (sym->name);
       else if (sym->flags & BSF_SECTION_SYM)
 	continue;
       else if (sym->flags & (BSF_GLOBAL | BSF_LOCAL | BSF_WEAK
@@ -556,7 +555,7 @@ elf_rel_plt_read (minimal_symbol_reader
   const struct elf_backend_data *bed = get_elf_backend_data (obfd);
   asection *relplt, *got_plt;
   bfd_size_type reloc_count, reloc;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
   size_t ptr_size = TYPE_LENGTH (ptr_type);
 
@@ -744,7 +743,7 @@ elf_gnu_ifunc_record_cache (const char *
     {
       struct elf_gnu_ifunc_cache *entry_found_p
 	= (struct elf_gnu_ifunc_cache *) *slot;
-      struct gdbarch *gdbarch = get_objfile_arch (objfile);
+      struct gdbarch *gdbarch = objfile->arch ();
 
       if (entry_found_p->addr != addr)
 	{
@@ -822,7 +821,7 @@ elf_gnu_ifunc_resolve_by_got (const char
   for (objfile *objfile : current_program_space->objfiles ())
     {
       bfd *obfd = objfile->obfd;
-      struct gdbarch *gdbarch = get_objfile_arch (objfile);
+      struct gdbarch *gdbarch = objfile->arch ();
       struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
       size_t ptr_size = TYPE_LENGTH (ptr_type);
       CORE_ADDR pointer_address, addr;
@@ -1311,8 +1310,36 @@ elf_symfile_read (struct objfile *objfil
 	  symbol_file_add_separate (debug_bfd.get (), debugfile.c_str (),
 				    symfile_flags, objfile);
 	}
-	else
+      else
+	{
 	  has_dwarf2 = false;
+	  const struct bfd_build_id *build_id = build_id_bfd_get (objfile->obfd);
+
+	  if (build_id != nullptr)
+	    {
+	      gdb::unique_xmalloc_ptr<char> symfile_path;
+	      scoped_fd fd (debuginfod_debuginfo_query (build_id->data,
+							build_id->size,
+							objfile->original_name,
+							&symfile_path));
+
+	      if (fd.get () >= 0)
+		{
+		  /* File successfully retrieved from server.  */
+		  gdb_bfd_ref_ptr debug_bfd (symfile_bfd_open (symfile_path.get ()));
+
+		  if (debug_bfd == nullptr)
+		    warning (_("File \"%s\" from debuginfod cannot be opened as bfd"),
+			     objfile->original_name);
+		  else if (build_id_verify (debug_bfd.get (), build_id->size, build_id->data))
+		    {
+		      symbol_file_add_separate (debug_bfd.get (), symfile_path.get (),
+						symfile_flags, objfile);
+		      has_dwarf2 = true;
+		    }
+		}
+	    }
+	}
     }
 
   /* Read the CTF section only if there is no DWARF info.  */
@@ -1469,8 +1496,9 @@ static const struct gnu_ifunc_fns elf_gn
   elf_gnu_ifunc_resolver_return_stop
 };
 
+void _initialize_elfread ();
 void
-_initialize_elfread (void)
+_initialize_elfread ()
 {
   add_symtab_fns (bfd_target_elf_flavour, &elf_sym_fns);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/eval.c ./gdb/eval.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/eval.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/eval.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Evaluate expressions for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -135,7 +135,7 @@ evaluate_expression (struct expression *
 {
   int pc = 0;
 
-  return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_NORMAL);
+  return evaluate_subexp (nullptr, exp, &pc, EVAL_NORMAL);
 }
 
 /* Evaluate an expression, avoiding all memory references
@@ -146,7 +146,7 @@ evaluate_type (struct expression *exp)
 {
   int pc = 0;
 
-  return evaluate_subexp (NULL_TYPE, exp, &pc, EVAL_AVOID_SIDE_EFFECTS);
+  return evaluate_subexp (nullptr, exp, &pc, EVAL_AVOID_SIDE_EFFECTS);
 }
 
 /* Evaluate a subexpression, avoiding all memory references and
@@ -155,7 +155,7 @@ evaluate_type (struct expression *exp)
 struct value *
 evaluate_subexpression_type (struct expression *exp, int subexp)
 {
-  return evaluate_subexp (NULL_TYPE, exp, &subexp, EVAL_AVOID_SIDE_EFFECTS);
+  return evaluate_subexp (nullptr, exp, &subexp, EVAL_AVOID_SIDE_EFFECTS);
 }
 
 /* Find the current value of a watchpoint on EXP.  Return the value in
@@ -200,7 +200,7 @@ fetch_subexp_value (struct expression *e
 
   try
     {
-      result = evaluate_subexp (NULL_TYPE, exp, pc, EVAL_NORMAL);
+      result = evaluate_subexp (nullptr, exp, pc, EVAL_NORMAL);
     }
   catch (const gdb_exception &ex)
     {
@@ -295,14 +295,13 @@ evaluate_struct_tuple (struct value *str
 
       fieldno++;
       /* Skip static fields.  */
-      while (fieldno < TYPE_NFIELDS (struct_type)
-	     && field_is_static (&TYPE_FIELD (struct_type,
-					      fieldno)))
+      while (fieldno < struct_type->num_fields ()
+	     && field_is_static (&struct_type->field (fieldno)))
 	fieldno++;
-      if (fieldno >= TYPE_NFIELDS (struct_type))
+      if (fieldno >= struct_type->num_fields ())
 	error (_("too many initializers"));
-      field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
-      if (TYPE_CODE (field_type) == TYPE_CODE_UNION
+      field_type = struct_type->field (fieldno).type ();
+      if (field_type->code () == TYPE_CODE_UNION
 	  && TYPE_FIELD_NAME (struct_type, fieldno)[0] == '0')
 	error (_("don't know which variant you want to set"));
 
@@ -315,7 +314,7 @@ evaluate_struct_tuple (struct value *str
 	 subfieldno is the index of the actual real (named inner) field
 	 in substruct_type.  */
 
-      field_type = TYPE_FIELD_TYPE (struct_type, fieldno);
+      field_type = struct_type->field (fieldno).type ();
       if (val == 0)
 	val = evaluate_subexp (field_type, exp, pos, noside);
 
@@ -363,7 +362,7 @@ init_array_element (struct value *array,
     }
   else
     {
-      index = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
+      index = value_as_long (evaluate_subexp (nullptr, exp, pos, noside));
       if (index < low_bound || index > high_bound)
 	error (_("tuple index out of range"));
       memcpy (value_contents_raw (array) + (index - low_bound) * element_size,
@@ -378,21 +377,21 @@ value_f90_subarray (struct value *array,
 {
   int pc = (*pos) + 1;
   LONGEST low_bound, high_bound;
-  struct type *range = check_typedef (TYPE_INDEX_TYPE (value_type (array)));
+  struct type *range = check_typedef (value_type (array)->index_type ());
   enum range_type range_type
     = (enum range_type) longest_to_int (exp->elts[pc].longconst);
  
   *pos += 3;
 
   if (range_type == LOW_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
-    low_bound = TYPE_LOW_BOUND (range);
+    low_bound = range->bounds ()->low.const_val ();
   else
-    low_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
+    low_bound = value_as_long (evaluate_subexp (nullptr, exp, pos, noside));
 
   if (range_type == HIGH_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
-    high_bound = TYPE_HIGH_BOUND (range);
+    high_bound = range->bounds ()->high.const_val ();
   else
-    high_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
+    high_bound = value_as_long (evaluate_subexp (nullptr, exp, pos, noside));
 
   return value_slice (array, low_bound, high_bound - low_bound + 1);
 }
@@ -450,21 +449,21 @@ binop_promote (const struct language_def
   type1 = check_typedef (value_type (*arg1));
   type2 = check_typedef (value_type (*arg2));
 
-  if ((TYPE_CODE (type1) != TYPE_CODE_FLT
-       && TYPE_CODE (type1) != TYPE_CODE_DECFLOAT
+  if ((type1->code () != TYPE_CODE_FLT
+       && type1->code () != TYPE_CODE_DECFLOAT
        && !is_integral_type (type1))
-      || (TYPE_CODE (type2) != TYPE_CODE_FLT
-	  && TYPE_CODE (type2) != TYPE_CODE_DECFLOAT
+      || (type2->code () != TYPE_CODE_FLT
+	  && type2->code () != TYPE_CODE_DECFLOAT
 	  && !is_integral_type (type2)))
     return;
 
-  if (TYPE_CODE (type1) == TYPE_CODE_DECFLOAT
-      || TYPE_CODE (type2) == TYPE_CODE_DECFLOAT)
+  if (type1->code () == TYPE_CODE_DECFLOAT
+      || type2->code () == TYPE_CODE_DECFLOAT)
     {
       /* No promotion required.  */
     }
-  else if (TYPE_CODE (type1) == TYPE_CODE_FLT
-	   || TYPE_CODE (type2) == TYPE_CODE_FLT)
+  else if (type1->code () == TYPE_CODE_FLT
+	   || type2->code () == TYPE_CODE_FLT)
     {
       switch (language->la_language)
 	{
@@ -489,8 +488,8 @@ binop_promote (const struct language_def
 	  break;
 	}
     }
-  else if (TYPE_CODE (type1) == TYPE_CODE_BOOL
-	   && TYPE_CODE (type2) == TYPE_CODE_BOOL)
+  else if (type1->code () == TYPE_CODE_BOOL
+	   && type2->code () == TYPE_CODE_BOOL)
     {
       /* No promotion required.  */
     }
@@ -616,7 +615,7 @@ ptrmath_type_p (const struct language_de
   if (TYPE_IS_REFERENCE (type))
     type = TYPE_TARGET_TYPE (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_FUNC:
@@ -658,7 +657,7 @@ fake_method::fake_method (type_instance_
 
   TYPE_MAIN_TYPE (type) = &m_main_type;
   TYPE_LENGTH (type) = 1;
-  TYPE_CODE (type) = TYPE_CODE_METHOD;
+  type->set_code (TYPE_CODE_METHOD);
   TYPE_CHAIN (type) = type;
   TYPE_INSTANCE_FLAGS (type) = flags;
   if (num_types > 0)
@@ -668,7 +667,7 @@ fake_method::fake_method (type_instance_
 	  --num_types;
 	  TYPE_VARARGS (type) = 1;
 	}
-      else if (TYPE_CODE (check_typedef (param_types[num_types - 1]))
+      else if (check_typedef (param_types[num_types - 1])->code ()
 	       == TYPE_CODE_VOID)
 	{
 	  --num_types;
@@ -682,17 +681,17 @@ fake_method::fake_method (type_instance_
      neither an objfile nor a gdbarch.  As a result we must manually
      allocate memory for auxiliary fields, and free the memory ourselves
      when we are done with it.  */
-  TYPE_NFIELDS (type) = num_types;
-  TYPE_FIELDS (type) = (struct field *)
-    xzalloc (sizeof (struct field) * num_types);
+  type->set_num_fields (num_types);
+  type->set_fields
+    ((struct field *) xzalloc (sizeof (struct field) * num_types));
 
   while (num_types-- > 0)
-    TYPE_FIELD_TYPE (type, num_types) = param_types[num_types];
+    type->field (num_types).set_type (param_types[num_types]);
 }
 
 fake_method::~fake_method ()
 {
-  xfree (TYPE_FIELDS (&m_type));
+  xfree (m_type.fields ());
 }
 
 /* Helper for evaluating an OP_VAR_VALUE.  */
@@ -772,7 +771,7 @@ eval_call (expression *exp, enum noside
 
       type *ftype = value_type (argvec[0]);
 
-      if (TYPE_CODE (ftype) == TYPE_CODE_INTERNAL_FUNCTION)
+      if (ftype->code () == TYPE_CODE_INTERNAL_FUNCTION)
 	{
 	  /* We don't know anything about what the internal
 	     function might return, but we have to return
@@ -780,7 +779,7 @@ eval_call (expression *exp, enum noside
 	  return value_zero (builtin_type (exp->gdbarch)->builtin_int,
 			     not_lval);
 	}
-      else if (TYPE_CODE (ftype) == TYPE_CODE_XMETHOD)
+      else if (ftype->code () == TYPE_CODE_XMETHOD)
 	{
 	  type *return_type
 	    = result_type_of_xmethod (argvec[0],
@@ -791,8 +790,8 @@ eval_call (expression *exp, enum noside
 	    error (_("Xmethod is missing return type."));
 	  return value_zero (return_type, not_lval);
 	}
-      else if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
-	       || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
+      else if (ftype->code () == TYPE_CODE_FUNC
+	       || ftype->code () == TYPE_CODE_METHOD)
 	{
 	  if (TYPE_GNU_IFUNC (ftype))
 	    {
@@ -817,7 +816,7 @@ eval_call (expression *exp, enum noside
 	error (_("Expression of type other than "
 		 "\"Function returning ...\" used as function"));
     }
-  switch (TYPE_CODE (value_type (argvec[0])))
+  switch (value_type (argvec[0])->code ())
     {
     case TYPE_CODE_INTERNAL_FUNCTION:
       return call_internal_function (exp->gdbarch, exp->language_defn,
@@ -865,7 +864,7 @@ evaluate_funcall (type *expect_type, exp
 	}
       else
 	{
-	  arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	  arg2 = evaluate_subexp (nullptr, exp, pos, noside);
 	}
 
       /* If the function is a virtual function, then the aggregate
@@ -873,13 +872,13 @@ evaluate_funcall (type *expect_type, exp
 	 the vtable.  Otherwise, it is just along for the ride: call
 	 the function directly.  */
 
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
 
       type *a1_type = check_typedef (value_type (arg1));
       if (noside == EVAL_SKIP)
 	tem = 1;  /* Set it to the right arg index so that all
 		     arguments can also be skipped.  */
-      else if (TYPE_CODE (a1_type) == TYPE_CODE_METHODPTR)
+      else if (a1_type->code () == TYPE_CODE_METHODPTR)
 	{
 	  if (noside == EVAL_AVOID_SIDE_EFFECTS)
 	    arg1 = value_zero (TYPE_TARGET_TYPE (a1_type), not_lval);
@@ -891,7 +890,7 @@ evaluate_funcall (type *expect_type, exp
 	  tem = 2;
 	  argvec[1] = arg2;
 	}
-      else if (TYPE_CODE (a1_type) == TYPE_CODE_MEMBERPTR)
+      else if (a1_type->code () == TYPE_CODE_MEMBERPTR)
 	{
 	  struct type *type_ptr
 	    = lookup_pointer_type (TYPE_SELF_TYPE (a1_type));
@@ -942,7 +941,7 @@ evaluate_funcall (type *expect_type, exp
 	}
       else
 	{
-	  arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	  arg2 = evaluate_subexp (nullptr, exp, pos, noside);
 
 	  /* Check to see if the operator '->' has been overloaded.
 	     If the operator has been overloaded replace arg2 with the
@@ -987,23 +986,23 @@ evaluate_funcall (type *expect_type, exp
 
       function = NULL;
       function_name = NULL;
-      if (TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
+      if (type->code () == TYPE_CODE_NAMESPACE)
 	{
-	  function = cp_lookup_symbol_namespace (TYPE_NAME (type),
+	  function = cp_lookup_symbol_namespace (type->name (),
 						 name,
 						 get_selected_block (0),
 						 VAR_DOMAIN).symbol;
 	  if (function == NULL)
 	    error (_("No symbol \"%s\" in namespace \"%s\"."),
-		   name, TYPE_NAME (type));
+		   name, type->name ());
 
 	  tem = 1;
 	  /* arg2 is left as NULL on purpose.  */
 	}
       else
 	{
-	  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
-		      || TYPE_CODE (type) == TYPE_CODE_UNION);
+	  gdb_assert (type->code () == TYPE_CODE_STRUCT
+		      || type->code () == TYPE_CODE_UNION);
 	  function_name = name;
 
 	  /* We need a properly typed value for method lookup.  For
@@ -1054,14 +1053,13 @@ evaluate_funcall (type *expect_type, exp
 
 	  argvec[0] = evaluate_subexp_with_coercion (exp, pos, noside);
 	  type *type = value_type (argvec[0]);
-	  if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
+	  if (type && type->code () == TYPE_CODE_PTR)
 	    type = TYPE_TARGET_TYPE (type);
-	  if (type && TYPE_CODE (type) == TYPE_CODE_FUNC)
+	  if (type && type->code () == TYPE_CODE_FUNC)
 	    {
-	      for (; tem <= nargs && tem <= TYPE_NFIELDS (type); tem++)
+	      for (; tem <= nargs && tem <= type->num_fields (); tem++)
 		{
-		  argvec[tem] = evaluate_subexp (TYPE_FIELD_TYPE (type,
-								  tem - 1),
+		  argvec[tem] = evaluate_subexp (type->field (tem - 1).type (),
 						 exp, pos, noside);
 		}
 	    }
@@ -1245,7 +1243,21 @@ skip_undetermined_arglist (int nargs, st
 			   enum noside noside)
 {
   for (int i = 0; i < nargs; ++i)
-    evaluate_subexp (NULL_TYPE, exp, pos, noside);
+    evaluate_subexp (nullptr, exp, pos, noside);
+}
+
+/* Return true if type is integral or reference to integral */
+
+static bool
+is_integral_or_integral_reference (struct type *type)
+{
+  if (is_integral_type (type))
+    return true;
+
+  type = check_typedef (type);
+  return (type != nullptr
+	  && TYPE_IS_REFERENCE (type)
+	  && is_integral_type (TYPE_TARGET_TYPE (type)));
 }
 
 struct value *
@@ -1299,7 +1311,7 @@ evaluate_subexp_standard (struct type *e
       {
 	(*pos) += 3;
 	symbol *var = exp->elts[pc + 2].symbol;
-	if (TYPE_CODE (SYMBOL_TYPE (var)) == TYPE_CODE_ERROR)
+	if (SYMBOL_TYPE (var)->code () == TYPE_CODE_ERROR)
 	  error_unknown_type (var->print_name ());
 	if (noside != EVAL_SKIP)
 	    return evaluate_var_value (noside, exp->elts[pc + 1].block, var);
@@ -1321,7 +1333,7 @@ evaluate_subexp_standard (struct type *e
 					      msymbol);
 
 	type = value_type (val);
-	if (TYPE_CODE (type) == TYPE_CODE_ERROR
+	if (type->code () == TYPE_CODE_ERROR
 	    && (noside != EVAL_AVOID_SIDE_EFFECTS || pc != 0))
 	  error_unknown_type (msymbol->print_name ());
 	return val;
@@ -1432,10 +1444,10 @@ evaluate_subexp_standard (struct type *e
       tem2 = longest_to_int (exp->elts[pc + 1].longconst);
       tem3 = longest_to_int (exp->elts[pc + 2].longconst);
       nargs = tem3 - tem2 + 1;
-      type = expect_type ? check_typedef (expect_type) : NULL_TYPE;
+      type = expect_type ? check_typedef (expect_type) : nullptr;
 
-      if (expect_type != NULL_TYPE && noside != EVAL_SKIP
-	  && TYPE_CODE (type) == TYPE_CODE_STRUCT)
+      if (expect_type != nullptr && noside != EVAL_SKIP
+	  && type->code () == TYPE_CODE_STRUCT)
 	{
 	  struct value *rec = allocate_value (expect_type);
 
@@ -1443,16 +1455,16 @@ evaluate_subexp_standard (struct type *e
 	  return evaluate_struct_tuple (rec, exp, pos, noside, nargs);
 	}
 
-      if (expect_type != NULL_TYPE && noside != EVAL_SKIP
-	  && TYPE_CODE (type) == TYPE_CODE_ARRAY)
+      if (expect_type != nullptr && noside != EVAL_SKIP
+	  && type->code () == TYPE_CODE_ARRAY)
 	{
-	  struct type *range_type = TYPE_INDEX_TYPE (type);
+	  struct type *range_type = type->index_type ();
 	  struct type *element_type = TYPE_TARGET_TYPE (type);
 	  struct value *array = allocate_value (expect_type);
 	  int element_size = TYPE_LENGTH (check_typedef (element_type));
 	  LONGEST low_bound, high_bound, index;
 
-	  if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
+	  if (!get_discrete_bounds (range_type, &low_bound, &high_bound))
 	    {
 	      low_bound = 0;
 	      high_bound = (TYPE_LENGTH (type) / element_size) - 1;
@@ -1491,21 +1503,21 @@ evaluate_subexp_standard (struct type *e
 	  return array;
 	}
 
-      if (expect_type != NULL_TYPE && noside != EVAL_SKIP
-	  && TYPE_CODE (type) == TYPE_CODE_SET)
+      if (expect_type != nullptr && noside != EVAL_SKIP
+	  && type->code () == TYPE_CODE_SET)
 	{
 	  struct value *set = allocate_value (expect_type);
 	  gdb_byte *valaddr = value_contents_raw (set);
-	  struct type *element_type = TYPE_INDEX_TYPE (type);
+	  struct type *element_type = type->index_type ();
 	  struct type *check_type = element_type;
 	  LONGEST low_bound, high_bound;
 
 	  /* Get targettype of elementtype.  */
-	  while (TYPE_CODE (check_type) == TYPE_CODE_RANGE
-		 || TYPE_CODE (check_type) == TYPE_CODE_TYPEDEF)
+	  while (check_type->code () == TYPE_CODE_RANGE
+		 || check_type->code () == TYPE_CODE_TYPEDEF)
 	    check_type = TYPE_TARGET_TYPE (check_type);
 
-	  if (get_discrete_bounds (element_type, &low_bound, &high_bound) < 0)
+	  if (!get_discrete_bounds (element_type, &low_bound, &high_bound))
 	    error (_("(power)set type with unknown size"));
 	  memset (valaddr, '\0', TYPE_LENGTH (type));
 	  for (tem = 0; tem < nargs; tem++)
@@ -1521,17 +1533,17 @@ evaluate_subexp_standard (struct type *e
 	      /* Check types of elements to avoid mixture of elements from
 	         different types. Also check if type of element is "compatible"
 	         with element type of powerset.  */
-	      if (TYPE_CODE (range_low_type) == TYPE_CODE_RANGE)
+	      if (range_low_type->code () == TYPE_CODE_RANGE)
 		range_low_type = TYPE_TARGET_TYPE (range_low_type);
-	      if (TYPE_CODE (range_high_type) == TYPE_CODE_RANGE)
+	      if (range_high_type->code () == TYPE_CODE_RANGE)
 		range_high_type = TYPE_TARGET_TYPE (range_high_type);
-	      if ((TYPE_CODE (range_low_type) != TYPE_CODE (range_high_type))
-		  || (TYPE_CODE (range_low_type) == TYPE_CODE_ENUM
+	      if ((range_low_type->code () != range_high_type->code ())
+		  || (range_low_type->code () == TYPE_CODE_ENUM
 		      && (range_low_type != range_high_type)))
 		/* different element modes.  */
 		error (_("POWERSET tuple elements of different mode"));
-	      if ((TYPE_CODE (check_type) != TYPE_CODE (range_low_type))
-		  || (TYPE_CODE (check_type) == TYPE_CODE_ENUM
+	      if ((check_type->code () != range_low_type->code ())
+		  || (check_type->code () == TYPE_CODE_ENUM
 		      && range_low_type != check_type))
 		error (_("incompatible POWERSET tuple elements"));
 	      if (range_low > range_high)
@@ -1569,11 +1581,10 @@ evaluate_subexp_standard (struct type *e
 
     case TERNOP_SLICE:
       {
-	struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	struct value *array = evaluate_subexp (nullptr, exp, pos, noside);
 	int lowbound
-	  = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
-	int upper
-	  = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
+	  = value_as_long (evaluate_subexp (nullptr, exp, pos, noside));
+	int upper = value_as_long (evaluate_subexp (nullptr, exp, pos, noside));
 
 	if (noside == EVAL_SKIP)
 	  return eval_skip_value (exp);
@@ -1582,16 +1593,16 @@ evaluate_subexp_standard (struct type *e
 
     case TERNOP_COND:
       /* Skip third and second args to evaluate the first one.  */
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (value_logical_not (arg1))
 	{
-	  evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
-	  return evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	  evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
+	  return evaluate_subexp (nullptr, exp, pos, noside);
 	}
       else
 	{
-	  arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-	  evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
+	  arg2 = evaluate_subexp (nullptr, exp, pos, noside);
+	  evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
 	  return arg2;
 	}
 
@@ -1785,9 +1796,9 @@ evaluate_subexp_standard (struct type *e
 	    block_for_pc (funaddr);
 
 	    val_type = check_typedef (val_type);
-	  
-	    if ((val_type == NULL) 
-		|| (TYPE_CODE(val_type) == TYPE_CODE_ERROR))
+
+	    if ((val_type == NULL)
+		|| (val_type->code () == TYPE_CODE_ERROR))
 	      {
 		if (expect_type != NULL)
 		  val_type = expect_type;
@@ -1801,7 +1812,7 @@ evaluate_subexp_standard (struct type *e
 	    struct_return = using_struct_return (exp->gdbarch, NULL,
 						 check_typedef (expect_type));
 	  }
-	
+
 	/* Found a function symbol.  Now we will substitute its
 	   value in place of the message dispatcher (obj_msgSend),
 	   so that we call the method directly instead of thru
@@ -1817,7 +1828,7 @@ evaluate_subexp_standard (struct type *e
 	
 	if (method)
 	  {
-	    if (TYPE_CODE (value_type (method)) != TYPE_CODE_FUNC)
+	    if (value_type (method)->code () != TYPE_CODE_FUNC)
 	      error (_("method address has symbol information "
 		       "with non-function type; skipping"));
 
@@ -1859,13 +1870,13 @@ evaluate_subexp_standard (struct type *e
 
 	    struct type *callee_type = value_type (called_method);
 
-	    if (callee_type && TYPE_CODE (callee_type) == TYPE_CODE_PTR)
+	    if (callee_type && callee_type->code () == TYPE_CODE_PTR)
 	      callee_type = TYPE_TARGET_TYPE (callee_type);
 	    callee_type = TYPE_TARGET_TYPE (callee_type);
 
 	    if (callee_type)
 	    {
-	      if ((TYPE_CODE (callee_type) == TYPE_CODE_ERROR) && expect_type)
+	      if ((callee_type->code () == TYPE_CODE_ERROR) && expect_type)
 		return allocate_value (expect_type);
 	      else
 		return allocate_value (callee_type);
@@ -1917,9 +1928,9 @@ evaluate_subexp_standard (struct type *e
       (*pos) += 2;
 
       /* First determine the type code we are dealing with.  */
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       type = check_typedef (value_type (arg1));
-      code = TYPE_CODE (type);
+      code = type->code ();
 
       if (code == TYPE_CODE_PTR)
 	{
@@ -1929,13 +1940,13 @@ evaluate_subexp_standard (struct type *e
 	     to the target value the original one points to.  */ 
 	  struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
 
-	  if (TYPE_CODE (target_type) == TYPE_CODE_ARRAY
-	      || TYPE_CODE (target_type) == TYPE_CODE_STRING
-	      || TYPE_CODE (target_type) == TYPE_CODE_FUNC)
+	  if (target_type->code () == TYPE_CODE_ARRAY
+	      || target_type->code () == TYPE_CODE_STRING
+	      || target_type->code () == TYPE_CODE_FUNC)
 	    {
 	      arg1 = value_ind (arg1);
 	      type = check_typedef (value_type (arg1));
-	      code = TYPE_CODE (type);
+	      code = type->code ();
 	    }
 	} 
 
@@ -2011,15 +2022,15 @@ evaluate_subexp_standard (struct type *e
       /* We have a complex number, There should be 2 floating 
          point numbers that compose it.  */
       (*pos) += 2;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
+      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
 
       return value_literal_complex (arg1, arg2, exp->elts[pc + 1].type);
 
     case STRUCTOP_STRUCT:
       tem = longest_to_int (exp->elts[pc + 1].longconst);
       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
       arg3 = value_struct_elt (&arg1, NULL, &exp->elts[pc + 2].string,
@@ -2031,7 +2042,7 @@ evaluate_subexp_standard (struct type *e
     case STRUCTOP_PTR:
       tem = longest_to_int (exp->elts[pc + 1].longconst);
       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
 
@@ -2068,7 +2079,7 @@ evaluate_subexp_standard (struct type *e
 
 	get_user_print_options (&opts);
         if (opts.objectprint && TYPE_TARGET_TYPE (arg_type)
-            && (TYPE_CODE (TYPE_TARGET_TYPE (arg_type)) == TYPE_CODE_STRUCT))
+            && (TYPE_TARGET_TYPE (arg_type)->code () == TYPE_CODE_STRUCT))
           {
             real_type = value_rtti_indirect_type (arg1, &full, &top,
 						  &using_enc);
@@ -2088,15 +2099,15 @@ evaluate_subexp_standard (struct type *e
       if (op == STRUCTOP_MEMBER)
 	arg1 = evaluate_subexp_for_address (exp, pos, noside);
       else
-	arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	arg1 = evaluate_subexp (nullptr, exp, pos, noside);
 
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
 
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
 
       type = check_typedef (value_type (arg2));
-      switch (TYPE_CODE (type))
+      switch (type->code ())
 	{
 	case TYPE_CODE_METHODPTR:
 	  if (noside == EVAL_AVOID_SIDE_EFFECTS)
@@ -2104,7 +2115,7 @@ evaluate_subexp_standard (struct type *e
 	  else
 	    {
 	      arg2 = cplus_method_ptr_to_value (&arg1, arg2);
-	      gdb_assert (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR);
+	      gdb_assert (value_type (arg2)->code () == TYPE_CODE_PTR);
 	      return value_ind (arg2);
 	    }
 
@@ -2150,14 +2161,15 @@ evaluate_subexp_standard (struct type *e
 	return value_concat (arg1, arg2);
 
     case BINOP_ASSIGN:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       /* Special-case assignments where the left-hand-side is a
 	 convenience variable -- in these, don't bother setting an
 	 expected type.  This avoids a weird case where re-assigning a
 	 string or array to an internal variable could error with "Too
 	 many array elements".  */
       arg2 = evaluate_subexp (VALUE_LVAL (arg1) == lval_internalvar
-			      ? NULL_TYPE : value_type (arg1),
+				? nullptr
+				: value_type (arg1),
 			      exp, pos, noside);
 
       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
@@ -2169,7 +2181,7 @@ evaluate_subexp_standard (struct type *e
 
     case BINOP_ASSIGN_MODIFY:
       (*pos) += 2;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
 	return arg1;
@@ -2208,10 +2220,10 @@ evaluate_subexp_standard (struct type *e
       if (binop_user_defined_p (op, arg1, arg2))
 	return value_x_binop (arg1, arg2, op, OP_NULL, noside);
       else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
-	       && is_integral_type (value_type (arg2)))
+	       && is_integral_or_integral_reference (value_type (arg2)))
 	return value_ptradd (arg1, value_as_long (arg2));
       else if (ptrmath_type_p (exp->language_defn, value_type (arg2))
-	       && is_integral_type (value_type (arg1)))
+	       && is_integral_or_integral_reference (value_type (arg1)))
 	return value_ptradd (arg2, value_as_long (arg1));
       else
 	{
@@ -2234,7 +2246,7 @@ evaluate_subexp_standard (struct type *e
 	  return value_from_longest (type, value_ptrdiff (arg1, arg2));
 	}
       else if (ptrmath_type_p (exp->language_defn, value_type (arg1))
-	       && is_integral_type (value_type (arg2)))
+	       && is_integral_or_integral_reference (value_type (arg2)))
 	return value_ptradd (arg1, - value_as_long (arg2));
       else
 	{
@@ -2253,8 +2265,8 @@ evaluate_subexp_standard (struct type *e
     case BINOP_BITWISE_AND:
     case BINOP_BITWISE_IOR:
     case BINOP_BITWISE_XOR:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
+      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
       if (binop_user_defined_p (op, arg1, arg2))
@@ -2296,8 +2308,8 @@ evaluate_subexp_standard (struct type *e
 	}
 
     case BINOP_SUBSCRIPT:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
+      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
       if (binop_user_defined_p (op, arg1, arg2))
@@ -2310,12 +2322,12 @@ evaluate_subexp_standard (struct type *e
 
 	  arg1 = coerce_ref (arg1);
 	  type = check_typedef (value_type (arg1));
-	  if (TYPE_CODE (type) != TYPE_CODE_ARRAY
-	      && TYPE_CODE (type) != TYPE_CODE_PTR)
+	  if (type->code () != TYPE_CODE_ARRAY
+	      && type->code () != TYPE_CODE_PTR)
 	    {
-	      if (TYPE_NAME (type))
+	      if (type->name ())
 		error (_("cannot subscript something of type `%s'"),
-		       TYPE_NAME (type));
+		       type->name ());
 	      else
 		error (_("cannot subscript requested type"));
 	    }
@@ -2356,7 +2368,7 @@ evaluate_subexp_standard (struct type *e
 	      else
 		{
 		  error (_("cannot subscript something of type `%s'"),
-			 TYPE_NAME (value_type (arg1)));
+			 value_type (arg1)->name ());
 		}
 	    }
 
@@ -2369,7 +2381,7 @@ evaluate_subexp_standard (struct type *e
 	      arg1 = coerce_ref (arg1);
 	      type = check_typedef (value_type (arg1));
 
-	      switch (TYPE_CODE (type))
+	      switch (type->code ())
 		{
 		case TYPE_CODE_PTR:
 		case TYPE_CODE_ARRAY:
@@ -2378,9 +2390,9 @@ evaluate_subexp_standard (struct type *e
 		  break;
 
 		default:
-		  if (TYPE_NAME (type))
+		  if (type->name ())
 		    error (_("cannot subscript something of type `%s'"),
-			   TYPE_NAME (type));
+			   type->name ());
 		  else
 		    error (_("cannot subscript requested type"));
 		}
@@ -2432,61 +2444,61 @@ evaluate_subexp_standard (struct type *e
       }
 
     case BINOP_LOGICAL_AND:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	{
-	  evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	  evaluate_subexp (nullptr, exp, pos, noside);
 	  return eval_skip_value (exp);
 	}
 
       oldpos = *pos;
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+      arg2 = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
       *pos = oldpos;
 
       if (binop_user_defined_p (op, arg1, arg2))
 	{
-	  arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	  arg2 = evaluate_subexp (nullptr, exp, pos, noside);
 	  return value_x_binop (arg1, arg2, op, OP_NULL, noside);
 	}
       else
 	{
 	  tem = value_logical_not (arg1);
-	  arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
-				  (tem ? EVAL_SKIP : noside));
+	  arg2
+	    = evaluate_subexp (nullptr, exp, pos, (tem ? EVAL_SKIP : noside));
 	  type = language_bool_type (exp->language_defn, exp->gdbarch);
 	  return value_from_longest (type,
 			     (LONGEST) (!tem && !value_logical_not (arg2)));
 	}
 
     case BINOP_LOGICAL_OR:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	{
-	  evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	  evaluate_subexp (nullptr, exp, pos, noside);
 	  return eval_skip_value (exp);
 	}
 
       oldpos = *pos;
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+      arg2 = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
       *pos = oldpos;
 
       if (binop_user_defined_p (op, arg1, arg2))
 	{
-	  arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	  arg2 = evaluate_subexp (nullptr, exp, pos, noside);
 	  return value_x_binop (arg1, arg2, op, OP_NULL, noside);
 	}
       else
 	{
 	  tem = value_logical_not (arg1);
-	  arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
-				  (!tem ? EVAL_SKIP : noside));
+	  arg2
+	    = evaluate_subexp (nullptr, exp, pos, (!tem ? EVAL_SKIP : noside));
 	  type = language_bool_type (exp->language_defn, exp->gdbarch);
 	  return value_from_longest (type,
 			     (LONGEST) (!tem || !value_logical_not (arg2)));
 	}
 
     case BINOP_EQUAL:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
@@ -2503,7 +2515,7 @@ evaluate_subexp_standard (struct type *e
 	}
 
     case BINOP_NOTEQUAL:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
@@ -2520,7 +2532,7 @@ evaluate_subexp_standard (struct type *e
 	}
 
     case BINOP_LESS:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
@@ -2537,7 +2549,7 @@ evaluate_subexp_standard (struct type *e
 	}
 
     case BINOP_GTR:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
@@ -2554,7 +2566,7 @@ evaluate_subexp_standard (struct type *e
 	}
 
     case BINOP_GEQ:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
@@ -2571,7 +2583,7 @@ evaluate_subexp_standard (struct type *e
 	}
 
     case BINOP_LEQ:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
@@ -2588,13 +2600,13 @@ evaluate_subexp_standard (struct type *e
 	}
 
     case BINOP_REPEAT:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
+      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
       type = check_typedef (value_type (arg2));
-      if (TYPE_CODE (type) != TYPE_CODE_INT
-          && TYPE_CODE (type) != TYPE_CODE_ENUM)
+      if (type->code () != TYPE_CODE_INT
+          && type->code () != TYPE_CODE_ENUM)
 	error (_("Non-integral right operand for \"@\" operator."));
       if (noside == EVAL_AVOID_SIDE_EFFECTS)
 	{
@@ -2605,11 +2617,11 @@ evaluate_subexp_standard (struct type *e
 	return value_repeat (arg1, longest_to_int (value_as_long (arg2)));
 
     case BINOP_COMMA:
-      evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      return evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      evaluate_subexp (nullptr, exp, pos, noside);
+      return evaluate_subexp (nullptr, exp, pos, noside);
 
     case UNOP_PLUS:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
       if (unop_user_defined_p (op, arg1))
@@ -2621,7 +2633,7 @@ evaluate_subexp_standard (struct type *e
 	}
       
     case UNOP_NEG:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
       if (unop_user_defined_p (op, arg1))
@@ -2635,7 +2647,7 @@ evaluate_subexp_standard (struct type *e
     case UNOP_COMPLEMENT:
       /* C++: check for and handle destructor names.  */
 
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
       if (unop_user_defined_p (UNOP_COMPLEMENT, arg1))
@@ -2647,7 +2659,7 @@ evaluate_subexp_standard (struct type *e
 	}
 
     case UNOP_LOGICAL_NOT:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
       if (unop_user_defined_p (op, arg1))
@@ -2659,12 +2671,12 @@ evaluate_subexp_standard (struct type *e
 	}
 
     case UNOP_IND:
-      if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_PTR)
+      if (expect_type && expect_type->code () == TYPE_CODE_PTR)
 	expect_type = TYPE_TARGET_TYPE (check_typedef (expect_type));
       arg1 = evaluate_subexp (expect_type, exp, pos, noside);
       type = check_typedef (value_type (arg1));
-      if (TYPE_CODE (type) == TYPE_CODE_METHODPTR
-	  || TYPE_CODE (type) == TYPE_CODE_MEMBERPTR)
+      if (type->code () == TYPE_CODE_METHODPTR
+	  || type->code () == TYPE_CODE_MEMBERPTR)
 	error (_("Attempt to dereference pointer "
 		 "to member without an object"));
       if (noside == EVAL_SKIP)
@@ -2674,14 +2686,14 @@ evaluate_subexp_standard (struct type *e
       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
 	{
 	  type = check_typedef (value_type (arg1));
-	  if (TYPE_CODE (type) == TYPE_CODE_PTR
+	  if (type->code () == TYPE_CODE_PTR
 	      || TYPE_IS_REFERENCE (type)
 	  /* In C you can dereference an array to get the 1st elt.  */
-	      || TYPE_CODE (type) == TYPE_CODE_ARRAY
+	      || type->code () == TYPE_CODE_ARRAY
 	    )
 	    return value_zero (TYPE_TARGET_TYPE (type),
 			       lval_memory);
-	  else if (TYPE_CODE (type) == TYPE_CODE_INT)
+	  else if (type->code () == TYPE_CODE_INT)
 	    /* GDB allows dereferencing an int.  */
 	    return value_zero (builtin_type (exp->gdbarch)->builtin_int,
 			       lval_memory);
@@ -2693,7 +2705,7 @@ evaluate_subexp_standard (struct type *e
 	 This returns an int, which seems like the most C-like thing to
 	 do.  "long long" variables are rare enough that
 	 BUILTIN_TYPE_LONGEST would seem to be a mistake.  */
-      if (TYPE_CODE (type) == TYPE_CODE_INT)
+      if (type->code () == TYPE_CODE_INT)
 	return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
 			      (CORE_ADDR) value_as_address (arg1));
       return value_ind (arg1);
@@ -2703,7 +2715,7 @@ evaluate_subexp_standard (struct type *e
 
       if (noside == EVAL_SKIP)
 	{
-	  evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
+	  evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
 	  return eval_skip_value (exp);
 	}
       else
@@ -2717,15 +2729,15 @@ evaluate_subexp_standard (struct type *e
     case UNOP_SIZEOF:
       if (noside == EVAL_SKIP)
 	{
-	  evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
+	  evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
 	  return eval_skip_value (exp);
 	}
       return evaluate_subexp_for_sizeof (exp, pos, noside);
 
     case UNOP_ALIGNOF:
       {
-	type = value_type (evaluate_subexp (NULL_TYPE, exp, pos,
-					    EVAL_AVOID_SIDE_EFFECTS));
+	type = value_type (
+	  evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS));
 	/* FIXME: This should be size_t.  */
 	struct type *size_type = builtin_type (exp->gdbarch)->builtin_int;
 	ULONGEST align = type_align (type);
@@ -2903,7 +2915,7 @@ evaluate_subexp_standard (struct type *e
     case OP_DECLTYPE:
       if (noside == EVAL_SKIP)
 	{
-	  evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
+	  evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
 	  return eval_skip_value (exp);
 	}
       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
@@ -2911,8 +2923,7 @@ evaluate_subexp_standard (struct type *e
 	  enum exp_opcode sub_op = exp->elts[*pos].opcode;
 	  struct value *result;
 
-	  result = evaluate_subexp (NULL_TYPE, exp, pos,
-				    EVAL_AVOID_SIDE_EFFECTS);
+	  result = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
 
 	  /* 'decltype' has special semantics for lvalues.  */
 	  if (op == OP_DECLTYPE
@@ -2944,10 +2955,9 @@ evaluate_subexp_standard (struct type *e
 	enum exp_opcode sub_op = exp->elts[*pos].opcode;
 
 	if (sub_op == OP_TYPE || sub_op == OP_DECLTYPE || sub_op == OP_TYPEOF)
-	  result = evaluate_subexp (NULL_TYPE, exp, pos,
-				    EVAL_AVOID_SIDE_EFFECTS);
+	  result = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
 	else
-	  result = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	  result = evaluate_subexp (nullptr, exp, pos, noside);
 
 	if (noside != EVAL_NORMAL)
 	  return allocate_value (cplus_typeid_type (exp->gdbarch));
@@ -2996,7 +3006,7 @@ evaluate_subexp_for_address (struct expr
     {
     case UNOP_IND:
       (*pos)++;
-      x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      x = evaluate_subexp (nullptr, exp, pos, noside);
 
       /* We can't optimize out "&*" if there's a user-defined operator*.  */
       if (unop_user_defined_p (op, x))
@@ -3010,17 +3020,17 @@ evaluate_subexp_for_address (struct expr
     case UNOP_MEMVAL:
       (*pos) += 3;
       return value_cast (lookup_pointer_type (exp->elts[pc + 1].type),
-			 evaluate_subexp (NULL_TYPE, exp, pos, noside));
+			 evaluate_subexp (nullptr, exp, pos, noside));
 
     case UNOP_MEMVAL_TYPE:
       {
 	struct type *type;
 
 	(*pos) += 1;
-	x = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+	x = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
 	type = value_type (x);
 	return value_cast (lookup_pointer_type (type),
-			   evaluate_subexp (NULL_TYPE, exp, pos, noside));
+			   evaluate_subexp (nullptr, exp, pos, noside));
       }
 
     case OP_VAR_VALUE:
@@ -3077,7 +3087,7 @@ evaluate_subexp_for_address (struct expr
 
     default:
     default_case:
-      x = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      x = evaluate_subexp (nullptr, exp, pos, noside);
     default_case_after_eval:
       if (noside == EVAL_AVOID_SIDE_EFFECTS)
 	{
@@ -3126,7 +3136,7 @@ evaluate_subexp_with_coercion (struct ex
     case OP_VAR_VALUE:
       var = exp->elts[pc + 2].symbol;
       type = check_typedef (SYMBOL_TYPE (var));
-      if (TYPE_CODE (type) == TYPE_CODE_ARRAY
+      if (type->code () == TYPE_CODE_ARRAY
 	  && !TYPE_VECTOR (type)
 	  && CAST_IS_CONVERSION (exp->language_defn))
 	{
@@ -3138,7 +3148,7 @@ evaluate_subexp_with_coercion (struct ex
       /* FALLTHROUGH */
 
     default:
-      return evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      return evaluate_subexp (nullptr, exp, pos, noside);
     }
 }
 
@@ -3170,11 +3180,11 @@ evaluate_subexp_for_sizeof (struct expre
          create a value unnecessarily.  */
     case UNOP_IND:
       (*pos)++;
-      val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+      val = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
       type = check_typedef (value_type (val));
-      if (TYPE_CODE (type) != TYPE_CODE_PTR
+      if (type->code () != TYPE_CODE_PTR
 	  && !TYPE_IS_REFERENCE (type)
-	  && TYPE_CODE (type) != TYPE_CODE_ARRAY)
+	  && type->code () != TYPE_CODE_ARRAY)
 	error (_("Attempt to take contents of a non-pointer value."));
       type = TYPE_TARGET_TYPE (type);
       if (is_dynamic_type (type))
@@ -3196,11 +3206,11 @@ evaluate_subexp_for_sizeof (struct expre
       type = SYMBOL_TYPE (exp->elts[pc + 2].symbol);
       if (is_dynamic_type (type))
 	{
-	  val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
+	  val = evaluate_subexp (nullptr, exp, pos, EVAL_NORMAL);
 	  type = value_type (val);
-	  if (TYPE_CODE (type) == TYPE_CODE_ARRAY
-              && is_dynamic_type (TYPE_INDEX_TYPE (type))
-              && TYPE_HIGH_BOUND_UNDEFINED (TYPE_INDEX_TYPE (type)))
+	  if (type->code () == TYPE_CODE_ARRAY
+              && is_dynamic_type (type->index_type ())
+              && type->bounds ()->high.kind () == PROP_UNDEFINED)
 	    return allocate_optimized_out_value (size_type);
 	}
       else
@@ -3217,7 +3227,7 @@ evaluate_subexp_for_sizeof (struct expre
 					       msymbol);
 
 	type = value_type (mval);
-	if (TYPE_CODE (type) == TYPE_CODE_ERROR)
+	if (type->code () == TYPE_CODE_ERROR)
 	  error_unknown_type (msymbol->print_name ());
 
 	return value_from_longest (size_type, TYPE_LENGTH (type));
@@ -3233,19 +3243,19 @@ evaluate_subexp_for_sizeof (struct expre
 	{
 	  int npc = (*pos) + 1;
 
-	  val = evaluate_subexp (NULL_TYPE, exp, &npc, EVAL_AVOID_SIDE_EFFECTS);
+	  val = evaluate_subexp (nullptr, exp, &npc, EVAL_AVOID_SIDE_EFFECTS);
 	  type = check_typedef (value_type (val));
-	  if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+	  if (type->code () == TYPE_CODE_ARRAY)
 	    {
 	      type = check_typedef (TYPE_TARGET_TYPE (type));
-	      if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+	      if (type->code () == TYPE_CODE_ARRAY)
 		{
-		  type = TYPE_INDEX_TYPE (type);
+		  type = type->index_type ();
 		  /* Only re-evaluate the right hand side if the resulting type
 		     is a variable length type.  */
-		  if (TYPE_RANGE_DATA (type)->flag_bound_evaluated)
+		  if (type->bounds ()->flag_bound_evaluated)
 		    {
-		      val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
+		      val = evaluate_subexp (nullptr, exp, pos, EVAL_NORMAL);
 		      return value_from_longest
 			(size_type, (LONGEST) TYPE_LENGTH (value_type (val)));
 		    }
@@ -3256,7 +3266,7 @@ evaluate_subexp_for_sizeof (struct expre
       /* Fall through.  */
 
     default:
-      val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+      val = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
       type = value_type (val);
       break;
     }
@@ -3350,14 +3360,14 @@ calc_f77_array_dims (struct type *array_
   int ndimen = 1;
   struct type *tmp_type;
 
-  if ((TYPE_CODE (array_type) != TYPE_CODE_ARRAY))
+  if ((array_type->code () != TYPE_CODE_ARRAY))
     error (_("Can't get dimensions for a non-array type"));
 
   tmp_type = array_type;
 
   while ((tmp_type = TYPE_TARGET_TYPE (tmp_type)))
     {
-      if (TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY)
+      if (tmp_type->code () == TYPE_CODE_ARRAY)
 	++ndimen;
     }
   return ndimen;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/event-loop.c ./gdb/event-loop.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/event-loop.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/event-loop.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,1280 +0,0 @@
-/* Event loop machinery for GDB, the GNU debugger.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
-   Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
-
-   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 "event-loop.h"
-#include "event-top.h"
-#include "ser-event.h"
-
-#ifdef HAVE_POLL
-#if defined (HAVE_POLL_H)
-#include <poll.h>
-#elif defined (HAVE_SYS_POLL_H)
-#include <sys/poll.h>
-#endif
-#endif
-
-#include <sys/types.h>
-#include "gdbsupport/gdb_sys_time.h"
-#include "gdb_select.h"
-#include "observable.h"
-#include "top.h"
-
-/* Tell create_file_handler what events we are interested in.
-   This is used by the select version of the event loop.  */
-
-#define GDB_READABLE	(1<<1)
-#define GDB_WRITABLE	(1<<2)
-#define GDB_EXCEPTION	(1<<3)
-
-/* Data point to pass to the event handler.  */
-typedef union event_data
-{
-  void *ptr;
-  int integer;
-} event_data;
-
-typedef struct gdb_event gdb_event;
-typedef void (event_handler_func) (event_data);
-
-/* Event for the GDB event system.  Events are queued by calling
-   async_queue_event and serviced later on by gdb_do_one_event.  An
-   event can be, for instance, a file descriptor becoming ready to be
-   read.  Servicing an event simply means that the procedure PROC will
-   be called.  We have 2 queues, one for file handlers that we listen
-   to in the event loop, and one for the file handlers+events that are
-   ready.  The procedure PROC associated with each event is dependant
-   of the event source.  In the case of monitored file descriptors, it
-   is always the same (handle_file_event).  Its duty is to invoke the
-   handler associated with the file descriptor whose state change
-   generated the event, plus doing other cleanups and such.  In the
-   case of async signal handlers, it is
-   invoke_async_signal_handler.  */
-
-typedef struct gdb_event
-  {
-    /* Procedure to call to service this event.  */
-    event_handler_func *proc;
-
-    /* Data to pass to the event handler.  */
-    event_data data;
-  } *gdb_event_p;
-
-/* Information about each file descriptor we register with the event
-   loop.  */
-
-typedef struct file_handler
-  {
-    int fd;			/* File descriptor.  */
-    int mask;			/* Events we want to monitor: POLLIN, etc.  */
-    int ready_mask;		/* Events that have been seen since
-				   the last time.  */
-    handler_func *proc;		/* Procedure to call when fd is ready.  */
-    gdb_client_data client_data;	/* Argument to pass to proc.  */
-    int error;			/* Was an error detected on this fd?  */
-    struct file_handler *next_file;	/* Next registered file descriptor.  */
-  }
-file_handler;
-
-/* PROC is a function to be invoked when the READY flag is set.  This
-   happens when there has been a signal and the corresponding signal
-   handler has 'triggered' this async_signal_handler for execution.
-   The actual work to be done in response to a signal will be carried
-   out by PROC at a later time, within process_event.  This provides a
-   deferred execution of signal handlers.
-
-   Async_init_signals takes care of setting up such an
-   async_signal_handler for each interesting signal.  */
-
-typedef struct async_signal_handler
-  {
-    int ready;			    /* If ready, call this handler
-				       from the main event loop, using
-				       invoke_async_handler.  */
-    struct async_signal_handler *next_handler;	/* Ptr to next handler.  */
-    sig_handler_func *proc;	    /* Function to call to do the work.  */
-    gdb_client_data client_data;    /* Argument to async_handler_func.  */
-  }
-async_signal_handler;
-
-/* PROC is a function to be invoked when the READY flag is set.  This
-   happens when the event has been marked with
-   MARK_ASYNC_EVENT_HANDLER.  The actual work to be done in response
-   to an event will be carried out by PROC at a later time, within
-   process_event.  This provides a deferred execution of event
-   handlers.  */
-typedef struct async_event_handler
-  {
-    /* If ready, call this handler from the main event loop, using
-       invoke_event_handler.  */
-    int ready;
-
-    /* Point to next handler.  */
-    struct async_event_handler *next_handler;
-
-    /* Function to call to do the work.  */
-    async_event_handler_func *proc;
-
-    /* Argument to PROC.  */
-    gdb_client_data client_data;
-  }
-async_event_handler;
-
-/* Gdb_notifier is just a list of file descriptors gdb is interested in.
-   These are the input file descriptor, and the target file
-   descriptor.  We have two flavors of the notifier, one for platforms
-   that have the POLL function, the other for those that don't, and
-   only support SELECT.  Each of the elements in the gdb_notifier list is
-   basically a description of what kind of events gdb is interested
-   in, for each fd.  */
-
-/* As of 1999-04-30 only the input file descriptor is registered with the
-   event loop.  */
-
-/* Do we use poll or select ? */
-#ifdef HAVE_POLL
-#define USE_POLL 1
-#else
-#define USE_POLL 0
-#endif /* HAVE_POLL */
-
-static unsigned char use_poll = USE_POLL;
-
-#ifdef USE_WIN32API
-#include <windows.h>
-#include <io.h>
-#endif
-
-static struct
-  {
-    /* Ptr to head of file handler list.  */
-    file_handler *first_file_handler;
-
-    /* Next file handler to handle, for the select variant.  To level
-       the fairness across event sources, we serve file handlers in a
-       round-robin-like fashion.  The number and order of the polled
-       file handlers may change between invocations, but this is good
-       enough.  */
-    file_handler *next_file_handler;
-
-#ifdef HAVE_POLL
-    /* Ptr to array of pollfd structures.  */
-    struct pollfd *poll_fds;
-
-    /* Next file descriptor to handle, for the poll variant.  To level
-       the fairness across event sources, we poll the file descriptors
-       in a round-robin-like fashion.  The number and order of the
-       polled file descriptors may change between invocations, but
-       this is good enough.  */
-    int next_poll_fds_index;
-
-    /* Timeout in milliseconds for calls to poll().  */
-    int poll_timeout;
-#endif
-
-    /* Masks to be used in the next call to select.
-       Bits are set in response to calls to create_file_handler.  */
-    fd_set check_masks[3];
-
-    /* What file descriptors were found ready by select.  */
-    fd_set ready_masks[3];
-
-    /* Number of file descriptors to monitor (for poll).  */
-    /* Number of valid bits (highest fd value + 1) (for select).  */
-    int num_fds;
-
-    /* Time structure for calls to select().  */
-    struct timeval select_timeout;
-
-    /* Flag to tell whether the timeout should be used.  */
-    int timeout_valid;
-  }
-gdb_notifier;
-
-/* Structure associated with a timer.  PROC will be executed at the
-   first occasion after WHEN.  */
-struct gdb_timer
-  {
-    std::chrono::steady_clock::time_point when;
-    int timer_id;
-    struct gdb_timer *next;
-    timer_handler_func *proc;	    /* Function to call to do the work.  */
-    gdb_client_data client_data;    /* Argument to async_handler_func.  */
-  };
-
-/* List of currently active timers.  It is sorted in order of
-   increasing timers.  */
-static struct
-  {
-    /* Pointer to first in timer list.  */
-    struct gdb_timer *first_timer;
-
-    /* Id of the last timer created.  */
-    int num_timers;
-  }
-timer_list;
-
-/* All the async_signal_handlers gdb is interested in are kept onto
-   this list.  */
-static struct
-  {
-    /* Pointer to first in handler list.  */
-    async_signal_handler *first_handler;
-
-    /* Pointer to last in handler list.  */
-    async_signal_handler *last_handler;
-  }
-sighandler_list;
-
-/* All the async_event_handlers gdb is interested in are kept onto
-   this list.  */
-static struct
-  {
-    /* Pointer to first in handler list.  */
-    async_event_handler *first_handler;
-
-    /* Pointer to last in handler list.  */
-    async_event_handler *last_handler;
-  }
-async_event_handler_list;
-
-static int invoke_async_signal_handlers (void);
-static void create_file_handler (int fd, int mask, handler_func *proc,
-				 gdb_client_data client_data);
-static int check_async_event_handlers (void);
-static int gdb_wait_for_event (int);
-static int update_wait_timeout (void);
-static int poll_timers (void);
-
-
-/* This event is signalled whenever an asynchronous handler needs to
-   defer an action to the event loop.  */
-static struct serial_event *async_signal_handlers_serial_event;
-
-/* Callback registered with ASYNC_SIGNAL_HANDLERS_SERIAL_EVENT.  */
-
-static void
-async_signals_handler (int error, gdb_client_data client_data)
-{
-  /* Do nothing.  Handlers are run by invoke_async_signal_handlers
-     from instead.  */
-}
-
-void
-initialize_async_signal_handlers (void)
-{
-  async_signal_handlers_serial_event = make_serial_event ();
-
-  add_file_handler (serial_event_fd (async_signal_handlers_serial_event),
-		    async_signals_handler, NULL);
-}
-
-/* Process one high level event.  If nothing is ready at this time,
-   wait for something to happen (via gdb_wait_for_event), then process
-   it.  Returns >0 if something was done otherwise returns <0 (this
-   can happen if there are no event sources to wait for).  */
-
-int
-gdb_do_one_event (void)
-{
-  static int event_source_head = 0;
-  const int number_of_sources = 3;
-  int current = 0;
-
-  /* First let's see if there are any asynchronous signal handlers
-     that are ready.  These would be the result of invoking any of the
-     signal handlers.  */
-  if (invoke_async_signal_handlers ())
-    return 1;
-
-  /* To level the fairness across event sources, we poll them in a
-     round-robin fashion.  */
-  for (current = 0; current < number_of_sources; current++)
-    {
-      int res;
-
-      switch (event_source_head)
-	{
-	case 0:
-	  /* Are any timers that are ready?  */
-	  res = poll_timers ();
-	  break;
-	case 1:
-	  /* Are there events already waiting to be collected on the
-	     monitored file descriptors?  */
-	  res = gdb_wait_for_event (0);
-	  break;
-	case 2:
-	  /* Are there any asynchronous event handlers ready?  */
-	  res = check_async_event_handlers ();
-	  break;
-	default:
-	  internal_error (__FILE__, __LINE__,
-			  "unexpected event_source_head %d",
-			  event_source_head);
-	}
-
-      event_source_head++;
-      if (event_source_head == number_of_sources)
-	event_source_head = 0;
-
-      if (res > 0)
-	return 1;
-    }
-
-  /* Block waiting for a new event.  If gdb_wait_for_event returns -1,
-     we should get out because this means that there are no event
-     sources left.  This will make the event loop stop, and the
-     application exit.  */
-
-  if (gdb_wait_for_event (1) < 0)
-    return -1;
-
-  /* If gdb_wait_for_event has returned 1, it means that one event has
-     been handled.  We break out of the loop.  */
-  return 1;
-}
-
-/* Start up the event loop.  This is the entry point to the event loop
-   from the command loop.  */
-
-void
-start_event_loop (void)
-{
-  /* Loop until there is nothing to do.  This is the entry point to
-     the event loop engine.  gdb_do_one_event will process one event
-     for each invocation.  It blocks waiting for an event and then
-     processes it.  */
-  while (1)
-    {
-      int result = 0;
-
-      try
-	{
-	  result = gdb_do_one_event ();
-	}
-      catch (const gdb_exception &ex)
-	{
-	  exception_print (gdb_stderr, ex);
-
-	  /* If any exception escaped to here, we better enable
-	     stdin.  Otherwise, any command that calls async_disable_stdin,
-	     and then throws, will leave stdin inoperable.  */
-	  async_enable_stdin ();
-	  /* If we long-jumped out of do_one_event, we probably didn't
-	     get around to resetting the prompt, which leaves readline
-	     in a messed-up state.  Reset it here.  */
-	  current_ui->prompt_state = PROMPT_NEEDED;
-	  gdb::observers::command_error.notify ();
-	  /* This call looks bizarre, but it is required.  If the user
-	     entered a command that caused an error,
-	     after_char_processing_hook won't be called from
-	     rl_callback_read_char_wrapper.  Using a cleanup there
-	     won't work, since we want this function to be called
-	     after a new prompt is printed.  */
-	  if (after_char_processing_hook)
-	    (*after_char_processing_hook) ();
-	  /* Maybe better to set a flag to be checked somewhere as to
-	     whether display the prompt or not.  */
-	}
-
-      if (result < 0)
-	break;
-    }
-
-  /* We are done with the event loop.  There are no more event sources
-     to listen to.  So we exit GDB.  */
-  return;
-}
-
-
-/* Wrapper function for create_file_handler, so that the caller
-   doesn't have to know implementation details about the use of poll
-   vs. select.  */
-void
-add_file_handler (int fd, handler_func * proc, gdb_client_data client_data)
-{
-#ifdef HAVE_POLL
-  struct pollfd fds;
-#endif
-
-  if (use_poll)
-    {
-#ifdef HAVE_POLL
-      /* Check to see if poll () is usable.  If not, we'll switch to
-         use select.  This can happen on systems like
-         m68k-motorola-sys, `poll' cannot be used to wait for `stdin'.
-         On m68k-motorola-sysv, tty's are not stream-based and not
-         `poll'able.  */
-      fds.fd = fd;
-      fds.events = POLLIN;
-      if (poll (&fds, 1, 0) == 1 && (fds.revents & POLLNVAL))
-	use_poll = 0;
-#else
-      internal_error (__FILE__, __LINE__,
-		      _("use_poll without HAVE_POLL"));
-#endif /* HAVE_POLL */
-    }
-  if (use_poll)
-    {
-#ifdef HAVE_POLL
-      create_file_handler (fd, POLLIN, proc, client_data);
-#else
-      internal_error (__FILE__, __LINE__,
-		      _("use_poll without HAVE_POLL"));
-#endif
-    }
-  else
-    create_file_handler (fd, GDB_READABLE | GDB_EXCEPTION, 
-			 proc, client_data);
-}
-
-/* Add a file handler/descriptor to the list of descriptors we are
-   interested in.
-
-   FD is the file descriptor for the file/stream to be listened to.
-
-   For the poll case, MASK is a combination (OR) of POLLIN,
-   POLLRDNORM, POLLRDBAND, POLLPRI, POLLOUT, POLLWRNORM, POLLWRBAND:
-   these are the events we are interested in.  If any of them occurs,
-   proc should be called.
-
-   For the select case, MASK is a combination of READABLE, WRITABLE,
-   EXCEPTION.  PROC is the procedure that will be called when an event
-   occurs for FD.  CLIENT_DATA is the argument to pass to PROC.  */
-
-static void
-create_file_handler (int fd, int mask, handler_func * proc, 
-		     gdb_client_data client_data)
-{
-  file_handler *file_ptr;
-
-  /* Do we already have a file handler for this file?  (We may be
-     changing its associated procedure).  */
-  for (file_ptr = gdb_notifier.first_file_handler; file_ptr != NULL;
-       file_ptr = file_ptr->next_file)
-    {
-      if (file_ptr->fd == fd)
-	break;
-    }
-
-  /* It is a new file descriptor.  Add it to the list.  Otherwise, just
-     change the data associated with it.  */
-  if (file_ptr == NULL)
-    {
-      file_ptr = XNEW (file_handler);
-      file_ptr->fd = fd;
-      file_ptr->ready_mask = 0;
-      file_ptr->next_file = gdb_notifier.first_file_handler;
-      gdb_notifier.first_file_handler = file_ptr;
-
-      if (use_poll)
-	{
-#ifdef HAVE_POLL
-	  gdb_notifier.num_fds++;
-	  if (gdb_notifier.poll_fds)
-	    gdb_notifier.poll_fds =
-	      (struct pollfd *) xrealloc (gdb_notifier.poll_fds,
-					  (gdb_notifier.num_fds
-					   * sizeof (struct pollfd)));
-	  else
-	    gdb_notifier.poll_fds =
-	      XNEW (struct pollfd);
-	  (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->fd = fd;
-	  (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->events = mask;
-	  (gdb_notifier.poll_fds + gdb_notifier.num_fds - 1)->revents = 0;
-#else
-	  internal_error (__FILE__, __LINE__,
-			  _("use_poll without HAVE_POLL"));
-#endif /* HAVE_POLL */
-	}
-      else
-	{
-	  if (mask & GDB_READABLE)
-	    FD_SET (fd, &gdb_notifier.check_masks[0]);
-	  else
-	    FD_CLR (fd, &gdb_notifier.check_masks[0]);
-
-	  if (mask & GDB_WRITABLE)
-	    FD_SET (fd, &gdb_notifier.check_masks[1]);
-	  else
-	    FD_CLR (fd, &gdb_notifier.check_masks[1]);
-
-	  if (mask & GDB_EXCEPTION)
-	    FD_SET (fd, &gdb_notifier.check_masks[2]);
-	  else
-	    FD_CLR (fd, &gdb_notifier.check_masks[2]);
-
-	  if (gdb_notifier.num_fds <= fd)
-	    gdb_notifier.num_fds = fd + 1;
-	}
-    }
-
-  file_ptr->proc = proc;
-  file_ptr->client_data = client_data;
-  file_ptr->mask = mask;
-}
-
-/* Return the next file handler to handle, and advance to the next
-   file handler, wrapping around if the end of the list is
-   reached.  */
-
-static file_handler *
-get_next_file_handler_to_handle_and_advance (void)
-{
-  file_handler *curr_next;
-
-  /* The first time around, this is still NULL.  */
-  if (gdb_notifier.next_file_handler == NULL)
-    gdb_notifier.next_file_handler = gdb_notifier.first_file_handler;
-
-  curr_next = gdb_notifier.next_file_handler;
-  gdb_assert (curr_next != NULL);
-
-  /* Advance.  */
-  gdb_notifier.next_file_handler = curr_next->next_file;
-  /* Wrap around, if necessary.  */
-  if (gdb_notifier.next_file_handler == NULL)
-    gdb_notifier.next_file_handler = gdb_notifier.first_file_handler;
-
-  return curr_next;
-}
-
-/* Remove the file descriptor FD from the list of monitored fd's: 
-   i.e. we don't care anymore about events on the FD.  */
-void
-delete_file_handler (int fd)
-{
-  file_handler *file_ptr, *prev_ptr = NULL;
-  int i;
-#ifdef HAVE_POLL
-  int j;
-  struct pollfd *new_poll_fds;
-#endif
-
-  /* Find the entry for the given file.  */
-
-  for (file_ptr = gdb_notifier.first_file_handler; file_ptr != NULL;
-       file_ptr = file_ptr->next_file)
-    {
-      if (file_ptr->fd == fd)
-	break;
-    }
-
-  if (file_ptr == NULL)
-    return;
-
-  if (use_poll)
-    {
-#ifdef HAVE_POLL
-      /* Create a new poll_fds array by copying every fd's information
-         but the one we want to get rid of.  */
-
-      new_poll_fds = (struct pollfd *) 
-	xmalloc ((gdb_notifier.num_fds - 1) * sizeof (struct pollfd));
-
-      for (i = 0, j = 0; i < gdb_notifier.num_fds; i++)
-	{
-	  if ((gdb_notifier.poll_fds + i)->fd != fd)
-	    {
-	      (new_poll_fds + j)->fd = (gdb_notifier.poll_fds + i)->fd;
-	      (new_poll_fds + j)->events = (gdb_notifier.poll_fds + i)->events;
-	      (new_poll_fds + j)->revents
-		= (gdb_notifier.poll_fds + i)->revents;
-	      j++;
-	    }
-	}
-      xfree (gdb_notifier.poll_fds);
-      gdb_notifier.poll_fds = new_poll_fds;
-      gdb_notifier.num_fds--;
-#else
-      internal_error (__FILE__, __LINE__,
-		      _("use_poll without HAVE_POLL"));
-#endif /* HAVE_POLL */
-    }
-  else
-    {
-      if (file_ptr->mask & GDB_READABLE)
-	FD_CLR (fd, &gdb_notifier.check_masks[0]);
-      if (file_ptr->mask & GDB_WRITABLE)
-	FD_CLR (fd, &gdb_notifier.check_masks[1]);
-      if (file_ptr->mask & GDB_EXCEPTION)
-	FD_CLR (fd, &gdb_notifier.check_masks[2]);
-
-      /* Find current max fd.  */
-
-      if ((fd + 1) == gdb_notifier.num_fds)
-	{
-	  gdb_notifier.num_fds--;
-	  for (i = gdb_notifier.num_fds; i; i--)
-	    {
-	      if (FD_ISSET (i - 1, &gdb_notifier.check_masks[0])
-		  || FD_ISSET (i - 1, &gdb_notifier.check_masks[1])
-		  || FD_ISSET (i - 1, &gdb_notifier.check_masks[2]))
-		break;
-	    }
-	  gdb_notifier.num_fds = i;
-	}
-    }
-
-  /* Deactivate the file descriptor, by clearing its mask, 
-     so that it will not fire again.  */
-
-  file_ptr->mask = 0;
-
-  /* If this file handler was going to be the next one to be handled,
-     advance to the next's next, if any.  */
-  if (gdb_notifier.next_file_handler == file_ptr)
-    {
-      if (file_ptr->next_file == NULL
-	  && file_ptr == gdb_notifier.first_file_handler)
-	gdb_notifier.next_file_handler = NULL;
-      else
-	get_next_file_handler_to_handle_and_advance ();
-    }
-
-  /* Get rid of the file handler in the file handler list.  */
-  if (file_ptr == gdb_notifier.first_file_handler)
-    gdb_notifier.first_file_handler = file_ptr->next_file;
-  else
-    {
-      for (prev_ptr = gdb_notifier.first_file_handler;
-	   prev_ptr->next_file != file_ptr;
-	   prev_ptr = prev_ptr->next_file)
-	;
-      prev_ptr->next_file = file_ptr->next_file;
-    }
-  xfree (file_ptr);
-}
-
-/* Handle the given event by calling the procedure associated to the
-   corresponding file handler.  */
-
-static void
-handle_file_event (file_handler *file_ptr, int ready_mask)
-{
-  int mask;
-#ifdef HAVE_POLL
-  int error_mask;
-#endif
-
-    {
-	{
-	  /* With poll, the ready_mask could have any of three events
-	     set to 1: POLLHUP, POLLERR, POLLNVAL.  These events
-	     cannot be used in the requested event mask (events), but
-	     they can be returned in the return mask (revents).  We
-	     need to check for those event too, and add them to the
-	     mask which will be passed to the handler.  */
-
-	  /* See if the desired events (mask) match the received
-	     events (ready_mask).  */
-
-	  if (use_poll)
-	    {
-#ifdef HAVE_POLL
-	      /* POLLHUP means EOF, but can be combined with POLLIN to
-		 signal more data to read.  */
-	      error_mask = POLLHUP | POLLERR | POLLNVAL;
-	      mask = ready_mask & (file_ptr->mask | error_mask);
-
-	      if ((mask & (POLLERR | POLLNVAL)) != 0)
-		{
-		  /* Work in progress.  We may need to tell somebody
-		     what kind of error we had.  */
-		  if (mask & POLLERR)
-		    printf_unfiltered (_("Error detected on fd %d\n"),
-				       file_ptr->fd);
-		  if (mask & POLLNVAL)
-		    printf_unfiltered (_("Invalid or non-`poll'able fd %d\n"),
-				       file_ptr->fd);
-		  file_ptr->error = 1;
-		}
-	      else
-		file_ptr->error = 0;
-#else
-	      internal_error (__FILE__, __LINE__,
-			      _("use_poll without HAVE_POLL"));
-#endif /* HAVE_POLL */
-	    }
-	  else
-	    {
-	      if (ready_mask & GDB_EXCEPTION)
-		{
-		  printf_unfiltered (_("Exception condition detected "
-				       "on fd %d\n"), file_ptr->fd);
-		  file_ptr->error = 1;
-		}
-	      else
-		file_ptr->error = 0;
-	      mask = ready_mask & file_ptr->mask;
-	    }
-
-	  /* If there was a match, then call the handler.  */
-	  if (mask != 0)
-	    (*file_ptr->proc) (file_ptr->error, file_ptr->client_data);
-	}
-    }
-}
-
-/* Wait for new events on the monitored file descriptors.  Run the
-   event handler if the first descriptor that is detected by the poll.
-   If BLOCK and if there are no events, this function will block in
-   the call to poll.  Return 1 if an event was handled.  Return -1 if
-   there are no file descriptors to monitor.  Return 1 if an event was
-   handled, otherwise returns 0.  */
-
-static int
-gdb_wait_for_event (int block)
-{
-  file_handler *file_ptr;
-  int num_found = 0;
-
-  /* Make sure all output is done before getting another event.  */
-  ui_file_flush (gdb_stdout);
-  ui_file_flush (gdb_stderr);
-
-  if (gdb_notifier.num_fds == 0)
-    return -1;
-
-  if (block)
-    update_wait_timeout ();
-
-  if (use_poll)
-    {
-#ifdef HAVE_POLL
-      int timeout;
-
-      if (block)
-	timeout = gdb_notifier.timeout_valid ? gdb_notifier.poll_timeout : -1;
-      else
-	timeout = 0;
-
-      num_found = poll (gdb_notifier.poll_fds,
-			(unsigned long) gdb_notifier.num_fds, timeout);
-
-      /* Don't print anything if we get out of poll because of a
-	 signal.  */
-      if (num_found == -1 && errno != EINTR)
-	perror_with_name (("poll"));
-#else
-      internal_error (__FILE__, __LINE__,
-		      _("use_poll without HAVE_POLL"));
-#endif /* HAVE_POLL */
-    }
-  else
-    {
-      struct timeval select_timeout;
-      struct timeval *timeout_p;
-
-      if (block)
-	timeout_p = gdb_notifier.timeout_valid
-	  ? &gdb_notifier.select_timeout : NULL;
-      else
-	{
-	  memset (&select_timeout, 0, sizeof (select_timeout));
-	  timeout_p = &select_timeout;
-	}
-
-      gdb_notifier.ready_masks[0] = gdb_notifier.check_masks[0];
-      gdb_notifier.ready_masks[1] = gdb_notifier.check_masks[1];
-      gdb_notifier.ready_masks[2] = gdb_notifier.check_masks[2];
-      num_found = gdb_select (gdb_notifier.num_fds,
-			      &gdb_notifier.ready_masks[0],
-			      &gdb_notifier.ready_masks[1],
-			      &gdb_notifier.ready_masks[2],
-			      timeout_p);
-
-      /* Clear the masks after an error from select.  */
-      if (num_found == -1)
-	{
-	  FD_ZERO (&gdb_notifier.ready_masks[0]);
-	  FD_ZERO (&gdb_notifier.ready_masks[1]);
-	  FD_ZERO (&gdb_notifier.ready_masks[2]);
-
-	  /* Dont print anything if we got a signal, let gdb handle
-	     it.  */
-	  if (errno != EINTR)
-	    perror_with_name (("select"));
-	}
-    }
-
-  /* Avoid looking at poll_fds[i]->revents if no event fired.  */
-  if (num_found <= 0)
-    return 0;
-
-  /* Run event handlers.  We always run just one handler and go back
-     to polling, in case a handler changes the notifier list.  Since
-     events for sources we haven't consumed yet wake poll/select
-     immediately, no event is lost.  */
-
-  /* To level the fairness across event descriptors, we handle them in
-     a round-robin-like fashion.  The number and order of descriptors
-     may change between invocations, but this is good enough.  */
-  if (use_poll)
-    {
-#ifdef HAVE_POLL
-      int i;
-      int mask;
-
-      while (1)
-	{
-	  if (gdb_notifier.next_poll_fds_index >= gdb_notifier.num_fds)
-	    gdb_notifier.next_poll_fds_index = 0;
-	  i = gdb_notifier.next_poll_fds_index++;
-
-	  gdb_assert (i < gdb_notifier.num_fds);
-	  if ((gdb_notifier.poll_fds + i)->revents)
-	    break;
-	}
-
-      for (file_ptr = gdb_notifier.first_file_handler;
-	   file_ptr != NULL;
-	   file_ptr = file_ptr->next_file)
-	{
-	  if (file_ptr->fd == (gdb_notifier.poll_fds + i)->fd)
-	    break;
-	}
-      gdb_assert (file_ptr != NULL);
-
-      mask = (gdb_notifier.poll_fds + i)->revents;
-      handle_file_event (file_ptr, mask);
-      return 1;
-#else
-      internal_error (__FILE__, __LINE__,
-		      _("use_poll without HAVE_POLL"));
-#endif /* HAVE_POLL */
-    }
-  else
-    {
-      /* See comment about even source fairness above.  */
-      int mask = 0;
-
-      do
-	{
-	  file_ptr = get_next_file_handler_to_handle_and_advance ();
-
-	  if (FD_ISSET (file_ptr->fd, &gdb_notifier.ready_masks[0]))
-	    mask |= GDB_READABLE;
-	  if (FD_ISSET (file_ptr->fd, &gdb_notifier.ready_masks[1]))
-	    mask |= GDB_WRITABLE;
-	  if (FD_ISSET (file_ptr->fd, &gdb_notifier.ready_masks[2]))
-	    mask |= GDB_EXCEPTION;
-	}
-      while (mask == 0);
-
-      handle_file_event (file_ptr, mask);
-      return 1;
-    }
-  return 0;
-}
-
-
-/* Create an asynchronous handler, allocating memory for it.
-   Return a pointer to the newly created handler.
-   This pointer will be used to invoke the handler by 
-   invoke_async_signal_handler.
-   PROC is the function to call with CLIENT_DATA argument 
-   whenever the handler is invoked.  */
-async_signal_handler *
-create_async_signal_handler (sig_handler_func * proc,
-			     gdb_client_data client_data)
-{
-  async_signal_handler *async_handler_ptr;
-
-  async_handler_ptr = XNEW (async_signal_handler);
-  async_handler_ptr->ready = 0;
-  async_handler_ptr->next_handler = NULL;
-  async_handler_ptr->proc = proc;
-  async_handler_ptr->client_data = client_data;
-  if (sighandler_list.first_handler == NULL)
-    sighandler_list.first_handler = async_handler_ptr;
-  else
-    sighandler_list.last_handler->next_handler = async_handler_ptr;
-  sighandler_list.last_handler = async_handler_ptr;
-  return async_handler_ptr;
-}
-
-/* Mark the handler (ASYNC_HANDLER_PTR) as ready.  This information
-   will be used when the handlers are invoked, after we have waited
-   for some event.  The caller of this function is the interrupt
-   handler associated with a signal.  */
-void
-mark_async_signal_handler (async_signal_handler * async_handler_ptr)
-{
-  async_handler_ptr->ready = 1;
-  serial_event_set (async_signal_handlers_serial_event);
-}
-
-/* See event-loop.h.  */
-
-void
-clear_async_signal_handler (async_signal_handler *async_handler_ptr)
-{
-  async_handler_ptr->ready = 0;
-}
-
-/* See event-loop.h.  */
-
-int
-async_signal_handler_is_marked (async_signal_handler *async_handler_ptr)
-{
-  return async_handler_ptr->ready;
-}
-
-/* Call all the handlers that are ready.  Returns true if any was
-   indeed ready.  */
-
-static int
-invoke_async_signal_handlers (void)
-{
-  async_signal_handler *async_handler_ptr;
-  int any_ready = 0;
-
-  /* We're going to handle all pending signals, so no need to wake up
-     the event loop again the next time around.  Note this must be
-     cleared _before_ calling the callbacks, to avoid races.  */
-  serial_event_clear (async_signal_handlers_serial_event);
-
-  /* Invoke all ready handlers.  */
-
-  while (1)
-    {
-      for (async_handler_ptr = sighandler_list.first_handler;
-	   async_handler_ptr != NULL;
-	   async_handler_ptr = async_handler_ptr->next_handler)
-	{
-	  if (async_handler_ptr->ready)
-	    break;
-	}
-      if (async_handler_ptr == NULL)
-	break;
-      any_ready = 1;
-      async_handler_ptr->ready = 0;
-      /* Async signal handlers have no connection to whichever was the
-	 current UI, and thus always run on the main one.  */
-      current_ui = main_ui;
-      (*async_handler_ptr->proc) (async_handler_ptr->client_data);
-    }
-
-  return any_ready;
-}
-
-/* Delete an asynchronous handler (ASYNC_HANDLER_PTR).
-   Free the space allocated for it.  */
-void
-delete_async_signal_handler (async_signal_handler ** async_handler_ptr)
-{
-  async_signal_handler *prev_ptr;
-
-  if (sighandler_list.first_handler == (*async_handler_ptr))
-    {
-      sighandler_list.first_handler = (*async_handler_ptr)->next_handler;
-      if (sighandler_list.first_handler == NULL)
-	sighandler_list.last_handler = NULL;
-    }
-  else
-    {
-      prev_ptr = sighandler_list.first_handler;
-      while (prev_ptr && prev_ptr->next_handler != (*async_handler_ptr))
-	prev_ptr = prev_ptr->next_handler;
-      gdb_assert (prev_ptr);
-      prev_ptr->next_handler = (*async_handler_ptr)->next_handler;
-      if (sighandler_list.last_handler == (*async_handler_ptr))
-	sighandler_list.last_handler = prev_ptr;
-    }
-  xfree ((*async_handler_ptr));
-  (*async_handler_ptr) = NULL;
-}
-
-/* Create an asynchronous event handler, allocating memory for it.
-   Return a pointer to the newly created handler.  PROC is the
-   function to call with CLIENT_DATA argument whenever the handler is
-   invoked.  */
-async_event_handler *
-create_async_event_handler (async_event_handler_func *proc,
-			    gdb_client_data client_data)
-{
-  async_event_handler *h;
-
-  h = XNEW (struct async_event_handler);
-  h->ready = 0;
-  h->next_handler = NULL;
-  h->proc = proc;
-  h->client_data = client_data;
-  if (async_event_handler_list.first_handler == NULL)
-    async_event_handler_list.first_handler = h;
-  else
-    async_event_handler_list.last_handler->next_handler = h;
-  async_event_handler_list.last_handler = h;
-  return h;
-}
-
-/* Mark the handler (ASYNC_HANDLER_PTR) as ready.  This information
-   will be used by gdb_do_one_event.  The caller will be whoever
-   created the event source, and wants to signal that the event is
-   ready to be handled.  */
-void
-mark_async_event_handler (async_event_handler *async_handler_ptr)
-{
-  async_handler_ptr->ready = 1;
-}
-
-/* See event-loop.h.  */
-
-void
-clear_async_event_handler (async_event_handler *async_handler_ptr)
-{
-  async_handler_ptr->ready = 0;
-}
-
-/* Check if asynchronous event handlers are ready, and call the
-   handler function for one that is.  */
-
-static int
-check_async_event_handlers (void)
-{
-  async_event_handler *async_handler_ptr;
-
-  for (async_handler_ptr = async_event_handler_list.first_handler;
-       async_handler_ptr != NULL;
-       async_handler_ptr = async_handler_ptr->next_handler)
-    {
-      if (async_handler_ptr->ready)
-	{
-	  async_handler_ptr->ready = 0;
-	  (*async_handler_ptr->proc) (async_handler_ptr->client_data);
-	  return 1;
-	}
-    }
-
-  return 0;
-}
-
-/* Delete an asynchronous handler (ASYNC_HANDLER_PTR).
-   Free the space allocated for it.  */
-void
-delete_async_event_handler (async_event_handler **async_handler_ptr)
-{
-  async_event_handler *prev_ptr;
-
-  if (async_event_handler_list.first_handler == *async_handler_ptr)
-    {
-      async_event_handler_list.first_handler
-	= (*async_handler_ptr)->next_handler;
-      if (async_event_handler_list.first_handler == NULL)
-	async_event_handler_list.last_handler = NULL;
-    }
-  else
-    {
-      prev_ptr = async_event_handler_list.first_handler;
-      while (prev_ptr && prev_ptr->next_handler != *async_handler_ptr)
-	prev_ptr = prev_ptr->next_handler;
-      gdb_assert (prev_ptr);
-      prev_ptr->next_handler = (*async_handler_ptr)->next_handler;
-      if (async_event_handler_list.last_handler == (*async_handler_ptr))
-	async_event_handler_list.last_handler = prev_ptr;
-    }
-  xfree (*async_handler_ptr);
-  *async_handler_ptr = NULL;
-}
-
-/* Create a timer that will expire in MS milliseconds from now.  When
-   the timer is ready, PROC will be executed.  At creation, the timer
-   is added to the timers queue.  This queue is kept sorted in order
-   of increasing timers.  Return a handle to the timer struct.  */
-
-int
-create_timer (int ms, timer_handler_func *proc,
-	      gdb_client_data client_data)
-{
-  using namespace std::chrono;
-  struct gdb_timer *timer_ptr, *timer_index, *prev_timer;
-
-  steady_clock::time_point time_now = steady_clock::now ();
-
-  timer_ptr = new gdb_timer ();
-  timer_ptr->when = time_now + milliseconds (ms);
-  timer_ptr->proc = proc;
-  timer_ptr->client_data = client_data;
-  timer_list.num_timers++;
-  timer_ptr->timer_id = timer_list.num_timers;
-
-  /* Now add the timer to the timer queue, making sure it is sorted in
-     increasing order of expiration.  */
-
-  for (timer_index = timer_list.first_timer;
-       timer_index != NULL;
-       timer_index = timer_index->next)
-    {
-      if (timer_index->when > timer_ptr->when)
-	break;
-    }
-
-  if (timer_index == timer_list.first_timer)
-    {
-      timer_ptr->next = timer_list.first_timer;
-      timer_list.first_timer = timer_ptr;
-
-    }
-  else
-    {
-      for (prev_timer = timer_list.first_timer;
-	   prev_timer->next != timer_index;
-	   prev_timer = prev_timer->next)
-	;
-
-      prev_timer->next = timer_ptr;
-      timer_ptr->next = timer_index;
-    }
-
-  gdb_notifier.timeout_valid = 0;
-  return timer_ptr->timer_id;
-}
-
-/* There is a chance that the creator of the timer wants to get rid of
-   it before it expires.  */
-void
-delete_timer (int id)
-{
-  struct gdb_timer *timer_ptr, *prev_timer = NULL;
-
-  /* Find the entry for the given timer.  */
-
-  for (timer_ptr = timer_list.first_timer; timer_ptr != NULL;
-       timer_ptr = timer_ptr->next)
-    {
-      if (timer_ptr->timer_id == id)
-	break;
-    }
-
-  if (timer_ptr == NULL)
-    return;
-  /* Get rid of the timer in the timer list.  */
-  if (timer_ptr == timer_list.first_timer)
-    timer_list.first_timer = timer_ptr->next;
-  else
-    {
-      for (prev_timer = timer_list.first_timer;
-	   prev_timer->next != timer_ptr;
-	   prev_timer = prev_timer->next)
-	;
-      prev_timer->next = timer_ptr->next;
-    }
-  delete timer_ptr;
-
-  gdb_notifier.timeout_valid = 0;
-}
-
-/* Convert a std::chrono duration to a struct timeval.  */
-
-template<typename Duration>
-static struct timeval
-duration_cast_timeval (const Duration &d)
-{
-  using namespace std::chrono;
-  seconds sec = duration_cast<seconds> (d);
-  microseconds msec = duration_cast<microseconds> (d - sec);
-
-  struct timeval tv;
-  tv.tv_sec = sec.count ();
-  tv.tv_usec = msec.count ();
-  return tv;
-}
-
-/* Update the timeout for the select() or poll().  Returns true if the
-   timer has already expired, false otherwise.  */
-
-static int
-update_wait_timeout (void)
-{
-  if (timer_list.first_timer != NULL)
-    {
-      using namespace std::chrono;
-      steady_clock::time_point time_now = steady_clock::now ();
-      struct timeval timeout;
-
-      if (timer_list.first_timer->when < time_now)
-	{
-	  /* It expired already.  */
-	  timeout.tv_sec = 0;
-	  timeout.tv_usec = 0;
-	}
-      else
-	{
-	  steady_clock::duration d = timer_list.first_timer->when - time_now;
-	  timeout = duration_cast_timeval (d);
-	}
-
-      /* Update the timeout for select/ poll.  */
-      if (use_poll)
-	{
-#ifdef HAVE_POLL
-	  gdb_notifier.poll_timeout = timeout.tv_sec * 1000;
-#else
-	  internal_error (__FILE__, __LINE__,
-			  _("use_poll without HAVE_POLL"));
-#endif /* HAVE_POLL */
-	}
-      else
-	{
-	  gdb_notifier.select_timeout.tv_sec = timeout.tv_sec;
-	  gdb_notifier.select_timeout.tv_usec = timeout.tv_usec;
-	}
-      gdb_notifier.timeout_valid = 1;
-
-      if (timer_list.first_timer->when < time_now)
-	return 1;
-    }
-  else
-    gdb_notifier.timeout_valid = 0;
-
-  return 0;
-}
-
-/* Check whether a timer in the timers queue is ready.  If a timer is
-   ready, call its handler and return.  Update the timeout for the
-   select() or poll() as well.  Return 1 if an event was handled,
-   otherwise returns 0.*/
-
-static int
-poll_timers (void)
-{
-  if (update_wait_timeout ())
-    {
-      struct gdb_timer *timer_ptr = timer_list.first_timer;
-      timer_handler_func *proc = timer_ptr->proc;
-      gdb_client_data client_data = timer_ptr->client_data;
-
-      /* Get rid of the timer from the beginning of the list.  */
-      timer_list.first_timer = timer_ptr->next;
-
-      /* Delete the timer before calling the callback, not after, in
-	 case the callback itself decides to try deleting the timer
-	 too.  */
-      delete timer_ptr;
-
-      /* Call the procedure associated with that timer.  */
-      (proc) (client_data);
-
-      return 1;
-    }
-
-  return 0;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/event-loop.h ./gdb/event-loop.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/event-loop.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/event-loop.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,134 +0,0 @@
-/* Definitions used by the GDB event loop.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
-   Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
-
-   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 EVENT_LOOP_H
-#define EVENT_LOOP_H
-
-/* An event loop listens for events from multiple event sources.  When
-   an event arrives, it is queued and processed by calling the
-   appropriate event handler.  The event loop then continues to listen
-   for more events.  An event loop completes when there are no event
-   sources to listen on.  External event sources can be plugged into
-   the loop.
-
-   There are 4 main components:
-   - a list of file descriptors to be monitored, GDB_NOTIFIER.
-   - a list of asynchronous event sources to be monitored,
-     ASYNC_EVENT_HANDLER_LIST.
-   - a list of events that have occurred, EVENT_QUEUE.
-   - a list of signal handling functions, SIGHANDLER_LIST.
-
-   GDB_NOTIFIER keeps track of the file descriptor based event
-   sources.  ASYNC_EVENT_HANDLER_LIST keeps track of asynchronous
-   event sources that are signalled by some component of gdb, usually
-   a target_ops instance.  Event sources for gdb are currently the UI
-   and the target.  Gdb communicates with the command line user
-   interface via the readline library and usually communicates with
-   remote targets via a serial port.  Serial ports are represented in
-   GDB as file descriptors and select/poll calls.  For native targets
-   instead, the communication varies across operating system debug
-   APIs, but usually consists of calls to ptrace and waits (via
-   signals) or calls to poll/select (via file descriptors).  In the
-   current gdb, the code handling events related to the target resides
-   in wait_for_inferior for synchronous targets; or, for asynchronous
-   capable targets, by having the target register either a target
-   controlled file descriptor and/or an asynchronous event source in
-   the event loop, with the fetch_inferior_event function as the event
-   callback.  In both the synchronous and asynchronous cases, usually
-   the target event is collected through the target_wait interface.
-   The target is free to install other event sources in the event loop
-   if it so requires.
-
-   EVENT_QUEUE keeps track of the events that have happened during the
-   last iteration of the event loop, and need to be processed.  An
-   event is represented by a procedure to be invoked in order to
-   process the event.  The queue is scanned head to tail.  If the
-   event of interest is a change of state in a file descriptor, then a
-   call to poll or select will be made to detect it.
-
-   If the events generate signals, they are also queued by special
-   functions that are invoked through traditional signal handlers.
-   The actions to be taken is response to such events will be executed
-   when the SIGHANDLER_LIST is scanned, the next time through the
-   infinite loop.
-
-   Corollary tasks are the creation and deletion of event sources.  */
-
-typedef void *gdb_client_data;
-struct async_signal_handler;
-struct async_event_handler;
-typedef void (handler_func) (int, gdb_client_data);
-typedef void (sig_handler_func) (gdb_client_data);
-typedef void (async_event_handler_func) (gdb_client_data);
-typedef void (timer_handler_func) (gdb_client_data);
-
-/* Exported functions from event-loop.c */
-
-extern void start_event_loop (void);
-extern int gdb_do_one_event (void);
-extern void delete_file_handler (int fd);
-extern void add_file_handler (int fd, handler_func *proc, 
-			      gdb_client_data client_data);
-extern struct async_signal_handler *
-  create_async_signal_handler (sig_handler_func *proc, 
-			       gdb_client_data client_data);
-extern void delete_async_signal_handler (struct async_signal_handler **);
-extern int create_timer (int milliseconds, 
-			 timer_handler_func *proc, 
-			 gdb_client_data client_data);
-extern void delete_timer (int id);
-
-/* Call the handler from HANDLER the next time through the event
-   loop.  */
-extern void mark_async_signal_handler (struct async_signal_handler *handler);
-
-/* Returns true if HANDLER is marked ready.  */
-
-extern int
-  async_signal_handler_is_marked (struct async_signal_handler *handler);
-
-/* Mark HANDLER as NOT ready.  */
-
-extern void clear_async_signal_handler (struct async_signal_handler *handler);
-
-/* Create and register an asynchronous event source in the event loop,
-   and set PROC as its callback.  CLIENT_DATA is passed as argument to
-   PROC upon its invocation.  Returns a pointer to an opaque structure
-   used to mark as ready and to later delete this event source from
-   the event loop.  */
-extern struct async_event_handler *
-  create_async_event_handler (async_event_handler_func *proc,
-			      gdb_client_data client_data);
-
-/* Remove the event source pointed by HANDLER_PTR created by
-   CREATE_ASYNC_EVENT_HANDLER from the event loop, and release it.  */
-extern void
-  delete_async_event_handler (struct async_event_handler **handler_ptr);
-
-/* Call the handler from HANDLER the next time through the event
-   loop.  */
-extern void mark_async_event_handler (struct async_event_handler *handler);
-
-/* Mark the handler (ASYNC_HANDLER_PTR) as NOT ready.  */
-
-extern void clear_async_event_handler (struct async_event_handler *handler);
-
-extern void initialize_async_signal_handlers (void);
-
-#endif /* EVENT_LOOP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/event-top.c ./gdb/event-top.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/event-top.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/event-top.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Top level stuff for GDB, the GNU debugger.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
 
@@ -25,7 +25,7 @@
 #include "infrun.h"
 #include "target.h"
 #include "terminal.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "event-top.h"
 #include "interps.h"
 #include <signal.h>
@@ -39,8 +39,9 @@
 #include "maint.h"
 #include "gdbsupport/buffer.h"
 #include "ser-event.h"
-#include "gdb_select.h"
+#include "gdbsupport/gdb_select.h"
 #include "gdbsupport/gdb-sigmask.h"
+#include "async-event.h"
 
 /* readline include files.  */
 #include "readline/readline.h"
@@ -848,9 +849,17 @@ gdb_readline_no_editing_callback (gdb_cl
 }
 
 
-/* See event-top.h.  */
+/* 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.
+
+   This is a static variable instead of extern because on various platforms
+   (notably Cygwin) extern thread_local variables cause link errors.  So
+   instead, we have scoped_segv_handler_restore, which also makes it impossible
+   to accidentally forget to restore it to the original value.  */
 
-thread_local void (*thread_local_segv_handler) (int);
+static thread_local void (*thread_local_segv_handler) (int);
 
 static void handle_sigsegv (int sig);
 
@@ -881,7 +890,7 @@ handle_sigsegv (int sig)
   install_handle_sigsegv ();
 
   if (thread_local_segv_handler == nullptr)
-    abort ();
+    abort ();			/* ARI: abort */
   thread_local_segv_handler (sig);
 }
 
@@ -1137,12 +1146,16 @@ async_disconnect (gdb_client_data arg)
       exception_print (gdb_stderr, exception);
     }
 
-  try
-    {
-      pop_all_targets ();
-    }
-  catch (const gdb_exception &exception)
+  for (inferior *inf : all_inferiors ())
     {
+      switch_to_inferior_no_thread (inf);
+      try
+	{
+	  pop_all_targets ();
+	}
+      catch (const gdb_exception &exception)
+	{
+	}
     }
 
   signal (SIGHUP, SIG_DFL);	/*FIXME: ???????????  */
@@ -1281,3 +1294,14 @@ gdb_disable_readline (void)
     gdb_rl_callback_handler_remove ();
   delete_file_handler (ui->input_fd);
 }
+
+scoped_segv_handler_restore::scoped_segv_handler_restore (segv_handler_t new_handler)
+{
+  m_old_handler = thread_local_segv_handler;
+  thread_local_segv_handler = new_handler;
+}
+
+scoped_segv_handler_restore::~scoped_segv_handler_restore()
+{
+  thread_local_segv_handler = m_old_handler;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/event-top.h ./gdb/event-top.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/event-top.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/event-top.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions used by event-top.c, for GDB, the GNU debugger.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
 
@@ -70,10 +70,19 @@ 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);
+typedef void (*segv_handler_t) (int);
+
+/* On construction, replaces the current thread's SIGSEGV handler with
+   the provided one.  On destruction, restores the handler to the
+   original one.  */
+class scoped_segv_handler_restore
+{
+ public:
+  scoped_segv_handler_restore (segv_handler_t new_handler);
+  ~scoped_segv_handler_restore ();
+
+ private:
+  segv_handler_t m_old_handler;
+};
 
 #endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/exceptions.c ./gdb/exceptions.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/exceptions.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/exceptions.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Exception (throw catch) mechanism, for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -39,11 +39,7 @@ print_flush (void)
     deprecated_error_begin_hook ();
 
   gdb::optional<target_terminal::scoped_restore_terminal_state> term_state;
-  /* While normally there's always something pushed on the target
-     stack, the NULL check is needed here because we can get here very
-     early during startup, before the target stack is first
-     initialized.  */
-  if (current_top_target () != NULL && target_supports_terminal_ours ())
+  if (target_supports_terminal_ours ())
     {
       term_state.emplace ();
       target_terminal::ours_for_output ();
@@ -89,7 +85,7 @@ print_exception (struct ui_file *file, c
       else
 	{
 	  end++;
-	  ui_file_write (file, start, end - start);
+	  file->write (start, end - start);
 	}
     }					    
   fprintf_filtered (file, "\n");
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/exceptions.h ./gdb/exceptions.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/exceptions.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/exceptions.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Exception (throw catch) mechanism, for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/exec.c ./gdb/exec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/exec.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/exec.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Work with executable files, for GDB. 
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -33,9 +33,11 @@
 #include "arch-utils.h"
 #include "gdbthread.h"
 #include "progspace.h"
+#include "progspace-and-thread.h"
 #include "gdb_bfd.h"
 #include "gcore.h"
 #include "source.h"
+#include "build-id.h"
 
 #include <fcntl.h>
 #include "readline/tilde.h"
@@ -46,6 +48,7 @@
 #include "solist.h"
 #include <algorithm>
 #include "gdbsupport/pathstuff.h"
+#include "cli/cli-style.h"
 
 void (*deprecated_file_changed_hook) (const char *);
 
@@ -82,6 +85,50 @@ struct exec_target final : public target
 
 static exec_target exec_ops;
 
+/* How to handle a mismatch between the current exec file and the exec
+   file determined from target.  */
+
+static const char *const exec_file_mismatch_names[]
+  = {"ask", "warn", "off", NULL };
+enum exec_file_mismatch_mode
+  {
+    exec_file_mismatch_ask, exec_file_mismatch_warn, exec_file_mismatch_off
+  };
+static const char *exec_file_mismatch = exec_file_mismatch_names[0];
+static enum exec_file_mismatch_mode exec_file_mismatch_mode
+  = exec_file_mismatch_ask;
+
+/* Show command.  */
+static void
+show_exec_file_mismatch_command (struct ui_file *file, int from_tty,
+				 struct cmd_list_element *c, const char *value)
+{
+  fprintf_filtered (gdb_stdout,
+		    _("exec-file-mismatch handling is currently \"%s\".\n"),
+		    exec_file_mismatch_names[exec_file_mismatch_mode]);
+}
+
+/* Set command.  Change the setting for range checking.  */
+static void
+set_exec_file_mismatch_command (const char *ignore,
+				int from_tty, struct cmd_list_element *c)
+{
+  for (enum exec_file_mismatch_mode mode = exec_file_mismatch_ask;
+       ;
+       mode = static_cast<enum exec_file_mismatch_mode>(1 + (int) mode))
+    {
+      if (strcmp (exec_file_mismatch, exec_file_mismatch_names[mode]) == 0)
+	{
+	  exec_file_mismatch_mode = mode;
+	  return;
+	}
+      if (mode == exec_file_mismatch_off)
+	internal_error (__FILE__, __LINE__,
+			_("Unrecognized exec-file-mismatch setting: \"%s\""),
+			exec_file_mismatch);
+    }
+}
+
 /* Whether to open exec and core files read-only or read-write.  */
 
 bool write_files = false;
@@ -131,10 +178,9 @@ exec_close (void)
 void
 exec_target::close ()
 {
-  struct program_space *ss;
   scoped_restore_current_program_space restore_pspace;
 
-  ALL_PSPACES (ss)
+  for (struct program_space *ss : program_spaces)
     {
       set_current_program_space (ss);
       clear_section_table (current_target_sections);
@@ -192,6 +238,106 @@ try_open_exec_file (const char *exec_fil
 /* See gdbcore.h.  */
 
 void
+validate_exec_file (int from_tty)
+{
+  /* If user asked to ignore the mismatch, do nothing.  */
+  if (exec_file_mismatch_mode == exec_file_mismatch_off)
+    return;
+
+  const char *current_exec_file = get_exec_file (0);
+  struct inferior *inf = current_inferior ();
+  /* Try to determine a filename from the process itself.  */
+  const char *pid_exec_file = target_pid_to_exec_file (inf->pid);
+  bool build_id_mismatch = false;
+
+  /* If we cannot validate the exec file, return.  */
+  if (current_exec_file == NULL || pid_exec_file == NULL)
+    return;
+
+  /* Try validating via build-id, if available.  This is the most
+     reliable check.  */
+
+  /* In case current_exec_file was changed, reopen_exec_file ensures
+     an up to date build_id (will do nothing if the file timestamp
+     did not change).  If exec file changed, reopen_exec_file has
+     allocated another file name, so get_exec_file again.  */
+  reopen_exec_file ();
+  current_exec_file = get_exec_file (0);
+
+  const bfd_build_id *exec_file_build_id = build_id_bfd_get (exec_bfd);
+  if (exec_file_build_id != nullptr)
+    {
+      /* Prepend the target prefix, to force gdb_bfd_open to open the
+	 file on the remote file system (if indeed remote).  */
+      std::string target_pid_exec_file
+	= std::string (TARGET_SYSROOT_PREFIX) + pid_exec_file;
+
+      gdb_bfd_ref_ptr abfd (gdb_bfd_open (target_pid_exec_file.c_str (),
+					  gnutarget, -1, false));
+      if (abfd != nullptr)
+	{
+	  const bfd_build_id *target_exec_file_build_id
+	    = build_id_bfd_get (abfd.get ());
+
+	  if (target_exec_file_build_id != nullptr)
+	    {
+	      if (exec_file_build_id->size == target_exec_file_build_id->size
+		  && memcmp (exec_file_build_id->data,
+			     target_exec_file_build_id->data,
+			     exec_file_build_id->size) == 0)
+		{
+		  /* Match.  */
+		  return;
+		}
+	      else
+		build_id_mismatch = true;
+	    }
+	}
+    }
+
+  if (build_id_mismatch)
+    {
+      std::string exec_file_target (pid_exec_file);
+
+      /* In case the exec file is not local, exec_file_target has to point at
+	 the target file system.  */
+      if (is_target_filename (current_exec_file) && !target_filesystem_is_local ())
+	exec_file_target = TARGET_SYSROOT_PREFIX + exec_file_target;
+
+      warning
+	(_("Build ID mismatch between current exec-file %ps\n"
+	   "and automatically determined exec-file %ps\n"
+	   "exec-file-mismatch handling is currently \"%s\""),
+	 styled_string (file_name_style.style (), current_exec_file),
+	 styled_string (file_name_style.style (), exec_file_target.c_str ()),
+	 exec_file_mismatch_names[exec_file_mismatch_mode]);
+      if (exec_file_mismatch_mode == exec_file_mismatch_ask)
+	{
+	  symfile_add_flags add_flags = SYMFILE_MAINLINE;
+	  if (from_tty)
+	    {
+	      add_flags |= SYMFILE_VERBOSE;
+	      add_flags |= SYMFILE_ALWAYS_CONFIRM;
+	    }
+	  try
+	    {
+	      symbol_file_add_main (exec_file_target.c_str (), add_flags);
+	      exec_file_attach (exec_file_target.c_str (), from_tty);
+	    }
+	  catch (gdb_exception_error &err)
+	    {
+	      warning (_("loading %ps %s"),
+		       styled_string (file_name_style.style (),
+				      exec_file_target.c_str ()),
+		       err.message != NULL ? err.what () : "error");
+	    }
+	}
+    }
+}
+
+/* See gdbcore.h.  */
+
+void
 exec_file_locate_attach (int pid, int defer_bp_reset, int from_tty)
 {
   char *exec_file_target;
@@ -300,6 +446,7 @@ exec_file_attach (const char *filename,
 #if defined(__GO32__) || defined(_WIN32) || defined(__CYGWIN__)
 	  if (scratch_chan < 0)
 	    {
+	      int first_errno = errno;
 	      char *exename = (char *) alloca (strlen (filename) + 5);
 
 	      strcat (strcpy (exename, filename), ".exe");
@@ -308,6 +455,8 @@ exec_file_attach (const char *filename,
 				    O_RDWR | O_BINARY
 				    : O_RDONLY | O_BINARY,
 				    &scratch_storage);
+	      if (scratch_chan < 0)
+		errno = first_errno;
 	    }
 #endif
 	  if (scratch_chan < 0)
@@ -331,8 +480,9 @@ exec_file_attach (const char *filename,
 
       if (!exec_bfd)
 	{
-	  error (_("\"%s\": could not open as an executable file: %s."),
-		 scratch_pathname, bfd_errmsg (bfd_get_error ()));
+	  error (_("\"%ps\": could not open as an executable file: %s."),
+		 styled_string (file_name_style.style (), scratch_pathname),
+		 bfd_errmsg (bfd_get_error ()));
 	}
 
       /* gdb_realpath_keepfile resolves symlinks on the local
@@ -348,8 +498,8 @@ exec_file_attach (const char *filename,
 	  /* Make sure to close exec_bfd, or else "run" might try to use
 	     it.  */
 	  exec_close ();
-	  error (_("\"%s\": not in executable format: %s"),
-		 scratch_pathname,
+	  error (_("\"%ps\": not in executable format: %s"),
+		 styled_string (file_name_style.style (), scratch_pathname),
 		 gdb_bfd_errmsg (bfd_get_error (), matching).c_str ());
 	}
 
@@ -358,8 +508,9 @@ exec_file_attach (const char *filename,
 	  /* Make sure to close exec_bfd, or else "run" might try to use
 	     it.  */
 	  exec_close ();
-	  error (_("\"%s\": can't find the file sections: %s"),
-		 scratch_pathname, bfd_errmsg (bfd_get_error ()));
+	  error (_("\"%ps\": can't find the file sections: %s"),
+		 styled_string (file_name_style.style (), scratch_pathname),
+		 bfd_errmsg (bfd_get_error ()));
 	}
 
       exec_bfd_mtime = bfd_get_mtime (exec_bfd);
@@ -511,14 +662,13 @@ build_section_table (struct bfd *some_bf
   unsigned count;
 
   count = bfd_count_sections (some_bfd);
-  if (*start)
-    xfree (* start);
+  xfree (*start);
   *start = XNEWVEC (struct target_section, count);
   *end = *start;
   bfd_map_over_sections (some_bfd, add_to_section_table, (char *) end);
-  if (*end > *start + count)
-    internal_error (__FILE__, __LINE__,
-		    _("failed internal consistency check"));
+
+  gdb_assert (*end <= *start + count);
+
   /* We could realloc the table, but it probably loses for most files.  */
   return 0;
 }
@@ -547,10 +697,23 @@ add_target_sections (void *owner,
 	  table->sections[space + i].owner = owner;
 	}
 
+      scoped_restore_current_pspace_and_thread restore_pspace_thread;
+      program_space *curr_pspace = current_program_space;
+
       /* If these are the first file sections we can provide memory
-	 from, push the file_stratum target.  */
-      if (!target_is_pushed (&exec_ops))
-	push_target (&exec_ops);
+	 from, push the file_stratum target.  Must do this in all
+	 inferiors sharing the program space.  */
+      for (inferior *inf : all_inferiors ())
+	{
+	  if (inf->pspace != curr_pspace)
+	    continue;
+
+	  if (inf->target_is_pushed (&exec_ops))
+	    continue;
+
+	  switch_to_inferior_no_thread (inf);
+	  push_target (&exec_ops);
+	}
     }
 }
 
@@ -628,21 +791,39 @@ remove_target_sections (void *owner)
       old_count = resize_section_table (table, dest - src);
 
       /* If we don't have any more sections to read memory from,
-	 remove the file_stratum target from the stack.  */
+	 remove the file_stratum target from the stack of each
+	 inferior sharing the program space.  */
       if (old_count + (dest - src) == 0)
 	{
-	  struct program_space *pspace;
+	  scoped_restore_current_pspace_and_thread restore_pspace_thread;
+	  program_space *curr_pspace = current_program_space;
+
+	  for (inferior *inf : all_inferiors ())
+	    {
+	      if (inf->pspace != curr_pspace)
+		continue;
 
-	  ALL_PSPACES (pspace)
-	    if (pspace->target_sections.sections
-		!= pspace->target_sections.sections_end)
-	      return;
+	      if (inf->pspace->target_sections.sections
+		  != inf->pspace->target_sections.sections_end)
+		continue;
 
-	  unpush_target (&exec_ops);
+	      switch_to_inferior_no_thread (inf);
+	      unpush_target (&exec_ops);
+	    }
 	}
     }
 }
 
+/* See exec.h.  */
+
+void
+exec_on_vfork ()
+{
+  if (current_program_space->target_sections.sections
+      != current_program_space->target_sections.sections_end)
+    push_target (&exec_ops);
+}
+
 
 
 enum target_xfer_status
@@ -775,23 +956,22 @@ section_table_xfer_memory_partial (gdb_b
 				   ULONGEST *xfered_len,
 				   struct target_section *sections,
 				   struct target_section *sections_end,
-				   const char *section_name)
+				   gdb::function_view<bool
+				     (const struct target_section *)> match_cb)
 {
   int res;
   struct target_section *p;
   ULONGEST memaddr = offset;
   ULONGEST memend = memaddr + len;
 
-  if (len == 0)
-    internal_error (__FILE__, __LINE__,
-		    _("failed internal consistency check"));
+  gdb_assert (len != 0);
 
   for (p = sections; p < sections_end; p++)
     {
       struct bfd_section *asect = p->the_bfd_section;
       bfd *abfd = asect->owner;
 
-      if (section_name && strcmp (section_name, asect->name) != 0)
+      if (match_cb != nullptr && !match_cb (p))
 	continue;		/* not the section we need.  */
       if (memaddr >= p->addr)
         {
@@ -864,8 +1044,7 @@ exec_target::xfer_partial (enum target_o
     return section_table_xfer_memory_partial (readbuf, writebuf,
 					      offset, len, xfered_len,
 					      table->sections,
-					      table->sections_end,
-					      NULL);
+					      table->sections_end);
   else
     return TARGET_XFER_E_IO;
 }
@@ -879,7 +1058,9 @@ print_section_info (struct target_sectio
   /* FIXME: 16 is not wide enough when gdbarch_addr_bit > 64.  */
   int wid = gdbarch_addr_bit (gdbarch) <= 32 ? 8 : 16;
 
-  printf_filtered ("\t`%s', ", bfd_get_filename (abfd));
+  printf_filtered ("\t`%ps', ",
+		   styled_string (file_name_style.style (),
+				  bfd_get_filename (abfd)));
   wrap_here ("        ");
   printf_filtered (_("file type %s.\n"), bfd_get_target (abfd));
   if (abfd == exec_bfd)
@@ -906,8 +1087,9 @@ print_section_info (struct target_sectio
 	    }
 	}
       if (p == t->sections_end)
-	warning (_("Cannot find section for the entry point of %s."),
-		 bfd_get_filename (abfd));
+	warning (_("Cannot find section for the entry point of %ps."),
+		 styled_string (file_name_style.style (),
+				bfd_get_filename (abfd)));
 
       entry_point = gdbarch_addr_bits_remove (gdbarch, 
 					      bfd_get_start_address (abfd) 
@@ -934,7 +1116,9 @@ print_section_info (struct target_sectio
 			 hex_string_custom (psect->filepos, 8));
       printf_filtered (" is %s", bfd_section_name (psect));
       if (pbfd != abfd)
-	printf_filtered (" in %s", bfd_get_filename (pbfd));
+	printf_filtered (" in %ps",
+			 styled_string (file_name_style.style (),
+					bfd_get_filename (pbfd)));
       printf_filtered ("\n");
     }
 }
@@ -1002,7 +1186,8 @@ exec_set_section_address (const char *fi
   table = current_target_sections;
   for (p = table->sections; p < table->sections_end; p++)
     {
-      if (filename_cmp (filename, p->the_bfd_section->owner->filename) == 0
+      if (filename_cmp (filename,
+			bfd_get_filename (p->the_bfd_section->owner)) == 0
 	  && index == p->the_bfd_section->index)
 	{
 	  p->endaddr += address - p->addr;
@@ -1032,8 +1217,9 @@ exec_target::find_memory_regions (find_m
   return objfile_find_memory_regions (this, func, data);
 }
 
+void _initialize_exec ();
 void
-_initialize_exec (void)
+_initialize_exec ()
 {
   struct cmd_list_element *c;
 
@@ -1070,5 +1256,27 @@ Show writing into executable and core fi
 			   show_write_files,
 			   &setlist, &showlist);
 
+  add_setshow_enum_cmd ("exec-file-mismatch", class_support,
+			exec_file_mismatch_names,
+			&exec_file_mismatch,
+			_("\
+Set exec-file-mismatch handling (ask|warn|off)."),
+			_("\
+Show exec-file-mismatch handling (ask|warn|off)."),
+			_("\
+Specifies how to handle a mismatch between the current exec-file\n\
+loaded by GDB and the exec-file automatically determined when attaching\n\
+to a process:\n\n\
+ ask  - warn the user and ask whether to load the determined exec-file.\n\
+ warn - warn the user, but do not change the exec-file.\n\
+ off  - do not check for mismatch.\n\
+\n\
+GDB detects a mismatch by comparing the build IDs of the files.\n\
+If the user confirms loading the determined exec-file, then its symbols\n\
+will be loaded as well."),
+			set_exec_file_mismatch_command,
+			show_exec_file_mismatch_command,
+			&setlist, &showlist);
+
   add_target (exec_target_info, exec_target_open, filename_completer);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/exec.h ./gdb/exec.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/exec.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/exec.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Work with executable files, for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -44,6 +44,13 @@ extern int build_section_table (struct b
 
 extern void clear_section_table (struct target_section_table *table);
 
+/* The current inferior is a child vforked and its program space is
+   shared with its parent.  This pushes the exec target on the
+   current/child inferior's target stack if there are sections in the
+   program space's section table.  */
+
+extern void exec_on_vfork ();
+
 /* Read from mappable read-only sections of BFD executable files.
    Return TARGET_XFER_OK, if read is successful.  Return
    TARGET_XFER_EOF if read is done.  Return TARGET_XFER_E_IO
@@ -58,8 +65,13 @@ extern enum target_xfer_status
    Request to transfer up to LEN 8-bit bytes of the target sections
    defined by SECTIONS and SECTIONS_END.  The OFFSET specifies the
    starting address.
-   If SECTION_NAME is not NULL, only access sections with that same
-   name.
+
+   The MATCH_CB predicate is optional; when provided it will be called
+   for each section under consideration.  When MATCH_CB evaluates as
+   true, the section remains under consideration; a false result
+   removes it from consideration for performing the memory transfers
+   noted above.  See memory_xfer_partial_1() in target.c for an
+   example.
 
    Return the number of bytes actually transfered, or zero when no
    data is available for the requested range.
@@ -76,7 +88,9 @@ extern enum target_xfer_status
 				     ULONGEST, ULONGEST, ULONGEST *,
 				     struct target_section *,
 				     struct target_section *,
-				     const char *);
+				     gdb::function_view<bool
+				       (const struct target_section *)> match_cb
+				         = nullptr);
 
 /* Read from mappable read-only sections of BFD executable files.
    Similar to exec_read_partial_read_only, but return
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/expprint.c ./gdb/expprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/expprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/expprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Print in infix form a struct expression.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -87,7 +87,7 @@ print_subexp_standard (struct expression
     case OP_SCOPE:
       myprec = PREC_PREFIX;
       assoc = 0;
-      fputs_filtered (TYPE_NAME (exp->elts[pc + 1].type), stream);
+      fputs_filtered (exp->elts[pc + 1].type->name (), stream);
       fputs_filtered ("::", stream);
       nargs = longest_to_int (exp->elts[pc + 2].longconst);
       (*pos) += 4 + BYTES_TO_EXP_ELEM (nargs + 1);
@@ -241,18 +241,14 @@ print_subexp_standard (struct expression
 
     case OP_OBJC_MSGCALL:
       {			/* Objective C message (method) call.  */
-	gdb::unique_xmalloc_ptr<char> selector;
-
 	(*pos) += 3;
 	nargs = longest_to_int (exp->elts[pc + 2].longconst);
 	fprintf_unfiltered (stream, "[");
 	print_subexp (exp, pos, stream, PREC_SUFFIX);
-	if (0 == target_read_string (exp->elts[pc + 1].longconst,
-				     &selector, 1024, NULL))
-	  {
-	    error (_("bad selector"));
-	    return;
-	  }
+	gdb::unique_xmalloc_ptr<char> selector
+	  = target_read_string (exp->elts[pc + 1].longconst, 1024);
+	if (selector == nullptr)
+	  error (_("bad selector"));
 	if (nargs)
 	  {
 	    char *s, *nextS;
@@ -448,7 +444,7 @@ print_subexp_standard (struct expression
       (*pos) += 2;
       if ((int) prec > (int) PREC_PREFIX)
 	fputs_filtered ("(", stream);
-      if (TYPE_CODE (exp->elts[pc + 1].type) == TYPE_CODE_FUNC
+      if (exp->elts[pc + 1].type->code () == TYPE_CODE_FUNC
 	  && exp->elts[pc + 3].opcode == OP_LONG)
 	{
 	  struct value_print_options opts;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/expression.h ./gdb/expression.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/expression.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/expression.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for expressions stored in reversed prefix form, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/extension.c ./gdb/extension.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/extension.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/extension.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Interface between gdb and its extension languages.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -32,24 +32,7 @@
 #include "cli/cli-script.h"
 #include "python/python.h"
 #include "guile/guile.h"
-
-/* Iterate over all external extension languages, regardless of whether the
-   support has been compiled in or not.
-   This does not include GDB's own scripting language.  */
-
-#define ALL_EXTENSION_LANGUAGES(i, extlang) \
-  for (/*int*/ i = 0, extlang = extension_languages[0]; \
-       extlang != NULL; \
-       extlang = extension_languages[++i])
-
-/* Iterate over all external extension languages that are supported.
-   This does not include GDB's own scripting language.  */
-
-#define ALL_ENABLED_EXTENSION_LANGUAGES(i, extlang) \
-  for (/*int*/ i = 0, extlang = extension_languages[0]; \
-       extlang != NULL; \
-       extlang = extension_languages[++i]) \
-    if (extlang->ops != NULL)
+#include <array>
 
 static script_sourcer_func source_gdb_script;
 static objfile_script_sourcer_func source_gdb_objfile_script;
@@ -99,12 +82,11 @@ const struct extension_language_defn ext
    pretty-printed value is the one that is used.  This algorithm is employed
    throughout.  */
 
-static const struct extension_language_defn * const extension_languages[] =
+static const std::array<const extension_language_defn *, 2> extension_languages
 {
   /* To preserve existing behaviour, python should always appear first.  */
   &extension_language_python,
   &extension_language_guile,
-  NULL
 };
 
 /* Return a pointer to the struct extension_language_defn object of
@@ -115,15 +97,12 @@ static const struct extension_language_d
 const struct extension_language_defn *
 get_ext_lang_defn (enum extension_language lang)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
   gdb_assert (lang != EXT_LANG_NONE);
 
   if (lang == EXT_LANG_GDB)
     return &extension_language_gdb;
 
-  ALL_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
       if (extlang->language == lang)
 	return extlang;
@@ -151,13 +130,10 @@ has_extension (const char *file, const c
 const struct extension_language_defn *
 get_ext_lang_of_file (const char *file)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
   if (has_extension (file, extension_language_gdb.suffix))
     return &extension_language_gdb;
 
-  ALL_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
       if (has_extension (file, extlang->suffix))
 	return extlang;
@@ -331,12 +307,10 @@ ext_lang_auto_load_enabled (const struct
 void
 finish_ext_lang_initialization (void)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
-      if (extlang->ops->finish_initialization != NULL)
+      if (extlang->ops != nullptr
+	  && extlang->ops->finish_initialization != NULL)
 	extlang->ops->finish_initialization (extlang);
     }
 }
@@ -355,10 +329,7 @@ finish_ext_lang_initialization (void)
 void
 eval_ext_lang_from_control_command (struct command_line *cmd)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
       if (extlang->cli_control_type == cmd->control_type)
 	{
@@ -385,16 +356,14 @@ eval_ext_lang_from_control_command (stru
 void
 auto_load_ext_lang_scripts_for_objfile (struct objfile *objfile)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  extlang = &extension_language_gdb;
-  if (ext_lang_auto_load_enabled (extlang))
-    auto_load_objfile_script (objfile, extlang);
+  const struct extension_language_defn *gdb = &extension_language_gdb;
+  if (ext_lang_auto_load_enabled (gdb))
+    auto_load_objfile_script (objfile, gdb);
 
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
-      if (ext_lang_auto_load_enabled (extlang))
+      if (extlang->ops != nullptr
+	  && ext_lang_auto_load_enabled (extlang))
 	auto_load_objfile_script (objfile, extlang);
     }
 }
@@ -410,12 +379,10 @@ auto_load_ext_lang_scripts_for_objfile (
 
 ext_lang_type_printers::ext_lang_type_printers ()
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
-      if (extlang->ops->start_type_printers != NULL)
+      if (extlang->ops != nullptr
+	  && extlang->ops->start_type_printers != NULL)
 	extlang->ops->start_type_printers (extlang, this);
     }
 }
@@ -429,15 +396,13 @@ char *
 apply_ext_lang_type_printers (struct ext_lang_type_printers *printers,
 			      struct type *type)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
       char *result = NULL;
       enum ext_lang_rc rc;
 
-      if (extlang->ops->apply_type_printers == NULL)
+      if (extlang->ops == nullptr
+	  || extlang->ops->apply_type_printers == NULL)
 	continue;
       rc = extlang->ops->apply_type_printers (extlang, printers, type,
 					      &result);
@@ -460,22 +425,17 @@ apply_ext_lang_type_printers (struct ext
 
 ext_lang_type_printers::~ext_lang_type_printers ()
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
-      if (extlang->ops->free_type_printers != NULL)
+      if (extlang->ops != nullptr
+	  && extlang->ops->free_type_printers != NULL)
 	extlang->ops->free_type_printers (extlang, this);
     }
 }
 
-/* Try to pretty-print a value of type TYPE located at VAL's contents
-   buffer + EMBEDDED_OFFSET, which came from the inferior at address
-   ADDRESS + EMBEDDED_OFFSET, onto stdio stream STREAM according to
-   OPTIONS.
-   VAL is the whole object that came from ADDRESS.
-   Returns non-zero if the value was successfully pretty-printed.
+/* Try to pretty-print a value onto stdio stream STREAM according to
+   OPTIONS.  VAL is the object to print.  Returns non-zero if the
+   value was successfully pretty-printed.
 
    Extension languages are tried in the order specified by
    extension_languages.  The first one to provide a pretty-printed
@@ -488,26 +448,20 @@ ext_lang_type_printers::~ext_lang_type_p
    errors that trigger an exception in the extension language.  */
 
 int
-apply_ext_lang_val_pretty_printer (struct type *type,
-				   LONGEST embedded_offset, CORE_ADDR address,
+apply_ext_lang_val_pretty_printer (struct value *val,
 				   struct ui_file *stream, int recurse,
-				   struct value *val,
 				   const struct value_print_options *options,
 				   const struct language_defn *language)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
       enum ext_lang_rc rc;
 
-      if (extlang->ops->apply_val_pretty_printer == NULL)
+      if (extlang->ops == nullptr
+	  || extlang->ops->apply_val_pretty_printer == NULL)
 	continue;
-      rc = extlang->ops->apply_val_pretty_printer (extlang, type,
-						   embedded_offset, address,
-						   stream, recurse, val,
-						   options, language);
+      rc = extlang->ops->apply_val_pretty_printer (extlang, val, stream,
+						   recurse, options, language);
       switch (rc)
 	{
 	case EXT_LANG_RC_OK:
@@ -551,14 +505,12 @@ apply_ext_lang_frame_filter (struct fram
 			     struct ui_out *out,
 			     int frame_low, int frame_high)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
       enum ext_lang_bt_status status;
 
-      if (extlang->ops->apply_frame_filter == NULL)
+      if (extlang->ops == nullptr
+	  || extlang->ops->apply_frame_filter == NULL)
 	continue;
       status = extlang->ops->apply_frame_filter (extlang, frame, flags,
 					       args_type, out,
@@ -584,12 +536,10 @@ apply_ext_lang_frame_filter (struct fram
 void
 preserve_ext_lang_values (struct objfile *objfile, htab_t copied_types)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
-      if (extlang->ops->preserve_values != NULL)
+      if (extlang->ops != nullptr
+	  && extlang->ops->preserve_values != NULL)
 	extlang->ops->preserve_values (extlang, objfile, copied_types);
     }
 }
@@ -607,12 +557,10 @@ const struct extension_language_defn *
 get_breakpoint_cond_ext_lang (struct breakpoint *b,
 			      enum extension_language skip_lang)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
-      if (extlang->language != skip_lang
+      if (extlang->ops != nullptr
+	  && extlang->language != skip_lang
 	  && extlang->ops->breakpoint_has_cond != NULL
 	  && extlang->ops->breakpoint_has_cond (extlang, b))
 	return extlang;
@@ -627,18 +575,17 @@ get_breakpoint_cond_ext_lang (struct bre
 int
 breakpoint_ext_lang_cond_says_stop (struct breakpoint *b)
 {
-  int i;
-  const struct extension_language_defn *extlang;
   enum ext_lang_bp_stop stop = EXT_LANG_BP_STOP_UNSET;
 
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
       /* There is a rule that a breakpoint can have at most one of any of a
 	 CLI or extension language condition.  However, Python hacks in "finish
 	 breakpoints" on top of the "stop" check, so we have to call this for
 	 every language, even if we could first determine whether a "stop"
 	 method exists.  */
-      if (extlang->ops->breakpoint_cond_says_stop != NULL)
+      if (extlang->ops != nullptr
+	  && extlang->ops->breakpoint_cond_says_stop != NULL)
 	{
 	  enum ext_lang_bp_stop this_stop
 	    = extlang->ops->breakpoint_cond_says_stop (extlang, b);
@@ -820,12 +767,12 @@ set_quit_flag (void)
 int
 check_quit_flag (void)
 {
-  int i, result = 0;
-  const struct extension_language_defn *extlang;
+  int result = 0;
 
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
-      if (extlang->ops->check_quit_flag != NULL)
+      if (extlang->ops != nullptr
+	  && extlang->ops->check_quit_flag != NULL)
 	if (extlang->ops->check_quit_flag (extlang) != 0)
 	  result = 1;
     }
@@ -850,16 +797,14 @@ void
 get_matching_xmethod_workers (struct type *type, const char *method_name,
 			      std::vector<xmethod_worker_up> *workers)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
       enum ext_lang_rc rc;
 
       /* If an extension language does not support xmethods, ignore
 	 it.  */
-      if (extlang->ops->get_matching_xmethod_workers == NULL)
+      if (extlang->ops == nullptr
+	  || extlang->ops->get_matching_xmethod_workers == NULL)
 	continue;
 
       rc = extlang->ops->get_matching_xmethod_workers (extlang,
@@ -903,6 +848,26 @@ xmethod_worker::get_result_type (value *
   return result_type;
 }
 
+/* See extension.h.  */
+
+gdb::optional<std::string>
+ext_lang_colorize (const std::string &filename, const std::string &contents)
+{
+  gdb::optional<std::string> result;
+
+  for (const struct extension_language_defn *extlang : extension_languages)
+    {
+      if (extlang->ops == nullptr
+	  || extlang->ops->colorize == nullptr)
+	continue;
+      result = extlang->ops->colorize (filename, contents);
+      if (result.has_value ())
+	return result;
+    }
+
+  return result;
+}
+
 /* Called via an observer before gdb prints its prompt.
    Iterate over the extension languages giving them a chance to
    change the prompt.  The first one to change the prompt wins,
@@ -911,14 +876,12 @@ xmethod_worker::get_result_type (value *
 static void
 ext_lang_before_prompt (const char *current_gdb_prompt)
 {
-  int i;
-  const struct extension_language_defn *extlang;
-
-  ALL_ENABLED_EXTENSION_LANGUAGES (i, extlang)
+  for (const struct extension_language_defn *extlang : extension_languages)
     {
       enum ext_lang_rc rc;
 
-      if (extlang->ops->before_prompt == NULL)
+      if (extlang->ops == nullptr
+	  || extlang->ops->before_prompt == NULL)
 	continue;
       rc = extlang->ops->before_prompt (extlang, current_gdb_prompt);
       switch (rc)
@@ -934,8 +897,9 @@ ext_lang_before_prompt (const char *curr
     }
 }
 
+void _initialize_extension ();
 void
-_initialize_extension (void)
+_initialize_extension ()
 {
   gdb::observers::before_prompt.attach (ext_lang_before_prompt);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/extension.h ./gdb/extension.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/extension.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/extension.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Interface between gdb and its extension languages.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,6 +22,7 @@
 
 #include "mi/mi-cmds.h" /* For PRINT_NO_VALUES, etc.  */
 #include "gdbsupport/array-view.h"
+#include "gdbsupport/gdb_optional.h"
 
 struct breakpoint;
 struct command_line;
@@ -282,10 +283,8 @@ extern char *apply_ext_lang_type_printer
 					   struct type *);
 
 extern int apply_ext_lang_val_pretty_printer
-  (struct type *type,
-   LONGEST embedded_offset, CORE_ADDR address,
-   struct ui_file *stream, int recurse,
-   struct value *val, const struct value_print_options *options,
+  (struct value *value, struct ui_file *stream, int recurse,
+   const struct value_print_options *options,
    const struct language_defn *language);
 
 extern enum ext_lang_bt_status apply_ext_lang_frame_filter
@@ -309,4 +308,12 @@ extern void get_matching_xmethod_workers
   (struct type *type, const char *method_name,
    std::vector<xmethod_worker_up> *workers);
 
+/* Try to colorize some source code.  FILENAME is the name of the file
+   holding the code.  CONTENTS is the source code itself.  This will
+   either a colorized (using ANSI terminal escapes) version of the
+   source code, or an empty value if colorizing could not be done.  */
+
+extern gdb::optional<std::string> ext_lang_colorize
+  (const std::string &filename, const std::string &contents);
+
 #endif /* EXTENSION_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/extension-priv.h ./gdb/extension-priv.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/extension-priv.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/extension-priv.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Private implementation details of interface between gdb and its
    extension languages.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -152,19 +152,14 @@ struct extension_language_ops
   void (*free_type_printers) (const struct extension_language_defn *,
 			      struct ext_lang_type_printers *);
 
-  /* Try to pretty-print a value of type TYPE located at VAL's contents
-     buffer + EMBEDDED_OFFSET, which came from the inferior at address
-     ADDRESS + EMBEDDED_OFFSET, onto stdio stream STREAM according to
-     OPTIONS.
-     VAL is the whole object that came from ADDRESS.
-     Returns EXT_LANG_RC_OK upon success, EXT_LANG_RC_NOP if the value
-     is not recognized, and EXT_LANG_RC_ERROR if an error was encountered.  */
+  /* Try to pretty-print a value, onto stdio stream STREAM according
+     to OPTIONS.  VAL is the object to print.  Returns EXT_LANG_RC_OK
+     upon success, EXT_LANG_RC_NOP if the value is not recognized, and
+     EXT_LANG_RC_ERROR if an error was encountered.  */
   enum ext_lang_rc (*apply_val_pretty_printer)
     (const struct extension_language_defn *,
-     struct type *type,
-     LONGEST embedded_offset, CORE_ADDR address,
-     struct ui_file *stream, int recurse,
-     struct value *val, const struct value_print_options *options,
+     struct value *val, struct ui_file *stream, int recurse,
+     const struct value_print_options *options,
      const struct language_defn *language);
 
   /* GDB access to the "frame filter" feature.
@@ -254,6 +249,13 @@ struct extension_language_ops
      struct type *obj_type,
      const char *method_name,
      std::vector<xmethod_worker_up> *dm_vec);
+
+  /* Colorize a source file.  NAME is the source file's name, and
+     CONTENTS is the contents of the file.  This should either return
+     colorized (using ANSI terminal escapes) version of the contents,
+     or an empty option.  */
+  gdb::optional<std::string> (*colorize) (const std::string &name,
+					  const std::string &contents);
 };
 
 /* State necessary to restore a signal handler to its previous value.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fbsd-nat.c ./gdb/fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/fbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -86,12 +86,12 @@ fbsd_nat_target::pid_to_exec_file (int p
 
 #ifdef HAVE_KINFO_GETVMMAP
 /* Iterate over all the memory regions in the current inferior,
-   calling FUNC for each memory region.  OBFD is passed as the last
+   calling FUNC for each memory region.  DATA is passed as the last
    argument to FUNC.  */
 
 int
 fbsd_nat_target::find_memory_regions (find_memory_region_ftype func,
-				      void *obfd)
+				      void *data)
 {
   pid_t pid = inferior_ptid.pid ();
   struct kinfo_vmentry *kve;
@@ -133,7 +133,7 @@ fbsd_nat_target::find_memory_regions (fi
 	 Pass MODIFIED as true, we do not know the real modification state.  */
       func (kve->kve_start, size, kve->kve_protection & KVME_PROT_READ,
 	    kve->kve_protection & KVME_PROT_WRITE,
-	    kve->kve_protection & KVME_PROT_EXEC, 1, obfd);
+	    kve->kve_protection & KVME_PROT_EXEC, 1, data);
     }
   return 0;
 }
@@ -160,12 +160,12 @@ fbsd_read_mapping (FILE *mapfile, unsign
 }
 
 /* Iterate over all the memory regions in the current inferior,
-   calling FUNC for each memory region.  OBFD is passed as the last
+   calling FUNC for each memory region.  DATA is passed as the last
    argument to FUNC.  */
 
 int
 fbsd_nat_target::find_memory_regions (find_memory_region_ftype func,
-				      void *obfd)
+				      void *data)
 {
   pid_t pid = inferior_ptid.pid ();
   unsigned long start, end, size;
@@ -202,7 +202,7 @@ fbsd_nat_target::find_memory_regions (fi
 
       /* Invoke the callback function to create the corefile segment.
 	 Pass MODIFIED as true, we do not know the real modification state.  */
-      func (start, size, read, write, exec, 1, obfd);
+      func (start, size, read, write, exec, 1, data);
     }
 
   return 0;
@@ -991,11 +991,11 @@ fbsd_enable_proc_events (pid_t pid)
    called to discover new threads each time the thread list is updated.  */
 
 static void
-fbsd_add_threads (pid_t pid)
+fbsd_add_threads (fbsd_nat_target *target, pid_t pid)
 {
   int i, nlwps;
 
-  gdb_assert (!in_thread_list (ptid_t (pid)));
+  gdb_assert (!in_thread_list (target, ptid_t (pid)));
   nlwps = ptrace (PT_GETNUMLWPS, pid, NULL, 0);
   if (nlwps == -1)
     perror_with_name (("ptrace"));
@@ -1010,7 +1010,7 @@ fbsd_add_threads (pid_t pid)
     {
       ptid_t ptid = ptid_t (pid, lwps[i], 0);
 
-      if (!in_thread_list (ptid))
+      if (!in_thread_list (target, ptid))
 	{
 #ifdef PT_LWP_EVENTS
 	  struct ptrace_lwpinfo pl;
@@ -1026,7 +1026,7 @@ fbsd_add_threads (pid_t pid)
 	    fprintf_unfiltered (gdb_stdlog,
 				"FLWP: adding thread for LWP %u\n",
 				lwps[i]);
-	  add_thread (ptid);
+	  add_thread (target, ptid);
 	}
     }
 }
@@ -1043,7 +1043,7 @@ fbsd_nat_target::update_thread_list ()
 #else
   prune_threads ();
 
-  fbsd_add_threads (inferior_ptid.pid ());
+  fbsd_add_threads (this, inferior_ptid.pid ());
 #endif
 }
 
@@ -1174,7 +1174,7 @@ fbsd_nat_target::resume (ptid_t ptid, in
   if (ptid.lwp_p ())
     {
       /* If ptid is a specific LWP, suspend all other LWPs in the process.  */
-      inferior *inf = find_inferior_ptid (ptid);
+      inferior *inf = find_inferior_ptid (this, ptid);
 
       for (thread_info *tp : inf->non_exited_threads ())
         {
@@ -1193,7 +1193,7 @@ fbsd_nat_target::resume (ptid_t ptid, in
     {
       /* If ptid is a wildcard, resume all matching threads (they won't run
 	 until the process is continued however).  */
-      for (thread_info *tp : all_non_exited_threads (ptid))
+      for (thread_info *tp : all_non_exited_threads (this, ptid))
 	if (ptrace (PT_RESUME, tp->ptid.lwp (), NULL, 0) == -1)
 	  perror_with_name (("ptrace"));
       ptid = inferior_ptid;
@@ -1239,7 +1239,8 @@ fbsd_nat_target::resume (ptid_t ptid, in
    core, return true.  */
 
 static bool
-fbsd_handle_debug_trap (ptid_t ptid, const struct ptrace_lwpinfo &pl)
+fbsd_handle_debug_trap (fbsd_nat_target *target, ptid_t ptid,
+			const struct ptrace_lwpinfo &pl)
 {
 
   /* Ignore traps without valid siginfo or for signals other than
@@ -1266,7 +1267,7 @@ fbsd_handle_debug_trap (ptid_t ptid, con
   if (pl.pl_siginfo.si_code == TRAP_BRKPT)
     {
       /* Fixup PC for the software breakpoint.  */
-      struct regcache *regcache = get_thread_regcache (ptid);
+      struct regcache *regcache = get_thread_regcache (target, ptid);
       struct gdbarch *gdbarch = regcache->arch ();
       int decr_pc = gdbarch_decr_pc_after_break (gdbarch);
 
@@ -1340,7 +1341,7 @@ fbsd_nat_target::wait (ptid_t ptid, stru
 		 threads might be skipped during post_attach that
 		 have not yet reported their PL_FLAG_EXITED event.
 		 Ignore EXITED events for an unknown LWP.  */
-	      thread_info *thr = find_thread_ptid (wptid);
+	      thread_info *thr = find_thread_ptid (this, wptid);
 	      if (thr != nullptr)
 		{
 		  if (debug_fbsd_lwp)
@@ -1364,13 +1365,13 @@ fbsd_nat_target::wait (ptid_t ptid, stru
 	     PL_FLAG_BORN in case the first stop reported after
 	     attaching to an existing process is a PL_FLAG_BORN
 	     event.  */
-	  if (in_thread_list (ptid_t (pid)))
+	  if (in_thread_list (this, ptid_t (pid)))
 	    {
 	      if (debug_fbsd_lwp)
 		fprintf_unfiltered (gdb_stdlog,
 				    "FLWP: using LWP %u for first thread\n",
 				    pl.pl_lwpid);
-	      thread_change_ptid (ptid_t (pid), wptid);
+	      thread_change_ptid (this, ptid_t (pid), wptid);
 	    }
 
 #ifdef PT_LWP_EVENTS
@@ -1380,13 +1381,13 @@ fbsd_nat_target::wait (ptid_t ptid, stru
 		 threads might be added by fbsd_add_threads that have
 		 not yet reported their PL_FLAG_BORN event.  Ignore
 		 BORN events for an already-known LWP.  */
-	      if (!in_thread_list (wptid))
+	      if (!in_thread_list (this, wptid))
 		{
 		  if (debug_fbsd_lwp)
 		    fprintf_unfiltered (gdb_stdlog,
 					"FLWP: adding thread for LWP %u\n",
 					pl.pl_lwpid);
-		  add_thread (wptid);
+		  add_thread (this, wptid);
 		}
 	      ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
 	      return wptid;
@@ -1474,7 +1475,7 @@ fbsd_nat_target::wait (ptid_t ptid, stru
 #endif
 
 #ifdef USE_SIGTRAP_SIGINFO
-	  if (fbsd_handle_debug_trap (wptid, pl))
+	  if (fbsd_handle_debug_trap (this, wptid, pl))
 	    return wptid;
 #endif
 
@@ -1547,8 +1548,8 @@ fbsd_nat_target::supports_stopped_by_sw_
 /* Target hook for follow_fork.  On entry and at return inferior_ptid is
    the ptid of the followed inferior.  */
 
-int
-fbsd_nat_target::follow_fork (int follow_child, int detach_fork)
+bool
+fbsd_nat_target::follow_fork (bool follow_child, bool detach_fork)
 {
   if (!follow_child && detach_fork)
     {
@@ -1591,7 +1592,7 @@ fbsd_nat_target::follow_fork (int follow
 #endif
     }
 
-  return 0;
+  return false;
 }
 
 int
@@ -1633,7 +1634,7 @@ void
 fbsd_nat_target::post_attach (int pid)
 {
   fbsd_enable_proc_events (pid);
-  fbsd_add_threads (pid);
+  fbsd_add_threads (this, pid);
 }
 
 #ifdef PL_FLAG_EXEC
@@ -1668,8 +1669,15 @@ fbsd_nat_target::set_syscall_catchpoint
 #endif
 #endif
 
+bool
+fbsd_nat_target::supports_multi_process ()
+{
+  return true;
+}
+
+void _initialize_fbsd_nat ();
 void
-_initialize_fbsd_nat (void)
+_initialize_fbsd_nat ()
 {
 #ifdef PT_LWPINFO
   add_setshow_boolean_cmd ("fbsd-lwp", class_maintenance,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fbsd-nat.h ./gdb/fbsd-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fbsd-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/fbsd-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,11 +21,17 @@
 #define FBSD_NAT_H
 
 #include "inf-ptrace.h"
+#include <osreldate.h>
 #include <sys/proc.h>
 
-#ifdef TRAP_BRKPT
-/* MIPS does not set si_code for SIGTRAP.  sparc64 reports
-   non-standard values in si_code for SIGTRAP.  */
+/* FreeBSD kernels 11.3 and later report valid si_code values for
+   SIGTRAP on all architectures.  Older FreeBSD kernels that supported
+   TRAP_BRKPT did not report valid values for MIPS and sparc64.  Even
+   older kernels without TRAP_BRKPT support did not report valid
+   values on any architecture.  */
+#if (__FreeBSD_kernel_version >= 1102502) || (__FreeBSD_version >= 1102502)
+# define USE_SIGTRAP_SIGINFO
+#elif defined(TRAP_BRKPT)
 # if !defined(__mips__) && !defined(__sparc64__)
 #  define USE_SIGTRAP_SIGINFO
 # endif
@@ -75,7 +81,7 @@ public:
 #endif
 
 #ifdef TDP_RFPPWAIT
-  int follow_fork (int, int) override;
+  bool follow_fork (bool, bool) override;
 
   int insert_fork_catchpoint (int) override;
   int remove_fork_catchpoint (int) override;
@@ -94,6 +100,8 @@ public:
     override;
 #endif
 #endif /* PT_LWPINFO */
+
+  bool supports_multi_process () override;
 };
 
 #endif /* fbsd-nat.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fbsd-tdep.c ./gdb/fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/fbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD, architecture-independent.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,6 +21,7 @@
 #include "auxv.h"
 #include "gdbcore.h"
 #include "inferior.h"
+#include "objfiles.h"
 #include "regcache.h"
 #include "regset.h"
 #include "gdbthread.h"
@@ -673,7 +674,8 @@ fbsd_corefile_thread (struct thread_info
 {
   struct regcache *regcache;
 
-  regcache = get_thread_arch_regcache (info->ptid, args->gdbarch);
+  regcache = get_thread_arch_regcache (info->inf->process_target (),
+				       info->ptid, args->gdbarch);
 
   target_fetch_registers (regcache, -1);
 
@@ -724,14 +726,14 @@ fbsd_make_corefile_notes (struct gdbarch
   if (get_exec_file (0))
     {
       const char *fname = lbasename (get_exec_file (0));
-      char *psargs = xstrdup (fname);
+      std::string psargs = fname;
 
-      if (get_inferior_args ())
-	psargs = reconcat (psargs, psargs, " ", get_inferior_args (),
-			   (char *) NULL);
+      const char *infargs = get_inferior_args ();
+      if (infargs != NULL)
+	psargs = psargs + " " + infargs;
 
       note_data = elfcore_write_prpsinfo (obfd, note_data, note_size,
-					  fname, psargs);
+					  fname, psargs.c_str ());
     }
 
   /* Thread register information.  */
@@ -1018,12 +1020,12 @@ fbsd_info_proc_files_entry (int kf_type,
 
 	    /* For local sockets, print out the first non-nul path
 	       rather than both paths.  */
-	    const struct fbsd_sockaddr_un *sun
+	    const struct fbsd_sockaddr_un *saddr_un
 	      = reinterpret_cast<const struct fbsd_sockaddr_un *> (kf_sa_local);
-	    if (sun->sun_path[0] == 0)
-	      sun = reinterpret_cast<const struct fbsd_sockaddr_un *>
+	    if (saddr_un->sun_path[0] == 0)
+	      saddr_un = reinterpret_cast<const struct fbsd_sockaddr_un *>
 		(kf_sa_peer);
-	    printf_filtered ("%s", sun->sun_path);
+	    printf_filtered ("%s", saddr_un->sun_path);
 	    break;
 	  }
 	case FBSD_AF_INET:
@@ -1596,6 +1598,12 @@ fbsd_print_auxv_entry (struct gdbarch *g
       TAG (EHDRFLAGS, _("ELF header e_flags"), AUXV_FORMAT_HEX);
       TAG (HWCAP, _("Machine-dependent CPU capability hints"), AUXV_FORMAT_HEX);
       TAG (HWCAP2, _("Extension of AT_HWCAP"), AUXV_FORMAT_HEX);
+      TAG (BSDFLAGS, _("ELF BSD flags"), AUXV_FORMAT_HEX);
+      TAG (ARGC, _("Argument count"), AUXV_FORMAT_DEC);
+      TAG (ARGV, _("Argument vector"), AUXV_FORMAT_HEX);
+      TAG (ENVC, _("Environment count"), AUXV_FORMAT_DEC);
+      TAG (ENVV, _("Environment vector"), AUXV_FORMAT_HEX);
+      TAG (PS_STRINGS, _("Pointer to ps_strings"), AUXV_FORMAT_HEX);
     }
 
   fprint_auxv_entry (file, name, description, format, type, val);
@@ -1627,7 +1635,7 @@ fbsd_get_siginfo_type (struct gdbarch *g
 
   /* union sigval */
   sigval_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
-  TYPE_NAME (sigval_type) = xstrdup ("sigval");
+  sigval_type->set_name (xstrdup ("sigval"));
   append_composite_type_field (sigval_type, "sival_int", int_type);
   append_composite_type_field (sigval_type, "sival_ptr", void_ptr_type);
 
@@ -1677,7 +1685,7 @@ fbsd_get_siginfo_type (struct gdbarch *g
 
   /* struct siginfo */
   siginfo_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (siginfo_type) = xstrdup ("siginfo");
+  siginfo_type->set_name (xstrdup ("siginfo"));
   append_composite_type_field (siginfo_type, "si_signo", int_type);
   append_composite_type_field (siginfo_type, "si_errno", int_type);
   append_composite_type_field (siginfo_type, "si_code", int_type);
@@ -1981,9 +1989,9 @@ fbsd_fetch_rtld_offsets (struct gdbarch
 				     language_c, NULL).symbol;
       if (obj_entry_sym == NULL)
 	error (_("Unable to find Struct_Obj_Entry symbol"));
-      data->off_linkmap = lookup_struct_elt (SYMBOL_TYPE(obj_entry_sym),
+      data->off_linkmap = lookup_struct_elt (SYMBOL_TYPE (obj_entry_sym),
 					     "linkmap", 0).offset / 8;
-      data->off_tlsindex = lookup_struct_elt (SYMBOL_TYPE(obj_entry_sym),
+      data->off_tlsindex = lookup_struct_elt (SYMBOL_TYPE (obj_entry_sym),
 					      "tlsindex", 0).offset / 8;
       data->rtld_offsets_valid = true;
       return;
@@ -2064,6 +2072,18 @@ fbsd_get_thread_local_address (struct gd
   return addr + offset;
 }
 
+/* See fbsd-tdep.h.  */
+
+CORE_ADDR
+fbsd_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
+{
+  struct bound_minimal_symbol msym = lookup_bound_minimal_symbol ("_rtld_bind");
+  if (msym.minsym != nullptr && BMSYMBOL_VALUE_ADDRESS (msym) == pc)
+    return frame_unwind_caller_pc (get_current_frame ());
+
+  return 0;
+}
+
 /* To be called from GDB_OSABI_FREEBSD handlers. */
 
 void
@@ -2078,14 +2098,16 @@ fbsd_init_abi (struct gdbarch_info info,
   set_gdbarch_get_siginfo_type (gdbarch, fbsd_get_siginfo_type);
   set_gdbarch_gdb_signal_from_target (gdbarch, fbsd_gdb_signal_from_target);
   set_gdbarch_gdb_signal_to_target (gdbarch, fbsd_gdb_signal_to_target);
+  set_gdbarch_skip_solib_resolver (gdbarch, fbsd_skip_solib_resolver);
 
   /* `catch syscall' */
   set_xml_syscall_file_name (gdbarch, "syscalls/freebsd.xml");
   set_gdbarch_get_syscall_number (gdbarch, fbsd_get_syscall_number);
 }
 
+void _initialize_fbsd_tdep ();
 void
-_initialize_fbsd_tdep (void)
+_initialize_fbsd_tdep ()
 {
   fbsd_gdbarch_data_handle =
     gdbarch_data_register_post_init (init_fbsd_gdbarch_data);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fbsd-tdep.h ./gdb/fbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fbsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/fbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD, architecture independent.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -71,4 +71,9 @@ extern CORE_ADDR fbsd_get_thread_local_a
 						CORE_ADDR lm_addr,
 						CORE_ADDR offset);
 
+/* Implement the "skip_solib_resolver" gdbarch method.  */
+
+extern CORE_ADDR fbsd_skip_solib_resolver (struct gdbarch *gdbarch,
+					   CORE_ADDR pc);
+
 #endif /* fbsd-tdep.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/aarch64-core.xml ./gdb/features/aarch64-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/aarch64-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/aarch64-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
      Contributed by ARM Ltd.
 
      Copying and distribution of this file, with or without modification,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/aarch64-fpu.xml ./gdb/features/aarch64-fpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/aarch64-fpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/aarch64-fpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
      Contributed by ARM Ltd.
 
      Copying and distribution of this file, with or without modification,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/aarch64-pauth.xml ./gdb/features/aarch64-pauth.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/aarch64-pauth.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/aarch64-pauth.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/aarch64-sve.c ./gdb/features/aarch64-sve.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/aarch64-sve.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/aarch64-sve.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2018-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v1-aux.c ./gdb/features/arc/v1-aux.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v1-aux.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/features/arc/v1-aux.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,34 @@
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: v1-aux.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_arc_v1_aux (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux");
+  tdesc_type_with_fields *type_with_fields;
+  type_with_fields = tdesc_create_flags (feature, "status32_type", 4);
+  tdesc_add_flag (type_with_fields, 0, "H");
+  tdesc_add_bitfield (type_with_fields, "E", 1, 2);
+  tdesc_add_bitfield (type_with_fields, "A", 3, 4);
+  tdesc_add_flag (type_with_fields, 5, "AE");
+  tdesc_add_flag (type_with_fields, 6, "DE");
+  tdesc_add_flag (type_with_fields, 7, "U");
+  tdesc_add_flag (type_with_fields, 8, "V");
+  tdesc_add_flag (type_with_fields, 9, "C");
+  tdesc_add_flag (type_with_fields, 10, "N");
+  tdesc_add_flag (type_with_fields, 11, "Z");
+  tdesc_add_flag (type_with_fields, 12, "L");
+  tdesc_add_flag (type_with_fields, 13, "R");
+  tdesc_add_flag (type_with_fields, 14, "SE");
+
+  tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "status32", regnum++, 1, NULL, 32, "status32_type");
+  tdesc_create_reg (feature, "lp_start", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "lp_end", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "bta", regnum++, 1, NULL, 32, "code_ptr");
+  return regnum;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v1-aux.xml ./gdb/features/arc/v1-aux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v1-aux.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/features/arc/v1-aux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.arc.aux">
+  <flags id="status32_type" size="4">
+      <field name="H"   start="0" end="0"/>
+      <field name="E"   start="1" end="2"/>
+      <field name="A"   start="3" end="4"/>
+      <field name="AE"  start="5" end="5"/>
+      <field name="DE"  start="6" end="6"/>
+      <field name="U"   start="7" end="7"/>
+      <field name="V"   start="8" end="8"/>
+      <field name="C"   start="9" end="9"/>
+      <field name="N"   start="10" end="10"/>
+      <field name="Z"   start="11" end="11"/>
+      <field name="L"   start="12" end="12"/>
+      <field name="R"   start="13" end="13"/>
+      <field name="SE"  start="14" end="14"/>
+  </flags>
+
+  <reg name="pc"       bitsize="32" type="code_ptr"/>
+  <reg name="status32" bitsize="32" type="status32_type"/>
+  <reg name="lp_start" bitsize="32" type="code_ptr"/>
+  <reg name="lp_end"   bitsize="32" type="code_ptr"/>
+  <reg name="bta"      bitsize="32" type="code_ptr"/>
+</feature>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v1-core.c ./gdb/features/arc/v1-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v1-core.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/features/arc/v1-core.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,45 @@
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: v1-core.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_arc_v1_core (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core");
+  tdesc_create_reg (feature, "r0", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r1", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r2", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r3", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r4", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r5", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r6", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r7", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r16", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r17", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r18", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r19", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r20", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r21", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r22", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r23", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r24", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r25", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "gp", regnum++, 1, NULL, 32, "data_ptr");
+  tdesc_create_reg (feature, "fp", regnum++, 1, NULL, 32, "data_ptr");
+  tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 32, "data_ptr");
+  tdesc_create_reg (feature, "blink", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "lp_count", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "pcl", regnum++, 1, NULL, 32, "code_ptr");
+  return regnum;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v1-core.xml ./gdb/features/arc/v1-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v1-core.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/features/arc/v1-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.arc.core">
+  <reg name="r0"  bitsize="32"/>
+  <reg name="r1"  bitsize="32"/>
+  <reg name="r2"  bitsize="32"/>
+  <reg name="r3"  bitsize="32"/>
+  <reg name="r4"  bitsize="32"/>
+  <reg name="r5"  bitsize="32"/>
+  <reg name="r6"  bitsize="32"/>
+  <reg name="r7"  bitsize="32"/>
+  <reg name="r8"  bitsize="32"/>
+  <reg name="r9"  bitsize="32"/>
+  <reg name="r10" bitsize="32"/>
+  <reg name="r11" bitsize="32"/>
+  <reg name="r12" bitsize="32"/>
+  <reg name="r13" bitsize="32"/>
+  <reg name="r14" bitsize="32"/>
+  <reg name="r15" bitsize="32"/>
+  <reg name="r16" bitsize="32"/>
+  <reg name="r17" bitsize="32"/>
+  <reg name="r18" bitsize="32"/>
+  <reg name="r19" bitsize="32"/>
+  <reg name="r20" bitsize="32"/>
+  <reg name="r21" bitsize="32"/>
+  <reg name="r22" bitsize="32"/>
+  <reg name="r23" bitsize="32"/>
+  <reg name="r24" bitsize="32"/>
+  <reg name="r25" bitsize="32"/>
+
+  <!-- ARC core data pointer registers.  -->
+  <reg name="gp"  bitsize="32" type="data_ptr"/>
+  <reg name="fp"  bitsize="32" type="data_ptr"/>
+  <reg name="sp"  bitsize="32" type="data_ptr"/>
+
+  <!-- Code pointers.  -->
+  <reg name="blink"  bitsize="32" type="code_ptr"/>
+
+  <!-- Here goes extension core registers: r32 - r59 -->
+
+  <!-- Loop counter.  -->
+  <reg name="lp_count" bitsize="32" type="uint32"/>
+
+  <!-- r61 is a reserved register address.  -->
+
+  <!-- r62 is a long immediate value, not a real register.  -->
+
+  <!-- 4-byte aligned read-only program counter.  -->
+  <reg name="pcl" bitsize="32" type="code_ptr" group=""/>
+</feature>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v2-aux.c ./gdb/features/arc/v2-aux.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v2-aux.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/features/arc/v2-aux.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,38 @@
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: v2-aux.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_arc_v2_aux (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux");
+  tdesc_type_with_fields *type_with_fields;
+  type_with_fields = tdesc_create_flags (feature, "status32_type", 4);
+  tdesc_add_flag (type_with_fields, 0, "H");
+  tdesc_add_bitfield (type_with_fields, "E", 1, 4);
+  tdesc_add_flag (type_with_fields, 5, "AE");
+  tdesc_add_flag (type_with_fields, 6, "DE");
+  tdesc_add_flag (type_with_fields, 7, "U");
+  tdesc_add_flag (type_with_fields, 8, "V");
+  tdesc_add_flag (type_with_fields, 9, "C");
+  tdesc_add_flag (type_with_fields, 10, "N");
+  tdesc_add_flag (type_with_fields, 11, "Z");
+  tdesc_add_flag (type_with_fields, 12, "L");
+  tdesc_add_flag (type_with_fields, 13, "DZ");
+  tdesc_add_flag (type_with_fields, 14, "SC");
+  tdesc_add_flag (type_with_fields, 15, "ES");
+  tdesc_add_bitfield (type_with_fields, "RB", 16, 18);
+  tdesc_add_flag (type_with_fields, 19, "AD");
+  tdesc_add_flag (type_with_fields, 20, "US");
+  tdesc_add_flag (type_with_fields, 31, "IE");
+
+  tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "status32", regnum++, 1, NULL, 32, "status32_type");
+  tdesc_create_reg (feature, "lp_start", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "lp_end", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "bta", regnum++, 1, NULL, 32, "code_ptr");
+  return regnum;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v2-aux.xml ./gdb/features/arc/v2-aux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v2-aux.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/features/arc/v2-aux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.arc.aux">
+  <flags id="status32_type" size="4">
+      <field name="H"   start="0" end="0"/>
+      <field name="E"   start="1" end="4"/>
+      <field name="AE"  start="5" end="5"/>
+      <field name="DE"  start="6" end="6"/>
+      <field name="U"   start="7" end="7"/>
+      <field name="V"   start="8" end="8"/>
+      <field name="C"   start="9" end="9"/>
+      <field name="N"   start="10" end="10"/>
+      <field name="Z"   start="11" end="11"/>
+      <field name="L"   start="12" end="12"/>
+      <field name="DZ"  start="13" end="13"/>
+      <field name="SC"  start="14" end="14"/>
+      <field name="ES"  start="15" end="15"/>
+      <field name="RB"  start="16" end="18"/>
+      <field name="AD"  start="19" end="19"/>
+      <field name="US"  start="20" end="20"/>
+      <field name="IE"  start="31" end="31"/>
+  </flags>
+
+  <reg name="pc"       bitsize="32" type="code_ptr"/>
+  <reg name="status32" bitsize="32" type="status32_type"/>
+  <reg name="lp_start" bitsize="32" type="code_ptr"/>
+  <reg name="lp_end"   bitsize="32" type="code_ptr"/>
+  <reg name="bta"      bitsize="32" type="code_ptr"/>
+</feature>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v2-core.c ./gdb/features/arc/v2-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v2-core.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/features/arc/v2-core.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,46 @@
+/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
+  Original: v2-core.xml */
+
+#include "gdbsupport/tdesc.h"
+
+static int
+create_feature_arc_v2_core (struct target_desc *result, long regnum)
+{
+  struct tdesc_feature *feature;
+
+  feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core");
+  tdesc_create_reg (feature, "r0", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r1", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r2", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r3", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r4", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r5", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r6", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r7", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r13", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r14", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r15", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r16", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r17", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r18", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r19", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r20", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r21", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r22", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r23", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r24", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "r25", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "gp", regnum++, 1, NULL, 32, "data_ptr");
+  tdesc_create_reg (feature, "fp", regnum++, 1, NULL, 32, "data_ptr");
+  tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 32, "data_ptr");
+  tdesc_create_reg (feature, "r30", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "blink", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "lp_count", regnum++, 1, NULL, 32, "uint32");
+  tdesc_create_reg (feature, "pcl", regnum++, 1, NULL, 32, "code_ptr");
+  return regnum;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v2-core.xml ./gdb/features/arc/v2-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc/v2-core.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/features/arc/v2-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.arc.core">
+  <reg name="r0"  bitsize="32"/>
+  <reg name="r1"  bitsize="32"/>
+  <reg name="r2"  bitsize="32"/>
+  <reg name="r3"  bitsize="32"/>
+  <reg name="r4"  bitsize="32"/>
+  <reg name="r5"  bitsize="32"/>
+  <reg name="r6"  bitsize="32"/>
+  <reg name="r7"  bitsize="32"/>
+  <reg name="r8"  bitsize="32"/>
+  <reg name="r9"  bitsize="32"/>
+  <reg name="r10" bitsize="32"/>
+  <reg name="r11" bitsize="32"/>
+  <reg name="r12" bitsize="32"/>
+  <reg name="r13" bitsize="32"/>
+  <reg name="r14" bitsize="32"/>
+  <reg name="r15" bitsize="32"/>
+  <reg name="r16" bitsize="32"/>
+  <reg name="r17" bitsize="32"/>
+  <reg name="r18" bitsize="32"/>
+  <reg name="r19" bitsize="32"/>
+  <reg name="r20" bitsize="32"/>
+  <reg name="r21" bitsize="32"/>
+  <reg name="r22" bitsize="32"/>
+  <reg name="r23" bitsize="32"/>
+  <reg name="r24" bitsize="32"/>
+  <reg name="r25" bitsize="32"/>
+
+  <!-- ARC core data pointer registers.  -->
+  <reg name="gp"  bitsize="32" type="data_ptr"/>
+  <reg name="fp"  bitsize="32" type="data_ptr"/>
+  <reg name="sp"  bitsize="32" type="data_ptr"/>
+
+  <!-- Code pointers.  R30 is general purpose, but it used to be ILINK2 in
+  ARCompact, thus its odd position in between of special purpose registers.
+  GCC does't use this register, so it isn't a member of a general group. -->
+  <reg name="r30"   bitsize="32" group=""/>
+  <reg name="blink" bitsize="32" type="code_ptr"/>
+
+  <!-- Extension core registers: r32 - r57.  -->
+  <!-- ACCL/ACCH registers: r58, r59.  -->
+
+  <!-- Loop counter.  -->
+  <reg name="lp_count" bitsize="32" type="uint32"/>
+
+  <!-- r61 is a reserved register address.  -->
+
+  <!-- r62 is a long immediate value, not a real register.  -->
+
+  <!-- 4-byte aligned read-only program counter.  -->
+  <reg name="pcl" bitsize="32" type="code_ptr" group=""/>
+</feature>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc-arcompact.c ./gdb/features/arc-arcompact.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc-arcompact.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arc-arcompact.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,74 +0,0 @@
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: arc-arcompact.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_arc_arcompact;
-static void
-initialize_tdesc_arc_arcompact (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("ARC700"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core.arcompact");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "gp", 26, 1, NULL, 32, "data_ptr");
-  tdesc_create_reg (feature, "fp", 27, 1, NULL, 32, "data_ptr");
-  tdesc_create_reg (feature, "sp", 28, 1, NULL, 32, "data_ptr");
-  tdesc_create_reg (feature, "ilink1", 29, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "ilink2", 30, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "blink", 31, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "lp_count", 32, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pcl", 33, 1, NULL, 32, "code_ptr");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_flags (feature, "status32_type", 4);
-  tdesc_add_flag (type_with_fields, 0, "H");
-  tdesc_add_bitfield (type_with_fields, "E", 1, 2);
-  tdesc_add_bitfield (type_with_fields, "A", 3, 4);
-  tdesc_add_flag (type_with_fields, 5, "AE");
-  tdesc_add_flag (type_with_fields, 6, "DE");
-  tdesc_add_flag (type_with_fields, 7, "U");
-  tdesc_add_flag (type_with_fields, 8, "V");
-  tdesc_add_flag (type_with_fields, 9, "C");
-  tdesc_add_flag (type_with_fields, 10, "N");
-  tdesc_add_flag (type_with_fields, 11, "Z");
-  tdesc_add_flag (type_with_fields, 12, "L");
-  tdesc_add_flag (type_with_fields, 13, "R");
-  tdesc_add_flag (type_with_fields, 14, "SE");
-
-  tdesc_create_reg (feature, "pc", 34, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "status32", 35, 1, NULL, 32, "status32_type");
-
-  tdesc_arc_arcompact = result;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc-arcompact.xml ./gdb/features/arc-arcompact.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc-arcompact.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arc-arcompact.xml	1970-01-01 00:00:00.000000000 +0000
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>arc:ARC700</architecture>
-  <!-- No OSABI for bare metal.  -->
-  <!-- No compatibility for ARC.  -->
-
-  <feature name="org.gnu.gdb.arc.core.arcompact">
-    <reg name="r0"  bitsize="32"/>
-    <reg name="r1"  bitsize="32"/>
-    <reg name="r2"  bitsize="32"/>
-    <reg name="r3"  bitsize="32"/>
-    <reg name="r4"  bitsize="32"/>
-    <reg name="r5"  bitsize="32"/>
-    <reg name="r6"  bitsize="32"/>
-    <reg name="r7"  bitsize="32"/>
-    <reg name="r8"  bitsize="32"/>
-    <reg name="r9"  bitsize="32"/>
-    <reg name="r10" bitsize="32"/>
-    <reg name="r11" bitsize="32"/>
-    <reg name="r12" bitsize="32"/>
-    <reg name="r13" bitsize="32"/>
-    <reg name="r14" bitsize="32"/>
-    <reg name="r15" bitsize="32"/>
-    <reg name="r16" bitsize="32"/>
-    <reg name="r17" bitsize="32"/>
-    <reg name="r18" bitsize="32"/>
-    <reg name="r19" bitsize="32"/>
-    <reg name="r20" bitsize="32"/>
-    <reg name="r21" bitsize="32"/>
-    <reg name="r22" bitsize="32"/>
-    <reg name="r23" bitsize="32"/>
-    <reg name="r24" bitsize="32"/>
-    <reg name="r25" bitsize="32"/>
-
-    <!-- ARC core data pointer registers.  -->
-    <reg name="gp"  bitsize="32" type="data_ptr"/>
-    <reg name="fp"  bitsize="32" type="data_ptr"/>
-    <reg name="sp"  bitsize="32" type="data_ptr"/>
-
-    <!-- Code pointers.  -->
-    <reg name="ilink1" bitsize="32" type="code_ptr"/>
-    <reg name="ilink2" bitsize="32" type="code_ptr"/>
-    <reg name="blink"  bitsize="32" type="code_ptr"/>
-
-    <!-- Here goes extension core registers: r32 - r59 -->
-
-    <!-- Loop counter.  -->
-    <reg name="lp_count" bitsize="32" type="uint32"/>
-
-    <!-- r61 is a reserved register address.  -->
-
-    <!-- r62 is a long immediate value, not a real register.  -->
-
-    <!-- 4-byte aligned read-only program counter.  -->
-    <reg name="pcl" bitsize="32" type="code_ptr" group=""/>
-  </feature>
-
-  <feature name="org.gnu.gdb.arc.aux-minimal">
-    <flags id="status32_type" size="4">
-	<field name="H"   start="0" end="0"/>
-	<field name="E"   start="1" end="2"/>
-	<field name="A"   start="3" end="4"/>
-	<field name="AE"  start="5" end="5"/>
-	<field name="DE"  start="6" end="6"/>
-	<field name="U"   start="7" end="7"/>
-	<field name="V"   start="8" end="8"/>
-	<field name="C"   start="9" end="9"/>
-	<field name="N"   start="10" end="10"/>
-	<field name="Z"   start="11" end="11"/>
-	<field name="L"   start="12" end="12"/>
-	<field name="R"  start="13" end="13"/>
-	<field name="SE"  start="14" end="14"/>
-    </flags>
-
-    <reg name="pc"       bitsize="32" type="code_ptr"/>
-    <reg name="status32" bitsize="32" type="status32_type"/>
-  </feature>
-</target>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc-v2.c ./gdb/features/arc-v2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc-v2.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arc-v2.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,78 +0,0 @@
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: arc-v2.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_arc_v2;
-static void
-initialize_tdesc_arc_v2 (void)
-{
-  struct target_desc *result = allocate_target_description ();
-  set_tdesc_architecture (result, bfd_scan_arch ("ARCv2"));
-
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core.v2");
-  tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "gp", 26, 1, NULL, 32, "data_ptr");
-  tdesc_create_reg (feature, "fp", 27, 1, NULL, 32, "data_ptr");
-  tdesc_create_reg (feature, "sp", 28, 1, NULL, 32, "data_ptr");
-  tdesc_create_reg (feature, "ilink", 29, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "blink", 31, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "lp_count", 32, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "pcl", 33, 1, NULL, 32, "code_ptr");
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
-  tdesc_type_with_fields *type_with_fields;
-  type_with_fields = tdesc_create_flags (feature, "status32_type", 4);
-  tdesc_add_flag (type_with_fields, 0, "H");
-  tdesc_add_bitfield (type_with_fields, "E", 1, 4);
-  tdesc_add_flag (type_with_fields, 5, "AE");
-  tdesc_add_flag (type_with_fields, 6, "DE");
-  tdesc_add_flag (type_with_fields, 7, "U");
-  tdesc_add_flag (type_with_fields, 8, "V");
-  tdesc_add_flag (type_with_fields, 9, "C");
-  tdesc_add_flag (type_with_fields, 10, "N");
-  tdesc_add_flag (type_with_fields, 11, "Z");
-  tdesc_add_flag (type_with_fields, 12, "L");
-  tdesc_add_flag (type_with_fields, 13, "DZ");
-  tdesc_add_flag (type_with_fields, 14, "SC");
-  tdesc_add_flag (type_with_fields, 15, "ES");
-  tdesc_add_bitfield (type_with_fields, "RB", 16, 18);
-  tdesc_add_flag (type_with_fields, 19, "AD");
-  tdesc_add_flag (type_with_fields, 20, "US");
-  tdesc_add_flag (type_with_fields, 31, "IE");
-
-  tdesc_create_reg (feature, "pc", 34, 1, NULL, 32, "code_ptr");
-  tdesc_create_reg (feature, "status32", 35, 1, NULL, 32, "status32_type");
-
-  tdesc_arc_v2 = result;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc-v2.xml ./gdb/features/arc-v2.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arc-v2.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arc-v2.xml	1970-01-01 00:00:00.000000000 +0000
@@ -1,92 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
-  <architecture>arc:ARCv2</architecture>
-  <!-- No OSABI for bare metal.  -->
-  <!-- No compatibility for ARC.  -->
-
-  <feature name="org.gnu.gdb.arc.core.v2">
-    <reg name="r0"  bitsize="32"/>
-    <reg name="r1"  bitsize="32"/>
-    <reg name="r2"  bitsize="32"/>
-    <reg name="r3"  bitsize="32"/>
-    <reg name="r4"  bitsize="32"/>
-    <reg name="r5"  bitsize="32"/>
-    <reg name="r6"  bitsize="32"/>
-    <reg name="r7"  bitsize="32"/>
-    <reg name="r8"  bitsize="32"/>
-    <reg name="r9"  bitsize="32"/>
-    <reg name="r10" bitsize="32"/>
-    <reg name="r11" bitsize="32"/>
-    <reg name="r12" bitsize="32"/>
-    <reg name="r13" bitsize="32"/>
-    <reg name="r14" bitsize="32"/>
-    <reg name="r15" bitsize="32"/>
-    <reg name="r16" bitsize="32"/>
-    <reg name="r17" bitsize="32"/>
-    <reg name="r18" bitsize="32"/>
-    <reg name="r19" bitsize="32"/>
-    <reg name="r20" bitsize="32"/>
-    <reg name="r21" bitsize="32"/>
-    <reg name="r22" bitsize="32"/>
-    <reg name="r23" bitsize="32"/>
-    <reg name="r24" bitsize="32"/>
-    <reg name="r25" bitsize="32"/>
-
-    <!-- ARC core data pointer registers.  -->
-    <reg name="gp"  bitsize="32" type="data_ptr"/>
-    <reg name="fp"  bitsize="32" type="data_ptr"/>
-    <reg name="sp"  bitsize="32" type="data_ptr"/>
-
-    <!-- Code pointers.  R30 is general purpose, but it used to be ILINK2 in
-    ARCompact, thus its odd position in between of special purpose registers.
-    GCC does't use this register, so it isn't a member of a general group. -->
-    <reg name="ilink" bitsize="32" type="code_ptr"/>
-    <reg name="r30"   bitsize="32" group=""/>
-    <reg name="blink" bitsize="32" type="code_ptr"/>
-
-    <!-- Here goes extension core registers: r32 - r57.  -->
-    <!-- Here goes ACCL/ACCH registers, r58, r59.  -->
-
-    <!-- Loop counter.  -->
-    <reg name="lp_count" bitsize="32" type="uint32"/>
-
-    <!-- r61 is a reserved register address.  -->
-
-    <!-- r62 is a long immediate value, not a real register.  -->
-
-    <!-- 4-byte aligned read-only program counter.  -->
-    <reg name="pcl" bitsize="32" type="code_ptr" group=""/>
-  </feature>
-
-  <feature name="org.gnu.gdb.arc.aux-minimal">
-    <flags id="status32_type" size="4">
-	<field name="H"   start="0" end="0"/>
-	<field name="E"   start="1" end="4"/>
-	<field name="AE"  start="5" end="5"/>
-	<field name="DE"  start="6" end="6"/>
-	<field name="U"   start="7" end="7"/>
-	<field name="V"   start="8" end="8"/>
-	<field name="C"   start="9" end="9"/>
-	<field name="N"   start="10" end="10"/>
-	<field name="Z"   start="11" end="11"/>
-	<field name="L"   start="12" end="12"/>
-	<field name="DZ"  start="13" end="13"/>
-	<field name="SC"  start="14" end="14"/>
-	<field name="ES"  start="15" end="15"/>
-	<field name="RB"  start="16" end="18"/>
-	<field name="AD"  start="19" end="19"/>
-	<field name="US"  start="20" end="20"/>
-	<field name="IE"  start="31" end="31"/>
-    </flags>
-
-    <reg name="pc"       bitsize="32" type="code_ptr"/>
-    <reg name="status32" bitsize="32" type="status32_type"/>
-  </feature>
-</target>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-core.xml ./gdb/features/arm/arm-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arm/arm-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-fpa.xml ./gdb/features/arm/arm-fpa.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-fpa.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arm/arm-fpa.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-m-profile-with-fpa.xml ./gdb/features/arm/arm-m-profile-with-fpa.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-m-profile-with-fpa.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arm/arm-m-profile-with-fpa.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2019-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-m-profile.xml ./gdb/features/arm/arm-m-profile.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-m-profile.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arm/arm-m-profile.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-vfpv2.xml ./gdb/features/arm/arm-vfpv2.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-vfpv2.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arm/arm-vfpv2.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-vfpv3.xml ./gdb/features/arm/arm-vfpv3.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/arm-vfpv3.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arm/arm-vfpv3.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/xscale-iwmmxt.xml ./gdb/features/arm/xscale-iwmmxt.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/arm/xscale-iwmmxt.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/arm/xscale-iwmmxt.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/btrace-conf.dtd ./gdb/features/btrace-conf.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/btrace-conf.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/btrace-conf.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/btrace.dtd ./gdb/features/btrace.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/btrace.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/btrace.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/feature_to_c.sh ./gdb/features/feature_to_c.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/feature_to_c.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/feature_to_c.sh	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
 
 # Convert text files to compilable C arrays.
 #
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/gdb-target.dtd ./gdb/features/gdb-target.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/gdb-target.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/gdb-target.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-avx512.xml ./gdb/features/i386/32bit-avx512.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-avx512.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/32bit-avx512.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2014-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-avx.xml ./gdb/features/i386/32bit-avx.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-avx.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/32bit-avx.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-core.xml ./gdb/features/i386/32bit-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/32bit-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-linux.xml ./gdb/features/i386/32bit-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/32bit-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-mpx.xml ./gdb/features/i386/32bit-mpx.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-mpx.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/32bit-mpx.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-pkeys.xml ./gdb/features/i386/32bit-pkeys.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-pkeys.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/32bit-pkeys.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2016-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-segments.xml ./gdb/features/i386/32bit-segments.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-segments.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/32bit-segments.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2016-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-sse.xml ./gdb/features/i386/32bit-sse.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/32bit-sse.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/32bit-sse.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-avx512.c ./gdb/features/i386/64bit-avx512.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-avx512.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/64bit-avx512.c	2021-05-21 01:57:24.000000000 +0000
@@ -10,6 +10,9 @@ create_feature_i386_64bit_avx512 (struct
 
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512");
   tdesc_type *element_type;
+  element_type = tdesc_named_type (feature, "bfloat16");
+  tdesc_create_vector (feature, "v8bf16", element_type, 8);
+
   element_type = tdesc_named_type (feature, "ieee_single");
   tdesc_create_vector (feature, "v4f", element_type, 4);
 
@@ -31,6 +34,8 @@ create_feature_i386_64bit_avx512 (struct
   tdesc_type_with_fields *type_with_fields;
   type_with_fields = tdesc_create_union (feature, "vec128");
   tdesc_type *field_type;
+  field_type = tdesc_named_type (feature, "v8bf16");
+  tdesc_add_field (type_with_fields, "v8_bfloat16", field_type);
   field_type = tdesc_named_type (feature, "v4f");
   tdesc_add_field (type_with_fields, "v4_float", field_type);
   field_type = tdesc_named_type (feature, "v2d");
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-avx512.xml ./gdb/features/i386/64bit-avx512.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-avx512.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/64bit-avx512.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2014-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
@@ -7,13 +7,15 @@
 
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.i386.avx512">
-<vector id="v4f" type="ieee_single" count="4"/>
+  <vector id="v8bf16" type="bfloat16" count="8"/>
+  <vector id="v4f" type="ieee_single" count="4"/>
   <vector id="v2d" type="ieee_double" count="2"/>
   <vector id="v16i8" type="int8" count="16"/>
   <vector id="v8i16" type="int16" count="8"/>
   <vector id="v4i32" type="int32" count="4"/>
   <vector id="v2i64" type="int64" count="2"/>
   <union id="vec128">
+    <field name="v8_bfloat16" type="v8bf16"/>
     <field name="v4_float" type="v4f"/>
     <field name="v2_double" type="v2d"/>
     <field name="v16_int8" type="v16i8"/>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-avx.xml ./gdb/features/i386/64bit-avx.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-avx.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/64bit-avx.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-core.xml ./gdb/features/i386/64bit-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/64bit-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-linux.xml ./gdb/features/i386/64bit-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/64bit-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-mpx.xml ./gdb/features/i386/64bit-mpx.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-mpx.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/64bit-mpx.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-pkeys.xml ./gdb/features/i386/64bit-pkeys.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-pkeys.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/64bit-pkeys.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2016-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-segments.xml ./gdb/features/i386/64bit-segments.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-segments.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/64bit-segments.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2016-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-sse.c ./gdb/features/i386/64bit-sse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-sse.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/64bit-sse.c	2021-05-21 01:57:24.000000000 +0000
@@ -10,6 +10,9 @@ create_feature_i386_64bit_sse (struct ta
 
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse");
   tdesc_type *element_type;
+  element_type = tdesc_named_type (feature, "bfloat16");
+  tdesc_create_vector (feature, "v8bf16", element_type, 8);
+
   element_type = tdesc_named_type (feature, "ieee_single");
   tdesc_create_vector (feature, "v4f", element_type, 4);
 
@@ -31,6 +34,8 @@ create_feature_i386_64bit_sse (struct ta
   tdesc_type_with_fields *type_with_fields;
   type_with_fields = tdesc_create_union (feature, "vec128");
   tdesc_type *field_type;
+  field_type = tdesc_named_type (feature, "v8bf16");
+  tdesc_add_field (type_with_fields, "v8_bfloat16", field_type);
   field_type = tdesc_named_type (feature, "v4f");
   tdesc_add_field (type_with_fields, "v4_float", field_type);
   field_type = tdesc_named_type (feature, "v2d");
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-sse.xml ./gdb/features/i386/64bit-sse.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/64bit-sse.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/64bit-sse.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
@@ -7,6 +7,7 @@
 
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.i386.sse">
+  <vector id="v8bf16" type="bfloat16" count="8"/>
   <vector id="v4f" type="ieee_single" count="4"/>
   <vector id="v2d" type="ieee_double" count="2"/>
   <vector id="v16i8" type="int8" count="16"/>
@@ -14,6 +15,7 @@
   <vector id="v4i32" type="int32" count="4"/>
   <vector id="v2i64" type="int64" count="2"/>
   <union id="vec128">
+    <field name="v8_bfloat16" type="v8bf16"/>
     <field name="v4_float" type="v4f"/>
     <field name="v2_double" type="v2d"/>
     <field name="v16_int8" type="v16i8"/>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/x32-core.xml ./gdb/features/i386/x32-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/i386/x32-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/i386/x32-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2012-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/library-list-aix.dtd ./gdb/features/library-list-aix.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/library-list-aix.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/library-list-aix.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/library-list.dtd ./gdb/features/library-list.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/library-list.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/library-list.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/library-list-svr4.dtd ./gdb/features/library-list-svr4.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/library-list-svr4.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/library-list-svr4.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2011-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/Makefile ./gdb/features/Makefile
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/Makefile	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/Makefile	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
 # This file is part of GDB.
 
@@ -44,9 +44,7 @@
 #   make GDB=/path/to/gdb XMLTOC="xml files" FEATURE_XMLFILES="xml files" cfiles
 
 # List of .dat files to create in ../regformats/
-WHICH = arm/arm-with-iwmmxt arm/arm-with-vfpv2 arm/arm-with-vfpv3 \
-	arm/arm-with-neon \
-	mips-linux mips-dsp-linux \
+WHICH = mips-linux mips-dsp-linux \
 	microblaze-with-stack-protect \
 	mips64-linux mips64-dsp-linux \
 	nios2-linux \
@@ -108,8 +106,6 @@ OUTPUTS = $(patsubst %,$(outdir)/%.dat,$
 # --enable-targets=all GDB.  You can override this by passing XMLTOC
 # to make on the command line.
 XMLTOC = \
-	arc-v2.xml \
-	arc-arcompact.xml \
 	microblaze-with-stack-protect.xml \
 	microblaze.xml \
 	mips-dsp-linux.xml \
@@ -157,7 +153,6 @@ XMLTOC = \
 	rs6000/powerpc-vsx64.xml \
 	rs6000/powerpc-vsx64l.xml \
 	rs6000/rs6000.xml \
-	rx.xml \
 	s390-linux32.xml \
 	s390-linux32v1.xml \
 	s390-linux32v2.xml \
@@ -206,6 +201,10 @@ all: $(OUTPUTS)
 FEATURE_XMLFILES = aarch64-core.xml \
 	aarch64-fpu.xml \
 	aarch64-pauth.xml \
+	arc/v1-core.xml \
+	arc/v1-aux.xml \
+	arc/v2-core.xml \
+	arc/v2-aux.xml \
 	arm/arm-core.xml \
 	arm/arm-fpa.xml \
 	arm/arm-m-profile.xml \
@@ -230,10 +229,8 @@ FEATURE_XMLFILES = aarch64-core.xml \
 	i386/64bit-sse.xml \
 	i386/x32-core.xml \
 	riscv/32bit-cpu.xml \
-	riscv/32bit-csr.xml \
 	riscv/32bit-fpu.xml \
 	riscv/64bit-cpu.xml \
-	riscv/64bit-csr.xml \
 	riscv/64bit-fpu.xml \
 	rx.xml \
 	tic6x-c6xp.xml \
@@ -266,10 +263,6 @@ cfiles: $(TDESC_CFILES) $(FEATURE_CFILES
 	echo "</target>" >> $@.tmp
 	sh ../../move-if-change $@.tmp $@
 
-# Regenerate RISC-V CSR feature lists.
-riscv/32bit-csr.xml riscv/64bit-csr.xml: ../../include/opcode/riscv-opc.h
-	./riscv/rebuild-csr-xml.sh ../../include/opcode/riscv-opc.h ./riscv
-
 # 'all' doesn't build the C files, so don't delete them in 'clean'
 # either.
 clean-cfiles:
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/microblaze-core.xml ./gdb/features/microblaze-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/microblaze-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/microblaze-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2014-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/microblaze-stack-protect.xml ./gdb/features/microblaze-stack-protect.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/microblaze-stack-protect.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/microblaze-stack-protect.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2014-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/microblaze-with-stack-protect.xml ./gdb/features/microblaze-with-stack-protect.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/microblaze-with-stack-protect.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/microblaze-with-stack-protect.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2014-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/microblaze.xml ./gdb/features/microblaze.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/microblaze.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/microblaze.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2014-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-cp0.xml ./gdb/features/mips64-cp0.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-cp0.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips64-cp0.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-cpu.xml ./gdb/features/mips64-cpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-cpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips64-cpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-dsp-linux.xml ./gdb/features/mips64-dsp-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-dsp-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips64-dsp-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2012-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-dsp.xml ./gdb/features/mips64-dsp.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-dsp.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips64-dsp.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2012-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-fpu.xml ./gdb/features/mips64-fpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-fpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips64-fpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-linux.xml ./gdb/features/mips64-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips64-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips64-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-cp0.xml ./gdb/features/mips-cp0.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-cp0.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips-cp0.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-cpu.xml ./gdb/features/mips-cpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-cpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips-cpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-dsp-linux.xml ./gdb/features/mips-dsp-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-dsp-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips-dsp-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2012-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-dsp.xml ./gdb/features/mips-dsp.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-dsp.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips-dsp.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2012-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-fpu.xml ./gdb/features/mips-fpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-fpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips-fpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-linux.xml ./gdb/features/mips-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/mips-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/mips-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nds32-core.xml ./gdb/features/nds32-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nds32-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/nds32-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nds32-fpu.xml ./gdb/features/nds32-fpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nds32-fpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/nds32-fpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nds32-system.xml ./gdb/features/nds32-system.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nds32-system.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/nds32-system.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nds32.xml ./gdb/features/nds32.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nds32.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/nds32.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nios2-cpu.xml ./gdb/features/nios2-cpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nios2-cpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/nios2-cpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2012-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nios2-linux.xml ./gdb/features/nios2-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nios2-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/nios2-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2012-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nios2.xml ./gdb/features/nios2.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/nios2.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/nios2.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/or1k-core.xml ./gdb/features/or1k-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/or1k-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/or1k-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2017-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/or1k.xml ./gdb/features/or1k.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/or1k.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/or1k.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2016-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/osdata.dtd ./gdb/features/osdata.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/osdata.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/osdata.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/32bit-cpu.xml ./gdb/features/riscv/32bit-cpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/32bit-cpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/riscv/32bit-cpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/32bit-csr.c ./gdb/features/riscv/32bit-csr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/32bit-csr.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/riscv/32bit-csr.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,253 +0,0 @@
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: 32bit-csr.xml */
-
-#include "gdbsupport/tdesc.h"
-
-static int
-create_feature_riscv_32bit_csr (struct target_desc *result, long regnum)
-{
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.riscv.csr");
-  tdesc_create_reg (feature, "ustatus", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "uie", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "utvec", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "uscratch", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "uepc", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "ucause", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "utval", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "uip", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "fflags", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "frm", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "fcsr", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "cycle", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "time", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "instret", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter4", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter5", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter6", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter7", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter8", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter9", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter10", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter11", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter12", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter13", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter14", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter15", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter16", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter17", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter18", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter19", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter20", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter21", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter22", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter23", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter24", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter25", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter26", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter27", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter28", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter29", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter30", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter31", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "cycleh", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "timeh", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "instreth", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter3h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter4h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter5h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter6h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter7h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter8h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter9h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter10h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter11h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter12h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter13h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter14h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter15h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter16h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter17h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter18h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter19h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter20h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter21h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter22h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter23h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter24h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter25h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter26h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter27h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter28h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter29h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter30h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hpmcounter31h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sstatus", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sedeleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sideleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sie", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "stvec", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "scounteren", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sscratch", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sepc", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "scause", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "stval", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "sip", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "satp", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mvendorid", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "marchid", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mimpid", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhartid", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mstatus", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "misa", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "medeleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mideleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mie", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mtvec", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mcounteren", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mscratch", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mepc", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mcause", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mtval", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mip", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpcfg0", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpcfg1", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpcfg2", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpcfg3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr0", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr1", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr2", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr4", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr5", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr6", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr7", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr8", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr9", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr10", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr11", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr12", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr13", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr14", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pmpaddr15", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mcycle", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "minstret", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter4", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter5", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter6", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter7", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter8", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter9", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter10", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter11", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter12", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter13", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter14", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter15", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter16", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter17", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter18", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter19", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter20", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter21", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter22", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter23", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter24", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter25", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter26", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter27", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter28", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter29", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter30", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter31", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mcycleh", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "minstreth", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter3h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter4h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter5h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter6h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter7h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter8h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter9h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter10h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter11h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter12h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter13h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter14h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter15h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter16h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter17h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter18h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter19h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter20h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter21h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter22h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter23h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter24h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter25h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter26h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter27h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter28h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter29h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter30h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmcounter31h", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent4", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent5", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent6", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent7", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent8", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent9", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent10", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent11", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent12", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent13", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent14", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent15", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent16", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent17", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent18", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent19", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent20", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent21", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent22", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent23", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent24", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent25", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent26", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent27", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent28", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent29", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent30", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhpmevent31", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "tselect", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "tdata1", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "tdata2", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "tdata3", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "dcsr", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "dpc", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "dscratch", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hstatus", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hedeleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hideleg", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hie", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "htvec", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hscratch", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hepc", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hcause", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hbadaddr", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "hip", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mbase", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mbound", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mibase", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mibound", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mdbase", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mdbound", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mucounteren", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mscounteren", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "mhcounteren", regnum++, 1, NULL, 32, "int");
-  return regnum;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/32bit-csr.xml ./gdb/features/riscv/32bit-csr.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/32bit-csr.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/riscv/32bit-csr.xml	1970-01-01 00:00:00.000000000 +0000
@@ -1,250 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE feature SYSTEM "gdb-target.dtd">
-<feature name="org.gnu.gdb.riscv.csr">
-  <reg name="ustatus" bitsize="32"/>
-  <reg name="uie" bitsize="32"/>
-  <reg name="utvec" bitsize="32"/>
-  <reg name="uscratch" bitsize="32"/>
-  <reg name="uepc" bitsize="32"/>
-  <reg name="ucause" bitsize="32"/>
-  <reg name="utval" bitsize="32"/>
-  <reg name="uip" bitsize="32"/>
-  <reg name="fflags" bitsize="32"/>
-  <reg name="frm" bitsize="32"/>
-  <reg name="fcsr" bitsize="32"/>
-  <reg name="cycle" bitsize="32"/>
-  <reg name="time" bitsize="32"/>
-  <reg name="instret" bitsize="32"/>
-  <reg name="hpmcounter3" bitsize="32"/>
-  <reg name="hpmcounter4" bitsize="32"/>
-  <reg name="hpmcounter5" bitsize="32"/>
-  <reg name="hpmcounter6" bitsize="32"/>
-  <reg name="hpmcounter7" bitsize="32"/>
-  <reg name="hpmcounter8" bitsize="32"/>
-  <reg name="hpmcounter9" bitsize="32"/>
-  <reg name="hpmcounter10" bitsize="32"/>
-  <reg name="hpmcounter11" bitsize="32"/>
-  <reg name="hpmcounter12" bitsize="32"/>
-  <reg name="hpmcounter13" bitsize="32"/>
-  <reg name="hpmcounter14" bitsize="32"/>
-  <reg name="hpmcounter15" bitsize="32"/>
-  <reg name="hpmcounter16" bitsize="32"/>
-  <reg name="hpmcounter17" bitsize="32"/>
-  <reg name="hpmcounter18" bitsize="32"/>
-  <reg name="hpmcounter19" bitsize="32"/>
-  <reg name="hpmcounter20" bitsize="32"/>
-  <reg name="hpmcounter21" bitsize="32"/>
-  <reg name="hpmcounter22" bitsize="32"/>
-  <reg name="hpmcounter23" bitsize="32"/>
-  <reg name="hpmcounter24" bitsize="32"/>
-  <reg name="hpmcounter25" bitsize="32"/>
-  <reg name="hpmcounter26" bitsize="32"/>
-  <reg name="hpmcounter27" bitsize="32"/>
-  <reg name="hpmcounter28" bitsize="32"/>
-  <reg name="hpmcounter29" bitsize="32"/>
-  <reg name="hpmcounter30" bitsize="32"/>
-  <reg name="hpmcounter31" bitsize="32"/>
-  <reg name="cycleh" bitsize="32"/>
-  <reg name="timeh" bitsize="32"/>
-  <reg name="instreth" bitsize="32"/>
-  <reg name="hpmcounter3h" bitsize="32"/>
-  <reg name="hpmcounter4h" bitsize="32"/>
-  <reg name="hpmcounter5h" bitsize="32"/>
-  <reg name="hpmcounter6h" bitsize="32"/>
-  <reg name="hpmcounter7h" bitsize="32"/>
-  <reg name="hpmcounter8h" bitsize="32"/>
-  <reg name="hpmcounter9h" bitsize="32"/>
-  <reg name="hpmcounter10h" bitsize="32"/>
-  <reg name="hpmcounter11h" bitsize="32"/>
-  <reg name="hpmcounter12h" bitsize="32"/>
-  <reg name="hpmcounter13h" bitsize="32"/>
-  <reg name="hpmcounter14h" bitsize="32"/>
-  <reg name="hpmcounter15h" bitsize="32"/>
-  <reg name="hpmcounter16h" bitsize="32"/>
-  <reg name="hpmcounter17h" bitsize="32"/>
-  <reg name="hpmcounter18h" bitsize="32"/>
-  <reg name="hpmcounter19h" bitsize="32"/>
-  <reg name="hpmcounter20h" bitsize="32"/>
-  <reg name="hpmcounter21h" bitsize="32"/>
-  <reg name="hpmcounter22h" bitsize="32"/>
-  <reg name="hpmcounter23h" bitsize="32"/>
-  <reg name="hpmcounter24h" bitsize="32"/>
-  <reg name="hpmcounter25h" bitsize="32"/>
-  <reg name="hpmcounter26h" bitsize="32"/>
-  <reg name="hpmcounter27h" bitsize="32"/>
-  <reg name="hpmcounter28h" bitsize="32"/>
-  <reg name="hpmcounter29h" bitsize="32"/>
-  <reg name="hpmcounter30h" bitsize="32"/>
-  <reg name="hpmcounter31h" bitsize="32"/>
-  <reg name="sstatus" bitsize="32"/>
-  <reg name="sedeleg" bitsize="32"/>
-  <reg name="sideleg" bitsize="32"/>
-  <reg name="sie" bitsize="32"/>
-  <reg name="stvec" bitsize="32"/>
-  <reg name="scounteren" bitsize="32"/>
-  <reg name="sscratch" bitsize="32"/>
-  <reg name="sepc" bitsize="32"/>
-  <reg name="scause" bitsize="32"/>
-  <reg name="stval" bitsize="32"/>
-  <reg name="sip" bitsize="32"/>
-  <reg name="satp" bitsize="32"/>
-  <reg name="mvendorid" bitsize="32"/>
-  <reg name="marchid" bitsize="32"/>
-  <reg name="mimpid" bitsize="32"/>
-  <reg name="mhartid" bitsize="32"/>
-  <reg name="mstatus" bitsize="32"/>
-  <reg name="misa" bitsize="32"/>
-  <reg name="medeleg" bitsize="32"/>
-  <reg name="mideleg" bitsize="32"/>
-  <reg name="mie" bitsize="32"/>
-  <reg name="mtvec" bitsize="32"/>
-  <reg name="mcounteren" bitsize="32"/>
-  <reg name="mscratch" bitsize="32"/>
-  <reg name="mepc" bitsize="32"/>
-  <reg name="mcause" bitsize="32"/>
-  <reg name="mtval" bitsize="32"/>
-  <reg name="mip" bitsize="32"/>
-  <reg name="pmpcfg0" bitsize="32"/>
-  <reg name="pmpcfg1" bitsize="32"/>
-  <reg name="pmpcfg2" bitsize="32"/>
-  <reg name="pmpcfg3" bitsize="32"/>
-  <reg name="pmpaddr0" bitsize="32"/>
-  <reg name="pmpaddr1" bitsize="32"/>
-  <reg name="pmpaddr2" bitsize="32"/>
-  <reg name="pmpaddr3" bitsize="32"/>
-  <reg name="pmpaddr4" bitsize="32"/>
-  <reg name="pmpaddr5" bitsize="32"/>
-  <reg name="pmpaddr6" bitsize="32"/>
-  <reg name="pmpaddr7" bitsize="32"/>
-  <reg name="pmpaddr8" bitsize="32"/>
-  <reg name="pmpaddr9" bitsize="32"/>
-  <reg name="pmpaddr10" bitsize="32"/>
-  <reg name="pmpaddr11" bitsize="32"/>
-  <reg name="pmpaddr12" bitsize="32"/>
-  <reg name="pmpaddr13" bitsize="32"/>
-  <reg name="pmpaddr14" bitsize="32"/>
-  <reg name="pmpaddr15" bitsize="32"/>
-  <reg name="mcycle" bitsize="32"/>
-  <reg name="minstret" bitsize="32"/>
-  <reg name="mhpmcounter3" bitsize="32"/>
-  <reg name="mhpmcounter4" bitsize="32"/>
-  <reg name="mhpmcounter5" bitsize="32"/>
-  <reg name="mhpmcounter6" bitsize="32"/>
-  <reg name="mhpmcounter7" bitsize="32"/>
-  <reg name="mhpmcounter8" bitsize="32"/>
-  <reg name="mhpmcounter9" bitsize="32"/>
-  <reg name="mhpmcounter10" bitsize="32"/>
-  <reg name="mhpmcounter11" bitsize="32"/>
-  <reg name="mhpmcounter12" bitsize="32"/>
-  <reg name="mhpmcounter13" bitsize="32"/>
-  <reg name="mhpmcounter14" bitsize="32"/>
-  <reg name="mhpmcounter15" bitsize="32"/>
-  <reg name="mhpmcounter16" bitsize="32"/>
-  <reg name="mhpmcounter17" bitsize="32"/>
-  <reg name="mhpmcounter18" bitsize="32"/>
-  <reg name="mhpmcounter19" bitsize="32"/>
-  <reg name="mhpmcounter20" bitsize="32"/>
-  <reg name="mhpmcounter21" bitsize="32"/>
-  <reg name="mhpmcounter22" bitsize="32"/>
-  <reg name="mhpmcounter23" bitsize="32"/>
-  <reg name="mhpmcounter24" bitsize="32"/>
-  <reg name="mhpmcounter25" bitsize="32"/>
-  <reg name="mhpmcounter26" bitsize="32"/>
-  <reg name="mhpmcounter27" bitsize="32"/>
-  <reg name="mhpmcounter28" bitsize="32"/>
-  <reg name="mhpmcounter29" bitsize="32"/>
-  <reg name="mhpmcounter30" bitsize="32"/>
-  <reg name="mhpmcounter31" bitsize="32"/>
-  <reg name="mcycleh" bitsize="32"/>
-  <reg name="minstreth" bitsize="32"/>
-  <reg name="mhpmcounter3h" bitsize="32"/>
-  <reg name="mhpmcounter4h" bitsize="32"/>
-  <reg name="mhpmcounter5h" bitsize="32"/>
-  <reg name="mhpmcounter6h" bitsize="32"/>
-  <reg name="mhpmcounter7h" bitsize="32"/>
-  <reg name="mhpmcounter8h" bitsize="32"/>
-  <reg name="mhpmcounter9h" bitsize="32"/>
-  <reg name="mhpmcounter10h" bitsize="32"/>
-  <reg name="mhpmcounter11h" bitsize="32"/>
-  <reg name="mhpmcounter12h" bitsize="32"/>
-  <reg name="mhpmcounter13h" bitsize="32"/>
-  <reg name="mhpmcounter14h" bitsize="32"/>
-  <reg name="mhpmcounter15h" bitsize="32"/>
-  <reg name="mhpmcounter16h" bitsize="32"/>
-  <reg name="mhpmcounter17h" bitsize="32"/>
-  <reg name="mhpmcounter18h" bitsize="32"/>
-  <reg name="mhpmcounter19h" bitsize="32"/>
-  <reg name="mhpmcounter20h" bitsize="32"/>
-  <reg name="mhpmcounter21h" bitsize="32"/>
-  <reg name="mhpmcounter22h" bitsize="32"/>
-  <reg name="mhpmcounter23h" bitsize="32"/>
-  <reg name="mhpmcounter24h" bitsize="32"/>
-  <reg name="mhpmcounter25h" bitsize="32"/>
-  <reg name="mhpmcounter26h" bitsize="32"/>
-  <reg name="mhpmcounter27h" bitsize="32"/>
-  <reg name="mhpmcounter28h" bitsize="32"/>
-  <reg name="mhpmcounter29h" bitsize="32"/>
-  <reg name="mhpmcounter30h" bitsize="32"/>
-  <reg name="mhpmcounter31h" bitsize="32"/>
-  <reg name="mhpmevent3" bitsize="32"/>
-  <reg name="mhpmevent4" bitsize="32"/>
-  <reg name="mhpmevent5" bitsize="32"/>
-  <reg name="mhpmevent6" bitsize="32"/>
-  <reg name="mhpmevent7" bitsize="32"/>
-  <reg name="mhpmevent8" bitsize="32"/>
-  <reg name="mhpmevent9" bitsize="32"/>
-  <reg name="mhpmevent10" bitsize="32"/>
-  <reg name="mhpmevent11" bitsize="32"/>
-  <reg name="mhpmevent12" bitsize="32"/>
-  <reg name="mhpmevent13" bitsize="32"/>
-  <reg name="mhpmevent14" bitsize="32"/>
-  <reg name="mhpmevent15" bitsize="32"/>
-  <reg name="mhpmevent16" bitsize="32"/>
-  <reg name="mhpmevent17" bitsize="32"/>
-  <reg name="mhpmevent18" bitsize="32"/>
-  <reg name="mhpmevent19" bitsize="32"/>
-  <reg name="mhpmevent20" bitsize="32"/>
-  <reg name="mhpmevent21" bitsize="32"/>
-  <reg name="mhpmevent22" bitsize="32"/>
-  <reg name="mhpmevent23" bitsize="32"/>
-  <reg name="mhpmevent24" bitsize="32"/>
-  <reg name="mhpmevent25" bitsize="32"/>
-  <reg name="mhpmevent26" bitsize="32"/>
-  <reg name="mhpmevent27" bitsize="32"/>
-  <reg name="mhpmevent28" bitsize="32"/>
-  <reg name="mhpmevent29" bitsize="32"/>
-  <reg name="mhpmevent30" bitsize="32"/>
-  <reg name="mhpmevent31" bitsize="32"/>
-  <reg name="tselect" bitsize="32"/>
-  <reg name="tdata1" bitsize="32"/>
-  <reg name="tdata2" bitsize="32"/>
-  <reg name="tdata3" bitsize="32"/>
-  <reg name="dcsr" bitsize="32"/>
-  <reg name="dpc" bitsize="32"/>
-  <reg name="dscratch" bitsize="32"/>
-  <reg name="hstatus" bitsize="32"/>
-  <reg name="hedeleg" bitsize="32"/>
-  <reg name="hideleg" bitsize="32"/>
-  <reg name="hie" bitsize="32"/>
-  <reg name="htvec" bitsize="32"/>
-  <reg name="hscratch" bitsize="32"/>
-  <reg name="hepc" bitsize="32"/>
-  <reg name="hcause" bitsize="32"/>
-  <reg name="hbadaddr" bitsize="32"/>
-  <reg name="hip" bitsize="32"/>
-  <reg name="mbase" bitsize="32"/>
-  <reg name="mbound" bitsize="32"/>
-  <reg name="mibase" bitsize="32"/>
-  <reg name="mibound" bitsize="32"/>
-  <reg name="mdbase" bitsize="32"/>
-  <reg name="mdbound" bitsize="32"/>
-  <reg name="mucounteren" bitsize="32"/>
-  <reg name="mscounteren" bitsize="32"/>
-  <reg name="mhcounteren" bitsize="32"/>
-</feature>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/32bit-fpu.xml ./gdb/features/riscv/32bit-fpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/32bit-fpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/riscv/32bit-fpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/64bit-cpu.xml ./gdb/features/riscv/64bit-cpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/64bit-cpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/riscv/64bit-cpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/64bit-csr.c ./gdb/features/riscv/64bit-csr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/64bit-csr.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/riscv/64bit-csr.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,253 +0,0 @@
-/* THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi:set ro:
-  Original: 64bit-csr.xml */
-
-#include "gdbsupport/tdesc.h"
-
-static int
-create_feature_riscv_64bit_csr (struct target_desc *result, long regnum)
-{
-  struct tdesc_feature *feature;
-
-  feature = tdesc_create_feature (result, "org.gnu.gdb.riscv.csr");
-  tdesc_create_reg (feature, "ustatus", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "uie", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "utvec", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "uscratch", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "uepc", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "ucause", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "utval", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "uip", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "fflags", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "frm", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "fcsr", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "cycle", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "time", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "instret", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter4", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter5", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter6", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter7", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter8", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter9", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter10", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter11", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter12", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter13", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter14", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter15", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter16", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter17", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter18", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter19", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter20", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter21", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter22", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter23", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter24", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter25", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter26", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter27", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter28", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter29", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter30", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter31", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "cycleh", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "timeh", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "instreth", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter3h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter4h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter5h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter6h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter7h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter8h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter9h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter10h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter11h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter12h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter13h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter14h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter15h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter16h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter17h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter18h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter19h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter20h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter21h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter22h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter23h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter24h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter25h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter26h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter27h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter28h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter29h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter30h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hpmcounter31h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sstatus", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sedeleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sideleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sie", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "stvec", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "scounteren", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sscratch", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sepc", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "scause", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "stval", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sip", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "satp", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mvendorid", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "marchid", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mimpid", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhartid", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mstatus", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "misa", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "medeleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mideleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mie", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mtvec", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mcounteren", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mscratch", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mepc", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mcause", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mtval", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mip", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpcfg0", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpcfg1", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpcfg2", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpcfg3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr0", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr1", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr2", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr4", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr5", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr6", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr7", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr8", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr9", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr10", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr11", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr12", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr13", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr14", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "pmpaddr15", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mcycle", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "minstret", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter4", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter5", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter6", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter7", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter8", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter9", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter10", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter11", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter12", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter13", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter14", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter15", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter16", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter17", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter18", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter19", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter20", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter21", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter22", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter23", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter24", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter25", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter26", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter27", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter28", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter29", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter30", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter31", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mcycleh", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "minstreth", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter3h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter4h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter5h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter6h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter7h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter8h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter9h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter10h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter11h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter12h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter13h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter14h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter15h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter16h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter17h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter18h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter19h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter20h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter21h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter22h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter23h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter24h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter25h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter26h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter27h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter28h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter29h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter30h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmcounter31h", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent4", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent5", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent6", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent7", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent8", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent9", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent10", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent11", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent12", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent13", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent14", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent15", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent16", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent17", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent18", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent19", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent20", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent21", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent22", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent23", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent24", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent25", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent26", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent27", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent28", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent29", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent30", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhpmevent31", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "tselect", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "tdata1", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "tdata2", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "tdata3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "dcsr", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "dpc", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "dscratch", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hstatus", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hedeleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hideleg", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hie", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "htvec", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hscratch", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hepc", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hcause", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hbadaddr", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "hip", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mbase", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mbound", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mibase", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mibound", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mdbase", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mdbound", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mucounteren", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mscounteren", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "mhcounteren", regnum++, 1, NULL, 64, "int");
-  return regnum;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/64bit-csr.xml ./gdb/features/riscv/64bit-csr.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/64bit-csr.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/riscv/64bit-csr.xml	1970-01-01 00:00:00.000000000 +0000
@@ -1,250 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE feature SYSTEM "gdb-target.dtd">
-<feature name="org.gnu.gdb.riscv.csr">
-  <reg name="ustatus" bitsize="64"/>
-  <reg name="uie" bitsize="64"/>
-  <reg name="utvec" bitsize="64"/>
-  <reg name="uscratch" bitsize="64"/>
-  <reg name="uepc" bitsize="64"/>
-  <reg name="ucause" bitsize="64"/>
-  <reg name="utval" bitsize="64"/>
-  <reg name="uip" bitsize="64"/>
-  <reg name="fflags" bitsize="64"/>
-  <reg name="frm" bitsize="64"/>
-  <reg name="fcsr" bitsize="64"/>
-  <reg name="cycle" bitsize="64"/>
-  <reg name="time" bitsize="64"/>
-  <reg name="instret" bitsize="64"/>
-  <reg name="hpmcounter3" bitsize="64"/>
-  <reg name="hpmcounter4" bitsize="64"/>
-  <reg name="hpmcounter5" bitsize="64"/>
-  <reg name="hpmcounter6" bitsize="64"/>
-  <reg name="hpmcounter7" bitsize="64"/>
-  <reg name="hpmcounter8" bitsize="64"/>
-  <reg name="hpmcounter9" bitsize="64"/>
-  <reg name="hpmcounter10" bitsize="64"/>
-  <reg name="hpmcounter11" bitsize="64"/>
-  <reg name="hpmcounter12" bitsize="64"/>
-  <reg name="hpmcounter13" bitsize="64"/>
-  <reg name="hpmcounter14" bitsize="64"/>
-  <reg name="hpmcounter15" bitsize="64"/>
-  <reg name="hpmcounter16" bitsize="64"/>
-  <reg name="hpmcounter17" bitsize="64"/>
-  <reg name="hpmcounter18" bitsize="64"/>
-  <reg name="hpmcounter19" bitsize="64"/>
-  <reg name="hpmcounter20" bitsize="64"/>
-  <reg name="hpmcounter21" bitsize="64"/>
-  <reg name="hpmcounter22" bitsize="64"/>
-  <reg name="hpmcounter23" bitsize="64"/>
-  <reg name="hpmcounter24" bitsize="64"/>
-  <reg name="hpmcounter25" bitsize="64"/>
-  <reg name="hpmcounter26" bitsize="64"/>
-  <reg name="hpmcounter27" bitsize="64"/>
-  <reg name="hpmcounter28" bitsize="64"/>
-  <reg name="hpmcounter29" bitsize="64"/>
-  <reg name="hpmcounter30" bitsize="64"/>
-  <reg name="hpmcounter31" bitsize="64"/>
-  <reg name="cycleh" bitsize="64"/>
-  <reg name="timeh" bitsize="64"/>
-  <reg name="instreth" bitsize="64"/>
-  <reg name="hpmcounter3h" bitsize="64"/>
-  <reg name="hpmcounter4h" bitsize="64"/>
-  <reg name="hpmcounter5h" bitsize="64"/>
-  <reg name="hpmcounter6h" bitsize="64"/>
-  <reg name="hpmcounter7h" bitsize="64"/>
-  <reg name="hpmcounter8h" bitsize="64"/>
-  <reg name="hpmcounter9h" bitsize="64"/>
-  <reg name="hpmcounter10h" bitsize="64"/>
-  <reg name="hpmcounter11h" bitsize="64"/>
-  <reg name="hpmcounter12h" bitsize="64"/>
-  <reg name="hpmcounter13h" bitsize="64"/>
-  <reg name="hpmcounter14h" bitsize="64"/>
-  <reg name="hpmcounter15h" bitsize="64"/>
-  <reg name="hpmcounter16h" bitsize="64"/>
-  <reg name="hpmcounter17h" bitsize="64"/>
-  <reg name="hpmcounter18h" bitsize="64"/>
-  <reg name="hpmcounter19h" bitsize="64"/>
-  <reg name="hpmcounter20h" bitsize="64"/>
-  <reg name="hpmcounter21h" bitsize="64"/>
-  <reg name="hpmcounter22h" bitsize="64"/>
-  <reg name="hpmcounter23h" bitsize="64"/>
-  <reg name="hpmcounter24h" bitsize="64"/>
-  <reg name="hpmcounter25h" bitsize="64"/>
-  <reg name="hpmcounter26h" bitsize="64"/>
-  <reg name="hpmcounter27h" bitsize="64"/>
-  <reg name="hpmcounter28h" bitsize="64"/>
-  <reg name="hpmcounter29h" bitsize="64"/>
-  <reg name="hpmcounter30h" bitsize="64"/>
-  <reg name="hpmcounter31h" bitsize="64"/>
-  <reg name="sstatus" bitsize="64"/>
-  <reg name="sedeleg" bitsize="64"/>
-  <reg name="sideleg" bitsize="64"/>
-  <reg name="sie" bitsize="64"/>
-  <reg name="stvec" bitsize="64"/>
-  <reg name="scounteren" bitsize="64"/>
-  <reg name="sscratch" bitsize="64"/>
-  <reg name="sepc" bitsize="64"/>
-  <reg name="scause" bitsize="64"/>
-  <reg name="stval" bitsize="64"/>
-  <reg name="sip" bitsize="64"/>
-  <reg name="satp" bitsize="64"/>
-  <reg name="mvendorid" bitsize="64"/>
-  <reg name="marchid" bitsize="64"/>
-  <reg name="mimpid" bitsize="64"/>
-  <reg name="mhartid" bitsize="64"/>
-  <reg name="mstatus" bitsize="64"/>
-  <reg name="misa" bitsize="64"/>
-  <reg name="medeleg" bitsize="64"/>
-  <reg name="mideleg" bitsize="64"/>
-  <reg name="mie" bitsize="64"/>
-  <reg name="mtvec" bitsize="64"/>
-  <reg name="mcounteren" bitsize="64"/>
-  <reg name="mscratch" bitsize="64"/>
-  <reg name="mepc" bitsize="64"/>
-  <reg name="mcause" bitsize="64"/>
-  <reg name="mtval" bitsize="64"/>
-  <reg name="mip" bitsize="64"/>
-  <reg name="pmpcfg0" bitsize="64"/>
-  <reg name="pmpcfg1" bitsize="64"/>
-  <reg name="pmpcfg2" bitsize="64"/>
-  <reg name="pmpcfg3" bitsize="64"/>
-  <reg name="pmpaddr0" bitsize="64"/>
-  <reg name="pmpaddr1" bitsize="64"/>
-  <reg name="pmpaddr2" bitsize="64"/>
-  <reg name="pmpaddr3" bitsize="64"/>
-  <reg name="pmpaddr4" bitsize="64"/>
-  <reg name="pmpaddr5" bitsize="64"/>
-  <reg name="pmpaddr6" bitsize="64"/>
-  <reg name="pmpaddr7" bitsize="64"/>
-  <reg name="pmpaddr8" bitsize="64"/>
-  <reg name="pmpaddr9" bitsize="64"/>
-  <reg name="pmpaddr10" bitsize="64"/>
-  <reg name="pmpaddr11" bitsize="64"/>
-  <reg name="pmpaddr12" bitsize="64"/>
-  <reg name="pmpaddr13" bitsize="64"/>
-  <reg name="pmpaddr14" bitsize="64"/>
-  <reg name="pmpaddr15" bitsize="64"/>
-  <reg name="mcycle" bitsize="64"/>
-  <reg name="minstret" bitsize="64"/>
-  <reg name="mhpmcounter3" bitsize="64"/>
-  <reg name="mhpmcounter4" bitsize="64"/>
-  <reg name="mhpmcounter5" bitsize="64"/>
-  <reg name="mhpmcounter6" bitsize="64"/>
-  <reg name="mhpmcounter7" bitsize="64"/>
-  <reg name="mhpmcounter8" bitsize="64"/>
-  <reg name="mhpmcounter9" bitsize="64"/>
-  <reg name="mhpmcounter10" bitsize="64"/>
-  <reg name="mhpmcounter11" bitsize="64"/>
-  <reg name="mhpmcounter12" bitsize="64"/>
-  <reg name="mhpmcounter13" bitsize="64"/>
-  <reg name="mhpmcounter14" bitsize="64"/>
-  <reg name="mhpmcounter15" bitsize="64"/>
-  <reg name="mhpmcounter16" bitsize="64"/>
-  <reg name="mhpmcounter17" bitsize="64"/>
-  <reg name="mhpmcounter18" bitsize="64"/>
-  <reg name="mhpmcounter19" bitsize="64"/>
-  <reg name="mhpmcounter20" bitsize="64"/>
-  <reg name="mhpmcounter21" bitsize="64"/>
-  <reg name="mhpmcounter22" bitsize="64"/>
-  <reg name="mhpmcounter23" bitsize="64"/>
-  <reg name="mhpmcounter24" bitsize="64"/>
-  <reg name="mhpmcounter25" bitsize="64"/>
-  <reg name="mhpmcounter26" bitsize="64"/>
-  <reg name="mhpmcounter27" bitsize="64"/>
-  <reg name="mhpmcounter28" bitsize="64"/>
-  <reg name="mhpmcounter29" bitsize="64"/>
-  <reg name="mhpmcounter30" bitsize="64"/>
-  <reg name="mhpmcounter31" bitsize="64"/>
-  <reg name="mcycleh" bitsize="64"/>
-  <reg name="minstreth" bitsize="64"/>
-  <reg name="mhpmcounter3h" bitsize="64"/>
-  <reg name="mhpmcounter4h" bitsize="64"/>
-  <reg name="mhpmcounter5h" bitsize="64"/>
-  <reg name="mhpmcounter6h" bitsize="64"/>
-  <reg name="mhpmcounter7h" bitsize="64"/>
-  <reg name="mhpmcounter8h" bitsize="64"/>
-  <reg name="mhpmcounter9h" bitsize="64"/>
-  <reg name="mhpmcounter10h" bitsize="64"/>
-  <reg name="mhpmcounter11h" bitsize="64"/>
-  <reg name="mhpmcounter12h" bitsize="64"/>
-  <reg name="mhpmcounter13h" bitsize="64"/>
-  <reg name="mhpmcounter14h" bitsize="64"/>
-  <reg name="mhpmcounter15h" bitsize="64"/>
-  <reg name="mhpmcounter16h" bitsize="64"/>
-  <reg name="mhpmcounter17h" bitsize="64"/>
-  <reg name="mhpmcounter18h" bitsize="64"/>
-  <reg name="mhpmcounter19h" bitsize="64"/>
-  <reg name="mhpmcounter20h" bitsize="64"/>
-  <reg name="mhpmcounter21h" bitsize="64"/>
-  <reg name="mhpmcounter22h" bitsize="64"/>
-  <reg name="mhpmcounter23h" bitsize="64"/>
-  <reg name="mhpmcounter24h" bitsize="64"/>
-  <reg name="mhpmcounter25h" bitsize="64"/>
-  <reg name="mhpmcounter26h" bitsize="64"/>
-  <reg name="mhpmcounter27h" bitsize="64"/>
-  <reg name="mhpmcounter28h" bitsize="64"/>
-  <reg name="mhpmcounter29h" bitsize="64"/>
-  <reg name="mhpmcounter30h" bitsize="64"/>
-  <reg name="mhpmcounter31h" bitsize="64"/>
-  <reg name="mhpmevent3" bitsize="64"/>
-  <reg name="mhpmevent4" bitsize="64"/>
-  <reg name="mhpmevent5" bitsize="64"/>
-  <reg name="mhpmevent6" bitsize="64"/>
-  <reg name="mhpmevent7" bitsize="64"/>
-  <reg name="mhpmevent8" bitsize="64"/>
-  <reg name="mhpmevent9" bitsize="64"/>
-  <reg name="mhpmevent10" bitsize="64"/>
-  <reg name="mhpmevent11" bitsize="64"/>
-  <reg name="mhpmevent12" bitsize="64"/>
-  <reg name="mhpmevent13" bitsize="64"/>
-  <reg name="mhpmevent14" bitsize="64"/>
-  <reg name="mhpmevent15" bitsize="64"/>
-  <reg name="mhpmevent16" bitsize="64"/>
-  <reg name="mhpmevent17" bitsize="64"/>
-  <reg name="mhpmevent18" bitsize="64"/>
-  <reg name="mhpmevent19" bitsize="64"/>
-  <reg name="mhpmevent20" bitsize="64"/>
-  <reg name="mhpmevent21" bitsize="64"/>
-  <reg name="mhpmevent22" bitsize="64"/>
-  <reg name="mhpmevent23" bitsize="64"/>
-  <reg name="mhpmevent24" bitsize="64"/>
-  <reg name="mhpmevent25" bitsize="64"/>
-  <reg name="mhpmevent26" bitsize="64"/>
-  <reg name="mhpmevent27" bitsize="64"/>
-  <reg name="mhpmevent28" bitsize="64"/>
-  <reg name="mhpmevent29" bitsize="64"/>
-  <reg name="mhpmevent30" bitsize="64"/>
-  <reg name="mhpmevent31" bitsize="64"/>
-  <reg name="tselect" bitsize="64"/>
-  <reg name="tdata1" bitsize="64"/>
-  <reg name="tdata2" bitsize="64"/>
-  <reg name="tdata3" bitsize="64"/>
-  <reg name="dcsr" bitsize="64"/>
-  <reg name="dpc" bitsize="64"/>
-  <reg name="dscratch" bitsize="64"/>
-  <reg name="hstatus" bitsize="64"/>
-  <reg name="hedeleg" bitsize="64"/>
-  <reg name="hideleg" bitsize="64"/>
-  <reg name="hie" bitsize="64"/>
-  <reg name="htvec" bitsize="64"/>
-  <reg name="hscratch" bitsize="64"/>
-  <reg name="hepc" bitsize="64"/>
-  <reg name="hcause" bitsize="64"/>
-  <reg name="hbadaddr" bitsize="64"/>
-  <reg name="hip" bitsize="64"/>
-  <reg name="mbase" bitsize="64"/>
-  <reg name="mbound" bitsize="64"/>
-  <reg name="mibase" bitsize="64"/>
-  <reg name="mibound" bitsize="64"/>
-  <reg name="mdbase" bitsize="64"/>
-  <reg name="mdbound" bitsize="64"/>
-  <reg name="mucounteren" bitsize="64"/>
-  <reg name="mscounteren" bitsize="64"/>
-  <reg name="mhcounteren" bitsize="64"/>
-</feature>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/64bit-fpu.xml ./gdb/features/riscv/64bit-fpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/64bit-fpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/riscv/64bit-fpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/rebuild-csr-xml.sh ./gdb/features/riscv/rebuild-csr-xml.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/riscv/rebuild-csr-xml.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/riscv/rebuild-csr-xml.sh	1970-01-01 00:00:00.000000000 +0000
@@ -1,29 +0,0 @@
-#! /bin/bash
-
-RISCV_OPC_FILE=$1
-RISCV_FEATURE_DIR=$2
-
-function gen_csr_xml ()
-{
-    bitsize=$1
-
-    cat <<EOF
-<?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-     Copying and distribution of this file, with or without modification,
-     are permitted in any medium without royalty provided the copyright
-     notice and this notice are preserved.  -->
-
-<!DOCTYPE feature SYSTEM "gdb-target.dtd">
-<feature name="org.gnu.gdb.riscv.csr">
-EOF
-
-    grep "^DECLARE_CSR(" ${RISCV_OPC_FILE} \
-        | sed -e "s!DECLARE_CSR(\(.*\), .*!  <reg name=\"\1\" bitsize=\"$bitsize\"/>!"
-
-    echo "</feature>"
-}
-
-gen_csr_xml 32 > ${RISCV_FEATURE_DIR}/32bit-csr.xml
-gen_csr_xml 64 > ${RISCV_FEATURE_DIR}/64bit-csr.xml
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power64-core.xml ./gdb/features/rs6000/power64-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power64-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power64-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power64-htm-core.xml ./gdb/features/rs6000/power64-htm-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power64-htm-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power64-htm-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power64-linux.xml ./gdb/features/rs6000/power64-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power64-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power64-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-altivec.xml ./gdb/features/rs6000/power-altivec.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-altivec.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-altivec.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-core.xml ./gdb/features/rs6000/power-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-dscr.xml ./gdb/features/rs6000/power-dscr.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-dscr.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-dscr.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-ebb.xml ./gdb/features/rs6000/power-ebb.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-ebb.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-ebb.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-fpu-isa205.xml ./gdb/features/rs6000/power-fpu-isa205.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-fpu-isa205.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-fpu-isa205.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-fpu.xml ./gdb/features/rs6000/power-fpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-fpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-fpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-altivec.xml ./gdb/features/rs6000/power-htm-altivec.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-altivec.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-htm-altivec.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-core.xml ./gdb/features/rs6000/power-htm-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-htm-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-dscr.xml ./gdb/features/rs6000/power-htm-dscr.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-dscr.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-htm-dscr.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-fpu.xml ./gdb/features/rs6000/power-htm-fpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-fpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-htm-fpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-ppr.xml ./gdb/features/rs6000/power-htm-ppr.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-ppr.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-htm-ppr.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-spr.xml ./gdb/features/rs6000/power-htm-spr.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-spr.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-htm-spr.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-tar.xml ./gdb/features/rs6000/power-htm-tar.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-tar.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-htm-tar.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-vsx.xml ./gdb/features/rs6000/power-htm-vsx.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-htm-vsx.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-htm-vsx.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-linux-pmu.xml ./gdb/features/rs6000/power-linux-pmu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-linux-pmu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-linux-pmu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-linux.xml ./gdb/features/rs6000/power-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-oea.xml ./gdb/features/rs6000/power-oea.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-oea.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-oea.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-32l.xml ./gdb/features/rs6000/powerpc-32l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-32l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-32l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-32.xml ./gdb/features/rs6000/powerpc-32.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-32.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-32.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-403gc.xml ./gdb/features/rs6000/powerpc-403gc.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-403gc.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-403gc.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-403.xml ./gdb/features/rs6000/powerpc-403.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-403.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-403.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-405.xml ./gdb/features/rs6000/powerpc-405.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-405.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-405.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-505.xml ./gdb/features/rs6000/powerpc-505.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-505.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-505.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-601.xml ./gdb/features/rs6000/powerpc-601.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-601.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-601.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-602.xml ./gdb/features/rs6000/powerpc-602.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-602.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-602.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-603.xml ./gdb/features/rs6000/powerpc-603.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-603.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-603.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-604.xml ./gdb/features/rs6000/powerpc-604.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-604.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-604.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-64l.xml ./gdb/features/rs6000/powerpc-64l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-64l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-64l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-64.xml ./gdb/features/rs6000/powerpc-64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-7400.xml ./gdb/features/rs6000/powerpc-7400.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-7400.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-7400.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-750.xml ./gdb/features/rs6000/powerpc-750.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-750.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-750.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-860.xml ./gdb/features/rs6000/powerpc-860.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-860.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-860.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-altivec32l.xml ./gdb/features/rs6000/powerpc-altivec32l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-altivec32l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-altivec32l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-altivec32.xml ./gdb/features/rs6000/powerpc-altivec32.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-altivec32.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-altivec32.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-altivec64l.xml ./gdb/features/rs6000/powerpc-altivec64l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-altivec64l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-altivec64l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-altivec64.xml ./gdb/features/rs6000/powerpc-altivec64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-altivec64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-altivec64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-e500l.xml ./gdb/features/rs6000/powerpc-e500l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-e500l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-e500l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-e500.xml ./gdb/features/rs6000/powerpc-e500.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-e500.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-e500.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-32l.xml ./gdb/features/rs6000/powerpc-isa205-32l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-32l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa205-32l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-64l.xml ./gdb/features/rs6000/powerpc-isa205-64l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-64l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa205-64l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-altivec32l.xml ./gdb/features/rs6000/powerpc-isa205-altivec32l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-altivec32l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa205-altivec32l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-altivec64l.xml ./gdb/features/rs6000/powerpc-isa205-altivec64l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-altivec64l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa205-altivec64l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml ./gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml ./gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-vsx32l.xml ./gdb/features/rs6000/powerpc-isa205-vsx32l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-vsx32l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa205-vsx32l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-vsx64l.xml ./gdb/features/rs6000/powerpc-isa205-vsx64l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa205-vsx64l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa205-vsx64l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.xml ./gdb/features/rs6000/powerpc-isa207-htm-vsx32l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa207-htm-vsx32l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.xml ./gdb/features/rs6000/powerpc-isa207-htm-vsx64l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa207-htm-vsx64l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa207-vsx32l.xml ./gdb/features/rs6000/powerpc-isa207-vsx32l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa207-vsx32l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa207-vsx32l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa207-vsx64l.xml ./gdb/features/rs6000/powerpc-isa207-vsx64l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-isa207-vsx64l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-isa207-vsx64l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-vsx32l.xml ./gdb/features/rs6000/powerpc-vsx32l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-vsx32l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-vsx32l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-vsx32.xml ./gdb/features/rs6000/powerpc-vsx32.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-vsx32.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-vsx32.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-vsx64l.xml ./gdb/features/rs6000/powerpc-vsx64l.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-vsx64l.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-vsx64l.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-vsx64.xml ./gdb/features/rs6000/powerpc-vsx64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/powerpc-vsx64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/powerpc-vsx64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-ppr.xml ./gdb/features/rs6000/power-ppr.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-ppr.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-ppr.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-spe.xml ./gdb/features/rs6000/power-spe.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-spe.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-spe.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-tar.xml ./gdb/features/rs6000/power-tar.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-tar.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-tar.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2018-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-vsx.xml ./gdb/features/rs6000/power-vsx.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/power-vsx.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/power-vsx.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/rs6000.xml ./gdb/features/rs6000/rs6000.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rs6000/rs6000.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rs6000/rs6000.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rx.xml ./gdb/features/rx.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/rx.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/rx.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2019-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-acr.xml ./gdb/features/s390-acr.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-acr.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-acr.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-core32.xml ./gdb/features/s390-core32.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-core32.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-core32.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-core64.xml ./gdb/features/s390-core64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-core64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-core64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-fpr.xml ./gdb/features/s390-fpr.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-fpr.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-fpr.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-gsbc.xml ./gdb/features/s390-gsbc.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-gsbc.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-gsbc.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2017-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-gs-linux64.xml ./gdb/features/s390-gs-linux64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-gs-linux64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-gs-linux64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2017-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-gs.xml ./gdb/features/s390-gs.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-gs.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-gs.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2017-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux32v1.xml ./gdb/features/s390-linux32v1.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux32v1.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-linux32v1.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux32v2.xml ./gdb/features/s390-linux32v2.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux32v2.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-linux32v2.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux32.xml ./gdb/features/s390-linux32.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux32.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-linux32.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux64v1.xml ./gdb/features/s390-linux64v1.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux64v1.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-linux64v1.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux64v2.xml ./gdb/features/s390-linux64v2.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux64v2.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-linux64v2.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux64.xml ./gdb/features/s390-linux64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-linux64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-linux64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-tdb.xml ./gdb/features/s390-tdb.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-tdb.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-tdb.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-te-linux64.xml ./gdb/features/s390-te-linux64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-te-linux64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-te-linux64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-tevx-linux64.xml ./gdb/features/s390-tevx-linux64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-tevx-linux64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-tevx-linux64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-vx-linux64.xml ./gdb/features/s390-vx-linux64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-vx-linux64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-vx-linux64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-vx.xml ./gdb/features/s390-vx.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390-vx.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390-vx.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-core64.xml ./gdb/features/s390x-core64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-core64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390x-core64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-gs-linux64.xml ./gdb/features/s390x-gs-linux64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-gs-linux64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390x-gs-linux64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2017-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-linux64v1.xml ./gdb/features/s390x-linux64v1.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-linux64v1.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390x-linux64v1.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-linux64v2.xml ./gdb/features/s390x-linux64v2.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-linux64v2.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390x-linux64v2.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-linux64.xml ./gdb/features/s390x-linux64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-linux64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390x-linux64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-te-linux64.xml ./gdb/features/s390x-te-linux64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-te-linux64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390x-te-linux64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-tevx-linux64.xml ./gdb/features/s390x-tevx-linux64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-tevx-linux64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390x-tevx-linux64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-vx-linux64.xml ./gdb/features/s390x-vx-linux64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/s390x-vx-linux64.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/s390x-vx-linux64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc32-cp0.xml ./gdb/features/sparc/sparc32-cp0.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc32-cp0.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/sparc/sparc32-cp0.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc32-cpu.xml ./gdb/features/sparc/sparc32-cpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc32-cpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/sparc/sparc32-cpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc32-fpu.xml ./gdb/features/sparc/sparc32-fpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc32-fpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/sparc/sparc32-fpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc32-solaris.xml ./gdb/features/sparc/sparc32-solaris.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc32-solaris.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/sparc/sparc32-solaris.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc64-cp0.xml ./gdb/features/sparc/sparc64-cp0.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc64-cp0.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/sparc/sparc64-cp0.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc64-cpu.xml ./gdb/features/sparc/sparc64-cpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc64-cpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/sparc/sparc64-cpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc64-fpu.xml ./gdb/features/sparc/sparc64-fpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc64-fpu.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/sparc/sparc64-fpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc64-solaris.xml ./gdb/features/sparc/sparc64-solaris.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/sparc/sparc64-solaris.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/sparc/sparc64-solaris.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/threads.dtd ./gdb/features/threads.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/threads.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/threads.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2008-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-c62x-linux.xml ./gdb/features/tic6x-c62x-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-c62x-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/tic6x-c62x-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-c64x-linux.xml ./gdb/features/tic6x-c64x-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-c64x-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/tic6x-c64x-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-c64xp-linux.xml ./gdb/features/tic6x-c64xp-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-c64xp-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/tic6x-c64xp-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-c6xp.xml ./gdb/features/tic6x-c6xp.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-c6xp.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/tic6x-c6xp.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-core.xml ./gdb/features/tic6x-core.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-core.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/tic6x-core.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-gp.xml ./gdb/features/tic6x-gp.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/tic6x-gp.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/tic6x-gp.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/traceframe-info.dtd ./gdb/features/traceframe-info.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/traceframe-info.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/traceframe-info.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/xinclude.dtd ./gdb/features/xinclude.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/features/xinclude.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/features/xinclude.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-exp.c ./gdb/f-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-exp.c	2020-03-07 02:11:13.000000000 +0000
+++ ./gdb/f-exp.c	2021-05-21 02:00:06.000000000 +0000
@@ -1,21 +1,20 @@
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* Bison implementation for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   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/>.  */
 
@@ -28,13 +27,17 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -46,7 +49,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,14 +63,10 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 
 
-/* Copy the first part of user declarations.  */
-
-/* Line 189 of yacc.c  */
+/* First part of user prologue.  */
 #line 43 "f-exp.y"
 
 
@@ -119,83 +118,99 @@ static void push_kind_type (LONGEST val,
 static struct type *convert_to_kind_type (struct type *basetype, int kind);
 
 
+#line 122 "f-exp.c.tmp"
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTRPTR nullptr
+#   else
+#    define YY_NULLPTRPTR 0
+#   endif
+#  else
+#   define YY_NULLPTRPTR ((void*)0)
+#  endif
+# endif
 
-/* Line 189 of yacc.c  */
-#line 125 "f-exp.c.tmp"
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+#if YYDEBUG
+extern int yydebug;
 #endif
 
-
-/* Tokens.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     INT = 258,
-     FLOAT = 259,
-     STRING_LITERAL = 260,
-     BOOLEAN_LITERAL = 261,
-     NAME = 262,
-     TYPENAME = 263,
-     NAME_OR_INT = 264,
-     SIZEOF = 265,
-     KIND = 266,
-     ERROR = 267,
-     INT_KEYWORD = 268,
-     INT_S2_KEYWORD = 269,
-     LOGICAL_S1_KEYWORD = 270,
-     LOGICAL_S2_KEYWORD = 271,
-     LOGICAL_S8_KEYWORD = 272,
-     LOGICAL_KEYWORD = 273,
-     REAL_KEYWORD = 274,
-     REAL_S8_KEYWORD = 275,
-     REAL_S16_KEYWORD = 276,
-     COMPLEX_KEYWORD = 277,
-     COMPLEX_S8_KEYWORD = 278,
-     COMPLEX_S16_KEYWORD = 279,
-     COMPLEX_S32_KEYWORD = 280,
-     BOOL_AND = 281,
-     BOOL_OR = 282,
-     BOOL_NOT = 283,
-     SINGLE = 284,
-     DOUBLE = 285,
-     PRECISION = 286,
-     CHARACTER = 287,
-     DOLLAR_VARIABLE = 288,
-     ASSIGN_MODIFY = 289,
-     UNOP_INTRINSIC = 290,
-     BINOP_INTRINSIC = 291,
-     ABOVE_COMMA = 292,
-     NOTEQUAL = 293,
-     EQUAL = 294,
-     GEQ = 295,
-     LEQ = 296,
-     GREATERTHAN = 297,
-     LESSTHAN = 298,
-     RSH = 299,
-     LSH = 300,
-     STARSTAR = 301,
-     UNARY = 302
-   };
-#endif
-/* Tokens.  */
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    INT = 258,                     /* INT  */
+    FLOAT = 259,                   /* FLOAT  */
+    STRING_LITERAL = 260,          /* STRING_LITERAL  */
+    BOOLEAN_LITERAL = 261,         /* BOOLEAN_LITERAL  */
+    NAME = 262,                    /* NAME  */
+    TYPENAME = 263,                /* TYPENAME  */
+    NAME_OR_INT = 264,             /* NAME_OR_INT  */
+    SIZEOF = 265,                  /* SIZEOF  */
+    KIND = 266,                    /* KIND  */
+    ERROR = 267,                   /* ERROR  */
+    INT_KEYWORD = 268,             /* INT_KEYWORD  */
+    INT_S2_KEYWORD = 269,          /* INT_S2_KEYWORD  */
+    LOGICAL_S1_KEYWORD = 270,      /* LOGICAL_S1_KEYWORD  */
+    LOGICAL_S2_KEYWORD = 271,      /* LOGICAL_S2_KEYWORD  */
+    LOGICAL_S8_KEYWORD = 272,      /* LOGICAL_S8_KEYWORD  */
+    LOGICAL_KEYWORD = 273,         /* LOGICAL_KEYWORD  */
+    REAL_KEYWORD = 274,            /* REAL_KEYWORD  */
+    REAL_S8_KEYWORD = 275,         /* REAL_S8_KEYWORD  */
+    REAL_S16_KEYWORD = 276,        /* REAL_S16_KEYWORD  */
+    COMPLEX_KEYWORD = 277,         /* COMPLEX_KEYWORD  */
+    COMPLEX_S8_KEYWORD = 278,      /* COMPLEX_S8_KEYWORD  */
+    COMPLEX_S16_KEYWORD = 279,     /* COMPLEX_S16_KEYWORD  */
+    COMPLEX_S32_KEYWORD = 280,     /* COMPLEX_S32_KEYWORD  */
+    BOOL_AND = 281,                /* BOOL_AND  */
+    BOOL_OR = 282,                 /* BOOL_OR  */
+    BOOL_NOT = 283,                /* BOOL_NOT  */
+    SINGLE = 284,                  /* SINGLE  */
+    DOUBLE = 285,                  /* DOUBLE  */
+    PRECISION = 286,               /* PRECISION  */
+    CHARACTER = 287,               /* CHARACTER  */
+    DOLLAR_VARIABLE = 288,         /* DOLLAR_VARIABLE  */
+    ASSIGN_MODIFY = 289,           /* ASSIGN_MODIFY  */
+    UNOP_INTRINSIC = 290,          /* UNOP_INTRINSIC  */
+    BINOP_INTRINSIC = 291,         /* BINOP_INTRINSIC  */
+    ABOVE_COMMA = 292,             /* ABOVE_COMMA  */
+    EQUAL = 293,                   /* EQUAL  */
+    NOTEQUAL = 294,                /* NOTEQUAL  */
+    LESSTHAN = 295,                /* LESSTHAN  */
+    GREATERTHAN = 296,             /* GREATERTHAN  */
+    LEQ = 297,                     /* LEQ  */
+    GEQ = 298,                     /* GEQ  */
+    LSH = 299,                     /* LSH  */
+    RSH = 300,                     /* RSH  */
+    STARSTAR = 301,                /* STARSTAR  */
+    UNARY = 302                    /* UNARY  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
+#endif
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define INT 258
 #define FLOAT 259
 #define STRING_LITERAL 260
@@ -231,25 +246,21 @@ static struct type *convert_to_kind_type
 #define UNOP_INTRINSIC 290
 #define BINOP_INTRINSIC 291
 #define ABOVE_COMMA 292
-#define NOTEQUAL 293
-#define EQUAL 294
-#define GEQ 295
-#define LEQ 296
-#define GREATERTHAN 297
-#define LESSTHAN 298
-#define RSH 299
-#define LSH 300
+#define EQUAL 293
+#define NOTEQUAL 294
+#define LESSTHAN 295
+#define GREATERTHAN 296
+#define LEQ 297
+#define GEQ 298
+#define LSH 299
+#define RSH 300
 #define STARSTAR 301
 #define UNARY 302
 
-
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
 #line 99 "f-exp.y"
 
     LONGEST lval;
@@ -274,58 +285,193 @@ typedef union YYSTYPE
     int *ivec;
   
 
+#line 289 "f-exp.c.tmp"
 
-/* Line 214 of yacc.c  */
-#line 280 "f-exp.c.tmp"
-} YYSTYPE;
+};
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
+extern YYSTYPE yylval;
+
+int yyparse (void);
+
 
-/* Line 264 of yacc.c  */
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_INT = 3,                        /* INT  */
+  YYSYMBOL_FLOAT = 4,                      /* FLOAT  */
+  YYSYMBOL_STRING_LITERAL = 5,             /* STRING_LITERAL  */
+  YYSYMBOL_BOOLEAN_LITERAL = 6,            /* BOOLEAN_LITERAL  */
+  YYSYMBOL_NAME = 7,                       /* NAME  */
+  YYSYMBOL_TYPENAME = 8,                   /* TYPENAME  */
+  YYSYMBOL_NAME_OR_INT = 9,                /* NAME_OR_INT  */
+  YYSYMBOL_SIZEOF = 10,                    /* SIZEOF  */
+  YYSYMBOL_KIND = 11,                      /* KIND  */
+  YYSYMBOL_ERROR = 12,                     /* ERROR  */
+  YYSYMBOL_INT_KEYWORD = 13,               /* INT_KEYWORD  */
+  YYSYMBOL_INT_S2_KEYWORD = 14,            /* INT_S2_KEYWORD  */
+  YYSYMBOL_LOGICAL_S1_KEYWORD = 15,        /* LOGICAL_S1_KEYWORD  */
+  YYSYMBOL_LOGICAL_S2_KEYWORD = 16,        /* LOGICAL_S2_KEYWORD  */
+  YYSYMBOL_LOGICAL_S8_KEYWORD = 17,        /* LOGICAL_S8_KEYWORD  */
+  YYSYMBOL_LOGICAL_KEYWORD = 18,           /* LOGICAL_KEYWORD  */
+  YYSYMBOL_REAL_KEYWORD = 19,              /* REAL_KEYWORD  */
+  YYSYMBOL_REAL_S8_KEYWORD = 20,           /* REAL_S8_KEYWORD  */
+  YYSYMBOL_REAL_S16_KEYWORD = 21,          /* REAL_S16_KEYWORD  */
+  YYSYMBOL_COMPLEX_KEYWORD = 22,           /* COMPLEX_KEYWORD  */
+  YYSYMBOL_COMPLEX_S8_KEYWORD = 23,        /* COMPLEX_S8_KEYWORD  */
+  YYSYMBOL_COMPLEX_S16_KEYWORD = 24,       /* COMPLEX_S16_KEYWORD  */
+  YYSYMBOL_COMPLEX_S32_KEYWORD = 25,       /* COMPLEX_S32_KEYWORD  */
+  YYSYMBOL_BOOL_AND = 26,                  /* BOOL_AND  */
+  YYSYMBOL_BOOL_OR = 27,                   /* BOOL_OR  */
+  YYSYMBOL_BOOL_NOT = 28,                  /* BOOL_NOT  */
+  YYSYMBOL_SINGLE = 29,                    /* SINGLE  */
+  YYSYMBOL_DOUBLE = 30,                    /* DOUBLE  */
+  YYSYMBOL_PRECISION = 31,                 /* PRECISION  */
+  YYSYMBOL_CHARACTER = 32,                 /* CHARACTER  */
+  YYSYMBOL_DOLLAR_VARIABLE = 33,           /* DOLLAR_VARIABLE  */
+  YYSYMBOL_ASSIGN_MODIFY = 34,             /* ASSIGN_MODIFY  */
+  YYSYMBOL_UNOP_INTRINSIC = 35,            /* UNOP_INTRINSIC  */
+  YYSYMBOL_BINOP_INTRINSIC = 36,           /* BINOP_INTRINSIC  */
+  YYSYMBOL_37_ = 37,                       /* ','  */
+  YYSYMBOL_ABOVE_COMMA = 38,               /* ABOVE_COMMA  */
+  YYSYMBOL_39_ = 39,                       /* '='  */
+  YYSYMBOL_40_ = 40,                       /* '?'  */
+  YYSYMBOL_41_ = 41,                       /* '|'  */
+  YYSYMBOL_42_ = 42,                       /* '^'  */
+  YYSYMBOL_43_ = 43,                       /* '&'  */
+  YYSYMBOL_EQUAL = 44,                     /* EQUAL  */
+  YYSYMBOL_NOTEQUAL = 45,                  /* NOTEQUAL  */
+  YYSYMBOL_LESSTHAN = 46,                  /* LESSTHAN  */
+  YYSYMBOL_GREATERTHAN = 47,               /* GREATERTHAN  */
+  YYSYMBOL_LEQ = 48,                       /* LEQ  */
+  YYSYMBOL_GEQ = 49,                       /* GEQ  */
+  YYSYMBOL_LSH = 50,                       /* LSH  */
+  YYSYMBOL_RSH = 51,                       /* RSH  */
+  YYSYMBOL_52_ = 52,                       /* '@'  */
+  YYSYMBOL_53_ = 53,                       /* '+'  */
+  YYSYMBOL_54_ = 54,                       /* '-'  */
+  YYSYMBOL_55_ = 55,                       /* '*'  */
+  YYSYMBOL_56_ = 56,                       /* '/'  */
+  YYSYMBOL_STARSTAR = 57,                  /* STARSTAR  */
+  YYSYMBOL_58_ = 58,                       /* '%'  */
+  YYSYMBOL_UNARY = 59,                     /* UNARY  */
+  YYSYMBOL_60_ = 60,                       /* '('  */
+  YYSYMBOL_61_ = 61,                       /* ')'  */
+  YYSYMBOL_62_ = 62,                       /* '~'  */
+  YYSYMBOL_63_ = 63,                       /* ':'  */
+  YYSYMBOL_YYACCEPT = 64,                  /* $accept  */
+  YYSYMBOL_start = 65,                     /* start  */
+  YYSYMBOL_type_exp = 66,                  /* type_exp  */
+  YYSYMBOL_exp = 67,                       /* exp  */
+  YYSYMBOL_68_1 = 68,                      /* $@1  */
+  YYSYMBOL_arglist = 69,                   /* arglist  */
+  YYSYMBOL_subrange = 70,                  /* subrange  */
+  YYSYMBOL_complexnum = 71,                /* complexnum  */
+  YYSYMBOL_variable = 72,                  /* variable  */
+  YYSYMBOL_type = 73,                      /* type  */
+  YYSYMBOL_ptype = 74,                     /* ptype  */
+  YYSYMBOL_abs_decl = 75,                  /* abs_decl  */
+  YYSYMBOL_direct_abs_decl = 76,           /* direct_abs_decl  */
+  YYSYMBOL_func_mod = 77,                  /* func_mod  */
+  YYSYMBOL_typebase = 78,                  /* typebase  */
+  YYSYMBOL_nonempty_typelist = 79,         /* nonempty_typelist  */
+  YYSYMBOL_name = 80,                      /* name  */
+  YYSYMBOL_name_not_typename = 81          /* name_not_typename  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
+
+/* Second part of user prologue.  */
 #line 122 "f-exp.y"
 
 /* YYSTYPE gets defined by %union */
 static int parse_number (struct parser_state *, const char *, int,
 			 int, YYSTYPE *);
 
+#line 400 "f-exp.c.tmp"
 
-/* Line 264 of yacc.c  */
-#line 299 "f-exp.c.tmp"
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef short int yytype_int16;
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -333,55 +479,100 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_uint8 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
 #else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
 #endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if !defined yyoverflow
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
 
@@ -397,11 +588,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -409,8 +600,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -424,88 +615,89 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined xmalloc) \
-	     && (defined YYFREE || defined xfree)))
+             && (defined YYFREE || defined xfree)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC xmalloc
-#   if ! defined xmalloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xmalloc && ! defined EXIT_SUCCESS
 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE xfree
-#   if ! defined xfree && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xfree && ! defined EXIT_SUCCESS
 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYPTRDIFF_T yynewbytes;                                         \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
+      }                                                                 \
+    while (0)
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYPTRDIFF_T yyi;                      \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  60
 /* YYLAST -- Last index in YYTABLE.  */
@@ -517,18 +709,22 @@ union yyalloc
 #define YYNNTS  18
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  96
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  157
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
 #define YYMAXUTOK   302
 
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex.  */
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -564,59 +760,8 @@ static const yytype_uint8 yytranslate[]
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     5,     7,     9,    13,    16,    19,    22,
-      25,    28,    31,    36,    37,    43,    48,    55,    56,    58,
-      60,    64,    68,    71,    74,    76,    80,    84,    89,    93,
-      97,   101,   105,   109,   113,   117,   121,   125,   129,   133,
-     137,   141,   145,   149,   153,   157,   161,   165,   169,   173,
-     177,   179,   181,   183,   185,   187,   192,   194,   196,   198,
-     200,   202,   205,   207,   210,   212,   215,   217,   221,   227,
-     230,   233,   235,   238,   242,   244,   246,   248,   250,   252,
-     254,   256,   258,   260,   262,   264,   266,   268,   270,   272,
-     275,   278,   281,   284,   286,   290,   292
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      65,     0,    -1,    67,    -1,    66,    -1,    73,    -1,    60,
-      67,    61,    -1,    55,    67,    -1,    43,    67,    -1,    54,
-      67,    -1,    28,    67,    -1,    62,    67,    -1,    10,    67,
-      -1,    11,    60,    67,    61,    -1,    -1,    67,    60,    68,
-      69,    61,    -1,    35,    60,    67,    61,    -1,    36,    60,
-      67,    37,    67,    61,    -1,    -1,    67,    -1,    70,    -1,
-      69,    37,    67,    -1,    67,    63,    67,    -1,    67,    63,
-      -1,    63,    67,    -1,    63,    -1,    67,    37,    67,    -1,
-      60,    71,    61,    -1,    60,    73,    61,    67,    -1,    67,
-      58,    80,    -1,    67,    52,    67,    -1,    67,    57,    67,
-      -1,    67,    55,    67,    -1,    67,    56,    67,    -1,    67,
-      53,    67,    -1,    67,    54,    67,    -1,    67,    51,    67,
-      -1,    67,    50,    67,    -1,    67,    45,    67,    -1,    67,
-      44,    67,    -1,    67,    47,    67,    -1,    67,    46,    67,
-      -1,    67,    49,    67,    -1,    67,    48,    67,    -1,    67,
-      43,    67,    -1,    67,    42,    67,    -1,    67,    41,    67,
-      -1,    67,    26,    67,    -1,    67,    27,    67,    -1,    67,
-      39,    67,    -1,    67,    34,    67,    -1,     3,    -1,     9,
-      -1,     4,    -1,    72,    -1,    33,    -1,    10,    60,    73,
-      61,    -1,     6,    -1,     5,    -1,    81,    -1,    74,    -1,
-      78,    -1,    78,    75,    -1,    55,    -1,    55,    75,    -1,
-      43,    -1,    43,    75,    -1,    76,    -1,    60,    75,    61,
-      -1,    60,    11,    39,     3,    61,    -1,    55,     3,    -1,
-      76,    77,    -1,    77,    -1,    60,    61,    -1,    60,    79,
-      61,    -1,     8,    -1,    13,    -1,    14,    -1,    32,    -1,
-      17,    -1,    18,    -1,    16,    -1,    15,    -1,    19,    -1,
-      20,    -1,    21,    -1,    22,    -1,    23,    -1,    24,    -1,
-      25,    -1,    29,    31,    -1,    30,    31,    -1,    29,    22,
-      -1,    30,    22,    -1,    73,    -1,    79,    37,    73,    -1,
-       7,    -1,     7,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+static const yytype_int16 yyrline[] =
 {
        0,   205,   205,   206,   209,   215,   220,   224,   228,   232,
      236,   240,   244,   254,   253,   264,   268,   272,   275,   279,
@@ -631,33 +776,46 @@ static const yytype_uint16 yyrline[] =
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "INT", "FLOAT", "STRING_LITERAL",
-  "BOOLEAN_LITERAL", "NAME", "TYPENAME", "NAME_OR_INT", "SIZEOF", "KIND",
-  "ERROR", "INT_KEYWORD", "INT_S2_KEYWORD", "LOGICAL_S1_KEYWORD",
-  "LOGICAL_S2_KEYWORD", "LOGICAL_S8_KEYWORD", "LOGICAL_KEYWORD",
-  "REAL_KEYWORD", "REAL_S8_KEYWORD", "REAL_S16_KEYWORD", "COMPLEX_KEYWORD",
-  "COMPLEX_S8_KEYWORD", "COMPLEX_S16_KEYWORD", "COMPLEX_S32_KEYWORD",
-  "BOOL_AND", "BOOL_OR", "BOOL_NOT", "SINGLE", "DOUBLE", "PRECISION",
-  "CHARACTER", "DOLLAR_VARIABLE", "ASSIGN_MODIFY", "UNOP_INTRINSIC",
-  "BINOP_INTRINSIC", "','", "ABOVE_COMMA", "'='", "'?'", "'|'", "'^'",
-  "'&'", "NOTEQUAL", "EQUAL", "GEQ", "LEQ", "GREATERTHAN", "LESSTHAN",
-  "RSH", "LSH", "'@'", "'+'", "'-'", "'*'", "'/'", "STARSTAR", "'%'",
-  "UNARY", "'('", "')'", "'~'", "':'", "$accept", "start", "type_exp",
-  "exp", "$@1", "arglist", "subrange", "complexnum", "variable", "type",
-  "ptype", "abs_decl", "direct_abs_decl", "func_mod", "typebase",
-  "nonempty_typelist", "name", "name_not_typename", 0
+  "\"end of file\"", "error", "\"invalid token\"", "INT", "FLOAT",
+  "STRING_LITERAL", "BOOLEAN_LITERAL", "NAME", "TYPENAME", "NAME_OR_INT",
+  "SIZEOF", "KIND", "ERROR", "INT_KEYWORD", "INT_S2_KEYWORD",
+  "LOGICAL_S1_KEYWORD", "LOGICAL_S2_KEYWORD", "LOGICAL_S8_KEYWORD",
+  "LOGICAL_KEYWORD", "REAL_KEYWORD", "REAL_S8_KEYWORD", "REAL_S16_KEYWORD",
+  "COMPLEX_KEYWORD", "COMPLEX_S8_KEYWORD", "COMPLEX_S16_KEYWORD",
+  "COMPLEX_S32_KEYWORD", "BOOL_AND", "BOOL_OR", "BOOL_NOT", "SINGLE",
+  "DOUBLE", "PRECISION", "CHARACTER", "DOLLAR_VARIABLE", "ASSIGN_MODIFY",
+  "UNOP_INTRINSIC", "BINOP_INTRINSIC", "','", "ABOVE_COMMA", "'='", "'?'",
+  "'|'", "'^'", "'&'", "EQUAL", "NOTEQUAL", "LESSTHAN", "GREATERTHAN",
+  "LEQ", "GEQ", "LSH", "RSH", "'@'", "'+'", "'-'", "'*'", "'/'",
+  "STARSTAR", "'%'", "UNARY", "'('", "')'", "'~'", "':'", "$accept",
+  "start", "type_exp", "exp", "$@1", "arglist", "subrange", "complexnum",
+  "variable", "type", "ptype", "abs_decl", "direct_abs_decl", "func_mod",
+  "typebase", "nonempty_typelist", "name", "name_not_typename", YY_NULLPTRPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+#ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
@@ -667,71 +825,20 @@ static const yytype_uint16 yytoknum[] =
      299,   300,    64,    43,    45,    42,    47,   301,    37,   302,
       40,    41,   126,    58
 };
-# endif
+#endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    64,    65,    65,    66,    67,    67,    67,    67,    67,
-      67,    67,    67,    68,    67,    67,    67,    69,    69,    69,
-      69,    70,    70,    70,    70,    71,    67,    67,    67,    67,
-      67,    67,    67,    67,    67,    67,    67,    67,    67,    67,
-      67,    67,    67,    67,    67,    67,    67,    67,    67,    67,
-      67,    67,    67,    67,    67,    67,    67,    67,    72,    73,
-      74,    74,    75,    75,    75,    75,    75,    76,    76,    76,
-      76,    76,    77,    77,    78,    78,    78,    78,    78,    78,
-      78,    78,    78,    78,    78,    78,    78,    78,    78,    78,
-      78,    78,    78,    79,    79,    80,    81
-};
+#define YYPACT_NINF (-59)
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     1,     1,     1,     3,     2,     2,     2,     2,
-       2,     2,     4,     0,     5,     4,     6,     0,     1,     1,
-       3,     3,     2,     2,     1,     3,     3,     4,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       1,     1,     1,     1,     1,     4,     1,     1,     1,     1,
-       1,     2,     1,     2,     1,     2,     1,     3,     5,     2,
-       2,     1,     2,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     2,     2,     1,     3,     1,     1
-};
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint8 yydefact[] =
-{
-       0,    50,    52,    57,    56,    96,    74,    51,     0,     0,
-      75,    76,    81,    80,    78,    79,    82,    83,    84,    85,
-      86,    87,    88,     0,     0,     0,    77,    54,     0,     0,
-       0,     0,     0,     0,     0,     0,     3,     2,    53,     4,
-      59,    60,    58,     0,    11,     0,     9,    91,    89,    92,
-      90,     0,     0,     7,     8,     6,     0,     0,     0,    10,
-       1,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    13,    64,    62,     0,    61,    66,    71,
-       0,     0,     0,     0,     0,     5,    26,     0,    46,    47,
-      49,    48,    45,    44,    43,    38,    37,    40,    39,    42,
-      41,    36,    35,    29,    33,    34,    31,    32,    30,    95,
-      28,    17,    65,    69,    63,     0,    72,    93,     0,     0,
-       0,    70,    55,    12,    15,     0,    25,    27,    24,    18,
-       0,    19,     0,    67,     0,    73,     0,    23,    22,     0,
-      14,     0,    94,    16,    21,    20,    68
-};
+#define YYTABLE_NINF (-1)
 
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,    35,    36,    56,   121,   140,   141,    57,    38,   127,
-      40,    87,    88,    89,    41,   129,   120,    42
-};
+#define yytable_value_is_error(Yyn) \
+  0
 
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -59
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
      147,   -59,   -59,   -59,   -59,   -59,   -59,   -59,   182,   -58,
@@ -752,18 +859,46 @@ static const yytype_int16 yypact[] =
      -59,    30,   -59,   -59,   515,   515,   -59
 };
 
-/* YYPGOTO[NTERM-NUM].  */
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_int8 yydefact[] =
+{
+       0,    50,    52,    57,    56,    96,    74,    51,     0,     0,
+      75,    76,    81,    80,    78,    79,    82,    83,    84,    85,
+      86,    87,    88,     0,     0,     0,    77,    54,     0,     0,
+       0,     0,     0,     0,     0,     0,     3,     2,    53,     4,
+      59,    60,    58,     0,    11,     0,     9,    91,    89,    92,
+      90,     0,     0,     7,     8,     6,     0,     0,     0,    10,
+       1,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    13,    64,    62,     0,    61,    66,    71,
+       0,     0,     0,     0,     0,     5,    26,     0,    46,    47,
+      49,    48,    45,    44,    43,    37,    38,    41,    42,    39,
+      40,    35,    36,    29,    33,    34,    31,    32,    30,    95,
+      28,    17,    65,    69,    63,     0,    72,    93,     0,     0,
+       0,    70,    55,    12,    15,     0,    25,    27,    24,    18,
+       0,    19,     0,    67,     0,    73,     0,    23,    22,     0,
+      14,     0,    94,    16,    21,    20,    68
+};
+
+  /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
      -59,   -59,   -59,     0,   -59,   -59,   -59,   -59,   -59,     3,
      -59,   -30,   -59,     8,   -59,   -59,   -59,   -59
 };
 
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -1
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+      -1,    35,    36,    56,   121,   140,   141,    57,    38,   127,
+      40,    87,    88,    89,    41,   129,   120,    42
+};
+
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_uint8 yytable[] =
 {
       37,   123,    45,    39,     6,   144,    51,    52,    44,    10,
@@ -918,9 +1053,9 @@ static const yytype_int16 yycheck[] =
       60
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
+static const yytype_int8 yystos[] =
 {
        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
@@ -940,95 +1075,70 @@ static const yytype_uint8 yystos[] =
       61,     3,    73,    61,    67,    67,    61
 };
 
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
-
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
-
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_int8 yyr1[] =
+{
+       0,    64,    65,    65,    66,    67,    67,    67,    67,    67,
+      67,    67,    67,    68,    67,    67,    67,    69,    69,    69,
+      69,    70,    70,    70,    70,    71,    67,    67,    67,    67,
+      67,    67,    67,    67,    67,    67,    67,    67,    67,    67,
+      67,    67,    67,    67,    67,    67,    67,    67,    67,    67,
+      67,    67,    67,    67,    67,    67,    67,    67,    72,    73,
+      74,    74,    75,    75,    75,    75,    75,    76,    76,    76,
+      76,    76,    77,    77,    78,    78,    78,    78,    78,    78,
+      78,    78,    78,    78,    78,    78,    78,    78,    78,    78,
+      78,    78,    78,    79,    79,    80,    81
+};
 
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_int8 yyr2[] =
+{
+       0,     2,     1,     1,     1,     3,     2,     2,     2,     2,
+       2,     2,     4,     0,     5,     4,     6,     0,     1,     1,
+       3,     3,     2,     2,     1,     3,     3,     4,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       1,     1,     1,     1,     1,     4,     1,     1,     1,     1,
+       1,     2,     1,     2,     1,     2,     1,     3,     5,     2,
+       2,     1,     2,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+       2,     2,     2,     1,     3,     1,     1
+};
 
-#define YYFAIL		goto yyerrlab
 
-#define YYRECOVERING()  (!!yyerrstatus)
+enum { YYENOMEM = -2 };
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
-
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
 
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
 
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
 
+#define YYRECOVERING()  (!!yyerrstatus)
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
+
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -1038,80 +1148,65 @@ while (YYID (0))
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+# ifndef YY_LOCATION_PRINT
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+
+
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Kind, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
+
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yykind, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -1119,16 +1214,8 @@ yy_symbol_print (yyoutput, yytype, yyval
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1139,63 +1226,56 @@ yy_stack_print (yybottom, yytop)
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule)
 {
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
+      yy_symbol_print (stderr,
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)]);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1210,342 +1290,82 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
 
-#if YYERROR_VERBOSE
 
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
 
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
 
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
 static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  switch (yytype)
-    {
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
 
 /* The lookahead symbol.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
-
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+
+/*----------.
+| yyparse.  |
+`----------*/
+
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
-
-
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to xreallocate them elsewhere.  */
 
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize;
+
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
-
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -1553,133 +1373,147 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
   yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
-	/* Give user a chance to xreallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        yy_state_t *yyss1 = yyss;
+        YYSTYPE *yyvs1 = yyvs;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
+                    &yystacksize);
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yy_state_t *yyss1 = yyss;
+        union yyalloc *yyptr =
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      YYDPRINTF ((stderr, "Reading a token\n"));
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -1694,8 +1528,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -1707,13 +1541,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -1728,14 +1562,14 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -1748,420 +1582,367 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 4:
-
-/* Line 1455 of yacc.c  */
+  case 4:
 #line 210 "f-exp.y"
-    { write_exp_elt_opcode (pstate, OP_TYPE);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].tval));
+                        { write_exp_elt_opcode (pstate, OP_TYPE);
+			  write_exp_elt_type (pstate, (yyvsp[0].tval));
 			  write_exp_elt_opcode (pstate, OP_TYPE); }
+#line 1592 "f-exp.c.tmp"
     break;
 
   case 5:
-
-/* Line 1455 of yacc.c  */
 #line 216 "f-exp.y"
-    { }
+                        { }
+#line 1598 "f-exp.c.tmp"
     break;
 
   case 6:
-
-/* Line 1455 of yacc.c  */
 #line 221 "f-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND); }
+                        { write_exp_elt_opcode (pstate, UNOP_IND); }
+#line 1604 "f-exp.c.tmp"
     break;
 
   case 7:
-
-/* Line 1455 of yacc.c  */
 #line 225 "f-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+                        { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+#line 1610 "f-exp.c.tmp"
     break;
 
   case 8:
-
-/* Line 1455 of yacc.c  */
 #line 229 "f-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_NEG); }
+                        { write_exp_elt_opcode (pstate, UNOP_NEG); }
+#line 1616 "f-exp.c.tmp"
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
 #line 233 "f-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+                        { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+#line 1622 "f-exp.c.tmp"
     break;
 
   case 10:
-
-/* Line 1455 of yacc.c  */
 #line 237 "f-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_COMPLEMENT); }
+                        { write_exp_elt_opcode (pstate, UNOP_COMPLEMENT); }
+#line 1628 "f-exp.c.tmp"
     break;
 
   case 11:
-
-/* Line 1455 of yacc.c  */
 #line 241 "f-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+                        { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+#line 1634 "f-exp.c.tmp"
     break;
 
   case 12:
-
-/* Line 1455 of yacc.c  */
 #line 245 "f-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_FORTRAN_KIND); }
+                        { write_exp_elt_opcode (pstate, UNOP_FORTRAN_KIND); }
+#line 1640 "f-exp.c.tmp"
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
 #line 254 "f-exp.y"
-    { pstate->start_arglist (); }
+                        { pstate->start_arglist (); }
+#line 1646 "f-exp.c.tmp"
     break;
 
   case 14:
-
-/* Line 1455 of yacc.c  */
 #line 256 "f-exp.y"
-    { write_exp_elt_opcode (pstate,
+                        { write_exp_elt_opcode (pstate,
 						OP_F77_UNDETERMINED_ARGLIST);
 			  write_exp_elt_longcst (pstate,
 						 pstate->end_arglist ());
 			  write_exp_elt_opcode (pstate,
 					      OP_F77_UNDETERMINED_ARGLIST); }
+#line 1657 "f-exp.c.tmp"
     break;
 
   case 15:
-
-/* Line 1455 of yacc.c  */
 #line 265 "f-exp.y"
-    { write_exp_elt_opcode (pstate, (yyvsp[(1) - (4)].opcode)); }
+                        { write_exp_elt_opcode (pstate, (yyvsp[-3].opcode)); }
+#line 1663 "f-exp.c.tmp"
     break;
 
   case 16:
-
-/* Line 1455 of yacc.c  */
 #line 269 "f-exp.y"
-    { write_exp_elt_opcode (pstate, (yyvsp[(1) - (6)].opcode)); }
+                        { write_exp_elt_opcode (pstate, (yyvsp[-5].opcode)); }
+#line 1669 "f-exp.c.tmp"
     break;
 
   case 18:
-
-/* Line 1455 of yacc.c  */
 #line 276 "f-exp.y"
-    { pstate->arglist_len = 1; }
+                        { pstate->arglist_len = 1; }
+#line 1675 "f-exp.c.tmp"
     break;
 
   case 19:
-
-/* Line 1455 of yacc.c  */
 #line 280 "f-exp.y"
-    { pstate->arglist_len = 1; }
+                        { pstate->arglist_len = 1; }
+#line 1681 "f-exp.c.tmp"
     break;
 
   case 20:
-
-/* Line 1455 of yacc.c  */
 #line 284 "f-exp.y"
-    { pstate->arglist_len++; }
+                        { pstate->arglist_len++; }
+#line 1687 "f-exp.c.tmp"
     break;
 
   case 21:
-
-/* Line 1455 of yacc.c  */
 #line 290 "f-exp.y"
-    { write_exp_elt_opcode (pstate, OP_RANGE); 
+                        { write_exp_elt_opcode (pstate, OP_RANGE); 
 			  write_exp_elt_longcst (pstate, NONE_BOUND_DEFAULT);
 			  write_exp_elt_opcode (pstate, OP_RANGE); }
+#line 1695 "f-exp.c.tmp"
     break;
 
   case 22:
-
-/* Line 1455 of yacc.c  */
 #line 296 "f-exp.y"
-    { write_exp_elt_opcode (pstate, OP_RANGE);
+                        { write_exp_elt_opcode (pstate, OP_RANGE);
 			  write_exp_elt_longcst (pstate, HIGH_BOUND_DEFAULT);
 			  write_exp_elt_opcode (pstate, OP_RANGE); }
+#line 1703 "f-exp.c.tmp"
     break;
 
   case 23:
-
-/* Line 1455 of yacc.c  */
 #line 302 "f-exp.y"
-    { write_exp_elt_opcode (pstate, OP_RANGE);
+                        { write_exp_elt_opcode (pstate, OP_RANGE);
 			  write_exp_elt_longcst (pstate, LOW_BOUND_DEFAULT);
 			  write_exp_elt_opcode (pstate, OP_RANGE); }
+#line 1711 "f-exp.c.tmp"
     break;
 
   case 24:
-
-/* Line 1455 of yacc.c  */
 #line 308 "f-exp.y"
-    { write_exp_elt_opcode (pstate, OP_RANGE);
+                        { write_exp_elt_opcode (pstate, OP_RANGE);
 			  write_exp_elt_longcst (pstate, BOTH_BOUND_DEFAULT);
 			  write_exp_elt_opcode (pstate, OP_RANGE); }
+#line 1719 "f-exp.c.tmp"
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
 #line 314 "f-exp.y"
-    { }
+                        { }
+#line 1725 "f-exp.c.tmp"
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
 #line 318 "f-exp.y"
-    { write_exp_elt_opcode (pstate, OP_COMPLEX);
+                        { write_exp_elt_opcode (pstate, OP_COMPLEX);
 			  write_exp_elt_type (pstate,
 					      parse_f_type (pstate)
 					      ->builtin_complex_s16);
 			  write_exp_elt_opcode (pstate, OP_COMPLEX); }
+#line 1735 "f-exp.c.tmp"
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
 #line 326 "f-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CAST);
-			  write_exp_elt_type (pstate, (yyvsp[(2) - (4)].tval));
+                        { write_exp_elt_opcode (pstate, UNOP_CAST);
+			  write_exp_elt_type (pstate, (yyvsp[-2].tval));
 			  write_exp_elt_opcode (pstate, UNOP_CAST); }
+#line 1743 "f-exp.c.tmp"
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
 #line 332 "f-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-                          write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
+                        { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+                          write_exp_string (pstate, (yyvsp[0].sval));
                           write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 1751 "f-exp.c.tmp"
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
 #line 340 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+                        { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+#line 1757 "f-exp.c.tmp"
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
 #line 344 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EXP); }
+                        { write_exp_elt_opcode (pstate, BINOP_EXP); }
+#line 1763 "f-exp.c.tmp"
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
 #line 348 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MUL); }
+                        { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 1769 "f-exp.c.tmp"
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
 #line 352 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_DIV); }
+                        { write_exp_elt_opcode (pstate, BINOP_DIV); }
+#line 1775 "f-exp.c.tmp"
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
 #line 356 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ADD); }
+                        { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 1781 "f-exp.c.tmp"
     break;
 
   case 34:
-
-/* Line 1455 of yacc.c  */
 #line 360 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUB); }
+                        { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 1787 "f-exp.c.tmp"
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
 #line 364 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LSH); }
+                        { write_exp_elt_opcode (pstate, BINOP_LSH); }
+#line 1793 "f-exp.c.tmp"
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
 #line 368 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_RSH); }
+                        { write_exp_elt_opcode (pstate, BINOP_RSH); }
+#line 1799 "f-exp.c.tmp"
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
 #line 372 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+                        { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 1805 "f-exp.c.tmp"
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
 #line 376 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+                        { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 1811 "f-exp.c.tmp"
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
 #line 380 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+                        { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+#line 1817 "f-exp.c.tmp"
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
 #line 384 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+                        { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+#line 1823 "f-exp.c.tmp"
     break;
 
   case 41:
-
-/* Line 1455 of yacc.c  */
 #line 388 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LESS); }
+                        { write_exp_elt_opcode (pstate, BINOP_LESS); }
+#line 1829 "f-exp.c.tmp"
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
 #line 392 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GTR); }
+                        { write_exp_elt_opcode (pstate, BINOP_GTR); }
+#line 1835 "f-exp.c.tmp"
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
 #line 396 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 1841 "f-exp.c.tmp"
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
 #line 400 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 1847 "f-exp.c.tmp"
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
 #line 404 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 1853 "f-exp.c.tmp"
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
 #line 408 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 1859 "f-exp.c.tmp"
     break;
 
   case 47:
-
-/* Line 1455 of yacc.c  */
 #line 413 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 1865 "f-exp.c.tmp"
     break;
 
   case 48:
-
-/* Line 1455 of yacc.c  */
 #line 417 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 1871 "f-exp.c.tmp"
     break;
 
   case 49:
-
-/* Line 1455 of yacc.c  */
 #line 421 "f-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
-			  write_exp_elt_opcode (pstate, (yyvsp[(2) - (3)].opcode));
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
+			  write_exp_elt_opcode (pstate, (yyvsp[-1].opcode));
 			  write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY); }
+#line 1879 "f-exp.c.tmp"
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
 #line 427 "f-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val).type);
-			  write_exp_elt_longcst (pstate, (LONGEST) ((yyvsp[(1) - (1)].typed_val).val));
+                        { write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val).type);
+			  write_exp_elt_longcst (pstate, (LONGEST) ((yyvsp[0].typed_val).val));
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 1888 "f-exp.c.tmp"
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
 #line 434 "f-exp.y"
-    { YYSTYPE val;
-			  parse_number (pstate, (yyvsp[(1) - (1)].ssym).stoken.ptr,
-					(yyvsp[(1) - (1)].ssym).stoken.length, 0, &val);
+                        { YYSTYPE val;
+			  parse_number (pstate, (yyvsp[0].ssym).stoken.ptr,
+					(yyvsp[0].ssym).stoken.length, 0, &val);
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate, val.typed_val.type);
 			  write_exp_elt_longcst (pstate,
 						 (LONGEST)val.typed_val.val);
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 1901 "f-exp.c.tmp"
     break;
 
   case 52:
-
-/* Line 1455 of yacc.c  */
 #line 445 "f-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FLOAT);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val_float).type);
-			  write_exp_elt_floatcst (pstate, (yyvsp[(1) - (1)].typed_val_float).val);
+                        { write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val_float).type);
+			  write_exp_elt_floatcst (pstate, (yyvsp[0].typed_val_float).val);
 			  write_exp_elt_opcode (pstate, OP_FLOAT); }
+#line 1910 "f-exp.c.tmp"
     break;
 
   case 55:
-
-/* Line 1455 of yacc.c  */
 #line 458 "f-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
+                        { write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate,
 					      parse_f_type (pstate)
 					      ->builtin_integer);
-			  (yyvsp[(3) - (4)].tval) = check_typedef ((yyvsp[(3) - (4)].tval));
+			  (yyvsp[-1].tval) = check_typedef ((yyvsp[-1].tval));
 			  write_exp_elt_longcst (pstate,
-						 (LONGEST) TYPE_LENGTH ((yyvsp[(3) - (4)].tval)));
+						 (LONGEST) TYPE_LENGTH ((yyvsp[-1].tval)));
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 1923 "f-exp.c.tmp"
     break;
 
   case 56:
-
-/* Line 1455 of yacc.c  */
 #line 469 "f-exp.y"
-    { write_exp_elt_opcode (pstate, OP_BOOL);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].lval));
+                        { write_exp_elt_opcode (pstate, OP_BOOL);
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].lval));
 			  write_exp_elt_opcode (pstate, OP_BOOL);
 			}
+#line 1932 "f-exp.c.tmp"
     break;
 
   case 57:
-
-/* Line 1455 of yacc.c  */
 #line 476 "f-exp.y"
-    {
+                        {
 			  write_exp_elt_opcode (pstate, OP_STRING);
-			  write_exp_string (pstate, (yyvsp[(1) - (1)].sval));
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, OP_STRING);
 			}
+#line 1942 "f-exp.c.tmp"
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
 #line 484 "f-exp.y"
-    { struct block_symbol sym = (yyvsp[(1) - (1)].ssym).sym;
+                        { struct block_symbol sym = (yyvsp[0].ssym).sym;
 
 			  if (sym.symbol)
 			    {
@@ -2176,7 +1957,7 @@ yyreduce:
 			  else
 			    {
 			      struct bound_minimal_symbol msymbol;
-			      std::string arg = copy_name ((yyvsp[(1) - (1)].ssym).stoken);
+			      std::string arg = copy_name ((yyvsp[0].ssym).stoken);
 
 			      msymbol =
 				lookup_bound_minimal_symbol (arg.c_str ());
@@ -2189,17 +1970,16 @@ yyreduce:
 				       arg.c_str ());
 			    }
 			}
+#line 1975 "f-exp.c.tmp"
     break;
 
   case 61:
-
-/* Line 1455 of yacc.c  */
 #line 520 "f-exp.y"
-    {
+                {
 		  /* This is where the interesting stuff happens.  */
 		  int done = 0;
 		  int array_size;
-		  struct type *follow_type = (yyvsp[(1) - (2)].tval);
+		  struct type *follow_type = (yyvsp[-1].tval);
 		  struct type *range_type;
 		  
 		  while (!done)
@@ -2243,338 +2023,281 @@ yyreduce:
 		      }
 		  (yyval.tval) = follow_type;
 		}
+#line 2028 "f-exp.c.tmp"
     break;
 
   case 62:
-
-/* Line 1455 of yacc.c  */
 #line 571 "f-exp.y"
-    { type_stack->push (tp_pointer); (yyval.voidval) = 0; }
+                        { type_stack->push (tp_pointer); (yyval.voidval) = 0; }
+#line 2034 "f-exp.c.tmp"
     break;
 
   case 63:
-
-/* Line 1455 of yacc.c  */
 #line 573 "f-exp.y"
-    { type_stack->push (tp_pointer); (yyval.voidval) = (yyvsp[(2) - (2)].voidval); }
+                        { type_stack->push (tp_pointer); (yyval.voidval) = (yyvsp[0].voidval); }
+#line 2040 "f-exp.c.tmp"
     break;
 
   case 64:
-
-/* Line 1455 of yacc.c  */
 #line 575 "f-exp.y"
-    { type_stack->push (tp_reference); (yyval.voidval) = 0; }
+                        { type_stack->push (tp_reference); (yyval.voidval) = 0; }
+#line 2046 "f-exp.c.tmp"
     break;
 
   case 65:
-
-/* Line 1455 of yacc.c  */
 #line 577 "f-exp.y"
-    { type_stack->push (tp_reference); (yyval.voidval) = (yyvsp[(2) - (2)].voidval); }
+                        { type_stack->push (tp_reference); (yyval.voidval) = (yyvsp[0].voidval); }
+#line 2052 "f-exp.c.tmp"
     break;
 
   case 67:
-
-/* Line 1455 of yacc.c  */
 #line 582 "f-exp.y"
-    { (yyval.voidval) = (yyvsp[(2) - (3)].voidval); }
+                        { (yyval.voidval) = (yyvsp[-1].voidval); }
+#line 2058 "f-exp.c.tmp"
     break;
 
   case 68:
-
-/* Line 1455 of yacc.c  */
 #line 584 "f-exp.y"
-    { push_kind_type ((yyvsp[(4) - (5)].typed_val).val, (yyvsp[(4) - (5)].typed_val).type); }
+                        { push_kind_type ((yyvsp[-1].typed_val).val, (yyvsp[-1].typed_val).type); }
+#line 2064 "f-exp.c.tmp"
     break;
 
   case 69:
-
-/* Line 1455 of yacc.c  */
 #line 586 "f-exp.y"
-    { push_kind_type ((yyvsp[(2) - (2)].typed_val).val, (yyvsp[(2) - (2)].typed_val).type); }
+                        { push_kind_type ((yyvsp[0].typed_val).val, (yyvsp[0].typed_val).type); }
+#line 2070 "f-exp.c.tmp"
     break;
 
   case 70:
-
-/* Line 1455 of yacc.c  */
 #line 588 "f-exp.y"
-    { type_stack->push (tp_function); }
+                        { type_stack->push (tp_function); }
+#line 2076 "f-exp.c.tmp"
     break;
 
   case 71:
-
-/* Line 1455 of yacc.c  */
 #line 590 "f-exp.y"
-    { type_stack->push (tp_function); }
+                        { type_stack->push (tp_function); }
+#line 2082 "f-exp.c.tmp"
     break;
 
   case 72:
-
-/* Line 1455 of yacc.c  */
 #line 594 "f-exp.y"
-    { (yyval.voidval) = 0; }
+                        { (yyval.voidval) = 0; }
+#line 2088 "f-exp.c.tmp"
     break;
 
   case 73:
-
-/* Line 1455 of yacc.c  */
 #line 596 "f-exp.y"
-    { xfree ((yyvsp[(2) - (3)].tvec)); (yyval.voidval) = 0; }
+                        { xfree ((yyvsp[-1].tvec)); (yyval.voidval) = 0; }
+#line 2094 "f-exp.c.tmp"
     break;
 
   case 74:
-
-/* Line 1455 of yacc.c  */
 #line 601 "f-exp.y"
-    { (yyval.tval) = (yyvsp[(1) - (1)].tsym).type; }
+                        { (yyval.tval) = (yyvsp[0].tsym).type; }
+#line 2100 "f-exp.c.tmp"
     break;
 
   case 75:
-
-/* Line 1455 of yacc.c  */
 #line 603 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_integer; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_integer; }
+#line 2106 "f-exp.c.tmp"
     break;
 
   case 76:
-
-/* Line 1455 of yacc.c  */
 #line 605 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_integer_s2; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_integer_s2; }
+#line 2112 "f-exp.c.tmp"
     break;
 
   case 77:
-
-/* Line 1455 of yacc.c  */
 #line 607 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_character; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_character; }
+#line 2118 "f-exp.c.tmp"
     break;
 
   case 78:
-
-/* Line 1455 of yacc.c  */
 #line 609 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_logical_s8; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_logical_s8; }
+#line 2124 "f-exp.c.tmp"
     break;
 
   case 79:
-
-/* Line 1455 of yacc.c  */
 #line 611 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_logical; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_logical; }
+#line 2130 "f-exp.c.tmp"
     break;
 
   case 80:
-
-/* Line 1455 of yacc.c  */
 #line 613 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_logical_s2; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_logical_s2; }
+#line 2136 "f-exp.c.tmp"
     break;
 
   case 81:
-
-/* Line 1455 of yacc.c  */
 #line 615 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_logical_s1; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_logical_s1; }
+#line 2142 "f-exp.c.tmp"
     break;
 
   case 82:
-
-/* Line 1455 of yacc.c  */
 #line 617 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_real; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_real; }
+#line 2148 "f-exp.c.tmp"
     break;
 
   case 83:
-
-/* Line 1455 of yacc.c  */
 #line 619 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_real_s8; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_real_s8; }
+#line 2154 "f-exp.c.tmp"
     break;
 
   case 84:
-
-/* Line 1455 of yacc.c  */
 #line 621 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_real_s16; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_real_s16; }
+#line 2160 "f-exp.c.tmp"
     break;
 
   case 85:
-
-/* Line 1455 of yacc.c  */
 #line 623 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s8; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s8; }
+#line 2166 "f-exp.c.tmp"
     break;
 
   case 86:
-
-/* Line 1455 of yacc.c  */
 #line 625 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s8; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s8; }
+#line 2172 "f-exp.c.tmp"
     break;
 
   case 87:
-
-/* Line 1455 of yacc.c  */
 #line 627 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s16; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s16; }
+#line 2178 "f-exp.c.tmp"
     break;
 
   case 88:
-
-/* Line 1455 of yacc.c  */
 #line 629 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s32; }
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s32; }
+#line 2184 "f-exp.c.tmp"
     break;
 
   case 89:
-
-/* Line 1455 of yacc.c  */
 #line 631 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_real;}
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_real;}
+#line 2190 "f-exp.c.tmp"
     break;
 
   case 90:
-
-/* Line 1455 of yacc.c  */
 #line 633 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_real_s8;}
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_real_s8;}
+#line 2196 "f-exp.c.tmp"
     break;
 
   case 91:
-
-/* Line 1455 of yacc.c  */
 #line 635 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s8;}
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s8;}
+#line 2202 "f-exp.c.tmp"
     break;
 
   case 92:
-
-/* Line 1455 of yacc.c  */
 #line 637 "f-exp.y"
-    { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s16;}
+                        { (yyval.tval) = parse_f_type (pstate)->builtin_complex_s16;}
+#line 2208 "f-exp.c.tmp"
     break;
 
   case 93:
-
-/* Line 1455 of yacc.c  */
 #line 642 "f-exp.y"
-    { (yyval.tvec) = (struct type **) xmalloc (sizeof (struct type *) * 2);
+                { (yyval.tvec) = (struct type **) xmalloc (sizeof (struct type *) * 2);
 		  (yyval.ivec)[0] = 1;	/* Number of types in vector */
-		  (yyval.tvec)[1] = (yyvsp[(1) - (1)].tval);
+		  (yyval.tvec)[1] = (yyvsp[0].tval);
 		}
+#line 2217 "f-exp.c.tmp"
     break;
 
   case 94:
-
-/* Line 1455 of yacc.c  */
 #line 647 "f-exp.y"
-    { int len = sizeof (struct type *) * (++((yyvsp[(1) - (3)].ivec)[0]) + 1);
-		  (yyval.tvec) = (struct type **) xrealloc ((char *) (yyvsp[(1) - (3)].tvec), len);
-		  (yyval.tvec)[(yyval.ivec)[0]] = (yyvsp[(3) - (3)].tval);
+                { int len = sizeof (struct type *) * (++((yyvsp[-2].ivec)[0]) + 1);
+		  (yyval.tvec) = (struct type **) xrealloc ((char *) (yyvsp[-2].tvec), len);
+		  (yyval.tvec)[(yyval.ivec)[0]] = (yyvsp[0].tval);
 		}
+#line 2226 "f-exp.c.tmp"
     break;
 
   case 95:
-
-/* Line 1455 of yacc.c  */
 #line 654 "f-exp.y"
-    {  (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+                {  (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 2232 "f-exp.c.tmp"
     break;
 
 
+#line 2236 "f-exp.c.tmp"
 
-/* Line 1455 of yacc.c  */
-#line 2490 "f-exp.c.tmp"
       default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -2586,14 +2309,12 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -2606,39 +2327,42 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -2651,6 +2375,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -2658,7 +2383,8 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+
+#if !defined yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2668,35 +2394,37 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
 
+  return yyresult;
+}
 
-/* Line 1675 of yacc.c  */
 #line 667 "f-exp.y"
 
 
@@ -3402,4 +3130,3 @@ yyerror (const char *msg)
 
   error (_("A %s in expression, near `%s'."), msg, pstate->lexptr);
 }
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-exp.y ./gdb/f-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-exp.y	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/f-exp.y	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 
 /* YACC parser for Fortran expressions, for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    Contributed by Motorola.  Adapted from the C parser by Farooq Butt
    (fmbutt@engage.sps.mot.com).
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/filename-seen-cache.c ./gdb/filename-seen-cache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/filename-seen-cache.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/filename-seen-cache.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Filename-seen cache for the GNU debugger, GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/filename-seen-cache.h ./gdb/filename-seen-cache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/filename-seen-cache.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/filename-seen-cache.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Filename-seen cache for the GNU debugger, GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/filesystem.c ./gdb/filesystem.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/filesystem.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/filesystem.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle different target file systems for GDB, the GNU Debugger.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -76,8 +76,9 @@ is \"%s\".\n"),
 		      value);
 }
 
+void _initialize_filesystem ();
 void
-_initialize_filesystem (void)
+_initialize_filesystem ()
 {
   add_setshow_enum_cmd ("target-file-system-kind",
 			class_files,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/filesystem.h ./gdb/filesystem.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/filesystem.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/filesystem.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Handle different target file systems for GDB, the GNU Debugger.
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/findcmd.c ./gdb/findcmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/findcmd.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/findcmd.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* The find command.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -280,8 +280,9 @@ find_command (const char *args, int from
 		     found_count > 1 ? "s" : "");
 }
 
+void _initialize_mem_search ();
 void
-_initialize_mem_search (void)
+_initialize_mem_search ()
 {
   add_cmd ("find", class_vars, find_command, _("\
 Search memory for a sequence of bytes.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/findvar.c ./gdb/findvar.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/findvar.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/findvar.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Find a variable's value in memory, for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -31,7 +31,7 @@
 #include "block.h"
 #include "objfiles.h"
 #include "language.h"
-#include "dwarf2loc.h"
+#include "dwarf2/loc.h"
 #include "gdbsupport/selftest.h"
 
 /* Basic byte-swapping routines.  All 'extract' functions return a
@@ -153,7 +153,7 @@ extract_long_unsigned_integer (const gdb
 CORE_ADDR
 extract_typed_address (const gdb_byte *buf, struct type *type)
 {
-  if (TYPE_CODE (type) != TYPE_CODE_PTR && !TYPE_IS_REFERENCE (type))
+  if (type->code () != TYPE_CODE_PTR && !TYPE_IS_REFERENCE (type))
     internal_error (__FILE__, __LINE__,
 		    _("extract_typed_address: "
 		    "type is not a pointer or reference"));
@@ -206,7 +206,7 @@ template void store_integer (gdb_byte *a
 void
 store_typed_address (gdb_byte *buf, struct type *type, CORE_ADDR addr)
 {
-  if (TYPE_CODE (type) != TYPE_CODE_PTR && !TYPE_IS_REFERENCE (type))
+  if (type->code () != TYPE_CODE_PTR && !TYPE_IS_REFERENCE (type))
     internal_error (__FILE__, __LINE__,
 		    _("store_typed_address: "
 		    "type is not a pointer or reference"));
@@ -257,7 +257,7 @@ copy_integer_to_size (gdb_byte *dest, in
 
 /* Return a `value' with the contents of (virtual or cooked) register
    REGNUM as found in the specified FRAME.  The register's type is
-   determined by register_type().  */
+   determined by register_type ().  */
 
 struct value *
 value_of_register (int regnum, struct frame_info *frame)
@@ -277,7 +277,7 @@ value_of_register (int regnum, struct fr
 
 /* Return a `value' with the contents of (virtual or cooked) register
    REGNUM as found in the specified FRAME.  The register's type is
-   determined by register_type().  The value is not fetched.  */
+   determined by register_type ().  The value is not fetched.  */
 
 struct value *
 value_of_register_lazy (struct frame_info *frame, int regnum)
@@ -292,6 +292,14 @@ value_of_register_lazy (struct frame_inf
 
   next_frame = get_next_frame_sentinel_okay (frame);
 
+  /* In some cases NEXT_FRAME may not have a valid frame-id yet.  This can
+     happen if we end up trying to unwind a register as part of the frame
+     sniffer.  The only time that we get here without a valid frame-id is
+     if NEXT_FRAME is an inline frame.  If this is the case then we can
+     avoid getting into trouble here by skipping past the inline frames.  */
+  while (get_frame_type (next_frame) == INLINE_FRAME)
+    next_frame = get_next_frame_sentinel_okay (next_frame);
+
   /* We should have a valid next frame.  */
   gdb_assert (frame_id_p (get_frame_id (next_frame)));
 
@@ -578,12 +586,12 @@ get_hosting_frame (struct symbol *var, c
   return frame;
 }
 
-/* A default implementation for the "la_read_var_value" hook in
-   the language vector which should work in most situations.  */
+/* See language.h.  */
 
 struct value *
-default_read_var_value (struct symbol *var, const struct block *var_block,
-			struct frame_info *frame)
+language_defn::read_var_value (struct symbol *var,
+			       const struct block *var_block,
+			       struct frame_info *frame) const
 {
   struct value *v;
   struct type *type = SYMBOL_TYPE (var);
@@ -615,7 +623,7 @@ default_read_var_value (struct symbol *v
       if (is_dynamic_type (type))
 	{
 	  /* Value is a constant byte-sequence and needs no memory access.  */
-	  type = resolve_dynamic_type (type, NULL, /* Unused address.  */ 0);
+	  type = resolve_dynamic_type (type, {}, /* Unused address.  */ 0);
 	}
       /* Put the constant back in target format. */
       v = allocate_value (type);
@@ -647,7 +655,7 @@ default_read_var_value (struct symbol *v
       if (is_dynamic_type (type))
 	{
 	  /* Value is a constant byte-sequence and needs no memory access.  */
-	  type = resolve_dynamic_type (type, NULL, /* Unused address.  */ 0);
+	  type = resolve_dynamic_type (type, {}, /* Unused address.  */ 0);
 	}
       v = allocate_value (type);
       memcpy (value_contents_raw (v), SYMBOL_VALUE_BYTES (var),
@@ -788,7 +796,7 @@ default_read_var_value (struct symbol *v
 
     case LOC_OPTIMIZED_OUT:
       if (is_dynamic_type (type))
-	type = resolve_dynamic_type (type, NULL, /* Unused address.  */ 0);
+	type = resolve_dynamic_type (type, {}, /* Unused address.  */ 0);
       return allocate_optimized_out_value (type);
 
     default:
@@ -801,18 +809,17 @@ default_read_var_value (struct symbol *v
   return v;
 }
 
-/* Calls VAR's language la_read_var_value hook with the given arguments.  */
+/* Calls VAR's language read_var_value hook with the given arguments.  */
 
 struct value *
 read_var_value (struct symbol *var, const struct block *var_block,
 		struct frame_info *frame)
 {
-  const struct language_defn *lang = language_def (SYMBOL_LANGUAGE (var));
+  const struct language_defn *lang = language_def (var->language ());
 
   gdb_assert (lang != NULL);
-  gdb_assert (lang->la_read_var_value != NULL);
 
-  return lang->la_read_var_value (var, var_block, frame);
+  return lang->read_var_value (var, var_block, frame);
 }
 
 /* Install default attributes for register values.  */
@@ -1088,8 +1095,9 @@ copy_integer_to_size_test ()
 
 #endif
 
+void _initialize_findvar ();
 void
-_initialize_findvar (void)
+_initialize_findvar ()
 {
 #if GDB_SELF_TEST
   selftests::register_test
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-lang.c ./gdb/f-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-lang.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/f-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Fortran language support routines for GDB, the GNU debugger.
 
-   Copyright (C) 1993-2020 Free Software Foundation, Inc.
+   Copyright (C) 1993-2021 Free Software Foundation, Inc.
 
    Contributed by Motorola.  Adapted from the C parser by Farooq Butt
    (fmbutt@engage.sps.mot.com).
@@ -41,10 +41,6 @@
 
 /* Local functions */
 
-static void f_printchar (int c, struct type *type, struct ui_file * stream);
-static void f_emit_char (int c, struct type *type,
-			 struct ui_file * stream, int quoter);
-
 /* Return the encoding that should be used for the character type
    TYPE.  */
 
@@ -72,53 +68,6 @@ f_get_encoding (struct type *type)
   return encoding;
 }
 
-/* Print the character C on STREAM as part of the contents of a literal
-   string whose delimiter is QUOTER.  Note that that format for printing
-   characters and strings is language specific.
-   FIXME:  This is a copy of the same function from c-exp.y.  It should
-   be replaced with a true F77 version.  */
-
-static void
-f_emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
-{
-  const char *encoding = f_get_encoding (type);
-
-  generic_emit_char (c, type, stream, quoter, encoding);
-}
-
-/* Implementation of la_printchar.  */
-
-static void
-f_printchar (int c, struct type *type, struct ui_file *stream)
-{
-  fputs_filtered ("'", stream);
-  LA_EMIT_CHAR (c, type, stream, '\'');
-  fputs_filtered ("'", stream);
-}
-
-/* Print the character string STRING, printing at most LENGTH characters.
-   Printing stops early if the number hits print_max; repeat counts
-   are printed as appropriate.  Print ellipses at the end if we
-   had to stop before printing LENGTH characters, or if FORCE_ELLIPSES.
-   FIXME:  This is a copy of the same function from c-exp.y.  It should
-   be replaced with a true F77 version.  */
-
-static void
-f_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string,
-	    unsigned int length, const char *encoding, int force_ellipses,
-	    const struct value_print_options *options)
-{
-  const char *type_encoding = f_get_encoding (type);
-
-  if (TYPE_LENGTH (type) == 4)
-    fputs_filtered ("4_", stream);
-
-  if (!encoding || !*encoding)
-    encoding = type_encoding;
-
-  generic_printstr (stream, type, string, length, encoding,
-		    force_ellipses, '\'', 0, options);
-}
 
 
 /* Table of operators and their precedences for printing expressions.  */
@@ -165,83 +114,6 @@ enum f_primitive_types {
   nr_f_primitive_types
 };
 
-static void
-f_language_arch_info (struct gdbarch *gdbarch,
-		      struct language_arch_info *lai)
-{
-  const struct builtin_f_type *builtin = builtin_f_type (gdbarch);
-
-  lai->string_char_type = builtin->builtin_character;
-  lai->primitive_type_vector
-    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_f_primitive_types + 1,
-                              struct type *);
-
-  lai->primitive_type_vector [f_primitive_type_character]
-    = builtin->builtin_character;
-  lai->primitive_type_vector [f_primitive_type_logical]
-    = builtin->builtin_logical;
-  lai->primitive_type_vector [f_primitive_type_logical_s1]
-    = builtin->builtin_logical_s1;
-  lai->primitive_type_vector [f_primitive_type_logical_s2]
-    = builtin->builtin_logical_s2;
-  lai->primitive_type_vector [f_primitive_type_logical_s8]
-    = builtin->builtin_logical_s8;
-  lai->primitive_type_vector [f_primitive_type_real]
-    = builtin->builtin_real;
-  lai->primitive_type_vector [f_primitive_type_real_s8]
-    = builtin->builtin_real_s8;
-  lai->primitive_type_vector [f_primitive_type_real_s16]
-    = builtin->builtin_real_s16;
-  lai->primitive_type_vector [f_primitive_type_complex_s8]
-    = builtin->builtin_complex_s8;
-  lai->primitive_type_vector [f_primitive_type_complex_s16]
-    = builtin->builtin_complex_s16;
-  lai->primitive_type_vector [f_primitive_type_void]
-    = builtin->builtin_void;
-
-  lai->bool_type_symbol = "logical";
-  lai->bool_type_default = builtin->builtin_logical_s2;
-}
-
-/* Remove the modules separator :: from the default break list.  */
-
-static const char *
-f_word_break_characters (void)
-{
-  static char *retval;
-
-  if (!retval)
-    {
-      char *s;
-
-      retval = xstrdup (default_word_break_characters ());
-      s = strchr (retval, ':');
-      if (s)
-	{
-	  char *last_char = &s[strlen (s) - 1];
-
-	  *s = *last_char;
-	  *last_char = 0;
-	}
-    }
-  return retval;
-}
-
-/* Consider the modules separator :: as a valid symbol name character
-   class.  */
-
-static void
-f_collect_symbol_completion_matches (completion_tracker &tracker,
-				     complete_symbol_mode mode,
-				     symbol_name_match_type compare_name,
-				     const char *text, const char *word,
-				     enum type_code code)
-{
-  default_collect_symbol_completion_matches_break_on (tracker, mode,
-						      compare_name,
-						      text, word, ":", code);
-}
-
 /* Special expression evaluation cases for Fortran.  */
 
 static struct value *
@@ -264,11 +136,11 @@ evaluate_subexp_f (struct type *expect_t
       return evaluate_subexp_standard (expect_type, exp, pos, noside);
 
     case UNOP_ABS:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
       type = value_type (arg1);
-      switch (TYPE_CODE (type))
+      switch (type->code ())
 	{
 	case TYPE_CODE_FLT:
 	  {
@@ -287,14 +159,14 @@ evaluate_subexp_f (struct type *expect_t
       error (_("ABS of type %s not supported"), TYPE_SAFE_NAME (type));
 
     case BINOP_MOD:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
       type = value_type (arg1);
-      if (TYPE_CODE (type) != TYPE_CODE (value_type (arg2)))
+      if (type->code () != value_type (arg2)->code ())
 	error (_("non-matching types for parameters to MOD ()"));
-      switch (TYPE_CODE (type))
+      switch (type->code ())
 	{
 	case TYPE_CODE_FLT:
 	  {
@@ -321,11 +193,11 @@ evaluate_subexp_f (struct type *expect_t
 
     case UNOP_FORTRAN_CEILING:
       {
-	arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	arg1 = evaluate_subexp (nullptr, exp, pos, noside);
 	if (noside == EVAL_SKIP)
 	  return eval_skip_value (exp);
 	type = value_type (arg1);
-	if (TYPE_CODE (type) != TYPE_CODE_FLT)
+	if (type->code () != TYPE_CODE_FLT)
 	  error (_("argument to CEILING must be of type float"));
 	double val
 	  = target_float_to_host_double (value_contents (arg1),
@@ -336,11 +208,11 @@ evaluate_subexp_f (struct type *expect_t
 
     case UNOP_FORTRAN_FLOOR:
       {
-	arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	arg1 = evaluate_subexp (nullptr, exp, pos, noside);
 	if (noside == EVAL_SKIP)
 	  return eval_skip_value (exp);
 	type = value_type (arg1);
-	if (TYPE_CODE (type) != TYPE_CODE_FLT)
+	if (type->code () != TYPE_CODE_FLT)
 	  error (_("argument to FLOOR must be of type float"));
 	double val
 	  = target_float_to_host_double (value_contents (arg1),
@@ -351,15 +223,15 @@ evaluate_subexp_f (struct type *expect_t
 
     case BINOP_FORTRAN_MODULO:
       {
-	arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	arg1 = evaluate_subexp (nullptr, exp, pos, noside);
 	arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
 	if (noside == EVAL_SKIP)
 	  return eval_skip_value (exp);
 	type = value_type (arg1);
-	if (TYPE_CODE (type) != TYPE_CODE (value_type (arg2)))
+	if (type->code () != value_type (arg2)->code ())
 	  error (_("non-matching types for parameters to MODULO ()"));
         /* MODULO(A, P) = A - FLOOR (A / P) * P */
-	switch (TYPE_CODE (type))
+	switch (type->code ())
 	  {
 	  case TYPE_CODE_INT:
 	    {
@@ -388,7 +260,7 @@ evaluate_subexp_f (struct type *expect_t
       }
 
     case BINOP_FORTRAN_CMPLX:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
       if (noside == EVAL_SKIP)
 	return eval_skip_value (exp);
@@ -399,7 +271,7 @@ evaluate_subexp_f (struct type *expect_t
       arg1 = evaluate_subexp (NULL, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
       type = value_type (arg1);
 
-      switch (TYPE_CODE (type))
+      switch (type->code ())
         {
           case TYPE_CODE_STRUCT:
           case TYPE_CODE_UNION:
@@ -412,24 +284,13 @@ evaluate_subexp_f (struct type *expect_t
         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
 				   TYPE_LENGTH (type));
       return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
-				 TYPE_LENGTH (TYPE_TARGET_TYPE(type)));
+				 TYPE_LENGTH (TYPE_TARGET_TYPE (type)));
     }
 
   /* Should be unreachable.  */
   return nullptr;
 }
 
-/* Return true if TYPE is a string.  */
-
-static bool
-f_is_string_type_p (struct type *type)
-{
-  type = check_typedef (type);
-  return (TYPE_CODE (type) == TYPE_CODE_STRING
-	  || (TYPE_CODE (type) == TYPE_CODE_ARRAY
-	      && TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CHAR));
-}
-
 /* Special expression lengths for Fortran.  */
 
 static void
@@ -628,7 +489,9 @@ static const struct exp_descriptor exp_d
   evaluate_subexp_f
 };
 
-extern const struct language_defn f_language_defn =
+/* Constant data that describes the Fortran language.  */
+
+extern const struct language_data f_language_data =
 {
   "fortran",
   "Fortran",
@@ -639,50 +502,226 @@ extern const struct language_defn f_lang
   macro_expansion_no,
   f_extensions,
   &exp_descriptor_f,
-  f_parse,			/* parser */
-  null_post_parser,
-  f_printchar,			/* Print character constant */
-  f_printstr,			/* function to print string constant */
-  f_emit_char,			/* Function to print a single character */
-  f_print_type,			/* Print a type using appropriate syntax */
-  f_print_typedef,		/* Print a typedef using appropriate syntax */
-  f_val_print,			/* Print a value using appropriate syntax */
-  c_value_print,		/* FIXME */
-  default_read_var_value,	/* la_read_var_value */
-  NULL,				/* Language specific skip_trampoline */
   NULL,                    	/* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
-  cp_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-
-  /* We could support demangling here to provide module namespaces
-     also for inferiors with only minimal symbol table (ELF symbols).
-     Just the mangling standard is not standardized across compilers
-     and there is no DW_AT_producer available for inferiors with only
-     the ELF symbols to check the mangling kind.  */
-  NULL,				/* Language specific symbol demangler */
-  NULL,
-  NULL,				/* Language specific
-				   class_name_from_physname */
   f_op_print_tab,		/* expression operators for printing */
   0,				/* arrays are first-class (not c-style) */
   1,				/* String lower bound */
-  f_word_break_characters,
-  f_collect_symbol_completion_matches,
-  f_language_arch_info,
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  cp_get_symbol_name_matcher,	/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  cp_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  f_is_string_type_p,
   "(...)"			/* la_struct_too_deep_ellipsis */
 };
 
+/* Class representing the Fortran language.  */
+
+class f_language : public language_defn
+{
+public:
+  f_language ()
+    : language_defn (language_fortran, f_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    const struct builtin_f_type *builtin = builtin_f_type (gdbarch);
+
+    lai->string_char_type = builtin->builtin_character;
+    lai->primitive_type_vector
+      = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_f_primitive_types + 1,
+				struct type *);
+
+    lai->primitive_type_vector [f_primitive_type_character]
+      = builtin->builtin_character;
+    lai->primitive_type_vector [f_primitive_type_logical]
+      = builtin->builtin_logical;
+    lai->primitive_type_vector [f_primitive_type_logical_s1]
+      = builtin->builtin_logical_s1;
+    lai->primitive_type_vector [f_primitive_type_logical_s2]
+      = builtin->builtin_logical_s2;
+    lai->primitive_type_vector [f_primitive_type_logical_s8]
+      = builtin->builtin_logical_s8;
+    lai->primitive_type_vector [f_primitive_type_real]
+      = builtin->builtin_real;
+    lai->primitive_type_vector [f_primitive_type_real_s8]
+      = builtin->builtin_real_s8;
+    lai->primitive_type_vector [f_primitive_type_real_s16]
+      = builtin->builtin_real_s16;
+    lai->primitive_type_vector [f_primitive_type_complex_s8]
+      = builtin->builtin_complex_s8;
+    lai->primitive_type_vector [f_primitive_type_complex_s16]
+      = builtin->builtin_complex_s16;
+    lai->primitive_type_vector [f_primitive_type_void]
+      = builtin->builtin_void;
+
+    lai->bool_type_symbol = "logical";
+    lai->bool_type_default = builtin->builtin_logical_s2;
+  }
+
+  /* See language.h.  */
+  unsigned int search_name_hash (const char *name) const override
+  {
+    return cp_search_name_hash (name);
+  }
+
+  /* See language.h.  */
+
+  char *demangle (const char *mangled, int options) const override
+  {
+      /* We could support demangling here to provide module namespaces
+	 also for inferiors with only minimal symbol table (ELF symbols).
+	 Just the mangling standard is not standardized across compilers
+	 and there is no DW_AT_producer available for inferiors with only
+	 the ELF symbols to check the mangling kind.  */
+    return nullptr;
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    f_print_type (type, varstring, stream, show, level, flags);
+  }
+
+  /* See language.h.  This just returns default set of word break
+     characters but with the modules separator `::' removed.  */
+
+  const char *word_break_characters (void) const override
+  {
+    static char *retval;
+
+    if (!retval)
+      {
+	char *s;
+
+	retval = xstrdup (language_defn::word_break_characters ());
+	s = strchr (retval, ':');
+	if (s)
+	  {
+	    char *last_char = &s[strlen (s) - 1];
+
+	    *s = *last_char;
+	    *last_char = 0;
+	  }
+      }
+    return retval;
+  }
+
+
+  /* See language.h.  */
+
+  void collect_symbol_completion_matches (completion_tracker &tracker,
+					  complete_symbol_mode mode,
+					  symbol_name_match_type name_match_type,
+					  const char *text, const char *word,
+					  enum type_code code) const override
+  {
+    /* Consider the modules separator :: as a valid symbol name character
+       class.  */
+    default_collect_symbol_completion_matches_break_on (tracker, mode,
+							name_match_type,
+							text, word, ":",
+							code);
+  }
+
+  /* See language.h.  */
+
+  void value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const override
+  {
+    return f_value_print_inner (val, stream, recurse, options);
+  }
+
+  /* See language.h.  */
+
+  struct block_symbol lookup_symbol_nonlocal
+	(const char *name, const struct block *block,
+	 const domain_enum domain) const override
+  {
+    return cp_lookup_symbol_nonlocal (this, name, block, domain);
+  }
+
+  /* See language.h.  */
+
+  int parser (struct parser_state *ps) const override
+  {
+    return f_parse (ps);
+  }
+
+  /* See language.h.  */
+
+  void emitchar (int ch, struct type *chtype,
+		 struct ui_file *stream, int quoter) const override
+  {
+    const char *encoding = f_get_encoding (chtype);
+    generic_emit_char (ch, chtype, stream, quoter, encoding);
+  }
+
+  /* See language.h.  */
+
+  void printchar (int ch, struct type *chtype,
+		  struct ui_file *stream) const override
+  {
+    fputs_filtered ("'", stream);
+    LA_EMIT_CHAR (ch, chtype, stream, '\'');
+    fputs_filtered ("'", stream);
+  }
+
+  /* See language.h.  */
+
+  void printstr (struct ui_file *stream, struct type *elttype,
+		 const gdb_byte *string, unsigned int length,
+		 const char *encoding, int force_ellipses,
+		 const struct value_print_options *options) const override
+  {
+    const char *type_encoding = f_get_encoding (elttype);
+
+    if (TYPE_LENGTH (elttype) == 4)
+      fputs_filtered ("4_", stream);
+
+    if (!encoding || !*encoding)
+      encoding = type_encoding;
+
+    generic_printstr (stream, elttype, string, length, encoding,
+		      force_ellipses, '\'', 0, options);
+  }
+
+  /* See language.h.  */
+
+  void print_typedef (struct type *type, struct symbol *new_symbol,
+		      struct ui_file *stream) const override
+  {
+    f_print_typedef (type, new_symbol, stream);
+  }
+
+  /* See language.h.  */
+
+  bool is_string_type_p (struct type *type) const override
+  {
+    type = check_typedef (type);
+    return (type->code () == TYPE_CODE_STRING
+	    || (type->code () == TYPE_CODE_ARRAY
+		&& TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_CHAR));
+  }
+
+protected:
+
+  /* See language.h.  */
+
+  symbol_name_matcher_ftype *get_symbol_name_matcher_inner
+	(const lookup_name_info &lookup_name) const override
+  {
+    return cp_get_symbol_name_matcher (lookup_name);
+  }
+};
+
+/* Single instance of the Fortran language class.  */
+
+static f_language f_language_defn;
+
 static void *
 build_fortran_types (struct gdbarch *gdbarch)
 {
@@ -741,14 +780,16 @@ build_fortran_types (struct gdbarch *gdb
       = arch_type (gdbarch, TYPE_CODE_ERROR, 128, "real*16");
 
   builtin_f_type->builtin_complex_s8
-    = arch_complex_type (gdbarch, "complex*8",
-			 builtin_f_type->builtin_real);
+    = init_complex_type ("complex*8", builtin_f_type->builtin_real);
   builtin_f_type->builtin_complex_s16
-    = arch_complex_type (gdbarch, "complex*16",
-			 builtin_f_type->builtin_real_s8);
-  builtin_f_type->builtin_complex_s32
-    = arch_complex_type (gdbarch, "complex*32",
-			 builtin_f_type->builtin_real_s16);
+    = init_complex_type ("complex*16", builtin_f_type->builtin_real_s8);
+
+  if (builtin_f_type->builtin_real_s16->code () == TYPE_CODE_ERROR)
+    builtin_f_type->builtin_complex_s32
+      = arch_type (gdbarch, TYPE_CODE_ERROR, 256, "complex*32");
+  else
+    builtin_f_type->builtin_complex_s32
+      = init_complex_type ("complex*32", builtin_f_type->builtin_real_s16);
 
   return builtin_f_type;
 }
@@ -761,8 +802,9 @@ builtin_f_type (struct gdbarch *gdbarch)
   return (const struct builtin_f_type *) gdbarch_data (gdbarch, f_type_data);
 }
 
+void _initialize_f_language ();
 void
-_initialize_f_language (void)
+_initialize_f_language ()
 {
   f_type_data = gdbarch_data_register_post_init (build_fortran_types);
 }
@@ -799,7 +841,7 @@ fortran_argument_convert (struct value *
 struct type *
 fortran_preserve_arg_pointer (struct value *arg, struct type *type)
 {
-  if (TYPE_CODE (value_type (arg)) == TYPE_CODE_PTR)
+  if (value_type (arg)->code () == TYPE_CODE_PTR)
     return value_type (arg);
   return type;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-lang.h ./gdb/f-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-lang.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/f-lang.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Fortran language support definitions for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    Contributed by Motorola.  Adapted from the C definitions by Farooq Butt
    (fmbutt@engage.sps.mot.com).
@@ -36,10 +36,11 @@ extern void f_print_typedef (struct type
 extern void f_print_type (struct type *, const char *, struct ui_file *, int,
 			  int, const struct type_print_options *);
 
-extern void f_val_print (struct type *, int, CORE_ADDR,
-			 struct ui_file *, int,
-			 struct value *,
-			 const struct value_print_options *);
+/* Implement la_value_print_inner for Fortran.  */
+
+extern void f_value_print_inner (struct value *val, struct ui_file *stream,
+				  int recurse,
+				  const struct value_print_options *options);
 
 /* Language-specific data structures */
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fork-child.c ./gdb/fork-child.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fork-child.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/fork-child.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Fork a Unix child process, and set up to debug it, for GDB.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
 
@@ -61,8 +61,6 @@ static struct ui *saved_ui = NULL;
 void
 prefork_hook (const char *args)
 {
-  const char *inferior_io_terminal = get_inferior_io_terminal ();
-
   gdb_assert (saved_ui == NULL);
   /* Retain a copy of our UI, since the child will replace this value
      and if we're vforked, we have to restore it.  */
@@ -70,7 +68,7 @@ prefork_hook (const char *args)
 
   /* Tell the terminal handling subsystem what tty we plan to run on;
      it will just record the information for later.  */
-  new_tty_prefork (inferior_io_terminal);
+  new_tty_prefork (current_inferior ()->tty ());
 }
 
 /* See nat/fork-inferior.h.  */
@@ -82,9 +80,6 @@ postfork_hook (pid_t pid)
 
   inferior_appeared (inf, pid);
 
-  /* Needed for wait_for_inferior stuff.  */
-  inferior_ptid = ptid_t (pid);
-
   gdb_assert (saved_ui != NULL);
   current_ui = saved_ui;
   saved_ui = NULL;
@@ -128,10 +123,13 @@ postfork_child_hook ()
 ptid_t
 gdb_startup_inferior (pid_t pid, int num_traps)
 {
-  ptid_t ptid = startup_inferior (pid, num_traps, NULL, NULL);
+  inferior *inf = current_inferior ();
+  process_stratum_target *proc_target = inf->process_target ();
+
+  ptid_t ptid = startup_inferior (proc_target, pid, num_traps, NULL, NULL);
 
   /* Mark all threads non-executing.  */
-  set_executing (ptid, 0);
+  set_executing (proc_target, ptid, false);
 
   return ptid;
 }
@@ -154,8 +152,9 @@ show_startup_with_shell (struct ui_file
 		    value);
 }
 
+void _initialize_fork_child ();
 void
-_initialize_fork_child (void)
+_initialize_fork_child ()
 {
   add_setshow_filename_cmd ("exec-wrapper", class_run, &exec_wrapper, _("\
 Set a wrapper for running programs.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fortran-operator.def ./gdb/fortran-operator.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/fortran-operator.def	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/fortran-operator.def	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Fortran language operator definitions for GDB, the GNU debugger.
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame-base.c ./gdb/frame-base.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame-base.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/frame-base.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for frame address handler, for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -121,8 +121,9 @@ frame_base_find_by_frame (struct frame_i
   return table->default_base;
 }
 
+void _initialize_frame_base ();
 void
-_initialize_frame_base (void)
+_initialize_frame_base ()
 {
   frame_base_data = gdbarch_data_register_pre_init (frame_base_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame-base.h ./gdb/frame-base.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame-base.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/frame-base.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for a frame base, for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame.c ./gdb/frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/frame.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Cache and manage frames for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -53,6 +53,17 @@
 
 static struct frame_info *sentinel_frame;
 
+/* Number of calls to reinit_frame_cache.  */
+static unsigned int frame_cache_generation = 0;
+
+/* See frame.h.  */
+
+unsigned int
+get_frame_cache_generation ()
+{
+  return frame_cache_generation;
+}
+
 /* The values behind the global "set backtrace ..." settings.  */
 set_backtrace_options user_set_backtrace_options;
 
@@ -76,6 +87,18 @@ enum cached_copy_status
   CC_UNAVAILABLE
 };
 
+enum class frame_id_status
+{
+  /* Frame id is not computed.  */
+  NOT_COMPUTED = 0,
+
+  /* Frame id is being computed (compute_frame_id is active).  */
+  COMPUTING,
+
+  /* Frame id has been computed.  */
+  COMPUTED,
+};
+
 /* We keep a cache of stack frames, each of which is a "struct
    frame_info".  The innermost one gets allocated (in
    wait_for_inferior) each time the inferior stops; sentinel_frame
@@ -116,32 +139,32 @@ struct frame_info
   /* Cached copy of the previous frame's architecture.  */
   struct
   {
-    int p;
+    bool p;
     struct gdbarch *arch;
   } prev_arch;
 
   /* Cached copy of the previous frame's resume address.  */
   struct {
-    enum cached_copy_status status;
+    cached_copy_status status;
     /* Did VALUE require unmasking when being read.  */
     bool masked;
     CORE_ADDR value;
   } prev_pc;
-  
+
   /* Cached copy of the previous frame's function address.  */
   struct
   {
     CORE_ADDR addr;
-    int p;
+    cached_copy_status status;
   } prev_func;
-  
+
   /* This frame's ID.  */
   struct
   {
-    int p;
+    frame_id_status p;
     struct frame_id value;
   } this_id;
-  
+
   /* The frame's high-level base methods, and corresponding cache.
      The high level base methods are selected based on the frame's
      debug info.  */
@@ -151,7 +174,7 @@ struct frame_info
   /* Pointers to the next (down, inner, younger) and previous (up,
      outer, older) frame_info's in the frame cache.  */
   struct frame_info *next; /* down, inner, younger */
-  int prev_p;
+  bool prev_p;
   struct frame_info *prev; /* up, outer, older */
 
   /* The reason why we could not set PREV, or UNWIND_NO_REASON if we
@@ -246,27 +269,24 @@ frame_stash_create (void)
    Returns false if a frame with the same ID was already stashed, true
    otherwise.  */
 
-static int
-frame_stash_add (struct frame_info *frame)
+static bool
+frame_stash_add (frame_info *frame)
 {
-  struct frame_info **slot;
-
   /* Do not try to stash the sentinel frame.  */
   gdb_assert (frame->level >= 0);
 
-  slot = (struct frame_info **) htab_find_slot (frame_stash,
-						frame,
-						INSERT);
+  frame_info **slot = (struct frame_info **) htab_find_slot (frame_stash,
+							     frame, INSERT);
 
   /* If we already have a frame in the stack with the same id, we
      either have a stack cycle (corrupted stack?), or some bug
      elsewhere in GDB.  In any case, ignore the duplicate and return
      an indication to the caller.  */
-  if (*slot != NULL)
-    return 0;
+  if (*slot != nullptr)
+    return false;
 
   *slot = frame;
-  return 1;
+  return true;
 }
 
 /* Internal function to search the frame stash for an entry with the
@@ -376,8 +396,11 @@ fprint_frame_id (struct ui_file *file, s
     fprintf_unfiltered (file, "stack=<unavailable>");
   else if (id.stack_status == FID_STACK_SENTINEL)
     fprintf_unfiltered (file, "stack=<sentinel>");
+  else if (id.stack_status == FID_STACK_OUTER)
+    fprintf_unfiltered (file, "stack=<outer>");
   else
     fprintf_unfiltered (file, "stack=%s", hex_string (id.stack_addr));
+
   fprintf_unfiltered (file, ",");
 
   fprint_field (file, "code", id.code_addr_p, id.code_addr);
@@ -431,21 +454,25 @@ fprint_frame (struct ui_file *file, stru
       fprintf_unfiltered (file, "<NULL frame>");
       return;
     }
+
   fprintf_unfiltered (file, "{");
   fprintf_unfiltered (file, "level=%d", fi->level);
   fprintf_unfiltered (file, ",");
+
   fprintf_unfiltered (file, "type=");
   if (fi->unwind != NULL)
     fprint_frame_type (file, fi->unwind->type);
   else
     fprintf_unfiltered (file, "<unknown>");
   fprintf_unfiltered (file, ",");
+
   fprintf_unfiltered (file, "unwind=");
   if (fi->unwind != NULL)
     gdb_print_host_address (fi->unwind, file);
   else
     fprintf_unfiltered (file, "<unknown>");
   fprintf_unfiltered (file, ",");
+
   fprintf_unfiltered (file, "pc=");
   if (fi->next == NULL || fi->next->prev_pc.status == CC_UNKNOWN)
     fprintf_unfiltered (file, "<unknown>");
@@ -460,14 +487,18 @@ fprint_frame (struct ui_file *file, stru
   else if (fi->next->prev_pc.status == CC_UNAVAILABLE)
     val_print_unavailable (file);
   fprintf_unfiltered (file, ",");
+
   fprintf_unfiltered (file, "id=");
-  if (fi->this_id.p)
-    fprint_frame_id (file, fi->this_id.value);
+  if (fi->this_id.p == frame_id_status::NOT_COMPUTED)
+    fprintf_unfiltered (file, "<not computed>");
+  else if (fi->this_id.p == frame_id_status::COMPUTING)
+    fprintf_unfiltered (file, "<computing>");
   else
-    fprintf_unfiltered (file, "<unknown>");
+    fprint_frame_id (file, fi->this_id.value);
   fprintf_unfiltered (file, ",");
+
   fprintf_unfiltered (file, "func=");
-  if (fi->next != NULL && fi->next->prev_func.p)
+  if (fi->next != NULL && fi->next->prev_func.status == CC_VALUE)
     fprintf_unfiltered (file, "%s", hex_string (fi->next->prev_func.addr));
   else
     fprintf_unfiltered (file, "<unknown>");
@@ -536,25 +567,48 @@ skip_tailcall_frames (struct frame_info
 static void
 compute_frame_id (struct frame_info *fi)
 {
-  gdb_assert (!fi->this_id.p);
+  gdb_assert (fi->this_id.p == frame_id_status::NOT_COMPUTED);
 
-  if (frame_debug)
-    fprintf_unfiltered (gdb_stdlog, "{ compute_frame_id (fi=%d) ",
-			fi->level);
-  /* Find the unwinder.  */
-  if (fi->unwind == NULL)
-    frame_unwind_find_by_frame (fi, &fi->prologue_cache);
-  /* Find THIS frame's ID.  */
-  /* Default to outermost if no ID is found.  */
-  fi->this_id.value = outer_frame_id;
-  fi->unwind->this_id (fi, &fi->prologue_cache, &fi->this_id.value);
-  gdb_assert (frame_id_p (fi->this_id.value));
-  fi->this_id.p = 1;
-  if (frame_debug)
+  unsigned int entry_generation = get_frame_cache_generation ();
+
+  try
     {
-      fprintf_unfiltered (gdb_stdlog, "-> ");
-      fprint_frame_id (gdb_stdlog, fi->this_id.value);
-      fprintf_unfiltered (gdb_stdlog, " }\n");
+      /* Mark this frame's id as "being computed.  */
+      fi->this_id.p = frame_id_status::COMPUTING;
+
+      if (frame_debug)
+	fprintf_unfiltered (gdb_stdlog, "{ compute_frame_id (fi=%d) ",
+			    fi->level);
+
+      /* Find the unwinder.  */
+      if (fi->unwind == NULL)
+	frame_unwind_find_by_frame (fi, &fi->prologue_cache);
+
+      /* Find THIS frame's ID.  */
+      /* Default to outermost if no ID is found.  */
+      fi->this_id.value = outer_frame_id;
+      fi->unwind->this_id (fi, &fi->prologue_cache, &fi->this_id.value);
+      gdb_assert (frame_id_p (fi->this_id.value));
+
+      /* Mark this frame's id as "computed".  */
+      fi->this_id.p = frame_id_status::COMPUTED;
+
+      if (frame_debug)
+	{
+	  fprintf_unfiltered (gdb_stdlog, "-> ");
+	  fprint_frame_id (gdb_stdlog, fi->this_id.value);
+	  fprintf_unfiltered (gdb_stdlog, " }\n");
+	}
+    }
+  catch (const gdb_exception &ex)
+    {
+      /* On error, revert the frame id status to not computed.  If the frame
+         cache generation changed, the frame object doesn't exist anymore, so
+	 don't touch it.  */
+      if (get_frame_cache_generation () == entry_generation)
+	fi->this_id.p = frame_id_status::NOT_COMPUTED;
+
+      throw;
     }
 }
 
@@ -567,10 +621,12 @@ get_frame_id (struct frame_info *fi)
   if (fi == NULL)
     return null_frame_id;
 
-  if (!fi->this_id.p)
-    {
-      int stashed;
+  /* It's always invalid to try to get a frame's id while it is being
+     computed.  */
+  gdb_assert (fi->this_id.p != frame_id_status::COMPUTING);
 
+  if (fi->this_id.p == frame_id_status::NOT_COMPUTED)
+    {
       /* If we haven't computed the frame id yet, then it must be that
 	 this is the current frame.  Compute it now, and stash the
 	 result.  The IDs of other frames are computed as soon as
@@ -583,7 +639,7 @@ get_frame_id (struct frame_info *fi)
 
       /* Since this is the first frame in the chain, this should
 	 always succeed.  */
-      stashed = frame_stash_add (fi);
+      bool stashed = frame_stash_add (fi);
       gdb_assert (stashed);
     }
 
@@ -619,7 +675,7 @@ frame_unwind_caller_id (struct frame_inf
 
 const struct frame_id null_frame_id = { 0 }; /* All zeros.  */
 const struct frame_id sentinel_frame_id = { 0, 0, 0, FID_STACK_SENTINEL, 0, 1, 0 };
-const struct frame_id outer_frame_id = { 0, 0, 0, FID_STACK_INVALID, 0, 1, 0 };
+const struct frame_id outer_frame_id = { 0, 0, 0, FID_STACK_OUTER, 0, 1, 0 };
 
 struct frame_id
 frame_id_build_special (CORE_ADDR stack_addr, CORE_ADDR code_addr,
@@ -630,9 +686,9 @@ frame_id_build_special (CORE_ADDR stack_
   id.stack_addr = stack_addr;
   id.stack_status = FID_STACK_VALID;
   id.code_addr = code_addr;
-  id.code_addr_p = 1;
+  id.code_addr_p = true;
   id.special_addr = special_addr;
-  id.special_addr_p = 1;
+  id.special_addr_p = true;
   return id;
 }
 
@@ -645,7 +701,7 @@ frame_id_build_unavailable_stack (CORE_A
 
   id.stack_status = FID_STACK_UNAVAILABLE;
   id.code_addr = code_addr;
-  id.code_addr_p = 1;
+  id.code_addr_p = true;
   return id;
 }
 
@@ -659,9 +715,9 @@ frame_id_build_unavailable_stack_special
 
   id.stack_status = FID_STACK_UNAVAILABLE;
   id.code_addr = code_addr;
-  id.code_addr_p = 1;
+  id.code_addr_p = true;
   id.special_addr = special_addr;
-  id.special_addr_p = 1;
+  id.special_addr_p = true;
   return id;
 }
 
@@ -673,7 +729,7 @@ frame_id_build (CORE_ADDR stack_addr, CO
   id.stack_addr = stack_addr;
   id.stack_status = FID_STACK_VALID;
   id.code_addr = code_addr;
-  id.code_addr_p = 1;
+  id.code_addr_p = true;
   return id;
 }
 
@@ -687,70 +743,59 @@ frame_id_build_wild (CORE_ADDR stack_add
   return id;
 }
 
-int
-frame_id_p (struct frame_id l)
+bool
+frame_id_p (frame_id l)
 {
-  int p;
-
   /* The frame is valid iff it has a valid stack address.  */
-  p = l.stack_status != FID_STACK_INVALID;
-  /* outer_frame_id is also valid.  */
-  if (!p && memcmp (&l, &outer_frame_id, sizeof (l)) == 0)
-    p = 1;
+  bool p = l.stack_status != FID_STACK_INVALID;
+
   if (frame_debug)
     {
       fprintf_unfiltered (gdb_stdlog, "{ frame_id_p (l=");
       fprint_frame_id (gdb_stdlog, l);
       fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", p);
     }
+
   return p;
 }
 
-int
-frame_id_artificial_p (struct frame_id l)
+bool
+frame_id_artificial_p (frame_id l)
 {
   if (!frame_id_p (l))
-    return 0;
+    return false;
 
-  return (l.artificial_depth != 0);
+  return l.artificial_depth != 0;
 }
 
-int
-frame_id_eq (struct frame_id l, struct frame_id r)
+bool
+frame_id_eq (frame_id l, frame_id r)
 {
-  int eq;
+  bool eq;
 
-  if (l.stack_status == FID_STACK_INVALID && l.special_addr_p
-      && r.stack_status == FID_STACK_INVALID && r.special_addr_p)
-    /* The outermost frame marker is equal to itself.  This is the
-       dodgy thing about outer_frame_id, since between execution steps
-       we might step into another function - from which we can't
-       unwind either.  More thought required to get rid of
-       outer_frame_id.  */
-    eq = 1;
-  else if (l.stack_status == FID_STACK_INVALID
-	   || r.stack_status == FID_STACK_INVALID)
+  if (l.stack_status == FID_STACK_INVALID
+      || r.stack_status == FID_STACK_INVALID)
     /* Like a NaN, if either ID is invalid, the result is false.
        Note that a frame ID is invalid iff it is the null frame ID.  */
-    eq = 0;
+    eq = false;
   else if (l.stack_status != r.stack_status || l.stack_addr != r.stack_addr)
     /* If .stack addresses are different, the frames are different.  */
-    eq = 0;
+    eq = false;
   else if (l.code_addr_p && r.code_addr_p && l.code_addr != r.code_addr)
     /* An invalid code addr is a wild card.  If .code addresses are
        different, the frames are different.  */
-    eq = 0;
+    eq = false;
   else if (l.special_addr_p && r.special_addr_p
 	   && l.special_addr != r.special_addr)
     /* An invalid special addr is a wild card (or unused).  Otherwise
        if special addresses are different, the frames are different.  */
-    eq = 0;
+    eq = false;
   else if (l.artificial_depth != r.artificial_depth)
     /* If artificial depths are different, the frames must be different.  */
-    eq = 0;
+    eq = false;
   else
     /* Frames are equal.  */
-    eq = 1;
+    eq = true;
 
   if (frame_debug)
     {
@@ -760,6 +805,7 @@ frame_id_eq (struct frame_id l, struct f
       fprint_frame_id (gdb_stdlog, r);
       fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", eq);
     }
+
   return eq;
 }
 
@@ -795,15 +841,15 @@ frame_id_eq (struct frame_id l, struct f
    a stack overflow strategy that cause the handler to be run on a
    different stack.  */
 
-static int
+static bool
 frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r)
 {
-  int inner;
+  bool inner;
 
   if (l.stack_status != FID_STACK_VALID || r.stack_status != FID_STACK_VALID)
     /* Like NaN, any operation involving an invalid ID always fails.
        Likewise if either ID has an unavailable stack address.  */
-    inner = 0;
+    inner = false;
   else if (l.artificial_depth > r.artificial_depth
 	   && l.stack_addr == r.stack_addr
 	   && l.code_addr_p == r.code_addr_p
@@ -820,7 +866,7 @@ frame_id_inner (struct gdbarch *gdbarch,
 
       if (lb == NULL || rb == NULL)
 	/* Something's gone wrong.  */
-	inner = 0;
+	inner = false;
       else
 	/* This will return true if LB and RB are the same block, or
 	   if the block with the smaller depth lexically encloses the
@@ -833,6 +879,7 @@ frame_id_inner (struct gdbarch *gdbarch,
        functions are not strictly inner than (same .stack but
        different .code and/or .special address).  */
     inner = gdbarch_inner_than (gdbarch, l.stack_addr, r.stack_addr);
+
   if (frame_debug)
     {
       fprintf_unfiltered (gdb_stdlog, "{ frame_id_inner (l=");
@@ -841,6 +888,7 @@ frame_id_inner (struct gdbarch *gdbarch,
       fprint_frame_id (gdb_stdlog, r);
       fprintf_unfiltered (gdb_stdlog, ") -> %d }\n", inner);
     }
+
   return inner;
 }
 
@@ -903,7 +951,7 @@ frame_unwind_pc (struct frame_info *this
     {
       struct gdbarch *prev_gdbarch;
       CORE_ADDR pc = 0;
-      int pc_p = 0;
+      bool pc_p = false;
 
       /* The right way.  The `pure' way.  The one true way.  This
 	 method depends solely on the register-unwind code to
@@ -926,7 +974,7 @@ frame_unwind_pc (struct frame_info *this
       try
 	{
 	  pc = gdbarch_unwind_pc (prev_gdbarch, this_frame);
-	  pc_p = 1;
+	  pc_p = true;
 	}
       catch (const gdb_exception_error &ex)
 	{
@@ -992,12 +1040,12 @@ frame_unwind_caller_pc (struct frame_inf
   return frame_unwind_pc (this_frame);
 }
 
-int
-get_frame_func_if_available (struct frame_info *this_frame, CORE_ADDR *pc)
+bool
+get_frame_func_if_available (frame_info *this_frame, CORE_ADDR *pc)
 {
   struct frame_info *next_frame = this_frame->next;
 
-  if (!next_frame->prev_func.p)
+  if (next_frame->prev_func.status == CC_UNKNOWN)
     {
       CORE_ADDR addr_in_block;
 
@@ -1005,7 +1053,7 @@ get_frame_func_if_available (struct fram
          found.  */
       if (!get_frame_address_in_block_if_available (this_frame, &addr_in_block))
 	{
-	  next_frame->prev_func.p = -1;
+	  next_frame->prev_func.status = CC_UNAVAILABLE;
 	  if (frame_debug)
 	    fprintf_unfiltered (gdb_stdlog,
 				"{ get_frame_func (this_frame=%d)"
@@ -1014,7 +1062,7 @@ get_frame_func_if_available (struct fram
 	}
       else
 	{
-	  next_frame->prev_func.p = 1;
+	  next_frame->prev_func.status = CC_VALUE;
 	  next_frame->prev_func.addr = get_pc_function_start (addr_in_block);
 	  if (frame_debug)
 	    fprintf_unfiltered (gdb_stdlog,
@@ -1024,15 +1072,17 @@ get_frame_func_if_available (struct fram
 	}
     }
 
-  if (next_frame->prev_func.p < 0)
+  if (next_frame->prev_func.status == CC_UNAVAILABLE)
     {
       *pc = -1;
-      return 0;
+      return false;
     }
   else
     {
+      gdb_assert (next_frame->prev_func.status == CC_VALUE);
+
       *pc = next_frame->prev_func.addr;
-      return 1;
+      return true;
     }
 }
 
@@ -1236,7 +1286,7 @@ frame_unwind_register_value (frame_info
       if (value_optimized_out (value))
 	{
 	  fprintf_unfiltered (gdb_stdlog, " ");
-	  val_print_optimized_out (value, gdb_stdlog);
+	  val_print_not_saved (gdb_stdlog);
 	}
       else
 	{
@@ -1345,8 +1395,8 @@ get_frame_register_unsigned (struct fram
   return frame_unwind_register_unsigned (frame->next, regnum);
 }
 
-int
-read_frame_register_unsigned (struct frame_info *frame, int regnum,
+bool
+read_frame_register_unsigned (frame_info *frame, int regnum,
 			      ULONGEST *val)
 {
   struct value *regval = get_frame_register_value (frame, regnum);
@@ -1359,10 +1409,10 @@ read_frame_register_unsigned (struct fra
       int size = register_size (gdbarch, VALUE_REGNUM (regval));
 
       *val = extract_unsigned_integer (value_contents (regval), size, byte_order);
-      return 1;
+      return true;
     }
 
-  return 0;
+  return false;
 }
 
 void
@@ -1403,9 +1453,9 @@ put_frame_register (struct frame_info *f
 
    Returns 0 if the register value could not be found.  */
 
-int
-deprecated_frame_register_read (struct frame_info *frame, int regnum,
-		     gdb_byte *myaddr)
+bool
+deprecated_frame_register_read (frame_info *frame, int regnum,
+				gdb_byte *myaddr)
 {
   int optimized;
   int unavailable;
@@ -1419,8 +1469,8 @@ deprecated_frame_register_read (struct f
   return !optimized && !unavailable;
 }
 
-int
-get_frame_register_bytes (struct frame_info *frame, int regnum,
+bool
+get_frame_register_bytes (frame_info *frame, int regnum,
 			  CORE_ADDR offset, int len, gdb_byte *myaddr,
 			  int *optimizedp, int *unavailablep)
 {
@@ -1469,7 +1519,7 @@ get_frame_register_bytes (struct frame_i
 	  frame_register (frame, regnum, optimizedp, unavailablep,
 			  &lval, &addr, &realnum, myaddr);
 	  if (*optimizedp || *unavailablep)
-	    return 0;
+	    return false;
 	}
       else
 	{
@@ -1482,8 +1532,9 @@ get_frame_register_bytes (struct frame_i
 	  if (*optimizedp || *unavailablep)
 	    {
 	      release_value (value);
-	      return 0;
+	      return false;
 	    }
+
 	  memcpy (myaddr, value_contents_all (value) + offset, curr_len);
 	  release_value (value);
 	}
@@ -1496,7 +1547,8 @@ get_frame_register_bytes (struct frame_i
 
   *optimizedp = 0;
   *unavailablep = 0;
-  return 1;
+
+  return true;
 }
 
 void
@@ -1563,7 +1615,7 @@ create_sentinel_frame (struct program_sp
      (the unwound PC is the same as the pc), so make it so.  */
   frame->next = frame;
   /* The sentinel frame has a special ID.  */
-  frame->this_id.p = 1;
+  frame->this_id.p = frame_id_status::COMPUTED;
   frame->this_id.value = sentinel_frame_id;
   if (frame_debug)
     {
@@ -1637,30 +1689,30 @@ get_current_frame (void)
 
 static struct frame_info *selected_frame;
 
-int
-has_stack_frames (void)
+bool
+has_stack_frames ()
 {
   if (!target_has_registers || !target_has_stack || !target_has_memory)
-    return 0;
+    return false;
 
   /* Traceframes are effectively a substitute for the live inferior.  */
   if (get_traceframe_number () < 0)
     {
       /* No current inferior, no frame.  */
       if (inferior_ptid == null_ptid)
-	return 0;
+	return false;
 
       thread_info *tp = inferior_thread ();
       /* Don't try to read from a dead thread.  */
       if (tp->state == THREAD_EXITED)
-	return 0;
+	return false;
 
       /* ... or from a spinning thread.  */
       if (tp->executing)
-	return 0;
+	return false;
     }
 
-  return 1;
+  return true;
 }
 
 /* Return the selected frame.  Always non-NULL (unless there isn't an
@@ -1783,7 +1835,7 @@ create_new_frame (CORE_ADDR addr, CORE_A
      based on the PC.  */
   frame_unwind_find_by_frame (fi, &fi->prologue_cache);
 
-  fi->this_id.p = 1;
+  fi->this_id.p = frame_id_status::COMPUTED;
   fi->this_id.value = frame_id_build (addr, pc);
 
   if (frame_debug)
@@ -1843,6 +1895,8 @@ reinit_frame_cache (void)
 {
   struct frame_info *fi;
 
+  ++frame_cache_generation;
+
   /* Tear down all frame caches.  */
   for (fi = sentinel_frame; fi != NULL; fi = fi->prev)
     {
@@ -1922,6 +1976,8 @@ get_prev_frame_if_no_cycle (struct frame
   if (prev_frame->level == 0)
     return prev_frame;
 
+  unsigned int entry_generation = get_frame_cache_generation ();
+
   try
     {
       compute_frame_id (prev_frame);
@@ -1944,8 +2000,11 @@ get_prev_frame_if_no_cycle (struct frame
     }
   catch (const gdb_exception &ex)
     {
-      prev_frame->next = NULL;
-      this_frame->prev = NULL;
+      if (get_frame_cache_generation () == entry_generation)
+	{
+	  prev_frame->next = NULL;
+	  this_frame->prev = NULL;
+	}
 
       throw;
     }
@@ -1994,7 +2053,7 @@ get_prev_frame_always_1 (struct frame_in
   if (this_frame->unwind == NULL)
     frame_unwind_find_by_frame (this_frame, &this_frame->prologue_cache);
 
-  this_frame->prev_p = 1;
+  this_frame->prev_p = true;
   this_frame->stop_reason = UNWIND_NO_REASON;
 
   /* If we are unwinding from an inline frame, all of the below tests
@@ -2229,34 +2288,36 @@ frame_debug_got_null_frame (struct frame
 
 /* Is this (non-sentinel) frame in the "main"() function?  */
 
-static int
-inside_main_func (struct frame_info *this_frame)
+static bool
+inside_main_func (frame_info *this_frame)
 {
-  struct bound_minimal_symbol msymbol;
-  CORE_ADDR maddr;
+  if (symfile_objfile == nullptr)
+    return false;
+
+  bound_minimal_symbol msymbol
+    = lookup_minimal_symbol (main_name (), NULL, symfile_objfile);
+  if (msymbol.minsym == nullptr)
+    return false;
 
-  if (symfile_objfile == 0)
-    return 0;
-  msymbol = lookup_minimal_symbol (main_name (), NULL, symfile_objfile);
-  if (msymbol.minsym == NULL)
-    return 0;
   /* Make certain that the code, and not descriptor, address is
      returned.  */
-  maddr = gdbarch_convert_from_func_ptr_addr (get_frame_arch (this_frame),
-					      BMSYMBOL_VALUE_ADDRESS (msymbol),
-					      current_top_target ());
+  CORE_ADDR maddr
+    = gdbarch_convert_from_func_ptr_addr (get_frame_arch (this_frame),
+					  BMSYMBOL_VALUE_ADDRESS (msymbol),
+					  current_top_target ());
+
   return maddr == get_frame_func (this_frame);
 }
 
 /* Test whether THIS_FRAME is inside the process entry point function.  */
 
-static int
-inside_entry_func (struct frame_info *this_frame)
+static bool
+inside_entry_func (frame_info *this_frame)
 {
   CORE_ADDR entry_point;
 
   if (!entry_point_address_query (&entry_point))
-    return 0;
+    return false;
 
   return get_frame_func (this_frame) == entry_point;
 }
@@ -2399,8 +2460,8 @@ get_frame_pc (struct frame_info *frame)
   return frame_unwind_pc (frame->next);
 }
 
-int
-get_frame_pc_if_available (struct frame_info *frame, CORE_ADDR *pc)
+bool
+get_frame_pc_if_available (frame_info *frame, CORE_ADDR *pc)
 {
 
   gdb_assert (frame->next != NULL);
@@ -2412,12 +2473,12 @@ get_frame_pc_if_available (struct frame_
   catch (const gdb_exception_error &ex)
     {
       if (ex.error == NOT_AVAILABLE_ERROR)
-	return 0;
+	return false;
       else
 	throw;
     }
 
-  return 1;
+  return true;
 }
 
 /* Return an address that falls within THIS_FRAME's code block.  */
@@ -2482,8 +2543,8 @@ get_frame_address_in_block (struct frame
   return pc;
 }
 
-int
-get_frame_address_in_block_if_available (struct frame_info *this_frame,
+bool
+get_frame_address_in_block_if_available (frame_info *this_frame,
 					 CORE_ADDR *pc)
 {
 
@@ -2494,11 +2555,11 @@ get_frame_address_in_block_if_available
   catch (const gdb_exception_error &ex)
     {
       if (ex.error == NOT_AVAILABLE_ERROR)
-	return 0;
+	return false;
       throw;
     }
 
-  return 1;
+  return true;
 }
 
 symtab_and_line
@@ -2508,14 +2569,15 @@ find_frame_sal (frame_info *frame)
   int notcurrent;
   CORE_ADDR pc;
 
-  /* If the next frame represents an inlined function call, this frame's
-     sal is the "call site" of that inlined function, which can not
-     be inferred from get_frame_pc.  */
-  next_frame = get_next_frame (frame);
   if (frame_inlined_callees (frame) > 0)
     {
       struct symbol *sym;
 
+      /* If the current frame has some inlined callees, and we have a next
+	 frame, then that frame must be an inlined frame.  In this case
+	 this frame's sal is the "call site" of the next frame's inlined
+	 function, which can not be inferred from get_frame_pc.  */
+      next_frame = get_next_frame (frame);
       if (next_frame)
 	sym = get_frame_function (next_frame);
       else
@@ -2613,11 +2675,12 @@ get_frame_args_address (struct frame_inf
 /* Return true if the frame unwinder for frame FI is UNWINDER; false
    otherwise.  */
 
-int
-frame_unwinder_is (struct frame_info *fi, const struct frame_unwind *unwinder)
+bool
+frame_unwinder_is (frame_info *fi, const frame_unwind *unwinder)
 {
-  if (fi->unwind == NULL)
+  if (fi->unwind == nullptr)
     frame_unwind_find_by_frame (fi, &fi->prologue_cache);
+
   return fi->unwind == unwinder;
 }
 
@@ -2695,12 +2758,12 @@ get_frame_memory_unsigned (struct frame_
   return read_memory_unsigned_integer (addr, len, byte_order);
 }
 
-int
+bool
 safe_frame_unwind_memory (struct frame_info *this_frame,
 			  CORE_ADDR addr, gdb_byte *buf, int len)
 {
   /* NOTE: target_read_memory returns zero on success!  */
-  return !target_read_memory (addr, buf, len);
+  return target_read_memory (addr, buf, len) == 0;
 }
 
 /* Architecture methods.  */
@@ -2728,7 +2791,7 @@ frame_unwind_arch (struct frame_info *ne
 	arch = get_frame_arch (next_frame);
 
       next_frame->prev_arch.arch = arch;
-      next_frame->prev_arch.p = 1;
+      next_frame->prev_arch.p = true;
       if (frame_debug)
 	fprintf_unfiltered (gdb_stdlog,
 			    "{ frame_unwind_arch (next_frame=%d) -> %s }\n",
@@ -2758,7 +2821,7 @@ enum language
 get_frame_language (struct frame_info *frame)
 {
   CORE_ADDR pc = 0;
-  int pc_p = 0;
+  bool pc_p = false;
 
   gdb_assert (frame!= NULL);
 
@@ -2774,7 +2837,7 @@ get_frame_language (struct frame_info *f
   try
     {
       pc = get_frame_address_in_block (frame);
-      pc_p = 1;
+      pc_p = true;
     }
   catch (const gdb_exception_error &ex)
     {
@@ -2883,13 +2946,13 @@ frame_cleanup_after_sniffer (struct fram
   gdb_assert (!frame->prev_p);
 
   /* The sniffer should not check the frame's ID; that's circular.  */
-  gdb_assert (!frame->this_id.p);
+  gdb_assert (frame->this_id.p != frame_id_status::COMPUTED);
 
   /* Clear cached fields dependent on the unwinder.
 
      The previous PC is independent of the unwinder, but the previous
      function is not (see get_frame_address_in_block).  */
-  frame->prev_func.p = 0;
+  frame->prev_func.status = CC_UNKNOWN;
   frame->prev_func.addr = 0;
 
   /* Discard the unwinder last, so that we can easily find it if an assertion
@@ -2912,19 +2975,6 @@ frame_prepare_for_sniffer (struct frame_
 static struct cmd_list_element *set_backtrace_cmdlist;
 static struct cmd_list_element *show_backtrace_cmdlist;
 
-static void
-set_backtrace_cmd (const char *args, int from_tty)
-{
-  help_list (set_backtrace_cmdlist, "set backtrace ", all_commands,
-	     gdb_stdout);
-}
-
-static void
-show_backtrace_cmd (const char *args, int from_tty)
-{
-  cmd_show_list (show_backtrace_cmdlist, from_tty, "");
-}
-
 /* Definition of the "set backtrace" settings that are exposed as
    "backtrace" command options.  */
 
@@ -2958,8 +3008,9 @@ the rest of the stack trace."),
   },
 };
 
+void _initialize_frame ();
 void
-_initialize_frame (void)
+_initialize_frame ()
 {
   obstack_init (&frame_cache_obstack);
 
@@ -2967,16 +3018,16 @@ _initialize_frame (void)
 
   gdb::observers::target_changed.attach (frame_observer_target_changed);
 
-  add_prefix_cmd ("backtrace", class_maintenance, set_backtrace_cmd, _("\
+  add_basic_prefix_cmd ("backtrace", class_maintenance, _("\
 Set backtrace specific variables.\n\
 Configure backtrace variables such as the backtrace limit"),
-		  &set_backtrace_cmdlist, "set backtrace ",
-		  0/*allow-unknown*/, &setlist);
-  add_prefix_cmd ("backtrace", class_maintenance, show_backtrace_cmd, _("\
+			&set_backtrace_cmdlist, "set backtrace ",
+			0/*allow-unknown*/, &setlist);
+  add_show_prefix_cmd ("backtrace", class_maintenance, _("\
 Show backtrace specific variables.\n\
 Show backtrace variables such as the backtrace limit."),
-		  &show_backtrace_cmdlist, "show backtrace ",
-		  0/*allow-unknown*/, &showlist);
+		       &show_backtrace_cmdlist, "show backtrace ",
+		       0/*allow-unknown*/, &showlist);
 
   add_setshow_uinteger_cmd ("limit", class_obscure,
 			    &user_set_backtrace_options.backtrace_limit, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame.h ./gdb/frame.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/frame.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for dealing with stack frames, for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -45,8 +45,8 @@
    strongly hinting at its unsafeness)
 
    safe_....(): Safer version of various functions, doesn't throw an
-   error (leave this for later?).  Returns non-zero / non-NULL if the
-   request succeeds, zero / NULL otherwize.
+   error (leave this for later?).  Returns true / non-NULL if the request
+   succeeds, false / NULL otherwise.
 
    Suffixes:
 
@@ -85,8 +85,7 @@ struct frame_print_options;
 
 enum frame_id_stack_status
 {
-  /* Stack address is invalid.  E.g., this frame is the outermost
-     (i.e., _start), and the stack hasn't been setup yet.  */
+  /* Stack address is invalid.  */
   FID_STACK_INVALID = 0,
 
   /* Stack address is valid, and is found in the stack_addr field.  */
@@ -95,6 +94,12 @@ enum frame_id_stack_status
   /* Sentinel frame.  */
   FID_STACK_SENTINEL = 2,
 
+  /* Outer frame.  Since a frame's stack address is typically defined as the
+     value the stack pointer had prior to the activation of the frame, an outer
+     frame doesn't have a stack address.  The frame ids of frames inlined in the
+     outer frame are also of this type.  */
+  FID_STACK_OUTER = 3,
+
   /* Stack address is unavailable.  I.e., there's a valid stack, but
      we don't know where it is (because memory or registers we'd
      compute it from were not collected).  */
@@ -236,19 +241,16 @@ extern struct frame_id
    as the special identifier address are set to indicate wild cards.  */
 extern struct frame_id frame_id_build_wild (CORE_ADDR stack_addr);
 
-/* Returns non-zero when L is a valid frame (a valid frame has a
-   non-zero .base).  The outermost frame is valid even without an
-   ID.  */
-extern int frame_id_p (struct frame_id l);
+/* Returns true when L is a valid frame.  */
+extern bool frame_id_p (frame_id l);
 
-/* Returns non-zero when L is a valid frame representing a frame made up by GDB
+/* Returns true when L is a valid frame representing a frame made up by GDB
    without stack data representation in inferior, such as INLINE_FRAME or
    TAILCALL_FRAME.  */
-extern int frame_id_artificial_p (struct frame_id l);
+extern bool frame_id_artificial_p (frame_id l);
 
-/* Returns non-zero when L and R identify the same frame, or, if
-   either L or R have a zero .func, then the same frame base.  */
-extern int frame_id_eq (struct frame_id l, struct frame_id r);
+/* Returns true when L and R identify the same frame.  */
+extern bool frame_id_eq (frame_id l, frame_id r);
 
 /* Write the internal representation of a frame ID on the specified
    stream.  */
@@ -303,7 +305,7 @@ extern struct frame_info *get_current_fr
 /* Does the current target interface have enough state to be able to
    query the current inferior for frame info, and is the inferior in a
    state where that is possible?  */
-extern int has_stack_frames (void);
+extern bool has_stack_frames ();
 
 /* Invalidates the frame cache (this function should have been called
    invalidate_cached_frames).
@@ -317,7 +319,7 @@ extern void reinit_frame_cache (void);
 /* On demand, create the selected frame and then return it.  If the
    selected frame can not be created, this function prints then throws
    an error.  When MESSAGE is non-NULL, use it for the error message,
-   otherwize use a generic error message.  */
+   otherwise use a generic error message.  */
 /* FIXME: cagney/2002-11-28: At present, when there is no selected
    frame, this function always returns the current (inner most) frame.
    It should instead, when a thread has previously had its frame
@@ -367,8 +369,7 @@ extern CORE_ADDR get_frame_pc (struct fr
 /* Same as get_frame_pc, but return a boolean indication of whether
    the PC is actually available, instead of throwing an error.  */
 
-extern int get_frame_pc_if_available (struct frame_info *frame,
-				      CORE_ADDR *pc);
+extern bool get_frame_pc_if_available (frame_info *frame, CORE_ADDR *pc);
 
 /* An address (not necessarily aligned to an instruction boundary)
    that falls within THIS frame's code block.
@@ -390,9 +391,8 @@ extern CORE_ADDR get_frame_address_in_bl
    PC is unavailable, it will not be), instead of possibly throwing an
    error trying to read an unavailable PC.  */
 
-extern int
-  get_frame_address_in_block_if_available (struct frame_info *this_frame,
-					   CORE_ADDR *pc);
+extern bool get_frame_address_in_block_if_available (frame_info *this_frame,
+						     CORE_ADDR *pc);
 
 /* The frame's inner-most bound.  AKA the stack-pointer.  Confusingly
    known as top-of-stack.  */
@@ -409,7 +409,7 @@ extern CORE_ADDR get_frame_func (struct
    will not be), instead of possibly throwing an error trying to read
    an unavailable PC.  */
 
-extern int get_frame_func_if_available (struct frame_info *fi, CORE_ADDR *);
+extern bool get_frame_func_if_available (frame_info *fi, CORE_ADDR *);
 
 /* Closely related to the resume address, various symbol table
    attributes that are determined by the PC.  Note that for a normal
@@ -597,8 +597,8 @@ extern ULONGEST get_frame_register_unsig
    get_frame_register_value, that do not throw if the result is
    optimized out or unavailable.  */
 
-extern int read_frame_register_unsigned (struct frame_info *frame,
-					 int regnum, ULONGEST *val);
+extern bool read_frame_register_unsigned (frame_info *frame,
+					  int regnum, ULONGEST *val);
 
 /* Get the value of the register that belongs to this FRAME.  This
    function is a wrapper to the call sequence ``frame_register_unwind
@@ -621,10 +621,10 @@ extern void put_frame_register (struct f
    in frame FRAME, starting at OFFSET, into BUF.  If the register
    contents are optimized out or unavailable, set *OPTIMIZEDP,
    *UNAVAILABLEP accordingly.  */
-extern int get_frame_register_bytes (struct frame_info *frame, int regnum,
-				     CORE_ADDR offset, int len,
-				     gdb_byte *myaddr,
-				     int *optimizedp, int *unavailablep);
+extern bool get_frame_register_bytes (frame_info *frame, int regnum,
+				      CORE_ADDR offset, int len,
+				      gdb_byte *myaddr,
+				      int *optimizedp, int *unavailablep);
 
 /* Write LEN bytes to one or multiple registers starting with REGNUM
    in frame FRAME, starting at OFFSET, into BUF.  */
@@ -662,10 +662,10 @@ extern LONGEST get_frame_memory_signed (
 extern ULONGEST get_frame_memory_unsigned (struct frame_info *this_frame,
 					   CORE_ADDR memaddr, int len);
 
-/* Same as above, but return non-zero when the entire memory read
-   succeeds, zero otherwize.  */
-extern int safe_frame_unwind_memory (struct frame_info *this_frame,
-				     CORE_ADDR addr, gdb_byte *buf, int len);
+/* Same as above, but return true zero when the entire memory read
+   succeeds, false otherwise.  */
+extern bool safe_frame_unwind_memory (frame_info *this_frame, CORE_ADDR addr,
+				      gdb_byte *buf, int len);
 
 /* Return this frame's architecture.  */
 extern struct gdbarch *get_frame_arch (struct frame_info *this_frame);
@@ -772,8 +772,8 @@ extern void print_frame_info (const fram
 
 extern struct frame_info *block_innermost_frame (const struct block *);
 
-extern int deprecated_frame_register_read (struct frame_info *frame, int regnum,
-				gdb_byte *buf);
+extern bool deprecated_frame_register_read (frame_info *frame, int regnum,
+					    gdb_byte *buf);
 
 /* From stack.c.  */
 
@@ -907,8 +907,7 @@ extern struct frame_info *create_new_fra
 /* Return true if the frame unwinder for frame FI is UNWINDER; false
    otherwise.  */
 
-extern int frame_unwinder_is (struct frame_info *fi,
-			      const struct frame_unwind *unwinder);
+extern bool frame_unwinder_is (frame_info *fi, const frame_unwind *unwinder);
 
 /* Return the language of FRAME.  */
 
@@ -949,6 +948,10 @@ extern const gdb::option::option_def set
 /* The values behind the global "set backtrace ..." settings.  */
 extern set_backtrace_options user_set_backtrace_options;
 
+/* Get the number of calls to reinit_frame_cache.  */
+
+unsigned int get_frame_cache_generation ();
+
 /* Mark that the PC value is masked for the previous frame.  */
 
 extern void set_frame_previous_pc_masked (struct frame_info *frame);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame-unwind.c ./gdb/frame-unwind.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame-unwind.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/frame-unwind.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for frame unwinder, for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,6 +27,7 @@
 #include "gdb_obstack.h"
 #include "target.h"
 #include "gdbarch.h"
+#include "dwarf2/frame-tailcall.h"
 
 static struct gdbarch_data *frame_unwind_data;
 
@@ -43,6 +44,18 @@ struct frame_unwind_table
   struct frame_unwind_table_entry **osabi_head;
 };
 
+/* A helper function to add an unwinder to a list.  LINK says where to
+   install the new unwinder.  The new link is returned.  */
+
+static struct frame_unwind_table_entry **
+add_unwinder (struct obstack *obstack, const struct frame_unwind *unwinder,
+	      struct frame_unwind_table_entry **link)
+{
+  *link = OBSTACK_ZALLOC (obstack, struct frame_unwind_table_entry);
+  (*link)->unwinder = unwinder;
+  return &(*link)->next;
+}
+
 static void *
 frame_unwind_init (struct obstack *obstack)
 {
@@ -51,13 +64,21 @@ frame_unwind_init (struct obstack *obsta
 
   /* Start the table out with a few default sniffers.  OSABI code
      can't override this.  */
-  table->list = OBSTACK_ZALLOC (obstack, struct frame_unwind_table_entry);
-  table->list->unwinder = &dummy_frame_unwind;
-  table->list->next = OBSTACK_ZALLOC (obstack,
-				      struct frame_unwind_table_entry);
-  table->list->next->unwinder = &inline_frame_unwind;
+  struct frame_unwind_table_entry **link = &table->list;
+
+  link = add_unwinder (obstack, &dummy_frame_unwind, link);
+  /* The DWARF tailcall sniffer must come before the inline sniffer.
+     Otherwise, we can end up in a situation where a DWARF frame finds
+     tailcall information, but then the inline sniffer claims a frame
+     before the tailcall sniffer, resulting in confusion.  This is
+     safe to do always because the tailcall sniffer can only ever be
+     activated if the newer frame was created using the DWARF
+     unwinder, and it also found tailcall information.  */
+  link = add_unwinder (obstack, &dwarf2_tailcall_frame_unwind, link);
+  link = add_unwinder (obstack, &inline_frame_unwind, link);
+
   /* The insertion point for OSABI sniffers.  */
-  table->osabi_head = &table->list->next->next;
+  table->osabi_head = link;
   return table;
 }
 
@@ -100,6 +121,8 @@ frame_unwind_try_unwinder (struct frame_
 {
   int res = 0;
 
+  unsigned int entry_generation = get_frame_cache_generation ();
+
   frame_prepare_for_sniffer (this_frame, unwinder);
 
   try
@@ -109,9 +132,14 @@ frame_unwind_try_unwinder (struct frame_
   catch (const gdb_exception &ex)
     {
       /* Catch all exceptions, caused by either interrupt or error.
-	 Reset *THIS_CACHE.  */
-      *this_cache = NULL;
-      frame_cleanup_after_sniffer (this_frame);
+	 Reset *THIS_CACHE, unless something reinitialized the frame
+	 cache meanwhile, in which case THIS_FRAME/THIS_CACHE are now
+	 dangling.  */
+      if (get_frame_cache_generation () == entry_generation)
+	{
+	  *this_cache = NULL;
+	  frame_cleanup_after_sniffer (this_frame);
+	}
 
       if (ex.error == NOT_AVAILABLE_ERROR)
 	{
@@ -223,18 +251,8 @@ frame_unwind_got_optimized (struct frame
 {
   struct gdbarch *gdbarch = frame_unwind_arch (frame);
   struct type *type = register_type (gdbarch, regnum);
-  struct value *val;
 
-  /* Return an lval_register value, so that we print it as
-     "<not saved>".  */
-  val = allocate_value_lazy (type);
-  set_value_lazy (val, 0);
-  mark_value_bytes_optimized_out (val, 0, TYPE_LENGTH (type));
-  VALUE_LVAL (val) = lval_register;
-  VALUE_REGNUM (val) = regnum;
-  VALUE_NEXT_FRAME_ID (val)
-    = get_frame_id (get_next_frame_sentinel_okay (frame));
-  return val;
+  return allocate_optimized_out_value (type);
 }
 
 /* Return a value which indicates that FRAME copied REGNUM into
@@ -305,8 +323,9 @@ frame_unwind_got_address (struct frame_i
   return reg_val;
 }
 
+void _initialize_frame_unwind ();
 void
-_initialize_frame_unwind (void)
+_initialize_frame_unwind ()
 {
   frame_unwind_data = gdbarch_data_register_pre_init (frame_unwind_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame-unwind.h ./gdb/frame-unwind.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frame-unwind.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/frame-unwind.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for a frame unwinder, for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -133,6 +133,9 @@ typedef void (frame_this_id_ftype) (stru
    may be a lazy reference to memory, a lazy reference to the value of
    a register in THIS frame, or a non-lvalue.
 
+   If the previous frame's register was not saved by THIS_FRAME and is
+   therefore undefined, return a wholly optimized-out not_lval value.
+
    THIS_PROLOGUE_CACHE can be used to share any prolog analysis data
    with the other unwind methods.  Memory for that cache should be
    allocated using FRAME_OBSTACK_ZALLOC().  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frv-linux-tdep.c ./gdb/frv-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frv-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/frv-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Target-dependent code for GNU/Linux running on the Fujitsu FR-V,
    for GDB.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -481,8 +481,9 @@ frv_linux_elf_osabi_sniffer (bfd *abfd)
     return GDB_OSABI_UNKNOWN;
 }
 
+void _initialize_frv_linux_tdep ();
 void
-_initialize_frv_linux_tdep (void)
+_initialize_frv_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_frv, 0, GDB_OSABI_LINUX,
 			  frv_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frv-tdep.c ./gdb/frv-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frv-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/frv-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Fujitsu FR-V, for GDB, the GNU Debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1240,7 +1240,7 @@ frv_push_dummy_call (struct gdbarch *gdb
       arg = args[argnum];
       arg_type = check_typedef (value_type (arg));
       len = TYPE_LENGTH (arg_type);
-      typecode = TYPE_CODE (arg_type);
+      typecode = arg_type->code ();
 
       if (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)
 	{
@@ -1253,7 +1253,7 @@ frv_push_dummy_call (struct gdbarch *gdb
       else if (abi == FRV_ABI_FDPIC
 	       && len == 4
                && typecode == TYPE_CODE_PTR
-               && TYPE_CODE (TYPE_TARGET_TYPE (arg_type)) == TYPE_CODE_FUNC)
+               && TYPE_TARGET_TYPE (arg_type)->code () == TYPE_CODE_FUNC)
 	{
 	  /* The FDPIC ABI requires function descriptors to be passed instead
 	     of entry points.  */
@@ -1345,9 +1345,9 @@ frv_return_value (struct gdbarch *gdbarc
 		  struct type *valtype, struct regcache *regcache,
 		  gdb_byte *readbuf, const gdb_byte *writebuf)
 {
-  int struct_return = TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-		      || TYPE_CODE (valtype) == TYPE_CODE_UNION
-		      || TYPE_CODE (valtype) == TYPE_CODE_ARRAY;
+  int struct_return = valtype->code () == TYPE_CODE_STRUCT
+		      || valtype->code () == TYPE_CODE_UNION
+		      || valtype->code () == TYPE_CODE_ARRAY;
 
   if (writebuf != NULL)
     {
@@ -1573,8 +1573,9 @@ frv_gdbarch_init (struct gdbarch_info in
   return gdbarch;
 }
 
+void _initialize_frv_tdep ();
 void
-_initialize_frv_tdep (void)
+_initialize_frv_tdep ()
 {
   register_gdbarch_init (bfd_arch_frv, frv_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frv-tdep.h ./gdb/frv-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/frv-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/frv-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Architecture-dependent code for the Fujitsu FR-V, for GDB, the GNU Debugger.
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ft32-tdep.c ./gdb/ft32-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ft32-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ft32-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FT32.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -299,7 +299,7 @@ ft32_skip_prologue (struct gdbarch *gdba
 	  /* Found a function.  */
 	  sym = lookup_symbol (func_name, NULL, VAR_DOMAIN, NULL).symbol;
 	  /* Don't use line number debug info for assembly source files.  */
-	  if ((sym != NULL) && SYMBOL_LANGUAGE (sym) != language_asm)
+	  if ((sym != NULL) && sym->language () != language_asm)
 	    {
 	      sal = find_pc_line (func_addr, 0);
 	      if (sal.end && sal.end < func_end)
@@ -616,8 +616,9 @@ ft32_gdbarch_init (struct gdbarch_info i
 
 /* Register this machine's init routine.  */
 
+void _initialize_ft32_tdep ();
 void
-_initialize_ft32_tdep (void)
+_initialize_ft32_tdep ()
 {
   register_gdbarch_init (bfd_arch_ft32, ft32_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ft32-tdep.h ./gdb/ft32-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ft32-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ft32-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the FT32.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-typeprint.c ./gdb/f-typeprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-typeprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/f-typeprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for printing Fortran types for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    Contributed by Motorola.  Adapted from the C version by Farooq Butt
    (fmbutt@engage.sps.mot.com).
@@ -65,21 +65,21 @@ f_print_type (struct type *type, const c
   enum type_code code;
 
   f_type_print_base (type, stream, show, level);
-  code = TYPE_CODE (type);
+  code = type->code ();
   if ((varstring != NULL && *varstring != '\0')
       /* Need a space if going to print stars or brackets; but not if we
 	 will print just a type name.  */
       || ((show > 0
-	   || TYPE_NAME (type) == 0)
+	   || type->name () == 0)
           && (code == TYPE_CODE_FUNC
 	      || code == TYPE_CODE_METHOD
 	      || code == TYPE_CODE_ARRAY
 	      || ((code == TYPE_CODE_PTR
 		   || code == TYPE_CODE_REF)
-		  && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC
-		      || (TYPE_CODE (TYPE_TARGET_TYPE (type))
+		  && (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_FUNC
+		      || (TYPE_TARGET_TYPE (type)->code ()
 			  == TYPE_CODE_METHOD)
-		      || (TYPE_CODE (TYPE_TARGET_TYPE (type))
+		      || (TYPE_TARGET_TYPE (type)->code ()
 			  == TYPE_CODE_ARRAY))))))
     fputs_filtered (" ", stream);
   f_type_print_varspec_prefix (type, stream, show, 0);
@@ -114,12 +114,12 @@ f_type_print_varspec_prefix (struct type
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
       f_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 1);
@@ -178,12 +178,12 @@ f_type_print_varspec_suffix (struct type
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
       arrayprint_recurse_level++;
@@ -196,18 +196,18 @@ f_type_print_varspec_suffix (struct type
       else if (type_not_allocated (type))
 	print_rank_only = true;
       else if ((TYPE_ASSOCIATED_PROP (type)
-		&& PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_ASSOCIATED_PROP (type)))
+		&& PROP_CONST != TYPE_ASSOCIATED_PROP (type)->kind ())
 	       || (TYPE_ALLOCATED_PROP (type)
-		   && PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_ALLOCATED_PROP (type)))
+		   && PROP_CONST != TYPE_ALLOCATED_PROP (type)->kind ())
 	       || (TYPE_DATA_LOCATION (type)
-		   && PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_DATA_LOCATION (type))))
+		   && PROP_CONST != TYPE_DATA_LOCATION (type)->kind ()))
 	{
 	  /* This case exist when we ptype a typename which has the dynamic
 	     properties but cannot be resolved as there is no object.  */
 	  print_rank_only = true;
 	}
 
-      if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY)
+      if (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_ARRAY)
 	f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
 				     0, 0, arrayprint_recurse_level,
 				     print_rank_only);
@@ -223,7 +223,7 @@ f_type_print_varspec_suffix (struct type
 	  /* Make sure that, if we have an assumed size array, we
 	       print out a warning and print the upperbound as '*'.  */
 
-	  if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
+	  if (type->bounds ()->high.kind () == PROP_UNDEFINED)
 	    fprintf_filtered (stream, "*");
 	  else
 	    {
@@ -233,7 +233,7 @@ f_type_print_varspec_suffix (struct type
 	    }
 	}
 
-      if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_ARRAY)
+      if (TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_ARRAY)
 	f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
 				     0, 0, arrayprint_recurse_level,
 				     print_rank_only);
@@ -254,7 +254,7 @@ f_type_print_varspec_suffix (struct type
 
     case TYPE_CODE_FUNC:
       {
-	int i, nfields = TYPE_NFIELDS (type);
+	int i, nfields = type->num_fields ();
 
 	f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
 				     passed_a_ptr, 0,
@@ -273,7 +273,7 @@ f_type_print_varspec_suffix (struct type
 		  fputs_filtered (", ", stream);
 		  wrap_here ("    ");
 		}
-	      f_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0, 0);
+	      f_print_type (type->field (i).type (), "", stream, -1, 0, 0);
 	    }
 	fprintf_filtered (stream, ")");
       }
@@ -332,21 +332,21 @@ f_type_print_base (struct type *type, st
   /* When SHOW is zero or less, and there is a valid type name, then always
      just print the type name directly from the type.  */
 
-  if ((show <= 0) && (TYPE_NAME (type) != NULL))
+  if ((show <= 0) && (type->name () != NULL))
     {
       const char *prefix = "";
-      if (TYPE_CODE (type) == TYPE_CODE_UNION)
+      if (type->code () == TYPE_CODE_UNION)
 	prefix = "Type, C_Union :: ";
-      else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+      else if (type->code () == TYPE_CODE_STRUCT)
 	prefix = "Type ";
-      fprintfi_filtered (level, stream, "%s%s", prefix, TYPE_NAME (type));
+      fprintfi_filtered (level, stream, "%s%s", prefix, type->name ());
       return;
     }
 
-  if (TYPE_CODE (type) != TYPE_CODE_TYPEDEF)
+  if (type->code () != TYPE_CODE_TYPEDEF)
     type = check_typedef (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_TYPEDEF:
       f_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
@@ -376,7 +376,7 @@ f_type_print_base (struct type *type, st
       {
 	gdbarch *gdbarch = get_type_arch (type);
 	struct type *void_type = builtin_f_type (gdbarch)->builtin_void;
-	fprintfi_filtered (level, stream, "%s", TYPE_NAME (void_type));
+	fprintfi_filtered (level, stream, "%s", void_type->name ());
       }
       break;
 
@@ -399,54 +399,59 @@ f_type_print_base (struct type *type, st
          through as TYPE_CODE_INT since dbxstclass.h is so
          C-oriented, we must change these to "character" from "char".  */
 
-      if (strcmp (TYPE_NAME (type), "char") == 0)
+      if (strcmp (type->name (), "char") == 0)
 	fprintfi_filtered (level, stream, "character");
       else
 	goto default_case;
       break;
 
     case TYPE_CODE_STRING:
-      /* Strings may have dynamic upperbounds (lengths) like arrays.  */
+      /* Strings may have dynamic upperbounds (lengths) like arrays.  We
+	 check specifically for the PROP_CONST case to indicate that the
+	 dynamic type has been resolved.  If we arrive here having been
+	 asked to print the type of a value with a dynamic type then the
+	 bounds will not have been resolved.  */
 
-      if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
-	fprintfi_filtered (level, stream, "character*(*)");
-      else
+      if (type->bounds ()->high.kind () == PROP_CONST)
 	{
 	  LONGEST upper_bound = f77_get_upperbound (type);
 
 	  fprintf_filtered (stream, "character*%s", pulongest (upper_bound));
 	}
+      else
+	fprintfi_filtered (level, stream, "character*(*)");
       break;
 
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
-      if (TYPE_CODE (type) == TYPE_CODE_UNION)
+      if (type->code () == TYPE_CODE_UNION)
 	fprintfi_filtered (level, stream, "Type, C_Union :: ");
       else
 	fprintfi_filtered (level, stream, "Type ");
-      fputs_filtered (TYPE_NAME (type), stream);
+      fputs_filtered (type->name (), stream);
       /* According to the definition,
          we only print structure elements in case show > 0.  */
       if (show > 0)
 	{
 	  fputs_filtered ("\n", stream);
-	  for (index = 0; index < TYPE_NFIELDS (type); index++)
+	  for (index = 0; index < type->num_fields (); index++)
 	    {
-	      f_type_print_base (TYPE_FIELD_TYPE (type, index), stream,
+	      f_type_print_base (type->field (index).type (), stream,
 				 show - 1, level + 4);
 	      fputs_filtered (" :: ", stream);
-	      fputs_filtered (TYPE_FIELD_NAME (type, index), stream);
-	      f_type_print_varspec_suffix (TYPE_FIELD_TYPE (type, index),
+	      fputs_styled (TYPE_FIELD_NAME (type, index),
+			    variable_name_style.style (), stream);
+	      f_type_print_varspec_suffix (type->field (index).type (),
 					   stream, show - 1, 0, 0, 0, false);
 	      fputs_filtered ("\n", stream);
 	    }
 	  fprintfi_filtered (level, stream, "End Type ");
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	}
       break;
 
     case TYPE_CODE_MODULE:
-      fprintfi_filtered (level, stream, "module %s", TYPE_NAME (type));
+      fprintfi_filtered (level, stream, "module %s", type->name ());
       break;
 
     default_case:
@@ -455,10 +460,10 @@ f_type_print_base (struct type *type, st
          such as fundamental types.  For these, just print whatever
          the type name is, as recorded in the type itself.  If there
          is no type name, then complain.  */
-      if (TYPE_NAME (type) != NULL)
-	fprintfi_filtered (level, stream, "%s", TYPE_NAME (type));
+      if (type->name () != NULL)
+	fprintfi_filtered (level, stream, "%s", type->name ());
       else
-	error (_("Invalid type code (%d) in symbol table."), TYPE_CODE (type));
+	error (_("Invalid type code (%d) in symbol table."), type->code ());
       break;
     }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-valprint.c ./gdb/f-valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/f-valprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/f-valprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for printing Fortran values for GDB, the GNU debugger.
 
-   Copyright (C) 1993-2020 Free Software Foundation, Inc.
+   Copyright (C) 1993-2021 Free Software Foundation, Inc.
 
    Contributed by Motorola.  Adapted from the C definitions by Farooq Butt
    (fmbutt@engage.sps.mot.com), additionally worked over by Stan Shebs.
@@ -46,16 +46,16 @@ int f77_array_offset_tbl[MAX_FORTRAN_DIM
 LONGEST
 f77_get_lowerbound (struct type *type)
 {
-  if (TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED (type))
+  if (type->bounds ()->low.kind () == PROP_UNDEFINED)
     error (_("Lower bound may not be '*' in F77"));
 
-  return TYPE_ARRAY_LOWER_BOUND_VALUE (type);
+  return type->bounds ()->low.const_val ();
 }
 
 LONGEST
 f77_get_upperbound (struct type *type)
 {
-  if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
+  if (type->bounds ()->high.kind () == PROP_UNDEFINED)
     {
       /* We have an assumed size array on our hands.  Assume that
 	 upper_bound == lower_bound so that we show at least 1 element.
@@ -65,7 +65,7 @@ f77_get_upperbound (struct type *type)
       return f77_get_lowerbound (type);
     }
 
-  return TYPE_ARRAY_UPPER_BOUND_VALUE (type);
+  return type->bounds ()->high.const_val ();
 }
 
 /* Obtain F77 adjustable array dimensions.  */
@@ -85,8 +85,8 @@ f77_get_dynamic_length_of_aggregate (str
      This function also works for strings which behave very 
      similarly to arrays.  */
 
-  if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY
-      || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRING)
+  if (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_ARRAY
+      || TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_STRING)
     f77_get_dynamic_length_of_aggregate (TYPE_TARGET_TYPE (type));
 
   /* Recursion ends here, start setting up lengths.  */
@@ -112,10 +112,10 @@ f77_print_array_1 (int nss, int ndimensi
 		   const struct value_print_options *options,
 		   int *elts)
 {
-  struct type *range_type = TYPE_INDEX_TYPE (check_typedef (type));
+  struct type *range_type = check_typedef (type)->index_type ();
   CORE_ADDR addr = address + embedded_offset;
   LONGEST lowerbound, upperbound;
-  int i;
+  LONGEST i;
 
   get_discrete_bounds (range_type, &lowerbound, &upperbound);
 
@@ -124,7 +124,7 @@ f77_print_array_1 (int nss, int ndimensi
       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);
+      size_t byte_stride = type->bit_stride () / (unit_size * 8);
       if (byte_stride == 0)
 	byte_stride = dim_size;
       size_t offs = 0;
@@ -156,10 +156,7 @@ f77_print_array_1 (int nss, int ndimensi
 	{
 	  struct value *elt = value_subscript ((struct value *)val, i);
 
-	  val_print (value_type (elt),
-		     value_embedded_offset (elt),
-		     value_address (elt), stream, recurse,
-		     elt, options, current_language);
+	  common_val_print (elt, stream, recurse, options, current_language);
 
 	  if (i != upperbound)
 	    fprintf_filtered (stream, ", ");
@@ -211,38 +208,35 @@ static const struct generic_val_print_de
   "}"
 };
 
-/* See val_print for a description of the various parameters of this
-   function; they are identical.  */
+/* See f-lang.h.  */
 
 void
-f_val_print (struct type *type, int embedded_offset,
-	     CORE_ADDR address, struct ui_file *stream, int recurse,
-	     struct value *original_value,
-	     const struct value_print_options *options)
+f_value_print_inner (struct value *val, struct ui_file *stream, int recurse,
+		      const struct value_print_options *options)
 {
+  struct type *type = check_typedef (value_type (val));
   struct gdbarch *gdbarch = get_type_arch (type);
   int printed_field = 0; /* Number of fields printed.  */
   struct type *elttype;
   CORE_ADDR addr;
   int index;
-  const gdb_byte *valaddr =value_contents_for_printing (original_value);
+  const gdb_byte *valaddr = value_contents_for_printing (val);
+  const CORE_ADDR address = value_address (val);
 
-  type = check_typedef (type);
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRING:
       f77_get_dynamic_length_of_aggregate (type);
       LA_PRINT_STRING (stream, builtin_type (gdbarch)->builtin_char,
-		       valaddr + embedded_offset,
-		       TYPE_LENGTH (type), NULL, 0, options);
+		       valaddr, TYPE_LENGTH (type), NULL, 0, options);
       break;
 
     case TYPE_CODE_ARRAY:
-      if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_CHAR)
+      if (TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_CHAR)
 	{
 	  fprintf_filtered (stream, "(");
-	  f77_print_array (type, valaddr, embedded_offset,
-			   address, stream, recurse, original_value, options);
+	  f77_print_array (type, valaddr, 0,
+			   address, stream, recurse, val, options);
 	  fprintf_filtered (stream, ")");
 	}
       else
@@ -250,8 +244,7 @@ f_val_print (struct type *type, int embe
 	  struct type *ch_type = TYPE_TARGET_TYPE (type);
 
 	  f77_get_dynamic_length_of_aggregate (type);
-	  LA_PRINT_STRING (stream, ch_type,
-			   valaddr + embedded_offset,
+	  LA_PRINT_STRING (stream, ch_type, valaddr,
 			   TYPE_LENGTH (type) / TYPE_LENGTH (ch_type),
 			   NULL, 0, options);
 	}
@@ -260,18 +253,17 @@ f_val_print (struct type *type, int embe
     case TYPE_CODE_PTR:
       if (options->format && options->format != 's')
 	{
-	  val_print_scalar_formatted (type, embedded_offset,
-				      original_value, options, 0, stream);
+	  value_print_scalar_formatted (val, options, 0, stream);
 	  break;
 	}
       else
 	{
 	  int want_space = 0;
 
-	  addr = unpack_pointer (type, valaddr + embedded_offset);
+	  addr = unpack_pointer (type, valaddr);
 	  elttype = check_typedef (TYPE_TARGET_TYPE (type));
 
-	  if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
+	  if (elttype->code () == TYPE_CODE_FUNC)
 	    {
 	      /* Try to print what function it points to.  */
 	      print_function_pointer_address (options, gdbarch, addr, stream);
@@ -290,7 +282,7 @@ f_val_print (struct type *type, int embe
 	  /* For a pointer to char or unsigned char, also print the string
 	     pointed to, unless pointer is null.  */
 	  if (TYPE_LENGTH (elttype) == 1
-	      && TYPE_CODE (elttype) == TYPE_CODE_INT
+	      && elttype->code () == TYPE_CODE_INT
 	      && (options->format == 0 || options->format == 's')
 	      && addr != 0)
 	    {
@@ -310,12 +302,10 @@ f_val_print (struct type *type, int embe
 
 	  opts.format = (options->format ? options->format
 			 : options->output_format);
-	  val_print_scalar_formatted (type, embedded_offset,
-				      original_value, &opts, 0, stream);
+	  value_print_scalar_formatted (val, &opts, 0, stream);
 	}
       else
-	val_print_scalar_formatted (type, embedded_offset,
-				    original_value, options, 0, stream);
+	value_print_scalar_formatted (val, options, 0, stream);
       break;
 
     case TYPE_CODE_STRUCT:
@@ -323,15 +313,14 @@ f_val_print (struct type *type, int embe
       /* Starting from the Fortran 90 standard, Fortran supports derived
          types.  */
       fprintf_filtered (stream, "( ");
-      for (index = 0; index < TYPE_NFIELDS (type); index++)
+      for (index = 0; index < type->num_fields (); index++)
         {
-	  struct value *field = value_field
-	    ((struct value *)original_value, index);
+	  struct value *field = value_field (val, index);
 
-	  struct type *field_type = check_typedef (TYPE_FIELD_TYPE (type, index));
+	  struct type *field_type = check_typedef (type->field (index).type ());
 
 
-	  if (TYPE_CODE (field_type) != TYPE_CODE_FUNC)
+	  if (field_type->code () != TYPE_CODE_FUNC)
 	    {
 	      const char *field_name;
 
@@ -341,14 +330,13 @@ f_val_print (struct type *type, int embe
 	      field_name = TYPE_FIELD_NAME (type, index);
 	      if (field_name != NULL)
 		{
-		  fputs_filtered (field_name, stream);
+		  fputs_styled (field_name, variable_name_style.style (),
+				stream);
 		  fputs_filtered (" = ", stream);
 		}
 
-	      val_print (value_type (field),
-			 value_embedded_offset (field),
-			 value_address (field), stream, recurse + 1,
-			 field, options, current_language);
+	      common_val_print (field, stream, recurse + 1,
+				options, current_language);
 
 	      ++printed_field;
 	    }
@@ -356,6 +344,27 @@ f_val_print (struct type *type, int embe
       fprintf_filtered (stream, " )");
       break;     
 
+    case TYPE_CODE_BOOL:
+      if (options->format || options->output_format)
+	{
+	  struct value_print_options opts = *options;
+	  opts.format = (options->format ? options->format
+			 : options->output_format);
+	  value_print_scalar_formatted (val, &opts, 0, stream);
+	}
+      else
+	{
+	  LONGEST longval = value_as_long (val);
+	  /* The Fortran standard doesn't specify how logical types are
+	     represented.  Different compilers use different non zero
+	     values to represent logical true.  */
+	  if (longval == 0)
+	    fputs_filtered (f_decorations.false_name, stream);
+	  else
+	    fputs_filtered (f_decorations.true_name, stream);
+	}
+      break;
+
     case TYPE_CODE_REF:
     case TYPE_CODE_FUNC:
     case TYPE_CODE_FLAGS:
@@ -365,12 +374,9 @@ f_val_print (struct type *type, int embe
     case TYPE_CODE_RANGE:
     case TYPE_CODE_UNDEF:
     case TYPE_CODE_COMPLEX:
-    case TYPE_CODE_BOOL:
     case TYPE_CODE_CHAR:
     default:
-      generic_val_print (type, embedded_offset, address,
-			 stream, recurse, original_value, options,
-			 &f_decorations);
+      generic_value_print (val, stream, recurse, options, &f_decorations);
       break;
     }
 }
@@ -479,8 +485,9 @@ info_common_command (const char *comname
     }
 }
 
+void _initialize_f_valprint ();
 void
-_initialize_f_valprint (void)
+_initialize_f_valprint ()
 {
   add_info ("common", info_common_command,
 	    _("Print out the values contained in a Fortran COMMON block."));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gcore ./gdb/gcore
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gcore	2020-03-07 02:10:59.000000000 +0000
+++ ./gdb/gcore	2021-05-21 01:59:56.000000000 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-#   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+#   Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gcore.c ./gdb/gcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gcore.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gcore.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generate a core file for the inferior process.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -145,17 +145,22 @@ gcore_command (const char *args, int fro
 		      "Opening corefile '%s' for output.\n",
 		      corefilename.get ());
 
-  /* Open the output file.  */
-  gdb_bfd_ref_ptr obfd (create_gcore_bfd (corefilename.get ()));
+  if (target_supports_dumpcore ())
+    target_dumpcore (corefilename.get ());
+  else
+    {
+      /* Open the output file.  */
+      gdb_bfd_ref_ptr obfd (create_gcore_bfd (corefilename.get ()));
 
-  /* Arrange to unlink the file on failure.  */
-  gdb::unlinker unlink_file (corefilename.get ());
+      /* Arrange to unlink the file on failure.  */
+      gdb::unlinker unlink_file (corefilename.get ());
 
-  /* Call worker function.  */
-  write_gcore_file (obfd.get ());
+      /* Call worker function.  */
+      write_gcore_file (obfd.get ());
 
-  /* Succeeded.  */
-  unlink_file.keep ();
+      /* Succeeded.  */
+      unlink_file.keep ();
+    }
 
   fprintf_filtered (gdb_stdout, "Saved corefile %s\n", corefilename.get ());
 }
@@ -282,7 +287,7 @@ call_target_sbrk (int sbrk_arg)
   else
     return (bfd_vma) 0;
 
-  gdbarch = get_objfile_arch (sbrk_objf);
+  gdbarch = sbrk_objf->arch ();
   target_sbrk_arg = value_from_longest (builtin_type (gdbarch)->builtin_int, 
 					sbrk_arg);
   gdb_assert (target_sbrk_arg);
@@ -590,8 +595,9 @@ gcore_memory_sections (bfd *obfd)
   return 1;
 }
 
+void _initialize_gcore ();
 void
-_initialize_gcore (void)
+_initialize_gcore ()
 {
   add_com ("generate-core-file", class_files, gcore_command, _("\
 Save a core file with the current state of the debugged process.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gcore.h ./gdb/gcore.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gcore.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gcore.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for reading/writing gcore files.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -24,7 +24,6 @@
 
 extern gdb_bfd_ref_ptr create_gcore_bfd (const char *filename);
 extern void write_gcore_file (bfd *obfd);
-extern bfd *load_corefile (char *filename, int from_tty);
 extern int objfile_find_memory_regions (struct target_ops *self,
 					find_memory_region_ftype func,
 					void *obfd);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gcore.in ./gdb/gcore.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gcore.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gcore.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-#   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+#   Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbarch.c ./gdb/gdbarch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbarch.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbarch.c	2021-05-21 01:57:24.000000000 +0000
@@ -3,7 +3,7 @@
 
 /* Dynamic architecture support for GDB, the GNU debugger.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -20,17 +20,7 @@
    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 file was created with the aid of ``gdbarch.sh''.
-
-   The Bourne shell script ``gdbarch.sh'' creates the files
-   ``new-gdbarch.c'' and ``new-gdbarch.h and then compares them
-   against the existing ``gdbarch.[hc]''.  Any differences found
-   being reported.
-
-   If editing this file, please also run gdbarch.sh and merge any
-   changes into that script. Conversely, when making sweeping changes
-   to this file, modifying gdbarch.sh and using its output may prove
-   easier.  */
+/* This file was created with the aid of ``gdbarch.sh''.  */
 
 
 #include "defs.h"
@@ -176,6 +166,8 @@ struct gdbarch
   int int_bit;
   int long_bit;
   int long_long_bit;
+  int bfloat16_bit;
+  const struct floatformat ** bfloat16_format;
   int half_bit;
   const struct floatformat ** half_format;
   int float_bit;
@@ -201,7 +193,7 @@ struct gdbarch
   int num_pseudo_regs;
   gdbarch_ax_pseudo_register_collect_ftype *ax_pseudo_register_collect;
   gdbarch_ax_pseudo_register_push_stack_ftype *ax_pseudo_register_push_stack;
-  gdbarch_handle_segmentation_fault_ftype *handle_segmentation_fault;
+  gdbarch_report_signal_info_ftype *report_signal_info;
   int sp_regnum;
   int pc_regnum;
   int ps_regnum;
@@ -302,7 +294,6 @@ struct gdbarch
   gdbarch_relocate_instruction_ftype *relocate_instruction;
   gdbarch_overlay_update_ftype *overlay_update;
   gdbarch_core_read_description_ftype *core_read_description;
-  gdbarch_static_transform_name_ftype *static_transform_name;
   int sofun_address_maybe_missing;
   gdbarch_process_record_ftype *process_record;
   gdbarch_process_record_signal_ftype *process_record_signal;
@@ -345,6 +336,7 @@ struct gdbarch
   gdbarch_insn_is_call_ftype *insn_is_call;
   gdbarch_insn_is_ret_ftype *insn_is_ret;
   gdbarch_insn_is_jump_ftype *insn_is_jump;
+  gdbarch_program_breakpoint_here_p_ftype *program_breakpoint_here_p;
   gdbarch_auxv_parse_ftype *auxv_parse;
   gdbarch_print_auxv_entry_ftype *print_auxv_entry;
   gdbarch_vsyscall_range_ftype *vsyscall_range;
@@ -358,6 +350,7 @@ struct gdbarch
   const disasm_options_and_args_t * valid_disassembler_options;
   gdbarch_type_align_ftype *type_align;
   gdbarch_get_pc_address_flags_ftype *get_pc_address_flags;
+  gdbarch_read_core_file_mappings_ftype *read_core_file_mappings;
 };
 
 /* Create a new ``struct gdbarch'' based on information provided by
@@ -392,6 +385,7 @@ gdbarch_alloc (const struct gdbarch_info
   gdbarch->int_bit = 4*TARGET_CHAR_BIT;
   gdbarch->long_bit = 4*TARGET_CHAR_BIT;
   gdbarch->long_long_bit = 2*gdbarch->long_bit;
+  gdbarch->bfloat16_bit = 2*TARGET_CHAR_BIT;
   gdbarch->half_bit = 2*TARGET_CHAR_BIT;
   gdbarch->float_bit = 4*TARGET_CHAR_BIT;
   gdbarch->double_bit = 8*TARGET_CHAR_BIT;
@@ -464,6 +458,7 @@ gdbarch_alloc (const struct gdbarch_info
   gdbarch->insn_is_call = default_insn_is_call;
   gdbarch->insn_is_ret = default_insn_is_ret;
   gdbarch->insn_is_jump = default_insn_is_jump;
+  gdbarch->program_breakpoint_here_p = default_program_breakpoint_here_p;
   gdbarch->print_auxv_entry = default_print_auxv_entry;
   gdbarch->vsyscall_range = default_vsyscall_range;
   gdbarch->infcall_mmap = default_infcall_mmap;
@@ -473,6 +468,7 @@ gdbarch_alloc (const struct gdbarch_info
   gdbarch->addressable_memory_unit_size = default_addressable_memory_unit_size;
   gdbarch->type_align = default_type_align;
   gdbarch->get_pc_address_flags = default_get_pc_address_flags;
+  gdbarch->read_core_file_mappings = default_read_core_file_mappings;
   /* gdbarch_alloc() */
 
   return gdbarch;
@@ -530,6 +526,9 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of int_bit, invalid_p == 0 */
   /* Skip verify of long_bit, invalid_p == 0 */
   /* Skip verify of long_long_bit, invalid_p == 0 */
+  /* Skip verify of bfloat16_bit, invalid_p == 0 */
+  if (gdbarch->bfloat16_format == 0)
+    gdbarch->bfloat16_format = floatformats_bfloat16;
   /* Skip verify of half_bit, invalid_p == 0 */
   if (gdbarch->half_format == 0)
     gdbarch->half_format = floatformats_ieee_half;
@@ -564,7 +563,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of num_pseudo_regs, invalid_p == 0 */
   /* Skip verify of ax_pseudo_register_collect, has predicate.  */
   /* Skip verify of ax_pseudo_register_push_stack, has predicate.  */
-  /* Skip verify of handle_segmentation_fault, has predicate.  */
+  /* Skip verify of report_signal_info, has predicate.  */
   /* Skip verify of sp_regnum, invalid_p == 0 */
   /* Skip verify of pc_regnum, invalid_p == 0 */
   /* Skip verify of ps_regnum, invalid_p == 0 */
@@ -666,7 +665,6 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of relocate_instruction, has predicate.  */
   /* Skip verify of overlay_update, has predicate.  */
   /* Skip verify of core_read_description, has predicate.  */
-  /* Skip verify of static_transform_name, has predicate.  */
   /* Skip verify of sofun_address_maybe_missing, invalid_p == 0 */
   /* Skip verify of process_record, has predicate.  */
   /* Skip verify of process_record_signal, has predicate.  */
@@ -708,6 +706,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of insn_is_call, invalid_p == 0 */
   /* Skip verify of insn_is_ret, invalid_p == 0 */
   /* Skip verify of insn_is_jump, invalid_p == 0 */
+  /* Skip verify of program_breakpoint_here_p, invalid_p == 0 */
   /* Skip verify of auxv_parse, has predicate.  */
   /* Skip verify of print_auxv_entry, invalid_p == 0 */
   /* Skip verify of vsyscall_range, invalid_p == 0 */
@@ -721,6 +720,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of valid_disassembler_options, invalid_p == 0 */
   /* Skip verify of type_align, invalid_p == 0 */
   /* Skip verify of get_pc_address_flags, invalid_p == 0 */
+  /* Skip verify of read_core_file_mappings, invalid_p == 0 */
   if (!log.empty ())
     internal_error (__FILE__, __LINE__,
                     _("verify_gdbarch: the following are invalid ...%s"),
@@ -814,6 +814,12 @@ gdbarch_dump (struct gdbarch *gdbarch, s
                       "gdbarch_dump: bfd_arch_info = %s\n",
                       gdbarch_bfd_arch_info (gdbarch)->printable_name);
   fprintf_unfiltered (file,
+                      "gdbarch_dump: bfloat16_bit = %s\n",
+                      plongest (gdbarch->bfloat16_bit));
+  fprintf_unfiltered (file,
+                      "gdbarch_dump: bfloat16_format = %s\n",
+                      pformat (gdbarch->bfloat16_format));
+  fprintf_unfiltered (file,
                       "gdbarch_dump: breakpoint_from_pc = <%s>\n",
                       host_address_to_string (gdbarch->breakpoint_from_pc));
   fprintf_unfiltered (file,
@@ -1096,12 +1102,6 @@ gdbarch_dump (struct gdbarch *gdbarch, s
                       "gdbarch_dump: half_format = %s\n",
                       pformat (gdbarch->half_format));
   fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_handle_segmentation_fault_p() = %d\n",
-                      gdbarch_handle_segmentation_fault_p (gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: handle_segmentation_fault = <%s>\n",
-                      host_address_to_string (gdbarch->handle_segmentation_fault));
-  fprintf_unfiltered (file,
                       "gdbarch_dump: has_dos_based_file_system = %s\n",
                       plongest (gdbarch->has_dos_based_file_system));
   fprintf_unfiltered (file,
@@ -1249,6 +1249,9 @@ gdbarch_dump (struct gdbarch *gdbarch, s
                       "gdbarch_dump: process_record_signal = <%s>\n",
                       host_address_to_string (gdbarch->process_record_signal));
   fprintf_unfiltered (file,
+                      "gdbarch_dump: program_breakpoint_here_p = <%s>\n",
+                      host_address_to_string (gdbarch->program_breakpoint_here_p));
+  fprintf_unfiltered (file,
                       "gdbarch_dump: ps_regnum = %s\n",
                       plongest (gdbarch->ps_regnum));
   fprintf_unfiltered (file,
@@ -1288,6 +1291,9 @@ gdbarch_dump (struct gdbarch *gdbarch, s
                       "gdbarch_dump: ravenscar_ops = %s\n",
                       host_address_to_string (gdbarch->ravenscar_ops));
   fprintf_unfiltered (file,
+                      "gdbarch_dump: read_core_file_mappings = <%s>\n",
+                      host_address_to_string (gdbarch->read_core_file_mappings));
+  fprintf_unfiltered (file,
                       "gdbarch_dump: gdbarch_read_pc_p() = %d\n",
                       gdbarch_read_pc_p (gdbarch));
   fprintf_unfiltered (file,
@@ -1327,6 +1333,12 @@ gdbarch_dump (struct gdbarch *gdbarch, s
                       "gdbarch_dump: remote_register_number = <%s>\n",
                       host_address_to_string (gdbarch->remote_register_number));
   fprintf_unfiltered (file,
+                      "gdbarch_dump: gdbarch_report_signal_info_p() = %d\n",
+                      gdbarch_report_signal_info_p (gdbarch));
+  fprintf_unfiltered (file,
+                      "gdbarch_dump: report_signal_info = <%s>\n",
+                      host_address_to_string (gdbarch->report_signal_info));
+  fprintf_unfiltered (file,
                       "gdbarch_dump: return_in_first_hidden_param_p = <%s>\n",
                       host_address_to_string (gdbarch->return_in_first_hidden_param_p));
   fprintf_unfiltered (file,
@@ -1441,12 +1453,6 @@ gdbarch_dump (struct gdbarch *gdbarch, s
                       "gdbarch_dump: stap_register_suffixes = %s\n",
                       pstring_list (gdbarch->stap_register_suffixes));
   fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_static_transform_name_p() = %d\n",
-                      gdbarch_static_transform_name_p (gdbarch));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: static_transform_name = <%s>\n",
-                      host_address_to_string (gdbarch->static_transform_name));
-  fprintf_unfiltered (file,
                       "gdbarch_dump: sw_breakpoint_from_kind = <%s>\n",
                       host_address_to_string (gdbarch->sw_breakpoint_from_kind));
   fprintf_unfiltered (file,
@@ -1627,6 +1633,39 @@ set_gdbarch_long_long_bit (struct gdbarc
 }
 
 int
+gdbarch_bfloat16_bit (struct gdbarch *gdbarch)
+{
+  gdb_assert (gdbarch != NULL);
+  /* Skip verify of bfloat16_bit, invalid_p == 0 */
+  if (gdbarch_debug >= 2)
+    fprintf_unfiltered (gdb_stdlog, "gdbarch_bfloat16_bit called\n");
+  return gdbarch->bfloat16_bit;
+}
+
+void
+set_gdbarch_bfloat16_bit (struct gdbarch *gdbarch,
+                          int bfloat16_bit)
+{
+  gdbarch->bfloat16_bit = bfloat16_bit;
+}
+
+const struct floatformat **
+gdbarch_bfloat16_format (struct gdbarch *gdbarch)
+{
+  gdb_assert (gdbarch != NULL);
+  if (gdbarch_debug >= 2)
+    fprintf_unfiltered (gdb_stdlog, "gdbarch_bfloat16_format called\n");
+  return gdbarch->bfloat16_format;
+}
+
+void
+set_gdbarch_bfloat16_format (struct gdbarch *gdbarch,
+                             const struct floatformat ** bfloat16_format)
+{
+  gdbarch->bfloat16_format = bfloat16_format;
+}
+
+int
 gdbarch_half_bit (struct gdbarch *gdbarch)
 {
   gdb_assert (gdbarch != NULL);
@@ -2102,27 +2141,27 @@ set_gdbarch_ax_pseudo_register_push_stac
 }
 
 int
-gdbarch_handle_segmentation_fault_p (struct gdbarch *gdbarch)
+gdbarch_report_signal_info_p (struct gdbarch *gdbarch)
 {
   gdb_assert (gdbarch != NULL);
-  return gdbarch->handle_segmentation_fault != NULL;
+  return gdbarch->report_signal_info != NULL;
 }
 
 void
-gdbarch_handle_segmentation_fault (struct gdbarch *gdbarch, struct ui_out *uiout)
+gdbarch_report_signal_info (struct gdbarch *gdbarch, struct ui_out *uiout, enum gdb_signal siggnal)
 {
   gdb_assert (gdbarch != NULL);
-  gdb_assert (gdbarch->handle_segmentation_fault != NULL);
+  gdb_assert (gdbarch->report_signal_info != NULL);
   if (gdbarch_debug >= 2)
-    fprintf_unfiltered (gdb_stdlog, "gdbarch_handle_segmentation_fault called\n");
-  gdbarch->handle_segmentation_fault (gdbarch, uiout);
+    fprintf_unfiltered (gdb_stdlog, "gdbarch_report_signal_info called\n");
+  gdbarch->report_signal_info (gdbarch, uiout, siggnal);
 }
 
 void
-set_gdbarch_handle_segmentation_fault (struct gdbarch *gdbarch,
-                                       gdbarch_handle_segmentation_fault_ftype handle_segmentation_fault)
+set_gdbarch_report_signal_info (struct gdbarch *gdbarch,
+                                gdbarch_report_signal_info_ftype report_signal_info)
 {
-  gdbarch->handle_segmentation_fault = handle_segmentation_fault;
+  gdbarch->report_signal_info = report_signal_info;
 }
 
 int
@@ -3930,7 +3969,7 @@ gdbarch_displaced_step_copy_insn_p (stru
   return gdbarch->displaced_step_copy_insn != NULL;
 }
 
-struct displaced_step_closure *
+displaced_step_closure_up
 gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
 {
   gdb_assert (gdbarch != NULL);
@@ -4080,30 +4119,6 @@ set_gdbarch_core_read_description (struc
 }
 
 int
-gdbarch_static_transform_name_p (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  return gdbarch->static_transform_name != NULL;
-}
-
-const char *
-gdbarch_static_transform_name (struct gdbarch *gdbarch, const char *name)
-{
-  gdb_assert (gdbarch != NULL);
-  gdb_assert (gdbarch->static_transform_name != NULL);
-  if (gdbarch_debug >= 2)
-    fprintf_unfiltered (gdb_stdlog, "gdbarch_static_transform_name called\n");
-  return gdbarch->static_transform_name (name);
-}
-
-void
-set_gdbarch_static_transform_name (struct gdbarch *gdbarch,
-                                   gdbarch_static_transform_name_ftype static_transform_name)
-{
-  gdbarch->static_transform_name = static_transform_name;
-}
-
-int
 gdbarch_sofun_address_maybe_missing (struct gdbarch *gdbarch)
 {
   gdb_assert (gdbarch != NULL);
@@ -4928,6 +4943,23 @@ set_gdbarch_insn_is_jump (struct gdbarch
   gdbarch->insn_is_jump = insn_is_jump;
 }
 
+bool
+gdbarch_program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
+{
+  gdb_assert (gdbarch != NULL);
+  gdb_assert (gdbarch->program_breakpoint_here_p != NULL);
+  if (gdbarch_debug >= 2)
+    fprintf_unfiltered (gdb_stdlog, "gdbarch_program_breakpoint_here_p called\n");
+  return gdbarch->program_breakpoint_here_p (gdbarch, address);
+}
+
+void
+set_gdbarch_program_breakpoint_here_p (struct gdbarch *gdbarch,
+                                       gdbarch_program_breakpoint_here_p_ftype program_breakpoint_here_p)
+{
+  gdbarch->program_breakpoint_here_p = program_breakpoint_here_p;
+}
+
 int
 gdbarch_auxv_parse_p (struct gdbarch *gdbarch)
 {
@@ -5156,6 +5188,23 @@ set_gdbarch_get_pc_address_flags (struct
   gdbarch->get_pc_address_flags = get_pc_address_flags;
 }
 
+void
+gdbarch_read_core_file_mappings (struct gdbarch *gdbarch, struct bfd *cbfd,gdb::function_view<void (ULONGEST count)> pre_loop_cb,gdb::function_view<void (int num, ULONGEST start, ULONGEST end, ULONGEST file_ofs, const char *filename, const void *other)> loop_cb)
+{
+  gdb_assert (gdbarch != NULL);
+  gdb_assert (gdbarch->read_core_file_mappings != NULL);
+  if (gdbarch_debug >= 2)
+    fprintf_unfiltered (gdb_stdlog, "gdbarch_read_core_file_mappings called\n");
+  gdbarch->read_core_file_mappings (gdbarch, cbfd, pre_loop_cb, loop_cb);
+}
+
+void
+set_gdbarch_read_core_file_mappings (struct gdbarch *gdbarch,
+                                     gdbarch_read_core_file_mappings_ftype read_core_file_mappings)
+{
+  gdbarch->read_core_file_mappings = read_core_file_mappings;
+}
+
 
 /* Keep a registry of per-architecture data-pointers required by GDB
    modules.  */
@@ -5227,20 +5276,6 @@ alloc_gdbarch_data (struct gdbarch *gdba
   gdbarch->data = GDBARCH_OBSTACK_CALLOC (gdbarch, gdbarch->nr_data, void *);
 }
 
-/* Initialize the current value of the specified per-architecture
-   data-pointer.  */
-
-void
-deprecated_set_gdbarch_data (struct gdbarch *gdbarch,
-			     struct gdbarch_data *data,
-			     void *pointer)
-{
-  gdb_assert (data->index < gdbarch->nr_data);
-  gdb_assert (gdbarch->data[data->index] == NULL);
-  gdb_assert (data->pre_init == NULL);
-  gdbarch->data[data->index] = pointer;
-}
-
 /* Return the current value of the specified per-architecture
    data-pointer.  */
 
@@ -5270,11 +5305,9 @@ gdbarch_data (struct gdbarch *gdbarch, s
 	  data->init_p = 1;
 	}
       else
-	/* The architecture initialization hasn't completed - punt -
-	 hope that the caller knows what they are doing.  Once
-	 deprecated_set_gdbarch_data has been initialized, this can be
-	 changed to an internal error.  */
-	return NULL;
+	internal_error (__FILE__, __LINE__,
+			_("gdbarch post-init data field can only be used "
+			  "after gdbarch is fully initialised"));
       gdb_assert (gdbarch->data[data->index] != NULL);
     }
   return gdbarch->data[data->index];
@@ -5548,8 +5581,9 @@ target_gdbarch (void)
   return current_inferior ()->gdbarch;
 }
 
+void _initialize_gdbarch ();
 void
-_initialize_gdbarch (void)
+_initialize_gdbarch ()
 {
   add_setshow_zuinteger_cmd ("arch", class_maintenance, &gdbarch_debug, _("\
 Set architecture debugging."), _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbarch.h ./gdb/gdbarch.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbarch.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbarch.h	2021-05-21 01:57:24.000000000 +0000
@@ -3,7 +3,7 @@
 
 /* Dynamic architecture support for GDB, the GNU debugger.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -20,17 +20,7 @@
    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 file was created with the aid of ``gdbarch.sh''.
-
-   The Bourne shell script ``gdbarch.sh'' creates the files
-   ``new-gdbarch.c'' and ``new-gdbarch.h and then compares them
-   against the existing ``gdbarch.[hc]''.  Any differences found
-   being reported.
-
-   If editing this file, please also run gdbarch.sh and merge any
-   changes into that script. Conversely, when making sweeping changes
-   to this file, modifying gdbarch.sh and using its output may prove
-   easier.  */
+/* This file was created with the aid of ``gdbarch.sh''.  */
 
 #ifndef GDBARCH_H
 #define GDBARCH_H
@@ -39,6 +29,8 @@
 #include "frame.h"
 #include "dis-asm.h"
 #include "gdb_obstack.h"
+#include "infrun.h"
+#include "osabi.h"
 
 struct floatformat;
 struct ui_file;
@@ -55,7 +47,6 @@ struct obstack;
 struct bp_target_info;
 struct target_desc;
 struct symbol;
-struct displaced_step_closure;
 struct syscall;
 struct agent_expr;
 struct axs_value;
@@ -167,12 +158,18 @@ extern void set_gdbarch_long_bit (struct
 extern int gdbarch_long_long_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_long_long_bit (struct gdbarch *gdbarch, int long_long_bit);
 
-/* The ABI default bit-size and format for "half", "float", "double", and
+/* The ABI default bit-size and format for "bfloat16", "half", "float", "double", and
    "long double".  These bit/format pairs should eventually be combined
    into a single object.  For the moment, just initialize them as a pair.
    Each format describes both the big and little endian layouts (if
    useful). */
 
+extern int gdbarch_bfloat16_bit (struct gdbarch *gdbarch);
+extern void set_gdbarch_bfloat16_bit (struct gdbarch *gdbarch, int bfloat16_bit);
+
+extern const struct floatformat ** gdbarch_bfloat16_format (struct gdbarch *gdbarch);
+extern void set_gdbarch_bfloat16_format (struct gdbarch *gdbarch, const struct floatformat ** bfloat16_format);
+
 extern int gdbarch_half_bit (struct gdbarch *gdbarch);
 extern void set_gdbarch_half_bit (struct gdbarch *gdbarch, int half_bit);
 
@@ -330,16 +327,15 @@ typedef int (gdbarch_ax_pseudo_register_
 extern int gdbarch_ax_pseudo_register_push_stack (struct gdbarch *gdbarch, struct agent_expr *ax, int reg);
 extern void set_gdbarch_ax_pseudo_register_push_stack (struct gdbarch *gdbarch, gdbarch_ax_pseudo_register_push_stack_ftype *ax_pseudo_register_push_stack);
 
-/* Some targets/architectures can do extra processing/display of
-   segmentation faults.  E.g., Intel MPX boundary faults.
-   Call the architecture dependent function to handle the fault.
+/* Some architectures can display additional information for specific
+   signals.
    UIOUT is the output stream where the handler will place information. */
 
-extern int gdbarch_handle_segmentation_fault_p (struct gdbarch *gdbarch);
+extern int gdbarch_report_signal_info_p (struct gdbarch *gdbarch);
 
-typedef void (gdbarch_handle_segmentation_fault_ftype) (struct gdbarch *gdbarch, struct ui_out *uiout);
-extern void gdbarch_handle_segmentation_fault (struct gdbarch *gdbarch, struct ui_out *uiout);
-extern void set_gdbarch_handle_segmentation_fault (struct gdbarch *gdbarch, gdbarch_handle_segmentation_fault_ftype *handle_segmentation_fault);
+typedef void (gdbarch_report_signal_info_ftype) (struct gdbarch *gdbarch, struct ui_out *uiout, enum gdb_signal siggnal);
+extern void gdbarch_report_signal_info (struct gdbarch *gdbarch, struct ui_out *uiout, enum gdb_signal siggnal);
+extern void set_gdbarch_report_signal_info (struct gdbarch *gdbarch, gdbarch_report_signal_info_ftype *report_signal_info);
 
 /* GDB's standard (or well known) register numbers.  These can map onto
    a real register or a pseudo (computed) register or not be defined at
@@ -1016,9 +1012,7 @@ extern void set_gdbarch_max_insn_length
    not the copy at TO.  The caller should update it to point at TO later.
   
    Return a pointer to data of the architecture's choice to be passed
-   to gdbarch_displaced_step_fixup.  Or, return NULL to indicate that
-   the instruction's effects have been completely simulated, with the
-   resulting state written back to REGS.
+   to gdbarch_displaced_step_fixup.
   
    For a general explanation of displaced stepping and how GDB uses it,
    see the comments in infrun.c.
@@ -1036,8 +1030,8 @@ extern void set_gdbarch_max_insn_length
 
 extern int gdbarch_displaced_step_copy_insn_p (struct gdbarch *gdbarch);
 
-typedef struct displaced_step_closure * (gdbarch_displaced_step_copy_insn_ftype) (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs);
-extern struct displaced_step_closure * gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs);
+typedef displaced_step_closure_up (gdbarch_displaced_step_copy_insn_ftype) (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs);
+extern displaced_step_closure_up gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs);
 extern void set_gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, gdbarch_displaced_step_copy_insn_ftype *displaced_step_copy_insn);
 
 /* Return true if GDB should use hardware single-stepping to execute
@@ -1121,14 +1115,6 @@ typedef const struct target_desc * (gdba
 extern const struct target_desc * gdbarch_core_read_description (struct gdbarch *gdbarch, struct target_ops *target, bfd *abfd);
 extern void set_gdbarch_core_read_description (struct gdbarch *gdbarch, gdbarch_core_read_description_ftype *core_read_description);
 
-/* Handle special encoding of static variables in stabs debug info. */
-
-extern int gdbarch_static_transform_name_p (struct gdbarch *gdbarch);
-
-typedef const char * (gdbarch_static_transform_name_ftype) (const char *name);
-extern const char * gdbarch_static_transform_name (struct gdbarch *gdbarch, const char *name);
-extern void set_gdbarch_static_transform_name (struct gdbarch *gdbarch, gdbarch_static_transform_name_ftype *static_transform_name);
-
 /* Set if the address in N_SO or N_FUN stabs may be zero. */
 
 extern int gdbarch_sofun_address_maybe_missing (struct gdbarch *gdbarch);
@@ -1545,6 +1531,13 @@ typedef int (gdbarch_insn_is_jump_ftype)
 extern int gdbarch_insn_is_jump (struct gdbarch *gdbarch, CORE_ADDR addr);
 extern void set_gdbarch_insn_is_jump (struct gdbarch *gdbarch, gdbarch_insn_is_jump_ftype *insn_is_jump);
 
+/* Return true if there's a program/permanent breakpoint planted in
+   memory at ADDRESS, return false otherwise. */
+
+typedef bool (gdbarch_program_breakpoint_here_p_ftype) (struct gdbarch *gdbarch, CORE_ADDR address);
+extern bool gdbarch_program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address);
+extern void set_gdbarch_program_breakpoint_here_p (struct gdbarch *gdbarch, gdbarch_program_breakpoint_here_p_ftype *program_breakpoint_here_p);
+
 /* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
    Return 0 if *READPTR is already at the end of the buffer.
    Return -1 if there is insufficient buffer for a whole entry.
@@ -1640,6 +1633,12 @@ typedef std::string (gdbarch_get_pc_addr
 extern std::string gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, frame_info *frame, CORE_ADDR pc);
 extern void set_gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, gdbarch_get_pc_address_flags_ftype *get_pc_address_flags);
 
+/* Read core file mappings */
+
+typedef void (gdbarch_read_core_file_mappings_ftype) (struct gdbarch *gdbarch, struct bfd *cbfd,gdb::function_view<void (ULONGEST count)> pre_loop_cb,gdb::function_view<void (int num, ULONGEST start, ULONGEST end, ULONGEST file_ofs, const char *filename, const void *other)> loop_cb);
+extern void gdbarch_read_core_file_mappings (struct gdbarch *gdbarch, struct bfd *cbfd,gdb::function_view<void (ULONGEST count)> pre_loop_cb,gdb::function_view<void (int num, ULONGEST start, ULONGEST end, ULONGEST file_ofs, const char *filename, const void *other)> loop_cb);
+extern void set_gdbarch_read_core_file_mappings (struct gdbarch *gdbarch, gdbarch_read_core_file_mappings_ftype *read_core_file_mappings);
+
 extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch);
 
 
@@ -1851,9 +1850,6 @@ typedef void *(gdbarch_data_pre_init_fty
 extern struct gdbarch_data *gdbarch_data_register_pre_init (gdbarch_data_pre_init_ftype *init);
 typedef void *(gdbarch_data_post_init_ftype) (struct gdbarch *gdbarch);
 extern struct gdbarch_data *gdbarch_data_register_post_init (gdbarch_data_post_init_ftype *init);
-extern void deprecated_set_gdbarch_data (struct gdbarch *gdbarch,
-                                         struct gdbarch_data *data,
-			                 void *pointer);
 
 extern void *gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbarch-selftests.c ./gdb/gdbarch-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbarch-selftests.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbarch-selftests.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for gdbarch for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,16 +18,14 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
-#if GDB_SELF_TEST
 #include "gdbsupport/selftest.h"
 #include "selftest-arch.h"
-#include "inferior.h"
-#include "gdbthread.h"
 #include "target.h"
 #include "test-target.h"
 #include "target-float.h"
 #include "gdbsupport/def-vector.h"
 #include "gdbarch.h"
+#include "scoped-mock-context.h"
 
 namespace selftests {
 
@@ -71,45 +69,7 @@ register_to_value_test (struct gdbarch *
       builtin->builtin_char32,
     };
 
-  /* Error out if debugging something, because we're going to push the
-     test target, which would pop any existing target.  */
-  if (current_top_target ()->stratum () >= process_stratum)
-   error (_("target already pushed"));
-
-  /* Create a mock environment.  An inferior with a thread, with a
-     process_stratum target pushed.  */
-
-  test_target_ops mock_target;
-  ptid_t mock_ptid (1, 1);
-  inferior mock_inferior (mock_ptid.pid ());
-  address_space mock_aspace {};
-  mock_inferior.gdbarch = gdbarch;
-  mock_inferior.aspace = &mock_aspace;
-  thread_info mock_thread (&mock_inferior, mock_ptid);
-
-  scoped_restore restore_thread_list
-    = make_scoped_restore (&mock_inferior.thread_list, &mock_thread);
-
-  /* Add the mock inferior to the inferior list so that look ups by
-     target+ptid can find it.  */
-  scoped_restore restore_inferior_list
-    = make_scoped_restore (&inferior_list);
-  inferior_list = &mock_inferior;
-
-  /* Switch to the mock inferior.  */
-  scoped_restore_current_inferior restore_current_inferior;
-  set_current_inferior (&mock_inferior);
-
-  /* Push the process_stratum target so we can mock accessing
-     registers.  */
-  push_target (&mock_target);
-
-  /* Pop it again on exit (return/exception).  */
-  SCOPE_EXIT { pop_all_targets_at_and_above (process_stratum); };
-
-  /* Switch to the mock thread.  */
-  scoped_restore restore_inferior_ptid
-    = make_scoped_restore (&inferior_ptid, mock_ptid);
+  scoped_mock_context<test_target_ops> mockctx (gdbarch);
 
   struct frame_info *frame = get_current_frame ();
   const int num_regs = gdbarch_num_cooked_regs (gdbarch);
@@ -124,7 +84,7 @@ register_to_value_test (struct gdbarch *
 	    {
 	      std::vector<gdb_byte> expected (TYPE_LENGTH (type), 0);
 
-	      if (TYPE_CODE (type) == TYPE_CODE_FLT)
+	      if (type->code () == TYPE_CODE_FLT)
 		{
 		  /* Generate valid float format.  */
 		  target_float_from_string (expected.data (), type, "1.25");
@@ -163,13 +123,11 @@ register_to_value_test (struct gdbarch *
 }
 
 } // namespace selftests
-#endif /* GDB_SELF_TEST */
 
+void _initialize_gdbarch_selftests ();
 void
-_initialize_gdbarch_selftests (void)
+_initialize_gdbarch_selftests ()
 {
-#if GDB_SELF_TEST
   selftests::register_test_foreach_arch ("register_to_value",
 					 selftests::register_to_value_test);
-#endif
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbarch.sh ./gdb/gdbarch.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbarch.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbarch.sh	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
 
 # Architecture commands for GDB, the GNU debugger.
 #
-# Copyright (C) 1998-2020 Free Software Foundation, Inc.
+# Copyright (C) 1998-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
@@ -24,22 +24,6 @@
 LANG=C ; export LANG
 LC_ALL=C ; export LC_ALL
 
-
-compare_new ()
-{
-    file=$1
-    if test ! -r ${file}
-    then
-	echo "${file} missing? cp new-${file} ${file}" 1>&2
-    elif diff -u ${file} new-${file}
-    then
-	echo "${file} unchanged" 1>&2
-    else
-	echo "${file} has changed? cp new-${file} ${file}" 1>&2
-    fi
-}
-
-
 # Format of the input table
 read="class returntype function formal actual staticdefault predefault postdefault invalid_p print garbage_at_eol"
 
@@ -50,6 +34,7 @@ do_read ()
     # On some SH's, 'read' trims leading and trailing whitespace by
     # default (e.g., bash), while on others (e.g., dash), it doesn't.
     # Set IFS to empty to disable the trimming everywhere.
+    # shellcheck disable=SC2162
     while IFS='' read line
     do
 	if test "${line}" = ""
@@ -67,15 +52,15 @@ do_read ()
 	    # The semantics of IFS varies between different SH's.  Some
 	    # treat ``;;' as three fields while some treat it as just two.
 	    # Work around this by eliminating ``;;'' ....
-	    line="`echo "${line}" | sed -e 's/;;/; ;/g' -e 's/;;/; ;/g'`"
+	    line="$(echo "${line}" | sed -e 's/;;/; ;/g' -e 's/;;/; ;/g')"
 
 	    OFS="${IFS}" ; IFS="[;]"
-	    eval read ${read} <<EOF
+	    eval read "${read}" <<EOF
 ${line}
 EOF
 	    IFS="${OFS}"
 
-	    if test -n "${garbage_at_eol}"
+	    if test -n "${garbage_at_eol:-}"
 	    then
 		echo "Garbage at end-of-line in ${line}" 1>&2
 		kill $$
@@ -86,26 +71,26 @@ EOF
 	    # that ended up with just that space character.
 	    for r in ${read}
 	    do
-		if eval test \"\${${r}}\" = \"\ \"
+		if eval test "\"\${${r}}\" = ' '"
 		then
-		    eval ${r}=""
+		    eval "${r}="
 		fi
 	    done
 
 	    case "${class}" in
-		m ) staticdefault="${predefault}" ;;
+		m ) staticdefault="${predefault:-}" ;;
 		M ) staticdefault="0" ;;
 		* ) test "${staticdefault}" || staticdefault=0 ;;
 	    esac
 
 	    case "${class}" in
 	    F | V | M )
-		case "${invalid_p}" in
+		case "${invalid_p:-}" in
 		"" )
 		    if test -n "${predefault}"
 		    then
 			#invalid_p="gdbarch->${function} == ${predefault}"
-			predicate="gdbarch->${function} != ${predefault}"
+			predicate="gdbarch->${function:-} != ${predefault}"
 		    elif class_is_variable_p
 		    then
 			predicate="gdbarch->${function} != 0"
@@ -122,23 +107,6 @@ EOF
 		esac
 	    esac
 
-	    # PREDEFAULT is a valid fallback definition of MEMBER when
-	    # multi-arch is not enabled.  This ensures that the
-	    # default value, when multi-arch is the same as the
-	    # default value when not multi-arch.  POSTDEFAULT is
-	    # always a valid definition of MEMBER as this again
-	    # ensures consistency.
-
-	    if [ -n "${postdefault}" ]
-	    then
-		fallbackdefault="${postdefault}"
-	    elif [ -n "${predefault}" ]
-	    then
-		fallbackdefault="${predefault}"
-	    else
-		fallbackdefault="0"
-	    fi
-
 	    #NOT YET: See gdbarch.log for basic verification of
 	    # database
 
@@ -156,8 +124,8 @@ EOF
 
 fallback_default_p ()
 {
-    [ -n "${postdefault}" -a "x${invalid_p}" != "x0" ] \
-	|| [ -n "${predefault}" -a "x${invalid_p}" = "x0" ]
+    { [ -n "${postdefault:-}" ] && [ "x${invalid_p}" != "x0" ]; } \
+	|| { [ -n "${predefault}" ] && [ "x${invalid_p}" = "x0" ]; }
 }
 
 class_is_variable_p ()
@@ -357,12 +325,14 @@ v;int;long_bit;;;8 * sizeof (long);4*TAR
 # machine.
 v;int;long_long_bit;;;8 * sizeof (LONGEST);2*gdbarch->long_bit;;0
 
-# The ABI default bit-size and format for "half", "float", "double", and
+# The ABI default bit-size and format for "bfloat16", "half", "float", "double", and
 # "long double".  These bit/format pairs should eventually be combined
 # into a single object.  For the moment, just initialize them as a pair.
 # Each format describes both the big and little endian layouts (if
 # useful).
 
+v;int;bfloat16_bit;;;16;2*TARGET_CHAR_BIT;;0
+v;const struct floatformat **;bfloat16_format;;;;;floatformats_bfloat16;;pformat (gdbarch->bfloat16_format)
 v;int;half_bit;;;16;2*TARGET_CHAR_BIT;;0
 v;const struct floatformat **;half_format;;;;;floatformats_ieee_half;;pformat (gdbarch->half_format)
 v;int;float_bit;;;8 * sizeof (float);4*TARGET_CHAR_BIT;;0
@@ -446,11 +416,10 @@ M;int;ax_pseudo_register_collect;struct
 # Return -1 if something goes wrong, 0 otherwise.
 M;int;ax_pseudo_register_push_stack;struct agent_expr *ax, int reg;ax, reg
 
-# Some targets/architectures can do extra processing/display of
-# segmentation faults.  E.g., Intel MPX boundary faults.
-# Call the architecture dependent function to handle the fault.
+# Some architectures can display additional information for specific
+# signals.
 # UIOUT is the output stream where the handler will place information.
-M;void;handle_segmentation_fault;struct ui_out *uiout;uiout
+M;void;report_signal_info;struct ui_out *uiout, enum gdb_signal siggnal;uiout, siggnal
 
 # GDB's standard (or well known) register numbers.  These can map onto
 # a real register or a pseudo (computed) register or not be defined at
@@ -799,9 +768,7 @@ V;ULONGEST;max_insn_length;;;0;0
 # not the copy at TO.  The caller should update it to point at TO later.
 #
 # Return a pointer to data of the architecture's choice to be passed
-# to gdbarch_displaced_step_fixup.  Or, return NULL to indicate that
-# the instruction's effects have been completely simulated, with the
-# resulting state written back to REGS.
+# to gdbarch_displaced_step_fixup.
 #
 # For a general explanation of displaced stepping and how GDB uses it,
 # see the comments in infrun.c.
@@ -816,7 +783,7 @@ V;ULONGEST;max_insn_length;;;0;0
 # If the instruction cannot execute out of line, return NULL.  The
 # core falls back to stepping past the instruction in-line instead in
 # that case.
-M;struct displaced_step_closure *;displaced_step_copy_insn;CORE_ADDR from, CORE_ADDR to, struct regcache *regs;from, to, regs
+M;displaced_step_closure_up;displaced_step_copy_insn;CORE_ADDR from, CORE_ADDR to, struct regcache *regs;from, to, regs
 
 # Return true if GDB should use hardware single-stepping to execute
 # the displaced instruction identified by CLOSURE.  If false,
@@ -874,8 +841,6 @@ F;void;overlay_update;struct obj_section
 
 M;const struct target_desc *;core_read_description;struct target_ops *target, bfd *abfd;target, abfd
 
-# Handle special encoding of static variables in stabs debug info.
-F;const char *;static_transform_name;const char *name;name
 # Set if the address in N_SO or N_FUN stabs may be zero.
 v;int;sofun_address_maybe_missing;;;0;0;;0
 
@@ -1152,6 +1117,10 @@ m;int;insn_is_ret;CORE_ADDR addr;addr;;d
 # Return non-zero if the instruction at ADDR is a jump; zero otherwise.
 m;int;insn_is_jump;CORE_ADDR addr;addr;;default_insn_is_jump;;0
 
+# Return true if there's a program/permanent breakpoint planted in
+# memory at ADDRESS, return false otherwise.
+m;bool;program_breakpoint_here_p;CORE_ADDR address;address;;default_program_breakpoint_here_p;;0
+
 # Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
 # Return 0 if *READPTR is already at the end of the buffer.
 # Return -1 if there is insufficient buffer for a whole entry.
@@ -1209,21 +1178,24 @@ m;ULONGEST;type_align;struct type *type;
 # Return a string containing any flags for the given PC in the given FRAME.
 f;std::string;get_pc_address_flags;frame_info *frame, CORE_ADDR pc;frame, pc;;default_get_pc_address_flags;;0
 
+# Read core file mappings
+m;void;read_core_file_mappings;struct bfd *cbfd,gdb::function_view<void (ULONGEST count)> pre_loop_cb,gdb::function_view<void (int num, ULONGEST start, ULONGEST end, ULONGEST file_ofs, const char *filename, const void *other)> loop_cb;cbfd, pre_loop_cb, loop_cb;;default_read_core_file_mappings;;0
+
 EOF
 }
 
 #
 # The .log file
 #
-exec > new-gdbarch.log
+exec > gdbarch.log
 function_list | while do_read
 do
     cat <<EOF
-${class} ${returntype} ${function} ($formal)
+${class} ${returntype:-} ${function} (${formal:-})
 EOF
     for r in ${read}
     do
-	eval echo \"\ \ \ \ ${r}=\${${r}}\"
+	eval echo "\"    ${r}=\${${r}}\""
     done
     if class_is_predicate_p && fallback_default_p
     then
@@ -1231,7 +1203,7 @@ EOF
 	kill $$
 	exit 1
     fi
-    if [ "x${invalid_p}" = "x0" -a -n "${postdefault}" ]
+    if [ "x${invalid_p}" = "x0" ] && [ -n "${postdefault}" ]
     then
 	echo "Error: postdefault is useless when invalid_p=0" 1>&2
 	kill $$
@@ -1251,7 +1223,6 @@ EOF
 done
 
 exec 1>&2
-compare_new gdbarch.log
 
 
 copyright ()
@@ -1262,7 +1233,7 @@ cat <<EOF
 
 /* Dynamic architecture support for GDB, the GNU debugger.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1279,17 +1250,7 @@ cat <<EOF
    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 file was created with the aid of \`\`gdbarch.sh''.
-
-   The Bourne shell script \`\`gdbarch.sh'' creates the files
-   \`\`new-gdbarch.c'' and \`\`new-gdbarch.h and then compares them
-   against the existing \`\`gdbarch.[hc]''.  Any differences found
-   being reported.
-
-   If editing this file, please also run gdbarch.sh and merge any
-   changes into that script. Conversely, when making sweeping changes
-   to this file, modifying gdbarch.sh and using its output may prove
-   easier.  */
+/* This file was created with the aid of \`\`gdbarch.sh''.  */
 
 EOF
 }
@@ -1308,6 +1269,8 @@ cat <<EOF
 #include "frame.h"
 #include "dis-asm.h"
 #include "gdb_obstack.h"
+#include "infrun.h"
+#include "osabi.h"
 
 struct floatformat;
 struct ui_file;
@@ -1324,7 +1287,6 @@ struct obstack;
 struct bp_target_info;
 struct target_desc;
 struct symbol;
-struct displaced_step_closure;
 struct syscall;
 struct agent_expr;
 struct axs_value;
@@ -1404,8 +1366,8 @@ do
     if class_is_info_p
     then
 	printf "\n"
-	printf "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch);\n"
-	printf "/* set_gdbarch_${function}() - not applicable - pre-initialized.  */\n"
+	printf "extern %s gdbarch_%s (struct gdbarch *gdbarch);\n" "$returntype" "$function"
+	printf "/* set_gdbarch_%s() - not applicable - pre-initialized.  */\n" "$function"
     fi
 done
 
@@ -1426,33 +1388,33 @@ do
     if class_is_predicate_p
     then
 	printf "\n"
-	printf "extern int gdbarch_${function}_p (struct gdbarch *gdbarch);\n"
+	printf "extern int gdbarch_%s_p (struct gdbarch *gdbarch);\n" "$function"
     fi
     if class_is_variable_p
     then
 	printf "\n"
-	printf "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch);\n"
-	printf "extern void set_gdbarch_${function} (struct gdbarch *gdbarch, ${returntype} ${function});\n"
+	printf "extern %s gdbarch_%s (struct gdbarch *gdbarch);\n" "$returntype" "$function"
+	printf "extern void set_gdbarch_%s (struct gdbarch *gdbarch, %s %s);\n" "$function" "$returntype" "$function"
     fi
     if class_is_function_p
     then
 	printf "\n"
 	if [ "x${formal}" = "xvoid" ] && class_is_multiarch_p
 	then
-	    printf "typedef ${returntype} (gdbarch_${function}_ftype) (struct gdbarch *gdbarch);\n"
+	    printf "typedef %s (gdbarch_%s_ftype) (struct gdbarch *gdbarch);\n" "$returntype" "$function"
 	elif class_is_multiarch_p
 	then
-	    printf "typedef ${returntype} (gdbarch_${function}_ftype) (struct gdbarch *gdbarch, ${formal});\n"
+	    printf "typedef %s (gdbarch_%s_ftype) (struct gdbarch *gdbarch, %s);\n" "$returntype" "$function" "$formal"
 	else
-	    printf "typedef ${returntype} (gdbarch_${function}_ftype) (${formal});\n"
+	    printf "typedef %s (gdbarch_%s_ftype) (%s);\n" "$returntype" "$function" "$formal"
 	fi
 	if [ "x${formal}" = "xvoid" ]
 	then
-	  printf "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch);\n"
+	  printf "extern %s gdbarch_%s (struct gdbarch *gdbarch);\n" "$returntype" "$function"
 	else
-	  printf "extern ${returntype} gdbarch_${function} (struct gdbarch *gdbarch, ${formal});\n"
+	  printf "extern %s gdbarch_%s (struct gdbarch *gdbarch, %s);\n" "$returntype" "$function" "$formal"
 	fi
-	printf "extern void set_gdbarch_${function} (struct gdbarch *gdbarch, gdbarch_${function}_ftype *${function});\n"
+	printf "extern void set_gdbarch_%s (struct gdbarch *gdbarch, gdbarch_%s_ftype *%s);\n" "$function" "$function" "$function"
     fi
 done
 
@@ -1672,9 +1634,6 @@ typedef void *(gdbarch_data_pre_init_fty
 extern struct gdbarch_data *gdbarch_data_register_pre_init (gdbarch_data_pre_init_ftype *init);
 typedef void *(gdbarch_data_post_init_ftype) (struct gdbarch *gdbarch);
 extern struct gdbarch_data *gdbarch_data_register_post_init (gdbarch_data_post_init_ftype *init);
-extern void deprecated_set_gdbarch_data (struct gdbarch *gdbarch,
-                                         struct gdbarch_data *data,
-			                 void *pointer);
 
 extern void *gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *);
 
@@ -1706,8 +1665,8 @@ gdbarch_num_cooked_regs (gdbarch *arch)
 #endif
 EOF
 exec 1>&2
-#../move-if-change new-gdbarch.h gdbarch.h
-compare_new gdbarch.h
+../move-if-change new-gdbarch.h gdbarch.h
+rm -f new-gdbarch.h
 
 
 #
@@ -1827,7 +1786,7 @@ function_list | while do_read
 do
     if class_is_info_p
     then
-	printf "  ${returntype} ${function};\n"
+	printf "  %s %s;\n" "$returntype" "$function"
     fi
 done
 printf "\n"
@@ -1868,10 +1827,10 @@ function_list | while do_read
 do
     if class_is_variable_p
     then
-	printf "  ${returntype} ${function};\n"
+	printf "  %s %s;\n" "$returntype" "$function"
     elif class_is_function_p
     then
-	printf "  gdbarch_${function}_ftype *${function};\n"
+	printf "  gdbarch_%s_ftype *%s;\n" "$function" "$function"
     fi
 done
 printf "};\n"
@@ -1907,7 +1866,7 @@ function_list | while do_read
 do
     if class_is_info_p
     then
-	printf "  gdbarch->${function} = info->${function};\n"
+	printf "  gdbarch->%s = info->%s;\n" "$function" "$function"
     fi
 done
 printf "\n"
@@ -1916,9 +1875,9 @@ function_list | while do_read
 do
     if class_is_function_p || class_is_variable_p
     then
-	if [ -n "${predefault}" -a "x${predefault}" != "x0" ]
+	if [ -n "${predefault}" ] && [ "x${predefault}" != "x0" ]
 	then
-	  printf "  gdbarch->${function} = ${predefault};\n"
+	  printf "  gdbarch->%s = %s;\n" "$function" "$predefault"
 	fi
     fi
 done
@@ -1991,31 +1950,31 @@ do
     then
 	if [ "x${invalid_p}" = "x0" ]
 	then
-	    printf "  /* Skip verify of ${function}, invalid_p == 0 */\n"
+	    printf "  /* Skip verify of %s, invalid_p == 0 */\n" "$function"
 	elif class_is_predicate_p
 	then
-	    printf "  /* Skip verify of ${function}, has predicate.  */\n"
+	    printf "  /* Skip verify of %s, has predicate.  */\n" "$function"
 	# FIXME: See do_read for potential simplification
- 	elif [ -n "${invalid_p}" -a -n "${postdefault}" ]
+	elif [ -n "${invalid_p}" ] && [ -n "${postdefault}" ]
 	then
-	    printf "  if (${invalid_p})\n"
-	    printf "    gdbarch->${function} = ${postdefault};\n"
-	elif [ -n "${predefault}" -a -n "${postdefault}" ]
+	    printf "  if (%s)\n" "$invalid_p"
+	    printf "    gdbarch->%s = %s;\n" "$function" "$postdefault"
+	elif [ -n "${predefault}" ] && [ -n "${postdefault}" ]
 	then
-	    printf "  if (gdbarch->${function} == ${predefault})\n"
-	    printf "    gdbarch->${function} = ${postdefault};\n"
+	    printf "  if (gdbarch->%s == %s)\n" "$function" "$predefault"
+	    printf "    gdbarch->%s = %s;\n" "$function" "$postdefault"
 	elif [ -n "${postdefault}" ]
 	then
-	    printf "  if (gdbarch->${function} == 0)\n"
-	    printf "    gdbarch->${function} = ${postdefault};\n"
+	    printf "  if (gdbarch->%s == 0)\n" "$function"
+	    printf "    gdbarch->%s = %s;\n" "$function" "$postdefault"
 	elif [ -n "${invalid_p}" ]
 	then
-	    printf "  if (${invalid_p})\n"
-	    printf "    log.puts (\"\\\\n\\\\t${function}\");\n"
+	    printf "  if (%s)\n" "$invalid_p"
+	    printf "    log.puts (\"\\\\n\\\\t%s\");\n" "$function"
 	elif [ -n "${predefault}" ]
 	then
-	    printf "  if (gdbarch->${function} == ${predefault})\n"
-	    printf "    log.puts (\"\\\\n\\\\t${function}\");\n"
+	    printf "  if (gdbarch->%s == %s)\n" "$function" "$predefault"
+	    printf "    log.puts (\"\\\\n\\\\t%s\");\n" "$function"
 	fi
     fi
 done
@@ -2051,15 +2010,15 @@ do
     if class_is_predicate_p
     then
 	printf "  fprintf_unfiltered (file,\n"
-	printf "                      \"gdbarch_dump: gdbarch_${function}_p() = %%d\\\\n\",\n"
-	printf "                      gdbarch_${function}_p (gdbarch));\n"
+	printf "                      \"gdbarch_dump: gdbarch_%s_p() = %%d\\\\n\",\n" "$function"
+	printf "                      gdbarch_%s_p (gdbarch));\n" "$function"
     fi
     # Print the corresponding value.
     if class_is_function_p
     then
 	printf "  fprintf_unfiltered (file,\n"
-	printf "                      \"gdbarch_dump: ${function} = <%%s>\\\\n\",\n"
-	printf "                      host_address_to_string (gdbarch->${function}));\n"
+	printf "                      \"gdbarch_dump: %s = <%%s>\\\\n\",\n" "$function"
+	printf "                      host_address_to_string (gdbarch->%s));\n" "$function"
     else
 	# It is a variable
 	case "${print}:${returntype}" in
@@ -2076,8 +2035,8 @@ do
 		;;
         esac
 	printf "  fprintf_unfiltered (file,\n"
-	printf "                      \"gdbarch_dump: ${function} = %s\\\\n\",\n" "${fmt}"
-	printf "                      ${print});\n"
+	printf "                      \"gdbarch_dump: %s = %s\\\\n\",\n" "$function" "$fmt"
+	printf "                      %s);\n" "$print"
     fi
 done
 cat <<EOF
@@ -2105,33 +2064,33 @@ do
     then
 	printf "\n"
 	printf "int\n"
-	printf "gdbarch_${function}_p (struct gdbarch *gdbarch)\n"
+	printf "gdbarch_%s_p (struct gdbarch *gdbarch)\n" "$function"
 	printf "{\n"
         printf "  gdb_assert (gdbarch != NULL);\n"
-	printf "  return ${predicate};\n"
+	printf "  return %s;\n" "$predicate"
 	printf "}\n"
     fi
     if class_is_function_p
     then
 	printf "\n"
-	printf "${returntype}\n"
+	printf "%s\n" "$returntype"
 	if [ "x${formal}" = "xvoid" ]
 	then
-	  printf "gdbarch_${function} (struct gdbarch *gdbarch)\n"
+	  printf "gdbarch_%s (struct gdbarch *gdbarch)\n" "$function"
 	else
-	  printf "gdbarch_${function} (struct gdbarch *gdbarch, ${formal})\n"
+	  printf "gdbarch_%s (struct gdbarch *gdbarch, %s)\n" "$function" "$formal"
 	fi
 	printf "{\n"
         printf "  gdb_assert (gdbarch != NULL);\n"
-	printf "  gdb_assert (gdbarch->${function} != NULL);\n"
+	printf "  gdb_assert (gdbarch->%s != NULL);\n" "$function"
 	if class_is_predicate_p && test -n "${predefault}"
 	then
 	    # Allow a call to a function with a predicate.
-	    printf "  /* Do not check predicate: ${predicate}, allow call.  */\n"
+	    printf "  /* Do not check predicate: %s, allow call.  */\n" "$predicate"
 	fi
 	printf "  if (gdbarch_debug >= 2)\n"
-	printf "    fprintf_unfiltered (gdb_stdlog, \"gdbarch_${function} called\\\\n\");\n"
-	if [ "x${actual}" = "x-" -o "x${actual}" = "x" ]
+	printf "    fprintf_unfiltered (gdb_stdlog, \"gdbarch_%s called\\\\n\");\n" "$function"
+	if [ "x${actual:-}" = "x-" ] || [ "x${actual:-}" = "x" ]
 	then
 	    if class_is_multiarch_p
 	    then
@@ -2149,58 +2108,58 @@ do
         fi
        	if [ "x${returntype}" = "xvoid" ]
 	then
-	  printf "  gdbarch->${function} (${params});\n"
+	  printf "  gdbarch->%s (%s);\n" "$function" "$params"
 	else
-	  printf "  return gdbarch->${function} (${params});\n"
+	  printf "  return gdbarch->%s (%s);\n" "$function" "$params"
 	fi
 	printf "}\n"
 	printf "\n"
 	printf "void\n"
-	printf "set_gdbarch_${function} (struct gdbarch *gdbarch,\n"
-        printf "            `echo ${function} | sed -e 's/./ /g'`  gdbarch_${function}_ftype ${function})\n"
+	printf "set_gdbarch_%s (struct gdbarch *gdbarch,\n" "$function"
+	printf "            %s  gdbarch_%s_ftype %s)\n" "$(echo "$function" | sed -e 's/./ /g')" "$function" "$function"
 	printf "{\n"
-	printf "  gdbarch->${function} = ${function};\n"
+	printf "  gdbarch->%s = %s;\n" "$function" "$function"
 	printf "}\n"
     elif class_is_variable_p
     then
 	printf "\n"
-	printf "${returntype}\n"
-	printf "gdbarch_${function} (struct gdbarch *gdbarch)\n"
+	printf "%s\n" "$returntype"
+	printf "gdbarch_%s (struct gdbarch *gdbarch)\n" "$function"
 	printf "{\n"
         printf "  gdb_assert (gdbarch != NULL);\n"
 	if [ "x${invalid_p}" = "x0" ]
 	then
-	    printf "  /* Skip verify of ${function}, invalid_p == 0 */\n"
+	    printf "  /* Skip verify of %s, invalid_p == 0 */\n" "$function"
 	elif [ -n "${invalid_p}" ]
 	then
 	    printf "  /* Check variable is valid.  */\n"
-	    printf "  gdb_assert (!(${invalid_p}));\n"
+	    printf "  gdb_assert (!(%s));\n" "$invalid_p"
 	elif [ -n "${predefault}" ]
 	then
 	    printf "  /* Check variable changed from pre-default.  */\n"
-	    printf "  gdb_assert (gdbarch->${function} != ${predefault});\n"
+	    printf "  gdb_assert (gdbarch->%s != %s);\n" "$function" "$predefault"
 	fi
 	printf "  if (gdbarch_debug >= 2)\n"
-	printf "    fprintf_unfiltered (gdb_stdlog, \"gdbarch_${function} called\\\\n\");\n"
-	printf "  return gdbarch->${function};\n"
+	printf "    fprintf_unfiltered (gdb_stdlog, \"gdbarch_%s called\\\\n\");\n" "$function"
+	printf "  return gdbarch->%s;\n" "$function"
 	printf "}\n"
 	printf "\n"
 	printf "void\n"
-	printf "set_gdbarch_${function} (struct gdbarch *gdbarch,\n"
-        printf "            `echo ${function} | sed -e 's/./ /g'`  ${returntype} ${function})\n"
+	printf "set_gdbarch_%s (struct gdbarch *gdbarch,\n" "$function"
+	printf "            %s  %s %s)\n" "$(echo "$function" | sed -e 's/./ /g')" "$returntype" "$function"
 	printf "{\n"
-	printf "  gdbarch->${function} = ${function};\n"
+	printf "  gdbarch->%s = %s;\n" "$function" "$function"
 	printf "}\n"
     elif class_is_info_p
     then
 	printf "\n"
-	printf "${returntype}\n"
-	printf "gdbarch_${function} (struct gdbarch *gdbarch)\n"
+	printf "%s\n" "$returntype"
+	printf "gdbarch_%s (struct gdbarch *gdbarch)\n" "$function"
 	printf "{\n"
         printf "  gdb_assert (gdbarch != NULL);\n"
 	printf "  if (gdbarch_debug >= 2)\n"
-	printf "    fprintf_unfiltered (gdb_stdlog, \"gdbarch_${function} called\\\\n\");\n"
-	printf "  return gdbarch->${function};\n"
+	printf "    fprintf_unfiltered (gdb_stdlog, \"gdbarch_%s called\\\\n\");\n" "$function"
+	printf "  return gdbarch->%s;\n" "$function"
 	printf "}\n"
     fi
 done
@@ -2279,20 +2238,6 @@ alloc_gdbarch_data (struct gdbarch *gdba
   gdbarch->data = GDBARCH_OBSTACK_CALLOC (gdbarch, gdbarch->nr_data, void *);
 }
 
-/* Initialize the current value of the specified per-architecture
-   data-pointer.  */
-
-void
-deprecated_set_gdbarch_data (struct gdbarch *gdbarch,
-			     struct gdbarch_data *data,
-			     void *pointer)
-{
-  gdb_assert (data->index < gdbarch->nr_data);
-  gdb_assert (gdbarch->data[data->index] == NULL);
-  gdb_assert (data->pre_init == NULL);
-  gdbarch->data[data->index] = pointer;
-}
-
 /* Return the current value of the specified per-architecture
    data-pointer.  */
 
@@ -2322,11 +2267,9 @@ gdbarch_data (struct gdbarch *gdbarch, s
 	  data->init_p = 1;
 	}
       else
-	/* The architecture initialization hasn't completed - punt -
-	 hope that the caller knows what they are doing.  Once
-	 deprecated_set_gdbarch_data has been initialized, this can be
-	 changed to an internal error.  */
-	return NULL;
+	internal_error (__FILE__, __LINE__,
+			_("gdbarch post-init data field can only be used "
+			  "after gdbarch is fully initialised"));
       gdb_assert (gdbarch->data[data->index] != NULL);
     }
   return gdbarch->data[data->index];
@@ -2600,8 +2543,9 @@ target_gdbarch (void)
   return current_inferior ()->gdbarch;
 }
 
+void _initialize_gdbarch ();
 void
-_initialize_gdbarch (void)
+_initialize_gdbarch ()
 {
   add_setshow_zuinteger_cmd ("arch", class_maintenance, &gdbarch_debug, _("\\
 Set architecture debugging."), _("\\
@@ -2615,5 +2559,5 @@ EOF
 
 # close things off
 exec 1>&2
-#../move-if-change new-gdbarch.c gdbarch.c
-compare_new gdbarch.c
+../move-if-change new-gdbarch.c gdbarch.c
+rm -f new-gdbarch.c
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_bfd.c ./gdb/gdb_bfd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_bfd.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_bfd.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for BFD wrappers used by GDB.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -59,26 +59,16 @@ static htab_t all_bfds;
 
 struct gdb_bfd_data
 {
-  gdb_bfd_data (bfd *abfd)
-    : mtime (bfd_get_mtime (abfd)),
-      size (bfd_get_size (abfd)),
+  /* Note that if ST is nullptr, then we simply fill in zeroes.  */
+  gdb_bfd_data (bfd *abfd, struct stat *st)
+    : mtime (st == nullptr ? 0 : st->st_mtime),
+      size (st == nullptr ? 0 : st->st_size),
+      inode (st == nullptr ? 0 : st->st_ino),
+      device_id (st == nullptr ? 0 : st->st_dev),
       relocation_computed (0),
       needs_relocations (0),
       crc_computed (0)
   {
-    struct stat buf;
-
-    if (bfd_stat (abfd, &buf) == 0)
-      {
-	inode = buf.st_ino;
-	device_id = buf.st_dev;
-      }
-    else
-      {
-	/* The stat failed.  */
-	inode = 0;
-	device_id = 0;
-      }
   }
 
   ~gdb_bfd_data ()
@@ -271,24 +261,30 @@ fileio_errno_to_host (int errnum)
   return -1;
 }
 
+/* bfd_openr_iovec OPEN_CLOSURE data for gdb_bfd_open.  */
+struct gdb_bfd_open_closure
+{
+  inferior *inf;
+  bool warn_if_slow;
+};
+
 /* Wrapper for target_fileio_open suitable for passing as the
-   OPEN_FUNC argument to gdb_bfd_openr_iovec.  The supplied
-   OPEN_CLOSURE is unused.  */
+   OPEN_FUNC argument to gdb_bfd_openr_iovec.  */
 
 static void *
-gdb_bfd_iovec_fileio_open (struct bfd *abfd, void *inferior)
+gdb_bfd_iovec_fileio_open (struct bfd *abfd, void *open_closure)
 {
   const char *filename = bfd_get_filename (abfd);
   int fd, target_errno;
   int *stream;
+  gdb_bfd_open_closure *oclosure = (gdb_bfd_open_closure *) open_closure;
 
   gdb_assert (is_target_filename (filename));
 
-  fd = target_fileio_open_warn_if_slow ((struct inferior *) inferior,
-					filename
-					+ strlen (TARGET_SYSROOT_PREFIX),
-					FILEIO_O_RDONLY, 0,
-					&target_errno);
+  fd = target_fileio_open (oclosure->inf,
+			   filename + strlen (TARGET_SYSROOT_PREFIX),
+			   FILEIO_O_RDONLY, 0, oclosure->warn_if_slow,
+			   &target_errno);
   if (fd == -1)
     {
       errno = fileio_errno_to_host (target_errno);
@@ -376,10 +372,35 @@ gdb_bfd_iovec_fileio_fstat (struct bfd *
   return result;
 }
 
+/* A helper function to initialize the data that gdb attaches to each
+   BFD.  */
+
+static void
+gdb_bfd_init_data (struct bfd *abfd, struct stat *st)
+{
+  struct gdb_bfd_data *gdata;
+  void **slot;
+
+  gdb_assert (bfd_usrdata (abfd) == nullptr);
+
+  /* Ask BFD to decompress sections in bfd_get_full_section_contents.  */
+  abfd->flags |= BFD_DECOMPRESS;
+
+  gdata = new gdb_bfd_data (abfd, st);
+  bfd_set_usrdata (abfd, gdata);
+  bfd_alloc_data (abfd);
+
+  /* This is the first we've seen it, so add it to the hash table.  */
+  slot = htab_find_slot (all_bfds, abfd, INSERT);
+  gdb_assert (slot && !*slot);
+  *slot = abfd;
+}
+
 /* See gdb_bfd.h.  */
 
 gdb_bfd_ref_ptr
-gdb_bfd_open (const char *name, const char *target, int fd)
+gdb_bfd_open (const char *name, const char *target, int fd,
+	      bool warn_if_slow)
 {
   hashval_t hash;
   void **slot;
@@ -393,9 +414,10 @@ gdb_bfd_open (const char *name, const ch
 	{
 	  gdb_assert (fd == -1);
 
+	  gdb_bfd_open_closure open_closure { current_inferior (), warn_if_slow };
 	  return gdb_bfd_openr_iovec (name, target,
 				      gdb_bfd_iovec_fileio_open,
-				      current_inferior (),
+				      &open_closure,
 				      gdb_bfd_iovec_fileio_pread,
 				      gdb_bfd_iovec_fileio_close,
 				      gdb_bfd_iovec_fileio_fstat);
@@ -418,23 +440,25 @@ gdb_bfd_open (const char *name, const ch
 	}
     }
 
-  search.filename = name;
   if (fstat (fd, &st) < 0)
     {
-      /* Weird situation here.  */
-      search.mtime = 0;
-      search.size = 0;
-      search.inode = 0;
-      search.device_id = 0;
-    }
-  else
-    {
-      search.mtime = st.st_mtime;
-      search.size = st.st_size;
-      search.inode = st.st_ino;
-      search.device_id = st.st_dev;
+      /* Weird situation here -- don't cache if we can't stat.  */
+      if (debug_bfd_cache)
+	fprintf_unfiltered (gdb_stdlog,
+			    "Could not stat %s - not caching\n",
+			    name);
+      abfd = bfd_fopen (name, target, FOPEN_RB, fd);
+      if (abfd == nullptr)
+	return nullptr;
+      return gdb_bfd_ref_ptr::new_reference (abfd);
     }
 
+  search.filename = name;
+  search.mtime = st.st_mtime;
+  search.size = st.st_size;
+  search.inode = st.st_ino;
+  search.device_id = st.st_dev;
+
   /* Note that this must compute the same result as hash_bfd.  */
   hash = htab_hash_string (name);
   /* Note that we cannot use htab_find_slot_with_hash here, because
@@ -469,7 +493,14 @@ gdb_bfd_open (const char *name, const ch
       *slot = abfd;
     }
 
-  return gdb_bfd_ref_ptr::new_reference (abfd);
+  /* It's important to pass the already-computed stat info here,
+     rather than, say, calling gdb_bfd_ref_ptr::new_reference.  BFD by
+     default will "stat" the file each time bfd_get_mtime is called --
+     and since we already entered it into the hash table using this
+     mtime, if the file changed at the wrong moment, the race would
+     lead to a hash table corruption.  */
+  gdb_bfd_init_data (abfd, &st);
+  return gdb_bfd_ref_ptr (abfd);
 }
 
 /* A helper function that releases any section data attached to the
@@ -522,7 +553,6 @@ void
 gdb_bfd_ref (struct bfd *abfd)
 {
   struct gdb_bfd_data *gdata;
-  void **slot;
 
   if (abfd == NULL)
     return;
@@ -541,17 +571,9 @@ gdb_bfd_ref (struct bfd *abfd)
       return;
     }
 
-  /* Ask BFD to decompress sections in bfd_get_full_section_contents.  */
-  abfd->flags |= BFD_DECOMPRESS;
-
-  gdata = new gdb_bfd_data (abfd);
-  bfd_set_usrdata (abfd, gdata);
-  bfd_alloc_data (abfd);
-
-  /* This is the first we've seen it, so add it to the hash table.  */
-  slot = htab_find_slot (all_bfds, abfd, INSERT);
-  gdb_assert (slot && !*slot);
-  *slot = abfd;
+  /* Caching only happens via gdb_bfd_open, so passing nullptr here is
+     fine.  */
+  gdb_bfd_init_data (abfd, nullptr);
 }
 
 /* See gdb_bfd.h.  */
@@ -926,7 +948,19 @@ gdb_bfd_requires_relocations (bfd *abfd)
   return gdata->needs_relocations;
 }
 
-
+/* See gdb_bfd.h.  */
+
+bool
+gdb_bfd_get_full_section_contents (bfd *abfd, asection *section,
+				   gdb::byte_vector *contents)
+{
+  bfd_size_type section_size = bfd_section_size (section);
+
+  contents->resize (section_size);
+
+  return bfd_get_section_contents (abfd, section, contents->data (), 0,
+				   section_size);
+}
 
 /* A callback for htab_traverse that prints a single BFD.  */
 
@@ -962,8 +996,9 @@ maintenance_info_bfds (const char *arg,
   htab_traverse (all_bfds, print_one_bfd, uiout);
 }
 
+void _initialize_gdb_bfd ();
 void
-_initialize_gdb_bfd (void)
+_initialize_gdb_bfd ()
 {
   all_bfds = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
 				NULL, xcalloc, xfree);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_bfd.h ./gdb/gdb_bfd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_bfd.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_bfd.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for BFD wrappers used by GDB.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,9 @@
 #define GDB_BFD_H
 
 #include "registry.h"
+#include "gdbsupport/byte-vector.h"
 #include "gdbsupport/gdb_ref_ptr.h"
+#include "gdbsupport/next-iterator.h"
 
 DECLARE_REGISTRY (bfd);
 
@@ -77,9 +79,12 @@ typedef gdb::ref_ptr<struct bfd, gdb_bfd
    If the BFD was not accessed using target fileio operations then the
    filename associated with the BFD and accessible with
    bfd_get_filename will not be exactly NAME but rather NAME with
-   TARGET_SYSROOT_PREFIX stripped.  */
+   TARGET_SYSROOT_PREFIX stripped.  If WARN_IF_SLOW is true, print a
+   warning message if the file is being accessed over a link that may
+   be slow.  */
 
-gdb_bfd_ref_ptr gdb_bfd_open (const char *name, const char *target, int fd);
+gdb_bfd_ref_ptr gdb_bfd_open (const char *name, const char *target,
+			      int fd = -1, bool warn_if_slow = true);
 
 /* Mark the CHILD BFD as being a member of PARENT.  Also, increment
    the reference count of CHILD.  Calling this function ensures that
@@ -181,4 +186,29 @@ int gdb_bfd_count_sections (bfd *abfd);
 
 int gdb_bfd_requires_relocations (bfd *abfd);
 
+/* Alternative to bfd_get_full_section_contents that returns the section
+   contents in *CONTENTS, instead of an allocated buffer.
+
+   Return true on success, false otherwise.  */
+
+bool gdb_bfd_get_full_section_contents (bfd *abfd, asection *section,
+					gdb::byte_vector *contents);
+
+/* Range adapter for a BFD's sections.
+
+   To be used as:
+
+     for (asection *sect : gdb_bfd_all_sections (bfd))
+       ... use SECT ...
+ */
+
+using gdb_bfd_section_iterator = next_iterator<asection>;
+using gdb_bfd_section_range = next_adapter<asection, gdb_bfd_section_iterator>;
+
+static inline
+gdb_bfd_section_range gdb_bfd_sections (bfd *abfd)
+{
+  return gdb_bfd_section_range (abfd->sections);
+}
+
 #endif /* GDB_BFD_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_buildall.sh ./gdb/gdb_buildall.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_buildall.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_buildall.sh	2021-05-21 01:57:24.000000000 +0000
@@ -2,7 +2,7 @@
 
 # Build script to build GDB with all targets enabled.
 
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb.c ./gdb/gdb.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Main function for CLI gdb.  
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbcmd.h ./gdb/gdbcmd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbcmd.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbcmd.h	2021-05-21 01:57:24.000000000 +0000
@@ -6,7 +6,7 @@
    fnasser@redhat.com    */
 
 /* Header file for GDB-specific command-line stuff.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-code-style.el ./gdb/gdb-code-style.el
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-code-style.el	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb-code-style.el	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 ;;; gdb-code-style.el --- code style checker for GDB contributors
 
-;; Copyright (C) 2012-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
 ;; Author: Yao Qi <yao@codesourcery.com>
 ;; Created: 17 April 2012
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbcore.h ./gdb/gdbcore.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbcore.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbcore.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Machine independent variables that describe the core file under GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -87,12 +87,6 @@ extern ULONGEST read_code_unsigned_integ
 					    int len,
 					    enum bfd_endian byte_order);
 
-/* Read a null-terminated string from the debuggee's memory, given
-   address, a buffer into which to place the string, and the maximum
-   available space.  */
-
-extern void read_memory_string (CORE_ADDR, char *, int);
-
 /* Read the pointer of type TYPE at ADDR, and return the address it
    represents.  */
 
@@ -157,75 +151,17 @@ extern void exec_file_locate_attach (int
 
 extern void validate_files (void);
 
+/* Give the user a message if the current exec file does not match the exec
+   file determined from the target.  In case of mismatch, ask the user
+   if the exec file determined from target must be loaded.  */
+extern void validate_exec_file (int from_tty);
+
 /* The current default bfd target.  */
 
-extern char *gnutarget;
+extern const char *gnutarget;
 
 extern void set_gnutarget (const char *);
 
-/* Structure to keep track of core register reading functions for
-   various core file types.  */
-
-struct core_fns
-  {
-
-    /* BFD flavour that a core file handler is prepared to read.  This
-       can be used by the handler's core tasting function as a first
-       level filter to reject BFD's that don't have the right
-       flavour.  */
-
-    enum bfd_flavour core_flavour;
-
-    /* Core file handler function to call to recognize corefile
-       formats that BFD rejects.  Some core file format just don't fit
-       into the BFD model, or may require other resources to identify
-       them, that simply aren't available to BFD (such as symbols from
-       another file).  Returns nonzero if the handler recognizes the
-       format, zero otherwise.  */
-
-    int (*check_format) (bfd *);
-
-    /* Core file handler function to call to ask if it can handle a
-       given core file format or not.  Returns zero if it can't,
-       nonzero otherwise.  */
-
-    int (*core_sniffer) (struct core_fns *, bfd *);
-
-    /* Extract the register values out of the core file and supply them
-       into REGCACHE.
-
-       CORE_REG_SECT points to the register values themselves, read into
-       memory.
-
-       CORE_REG_SIZE is the size of that area.
-
-       WHICH says which set of registers we are handling:
-         0 --- integer registers
-         2 --- floating-point registers, on machines where they are
-               discontiguous
-         3 --- extended floating-point registers, on machines where
-               these are present in yet a third area.  (GNU/Linux uses
-               this to get at the SSE registers.)
-
-       REG_ADDR is the offset from u.u_ar0 to the register values relative to
-       core_reg_sect.  This is used with old-fashioned core files to locate the
-       registers in a large upage-plus-stack ".reg" section.  Original upage
-       address X is at location core_reg_sect+x+reg_addr.  */
-
-    void (*core_read_registers) (struct regcache *regcache,
-				 char *core_reg_sect,
-				 unsigned core_reg_size,
-				 int which, CORE_ADDR reg_addr);
-
-    /* Finds the next struct core_fns.  They are allocated and
-       initialized in whatever module implements the functions pointed
-       to; an initializer calls deprecated_add_core_fns to add them to
-       the global chain.  */
-
-    struct core_fns *next;
-
-  };
-
 /* Build either a single-thread or multi-threaded section name for
    PTID.
 
@@ -269,10 +205,4 @@ private:
   std::string m_storage;
 };
 
-/* NOTE: cagney/2004-04-05: Replaced by "regset.h" and
-   regset_from_core_section().  */
-extern void deprecated_add_core_fns (struct core_fns *cf);
-extern int default_core_sniffer (struct core_fns *cf, bfd * abfd);
-extern int default_check_format (bfd * abfd);
-
 #endif /* !defined (GDBCORE_H) */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_curses.h ./gdb/gdb_curses.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_curses.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_curses.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Portable <curses.h>.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-demangle.c ./gdb/gdb-demangle.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-demangle.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb-demangle.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Basic C++ demangling support for GDB.
 
-   Copyright (C) 1991-2020 Free Software Foundation, Inc.
+   Copyright (C) 1991-2021 Free Software Foundation, Inc.
 
    Written by Fred Fish at Cygnus Support.
 
@@ -212,8 +212,9 @@ demangle_command (const char *args, int
     error (_("Can't demangle \"%s\""), name);
 }
 
+void _initialize_gdb_demangle ();
 void
-_initialize_gdb_demangle (void)
+_initialize_gdb_demangle ()
 {
   int i, ndems;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-demangle.h ./gdb/gdb-demangle.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-demangle.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb-demangle.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Basic C++ demangling support for GDB.
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_expat.h ./gdb/gdb_expat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_expat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_expat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Slightly more portable version of <expat.h>.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-gdb.gdb.in ./gdb/gdb-gdb.gdb.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-gdb.gdb.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb-gdb.gdb.in	2021-05-21 01:57:24.000000000 +0000
@@ -7,9 +7,12 @@ if !$gdb_init_done
 
   b internal_error
 
+  # This provides an easy way to break into the top-level GDB by
+  # typing "info".
   b info_command
   commands
     silent
+    # This avoids the voluminous output of "info".
     return
   end
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-gdb.py.in ./gdb/gdb-gdb.py.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-gdb.py.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb-gdb.py.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_mbuild.sh ./gdb/gdb_mbuild.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_mbuild.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_mbuild.sh	2021-05-21 01:57:24.000000000 +0000
@@ -3,7 +3,7 @@
 #  Multi-build script for testing compilation of all maintained
 #  configs of GDB.
 
-#  Copyright (C) 2002-2020 Free Software Foundation, Inc.
+#  Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
 #  Contributed by Richard Earnshaw  (rearnsha@arm.com)
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_obstack.c ./gdb/gdb_obstack.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_obstack.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_obstack.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Obstack wrapper for GDB.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_obstack.h ./gdb/gdb_obstack.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_obstack.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_obstack.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Obstack wrapper for GDB.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -125,6 +125,8 @@ struct auto_obstack : obstack
   ~auto_obstack ()
   { obstack_free (this, NULL); }
 
+  DISABLE_COPY_AND_ASSIGN (auto_obstack);
+
   /* Free all memory in the obstack but leave it valid for further
      allocation.  */
   void clear ()
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_proc_service.h ./gdb/gdb_proc_service.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_proc_service.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_proc_service.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* <proc_service.h> replacement for systems that don't have it.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_regex.c ./gdb/gdb_regex.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_regex.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_regex.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_regex.h ./gdb/gdb_regex.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_regex.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_regex.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Portable <regex.h>.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_select.h ./gdb/gdb_select.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_select.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_select.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,51 +0,0 @@
-/* Slightly more portable version of <sys/select.h>.
-
-   Copyright (C) 2006-2020 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/>.  */
-
-#if !defined(GDB_SELECT_H)
-#define GDB_SELECT_H
-
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#else
-#include "gdbsupport/gdb_sys_time.h"
-#endif
-
-#ifdef USE_WIN32API
-#include <winsock2.h>
-#endif
-
-extern int gdb_select (int n, fd_set *readfds, fd_set *writefds,
-		       fd_set *exceptfds, struct timeval *timeout);
-
-/* Convenience wrapper around gdb_select that returns -1/EINTR if
-   set_quit_flag is set, either on entry or from a signal handler or
-   from a different thread while select is blocked.  The quit flag is
-   not cleared on exit -- the caller is responsible to check it with
-   check_quit_flag or QUIT.
-
-   Note this does NOT return -1/EINTR if any signal handler other than
-   SIGINT runs, nor if the current SIGINT handler does not call
-   set_quit_flag.  */
-extern int interruptible_select (int n,
-				 fd_set *readfds,
-				 fd_set *writefds,
-				 fd_set *exceptfds,
-				 struct timeval *timeout);
-
-#endif /* !defined(GDB_SELECT_H) */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/acinclude.m4 ./gdb/gdbserver/acinclude.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/acinclude.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/acinclude.m4	1970-01-01 00:00:00.000000000 +0000
@@ -1,53 +0,0 @@
-dnl gdb/gdbserver/configure.in uses BFD_HAVE_SYS_PROCFS_TYPE.
-m4_include(../../bfd/bfd.m4)
-
-m4_include(../acx_configure_dir.m4)
-
-# This gets AM_GDB_WARNINGS.
-m4_include(../warning.m4)
-
-dnl This gets autoconf bugfixes
-m4_include(../../config/override.m4)
-
-dnl For ACX_PKGVERSION and ACX_BUGURL.
-m4_include(../../config/acx.m4)
-
-m4_include(../../config/depstand.m4)
-m4_include(../../config/lead-dot.m4)
-
-dnl codeset.m4 is needed for common.m4, but not for
-dnl anything else in gdbserver.
-m4_include(../../config/codeset.m4)
-m4_include(../gdbsupport/common.m4)
-
-dnl For libiberty_INIT.
-m4_include(../libiberty.m4)
-
-dnl For GDB_AC_PTRACE.
-m4_include(../ptrace.m4)
-
-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.
-
-AC_DEFUN([GDBSERVER_HAVE_THREAD_DB_TYPE],
-[AC_MSG_CHECKING([for $1 in thread_db.h])
- AC_CACHE_VAL(gdbserver_cv_have_thread_db_type_$1,
-   [AC_TRY_COMPILE([
-#include <thread_db.h>],
-      [$1 avar],
-      gdbserver_cv_have_thread_db_type_$1=yes,
-      gdbserver_cv_have_thread_db_type_$1=no
-   )])
- if test $gdbserver_cv_have_thread_db_type_$1 = yes; then
-   AC_DEFINE([HAVE_]translit($1, [a-z], [A-Z]), 1,
-	     [Define if <thread_db.h> has $1.])
- fi
- AC_MSG_RESULT($gdbserver_cv_have_thread_db_type_$1)
-])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/aclocal.m4 ./gdb/gdbserver/aclocal.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/aclocal.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/aclocal.m4	1970-01-01 00:00:00.000000000 +0000
@@ -1,101 +0,0 @@
-# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
-
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
-
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997-2017 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
-# From Jim Meyering
-
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MAINTAINER_MODE([DEFAULT-MODE])
-# ----------------------------------
-# Control maintainer-specific portions of Makefiles.
-# Default is to disable them, unless 'enable' is passed literally.
-# For symmetry, 'disable' may be passed as well.  Anyway, the user
-# can override the default with the --enable/--disable switch.
-AC_DEFUN([AM_MAINTAINER_MODE],
-[m4_case(m4_default([$1], [disable]),
-       [enable], [m4_define([am_maintainer_other], [disable])],
-       [disable], [m4_define([am_maintainer_other], [enable])],
-       [m4_define([am_maintainer_other], [enable])
-        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
-  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
-  AC_ARG_ENABLE([maintainer-mode],
-    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
-      am_maintainer_other[ make rules and dependencies not useful
-      (and sometimes confusing) to the casual installer])],
-    [USE_MAINTAINER_MODE=$enableval],
-    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
-  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
-  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
-  MAINT=$MAINTAINER_MODE_TRUE
-  AC_SUBST([MAINT])dnl
-]
-)
-
-# Copyright (C) 2006-2017 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# --------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-m4_include([acinclude.m4])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/ax.c ./gdb/gdbserver/ax.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/ax.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/ax.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,1376 +0,0 @@
-/* Agent expression code for remote server.
-   Copyright (C) 2009-2020 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 "server.h"
-#include "ax.h"
-#include "gdbsupport/format.h"
-#include "tracepoint.h"
-#include "gdbsupport/rsp-low.h"
-
-static void ax_vdebug (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
-
-#ifdef IN_PROCESS_AGENT
-int debug_agent = 0;
-#endif
-
-static void
-ax_vdebug (const char *fmt, ...)
-{
-  char buf[1024];
-  va_list ap;
-
-  va_start (ap, fmt);
-  vsprintf (buf, fmt, ap);
-#ifdef IN_PROCESS_AGENT
-  fprintf (stderr, PROG "/ax: %s\n", buf);
-#else
-  debug_printf (PROG "/ax: %s\n", buf);
-#endif
-  va_end (ap);
-}
-
-#define ax_debug_1(level, fmt, args...)	\
-  do {						\
-    if (level <= debug_threads)			\
-      ax_vdebug ((fmt), ##args);		\
-  } while (0)
-
-#define ax_debug(FMT, args...)		\
-  ax_debug_1 (1, FMT, ##args)
-
-/* This enum must exactly match what is documented in
-   gdb/doc/agentexpr.texi, including all the numerical values.  */
-
-enum gdb_agent_op
-  {
-#define DEFOP(NAME, SIZE, DATA_SIZE, CONSUMED, PRODUCED, VALUE)  \
-    gdb_agent_op_ ## NAME = VALUE,
-#include "gdbsupport/ax.def"
-#undef DEFOP
-    gdb_agent_op_last
-  };
-
-static const char *gdb_agent_op_names [gdb_agent_op_last] =
-  {
-    "?undef?"
-#define DEFOP(NAME, SIZE, DATA_SIZE, CONSUMED, PRODUCED, VALUE)  , # NAME
-#include "gdbsupport/ax.def"
-#undef DEFOP
-  };
-
-#ifndef IN_PROCESS_AGENT
-static const unsigned char gdb_agent_op_sizes [gdb_agent_op_last] =
-  {
-    0
-#define DEFOP(NAME, SIZE, DATA_SIZE, CONSUMED, PRODUCED, VALUE)  , SIZE
-#include "gdbsupport/ax.def"
-#undef DEFOP
-  };
-#endif
-
-/* A wrapper for gdb_agent_op_names that does some bounds-checking.  */
-
-static const char *
-gdb_agent_op_name (int op)
-{
-  if (op < 0 || op >= gdb_agent_op_last || gdb_agent_op_names[op] == NULL)
-    return "?undef?";
-  return gdb_agent_op_names[op];
-}
-
-#ifndef IN_PROCESS_AGENT
-
-/* The packet form of an agent expression consists of an 'X', number
-   of bytes in expression, a comma, and then the bytes.  */
-
-struct agent_expr *
-gdb_parse_agent_expr (const char **actparm)
-{
-  const char *act = *actparm;
-  ULONGEST xlen;
-  struct agent_expr *aexpr;
-
-  ++act;  /* skip the X */
-  act = unpack_varlen_hex (act, &xlen);
-  ++act;  /* skip a comma */
-  aexpr = XNEW (struct agent_expr);
-  aexpr->length = xlen;
-  aexpr->bytes = (unsigned char *) xmalloc (xlen);
-  hex2bin (act, aexpr->bytes, xlen);
-  *actparm = act + (xlen * 2);
-  return aexpr;
-}
-
-void
-gdb_free_agent_expr (struct agent_expr *aexpr)
-{
-  if (aexpr != NULL)
-    {
-      free (aexpr->bytes);
-      free (aexpr);
-    }
-}
-
-/* Convert the bytes of an agent expression back into hex digits, so
-   they can be printed or uploaded.  This allocates the buffer,
-   callers should free when they are done with it.  */
-
-char *
-gdb_unparse_agent_expr (struct agent_expr *aexpr)
-{
-  char *rslt;
-
-  rslt = (char *) xmalloc (2 * aexpr->length + 1);
-  bin2hex (aexpr->bytes, rslt, aexpr->length);
-  return rslt;
-}
-
-/* Bytecode compilation.  */
-
-CORE_ADDR current_insn_ptr;
-
-int emit_error;
-
-struct bytecode_address
-{
-  int pc;
-  CORE_ADDR address;
-  int goto_pc;
-  /* Offset and size of field to be modified in the goto block.  */
-  int from_offset, from_size;
-  struct bytecode_address *next;
-} *bytecode_address_table;
-
-void
-emit_prologue (void)
-{
-  target_emit_ops ()->emit_prologue ();
-}
-
-void
-emit_epilogue (void)
-{
-  target_emit_ops ()->emit_epilogue ();
-}
-
-static void
-emit_add (void)
-{
-  target_emit_ops ()->emit_add ();
-}
-
-static void
-emit_sub (void)
-{
-  target_emit_ops ()->emit_sub ();
-}
-
-static void
-emit_mul (void)
-{
-  target_emit_ops ()->emit_mul ();
-}
-
-static void
-emit_lsh (void)
-{
-  target_emit_ops ()->emit_lsh ();
-}
-
-static void
-emit_rsh_signed (void)
-{
-  target_emit_ops ()->emit_rsh_signed ();
-}
-
-static void
-emit_rsh_unsigned (void)
-{
-  target_emit_ops ()->emit_rsh_unsigned ();
-}
-
-static void
-emit_ext (int arg)
-{
-  target_emit_ops ()->emit_ext (arg);
-}
-
-static void
-emit_log_not (void)
-{
-  target_emit_ops ()->emit_log_not ();
-}
-
-static void
-emit_bit_and (void)
-{
-  target_emit_ops ()->emit_bit_and ();
-}
-
-static void
-emit_bit_or (void)
-{
-  target_emit_ops ()->emit_bit_or ();
-}
-
-static void
-emit_bit_xor (void)
-{
-  target_emit_ops ()->emit_bit_xor ();
-}
-
-static void
-emit_bit_not (void)
-{
-  target_emit_ops ()->emit_bit_not ();
-}
-
-static void
-emit_equal (void)
-{
-  target_emit_ops ()->emit_equal ();
-}
-
-static void
-emit_less_signed (void)
-{
-  target_emit_ops ()->emit_less_signed ();
-}
-
-static void
-emit_less_unsigned (void)
-{
-  target_emit_ops ()->emit_less_unsigned ();
-}
-
-static void
-emit_ref (int size)
-{
-  target_emit_ops ()->emit_ref (size);
-}
-
-static void
-emit_if_goto (int *offset_p, int *size_p)
-{
-  target_emit_ops ()->emit_if_goto (offset_p, size_p);
-}
-
-static void
-emit_goto (int *offset_p, int *size_p)
-{
-  target_emit_ops ()->emit_goto (offset_p, size_p);
-}
-
-static void
-write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
-{
-  target_emit_ops ()->write_goto_address (from, to, size);
-}
-
-static void
-emit_const (LONGEST num)
-{
-  target_emit_ops ()->emit_const (num);
-}
-
-static void
-emit_reg (int reg)
-{
-  target_emit_ops ()->emit_reg (reg);
-}
-
-static void
-emit_pop (void)
-{
-  target_emit_ops ()->emit_pop ();
-}
-
-static void
-emit_stack_flush (void)
-{
-  target_emit_ops ()->emit_stack_flush ();
-}
-
-static void
-emit_zero_ext (int arg)
-{
-  target_emit_ops ()->emit_zero_ext (arg);
-}
-
-static void
-emit_swap (void)
-{
-  target_emit_ops ()->emit_swap ();
-}
-
-static void
-emit_stack_adjust (int n)
-{
-  target_emit_ops ()->emit_stack_adjust (n);
-}
-
-/* FN's prototype is `LONGEST(*fn)(int)'.  */
-
-static void
-emit_int_call_1 (CORE_ADDR fn, int arg1)
-{
-  target_emit_ops ()->emit_int_call_1 (fn, arg1);
-}
-
-/* FN's prototype is `void(*fn)(int,LONGEST)'.  */
-
-static void
-emit_void_call_2 (CORE_ADDR fn, int arg1)
-{
-  target_emit_ops ()->emit_void_call_2 (fn, arg1);
-}
-
-static void
-emit_eq_goto (int *offset_p, int *size_p)
-{
-  target_emit_ops ()->emit_eq_goto (offset_p, size_p);
-}
-
-static void
-emit_ne_goto (int *offset_p, int *size_p)
-{
-  target_emit_ops ()->emit_ne_goto (offset_p, size_p);
-}
-
-static void
-emit_lt_goto (int *offset_p, int *size_p)
-{
-  target_emit_ops ()->emit_lt_goto (offset_p, size_p);
-}
-
-static void
-emit_ge_goto (int *offset_p, int *size_p)
-{
-  target_emit_ops ()->emit_ge_goto (offset_p, size_p);
-}
-
-static void
-emit_gt_goto (int *offset_p, int *size_p)
-{
-  target_emit_ops ()->emit_gt_goto (offset_p, size_p);
-}
-
-static void
-emit_le_goto (int *offset_p, int *size_p)
-{
-  target_emit_ops ()->emit_le_goto (offset_p, size_p);
-}
-
-/* Scan an agent expression for any evidence that the given PC is the
-   target of a jump bytecode in the expression.  */
-
-static int
-is_goto_target (struct agent_expr *aexpr, int pc)
-{
-  int i;
-  unsigned char op;
-
-  for (i = 0; i < aexpr->length; i += 1 + gdb_agent_op_sizes[op])
-    {
-      op = aexpr->bytes[i];
-
-      if (op == gdb_agent_op_goto || op == gdb_agent_op_if_goto)
-	{
-	  int target = (aexpr->bytes[i + 1] << 8) + aexpr->bytes[i + 2];
-	  if (target == pc)
-	    return 1;
-	}
-    }
-
-  return 0;
-}
-
-/* Given an agent expression, turn it into native code.  */
-
-enum eval_result_type
-compile_bytecodes (struct agent_expr *aexpr)
-{
-  int pc = 0;
-  int done = 0;
-  unsigned char op, next_op;
-  int arg;
-  /* This is only used to build 64-bit value for constants.  */
-  ULONGEST top;
-  struct bytecode_address *aentry, *aentry2;
-
-#define UNHANDLED					\
-  do							\
-    {							\
-      ax_debug ("Cannot compile op 0x%x\n", op);	\
-      return expr_eval_unhandled_opcode;		\
-    } while (0)
-
-  if (aexpr->length == 0)
-    {
-      ax_debug ("empty agent expression\n");
-      return expr_eval_empty_expression;
-    }
-
-  bytecode_address_table = NULL;
-
-  while (!done)
-    {
-      op = aexpr->bytes[pc];
-
-      ax_debug ("About to compile op 0x%x, pc=%d\n", op, pc);
-
-      /* Record the compiled-code address of the bytecode, for use by
-	 jump instructions.  */
-      aentry = XNEW (struct bytecode_address);
-      aentry->pc = pc;
-      aentry->address = current_insn_ptr;
-      aentry->goto_pc = -1;
-      aentry->from_offset = aentry->from_size = 0;
-      aentry->next = bytecode_address_table;
-      bytecode_address_table = aentry;
-
-      ++pc;
-
-      emit_error = 0;
-
-      switch (op)
-	{
-	case gdb_agent_op_add:
-	  emit_add ();
-	  break;
-
-	case gdb_agent_op_sub:
-	  emit_sub ();
-	  break;
-
-	case gdb_agent_op_mul:
-	  emit_mul ();
-	  break;
-
-	case gdb_agent_op_div_signed:
-	  UNHANDLED;
-	  break;
-
-	case gdb_agent_op_div_unsigned:
-	  UNHANDLED;
-	  break;
-
-	case gdb_agent_op_rem_signed:
-	  UNHANDLED;
-	  break;
-
-	case gdb_agent_op_rem_unsigned:
-	  UNHANDLED;
-	  break;
-
-	case gdb_agent_op_lsh:
-	  emit_lsh ();
-	  break;
-
-	case gdb_agent_op_rsh_signed:
-	  emit_rsh_signed ();
-	  break;
-
-	case gdb_agent_op_rsh_unsigned:
-	  emit_rsh_unsigned ();
-	  break;
-
-	case gdb_agent_op_trace:
-	  UNHANDLED;
-	  break;
-
-	case gdb_agent_op_trace_quick:
-	  UNHANDLED;
-	  break;
-
-	case gdb_agent_op_log_not:
-	  emit_log_not ();
-	  break;
-
-	case gdb_agent_op_bit_and:
-	  emit_bit_and ();
-	  break;
-
-	case gdb_agent_op_bit_or:
-	  emit_bit_or ();
-	  break;
-
-	case gdb_agent_op_bit_xor:
-	  emit_bit_xor ();
-	  break;
-
-	case gdb_agent_op_bit_not:
-	  emit_bit_not ();
-	  break;
-
-	case gdb_agent_op_equal:
-	  next_op = aexpr->bytes[pc];
-	  if (next_op == gdb_agent_op_if_goto
-	      && !is_goto_target (aexpr, pc)
-	      && target_emit_ops ()->emit_eq_goto)
-	    {
-	      ax_debug ("Combining equal & if_goto");
-	      pc += 1;
-	      aentry->pc = pc;
-	      arg = aexpr->bytes[pc++];
-	      arg = (arg << 8) + aexpr->bytes[pc++];
-	      aentry->goto_pc = arg;
-	      emit_eq_goto (&(aentry->from_offset), &(aentry->from_size));
-	    }
-	  else if (next_op == gdb_agent_op_log_not
-		   && (aexpr->bytes[pc + 1] == gdb_agent_op_if_goto)
-		   && !is_goto_target (aexpr, pc + 1)
-		   && target_emit_ops ()->emit_ne_goto)
-	    {
-	      ax_debug ("Combining equal & log_not & if_goto");
-	      pc += 2;
-	      aentry->pc = pc;
-	      arg = aexpr->bytes[pc++];
-	      arg = (arg << 8) + aexpr->bytes[pc++];
-	      aentry->goto_pc = arg;
-	      emit_ne_goto (&(aentry->from_offset), &(aentry->from_size));
-	    }
-	  else
-	    emit_equal ();
-	  break;
-
-	case gdb_agent_op_less_signed:
-	  next_op = aexpr->bytes[pc];
-	  if (next_op == gdb_agent_op_if_goto
-	      && !is_goto_target (aexpr, pc))
-	    {
-	      ax_debug ("Combining less_signed & if_goto");
-	      pc += 1;
-	      aentry->pc = pc;
-	      arg = aexpr->bytes[pc++];
-	      arg = (arg << 8) + aexpr->bytes[pc++];
-	      aentry->goto_pc = arg;
-	      emit_lt_goto (&(aentry->from_offset), &(aentry->from_size));
-	    }
-	  else if (next_op == gdb_agent_op_log_not
-		   && !is_goto_target (aexpr, pc)
-		   && (aexpr->bytes[pc + 1] == gdb_agent_op_if_goto)
-		   && !is_goto_target (aexpr, pc + 1))
-	    {
-	      ax_debug ("Combining less_signed & log_not & if_goto");
-	      pc += 2;
-	      aentry->pc = pc;
-	      arg = aexpr->bytes[pc++];
-	      arg = (arg << 8) + aexpr->bytes[pc++];
-	      aentry->goto_pc = arg;
-	      emit_ge_goto (&(aentry->from_offset), &(aentry->from_size));
-	    }
-	  else
-	    emit_less_signed ();
-	  break;
-
-	case gdb_agent_op_less_unsigned:
-	  emit_less_unsigned ();
-	  break;
-
-	case gdb_agent_op_ext:
-	  arg = aexpr->bytes[pc++];
-	  if (arg < (sizeof (LONGEST) * 8))
-	    emit_ext (arg);
-	  break;
-
-	case gdb_agent_op_ref8:
-	  emit_ref (1);
-	  break;
-
-	case gdb_agent_op_ref16:
-	  emit_ref (2);
-	  break;
-
-	case gdb_agent_op_ref32:
-	  emit_ref (4);
-	  break;
-
-	case gdb_agent_op_ref64:
-	  emit_ref (8);
-	  break;
-
-	case gdb_agent_op_if_goto:
-	  arg = aexpr->bytes[pc++];
-	  arg = (arg << 8) + aexpr->bytes[pc++];
-	  aentry->goto_pc = arg;
-	  emit_if_goto (&(aentry->from_offset), &(aentry->from_size));
-	  break;
-
-	case gdb_agent_op_goto:
-	  arg = aexpr->bytes[pc++];
-	  arg = (arg << 8) + aexpr->bytes[pc++];
-	  aentry->goto_pc = arg;
-	  emit_goto (&(aentry->from_offset), &(aentry->from_size));
-	  break;
-
-	case gdb_agent_op_const8:
-	  emit_stack_flush ();
-	  top = aexpr->bytes[pc++];
-	  emit_const (top);
-	  break;
-
-	case gdb_agent_op_const16:
-	  emit_stack_flush ();
-	  top = aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  emit_const (top);
-	  break;
-
-	case gdb_agent_op_const32:
-	  emit_stack_flush ();
-	  top = aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  emit_const (top);
-	  break;
-
-	case gdb_agent_op_const64:
-	  emit_stack_flush ();
-	  top = aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  emit_const (top);
-	  break;
-
-	case gdb_agent_op_reg:
-	  emit_stack_flush ();
-	  arg = aexpr->bytes[pc++];
-	  arg = (arg << 8) + aexpr->bytes[pc++];
-	  emit_reg (arg);
-	  break;
-
-	case gdb_agent_op_end:
-	  ax_debug ("At end of expression\n");
-
-	  /* Assume there is one stack element left, and that it is
-	     cached in "top" where emit_epilogue can get to it.  */
-	  emit_stack_adjust (1);
-
-	  done = 1;
-	  break;
-
-	case gdb_agent_op_dup:
-	  /* In our design, dup is equivalent to stack flushing.  */
-	  emit_stack_flush ();
-	  break;
-
-	case gdb_agent_op_pop:
-	  emit_pop ();
-	  break;
-
-	case gdb_agent_op_zero_ext:
-	  arg = aexpr->bytes[pc++];
-	  if (arg < (sizeof (LONGEST) * 8))
-	    emit_zero_ext (arg);
-	  break;
-
-	case gdb_agent_op_swap:
-	  next_op = aexpr->bytes[pc];
-	  /* Detect greater-than comparison sequences.  */
-	  if (next_op == gdb_agent_op_less_signed
-	      && !is_goto_target (aexpr, pc)
-	      && (aexpr->bytes[pc + 1] == gdb_agent_op_if_goto)
-	      && !is_goto_target (aexpr, pc + 1))
-	    {
-	      ax_debug ("Combining swap & less_signed & if_goto");
-	      pc += 2;
-	      aentry->pc = pc;
-	      arg = aexpr->bytes[pc++];
-	      arg = (arg << 8) + aexpr->bytes[pc++];
-	      aentry->goto_pc = arg;
-	      emit_gt_goto (&(aentry->from_offset), &(aentry->from_size));
-	    }
-	  else if (next_op == gdb_agent_op_less_signed
-		   && !is_goto_target (aexpr, pc)
-		   && (aexpr->bytes[pc + 1] == gdb_agent_op_log_not)
-		   && !is_goto_target (aexpr, pc + 1)
-		   && (aexpr->bytes[pc + 2] == gdb_agent_op_if_goto)
-		   && !is_goto_target (aexpr, pc + 2))
-	    {
-	      ax_debug ("Combining swap & less_signed & log_not & if_goto");
-	      pc += 3;
-	      aentry->pc = pc;
-	      arg = aexpr->bytes[pc++];
-	      arg = (arg << 8) + aexpr->bytes[pc++];
-	      aentry->goto_pc = arg;
-	      emit_le_goto (&(aentry->from_offset), &(aentry->from_size));
-	    }
-	  else
-	    emit_swap ();
-	  break;
-
-	case gdb_agent_op_getv:
-	  emit_stack_flush ();
-	  arg = aexpr->bytes[pc++];
-	  arg = (arg << 8) + aexpr->bytes[pc++];
-	  emit_int_call_1 (get_get_tsv_func_addr (),
-			   arg);
-	  break;
-
-	case gdb_agent_op_setv:
-	  arg = aexpr->bytes[pc++];
-	  arg = (arg << 8) + aexpr->bytes[pc++];
-	  emit_void_call_2 (get_set_tsv_func_addr (),
-			    arg);
-	  break;
-
-	case gdb_agent_op_tracev:
-	  UNHANDLED;
-	  break;
-
-	  /* GDB never (currently) generates any of these ops.  */
-	case gdb_agent_op_float:
-	case gdb_agent_op_ref_float:
-	case gdb_agent_op_ref_double:
-	case gdb_agent_op_ref_long_double:
-	case gdb_agent_op_l_to_d:
-	case gdb_agent_op_d_to_l:
-	case gdb_agent_op_trace16:
-	  UNHANDLED;
-	  break;
-
-	default:
-	  ax_debug ("Agent expression op 0x%x not recognized\n", op);
-	  /* Don't struggle on, things will just get worse.  */
-	  return expr_eval_unrecognized_opcode;
-	}
-
-      /* This catches errors that occur in target-specific code
-	 emission.  */
-      if (emit_error)
-	{
-	  ax_debug ("Error %d while emitting code for %s\n",
-		    emit_error, gdb_agent_op_name (op));
-	  return expr_eval_unhandled_opcode;
-	}
-
-      ax_debug ("Op %s compiled\n", gdb_agent_op_name (op));
-    }
-
-  /* Now fill in real addresses as goto destinations.  */
-  for (aentry = bytecode_address_table; aentry; aentry = aentry->next)
-    {
-      int written = 0;
-
-      if (aentry->goto_pc < 0)
-	continue;
-
-      /* Find the location that we are going to, and call back into
-	 target-specific code to write the actual address or
-	 displacement.  */
-      for (aentry2 = bytecode_address_table; aentry2; aentry2 = aentry2->next)
-	{
-	  if (aentry2->pc == aentry->goto_pc)
-	    {
-	      ax_debug ("Want to jump from %s to %s\n",
-			paddress (aentry->address),
-			paddress (aentry2->address));
-	      write_goto_address (aentry->address + aentry->from_offset,
-				  aentry2->address, aentry->from_size);
-	      written = 1;
-	      break;
-	    }
-	}
-
-      /* Error out if we didn't find a destination.  */
-      if (!written)
-	{
-	  ax_debug ("Destination of goto %d not found\n",
-		    aentry->goto_pc);
-	  return expr_eval_invalid_goto;
-	}
-    }
-
-  return expr_eval_no_error;
-}
-
-#endif
-
-/* Make printf-type calls using arguments supplied from the host.  We
-   need to parse the format string ourselves, and call the formatting
-   function with one argument at a time, partly because there is no
-   safe portable way to construct a varargs call, and partly to serve
-   as a security barrier against bad format strings that might get
-   in.  */
-
-static void
-ax_printf (CORE_ADDR fn, CORE_ADDR chan, const char *format,
-	   int nargs, ULONGEST *args)
-{
-  const char *f = format;
-  int i;
-  const char *current_substring;
-  int nargs_wanted;
-
-  ax_debug ("Printf of \"%s\" with %d args", format, nargs);
-
-  format_pieces fpieces (&f);
-
-  nargs_wanted = 0;
-  for (auto &&piece : fpieces)
-    if (piece.argclass != literal_piece)
-      ++nargs_wanted;
-
-  if (nargs != nargs_wanted)
-    error (_("Wrong number of arguments for specified format-string"));
-
-  i = 0;
-  for (auto &&piece : fpieces)
-    {
-      current_substring = piece.string;
-      ax_debug ("current substring is '%s', class is %d",
-		current_substring, piece.argclass);
-      switch (piece.argclass)
-	{
-	case string_arg:
-	  {
-	    gdb_byte *str;
-	    CORE_ADDR tem;
-	    int j;
-
-	    tem = args[i];
-	    if (tem == 0)
-	      {
-		printf (current_substring, "(null)");
-		break;
-	      }
-
-	    /* This is a %s argument.  Find the length of the string.  */
-	    for (j = 0;; j++)
-	      {
-		gdb_byte c;
-
-		read_inferior_memory (tem + j, &c, 1);
-		if (c == 0)
-		  break;
-	      }
-
-	      /* Copy the string contents into a string inside GDB.  */
-	      str = (gdb_byte *) alloca (j + 1);
-	      if (j != 0)
-		read_inferior_memory (tem, str, j);
-	      str[j] = 0;
-
-              printf (current_substring, (char *) str);
-	    }
-	    break;
-
-	  case long_long_arg:
-#if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
-	    {
-	      long long val = args[i];
-
-              printf (current_substring, val);
-	      break;
-	    }
-#else
-	    error (_("long long not supported in agent printf"));
-#endif
-	case int_arg:
-	  {
-	    int val = args[i];
-
-	    printf (current_substring, val);
-	    break;
-	  }
-
-	case long_arg:
-	  {
-	    long val = args[i];
-
-	    printf (current_substring, val);
-	    break;
-	  }
-
-	case size_t_arg:
-	  {
-	    size_t val = args[i];
-
-	    printf (current_substring, val);
-	    break;
-	  }
-
-	case literal_piece:
-	  /* Print a portion of the format string that has no
-	     directives.  Note that this will not include any
-	     ordinary %-specs, but it might include "%%".  That is
-	     why we use printf_filtered and not puts_filtered here.
-	     Also, we pass a dummy argument because some platforms
-	     have modified GCC to include -Wformat-security by
-	     default, which will warn here if there is no
-	     argument.  */
-	  printf (current_substring, 0);
-	  break;
-
-	default:
-	  error (_("Format directive in '%s' not supported in agent printf"),
-		 current_substring);
-	}
-
-      /* Maybe advance to the next argument.  */
-      if (piece.argclass != literal_piece)
-	++i;
-    }
-
-  fflush (stdout);
-}
-
-/* The agent expression evaluator, as specified by the GDB docs. It
-   returns 0 if everything went OK, and a nonzero error code
-   otherwise.  */
-
-enum eval_result_type
-gdb_eval_agent_expr (struct eval_agent_expr_context *ctx,
-		     struct agent_expr *aexpr,
-		     ULONGEST *rslt)
-{
-  int pc = 0;
-#define STACK_MAX 100
-  ULONGEST stack[STACK_MAX], top;
-  int sp = 0;
-  unsigned char op;
-  int arg;
-
-  /* This union is a convenient way to convert representations.  For
-     now, assume a standard architecture where the hardware integer
-     types have 8, 16, 32, 64 bit types.  A more robust solution would
-     be to import stdint.h from gnulib.  */
-  union
-  {
-    union
-    {
-      unsigned char bytes[1];
-      unsigned char val;
-    } u8;
-    union
-    {
-      unsigned char bytes[2];
-      unsigned short val;
-    } u16;
-    union
-    {
-      unsigned char bytes[4];
-      unsigned int val;
-    } u32;
-    union
-    {
-      unsigned char bytes[8];
-      ULONGEST val;
-    } u64;
-  } cnv;
-
-  if (aexpr->length == 0)
-    {
-      ax_debug ("empty agent expression");
-      return expr_eval_empty_expression;
-    }
-
-  /* Cache the stack top in its own variable. Much of the time we can
-     operate on this variable, rather than dinking with the stack. It
-     needs to be copied to the stack when sp changes.  */
-  top = 0;
-
-  while (1)
-    {
-      op = aexpr->bytes[pc++];
-
-      ax_debug ("About to interpret byte 0x%x", op);
-
-      switch (op)
-	{
-	case gdb_agent_op_add:
-	  top += stack[--sp];
-	  break;
-
-	case gdb_agent_op_sub:
-	  top = stack[--sp] - top;
-	  break;
-
-	case gdb_agent_op_mul:
-	  top *= stack[--sp];
-	  break;
-
-	case gdb_agent_op_div_signed:
-	  if (top == 0)
-	    {
-	      ax_debug ("Attempted to divide by zero");
-	      return expr_eval_divide_by_zero;
-	    }
-	  top = ((LONGEST) stack[--sp]) / ((LONGEST) top);
-	  break;
-
-	case gdb_agent_op_div_unsigned:
-	  if (top == 0)
-	    {
-	      ax_debug ("Attempted to divide by zero");
-	      return expr_eval_divide_by_zero;
-	    }
-	  top = stack[--sp] / top;
-	  break;
-
-	case gdb_agent_op_rem_signed:
-	  if (top == 0)
-	    {
-	      ax_debug ("Attempted to divide by zero");
-	      return expr_eval_divide_by_zero;
-	    }
-	  top = ((LONGEST) stack[--sp]) % ((LONGEST) top);
-	  break;
-
-	case gdb_agent_op_rem_unsigned:
-	  if (top == 0)
-	    {
-	      ax_debug ("Attempted to divide by zero");
-	      return expr_eval_divide_by_zero;
-	    }
-	  top = stack[--sp] % top;
-	  break;
-
-	case gdb_agent_op_lsh:
-	  top = stack[--sp] << top;
-	  break;
-
-	case gdb_agent_op_rsh_signed:
-	  top = ((LONGEST) stack[--sp]) >> top;
-	  break;
-
-	case gdb_agent_op_rsh_unsigned:
-	  top = stack[--sp] >> top;
-	  break;
-
-	case gdb_agent_op_trace:
-	  agent_mem_read (ctx, NULL, (CORE_ADDR) stack[--sp],
-			  (ULONGEST) top);
-	  if (--sp >= 0)
-	    top = stack[sp];
-	  break;
-
-	case gdb_agent_op_trace_quick:
-	  arg = aexpr->bytes[pc++];
-	  agent_mem_read (ctx, NULL, (CORE_ADDR) top, (ULONGEST) arg);
-	  break;
-
-	case gdb_agent_op_log_not:
-	  top = !top;
-	  break;
-
-	case gdb_agent_op_bit_and:
-	  top &= stack[--sp];
-	  break;
-
-	case gdb_agent_op_bit_or:
-	  top |= stack[--sp];
-	  break;
-
-	case gdb_agent_op_bit_xor:
-	  top ^= stack[--sp];
-	  break;
-
-	case gdb_agent_op_bit_not:
-	  top = ~top;
-	  break;
-
-	case gdb_agent_op_equal:
-	  top = (stack[--sp] == top);
-	  break;
-
-	case gdb_agent_op_less_signed:
-	  top = (((LONGEST) stack[--sp]) < ((LONGEST) top));
-	  break;
-
-	case gdb_agent_op_less_unsigned:
-	  top = (stack[--sp] < top);
-	  break;
-
-	case gdb_agent_op_ext:
-	  arg = aexpr->bytes[pc++];
-	  if (arg < (sizeof (LONGEST) * 8))
-	    {
-	      LONGEST mask = 1 << (arg - 1);
-	      top &= ((LONGEST) 1 << arg) - 1;
-	      top = (top ^ mask) - mask;
-	    }
-	  break;
-
-	case gdb_agent_op_ref8:
-	  agent_mem_read (ctx, cnv.u8.bytes, (CORE_ADDR) top, 1);
-	  top = cnv.u8.val;
-	  break;
-
-	case gdb_agent_op_ref16:
-	  agent_mem_read (ctx, cnv.u16.bytes, (CORE_ADDR) top, 2);
-	  top = cnv.u16.val;
-	  break;
-
-	case gdb_agent_op_ref32:
-	  agent_mem_read (ctx, cnv.u32.bytes, (CORE_ADDR) top, 4);
-	  top = cnv.u32.val;
-	  break;
-
-	case gdb_agent_op_ref64:
-	  agent_mem_read (ctx, cnv.u64.bytes, (CORE_ADDR) top, 8);
-	  top = cnv.u64.val;
-	  break;
-
-	case gdb_agent_op_if_goto:
-	  if (top)
-	    pc = (aexpr->bytes[pc] << 8) + (aexpr->bytes[pc + 1]);
-	  else
-	    pc += 2;
-	  if (--sp >= 0)
-	    top = stack[sp];
-	  break;
-
-	case gdb_agent_op_goto:
-	  pc = (aexpr->bytes[pc] << 8) + (aexpr->bytes[pc + 1]);
-	  break;
-
-	case gdb_agent_op_const8:
-	  /* Flush the cached stack top.  */
-	  stack[sp++] = top;
-	  top = aexpr->bytes[pc++];
-	  break;
-
-	case gdb_agent_op_const16:
-	  /* Flush the cached stack top.  */
-	  stack[sp++] = top;
-	  top = aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  break;
-
-	case gdb_agent_op_const32:
-	  /* Flush the cached stack top.  */
-	  stack[sp++] = top;
-	  top = aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  break;
-
-	case gdb_agent_op_const64:
-	  /* Flush the cached stack top.  */
-	  stack[sp++] = top;
-	  top = aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  top = (top << 8) + aexpr->bytes[pc++];
-	  break;
-
-	case gdb_agent_op_reg:
-	  /* Flush the cached stack top.  */
-	  stack[sp++] = top;
-	  arg = aexpr->bytes[pc++];
-	  arg = (arg << 8) + aexpr->bytes[pc++];
-	  {
-	    int regnum = arg;
-	    struct regcache *regcache = ctx->regcache;
-
-	    switch (register_size (regcache->tdesc, regnum))
-	      {
-	      case 8:
-		collect_register (regcache, regnum, cnv.u64.bytes);
-		top = cnv.u64.val;
-		break;
-	      case 4:
-		collect_register (regcache, regnum, cnv.u32.bytes);
-		top = cnv.u32.val;
-		break;
-	      case 2:
-		collect_register (regcache, regnum, cnv.u16.bytes);
-		top = cnv.u16.val;
-		break;
-	      case 1:
-		collect_register (regcache, regnum, cnv.u8.bytes);
-		top = cnv.u8.val;
-		break;
-	      default:
-		internal_error (__FILE__, __LINE__,
-				"unhandled register size");
-	      }
-	  }
-	  break;
-
-	case gdb_agent_op_end:
-	  ax_debug ("At end of expression, sp=%d, stack top cache=0x%s",
-		    sp, pulongest (top));
-	  if (rslt)
-	    {
-	      if (sp <= 0)
-		{
-		  /* This should be an error */
-		  ax_debug ("Stack is empty, nothing to return");
-		  return expr_eval_empty_stack;
-		}
-	      *rslt = top;
-	    }
-	  return expr_eval_no_error;
-
-	case gdb_agent_op_dup:
-	  stack[sp++] = top;
-	  break;
-
-	case gdb_agent_op_pop:
-	  if (--sp >= 0)
-	    top = stack[sp];
-	  break;
-
-	case gdb_agent_op_pick:
-	  arg = aexpr->bytes[pc++];
-	  stack[sp] = top;
-	  top = stack[sp - arg];
-	  ++sp;
-	  break;
-
-	case gdb_agent_op_rot:
-	  {
-	    ULONGEST tem = stack[sp - 1];
-
-	    stack[sp - 1] = stack[sp - 2];
-	    stack[sp - 2] = top;
-	    top = tem;
-	  }
-	  break;
-
-	case gdb_agent_op_zero_ext:
-	  arg = aexpr->bytes[pc++];
-	  if (arg < (sizeof (LONGEST) * 8))
-	    top &= ((LONGEST) 1 << arg) - 1;
-	  break;
-
-	case gdb_agent_op_swap:
-	  /* Interchange top two stack elements, making sure top gets
-	     copied back onto stack.  */
-	  stack[sp] = top;
-	  top = stack[sp - 1];
-	  stack[sp - 1] = stack[sp];
-	  break;
-
-	case gdb_agent_op_getv:
-	  /* Flush the cached stack top.  */
-	  stack[sp++] = top;
-	  arg = aexpr->bytes[pc++];
-	  arg = (arg << 8) + aexpr->bytes[pc++];
-	  top = agent_get_trace_state_variable_value (arg);
-	  break;
-
-	case gdb_agent_op_setv:
-	  arg = aexpr->bytes[pc++];
-	  arg = (arg << 8) + aexpr->bytes[pc++];
-	  agent_set_trace_state_variable_value (arg, top);
-	  /* Note that we leave the value on the stack, for the
-	     benefit of later/enclosing expressions.  */
-	  break;
-
-	case gdb_agent_op_tracev:
-	  arg = aexpr->bytes[pc++];
-	  arg = (arg << 8) + aexpr->bytes[pc++];
-	  agent_tsv_read (ctx, arg);
-	  break;
-
-	case gdb_agent_op_tracenz:
-	  agent_mem_read_string (ctx, NULL, (CORE_ADDR) stack[--sp],
-				 (ULONGEST) top);
-	  if (--sp >= 0)
-	    top = stack[sp];
-	  break;
-
-	case gdb_agent_op_printf:
-	  {
-	    int nargs, slen, i;
-	    CORE_ADDR fn = 0, chan = 0;
-	    /* Can't have more args than the entire size of the stack.  */
-	    ULONGEST args[STACK_MAX];
-	    char *format;
-
-	    nargs = aexpr->bytes[pc++];
-	    slen = aexpr->bytes[pc++];
-	    slen = (slen << 8) + aexpr->bytes[pc++];
-	    format = (char *) &(aexpr->bytes[pc]);
-	    pc += slen;
-	    /* Pop function and channel.  */
-	    fn = top;
-	    if (--sp >= 0)
-	      top = stack[sp];
-	    chan = top;
-	    if (--sp >= 0)
-	      top = stack[sp];
-	    /* Pop arguments into a dedicated array.  */
-	    for (i = 0; i < nargs; ++i)
-	      {
-		args[i] = top;
-		if (--sp >= 0)
-		  top = stack[sp];
-	      }
-
-	    /* A bad format string means something is very wrong; give
-	       up immediately.  */
-	    if (format[slen - 1] != '\0')
-	      error (_("Unterminated format string in printf bytecode"));
-
-	    ax_printf (fn, chan, format, nargs, args);
-	  }
-	  break;
-
-	  /* GDB never (currently) generates any of these ops.  */
-	case gdb_agent_op_float:
-	case gdb_agent_op_ref_float:
-	case gdb_agent_op_ref_double:
-	case gdb_agent_op_ref_long_double:
-	case gdb_agent_op_l_to_d:
-	case gdb_agent_op_d_to_l:
-	case gdb_agent_op_trace16:
-	  ax_debug ("Agent expression op 0x%x valid, but not handled",
-		    op);
-	  /* If ever GDB generates any of these, we don't have the
-	     option of ignoring.  */
-	  return expr_eval_unhandled_opcode;
-
-	default:
-	  ax_debug ("Agent expression op 0x%x not recognized", op);
-	  /* Don't struggle on, things will just get worse.  */
-	  return expr_eval_unrecognized_opcode;
-	}
-
-      /* Check for stack badness.  */
-      if (sp >= (STACK_MAX - 1))
-	{
-	  ax_debug ("Expression stack overflow");
-	  return expr_eval_stack_overflow;
-	}
-
-      if (sp < 0)
-	{
-	  ax_debug ("Expression stack underflow");
-	  return expr_eval_stack_underflow;
-	}
-
-      ax_debug ("Op %s -> sp=%d, top=0x%s",
-		gdb_agent_op_name (op), sp, phex_nz (top, 0));
-    }
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/ax.h ./gdb/gdbserver/ax.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/ax.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/ax.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,144 +0,0 @@
-/* Data structures and functions associated with agent expressions in GDB.
-   Copyright (C) 2009-2020 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 GDBSERVER_AX_H
-#define GDBSERVER_AX_H
-
-#include "regcache.h"
-
-#ifdef IN_PROCESS_AGENT
-#define debug_threads debug_agent
-#endif
-
-struct traceframe;
-
-/* Enumeration of the different kinds of things that can happen during
-   agent expression evaluation.  */
-
-enum eval_result_type
-  {
-    expr_eval_no_error,
-    expr_eval_empty_expression,
-    expr_eval_empty_stack,
-    expr_eval_stack_overflow,
-    expr_eval_stack_underflow,
-    expr_eval_unhandled_opcode,
-    expr_eval_unrecognized_opcode,
-    expr_eval_divide_by_zero,
-    expr_eval_invalid_goto
-  };
-
-struct agent_expr
-{
-  int length;
-
-  unsigned char *bytes;
-};
-
-#ifndef IN_PROCESS_AGENT
-
-/* The packet form of an agent expression consists of an 'X', number
-   of bytes in expression, a comma, and then the bytes.  */
-struct agent_expr *gdb_parse_agent_expr (const char **actparm);
-
-/* Release an agent expression.  */
-void gdb_free_agent_expr (struct agent_expr *aexpr);
-
-/* Convert the bytes of an agent expression back into hex digits, so
-   they can be printed or uploaded.  This allocates the buffer,
-   callers should free when they are done with it.  */
-char *gdb_unparse_agent_expr (struct agent_expr *aexpr);
-void emit_prologue (void);
-void emit_epilogue (void);
-enum eval_result_type compile_bytecodes (struct agent_expr *aexpr);
-#endif
-
-/* The context when evaluating agent expression.  */
-
-struct eval_agent_expr_context
-{
-  /* The registers when evaluating agent expression.  */
-  struct regcache *regcache;
-  /* The traceframe, if any, when evaluating agent expression.  */
-  struct traceframe *tframe;
-  /* The tracepoint, if any, when evaluating agent expression.  */
-  struct tracepoint *tpoint;
-};
-
-enum eval_result_type
-  gdb_eval_agent_expr (struct eval_agent_expr_context *ctx,
-		       struct agent_expr *aexpr,
-		       ULONGEST *rslt);
-
-/* Bytecode compilation function vector.  */
-
-struct emit_ops
-{
-  void (*emit_prologue) (void);
-  void (*emit_epilogue) (void);
-  void (*emit_add) (void);
-  void (*emit_sub) (void);
-  void (*emit_mul) (void);
-  void (*emit_lsh) (void);
-  void (*emit_rsh_signed) (void);
-  void (*emit_rsh_unsigned) (void);
-  void (*emit_ext) (int arg);
-  void (*emit_log_not) (void);
-  void (*emit_bit_and) (void);
-  void (*emit_bit_or) (void);
-  void (*emit_bit_xor) (void);
-  void (*emit_bit_not) (void);
-  void (*emit_equal) (void);
-  void (*emit_less_signed) (void);
-  void (*emit_less_unsigned) (void);
-  void (*emit_ref) (int size);
-  void (*emit_if_goto) (int *offset_p, int *size_p);
-  void (*emit_goto) (int *offset_p, int *size_p);
-  void (*write_goto_address) (CORE_ADDR from, CORE_ADDR to, int size);
-  void (*emit_const) (LONGEST num);
-  void (*emit_call) (CORE_ADDR fn);
-  void (*emit_reg) (int reg);
-  void (*emit_pop) (void);
-  void (*emit_stack_flush) (void);
-  void (*emit_zero_ext) (int arg);
-  void (*emit_swap) (void);
-  void (*emit_stack_adjust) (int n);
-
-  /* Emit code for a generic function that takes one fixed integer
-     argument and returns a 64-bit int (for instance, tsv getter).  */
-  void (*emit_int_call_1) (CORE_ADDR fn, int arg1);
-
-  /* Emit code for a generic function that takes one fixed integer
-     argument and a 64-bit int from the top of the stack, and returns
-     nothing (for instance, tsv setter).  */
-  void (*emit_void_call_2) (CORE_ADDR fn, int arg1);
-
-  /* Emit code specialized for common combinations of compare followed
-     by a goto.  */
-  void (*emit_eq_goto) (int *offset_p, int *size_p);
-  void (*emit_ne_goto) (int *offset_p, int *size_p);
-  void (*emit_lt_goto) (int *offset_p, int *size_p);
-  void (*emit_le_goto) (int *offset_p, int *size_p);
-  void (*emit_gt_goto) (int *offset_p, int *size_p);
-  void (*emit_ge_goto) (int *offset_p, int *size_p);
-};
-
-extern CORE_ADDR current_insn_ptr;
-extern int emit_error;
-
-#endif /* GDBSERVER_AX_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/ChangeLog ./gdb/gdbserver/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/ChangeLog	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/ChangeLog	1970-01-01 00:00:00.000000000 +0000
@@ -1,17819 +0,0 @@
-2020-01-28  Hannes Domani  <ssbssa@yahoo.de>
-
-	* server.c (handle_qxfer_libraries): Write segment-address with
-	paddress.
-
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* server.c (gdbserver_version): Change copyright year to 2020.
-	* gdbreplay.c (gdbreplay_version): Likewise.
-
-2019-12-26  Christian Biesinger  <cbiesinger@google.com>
-
-	* configure: Regenerate.
-	* configure.ac: Quote variable arguments of test.
-
-2019-12-10  Christian Biesinger  <cbiesinger@google.com>
-
-	* Makefile.in: Add safe-strerror.c to gdbreplay and IPA, and change
-	UNDO_GNULIB_CFLAGS to undo strerror_r instead of strerror.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* configure.ac: Don't check for strerror.
-	* linux-i386-ipa.c (initialize_fast_tracepoint_trampoline_buffer):
-	Call safe_strerror instead of strerror.
-	* server.h (strerror): Remove this now-unnecessary declaration.
-	* tracepoint.c (init_named_socket): Call safe_strerror instead of
-	strerror.
-	(gdb_agent_helper_thread): Likewise.
-	* utils.c (perror_with_name): Likewise.
-
-2019-11-26  Tom Tromey  <tom@tromey.com>
-
-	* 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>
-
-	* linux-aarch64-low.c (is_sve_tdesc): Check against target feature
-	instead of register count.
-	* tdesc.c (tdesc_contains_feature): New function.
-	* tdesc.h (tdesc_contains_feature): New prototype.
-
-2019-11-15  Christian Biesinger  <cbiesinger@google.com>
-
-	* Makefile.in: Add safe-strerror.c.
-	* configure: Regenerate.
-	* configure.ac: Don't source common.host.
-
-2019-11-15  Christian Biesinger  <cbiesinger@google.com>
-
-	* config.in: Regenerate.
-	* configure: Regenerate.
-
-2019-11-12  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* ax.c (ax_printf): Handle size_t_arg.
-
-2019-11-06  Christian Biesinger  <cbiesinger@google.com>
-
-	* linux-tdep.c (linux_info_proc): Use strtok_r instead of strtok.
-	* mi/mi-main.c (output_cores): Likewise.
-	* nat/linux-osdata.c (linux_xfer_osdata_cpus): Likewise.
-	(linux_xfer_osdata_modules): Likewise.
-	* remote.c (register_remote_support_xml): Likewise.
-	* sparc64-tdep.c (adi_is_addr_mapped): Likewise.
-	* xml-syscall.c (syscall_create_syscall_desc): Likewise.
-
-2019-11-01  Christian Biesinger  <cbiesinger@google.com>
-
-	* configure: Regenerate.
-	* configure.ac: Remove check for strerror_r.
-
-2019-10-31  Christian Biesinger  <cbiesinger@google.com>
-
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* configure.ac: Also check for strerror_r.
-
-2019-10-31  Christian Biesinger  <cbiesinger@google.com>
-
-	* ax.h (debug_agent): Remove duplicate declaration.
-
-2019-10-26  Tom de Vries  <tdevries@suse.de>
-
-	* linux-aarch64-low.c: Fix typos in comments.
-	* linux-arm-low.c: Same.
-	* linux-low.c: Same.
-	* linux-ppc-low.c: Same.
-	* proc-service.c: Same.
-	* regcache.h: Same.
-	* server.c: Same.
-	* tracepoint.c: Same.
-	* win32-low.c: Same.
-
-2019-10-25  Tom Tromey  <tromey@adacore.com>
-
-	* utils.c (xstrdup): Remove.
-
-2019-10-23  Tom Tromey  <tom@tromey.com>
-
-	* configure, config.in: Rebuild.
-
-2019-10-23  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-	* acinclude.m4: Use m4_include, not sinclude.
-
-2019-10-17  Tom Tromey  <tromey@adacore.com>
-
-	* configure: Rebuild.
-	* configure.ac: Use AC_CONFIG_HEADERS.  Create stamp-h there, not
-	in AC_CONFIG_FILES invocation.
-	* Makefile.in (stamp-h, Makefile): Use new-style config.status
-	invocation.
-
-2019-10-16  Christian Biesinger  <cbiesinger@google.com>
-
-	* server.c: Include xml-builtin.h.
-	(get_xml_features): Don't declare xml_builtins here.
-
-2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* Makefile.in: Remove references to vec-ipa.o.
-
-2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* Makefile.in: Remove references to vec.c.
-
-2019-10-02  Christian Biesinger  <cbiesinger@google.com>
-
-	* server.c (server_waiting): Change to bool.
-	(extended_protocol): Likewise.
-	(response_needed): Likewise.
-	(exit_requested): Likewise.
-	(run_once): Likewise.
-	(report_no_resumed): Likewise.
-	(non_stop): Likewise.
-	(disable_packet_vCont): Likewise.
-	(disable_packet_Tthread): Likewise.
-	(disable_packet_qC): Likewise.
-	(disable_packet_qfThreadInfo): Likewise.
-	(handle_general_set): Update.
-	(handle_detach): Update.
-	(handle_monitor_command): Update.
-	(handle_query): Update.
-	(captured_main): Update.
-	(process_serial_event): Update.
-	* server.h (server_waiting): Change to bool.
-	(disable_packet_vCont): Likewise.
-	(disable_packet_Tthread): Likewise.
-	(disable_packet_qC): Likewise.
-	(disable_packet_qfThreadInfo): Likewise.
-	(run_once): Likewise.
-	(non_stop): Likewise.
-	* target.c (target_stop_and_wait): Update.
-
-2019-10-02  Tom Tromey  <tromey@adacore.com>
-
-	* Makefile.in (SFILES): Add common-inferior.c.
-	(OBS): Add common-inferior.o.
-	* server.c (startup_with_shell): Don't define.
-
-2019-10-02  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* linux-low.c (linux_low_read_btrace): Update for change to
-	std::vector.
-
-2019-09-20  Christian Biesinger  <cbiesinger@google.com>
-
-	* debug.c (debug_threads): Remove comment in favor of the header.
-	* debug.h (using_threads): Add declaration.
-	(debug_threads): Add comment.
-	* linux-aarch64-low.c: Include debug.h and remove declaration of
-	debug_threads.
-	* nto-low.c: Likewise.
-	* remote-utils.c: Likewise.
-	* thread-db.c: Likewise.
-
-2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* configure.srv (ipa_ppc_linux_regobj): Remove powerpc-cell32l-ipa.o
-	and powerpc-cell64l-ipa.o.
-	(powerpc*-*-linux*): Remove powerpc-cell32l.o and powerpc-cell64l.o
-	from srv_regobj.  Remove rs6000/powerpc-cell32l.xml and
-	rs6000/powerpc-cell64l.xml from srv_xmlfiles.
-	(spu*-*-*): Remove.
-
-	* spu-low.c: Remove file.
-
-	* linux-ppc-low.c (INSTR_SC, NR_spu_run): Remove.
-	(parse_spufs_run): Remove.
-	(ppc_get_pc): Remove Cell/B.E. support.
-	(ppc_set_pc): Likewise.
-	(ppc_breakpoint_at): Likewise.
-	(ppc_arch_setup): Likewise.
-	(ppc_get_ipa_tdesc_idx): Do not handle tdesc_powerpc_cell64l or
-	tdesc_powerpc_cell32l.
-	(initialize_low_arch): Do not call init_registers_powerpc_cell64l
-	or init_registers_powerpc_cell32l.
-	* linux-ppc-ipa.c (get_ipa_tdesc): Do not handle PPC_TDESC_CELL.
-	(initialize_low_tracepoint): Do not call init_registers_powerpc_cell64l
-	or init_registers_powerpc_cell32l.
-	* linux-ppc-tdesc-init.h (PPC_TDESC_CELL): Mark as unused.
-	(init_registers_powerpc_cell32l): Remove prototype.
-	(init_registers_powerpc_cell64l): Likewise.
-
-	* target.h (struct target_ops): Remove qxfer_spu member.
-	* server.c (handle_qxfer_spu): Remove.
-	(qxfer_packets): Remove entry for "spu".
-	(handle_query): No longer support qXfer:spu:read or qXfer:spu:write.
-	* linux-low.c (SPUFS_MAGIC): Remove.
-	(spu_enumerate_spu_ids): Remove.
-	(linux_qxfer_spu): Remove.
-	(linux_target_ops): Remove qxfer_spu member.
-	* lynx-low.c (lynx_target_ops): Remove qxfer_spu member.
-	* nto-low.c (nto_target_ops): Remove qxfer_spu member.
-	* win32-low.c (win32_target_ops): Remove qxfer_spu member.
-
-2019-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* Makefile.in (SFILES): Add 'gdbsupport/gdb-dlfcn.c'.
-	(OBS): Add 'gdbsupport/gdb-dlfcn.o'.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-
-2019-08-15  Tom Tromey  <tromey@adacore.com>
-
-	* target.c (target_write_memory): Use gdb::byte_vector.
-
-2019-08-15  Tom Tromey  <tromey@adacore.com>
-
-	* tracepoint.c (write_inferior_data_pointer)
-	(write_inferior_integer, write_inferior_int8)
-	(write_inferior_uinteger, m_tracepoint_action_download)
-	(r_tracepoint_action_download, x_tracepoint_action_download)
-	(l_tracepoint_action_download, clear_inferior_trace_buffer)
-	(download_agent_expr, download_tracepoint_1)
-	(download_trace_state_variables, upload_fast_traceframes): Update.
-	* server.c (gdb_write_memory): Update.
-	* remote-utils.c (relocate_instruction): Update.
-	* proc-service.c (ps_pdwrite): Update.
-	* mem-break.c (remove_memory_breakpoint)
-	(delete_fast_tracepoint_jump, set_fast_tracepoint_jump)
-	(uninsert_fast_tracepoint_jumps_at)
-	(reinsert_fast_tracepoint_jumps_at): Update.
-	* linux-x86-low.c (append_insns)
-	(i386_install_fast_tracepoint_jump_pad)
-	(amd64_write_goto_address, i386_write_goto_address): Update.
-	* linux-s390-low.c (append_insns, s390_write_goto_address):
-	Update.
-	* linux-ppc-low.c (ppc_relocate_instruction)
-	(ppc_install_fast_tracepoint_jump_pad, emit_insns)
-	(ppc_write_goto_address): Update.
-	* linux-aarch64-low.c (append_insns): Update.
-	* target.h (struct target_ops): Update.
-	(write_inferior_memory): Don't declare.
-	* target.c (target_write_memory): Rename from
-	write_inferior_memory.  Remove old target_write_memory.
-
-2019-08-15  Tom Tromey  <tromey@adacore.com>
-
-	* target.c (write_inferior_memory): Use std::vector.
-
-2019-08-06  Frank Ch. Eigler  <fche@redhat.com>
-
-	PR build/24886
-	* configure.ac: Drop enable-libmcheck support.
-	* configure, config.in: Rebuild.
-	* acinclude.m4: Don't include it.
-
-2019-07-19  Alan Hayward  <alan.hayward@arm.com>
-
-	* configure.srv: Remove Arm xml files.
-
-2019-07-19  Alan Hayward  <alan.hayward@arm.com>
-
-	* configure.srv: Add new files. Remove xml generated files.
-	* linux-aarch32-low.c (initialize_low_arch_aarch32): Don't init
-	registers.
-	* linux-aarch32-low.h (tdesc_arm_with_neon): Remove.
-	* linux-aarch32-tdesc.c: New file.
-	* linux-aarch32-tdesc.h: New file.
-	* linux-aarch64-low.c (aarch64_arch_setup): Call aarch32_linux_read_description.
-	* linux-arm-low.c (init_registers_arm, tdesc_arm)
-	(init_registers_arm_with_iwmmxt, tdesc_arm_with_iwmmxt)
-	(init_registers_arm_with_vfpv2, tdesc_arm_with_vfpv2)
-	(init_registers_arm_with_vfpv3, tdesc_arm_with_vfpv3): Remove.
-	(arm_fill_wmmxregset, arm_store_wmmxregset, arm_fill_vfpregset)
-	(arm_store_vfpregset): Call arm_linux_get_tdesc_fp_type.
-	(arm_read_description): Call arm_linux_read_description.
-	(initialize_low_arch): Don't init registers.
-	* linux-arm-tdesc.c: New file.
-	* linux-arm-tdesc.h: New file.
-
-2019-07-10  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-arm-low.c (arm_fill_wmmxregset, arm_store_wmmxregset):
-	Move counter inside for.
-	(arm_read_description): Check ptrace earlier.
-	(arm_arch_setup): Call arm_linux_init_hwbp_cap here.
-
-2019-07-09  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-	* configure.ac: Change common to gdbsupport.
-	* acinclude.m4: Change common to gdbsupport.
-	* Makefile.in (SFILES, OBS, GDBREPLAY_OBS, IPA_OBJS)
-	(version-generated.c, gdbsupport/%-ipa.o, gdbsupport/%.o): Change
-	common to gdbsupport.
-	* ax.c, event-loop.c, fork-child.c, gdb_proc_service.h,
-	gdbreplay.c, gdbthread.h, hostio-errno.c, hostio.c, i387-fp.c,
-	inferiors.c, inferiors.h, linux-aarch64-tdesc-selftest.c,
-	linux-amd64-ipa.c, linux-i386-ipa.c, linux-low.c,
-	linux-tic6x-low.c, linux-x86-low.c, linux-x86-tdesc-selftest.c,
-	linux-x86-tdesc.c, lynx-i386-low.c, lynx-low.c, mem-break.h,
-	nto-x86-low.c, regcache.c, regcache.h, remote-utils.c, server.c,
-	server.h, spu-low.c, symbol.c, target.h, tdesc.c, tdesc.h,
-	thread-db.c, tracepoint.c, win32-i386-low.c, win32-low.c: Change
-	common to gdbsupport.
-
-2019-07-04  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-aarch32-low.c (arm_read_description, arm_regsets): Use new
-	defines.
-	* linux-arm-low.c (arm_read_description, arm_regsets): Likewise.
-
-2019-07-04  Alan Hayward  <alan.hayward@arm.com>
-
-	* configure.srv: Remove legacy xml.
-	* linux-aarch64-low.c (initialize_low_arch): Remove
-	initialize_low_tdesc call.
-	* linux-aarch64-tdesc-selftest.c: Remove file.
-	* linux-aarch64-tdesc.h (initialize_low_tdesc): Remove.
-	* linux-x86-low.c (initialize_low_arch): Remove
-	initialize_low_tdesc call.
-	* linux-x86-tdesc-selftest.c: Remove file.
-	* linux-x86-tdesc.h (initialize_low_tdesc): Remove.
-
-2019-06-20  Tom de Vries  <tdevries@suse.de>
-
-	* linux-s390-ipa.c (get_ipa_tdesc)[!__s390x__]: Use
-	s390_te_linux64_ft_collect_regmap for S390_TDESC_GS.
-
-2019-06-19  Tom de Vries  <tdevries@suse.de>
-
-	* debug.h (debug_write): Change return type to ssize_t.
-	* debug.c (debug_write): Same.
-
-2019-06-14  Tom Tromey  <tom@tromey.com>
-
-	* configure.ac: Use new path to gnulib.
-	* configure: Rebuild.
-	* Makefile.in (INCGNU, $(GNULIB_BUILDDIR)/Makefile): Use new path
-	to gnulib.
-
-2019-06-11  Tom Tromey  <tom@tromey.com>
-
-	* Makefile.in (SFILES): Add alloc.c.
-	(OBS): Add alloc.o.
-	(IPA_OBJS): Add alloc-ipa.o.
-	(alloc-ipa.o): New target.
-	(%.o: ../%.c): New pattern rule.
-
-2019-06-10  Tom Tromey  <tromey@adacore.com>
-
-	* remote-utils.c (look_up_one_symbol, relocate_instruction): Don't
-	end warning with a newline.
-	* linux-s390-low.c (s390_get_wordsize): Don't end warning with a
-	newline.
-	* thread-db.c (attach_thread): Don't end warning with a newline.
-	(thread_db_notice_clone): Likewise.
-	* tracepoint.c (gdb_agent_helper_thread): Don't end warning with a
-	newline.
-	* linux-x86-low.c (x86_get_min_fast_tracepoint_insn_len): Don't
-	end warning with a newline.
-
-2019-06-04  Pedro Alves  <palves@redhat.com>
-
-	* server.c (captured_main): Use make_unique_xstrdup.
-
-2019-06-02  Tom Tromey  <tom@tromey.com>
-
-	* gdbreplay.c (fromhex): Remove.
-	* Makefile.in (GDBREPLAY_OBS): Add rsp-low.o.
-
-2019-05-29  Tom Tromey  <tromey@adacore.com>
-
-	* configure: Rebuild.
-
-2019-05-06  Kevin Buettner  <kevinb@redhat.com>
-
-	* linux-x86-low.c (x86_fill_gregset): Don't compile 64-bit
-	sign extension code on 32-bit builds.
-
-2019-05-03  Eli Zaretskii  <eliz@gnu.org>
-
-	* remote-utils.c:
-	* gdbreplay.c [USE_WIN32API]: Remove the _WIN32_WINNT override.
-
-2019-04-19  Tom Tromey  <tom@tromey.com>
-
-	* server.c (struct vstop_notif): Derive from notif_event.
-	<base>: Remove.
-	(queue_stop_reply): Update.
-	(remove_all_on_match_ptid): Change type.  Rewrite.
-	(discard_queued_stop_replies): Rewrite.
-	(in_queued_stop_replies_ptid): Change type.
-	(in_queued_stop_replies): Rewrite.
-	(notif_stop): Update.
-	(queue_stop_reply_callback): Update.
-	(captured_main): Don't call initialize_notif.
-	(push_stop_notification): Update.
-	* notif.c (notif_write_event, handle_notif_ack)
-	(notif_event_enque, notif_push): Update.
-	(notif_event_xfree, initialize_notif): Remove.
-	* notif.h (struct notif_event): Include <list>, not
-	"common/queue.h".
-	(struct notif_server) <queue>: Now a std::list.
-	(notif_event_p): Remove typedef.
-	(initialize_notif): Don't declare.
-	(struct notif_event): Add virtual destructor.
-
-2019-04-17  Alan Hayward  <alan.hayward@arm.com>
-
-	* ax.c (ax_vdebug): Call debug_printf.
-	* debug.c (debug_write): New function.
-	* debug.h (debug_write): New declaration.
-	* linux-low.c (sigchld_handler): Call debug_write.
-
-2019-04-17  Alan Hayward  <alan.hayward@arm.com>
-
-	* debug.c (debug_set_output): New function.
-	(debug_vprintf): Send output to debug_file.
-	(debug_flush): Likewise.
-	* debug.h (debug_set_output): New declaration.
-	* server.c (handle_monitor_command): Add debug-file option.
-	(captured_main): Likewise.
-
-2019-04-17  Alan Hayward  <alan.hayward@arm.com>
-
-	* debug.c (remote_debug): Add definition.
-	* debug.h (remote_debug): Add declaration.
-	* hostio.c (remote_debug): Remove declaration.
-	* remote-utils.c (struct ui_file): Likewise.
-	(remote_debug): Likewise.
-	* remote-utils.h (remote_debug): Likewise,
-	* server.c (remote_debug): Remove definition.
-
-2019-04-10  Kevin Buettner  <kevinb@redhat.com>
-
-	* linux-x86-low.c (x86_fill_gregset): Sign extend EAX value
-	when using a 64-bit gdbserver.
-
-2019-04-09  Tom Tromey  <tromey@adacore.com>
-
-	* linux-low.c (select_event_lwp): Use find_thread_in_random.
-
-2019-04-08  Tom Tromey  <tom@tromey.com>
-
-	* linux-low.c (linux_detach_one_lwp): Replace throw_exception with
-	throw.
-	(linux_resume_one_lwp): Likewise.
-
-2019-04-08  Tom Tromey  <tom@tromey.com>
-
-	* gdbreplay.c: Update.
-	* linux-low.c: Update.
-	* server.c: Update.
-
-2019-04-08  Tom Tromey  <tom@tromey.com>
-
-	* server.c: Use C++ exception handling.
-	* linux-low.c: Use C++ exception handling.
-	* gdbreplay.c: Use C++ exception handling.
-
-2019-04-08  Tom Tromey  <tom@tromey.com>
-
-	* server.c (handle_btrace_general_set, handle_qxfer_btrace)
-	(handle_qxfer_btrace_conf, detach_or_kill_for_exit_cleanup)
-	(captured_main, main): Update.
-	* gdbreplay.c (main): Update.
-
-2019-04-05  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
-
-	* linux-low.c (linux_get_auxv): Remove static.  Return auxv entry
-	value in argument pointer, return 1 if the entry is found and 0
-	otherwise.  Move comment.
-	(linux_get_hwcap, linux_get_hwcap2): Use modified linux_get_auxv.
-	* linux-low.h (linux_get_auxv): Declare.
-	* linux-ppc-low.c (is_elfv2_inferior): Use linux_get_auxv.
-
-2019-04-05  Tom Tromey  <tromey@adacore.com>
-
-	* server.c (gdbserver_usage): Use upper-case for metasyntactic
-	variables.
-
-2019-03-28  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-low.c (AT_HWCAP2): Add define if not already included.
-
-2019-03-26  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-aarch64-low.c (aarch64_get_hwcap): Remove function.
-	(aarch64_arch_setup): Call linux_get_hwcap.
-	* linux-arm-low.c (arm_get_hwcap): Remove function.
-	(arm_read_description): Call linux_get_hwcap.
-	* linux-low.c (linux_get_auxv): New function.
-	(linux_get_hwcap): Likewise.
-	(linux_get_hwcap2): Likewise.
-	* linux-low.h (linux_get_hwcap): New declaration.
-	(linux_get_hwcap2): Likewise.
-	* linux-ppc-low.c (ppc_get_auxv): Remove function.
-	(ppc_arch_setup): Call linux_get_hwcap.
-	* linux-s390-low.c (s390_get_hwcap): Remove function.
-	(s390_arch_setup): Call linux_get_hwcap.
-
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
-
-	* linux-aarch64-low.c (aarch64_store_pauthregset): New function.
-	* linux-low.c (regsets_store_inferior_registers): Allow optional reads
-	to fail.
-	* linux-low.h (enum regset_type): Add OPTIONAL_REGS.
-
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
-
-	* linux-aarch64-low.c (AARCH64_HWCAP_PACA): New define.
-	(aarch64_get_hwcap): New function.
-	(aarch64_arch_setup): Read APIA hwcap.
-
-2019-03-22  Alan Hayward  <alan.hayward@arm.com>
-	    Jiong Wang  <jiong.wang@arm.com>
-
-	* linux-aarch64-ipa.c (get_ipa_tdesc): Add pauth param.
-	(initialize_low_tracepoint): Likewise.
-	* linux-aarch64-low.c (aarch64_arch_setup): Likewise.
-	* linux-aarch64-tdesc-selftest.c (aarch64_tdesc_test): Likewise.
-	* linux-aarch64-tdesc.c (struct target_desc): Likewise.
-	(aarch64_linux_read_description): Likewise.
-	* linux-aarch64-tdesc.h (aarch64_linux_read_description): Likewise.
-
-2019-03-12  John Baldwin  <jhb@FreeBSD.org>
-
-	* linux-x86-tdesc.c (i386_linux_read_description): Update call to
-	i386_create_target_description for 'segments' parameter.
-	* lynx-i386-low.c (lynx_i386_arch_setup): Likewise.
-	* nto-x86-low.c (nto_x86_arch_setup): Likewise.
-	* win32-i386-low.c (i386_arch_setup): Likewise.
-
-2019-03-12  Tom Tromey  <tromey@adacore.com>
-
-	* linux-low.c (iterate_over_lwps): Update.
-
-2019-03-06  Tom Tromey  <tom@tromey.com>
-
-	* server.c (detach_or_kill_for_exit_cleanup): Remove parameter.
-	(captured_main): Use SCOPE_EXIT.
-
-2019-03-04  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* configure.srv: Use '$enable_unittest' instead of '$development'
-	when checking whether to fill 'srv_regobj' on 'aarch64*-*-linux*'
-	case.
-
-2019-02-27  Tom Tromey  <tromey@adacore.com>
-
-	* gdbreplay.c (logchar): Handle \r\n.
-
-2019-02-07  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-low.c (linux_attach): Add process before lwp.
-	* server.c (attach_inferior): Check if already attached.
-
-2019-02-07  Tom Tromey  <tom@tromey.com>
-
-	* x86-tdesc.h: Rename include guard.
-	* x86-low.h: Add include guard.
-	* wincecompat.h: Rename include guard.
-	* win32-low.h: Add include guard.
-	* utils.h: Rename include guard.
-	* tracepoint.h: Rename include guard.
-	* tdesc.h: Rename include guard.
-	* target.h: Rename include guard.
-	* server.h: Rename include guard.
-	* remote-utils.h: Rename include guard.
-	* regcache.h: Rename include guard.
-	* nto-low.h: Rename include guard.
-	* notif.h: Add include guard.
-	* mem-break.h: Rename include guard.
-	* lynx-low.h: Add include guard.
-	* linux-x86-tdesc.h: Add include guard.
-	* linux-s390-tdesc.h: Add include guard.
-	* linux-ppc-tdesc-init.h: Add include guard.
-	* linux-low.h: Add include guard.
-	* linux-aarch64-tdesc.h: Add include guard.
-	* linux-aarch32-low.h: Add include guard.
-	* inferiors.h: Rename include guard.
-	* i387-fp.h: Rename include guard.
-	* hostio.h: Rename include guard.
-	* gdbthread.h: Rename include guard.
-	* gdb_proc_service.h: Rename include guard.
-	* event-loop.h: Rename include guard.
-	* dll.h: Rename include guard.
-	* debug.h: Rename include guard.
-	* ax.h: Rename include guard.
-
-2018-01-30  Szabolcs Nagy  <szabolcs.nagy@arm.com>
-
-	PR gdb/23985
-	* Makefile.in (IPAGENT_CFLAGS): Add UNDO_GNULIB_CFLAGS.
-	(UNDO_GNULIB_CFLAGS): Undo gnulib replacements.
-
-2019-01-25  Tom Tromey  <tom@tromey.com>
-
-	* Makefile.in (INCLUDE_CFLAGS): Don't add -I for common.
-
-2019-01-25  Tom Tromey  <tom@tromey.com>
-
-	* win32-low.c: Fix common/ includes.
-	* win32-i386-low.c: Fix common/ includes.
-	* tracepoint.c: Fix common/ includes.
-	* thread-db.c: Fix common/ includes.
-	* target.h: Fix common/ includes.
-	* symbol.c: Fix common/ includes.
-	* spu-low.c: Fix common/ includes.
-	* server.h: Fix common/ includes.
-	* server.c: Fix common/ includes.
-	* remote-utils.c: Fix common/ includes.
-	* regcache.h: Fix common/ includes.
-	* regcache.c: Fix common/ includes.
-	* nto-x86-low.c: Fix common/ includes.
-	* notif.h: Fix common/ includes.
-	* mem-break.h: Fix common/ includes.
-	* lynx-low.c: Fix common/ includes.
-	* lynx-i386-low.c: Fix common/ includes.
-	* linux-x86-tdesc-selftest.c: Fix common/ includes.
-	* linux-x86-low.c: Fix common/ includes.
-	* linux-low.c: Fix common/ includes.
-	* inferiors.h: Fix common/ includes.
-	* i387-fp.c: Fix common/ includes.
-	* hostio.c: Fix common/ includes.
-	* hostio-errno.c: Fix common/ includes.
-	* gdbthread.h: Fix common/ includes.
-	* gdbreplay.c: Fix common/ includes.
-	* fork-child.c: Fix common/ includes.
-	* event-loop.c: Fix common/ includes.
-	* ax.c: 
-	(enum gdb_agent_op): Fix common/ includes.
-
-2019-01-21  Tom Tromey  <tom@tromey.com>
-
-	* tracepoint.c: Fix includes.
-	* remote-utils.c: Fix includes.
-	* linux-x86-low.c: Fix includes.
-
-2019-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbreplay.c (gdbreplay_version): Update copyright year in
-	version message.
-	* server.c (gdbserver_version): Likewise.
-
-2018-12-05  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-low.c (add_lwp): Switch ordering.
-
-2018-11-29  Tom Tromey  <tom@tromey.com>
-
-	* win32-low.c (win32_join): Take pid, not process.
-	* target.h (struct target_ops) <join>: Change argument type.
-	(join_inferior): Change argument name.
-	* spu-low.c (spu_join): Take pid, not process.
-	* server.c (handle_detach): Preserve pid before destroying
-	process.
-	* lynx-low.c (lynx_join): Take pid, not process.
-	* linux-low.c (linux_join): Take pid, not process.
-
-2018-11-23  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-aarch64-low.c (aarch64_cannot_store_register): Remove.
-	(aarch64_cannot_fetch_register): Likewise.
-	(struct linux_target_ops): Update references.
-
-2018-10-31  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
-
-	* linux-ppc-low.c: Include nat/linux-ptrace.h.
-
-2018-10-26  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
-
-	* configure.srv (ipa_ppc_linux_regobj): Add
-	powerpc-isa207-htm-vsx32l-ipa.o and
-	powerpc-isa207-htm-vsx64l-ipa.o.
-	(powerpc*-*-linux*): Add powerpc-isa207-htm-vsx32l.o and
-	powerpc-isa207-htm-vsx64l.o to srv_regobj.  Add
-	rs6000/power-htm-spr.xml, rs6000/power-htm-core.xml,
-	rs6000/power64-htm-core.xml, rs6000/power-htm-fpu.xml,
-	rs6000/power-htm-altivec.xml, rs6000/power-htm-vsx.xml,
-	rs6000/power-htm-ppr.xml, rs6000/power-htm-dscr.xml,
-	rs6000/power-htm-tar.xml, rs6000/powerpc-isa207-htm-vsx32l.xml,
-	and rs6000/powerpc-isa207-htm-vsx64l.xml to srv_xmlfiles.
-	* linux-ppc-tdesc-init.h (enum ppc_linux_tdesc)
-	<PPC_TDESC_ISA207_HTM_VSX>: New enum value.
-	(init_registers_powerpc_isa207_htm_vsx32l)
-	(init_registers_powerpc_isa207_htm_vsx64l): Declare.
-	* linux-ppc-low.c (ppc_fill_tm_sprregset, ppc_store_tm_sprregset)
-	(ppc_store_tm_cgprregset, ppc_store_tm_cfprregset)
-	(ppc_store_tm_cvrregset, ppc_store_tm_cvsxregset)
-	(ppc_store_tm_cpprregset, ppc_store_tm_cdscrregset)
-	(ppc_store_tm_ctarregset): New functions.
-	(ppc_regsets): Add entries for HTM regsets.
-	(ppc_arch_setup): Set htm in features struct when needed.  Set
-	sizes for the HTM regsets.
-	(ppc_get_ipa_tdesc_idx): Return PPC_TDESC_ISA207_HTM_VSX.
-	(initialize_low_arch): Call
-	init_registers_powerpc_isa207_htm_vsx32l and
-	init_registers_powerpc_isa207_htm_vsx64l.
-	* linux-ppc-ipa.c (get_ipa_tdesc): Handle
-	PPC_TDESC_ISA207_HTM_VSX.
-	(initialize_low_tracepoint): Call
-	init_registers_powerpc_isa207_htm_vsx32l and
-	init_registers_powerpc_isa207_htm_vsx64l.
-
-2018-10-26  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
-
-	* configure.srv (powerpc*-*-linux*): Add rs6000/power-ebb.xml and
-	rs6000/power-linux-pmu.xml to srv_xmlfiles.
-	* linux-ppc-low.c (ppc_store_ebbregset, ppc_fill_pmuregset)
-	(ppc_store_pmuregset): New functions.
-	(ppc_regsets): Add entries for ebb and pmu regsets.
-	(ppc_arch_setup): Set isa207 in features struct if the ebb and
-	pmu regsets are available.  Set sizes for these regsets.
-
-2018-10-26  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
-
-	* configure.srv (ipa_ppc_linux_regobj): Add
-	powerpc-isa207-vsx64l-ipa.o and powerpc-isa207-vsx32l-ipa.o.
-	(powerpc*-*-linux*): Add powerpc-isa207-vsx32l.o and
-	powerpc-isa207-vsx64l.o to srv_regobj, add rs6000/power-tar.xml,
-	rs6000/powerpc-isa207-vsx32l.xml, and
-	rs6000/powerpc-isa207-vsx64l.xml to srv_xmlfiles.
-	* linux-ppc-tdesc-init.h (enum ppc_linux_tdesc)
-	<PPC_TDESC_ISA207_VSX>: New enum value.
-	(init_registers_powerpc_isa207_vsx32l): Declare.
-	(init_registers_powerpc_isa207_vsx64l): Declare.
-	* linux-ppc-low.c (ppc_fill_tarregset): New function.
-	(ppc_store_tarregset): New function.
-	(ppc_regsets): Add entry for the TAR regset.
-	(ppc_arch_setup): Set isa207 in features struct when needed.  Set
-	size for the TAR regsets.
-	(ppc_get_ipa_tdesc_idx): Return PPC_TDESC_ISA207_VSX.
-	(initialize_low_arch): Call init_registers_powerpc_isa207_vsx32l
-	and init_registers_powerpc_isa207_vsx64l.
-	* linux-ppc-ipa.c (get_ipa_tdesc): Handle PPC_TDESC_ISA207_VSX.
-	(initialize_low_tracepoint): Call
-	init_registers_powerpc_isa207_vsx32l and
-	init_registers_powerpc_isa207_vsx64l.
-
-2018-10-26  Edjunior Barbosa Machado  <emachado@linux.vnet.ibm.com>
-	    Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
-
-	* configure.srv (ipa_ppc_linux_regobj): Add
-	powerpc-isa205-ppr-dscr-vsx32l-ipa.o and
-	powerpc-isa205-ppr-dscr-vsx64l-ipa.o.
-	(powerpc*-*-linux*): Add powerpc-isa205-ppr-dscr-vsx32l.o and
-	powerpc-isa205-ppr-dscr-vsx64l.o to srv_regobj, add
-	rs6000/power-dscr.xml, rs6000/power-ppr.xml,
-	rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml and
-	rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml to srv_xmlfiles.
-	* linux-ppc-tdesc-init.h (enum ppc_linux_tdesc)
-	<PPC_TDESC_ISA205_PPR_DSCR_VSX>: New enum value.
-	(init_registers_powerpc_isa205_ppr_dscr_vsx32l)
-	(init_registers_powerpc_isa205_ppr_dscr_vsx64l): Declare.
-	* linux-ppc-low.c: Include "elf/common.h" and <sys/uio.h>.
-	(ppc_hwcap): Add comment.
-	(ppc_hwcap2): New global.
-	(ppc_check_regset, ppc_fill_pprregset, ppc_store_pprregset)
-	(ppc_fill_dscrregset, ppc_store_dscrregset): New functions.
-	(ppc_regsets): Add entries for the DSCR and PPR regsets.
-	(ppc_arch_setup): Get AT_HWCAP2.  Set ppr_dscr in features struct
-	when needed.  Set sizes for the the DSCR and PPR regsets.
-	(ppc_get_ipa_tdesc_idx): Return PPC_TDESC_ISA205_PPR_DSCR_VSX.
-	(initialize_low_arch): Call
-	init_registers_powerpc_isa205_ppr_dscr_vsx32l and
-	init_registers_powerpc_isa205_ppr_dscr_vsx64l.
-	* linux-ppc-ipa.c (get_ipa_tdesc): Handle
-	PPC_TDESC_ISA205_PPR_DSCR_VSX.
-	(initialize_low_tracepoint): Call
-	init_registers_powerpc_isa205_ppr_dscr_vsx32l and
-	init_registers_powerpc_isa205_ppr_dscr_vsx64l.
-
-2018-10-26  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
-
-	* linux-ppc-low.c (ppc_fill_vrregset): Remove memset calls.
-
-2018-10-10  Sergio Durigan Junior  <sergiodj@redhat.com>
-	    Simon Marchi <simark@simark.ca>
-
-	* acinclude.m4: Include "../selftest.m4".
-	* configure: Regenerate.
-	* configure.ac: Use "GDB_AC_SELFTEST".
-	* configure.srv: Use "$enable_unittests" instead of
-	"$development" when checking whether unit tests have been
-	enabled.
-	* server.c (captured_main): Update message informing that
-	selftests have been disabled.
-
-2018-10-04  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-
-2018-10-04  Tom Tromey  <tom@tromey.com>
-
-	* server.c (handle_status): Rename inner "thread".
-	(process_serial_event): Declare "res" in 'm' case.
-	* linux-low.c (last_thread_of_process_p, find_lwp_pid)
-	(iterate_over_lwps): Rename inner "thread".
-	(linux_qxfer_libraries_svr4): Rename inner "len".
-	* gdbthread.h (find_thread_in_random): Rename inner "thread".
-
-2018-10-01  Gary Benson <gbenson@redhat.com>
-
-	* gdb_proc_service.h: Moved common code to
-	common/gdb_proc_service.h.
-
-2018-10-01  Gary Benson <gbenson@redhat.com>
-
-	* gdb_proc_service.h: Synchronize comments and whitespace with
-	GDB's version of this file.
-
-2018-09-25  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-	* configure.ac (WARN_CFLAGS): Don't remove -Wmissing-prototypes.
-
-2018-09-16  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in (gdbserver$(EXEEXT)): Sort OBS.
-	(gdbreplay$(EXEEXT)): Sort GDBREPLAY_OBS.
-	($(IPA_LIB)): Sort IPA_OBJS.
-
-2018-09-16  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in: Remove references to $(ADD_DEPS).
-
-2018-09-16  Tom Tromey  <tom@tromey.com>
-
-	* remote-utils.c (remote_open): Use GNU style for metasyntactic
-	variables.
-	* gdbreplay.c (gdbreplay_usage): Use GNU style for metasyntactic
-	variables.
-
-2018-09-05  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-
-2018-08-28  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	PR build/23399
-	* tracepoint.c (IPA_SYM_STRUCT_NAME): Define.
-
-2018-08-27  Tom Tromey  <tom@tromey.com>
-
-	PR build/23087:
-	* configure: Rebuild.
-
-2018-08-27  Tom Tromey  <tom@tromey.com>
-
-	* linux-s390-low.c (s390_emit_ext, s390_emit_litpool)
-	(s390_emit_const, s390_emit_reg, s390_emit_zero_ext)
-	(s390_emit_stack_adjust, s390_emit_set_r2, s390x_emit_ext)
-	(s390x_emit_const, s390x_emit_reg, s390x_emit_zero_ext)
-	(s390x_emit_stack_adjust): Add casts to unsigned char.
-
-2018-08-22  Simon Marchi  <simon.marchi@ericsson.com>
-
-	PR gdb/23374
-	PR gdb/23375
-	* server.h (struct client_state) <disable_randomization>:
-	Initialize to 1.
-
-2018-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-mips-low.c (mips_collect_ptrace_register): Remove unused
-	variable.
-	(mips_supply_ptrace_register): Likewise.
-
-2018-07-22  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-
-2018-07-22  Tom Tromey  <tom@tromey.com>
-
-	* win32-low.c (win32_create_inferior): Remove unused variables.
-	* gdbreplay.c (remote_open): Remove unused variable.
-	* remote-utils.c (remote_prepare): Remove unused variable.
-	* x86-tdesc.h (X86_TDESC_H): Define.
-	(amd64_expedite_regs): Define conditionally.
-	(i386_expedite_regs): Mark ATTRIBUTE_UNUSED.
-	* linux-x86-tdesc.c (i386_tdescs): Move inside #if.
-	* remote-utils.c (readchar): Remove unused variable.
-
-2018-07-13  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_kill): Change parameter to process_info
-	pointer instead of pid.  Adjust.
-	* lynx-low.c (lynx_kill): Likewise.
-	* nto-low.c (nto_kill): Likewise.
-	* spu-low.c (spu_kill): Likewise.
-	* win32-low.c (win32_kill): Likewise.
-	* server.c (handle_v_kill, kill_inferior_callback)
-	(detach_or_kill_for_exit): Adjust.
-	* target.c (kill_inferior): Change parameter to process_info
-	pointer instead of pid.  Adjust.
-	* target.h (struct target_ops) <kill>: Change parameter to
-	process_info pointer instead of pid.  Adjust all implementations
-	and callers.
-	(kill_inferior): Likewise.
-
-2018-07-13  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_detach, linux_join): Change parameter to
-	process_info pointer instead of pid.  Adjust.
-	* lynx-low.c (lynx_detach, lynx_join): Likewise.
-	* nto-low.c (nto_detach): Likewise.
-	* spu-low.c (spu_detach, spu_join): Likewise.
-	* win32-low.c (win32_detach, win32_join): Likewise.
-	* server.c (handle_detach, detach_or_kill_for_exit): Adjust.
-	* target.h (struct target_ops) <detach, join>: Change parameter to
-	process_info pointer instead of pid.  Adjust all implementations
-	and callers.
-	(detach_inferior, join_inferior): Rename 'pid' parameter to
-	'proc'.
-
-2018-07-11  Sergio Durigan Junior  <sergiodj@redhat.com>
-	    Jan Kratochvil  <jan.kratochvil@redhat.com>
-	    Paul Fertser  <fercerpav@gmail.com>
-	    Tsutomu Seki  <sekiriki@gmail.com>
-
-	* Makefile.in (SFILES): Add '$(srcdir)/common/netstuff.c'.
-	(OBS): Add 'common/netstuff.o'.
-	(GDBREPLAY_OBS): Likewise.
-	* gdbreplay.c: Include 'wspiapi.h' and 'netstuff.h'.
-	(remote_open): Implement support for IPv6
-	connections.
-	* remote-utils.c: Include 'netstuff.h', 'filestuff.h'
-	and 'wspiapi.h'.
-	(handle_accept_event): Accept connections from IPv6 sources.
-	(remote_prepare): Handle IPv6-style hostnames; implement
-	support for IPv6 connections.
-	(remote_open): Implement support for printing connections from
-	IPv6 sources.
-
-2018-07-11  Pedro Alves  <palves@redhat.com>
-
-	PR gdb/23377
-	* mem-break.c (any_persistent_commands): Add process_info
-	parameter and use it instead of relying on the current process.
-	Change return type to bool.
-	* mem-break.h (any_persistent_commands): Add process_info
-	parameter and change return type to bool.
-	* server.c (handle_detach): Remove require_running_or_return call.
-	Look up the process_info for the process we're about to detach.
-	If not found, return back error to GDB.  Adjust
-	any_persistent_commands call to pass down a process pointer.
-
-2018-07-11  Pedro Alves  <palves@redhat.com>
-
-	* i387-fp.c (i387_cache_to_fsave, cache_to_fxsave)
-	(i387_cache_to_xsave): Use regcache_raw_get_unsigned_by_name
-	instead of collect_register_by_name.
-	* regcache.c (regcache_raw_get_unsigned_by_name): New.
-	* regcache.h (regcache_raw_get_unsigned_by_name): New.
-
-2018-07-04  Vyacheslav Barinov  <v.barinov@samsung.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (initialize_low): Call linux_proc_init_warnings.
-
-2018-07-03  Tom Tromey  <tom@tromey.com>
-
-	* linux-low.c: Update.
-	* lynx-low.c: Update.
-	* mem-break.c: Update.
-	* nto-low.c: Update.
-	* remote-utils.c: Update.
-	* server.c: Update.
-	* spu-low.c: Update.
-	* target.c: Update.
-	* win32-low.c: Update.
-
-2018-07-03  Tom Tromey  <tom@tromey.com>
-
-	* server.c: Update.
-
-2018-07-03  Tom Tromey  <tom@tromey.com>
-
-	* linux-low.c: Update.
-
-2018-07-03  Tom Tromey  <tom@tromey.com>
-
-	* target.c: Update.
-
-2018-07-03  Tom Tromey  <tom@tromey.com>
-
-	* linux-low.c: Update.
-	* linux-mips-low.c: Update.
-	* lynx-low.c: Update.
-	* nto-low.c: Update.
-	* remote-utils.c: Update.
-	* server.c: Update.
-	* spu-low.c: Update.
-	* target.c: Update.
-	* thread-db.c: Update.
-
-2018-07-03  Tom Tromey  <tom@tromey.com>
-
-	* linux-low.c: Update.
-	* linux-mips-low.c: Update.
-	* lynx-low.c: Update.
-	* mem-break.c: Update.
-	* nto-low.c: Update.
-	* remote-utils.c: Update.
-	* server.c: Update.
-	* spu-low.c: Update.
-	* target.c: Update.
-	* tracepoint.c: Update.
-
-2018-07-03  Tom Tromey  <tom@tromey.com>
-
-	* linux-low.c: Update.
-	* linux-ppc-low.c: Update.
-	* linux-x86-low.c: Update.
-	* proc-service.c: Update.
-	* server.c: Update.
-	* spu-low.c: Update.
-	* thread-db.c: Update.
-	* win32-low.c: Update.
-
-2018-07-03  Tom Tromey  <tom@tromey.com>
-
-	* linux-low.c: Update.
-	* lynx-low.c: Update.
-	* nto-low.c: Update.
-	* remote-utils.c: Update.
-	* spu-low.c: Update.
-	* thread-db.c: Update.
-	* win32-low.c: Update.
-
-2018-06-29  Joel Brobecker  <brobecker@adacore.com>
-
-	* linux-x86-tdesc.c (amd64_linux_read_description): Add missing
-	parameter in call to 'amd64_create_target_description'.
-
-2018-06-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* x86-tdesc.h: Remove executable permission flag.
-
-2018-06-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* configure.ac: Remove AC_PREREQ, add missing quoting.
-	* configure: Re-generate.
-	* config.in: Re-generate.
-	* aclocal.m4: Re-generate.
-
-2018-06-18  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* tracepoint.h (current_traceframe): Remove declaration.
-
-2018-06-18  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-aarch64-low.c (is_sve_tdesc): New function.
-	(aarch64_sve_regs_copy_to_regcache): Likewise.
-	(aarch64_sve_regs_copy_from_regcache): Likewise.
-	(aarch64_regs_info): Add SVE checks.
-	(initialize_low_arch): Initialize SVE.
-
-2018-06-18  Alan Hayward  <alan.hayward@arm.com>
-
-	* Makefile.in: Add aarch64-sve-linux-ptrace.c.
-
-2018-06-11  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-aarch64-ipa.c (get_ipa_tdesc): Add null VQ param.
-	(initialize_low_tracepoint): Likewise
-	* linux-aarch64-low.c (aarch64_arch_setup): Get VQ.
-	* linux-aarch64-tdesc-selftest.c (aarch64_tdesc_test): Add null VQ
-	param.
-	* linux-aarch64-tdesc.c (aarch64_linux_read_description): Add VQ
-	checks.
-	* linux-aarch64-tdesc.h (aarch64_linux_read_description): Add VQ.
-
-2018-06-11  Alan Hayward  <alan.hayward@arm.com>
-
-	* server.h (PBUFSIZ): Increase size
-
-2018-06-11  Alan Hayward  <alan.hayward@arm.com>
-
-	* regcache.c (regcache::raw_compare): New function.
-	* regcache.h (regcache::raw_compare): New declaration.
-
-2018-06-11  Alan Hayward  <alan.hayward@arm.com>
-
-	* regcache.c (new_register_cache): Use new.
-	(free_register_cache): Use delete.
-	(register_data): Use const.
-	(supply_register): Move body inside regcache.
-	(regcache::raw_supply): New override function.
-	(collect_register): Move body inside regcache.
-	(regcache::raw_collect): New override function.
-	(regcache::get_register_status): New override function.
-	* regcache.h (struct regcache): Inherit from reg_buffer_common.
-
-2018-06-09  Tom Tromey  <tom@tromey.com>
-
-	* event-loop.c (gdb_event, gdb_event_p): Remove typedefs.  Don't
-	declare queue.
-	(event_queue): Use std::queue.
-	(gdb_event_xfree): Remove.
-	(initialize_event_loop, process_event, wait_for_event): Update.
-
-2018-06-08  Stan Cox  <scox@redhat.com>
-
-	* win32-low.c (win32_create_inferior):  last_ptid and last_status
-	moved to client_state.
-
-2018-06-08  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (GDBREPLAY_OBS): Add common/cleanups.o,
-	common/common-exceptions.o, common/common-utils.o,
-	common/errors.o, common/print-utils.o and utils.o.
-	* gdbreplay.c: Include "common-defs.h" instead of the two
-	'config.h's here.  Don't include stdio.h, errno.h, stdlib.h,
-	string.h or alloca.h.
-	(perror_with_name): Delete.
-	(remote_open): Use xstrdup instead of strdup.
-	(main): Rename to ...
-	(captured_main): ... this.
-	(main): New.
-
-2018-06-08  Tom Tromey  <tom@tromey.com>
-
-	* linux-low.c (linux_low_read_btrace): Update.
-
-2018-06-04  Stan Cox  <scox@redhat.com>
-
-	* server.h (struct client_state): New.
-	* server.c (cont_thread, general_thread, multi_process)
-	(report_fork_events, report_vfork_events, report_exec_events)
-	(report_thread_events, swbreak_feature, hwbreak_feature)
-	(vCont_supported, disable_randomization, pass_signals)
-	(program_signals, program_signals_p, last_status, last_ptid, own_buf):
-	Moved to client_state.
-	* remote-utils.c (remote_debug, noack_mode)
-	(transport_is_reliable): Moved to client_state.
-	* tracepoint.c (current_traceframe): Moved to client_state.
-
-	Update all callers.
-	* server.c, remote-utils.c, tracepoint.c, fork-child.c,
-	linux-low.c, remote-utils.h, target.c: Use client_state.
-
-2018-05-31  Alan Hayward  <alan.hayward@arm.com>
-
-	* configure.srv: Add new c/h file.
-
-2018-05-31  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-aarch64-tdesc.c (aarch64_linux_read_description): Add
-	null VQ.
-
-2018-05-25  Maciej W. Rozycki  <macro@mips.com>
-
-	* gdb.arch/mips-fpregset-core.exp: New test.
-	* gdb.arch/mips-fpregset-core.c: New test source.
-
-2018-05-23  Erik Kurzinger  <ekurzinger@nvidia.com>
-
-	PR server/23198
-	* hostio.c (require_int): Do not report overflow for integers
-	between 0xfffffff and 0x7fffffff.
-
-2018-05-22  Maciej W. Rozycki  <macro@mips.com>
-
-	* linux-mips-low.c [HAVE_PTRACE_GETREGS] (mips_collect_register)
-	(mips_supply_register): Move outside HAVE_PTRACE_GETREGS.
-	(mips_collect_ptrace_register, mips_supply_ptrace_register): New
-	functions.
-	(the_low_target): Wire them.
-
-2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
-
-	* linux-ppc-low.c (ppc_fill_vrregset): Add vscr_offset variable.
-	Set vscr_offset to 0 in little-endian mode and 12 in big-endian
-	mode. Call collect_register_by_name with vscr using
-	vscr_offset. Zero-pad vscr and vrsave fields in collector buffer.
-	(ppc_store_vrregset): Add and set vscr_offset variable as in
-	ppc_fill_vrregset. Call supply_register_by_name with vscr using
-	vscr_offset.
-
-2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
-
-	* linux-ppc-low.c (SIZEOF_VSXREGS, SIZEOF_VRREGS): Remove.
-	(ppc_arch_setup): Change SIZEOF_VRREGS and SIZEOF_VSXREGS to
-	PPC_LINUX_SIZEOF_VRREGSET and PPC_LINUX_SIZEOF_VSXREGSET.
-
-2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
-
-	* linux-ppc-low.c (ppc_fill_vsxregset): Remove ppc_hwcap check.
-	(ppc_store_vsxregset): Likewise.
-	(ppc_fill_vrregset): Likewise.
-	(ppc_store_vrregset): Likewise.
-	(ppc_fill_evrregset): Likewise.
-	(ppc_store_evrregset): Likewise.
-	(ppc_regsets): Set VSX/VR/EVR regset sizes to 0.
-	(ppc_arch_setup): Iterate through ppc_regsets and set sizes when
-	needed.
-
-2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
-
-	* linux-ppc-low.c (ppc_arch_setup): Remove code for getting the
-	wordsize of the inferior. Call ppc_linux_target_wordsize.
-
-2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
-
-	* configure.srv (srv_tgtobj): Add arch/ppc-linux-common.o.
-	* Makefile.in (SFILES): Add arch/ppc-linux-common.c.
-	* linux-ppc-tdesc.h: Rename to linux-ppc-tdesc-init.h.
-	* linux-ppc-tdesc-init.h (tdesc_powerpc_32l, tdesc_powerpc_64l)
-	(tdesc_powerpc_altivec32l, tdesc_powerpc_altivec64l)
-	(tdesc_powerpc_cell32l, tdesc_powerpc_cell64l)
-	(tdesc_powerpc_vsx32l, tdesc_powerpc_vsx64l)
-	(tdesc_powerpc_isa205_32l, tdesc_powerpc_isa205_64l)
-	(tdesc_powerpc_isa205_altivec32l, tdesc_powerpc_isa205_altivec64l)
-	(tdesc_powerpc_isa205_vsx32l, tdesc_powerpc_isa205_vsx64l)
-	(tdesc_powerpc_e500l): Remove.
-	* linux-ppc-ipa.c: Include arch/ppc-linux-tdesc.h and
-	linux-ppc-tdesc-init.h. Don't include linux-ppc-tdesc.h.
-	* linux-ppc-low.c: Include arch/ppc-linux-common.h,
-	arch/ppc-linux-tdesc.h, and linux-ppc-tdesc-init.h. Don't include
-	linux-ppc-tdesc.h.
-	(ppc_arch_setup): Remove target description matching code. Fill a
-	ppc_linux_features struct and call ppc_linux_match_description
-	with it.
-
-2018-05-22  Maciej W. Rozycki  <macro@mips.com>
-
-	* linux-mips-low.c (mips_cannot_fetch_register): Return 1 if the
-	width of the requested register exceeds the width of the
-	`ptrace' data type.
-	(mips_cannot_store_register): Likewise.
-
-2018-05-21  Maciej W. Rozycki  <macro@mips.com>
-
-	* linux-mips-low.c (mips_fetch_register): New function.  Update
-	preceding comment.
-	(mips_store_gregset): Supply 0 rather than $restart for $zero.
-	(the_low_target): Wire `mips_fetch_register'.
-
-2018-05-10  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-i386-low.c (LYNXOS_178): New macro.
-	[LYNXOS_178] (usr_fcontext_t): Provide a definition that matches
-	the layout on LynxOS-178.
-	(lynx_i386_fill_fpregset, lynx_i386_store_fpregset): Do not
-	handle floating point registers that are not supported by
-	LynxOS-178.
-
-2018-05-10  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-
-2018-05-10  Joel Brobecker  <brobecker@adacore.com>
-
-	PR server/23158:
-	* tdesc.h (init_target_desc) <expedite_regs>: New parameter.
-	* tdesc.c (init_target_desc) <expedite_regs>: New parameter.
-	Use it to set the expedite_regs field in the given tdesc.
-	* x86-tdesc.h: New file.
-	* linux-aarch64-tdesc.c (aarch64_linux_read_description):
-	Adjust following the addition of the new expedite_regs parameter
-	to init_target_desc.
-	* linux-tic6x-low.c (tic6x_read_description): Likewise.
-	* linux-x86-tdesc.c: #include "x86-tdesc.h".
-	(i386_linux_read_description, amd64_linux_read_description):
-	Adjust following the addition of the new expedite_regs parameter
-	to init_target_desc.
-	* lynx-i386-low.c: #include "x86-tdesc.h".
-	(lynx_i386_arch_setup): Adjust following the addition of the new
-	expedite_regs parameter to init_target_desc.
-	* nto-x86-low.c: #include "x86-tdesc.h".
-	(nto_x86_arch_setup): Adjust following the addition of the new
-	expedite_regs parameter to init_target_desc.
-	* win32-i386-low.c: #include "x86-tdesc.h".
-	(i386_arch_setup): Adjust following the addition of the new
-	expedite_regs parameter to init_target_desc.
-
-2018-05-10  Joel Brobecker  <brobecker@adacore.com>
-
-	PR server/23158:
-	* win32-low.c (win32_create_inferior): Add call to my_wait
-	setting last_status global.
-
-2018-05-10  Joel Brobecker  <brobecker@adacore.com>
-
-	PR server/23158:
-	* win32-low.c (create_process): Only call gdb_tilde_expand if
-	inferior_cwd is not NULL.
-
-2018-05-08  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* i387-fp.c (i387_cache_to_xsave): Only write x87 control
-	registers to the cache if their values have changed.
-	(i387_xsave_to_cache): Provide default values for x87 control
-	registers when these features are available, but disabled.
-	* regcache.c (supply_register_by_name_zeroed): New function.
-	* regcache.h (supply_register_by_name_zeroed): Declare new
-	function.
-
-2018-05-07  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-
-2018-05-04  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-
-2018-05-04  Jan Kratochvil  <jan.kratochvil@redhat.com>
-	    Pedro Alves <palves@redhat.com>
-
-	* linux-aarch64-low.c (aarch64_stopped_data_address):
-	Likewise.
-
-2018-04-27  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-
-2018-04-23  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-
-2018-04-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* Makefile.in (depcomp): Add "..".
-	(all_deps_files): New and use it.
-
-2018-04-18  Alan Hayward  <alan.hayward@arm.com>
-
-	* configure.srv (aarch64*-*-linux*): Don't include xml.
-	(i[34567]86-*-cygwin*): Likewise.
-	(i[34567]86-*-linux*): Likewise.
-	(i[34567]86-*-lynxos*): Likewise.
-	(i[34567]86-*-mingw32ce*): Likewise.
-	(i[34567]86-*-mingw*): Likewise.
-	(i[34567]86-*-nto*): Likewise.
-	(tic6x-*-uclinux): Likewise.
-	(x86_64-*-linux*): Likewise.
-	(x86_64-*-mingw*): Likewise.
-	(x86_64-*-cygwin*): Likewise.
-
-2018-04-18  Alan Hayward  <alan.hayward@arm.com>
-
-	* tdesc.c: Remove xml parameter.
-
-2018-04-18  Alan Hayward  <alan.hayward@arm.com>
-
-	* server.c (get_features_xml): Remove cast.
-	* tdesc.c (void target_desc::accept): Fill in function.
-	(tdesc_get_features_xml): Remove old xml creation.
-	(print_xml_feature::visit_pre): Add xml vistor.
-	* tdesc.h (struct target_desc): Make xmltarget mutable.
-	(tdesc_get_features_xml): Remove declaration.
-
-2018-04-18  Alan Hayward  <alan.hayward@arm.com>
-
-	* tdesc.c (tdesc_architecture_name): Add new function.
-	(tdesc_osabi_name): Likewise.
-	(tdesc_get_features_xml): Use new functions.
-
-2018-04-18  Alan Hayward  <alan.hayward@arm.com>
-
-	* tdesc.c (tdesc_create_flags): Remove.
-	(tdesc_add_flag): Likewise.
-	(tdesc_named_type): Likewise.
-	(tdesc_create_union): Likewise.
-	(tdesc_create_struct): Likewise.
-	(tdesc_create_vector): Likewise.
-	(tdesc_add_bitfield): Likewise.
-	(tdesc_add_field): Likewise.
-	(tdesc_set_struct_size): Likewise.
-
-2018-04-18  Alan Hayward  <alan.hayward@arm.com>
-
-	* tdesc.c (~target_desc): Remove implictly deleted items.
-	(init_target_desc): Iterate all features.
-	(tdesc_get_features_xml): Use vector.
-	(tdesc_create_feature): Create feature.
-	* tdesc.h (tdesc_feature) Remove
-	(target_desc): Add features.
-
-2018-04-18  Alan Hayward  <alan.hayward@arm.com>
-
-	* Makefile.in: Add common/tdesc.c
-	* tdesc.c (init_target_desc): init all reg_defs from register
-	vector.
-	(tdesc_create_reg): Create tdesc_reg.
-	* tdesc.h (tdesc_feature): Add register vector.
-
-2018-03-30  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* tdesc.h (struct target_desc) <features>: Change type to
-	std::vector<std::string>.
-	* tdesc.c (target_desc::~target_desc): Adjust to std::vector
-	changes.
-	(tdesc_get_features_xml): Likewise.
-	(tdesc_create_feature): Likewise.
-
-2018-03-26  Alan Hayward  <alan.hayward@arm.com>
-
-	* regcache.c (find_register_by_number): Return a ref.
-	(find_regno): Use references.
-	(register_size): Likewise.
-	(register_data): Likewise.
-	* tdesc.c (target_desc::~target_desc): Remove free calls.
-	(target_desc::operator==): Use std::vector compare.
-	(init_target_desc): Use reference.
-	(tdesc_create_reg): Use reg constructors.
-	* tdesc.h (struct target_desc): Replace pointer with object.
-
-2018-03-23  Alan Hayward  <alan.hayward@arm.com>
-
-	* regcache.c (find_register_by_number): Make static.
-	(find_regno): Use find_register_by_number
-	* regcache.h (struct reg): Remove declaration.
-
-2018-03-23  Alan Hayward  <alan.hayward@arm.com>
-
-	* tdesc.c (target_desc::~target_desc): Move to here.
-	(target_desc::operator==): Likewise.
-	* tdesc.h (target_desc::~target_desc): Move from here.
-	(target_desc::operator==): Likewise.
-
-2018-03-22  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-s390-low.c (s390_get_wordsize): Correct brace style.
-
-2018-03-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-s390-ipa.c (get_ipa_tdesc): Add handling for
-	S390_TDESC_GS.
-	* linux-s390-low.c (s390_get_ipa_tdesc_idx): Likewise.
-	(initialize_low_tracepoint): Call init_registers_s390x_gs_linux64
-	and init_registers_s390_gs_linux64.
-
-2018-03-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-s390-low.c (s390_fill_gs): Remove function.
-	(s390_fill_gsbc): Remove function.
-	(s390_regsets): Set fill functions for the guarded storage regsets
-	to NULL.
-
-2018-03-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-s390-low.c (s390_get_hwcap): Replace tdesc parameter by
-	the word size.  Add comment.
-	(s390_get_wordsize): New function.
-	(s390_arch_setup): No longer select a temporary tdesc to fetch the
-	pswm with it.  Instead, use s390_get_wordsize to determine the
-	word size first and derive the correct tdesc from that directly.
-
-2018-03-16  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in: Include silent-rules.mk.
-	(srcdir, abs_top_srcdir, abs_srcdir, VPATH): Move up.
-	(COMPILE): Add ECHO_CXX.
-	(gdbserver$(EXEEXT)): Add SILENCE and ECHO_CXXLD.
-	(gdbreplay$(EXEEXT)): Add SILENCE and ECHO_CXXLD.
-	($(IPA_LIB)): Add SILENCE and ECHO_CXXLD.
-	(version-generated.c): Add ECHO_GEN.
-	(stamp-xml): Add SILENCE and ECHO_GEN_XML_BUILTIN_GENERATED.
-	(IPAGENT_COMPILE): Add ECHO_CXX.
-	(%-generated.c): Add ECHO_REGDAT.
-
-2018-03-14  Tom Tromey  <tom@tromey.com>
-
-	PR cli/14977:
-	* ax.c (ax_printf): Special case for NULL.
-
-2018-03-08  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (linux_qxfer_libraries_svr4): Use
-	xml_escape_text_append.
-
-2018-03-08  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (linux_qxfer_libraries_svr4): Use std::string.
-
-2018-03-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* server.c (handle_general_set): Remove unnecessary xstrdup.
-
-2018-03-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* server.c (parse_debug_format_options): Adjust to
-	delim_string_to_char_ptr_vec changes.
-	* thread-db.c (thread_db_load_search): Adjust to
-	dirnames_to_char_ptr_vec changes.
-
-2018-03-01  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* target.h (target_enable_btrace, target_disable_btrace)
-	(target_read_btrace, target_read_btrace_conf): Turn macro into
-	inline function.  Throw error if target method is not defined.
-	* server.c (handle_qxfer_btrace handle_qxfer_btrace_conf): Remove
-	check for btrace target method.  Be prepared to handle exceptions
-	from btrace target methods.
-
-2018-02-28  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* server.c (captured_main): Change order of error message printed
-	when the current working directory cannot be found.
-
-2018-02-28  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* server.c: Include "filenames.h" and "pathstuff.h".
-	(program_name): Delete variable.
-	(program_path): New anonymous class.
-	(get_exec_wrapper): Use "program_path" instead of
-	"program_name".
-	(handle_v_run): Likewise.
-	(captured_main): Likewise.
-	(process_serial_event): Likewise.
-
-2018-02-28  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* Makefile.in (SFILES): Add "$(srcdir)/common/pathstuff.c".
-	(OBJS): Add "pathstuff.o".
-	* server.c (current_directory): New global variable.
-	(captured_main): Initialize "current_directory".
-
-2018-02-26  Alan Hayward  <alan.hayward@arm.com>
-
-	* tdesc.c: Use common/tdesc.h.
-	* tdesc.h: Likewise.
-
-2018-02-20  Alan Hayward  <alan.hayward@arm.com>
-	    Simon Marchi  <simon.marchi@ericsson.com>
-
-	* Makefile.in: Switch order of make rules.
-
-2018-02-19  Alan Hayward  <alan.hayward@arm.com>
-
-	* Makefile.in: Add common directory in build.
-	* configure.ac: Add common reference.
-	* configure: Regenerate.
-
-2018-02-09  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* linux-low.c (linux_target_ops): Remove linux_supports_btrace.
-	* nto-low.c (nto_target_ops): Remove NULL for supports_btrace.
-	* spu-low.c (spu_target_ops): Likewise.
-	* win32-low.c (win32_target_ops): Likewise.
-	* server.c (supported_btrace_packets): Report packets unconditionally.
-	* target.h (target_ops) <supports_btrace>: Remove.
-	(target_supports_btrace): Remove.
-
-2018-02-09  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* server.c (handle_btrace_enable_bts, handle_btrace_enable_pt)
-	(handle_btrace_disable): Change return type to void.  Use exceptions
-	to report errors.
-	(handle_btrace_general_set): Catch exception and copy message to
-	return message.
-
-2018-02-08  Tom Tromey  <tom@tromey.com>
-
-	* linux-low.c (install_software_single_step_breakpoints): Use
-	make_scoped_restore.
-	* inferiors.c (make_cleanup_restore_current_thread): Remove.
-	(do_restore_current_thread_cleanup): Remove.
-	* gdbthread.h (make_cleanup_restore_current_thread): Don't
-	declare.
-
-2018-02-08  Tom Tromey  <tom@tromey.com>
-
-	* mem-break.c (set_raw_breakpoint_at): Use
-	gdb::unique_xmalloc_ptr.
-
-2018-01-30  Pedro Alves  <palves@redhat.com>
-
-	PR gdb/13211
-	* target.c (target_terminal::terminal_state): Rename to ...
-	(target_terminal::m_terminal_state): ... this.
-
-2018-01-19  James Clarke  <jrtc27@jrtc27.com>
-
-	* linux-low.c (handle_extended_wait): Surround call to
-	thread_db_notice_clone with #ifdef USE_THREAD_DB.
-
-2018-01-17  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (attach_proc_task_lwp_callback): Adjust to
-	linux_ptrace_attach_fail_reason_string now returning an
-	std::string.
-	(linux_attach): Likewise.
-	* thread-db.c (attach_thread): Likewise.
-
-2018-01-17  Eldar Abusalimov  <eldar.abusalimov@jetbrains.com>
-
-	PR gdb/21559
-	* configure.ac: Include <sys/types.h> prior to <sys/user.h> when
-	checking for fs_base/gs_base fields in struct user_regs_struct.
-	* configure: Regenerate.
-
-2018-01-16  Yao Qi  <yao.qi@linaro.org>
-
-	PR gdb/18749
-	* linux-low.c (fetch_register): Call supply_register instead of
-	error.
-
-2018-01-08  Yao Qi  <yao.qi@linaro.org>
-	    Simon Marchi  <simon.marchi@ericsson.com>
-
-	* Makefile.in (OBS): Remove selftest.o.
-	* configure.ac: Set srv_selftest_objs if $development is true.
-	(GDBSERVER_DEPFILES): Append $srv_selftest_objs.
-	* configure: Re-generated.
-	* server.c (captured_main): Wrap variable selftest_filter with
-	GDB_SELF_TEST.
-
-2018-01-07  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* server.c (parse_debug_format_options): Return std::string.
-	(handle_monitor_command, captured_main): Adjust.
-
-2018-01-05  Pedro Alves  <palves@redhat.com>
-
-	PR gdb/18653
-	* server.c (captured_main): Pass quiet=false to
-	save_original_signals_state.
-
-2018-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbreplay.c (gdbreplay_version): Update copyright year in
-	version message.
-	* server.c (gdbserver_version): Likewise.
-
-2017-12-08  Tom Tromey  <tom@tromey.com>
-
-	* ax.c (ax_printf): Update.
-
-2017-12-07  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-ipa.c (initialize_low_tracepoint): Call
-	aarch64_linux_read_description.
-	* linux-amd64-ipa.c (idx2mask): New array.
-	(get_ipa_tdesc): Move idx2mask out.
-	(initialize_low_tracepoint): Initialize target descriptions.
-	* linux-i386-ipa.c (idx2mask): New array.
-	(get_ipa_tdesc): Move idx2mask out.
-	(initialize_low_tracepoint): Initialize target descriptions.
-
-2017-12-05  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* tdesc.c (struct tdesc_type): Change return type.
-	(tdesc_add_flag): Change parameter type.
-	(tdesc_add_bitfield): Likewise.
-	(tdesc_add_field): Likewise.
-	(tdesc_set_struct_size): Likewise.
-
-2017-12-05  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* regcache.c (registers_to_string): Remove unused variable.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* inferiors.c (for_each_inferior_with_data): Remove.
-	* inferiors.h (for_each_inferior_with_data): Remove.
-	* server.c (handle_qxfer_threads_worker): Change parameter type.
-	(handle_qxfer_threads_proper): Use for_each_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* inferiors.c (for_each_inferior): Remove.
-	(clear_inferiors): Use for_each_thread.
-	* inferiors.h (for_each_inferior): Remove.
-	* linux-low.c (linux_wait_for_event_filtered): Use
-	for_each_thread.
-	(linux_stabilize_threads): Likewise.
-	* regcache.c (regcache_release): Likewise.
-	* server.c (gdb_wants_all_threads_stopped): Likewise.
-	(clear_pending_status_callback): Remove.
-	(handle_status): Use for_each_thread.
-	(captured_main): Likewise.
-	* win32-low.c (child_init_thread_list): Likewise.
-	(win32_clear_inferiors): Likewise.
-	(fake_breakpoint_event): Likewise.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* inferiors.h (find_inferior): Remove.
-	* inferiors.c (find_inferior): Remove.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (resume_status_pending_p): Update comment.
-	(need_step_over_p): Update comment.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (proceed_one_lwp): Return void, change parameter
-	type.
-	(unsuspend_and_proceed_one_lwp): Likewise.
-	(proceed_all_lwps): Use for_each_thread.
-	(unstop_all_lwps): Likewise.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (linux_resume_one_thread): Return void, take
-	parameter directly.
-	(linux_resume): Use for_each_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (send_sigstop_callback): Return void, change
-	parameter type.  Rename to...
-	(send_sigstop): ... this.
-	(suspend_and_send_sigstop_callback): Return void, change parameter
-	type.  Rename to...
-	(suspend_and_send_sigstop): ... this.
-	(stop_all_lwps): Use for_each_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (lwp_running): Return bool, remove unused
-	argument.
-	(linux_stabilize_threads): Use find_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (select_singlestep_lwp_callback): Remove.
-	(count_events_callback): Remove.
-	(select_event_lwp_callback): Remove.
-	(select_event_lwp): Use find_thread/for_each_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (not_stopped_callback): Return bool, take filter
-	argument directly.
-	(linux_wait_for_event_filtered): Use find_thread.
-	(linux_wait_1): Likewise.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (same_lwp): Remove.
-	(find_lwp_pid): Use find_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (delete_lwp_callback): Remove.
-	(linux_mourn): Use for_each_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (linux_detach_lwp_callback): Return void, remove
-	args parameter, don't check for pid.
-	(linux_detach): Use for_each_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-low.c (struct counter): Remove.
-	(second_thread_of_pid_p): Remove.
-	(last_thread_of_process_p): Use find_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* inferiors.c (find_inferior_in_random): Remove.
-	* inferiors.h (find_inferior_in_random): Remove.
-	* linux-low.c (status_pending_p_callback): Return bool, accept
-	parameter ptid directly.
-	(linux_wait_for_event_filtered): Use find_thread_in_random.
-	(linux_wait_1): Likewise.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* inferiors.c (find_inferior_id): Remove.
-	(find_thread_ptid): Move implemention from find_inferior_id to
-	here.
-	* inferiors.h (find_inferior_id): Remove.
-	* server.c (handle_status): Use find_thread_ptid.
-	(process_serial_event): Likewise.
-	* thread-db.c (find_one_thread): Likewise.
-	(thread_db_thread_handle): Likewise.
-	* win32-low.c (thread_rec): Likewise.
-	(child_delete_thread): Likewise.
-	(win32_thread_alive): Likewise.
-	(get_child_debug_event): Likewise.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-mips-low.c (update_watch_registers_callback): Return
-	void, remove pid_p parameter, don't check for pid.
-	(mips_insert_point, mips_remove_point): Use for_each_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* lynx.low (lynx_delete_thread_callback): Remove.
-	(lynx_mourn): Use for_each_thread.
-
-2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* regcache.c (regcache_invalidate_one): Remove.
-	(regcache_invalidate_pid): use for_each_thread.
-
-2017-11-26  Tom Tromey  <tom@tromey.com>
-
-	* linux-low.c (linux_create_inferior): Update.
-
-2017-11-24  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* spu-low.c (spu_create_inferior): Fix typo in argument name.
-
-2017-11-24  Alan Hayward  <alan.hayward@arm.com>
-
-	* configure.srv: Add linux-aarch64-tdesc-selftest.o.
-	* linux-aarch64-low.c (initialize_low_arch): Call init func.
-	* linux-aarch64-tdesc-selftest.c: New file.
-	* linux-aarch64-tdesc.h (initialize_low_tdesc): New declaration.
-
-2017-11-24  Alan Hayward  <alan.hayward@arm.com>
-
-	* configure.srv: Add new file.
-	* linux-aarch64-low.c (initialize_low_arch): Call init func.
-	* linux-aarch64-tdesc-selftest.c: New file.
-	* linux-aarch64-tdesc.h (initialize_low_tdesc): New declaration.
-
-2017-11-24  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-aarch64-ipa.c (initialize_low_tracepoint): Remove init.
-	* linux-aarch64-low.c (initialize_low_arch): Remove init.
-	* linux-aarch64-tdesc.c (aarch64_linux_read_description): Add init.
-
-2017-11-24  Alan Hayward  <alan.hayward@arm.com>
-
-	* configure.srv: Add new files.
-	* linux-aarch64-ipa.c (get_ipa_tdesc): Call
-	aarch64_linux_read_description.
-	* linux-aarch64-low.c (aarch64_linux_read_description):
-	Merge with aarch64_arch_setup.
-	(aarch64_arch_setup): Call aarch64_linux_read_description.
-	* linux-aarch64-tdesc.c: New file.
-	* linux-aarch64-tdesc.h: New file.
-
-2017-11-24  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv: Set $srv_regobj for tic6x-linux.
-	* linux-tic6x-low.c: Include "arch/tic6x.h" and "tdesc.h".
-	(tic6x_read_description): Move some code to tic6x_arch_setup.
-	(tic6x_tdesc_test): New function.
-	(initialize_low_arch): Call selftests::register_test.
-
-2017-11-22  Yao Qi  <yao.qi@linaro.org>
-
-	* remote-utils.c (prepare_resume_reply): Use memcpy.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (kill_one_lwp_callback): Return void, take
-	argument directly, don't filter on pid.
-	(linux_kill): Use for_each_thread.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (need_step_over_p): Return bool, remove dummy
-	argument.
-	(linux_resume, proceed_all_lwps): Use find_thread.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (resume_status_pending_p): Return bool, remove
-	flag_p argument.
-	(linux_resume): Use find_thread.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (struct thread_resume_array): Remove.
-	(linux_set_resume_request): Return void, take arguments
-	directly.
-	(linux_resume): Use for_each_thread.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (stuck_in_jump_pad_callback): Change prototype,
-	return bool, remove data argument.
-	(linux_stabilize_threads): Use find_thread.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (unsuspend_one_lwp): Remove.
-	(unsuspend_all_lwps): Use for_each_thread, inline code from
-	unsuspend_one_lwp.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* gdbthread.h (find_thread): Add overload with ptid_t filter.
-	* linux-low.c (struct iterate_over_lwps_args): Remove.
-	(iterate_over_lwps_filter): Remove.
-	(iterate_over_lwps): Use find_thread.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (reset_lwp_ptrace_options_callback): Remove.
-	(linux_handle_new_gdb_connection): Use for_each_thread, inline
-	code from reset_lwp_ptrace_options_callback.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-arm-low.c (struct update_registers_data): Remove.
-	(update_registers_callback): Return void, take arguments
-	directly, don't check thread's pid.
-	(arm_insert_point, arm_remove_point): Use for_each_thread.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* win32-low.c (continue_one_thread): Return void, take argument
-	directly.
-	(child_continue): Use for_each_thread.
-
-2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* win32-i386-low.c (update_debug_registers_callback): Rename
-	to ...
-	(update_debug_registers): ... this, return void, remove pid_p arg.
-	(x86_dr_low_set_addr, x86_dr_low_set_control): Use for_each_thread.
-
-2017-11-17  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* inferiors.h (struct process_info): Add constructor, initialize
-	fields..
-	<syscalls_to_catch>: Change type to std::vector<int>.
-	* inferiors.c (add_process): Allocate process_info with new.
-	(remove_process): Free process_info with delete.
-	* linux-low.c (handle_extended_wait): Adjust.
-	(gdb_catching_syscalls_p, gdb_catch_this_syscall_p): Adjust.
-	* server.c (handle_general_set): Adjust.
-
-2017-11-16  Pedro Alves  <palves@redhat.com>
-
-	* remote-utils.c (remote_close): Block SIGIO signals instead of
-	uninstalling the SIGIO handler.
-
-2017-11-16  Alan Hayward  <alan.hayward@arm.com>
-
-	* tdesc.c (tdesc_get_features_xml): Allow null osabi.
-
-2017-11-16  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-tic6x-low.c (tic6x_fill_gregset): Cast buf.
-	(tic6x_store_gregset): Likewise.
-	(tic6x_usrregs_info): Move it up.
-
-2017-11-15  Alan Hayward  <alan.hayward@arm.com>
-
-	* Makefile.in: Update arch rules.
-	* configure.srv: Explicitly mark arch/ files.
-
-2017-11-13  Andreas Schwab  <schwab@suse.de>
-
-	* linux-m68k-low.c (m68k_supports_hardware_single_step): New
-	function.
-	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
-
-2017-11-06  Pedro Alves  <palves@redhat.com>
-
-	* config.in, configure: Regenerate.
-
-2017-10-27  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* target.c (struct thread_search): Remove.
-	(thread_search_callback): Remove.
-	(prepare_to_access_memory): Use for_each_thread instead of
-	find_inferior.  Inline code from thread_search_callback.
-
-2017-10-27  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* server.c (struct visit_actioned_threads_data): Remove.
-	(visit_actioned_threads): Change prototype to take arguments
-	directly.
-	(resume): Use find_thread instead of find_inferior.
-
-2017-10-27  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* server.c (queue_stop_reply_callback): Change prototype, return
-	void.
-	(find_status_pending_thread_callback): Remove.
-	(handle_status): Replace find_inferior with find_thread and
-	for_each_thread.
-
-2017-10-25  Alan Hayward  <alan.hayward@arm.com>
-
-	* linux-aarch64-low.c (aarch64_fill_gregset): Replace defines
-	with REGNO.
-	(aarch64_store_gregset): Likewise.
-	(aarch64_fill_fpregset): Likewise.
-	(aarch64_store_fpregset): Likewise.
-
-2017-10-21  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* gdbthread.h (find_thread, for_each_thread): New functions.
-	* inferiors.c (thread_of_pid): Remove.
-	(find_any_thread_of_pid): Use find_thread.
-	* linux-low.c (num_lwps): Use for_each_thread.
-
-2017-10-17  Yao Qi  <yao.qi@linaro.org>
-
-	* Makefile.in: Remove one rule.
-	* configure.srv: Rename aarch64-insn.o with arch/aarch64-insn.o.
-
-2017-10-17  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv: Rename arm-linux.o with arch/arm-linux.o.
-	Rename arm-get-next-pcs.o with arch/arm-get-next-pcs.o.
-
-2017-10-17  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv: Rename arm.o with arch/arm.o.
-
-2017-10-17  Yao Qi  <yao.qi@linaro.org>
-
-	* Makefile.in (CONFIG_SRC_SUBDIR): New variable.
-	(clean): Remove .o files in CONFIG_SRC_SUBDIR.
-	(distclean): Remove DEPDIR in CONFIG_SRC_SUBDIR.
-	(arch-i386.o, arch-amd64.o): Remove rules.
-	(arch/%.o): New rule.
-	Update POSTCOMPILE and COMPILE.pre.
-	* configure.ac: Invoke AC_CONFIG_COMMANDS.
-	* configure: Re-generated.
-	* configure.srv: Replace arch-i386.o with arch/i386.o.
-	Replace arch-amd64.o with arch/amd64.o.
-
-2017-10-16  Yao Qi  <yao.qi@linaro.org>
-
-	* configure: Regenerated.
-
-2017-10-14  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* inferiors.h: (struct inferior_list): Remove.
-	(struct inferior_list_entry); Remove.
-	(add_inferior_to_list, clear_inferior_list, one_inferior_p,
-	A_I_NEXT, ALL_INFERIORS_TYPE, ALL_INFERIORS, remove_inferior,
-	get_first_inferior): Remove.
-	(for_each_inferior, for_each_inferior_with_data, find_inferior,
-	find_inferior_id, find_inferior_in_random): Change signature.
-	* inferiors.c (all_threads): Change type to
-	std::list<thread_info *>.
-	(get_thread): Remove macro.
-	(find_inferior, find_inferior_id): Change signature, implement
-	using find_thread.
-	(find_inferior_in_random): Change signature, implement using
-	find_thread_in_random.
-	(for_each_inferior, for_each_inferior_with_data): Change
-	signature, implement using for_each_thread.
-	(add_inferior_to_list, remove_inferior): Remove.
-	(add_thread, get_first_thread, thread_of_pid,
-	find_any_thread_of_pid, free_one_thread, remove_thread): Update.
-	(get_first_inferior, one_inferior_p, clear_inferior_list):
-	Remove.
-	(clear_inferiors, get_thread_process): Update.
-	* gdbthread.h: Include <list>.
-	(struct thread_info) <entry>: Remove field.
-	<id>: New field.
-	(all_threads): Change type to std::list<thread_info *>.
-	(get_first_inferior): Add doc.
-	(find_thread, for_each_thread, find_thread_in_random): New
-	functions.
-	(current_ptid, pid_of, ptid_of, lwpid_of): Update.
-	* linux-arm-low.c (update_registers_callback): Update.
-	* linux-low.c (second_thread_of_pid_p): Update.
-	(kill_one_lwp_callback, linux_detach_lwp_callback,
-	delete_lwp_callback, status_pending_p_callback, same_lwp,
-	find_lwp_pid, num_lwps, iterate_over_lwps_filter,
-	iterate_over_lwps, not_stopped_callback,
-	resume_stopped_resumed_lwps, count_events_callback,
-	select_singlestep_lwp_callback, select_event_lwp_callback,
-	unsuspend_one_lwp, linux_wait_1, send_sigstop_callback,
-	suspend_and_send_sigstop_callback, wait_for_sigstop,
-	stuck_in_jump_pad_callback, move_out_of_jump_pad_callback,
-	lwp_running, linux_set_resume_request, resume_status_pending_p,
-	need_step_over_p, start_step_over, linux_resume_one_thread,
-	proceed_one_lwp, unsuspend_and_proceed_one_lwp,
-	reset_lwp_ptrace_options_callback): Update.
-	* linux-mips-low.c (update_watch_registers_callback): Update.
-	* regcache.c (regcache_invalidate_one, regcache_invalidate):
-	Update.
-	(free_register_cache_thread_one): Remove.
-	(regcache_release): Update.
-	* server.c (handle_btrace_enable_bts, handle_btrace_enable_pt,
-	handle_qxfer_threads_worker): Update.
-	(handle_query): Update, use list iterator.
-	(visit_actioned_threads, handle_pending_status,
-	queue_stop_reply_callback, gdb_wants_all_threads_stopped,
-	clear_pending_status_callback, set_pending_status_callback,
-	find_status_pending_thread_callback, handle_status,
-	process_serial_event): Update.
-	* target.c (thread_search_callback): Update.
-	* thread-db.c (thread_db_get_tls_address): Update.
-	* tracepoint.c (tracepoint_finished_step, tracepoint_was_hit):
-	Update.
-	* win32-i386-low.c (update_debug_registers_callback): Update.
-	* win32-low.c (delete_thread_info, child_delete_thread,
-	continue_one_thread, suspend_one_thread,
-	get_child_debug_event): Adjust.
-
-2017-10-14  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* gdbthread.h (ptid_of, pid_of, lwpid_of): New functions.
-	* inferiors.h: Include <list>.
-	(struct process_info) <entry>: Remove field.
-	<pid>: New field.
-	(pid_of): Change macro to function.
-	(ptid_of, lwpid_of): Remove macro.
-	(all_processes): Change type to std::list<process_info *>.
-	(ALL_PROCESSES): Remove macro.
-	(for_each_process, find_process): New function.
-	* inferiors.c (all_processes): Change type to
-	std::list<process_info *>.
-	(find_thread_process): Adjust.
-	(add_process): Likewise.
-	(remove_process): Likewise.
-	(find_process_pid): Likewise.
-	(get_first_process): Likewise.
-	(started_inferior_callback): Remove.
-	(have_started_inferiors_p): Adjust.
-	(attached_inferior_callback): Remove.
-	(have_attached_inferiors_p): Adjust.
-	* linux-low.c (check_zombie_leaders): Likewise.
-	* linux-x86-low.c (x86_arch_setup_process_callback): Remove.
-	(x86_linux_update_xmltarget): Adjust.
-	* server.c (handle_query): Likewise.
-	(gdb_reattached_process): Remove.
-	(handle_status): Adjust.
-	(kill_inferior_callback): Likewise.
-	(detach_or_kill_inferior): Remove.
-	(print_started_pid): Likewise.
-	(print_attached_pid): Likewise.
-	(detach_or_kill_for_exit): Update.
-	(process_serial_event): Likewise.
-	* linux-arm-low.c (arm_new_fork): Likewise.
-
-2017-10-14  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* dll.h: Include <list>.
-	(struct dll_info): Add constructor.
-	<entry>: Remove field.
-	(all_dlls): Change type to std::list<dll_info>.
-	* dll.c: Include <algorithm>.
-	(get_dll): Remove macro.
-	(all_dlls): Change type to std::list<dll_info *>.
-	(free_one_dll): Remove.
-	(match_dll): Likewise.
-	(loaded_dll): Adjust.
-	(unloaded_dll): Adjust to all_dlls type change, use
-	std::find_if.  Inline code from match_dll.
-	(clear_dlls): Adjust to all_dlls type change.
-	* server.c (emit_dll_description): Remove.
-	(handle_qxfer_libraries): Adjust to all_dlls type change,
-	integrate emit_dll_description's functionality.
-
-2017-10-12  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.h (struct linux_target_ops) <delete_process>: New
-	field.
-	* linux-low.c (linux_mourn): Call the_low_target.delete_process.
-	* linux-aarch64-low.c (aarch64_linux_delete_process): New.
-	(struct linux_target_ops): Add delete_process callback.
-	* linux-arm-low.c (arm_delete_process): New.
-	(struct linux_target_ops): Add delete_process callback.
-	* linux-bfin-low.c (struct linux_target_ops): Likewise.
-	* linux-crisv32-low.c (struct linux_target_ops): Likewise.
-	* linux-m32r-low.c (struct linux_target_ops): Likewise.
-	* linux-mips-low.c (mips_linux_delete_process): New.
-	(struct linux_target_ops): Add delete_process callback.
-	* linux-ppc-low.c (struct linux_target_ops): Likewise.
-	* linux-s390-low.c (struct linux_target_ops): Likewise.
-	* linux-sh-low.c (struct linux_target_ops): Likewise.
-	* linux-tic6x-low.c (struct linux_target_ops): Likewise.
-	* linux-tile-low.c (struct linux_target_ops): Likewise.
-	* linux-x86-low.c (x86_linux_delete_process): New.
-	(struct linux_target_ops): Add delete_process callback.
-	* linux-xtensa-low.c (struct linux_target_ops): Likewise.
-
-2017-10-12  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-aarch64-low.c (the_low_target): Add thread delete
-	callback.
-	* linux-arm-low.c (arm_delete_thread): New function.
-	(the_low_target): Add thread delete callback.
-	* linux-bfin-low.c (the_low_target): Likewise.
-	* linux-crisv32-low.c (the_low_target): Likewise.
-	* linux-low.c (delete_lwp): Invoke delete_thread callback if
-	set.
-	* linux-low.h (struct linux_target_ops) <delete_thread>: New
-	field.
-	* linux-m32r-low.c (the_low_target): Add thread delete callback.
-	* linux-mips-low.c (mips_linux_delete_thread): New function.
-	(the_low_target): Add thread delete callback.
-	* linux-ppc-low.c (the_low_target): Likewise.
-	* linux-s390-low.c (the_low_target): Likewise.
-	* linux-sh-low.c (the_low_target): Likewise.
-	* linux-tic6x-low.c (the_low_target): Likewise.
-	* linux-tile-low.c (the_low_target): Likewise.
-	* linux-x86-low.c (the_low_target): Likewise.
-	* linux-xtensa-low.c (the_low_target): Likewise.
-
-2017-10-06  Yuanhui Zhang  <asmwarrior@gmail.com>
-
-	* win32-low.c: Include "common-inferior.h".
-
-2017-10-04  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* inferiors.c (set_inferior_cwd): New function.
-	* server.c (handle_general_set): Handle QSetWorkingDir packet.
-	(handle_query): Inform that QSetWorkingDir is supported.
-	* win32-low.c (create_process): Pass the inferior's cwd to
-	CreateProcess.
-
-2017-10-04  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* inferiors.c (current_inferior_cwd): New global variable.
-	(get_inferior_cwd): New function.
-	* inferiors.h (struct process_info) <cwd>: New field.
-
-2017-10-04  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* Makefile.in (SFILES): Add $(srcdir)/common/gdb_tilde_expand.c.
-	(OBS): Add gdb_tilde_expand.o.
-
-2017-10-02  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* lynx-i386-low.c (lynx_i386_arch_setup): Call init_target_desc.
-	* nto-x86-low.c (nto_x86_arch_setup): Likewise.
-
-2017-09-29  Pedro Alves  <palves@redhat.com>
-
-	* ax.c (gdb_parse_agent_expr): Constify.
-	* ax.h (gdb_parse_agent_expr): Constify.
-	* mem-break.c (add_breakpoint_condition, add_breakpoint_commands):
-	Constify.
-	* mem-break.h (add_breakpoint_condition, add_breakpoint_commands): Constify.
-	* remote-utils.c (hex_or_minus_one, read_ptid): Constify.
-	* remote-utils.h (read_ptid): Constify.
-	* server.c (handle_qxfer_exec_file, handle_query, handle_v_cont)
-	(process_point_options, process_serial_event): Constify.
-	* tracepoint.c (add_tracepoint_action, cmd_qtdp, cmd_qtdpsrc)
-	(cmd_qtdv, cmd_qtenable_disable, cmd_qtro, cmd_qtframe, cmd_qtp)
-	(cmd_qtbuffer): Constify.
-
-2017-09-29  Pedro Alves  <palves@redhat.com>
-
-	* proc-service.c (ps_pdread): Return PS_ERR if reading memory
-	fails.
-
-2017-09-29  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (handle_extended_wait): Pass parent thread instead
-	of process to thread_db_notice_clone.
-	* linux-low.h (thread_db_notice_clone): Replace parent process
-	parameter with parent thread parameter.
-	* thread-db.c (find_one_thread): Add comment.
-	(thread_db_notice_clone): Replace parent process parameter with
-	parent thread parameter.  Temporarily switch to the parent thread.
-
-2017-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* gdbthread.h: Include "common-gdbthread.h".
-	* inferiors.c (switch_to_thread): Use "gdb_assert" instead of
-	"if" when validating the ptid.
-	* remote-utils.c: Include "gdbthread.h".
-	(prepare_resume_reply): Use "switch_to_thread".
-	* target.c (done_accessing_memory): Likewise.
-
-2017-09-25  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* configure.srv (s390*-*-linux*): Add s390-gs-linux64.o and
-	s390x-gs-linux64.o to srv_regobj.  Add s390-gs-linux64.xml,
-	s390x-gs-linux64.xml, s390-gs.xml, and s390-gsbc.xml to
-	srv_xmlfiles.  Add s390-gs-linux64-ipa.o and
-	s390x-gs-linux64-ipa.o to ipa_obj.
-	* linux-s390-low.c (HWCAP_S390_GS): New define.
-	(s390_fill_gs, s390_store_gs, s390_fill_gsbc, s390_store_gsbc):
-	New functions.
-	(s390_regsets): Add regsets for NT_S390_GS_CB and NT_S390_GS_BC.
-	(s390_arch_setup): Check for guarded-storage support and choose
-	appropriate tdesc.
-	(initialize_low_arch): Invoke init_registers_s390_gs_linux64 and
-	init_registers_s390x_gs_linux64.
-	* linux-s390-tdesc.h (enum s390_linux_tdesc) <S390_TDESC_GS>: New
-	enum value.
-	(init_registers_s390x_gs_linux64, tdesc_s390x_gs_linux64)
-	(init_registers_s390_gs_linux64, tdesc_s390_gs_linux64): Declare.
-
-2017-09-22  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* win32-i386-low.c (i386_arch_setup): Call init_target_desc.
-
-2017-09-21  Kevin Buettner  <kevinb@redhat.com>
-
-	* linux-low.h (struct lwp_info): Add new field, thread_handle.
-	(thread_db_thread_handle): Declare.
-	* linux-low.c (linux_target_ops): Initialize thread_handle.
-	* server.c (handle_qxfer_threads_worker): Add support for
-	"handle" attribute.
-	* target.h (struct target_ops): Add new function pointer,
-	thread_handle.
-	(target_thread_handle): Define.
-	* thread-db.c (find_one_thread, attach_thread): Set thread_handle
-	field in lwp.
-	(thread_db_thread_handle): New function.
-
-2017-09-21  Kevin Buettner  <kevinb@redhat.com>
-
-	* linux-low.c (handle_extended_wait): Call thread_db_notice_clone().
-	* linux-low.h (thread_db_notice_clone): Declare.
-	* thread-db.c (thread_db_notice_clone): New function.
-
-2017-09-21  Pedro Alves  <palves@redhat.com>
-
-	* server.c (gdb_read_memory, handle_status, process_serial_event)
-	(handle_serial_event, handle_target_event): Adjust to
-	set_desired_thread prototype change.
-	* target.c (set_desired_thread): Remove 'use_general' parameter
-	and adjust.
-	* target.h (set_desired_thread): Remove 'use_general' parameter.
-
-2017-09-20  Tom Tromey  <tom@tromey.com>
-
-	* target.c (target_terminal::terminal_state): Define.
-	(target_terminal::init): Rename from target_terminal_init.
-	(target_terminal::inferior): Rename from
-	target_terminal_inferior.
-	(target_terminal::ours): Rename from target_terminal_ours.
-	(target_terminal::ours_for_output, target_terminal::info): New.
-
-2017-09-16  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* server.c (accumulate_file_name_length): Remove.
-	(emit_dll_description): Adjust to std::string change.
-	(handle_qxfer_libraries): Use std::string to hold document.
-
-2017-09-16  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (linux_qxfer_libraries_svr4): Adjust to change of
-	return type of xml_escape_text.
-	* server.c (emit_dll_description): Likewise.
-
-2017-09-16  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* server.c (captured_main): Accept argument for --selftest.
-	Update run_tests call.
-	* linux-x86-tdesc-selftest.c (initialize_low_tdesc): Add names
-	when registering selftests.
-
-2017-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* regcache.c (get_thread_regcache): Update code to use "std::vector"
-	instead of "VEC" for "target_desc.reg_defs".
-	(regcache_cpy): Likewise.
-	(registers_to_string): Likewise.
-	(registers_from_string): Likewise.
-	(find_regno): Likewise.
-	(supply_regblock): Likewise.
-	(regcache_raw_read_unsigned): Likewise.
-	* tdesc.c (init_target_desc): Likewise.
-	(tdesc_create_reg): Likewise.
-	* tdesc.h: Remove declaration of "tdesc_reg_p".  Include <vector>.
-	(struct target_desc) <reg_defs>: Convert to "std::vector".
-	(target_desc): Do not initialize "reg_defs".
-	(~target_desc): Update code to use "std::vector" instead of "VEC"
-	for "target_desc.reg_defs".
-	(operator==): Likewise.
-
-2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* inferiors.h (thread_to_gdb_id): Remove.
-	* inferiors.c (thread_to_gdb_id): Remove.
-	* server.c (handle_qxfer_threads_worker, handle_query): Adjust.
-	* lynx-low.c (lynx_resume, lynx_wait_1, lynx_fetch_registers,
-	lynx_store_registers, lynx_read_memory, lynx_write_memory):
-	Likewise.
-	* nto-low.c (nto_fetch_registers, nto_store_registers,
-	nto_stopped_by_watchpoint, nto_stopped_data_address): Likewise.
-
-2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* inferiors.h (gdb_id_to_thread_id): Remove.
-	* inferiors.c (gdb_id_to_thread_id): Remove.
-	* server.c (process_serial_event): Adjust to gdb_id_to_thread_id
-	removal.  Move pid declaration closer to where it's used.
-
-2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* server.c (handle_detach): New function.
-	(process_serial_event): Move code out, call handle_detach.
-
-2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* server.c (require_running): Rename to ...
-	(require_running_or_return): ... this ...
-	(require_running_or_break): ... and this.
-	(handle_query, process_serial_event): Adjust.
-
-2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (linux_set_resume_request): Remove unused
-	variables.
-
-2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* server.c (first_thread_of): Remove.
-	(process_serial_event): Replace usage of first_thread_of with
-	find_any_thread_of_pid.
-	* tracepoint.c (same_process_p): Remove.
-	(gdb_agent_about_to_close): Replace usage of same_process_p with
-	find_any_thread_of_pid.
-	* linux-x86-low.c (same_process_callback): Remove.
-	(x86_arch_setup_process_callback): Replace usage of
-	same_process_callback with find_any_thread_of_pid.
-	* thread-db.c (any_thread_of): Remove.
-	(switch_to_process): Replace usage of any_thread_of with
-	find_any_thread_of_pid.
-	* inferiors.c (thread_pid_matches_callback): Remove.
-	(find_thread_process): Adjust to use find_any_thread_of_pid.
-
-2017-09-10  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* regcache.c (get_thread_regcache): Guard calls to "memset"
-	with "!VEC_empty".
-
-2017-09-10  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* linux-low.c (handle_extended_wait): Use
-	"allocate_target_description" instead of "XNEW".
-	* linux-x86-low.c (initialize_low_arch): Likewise.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv (srv_i386_regobj): Remove.
-	(srv_amd64_regobj): Remove.
-	(srv_regobj): Set it to "" for x86 non-linux targets.
-	* linux-x86-tdesc.c (i386_linux_read_description):
-	* lynx-i386-low.c: Include x86-xstate.h and arch/i386.h.
-	(init_registers_i386): Remove the declaration.
-	(tdesc_i386): Remove the declaration.
-	(lynx_i386_arch_setup): Call i386_create_target_description.
-	* nto-x86-low.c: Likewise.
-	* win32-i386-low.c [__x86_64__]: include arch/amd64.h.
-	[!__x86_64__]: include arch/i386.h.
-	(i386_arch_setup) [__x86_64__]: Call amd64_create_target_description.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv (srv_amd64_linux_xmlfiles): Remove
-	i386/amd64-XXX-linux from it.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv: Empty srv_amd64_linux_regobj if $development is
-	false.
-	(ipa_amd64_linux_regobj): Remove.
-	(ipa_x32_linux_regobj): Remove.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* Makefile.in (arch-amd64.o): New rule.
-	* configure.srv: Append arch-amd64.o.
-	* linux-amd64-ipa.c: Include common/x86-xstate.h.
-	(get_ipa_tdesc): Call amd64_linux_read_description.
-	(initialize_low_tracepoint): Don't call init_registers_x32_XXX
-	and init_registers_amd64_XXX.
-	* linux-x86-low.c (x86_linux_read_description): Call
-	amd64_linux_read_description.
-	(x86_get_ipa_tdesc_idx): Call amd64_get_ipa_tdesc_idx.
-	(initialize_low_arch): Don't call init_registers_x32_XXX and
-	init_registers_amd64_XXX.
-	* linux-x86-tdesc-selftest.c: Declare init_registers_amd64_XXX
-	and tdesc_amd64_XXX.
-	[__x86_64__] (amd64_tdesc_test): New function.
-	(initialize_low_tdesc) [__x86_64__]: Call init_registers_x32_XXX
-	and init_registers_amd64_XXX.
-	* linux-x86-tdesc.c: Include arch/amd64.h.
-	(xcr0_to_tdesc_idx): New function.
-	(i386_linux_read_description): New function.
-	(amd64_get_ipa_tdesc_idx): New function.
-	* linux-x86-tdesc.h (amd64_get_ipa_tdesc_idx): Declare.
-	(amd64_get_ipa_tdesc): Declare.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv (srv_i386_linux_xmlfiles): Remove
-	i386/i386-XXX-linux.xml from it.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv: Set srv_i386_linux_regobj empty if $development
-	is false.
-	* linux-i386-ipa.c (initialize_low_tracepoint): Don't call
-	initialize_low_tdesc.
-	* linux-x86-low.c (initialize_low_arch): Wrap initialize_low_tdesc
-	with #if initialize_low_tdesc.
-	* linux-x86-tdesc-selftest.c: New file.
-	* linux-x86-tdesc.c: Move code to linux-x86-tdesc-selftest.c.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* Makefile.in (arch-i386.o): New rule.
-	* configure.srv (i[34567]86-*-linux*): Add arch-i386.o.
-	(x86_64-*-linux*): Likewise.
-	* linux-x86-tdesc.c: Don't include ../features/i386/32bit-XXX.c,
-	include arch/i386.h.
-	(i386_linux_read_description): Remove code and call
-	i386_create_target_description.
-	* tdesc.c (allocate_target_description): New function.
-	* tdesc.h (set_tdesc_architecture): Remove declaration.
-	(set_tdesc_osabi): Likewise.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-x86-tdesc.c: Don't include <inttypes.h>.
-	(i386_linux_read_description) [!IN_PROCESS_AGENT]: Call
-	set_tdesc_architecture and set_tdesc_osabi.  Remove code setting
-	.xmltarget.
-	* server.c (get_features_xml): Call tdesc_get_features_xml.
-	* tdesc.c (set_tdesc_architecture): New function.
-	(set_tdesc_osabi): New function.
-	(tdesc_get_features_xml): New function.
-	(tdesc_create_feature): Add an argument.
-	* tdesc.h (struct target_desc) <features>: New field.
-	<arch, osabi>: New field.
-	(~target_desc): xfree features, arch, and osabi.
-	(target_desc::oerator==): Don't compare .xmltarget.
-	[!IN_PROCESS_AGENT] (set_tdesc_architecture): Declare.
-	(set_tdesc_osabi): Likewise.
-	(tdesc_get_features_xml): Likewise.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-x86-tdesc.c: Include selftest.h.
-	(i386_tdesc_test): New function.
-	(initialize_low_tdesc): Call selftests::register_test.
-	* tdesc.h: Include regdef.h.
-	(target_desc): Override operator == and !=.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv (srv_tgtobj): Append linux-x86-tdesc.o.
-	(ipa_obj): Likewise.
-	* linux-i386-ipa.c: Include common/x86-xstate.h
-	(get_ipa_tdesc): Call i386_linux_read_description.
-	(initialize_low_tracepoint): Don't call  init_registers_XXX
-	functions, call initialize_low_tdesc instead.
-	* linux-x86-low.c (x86_linux_read_description): Call
-	i386_linux_read_description.
-	(initialize_low_arch): Don't call init_registers_i386_XXX
-	functions, call initialize_low_tdesc.
-	* linux-x86-tdesc.c: New file.
-	* linux-x86-tdesc.h (x86_linux_tdesc): New X86_TDESC_LAST.
-	(i386_get_ipa_tdesc_idx): Declare.
-	(i386_get_ipa_tdesc): Declare.
-	(initialize_low_tdesc): Declare.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-x86-low.c (x86_get_ipa_tdesc_idx): Use X86_TDESC_MMX
-	instead of 0.
-
-2017-09-05  Yao Qi  <yao.qi@linaro.org>
-
-	* Makefile.in (IPA_OBJS): Add vec-ipa.o
-	* regcache.c (get_thread_regcache): Use VEC_length.
-	(init_register_cache): Likewise.
-	(regcache_cpy): Likewise.
-	(registers_to_string): Iterate reg_defs via VEC_iterate.
-	(find_regno): Likewise.
-	(find_register_by_number): Use VEC_index.
-	(register_size): Call find_register_by_number.
-	(register_data): Call find_register_by_number.
-	(supply_regblock): Use VEC_length.
-	(regcache_raw_read_unsigned): Likewise.
-	* tdesc.c (init_target_desc): Iterate reg_defs via
-	VEC_iterate.
-	(default_description): Update initializer.
-	(copy_target_description): Don't update field num_registers.
-	* tdesc.h (struct target_desc) <reg_defs>: Change it to VEC.
-	<num_registers>: Remove.
-
-2017-09-04  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* Makefile.in (.SECONDARY): Define target.
-
-2017-09-03  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (linux_wait_1): Adjust.
-	* server.c (queue_stop_reply_callback): Adjust.
-
-2017-08-31  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* server.c (handle_general_set): Handle QEnvironmentHexEncoded,
-	QEnvironmentUnset and QEnvironmentReset packets.
-	(handle_query): Inform remote that QEnvironmentHexEncoded,
-	QEnvironmentUnset and QEnvironmentReset are supported.
-
-2017-08-25  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* inferiors.h (inferior_target_data): Rename to ...
-	(thread_target_data): ... this.
-	(inferior_regcache_data): Rename to ...
-	(thread_regcache_data): ... this.
-	(set_inferior_regcache_data): Rename to ...
-	(set_thread_regcache_data): ... this.
-	* inferiors.c (inferior_target_data): Rename to ...
-	(thread_target_data): ... this.
-	(inferior_regcache_data): Rename to ...
-	(thread_regcache_data): ... this.
-	(set_inferior_regcache_data): Rename to ...
-	(set_thread_regcache_data): ... this.
-	(free_one_thread): Update.
-	* linux-low.h (get_thread_lwp): Update.
-	* regcache.c (get_thread_regcache): Update.
-	(regcache_invalidate_thread): Update.
-	(free_register_cache_thread): Update.
-	* win32-i386-low.c (update_debug_registers_callback): Update.
-	(win32_get_current_dr): Update.
-	* win32-low.c (thread_rec): Update.
-	(delete_thread_info): Update.
-	(continue_one_thread): Update.
-	(suspend_one_thread): Update.
-
-2017-08-24  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* inferiors.c (set_inferior_target_data): Remove.
-	* inferiors.h (set_inferior_target_data): Remove.
-
-2017-08-18  Yao Qi  <yao.qi@linaro.org>
-
-	* Makefile.in (OBS): Add selftest.o.
-	* configure.ac: AC_DEFINE GDB_SELF_TEST if $development.
-	* configure, config.in: Re-generated.
-	* server.c: Include common/sefltest.h.
-	(captured_main): Handle option --selftest.
-
-2017-08-09  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv (srv_i386_regobj): Remove i386-avx.o,
-	i386-avx-avx512.o, i386-avx-mpx-avx512-pku.o, i386-mpx.o,
-	i386-avx-mpx.o and i386-mmx.o.
-	(srv_amd64_regobj): Remove amd64-avx.o, amd64-avx-avx512.o,
-	amd64-avx-mpx-avx512-pku.o, amd64-mpx.o and amd64-avx-mpx.o.
-	(srv_i386_xmlfiles): Remove i386/i386-avx.xml,
-	i386/i386-avx-avx512.xml, i386/i386-avx-mpx-avx512-pku.xml,
-	i386/i386-mpx.xml, i386/i386-avx-mpx.xml and i386/i386-mmx.xml.
-	(srv_amd64_xmlfile):i386/amd64-avx.xml, i386/amd64-avx-avx512.xml,
-	i386/amd64-avx-mpx-avx512-pku.xml, i386/amd64-mpx.xml,
-	i386/amd64-avx-mpx.xml.
-
-2017-08-09  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv (srv_amd64_regobj): Remove x32.o, x32-avx.o
-	and x32-avx-avx512.o.
-	(srv_amd64_xmlfiles): Remove i386/x32.xml, i386/x32-avx.xml
-	i386/x32-avx-avx512.xml.
-
-2017-07-26  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* tracepoint.h (enum class fast_tpoint_collect_result): New
-	enumeration.
-	(fast_tracepoint_collecting): Change return type to
-	fast_tpoint_collect_result.
-	* tracepoint.c (fast_tracepoint_collecting): Likewise.
-	* linux-low.h: Include tracepoint.h.
-	(struct lwp_info) <collecting_fast_tracepoint>: Change type to
-	fast_tpoint_collect_result.
-	* linux-low.c (handle_tracepoints): Adjust.
-	(linux_fast_tracepoint_collecting): Change return type to
-	fast_tpoint_collect_result.
-	(maybe_move_out_of_jump_pad, linux_wait_for_event_filtered,
-	linux_wait_1, stuck_in_jump_pad_callback,
-	lwp_signal_can_be_delivered, linux_resume_one_lwp_throw,
-	proceed_one_lwp): Adjust to type change.
-
-2017-07-10  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-x86-low.c (x86_linux_read_description): Re-indent the code.
-
-2017-06-29  Yao Qi  <yao.qi@linaro.org>
-
-	* tdesc.h (struct target_desc) [IN_PROCESS_AGENT] <expedite_regs>:
-	Remove.
-	[IN_PROCESS_AGENT] <xmltarget>: Likewise.
-
-2017-06-20  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* Makefile.in (IPA_OBJS): Sort and format one item per line.
-
-2017-06-20  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* linux-low.c (linux_create_inferior): Adjust code to access the
-	environment information via 'gdb_environ' class.
-	* lynx-low.c (lynx_create_inferior): Likewise.
-	* server.c (our_environ): Make it an instance of 'gdb_environ'.
-	(get_environ): Return a pointer to 'our_environ'.
-	(captured_main): Initialize 'our_environ'.
-	* server.h (get_environ): Adjust prototype.
-	* spu-low.c (spu_create_inferior): Adjust code to access the
-	environment information via 'gdb_environ' class.
-
-2017-06-17  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (linux_read_memory, linux_write_memory): Remove
-	usage of "register" keyword.
-
-2017-06-17  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* configure: Re-generate.
-
-2017-06-17  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* configure: Re-generate.
-
-2017-06-17  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* Makefile.in (COMPILE.pre): Add "-x c++".
-
-2017-06-09  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* fork-child.c: Conditionally include <signal.h>.
-
-2017-06-07  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* server.c (handle_general_set): Handle new packet
-	"QStartupWithShell".
-	(handle_query): Add "QStartupWithShell" to the list of supported
-	packets.
-	(gdbserver_usage): Add help text explaining the
-	new "--startup-with-shell" and "--no-startup-with-shell" CLI
-	options.
-	(captured_main): Recognize and act upon the presence of the new
-	CLI options.
-
-2017-06-07  Sergio Durigan Junior  <sergiodj@redhat.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (SFILES): Add "nat/fork-inferior.o".
-	* configure: Regenerate.
-	* configure.srv (srv_linux_obj): Add "fork-child.o" and
-	"fork-inferior.o".
-	(i[34567]86-*-lynxos*): Likewise.
-	(spu*-*-*): Likewise.
-	* fork-child.c: New file.
-	* linux-low.c: Include "common-inferior.h", "nat/fork-inferior.h"
-	and "environ.h".
-	(linux_ptrace_fun): New function.
-	(linux_create_inferior): Adjust function prototype to reflect
-	change on "target.h".  Adjust function code to use
-	"fork_inferior".
-	(linux_request_interrupt): Delete "signal_pid".
-	* lynx-low.c: Include "common-inferior.h" and "nat/fork-inferior.h".
-	(lynx_ptrace_fun): New function.
-	(lynx_create_inferior): Adjust function prototype to reflect
-	change on "target.h".  Adjust function code to use
-	"fork_inferior".
-	* nto-low.c (nto_create_inferior): Adjust function prototype and
-	code to reflect change on "target.h".  Update comments.
-	* server.c: Include "common-inferior.h", "nat/fork-inferior.h",
-	"common-terminal.h" and "environ.h".
-	(terminal_fd): Moved to fork-child.c.
-	(old_foreground_pgrp): Likewise.
-	(restore_old_foreground_pgrp): Likewise.
-	(last_status): Make it global.
-	(last_ptid): Likewise.
-	(our_environ): New variable.
-	(startup_with_shell): Likewise.
-	(program_name): Likewise.
-	(program_argv): Rename to...
-	(program_args): ...this.
-	(wrapper_argv): New variable.
-	(start_inferior): Delete function.
-	(get_exec_wrapper): New function.
-	(get_exec_file): Likewise.
-	(get_environ): Likewise.
-	(prefork_hook): Likewise.
-	(post_fork_inferior): Likewise.
-	(postfork_hook): Likewise.
-	(postfork_child_hook): Likewise.
-	(handle_v_run): Update code to deal with arguments coming from the
-	remote host.  Update calls from "start_inferior" to
-	"create_inferior".
-	(captured_main): Likewise.  Initialize environment variable.  Call
-	"have_job_control".
-	* server.h (post_fork_inferior): New prototype.
-	(get_environ): Likewise.
-	(last_status): Declare.
-	(last_ptid): Likewise.
-	(signal_pid): Likewise.
-	* spu-low.c: Include "common-inferior.h" and "nat/fork-inferior.h".
-	(spu_ptrace_fun): New function.
-	(spu_create_inferior): Adjust function prototype to reflect change
-	on "target.h".  Adjust function code to use "fork_inferior".
-	* target.c (target_terminal_init): New function.
-	(target_terminal_inferior): Likewise.
-	(target_terminal_ours): Likewise.
-	* target.h: Include <vector>.
-	(struct target_ops) <create_inferior>: Update prototype.
-	(create_inferior): Update macro.
-	* utils.c (gdb_flush_out_err): New function.
-	* win32-low.c (win32_create_inferior): Adjust function prototype
-	and code to reflect change on "target.h".
-
-2017-06-07  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* inferiors.c (switch_to_thread): New function.
-
-2017-06-07  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* Makefile.in (SFILE): Add "common/job-control.c".
-	(OBS): Add "job-control.o".
-
-2017-05-06  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* Makefile: Remove "@host_makefile_frag@".
-
-2017-05-05  Pedro Alves  <palves@redhat.com>
-
-	* configure: Regenerate.
-
-2017-05-03  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* configure: Regenerate.
-
-2017-05-02  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-arm-low.c (arm_gdbserver_get_next_pcs): Adjust to
-	software_single_step change of return type to
-	std::vector<CORE_ADDR>.
-	* linux-low.c (install_software_single_step_breakpoints):
-	Likewise.
-	* linux-low.h (install_software_single_step_breakpoints):
-	Likewise.
-
-2017-04-12  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* remote-utils.c: Include "gdb_termios.h" instead of
-	"terminal.h".
-	* terminal.h: Delete file.
-
-2017-04-12  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* server.c: Include <vector>.
-	<program_argv, wrapper_argv>: Convert to std::vector.
-	(start_inferior): Rewrite function to use C++.
-	(handle_v_run): Likewise.  Update code that calculates the argv
-	based on the vRun packet; use C++.
-	(captured_main): Likewise.
-
-2017-04-06  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* server.c (handle_v_cont): Initialize thread_resume::thread
-	with null_ptid.
-
-2017-04-05  Pedro Alves  <palves@redhat.com>
-
-	* configure: Regenerate.
-
-2017-04-05  Pedro Alves  <palves@redhat.com>
-
-	* gdbreplay.c (sync_error): Constify.
-	* linux-x86-low.c (push_opcode): Constify.
-
-2017-04-05  Pedro Alves  <palves@redhat.com>
-
-	* win32-low.c (get_child_debug_event)
-	<CREATE_PROCESS_DEBUG_EVENT>: Don't report TARGET_WAITKIND_EXECD.
-	Report TARGET_WAITKIND_SPURIOUS instead.
-
-2017-04-05  Pedro Alves  <palves@redhat.com>
-
-	* remote-utils.c (remote_prepare, remote_open): Constify.
-	* remote-utils.h (remote_prepare, remote_open): Constify.
-	* server.c (captured_main): Constify 'port' handling.
-
-2017-04-04  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* Makefile.in (clean): Clear .deps.
-
-2017-03-31  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* .gitignore: Remove generated files, replace with wildcard.
-	* (clean): Replace removal of generated files with wildcard.
-	(version.c): Replace with...
-	(version-generated.c): ...this.
-	(xml-builtin.c): Replace with...
-	(xml-builtin-generated.c): ...this.
-	(%-ipa.o: %-generated.c, %.o: %-generated.c): New rules.
-	(%.c: *regformats*): Replace with...
-	(%-generated.c: *regformats*): ...this.
-
-2017-03-27  Max Filippov  <jcmvbkbc@gmail.com>
-
-	* linux-xtensa-low.c (regnum::R_THREADPTR): New enum member.
-	(xtensa_fill_gregset): Call collect_register_by_name for
-	threadptr register.
-	(xtensa_store_gregset): Call supply_register_by_name for
-	threadptr register.
-
-2017-03-27  Max Filippov  <jcmvbkbc@gmail.com>
-
-	* linux-xtensa-low.c (xtensa_fill_gregset): Call collect_register
-	for all registers in a0_regnum..a0_regnum + C0_NREGS range.
-	(xtensa_store_gregset): Call supply_register for all registers in
-	a0_regnum..a0_regnum + C0_NREGS range.
-
-2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in (%-ipa.o: %-ipa.c): New rule.
-	(ax-ipa.o: ax.c): Remove.
-	(linux-i386-ipa.o: linux-i386-ipa.c): Remove.
-	(linux-amd64-ipa.o: linux-amd64-ipa.c): Remove.
-	(linux-aarch64-ipa.o: linux-aarch64-ipa.c): Remove.
-	(linux-s390-ipa.o: linux-s390-ipa.c): Remove.
-	(linux-ppc-ipa.o: linux-ppc-ipa.c): Remove.
-
-2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in (%-ipa.o: ../common/%.c): New rule.
-	(print-utils-ipa.o: ../common/print-utils.c): Remove.
-	(rsp-low-ipa.o: ../common/rsp-low.c): Remove.
-	(errors-ipa.o: ../common/errors.c): Remove.
-	(format-ipa.o: ../common/format.c): Remove.
-	(common-utils-ipa.o: ../common/common-utils.c): Remove.
-
-2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in (%-ipa.o: %.c): New rule.
-	(tracepoint-ipa.o: tracepoint.c): Remove.
-	(utils-ipa.o: utils.c): Remove.
-	(remote-utils-ipa.o: remote-utils.c): Remove.
-	(regcache-ipa.o: regcache.c): Remove.
-	(i386-linux-ipa.o: i386-linux.c): Remove.
-	(i386-mmx-linux-ipa.o: i386-mmx-linux.c): Remove.
-	(i386-avx-linux-ipa.o: i386-avx-linux.c): Remove.
-	(i386-mpx-linux-ipa.o: i386-mpx-linux.c): Remove.
-	(i386-avx-mpx-linux-ipa.o: i386-avx-mpx-linux.c): Remove.
-	(i386-avx-avx512-linux-ipa.o: i386-avx-avx512-linux.c): Remove.
-	(i386-avx-mpx-avx512-pku-linux-ipa.o: i386-avx-mpx-avx512-pku-linux.c): Remove.
-	(amd64-linux-ipa.o: amd64-linux.c): Remove.
-	(amd64-avx-linux-ipa.o: amd64-avx-linux.c): Remove.
-	(amd64-mpx-linux-ipa.o: amd64-mpx-linux.c): Remove.
-	(amd64-avx-mpx-linux-ipa.o: amd64-avx-mpx-linux.c): Remove.
-	(amd64-avx-avx512-linux-ipa.o: amd64-avx-avx512-linux.c): Remove.
-	(amd64-avx-mpx-avx512-pku-linux-ipa.o: amd64-avx-mpx-avx512-pku-linux.c): Remove.
-	(aarch64-ipa.o: aarch64.c): Remove.
-	(s390-linux32-ipa.o: s390-linux32.c): Remove.
-	(s390-linux32v1-ipa.o: s390-linux32v1.c): Remove.
-	(s390-linux32v2-ipa.o: s390-linux32v2.c): Remove.
-	(s390-linux64-ipa.o: s390-linux64.c): Remove.
-	(s390-linux64v1-ipa.o: s390-linux64v1.c): Remove.
-	(s390-linux64v2-ipa.o: s390-linux64v2.c): Remove.
-	(s390-te-linux64-ipa.o: s390-te-linux64.c): Remove.
-	(s390-vx-linux64-ipa.o: s390-vx-linux64.c): Remove.
-	(s390-tevx-linux64-ipa.o: s390-tevx-linux64.c): Remove.
-	(s390x-linux64-ipa.o: s390x-linux64.c): Remove.
-	(s390x-linux64v1-ipa.o: s390x-linux64v1.c): Remove.
-	(s390x-linux64v2-ipa.o: s390x-linux64v2.c): Remove.
-	(s390x-te-linux64-ipa.o: s390x-te-linux64.c): Remove.
-	(s390x-vx-linux64-ipa.o: s390x-vx-linux64.c): Remove.
-	(s390x-tevx-linux64-ipa.o: s390x-tevx-linux64.c): Remove.
-	(powerpc-32l-ipa.o: powerpc-32l.c): Remove.
-	(powerpc-altivec32l-ipa.o: powerpc-altivec32l.c): Remove.
-	(powerpc-cell32l-ipa.o: powerpc-cell32l.c): Remove.
-	(powerpc-vsx32l-ipa.o: powerpc-vsx32l.c): Remove.
-	(powerpc-isa205-32l-ipa.o: powerpc-isa205-32l.c): Remove.
-	(powerpc-isa205-altivec32l-ipa.o: powerpc-isa205-altivec32l.c): Remove.
-	(powerpc-isa205-vsx32l-ipa.o: powerpc-isa205-vsx32l.c): Remove.
-	(powerpc-e500l-ipa.o: powerpc-e500l.c): Remove.
-	(powerpc-64l-ipa.o: powerpc-64l.c): Remove.
-	(powerpc-altivec64l-ipa.o: powerpc-altivec64l.c): Remove.
-	(powerpc-cell64l-ipa.o: powerpc-cell64l.c): Remove.
-	(powerpc-vsx64l-ipa.o: powerpc-vsx64l.c): Remove.
-	(powerpc-isa205-64l-ipa.o: powerpc-isa205-64l.c): Remove.
-	(powerpc-isa205-altivec64l-ipa.o: powerpc-isa205-altivec64l.c): Remove.
-	(powerpc-isa205-vsx64l-ipa.o: powerpc-isa205-vsx64l.c): Remove.
-	(tdesc-ipa.o: tdesc.c): Remove.
-	(x32-linux-ipa.o: x32-linux.c): Remove.
-	(x32-avx-linux-ipa.o: x32-avx-linux.c): Remove.
-	(x32-avx512-linux-ipa.o: x32-avx512-linux.c): Remove.
-
-2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in (%.o: ../arch/%.c): New rule.
-	(arm.o: ../arch/arm.c): Remove.
-	(arm-linux.o: ../arch/arm-linux.c): Remove.
-	(arm-get-next-pcs.o: ../arch/arm-get-next-pcs.c): Remove.
-	(aarch64-insn.o: ../arch/aarch64-insn.c): Remove.
-
-2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in (%.o: ../nat/%.c): New rule.
-	(x86-dregs.o: ../nat/x86-dregs.c): Remove.
-	(amd64-linux-siginfo.o: ../nat/amd64-linux-siginfo.c): Remove.
-	(linux-btrace.o: ../nat/linux-btrace.c): Remove.
-	(linux-osdata.o: ../nat/linux-osdata.c): Remove.
-	(linux-procfs.o: ../nat/linux-procfs.c): Remove.
-	(linux-ptrace.o: ../nat/linux-ptrace.c): Remove.
-	(linux-waitpid.o: ../nat/linux-waitpid.c): Remove.
-	(mips-linux-watch.o: ../nat/mips-linux-watch.c): Remove.
-	(ppc-linux.o: ../nat/ppc-linux.c): Remove.
-	(linux-personality.o: ../nat/linux-personality.c): Remove.
-	(aarch64-linux-hw-point.o: ../nat/aarch64-linux-hw-point.c): Remove.
-	(aarch64-linux.o: ../nat/aarch64-linux.c): Remove.
-	(x86-linux.o: ../nat/x86-linux.c): Remove.
-	(x86-linux-dregs.o: ../nat/x86-linux-dregs.c): Remove.
-	(linux-namespaces.o: ../nat/linux-namespaces.c): Remove.
-
-2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in (%.o: ../common/%.c): New rule.
-	(signals.o: ../common/signals.c): Remove.
-	(print-utils.o: ../common/print-utils.c): Remove.
-	(rsp-low.o: ../common/rsp-low.c): Remove.
-	(common-utils.o: ../common/common-utils.c): Remove.
-	(posix-strerror.o: ../common/posix-strerror.c): Remove.
-	(mingw-strerror.o: ../common/mingw-strerror.c): Remove.
-	(vec.o: ../common/vec.c): Remove.
-	(gdb_vecs.o: ../common/gdb_vecs.c): Remove.
-	(xml-utils.o: ../common/xml-utils.c): Remove.
-	(ptid.o: ../common/ptid.c): Remove.
-	(buffer.o: ../common/buffer.c): Remove.
-	(format.o: ../common/format.c): Remove.
-	(filestuff.o: ../common/filestuff.c): Remove.
-	(agent.o: ../common/agent.c): Remove.
-	(errors.o: ../common/errors.c): Remove.
-	(environ.o: ../common/environ.c): Remove.
-	(common-debug.o: ../common/common-debug.c): Remove.
-	(cleanups.o: ../common/cleanups.c): Remove.
-	(common-exceptions.o: ../common/common-exceptions.c): Remove.
-	(fileio.o: ../common/fileio.c): Remove.
-	(common-regcache.o: ../common/common-regcache.c): Remove.
-	(signals-state-save-restore.o: ../common/signals-state-save-restore.c): Remove.
-	(new-op.o: ../common/new-op.c): Remove.
-	(btrace-common.o: ../common/btrace-common.c): Remove.
-
-2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in (%.o: ../target/%.c): New rule.
-	(waitstatus.o: ../target/waitstatus.c): Remove.
-
-2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in
-	(%.c: ../regformats/%.dat,
-	(%.c: ../regformats/arm/%.dat,
-	(%.c: ../regformats/i386/%.dat,
-	(%.c: ../regformats/rs6000/%.dat): New rules.
-	(aarch64.c): Remove.
-	(reg-arm.c): Remove.
-	(arm-with-iwmmxt.c): Remove.
-	(arm-with-vfpv2.c): Remove.
-	(arm-with-vfpv3.c): Remove.
-	(arm-with-neon.c): Remove.
-	(reg-bfin.c): Remove.
-	(reg-cris.c): Remove.
-	(reg-crisv32.c): Remove.
-	(i386.c): Remove.
-	(i386-linux.c): Remove.
-	(i386-avx.c): Remove.
-	(i386-avx-linux.c): Remove.
-	(i386-avx-avx512.c): Remove.
-	(i386-avx-avx512-linux.c): Remove.
-	(i386-mpx.c): Remove.
-	(i386-mpx-linux.c): Remove.
-	(i386-avx-mpx-avx512-pku.c): Remove.
-	(i386-avx-mpx-avx512-pku-linux.c): Remove.
-	(i386-avx-mpx.c): Remove.
-	(i386-avx-mpx-linux.c): Remove.
-	(i386-mmx.c): Remove.
-	(i386-mmx-linux.c): Remove.
-	(reg-ia64.c): Remove.
-	(reg-m32r.c): Remove.
-	(reg-m68k.c): Remove.
-	(reg-cf.c): Remove.
-	(mips-linux.c): Remove.
-	(mips-dsp-linux.c): Remove.
-	(mips64-linux.c): Remove.
-	(mips64-dsp-linux.c): Remove.
-	(nios2-linux.c): Remove.
-	(powerpc-32.c): Remove.
-	(powerpc-32l.c): Remove.
-	(powerpc-altivec32l.c): Remove.
-	(powerpc-cell32l.c): Remove.
-	(powerpc-vsx32l.c): Remove.
-	(powerpc-isa205-32l.c): Remove.
-	(powerpc-isa205-altivec32l.c): Remove.
-	(powerpc-isa205-vsx32l.c): Remove.
-	(powerpc-e500l.c): Remove.
-	(powerpc-64l.c): Remove.
-	(powerpc-altivec64l.c): Remove.
-	(powerpc-cell64l.c): Remove.
-	(powerpc-vsx64l.c): Remove.
-	(powerpc-isa205-64l.c): Remove.
-	(powerpc-isa205-altivec64l.c): Remove.
-	(powerpc-isa205-vsx64l.c): Remove.
-	(s390-linux32.c): Remove.
-	(s390-linux32v1.c): Remove.
-	(s390-linux32v2.c): Remove.
-	(s390-linux64.c): Remove.
-	(s390-linux64v1.c): Remove.
-	(s390-linux64v2.c): Remove.
-	(s390-te-linux64.c): Remove.
-	(s390-vx-linux64.c): Remove.
-	(s390-tevx-linux64.c): Remove.
-	(s390x-linux64.c): Remove.
-	(s390x-linux64v1.c): Remove.
-	(s390x-linux64v2.c): Remove.
-	(s390x-te-linux64.c): Remove.
-	(s390x-vx-linux64.c): Remove.
-	(s390x-tevx-linux64.c): Remove.
-	(tic6x-c64xp-linux.c): Remove.
-	(tic6x-c64x-linux.c): Remove.
-	(tic6x-c62x-linux.c): Remove.
-	(reg-sh.c): Remove.
-	(reg-sparc64.c): Remove.
-	(reg-spu.c): Remove.
-	(amd64.c): Remove.
-	(amd64-linux.c): Remove.
-	(amd64-avx.c): Remove.
-	(amd64-avx-linux.c): Remove.
-	(amd64-avx-avx512.c): Remove.
-	(amd64-avx-avx512-linux.c): Remove.
-	(amd64-mpx.c): Remove.
-	(amd64-mpx-linux.c): Remove.
-	(amd64-avx-mpx-avx512-pku.c): Remove.
-	(amd64-avx-mpx-avx512-pku-linux.c): Remove.
-	(amd64-avx-mpx.c): Remove.
-	(amd64-avx-mpx-linux.c): Remove.
-	(x32.c): Remove.
-	(x32-linux.c): Remove.
-	(x32-avx.c): Remove.
-	(x32-avx-linux.c): Remove.
-	(x32-avx-avx512.c): Remove.
-	(x32-avx-avx512-linux.c): Remove.
-	(reg-xtensa.c): Remove.
-	(reg-tilegx.c): Remove.
-	(reg-tilegx32.c): Remove.
-
-2017-03-07  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* Makefile.in (SFILES): Add "common/environ.c".
-	(OBJS): Add "common/environ.h".
-
-2017-01-27  Walfred Tedeschi  <walfred.tedeschi@intel.com>
-
-	* configure.ac: Check if the fs_base and gs_base members of
-	`struct user_regs_struct' exist.
-	* config.in: Regenerated.
-	* configure: Likewise.
-
-2017-01-09  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-aarch32-low.c (arm_breakpoint_kind_from_pc): Use
-	target_read_memory.
-	* linux-arm-low.c (get_next_pcs_read_memory_unsigned_integer): Likewise.
-	(get_next_pcs_syscall_next_pc): Likewise.
-
-2016-12-23  Luis Machado  <lgustavo@codesourcery.com>
-
-	* win32-i386-low.c: Fix incorrect reference to a couple source files.
-	* nto-x86-low.c: Likewise.
-
-2016-11-30  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in: Include disable-implicit-rules.mk.
-
-2016-11-23  Pedro Alves  <palves@redhat.com>
-
-	* debug.c: Include <chrono> instead of "gdb_sys_time.h".
-	(debug_vprintf): Use std::chrono::steady_clock instead of
-	gettimeofday.  Use '.' instead of ':'.
-	* tracepoint.c: Include <chrono> instead of "gdb_sys_time.h".
-	(get_timestamp): Use std::chrono::steady_clock instead of
-	gettimeofday.
-
-2016-11-22  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in: Fix whitespace formatting.
-
-2016-11-22  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in (SFILES, OBS): Flatten list and order
-	alphabetically.
-
-2016-11-23  Pedro Alves  <palves@redhat.com>
-
-	* event-loop.c (handle_file_event): Use warning.
-	* linux-low.c (linux_resume_one_lwp_throw): Use warning.
-	* mem-break.c (add_breakpoint_condition, add_breakpoint_commands):
-	Use warning.
-
-2016-11-23  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (check_zombie_leaders): Use debug_printf for debug
-	output.
-	* notif.c (handle_notif_ack, notif_event_enque): Likewise.
-	* remote-utils.c (putpkt_binary_1, readchar, getpkt): Use
-	debug_printf and debug_flush for debug output.
-	* server.c (handle_general_set): Likewise.
-	* thread-db.c (try_thread_db_load): Use debug_printf for debug
-	output.
-
-2016-11-17  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in (.c.o): Replace rule with ...
-	(%.o: %.c): ... this one.
-
-2016-11-17  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* Makefile.in: Remove @GMAKE_TRUE@ prefixes and removes lines
-	prefixed with @GMAKE_FALSE@.  Update comment related to non-GNU
-	make.
-	* configure.ac: Remove checks for the make program.
-	* configure: Re-generate.
-
-2016-10-28  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (CXX_DIALECT): Get from configure.
-	(COMPILE.pre, CC_LD): Append $(CXX_DIALECT).
-	* acinclude.m4: Include ../ax_cxx_compile_stdcxx.m4.
-	* configure.ac: Call AX_CXX_COMPILE_STDCXX.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-
-2016-10-27  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_supports_range_stepping): Return true if
-	can_software_single_step return true.
-
-2016-10-27  Yao Qi  <yao.qi@linaro.org>
-
-	* inferiors.c (find_inferior_in_random): New function.
-	* inferiors.h (find_inferior_in_random): Declare.
-	* linux-low.c (linux_wait_for_event_filtered): Call
-	find_inferior_in_random instead of find_inferior.
-
-2016-10-27  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_wait_1): If single-step breakpoints are
-	inserted, remove them.
-
-2016-10-26  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (handle_extended_wait): Link parent/child fork
-	threads.
-	(linux_wait_1): Unlink them.
-	(linux_set_resume_request): Ignore resume requests for
-	already-resumed and unhandled fork child threads.
-	* linux-low.h (struct lwp_info) <fork_relative>: New field.
-	* server.c (in_queued_stop_replies_ptid, in_queued_stop_replies):
-	New functions.
-	(handle_v_requests) <vCont>: Don't call require_running.
-	* server.h (in_queued_stop_replies): New declaration.
-
-2016-10-24  Yao Qi  <yao.qi@linaro.org>
-
-	PR server/20733
-	* linux-aarch64-low.c (append_insns): Cast the return value to
-	'uint32_t *'.
-
-2016-10-10  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch32-low.c (enum arm_breakpoint_kinds): Remove.
-
-2016-10-06  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* target.c (target_supports_multi_process): New function, moved
-	from...
-	* target.h (target_supports_multi_process): ... here.  Remove
-	macro.
-
-2016-10-05  Tom Tromey  <tom@tromey.com>
-
-	PR remote/20655:
-	* tracepoint.c (handle_tracepoint_bkpts): Check
-	ipa_error_tracepoint, not ipa_stopping_tracepoint.
-
-2016-10-05  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv: Update the path of arm-*.xml files.
-
-2016-10-05  Terry Guo  <terry.guo@arm.com>
-	    Yao Qi  <yao.qi@linaro.org>
-
-	* Makefile.in: Adjust the path of rules.
-	* configure.srv: Update the path of xml files.
-	* regformats/arm-with-iwmmxt.dat: Regenerated.
-	* regformats/arm-with-neon.dat: Likewise.
-	* regformats/arm-with-vfpv2.dat: Likewise.
-	* regformats/arm-with-vfpv3.dat Likewise.
-
-2016-09-30  Yao Qi  <yao.qi@linaro.org>
-
-	PR gdbserver/20627
-	* target.c (target_stop_and_wait): Don't call
-	target_continue_no_signal, use resume_stop instead.
-
-2016-09-26  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_wait_1): Call debug_exit.
-
-2016-09-23  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (SFILES): Add common/new-op.c.
-	(OBS): Add common/new-op.o.
-	(new-op.o): New rule.
-
-2016-09-21  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* .gitinore: Ignore more files.
-
-2016-09-21  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch32-low.c (arm_fill_gregset): Keep bits 20 to
-	23.
-
-2016-09-19  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* server.c (start_inferior): Call target_mourn_inferior instead of
-	mourn_inferior; pass ptid_t argument to it.
-	(resume): Likewise.
-	(handle_target_event): Likewise.
-	* target.c (target_mourn_inferior): New function.
-	* target.h (mourn_inferior): Delete macro.
-
-2016-09-16  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-low.c (lwp_is_stepping): New function.
-
-2016-09-06  Carl Love  <cel@us.ibm.com>
-
-	* server.c (start_inferior):  Fixed comment, requested comment change
-	didn't get updated correctly.  Removed reference to ptrace () call as
-	it is only true on Linux systems.
-
-2016-09-06  Carl Love  <cel@us.ibm.com>
-
-	* server.c (start_inferior):  Do not call
-	function target_post_create_inferior () if the
-	inferior process has already exited.
-
-2016-09-05  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (COMPILER, COMPILER_CFLAGS): Remove.
-	(COMPILE.pre, CC_LD): Use CXX directly.
-	(INTERNAL_CFLAGS_BASE): Use CXXFLAGS directly.
-	* acinclude.m4: Don't include build-with-cxx.m4.
-	* configure.ac: Remove GDB_AC_BUILD_WITH_CXX call.
-	* configure: Regenerate.
-
-2016-09-02  Akash Trehan  <akash.trehan123@gmail.com>
-
-	PR gdb/19495
-	* remote-utils.c (relocate_instruction): Remove redundant strcpy()
-	call writing data to own_buf.
-
-2016-09-01  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* target.c (mywait): Call target_wait instead of
-	the_target->wait.
-	(target_wait): New function.
-
-2016-09-01  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* server.c (start_inferior): New variable 'ptid'.  Replace calls
-	to the_target->resume by target_continue{,_no_signal}, depending
-	on the case.
-	* target.c (target_stop_and_wait): Call target_continue_no_signal
-	instead of the_target->resume.
-	(target_continue): New function.
-
-2016-08-31  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-low.c (linux_wait_1): Move event switch after unsuspend_lwps.
-
-2016-08-25  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
-
-	PR server/20491
-	* gdb_proc_service.h (ps_get_thread_area): Remove const from struct
-	ps_prochandle.
-	* linux-aarch64-low.c (ps_get_thread_area): Likewise.
-	* linux-arm-low.c (ps_get_thread_area): Likewise.
-	* linux-crisv32-low.c (ps_get_thread_area): Likewise.
-	* linux-m68k-low.c (ps_get_thread_area): Likewise.
-	* linux-mips-low.c (ps_get_thread_area): Likewise.
-	* linux-nios2-low.c (ps_get_thread_area): Likewise.
-	* linux-tic6x-low.c (ps_get_thread_area): Likewise.
-	* linux-x86-low.c (ps_get_thread_area): Likewise.
-	* linux-xtensa-low.c (ps_get_thread_area): Likewise.
-
-2016-08-19  Pedro Alves  <palves@redhat.com>
-
-	* linux-x86-low.c (amd64_emit_call): Emit missing call opcode.
-
-2016-08-19  Pedro Alves  <palves@redhat.com>
-
-	* linux-x86-low.c (amd64_install_fast_tracepoint_jump_pad): Fix
-	comment.  Use memcpy instead of casting through unsigned long.
-
-2016-08-19  Pedro Alves  <palves@redhat.com>
-
-	* linux-amd64-ipa.c (alloc_jump_pad_buffer) [__ILP32__]: Try
-	allocating around 0x80000000.
-
-2016-08-19  Pedro Alves  <palves@redhat.com>
-
-	PR gdb/20415
-	* Makefile.in (x32-linux-ipa.o, x32-avx-linux-ipa.o)
-	(x32-avx512-linux-ipa.o): New rules.
-	* configure.ac (x86_64-*-linux*): New x32 check.
-	* configure.srv (ipa_x32_linux_regobj): New.
-	(x86_64-*-linux*): Use $ipa_x32_linux_regobj if building for x32.
-	* linux-amd64-ipa.c (get_ipa_tdesc) [__ILP32__]: Return x32
-	descriptions.
-	(initialize_low_tracepoint) [__ILP32__]: Initialize x32
-	descriptions.
-	* configure: Regenerate.
-
-2016-08-09  Pedro Alves  <palves@redhat.com>
-
-	PR gdb/18653
-	* Makefile.in (OBS): Add signals-state-save-restore.o.
-	(signals-state-save-restore.o): New rule.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* linux-low.c: Include "signals-state-save-restore.h".
-	(linux_create_inferior): Call
-	restore_original_signals_state.
-	* server.c: Include "dispositions-save-restore.h".
-	(captured_main): Call save_original_signals_state.
-
-2016-08-05  Pedro Alves  <palves@redhat.com>
-
-	* configure: Regenerate.
-
-2016-08-04  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (regsets_fetch_inferior_registers): Check
-	errno is ESRCH or not.
-
-2016-08-02  Yao Qi  <yao.qi@linaro.org>
-
-	* thread-db.c (struct thread_db) <td_ta_event_getmsg_p>: Remove.
-	<td_ta_set_event_p, td_ta_event_addr_p>: Remove.
-	(thread_db_load_search): Update.
-	(try_thread_db_load_1): Don't look for td_ta_event_addr,
-	td_ta_set_event and td_ta_event_getmsg.
-
-2016-07-26  Pedro Alves  <palves@redhat.com>
-
-	PR server/20414
-	* linux-x86-low.c (x86_get_pc, x86_set_pc): Use uint64_t instead
-	of unsigned long for 64-bit registers and use uint32_t instead of
-	unsigned int for 32-bit registers.
-
-2016-07-26  Pedro Alves  <palves@redhat.com>
-
-	* linux-x86-low.c (x86_siginfo_fixup): Rename 'native' parameter
-	to 'ptrace'.
-
-2016-07-21  Tom Tromey  <tom@tromey.com>
-
-	* configure: Rebuild.
-
-2016-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* mem-break.c (find_gdb_breakpoint): Cast bp to
-	'struct gdb_breakpoint *' rather than 'gdb_breakpoint *'.
-
-2016-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* server.c (handle_v_requests): Support s and S actions
-	if target_supports_software_single_step return true.
-
-2016-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (resume_stopped_resumed_lwps): If resume request
-	is resume_step, call maybe_hw_step.
-	(linux_wait_1): Stop all threads, remove reinsert breakpoints,
-	and unstop them.
-	(linux_resume_one_lwp_throw): Don't assert the thread has reinsert
-	breakpoints or not.
-	(proceed_one_lwp): If resume request is resume_step, install
-	reinsert breakpoints and call maybe_hw_step.
-
-2016-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (proceed_one_lwp): Declare.
-	(linux_resume_one_thread): Remove local variable 'step'.
-	Lift code enqueue signal.  Call proceed_one_lwp instead of
-	linux_resume_one_lwp.
-
-2016-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_resume_one_thread): Call
-	enqueue_pending_signal.
-
-2016-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* gdbthread.h (make_cleanup_restore_current_thread): Declare.
-	* inferiors.c (do_restore_current_thread_cleanup): New function.
-	(make_cleanup_restore_current_thread): Likewise.
-	* linux-low.c (install_software_single_step_breakpoints): Call
-	make_cleanup_restore_current_thread.  Switch current_thread to
-	thread.
-
-2016-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* mem-break.c (struct reinsert_breakpoint) <ptid>: New field.
-	(set_reinsert_breakpoint): New parameter ptid.  Callers updated.
-	(clone_one_breakpoint): Likewise.
-	(delete_reinsert_breakpoints): Change parameter to thread.
-	Callers updated.
-	(has_reinsert_breakpoints): Likewise.
-	(uninsert_reinsert_breakpoints): Likewise.
-	(reinsert_reinsert_breakpoints): Likewise.
-	* mem-break.h (set_reinsert_breakpoint): Update declaration.
-	(delete_reinsert_breakpoints): Likewise.
-	(reinsert_reinsert_breakpoints): Likewise.
-	(uninsert_reinsert_breakpoints): Likewise.
-	(has_reinsert_breakpoints): Likewise.
-
-2016-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* inferiors.c (get_thread_process): Make parameter const.
-	* inferiors.h (get_thread_process): Update declaration.
-	* mem-break.c (clone_all_breakpoints): Remove all parameters.
-	Add new parameters child_thread and parent_thread.  Callers
-	updated.
-	* mem-break.h (clone_all_breakpoints): Update declaration.
-
-2016-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* mem-break.c (struct breakpoint) <cond_list>: Remove.
-	<command_list, handler>: Remove.
-	(struct gdb_breakpoint): New.
-	(struct other_breakpoint): New.
-	(struct reinsert_breakpoint): New.
-	(is_gdb_breakpoint): New function.
-	(any_persistent_commands): Update command_list if
-	is_gdb_breakpoint returns true.
-	(set_breakpoint): Create breakpoints according to their types.
-	(find_gdb_breakpoint): Return 'struct gdb_breakpoint *'.
-	(set_gdb_breakpoint_1): Likewise.
-	(set_gdb_breakpoint): Likewise.
-	(clear_breakpoint_conditions): Change parameter type to
-	'struct gdb_breakpoint *'.
-	(clear_breakpoint_commands): Likewise.
-	(clear_breakpoint_conditions_and_commands): Likewise.
-	(add_condition_to_breakpoint): Likewise.
-	(add_breakpoint_condition): Likewise.
-	(add_commands_to_breakpoint): Likewise.
-	(check_breakpoints): Check other_breakpoint.
-	(clone_one_breakpoint): Clone breakpopint according to its type.
-	* mem-break.h (struct gdb_breakpoint): Declare.
-	(set_gdb_breakpoint): Update declaration.
-	(clear_breakpoint_conditions_and_commands): Likewise.
-	(add_breakpoint_condition): Likewise.
-	(add_breakpoint_commands): Likewise.
-	* server.c (process_point_options): Change parameter type to
-	'struct gdb_breakpoint *'.
-
-2016-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* mem-break.c (set_breakpoint_at): Rename it to ...
-	(set_breakpoint_type_at): ... it.
-	(set_breakpoint_at): Call set_breakpoint_type_at.
-	(set_reinsert_breakpoint): Call set_breakpoint_type_at.
-	* mem-break.h (set_breakpoint_at): Update comments.
-
-2016-07-12  Chung-Lin Tang  <cltang@codesourcery.com>
-
-	* linux-nios2-low.c (nios2_fill_gregset): Add type cast
-	to buf parameter.
-	(nios2_store_gregset): Likewise.
-
-2016-07-01  Pedro Alves  <palves@redhat.com>
-	    Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-low.c: Change interface to take the target lwp_info
-	pointer directly and return void.  Handle detaching from a zombie
-	thread.
-	(linux_detach_lwp_callback): New function.
-	(linux_detach): Detach from the leader thread after detaching from
-	the clone threads.
-
-2016-06-28  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_ftrace_insn_reloc_b): Use int64_t
-	for variable new_offset.
-	(aarch64_ftrace_insn_reloc_b_cond): Likewise.
-	(aarch64_ftrace_insn_reloc_cb): Likewise.
-	(aarch64_ftrace_insn_reloc_tb): Likewise.
-	(aarch64_install_fast_tracepoint_jump_pad): Likewise.  Use
-	PRIx64 instead of PRIx32.
-
-2016-06-28  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c (arm_get_syscall_trapinfo): New function.
-	(the_low_target): Install arm_get_syscall_trapinfo.
-
-2016-06-28  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_get_syscall_trapinfo): New
-	function.
-	(the_low_target): Install aarch64_get_syscall_trapinfo.
-
-2016-06-28  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (get_syscall_trapinfo): Remove parameter sysret.
-	Callers updated.
-	* linux-low.h (struct linux_target_ops) <get_syscall_trapinfo>:
-	Remove parameter sysno.
-	* linux-x86-low.c (x86_get_syscall_trapinfo): Remove parameter
-	sysret.
-
-2016-06-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-s390-low.c (s390_emit_eq_goto): Mark function static.
-	(s390_emit_ne_goto): Likewise.
-	(s390_emit_lt_goto): Likewise.
-	(s390_emit_le_goto): Likewise.
-	(s390_emit_gt_goto): Likewise.
-	(s390_emit_ge_goto): Likewise.
-	(s390x_emit_eq_goto): Likewise.
-	(s390x_emit_ne_goto): Likewise.
-	(s390x_emit_lt_goto): Likewise.
-	(s390x_emit_le_goto): Likewise.
-	(s390x_emit_gt_goto): Likewise.
-	(s390x_emit_ge_goto): Likewise.
-	(s390_emit_ops_impl): Mark variable static.
-	(s390x_emit_ops): Likewise.
-
-2016-06-17  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (handle_extended_wait): Call
-	uninsert_reinsert_breakpoints for the parent process.  Remove
-	reinsert breakpoints from the child process.  Reinsert them to
-	the parent process when vfork is done.
-	* mem-break.c (uninsert_reinsert_breakpoints): New function.
-	(reinsert_reinsert_breakpoints): New function.
-	* mem-break.h (uninsert_reinsert_breakpoints): Declare
-	(reinsert_reinsert_breakpoints): Declare.
-
-2016-06-17  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (handle_extended_wait): If the parent is doing
-	step-over, remove the reinsert breakpoints from the forked child.
-
-2016-06-17  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (unsuspend_all_lwps): Declare.
-	(linux_low_filter_event): If thread exited, call finish_step_over.
-	If step-over is finished, unsuspend other threads.
-
-2016-06-17  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_resume_one_lwp_throw): Assert
-	has_reinsert_breakpoints returns false.
-	* mem-break.c (delete_disabled_breakpoints): Assert
-	bp type isn't reinsert_breakpoint.
-
-2016-06-17  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (maybe_hw_step): New function.
-	(linux_resume_one_lwp_throw): Call maybe_hw_step.
-	(finish_step_over): Switch current_thread to lwp temporarily,
-	and assert has_reinsert_breakpoints returns true.
-	(proceed_one_lwp): Call maybe_hw_step.
-	* mem-break.c (has_reinsert_breakpoints): New function.
-	* mem-break.h (has_reinsert_breakpoints): Declare.
-
-2016-06-02  Jon Turney  <jon.turney@dronecode.org.uk>
-
-	* win32-low.c (win32_create_inferior): Add pointer casts for C++.
-
-2016-05-17  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_stabilize_threads): Call unsuspend_all_lwps
-	instead of find_inferior.
-
-2016-05-05  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c (get_next_pcs_read_memory_unsigned_integer):
-	Initialize res to zero.
-
-2016-05-05  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c (arm_sigreturn_next_pc): Change type of cpsr
-	to uint32_t.
-
-2016-05-04  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
-
-	* spu-low.c (fetch_ppc_register): Cast PowerPC-Linux-specific value
-	used as first ptrace argument to PTRACE_TYPE_ARG1 for C++.
-	(fetch_ppc_memory_1, store_ppc_memory_1): Likewise.
-
-2016-04-28  Par Olsson  <par.olsson@windriver.com>
-	    Simon Marchi  <simon.marchi@ericsson.com>
-
-	* tracepoint.c (write_inferior_int8): New function.
-	(cmd_qtenable_disable): Write enable flag using
-	write_inferior_int8.
-
-2016-04-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (lwp_signal_can_be_delivered): Adjust.
-	(need_step_over_p): Return zero if the LWP has pending signals
-	can be delivered on software single step target.
-
-2016-04-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (reinsert_raw_breakpoint): If bp->inserted is true
-	return instead of error.
-
-2016-04-22  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch32-low.c (arm_store_gregset): Clear CPSR bits 20
-	to 23.
-
-2016-04-22  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (lwp_signal_can_be_delivered): Don't deliver
-	signal when stepping over breakpoint with software single
-	step.
-
-2016-04-21  Pedro Alves  <palves@redhat.com>
-
-	* linux-s390-low.c (s390_collect_ptrace_register)
-	(s390_supply_ptrace_register, s390_get_hwcap): Use gdb_byte * and
-	add casts.
-	(s390_check_regset): Use void * instead of gdb_byte *.
-
-2016-04-20  Pedro Alves  <palves@redhat.com>
-
-	* configure: Renegerate.
-
-2016-04-20  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch32-low.c: Include "arch/arm-linux.h".
-	(arm_fill_gregset): Use ARM_CPSR_GREGNUM rather than magic
-	number 16.
-	(arm_store_gregset): Likewise.
-
-2016-04-16  Walfred Tedeschi  <walfred.tedeschi@intel.com>
-
-	* Makefile.in (clean): Add removal for i386-avx-mpx.c,
-	i386-avx-mpx-linux.c, amd64-avx-mpx.c and amd64-avx-mpx-linux.c.
-	(i386-avx-mpx.c, i386-avx-mpx-linux.c, amd64-avx-mpx.c)
-	(amd64-avx-mpx-linux.c): New rules.
-	(amd64-avx-mpx-linux-ipa.o, i386-avx-mpx-linux-ipa.o): New rule.
-	* configure.srv (srv_i386_regobj): Add i386-avx-mpx.o.
-	(srv_i386_linux_regobj): Add i386-avx-mpx-linux.o.
-	(srv_amd64_regobj): Add amd64-avx-mpx.o.
-	(srv_amd64_linux_regobj): Add amd64-avx-mpx-linux.o.
-	(srv_i386_xmlfiles): Add i386/i386-avx-mpx.xml.
-	(srv_amd64_xmlfiles): Add i386/amd64-avx-mpx.xml.
-	(srv_i386_linux_xmlfiles): Add i386/i386-avx-mpx-linux.xml.
-	(srv_amd64_linux_xmlfiles): Add i386/amd64-avx-mpx-linux.xml.
-	(ipa_i386_linux_regobj): Add i386-avx-mpx-linux-ipa.o.
-	(ipa_amd64_linux_regobj): Add amd64-avx-mpx-linux-ipa.o.
-	* linux-x86-low.c (x86_linux_read_description): Add case for
-	X86_XSTATE_AVX_MPX_MASK.
-	(x86_get_ipa_tdesc_idx): Add cases for avx_mpx.
-	(initialize_low_arch): Call init_registers_amd64_avx_mpx_linux and
-	init_registers_i386_avx_mpx_linux.
-	* linux-i386-ipa.c (get_ipa_tdesc): Add case for avx_mpx.
-	(initialize_low_tracepoint): Call
-	init_registers_i386_avx_mpx_linux.
-	* linux-amd64-ipa.c (get_ipa_tdesc):  Add case for avx_mpx.
-	(initialize_low_tracepoint): Call
-	init_registers_amd64_avx_mpx_linux.
-	* linux-x86-tdesc.h (X86_TDESC_AVX_MPX): New enum value.
-	(init_registers_amd64_avx_mpx_linux, tdesc_amd64_avx_mpx_linux)
-	(init_registers_i386_avx_mpx_linux, tdesc_i386_avx_mpx_linux): New
-	declarations.
-
-2016-04-18  Pedro Alves  <palves@redhat.com>
-
-	* configure: Regenerate.
-
-2016-04-13  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-aarch64-low.c (aarch64_emit_add): Switch x1 and x0.
-	(aarch64_emit_sub): Likewise.
-
-2016-04-12  Pedro Alves  <palves@redhat.com>
-
-	* utils.c (prepare_to_throw_exception): Delete.
-
-2016-04-05  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* Makefile.in ($(IPA_LIB)): Set SONAME of the IPA lib.
-
-2016-04-05  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* tracepoint.c (getauxval): Move to #ifdef IN_PROCESS_AGENT.
-
-2016-04-03  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* linux-aarch64-ipa.c: Add <elf.h> include.
-	* linux-ppc-ipa.c: Add <elf.h> include.
-	* linux-s390-ipa.c: Add <elf.h> include.
-
-2016-03-31  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* tracepoint.c (gdb_collect_ptr): Remove const qualifier.
-	(get_raw_reg_ptr): Likewise.
-	(get_trace_state_variable_value_ptr): Likewise.
-	(set_trace_state_variable_value_ptr): Likewise.
-	(initialize_tracepoint): Cast alloc_jump_pad_buffer result to
-	char *.
-
-2016-03-31  Wei-cheng Wang  <cole945@gmail.com>
-	    Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	PR/17221
-	* linux-ppc-low.c (emit_insns): New function.
-	(__EMIT_ASM, _EMIT_ASM, EMIT_ASM): New macros.
-	(ppc_emit_prologue): New function.
-	(ppc_emit_epilogue): New function.
-	(ppc_emit_add): New function.
-	(ppc_emit_sub): New function.
-	(ppc_emit_mul): New function.
-	(ppc_emit_lsh): New function.
-	(ppc_emit_rsh_signed): New function.
-	(ppc_emit_rsh_unsigned): New function.
-	(ppc_emit_ext): New function.
-	(ppc_emit_zero_ext): New function.
-	(ppc_emit_log_not): New function.
-	(ppc_emit_bit_and): New function.
-	(ppc_emit_bit_or): New function.
-	(ppc_emit_bit_xor): New function.
-	(ppc_emit_bit_not): New function.
-	(ppc_emit_equal): New function.
-	(ppc_emit_less_signed): New function.
-	(ppc_emit_less_unsigned): New function.
-	(ppc_emit_ref): New function.
-	(ppc_emit_const): New function.
-	(ppc_emit_reg): New function.
-	(ppc_emit_pop): New function.
-	(ppc_emit_stack_flush): New function.
-	(ppc_emit_swap): New function.
-	(ppc_emit_stack_adjust): New function.
-	(ppc_emit_call): New function.
-	(ppc_emit_int_call_1): New function.
-	(ppc_emit_void_call_2): New function.
-	(ppc_emit_if_goto): New function.
-	(ppc_emit_goto): New function.
-	(ppc_emit_eq_goto): New function.
-	(ppc_emit_ne_goto): New function.
-	(ppc_emit_lt_goto): New function.
-	(ppc_emit_le_goto): New function.
-	(ppc_emit_gt_goto): New function.
-	(ppc_emit_ge_goto): New function.
-	(ppc_write_goto_address): New function.
-	(ppc_emit_ops_impl): New static variable.
-	(ppc64v1_emit_prologue): New function.
-	(ppc64v2_emit_prologue): New function.
-	(ppc64_emit_epilogue): New function.
-	(ppc64_emit_add): New function.
-	(ppc64_emit_sub): New function.
-	(ppc64_emit_mul): New function.
-	(ppc64_emit_lsh): New function.
-	(ppc64_emit_rsh_signed): New function.
-	(ppc64_emit_rsh_unsigned): New function.
-	(ppc64_emit_ext): New function.
-	(ppc64_emit_zero_ext): New function.
-	(ppc64_emit_log_not): New function.
-	(ppc64_emit_bit_and): New function.
-	(ppc64_emit_bit_or): New function.
-	(ppc64_emit_bit_xor): New function.
-	(ppc64_emit_bit_not): New function.
-	(ppc64_emit_equal): New function.
-	(ppc64_emit_less_signed): New function.
-	(ppc64_emit_less_unsigned): New function.
-	(ppc64_emit_ref): New function.
-	(ppc64_emit_const): New function.
-	(ppc64v1_emit_reg): New function.
-	(ppc64v2_emit_reg): New function.
-	(ppc64_emit_pop): New function.
-	(ppc64_emit_stack_flush): New function.
-	(ppc64_emit_swap): New function.
-	(ppc64v1_emit_call): New function.
-	(ppc64v2_emit_call): New function.
-	(ppc64v1_emit_int_call_1): New function.
-	(ppc64v2_emit_int_call_1): New function.
-	(ppc64v1_emit_void_call_2): New function.
-	(ppc64v2_emit_void_call_2): New function.
-	(ppc64_emit_if_goto): New function.
-	(ppc64_emit_eq_goto): New function.
-	(ppc64_emit_ne_goto): New function.
-	(ppc64_emit_lt_goto): New function.
-	(ppc64_emit_le_goto): New function.
-	(ppc64_emit_gt_goto): New function.
-	(ppc64_emit_ge_goto): New function.
-	(ppc64v1_emit_ops_impl): New static variable.
-	(ppc64v2_emit_ops_impl): New static variable.
-	(ppc_emit_ops): New function.
-	(linux_low_target): Wire in ppc_emit_ops.
-
-2016-03-31  Wei-cheng Wang  <cole945@gmail.com>
-	    Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	PR/17221
-	* Makefile.in: Add powerpc-*-ipa.o
-	* configure.srv: Add ipa_obj for powerpc*-linux.
-	* linux-ppc-ipa.c: New file.
-	* linux-ppc-low.c: Added linux-ppc-tdesc.h, ax.h, tracepoint.h
-	includes.
-	(PPC_FIELD): New macro.
-	(PPC_SEXT): New macro.
-	(PPC_OP6): New macro.
-	(PPC_BO): New macro.
-	(PPC_LI): New macro.
-	(PPC_BD): New macro.
-	(init_registers_*): Move prototype to linux-ppc-tdesc.h.
-	(tdesc_*): Move declaration to linux-ppc-tdesc.h.
-	(ppc_get_hwcap): Rename to ppc_get_auxv and add type parameter.
-	(ppc_get_thread_area): New function.
-	(is_elfv2_inferior): New function.
-	(gen_ds_form): New function.
-	(GEN_STD): New macro.
-	(GEN_STDU): New macro.
-	(GEN_LD): New macro.
-	(GEN_LDU): New macro.
-	(gen_d_form): New function.
-	(GEN_ADDI): New macro.
-	(GEN_ADDIS): New macro.
-	(GEN_LI): New macro.
-	(GEN_LIS): New macro.
-	(GEN_ORI): New macro.
-	(GEN_ORIS): New macro.
-	(GEN_LWZ): New macro.
-	(GEN_STW): New macro.
-	(GEN_STWU): New macro.
-	(gen_xfx_form): New function.
-	(GEN_MFSPR): New macro.
-	(GEN_MTSPR): New macro.
-	(GEN_MFCR): New macro.
-	(GEN_MTCR): New macro.
-	(GEN_SYNC): New macro.
-	(GEN_LWSYNC): New macro.
-	(gen_x_form): New function.
-	(GEN_OR): New macro.
-	(GEN_MR): New macro.
-	(GEN_LWARX): New macro.
-	(GEN_STWCX): New macro.
-	(GEN_CMPW): New macro.
-	(gen_md_form): New function.
-	(GEN_RLDICL): New macro.
-	(GEN_RLDICR): New macro.
-	(gen_i_form): New function.
-	(GEN_B): New macro.
-	(GEN_BL): New macro.
-	(gen_b_form): New function.
-	(GEN_BNE): New macro.
-	(GEN_LOAD): New macro.
-	(GEN_STORE): New macro.
-	(gen_limm): New function.
-	(gen_atomic_xchg): New function.
-	(gen_call): New function.
-	(ppc_relocate_instruction): New function.
-	(ppc_install_fast_tracepoint_jump_pad): New function.
-	(ppc_get_min_fast_tracepoint_insn_len): New function.
-	(ppc_get_ipa_tdesc_idx): New function.
-	(the_low_target): Wire in the new functions.
-	(initialize_low_arch) [!__powerpc64__]: Don'it initialize 64-bit
-	tdescs.
-	* linux-ppc-tdesc.h: New file.
-
-2016-03-31  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* linux-aarch64-ipa.c: Add <sys/mman.h> and <sys/auxv.h> includes.
-	(alloc_jump_pad_buffer): New function.
-	* linux-amd64-ipa.c: Add <sys/mman.h> include.
-	(alloc_jump_pad_buffer): New function.
-	* linux-i386-ipa.c (alloc_jump_pad_buffer): New function.
-	* linux-s390-ipa.c: Add <sys/mman.h> and <sys/auxv.h> includes.
-	(alloc_jump_pad_buffer): New function.
-	* tracepoint.c (getauxval) [!HAVE_GETAUXVAL]: New function.
-	(initialize_tracepoint): Delegate to alloc_jump_pad_buffer.
-	* tracepoint.h (alloc_jump_pad_buffer): New prototype.
-	(getauxval) [!HAVE_GETAUXVAL]: New prototype.
-
-2016-03-30  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* linux-aarch64-ipa.c: Rename gdb_agent_get_raw_reg to get_raw_reg.
-	* linux-amd64-ipa.c: Likewise.
-	* linux-i386-ipa.c: Likewise.
-	* linux-s390-ipa.c: Likewise.
-	* tracepoint.c: IPA-export gdb_collect_ptr instead of gdb_collect,
-	ditto for get_raw_reg_ptr, get_trace_state_variable_value_ptr,
-	set_trace_state_variable_value_ptr.
-	(struct ipa_sym_addresses): Likewise.
-	(symbol_list): Likewise.
-	(install_fast_tracepoint): Dereference gdb_collect_ptr instead of
-	accessing gdb_collect directly.
-	(gdb_collect_ptr_type): New typedef.
-	(get_raw_reg_ptr_type): New typedef.
-	(get_trace_state_variable_value_ptr_type): New typedef.
-	(set_trace_state_variable_value_ptr_type): New typedef.
-	(gdb_collect_ptr): New global.
-	(get_raw_reg_ptr): New global.
-	(get_trace_state_variable_value_ptr): New global.
-	(set_trace_state_variable_value_ptr): New global.
-	(get_raw_reg_func_addr): Dereference get_raw_reg_ptr instead of
-	accessing get_raw_reg directly.
-	(get_get_tsv_func_addr): Likewise for
-	get_trace_state_variable_value_ptr.
-	(get_set_tsv_func_addr): Likewise for
-	set_trace_state_variable_value_ptr.
-	* tracepoint.h: Rename gdb_agent_get_raw_reg to get_raw_reg.
-
-2016-03-30  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* tracepoint.c (cmd_qtenable_disable): Remove whitespace.
-
-2016-03-30  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* remote-utils.c (look_up_one_symbol): Remove own_buf, handle 'v'
-	packets.
-	(relocate_instruction): Remove own_buf.
-	* server.c (own_buf): Make global.
-	(handle_v_requests): Make global.
-	* server.h (own_buf): New declaration.
-	(handle_v_requests): New prototype.
-
-2016-03-29  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	PR 18377
-	* linux-s390-low.c (add_insns): New function.
-	(s390_emit_prologue): New function.
-	(s390_emit_epilogue): New function.
-	(s390_emit_add): New function.
-	(s390_emit_sub): New function.
-	(s390_emit_mul): New function.
-	(s390_emit_lsh): New function.
-	(s390_emit_rsh_signed): New function.
-	(s390_emit_rsh_unsigned): New function.
-	(s390_emit_ext): New function.
-	(s390_emit_log_not): New function.
-	(s390_emit_bit_and): New function.
-	(s390_emit_bit_or): New function.
-	(s390_emit_bit_xor): New function.
-	(s390_emit_bit_not): New function.
-	(s390_emit_equal): New function.
-	(s390_emit_less_signed): New function.
-	(s390_emit_less_unsigned): New function.
-	(s390_emit_ref): New function.
-	(s390_emit_if_goto): New function.
-	(s390_emit_goto): New function.
-	(s390_write_goto_address): New function.
-	(s390_emit_litpool): New function.
-	(s390_emit_const): New function.
-	(s390_emit_call): New function.
-	(s390_emit_reg): New function.
-	(s390_emit_pop): New function.
-	(s390_emit_stack_flush): New function.
-	(s390_emit_zero_ext): New function.
-	(s390_emit_swap): New function.
-	(s390_emit_stack_adjust): New function.
-	(s390_emit_set_r2): New function.
-	(s390_emit_int_call_1): New function.
-	(s390_emit_void_call_2): New function.
-	(s390_emit_eq_goto): New function.
-	(s390_emit_ne_goto): New function.
-	(s390_emit_lt_goto): New function.
-	(s390_emit_le_goto): New function.
-	(s390_emit_gt_goto): New function.
-	(s390_emit_ge_goto): New function.
-	(s390x_emit_prologue): New function.
-	(s390x_emit_epilogue): New function.
-	(s390x_emit_add): New function.
-	(s390x_emit_sub): New function.
-	(s390x_emit_mul): New function.
-	(s390x_emit_lsh): New function.
-	(s390x_emit_rsh_signed): New function.
-	(s390x_emit_rsh_unsigned): New function.
-	(s390x_emit_ext): New function.
-	(s390x_emit_log_not): New function.
-	(s390x_emit_bit_and): New function.
-	(s390x_emit_bit_or): New function.
-	(s390x_emit_bit_xor): New function.
-	(s390x_emit_bit_not): New function.
-	(s390x_emit_equal): New function.
-	(s390x_emit_less_signed): New function.
-	(s390x_emit_less_unsigned): New function.
-	(s390x_emit_ref): New function.
-	(s390x_emit_if_goto): New function.
-	(s390x_emit_const): New function.
-	(s390x_emit_call): New function.
-	(s390x_emit_reg): New function.
-	(s390x_emit_pop): New function.
-	(s390x_emit_stack_flush): New function.
-	(s390x_emit_zero_ext): New function.
-	(s390x_emit_swap): New function.
-	(s390x_emit_stack_adjust): New function.
-	(s390x_emit_int_call_1): New function.
-	(s390x_emit_void_call_2): New function.
-	(s390x_emit_eq_goto): New function.
-	(s390x_emit_ne_goto): New function.
-	(s390x_emit_lt_goto): New function.
-	(s390x_emit_le_goto): New function.
-	(s390x_emit_gt_goto): New function.
-	(s390x_emit_ge_goto): New function.
-	(s390_emit_ops): New function.
-	(struct linux_target_ops): Fill in emit_ops hook.
-
-2016-03-29  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	PR 18377
-	* Makefile.in: Add s390 IPA files.
-	* configure.srv: Build IPA for s390.
-	* linux-s390-ipa.c: New file.
-	* linux-s390-low.c: New includes - inttypes.h and linux-s390-tdesc.h.
-	(init_registers_s390_linux32): Move declaration to linux-s390-tdesc.h.
-	(tdesc_s390_linux32): Likewise.
-	(init_registers_s390_linux32v1): Likewise.
-	(tdesc_s390_linux32v1): Likewise.
-	(init_registers_s390_linux32v2): Likewise.
-	(tdesc_s390_linux32v2): Likewise.
-	(init_registers_s390_linux64): Likewise.
-	(tdesc_s390_linux64): Likewise.
-	(init_registers_s390_linux64v1): Likewise.
-	(tdesc_s390_linux64v1): Likewise.
-	(init_registers_s390_linux64v2): Likewise.
-	(tdesc_s390_linux64v2): Likewise.
-	(init_registers_s390_te_linux64): Likewise.
-	(tdesc_s390_te_linux64): Likewise.
-	(init_registers_s390_vx_linux64): Likewise.
-	(tdesc_s390_vx_linux64): Likewise.
-	(init_registers_s390_tevx_linux64): Likewise.
-	(tdesc_s390_tevx_linux64): Likewise.
-	(init_registers_s390x_linux64): Likewise.
-	(tdesc_s390x_linux64): Likewise.
-	(init_registers_s390x_linux64v1): Likewise.
-	(tdesc_s390x_linux64v1): Likewise.
-	(init_registers_s390x_linux64v2): Likewise.
-	(tdesc_s390x_linux64v2): Likewise.
-	(init_registers_s390x_te_linux64): Likewise.
-	(tdesc_s390x_te_linux64): Likewise.
-	(init_registers_s390x_vx_linux64): Likewise.
-	(tdesc_s390x_vx_linux64): Likewise.
-	(init_registers_s390x_tevx_linux64): Likewise.
-	(tdesc_s390x_tevx_linux64): Likewise.
-	(have_hwcap_s390_vx): New static variable.
-	(s390_arch_setup): Fill have_hwcap_s390_vx.
-	(s390_get_thread_area): New function.
-	(s390_ft_entry_gpr_esa): New const.
-	(s390_ft_entry_gpr_zarch): New const.
-	(s390_ft_entry_misc): New const.
-	(s390_ft_entry_fr): New const.
-	(s390_ft_entry_vr): New const.
-	(s390_ft_main_31): New const.
-	(s390_ft_main_64): New const.
-	(s390_ft_exit_fr): New const.
-	(s390_ft_exit_vr): New const.
-	(s390_ft_exit_misc): New const.
-	(s390_ft_exit_gpr_esa): New const.
-	(s390_ft_exit_gpr_zarch): New const.
-	(append_insns): New function.
-	(s390_relocate_instruction): New function.
-	(s390_install_fast_tracepoint_jump_pad): New function.
-	(s390_get_min_fast_tracepoint_insn_len): New function.
-	(s390_get_ipa_tdesc_idx): New function.
-	(struct linux_target_ops): Wire in the above functions.
-	(initialize_low_arch) [!__s390x__]: Don't initialize s390x tdescs.
-	* linux-s390-tdesc.h: New file.
-
-2016-03-29  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* linux-s390-low.c (s390_supports_tracepoints): New function.
-	(struct linux_target_ops): Fill supports_tracepoints hook.
-
-2016-03-18  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (lwp_signal_can_be_delivered): New function.
-	(linux_resume_one_lwp_throw): Use lwp_signal_can_be_delivered.
-
-2016-03-18  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_resume_one_lwp_throw): Set 'signal' to
-	0 if signal is enqueued.  Remove 'signal' from one debugging
-	message.  Move one debugging message to some lines below.
-	Remove code setting 'signal' to 0.
-
-2016-03-18  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_low_filter_event): Remove redundant
-	WIFSTOPPED check together with linux_wstatus_maybe_breakpoint.
-
-2016-03-09  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* linux-ppc-low.c (ppc_supports_tracepoints): New function.
-	(struct linux_target_ops): Wire in the above.
-
-2016-03-03  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c: Update comments to start_step_over.
-
-2016-03-03  Yao Qi  <yao.qi@linaro.org>
-
-	PR server/19736
-	* linux-low.c (handle_extended_wait): Set child suspended
-	if event_lwp->bp_reinsert isn't zero.
-
-2016-03-02  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_resume_one_lwp_throw): Replace code with
-	enqueue_pending_signal.
-
-2016-03-02  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* tracepoint.c (cmd_qtstart): Only set ipa_tdesc_idx if agent
-	is actually loaded.
-
-2016-02-25  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* linux-s390-low.c (s390_num_regs_3264): Define on 31-bit too.
-	(s390_regmap_3264) [!__s390x__]: New global.
-	(s390_collect_ptrace_register): Skip map entries containing -1.
-	(s390_supply_ptrace_register): Ditto.
-	(s390_fill_gprs_high): New function.
-	(s390_store_gprs_high): New function.
-	(s390_regsets): Add NT_S390_HIGH_GPRS.
-	(s390_get_hwcap): Enable on 31-bit.
-	(have_hwcap_s390_high_gprs): Enable on 31-bit.
-	(s390_arch_setup): Enable detection of high GPRs, TDB, VX on 31-bit.
-	Detect NT_S390_HIGH_GPRS.
-	(s390_usrregs_info_3264): Enable on 31-bit.
-	(s390_regs_info): Enable regs_info_3264 on 31-bit.
-	(initialize_low_arch): Initialize s390_regsets_info_3264 on 31-bit.
-
-2016-02-25  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	PR gdb/13808
-	* Makefile.in: Add i386-*-linux-ipa.o and amd64-*-linux-ipa.o.
-	* configure.srv: Ditto.
-	* linux-aarch64-ipa.c (get_ipa_tdesc): New function.
-	(initialize_low_tracepoint): Remove ipa_tdesc assignment.
-	* linux-amd64-ipa.c: Add "linux-x86-tdesc.h" include.
-	(init_registers_amd64_linux): Remove prototype.
-	(tdesc_amd64_linux): Remove declaration.
-	(get_ipa_tdesc): New function.
-	(initialize_low_tracepoint): Remove ipa_tdesc assignment,
-	initialize remaining tdescs.
-	* linux-i386-ipa.c: Add "linux-x86-tdesc.h" include.
-	(init_registers_i386_linux): Remove prototype.
-	(tdesc_i386_linux): Remove declaration.
-	(get_ipa_tdesc): New function.
-	(initialize_low_tracepoint): Remove ipa_tdesc assignment,
-	initialize remaining tdescs.
-	* linux-low.c (linux_get_ipa_tdesc_idx): New function.
-	(linux_target_ops): wire in linux_get_ipa_tdesc_idx.
-	* linux-low.h (struct linux_target_ops): Add get_ipa_tdesc_idx.
-	* linux-x86-low.c: Move tdesc declarations to linux-x86-tdesc.h.
-	(x86_get_ipa_tdesc_idx): New function.
-	(the_low_target): Wire in x86_get_ipa_tdesc_idx.
-	* linux-x86-tdesc.h: New file.
-	* target.h (struct target_ops): Add get_ipa_tdesc_idx.
-	(target_get_ipa_tdesc_idx): New macro.
-	* tracepoint.c (ipa_tdesc_idx): New macro.
-	(struct ipa_sym_addresses): Add addr_ipa_tdesc_idx.
-	(symbol_list): Add ipa_tdesc_idx.
-	(cmd_qtstart): Write ipa_tdesc_idx in the target.
-	(ipa_tdesc): Remove.
-	(ipa_tdesc_idx): New variable.
-	(get_context_regcache): Use get_ipa_tdesc.
-	(gdb_collect): Ditto.
-	(gdb_probe): Ditto.
-	* tracepoint.h (get_ipa_tdesc): New prototype.
-	(ipa_tdesc): Remove.
-
-2016-02-24  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (check_stopped_by_breakpoint): Rename to ...
-	(save_stop_reason): ... this.  Use GDB_ARCH_IS_TRAP_HWBKPT and
-	handle ambiguous GDB_ARCH_IS_TRAP_BRKPT / GDB_ARCH_IS_TRAP_HWBKPT.
-	Factor out common code between the USE_SIGTRAP_SIGINFO and
-	!USE_SIGTRAP_SIGINFO blocks.
-	(linux_low_filter_event): Call save_stop_reason instead of
-	check_stopped_by_breakpoint and check_stopped_by_watchpoint.
-	Update comments.
-	(linux_wait_1): Update comments.
-
-2016-02-24  Wei-cheng Wang  <cole945@gmail.com>
-
-	* linux-ppc-low.c (ppc_supports_z_point_type): New function:
-	(ppc_insert_point, ppc_remove_point): Insert/remove z-packet breakpoints.
-	(ppc64_emit_ops_vector): Add target ops - ppc_supports_z_point_type,
-	ppc_insert_point, ppc_remove_point.
-
-2016-02-17  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* linux-s390-low.c (s390_supports_z_point_type): New function.
-	(struct linux_target_ops): Wire s390_supports_z_point_type in.
-
-2016-02-16  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c (get_next_pcs_syscall_next_pc): Remove argument
-	PC.  Get pc from regcache_read_pc.
-
-2016-02-12  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_get_pc): Call linux_get_pc_64bit
-	or linux_get_pc_32bit.
-	(aarch64_set_pc): Call linux_set_pc_64bit or linux_set_pc_32bit.
-
-2016-02-12  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c (get_next_pcs_ops): Initialize it with
-	arm_linux_get_next_pcs_fixup.
-
-2016-02-12  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* tracepoint.c (x_tracepoint_action_download): Change
-	write_inferior_data_ptr to write_inferior_data_pointer.
-	(cmd_qtstart): Likewise.
-	(write_inferior_data_ptr): Remove.
-	(download_agent_expr): Change write_inferior_data_ptr to
-	write_inferior_data_pointer.
-	(download_tracepoint_1): Likewise.
-	(download_tracepoint): Likewise.
-	(download_trace_state_variables): Likewise.
-
-2016-02-11  Wei-cheng Wang  <cole945@gmail.com>
-	    Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* tracepoint.c (struct tracepoint_action_ops): Remove.
-	(struct tracepoint_action): Remove ops.
-	(m_tracepoint_action_download, r_tracepoint_action_download)
-	(x_tracepoint_action_download, l_tracepoint_action_download): Adjust
-	size and offset accordingly.
-	(m_tracepoint_action_ops, r_tracepoint_action_ops)
-	(x_tracepoint_action_ops, l_tracepoint_action_ops): Remove.
-	(tracepoint_action_send, tracepoint_action_download): New functions.
-	Helpers for trace action handlers.
-	(add_tracepoint_action): Remove setup actions ops.
-	(download_tracepoint_1, tracepoint_send_agent): Call helper functions.
-
-2016-02-10  Yao Qi  <yao.qi@linaro.org>
-
-	* regcache.c (regcache_raw_read_unsigned): Clear *VAL.
-
-2016-02-09  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* configure.ac: Use AC_CONFIG_FILES instead of passing arguments
-	to AC_OUTPUT.
-	* configure: Regenerate.
-
-2016-02-09  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-aarch64-low.c (aarch64_linux_siginfo_fixup): Change
-	void * to gdb_byte *.
-	* linux-low.c (siginfo_fixup): Likewise.
-	(linux_xfer_siginfo): Likewise.
-	* linux-low.h (struct linux_target_ops) <siginfo_fixup>:
-	Likewise.
-	* linux-x86-low.c (x86_siginfo_fixup): Likewise.
-
-2016-02-02  Walfred Tedeschi  <walfred.tedeschi@intel.com>
-
-	* configure.srv (x86_64-*-linux*): Add amd64-linux-siginfo.o
-	to srv_tgtobj.
-	(i[34567]86-*-linux*): Add amd64-linux-siginfo.o
-	to srv_tgtobj.
-	* linux-x86-low.c [__x86_64__]: Include
-	"nat/amd64-linux-siginfo.h".
-	(compat_siginfo_from_siginfo, siginfo_from_compat_siginfo)
-	(compat_x32_siginfo_from_siginfo, siginfo_from_compat_x32_siginfo)
-	(compat_timeval, compat_sigval, compat_x32_clock, cpt_si_pid)
-	(cpt_si_uid, cpt_si_timerid, cpt_si_overrun, cpt_si_status)
-	(cpt_si_utime, cpt_si_stime, cpt_si_ptr, cpt_si_addr, cpt_si_band)
-	(cpt_si_fd, si_timerid, si_overrun): Move from
-	nat/amd64-linux-siginfo.c.
-	* Makefile.in (amd64-linux-siginfo.o:): New rule.
-
-2016-01-28  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* server.c (skip_to_semicolon):  Remove.
-	(process_point_options): Use strchrnul instead of
-	skip_to_semicolon.
-
-2016-01-26  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c (arm_gdbserver_get_next_pcs): Remove argument pc.
-	* linux-low.c (install_software_single_step_breakpoints): Don't
-	call regcache_read_pc.
-	* linux-low.h (struct linux_target_ops) <get_next_pcs>: Remove
-	argument pc.
-
-2016-01-26  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (install_software_single_step_breakpoints): Call
-	regcache_read_pc instead of get_pc.
-
-2016-01-26  Yao Qi  <yao.qi@linaro.org>
-
-	* remote-utils.c (remote_close) [!USE_WIN32API]: Ignore SIGIO.
-	(unblock_async_io): Rename to ...
-	(block_unblock_async_io): ... it.  New function.
-	(enable_async_io): Don't install SIGIO handler.  Unblock it
-	instead.
-	(disable_async_io): Don't ignore SIGIO.  Block it instead.
-	(initialize_async_io): Install SIGIO handler.  Don't call
-	unblock_async_io.
-
-2016-01-26  Yao Qi  <yao.qi@linaro.org>
-
-	* remote-utils.c (getpkt): If the buffer isn't empty, and the
-	first character is '\003', call *the_target->request_interrupt.
-
-2016-01-25  Yao Qi  <yao.qi@linaro.org>
-
-	* remote-utils.c (new_thread_notify): Remove.
-	(dead_thread_notify): Likewise.
-	* remote-utils.h (new_thread_notify): Remove declaration.
-	(dead_thread_notify): Likewise.
-
-2016-01-23  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* gdb.trace/pending.exp: Fix expected message on continue.
-
-2016-01-22  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
-
-	* tracepoint.c (write_inferior_data_ptr): Cast to uintptr_t, so that
-	it works properly on big-endian machines where sizeof (CORE_ADDR)
-	!= sizeof (void *).
-
-2016-01-21  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (COMPILER_CFLAGS, CXXFLAGS): New.
-	(INTERNAL_CFLAGS_BASE): Use COMPILER_CFLAGS instead of CFLAGS.
-	* configure: Regenerate.
-
-2016-01-21  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c (arm_sigreturn_next_pc): Add parameter
-	is_thumb and set it according to CPSR saved on the stack.
-	(get_next_pcs_syscall_next_pc): Pass is_thumb to
-	arm_sigreturn_next_pc.
-
-2016-01-18  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_set_pc_64bit): New function.
-	(linux_get_pc_64bit): New function.
-	* linux-low.h (linux_set_pc_64bit, linux_get_pc_64bit):
-	Declare.
-	* linux-sparc-low.c (debug_threads): Remove declaration.
-	(sparc_get_pc): Remove.
-	(the_low_target): Use linux_get_pc_64bit instead of
-	sparc_get_pc.
-	* linux-tile-low.c (tile_get_pc, tile_set_pc): Remove.
-	(the_low_target): Use linux_get_pc_64bit and
-	linux_set_pc_64bit.
-
-2016-01-18  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c (debug_threads): Remove declaration.
-	(arm_get_pc, arm_set_pc): Remove.
-	(the_low_target): Use linux_get_pc_32bit and
-	linux_set_pc_32bit.
-	* linux-bfin-low.c (bfin_get_pc, bfin_set_pc): Remove.
-	(the_low_target): Use linux_get_pc_32bit and
-	linux_set_pc_32bit.
-	* linux-cris-low.c (debug_threads): Remove declaration.
-	(cris_get_pc, cris_set_pc,): Remove.
-	(the_low_target): Use linux_get_pc_32bit and
-	linux_set_pc_32bit.
-	* linux-crisv32-low.c (debug_threads): Remove declaration.
-	(cris_get_pc, cris_set_pc): Remove.
-	(the_low_target): Use linux_get_pc_32bit and
-	linux_set_pc_32bit.
-	* linux-low.c: Include inttypes.h.
-	(linux_get_pc_32bit, linux_set_pc_32bit): New functions.
-	* linux-low.h (linux_get_pc_32bit, linux_set_pc_32bit): Declare.
-	* linux-m32r-low.c (m32r_get_pc, m32r_set_pc): Remove.
-	(the_low_target): Use linux_get_pc_32bit and
-	linux_set_pc_32bit.
-	* linux-m68k-low.c (m68k_get_pc, m68k_set_pc): Remove.
-	(the_low_target): Use linux_get_pc_32bit and
-	linux_set_pc_32bit.
-	* linux-nios2-low.c (nios2_get_pc, nios2_set_pc): Remove.
-	(the_low_target): Use linux_get_pc_32bit and
-	linux_set_pc_32bit.
-	* linux-sh-low.c (sh_get_pc, sh_set_pc): Remove.
-	(the_low_target): Use linux_get_pc_32bit and
-	linux_set_pc_32bit.
-	* linux-xtensa-low.c (xtensa_get_pc, xtensa_set_pc): Remove.
-	(the_low_target): Use linux_get_pc_32bit and
-	linux_set_pc_32bit.
-
-2016-01-18  Gary Benson  <gbenson@redhat.com>
-
-	* configure.ac (AC_FUNC_FORK): New check.
-	* config.in: Regenerate.
-	* configure: Likewise.
-
-2016-01-14  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch32-low.c (thumb2_breakpoint): Make it static.
-	* linux-aarch32-low.h (thumb2_breakpoint): Remove declaration.
-	* linux-arm-low.c (arm_gdbserver_get_next_pcs): Pass 1 to
-	arm_get_next_pcs_ctor.
-
-2016-01-12  Josh Stone  <jistone@redhat.com>
-	    Philippe Waroquiers  <philippe.waroquiers@skynet.be>
-
-	* inferiors.h: Include "gdb_vecs.h".
-	(struct process_info): Add syscalls_to_catch.
-	* inferiors.c (remove_process): Free syscalls_to_catch.
-	* remote-utils.c (prepare_resume_reply): Report syscall_entry and
-	syscall_return stops.
-	* server.h (UNKNOWN_SYSCALL, ANY_SYSCALL): Define.
-	* server.c (handle_general_set): Handle QCatchSyscalls.
-	(handle_query): Report support for QCatchSyscalls.
-	* target.h (struct target_ops): Add supports_catch_syscall.
-	(target_supports_catch_syscall): New macro.
-	* linux-low.h (struct linux_target_ops): Add get_syscall_trapinfo.
-	(struct lwp_info): Add syscall_state.
-	* linux-low.c (handle_extended_wait): Mark syscall_state as an entry.
-	Maintain syscall_state and syscalls_to_catch across exec.
-	(get_syscall_trapinfo): New function, proxy to the_low_target.
-	(linux_low_ptrace_options): Enable PTRACE_O_TRACESYSGOOD.
-	(linux_low_filter_event): Toggle syscall_state entry/return for
-	syscall traps, and set it ignored for all others.
-	(gdb_catching_syscalls_p): New function.
-	(gdb_catch_this_syscall_p): New function.
-	(linux_wait_1): Handle SYSCALL_SIGTRAP.
-	(linux_resume_one_lwp_throw): Add PTRACE_SYSCALL possibility.
-	(linux_supports_catch_syscall): New function.
-	(linux_target_ops): Install it.
-	* linux-x86-low.c (x86_get_syscall_trapinfo): New function.
-	(the_low_target): Install it.
-
-2016-01-12  Mike Frysinger  <vapier@gentoo.org>
-
-	* acinclude.m4: Include new ../warning.m4 file.
-	* configure: Regenerated.
-	* configure.ac: Replace all warning logic with AM_GDB_WARNINGS.
-
-2016-01-12  Mike Frysinger  <vapier@gentoo.org>
-
-	* ax.c (is_goto_target): Mark static.
-	* linux-low.c (register_addr): Likewise.
-	(linux_fetch_registers, linux_store_registers): Likewise.
-	* mem-break.c (any_persistent_commands): Fix old prototype.
-	(add_commands_to_breakpoint): Mark static.
-	* regcache.c (find_register_by_name): Delete unused func.
-	* remote-utils.c (hex_or_minus_one): Mark static.
-	* server.c (monitor_show_help): Mark static.
-	(handle_query, handle_v_cont, handle_v_attach, handle_v_kill,
-	handle_v_requests): Likewise.
-
-2016-01-12  Pedro Alves  <palves@redhat.com>
-
-	Remove use of the registered trademark symbol throughout.
-
-2016-01-08  Yao Qi  <yao.qi@linaro.org>
-
-	* remote-utils.c (getpkt): If c is '\003', call target hook
-	request_interrupt.
-
-2016-01-06  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch32-low.h (arm_abi_breakpoint): Move to
-	linux-aarch32-low.c.
-	(arm_eabi_breakpoint, arm_breakpoint): Likewise.
-	(arm_breakpoint_len, thumb_breakpoint_len): Likewise.
-	(thumb2_breakpoint, thumb2_breakpoint_len): Likewise.
-	(thumb2_breakpoint): Declare.
-	* linux-aarch32-low.c (arm_abi_breakpoint): Moved from
-	linux-aarch32-low.h.
-	(arm_eabi_breakpoint, arm_breakpoint): Likewise.
-	(arm_breakpoint_len, thumb_breakpoint_len): Likewise.
-	(thumb2_breakpoint, thumb2_breakpoint_len): Likewise.
-
-2016-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbreplay.c (gdbreplay_version): Change copyright year in
-	version message.
-	* server.c (gdbserver_version): Likewise.
-
-2015-12-28  Patrick Palka  <patrick@parcs.ath.cx>
-
-	* server.c (crc32_table): Delete.
-	(crc32): Use libiberty's xcrc32 function.
-
-2015-12-22  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_delete_thread_callback): New function.
-	(lynx_mourn): Properly delete our process and all of its
-	threads.  Remove call to clear_inferiors.
-
-2015-12-22  Joel Brobecker  <brobecker@adacore.com>
-
-	* target.c (thread_search_callback): Add check that
-	the thread_stopped target callback is not NULL before
-	calling it.
-
-2015-12-21  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch32-low.h [__aarch64__]: Use arm_abi_breakpoint
-	arm breakpoint.
-
-2015-12-18  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* server.c (handle_query): Call target_supports_software_single_step.
-
-2015-12-18  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-low.c (single_step): New function.
-	(linux_resume_one_lwp_throw): Call single_step.
-	(start_step_over): Likewise.
-
-2015-12-18  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* Makefile.in (SFILES): Append arch/arm-linux.c,
-	arch/arm-get-next-pcs.c.
-	(arm-linux.o): New rule.
-	(arm-get-next-pcs.o): New rule.
-	* configure.srv (arm*-*-linux*): Add arm-get-next-pcs.o,
-	arm-linux.o.
-	* linux-aarch32-low.c (arm_abi_breakpoint): Remove macro.  Moved
-	to linux-aarch32-low.c.
-	(arm_eabi_breakpoint, arm_breakpoint): Likewise.
-	(arm_breakpoint_len, thumb_breakpoint): Likewise.
-	(thumb_breakpoint_len, thumb2_breakpoint): Likewise.
-	(thumb2_breakpoint_len): Likewise.
-	(arm_is_thumb_mode): Make non-static.
-	* linux-aarch32-low.h (arm_abi_breakpoint): New macro.  Moved
-	from linux-aarch32-low.c.
-	(arm_eabi_breakpoint, arm_breakpoint): Likewise.
-	(arm_breakpoint_len, thumb_breakpoint): Likewise.
-	(thumb_breakpoint_len, thumb2_breakpoint): Likewise.
-	(thumb2_breakpoint_len): Likewise.
-	(arm_is_thumb_mode): New declaration.
-	* linux-arm-low.c: Include arch/arm-linux.h
-	aarch/arm-get-next-pcs.h, sys/syscall.h.
-	(get_next_pcs_ops): New struct.
-	(get_next_pcs_addr_bits_remove): New function.
-	(get_next_pcs_is_thumb): New function.
-	(get_next_pcs_read_memory_unsigned_integer): Likewise.
-	(arm_sigreturn_next_pc): Likewise.
-	(get_next_pcs_syscall_next_pc): Likewise.
-	(arm_gdbserver_get_next_pcs): Likewise.
-	(struct linux_target_ops) <arm_gdbserver_get_next_pcs>:
-	Initialize.
-	* linux-low.h: Move CORE_ADDR vector definition to gdb_vecs.h.
-	* server.h: Include gdb_vecs.h.
-
-2015-12-18  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* Makefile.in (SFILES): Append common/common-regcache.c.
-	(OBS): Append common-regcache.o.
-	(common-regcache.o): New rule.
-	* regcache.c (init_register_cache): Initialize cache to
-	REG_UNAVAILABLE.
-	(regcache_raw_read_unsigned): New function.
-	* regcache.h (REG_UNAVAILABLE, REG_VALID): Replaced by shared
-	register_status enum.
-
-2015-12-18  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-aarch64-low.c (the_low_targets): Rename
-	breakpoint_reinsert_addr to get_next_pcs.
-	* linux-arm-low.c (the_low_targets): Likewise.
-	* linux-bfin-low.c (the_low_targets): Likewise.
-	* linux-cris-low.c (the_low_targets): Likewise.
-	* linux-crisv32-low.c (the_low_targets): Likewise.
-	* linux-low.c (can_software_single_step): Likewise.
-	(install_software_single_step_breakpoints): New function.
-	(start_step_over): Use install_software_single_step_breakpoints.
-	* linux-low.h: New CORE_ADDR vector.
-	(struct linux_target_ops) Rename breakpoint_reinsert_addr to
-	get_next_pcs.
-	* linux-mips-low.c (the_low_targets): Likewise.
-	* linux-nios2-low.c (the_low_targets): Likewise.
-	* linux-sparc-low.c (the_low_targets): Likewise.
-
-2015-12-17  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_kill_one_lwp): Remove references to
-	LinuxThreads.
-	(kill_lwp): Remove HAVE_TKILL_SYSCALL check.  No longer fall back
-	to 'kill'.
-	(linux_init_signals): Delete.
-	(initialize_low): Adjust.
-	* thread-db.c (thread_db_init): Remove LinuxThreads reference.
-
-2015-12-16  Pedro Alves  <palves@redhat.com>
-
-	* configure.ac (compiler warning flags): When testing a
-	-Wno-foo option, check whether -Wfoo works instead.
-	* configure: Regenerate.
-
-2015-12-11  Don Breazeal  <donb@codesourcery.com>
-
-	* server.c (process_serial_event): Don't exit from gdbserver
-	in remote mode if there are still active inferiors.
-
-2015-12-11  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_breakpoint_at): Call
-	arm_breakpoint_at if the process is 32-bit.
-
-2015-12-11  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch32-low.c [__aarch64__]: Use arm_abi_breakpoint
-	arm breakpoint.
-
-2015-12-07  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv: Append arm.o to srv_tgtobj for
-	aarch64*-*-linux* target.
-	* linux-aarch32-low.c (arm_abi_breakpoint): New macro.  Moved
-	from linux-arm-low.c.
-	(arm_eabi_breakpoint, arm_breakpoint): Likewise.
-	(arm_breakpoint_len, thumb_breakpoint): Likewise.
-	(thumb_breakpoint_len, thumb2_breakpoint): Likewise.
-	(thumb2_breakpoint_len): Likewise.
-	(arm_is_thumb_mode, arm_breakpoint_at): Likewise.
-	(arm_breakpoint_kinds): Likewise.
-	(arm_breakpoint_kind_from_pc): Likewise.
-	(arm_sw_breakpoint_from_kind): Likewise.
-	(arm_breakpoint_kind_from_current_state): Likewise.
-	* linux-aarch32-low.h (arm_breakpoint_kind_from_pc): Declare.
-	(arm_sw_breakpoint_from_kind): Declare.
-	(arm_breakpoint_kind_from_current_state): Declare.
-	(arm_breakpoint_at): Declare.
-	* linux-aarch64-low.c (aarch64_sw_breakpoint_from_kind): Call
-	arm_sw_breakpoint_from_kind if process is 32-bit.
-	(aarch64_breakpoint_kind_from_pc): New function.
-	(aarch64_breakpoint_kind_from_current_state): New function.
-	(the_low_target): Initialize fields breakpoint_kind_from_pc
-	and breakpoint_kind_from_current_state.
-	* linux-arm-low.c (arm_breakpoint_kinds): Move to
-	linux-aarch32-low.c.
-	(arm_abi_breakpoint, arm_eabi_breakpoint): Likewise.
-	(arm_breakpoint, arm_breakpoint_len): Likewise.
-	(thumb_breakpoint, thumb_breakpoint_len): Likewise.
-	(thumb2_breakpoint, thumb2_breakpoint_len): Likewise.
-	(arm_is_thumb_mode): Likewise.
-	(arm_breakpoint_at): Likewise.
-	(arm_breakpoint_kind_from_pc): Likewise.
-	(arm_sw_breakpoint_from_kind): Likewise.
-	(arm_breakpoint_kind_from_current_state): Likewise.
-
-	Revert:
-	2015-08-04  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_supports_z_point_type): Return
-	0 for Z_PACKET_SW_BP if it may be used in multi-arch debugging.
-	* server.c (extended_protocol): Remove "static".
-	* server.h (extended_protocol): Declare it.
-
-2015-12-04  Josh Stone  <jistone@redhat.com>
-
-	* target.h (struct target_ops) <arch_setup>: Rename to ...
-	(struct target_ops) <post_create_inferior>: ... this.
-	(target_arch_setup): Rename to ...
-	(target_post_create_inferior): ... this, calling post_create_inferior.
-	* server.c (start_inferior): Update target_arch_setup calls to
-	target_post_create_inferior.
-	* linux-low.c (linux_low_ptrace_options): Forward declare.
-	(linux_arch_setup): Update its comment for general use.
-	(linux_post_create_inferior): New, run arch_setup and setup ptrace.
-	(struct linux_target_ops): Use linux_post_create_inferior.
-	* lynx-low.c (struct lynx_target_ops): Update arch_setup stub comment
-	to post_create_inferior.
-	* nto-low.c (struct nto_target_ops): Likewise.
-	* spu-low.c (struct spu_target_ops): Likewise.
-	* win32-low.c (struct win32_target_ops): Likewise.
-
-2015-12-03  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-arm-low.c: Remove duplicate arch/arm.h include.
-
-2015-11-30  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-arm-low.c (arm_reinsert_addr): Remove function.
-	(struct linux_target_ops <breakpoint_reinsert_addr>: Set to NULL.
-	* linux-cris-low.c (cris_reinsert_addr> Remove function.
-	(struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
-	* linux-crisv32-low.c (cris_reinsert_addr): Remove function.
-	(struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
-	* linux-mips-low.c (mips_reinsert_addr): Remove function.
-	(struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
-	* linux-nios2-low.c (nios2_reinsert_addr): Remove function.
-	(struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
-	* linux-sparc-low.c (sparc_reinsert_addr): Remove function.
-	(struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
-
-2015-11-30  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-low.c (linux_look_up_symbols): Don't call
-	linux_supports_traceclone.
-	* linux-low.h (thread_db_init): Remove use_events argument.
-	* thread-db.c (thread_db_use_event): Remove global variable.
-	(struct thread_db) <td_thr_event_enable_p>: Remove field.
-	(struct thread_db) <td_create_bp>: Remove field.
-	(thread_db_create_event): Remove function.
-	(thread_db_enable_reporting): Likewise.
-	(find_one_thread): Don't check for thread_db_use_events.
-	(attach_thread): Likewise.
-	(thread_db_load_search): Remove td_thr_event_enable_p initialization.
-	(try_thread_db_load_1): Don't check for thread_db_use_events.
-	(thread_db_init): Remove use_events argument and thread events
-	handling.
-	(remove_thread_event_breakpoints): Remove function.
-	(thread_db_detach): Remove call to remove_thred_event_breakpoints.
-
-2015-11-30  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-aarch64-low.c (aarch64_supports_hardware_single_step):
-	New function.
-	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
-	* linux-arm-low.c (arm_supports_hardware_single_step): New function.
-	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
-	* linux-bfin-low.c (bfin_supports_hardware_single_step): New function.
-	(struct linux_target_ops) <bfin_supports_hardware_single_step>:
-	Initialize.
-	* linux-crisv32-low.c (cris_supports_hardware_single_step):
-	New function.
-	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
-	* linux-low.c (can_hardware_single_step): Use
-	supports_hardware_single_step.
-	(can_software_single_step): New function.
-	(start_step_over): Call can_software_single_step.
-	(linux_supports_hardware_single_step): New function.
-	(struct target_ops) <supports_software_single_step>: Initialize.
-	* linux-low.h (struct linux_target_ops)
-	<supports_hardware_single_step>: Initialize.
-	* linux-m32r-low.c (m32r_supports_hardware_single_step): New function.
-	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
-	* linux-ppc-low.c (ppc_supports_hardware_single_step): New function.
-	(struct linux_target_ops) <supports_hardware_single_step> Initialize.
-	* linux-s390-low.c (s390_supports_hardware_single_step): New function.
-	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
-	* linux-sh-low.c (sh_supports_hardware_single_step): New function.
-	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
-	* linux-tic6x-low.c (tic6x_supports_hardware_single_step): New function.
-	(struct linux_target_ops) <tic6x_supports_hardware_single_step>:
-	Initialize.
-	* linux-tile-low.c (tile_supports_hardware_single_step): New function.
-	(struct linux_target_ops) <tile_supports_hardware_single_step>:
-	Initialize.
-	* linux-x86-low.c (x86_supports_hardware_single_step) New function.
-	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
-	* linux-xtensa-low.c (xtensa_supports_hardware_single_step):
-	New function.
-	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
-	* target.h (struct target_ops): <supports_software_single_step>:
-	New field.
-	(target_supports_software_single_step): New macro.
-
-2015-11-30  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-low.c (linux_wait_1): Fix pc advance condition.
-	* mem-break.c (reinsert_breakpoint_inserted_here): New function.
-	* mem-break.h (reinsert_breakpoint_inserted_here): New declaration.
-
-2015-11-30  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-arm-low.c (arm_is_thumb_mode): New function.
-	(arm_breakpoint_at): Use arm_is_thumb_mode.
-	(arm_breakpoint_kind_from_current_state): New function.
-	(struct linux_target_ops) <breakpoint_kind_from_current_state>:
-	Initialize.
-	* linux-low.c (linux_wait_1): Call breakpoint_kind_from_current_state.
-	(linux_breakpoint_kind_from_current_state): New function.
-	(struct target_ops <breakpoint_kind_from_current_state>: Initialize.
-	* linux-low.h (struct linux_target_ops)
-	<breakpoint_kind_from_current_state>: New field.
-	* target.h (struct target_ops): Likewise.
-	(target_breakpoint_kind_from_current_state): New macro.
-
-2015-11-30  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_resume): Wake up the event loop before
-	returning.
-
-2015-11-30  Pedro Alves  <palves@redhat.com>
-
-	* mem-break.c (check_gdb_bp_preconditions): Remove current_thread
-	check.
-	(set_gdb_breakpoint): If prepare_to_access_memory fails, set *ERR
-	to -1.
-	* target.c (struct thread_search): New structure.
-	(thread_search_callback): New function.
-	(prev_general_thread): New global.
-	(prepare_to_access_memory, done_accessing_memory): New functions.
-	* target.h (prepare_to_access_memory, done_accessing_memory):
-	Replace macros with function declarations.
-
-2015-11-30  Pedro Alves  <palves@redhat.com>
-
-	PR 14618
-	* linux-low.c (linux_wait_1): If the last resumed thread is gone,
-	report TARGET_WAITKIND_NO_RESUMED.
-	* remote-utils.c (prepare_resume_reply): Handle
-	TARGET_WAITKIND_NO_RESUMED.
-	* server.c (report_no_resumed): New global.
-	(handle_query) <qSupported>: Handle "no-resumed+".  Report
-	"no-resumed+" support.
-	(resume): When the target reports TARGET_WAITKIND_NO_RESUMED, only
-	return error if the client doesn't support no-resumed events.
-	(push_stop_notification): New function.
-	(handle_target_event): Use it.  Report TARGET_WAITKIND_NO_RESUMED
-	events if the client supports them.
-
-2015-11-30  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (thread_still_has_status_pending_p): Don't check
-	vCont;t here.
-	(lwp_resumed): New function.
-	(status_pending_p_callback): Return early if the LWP is not
-	supposed to be resumed.
-
-2015-11-30  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (handle_extended_wait): Assert that the LWP's
-	waitstatus is TARGET_WAITKIND_IGNORE.  If GDB wants to hear about
-	thread create events, leave the new child's status pending.
-	(linux_low_filter_event): If GDB wants to hear about thread exit
-	events, leave the LWP marked dead and don't delete it.
-	(linux_wait_for_event_filtered): Don't check for thread exit.
-	(filter_exit_event): New function.
-	(linux_wait_1): Use it, when returning an exit event.
-	(linux_resume_one_lwp_throw): Assert that the LWP's
-	waitstatus is TARGET_WAITKIND_IGNORE.
-	* remote-utils.c (prepare_resume_reply): Handle
-	TARGET_WAITKIND_THREAD_CREATED and TARGET_WAITKIND_THREAD_EXITED.
-	* server.c (report_thread_events): New global.
-	(handle_general_set): Handle QThreadEvents.
-	(handle_query) <qSupported>: Handle and report QThreadEvents+;
-	(handle_target_event): Handle TARGET_WAITKIND_THREAD_CREATED and
-	TARGET_WAITKIND_THREAD_EXITED.
-	* server.h (report_thread_events): Declare.
-
-2015-11-30  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (resume_stopped_resumed_lwps): Don't check whether
-	the thread's last_resume_kind was resume_stop.
-
-2015-11-30  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_attach): In non-stop mode, wait for one stop
-	before returning.
-
-2015-11-30  Pedro Alves  <palves@redhat.com>
-
-	* server.c (handle_v_requests): Handle vCtrlC.
-
-2015-11-30  Pedro Alves  <palves@redhat.com>
-
-	* gdbthread.h (find_any_thread_of_pid): Declare.
-	* inferiors.c (thread_of_pid, find_any_thread_of_pid): New
-	functions.
-	* server.c (handle_query): If current_thread is NULL, look for
-	another thread of the selected process.
-
-2015-11-26  Daniel Colascione  <dancol@dancol.org>
-	    Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-low.c (linux_target_ops): Use linux_proc_tid_get_name.
-	* server.c (handle_qxfer_threads_worker): Refactor to include thread
-	name in reply.
-	* target.h (struct target_ops) <thread_name>: New field.
-	(target_thread_name): New macro.
-
-2015-11-23  Joel Brobecker  <brobecker@adacore.com>
-
-	* regcache.h (regcache_invalidate_pid): Add declaration.
-	* regcache.c (regcache_invalidate_pid): New function, extracted
-	from regcache_invalidate.
-	(regcache_invalidate): Reimplement using regcache_invalidate_pid.
-	Add trivial documentation comment.
-	* lynx-low.c: Use regcache_invalidate_pid instead of
-	regcache_invalidate.
-
-2015-11-23  Joel Brobecker  <brobecker@adacore.com>
-
-	* configure.ac: Do not call AC_CHECK_TYPES for Elf32_auxv_t
-	and Elf64_auxv_t if the target is Android.
-
-2015-11-22  Doug Evans  <xdje42@gmail.com>
-
-	* target.h: #include <sys/types.h>.
-
-2015-11-19  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_process_qsupported): Change prototype.
-	Adjust.
-	* linux-low.h (struct linux_target_ops) <process_qsupported>:
-	Change prototype.
-	* linux-x86-low.c (x86_linux_process_qsupported): Change prototype
-	and adjust to loop over all features.
-	* server.c (handle_query) <qSupported>: Adjust to call
-	target_process_qsupported once, passing it a vector of unprocessed
-	features.
-	* target.h (struct target_ops) <process_qsupported>: Change
-	prototype.
-	(target_process_qsupported): Adjust.
-
-2015-11-19  Pedro Alves  <palves@redhat.com>
-
-	* configure.ac (ERROR_ON_WARNING): Don't check whether in C++
-	mode.
-	* configure: Regenerate.
-
-2015-11-19  Pedro Alves  <palves@redhat.com>
-
-	* configure: Regenerate.
-
-2015-11-19  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (emit_data_processing_reg): Change opcode
-	type to uint32_t.
-
-2015-11-19  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (enum aarch64_operand_type): New.
-	(struct aarch64_operand): Move enum out.
-
-2015-11-19  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_fill_fpregset): Cast buf to
-	struct user_fpsimd_state *.
-	(aarch64_store_fpregset): Likewise.
-
-2015-11-19  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_fill_gregset): Cast buf to
-	struct user_pt_regs *.
-	(aarch64_store_gregset): Likewise.
-
-2015-11-18  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (all_object_files): Add $IPA_OBJS.
-
-2015-11-17  Pedro Alves  <palves@redhat.com>
-
-	* win32-low.c (win32_resume): Use gdb_signal_from_host,
-	GDB_SIGNAL_0 and gdb_signal_to_string.
-
-2015-11-17  Pedro Alves  <palves@redhat.com>
-
-	* win32-low.c (handle_output_debug_string): Remove parameter.
-	(win32_kill): Remove our_status local and adjust call to
-	handle_output_debug_string.
-	(get_child_debug_event): Adjust call to
-	handle_output_debug_string.
-
-2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-mips-low.c (mips_fill_gregset): Add cast.
-	(mips_store_gregset): Likewise.
-	(mips_fill_fpregset): Likewise.
-	(mips_store_fpregset): Likewise.
-
-2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-mips-low.c (mips_add_watchpoint): Rename private to
-	priv.
-
-2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-mips-low.c (mips_linux_new_thread): Change type of
-	watch_type to enum target_hw_bp_type.
-
-2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
-
-		* linux-arm-low.c (raw_bkpt_type_to_arm_hwbp_type):
-		Change return type to arm_hwbp_type.
-
-2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-aarch32-low.c (arm_fill_gregset): Add cast.
-	(arm_store_gregset): Likewise.
-	* linux-arm-low.c (arm_get_hwcap): Likewise.
-	(arm_read_description): Likewise.
-
-2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-aarch32-low.c (aarch32_regsets): Use NULL_REGSET.
-
-2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-ppc-low.c (ppc_get_hwcap): Add cast.
-	(ppc_fill_vsxregset): Likewise.
-	(ppc_store_vsxregset): Likewise.
-	(ppc_fill_vrregset): Likewise.
-	(ppc_store_vrregset): Likewise.
-	(ppc_fill_evrregset): Likewise.
-	(ppc_store_evrregset): Likewise.
-
-2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* linux-ppc-low.c (ppc_usrregs_info): Remove
-	forward-declaration.
-	(ppc_arch_setup): Move lower in file.
-
-2015-10-30  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* proc-service.c (ps_pdread): Change CORE_ADDR cast to uintptr_t.
-	(ps_pdwrite): Likewise.
-
-2015-10-29 Henrik Wallin <henrik.wallin@windriver.com>
-
-	* linux-arm-low.c (arm_new_thread): Move pointer dereference
-	to after assert checks.
-
-2015-10-29  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* proc-service.c (ps_pdread): Add/adjust casts.
-	(ps_pdwrite): Add/adjust casts.
-
-2015-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* server.c (handle_search_memory_1): Cast return value of
-	memmem.
-
-2015-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* server.c (write_qxfer_response): Change type of data to
-	gdb_byte *.
-
-2015-10-29  Pedro Alves  <palves@redhat.com>
-
-	* mem-break.c (Z_packet_to_bkpt_type): Add cast.
-
-2015-10-29  Pedro Alves  <palves@redhat.com>
-
-	* tracepoint.c (clear_installed_tracepoints): Add casts.
-
-2015-10-29  Pedro Alves  <palves@redhat.com>
-
-	* server.c (handle_v_cont, process_serial_event): Add enum
-	gdb_signal casts to signal parsing code.
-
-2015-10-29  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.h (NULL_REGSET): Define.
-	* linux-aarch64-low.c (aarch64_regsets): Use NULL_REGSET.
-	* linux-arm-low.c (arm_regsets): Likewise.
-	* linux-crisv32-low.c (cris_regsets): Likewise.
-	* linux-m68k-low.c (m68k_regsets): Likewise.
-	* linux-mips-low.c (mips_regsets): Likewise.
-	* linux-nios2-low.c (nios2_regsets): Likewise.
-	* linux-ppc-low.c (ppc_regsets): Likewise.
-	* linux-s390-low.c (s390_regsets): Likewise.
-	* linux-sh-low.c (sh_regsets): Likewise.
-	* linux-sparc-low.c (sparc_regsets): Likewise.
-	* linux-tic6x-low.c (tic6x_regsets): Likewise.
-	* linux-tile-low.c (tile_regsets): Likewise.
-	* linux-x86-low.c (x86_regsets): Likewise.
-	* linux-xtensa-low.c (xtensa_regsets): Likewise.
-
-2015-10-29  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.h (NULL_REGSET): Define.
-	* linux-aarch64-low.c (aarch64_regsets): Use NULL_REGSET.
-	* linux-arm-low.c (arm_regsets): Likewise.
-	* linux-crisv32-low.c (cris_regsets): Likewise.
-	* linux-m68k-low.c (m68k_regsets): Likewise.
-	* linux-mips-low.c (mips_regsets): Likewise.
-	* linux-nios2-low.c (nios2_regsets): Likewise.
-	* linux-ppc-low.c (ppc_regsets): Likewise.
-	* linux-s390-low.c (s390_regsets): Likewise.
-	* linux-sh-low.c (sh_regsets): Likewise.
-	* linux-sparc-low.c (sparc_regsets): Likewise.
-	* linux-tic6x-low.c (tic6x_regsets): Likewise.
-	* linux-tile-low.c (tile_regsets): Likewise.
-	* linux-x86-low.c (x86_regsets): Likewise.
-	* linux-xtensa-low.c (xtensa_regsets): Likewise.
-
-2015-10-26  Doug Evans  <dje@google.com>
-
-	* linux-low.c (__SIGRTMIN): Move to nat/linux-nat.h.
-
-2015-10-26  Doug Evans  <dje@google.com>
-
-	* linux-low.c (W_STOPCODE): Moved to common/gdb_wait.h.
-
-2015-10-26  Doug Evans  <dje@google.com>
-
-	* thread-db.c (find_one_thread): Cast ti.ti_tid to unsigned long
-	for debug_printf.
-	(attach_thread, find_new_threads_callback): Ditto.
-
-2015-10-23  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* mem-break.h (set_breakpoint_data): Remove.
-
-2015-10-23  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* nto-low.c (nto_sw_breakpoint_from_kind): New function.
-	(struct target_ops) <sw_breakpoint_from_kind>: Initialize.
-	(initialize_low): Remove set_breakpoint_data call.
-	* spu-low.c (spu_sw_breakpoint_from_kind): New function.
-	(struct target_ops) <sw_breakpoint_from_kind>: Iniitalize.
-	(initialize_low): Remove set_breakpoint_data call.
-	* win32-low.c (win32_sw_breakpoint_from_kind): New function.
-	(struct target_ops) <sw_breakpoint_from_kind>: Initialize.
-	(initialize_low): Remove set_breakpoint_data call.
-
-2015-10-23  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-low.c (default_breakpoint_kind_from_pc): Move to target.c.
-	* mem-break.c (set_breakpoint_at): Use target_breakpoint_kind_from_pc.
-	* target.c (default_breakpoint_kind_from_pc): Moved from linux-low.c
-	* target.h (target_breakpoint_kind_from_pc): New macro.
-
-2015-10-22  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-low.c (default_breakpoint_kind_from_pc): New function.
-	(linux_breakpoint_kind_from_pc): Use default_breakpoint_kind_from_pc for
-	the default breakpoint kind.
-
-2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-arm-low.c (arm_supports_z_point_type): Add software
-	breakpoint support.
-
-2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-arm-low.c: Refactor breakpoint definitions.
-	(arm_breakpoint_at): Adjust for arm_abi_breakpoint.
-	(arm_sw_breakpoint_from_kind): Adjust for arm_breakpoint.
-
-2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* Makefile.in: Add arm.c/o.
-	* configure.srv: Likewise.
-	* linux-arm-low.c (arm_breakpoint_kinds): New enum.
-	(arm_breakpoint_kind_from_pc): New function.
-	(arm_sw_breakpoint_from_kind): Return proper kind.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize.
-
-2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-low.c (initialize_low): Ajdust for breakpoint global variables
-	removal.
-	* mem-break.c : Remove breakpoint_data/breakpoint_len global variables.
-	(struct raw_breakpoint) <size>: Remove.
-	(struct raw_breakpoint) <kind>: Add.
-	(bp_size): New function.
-	(bp_opcode): Likewise.
-	(find_raw_breakpoint_at): Adjust for kind.
-	(insert_memory_breakpoint): Adjust for kind call bp_size,bp_opcode.
-	(remove_memory_breakpoint): Adjust for kind call bp_size.
-	(set_raw_breakpoint_at): Adjust for kind.
-	(set_breakpoint): Likewise.
-	(set_breakpoint_at): Call breakpoint_kind_from_pc.
-	(delete_raw_breakpoint): Adjust for kind.
-	(delete_breakpoint): Likewise.
-	(find_gdb_breakpoint): Likewise.
-	(set_gdb_breakpoint_1): Likewise.
-	(set_gdb_breakpoint): Likewise.
-	(delete_gdb_breakpoint_1): Likewise.
-	(delete_gdb_breakpoint): Likewise.
-	(uninsert_raw_breakpoint): Likewise.
-	(reinsert_raw_breakpoint): Likewise.
-	(set_breakpoint_data): Remove.
-	(validate_inserted_breakpoint): Adjust for kind call bp_size,bp_opcode.
-	(check_mem_read): Adjust for kind call bp_size.
-	(check_mem_write): Adjust for kind call bp_size,bp_opcode.
-	(clone_one_breakpoint): Adjust for kind.
-	* mem-break.h (set_gdb_breakpoint): Likewise.
-	(delete_gdb_breakpoint): Likewise.
-	* server.c (process_serial_event): Likewise.
-
-2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-aarch64-low.c (aarch64_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-arm-low.c (arm_breakpoint_kind_from_pc): New function.
-	(arm_sw_breakpoint_from_kind): New function.
-	* linux-bfin-low.c (bfin_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-cris-low.c (cris_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-crisv32-low.c (cris_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-low.c (linux_wait_1): Call breakpoint_kind_from_pc
-	and sw_breakpoint_from_kind to increment the pc.
-	(linux_breakpoint_kind_from_pc): New function.
-	(linux_sw_breakpoint_from_kind): New function.
-	(struct target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	(initialize_low): Call breakpoint_kind_from_pc and
-	sw_breakpoint_from_kind to replace breakpoint_data/len.
-	* linux-low.h (struct linux_target_ops) <breakpoint_kind_from_pc>:
-	New field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Likewise.
-	* linux-m32r-low.c (m32r_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-m68k-low.c (m68k_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-mips-low.c (mips_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-nios2-low.c (nios2_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-ppc-low.c (ppc_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-s390-low.c (s390_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-sh-low.c (sh_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-sparc-low.c (sparc_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-tic6x-low.c (tic6x_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-tile-low.c (tile_sw_breakpoint_from_kind): New function.
-	* linux-x86-low.c (x86_sw_breakpoint_from_kind): New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-	* linux-xtensa-low.c (xtensa_sw_breakpoint_from_kind) New function.
-	(struct linux_target_ops) <breakpoint>: Remove.
-	(struct linux_target_ops) <breakpoint_len>: Remove.
-	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
-	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
-
-2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	* linux-cris-low.c (cris_get_pc): Remove void arg.
-
-2015-10-16  Aleksandar Ristovski  <aristovski@qnx.com>
-
-	* gdbserver/nto-low.c (nto_insert_point, nto_remove_point): Fix
-	variable name.
-
-2015-10-16  Aleksandar Ristovski  <aristovski@qnx.com>
-
-	* inferiors.c (thread_pid_matches_callback): New function.
-	(find_thread_process): New function.
-	(remove_thread): Reset current_thread.
-	(remove_process): Assert threads have been removed first.
-
-2015-10-15  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_insert_point): Set len to 2
-	if it is 3.
-	(aarch64_remove_point): Likewise.
-	* regcache.c (regcache_register_size): New function.
-
-2015-10-12  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c: Update all callers as emit_load_store
-	is renamed to aarch64_emit_load_store.
-
-2015-10-12  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c: Update all callers of function renaming
-	from emit_insn to aarch64_emit_insn.
-
-2015-10-12  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (enum aarch64_opcodes): Move to
-	arch/aarch64-insn.h.
-	(struct aarch64_memory_operand): Likewise.
-	(ENCODE): Likewise.
-	(emit_insn): Move to arch/aarch64-insn.c.
-	(emit_b, emit_bcond, emit_cb, emit_tb): Remove.
-	(emit_load_store): Move to arch/aarch64-insn.c.
-	(emit_ldr, emit_ldrb, emit_ldrsw, emit_nop): Remove.
-	(can_encode_int32): Remove.
-
-2015-10-12  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (extract_signed_bitfield): Remove.
-	(aarch64_decode_ldr_literal): Move to gdb/arch/aarch64-insn.c.
-	(aarch64_relocate_instruction): Likewise.
-	(struct aarch64_insn_data): Move to gdb/arch/aarch64-insn.h.
-	(struct aarch64_insn_visitor): Likewise.
-
-2015-10-12  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (struct aarch64_insn_data): New.
-	(struct aarch64_insn_visitor): New.
-	(struct aarch64_insn_relocation_data): New.
-	(aarch64_ftrace_insn_reloc_b): New function.
-	(aarch64_ftrace_insn_reloc_b_cond): Likewise.
-	(aarch64_ftrace_insn_reloc_cb): Likewise.
-	(aarch64_ftrace_insn_reloc_tb): Likewise.
-	(aarch64_ftrace_insn_reloc_adr): Likewise.
-	(aarch64_ftrace_insn_reloc_ldr_literal): Likewise.
-	(aarch64_ftrace_insn_reloc_others): Likewise.
-	(visitor): New.
-	(aarch64_relocate_instruction): Use visitor.
-
-2015-10-12  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_relocate_instruction): Return
-	int.  Add argument buf.
-	(aarch64_install_fast_tracepoint_jump_pad): Pass buf to
-	aarch64_relocate_instruction.
-
-2015-10-12  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_relocate_instruction): Add
-	argument insn.  Remove local variable insn.  Don't call
-	target_read_uint32.
-	(aarch64_install_fast_tracepoint_jump_pad): Call
-	target_read_uint32.
-
-2015-09-30  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (emit_movk): Shorten a long line.
-	(emit_load_store_pair): Likewise.
-
-2015-09-25  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* dll.c (match_dll): Add cast(s).
-	(unloaded_dll): Likewise.
-	* linux-low.c (second_thread_of_pid_p): Likewise.
-	(delete_lwp_callback): Likewise.
-	(count_events_callback): Likewise.
-	(select_event_lwp_callback): Likewise.
-	(linux_set_resume_request): Likewise.
-	* server.c (accumulate_file_name_length): Likewise.
-	(emit_dll_description): Likewise.
-	(handle_qxfer_threads_worker): Likewise.
-	(visit_actioned_threads): Likewise.
-	* thread-db.c (any_thread_of): Likewise.
-	* tracepoint.c (same_process_p): Likewise.
-	(match_blocktype): Likewise.
-	(build_traceframe_info_xml): Likewise.
-
-2015-09-25  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* ax.c (gdb_parse_agent_expr): Add cast to allocation result
-	assignment.
-	(gdb_unparse_agent_expr): Likewise.
-	* hostio.c (require_data): Likewise.
-	(handle_pread): Likewise.
-	* linux-low.c (disable_regset): Likewise.
-	(fetch_register): Likewise.
-	(store_register): Likewise.
-	(get_dynamic): Likewise.
-	(linux_qxfer_libraries_svr4): Likewise.
-	* mem-break.c (delete_fast_tracepoint_jump): Likewise.
-	(set_fast_tracepoint_jump): Likewise.
-	(uninsert_fast_tracepoint_jumps_at): Likewise.
-	(reinsert_fast_tracepoint_jumps_at): Likewise.
-	(validate_inserted_breakpoint): Likewise.
-	(clone_agent_expr): Likewise.
-	* regcache.c (init_register_cache): Likewise.
-	* remote-utils.c (putpkt_binary_1): Likewise.
-	(decode_M_packet): Likewise.
-	(decode_X_packet): Likewise.
-	(look_up_one_symbol): Likewise.
-	(relocate_instruction): Likewise.
-	(monitor_output): Likewise.
-	* server.c (handle_search_memory): Likewise.
-	(handle_qxfer_exec_file): Likewise.
-	(handle_qxfer_libraries): Likewise.
-	(handle_qxfer): Likewise.
-	(handle_query): Likewise.
-	(handle_v_cont): Likewise.
-	(handle_v_run): Likewise.
-	(captured_main): Likewise.
-	* target.c (write_inferior_memory): Likewise.
-	* thread-db.c (try_thread_db_load_from_dir): Likewise.
-	* tracepoint.c (init_trace_buffer): Likewise.
-	(add_tracepoint_action): Likewise.
-	(add_traceframe): Likewise.
-	(add_traceframe_block): Likewise.
-	(cmd_qtdpsrc): Likewise.
-	(cmd_qtdv): Likewise.
-	(cmd_qtstatus): Likewise.
-	(response_source): Likewise.
-	(response_tsv): Likewise.
-	(cmd_qtnotes): Likewise.
-	(gdb_collect): Likewise.
-	(initialize_tracepoint): Likewise.
-
-2015-09-21  Pierre Langlois  <pierre.langlois@arm.com>
-
-	* linux-aarch64-low-.c: Include ax.h and tracepoint.h.
-	(enum aarch64_opcodes) <RET>, <SUBS>, <AND>, <ORR>, <ORN>,
-	<EOR>, <LSLV>, <LSRV>, <ASRV>, <SBFM>, <UBFM>, <CSINC>, <MUL>,
-	<NOP>: New.
-	(enum aarch64_condition_codes): New enum.
-	(w0): New static global.
-	(fp): Likewise.
-	(lr): Likewise.
-	(struct aarch64_memory_operand) <type>: New
-	MEMORY_OPERAND_POSTINDEX type.
-	(postindex_memory_operand): New helper function.
-	(emit_ret): New function.
-	(emit_load_store_pair): New function, factored out of emit_stp
-	with support for MEMORY_OPERAND_POSTINDEX.
-	(emit_stp): Rewrite using emit_load_store_pair.
-	(emit_ldp): New function.
-	(emit_load_store): Likewise.
-	(emit_ldr): Mention post-index instruction in comment.
-	(emit_ldrh): New function.
-	(emit_ldrb): New function.
-	(emit_ldrsw): Mention post-index instruction in comment.
-	(emit_str): Likewise.
-	(emit_subs): New function.
-	(emit_cmp): Likewise.
-	(emit_and): Likewise.
-	(emit_orr): Likewise.
-	(emit_orn): Likewise.
-	(emit_eor): Likewise.
-	(emit_mvn): Likewise.
-	(emit_lslv): Likewise.
-	(emit_lsrv): Likewise.
-	(emit_asrv): Likewise.
-	(emit_mul): Likewise.
-	(emit_sbfm): Likewise.
-	(emit_sbfx): Likewise.
-	(emit_ubfm): Likewise.
-	(emit_ubfx): Likewise.
-	(emit_csinc): Likewise.
-	(emit_cset): Likewise.
-	(emit_nop): Likewise.
-	(emit_ops_insns): New helper function.
-	(emit_pop): Likewise.
-	(emit_push): Likewise.
-	(aarch64_emit_prologue): New function.
-	(aarch64_emit_epilogue): Likewise.
-	(aarch64_emit_add): Likewise.
-	(aarch64_emit_sub): Likewise.
-	(aarch64_emit_mul): Likewise.
-	(aarch64_emit_lsh): Likewise.
-	(aarch64_emit_rsh_signed): Likewise.
-	(aarch64_emit_rsh_unsigned): Likewise.
-	(aarch64_emit_ext): Likewise.
-	(aarch64_emit_log_not): Likewise.
-	(aarch64_emit_bit_and): Likewise.
-	(aarch64_emit_bit_or): Likewise.
-	(aarch64_emit_bit_xor): Likewise.
-	(aarch64_emit_bit_not): Likewise.
-	(aarch64_emit_equal): Likewise.
-	(aarch64_emit_less_signed): Likewise.
-	(aarch64_emit_less_unsigned): Likewise.
-	(aarch64_emit_ref): Likewise.
-	(aarch64_emit_if_goto): Likewise.
-	(aarch64_emit_goto): Likewise.
-	(aarch64_write_goto_address): Likewise.
-	(aarch64_emit_const): Likewise.
-	(aarch64_emit_call): Likewise.
-	(aarch64_emit_reg): Likewise.
-	(aarch64_emit_pop): Likewise.
-	(aarch64_emit_stack_flush): Likewise.
-	(aarch64_emit_zero_ext): Likewise.
-	(aarch64_emit_swap): Likewise.
-	(aarch64_emit_stack_adjust): Likewise.
-	(aarch64_emit_int_call_1): Likewise.
-	(aarch64_emit_void_call_2): Likewise.
-	(aarch64_emit_eq_goto): Likewise.
-	(aarch64_emit_ne_goto): Likewise.
-	(aarch64_emit_lt_goto): Likewise.
-	(aarch64_emit_le_goto): Likewise.
-	(aarch64_emit_gt_goto): Likewise.
-	(aarch64_emit_ge_got): Likewise.
-	(aarch64_emit_ops_impl): New static global variable.
-	(aarch64_emit_ops): New target function, return
-	&aarch64_emit_ops_impl.
-	(struct linux_target_ops): Install it.
-
-2015-09-21  Pierre Langlois  <pierre.langlois@arm.com>
-
-	* Makefile.in (linux-aarch64-ipa.o, aarch64-ipa.o): New rules.
-	* configure.srv (aarch64*-*-linux*): Add linux-aarch64-ipa.o and
-	aarch64-ipa.o.
-	* linux-aarch64-ipa.c: New file.
-	* linux-aarch64-low.c: Include arch/aarch64-insn.h, inttypes.h
-	and endian.h.
-	(aarch64_get_thread_area): New target method.
-	(extract_signed_bitfield): New helper function.
-	(aarch64_decode_ldr_literal): New function.
-	(enum aarch64_opcodes): New enum.
-	(struct aarch64_register): New struct.
-	(struct aarch64_operand): New struct.
-	(x0): New static global.
-	(x1): Likewise.
-	(x2): Likewise.
-	(x3): Likewise.
-	(x4): Likewise.
-	(w2): Likewise.
-	(ip0): Likewise.
-	(sp): Likewise.
-	(xzr): Likewise.
-	(aarch64_register): New helper function.
-	(register_operand): Likewise.
-	(immediate_operand): Likewise.
-	(struct aarch64_memory_operand): New struct.
-	(offset_memory_operand): New helper function.
-	(preindex_memory_operand): Likewise.
-	(enum aarch64_system_control_registers): New enum.
-	(ENCODE): New macro.
-	(emit_insn): New helper function.
-	(emit_b): New function.
-	(emit_bcond): Likewise.
-	(emit_cb): Likewise.
-	(emit_tb): Likewise.
-	(emit_blr): Likewise.
-	(emit_stp): Likewise.
-	(emit_ldp_q_offset): Likewise.
-	(emit_stp_q_offset): Likewise.
-	(emit_load_store): Likewise.
-	(emit_ldr): Likewise.
-	(emit_ldrsw): Likewise.
-	(emit_str): Likewise.
-	(emit_ldaxr): Likewise.
-	(emit_stxr): Likewise.
-	(emit_stlr): Likewise.
-	(emit_data_processing_reg): Likewise.
-	(emit_data_processing): Likewise.
-	(emit_add): Likewise.
-	(emit_sub): Likewise.
-	(emit_mov): Likewise.
-	(emit_movk): Likewise.
-	(emit_mov_addr): Likewise.
-	(emit_mrs): Likewise.
-	(emit_msr): Likewise.
-	(emit_sevl): Likewise.
-	(emit_wfe): Likewise.
-	(append_insns): Likewise.
-	(can_encode_int32_in): New helper function.
-	(aarch64_relocate_instruction): New function.
-	(aarch64_install_fast_tracepoint_jump_pad): Likewise.
-	(aarch64_get_min_fast_tracepoint_insn_len): Likewise.
-	(struct linux_target_ops): Install aarch64_get_thread_area,
-	aarch64_install_fast_tracepoint_jump_pad and
-	aarch64_get_min_fast_tracepoint_insn_len.
-
-2015-09-21  Pierre Langlois  <pierre.langlois@arm.com>
-
-	* Makefile.in (aarch64-insn.o): New rule.
-	* configure.srv (aarch64*-*-linux*): Add aarch64-insn.o.
-
-2015-09-21  Yao Qi  <yao.qi@linaro.org>
-
-	* ax.c [!IN_PROCESS_AGENT] (gdb_agent_op_sizes): Define it.
-
-2015-09-21  Yao Qi  <yao.qi@linaro.org>
-
-	* tracepoint.c (max_jump_pad_size): Remove.
-
-2015-09-18  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c: Don't include sys/uio.h.
-	(ps_get_thread_area): Call aarch64_ps_get_thread_area.
-
-2015-09-16  Wei-cheng Wang  <cole945@gmail.com>
-
-	* tracepoint.c (eval_result_type): Change prototype.
-	(condition_true_at_tracepoint): Fix argument to compiled_cond.
-
-2015-09-15  Pedro Alves  <palves@redhat.com>
-
-	* remote-utils.c (prepare_resume_reply) <TARGET_WAITKIND_EXECD>:
-	Check whether to report exec events instead of checking whether
-	multiprocess is enabled.
-
-2015-09-15  Pedro Alves  <palves@redhat.com>
-
-	PR remote/18965
-	* remote-utils.c (prepare_resume_reply): Merge
-	TARGET_WAITKIND_VFORK_DONE switch case with the
-	TARGET_WAITKIND_FORKED case.
-
-2015-09-15  Yao Qi  <yao.qi@linaro.org>
-
-	* server.c (handle_query): Check string comparison using
-	"else if" instead of "if".
-
-2015-09-15  Yao Qi  <yao.qi@linaro.org>
-
-	* server.c (vCont_supported): New global variable.
-	(handle_query): Set vCont_supported to 1 if "vContSupported+"
-	matches.  Append ";vContSupported+" to own_buf.
-	(handle_v_requests): Append ";s;S" to own_buf if target supports
-	hardware single step or vCont_supported is false.
-	(capture_main): Set vCont_supported to zero.
-
-2015-09-15  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_supports_conditional_breakpoints): Rename
-	it to ...
-	(linux_supports_hardware_single_step): ... New function.
-	(linux_target_ops): Update.
-	* lynx-low.c (lynx_target_ops): Set field
-	supports_hardware_single_step to target_can_do_hardware_single_step.
-	* nto-low.c (nto_target_ops): Likewise.
-	* spu-low.c (spu_target_ops): Likewise.
-	* win32-low.c (win32_target_ops): Likewise.
-	* target.c (target_can_do_hardware_single_step): New function.
-	* target.h (struct target_ops) <supports_conditional_breakpoints>:
-	Remove.  <supports_hardware_single_step>: New field.
-	(target_supports_conditional_breakpoints): Remove.
-	(target_supports_hardware_single_step): New macro.
-	(target_can_do_hardware_single_step): Declare.
-	* server.c (handle_query): Use target_supports_hardware_single_step
-	instead of target_supports_conditional_breakpoints.
-
-2015-09-15  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_linux_siginfo_fixup): New
-	function.
-	(struct linux_target_ops the_low_target): Install
-	aarch64_linux_siginfo_fixup.
-
-2015-09-11  Don Breazeal  <donb@codesourcery.com>
-	    Luis Machado  <lgustavo@codesourcery.com>
-
-	* linux-low.c (linux_mourn): Static declaration.
-	(linux_arch_setup): Move in front of
-	handle_extended_wait.
-	(linux_arch_setup_thread): New function.
-	(handle_extended_wait): Handle exec events.  Call
-	linux_arch_setup_thread.  Make event_lwp argument a
-	pointer-to-a-pointer.
-	(check_zombie_leaders): Do not check stopped threads.
-	(linux_low_ptrace_options): Add PTRACE_O_TRACEEXEC.
-	(linux_low_filter_event): Add lwp and thread for exec'ing
-	non-leader thread if leader thread has been deleted.
-	Refactor code into linux_arch_setup_thread and call it.
-	Pass child lwp pointer by reference to handle_extended_wait.
-	(linux_wait_for_event_filtered): Update comment.
-	(linux_wait_1): Prevent clobbering exec event status.
-	(linux_supports_exec_events): New function.
-	(linux_target_ops) <supports_exec_events>: Initialize new member.
-	* lynx-low.c (lynx_target_ops) <supports_exec_events>: Initialize
-	new member.
-	* remote-utils.c (prepare_resume_reply): New stop reason 'exec'.
-	* server.c (report_exec_events): New global variable.
-	(handle_query): Handle qSupported query for exec-events feature.
-	(captured_main): Initialize report_exec_events.
-	* server.h (report_exec_events): Declare new global variable.
-	* target.h (struct target_ops) <supports_exec_events>: New
-	member.
-	(target_supports_exec_events): New macro.
-	* win32-low.c (win32_target_ops) <supports_exec_events>:
-	Initialize new member.
-
-2015-09-09  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* linux-low.c (linux_low_enable_btrace): Remove.
-	(linux_target_ops): Replace linux_low_enable_btrace with
-	linux_enable_btrace.
-
-2015-09-03  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_insert_point): Call
-	aarch64_handle_watchpoint if aarch64_linux_region_ok_for_watchpoint
-	returns true.
-
-2015-08-27  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
-
-	* linux-low.c (check_stopped_by_breakpoint): Use
-	GDB_ARCH_IS_TRAP_BRKPT instead of GDB_ARCH_TRAP_BRKPT.
-
-2015-08-27  Pedro Alves  <palves@redhat.com>
-
-	* proc-service.c (ps_pdwrite): Return PS_ERR/PS_OK explicily.
-
-2015-08-26  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* ax.c (gdb_parse_agent_expr): Replace xmalloc-family function with
-	the XNEW-family equivalent.
-	(compile_bytecodes): Likewise.
-	* dll.c (loaded_dll): Likewise.
-	* event-loop.c (append_callback_event): Likewise.
-	(create_file_handler): Likewise.
-	(create_file_event): Likewise.
-	* hostio.c (handle_open): Likewise.
-	* inferiors.c (add_thread): Likewise.
-	(add_process): Likewise.
-	* linux-aarch64-low.c (aarch64_linux_new_process): Likewise.
-	* linux-arm-low.c (arm_new_process): Likewise.
-	(arm_new_thread): Likewise.
-	* linux-low.c (add_to_pid_list): Likewise.
-	(linux_add_process): Likewise.
-	(handle_extended_wait): Likewise.
-	(add_lwp): Likewise.
-	(enqueue_one_deferred_signal): Likewise.
-	(enqueue_pending_signal): Likewise.
-	(linux_resume_one_lwp_throw): Likewise.
-	(linux_resume_one_thread): Likewise.
-	(linux_read_memory): Likewise.
-	(linux_write_memory): Likewise.
-	* linux-mips-low.c (mips_linux_new_process): Likewise.
-	(mips_linux_new_thread): Likewise.
-	(mips_add_watchpoint): Likewise.
-	* linux-x86-low.c (initialize_low_arch): Likewise.
-	* lynx-low.c (lynx_add_process): Likewise.
-	* mem-break.c (set_raw_breakpoint_at): Likewise.
-	(set_breakpoint): Likewise.
-	(add_condition_to_breakpoint): Likewise.
-	(add_commands_to_breakpoint): Likewise.
-	(clone_agent_expr): Likewise.
-	(clone_one_breakpoint): Likewise.
-	* regcache.c (new_register_cache): Likewise.
-	* remote-utils.c (look_up_one_symbol): Likewise.
-	* server.c (queue_stop_reply): Likewise.
-	(start_inferior): Likewise.
-	(queue_stop_reply_callback): Likewise.
-	(handle_target_event): Likewise.
-	* spu-low.c (fetch_ppc_memory): Likewise.
-	(store_ppc_memory): Likewise.
-	* target.c (set_target_ops): Likewise.
-	* thread-db.c (thread_db_load_search): Likewise.
-	(try_thread_db_load_1): Likewise.
-	* tracepoint.c (add_tracepoint): Likewise.
-	(add_tracepoint_action): Likewise.
-	(create_trace_state_variable): Likewise.
-	(cmd_qtdpsrc): Likewise.
-	(cmd_qtro): Likewise.
-	(add_while_stepping_state): Likewise.
-	* win32-low.c (child_add_thread): Likewise.
-	(get_image_name): Likewise.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_linux_new_thread): Remove.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* Makefile.in (aarch64-linux.o): New rule.
-	* configure.srv (aarch64*-*-linux*): Append aarch64-linux.o to
-	srv_tgtobj.
-	* linux-aarch64-low.c: Include nat/aarch64-linux.h.
-	(aarch64_init_debug_reg_state): Make it extern.
-	(aarch64_linux_prepare_to_resume): Remove.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_linux_prepare_to_resume): Use
-	lwp_arch_private_info and ptid_of_lwp.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_get_debug_reg_state): Add argument pid.
-	Find proc_info by find_process_pid.  All callers updated.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (struct arch64_dr_update_callback_param):
-	Remove.
-	(debug_reg_change_callback): Remove.
-	(aarch64_notify_debug_reg_change): Remove.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_notify_debug_reg_change):
-	Call current_lwp_ptid.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (debug_reg_change_callback): Use
-	debug_printf.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (debug_reg_change_callback): Use phex.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (debug_reg_change_callback): Remove comments.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (debug_reg_change_callback): Re-indent
-	the code.
-
-2015-08-25  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_dr_update_callback_param) <pid>:
-	Remove.
-	(debug_reg_change_callback): Remove argument entry and add argument
-	lwp.  Remove local variable thread.  Don't print thread id in the
-	debugging output.  Don't check whether pid of thread equals to pid.
-	(aarch64_notify_debug_reg_change): Don't set param.pid.  Call
-	iterate_over_lwps instead find_inferior.
-
-2015-08-24  Pedro Alves  <palves@redhat.com>
-
-	* inferiors.c (get_first_process): New function.
-	* inferiors.h (get_first_process): New declaration.
-	* remote-utils.c (read_ptid): Default to the first process in the
-	list, instead of to the current thread's process.
-
-2015-08-24  Pedro Alves  <palves@redhat.com>
-
-	* debug.c: Include gdb_sys_time.h instead of sys/time.h.
-	* event-loop.c: Likewise.
-	* remote-utils.c: Likewise.
-	* tracepoint.c: Likewise.
-
-2015-08-24  Pedro Alves  <palves@redhat.com>
-
-	* spu-low.c (spu_request_interrupt): Use lwpid_of instead of
-	ptid_get_lwp.
-
-2015-08-21  Pedro Alves  <palves@redhat.com>
-
-	* ax.c (gdb_eval_agent_expr): Return expr_eval_unhandled_opcode
-	instead of literal 1.
-
-2015-08-21  Pedro Alves  <palves@redhat.com>
-
-	* tdesc.c (default_description): Explicitly zero-initialize.
-
-2015-08-21  Pedro Alves  <palves@redhat.com>
-
-	PR gdb/18749
-	* inferiors.c (remove_thread): Discard any pending stop reply for
-	this thread.
-	* server.c (remove_all_on_match_pid): Rename to ...
-	(remove_all_on_match_ptid): ... this.  Work with a filter ptid
-	instead of a pid.
-	(discard_queued_stop_replies): Change parameter to a ptid.  Now
-	extern.
-	(handle_v_kill, kill_inferior_callback, captured_main)
-	(process_serial_event): Adjust.
-	* server.h (discard_queued_stop_replies): Declare.
-
-2015-08-21  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (wait_for_sigstop): Always switch to no thread
-	selected if the previously current thread dies.
-	* lynx-low.c (lynx_request_interrupt): Use the first thread's
-	process instead of the current thread's.
-	* remote-utils.c (input_interrupt): Don't check if there's no
-	current thread.
-	* server.c (gdb_read_memory, gdb_write_memory): If setting the
-	current thread to the general thread fails, error out.
-	(handle_qxfer_auxv, handle_qxfer_libraries)
-	(handle_qxfer_libraries_svr4, handle_qxfer_siginfo)
-	(handle_qxfer_spu, handle_qxfer_statictrace, handle_qxfer_fdpic)
-	(handle_query): Check if there's a thread selected instead of
-	checking whether there's any thread in the thread list.
-	(handle_qxfer_threads, handle_qxfer_btrace)
-	(handle_qxfer_btrace_conf): Don't error out early if there's no
-	thread in the thread list.
-	(handle_v_cont, myresume): Don't set the current thread to the
-	continue thread.
-	(process_serial_event) <Hg handling>: Also set thread_id if the
-	previous general thread is still alive.
-	(process_serial_event) <g/G handling>: If setting the current
-	thread to the general thread fails, error out.
-	* spu-low.c (spu_resume, spu_request_interrupt): Use the first
-	thread's lwp instead of the current thread's.
-	* target.c (set_desired_thread): If the desired thread was not
-	found, leave the current thread pointing to NULL.  Return an int
-	(boolean) indicating success.
-	* target.h (set_desired_thread): Change return type to int.
-
-2015-08-20  Max Filippov  <jcmvbkbc@gmail.com>
-
-	* configure.srv (xtensa*-*-linux*): Add srv_linux_thread_db=yes.
-	* linux-xtensa-low.c (arch/xtensa.h gdb_proc_service.h): New
-	#includes.
-	(ps_get_thread_area): New function.
-
-2015-08-19  Gary Benson  <gbenson@redhat.com>
-
-	* hostio.c (handle_pread): Do not attempt to read more data
-	than hostio_reply_with_data can fit in a packet.
-
-2015-08-18  Joel Brobecker  <brobecker@adacore.com>
-
-	* linux-aarch32-low.c (NT_ARM_VFP): Define if not already defined.
-
-2015-08-14  Matthew Fortune  <matthew.fortune@imgtec.com>
-
-	* linux-low.c (get_r_debug): Handle DT_MIPS_RLD_MAP_REL.
-
-2015-08-06  Pedro Alves  <palves@redhat.com>
-
-	* tracepoint.c (expr_eval_result): Now an int.
-
-2015-08-06  Pedro Alves  <palves@redhat.com>
-
-	* gdbthread.h (struct regcache): Forward declare.
-	(struct thread_info) <regcache_data>: Now a struct regcache
-	pointer.
-	* inferiors.c (inferior_regcache_data)
-	(set_inferior_regcache_data): Now work with struct regcache
-	pointers.
-	* inferiors.h (struct regcache): Forward declare.
-	(inferior_regcache_data, set_inferior_regcache_data): Now work
-	with struct regcache pointers.
-	* regcache.c (get_thread_regcache, regcache_invalidate_thread)
-	(free_register_cache_thread): Remove struct regcache pointer
-	casts.
-
-2015-08-06  Pedro Alves  <palves@redhat.com>
-
-	* server.c (captured_main): On error, print the exception message
-	to stderr, and if run_once is set, throw a quit.
-
-2015-08-06  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (move_out_of_jump_pad_callback): Temporarily switch
-	the current thread.
-
-2015-08-06  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_write_memory): Rewrite debug output to avoid
-	reading beyond the passed in buffer length.
-
-2015-08-06  Pierre Langlois  <pierre.langlois@arm.com>
-
-	* tracepoint.c (symbol_list) <required>: Remove.
-
-2015-08-06  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (handle_extended_wait): Set the fork child's suspend
-	count if stopping and suspending threads.
-	(check_stopped_by_breakpoint): If stopped by trace, set the LWP's
-	stop reason to TARGET_STOPPED_BY_SINGLE_STEP.
-	(linux_detach): Complete an ongoing step-over.
-	(lwp_suspended_inc, lwp_suspended_decr): New functions.  Use
-	throughout.
-	(resume_stopped_resumed_lwps): Don't resume a suspended thread.
-	(linux_wait_1): If passing a signal to the inferior after
-	finishing a step-over, unsuspend and re-resume all lwps.  If we
-	see a single-step event but the thread should be continuing, don't
-	pass the trap to gdb.
-	(stuck_in_jump_pad_callback, move_out_of_jump_pad_callback): Use
-	internal_error instead of gdb_assert.
-	(enqueue_pending_signal): New function.
-	(check_ptrace_stopped_lwp_gone): Add debug output.
-	(start_step_over): Use internal_error instead of gdb_assert.
-	(complete_ongoing_step_over): New function.
-	(linux_resume_one_thread): Don't resume a suspended thread.
-	(proceed_one_lwp): If the LWP is stepping over a breakpoint, reset
-	it stepping.
-
-2015-08-06  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (add_lwp): Set waitstatus to TARGET_WAITKIND_IGNORE.
-	(linux_thread_alive): Use lwp_is_marked_dead.
-	(extended_event_reported): Delete.
-	(linux_wait_1): Check if waitstatus is TARGET_WAITKIND_IGNORE
-	instead of extended_event_reported.
-	(mark_lwp_dead): Don't set the 'dead' flag.  Store the waitstatus
-	as well.
-	(lwp_is_marked_dead): New function.
-	(lwp_running): Use lwp_is_marked_dead.
-	* linux-low.h: Delete 'dead' field, and update 'waitstatus's
-	comment.
-
-2015-08-06  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_wait_1): Move fork event output out of the
-	!report_to_gdb check.  Pass event_child->waitstatus to
-	target_waitstatus_to_string instead of ourstatus.
-
-2015-08-04  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_supports_tracepoints): Return 0
-	if current_thread is 32 bit.
-
-2015-08-04  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_supports_z_point_type): Return
-	0 for Z_PACKET_SW_BP if it may be used in multi-arch debugging.
-	* server.c (extended_protocol): Remove "static".
-	* server.h (extended_protocol): Declare it.
-
-2015-08-04  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_get_pc): Get PC register on
-	both aarch64 and aarch32.
-	(aarch64_set_pc): Likewise.
-
-2015-08-04  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv (case aarch64*-*-linux*): Append arm-with-neon.o
-	to srv_regobj and append arm-core.xml arm-vfpv3.xml and
-	arm-with-neon.xml to srv_xmlfiles.
-	* linux-aarch64-low.c: Include linux-aarch32-low.h.
-	(is_64bit_tdesc): New function.
-	(aarch64_linux_read_description): New function.
-	(aarch64_arch_setup): Call aarch64_linux_read_description.
-	(regs_info): Rename to regs_info_aarch64.
-	(aarch64_regs_info): Return right regs_info.
-	(initialize_low_arch): Call initialize_low_arch_aarch32.
-
-2015-08-04  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv (srv_tgtobj): Add linux-aarch32-low.o.
-	* linux-aarch32-low.c: New file.
-	* linux-aarch32-low.h: New file.
-	* linux-arm-low.c (arm_fill_gregset): Move it to
-	linux-aarch32-low.c.
-	(arm_store_gregset): Likewise.
-	(arm_fill_vfpregset): Call arm_fill_vfpregset_num
-	(arm_store_vfpregset): Call arm_store_vfpregset_num.
-	(arm_arch_setup): Check if PTRACE_GETREGSET works.
-	(regs_info): Rename to regs_info_arm.
-	(arm_regs_info): Return regs_info_aarch32 if
-	have_ptrace_getregset is 1 and target description is
-	arm_with_neon or arm_with_vfpv3.
-	(initialize_low_arch): Don't call init_registers_arm_with_neon.
-	Call initialize_low_arch_aarch32 instead.
-
-2015-08-04  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-x86-low.c (have_ptrace_getregset): Move it to ...
-	* linux-low.c: ... here.
-	* linux-low.h (have_ptrace_getregset): Declare it.
-
-2015-08-04  Pedro Alves  <palves@redhat.com>
-
-	* thread-db.c (struct thread_db): Use new typedefs.
-	(try_thread_db_load_1): Define local TDB_DLSYM macro and use it in
-	CHK calls.
-	(disable_thread_event_reporting): Cast result of dlsym to
-	destination function pointer type.
-	(thread_db_mourn): Use td_ta_delete_ftype.
-
-2015-08-03  Sandra Loosemore  <sandra@codesourcery.com>
-
-	* linux-nios2-low.c (NIOS2_BREAKPOINT): Conditionalize for
-	arch variant.
-	(CDX_BREAKPOINT): Define for R2.
-	(nios2_breakpoint_at): Check for CDX_BREAKPOINT when R2.
-	(the_low_target): Add comments.
-
-2015-07-30  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c (arm_hwcap): Remove it.
-	(arm_read_description): New local variable arm_hwcap.  Don't
-	set arm_hwcap to zero.
-
-2015-07-30  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c (arm_fill_wmmxregset): Don't use arm_hwcap.
-	Use regcache->tdesc instead.
-	(arm_store_wmmxregset): Likewise.
-	(arm_fill_vfpregset): Likewise.
-	(arm_store_vfpregset): Likewise.
-
-2015-07-30  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-arm-low.c: Include arch/arm.h.
-	(arm_fill_gregset): Don't use arm_num_regs and arm_regmap.
-	(arm_store_gregset): Likewise.
-
-2015-07-29  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* linux-mips-low.c (mips_linux_prepare_to_resume): Add NULL as
-	ptrace's 4th parameter.
-
-2015-07-27  Yao Qi  <yao.qi@linaro.org>
-
-	* configure.srv (case aarch64*-*-linux*): Don't set
-	srv_linux_usrregs.
-
-2015-07-24  Pedro Alves  <palves@redhat.c: Likewise.om>
-
-	* linux-aarch64-low.c: Include nat/gdb_ptrace.h instead of
-	sys/ptrace.h.
-	* linux-arm-low.c: Likewise.
-	* linux-cris-low.c: Likewise.
-	* linux-crisv32-low.c: Likewise.
-	* linux-low.c: Likewise.
-	* linux-m68k-low.c: Likewise.
-	* linux-mips-low.c: Likewise.
-	* linux-nios2-low.c: Likewise.
-	* linux-s390-low.c: Likewise.
-	* linux-sparc-low.c: Likewise.
-	* linux-tic6x-low.c: Likewise.
-	* linux-tile-low.c: Likewise.
-	* linux-x86-low.c: Likewise.
-
-2015-07-24  Pedro Alves  <palves@redhat.com>
-
-	* config.in: Regenerate.
-	* configure: Regenerate.
-
-2015-07-24  Pedro Alves  <palves@redhat.com>
-
-	* acinclude.m4: Include ../ptrace.m4.
-	* configure.ac: Call GDB_AC_PTRACE.
-	* config.in, configure: Regenerate.
-
-2015-07-24  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_create_inferior): Remove setting to
-	proc->priv->new_inferior.
-	(linux_attach): Likewise.
-	(linux_low_filter_event): Likewise.
-	* linux-low.h (struct process_info_private) <new_inferior>: Remove.
-
-2015-07-24  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_arch_setup): New function.
-	(linux_low_filter_event): If proc->tdesc is NULL and
-	proc->attached is true, call the_low_target.arch_setup.
-	Otherwise, keep status pending, and return.
-	(linux_resume_one_lwp_throw): Don't call get_pc if
-	thread->while_stepping isn't NULL.  Don't call
-	get_thread_regcache if proc->tdesc is NULL.
-	(need_step_over_p): Return 0 if proc->tdesc is NULL.
-	(linux_target_ops): Install arch_setup.
-	* server.c (start_inferior): Call the_target->arch_setup.
-	* target.h (struct target_ops) <arch_setup>: New field.
-	(target_arch_setup): New marco.
-	* lynx-low.c (lynx_target_ops): Update.
-	* nto-low.c (nto_target_ops): Update.
-	* spu-low.c (spu_target_ops): Update.
-	* win32-low.c (win32_target_ops): Update.
-
-2015-07-24  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_add_process): Don't set
-	proc->priv->new_inferior.
-	(linux_create_inferior): Set proc->priv->new_inferior to 1.
-	(linux_attach): Likewise.
-
-2015-07-24  Yao Qi  <yao.qi@linaro.org>
-
-	* server.c (start_inferior): Code refactor.
-
-2015-07-24  Yao Qi  <yao.qi@linaro.org>
-
-	* server.c (process_serial_event): Set general_thread.
-
-2015-07-21  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_arch_setup): Remove code and call
-	aarch64_linux_get_debug_reg_capacity.
-
-2015-07-17  Yao Qi  <yao.qi@linaro.org>
-
-	* Makefile.in (aarch64-linux-hw-point.o): New rule.
-	* configure.srv (srv_tgtobj): Append aarch64-linux-hw-point.o.
-	* linux-aarch64-low.c: Include nat/aarch64-linux-hw-point.h.
-	(AARCH64_HBP_MAX_NUM): Move to nat/aarch64-linux-hw-point.h.
-	(AARCH64_HWP_MAX_NUM, AARCH64_HBP_ALIGNMENT): Likewise.
-	(AARCH64_HWP_ALIGNMENT): Likewise.
-	(AARCH64_HWP_MAX_LEN_PER_REG): Likewise.
-	(AARCH64_DEBUG_NUM_SLOTS, AARCH64_DEBUG_ARCH): Likewise.
-	(aarch64_num_bp_regs, aarch64_num_wp_regs): Likewise.
-	(AARCH64_DEBUG_ARCH_V8, DR_MARK_ALL_CHANGED): Likewise.
-	(DR_MARK_N_CHANGED, DR_CLEAR_CHANGED): Likewise.
-	(DR_HAS_CHANGED, DR_N_HAS_CHANGE): Likewise.
-	(struct aarch64_debug_reg_state): Likewise.
-	(struct arch_lwp_info):	Likewise.
-	(aarch64_align_watchpoint): Likewise.
-	(DR_CONTROL_ENABLED, DR_CONTROL_LENGTH): Likewise.
-	(aarch64_watchpoint_length): Likewise.
-	(aarch64_point_encode_ctrl_reg): Likewise
-	(aarch64_point_is_aligned): Likewise.
-	(aarch64_align_watchpoint): Likewise.
-	(aarch64_linux_set_debug_regs):
-	(aarch64_dr_state_insert_one_point): Likewise.
-	(aarch64_dr_state_remove_one_point): Likewise.
-	(aarch64_handle_breakpoint): Likewise.
-	(aarch64_handle_aligned_watchpoint): Likewise.
-	(aarch64_handle_unaligned_watchpoint): Likewise.
-	(aarch64_handle_watchpoint): Likewise.
-
-2015-07-17  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_handle_breakpoint): Add argument state
-	and don't aarch64_get_debug_reg_state.  All callers update.
-	(aarch64_handle_aligned_watchpoint): Likewise.
-	(aarch64_handle_unaligned_watchpoint): Likewise.
-	(aarch64_handle_watchpoint): Likewise.
-	(aarch64_insert_point): Call aarch64_get_debug_reg_state earlier.
-	(aarch64_remove_point): Likewise.
-
-2015-07-17  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_show_debug_reg_state): Use
-	debug_printf.
-	(aarch64_handle_unaligned_watchpoint): Likewise.
-
-2015-07-15  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Revert the previous 3 commits:
-	Move gdb_regex* to common/
-	Move linux_find_memory_regions_full & co.
-	gdbserver build-id attribute generator
-
-2015-07-15  Aleksandar Ristovski  <aristovski@qnx.com
-	    Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	gdbserver build-id attribute generator.
-	* linux-low.c (nat/linux-maps.h, search.h, rsp-low.h): Include.
-	(ElfXX_Ehdr, ElfXX_Phdr, ElfXX_Nhdr): New.
-	(ELFXX_FLD, ELFXX_SIZEOF, ELFXX_ROUNDUP, BUILD_ID_INVALID): New.
-	(find_phdr): New.
-	(get_dynamic): Use find_pdhr to traverse program headers.
-	(struct mapping_entry, mapping_entry_s, free_mapping_entry_vec)
-	(compare_mapping_entry_range, struct find_memory_region_callback_data)
-	(read_build_id, find_memory_region_callback, lrfind_mapping_entry)
-	(get_hex_build_id): New.
-	(linux_qxfer_libraries_svr4): Add optional build-id attribute
-	to reply XML document.
-
-2015-07-15  Aleksandar Ristovski  <aristovski@qnx.com
-	    Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* target.c: Include target/target-utils.h and fcntl.h.
-	(target_fileio_read_stralloc_1_pread, target_fileio_read_stralloc_1)
-	(target_fileio_read_stralloc): New functions.
-
-2015-07-15  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* Makefile.in (OBS): Add gdb_regex.o.
-	(gdb_regex.o): New.
-	* config.in: Rebuilt.
-	* configure: Rebuilt.
-
-2015-07-15  Aleksandar Ristovski  <aristovski@qnx.com
-	    Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Create empty nat/linux-maps.[ch] and common/target-utils.[ch].
-	* Makefile.in (OBS): Add target-utils.o.
-	(linux-maps.o, target-utils.o): New.
-	* configure.srv (srv_linux_obj): Add linux-maps.o.
-
-2015-07-15  Pierre Langlois  <pierre.langlois@arm.com>
-
-	* linux-aarch64-low.c (aarch64_supports_range_stepping): New
-	function, return 1.
-	(the_low_target): Install it.
-
-2015-07-14  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (kill_wait_lwp): Don't assert if waitpid fails.
-	Instead, ignore ECHILD, and throw an error for other errnos.
-
-2015-07-10  Pedro Alves  <palves@redhat.com>
-
-	* event-loop.c (struct callback_event) <data>: Change type to
-	gdb_client_data instance instead of gdb_client_data pointer.
-	(append_callback_event): Adjust.
-
-2015-07-10  Pierre Langlois  <pierre.langlois@arm.com>
-
-	* linux-aarch64-low.c: Add comments for each linux_target_ops
-	method.  Remove comments already covered in target_ops and
-	linux_target_ops definitions.
-	(the_low_target): Add comments for each unimplemented method.
-
-2015-07-09  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_regmap): Remove.
-	(aarch64_usrregs_info): Remove.
-	(regs_info): Set field usrregs to NULL.
-
-2015-07-02  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* linux-low.c: Include "rsp-low.h"
-	(linux_low_encode_pt_config, linux_low_encode_raw): New.
-	(linux_low_read_btrace): Support BTRACE_FORMAT_PT.
-	(linux_low_btrace_conf): Support BTRACE_FORMAT_PT.
-	(handle_btrace_enable_pt): New.
-	(handle_btrace_general_set): Support "pt".
-	(handle_btrace_conf_general_set): Support "pt:size".
-
-2015-06-29  Pierre Langlois  <pierre.langlois@arm.com>
-
-	* linux-aarch64-low.c (aarch64_supports_z_point_type): Enable for
-	Z_PACKET_SW_BP.
-
-2015-06-29  Pierre Langlois  <pierre.langlois@arm.com>
-
-	* linux-aarch64-low.c: Remove comment about endianness.
-	(aarch64_breakpoint): Change type to gdb_byte[].  Set to "brk #0".
-	(aarch64_breakpoint_at): Change type of insn to gdb_byte[].  Use
-	memcmp.
-
-2015-06-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-i386-ipa.c (stdint.h): Do not include.
-	* lynx-i386-low.c (stdint.h): Likewise.
-	* lynx-ppc-low.c (stdint.h): Likewise.
-	* mem-break.c (stdint.h): Likewise.
-	* thread-db.c (stdint.h): Likewise.
-	* tracepoint.c (stdint.h): Likewise.
-	* win32-low.c (stdint.h): Likewise.
-
-2015-06-18  Simon Marchi  <simon.marchi@ericsson.com>
-
-	* server.c (write_qxfer_response): Update call to
-	remote_escape_output.
-
-2015-06-15  Aleksandar Ristovski  <aristovski@qnx.com
-	    Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Merge multiple hex conversions.
-	* gdbreplay.c (tohex): Rename to 'fromhex'.
-	(logchar): Use fromhex.
-
-2015-06-10  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* server.c (handle_qxfer_libraries): Set `version' attribute for
-	<library-list>.
-
-2015-06-10  Gary Benson  <gbenson@redhat.com>
-
-	* target.h (struct target_ops) <multifs_open>: New field.
-	<multifs_unlink>: Likewise.
-	<multifs_readlink>: Likewise.
-	* linux-low.c (nat/linux-namespaces.h): New include.
-	(linux_target_ops): Initialize the_target->multifs_open,
-	the_target->multifs_unlink and the_target->multifs_readlink.
-	* hostio.h (hostio_handle_new_gdb_connection): New declaration.
-	* hostio.c (hostio_fs_pid): New static variable.
-	(hostio_handle_new_gdb_connection): New function.
-	(handle_setfs): Likewise.
-	(handle_open): Use the_target->multifs_open as appropriate.
-	(handle_unlink): Use the_target->multifs_unlink as appropriate.
-	(handle_readlink): Use the_target->multifs_readlink as
-	appropriate.
-	(handle_vFile): Handle vFile:setfs packets.
-	* server.c (handle_query): Call hostio_handle_new_gdb_connection
-	after target_handle_new_gdb_connection.
-
-2015-06-10  Gary Benson  <gbenson@redhat.com>
-
-	* configure.ac (AC_CHECK_FUNCS): Add setns.
-	* config.in: Regenerate.
-	* configure: Likewise.
-	* Makefile.in (SFILES): Add nat/linux-namespaces.c.
-	(linux-namespaces.o): New rule.
-	* configure.srv (srv_linux_obj): Add linux-namespaces.o.
-
-2015-06-09  Gary Benson <gbenson@redhat.com>
-
-	* hostio.c (handle_open): Process mode argument with
-	fileio_to_host_mode.
-
-2015-06-01  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-s390-low.c (PTRACE_GETREGSET, PTRACE_SETREGSET): Remove.
-	* linux-x86-low.c: Likewise.
-
-2015-05-28  Don Breazeal  <donb@codesourcery.com>
-
-	* linux-low.c (handle_extended_wait): Initialize
-	thread_info.last_resume_kind for new fork children.
-
-2015-05-15  Pedro Alves  <palves@redhat.com>
-
-	* target.h (target_handle_new_gdb_connection): Rewrite using if
-	wrapped in do/while.
-
-2015-05-14  Joel Brobecker  <brobecker@adacore.com>
-
-	* configure.ac: Add prfpregset_t BFD_HAVE_SYS_PROCFS_TYPE check.
-	* configure, config.in: Regenerate.
-	* gdb_proc_service.h [HAVE_PRFPREGSET_T] (prfpregset_t):
-	Declare typedef.
-
-2015-05-12  Don Breazeal  <donb@codesourcery.com>
-
-	* linux-low.c (handle_extended_wait): Handle PTRACE_EVENT_FORK and
-	PTRACE_EVENT_VFORK_DONE.
-	(linux_low_ptrace_options, extended_event_reported): Add vfork
-	events.
-	* remote-utils.c (prepare_resume_reply): New stop reasons "vfork"
-	and "vforkdone" for RSP 'T' Stop Reply Packet.
-	* server.h (report_vfork_events): Declare
-	global variable.
-
-2015-05-12  Don Breazeal  <donb@codesourcery.com>
-
-	* linux-aarch64-low.c (aarch64_linux_new_fork): New function.
-	(the_low_target) <new_fork>: Initialize new member.
-	* linux-arm-low.c (arm_new_fork): New function.
-	(the_low_target) <new_fork>: Initialize new member.
-	* linux-low.c (handle_extended_wait): Call new target function
-	new_fork.
-	* linux-low.h (struct linux_target_ops) <new_fork>: New member.
-	* linux-mips-low.c (mips_add_watchpoint): New function
-	extracted from mips_insert_point.
-	(the_low_target) <new_fork>: Initialize new member.
-	(mips_linux_new_fork): New function.
-	(mips_insert_point): Call mips_add_watchpoint.
-	* linux-x86-low.c (x86_linux_new_fork): New function.
-	(the_low_target) <new_fork>: Initialize new member.
-
-2015-05-12  Don Breazeal  <donb@codesourcery.com>
-
-	* linux-low.c (handle_extended_wait): Implement return value,
-	rename argument 'event_child' to 'event_lwp', handle
-	PTRACE_EVENT_FORK, call internal_error for unrecognized event.
-	(linux_low_ptrace_options): New function.
-	(linux_low_filter_event): Call linux_low_ptrace_options,
-	use different argument fo linux_enable_event_reporting,
-	use return value from handle_extended_wait.
-	(extended_event_reported): New function.
-	(linux_wait_1): Call extended_event_reported and set
-	status to report fork events.
-	(linux_write_memory): Add pid to debug message.
-	(reset_lwp_ptrace_options_callback): New function.
-	(linux_handle_new_gdb_connection): New function.
-	(linux_target_ops): Initialize new structure member.
-	* linux-low.h (struct lwp_info) <waitstatus>: New member.
-	* lynx-low.c: Initialize new structure member.
-	* remote-utils.c (prepare_resume_reply): Implement stop reason
-	"fork" for "T" stop message.
-	* server.c (handle_query): Call handle_new_gdb_connection.
-	* server.h (report_fork_events): Declare global flag.
-	* target.h (struct target_ops) <handle_new_gdb_connection>:
-	New member.
-	(target_handle_new_gdb_connection): New macro.
-	* win32-low.c: Initialize new structure member.
-
-2015-05-12  Don Breazeal  <donb@codesourcery.com>
-
-	* mem-break.c (APPEND_TO_LIST): Define macro.
-	(clone_agent_expr): New function.
-	(clone_one_breakpoint): New function.
-	(clone_all_breakpoints): New function.
-	* mem-break.h: Declare new functions.
-
-2015-05-12  Don Breazeal  <donb@codesourcery.com>
-
-	* linux-low.c (linux_supports_fork_events): New function.
-	(linux_supports_vfork_events): New function.
-	(linux_target_ops): Initialize new structure members.
-	(initialize_low): Call linux_check_ptrace_features.
-	* lynx-low.c (lynx_target_ops): Initialize new structure
-	members.
-	* server.c (report_fork_events, report_vfork_events):
-	New global flags.
-	(handle_query): Add new features to qSupported packet and
-	response.
-	(captured_main): Initialize new global variables.
-	* target.h (struct target_ops) <supports_fork_events>:
-	New member.
-	<supports_vfork_events>: New member.
-	(target_supports_fork_events): New macro.
-	(target_supports_vfork_events): New macro.
-	* win32-low.c (win32_target_ops): Initialize new structure
-	members.
-
-2015-05-12  Gary Benson <gbenson@redhat.com>
-
-	* server.c (handle_qxfer_exec_file): Use current process
-	if annex is empty.
-
-2015-05-08  Sandra Loosemore  <sandra@codesourcery.com>
-
-	* linux-nios2-low.c: Include elf/common.h.  Adjust comments.
-	Remove HAVE_PTRACE_GETREGS conditionals.
-	(nios2_regsets): Use PTRACE_GETREGSET and PTRACE_SETREGSET
-	instead of PTRACE_GETREGS and PTRACE_SETREGS.
-
-2015-05-08  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_supports_conditional_breakpoints): New
-	function.
-	(linux_target_ops): Install new target method.
-	* lynx-low.c (lynx_target_ops): Install NULL hook for
-	supports_conditional_breakpoints.
-	* nto-low.c (nto_target_ops): Likewise.
-	* spu-low.c (spu_target_ops): Likewise.
-	* win32-low.c (win32_target_ops): Likewise.
-	* server.c (handle_query): Check
-	target_supports_conditional_breakpoints.
-	* target.h (struct target_ops) <supports_conditional_breakpoints>:
-	New field.
-	(target_supports_conditional_breakpoints): New macro.
-
-2015-05-06  Pedro Alves  <palves@redhat.com>
-
-	PR server/18081
-	* server.c (start_inferior): If the process exits, mourn it.
-
-2015-04-21  Gary Benson <gbenson@redhat.com>
-
-	* hostio.c (fileio_open_flags_to_host): Factored out to
-	fileio_to_host_openflags in common/fileio.c.  Single use
-	updated.
-
-2015-04-17  Max Filippov  <jcmvbkbc@gmail.com>
-
-	* linux-xtensa-low.c (xtensa_fill_gregset)
-	(xtensa_store_gregset): Check XCHAL_HAVE_LOOPS instead of
-	XCHAL_HAVE_LOOP.
-
-2015-04-17  Max Filippov  <jcmvbkbc@gmail.com>
-
-	* linux-xtensa-low.c (xtensa_usrregs_info): Remove.
-	(regs_info): Replace usrregs pointer with NULL.
-
-2015-04-17  Gary Benson  <gbenson@redhat.com>
-
-	* target.h (struct target_ops) <pid_to_exec_file>: New field.
-	* linux-low.c (linux_target_ops): Initialize pid_to_exec_file.
-	* server.c (handle_qxfer_exec_file): New function.
-	(qxfer_packets): Add exec-file entry.
-	(handle_query): Report qXfer:exec-file:read as supported packet.
-
-2015-04-14  Romain Naour <romain.naour@openwide.fr>  (tiny change)
-
-	* linux-low.c (linux_read_offsets): Remove get_thread_lwp.
-
-2015-04-09  Gary Benson <gbenson@redhat.com>
-
-	* hostio-errno.c (errno_to_fileio_error): Remove function.
-	Update caller to use remote_fileio_to_fio_error.
-
-2015-04-09  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-low.c (linux_insert_point): Call
-	insert_memory_breakpoint if TYPE is raw_bkpt_type_sw.
-	(linux_remove_point): Call remove_memory_breakpoint if type is
-	raw_bkpt_type_sw.
-	* linux-x86-low.c (x86_insert_point): Don't call
-	insert_memory_breakpoint.
-	(x86_remove_point): Don't call remove_memory_breakpoint.
-
-2015-04-01  Pedro Alves  <palves@redhat.com>
-	    Cleber Rosa  <crosa@redhat.com>
-
-	* server.c (gdbserver_usage): Reorganize and extend the usage
-	message.
-
-2015-03-24  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (check_stopped_by_breakpoint): Tweak debug log
-	output.  Also dump TRAP_TRACE.
-	(linux_low_filter_event): In debug output, distinguish a
-	resume_stop SIGSTOP from a delayed SIGSTOP.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-x86-low.c (x86_linux_new_thread): Moved to
-	nat/x86-linux.c.
-	(x86_linux_prepare_to_resume): Likewise.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* Makefile.in (x86-linux-dregs.o): New rule.
-	* configure.srv: Add x86-linux-dregs.o to relevant targets.
-	* linux-x86-low.c: Include nat/x86-linux-dregs.h.
-	(u_debugreg_offset): Moved to nat/x86-linux-dregs.c.
-	(x86_linux_dr_get): Likewise.
-	(x86_linux_dr_set): Likewise.
-	(update_debug_registers_callback): Likewise.
-	(x86_linux_dr_set_addr): Likewise.
-	(x86_linux_dr_get_addr): Likewise.
-	(x86_linux_dr_set_control): Likewise.
-	(x86_linux_dr_get_control): Likewise.
-	(x86_linux_dr_get_status): Likewise.
-	(x86_linux_update_debug_registers): Likewise.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-x86-low.c (x86_linux_update_debug_registers):
-	New function, factored out from...
-	(x86_linux_prepare_to_resume): ...this.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-x86-low.c (x86_linux_dr_get): Update comments.
-	(x86_linux_dr_set): Likewise.
-	(update_debug_registers_callback): Likewise.
-	(x86_linux_dr_set_addr): Likewise.
-	(x86_linux_dr_get_addr): Likewise.
-	(x86_linux_dr_set_control): Likewise.
-	(x86_linux_dr_get_control): Likewise.
-	(x86_linux_dr_get_status): Likewise.
-	(x86_linux_prepare_to_resume): Likewise.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-x86-low.c (x86_linux_dr_get): Add assertion.
-	Use perror_with_name.  Pass string through gettext.
-	(x86_linux_dr_set): Likewise.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-x86-low.c (x86_dr_low_set_addr): Rename to...
-	(x86_linux_dr_set_addr): ...this.
-	(x86_dr_low_get_addr): Rename to...
-	(x86_linux_dr_get_addr): ...this.
-	(x86_dr_low_set_control): Rename to...
-	(x86_linux_dr_set_control): ...this.
-	(x86_dr_low_get_control): Rename to...
-	(x86_linux_dr_get_control): ...this.
-	(x86_dr_low_get_status): Rename to...
-	(x86_linux_dr_get_status): ...this.
-	(x86_dr_low): Update with new function names.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* Makefile.in (x86-linux.o): New rule.
-	* configure.srv: Add x86-linux.o to relevant targets.
-	* linux-low.c (lwp_set_arch_private_info): New function.
-	(lwp_arch_private_info): Likewise.
-	* linux-x86-low.c: Include nat/x86-linux.h.
-	(arch_lwp_info): Removed structure.
-	(update_debug_registers_callback):
-	Use lwp_set_debug_registers_changed.
-	(x86_linux_prepare_to_resume): Use lwp_debug_registers_changed
-	and lwp_set_debug_registers_changed.
-	(x86_linux_new_thread): Use lwp_set_debug_registers_changed.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-low.h (linux_target_ops) <new_thread>: Changed signature.
-	* linux-arm-low.c (arm_new_thread): Likewise.
-	* linux-aarch64-low.c (aarch64_linux_new_thread): Likewise.
-	* linux-mips-low.c (mips_linux_new_thread): Likewise.
-	* linux-x86-low.c (x86_linux_new_thread): Likewise.
-	* linux-low.c (add_lwp): Update the_low_target.new_thread call.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-low.c (ptid_of_lwp): New function.
-	(lwp_is_stopped): Likewise.
-	(lwp_stop_reason): Likewise.
-	* linux-x86-low.c (update_debug_registers_callback):
-	Use lwp_is_stopped.
-	(x86_linux_prepare_to_resume): Use ptid_of_lwp and
-	lwp_stop_reason.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-low.h (linux_stop_lwp): Remove declaration.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-low.h: Include nat/linux-nat.h.
-	* linux-low.c (iterate_over_lwps_args): New structure.
-	(iterate_over_lwps_filter): New function.
-	(iterate_over_lwps): Likewise.
-	* linux-x86-low.c (update_debug_registers_callback):
-	Update signature to what iterate_over_lwps expects.
-	Remove PID check that iterate_over_lwps now performs.
-	(x86_dr_low_set_addr): Use iterate_over_lwps.
-	(x86_dr_low_set_control): Likewise.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-x86-low.c (x86_debug_reg_state): New function.
-	(x86_linux_prepare_to_resume): Use the above.
-
-2015-03-24  Gary Benson  <gbenson@redhat.com>
-
-	* linux-low.c (current_lwp_ptid): New function.
-	* linux-x86-low.c: Include nat/linux-nat.h.
-	(x86_dr_low_get_addr): Use current_lwp_ptid.
-	(x86_dr_low_get_control): Likewise.
-	(x86_dr_low_get_status): Likewise.
-
-2015-03-20  Pedro Alves  <palves@redhat.com>
-
-	* tracepoint.c (cmd_qtstatus): Make "str" const.
-
-2015-03-20  Pedro Alves  <palves@redhat.com>
-
-	* server.c (handle_general_set): Make "req_str" const.
-
-2015-03-19  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_resume_one_lwp): Rename to ...
-	(linux_resume_one_lwp_throw): ... this.  Don't handle ESRCH here,
-	instead call perror_with_name.
-	(check_ptrace_stopped_lwp_gone): New function.
-	(linux_resume_one_lwp): Reimplement as wrapper around
-	linux_resume_one_lwp_throw that swallows errors if the LWP is
-	gone.
-
-2015-03-19  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (count_events_callback, select_event_lwp_callback):
-	No longer check whether the thread has resume_stop as last resume
-	kind.
-
-2015-03-19 Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (count_events_callback, select_event_lwp_callback):
-	Use the lwp's status_pending_p field, not the thread's.
-
-2015-03-19  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (select_event_lwp_callback): Update comments to
-	no longer mention SIGTRAP.
-
-2015-03-18  Gary Benson  <gbenson@redhat.com>
-
-	* server.c (handle_query): Do not report vFile:fstat as supported.
-
-2015-03-11  Gary Benson  <gbenson@redhat.com>
-
-	* hostio.c (sys/types.h): New include.
-	(sys/stat.h): Likewise.
-	(common-remote-fileio.h): Likewise.
-	(handle_fstat): New function.
-	(handle_vFile): Handle vFile:fstat packets.
-
-2015-03-11  Gary Benson  <gbenson@redhat.com>
-
-	* configure.ac (AC_CHECK_MEMBERS): Add checks for
-	struct stat.st_blocks and struct stat.st_blksize.
-	* configure: Regenerate.
-	* config.in: Likewise.
-	* Makefile.in (SFILES): Add common/common-remote-fileio.c.
-	(OBS): Add common-remote-fileio.o.
-	(common-remote-fileio.o): New rule.
-
-2015-03-09  Pedro Alves  <palves@redhat.com>
-
-	* tracepoint.c (gdb_agent_helper_thread): Cast '&sockaddr' to
-	'struct sockaddr' pointer in 'accept' call.
-
-2015-03-09  Pedro Alves  <palves@redhat.com>
-
-	Revert:
-	2015-03-07  Pedro Alves  <palves@redhat.com>
-	* gdbreplay.c: No longer include <netinet/in.h>, <sys/socket.h>,
-	or <winsock2.h> here.  Instead include "gdb_socket.h".
-	(remote_open): Use union gdb_sockaddr_u.
-	* remote-utils.c: No longer include <netinet/in.h>, <sys/socket.h>
-	or <winsock2.h> here.  Instead include "gdb_socket.h".
-	(handle_accept_event, remote_prepare): Use union gdb_sockaddr_u.
-	* tracepoint.c: Include "gdb_socket.h" instead of <sys/socket.h>
-	or <sys/un.h>.
-	(init_named_socket, gdb_agent_helper_thread): Use union
-	gdb_sockaddr_u.
-
-2015-03-07  Pedro Alves  <palves@redhat.com>
-
-	* configure.ac (build_warnings): Move
-	-Wdeclaration-after-statement to the C-specific set.
-	* configure: Regenerate.
-
-2015-03-07  Pedro Alves  <palves@redhat.com>
-
-	* gdbreplay.c: No longer include <netinet/in.h>, <sys/socket.h>,
-	or <winsock2.h> here.  Instead include "gdb_socket.h".
-	(remote_open): Use union gdb_sockaddr_u.
-	* remote-utils.c: No longer include <netinet/in.h>, <sys/socket.h>
-	or <winsock2.h> here.  Instead include "gdb_socket.h".
-	(handle_accept_event, remote_prepare): Use union gdb_sockaddr_u.
-	* tracepoint.c: Include "gdb_socket.h" instead of <sys/socket.h>
-	or <sys/un.h>.
-	(init_named_socket, gdb_agent_helper_thread): Use union
-	gdb_sockaddr_u.
-
-2015-03-07  Pedro Alves  <palves@redhat.com>
-
-	Adjust all callers of TRY_CATCH to use TRY/CATCH/END_CATCH
-	instead.
-
-2015-03-06  Yao Qi  <yao.qi@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_insert_point): Use
-	show_debug_regs as a boolean.
-	(aarch64_remove_point): Likewise.
-
-2015-03-05  Pedro Alves  <palves@redhat.com>
-
-	* lynx-low.c (lynx_target_ops): Install NULL hooks for
-	stopped_by_sw_breakpoint, supports_stopped_by_sw_breakpoint,
-	stopped_by_hw_breakpoint, supports_stopped_by_hw_breakpoint.
-	* nto-low.c (nto_target_ops): Likewise.
-	* spu-low.c (spu_target_ops): Likewise.
-	* win32-low.c (win32_target_ops): Likewise.
-
-2015-03-04  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (check_stopped_by_breakpoint) [USE_SIGTRAP_SIGINFO]:
-	Decide whether a breakpoint triggered based on the SIGTRAP's
-	siginfo.si_code.
-	(thread_still_has_status_pending_p) [USE_SIGTRAP_SIGINFO]: Don't check whether a
-	breakpoint is inserted if relying on SIGTRAP's siginfo.si_code.
-	(linux_low_filter_event): Check for breakpoints before checking
-	watchpoints.
-	(linux_wait_1): Don't re-increment the PC if relying on SIGTRAP's
-	siginfo.si_code.
-	(linux_stopped_by_sw_breakpoint)
-	(linux_supports_stopped_by_sw_breakpoint)
-	(linux_stopped_by_hw_breakpoint)
-	(linux_supports_stopped_by_hw_breakpoint): New functions.
-	(linux_target_ops): Install new target methods.
-
-2015-03-04  Pedro Alves  <palves@redhat.com>
-
-	* remote-utils.c (prepare_resume_reply): Report swbreak/hbreak.
-	* server.c (swbreak_feature, hwbreak_feature): New globals.
-	(handle_query) <qSupported>: Handle "swbreak+" and "hwbreak+".
-	(captured_main): Clear swbreak_feature and hwbreak_feature.
-	* server.h (swbreak_feature, hwbreak_feature): Declare.
-	* target.h (struct target_ops) <stopped_by_sw_breakpoint,
-	supports_stopped_by_sw_breakpoint, stopped_by_hw_breakpoint,
-	supports_stopped_by_hw_breakpoint>: New fields.
-	(target_supports_stopped_by_sw_breakpoint)
-	(target_stopped_by_sw_breakpoint)
-	(target_supports_stopped_by_hw_breakpoint)
-	(target_stopped_by_hw_breakpoint): Declare.
-
-2015-03-04  Pedro Alves  <palves@redhat.com>
-
-	enum lwp_stop_reason -> enum target_stop_reason
-	* linux-low.c (check_stopped_by_breakpoint): Adjust.
-	(thread_still_has_status_pending_p, check_stopped_by_watchpoint)
-	(linux_wait_1, stuck_in_jump_pad_callback)
-	(move_out_of_jump_pad_callback, linux_resume_one_lwp)
-	(linux_stopped_by_watchpoint):
-	* linux-low.h (enum lwp_stop_reason): Delete.
-	(struct lwp_info) <stop_reason>: Now an enum target_stop_reason.
-	* linux-x86-low.c (x86_linux_prepare_to_resume): Adjust.
-
-2015-03-04  Yao Qi  <yao.qi@linaro.org>
-
-	* Makefile.in (SFILES): Add linux-aarch64-low.c.
-
-2015-03-03  Gary Benson  <gbenson@redhat.com>
-
-	* hostio.c (handle_vFile): Fix prefix lengths.
-
-2015-03-03  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* linux-low.c (linux_low_enable_btrace): Do not overwrite non-zero
-	ptr_bits.
-
-2015-03-02  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* Makefile.in (s390-vx-linux64.c, s390-tevx-linux64.c)
-	(s390x-vx-linux64.c, s390x-tevx-linux64.c): New rules.
-	(clean): Add "rm -f" for above C files.
-	* configure.srv (srv_regobj): Add s390-vx-linux64.o,
-	s390-tevx-linux64.o, s390x-vx-linux64.o, and s390x-tevx-linux64.o.
-	(srv_xmlfiles): Add s390-vx-linux64.xml, s390-tevx-linux64.xml,
-	s390x-vx-linux64.xml, s390x-tevx-linux64.xml, and s390-vx.xml.
-	* linux-s390-low.c (HWCAP_S390_VX): New macro.
-	(init_registers_s390_vx_linux64, init_registers_s390_tevx_linux64)
-	(init_registers_s390x_vx_linux64)
-	(init_registers_s390x_tevx_linux64)
-	(tdesc_s390_vx_linux64, tdesc_s390_tevx_linux64)
-	(tdesc_s390x_vx_linux64, tdesc_s390x_tevx_linux64): New extern
-	declarations.
-	(s390_fill_vxrs_low, s390_store_vxrs_low, s390_fill_vxrs_high)
-	(s390_store_vxrs_high): New functions.
-	(s390_regsets): Add entries for NT_S390_VXRS_LOW and
-	NT_S390_VXRS_HIGH.
-	(s390_arch_setup): Add logic for selecting one of the new target
-	descriptions.  Activate the new vector regsets if applicable.
-	(initialize_low_arch): Also invoke init_registers_s390_vx_linux64,
-	init_registers_s390_tevx_linux64, init_registers_s390x_vx_linux64,
-	and init_registers_s390x_tevx_linux64.
-
-2015-03-01  Pedro Alves  <palves@redhat.com>
-
-	* linux-i386-ipa.c (gdb_agent_get_raw_reg): Constify 'raw_regs'
-	parameter.
-
-2015-02-27  Pedro Alves  <palves@redhat.com>
-
-	* linux-x86-low.c (u_debugreg_offset): New function.
-	(x86_linux_dr_get, x86_linux_dr_set): Use it.
-
-2015-02-27  Pedro Alves  <palves@redhat.com>
-
-	* gdb_proc_service.h: Wrap with EXTERN_C_PUSH/EXTERN_C_POP.
-	[!HAVE_PROC_SERVICE_H] (struct ps_prochandle): Forward declare.
-	[!HAVE_PROC_SERVICE_H] (ps_pdread, ps_pdwrite, ps_ptread)
-	ps_ptwrite, ps_lgetregs, ps_lsetregs, ps_lgetfpregs)
-	(ps_lsetfpregs, ps_getpid)
-	(ps_get_thread_area, ps_pglobal_lookup, ps_pstop, ps_pcontinue)
-	(ps_lstop, ps_lcontinue, ps_lgetxregsize, ps_lgetxregs)
-	(ps_lsetxregs, ps_plog): Declare.
-
-2015-02-27  Pedro Alves  <palves@redhat.com>
-
-	* linux-amd64-ipa.c (gdb_agent_get_raw_reg): Use
-	IP_AGENT_EXPORT_FUNC.
-	* linux-i386-ipa.c (gdb_agent_get_raw_reg): Use
-	IP_AGENT_EXPORT_FUNC.
-	* tracepoint.c (ATTR_USED, ATTR_NOINLINE, ATTR_CONSTRUCTOR)
-	(IP_AGENT_EXPORT): Delete.
-	(gdb_tp_heap_buffer, gdb_jump_pad_buffer, gdb_jump_pad_buffer_end)
-	(gdb_trampoline_buffer, gdb_trampoline_buffer_end)
-	(gdb_trampoline_buffer_error, collecting, gdb_collect)
-	(stop_tracing, flush_trace_buffer, about_to_request_buffer_space)
-	(trace_buffer_is_full, stopping_tracepoint, expr_eval_result)
-	(error_tracepoint, tracepoints, tracing, trace_buffer_ctrl)
-	(trace_buffer_ctrl_curr, trace_buffer_lo, trace_buffer_hi)
-	(traceframe_read_count, traceframe_write_count)
-	(traceframes_created, trace_state_variables, get_raw_reg)
-	(get_trace_state_variable_value, set_trace_state_variable_value)
-	(ust_loaded, helper_thread_id, cmd_buf): Use
-	IPA_SYM_EXPORTED_NAME.
-	(stop_tracing, flush_trace_buffer): Use IP_AGENT_EXPORT_FUNC.
-	(tracepoints) Use IP_AGENT_EXPORT_VAR.
-	(stopping_tracepoint, trace_buffer_is_full, expr_eval_result): Use
-	IP_AGENT_EXPORT_VAR and wrap in EXTERN_C_PUSH/EXTERN_C_POP.
-	(last_tracepoint): Move into !IN_PROCESS_AGENT block.
-	(error_tracepoint): Use IP_AGENT_EXPORT_VAR and wrap in
-	EXTERN_C_PUSH/EXTERN_C_POP.
-	(trace_state_variables): Use IP_AGENT_EXPORT_VAR.
-	(trace_buffer_lo, trace_buffer_hi): Use IP_AGENT_EXPORT_VAR and
-	wrap in EXTERN_C_PUSH/EXTERN_C_POP.
-	(trace_buffer_ctrl, trace_buffer_ctrl_curr)
-	(traceframe_write_count, traceframe_read_count)
-	(traceframes_created, tracing): Use IP_AGENT_EXPORT_VAR.
-	(about_to_request_buffer_space, get_trace_state_variable_value)
-	(set_trace_state_variable_value): Use IP_AGENT_EXPORT_FUNC.
-	(collecting): Use IP_AGENT_EXPORT_VAR and wrap in
-	EXTERN_C_PUSH/EXTERN_C_POP.
-	(gdb_collect): Use IP_AGENT_EXPORT_FUNC.
-	(ust_loaded, cmd_buf): Use IP_AGENT_EXPORT_VAR.
-	(helper_thread_id, gdb_agent_capability): Use IP_AGENT_EXPORT_VAR
-	and wrap in EXTERN_C_PUSH/EXTERN_C_POP.
-	(gdb_tp_heap_buffer, gdb_jump_pad_buffer, gdb_jump_pad_buffer_end)
-	(gdb_trampoline_buffer, gdb_trampoline_buffer_end)
-	(gdb_trampoline_buffer_error): Use IP_AGENT_EXPORT_VAR.
-	* tracepoint.h (ATTR_USED, ATTR_NOINLINE, EXPORTED_SYMBOL):
-	Define.
-	(IP_AGENT_EXPORT_FUNC, IP_AGENT_EXPORT_VAR)
-	(IP_AGENT_EXPORT_VAR_DECL): Define.
-	(tracing): Declare.
-	(gdb_agent_get_raw_reg): Declare.
-
-2015-02-27  Tom Tromey  <tromey@redhat.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	Rename symbols whose names are reserved C++ keywords throughout.
-
-2015-02-27  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (COMPILER): New, get it from autoconf.
-	(CXX): Get from autoconf instead.
-	(COMPILE.pre): Use COMPILER.
-	(CC-LD): Rename to ...
-	(CC_LD): ... this.  Use COMPILER.
-	(gdbserver$(EXEEXT), gdbreplay$(EXEEXT), $(IPA_LIB)): Adjust.
-	(CXX_FOR_TARGET): Default to g++ instead of gcc.
-	* acinclude.m4: Include build-with-cxx.m4.
-	* configure.ac: Call AC_PROG_CXX and GDB_AC_BUILD_WITH_CXX.
-	Disable -Werror by default if building in C++ mode.
-	(build_warnings): Add -Wno-sign-compare, -Wno-write-strings and
-	-Wno-narrowing in C++ mode. Run supported-warning-flags tests with
-	the C++ compiler.  Save/restore CXXFLAGS too.
-	* configure: Regenerate.
-
-2015-02-27  Pedro Alves  <palves@redhat.com>
-
-	* acinclude.m4: Include libiberty.m4.
-	* configure.ac: Call libiberty_INIT.
-	* config.in, configure: Regenerate.
-
-2015-02-26  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_wait_1): When incrementing the PC past a
-	program breakpoint always use the_low_target.breakpoint_len as
-	increment, rather than the maximum between that and
-	the_low_target.decr_pc_after_break.
-
-2015-02-23  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (check_stopped_by_breakpoint): Don't check if the
-	thread was doing a step-over; always adjust the PC if
-	we stepped over a permanent breakpoint.
-	(linux_wait_1): If we stepped over breakpoint that was on top of a
-	permanent breakpoint, manually advance the PC past it.
-
-2015-02-23  Pedro Alves  <palves@redhat.com>
-
-	* linux-x86-low.c (REGSIZE): Define in both 32-bit and 64-bit
-	modes.
-	(x86_fill_gregset, x86_store_gregset): Use it when handling
-	$orig_eax.
-
-2015-02-20  Pedro Alves  <palves@redhat.com>
-
-	* thread-db.c: Include "nat/linux-procfs.h".
-	(thread_db_init): Skip listing new threads if the kernel supports
-	PTRACE_EVENT_CLONE and /proc/PID/task/ is accessible.
-
-2015-02-20  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (status_pending_p_callback): Use ptid_match.
-
-2015-02-19  Antoine Tremblay  <antoine.tremblay@ericsson.com>
-
-	PR breakpoints/16812
-	* linux-low.c (wstatus_maybe_breakpoint): Remove.
-	(linux_low_filter_event): Update wstatus_maybe_breakpoint name.
-	(linux_wait_1): Report SIGTRAP,SIGILL,SIGSEGV.
-
-2015-02-10  Antoine Tremblay <antoine.tremblay@ericsson.com>
-
-	PR breakpoints/15956
-	* tracepoint.c (cmd_qtinit): Add check for current_thread.
-
-2015-02-09  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* linux-low.c (linux_low_btrace_conf): Print size.
-	* server.c (handle_btrace_conf_general_set): New.
-	(hanle_general_set): Call handle_btrace_conf_general_set.
-	(handle_query): Report Qbtrace-conf:bts:size as supported.
-
-2015-02-09  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* linux-low.c (linux_low_enable_btrace): Update parameters.
-	(linux_low_btrace_conf): New.
-	(linux_target_ops)<to_btrace_conf>: Initialize.
-	* server.c (current_btrace_conf): New.
-	(handle_btrace_enable): Rename to ...
-	(handle_btrace_enable_bts): ... this.  Pass &current_btrace_conf
-	to target_enable_btrace.  Update comment.  Update users.
-	(handle_qxfer_btrace_conf): New.
-	(qxfer_packets): Add btrace-conf entry.
-	(handle_query): Report qXfer:btrace-conf:read as supported packet.
-	* target.h (target_ops)<enable_btrace>: Update parameters and comment.
-	(target_ops)<read_btrace_conf>: New.
-	(target_enable_btrace): Update parameters.
-	(target_read_btrace_conf): New.
-
-2015-02-09  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* server.c (handle_btrace_general_set): Remove call to
-	target_supports_btrace.
-	(supported_btrace_packets): New.
-	(handle_query): Call supported_btrace_packets.
-	* target.h: include btrace-common.h.
-	(btrace_target_info): Removed.
-	(supports_btrace, target_supports_btrace): Update parameters.
-
-2015-02-09  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* Makefile.in (SFILES): Add common/btrace-common.c.
-	(OBS): Add common/btrace-common.o.
-	(btrace-common.o): Add build rules.
-	* linux-low: Include btrace-common.h.
-	(linux_low_read_btrace): Use struct btrace_data.  Call
-	btrace_data_init and btrace_data_fini.
-
-2015-02-06  Pedro Alves  <palves@redhat.com>
-
-	* thread-db.c (find_new_threads_callback): Add debug output.
-
-2015-02-04  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (handle_extended_wait): Don't resume LWPs here.
-	(resume_stopped_resumed_lwps): New function.
-	(linux_wait_for_event_filtered): Use it.
-
-2015-01-15  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* Makefile.in (SFILES): Add linux-personality.c.
-	(linux-personality.o): New rule.
-	* configure.srv (srv_linux_obj): Add linux-personality.o to the
-	list of objects to be built.
-	* linux-low.c: Include nat/linux-personality.h.
-	(linux_create_inferior): Remove code to disable address space
-	randomization (moved to ../nat/linux-personality.c).  Create
-	cleanup to disable address space randomization.
-
-2015-01-15  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* Makefile.in (posix-strerror.o): New rule.
-	(mingw-strerror.o): Likewise.
-	* configure: Regenerated.
-	* configure.ac: Source file ../common/common.host.  Initialize new
-	variable srv_host_obs.  Add srv_host_obs to GDBSERVER_DEPFILES.
-
-2015-01-14  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (SFILES): Add nat/ppc-linux.c.
-	(ppc-linux.o): New rule.
-	* configure.srv (powerpc*-*-linux*): Add ppc-linux.o.
-	* configure.ac: AC_CHECK_FUNCS(getauxval).
-	* config.in: Re-generated.
-	* configure: Re-generated.
-	* linux-ppc-low.c (ppc_arch_setup) [__powerpc64__]: Call
-	ppc64_64bit_inferior_p
-
-2015-01-14  Yao Qi  <yao@codesourcery.com>
-
-	* linux-ppc-low.c: Include "nat/ppc-linux.h".
-	 (PPC_FEATURE_HAS_VSX): Move to nat/ppc-linux.h.
-	(PPC_FEATURE_HAS_ALTIVEC,  PPC_FEATURE_HAS_SPE): Likewise.
-	(PT_ORIG_R3, PT_TRAP): Likewise.
-	(PTRACE_GETVSXREGS, PTRACE_SETVSXREGS): Likewise.
-	(PTRACE_GETVRREGS, PTRACE_SETVRREGS): Likewise.
-	(PTRACE_GETEVRREGS, PTRACE_SETEVRREGS): Likewise.
-
-2015-01-10  Joel Brobecker  <brobecker@adacore.com>
-
-	* i387-fp.c (i387_cache_to_xsave): In look over
-	num_avx512_zmmh_high_registers, replace use of struct i387_xsave
-	zmmh_low_space field by use of zmmh_high_space.
-
-2015-01-09  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (step_over_bkpt): Move higher up in the file.
-	(handle_extended_wait): Don't store the stop_pc here.
-	(get_stop_pc): Adjust comments and rename to ...
-	(check_stopped_by_breakpoint): ... this.  Record whether the LWP
-	stopped for a software breakpoint or hardware breakpoint.
-	(thread_still_has_status_pending_p): New function.
-	(status_pending_p_callback): Use
-	thread_still_has_status_pending_p.  If the event is no longer
-	interesting, resume the LWP.
-	(handle_tracepoints): Add assert.
-	(maybe_move_out_of_jump_pad): Remove cancel_breakpoints call.
-	(wstatus_maybe_breakpoint): New function.
-	(cancel_breakpoint): Delete function.
-	(check_stopped_by_watchpoint): New function, factored out from
-	linux_low_filter_event.
-	(lp_status_maybe_breakpoint): Delete function.
-	(linux_low_filter_event): Remove filter_ptid argument.
-	Leave thread group exits pending here.	Store the LWP's stop PC.
-	Always leave events pending.
-	(linux_wait_for_event_filtered): Pull all events out of the
-	kernel, and leave them all pending.
-	(count_events_callback, select_event_lwp_callback): Consider all
-	events.
-	(cancel_breakpoints_callback, linux_cancel_breakpoints): Delete.
-	(select_event_lwp): Only give preference to the stepping LWP in
-	all-stop mode.	Adjust comments.
-	(ignore_event): New function.
-	(linux_wait_1): Delete 'retry' label.  Use ignore_event.  Remove
-	references to cancel_breakpoints.  Adjust to renames.  Also give
-	equal priority to all LWPs that have had events in non-stop mode.
-	If reporting a software breakpoint event, unadjust the LWP's PC.
-	(linux_wait): If linux_wait_1 returned an ignored event, retry.
-	(stuck_in_jump_pad_callback, move_out_of_jump_pad_callback):
-	Adjust.
-	(linux_resume_one_lwp): Store the LWP's PC.  Adjust.
-	(resume_status_pending_p): Use thread_still_has_status_pending_p.
-	(linux_stopped_by_watchpoint): Adjust.
-	(linux_target_ops): Remove reference to linux_cancel_breakpoints.
-	* linux-low.h (enum lwp_stop_reason): New.
-	(struct lwp_info) <stop_pc>: Adjust comment.
-	<stopped_by_watchpoint>: Delete field.
-	<stop_reason>: New field.
-	* linux-x86-low.c (x86_linux_prepare_to_resume): Adjust.
-	* mem-break.c (software_breakpoint_inserted_here)
-	(hardware_breakpoint_inserted_here): New function.
-	* mem-break.h (software_breakpoint_inserted_here)
-	(hardware_breakpoint_inserted_here): Declare.
-	* target.h (struct target_ops) <cancel_breakpoints>: Remove field.
-	(cancel_breakpoints): Delete.
-	* tracepoint.c (clear_installed_tracepoints, stop_tracing)
-	(upload_fast_traceframes): Remove references to
-	cancel_breakpoints.
-
-2015-01-09  Pedro Alves  <palves@redhat.com>
-
-	* thread-db.c (find_new_threads_callback): Ignore thread if the
-	kernel thread ID is -1.
-
-2015-01-09  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_attach_fail_reason_string): Move to
-	nat/linux-ptrace.c, and rename.
-	(linux_attach_lwp): Update comment.
-	(attach_proc_task_lwp_callback): New function.
-	(linux_attach): Adjust to rename and use
-	linux_proc_attach_tgid_threads.
-	(linux_attach_fail_reason_string): Delete declaration.
-
-2015-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbreplay.c (gdbreplay_version): Update copyright year to 2015.
-	* server.c (gdbserver_version): Likewise.
-
-2014-12-29  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* remote-utils.c: Include ctype.h.
-	(input_interrupt): Explicitly handle the case when the char
-	received is the NUL byte.  Improve the printing of non-ASCII
-	characters.
-
-2014-12-16  Joel Brobecker  <brobecker@adacore.com>
-
-	* linux-low.c (linux_low_filter_event): Update call to
-	linux_enable_event_reporting following the addition of
-	a new parameter to that function.
-
-2014-12-16  Catalin Udma  <catalin.udma@freescale.com>
-
-	PR server/17457
-	* linux-aarch64-low.c (AARCH64_FPSR_REGNO): New define.
-	(AARCH64_FPCR_REGNO): Likewise.
-	(AARCH64_NUM_REGS): Update to include fpsr/fpcr registers.
-	(aarch64_fill_fpregset): Add missing fpsr/fpcr registers.
-	(aarch64_store_fpregset): Likewise.
-
-2014-12-15  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_resume): Use PTRACE_SINGLESTEP_ONE if N == 1.
-	Remove FIXME comment about assumption about N.
-
-2014-12-13  Joel Brobecker  <brobecker@adacore.com>
-
-	* configure.ac: If large-file support is disabled in GDBserver,
-	pass --disable-largefile to ACX_CONFIGURE_DIR call for "gnulib".
-	* configure: Regenerate.
-
-2014-12-12  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-low.c (regsets_fetch_inferior_registers): Suppress the
-	warning upon ENODATA from ptrace.
-	* linux-s390-low.c (s390_store_tdb): New.
-	(s390_regsets): Add regset for NT_S390_TDB.
-
-2014-12-12  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-low.c (regsets_store_inferior_registers): Skip regsets
-	without a fill_function.
-	* linux-s390-low.c (s390_fill_last_break): Remove.
-	(s390_regsets): Set fill_function to NULL for NT_S390_LAST_BREAK.
-	(s390_arch_setup): Use regset's size instead of fill_function for
-	loop end condition.
-
-2014-12-12  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-low.c (regsets_fetch_inferior_registers): Do not invoke
-	the regset's store function when ptrace returned an error.
-	* regcache.c (get_thread_regcache): Invalidate register cache
-	before fetching inferior's registers.
-
-2014-12-12  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-low.c (regsets_fetch_inferior_registers): Rephrase
-	while-loop as for-loop.
-	(regsets_store_inferior_registers): Likewise.
-
-2014-11-28  Yao Qi  <yao@codesourcery.com>
-
-	* configure.ac(AC_CHECK_FUNCS): Remove readlink.
-	* config.in, configure: Re-generate.
-	* hostio.c (handle_unlink): Remove code checking HAVE_READLINK
-	is defined.
-
-2014-11-21  Yao Qi  <yao@codesourcery.com>
-
-	* configure.ac: Don't invoke AC_FUNC_ALLOCA.
-	(AC_CHECK_HEADERS): Remove malloc.h.
-	* configure: Re-generated.
-	* config.in: Re-generated.
-	* server.h: Don't include alloca.h and malloc.h.
-	* gdbreplay.c: Don't check HAVE_ALLOCA_H is defined.
-	Don't include malloc.h.
-
-2014-11-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_write_memory): Put lynx_read_memory and
-	corresponding ERRNO check in same block.
-
-2014-11-12  Pedro Alves  <palves@redhat.com>
-
-	* server.c (cont_thread): Update comment.
-	(start_inferior, attach_inferior): No longer clear cont_thread.
-	(handle_v_cont): No longer set cont_thread.
-	(captured_main): Clear cont_thread each time a GDB connects.
-
-2014-11-12  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_wait_1): Don't force a wait for the Hc
-	thread, and don't resume all threads if the Hc thread has exited.
-
-2014-11-12  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_request_interrupt): Always send a SIGINT to
-	the process group instead of to a specific LWP.
-
-2014-10-15  Pedro Alves  <palves@redhat.com>
-
-	PR server/17487
-	* win32-arm-low.c (arm_set_thread_context): Remove current_event
-	parameter.
-	(arm_set_thread_context): Delete.
-	(the_low_target): Adjust.
-	* win32-i386-low.c (debug_registers_changed)
-	(debug_registers_used): Delete.
-	(update_debug_registers_callback): New function.
-	(x86_dr_low_set_addr, x86_dr_low_set_control): Mark all threads as
-	needing to update their debug registers.
-	(win32_get_current_dr): New function.
-	(x86_dr_low_get_addr, x86_dr_low_get_control)
-	(x86_dr_low_get_status): Fetch the debug register from the thread
-	record's context.
-	(i386_initial_stuff): Adjust.
-	(i386_get_thread_context): Remove current_event parameter.  Don't
-	clear debug_registers_changed nor copy DR values to
-	debug_reg_state.
-	(i386_set_thread_context): Delete.
-	(i386_prepare_to_resume): New function.
-	(i386_thread_added): Mark the thread as needing to update irs
-	debug registers.
-	(the_low_target): Remove i386_set_thread_context and install
-	i386_prepare_to_resume.
-	* win32-low.c (win32_get_thread_context): Adjust.
-	(win32_set_thread_context): Use SetThreadContext
-	directly.
-	(win32_prepare_to_resume): New function.
-	(win32_require_context): New function, factored out from ...
-	(thread_rec): ... this.
-	(continue_one_thread): Call win32_prepare_to_resume on each thread
-	we're about to continue.
-	(win32_resume): Call win32_prepare_to_resume on the event thread.
-	* win32-low.h (struct win32_thread_info)
-	<debug_registers_changed>: New field.
-	(struct win32_target_ops): Change prototype of set_thread_context,
-	delete set_thread_context and add prepare_to_resume.
-	(win32_require_context): New declaration.
-
-2014-10-08  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include common-exceptions.h.
-
-2014-10-08  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include cleanups.h.
-
-2014-09-30  James Hogan  <james.hogan@imgtec.com>
-
-	* Makefile.in (clean): Add rm -f commands for mips-dsp-linux.c and
-	mips64-dsp-linux.c.
-
-2014-09-23  Yao Qi  <yao@codesourcery.com>
-
-	* linux-low.c (lp_status_maybe_breakpoint): New function.
-	(linux_low_filter_event): Call lp_status_maybe_breakpoint.
-	(count_events_callback): Likewise.
-	(select_event_lwp_callback): Likewise.
-	(cancel_breakpoints_callback): Likewise.
-
-2014-09-19  Don Breazeal  <donb@codesourcery.com>
-
-	* linux-low.c (handle_extended_wait): Call
-	linux_ptrace_get_extended_event.
-	(get_stop_pc, get_detach_signal, linux_low_filter_event): Call
-	linux_is_extended_waitstatus.
-
-2014-09-16  Joel Brobecker  <brobecker@adacore.com>
-
-	* Makefile.in (CPPFLAGS): Define.
-	(INTERNAL_CFLAGS_BASE): Add ${CPPFLAGS}.
-	(IPAGENT_CFLAGS): Remove ${CPPFLAGS}.
-
-2014-09-16  Gary Benson  <gbenson@redhat.com>
-
-	* inferiors.h (current_inferior): Renamed as...
-	(current_thread): New variable.  All uses updated.
-	* linux-low.c (get_pc): Renamed saved_inferior as saved_thread.
-	(maybe_move_out_of_jump_pad): Likewise.
-	(cancel_breakpoint): Likewise.
-	(linux_low_filter_event): Likewise.
-	(wait_for_sigstop): Likewise.
-	(linux_resume_one_lwp): Likewise.
-	(need_step_over_p): Likewise.
-	(start_step_over): Likewise.
-	(linux_stabilize_threads): Renamed save_inferior as saved_thread.
-	* linux-x86-low.c (x86_linux_update_xmltarget): Likewise.
-	* proc-service.c (ps_lgetregs): Renamed reg_inferior as reg_thread
-	and save_inferior as saved_thread.
-	* regcache.c (get_thread_regcache): Renamed saved_inferior as
-	saved_thread.
-	(regcache_invalidate_thread): Likewise.
-	* remote-utils.c (prepare_resume_reply): Likewise.
-	* thread-db.c (thread_db_get_tls_address): Likewise.
-	(disable_thread_event_reporting): Likewise.
-	(remove_thread_event_breakpoints): Likewise.
-	* tracepoint.c (gdb_agent_about_to_close): Renamed save_inferior
-	as saved_thread.
-	* target.h (set_desired_inferior): Renamed as...
-	(set_desired_thread): New declaration.  All uses updated.
-	* server.c (myresume): Updated comment to reference thread instead
-	of inferior.
-	(handle_serial_event): Likewise.
-	(handle_target_event): Likewise.
-
-2014-09-12  Tom Tromey  <tromey@redhat.com>
-	    Gary Benson  <gbenson@redhat.com>
-
-	* regcache.h: Include common-regcache.h.
-	(regcache_read_pc): Don't declare.
-	* regcache.c (get_thread_regcache_for_ptid): New function.
-
-2014-09-11  Tom Tromey  <tromey@redhat.com>
-	    Gary Benson  <gbenson@redhat.com>
-
-	* symbol.c: New file.
-	* Makefile.in (SFILES): Add symbol.c.
-	(OBS): Add symbol.o.
-
-2014-09-11  Gary Benson  <gbenson@redhat.com>
-
-	* target.c (target_stop_ptid, target_continue_ptid): New
-	functions.
-
-2014-09-11  Tom Tromey  <tromey@redhat.com>
-	    Gary Benson  <gbenson@redhat.com>
-
-	* target.h: Include target/target.h.
-	* target.c (target_read_memory, target_read_uint32)
-	(target_write_memory): New functions.
-
-2014-09-11  Gary Benson  <gbenson@redhat.com>
-
-	* server.h (debug_hw_points): Don't declare.
-	* server.c (debug_hw_points): Don't define.  Replace all uses
-	with show_debug_regs.
-	* linux-aarch64-low.c (debug_hw_points): Don't define.  Replace
-	all uses with show_debug_regs.
-
-2014-09-08  Edjunior Barbosa Machado  <emachado@linux.vnet.ibm.com>
-
-	* linux-ppc-low.c (ppc_collect_ptrace_register): Adjust routine to take
-	endianness into account.
-	(ppc_supply_ptrace_register): Likewise.
-
-2014-09-03  James Hogan  <james.hogan@imgtec.com>
-
-	* linux-mips-low.c (mips_read_description): Reset errno to 0 prior
-	to reading DSP_CONTROL with PTRACE_PEEKUSER ptrace call.
-
-2014-09-03  Gary Benson  <gbenson@redhat.com>
-
-	* linux-x86-low.c (x86_linux_prepare_to_resume): Use
-	ALL_DEBUG_ADDRESS_REGISTERS.
-
-2014-09-02  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.h: Renamed as...
-	* x86-low.h: New file.  All type, function and variable name
-	prefixes changed from "i386_" to "x86_".  All references updated.
-	* i386-low.c: Renamed as...
-	* x86-low.c: New file.  All type, function and variable name
-	prefixes changed from "i386_" to "x86_".  All references updated.
-
-2014-09-02  Gary Benson  <gbenson@redhat.com>
-
-	* linux-x86-low.c (x86_linux_new_process): Use XCNEW.
-	(x86_linux_new_thread): Likewise.
-
-2014-08-29  Gary Benson  <gbenson@redhat.com>
-
-	* server.h (setjmp.h): Do not include.
-	(toplevel): Do not declare.
-	(common-exceptions.h): Include.
-	(cleanups.h): Likewise.
-	* server.c (toplevel): Do not define.
-	(exit_code): New static global.
-	(detach_or_kill_for_exit_cleanup): New function.
-	(main): New function.  Original main renamed to...
-	(captured_main): New function.
-	* utils.c (verror) [!IN_PROCESS_AGENT]: Use throw_verror.
-
-2014-08-29  Gary Benson  <gbenson@redhat.com>
-
-	* Makefile.in (SFILES): Add common/common-exceptions.c.
-	(OBS): Add common-exceptions.o.
-	(common-exceptions.o): New rule.
-	* utils.c (prepare_to_throw_exception): New function.
-
-2014-08-29  Gary Benson  <gbenson@redhat.com>
-
-	* config.in: Regenerate.
-	* configure: Likewise.
-
-2014-08-29  Gary Benson  <gbenson@redhat.com>
-
-	* Makefile.in (SFILES): Add common/cleanups.c.
-	(OBS): cleanups.o.
-	(cleanups.o): New rule.
-
-2014-08-29  Gary Benson  <gbenson@redhat.com>
-
-	* utils.c (internal_vwarning): New function.
-
-2014-08-28  Gary Benson  <gbenson@redhat.com>
-
-	* utils.h (fatal): Remove declaration.
-	* utils.c (fatal): Remove function.
-
-2014-08-28  Gary Benson  <gbenson@redhat.com>
-
-	* tracepoint.c (gdb_agent_init): Replace fatal with
-	perror_with_name.
-	(initialize_tracepoint): Likewise.
-
-2014-08-28  Gary Benson  <gbenson@redhat.com>
-
-	* remote-utils.c (remote_prepare): Replace fatal with error.
-
-2014-08-28  Gary Benson  <gbenson@redhat.com>
-
-	* linux-low.c (linux_async): Replace fatal with warning.
-	Tidy up and return.
-	(linux_start_non_stop): Return -1 if linux_async failed.
-
-2014-08-28  Gary Benson  <gbenson@redhat.com>
-
-	* linux-x86-low.c (i386_dr_low_set_addr): Replace check with
-	gdb_assert.
-	(i386_dr_low_get_addr): Remove vague comment.
-	* win32-i386-low.c (i386_dr_low_set_addr): Replace check with
-	gdb_assert.
-
-2014-08-28  Gary Benson  <gbenson@redhat.com>
-
-	* inferiors.c (get_thread_process): Replace check with gdb_assert.
-	* linux-low.c (linux_wait_for_event_filtered): Replace fatal with
-	internal_error.
-	(linux_resume_one_lwp): Likewise.
-	* linux-x86-low.c (x86_siginfo_fixup): Replace checks with
-	gdb_assert.
-	* mem-break.c (raw_bkpt_type_to_target_hw_bp_type): Replace fatal
-	with internal_error.
-	* regcache.c (get_thread_regcache): Replace check with gdb_assert.
-	(init_register_cache): Replace fatal with gdb_assert_not_reached.
-	(find_register_by_name): Replace fatal with internal_error.
-	(find_regno): Likewise.
-	* tdesc.c (init_target_desc): Replace check with gdb_assert.
-	* thread-db.c (thread_db_create_event): Likewise.
-	(thread_db_load_search): Likewise.
-	(try_thread_db_load_1): Likewise.
-	* tracepoint.c (get_jump_space_head): Replace fatal with
-	internal_error.
-	(claim_trampoline_space): Likewise.
-	(have_fast_tracepoint_trampoline_buffer): Likewise.
-	(cmd_qtstart): Likewise.
-	(stop_tracing): Likewise.
-	(fast_tracepoint_collecting): Likewise.
-	(target_malloc): Likewise.
-	(download_tracepoint): Likewise.
-	(download_trace_state_variables): Replace check with gdb_assert.
-	(upload_fast_traceframes): Replace fatal with internal_error.
-
-2014-08-19  Tom Tromey  <tromey@redhat.com>
-	    Gary Benson  <gbenson@redhat.com>
-
-	* Makefile.in (SFILES): Add common/common-debug.c.
-	(OBS): Add common-debug.o.
-	(common-debug.o): New rule.
-	* debug.h (debug_printf): Don't declare.
-	* debug.c (debug_printf): Renamed and rewritten as...
-	(debug_vprintf): New function.
-
-2014-08-19  Gary Benson  <gbenson@redhat.com>
-
-	* utils.h: Do not include print-utils.h.
-
-2014-08-19  Tom Tromey  <tromey@redhat.com>
-	    Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Add static assertion.
-	(gdb_byte, CORE_ADDR, LONGEST, ULONGEST): Remove.
-
-2014-08-19  Tom Tromey  <tromey@redhat.com>
-	    Gary Benson  <gbenson@redhat.com>
-
-	* Makefile.in (SFILES): Add common/errors.c.
-	(OBS): Add errors.o.
-	(IPA_OBS): Add errors-ipa.o.
-	(errors.o): New rule.
-	(errors-ipa.o): Likewise.
-	* utils.h (perror_with_name, error, warning): Don't declare.
-	* utils.c (warning): Renamed and rewritten as...
-	(vwarning): New function.
-	(error): Renamed and rewritten as...
-	(verror): New function.
-	(internal_error): Renamed and rewritten as...
-	(internal_verror): New function.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* configure.ac (AC_CHECK_HEADERS): Remove errno.h.
-	* configure: Regenerate.
-	* config.in: Likewise.
-	* server.h: Do not include errno.h.
-	* event-loop.c: Likewise.
-	* hostio-errno.c: Likewise.
-	* linux-low.c: Likewise.
-	* remote-utils.c: Likewise.
-	* spu-low.c: Likewise.
-	* utils.c: Likewise.
-	* gdbreplay.c: Unconditionally include errno.h.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include string.h.
-	* event-loop.c: Likewise.
-	* linux-low.c: Likewise.
-	* regcache.c: Likewise.
-	* remote-utils.c: Likewise.
-	* spu-low.c: Likewise.
-	* utils.c: Likewise.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include gdb_assert.h.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include common-utils.h.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include ptid.h.
-	* notif.h: Likewise.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include gdb_locale.h.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include gdb/signals.h.
-	* win32-low.c: Likewise.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include pathmax.h.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include libiberty.h.
-	* linux-bfin-low.c: Likewise.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include ansidecl.h.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* linux-x86-low.c: Do not include stddef.h.
-	* lynx-ppc-low.c: Likewise.
-	* tracepoint.c: Likewise.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include stdarg.h.
-	* nto-low.c: Likewise.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include stdlib.h.
-	* inferiors.c: Likewise.
-	* linux-low.c: Likewise.
-	* regcache.c: Likewise.
-	* spu-low.c: Likewise.
-	* tracepoint.c: Likewise.
-	* utils.c: Likewise.
-
-2014-08-07  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Do not include stdio.h.
-	* linux-low.c: Likewise.
-	* remote-utils.c: Likewise.
-	* spu-low.c: Likewise.
-	* utils.c: Likewise.
-	* wincecompat.c: Likewise.
-
-2014-08-06  Gary Benson  <gbenson@redhat.com>
-
-	* regcache.c (init_register_cache): Move conditionals inside if.
-
-2014-08-06  Gary Benson  <gbenson@redhat.com>
-
-	* linux-low.c (linux_supports_non_stop): Use target_is_async_p.
-
-2014-07-31  Gary Benson  <gbenson@redhat.com>
-
-	* ax.h: Do not include server.h.
-	* gdbthread.h: Likewise.
-	* lynx-low.h: Likewise.
-	* notif.h: Likewise.
-
-2014-07-30  Gary Benson  <gbenson@redhat.com>
-
-	* server.h: Include common-defs.h.
-	Do not include config.h or build-gnulib-gdbserver/config.h.
-
-2014-07-30  Gary Benson  <gbenson@redhat.com>
-
-	* hostio-errno.c: Move server.h to top of includes list.
-	* inferiors.c: Likewise.
-	* linux-x86-low.c: Likewise.
-	* notif.c: Include server.h.
-
-2014-07-24  Tom Tromey  <tromey@redhat.com>
-	    Gary Benson  <gbenson@redhat.com>
-
-	* server.h (CORE_ADDR): Now unsigned.
-
-2014-07-16  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_kill_one_lwp): Use kill_lwp, not kill.
-
-2014-07-15  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_kill_one_lwp): Save errno and work with saved
-	copy.
-
-2014-07-11  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (kill_wait_lwp): New function, based on
-	kill_one_lwp_callback, but use my_waitpid directly.
-	(kill_one_lwp_callback, linux_kill): Use it.
-
-2014-06-23  Pedro Alves  <palves@redhat.com>
-
-	* linux-x86-low.c (x86_linux_prepare_to_resume): Clear DR_CONTROL
-	before setting DR0..DR3.
-
-2014-06-20  Gary Benson  <gbenson@redhat.com>
-
-	* configure.ac (AC_REPLACE_FUNCS) <vasprintf, vsnprintf>: Removed.
-	* configure: Regenerated.
-	* config.in: Likewise.
-
-2014-06-20  Gary Benson  <gbenson@redhat.com>
-
-	* Makefile.in (SFILES): Update locations for files moved
-	from common to nat.
-	(object file files): Reordered.
-
-2014-06-20  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.h (i386_dr_low_can_set_addr): Removed.
-	(i386_dr_low_set_addr): Likewise.
-	(i386_dr_low_get_addr): Likewise.
-	(i386_dr_low_can_set_control): Likewise.
-	(i386_dr_low_set_control): Likewise.
-	(i386_dr_low_get_control): Likewise.
-	(i386_dr_low_get_status): Likewise.
-	(i386_get_debug_register_length): Likewise.
-	* linux-x86-low.c (i386_dr_low_set_addr):
-	Changed signature.  Made static.
-	(i386_dr_low_get_addr): Likewise.
-	(i386_dr_low_set_control): Likewise.
-	(i386_dr_low_get_control): Likewise.
-	(i386_dr_low_get_status): Likewise.
-	(i386_dr_low): New global variable.
-	* win32-i386-low.c (i386_dr_low_set_addr):
-	Changed signature.  Made static.
-	(i386_dr_low_get_addr): Likewise.
-	(i386_dr_low_set_control): Likewise.
-	(i386_dr_low_get_control): Likewise.
-	(i386_dr_low_get_status): Likewise.
-	(i386_dr_low): New global variable.
-
-2014-06-20  Marcus Shawcroft  <marcus.shawcroft@arm.com>
-
-	* configure.ac: Invoke. AC_CHECK_TOOL(AR, ar).
-	* Makefile.in (AR, AR_FLAGS): Define.
-	* configure: Regenerate.
-
-2014-06-19  Gary Benson  <gbenson@redhat.com>
-
-	* Makefile.in (i386-dregs.o): New rule.
-	* configure.srv: Add i386-dregs.o to all targets using i386-low.o.
-	* i386-low.c (target.h): Remove include.
-	(TARGET_HAS_DR_LEN_8): Now in i386-dregs.c.
-	(DR_CONTROL_SHIFT): Likewise.
-	(DR_CONTROL_SIZE): Likewise.
-	(DR_RW_EXECUTE): Likewise.
-	(DR_RW_WRITE): Likewise.
-	(DR_RW_READ): Likewise.
-	(DR_RW_IORW): Likewise.
-	(DR_LEN_1): Likewise.
-	(DR_LEN_2): Likewise.
-	(DR_LEN_4): Likewise.
-	(DR_LEN_8): Likewise.
-	(DR_LOCAL_ENABLE_SHIFT): Likewise.
-	(DR_GLOBAL_ENABLE_SHIFT): Likewise.
-	(DR_ENABLE_SIZE): Likewise.
-	(DR_LOCAL_SLOWDOWN): Likewise.
-	(DR_GLOBAL_SLOWDOWN): Likewise.
-	(DR_CONTROL_RESERVED): Likewise.
-	(I386_DR_CONTROL_MASK): Likewise.
-	(I386_DR_VACANT): Likewise.
-	(I386_DR_LOCAL_ENABLE): Likewise.
-	(I386_DR_GLOBAL_ENABLE): Likewise.
-	(I386_DR_DISABLE): Likewise.
-	(I386_DR_SET_RW_LEN): Likewise.
-	(I386_DR_GET_RW_LEN): Likewise.
-	(I386_DR_WATCH_HIT): Likewise.
-	(i386_wp_op_t): Likewise.
-	(i386_show_dr): Likewise.
-	(i386_length_and_rw_bits): Likewise.
-	(i386_insert_aligned_watchpoint): Likewise.
-	(i386_remove_aligned_watchpoint): Likewise.
-	(i386_handle_nonaligned_watchpoint): Likewise.
-	i386_update_inferior_debug_regs(): Likewise.
-	(i386_dr_insert_watchpoint): Likewise.
-	(i386_dr_remove_watchpoint): Likewise.
-	(i386_dr_region_ok_for_watchpoint): Likewise.
-	(i386_dr_stopped_data_address): Likewise.
-	(i386_dr_stopped_by_watchpoint): Likewise.
-
-2014-06-19  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.c (i386_dr_show): Renamed to
-	i386_show_dr and made static.  All uses updated.
-	(i386_dr_length_and_rw_bits): Renamed to
-	i386_length_and_rw_bits and made static.
-	All uses updated.
-	(i386_dr_insert_aligned_watchpoint): Renamed to
-	i386_insert_aligned_watchpoint and made static.
-	All uses updated.
-	(i386_dr_remove_aligned_watchpoint): Renamed to
-	i386_remove_aligned_watchpoint and made static.
-	All uses updated.
-	(i386_dr_update_inferior_debug_regs): Renamed to
-	i386_update_inferior_debug_regs and made static.
-	All uses updated.
-
-2014-06-18  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.h (i386_dr_low_can_set_addr): New macro.
-	(i386_dr_low_can_set_control): Likewise.
-	(i386_get_debug_register_length): Likewise.
-	* i386-low.c (i386_dr_low_can_set_addr): Now in i386-low.h.
-	(i386_dr_low_can_set_control): Likewise.
-	(i386_get_debug_register_length): Likewise.
-
-2014-06-17  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.h (i386-dregs.h): New include.
-	(DR_FIRSTADDR): Now in i386-dregs.h.
-	(DR_LASTADDR): Likewise.
-	(DR_NADDR): Likewise.
-	(DR_STATUS): Likewise.
-	(DR_CONTROL): Likewise.
-	(i386_debug_reg_state): Likewise.
-	(i386_dr_insert_watchpoint): Likewise.
-	(i386_dr_remove_watchpoint): Likewise.
-	(i386_dr_region_ok_for_watchpoint): Likewise.
-	(i386_dr_stopped_data_address): Likewise.
-	(i386_dr_stopped_by_watchpoint): Likewise.
-	* i386-low.c (ALL_DEBUG_REGISTERS): Likewise.
-
-2014-06-18  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.h (i386_low_insert_watchpoint): Renamed to
-	i386_dr_insert_watchpoint.
-	(i386_low_remove_watchpoint): Renamed to
-	i386_dr_remove_watchpoint.
-	(i386_low_region_ok_for_watchpoint): Renamed to
-	i386_dr_region_ok_for_watchpoint.
-	(i386_low_stopped_data_address): Renamed to
-	i386_dr_stopped_data_address.
-	(i386_low_stopped_by_watchpoint): Renamed to
-	i386_dr_stopped_by_watchpoint.
-	* i386-low.c (i386_show_dr): Renamed to
-	i386_dr_show and made nonstatic.  All uses updated.
-	(i386_length_and_rw_bits): Renamed to
-	i386_dr_length_and_rw_bits and made nonstatic.
-	All uses updated.
-	(i386_insert_aligned_watchpoint): Renamed to
-	i386_dr_insert_aligned_watchpoint and made nonstatic.
-	All uses updated.
-	(i386_remove_aligned_watchpoint): Renamed to
-	i386_dr_remove_aligned_watchpoint and made nonstatic.
-	All uses updated.
-	(i386_update_inferior_debug_regs): Renamed to
-	i386_dr_update_inferior_debug_regs and made nonstatic.
-	All uses updated.
-	(i386_low_insert_watchpoint): Renamed to
-	i386_dr_insert_watchpoint.  All uses updated.
-	(i386_low_remove_watchpoint): Renamed to
-	i386_dr_remove_watchpoint.  All uses updated.
-	(i386_low_region_ok_for_watchpoint): Renamed to
-	i386_dr_region_ok_for_watchpoint.  All uses updated.
-	(i386_low_stopped_data_address): Renamed to
-	i386_dr_stopped_data_address.  All uses updated.
-	(i386_low_stopped_by_watchpoint): Renamed to
-	i386_dr_stopped_by_watchpoint.  All uses updated.
-
-2014-06-18  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.c (i386_dr_low_can_set_addr): New macro.
-	(i386_dr_low_can_set_control): Likewise.
-	(i386_insert_aligned_watchpoint): New check.
-
-2014-06-18  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.c (i386_update_inferior_debug_regs) <inf_state>:
-	Renamed to state.
-
-2014-06-18  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.c (i386_length_and_rw_bits): Use internal_error
-	instead of fatal and error.
-	(i386_handle_nonaligned_watchpoint): Likewise.
-
-2014-06-18  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.c (i386_get_debug_register_length): New macro.
-	(TARGET_HAS_DR_LEN_8): Remove conditional.  Use above macro.
-	(i386_show_dr): Use debug_printf instead of fprintf.  Use
-	phex to format values.
-
-2014-06-18  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.h: Comment changes.
-	* i386-low.c: Likewise.
-
-2014-06-18  Gary Benson  <gbenson@redhat.com>
-
-	* i386-low.c: Whitespace changes.
-
-2014-06-12  Tom Tromey  <tromey@redhat.com>
-
-	* utils.c (freeargv): Remove.
-
-2014-06-12  Tom Tromey  <tromey@redhat.com>
-
-	* debug.c (debug_printf): Remove HAVE_GETTIMEOFDAY checks.
-	* server.c (monitor_show_help): Remove HAVE_GETTIMEOFDAY check.
-	(parse_debug_format_options): Likewise.
-	(gdbserver_usage): Likewise.
-	* Makefile.in (LIBIBERTY_BUILDDIR, LIBIBERTY): New variables.
-	(SUBDIRS, REQUIRED_SUBDIRS): Add libiberty.
-	(gdbserver$(EXEEXT), gdbreplay$(EXEEXT)): Depend on and link
-	against libiberty.
-	($(LIBGNU)): Depend on libiberty.
-	(all-lib): Recurse into all subdirs.
-	(install-only): Invoke "install" target in subdirs.
-	(vasprintf.o, vsnprintf.o, safe-ctype.o, lbasename.o): Remove
-	targets.
-	* configure: Rebuild.
-	* configure.ac: Add ACX_CONFIGURE_DIR for libiberty.  Don't check
-	for vasprintf, vsnprintf, or gettimeofday.
-	* configure.srv: Don't add safe-ctype.o or lbasename.o to
-	srv_tgtobj.
-
-2014-06-05  Joel Brobecker  <brobecker@adacore.com>
-
-	* development.sh: Delete.
-	* Makefile.in (config.status): Adjust dependency on development.sh.
-	* configure.ac: Adjust development.sh source call.
-	* configure: Regenerate.
-
-2014-06-02  Pedro Alves  <palves@redhat.com>
-
-	* ax.c (gdb_free_agent_expr): New function.
-	* ax.h (gdb_free_agent_expr): New declaration.
-	* mem-break.c (delete_gdb_breakpoint_1): Also clear the commands
-	list.
-	(clear_breakpoint_conditions, clear_breakpoint_commands): Make
-	static.
-	(clear_breakpoint_conditions_and_commands): New function.
-	* mem-break.h (clear_breakpoint_conditions): Delete declaration.
-	(clear_breakpoint_conditions_and_commands): New declaration.
-
-2014-05-23  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
-
-	* linux-aarch64-low.c (asm/ptrace.h): Include.
-
-2014-05-21  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Fix TLS access for -static -pthread.
-	* gdbserver/thread-db.c (struct thread_db): Add td_thr_tlsbase_p.
-	(thread_db_get_tls_address): Call it if LOAD_MODULE is zero.
-	(thread_db_load_search, try_thread_db_load_1): Initialize it.
-
-2014-05-20  Pedro Alves  <palves@redhat.com>
-
-	* linux-aarch64-low.c (aarch64_insert_point)
-	(aarch64_remove_point): No longer check whether the type is
-	supported here.  Adjust to new interface.
-	(the_low_target): Install aarch64_supports_z_point_type as
-	supports_z_point_type method.
-	* linux-arm-low.c (raw_bkpt_type_to_arm_hwbp_type): New function.
-	(arm_linux_hw_point_initialize): Take an enum raw_bkpt_type
-	instead of a Z packet char.  Adjust.
-	(arm_supports_z_point_type): New function.
-	(arm_insert_point, arm_remove_point): Adjust to new interface.
-	(the_low_target): Install arm_supports_z_point_type.
-	* linux-crisv32-low.c (cris_supports_z_point_type): New function.
-	(cris_insert_point, cris_remove_point): Adjust to new interface.
-	Don't check whether the type is supported here.
-	(the_low_target): Install cris_supports_z_point_type.
-	* linux-low.c (linux_supports_z_point_type): New function.
-	(linux_insert_point, linux_remove_point): Adjust to new interface.
-	* linux-low.h (struct linux_target_ops) <insert_point,
-	remove_point>: Take an enum raw_bkpt_type instead of a char.  Add
-	raw_breakpoint pointer parameter.
-	<supports_z_point_type>: New method.
-	* linux-mips-low.c (mips_supports_z_point_type): New function.
-	(mips_insert_point, mips_remove_point): Adjust to new interface.
-	Use mips_supports_z_point_type.
-	(the_low_target): Install mips_supports_z_point_type.
-	* linux-ppc-low.c (the_low_target): Install NULL as
-	supports_z_point_type method.
-	* linux-s390-low.c (the_low_target): Install NULL as
-	supports_z_point_type method.
-	* linux-sparc-low.c (the_low_target): Install NULL as
-	supports_z_point_type method.
-	* linux-x86-low.c (x86_supports_z_point_type): New function.
-	(x86_insert_point): Adjust to new insert_point interface.  Use
-	insert_memory_breakpoint.  Adjust to new
-	i386_low_insert_watchpoint interface.
-	(x86_remove_point): Adjust to remove_point interface.  Use
-	remove_memory_breakpoint.  Adjust to new
-	i386_low_remove_watchpoint interface.
-	(the_low_target): Install x86_supports_z_point_type.
-	* lynx-low.c (lynx_target_ops): Install NULL as
-	supports_z_point_type callback.
-	* nto-low.c (nto_supports_z_point_type): New.
-	(nto_insert_point, nto_remove_point): Adjust to new interface.
-	(nto_target_ops): Install nto_supports_z_point_type.
-	* mem-break.c: Adjust intro comment.
-	(struct raw_breakpoint) <raw_type, size>: New fields.
-	<inserted>: Update comment.
-	<shlib_disabled>: Delete field.
-	(enum bkpt_type) <gdb_breakpoint>: Delete value.
-	<gdb_breakpoint_Z0, gdb_breakpoint_Z1, gdb_breakpoint_Z2,
-	gdb_breakpoint_Z3, gdb_breakpoint_Z4>: New values.
-	(raw_bkpt_type_to_target_hw_bp_type): New function.
-	(find_enabled_raw_code_breakpoint_at): New function.
-	(find_raw_breakpoint_at): New type and size parameters.  Use them.
-	(insert_memory_breakpoint): New function, based off
-	set_raw_breakpoint_at.
-	(remove_memory_breakpoint): New function.
-	(set_raw_breakpoint_at): Reimplement.
-	(set_breakpoint): New, based on set_breakpoint_at.
-	(set_breakpoint_at): Reimplement.
-	(delete_raw_breakpoint): Go through the_target->remove_point
-	instead of assuming memory breakpoints.
-	(find_gdb_breakpoint_at): Delete.
-	(Z_packet_to_bkpt_type, Z_packet_to_raw_bkpt_type): New functions.
-	(find_gdb_breakpoint): New function.
-	(set_gdb_breakpoint_at): Delete.
-	(z_type_supported): New function.
-	(set_gdb_breakpoint_1): New function, loosely based off
-	set_gdb_breakpoint_at.
-	(check_gdb_bp_preconditions, set_gdb_breakpoint): New functions.
-	(delete_gdb_breakpoint_at): Delete.
-	(delete_gdb_breakpoint_1): New function, loosely based off
-	delete_gdb_breakpoint_at.
-	(delete_gdb_breakpoint): New function.
-	(clear_gdb_breakpoint_conditions): Rename to ...
-	(clear_breakpoint_conditions): ... this.  Don't handle a NULL
-	breakpoint.
-	(add_condition_to_breakpoint): Make static.
-	(add_breakpoint_condition): Take a struct breakpoint pointer
-	instead of an address.  Adjust.
-	(gdb_condition_true_at_breakpoint): Rename to ...
-	(gdb_condition_true_at_breakpoint_z_type): ... this, and add
-	z_type parameter.
-	(gdb_condition_true_at_breakpoint): Reimplement.
-	(add_breakpoint_commands): Take a struct breakpoint pointer
-	instead of an address.  Adjust.
-	(gdb_no_commands_at_breakpoint): Rename to ...
-	(gdb_no_commands_at_breakpoint_z_type): ... this.  Add z_type
-	parameter.  Return true if no breakpoint was found.  Change debug
-	output.
-	(gdb_no_commands_at_breakpoint): Reimplement.
-	(run_breakpoint_commands): Rename to ...
-	(run_breakpoint_commands_z_type): ... this.  Add z_type parameter,
-	and change return type to boolean.
-	(run_breakpoint_commands): New function.
-	(gdb_breakpoint_here): Also check for Z1 breakpoints.
-	(uninsert_raw_breakpoint): Don't try to reinsert a disabled
-	breakpoint.  Go through the_target->remove_point instead of
-	assuming memory breakpoint.
-	(uninsert_breakpoints_at, uninsert_all_breakpoints): Uninsert
-	software and hardware breakpoints.
-	(reinsert_raw_breakpoint): Go through the_target->insert_point
-	instead of assuming memory breakpoint.
-	(reinsert_breakpoints_at, reinsert_all_breakpoints): Reinsert
-	software and hardware breakpoints.
-	(check_breakpoints, breakpoint_here, breakpoint_inserted_here):
-	Check both software and hardware breakpoints.
-	(validate_inserted_breakpoint): Assert the breakpoint is a
-	software breakpoint.  Set the inserted flag to -1 instead of
-	setting shlib_disabled.
-	(delete_disabled_breakpoints): Adjust.
-	(validate_breakpoints): Only validate software breakpoints.
-	Adjust to inserted flag change.
-	(check_mem_read, check_mem_write): Skip breakpoint types other
-	than software breakpoints.  Adjust to inserted flag change.
-	* mem-break.h (enum raw_bkpt_type): New enum.
-	(raw_breakpoint, struct process_info): Forward declare.
-	(Z_packet_to_target_hw_bp_type): Delete declaration.
-	(raw_bkpt_type_to_target_hw_bp_type, Z_packet_to_raw_bkpt_type)
-	(set_gdb_breakpoint, delete_gdb_breakpoint)
-	(clear_breakpoint_conditions): New declarations.
-	(set_gdb_breakpoint_at, clear_gdb_breakpoint_conditions): Delete.
-	(breakpoint_inserted_here): Update comment.
-	(add_breakpoint_condition, add_breakpoint_commands): Replace
-	address parameter with a breakpoint pointer parameter.
-	(gdb_breakpoint_here): Update comment.
-	(delete_gdb_breakpoint_at): Delete.
-	(insert_memory_breakpoint, remove_memory_breakpoint): Declare.
-	* server.c (process_point_options): Take a struct breakpoint
-	pointer instead of an address.  Adjust.
-	(process_serial_event) <Z/z packets>: Use set_gdb_breakpoint and
-	delete_gdb_breakpoint.
-	* spu-low.c (spu_target_ops): Install NULL as
-	supports_z_point_type method.
-	* target.h: Include mem-break.h.
-	(struct target_ops) <prepare_to_access_memory>: Update comment.
-	<supports_z_point_type>: New field.
-	<insert_point, remove_point>: Take an enum raw_bkpt_type argument
-	instead of a char.  Also take a raw breakpoint pointer.
-	* win32-arm-low.c (the_low_target): Install NULL as
-	supports_z_point_type.
-	* win32-i386-low.c (i386_supports_z_point_type): New function.
-	(i386_insert_point, i386_remove_point): Adjust to new interface.
-	(the_low_target): Install i386_supports_z_point_type.
-	* win32-low.c (win32_supports_z_point_type): New function.
-	(win32_insert_point, win32_remove_point): Adjust to new interface.
-	(win32_target_ops): Install win32_supports_z_point_type.
-	* win32-low.h (struct win32_target_ops):
-	<supports_z_point_type>: New method.
-	<insert_point, remove_point>: Take an enum raw_bkpt_type argument
-	instead of a char.  Also take a raw breakpoint pointer.
-
-2014-05-20  Pedro Alves  <palves@redhat.com>
-
-	* mem-break.h: Include break-common.h.
-	(Z_PACKET_SW_BP, Z_PACKET_HW_BP, Z_PACKET_WRITE_WP)
-	(Z_PACKET_READ_WP, Z_PACKET_ACCESS_WP): New defines.
-	(Z_packet_to_target_hw_bp_type): New declaration.
-	* mem-break.c (Z_packet_to_target_hw_bp_type): New function.
-	* i386-low.c (Z_PACKET_HW_BP, Z_PACKET_WRITE_WP, Z_PACKET_READ_WP)
-	(Z_PACKET_ACCESS_WP): Delete macros.
-	(Z_packet_to_hw_type): Delete function.
-	* i386-low.h: Don't include break-common.h here.
-	(Z_packet_to_hw_type): Delete declaration.
-	* linux-x86-low.c (x86_insert_point, x86_insert_point): Call
-	Z_packet_to_target_hw_bp_type instead of Z_packet_to_hw_type.
-	* win32-i386-low.c (i386_insert_point, i386_remove_point): Call
-	Z_packet_to_target_hw_bp_type instead of Z_packet_to_hw_type.
-	* linux-aarch64-low.c: Don't include break-common.h here.
-	(Z_PACKET_SW_BP, Z_PACKET_HW_BP, Z_PACKET_WRITE_WP)
-	(Z_PACKET_READ_WP, Z_PACKET_ACCESS_WP): Delete macros.
-	(Z_packet_to_target_hw_bp_type): Delete function.
-	* linux-mips-low.c (rsp_bp_type_to_target_hw_bp_type): Delete
-	function.
-	(mips_insert_point, mips_remove_point): Use
-	Z_packet_to_target_hw_bp_type.
-
-2014-05-20  Pedro Alves  <palves@redhat.com>
-
-	* linux-aarch64-low.c: Include break-common.h.
-	(enum target_point_type): Delete.
-	(Z_packet_to_point_type): Rename to ...
-	(Z_packet_to_target_hw_bp_type): ... this, and return a
-	target_hw_bp_type instead.
-	(aarch64_show_debug_reg_state): Take an enum target_hw_bp_type
-	instead of an enum target_point_type.
-	(aarch64_point_encode_ctrl_reg): Likewise.  Compute type mask from
-	breakpoint type.
-	(aarch64_dr_state_insert_one_point)
-	(aarch64_dr_state_remove_one_point, aarch64_handle_breakpoint)
-	(aarch64_handle_aligned_watchpoint)
-	(aarch64_handle_unaligned_watchpoint, aarch64_handle_watchpoint):
-	Take an enum target_hw_bp_type instead of an enum
-	target_point_type.
-	(aarch64_supports_z_point_type): New function.
-	(aarch64_insert_point, aarch64_remove_point): Use it.  Adjust to
-	use Z_packet_to_target_hw_bp_type.
-
-2014-05-20  Joel Brobecker  <brobecker@adacore.com>
-
-	* configure.ac: Only use -Werror by default when DEVELOPMENT
-	is true.
-	* configure: Regenerate.
-
-2014-05-19  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Fix gdbserver qGetTLSAddr for x86_64 -m32.
-	* linux-x86-low.c (X86_64_USER_REGS): New.
-	(x86_fill_gregset): Call memset for BUF first in x86_64 -m32 case.
-
-2014-04-28  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (i386-avx512.c): Fix the typo of generated file
-	name.
-
-2014-04-25  Pedro Alves  <palves@redhat.com>
-
-	PR server/16255
-	* linux-low.c (linux_attach_fail_reason_string): New function.
-	(linux_attach_lwp): Delete.
-	(linux_attach_lwp_1): Rename to ...
-	(linux_attach_lwp): ... this.  Take a ptid instead of a pid as
-	argument.  Remove "initial" parameter.  Return int instead of
-	void.  Don't error or warn here.
-	(linux_attach): Adjust to call linux_attach_lwp.  Call error on
-	failure to attach to the tgid.  Call warning when failing to
-	attach to an lwp.
-	* linux-low.h (linux_attach_lwp): Take a ptid instead of a pid as
-	argument.  Remove "initial" parameter.  Return int instead of
-	void.  Don't error or warn here.
-	(linux_attach_fail_reason_string): New declaration.
-	* thread-db.c (attach_thread): Adjust to linux_attach_lwp's
-	interface change.  Use linux_attach_fail_reason_string.
-
-2014-04-24  Michael Sturm  <michael.sturm@mintel.com>
-	    Walfred Tedeschi  <walfred.tedeschi@intel.com>
-
-	* Makefile.in: Added rules to handle new files
-	i386-avx512.c i386-avx512-linux.c amd64-avx512.c
-	amd64-avx512-linux.c x32-avx512.c x32-avx512-linux.c.
-	* configure.srv (srv_i386_regobj): Add i386-avx512.o.
-	(srv_i386_linux_regobj): Add i386-avx512-linux.o.
-	(srv_amd64_regobj): Add amd64-avx512.o and x32-avx512.o.
-	(srv_amd64_linux_regobj): Add amd64-avx512-linux.o and
-	x32-avx512-linux.o.
-	(srv_i386_32bit_xmlfiles): Add i386/32bit-avx512.xml.
-	(srv_i386_64bit_xmlfiles): Add i386/64bit-avx512.xml.
-	(srv_amd64_xmlfiles): Add i386/amd64-avx512.xml and
-	i386/x32-avx512.xml.
-	(srv_i386_linux_xmlfiles): Add i386/i386-avx512-linux.xml.
-	(srv_amd64_linux_xmlfiles): Add i386/amd64-avx512-linux.xml and
-	i386/x32-avx512-linux.xml.
-	* i387-fp.c (num_avx512_k_registers): New constant for number
-	of K registers.
-	(num_avx512_zmmh_low_registers): New constant for number of
-	lower ZMM registers (0-15).
-	(num_avx512_zmmh_high_registers): New constant for number of
-	higher ZMM registers (16-31).
-	(num_avx512_ymmh_registers): New contant for number of higher
-	YMM registers (ymm16-31 added by avx521 on x86_64).
-	(num_avx512_xmm_registers): New constant for number of higher
-	XMM registers (xmm16-31 added by AVX512 on x86_64).
-	(struct i387_xsave): Add space for AVX512 registers.
-	(i387_cache_to_xsave): Change raw buffer size to 64 characters.
-	Add code to handle AVX512 registers.
-	(i387_xsave_to_cache): Add code to handle AVX512 registers.
-	* linux-x86-low.c (init_registers_amd64_avx512_linux): New
-	prototypei from generated file.
-	(tdesc_amd64_avx512_linux): Likewise.
-	(init_registers_x32_avx512_linux): Likewise.
-	(tdesc_x32_avx512_linux): Likewise.
-	(init_registers_i386_avx512_linux): Likewise.
-	(tdesc_i386_avx512_linux): Likewise.
-	(x86_64_regmap): Add AVX512 registers.
-	(x86_linux_read_description): Add code to handle AVX512 XSTATE
-	mask.
-	(initialize_low_arch): Add code to initialize AVX512 registers.
-
-2014-04-23  Pedro Alves  <palves@redhat.com>
-
-	* mem-break.c (find_gdb_breakpoint_at): Make static.
-	* mem-break.h (find_gdb_breakpoint_at): Delete declaration.
-
-2014-04-23  Pedro Alves  <palves@redhat.com>
-
-	* i386-low.c: Don't include break-common.h here.
-	(i386_low_insert_watchpoint, i386_low_remove_watchpoint): Change
-	prototype to take target_hw_bp_type as argument instead of a Z
-	packet char.
-	* i386-low.h: Include break-common.h here.
-	(Z_packet_to_hw_type): Declare.
-	(i386_low_insert_watchpoint, i386_low_remove_watchpoint): Change
-	prototypes.
-	* linux-x86-low.c (x86_insert_point): Convert the packet number to
-	a target_hw_bp_type before calling i386_low_insert_watchpoint.
-	(x86_remove_point): Convert the packet number to a
-	target_hw_bp_type before calling i386_low_remove_watchpoint.
-	* win32-i386-low.c (i386_insert_point): Convert the packet number
-	to a target_hw_bp_type before calling i386_low_insert_watchpoint.
-	(i386_remove_point): Convert the packet number to a
-	target_hw_bp_type before calling i386_low_remove_watchpoint.
-
-2014-04-23  Pedro Alves  <palves@redhat.com>
-
-	* utils.h (perror_with_name): Add ATTRIBUTE_NORETURN.
-
-2014-04-10  Pedro Alves  <palves@redhat.com>
-
-	* mem-break.c (add_breakpoint_condition, add_breakpoint_commands):
-	Check if the condition or command is NULL before checking if the
-	breakpoint is known.  On success, return true.
-	* mem-break.h (add_breakpoint_condition): Document return.
-	(add_breakpoint_commands): Add describing comment.
-	* server.c (skip_to_semicolon): New function.
-	(process_point_options): Use it.
-
-2014-04-09  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_read_loadmap): Pass current_inferior directly
-	to lwpid_of.
-
-2014-02-27  Pedro Alves  <palves@redhat.com>
-
-	PR 12702
-	* inferiors.h (A_I_NEXT, ALL_INFERIORS_TYPE, ALL_PROCESSES): New
-	macros.
-	* linux-low.c (delete_lwp, handle_extended_wait): Add debug
-	output.
-	(last_thread_of_process_p): Take a PID argument instead of a
-	thread pointer.
-	(linux_wait_for_lwp): Delete.
-	(num_lwps, check_zombie_leaders, not_stopped_callback): New
-	functions.
-	(linux_low_filter_event): New function, party factored out from
-	linux_wait_for_event.
-	(linux_wait_for_event): Rename to ...
-	(linux_wait_for_event_filtered): ... this.  Add new filter ptid
-	argument.  Partly rewrite.  Always use waitpid(-1, WNOHANG) and
-	sigsuspend.  Check for zombie leaders.
-	(linux_wait_for_event): Reimplement as wrapper around
-	linux_wait_for_event_filtered.
-	(linux_wait_1): Handle TARGET_WAITKIND_NO_RESUMED.  Assume that if
-	a normal or signal exit is seen, it's the whole process exiting.
-	(wait_for_sigstop): No longer a for_each_inferior callback.
-	Rewrite on top of linux_wait_for_event_filtered.
-	(stop_all_lwps): Call wait_for_sigstop directly.
-	* server.c (resume, handle_target_event): Handle
-	TARGET_WAITKIND_NO_RESUMED.
-
-2014-02-26  Joel Brobecker  <brobecker@adacore.com>
-
-	* win32-low.c (psapi_get_dll_name,
-	* win32_CreateToolhelp32Snapshot): Delete.
-	(win32_CreateToolhelp32Snapshot, win32_Module32First)
-	(win32_Module32Next, load_toolhelp, toolhelp_get_dll_name):
-	Delete.
-	(handle_load_dll): Add function description.
-	Remove code using psapi_get_dll_name and toolhelp_get_dll_name.
-
-2014-02-26  Joel Brobecker  <brobecker@adacore.com>
-
-	* win32-low.c (win32_add_one_solib): Add 0x1000 to load_addr.
-	Add comment.
-	(win32_add_all_dlls): Remove 0x1000 offset applied to DLL
-	base address when calling win32_add_one_solib.
-	(handle_load_dll): Delete local variable load_addr.
-	Remove 0x1000 offset applied to DLL base address when calling
-	win32_add_one_solib.
-	(handle_unload_dll): Add comment.
-
-2014-02-26  Joel Brobecker  <brobecker@adacore.com>
-
-	* win32-low.c (win32_add_all_dlls): Renames
-	win32_ensure_ntdll_loaded.  Rewrite function documentation.
-	Adjust implementation to always load all DLLs.
-	Add 0x1000 offset to DLL base address when calling
-	win32_add_one_solib.
-	(child_initialization_done): New static global.
-	(do_initial_child_stuff): Set child_initialization_done to
-	zero during child initialization, and 1 after.  Replace call
-	to win32_ensure_ntdll_loaded by call to win32_add_all_dlls.
-	Add comment.
-	(match_dll_by_basename, dll_is_loaded_by_basename): Delete.
-	(handle_unload_dll): Add function documentation.
-	(get_child_debug_event): Ignore load and unload DLL events
-	during child initialization.
-
-2014-02-20  Doug Evans  <dje@google.com>
-
-	Remove global all_lwps.
-	* inferiors.h (ptid_of): Move here from linux-low.h.
-	(pid_of, lwpid_of): Ditto.
-	* linux-aarch64-low.c (debug_reg_change_callback): Update, "entry"
-	parameter is a struct thread_info * now.
-	(aarch64_notify_debug_reg_change): Fetch pid from current_inferior
-	directly.  Pass &all_threads to find_inferior instead of &all_lwps.
-	(aarch64_stopped_data_address): Fetch lwpid from current_inferior
-	directly.
-	(aarch64_linux_prepare_to_resume): Fetch ptid from thread.
-	(aarch64_arch_setup): Fetch lwpid from current_inferior directly.
-	* linux-arm-low.c (update_registers_callback): Update, "entry"
-	parameter is a struct thread_info * now.
-	Fetch lwpid from current_inferior directly.
-	(arm_insert_point): Pass &all_threads to find_inferior instead of
-	&all_lwps.
-	(arm_remove_point): Ditto.
-	(arm_stopped_by_watchpoint): Fetch lwp from current_inferior.
-	(arm_prepare_to_resume): Fetch pid from thread.
-	(arm_read_description): Fetch lwpid from current_inferior directly.
-	* linux-low.c (all_lwps): Delete.
-	(delete_lwp): Delete call to remove_inferior.
-	(handle_extended_wait): Fetch lwpid from thread.
-	(add_lwp): Don't set lwp->entry.id.  Remove call to
-	add_inferior_to_list.
-	(linux_attach_lwp_1): Fetch pid from current_inferior directly.
-	(linux_kill_one_lwp): Fetch ptid,lwpid from thread.
-	(kill_one_lwp_callback): Ditto.
-	(linux_kill): Don't dereference NULL pointer.
-	Fetch ptid,lwpid from thread.
-	(get_detach_signal): Fetch ptid from thread.
-	(linux_detach_one_lwp): Fetch ptid,lwpid from thread.
-	Simplify call to regcache_invalidate_thread.
-	(delete_lwp_callback): Update, "entry" parameter is a
-	struct thread_info * now.  Fetch pid from thread.
-	(linux_mourn): Pass &all_threads to find_inferior instead of &all_lwps.
-	(status_pending_p_callback): Update, "entry" parameter is a
-	struct thread_info * now.  Fetch ptid from thread.
-	(find_lwp_pid): Update, "entry" parameter is a
-	struct thread_info * now.
-	(linux_wait_for_lwp): Fetch pid from thread.
-	(linux_fast_tracepoint_collecting): Fetch lwpid from thread.
-	(maybe_move_out_of_jump_pad): Fetch lwpid from current_inferior.
-	(enqueue_one_deferred_signal): Fetch lwpid from thread.
-	(dequeue_one_deferred_signal): Ditto.
-	(cancel_breakpoint): Fetch ptid from current_inferior.
-	(linux_wait_for_event): Pass &all_threads to find_inferior,
-	not &all_lwps.  Fetch ptid, lwpid from thread.
-	(count_events_callback): Update, "entry" parameter is a
-	struct thread_info * now.
-	(select_singlestep_lwp_callback): Ditto.
-	(select_event_lwp_callback): Ditto.
-	(cancel_breakpoints_callback): Ditto.
-	(linux_cancel_breakpoints): Pass &all_threads to find_inferior,
-	not &all_lwps.
-	(select_event_lwp): Ditto.  Fetch ptid from event_thread.
-	(unsuspend_one_lwp): Update, "entry" parameter is a
-	struct thread_info * now.
-	(unsuspend_all_lwps): Pass &all_threads to find_inferior,
-	not &all_lwps.
-	(linux_stabilize_threads): Ditto.  And for for_each_inferior.
-	Fetch lwpid from thread, not lwp.
-	(linux_wait_1): Fetch ptid, lwpid from current_inferior.
-	Pass &all_threads to find_inferior, not &all_lwps.
-	(send_sigstop): Fetch lwpid from thread, not lwp.
-	(send_sigstop_callback): Update, "entry" parameter is a
-	struct thread_info * now.
-	(suspend_and_send_sigstop_callback): Ditto.
-	(wait_for_sigstop): Ditto.  Fetch ptid, lwpid from thread, lwp.
-	(stuck_in_jump_pad_callback): Update, "entry" parameter is a
-	struct thread_info * now.
-	(move_out_of_jump_pad_callback): Ditto.  Fetch ptid, lwpid
-	from thread, lwp.
-	(lwp_running): Update, "entry" parameter is a
-	struct thread_info * now.
-	(stop_all_lwps): Fetch ptid from thread.
-	Pass &all_threads to find_inferior, for_each_inferior, not &all_lwps.
-	(linux_resume_one_lwp): Fetch lwpid from thread.
-	(linux_set_resume_request): Update, "entry" parameter is a
-	struct thread_info * now.  Fetch pid, lwpid from thread.
-	(resume_status_pending_p): Update, "entry" parameter is a
-	struct thread_info * now.
-	(need_step_over_p): Ditto.  Fetch lwpid from thread.
-	(start_step_over): Fetch lwpid from thread.
-	(linux_resume_one_thread): Update, "entry" parameter is a
-	struct thread_info * now.  Fetch lwpid from thread.
-	(linux_resume): Pass &all_threads to find_inferior, not &all_lwps.
-	(proceed_one_lwp): Update, "entry" parameter is a
-	struct thread_info * now.  Fetch lwpid from thread.
-	(unsuspend_and_proceed_one_lwp): Update, "entry" parameter is a
-	struct thread_info * now.
-	(proceed_all_lwps): Pass &all_threads to find_inferior, not &all_lwps.
-	(unstop_all_lwps): Ditto.  Fetch lwpid from thread.
-	(regsets_fetch_inferior_registers): Fetch lwpid from current_inferior
-	directly.
-	(regsets_store_inferior_registers): Ditto.
-	(fetch_register, store_register): Ditto.
-	(linux_read_memory, linux_write_memory): Ditto.
-	(linux_request_interrupt): Ditto.
-	(linux_read_auxv): Ditto.
-	(linux_xfer_siginfo): Ditto.
-	(linux_qxfer_spu): Ditto.
-	(linux_qxfer_libraries_svr4): Ditto.
-	* linux-low.h (ptid_of, pid_of, lwpid_of): Delete,
-	moved to inferiors.h.
-	(get_lwp): Delete.
-	(get_thread_lwp): Update.
-	(struct lwp_info): Delete member "entry".  Simplify comment for
-	member "thread".
-	(all_lwps): Delete.
-	* linux-mips-low.c (mips_read_description): Fetch lwpid from
-	current_inferior directly.
-	(update_watch_registers_callback): Update, "entry" parameter is a
-	struct thread_info * now.  Fetch pid from thread.
-	(mips_linux_prepare_to_resume): Fetch ptid from thread.
-	(mips_insert_point): Fetch lwpid from current_inferior.
-	Pass &all_threads to find_inferior, not &all_lwps.
-	(mips_remove_point): Pass &all_threads to find_inferior, not &all_lwps.
-	(mips_stopped_by_watchpoint): Fetch lwpid from current_inferior
-	directly.
-	(mips_stopped_data_address): Ditto.
-	* linux-s390-low.c (s390_arch_setup): Fetch pid from current_inferior
-	directly.
-	* linux-tile-low.c (tile_arch_setup): Ditto.
-	* linux-x86-low.c (x86_get_thread_area): Fetch lwpid from thread.
-	(update_debug_registers_callback): Update, "entry" parameter is a
-	struct thread_info * now.  Fetch pid from thread.
-	(i386_dr_low_set_addr): Fetch pid from current_inferior directly.
-	Pass &all_threads to find_inferior, not &all_lwps.
-	(i386_dr_low_get_addr): Fetch ptid from current_inferior directly.
-	(i386_dr_low_set_control): Fetch pid from current_inferior directly.
-	Pass &all_threads to find_inferior, not &all_lwps.
-	(i386_dr_low_get_control): Fetch ptid from current_inferior directly.
-	(i386_dr_low_get_status): Ditto.
-	(x86_linux_prepare_to_resume): Fetch ptid from thread.
-	(x86_siginfo_fixup): Fetch lwpid from current_inferior directly.
-	(x86_linux_read_description): Ditto.
-	* proc-service.c (ps_getpid): Fetch pid from current_inferior directly.
-
-2014-02-20  Doug Evans  <dje@google.com>
-
-	* inferiors.c (get_first_inferior): Fix buglet.
-
-2014-02-19  Doug Evans  <dje@google.com>
-
-	* gdbthread.h (add_thread): Change result type to struct thread_info *.
-	* inferiors.c (add_thread): Change result type to struct thread_info *.
-	All callers updated.
-	(add_lwp): Call add_thread here instead of in callers.
-	All callers updated.
-	* linux-low.h (get_lwp_thread): Rewrite.
-	(struct lwp_info): New member "thread".
-
-2014-02-19  Doug Evans  <dje@google.com>
-
-	* linux-low.c (add_lwp): Change result to struct lwp_info *.
-	All callers updated.
-
-2014-02-19  Doug Evans  <dje@google.com>
-
-	* inferiors.c (add_thread): Fix whitespace.
-
-2014-02-19  Doug Evans  <dje@google.com>
-
-	* dll.c (clear_dlls): Replace accessing list implemention details
-	with API function.
-	* gdbthread.h (get_first_thread): Declare.
-	* inferiors.c (for_each_inferior_with_data): New function.
-	(get_first_thread): New function.
-	(find_thread_ptid): Simplify.
-	(get_first_inferior): New function.
-	(clear_list): Delete.
-	(one_inferior_p): New function.
-	(clear_inferior_list): New function.
-	(clear_inferiors): Update.
-	* inferiors.h (for_each_inferior_with_data): Declare.
-	(clear_inferior_list): Declare.
-	(one_inferior_p): Declare.
-	(get_first_inferior): Declare.
-	* linux-low.c (linux_wait_for_event): Replace accessing list
-	implemention details with API function.
-	* server.c (target_running): Ditto.
-	(accumulate_file_name_length): New function.
-	(emit_dll_description): New function.
-	(handle_qxfer_libraries): Replace accessing list implemention
-	details with API function.
-	(handle_qxfer_threads_worker): New function.
-	(handle_qxfer_threads_proper): Replace accessing list implemention
-	details with API function.
-	(handle_query): Ditto.
-	(visit_actioned_threads_callback_ftype): New typedef.
-	(visit_actioned_threads_data): New struct.
-	(visit_actioned_threads): Rewrite to be find_inferior callback.
-	(resume): Call find_inferior.
-	(handle_status): Replace accessing list implemention
-	details with API function.
-	(process_serial_event): Replace accessing list implemention details
-	with API function.
-	* target.c (set_desired_inferior): Replace accessing list implemention
-	details with API function.
-	* tracepoint.c (same_process_p): New function.
-	(gdb_agent_about_to_close): Replace accessing list implemention
-	details with API function.
-	* win32-low.c (child_delete_thread): Replace accessing list
-	implemention details with API function.
-	(match_dll_by_basename): New function.
-	(dll_is_loaded_by_basename): New function.
-	(win32_ensure_ntdll_loaded): Replace accessing list implemention
-	details call to dll_is_loaded_by_basename.
-
-2014-02-19  Doug Evans  <dje@google.com>
-
-	* dll.h (struct dll_info): Add comment.
-	* gdbthread.h (struct thread_info): Add comment.
-	(current_ptid): Simplify.
-	* inferiors.c (add_process): Update.
-	(remove_process): Update.
-	* inferiors.h (struct process_info): Rename member "head" to "entry".
-	* linux-low.c (delete_lwp): Update.
-	(add_lwp): Update.
-	(last_thread_of_process_p): Update.
-	(kill_one_lwp_callback, linux_kill): Update.
-	(status_pending_p_callback): Update.
-	(wait_for_sigstop): Update.  Simplify read of ptid.
-	(start_step_over): Update.
-	* linux-low.h (ptid_of, pid_of, lwpid_of): Update.
-	(get_lwp_thread): Update.
-	(struct lwp_info): Rename member "head" to "entry".
-	* regcache.h (inferior_list_entry): Delete.
-	* server.c (kill_inferior_callback): Update.
-	(detach_or_kill_inferior_callback): Update.
-	(print_started_pid): Update.
-	(print_attached_pid): Update.
-	(process_serial_event): Simplify read of ptid.
-	* thread-db.c (thread_db_create_event): Update.
-	(thread_db_get_tls_address): Update.
-	* win32-low.c (current_inferior_ptid): Simplify.
-
-2014-02-19  Tom Tromey  <tromey@redhat.com>
-
-	* target.h (struct target_ops) <supports_btrace>: Add target_ops
-	argument.
-	(target_supports_btrace): Update.
-
-2014-02-14  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (IPA_OBJS): Append rsp-low-ipa.o.
-	(rsp-low-ipa.o): New target.
-
-2014-02-12  Tom Tromey  <tromey@redhat.com>
-
-	* ax.c (gdb_parse_agent_expr): Use hex2bin, not
-	convert_ascii_to_int.
-	* regcache.c (registers_to_string): Likewise.
-	* remote-utils.c (decode_M_packet): Likewise.
-	* server.c (process_serial_event): Likewise.
-
-2014-02-12  Tom Tromey  <tromey@redhat.com>
-
-	* server.c (handle_query, handle_v_run): Use hex2bin, not
-	unhexify.
-	* tracepoint.c (cmd_qtdpsrc, cmd_qtdv, cmd_qtnotes): Likewise.
-
-2014-02-12  Tom Tromey  <tromey@redhat.com>
-
-	* ax.c (gdb_unparse_agent_expr): Use bin2hex, not
-	convert_int_to_ascii.
-	* regcache.c (registers_to_string, collect_register_as_string):
-	Likewise.
-	* remote-utils.c (look_up_one_symbol, relocate_instruction):
-	Likewise.
-	* server.c (process_serial_event): Likewise.
-	* tracepoint.c (cmd_qtstatus, response_source, response_tsv)
-	(cmd_qtbuffer, cstr_to_hexstr): Likewise.
-
-2014-02-12  Tom Tromey  <tromey@redhat.com>
-
-	* remote-utils.c (look_up_one_symbol, monitor_output): Use
-	bin2hex, not hexify.
-	* tracepoint.c (cmd_qtstatus): Likewise.
-
-2014-02-12  Tom Tromey  <tromey@redhat.com>
-
-	* remote-utils.c (monitor_output): Pass explicit length to
-	hexify.
-
-2014-02-12  Tom Tromey  <tromey@redhat.com>
-
-	* tracepoint.c: Include rsp-low.h.
-	* server.c: Include rsp-low.h.
-	* remote-utils.h (convert_ascii_to_int, convert_int_to_ascii)
-	(unhexify, hexify, remote_escape_output, unpack_varlen_hex): Don't
-	declare.
-	* remote-utils.c: Include rsp-low.h.
-	(fromhex, hexchars, ishex, unhexify, tohex, hexify)
-	(remote_escape_output, remote_unescape_input, unpack_varlen_hex)
-	(convert_int_to_ascii, convert_ascii_to_int): Move to
-	common/rsp-low.c.
-	* regcache.c: Include rsp-low.h.
-	* ax.c: Include rsp-low.h.
-	* Makefile.in (SFILES): Add common/rsp-low.c.
-	(OBS): Add rsp-low.o.
-	(rsp-low.o): New target.
-
-2014-02-12  Tom Tromey  <tromey@redhat.com>
-
-	* utils.h (pulongest, plongest, phex_nz): Don't declare.
-	Include print-utils.h.
-	* utils.c (NUMCELLS, CELLSIZE, get_cell, decimal2str, pulongest)
-	(plongest, thirty_two, phex_nz): Remove.
-	* Makefile.in (SFILES): Add common/print-utils.c.
-	(OBS): Add print-utils.o.
-	(print-utils-ipa.o): New target.
-	(print-utils.o): New target.
-	(IPA_OBJS): Add print-utils-ipa.o.
-
-2014-02-06  Tom Tromey  <tromey@redhat.com>
-
-	* Makefile.in (SFILES): Fix indentation.
-
-2014-02-05  Doug Evans  <dje@google.com>
-
-	* linux-low.c (linux_wait_for_event): Improve comment.
-	(linux_wait_1): Keep current_inferior in sync with event_child.
-
-2014-01-22  Doug Evans  <dje@google.com>
-
-	* gdbthread.h (gdb_id_to_thread): Delete, unused.
-
-2014-01-22  Doug Evans  <dje@google.com>
-
-	* configure.ac (AC_CHECK_FUNCS): Add test for gettimeofday.
-	* configure: Regenerate.
-	* config.in: Regenerate.
-	* Makefile.in (SFILES): Add debug.c.
-	(OBS): Add debug.o.
-	* debug.c: New file.
-	* debug.h: New file.
-	* linux-aarch64-low.c (*): Update all debugging printfs to use
-	debug_printf instead of fprintf.
-	* linux-arm-low.c (*): Ditto.
-	* linux-cris-low.c (*): Ditto.
-	* linux-crisv32-low.c (*): Ditto.
-	* linux-m32r-low.c (*): Ditto.
-	* linux-sparc-low.c (*): Ditto.
-	* linux-x86.c (*): Ditto.
-	* linux-low.c (*): Ditto.
-	(linux_wait_1): Add calls to debug_enter, debug_exit.
-	(linux_wait): Remove redundant debugging printf.
-	(stop_all_lwps): Add calls to debug_enter, debug_exit.
-	(linux_resume, unstop_all_lwps): Ditto.
-	* mem-break.c (*): Update all debugging printfs to use
-	debug_printf instead of fprintf.
-	* remote-utils.c (*): Ditto.
-	* thread-db.c (*): Ditto.
-	* server.c #include <ctype.h>, "gdb_vecs.h".
-	(debug_threads): Moved to debug.c.
-	(*): Update all debugging printfs to use debug_printf instead of
-	fprintf.
-	(start_inferior): Replace call to fflush with call to debug_flush.
-	(monitor_show_help): Mention set debug-format.
-	(parse_debug_format_options): New function.
-	(handle_monitor_command): Handle "monitor set debug-format".
-	(gdbserver_usage): Mention --debug-format.
-	(main): Parse --debug-format.
-	* server.h (debug_threads): Declaration moved to debug.h.
-	#include "debug.h".
-	* tracepoint.c (trace_debug_1) [!IN_PROCESS_AGENT]: Add version of
-	trace_debug_1 that uses debug_printf.
-	(tracepoint_look_up_symbols): Update all debugging printfs to use
-	debug_printf instead of fprintf.
-
-2014-01-20  Baruch Siach  <baruch@tkos.co.il>
-
-	* linux-xtensa-low.c: Include asm/ptrace.h instead of
-	sys/ptrace.h.
-
-2014-01-17  Pedro Alves  <palves@redhat.com>
-
-	PR build/16445
-	* linux-x86-low.c: Don't include elf/common.h if ELFMAG0 is
-	defined after including gdb_proc_service.h.
-
-2014-01-16  Doug Evans  <dje@google.com>
-
-	* dll.c (UNSPECIFIED_CORE_ADDR): New macro.
-	(match_dll): Use it.
-
-2014-01-16  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* target.h (target_ops) <read_btrace>: Change parameters and
-	return type to allow error reporting.
-	* server.c (handle_qxfer_btrace): Support delta reads.  Pass
-	trace reading errors on.
-	* linux-low.c (linux_low_read_btrace): Pass trace reading
-	errors on.
-	(linux_low_disable_btrace): New.
-
-2014-01-15  Doug Evans  <dje@google.com>
-
-	* inferiors.c (thread_id_to_gdb_id): Delete.
-	* inferiors.h (thread_id_to_gdb_id): Delete.
-
-2014-01-13  Eli Zaretskii  <eliz@gnu.org>
-
-	* Makefile.in (INCLUDE_CFLAGS): Remove trailing slash from
-	"-I$(srcdir)/../".  Fixes MinGW compilation errors with old GCC
-	versions.
-
-2014-01-08  Pedro Alves  <palves@redhat.com>
-
-	* server.c (handle_status): Don't discard previous queued stop
-	replies or thread's pending status here.
-	(main) <disconnection>: Do it here instead.
-
-2014-01-08  Pedro Alves  <palves@redhat.com>
-
-	* gdbthread.h (struct thread_info) <status_pending_p>: New field.
-	* server.c (visit_actioned_threads, handle_pending_status): New
-	function.
-	(handle_v_cont): Factor out parts to ...
-	(resume): ... this new function.  If in all-stop, and a thread
-	being resumed has a pending status, report it without actually
-	resuming.
-	(myresume): Adjust to use the new 'resume' function.
-	(clear_pending_status_callback, set_pending_status_callback)
-	(find_status_pending_thread_callback): New functions.
-	(handle_status): Handle the case of multiple threads having
-	interesting statuses to report.  Report threads' real last signal
-	instead of always reporting GDB_SIGNAL_TRAP.  Look for a thread
-	with an interesting thread to report the status for, instead of
-	always reporting the status of the first thread.
-
-2014-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbserver.c (gdbserver_version): Set copyright year to 2014.
-	* gdbreplay.c (gdbreplay_version): Likewise.
-
-2013-12-18  Yufeng Zhang  <yufeng.zhang@arm.com>
-
-	* linux-aarch64-low.c (aarch64_linux_set_debug_regs): Set
-	iov.iov_len with the real length in use.
-
-2013-12-13  Joel Brobecker  <brobecker@adacore.com>
-
-	* Makefile.in (safe-ctype.o, lbasename.o): New rules.
-	* configure.srv: Add safe-ctype.o and lbasename.o to srv_tgtobj
-	for all targets that use win32-low.c.
-	* win32-low.c (win32_ensure_ntdll_loaded): New function.
-	(do_initial_child_stuff): Add call to win32_ensure_ntdll_loaded.
-
-2013-12-13  Pedro Alves  <palves@redhat.com>
-
-	* target.c (mywait): Set OURSTATUS->KIND to TARGET_WAITKIND_STOPPED
-	if equal to TARGET_WAITKIND_LOADED.
-	* win32-low.c (cached_status): New static global.
-	(win32_wait): Add declaration.
-	(do_initial_child_stuff): Flush all initial pending debug events
-	up to the initial breakpoint.
-	(win32_wait): If CACHED_STATUS was set, return that instead
-	of doing a real wait.  Remove the code resuming the execution
-	of the inferior after receiving a TARGET_WAITKIND_LOADED event
-	during the initial phase.  Also remove the code changing
-	OURSTATUS->KIND from TARGET_WAITKIND_LOADED to
-	TARGET_WAITKIND_STOPPED.
-
-2013-12-11  Yao Qi  <yao@codesourcery.com>
-
-	* notif.c (handle_notif_ack): Return 0 if no notification
-	matches.
-
-2013-11-20  Doug Evans  <dje@google.com>
-
-	* linux-low.c (linux_set_resume_request): Fix comment.
-
-2013-11-20  Doug Evans  <dje@google.com>
-
-	* linux-low.c (resume_status_pending_p): Tweak comment.
-
-2013-11-20  Walfred Tedeschi  <walfred.tedeschi@intel.com>
-
-	* Makefile.in: Add i386-mpx.c, i386-mpx-linux.c, amd64-mpx.c,
-	amd64-mpx-linux.c, x32-mpx.c and x32-mpx-linux.c generation.
-	* configure.srv (srv_i386_regobj): Add i386-mpx.o.
-	(srv_i386_linux_regobj): Add i386-mpx-linux.o.
-	(srv_amd64_regobj): Add amd64-mpx.o.
-	(srv_amd64_linux_regobj): Add amd64-mpx-linux.o.
-	(srv_i386_32bit_xmlfiles): Add i386/32bit-mpx.xml.
-	(srv_i386_64bit_xmlfiles): Add i386/64bit-mpx.xml.
-	* i387-fp.c (num_pl_bnd_register) Added constant.
-	(num_pl_bnd_cfg_registers) Added constant.
-	(struct i387_xsave) Added reserved area and MPX fields.
-	(i387_cache_to_xsave, i387_xsave_to_cache) Add MPX.
-	* linux-x86-low.c (init_registers_i386_mpx_linux): Declare new
-	function.
-	(tdesc_i386_mpx_linux): Add MPX amd64 target.
-	(init_registers_amd64_mpx_linux): Declare new function.
-	(tdesc_amd64_mpx_linux): Add MPX amd64 target.
-	(x86_64_regmap): Add MPX registers.
-	(x86_linux_read_description): Add MPX case.
-	(initialize_low_arch): Initialize MPX targets.
-
-2013-11-18  Tom Tromey  <tromey@redhat.com>
-
-	* configure: Rebuild.
-	* configure.ac: Don't check for stdlib.h.
-	* gdbreplay.c: Unconditionally include stdlib.h.
-
-2013-11-18  Tom Tromey  <tromey@redhat.com>
-
-	* config.in: Rebuild.
-	* configure: Rebuild.
-	* configure.ac: Don't use AC_HEADER_DIRENT.
-
-2013-11-18  Tom Tromey  <tromey@redhat.com>
-
-	* server.h: Don't check HAVE_STRING_H.
-	* gdbreplay.c: Don't check HAVE_STRING_H.
-	* configure: Rebuild.
-
-2013-11-18  Tom Tromey  <tromey@redhat.com>
-
-	* Makefile.in (gdbreplay$(EXEEXT)): Depend on and link against
-	LIBGNU.
-
-2013-11-08  Tom Tromey  <tromey@redhat.com>
-
-	* configure, config.in: Rebuild.
-	* configure.ac: Remove unused configury.
-
-2013-11-08  Tom Tromey  <tromey@redhat.com>
-
-	* acinclude.m4: Include common.m4, codeset.m4.
-	* configure, config.in: Rebuild.
-	* configure.ac: Use GDB_AC_COMMON.
-
-2013-11-06  Andreas Arnez  <arnez@linux.vnet.ibm.com>
-
-	* linux-s390-low.c (HWCAP_S390_TE): New define.
-	(s390_arch_setup): Consider the TE field in the HWCAP for
-	determining 'have_regset_tdb'.
-
-2013-10-16  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	PR gdb/16014
-	* tracepoint.c (download_tracepoint_1): Remove unnecessary double
-	call to sizeof.
-
-2013-10-02  Pedro Alves  <palves@redhat.com>
-
-	* server.c (process_serial_event): Don't output "GDBserver
-	exiting" if GDB is connected through stdio.
-	* target.c (mywait): Likewise, be silent if GDB is connected
-	through stdio.
-
-2013-10-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_add_threads_after_attach): New function.
-	(lynx_attach): Remove call to add_thread.  Add call to
-	lynx_add_threads_after_attach instead.
-
-2013-09-28  Mike Frysinger  <vapier@gentoo.org>
-
-	* configure.ac (AC_CHECK_HEADERS): Add sys/syscall.h
-	* config.in, configure: Regenerated.
-
-2013-09-18  Yao Qi  <yao@codesourcery.com>
-
-	PR server/15959
-	* server.c (start_inferior): Clear 'resume_info'.
-
-2013-09-16  Jiong Wang  <jiwang@tilera.com>
-
-	* linux-tile-low.c (tile_regsets): Modify the size field to 64-bit
-	for each register.
-
-2013-09-16  Jiong Wang  <jiwang@tilera.com>
-
-	* configure.srv <tilegx*-*-linux*>: Remove linux-osdata.o from and add
-	linux-tile-low.o to srv_tgtobj.
-
-2013-09-16  Will Newton  <will.newton@linaro.org>
-
-	* linux-aarch64-low.c (aarch64_linux_set_debug_regs): Zero
-	out regs.
-
-2013-09-06  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (gdb_proc_service_h, regdef_h, regcache_h)
-	(signals_def, signals_h, ptid_h, ax_h, agent_h, linux_btrace_h)
-	(linux_osdata_h, vec_h, gdb_vecs_h, host_defs_h, libiberty_h)
-	(server_h, gdbthread_h, linux_low_h, linux_ptrace_h)
-	(gdb_thread_db_h, linux_procfs_h, lynx_low_h, nto_low_h)
-	(mips_linux_watch_h, i386_low_h, win32_low_h): Delete.
-
-2013-09-06  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (linux-btrace.o, mips-linux-watch.o): Remove
-	explicit header dependencies and use $COMPILE/$POSTCOMPILE.
-
-2013-09-06  Pedro Alves  <palves@redhat.com>
-
-	* linux-amd64-ipa.c: Include tracepoint.h.
-	* linux-i386-ipa.c: Include tracepoint.h.
-
-2013-09-06  Ricard Wanderlof  <ricardw@axis.com>
-
-	* linux-crisv32-low.c (PTRACE_GET_THREAD_AREA): New macro.
-	(ps_get_thread_area): New function.
-
-2013-09-06  Ricard Wanderlof  <ricardw@axis.com>
-
-	* linux-crisv32-low.c (elf_gregset_t): Delete typedef.
-	(initialize_low_arch): Call init_registers_crisv32 rather than
-	init_register_crisv32.
-
-2013-09-05  Pedro Alves  <palves@redhat.com>
-
-	* server.h (handle_vFile, hostio_last_error_from_errno): Move
-	to ...
-	* hostio.h: ... this new file.
-	* hostio.c, server.c, linux-low.c, nto-low.c, spu-low,
-	win32-low.c: Include hostio.h.
-
-2013-09-05  Pedro Alves  <palves@redhat.com>
-
-	* server.h (gdb_client_data, handler_func, callback_handler_func)
-	(delete_file_handler, add_file_handler, append_callback_event)
-	(delete_callback_event, start_event_loop, initialize_event_loop):
-	Move to event-loop.h and include it.
-	* event-loop.h: New file.
-
-2013-09-05  Pedro Alves  <palves@redhat.com>
-
-	* dll.c, inferiors.c, remote-utils.c, server.c: Include "dll.h".
-	* server.h (struct dll_info, all_dlls, dlls_changed, clear_dlls)
-	(loaded_dll, unloaded_dll): Move to ...
-	* dll.h: ... this new file.
-	* inferiors.c, remote-utils.c, win32-low.c: Include "dll.h".
-
-2013-09-05  Pedro Alves  <palves@redhat.com>
-
-	* server.h (current_process, get_thread_process, all_processes)
-	(add_inferior_to_list, for_each_inferior, current_inferior)
-	(remove_inferior, add_process, remove_process, find_process_pid)
-	(have_started_inferiors_p, have_attached_inferiors_p)
-	(thread_id_to_gdb_id, thread_to_gdb_id, gdb_id_to_thread_id)
-	(clear_inferiors, find_inferior, find_inferior_id)
-	(inferior_target_data, set_inferior_target_data)
-	(inferior_regcache_data, set_inferior_regcache_data): Move to
-	inferiors.h, and include it.
-	* inferiors.h: New file.
-
-2013-09-05  Pedro Alves  <palves@redhat.com>
-
-	* server.h (struct emit_ops, current_insn_ptr, emit_error):
-	Move ...
-	* ax.h: ... here.
-
-2013-09-05  Pedro Alves  <palves@redhat.com>
-
-	* ax.c, linux-low.c, linux-x86-low.c, server.c: Include
-	tracepoint.h.
-	* server.h (IPA_BUFSIZ, initialize_tracepoint, tracing)
-	(disconnected_tracing, tracepoint_look_up_symbols, stop_tracing
-	(handle_tracepoint_general_set, handle_tracepoint_query)
-	(tracepoint_finished_step, tracepoint_was_hit)
-	(release_while_stepping_state_list, current_traceframe)
-	(in_readonly_region, traceframe_read_mem)
-	(fetch_traceframe_registers, traceframe_read_sdata)
-	(traceframe_read_info, struct fast_tpoint_collect_status)
-	(fast_tracepoint_collecting, force_unlock_trace_buffer)
-	(handle_tracepoit_bkpts, initialize_low_tracepoint)
-	(supply_fast_tracepoint_registers)
-	(supply_static_tracepoint_registers, set_trampoline_buffer_space)
-	(ipa_tdesc, claim_trampoline_space)
-	(have_fast_tracepoint_trampoline_buffer, gdb_agent_about_to_close)
-	(agent_mem_read, agent_get_trace_state_variable_value)
-	(agent_set_trace_state_variable_value, agent_tsv_read)
-	(agent_mem_read_string, get_raw_reg_func_addr)
-	(get_get_tsv_func_addr, get_set_tsv_func_addr): Move to ...
-	* tracepoint.h: ... this new file.
-
-2013-09-05  Pedro Alves  <palves@redhat.com>
-
-	* server.h (perror_with_name, error, fatal, warning, paddress)
-	(pulongest, plongest, phex_nz, pfildes): Move to utils.h, and
-	include it.
-	* utils.h: New file.
-
-2013-09-05  Pedro Alves  <palves@redhat.com>
-
-	* server.h (remote_debug, noack_mode, transport_is_reliable)
-	(gdb_connected, STDIO_CONNECTION_NAME, remote_connection_is_stdio)
-	(read_ptid, write_ptid, putpkt, putpkt_binary, putpkt_notif)
-	(getpkt, remote_prepare, remote_open, remote_close, write_ok)
-	(write_enn, initialize_async_io, enable_async_io)
-	(disable_async_io, check_remote_input_interrupt_request)
-	(convert_ascii_to_int, convert_int_to_ascii, new_thread_notify)
-	(dead_thread_notify, prepare_resume_reply)
-	(decode_address_to_semicolon, decode_address, decode_m_packet)
-	(decode_M_packet, decode_X_packet, decode_xfer_write)
-	(decode_search_memory_packet, unhexify, hexify)
-	(remote_escape_output, unpack_varlen_hex, clear_symbol_cache)
-	(look_up_one_symbol, relocate_instruction)
-	(monitor_output): Move to remote-utils.h, and include it.
-	* remote-utils.h: New file.
-
-2013-09-05  Pedro Alves  <palves@redhat.com>
-
-	* server.h (_): Delete.
-
-2013-09-02  Pedro Alves  <palves@redhat.com>
-
-	* tracepoint.c (TRACEFRAME_EOB_MARKER_SIZE): New macro.
-	(init_trace_buffer): Ensure at least TRACEFRAME_EOB_MARKER_SIZE is
-	allocated.
-	(trace_buffer_alloc): Use TRACEFRAME_EOB_MARKER_SIZE.
-
-2013-09-02  Pierre Muller  <muller@sourceware.org>
-
-	* win32-low.c (child_xfer_memory): Check if ReadProcessMemory
-	or WriteProcessMemory complete successfully and handle
-	ERROR_PARTIAL_COPY error.
-
-2013-09-02  Pedro Alves  <palves@redhat.com>
-
-	* server.c (gdb_read_memory): Return -1 on traceframe memory read
-	error instead of EIO.
-
-2013-08-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	PR server/15604
-	* linux-low.c: Include filestuff.h.
-	(linux_create_inferior) <pid == 0>: Call close_most_fds.
-	* lynx-low.c: Include filestuff.h.
-	(lynx_create_inferior) <pid == 0>: Call close_most_fds.
-	* server.c: Include filestuff.h.
-	(main): Call notice_open_fds.
-	* spu-low.c: Include filestuff.h.
-	(spu_create_inferior) <pid == 0>: Call close_most_fds.
-
-2013-08-22  Luis Machado  <lgustavo@codesourcery.com>
-
-	* Makefile.in: Explain why ../target and ../nat are not
-	listed as include file search paths.
-	(linux-waitpid.o): New object file rule.
-	* configure.srv (srv_native_linux_obj): New variable.
-	Replace all occurrences of linux native object files with
-	$srv_native_linux_obj.
-	* linux-low.c: Include nat/linux-nat.h and nat/linux-waitpid.h.
-	(HAS_NOMMU): Move defining logic to common/linux-ptrace.c.
-	(linux_enable_event_reporting): Remove declaration.
-	(my_waitpid): Moved to common/linux-waitpid.c.
-	(linux_wait_for_event): Pass ptid when calling
-	linux_enable_event_reporting.
-	(linux_supports_tracefork_flag): Remove.
-	(linux_enable_event_reporting): Likewise.
-	(linux_tracefork_grandchild): Remove.
-	(STACK_SIZE): Moved to common/linux-ptrace.c.
-	(linux_tracefork_child): Remove.
-	(linux_test_for_tracefork): Remove.
-	(linux_look_up_symbols): Call linux_supports_traceclone.
-	(initialize_low): Remove call to linux_test_for_tracefork.
-	* linux-low.h (PTRACE_TYPE_ARG3): Move to
-	common/linux-ptrace.h.
-	(PTRACE_TYPE_ARG4): Likewise.
-	Include linux-ptrace.h.
-
-2013-08-21  Pedro Alves  <palves@redhat.com>
-
-	* config.in: Renegerate.
-
-2013-08-19  Luis Machado  <lgustavo@codesourcery.com>
-
-	* Makefile.in (INCLUDE_CFLAGS): Include -I$(srcdir)/../.
-	(SFILES): Remove $(srcdir)/common/target-common.c and
-	add $(srcdir)/target/waitstatus.c.
-	(OBS): Remove target-common.o and add waitstatus.o.
-	(server_h): Remove $(srcdir)/../common/target-common.h and
-	add $(srcdir)/../target/resume.h, $(srcdir)/../target/wait.h
-	and $(srcdir)/../target/waitstatus.h.
-	(target-common.o): Remove.
-	(waitstatus.o): New target object file.
-	* target.h: Do not include target-common.h and
-	include target/resume.h, target/wait.h and
-	target/waitstatus.h.
-
-2013-08-13  Luis Machado  <lgustavo@codesourcery.com>
-
-	* linux-arm-low.c: Rename all occurrences of PTRACE_ARG3_TYPE
-	to PTRACE_TYPE_ARG3.
-	* linux-low.c: Rename all occurrences of PTRACE_ARG3_TYPE
-	to PTRACE_TYPE_ARG3 and PTRACE_ARG4_TYPE to
-	PTRACE_TYPE_ARG4.
-	* linux-low.h (PTRACE_ARG3_TYPE): Rename to PTRACE_TYPE_ARG3.
-	(PTRACE_ARG4_TYPE): Rename to PTRACE_TYPE_ARG4.
-
-2013-07-27  Jie Zhang  <jie@codesourcery.com>
-	    Daniel Jacobowitz  <dan@codesourcery.com>
-	    Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (SFILES): Add common/mips-linux-watch.c.
-	(mips-linux-watch.o): New rule.
-	(mips_linux_watch_h): New variable.
-	* configure.srv <mips*-*-linux*>: Add mips-linux-watch.o to
-	srv_tgtobj.
-	* linux-mips-low.c: Include mips-linux-watch.h.
-	(struct arch_process_info, struct arch_lwp_info): New.
-	(update_watch_registers_callback): New function.
-	(mips_linux_new_process, mips_linux_new_thread) New functions.
-	(mips_linux_prepare_to_resume, mips_insert_point): New
-	functions.
-	(mips_remove_point, mips_stopped_by_watchpoint): New
-	functions.
-	(rsp_bp_type_to_target_hw_bp_type): New function.
-	(mips_stopped_data_address): New function.
-	(the_low_target): Add watchpoint support functions.
-
-2013-07-27  Yao Qi  <yao@codesourcery.com>
-
-	* i386-low.c: Include break-common.h.
-	(enum target_hw_bp_type): Remove.
-
-2013-07-24  Luis Machado  <lgustavo@codesourcery.com>
-
-	* Makefile.in (SFILES): /common/target-common.c.
-	(OBS): Add target-common.o.
-	(server_h): Add $(srcdir)/../common/target-common.h.
-	(target-common.o): New target.
-	* server.c (queue_stop_reply_callback): Free
-	status string after use.
-	* target.c (target_waitstatus_to_string): Remove.
-	* target.h: Include target-common.h.
-	(resume_kind): Likewise.
-	(target_waitkind): Likewise.
-	(target_waitstatus): Likewise.
-	(TARGET_WNOHANG): Likewise.
-
-2013-07-04  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (host_alias): Use @host_noncanonical@.
-	(target_alias): Use @target_noncanonical@.
-	* configure.ac: Use ACX_NONCANONICAL_TARGET and
-	ACX_NONCANONICAL_HOST.
-	* configure: Regenerated.
-
-	Revert:
-	2013-06-28  Mircea Gherzan  <mircea.gherzan@intel.com>
-
-	* configure.ac (version_host, version_target): Set and AC_SUBST them.
-	* configure: Rebuild.
-	* Makefile.in (version_host, version_target): Get from configure.
-	(version.c): Use $(version_host) and $(version_target).
-
-2013-07-03  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (config.status): Depend on development.sh.
-	* acinclude.m4: Include libmcheck.m4.
-	* configure: Regenerate.
-
-2013-07-02  Mircea Gherzan  <mircea.gherzan@intel.com>
-
-	* win32-low.c (winapi_DebugActiveProcessStop): Move the WINAPI
-	attribute inside the parentheses.
-	(winapi_DebugSetProcessKillOnExit): Ditto.
-	(winapi_DebugBreakProcess): Ditto.
-	(winapi_GenerateConsoleCtrlEvent): Ditto.
-
-2013-07-02  Mircea Gherzan  <mircea.gherzan@intel.com>
-
-	* notif.h (notif_event): Add a dummy member to avoid compiler
-	errors.
-
-2013-07-01  Pedro Alves  <palves@redhat.com>
-
-	* hostio.c (HOSTIO_PATH_MAX): Define.
-	(require_filename, handle_open, handle_unlink, handle_readlink):
-	Use it.
-
-2013-07-01  Pedro Alves  <palves@redhat.com>
-
-	* server.h: Include "pathmax.h".
-	* linux-low.c: Don't include sys/param.h.
-	(linux_pid_exe_is_elf_64_file): Use PATH_MAX instead of
-	MAXPATHLEN.
-	* win32-low.c: Don't include sys/param.h.
-	(win32_create_inferior): Use PATH_MAX instead of MAXPATHLEN.
-
-2013-07-01  Pedro Alves  <palves@redhat.com>
-
-	* event-loop.c: Don't check HAVE_UNISTD_H before including
-	<unistd.h>.
-	* gdbreplay.c: Likewise.
-	* remote-utils.c: Likewise.
-	* server.c: Likewise.
-	* configure.ac: Don't check for unistd.h.
-	* configure: Regenerate.
-
-2013-06-28  Tom Tromey  <tromey@redhat.com>
-
-	* Makefile.in (version.c): Use version.in, not
-	common/version.in.
-
-2013-06-28  Mircea Gherzan  <mircea.gherzan@intel.com>
-
-	* configure.ac (version_host, version_target): Set and AC_SUBST them.
-	* configure: Rebuild.
-	* Makefile.in (version_host, version_target): Get from configure.
-	(version.c): Use $(version_host) and $(version_target).
-
-2013-06-10  Dmitry Kozlov <ddk@codesourcery.com>
-
-	Fix trace-status to output user name without trailing colon.
-	* tracepoint.c (cmd_qtstatus): Remove unnecessary colon from user name.
-
-2013-06-10  Dmitry Kozlov <ddk@codesourcery.com>
-
-	Fix trace-status to output proper start-time and stop-time.
-	* tracepoint.c (cmd_qtstatus): Modify trace-status output to
-	output start time and stop time in hex as gdb expects.
-
-2013-06-26  Pedro Alves  <pedro@codesourcery.com>
-
-	* tracepoint.c (build_traceframe_info_xml): Output trace state
-	variables present in the trace buffer.
-
-2013-06-24  Tom Tromey  <tromey@redhat.com>
-
-	* Makefile.in (version.c): Use bfd/version.h, common/version.in,
-	create-version.sh.
-	(version.o): Remove.
-	* gdbreplay.c: Include version.h.
-	(version, host_name): Don't declare.
-	* server.h: Include version.h.
-	(version, host_name): Don't declare.
-
-2013-06-12  Pedro Alves  <palves@redhat.com>
-
-	* linux-x86-low.c (linux_is_elf64): Delete global.
-	(x86_siginfo_fixup): Replace reference to `linux_is_elf64' global
-	with local linux_pid_exe_is_elf_64_file use.
-
-2013-06-11  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (regset_disabled, disable_regset): New functions.
-	(regsets_fetch_inferior_registers)
-	(regsets_store_inferior_registers): Use them.
-	(initialize_regsets_info); Don't allocate the disabled_regsets
-	array here.
-	* linux-low.h (struct regsets_info) <disabled_regsets>: Extend
-	comment.
-
-2013-06-11  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (initialize_regsets_info): Use xcalloc instead of
-	xmalloc.
-
-2013-06-11  Pedro Alves  <palves@redhat.com>
-
-	* linux-x86-low.c (initialize_low_arch): Call
-	init_registers_x32_avx_linux.
-
-2013-06-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Fix compatibility with Android Bionic.
-	* linux-low.c (linux_qxfer_libraries_svr4): Ignore first entry even if
-	it is not empty.
-
-2013-06-07  Pedro Alves  <palves@redhat.com>
-
-	PR server/14823
-	* Makefile.in (OBS): Add tdesc.o.
-	(IPA_OBJS): Add tdesc-ipa.o.
-	(tdesc-ipa.o): New rule.
-	* ax.c (gdb_eval_agent_expr): Adjust register_size call to new
-	interface.
-	* linux-low.c (new_inferior): Delete.
-	(disabled_regsets, num_regsets): Delete.
-	(linux_add_process): Adjust to set the new per-process
-	new_inferior flag.
-	(linux_detach_one_lwp): Adjust to call regcache_invalidate_thread.
-	(linux_wait_for_lwp): Adjust.  Only call arch_setup if the event
-	was a stop.  When calling arch_setup, switch the current inferior
-	to the thread that got an event.
-	(linux_resume_one_lwp): Adjust to call regcache_invalidate_thread.
-	(regsets_fetch_inferior_registers)
-	(regsets_store_inferior_registers): New regsets_info parameter.
-	Adjust to use it.
-	(linux_register_in_regsets): New regs_info parameter.  Adjust to
-	use it.
-	(register_addr, fetch_register, store_register): New usrregs_info
-	parameter.  Adjust to use it.
-	(usr_fetch_inferior_registers, usr_store_inferior_registers): New
-	parameter regs_info.  Adjust to use it.
-	(linux_fetch_registers): Get the current inferior's regs_info, and
-	adjust to use it.
-	(linux_store_registers): Ditto.
-	[HAVE_LINUX_REGSETS] (initialize_regsets_info): New.
-	(initialize_low): Don't initialize the target_regsets here.  Call
-	initialize_low_arch.
-	* linux-low.h (target_regsets): Delete declaration.
-	(struct regsets_info): New.
-	(struct usrregs_info): New.
-	(struct regs_info): New.
-	(struct process_info_private) <new_inferior>: New field.
-	(struct linux_target_ops): Delete the num_regs, regmap, and
-	regset_bitmap fields.  New field regs_info.
-	[HAVE_LINUX_REGSETS] (initialize_regsets_info): Declare.
-	* i387-fp.c (num_xmm_registers): Delete.
-	(i387_cache_to_fsave, i387_fsave_to_cache): Adjust find_regno
-	calls to new interface.
-	(i387_cache_to_fxsave, i387_cache_to_xsave, i387_fxsave_to_cache)
-	(i387_xsave_to_cache): Adjust find_regno calls to new interface.
-	Infer the number of xmm registers from the regcache's target
-	description.
-	* i387-fp.h (num_xmm_registers): Delete.
-	* inferiors.c (add_thread): Don't install the thread's regcache
-	here.
-	* proc-service.c (gregset_info): Fetch the current inferior's
-	regs_info.  Adjust to use it.
-	* regcache.c: Include tdesc.h.
-	(register_bytes, reg_defs, num_registers)
-	(gdbserver_expedite_regs): Delete.
-	(get_thread_regcache): If the thread doesn't have a regcache yet,
-	create one, instead of aborting gdbserver.
-	(regcache_invalidate_one): Rename to ...
-	(regcache_invalidate_thread): ... this.
-	(regcache_invalidate_one): New.
-	(regcache_invalidate): Only invalidate registers of the current
-	process.
-	(init_register_cache): Add target_desc parameter, and use it.
-	(new_register_cache): Ditto.  Assert the target description has a
-	non zero registers_size.
-	(regcache_cpy): Add assertions.  Adjust.
-	(realloc_register_cache, set_register_cache): Delete.
-	(registers_to_string, registers_from_string): Adjust.
-	(find_register_by_name, find_regno, find_register_by_number)
-	(register_cache_size): Add target_desc parameter, and use it.
-	(free_register_cache_thread, free_register_cache_thread_one)
-	(regcache_release, register_cache_size): New.
-	(register_size): Add target_desc parameter, and use it.
-	(register_data, supply_register, supply_register_zeroed)
-	(supply_regblock, supply_register_by_name, collect_register)
-	(collect_register_as_string, collect_register_by_name): Adjust.
-	* regcache.h (struct target_desc): Forward declare.
-	(struct regcache) <tdesc>: New field.
-	(init_register_cache, new_register_cache): Add target_desc
-	parameter.
-	(regcache_invalidate_thread): Declare.
-	(regcache_invalidate_one): Delete declaration.
-	(regcache_release): Declare.
-	(find_register_by_number, register_cache_size, register_size)
-	(find_regno): Add target_desc parameter.
-	(gdbserver_expedite_regs, gdbserver_xmltarget): Delete
-	declarations.
-	* remote-utils.c: Include tdesc.h.
-	(outreg, prepare_resume_reply): Adjust.
-	* server.c: Include tdesc.h.
-	(gdbserver_xmltarget): Delete declaration.
-	(get_features_xml, process_serial_event): Adjust.
-	* server.h [IN_PROCESS_AGENT] (struct target_desc): Forward
-	declare.
-	(struct process_info) <tdesc>: New field.
-	(ipa_tdesc): Declare.
-	* tdesc.c: New file.
-	* tdesc.h: New file.
-	* tracepoint.c: Include tdesc.h.
-	[IN_PROCESS_AGENT] (ipa_tdesc): Define.
-	(get_context_regcache): Adjust to pass ipa_tdesc down.
-	(do_action_at_tracepoint): Adjust to get the register cache size
-	from the context regcache's description.
-	(traceframe_walk_blocks): Adjust to get the register cache size
-	from the current trace frame's description.
-	(traceframe_get_pc): Adjust to get current trace frame's
-	description and pass it down.
-	(gdb_collect): Adjust to get the register cache size from the
-	IPA's description.
-	* linux-amd64-ipa.c (tdesc_amd64_linux): Declare.
-	(gdbserver_xmltarget): Delete.
-	(initialize_low_tracepoint): Set the ipa's target description.
-	* linux-i386-ipa.c (tdesc_i386_linux): Declare.
-	(initialize_low_tracepoint): Set the ipa's target description.
-	* linux-x86-low.c: Include tdesc.h.
-	[__x86_64__] (is_64bit_tdesc): New.
-	(ps_get_thread_area, x86_get_thread_area): Use it.
-	(i386_cannot_store_register): Rename to ...
-	(x86_cannot_store_register): ... this.  Use is_64bit_tdesc.
-	(i386_cannot_fetch_register): Rename to ...
-	(x86_cannot_fetch_register): ... this.  Use is_64bit_tdesc.
-	(x86_fill_gregset, x86_store_gregset): Adjust register_size calls
-	to new interface.
-	(target_regsets): Rename to ...
-	(x86_regsets): ... this.
-	(x86_get_pc, x86_set_pc): Adjust register_size calls to new
-	interface.
-	(x86_siginfo_fixup): Use is_64bit_tdesc.
-	[__x86_64__] (tdesc_amd64_linux, tdesc_amd64_avx_linux)
-	(tdesc_x32_avx_linux, tdesc_x32_linux)
-	(tdesc_i386_linux, tdesc_i386_mmx_linux, tdesc_i386_avx_linux):
-	Declare.
-	(x86_linux_update_xmltarget): Delete.
-	(I386_LINUX_XSAVE_XCR0_OFFSET): Define.
-	(have_ptrace_getfpxregs, have_ptrace_getregset): New.
-	(AMD64_LINUX_USER64_CS): New.
-	(x86_linux_read_description): New, based on
-	x86_linux_update_xmltarget.
-	(same_process_callback): New.
-	(x86_arch_setup_process_callback): New.
-	(x86_linux_update_xmltarget): New.
-	(x86_regsets_info): New.
-	(amd64_linux_regs_info): New.
-	(i386_linux_usrregs_info): New.
-	(i386_linux_regs_info): New.
-	(x86_linux_regs_info): New.
-	(x86_arch_setup): Reimplement.
-	(x86_install_fast_tracepoint_jump_pad): Use is_64bit_tdesc.
-	(x86_emit_ops): Ditto.
-	(the_low_target): Adjust.  Install x86_linux_regs_info,
-	x86_cannot_fetch_register, and x86_cannot_store_register.
-	(initialize_low_arch): New.
-	* linux-ia64-low.c (tdesc_ia64): Declare.
-	(ia64_fetch_register): Adjust.
-	(ia64_usrregs_info, regs_info): New globals.
-	(ia64_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-sparc-low.c (tdesc_sparc64): Declare.
-	(sparc_fill_gregset_to_stack, sparc_store_gregset_from_stack):
-	Adjust.
-	(sparc_arch_setup): New function.
-	(sparc_regsets_info, sparc_usrregs_info, regs_info): New globals.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-ppc-low.c (tdesc_powerpc_32l, tdesc_powerpc_altivec32l)
-	(tdesc_powerpc_cell32l, tdesc_powerpc_vsx32l)
-	(tdesc_powerpc_isa205_32l, tdesc_powerpc_isa205_altivec32l)
-	(tdesc_powerpc_isa205_vsx32l, tdesc_powerpc_e500l)
-	(tdesc_powerpc_64l, tdesc_powerpc_altivec64l)
-	(tdesc_powerpc_cell64l, tdesc_powerpc_vsx64l)
-	(tdesc_powerpc_isa205_64l, tdesc_powerpc_isa205_altivec64l)
-	(tdesc_powerpc_isa205_vsx64l): Declare.
-	(ppc_cannot_store_register, ppc_collect_ptrace_register)
-	(ppc_supply_ptrace_register, parse_spufs_run, ppc_get_pc)
-	(ppc_set_pc, ppc_get_hwcap): Adjust.
-	(ppc_usrregs_info): Forward declare.
-	(!__powerpc64__) ppc_regmap_adjusted: New global.
-	(ppc_arch_setup): Adjust to the current process'es target
-	description.
-	(ppc_fill_vsxregset, ppc_store_vsxregset, ppc_fill_vrregset)
-	(ppc_store_vrregset, ppc_fill_evrregset, ppc_store_evrregse)
-	(ppc_store_evrregset): Adjust.
-	(target_regsets): Rename to ...
-	(ppc_regsets): ... this, and make static.
-	(ppc_usrregs_info, ppc_regsets_info, regs_info): New globals.
-	(ppc_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-s390-low.c (tdesc_s390_linux32, tdesc_s390_linux32v1)
-	(tdesc_s390_linux32v2, tdesc_s390_linux64, tdesc_s390_linux64v1)
-	(tdesc_s390_linux64v2, tdesc_s390x_linux64, tdesc_s390x_linux64v1)
-	(tdesc_s390x_linux64v2): Declare.
-	(s390_collect_ptrace_register, s390_supply_ptrace_register)
-	(s390_fill_gregset, s390_store_last_break): Adjust.
-	(target_regsets): Rename to ...
-	(s390_regsets): ... this, and make static.
-	(s390_get_pc, s390_set_pc): Adjust.
-	(s390_get_hwcap): New target_desc parameter, and use it.
-	[__s390x__] (have_hwcap_s390_high_gprs): New global.
-	(s390_arch_setup): Adjust to set the current process'es target
-	description.  Don't adjust the regmap.
-	(s390_usrregs_info, s390_regsets_info, regs_info): New globals.
-	[__s390x__] (s390_usrregs_info_3264, s390_regsets_info_3264)
-	(regs_info_3264): New globals.
-	(s390_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-mips-low.c (tdesc_mips_linux, tdesc_mips_dsp_linux)
-	(tdesc_mips64_linux, tdesc_mips64_dsp_linux): Declare.
-	[__mips64] (init_registers_mips_linux)
-	(init_registers_mips_dsp_linux): Delete defines.
-	[__mips64] (tdesc_mips_linux, tdesc_mips_dsp_linux): New defines.
-	(have_dsp): New global.
-	(mips_read_description): New, based on mips_arch_setup.
-	(mips_arch_setup): Reimplement.
-	(get_usrregs_info): New function.
-	(mips_cannot_fetch_register, mips_cannot_store_register)
-	(mips_get_pc, mips_set_pc, mips_fill_gregset, mips_store_gregset)
-	(mips_fill_fpregset, mips_store_fpregset): Adjust.
-	(target_regsets): Rename to ...
-	(mips_regsets): ... this, and make static.
-	(mips_regsets_info, mips_dsp_usrregs_info, mips_usrregs_info)
-	(dsp_regs_info, regs_info): New globals.
-	(mips_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-arm-low.c (tdesc_arm, tdesc_arm_with_iwmmxt)
-	(tdesc_arm_with_vfpv2, tdesc_arm_with_vfpv3, tdesc_arm_with_neon):
-	Declare.
-	(arm_fill_vfpregset, arm_store_vfpregset): Adjust.
-	(arm_read_description): New, with bits factored from
-	arm_arch_setup.
-	(arm_arch_setup): Reimplement.
-	(target_regsets): Rename to ...
-	(arm_regsets): ... this, and make static.
-	(arm_regsets_info, arm_usrregs_info, regs_info): New globals.
-	(arm_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-m68k-low.c (tdesc_m68k): Declare.
-	(target_regsets): Rename to ...
-	(m68k_regsets): ... this, and make static.
-	(m68k_regsets_info, m68k_usrregs_info, regs_info): New globals.
-	(m68k_regs_info): New function.
-	(m68k_arch_setup): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-sh-low.c (tdesc_sharch): Declare.
-	(target_regsets): Rename to ...
-	(sh_regsets): ... this, and make static.
-	(sh_regsets_info, sh_usrregs_info, regs_info): New globals.
-	(sh_regs_info, sh_arch_setup): New functions.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-bfin-low.c (tdesc_bfin): Declare.
-	(bfin_arch_setup): New function.
-	(bfin_usrregs_info, regs_info): New globals.
-	(bfin_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-cris-low.c (tdesc_cris): Declare.
-	(cris_arch_setup): New function.
-	(cris_usrregs_info, regs_info): New globals.
-	(cris_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-cris-low.c (tdesc_crisv32): Declare.
-	(cris_arch_setup): New function.
-	(cris_regsets_info, cris_usrregs_info, regs_info): New globals.
-	(cris_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-m32r-low.c (tdesc_m32r): Declare.
-	(m32r_arch_setup): New function.
-	(m32r_usrregs_info, regs_info): New globals.
-	(m32r_regs_info): Adjust.
-	(initialize_low_arch): New function.
-	* linux-tic6x-low.c (tdesc_tic6x_c64xp_linux)
-	(tdesc_tic6x_c64x_linux, tdesc_tic6x_c62x_linux): Declare.
-	(tic6x_usrregs_info): Forward declare.
-	(tic6x_read_description): New function, based on ...
-	(tic6x_arch_setup): ... this.  Reimplement.
-	(target_regsets): Rename to ...
-	(tic6x_regsets): ... this, and make static.
-	(tic6x_regsets_info, tic6x_usrregs_info, regs_info): New globals.
-	(tic6x_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-xtensa-low.c (tdesc_xtensa): Declare.
-	(xtensa_fill_gregset, xtensa_store_gregset): Adjust.
-	(target_regsets): Rename to ...
-	(xtensa_regsets): ... this, and make static.
-	(xtensa_regsets_info, xtensa_usrregs_info, regs_info): New
-	globals.
-	(xtensa_arch_setup, xtensa_regs_info): New functions.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-nios2-low.c (tdesc_nios2_linux): Declare.
-	(nios2_arch_setup): Set the current process'es tdesc.
-	(target_regsets): Rename to ...
-	(nios2_regsets): ... this.
-	(nios2_regsets_info, nios2_usrregs_info, regs_info): New globals.
-	(nios2_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-aarch64-low.c (tdesc_aarch64): Declare.
-	(aarch64_arch_setup): Set the current process'es tdesc.
-	(target_regsets): Rename to ...
-	(aarch64_regsets): ... this.
-	(aarch64_regsets_info, aarch64_usrregs_info, regs_info): New globals.
-	(aarch64_regs_info): New function.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* linux-tile-low.c (tdesc_tilegx, tdesc_tilegx32): Declare
-	globals.
-	(target_regsets): Rename to ...
-	(tile_regsets): ... this.
-	(tile_regsets_info, tile_usrregs_info, regs_info): New globals.
-	(tile_regs_info): New function.
-	(tile_arch_setup): Set the current process'es tdesc.
-	(the_low_target): Adjust.
-	(initialize_low_arch): New function.
-	* spu-low.c (tdesc_spu): Declare.
-	(spu_create_inferior, spu_attach): Set the new process'es tdesc.
-	* win32-arm-low.c (tdesc_arm): Declare.
-	(arm_arch_setup): New function.
-	(the_low_target): Install arm_arch_setup instead of
-	init_registers_arm.
-	* win32-i386-low.c (tdesc_i386, tdesc_amd64): Declare.
-	(init_windows_x86): Rename to ...
-	(i386_arch_setup): ... this.  Set `win32_tdesc'.
-	(the_low_target): Adjust.
-	* win32-low.c (win32_tdesc): New global.
-	(child_add_thread): Don't create the thread cache here.
-	(do_initial_child_stuff): Set the new process'es tdesc.
-	* win32-low.h (struct target_desc): Forward declare.
-	(win32_tdesc): Declare.
-	* lynx-i386-low.c (tdesc_i386): Declare global.
-	(lynx_i386_arch_setup): Set `lynx_tdesc'.
-	* lynx-low.c (lynx_tdesc): New global.
-	(lynx_add_process): Set the new process'es tdesc.
-	* lynx-low.h (struct target_desc): Forward declare.
-	(lynx_tdesc): Declare global.
-	* lynx-ppc-low.c (tdesc_powerpc_32): Declare global.
-	(lynx_ppc_arch_setup): Set `lynx_tdesc'.
-	* nto-low.c (nto_tdesc): New global.
-	(do_attach): Set the new process'es tdesc.
-	* nto-low.h (struct target_desc): Forward declare.
-	(nto_tdesc): Declare.
-	* nto-x86-low.c (tdesc_i386): Declare.
-	(nto_x86_arch_setup): Set `nto_tdesc'.
-
-2013-06-04  Gary Benson  <gbenson@redhat.com>
-
-	* server.c (handle_query): Add "augmented-libraries-svr4-read+"
-	to qSupported response when appropriate.
-	(handle_qxfer_libraries_svr4): Allow qXfer:libraries-svr4:read
-	with nonzero-length annex.
-	* linux-low.c (linux_qxfer_libraries_svr4): Parse and handle
-	arguments supplied in annex.
-
-2013-05-31  Doug Evans  <dje@google.com>
-
-	PR server/15594
-	* linux-x86-low.c (ps_get_thread_area): Properly extend address to
-	64 bits in 64-cross-32 environment.
-
-2013-05-28  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (clean): Remove reference to aarch64-without-fpu.c.
-	(aarch64-without-fpu.c): Delete rule.
-	* configure.srv (aarch64*-*-linux*): Remove references to
-	aarch64-without-fpu.o and aarch64-without-fpu.xml.
-	* linux-aarch64-low.c (init_registers_aarch64_without_fpu): Remove
-	declaration.
-
-2013-05-24  Pedro Alves  <palves@redhat.com>
-
-	* server.c (handle_v_cont) <vCont;r>: Use unpack_varlen_hex
-	instead of strchr/decode_address.  Error if the range isn't split
-	with a ','.  Don't assume there's be a ':' in the action.
-
-2013-05-23  Yao Qi  <yao@codesourcery.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (lwp_in_step_range): New function.
-	(linux_wait_1): If the thread was range stepping and stopped
-	outside the stepping range, report the stop to GDB.  Otherwise,
-	continue stepping.  Add range stepping debug output.
-	(linux_set_resume_request): Copy the step range from the resume
-	request to the lwp.
-	(linux_supports_range_stepping): New.
-	(linux_target_ops) <supports_range_stepping>: Set to
-	linux_supports_range_stepping.
-	* linux-low.h (struct linux_target_ops)
-	<supports_range_stepping>: New field.
-	(struct lwp_info) <step_range_start, step_range_end>: New fields.
-	* linux-x86-low.c (x86_supports_range_stepping): New.
-	(the_low_target) <supports_range_stepping>: Set to
-	x86_supports_range_stepping.
-	* server.c (handle_v_cont): Handle 'r' action.
-	(handle_v_requests): Append ";r" if the target supports range
-	stepping.
-	* target.h (struct thread_resume) <step_range_start,
-	step_range_end>: New fields.
-	(struct target_ops) <supports_range_stepping>:
-	New field.
-	(target_supports_range_stepping): New macro.
-
-2013-05-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_resume): Fix null_ptid/minus_one_ptid
-	confusion in comment.
-
-2013-05-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (struct process_info_private): New type.
-	(lynx_add_process): New function.
-	(lynx_create_inferior, lynx_attach): Replace calls to
-	add_process by calls to lynx_add_process.
-	(lynx_resume): If PTID is null, then try using
-	current_process()->private->last_wait_event_ptid.
-	Add comments.
-	(lynx_clear_inferiors): Delete.  The contents of that function
-	has been inlined in lynx_mourn;
-	(lynx_wait_1): Save the ptid in the process's private data.
-	(lynx_mourn): Free the process' private data.  Replace call
-	to lynx_clear_inferiors by call to clear_inferiors.
-
-2013-05-17  Yao Qi  <yao@codesourcery.com>
-
-	* i386-low.c (i386_length_and_rw_bits): Move the comment to
-	the right place.
-
-2013-05-16  Luis Machado  <lgustavo@codesourcery.com>
-
-	* linux-low.c: Move definition checks upwards for PT_TEXT_ADDR,
-	PT_DATA_ADDR and PT_TEXT_END_ADDR.  Update comments.
-	(linux_read_offsets): Remove PT_TEXT_ADDR, PT_DATA_ADDR and
-	PT_TEXT_END_ADDR guards.  Update comments.
-	(linux_target_op) <read_offsets>: Conditionally define to
-	linux_read_offsets if the target is UCLIBC and if it defines
-	PT_TEXT_ADDR, PT_DATA_ADDR and PT_TEXT_END_ADDR.
-
-2013-05-06  Sandra Loosemore  <sandra@codesourcery.com>
-	    Andrew Jenner  <andrew@codesourcery.com>
-
-	* Makefile.in (SFILES): Add linux-nios2-low.c.
-	(clean): Add action to delete nios2-linux.c.
-	(nios2-linux.c): New rule.
-	* configure.srv: Add nios2*-*-linux*.
-	* linux-nios2-low.c: New.
-
-2013-05-03  Hafiz Abid Qadeer  <abidh@codesourcery.com>
-
-	* tracepoint.c (cmd_qtinit): Call 'stop_tracing'.
-
-2013-04-25  Hui Zhu  <hui@codesourcery.com>
-
-	PR gdb/15186
-	* ax.c (ax_printf): Add fflush.
-
-2013-04-22  Tom Tromey  <tromey@redhat.com>
-
-	* Makefile.in (SFILES): Add filestuff.c.
-	(OBS): Add filestuff.o.
-	(filestuff.o): New target.
-	* config.in, configure: Rebuild.
-	* configure.ac: Check for fdwalk, pipe2.
-
-2013-04-17  Pedro Alves  <palves@redhat.com>
-
-	* configure.ac (USE_THREAD_DB): Delete variable.
-	(if test "$srv_linux_thread_db" = "yes"): AC_DEFINE USE_THREAD_DB.
-	Don't AC_SUBST USE_THREAD_DB.
-	* Makefile.in (INTERNAL_CFLAGS): Remove @USE_THREAD_DB@.
-	* config.in, configure: Regenerate.
-
-2013-04-16  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.h (struct lwp_info) <thread_known>: Move under
-	the USE_THREAD_DB #ifdef.
-
-2013-04-16  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (INTERNAL_CFLAGS): Add @USE_THREAD_DB@.
-	(linux-low.o): Delete rule.
-	* linux-low.h: Always include "gdb_thread_db.h" instead of
-	conditionally including thread_db.h.
-	(struct lwp_info) <th>: Guard with #ifdef USE_THREAD_DB instead of
-	HAVE_THREAD_DB_H.
-
-2013-04-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* Makefile.in (install-only): Fix make install regression.
-
-2013-04-05  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Convert man pages to texinfo, new gdbinit.5 texinfo page.
-	* Makefile.in (install-only): Remove $(man1dir) and gdbserver.1
-	installation.
-	* gdbserver.1: Remove.
-
-2013-03-22  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (handle_extended_wait): Don't call
-	linux_enable_event_reporting.
-
-2013-03-15  Tony Theodore  <tonyt@logyst.com>
-
-	PR build/9098:
-	* Makefile.in (SHELL): Use @SHELL@.
-
-2013-03-14  Sergio Durigan Junior  <sergiodj@redhat.com>
-
-	* tracepoint.c (cmd_qtv): Initialize `val' with zero, silencing
-	compiler warning.
-
-2013-03-13  Joel Brobecker  <brobecker@adacore.com>
-
-	* linux-low.c (linux_target_ops) [!HAVE_LINUX_BTRACE]:
-	Remove extraneous NULL element.
-
-2013-03-13  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (traceframe_read_tsv): Look for the last matched
-	'V' block in trace frame.
-
-2013-03-11  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* target.h (struct target_ops): Add btrace ops.
-	(target_supports_btrace): New macro.
-	(target_enable_btrace): New macro.
-	(target_disable_btrace): New macro.
-	(target_read_btrace): New macro.
-	* gdbthread.h (struct thread_info): Add btrace field.
-	* server.c: Include btrace-common.h.
-	(handle_btrace_general_set): New function.
-	(handle_btrace_enable): New function.
-	(handle_btrace_disable): New function.
-	(handle_general_set): Call handle_btrace_general_set.
-	(handle_qxfer_btrace): New function.
-	(struct qxfer qxfer_packets[]): Add btrace entry.
-	* inferiors.c (remove_thread): Disable btrace.
-	* linux-low: Include linux-btrace.h.
-	(linux_low_enable_btrace): New function.
-	(linux_low_read_btrace): New function.
-	(linux_target_ops): Add btrace ops.
-	* configure.srv (i[34567]86-*-linux*): Add linux-btrace.o.
-	Add srv_linux_btrace=yes.
-	(x86_64-*-linux*): Add linux-btrace.o.
-	Add srv_linux_btrace=yes.
-	* configure.ac: Define HAVE_LINUX_BTRACE.
-	* config.in: Regenerated.
-	* configure: Regenerated.
-
-2013-03-11  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* server.c (handle_qxfer): Preserve error message if -3 is
-	returned.
-	(qxfer): Document the -3 return value.
-
-2013-03-11  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* Makefile.in (SFILES): Add $(srcdir)/common/linux-btrace.c.
-	(linux_btrace_h): New variable.
-	(linux-btrace.o): New rule.
-
-2013-03-08  Stan Shebs  <stan@codesourcery.com>
-	    Hafiz Abid Qadeer  <abidh@codesourcery.com>
-
-	* tracepoint.c (trace_buffer_size): New global.
-	(DEFAULT_TRACE_BUFFER_SIZE): New define.
-	(init_trace_buffer): Change to one-argument function. Allocate
-	trace buffer memory.
-	(handle_tracepoint_general_set): Call cmd_bigqtbuffer_size to
-	handle QTBuffer:size packet.
-	(cmd_bigqtbuffer_size): New function.
-	(initialize_tracepoint): Call init_trace_buffer with
-	DEFAULT_TRACE_BUFFER_SIZE.
-	* server.c (handle_query): Add QTBuffer:size in the
-	supported packets.
-
-2013-03-07  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (cur_action, cur_step_action): Make them unsigned.
-	(cmd_qtfp): Initialize cur_action and cur_step_action 0 instead
-	of -1.
-	(cmd_qtsp): Adjust condition.  Do post increment.
-	Set cur_action and cur_step_action back to 0.
-
-2013-03-07  Jeremy Bennett  <jeremy.bennett@embecosm.com>
-
-	PR server/15236
-	* linux-low.c (linux_write_memory): Return early success if LEN is
-	zero.
-
-2013-03-05  Corinna Vinschen  <vinschen@redhat.de>
-
-	* configure.srv: Add x86_64-*-cygwin* as target.
-
-2013-02-28  Tom Tromey  <tromey@redhat.com>
-
-	* configure.ac: Invoke AC_SYS_LARGEFILE.
-	* configure, config.in: Rebuild.
-
-2013-02-28  Corinna Vinschen  <vinschen@redhat.com>
-
-	* win32-low.c: Throughout, fix format strings and casts of
-	printf-like functions to avoid type related warnings on all
-	platforms.
-	(get_child_debug_event): Print dwDebugEventCode as hex since
-	that's how it's usually documented.
-
-2013-02-28  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (cmd_qtbuffer): Call phex_nz instead of
-	pulongest.
-
-2013-02-27  Jiong Wang  <jiwang@tilera.com>
-
-	* Makefile.in (clean): Remove reg-tilegx.c, reg-tilegx32.c.
-	(reg-tilegx32.c): New rule.
-	* configure.srv (tilegx-*-linux*): Add reg-tilegx32.o to srv_regobj.
-	* linux-tile-low.c (tile_arch_setup): New function.  Invoke
-	different register info initializer according to elf class.
-	(init_registers_tilgx32): New function.  The tilegx32 register info
-	initializer.
-	(tile_fill_gregset): Use "uint_reg_t" to represent register size.
-	(tile_store_gregset): Likewise.
-
-2013-02-27  Yao Qi  <yao@codesourcery.com>
-
-	* server.c (process_point_options): Print debug message when
-	debug_threads is true.
-
-2013-02-26  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (cmd_qtbuffer): Don't set '\0' in OWN_BUF.
-
-2013-02-19  Pedro Alves  <palves@redhat.com>
-	    Kai Tietz <ktietz@redhat.com>
-
-	PR gdb/15161
-
-	* server.c (handle_query) <CRC check>: Use unpack_varlen_hex
-	instead of strtoul to extract address from packet.
-	(process_serial_event) <'z'>: Likewise.
-
-2013-02-18  Yao Qi  <yao@codesourcery.com>
-
-	* linux-bfin-low.c (the_low_target): Use NULL instead of 0.
-
-2013-02-14  Pedro Alves  <palves@redhat.com>
-
-	Plug memory leak.
-
-	* tracepoint.c (cmd_qtnotes): Free TRACING_USER_NAME,
-	TRACING_NOTES and TRACING_STOP_NOTE before clobbering.
-
-2013-02-14  Pedro Alves  <palves@redhat.com>
-
-	* tracepoint.c (cmd_qtdpsrc): Use savestring.
-
-2013-02-14  Pedro Alves  <palves@redhat.com>
-
-	* tracepoint.c (save_string): Delete.
-	(add_tracepoint_action): Use savestring instead of save_string.
-
-2013-02-12  Pedro Alves  <palves@redhat.com>
-
-	* linux-xtensa-low.c: Ditto.
-	* xtensa-xtregs.c: Ditto.
-
-2013-02-12  Sanimir Agovic  <sanimir.agovic@intel.com>
-
-	* thread-db.c (thread_db_get_tls_address): NULL pointer check
-	thread_db.
-
-2013-02-07  Marcus Shawcroft  <marcus.shawcroft@arm.com>
-
-	* linux-aarch64-low.c (aarch64_arch_setup): Clamp
-	aarch64_num_wp_regs and aarch64_num_bp_regs to
-	AARCH64_HWP_MAX_NUM and AARCH64_HBP_MAX_NUM respectively.
-
-2013-02-07  Marcus Shawcroft  <marcus.shawcroft@arm.com>
-
-	* linux-aarch64-low.c (ps_get_thread_area): Replace
-	PTRACE_GET_THREAD_AREA with PTRACE_GETREGSET.
-
-2013-02-04  Jim MacArthur  <jim.macarthur@arm.com>
-	    Marcus Shawcroft  <marcus.shawcroft@arm.com>
-	    Nigel Stephens  <nigel.stephens@arm.com>
-	    Yufeng Zhang  <yufeng.zhang@arm.com>
-
-	* Makefile.in (clean): Remove aarch64.c and aarch64-without-fpu.c.
-	(aarch64.c, aarch64-without-fpu.c): New targets.
-	* configure.srv (aarch64*-*-linux*): New.
-	* linux-aarch64-low.c: New file.
-
-2013-02-04  Marcus Shawcroft  <marcus.shawcroft@arm.com>
-
-	* linux-low.c (handle_extended_wait, linux_create_inferior)
-	(linux_attach_lwp_1, linux_kill_one_lwp, linux_attach_one_lwp)
-	(dequeue_one_deferred_signal, linux_resume_one_thread)
-	(fetch_register, linux_write_memory, linux_enable_event_reporting)
-	(linux_tracefork_grandchild, linux_test_for_tracefork)
-	(linux_read_offsets, linux_xfer_siginfo, linux_xfer_siginfo): Add
-	PTRACE_ARG3_TYPE and PTRACE_ARG4_TYPE cast to ptrace arguments
-	where the argument is 0.
-
-2013-01-25  Yao Qi  <yao@codesourcery.com>
-
-	* event-loop.c: Include "queue.h".
-	(gdb_event_p): New typedef.
-	(struct gdb_event) <next_event>: Remove.
-	(event_queue): Change to QUEUE(gdb_event_p).
-	(async_queue_event): Remove.
-	(gdb_event_xfree): New.
-	(initialize_event_loop): New.
-	(process_event): Use API from QUEUE.
-	(wait_for_event): Likewise.
-	* server.c (main): Call initialize_event_loop.
-	* server.h (initialize_event_loop): Declare.
-
-2013-01-18  Yao Qi  <yao@codesourcery.com>
-
-	* ax.h (struct eval_agent_expr_context): New.
-	(gdb_eval_agent_expr): Update declaration.
-	* ax.c (gdb_eval_agent_expr): Remove argument REGCACHE and
-	TFRAME.  Add new argument CTX.
-	* server.h (struct eval_agent_expr_context): Declare.
-	(agent_mem_read, agent_tsv_read): Update declaration.
-	(agent_mem_read_string): Likewise.
-	* tracepoint.c (eval_tracepoint_agent_expr): Remove.
-	(add_traceframe_block): Add new argument TPOINT.
-	Increase TPOINT->traceframe_usage.
-	(do_action_at_tracepoint): Call gdb_eval_agent_expr instead of
-	eval_tracepoint_agent_expr.
-	(condition_true_at_tracepoint): Likewise.
-	(agent_mem_read): Remove argument TFRAME.  Add argument CTX.
-	(agent_mem_read_string, agent_tsv_read): Likewise.
-
-2013-01-16  Yao Qi  <yao@codesourcery.com>
-
-	* linux-low.c (linux_resume_one_lwp): Don't check
-	'lwp->bp_reinsert != 0'.
-
-2013-01-07  Joel Brobecker  <brobecker@adacore.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* lynx-low.c (ptrace_request_to_str): Define a temporary
-	macro and use it to simplify this function's implementation.
-
-2013-01-07  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_resume): Call perror_with_name if lynx_ptrace
-	sets errno.
-
-2013-01-07  Joel Brobecker  <brobecker@adacore.com>
-
-	* configure.srv (i[34567]86-*-lynxos*): Set srv_xmlfiles.
-
-2013-01-07  Joel Brobecker  <brobecker@adacore.com>
-
-	* configure.srv (powerpc-*-lynxos*): Set srv_xmlfiles.
-
-2013-01-07  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_resume): Use the resume_info parameter
-	to determine the ptid for the lynx_ptrace call, unless
-	it is equal to minus_one_ptid, in which case we use the
-	ptid of the current_inferior.
-	(lynx_wait_1): After having received a thread create/exit
-	event, resume the inferior's execution using the signaling
-	thread's ptid, rather than the old ptid.
-
-2013-01-07  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_resume): Delete variable ret.
-
-2013-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbreplay.c (gdbreplay_version): Update copyright year.
-	* server.c (gdbserver_version): Likewise.
-
-2012-12-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_wait_1): Add debug trace before adding
-	new thread.
-
-2012-12-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (ptrace_request_to_str): Add handling for
-	PTRACE_GETTRACESIG.
-
-2012-12-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_attach): Delete variable new_process.
-
-2012-12-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (lynx_create_inferior): Delete variable
-	new_process.
-
-2012-12-17  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (ptrace_request_to_str): Do not handle
-	PTRACE_GETTHREADLIST if this macro does not exist.
-
-2012-12-15  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (OBS): Add notif.o.
-	* notif.c, notif.h: New.
-	* server.c: Include "notif.h".
-	(struct vstop_notif) <next>: Remove.
-	<base>: New field.
-	(queue_stop_reply): Update.
-	(push_event, send_next_stop_reply): Remove.
-	(discard_queued_stop_replies): Update.
-	(notif_stop): New variable.
-	(handle_v_stopped): Remove.
-	(handle_v_requests): Don't call handle_v_stopped.  Call
-	handle_ack_notif instead.
-	(queue_stop_reply_callback): Call notif_event_enque instead
-	of queue_stop_reply.
-	(handle_status): Don't call send_next_stop_reply, call
-	notif_write_event instead.
-	(kill_inferior_callback): Likewise.
-	(detach_or_kill_inferior_callback): Likewise.
-	(main): Call initialize_notif.
-	(process_serial_event): Call QUEUE_is_empty.
-	(handle_target_event): Call notif_push instead of push event.
-	* server.h (push_event): Remove declaration.
-
-2012-12-10  Tom Tromey  <tromey@redhat.com>
-
-	* Makefile.in (DEPMODE, DEPDIR, depcomp, COMPILE.pre)
-	(COMPILE.post, COMPILE, POSTCOMPILE, IPAGENT_COMPILE): New
-	macros.
-	(.c.o): Rewrite.
-	(ax-ipa.o, tracepoint-ipa.o, utils-ipa.o, format-ipa.o)
-	(common-utils-ipa.o, remote-utils-ipa.o, regcache-ipa.o)
-	(i386-linux-ipa.o, linux-i386-ipa.o, linux-amd64-ipa.o)
-	(amd64-linux-ipa.o, ax.o): Rewrite.
-	(event-loop.o, hostio.o, hostio-errno.o, inferiors.o, mem-break.o)
-	(proc-service.o, regcache.o, remote-utils.o, server.o, target.o)
-	(thread-db.o, tracepoint.o, utils.o, gdbreplay.o, dll.o): Remove.
-	(signals.o, linux-procfs.o, linux-ptrace.o, common-utils.o, vec.o)
-	(gdb_vecs.o, xml-utils.o, linux-osdata.o, ptid.o, buffer.o)
-	(format.o, agent.o, vasprintf.o, vsnprintf.o): Rewrite.
-	(i386-low.o, i387-fp.o, linux-low.o, linux-arm-low.o)
-	(linux-bfin-low.o, linux-cris-low.o, linux-crisv32-low.o)
-	(linux-ia64-low.o, linux-m32r-low.o, linux-mips-low.o)
-	(linux-ppc-low.o, linux-s390-low.o, linux-sh-low.o)
-	(linux-tic6x-low.o, linux-x86-low.o, linux-xtensa-low.o)
-	(linux-tile-low.o, lynx-low.o, lynx-ppc-low.o, nto-low.o)
-	(nto-x86-low.o, linux-low.o, win32-low.o, win32-arm-low.o)
-	(win32-i386-low.o, spu-low.o, reg-arm.o, arm-with-iwmmxt.o)
-	(arm-with-vfpv2.o, arm-with-vfpv3.o, arm-with-neon.o, reg-bfin.o)
-	(reg-cris.o, reg-crisv32.o, i386.o, i386-linux.o, i386-avx.o)
-	(i386-avx-linux.o, i386-mmx.o, i386-mmx-linux.o, reg-ia64.o)
-	(reg-m32r.o, reg-m68k.o, reg-cf.o, mips-linux.o, mips-dsp-linux.o)
-	(mips64-linux.o, mips64-dsp-linux.o, powerpc-32.o, powerpc-32l.o)
-	(powerpc-altivec32l.o, powerpc-cell32l.o, powerpc-vsx32l.o)
-	(powerpc-isa205-32l.o, powerpc-isa205-altivec32l.o)
-	(powerpc-isa205-vsx32l.o, powerpc-e500l.o, powerpc-64l.o)
-	(powerpc-altivec64l.o, powerpc-cell64l.o, powerpc-vsx64l.o)
-	(powerpc-isa205-64l.o, powerpc-isa205-altivec64l.o)
-	(powerpc-isa205-vsx64l.o, s390-linux32.o, s390-linux32v1.o)
-	(s390-linux32v2.o, s390-linux64.o, s390-linux64v1.o)
-	(s390-linux64v2.o, s390x-linux64.o, s390x-linux64v1.o)
-	(s390x-linux64v2.o, tic6x-c64xp-linux.o, tic6x-c64x-linux.o)
-	(tic6x-c62x-linux.o, reg-sh.o, reg-sparc64.o, reg-spu.o, amd64.o)
-	(amd64-linux.o, amd64-avx.o, amd64-avx-linux.o, x32.o)
-	(x32-linux.o, x32-avx.o, x32-avx-linux.o, reg-xtensa.o)
-	(reg-tilegx.o): Remove.
-	(all_object_files): New macro.
-	Include .deps files.
-	* aclocal.m4, configure: Rebuild.
-	* acinclude.m4: Include depstand.m4, lead-dot.m4.
-	* configure.ac: Invoke ZW_CREATE_DEPDIR,
-	ZW_PROG_COMPILER_DEPENDENCIES.  Compute GMAKE condition.
-
-2012-12-05  Tom Tromey  <tromey@redhat.com>
-
-	PR gdb/14917:
-	* server.h (current_insn_ptr, emit_error): Declare 'extern'.
-
-2012-11-28  Markus Metzger  <markus.t.metzger@intel.com>
-
-	* configure.ac: Check for linux/perf_event.h.
-	* config.in: Regenerated.
-	* configure: Regenerated.
-
-2012-11-26  Maxime Villard  <rustyBSD@gmx.fr>
-
-	* hostio.c (handle_readlink): Decrease buffer size
-	parameter passed to readlink by one byte.
-
-2012-11-26  Yao Qi  <yao@codesourcery.com>
-
-	* configure.ac (build_warnings): Append '-Wempty-body'.
-	* configure: Regenerated.
-	* linux-low.c (linux_create_inferior): Use braces for empty 'if'
-	body.
-
-2012-11-15  Pierre Muller  <muller@sourceware.org>
-
-	* configure.ac (AC_CHECK_HEADERS): Add wait.h header.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* linux-low.c: Use "gdb_stat.h" header instead of <sys/stat.h> header.
-	Use "gdb_wait.h" header instead of <sys/wait.h> header.
-	* lynx-low.c: Use "gdb_wait.h" header instead of <sys/wait.h> header.
-	* remote-utils.c: Use "gdb_stat.h" header instead of <sys/stat.h>
-	header.
-	* server.c: Remove HAVE_WAIT_H conditional.  Use "gdb_wait.h" header
-	instead of <sys/wait.h> header.
-	* spu-low.c: Use "gdb_wait.h" header instead of <sys/wait.h> header.
-
-2012-11-13 Markus Metzger  <markus.t.metzger@intel.com>
-
-	* Makefile.in: (INTERNAL_CFLAGS): Add -DGDBSERVER
-	(various make rules): Remove -DGDBSERVER
-
-2012-11-09  Yao Qi  <yao@codesourcery.com>
-
-	* spu-low.c (current_ptid): Move it to ..
-	* gdbthread.h: ... here.  New.
-	* remote-utils.c (read_ptid): Use macro 'current_ptid'.
-	* server.c (myresume, process_serial_event): Likewise.
-	* thread-db.c (thread_db_find_new_threads): Likewise.
-	* tracepoint.c (run_inferior_command): Likewise.
-
-2012-10-01  Andrew Burgess  <aburgess@broadcom.com>
-
-	* server.c (handle_search_memory_1): Include access length in
-	warning message.
-
-2012-09-05  Michael Brandt  <michael.brandt@axis.com>
-
-	* linux-crisv32-low.c: Fix compile errors.
-
-2012-09-04  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (cmd_qtsv): Adjust debug message.
-	Don't check CUR_TPOINT.
-
-2012-08-28  Yao Qi  <yao@codesourcery.com>
-
-	* ax.c, tracepoint.c: Replace ATTR_FORMAT with ATTRIBUTE_PRINTF.
-	* server.h: Include 'libiberty.h' and 'ansidecl.h'.
-	(ATTR_NORETURN, ATTR_FORMAT, ATTR_MALLOC): Remove.
-	Remove declarations of xmalloc, xreallloc, xstrdup and
-	freeargv.
-	* Makefile.in (libiberty_h): New.
-	(server_h): Append dependencies 'libiberty.h' and 'ansidecl.h'.
-	(linux-bfin-low.o): Append dependency 'libiberty.h'.
-
-2012-08-23  Yao Qi  <yao@codesourcery.com>
-
-	* server.h: Remove declaration of 'xsnprintf'.
-
-2012-08-22  Keith Seitz  <keiths@redhat.com>
-
-	* server.h: Include build-gnulib-gbserver/config.h.
-	* gdbreplay.c: Likewise.
-
-2012-08-08  Doug Evans  <dje@google.com>
-
-	* Makefile.in (SFILES): Add gdb_vecs.c.
-	(OBS): Add gdb_vecs.o.
-	(gdb_vecs_h, host_defs_h): New variables.
-	(thread-db.o): Add $(gdb_vecs_h) dependency.
-	(gdb_vecs.o): New rule.
-	* thread-db.c: #include "gdb_vecs.h".
-	(thread_db_load_search): Use a vector to iterate over path elements.
-	Handle text appearing after "$pdir".
-
-	* configure.ac: Add check for strstr.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-
-2012-08-02  Ulrich Weigand  <ulrich.weigand@linaro.org>
-
-	* hostio.c (handle_pread): If pread fails, fall back to attempting
-	lseek/read.
-	(handle_pwrite): Likewise for pwrite.
-
-2012-08-01  Ulrich Weigand  <ulrich.weigand@linaro.org>
-
-	* linux-arm-low.c (arm_linux_hw_point_initialize): Distinguish
-	between unsupported TYPE and unimplementable ADDR/LEN combination.
-	(arm_insert_point): Act on new return value.
-
-2012-07-31  Pedro Alves  <palves@redhat.com>
-
-	* server.c (process_point_options): Only skip tokens if we find
-	one that is unrecognized.  Don't treat 'X' specially while
-	skipping unrecognized tokens.
-
-2012-07-30  Ulrich Weigand  <ulrich.weigand@linaro.org>
-
-	* linux-arm-low.c (arm_linux_hw_point_initialize): Do not attempt
-	to 4-byte-align HW breakpoint addresses for Thumb.
-
-2012-07-27  Yao Qi  <yao@codesourcery.com>
-
-	PR remote/14161.
-
-	* server.h: Declare gdb_agent_about_to_close.
-	* target.c (kill_inferior): Include "agent.h".
-	New.  Send command 'kill'.
-	* target.h (kill_inferior): Removed macro.
-	* tracepoint.c (gdb_agent_about_to_close): New.
-	(gdb_agent_helper_thread): Handle command 'close'.
-	Wait endlessly until the inferior stops.
-	Install gdb_agent_remove_socket to atexit hook.
-	(agent_socket_name): New static variable.
-	(gdb_agent_socket_init): Replace local variable 'name' with
-	'agent_socket_name'.
-	(gdb_agent_remove_socket): New.
-
-2012-07-27  Yao Qi  <yao@codesourcery.com>
-
-	* server.c (process_point_options): Stop at 'X' when parsing.
-
-2012-07-19  Michael Eager  <eager@eagercon.com>
-
-	* i386-low.c (Z_packet_to_hw_type): Add Z_PACKET_HW_BP, translate
-	to hw_execute.
-	* linux-x86-low.c (x86_insert_point, x86_remove_point):
-	Call i386_low_insert_watchpoint, i386_low_remove_watchpoint to add/del
-	hardware breakpoint.
-
-2012-07-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* gdbserver/linux-low.c (initialize_low): Call
-	linux_ptrace_init_warnings.
-
-2012-07-02  Doug Evans  <dje@google.com>
-
-	* mem-break.c (gdb_no_commands_at_breakpoint): Fix cast from
-	pointer to int.
-
-2012-07-02  Stan Shebs  <stan@codesourcery.com>
-
-	* Makefile.in (WARN_CFLAGS_NO_FORMAT): Define.
-	(ax.o): Add it to build rule.
-	(ax-ipa.o): Ditto.
-	(OBS): Add format.o.
-	(IPA_OBS): Add format.o.
-	* server.c (handle_query): Claim support for breakpoint commands.
-	(process_point_options): Add command case.
-	(process_serial_event): Leave running if there are printfs in
-	effect.
-	* mem-break.h (any_persistent_commands): Declare.
-	(add_breakpoint_commands): Declare.
-	(gdb_no_commands_at_breakpoint): Declare.
-	(run_breakpoint_commands): Declare.
-	* mem-break.c (struct point_command_list): New struct.
-	(struct breakpoint): New field command_list.
-	(any_persistent_commands): New function.
-	(add_commands_to_breakpoint): New function.
-	(add_breakpoint_commands): New function.
-	(gdb_no_commands_at_breakpoint): New function.
-	(run_breakpoint_commands): New function.
-	* linux-low.c (linux_wait_1): Test for and run breakpoint commands
-	locally.
-	* ax.c: Include format.h.
-	(ax_printf): New function.
-	(gdb_eval_agent_expr): Add printf opcode.
-
-2012-06-13  Yao Qi  <yao@codesourcery.com>
-
-	* server.c (start_inferior): Remove duplicated writes to fields
-	'last_resume_kind' and 'last_status' of 'current_inferior'.
-
-2012-06-12  Yao Qi  <yao@codesourcery.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_set_resume_request): Simplify predicate.  Add
-	comment.
-	* server.c (handle_v_cont): Extend comment.
-
-2012-06-11  Yao Qi  <yao@codesourcery.com>
-
-	* linux-low.c (linux_attach): Add 'static'.
-
-2012-06-06  Yao Qi  <yao@codesourcery.com>
-
-	* ax.c (gdb_eval_agent_expr): Print `top' in hex.
-
-2012-06-01  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Fix gcc -flto compilation warning.
-	* server.c (main): Make variable multi_mode and attach volatile.
-
-2012-05-30  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
-
-	* linux-low.c (get_r_debug): Disable code using DT_MIPS_RLD_MAP
-	if the platform doesn't know about it.
-
-2012-05-30  Jeff Kenton  <jkenton@tilera.com>
-
-	* Makefile.in (SFILES): Add linux-tile-low.c.
-	(linux-tile-low.o, reg-tilegx.o, reg-tilegx.c): New rules.
-	* configure.srv: Handle tilegx-*-linux*.
-	* linux-tile-low.c: New file.
-
-2012-05-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* linux-low.c (linux_qxfer_libraries_svr4): Return -1 if R_DEBUG is -1.
-
-2012-05-24  Pedro Alves  <palves@redhat.com>
-
-	PR gdb/7205
-
-	Replace TARGET_SIGNAL_ with GDB_SIGNAL_ throughout.
-
-2012-05-24  Pedro Alves  <palves@redhat.com>
-
-	PR gdb/7205
-
-	Replace target_signal with gdb_signal throughout.
-
-2012-05-22  Maciej W. Rozycki  <macro@codesourcery.com>
-
-	* linux-low.c (linux_store_registers): Avoid the copying sequence
-	when no data has been retrieved by ptrace.
-
-2012-05-22  Will Deacon  <will.deacon@arm.com>
-
-	* linux-low (__UCLIBC__ && !(__UCLIBC_HAS_MMU__ || __ARCH_HAS_MMU__)):
-	Include asm/ptrace.h.
-	(PT_TEXT_ADDR, PT_DATA_ADDR, PT_TEXT_END_ADDR): Define only if not
-	already defined.
-
-2012-05-21  Maciej W. Rozycki  <macro@codesourcery.com>
-
-	* linux-low.c (linux_store_registers): Don't re-retrieve data
-	with ptrace that has already been obtained from /proc.  Always
-	copy any data retrieved with ptrace to the buffer supplied.
-
-2012-05-11  Yao Qi  <yao@codesourcery.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (enum stopping_threads_kind): New.
-	(stopping_threads): Change type to `enum stopping_threads_kind'.
-	(handle_extended_wait): If stopping and suspending threads, leave
-	the new_lwp suspended too.
-	(linux_wait_for_event): Adjust.
-	(stop_all_lwps): Set `stopping_threads' to
-	STOPPING_AND_SUSPENDING_THREADS or STOPPING_THREADS depending on
-	whether we're suspending threads or just stopping them.  Assert no
-	recursion happens.
-
-2012-04-29  Yao Qi  <yao@codesourcery.com>
-
-	* server.h: Move some code to ...
-	* gdbthread.h: ... here.  New.
-	* Makefile.in (inferiors.o, regcache.o): Depends on gdbthread.h
-	(remote-utils.o, server.o, target.o tracepoint.o): Likewise.
-	(nto-low.o, win32-low.o): Likewise.
-	* inferiors.c, linux-low.h, nto-low.c: Include gdbthread.h.
-	* regcache.c, remote-utils.c, server.c: Likewise.
-	* target.c, tracepoint.c, win32-low.c: Likewise.
-
-2012-04-24  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
-
-	* linux-low.h (PTRACE_ARG3_TYPE): Move macro from linux-low.c.
-	(PTRACE_ARG4_TYPE): Likewise.
-	(PTRACE_XFER_TYPE): Likewise.
-	* linux-arm-low.c (arm_prepare_to_resume): Cast third argument of
-	ptrace to PTRACE_ARG3_TYPE.
-	* linux-low.c (PTRACE_ARG3_TYPE): Move macro to linux-low.h.
-	(PTRACE_ARG4_TYPE): Likewise.
-	(PTRACE_XFER_TYPE): Likewise.
-	(linux_detach_one_lwp): Cast fourth argument of
-	ptrace to long then PTRACE_ARG4_TYPE.
-	(regsets_fetch_inferior_registers): Cast third argument of
-	ptrace to long then PTRACE_ARG3_TYPE.
-	(regsets_store_inferior_registers): Likewise.
-
-2012-04-20  Pedro Alves  <palves@redhat.com>
-
-	* configure: Regenerate.
-
-2012-04-19  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (GNULIB_BUILDDIR): New.
-	(LIBGNU, INCGNU, GNULIB_H): Adjust.
-	(SUBDIRS, CLEANDIRS, REQUIRED_SUBDIRS): New.
-	(all, install-only, uninstall, clean-info, all-lib, clean): No
-	longer pass GNULIB_FLAGS_TO_PASS.  Use subdir_do.
-	(maintainer-clean realclean distclean): Use subdir_do.
-	(subdir_do): New.
-	(gnulib/import/Makefile): Adjust.  Replace gnulib/import with
-	$(GNULIB_BUILDDIR).  Don't pass argument to config.status.
-	* acinclude.m4: Include acx_configure_dir.m4.
-	* configure.ac: Remove gl_EARLY, gl_INIT, and AM_INIT_AUTOMAKE
-	calls.	Call AC_PROG_RANLIB.  Configure gnulib using
-	ACX_CONFIGURE_DIR.
-	(GNULIB): New.
-	(GNULIB_STDINT_H): Adjust.
-	(AC_OUTPUT): Don't output gnulib/Makefile anymore.
-	* gdbreplay.c: Include build-gnulib/config.h.
-	* server.h: Likewise.
-	* aclocal.m4: Regenerate.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-
-2012-04-19  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (LIBGNU, INCGNU): Adjust.
-	(GNULIB_FLAGS_TO_PASS, GNULIB_H): Adjust.
-	(all, install-only, uninstall, clean-info, all-lib, clean)
-	(maintainer-clean, Makefile, gnulib/Makefile): Adjust.
-	* configure.ac: Adjust AC_OUTPUT output.
-	* aclocal.m4: Regenerate.
-	* configure: Regenerate.
-
-2012-04-19  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (generated_files): New.
-	(server_h): Remove the explicit dependency on config.h, and depend
-	on $generated_files.
-
-2012-04-19  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (INCGNU): Add -Ignulib.
-
-2012-04-19  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (GNULIB_INCLUDE_DIR): Rename to ...
-	(INCGNU): ... this, and spell out -I here.
-	(GNULIB_LIB): Rename to ...
-	(LIBGNU): ... this.
-	(INCLUDE_CFLAGS, gdbserver$(EXEEXT), $(GNULIB_LIB) rule): Adjust.
-
-2012-04-19  Pedro Alves  <palves@redhat.com>
-
-	* config.in: Regenerate.
-
-2012-04-19  Pedro Alves  <palves@redhat.com>
-
-	* configure.ac: Remove AC_CHECK_DECLS check for memmem.
-	* server.h (memmem): Remove declaration.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-
-2012-04-19  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (SFILES): Add common/vec.c.
-	(OBS): Add vec.o.
-	(vec.o): New rule.
-
-2012-04-19  Yao Qi  <yao@codesourcery.com>
-
-	* remote-utils.c (prepare_resume_reply): Replace with macro
-	target_core_of_thread.
-	* server.c (handle_qxfer_threads_proper): Likewise.
-	* target.h (traget_core_of_thread): New macro.
-
-2012-04-18  Pedro Alves  <palves@redhat.com>
-
-	* aclocal.m4: Regenerate.
-	* configure: Regenerate.
-
-2012-04-16  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (cmd_qtstart): Download tracepoints even when they are
-	duplicated on address.
-
-2012-04-16  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (COPY_FIELD_TO_BUF): New macro.
-	(struct tracepoint_action_ops) <send>: New field.
-	(m_tracepoint_action_send, r_tracepoint_action_send): New.
-	(agent_expr_send, x_tracepoint_action_send): New.
-	(l_tracepoint_action_send): New.
-	(cmd_qtdp): Download and install tracepoint
-	according to `use_agent'.
-	(run_inferior_command): Add one more parameter `len'.
-	Update callers.
-	(tracepoint_send_agent): New.
-	(cmd_qtdp, cmd_qtstart): Call tracepoint_send_agent.
-
-2012-04-16  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (download_tracepoints): Moved to ...
-	(cmd_qtstart): ... here.
-
-2012-04-14  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c: Include inttypes.h.
-	(struct collect_memory_action): Use sized types.
-	(struct tracepoint): Likewise.
-	(cmd_qtdp, stop_tracing): Update print specifiers.
-	(cmd_qtp, response_tracepoint): Likewise.
-	(collect_data_at_tracepoint): Likewise.
-	(collect_data_at_step): Likewise.
-
-2012-04-14  Yao Qi  <yao@codesourcery.com>
-
-	Import gnulib module inttypes.
-	* aclocal.m4, config.in, configure: Regenerated.
-
-2012-04-14  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (maintainer-clean, realclean, distclean): Remove
-	Makefile and config.status at last.
-
-2012-04-13  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c: Include stdint.h unconditionally.
-
-2012-04-13  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
-
-	* acinclude.m4 (GDBSERVER_HAVE_THREAD_DB_TYPE): New macro based
-	on BFD_HAVE_SYS_PROCFS_TYPE.
-	* configure.ac: Look for lwpid_t and psaddr_t in libthread_db.h.
-	* configure: Regenerate.
-	* config.in: Likewise.
-
-2012-04-13  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* Makefile.in (clean): Also remove x32.c x32-linux.c
-	x32-avx.c x32-avx-linux.c.
-	(x32.o): New target.
-	(x32.c): Likewise.
-	(x32-linux.o): Likewise.
-	(x32-linux.c): Likewise.
-	(x32-avx.o): Likewise.
-	(x32-avx.c): Likewise.
-	(x32-avx-linux.o): Likewise.
-	(x32-avx-linux.c): Likewise.
-
-	* configure.srv (srv_amd64_regobj): Add x32.o x32-avx.o.
-	(srv_amd64_linux_regobj): Add x32-linux.o x32-avx-linux.o.
-	(srv_i386_64bit_xmlfiles): Add i386/x32-core.xml.
-	(srv_amd64_xmlfiles): Add i386/x32.xml i386/x32-avx.xml.
-	(srv_amd64_linux_xmlfiles): Add i386/x32-linux.xml
-	i386/x32-avx-linux.xml.
-
-	* linux-x86-low.c (init_registers_x32_linux): New prototype.
-	(init_registers_x32_avx_linux): Likwise.
-	(x86_linux_update_xmltarget): Call init_registers_x32_linux
-	or init_registers_x32_avx_linux if linux_is_elf64 is false.
-
-2012-04-13  Pedro Alves  <palves@redhat.com>
-
-	* Makefile.in (GNULIB_FLAGS_TO_PASS): New.
-	(FLAGS_TO_PASS): Don't change or set $top_srcdir, $srcdir and VPATH.
-	(all, uninstall, clean-info, all-lib, clean, maintainer-clean)
-	(realclean, distclean): Explicitly pass $GNULIB_FLAGS_TO_PASS to
-	the sub-make.
-
-2012-04-12  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* linux-x86-low.c (compat_x32_clock_t): New.
-	(compat_x32_siginfo_t): Likewise.
-	(compat_x32_siginfo_from_siginfo): Likewise.
-	(siginfo_from_compat_x32_siginfo): Likewise.
-	(linux_is_elf64): Likewise.
-	(x86_siginfo_fixup): Call compat_x32_siginfo_from_siginfo
-	and siginfo_from_compat_x32_siginfo for x32.
-	(x86_arch_setup): Set linux_is_elf64.
-
-2012-04-12  H.J. Lu  <hongjiu.lu@intel.com>
-
-	PR gdb/13969
-	* linux-low.c (linux_pid_exe_is_elf_64_file): Also return the
-	e_machine field.
-	(linux_qxfer_libraries_svr4): Update call to elf_64_file_p.
-	* linux-low.h (linux_pid_exe_is_elf_64_file): Updated.
-	* linux-x86-low.c (x86_arch_setup): Check if GDBserver is
-	compatible with process.
-
-2012-04-12  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in: Define abs_top_srcdir and abs_srcdir.
-	(INCLUDE_CFLAGS): Append GNULIB_INCLUDE_DIR.
-	(install-only, install-info, clean): Handle sub dir gnulib.
-	(all-lib, am--refresh): New targets.
-	(memmem.o): Remove target.
-	* configure.ac: Remove AC_CONFIG_LIBOBJ_DIR.
-	Invoke gl_EARLY.  Invoke AC_CHECK_PROGS for make.
-	(AC_REPLACE_FUNCS): Remove memmem.
-	Invoke gl_INIT and AM_INIT_AUTOMAKE.
-	(AC_OUTPUT): Generate Makefile in gnulib/.
-	* aclocal.m4, config.in, configure: Regenerated.
-
-2012-04-10  Maciej W. Rozycki  <macro@codesourcery.com>
-
-	* linux-low.c (get_r_debug): Handle DT_MIPS_RLD_MAP.
-
-2012-04-05  Pedro Alves  <palves@redhat.com>
-
-	-Werror=strict-aliasing
-
-	* spu-low.c (parse_spufs_run): Avoid dereferencing type-punned
-	pointer.
-
-2012-04-04  Pedro Alves  <palves@redhat.com>
-
-	* linux-sparc-low.c (sparc_fill_gregset_to_stack)
-	(sparc_store_gregset_from_stack, sparc_store_gregset)
-	(sparc_breakpoint_at): Fix formatting.
-
-2012-03-30  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
-
-	* configure.ac: Check whether Elf32_auxv_t and Elf64_auxv_t
-	are available.
-	* linux-low.c [HAVE_ELF32_AUXV_T] (Elf32_auxv_t): Add typedef.
-	[HAVE_ELF64_AUXV_T] (Elf64_auxv_t): Likewise.
-	* config.in: Regenerate.
-	* configure: Likewise.
-
-2012-03-29  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (regsets_store_inferior_registers) [__sparc__]:
-	Correct ptrace arguments.
-
-2012-03-28  Pedro Alves  <palves@redhat.com>
-
-	* linux-ia64-low.c (ia64_regmap): Map IA64_EC_REGNUM to PT_AR_EC.
-	(IA64_GR0_REGNUM, IA64_FR0_REGNUM)
-	(IA64_FR1_REGNUM): New defines.
-	(ia64_fetch_register): New.
-	(the_low_target): Install it.
-	* linux-low.h (struct linux_target_ops) <fetch_register>: New
-	field.
-	* linux-low.c (linux_fetch_registers): Try the
-	the_low_target.fetch_register hook first.
-
-	* linux-arm-low.c (the_low_target): Adjust.
-	* linux-bfin-low.c (the_low_target): Adjust.
-	* linux-cris-low.c (the_low_target): Adjust.
-	* linux-crisv32-low.c (the_low_target): Adjust.
-	* linux-m32r-low.c (the_low_target): Adjust.
-	* linux-m68k-low.c (the_low_target): Adjust.
-	* linux-mips-low.c (the_low_target): Adjust.
-	* linux-ppc-low.c (the_low_target): Adjust.
-	* linux-s390-low.c (the_low_target): Adjust.
-	* linux-sh-low.c (the_low_target): Adjust.
-	* linux-sparc-low.c (the_low_target): Adjust.
-	* linux-tic6x-low.c (the_low_target): Adjust.
-	* linux-x86-low.c (the_low_target): Adjust.
-	* linux-xtensa-low.c (the_low_target): Adjust.
-
-2012-03-26  Pedro Alves  <palves@redhat.com>
-
-	* server.c (handle_qxfer_libraries): Don't bail early if
-	the_target->qxfer_libraries_svr4 is not NULL.
-
-2012-03-26  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_qxfer_libraries_svr4): Fix pasto in comment.
-
-2012-03-23  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_qxfer_libraries_svr4): Terminate the
-	"library-list-svr4" element's start tag when the the DSO list is
-	empty.
-
-2012-03-23  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (read_one_ptr): Read the inferior's pointer through
-	a variable whose type size is the same as the inferior's pointer
-	size.
-
-2012-03-21  Thomas Schwinge  <thomas@codesourcery.com>
-
-	* linux-arm-low.c (arm_stopped_by_watchpoint): Use siginfo_t instead of
-	struct siginfo.
-	* linux-low.c (siginfo_fixup, linux_xfer_siginfo): Likewise.
-	* linux-x86-low.c (x86_siginfo_fixup): Likewise.
-	* linux-low.h: Include <signal.h>.
-	(struct siginfo): Remove forward declaration.
-	(struct linux_target_ops) <siginfo_fixup>: Use siginfo_t instead of
-	struct siginfo.
-
-2012-03-21  Mike Frysinger  <vapier@gentoo.org>
-
-	* .gitignore: Ignore more files.
-
-2012-03-19  Pedro Alves  <palves@redhat.com>
-	    Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* server.c (cont_thread, general_thread): Add describing comments.
-	(start_inferior): Clear `cont_thread'.
-	(handle_v_cont): Don't set `cont_thread' if resuming all threads
-	of a process.
-
-2012-03-15  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (install_tracepoint): Move duplicated tracepoint
-	handling to ...
-	(cmd_qtdp): ... here.
-
-2012-03-15  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (struct tracepoint_action_ops): New.
-	(struct tracepoint_action) [!IN_PROCESS_AGENT] <ops>: New field.
-	(m_tracepoint_action_download): New.
-	(r_tracepoint_action_download): New.
-	(x_tracepoint_action_download): New.
-	(l_tracepoint_action_download): New.
-	(add_tracepoint_action): Install `action->ops' according type.
-	(download_tracepoint_1): Move code `download' function pointer
-	of various tracepoint_action_ops.
-
-2012-03-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* linux-low.c (linux_attach_lwp_1): New variable buffer.  Call
-	linux_ptrace_attach_warnings.
-
-2012-03-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* Makefile.in (linux-ptrace.o): New.
-	* configure.srv (arm*-*-linux*, bfin-*-*linux*, crisv32-*-linux*)
-	(cris-*-linux*, i[34567]86-*-linux*, ia64-*-linux*, m32r*-*-linux*)
-	(m68*-*-linux*, m68*-*-uclinux*, mips*-*-linux*, powerpc*-*-linux*)
-	(s390*-*-linux*, sh*-*-linux*, sparc*-*-linux*, tic6x-*-uclinux)
-	(x86_64-*-linux*, xtensa*-*-linux*): Add linux-ptrace.o to SRV_TGTOBJ
-	of these targets.
-	* linux-low.c (linux_attach_lwp_1): Remove redundent else clause.
-
-2012-03-08  Yao Qi  <yao@codesourcery.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	Fix PR server/13392.
-	* linux-x86-low.c (amd64_install_fast_tracepoint_jump_pad): Check
-	offset of JMP insn.
-	* tracepoint.c (remove_tracepoint): New.
-	(cmd_qtdp): Call remove_tracepoint when failed to install.
-
-2012-03-07  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (get_detach_signal): New.
-	(linux_detach_one_lwp): Get rid of a pending SIGSTOP with SIGCONT.
-	Pass on pending signals to PTRACE_DETACH.  Check the result of the
-	ptrace call.
-	* server.c (program_signals, program_signals_p): New.
-	(handle_general_set): Handle QProgramSignals.
-	* server.h (program_signals, program_signals_p): Declare.
-
-2012-03-05  Pedro Alves  <palves@redhat.com>
-	    Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* linux-low.c (get_dynamic): Don't warn when PT_PHDR isn't found.
-	New comment why.
-
-2012-03-03  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (tracepoint_look_up_symbols): Update call to
-	agent_look_up_symbols.
-
-2012-03-03  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (linux-low.o): Keep dependence on agent.h.
-	(linux-x86-low.o): Likewise.
-	* server.h: Remove in_process_agent_loaded.
-	* tracepoint.c (in_process_agent_loaded): Removed.  Moved it
-	common/agent.c.
-	Update callers.
-
-2012-03-03  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (gdb_agent_capability): New global.
-	(in_process_agent_loaded_ust): Renamed to
-	`in_process_agent_supports_ust'.
-	Update callers.
-	(in_process_agent_supports_ust): Call agent_capability_check.
-	(clear_installed_tracepoints): Assert that agent supports
-	agent.
-
-2012-03-03  Yao Qi  <yao@codesourcery.com>
-
-	* linux-low.c (linux_supports_agent): New.
-	(linux_target_ops): Initialize field `supports_agent' with
-	linux_supports_agent.
-	* target.h (struct target_ops) <supports_agent>: New.
-	(target_supports_agent): New macro.
-	* server.c (handle_general_set): Handle packet 'QAgent'.
-	(handle_query): Send `QAgent+'.
-	* Makefile.in (server.o): Depends on agent.h.
-
-2012-03-03  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (OBS): Add agent.o.
-	Add new rule for agent.o.
-	Track dependence of tracepoint.c on agent.h.
-	* tracepoint.c (run_inferior_command_1):
-	(run_inferior_command): Call agent_run_command.
-	(gdb_ust_connect_sync_socket): Deleted.  Move it to
-	common/agent.c.
-	(resume_thread, stop_thread): Likewise.
-	(gdb_ust_socket_init): Renamed to ...
-	(gdb_agent_socket_init): ... New.
-	(gdb_ust_thread): Renamed to ...
-	(gdb_agent_helper_thread): ... New.
-	(gdb_ust_init): Move some code to ...
-	(gdb_agent_init): ... here.  New.
-	[HAVE_UST]: Call gdb_ust_init.
-	(initialize_tracepoint_ftlib):  Call gdb_agent_init.
-	* configure.ac: Add `sys/un.h' to AC_CHECK_HEADERS.
-	* config.in, configure: Regenerated.
-
-2012-03-02  Pedro Alves  <palves@redhat.com>
-
-	* inferiors.c (add_pid_to_list, pull_pid_from_list): Delete.
-	* linux-low.c (struct simple_pid_list): New.
-	(stopped_pids): New a struct simple_pid_list pointer.
-	(add_to_pid_list, pull_pid_from_list): New.
-	(handle_extended_wait): Don't assume the first signal new children
-	report is SIGSTOP.  Adjust call to pull_pid_from_list.
-	(linux_wait_for_lwp): Adjust.
-
-2012-03-02  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (do_action_at_tracepoint): Write `stop_pc' in
-	debug log.
-
-2012-03-02  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (collect_ust_data_at_tracepoint): Remove parameters
-	`stop_pc' and `tpoint'.  Update caller.
-
-2012-03-01  Maciej W. Rozycki  <macro@codesourcery.com>
-
-	* linux-low.h (linux_target_ops): Add regset_bitmap member.
-	* linux-low.c (use_linux_regsets): New macro.
-	[!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise.
-	[!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise.
-	(linux_register_in_regsets): New function.
-	(usr_fetch_inferior_registers): Skip registers covered by
-	regsets.
-	(usr_store_inferior_registers): Likewise.
-	(usr_fetch_inferior_registers): New macro.
-	(usr_store_inferior_registers): Likewise.
-	(linux_fetch_registers): Handle mixed regset/non-regset targets.
-	(linux_store_registers): Likewise.
-	* linux-mips-low.c (init_registers_mips_dsp_linux): New
-	prototype.
-	(init_registers_mips64_dsp_linux): Likewise.
-	(init_registers_mips_linux): New macro.
-	(init_registers_mips_dsp_linux): Likewise.
-	(mips_dsp_num_regs): Likewise.
-	(DSP_BASE, DSP_CONTROL): New fallback macros.
-	(mips_base_regs): New macro.
-	(mips_regmap): Use it.  Fix the size.
-	(mips_dsp_regmap): New variable.
-	(mips_dsp_regset_bitmap): Likewise.
-	(mips_arch_setup): New function.
-	(mips_cannot_fetch_register): Use the_low_target.regmap rather
-	than mips_regmap.
-	(mips_cannot_store_register): Likewise.
-	(the_low_target): Update .arch_setup, .num_regs and .regmap
-	initializers.  Add .regset_bitmap initializer.
-	* linux-arm-low.c (the_low_target): Add .regset_bitmap
-	initializer.
-	* linux-bfin-low.c (the_low_target): Likewise.
-	* linux-cris-low.c (the_low_target): Likewise.
-	* linux-crisv32-low.c (the_low_target): Likewise.
-	* linux-ia64-low.c (the_low_target): Likewise.
-	* linux-m32r-low.c (the_low_target): Likewise.
-	* linux-m68k-low.c (the_low_target): Likewise.
-	* linux-ppc-low.c (the_low_target): Likewise.
-	* linux-s390-low.c (the_low_target): Likewise.
-	* linux-sh-low.c (the_low_target): Likewise.
-	* linux-sparc-low.c (the_low_target): Likewise.
-	* linux-tic6x-low.c (the_low_target): Likewise.
-	* linux-x86-low.c (the_low_target): Likewise.
-	* linux-xtensa-low.c (the_low_target): Likewise.
-	* configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and
-	mips64-dsp-linux.o to srv_regobj.  Add mips-dsp-linux.xml,
-	mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to
-	srv_xmlfiles.
-	* Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets.
-	(mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise.
-
-2012-02-29  Yao Qi  <yao@codesourcery.com>
-	    Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c: (linux_wait_1): Call unsuspend_all_lwps when
-	`step_over_finished' is true.
-
-2012-02-27  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (pid_is_stopped): Delete, moved to common/.
-	(linux_attach_lwp_1): Adjust to use linux_proc_pid_is_stopped.
-
-2012-02-27  Pedro Alves  <palves@redhat.com>
-
-	PR server/9684
-	* linux-low.c (pid_is_stopped): New.
-	(linux_attach_lwp_1): Handle attaching to 'T (stopped)' processes.
-
-2012-02-25  Luis Machado  <lgustavo@codesourcery.com>
-
-	* mem-break.c (clear_gdb_breakpoint_conditions): Fix de-allocation
-	of conditions.
-
-2012-02-24  Maciej W. Rozycki  <macro@codesourcery.com>
-
-	* linux-mips-low.c (mips_regmap): Correct the index of $f9.
-
-2012-02-24  Luis Machado  <lgustavo@codesourcery>
-
-	* server.c (handle_query): Advertise support for target-side
-	breakpoint condition evaluation.
-	(process_point_options): New function.
-	(process_serial_event): When inserting a breakpoint, check for
-	a target-side condition that should be evaluated.
-
-	* mem-break.c: Include regcache.h and ax.h.
-	(point_cond_list_t): New data structure.
-	(breakpoint) <cond_list>: New field.
-	(find_gdb_breakpoint_at): Make non-static.
-	(delete_gdb_breakpoint_at): Clear any target-side
-	conditions.
-	(clear_gdb_breakpoint_conditions): New function.
-	(add_condition_to_breakpoint): Likewise.
-	(add_breakpoint_condition): Likewise.
-	(gdb_condition_true_at_breakpoint): Likewise.
-	(gdb_breakpoint_here): Return result directly instead
-	of going through a local variable.
-
-	* mem-break.h (find_gdb_breakpoint_at): New prototype.
-	(clear_gdb_breakpoint_conditions): Likewise.
-	(add_breakpoint_condition): Likewise.
-	(gdb_condition_true_at_breakpoint): Likewise.
-
-	* linux-low.c (linux_wait_1): Evaluate target-side breakpoint condition.
-	(need_step_over_p): Take target-side breakpoint condition into
-	consideration.
-
-2012-02-24  Luis Machado  <lgustavo@codesourcery>
-
-	* server.h: Include tracepoint.h.
-	(agent_mem_read, agent_get_trace_state_variable_value,
-	agent_set_trace_state_variable_value,
-	agent_tsv_read, agent_mem_read_string, get_get_tsv_func_addr,
-	get_set_tsv_func_addr): New prototypes.
-
-	* ax.h: New include file.
-	* ax.c: New source file.
-
-	* tracepoint.c: Include ax.h.
-	(gdb_agent_op, gdb_agent_op_names, gdb_agent_op_sizes,
-	agent_expr, eval_result_type): Move to ax.h.
-	(parse_agent_expr): Rename to ...
-	(gdb_parse_agent_expr): ... this, make it non-static and move
-	to ax.h.
-	(unparse_agent_expr) Rename to ...
-	(gdb_unparse_agent_expr): ... this, make it non-static and move
-	to ax.h.
-	(eval_agent_expr): Rename to ...
-	(eval_tracepoint_agent_expr): ... this.
-	(agent_mem_read, agent_mem_read_string, agent_tsv_read): Remove
-	forward declarations.
-	(add_tracepoint_action): Call gdb_parse_agent_expr (...).
-	(agent_get_trace_state_variable_value): New function.
-	(agent_set_trace_state_variable_value): New function.
-	(cmd_qtdp): Call gdb_parse_agent_expr (...).
-	(response_tracepoint): Call gdb_unparse_agent_expr (...).
-	(do_action_at_tracepoint): Call eval_tracepoint_agent_expr (...).
-	(condition_true_at_tracepoint): Likewise.
-	(parse_agent_expr): Rename to ...
-	(gdb_parse_agent_expr): ... this and move to ax.c.
-	(unparse_agent_expr): Rename to ...
-	(gdb_unparse_agent_expr): ... this and move to ax.c.
-	(gdb_agent_op_name): Move to ax.c.
-	(eval_agent_expr): Rename to ...
-	(gdb_eval_agent_expr): ... this, use regcache passed as parameter
-	and move to ax.c.
-	(eval_tracepoint_agent_expr): New function.
-	(agent_mem_read, agent_mem_read_string, agent_tsv_read): Make
-	non-static.
-	(current_insn_ptr, emit_error, struct bytecode_address): Move to
-	ax.c.
-	(emit_prologue, emit_epilogue, emit_add, emit_sub, emit_mul, emit_lsh,
-	emit_rsh_signed, emit_rsh_unsigned, emit_ext, emit_log_not,
-	emit_bit_and, emit_bit_or, emit_bit_xor, emit_bit_not, emit_equal,
-	emit_less_signed, emit_less_unsigned, emit_ref, emit_if_goto,
-	emit_goto, write_goto_address, emit_const, emit_reg, emit_pop,
-	emit_stack, emit_zero_ext, emit_swap, emit_stack_adjust,
-	emit_int_call_1, emit_void_call_2, emit_eq_goto, emit_ne_goto,
-	emit_lt_goto, emit_ge_goto, emit_gt_goto, emit_le_goto): Move to ax.c.
-	(get_get_tsv_func_addr, get_set_tsv_func_addr): New functions.
-	(compile_bytecodes): Remove forward declaration.
-	(is_goto_target): Move to ax.c.
-	(compile_bytecodes): Move to ax.c and call
-	agent_get_trace_state_variable_value (...) and
-	agent_set_trace_state_variable_value (...).
-
-	* Makefile.in: Update ax.c and IPA dependencies.
-
-2012-02-24  Pedro Alves  <palves@redhat.com>
-
-	* tracepoint.c (cmd_bigqtbuffer): Rename as ...
-	(cmd_bigqtbuffer_circular): ... this.  Only handle
-	'QTBuffer:circular:'.
-	(handle_tracepoint_general_set): Adjust.
-
-2012-02-16  Yao Qi  <yao@codesourcery.com>
-
-	* inferiors.c: Move code to ...
-	* dll.c: .... here.  New.
-	* server.h: Declare clear_dlls.
-	* Makefile.in (SFILES): Add dll.c.
-	(OBS): Add dll.o
-	(dll.o): New rule.
-
-2012-02-11  Yao Qi  <yao@codesourcery.com>
-
-	* server.c: (handle_monitor_command): Add a new parameter
-	`own_buf'.
-	(handle_query): Update caller.
-
-2012-02-09  Joel Brobecker  <brobecker@adacore.com>
-
-	* configure.ac: Add readlink to AC_CHECK_FUNCS list.
-	* configure, config.in: Regenerate.
-	* hostio.c: Provide an alternate implementation if HAVE_READLINK
-	is not defined.
-
-2012-02-02  Pedro Alves  <palves@redhat.com>
-
-	Try SIGKILL first, then PTRACE_KILL.
-	* linux-low.c (linux_kill_one_lwp): New.
-	(linux_kill_one_lwp): Rename to ...
-	(kill_one_lwp_callback): ... this.  Use the new
-	linux_kill_one_lwp.
-
-2012-02-02  Pedro Alves  <palves@redhat.com>
-
-	* tracepoint.c (cmd_qtminftpilen): Return 0 if there's no current
-	inferior.
-
-2012-01-27  Pedro Alves  <palves@redhat.com>
-
-	* linux-low.c (linux_child_pid_to_exec_file): Delete.
-	(elf_64_file_p): Make static.
-	(linux_pid_exe_is_elf_64_file): New.
-	* linux-low.h (linux_child_pid_to_exec_file, elf_64_file_p):
-	Delete declarations.
-	(linux_pid_exe_is_elf_64_file): Declare.
-	* linux-x86-low.c (x86_arch_setup): Use
-	linux_pid_exe_is_elf_64_file.
-
-2012-01-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* linux-low.c (linux_wait_for_event_1): Rename to ...
-	(linux_wait_for_event): ... here and merge it with former
-	linux_wait_for_event - new variable wait_ptid, use it.
-	(linux_wait_for_event): Remove - merge it to linux_wait_for_event_1.
-
-2012-01-23  Pedro Alves  <palves@redhat.com>
-
-	* server.c (main): Avoid yet another case of infinite loop while
-	detaching/killing after a longjmp.
-
-2012-01-20  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Code cleanup.
-	* linux-low.c (linux_wait_for_event_1): Use ptid_is_pid.
-
-2012-01-20  Ulrich Weigand  <ulrich.weigand@linaro.org>
-
-	* hostio.c (handle_readlink): New function.
-	(handle_vFile): Call it to handle "vFile:readlink" packets.
-
-2012-01-20  Pedro Alves  <palves@redhat.com>
-	    Ulrich Weigand  <ulrich.weigand@linaro.org>
-
-	* server.c (handle_v_requests): Only support vAttach and vRun to
-	start multiple processes when in extended protocol mode.
-
-2012-01-17  Pedro Alves  <palves@redhat.com>
-
-	* tracepoint.c (initialize_tracepoint): Use mmap instead of
-	memalign plus mprotect to allocate the scratch buffer.
-
-2012-01-13  Pedro Alves  <palves@redhat.com>
-
-	* server.c (attach_inferior): Clear `cont_thread'.
-
-2012-01-13  Pedro Alves  <palves@redhat.com>
-
-	* server.c (main): Avoid infinite loop while detaching/killing
-	after a longjmp.
-
-2012-01-09  Doug Evans  <dje@google.com>
-
-	* server.c (start_inferior): Set last_ptid in --wrapper case.
-
-2012-01-06  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c [IN_PROCESS_AGENT] (debug_threads): Macro
-	defined.
-	[IN_PROCESS_AGENT] (debug_agent): New global variable.
-
-2012-01-04  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (cmd_qtdp): Print debug message
-	for static tracepoint.
-
-2012-01-04  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (trace_vdebug): Differentiate debug message
-	between gdbserver and IPA.
-
-2012-01-03  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (tracepoint_was_hit): Don't collect for
-	static tracepoint.
-
-2012-01-02  Joel Brobecker  <brobecker@adacore.com>
-
-	* terminal.h: Reformat copyright header.
-
-2012-01-02  Joel Brobecker  <brobecker@adacore.com>
-
-	* server.c (gdbserver_version): Update copyright year.
-	* gdbreplay.c (gdbreplay_version): Likewise.
-
-2011-12-18  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* linux-low.c (linux_create_inferior): Put empty if clause for write.
-
-	Revert:
-	2011-12-18  Hui Zhu  <teawater@gmail.com>
-	* linux-low.c (linux_create_inferior): Save return value to ret.
-
-2011-12-18  Hui Zhu  <teawater@gmail.com>
-
-	* linux-low.c (linux_create_inferior): Save return value to ret.
-
-2011-12-16  Doug Evans  <dje@google.com>
-
-	* linux-low.c (linux_create_inferior): If stdio connection,
-	redirect stdin from /dev/null, stdout to stderr.
-	* remote-utils.c (remote_is_stdio): New static global.
-	(remote_connection_is_stdio): New function.
-	(remote_prepare): Handle stdio connection.
-	(remote_open): Ditto.
-	(remote_close): Don't close stdin for stdio connections.
-	(read_prim,write_prim): New functions.  Replace all calls to
-	read/write to these.
-	* server.c (main): Watch for "-" argument.  Move call to
-	remote_prepare before start_inferior.
-	* server.h (STDIO_CONNECTION_NAME): New macro.
-	(remote_connection_is_stdio): Declare.
-
-	* remote-utils.c (prepare_resume_reply): Remove extraneous \n
-	in debugging output.
-
-2011-12-15  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c: Include sys/syscall.h.
-	(gdb_ust_thread): Remove preprocessor conditional.
-
-2011-12-14  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_detach_one_lwp): Call
-	the_low_target.prepare_to_resume before detaching.
-
-2011-12-14  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (gdb_ust_thread): Don't ignore return value
-	of write.
-
-2011-12-14  Yao Qi  <yao@codesourcery.com>
-
-	* i386-low.c (i386_low_stopped_data_address): Initialize local
-	variable `control'.
-
-2011-12-13  Pedro Alves  <pedro@codesourcery.com>
-
-	PR remote/13492
-
-	* i386-low.c (i386_low_stopped_data_address): Avoid fetching
-	DR_CONTROL unless necessary.  Extend comments.
-	* linux-x86-low.c (x86_linux_prepare_to_resume): Don't write to
-	DR0-3 if not used.  If any watchpoint was set, clear DR_STATUS.
-
-2011-12-13  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (trace_buffer_alloc): Replace magic numbers with
-	macros.
-	(upload_fast_traceframes, upload_fast_traceframes): Likewise.
-
-2011-12-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* linux-low.c (linux_kill): Skip PTRACE_KILL if LWP does not exist.
-	Print new debug message for such case.
-
-2011-12-06  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	Fix overlapping memcpy.
-	* mem-break.c (set_raw_breakpoint_at): New variable buf.  Use it for
-	the read_inferior_memory transfer.
-	(delete_fast_tracepoint_jump): New variable buf.  Use it for the
-	write_inferior_memory transfer.
-	(set_fast_tracepoint_jump): New variable buf.  Use it for the
-	read_inferior_memory and write_inferior_memory transfers.
-	(uninsert_fast_tracepoint_jumps_at, reinsert_fast_tracepoint_jumps_at)
-	(delete_raw_breakpoint, uninsert_raw_breakpoint): New variable buf.
-	Use it for the write_inferior_memory transfer.
-	(check_mem_read, check_mem_write): New gdb_asserts for overlapping
-	buffers.
-
-2011-12-06  Maciej W. Rozycki  <macro@codesourcery.com>
-
-	* linux-low.c (fetch_register, store_register): Make code
-	consistent, fix formatting.
-
-2011-12-06  Maciej W. Rozycki  <macro@codesourcery.com>
-
-	* linux-low.c (usr_store_inferior_registers): Factor out code
-	to handle individual registers into...
-	(store_register): ... this new function.
-
-2011-12-06  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
-	(s390-linux32v2.o, s390-linux32v2.c): Likewise.
-	(s390-linux64v1.o, s390-linux64v1.c): Likewise.
-	(s390-linux64v2.o, s390-linux64v2.c): Likewise.
-	(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
-	(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
-	* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
-	(srv_xmlfiles): Add new XML files.
-
-	* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
-	and <sys/uio.h>.
-	(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
-	(init_registers_s390_linux32v1): Add prototype.
-	(init_registers_s390_linux32v2): Likewise.
-	(init_registers_s390_linux64v1): Likewise.
-	(init_registers_s390_linux64v2): Likewise.
-	(init_registers_s390x_linux64v1): Likewise.
-	(init_registers_s390x_linux64v2): Likewise.
-	(s390_num_regs): Increment to 52.
-	(s390_regmap): Add orig_r2 register.
-	(s390_num_regs_3264): Increment to 68.
-	(s390_regmap_3264): Add orig_r2 register.
-	(s390_collect_ptrace_register): Handle orig_r2 register.
-	(s390_supply_ptrace_register): Likewise.
-	(s390_fill_last_break): New function.
-	(s390_store_last_break): Likewise.
-	(s390_fill_system_call): New function.
-	(s390_store_system_call): Likewise.
-	(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
-	register sets.
-	(s390_check_regset): New function.
-	(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
-	NT_S390_SYSTEM_CALL regsets and use appropriate description.
-	Update target_regsets for available register sets.
-
-2011-12-02  Paul Pluzhnikov  <ppluzhnikov@google.com>
-	    Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* linux-low.c (get_phdr_phnum_from_proc_auxv, get_dynamic, get_r_debug)
-	(read_one_ptr, struct link_map_offsets, linux_qxfer_libraries_svr4):
-	New.
-	(struct linux_target_ops): Install linux_qxfer_libraries_svr4.
-	* linux-low.h (struct process_info_private): New member r_debug.
-	* server.c (handle_qxfer_libraries): Call
-	the_target->qxfer_libraries_svr4.
-	(handle_qxfer_libraries_svr4): New function.
-	(qxfer_packets): New entry "libraries-svr4".
-	(handle_query): Check QXFER_LIBRARIES_SVR4 and report libraries-svr4.
-	* target.h (struct target_ops): New member qxfer_libraries_svr4.
-	* remote.c (remote_xfer_partial): Call add_packet_config_cmd for
-	PACKET_qXfer_libraries_svr4.
-
-2011-11-30  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* linux-s390-low.c (s390_collect_ptrace_register): Fully convert
-	PSW address/mask between 8-byte and 16-byte formats.
-	(s390_supply_ptrace_register): Likewise.
-	(s390_get_pc, s390_set_pc): 4-byte PSW address always includes
-	basic addressing mode bit.
-
-2011-11-24  Stan Shebs  <stan@codesourcery.com>
-
-	* tracepoint.c (cmd_qtstatus): Use plongest instead of %llx.
-
-2011-11-17  Stan Shebs  <stan@codesourcery.com>
-
-	* tracepoint.c (struct tracepoint): New field traceframe_usage.
-	(tracing_start_time): New global.
-	(tracing_stop_time): New global.
-	(tracing_user_name): New global.
-	(tracing_notes): New global.
-	(tracing_stop_note): New global.
-	(cmd_qtstart): Set traceframe_usage, start_time.
-	(stop_tracing): Set stop_time.
-	(cmd_qtstatus): Report additional status.
-	(cmd_qtp): New function.
-	(handle_tracepoint_query): Call it.
-	(cmd_qtnotes): New function.
-	(handle_tracepoint_general_set): Call it.
-	(get_timestamp): Rename from tsv_get_timestamp.
-
-2011-11-14  Stan Shebs  <stan@codesourcery.com>
-	    Kwok Cheung Yeung  <kcy@codesourcery.com>
-
-	* linux-x86-low.c (small_jump_insn): New.
-	(i386_install_fast_tracepoint_jump_pad): Add arguments for
-	trampoline and error message, build a trampoline and issue a small
-	jump instruction to it.
-	(x86_install_fast_tracepoint_jump_pad): Add arguments for
-	trampoline and error message.
-	(x86_get_min_fast_tracepoint_insn_len): New.
-	(the_low_target): Add call to x86_get_min_fast_tracepoint_insn_len.
-	* linux-low.h (struct linux_target_ops): Add arguments to
-	install_fast_tracepoint_jump_pad operation, add new operation.
-	* linux-low.c (linux_install_fast_tracepoint_jump_pad): Add
-	arguments.
-	(linux_get_min_fast_tracepoint_insn_len): New function.
-	(linux_target_op): Add new operation.
-	* tracepoint.c (gdb_trampoline_buffer): New IPA variable.
-	(gdb_trampoline_buffer_end): Ditto.
-	(gdb_trampoline_buffer_error): Ditto.
-	(struct ipa_sym_addresses): Add fields for new IPA variables.
-	(symbol_list): Add entries for new IPA variables.
-	(struct tracepoint): Add fields to hold the address range of the
-	trampoline used by the tracepoint.
-	(trampoline_buffer_head): New static variable.
-	(trampoline_buffer_tail): Ditto.
-	(claim_trampoline_space): New function.
-	(have_fast_tracepoint_trampoline_buffer): New function.
-	(clone_fast_tracepoint): Fill in trampoline fields of tracepoint
-	structure.
-	(install_fast_tracepoint): Ditto, also add error buffer argument.
-	(cmd_qtminftpilen): New function.
-	(handle_tracepoint_query): Add response to qTMinFTPILen packet.
-	(fast_tracepoint_from_trampoline_address): New function.
-	(fast_tracepoint_collecting): Handle trampoline as part of jump
-	pad space.
-	(set_trampoline_buffer_space): New function.
-	(initialize_tracepoint): Initialize new IPA variables.
-	* target.h (struct target_ops): Add arguments to
-	install_fast_tracepoint_jump_pad operation, add new
-	get_min_fast_tracepoint_insn_len operation.
-	(target_get_min_fast_tracepoint_insn_len): New.
-	(install_fast_tracepoint_jump_pad): Add arguments.
-	* server.h (IPA_BUFSIZ): Define.
-	* linux-i386-ipa.c: Include extra header files.
-	(initialize_fast_tracepoint_trampoline_buffer): New function.
-	(initialize_low_tracepoint): Call it.
-	* server.h (set_trampoline_buffer_space): Declare.
-	(claim_trampoline_space): Ditto.
-	(have_fast_tracepoint_trampoline_buffer): Ditto.
-
-2011-11-14  Yao Qi  <yao@codesourcery.com>
-
-	* server.c (handle_query): Handle InstallInTrace for qSupported.
-	* tracepoint.c (add_tracepoint): Sort list.
-	(install_tracepoint, download_tracepoint): New.
-	(cmd_qtdp): Call them to install and download tracepoints.
-	(sort_tracepoints): Removed.
-	(cmd_qtstart): Update.
-
-2011-11-14  Yao Qi  <yao@codesourcery.com>
-
-	* mem-break.c (inc_ref_fast_tracepoint_jump): New.
-	* mem-break.h: Declare.
-	* tracepoint.c (cmd_qtstart): Move some code to ...
-	(clone_fast_tracepoint, install_fast_tracepoint): ... here.
-	New.
-	(download_tracepoints): Move some code to ...
-	(download_tracepoint_1): ... here.  New.
-
-2011-11-08  Yao Qi  <yao@codesourcery.com>
-
-	* remote-utils.c (relocate_instruction): A comment fix.
-
-2011-11-07  Joel Brobecker  <brobecker@adacore.com>
-
-	* win32-i386-low.c (dr_status_mirror, dr_control_mirror): Delete.
-	(i386_dr_low_get_control, i386_dr_low_get_status): Use
-	dr_status_mirror and dr_control_mirror from debug_reg_state.
-	(i386_dr_low_get_status): Use debug_reg_state.dr_status_mirror
-	(i386_initial_stuff): Remove use of deleted globals.
-	(i386_get_thread_context, i386_set_thread_context,
-	i386_thread_added): Use dr_status_mirror and dr_control_mirror
-	from debug_reg_state.
-
-2011-11-05  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (gdb_collect): Loop over tracepoints of same
-	address as TPOINT's.
-
-2011-11-02  Stan Shebs  <stan@codesourcery.com>
-
-	* tracepoint.c (agent_mem_read_string): New function.
-	(eval_agent_expr): Call it for tracenz.
-	* server.c (handle_query): Report support for tracenz.
-
-2011-11-02  Yao Qi  <yao@codesourcery.com>
-
-	* tracepoint.c (cmd_qtstart): Remove unused local variables.
-
-2011-11-02  Yao Qi  <yao@codesourcery.com>
-
-	* target.h: Fix a typo in comment.
-
-2011-10-31  Pedro Alves  <pedro@codesourcery.com>
-
-	* mem-break.c (check_mem_write): Add `myaddr' parameter.  Don't
-	clobber the breakpoints' shadows with fast tracepoint jumps.
-	* mem-break.h (check_mem_write): Add `myaddr' parameter.
-	* target.c (write_inferior_memory): Also pass MYADDR down to
-	check_mem_write.
-
-2011-10-07  Ulrich Weigand  <ulrich.weigand@linaro.org>
-
-	* configure.ac: Check support for personality routine.
-	* configure: Regenerate.
-	* config.in: Likewise.
-	* linux-low.c: Include <sys/personality.h>.
-	Define ADDR_NO_RANDOMIZE if necessary.
-	(linux_create_inferior): Disable address space randomization when
-	forking inferior, if requested.
-	(linux_supports_disable_randomization): New function.
-	(linux_target_ops): Install it.
-	* server.h (disable_randomization): Declare.
-	* server.c (disable_randomization): New global variable.
-	(handle_general_set): Handle QDisableRandomization.
-	(handle_query): Likewise for qSupported.
-	(main): Support --disable-randomization and --no-disable-randomization
-	command line arguments.
-	* target.h (struct target_ops): Add supports_disable_randomization.
-	(target_supports_disable_randomization): New macro.
-
-2011-09-29  Mike Frysinger  <vapier@gentoo.org>
-
-	* linux-low.c (target_loadseg): Add defined PTRACE_GETFDPIC to the
-	ifdef check.
-	[PT_GETDSBT] (target_loadmap): Wrap in a defined PT_GETDSBT check.
-	[!PT_GETDSBT] (target_loadmap): New definition.
-	(LINUX_LOADMAP, LINUX_LOADMAP_EXEC, LINUX_LOADMAP_INTERP): Define.
-	(linux_read_loadmap): Change PTRACE_GETDSBT_EXEC to
-	LINUX_LOADMAP_EXEC, PTRACE_GETDSBT_INTERP to LINUX_LOADMAP_INTERP,
-	and PT_GETDSBT to LINUX_LOADMAP.
-	[!PT_GETDSBT] (linux_read_loadmap): Define to NULL.
-	(linux_target_ops): Delete unnecessary ifdef PT_GETDSBT check.
-
-2011-09-21  Ulrich Weigand  <ulrich.weigand@linaro.org>
-
-	* linux-arm-low.c (struct arm_linux_hwbp_cap): Remove.
-	(arm_linux_hwbp_cap): New static variable.
-	(arm_linux_get_hwbp_cap): Replace by ...
-	(arm_linux_init_hwbp_cap): ... this new function.
-	(arm_linux_get_hw_breakpoint_count): Use arm_linux_hwbp_cap.
-	(arm_linux_get_hw_watchpoint_count): Likewise.
-	(arm_linux_get_hw_watchpoint_max_length): Likewise.
-	(arm_arch_setup): Call arm_linux_init_hwbp_cap.
-	(arm_prepare_to_resume): Use perror_with_name instead of error.
-
-2011-09-21  Ulrich Weigand  <ulrich.weigand@linaro.org>
-
-	* linux-arm-low.c: Include <signal.h>.
-	(PTRACE_GETHBPREGS, PTRACE_SETHBPREGS): Define if necessary.
-	(struct arm_linux_hwbp_cap): New data type.
-	(arm_hwbp_type, arm_hwbp_control_t): New typedefs.
-	(struct arm_linux_hw_breakpoint): New data type.
-	(MAX_BPTS, MAX_WPTS): Define.
-	(struct arch_process_info, struct arch_lwp_info): New data types.
-	(arm_linux_get_hwbp_cap): New function.
-	(arm_linux_get_hw_breakpoint_count): Likewise.
-	(arm_linux_get_hw_watchpoint_count): Likewise.
-	(arm_linux_get_hw_watchpoint_max_length): Likewise.
-	(arm_hwbp_control_initialize): Likewise.
-	(arm_hwbp_control_is_enabled): Likewise.
-	(arm_hwbp_control_is_initialized): Likewise.
-	(arm_hwbp_control_disable): Likewise.
-	(arm_linux_hw_breakpoint_equal): Likewise.
-	(arm_linux_hw_point_initialize): Likewise.
-	(struct update_registers_data): New data structure.
-	(update_registers_callback: New function.
-	(arm_insert_point): Likewise.
-	(arm_remove_point): Likewise.
-	(arm_stopped_by_watchpoint): Likewise.
-	(arm_stopped_data_address): Likewise.
-	(arm_new_process): Likewise.
-	(arm_new_thread): Likewise.
-	(arm_prepare_to_resume): Likewise.
-	(the_low_target): Register arm_insert_point, arm_remove_point,
-	arm_stopped_by_watchpoint, arm_stopped_data_address, arm_new_process,
-	arm_new_thread, and arm_prepare_to_resume.
-
-2011-09-15  Stan Shebs  <stan@codesourcery.com>
-
-	* server.h (struct emit_ops): Add compare-goto fields.
-	* tracepoint.c (gdb_agent_op_sizes): New table.
-	(emit_eq_goto): New function.
-	(emit_ne_goto): New function.
-	(emit_lt_goto): New function.
-	(emit_le_goto): New function.
-	(emit_gt_goto): New function.
-	(emit_ge_goto): New function.
-	(is_goto_target): New function.
-	(compile_bytecodes): Recognize special cases of compare-goto
-	combinations and call specialized emitters for them.
-	* linux-x86-low.c (amd64_emit_eq_goto): New function.
-	(amd64_emit_ne_goto): New function.
-	(amd64_emit_lt_goto): New function.
-	(amd64_emit_le_goto): New function.
-	(amd64_emit_gt_goto): New function.
-	(amd64_emit_ge_goto): New function.
-	(amd64_emit_ops): Add the new functions.
-	(i386_emit_eq_goto): New function.
-	(i386_emit_ne_goto): New function.
-	(i386_emit_lt_goto): New function.
-	(i386_emit_le_goto): New function.
-	(i386_emit_gt_goto): New function.
-	(i386_emit_ge_goto): New function.
-	(i386_emit_ops): Add the new functions.
-
-2011-09-08  Stan Shebs  <stan@codesourcery.com>
-
-	* linux-x86-low.c (i386_emit_prologue): Save %ebx.
-	(i386_emit_epilogue): Restore %ebx.
-
-2011-08-31  Jie Zhang  <jzhang918@gmail.com>
-
-	* server.c (step_thread): Remove definition.
-	(process_serial_event): Don't handle Hs.
-	* server.h (step_thread): Remove declaration.
-	* target.c (set_desired_inferior): Remove use of step_thread.
-
-2011-08-24  Luis Machado  <lgustavo@codesourcery.com>
-
-	* linux-low.c: Include linux-procfs.h.
-	(linux_attach_lwp_1): Update comments.
-	(linux_attach): Scan for existing threads when attaching to a
-	process that is the tgid.
-	* Makefile.in: Update dependencies.
-
-2011-08-24  Luis Machado  <lgustavo@codesourcery.com>
-
-	* configure.srv: Add linux-procfs.o dependencies.
-
-2011-08-14  Yao Qi  <yao@codesourcery.com>
-
-	* target.h (struct target_ops): Fix indent.
-	* win32-low.c (win32_target_ops): Fix comment.
-
-2011-08-14  Andrew Jenner  <andrew@codesourcery.com>
-	    Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (clean): Remove tic6x-*.c files.
-	(linux-tic6x-low.o, tic6x-c62x-linux.o, tic6x-c64x-linux.o): New rules.
-	(tic6x-c64xp-linux.o, tic6x-c62x-linux.c, tic6x-c64x-linux.c): Likewise.
-	(tic6x-c64xp-linux.c): Likewise.
-	* configure.srv: Add support for tic6x-*-uclinux.
-	* linux-tic6x-low.c: New.
-	* linux-low.c (PT_TEXT_ADDR, PT_DATA_ADDR, PT_TEXT_END_ADDR): Define.
-
-2011-08-14  Andrew Stubbs <ams@codesourcery.com>
-	    Yao Qi  <yao@codesourcery.com>
-
-	* target.h (struct target_ops): Add read_loadmap.
-	* linux-low.c (struct target_loadseg): New type.
-	(struct target_loadmap): New type.
-	(linux_read_loadmap): New function.
-	(linux_target_ops): Add linux_read_loadmap.
-	* server.c (handle_query): Support qXfer:fdpic:read packet.
-	* win32-low.c (win32_target_ops): Initialize field `read_loadmap'
-	to NULL.
-
-2011-08-05  Eli Zaretskii  <eliz@gnu.org>
-
-	* win32-low.c: Include <stdint.h>.
-
-2011-07-22  Pedro Alves  <pedro@codesourcery.com>
-
-	* i386-low.c (i386_insert_aligned_watchpoint): Don't pass the info
-	to the inferior here.
-	(i386_remove_aligned_watchpoint): Ditto.
-	(i386_handle_nonaligned_watchpoint): Return immediate on fail to
-	fit part of the watchpoint in the debug registers.
-	(i386_update_inferior_debug_regs): New.
-	(i386_low_insert_watchpoint): Work on a local mirror of the debug
-	registers, and only update the inferior on success.
-	(i386_low_remove_watchpoint): Ditto.
-
-2011-07-22  Kwok Cheung Yeung  <kcy@codesourcery.com>
-
-	* linux-low.c (compare_ints, unique, list_threads, show_process,
-	linux_core_of_thread): Delete.
-	(linux_target_ops): Change linux_core_of_thread to
-	linux_common_core_of_thread.
-	(linux_qxfer_osdata): Defer to linux_common_xfer_osdata.
-	* utils.c (malloc_failure): Change type of argument.
-	(xmalloc, xrealloc, xcalloc, xsnprintf): Delete.
-	* Makefile.in (SFILES): Add common/common-utils.c, common/xml-utils.c,
-	common/linux-osdata.c, common/ptid.c and common/buffer.c.
-	(OBS): Add xml-utils.o, common-utils.o, ptid.o and buffer.o.
-	(IPA_OBJS): Add common-utils-ipa.o.
-	(ptid_h, linux_osdata_h): New macros.
-	(server_h): Add common/common-utils.h, common/xml-utils.h,
-	common/buffer.h, common/gdb_assert.h, common/gdb_locale.h and
-	common/ptid.h.
-	(common-utils-ipa.o, common-utils.o, xml-utils.o, linux-osdata.o,
-	ptid.o, buffer.o): New rules.
-	(linux-low.o): Add common/linux-osdata.h as a dependency.
-	* configure.srv (srv_tgtobj): Add linux-osdata.o to Linux targets.
-	* configure.ac: Add AC_HEADER_DIRENT check.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* remote-utils.c (xml_escape_text): Delete.
-	(buffer_grow, buffer_free, buffer_init, buffer_finish,
-	buffer_xml_printf): Move to common/buffer.c.
-	* server.c (main): Remove call to initialize_inferiors.
-	* server.h (struct ptid, ptid_t, minus_one_ptid, null_ptid,
-	ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_lwp, ptid_get_tid,
-	ptid_equal, ptid_is_pid, initialize_inferiors, xml_escape_text,
-	internal_error, gdb_assert, gdb_assert_fail): Delete.
-	(struct buffer, buffer_grow, buffer_free, buffer_init, buffer_finish,
-	buffer_xml_printf, buffer_grow_str, buffer_grow_str0): Move to
-	common/buffer.h.
-	* inferiors.c (null_ptid, minus_one_ptid, ptid_build, pid_to_ptid,
-	ptid_get_pid, ptid_get_lwp, ptid_get_tid, ptid_equal, ptid_is_pid,
-	initialize_inferiors): Delete.
-
-2011-07-20  Pedro Alves  <pedro@codesourcery.com>
-
-	* tracepoint.c (tracepoint_look_up_symbols): Return upon the first
-	symbol error.
-
-2011-05-31  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-x86-low.c (i386_dr_low_get_addr): Fix off by one in
-	assertion.
-	* win32-i386-low.c (i386_dr_low_get_addr): Ditto.
-
-2011-05-26  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (thread-db.o): Track dependence to
-	common/gdb_thread_db.h.
-	* thread-db.c: include gdb_thread_db.h from right place.
-
-2011-05-16  Adrian Cornish  <gnu@bluedreamer.com>
-
-	* linux-i386-ipa.c (supply_static_tracepoint_registers): Pass
-	__FILE__ and __LINE__ to internal_error.
-
-2011-05-13  Doug Evans  <dje@google.com>
-
-	* thread-db.c (try_thread_db_load_from_sdir): New function.
-	(try_thread_db_load_from_dir): New function.
-	(thread_db_load_search): Handle $sdir, ignore $pdir.
-	Remove trying of system directories if search of
-	libthread-db-search-path fails,	that is now done via $sdir.
-
-2011-05-12  Kwok Cheung Yeung  <kcy@codesourcery.com>
-
-	* server.c (handle_query): Add EnableDisableTracepoints to the list
-	of supported features.
-	* tracepoint.c (clear_installed_tracepoints): Uninstall disabled
-	tracepoints.
-	(cmd_qtenable_disable): New.
-	(cmd_qtstart): Install tracepoints even if disabled.
-	(handle_tracepoint_general_set): Add call to cmd_qtenable_disable on
-	receiving a QTEnable or QTDisable packet.
-	(gdb_collect): Skip data collection if fast tracepoint is disabled.
-	(ust_marker_to_static_tracepoint): Do not ignore disabled static
-	tracepoints.
-	(gdb_probe): Skip data collection if static tracepoint is disabled.
-
-2011-05-10  Doug Evans  <dje@google.com>
-
-	* thread-db.c (thread_db_handle_monitor_command): Handle elided path.
-
-2011-05-04  Doug Evans  <dje@google.com>
-
-	* linux-low.c (linux_join): Skip process lookup.
-	* spu-low.c (spu_join): Ditto.
-	* server.c (join_inferiors_callback): Delete.
-	(process_serial_event): For 'D' packet (detach) call join_inferior
-	directly.
-
-2011-05-04  Joseph Myers  <joseph@codesourcery.com>
-
-	* README: Don't mention xscale*-*-linux*.
-	* configure.srv (xscale*-*-linux*): Don't handle target.
-
-2011-04-27  Nathan Froyd  <froydnj@codesourcery.com>
-
-	* linux-x86-low.c (amd64_emit_const): Call memcpy instead of
-	casting pointers.
-	(amd64_emit_reg, amd64_emit_int_call_1, amd64_emit_void_call_2):
-	(i386_emit_const, i386_emit_reg, i386_emit_int_call_1):
-	(i386_emit_void_call_2): Likewise.
-
-2011-04-26  Yao Qi  <yao@codesourcery.com>
-
-	* linux-low.c: Move common macros to linux-ptrace.h.
-	Include linux-ptrace.h.
-	* Makefile.in (linux_ptrace_h): New.
-	(linux-low.o): Depends on linux-ptrace.h.
-
-2011-04-24  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* remote-utils.c (handle_accept_event): Close LISTEN_DESC only if
-	RUN_ONCE.  Comment for the LISTEN_DESC delete_file_handler call.
-	(remote_prepare): New function with most of the TCP code from ...
-	(remote_open): ... here.  Detect PORT here unconditionally.  Move also
-	setting transport_is_reliable.
-	* server.c (run_once): New variable.
-	(gdbserver_usage): Document it.
-	(main): Set run_once for `--once'.  Call remote_prepare.  Exit after
-	the first run if RUN_ONCE.
-	* server.h (run_once, remote_prepare): New declarations.
-
-2011-04-19  Tom Tromey  <tromey@redhat.com>
-
-	* win32-low.c (handle_load_dll): Remove duplicate "the".
-
-2011-04-07  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	Remove support for old Cygwin 1.5 versions.
-	* win32-low.c (win32_create_inferior): Use new cygwin_path_list
-	function to avoid warning.
-	(win32_add_one_solib): Use cygwin_conv_path function to avoid
-	warning.
-
-2011-03-18  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* gdbserver/server.h (Macro _): Define it if not available.
-
-2011-03-14  Michael Snyder  <msnyder@vmware.com>
-
-	* hostio.c (handle_close): Remove unnecessary null test.
-
-2011-03-10  Joel Brobecker  <brobecker@adacore.com>
-
-	* Makefile.in (maintainer-clean realclean distclean): Remove
-	"make ...  subdir_do" command.
-
-2011-03-10  Michael Snyder  <msnyder@vmware.com>
-
-	* tracepoint.c (tracepoint_finish_step): Fix loop variable.
-
-	* server.c (handle_v_run): Free alloced buffer on early return.
-
-2011-03-09  Yao Qi  <yao@codesourcery.com>
-
-	Revert:
-	2011-03-04  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in: Remove GNU make feature --directory.
-
-	2011-03-05  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (CLEANDIRS, REQUIRED_SUBDIRS): New variable.
-	(subdir_do): New make target.  Copied from gdb/Makefile.
-	(maintainer-clean, realclean, distclean, clean): Call corresponding
-	make targets in common/Makefile.
-
-	2011-02-11  Yao Qi  <yao@codesourcery.com>
-
-	* configure.ac: Call AC_PROG_RANLIB.
-	* Makefile.in: Remove signals.o from OBS.  Link libcommon.a.
-	* configure: Regenerate.
-
-2011-03-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* remote-utils.c (putpkt_binary_1): Calculate BUF2 size dynamically.
-
-2011-03-06  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (REQUIRED_SUBDIRS): Remove $(LIBCOMMON_DIR).
-
-2011-03-05  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in (CLEANDIRS, REQUIRED_SUBDIRS): New variable.
-	(subdir_do): New make target.  Copied from gdb/Makefile.
-	(maintainer-clean, realclean, distclean, clean): Call corresponding
-	make targets in common/Makefile.
-
-2011-03-04  Yao Qi  <yao@codesourcery.com>
-
-	* Makefile.in: Remove GNU make feature --directory.
-
-2011-03-04  Michael Snyder  <msnyder@vmware.com>
-
-	* server.c (queue_stop_reply): Call xmalloc not malloc.
-
-2011-03-02  Michael Snyder  <msnyder@vmware.com>
-
-	* linux-arm-low.c (arm_arch_setup): Replace malloc with xmalloc.
-
-2011-02-28  Michael Snyder  <msnyder@vmware.com>
-
-	* tracepoint.c (cmd_qtv): Discard unused value 'packet'.
-	(cmd_qtframe): Ditto.
-	(cmd_qtbuffer): Ditto.
-	(cmd_bigqtbuffer): Ditto.
-
-	* utils.c (decimal2str): Initialize 'width' to nine, then
-	don't mess with it.
-
-2011-02-28  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* hostio.c (require_data): Free *data, not data.
-
-2011-02-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* hostio.c (require_data): Use free, not xfree.
-
-2011-02-27  Michael Snyder  <msnyder@vmware.com>
-
-	* server.c (handle_query): Discard unused value.
-
-	* hostio.c (require_data): Free malloc memory before returning
-	error.
-
-2011-02-26  Michael Snyder  <msnyder@vmware.com>
-
-	* linux-low.c (list_threads): Call closedir for dirent.
-
-2011-02-27  Michael Snyder  <msnyder@vmware.com>
-
-	* i386-low.c (i386-length_and_rw_bits): Comment the fact that
-	a case statement falls through.
-
-	* linux-low.c (linux_xfer_siginfo): Fix fencepost error.
-
-	* linux-amd64-ipa.c (gdb_agent_get_raw_reg): Fix fencepost error
-	in comparison.
-
-2011-02-26  Michael Snyder  <msnyder@vmware.com>
-
-	* utils.c (decimal2str): Eliminate dead code and dead param.
-	(pulongest): Drop dead param from call to decimal2str.
-	(plongest): Ditto.
-
-2011-02-24  Joel Brobecker  <brobecker@adacore.com>
-
-	Revert the following patch (not approved yet):
-	2011-02-21  Hui Zhu  <teawater@gmail.com>
-	* tracepoint.c (tp_printf): New function.
-	(eval_agent_expr): Handle gdb_agent_op_printf.
-
-2011-02-21  Hui Zhu  <teawater@gmail.com>
-
-	* tracepoint.c (tp_printf): New function.
-	(eval_agent_expr): Handle gdb_agent_op_printf.
-
-2011-02-18  Tom Tromey  <tromey@redhat.com>
-
-	* Makefile.in (tracepoint-ipa.o): Depend on ax.def.
-	(tracepoint.o): Likewise.
-	* tracepoint.c (enum gdb_agent_op): Use ax.def.
-	(gdb_agent_op_names): Likewise.
-
-2011-02-18  Tom Tromey  <tromey@redhat.com>
-
-	* tracepoint.c (enum gdb_agent_op) <gdb_agent_op_pick,
-	gdb_agent_op_rot>: New constants.
-	(gdb_agent_op_names): Add pick and roll.
-	(eval_agent_expr) <gdb_agent_op_pick, gdb_agent_op_rot>: New
-	cases.
-
-2011-02-15  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* aclocal.m4: Regenerated with aclocal-1.11.1.
-
-2011-02-14  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (handle_qxfer_traceframe_info): New.
-	(qxfer_packets): Register "traceframe-info".
-	(handle_query): Report support for qXfer:traceframe-info:read+.
-	* tracepoint.c (match_blocktype): New.
-	(traceframe_find_block_type): Rename to ...
-	(traceframe_walk_blocks): ... this.  Add callback filter argument,
-	and use it.
-	(traceframe_find_block_type): New, reimplemented on top of
-	traceframe_walk_blocks.
-	(build_traceframe_info_xml): New.
-	(traceframe_read_info): New.
-	* server.h (traceframe_read_info): Declare.
-
-2011-02-11  Yao Qi  <yao@codesourcery.com>
-
-	* configure.ac: Call AC_PROG_RANLIB.
-	* Makefile.in: Remove signals.o from OBS.  Link libcommon.a.
-	* configure: Regenerate.
-
-2011-02-07  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (gdb_read_memory): Change return semantics to allow
-	partial transfers.
-	(handle_search_memory_1): Adjust.
-	(process_serial_event) <'m' packet>: Handle partial transfers.
-	* tracepoint.c (traceframe_read_mem): Handle partial transfers.
-
-2011-01-28  Pedro Alves  <pedro@codesourcery.com>
-
-	* regcache.c (init_register_cache): Initialize
-	regcache->register_status.
-	(free_register_cache): Release regcache->register_status.
-	(regcache_cpy): Copy register_status.
-	(registers_to_string): Print 'x's for unavailable registers.
-	(supply_register): Mark the register's status valid or
-	unavailable, depending on whether a buffer was passed in or not.
-	(supply_register_zeroed): New.
-	(supply_regblock): Mark the registers' status valid or
-	unavailable, depending on whether a buffer was passed in or not.
-	* regcache.h (REG_UNAVAILABLE, REG_VALID): New defines.
-	(struct regcache): New `register_status' field.
-	(supply_register_zeroed): Declare.
-	* i387-fp.c (i387_xsave_to_cache): Zero out registers using
-	supply_register_zeroed, rather than passing a NULL buffer to
-	supply_register.
-	* tracepoint.c (fetch_traceframe_registers): Update comment.
-
-2011-01-28  Pedro Alves  <pedro@codesourcery.com>
-
-	* i387-fp.c (i387_xsave_to_cache): Make passing NULL as register
-	buffer explicit.
-
-2011-01-25  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.h (decode_xfer_write): Change prototype.
-	* remote-utils.c (decode_xfer_write): Remove `annex' parameter,
-	and don't extract the annex here.
-	* server.c (decode_xfer_read): Remove `annex' parameter,
-	and don't extract the annex here.
-	(decode_xfer): New.
-	(struct qxfer): New.
-	(handle_qxfer_auxv, handle_qxfer_features, handle_qxfer_libraries)
-	(handle_qxfer_osdata, handle_qxfer_siginfo, handle_qxfer_spu)
-	(handle_qxfer_statictrace): New functions, abstracted out from
-	handle_query, and made to use the struct qxfer interface.
-	(handle_threads_qxfer_proper): Rename to ...
-	(handle_qxfer_threads_proper): ... this.
-	(handle_threads_qxfer): Rename to ...
-	(handle_qxfer_threads): ... this.  Adjust.
-	(qxfer_packets): New array.
-	(handle_qxfer): New function.
-	(handle_query): Use handle_qxfer.
-
-2011-01-05  Michael Snyder  <msnyder@msnyder-server.eng.vmware.com>
-
-	* gdbreplay.c: Shorten lines of >= 80 columns.
-	* linux-low.c: Ditto.
-	* linux-ppc-low.c: Ditto.
-	* linux-s390-low.c: Ditto.
-	* linux-sparc-low.c: Ditto.
-	* linux-x86-low.c: Ditto.
-	* linux-xtensa-low.c: Ditto.
-	* mem-break.c: Ditto.
-	* nto-low.c: Ditto.
-	* regcache.h: Ditto.
-	* remote-utils.c: Ditto.
-	* server.c: Ditto.
-	* server.h: Ditto.
-	* thread-db.c: Ditto.
-	* tracepoint.c: Ditto.
-	* utils.c: Ditto.
-	* win32-low.h: Ditto.
-
-2011-01-05  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbserver/configure.ac, gdbserver/gdbserver.1: Copyright year
-	update.
-
-2011-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* server.c (gdbserver_version): Update copyright year in version
-	output.
-	* gdbreplay.c (gdbreplay_version): Ditto.
-
-2010-12-29  Jie Zhang  <jie.zhang@analog.com>
-
-	* configure.srv (bfin-*-*linux*): Handle Blackfin/Linux targets.
-	* linux-bfin-low.c: New file.
-	* linux-low.c: Define PT_TEXT_ADDR, PT_TEXT_END_ADDR, and
-	PT_DATA_ADDR for BFIN targets.
-	* Makefile.in (SFILES): Add linux-bfin-low.c.
-	(clean): Remove reg-bfin.c.
-	(linux-bfin-low.o, reg-bfin.o, reg-bfin.c): New targets.
-	* README: Mention supported Blackfin targets.
-
-2010-12-23  Mike Frysinger  <vapier@gentoo.org>
-
-	* .gitignore: New file.
-
-2010-11-16  Mike Frysinger  <vapier@gentoo.org>
-
-	* linux-low.c (linux_tracefork_child): Add char* cast to arg.
-
-2010-10-22  Jie Zhang  <jie@codesourcery.com>
-
-	* Makefile.in: Add FLAGS_TO_PASS variable.
-	(install): Remove dependency of install-only and recursively
-	invoke make for install-only.
-
-2010-10-04  Doug Evans  <dje@google.com>
-
-	* Makefile.in (uninstall): Use $(DESTDIR).
-
-2010-09-24  Pedro Alves  <pedro@codesourcery.com>
-
-	PR gdb/11842
-
-	* linux-x86-low.c (compat_siginfo_from_siginfo)
-	(siginfo_from_compat_siginfo): Also copy si_pid and si_uid when
-	si_code is < 0.  Check for si_code == SI_TIMER before checking for
-	si_code < 0.
-
-2010-09-13  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-i386-low.c: New file.
-	* configure.srv: Add handling of i[34567]86-*-lynxos* targets.
-
-2010-09-13  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c (ptrace_request_to_str): Remove handling for
-	request values that have been removed in LynxOS 5.x.
-
-2010-09-13  Joel Brobecker  <brobecker@adacore.com>
-
-	* lynx-low.c, lynx-ppc-loc.c: Include <sys/ptrace.h> instead of
-	<ptrace.h>
-
-2010-09-09  Nathan Sidwell  <nathan@codesourcery.com>
-
-	* configure.ac: Add --enable-inprocess-agent option.
-	* configure: Rebuilt.
-
-2010-09-06  Yao Qi  <yao@codesourcery.com>
-
-	* linux-low.c (linux_kill): Remove unused variable.
-	(linux_stabilize_threads): Likewise.
-	* server.c (start_inferior): Likewise.
-	(queue_stop_reply_callback): Likewise.
-	* tracepoint.c (do_action_at_tracepoint): Likewise.
-
-2010-09-06  Yao Qi  <yao@codesourcery.com>
-
-	* linux-low.c (maybe_move_out_of_jump_pad): Restore current_inferior
-	on return.
-
-2010-09-06  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* target.c (mywait) <TARGET_WAITKIND_EXITED>: Fix to use INTEGER.
-
-2010-09-06  Pedro Alves  <pedro@codesourcery.com>
-
-	* Makefile.in (install-only): Replace $IPA_DEPFILES with
-	"$(IPA_DEPFILES)".
-
-2010-09-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbserver/lynx-low.c, gdbserver/lynx-low.h,
-	gdbserver/lynx-ppc-low.c: New files.
-	* Makefile.in (lynx_low_h): New variable.
-	(lynx-low.o, lynx-ppc-low.o): New rules.
-	* configure.ac: On LynxOS, link with -lnetinet.
-	* configure.srv: Add handling of powerpc-*-lynxos* targets.
-	* configure: regenerate.
-
-2010-09-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* Makefile.in (vasprintf.o, vsnprintf.o): New rules.
-	* configure.ac: Add check for vasprintf and vsnprintf.
-	* configure, config.in: Regenerate.
-	* server.h (vasprintf, vsnprintf): Add conditional declarations.
-
-2010-09-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbreplay.c: Move include of alloca.h up, next to include of
-	malloc.h.
-	* server.h: Add include of malloc.h.
-	* mem-break.c: Remove include of malloc.h.
-	* server.c, tracepoint.c, utils.c, win32-low.c: Likewise.
-
-2010-09-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* Makefile.in (memmem.o): Build with -Wno-error.
-
-2010-09-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* utils.c (xsnprintf): Make non-static.
-	* server.h: Add xsnprintf declaration.
-	* linux-low.c, nto-low.c, target.c, thread-db.c, tracepoint.c:
-	replace calls to snprintf by calls to xsnprintf throughout.
-
-2010-09-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* configure.ac: Add configure check for alloca.
-	* configure, config.in: Regenerate.
-	* server.h: Include alloca.h if it exists.
-	* gdbreplay.c: Include alloca.h if it exists.
-
-2010-08-28  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (__SIGRTMIN): Define if not already defined.
-	(linux_create_inferior): Check for __ANDROID__ rather than
-	__SIGRTMIN.
-	(enqueue_one_deferred_signal): Don't requeue non-RT signals that
-	are already deferred.
-	(linux_wait_1): Check for __ANDROID__ rather than __SIGRTMIN.
-	(linux_resume_one_thread): Don't queue a SIGSTOP if the lwp is
-	stopped and already has a pending signal to report.
-	(proceed_one_lwp): : Don't queue a SIGSTOP if the lwp already has
-	a pending signal to report or is moving out of a jump pad.
-	(linux_init_signals): Check for __ANDROID__ rather than
-	__SIGRTMIN.
-
-2010-08-28  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_stabilize_threads): Wrap debug output in a
-	debug_threads check.  Avoid a linear search when not doing debug
-	output.
-
-2010-08-27  Pedro Alves  <pedro@codesourcery.com>
-
-	* event-loop.c (event_handle_func): Adjust to use gdb_fildes_t.
-	(struct gdb_event) <fd>: Change type to gdb_fildes_t.
-	(struct file_handler) <fd>: Change type to gdb_fildes_t.
-	(process_event): Change local fd's type to gdb_fildes_t.
-	(create_file_handler): Adjust prototype.
-	(delete_file_handler): Adjust prototype.
-	(handle_file_event): Adjust prototype.  Use pfildes.
-	(create_file_event): Adjsut prototype.
-	* remote-utils.c (remote_desc, listen_desc): Change type to
-	gdb_fildes_t.
-	* server.h: New gdb_fildes_t typedef.
-	[USE_WIN32API]: Include winsock2.h.
-	(delete_file_handler, add_file_handler): Adjust prototypes.
-	(pfildes): Declare.
-	* utils.c (pfildes): New.
-
-2010-08-27  Pedro Alves  <pedro@codesourcery.com>
-
-	* configure.ac (build_warnings): Add -Wno-char-subscripts.
-	* configure: Regenerate.
-
-2010-08-27  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_unprepare_to_access_memory): Rename to ...
-	(linux_done_accessing_memory): ... this.
-	(linux_target_ops): Adjust.
-	* linux-x86-low.c (x86_insert_point, x86_remove_point): Adjust.
-	* nto-low.c (nto_target_ops): Adjust comment.
-	* server.c (gdb_read_memory, gdb_write_memory): Adjust.
-	* spu-low.c (spu_target_ops): Adjust comment.
-	* target.h (target_ops): Rename unprepare_to_access_memory field
-	to done_accessing_memory.
-	(unprepare_to_access_memory): Rename to ...
-	(done_accessing_memory): ... this.
-
-2010-08-26  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_prepare_to_access_memory): New.
-	(linux_unprepare_to_access_memory): New.
-	(linux_target_ops): Install them.
-	* server.c (read_memory): Rename to ...
-	(gdb_read_memory): ... this.  Use
-	prepare_to_access_memory/prepare_to_access_memory.
-	(write_memory): Rename to ...
-	(gdb_write_memory): ... this.  Use
-	prepare_to_access_memory/prepare_to_access_memory.
-	(handle_search_memory_1): Adjust.
-	(process_serial_event): Adjust.
-	* target.h (struct target_ops): New fields
-	prepare_to_access_memory and unprepare_to_access_memory.
-	(prepare_to_access_memory, unprepare_to_access_memory): New.
-	* linux-x86-low.c (x86_insert_point, x86_remove_point): Use
-	prepare_to_access_memory/prepare_to_access_memory.
-	* nto-low.c (nto_target_ops): Adjust.
-	* spu-low.c (spu_target_ops): Adjust.
-	* win32-low.c (win32_target_ops): Adjust.
-
-2010-08-26  Pedro Alves  <pedro@codesourcery.com>
-
-	* Makefile.in (WARN_CFLAGS): Get it from configure.
-	(WERROR_CFLAGS): New.
-	(INTERNAL_CFLAGS): Add WERROR_CFLAGS.
-	* configure.ac: Introduce --enable-werror, which adds -Werror to
-	the compiler command line.  Enabled by default.  Disable with
-	--disable-werror.  Add -Wdeclaration-after-statement
-	Wpointer-arith and -Wformat-nonliteral to warning flags.
-	* configure: Regenerate.
-
-2010-08-26  Pedro Alves  <pedro@codesourcery.com>
-
-	* mem-break.c [HAVE_MALLOC_H]: Include malloc.h.
-
-2010-08-26  Pedro Alves  <pedro@codesourcery.com>
-
-	* gdbreplay.c (remote_error): New.
-	(gdbchar): New.
-	(expect): Use gdbchar.  Check for error reading from GDB.
-	Clarify sync error output.
-	(play): Check for errors writing to GDB.
-	* linux-low.c (sigchld_handler): Really ignore `write' errors.
-	* remote-utils.c (getpkt): Check for errors writing to the remote
-	descriptor.
-
-2010-08-25  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_wait_1): Move non-debugging code out of
-	`debug_threads' control.
-
-2010-08-25  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_wait_1): Don't set last_status here.
-	* server.c (push_event, queue_stop_reply_callback): Assert we're
-	not pushing a TARGET_WAITKIND_IGNORE event.
-	(start_inferior, start_inferior, attach_inferior, handle_v_cont)
-	(myresume, handle_target_event): Set the thread's last_resume_kind
-	and last_status from the target returned status.
-
-2010-08-25  Pedro Alves  <pedro@codesourcery.com>
-
-	PR threads/10729
-
-	* linux-x86-low.c (update_debug_registers_callback): New.
-	(i386_dr_low_set_addr): Use it.
-	(i386_dr_low_get_addr): New.
-	(i386_dr_low_set_control): Use update_debug_registers_callback.
-	(i386_dr_low_get_control): New.
-	(i386_dr_low_get_status): Adjust.
-	* linux-low.c (linux_stop_lwp): New.
-	* linux-low.h (linux_stop_lwp): Declare.
-
-	* i386-low.c (I386_DR_GET_RW_LEN): Take the dr7 contents as
-	argument instead of a i386_debug_reg_state.
-	(I386_DR_WATCH_HIT): Take the dr6 contents as argument instead of
-	a i386_debug_reg_state.
-	(i386_insert_aligned_watchpoint): Adjust.
-	(i386_remove_aligned_watchpoint): Adjust.
-	(i386_low_stopped_data_address): Read the debug registers from the
-	inferior instead of from the mirrors.
-	* i386-low.h (struct i386_debug_reg_state): Extend comment.
-	(i386_dr_low_get_addr): Declare.
-	(i386_dr_low_get_control): Declare.
-	(i386_dr_low_get_status): Change prototype.
-
-	* win32-i386-low.c (dr_status_mirror, dr_control_mirror): New globals.
-	(i386_dr_low_get_addr): New.
-	(i386_dr_low_get_control): New.
-	(i386_dr_low_get_status): Adjust prototype.  Return
-	dr_status_mirror.
-	(i386_initial_stuff): Clear dr_status_mirror and
-	dr_control_mirror.
-	(i386_get_thread_context): Adjust.
-	(i386_set_thread_context): Adjust.
-	(i386_thread_added): Adjust.
-
-2010-08-24  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.h (linux_thread_area): Delete declaration.
-
-2010-08-11  Thomas Schwinge  <thomas@codesourcery.com>
-
-	* linux-low.c (linux_wait_1): Correctly return the ptid of the child
-	after its termination.
-
-2010-08-09  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (gdb_wants_lwp_stopped): Delete.
-	(gdb_wants_all_stopped): Delete.
-	(linux_wait_1): Don't call them.
-	* server.c (handle_v_cont): Tag all threads as want-stopped.
-	(gdb_wants_thread_stopped): Fix comments.  Tag the thread that
-	stopped as "client-wants-stopped".
-
-2010-07-31  Pedro Alves  <pedro@codesourcery.com>
-
-	* Makefile.in (signals_h): New.
-	(server_h): Depend on it.
-	(server.o): Don't depend on $(signals_def).
-	(signals.o): Depend on $(signals_def).
-
-2010-07-31  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* Makefile.in (signals_def): New.
-	(server_h): Append include/gdb/signals.h and signals_def.
-	(server.o): Append signals_def.
-
-2010-07-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* server.c (handle_target_event): Use target_signal_to_host for
-	resume_info.sig initialization.
-	* target.h (struct thread_resume) <sig>: New comment.
-
-2010-07-20  Ozkan Sezer  <sezeroz@gmail.com>
-
-	* server.c (handle_query): strcpy() the returned string from paddress()
-	instead of sprintf().
-	* utils.c (paddress): Return phex_nz().
-
-2010-07-07  Joel Brobecker  <brobecker@adacore.com>
-
-	* server.c (handle_v_cont): Call mourn_inferior if process
-	just exited.
-	(myresume): Likewise.
-
-2010-07-01  Pedro Alves  <pedro@codesourcery.com>
-
-	Static tracepoints, and integration with UST.
-
-	* configure.ac: Handle --with-ust.  substitute ustlibs and ustinc.
-	* mem-break.c (uninsert_all_breakpoints)
-	(reinsert_all_breakpoints): New.
-	* mem-break.h (reinsert_all_breakpoints, uninsert_all_breakpoints):
-	* tracepoint.c (ust_loaded, helper_thread_id, cmd_buf): New.
-	(gdb_agent_ust_loaded, helper_thread_id)
-	(gdb_agent_helper_thread_id): New macros.
-	(struct ipa_sym_addresses): Add addr_ust_loaded,
-	addr_helper_thread_id, addr_cmd_buf.
-	(symbol_list): Add ust_loaded, helper_thread_id, cmd_buf.
-	(in_process_agent_loaded_ust): New.
-	(write_e_ust_not_loaded): New.
-	(maybe_write_ipa_ust_not_loaded): New.
-	(struct collect_static_trace_data_action): New.
-	(enum tracepoint_type) <static_tracepoint>: New.
-	(struct tracepoint) <handle>: Mention static tracepoints.
-	(struct static_tracepoint_ctx): New.
-	(CMD_BUF_SIZE): New.
-	(add_tracepoint_action): Handle static tracepoint actions.
-	(unprobe_marker_at): New.
-	(clear_installed_tracepoints): Handle static tracepoints.
-	(cmd_qtdp): Handle static tracepoints.
-	(probe_marker_at): New.
-	(cmd_qtstart): Handle static tracepoints.
-	(response_tracepoint): Handle static tracepoints.
-	(cmd_qtfstm, cmd_qtsstm, cmd_qtstmat): New.
-	(handle_tracepoint_query): Handle qTfSTM, qTsSTM and qTSTMat.
-	(get_context_regcache): Handle static tracepoints.
-	(do_action_at_tracepoint): Handle static tracepoint actions.
-	(traceframe_find_block_type): Handle static trace data blocks.
-	(traceframe_read_sdata): New.
-	(download_tracepoints): Download static tracepoint actions.
-	[HAVE_UST] Include ust/ust.h, dlfcn.h, sys/socket.h, and sys/un.h.
-	(GDB_PROBE_NAME): New.
-	(ust_ops): New.
-	(GET_UST_SYM): New.
-	(USTF): New.
-	(dlsym_ust): New.
-	(ust_marker_to_static_tracepoint): New.
-	(gdb_probe): New.
-	(collect_ust_data_at_tracepoint): New.
-	(gdb_ust_probe): New.
-	(UNIX_PATH_MAX, SOCK_DIR): New.
-	(gdb_ust_connect_sync_socket): New.
-	(resume_thread, stop_thread): New.
-	(run_inferior_command): New.
-	(init_named_socket): New.
-	(gdb_ust_socket_init): New.
-	(cstr_to_hexstr): New.
-	(next_st): New.
-	(first_marker, next_marker): New.
-	(response_ust_marker): New.
-	(cmd_qtfstm, cmd_qtsstm): New.
-	(unprobe_marker_at, probe_marker_at): New.
-	(cmd_qtstmat, gdb_ust_thread): New.
-	(gdb_ust_init): New.
-	(initialize_tracepoint_ftlib): Call gdb_ust_init.
-	* linux-amd64-ipa.c [HAVE_UST]: Include ust/processor.h
-	(ST_REGENTRY): New.
-	(x86_64_st_collect_regmap): New.
-	(X86_64_NUM_ST_COLLECT_GREGS): New.
-	(AMD64_RIP_REGNUM): New.
-	(supply_static_tracepoint_registers): New.
-	* linux-i386-ipa.c [HAVE_UST]: Include ust/processor.h
-	(ST_REGENTRY): New.
-	(i386_st_collect_regmap): New.
-	(i386_NUM_ST_COLLECT_GREGS): New.
-	(supply_static_tracepoint_registers): New.
-	* server.c (handle_query): Handle qXfer:statictrace:read.
-	<qSupported>: Report support for StaticTracepoints, and
-	qXfer:statictrace:read features.
-	* server.h (traceframe_read_sdata)
-	(supply_static_tracepoint_registers): Declare.
-	* remote-utils.c (convert_int_to_ascii, hexchars, ishex, tohex)
-	(unpack_varlen_hex): Include in IPA build.
-	* Makefile.in (ustlibs, ustinc): New.
-	(IPA_OBJS): Add remote-utils-ipa.o.
-	($(IPA_LIB)): Link -ldl and -lpthread.
-	(UST_CFLAGS): New.
-	(IPAGENT_CFLAGS): Add UST_CFLAGS.
-	* config.in, configure: Regenerate.
-
-2010-06-20  Ian Lance Taylor  <iant@google.com>
-	    Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-x86-low.c (always_true): Delete.
-	(EMIT_ASM, EMIT_ASM32): Use an uncondition asm jmp instead of
-	trying to fool the compiler with always_true.
-
-2010-06-20  Pedro Alves  <pedro@codesourcery.com>
-
-	* tracepoint.c (condition_true_at_tracepoint): Don't run compiled
-	conditions in gdbserver.
-
-2010-06-19  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* spu-low.c (spu_read_memory): Wrap around local store limit.
-	(spu_write_memory): Likewise.
-
-2010-06-15  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-x86-low.c (amd64_emit_const, amd64_emit_void_call_2)
-	(i386_emit_const, i386_emit_void_call_2): Replace int64_t uses with
-	LONGEST uses.
-	* server.h (struct emit_ops): Replace int64_t uses with LONGEST
-	uses.
-	* tracepoint.c (emit_const, emit_void_call_2): Replace int64_t
-	uses with LONGEST uses.
-
-2010-06-14  Stan Shebs  <stan@codesourcery.com>
-	    Pedro Alves  <pedro@codesourcery.com>
-
-	Bytecode compiler.
-
-	* linux-x86-low.c: Include limits.h.
-	(add_insns): New.
-	(always_true): New.
-	(EMIT_ASM): New.
-	(EMIT_ASM32): New.
-	(amd64_emit_prologue, amd64_emit_epilogue, amd64_emit_add)
-	(amd64_emit_sub, amd64_emit_mul, amd64_emit_lsh)
-	(amd64_emit_rsh_signed, amd64_emit_rsh_unsigned, amd64_emit_ext,
-	(amd64_emit_log_not, amd64_emit_bit_and, amd64_emit_bit_or)
-	(amd64_emit_bit_xor, amd64_emit_bit_not, amd64_emit_equal,
-	(amd64_emit_less_signed, amd64_emit_less_unsigned, amd64_emit_ref,
-	(amd64_emit_if_goto, amd64_emit_goto, amd64_write_goto_address)
-	(amd64_emit_const, amd64_emit_call, amd64_emit_reg)
-	(amd64_emit_pop, amd64_emit_stack_flush, amd64_emit_zero_ext)
-	(amd64_emit_swap, amd64_emit_stack_adjust, amd64_emit_int_call_1)
-	(amd64_emit_void_call_2): New.
-	(amd64_emit_ops): New.
-	(i386_emit_prologue, i386_emit_epilogue, i386_emit_add)
-	(i386_emit_sub,i386_emit_mul, i386_emit_lsh, i386_emit_rsh_signed)
-	(i386_emit_rsh_unsigned, i386_emit_ext, i386_emit_log_not)
-	(i386_emit_bit_and, i386_emit_bit_or, i386_emit_bit_xor)
-	(i386_emit_bit_not, i386_emit_equal, i386_emit_less_signed)
-	(i386_emit_less_unsigned, i386_emit_ref, i386_emit_if_goto)
-	(i386_emit_goto, i386_write_goto_address, i386_emit_const)
-	(i386_emit_call, i386_emit_reg, i386_emit_pop)
-	(i386_emit_stack_flush, i386_emit_zero_ext, i386_emit_swap)
-	(i386_emit_stack_adjust, i386_emit_int_call_1)
-	(i386_emit_void_call_2): New.
-	(i386_emit_ops): New.
-	(x86_emit_ops): New.
-	(the_low_target): Install x86_emit_ops.
-	* server.h (struct emit_ops): New.
-	(get_raw_reg_func_addr): Declare.
-	(current_insn_ptr, emit_error): Declare.
-	* tracepoint.c (get_raw_reg, get_trace_state_variable_value)
-	(set_trace_state_variable_value): New defines.
-	(struct ipa_sym_addresses): New fields addr_get_raw_reg,
-	addr_get_trace_state_variable_value and
-	addr_set_trace_state_variable_value.
-	(symbol_list): New fields for get_raw_reg,
-	get_trace_state_variable_value and set_trace_state_variable_value.
-	(condfn): New typedef.
-	(struct tracepoint): New field `compiled_cond'.
-	(do_action_at_tracepoint): Clear compiled_cond.
-	(get_trace_state_variable_value, set_trace_state_variable_value):
-	Export in the IPA.
-	(condition_true_at_tracepoint): If there's a compiled condition,
-	run that.
-	(current_insn_ptr, emit_error): New globals.
-	(struct bytecode_address): New.
-	(get_raw_reg_func_addr): New.
-	(emit_prologue, emit_epilogue, emit_add, emit_sub, emit_mul)
-	(emit_lsh, emit_rsh_signed, emit_rsh_unsigned, emit_ext)
-	(emit_log_not, emit_bit_and, emit_bit_or, emit_bit_xor)
-	(emit_bit_not, emit_equal, emit_less_signed, emit_less_unsigned)
-	(emit_ref, emit_if_goto, emit_goto, write_goto_address, emit_const)
-	(emit_reg, emit_pop, emit_stack_flush, emit_zero_ext, emit_swap)
-	(emit_stack_adjust, emit_int_call_1, emit_void_call_2): New.
-	(compile_tracepoint_condition, compile_bytecodes): New.
-	* target.h (emit_ops): Forward declare.
-	(struct target_ops): New field emit_ops.
-	(target_emit_ops): New.
-	* linux-amd64-ipa.c (gdb_agent_get_raw_reg): New.
-	* linux-i386-ipa.c (gdb_agent_get_raw_reg): New.
-	* linux-low.c (linux_emit_ops): New.
-	(linux_target_ops): Install it.
-	* linux-low.h (struct linux_target_ops): New field emit_ops.
-
-2010-06-14  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* linux-ppc-low.c (ppc_arch_setup): Use private regcache to test MSR.
-	* linux-s390-low.c (ppc_arch_setup): Use private regcache to test PSW.
-
-2010-06-01  Pedro Alves  <pedro@codesourcery.com>
-	    Stan Shebs  <stan@codesourcery.com>
-
-	* Makefile.in (IPA_DEPFILES, extra_libraries): New.
-	(all): Depend on $(extra_libraries).
-	(install-only): Install the IPA.
-	(IPA_OBJS, IPA_LIB): New.
-	(clean): Remove the IPA lib.
-	(IPAGENT_CFLAGS): New.
-	(tracepoint-ipa.o, utils-ipa.o, remote-utils-ipa.o)
-	(regcache-ipa.o, i386-linux-ipa.o, linux-i386-ipa.o)
-	(linux-amd64-ipa.o, amd64-linux-ipa.o): New rules.
-	* linux-amd64-ipa.c, linux-i386-ipa.c: New files.
-	* configure.ac: Check for atomic builtins support in the compiler.
-	(IPA_DEPFILES, extra_libraries): Define.
-	* configure.srv (ipa_obj): Add description.
-	(ipa_i386_linux_regobj, ipa_amd64_linux_regobj): Define.
-	(i[34567]86-*-linux*): Set ipa_obj.
-	(x86_64-*-linux*): Set ipa_obj.
-	* linux-low.c (stabilizing_threads): New.
-	(supports_fast_tracepoints): New.
-	(linux_detach): Stabilize threads before detaching.
-	(handle_tracepoints): Handle internal tracing breakpoints.  Assert
-	the lwp is either not stabilizing, or is moving out of a jump pad.
-	(linux_fast_tracepoint_collecting): New.
-	(maybe_move_out_of_jump_pad): New.
-	(enqueue_one_deferred_signal): New.
-	(dequeue_one_deferred_signal): New.
-	(linux_wait_for_event_1): If moving out of a jump pad, defer
-	pending signals to later.
-	(linux_stabilize_threads): New.
-	(linux_wait_1): Check if threads need moving out of jump pads, and
-	do it if so.
-	(stuck_in_jump_pad_callback): New.
-	(move_out_of_jump_pad_callback): New.
-	(lwp_running): New.
-	(linux_resume_one_lwp): Handle moving out of jump pads.
-	(linux_set_resume_request): Dequeue deferred signals.
-	(need_step_over_p): Also step over fast tracepoint jumps.
-	(start_step_over): Also uninsert fast tracepoint jumps.
-	(finish_step_over): Also reinsert fast tracepoint jumps.
-	(linux_install_fast_tracepoint_jump): New.
-	(linux_target_ops): Install linux_stabilize_threads and
-	linux_install_fast_tracepoint_jump_pad.
-	* linux-low.h (linux_target_ops) <get_thread_area,
-	install_fast_tracepoint_jump_pad>: New fields.
-	(struct lwp_info) <collecting_fast_tracepoint,
-	pending_signals_to_report, exit_jump_pad_bkpt>: New fields.
-	(linux_get_thread_area): Declare.
-	* linux-x86-low.c (jump_insn): New.
-	(x86_get_thread_area): New.
-	(append_insns): New.
-	(push_opcode): New.
-	(amd64_install_fast_tracepoint_jump_pad): New.
-	(i386_install_fast_tracepoint_jump_pad): New.
-	(x86_install_fast_tracepoint_jump_pad): New.
-	(the_low_target): Install x86_get_thread_area and
-	x86_install_fast_tracepoint_jump_pad.
-	* mem-break.c (set_raw_breakpoint_at): Use read_inferior_memory.
-	(struct fast_tracepoint_jump): New.
-	(fast_tracepoint_jump_insn): New.
-	(fast_tracepoint_jump_shadow): New.
-	(find_fast_tracepoint_jump_at): New.
-	(fast_tracepoint_jump_here): New.
-	(delete_fast_tracepoint_jump): New.
-	(set_fast_tracepoint_jump): New.
-	(uninsert_fast_tracepoint_jumps_at): New.
-	(reinsert_fast_tracepoint_jumps_at): New.
-	(set_breakpoint_at): Use write_inferior_memory.
-	(uninsert_raw_breakpoint): Use write_inferior_memory.
-	(check_mem_read): Mask out fast tracepoint jumps.
-	(check_mem_write): Mask out fast tracepoint jumps.
-	* mem-break.h (struct fast_tracepoint_jump): Forward declare.
-	(set_fast_tracepoint_jump): Declare.
-	(delete_fast_tracepoint_jump)
-	(fast_tracepoint_jump_here, uninsert_fast_tracepoint_jumps_at)
-	(reinsert_fast_tracepoint_jumps_at): Declare.
-	* regcache.c: Don't compile many functions when building the
-	in-process agent library.
-	(init_register_cache) [IN_PROCESS_AGENT]: Don't allow allocating
-	the register buffer in the heap.
-	(free_register_cache): If the register buffer isn't owned by the
-	regcache, don't free it.
-	(set_register_cache) [IN_PROCESS_AGENT]: Don't re-alocate
-	pre-existing register caches.
-	* remote-utils.c (convert_int_to_ascii): Constify `from' parameter
-	type.
-	(convert_ascii_to_int): : Constify `from' parameter type.
-	(decode_M_packet, decode_X_packet): Replace the `to' parameter by
-	a `to_p' pointer to pointer parameter.  If TO_P is NULL, malloc
-	the needed buffer in-place.
-	(relocate_instruction): New.
-	* server.c (handle_query) <qSymbols>: If the target supports
-	tracepoints, give it a chance of looking up symbols.  Report
-	support for fast tracepoints.
-	(handle_status): Stabilize threads.
-	(process_serial_event): Adjust.
-	* server.h (struct fast_tracepoint_jump): Forward declare.
-	(struct process_info) <fast_tracepoint_jumps>: New field.
-	(convert_ascii_to_int, convert_int_to_ascii): Adjust.
-	(decode_X_packet, decode_M_packet): Adjust.
-	(relocate_instruction): Declare.
-	(in_process_agent_loaded): Declare.
-	(tracepoint_look_up_symbols): Declare.
-	(struct fast_tpoint_collect_status): Declare.
-	(fast_tracepoint_collecting): Declare.
-	(force_unlock_trace_buffer): Declare.
-	(handle_tracepoint_bkpts): Declare.
-	(initialize_low_tracepoint)
-	(supply_fast_tracepoint_registers) [IN_PROCESS_AGENT]: Declare.
-	* target.h (struct target_ops) <stabilize_threads,
-	install_fast_tracepoint_jump_pad>: New fields.
-	(stabilize_threads, install_fast_tracepoint_jump_pad): New.
-	* tracepoint.c [HAVE_MALLOC_H]: Include malloc.h.
-	[HAVE_STDINT_H]: Include stdint.h.
-	(trace_debug_1): Rename to ...
-	(trace_vdebug): ... this.
-	(trace_debug): Rename to ...
-	(trace_debug_1): ... this.  Add `level' parameter.
-	(trace_debug): New.
-	(ATTR_USED, ATTR_NOINLINE): New.
-	(IP_AGENT_EXPORT): New.
-	(gdb_tp_heap_buffer, gdb_jump_pad_buffer, gdb_jump_pad_buffer_end)
-	(collecting, gdb_collect, stop_tracing, flush_trace_buffer)
-	(about_to_request_buffer_space, trace_buffer_is_full)
-	(stopping_tracepoint, expr_eval_result, error_tracepoint)
-	(tracepoints, tracing, trace_buffer_ctrl, trace_buffer_ctrl_curr)
-	(trace_buffer_lo, trace_buffer_hi, traceframe_read_count)
-	(traceframe_write_count, traceframes_created)
-	(trace_state_variables)
-	New renaming defines.
-	(struct ipa_sym_addresses): New.
-	(STRINGIZE_1, STRINGIZE, IPA_SYM): New.
-	(symbol_list): New.
-	(ipa_sym_addrs): New.
-	(all_tracepoint_symbols_looked_up): New.
-	(in_process_agent_loaded): New.
-	(write_e_ipa_not_loaded): New.
-	(maybe_write_ipa_not_loaded): New.
-	(tracepoint_look_up_symbols): New.
-	(debug_threads) [IN_PROCESS_AGENT]: New.
-	(read_inferior_memory) [IN_PROCESS_AGENT]: New.
-	(UNKNOWN_SIDE_EFFECTS): New.
-	(stop_tracing): New.
-	(flush_trace_buffer): New.
-	(stop_tracing_bkpt): New.
-	(flush_trace_buffer_bkpt): New.
-	(read_inferior_integer): New.
-	(read_inferior_uinteger): New.
-	(read_inferior_data_pointer): New.
-	(write_inferior_data_pointer): New.
-	(write_inferior_integer): New.
-	(write_inferior_uinteger): New.
-	(struct collect_static_trace_data_action): Delete.
-	(enum tracepoint_type): New.
-	(struct tracepoint) <type>: New field `type'.
-	<actions_str, step_actions, step_actions_str>: Only include in
-	GDBserver.
-	<orig_size, obj_addr_on_target, adjusted_insn_addr>
-	<adjusted_insn_addr_end, jump_pad, jump_pad_end>: New fields.
-	(tracepoints): Use IP_AGENT_EXPORT.
-	(last_tracepoint): Don't include in the IPA.
-	(stopping_tracepoint): Use IP_AGENT_EXPORT.
-	(trace_buffer_is_full): Use IP_AGENT_EXPORT.
-	(alloced_trace_state_variables): New.
-	(trace_state_variables): Use IP_AGENT_EXPORT.
-	(traceframe_t): Delete unused variable.
-	(circular_trace_buffer): Don't include in the IPA.
-	(trace_buffer_start): Delete.
-	(struct trace_buffer_control): New.
-	(trace_buffer_free): Delete.
-	(struct ipa_trace_buffer_control): New.
-	(GDBSERVER_FLUSH_COUNT_MASK, GDBSERVER_FLUSH_COUNT_MASK_PREV)
-	(GDBSERVER_FLUSH_COUNT_MASK_CURR, GDBSERVER_UPDATED_FLUSH_COUNT_BIT):
-	New.
-	(trace_buffer_ctrl): New.
-	(TRACE_BUFFER_CTRL_CURR): New.
-	(trace_buffer_start, trace_buffer_free, trace_buffer_end_free):
-	Reimplement as macros.
-	(trace_buffer_wrap): Delete.
-	(traceframe_write_count, traceframe_read_count)
-	(traceframes_created, tracing): Use IP_AGENT_EXPORT.
-	(struct tracepoint_hit_ctx) <type>: New field.
-	(struct fast_tracepoint_ctx): New.
-	(memory_barrier): New.
-	(cmpxchg): New.
-	(record_tracepoint_error): Update atomically in the IPA.
-	(clear_inferior_trace_buffer): New.
-	(about_to_request_buffer_space): New.
-	(trace_buffer_alloc): Handle GDBserver and inferior simulatenous
-	updating the same buffer.
-	(add_tracepoint): Default the tracepoint's type to trap
-	tracepoint, and orig_size to -1.
-	(get_trace_state_variable) [IN_PROCESS_AGENT]: Handle allocated
-	internal variables.
-	(create_trace_state_variable): New parameter `gdb'.  Handle it.
-	(clear_installed_tracepoints): Clear fast tracepoint jumps.
-	(cmd_qtdp): Handle fast tracepoints.
-	(cmd_qtdv): Adjust.
-	(max_jump_pad_size): New.
-	(gdb_jump_pad_head): New.
-	(get_jump_space_head): New.
-	(claim_jump_space): New.
-	(sort_tracepoints): New.
-	(MAX_JUMP_SIZE): New.
-	(cmd_qtstart): Handle fast tracepoints.  Sync tracepoints with the
-	IPA.
-	(stop_tracing) [IN_PROCESS_AGENT]: Don't include the tdisconnected
-	support.  Upload fast traceframes, and delete internal IPA
-	breakpoints.
-	(stop_tracing_handler): New.
-	(flush_trace_buffer_handler): New.
-	(cmd_qtstop): Upload fast tracepoints.
-	(response_tracepoint): Handle fast tracepoints.
-	(tracepoint_finished_step): Upload fast traceframes.  Set the
-	tracepoint hit context's tracepoint type.
-	(handle_tracepoint_bkpts): New.
-	(tracepoint_was_hit): Set the tracepoint hit context's tracepoint
-	type.  Add comment about fast tracepoints.
-	(collect_data_at_tracepoint) [IN_PROCESS_AGENT]: Don't access the
-	non-existing action_str field.
-	(get_context_regcache): Handle fast tracepoints.
-	(do_action_at_tracepoint) [!IN_PROCESS_AGENT]: Don't write the PC
-	to the regcache.
-	(fast_tracepoint_from_jump_pad_address): New.
-	(fast_tracepoint_from_ipa_tpoint_address): New.
-	(collecting_t): New.
-	(force_unlock_trace_buffer): New.
-	(fast_tracepoint_collecting): New.
-	(collecting): New.
-	(gdb_collect): New.
-	(write_inferior_data_ptr): New.
-	(target_tp_heap): New.
-	(target_malloc): New.
-	(download_agent_expr): New.
-	(UALIGN): New.
-	(download_tracepoints): New.
-	(download_trace_state_variables): New.
-	(upload_fast_traceframes): New.
-	(IPA_FIRST_TRACEFRAME): New.
-	(IPA_NEXT_TRACEFRAME_1): New.
-	(IPA_NEXT_TRACEFRAME): New.
-	[IN_PROCESS_AGENT]: Include sys/mman.h and fcntl.h.
-	[IN_PROCESS_AGENT] (gdb_tp_heap_buffer, gdb_jump_pad_buffer)
-	(gdb_jump_pad_buffer_end): New.
-	[IN_PROCESS_AGENT] (initialize_tracepoint_ftlib): New.
-	(initialize_tracepoint): Adjust.
-	[IN_PROCESS_AGENT]: Allocate the IPA heap, and jump pad scratch
-	buffer.  Initialize the low module.
-	* utils.c (PREFIX, TOOLNAME): New.
-	(malloc_failure): Use PREFIX.
-	(error): In the IPA, an error causes an exit.
-	(fatal, warning): Use PREFIX.
-	(internal_error): Use TOOLNAME.
-	(NUMCELLS): Increase to 10.
-	* configure, config.in: Regenerate.
-
-2010-06-01  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (handle_query) <qSupported>: Do two passes over the
-	qSupported string to avoid nesting strtok.
-
-2010-05-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* Makefile.in (SFILES): Add $(srcdir)/proc-service.list.
-	(CDEPS): New.
-	* configure.ac (RDYNAMIC): New AC_MSG_CHECKING wrapping.  Test also
-	-Wl,--dynamic-list.
-	* configure: Regenerate.
-	* proc-service.list: New.
-
-2010-05-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* linux-low.c (linux_core_of_thread): Fix crash on invalid CONTENT.
-	New comment.
-
-2010-05-26  Ozkan Sezer  <sezeroz@gmail.com>
-
-	* gdbreplay.c (remote_open): Check error return from socket() call by
-	its equality to -1 not by it being negative.
-	* remote-utils.c (remote_open): Likewise.
-
-2010-05-23  Pedro Alves  <pedro@codesourcery.com>
-
-	* config.h: Regenerate.
-
-2010-05-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
-
-	* linux-m68k-low.c (ps_get_thread_area): Don't define if kernel
-	doesn't provide PTRACE_GET_THREAD_AREA.
-
-2010-05-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
-
-	* linux-m68k-low.c: Include <asm/ptrace.h>
-	(ps_get_thread_area): Implement.
-
-2010-05-03  Doug Evans  <dje@google.com>
-
-	* event-loop.c (struct callback_event): New struct.
-	(callback_list): New global.
-	(append_callback_event, delete_callback_event): New functions.
-	(process_callback): New function.
-	(start_event_loop): Call it.
-	* remote-utils.c (NOT_SCHEDULED): Define.
-	(readchar_buf, readchar_bufcnt, readchar_bufp): New static globals,
-	moved out of readchar.
-	(readchar): Rewrite.  Call reschedule before returning.
-	(reset_readchar): New function.
-	(remote_close): Call it.
-	(process_remaining, reschedule): New functions.
-	* server.h (callback_handler_func): New typedef.
-	(append_callback_event, delete_callback_event): Declare.
-
-2010-05-03  Pedro Alves  <pedro@codesourcery.com>
-
-	* proc-service.c (ps_pglobal_lookup): Use
-	thread_db_look_up_one_symbol.
-	* remote-utils.c (look_up_one_symbol): Add new `may_ask_gdb'
-	parameter.  Use it instead of all_symbols_looked_up.
-	* server.h (struct process_info) <all_symbols_looked_up>: Delete
-	field.
-	(all_symbols_looked_up): Don't declare.
-	(look_up_one_symbol): Add new `may_ask_gdb' parameter.
-	* thread-db.c (struct thread_db) <all_symbols_looked_up>: New
-	field.
-	(thread_db_look_up_symbols): Adjust call to look_up_one_symbol.
-	Set all_symbols_looked_up here.
-	(thread_db_look_up_one_symbol): New.
-	(thread_db_get_tls_address): Adjust.
-	(thread_db_load_search, try_thread_db_load_1): Always allocate the
-	thread_db object on the heap, and tentatively set it in the
-	process structure.
-	(thread_db_init): Don't set all_symbols_looked_up here.
-	* linux-low.h (thread_db_look_up_one_symbol): Declare.
-
-2010-05-03  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_kill, linux_detach): Adjust.
-	(status_pending_p_callback): Remove redundant statement.  Check
-	for !TARGET_WAITIKIND_IGNORE, instead of
-	TARGET_WAITKIND_STOPPED.
-	(handle_tracepoints): Make sure LWP is locked.  Adjust.
-	(linux_wait_for_event_1): Adjust.
-	(linux_cancel_breakpoints): New.
-	(unsuspend_one_lwp): New.
-	(unsuspend_all_lwps): New.
-	(linux_wait_1): If finishing a step-over, unsuspend all lwps.
-	(send_sigstop_callback): Change return type to int, add new
-	`except' parameter and handle it.
-	(suspend_and_send_sigstop_callback): New.
-	(stop_all_lwps): Add new `suspend' and `expect' parameters, and
-	pass them down.  If SUSPEND, also increment the lwp's suspend
-	count.
-	(linux_resume_one_lwp): Add notice about resuming a suspended LWP.
-	(need_step_over_p): Don't consider suspended LWPs.
-	(start_step_over): Adjust.
-	(proceed_one_lwp): Change return type to int, add new `except'
-	parameter and handle it.
-	(unsuspend_and_proceed_one_lwp): New.
-	(proceed_all_lwps): Use find_inferior instead of
-	for_each_inferior.
-	(unstop_all_lwps): Add `unsuspend' parameter.  If UNSUSPEND, them
-	also decrement the suspend count of LWPs.  Pass `except' down,
-	instead of hacking its suspend count.
-	(linux_pause_all): Add `freeze' parameter.  Adjust.
-	(linux_unpause_all): New.
-	(linux_target_ops): Install linux_unpause_all.
-	* server.c (handle_status): Adjust.
-	* target.h (struct target_ops): New fields `unpause_all' and
-	`cancel_breakpoints'.  Add new parameter to `pause_all'.
-	(pause_all): Add new `freeze' parameter.
-	(unpause_all): New.
-	(cancel_breakpoints): New.
-	* tracepoint.c (clear_installed_tracepoints): Pause threads, and
-	cancel breakpoints.
-	(cmd_qtstart): Pause threads.
-	(stop_tracing): Pause threads, and cancel breakpoints.
-	* win32-low.c (win32_target_ops): Adjust.
-
-2010-05-03  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_wait_for_event_1): Move passing the signal to
-	the inferior right away from here...
-	(linux_wait_1): ... to here, and adjust to check the thread's
-	last_resume_kind instead of the lwp's step or stop_expected flags.
-
-2010-05-02  Pedro Alves  <pedro@codesourcery.com>
-
-	* README: Use consistent `GDB' and `GDBserver' spellings.
-
-2010-05-02  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_kill_one_lwp): Assume the lwp is stopped.
-	(linux_kill): Stop all lwps here.  Don't delete the main lwp here.
-	(linux_detach_one_lwp): Assume the lwp is stopped.
-	(any_thread_of): Delete.
-	(linux_detach): Stop all lwps here.  Don't blindly delete all
-	breakpoints.
-	(delete_lwp_callback): New.
-	(linux_mourn): Delete all lwps of the process that is gone.
-	(linux_wait_1): Don't delete the last lwp of the process here.
-	* mem-break.h (mark_breakpoints_out): Declare.
-	* mem-break.c (mark_breakpoints_out): New.
-	(free_all_breakpoints): Use it.
-	* server.c (handle_target_event): If the process is gone, mark
-	breakpoints out.
-	* thread-db.c (struct thread_db) <create_bp>: New field.
-	(thread_db_enable_reporting): Fix prototype.  Store a thread event
-	breakpoint reference in the thread_db struct.
-	(thread_db_load_search): Clear the thread_db object.
-	(try_thread_db_load_1): Ditto.
-	(switch_to_process): New.
-	(disable_thread_event_reporting): Use it.
-	(remove_thread_event_breakpoints): New.
-	(thread_db_detach, thread_db_mourn): Use it.
-
-2010-05-01  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_enable_event_reporting): New.
-	(linux_wait_for_event_1, handle_extended_wait): Use it.
-
-2010-04-30  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_kill_one_lwp, linux_kill)
-	(linux_detach_one_lwp): Adjust to send_sigstop interface change.
-	(send_sigstop): Take an lwp_info as parameter instead.  Queue a
-	SIGSTOP even if the LWP is stopped.
-	(send_sigstop_callback): New.
-	(stop_all_lwps): Use send_sigstop_callback instead.
-	(linux_resume_one_thread): Adjust.
-	(proceed_one_lwp): Still proceed an LWP that the client has
-	requested to stop, if we haven't reported it as stopped yet.  Make
-	sure that LWPs the client want stopped, have a pending SIGSTOP.
-
-2010-04-26  Doug Evans  <dje@google.com>
-
-	* server.c (handle_general_set): Make static.
-
-	* remote-utils.c (putpkt_binary_1): Call readchar instead of read.
-	Print received char after testing for error/eof instead of before.
-	(input_interrupt): Tweak comment.
-
-2010-04-23  Doug Evans  <dje@google.com>
-
-	* server.c (start_inferior): Print inferior argv if --debug.
-
-2010-04-21  Aleksandar Ristovski  <aristovski@qnx.com>
-
-	* Makefile.in (nto_low_h nto-low.o nto-x86-low.o): New dependency lists.
-	* nto-x86-low.c: Include server.h
-
-2010-04-20  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* win32-i386-low.c: Use __x86_64__ macro instead of __x86_64 to
-	be consistent with other sources of this directory.
-	(init_registers_amd64): Correct name of source file of this function
-	in the comment.
-
-2010-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* configure.srv (x86_64-*-mingw*): New configuration for Windows
-	64-bit executables.
-
-2010-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* win32-i386-low.c: Add 64-bit support.
-	(CONTEXT_EXTENDED_REGISTERS): Set macro to zero if not exisiting.
-	(init_registers_amd64): Declare.
-	(mappings): Add 64-bit version of array.
-	(init_windows_x86): New function.
-	(the_low_target): Change init_arch field to init_windows_x86.
-
-2010-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* win32-low.c: Adapt to support also 64-bit architecture.
-	(child_xfer_memory): Use uintptr_t type for local variable `addr'.
-	(get_image_name): Use SIZE_T type for local variable `done'.
-	(psapi_get_dll_name): Use LPVOID type for parameter `BaseAddress'.
-	(toolhelp_get_dll_name): Idem.
-	(handle_load_dll): Use CORE_ADDR type for local variable `load_addr'.
-	Use uintptr_t typecast to avoid warning.
-	(handle_unload_dll): Use uintptr_t typecast to avoid warning.
-	(handle_exception): Use phex_nz to avoid warning.
-	(win32_wait): Remove unused local variable `process'.
-
-2010-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* configure.srv (srv_amd64_regobj): Replace `x86-64-avx.o' by
-	`amd64-avx.o'.
-
-2010-04-17  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* configure.ac: Use `ws2_32' library for srv_mingw.
-	* configure: Regenerate.
-	* gdbreplay.c: Include winsock2.h instead of winsock.h.
-	* remote-utils.c: Likewise.
-
-2010-04-17  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* linux-x86-low.c (xmltarget_amd64_linux_no_xml): Define only
-	if __x86_64__ is defined.
-
-2010-04-16  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* configure: Regenerate.
-
-2010-04-16  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* server.c (handle_query): Handle 'qGetTIBAddr' query.
-	* target.h (target_ops): New get_tib_address field.
-	* win32-low.h (win32_thread_info): Add thread_local_base field.
-	* win32-low.c (child_add_thread): Add tlb argument.
-	Set thread_local_base field to TLB.
-	(get_child_debug_event): Adapt to child_add_thread change.
-	(win32_get_tib_address): New function.
-	(win32_target_ops): Set get_tib_address field to
-	win32_get_tib_address.
-	* linux-low.c (linux_target_ops): Set get_tib_address field to NULL.
-
-2010-04-12  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_mourn): Also remove the process.
-	* server.c (handle_target_event): Don't remove the process here.
-	* nto-low.c (nto_mourn): New.
-	(nto_target_ops): Install it.
-	* spu-low.c (spu_mourn): New.
-	(spu_target_ops): Install it.
-	* win32-low.c (win32_mourn): New.
-	(win32_target_ops): Install it.
-
-2010-04-12  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.h (buffer_xml_printf): Remove redundant `;'.
-
-2010-04-12  Pedro Alves  <pedro@codesourcery.com>
-
-	* regcache.c (set_register_cache): Invalidate regcaches before
-	changing the register cache layout.
-	(regcache_invalidate_one): Allow a NULL regcache.
-	* linux-x86-low.c (x86_linux_update_xmltarget): Invalidate
-	regcaches before changing the register cache layout or the target
-	regsets.
-
-2010-04-12  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* linux-x86-low.c (x86_linux_update_xmltarget): Avoid unused
-	variable warning on Linux/x86-64.
-
-2010-04-11  Pedro Alves  <pedro@codesourcery.com>
-
-	GDBserver disconnected tracing support.
-
-	* linux-low.c (linux_remove_process): Delete.
-	(add_lwp): Don't set last_resume_kind here.
-	(linux_kill): Use `mourn'.
-	(linux_detach): Use `thread_db_detach', and `mourn'.
-	(linux_mourn): New.
-	(linux_attach_lwp_1): Adjust comment.
-	(linux_attach): last_resume_kind moved the thread_info; adjust.
-	(status_pending_p_callback): Adjust.
-	(linux_wait_for_event_1): Adjust.
-	(count_events_callback, select_singlestep_lwp_callback)
-	(select_event_lwp_callback, cancel_breakpoints_callback)
-	(db_wants_lwp_stopped, linux_wait_1, need_step_over_p)
-	(proceed_one_lwp): Adjust.
-	(linux_async): Add debug output.
-	(linux_thread_stopped): New.
-	(linux_pause_all): New.
-	(linux_target_ops): Install linux_mourn, linux_thread_stopped and
-	linux_pause_all.
-	* linux-low.h (struct lwp_info): Delete last_resume_kind field.
-	(thread_db_free): Delete declaration.
-	(thread_db_detach, thread_db_mourn): Declare.
-	* thread-db.c (thread_db_init): Use thread_db_mourn.
-	(thread_db_free): Delete, split in two.
-	(disable_thread_event_reporting): New.
-	(thread_db_detach): New.
-	(thread_db_mourn): New.
-
-	* server.h (struct thread_info) <last_resume_kind>: New field.
-	<attached>: Add comment.
-	<gdb_detached>: New field.
-	(handler_func): Change return type to int.
-	(handle_serial_event, handle_target_event): Ditto.
-	(gdb_connected): Declare.
-	(tracing): Delete.
-	(disconnected_tracing): Declare.
-	(stop_tracing): Declare.
-
-	* server.c (handle_query) <qSupported>: Report support for
-	disconnected tracing.
-	(queue_stop_reply_callback): Account for running threads.
-	(gdb_wants_thread_stopped): New.
-	(gdb_wants_all_threads_stopped): New.
-	(gdb_reattached_process): New.
-	(handle_status): Clear the `gdb_detached' flag of all processes.
-	In all-stop, stop all threads.
-	(main): Be sure to leave tfind mode.  Handle disconnected tracing.
-	(process_serial_event): If the remote connection breaks, or if an
-	exit was forced with "monitor exit", force an event loop exit.
-	Handle disconnected tracing on detach.
-	(handle_serial_event): Adjust.
-	(handle_target_event): If GDB isn't connected, forward events back
-	to the inferior, unless the last process exited, in which case,
-	exit gdbserver.  Adjust interface.
-
-	* remote-utils.c (remote_open): Don't block in accept.  Instead
-	register an event loop source on the listen socket file
-	descriptor.  Refactor bits into ...
-	(listen_desc): ... this new global.
-	(gdb_connected): ... this new function.
-	(enable_async_notification): ... this new function.
-	(handle_accept_event): ... this new function.
-	(remote_close): Clear remote_desc.
-
-	* inferiors.c (add_thread): Set the new thread's last_resume_kind.
-
-	* target.h (struct target_ops) <mourn, thread_stopped, pause_all>:
-	New fields.
-	(mourn_inferior): Define.
-	(target_process_qsupported): Avoid the dangling else problem.
-	(thread_stopped): Define.
-	(pause_all): Define.
-	(target_waitstatus_to_string): Declare.
-	* target.c (target_waitstatus_to_string): New.
-
-	* tracepoint.c (tracing): Make extern.
-	(disconnected_tracing): New.
-	(stop_tracing): Make extern.  Handle tracing stops due to GDB
-	disconnecting.
-	(cmd_qtdisconnected): New.
-	(cmd_qtstatus): Report disconnected tracing status in trace reply.
-	(handle_tracepoint_general_set): Handle QTDisconnected.
-
-	* event-loop.c (event_handler_func): Change return type to int.
-	(process_event): Bail out if the event handler wants the event
-	loop to stop.
-	(handle_file_event): Ditto.
-	(start_event_loop): Bail out if the event handler wants the event
-	loop to stop.
-
-	* nto-low.c (nto_target_ops): Adjust.
-	* spu-low.c (spu_wait): Don't remove the process here.
-	(spu_target_ops): Adjust.
-	* win32-low.c (win32_wait): Don't remove the process here.
-	(win32_target_ops): Adjust.
-
-2010-04-11  Pedro Alves  <pedro@codesourcery.com>
-
-	* regcache.c (realloc_register_cache): Invalidate inferior's
-	regcache before recreating it.
-
-2010-04-09  Pedro Alves  <pedro@codesourcery.com>
-
-	* tracepoint.c (cmd_qtstatus): Report trace buffer circularity.
-
-2010-04-09  Stan Shebs  <stan@codesourcery.com>
-	    Pedro Alves  <pedro@codesourcery.com>
-
-	* server.h (LONGEST): New.
-	(struct thread_info) <while_stepping>: New field.
-	(unpack_varlen_hex, xrealloc, pulongest, plongest, phex_nz):
-	Declare.
-	(initialize_tracepoint, handle_tracepoint_general_set)
-	(handle_tracepoint_query, tracepoint_finished_step)
-	(tracepoint_was_hit, release_while_stepping_state_list):
-	(current_traceframe): Declare.
-	* server.c (handle_general_set): Handle tracepoint packets.
-	(read_memory): New.
-	(write_memory): New.
-	(handle_search_memory_1): Use read_memory.
-	(handle_query): Report support for conditional tracepoints, trace
-	state variables, and tracepoint sources.  Handle tracepoint
-	queries.
-	(main): Initialize the tracepoints module.
-	(process_serial_event): Handle traceframe reads/writes.
-
-	* linux-low.c (handle_tracepoints): New.
-	(linux_wait_1): Call it.
-	(linux_resume_one_lwp): Handle while-stepping.
-	(linux_supports_tracepoints, linux_read_pc, linux_write_pc): New.
-	(linux_target_ops): Install them.
-	* linux-low.h (struct linux_target_ops) <supports_tracepoints>:
-	New field.
-	* linux-x86-low.c (x86_supports_tracepoints): New.
-	(the_low_target). Install it.
-
-	* mem-break.h (delete_breakpoint): Declare.
-	* mem-break.c (delete_breakpoint): Make external.
-
-	* target.h (struct target_ops): Add `supports_tracepoints',
-	`read_pc', and `write_pc' fields.
-	(target_supports_tracepoints): Define.
-	* utils.c (xrealloc, decimal2str, pulongest, plongest, thirty_two)
-	(phex_nz): New.
-
-	* regcache.h (struct regcache) <registers_owned>: New field.
-	(init_register_cache, regcache_cpy): Declare.
-	(regcache_read_pc, regcache_write_pc): Declare.
-	(register_cache_size): Declare.
-	(supply_regblock): Declare.
-	* regcache.c (init_register_cache): New.
-	(new_register_cache): Use it.
-	(regcache_cpy): New.
-	(register_cache_size): New.
-	(supply_regblock): New.
-	(regcache_read_pc, regcache_write_pc): New.
-
-	* tracepoint.c: New.
-
-	* Makefile.in (OBS): Add tracepoint.o.
-	(tracepoint.o): New rule.
-
-2010-04-08  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* Makefile.in (clean): Also remove i386-mmx.c i386-mmx-linux.c.
-	(i386-mmx.o): New.
-	(i386-mmx.c): Likewise.
-	(i386-mmx-linux.o): Likewise.
-	(i386-mmx-linux.c): Likewise.
-
-	* configure.srv (srv_i386_regobj): Add i386-mmx.o.
-	(srv_i386_linux_regobj): Add i386-mmx-linux.o.
-	(srv_i386_xmlfiles): Add i386/i386-mmx.xml.
-	(srv_i386_linux_xmlfiles): Add i386/i386-mmx-linux.xml.
-
-	* linux-x86-low.c (init_registers_i386_mmx_linux): New.
-	(x86_linux_update_xmltarget): Call init_registers_i386_mmx_linux
-	and return if ptrace PTRACE_GETFPXREGS failed in 32bit.
-
-2010-04-07  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* Makefile.in (clean): Updated.
-	(i386-avx.o): New.
-	(i386-avx.c): Likewise.
-	(i386-avx-linux.o): Likewise.
-	(i386-avx-linux.c): Likewise.
-	(amd64-avx.o): Likewise.
-	(amd64-avx.c): Likewise.
-	(amd64-avx-linux.o): Likewise.
-	(amd64-avx-linux.c): Likewise.
-
-	* configure.srv (srv_i386_regobj): Add i386-avx.o.
-	(srv_i386_linux_regobj): Add i386-avx-linux.o.
-	(srv_amd64_regobj): Add amd64-avx.o.
-	(srv_amd64_linux_regobj): Add amd64-avx-linux.o.
-	(srv_i386_32bit_xmlfiles): Add i386/32bit-avx.xml.
-	(srv_i386_64bit_xmlfiles): Add i386/64bit-avx.xml.
-	(srv_i386_xmlfiles): Add i386/i386-avx.xml.
-	(srv_amd64_xmlfiles): Add i386/amd64-avx.xml.
-	(srv_i386_linux_xmlfiles): Add i386/i386-avx-linux.xml.
-	(srv_amd64_linux_xmlfiles): Add i386/amd64-avx-linux.xml.
-
-	* i387-fp.c: Include "i386-xstate.h".
-	(i387_xsave): New.
-	(i387_cache_to_xsave): Likewise.
-	(i387_xsave_to_cache): Likewise.
-	(x86_xcr0): Likewise.
-
-	* i387-fp.h (i387_cache_to_xsave): Likewise.
-	(i387_xsave_to_cache): Likewise.
-	(x86_xcr0): Likewise.
-
-	* linux-arm-low.c (target_regsets): Initialize nt_type to 0.
-	* linux-crisv32-low.c (target_regsets): Likewise.
-	* linux-m68k-low.c (target_regsets): Likewise.
-	* linux-mips-low.c (target_regsets): Likewise.
-	* linux-ppc-low.c (target_regsets): Likewise.
-	* linux-s390-low.c (target_regsets): Likewise.
-	* linux-sh-low.c (target_regsets): Likewise.
-	* linux-sparc-low.c (target_regsets): Likewise.
-	* linux-xtensa-low.c (target_regsets): Likewise.
-
-	* linux-low.c: Include <sys/uio.h>.
-	(regsets_fetch_inferior_registers): Support nt_type.
-	(regsets_store_inferior_registers): Likewise.
-	(linux_process_qsupported): New.
-	(linux_target_ops): Add linux_process_qsupported.
-
-	* linux-low.h (regset_info): Add nt_type.
-	(linux_target_ops): Add process_qsupported.
-
-	* linux-x86-low.c: Include "i386-xstate.h", "elf/common.h"
-	and <sys/uio.h>.
-	(init_registers_i386_avx_linux): New.
-	(init_registers_amd64_avx_linux): Likewise.
-	(xmltarget_i386_linux_no_xml): Likewise.
-	(xmltarget_amd64_linux_no_xml): Likewise.
-	(PTRACE_GETREGSET): Likewise.
-	(PTRACE_SETREGSET): Likewise.
-	(x86_fill_xstateregset): Likewise.
-	(x86_store_xstateregset): Likewise.
-	(use_xml): Likewise.
-	(x86_linux_update_xmltarget): Likewise.
-	(x86_linux_process_qsupported): Likewise.
-	(target_regsets): Add NT_X86_XSTATE entry and Initialize nt_type.
-	(x86_arch_setup): Don't call init_registers_amd64_linux nor
-	init_registers_i386_linux here.  Call
-	x86_linux_update_xmltarget.
-	(the_low_target): Add x86_linux_process_qsupported.
-
-	* server.c (handle_query): Call target_process_qsupported.
-
-	* target.h (target_ops): Add process_qsupported.
-	(target_process_qsupported): New.
-
-2010-04-03  Pedro Alves  <pedro@codesourcery.com>
-
-	* inferiors.c (add_thread): Set last_status kind to
-	TARGET_WAITKIND_IGNORE.
-	* linux-low.c (cancel_breakpoint): Remove unnecessary regcache
-	fetch.  Use ptid_of.  Avoid unnecessary get_lwp_thread calls.
-	(linux_wait_1): Move `thread' local definition to block that uses
-	it.  Don't NULL initialize `event_child'.
-	(linux_resume_one_thread): Avoid unnecessary get_lwp_thread calls.
-	Alway set the thread's last_status to TARGET_WAITKIND_IGNORE.
-	* linux-x86-low.c (x86_breakpoint_at): Read raw memory.
-
-2010-04-01  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (get_stop_pc): Don't adjust the PC if stopped with
-	an extended waitstatus, or by a watchpoint.
-	(cancel_breakpoints_callback): Don't cancel a breakpoint if the
-	thread was stepping or has been stopped by a watchpoint.
-
-2010-04-01  Pedro Alves  <pedro@codesourcery.com>
-
-	* mem-break.c (struct raw_breakpoint): New field shlib_disabled.
-	(set_gdb_breakpoint_at): If GDB is inserting a breakpoint on top
-	of another, then delete the previous, and validate all
-	breakpoints.
-	(validate_inserted_breakpoint): New.
-	(delete_disabled_breakpoints): New.
-	(validate_breakpoints): New.
-	(check_mem_read): Validate breakpoints before trusting their
-	shadow.  Delete disabled breakpoints.
-	(check_mem_write): Validate breakpoints before trusting they
-	should be inserted.  Delete disabled breakpoints.
-	* mem-break.h (validate_breakpoints):
-	* server.c (handle_query): Validate breakpoints when we see a
-	qSymbol query.
-
-2010-04-01  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_wait_1): Avoid setting need_step_over is
-	there's a GDB breakpoint at stop_pc.  Always report a trap to GDB
-	if we could tell there's a GDB breakpoint at stop_pc.
-	(need_step_over_p): Don't do a step over if we find a GDB
-	breakpoint at the resume PC.
-
-	* mem-break.c (struct raw_breakpoint): New.
-	(enum bkpt_type): New type `gdb_breakpoint'.
-	(struct breakpoint): Delete the `PC', `old_data' and `inserted'
-	fields.  New field `raw'.
-	(find_raw_breakpoint_at): New.
-	(set_raw_breakpoint_at): Handle refcounting.  Create a raw
-	breakpoint instead.
-	(set_breakpoint_at): Adjust.
-	(delete_raw_breakpoint): New.
-	(release_breakpoint): New.
-	(delete_breakpoint): Rename to...
-	(delete_breakpoint_1): ... this.  Add proc parameter.  Use
-	release_breakpoint.  Return ENOENT.
-	(delete_breakpoint): Reimplement.
-	(find_breakpoint_at): Delete.
-	(find_gdb_breakpoint_at): New.
-	(delete_breakpoint_at): Delete.
-	(set_gdb_breakpoint_at): New.
-	(delete_gdb_breakpoint_at): New.
-	(gdb_breakpoint_here): New.
-	(set_reinsert_breakpoint): Use release_breakpoint.
-	(uninsert_breakpoint): Rename to ...
-	(uninsert_raw_breakpoint): ... this.
-	(uninsert_breakpoints_at): Adjust to handle raw breakpoints.
-	(reinsert_raw_breakpoint): Change parameter type to
-	raw_breakpoint.
-	(reinsert_breakpoints_at): Adjust to handle raw breakpoints
-	instead.
-	(check_breakpoints): Adjust.  Use release_breakpoint.
-	(breakpoint_here): Rewrite using find_raw_breakpoint_at.
-	(breakpoint_inserted_here): Ditto.
-	(check_mem_read): Adjust to iterate over raw breakpoints instead.
-	Don't trust the breakpoint's shadow if it is not inserted.
-	(check_mem_write): Adjust to iterate over raw breakpoints instead.
-	(delete_all_breakpoints): Adjust.
-	(free_all_breakpoints): Mark all breakpoints as uninserted, and
-	use delete_breakpoint_1.
-
-	* mem-break.h (breakpoints_supported): Delete declaration.
-	(set_gdb_breakpoint_at): Declare.
-	(gdb_breakpoint_here): Declare.
-	(delete_breakpoint_at): Delete.
-	(delete_gdb_breakpoint_at): Declare.
-
-	* server.h (struct raw_breakpoint): Forward declare.
-	(struct process_info): New field `raw_breakpoints'.
-
-	* linux-x86-low.c (x86_insert_point, x86_remote_point): Handle Z0
-	breakpoints.
-
-2010-03-24  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (status_pending_p_callback): Fix comment.
-	(linux_wait_for_event_1): Move most of the internal breakpoint
-	handling from here...
-	(linux_wait_1): ... to here.
-	(count_events_callback): New.
-	(select_singlestep_lwp_callback): New.
-	(select_event_lwp_callback): New.
-	(cancel_breakpoints_callback): New.
-	(select_event_lwp): New.
-	(linux_wait_1): Simplify internal breakpoint handling.  Give equal
-	priority to all LWPs that have had events that should be reported
-	to the client.  Cancel breakpoints when about to reporting the
-	event to the client, not while stopping lwps.  No longer cancel
-	finished single-steps here.
-	(cancel_finished_single_step): Delete.
-	(cancel_finished_single_steps): Delete.
-
-2010-03-24  Pedro Alves  <pedro@codesourcery.com>
-
-	* mem-break.c (enum bkpt_type): New.
-	(struct breakpoint): New field `type'.
-	(set_breakpoint_at): Change return type to struct breakpoint
-	pointer.  Set type to `other_breakpoint' by default.
-	(delete_breakpoint): Rewrite, supporting more than one breakpoint
-	in the breakpoint list.
-	(delete_reinsert_breakpoints): Only delete reinsert breakpoints.
-	(reinsert_breakpoint): Rename to ...
-	(reinsert_raw_breakpoint): ... this.
-	(reinsert_breakpoints_at): Adjust.
-	* mem-break.h (struct breakpoint): Declare.
-	(set_breakpoint_at): Change return type to struct breakpoint
-	pointer.
-
-2010-03-24  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (handle_query): Assign, not compare.
-
-2010-03-24  Pedro Alves  <pedro@codesourcery.com>
-
-	Teach linux gdbserver to step-over-breakpoints.
-
-	* linux-low.c (can_hardware_single_step): New.
-	(supports_breakpoints): New.
-	(handle_extended_wait): If stopping threads, read the stop pc of
-	the new cloned LWP.
-	(get_pc): New.
-	(get_stop_pc): Add `lwp' parameter.  Handle it.  Bail out if the
-	low target doesn't support retrieving the PC.
-	(add_lwp): Set last_resume_kind to resume_continue.
-	(linux_attach_lwp_1): Adjust comments.  Always set stop_expected.
-	(linux_attach): Don't clear stop_expected.  Set the lwp's
-	last_resume_kind to resume_stop.
-	(linux_detach_one_lwp): Don't check for removed breakpoints.
-	(check_removed_breakpoint): Delete.
-	(status_pending_p): Rename to ...
-	(status_pending_p_callback): ... this.  Don't check for removed
-	breakpoints.  Don't consider threads that are stopped from GDB's
-	perspective.
-	(linux_wait_for_lwp): Always read the stop_pc here.
-	(cancel_breakpoint): New.
-	(step_over_bkpt): New global.
-	(linux_wait_for_event_1): Implement stepping over breakpoints.
-	(gdb_wants_lwp_stopped): New.
-	(gdb_wants_all_stopped): New.
-	(linux_wait_1): Tag threads as gdb-wants-stopped.  Cancel finished
-	single-step traps here.  Store the thread's last reported target
-	wait status.
-	(send_sigstop): Don't clear stop_expected.  Always set it,
-	instead.
-	(mark_lwp_dead): Remove reference to pending_is_breakpoint.
-	(cancel_finished_single_step): New.
-	(cancel_finished_single_steps): New.
-	(wait_for_sigstop): Don't cancel finished single-step traps here.
-	(linux_resume_one_lwp): Don't check for removed breakpoints.
-	Don't set `step' on non-hardware step archs.
-	(linux_set_resume_request): Ignore resume_stop requests if already
-	stopping or stopped.  Set the lwp's last_resume_kind.
-	(resume_status_pending_p): Don't check for removed breakpoints.
-	(need_step_over_p): New.
-	(start_step_over): New.
-	(finish_step_over): New.
-	(linux_resume_one_thread): Always queue a sigstop for resume_stop
-	requests.  Clear the thread's last reported target waitstatus.
-	Don't use the `suspended' flag.  Don't consider pending breakpoints.
-	(linux_resume): Start a step-over if necessary.
-	(proceed_one_lwp): New.
-	(proceed_all_lwps): New.
-	(unstop_all_lwps): New.
-	* linux-low.h (struct lwp_info): Rewrite comment for the
-	`suspended' flag.  Add the `stop_pc' field.  Delete the
-	`pending_stop_pc' field.  Tweak the `stepping' flag's comment.
-	Add `'last_resume_kind' and `need_step_over' fields.
-	* inferiors.c (struct thread_info): Delete, moved elsewhere.
-	* mem-break.c (struct breakpoint): Delete `reinserting' flag.
-	Delete `breakpoint_to_reinsert' field.  New flag `inserted'.
-	(set_raw_breakpoint_at): New.
-	(set_breakpoint_at): Rewrite to use it.
-	(reinsert_breakpoint_handler): Delete.
-	(set_reinsert_breakpoint): New.
-	(reinsert_breakpoint_by_bp): Delete.
-	(delete_reinsert_breakpoints): New.
-	(uninsert_breakpoint): Rewrite.
-	(uninsert_breakpoints_at): New.
-	(reinsert_breakpoint): Rewrite.
-	(reinsert_breakpoints_at): New.
-	(check_breakpoints): Rewrite.
-	(breakpoint_here): New.
-	(breakpoint_inserted_here): New.
-	(check_mem_read): Adjust.
-	* mem-break.h (breakpoints_supported, breakpoint_here)
-	(breakpoint_inserted_here, set_reinsert_breakpoint): Declare.
-	(reinsert_breakpoint_by_bp): Delete declaration.
-	(delete_reinsert_breakpoints): Declare.
-	(reinsert_breakpoint): Delete declaration.
-	(reinsert_breakpoints_at): Declare.
-	(uninsert_breakpoint): Delete declaration.
-	(uninsert_breakpoints_at): Declare.
-	(check_breakpoints): Adjust prototype.
-	* server.h: Adjust include order.
-	(struct thread_info): Declare here.  Add a `last_status' field.
-
-2010-03-23  Michael Snyder  <msnyder@vmware.com>
-
-	* server.c (crc32): New function.
-	(handle_query): Add handling for 'qCRC:' request.
-
-2010-03-23  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-x86-low.c (x86_linux_prepare_to_resume): Clear DR6 if the
-	lwp had been stopped by a watchpoint.
-
-2010-03-16  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.h (internal_error): Declare.
-	(gdb_assert, ASSERT_FUNCTION, gdb_assert_fail): Define.
-	* utils.c (internal_error): New function.
-
-2010-03-15  Andreas Schwab  <schwab@redhat.com>
-
-	* configure.srv: Fix typo setting srv_regobj.
-
-2010-03-15  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (fetch_register): Avoid passing a non string literal
-	format to `error'.
-	(usr_store_inferior_registers): Ditto.
-
-2010-03-14  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_write_memory): Bail out early if peeking
-	memory failed.
-
-2010-03-14  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.h (struct lwp_info): New fields
-	`stopped_by_watchpoint' and `stopped_data_address'.
-	* linux-low.c (linux_wait_for_lwp): Check for watchpoint triggers
-	here, and cache them in the lwp object.
-	(wait_for_sigstop): Check stopped_by_watchpoint lwp field
-	directly.
-	(linux_resume_one_lwp): Clear the lwp's stopped_by_watchpoint
-	field.
-	(linux_stopped_by_watchpoint): Rewrite.
-	(linux_stopped_data_address): Rewrite.
-
-2010-03-06  Simo Melenius  <simo.melenius@iki.fi>
-
-	* linux-low.c (linux_wait_for_lwp): Fetch the regcache after
-	switching the current inferior, not before.
-
-2010-03-01  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* Makefile.in (clean): Replace reg-i386.c, reg-x86-64.c,
-	reg-i386-linux.c and reg-x86-64-linux.c with i386.c, amd64.c,
-	i386-linux.c and amd64-linux.c.
-	(reg-i386.o): Removed.
-	(reg-i386.c): Likewise.
-	(reg-i386-linux.o): Likewise.
-	(reg-i386-linux.c): Likewise.
-	(reg-x86-64.o): Likewise.
-	(reg-x86-64.c): Likewise.
-	(reg-x86-64-linux.o): Likewise.
-	(reg-x86-64-linux.c): Likewise.
-	(i386.o): New.
-	(i386.c): Likewise.
-	(i386-linux.o): Likewise.
-	(i386-linux.c): Likewise.
-	(amd64.o): Likewise.
-	(amd64.c): Likewise.
-	(amd64-linux.o): Likewise.
-	(amd64-linux.c): Likewise.
-
-	* configure.srv (srv_i386_regobj): New.
-	(srv_i386_linux_regobj): Likewise.
-	(srv_amd64_regobj): Likewise.
-	(srv_amd64_linux_regobj): Likewise.
-	(srv_i386_32bit_xmlfiles): Likewise.
-	(srv_i386_64bit_xmlfiles): Likewise.
-	(srv_i386_xmlfiles): Likewise.
-	(srv_amd64_xmlfiles): Likewise.
-	(srv_i386_linux_xmlfiles): Likewise.
-	(srv_amd64_linux_xmlfiles): Likewise.
-	(i[34567]86-*-cygwin*): Set srv_regobj to $srv_i386_regobj.  Set
-	srv_xmlfiles to $srv_i386_xmlfiles.
-	(i[34567]86-*-mingw32ce*): Likewise.
-	(i[34567]86-*-mingw*): Likewise.
-	(i[34567]86-*-nto*): Likewise.
-	(i[34567]86-*-linux*): Set srv_regobj to $srv_i386_linux_regobj
-	and $srv_amd64_linux_regobj.  Set srv_xmlfiles to
-	$srv_i386_linux_xmlfiles and $srv_amd64_linux_xmlfiles.
-	(x86_64-*-linux*): Likewise.
-
-	* linux-x86-low.c (init_registers_x86_64_linux): Removed.
-	(init_registers_amd64_linux): New.
-	(x86_arch_setup): Replace init_registers_x86_64_linux with
-	init_registers_amd64_linux.
-
-2010-02-23  Maxim Kuvyrkov  <maxim@codesourcery.com>
-
-	* configure.ac: Check for libdl.  If it is not available link against
-	static libthread_db.
-	* configure: Regenerate.
-
-2010-02-22  Pedro Alves  <pedro@codesourcery.com>
-
-	PR9605
-
-	* i386-low.c (i386_length_and_rw_bits): Throw a fatal error if
-	handing a read watchpoint.
-	(i386_low_insert_watchpoint): Read watchpoints aren't supported.
-
-2010-02-12  Doug Evans  <dje@google.com>
-
-	* linux-low.c (linux_supports_tracefork_flag): Document.
-	(linux_look_up_symbols): Add comment.
-
-2010-02-03  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* regcache.c (supply_register): Clear regcache if buf is NULL.
-
-2010-02-02  Nicolas Roche  <roche@sourceware.org>
-	    Joel Brobecker  <brobecker@adacore.com>
-
-	* inferiors.c (find_inferior): Add function documentation.
-	(unloaded_dll): Handle the case where the unloaded dll has not
-	been previously registered in the dll list.
-
-2010-02-01  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-arm-low.c (thumb_breakpoint_len): Delete.
-	(thumb2_breakpoint): New.
-	(arm_breakpoint_at): Check for Thumb-2 breakpoints.
-
-2010-01-29  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (get_stop_pc): Check for SIGTRAP.
-	(linux_wait_for_event_1): Handle SIGILL and SIGSEGV as possible
-	breakpoints.
-
-2010-01-21  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-ppc-low.c (ppc_arch_setup): Adjust to regcache changes.
-
-2010-01-21  Jan Kratochvil  <jan.kratochvil@redhat.com>
-
-	* linux-s390-low.c (s390_collect_ptrace_register)
-	(s390_supply_ptrace_register): Adjust it for the new regcache parameter.
-
-2010-01-21  Doug Evans  <dje@google.com>
-
-	* linux-low.c (PTRACE_ARG3_TYPE): Change from long to void*.
-	(PTRACE_ARG4_TYPE): New macro.
-	(handle_extended_wait): Cast ptrace arg4 to PTRACE_ARG4_TYPE.
-	(linux_wait_for_event_1, linux_resume_one_lwp): Ditto.
-	(fetch_register): Cast to uintptr_t before casting to PTRACE_ARG3_TYPE.
-	(usr_store_inferior_registers): Ditto.
-	(linux_read_memory, linux_write_memory): Ditto.
-	(linux_test_for_tracefork): Ditto.
-
-	* linux-arm-low.c: Remove redundant include of gdb_proc_service.h.
-	Only include elf.h if gdb_proc_service.h didn't include linux/elf.h.
-
-2010-01-21  Pedro Alves  <pedro@codesourcery.com>
-
-	* proc-service.c (ps_lgetregs): Don't refetch registers from the
-	target.
-
-2010-01-21  Pedro Alves  <pedro@codesourcery.com>
-
-	* spu-low.c (spu_fetch_registers, spu_store_registers): Change
-	prototype to take a regcache.  Adjust.
-
-2010-01-20  Pedro Alves  <pedro@codesourcery.com>
-
-	* regcache.h (struct thread_info): Forward declare.
-	(struct regcache): New.
-	(new_register_cache): Adjust prototype.
-	(get_thread_regcache): Declare.
-	(free_register_cache): Adjust prototype.
-	(registers_to_string, registers_from_string): Ditto.
-	(supply_register, supply_register_by_name, collect_register)
-	(collect_register_as_string, collect_register_by_name): Ditto.
-	* regcache.c (struct inferior_regcache_data): Delete.
-	(get_regcache): Rename to ...
-	(get_thread_regcache): ... this.  Adjust.  Switch inferior before
-	fetching registers.
-	(regcache_invalidate_one): Adjust.
-	(regcache_invalidate): Fix prototype.
-	(new_register_cache): Return the new register cache.
-	(free_register_cache): Change prototype.
-	(realloc_register_cache): Adjust.
-	(registers_to_string): Change prototype to take a regcache.  Adjust.
-	(registers_from_string): Ditto.
-	(register_data): Ditto.
-	(supply_register): Ditto.
-	(supply_register_by_name): Ditto.
-	(collect_register): Ditto.
-	(collect_register_as_string): Ditto.
-	(collect_register_by_name): Ditto.
-	* server.c (process_serial_event): Adjust.
-	* linux-low.h (regset_fill_func, regset_store_func): Change
-	prototype.
-	(get_pc, set_pc, collect_ptrace_register, supply_ptrace_register):
-	Change prototype.
-	* linux-low.c (get_stop_pc): Adjust.
-	(check_removed_breakpoint): Adjust.
-	(linux_wait_for_event): Adjust.
-	(linux_resume_one_lwp): Adjust.
-	(fetch_register): Add regcache parameter.  Adjust.
-	(usr_store_inferior_registers): Ditto.
-	(regsets_fetch_inferior_registers): Ditto.
-	(regsets_store_inferior_registers): Ditto.
-	(linux_fetch_registers, linux_store_registers): Ditto.
-	* i387-fp.c (i387_cache_to_fsave): Change prototype to take a
-	regcache.  Adjust.
-	(i387_fsave_to_cache, i387_cache_to_fxsave, i387_fxsave_to_cache):
-	Ditto.
-	* i387-fp.h (i387_cache_to_fsave, i387_fsave_to_cache): Change
-	prototype to take a regcache.
-	(i387_cache_to_fxsave, i387_fxsave_to_cache): Ditto.
-	* remote-utils.c (convert_ascii_to_int, outreg)
-	(prepare_resume_reply): Change prototype to take a regcache.
-	Adjust.
-	* target.h (struct target_ops) <fetch_registers, store_registers>:
-	Change prototype to take a regcache.
-	(fetch_inferior_registers, store_inferior_registers): Change
-	prototype to take a regcache.  Adjust.
-	* proc-service.c (ps_lgetregs): Adjust.
-	* linux-x86-low.c (x86_fill_gregset, x86_store_gregset)
-	(x86_fill_fpregset, x86_store_fpregset, x86_fill_fpxregset)
-	(x86_store_fpxregset, x86_get_pc, x86_set_pc): Change prototype to
-	take a regcache.  Adjust.
-	* linux-arm-low.c (arm_fill_gregset, arm_store_gregset)
-	(arm_fill_wmmxregset, arm_store_wmmxregset, arm_fill_vfpregset)
-	(arm_store_vfpregset, arm_get_pc, arm_set_pc):
-	(arm_breakpoint_at): Change prototype to take a regcache.  Adjust.
-	* linux-cris-low.c (cris_get_pc, cris_set_pc)
-	(cris_cannot_fetch_register):
-	(cris_breakpoint_at): Change prototype to take a regcache.
-	Adjust.
-	* linux-crisv32-low.c (cris_get_pc, cris_set_pc,
-	cris_reinsert_addr, cris_write_data_breakpoint): Change prototype
-	to take a regcache.  Adjust.
-	(cris_breakpoint_at, cris_insert_point, cris_remove_point):
-	Adjust.
-	* linux-m32r-low.c (m32r_get_pc, m32r_set_pc): Change prototype to
-	take a regcache.  Adjust.
-	* linux-m68k-low.c (m68k_fill_gregset, m68k_store_gregset)
-	(m68k_fill_fpregset, m68k_store_fpregset, m68k_get_pc,
-	(m68k_set_pc): Change prototype to take a regcache.  Adjust.
-	* linux-mips-low.c (mips_get_pc):
-	(mips_set_pc): Change prototype to take a regcache.  Adjust.
-	(mips_reinsert_addr): Adjust.
-	(mips_collect_register): Change prototype to take a regcache.
-	Adjust.
-	(mips_supply_register):
-	(mips_collect_register_32bit, mips_supply_register_32bit)
-	(mips_fill_gregset, mips_store_gregset, mips_fill_fpregset)
-	(mips_store_fpregset): Ditto.
-	* linux-ppc-low.c (ppc_supply_ptrace_register)
-	(ppc_supply_ptrace_register): Ditto.
-	(parse_spufs_run): Adjust.
-	(ppc_get_pc, ppc_set_pc, ppc_fill_gregset, ppc_fill_vsxregset)
-	(ppc_store_vsxregset, ppc_fill_vrregset, ppc_store_vrregset)
-	(ppc_fill_evrregset, ppc_store_evrregset): Change prototype to
-	take a regcache.  Adjust.
-	* linux-s390-low.c (s390_collect_ptrace_register)
-	(s390_supply_ptrace_register, s390_fill_gregset, s390_get_pc)
-	(s390_set_pc): Change prototype to take a regcache.  Adjust.
-	(s390_arch_setup): Adjust.
-	* linux-sh-low.c (sh_get_pc, sh_breakpoint_at)
-	(sh_fill_gregset): Change prototype to take a regcache.  Adjust.
-	* linux-sparc-low.c (sparc_fill_gregset_to_stack)
-	(sparc_fill_gregset, sparc_store_gregset_from_stack)
-	(sparc_store_gregset, sparc_get_pc): Change prototype to take a
-	regcache.  Adjust.
-	(sparc_breakpoint_at): Adjust.
-	* linux-xtensa-low.c (xtensa_fill_gregset):
-	(xtensa_store_gregset):
-	(xtensa_fill_xtregset, xtensa_store_xtregset, xtensa_get_pc)
-	(xtensa_set_pc): Change prototype to take a regcache.  Adjust.
-	* nto-low.c (nto_fetch_registers, nto_store_registers): Change
-	prototype to take a regcache.  Adjust.
-	* win32-arm-low.c (arm_fetch_inferior_register)
-	(arm_store_inferior_register): Change prototype to take a
-	regcache.  Adjust.
-	* win32-i386-low.c (i386_fetch_inferior_register)
-	(i386_store_inferior_register): Change prototype to take a
-	regcache.  Adjust.
-	* win32-low.c (child_fetch_inferior_registers)
-	(child_store_inferior_registers): Change prototype to take a
-	regcache.  Adjust.
-	(win32_wait): Adjust.
-	(win32_fetch_inferior_registers): Change prototype to take a
-	regcache.  Adjust.
-	(win32_store_inferior_registers): Adjust.
-	* win32-low.h (struct win32_target_ops) <fetch_inferior_register,
-	store_inferior_register>: Change prototype to take a regcache.
-
-2010-01-20  Doug Evans  <dje@google.com>
-
-	* linux-low.c (linux_create_inferior): Wrap use of __SIGRTMIN in
-	#ifdef.
-	(linux_wait_for_event1, linux_init_signals): Ditto.
-	(W_STOPCODE): Provide definition if missing.
-
-2010-01-13  Vladimir Prus  <vladimir@codesourcery.com>
-
-	* linux-low.c (linux_core_of_thread): New.
-	(compare_ints, show_process, list_threads): New.
-	(linux_qxfer_osdata): Report threads and cores.
-	(linux_target_op): Register linux_core_of_thread.
-	* remote-utils.c (prepare_resume_reply): Report the core.
-	(buffer_xml_printf): Support %d specifier.
-	* server.c (handle_threads_qxfer_proper, handle_threads_qxfer):
-	New.
-	(handle_query): Handle qXfer:threads.  Announce availability
-	thereof.
-	* target.h (struct target_ops): New field core_of_thread.
-
-2010-01-04  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* Makefile.in (clean): Remove new generated files.
-	(reg-s390.o, reg-s390.c): Remove rules.
-	(reg-s390x.o, reg-s390x.c): Likewise.
-	(s390-linux32.o, s390-linux32.c): Add rules.
-	(s390-linux64.o, s390-linux64.c): Likewise.
-	(s390x-linux64.o, s390x-linux64.c): Likewise.
-	* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
-	* linux-s390-low.c: Include <elf.h>.
-	(HWCAP_S390_HIGH_GPRS): Define if undefined.
-	(init_registers_s390): Remove prototype.
-	(init_registers_s390x): Likewise.
-	(init_registers_s390_linux32): Add prototype.
-	(init_registers_s390_linux64): Likewise.
-	(init_registers_s390x_linux64): Likewise.
-	(s390_num_regs_3264): New define.
-	(s390_regmap_3264): New global variable.
-	(s390_cannot_fetch_register): Remove obsolete check.
-	(s390_cannot_store_register): Likewise.
-	(s390_collect_ptrace_register): Handle upper/lower register halves.
-	(s390_supply_ptrace_register): Likewise.
-	(s390_fill_gregset): Update to register number changes.
-	(s390_get_hwcap): New routine.
-	(s390_arch_setup): Detect 32-bit process running on 64-bit system.
-	Install appropriate regmap and register set.
-
-2010-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* server.c (gdbserver_version): Update copyright year to 2010.
-	* gdbreplay.c (gdbreplay_version): Likewise.
-
-2009-12-28  Doug Evans  <dje@google.com>
-
-	* linux-low.c: Delete inclusion of ansidecl.h, elf/common.h,
-	elf/external.h.  Include <elf.h> instead but only if necessary.
-
-2009-12-28  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_remove_process): Remove `detaching'
-	parameter.  Don't release/detach from thread_db here.
-	(linux_kill): Release/detach from thread_db here, ...
-	(linux_detach): ... and here, before actually detaching.
-	(linux_wait_1): ... and here, when a process exits.
-	* thread-db.c (any_thread_of): New.
-	(thread_db_free): Switch the current inferior to a thread of the
-	passed in process.
-
-2009-12-21  Doug Evans  <dje@google.com>
-
-	* linux-x86-low.c: Delete outdated comment about Elf32_Phdr.
-
-	* linux-low.c (kill_lwp): Use __NR_tkill instead of SYS_tkill.
-	Move definition of tkill_failed to ifdef __NR_tkill to avoid gcc
-	warning ifndef __NR_tkill.  Move setting of errno there too.
-	Delete unnecessary resetting of errno after syscall.
-	Minor comment changes to match gdb/linux-nat.c:kill_lwp.
-
-	* configure.ac: Check for dladdr.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-	* thread-db.c (dladdr_to_soname): Only define ifdef HAVE_DLADDR.
-	(try_thread_db_load): Update.
-
-	* linux-low.c (my_waitpid): Delete unnecessary prototype.
-
-2009-12-18  Doug Evans  <dje@google.com>
-
-	* event-loop.c: Include unistd.h if it exists.
-
-	* linux-low.c (my_waitpid): Move definition away from being in
-	between linux_tracefork_child/linux_test_for_tracefork.
-
-	* gdb_proc_service.h (psaddr_t): Fix type.
-	* thread-db.c (thread_db_info.td_thr_tls_get_addr_p): Fix
-	signature to match glibc.
-
-2009-12-16  Doug Evans  <dje@google.com>
-
-	* linux-low.c (linux_read_memory): Fix argument to read.
-
-2009-11-26  Pedro Alves  <pedro@codesourcery.com>
-
-	* win32-low.c (get_child_debug_event): On EXIT_THREAD_DEBUG_EVENT
-	events, don't leave current_inferior pointing at null.
-
-2009-11-26  Pedro Alves  <pedro@codesourcery.com>
-
-	* win32-low.c (LOG): Delete.
-	(OUTMSG): Output to stderr.
-	(OUTMSG2): Conditionalize on `debug_threads' variable, instead of
-	on compile time LOG macro.
-	(win32_wait): Fix debug output.
-
-2009-11-26  Pedro Alves  <pedro@codesourcery.com>
-
-	* win32-low.c (win32_add_one_solib): If the dll name is
-	"ntdll.dll", prepend the system directory to the dll path.
-
-2009-11-17  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* m68k-tdep.c (m68k_gdbarch_init): Reuse previous initialization.
-
-2009-11-17  Nathan Sidwell  <nathan@codesourcery.com>
-	    Vladimir Prus  <vladimir@codesourcery.com>
-
-	* Makefile.in (reg-cf.o, reg-cf.c): New targets.
-	* configure.ac: Check for __mcoldfire__ and set
-	gdb_cv_m68k_is_coldfire.
-	* configure.srv: Use gdb_cv_m68k_is_coldfire to select between
-	reg-cf.o and reg-m68k.o.
-	* configure: Regenerated.
-
-2009-11-16  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_remove_process): Add `detaching' parameter.
-	Pass it to thread_db_free.
-	(linux_kill, linux_detach, linux_wait_1): Adjust to pass the
-	proper `detaching' argument to linux_remove_process.
-	* linux-low.h (thread_db_free): Add `detaching' parameter.
-	* thread-db.c (thread_db_init): Pass false as `detaching' argument
-	to thread_db_free.
-	(thread_db_free): Add `detaching' parameter.  Only
-	call td_ta_clear_event if detaching from process.
-
-2009-11-12  Maxim Kuvyrkov  <maxim@codesourcery.com>
-
-	* thread-db.c (thread_db_free): Fix typo.
-
-2009-11-11  Paul Pluzhnikov  <ppluzhnikov@google.com>
-
-	PR gdb/10838
-	* thread-db.c (thread_db_free): Call td_ta_clear_event.
-
-2009-11-03  Nathan Sidwell  <nathan@codesourcery.com>
-
-	* configure.ac (i[34567]86-*): Check if we're targetting x86-64
-	with an i686 compiler.
-	* configure.srv (i[34567]86-*-linux*): Pull in x86-64 handling if
-	needed.
-	* configure: Rebuilt.
-
-2009-10-29  Sandra Loosemore  <sandra@codesourcery.com>
-
-	PR gdb/10783
-
-	* server.c (handle_search_memory_1): Correct read_addr initialization
-	in loop for searching subsequent chunks.
-
-2009-10-29  Paul Pluzhnikov  <ppluzhnikov@google.com>
-
-	* configure.ac: New --with-libthread-db option.
-	* thread-db.c: Allow direct dependence on libthread_db.
-	(thread_db_free): Adjust.
-	* config.in: Regenerate.
-	* configure: Likewise.
-
-2009-10-28  Paul Pluzhnikov  <ppluzhnikov@google.com>
-
-	PR gdb/10757
-	* thread-db.c (attach_thread): New function.
-	(maybe_attach_thread): Return success/failure.
-	(find_new_threads_callback): Adjust.
-	(thread_db_find_new_threads): Loop until no new threads.
-
-2009-10-13  Pedro Alves  <pedro@codesourcery.com>
-
-	* proc-service.c (ps_lgetregs): Formatting.
-
-2009-10-08  Paul Pluzhnikov  <ppluzhnikov@google.com>
-
-	* acinclude.m4: (SRV_CHECK_THREAD_DB, SRV_CHECK_TLS_GET_ADDR): Remove.
-	* configure.ac: Adjust.
-	* linux-low.h (struct process_info_private): Move members to struct
-	thread_db.
-	(thread_db_free, thread_db_handle_monitor_command): New prototype.
-	* linux-low.c (linux_remove_process): Adjust.
-	(linux_wait_for_event_1, linux_look_up_symbols): Likewise.
-	* server.c (handle_query): Move code ...
-	(handle_monitor_command): ... here. New function.
-	* target.h (struct target_ops): New member.
-	* thread-db.c (struct thread_db): New.
-	(libthread_db_search_path): New variable.
-	(thread_db_create_event, thread_db_enable_reporting)
-	(find_one_thread, maybe_attach_thread, find_new_threads_callback)
-	(thread_db_find_new_threads, (thread_db_get_tls_address): Adjust.
-	(try_thread_db_load_1, dladdr_to_soname): New functions.
-	(try_thread_db_load, thread_db_load_search): New functions.
-	(thread_db_init): Search for libthread_db.
-	(thread_db_free): New function.
-	(thread_db_handle_monitor_command): Likewise.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-
-2009-09-27  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* spu-low.c (spu_kill): Wait for inferior to terminate.
-	Call clear_inferiors.
-	(spu_detach): Call clear_inferiors.
-
-2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-
-	* aclocal.m4: Regenerate.
-	* config.in: Likewise.
-	* configure: Likewise.
-
-2009-07-31  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* linux-ppc-low.c (INSTR_SC, NR_spu_run): Define.
-	(parse_spufs_run): New function.
-	(ppc_get_pc, ppc_set_pc): Detect and handle SPU PC.
-	(ppc_breakpoint_at): Handle SPU breakpoints.
-
-2009-07-31  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* linux-low.c: Include <sys/stat.h> and <sys/vfs.h>.
-	(SPUFS_MAGIC): Define.
-	(spu_enumerate_spu_ids): New function.
-	(linux_qxfer_spu): New function.
-	(linux_target_ops): Install linux_qxfer_spu.
-
-2009-07-31  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* configure.srv (powerpc*-*-linux*): Add powerpc-cell32l.o
-	and powerpc-cell64l.o to srv_regobj.  Add rs6000/powerpc-cell32l.xml
-	and rs6000/powerpc-cell64l.xml to srv_xmlfiles.
-	* Makefile.in (powerpc-cell32l.o, powerpc-cell32l.c): New rules.
-	(powerpc-cell64l.o, powerpc-cell64l.c): Likewise.
-	(clean): Handle powerpc-cell32l.c and powerpc-cell64l.c.
-	* linux-ppc-low.c (PPC_FEATURE_CELL): Define.
-	(init_registers_powerpc_cell32l): Add prototype.
-	(init_registers_powerpc_cell64l): Likewise.
-	(ppc_arch_setup): Detect Cell/B.E. architecture.
-
-2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-
-	* Makefile.in (datarootdir): New variable.
-
-2009-07-28  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_write_memory): Update debugging output.
-	* Makefile.in (clean): Add new descriptions.
-	(arm-with-vfpv2.o, arm-with-vfpv2.c, arm-with-vfpv3.o)
-	(arm-with-vfpv3.c, arm-with-neon.o, arm-with-neon.c): New rules.
-	* configure.srv: Add new files for arm*-*-linux*.
-	* linux-arm-low.c: Add new declarations.
-	(PTRACE_GETVFPREGS, PTRACE_SETVFPREGS): Define if undefined.
-	(arm_hwcap, HWCAP_VFP, HWCAP_IWMMXT, HWCAP_NEON, HWCAP_VFPv3)
-	(HWCAP_VFPv3D16): New.
-	(arm_fill_wmmxregset, arm_store_wmmxregset): Check HWCAP_IWMMXT
-	instead of __IWMMXT__.
-	(arm_fill_vfpregset, arm_store_vfpregset, arm_get_hwcap)
-	(arm_arch_setup): New.
-	(target_regsets): Remove #ifdef.  Add VFP regset.
-	(the_low_target): Use arm_arch_setup.
-
-2009-07-28  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_kill_one_lwp): Adjust kernel workaround to skip
-	the main thread again.
-
-2009-07-06  Aleksandar Ristovski  <aristovski@qnx.com>
-
-	Adding Neutrino gdbserver.
-	* configure: Regenerated.
-	* configure.ac: Add case for srv_qnx and set LIBS accordingly.
-	* configure.srv (i[34567]86-*-nto*): New target.
-	* nto-low.c, nto-low.h, nto-x86-low.c: New files.
-	* remote-utils.c [__QNX__]: Include sys/iomgr.h
-	(nto_comctrl) [__QNX__]: New function.
-	(enable_async_io, disable_async_io) [__QNX__]: Call nto_comctrl.
-
-2009-07-05  Danny Backx  <dannybackx@users.sourceforge.net>
-
-	* configure.srv (i[34567]86-*-mingw32ce*): Add i386-low.o to
-	srv_tgtobj.
-
-2009-07-04  Danny Backx  <dannybackx@users.sourceforge.net>
-	    Pedro Alves  <pedro@codesourcery.com>
-
-	* win32-i386-low.c (i386_get_thread_context): Handle systems that
-	don't support CONTEXT_EXTENDED_REGISTERS.
-	(i386_win32_breakpoint, i386_win32_breakpoint_len): New.
-	(the_low_target): Install them.
-	* win32-low.c (get_child_debug_event): Handle WaitForDebugEvent
-	failing with ERROR_PIPE_NOT_CONNECTED.
-
-2009-06-30  Doug Evans  <dje@google.com>
-	    Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	Add h/w watchpoint support to x86-linux, win32-i386.
-	* Makefile.in (SFILES): Add i386-low.c
-	(i386_low_h): Define.
-	(i386-low.o): Add dependencies.
-	(linux-x86-low.o): Add i386-low.h dependency.
-	(win32-i386-low.o): Ditto.
-	* i386-low.c: New file.
-	* i386-low.h: New file.
-	* configure.srv (i[34567]86-*-cygwin*): Add i386-low.o to srv_tgtobj.
-	(i[34567]86-*-linux*, i[34567]86-*-mingw*, x86_64-*-linux*): Ditto.
-	* linux-low.c (linux_add_process): Initialize arch_private.
-	(linux_remove_process): Free arch_private.
-	(add_lwp): Initialize arch_private.
-	(delete_lwp): Free arch_private.
-	(linux_resume_one_lwp): Call the_low_target.prepare_to_resume if
-	provided.
-	* linux-low.h (process_info_private): New member arch_private.
-	(lwp_info): New member arch_private.
-	(linux_target_ops): New members new_process, new_thread,
-	prepare_to_resume.
-	(ptid_of): New macro.
-	* linux-x86-low.c: Include stddef.h, i386-low.h.
-	(arch_process_info): New struct.
-	(arch_lwp_info): New struct.
-	(x86_linux_dr_get, x86_linux_dr_set): New functions.
-	(i386_dr_low_set_addr, i386_dr_low_set_control): New functions.
-	(i386_dr_low_get_status): New function.
-	(x86_insert_point, x86_remove_point): New functions.
-	(x86_stopped_by_watchpoint): New function.
-	(x86_stopped_data_address): New function.
-	(x86_linux_new_process, x86_linux_new_thread): New functions.
-	(x86_linux_prepare_to_resume): New function.
-	(the_low_target): Add entries for insert_point, remove_point,
-	stopped_by_watchpoint, stopped_data_address, new_process, new_thread,
-	prepare_to_resume.
-	* server.c (debug_hw_points): New global.
-	(monitor_show_help): Document set debug-hw-points.
-	(handle_query): Process "set debug-hw-points".
-	* server.h (debug_hw_points): Declare.
-	(paddress): Declare.
-	* utils.c (NUMCELLS, CELLSIZE): New macros.
-	(get_sell, xsnprintf, paddress): New functions.
-	* win32-arm-low.c (the_low_target): Add entries for insert_point,
-	remove_point, stopped_by_watchpoint, stopped_data_address.
-	* win32-i386-low.c: Include i386-low.h.
-	(debug_reg_state): Replaces dr.
-	(i386_dr_low_set_addr, i386_dr_low_set_control): New functions.
-	(i386_dr_low_get_status): New function.
-	(i386_insert_point, i386_remove_point): New functions.
-	(i386_stopped_by_watchpoint): New function.
-	(i386_stopped_data_address): New function.
-	(i386_initial_stuff): Update.
-	(get_thread_context,set_thread_context,i386_thread_added): Update.
-	(the_low_target): Add entries for insert_point,
-	remove_point, stopped_by_watchpoint, stopped_data_address.
-	* win32-low.c (win32_insert_watchpoint): New function.
-	(win32_remove_watchpoint): New function.
-	(win32_stopped_by_watchpoint): New function.
-	(win32_stopped_data_address): New function.
-	(win32_target_ops): Add entries for insert_watchpoint,
-	remove_watchpoint, stopped_by_watchpoint, stopped_data_address.
-	* win32-low.h (win32_target_ops): New members insert_point,
-	remove_point, stopped_by_watchpoint, stopped_data_address.
-
-2009-06-25  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (process_serial_event): Re-return unsupported, not
-	error, if the type isn't recognized.  Re-allow supporting only
-	insert or remove packets.  Also call require_running for
-	breakpoints.  Add missing break statement to default case.  Tidy.
-	* target.h (struct target_ops): Rename insert_watchpoint to
-	insert_point, and remove_watchpoint to remove_point.
-
-	* linux-low.h (struct linux_target_ops): Likewise.
-	* linux-low.c (linux_insert_watchpoint): Rename to ...
-	(linux_insert_point): ... this.  Adjust.
-	(linux_remove_watchpoint): Rename to ...
-	(linux_remove_point): ... this.  Adjust.
-	(linux_target_ops): Adjust.
-	* linux-crisv32-low.c (cris_insert_watchpoint): Rename to ...
-	(cris_insert_point): ... this.
-	(cris_remove_watchpoint): Rename to ...
-	(cris_remove_point): ... this.
-	(the_low_target): Adjust.
-
-2009-06-24  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* server.c (handle_v_kill): Pass signal_pid to
-	kill_inferior if multi_process is zero.
-
-2009-06-23  Aleksandar Ristovski  <aristovski@qnx.com>
-
-	* server.c (process_serial_event): Add support for Z0 and Z1 packet.
-	* target.h (target_ops): Comment for *_watchpoint to make it clear
-	the functions can get types '0' and '1'.
-
-2009-06-22  Aleksandar Ristovski  <aristovski@qnx.com>
-
-	* linux-low.c (usr_fetch_inferior_registers): Remove check for regno 0.
-	* proc-service.c (ps_lgetregs): Pass -1 to fetch all registers.
-	* regcache.c (get_regcache): Likewise.
-	* spu-low.c (spu_fetch_registers): Remove 0 to -1 conversion.
-	* win32-low.c (child_fetch_inferior_registers): Remove check for
-	regno 0.
-
-2009-06-19  Aleksandar Ristovski  <aristovski@qnx.com>
-	    Pedro Alves <pedro@codesourcery.com>
-
-	* target.h (struct target_ops) <supports_multi_process>: New
-	callback.
-	(target_supports_multi_process): New.
-	* server.c (handle_query): Even if GDB reports support, only
-	enable multi-process if the target also supports it.  Report
-	multi-process support only if the target backend supports it.
-	* linux-low.c (linux_supports_multi_process): New function.
-	(linux_target_ops): Install it as target_supports_multi_process
-	callback.
-
-2009-05-24  Doug Evans  <dje@google.com>
-
-	Global renaming of find_thread_pid to find_thread_ptid.
-	* server.h (find_thread_ptid): Renamed from find_thread_pid.
-	* inferiors.c (find_thread_ptid): Renamed from find_thread_pid.
-	All callers updated.
-
-	* linux-low.c (handle_extended_wait): Use linux_resume_one_lwp
-	to resume the newly created thread, don't call ptrace (PTRACE_CONT)
-	directly.
-
-	* linux-low.c (get_stop_pc): Print pc if debug_threads.
-	(check_removed_breakpoint, linux_wait_for_lwp): Ditto.
-	(linux_resume_one_lwp): Ditto.
-
-2009-05-23  Doug Evans  <dje@google.com>
-
-	* linux-low.c (linux_resume_one_lwp): Change type of first arg
-	from struct inferior_list_entry * to struct lwp_info *.
-	All callers updated.
-
-2009-05-13  Doug Evans  <dje@google.com>
-
-	* linux-x86-low.c: Don't include assert.h.
-	(x86_siginfo_fixup): Use fatal, not assert.
-	(x86_arch_setup): Fix comment.
-
-2009-05-12  Doug Evans  <dje@google.com>
-
-	Biarch support for i386/amd64 gdbserver.
-	* Makefile.in (SFILES): Remove linux-i386-low.c, linux-x86-64-low.c.
-	Add linux-x86-low.c.
-	(linux-i386-low.o, linux-x86-64-low.o): Delete.
-	(linux-x86-low.o): Add.
-	* linux-x86-64-low.c: Delete.
-	* linux-i386-low.c: Delete.
-	* linux-x86-low.c: New file.
-	* configure.srv (i?86-linux srv_tgtobj): Replace linux-i386-low.o with
-	linux-x86-low.o.
-	(x86_64-linux srv_tgtobj): Replace linux-x86-64-low.o with
-	linux-x86-low.o.
-	(x86_64-linux srv_regobj): Add reg-i386-linux.o.
-	* linux-low.c: Include ansidecl.h, elf/common.h, elf/external.h.
-	(linux_child_pid_to_exec_file): New function.
-	(elf_64_header_p, elf_64_file_p): New functions.
-	(siginfo_fixup): New function.
-	(linux_xfer_siginfo): New local inf_siginfo.  Call siginfo_fixup to
-	give target a chance to convert layout.
-	* linux-low.h (linux_target_ops): New member siginfo_fixup.
-	(linux_child_pid_to_exec_file, elf_64_file_p): Declare.
-
-2009-05-07  Doug Evans  <dje@google.com>
-
-	* linux-low.c (regsets_fetch_inferior_registers): Fix memory leak.
-	(regsets_store_inferior_registers): Ditto.
-
-2009-05-06  Pedro Alves  <pedro@codesourcery.com>
-
-	PR server/10048
-
-	* linux-low.c (must_set_ptrace_flags): Delete.
-	(linux_create_inferior): Set `lwp->must_set_ptrace_flags' instead
-	of the global.
-	(linux_attach_lwp_1): Don't set PTRACE_SETOPTIONS here.  Set
-	`lwp->must_set_ptrace_flags' instead.
-	(linux_wait_for_event_1): Set ptrace options here.
-	(linux_wait_1): ... not here.
-
-2009-04-30  Doug Evans  <dje@google.com>
-
-	* inferiors.c (started_inferior_callback): New function.
-	(attached_inferior_callback): New function.
-	(have_started_inferiors_p, have_attached_inferiors_p): New functions.
-	* server.c (print_started_pid, print_attached_pid): New functions.
-	(detach_or_kill_for_exit): New function.
-	(main): Call it instead of for_each_inferior (kill_inferior_callback).
-	* server.h (have_started_inferiors_p): Declare.
-	(have_attached_inferiors_p): Declare.
-
-	* inferiors.c (remove_process): Fix memory leak, free process.
-	* linux-low.c (linux_remove_process): New function.
-	(linux_kill): Call it instead of remove_process.
-	(linux_detach, linux_wait_1): Ditto.
-
-2009-04-19  Danny Backx  <dannybackx@users.sourceforge.net>
-
-	* configure.srv: Add x86 Windows CE target.
-
-2009-04-03  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* inferiors.c (get_thread_process): Make global.
-	* server.h (get_thread_process): Add prototype.
-	* thread-db.c (find_one_thread): Use get_thread_process
-	instead of current_process.
-	(thread_db_get_tls_address): Do not crash if called when
-	thread layer is not yet initialized.
-
-2009-04-03  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* remote-utils.c (prepare_resume_reply): Null-terminate packet.
-	* spu-low.c (current_tid): Rename to ...
-	(current_ptid): ... this.
-	(fetch_ppc_register, fetch_ppc_memory, store_ppc_memory,
-	spu_proc_xfer_spu, spu_resume, spu_request_interrupt): Use
-	ptid_get_lwp (current_ptid) instead of current_tid.
-	(spu_kill, spu_detach, spu_join, spu_wait): Use pid argument
-	instead of current_tid.  Use find_process_pid to verify pid
-	argument is valid.  Pass proper argument to remove_process.
-	(spu_thread_alive): Compare current_ptid instead of current_tid.
-	(spu_resume): Likewise.
-
-2009-04-02  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (usr_store_inferior_registers): Declare local `pid'
-	variable.
-
-2009-04-01  Pedro Alves  <pedro@codesourcery.com>
-
-	Implement the multiprocess extensions, and add linux multiprocess
-	support.
-
-	* server.h (ULONGEST): Declare.
-	(struct ptid, ptid_t): New.
-	(minus_one_ptid, null_ptid): Declare.
-	(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_lwp)
-	(ptid_get_tid, ptid_equal, ptid_is_pid): Declare.
-	(struct inferior_list_entry): Change `id' type from unsigned from
-	to ptid_t.
-	(struct sym_cache, struct breakpoint, struct
-	process_info_private): Forward declare.
-	(struct process_info): Declare.
-	(current_process): Declare.
-	(all_processes): Declare.
-	(initialize_inferiors): Declare.
-	(add_thread): Adjust to use ptid_t.
-	(thread_id_to_gdb_id, thread_to_gdb_id, gdb_id_to_thread_id): Ditto.
-	(add_process, remove_process, find_thread_pid): Declare.
-	(find_inferior_id): Adjust to use ptid_t.
-	(cont_thread, general_thread, step_thread): Change type to ptid_t.
-	(multi_process): Declare.
-	(push_event): Adjust to use ptid_t.
-	(read_ptid, write_ptid): Declare.
-	(prepare_resume_reply): Adjust to use ptid_t.
-	(clear_symbol_cache): Declare.
-	* inferiors.c (all_processes): New.
-	(null_ptid, minus_one_ptid): New.
-	(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_lwp)
-	(ptid_get_tid, ptid_equal, ptid_is_pid): New.
-	(add_thread): Change unsigned long to ptid.  Remove gdb_id
-	parameter.  Adjust.
-	(thread_id_to_gdb_id, thread_to_gdb_id): Change unsigned long to ptid.
-	(gdb_id_to_thread): Rename to ...
-	(find_thread_pid): ... this.  Change unsigned long to ptid.
-	(gdb_id_to_thread_id, find_inferior_id): Change unsigned long to ptid.
-	(loaded_dll, pull_pid_from_list): Adjust.
-	(add_process, remove_process, find_process_pid)
-	(get_thread_process, current_process, initialize_inferiors): New.
-	* target.h (struct thread_resume) <thread>: Change type to ptid_t.
-	(struct target_waitstatus) <related_pid>: Ditto.
-	(struct target_ops) <kill, detach>: Add `pid' argument.  Change
-	return type to int.
-	(struct target_ops) <join>: Add `pid' argument.
-	(struct target_ops) <thread_alive>: Change pid's type to ptid_t.
-	(struct target_ops) <wait>: Add `ptid' field.  Change return type
-	to ptid.
-	(kill_inferior, detach_inferior, join_inferior): Add `pid' argument.
-	(mywait): Add `ptid' argument.  Change return type to ptid_t.
-	(target_pid_to_str): Declare.
-	* target.c (set_desired_inferior): Adjust to use ptids.
-	(mywait): Add new `ptid' argument.  Adjust.
-	(target_pid_to_str): New.
-	* mem-break.h (free_all_breakpoints): Declare.
-	* mem-break.c (breakpoints): Delelete.
-	(set_breakpoint_at, delete_breakpoint, find_breakpoint_at)
-	(check_mem_read, check_mem_write, delete_all_breakpoints): Adjust
-	to use per-process breakpoint list.
-	(free_all_breakpoints): New.
-	* remote-utils.c (struct sym_cache) <name>: Drop `const'.
-	(symbol_cache, all_symbols_looked_up): Delete.
-	(hexchars): New.
-	(ishex, unpack_varlen_hex, write_ptid, hex_or_minus_one,
-	read_ptid): New.
-	(prepare_resume_reply): Change ptid argument's type from unsigned
-	long to ptid_t.  Adjust.  Implement W;process and X;process.
-	(free_sym_cache, clear_symbol_cache): New.
-	(look_up_one_symbol): Adjust to per-process symbol cache.  *
-	* server.c (cont_thread, general_thread, step_thread): Change type
-	to ptid_t.
-	(attached): Delete.
-	(multi_process): New.
-	(last_ptid): Change type to ptid_t.
-	(struct vstop_notif) <ptid>: Change type to ptid_t.
-	(queue_stop_reply, push_event): Change `ptid' argument's type to
-	ptid_t.
-	(discard_queued_stop_replies): Add `pid' argument.
-	(start_inferior): Adjust to use ptids.  Adjust to mywait interface
-	changes.  Don't reference the `attached' global.
-	(attach_inferior): Adjust to mywait interface changes.
-	(handle_query): Adjust to use ptids.  Parse GDB's qSupported
-	features.  Handle and report "multiprocess+".  Handle
-	"qAttached:PID".
-	(handle_v_cont): Adjust to use ptids.  Adjust to mywait interface
-	changes.
-	(handle_v_kill): New.
-	(handle_v_stopped): Adjust to use target_pid_to_str.
-	(handle_v_requests): Allow multiple attaches and runs when
-	multiprocess extensions are in effect.  Handle "vKill".
-	(myresume): Adjust to use ptids.
-	(queue_stop_reply_callback): Add `arg' parameter.  Handle it.
-	(handle_status): Adjust to discard_queued_stop_replies interface
-	change.
-	(first_thread_of, kill_inferior_callback)
-	(detach_or_kill_inferior_callback, join_inferiors_callback): New.
-	(main): Call initialize_inferiors.  Adjust to use ptids, killing
-	and detaching from all inferiors.  Handle multiprocess packet
-	variants.
-	* linux-low.h: Include gdb_proc_service.h.
-	(struct process_info_private): New.
-	(struct linux_target_ops) <pid_of>: Use ptid_get_pid.
-	<lwpid_of>: Use ptid_get_lwp.
-	(get_lwp_thread): Adjust.
-	(struct lwp_info): Add `dead' member.
-	(find_lwp_pid): Declare.
-	* linux-low.c (thread_db_active): Delete.
-	(new_inferior): Adjust comment.
-	(inferior_pid): Delete.
-	(linux_add_process): New.
-	(handle_extended_wait): Adjust.
-	(add_lwp): Change unsigned long to ptid.
-	(linux_create_inferior): Add process to processes table.  Adjust
-	to use ptids.  Don't set new_inferior here.
-	(linux_attach_lwp): Rename to ...
-	(linux_attach_lwp_1): ... this.  Add `initial' argument.  Handle
-	it.  Adjust to use ptids.
-	(linux_attach_lwp): New.
-	(linux_attach): Add process to processes table.  Don't set
-	new_inferior here.
-	(struct counter): New.
-	(second_thread_of_pid_p, last_thread_of_process_p): New.
-	(linux_kill_one_lwp): Add `args' parameter.  Handle it.  Adjust to
-	multiple processes.
-	(linux_kill): Add `pid' argument.  Handle it.  Adjust to multiple
-	processes.  Remove process from process table.
-	(linux_detach_one_lwp): Add `args' parameter.  Handle it.  Adjust
-	to multiple processes.
-	(any_thread_of): New.
-	(linux_detach): Add `pid' argument, and handle it.  Remove process
-	from processes table.
-	(linux_join): Add `pid' argument.  Handle it.
-	(linux_thread_alive): Change unsighed long argument to ptid_t.
-	Consider dead lwps as not being alive.
-	(status_pending_p): Rename `dummy' argument to `arg'.  Filter out
-	threads we're not interested in.
-	(same_lwp, find_lwp_pid): New.
-	(linux_wait_for_lwp): Change `pid' argument's type from int to
-	ptid_t.  Adjust.
-	(linux_wait_for_event): Rename to ...
-	(linux_wait_for_event_1): ... this.  Change `pid' argument's type
-	from int to ptid_t.  Adjust.
-	(linux_wait_for_event): New.
-	(linux_wait_1): Add `ptid' argument.  Change return type to
-	ptid_t.  Adjust.  Use last_thread_of_process_p.  Remove processes
-	that exit from the process table.
-	(linux_wait): Add `ptid' argument.  Change return type to ptid_t.
-	Adjust.
-	(mark_lwp_dead): New.
-	(wait_for_sigstop): Adjust to use ptids.  If a process exits while
-	stopping all threads, mark its main lwp as dead.
-	(linux_set_resume_request, linux_resume_one_thread): Adjust to use
-	ptids.
-	(fetch_register, usr_store_inferior_registers)
-	(regsets_fetch_inferior_registers)
-	(regsets_store_inferior_registers, linux_read_memory)
-	(linux_write_memory): Inline `inferior_pid'.
-	(linux_look_up_symbols): Adjust to use per-process
-	`thread_db_active'.
-	(linux_request_interrupt): Adjust to use ptids.
-	(linux_read_auxv): Inline `inferior_pid'.
-	(initialize_low): Don't reference thread_db_active.
-	* gdb_proc_service.h (struct ps_prochandle) <pid>: Remove.
-	* proc-service.c (ps_lgetregs): Use find_lwp_pid.
-	(ps_getpid): Return the pid of the current inferior.
-	* thread-db.c (proc_handle, thread_agent): Delete.
-	(thread_db_create_event, thread_db_enable_reporting): Adjust to
-	per-process data.
-	(find_one_thread): Change argument type to ptid_t.  Adjust to
-	per-process data.
-	(maybe_attach_thread): Adjust to per-process data and ptids.
-	(thread_db_find_new_threads): Ditto.
-	(thread_db_init): Ditto.
-	* spu-low.c (spu_create_inferior, spu_attach): Add process to
-	processes table.  Adjust to use ptids.
-	(spu_kill, spu_detach): Adjust interface.  Remove process from
-	processes table.
-	(spu_join, spu_thread_alive): Adjust interface.
-	(spu_wait): Adjust interface.  Remove process from processes
-	table.  Adjust to use ptids.
-	* win32-low.c (current_inferior_tid): Delete.
-	(current_inferior_ptid): New.
-	(debug_event_ptid): New.
-	(thread_rec): Take a ptid.  Adjust.
-	(child_add_thread): Add `pid' argument.  Adjust to use ptids.
-	(child_delete_thread): Ditto.
-	(do_initial_child_stuff): Add `attached' argument.  Add process to
-	processes table.
-	(child_fetch_inferior_registers, child_store_inferior_registers):
-	Adjust.
-	(win32_create_inferior): Pass 0 to do_initial_child_stuff.
-	(win32_attach): Pass 1 to do_initial_child_stuff.
-	(win32_kill): Adjust interface.  Remove process from processes
-	table.
-	(win32_detach): Ditto.
-	(win32_join): Adjust interface.
-	(win32_thread_alive): Take a ptid.
-	(win32_resume): Adjust to use ptids.
-	(get_child_debug_event): Ditto.
-	(win32_wait): Adjust interface.  Remove exiting process from
-	processes table.
-
-2009-04-01  Pedro Alves  <pedro@codesourcery.com>
-
-	Non-stop mode support.
-
-	* server.h (non_stop): Declare.
-	(gdb_client_data, handler_func): Declare.
-	(delete_file_handler, add_file_handler, start_event_loop):
-	Declare.
-	(handle_serial_event, handle_target_event, push_event)
-	(putpkt_notif): Declare.
-	* target.h (enum resume_kind): New.
-	(struct thread_resume): Replace `step' field by `kind' field.
-	(TARGET_WNOHANG): Define.
-	(struct target_ops) <wait>: Add `options' argument.
-	<supports_non_stop, async, start_non_stop>: New fields.
-	(target_supports_non_stop, target_async): New.
-	(start_non_stop): Declare.
-	(mywait): Add `options' argument.
-	* target.c (mywait): Add `options' argument.  Print child exit
-	notifications here.
-	(start_non_stop): New.
-	* server.c (non_stop, own_buf, mem_buf): New globals.
-	(struct vstop_notif): New.
-	(notif_queue): New global.
-	(queue_stop_reply, push_event, discard_queued_stop_replies)
-	(send_next_stop_reply): New.
-	(start_inferior): Adjust to use resume_kind.  Adjust to mywait
-	interface changes.
-	(attach_inferior): In non-stop mode, don't wait for the target
-	here.
-	(handle_general_set): Handle QNonStop.
-	(handle_query): When handling qC, return the current general
-	thread, instead of the first thread of the list.
-	(handle_query): If the backend supports non-stop mode, include
-	QNonStop+ in the qSupported query response.
-	(handle_v_cont): Adjust to use resume_kind.  Handle resume_stop
-	and non-stop mode.
-	(handle_v_attach, handle_v_run): Handle non-stop mode.
-	(handle_v_stopped): New.
-	(handle_v_requests): Report support for vCont;t.  Handle vStopped.
-	(myresume): Adjust to use resume_kind.  Handle non-stop.
-	(queue_stop_reply_callback): New.
-	(handle_status): Handle non-stop mode.
-	(main): Clear non_stop flag on reconnection.  Use the event-loop.
-	Refactor serial protocol handling from here ...
-	(process_serial_event): ... to this new function.  When GDB
-	selects any thread, select one here.  In non-stop mode, wait until
-	GDB acks all pending events before exiting.
-	(handle_serial_event, handle_target_event): New.
-	* remote-utils.c (remote_open): Install remote_desc in the event
-	loop.
-	(remote_close): Remove remote_desc from the event loop.
-	(putpkt_binary): Rename to...
-	(putpkt_binary_1): ... this.  Add `is_notic' argument.  Handle it.
-	(putpkt_binary): New as wrapper around putpkt_binary_1.
-	(putpkt_notif): New.
-	(prepare_resume_reply): In non-stop mode, don't change the
-	general_thread.
-	* event-loop.c: New.
-	* Makefile.in (OBJ): Add event-loop.o.
-	(event-loop.o): New rule.
-
-	* linux-low.h (pid_of): Moved here.
-	(lwpid_of): New.
-	(get_lwp_thread): Use lwpid_of.
-	(struct lwp_info): Delete `lwpid' field.  Add `suspended' field.
-	* linux-low.c (pid_of): Delete.
-	(inferior_pid): Use lwpid_of.
-	(linux_event_pipe): New.
-	(target_is_async_p): New.
-	(delete_lwp): New.
-	(handle_extended_wait): Use lwpid_of.
-	(add_lwp): Don't set lwpid field.
-	(linux_attach_lwp): Adjust debug output.  Use lwpid_of.
-	(linux_kill_one_lwp): If killing a running lwp, stop it first.
-	Use lwpid_of.  Adjust to linux_wait_for_event interface changes.
-	(linux_detach_one_lwp): If detaching from a running lwp, stop it
-	first.  Adjust to linux_wait_for_event interface changes.  Use
-	lwpid_of.
-	(linux_detach): Don't delete the main lwp here.
-	(linux_join): Use my_waitpid.  Avoid signal_pid.  Use lwpid_of.
-	(status_pending_p): Don't consider explicitly suspended lwps.
-	(linux_wait_for_lwp): Take an integer pid instead of a lwp_info
-	pointer.  Add OPTIONS argument.  Change return type to int.  Use
-	my_waitpid instead of sleeping.  Handle WNOHANG.  Use lwpid_of.
-	(linux_wait_for_event): Take an integer pid instead of a lwp_info
-	pointer.  Add status pointer argument.  Return a pid instead of a
-	status.  Use lwpid_of.  Adjust to linux_wait_for_lwp interface
-	changes.  In non-stop mode, don't switch to a random thread.
-	(linux_wait): Rename to...
-	(linux_wait_1): ... this.  Add target_options argument, and handle
-	it.  Adjust to use resume_kind.  Use lwpid_of.  In non-stop mode,
-	don't handle the continue thread.  Handle TARGET_WNOHANG.  Merge
-	clean exit and signal exit code.  Don't stop all threads in
-	non-stop mode.  In all-stop mode, only stop all threads when
-	reporting a stop to GDB.  Handle explicit thread stop requests.
-	(async_file_flush, async_file_mark): New.
-	(linux_wait): New.
-	(send_sigstop): Use lwpid_of.
-	(wait_for_sigstop): Use lwpid_of.  Adjust to linux_wait_for_event
-	interface changes.  In non-stop mode, don't switch to a random
-	thread.
-	(linux_resume_one_lwp): Use lwpid_of.
-	(linux_continue_one_thread, linux_queue_one_thread): Merge into ...
-	(linux_resume_one_thread): ... this.  Handle resume_stop.  In
-	non-stop mode, don't look for pending flag in all threads.
-	(resume_status_pending_p): Don't consider explicitly suspended
-	threads.
-	(my_waitpid): Reimplement.  Emulate __WALL.
-	(linux_request_interrupt, linux_read_offsets, linux_xfer_siginfo):
-	Use lwpid_of.
-	(sigchld_handler, linux_supports_non_stop, linux_async)
-	(linux_start_non_stop): New.
-	(linux_target_ops): Register linux_supports_non_stop, linux_async
-	and linux_start_non_stop.
-	(initialize_low): Install SIGCHLD handler.
-	* thread-db.c (thread_db_create_event, find_one_thread)
-	(thread_db_get_tls_address): Use lwpid_of.
-	* win32-low.c (win32_detach): Adjust to use resume_kind.
-	(win32_wait): Add `options' argument.
-	* spu-low.c (spu_resume): Adjust to use resume_kind.
-	(spu_wait): Add `options' argument.
-
-2009-04-01  Pedro Alves  <pedro@codesourcery.com>
-
-	Decouple target code from remote protocol.
-
-	* target.h (enum target_waitkind): New.
-	(struct target_waitstatus): New.
-	(struct target_ops) <wait>: Return an unsigned long.  Take a
-	target_waitstatus pointer instead of a char pointer.
-	(mywait): Likewise.
-	* target.c (mywait): Change prototype to return an unsigned long.
-	Take a target_waitstatus pointer instead of a char pointer.  Adjust.
-	* server.h (thread_from_wait, old_thread_from_wait): Delete
-	declarations.
-	(prepare_resume_reply): Change prototype to take a
-	target_waitstatus.
-	* server.c (thread_from_wait, old_thread_from_wait): Delete.
-	(last_status, last_ptid): New.
-	(start_inferior): Remove "statusptr" argument.  Adjust.  Return a
-	pid instead of a signal.
-	(attach_inferior): Remove "status" and "signal" parameters.
-	Adjust.
-	(handle_query): For qGetTLSAddr, parse the thread id with strtol,
-	not as an address.
-	(handle_v_cont, handle_v_attach, handle_v_run, handle_v_kill)
-	(handle_v_requests, myresume): Remove "status" and "signal"
-	parameters.  Adjust.
-	(handle_status): New.
-	(main): Delete local `status'.  Adjust.
-	* remote-utils.c: Include target.h.
-	(prepare_resume_reply): Change prototype to take a
-	target_waitstatus.  Adjust.
-
-	* linux-low.c (linux_wait): Adjust to new target_ops->wait
-	interface.
-	* spu-low.c (spu_wait): Adjust.
-	* win32-low.c (enum target_waitkind, struct target_waitstatus):
-	Delete.
-	(win32_wait): Adjust.
-
-2009-04-01  Pedro Alves  <pedro@codesourcery.com>
-
-	* target.h (struct thread_resume): Delete leave_stopped member.
-	(struct target_ops): Add a `n' argument to the `resume' callback.
-	* server.c (start_inferior): Adjust.
-	(handle_v_cont, myresume): Adjust.
-	* linux-low.c (check_removed_breakpoint): Adjust to resume
-	interface change, and to removed leave_stopped field.
-	(resume_ptr): Delete.
-	(struct thread_resume_array): New.
-	(linux_set_resume_request): Add new `arg' parameter.  Adjust to
-	resume interface change.
-	(linux_continue_one_thread, linux_queue_one_thread)
-	(resume_status_pending_p): Check if the resume field is NULL
-	instead of checking the leave_stopped member.
-	(linux_resume): Adjust to the target resume interface change.
-	* spu-low.c (spu_resume): Adjust to the target resume interface
-	change.
-	* win32-low.c (win32_detach, win32_resume): Ditto.
-
-2009-04-01  Pedro Alves  <pedro@codesourcery.com>
-
-	* linux-low.c (linux_wait_for_event): Don't clear the `stepping'
-	flag.
-	(wait_for_sigstop): Don't leave a finished single-step SIGTRAP
-	pending.
-	(linux_continue_one_thread): Only preserve the stepping flag if
-	there's a pending breakpoint.
-
-2009-03-31  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (main): After the inferior having exited, call
-	remote_close before exiting gdbserver.
-
-2009-03-25  Thiago Jung Bauermann  <bauerman@br.ibm.com>
-
-	Fix size of FPSCR in Power 7 processors.
-	* linux-ppc-low.c (PPC_FEATURE_ARCH_2_05): Remove #define.
-	(PPC_FEATURE_HAS_DFP): New #define.
-	(ppc_arch_setup): Check for DFP feature instead of ISA 2.05 to decide on
-	size of the FPSCR.
-
-2009-03-23  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (handle_query) Whitespace and formatting.
-
-2009-03-22  Pedro Alves  <pedro@codesourcery.com>
-
-	* i387-fp.c, linux-arm-low.c, linux-cris-low.c,
-	linux-crisv32-low.c, linux-i386-low.c, linux-low.c,
-	linux-mips-low.c, linux-s390-low.c, linux-sparc-low.c,
-	linux-x86-64-low.c, linux-xtensa-low.c, proc-service.c,
-	regcache.c, remote-utils.c, server.c, spu-low.c, target.h,
-	thread-db.c, win32-low.c, xtensa-xtregs.c, gdbreplay.c,
-	Makefile.in, configure.ac: Fix whitespace throughout.
-	* configure: Regenerate.
-
-2009-03-22  Pedro Alves  <pedro@codesourcery.com>
-
-	* inferiors.c (find_inferior): Make it safe for the callback
-	function to delete the currently iterated inferior.
-
-2009-03-22  Pedro Alves  <pedro@codesourcery.com>
-
-	* Makefile.in (linuw_low_h): Move higher.
-	(thread-db.o): Depend on $(linux_low_h).
-
-2009-03-17  Pedro Alves  <pedro@codesourcery.com>
-
-	Rename "process" to "lwp" throughout.
-
-	* linux-low.c (all_processes): Rename to...
-	(all_lwps): ... this.
-	(inferior_pid, handle_extended_wait, get_stop_pc): Adjust.
-	(add_process): Rename to ...
-	(add_lwp): ... this.  Adjust.
-	(linux_create_inferior): Adjust.
-	(linux_attach_lwp): Adjust.
-	(linux_attach): Adjust.
-	(linux_kill_one_process): Rename to ...
-	(linux_kill_one_lwp): ... this.  Adjust.
-	(linux_kill): Adjust.
-	(linux_detach_one_process): Rename to ...
-	(linux_detach_one_lwp): ... this.  Adjust.
-	(linux_detach): Adjust.
-	(check_removed_breakpoint): Adjust.
-	(status_pending_p): Adjust.
-	(linux_wait_for_process): Rename to ...
-	(linux_wait_for_lwp): ... this.  Adjust.
-	(linux_wait_for_event): Adjust.
-	(send_sigstop): Adjust.
-	(wait_for_sigstop): Adjust.
-	(stop_all_processes): Rename to ...
-	(stop_all_lwps): ... this.
-	(linux_resume_one_process): Rename to ...
-	(linux_resume_one_lwp): ... this.  Adjust.
-	(linux_set_resume_request, linux_continue_one_thread)
-	(linux_queue_one_thread, resume_status_pending_p)
-	(usr_store_inferior_registers, regsets_store_inferior_registers)
-	(linux_request_interrupt, linux_read_offsets, linux_xfer_siginfo):
-	Adjust.
-	* linux-low.h (get_process): Rename to ...
-	(get_lwp): ... this.  Adjust.
-	(get_thread_process): Rename to ...
-	(get_thread_lwp): ... this.  Adjust.
-	(get_process_thread): Rename to ...
-	(get_lwp_thread): ... this.  Adjust.
-	(struct process_info): Rename to ...
-	(struct lwp_info): ... this.
-	(all_processes): Rename to ...
-	(all_lwps): ... this.
-	* proc-service.c (ps_lgetregs): Adjust.
-	* thread-db.c (thread_db_create_event, find_one_thread)
-	(maybe_attach_thread, thread_db_get_tls_address): Adjust.
-
-2009-03-14  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (handle_query): Handle "qAttached".
-
-2009-03-13  Nathan Sidwell  <nathan@codesourcery.com>
-
-	* Makefile.in, hostio-errno.c, errno.c, xtensa-xtregs.c: Change to
-	GPLv3, update license URL.
-
-2009-03-01  Doug Evans  <dje@google.com>
-
-	* Makefile.in (INCLUDE_CFLAGS): Add -I$(srcdir)/../common.
-	(server_h): Add gdb_signals.h.
-	(signals.o): Update.
-	* server.h (target_signal_from_host,target_signal_to_host_p)
-	(target_signal_to_host,target_signal_to_name): Moved to gdb_signals.h.
-
-2009-02-14  Pierre Muller  <muller@ics.u-strasbg.fr>
-
-	* remote-utils.c (getpkt): Also generate remote-debug
-	information if noack_mode is set.
-
-2009-02-06  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (handle_query): Report qXfer:siginfo:read and
-	qXfer:siginfo:write as supported and handle them.
-	* target.h (struct target_ops) <qxfer_siginfo>: New field.
-	* linux-low.c (linux_xfer_siginfo): New.
-	(linux_target_ops): Set it.
-
-2009-01-26  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (gdbserver_usage): Mention --remote-debug.
-	(main): Accept '--remote-debug' switch.
-
-2009-01-18  Doug Evans  <dje@google.com>
-
-	* regcache.c (new_register_cache): No need to check result of xcalloc.
-	* server.c (handle_search_memory): Back out calls to xmalloc,
-	result is checked and error is returned to user upon failure.
-	(handle_query): Ditto.  Add more checks for result of malloc.
-	(handle_v_cont): Check result of malloc, report error back to
-	user upon failure.
-	(handle_v_run): Ditto.  Call freeargv.
-	* server.h (freeargv): Declare.
-	* utils.c (freeargv): New fn.
-
-2009-01-15  Doug Evans  <dje@google.com>
-
-	* gdbreplay.c (perror_with_name): Make arg const char *.
-	* server.h (target_signal_to_name): Make return type const char *.
-	* thread-db.c (thread_db_err_str): Make return type const char *.
-	* utils.c (perror_with_name): Make arg const char *.
-
-2009-01-14  Pedro Alves  <pedro@codesourcery.com>
-
-	* win32-low.c (get_child_debug_event): Issue a final DBG_CONTINUE
-	when handling a EXIT_PROCESS_DEBUG_EVENT.
-
-2009-01-06  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbreplay.c (gdbreplay_version): Update copyright year.
-	* server.c (gdbserver_version): Likewise.
-
-2009-01-05  Doug Evans  <dje@google.com>
-
-	* linux-low.c (linux_attach_lwp): Add some comments/fixmes.
-	(handle_extended_wait): Improve comment.
-
-2008-12-13  Doug Evans  <dje@google.com>
-
-	* utils.c (xmalloc,xcalloc,xstrdup): New fns.
-	* server.h (ATTR_MALLOC): New macro.
-	(xmalloc,xcalloc,xstrdup): Declare.
-	* hostio.c: Replace malloc,calloc,strdup with xmalloc,xcalloc,xstrdup.
-	* inferiors.c: Ditto.
-	* linux-low.c: Ditto.
-	* mem-break.c: Ditto.
-	* regcache.c: Ditto.
-	* remote-utils.c: Ditto.
-	* server.c: Ditto.
-	* target.c: Ditto.
-	* win32-low.c: Ditto.
-
-2008-12-12  Doug Evans  <dje@google.com>
-
-	* linux-low.c (linux_wait_for_process): Don't clobber current_inferior
-	in debugging printf.
-
-	* linux-low.c (handle_extended_wait): Simplify, use my_waitpid.
-
-2008-12-09  Doug Evans  <dje@google.com>
-
-	* linux-low.h (struct process_info): Delete member tid, unused.
-	* thread-db.c (find_one_thread): Update.
-	(maybe_attach_thread): Update.
-
-2008-12-02  Pedro Alves  <pedro@codesourcery.com>
-
-	* target.h (struct target_ops): Add qxfer_osdata member.
-	* linux-low.c: Include ctype.h and pwd.h and sys/types.h
-	and dirent.h.
-	(linux_qxfer_osdata): New functions.
-	(linux_target_ops): Register linux_qxfer_osdata as qxfer_osdata
-	callback.
-	* server.c (handle_query): Handle "qXfer:osdata:read:".
-	* remote-utils.c (buffer_grow, buffer_free, buffer_init, buffer_finish)
-	(buffer_xml_printf): New functions.
-	* server.h (struct buffer): New.
-	(buffer_grow_str, buffer_grow_str0): New macros.
-	(buffer_grow, buffer_free, buffer_init, buffer_finish)
-	(buffer_xml_printf): Declare.
-
-2008-11-24  Doug Evans  <dje@google.com>
-
-	* Makefile.in (VERSION,DIST,LINT,LINTFLAGS): Delete, unused.
-
-2008-11-24  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (handle_v_run): Always use the supplied argument list.
-
-2008-11-19  Bob Wilson  <bob.wilson@acm.org>
-
-	* xtensa-xtregs.c (XTENSA_ELF_XTREG_SIZE): Change to 4.
-	(xtensa_regmap_table): Add entry for scompare1.
-
-2008-11-18  Thiago Jung Bauermann  <bauerman@br.ibm.com>
-
-	* Makefile.in (powerpc-isa205-32l.o, powerpc-isa205-32l.c,
-	powerpc-isa205-altivec32l.o, powerpc-isa205-altivec32l.c,
-	powerpc-isa205-vsx32l.o, powerpc-isa205-vsx32l.c,
-	powerpc-isa205-64l.o, powerpc-isa205-64l.c,
-	powerpc-isa205-altivec64l.o, powerpc-isa205-altivec64l.c,
-	powerpc-isa205-vsx64l.o, powerpc-isa205-vsx64l.c): New targets.
-	* configure.srv (powerpc*-*-linux*): Add ISA 2.05 object files and
-	XML target descriptions.
-	* linux-ppc-low.c (ppc_arch_setup): Init registers with 64-bit FPSCR
-	when inferior is running on an ISA 2.05 or later processor.  Add
-	special case to return offset for full 64-bit slot of FPSCR when
-	in 32-bits.
-
-2008-11-14  Daniel Gutson  <dgutson@codesourcery.com>
-
-	* Makefile.in (SFILES, clean): Added sparc64 files.
-	(reg-sparc64.o, reg-sparc64.c): New.
-	* configure.srv (sparc*-*-linux*): New configuration.
-	* linux-low.c (regsets_fetch_inferior_registers): Swap ptrace
-	syscall arguments for SPARC.
-	(regsets_store_inferior_registers): Likewise.
-	* linux-sparc-low.c: New file.
-
-2008-10-21  Doug Evans  <dje@google.com>
-
-	* Makefile.in (BFD_DIR,BFD,BFD_SRC,BFD_CFLAGS): Delete.
-	(READLINE_DIR,READLINE_DEP): Delete.
-	(INTERNAL_CFLAGS): Update.
-	(LINTFLAGS): Update.
-
-2008-10-10  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (handle_v_run): If GDB didn't specify an argv, use the
-	whole argv from the last run, not just argv[0].
-
-2008-09-08  Pedro Alves  <pedro@codesourcery.com>
-
-	* regcache.c (new_register_cache): Return NULL if the register
-	cache size isn't known yet.
-	(free_register_cache): Avoid dereferencing a NULL regcache.
-
-2008-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* configure.srv: Merge MIPS and MIPS64.
-
-2008-08-24  Maciej W. Rozycki  <macro@linux-mips.org>
-
-	* Makefile.in (uninstall): Apply $(EXEEXT) too.
-
-2008-08-18  Luis Machado  <luisgpm@br.ibm.com>
-
-	* Makefile.in: Add required vsx dependencies.
-
-	* linux-ppc-low: Define PPC_FEATURE_HAS_VSX.
-	Declare init_registers_powerpc_vsx32l.
-	Declare init_registers_powerpc_vsx64l.
-	Define PTRACE_GETVSXREGS and PTRACE_SETVSXREGS.
-	(ppc_arch_setup): Check for VSX in hwcap.
-	(ppc_fill_vsxregset): New function.
-	(ppc_store_vsxregset): New function.
-	Add new VSX entry in regset_info target_regsets.
-
-	* configure.srv: Add new VSX dependencies.
-
-2008-08-12  Pedro Alves  <pedro@codesourcery.com>
-
-	* remote-utils.c (noack_mode, transport_is_reliable): New globals.
-	(remote_open): Set or clear transport_is_reliable.
-	(putpkt_binary): Don't expect acks in noack mode.
-	(getpkt): Don't send ack/nac in noack mode.
-	* server.c (handle_general_set): Handle QStartNoAckMode.
-	(handle_query): If connected by tcp pass QStartNoAckMode+ in
-	qSupported.
-	(main): Reset noack_mode on every connection.
-	* server.h (noack_mode): Declare.
-
-2008-08-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
-
-	* Makefile.in (GDBREPLAY_OBS): New variable.
-	(gdbreplay$(EXEEXT)): Use it to avoid unportable $^.
-
-2008-08-05  Ulrich Weigand  <uweigand@de.ibm.com>
-	    Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_resume_one_process): Ignore ESRCH.
-	(usr_store_inferior_registers): Likewise.
-	(regsets_store_inferior_registers): Likewise.
-
-2008-07-31  Rolf Jansen  <rj@surtec.com>
-	    Pedro Alves  <pedro@codesourcery.com>
-
-	* configure.ac: Check for memmem declaration.
-	* server.c [HAVE_MALLOC_H]: Include malloc.h.
-	(disable_packet_vCont, disable_packet_Tthread, disable_packet_qC)
-	(disable_packet_qfThreadInfo): Unconditionally compile.
-	* server.h [!HAVE_DECL_MEMMEM]: Declare memmem.
-	* configure, config.in: Regenerate.
-
-2008-07-28  Doug Kwan  <dougkwan@google.com>
-
-	* linux-low.c (sys/dir.h, sys/user.h): Remove includes.
-	(linux_write_memory): Remove declaration of errno.
-
-2008-07-12  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* linux-low.c (handle_extended_wait): Do not use "status"
-	variable uninitialized.
-
-2008-07-07  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (handle_v_attach): Inhibit reporting dll changes.
-
-2008-06-27  Pedro Alves  <pedro@codesourcery.com>
-
-	* remote-utils.c (prepare_resume_reply): If requested, don't
-	output "thread:TID" in the T stop reply.
-
-	* server.c (disable_packet_vCont, disable_packet_Tthread)
-	(disable_packet_qC, disable_packet_qfThreadInfo): New globals.
-	(handle_query): If requested, disable support for qC, qfThreadInfo
-	and qsThreadInfo.
-	(handle_v_requests): If requested, disable support for vCont.
-	(gdbserver_show_disableable): New.
-	(main): Handle --disable-packet and --disable-packet=LIST.
-
-	* server.h (disable_packet_vCont, disable_packet_Tthread)
-	(disable_packet_qC, disable_packet_qfThreadInfo): Declare.
-
-2008-06-20  Carlos O'Donell  <carlos@codesourcery.com>
-
-	* server.c (gdbserver_usage): Mention --version.
-
-2008-06-06  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (gdbreplay.o): New rule.
-
-2008-06-06  Joseph Myers  <joseph@codesourcery.com>
-
-	* gdbreplay.c (gdbreplay_version): Say gdbreplay in version
-	message, not gdbserver.
-
-2008-06-05  Vladimir Prus  <vladimir@codesourcery.com>
-	    Nathan Sidwell  <nathan@codesourcery.com>
-	    Joseph Myers  <joseph@codesourcery.com>
-
-	* acinclude.m4: Include ../../config/acx.m4.
-	* configure.ac: Use ACX_PKGVERSION and ACX_BUGURL.
-	* configure, config.in: Regenerate.
-	* Makefile.in (gdbreplay$(EXEEXT)): Add version.o.
-	* server.c (gdbserver_version): Print PKGVERSION.
-	(gdbsrever_usage): Add stream parameter.  Print REPORT_BUGS_TO.
-	(main): Adjust gdbserver_usage calls.
-	* gdbreplay.c (version, host_name): Add declarations.
-	(gdbreplay_version, gdbreplay_usage): New.
-	(main): Accept --version and --help options.
-
-2008-06-04  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-arm-low.c (thumb_breakpoint, thumb_breakpoint_len): New.
-	(arm_breakpoint_at): Handle Thumb.
-	(the_low_target): Add comment.
-
-2008-05-29  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* linux-ppc-low.c (ppc_collect_ptrace_register): Clear buffer.
-
-2008-05-09  Doug Evans  <dje@google.com>
-
-	* server.h (decode_search_memory_packet): Declare.
-	* remote-utils.c (decode_search_memory_packet): New fn.
-	* server.c (handle_search_memory_1): New fn.
-	(handle_search_memory): New fn.
-	(handle_query): Process qSearch:memory packets.
-
-2008-05-08  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* regcache.c (registers_length): Remove.
-	(set_register_cache): Verify that PBUFSIZ is large enough to hold a
-	full register packet.
-	* regcache.h (registers_length): Remove prototype.
-	* server.h (PBUFSIZ): Define to 16384.
-
-2008-05-03  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* configure.srv (powerpc*-*-linux*): Set srv_regobj to
-	powerpc-32l.o, powerpc-altivec32l.o, powerpc-e500l.o,
-	powerpc-64l.o, and powerpc-altivec64l.o.
-	Remove rs6000/powerpc-32.xml, rs6000/powerpc-64.xml, and
-	rs6000/powerpc-e500.xml; add rs6000/powerpc-32l.xml,
-	rs6000/powerpc-altivec32l.xml, rs6000/powerpc-e500l.xml,
-	rs6000/powerpc-64l.xml, rs6000/powerpc-altivec64l.xml,
-	rs6000/power-linux.xml, and rs6000/power64-linux.xml
-	to srv_xmlfiles.
-
-	* Makefile.in (reg-ppc.o, reg-ppc.c): Remove, replace by ...
-	(powerpc-32l.o, powerpc-32l.c): ... these new rules.
-	(powerpc-32.o, powerpc-32.c): Remove, replace by ...
-	(powerpc-altivec32l.o, powerpc-altivec32l.c): ... these new rules.
-	(powerpc-e500.o, powerpc-e500.c): Remove, replace by ...
-	(powerpc-e500l.o, powerpc-e500l.c): ... these new rules.
-	(reg-ppc64.o, reg-ppc64.c): Remove, replace by ...
-	(powerpc-64l.o, powerpc-64l.c): ... these new rules.
-	(powerpc-64.o, powerpc-64.c): Remove, replace by ...
-	(powerpc-altivec64l.o, powerpc-altivec64l.c): ... these new rules.
-	(clean): Update.
-
-	* linux-ppc-low.c (init_registers_ppc): Remove, replace by ...
-	(init_registers_powerpc_32l): ... this new prototype.
-	(init_registers_powerpc_32): Remove, replace by ...
-	(init_registers_powerpc_altivec32l): ... this new prototype.
-	(init_registers_powerpc_e500): Remove, replace by ...
-	(init_registers_powerpc_e500l): ... this new prototype.
-	(init_registers_ppc64): Remove, replace by ...
-	(init_registers_powerpc_64l): ... this new prototype.
-	(init_registers_powerpc_64): Remove, replace by ...
-	(init_registers_powerpc_altivec64l): ... this new prototype.
-	(ppc_num_regs): Set to 73.
-	(PT_ORIG_R3, PT_TRAP): Define if necessary.
-	(ppc_regmap, ppc_regmap_e500): Add values for orig_r3 and trap.
-	(ppc_cannot_store_register): Handle orig_r3 and trap.
-	(ppc_arch_setup): Update init_registers_... calls.
-	(ppc_fill_gregset): Handle orig_r3 and trap.
-
-	* inferiors.c (clear_inferiors): Reset current_inferior.
-
-2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
-
-	* acinclude.m4: Add override.m4.
-	* configure: Regenerate.
-
-2008-04-21  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* linux-ppc-low.c (ppc_arch_setup): Reset ppc_hwcap after the
-	initial call to init_register_ppc64.
-
-2008-04-21  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* configure.srv (powerpc64-*-linux*, powerpc-*-linux*): Merge into
-	single powerpc*-*-linux* case.
-	(s390-*-linux*, s390x-*-linux*): Merge into single s390*-*-linux* case.
-
-2008-04-17  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* configure.srv [powerpc64-*-linux*]: Remove powerpc-e500.o from
-	srv_regobj.  Remove rs6000/powerpc-e500.xml and rs6000/power-spe.xml
-	from reg_xmlfiles.
-	* linux-ppc-low.c: Include <elf.h>.
-	(PPC_FEATURE_HAS_ALTIVEC, PPC_FEATURE_HAS_SPE): Define.
-	(ppc_hwcap): New global variable.
-	(ppc_regmap): Remove __SPE__ #ifdef sections.
-	(ppc_regmap_e500): New global variable.
-	(ppc_cannot_store_register): Update __SPE__ special case.
-	(ppc_get_hwcap): New function.
-	(ppc_arch_setup): Use it to determine whether inferior supports
-	AltiVec or SPE registers.  Set the_low_target.regmap if appropriate.
-	(ppc_fill_vrregset, ppc_store_vrregset): Define unconditionally.
-	Do not access registers if target does not support AltiVec.
-	(ppc_fill_evrregset, ppc_store_evrregset): Define unconditionally.
-	Do not access registers if target does not support SPE.
-	(target_regsets): Unconditionally include AltiVec and SPE regsets.
-
-2008-04-17  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (disabled_regsets, num_regsets): New.
-	(use_regsets_p): Delete.
-	(linux_wait_for_process): Clear disabled_regsets.
-	(regsets_fetch_inferior_registers): Check and set it.
-	(regsets_store_inferior_registers): Likewise.
-	(linux_fetch_registers, linux_store_registers): Do not use
-	use_regsets_p.
-	(initialize_low): Allocate disabled_regsets.
-
-2008-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (LIBOBJS): New.
-	(OBS): Use LIBOBJS.
-	(memmem.o): New rule.
-	* configure.ac: Use AC_CONFIG_LIBOBJ_DIR and check for memmem.
-	* configure: Regenerated.
-
-2008-04-04  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* server.c (handle_query): Never return "unsupported" for
-	qXfer:features:read queries.
-
-2008-03-27  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* server.c (get_features_xml): Fix inverted condition.
-	(handle_query): Always support qXfer:feature:read.
-
-2008-03-10  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (wrapper_argv): New.
-	(start_inferior): Handle wrapper_argv.  If set, expect an extra
-	trap.
-	(gdbserver_usage): Document --wrapper.
-	(main): Parse --wrapper.
-
-2008-02-28  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* configure.srv [powerpc64-*-linux*]: Add all files mentioned for
-	powerpc-*-linux* to srv_regobj and reg_xmlfiles.
-	* linux-ppc-low.c (ppc_get_pc): Support bi-arch operation.
-	(ppc_set_pc): Likewise.
-	(ppc_arch_setup): New function.
-	(ppc_fill_gregset): Call ppc_collect_ptrace_register instead
-	of collect_register.
-	(the_low_target): Use ppc_arch_setup as arch_setup initializer.
-
-2008-02-28  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* configure.srv [powerpc64-*-linux*]: Use linux-ppc-low.o
-	instead of linux-ppc64-low.o.
-	* linux-ppc64-low.c: Remove file.
-	* Makefile.in (SFILES): Remove linux-ppc64-low.c.
-	(linux-ppc64-low.o): Remove rule.
-
-	* linux-ppc-low.c (init_registers_ppc64): Add prototype.
-	(init_registers_powerpc_64): Likewise.
-	(ppc_regmap): Conditionally define depending on __powerpc64__.
-	(ppc_cannot_store_register): Do not special-case "fpscr" when
-	compiled on __powerpc64__.
-	(ppc_collect_ptrace_register): New function.
-	(ppc_supply_ptrace_register): New function.
-	(ppc_breakpoint): Change type to "unsigned int".
-	(ppc_breakpoint_at): Change type of "insn" to "unsigned int".
-	(the_low_target): Conditionally provide initializers for the
-	arch_setup member depending on __powerpc64__.  Install
-	collect_ptrace_register and supply_ptrace_register members.
-
-2008-02-28  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* regcache.h (gdbserver_xmltarget): Add extern declaration.
-	* server.c (gdbserver_xmltarget): Define.
-	(get_features_xml): Use it to replace "target.xml" and arch_string.
-
-	* configure.srv: Remove srv_xmltarget.  Add XML files that were
-	mentioned there to srv_xmlfiles instead.  Remove conditional tests
-	on gdb_cv_arm_iwmmxt, gdb_cv_ppc_altivec, gdb_cv_ppc_spe; set
-	srv_xmlfiles and srv_regobj to include all possible choices.
-	* configure.ac (srv_xmltarget): Remove.
-	(srv_xmlfiles): Do not add "target.xml".
-	(gdb_cv_arm_iwmmxt, gdb_cv_ppc_altivec, gdb_cv_ppc_spe): Remove
-	checks for supplementary target information.
-	* configure: Regenerate.
-	* Makefile.in (XML_TARGET): Remove.
-	(target.xml): Remove rule.
-	(clean): Do not clean up target.xml.
-	(.PRECIOUS): Do not mention target.xml.
-
-	* target.h (struct target_ops): Remove arch_string member.
-	* linux-low.c (linux_arch_string): Remove.
-	(linux_target_ops): Remove arch_string initializer.
-	* linux-low.h (struct linux_target_ops): Remove arch_string member.
-	* linux-i386-low.c (the_low_target): Remove arch_string initializer.
-	* linux-x86-64-low.c (the_low_target): Remove arch_string initializer.
-	* spu-low.c (spu_arch_string): Remove.
-	(spu_target_ops): Remove arch_string initializer.
-	* win32-low.c (win32_arch_string): Remove.
-	(win32_target_ops): Remove arch_string initializer.
-	* win32-low.h (struct win32_target_ops): Remove arch_string member.
-	* win32-arm-low.c (the_low_target): Remove arch_string initializer.
-	* win32-i368-low.c (the_low_target): Remove arch_string initializer.
-
-2008-02-27  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* linux-low.h (struct linux_target_ops): Replace left_pad_xfer field
-	by collect_ptrace_register and supply_ptrace_register hooks.
-	* linux-low.c (fetch_register): Use supply_ptrace_register callback
-	instead of checking for the_low_target.left_pad_xfer.
-	(usr_store_inferior_registers): Use collect_ptrace_register callback
-	instead of checking for the_low_target.left_pad_xfer.
-
-	* linux-s390-low.c (s390_collect_ptrace_register): New function.
-	(s390_supply_ptrace_register): Likewise.
-	(s390_fill_gregset): Call s390_collect_ptrace_register.
-	(the_low_target): Update.
-
-	* linux-ppc64-low.c (ppc_collect_ptrace_register): New function.
-	(ppc_supply_ptrace_register): Likewise.
-	(the_low_target): Update.
-
-	* linux-i386-low.c (the_low_target): Update.
-	* linux-x86-64-low.c (the_low_target): Update.
-
-2008-02-27  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* configure.srv [s390x-*-linux*]: Set srv_regobj to include both
-	reg-s390.o and reg-s390x.o.
-
-	* linux-low.c (new_inferior): New global variable.
-	(linux_create_inferior, linux_attach): Set it.
-	(linux_wait_for_process): Call the_low_target.arch_setup after the
-	target has stopped for the first time.
-	(initialize_low): Do not call the_low_target.arch_setup.
-
-	* linux-s390-low.c (s390_get_pc): Support bi-arch operation.
-	(s390_set_pc): Likewise.
-	(s390_arch_setup): New function.
-	(the_low_target): Use s390_arch_setup as arch_setup routine.
-
-	* regcache.c (realloc_register_cache): New function.
-	(set_register_cache): Call it for each existing regcache.
-
-2008-02-27  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* server.h (init_registers): Remove prototype.
-
-	* linux-low.h (struct linux_target_ops): Add arch_setup field.
-	* linux-low.c (initialize_low): Call the_low_target.arch_setup ()
-	instead of init_registers ().
-	* linux-arm-low.c (init_registers_arm): Add prototype.
-	(init_registers_arm_with_iwmmxt): Likewise.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-cris-low.c (init_registers_cris): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-crisv32-low.c (init_registers_crisv32): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-i386-low.c (init_registers_i386_linux): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-ia64-low.c (init_registers_ia64): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-m32r-low.c (init_registers_m32r): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-m68k-low.c (init_registers_m68k): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-mips-low.c (init_registers_mips_linux): Add prototype.
-	(init_registers_mips64_linux): Likewise.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-ppc-low.c (init_registers_ppc): Add prototype.
-	(init_registers_powerpc_32, init_registers_powerpc_e500): Likewise.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-ppc64-low.c (init_registers_ppc64): Add prototype.
-	(init_registers_powerpc_64): Likewise.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-s390-low.c (init_registers_s390): Add prototype.
-	(init_registers_s390x): Likewise.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-sh-low.c (init_registers_sh): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-x86-64-low.c (init_registers_x86_64_linux): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-	* linux-xtensa-low.c (init_registers_xtensa): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-
-	* win32-low.h (struct win32_target_ops): Add arch_setup field.
-	* win32-low.c (initialize_low): Call the_low_target.arch_setup ()
-	instead of init_registers ().
-	* win32-arm-low.c (init_registers_arm): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-	* win32-i386-low.c (init_registers_i386): Add prototype.
-	(the_low_target): Add initializer for arch_setup field.
-
-	* spu-low.c (init_registers_spu): Add prototype.
-	(initialize_low): Call initialie_registers_spu () instead of
-	initialize_registers ().
-
-2008-02-19  Pedro Alves  <pedro@codesourcery.com>
-
-	* server.c (handle_v_requests): When handling the vRun and vAttach
-	packets, if already debugging a process, don't kill it.  Return an
-	error instead.
-
-2008-02-17  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (handle_query): Correct length check.
-
-2008-02-14  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (do_initial_child_stuff): Add process handle
-	parameter.  Set current_process_handle and current_process_id from the
-	parameters. Clear globals.
-	(win32_create_inferior): Don't set current_process_handle and
-	current_process_id here.  Instead pass them on the call to
-	do_initial_child_stuff.
-	(win32_attach): Likewise.
-	(win32_clear_inferiors): New.
-	(win32_kill): Don't close the current process handle or the
-	current thread handle here.  Instead call win32_clear_inferiors.
-	(win32_detach): Don't open a new handle to the process.  Call
-	win32_clear_inferiors.
-	(win32_join): Don't rely on current_process_handle; open a new
-	handle using the process id.
-	(win32_wait): Call win32_clear_inferiors when the inferior process
-	has exited.
-
-2008-02-14  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (monitor_show_help): Add "exit".
-
-2008-02-11  Maxim Grigoriev  <maxim2405@gmail.com>
-
-	* Makefile.in (SFILES): Add linux-xtensa-low.c.
-	(clean): Add reg-xtensa.c.
-	(linux-xtensa-low.o, reg-xtensa.o, reg-xtensa.c): New dependencies.
-	* configure.srv (xtensa*-*-linux*) New target.
-	* linux-xtensa-low.c: New.
-	* xtensa-xtregs.c: New.
-
-2008-02-01  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* hostio.c: Don't include errno.h.
-	(errno_to_fileio_errno): Move to hostio-errno.
-	* hostio.c: (hostio_error): Remove the error parameter.  Defer the
-	error number outputting to the target->hostio_last_error callback.
-	(hostio_packet_error): Use FILEIO_EINVAL directly.
-	(handle_open, handle_pread, hostio_error, handle_unlink): Update
-	calls to hostio_error.
-	* hostio-errno.c: New.
-	* server.h (hostio_last_error_from_errno): Declare.
-	* target.h (target_ops): Add hostio_last_error member.
-	* linux-low.c (linux_target_op): Register hostio_last_error_from_errno
-	as hostio_last_error handler.
-	* spu-low.c (spu_target_ops): Likewise.
-	* win32-low.c [_WIN32_WCE] (win32_error_to_fileio_error)
-	(wince_hostio_last_error): New functions.
-	(win32_target_ops) [_WIN32_WCE]: Register wince_hostio_last_error
-	as hostio_last_error handler.
-	(win32_target_ops) [!_WIN32_WCE]: Register
-	hostio_last_error_from_errno as hostio_last_error handler.
-	* Makefile.in (SFILES): Add hostio.c and hostio-errno.c.
-	(hostio-errno.o): New rule.
-	* configure.ac (GDBSERVER_DEPFILES): Add $srv_hostio_err_objs.
-	* configure.srv (srv_hostio_err_objs): New variable.  Default to
-	hostio-errno.o.
-	(arm*-*-mingw32ce*): Set srv_hostio_err_objs to "".
-	* configure: Regenerate.
-
-2008-01-29  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_attach_lwp): Do not _exit after errors.
-	(linux_kill, linux_detach): Clean up the process list.
-	* remote-utils.c (remote_open): Improve port number parsing.
-	(putpkt_binary, input_interrupt): Only send interrupts if the target
-	is running.
-	* server.c (extended_protocol): Make static.
-	(attached): Define earlier.
-	(exit_requested, response_needed, program_argv): New variables.
-	(target_running): New.
-	(start_inferior): Clear attached here.
-	(attach_inferior): Set attached here.
-	(require_running): Define.
-	(handle_query): Use require_running and target_running.  Implement
-	"monitor exit".
-	(handle_v_attach, handle_v_run): New.
-	(handle_v_requests): Use require_running.  Handle vAttach and vRun.
-	(gdbserver_usage): Update.
-	(main): Redo argument parsing.  Handle --debug and --multi.  Handle
-	--attach along with other options or after the port.  Save
-	program_argv.  Support no initial program.  Resynchronize
-	communication with GDB after an error.  Handle "monitor exit".
-	Use require_running and target_running.  Always allow the extended
-	protocol.  Do not error out for Hc0 or Hc-1.  Do not automatically
-	restart in extended mode.
-	* README: Refer to the GDB manual.  Update --attach usage.
-
-2007-12-20  Andreas Schwab  <schwab@suse.de>
-
-	* linux-low.c (STACK_SIZE): Define.
-	(linux_tracefork_child): Use it.  Use __clone2 on ia64.
-	(linux_test_for_tracefork): Likewise.
-
-2007-12-18  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_wait_for_event): Update messages.  Do not
-	reinsert auto-delete breakpoints.
-	* mem-break.c (struct breakpoint): Change return type of handler to
-	int.
-	(set_breakpoint_at): Update handler type.
-	(reinsert_breakpoint_handler): Return 1 instead of calling
-	delete_breakpoint.
-	(reinsert_breakpoint_by_bp): Check for the original breakpoint before
-	setting a new one.
-	(check_breakpoints): Delete auto-delete breakpoints and return 2.
-	* mem-break.h (set_breakpoint_at): Update handler type.
-	* thread-db.c (thread_db_create_event, thread_db_create_event): Update.
-	* win32-low.c (auto_delete_breakpoint): New.
-	(get_child_debug_event): Use it.
-
-2007-12-16  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* configure.ac: Check for pread and pwrite.
-	* hostio.c (handle_pread): Fall back to lseek and read.
-	(handle_pwrite): Fall back to lseek and write.
-	* config.in, configure: Regenerated.
-
-2007-12-07  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (myresume): Add own_buf argument.
-	(main): Update calls.
-
-2007-12-06  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_wait, linux_resume): Do not handle async I/O.
-	* remote-utils.c (remote_open): Do not call disable_async_io.
-	(block_async_io): Delete.
-	(unblock_async_io): Make static.
-	(initialize_async_io): New.
-	* server.c (handle_v_cont): Handle async I/O here.
-	(myresume): Likewise.  Move other common resume tasks here...
-	(main): ... from here.  Call initialize_async_io.  Disable async
-	I/O before the main loop.
-	* server.h (initialize_async_io): Declare.
-	(block_async_io, unblock_async_io): Delete prototypes.
-	* spu-low.c (spu_resume, spu_wait): Do not handle async I/O here.
-
-2007-12-06  Mick Davis  <mickd@goanna.iinet.net.au>
-
-	* remote-utils.c (readchar): Allow binary data in received messages.
-
-2007-12-03  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (attaching): New global.
-	(win32_create_inferior): Clear the `attaching' global.
-	(win32_attach): Set the `attaching' global.
-	(get_child_debug_event) [_WIN32_WCE]: Stop the inferior when
-	attaching.  Only set a breakpoint at the entry point if not
-	attaching.
-
-2007-12-03  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* server.c (main): Don't report dll events on the initial
-	connection on attaches.
-
-2007-12-03  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* server.c (main): Relax numerical bases supported for the pid of
-	the --attach command line argument.
-
-2007-12-03  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (win32_attach): Call OpenProcess before
-	DebugActiveProcess, not after.  Add last error output to error
-	call.
-
-2007-12-03  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (win32_get_thread_context)
-	(win32_set_thread_context): New functions.
-	(thread_rec): Use win32_get_thread_context.
-	(continue_one_thread, win32_resume): Use win32_set_thread_context.
-	* win32-low.h (win32_thread_info) [_WIN32_WCE]: Add `base_context'
-	field.
-
-2007-12-03  Leo Zayas
-	    Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (soft_interrupt_requested, faked_breakpoint): New
-	global variables.
-	(child_add_thread): Minor cleanup.
-	(child_continue): Resume artificially suspended threads before
-	calling ContinueDebugEvent.
-	(suspend_one_thread): New.
-	(fake_breakpoint_event): New.
-	(get_child_debug_event): Change return type to int.  Check here if
-	gdb sent an interrupt request.  If a soft interrupt was requested,
-	fake a breakpoint event.  Return 0 if there is no event to handle,
-	and 1 otherwise.
-	(win32_wait): Don't check here if gdb sent an interrupt request.
-	Ensure there is a valid event to handle.
-	(win32_request_interrupt): Add soft interruption method as last
-	resort.
-
-2007-12-03  Leo Zayas
-	    Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.h (win32_thread_info): Add descriptions to the
-	structure members.  Replace `suspend_count' counter by a
-	`suspended' flag.
-	* win32-low.c (thread_rec): Update condition of when to get the
-	context from the inferior.  Rely on ContextFlags being set if it
-	has already been retrieved.  Only suspend the inferior thread if
-	we haven't already.  Warn if that fails.
-	(continue_one_thread): s/suspend_count/suspended/.  Only call
-	ResumeThread once.  Warn if that fails.
-
-2007-12-02  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (win32_wait): Don't read from the inferior when it
-	has already exited.
-
-2007-12-02  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* Makefile.in (win32_low_h): New variable.
-	(win32-low.o): Add dependency on $(win32_low_h).
-	(win32-arm-low.o, win32-i386-low.o): New rules.
-
-2007-11-30  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* hostio.c: Correct copyright year.
-
-2007-11-30  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (OBS): Add hostio.o.
-	(hostio.o): New rule.
-	* server.h (handle_vFile): Declare.
-	* hostio.c: New file.
-	* server.c (handle_v_requests): Take packet_len and new_packet_len
-	for binary packets.  Call handle_vFile.
-	(main): Update call to handle_v_requests.
-
-2007-11-05  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c: Include <sched.h>.
-
-2007-11-01  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_tracefork_grandchild): New.
-	(linux_tracefork_child): Use clone.
-	(linux_test_for_tracefork): Use clone; allocate and free a stack.
-
-2007-10-31  Joel Brobecker  <brobecker@adacore.com>
-
-	* Makefile.in: Use $(SHELL) instead of "sh" to call regdat.sh.
-
-2007-10-24  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (handle_extended_wait): Handle unexpected signals.
-
-2007-10-23  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* inferiors.c (change_inferior_id): Delete.
-	(add_pid_to_list, pull_pid_from_list): New.
-	* linux-low.c (PTRACE_SETOPTIONS, PTRACE_GETEVENTMSG)
-	(PTRACE_O_TRACESYSGOOD, PTRACE_O_TRACEFORK, PTRACE_O_TRACEVFORK)
-	(PTRACE_O_TRACECLONE, PTRACE_O_TRACEEXEC, PTRACE_O_TRACEVFORKDONE)
-	(PTRACE_O_TRACEEXIT, PTRACE_EVENT_FORK, PTRACE_EVENT_VFORK)
-	(PTRACE_EVENT_CLONE, PTRACE_EVENT_EXEC, PTRACE_EVENT_VFORK_DONE)
-	(PTRACE_EVENT_EXIT, __WALL): Provide default definitions.
-	(stopped_pids, thread_db_active, must_set_ptrace_flags): New variables.
-	(using_threads): Always set to 1.
-	(handle_extended_wait): New.
-	(add_process): Do not set TID.
-	(linux_create_inferior): Set must_set_ptrace_flags.
-	(linux_attach_lwp): Remove TID argument.  Do not check using_threads.
-	Use PTRACE_SETOPTIONS.  Call new_thread_notify.  Update all callers.
-	(linux_thread_alive): Rename TID argument to LWPID.
-	(linux_wait_for_process): Handle unknown processes.  Do not use TID.
-	(linux_wait_for_event): Do not use TID or check using_threads.  Update
-	call to dead_thread_notify.  Call handle_extended_wait.
-	(linux_create_inferior): Use PTRACE_SETOPTIONS.
-	(send_sigstop): Delete sigstop_sent.
-	(wait_for_sigstop): Avoid TID.
-	(linux_supports_tracefork_flag, linux_tracefork_child, my_waitpid)
-	(linux_test_for_tracefork): New.
-	(linux_lookup_signals): Use thread_db_active and
-	linux_supports_tracefork_flag.
-	(initialize_low): Use thread_db_active and linux_test_for_tracefork.
-	* linux-low.h (get_process_thread): Avoid TID.
-	(struct process_ifo): Move thread_known and tid to the end.  Remove
-	sigstop_sent.
-	(linux_attach_lwp, thread_db_init): Update prototypes.
-	* server.h (change_inferior_id): Delete prototype.
-	(add_pid_to_list, pull_pid_from_list): New prototypes.
-	* thread-db.c (thread_db_use_events): New.
-	(find_first_thread): Rename to...
-	(find_one_thread): ...this.  Update callers and messages.  Do not
-	call fatal.  Check thread_db_use_events.  Do not call
-	change_inferior_id or new_thread_notify.
-	(maybe_attach_thread): Update.  Do not call new_thread_notify.
-	(thread_db_init): Set thread_db_use_events.  Check use_events.
-	* utils.c (fatal, warning): Correct message prefix.
-
-2007-10-15  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (clean): Remove new files.
-	(powerpc-32.o, powerpc-32.c, powerpc-e500.o, powerpc-e500.c)
-	(powerpc-64.o, powerpc-64.c): New rules.
-	* configure.srv: Use alternate register sets for powerpc64-*-linux*
-	with AltiVec, powerpc-*-linux* with AltiVec, and powerpc-*-linux*
-	with SPE.
-	* linux-ppc-low.c (ppc_regmap): Do not fetch the FP registers for
-	SPE targets.
-	(ppc_cannot_store_register): Do not check for FPSCR for SPE targets.
-	(PTRACE_GETVRREGS, PTRACE_SETVRREGS, SIZEOF_VRREGS, ppc_fill_vrregset)
-	(ppc_store_vrregset, PTRACE_GETEVRREGS, PTRACE_SETEVRREGS)
-	(struct gdb_evrregset_t, ppc_fill_evrregset, ppc_store_evrregset): New.
-	(target_regsets): Add AltiVec and SPE register sets.
-	* configure.ac: Check for AltiVec and SPE.
-	* linux-ppc64-low.c (PTRACE_GETVRREGS, PTRACE_SETVRREGS, SIZEOF_VRREGS)
-	(ppc_fill_vrregset, ppc_store_vrregset): New.
-	(target_regsets): Add AltiVec register set.
-	* configure: Regenerated.
-
-2007-09-19  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (O_LARGEFILE): Define.
-	(linux_read_memory): Use /proc/PID/mem.
-	* configure.ac: Use AC_GNU_SOURCE.  Check for pread64.
-	* configure, config.in: Regenerated.
-
-2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_wait_for_event): Do not pass signals while
-	single-stepping.
-
-2007-09-03  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (create_process): New.
-	(win32_create_inferior): Use create_process instead of
-	CreateProcess.  If create_process failed retry appending an ".exe"
-	suffix.  Store the GetLastError result immediatelly after
-	create_process calls and use it on the call to error.
-
-2007-09-03  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (handle_load_dll): Don't use toolhelp when waiting.
-
-2007-08-23  Joel Brobecker  <brobecker@adacore.com>
-
-	* configure.ac: Switch license to GPLv3.
-
-2007-08-01  Michael Snyder  <msnyder@access-company.com>
-
-	* remote-utils.c (putpkt_binary): Memory leak, free buf2.
-
-2007-07-31  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (winapi_CloseToolhelp32Snapshot) [_WIN32_WCE]: New
-	typedef.
-	(win32_CloseToolhelp32Snapshot) [_WIN32_WCE]: New global var.
-	(load_toolhelp) [_WIN32_WCE]: Load TOOLHELP.DLL.  Get
-	CloseToolhelp32Snapshot.
-	(toolhelp_get_dll_name) [_WIN32_WCE]: Close the snapshot with
-	CloseToolhelp32Snapshot.
-
-2007-07-27  Michael Snyder  <michael.snyder@access-company.com>
-
-	* server.c (main): Check for inferior exit before main loop.
-
-2007-07-18  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* remote-utils.c (remote_open): Set SO_KEEPALIVE on remote_desc
-	instead of on tmp_desc.
-
-2007-07-17  Pedro Alves  <pedro_alves@portugalmail.pt>
-	    Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* inferiors.c (all_dlls, dlls_changed, get_dll): New.
-	(add_thread): Minor cleanups.
-	(clear_inferiors): Move lower in the file.  Clear the DLL
-	list.
-	(free_one_dll, match_dll, loaded_dll, unloaded_dll, clear_list): New.
-	* remote-utils.c (prepare_resume_reply): Check dlls_changed.
-	(xml_escape_text): New.
-	* server.c (handle_query): Handle qXfer:libraries:read.  Report it
-	for qSupported.
-	(handle_v_cont): Report errors.
-	(gdbserver_version): Update.
-	(main): Correct size of own_buf.  Do not report initial DLL events.
-	* server.h (struct dll_info, all_dlls, dlls_changed, loaded_dll)
-	(unloaded_dll, xml_escape_text): New.
-	* win32-low.c (enum target_waitkind): Update comments.
-	(win32_add_one_solib, get_image_name, winapi_EnumProcessModules)
-	(winapi_GetModuleInformation, winapi_GetModuleFileNameExA)
-	(win32_EnumProcessModules, win32_GetModuleInformation)
-	(win32_GetModuleFileNameExA, load_psapi, psapi_get_dll_name)
-	(winapi_CreateToolhelp32Snapshot, winapi_Module32First)
-	(winapi_Module32Next, win32_CreateToolhelp32Snapshot)
-	(win32_Module32First, win32_Module32Next, load_toolhelp)
-	(toolhelp_get_dll_name, handle_load_dll, handle_unload_dll): New.
-	(get_child_debug_event): Handle DLL events.
-	(win32_wait): Likewise.
-
-2007-07-12  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* configure.srv: Set srv_linux_regsets for sh*-*-linux*.
-	* linux-sh-low.c (sh_fill_gregset, target_regsets): New.
-
-2007-07-08  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (handle_output_debug_string): Ignore event if not
-	waiting.
-
-2007-07-08  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-arm-low.c (arm_wince_breakpoint): Fix typo.
-
-2007-07-03  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* remote-utils.c (look_up_one_symbol): Handle 'm' packets.
-
-2007-07-02  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* inferiors.c (change_inferior_id): Add comment.
-	* linux-low.c (check_removed_breakpoint): Add an early
-	prototype.  Improve debug output.
-	(linux_attach): Doc update.
-	(linux_detach_one_process, linux_detach): Clean up before releasing
-	each process.
-	(send_sigstop, wait_for_sigstop): Improve comments and debug output.
-	* linux-low.h (struct process_info): Doc improvement.
-	* mem-break.c (delete_all_breakpoints): New.
-	* mem-break.h (delete_all_breakpoints): New prototype.
-	* thread-db.c (find_first_thread): New.
-	(thread_db_create_event): Call it instead of
-	thread_db_find_new_threads.  Clean up unused variables.
-	(maybe_attach_thread): Remove first thread handling.
-	(thread_db_find_new_threads): Use find_first_thread.
-	(thread_db_get_tls_address): Likewise.
-
-2007-06-27  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* thread-db.c (thread_db_find_new_threads): Add prototype.
-	(thread_db_create_event): Check for the main thread before adding
-	a new thread.
-	(maybe_attach_thread): Only enable event reporting if TID == 0.
-	(thread_db_get_tls_address): Check for new threads.
-
-2007-06-20  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_create_inferior): Try execv before execvp.
-	* spu-low.c (spu_create_inferior): Likewise.
-
-2007-06-13  Mike Frysinger  <vapier@gentoo.org>
-
-	* linux-low.c (linux_create_inferior): Change execv to execvp.
-	* spu-low.c (spu_create_inferior): Likewies.
-
-2007-06-13  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (clean): Clean new files instead of deleted ones.
-	(reg-mips.o, reg-mips.c, reg-mips64.o, reg-mips64.c): Delete.
-	(mips-linux.o, mips-linux.c, mips64-linux.o, mips64-linux.c): New
-	rules.
-	* configure.srv: Specify XML files and new regformats for MIPS and
-	MIPS64 GNU/Linux.
-	* linux-mips-low.c (mips_num_regs): Set to only used registers.
-	(mips_regmap): Do not fetch $0.  Remove unused registers.  Add
-	an entry for the restart register.
-	(mips_cannot_fetch_register, mips_cannot_store_register)
-	(mips_reinsert_addr, mips_fill_fpregset, mips_store_fpregset): Update
-	register names to match the XML descriptions.
-	(mips_fill_gregset, mips_store_gregset): Likewise.  Handle the
-	restart register instead of $0.
-
-2007-06-12  Ulrich Weigand  <uweigand@de.ibm.com>
-	    Markus Deuling  <deuling@de.ibm.com>
-
-	* remote-utils.c (decode_xfer_write): New function.
-	* server.h (decode_xfer_write): Add prototype.
-	* server.c (handle_query): Add PACKET_LEN argument.  Support
-	qXfer:spu:read and qXfer:spu:write packets.
-	(main): Pass packet_len to handle_query.
-	* spu-low.c (spu_target_ops): Add spu_proc_xfer_spu.
-	* target.h (target_ops): Add qxfer_spu.
-
-2007-06-12  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* spu-low.c (spu_proc_xfer_spu): Do not return failure when
-	accessing non-seekable spufs files.
-
-2007-05-16  Markus Deuling  <deuling@de.ibm.com>
-
-	* server.c (handle_query): Add reply for qC packet.
-
-2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
-	    Leo Zayas  <lerele@champenstudios@com>
-
-	* server.h (check_remote_input_interrupt_request): New function.
-	* remote_utils.c (INVALID_DESCRIPTOR): New define.
-	(remote_desc): Initialize with INVALID_DESCRIPTOR.
-	(input_interrupt): Expose on USE_WIN32API too.  Fix whitespace.
-	(check_remote_input_interrupt_request): New function.
-	* server.h (check_remote_input_interrupt_request): Declare.
-	* win32-low.c (winapi_DebugBreakProcess,
-	winapi_GenerateConsoleCtrlEvent): New typedefs.
-	(get_child_debug_event): Lower Win32 debug event polling from 1 sec
-	to 250 ms.
-	(win32_wait): Check for remote interrupt request
-	with check_remote_input_interrupt_request.
-	(win32_request_interrupt): New function.
-	(win32_target_op): Set request_interrupt to win32_request_interrupt.
-
-2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (debug_registers_changed,
-	debug_registers_used, CONTEXT_EXTENDED_REGISTERS,
-	CONTEXT_FLOATING_POINT, CONTEXT_DEBUG_REGISTERS,
-	CONTEXT_DEBUGGER, CONTEXT_DEBUGGER_DR): Delete.
-	(thread_rec): Get context using the low target.
-	(child_add_thread): Call thread_added on the low target,
-	which does the same thing.
-	(regptr): Delete.
-	(do_initial_child_stuff): Remove debug registers references.
-	Set context using the low target.  Resume threads after
-	setting the contexts.
-	(child_continue): Remove dead variable.  Remove debug
-	registers references.
-	(child_fetch_inferior_registers): Go through the low target.
-	(do_child_store_inferior_registers): Remove.
-	(child_store_inferior_registers): Go through the low target.
-	(win32_resume): Remove debug registers references.
-	Set context using the low target.
-	(handle_exception): Change return type to void.  Don't record
-	context here.  Set status to TARGET_WAITKIND_SPURIOUS on a
-	first chance exception.
-	(get_child_debug_event): Change return type to void.  Remove
-	goto loop.  Always return after waiting for debug event.
-	(win32_wait): Convert to switch statement.  Handle spurious
-	events.
-
-	* win32-i386-low.c (debug_registers_changed,
-	debug_registers_used): New.
-	(initial_stuff): Rename to ...
-	(i386_initial_stuff): ... this.  Clear debug registers
-	state variables.
-	(store_debug_registers): Delete.
-	(i386_get_thread_context): New.
-	(load_debug_registers): Delete.
-	(i386_set_thread_context): New.
-	(i386_thread_added): New.
-	(single_step): Rename to ...
-	(i386_single_step): ... this.
-	(do_fetch_inferior_registers): Rename to ...
-	(i386_fetch_inferior_register): ... this.
-	(i386_store_inferior_register): New.
-	(the_low_target): Adapt to new interface.
-
-	* win32-arm-low.c (CONTEXT_FLOATING_POINT): Define.
-	(arm_get_thread_context): New.
-	(arm_set_thread_context): New.
-	(regptr): New.
-	(do_fetch_inferior_registers): Rename to ...
-	(arm_fetch_inferior_register): ... this.
-	(arm_store_inferior_register): New.
-	(arm_wince_breakpoint): Reimplement as unsigned long.
-	(arm_wince_breakpoint_len): Define.
-	(the_low_target): Adapt to new interface.
-
-	* win32-low.h (target_ops): Remove regmap, store_debug_registers and
-	load_debug_registers.  Add get_thread_context, set_thread_context,
-	thread_added and store_inferior_register.  Rename
-	fetch_inferior_registers to fetch_inferior_register.
-	(regptr): Remove declaration.
-
-2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* linux-low.c (linux_detach): Change return type to int.  Return 0.
-	* spu-low.c (spu_detach): Likewise.
-
-2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* target.h (target_ops): Change return type of detach to int.
-	Add join.
-	(join_inferior): New.
-	* server.c (main): Don't skip detach support on mingw32.
-	If the inferior doesn't support detaching return error.
-	Call join_inferior instead of using waitpid.
-	* linux-low.c (linux_join): New.
-	(linux_target_op): Add linux_join.
-	* spu-low.c (spu_join): New.
-	(spu_target_ops): Add spu_join.
-	* win32-low.c (win32_detach): Adapt to new interface.
-	Reopen current_process_handle before detaching.  Issue a child
-	resume before detaching.
-	(win32_join): New.
-	(win32_target_op): Add win32_join.
-
-2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (win32-attach): Fix return value.
-	* target.h (target_ops): Describe ATTACH return values.
-
-2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (GETPROCADDRESS): Define.
-	(winapi_DebugActiveProcessStop): Add WINAPI.  typedef as pointer.
-	(winapi_DebugSetProcessKillOnExit): Likewise.
-	(win32_create_inferior): Force usage of ansi CreateProcessA.
-	(win32_attach): Use GETPROCADDRESS.
-	(win32_detach): Likewise.
-
-2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c (win32_wait): Don't use WSTOPSIG.
-
-2007-03-30  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c: Commit leftover changes from 2007-03-29.
-
-2007-03-30  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* i387-fp.c (struct i387_fsave, struct i387_fxsave): Make 16-bit
-	fields short instead of int.  Add explicit padding.
-	(i387_cache_to_fsave): Remove unnecessary casts.
-	(i387_fsave_to_cache): Doc fix.
-	(i387_cache_to_fxsave): Remove unnecessary casts and masking.
-
-2007-03-30  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* i387-fp.c (i387_cache_to_fxsave): Reinitialize val2 before use.
-	(i387_fxsave_to_cache): Check fp->ftag while building ftag value.
-
-2007-03-29  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* configure.srv (arm*-*-mingw32ce*): Move near the other
-	arm targets.
-
-2007-03-29  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* configure.ac: Add errno checking.
-	(AC_CHECK_HEADERS): Add errno.h, fcntl.h, signal.h,
-	sys/file.h and malloc.h.
-	(AC_CHECK_DECLS): Add perror.
-	(srv_mingwce): Handle.
-	* configure.srv (i[34567]86-*-cygwin*): Add
-	win32-i386-low.o to srv_tgtobj.
-	(i[34567]86-*-mingw*): Likewise.
-	(arm*-*-mingw32ce*): Add case.
-	* gdbreplay.c [HAVE_SYS_FILE_H, HAVE_SIGNAL_H,
-	HAVE_FCNTL_H, HAVE_ERRNO_H, HAVE_MALLOC_H]: Check.
-	[__MINGW32CE__] (strerror): New function.
-	[__MINGW32CE__] (errno): Define to GetLastError.
-	[__MINGW32CE__] (COUNTOF): New macro.
-	(remote_open): Remove extra close call.
-	* mem-break.c (delete_breakpoint_at): New function.
-	* mem-break.h (delete_breakpoint_at): Declare.
-	* remote-utils.c [HAVE_SYS_FILE_H, HAVE_SIGNAL_H,
-	HAVE_FCNTL_H, HAVE_UNISTD_H, HAVE_ERRNO_H]: Check.
-	[USE_WIN32API] (read, write): Add char* casts.
-	* server.c [HAVE_UNISTD_H, HAVE_SIGNAL_H]: Check.
-	* server.h: Include wincecompat.h on Windows CE.
-	[HAVE_ERRNO_H]: Check.
-	(perror): Declare if not declared.
-	* utils.c: Add stdlib.h, errno.h and malloc.h includes.
-	(perror_with_name): Remove errno declaration.
-	* wincecompat.h: New.
-	* wincecompat.c: New.
-	* win32-low.h: New.
-	* win32-arm-low.c: New.
-	* win32-i386-low.c: New.
-	(win32-low.c): Include mem-break.h and win32-low.h, and winnt.h.
-	(OUTMSG2): Make it safe.
-	(_T): New macro.
-	(COUNTOF): New macro.
-	(NUM_REGS): Get it from the low target.
-	(CONTEXT_EXTENDED_REGISTERS, CONTEXT_FLOATING_POINT,
-	CONTEXT_DEBUG_REGISTERS): Add fallbacks to 0.
-	(thread_rec): Let low target handle debug registers.
-	(child_add_thread): Likewise.
-	(child_init_thread_list): Likewise.
-	(continue_one_thread): Likewise.
-	(regptr): New.
-	(do_child_fetch_inferior_registers): Move to ...
-	* win32-i386-low.c: ... here, and rename to ...
-	(do_fetch_inferior_registers): ... this.
-	* win32-low.c (child_fetch_inferior_registers):
-	Go through the low target.
-	(do_child_store_inferior_registers): Use regptr.
-	(strwinerror): New function.
-	(win32_create_inferior): Handle Windows CE.
-	Use strwinerror instead of strerror on Windows error
-	codes.  Add program to the error output.
-	Don't close the main thread handle on Windows CE.
-	(win32_attach): Use coredll.dll on Windows CE.
-	(win32_kill): Close current process and current
-	thread handles.
-	(win32_detach): Use coredll.dll on Windows CE.
-	(win32_resume): Let low target handle debug registers, and
-	step request.
-	(handle_exception): Add/Remove initial breakpoint.  Avoid
-	non-existant WSTOPSIG on Windows CE.
-	(win32_read_inferior_memory): Cast to remove warning.
-	(win32_arch_string): Go through the low target.
-	(initialize_low): Call set_breakpoint_data with the low
-	target's breakpoint.
-	* win32-low.c (dr, FLAG_TRACE_BIT, FCS_REGNUM,
-	FOP_REGNUM, mappings): Move to ...
-	* win32-i386-low.c: ... here.
-	* win32-low.c (win32_thread_info): Move to ...
-	* win32-low.h: ... here.
-	* Makefile.in (SFILES): Add win32-low.c, win32-i386-low.c,
-	win32-arm-low.c and wincecompat.c.
-	(all:): Add $EXEEXT.
-	(install-only:): Likewise.
-	(gdbserver:): Likewise.
-	(gdbreplay:): Likewise.
-	* config.in: Regenerate.
-	* configure: Regenerate.
-
-2007-03-28  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-low.c: Rename typedef thread_info to
-	win32_thread_info throughout.
-
-2007-03-28  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* win32-i386-low.c: Rename to ...
-	* win32-low.c: ... this.
-	* configure.srv: Replace win32-i386-low.o with win32-low.o.
-	* Makefile.in: Likewise.
-
-2007-03-27  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* remote-utils.c (monitor_output): Constify msg parameter.
-	* server.h (monitor_output): Likewise.
-	* win32-i386-low.c (handle_output_debug_string): New.
-	(win32_kill): Handle OUTPUT_DEBUG_STRING_EVENT events using
-	handle_output_debug_string.
-	(get_child_debug_event): Likewise.
-
-2007-03-27  Mat Hostetter  <mat@lcs.mit.edu>
-
-	* server.c (main): Correct strtoul check.
-
-2007-03-27  Jon Ringle  <jon@ringle.org>
-
-	* linux-low.c: Check __ARCH_HAS_MMU__ also.
-
-2007-03-27  Brooks Moses  <brooks.moses@codesourcery.com>
-
-	* Makefile.in: Add dummy "pdf" and "install-pdf" targets.
-
-2007-02-27  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* terminal.h: Check HAVE_SGTTY_H.
-
-2007-02-27  Mat Hostetter  <mat@lcs.mit.edu>
-
-	* remote-utils.c (remote_open): Print out the assigned port number.
-
-2007-02-26  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* remote-utils.c (monitor_output): New function.
-	* server.c (debug_threads): Define here.
-	(monitor_show_help): New function.
-	(handle_query): Handle qRcmd.
-	(main): Do not handle 'd' packet.
-	* server.h (debug_threads, remote_debug, monitor_output): Declare.
-	* linux-low.c, spu-low.c, win32-i386-low.c: Remove definitions
-	of debug_threads.
-
-2007-02-25  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* Makefile.in (EXEEXT): New.
-	(clean): Use $(EXEEXT).
-
-2007-02-25  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* target.h (target_ops): Rename send_signal to request_interrupt,
-	and remove enum target_signal parameter.
-	* linux-low.c (linux_request_interrupt): Rename from
-	linux_send_signal, and always send SIGINT.
-	* spu-low.c (spu_request_interrupt): Rename from spu_send_signal,
-	and always send SIGINT.
-	* remote-utils.c (putpkt_binary): Call request_interrupt, instead
-	of send_signal.
-	(input_interrupt): Likewise.
-
-2007-02-25  Pedro Alves  <pedro_alves@portugalmail.pt>
-
-	* server.c (get_features_xml): Check if target implemented
-	arch_string.
-	* win32-i386-low.c (win32_arch_string): New.
-	(win32_target_ops): Add win32_arch_string as arch_string member.
-
-2007-02-22  Markus Deuling  <deuling@de.ibm.com>
-
-	* spu-low.c (spu_arch_string): New.
-	(spu_target_ops): Add spu_arch_string.
-
-2007-02-16  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* remote-utils.c: Remove HAVE_TERMINAL_H check.
-	* configure.ac: Do not check for terminal.h.
-	* configure, config.in: Regenerated.
-
-2007-02-08  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (OBS): Add $(XML_BUILTIN).
-	(XML_DIR, XML_TARGET, XML_FILES, XML_BUILTIN): New.
-	(clean): Update.
-	(target.xml, xml-builtin.c, stamp-xml, arm-with-iwmmxt.o)
-	(arm-with-iwmmxt.c): New.
-	* config.in, configure: Regenerate.
-	* configure.ac: Check for iWMMXt.  Handle srv_xmltarget,
-	srv_xmlbuiltin, and srv_xmlfiles.  Define USE_XML.
-	* configure.srv: Mention srv_xmltarget and srv_xmlfiles.
-	(arm*-*-linux*): Add iWMMXt and regset support.
-	* linux-arm-low.c (PTRACE_GETWMMXREGS, PTRACE_SETWMMXREGS): Define.
-	(arm_fill_gregset, arm_store_gregset, arm_fill_wmmxregset)
-	(arm_store_wmmxregset, target_regsets): New.
-	* server.c (get_features_xml): Take annex argument.  Check builtin
-	XML documents.
-	(handle_query): Handle multiple annexes.
-
-2007-01-29  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* remote-utils.c [USE_WIN32API] (read, write): Define.
-	(putpkt_binary, input_interrupt, readchar, getpkt): Use read and
-	write.
-
-2007-01-09  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-i386-low.c (the_low_target): Set arch_string.
-	* linux-x86-64-low.c (the_low_target): Likewise.
-	* linux-low.c (linux_arch_string): New.
-	(linux_target_ops): Add it.
-	* linux-low.h (struct linux_target_ops): Add arch_string.
-	* server.c (write_qxfer_response): Use const void * for DATA.
-	(get_features_xml): New.
-	(handle_query): Handle qXfer:features:read.  Report it for qSupported.
-	* target.h (struct target_ops): Add arch_string method.
-
-2007-01-03  Denis Pilat  <denis.pilat@st.com>
-	    Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_kill): Handle being called with no threads.
-	* win32-i386-low.c (win32_kill): Likewise.
-	(get_child_debug_event): Clear current_process_handle.
-
-2006-12-30  Denis PILAT  <denis.pilat@st.com>
-	    Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* remote-utils.c (remote_open): Check the type of specified
-	serial port devices before opening them.
-	* server.c (main): Kill the inferior if an error occurs during
-	the first remote_open.
-
-2006-12-05  Markus Deuling  <deuling@de.ibm.com>
-
-	* README: Update supported targets.
-
-2006-11-28  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (clean): Remove reg-mips64.c.
-	(reg-mips64.c, reg-mips64.o): New rules.
-	* configure.srv: Handle mips64.  Include regset support for mips.
-	* linux-mips-low.c (union mips_register): New.
-	(mips_get_pc, mips_set_pc, mips_reinsert_addr): Use it.
-	(mips_breakpoint, mips_breakpoint_at): Use int.
-	(mips_collect_register, mips_supply_register)
-	(mips_collect_register_32bit, mips_supply_register_32bit)
-	(mips_fill_gregset, mips_store_gregset, mips_fill_fpregset)
-	(mips_store_fpregset, target_regsets): New.
-	* thread-db.c (thread_db_get_tls_address): Use uintptr_t.
-
-2006-11-22  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* configure.srv: Add target "spu*-*-*".
-	* Makefile.in (clean): Remove reg-spu.c.
-	(reg-spu.c, reg-spu.o, spu-low.o): Add dependencies.
-	* spu-low.c: New file.
-
-2006-11-16  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* configure.ac: Correct td_thr_tls_get_addr test.
-	* configure: Regenerated.
-
-2006-11-16  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_wait_for_event): Reformat.  Use the
-	pass_signals array.
-	* remote-utils.c (decode_address_to_semicolon): New.
-	* server.c (pass_signals, handle_general_set): New.
-	(handle_query): Mention QPassSignals for qSupported.
-	(main): Call handle_general_set.
-	* server.h (pass_signals, decode_address_to_semicolon): New.
-
-2006-11-06  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (handle_query): Correct error handling for read_auxv.
-
-2005-10-19  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* configure.srv [s390-*-linux*, s390x-*-linux*]: Set srv_linux_regsets
-	and srv_linux_thread_db to yes.
-	* linux-s390-low.c (s390_fill_gregset): New function.
-	(target_regsets): Define data structure.
-
-2006-10-17  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* acinclude.m4 (SRV_CHECK_TLS_GET_ADDR): New.
-	* configure.ac: Use it.  Define HAVE_TD_THR_TLS_GET_ADDR.
-	* config.in, configure: Regenerated.
-	* inferiors.c (gdb_id_to_thread): New function.
-	(gdb_id_to_thread_id): Use it.
-	* linux-low.c (linux_target_ops): Use thread_db_get_tls_address.
-	* linux-low.h (struct process_info): Add th member.
-	(thread_db_get_tls_address): New prototype.
-	* remote-utils.c (decode_address): Make non-static.
-	* server.c (handle_query): Handle qGetTLSAddr.
-	* server.h (gdb_id_to_thread, decode_address): New prototypes.
-	* target.h (struct target_ops): Add get_tls_address.
-	* thread-db.c (maybe_attach_thread): Save the thread handle.
-	(thread_db_get_tls_address): New.
-
-2006-09-28  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (PTRACE_GETSIGINFO, PTRACE_SETSIGINFO): Define.
-	(linux_resume_one_process): Take a siginfo_t *.  Update all
-	callers.  Queue it if necessary.  Use PTRACE_SETSIGINFO.
-	(struct pending_signals): Add a siginfo_t.
-	(linux_wait_for_process): Always set last_status.
-	(linux_wait_for_event): Use PTRACE_GETSIGINFO.
-	(linux_queue_one_thread): Use PTRACE_GETSIGINFO.
-	* linux-low.h (struct process_info): Add last_status.
-
-2006-09-21  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* remote-utils.c (try_rle): New function.
-	(putpkt_binary): Use it.
-
-2006-08-19  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (clean): Clean reg-x86-64-linux.c.
-	(reg-x86-64-linux.o, reg-x86-64-linux.c): New.
-	* configure.srv (x86_64-*-linux*): Use reg-x86-64-linux.o.
-	* linux-x86-64-low.c (x86_64_regmap): Include ORIG_RAX.
-	(x86_64_fill_gregset, x86_64_store_gregset): Skip floating
-	point registers.
-
-2006-08-08  Richard Sandiford  <richard@codesourcery.com>
-
-	* server.c (terminal_fd): New variable.
-	(old_foreground_pgrp): Likewise.
-	(restore_old_foreground_pgrp): New function.
-	(start_inferior): Record the terminal file descriptor in terminal_fd
-	and its original foreground group in old_foreground_pgrp.  Register
-	restore_old_foreground_pgrp with atexit().
-
-2006-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (handle_query): Correct qPart to qXfer.
-
-2006-07-22  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* configure.ac: Check for more headers which are missing on
-	Windows.  Automatically supply -lwsock32 and USE_WIN32API.
-	* configure.srv: Add Cygwin and mingw32.
-	* remote-utils.c: Don't include headers unconditionally which
-	are missing on mingw32.  Include <winsock.h> for mingw32.
-	(remote_open): Adjust for mingw32 support.  Flush
-	standard error after writing to it.
-	(remote_close, putpkt_binary, input_interrupt, block_async_io)
-	(unblock_async_io, enable_async_io, disable_async_io)
-	(readchar, getpkt): Update for Winsock support.
-	(prepare_resume_reply): Expect a protocol signal number.
-	* server.c: Disable <sys/wait.h> on mingw32.
-	(start_inferior): Adjust for mingw32 support.  Flush
-	standard error after writing to it.
-	(attach_inferior): Likewise.  Use protocol signal
-	numbers.
-	(main): Skip 'D' packet on mingw32.  Use protocol signal numbers
-	and names.
-	* win32-i386-low.c: New file.
-	* Makefile.in (XM_CLIBS): Set.
-	(gdbserver, gdbreplay): Use $(INTERNAL_CFLAGS).
-	(win32-i386-low.o): New dependency rule.
-	* linux-low.c (linux_wait): Use target signal numbers.
-	* target.h (struct target_ops): Doc fix.
-	* server.h (target_signal_to_name): New prototype.
-	* gdbreplay.c: Don't include headers unconditionally which
-	are missing on mingw32.  Include <winsock.h> for mingw32.
-	(remote_close, remote_open): Adjust for Winsock support.
-	* configure, config.in: Regenerated.
-
-2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (decode_xfer_read, write_qxfer_response): New.
-	(handle_query): Take a packet length argument.  Handle
-	qXfer:auxv:read instead of qPart:auxv:read.  Mention it in
-	the qSupported response.
-	(main): Update call to handle_query.
-
-2006-06-22  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* remote-utils.c (remote_escape_output, remote_unescape_input): New.
-	(putpkt_binary): Renamed from putpkt and adjusted for binary
-	data.
-	(putpkt): New wrapper for putpkt_binary.
-	(readchar): Don't mask off the high bit.
-	(decode_X_packet): New function.
-	* server.c (main): Call putpkt_binary if a handler sets the packet
-	length.  Save the length of the incoming packet.  Handle 'X'.
-	* server.h (gdb_byte, remote_escape_output, decode_X_packet): New.
-
-2006-06-21  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (handle_query): Handle qSupported.
-
-2006-05-30  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* remote-utils.c (all_symbols_looked_up): New variable.
-	(look_up_one_symbol): Check it.
-	* server.h (look_up_one_symbol): New declaration.
-	* thread-db.c (thread_db_init): Set all_symbols_looked_up.
-
-2006-05-30  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (linux-arm-low.o): Update dependencies.
-	* linux-arm-low.c: Include "gdb_proc_service.h".
-	(PTRACE_GET_THREAD_AREA): Define.
-	(ps_get_thread_area): New function.
-
-2006-05-09  Nathan Sidwell  <nathan@codesourcery.com>
-
-	* configure.srv (m68k*-*-uclinux*): New target.
-	* linux-low.c (linux_create_inferior): Use vfork on mmuless systems.
-	(linux_resume_one_process): Remove extraneous cast.
-	(linux_read_offsets): New.
-	(linux_target_op): Add linux_read_offsets on mmuless systems.
-	* server.c (handle_query): Add qOffsets logic.
-	* target.h (struct target_ops): Add read_offsets.
-
-2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-mips-low.c: Include <sys/ptrace.h> and "gdb_proc_service.h".
-	(PTRACE_GET_THREAD_AREA): Define.
-	(ps_get_thread_area): New function.
-	* Makefile.in (linux-i386-low.o, linux-mips-low.o)
-	(linux-x86-64-low.o): Update.
-
-2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* configure.ac: Remove checks for prfpregset_t.
-	* gdb_proc_service.h: New file.
-	* linux-i386-low.c, linux-x86-64-low.c, thread-db.c: Use the
-	new "gdb_proc_service.h".
-	* proc-service.c: Likewise.
-	(ps_pglobal_lookup, ps_pdread, ps_pdwrite): Use psaddr_t.
-	(ps_lgetfpregs, ps_lsetfpregs): Use a void* argument.
-	* Makefile.in (gdb_proc_service_h): Updated.
-	* configure, config.in: Regenerated.
-
-2006-03-03  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* remote-utils.c (prepare_resume_reply): Move declaration
-	of gdb_id_from_wait to the top of the block.
-
-2006-02-15  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (regsets_store_inferior_registers): Read the regset
-	from the target before filling it.
-
-2006-02-08  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (attach_inferior): Return SIGTRAP for a successful
-	attach.
-
-2006-02-01  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (OBS): Add version.o.
-	(STAGESTUFF): Delete.
-	(version.o): Add dependencies.
-	(version.c): Replace rule.
-	(clean): Remove version.c.
-	* server.c (gdbserver_version): New.
-	(gdbserver_usage): Use printf.
-	(main): Handle --version and --help.
-	* server.h (version, host_name): Add declarations.
-
-2005-12-23  Eli Zaretskii  <eliz@gnu.org>
-
-	* linux-arm-low.c:
-	* linux-arm-low.c:
-	* inferiors.c:
-	* i387-fp.h:
-	* i387-fp.c:
-	* gdbreplay.c:
-	* regcache.c:
-	* proc-service.c:
-	* mem-break.h:
-	* mem-break.c:
-	* linux-x86-64-low.c:
-	* linux-sh-low.c:
-	* linux-s390-low.c:
-	* linux-ppc64-low.c:
-	* linux-ppc-low.c:
-	* linux-mips-low.c:
-	* linux-m68k-low.c:
-	* linux-m32r-low.c:
-	* linux-low.h:
-	* linux-low.c:
-	* linux-ia64-low.c:
-	* linux-i386-low.c:
-	* linux-crisv32-low.c:
-	* thread-db.c:
-	* terminal.h:
-	* target.h:
-	* target.c:
-	* server.h:
-	* server.c:
-	* remote-utils.c:
-	* regcache.h:
-	* utils.c:
-	* Makefile.in:
-	* configure.ac:
-	* gdbserver.1: Add (C) after Copyright.  Update the FSF
-	address.
-
-2005-11-13  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-arm-low.c (arm_eabi_breakpoint): New variable.
-	(arm_breakpoint_at): Recognize both breakpoints.
-	(the_low_target): Use the correct breakpoint instruction.
-
-2005-11-02  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* configure.srv (x86_64-*-linux*): Turn on thread_db support.
-	* linux-x86-64-low.c (x86_64_breakpoint, x86_64_breakpoint_len)
-	(x86_64_get_pc, x86_64_set_pc, x86_64_breakpoint_at): New.
-	(the_low_target): Update.
-
-2005-10-25  Andreas Schwab  <schwab@suse.de>
-
-	* server.c (main): Allocate mem_buf with PBUFSIZ bytes.
-
-	* linux-ia64-low.c (ia64_regmap): Remove NAT registers.
-	(ia64_num_regs): Reduce to 462.
-
-2005-09-17  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* acinclude.m4: Correct quoting.
-	* aclocal.m4: Regenerated.
-
-	Suggested by SZOKOVACS Robert <szo@ies.hu>:
-	* thread-db.c (thread_db_err_str): Handle TD_VERSION.
-	(thread_db_init): Call thread_db_err_str.
-	* configure.ac: Check for TD_VERSION.
-	* config.in, configure: Regenerated.
-
-2005-07-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
-
-	* server.h (error, fatal, warning): Add ATTR_FORMAT.
-
-2005-07-13  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* configure.ac: Define HAVE_LINUX_REGSETS even if PTRACE_GETREGS
-	is not available.  Define HAVE_PTRACE_GETREGS if it is.
-	* config.in, configure: Regenerated.
-	* configure.srv: Set srv_linux_regsets for PowerPC and PowerPC64.
-	* linux-i386-low.c, linux-m68k-low.c: Update to use
-	HAVE_PTRACE_GETREGS.
-	* linux-low.c (regsets_fetch_inferior_registers)
-	(regsets_store_inferior_registers): Only return 0 if we processed
-	GENERAL_REGS.
-	* linux-ppc-low.c (ppc_fill_gregset, target_regsets): New.
-	* linux-ppc64-low.c (ppc_fill_gregset, target_regsets): New.
-
-2005-07-13  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* inferiors.c (struct thread_info): Add gdb_id.
-	(add_thread): Add gdb_id argument.
-	(thread_id_to_gdb_id, thread_to_gdb_id, gdb_id_to_thread_id): New.
-	* linux-low.c (linux_create_inferior, linux_attach_lwp): Update
-	calls to add_thread.
-	* remote-utils.c (prepare_resume_reply: Use thread_to_gdb_id.
-	* server.c (handle_query): Use thread_to_gdb_id.
-	(handle_v_cont, main): Use gdb_id_to_thread_id.
-	* server.h (add_thread): Update prototype.
-	(thread_id_to_gdb_id, thread_to_gdb_id, gdb_id_to_thread_id): New
-	prototypes.
-
-2005-07-13  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (fetch_register, usr_store_inferior_registers): Handle
-	left-padded registers.
-	* linux-low.h (struct linux_target_ops): Add left_pad_xfer.
-	* linux-ppc64-low.c (the_low_target): Set left_pad_xfer.
-
-2005-07-01  Steve Ellcey  <sje@cup.hp.com>
-
-	* configure.ac (BFD_NEED_DECLARATION): Replace with AC_CHECK_DECLS.
-	* configure: Regenerate.
-	* config.in: Regenerate.
-	* server.h (NEED_DECLARATION_STRERROR):
-	Replace with !HAVE_DECL_STRERROR.
-
-2005-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* linux-low.c (linux_wait, linux_send_signal): Don't test
-	an unsigned long variable for > 0 if it could be MAX_ULONG.
-	* server.c (myresume): Likewise.
-	* target.c (set_desired_inferior): Likewise.
-
-2005-06-13  Mark Kettenis  <kettenis@gnu.org>
-
-	* configure.ac: Simplify and improve check for socklen_t.
-	* configure, config.in: Regenerate.
-
-2005-06-12  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* acconfig.h: Remove.
-	* configure.ac: Add a test for socklen_t.  Use three-argument
-	AC_DEFINE throughout.
-	* config.in: Regenerated using autoheader 2.59.
-	* configure: Regenerated.
-
-	* gdbreplay.c (socklen_t): Provide a default.
-	(remote_open): Use socklen_t.
-	* remote-utils.c (socklen_t): Provide a default.
-	(remote_open): Use socklen_t.
-	(convert_int_to_ascii, convert_ascii_to_int, decode_M_packet): Use
-	unsigned char.
-
-	* i387-fp.c (struct i387_fsave, struct i387_fxsave): Use unsigned
-	char for buffers.
-	* linux-low.c (linux_read_memory, linux_write_memory)
-	(linux_read_auxv): Likewise.
-	* mem-break.c (breakpoint_data, set_breakpoint_data, check_mem_read)
-	(check_mem_write): Likewise.
-	* mem-break.h (set_breakpoint_data, check_mem_read, check_mem_write):
-	Likewise.
-	* regcache.c (struct inferior_rgcache_data, registers_to_string)
-	(registers_from_string, register_data): Likewise.
-	* server.c (handle_query, main): Likewise.
-	* server.h (convert_ascii_to_int, convert_int_to_ascii)
-	(decode_M_packet): Likewise.
-	* target.c (read_inferior_memory, write_inferior_memory): Likewise.
-	* target.h (struct target_ops): Update read_memory, write_memory,
-	and read_auxv.
-	(read_inferior_memory, write_inferior_memory): Update.
-	* linux-low.h (struct linux_target_ops): Change type of breakpoint
-	to unsigned char *.
-	* linux-arm-low.c, linux-cris-low.c, linux-crisv32-low.c,
-	linux-i386-low.c, linux-m32r-low.c, linux-m68k-low.c,
-	linux-mips-low.c, linux-ppc-low.c, linux-ppc64-low.c,
-	linux-s390-low.c, linux-sh-low.c: Update for changes in
-	read_inferior_memory and the_low_target->breakpoint.
-
-2005-05-28  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (SFILES): Add linux-ppc64-low.c.
-	(linux-ppc64-low.o, reg-ppc64.c, reg-ppc64.o): New targets.
-	* configure.srv: Add powerpc64-*-linux*.
-	* linux-ppc64-low.c: New file.
-
-2005-05-23  Orjan Friberg  <orjanf@axis.com>
-
-	* linux-cris-low.c: New file with support for CRIS.
-	* linux-crisv32-low.c: Ditto for CRISv32.
-	* Makefile.in (SFILES): Add linux-cris-low.c, linux-crisv32-low.c.
-	(clean): Add reg-cris.c and reg-crisv32.c.
-	Add linux-cris-low.o, linux-crisv32-low.o, reg-cris.o, reg-cris.c,
-	reg-crisv32.o, and reg-crisv32.c to make rules.
-	* configure.srv: Add cris-*-linux* and crisv32-*-linux* to list of
-	recognized targets.
-
-2005-05-16  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* linux-low.c (fetch_register): Ensure buffer size is a multiple
-	of sizeof (PTRACE_XFER_TYPE).
-	(usr_store_inferior_registers): Likewise.  Zero out excess bytes.
-
-2005-05-12  Orjan Friberg  <orjanf@axis.com>
-
-	* target.h (struct target_ops): Add insert_watchpoint,
-	remove_watchpoint, stopped_by_watchpoint, stopped_data_address function
-	pointers for hardware watchpoint support.
-	* linux-low.h (struct linux_target_ops): Ditto.
-	* linux-low.c (linux_insert_watchpoint, linux_remove_watchpoint)
-	(linux_stopped_by_watchpoint, linux_stopped_data_address): New.  Add
-	to linux_target_ops.
-	* remote-utils.c (prepare_resume_reply): Add watchpoint information to
-	reply packet.
-	* server.c (main): Recognize 'Z' and 'z' packets.
-
-2005-05-10  Ulrich Weigand  <uweigand@de.ibm.com>
-
-	* linux-s390-low.c (s390_breakpoint, s390_breakpoint_len): Define.
-	(s390_get_pc, s390_set_pc, s390_breakpoint_at): New functions.
-	(the_low_target): Add new members.
-
-2005-05-04  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* proc-service.c (ps_lgetregs): Search all_processes instead of
-	all_threads.
-
-2005-05-04  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* server.c (start_inferior): Change return type to int.
-	(attach_inferior): Change sigptr to int *.
-	(handle_v_cont, handle_v_requests): Change signal to int *.
-	(main): Change signal to int.
-
-2005-04-15  Kei Sakamoto  <sakamoto.kei@renesas.com>
-
-	* Makefile.in: Add linux-m32r-low.o, reg-m32r.c and reg-m32r.o.
-	* configure.srv: Add m32r*-*-linux*.
-	* linux-m32r-low.c: New file.
-
-2005-03-04  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* Makefile.in (stamp-h): Set CONFIG_HEADERS explicitly.
-
-2005-03-03  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* inferiors.c (change_inferior_id, add_thread, find_inferior_id):
-	Take unsigned long arguments for PIDs.
-	* linux-low.c (add_process, linux_attach_lwp, linux_attach)
-	(linux_thread_alive, linux_wait_for_event, kill_lwp, send_sigstop)
-	(wait_for_sigstop, linux_resume_one_process)
-	(regsets_fetch_inferior_registers, linux_send_signal)
-	(linux_read_auxv): Likewise.  Update the types of variables holding
-	PIDs.  Update format string specifiers.
-	* linux-low.h (struct process_info, linux_attach_lwp): Likewise.
-	* remote-utils.c (prepare_resume_reply): Likewise.
-	* server.c (cont_thread, general_thread, step_thread)
-	(thread_from_wait, old_thread_from_wait, signal_pid): Change type to
-	unsigned long.
-	(handle_query): Update format specifiers.
-	(handle_v_cont, main): Use strtoul for thread IDs.
-	* server.h (struct inferior_list_entry): Use unsigned long for ID.
-	(add_thread, find_inferior_id, change_inferior_id, cont_thread)
-	(general_thread, step_thread, thread_from_wait)
-	(old_thread_from_wait): Update.
-	* target.h (struct thread_resume): Use unsigned long for THREAD.
-	(struct target_ops): Use unsigned long for arguments to attach and
-	thread_alive.
-
-2005-02-24  Daniel Jacobowitz  <dan@codesourcery.com>
-
-	* acinclude.m4: Include bfd/bfd.m4 directly.
-	* configure.ac: Use AC_ARG_PROGRAM.  Suggested by Aron Griffis
-	<agriffis@toolchain.org>.
-	* aclocal.m4, configure: Regenerated.
-
-2005-01-07  Andrew Cagney  <cagney@gnu.org>
-
-	* configure.ac: Rename configure.in, require autoconf 2.59.
-	* configure: Re-generate.
-
-2004-12-08  Daniel Jacobowitz  <dan@debian.org>
-
-	* acinclude.m4 (SRV_CHECK_THREAD_DB): Add ps_get_thread_area.  Reset
-	LIBS when finished.
-	* aclocal.m4: Regenerated.
-	* configure: Regenerated.
-
-2004-11-21  Andreas Schwab  <schwab@suse.de>
-
-	* linux-m68k-low.c (m68k_num_gregs): Define.
-	(m68k_fill_gregset, m68k_store_gregset, m68k_fill_fpregset)
-	(m68k_store_fpregset, target_regsets) [HAVE_LINUX_REGSETS]: New.
-	(m68k_breakpoint, m68k_breakpoint_len, m68k_get_pc, m68k_set_pc)
-	(m68k_breakpoint_at): New.  Add to the_low_target.
-
-	* configure.srv (m68*-*-linux*): Set srv_linux_regsets and
-	srv_linux_thread_db to yes.
-
-2004-10-20  Joel Brobecker  <brobecker@gnat.com>
-
-	* linux-x86-64-low.c (ARCH_SET_GS): Add definition if missing.
-	(ARCH_SET_FS): Likewise.
-	(ARCH_GET_FS): Likewise.
-	(ARCH_GET_GS): Likewise.
-
-2004-10-16  Daniel Jacobowitz  <dan@debian.org>
-
-	* linux-i386-low.c (ps_get_thread_area): New.
-	* linux-x86-64-low.c (ps_get_thread_area): New.
-	* linux-low.c: Include <sys/syscall.h>.
-	(linux_kill_one_process): Don't kill the first thread here.
-	(linux_kill): Kill the first thread here.
-	(kill_lwp): New function.
-	(send_sigstop, linux_send_signal): Use it.
-	* proc-service.c: Clean up #ifdefs.
-	(fpregset_info): Delete.
-	(ps_lgetregs): Update and enable implementation.
-	(ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Remove disabled
-	implementations.
-	* remote-utils.c (struct sym_cache, symbol_cache): New.
-	(input_interrupt): Print a clearer message.
-	(async_io_enabled): New variable.
-	(enable_async_io, disable_async_io): Use it.  Update comments.
-	(look_up_one_symbol): Use the symbol cache.
-	* thread-db.c (thread_db_look_up_symbols): New function.
-	(thread_db_init): Update comments.  Call thread_db_look_up_symbols.
-
-2004-10-16  Daniel Jacobowitz  <dan@debian.org>
-
-	* configure.in: Test for -rdynamic.
-	* configure: Regenerated.
-	* Makefile (INTERNAL_LDFLAGS): New.
-	(gdbserver, gdbreplay): Use it.
-
-2004-09-02  Andrew Cagney  <cagney@gnu.org>
-
-	* Makefile.in (TAGS): Replace TM_FILE with DEPRECATED_TM_FILE.
-
-2004-03-23  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c (linux_wait): Clear all_processes list also.
-
-2004-03-12  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c: Include <errno.h>.  Remove extern declaration of
-	errno.
-
-2004-03-12  Daniel Jacobowitz  <drow@mvista.com>
-
-	* gdbreplay.c, server.h, utils.c: Update copyright years.
-
-2004-03-04  Nathan J. Williams  <nathanw@wasabisystems.com>
-
-	* server.c (main): Print child status or termination signal from
-	variable 'signal', not 'sig'.
-
-2004-03-04  Nathan J. Williams  <nathanw@wasabisystems.com>
-
-	* linux-low.c (linux_read_memory): Change return type to
-	int.  Check for and return error from ptrace().
-	* target.c (read_inferior_memory): Change return type to int.  Pass
-	back return status from the_target->read_memory().
-	* target.h (struct target_ops): Adapt *read_memory() prototype.
-	Update comment.
-	(read_inferior_memory): Adapt prototype.
-	* server.c (main): Return an error packet if
-	read_inferior_memory() returns an error.
-
-2004-03-04  Daniel Jacobowitz  <drow@mvista.com>
-
-	* Makefile.in (distclean): Remove config.h, stamp-h, and config.log.
-	Unify with other clean targets.
-
-2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
-
-	* server.c (handle_v_cont): Call set_desired_inferior.
-
-2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
-
-	* remote-utils.c (prepare_resume_reply): Always supply "thread:".
-
-2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c (linux_wait): Unblock async I/O.
-	(linux_resume): Block and enable async I/O.
-	* remote-utils.c (block_async_io, unblock_async_io): New functions.
-	* server.h (block_async_io, unblock_async_io): Add prototypes.
-
-2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
-
-	* remote-utils.c (remote_open): Print a status notice after
-	opening a TCP port.
-	* server.c (attach_inferior): Print a status notice after
-	attaching.
-
-2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-arm-low.c (arm_get_pc): Print out stop PC in debug mode.
-
-2004-02-26  Daniel Jacobowitz  <drow@mvista.com>
-
-	* remote-utils.c (write_enn): Use "E01" instead of "ENN" for the
-	error packet.
-	* server.c, target.h: Update copyright years.
-
-2004-02-25  Roland McGrath  <roland@redhat.com>
-
-	* target.h (struct target_ops): New member `read_auxv'.
-	* server.c (handle_query): Handle qPart:auxv:read: query using that.
-	* linux-low.c (linux_read_auxv): New function.
-	(linux_target_ops): Initialize `read_auxv' member to that.
-
-2004-02-17  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
-
-	Committed by Jim Blandy  <jimb@redhat.com>.
-
-	* linux-s390-low.c (s390_num_regs): Update.
-	(s390_regmap): Remove control registers.  Use __s390x__ predefine
-	instead of GPR_SIZE to distiguish s390 and s390x targets.
-
-2004-01-31  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c: Update copyright year.
-	(check_removed_breakpoint): Clear pending_is_breakpoint.
-	(linux_set_resume_request, linux_queue_one_thread)
-	(resume_status_pending_p): New functions.
-	(linux_continue_one_thread): Use process->resume.
-	(linux_resume): Only resume threads if there are no pending events.
-	* linux-low.h (struct process_info): Add resume request
-	pointer.
-
-2004-01-30  Daniel Jacobowitz  <drow@mvista.com>
-
-	* regcache.c (new_register_cache): Clear the allocated register
-	buffer.  Suggested by Atsushi Nemoto <anemo@mba.ocn.ne.jp>.
-
-2003-10-13  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c (linux_resume): Take a struct thread_resume *
-	argument.
-	(linux_wait): Update call.
-	(resume_ptr): New static variable.
-	(linux_continue_one_thread): Renamed from
-	linux_continue_one_process.  Use resume_ptr.
-	(linux_resume): Use linux_continue_one_thread.
-	* server.c (handle_v_cont, handle_v_requests): New functions.
-	(myresume): New function.
-	(main): Handle 'v' case.
-	* target.h (struct thread_resume): New type.
-	(struct target_ops): Change argument of "resume" to struct
-	thread_resume *.
-	(myresume): Delete macro.
-
-2003-08-08  H.J. Lu  <hongjiu.lu@intel.com>
-
-	* Makefile.in (install-only): Create dest dir. Support DESTDIR.
-	(uninstall): Support DESTDIR.
-
-Mon Jul 21 20:09:34 UTC 2003  Brendan Conoboy  <blc@redhat.com>
-
-	* configure.srv: Add xscale*linux copy of arm*linux entry.
-
-2003-07-24  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-arm-low.c (arm_reinsert_addr): New function.
-	(the_low_target): Add arm_reinsert_addr.
-
-2003-07-08  Mark Kettenis  <kettenis@gnu.org>
-
-	* mem-break.c: Remove whitespace at end of file.
-
-2003-06-28  Daniel Jacobowitz  <drow@mvista.com>
-
-	* configure.in: Check whether we need to prototype strerror.
-	* server.h: Optionally prototype strerror.
-	* gdbreplay.c (perror_with_name): Use strerror.
-	* linux-low.c (linux_attach_lwp): Use strerror.
-	* utils.c (perror_with_name): Use strerror.
-	* config.in, configure: Regenerated.
-
-2003-06-28  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-sh-low.c (sh_regmap): Fix FP register offsets, reported by
-	SUGIOKA Toshinobu <sugioka@itonet.co.jp>.
-
-2003-06-20  Daniel Jacobowitz  <drow@mvista.com>
-
-	* Makefile.in (SFILES): Update.
-	* low-hppabsd.c, low-lynx.c, low-nbsd.c, low-sim.c, low-sparc.c,
-	low-sun3.c: Remove files.
-
-2003-06-17  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c: Move comment to linux_thread_alive where it belonged.
-	(linux_detach_one_process, linux_detach): New functions.
-	(linux_target_ops): Add linux_detach.
-	* server.c (main): Handle 'D' packet.
-	* target.h (struct target_ops): Add "detach" member.
-	(detach_inferior): Define.
-
-2003-06-13  Mark Kettenis  <kettenis@gnu.org>
-
-	From Kelley Cook  <kelleycook@wideopenwest.com>:
-	* configure.srv: Accept i[34567]86 variants.
-
-2003-06-05  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c (linux_wait_for_event): Correct comment typos.
-	(linux_resume_one_process): Call check_removed_breakpoint.
-	(linux_send_signal): New function.
-	(linux_target_ops): Add linux_send_signal.
-	* remote-utils.c (putpkt, input_interrupt): Use send_signal instead
-	of kill.
-	* target.h (struct target_ops): Add send_signal.
-
-2003-05-29  Jim Blandy  <jimb@redhat.com>
-
-	* linux-low.c (usr_store_inferior_registers): Transfer buf in
-	PTRACE_XFER_TYPE-sized chunks, not int-sized chunks.  Otherwise,
-	if 'int' is smaller than PTRACE_XFER_TYPE, you end up throwing
-	away part of the register's value.
-
-2003-03-26  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c (linux_create_inferior): Use __SIGRTMIN.
-	(linux_wait_for_event, linux_init_signals): Likewise.
-
-2003-03-17  Daniel Jacobowitz  <drow@mvista.com>
-
-	* configure.in: Check for stdlib.h.
-	* configure: Regenerated.
-	* config.in: Regenerated.
-
-2003-01-04  Andreas Schwab  <schwab@suse.de>
-
-	* linux-m68k-low.c (m68k_num_regs): Define to 29 instead of 31.
-
-2003-01-02  Andrew Cagney  <ac131313@redhat.com>
-
-	* Makefile.in: Remove obsolete code.
-
-2002-11-20  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-s390-low.c (s390_regmap): Check GPR_SIZE instead of
-	defined(PT_FPR0_HI).
-
-2002-11-17  Stuart Hughes  <seh@zee2.com>
-
-	* linux-arm-low.c (arm_num_regs): Increase.
-	(arm_regmap): Include status register.
-
-2002-11-17  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c (register_addr): Remove incorrect -1 check.
-
-2002-08-29  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c (linux_create_inferior): Call setpgid.  Return
-	the new PID.
-	(unstopped_p, linux_signal_pid): Remove.
-	(linux_target_ops): Remove linux_signal_pid.
-	* remote-utils.c (putpkt, input_interrupt): Use signal_pid
-	global instead of target method.
-	* target.h (struct target_ops): Remove signal_pid.  Update comment
-	for create_inferior.
-	* server.c (signal_pid): New variable.
-	(create_inferior): Set signal_pid.  Block SIGTTOU and SIGTTIN in
-	gdbserver.  Set the child to be the foreground process group.
-	(attach_inferior): Set signal_pid.
-
-2002-08-23  Daniel Jacobowitz  <drow@mvista.com>
-
-	* ChangeLog: New file, with entries from gdb/ChangeLog after GDB 5.2.
-
-2002-08-20  Jim Blandy  <jimb@redhat.com>
-
-	* Makefile.in (LDFLAGS): Allow the configure script to establish a
-	default for this.
-
-2002-08-01  Andrew Cagney  <cagney@redhat.com>
-
-	* Makefile.in: Make chill references obsolete.
-
-2002-07-24  Kevin Buettner  <kevinb@redhat.com>
-
-	* configure.in (unistd.h): Add to AC_CHECK_HEADERS list.
-	* configure: Regenerate.
-	* config.in: Regenerate.
-
-2002-07-09  David O'Brien  <obrien@FreeBSD.org>
-
-	* gdbreplay.c (stdlib.h, unistd.h): Conditionaly include.
-	(perror_with_name, remote_close, remote_open, expect, play): Static.
-
-2002-07-04  Michal Ludvig  <mludvig@suse.cz>
-
-	* linux-x86-64-low.c (x86_64_regmap): Make it an array of
-	byte offsets instead of an array of indexes.
-	(x86_64_store_gregset, x86_64_store_fpregset): Parameter made const.
-
-2002-06-13  Daniel Jacobowitz  <drow@mvista.com>
-
-	* regcache.c: Add comment.
-
-2002-06-11  Daniel Jacobowitz  <drow@mvista.com>
-
-	* thread-db.c: New file.
-	* proc-service.c: New file.
-	* acinclude.m4: New file.
-	* Makefile.in: Add GDBSERVER_LIBS, gdb_proc_service_h,
-	proc-service.o, and thread-db.o.
-	(linux-low.o): Add USE_THREAD_DB.
-	* acconfig.h: Add HAVE_PRGREGSET_T, HAVE_PRFPREGSET_T,
-	HAVE_LWPID_T, HAVE_PSADDR_T, and PRFPREGSET_T_BROKEN.
-	* aclocal.m4: Regenerated.
-	* config.in: Regenerated.
-	* configure: Regenerated.
-	* configure.in: Check for proc_service.h, sys/procfs.h,
-	thread_db.h, and linux/elf.h headrs.
-	Check for lwpid_t, psaddr_t, prgregset_t, prfpregset_t, and
-	PRFPREGSET_T_BROKEN.  Introduce srv_thread_depfiles and USE_THREAD_DB.
-	Check for -lthread_db and thread support.
-	* configure.srv: Enable thread_db support for ARM, i386, MIPS,
-	PowerPC, and SuperH.
-	* i387-fp.c: Constify arguments.
-	* i387-fp.h: Likewise.
-	* inferiors.c: (struct thread_info): Renamed from
-	`struct inferior_info'.  Remove PID member.  Use generic inferior
-	list header.  All uses updated.
-	(inferiors, signal_pid): Removed.
-	(all_threads): New variable.
-	(get_thread): Define.
-	(add_inferior_to_list): New function.
-	(for_each_inferior): New function.
-	(change_inferior_id): New function.
-	(add_inferior): Removed.
-	(remove_inferior): New function.
-	(add_thread): New function.
-	(free_one_thread): New function.
-	(remove_thread): New function.
-	(clear_inferiors): Use for_each_inferior and free_one_thread.
-	(find_inferior): New function.
-	(find_inferior_id): New function.
-	(inferior_target_data): Update argument type.
-	(set_inferior_target_data): Likewise.
-	(inferior_regcache_data): Likewise.
-	(set_inferior_regcache_data): Likewise.
-	* linux-low.c (linux_bp_reinsert): Remove.
-	(all_processes, stopping_threads, using_thrads)
-	(struct pending_signals, debug_threads, pid_of): New.
-	(inferior_pid): Replace with macro.
-	(struct inferior_linux_data): Remove.
-	(get_stop_pc, add_process): New functions.
-	(linux_create_inferior): Restore SIGRTMIN+1 before calling exec.
-	Use add_process and add_thread.
-	(linux_attach_lwp): New function, based on old linux_attach.  Use
-	add_process and add_thread.  Set stop_expected for new threads.
-	(linux_attach): New function.
-	(linux_kill_one_process): New function.
-	(linux_kill): Kill all LWPs.
-	(linux_thread_alive): Use find_inferior_id.
-	(check_removed_breakpoints, status_pending_p): New functions.
-	(linux_wait_for_process): Renamed from linux_wait_for_one_inferior.
-	Update.  Use WNOHANG.  Wait for cloned processes also.  Update process
-	struct for the found process.
-	(linux_wait_for_event): New function.
-	(linux_wait): Use it.  Support LWPs.
-	(send_sigstop, wait_for_sigstop, stop_all_processes)
-	(linux_resume_one_process, linux_continue_one_process): New functions.
-	(linux_resume): Support LWPs.
-	(REGISTER_RAW_SIZE): Remove.
-	(fetch_register): Use register_size instead.  Call supply_register.
-	(usr_store_inferior_registers): Likewise.  Call collect_register.
-	Fix recursive case.
-	(regsets_fetch_inferior_registers): Improve error message.
-	(regsets_store_inferior_registers): Add debugging.
-	(linux_look_up_symbols): Call thread_db_init if USE_THREAD_DB.
-	(unstopped_p, linux_signal_pid): New functions.
-	(linux_target_ops): Add linux_signal_pid.
-	(linux_init_signals): New function.
-	(initialize_low): Call it.  Initialize using_threads.
-	* regcache.c (inferior_regcache_data): Add valid
-	flag.
-	(get_regcache): Fetch registers lazily.  Add fetch argument
-	and update all callers.
-	(regcache_invalidate_one, regcache_invalidate): New
-	functions.
-	(new_register_cache): Renamed from create_register_cache.
-	Return the new regcache.
-	(free_register_cache): Change argument to a void *.
-	(registers_to_string, registers_from_string): Call get_regcache
-	with fetch flag set.
-	(register_data): Make static.  Pass fetch flag to get_regcache.
-	(supply_register): Call get_regcache with fetch flag clear.
-	(collect_register): Call get_regcache with fetch flag set.
-	(collect_register_as_string): New function.
-	* regcache.h: Update.
-	* remote-utils.c (putpkt): Flush after debug output and use
-	stderr.
-	Handle input interrupts while waiting for an ACK.
-	(input_interrupt): Use signal_pid method.
-	(getpkt): Flush after debug output and use stderr.
-	(outreg): Use collect_register_as_string.
-	(new_thread_notify, dead_thread_notify): New functions.
-	(prepare_resume_reply): Check using_threads.  Set thread_from_wait
-	and general_thread.
-	(look_up_one_symbol): Flush after debug output.
-	* server.c (step_thread, server_waiting): New variables.
-	(start_inferior): Don't use signal_pid.  Update call to mywait.
-	(attach_inferior): Update call to mywait.
-	(handle_query): Handle qfThreadInfo and qsThreadInfo.
-	(main): Don't fetch/store registers explicitly.  Use
-	set_desired_inferior.  Support proposed ``Hs'' packet.  Update
-	calls to mywait.
-	* server.h: Update.
-	(struct inferior_list, struct_inferior_list_entry): New.
-	* target.c (set_desired_inferior): New.
-	(write_inferior_memory): Constify.
-	(mywait): New function.
-	* target.h: Update.
-	(struct target_ops): New signal_pid method.
-	(mywait): Removed macro, added prototype.
-
-	* linux-low.h (regset_func): Removed.
-	(regset_fill_func, regset_store_func): New.
-	(enum regset_type): New.
-	(struct regset_info): Add type field.  Use new operation types.
-	(struct linux_target_ops): stop_pc renamed to get_pc.
-	Add decr_pc_after_break and breakpoint_at.
-	(get_process, get_thread_proess, get_process_thread)
-	(strut process_info, all_processes, linux_attach_lwp)
-	(thread_db_init): New.
-
-	* linux-arm-low.c (arm_get_pc, arm_set_pc,
-	arm_breakpoint, arm_breakpoint_len, arm_breakpoint_at): New.
-	(the_low_target): Add new members.
-	* linux-i386-low.c (i386_store_gregset, i386_store_fpregset)
-	(i386_store_fpxregset): Constify.
-	(target_regsets): Add new kind identifier.
-	(i386_get_pc): Renamed from i386_stop_pc.  Simplify.
-	(i386_set_pc): Add debugging.
-	(i386_breakpoint_at): New function.
-	(the_low_target): Add new members.
-	* linux-mips-low.c (mips_get_pc, mips_set_pc)
-	(mips_breakpoint, mips_breakpoint_len, mips_reinsert_addr)
-	(mips_breakpoint_at): New.
-	(the_low_target): Add new members.
-	* linux-ppc-low.c (ppc_get_pc, ppc_set_pc)
-	(ppc_breakpoint, ppc_breakpoint_len, ppc_breakpoint_at): New.
-	(the_low_target): Add new members.
-	* linux-sh-low.c (sh_get_pc, sh_set_pc)
-	(sh_breakpoint, sh_breakpoint_len, sh_breakpoint_at): New.
-	(the_low_target): Add new members.
-	* linux-x86-64-low.c (target_regsets): Add new kind
-	identifier.
-
-2002-05-15  Daniel Jacobowitz  <drow@mvista.com>
-
-	From Martin Pool <mbp@samba.org>:
-	* server.c (gdbserver_usage): New function.
-	(main): Call it.
-
-2002-05-14  Daniel Jacobowitz  <drow@mvista.com>
-
-	* mem-break.c (reinsert_breakpoint_by_bp): Correct typo
-	stop_at -> stop_pc.
-
-2002-05-04  Andrew Cagney  <ac131313@redhat.com>
-
-	* Makefile.in: Remove obsolete code.
-
-2002-04-24  Michal Ludvig  <mludvig@suse.cz>
-
-	* linux-low.c (regsets_fetch_inferior_registers),
-	(regsets_store_inferior_registers): Removed cast to int from
-	ptrace() calls.
-	* regcache.h: Added declaration of struct inferior_info.
-
-2002-04-20  Daniel Jacobowitz  <drow@mvista.com>
-
-	* inferiors.c (struct inferior_info): Add regcache_data.
-	(add_inferior): Call create_register_cache.
-	(clear_inferiors): Call free_register_cache.
-	(inferior_regcache_data, set_inferior_regcache_data): New functions.
-	* regcache.c (struct inferior_regcache_data): New.
-	(registers): Remove.
-	(get_regcache): New function.
-	(create_register_cache, free_register_cache): New functions.
-	(set_register_cache): Don't initialize the register cache here.
-	(registers_to_string, registers_from_string, register_data): Call
-	get_regcache.
-	* regcache.h: Add prototypes.
-	* server.h: Likewise.
-
-2002-04-20  Daniel Jacobowitz  <drow@mvista.com>
-
-	* mem-break.c: New file.
-	* mem-break.h: New file.
-	* Makefile.in: Add mem-break.o rule; update server.h
-	dependencies.
-	* inferiors.c (struct inferior_info): Add target_data
-	member.
-	(clear_inferiors): Free target_data member if set.
-	(inferior_target_data, set_inferior_target_data): New functions.
-	* linux-i386-low.c (i386_breakpoint, i386_breakpoint_len)
-	(i386_stop_pc, i386_set_pc): New.  Add to the_low_target.
-	* linux-low.c (linux_bp_reinsert): New variable.
-	(struct inferior_linux_data): New.
-	(linux_create_inferior): Use set_inferior_target_data.
-	(linux_attach): Likewise.  Call add_inferior.
-	(linux_wait_for_one_inferior): New function.
-	(linux_wait): Call it.
-	(linux_write_memory): Add const.
-	(initialize_low): Call set_breakpoint_data.
-	* linux-low.h (struct linux_target_ops): Add breakpoint
-	handling members.
-	* server.c (attach_inferior): Remove extra add_inferior
-	call.
-	* server.h: Include mem-break.h.  Update inferior.c
-	prototypes.
-	* target.c (read_inferior_memory)
-	(write_inferior_memory): New functions.
-	* target.h (read_inferior_memory)
-	(write_inferior_memory): Change macros to prototypes.
-	(struct target_ops): Update comments.  Add const to write_memory
-	definition.
-
-2002-04-11  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.c (usr_store_inferior_registers): Support
-	registers which are allowed to fail to store.
-	* linux-low.h (linux_target_ops): Likewise.
-	* linux-ppc-low.c (ppc_regmap): Support FPSCR.
-	(ppc_cannot_store_register): FPSCR may not be storable.
-
-2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
-
-	* server.h: Include <string.h> if HAVE_STRING_H.
-	* ChangeLog: Correct paths in last ChangeLog entry.
-
-2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
-
-	* linux-low.h: Remove obsolete prototypes.
-	(struct linux_target_ops): New.
-	(extern the_low_target): New.
-	* linux-low.c (num_regs, regmap): Remove declarations.
-	(register_addr): Use the_low_target explicitly.
-	(fetch_register): Likewise.
-	(usr_fetch_inferior_registers): Likewise.
-	(usr_store_inferior_registers): Likewise.
-	* linux-arm-low.c (num_regs): Remove.
-	(arm_num_regs): Define.
-	(arm_regmap): Renamed from regmap, made static.
-	(arm_cannot_fetch_register): Renamed from cannot_fetch_register,
-	made static.
-	(arm_cannot_store_register): Renamed from cannot_store_register,
-	made static.
-	(the_low_target): New.
-	* linux-i386-low.c (num_regs): Remove.
-	(i386_num_regs): Define.
-	(i386_regmap): Renamed from regmap, made static.
-	(i386_cannot_fetch_register): Renamed from cannot_fetch_register,
-	made static.
-	(i386_cannot_store_register): Renamed from cannot_store_register,
-	made static.
-	(the_low_target): New.
-	* linux-ia64-low.c (num_regs): Remove.
-	(ia64_num_regs): Define.
-	(ia64_regmap): Renamed from regmap, made static.
-	(ia64_cannot_fetch_register): Renamed from cannot_fetch_register,
-	made static.
-	(ia64_cannot_store_register): Renamed from cannot_store_register,
-	made static.
-	(the_low_target): New.
-	* linux-m68k-low.c (num_regs): Remove.
-	(m68k_num_regs): Define.
-	(m68k_regmap): Renamed from regmap, made static.
-	(m68k_cannot_fetch_register): Renamed from cannot_fetch_register,
-	made static.
-	(m68k_cannot_store_register): Renamed from cannot_store_register,
-	made static.
-	(the_low_target): New.
-	* linux-mips-low.c (num_regs): Remove.
-	(mips_num_regs): Define.
-	(mips_regmap): Renamed from regmap, made static.
-	(mips_cannot_fetch_register): Renamed from cannot_fetch_register,
-	made static.
-	(mips_cannot_store_register): Renamed from cannot_store_register,
-	made static.
-	(the_low_target): New.
-	* linux-ppc-low.c (num_regs): Remove.
-	(ppc_num_regs): Define.
-	(ppc_regmap): Renamed from regmap, made static.
-	(ppc_cannot_fetch_register): Renamed from cannot_fetch_register,
-	made static.
-	(ppc_cannot_store_register): Renamed from cannot_store_register,
-	made static.
-	(the_low_target): New.
-	* linux-s390-low.c (num_regs): Remove.
-	(s390_num_regs): Define.
-	(s390_regmap): Renamed from regmap, made static.
-	(s390_cannot_fetch_register): Renamed from cannot_fetch_register,
-	made static.
-	(s390_cannot_store_register): Renamed from cannot_store_register,
-	made static.
-	(the_low_target): New.
-	* linux-sh-low.c (num_regs): Remove.
-	(sh_num_regs): Define.
-	(sh_regmap): Renamed from regmap, made static.
-	(sh_cannot_fetch_register): Renamed from cannot_fetch_register,
-	made static.
-	(sh_cannot_store_register): Renamed from cannot_store_register,
-	made static.
-	(the_low_target): New.
-	* linux-x86-64-low.c (x86_64_regmap): Renamed from regmap.
-	(the_low_target): New.
-
-2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
-
-	* Makefile.in: Add stamp-h target.
-	* configure.in: Create stamp-h.
-	* configure: Regenerated.
-
-2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
-
-	* inferiors.c: New file.
-	* target.c: New file.
-	* target.h: New file.
-	* Makefile.in:  Add target.o and inferiors.o.  Update
-	dependencies.
-	* linux-low.c (inferior_pid): New static variable,
-	moved from server.c.
-	(linux_create_inferior): Renamed from create_inferior.
-	Call add_inferior.  Return 0 on success instead of a PID.
-	(linux_attach): Renamed from myattach.
-	(linux_kill): Renamed from kill_inferior.  Call clear_inferiors ().
-	(linux_thread_alive): Renamed from mythread_alive.
-	(linux_wait): Renamed from mywait.  Call clear_inferiors () if the
-	child dies.
-	(linux_resume): Renamed from myresume.  Add missing ``return 0''.
-	(regsets_store_inferior_registers): Correct error message.
-	Add missing ``return 0''.
-	(linux_fetch_registers): Renamed from fetch_inferior_registers.
-	(linux_store_registers): Renamed from store_inferior_registers.
-	(linux_read_memory): Renamed from read_inferior_memory.
-	(linux_write_memory): Renamed from write_inferior_memory.
-	(linux_target_ops): New structure.
-	(initialize_low): Call set_target_ops ().
-	* remote-utils.c (unhexify): New function.
-	(hexify): New function.
-	(input_interrupt): Send signals to ``signal_pid''.
-	* server.c (inferior_pid): Remove.
-	(start_inferior): Update create_inferior call.
-	(attach_inferior): Call add_inferior.
-	(handle_query): New function.
-	(main): Call handle_query for `q' packets.
-	* server.h: Include "target.h".  Remove obsolete prototypes.
-	Add prototypes for "inferiors.c", "target.c", hexify, and unhexify.
-
-2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
-
-	* Makefile.in: Add WARN_CFLAGS.  Update configury
-	dependencies.
-	* configure.in: Check for <string.h>
-	* configure: Regenerate.
-	* config.in: Regenerate.
-	* gdbreplay.c: Include needed system headers.
-	(remote_open): Remove strchr prototype.
-	* linux-low.h: Correct #ifdef to HAVE_LINUX_USRREGS.
-	* regcache.c (supply_register): Change buf argument to const void *.
-	(supply_register_by_name): Likewise.
-	(collect_register): Change buf argument to void *.
-	(collect_register_by_name): Likewise.
-	* regcache.h: Add missing prototypes.
-	* remote-utils.c: Include <arpa/inet.h> for inet_ntoa.
-	* server.c (handle_query): New function.
-	(attached): New static variable, moved out of main.
-	(main): Quiet longjmp clobber warnings.
-	* server.h: Add ATTR_NORETURN and ATTR_FORMAT.  Update prototypes.
-	* utils.c (error): Remove NORETURN.
-	(fatal): Likewise.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/config.in ./gdb/gdbserver/config.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/config.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/config.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,445 +0,0 @@
-/* config.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-#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
-
-/* Define if self-testing features should be enabled */
-#undef GDB_SELF_TEST
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
-
-/* define if the compiler supports basic C++11 syntax */
-#undef HAVE_CXX11
-
-/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
-   you don't. */
-#undef HAVE_DECL_ADDR_NO_RANDOMIZE
-
-/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL_ASPRINTF
-
-/* Define to 1 if you have the declaration of `basename(char *)', and to 0 if
-   you don't. */
-#undef HAVE_DECL_BASENAME
-
-/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
-#undef HAVE_DECL_FFS
-
-/* Define to 1 if you have the declaration of `perror', and to 0 if you don't.
-   */
-#undef HAVE_DECL_PERROR
-
-/* Define to 1 if you have the declaration of `ptrace', and to 0 if you don't.
-   */
-#undef HAVE_DECL_PTRACE
-
-/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL_SNPRINTF
-
-/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't.
-   */
-#undef HAVE_DECL_STRSTR
-
-/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't.
-   */
-#undef HAVE_DECL_STRTOL
-
-/* Define to 1 if you have the declaration of `strtoll', and to 0 if you
-   don't. */
-#undef HAVE_DECL_STRTOLL
-
-/* Define to 1 if you have the declaration of `strtoul', and to 0 if you
-   don't. */
-#undef HAVE_DECL_STRTOUL
-
-/* Define to 1 if you have the declaration of `strtoull', and to 0 if you
-   don't. */
-#undef HAVE_DECL_STRTOULL
-
-/* Define to 1 if you have the declaration of `strverscmp', and to 0 if you
-   don't. */
-#undef HAVE_DECL_STRVERSCMP
-
-/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL_VASPRINTF
-
-/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL_VSNPRINTF
-
-/* Define to 1 if you have the `dladdr' function. */
-#undef HAVE_DLADDR
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if the system has the type `Elf32_auxv_t'. */
-#undef HAVE_ELF32_AUXV_T
-
-/* Define to 1 if the system has the type `Elf64_auxv_t'. */
-#undef HAVE_ELF64_AUXV_T
-
-/* Define if <sys/procfs.h> has elf_fpregset_t. */
-#undef HAVE_ELF_FPREGSET_T
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `fdwalk' function. */
-#undef HAVE_FDWALK
-
-/* Define to 1 if you have the `fork' function. */
-#undef HAVE_FORK
-
-/* Define to 1 if you have the `getauxval' function. */
-#undef HAVE_GETAUXVAL
-
-/* Define to 1 if you have the `getrlimit' function. */
-#undef HAVE_GETRLIMIT
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#undef HAVE_LANGINFO_CODESET
-
-/* Define to 1 if you have the `dl' library (-ldl). */
-#undef HAVE_LIBDL
-
-/* Define if the target supports branch tracing. */
-#undef HAVE_LINUX_BTRACE
-
-/* Define to 1 if you have the <linux/elf.h> header file. */
-#undef HAVE_LINUX_ELF_H
-
-/* Define to 1 if you have the <linux/perf_event.h> header file. */
-#undef HAVE_LINUX_PERF_EVENT_H
-
-/* Define if the target supports register sets. */
-#undef HAVE_LINUX_REGSETS
-
-/* Define if the target supports PTRACE_PEEKUSR for register access. */
-#undef HAVE_LINUX_USRREGS
-
-/* Define to 1 if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define to 1 if the system has the type `long long'. */
-#undef HAVE_LONG_LONG
-
-/* Define if <thread_db.h> has lwpid_t. */
-#undef HAVE_LWPID_T
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#undef HAVE_NETDB_H
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
-/* Define to 1 if you have the <netinet/tcp.h> header file. */
-#undef HAVE_NETINET_TCP_H
-
-/* Define if you support the personality syscall. */
-#undef HAVE_PERSONALITY
-
-/* Define to 1 if you have the `pipe' function. */
-#undef HAVE_PIPE
-
-/* Define to 1 if you have the `pipe2' function. */
-#undef HAVE_PIPE2
-
-/* Define to 1 if you have the `pread' function. */
-#undef HAVE_PREAD
-
-/* Define to 1 if you have the `pread64' function. */
-#undef HAVE_PREAD64
-
-/* Define if <sys/procfs.h> has prfpregset_t. */
-#undef HAVE_PRFPREGSET_T
-
-/* Define if <sys/procfs.h> has prgregset_t. */
-#undef HAVE_PRGREGSET_T
-
-/* Define to 1 if you have the <proc_service.h> header file. */
-#undef HAVE_PROC_SERVICE_H
-
-/* 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
-
-/* Define if the target supports PTRACE_GETREGS for register access. */
-#undef HAVE_PTRACE_GETREGS
-
-/* Define to 1 if you have the <ptrace.h> header file. */
-#undef HAVE_PTRACE_H
-
-/* Define to 1 if you have the `pwrite' function. */
-#undef HAVE_PWRITE
-
-/* Define to 1 if you have the `setns' function. */
-#undef HAVE_SETNS
-
-/* Define to 1 if you have the `sigaction' function. */
-#undef HAVE_SIGACTION
-
-/* Define to 1 if you have the <signal.h> header file. */
-#undef HAVE_SIGNAL_H
-
-/* Define to 1 if you have the `sigprocmask' function. */
-#undef HAVE_SIGPROCMASK
-
-/* Define if sigsetjmp is available. */
-#undef HAVE_SIGSETJMP
-
-/* Define to 1 if you have the `socketpair' function. */
-#undef HAVE_SOCKETPAIR
-
-/* Define to 1 if the system has the type `socklen_t'. */
-#undef HAVE_SOCKLEN_T
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if `st_blksize' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_BLKSIZE
-
-/* Define to 1 if `st_blocks' is a member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_BLOCKS
-
-/* Define to 1 if `fs_base' is a member of `struct user_regs_struct'. */
-#undef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-
-/* Define to 1 if `gs_base' is a member of `struct user_regs_struct'. */
-#undef HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE
-
-/* Define to 1 if the target supports __sync_*_compare_and_swap */
-#undef HAVE_SYNC_BUILTINS
-
-/* Define to 1 if you have the <sys/file.h> header file. */
-#undef HAVE_SYS_FILE_H
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#undef HAVE_SYS_IOCTL_H
-
-/* Define to 1 if you have the <sys/procfs.h> header file. */
-#undef HAVE_SYS_PROCFS_H
-
-/* Define to 1 if you have the <sys/ptrace.h> header file. */
-#undef HAVE_SYS_PTRACE_H
-
-/* Define to 1 if you have the <sys/reg.h> header file. */
-#undef HAVE_SYS_REG_H
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#undef HAVE_SYS_RESOURCE_H
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <sys/un.h> header file. */
-#undef HAVE_SYS_UN_H
-
-/* Define to 1 if you have the <sys/wait.h> header file. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define if TD_VERSION is available. */
-#undef HAVE_TD_VERSION
-
-/* Define to 1 if you have the <termios.h> header file. */
-#undef HAVE_TERMIOS_H
-
-/* Define to 1 if you have the <thread_db.h> header file. */
-#undef HAVE_THREAD_DB_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define if UST is available */
-#undef HAVE_UST
-
-/* Define to 1 if you have the `vfork' function. */
-#undef HAVE_VFORK
-
-/* Define to 1 if you have the <vfork.h> header file. */
-#undef HAVE_VFORK_H
-
-/* Define to 1 if you have the <wait.h> header file. */
-#undef HAVE_WAIT_H
-
-/* Define to 1 if `fork' works. */
-#undef HAVE_WORKING_FORK
-
-/* Define to 1 if `vfork' works. */
-#undef HAVE_WORKING_VFORK
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* 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
-
-/* Define to the type of arg 3 for ptrace. */
-#undef PTRACE_TYPE_ARG3
-
-/* Define to the type of arg 4 for ptrace. */
-#undef PTRACE_TYPE_ARG4
-
-/* Define to the type of arg 5 for ptrace. */
-#undef PTRACE_TYPE_ARG5
-
-/* Define as the return type of ptrace. */
-#undef PTRACE_TYPE_RET
-
-/* Bug reporting address */
-#undef REPORT_BUGS_TO
-
-/* The size of `long long', as computed by sizeof. */
-#undef SIZEOF_LONG_LONG
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define if we should use libthread_db directly. */
-#undef USE_LIBTHREAD_DB_DIRECTLY
-
-/* Enable extensions on AIX 3, Interix.  */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-
-
-/* Define if we should use libthread_db. */
-#undef USE_THREAD_DB
-
-/* Define if we should use the Windows API, instead of the POSIX API. On
-   Windows, we use the Windows API when building for MinGW, but the POSIX API
-   when building for Cygwin. */
-#undef USE_WIN32API
-
-/* Define if an XML target description is available. */
-#undef USE_XML
-
-/* Enable large inode numbers on Mac OS X 10.5.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-#undef _FILE_OFFSET_BITS
-
-/* Define for large files, on AIX-style hosts. */
-#undef _LARGE_FILES
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
-   this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#undef _POSIX_SOURCE
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef pid_t
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-/* Define as `fork' if `vfork' does not work. */
-#undef vfork
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/configure ./gdb/gdbserver/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/configure	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/configure	1970-01-01 00:00:00.000000000 +0000
@@ -1,10726 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-PACKAGE_URL=
-
-ac_unique_file="server.c"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='LTLIBOBJS
-LIBOBJS
-GNULIB_STDINT_H
-extra_libraries
-IPA_DEPFILES
-srv_xmlfiles
-srv_xmlbuiltin
-GDBSERVER_LIBS
-GDBSERVER_DEPFILES
-RDYNAMIC
-REPORT_BUGS_TEXI
-REPORT_BUGS_TO
-PKGVERSION
-WERROR_CFLAGS
-WARN_CFLAGS
-ustinc
-ustlibs
-PTHREAD_CFLAGS
-PTHREAD_LIBS
-PTHREAD_CC
-ax_pthread_config
-SED
-ALLOCA
-CCDEPMODE
-CONFIG_SRC_SUBDIR
-DEPDIR
-am__leading_dot
-host_noncanonical
-target_noncanonical
-CXX_DIALECT
-HAVE_CXX11
-RANLIB
-AR
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_os
-target_vendor
-target_cpu
-target
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-EGREP
-GREP
-CPP
-ac_ct_CXX
-CXXFLAGS
-CXX
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-MAINT
-MAINTAINER_MODE_FALSE
-MAINTAINER_MODE_TRUE
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_maintainer_mode
-enable_largefile
-enable_unit_tests
-with_ust
-with_ust_include
-with_ust_lib
-enable_werror
-enable_build_warnings
-enable_gdb_build_warnings
-with_pkgversion
-with_bugurl
-with_libthread_db
-enable_inprocess_agent
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CXX
-CXXFLAGS
-CCC
-CPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures this package to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-  --target=TARGET   configure for building compilers for TARGET [HOST]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-maintainer-mode
-                          enable make rules and dependencies not useful (and
-                          sometimes confusing) to the casual installer
-  --disable-largefile     omit support for large files
-  --enable-unit-tests     Enable the inclusion of unit tests when compiling
-                          GDB
-  --enable-werror         treat compile warnings as errors
-  --enable-build-warnings enable build-time compiler warnings if gcc is used
-  --enable-gdb-build-warnings
-                          enable GDB specific build-time compiler warnings if
-                          gcc is used
-  --enable-inprocess-agent
-                          inprocess agent
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-ust=PATH       Specify prefix directory for the installed UST package
-                          Equivalent to --with-ust-include=PATH/include
-                          plus --with-ust-lib=PATH/lib
-  --with-ust-include=PATH Specify directory for installed UST include files
-  --with-ust-lib=PATH   Specify the directory for the installed UST library
-  --with-pkgversion=PKG   Use PKG in the version string in place of "GDB"
-  --with-bugurl=URL       Direct users to URL to report a bug
-  --with-libthread-db=PATH
-                          use given libthread_db directly
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  CPP         C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to the package provider.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-configure
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-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_compile") 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_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-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_compile") 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_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-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_cpp conftest.$ac_ext") 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; } > conftest.i && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $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
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-esac
-  { $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
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  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>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { 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_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  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_c_try_run
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  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.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext 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_c_check_header_compile
-
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  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
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext 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_c_check_type
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_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_c_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_c_try_link
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_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_c_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_c_check_func
-
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
-# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  as_decl_name=`echo $2|sed 's/ *(.*//'`
-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-#ifndef $as_decl_name
-#ifdef __cplusplus
-  (void) $as_decl_use;
-#else
-  (void) $as_decl_name;
-#endif
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext 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_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
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
-ac_fn_c_compute_int ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if test "$cross_compiling" = yes; then
-    # Depending upon the size, compute the lo and hi bounds.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=$ac_mid; break
-else
-  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_lo=$ac_mid; break
-else
-  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo= ac_hi=
-			  break
-			fi
-			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  ac_lo= ac_hi=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_hi=$ac_mid
-else
-  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in #((
-?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
-'') ac_retval=1 ;;
-esac
-  else
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (($2) < 0)
-    {
-      long int i = longval ();
-      if (i != ($2))
-	return 1;
-      fprintf (f, "%ld", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ($2))
-	return 1;
-      fprintf (f, "%lu", i);
-    }
-  /* Do not output a trailing newline, as this causes \r\n confusion
-     on some platforms.  */
-  return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
-  ac_retval=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-rm -f conftest.val
-
-  fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_compute_int
-
-# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
-# ----------------------------------------------------
-# Tries to find if the field MEMBER exists in type AGGR, after including
-# INCLUDES, setting cache variable VAR accordingly.
-ac_fn_c_check_member ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (ac_aggr.$3)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$4=yes"
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (sizeof ac_aggr.$3)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$4=yes"
-else
-  eval "$4=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$4
-	       { $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_c_check_member
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by $as_me, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-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
-
-
-
-
-
-ac_config_headers="$ac_config_headers config.h:config.in"
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-    # Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then :
-  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-else
-  USE_MAINTAINER_MODE=no
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
-$as_echo "$USE_MAINTAINER_MODE" >&6; }
-   if test $USE_MAINTAINER_MODE = yes; then
-  MAINTAINER_MODE_TRUE=
-  MAINTAINER_MODE_FALSE='#'
-else
-  MAINTAINER_MODE_TRUE='#'
-  MAINTAINER_MODE_FALSE=
-fi
-
-  MAINT=$MAINTAINER_MODE_TRUE
-
-
-
-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
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; 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_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$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_CC="${ac_tool_prefix}gcc"
-    $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
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; 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_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_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_ac_ct_CC="gcc"
-    $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
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; 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_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$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_CC="${ac_tool_prefix}cc"
-    $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
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; 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_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-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
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $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
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$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_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$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_CC="$ac_tool_prefix$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
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-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_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_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_ac_ct_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
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-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_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-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_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-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>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { 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>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { 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_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-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_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-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
-
-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 -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$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_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # 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_CXX="$ac_tool_prefix$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
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-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_ac_ct_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # 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_ac_ct_CXX="$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
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-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_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if ${ac_cv_cxx_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if ${ac_cv_prog_cxx_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-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
-
-
-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 how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-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 grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_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$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_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 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "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_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_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_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_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$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_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 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "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_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_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_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
-  MINIX=yes
-else
-  MINIX=
-fi
-
-
-  if test "$MINIX" = yes; then
-
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
-
-
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
-
-
-$as_echo "#define _MINIX 1" >>confdefs.h
-
-  fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#         define __EXTENSIONS__ 1
-          $ac_includes_default
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_safe_to_define___extensions__=yes
-else
-  ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
-  test $ac_cv_safe_to_define___extensions__ = yes &&
-    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
-  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
-  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
-
-
-
-# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile;
-fi
-
-if test "$enable_largefile" != no; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_sys_largefile_CC=no
-     if test "$GCC" != yes; then
-       ac_save_CC=$CC
-       while :; do
-	 # IRIX 6.2 and later do not support large files by default,
-	 # so use the C compiler's -n32 option if that helps.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-	 if ac_fn_c_try_compile "$LINENO"; then :
-  break
-fi
-rm -f core conftest.err conftest.$ac_objext
-	 CC="$CC -n32"
-	 if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_largefile_CC=' -n32'; break
-fi
-rm -f core conftest.err conftest.$ac_objext
-	 break
-       done
-       CC=$ac_save_CC
-       rm -f conftest.$ac_ext
-    fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
-  if test "$ac_cv_sys_largefile_CC" != no; then
-    CC=$CC$ac_cv_sys_largefile_CC
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_file_offset_bits=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_file_offset_bits=64; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_file_offset_bits=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
-  no | unknown) ;;
-  *)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-;;
-esac
-rm -rf conftest*
-  if test $ac_cv_sys_file_offset_bits = unknown; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_large_files=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_large_files=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_large_files=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
-  no | unknown) ;;
-  *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
-;;
-esac
-rm -rf conftest*
-  fi
-
-
-fi
-
-
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if ${ac_cv_target+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$target_alias" = x; then
-  ac_cv_target=$ac_cv_host
-else
-  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
-  test "$program_prefix$program_suffix$program_transform_name" = \
-    NONENONEs,x,x, &&
-  program_prefix=${target_alias}-
-
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; 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_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar"
-    $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
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; 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_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_ac_ct_AR="ar"
-    $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
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AR" = x; then
-    AR=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; 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_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib"
-    $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
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; 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_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_ac_ct_RANLIB="ranlib"
-    $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
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-
-# We require a C++11 compiler.  Check if one is available, and if
-# necessary, set CXX_DIALECT to some -std=xxx switch.
-
-  ax_cxx_compile_alternatives="11 0x"    ax_cxx_compile_cxx11_required=true
-  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
-  CXX_DIALECT=""
-  ac_success=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
-$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
-if ${ax_cv_cxx_compile_cxx11+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ax_cv_cxx_compile_cxx11=yes
-else
-  ax_cv_cxx_compile_cxx11=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
-$as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
-  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
-    ac_success=yes
-  fi
-
-    if test x$ac_success = xno; then
-    for alternative in ${ax_cxx_compile_alternatives}; do
-      switch="-std=gnu++${alternative}"
-      cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
-$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
-if eval \${$cachevar+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_CXX="$CXX"
-         CXX="$CXX $switch"
-         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  eval $cachevar=yes
-else
-  eval $cachevar=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-         CXX="$ac_save_CXX"
-fi
-eval ac_res=\$$cachevar
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-      if eval test x\$$cachevar = xyes; then
-        CXX_DIALECT="$switch"
-        ac_success=yes
-        break
-      fi
-    done
-  fi
-
-    if test x$ac_success = xno; then
-                for alternative in ${ax_cxx_compile_alternatives}; do
-      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
-        cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
-$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
-if eval \${$cachevar+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_CXX="$CXX"
-           CXX="$CXX $switch"
-           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
-
-#ifndef __cplusplus
-
-#error "This is not a C++ compiler"
-
-#elif __cplusplus < 201103L
-
-#error "This is not a C++11 compiler"
-
-#else
-
-namespace cxx11
-{
-
-  namespace test_static_assert
-  {
-
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-  }
-
-  namespace test_final_override
-  {
-
-    struct Base
-    {
-      virtual void f() {}
-    };
-
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
-
-  }
-
-  namespace test_double_right_angle_brackets
-  {
-
-    template < typename T >
-    struct check {};
-
-    typedef check<void> single_type;
-    typedef check<check<void>> double_type;
-    typedef check<check<check<void>>> triple_type;
-    typedef check<check<check<check<void>>>> quadruple_type;
-
-  }
-
-  namespace test_decltype
-  {
-
-    int
-    f()
-    {
-      int a = 1;
-      decltype(a) b = 2;
-      return a + b;
-    }
-
-  }
-
-  namespace test_type_deduction
-  {
-
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
-
-    template < typename T >
-    struct is_same<T, T>
-    {
-      static const bool value = true;
-    };
-
-    template < typename T1, typename T2 >
-    auto
-    add(T1 a1, T2 a2) -> decltype(a1 + a2)
-    {
-      return a1 + a2;
-    }
-
-    int
-    test(const int c, volatile int v)
-    {
-      static_assert(is_same<int, decltype(0)>::value == true, "");
-      static_assert(is_same<int, decltype(c)>::value == false, "");
-      static_assert(is_same<int, decltype(v)>::value == false, "");
-      auto ac = c;
-      auto av = v;
-      auto sumi = ac + av + 'x';
-      auto sumf = ac + av + 1.0;
-      static_assert(is_same<int, decltype(ac)>::value == true, "");
-      static_assert(is_same<int, decltype(av)>::value == true, "");
-      static_assert(is_same<int, decltype(sumi)>::value == true, "");
-      static_assert(is_same<int, decltype(sumf)>::value == false, "");
-      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-      return (sumf > 0.0) ? sumi : add(c, v);
-    }
-
-  }
-
-  namespace test_noexcept
-  {
-
-    int f() { return 0; }
-    int g() noexcept { return 0; }
-
-    static_assert(noexcept(f()) == false, "");
-    static_assert(noexcept(g()) == true, "");
-
-  }
-
-  namespace test_constexpr
-  {
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-    {
-      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-    }
-
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
-
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
-
-  }
-
-  namespace test_rvalue_references
-  {
-
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
-
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
-
-    void
-    test()
-    {
-      int i = 0;
-      const int c = 0;
-      static_assert(decltype(f(i))::value == 1, "");
-      static_assert(decltype(f(c))::value == 2, "");
-      static_assert(decltype(f(0))::value == 3, "");
-    }
-
-  }
-
-  namespace test_uniform_initialization
-  {
-
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
-
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
-
-  }
-
-  namespace test_lambdas
-  {
-
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
-
-    int
-    test2()
-    {
-      auto a = [](int i, int j){ return i + j; }(1, 2);
-      auto b = []() -> int { return '0'; }();
-      auto c = [=](){ return a + b; }();
-      auto d = [&](){ return c; }();
-      auto e = [a, &b](int x) mutable {
-        const auto identity = [](int y){ return y; };
-        for (auto i = 0; i < a; ++i)
-          a += b--;
-        return x + identity(a + b);
-      }(0);
-      return a + b + c + d + e;
-    }
-
-    int
-    test3()
-    {
-      const auto nullary = [](){ return 0; };
-      const auto unary = [](int x){ return x; };
-      using nullary_t = decltype(nullary);
-      using unary_t = decltype(unary);
-      const auto higher1st = [](nullary_t f){ return f(); };
-      const auto higher2nd = [unary](nullary_t f1){
-        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-      };
-      return higher1st(nullary) + higher2nd(nullary)(unary);
-    }
-
-  }
-
-  namespace test_variadic_templates
-  {
-
-    template <int...>
-    struct sum;
-
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
-
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
-
-    static_assert(sum<>::value == 0, "");
-    static_assert(sum<1>::value == 1, "");
-    static_assert(sum<23>::value == 23, "");
-    static_assert(sum<1, 2>::value == 3, "");
-    static_assert(sum<5, 5, 11>::value == 21, "");
-    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-
-  }
-
-  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-  // because of this.
-  namespace test_template_alias_sfinae
-  {
-
-    struct foo {};
-
-    template<typename T>
-    using member = typename T::member_type;
-
-    template<typename T>
-    void func(...) {}
-
-    template<typename T>
-    void func(member<T>*) {}
-
-    void test();
-
-    void test() { func<foo>(0); }
-
-  }
-
-}  // namespace cxx11
-
-#endif  // __cplusplus >= 201103L
-
-
-
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  eval $cachevar=yes
-else
-  eval $cachevar=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-           CXX="$ac_save_CXX"
-fi
-eval ac_res=\$$cachevar
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-        if eval test x\$$cachevar = xyes; then
-          CXX_DIALECT="$switch"
-          ac_success=yes
-          break
-        fi
-      done
-      if test x$ac_success = xyes; then
-        break
-      fi
-    done
-  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
-
-  if test x$ax_cxx_compile_cxx11_required = xtrue; then
-    if test x$ac_success = xno; then
-      as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
-    fi
-  fi
-  if test x$ac_success = xno; then
-    HAVE_CXX11=0
-    { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
-$as_echo "$as_me: No compiler with C++11 support was found" >&6;}
-  else
-    HAVE_CXX11=1
-
-$as_echo "#define HAVE_CXX11 1" >>confdefs.h
-
-  fi
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-
-# Set the 'development' global.
-. $srcdir/../../bfd/development.sh
-
-
-# Check whether we will enable the inclusion of unit tests when
-# compiling GDB.
-#
-# The default value of this option changes depending whether we're on
-# development mode (in which case it's "true") or not (in which case
-# it's "false").
-# Check whether --enable-unit-tests was given.
-if test "${enable_unit_tests+set}" = set; then :
-  enableval=$enable_unit_tests; case "${enableval}" in
-  yes)  enable_unittests=true  ;;
-  no)   enable_unittests=false ;;
-  *)    as_fn_error $? "bad value ${enableval} for --{enable,disable}-unit-tests option" "$LINENO" 5 ;;
-esac
-else
-  enable_unittests=$development
-fi
-
-
-if $enable_unittests; then
-
-$as_echo "#define GDB_SELF_TEST 1" >>confdefs.h
-
-
-  srv_selftest_objs="gdbsupport/selftest.o"
-
-fi
-
-
- case ${build_alias} in
-  "") build_noncanonical=${build} ;;
-  *) build_noncanonical=${build_alias} ;;
-esac
-
- case ${host_alias} in
-  "") host_noncanonical=${build_noncanonical} ;;
-  *) host_noncanonical=${host_alias} ;;
-esac
-
- case ${target_alias} in
-  "") target_noncanonical=${host_noncanonical} ;;
-  *) target_noncanonical=${target_alias} ;;
-esac
-
-
-
-
-
-
-# Dependency checking.
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depdir"
-
-
-
-# Create sub-directories for objects and dependencies.
-CONFIG_SRC_SUBDIR="arch gdbsupport"
-
-
-ac_config_commands="$ac_config_commands gdbdepdir"
-
-
-depcc="$CC"   am_compiler_list=
-
-am_depcomp=$ac_aux_dir/depcomp
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  for depmode in $am_compiler_list; do
-    if test $depmode = none; then break; fi
-
-    $as_echo "$as_me:$LINENO: trying $depmode" >&5
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
-    done
-    echo "include sub/conftest.Po" > confmf
-
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
-    depcmd="depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c"
-    echo "| $depcmd" | sed -e 's/  */ /g' >&5
-    if env $depcmd > conftest.err 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po >>conftest.err 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po >>conftest.err 2>&1 &&
-       ${MAKE-make} -s -f confmf >>conftest.err 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-	$as_echo "$as_me:$LINENO: success" >&5
-        break
-      fi
-    fi
-    $as_echo "$as_me:$LINENO: failure, diagnostics are:" >&5
-    sed -e 's/^/| /' < conftest.err >&5
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-if test x${am_cv_CC_dependencies_compiler_type-none} = xnone
-then as_fn_error $? "no usable dependency style found" "$LINENO" 5
-else CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
-fi
-
-
-gnulib_extra_configure_args=
-# If large-file support is disabled, make sure gnulib does the same.
-if test "$enable_largefile" = no; then
-gnulib_extra_configure_args="$gnulib_extra_configure_args --disable-largefile"
-fi
-
-# Configure gnulib.  We can't use AC_CONFIG_SUBDIRS as that'd expect
-# to find the the source subdir to be configured directly under
-# gdbserver/.  We need to build gnulib under some other directory not
-# "gnulib", to avoid the problem of both GDB and GDBserver wanting to
-# build it in the same directory, when building in the source dir.
-
-  in_src="../../gnulib"
-  in_build="build-gnulib-gdbserver"
-  in_extra_args="$gnulib_extra_configure_args"
-
-  # Remove --cache-file, --srcdir, and --disable-option-checking arguments
-  # so they do not pile up.
-  ac_sub_configure_args=
-  ac_prev=
-  eval "set x $ac_configure_args"
-  shift
-  for ac_arg
-  do
-    if test -n "$ac_prev"; then
-      ac_prev=
-      continue
-    fi
-    case $ac_arg in
-    -cache-file | --cache-file | --cache-fil | --cache-fi \
-    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-      ac_prev=cache_file ;;
-    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
-    | --c=*)
-      ;;
-    --config-cache | -C)
-      ;;
-    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-      ac_prev=srcdir ;;
-    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-      ;;
-    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-      ac_prev=prefix ;;
-    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-      ;;
-    --disable-option-checking)
-      ;;
-    *)
-      case $ac_arg in
-      *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-      esac
-      as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
-    esac
-  done
-
-  # Always prepend --prefix to ensure using the same prefix
-  # in subdir configurations.
-  ac_arg="--prefix=$prefix"
-  case $ac_arg in
-  *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-  esac
-  ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
-
-  # Pass --silent
-  if test "$silent" = yes; then
-    ac_sub_configure_args="--silent $ac_sub_configure_args"
-  fi
-
-  # Always prepend --disable-option-checking to silence warnings, since
-  # different subdirs can have different --enable and --with options.
-  ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
-
-  ac_popdir=`pwd`
-  ac_dir=$in_build
-
-  ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
-  $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
-  $as_echo "$ac_msg" >&6
-  as_dir="$ac_dir"; as_fn_mkdir_p
-
-  case $srcdir in
-  [\\/]* | ?:[\\/]* )
-    ac_srcdir=$srcdir/$in_src ;;
-  *) # Relative name.
-    ac_srcdir=../$srcdir/$in_src ;;
-  esac
-
-  cd "$ac_dir"
-
-  ac_sub_configure=$ac_srcdir/configure
-
-  # Make the cache file name correct relative to the subdirectory.
-  case $cache_file in
-  [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
-  *) # Relative name.
-    ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
-  esac
-
-  if test -n "$in_extra_args"; then
-    # Add the extra args at the end.
-    ac_sub_configure_args="$ac_sub_configure_args $in_extra_args"
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
-$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
-  # The eval makes quoting arguments work.
-  eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
-       --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
-    as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
-
-  cd "$ac_popdir"
-
-
-
-  in_src="../../libiberty"
-  in_build="build-libiberty-gdbserver"
-  in_extra_args=
-
-  # Remove --cache-file, --srcdir, and --disable-option-checking arguments
-  # so they do not pile up.
-  ac_sub_configure_args=
-  ac_prev=
-  eval "set x $ac_configure_args"
-  shift
-  for ac_arg
-  do
-    if test -n "$ac_prev"; then
-      ac_prev=
-      continue
-    fi
-    case $ac_arg in
-    -cache-file | --cache-file | --cache-fil | --cache-fi \
-    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-      ac_prev=cache_file ;;
-    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
-    | --c=*)
-      ;;
-    --config-cache | -C)
-      ;;
-    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-      ac_prev=srcdir ;;
-    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-      ;;
-    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-      ac_prev=prefix ;;
-    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-      ;;
-    --disable-option-checking)
-      ;;
-    *)
-      case $ac_arg in
-      *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-      esac
-      as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
-    esac
-  done
-
-  # Always prepend --prefix to ensure using the same prefix
-  # in subdir configurations.
-  ac_arg="--prefix=$prefix"
-  case $ac_arg in
-  *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-  esac
-  ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
-
-  # Pass --silent
-  if test "$silent" = yes; then
-    ac_sub_configure_args="--silent $ac_sub_configure_args"
-  fi
-
-  # Always prepend --disable-option-checking to silence warnings, since
-  # different subdirs can have different --enable and --with options.
-  ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
-
-  ac_popdir=`pwd`
-  ac_dir=$in_build
-
-  ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
-  $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
-  $as_echo "$ac_msg" >&6
-  as_dir="$ac_dir"; as_fn_mkdir_p
-
-  case $srcdir in
-  [\\/]* | ?:[\\/]* )
-    ac_srcdir=$srcdir/$in_src ;;
-  *) # Relative name.
-    ac_srcdir=../$srcdir/$in_src ;;
-  esac
-
-  cd "$ac_dir"
-
-  ac_sub_configure=$ac_srcdir/configure
-
-  # Make the cache file name correct relative to the subdirectory.
-  case $cache_file in
-  [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
-  *) # Relative name.
-    ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
-  esac
-
-  if test -n "$in_extra_args"; then
-    # Add the extra args at the end.
-    ac_sub_configure_args="$ac_sub_configure_args $in_extra_args"
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
-$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
-  # The eval makes quoting arguments work.
-  eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
-       --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
-    as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
-
-  cd "$ac_popdir"
-
-
-for ac_header in termios.h sys/reg.h string.h 		 proc_service.h sys/procfs.h linux/elf.h 		 fcntl.h signal.h sys/file.h 		 sys/ioctl.h netinet/in.h sys/socket.h netdb.h 		 netinet/tcp.h arpa/inet.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
-_ACEOF
-
-fi
-
-for ac_header in vfork.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default"
-if test "x$ac_cv_header_vfork_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_VFORK_H 1
-_ACEOF
-
-fi
-
-done
-
-for ac_func in fork vfork
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_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
-
-if test "x$ac_cv_func_fork" = xyes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5
-$as_echo_n "checking for working fork... " >&6; }
-if ${ac_cv_func_fork_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_fork_works=cross
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-
-	  /* By Ruediger Kuhlmann. */
-	  return fork () < 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_fork_works=yes
-else
-  ac_cv_func_fork_works=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5
-$as_echo "$ac_cv_func_fork_works" >&6; }
-
-else
-  ac_cv_func_fork_works=$ac_cv_func_fork
-fi
-if test "x$ac_cv_func_fork_works" = xcross; then
-  case $host in
-    *-*-amigaos* | *-*-msdosdjgpp*)
-      # Override, as these systems have only a dummy fork() stub
-      ac_cv_func_fork_works=no
-      ;;
-    *)
-      ac_cv_func_fork_works=yes
-      ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5
-$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;}
-fi
-ac_cv_func_vfork_works=$ac_cv_func_vfork
-if test "x$ac_cv_func_vfork" = xyes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5
-$as_echo_n "checking for working vfork... " >&6; }
-if ${ac_cv_func_vfork_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_vfork_works=cross
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Thanks to Paul Eggert for this test.  */
-$ac_includes_default
-#include <sys/wait.h>
-#ifdef HAVE_VFORK_H
-# include <vfork.h>
-#endif
-/* On some sparc systems, changes by the child to local and incoming
-   argument registers are propagated back to the parent.  The compiler
-   is told about this with #include <vfork.h>, but some compilers
-   (e.g. gcc -O) don't grok <vfork.h>.  Test for this by using a
-   static variable whose address is put into a register that is
-   clobbered by the vfork.  */
-static void
-#ifdef __cplusplus
-sparc_address_test (int arg)
-# else
-sparc_address_test (arg) int arg;
-#endif
-{
-  static pid_t child;
-  if (!child) {
-    child = vfork ();
-    if (child < 0) {
-      perror ("vfork");
-      _exit(2);
-    }
-    if (!child) {
-      arg = getpid();
-      write(-1, "", 0);
-      _exit (arg);
-    }
-  }
-}
-
-int
-main ()
-{
-  pid_t parent = getpid ();
-  pid_t child;
-
-  sparc_address_test (0);
-
-  child = vfork ();
-
-  if (child == 0) {
-    /* Here is another test for sparc vfork register problems.  This
-       test uses lots of local variables, at least as many local
-       variables as main has allocated so far including compiler
-       temporaries.  4 locals are enough for gcc 1.40.3 on a Solaris
-       4.1.3 sparc, but we use 8 to be safe.  A buggy compiler should
-       reuse the register of parent for one of the local variables,
-       since it will think that parent can't possibly be used any more
-       in this routine.  Assigning to the local variable will thus
-       munge parent in the parent process.  */
-    pid_t
-      p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(),
-      p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid();
-    /* Convince the compiler that p..p7 are live; otherwise, it might
-       use the same hardware register for all 8 local variables.  */
-    if (p != p1 || p != p2 || p != p3 || p != p4
-	|| p != p5 || p != p6 || p != p7)
-      _exit(1);
-
-    /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent
-       from child file descriptors.  If the child closes a descriptor
-       before it execs or exits, this munges the parent's descriptor
-       as well.  Test for this by closing stdout in the child.  */
-    _exit(close(fileno(stdout)) != 0);
-  } else {
-    int status;
-    struct stat st;
-
-    while (wait(&status) != child)
-      ;
-    return (
-	 /* Was there some problem with vforking?  */
-	 child < 0
-
-	 /* Did the child fail?  (This shouldn't happen.)  */
-	 || status
-
-	 /* Did the vfork/compiler bug occur?  */
-	 || parent != getpid()
-
-	 /* Did the file descriptor bug occur?  */
-	 || fstat(fileno(stdout), &st) != 0
-	 );
-  }
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_vfork_works=yes
-else
-  ac_cv_func_vfork_works=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5
-$as_echo "$ac_cv_func_vfork_works" >&6; }
-
-fi;
-if test "x$ac_cv_func_fork_works" = xcross; then
-  ac_cv_func_vfork_works=$ac_cv_func_vfork
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5
-$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;}
-fi
-
-if test "x$ac_cv_func_vfork_works" = xyes; then
-
-$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h
-
-else
-
-$as_echo "#define vfork fork" >>confdefs.h
-
-fi
-if test "x$ac_cv_func_fork_works" = xyes; then
-
-$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h
-
-fi
-
-for ac_func in getauxval pread pwrite pread64 setns
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_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
-
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_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; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-  # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments.  Useless!
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
-			  if (p) return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_working_alloca_h=yes
-else
-  ac_cv_working_alloca_h=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: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
-if test $ac_cv_working_alloca_h = yes; then
-
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-#  include <malloc.h>
-#  define alloca _alloca
-# else
-#  ifdef HAVE_ALLOCA_H
-#   include <alloca.h>
-#  else
-#   ifdef _AIX
- #pragma alloca
-#   else
-#    ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-#    endif
-#   endif
-#  endif
-# endif
-#endif
-
-int
-main ()
-{
-char *p = (char *) alloca (1);
-				    if (p) return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_func_alloca_works=yes
-else
-  ac_cv_func_alloca_works=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: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
-
-if test $ac_cv_func_alloca_works = yes; then
-
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
-
-else
-  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble.  Some versions do not even contain alloca or
-# contain a buggy version.  If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
-
-ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "webecray" >/dev/null 2>&1; then :
-  ac_cv_os_cray=yes
-else
-  ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
-  for ac_func in _getb67 GETB67 getb67; do
-    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
-    break
-fi
-
-  done
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_c_stack_direction=0
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-find_stack_direction (int *addr, int depth)
-{
-  int dir, dummy = 0;
-  if (! addr)
-    addr = &dummy;
-  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
-  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
-  return dir + dummy;
-}
-
-int
-main (int argc, char **argv)
-{
-  return find_stack_direction (0, argc + !argv + 20) < 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_c_stack_direction=1
-else
-  ac_cv_c_stack_direction=-1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
-
-
-fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
-$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
-if ${am_cv_langinfo_codeset+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(CODESET);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  am_cv_langinfo_codeset=yes
-else
-  am_cv_langinfo_codeset=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: $am_cv_langinfo_codeset" >&5
-$as_echo "$am_cv_langinfo_codeset" >&6; }
-  if test $am_cv_langinfo_codeset = yes; then
-
-$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
-
-  fi
-
-
-  for ac_header in linux/perf_event.h locale.h memory.h signal.h 		   sys/resource.h sys/socket.h 		   sys/un.h sys/wait.h 		   thread_db.h wait.h 		   termios.h 		   dlfcn.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  for ac_func in fdwalk getrlimit pipe pipe2 socketpair sigaction \
-		  sigprocmask
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_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
-
-
-  ac_fn_c_check_decl "$LINENO" "strstr" "ac_cv_have_decl_strstr" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strstr" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRSTR $ac_have_decl
-_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 :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <setjmp.h>
-
-int
-main ()
-{
-sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdb_cv_func_sigsetjmp=yes
-else
-  gdb_cv_func_sigsetjmp=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_func_sigsetjmp" >&5
-$as_echo "$gdb_cv_func_sigsetjmp" >&6; }
-if test "$gdb_cv_func_sigsetjmp" = "yes"; then
-
-$as_echo "#define HAVE_SIGSETJMP 1" >>confdefs.h
-
-fi
-
-
-# Check the return and argument types of ptrace.
-
-
-for ac_header in sys/ptrace.h ptrace.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-gdb_ptrace_headers='
-#include <sys/types.h>
-#if HAVE_SYS_PTRACE_H
-# include <sys/ptrace.h>
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-'
-# There is no point in checking if we don't have a prototype.
-ac_fn_c_check_decl "$LINENO" "ptrace" "ac_cv_have_decl_ptrace" "$gdb_ptrace_headers
-"
-if test "x$ac_cv_have_decl_ptrace" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_PTRACE $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
-
-else
-
-  : ${gdb_cv_func_ptrace_ret='int'}
-  : ${gdb_cv_func_ptrace_args='int,int,long,long'}
-
-fi
-
-# Check return type.  Varargs (used on GNU/Linux) conflict with the
-# empty argument list, so check for that explicitly.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of ptrace" >&5
-$as_echo_n "checking return type of ptrace... " >&6; }
-if ${gdb_cv_func_ptrace_ret+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$gdb_ptrace_headers
-int
-main ()
-{
-extern long ptrace (enum __ptrace_request, ...);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdb_cv_func_ptrace_ret='long'
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$gdb_ptrace_headers
-int
-main ()
-{
-extern int ptrace ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdb_cv_func_ptrace_ret='int'
-else
-  gdb_cv_func_ptrace_ret='long'
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_func_ptrace_ret" >&5
-$as_echo "$gdb_cv_func_ptrace_ret" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define PTRACE_TYPE_RET $gdb_cv_func_ptrace_ret
-_ACEOF
-
-# Check argument types.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking types of arguments for ptrace" >&5
-$as_echo_n "checking types of arguments for ptrace... " >&6; }
-if ${gdb_cv_func_ptrace_args+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$gdb_ptrace_headers
-int
-main ()
-{
-extern long ptrace (enum __ptrace_request, ...);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdb_cv_func_ptrace_args='enum __ptrace_request,int,long,long'
-else
-
-for gdb_arg1 in 'int' 'long'; do
- for gdb_arg2 in 'pid_t' 'int' 'long'; do
-  for gdb_arg3 in 'int *' 'caddr_t' 'int' 'long' 'void *'; do
-   for gdb_arg4 in 'int' 'long' 'void *'; do
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$gdb_ptrace_headers
-int
-main ()
-{
-
-extern $gdb_cv_func_ptrace_ret
-  ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4";
-    break 4;
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    for gdb_arg5 in 'int *' 'int' 'long'; do
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$gdb_ptrace_headers
-int
-main ()
-{
-
-extern $gdb_cv_func_ptrace_ret
-  ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4, $gdb_arg5);
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4,$gdb_arg5";
-    break 5;
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    done
-   done
-  done
- done
-done
-# Provide a safe default value.
-: ${gdb_cv_func_ptrace_args='int,int,long,long'}
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_func_ptrace_args" >&5
-$as_echo "$gdb_cv_func_ptrace_args" >&6; }
-ac_save_IFS=$IFS; IFS=','
-set dummy `echo "$gdb_cv_func_ptrace_args" | sed 's/\*/\*/g'`
-IFS=$ac_save_IFS
-shift
-
-cat >>confdefs.h <<_ACEOF
-#define PTRACE_TYPE_ARG1 $1
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PTRACE_TYPE_ARG3 $3
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PTRACE_TYPE_ARG4 $4
-_ACEOF
-
-if test -n "$5"; then
-
-cat >>confdefs.h <<_ACEOF
-#define PTRACE_TYPE_ARG5 $5
-_ACEOF
-
-fi
-
-
-# Check for UST
-ustlibs=""
-ustinc=""
-
-
-# Check whether --with-ust was given.
-if test "${with_ust+set}" = set; then :
-  withval=$with_ust;
-fi
-
-
-# Check whether --with-ust_include was given.
-if test "${with_ust_include+set}" = set; then :
-  withval=$with_ust_include;
-fi
-
-
-# Check whether --with-ust_lib was given.
-if test "${with_ust_lib+set}" = set; then :
-  withval=$with_ust_lib;
-fi
-
-
-case $with_ust in
-  no)
-    ustlibs=
-    ustinc=
-    ;;
-  "" | yes)
-    ustlibs=" -lust "
-    ustinc=""
-    ;;
-  *)
-    ustlibs="-L$with_ust/lib -lust"
-    ustinc="-I$with_ust/include "
-    ;;
-esac
-if test "x$with_ust_include" != x; then
-  ustinc="-I$with_ust_include "
-fi
-if test "x$with_ust_lib" != x; then
-  ustlibs="-L$with_ust_lib -lust"
-fi
-
-if test "x$with_ust" != "xno"; then
-  saved_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS $ustinc"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ust" >&5
-$as_echo_n "checking for ust... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define CONFIG_UST_GDB_INTEGRATION
-#include <ust/ust.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-$as_echo "#define HAVE_UST 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; ustlibs= ; ustinc=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS="$saved_CFLAGS"
-fi
-
-# Flags needed for UST
-
-
-
-
-# Check whether --enable-werror was given.
-if test "${enable_werror+set}" = set; then :
-  enableval=$enable_werror; case "${enableval}" in
-     yes | y) ERROR_ON_WARNING="yes" ;;
-     no | n)  ERROR_ON_WARNING="no" ;;
-     *) as_fn_error $? "bad value ${enableval} for --enable-werror" "$LINENO" 5 ;;
-   esac
-fi
-
-
-# Enable -Werror by default when using gcc.  Turn it off for releases.
-if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" && $development; then
-    ERROR_ON_WARNING=yes
-fi
-
-WERROR_CFLAGS=""
-if test "${ERROR_ON_WARNING}" = yes ; then
-    WERROR_CFLAGS="-Werror"
-fi
-
-# The options we'll try to enable.
-build_warnings="-Wall -Wpointer-arith \
--Wno-unused -Wunused-value -Wunused-variable -Wunused-function \
--Wno-switch -Wno-char-subscripts \
--Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable \
--Wno-sign-compare -Wno-error=maybe-uninitialized \
--Wno-mismatched-tags \
--Wno-error=deprecated-register \
--Wsuggest-override \
--Wimplicit-fallthrough=3 \
--Wduplicated-cond \
--Wshadow=local \
--Wdeprecated-copy \
--Wdeprecated-copy-dtor \
--Wredundant-move"
-
-case "${host}" in
-  *-*-mingw32*)
-    # Enable -Wno-format by default when using gcc on mingw since many
-    # GCC versions complain about %I64.
-    build_warnings="$build_warnings -Wno-format" ;;
-  *-*-solaris*)
-    # Solaris 11.4 <python2.7/ceval.h> uses #pragma no_inline that GCC
-    # doesn't understand.
-    build_warnings="$build_warnings -Wno-unknown-pragmas"
-    # Solaris 11 <unistd.h> marks vfork deprecated.
-    build_warnings="$build_warnings -Wno-deprecated-declarations" ;;
-  *)
-    # Note that gcc requires -Wformat for -Wformat-nonliteral to work,
-    # but there's a special case for this below.
-    build_warnings="$build_warnings -Wformat-nonliteral" ;;
-esac
-
-# Check whether --enable-build-warnings was given.
-if test "${enable_build_warnings+set}" = set; then :
-  enableval=$enable_build_warnings; case "${enableval}" in
-  yes)	;;
-  no)	build_warnings="-w";;
-  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        build_warnings="${build_warnings} ${t}";;
-  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        build_warnings="${t} ${build_warnings}";;
-  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
-esac
-if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
-  echo "Setting compiler warning flags = $build_warnings" 6>&1
-fi
-fi
-# Check whether --enable-gdb-build-warnings was given.
-if test "${enable_gdb_build_warnings+set}" = set; then :
-  enableval=$enable_gdb_build_warnings; case "${enableval}" in
-  yes)	;;
-  no)	build_warnings="-w";;
-  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        build_warnings="${build_warnings} ${t}";;
-  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        build_warnings="${t} ${build_warnings}";;
-  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
-esac
-if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
-  echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
-fi
-fi
-
-# The set of warnings supported by a C++ compiler is not the same as
-# of the C compiler.
-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
-
-
-WARN_CFLAGS=""
-if test "x${build_warnings}" != x -a "x$GCC" = xyes
-then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler warning flags" >&5
-$as_echo_n "checking compiler warning flags... " >&6; }
-    # Separate out the -Werror flag as some files just cannot be
-    # compiled with it enabled.
-    for w in ${build_warnings}; do
-	# GCC does not complain about -Wno-unknown-warning.  Invert
-	# and test -Wunknown-warning instead.
-	case $w in
-	-Wno-*)
-		wtest=`echo $w | sed 's/-Wno-/-W/g'` ;;
-        -Wformat-nonliteral)
-		# gcc requires -Wformat before -Wformat-nonliteral
-		# will work, so stick them together.
-		w="-Wformat $w"
-		wtest="$w"
-		;;
-	*)
-		wtest=$w ;;
-	esac
-
-	case $w in
-	-Werr*) WERROR_CFLAGS=-Werror ;;
-	*)
-	    # Check whether GCC accepts it.
-	    saved_CFLAGS="$CFLAGS"
-	    CFLAGS="$CFLAGS -Werror $wtest"
-	    saved_CXXFLAGS="$CXXFLAGS"
-	    CXXFLAGS="$CXXFLAGS -Werror $wtest"
-	    if test "x$w" = "x-Wunused-variable"; then
-	      # Check for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38958,
-	      # fixed in GCC 4.9.  This test is derived from the gdb
-	      # source code that triggered this bug in GCC.
-	      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-struct scoped_restore_base {};
-                 struct scoped_restore_tmpl : public scoped_restore_base {
-		   ~scoped_restore_tmpl() {}
-		 };
-int
-main ()
-{
-const scoped_restore_base &b = scoped_restore_tmpl();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  WARN_CFLAGS="${WARN_CFLAGS} $w"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-	    else
-	      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  WARN_CFLAGS="${WARN_CFLAGS} $w"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-	    fi
-	    CFLAGS="$saved_CFLAGS"
-	    CXXFLAGS="$saved_CXXFLAGS"
-	esac
-    done
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${WARN_CFLAGS} ${WERROR_CFLAGS}" >&5
-$as_echo "${WARN_CFLAGS} ${WERROR_CFLAGS}" >&6; }
-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
-
-
-
-old_LIBS="$LIBS"
-LIBS="$LIBS -ldl"
-for ac_func in dladdr
-do :
-  ac_fn_c_check_func "$LINENO" "dladdr" "ac_cv_func_dladdr"
-if test "x$ac_cv_func_dladdr" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLADDR 1
-_ACEOF
-
-fi
-done
-
-LIBS="$old_LIBS"
-
-
-  # Check for presence and size of long long.
-  ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
-if test "x$ac_cv_type_long_long" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_LONG_LONG 1
-_ACEOF
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
-$as_echo_n "checking size of long long... " >&6; }
-if ${ac_cv_sizeof_long_long+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_long_long" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (long long)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_long_long=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
-$as_echo "$ac_cv_sizeof_long_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
-_ACEOF
-
-
-fi
-
-
-  as_ac_Symbol=`$as_echo "ac_cv_have_decl_basename(char *)" | $as_tr_sh`
-ac_fn_c_check_decl "$LINENO" "basename(char *)" "$as_ac_Symbol" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Symbol"\" = x"yes"; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_BASENAME $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "ffs" "ac_cv_have_decl_ffs" "$ac_includes_default"
-if test "x$ac_cv_have_decl_ffs" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FFS $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default"
-if test "x$ac_cv_have_decl_asprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ASPRINTF $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default"
-if test "x$ac_cv_have_decl_vasprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VASPRINTF $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default"
-if test "x$ac_cv_have_decl_snprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SNPRINTF $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default"
-if test "x$ac_cv_have_decl_vsnprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VSNPRINTF $ac_have_decl
-_ACEOF
-
-  ac_fn_c_check_decl "$LINENO" "strtol" "ac_cv_have_decl_strtol" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strtol" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRTOL $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "strtoul" "ac_cv_have_decl_strtoul" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strtoul" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRTOUL $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "strtoll" "ac_cv_have_decl_strtoll" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strtoll" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRTOLL $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "strtoull" "ac_cv_have_decl_strtoull" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strtoull" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRTOULL $ac_have_decl
-_ACEOF
-
-  ac_fn_c_check_decl "$LINENO" "strverscmp" "ac_cv_have_decl_strverscmp" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strverscmp" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRVERSCMP $ac_have_decl
-_ACEOF
-
-
-
-ac_fn_c_check_decl "$LINENO" "perror" "ac_cv_have_decl_perror" "$ac_includes_default"
-if test "x$ac_cv_have_decl_perror" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_PERROR $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default"
-if test "x$ac_cv_have_decl_vasprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VASPRINTF $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default"
-if test "x$ac_cv_have_decl_vsnprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VSNPRINTF $ac_have_decl
-_ACEOF
-
-
-ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-_ACEOF
-
-
-fi
-
-
-# See if <sys/user.h> supports the %fs_base and %gs_bas amd64 segment registers.
-# Older amd64 Linux's don't have the fs_base and gs_base members of
-# `struct user_regs_struct'.
-ac_fn_c_check_member "$LINENO" "struct user_regs_struct" "fs_base" "ac_cv_member_struct_user_regs_struct_fs_base" "#include <sys/types.h>
-#include <sys/user.h>
-"
-if test "x$ac_cv_member_struct_user_regs_struct_fs_base" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct user_regs_struct" "gs_base" "ac_cv_member_struct_user_regs_struct_gs_base" "#include <sys/types.h>
-#include <sys/user.h>
-"
-if test "x$ac_cv_member_struct_user_regs_struct_gs_base" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_REGS_STRUCT_GS_BASE 1
-_ACEOF
-
-
-fi
-
-
-
-ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include <sys/types.h>
-#include <sys/socket.h>
-
-"
-if test "x$ac_cv_type_socklen_t" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_SOCKLEN_T 1
-_ACEOF
-
-
-fi
-
-
-case "${target}" in
-  *-android*)
-    # Starting with NDK version 9, <elf.h> actually includes definitions
-    # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
-    # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
-    # leading to conflicts with the defintions from <linux/elf.h>.
-    # This makes it impossible for us to include both <elf.h> and
-    # <linux/elf.h>, which means that, in practice, we do not have
-    # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
-    # Therefore, do not try to auto-detect availability, as it would
-    # get it wrong on this platform.
-    ;;
-  *)
-    ac_fn_c_check_type "$LINENO" "Elf32_auxv_t" "ac_cv_type_Elf32_auxv_t" "#include <elf.h>
-
-"
-if test "x$ac_cv_type_Elf32_auxv_t" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ELF32_AUXV_T 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_type "$LINENO" "Elf64_auxv_t" "ac_cv_type_Elf64_auxv_t" "#include <elf.h>
-
-"
-if test "x$ac_cv_type_Elf64_auxv_t" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ELF64_AUXV_T 1
-_ACEOF
-
-
-fi
-
-esac
-
-
-
-# Check whether --with-pkgversion was given.
-if test "${with_pkgversion+set}" = set; then :
-  withval=$with_pkgversion; case "$withval" in
-      yes) as_fn_error $? "package version not specified" "$LINENO" 5 ;;
-      no)  PKGVERSION= ;;
-      *)   PKGVERSION="($withval) " ;;
-     esac
-else
-  PKGVERSION="(GDB) "
-
-fi
-
-
-
-
-
-# Check whether --with-bugurl was given.
-if test "${with_bugurl+set}" = set; then :
-  withval=$with_bugurl; case "$withval" in
-      yes) as_fn_error $? "bug URL not specified" "$LINENO" 5 ;;
-      no)  BUGURL=
-	   ;;
-      *)   BUGURL="$withval"
-	   ;;
-     esac
-else
-  BUGURL="http://www.gnu.org/software/gdb/bugs/"
-
-fi
-
-  case ${BUGURL} in
-  "")
-    REPORT_BUGS_TO=
-    REPORT_BUGS_TEXI=
-    ;;
-  *)
-    REPORT_BUGS_TO="<$BUGURL>"
-    REPORT_BUGS_TEXI=@uref{`echo "$BUGURL" | sed 's/@/@@/g'`}
-    ;;
-  esac;
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define PKGVERSION "$PKGVERSION"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define REPORT_BUGS_TO "$REPORT_BUGS_TO"
-_ACEOF
-
-
-# Check for various supplementary target information (beyond the
-# triplet) which might affect the choices in configure.srv.
-case "${target}" in
-  i[34567]86-*-linux*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if building for x86-64" >&5
-$as_echo_n "checking if building for x86-64... " >&6; }
-if ${gdb_cv_i386_is_x86_64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_CPPFLAGS="$CPPFLAGS"
-                    CPPFLAGS="$CPPFLAGS $CFLAGS"
-                    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#if __x86_64__
-got it
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "got it" >/dev/null 2>&1; then :
-  gdb_cv_i386_is_x86_64=yes
-else
-  gdb_cv_i386_is_x86_64=no
-fi
-rm -f conftest*
-
-                    CPPFLAGS="$save_CPPFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_i386_is_x86_64" >&5
-$as_echo "$gdb_cv_i386_is_x86_64" >&6; }
-    ;;
-
-  x86_64-*-linux*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if building for x32" >&5
-$as_echo_n "checking if building for x32... " >&6; }
-if ${gdb_cv_x86_is_x32+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_CPPFLAGS="$CPPFLAGS"
-		    CPPFLAGS="$CPPFLAGS $CFLAGS"
-		    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#if __x86_64__ && __ILP32__
-got it
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "got it" >/dev/null 2>&1; then :
-  gdb_cv_x86_is_x32=yes
-else
-  gdb_cv_x86_is_x32=no
-fi
-rm -f conftest*
-
-		    CPPFLAGS="$save_CPPFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_x86_is_x32" >&5
-$as_echo "$gdb_cv_x86_is_x32" >&6; }
-    ;;
-
-  m68k-*-*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if building for Coldfire" >&5
-$as_echo_n "checking if building for Coldfire... " >&6; }
-if ${gdb_cv_m68k_is_coldfire+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_CPPFLAGS="$CPPFLAGS"
-                    CPPFLAGS="$CPPFLAGS $CFLAGS"
-                    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef __mcoldfire__
-got it
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "got it" >/dev/null 2>&1; then :
-  gdb_cv_m68k_is_coldfire=yes
-else
-  gdb_cv_m68k_is_coldfire=no
-fi
-rm -f conftest*
-
-                    CPPFLAGS="$save_CPPFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_m68k_is_coldfire" >&5
-$as_echo "$gdb_cv_m68k_is_coldfire" >&6; }
-    ;;
-esac
-
-. ${srcdir}/configure.srv
-
-if test "${srv_mingwce}" = "yes"; then
-  LIBS="$LIBS -lws2"
-elif test "${srv_mingw}" = "yes"; then
-  LIBS="$LIBS -lws2_32"
-elif test "${srv_qnx}" = "yes"; then
-  LIBS="$LIBS -lsocket"
-elif test "${srv_lynxos}" = "yes"; then
-  LIBS="$LIBS -lnetinet"
-fi
-
-if test "${srv_mingw}" = "yes"; then
-
-$as_echo "#define USE_WIN32API 1" >>confdefs.h
-
-fi
-
-if test "${srv_linux_usrregs}" = "yes"; then
-
-$as_echo "#define HAVE_LINUX_USRREGS 1" >>confdefs.h
-
-fi
-
-if test "${srv_linux_regsets}" = "yes"; then
-
-$as_echo "#define HAVE_LINUX_REGSETS 1" >>confdefs.h
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTRACE_GETREGS" >&5
-$as_echo_n "checking for PTRACE_GETREGS... " >&6; }
-  if ${gdbsrv_cv_have_ptrace_getregs+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/ptrace.h>
-int
-main ()
-{
-PTRACE_GETREGS;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdbsrv_cv_have_ptrace_getregs=yes
-else
-  gdbsrv_cv_have_ptrace_getregs=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdbsrv_cv_have_ptrace_getregs" >&5
-$as_echo "$gdbsrv_cv_have_ptrace_getregs" >&6; }
-  if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
-
-$as_echo "#define HAVE_PTRACE_GETREGS 1" >>confdefs.h
-
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTRACE_GETFPXREGS" >&5
-$as_echo_n "checking for PTRACE_GETFPXREGS... " >&6; }
-  if ${gdbsrv_cv_have_ptrace_getfpxregs+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/ptrace.h>
-int
-main ()
-{
-PTRACE_GETFPXREGS;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdbsrv_cv_have_ptrace_getfpxregs=yes
-else
-  gdbsrv_cv_have_ptrace_getfpxregs=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdbsrv_cv_have_ptrace_getfpxregs" >&5
-$as_echo "$gdbsrv_cv_have_ptrace_getfpxregs" >&6; }
-  if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
-
-$as_echo "#define HAVE_PTRACE_GETFPXREGS 1" >>confdefs.h
-
-  fi
-fi
-
-if test "${srv_linux_btrace}" = "yes"; then
-
-$as_echo "#define HAVE_LINUX_BTRACE 1" >>confdefs.h
-
-fi
-
-if test "$ac_cv_header_sys_procfs_h" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpid_t in sys/procfs.h" >&5
-$as_echo_n "checking for lwpid_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_lwpid_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-lwpid_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_lwpid_t=yes
-else
-  bfd_cv_have_sys_procfs_type_lwpid_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_lwpid_t = yes; then
-
-$as_echo "#define HAVE_LWPID_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_lwpid_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_lwpid_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psaddr_t in sys/procfs.h" >&5
-$as_echo_n "checking for psaddr_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_psaddr_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-psaddr_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_psaddr_t=yes
-else
-  bfd_cv_have_sys_procfs_type_psaddr_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_psaddr_t = yes; then
-
-$as_echo "#define HAVE_PSADDR_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_psaddr_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_psaddr_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prgregset_t in sys/procfs.h" >&5
-$as_echo_n "checking for prgregset_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_prgregset_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-prgregset_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_prgregset_t=yes
-else
-  bfd_cv_have_sys_procfs_type_prgregset_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_prgregset_t = yes; then
-
-$as_echo "#define HAVE_PRGREGSET_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prgregset_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_prgregset_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prfpregset_t in sys/procfs.h" >&5
-$as_echo_n "checking for prfpregset_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_prfpregset_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-prfpregset_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_prfpregset_t=yes
-else
-  bfd_cv_have_sys_procfs_type_prfpregset_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
-
-$as_echo "#define HAVE_PRFPREGSET_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prfpregset_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_prfpregset_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_fpregset_t in sys/procfs.h" >&5
-$as_echo_n "checking for elf_fpregset_t in sys/procfs.h... " >&6; }
- if ${bfd_cv_have_sys_procfs_type_elf_fpregset_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#define _SYSCALL32
-/* Needed for new procfs interface on sparc-solaris.  */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-int
-main ()
-{
-elf_fpregset_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  bfd_cv_have_sys_procfs_type_elf_fpregset_t=yes
-else
-  bfd_cv_have_sys_procfs_type_elf_fpregset_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $bfd_cv_have_sys_procfs_type_elf_fpregset_t = yes; then
-
-$as_echo "#define HAVE_ELF_FPREGSET_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&5
-$as_echo "$bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&6; }
-
-fi
-
-if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpid_t in thread_db.h" >&5
-$as_echo_n "checking for lwpid_t in thread_db.h... " >&6; }
- if ${gdbserver_cv_have_thread_db_type_lwpid_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <thread_db.h>
-int
-main ()
-{
-lwpid_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdbserver_cv_have_thread_db_type_lwpid_t=yes
-else
-  gdbserver_cv_have_thread_db_type_lwpid_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $gdbserver_cv_have_thread_db_type_lwpid_t = yes; then
-
-$as_echo "#define HAVE_LWPID_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdbserver_cv_have_thread_db_type_lwpid_t" >&5
-$as_echo "$gdbserver_cv_have_thread_db_type_lwpid_t" >&6; }
-
-fi
-
-if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psaddr_t in thread_db.h" >&5
-$as_echo_n "checking for psaddr_t in thread_db.h... " >&6; }
- if ${gdbserver_cv_have_thread_db_type_psaddr_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <thread_db.h>
-int
-main ()
-{
-psaddr_t avar
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdbserver_cv_have_thread_db_type_psaddr_t=yes
-else
-  gdbserver_cv_have_thread_db_type_psaddr_t=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
- if test $gdbserver_cv_have_thread_db_type_psaddr_t = yes; then
-
-$as_echo "#define HAVE_PSADDR_T 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdbserver_cv_have_thread_db_type_psaddr_t" >&5
-$as_echo "$gdbserver_cv_have_thread_db_type_psaddr_t" >&6; }
-
-fi
-
-old_LIBS="$LIBS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-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 dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBDL 1
-_ACEOF
-
-  LIBS="-ldl $LIBS"
-
-fi
-
-LIBS="$old_LIBS"
-
-srv_thread_depfiles=
-srv_libs=
-
-if test "$srv_linux_thread_db" = "yes"; then
-  if test "$ac_cv_lib_dl_dlopen" = "yes"; then
-    srv_libs="-ldl"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the dynamic export flag" >&5
-$as_echo_n "checking for the dynamic export flag... " >&6; }
-    old_LDFLAGS="$LDFLAGS"
-    # Older GNU ld supports --export-dynamic but --dynamic-list may not be
-    # supported there.
-    RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
-    LDFLAGS="$LDFLAGS $RDYNAMIC"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  found="-Wl,--dynamic-list"
-		 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'
-else
-  RDYNAMIC="-rdynamic"
-		 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
-		 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  found="-rdynamic"
-else
-  found="no"
-			      RDYNAMIC=""
-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
-
-    LDFLAGS="$old_LDFLAGS"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found" >&5
-$as_echo "$found" >&6; }
-  else
-    srv_libs="-lthread_db"
-  fi
-
-  srv_thread_depfiles="thread-db.o proc-service.o"
-
-$as_echo "#define USE_THREAD_DB 1" >>confdefs.h
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TD_VERSION" >&5
-$as_echo_n "checking for TD_VERSION... " >&6; }
-if ${gdbsrv_cv_have_td_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <thread_db.h>
-int
-main ()
-{
-TD_VERSION;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdbsrv_cv_have_td_version=yes
-else
-  gdbsrv_cv_have_td_version=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdbsrv_cv_have_td_version" >&5
-$as_echo "$gdbsrv_cv_have_td_version" >&6; }
-  if test "$gdbsrv_cv_have_td_version" = yes; then
-
-$as_echo "#define HAVE_TD_VERSION 1" >>confdefs.h
-
-  fi
-fi
-
-
-# Check whether --with-libthread-db was given.
-if test "${with_libthread_db+set}" = set; then :
-  withval=$with_libthread_db; srv_libthread_db_path="${withval}"
-  srv_libs="$srv_libthread_db_path"
-
-fi
-
-
-if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
-
-$as_echo "#define USE_LIBTHREAD_DB_DIRECTLY 1" >>confdefs.h
-
-fi
-
-if test "$srv_xmlfiles" != ""; then
-  srv_xmlbuiltin="xml-builtin.o"
-
-$as_echo "#define USE_XML 1" >>confdefs.h
-
-
-  tmp_xmlfiles=$srv_xmlfiles
-  srv_xmlfiles=""
-  for f in $tmp_xmlfiles; do
-    srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
-  done
-fi
-
-GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_selftest_objs"
-GDBSERVER_LIBS="$srv_libs"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports __sync_*_compare_and_swap" >&5
-$as_echo_n "checking whether the target supports __sync_*_compare_and_swap... " >&6; }
-if ${gdbsrv_cv_have_sync_builtins+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gdbsrv_cv_have_sync_builtins=yes
-else
-  gdbsrv_cv_have_sync_builtins=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: $gdbsrv_cv_have_sync_builtins" >&5
-$as_echo "$gdbsrv_cv_have_sync_builtins" >&6; }
-if test "$gdbsrv_cv_have_sync_builtins" = yes; then
-
-$as_echo "#define HAVE_SYNC_BUILTINS 1" >>confdefs.h
-
-fi
-
-saved_cflags="$CFLAGS"
-CFLAGS="$CFLAGS -fvisibility=hidden"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdbsrv_cv_have_visibility_hidden=yes
-else
-  gdbsrv_cv_have_visibility_hidden=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS="$saved_cflags"
-
-ac_fn_c_check_decl "$LINENO" "ADDR_NO_RANDOMIZE" "ac_cv_have_decl_ADDR_NO_RANDOMIZE" "#include <sys/personality.h>
-"
-if test "x$ac_cv_have_decl_ADDR_NO_RANDOMIZE" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ADDR_NO_RANDOMIZE $ac_have_decl
-_ACEOF
-
-
-if test "$cross_compiling" = yes; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/personality.h>
-int
-main ()
-{
-
-#      if !HAVE_DECL_ADDR_NO_RANDOMIZE
-#       define ADDR_NO_RANDOMIZE 0x0040000
-#      endif
-       /* Test the flag could be set and stays set.  */
-       personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
-       if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
-           return 1
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gdbsrv_cv_have_personality=true
-else
-  gdbsrv_cv_have_personality=false
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/personality.h>
-int
-main ()
-{
-
-#      if !HAVE_DECL_ADDR_NO_RANDOMIZE
-#       define ADDR_NO_RANDOMIZE 0x0040000
-#      endif
-       /* Test the flag could be set and stays set.  */
-       personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
-       if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
-           return 1
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  gdbsrv_cv_have_personality=true
-else
-  gdbsrv_cv_have_personality=false
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-if $gdbsrv_cv_have_personality
-then
-
-$as_echo "#define HAVE_PERSONALITY 1" >>confdefs.h
-
-fi
-
-
-IPA_DEPFILES=""
-extra_libraries=""
-
-# check whether to enable the inprocess agent
-if test "$ipa_obj" != "" \
-   -a "$gdbsrv_cv_have_sync_builtins" = yes \
-   -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
-   have_ipa=true
-else
-   have_ipa=false
-fi
-
-# Check whether --enable-inprocess-agent was given.
-if test "${enable_inprocess_agent+set}" = set; then :
-  enableval=$enable_inprocess_agent; case "$enableval" in
-  yes) want_ipa=true ;;
-  no) want_ipa=false ;;
-  *) as_fn_error $? "bad value $enableval for inprocess-agent" "$LINENO" 5 ;;
-esac
-else
-  want_ipa=$have_ipa
-fi
-
-
-if $want_ipa ; then
-   if $have_ipa ; then
-     IPA_DEPFILES="$ipa_obj"
-     extra_libraries="$extra_libraries libinproctrace.so"
-   else
-     as_fn_error $? "inprocess agent not supported for this target" "$LINENO" 5
-   fi
-fi
-
-
-
-
-
-
-
-
-GNULIB=build-gnulib-gdbserver/import
-
-GNULIB_STDINT_H=
-if test x"$STDINT_H" != x; then
-  GNULIB_STDINT_H=$GNULIB/$STDINT_H
-fi
-
-
-ac_config_files="$ac_config_files Makefile"
-
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-	cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-	  mv -f confcache "$cache_file"$$ &&
-	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-	  mv -f confcache "$cache_file" ;;
-	esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
-  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by $as_me, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to the package provider."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR
-ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR CONFIG_SRC_SUBDIR="$CONFIG_SRC_SUBDIR"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
-    "depdir") CONFIG_COMMANDS="$CONFIG_COMMANDS depdir" ;;
-    "gdbdepdir") CONFIG_COMMANDS="$CONFIG_COMMANDS gdbdepdir" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
- ;;
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "config.h":H) echo > stamp-h ;;
-    "depdir":C) $SHELL $ac_aux_dir/mkinstalldirs $DEPDIR ;;
-    "gdbdepdir":C)
-  for subdir in ${CONFIG_SRC_SUBDIR}
-  do
-      $SHELL $ac_aux_dir/mkinstalldirs $subdir/$DEPDIR
-  done ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/configure.ac ./gdb/gdbserver/configure.ac
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/configure.ac	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/configure.ac	1970-01-01 00:00:00.000000000 +0000
@@ -1,485 +0,0 @@
-dnl Autoconf configure script for GDB server.
-dnl Copyright (C) 2000-2020 Free Software Foundation, Inc.
-dnl
-dnl This file is part of GDB.
-dnl
-dnl This program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 3 of the License, or
-dnl (at your option) any later version.
-dnl
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-dnl GNU General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-dnl Process this file with autoconf to produce a configure script.
-
-AC_INIT(server.c)
-AC_CONFIG_HEADERS(config.h:config.in, [echo > stamp-h])
-
-AM_MAINTAINER_MODE
-
-AC_PROG_CC
-AC_PROG_CXX
-AC_GNU_SOURCE
-AC_SYS_LARGEFILE
-
-AC_CANONICAL_SYSTEM
-
-AC_PROG_INSTALL
-AC_CHECK_TOOL(AR, ar)
-AC_PROG_RANLIB
-
-AC_ARG_PROGRAM
-
-# We require a C++11 compiler.  Check if one is available, and if
-# necessary, set CXX_DIALECT to some -std=xxx switch.
-AX_CXX_COMPILE_STDCXX(11, , mandatory)
-
-AC_HEADER_STDC
-
-# Set the 'development' global.
-. $srcdir/../../bfd/development.sh
-
-GDB_AC_SELFTEST([
-  srv_selftest_objs="gdbsupport/selftest.o"
-])
-
-ACX_NONCANONICAL_TARGET
-ACX_NONCANONICAL_HOST
-
-# Dependency checking.
-ZW_CREATE_DEPDIR
-
-# Create sub-directories for objects and dependencies.
-CONFIG_SRC_SUBDIR="arch gdbsupport"
-AC_SUBST(CONFIG_SRC_SUBDIR)
-
-AC_CONFIG_COMMANDS([gdbdepdir],[
-  for subdir in ${CONFIG_SRC_SUBDIR}
-  do
-      $SHELL $ac_aux_dir/mkinstalldirs $subdir/$DEPDIR
-  done],
-  [ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR CONFIG_SRC_SUBDIR="$CONFIG_SRC_SUBDIR"])
-
-ZW_PROG_COMPILER_DEPENDENCIES([CC])
-
-gnulib_extra_configure_args=
-# If large-file support is disabled, make sure gnulib does the same.
-if test "$enable_largefile" = no; then
-gnulib_extra_configure_args="$gnulib_extra_configure_args --disable-largefile"
-fi
-
-# Configure gnulib.  We can't use AC_CONFIG_SUBDIRS as that'd expect
-# to find the the source subdir to be configured directly under
-# gdbserver/.  We need to build gnulib under some other directory not
-# "gnulib", to avoid the problem of both GDB and GDBserver wanting to
-# build it in the same directory, when building in the source dir.
-ACX_CONFIGURE_DIR(["../../gnulib"], ["build-gnulib-gdbserver"],
-                  ["$gnulib_extra_configure_args"])
-
-ACX_CONFIGURE_DIR(["../../libiberty"], ["build-libiberty-gdbserver"])
-
-AC_CHECK_HEADERS(termios.h sys/reg.h string.h dnl
-		 proc_service.h sys/procfs.h linux/elf.h dnl
-		 fcntl.h signal.h sys/file.h dnl
-		 sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
-		 netinet/tcp.h arpa/inet.h)
-AC_FUNC_FORK
-AC_CHECK_FUNCS(getauxval pread pwrite pread64 setns)
-
-GDB_AC_COMMON
-
-# Check the return and argument types of ptrace.
-GDB_AC_PTRACE
-
-# Check for UST
-ustlibs=""
-ustinc=""
-
-AC_ARG_WITH(ust, [  --with-ust=PATH       Specify prefix directory for the installed UST package
-                          Equivalent to --with-ust-include=PATH/include
-                          plus --with-ust-lib=PATH/lib])
-AC_ARG_WITH(ust_include, [  --with-ust-include=PATH Specify directory for installed UST include files])
-AC_ARG_WITH(ust_lib, [  --with-ust-lib=PATH   Specify the directory for the installed UST library])
-
-case $with_ust in
-  no)
-    ustlibs=
-    ustinc=
-    ;;
-  "" | yes)
-    ustlibs=" -lust "
-    ustinc=""
-    ;;
-  *)
-    ustlibs="-L$with_ust/lib -lust"
-    ustinc="-I$with_ust/include "
-    ;;
-esac
-if test "x$with_ust_include" != x; then
-  ustinc="-I$with_ust_include "
-fi
-if test "x$with_ust_lib" != x; then
-  ustlibs="-L$with_ust_lib -lust"
-fi
-
-if test "x$with_ust" != "xno"; then
-  saved_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS $ustinc"
-  AC_MSG_CHECKING([for ust])
-  AC_TRY_COMPILE([
-#define CONFIG_UST_GDB_INTEGRATION
-#include <ust/ust.h>
-  ],[],
-  [AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_UST, 1, [Define if UST is available])],
-  [AC_MSG_RESULT([no]); ustlibs= ; ustinc= ])
-  CFLAGS="$saved_CFLAGS"
-fi
-
-# Flags needed for UST
-AC_SUBST(ustlibs)
-AC_SUBST(ustinc)
-
-AM_GDB_WARNINGS
-
-dnl dladdr is glibc-specific.  It is used by thread-db.c but only for
-dnl debugging messages.  It lives in -ldl which is handled below so we don't
-dnl use AC_CHECK_LIB (or AC_SEARCH_LIBS) here.  Instead we just temporarily
-dnl augment LIBS.
-old_LIBS="$LIBS"
-LIBS="$LIBS -ldl"
-AC_CHECK_FUNCS(dladdr)
-LIBS="$old_LIBS"
-
-libiberty_INIT
-
-AC_CHECK_DECLS([perror, vasprintf, vsnprintf])
-
-AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
-
-# See if <sys/user.h> supports the %fs_base and %gs_bas amd64 segment registers.
-# Older amd64 Linux's don't have the fs_base and gs_base members of
-# `struct user_regs_struct'.
-AC_CHECK_MEMBERS([struct user_regs_struct.fs_base, struct user_regs_struct.gs_base],
-     [], [], [#include <sys/types.h>
-#include <sys/user.h>])
-
-
-AC_CHECK_TYPES(socklen_t, [], [],
-[#include <sys/types.h>
-#include <sys/socket.h>
-])
-
-case "${target}" in
-  *-android*)
-    # Starting with NDK version 9, <elf.h> actually includes definitions
-    # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
-    # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
-    # leading to conflicts with the defintions from <linux/elf.h>.
-    # This makes it impossible for us to include both <elf.h> and
-    # <linux/elf.h>, which means that, in practice, we do not have
-    # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
-    # Therefore, do not try to auto-detect availability, as it would
-    # get it wrong on this platform.
-    ;;
-  *)
-    AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
-    #include <elf.h>
-    )
-esac
-
-ACX_PKGVERSION([GDB])
-ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
-AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
-AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
-
-# Check for various supplementary target information (beyond the
-# triplet) which might affect the choices in configure.srv.
-case "${target}" in
-changequote(,)dnl
-  i[34567]86-*-linux*)
-changequote([,])dnl
-    AC_CACHE_CHECK([if building for x86-64], [gdb_cv_i386_is_x86_64],
-      	           [save_CPPFLAGS="$CPPFLAGS"
-                    CPPFLAGS="$CPPFLAGS $CFLAGS"
-                    AC_EGREP_CPP([got it], [
-#if __x86_64__
-got it
-#endif
-                 ], [gdb_cv_i386_is_x86_64=yes],
-                    [gdb_cv_i386_is_x86_64=no])
-                    CPPFLAGS="$save_CPPFLAGS"])
-    ;;
-
-  x86_64-*-linux*)
-    AC_CACHE_CHECK([if building for x32], [gdb_cv_x86_is_x32],
-		   [save_CPPFLAGS="$CPPFLAGS"
-		    CPPFLAGS="$CPPFLAGS $CFLAGS"
-		    AC_EGREP_CPP([got it], [
-#if __x86_64__ && __ILP32__
-got it
-#endif
-		 ], [gdb_cv_x86_is_x32=yes],
-		    [gdb_cv_x86_is_x32=no])
-		    CPPFLAGS="$save_CPPFLAGS"])
-    ;;
-
-  m68k-*-*)
-    AC_CACHE_CHECK([if building for Coldfire], [gdb_cv_m68k_is_coldfire],
-      	           [save_CPPFLAGS="$CPPFLAGS"
-                    CPPFLAGS="$CPPFLAGS $CFLAGS"
-                    AC_EGREP_CPP([got it], [
-#ifdef __mcoldfire__
-got it
-#endif
-                 ], [gdb_cv_m68k_is_coldfire=yes],
-                    [gdb_cv_m68k_is_coldfire=no])
-                    CPPFLAGS="$save_CPPFLAGS"])
-    ;;
-esac
-
-. ${srcdir}/configure.srv
-
-if test "${srv_mingwce}" = "yes"; then
-  LIBS="$LIBS -lws2"
-elif test "${srv_mingw}" = "yes"; then
-  LIBS="$LIBS -lws2_32"
-elif test "${srv_qnx}" = "yes"; then
-  LIBS="$LIBS -lsocket"
-elif test "${srv_lynxos}" = "yes"; then
-  LIBS="$LIBS -lnetinet"
-fi
-
-if test "${srv_mingw}" = "yes"; then
-  AC_DEFINE(USE_WIN32API, 1,
-	    [Define if we should use the Windows API, instead of the
-	     POSIX API.  On Windows, we use the Windows API when
-	     building for MinGW, but the POSIX API when building
-	     for Cygwin.])
-fi
-
-if test "${srv_linux_usrregs}" = "yes"; then
-  AC_DEFINE(HAVE_LINUX_USRREGS, 1,
-	    [Define if the target supports PTRACE_PEEKUSR for register ]
-	    [access.])
-fi
-
-if test "${srv_linux_regsets}" = "yes"; then
-  AC_DEFINE(HAVE_LINUX_REGSETS, 1,
-	    [Define if the target supports register sets.])
-
-  AC_MSG_CHECKING(for PTRACE_GETREGS)
-  AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
-  [AC_TRY_COMPILE([#include <sys/ptrace.h>],
-		  [PTRACE_GETREGS;],
-		  [gdbsrv_cv_have_ptrace_getregs=yes],
-		  [gdbsrv_cv_have_ptrace_getregs=no])])
-  AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
-  if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
-    AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
-	      [Define if the target supports PTRACE_GETREGS for register ]
-	      [access.])
-  fi
-
-  AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
-  AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
-  [AC_TRY_COMPILE([#include <sys/ptrace.h>],
-		  [PTRACE_GETFPXREGS;],
-		  [gdbsrv_cv_have_ptrace_getfpxregs=yes],
-		  [gdbsrv_cv_have_ptrace_getfpxregs=no])])
-  AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
-  if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
-    AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
-	      [Define if the target supports PTRACE_GETFPXREGS for extended ]
-	      [register access.])
-  fi
-fi
-
-if test "${srv_linux_btrace}" = "yes"; then
-  AC_DEFINE(HAVE_LINUX_BTRACE, 1,
-	    [Define if the target supports branch tracing.])
-fi
-
-if test "$ac_cv_header_sys_procfs_h" = yes; then
-  BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
-  BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
-fi
-
-dnl Some systems (e.g., Android) have lwpid_t defined in libthread_db.h.
-if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
-  GDBSERVER_HAVE_THREAD_DB_TYPE(lwpid_t)
-fi
-
-dnl Some systems (e.g., Android) have psaddr_t defined in libthread_db.h.
-if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
-  GDBSERVER_HAVE_THREAD_DB_TYPE(psaddr_t)
-fi
-
-dnl Check for libdl, but do not add it to LIBS as only gdbserver
-dnl needs it (and gdbreplay doesn't).
-old_LIBS="$LIBS"
-AC_CHECK_LIB(dl, dlopen)
-LIBS="$old_LIBS"
-
-srv_thread_depfiles=
-srv_libs=
-
-if test "$srv_linux_thread_db" = "yes"; then
-  if test "$ac_cv_lib_dl_dlopen" = "yes"; then
-    srv_libs="-ldl"
-    AC_MSG_CHECKING(for the dynamic export flag)
-    old_LDFLAGS="$LDFLAGS"
-    # Older GNU ld supports --export-dynamic but --dynamic-list may not be
-    # supported there.
-    RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
-    LDFLAGS="$LDFLAGS $RDYNAMIC"
-    AC_TRY_LINK([], [],
-		[found="-Wl,--dynamic-list"
-		 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
-		[RDYNAMIC="-rdynamic"
-		 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
-		 AC_TRY_LINK([], [],
-			     [found="-rdynamic"],
-			     [found="no"
-			      RDYNAMIC=""])])
-    AC_SUBST(RDYNAMIC)
-    LDFLAGS="$old_LDFLAGS"
-    AC_MSG_RESULT($found)
-  else
-    srv_libs="-lthread_db"
-  fi
-
-  srv_thread_depfiles="thread-db.o proc-service.o"
-  AC_DEFINE(USE_THREAD_DB, 1, [Define if we should use libthread_db.])
-  AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
-  [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
-		  [gdbsrv_cv_have_td_version=yes],
-		  [gdbsrv_cv_have_td_version=no])])
-  if test "$gdbsrv_cv_have_td_version" = yes; then
-    AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
-  fi
-fi
-
-AC_ARG_WITH(libthread-db,
-AS_HELP_STRING([--with-libthread-db=PATH], [use given libthread_db directly]),
-[srv_libthread_db_path="${withval}"
-  srv_libs="$srv_libthread_db_path"
-])
-
-if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
-  AC_DEFINE(USE_LIBTHREAD_DB_DIRECTLY, 1, [Define if we should use libthread_db directly.])
-fi
-
-if test "$srv_xmlfiles" != ""; then
-  srv_xmlbuiltin="xml-builtin.o"
-  AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
-
-  tmp_xmlfiles=$srv_xmlfiles
-  srv_xmlfiles=""
-  for f in $tmp_xmlfiles; do
-    srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
-  done
-fi
-
-GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles $srv_selftest_objs"
-GDBSERVER_LIBS="$srv_libs"
-
-dnl Check whether the target supports __sync_*_compare_and_swap.
-AC_CACHE_CHECK([whether the target supports __sync_*_compare_and_swap],
-		gdbsrv_cv_have_sync_builtins, [
-AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],
-		gdbsrv_cv_have_sync_builtins=yes,
-		gdbsrv_cv_have_sync_builtins=no)])
-if test "$gdbsrv_cv_have_sync_builtins" = yes; then
-  AC_DEFINE(HAVE_SYNC_BUILTINS, 1,
-    [Define to 1 if the target supports __sync_*_compare_and_swap])
-fi
-
-dnl Check for -fvisibility=hidden support in the compiler.
-saved_cflags="$CFLAGS"
-CFLAGS="$CFLAGS -fvisibility=hidden"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
-		        [gdbsrv_cv_have_visibility_hidden=yes],
-	        	[gdbsrv_cv_have_visibility_hidden=no])
-CFLAGS="$saved_cflags"
-
-dnl Check if we can disable the virtual address space randomization.
-dnl The functionality of setarch -R.
-AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
-define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
-#      if !HAVE_DECL_ADDR_NO_RANDOMIZE
-#       define ADDR_NO_RANDOMIZE 0x0040000
-#      endif
-       /* Test the flag could be set and stays set.  */
-       personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
-       if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
-           return 1])])
-AC_RUN_IFELSE([PERSONALITY_TEST],
-              [gdbsrv_cv_have_personality=true],
-              [gdbsrv_cv_have_personality=false],
-              [AC_LINK_IFELSE([PERSONALITY_TEST],
-                              [gdbsrv_cv_have_personality=true],
-                              [gdbsrv_cv_have_personality=false])])
-if $gdbsrv_cv_have_personality
-then
-    AC_DEFINE([HAVE_PERSONALITY], 1,
-              [Define if you support the personality syscall.])
-fi
-
-
-IPA_DEPFILES=""
-extra_libraries=""
-
-# check whether to enable the inprocess agent
-if test "$ipa_obj" != "" \
-   -a "$gdbsrv_cv_have_sync_builtins" = yes \
-   -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
-   have_ipa=true
-else
-   have_ipa=false
-fi
-
-AC_ARG_ENABLE(inprocess-agent,
-AS_HELP_STRING([--enable-inprocess-agent], [inprocess agent]),
-[case "$enableval" in
-  yes) want_ipa=true ;;
-  no) want_ipa=false ;;
-  *) AC_MSG_ERROR([bad value $enableval for inprocess-agent]) ;;
-esac],
-[want_ipa=$have_ipa])
-
-if $want_ipa ; then
-   if $have_ipa ; then
-     IPA_DEPFILES="$ipa_obj"
-     extra_libraries="$extra_libraries libinproctrace.so"
-   else
-     AC_MSG_ERROR([inprocess agent not supported for this target])
-   fi
-fi
-
-AC_SUBST(GDBSERVER_DEPFILES)
-AC_SUBST(GDBSERVER_LIBS)
-AC_SUBST(srv_xmlbuiltin)
-AC_SUBST(srv_xmlfiles)
-AC_SUBST(IPA_DEPFILES)
-AC_SUBST(extra_libraries)
-
-GNULIB=build-gnulib-gdbserver/import
-
-GNULIB_STDINT_H=
-if test x"$STDINT_H" != x; then
-  GNULIB_STDINT_H=$GNULIB/$STDINT_H
-fi
-AC_SUBST(GNULIB_STDINT_H)
-
-AC_CONFIG_FILES([Makefile])
-
-AC_OUTPUT
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/configure.srv ./gdb/gdbserver/configure.srv
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/configure.srv	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/configure.srv	1970-01-01 00:00:00.000000000 +0000
@@ -1,390 +0,0 @@
-# Mappings from configuration triplets to gdbserver build options.
-# This is invoked from the autoconf-generated configure script, to
-# produce the appropriate Makefile substitutions.
-
-# This file sets the following shell variables:
-#   srv_regobj		The register protocol appropriate for this target.
-#   srv_tgtobj		Any other target-specific modules appropriate
-#			for this target.
-#   srv_hostio_err	The object implementing the hostio_last_error
-#			target method.
-#   srv_xmlfiles	All XML files which should be available for
-#			gdbserver in this configuration.
-#   ipa_obj		Any other target-specific modules appropriate
-#			for this target's in-process agent.
-#
-# In addition, on GNU/Linux the following shell variables will be set:
-#   srv_linux_regsets	Set to "yes" if ptrace(PTRACE_GETREGS) and friends
-#			may be available on this platform;  unset otherwise.
-#			They will only be used if <sys/ptrace.h> defines
-#			PTRACE_GETREGS.
-#   srv_linux_usrregs	Set to "yes" if we can get at registers via
-#			PTRACE_PEEKUSR / PTRACE_POKEUSR.
-
-# Default hostio_last_error implementation
-srv_hostio_err_objs="hostio-errno.o"
-
-ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-isa205-ppr-dscr-vsx32l-ipa.o powerpc-isa207-vsx32l-ipa.o powerpc-isa207-htm-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o powerpc-isa205-ppr-dscr-vsx64l-ipa.o powerpc-isa207-vsx64l-ipa.o powerpc-isa207-htm-vsx64l-ipa.o"
-
-# Linux object files.  This is so we don't have to repeat
-# these files over and over again.
-srv_linux_obj="linux-low.o linux-osdata.o linux-procfs.o linux-ptrace.o linux-waitpid.o linux-personality.o linux-namespaces.o fork-child.o fork-inferior.o"
-
-# Input is taken from the "${target}" variable.
-
-case "${target}" in
-  aarch64*-*-linux*)	srv_tgtobj="linux-aarch64-low.o aarch64-linux-hw-point.o"
-			srv_tgtobj="$srv_tgtobj linux-aarch32-low.o"
-			srv_tgtobj="$srv_tgtobj linux-aarch32-tdesc.o"
-			srv_tgtobj="${srv_tgtobj} arch/aarch32.o"
-			srv_tgtobj="${srv_tgtobj} arch/arm.o"
-			srv_tgtobj="$srv_tgtobj aarch64-linux.o"
-			srv_tgtobj="$srv_tgtobj arch/aarch64-insn.o"
-			srv_tgtobj="$srv_tgtobj arch/aarch64.o"
-			srv_tgtobj="$srv_tgtobj linux-aarch64-tdesc.o"
-			srv_tgtobj="$srv_tgtobj aarch64-sve-linux-ptrace.o"
-			srv_tgtobj="${srv_tgtobj} $srv_linux_obj"
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			ipa_obj="linux-aarch64-ipa.o"
-			ipa_obj="${ipa_obj} linux-aarch64-tdesc-ipa.o"
-			ipa_obj="${ipa_obj} arch/aarch64-ipa.o"
-			;;
-  arm*-*-linux*)	srv_tgtobj="$srv_linux_obj linux-arm-low.o"
-			srv_tgtobj="$srv_tgtobj linux-arm-tdesc.o"
-			srv_tgtobj="$srv_tgtobj linux-aarch32-low.o"
-			srv_tgtobj="$srv_tgtobj linux-aarch32-tdesc.o"
-			srv_tgtobj="${srv_tgtobj} arch/aarch32.o"
-			srv_tgtobj="${srv_tgtobj} arch/arm.o"
-			srv_tgtobj="${srv_tgtobj} arch/arm-linux.o"
-			srv_tgtobj="${srv_tgtobj} arch/arm-get-next-pcs.o"
-			srv_linux_usrregs=yes
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			;;
-  arm*-*-mingw32ce*)	srv_regobj=reg-arm.o
-			srv_tgtobj="win32-low.o win32-arm-low.o"
-			srv_tgtobj="${srv_tgtobj} wincecompat.o"
-			# hostio_last_error implementation is in win32-low.c
-			srv_hostio_err_objs=""
-			srv_mingw=yes
-			srv_mingwce=yes
-			;;
-  bfin-*-*linux*)	srv_regobj=reg-bfin.o
-			srv_tgtobj="$srv_linux_obj linux-bfin-low.o"
-			srv_linux_usrregs=yes
-			srv_linux_thread_db=yes
-			;;
-  crisv32-*-linux*)	srv_regobj=reg-crisv32.o
-			srv_tgtobj="$srv_linux_obj linux-crisv32-low.o"
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			;;
-  cris-*-linux*)	srv_regobj=reg-cris.o
-			srv_tgtobj="$srv_linux_obj linux-cris-low.o"
-			srv_linux_usrregs=yes
-			srv_linux_thread_db=yes
-			;;
-  i[34567]86-*-cygwin*)	srv_regobj=""
-			srv_tgtobj="x86-low.o x86-dregs.o win32-low.o win32-i386-low.o"
-			srv_tgtobj="${srv_tgtobj} arch/i386.o"
-			;;
-  i[34567]86-*-linux*)	srv_tgtobj="${srv_tgtobj} arch/i386.o"
-			srv_tgtobj="${srv_tgtobj} $srv_linux_obj linux-x86-low.o x86-low.o x86-dregs.o i387-fp.o"
-			srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
-			srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
-			srv_tgtobj="${srv_tgtobj} x86-linux-dregs.o"
-			srv_linux_usrregs=yes
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			srv_linux_btrace=yes
-			ipa_obj="linux-i386-ipa.o linux-x86-tdesc-ipa.o"
-			ipa_obj="${ipa_obj} arch/i386-ipa.o"
-			;;
-  i[34567]86-*-lynxos*)	srv_regobj=""
-			srv_tgtobj="lynx-low.o lynx-i386-low.o fork-child.o fork-inferior.o"
-			srv_tgtobj="${srv_tgtobj} arch/i386.o"
-			srv_lynxos=yes
-			;;
-  i[34567]86-*-mingw32ce*)
-			srv_regobj=""
-			srv_tgtobj="x86-low.o x86-dregs.o win32-low.o win32-i386-low.o"
-			srv_tgtobj="${srv_tgtobj} arch/i386.o"
-			srv_tgtobj="${srv_tgtobj} wincecompat.o"
-			# hostio_last_error implementation is in win32-low.c
-			srv_hostio_err_objs=""
-			srv_mingw=yes
-			srv_mingwce=yes
-			;;
-  i[34567]86-*-mingw*)	srv_regobj=""
-			srv_tgtobj="x86-low.o x86-dregs.o win32-low.o win32-i386-low.o"
-			srv_tgtobj="${srv_tgtobj} arch/i386.o"
-			srv_mingw=yes
-			;;
-  i[34567]86-*-nto*)	srv_regobj=""
-			srv_tgtobj="nto-low.o nto-x86-low.o arch/i386.o"
-			srv_qnx="yes"
-			;;
-  ia64-*-linux*)	srv_regobj=reg-ia64.o
-			srv_tgtobj="$srv_linux_obj linux-ia64-low.o"
-			srv_linux_usrregs=yes
-			;;
-  m32r*-*-linux*)	srv_regobj=reg-m32r.o
-			srv_tgtobj="$srv_linux_obj linux-m32r-low.o"
-			srv_linux_usrregs=yes
- 			srv_linux_thread_db=yes
-			;;
-  m68*-*-linux*)	if test "$gdb_cv_m68k_is_coldfire" = yes; then
-                          srv_regobj=reg-cf.o
-                        else
-                          srv_regobj=reg-m68k.o
-                        fi
-			srv_tgtobj="$srv_linux_obj linux-m68k-low.o"
-			srv_linux_usrregs=yes
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			;;
-  m68*-*-uclinux*)	if test "$gdb_cv_m68k_is_coldfire" = yes; then
-                          srv_regobj=reg-cf.o
-                        else
-                          srv_regobj=reg-m68k.o
-                        fi
-			srv_tgtobj="$srv_linux_obj linux-m68k-low.o"
-			srv_linux_usrregs=yes
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			;;
-  mips*-*-linux*)	srv_regobj="mips-linux.o"
-			srv_regobj="${srv_regobj} mips-dsp-linux.o"
-			srv_regobj="${srv_regobj} mips64-linux.o"
-			srv_regobj="${srv_regobj} mips64-dsp-linux.o"
-			srv_tgtobj="$srv_linux_obj linux-mips-low.o"
-			srv_tgtobj="${srv_tgtobj} mips-linux-watch.o"
-			srv_xmlfiles="mips-linux.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips-dsp-linux.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips-cpu.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips-cp0.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips-fpu.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips-dsp.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips64-linux.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips64-dsp-linux.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips64-cpu.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips64-cp0.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips64-fpu.xml"
-			srv_xmlfiles="${srv_xmlfiles} mips64-dsp.xml"
-			srv_linux_regsets=yes
-			srv_linux_usrregs=yes
-			srv_linux_thread_db=yes
-			;;
-  nios2*-*-linux*)	srv_regobj="nios2-linux.o"
-			srv_tgtobj="$srv_linux_obj linux-nios2-low.o"
-			srv_xmlfiles="nios2-linux.xml"
-			srv_xmlfiles="${srv_xmlfiles} nios2-cpu.xml"
-			srv_linux_regsets=yes
-			srv_linux_usrregs=yes
-			srv_linux_thread_db=yes
-			;;
-  powerpc*-*-linux*)	srv_regobj="powerpc-32l.o"
-			srv_regobj="${srv_regobj} powerpc-altivec32l.o"
-			srv_regobj="${srv_regobj} powerpc-vsx32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-altivec32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-vsx32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-ppr-dscr-vsx32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa207-vsx32l.o"
-			srv_regobj="${srv_regobj} powerpc-isa207-htm-vsx32l.o"
-			srv_regobj="${srv_regobj} powerpc-e500l.o"
-			srv_regobj="${srv_regobj} powerpc-64l.o"
-			srv_regobj="${srv_regobj} powerpc-altivec64l.o"
-			srv_regobj="${srv_regobj} powerpc-vsx64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-altivec64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-vsx64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa205-ppr-dscr-vsx64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa207-vsx64l.o"
-			srv_regobj="${srv_regobj} powerpc-isa207-htm-vsx64l.o"
-			srv_tgtobj="$srv_linux_obj linux-ppc-low.o ppc-linux.o"
-			srv_tgtobj="${srv_tgtobj} arch/ppc-linux-common.o"
-			srv_xmlfiles="rs6000/powerpc-32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-vsx32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-htm-vsx32l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-altivec.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-vsx.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu-isa205.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-dscr.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-ppr.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-tar.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-ebb.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux-pmu.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-spr.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-core.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-fpu.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-altivec.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-vsx.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-ppr.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-dscr.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-tar.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-vsx64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-htm-vsx64l.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-core.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-linux.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-htm-core.xml"
-			srv_linux_usrregs=yes
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			ipa_obj="${ipa_ppc_linux_regobj} linux-ppc-ipa.o"
-			;;
-  powerpc-*-lynxos*)	srv_regobj="powerpc-32.o"
-			srv_tgtobj="lynx-low.o lynx-ppc-low.o"
-			srv_xmlfiles="rs6000/powerpc-32.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
-			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
-			srv_lynxos=yes
-			;;
-  s390*-*-linux*)	srv_regobj="s390-linux32.o"
-			srv_regobj="${srv_regobj} s390-linux32v1.o"
-			srv_regobj="${srv_regobj} s390-linux32v2.o"
-			srv_regobj="${srv_regobj} s390-linux64.o"
-			srv_regobj="${srv_regobj} s390-linux64v1.o"
-			srv_regobj="${srv_regobj} s390-linux64v2.o"
-			srv_regobj="${srv_regobj} s390-te-linux64.o"
-			srv_regobj="${srv_regobj} s390-vx-linux64.o"
-			srv_regobj="${srv_regobj} s390-tevx-linux64.o"
-			srv_regobj="${srv_regobj} s390-gs-linux64.o"
-			srv_regobj="${srv_regobj} s390x-linux64.o"
-			srv_regobj="${srv_regobj} s390x-linux64v1.o"
-			srv_regobj="${srv_regobj} s390x-linux64v2.o"
-			srv_regobj="${srv_regobj} s390x-te-linux64.o"
-			srv_regobj="${srv_regobj} s390x-vx-linux64.o"
-			srv_regobj="${srv_regobj} s390x-tevx-linux64.o"
-			srv_regobj="${srv_regobj} s390x-gs-linux64.o"
-			srv_tgtobj="$srv_linux_obj linux-s390-low.o"
-			srv_xmlfiles="s390-linux32.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-linux32v1.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-linux32v2.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-linux64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-linux64v1.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-linux64v2.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-te-linux64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-vx-linux64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-tevx-linux64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-gs-linux64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390x-linux64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390x-linux64v1.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390x-linux64v2.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390x-te-linux64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390x-vx-linux64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390x-tevx-linux64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390x-gs-linux64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-core32.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-core64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390x-core64.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-acr.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-fpr.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-tdb.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-vx.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-gs.xml"
-			srv_xmlfiles="${srv_xmlfiles} s390-gsbc.xml"
-			srv_linux_usrregs=yes
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			ipa_obj="linux-s390-ipa.o"
-			ipa_obj="${ipa_obj} s390-linux32-ipa.o"
-			ipa_obj="${ipa_obj} s390-linux32v1-ipa.o"
-			ipa_obj="${ipa_obj} s390-linux32v2-ipa.o"
-			ipa_obj="${ipa_obj} s390-linux64-ipa.o"
-			ipa_obj="${ipa_obj} s390-linux64v1-ipa.o"
-			ipa_obj="${ipa_obj} s390-linux64v2-ipa.o"
-			ipa_obj="${ipa_obj} s390-vx-linux64-ipa.o"
-			ipa_obj="${ipa_obj} s390-te-linux64-ipa.o"
-			ipa_obj="${ipa_obj} s390-tevx-linux64-ipa.o"
-			ipa_obj="${ipa_obj} s390-gs-linux64-ipa.o"
-			ipa_obj="${ipa_obj} s390x-linux64-ipa.o"
-			ipa_obj="${ipa_obj} s390x-linux64v1-ipa.o"
-			ipa_obj="${ipa_obj} s390x-linux64v2-ipa.o"
-			ipa_obj="${ipa_obj} s390x-vx-linux64-ipa.o"
-			ipa_obj="${ipa_obj} s390x-te-linux64-ipa.o"
-			ipa_obj="${ipa_obj} s390x-tevx-linux64-ipa.o"
-			ipa_obj="${ipa_obj} s390x-gs-linux64-ipa.o"
-			;;
-  sh*-*-linux*)		srv_regobj=reg-sh.o
-			srv_tgtobj="$srv_linux_obj linux-sh-low.o"
-			srv_linux_usrregs=yes
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			;;
-  sparc*-*-linux*)	srv_regobj=reg-sparc64.o
-			srv_tgtobj="$srv_linux_obj linux-sparc-low.o"
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			;;
-  tic6x-*-uclinux)	if $development; then
-			  srv_regobj="tic6x-c64xp-linux.o"
-			  srv_regobj="${srv_regobj} tic6x-c64x-linux.o"
-			  srv_regobj="${srv_regobj} tic6x-c62x-linux.o"
-                        else
-			  srv_regobj=""
-                        fi
-			srv_tgtobj="$srv_linux_obj linux-tic6x-low.o"
-			srv_tgtobj="${srv_tgtobj} arch/tic6x.o"
-			srv_linux_regsets=yes
-			srv_linux_usrregs=yes
-			srv_linux_thread_db=yes
-			;;
-  x86_64-*-linux*)	srv_tgtobj="$srv_linux_obj linux-x86-low.o x86-low.o"
-			srv_tgtobj="${srv_tgtobj} x86-dregs.o i387-fp.o"
-			srv_tgtobj="${srv_tgtobj} arch/i386.o arch/amd64.o"
-			srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
-			srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
-			srv_tgtobj="${srv_tgtobj} x86-linux-dregs.o"
-			srv_tgtobj="${srv_tgtobj} amd64-linux-siginfo.o"
-			srv_linux_usrregs=yes # This is for i386 progs.
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			srv_linux_btrace=yes
-			ipa_obj="linux-amd64-ipa.o linux-x86-tdesc-ipa.o"
-			ipa_obj="${ipa_obj} arch/amd64-ipa.o"
-			;;
-  x86_64-*-mingw*)	srv_regobj=""
-			srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
-			srv_tgtobj="${srv_tgtobj} arch/amd64.o"
-			srv_mingw=yes
-			;;
-  x86_64-*-cygwin*)	srv_regobj=""
-			srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
-			srv_tgtobj="${srv_tgtobj} arch/amd64.o"
-			;;
-
-  xtensa*-*-linux*)	srv_regobj=reg-xtensa.o
-			srv_tgtobj="$srv_linux_obj linux-xtensa-low.o"
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			;;
-  tilegx-*-linux*)	srv_regobj=reg-tilegx.o
-			srv_regobj="${srv_regobj} reg-tilegx32.o"
-			srv_tgtobj="$srv_linux_obj linux-tile-low.o"
-			srv_linux_regsets=yes
-			srv_linux_thread_db=yes
-			;;
-  *)			echo "Error: target not supported by gdbserver."
-			exit 1
-			;;
-esac
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/debug.c ./gdb/gdbserver/debug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/debug.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/debug.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,140 +0,0 @@
-/* Debugging routines for the remote server for GDB.
-   Copyright (C) 2014-2020 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 "server.h"
-#include <chrono>
-
-#if !defined (IN_PROCESS_AGENT)
-int remote_debug = 0;
-#endif
-
-/* Output file for debugging.  Default to standard error.  */
-FILE *debug_file = stderr;
-
-/* See debug.h.  */
-int debug_threads;
-
-/* Include timestamps in debugging output.  */
-int debug_timestamp;
-
-#if !defined (IN_PROCESS_AGENT)
-
-/* See debug.h.  */
-
-void
-debug_set_output (const char *new_debug_file)
-{
-  /* Close any existing file and reset to standard error.  */
-  if (debug_file != stderr)
-    {
-      fclose (debug_file);
-    }
-  debug_file = stderr;
-
-  /* Catch empty filenames.  */
-  if (new_debug_file == nullptr || strlen (new_debug_file) == 0)
-    return;
-
-  FILE *fptr = fopen (new_debug_file, "w");
-
-  if (fptr == nullptr)
-    {
-      debug_printf ("Cannot open %s for writing. %s. Switching to stderr.\n",
-		    new_debug_file, safe_strerror (errno));
-      return;
-    }
-
-  debug_file = fptr;
-}
-
-#endif
-
-/* Print a debugging message.
-   If the text begins a new line it is preceded by a timestamp.
-   We don't get fancy with newline checking, we just check whether the
-   previous call ended with "\n".  */
-
-void
-debug_vprintf (const char *format, va_list ap)
-{
-#if !defined (IN_PROCESS_AGENT)
-  /* N.B. Not thread safe, and can't be used, as is, with IPA.  */
-  static int new_line = 1;
-
-  if (debug_timestamp && new_line)
-    {
-      using namespace std::chrono;
-
-      steady_clock::time_point now = steady_clock::now ();
-      seconds s = duration_cast<seconds> (now.time_since_epoch ());
-      microseconds us = duration_cast<microseconds> (now.time_since_epoch ()) - s;
-
-      fprintf (debug_file, "%ld.%06ld ", (long) s.count (), (long) us.count ());
-    }
-#endif
-
-  vfprintf (debug_file, format, ap);
-
-#if !defined (IN_PROCESS_AGENT)
-  if (*format)
-    new_line = format[strlen (format) - 1] == '\n';
-#endif
-}
-
-/* Flush debugging output.
-   This is called, for example, when starting an inferior to ensure all debug
-   output thus far appears before any inferior output.  */
-
-void
-debug_flush (void)
-{
-  fflush (debug_file);
-}
-
-/* Notify the user that the code is entering FUNCTION_NAME.
-   FUNCTION_NAME is the name of the calling function, or NULL if unknown.
-
-   This is intended to be called via the debug_enter macro.  */
-
-void
-do_debug_enter (const char *function_name)
-{
-  if (function_name != NULL)
-    debug_printf (">>>> entering %s\n", function_name);
-}
-
-/* Notify the user that the code is exiting FUNCTION_NAME.
-   FUNCTION_NAME is the name of the calling function, or NULL if unknown.
-
-   This is intended to be called via the debug_exit macro.  */
-
-void
-do_debug_exit (const char *function_name)
-{
-  if (function_name != NULL)
-    debug_printf ("<<<< exiting %s\n", function_name);
-}
-
-/* See debug.h.  */
-
-ssize_t
-debug_write (const void *buf, size_t nbyte)
-{
-  int fd = fileno (debug_file);
-  return write (fd, buf, nbyte);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/debug.h ./gdb/gdbserver/debug.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/debug.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/debug.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,65 +0,0 @@
-/* Debugging routines for the remote server for GDB.
-   Copyright (C) 2014-2020 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 GDBSERVER_DEBUG_H
-#define GDBSERVER_DEBUG_H
-
-#if !defined (IN_PROCESS_AGENT)
-extern int remote_debug;
-
-/* Switch all debug output to DEBUG_FILE.  If DEBUG_FILE is nullptr or an
-   empty string, or if the file cannot be opened, then debug output is sent to
-   stderr.  */
-void debug_set_output (const char *debug_file);
-#endif
-
-extern int using_threads;
-
-/* Enable miscellaneous debugging output.  The name is historical - it
-   was originally used to debug LinuxThreads support.  */
-
-extern int debug_threads;
-
-extern int debug_timestamp;
-
-void debug_flush (void);
-void do_debug_enter (const char *function_name);
-void do_debug_exit (const char *function_name);
-
-/* Async signal safe debug output function that calls write directly.  */
-ssize_t debug_write (const void *buf, size_t nbyte);
-
-/* These macros are for use in major functions that produce a lot of
-   debugging output.  They help identify in the mass of debugging output
-   when these functions enter and exit.  debug_enter is intended to be
-   called at the start of a function, before any other debugging output.
-   debug_exit is intended to be called at the end of the same function,
-   after all debugging output.  */
-#ifdef FUNCTION_NAME
-#define debug_enter() \
-  do { do_debug_enter (FUNCTION_NAME); } while (0)
-#define debug_exit() \
-  do { do_debug_exit (FUNCTION_NAME); } while (0)
-#else
-#define debug_enter() \
-  do { } while (0)
-#define debug_exit() \
-  do { } while (0)
-#endif
-
-#endif /* GDBSERVER_DEBUG_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/dll.c ./gdb/gdbserver/dll.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/dll.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/dll.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,80 +0,0 @@
-/* Copyright (C) 2002-2020 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 "server.h"
-#include "dll.h"
-
-#include <algorithm>
-
-/* An "unspecified" CORE_ADDR, for match_dll.  */
-#define UNSPECIFIED_CORE_ADDR (~(CORE_ADDR) 0)
-
-std::list<dll_info> all_dlls;
-int dlls_changed;
-
-/* Record a newly loaded DLL at BASE_ADDR.  */
-
-void
-loaded_dll (const char *name, CORE_ADDR base_addr)
-{
-  all_dlls.emplace_back (name != NULL ? name : "", base_addr);
-  dlls_changed = 1;
-}
-
-/* Record that the DLL with NAME and BASE_ADDR has been unloaded.  */
-
-void
-unloaded_dll (const char *name, CORE_ADDR base_addr)
-{
-  auto pred = [&] (const dll_info &dll)
-    {
-      if (base_addr != UNSPECIFIED_CORE_ADDR
-	  && base_addr == dll.base_addr)
-	return true;
-
-      if (name != NULL && dll.name == name)
-	return true;
-
-      return false;
-    };
-
-  auto iter = std::find_if (all_dlls.begin (), all_dlls.end (), pred);
-
-  if (iter == all_dlls.end ())
-    /* For some inferiors we might get unloaded_dll events without having
-       a corresponding loaded_dll.  In that case, the dll cannot be found
-       in ALL_DLL, and there is nothing further for us to do.
-
-       This has been observed when running 32bit executables on Windows64
-       (i.e. through WOW64, the interface between the 32bits and 64bits
-       worlds).  In that case, the inferior always does some strange
-       unloading of unnamed dll.  */
-    return;
-  else
-    {
-      /* DLL has been found so remove the entry and free associated
-         resources.  */
-      all_dlls.erase (iter);
-      dlls_changed = 1;
-    }
-}
-
-void
-clear_dlls (void)
-{
-  all_dlls.clear ();
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/dll.h ./gdb/gdbserver/dll.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/dll.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/dll.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,40 +0,0 @@
-/* Copyright (C) 1993-2020 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 GDBSERVER_DLL_H
-#define GDBSERVER_DLL_H
-
-#include <list>
-
-struct dll_info
-{
-  dll_info (const std::string &name_, CORE_ADDR base_addr_)
-  : name (name_), base_addr (base_addr_)
-  {}
-
-  std::string name;
-  CORE_ADDR base_addr;
-};
-
-extern std::list<dll_info> all_dlls;
-extern int dlls_changed;
-
-extern void clear_dlls (void);
-extern void loaded_dll (const char *name, CORE_ADDR base_addr);
-extern void unloaded_dll (const char *name, CORE_ADDR base_addr);
-
-#endif /* GDBSERVER_DLL_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/event-loop.c ./gdb/gdbserver/event-loop.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/event-loop.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/event-loop.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,567 +0,0 @@
-/* Event loop machinery for the remote server for GDB.
-   Copyright (C) 1999-2020 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/>. */
-
-/* Based on src/gdb/event-loop.c.  */
-
-#include "server.h"
-
-#include <sys/types.h>
-#include "gdbsupport/gdb_sys_time.h"
-
-#ifdef USE_WIN32API
-#include <windows.h>
-#include <io.h>
-#endif
-
-#include <unistd.h>
-#include <queue>
-
-typedef int (event_handler_func) (gdb_fildes_t);
-
-/* Tell create_file_handler what events we are interested in.  */
-
-#define GDB_READABLE	(1<<1)
-#define GDB_WRITABLE	(1<<2)
-#define GDB_EXCEPTION	(1<<3)
-
-/* Events are queued by on the event_queue and serviced later
-   on by do_one_event.  An event can be, for instance, a file
-   descriptor becoming ready to be read.  Servicing an event simply
-   means that the procedure PROC will be called.  We have 2 queues,
-   one for file handlers that we listen to in the event loop, and one
-   for the file handlers+events that are ready.  The procedure PROC
-   associated with each event is always the same (handle_file_event).
-   Its duty is to invoke the handler associated with the file
-   descriptor whose state change generated the event, plus doing other
-   cleanups and such.  */
-
-struct gdb_event
-  {
-    /* Procedure to call to service this event.  */
-    event_handler_func *proc;
-
-    /* File descriptor that is ready.  */
-    gdb_fildes_t fd;
-  };
-
-/* Information about each file descriptor we register with the event
-   loop.  */
-
-typedef struct file_handler
-  {
-    /* File descriptor.  */
-    gdb_fildes_t fd;
-
-    /* Events we want to monitor.  */
-    int mask;
-
-    /* Events that have been seen since the last time.  */
-    int ready_mask;
-
-    /* Procedure to call when fd is ready.  */
-    handler_func *proc;
-
-    /* Argument to pass to proc.  */
-    gdb_client_data client_data;
-
-    /* Was an error detected on this fd?  */
-    int error;
-
-    /* Next registered file descriptor.  */
-    struct file_handler *next_file;
-  }
-file_handler;
-
-typedef gdb::unique_xmalloc_ptr<gdb_event> gdb_event_up;
-
-static std::queue<gdb_event_up, std::list<gdb_event_up>> event_queue;
-
-/* Gdb_notifier is just a list of file descriptors gdb is interested
-   in.  These are the input file descriptor, and the target file
-   descriptor.  Each of the elements in the gdb_notifier list is
-   basically a description of what kind of events gdb is interested
-   in, for each fd.  */
-
-static struct
-  {
-    /* Ptr to head of file handler list.  */
-    file_handler *first_file_handler;
-
-    /* Masks to be used in the next call to select.  Bits are set in
-       response to calls to create_file_handler.  */
-    fd_set check_masks[3];
-
-    /* What file descriptors were found ready by select.  */
-    fd_set ready_masks[3];
-
-    /* Number of valid bits (highest fd value + 1). (for select) */
-    int num_fds;
-  }
-gdb_notifier;
-
-/* Callbacks are just routines that are executed before waiting for the
-   next event.  In GDB this is struct gdb_timer.  We don't need timers
-   so rather than copy all that complexity in gdbserver, we provide what
-   we need, but we do so in a way that if/when the day comes that we need
-   that complexity, it'll be easier to add - replace callbacks with timers
-   and use a delta of zero (which is all gdb currently uses timers for anyway).
-
-   PROC will be executed before gdbserver goes to sleep to wait for the
-   next event.  */
-
-struct callback_event
-  {
-    int id;
-    callback_handler_func *proc;
-    gdb_client_data data;
-    struct callback_event *next;
-  };
-
-/* Table of registered callbacks.  */
-
-static struct
-  {
-    struct callback_event *first;
-    struct callback_event *last;
-
-    /* Id of the last callback created.  */
-    int num_callbacks;
-  }
-callback_list;
-
-void
-initialize_event_loop (void)
-{
-}
-
-/* Process one event.  If an event was processed, 1 is returned
-   otherwise 0 is returned.  Scan the queue from head to tail,
-   processing therefore the high priority events first, by invoking
-   the associated event handler procedure.  */
-
-static int
-process_event (void)
-{
-  /* Let's get rid of the event from the event queue.  We need to
-     do this now because while processing the event, since the
-     proc function could end up jumping out to the caller of this
-     function.  In that case, we would have on the event queue an
-     event which has been processed, but not deleted.  */
-  if (!event_queue.empty ())
-    {
-      gdb_event_up event_ptr = std::move (event_queue.front ());
-      event_queue.pop ();
-
-      event_handler_func *proc = event_ptr->proc;
-      gdb_fildes_t fd = event_ptr->fd;
-
-      /* Now call the procedure associated with the event.  */
-      if ((*proc) (fd))
-	return -1;
-      return 1;
-    }
-
-  /* This is the case if there are no event on the event queue.  */
-  return 0;
-}
-
-/* Append PROC to the callback list.
-   The result is the "id" of the callback that can be passed back to
-   delete_callback_event.  */
-
-int
-append_callback_event (callback_handler_func *proc, gdb_client_data data)
-{
-  struct callback_event *event_ptr = XNEW (struct callback_event);
-
-  event_ptr->id = callback_list.num_callbacks++;
-  event_ptr->proc = proc;
-  event_ptr->data = data;
-  event_ptr->next = NULL;
-  if (callback_list.first == NULL)
-    callback_list.first = event_ptr;
-  if (callback_list.last != NULL)
-    callback_list.last->next = event_ptr;
-  callback_list.last = event_ptr;
-  return event_ptr->id;
-}
-
-/* Delete callback ID.
-   It is not an error callback ID doesn't exist.  */
-
-void
-delete_callback_event (int id)
-{
-  struct callback_event **p;
-
-  for (p = &callback_list.first; *p != NULL; p = &(*p)->next)
-    {
-      struct callback_event *event_ptr = *p;
-
-      if (event_ptr->id == id)
-	{
-	  *p = event_ptr->next;
-	  if (event_ptr == callback_list.last)
-	    callback_list.last = NULL;
-	  free (event_ptr);
-	  break;
-	}
-    }
-}
-
-/* Run the next callback.
-   The result is 1 if a callback was called and event processing
-   should continue, -1 if the callback wants the event loop to exit,
-   and 0 if there are no more callbacks.  */
-
-static int
-process_callback (void)
-{
-  struct callback_event *event_ptr;
-
-  event_ptr = callback_list.first;
-  if (event_ptr != NULL)
-    {
-      callback_handler_func *proc = event_ptr->proc;
-      gdb_client_data data = event_ptr->data;
-
-      /* Remove the event before calling PROC,
-	 more events may get added by PROC.  */
-      callback_list.first = event_ptr->next;
-      if (callback_list.first == NULL)
-	callback_list.last = NULL;
-      free  (event_ptr);
-      if ((*proc) (data))
-	return -1;
-      return 1;
-    }
-
-  return 0;
-}
-
-/* Add a file handler/descriptor to the list of descriptors we are
-   interested in.  FD is the file descriptor for the file/stream to be
-   listened to.  MASK is a combination of READABLE, WRITABLE,
-   EXCEPTION.  PROC is the procedure that will be called when an event
-   occurs for FD.  CLIENT_DATA is the argument to pass to PROC.  */
-
-static void
-create_file_handler (gdb_fildes_t fd, int mask, handler_func *proc,
-		     gdb_client_data client_data)
-{
-  file_handler *file_ptr;
-
-  /* Do we already have a file handler for this file? (We may be
-     changing its associated procedure).  */
-  for (file_ptr = gdb_notifier.first_file_handler;
-       file_ptr != NULL;
-       file_ptr = file_ptr->next_file)
-    if (file_ptr->fd == fd)
-      break;
-
-  /* It is a new file descriptor.  Add it to the list.  Otherwise,
-     just change the data associated with it.  */
-  if (file_ptr == NULL)
-    {
-      file_ptr = XNEW (struct file_handler);
-      file_ptr->fd = fd;
-      file_ptr->ready_mask = 0;
-      file_ptr->next_file = gdb_notifier.first_file_handler;
-      gdb_notifier.first_file_handler = file_ptr;
-
-      if (mask & GDB_READABLE)
-	FD_SET (fd, &gdb_notifier.check_masks[0]);
-      else
-	FD_CLR (fd, &gdb_notifier.check_masks[0]);
-
-      if (mask & GDB_WRITABLE)
-	FD_SET (fd, &gdb_notifier.check_masks[1]);
-      else
-	FD_CLR (fd, &gdb_notifier.check_masks[1]);
-
-      if (mask & GDB_EXCEPTION)
-	FD_SET (fd, &gdb_notifier.check_masks[2]);
-      else
-	FD_CLR (fd, &gdb_notifier.check_masks[2]);
-
-      if (gdb_notifier.num_fds <= fd)
-	gdb_notifier.num_fds = fd + 1;
-    }
-
-  file_ptr->proc = proc;
-  file_ptr->client_data = client_data;
-  file_ptr->mask = mask;
-}
-
-/* Wrapper function for create_file_handler.  */
-
-void
-add_file_handler (gdb_fildes_t fd,
-		  handler_func *proc, gdb_client_data client_data)
-{
-  create_file_handler (fd, GDB_READABLE | GDB_EXCEPTION, proc, client_data);
-}
-
-/* Remove the file descriptor FD from the list of monitored fd's:
-   i.e. we don't care anymore about events on the FD.  */
-
-void
-delete_file_handler (gdb_fildes_t fd)
-{
-  file_handler *file_ptr, *prev_ptr = NULL;
-  int i;
-
-  /* Find the entry for the given file. */
-
-  for (file_ptr = gdb_notifier.first_file_handler;
-       file_ptr != NULL;
-       file_ptr = file_ptr->next_file)
-    if (file_ptr->fd == fd)
-      break;
-
-  if (file_ptr == NULL)
-    return;
-
-  if (file_ptr->mask & GDB_READABLE)
-    FD_CLR (fd, &gdb_notifier.check_masks[0]);
-  if (file_ptr->mask & GDB_WRITABLE)
-    FD_CLR (fd, &gdb_notifier.check_masks[1]);
-  if (file_ptr->mask & GDB_EXCEPTION)
-    FD_CLR (fd, &gdb_notifier.check_masks[2]);
-
-  /* Find current max fd.  */
-
-  if ((fd + 1) == gdb_notifier.num_fds)
-    {
-      gdb_notifier.num_fds--;
-      for (i = gdb_notifier.num_fds; i; i--)
-	{
-	  if (FD_ISSET (i - 1, &gdb_notifier.check_masks[0])
-	      || FD_ISSET (i - 1, &gdb_notifier.check_masks[1])
-	      || FD_ISSET (i - 1, &gdb_notifier.check_masks[2]))
-	    break;
-	}
-      gdb_notifier.num_fds = i;
-    }
-
-  /* Deactivate the file descriptor, by clearing its mask, so that it
-     will not fire again.  */
-
-  file_ptr->mask = 0;
-
-  /* Get rid of the file handler in the file handler list.  */
-  if (file_ptr == gdb_notifier.first_file_handler)
-    gdb_notifier.first_file_handler = file_ptr->next_file;
-  else
-    {
-      for (prev_ptr = gdb_notifier.first_file_handler;
-	   prev_ptr->next_file != file_ptr;
-	   prev_ptr = prev_ptr->next_file)
-	;
-      prev_ptr->next_file = file_ptr->next_file;
-    }
-  free (file_ptr);
-}
-
-/* Handle the given event by calling the procedure associated to the
-   corresponding file handler.  Called by process_event indirectly,
-   through event_ptr->proc.  EVENT_FILE_DESC is file descriptor of the
-   event in the front of the event queue.  */
-
-static int
-handle_file_event (gdb_fildes_t event_file_desc)
-{
-  file_handler *file_ptr;
-  int mask;
-
-  /* Search the file handler list to find one that matches the fd in
-     the event.  */
-  for (file_ptr = gdb_notifier.first_file_handler; file_ptr != NULL;
-       file_ptr = file_ptr->next_file)
-    {
-      if (file_ptr->fd == event_file_desc)
-	{
-	  /* See if the desired events (mask) match the received
-	     events (ready_mask).  */
-
-	  if (file_ptr->ready_mask & GDB_EXCEPTION)
-	    {
-	      warning ("Exception condition detected on fd %s",
-		       pfildes (file_ptr->fd));
-	      file_ptr->error = 1;
-	    }
-	  else
-	    file_ptr->error = 0;
-	  mask = file_ptr->ready_mask & file_ptr->mask;
-
-	  /* Clear the received events for next time around.  */
-	  file_ptr->ready_mask = 0;
-
-	  /* If there was a match, then call the handler.  */
-	  if (mask != 0)
-	    {
-	      if ((*file_ptr->proc) (file_ptr->error,
-				     file_ptr->client_data) < 0)
-		return -1;
-	    }
-	  break;
-	}
-    }
-
-  return 0;
-}
-
-/* Create a file event, to be enqueued in the event queue for
-   processing.  The procedure associated to this event is always
-   handle_file_event, which will in turn invoke the one that was
-   associated to FD when it was registered with the event loop.  */
-
-static gdb_event *
-create_file_event (gdb_fildes_t fd)
-{
-  gdb_event *file_event_ptr;
-
-  file_event_ptr = XNEW (gdb_event);
-  file_event_ptr->proc = handle_file_event;
-  file_event_ptr->fd = fd;
-
-  return file_event_ptr;
-}
-
-/* Called by do_one_event to wait for new events on the monitored file
-   descriptors.  Queue file events as they are detected by the poll.
-   If there are no events, this function will block in the call to
-   select.  Return -1 if there are no files descriptors to monitor,
-   otherwise return 0.  */
-
-static int
-wait_for_event (void)
-{
-  file_handler *file_ptr;
-  int num_found = 0;
-
-  /* Make sure all output is done before getting another event.  */
-  fflush (stdout);
-  fflush (stderr);
-
-  if (gdb_notifier.num_fds == 0)
-    return -1;
-
-  gdb_notifier.ready_masks[0] = gdb_notifier.check_masks[0];
-  gdb_notifier.ready_masks[1] = gdb_notifier.check_masks[1];
-  gdb_notifier.ready_masks[2] = gdb_notifier.check_masks[2];
-  num_found = select (gdb_notifier.num_fds,
-		      &gdb_notifier.ready_masks[0],
-		      &gdb_notifier.ready_masks[1],
-		      &gdb_notifier.ready_masks[2],
-		      NULL);
-
-  /* Clear the masks after an error from select.  */
-  if (num_found == -1)
-    {
-      FD_ZERO (&gdb_notifier.ready_masks[0]);
-      FD_ZERO (&gdb_notifier.ready_masks[1]);
-      FD_ZERO (&gdb_notifier.ready_masks[2]);
-#ifdef EINTR
-      /* Dont print anything if we got a signal, let gdb handle
-	 it.  */
-      if (errno != EINTR)
-	perror_with_name ("select");
-#endif
-    }
-
-  /* Enqueue all detected file events.  */
-
-  for (file_ptr = gdb_notifier.first_file_handler;
-       file_ptr != NULL && num_found > 0;
-       file_ptr = file_ptr->next_file)
-    {
-      int mask = 0;
-
-      if (FD_ISSET (file_ptr->fd, &gdb_notifier.ready_masks[0]))
-	mask |= GDB_READABLE;
-      if (FD_ISSET (file_ptr->fd, &gdb_notifier.ready_masks[1]))
-	mask |= GDB_WRITABLE;
-      if (FD_ISSET (file_ptr->fd, &gdb_notifier.ready_masks[2]))
-	mask |= GDB_EXCEPTION;
-
-      if (!mask)
-	continue;
-      else
-	num_found--;
-
-      /* Enqueue an event only if this is still a new event for this
-	 fd.  */
-
-      if (file_ptr->ready_mask == 0)
-	{
-	  gdb_event *file_event_ptr = create_file_event (file_ptr->fd);
-
-	  event_queue.emplace (file_event_ptr);
-	}
-      file_ptr->ready_mask = mask;
-    }
-
-  return 0;
-}
-
-/* Start up the event loop.  This is the entry point to the event
-   loop.  */
-
-void
-start_event_loop (void)
-{
-  /* Loop until there is nothing to do.  This is the entry point to
-     the event loop engine.  If nothing is ready at this time, wait
-     for something to happen (via wait_for_event), then process it.
-     Return when there are no longer event sources to wait for.  */
-
-  while (1)
-    {
-      /* Any events already waiting in the queue?  */
-      int res = process_event ();
-
-      /* Did the event handler want the event loop to stop?  */
-      if (res == -1)
-	return;
-
-      if (res)
-	continue;
-
-      /* Process any queued callbacks before we go to sleep.  */
-      res = process_callback ();
-
-      /* Did the callback want the event loop to stop?  */
-      if (res == -1)
-	return;
-
-      if (res)
-	continue;
-
-      /* Wait for a new event.  If wait_for_event returns -1, we
-	 should get out because this means that there are no event
-	 sources left.  This will make the event loop stop, and the
-	 application exit.  */
-
-      if (wait_for_event () < 0)
-	return;
-    }
-
-  /* We are done with the event loop.  There are no more event sources
-     to listen to.  So we exit gdbserver.  */
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/event-loop.h ./gdb/gdbserver/event-loop.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/event-loop.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/event-loop.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,36 +0,0 @@
-/* Event loop machinery for the remote server for GDB.
-   Copyright (C) 1993-2020 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 GDBSERVER_EVENT_LOOP_H
-#define GDBSERVER_EVENT_LOOP_H
-
-typedef void *gdb_client_data;
-typedef int (handler_func) (int, gdb_client_data);
-typedef int (callback_handler_func) (gdb_client_data);
-
-extern void delete_file_handler (gdb_fildes_t fd);
-extern void add_file_handler (gdb_fildes_t fd, handler_func *proc,
-			      gdb_client_data client_data);
-extern int append_callback_event (callback_handler_func *proc,
-				   gdb_client_data client_data);
-extern void delete_callback_event (int id);
-
-extern void start_event_loop (void);
-extern void initialize_event_loop (void);
-
-#endif /* GDBSERVER_EVENT_LOOP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/fork-child.c ./gdb/gdbserver/fork-child.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/fork-child.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/fork-child.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,118 +0,0 @@
-/* Fork a Unix child process, and set up to debug it, for GDBserver.
-   Copyright (C) 1989-2020 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 "server.h"
-#include "gdbsupport/job-control.h"
-#include "nat/fork-inferior.h"
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-
-#ifdef SIGTTOU
-/* A file descriptor for the controlling terminal.  */
-static int terminal_fd;
-
-/* TERMINAL_FD's original foreground group.  */
-static pid_t old_foreground_pgrp;
-
-/* Hand back terminal ownership to the original foreground group.  */
-
-static void
-restore_old_foreground_pgrp (void)
-{
-  tcsetpgrp (terminal_fd, old_foreground_pgrp);
-}
-#endif
-
-/* See nat/fork-inferior.h.  */
-
-void
-prefork_hook (const char *args)
-{
-  client_state &cs = get_client_state ();
-  if (debug_threads)
-    {
-      debug_printf ("args: %s\n", args);
-      debug_flush ();
-    }
-
-#ifdef SIGTTOU
-  signal (SIGTTOU, SIG_DFL);
-  signal (SIGTTIN, SIG_DFL);
-#endif
-
-  /* Clear this so the backend doesn't get confused, thinking
-     CONT_THREAD died, and it needs to resume all threads.  */
-  cs.cont_thread = null_ptid;
-}
-
-/* See nat/fork-inferior.h.  */
-
-void
-postfork_hook (pid_t pid)
-{
-}
-
-/* See nat/fork-inferior.h.  */
-
-void
-postfork_child_hook ()
-{
-  /* This is set to the result of setpgrp, which if vforked, will be
-     visible to you in the parent process.  It's only used by humans
-     for debugging.  */
-  static int debug_setpgrp = 657473;
-
-  debug_setpgrp = gdb_setpgid ();
-  if (debug_setpgrp == -1)
-    perror (_("setpgrp failed in child"));
-}
-
-/* See nat/fork-inferior.h.  */
-
-void
-gdb_flush_out_err ()
-{
-  fflush (stdout);
-  fflush (stderr);
-}
-
-/* See server.h.  */
-
-void
-post_fork_inferior (int pid, const char *program)
-{
-  client_state &cs = get_client_state ();
-#ifdef SIGTTOU
-  signal (SIGTTOU, SIG_IGN);
-  signal (SIGTTIN, SIG_IGN);
-  terminal_fd = fileno (stderr);
-  old_foreground_pgrp = tcgetpgrp (terminal_fd);
-  tcsetpgrp (terminal_fd, pid);
-  atexit (restore_old_foreground_pgrp);
-#endif
-
-  startup_inferior (pid, START_INFERIOR_TRAPS_EXPECTED,
-		    &cs.last_status, &cs.last_ptid);
-  current_thread->last_resume_kind = resume_stop;
-  current_thread->last_status = cs.last_status;
-  signal_pid = pid;
-  target_post_create_inferior ();
-  fprintf (stderr, "Process %s created; pid = %d\n", program, pid);
-  fflush (stderr);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/gdb_proc_service.h ./gdb/gdbserver/gdb_proc_service.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/gdb_proc_service.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/gdb_proc_service.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,31 +0,0 @@
-/* <proc_service.h> replacement for systems that don't have it.
-   Copyright (C) 2000-2020 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 GDBSERVER_GDB_PROC_SERVICE_H
-#define GDBSERVER_GDB_PROC_SERVICE_H
-
-#include "gdbsupport/gdb_proc_service.h"
-
-/* Structure that identifies the target process.  */
-struct ps_prochandle
-{
-  /* We don't need to track anything.  All context is served from the
-     current inferior.  */
-};
-
-#endif /* GDBSERVER_GDB_PROC_SERVICE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/gdbreplay.c ./gdb/gdbserver/gdbreplay.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/gdbreplay.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/gdbreplay.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,524 +0,0 @@
-/* Replay a remote debug session logfile for GDB.
-   Copyright (C) 1996-2020 Free Software Foundation, Inc.
-   Written by Fred Fish (fnf@cygnus.com) from pieces of gdbserver.
-
-   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 "gdbsupport/common-defs.h"
-#include "gdbsupport/version.h"
-
-#if HAVE_SYS_FILE_H
-#include <sys/file.h>
-#endif
-#if HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#include <ctype.h>
-#if HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#include <unistd.h>
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#if HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-
-#if USE_WIN32API
-#include <ws2tcpip.h>
-#endif
-
-#include "gdbsupport/netstuff.h"
-#include "gdbsupport/rsp-low.h"
-
-#ifndef HAVE_SOCKLEN_T
-typedef int socklen_t;
-#endif
-
-/* Sort of a hack... */
-#define EOL (EOF - 1)
-
-static int remote_desc;
-
-#ifdef __MINGW32CE__
-
-#ifndef COUNTOF
-#define COUNTOF(STR) (sizeof (STR) / sizeof ((STR)[0]))
-#endif
-
-#define errno (GetLastError ())
-
-char *
-strerror (DWORD error)
-{
-  static char buf[1024];
-  WCHAR *msgbuf;
-  DWORD lasterr = GetLastError ();
-  DWORD chars = FormatMessageW (FORMAT_MESSAGE_FROM_SYSTEM
-				| FORMAT_MESSAGE_ALLOCATE_BUFFER,
-				NULL,
-				error,
-				0, /* Default language */
-				(LPVOID)&msgbuf,
-				0,
-				NULL);
-  if (chars != 0)
-    {
-      /* If there is an \r\n appended, zap it.  */
-      if (chars >= 2
-	  && msgbuf[chars - 2] == '\r'
-	  && msgbuf[chars - 1] == '\n')
-	{
-	  chars -= 2;
-	  msgbuf[chars] = 0;
-	}
-
-      if (chars > ((COUNTOF (buf)) - 1))
-	{
-	  chars = COUNTOF (buf) - 1;
-	  msgbuf [chars] = 0;
-	}
-
-      wcstombs (buf, msgbuf, chars + 1);
-      LocalFree (msgbuf);
-    }
-  else
-    sprintf (buf, "unknown win32 error (%ld)", error);
-
-  SetLastError (lasterr);
-  return buf;
-}
-
-#endif /* __MINGW32CE__ */
-
-static void
-sync_error (FILE *fp, const char *desc, int expect, int got)
-{
-  fprintf (stderr, "\n%s\n", desc);
-  fprintf (stderr, "At logfile offset %ld, expected '0x%x' got '0x%x'\n",
-	   ftell (fp), expect, got);
-  fflush (stderr);
-  exit (1);
-}
-
-static void
-remote_error (const char *desc)
-{
-  fprintf (stderr, "\n%s\n", desc);
-  fflush (stderr);
-  exit (1);
-}
-
-static void
-remote_close (void)
-{
-#ifdef USE_WIN32API
-  closesocket (remote_desc);
-#else
-  close (remote_desc);
-#endif
-}
-
-/* Open a connection to a remote debugger.
-   NAME is the filename used for communication.  */
-
-static void
-remote_open (char *name)
-{
-  char *last_colon = strrchr (name, ':');
-
-  if (last_colon == NULL)
-    {
-      fprintf (stderr, "%s: Must specify tcp connection as host:addr\n", name);
-      fflush (stderr);
-      exit (1);
-    }
-
-#ifdef USE_WIN32API
-  static int winsock_initialized;
-#endif
-  int tmp;
-  int tmp_desc;
-  struct addrinfo hint;
-  struct addrinfo *ainfo;
-
-  memset (&hint, 0, sizeof (hint));
-  /* Assume no prefix will be passed, therefore we should use
-     AF_UNSPEC.  */
-  hint.ai_family = AF_UNSPEC;
-  hint.ai_socktype = SOCK_STREAM;
-  hint.ai_protocol = IPPROTO_TCP;
-
-  parsed_connection_spec parsed = parse_connection_spec (name, &hint);
-
-  if (parsed.port_str.empty ())
-    error (_("Missing port on hostname '%s'"), name);
-
-#ifdef USE_WIN32API
-  if (!winsock_initialized)
-    {
-      WSADATA wsad;
-
-      WSAStartup (MAKEWORD (1, 0), &wsad);
-      winsock_initialized = 1;
-    }
-#endif
-
-  int r = getaddrinfo (parsed.host_str.c_str (), parsed.port_str.c_str (),
-		       &hint, &ainfo);
-
-  if (r != 0)
-    {
-      fprintf (stderr, "%s:%s: cannot resolve name: %s\n",
-	       parsed.host_str.c_str (), parsed.port_str.c_str (),
-	       gai_strerror (r));
-      fflush (stderr);
-      exit (1);
-    }
-
-  scoped_free_addrinfo free_ainfo (ainfo);
-
-  struct addrinfo *p;
-
-  for (p = ainfo; p != NULL; p = p->ai_next)
-    {
-      tmp_desc = socket (p->ai_family, p->ai_socktype, p->ai_protocol);
-
-      if (tmp_desc >= 0)
-	break;
-    }
-
-  if (p == NULL)
-    perror_with_name ("Cannot open socket");
-
-  /* Allow rapid reuse of this port. */
-  tmp = 1;
-  setsockopt (tmp_desc, SOL_SOCKET, SO_REUSEADDR, (char *) &tmp,
-	      sizeof (tmp));
-
-  switch (p->ai_family)
-    {
-    case AF_INET:
-      ((struct sockaddr_in *) p->ai_addr)->sin_addr.s_addr = INADDR_ANY;
-      break;
-    case AF_INET6:
-      ((struct sockaddr_in6 *) p->ai_addr)->sin6_addr = in6addr_any;
-      break;
-    default:
-      fprintf (stderr, "Invalid 'ai_family' %d\n", p->ai_family);
-      exit (1);
-    }
-
-  if (bind (tmp_desc, p->ai_addr, p->ai_addrlen) != 0)
-    perror_with_name ("Can't bind address");
-
-  if (p->ai_socktype == SOCK_DGRAM)
-    remote_desc = tmp_desc;
-  else
-    {
-      struct sockaddr_storage sockaddr;
-      socklen_t sockaddrsize = sizeof (sockaddr);
-      char orig_host[GDB_NI_MAX_ADDR], orig_port[GDB_NI_MAX_PORT];
-
-      if (listen (tmp_desc, 1) != 0)
-	perror_with_name ("Can't listen on socket");
-
-      remote_desc = accept (tmp_desc, (struct sockaddr *) &sockaddr,
-			    &sockaddrsize);
-
-      if (remote_desc == -1)
-	perror_with_name ("Accept failed");
-
-      /* Enable TCP keep alive process. */
-      tmp = 1;
-      setsockopt (tmp_desc, SOL_SOCKET, SO_KEEPALIVE,
-		  (char *) &tmp, sizeof (tmp));
-
-      /* Tell TCP not to delay small packets.  This greatly speeds up
-	 interactive response. */
-      tmp = 1;
-      setsockopt (remote_desc, IPPROTO_TCP, TCP_NODELAY,
-		  (char *) &tmp, sizeof (tmp));
-
-      if (getnameinfo ((struct sockaddr *) &sockaddr, sockaddrsize,
-		       orig_host, sizeof (orig_host),
-		       orig_port, sizeof (orig_port),
-		       NI_NUMERICHOST | NI_NUMERICSERV) == 0)
-	{
-	  fprintf (stderr, "Remote debugging from host %s, port %s\n",
-		   orig_host, orig_port);
-	  fflush (stderr);
-	}
-
-#ifndef USE_WIN32API
-      close (tmp_desc);		/* No longer need this */
-
-      signal (SIGPIPE, SIG_IGN);	/* If we don't do this, then
-					   gdbreplay simply exits when
-					   the remote side dies.  */
-#else
-      closesocket (tmp_desc);	/* No longer need this */
-#endif
-    }
-
-#if defined(F_SETFL) && defined (FASYNC)
-  fcntl (remote_desc, F_SETFL, FASYNC);
-#endif
-
-  fprintf (stderr, "Replay logfile using %s\n", name);
-  fflush (stderr);
-}
-
-static int
-logchar (FILE *fp)
-{
-  int ch;
-  int ch2;
-
-  ch = fgetc (fp);
-  if (ch != '\r')
-    {
-      fputc (ch, stdout);
-      fflush (stdout);
-    }
-  switch (ch)
-    {
-      /* Treat \r\n as a newline.  */
-    case '\r':
-      ch = fgetc (fp);
-      if (ch == '\n')
-	ch = EOL;
-      else
-	{
-	  ungetc (ch, fp);
-	  ch = '\r';
-	}
-      fputc (ch == EOL ? '\n' : '\r', stdout);
-      fflush (stdout);
-      break;
-    case '\n':
-      ch = EOL;
-      break;
-    case '\\':
-      ch = fgetc (fp);
-      fputc (ch, stdout);
-      fflush (stdout);
-      switch (ch)
-	{
-	case '\\':
-	  break;
-	case 'b':
-	  ch = '\b';
-	  break;
-	case 'f':
-	  ch = '\f';
-	  break;
-	case 'n':
-	  ch = '\n';
-	  break;
-	case 'r':
-	  ch = '\r';
-	  break;
-	case 't':
-	  ch = '\t';
-	  break;
-	case 'v':
-	  ch = '\v';
-	  break;
-	case 'x':
-	  ch2 = fgetc (fp);
-	  fputc (ch2, stdout);
-	  fflush (stdout);
-	  ch = fromhex (ch2) << 4;
-	  ch2 = fgetc (fp);
-	  fputc (ch2, stdout);
-	  fflush (stdout);
-	  ch |= fromhex (ch2);
-	  break;
-	default:
-	  /* Treat any other char as just itself */
-	  break;
-	}
-    default:
-      break;
-    }
-  return (ch);
-}
-
-static int
-gdbchar (int desc)
-{
-  unsigned char fromgdb;
-
-  if (read (desc, &fromgdb, 1) != 1)
-    return -1;
-  else
-    return fromgdb;
-}
-
-/* Accept input from gdb and match with chars from fp (after skipping one
-   blank) up until a \n is read from fp (which is not matched) */
-
-static void
-expect (FILE *fp)
-{
-  int fromlog;
-  int fromgdb;
-
-  if ((fromlog = logchar (fp)) != ' ')
-    {
-      sync_error (fp, "Sync error during gdb read of leading blank", ' ',
-		  fromlog);
-    }
-  do
-    {
-      fromlog = logchar (fp);
-      if (fromlog == EOL)
-	break;
-      fromgdb = gdbchar (remote_desc);
-      if (fromgdb < 0)
-	remote_error ("Error during read from gdb");
-    }
-  while (fromlog == fromgdb);
-
-  if (fromlog != EOL)
-    {
-      sync_error (fp, "Sync error during read of gdb packet from log", fromlog,
-		  fromgdb);
-    }
-}
-
-/* Play data back to gdb from fp (after skipping leading blank) up until a
-   \n is read from fp (which is discarded and not sent to gdb). */
-
-static void
-play (FILE *fp)
-{
-  int fromlog;
-  char ch;
-
-  if ((fromlog = logchar (fp)) != ' ')
-    {
-      sync_error (fp, "Sync error skipping blank during write to gdb", ' ',
-		  fromlog);
-    }
-  while ((fromlog = logchar (fp)) != EOL)
-    {
-      ch = fromlog;
-      if (write (remote_desc, &ch, 1) != 1)
-	remote_error ("Error during write to gdb");
-    }
-}
-
-static void
-gdbreplay_version (void)
-{
-  printf ("GNU gdbreplay %s%s\n"
-	  "Copyright (C) 2020 Free Software Foundation, Inc.\n"
-	  "gdbreplay is free software, covered by "
-	  "the GNU General Public License.\n"
-	  "This gdbreplay was configured as \"%s\"\n",
-	  PKGVERSION, version, host_name);
-}
-
-static void
-gdbreplay_usage (FILE *stream)
-{
-  fprintf (stream, "Usage:\tgdbreplay LOGFILE HOST:PORT\n");
-  if (REPORT_BUGS_TO[0] && stream == stdout)
-    fprintf (stream, "Report bugs to \"%s\".\n", REPORT_BUGS_TO);
-}
-
-/* Main function.  This is called by the real "main" function,
-   wrapped in a TRY_CATCH that handles any uncaught exceptions.  */
-
-static void ATTRIBUTE_NORETURN
-captured_main (int argc, char *argv[])
-{
-  FILE *fp;
-  int ch;
-
-  if (argc >= 2 && strcmp (argv[1], "--version") == 0)
-    {
-      gdbreplay_version ();
-      exit (0);
-    }
-  if (argc >= 2 && strcmp (argv[1], "--help") == 0)
-    {
-      gdbreplay_usage (stdout);
-      exit (0);
-    }
-
-  if (argc < 3)
-    {
-      gdbreplay_usage (stderr);
-      exit (1);
-    }
-  fp = fopen (argv[1], "r");
-  if (fp == NULL)
-    {
-      perror_with_name (argv[1]);
-    }
-  remote_open (argv[2]);
-  while ((ch = logchar (fp)) != EOF)
-    {
-      switch (ch)
-	{
-	case 'w':
-	  /* data sent from gdb to gdbreplay, accept and match it */
-	  expect (fp);
-	  break;
-	case 'r':
-	  /* data sent from gdbreplay to gdb, play it */
-	  play (fp);
-	  break;
-	case 'c':
-	  /* Command executed by gdb */
-	  while ((ch = logchar (fp)) != EOL);
-	  break;
-	}
-    }
-  remote_close ();
-  exit (0);
-}
-
-int
-main (int argc, char *argv[])
-{
-  try
-    {
-      captured_main (argc, argv);
-    }
-  catch (const gdb_exception &exception)
-    {
-      if (exception.reason == RETURN_ERROR)
-	{
-	  fflush (stdout);
-	  fprintf (stderr, "%s\n", exception.what ());
-	}
-
-      exit (1);
-    }
-
-  gdb_assert_not_reached ("captured_main should never return");
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/gdbthread.h ./gdb/gdbserver/gdbthread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/gdbthread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/gdbthread.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,227 +0,0 @@
-/* Multi-thread control defs for remote server for GDB.
-   Copyright (C) 1993-2020 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 GDBSERVER_GDBTHREAD_H
-#define GDBSERVER_GDBTHREAD_H
-
-#include "gdbsupport/common-gdbthread.h"
-#include "inferiors.h"
-
-#include <list>
-
-struct btrace_target_info;
-struct regcache;
-
-struct thread_info
-{
-  /* The id of this thread.  */
-  ptid_t id;
-
-  void *target_data;
-  struct regcache *regcache_data;
-
-  /* The last resume GDB requested on this thread.  */
-  enum resume_kind last_resume_kind;
-
-  /* The last wait status reported for this thread.  */
-  struct target_waitstatus last_status;
-
-  /* True if LAST_STATUS hasn't been reported to GDB yet.  */
-  int status_pending_p;
-
-  /* Given `while-stepping', a thread may be collecting data for more
-     than one tracepoint simultaneously.  E.g.:
-
-    ff0001  INSN1 <-- TP1, while-stepping 10 collect $regs
-    ff0002  INSN2
-    ff0003  INSN3 <-- TP2, collect $regs
-    ff0004  INSN4 <-- TP3, while-stepping 10 collect $regs
-    ff0005  INSN5
-
-   Notice that when instruction INSN5 is reached, the while-stepping
-   actions of both TP1 and TP3 are still being collected, and that TP2
-   had been collected meanwhile.  The whole range of ff0001-ff0005
-   should be single-stepped, due to at least TP1's while-stepping
-   action covering the whole range.
-
-   On the other hand, the same tracepoint with a while-stepping action
-   may be hit by more than one thread simultaneously, hence we can't
-   keep the current step count in the tracepoint itself.
-
-   This is the head of the list of the states of `while-stepping'
-   tracepoint actions this thread is now collecting; NULL if empty.
-   Each item in the list holds the current step of the while-stepping
-   action.  */
-  struct wstep_state *while_stepping;
-
-  /* Branch trace target information for this thread.  */
-  struct btrace_target_info *btrace;
-};
-
-extern std::list<thread_info *> all_threads;
-
-void remove_thread (struct thread_info *thread);
-struct thread_info *add_thread (ptid_t ptid, void *target_data);
-
-/* Return a pointer to the first thread, or NULL if there isn't one.  */
-
-struct thread_info *get_first_thread (void);
-
-struct thread_info *find_thread_ptid (ptid_t ptid);
-
-/* Find any thread of the PID process.  Returns NULL if none is
-   found.  */
-struct thread_info *find_any_thread_of_pid (int pid);
-
-/* Find the first thread for which FUNC returns true.  Return NULL if no thread
-   satisfying FUNC is found.  */
-
-template <typename Func>
-static thread_info *
-find_thread (Func func)
-{
-  std::list<thread_info *>::iterator next, cur = all_threads.begin ();
-
-  while (cur != all_threads.end ())
-    {
-      next = cur;
-      next++;
-
-      if (func (*cur))
-	return *cur;
-
-      cur = next;
-    }
-
-  return NULL;
-}
-
-/* Like the above, but only consider threads with pid PID.  */
-
-template <typename Func>
-static thread_info *
-find_thread (int pid, Func func)
-{
-  return find_thread ([&] (thread_info *thread)
-    {
-      return thread->id.pid () == pid && func (thread);
-    });
-}
-
-/* Find the first thread that matches FILTER for which FUNC returns true.
-   Return NULL if no thread satisfying these conditions is found.  */
-
-template <typename Func>
-static thread_info *
-find_thread (ptid_t filter, Func func)
-{
-  return find_thread ([&] (thread_info *thread) {
-    return thread->id.matches (filter) && func (thread);
-  });
-}
-
-/* Invoke FUNC for each thread.  */
-
-template <typename Func>
-static void
-for_each_thread (Func func)
-{
-  std::list<thread_info *>::iterator next, cur = all_threads.begin ();
-
-  while (cur != all_threads.end ())
-    {
-      next = cur;
-      next++;
-      func (*cur);
-      cur = next;
-    }
-}
-
-/* Like the above, but only consider threads with pid PID.  */
-
-template <typename Func>
-static void
-for_each_thread (int pid, Func func)
-{
-  for_each_thread ([&] (thread_info *thread)
-    {
-      if (pid == thread->id.pid ())
-	func (thread);
-    });
-}
-
-/* Find the a random thread for which FUNC (THREAD) returns true.  If
-   no entry is found then return NULL.  */
-
-template <typename Func>
-static thread_info *
-find_thread_in_random (Func func)
-{
-  int count = 0;
-  int random_selector;
-
-  /* First count how many interesting entries we have.  */
-  for_each_thread ([&] (thread_info *thread) {
-    if (func (thread))
-      count++;
-  });
-
-  if (count == 0)
-    return NULL;
-
-  /* Now randomly pick an entry out of those.  */
-  random_selector = (int)
-    ((count * (double) rand ()) / (RAND_MAX + 1.0));
-
-  thread_info *thread = find_thread ([&] (thread_info *thr_arg) {
-    return func (thr_arg) && (random_selector-- == 0);
-  });
-
-  gdb_assert (thread != NULL);
-
-  return thread;
-}
-
-/* Get current thread ID (Linux task ID).  */
-#define current_ptid (current_thread->id)
-
-/* Get the ptid of THREAD.  */
-
-static inline ptid_t
-ptid_of (const thread_info *thread)
-{
-  return thread->id;
-}
-
-/* Get the pid of THREAD.  */
-
-static inline int
-pid_of (const thread_info *thread)
-{
-  return thread->id.pid ();
-}
-
-/* Get the lwp of THREAD.  */
-
-static inline long
-lwpid_of (const thread_info *thread)
-{
-  return thread->id.lwp ();
-}
-
-#endif /* GDBSERVER_GDBTHREAD_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/.gitignore ./gdb/gdbserver/.gitignore
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/.gitignore	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/.gitignore	1970-01-01 00:00:00.000000000 +0000
@@ -1,10 +0,0 @@
-/Makefile
-
-gdbreplay
-gdbserver
-libinproctrace.so
-
-build-gnulib-gdbserver
-build-libiberty-gdbserver
-
-*-generated.c
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/hostio.c ./gdb/gdbserver/hostio.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/hostio.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/hostio.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,620 +0,0 @@
-/* Host file transfer support for gdbserver.
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
-
-   Contributed by CodeSourcery.
-
-   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 "server.h"
-#include "gdb/fileio.h"
-#include "hostio.h"
-
-#include <fcntl.h>
-#include <limits.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "gdbsupport/fileio.h"
-
-struct fd_list
-{
-  int fd;
-  struct fd_list *next;
-};
-
-static struct fd_list *open_fds;
-
-static int
-safe_fromhex (char a, int *nibble)
-{
-  if (a >= '0' && a <= '9')
-    *nibble = a - '0';
-  else if (a >= 'a' && a <= 'f')
-    *nibble = a - 'a' + 10;
-  else if (a >= 'A' && a <= 'F')
-    *nibble = a - 'A' + 10;
-  else
-    return -1;
-
-  return 0;
-}
-
-/* Filenames are hex encoded, so the maximum we can handle is half the
-   packet buffer size.  Cap to PATH_MAX, if it is shorter.  */
-#if !defined (PATH_MAX) || (PATH_MAX > (PBUFSIZ / 2 + 1))
-#  define HOSTIO_PATH_MAX (PBUFSIZ / 2 + 1)
-#else
-#  define HOSTIO_PATH_MAX PATH_MAX
-#endif
-
-static int
-require_filename (char **pp, char *filename)
-{
-  int count;
-  char *p;
-
-  p = *pp;
-  count = 0;
-
-  while (*p && *p != ',')
-    {
-      int nib1, nib2;
-
-      /* Don't allow overflow.  */
-      if (count >= HOSTIO_PATH_MAX - 1)
-	return -1;
-
-      if (safe_fromhex (p[0], &nib1)
-	  || safe_fromhex (p[1], &nib2))
-	return -1;
-
-      filename[count++] = nib1 * 16 + nib2;
-      p += 2;
-    }
-
-  filename[count] = '\0';
-  *pp = p;
-  return 0;
-}
-
-static int
-require_int (char **pp, int *value)
-{
-  char *p;
-  int count, firstdigit;
-
-  p = *pp;
-  *value = 0;
-  count = 0;
-  firstdigit = -1;
-
-  while (*p && *p != ',')
-    {
-      int nib;
-
-      if (safe_fromhex (p[0], &nib))
-	return -1;
-
-      if (firstdigit == -1)
-	firstdigit = nib;
-
-      /* Don't allow overflow.  */
-      if (count >= 8 || (count == 7 && firstdigit >= 0x8))
-	return -1;
-
-      *value = *value * 16 + nib;
-      p++;
-      count++;
-    }
-
-  *pp = p;
-  return 0;
-}
-
-static int
-require_data (char *p, int p_len, char **data, int *data_len)
-{
-  int input_index, output_index, escaped;
-
-  *data = (char *) xmalloc (p_len);
-
-  output_index = 0;
-  escaped = 0;
-  for (input_index = 0; input_index < p_len; input_index++)
-    {
-      char b = p[input_index];
-
-      if (escaped)
-	{
-	  (*data)[output_index++] = b ^ 0x20;
-	  escaped = 0;
-	}
-      else if (b == '}')
-	escaped = 1;
-      else
-	(*data)[output_index++] = b;
-    }
-
-  if (escaped)
-    {
-      free (*data);
-      return -1;
-    }
-
-  *data_len = output_index;
-  return 0;
-}
-
-static int
-require_comma (char **pp)
-{
-  if (**pp == ',')
-    {
-      (*pp)++;
-      return 0;
-    }
-  else
-    return -1;
-}
-
-static int
-require_end (char *p)
-{
-  if (*p == '\0')
-    return 0;
-  else
-    return -1;
-}
-
-static int
-require_valid_fd (int fd)
-{
-  struct fd_list *fd_ptr;
-
-  for (fd_ptr = open_fds; fd_ptr != NULL; fd_ptr = fd_ptr->next)
-    if (fd_ptr->fd == fd)
-      return 0;
-
-  return -1;
-}
-
-/* Fill in own_buf with the last hostio error packet, however it
-   suitable for the target.  */
-static void
-hostio_error (char *own_buf)
-{
-  the_target->hostio_last_error (own_buf);
-}
-
-static void
-hostio_packet_error (char *own_buf)
-{
-  sprintf (own_buf, "F-1,%x", FILEIO_EINVAL);
-}
-
-static void
-hostio_reply (char *own_buf, int result)
-{
-  sprintf (own_buf, "F%x", result);
-}
-
-static int
-hostio_reply_with_data (char *own_buf, char *buffer, int len,
-			int *new_packet_len)
-{
-  int input_index, output_index, out_maxlen;
-
-  sprintf (own_buf, "F%x;", len);
-  output_index = strlen (own_buf);
-
-  out_maxlen = PBUFSIZ;
-
-  for (input_index = 0; input_index < len; input_index++)
-    {
-      char b = buffer[input_index];
-
-      if (b == '$' || b == '#' || b == '}' || b == '*')
-	{
-	  /* These must be escaped.  */
-	  if (output_index + 2 > out_maxlen)
-	    break;
-	  own_buf[output_index++] = '}';
-	  own_buf[output_index++] = b ^ 0x20;
-	}
-      else
-	{
-	  if (output_index + 1 > out_maxlen)
-	    break;
-	  own_buf[output_index++] = b;
-	}
-    }
-
-  *new_packet_len = output_index;
-  return input_index;
-}
-
-/* Process ID of inferior whose filesystem hostio functions
-   that take FILENAME arguments will use.  Zero means to use
-   our own filesystem.  */
-
-static int hostio_fs_pid;
-
-/* See hostio.h.  */
-
-void
-hostio_handle_new_gdb_connection (void)
-{
-  hostio_fs_pid = 0;
-}
-
-/* Handle a "vFile:setfs:" packet.  */
-
-static void
-handle_setfs (char *own_buf)
-{
-  char *p;
-  int pid;
-
-  /* If the target doesn't have any of the in-filesystem-of methods
-     then there's no point in GDB sending "vFile:setfs:" packets.  We
-     reply with an empty packet (i.e. we pretend we don't understand
-     "vFile:setfs:") and that should stop GDB sending any more.  */
-  if (the_target->multifs_open == NULL
-      && the_target->multifs_unlink == NULL
-      && the_target->multifs_readlink == NULL)
-    {
-      own_buf[0] = '\0';
-      return;
-    }
-
-  p = own_buf + strlen ("vFile:setfs:");
-
-  if (require_int (&p, &pid)
-      || pid < 0
-      || require_end (p))
-    {
-      hostio_packet_error (own_buf);
-      return;
-    }
-
-  hostio_fs_pid = pid;
-
-  hostio_reply (own_buf, 0);
-}
-
-static void
-handle_open (char *own_buf)
-{
-  char filename[HOSTIO_PATH_MAX];
-  char *p;
-  int fileio_flags, fileio_mode, flags, fd;
-  mode_t mode;
-  struct fd_list *new_fd;
-
-  p = own_buf + strlen ("vFile:open:");
-
-  if (require_filename (&p, filename)
-      || require_comma (&p)
-      || require_int (&p, &fileio_flags)
-      || require_comma (&p)
-      || require_int (&p, &fileio_mode)
-      || require_end (p)
-      || fileio_to_host_openflags (fileio_flags, &flags)
-      || fileio_to_host_mode (fileio_mode, &mode))
-    {
-      hostio_packet_error (own_buf);
-      return;
-    }
-
-  /* We do not need to convert MODE, since the fileio protocol
-     uses the standard values.  */
-  if (hostio_fs_pid != 0 && the_target->multifs_open != NULL)
-    fd = the_target->multifs_open (hostio_fs_pid, filename,
-				   flags, mode);
-  else
-    fd = open (filename, flags, mode);
-
-  if (fd == -1)
-    {
-      hostio_error (own_buf);
-      return;
-    }
-
-  /* Record the new file descriptor.  */
-  new_fd = XNEW (struct fd_list);
-  new_fd->fd = fd;
-  new_fd->next = open_fds;
-  open_fds = new_fd;
-
-  hostio_reply (own_buf, fd);
-}
-
-static void
-handle_pread (char *own_buf, int *new_packet_len)
-{
-  int fd, ret, len, offset, bytes_sent;
-  char *p, *data;
-  static int max_reply_size = -1;
-
-  p = own_buf + strlen ("vFile:pread:");
-
-  if (require_int (&p, &fd)
-      || require_comma (&p)
-      || require_valid_fd (fd)
-      || require_int (&p, &len)
-      || require_comma (&p)
-      || require_int (&p, &offset)
-      || require_end (p))
-    {
-      hostio_packet_error (own_buf);
-      return;
-    }
-
-  /* Do not attempt to read more than the maximum number of bytes
-     hostio_reply_with_data can fit in a packet.  We may still read
-     too much because of escaping, but this is handled below.  */
-  if (max_reply_size == -1)
-    {
-      sprintf (own_buf, "F%x;", PBUFSIZ);
-      max_reply_size = PBUFSIZ - strlen (own_buf);
-    }
-  if (len > max_reply_size)
-    len = max_reply_size;
-
-  data = (char *) xmalloc (len);
-#ifdef HAVE_PREAD
-  ret = pread (fd, data, len, offset);
-#else
-  ret = -1;
-#endif
-  /* If we have no pread or it failed for this file, use lseek/read.  */
-  if (ret == -1)
-    {
-      ret = lseek (fd, offset, SEEK_SET);
-      if (ret != -1)
-	ret = read (fd, data, len);
-    }
-
-  if (ret == -1)
-    {
-      hostio_error (own_buf);
-      free (data);
-      return;
-    }
-
-  bytes_sent = hostio_reply_with_data (own_buf, data, ret, new_packet_len);
-
-  /* If we were using read, and the data did not all fit in the reply,
-     we would have to back up using lseek here.  With pread it does
-     not matter.  But we still have a problem; the return value in the
-     packet might be wrong, so we must fix it.  This time it will
-     definitely fit.  */
-  if (bytes_sent < ret)
-    bytes_sent = hostio_reply_with_data (own_buf, data, bytes_sent,
-					 new_packet_len);
-
-  free (data);
-}
-
-static void
-handle_pwrite (char *own_buf, int packet_len)
-{
-  int fd, ret, len, offset;
-  char *p, *data;
-
-  p = own_buf + strlen ("vFile:pwrite:");
-
-  if (require_int (&p, &fd)
-      || require_comma (&p)
-      || require_valid_fd (fd)
-      || require_int (&p, &offset)
-      || require_comma (&p)
-      || require_data (p, packet_len - (p - own_buf), &data, &len))
-    {
-      hostio_packet_error (own_buf);
-      return;
-    }
-
-#ifdef HAVE_PWRITE
-  ret = pwrite (fd, data, len, offset);
-#else
-  ret = -1;
-#endif
-  /* If we have no pwrite or it failed for this file, use lseek/write.  */
-  if (ret == -1)
-    {
-      ret = lseek (fd, offset, SEEK_SET);
-      if (ret != -1)
-	ret = write (fd, data, len);
-    }
-
-  if (ret == -1)
-    {
-      hostio_error (own_buf);
-      free (data);
-      return;
-    }
-
-  hostio_reply (own_buf, ret);
-  free (data);
-}
-
-static void
-handle_fstat (char *own_buf, int *new_packet_len)
-{
-  int fd, bytes_sent;
-  char *p;
-  struct stat st;
-  struct fio_stat fst;
-
-  p = own_buf + strlen ("vFile:fstat:");
-
-  if (require_int (&p, &fd)
-      || require_valid_fd (fd)
-      || require_end (p))
-    {
-      hostio_packet_error (own_buf);
-      return;
-    }
-
-  if (fstat (fd, &st) == -1)
-    {
-      hostio_error (own_buf);
-      return;
-    }
-
-  host_to_fileio_stat (&st, &fst);
-
-  bytes_sent = hostio_reply_with_data (own_buf,
-				       (char *) &fst, sizeof (fst),
-				       new_packet_len);
-
-  /* If the response does not fit into a single packet, do not attempt
-     to return a partial response, but simply fail.  */
-  if (bytes_sent < sizeof (fst))
-    write_enn (own_buf);
-}
-
-static void
-handle_close (char *own_buf)
-{
-  int fd, ret;
-  char *p;
-  struct fd_list **open_fd_p, *old_fd;
-
-  p = own_buf + strlen ("vFile:close:");
-
-  if (require_int (&p, &fd)
-      || require_valid_fd (fd)
-      || require_end (p))
-    {
-      hostio_packet_error (own_buf);
-      return;
-    }
-
-  ret = close (fd);
-
-  if (ret == -1)
-    {
-      hostio_error (own_buf);
-      return;
-    }
-
-  open_fd_p = &open_fds;
-  /* We know that fd is in the list, thanks to require_valid_fd.  */
-  while ((*open_fd_p)->fd != fd)
-    open_fd_p = &(*open_fd_p)->next;
-
-  old_fd = *open_fd_p;
-  *open_fd_p = (*open_fd_p)->next;
-  free (old_fd);
-
-  hostio_reply (own_buf, ret);
-}
-
-static void
-handle_unlink (char *own_buf)
-{
-  char filename[HOSTIO_PATH_MAX];
-  char *p;
-  int ret;
-
-  p = own_buf + strlen ("vFile:unlink:");
-
-  if (require_filename (&p, filename)
-      || require_end (p))
-    {
-      hostio_packet_error (own_buf);
-      return;
-    }
-
-  if (hostio_fs_pid != 0 && the_target->multifs_unlink != NULL)
-    ret = the_target->multifs_unlink (hostio_fs_pid, filename);
-  else
-    ret = unlink (filename);
-
-  if (ret == -1)
-    {
-      hostio_error (own_buf);
-      return;
-    }
-
-  hostio_reply (own_buf, ret);
-}
-
-static void
-handle_readlink (char *own_buf, int *new_packet_len)
-{
-  char filename[HOSTIO_PATH_MAX], linkname[HOSTIO_PATH_MAX];
-  char *p;
-  int ret, bytes_sent;
-
-  p = own_buf + strlen ("vFile:readlink:");
-
-  if (require_filename (&p, filename)
-      || require_end (p))
-    {
-      hostio_packet_error (own_buf);
-      return;
-    }
-
-  if (hostio_fs_pid != 0 && the_target->multifs_readlink != NULL)
-    ret = the_target->multifs_readlink (hostio_fs_pid, filename,
-					linkname,
-					sizeof (linkname) - 1);
-  else
-    ret = readlink (filename, linkname, sizeof (linkname) - 1);
-
-  if (ret == -1)
-    {
-      hostio_error (own_buf);
-      return;
-    }
-
-  bytes_sent = hostio_reply_with_data (own_buf, linkname, ret, new_packet_len);
-
-  /* If the response does not fit into a single packet, do not attempt
-     to return a partial response, but simply fail.  */
-  if (bytes_sent < ret)
-    sprintf (own_buf, "F-1,%x", FILEIO_ENAMETOOLONG);
-}
-
-/* Handle all the 'F' file transfer packets.  */
-
-int
-handle_vFile (char *own_buf, int packet_len, int *new_packet_len)
-{
-  if (startswith (own_buf, "vFile:open:"))
-    handle_open (own_buf);
-  else if (startswith (own_buf, "vFile:pread:"))
-    handle_pread (own_buf, new_packet_len);
-  else if (startswith (own_buf, "vFile:pwrite:"))
-    handle_pwrite (own_buf, packet_len);
-  else if (startswith (own_buf, "vFile:fstat:"))
-    handle_fstat (own_buf, new_packet_len);
-  else if (startswith (own_buf, "vFile:close:"))
-    handle_close (own_buf);
-  else if (startswith (own_buf, "vFile:unlink:"))
-    handle_unlink (own_buf);
-  else if (startswith (own_buf, "vFile:readlink:"))
-    handle_readlink (own_buf, new_packet_len);
-  else if (startswith (own_buf, "vFile:setfs:"))
-    handle_setfs (own_buf);
-  else
-    return 0;
-
-  return 1;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/hostio-errno.c ./gdb/gdbserver/hostio-errno.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/hostio-errno.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/hostio-errno.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,33 +0,0 @@
-/* Host file transfer support for gdbserver.
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
-
-   Contributed by CodeSourcery.
-
-   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/>.  */
-
-/* This file implements the hostio_last_error target callback
-   on top of errno.  */
-
-#include "server.h"
-#include "gdbsupport/fileio.h"
-
-void
-hostio_last_error_from_errno (char *buf)
-{
-  int error = errno;
-  int fileio_error = host_to_fileio_error (error);
-  sprintf (buf, "F-1,%x", fileio_error);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/hostio.h ./gdb/gdbserver/hostio.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/hostio.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/hostio.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,31 +0,0 @@
-/* Host file transfer support for gdbserver.
-   Copyright (C) 1993-2020 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 GDBSERVER_HOSTIO_H
-#define GDBSERVER_HOSTIO_H
-
-/* Per-connection setup.  */
-extern void hostio_handle_new_gdb_connection (void);
-
-/* Functions from hostio.c.  */
-extern int handle_vFile (char *, int, int *);
-
-/* Functions from hostio-errno.c.  */
-extern void hostio_last_error_from_errno (char *own_buf);
-
-#endif /* GDBSERVER_HOSTIO_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/i387-fp.c ./gdb/gdbserver/i387-fp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/i387-fp.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/i387-fp.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,954 +0,0 @@
-/* i387-specific utility functions, for the remote server for GDB.
-   Copyright (C) 2000-2020 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 "server.h"
-#include "i387-fp.h"
-#include "gdbsupport/x86-xstate.h"
-
-static const int num_mpx_bnd_registers = 4;
-static const int num_mpx_cfg_registers = 2;
-static const int num_avx512_k_registers = 8;
-static const int num_avx512_zmmh_low_registers = 16;
-static const int num_avx512_zmmh_high_registers = 16;
-static const int num_avx512_ymmh_registers = 16;
-static const int num_avx512_xmm_registers = 16;
-static const int num_pkeys_registers = 1;
-
-/* Note: These functions preserve the reserved bits in control registers.
-   However, gdbserver promptly throws away that information.  */
-
-/* These structs should have the proper sizes and alignment on both
-   i386 and x86-64 machines.  */
-
-struct i387_fsave {
-  /* All these are only sixteen bits, plus padding, except for fop (which
-     is only eleven bits), and fooff / fioff (which are 32 bits each).  */
-  unsigned short fctrl;
-  unsigned short pad1;
-  unsigned short fstat;
-  unsigned short pad2;
-  unsigned short ftag;
-  unsigned short pad3;
-  unsigned int fioff;
-  unsigned short fiseg;
-  unsigned short fop;
-  unsigned int fooff;
-  unsigned short foseg;
-  unsigned short pad4;
-
-  /* Space for eight 80-bit FP values.  */
-  unsigned char st_space[80];
-};
-
-struct i387_fxsave {
-  /* All these are only sixteen bits, plus padding, except for fop (which
-     is only eleven bits), and fooff / fioff (which are 32 bits each).  */
-  unsigned short fctrl;
-  unsigned short fstat;
-  unsigned short ftag;
-  unsigned short fop;
-  unsigned int fioff;
-  unsigned short fiseg;
-  unsigned short pad1;
-  unsigned int fooff;
-  unsigned short foseg;
-  unsigned short pad12;
-
-  unsigned int mxcsr;
-  unsigned int pad3;
-
-  /* Space for eight 80-bit FP values in 128-bit spaces.  */
-  unsigned char st_space[128];
-
-  /* Space for eight 128-bit XMM values, or 16 on x86-64.  */
-  unsigned char xmm_space[256];
-};
-
-struct i387_xsave {
-  /* All these are only sixteen bits, plus padding, except for fop (which
-     is only eleven bits), and fooff / fioff (which are 32 bits each).  */
-  unsigned short fctrl;
-  unsigned short fstat;
-  unsigned short ftag;
-  unsigned short fop;
-  unsigned int fioff;
-  unsigned short fiseg;
-  unsigned short pad1;
-  unsigned int fooff;
-  unsigned short foseg;
-  unsigned short pad12;
-
-  unsigned int mxcsr;
-  unsigned int mxcsr_mask;
-
-  /* Space for eight 80-bit FP values in 128-bit spaces.  */
-  unsigned char st_space[128];
-
-  /* Space for eight 128-bit XMM values, or 16 on x86-64.  */
-  unsigned char xmm_space[256];
-
-  unsigned char reserved1[48];
-
-  /* The extended control register 0 (the XFEATURE_ENABLED_MASK
-     register).  */
-  unsigned long long xcr0;
-
-  unsigned char reserved2[40];
-
-  /* The XSTATE_BV bit vector.  */
-  unsigned long long xstate_bv;
-
-  unsigned char reserved3[56];
-
-  /* Space for eight upper 128-bit YMM values, or 16 on x86-64.  */
-  unsigned char ymmh_space[256];
-
-  unsigned char reserved4[128];
-
-  /* Space for 4 bound registers values of 128 bits.  */
-  unsigned char mpx_bnd_space[64];
-
-  /* Space for 2 MPX configuration registers of 64 bits
-     plus reserved space.  */
-  unsigned char mpx_cfg_space[16];
-
-  unsigned char reserved5[48];
-
-  /* Space for 8 OpMask register values of 64 bits.  */
-  unsigned char k_space[64];
-
-  /* Space for 16 256-bit zmm0-15.  */
-  unsigned char zmmh_low_space[512];
-
-  /* Space for 16 512-bit zmm16-31 values.  */
-  unsigned char zmmh_high_space[1024];
-
-  /* Space for 1 32-bit PKRU register.  The HW XSTATE size for this feature is
-     actually 64 bits, but WRPKRU/RDPKRU instructions ignore upper 32 bits.  */
-  unsigned char pkru_space[8];
-};
-
-void
-i387_cache_to_fsave (struct regcache *regcache, void *buf)
-{
-  struct i387_fsave *fp = (struct i387_fsave *) buf;
-  int i;
-  int st0_regnum = find_regno (regcache->tdesc, "st0");
-  unsigned long val2;
-
-  for (i = 0; i < 8; i++)
-    collect_register (regcache, i + st0_regnum,
-		      ((char *) &fp->st_space[0]) + i * 10);
-
-  fp->fioff = regcache_raw_get_unsigned_by_name (regcache, "fioff");
-  fp->fooff = regcache_raw_get_unsigned_by_name (regcache, "fooff");
-
-  /* This one's 11 bits... */
-  val2 = regcache_raw_get_unsigned_by_name (regcache, "fop");
-  fp->fop = (val2 & 0x7FF) | (fp->fop & 0xF800);
-
-  /* Some registers are 16-bit.  */
-  fp->fctrl = regcache_raw_get_unsigned_by_name (regcache, "fctrl");
-  fp->fstat = regcache_raw_get_unsigned_by_name (regcache, "fstat");
-  fp->ftag = regcache_raw_get_unsigned_by_name (regcache, "ftag");
-  fp->fiseg = regcache_raw_get_unsigned_by_name (regcache, "fiseg");
-  fp->foseg = regcache_raw_get_unsigned_by_name (regcache, "foseg");
-}
-
-void
-i387_fsave_to_cache (struct regcache *regcache, const void *buf)
-{
-  struct i387_fsave *fp = (struct i387_fsave *) buf;
-  int i;
-  int st0_regnum = find_regno (regcache->tdesc, "st0");
-  unsigned long val;
-
-  for (i = 0; i < 8; i++)
-    supply_register (regcache, i + st0_regnum,
-		     ((char *) &fp->st_space[0]) + i * 10);
-
-  supply_register_by_name (regcache, "fioff", &fp->fioff);
-  supply_register_by_name (regcache, "fooff", &fp->fooff);
-
-  /* Some registers are 16-bit.  */
-  val = fp->fctrl & 0xFFFF;
-  supply_register_by_name (regcache, "fctrl", &val);
-
-  val = fp->fstat & 0xFFFF;
-  supply_register_by_name (regcache, "fstat", &val);
-
-  val = fp->ftag & 0xFFFF;
-  supply_register_by_name (regcache, "ftag", &val);
-
-  val = fp->fiseg & 0xFFFF;
-  supply_register_by_name (regcache, "fiseg", &val);
-
-  val = fp->foseg & 0xFFFF;
-  supply_register_by_name (regcache, "foseg", &val);
-
-  /* fop has only 11 valid bits.  */
-  val = (fp->fop) & 0x7FF;
-  supply_register_by_name (regcache, "fop", &val);
-}
-
-void
-i387_cache_to_fxsave (struct regcache *regcache, void *buf)
-{
-  struct i387_fxsave *fp = (struct i387_fxsave *) buf;
-  int i;
-  int st0_regnum = find_regno (regcache->tdesc, "st0");
-  int xmm0_regnum = find_regno (regcache->tdesc, "xmm0");
-  unsigned long val, val2;
-  /* Amd64 has 16 xmm regs; I386 has 8 xmm regs.  */
-  int num_xmm_registers = register_size (regcache->tdesc, 0) == 8 ? 16 : 8;
-
-  for (i = 0; i < 8; i++)
-    collect_register (regcache, i + st0_regnum,
-		      ((char *) &fp->st_space[0]) + i * 16);
-  for (i = 0; i < num_xmm_registers; i++)
-    collect_register (regcache, i + xmm0_regnum,
-		      ((char *) &fp->xmm_space[0]) + i * 16);
-
-  fp->fioff = regcache_raw_get_unsigned_by_name (regcache, "fioff");
-  fp->fooff = regcache_raw_get_unsigned_by_name (regcache, "fooff");
-  fp->mxcsr = regcache_raw_get_unsigned_by_name (regcache, "mxcsr");
-
-  /* This one's 11 bits... */
-  val2 = regcache_raw_get_unsigned_by_name (regcache, "fop");
-  fp->fop = (val2 & 0x7FF) | (fp->fop & 0xF800);
-
-  /* Some registers are 16-bit.  */
-  fp->fctrl = regcache_raw_get_unsigned_by_name (regcache, "fctrl");
-  fp->fstat = regcache_raw_get_unsigned_by_name (regcache, "fstat");
-
-  /* Convert to the simplifed tag form stored in fxsave data.  */
-  val = regcache_raw_get_unsigned_by_name (regcache, "ftag");
-  val2 = 0;
-  for (i = 7; i >= 0; i--)
-    {
-      int tag = (val >> (i * 2)) & 3;
-
-      if (tag != 3)
-	val2 |= (1 << i);
-    }
-  fp->ftag = val2;
-
-  fp->fiseg = regcache_raw_get_unsigned_by_name (regcache, "fiseg");
-  fp->foseg = regcache_raw_get_unsigned_by_name (regcache, "foseg");
-}
-
-void
-i387_cache_to_xsave (struct regcache *regcache, void *buf)
-{
-  struct i387_xsave *fp = (struct i387_xsave *) buf;
-  int i;
-  unsigned long val, val2;
-  unsigned long long xstate_bv = 0;
-  unsigned long long clear_bv = 0;
-  char raw[64];
-  char *p;
-  /* Amd64 has 16 xmm regs; I386 has 8 xmm regs.  */
-  int num_xmm_registers = register_size (regcache->tdesc, 0) == 8 ? 16 : 8;
-
-  /* The supported bits in `xstat_bv' are 8 bytes.  Clear part in
-     vector registers if its bit in xstat_bv is zero.  */
-  clear_bv = (~fp->xstate_bv) & x86_xcr0;
-
-  /* Clear part in x87 and vector registers if its bit in xstat_bv is
-     zero.  */
-  if (clear_bv)
-    {
-      if ((clear_bv & X86_XSTATE_X87))
-	{
-	  for (i = 0; i < 8; i++)
-	    memset (((char *) &fp->st_space[0]) + i * 16, 0, 10);
-
-	  fp->fioff = 0;
-	  fp->fooff = 0;
-	  fp->fctrl = I387_FCTRL_INIT_VAL;
-	  fp->fstat = 0;
-	  fp->ftag = 0;
-	  fp->fiseg = 0;
-	  fp->foseg = 0;
-	  fp->fop = 0;
-	}
-
-      if ((clear_bv & X86_XSTATE_SSE))
-	for (i = 0; i < num_xmm_registers; i++)
-	  memset (((char *) &fp->xmm_space[0]) + i * 16, 0, 16);
-
-      if ((clear_bv & X86_XSTATE_AVX))
-	for (i = 0; i < num_xmm_registers; i++)
-	  memset (((char *) &fp->ymmh_space[0]) + i * 16, 0, 16);
-
-      if ((clear_bv & X86_XSTATE_SSE) && (clear_bv & X86_XSTATE_AVX))
-	memset (((char *) &fp->mxcsr), 0, 4);
-
-      if ((clear_bv & X86_XSTATE_BNDREGS))
-	for (i = 0; i < num_mpx_bnd_registers; i++)
-	  memset (((char *) &fp->mpx_bnd_space[0]) + i * 16, 0, 16);
-
-      if ((clear_bv & X86_XSTATE_BNDCFG))
-	for (i = 0; i < num_mpx_cfg_registers; i++)
-	  memset (((char *) &fp->mpx_cfg_space[0]) + i * 8, 0, 8);
-
-      if ((clear_bv & X86_XSTATE_K))
-	for (i = 0; i < num_avx512_k_registers; i++)
-	  memset (((char *) &fp->k_space[0]) + i * 8, 0, 8);
-
-      if ((clear_bv & X86_XSTATE_ZMM_H))
-	for (i = 0; i < num_avx512_zmmh_low_registers; i++)
-	  memset (((char *) &fp->zmmh_low_space[0]) + i * 32, 0, 32);
-
-      if ((clear_bv & X86_XSTATE_ZMM))
-	{
-	  for (i = 0; i < num_avx512_zmmh_high_registers; i++)
-	    memset (((char *) &fp->zmmh_low_space[0]) + 32 + i * 64, 0, 32);
-	  for (i = 0; i < num_avx512_xmm_registers; i++)
-	    memset (((char *) &fp->zmmh_high_space[0]) + i * 64, 0, 16);
-	  for (i = 0; i < num_avx512_ymmh_registers; i++)
-	    memset (((char *) &fp->zmmh_high_space[0]) + 16 + i * 64, 0, 16);
-	}
-
-      if ((clear_bv & X86_XSTATE_PKRU))
-	for (i = 0; i < num_pkeys_registers; i++)
-	  memset (((char *) &fp->pkru_space[0]) + i * 4, 0, 4);
-    }
-
-  /* Check if any x87 registers are changed.  */
-  if ((x86_xcr0 & X86_XSTATE_X87))
-    {
-      int st0_regnum = find_regno (regcache->tdesc, "st0");
-
-      for (i = 0; i < 8; i++)
-	{
-	  collect_register (regcache, i + st0_regnum, raw);
-	  p = ((char *) &fp->st_space[0]) + i * 16;
-	  if (memcmp (raw, p, 10))
-	    {
-	      xstate_bv |= X86_XSTATE_X87;
-	      memcpy (p, raw, 10);
-	    }
-	}
-    }
-
-  /* Check if any SSE registers are changed.  */
-  if ((x86_xcr0 & X86_XSTATE_SSE))
-    {
-      int xmm0_regnum = find_regno (regcache->tdesc, "xmm0");
-
-      for (i = 0; i < num_xmm_registers; i++) 
-	{
-	  collect_register (regcache, i + xmm0_regnum, raw);
-	  p = ((char *) &fp->xmm_space[0]) + i * 16;
-	  if (memcmp (raw, p, 16))
-	    {
-	      xstate_bv |= X86_XSTATE_SSE;
-	      memcpy (p, raw, 16);
-	    }
-	}
-    }
-
-  /* Check if any AVX registers are changed.  */
-  if ((x86_xcr0 & X86_XSTATE_AVX))
-    {
-      int ymm0h_regnum = find_regno (regcache->tdesc, "ymm0h");
-
-      for (i = 0; i < num_xmm_registers; i++) 
-	{
-	  collect_register (regcache, i + ymm0h_regnum, raw);
-	  p = ((char *) &fp->ymmh_space[0]) + i * 16;
-	  if (memcmp (raw, p, 16))
-	    {
-	      xstate_bv |= X86_XSTATE_AVX;
-	      memcpy (p, raw, 16);
-	    }
-	}
-    }
-
-  /* Check if any bound register has changed.  */
-  if ((x86_xcr0 & X86_XSTATE_BNDREGS))
-    {
-     int bnd0r_regnum = find_regno (regcache->tdesc, "bnd0raw");
-
-      for (i = 0; i < num_mpx_bnd_registers; i++)
-	{
-	  collect_register (regcache, i + bnd0r_regnum, raw);
-	  p = ((char *) &fp->mpx_bnd_space[0]) + i * 16;
-	  if (memcmp (raw, p, 16))
-	    {
-	      xstate_bv |= X86_XSTATE_BNDREGS;
-	      memcpy (p, raw, 16);
-	    }
-	}
-    }
-
-  /* Check if any status register has changed.  */
-  if ((x86_xcr0 & X86_XSTATE_BNDCFG))
-    {
-      int bndcfg_regnum = find_regno (regcache->tdesc, "bndcfgu");
-
-      for (i = 0; i < num_mpx_cfg_registers; i++)
-	{
-	  collect_register (regcache, i + bndcfg_regnum, raw);
-	  p = ((char *) &fp->mpx_cfg_space[0]) + i * 8;
-	  if (memcmp (raw, p, 8))
-	    {
-	      xstate_bv |= X86_XSTATE_BNDCFG;
-	      memcpy (p, raw, 8);
-	    }
-	}
-    }
-
-  /* Check if any K registers are changed.  */
-  if ((x86_xcr0 & X86_XSTATE_K))
-    {
-      int k0_regnum = find_regno (regcache->tdesc, "k0");
-
-      for (i = 0; i < num_avx512_k_registers; i++)
-	{
-	  collect_register (regcache, i + k0_regnum, raw);
-	  p = ((char *) &fp->k_space[0]) + i * 8;
-	  if (memcmp (raw, p, 8) != 0)
-	    {
-	      xstate_bv |= X86_XSTATE_K;
-	      memcpy (p, raw, 8);
-	    }
-	}
-    }
-
-  /* Check if any of ZMM0H-ZMM15H registers are changed.  */
-  if ((x86_xcr0 & X86_XSTATE_ZMM_H))
-    {
-      int zmm0h_regnum = find_regno (regcache->tdesc, "zmm0h");
-
-      for (i = 0; i < num_avx512_zmmh_low_registers; i++)
-	{
-	  collect_register (regcache, i + zmm0h_regnum, raw);
-	  p = ((char *) &fp->zmmh_low_space[0]) + i * 32;
-	  if (memcmp (raw, p, 32) != 0)
-	    {
-	      xstate_bv |= X86_XSTATE_ZMM_H;
-	      memcpy (p, raw, 32);
-	    }
-	}
-    }
-
-  /* Check if any of ZMM16H-ZMM31H registers are changed.  */
-  if ((x86_xcr0 & X86_XSTATE_ZMM))
-    {
-      int zmm16h_regnum = find_regno (regcache->tdesc, "zmm16h");
-
-      for (i = 0; i < num_avx512_zmmh_high_registers; i++)
-	{
-	  collect_register (regcache, i + zmm16h_regnum, raw);
-	  p = ((char *) &fp->zmmh_high_space[0]) + 32 + i * 64;
-	  if (memcmp (raw, p, 32) != 0)
-	    {
-	      xstate_bv |= X86_XSTATE_ZMM;
-	      memcpy (p, raw, 32);
-	    }
-	}
-    }
-
-  /* Check if any XMM_AVX512 registers are changed.  */
-  if ((x86_xcr0 & X86_XSTATE_ZMM))
-    {
-      int xmm_avx512_regnum = find_regno (regcache->tdesc, "xmm16");
-
-      for (i = 0; i < num_avx512_xmm_registers; i++)
-	{
-	  collect_register (regcache, i + xmm_avx512_regnum, raw);
-	  p = ((char *) &fp->zmmh_high_space[0]) + i * 64;
-	  if (memcmp (raw, p, 16) != 0)
-	    {
-	      xstate_bv |= X86_XSTATE_ZMM;
-	      memcpy (p, raw, 16);
-	    }
-	}
-    }
-
-  /* Check if any YMMH_AVX512 registers are changed.  */
-  if ((x86_xcr0 & X86_XSTATE_ZMM))
-    {
-      int ymmh_avx512_regnum = find_regno (regcache->tdesc, "ymm16h");
-
-      for (i = 0; i < num_avx512_ymmh_registers; i++)
-	{
-	  collect_register (regcache, i + ymmh_avx512_regnum, raw);
-	  p = ((char *) &fp->zmmh_high_space[0]) + 16 + i * 64;
-	  if (memcmp (raw, p, 16) != 0)
-	    {
-	      xstate_bv |= X86_XSTATE_ZMM;
-	      memcpy (p, raw, 16);
-	    }
-	}
-    }
-
-  /* Check if any PKEYS registers are changed.  */
-  if ((x86_xcr0 & X86_XSTATE_PKRU))
-    {
-      int pkru_regnum = find_regno (regcache->tdesc, "pkru");
-
-      for (i = 0; i < num_pkeys_registers; i++)
-	{
-	  collect_register (regcache, i + pkru_regnum, raw);
-	  p = ((char *) &fp->pkru_space[0]) + i * 4;
-	  if (memcmp (raw, p, 4) != 0)
-	    {
-	      xstate_bv |= X86_XSTATE_PKRU;
-	      memcpy (p, raw, 4);
-	    }
-	}
-    }
-
-  if ((x86_xcr0 & X86_XSTATE_SSE) || (x86_xcr0 & X86_XSTATE_AVX))
-    {
-      collect_register_by_name (regcache, "mxcsr", raw);
-      if (memcmp (raw, &fp->mxcsr, 4) != 0)
-	{
-	  if (((fp->xstate_bv | xstate_bv)
-	       & (X86_XSTATE_SSE | X86_XSTATE_AVX)) == 0)
-	    xstate_bv |= X86_XSTATE_SSE;
-	  memcpy (&fp->mxcsr, raw, 4);
-	}
-    }
-
-  if (x86_xcr0 & X86_XSTATE_X87)
-    {
-      collect_register_by_name (regcache, "fioff", raw);
-      if (memcmp (raw, &fp->fioff, 4) != 0)
-	{
-	  xstate_bv |= X86_XSTATE_X87;
-	  memcpy (&fp->fioff, raw, 4);
-	}
-
-      collect_register_by_name (regcache, "fooff", raw);
-      if (memcmp (raw, &fp->fooff, 4) != 0)
-	{
-	  xstate_bv |= X86_XSTATE_X87;
-	  memcpy (&fp->fooff, raw, 4);
-	}
-
-      /* This one's 11 bits... */
-      val2 = regcache_raw_get_unsigned_by_name (regcache, "fop");
-      val2 = (val2 & 0x7FF) | (fp->fop & 0xF800);
-      if (fp->fop != val2)
-	{
-	  xstate_bv |= X86_XSTATE_X87;
-	  fp->fop = val2;
-	}
-
-      /* Some registers are 16-bit.  */
-      val = regcache_raw_get_unsigned_by_name (regcache, "fctrl");
-      if (fp->fctrl != val)
-	{
-	  xstate_bv |= X86_XSTATE_X87;
-	  fp->fctrl = val;
-	}
-
-      val = regcache_raw_get_unsigned_by_name (regcache, "fstat");
-      if (fp->fstat != val)
-	{
-	  xstate_bv |= X86_XSTATE_X87;
-	  fp->fstat = val;
-	}
-
-      /* Convert to the simplifed tag form stored in fxsave data.  */
-      val = regcache_raw_get_unsigned_by_name (regcache, "ftag");
-      val2 = 0;
-      for (i = 7; i >= 0; i--)
-	{
-	  int tag = (val >> (i * 2)) & 3;
-
-	  if (tag != 3)
-	    val2 |= (1 << i);
-	}
-      if (fp->ftag != val2)
-	{
-	  xstate_bv |= X86_XSTATE_X87;
-	  fp->ftag = val2;
-	}
-
-      val = regcache_raw_get_unsigned_by_name (regcache, "fiseg");
-      if (fp->fiseg != val)
-	{
-	  xstate_bv |= X86_XSTATE_X87;
-	  fp->fiseg = val;
-	}
-
-      val = regcache_raw_get_unsigned_by_name (regcache, "foseg");
-      if (fp->foseg != val)
-	{
-	  xstate_bv |= X86_XSTATE_X87;
-	  fp->foseg = val;
-	}
-    }
-
-  /* Update the corresponding bits in xstate_bv if any SSE/AVX
-     registers are changed.  */
-  fp->xstate_bv |= xstate_bv;
-}
-
-static int
-i387_ftag (struct i387_fxsave *fp, int regno)
-{
-  unsigned char *raw = &fp->st_space[regno * 16];
-  unsigned int exponent;
-  unsigned long fraction[2];
-  int integer;
-
-  integer = raw[7] & 0x80;
-  exponent = (((raw[9] & 0x7f) << 8) | raw[8]);
-  fraction[0] = ((raw[3] << 24) | (raw[2] << 16) | (raw[1] << 8) | raw[0]);
-  fraction[1] = (((raw[7] & 0x7f) << 24) | (raw[6] << 16)
-		 | (raw[5] << 8) | raw[4]);
-
-  if (exponent == 0x7fff)
-    {
-      /* Special.  */
-      return (2);
-    }
-  else if (exponent == 0x0000)
-    {
-      if (fraction[0] == 0x0000 && fraction[1] == 0x0000 && !integer)
-	{
-	  /* Zero.  */
-	  return (1);
-	}
-      else
-	{
-	  /* Special.  */
-	  return (2);
-	}
-    }
-  else
-    {
-      if (integer)
-	{
-	  /* Valid.  */
-	  return (0);
-	}
-      else
-	{
-	  /* Special.  */
-	  return (2);
-	}
-    }
-}
-
-void
-i387_fxsave_to_cache (struct regcache *regcache, const void *buf)
-{
-  struct i387_fxsave *fp = (struct i387_fxsave *) buf;
-  int i, top;
-  int st0_regnum = find_regno (regcache->tdesc, "st0");
-  int xmm0_regnum = find_regno (regcache->tdesc, "xmm0");
-  unsigned long val;
-  /* Amd64 has 16 xmm regs; I386 has 8 xmm regs.  */
-  int num_xmm_registers = register_size (regcache->tdesc, 0) == 8 ? 16 : 8;
-
-  for (i = 0; i < 8; i++)
-    supply_register (regcache, i + st0_regnum,
-		     ((char *) &fp->st_space[0]) + i * 16);
-  for (i = 0; i < num_xmm_registers; i++)
-    supply_register (regcache, i + xmm0_regnum,
-		     ((char *) &fp->xmm_space[0]) + i * 16);
-
-  supply_register_by_name (regcache, "fioff", &fp->fioff);
-  supply_register_by_name (regcache, "fooff", &fp->fooff);
-  supply_register_by_name (regcache, "mxcsr", &fp->mxcsr);
-
-  /* Some registers are 16-bit.  */
-  val = fp->fctrl & 0xFFFF;
-  supply_register_by_name (regcache, "fctrl", &val);
-
-  val = fp->fstat & 0xFFFF;
-  supply_register_by_name (regcache, "fstat", &val);
-
-  /* Generate the form of ftag data that GDB expects.  */
-  top = (fp->fstat >> 11) & 0x7;
-  val = 0;
-  for (i = 7; i >= 0; i--)
-    {
-      int tag;
-      if (fp->ftag & (1 << i))
-	tag = i387_ftag (fp, (i + 8 - top) % 8);
-      else
-	tag = 3;
-      val |= tag << (2 * i);
-    }
-  supply_register_by_name (regcache, "ftag", &val);
-
-  val = fp->fiseg & 0xFFFF;
-  supply_register_by_name (regcache, "fiseg", &val);
-
-  val = fp->foseg & 0xFFFF;
-  supply_register_by_name (regcache, "foseg", &val);
-
-  val = (fp->fop) & 0x7FF;
-  supply_register_by_name (regcache, "fop", &val);
-}
-
-void
-i387_xsave_to_cache (struct regcache *regcache, const void *buf)
-{
-  struct i387_xsave *fp = (struct i387_xsave *) buf;
-  struct i387_fxsave *fxp = (struct i387_fxsave *) buf;
-  int i, top;
-  unsigned long val;
-  unsigned long long clear_bv;
-  gdb_byte *p;
-  /* Amd64 has 16 xmm regs; I386 has 8 xmm regs.  */
-  int num_xmm_registers = register_size (regcache->tdesc, 0) == 8 ? 16 : 8;
-
-  /* The supported bits in `xstat_bv' are 8 bytes.  Clear part in
-     vector registers if its bit in xstat_bv is zero.  */
-  clear_bv = (~fp->xstate_bv) & x86_xcr0;
-
-  /* Check if any x87 registers are changed.  */
-  if ((x86_xcr0 & X86_XSTATE_X87) != 0)
-    {
-      int st0_regnum = find_regno (regcache->tdesc, "st0");
-
-      if ((clear_bv & X86_XSTATE_X87) != 0)
-	{
-	  for (i = 0; i < 8; i++)
-	    supply_register_zeroed (regcache, i + st0_regnum);
-	}
-      else
-	{
-	  p = (gdb_byte *) &fp->st_space[0];
-	  for (i = 0; i < 8; i++)
-	    supply_register (regcache, i + st0_regnum, p + i * 16);
-	}
-    }
-
-  if ((x86_xcr0 & X86_XSTATE_SSE) != 0)
-    {
-      int xmm0_regnum = find_regno (regcache->tdesc, "xmm0");
-
-      if ((clear_bv & X86_XSTATE_SSE))
-	{
-	  for (i = 0; i < num_xmm_registers; i++)
-	    supply_register_zeroed (regcache, i + xmm0_regnum);
-	}
-      else
-	{
-	  p = (gdb_byte *) &fp->xmm_space[0];
-	  for (i = 0; i < num_xmm_registers; i++)
-	    supply_register (regcache, i + xmm0_regnum, p + i * 16);
-	}
-    }
-
-  if ((x86_xcr0 & X86_XSTATE_AVX) != 0)
-    {
-      int ymm0h_regnum = find_regno (regcache->tdesc, "ymm0h");
-
-      if ((clear_bv & X86_XSTATE_AVX) != 0)
-	{
-	  for (i = 0; i < num_xmm_registers; i++)
-	    supply_register_zeroed (regcache, i + ymm0h_regnum);
-	}
-      else
-	{
-	  p = (gdb_byte *) &fp->ymmh_space[0];
-	  for (i = 0; i < num_xmm_registers; i++)
-	    supply_register (regcache, i + ymm0h_regnum, p + i * 16);
-	}
-    }
-
-  if ((x86_xcr0 & X86_XSTATE_BNDREGS))
-    {
-      int bnd0r_regnum = find_regno (regcache->tdesc, "bnd0raw");
-
-
-      if ((clear_bv & X86_XSTATE_BNDREGS) != 0)
-	{
-	  for (i = 0; i < num_mpx_bnd_registers; i++)
-	    supply_register_zeroed (regcache, i + bnd0r_regnum);
-	}
-      else
-	{
-	  p = (gdb_byte *) &fp->mpx_bnd_space[0];
-	  for (i = 0; i < num_mpx_bnd_registers; i++)
-	    supply_register (regcache, i + bnd0r_regnum, p + i * 16);
-	}
-
-    }
-
-  if ((x86_xcr0 & X86_XSTATE_BNDCFG))
-    {
-      int bndcfg_regnum = find_regno (regcache->tdesc, "bndcfgu");
-
-      if ((clear_bv & X86_XSTATE_BNDCFG) != 0)
-	{
-	  for (i = 0; i < num_mpx_cfg_registers; i++)
-	    supply_register_zeroed (regcache, i + bndcfg_regnum);
-	}
-      else
-	{
-	  p = (gdb_byte *) &fp->mpx_cfg_space[0];
-	  for (i = 0; i < num_mpx_cfg_registers; i++)
-	    supply_register (regcache, i + bndcfg_regnum, p + i * 8);
-	}
-    }
-
-  if ((x86_xcr0 & X86_XSTATE_K) != 0)
-    {
-      int k0_regnum = find_regno (regcache->tdesc, "k0");
-
-      if ((clear_bv & X86_XSTATE_K) != 0)
-	{
-	  for (i = 0; i < num_avx512_k_registers; i++)
-	    supply_register_zeroed (regcache, i + k0_regnum);
-	}
-      else
-	{
-	  p = (gdb_byte *) &fp->k_space[0];
-	  for (i = 0; i < num_avx512_k_registers; i++)
-	    supply_register (regcache, i + k0_regnum, p + i * 8);
-	}
-    }
-
-  if ((x86_xcr0 & X86_XSTATE_ZMM_H) != 0)
-    {
-      int zmm0h_regnum = find_regno (regcache->tdesc, "zmm0h");
-
-      if ((clear_bv & X86_XSTATE_ZMM_H) != 0)
-	{
-	  for (i = 0; i < num_avx512_zmmh_low_registers; i++)
-	    supply_register_zeroed (regcache, i + zmm0h_regnum);
-	}
-      else
-	{
-	  p = (gdb_byte *) &fp->zmmh_low_space[0];
-	  for (i = 0; i < num_avx512_zmmh_low_registers; i++)
-	    supply_register (regcache, i + zmm0h_regnum, p + i * 32);
-	}
-    }
-
-  if ((x86_xcr0 & X86_XSTATE_ZMM) != 0)
-    {
-      int zmm16h_regnum = find_regno (regcache->tdesc, "zmm16h");
-      int ymm16h_regnum = find_regno (regcache->tdesc, "ymm16h");
-      int xmm16_regnum = find_regno (regcache->tdesc, "xmm16");
-
-      if ((clear_bv & X86_XSTATE_ZMM) != 0)
-	{
-	  for (i = 0; i < num_avx512_zmmh_high_registers; i++)
-	    supply_register_zeroed (regcache, i + zmm16h_regnum);
-	  for (i = 0; i < num_avx512_ymmh_registers; i++)
-	    supply_register_zeroed (regcache, i + ymm16h_regnum);
-	  for (i = 0; i < num_avx512_xmm_registers; i++)
-	    supply_register_zeroed (regcache, i + xmm16_regnum);
-	}
-      else
-	{
-	  p = (gdb_byte *) &fp->zmmh_high_space[0];
-	  for (i = 0; i < num_avx512_zmmh_high_registers; i++)
-	    supply_register (regcache, i + zmm16h_regnum, p + 32 + i * 64);
-	  for (i = 0; i < num_avx512_ymmh_registers; i++)
-	    supply_register (regcache, i + ymm16h_regnum, p + 16 + i * 64);
-	  for (i = 0; i < num_avx512_xmm_registers; i++)
-	    supply_register (regcache, i + xmm16_regnum, p + i * 64);
-	}
-    }
-
-  if ((x86_xcr0 & X86_XSTATE_PKRU) != 0)
-    {
-      int pkru_regnum = find_regno (regcache->tdesc, "pkru");
-
-      if ((clear_bv & X86_XSTATE_PKRU) != 0)
-	{
-	  for (i = 0; i < num_pkeys_registers; i++)
-	    supply_register_zeroed (regcache, i + pkru_regnum);
-	}
-      else
-	{
-	  p = (gdb_byte *) &fp->pkru_space[0];
-	  for (i = 0; i < num_pkeys_registers; i++)
-	    supply_register (regcache, i + pkru_regnum, p + i * 4);
-	}
-    }
-
-  if ((clear_bv & (X86_XSTATE_SSE | X86_XSTATE_AVX))
-      == (X86_XSTATE_SSE | X86_XSTATE_AVX))
-    {
-      unsigned int default_mxcsr = I387_MXCSR_INIT_VAL;
-      supply_register_by_name (regcache, "mxcsr", &default_mxcsr);
-    }
-  else
-    supply_register_by_name (regcache, "mxcsr", &fp->mxcsr);
-
-  if ((clear_bv & X86_XSTATE_X87) != 0)
-    {
-      supply_register_by_name_zeroed (regcache, "fioff");
-      supply_register_by_name_zeroed (regcache, "fooff");
-
-      val = I387_FCTRL_INIT_VAL;
-      supply_register_by_name (regcache, "fctrl", &val);
-
-      supply_register_by_name_zeroed (regcache, "fstat");
-
-      val = 0xFFFF;
-      supply_register_by_name (regcache, "ftag", &val);
-
-      supply_register_by_name_zeroed (regcache, "fiseg");
-      supply_register_by_name_zeroed (regcache, "foseg");
-      supply_register_by_name_zeroed (regcache, "fop");
-    }
-  else
-    {
-      supply_register_by_name (regcache, "fioff", &fp->fioff);
-      supply_register_by_name (regcache, "fooff", &fp->fooff);
-
-      /* Some registers are 16-bit.  */
-      val = fp->fctrl & 0xFFFF;
-      supply_register_by_name (regcache, "fctrl", &val);
-
-      val = fp->fstat & 0xFFFF;
-      supply_register_by_name (regcache, "fstat", &val);
-
-      /* Generate the form of ftag data that GDB expects.  */
-      top = (fp->fstat >> 11) & 0x7;
-      val = 0;
-      for (i = 7; i >= 0; i--)
-	{
-	  int tag;
-	  if (fp->ftag & (1 << i))
-	    tag = i387_ftag (fxp, (i + 8 - top) % 8);
-	  else
-	    tag = 3;
-	  val |= tag << (2 * i);
-	}
-      supply_register_by_name (regcache, "ftag", &val);
-
-      val = fp->fiseg & 0xFFFF;
-      supply_register_by_name (regcache, "fiseg", &val);
-
-      val = fp->foseg & 0xFFFF;
-      supply_register_by_name (regcache, "foseg", &val);
-
-      val = (fp->fop) & 0x7FF;
-      supply_register_by_name (regcache, "fop", &val);
-    }
-}
-
-/* Default to SSE.  */
-unsigned long long x86_xcr0 = X86_XSTATE_SSE_MASK;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/i387-fp.h ./gdb/gdbserver/i387-fp.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/i387-fp.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/i387-fp.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,33 +0,0 @@
-/* i387-specific utility functions, for the remote server for GDB.
-   Copyright (C) 2000-2020 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 GDBSERVER_I387_FP_H
-#define GDBSERVER_I387_FP_H
-
-void i387_cache_to_fsave (struct regcache *regcache, void *buf);
-void i387_fsave_to_cache (struct regcache *regcache, const void *buf);
-
-void i387_cache_to_fxsave (struct regcache *regcache, void *buf);
-void i387_fxsave_to_cache (struct regcache *regcache, const void *buf);
-
-void i387_cache_to_xsave (struct regcache *regcache, void *buf);
-void i387_xsave_to_cache (struct regcache *regcache, const void *buf);
-
-extern unsigned long long x86_xcr0;
-
-#endif /* GDBSERVER_I387_FP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/inferiors.c ./gdb/gdbserver/inferiors.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/inferiors.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/inferiors.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,243 +0,0 @@
-/* Inferior process information for the remote server for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
-
-   Contributed by MontaVista Software.
-
-   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 "server.h"
-#include "gdbthread.h"
-#include "dll.h"
-
-std::list<process_info *> all_processes;
-std::list<thread_info *> all_threads;
-
-struct thread_info *current_thread;
-
-/* The current working directory used to start the inferior.  */
-static const char *current_inferior_cwd = NULL;
-
-struct thread_info *
-add_thread (ptid_t thread_id, void *target_data)
-{
-  struct thread_info *new_thread = XCNEW (struct thread_info);
-
-  new_thread->id = thread_id;
-  new_thread->last_resume_kind = resume_continue;
-  new_thread->last_status.kind = TARGET_WAITKIND_IGNORE;
-
-  all_threads.push_back (new_thread);
-
-  if (current_thread == NULL)
-    current_thread = new_thread;
-
-  new_thread->target_data = target_data;
-
-  return new_thread;
-}
-
-/* See gdbthread.h.  */
-
-struct thread_info *
-get_first_thread (void)
-{
-  if (!all_threads.empty ())
-    return all_threads.front ();
-  else
-    return NULL;
-}
-
-struct thread_info *
-find_thread_ptid (ptid_t ptid)
-{
-  return find_thread ([&] (thread_info *thread) {
-    return thread->id == ptid;
-  });
-}
-
-/* Find a thread associated with the given PROCESS, or NULL if no
-   such thread exists.  */
-
-static struct thread_info *
-find_thread_process (const struct process_info *const process)
-{
-  return find_any_thread_of_pid (process->pid);
-}
-
-/* See gdbthread.h.  */
-
-struct thread_info *
-find_any_thread_of_pid (int pid)
-{
-  return find_thread (pid, [] (thread_info *thread) {
-    return true;
-  });
-}
-
-static void
-free_one_thread (thread_info *thread)
-{
-  free_register_cache (thread_regcache_data (thread));
-  free (thread);
-}
-
-void
-remove_thread (struct thread_info *thread)
-{
-  if (thread->btrace != NULL)
-    target_disable_btrace (thread->btrace);
-
-  discard_queued_stop_replies (ptid_of (thread));
-  all_threads.remove (thread);
-  free_one_thread (thread);
-  if (current_thread == thread)
-    current_thread = NULL;
-}
-
-void *
-thread_target_data (struct thread_info *thread)
-{
-  return thread->target_data;
-}
-
-struct regcache *
-thread_regcache_data (struct thread_info *thread)
-{
-  return thread->regcache_data;
-}
-
-void
-set_thread_regcache_data (struct thread_info *thread, struct regcache *data)
-{
-  thread->regcache_data = data;
-}
-
-void
-clear_inferiors (void)
-{
-  for_each_thread (free_one_thread);
-  all_threads.clear ();
-
-  clear_dlls ();
-
-  current_thread = NULL;
-}
-
-struct process_info *
-add_process (int pid, int attached)
-{
-  process_info *process = new process_info (pid, attached);
-
-  all_processes.push_back (process);
-
-  return process;
-}
-
-/* Remove a process from the common process list and free the memory
-   allocated for it.
-   The caller is responsible for freeing private data first.  */
-
-void
-remove_process (struct process_info *process)
-{
-  clear_symbol_cache (&process->symbol_cache);
-  free_all_breakpoints (process);
-  gdb_assert (find_thread_process (process) == NULL);
-  all_processes.remove (process);
-  delete process;
-}
-
-process_info *
-find_process_pid (int pid)
-{
-  return find_process ([&] (process_info *process) {
-    return process->pid == pid;
-  });
-}
-
-/* Get the first process in the process list, or NULL if the list is empty.  */
-
-process_info *
-get_first_process (void)
-{
-  if (!all_processes.empty ())
-    return all_processes.front ();
-  else
-    return NULL;
-}
-
-/* Return non-zero if there are any inferiors that we have created
-   (as opposed to attached-to).  */
-
-int
-have_started_inferiors_p (void)
-{
-  return find_process ([] (process_info *process) {
-    return !process->attached;
-  }) != NULL;
-}
-
-/* Return non-zero if there are any inferiors that we have attached to.  */
-
-int
-have_attached_inferiors_p (void)
-{
-  return find_process ([] (process_info *process) {
-    return process->attached;
-  }) != NULL;
-}
-
-struct process_info *
-get_thread_process (const struct thread_info *thread)
-{
-  return find_process_pid (thread->id.pid ());
-}
-
-struct process_info *
-current_process (void)
-{
-  gdb_assert (current_thread != NULL);
-  return get_thread_process (current_thread);
-}
-
-/* See gdbsupport/common-gdbthread.h.  */
-
-void
-switch_to_thread (ptid_t ptid)
-{
-  gdb_assert (ptid != minus_one_ptid);
-  current_thread = find_thread_ptid (ptid);
-}
-
-/* See gdbsupport/common-inferior.h.  */
-
-const char *
-get_inferior_cwd ()
-{
-  return current_inferior_cwd;
-}
-
-/* See gdbsupport/common-inferior.h.  */
-
-void
-set_inferior_cwd (const char *cwd)
-{
-  xfree ((void *) current_inferior_cwd);
-  if (cwd != NULL)
-    current_inferior_cwd = xstrdup (cwd);
-  else
-    current_inferior_cwd = NULL;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/inferiors.h ./gdb/gdbserver/inferiors.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/inferiors.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/inferiors.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,147 +0,0 @@
-/* Inferior process information for the remote server for GDB.
-   Copyright (C) 1993-2020 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 GDBSERVER_INFERIORS_H
-#define GDBSERVER_INFERIORS_H
-
-#include "gdbsupport/gdb_vecs.h"
-#include <list>
-
-struct thread_info;
-struct regcache;
-struct target_desc;
-struct sym_cache;
-struct breakpoint;
-struct raw_breakpoint;
-struct fast_tracepoint_jump;
-struct process_info_private;
-
-struct process_info
-{
-  process_info (int pid_, int attached_)
-  : pid (pid_), attached (attached_)
-  {}
-
-  /* This process' pid.  */
-  int pid;
-
-  /* Nonzero if this child process was attached rather than
-     spawned.  */
-  int attached;
-
-  /* True if GDB asked us to detach from this process, but we remained
-     attached anyway.  */
-  int gdb_detached = 0;
-
-  /* The symbol cache.  */
-  struct sym_cache *symbol_cache = NULL;
-
-  /* The list of memory breakpoints.  */
-  struct breakpoint *breakpoints = NULL;
-
-  /* The list of raw memory breakpoints.  */
-  struct raw_breakpoint *raw_breakpoints = NULL;
-
-  /* The list of installed fast tracepoints.  */
-  struct fast_tracepoint_jump *fast_tracepoint_jumps = NULL;
-
-  /* The list of syscalls to report, or just a single element, ANY_SYSCALL,
-     for unfiltered syscall reporting.  */
-  std::vector<int> syscalls_to_catch;
-
-  const struct target_desc *tdesc = NULL;
-
-  /* Private target data.  */
-  struct process_info_private *priv = NULL;
-};
-
-/* Get the pid of PROC.  */
-
-static inline int
-pid_of (const process_info *proc)
-{
-  return proc->pid;
-}
-
-/* Return a pointer to the process that corresponds to the current
-   thread (current_thread).  It is an error to call this if there is
-   no current thread selected.  */
-
-struct process_info *current_process (void);
-struct process_info *get_thread_process (const struct thread_info *);
-
-extern std::list<process_info *> all_processes;
-
-/* Invoke FUNC for each process.  */
-
-template <typename Func>
-static void
-for_each_process (Func func)
-{
-  std::list<process_info *>::iterator next, cur = all_processes.begin ();
-
-  while (cur != all_processes.end ())
-    {
-      next = cur;
-      next++;
-      func (*cur);
-      cur = next;
-    }
-}
-
-/* Find the first process for which FUNC returns true.  Return NULL if no
-   process satisfying FUNC is found.  */
-
-template <typename Func>
-static process_info *
-find_process (Func func)
-{
-  std::list<process_info *>::iterator next, cur = all_processes.begin ();
-
-  while (cur != all_processes.end ())
-    {
-      next = cur;
-      next++;
-
-      if (func (*cur))
-        return *cur;
-
-      cur = next;
-    }
-
-  return NULL;
-}
-
-extern struct thread_info *current_thread;
-
-/* Return the first process in the processes list.  */
-struct process_info *get_first_process (void);
-
-struct process_info *add_process (int pid, int attached);
-void remove_process (struct process_info *process);
-struct process_info *find_process_pid (int pid);
-int have_started_inferiors_p (void);
-int have_attached_inferiors_p (void);
-
-void clear_inferiors (void);
-
-void *thread_target_data (struct thread_info *);
-struct regcache *thread_regcache_data (struct thread_info *);
-void set_thread_regcache_data (struct thread_info *, struct regcache *);
-
-#endif /* GDBSERVER_INFERIORS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch32-low.c ./gdb/gdbserver/linux-aarch32-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch32-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-aarch32-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,303 +0,0 @@
-/* Copyright (C) 1995-2020 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 "server.h"
-#include "arch/arm.h"
-#include "arch/arm-linux.h"
-#include "linux-low.h"
-#include "linux-aarch32-low.h"
-
-#include <sys/ptrace.h>
-/* Don't include elf.h if linux/elf.h got included by gdb_proc_service.h.
-   On Bionic elf.h and linux/elf.h have conflicting definitions.  */
-#ifndef ELFMAG0
-#include <elf.h>
-#endif
-
-/* Correct in either endianness.  */
-#define arm_abi_breakpoint 0xef9f0001UL
-
-/* For new EABI binaries.  We recognize it regardless of which ABI
-   is used for gdbserver, so single threaded debugging should work
-   OK, but for multi-threaded debugging we only insert the current
-   ABI's breakpoint instruction.  For now at least.  */
-#define arm_eabi_breakpoint 0xe7f001f0UL
-
-#if (defined __ARM_EABI__ || defined __aarch64__)
-static const unsigned long arm_breakpoint = arm_eabi_breakpoint;
-#else
-static const unsigned long arm_breakpoint = arm_abi_breakpoint;
-#endif
-
-#define arm_breakpoint_len 4
-static const unsigned short thumb_breakpoint = 0xde01;
-#define thumb_breakpoint_len 2
-static const unsigned short thumb2_breakpoint[] = { 0xf7f0, 0xa000 };
-#define thumb2_breakpoint_len 4
-
-/* Some older versions of GNU/Linux and Android do not define
-   the following macros.  */
-#ifndef NT_ARM_VFP
-#define NT_ARM_VFP 0x400
-#endif
-
-/* Collect GP registers from REGCACHE to buffer BUF.  */
-
-void
-arm_fill_gregset (struct regcache *regcache, void *buf)
-{
-  int i;
-  uint32_t *regs = (uint32_t *) buf;
-  uint32_t cpsr = regs[ARM_CPSR_GREGNUM];
-
-  for (i = ARM_A1_REGNUM; i <= ARM_PC_REGNUM; i++)
-    collect_register (regcache, i, &regs[i]);
-
-  collect_register (regcache, ARM_PS_REGNUM, &regs[ARM_CPSR_GREGNUM]);
-  /* Keep reserved bits bit 20 to bit 23.  */
-  regs[ARM_CPSR_GREGNUM] = ((regs[ARM_CPSR_GREGNUM] & 0xff0fffff)
-			    | (cpsr & 0x00f00000));
-}
-
-/* Supply GP registers contents, stored in BUF, to REGCACHE.  */
-
-void
-arm_store_gregset (struct regcache *regcache, const void *buf)
-{
-  int i;
-  char zerobuf[8];
-  const uint32_t *regs = (const uint32_t *) buf;
-  uint32_t cpsr = regs[ARM_CPSR_GREGNUM];
-
-  memset (zerobuf, 0, 8);
-  for (i = ARM_A1_REGNUM; i <= ARM_PC_REGNUM; i++)
-    supply_register (regcache, i, &regs[i]);
-
-  for (; i < ARM_PS_REGNUM; i++)
-    supply_register (regcache, i, zerobuf);
-
-  /* Clear reserved bits bit 20 to bit 23.  */
-  cpsr &= 0xff0fffff;
-  supply_register (regcache, ARM_PS_REGNUM, &cpsr);
-}
-
-/* Collect NUM number of VFP registers from REGCACHE to buffer BUF.  */
-
-void
-arm_fill_vfpregset_num (struct regcache *regcache, void *buf, int num)
-{
-  int i, base;
-
-  gdb_assert (num == 16 || num == 32);
-
-  base = find_regno (regcache->tdesc, "d0");
-  for (i = 0; i < num; i++)
-    collect_register (regcache, base + i, (char *) buf + i * 8);
-
-  collect_register_by_name (regcache, "fpscr", (char *) buf + 32 * 8);
-}
-
-/* Supply NUM number of VFP registers contents, stored in BUF, to
-   REGCACHE.  */
-
-void
-arm_store_vfpregset_num (struct regcache *regcache, const void *buf, int num)
-{
-  int i, base;
-
-  gdb_assert (num == 16 || num == 32);
-
-  base = find_regno (regcache->tdesc, "d0");
-  for (i = 0; i < num; i++)
-    supply_register (regcache, base + i, (char *) buf + i * 8);
-
-  supply_register_by_name (regcache, "fpscr", (char *) buf + 32 * 8);
-}
-
-static void
-arm_fill_vfpregset (struct regcache *regcache, void *buf)
-{
-  arm_fill_vfpregset_num (regcache, buf, 32);
-}
-
-static void
-arm_store_vfpregset (struct regcache *regcache, const void *buf)
-{
-  arm_store_vfpregset_num (regcache, buf, 32);
-}
-
-/* Register sets with using PTRACE_GETREGSET.  */
-
-static struct regset_info aarch32_regsets[] = {
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
-    ARM_CORE_REGS_SIZE + ARM_INT_REGISTER_SIZE, GENERAL_REGS,
-    arm_fill_gregset, arm_store_gregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_VFP, ARM_VFP3_REGS_SIZE,
-    EXTENDED_REGS,
-    arm_fill_vfpregset, arm_store_vfpregset },
-  NULL_REGSET
-};
-
-static struct regsets_info aarch32_regsets_info =
-  {
-    aarch32_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-struct regs_info regs_info_aarch32 =
-  {
-    NULL, /* regset_bitmap */
-    NULL, /* usrregs */
-    &aarch32_regsets_info
-  };
-
-/* Returns 1 if the current instruction set is thumb, 0 otherwise.  */
-
-int
-arm_is_thumb_mode (void)
-{
-  struct regcache *regcache = get_thread_regcache (current_thread, 1);
-  unsigned long cpsr;
-
-  collect_register_by_name (regcache, "cpsr", &cpsr);
-
-  if (cpsr & 0x20)
-    return 1;
-  else
-    return 0;
-}
-
-/* Returns 1 if there is a software breakpoint at location.  */
-
-int
-arm_breakpoint_at (CORE_ADDR where)
-{
-  if (arm_is_thumb_mode ())
-    {
-      /* Thumb mode.  */
-      unsigned short insn;
-
-      (*the_target->read_memory) (where, (unsigned char *) &insn, 2);
-      if (insn == thumb_breakpoint)
-	return 1;
-
-      if (insn == thumb2_breakpoint[0])
-	{
-	  (*the_target->read_memory) (where + 2, (unsigned char *) &insn, 2);
-	  if (insn == thumb2_breakpoint[1])
-	    return 1;
-	}
-    }
-  else
-    {
-      /* ARM mode.  */
-      unsigned long insn;
-
-      (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
-      if (insn == arm_abi_breakpoint)
-	return 1;
-
-      if (insn == arm_eabi_breakpoint)
-	return 1;
-    }
-
-  return 0;
-}
-
-/* Implementation of linux_target_ops method "breakpoint_kind_from_pc".
-
-   Determine the type and size of breakpoint to insert at PCPTR.  Uses the
-   program counter value to determine whether a 16-bit or 32-bit breakpoint
-   should be used.  It returns the breakpoint's kind, and adjusts the program
-   counter (if necessary) to point to the actual memory location where the
-   breakpoint should be inserted.  */
-
-int
-arm_breakpoint_kind_from_pc (CORE_ADDR *pcptr)
-{
-  if (IS_THUMB_ADDR (*pcptr))
-    {
-      gdb_byte buf[2];
-
-      *pcptr = UNMAKE_THUMB_ADDR (*pcptr);
-
-      /* Check whether we are replacing a thumb2 32-bit instruction.  */
-      if (target_read_memory (*pcptr, buf, 2) == 0)
-	{
-	  unsigned short inst1 = 0;
-
-	  target_read_memory (*pcptr, (gdb_byte *) &inst1, 2);
-	  if (thumb_insn_size (inst1) == 4)
-	    return ARM_BP_KIND_THUMB2;
-	}
-      return ARM_BP_KIND_THUMB;
-    }
-  else
-    return ARM_BP_KIND_ARM;
-}
-
-/*  Implementation of the linux_target_ops method "sw_breakpoint_from_kind".  */
-
-const gdb_byte *
-arm_sw_breakpoint_from_kind (int kind , int *size)
-{
-  *size = arm_breakpoint_len;
-  /* Define an ARM-mode breakpoint; we only set breakpoints in the C
-     library, which is most likely to be ARM.  If the kernel supports
-     clone events, we will never insert a breakpoint, so even a Thumb
-     C library will work; so will mixing EABI/non-EABI gdbserver and
-     application.  */
-  switch (kind)
-    {
-      case ARM_BP_KIND_THUMB:
-	*size = thumb_breakpoint_len;
-	return (gdb_byte *) &thumb_breakpoint;
-      case ARM_BP_KIND_THUMB2:
-	*size = thumb2_breakpoint_len;
-	return (gdb_byte *) &thumb2_breakpoint;
-      case ARM_BP_KIND_ARM:
-	*size = arm_breakpoint_len;
-	return (const gdb_byte *) &arm_breakpoint;
-      default:
-       return NULL;
-    }
-  return NULL;
-}
-
-/* Implementation of the linux_target_ops method
-   "breakpoint_kind_from_current_state".  */
-
-int
-arm_breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
-{
-  if (arm_is_thumb_mode ())
-    {
-      *pcptr = MAKE_THUMB_ADDR (*pcptr);
-      return arm_breakpoint_kind_from_pc (pcptr);
-    }
-  else
-    {
-      return arm_breakpoint_kind_from_pc (pcptr);
-    }
-}
-
-void
-initialize_low_arch_aarch32 (void)
-{
-  initialize_regsets_info (&aarch32_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch32-low.h ./gdb/gdbserver/linux-aarch32-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch32-low.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-aarch32-low.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,39 +0,0 @@
-/* Copyright (C) 1995-2020 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 GDBSERVER_LINUX_AARCH32_LOW_H
-#define GDBSERVER_LINUX_AARCH32_LOW_H
-
-extern struct regs_info regs_info_aarch32;
-
-void arm_fill_gregset (struct regcache *regcache, void *buf);
-void arm_store_gregset (struct regcache *regcache, const void *buf);
-void arm_fill_vfpregset_num (struct regcache *regcache, void *buf, int num);
-void arm_store_vfpregset_num (struct regcache *regcache, const void *buf,
-			      int num);
-
-int arm_breakpoint_kind_from_pc (CORE_ADDR *pcptr);
-const gdb_byte *arm_sw_breakpoint_from_kind (int kind , int *size);
-int arm_breakpoint_kind_from_current_state (CORE_ADDR *pcptr);
-int arm_breakpoint_at (CORE_ADDR where);
-
-void initialize_low_arch_aarch32 (void);
-
-void init_registers_arm_with_neon (void);
-int arm_is_thumb_mode (void);
-
-#endif /* GDBSERVER_LINUX_AARCH32_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch32-tdesc.c ./gdb/gdbserver/linux-aarch32-tdesc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch32-tdesc.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-aarch32-tdesc.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,47 +0,0 @@
-/* Copyright (C) 2019-2020 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 "server.h"
-#include "tdesc.h"
-#include "arch/aarch32.h"
-#include <inttypes.h>
-
-static struct target_desc *tdesc_aarch32;
-
-/* See linux-aarch32-tdesc.h.  */
-
-const target_desc *
-aarch32_linux_read_description ()
-{
-  if (tdesc_aarch32 == nullptr)
-    {
-      tdesc_aarch32 = aarch32_create_target_description ();
-
-      static const char *expedite_regs[] = { "r11", "sp", "pc", 0 };
-      init_target_desc (tdesc_aarch32, expedite_regs);
-    }
-  return tdesc_aarch32;
-}
-
-/* See linux-aarch32-tdesc.h.  */
-
-bool
-is_aarch32_linux_description (const target_desc *tdesc)
-{
-  gdb_assert (tdesc != nullptr);
-  return tdesc == tdesc_aarch32;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch32-tdesc.h ./gdb/gdbserver/linux-aarch32-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch32-tdesc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-aarch32-tdesc.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,29 +0,0 @@
-/* Copyright (C) 2019-2020 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 GDBSERVER_LINUX_AARCH32_TDESC_H
-#define GDBSERVER_LINUX_AARCH32_TDESC_H
-
-/* Return the AArch32 target description.  */
-
-const target_desc * aarch32_linux_read_description ();
-
-/* Return true if TDESC is the AArch32 target description.  */
-
-bool is_aarch32_linux_description (const target_desc *tdesc);
-
-#endif /* linux-aarch32-tdesc.h.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch64-ipa.c ./gdb/gdbserver/linux-aarch64-ipa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch64-ipa.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-aarch64-ipa.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,209 +0,0 @@
-/* GNU/Linux/AArch64 specific low level interface, for the in-process
-   agent library for GDB.
-
-   Copyright (C) 2015-2020 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 "server.h"
-#include <sys/mman.h>
-#include "tracepoint.h"
-#include <elf.h>
-#ifdef HAVE_GETAUXVAL
-#include <sys/auxv.h>
-#endif
-#include "linux-aarch64-tdesc.h"
-
-/* Each register saved by the jump pad is in a 16 byte cell.  */
-#define FT_CR_SIZE 16
-
-#define FT_CR_FPCR	0
-#define FT_CR_FPSR	1
-#define FT_CR_CPSR	2
-#define FT_CR_PC	3
-#define FT_CR_SP	4
-#define FT_CR_X0	5
-#define FT_CR_GPR(n)	(FT_CR_X0 + (n))
-#define FT_CR_FPR(n)	(FT_CR_GPR (31) + (n))
-
-/* Mapping between registers collected by the jump pad and GDB's register
-   array layout used by regcache.
-
-   See linux-aarch64-low.c (aarch64_install_fast_tracepoint_jump_pad) for
-   more details.  */
-
-static const int aarch64_ft_collect_regmap[] = {
-  FT_CR_GPR (0),
-  FT_CR_GPR (1),
-  FT_CR_GPR (2),
-  FT_CR_GPR (3),
-  FT_CR_GPR (4),
-  FT_CR_GPR (5),
-  FT_CR_GPR (6),
-  FT_CR_GPR (7),
-  FT_CR_GPR (8),
-  FT_CR_GPR (9),
-  FT_CR_GPR (10),
-  FT_CR_GPR (11),
-  FT_CR_GPR (12),
-  FT_CR_GPR (13),
-  FT_CR_GPR (14),
-  FT_CR_GPR (15),
-  FT_CR_GPR (16),
-  FT_CR_GPR (17),
-  FT_CR_GPR (18),
-  FT_CR_GPR (19),
-  FT_CR_GPR (20),
-  FT_CR_GPR (21),
-  FT_CR_GPR (22),
-  FT_CR_GPR (23),
-  FT_CR_GPR (24),
-  FT_CR_GPR (25),
-  FT_CR_GPR (26),
-  FT_CR_GPR (27),
-  FT_CR_GPR (28),
-  /* FP */
-  FT_CR_GPR (29),
-  /* LR */
-  FT_CR_GPR (30),
-  FT_CR_SP,
-  FT_CR_PC,
-  FT_CR_CPSR,
-  FT_CR_FPR (0),
-  FT_CR_FPR (1),
-  FT_CR_FPR (2),
-  FT_CR_FPR (3),
-  FT_CR_FPR (4),
-  FT_CR_FPR (5),
-  FT_CR_FPR (6),
-  FT_CR_FPR (7),
-  FT_CR_FPR (8),
-  FT_CR_FPR (9),
-  FT_CR_FPR (10),
-  FT_CR_FPR (11),
-  FT_CR_FPR (12),
-  FT_CR_FPR (13),
-  FT_CR_FPR (14),
-  FT_CR_FPR (15),
-  FT_CR_FPR (16),
-  FT_CR_FPR (17),
-  FT_CR_FPR (18),
-  FT_CR_FPR (19),
-  FT_CR_FPR (20),
-  FT_CR_FPR (21),
-  FT_CR_FPR (22),
-  FT_CR_FPR (23),
-  FT_CR_FPR (24),
-  FT_CR_FPR (25),
-  FT_CR_FPR (26),
-  FT_CR_FPR (27),
-  FT_CR_FPR (28),
-  FT_CR_FPR (29),
-  FT_CR_FPR (30),
-  FT_CR_FPR (31),
-  FT_CR_FPSR,
-  FT_CR_FPCR
-};
-
-#define AARCH64_NUM_FT_COLLECT_GREGS \
-  (sizeof (aarch64_ft_collect_regmap) / sizeof(aarch64_ft_collect_regmap[0]))
-
-/* Fill in REGCACHE with registers saved by the jump pad in BUF.  */
-
-void
-supply_fast_tracepoint_registers (struct regcache *regcache,
-				  const unsigned char *buf)
-{
-  int i;
-
-  for (i = 0; i < AARCH64_NUM_FT_COLLECT_GREGS; i++)
-    supply_register (regcache, i,
-		     ((char *) buf)
-		     + (aarch64_ft_collect_regmap[i] * FT_CR_SIZE));
-}
-
-ULONGEST
-get_raw_reg (const unsigned char *raw_regs, int regnum)
-{
-  if (regnum >= AARCH64_NUM_FT_COLLECT_GREGS)
-    return 0;
-
-  return *(ULONGEST *) (raw_regs
-			+ aarch64_ft_collect_regmap[regnum] * FT_CR_SIZE);
-}
-
-/* Return target_desc to use for IPA, given the tdesc index passed by
-   gdbserver.  Index is ignored, since we have only one tdesc
-   at the moment.  SVE and pauth not yet supported.  */
-
-const struct target_desc *
-get_ipa_tdesc (int idx)
-{
-  return aarch64_linux_read_description (0, false);
-}
-
-/* Allocate buffer for the jump pads.  The branch instruction has a reach
-   of +/- 128MiB, and the executable is loaded at 0x400000 (4MiB).
-   To maximize the area of executable that can use tracepoints, try
-   allocating at 0x400000 - size initially, decreasing until we hit
-   a free area.  */
-
-void *
-alloc_jump_pad_buffer (size_t size)
-{
-  uintptr_t addr;
-  uintptr_t exec_base = getauxval (AT_PHDR);
-  int pagesize;
-  void *res;
-
-  if (exec_base == 0)
-    exec_base = 0x400000;
-
-  pagesize = sysconf (_SC_PAGE_SIZE);
-  if (pagesize == -1)
-    perror_with_name ("sysconf");
-
-  addr = exec_base - size;
-
-  /* size should already be page-aligned, but this can't hurt.  */
-  addr &= ~(pagesize - 1);
-
-  /* Search for a free area.  If we hit 0, we're out of luck.  */
-  for (; addr; addr -= pagesize)
-    {
-      /* No MAP_FIXED - we don't want to zap someone's mapping.  */
-      res = mmap ((void *) addr, size,
-		  PROT_READ | PROT_WRITE | PROT_EXEC,
-		  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-
-      /* If we got what we wanted, return.  */
-      if ((uintptr_t) res == addr)
-	return res;
-
-      /* If we got a mapping, but at a wrong address, undo it.  */
-      if (res != MAP_FAILED)
-	munmap (res, size);
-    }
-
-  return NULL;
-}
-
-void
-initialize_low_tracepoint (void)
-{
-  /* SVE and pauth not yet supported.  */
-  aarch64_linux_read_description (0, false);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch64-low.c ./gdb/gdbserver/linux-aarch64-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch64-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-aarch64-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,3098 +0,0 @@
-/* GNU/Linux/AArch64 specific low level interface, for the remote server for
-   GDB.
-
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
-   Contributed by ARM Ltd.
-
-   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 "server.h"
-#include "linux-low.h"
-#include "nat/aarch64-linux.h"
-#include "nat/aarch64-linux-hw-point.h"
-#include "arch/aarch64-insn.h"
-#include "linux-aarch32-low.h"
-#include "elf/common.h"
-#include "ax.h"
-#include "tracepoint.h"
-#include "debug.h"
-
-#include <signal.h>
-#include <sys/user.h>
-#include "nat/gdb_ptrace.h"
-#include <asm/ptrace.h>
-#include <inttypes.h>
-#include <endian.h>
-#include <sys/uio.h>
-
-#include "gdb_proc_service.h"
-#include "arch/aarch64.h"
-#include "linux-aarch32-tdesc.h"
-#include "linux-aarch64-tdesc.h"
-#include "nat/aarch64-sve-linux-ptrace.h"
-#include "tdesc.h"
-
-#ifdef HAVE_SYS_REG_H
-#include <sys/reg.h>
-#endif
-
-/* Per-process arch-specific data we want to keep.  */
-
-struct arch_process_info
-{
-  /* Hardware breakpoint/watchpoint data.
-     The reason for them to be per-process rather than per-thread is
-     due to the lack of information in the gdbserver environment;
-     gdbserver is not told that whether a requested hardware
-     breakpoint/watchpoint is thread specific or not, so it has to set
-     each hw bp/wp for every thread in the current process.  The
-     higher level bp/wp management in gdb will resume a thread if a hw
-     bp/wp trap is not expected for it.  Since the hw bp/wp setting is
-     same for each thread, it is reasonable for the data to live here.
-     */
-  struct aarch64_debug_reg_state debug_reg_state;
-};
-
-/* Return true if the size of register 0 is 8 byte.  */
-
-static int
-is_64bit_tdesc (void)
-{
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-
-  return register_size (regcache->tdesc, 0) == 8;
-}
-
-/* Return true if the regcache contains the number of SVE registers.  */
-
-static bool
-is_sve_tdesc (void)
-{
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-
-  return tdesc_contains_feature (regcache->tdesc, "org.gnu.gdb.aarch64.sve");
-}
-
-static void
-aarch64_fill_gregset (struct regcache *regcache, void *buf)
-{
-  struct user_pt_regs *regset = (struct user_pt_regs *) buf;
-  int i;
-
-  for (i = 0; i < AARCH64_X_REGS_NUM; i++)
-    collect_register (regcache, AARCH64_X0_REGNUM + i, &regset->regs[i]);
-  collect_register (regcache, AARCH64_SP_REGNUM, &regset->sp);
-  collect_register (regcache, AARCH64_PC_REGNUM, &regset->pc);
-  collect_register (regcache, AARCH64_CPSR_REGNUM, &regset->pstate);
-}
-
-static void
-aarch64_store_gregset (struct regcache *regcache, const void *buf)
-{
-  const struct user_pt_regs *regset = (const struct user_pt_regs *) buf;
-  int i;
-
-  for (i = 0; i < AARCH64_X_REGS_NUM; i++)
-    supply_register (regcache, AARCH64_X0_REGNUM + i, &regset->regs[i]);
-  supply_register (regcache, AARCH64_SP_REGNUM, &regset->sp);
-  supply_register (regcache, AARCH64_PC_REGNUM, &regset->pc);
-  supply_register (regcache, AARCH64_CPSR_REGNUM, &regset->pstate);
-}
-
-static void
-aarch64_fill_fpregset (struct regcache *regcache, void *buf)
-{
-  struct user_fpsimd_state *regset = (struct user_fpsimd_state *) buf;
-  int i;
-
-  for (i = 0; i < AARCH64_V_REGS_NUM; i++)
-    collect_register (regcache, AARCH64_V0_REGNUM + i, &regset->vregs[i]);
-  collect_register (regcache, AARCH64_FPSR_REGNUM, &regset->fpsr);
-  collect_register (regcache, AARCH64_FPCR_REGNUM, &regset->fpcr);
-}
-
-static void
-aarch64_store_fpregset (struct regcache *regcache, const void *buf)
-{
-  const struct user_fpsimd_state *regset
-    = (const struct user_fpsimd_state *) buf;
-  int i;
-
-  for (i = 0; i < AARCH64_V_REGS_NUM; i++)
-    supply_register (regcache, AARCH64_V0_REGNUM + i, &regset->vregs[i]);
-  supply_register (regcache, AARCH64_FPSR_REGNUM, &regset->fpsr);
-  supply_register (regcache, AARCH64_FPCR_REGNUM, &regset->fpcr);
-}
-
-/* Store the pauth registers to regcache.  */
-
-static void
-aarch64_store_pauthregset (struct regcache *regcache, const void *buf)
-{
-  uint64_t *pauth_regset = (uint64_t *) buf;
-  int pauth_base = find_regno (regcache->tdesc, "pauth_dmask");
-
-  if (pauth_base == 0)
-    return;
-
-  supply_register (regcache, AARCH64_PAUTH_DMASK_REGNUM (pauth_base),
-		   &pauth_regset[0]);
-  supply_register (regcache, AARCH64_PAUTH_CMASK_REGNUM (pauth_base),
-		   &pauth_regset[1]);
-}
-
-/* Implementation of linux_target_ops method "get_pc".  */
-
-static CORE_ADDR
-aarch64_get_pc (struct regcache *regcache)
-{
-  if (register_size (regcache->tdesc, 0) == 8)
-    return linux_get_pc_64bit (regcache);
-  else
-    return linux_get_pc_32bit (regcache);
-}
-
-/* Implementation of linux_target_ops method "set_pc".  */
-
-static void
-aarch64_set_pc (struct regcache *regcache, CORE_ADDR pc)
-{
-  if (register_size (regcache->tdesc, 0) == 8)
-    linux_set_pc_64bit (regcache, pc);
-  else
-    linux_set_pc_32bit (regcache, pc);
-}
-
-#define aarch64_breakpoint_len 4
-
-/* AArch64 BRK software debug mode instruction.
-   This instruction needs to match gdb/aarch64-tdep.c
-   (aarch64_default_breakpoint).  */
-static const gdb_byte aarch64_breakpoint[] = {0x00, 0x00, 0x20, 0xd4};
-
-/* Implementation of linux_target_ops method "breakpoint_at".  */
-
-static int
-aarch64_breakpoint_at (CORE_ADDR where)
-{
-  if (is_64bit_tdesc ())
-    {
-      gdb_byte insn[aarch64_breakpoint_len];
-
-      (*the_target->read_memory) (where, (unsigned char *) &insn,
-				  aarch64_breakpoint_len);
-      if (memcmp (insn, aarch64_breakpoint, aarch64_breakpoint_len) == 0)
-	return 1;
-
-      return 0;
-    }
-  else
-    return arm_breakpoint_at (where);
-}
-
-static void
-aarch64_init_debug_reg_state (struct aarch64_debug_reg_state *state)
-{
-  int i;
-
-  for (i = 0; i < AARCH64_HBP_MAX_NUM; ++i)
-    {
-      state->dr_addr_bp[i] = 0;
-      state->dr_ctrl_bp[i] = 0;
-      state->dr_ref_count_bp[i] = 0;
-    }
-
-  for (i = 0; i < AARCH64_HWP_MAX_NUM; ++i)
-    {
-      state->dr_addr_wp[i] = 0;
-      state->dr_ctrl_wp[i] = 0;
-      state->dr_ref_count_wp[i] = 0;
-    }
-}
-
-/* Return the pointer to the debug register state structure in the
-   current process' arch-specific data area.  */
-
-struct aarch64_debug_reg_state *
-aarch64_get_debug_reg_state (pid_t pid)
-{
-  struct process_info *proc = find_process_pid (pid);
-
-  return &proc->priv->arch_private->debug_reg_state;
-}
-
-/* Implementation of linux_target_ops method "supports_z_point_type".  */
-
-static int
-aarch64_supports_z_point_type (char z_type)
-{
-  switch (z_type)
-    {
-    case Z_PACKET_SW_BP:
-    case Z_PACKET_HW_BP:
-    case Z_PACKET_WRITE_WP:
-    case Z_PACKET_READ_WP:
-    case Z_PACKET_ACCESS_WP:
-      return 1;
-    default:
-      return 0;
-    }
-}
-
-/* Implementation of linux_target_ops method "insert_point".
-
-   It actually only records the info of the to-be-inserted bp/wp;
-   the actual insertion will happen when threads are resumed.  */
-
-static int
-aarch64_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		      int len, struct raw_breakpoint *bp)
-{
-  int ret;
-  enum target_hw_bp_type targ_type;
-  struct aarch64_debug_reg_state *state
-    = aarch64_get_debug_reg_state (pid_of (current_thread));
-
-  if (show_debug_regs)
-    fprintf (stderr, "insert_point on entry (addr=0x%08lx, len=%d)\n",
-	     (unsigned long) addr, len);
-
-  /* Determine the type from the raw breakpoint type.  */
-  targ_type = raw_bkpt_type_to_target_hw_bp_type (type);
-
-  if (targ_type != hw_execute)
-    {
-      if (aarch64_linux_region_ok_for_watchpoint (addr, len))
-	ret = aarch64_handle_watchpoint (targ_type, addr, len,
-					 1 /* is_insert */, state);
-      else
-	ret = -1;
-    }
-  else
-    {
-      if (len == 3)
-	{
-	  /* LEN is 3 means the breakpoint is set on a 32-bit thumb
-	     instruction.   Set it to 2 to correctly encode length bit
-	     mask in hardware/watchpoint control register.  */
-	  len = 2;
-	}
-      ret = aarch64_handle_breakpoint (targ_type, addr, len,
-				       1 /* is_insert */, state);
-    }
-
-  if (show_debug_regs)
-    aarch64_show_debug_reg_state (state, "insert_point", addr, len,
-				  targ_type);
-
-  return ret;
-}
-
-/* Implementation of linux_target_ops method "remove_point".
-
-   It actually only records the info of the to-be-removed bp/wp,
-   the actual removal will be done when threads are resumed.  */
-
-static int
-aarch64_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		      int len, struct raw_breakpoint *bp)
-{
-  int ret;
-  enum target_hw_bp_type targ_type;
-  struct aarch64_debug_reg_state *state
-    = aarch64_get_debug_reg_state (pid_of (current_thread));
-
-  if (show_debug_regs)
-    fprintf (stderr, "remove_point on entry (addr=0x%08lx, len=%d)\n",
-	     (unsigned long) addr, len);
-
-  /* Determine the type from the raw breakpoint type.  */
-  targ_type = raw_bkpt_type_to_target_hw_bp_type (type);
-
-  /* Set up state pointers.  */
-  if (targ_type != hw_execute)
-    ret =
-      aarch64_handle_watchpoint (targ_type, addr, len, 0 /* is_insert */,
-				 state);
-  else
-    {
-      if (len == 3)
-	{
-	  /* LEN is 3 means the breakpoint is set on a 32-bit thumb
-	     instruction.   Set it to 2 to correctly encode length bit
-	     mask in hardware/watchpoint control register.  */
-	  len = 2;
-	}
-      ret = aarch64_handle_breakpoint (targ_type, addr, len,
-				       0 /* is_insert */,  state);
-    }
-
-  if (show_debug_regs)
-    aarch64_show_debug_reg_state (state, "remove_point", addr, len,
-				  targ_type);
-
-  return ret;
-}
-
-/* Implementation of linux_target_ops method "stopped_data_address".  */
-
-static CORE_ADDR
-aarch64_stopped_data_address (void)
-{
-  siginfo_t siginfo;
-  int pid, i;
-  struct aarch64_debug_reg_state *state;
-
-  pid = lwpid_of (current_thread);
-
-  /* Get the siginfo.  */
-  if (ptrace (PTRACE_GETSIGINFO, pid, NULL, &siginfo) != 0)
-    return (CORE_ADDR) 0;
-
-  /* Need to be a hardware breakpoint/watchpoint trap.  */
-  if (siginfo.si_signo != SIGTRAP
-      || (siginfo.si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
-    return (CORE_ADDR) 0;
-
-  /* Check if the address matches any watched address.  */
-  state = aarch64_get_debug_reg_state (pid_of (current_thread));
-  for (i = aarch64_num_wp_regs - 1; i >= 0; --i)
-    {
-      const unsigned int offset
-	= aarch64_watchpoint_offset (state->dr_ctrl_wp[i]);
-      const unsigned int len = aarch64_watchpoint_length (state->dr_ctrl_wp[i]);
-      const CORE_ADDR addr_trap = (CORE_ADDR) siginfo.si_addr;
-      const CORE_ADDR addr_watch = state->dr_addr_wp[i] + offset;
-      const CORE_ADDR addr_watch_aligned = align_down (state->dr_addr_wp[i], 8);
-      const CORE_ADDR addr_orig = state->dr_addr_orig_wp[i];
-
-      if (state->dr_ref_count_wp[i]
-	  && DR_CONTROL_ENABLED (state->dr_ctrl_wp[i])
-	  && addr_trap >= addr_watch_aligned
-	  && addr_trap < addr_watch + len)
-	{
-	  /* ADDR_TRAP reports the first address of the memory range
-	     accessed by the CPU, regardless of what was the memory
-	     range watched.  Thus, a large CPU access that straddles
-	     the ADDR_WATCH..ADDR_WATCH+LEN range may result in an
-	     ADDR_TRAP that is lower than the
-	     ADDR_WATCH..ADDR_WATCH+LEN range.  E.g.:
-
-	     addr: |   4   |   5   |   6   |   7   |   8   |
-				   |---- range watched ----|
-		   |----------- range accessed ------------|
-
-	     In this case, ADDR_TRAP will be 4.
-
-	     To match a watchpoint known to GDB core, we must never
-	     report *ADDR_P outside of any ADDR_WATCH..ADDR_WATCH+LEN
-	     range.  ADDR_WATCH <= ADDR_TRAP < ADDR_ORIG is a false
-	     positive on kernels older than 4.10.  See PR
-	     external/20207.  */
-	  return addr_orig;
-	}
-    }
-
-  return (CORE_ADDR) 0;
-}
-
-/* Implementation of linux_target_ops method "stopped_by_watchpoint".  */
-
-static int
-aarch64_stopped_by_watchpoint (void)
-{
-  if (aarch64_stopped_data_address () != 0)
-    return 1;
-  else
-    return 0;
-}
-
-/* Fetch the thread-local storage pointer for libthread_db.  */
-
-ps_err_e
-ps_get_thread_area (struct ps_prochandle *ph,
-		    lwpid_t lwpid, int idx, void **base)
-{
-  return aarch64_ps_get_thread_area (ph, lwpid, idx, base,
-				     is_64bit_tdesc ());
-}
-
-/* Implementation of linux_target_ops method "siginfo_fixup".  */
-
-static int
-aarch64_linux_siginfo_fixup (siginfo_t *native, gdb_byte *inf, int direction)
-{
-  /* Is the inferior 32-bit?  If so, then fixup the siginfo object.  */
-  if (!is_64bit_tdesc ())
-    {
-      if (direction == 0)
-	aarch64_compat_siginfo_from_siginfo ((struct compat_siginfo *) inf,
-					     native);
-      else
-	aarch64_siginfo_from_compat_siginfo (native,
-					     (struct compat_siginfo *) inf);
-
-      return 1;
-    }
-
-  return 0;
-}
-
-/* Implementation of linux_target_ops method "new_process".  */
-
-static struct arch_process_info *
-aarch64_linux_new_process (void)
-{
-  struct arch_process_info *info = XCNEW (struct arch_process_info);
-
-  aarch64_init_debug_reg_state (&info->debug_reg_state);
-
-  return info;
-}
-
-/* Implementation of linux_target_ops method "delete_process".  */
-
-static void
-aarch64_linux_delete_process (struct arch_process_info *info)
-{
-  xfree (info);
-}
-
-/* Implementation of linux_target_ops method "linux_new_fork".  */
-
-static void
-aarch64_linux_new_fork (struct process_info *parent,
-			struct process_info *child)
-{
-  /* These are allocated by linux_add_process.  */
-  gdb_assert (parent->priv != NULL
-	      && parent->priv->arch_private != NULL);
-  gdb_assert (child->priv != NULL
-	      && child->priv->arch_private != NULL);
-
-  /* Linux kernel before 2.6.33 commit
-     72f674d203cd230426437cdcf7dd6f681dad8b0d
-     will inherit hardware debug registers from parent
-     on fork/vfork/clone.  Newer Linux kernels create such tasks with
-     zeroed debug registers.
-
-     GDB core assumes the child inherits the watchpoints/hw
-     breakpoints of the parent, and will remove them all from the
-     forked off process.  Copy the debug registers mirrors into the
-     new process so that all breakpoints and watchpoints can be
-     removed together.  The debug registers mirror will become zeroed
-     in the end before detaching the forked off process, thus making
-     this compatible with older Linux kernels too.  */
-
-  *child->priv->arch_private = *parent->priv->arch_private;
-}
-
-/* Matches HWCAP_PACA in kernel header arch/arm64/include/uapi/asm/hwcap.h.  */
-#define AARCH64_HWCAP_PACA (1 << 30)
-
-/* Implementation of linux_target_ops method "arch_setup".  */
-
-static void
-aarch64_arch_setup (void)
-{
-  unsigned int machine;
-  int is_elf64;
-  int tid;
-
-  tid = lwpid_of (current_thread);
-
-  is_elf64 = linux_pid_exe_is_elf_64_file (tid, &machine);
-
-  if (is_elf64)
-    {
-      uint64_t vq = aarch64_sve_get_vq (tid);
-      unsigned long hwcap = linux_get_hwcap (8);
-      bool pauth_p = hwcap & AARCH64_HWCAP_PACA;
-
-      current_process ()->tdesc = aarch64_linux_read_description (vq, pauth_p);
-    }
-  else
-    current_process ()->tdesc = aarch32_linux_read_description ();
-
-  aarch64_linux_get_debug_reg_capacity (lwpid_of (current_thread));
-}
-
-/* Wrapper for aarch64_sve_regs_copy_to_reg_buf.  */
-
-static void
-aarch64_sve_regs_copy_to_regcache (struct regcache *regcache, const void *buf)
-{
-  return aarch64_sve_regs_copy_to_reg_buf (regcache, buf);
-}
-
-/* Wrapper for aarch64_sve_regs_copy_from_reg_buf.  */
-
-static void
-aarch64_sve_regs_copy_from_regcache (struct regcache *regcache, void *buf)
-{
-  return aarch64_sve_regs_copy_from_reg_buf (regcache, buf);
-}
-
-static struct regset_info aarch64_regsets[] =
-{
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
-    sizeof (struct user_pt_regs), GENERAL_REGS,
-    aarch64_fill_gregset, aarch64_store_gregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_FPREGSET,
-    sizeof (struct user_fpsimd_state), FP_REGS,
-    aarch64_fill_fpregset, aarch64_store_fpregset
-  },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_PAC_MASK,
-    AARCH64_PAUTH_REGS_SIZE, OPTIONAL_REGS,
-    NULL, aarch64_store_pauthregset },
-  NULL_REGSET
-};
-
-static struct regsets_info aarch64_regsets_info =
-  {
-    aarch64_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct regs_info regs_info_aarch64 =
-  {
-    NULL, /* regset_bitmap */
-    NULL, /* usrregs */
-    &aarch64_regsets_info,
-  };
-
-static struct regset_info aarch64_sve_regsets[] =
-{
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
-    sizeof (struct user_pt_regs), GENERAL_REGS,
-    aarch64_fill_gregset, aarch64_store_gregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_SVE,
-    SVE_PT_SIZE (AARCH64_MAX_SVE_VQ, SVE_PT_REGS_SVE), EXTENDED_REGS,
-    aarch64_sve_regs_copy_from_regcache, aarch64_sve_regs_copy_to_regcache
-  },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_PAC_MASK,
-    AARCH64_PAUTH_REGS_SIZE, OPTIONAL_REGS,
-    NULL, aarch64_store_pauthregset },
-  NULL_REGSET
-};
-
-static struct regsets_info aarch64_sve_regsets_info =
-  {
-    aarch64_sve_regsets, /* regsets.  */
-    0, /* num_regsets.  */
-    NULL, /* disabled_regsets.  */
-  };
-
-static struct regs_info regs_info_aarch64_sve =
-  {
-    NULL, /* regset_bitmap.  */
-    NULL, /* usrregs.  */
-    &aarch64_sve_regsets_info,
-  };
-
-/* Implementation of linux_target_ops method "regs_info".  */
-
-static const struct regs_info *
-aarch64_regs_info (void)
-{
-  if (!is_64bit_tdesc ())
-    return &regs_info_aarch32;
-
-  if (is_sve_tdesc ())
-    return &regs_info_aarch64_sve;
-
-  return &regs_info_aarch64;
-}
-
-/* Implementation of linux_target_ops method "supports_tracepoints".  */
-
-static int
-aarch64_supports_tracepoints (void)
-{
-  if (current_thread == NULL)
-    return 1;
-  else
-    {
-      /* We don't support tracepoints on aarch32 now.  */
-      return is_64bit_tdesc ();
-    }
-}
-
-/* Implementation of linux_target_ops method "get_thread_area".  */
-
-static int
-aarch64_get_thread_area (int lwpid, CORE_ADDR *addrp)
-{
-  struct iovec iovec;
-  uint64_t reg;
-
-  iovec.iov_base = &reg;
-  iovec.iov_len = sizeof (reg);
-
-  if (ptrace (PTRACE_GETREGSET, lwpid, NT_ARM_TLS, &iovec) != 0)
-    return -1;
-
-  *addrp = reg;
-
-  return 0;
-}
-
-/* Implementation of linux_target_ops method "get_syscall_trapinfo".  */
-
-static void
-aarch64_get_syscall_trapinfo (struct regcache *regcache, int *sysno)
-{
-  int use_64bit = register_size (regcache->tdesc, 0) == 8;
-
-  if (use_64bit)
-    {
-      long l_sysno;
-
-      collect_register_by_name (regcache, "x8", &l_sysno);
-      *sysno = (int) l_sysno;
-    }
-  else
-    collect_register_by_name (regcache, "r7", sysno);
-}
-
-/* List of condition codes that we need.  */
-
-enum aarch64_condition_codes
-{
-  EQ = 0x0,
-  NE = 0x1,
-  LO = 0x3,
-  GE = 0xa,
-  LT = 0xb,
-  GT = 0xc,
-  LE = 0xd,
-};
-
-enum aarch64_operand_type
-{
-  OPERAND_IMMEDIATE,
-  OPERAND_REGISTER,
-};
-
-/* Representation of an operand.  At this time, it only supports register
-   and immediate types.  */
-
-struct aarch64_operand
-{
-  /* Type of the operand.  */
-  enum aarch64_operand_type type;
-
-  /* Value of the operand according to the type.  */
-  union
-    {
-      uint32_t imm;
-      struct aarch64_register reg;
-    };
-};
-
-/* List of registers that we are currently using, we can add more here as
-   we need to use them.  */
-
-/* General purpose scratch registers (64 bit).  */
-static const struct aarch64_register x0 = { 0, 1 };
-static const struct aarch64_register x1 = { 1, 1 };
-static const struct aarch64_register x2 = { 2, 1 };
-static const struct aarch64_register x3 = { 3, 1 };
-static const struct aarch64_register x4 = { 4, 1 };
-
-/* General purpose scratch registers (32 bit).  */
-static const struct aarch64_register w0 = { 0, 0 };
-static const struct aarch64_register w2 = { 2, 0 };
-
-/* Intra-procedure scratch registers.  */
-static const struct aarch64_register ip0 = { 16, 1 };
-
-/* Special purpose registers.  */
-static const struct aarch64_register fp = { 29, 1 };
-static const struct aarch64_register lr = { 30, 1 };
-static const struct aarch64_register sp = { 31, 1 };
-static const struct aarch64_register xzr = { 31, 1 };
-
-/* Dynamically allocate a new register.  If we know the register
-   statically, we should make it a global as above instead of using this
-   helper function.  */
-
-static struct aarch64_register
-aarch64_register (unsigned num, int is64)
-{
-  return (struct aarch64_register) { num, is64 };
-}
-
-/* Helper function to create a register operand, for instructions with
-   different types of operands.
-
-   For example:
-   p += emit_mov (p, x0, register_operand (x1));  */
-
-static struct aarch64_operand
-register_operand (struct aarch64_register reg)
-{
-  struct aarch64_operand operand;
-
-  operand.type = OPERAND_REGISTER;
-  operand.reg = reg;
-
-  return operand;
-}
-
-/* Helper function to create an immediate operand, for instructions with
-   different types of operands.
-
-   For example:
-   p += emit_mov (p, x0, immediate_operand (12));  */
-
-static struct aarch64_operand
-immediate_operand (uint32_t imm)
-{
-  struct aarch64_operand operand;
-
-  operand.type = OPERAND_IMMEDIATE;
-  operand.imm = imm;
-
-  return operand;
-}
-
-/* Helper function to create an offset memory operand.
-
-   For example:
-   p += emit_ldr (p, x0, sp, offset_memory_operand (16));  */
-
-static struct aarch64_memory_operand
-offset_memory_operand (int32_t offset)
-{
-  return (struct aarch64_memory_operand) { MEMORY_OPERAND_OFFSET, offset };
-}
-
-/* Helper function to create a pre-index memory operand.
-
-   For example:
-   p += emit_ldr (p, x0, sp, preindex_memory_operand (16));  */
-
-static struct aarch64_memory_operand
-preindex_memory_operand (int32_t index)
-{
-  return (struct aarch64_memory_operand) { MEMORY_OPERAND_PREINDEX, index };
-}
-
-/* Helper function to create a post-index memory operand.
-
-   For example:
-   p += emit_ldr (p, x0, sp, postindex_memory_operand (16));  */
-
-static struct aarch64_memory_operand
-postindex_memory_operand (int32_t index)
-{
-  return (struct aarch64_memory_operand) { MEMORY_OPERAND_POSTINDEX, index };
-}
-
-/* System control registers.  These special registers can be written and
-   read with the MRS and MSR instructions.
-
-   - NZCV: Condition flags.  GDB refers to this register under the CPSR
-	   name.
-   - FPSR: Floating-point status register.
-   - FPCR: Floating-point control registers.
-   - TPIDR_EL0: Software thread ID register.  */
-
-enum aarch64_system_control_registers
-{
-  /*          op0           op1           crn          crm          op2  */
-  NZCV =      (0x1 << 14) | (0x3 << 11) | (0x4 << 7) | (0x2 << 3) | 0x0,
-  FPSR =      (0x1 << 14) | (0x3 << 11) | (0x4 << 7) | (0x4 << 3) | 0x1,
-  FPCR =      (0x1 << 14) | (0x3 << 11) | (0x4 << 7) | (0x4 << 3) | 0x0,
-  TPIDR_EL0 = (0x1 << 14) | (0x3 << 11) | (0xd << 7) | (0x0 << 3) | 0x2
-};
-
-/* Write a BLR instruction into *BUF.
-
-     BLR rn
-
-   RN is the register to branch to.  */
-
-static int
-emit_blr (uint32_t *buf, struct aarch64_register rn)
-{
-  return aarch64_emit_insn (buf, BLR | ENCODE (rn.num, 5, 5));
-}
-
-/* Write a RET instruction into *BUF.
-
-     RET xn
-
-   RN is the register to branch to.  */
-
-static int
-emit_ret (uint32_t *buf, struct aarch64_register rn)
-{
-  return aarch64_emit_insn (buf, RET | ENCODE (rn.num, 5, 5));
-}
-
-static int
-emit_load_store_pair (uint32_t *buf, enum aarch64_opcodes opcode,
-		      struct aarch64_register rt,
-		      struct aarch64_register rt2,
-		      struct aarch64_register rn,
-		      struct aarch64_memory_operand operand)
-{
-  uint32_t opc;
-  uint32_t pre_index;
-  uint32_t write_back;
-
-  if (rt.is64)
-    opc = ENCODE (2, 2, 30);
-  else
-    opc = ENCODE (0, 2, 30);
-
-  switch (operand.type)
-    {
-    case MEMORY_OPERAND_OFFSET:
-      {
-	pre_index = ENCODE (1, 1, 24);
-	write_back = ENCODE (0, 1, 23);
-	break;
-      }
-    case MEMORY_OPERAND_POSTINDEX:
-      {
-	pre_index = ENCODE (0, 1, 24);
-	write_back = ENCODE (1, 1, 23);
-	break;
-      }
-    case MEMORY_OPERAND_PREINDEX:
-      {
-	pre_index = ENCODE (1, 1, 24);
-	write_back = ENCODE (1, 1, 23);
-	break;
-      }
-    default:
-      return 0;
-    }
-
-  return aarch64_emit_insn (buf, opcode | opc | pre_index | write_back
-			    | ENCODE (operand.index >> 3, 7, 15)
-			    | ENCODE (rt2.num, 5, 10)
-			    | ENCODE (rn.num, 5, 5) | ENCODE (rt.num, 5, 0));
-}
-
-/* Write a STP instruction into *BUF.
-
-     STP rt, rt2, [rn, #offset]
-     STP rt, rt2, [rn, #index]!
-     STP rt, rt2, [rn], #index
-
-   RT and RT2 are the registers to store.
-   RN is the base address register.
-   OFFSET is the immediate to add to the base address.  It is limited to a
-   -512 .. 504 range (7 bits << 3).  */
-
-static int
-emit_stp (uint32_t *buf, struct aarch64_register rt,
-	  struct aarch64_register rt2, struct aarch64_register rn,
-	  struct aarch64_memory_operand operand)
-{
-  return emit_load_store_pair (buf, STP, rt, rt2, rn, operand);
-}
-
-/* Write a LDP instruction into *BUF.
-
-     LDP rt, rt2, [rn, #offset]
-     LDP rt, rt2, [rn, #index]!
-     LDP rt, rt2, [rn], #index
-
-   RT and RT2 are the registers to store.
-   RN is the base address register.
-   OFFSET is the immediate to add to the base address.  It is limited to a
-   -512 .. 504 range (7 bits << 3).  */
-
-static int
-emit_ldp (uint32_t *buf, struct aarch64_register rt,
-	  struct aarch64_register rt2, struct aarch64_register rn,
-	  struct aarch64_memory_operand operand)
-{
-  return emit_load_store_pair (buf, LDP, rt, rt2, rn, operand);
-}
-
-/* Write a LDP (SIMD&VFP) instruction using Q registers into *BUF.
-
-     LDP qt, qt2, [rn, #offset]
-
-   RT and RT2 are the Q registers to store.
-   RN is the base address register.
-   OFFSET is the immediate to add to the base address.  It is limited to
-   -1024 .. 1008 range (7 bits << 4).  */
-
-static int
-emit_ldp_q_offset (uint32_t *buf, unsigned rt, unsigned rt2,
-		   struct aarch64_register rn, int32_t offset)
-{
-  uint32_t opc = ENCODE (2, 2, 30);
-  uint32_t pre_index = ENCODE (1, 1, 24);
-
-  return aarch64_emit_insn (buf, LDP_SIMD_VFP | opc | pre_index
-			    | ENCODE (offset >> 4, 7, 15)
-			    | ENCODE (rt2, 5, 10)
-			    | ENCODE (rn.num, 5, 5) | ENCODE (rt, 5, 0));
-}
-
-/* Write a STP (SIMD&VFP) instruction using Q registers into *BUF.
-
-     STP qt, qt2, [rn, #offset]
-
-   RT and RT2 are the Q registers to store.
-   RN is the base address register.
-   OFFSET is the immediate to add to the base address.  It is limited to
-   -1024 .. 1008 range (7 bits << 4).  */
-
-static int
-emit_stp_q_offset (uint32_t *buf, unsigned rt, unsigned rt2,
-		   struct aarch64_register rn, int32_t offset)
-{
-  uint32_t opc = ENCODE (2, 2, 30);
-  uint32_t pre_index = ENCODE (1, 1, 24);
-
-  return aarch64_emit_insn (buf, STP_SIMD_VFP | opc | pre_index
-			    | ENCODE (offset >> 4, 7, 15)
-			    | ENCODE (rt2, 5, 10)
-			    | ENCODE (rn.num, 5, 5) | ENCODE (rt, 5, 0));
-}
-
-/* Write a LDRH instruction into *BUF.
-
-     LDRH wt, [xn, #offset]
-     LDRH wt, [xn, #index]!
-     LDRH wt, [xn], #index
-
-   RT is the register to store.
-   RN is the base address register.
-   OFFSET is the immediate to add to the base address.  It is limited to
-   0 .. 32760 range (12 bits << 3).  */
-
-static int
-emit_ldrh (uint32_t *buf, struct aarch64_register rt,
-	   struct aarch64_register rn,
-	   struct aarch64_memory_operand operand)
-{
-  return aarch64_emit_load_store (buf, 1, LDR, rt, rn, operand);
-}
-
-/* Write a LDRB instruction into *BUF.
-
-     LDRB wt, [xn, #offset]
-     LDRB wt, [xn, #index]!
-     LDRB wt, [xn], #index
-
-   RT is the register to store.
-   RN is the base address register.
-   OFFSET is the immediate to add to the base address.  It is limited to
-   0 .. 32760 range (12 bits << 3).  */
-
-static int
-emit_ldrb (uint32_t *buf, struct aarch64_register rt,
-	   struct aarch64_register rn,
-	   struct aarch64_memory_operand operand)
-{
-  return aarch64_emit_load_store (buf, 0, LDR, rt, rn, operand);
-}
-
-
-
-/* Write a STR instruction into *BUF.
-
-     STR rt, [rn, #offset]
-     STR rt, [rn, #index]!
-     STR rt, [rn], #index
-
-   RT is the register to store.
-   RN is the base address register.
-   OFFSET is the immediate to add to the base address.  It is limited to
-   0 .. 32760 range (12 bits << 3).  */
-
-static int
-emit_str (uint32_t *buf, struct aarch64_register rt,
-	  struct aarch64_register rn,
-	  struct aarch64_memory_operand operand)
-{
-  return aarch64_emit_load_store (buf, rt.is64 ? 3 : 2, STR, rt, rn, operand);
-}
-
-/* Helper function emitting an exclusive load or store instruction.  */
-
-static int
-emit_load_store_exclusive (uint32_t *buf, uint32_t size,
-			   enum aarch64_opcodes opcode,
-			   struct aarch64_register rs,
-			   struct aarch64_register rt,
-			   struct aarch64_register rt2,
-			   struct aarch64_register rn)
-{
-  return aarch64_emit_insn (buf, opcode | ENCODE (size, 2, 30)
-			    | ENCODE (rs.num, 5, 16) | ENCODE (rt2.num, 5, 10)
-			    | ENCODE (rn.num, 5, 5) | ENCODE (rt.num, 5, 0));
-}
-
-/* Write a LAXR instruction into *BUF.
-
-     LDAXR rt, [xn]
-
-   RT is the destination register.
-   RN is the base address register.  */
-
-static int
-emit_ldaxr (uint32_t *buf, struct aarch64_register rt,
-	    struct aarch64_register rn)
-{
-  return emit_load_store_exclusive (buf, rt.is64 ? 3 : 2, LDAXR, xzr, rt,
-				    xzr, rn);
-}
-
-/* Write a STXR instruction into *BUF.
-
-     STXR ws, rt, [xn]
-
-   RS is the result register, it indicates if the store succeeded or not.
-   RT is the destination register.
-   RN is the base address register.  */
-
-static int
-emit_stxr (uint32_t *buf, struct aarch64_register rs,
-	   struct aarch64_register rt, struct aarch64_register rn)
-{
-  return emit_load_store_exclusive (buf, rt.is64 ? 3 : 2, STXR, rs, rt,
-				    xzr, rn);
-}
-
-/* Write a STLR instruction into *BUF.
-
-     STLR rt, [xn]
-
-   RT is the register to store.
-   RN is the base address register.  */
-
-static int
-emit_stlr (uint32_t *buf, struct aarch64_register rt,
-	   struct aarch64_register rn)
-{
-  return emit_load_store_exclusive (buf, rt.is64 ? 3 : 2, STLR, xzr, rt,
-				    xzr, rn);
-}
-
-/* Helper function for data processing instructions with register sources.  */
-
-static int
-emit_data_processing_reg (uint32_t *buf, uint32_t opcode,
-			  struct aarch64_register rd,
-			  struct aarch64_register rn,
-			  struct aarch64_register rm)
-{
-  uint32_t size = ENCODE (rd.is64, 1, 31);
-
-  return aarch64_emit_insn (buf, opcode | size | ENCODE (rm.num, 5, 16)
-			    | ENCODE (rn.num, 5, 5) | ENCODE (rd.num, 5, 0));
-}
-
-/* Helper function for data processing instructions taking either a register
-   or an immediate.  */
-
-static int
-emit_data_processing (uint32_t *buf, enum aarch64_opcodes opcode,
-		      struct aarch64_register rd,
-		      struct aarch64_register rn,
-		      struct aarch64_operand operand)
-{
-  uint32_t size = ENCODE (rd.is64, 1, 31);
-  /* The opcode is different for register and immediate source operands.  */
-  uint32_t operand_opcode;
-
-  if (operand.type == OPERAND_IMMEDIATE)
-    {
-      /* xxx1 000x xxxx xxxx xxxx xxxx xxxx xxxx */
-      operand_opcode = ENCODE (8, 4, 25);
-
-      return aarch64_emit_insn (buf, opcode | operand_opcode | size
-				| ENCODE (operand.imm, 12, 10)
-				| ENCODE (rn.num, 5, 5)
-				| ENCODE (rd.num, 5, 0));
-    }
-  else
-    {
-      /* xxx0 101x xxxx xxxx xxxx xxxx xxxx xxxx */
-      operand_opcode = ENCODE (5, 4, 25);
-
-      return emit_data_processing_reg (buf, opcode | operand_opcode, rd,
-				       rn, operand.reg);
-    }
-}
-
-/* Write an ADD instruction into *BUF.
-
-     ADD rd, rn, #imm
-     ADD rd, rn, rm
-
-   This function handles both an immediate and register add.
-
-   RD is the destination register.
-   RN is the input register.
-   OPERAND is the source operand, either of type OPERAND_IMMEDIATE or
-   OPERAND_REGISTER.  */
-
-static int
-emit_add (uint32_t *buf, struct aarch64_register rd,
-	  struct aarch64_register rn, struct aarch64_operand operand)
-{
-  return emit_data_processing (buf, ADD, rd, rn, operand);
-}
-
-/* Write a SUB instruction into *BUF.
-
-     SUB rd, rn, #imm
-     SUB rd, rn, rm
-
-   This function handles both an immediate and register sub.
-
-   RD is the destination register.
-   RN is the input register.
-   IMM is the immediate to substract to RN.  */
-
-static int
-emit_sub (uint32_t *buf, struct aarch64_register rd,
-	  struct aarch64_register rn, struct aarch64_operand operand)
-{
-  return emit_data_processing (buf, SUB, rd, rn, operand);
-}
-
-/* Write a MOV instruction into *BUF.
-
-     MOV rd, #imm
-     MOV rd, rm
-
-   This function handles both a wide immediate move and a register move,
-   with the condition that the source register is not xzr.  xzr and the
-   stack pointer share the same encoding and this function only supports
-   the stack pointer.
-
-   RD is the destination register.
-   OPERAND is the source operand, either of type OPERAND_IMMEDIATE or
-   OPERAND_REGISTER.  */
-
-static int
-emit_mov (uint32_t *buf, struct aarch64_register rd,
-	  struct aarch64_operand operand)
-{
-  if (operand.type == OPERAND_IMMEDIATE)
-    {
-      uint32_t size = ENCODE (rd.is64, 1, 31);
-      /* Do not shift the immediate.  */
-      uint32_t shift = ENCODE (0, 2, 21);
-
-      return aarch64_emit_insn (buf, MOV | size | shift
-				| ENCODE (operand.imm, 16, 5)
-				| ENCODE (rd.num, 5, 0));
-    }
-  else
-    return emit_add (buf, rd, operand.reg, immediate_operand (0));
-}
-
-/* Write a MOVK instruction into *BUF.
-
-     MOVK rd, #imm, lsl #shift
-
-   RD is the destination register.
-   IMM is the immediate.
-   SHIFT is the logical shift left to apply to IMM.   */
-
-static int
-emit_movk (uint32_t *buf, struct aarch64_register rd, uint32_t imm,
-	   unsigned shift)
-{
-  uint32_t size = ENCODE (rd.is64, 1, 31);
-
-  return aarch64_emit_insn (buf, MOVK | size | ENCODE (shift, 2, 21) |
-			    ENCODE (imm, 16, 5) | ENCODE (rd.num, 5, 0));
-}
-
-/* Write instructions into *BUF in order to move ADDR into a register.
-   ADDR can be a 64-bit value.
-
-   This function will emit a series of MOV and MOVK instructions, such as:
-
-     MOV  xd, #(addr)
-     MOVK xd, #(addr >> 16), lsl #16
-     MOVK xd, #(addr >> 32), lsl #32
-     MOVK xd, #(addr >> 48), lsl #48  */
-
-static int
-emit_mov_addr (uint32_t *buf, struct aarch64_register rd, CORE_ADDR addr)
-{
-  uint32_t *p = buf;
-
-  /* The MOV (wide immediate) instruction clears to top bits of the
-     register.  */
-  p += emit_mov (p, rd, immediate_operand (addr & 0xffff));
-
-  if ((addr >> 16) != 0)
-    p += emit_movk (p, rd, (addr >> 16) & 0xffff, 1);
-  else
-    return p - buf;
-
-  if ((addr >> 32) != 0)
-    p += emit_movk (p, rd, (addr >> 32) & 0xffff, 2);
-  else
-    return p - buf;
-
-  if ((addr >> 48) != 0)
-    p += emit_movk (p, rd, (addr >> 48) & 0xffff, 3);
-
-  return p - buf;
-}
-
-/* Write a SUBS instruction into *BUF.
-
-     SUBS rd, rn, rm
-
-   This instruction update the condition flags.
-
-   RD is the destination register.
-   RN and RM are the source registers.  */
-
-static int
-emit_subs (uint32_t *buf, struct aarch64_register rd,
-	   struct aarch64_register rn, struct aarch64_operand operand)
-{
-  return emit_data_processing (buf, SUBS, rd, rn, operand);
-}
-
-/* Write a CMP instruction into *BUF.
-
-     CMP rn, rm
-
-   This instruction is an alias of SUBS xzr, rn, rm.
-
-   RN and RM are the registers to compare.  */
-
-static int
-emit_cmp (uint32_t *buf, struct aarch64_register rn,
-	      struct aarch64_operand operand)
-{
-  return emit_subs (buf, xzr, rn, operand);
-}
-
-/* Write a AND instruction into *BUF.
-
-     AND rd, rn, rm
-
-   RD is the destination register.
-   RN and RM are the source registers.  */
-
-static int
-emit_and (uint32_t *buf, struct aarch64_register rd,
-	  struct aarch64_register rn, struct aarch64_register rm)
-{
-  return emit_data_processing_reg (buf, AND, rd, rn, rm);
-}
-
-/* Write a ORR instruction into *BUF.
-
-     ORR rd, rn, rm
-
-   RD is the destination register.
-   RN and RM are the source registers.  */
-
-static int
-emit_orr (uint32_t *buf, struct aarch64_register rd,
-	  struct aarch64_register rn, struct aarch64_register rm)
-{
-  return emit_data_processing_reg (buf, ORR, rd, rn, rm);
-}
-
-/* Write a ORN instruction into *BUF.
-
-     ORN rd, rn, rm
-
-   RD is the destination register.
-   RN and RM are the source registers.  */
-
-static int
-emit_orn (uint32_t *buf, struct aarch64_register rd,
-	  struct aarch64_register rn, struct aarch64_register rm)
-{
-  return emit_data_processing_reg (buf, ORN, rd, rn, rm);
-}
-
-/* Write a EOR instruction into *BUF.
-
-     EOR rd, rn, rm
-
-   RD is the destination register.
-   RN and RM are the source registers.  */
-
-static int
-emit_eor (uint32_t *buf, struct aarch64_register rd,
-	  struct aarch64_register rn, struct aarch64_register rm)
-{
-  return emit_data_processing_reg (buf, EOR, rd, rn, rm);
-}
-
-/* Write a MVN instruction into *BUF.
-
-     MVN rd, rm
-
-   This is an alias for ORN rd, xzr, rm.
-
-   RD is the destination register.
-   RM is the source register.  */
-
-static int
-emit_mvn (uint32_t *buf, struct aarch64_register rd,
-	  struct aarch64_register rm)
-{
-  return emit_orn (buf, rd, xzr, rm);
-}
-
-/* Write a LSLV instruction into *BUF.
-
-     LSLV rd, rn, rm
-
-   RD is the destination register.
-   RN and RM are the source registers.  */
-
-static int
-emit_lslv (uint32_t *buf, struct aarch64_register rd,
-	   struct aarch64_register rn, struct aarch64_register rm)
-{
-  return emit_data_processing_reg (buf, LSLV, rd, rn, rm);
-}
-
-/* Write a LSRV instruction into *BUF.
-
-     LSRV rd, rn, rm
-
-   RD is the destination register.
-   RN and RM are the source registers.  */
-
-static int
-emit_lsrv (uint32_t *buf, struct aarch64_register rd,
-	   struct aarch64_register rn, struct aarch64_register rm)
-{
-  return emit_data_processing_reg (buf, LSRV, rd, rn, rm);
-}
-
-/* Write a ASRV instruction into *BUF.
-
-     ASRV rd, rn, rm
-
-   RD is the destination register.
-   RN and RM are the source registers.  */
-
-static int
-emit_asrv (uint32_t *buf, struct aarch64_register rd,
-	   struct aarch64_register rn, struct aarch64_register rm)
-{
-  return emit_data_processing_reg (buf, ASRV, rd, rn, rm);
-}
-
-/* Write a MUL instruction into *BUF.
-
-     MUL rd, rn, rm
-
-   RD is the destination register.
-   RN and RM are the source registers.  */
-
-static int
-emit_mul (uint32_t *buf, struct aarch64_register rd,
-	  struct aarch64_register rn, struct aarch64_register rm)
-{
-  return emit_data_processing_reg (buf, MUL, rd, rn, rm);
-}
-
-/* Write a MRS instruction into *BUF.  The register size is 64-bit.
-
-     MRS xt, system_reg
-
-   RT is the destination register.
-   SYSTEM_REG is special purpose register to read.  */
-
-static int
-emit_mrs (uint32_t *buf, struct aarch64_register rt,
-	  enum aarch64_system_control_registers system_reg)
-{
-  return aarch64_emit_insn (buf, MRS | ENCODE (system_reg, 15, 5)
-			    | ENCODE (rt.num, 5, 0));
-}
-
-/* Write a MSR instruction into *BUF.  The register size is 64-bit.
-
-     MSR system_reg, xt
-
-   SYSTEM_REG is special purpose register to write.
-   RT is the input register.  */
-
-static int
-emit_msr (uint32_t *buf, enum aarch64_system_control_registers system_reg,
-	  struct aarch64_register rt)
-{
-  return aarch64_emit_insn (buf, MSR | ENCODE (system_reg, 15, 5)
-			    | ENCODE (rt.num, 5, 0));
-}
-
-/* Write a SEVL instruction into *BUF.
-
-   This is a hint instruction telling the hardware to trigger an event.  */
-
-static int
-emit_sevl (uint32_t *buf)
-{
-  return aarch64_emit_insn (buf, SEVL);
-}
-
-/* Write a WFE instruction into *BUF.
-
-   This is a hint instruction telling the hardware to wait for an event.  */
-
-static int
-emit_wfe (uint32_t *buf)
-{
-  return aarch64_emit_insn (buf, WFE);
-}
-
-/* Write a SBFM instruction into *BUF.
-
-     SBFM rd, rn, #immr, #imms
-
-   This instruction moves the bits from #immr to #imms into the
-   destination, sign extending the result.
-
-   RD is the destination register.
-   RN is the source register.
-   IMMR is the bit number to start at (least significant bit).
-   IMMS is the bit number to stop at (most significant bit).  */
-
-static int
-emit_sbfm (uint32_t *buf, struct aarch64_register rd,
-	   struct aarch64_register rn, uint32_t immr, uint32_t imms)
-{
-  uint32_t size = ENCODE (rd.is64, 1, 31);
-  uint32_t n = ENCODE (rd.is64, 1, 22);
-
-  return aarch64_emit_insn (buf, SBFM | size | n | ENCODE (immr, 6, 16)
-			    | ENCODE (imms, 6, 10) | ENCODE (rn.num, 5, 5)
-			    | ENCODE (rd.num, 5, 0));
-}
-
-/* Write a SBFX instruction into *BUF.
-
-     SBFX rd, rn, #lsb, #width
-
-   This instruction moves #width bits from #lsb into the destination, sign
-   extending the result.  This is an alias for:
-
-     SBFM rd, rn, #lsb, #(lsb + width - 1)
-
-   RD is the destination register.
-   RN is the source register.
-   LSB is the bit number to start at (least significant bit).
-   WIDTH is the number of bits to move.  */
-
-static int
-emit_sbfx (uint32_t *buf, struct aarch64_register rd,
-	   struct aarch64_register rn, uint32_t lsb, uint32_t width)
-{
-  return emit_sbfm (buf, rd, rn, lsb, lsb + width - 1);
-}
-
-/* Write a UBFM instruction into *BUF.
-
-     UBFM rd, rn, #immr, #imms
-
-   This instruction moves the bits from #immr to #imms into the
-   destination, extending the result with zeros.
-
-   RD is the destination register.
-   RN is the source register.
-   IMMR is the bit number to start at (least significant bit).
-   IMMS is the bit number to stop at (most significant bit).  */
-
-static int
-emit_ubfm (uint32_t *buf, struct aarch64_register rd,
-	   struct aarch64_register rn, uint32_t immr, uint32_t imms)
-{
-  uint32_t size = ENCODE (rd.is64, 1, 31);
-  uint32_t n = ENCODE (rd.is64, 1, 22);
-
-  return aarch64_emit_insn (buf, UBFM | size | n | ENCODE (immr, 6, 16)
-			    | ENCODE (imms, 6, 10) | ENCODE (rn.num, 5, 5)
-			    | ENCODE (rd.num, 5, 0));
-}
-
-/* Write a UBFX instruction into *BUF.
-
-     UBFX rd, rn, #lsb, #width
-
-   This instruction moves #width bits from #lsb into the destination,
-   extending the result with zeros.  This is an alias for:
-
-     UBFM rd, rn, #lsb, #(lsb + width - 1)
-
-   RD is the destination register.
-   RN is the source register.
-   LSB is the bit number to start at (least significant bit).
-   WIDTH is the number of bits to move.  */
-
-static int
-emit_ubfx (uint32_t *buf, struct aarch64_register rd,
-	   struct aarch64_register rn, uint32_t lsb, uint32_t width)
-{
-  return emit_ubfm (buf, rd, rn, lsb, lsb + width - 1);
-}
-
-/* Write a CSINC instruction into *BUF.
-
-     CSINC rd, rn, rm, cond
-
-   This instruction conditionally increments rn or rm and places the result
-   in rd.  rn is chosen is the condition is true.
-
-   RD is the destination register.
-   RN and RM are the source registers.
-   COND is the encoded condition.  */
-
-static int
-emit_csinc (uint32_t *buf, struct aarch64_register rd,
-	    struct aarch64_register rn, struct aarch64_register rm,
-	    unsigned cond)
-{
-  uint32_t size = ENCODE (rd.is64, 1, 31);
-
-  return aarch64_emit_insn (buf, CSINC | size | ENCODE (rm.num, 5, 16)
-			    | ENCODE (cond, 4, 12) | ENCODE (rn.num, 5, 5)
-			    | ENCODE (rd.num, 5, 0));
-}
-
-/* Write a CSET instruction into *BUF.
-
-     CSET rd, cond
-
-   This instruction conditionally write 1 or 0 in the destination register.
-   1 is written if the condition is true.  This is an alias for:
-
-     CSINC rd, xzr, xzr, !cond
-
-   Note that the condition needs to be inverted.
-
-   RD is the destination register.
-   RN and RM are the source registers.
-   COND is the encoded condition.  */
-
-static int
-emit_cset (uint32_t *buf, struct aarch64_register rd, unsigned cond)
-{
-  /* The least significant bit of the condition needs toggling in order to
-     invert it.  */
-  return emit_csinc (buf, rd, xzr, xzr, cond ^ 0x1);
-}
-
-/* Write LEN instructions from BUF into the inferior memory at *TO.
-
-   Note instructions are always little endian on AArch64, unlike data.  */
-
-static void
-append_insns (CORE_ADDR *to, size_t len, const uint32_t *buf)
-{
-  size_t byte_len = len * sizeof (uint32_t);
-#if (__BYTE_ORDER == __BIG_ENDIAN)
-  uint32_t *le_buf = (uint32_t *) xmalloc (byte_len);
-  size_t i;
-
-  for (i = 0; i < len; i++)
-    le_buf[i] = htole32 (buf[i]);
-
-  target_write_memory (*to, (const unsigned char *) le_buf, byte_len);
-
-  xfree (le_buf);
-#else
-  target_write_memory (*to, (const unsigned char *) buf, byte_len);
-#endif
-
-  *to += byte_len;
-}
-
-/* Sub-class of struct aarch64_insn_data, store information of
-   instruction relocation for fast tracepoint.  Visitor can
-   relocate an instruction from BASE.INSN_ADDR to NEW_ADDR and save
-   the relocated instructions in buffer pointed by INSN_PTR.  */
-
-struct aarch64_insn_relocation_data
-{
-  struct aarch64_insn_data base;
-
-  /* The new address the instruction is relocated to.  */
-  CORE_ADDR new_addr;
-  /* Pointer to the buffer of relocated instruction(s).  */
-  uint32_t *insn_ptr;
-};
-
-/* Implementation of aarch64_insn_visitor method "b".  */
-
-static void
-aarch64_ftrace_insn_reloc_b (const int is_bl, const int32_t offset,
-			     struct aarch64_insn_data *data)
-{
-  struct aarch64_insn_relocation_data *insn_reloc
-    = (struct aarch64_insn_relocation_data *) data;
-  int64_t new_offset
-    = insn_reloc->base.insn_addr - insn_reloc->new_addr + offset;
-
-  if (can_encode_int32 (new_offset, 28))
-    insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, is_bl, new_offset);
-}
-
-/* Implementation of aarch64_insn_visitor method "b_cond".  */
-
-static void
-aarch64_ftrace_insn_reloc_b_cond (const unsigned cond, const int32_t offset,
-				  struct aarch64_insn_data *data)
-{
-  struct aarch64_insn_relocation_data *insn_reloc
-    = (struct aarch64_insn_relocation_data *) data;
-  int64_t new_offset
-    = insn_reloc->base.insn_addr - insn_reloc->new_addr + offset;
-
-  if (can_encode_int32 (new_offset, 21))
-    {
-      insn_reloc->insn_ptr += emit_bcond (insn_reloc->insn_ptr, cond,
-					  new_offset);
-    }
-  else if (can_encode_int32 (new_offset, 28))
-    {
-      /* The offset is out of range for a conditional branch
-	 instruction but not for a unconditional branch.  We can use
-	 the following instructions instead:
-
-	 B.COND TAKEN    ; If cond is true, then jump to TAKEN.
-	 B NOT_TAKEN     ; Else jump over TAKEN and continue.
-	 TAKEN:
-	 B #(offset - 8)
-	 NOT_TAKEN:
-
-      */
-
-      insn_reloc->insn_ptr += emit_bcond (insn_reloc->insn_ptr, cond, 8);
-      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0, 8);
-      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0, new_offset - 8);
-    }
-}
-
-/* Implementation of aarch64_insn_visitor method "cb".  */
-
-static void
-aarch64_ftrace_insn_reloc_cb (const int32_t offset, const int is_cbnz,
-			      const unsigned rn, int is64,
-			      struct aarch64_insn_data *data)
-{
-  struct aarch64_insn_relocation_data *insn_reloc
-    = (struct aarch64_insn_relocation_data *) data;
-  int64_t new_offset
-    = insn_reloc->base.insn_addr - insn_reloc->new_addr + offset;
-
-  if (can_encode_int32 (new_offset, 21))
-    {
-      insn_reloc->insn_ptr += emit_cb (insn_reloc->insn_ptr, is_cbnz,
-				       aarch64_register (rn, is64), new_offset);
-    }
-  else if (can_encode_int32 (new_offset, 28))
-    {
-      /* The offset is out of range for a compare and branch
-	 instruction but not for a unconditional branch.  We can use
-	 the following instructions instead:
-
-	 CBZ xn, TAKEN   ; xn == 0, then jump to TAKEN.
-	 B NOT_TAKEN     ; Else jump over TAKEN and continue.
-	 TAKEN:
-	 B #(offset - 8)
-	 NOT_TAKEN:
-
-      */
-      insn_reloc->insn_ptr += emit_cb (insn_reloc->insn_ptr, is_cbnz,
-				       aarch64_register (rn, is64), 8);
-      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0, 8);
-      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0, new_offset - 8);
-    }
-}
-
-/* Implementation of aarch64_insn_visitor method "tb".  */
-
-static void
-aarch64_ftrace_insn_reloc_tb (const int32_t offset, int is_tbnz,
-			      const unsigned rt, unsigned bit,
-			      struct aarch64_insn_data *data)
-{
-  struct aarch64_insn_relocation_data *insn_reloc
-    = (struct aarch64_insn_relocation_data *) data;
-  int64_t new_offset
-    = insn_reloc->base.insn_addr - insn_reloc->new_addr + offset;
-
-  if (can_encode_int32 (new_offset, 16))
-    {
-      insn_reloc->insn_ptr += emit_tb (insn_reloc->insn_ptr, is_tbnz, bit,
-				       aarch64_register (rt, 1), new_offset);
-    }
-  else if (can_encode_int32 (new_offset, 28))
-    {
-      /* The offset is out of range for a test bit and branch
-	 instruction but not for a unconditional branch.  We can use
-	 the following instructions instead:
-
-	 TBZ xn, #bit, TAKEN ; xn[bit] == 0, then jump to TAKEN.
-	 B NOT_TAKEN         ; Else jump over TAKEN and continue.
-	 TAKEN:
-	 B #(offset - 8)
-	 NOT_TAKEN:
-
-      */
-      insn_reloc->insn_ptr += emit_tb (insn_reloc->insn_ptr, is_tbnz, bit,
-				       aarch64_register (rt, 1), 8);
-      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0, 8);
-      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0,
-				      new_offset - 8);
-    }
-}
-
-/* Implementation of aarch64_insn_visitor method "adr".  */
-
-static void
-aarch64_ftrace_insn_reloc_adr (const int32_t offset, const unsigned rd,
-			       const int is_adrp,
-			       struct aarch64_insn_data *data)
-{
-  struct aarch64_insn_relocation_data *insn_reloc
-    = (struct aarch64_insn_relocation_data *) data;
-  /* We know exactly the address the ADR{P,} instruction will compute.
-     We can just write it to the destination register.  */
-  CORE_ADDR address = data->insn_addr + offset;
-
-  if (is_adrp)
-    {
-      /* Clear the lower 12 bits of the offset to get the 4K page.  */
-      insn_reloc->insn_ptr += emit_mov_addr (insn_reloc->insn_ptr,
-					     aarch64_register (rd, 1),
-					     address & ~0xfff);
-    }
-  else
-    insn_reloc->insn_ptr += emit_mov_addr (insn_reloc->insn_ptr,
-					   aarch64_register (rd, 1), address);
-}
-
-/* Implementation of aarch64_insn_visitor method "ldr_literal".  */
-
-static void
-aarch64_ftrace_insn_reloc_ldr_literal (const int32_t offset, const int is_sw,
-				       const unsigned rt, const int is64,
-				       struct aarch64_insn_data *data)
-{
-  struct aarch64_insn_relocation_data *insn_reloc
-    = (struct aarch64_insn_relocation_data *) data;
-  CORE_ADDR address = data->insn_addr + offset;
-
-  insn_reloc->insn_ptr += emit_mov_addr (insn_reloc->insn_ptr,
-					 aarch64_register (rt, 1), address);
-
-  /* We know exactly what address to load from, and what register we
-     can use:
-
-     MOV xd, #(oldloc + offset)
-     MOVK xd, #((oldloc + offset) >> 16), lsl #16
-     ...
-
-     LDR xd, [xd] ; or LDRSW xd, [xd]
-
-  */
-
-  if (is_sw)
-    insn_reloc->insn_ptr += emit_ldrsw (insn_reloc->insn_ptr,
-					aarch64_register (rt, 1),
-					aarch64_register (rt, 1),
-					offset_memory_operand (0));
-  else
-    insn_reloc->insn_ptr += emit_ldr (insn_reloc->insn_ptr,
-				      aarch64_register (rt, is64),
-				      aarch64_register (rt, 1),
-				      offset_memory_operand (0));
-}
-
-/* Implementation of aarch64_insn_visitor method "others".  */
-
-static void
-aarch64_ftrace_insn_reloc_others (const uint32_t insn,
-				  struct aarch64_insn_data *data)
-{
-  struct aarch64_insn_relocation_data *insn_reloc
-    = (struct aarch64_insn_relocation_data *) data;
-
-  /* The instruction is not PC relative.  Just re-emit it at the new
-     location.  */
-  insn_reloc->insn_ptr += aarch64_emit_insn (insn_reloc->insn_ptr, insn);
-}
-
-static const struct aarch64_insn_visitor visitor =
-{
-  aarch64_ftrace_insn_reloc_b,
-  aarch64_ftrace_insn_reloc_b_cond,
-  aarch64_ftrace_insn_reloc_cb,
-  aarch64_ftrace_insn_reloc_tb,
-  aarch64_ftrace_insn_reloc_adr,
-  aarch64_ftrace_insn_reloc_ldr_literal,
-  aarch64_ftrace_insn_reloc_others,
-};
-
-/* Implementation of linux_target_ops method
-   "install_fast_tracepoint_jump_pad".  */
-
-static int
-aarch64_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint,
-					  CORE_ADDR tpaddr,
-					  CORE_ADDR collector,
-					  CORE_ADDR lockaddr,
-					  ULONGEST orig_size,
-					  CORE_ADDR *jump_entry,
-					  CORE_ADDR *trampoline,
-					  ULONGEST *trampoline_size,
-					  unsigned char *jjump_pad_insn,
-					  ULONGEST *jjump_pad_insn_size,
-					  CORE_ADDR *adjusted_insn_addr,
-					  CORE_ADDR *adjusted_insn_addr_end,
-					  char *err)
-{
-  uint32_t buf[256];
-  uint32_t *p = buf;
-  int64_t offset;
-  int i;
-  uint32_t insn;
-  CORE_ADDR buildaddr = *jump_entry;
-  struct aarch64_insn_relocation_data insn_data;
-
-  /* We need to save the current state on the stack both to restore it
-     later and to collect register values when the tracepoint is hit.
-
-     The saved registers are pushed in a layout that needs to be in sync
-     with aarch64_ft_collect_regmap (see linux-aarch64-ipa.c).  Later on
-     the supply_fast_tracepoint_registers function will fill in the
-     register cache from a pointer to saved registers on the stack we build
-     here.
-
-     For simplicity, we set the size of each cell on the stack to 16 bytes.
-     This way one cell can hold any register type, from system registers
-     to the 128 bit SIMD&FP registers.  Furthermore, the stack pointer
-     has to be 16 bytes aligned anyway.
-
-     Note that the CPSR register does not exist on AArch64.  Instead we
-     can access system bits describing the process state with the
-     MRS/MSR instructions, namely the condition flags.  We save them as
-     if they are part of a CPSR register because that's how GDB
-     interprets these system bits.  At the moment, only the condition
-     flags are saved in CPSR (NZCV).
-
-     Stack layout, each cell is 16 bytes (descending):
-
-     High *-------- SIMD&FP registers from 31 down to 0. --------*
-	  | q31                                                  |
-	  .                                                      .
-	  .                                                      . 32 cells
-	  .                                                      .
-	  | q0                                                   |
-	  *---- General purpose registers from 30 down to 0. ----*
-	  | x30                                                  |
-	  .                                                      .
-	  .                                                      . 31 cells
-	  .                                                      .
-	  | x0                                                   |
-	  *------------- Special purpose registers. -------------*
-	  | SP                                                   |
-	  | PC                                                   |
-	  | CPSR (NZCV)                                          | 5 cells
-	  | FPSR                                                 |
-	  | FPCR                                                 | <- SP + 16
-	  *------------- collecting_t object --------------------*
-	  | TPIDR_EL0               | struct tracepoint *        |
-     Low  *------------------------------------------------------*
-
-     After this stack is set up, we issue a call to the collector, passing
-     it the saved registers at (SP + 16).  */
-
-  /* Push SIMD&FP registers on the stack:
-
-       SUB sp, sp, #(32 * 16)
-
-       STP q30, q31, [sp, #(30 * 16)]
-       ...
-       STP q0, q1, [sp]
-
-     */
-  p += emit_sub (p, sp, sp, immediate_operand (32 * 16));
-  for (i = 30; i >= 0; i -= 2)
-    p += emit_stp_q_offset (p, i, i + 1, sp, i * 16);
-
-  /* Push general purpose registers on the stack.  Note that we do not need
-     to push x31 as it represents the xzr register and not the stack
-     pointer in a STR instruction.
-
-       SUB sp, sp, #(31 * 16)
-
-       STR x30, [sp, #(30 * 16)]
-       ...
-       STR x0, [sp]
-
-     */
-  p += emit_sub (p, sp, sp, immediate_operand (31 * 16));
-  for (i = 30; i >= 0; i -= 1)
-    p += emit_str (p, aarch64_register (i, 1), sp,
-		   offset_memory_operand (i * 16));
-
-  /* Make space for 5 more cells.
-
-       SUB sp, sp, #(5 * 16)
-
-     */
-  p += emit_sub (p, sp, sp, immediate_operand (5 * 16));
-
-
-  /* Save SP:
-
-       ADD x4, sp, #((32 + 31 + 5) * 16)
-       STR x4, [sp, #(4 * 16)]
-
-     */
-  p += emit_add (p, x4, sp, immediate_operand ((32 + 31 + 5) * 16));
-  p += emit_str (p, x4, sp, offset_memory_operand (4 * 16));
-
-  /* Save PC (tracepoint address):
-
-       MOV  x3, #(tpaddr)
-       ...
-
-       STR x3, [sp, #(3 * 16)]
-
-     */
-
-  p += emit_mov_addr (p, x3, tpaddr);
-  p += emit_str (p, x3, sp, offset_memory_operand (3 * 16));
-
-  /* Save CPSR (NZCV), FPSR and FPCR:
-
-       MRS x2, nzcv
-       MRS x1, fpsr
-       MRS x0, fpcr
-
-       STR x2, [sp, #(2 * 16)]
-       STR x1, [sp, #(1 * 16)]
-       STR x0, [sp, #(0 * 16)]
-
-     */
-  p += emit_mrs (p, x2, NZCV);
-  p += emit_mrs (p, x1, FPSR);
-  p += emit_mrs (p, x0, FPCR);
-  p += emit_str (p, x2, sp, offset_memory_operand (2 * 16));
-  p += emit_str (p, x1, sp, offset_memory_operand (1 * 16));
-  p += emit_str (p, x0, sp, offset_memory_operand (0 * 16));
-
-  /* Push the collecting_t object.  It consist of the address of the
-     tracepoint and an ID for the current thread.  We get the latter by
-     reading the tpidr_el0 system register.  It corresponds to the
-     NT_ARM_TLS register accessible with ptrace.
-
-       MOV x0, #(tpoint)
-       ...
-
-       MRS x1, tpidr_el0
-
-       STP x0, x1, [sp, #-16]!
-
-     */
-
-  p += emit_mov_addr (p, x0, tpoint);
-  p += emit_mrs (p, x1, TPIDR_EL0);
-  p += emit_stp (p, x0, x1, sp, preindex_memory_operand (-16));
-
-  /* Spin-lock:
-
-     The shared memory for the lock is at lockaddr.  It will hold zero
-     if no-one is holding the lock, otherwise it contains the address of
-     the collecting_t object on the stack of the thread which acquired it.
-
-     At this stage, the stack pointer points to this thread's collecting_t
-     object.
-
-     We use the following registers:
-     - x0: Address of the lock.
-     - x1: Pointer to collecting_t object.
-     - x2: Scratch register.
-
-       MOV x0, #(lockaddr)
-       ...
-       MOV x1, sp
-
-       ; Trigger an event local to this core.  So the following WFE
-       ; instruction is ignored.
-       SEVL
-     again:
-       ; Wait for an event.  The event is triggered by either the SEVL
-       ; or STLR instructions (store release).
-       WFE
-
-       ; Atomically read at lockaddr.  This marks the memory location as
-       ; exclusive.  This instruction also has memory constraints which
-       ; make sure all previous data reads and writes are done before
-       ; executing it.
-       LDAXR x2, [x0]
-
-       ; Try again if another thread holds the lock.
-       CBNZ x2, again
-
-       ; We can lock it!  Write the address of the collecting_t object.
-       ; This instruction will fail if the memory location is not marked
-       ; as exclusive anymore.  If it succeeds, it will remove the
-       ; exclusive mark on the memory location.  This way, if another
-       ; thread executes this instruction before us, we will fail and try
-       ; all over again.
-       STXR w2, x1, [x0]
-       CBNZ w2, again
-
-     */
-
-  p += emit_mov_addr (p, x0, lockaddr);
-  p += emit_mov (p, x1, register_operand (sp));
-
-  p += emit_sevl (p);
-  p += emit_wfe (p);
-  p += emit_ldaxr (p, x2, x0);
-  p += emit_cb (p, 1, w2, -2 * 4);
-  p += emit_stxr (p, w2, x1, x0);
-  p += emit_cb (p, 1, x2, -4 * 4);
-
-  /* Call collector (struct tracepoint *, unsigned char *):
-
-       MOV x0, #(tpoint)
-       ...
-
-       ; Saved registers start after the collecting_t object.
-       ADD x1, sp, #16
-
-       ; We use an intra-procedure-call scratch register.
-       MOV ip0, #(collector)
-       ...
-
-       ; And call back to C!
-       BLR ip0
-
-     */
-
-  p += emit_mov_addr (p, x0, tpoint);
-  p += emit_add (p, x1, sp, immediate_operand (16));
-
-  p += emit_mov_addr (p, ip0, collector);
-  p += emit_blr (p, ip0);
-
-  /* Release the lock.
-
-       MOV x0, #(lockaddr)
-       ...
-
-       ; This instruction is a normal store with memory ordering
-       ; constraints.  Thanks to this we do not have to put a data
-       ; barrier instruction to make sure all data read and writes are done
-       ; before this instruction is executed.  Furthermore, this instruction
-       ; will trigger an event, letting other threads know they can grab
-       ; the lock.
-       STLR xzr, [x0]
-
-     */
-  p += emit_mov_addr (p, x0, lockaddr);
-  p += emit_stlr (p, xzr, x0);
-
-  /* Free collecting_t object:
-
-       ADD sp, sp, #16
-
-     */
-  p += emit_add (p, sp, sp, immediate_operand (16));
-
-  /* Restore CPSR (NZCV), FPSR and FPCR.  And free all special purpose
-     registers from the stack.
-
-       LDR x2, [sp, #(2 * 16)]
-       LDR x1, [sp, #(1 * 16)]
-       LDR x0, [sp, #(0 * 16)]
-
-       MSR NZCV, x2
-       MSR FPSR, x1
-       MSR FPCR, x0
-
-       ADD sp, sp #(5 * 16)
-
-     */
-  p += emit_ldr (p, x2, sp, offset_memory_operand (2 * 16));
-  p += emit_ldr (p, x1, sp, offset_memory_operand (1 * 16));
-  p += emit_ldr (p, x0, sp, offset_memory_operand (0 * 16));
-  p += emit_msr (p, NZCV, x2);
-  p += emit_msr (p, FPSR, x1);
-  p += emit_msr (p, FPCR, x0);
-
-  p += emit_add (p, sp, sp, immediate_operand (5 * 16));
-
-  /* Pop general purpose registers:
-
-       LDR x0, [sp]
-       ...
-       LDR x30, [sp, #(30 * 16)]
-
-       ADD sp, sp, #(31 * 16)
-
-     */
-  for (i = 0; i <= 30; i += 1)
-    p += emit_ldr (p, aarch64_register (i, 1), sp,
-		   offset_memory_operand (i * 16));
-  p += emit_add (p, sp, sp, immediate_operand (31 * 16));
-
-  /* Pop SIMD&FP registers:
-
-       LDP q0, q1, [sp]
-       ...
-       LDP q30, q31, [sp, #(30 * 16)]
-
-       ADD sp, sp, #(32 * 16)
-
-     */
-  for (i = 0; i <= 30; i += 2)
-    p += emit_ldp_q_offset (p, i, i + 1, sp, i * 16);
-  p += emit_add (p, sp, sp, immediate_operand (32 * 16));
-
-  /* Write the code into the inferior memory.  */
-  append_insns (&buildaddr, p - buf, buf);
-
-  /* Now emit the relocated instruction.  */
-  *adjusted_insn_addr = buildaddr;
-  target_read_uint32 (tpaddr, &insn);
-
-  insn_data.base.insn_addr = tpaddr;
-  insn_data.new_addr = buildaddr;
-  insn_data.insn_ptr = buf;
-
-  aarch64_relocate_instruction (insn, &visitor,
-				(struct aarch64_insn_data *) &insn_data);
-
-  /* We may not have been able to relocate the instruction.  */
-  if (insn_data.insn_ptr == buf)
-    {
-      sprintf (err,
-	       "E.Could not relocate instruction from %s to %s.",
-	       core_addr_to_string_nz (tpaddr),
-	       core_addr_to_string_nz (buildaddr));
-      return 1;
-    }
-  else
-    append_insns (&buildaddr, insn_data.insn_ptr - buf, buf);
-  *adjusted_insn_addr_end = buildaddr;
-
-  /* Go back to the start of the buffer.  */
-  p = buf;
-
-  /* Emit a branch back from the jump pad.  */
-  offset = (tpaddr + orig_size - buildaddr);
-  if (!can_encode_int32 (offset, 28))
-    {
-      sprintf (err,
-	       "E.Jump back from jump pad too far from tracepoint "
-	       "(offset 0x%" PRIx64 " cannot be encoded in 28 bits).",
-	       offset);
-      return 1;
-    }
-
-  p += emit_b (p, 0, offset);
-  append_insns (&buildaddr, p - buf, buf);
-
-  /* Give the caller a branch instruction into the jump pad.  */
-  offset = (*jump_entry - tpaddr);
-  if (!can_encode_int32 (offset, 28))
-    {
-      sprintf (err,
-	       "E.Jump pad too far from tracepoint "
-	       "(offset 0x%" PRIx64 " cannot be encoded in 28 bits).",
-	       offset);
-      return 1;
-    }
-
-  emit_b ((uint32_t *) jjump_pad_insn, 0, offset);
-  *jjump_pad_insn_size = 4;
-
-  /* Return the end address of our pad.  */
-  *jump_entry = buildaddr;
-
-  return 0;
-}
-
-/* Helper function writing LEN instructions from START into
-   current_insn_ptr.  */
-
-static void
-emit_ops_insns (const uint32_t *start, int len)
-{
-  CORE_ADDR buildaddr = current_insn_ptr;
-
-  if (debug_threads)
-    debug_printf ("Adding %d instrucions at %s\n",
-		  len, paddress (buildaddr));
-
-  append_insns (&buildaddr, len, start);
-  current_insn_ptr = buildaddr;
-}
-
-/* Pop a register from the stack.  */
-
-static int
-emit_pop (uint32_t *buf, struct aarch64_register rt)
-{
-  return emit_ldr (buf, rt, sp, postindex_memory_operand (1 * 16));
-}
-
-/* Push a register on the stack.  */
-
-static int
-emit_push (uint32_t *buf, struct aarch64_register rt)
-{
-  return emit_str (buf, rt, sp, preindex_memory_operand (-1 * 16));
-}
-
-/* Implementation of emit_ops method "emit_prologue".  */
-
-static void
-aarch64_emit_prologue (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  /* This function emit a prologue for the following function prototype:
-
-     enum eval_result_type f (unsigned char *regs,
-			      ULONGEST *value);
-
-     The first argument is a buffer of raw registers.  The second
-     argument is the result of
-     evaluating the expression, which will be set to whatever is on top of
-     the stack at the end.
-
-     The stack set up by the prologue is as such:
-
-     High *------------------------------------------------------*
-	  | LR                                                   |
-	  | FP                                                   | <- FP
-	  | x1  (ULONGEST *value)                                |
-	  | x0  (unsigned char *regs)                            |
-     Low  *------------------------------------------------------*
-
-     As we are implementing a stack machine, each opcode can expand the
-     stack so we never know how far we are from the data saved by this
-     prologue.  In order to be able refer to value and regs later, we save
-     the current stack pointer in the frame pointer.  This way, it is not
-     clobbered when calling C functions.
-
-     Finally, throughout every operation, we are using register x0 as the
-     top of the stack, and x1 as a scratch register.  */
-
-  p += emit_stp (p, x0, x1, sp, preindex_memory_operand (-2 * 16));
-  p += emit_str (p, lr, sp, offset_memory_operand (3 * 8));
-  p += emit_str (p, fp, sp, offset_memory_operand (2 * 8));
-
-  p += emit_add (p, fp, sp, immediate_operand (2 * 8));
-
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_epilogue".  */
-
-static void
-aarch64_emit_epilogue (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  /* Store the result of the expression (x0) in *value.  */
-  p += emit_sub (p, x1, fp, immediate_operand (1 * 8));
-  p += emit_ldr (p, x1, x1, offset_memory_operand (0));
-  p += emit_str (p, x0, x1, offset_memory_operand (0));
-
-  /* Restore the previous state.  */
-  p += emit_add (p, sp, fp, immediate_operand (2 * 8));
-  p += emit_ldp (p, fp, lr, fp, offset_memory_operand (0));
-
-  /* Return expr_eval_no_error.  */
-  p += emit_mov (p, x0, immediate_operand (expr_eval_no_error));
-  p += emit_ret (p, lr);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_add".  */
-
-static void
-aarch64_emit_add (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_add (p, x0, x1, register_operand (x0));
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_sub".  */
-
-static void
-aarch64_emit_sub (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_sub (p, x0, x1, register_operand (x0));
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_mul".  */
-
-static void
-aarch64_emit_mul (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_mul (p, x0, x1, x0);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_lsh".  */
-
-static void
-aarch64_emit_lsh (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_lslv (p, x0, x1, x0);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_rsh_signed".  */
-
-static void
-aarch64_emit_rsh_signed (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_asrv (p, x0, x1, x0);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_rsh_unsigned".  */
-
-static void
-aarch64_emit_rsh_unsigned (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_lsrv (p, x0, x1, x0);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_ext".  */
-
-static void
-aarch64_emit_ext (int arg)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_sbfx (p, x0, x0, 0, arg);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_log_not".  */
-
-static void
-aarch64_emit_log_not (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  /* If the top of the stack is 0, replace it with 1.  Else replace it with
-     0.  */
-
-  p += emit_cmp (p, x0, immediate_operand (0));
-  p += emit_cset (p, x0, EQ);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_bit_and".  */
-
-static void
-aarch64_emit_bit_and (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_and (p, x0, x0, x1);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_bit_or".  */
-
-static void
-aarch64_emit_bit_or (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_orr (p, x0, x0, x1);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_bit_xor".  */
-
-static void
-aarch64_emit_bit_xor (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_eor (p, x0, x0, x1);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_bit_not".  */
-
-static void
-aarch64_emit_bit_not (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_mvn (p, x0, x0);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_equal".  */
-
-static void
-aarch64_emit_equal (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_cmp (p, x0, register_operand (x1));
-  p += emit_cset (p, x0, EQ);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_less_signed".  */
-
-static void
-aarch64_emit_less_signed (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_cmp (p, x1, register_operand (x0));
-  p += emit_cset (p, x0, LT);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_less_unsigned".  */
-
-static void
-aarch64_emit_less_unsigned (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_cmp (p, x1, register_operand (x0));
-  p += emit_cset (p, x0, LO);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_ref".  */
-
-static void
-aarch64_emit_ref (int size)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  switch (size)
-    {
-    case 1:
-      p += emit_ldrb (p, w0, x0, offset_memory_operand (0));
-      break;
-    case 2:
-      p += emit_ldrh (p, w0, x0, offset_memory_operand (0));
-      break;
-    case 4:
-      p += emit_ldr (p, w0, x0, offset_memory_operand (0));
-      break;
-    case 8:
-      p += emit_ldr (p, x0, x0, offset_memory_operand (0));
-      break;
-    default:
-      /* Unknown size, bail on compilation.  */
-      emit_error = 1;
-      break;
-    }
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_if_goto".  */
-
-static void
-aarch64_emit_if_goto (int *offset_p, int *size_p)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  /* The Z flag is set or cleared here.  */
-  p += emit_cmp (p, x0, immediate_operand (0));
-  /* This instruction must not change the Z flag.  */
-  p += emit_pop (p, x0);
-  /* Branch over the next instruction if x0 == 0.  */
-  p += emit_bcond (p, EQ, 8);
-
-  /* The NOP instruction will be patched with an unconditional branch.  */
-  if (offset_p)
-    *offset_p = (p - buf) * 4;
-  if (size_p)
-    *size_p = 4;
-  p += emit_nop (p);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_goto".  */
-
-static void
-aarch64_emit_goto (int *offset_p, int *size_p)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  /* The NOP instruction will be patched with an unconditional branch.  */
-  if (offset_p)
-    *offset_p = 0;
-  if (size_p)
-    *size_p = 4;
-  p += emit_nop (p);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "write_goto_address".  */
-
-void
-aarch64_write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
-{
-  uint32_t insn;
-
-  emit_b (&insn, 0, to - from);
-  append_insns (&from, 1, &insn);
-}
-
-/* Implementation of emit_ops method "emit_const".  */
-
-static void
-aarch64_emit_const (LONGEST num)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_mov_addr (p, x0, num);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_call".  */
-
-static void
-aarch64_emit_call (CORE_ADDR fn)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_mov_addr (p, ip0, fn);
-  p += emit_blr (p, ip0);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_reg".  */
-
-static void
-aarch64_emit_reg (int reg)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  /* Set x0 to unsigned char *regs.  */
-  p += emit_sub (p, x0, fp, immediate_operand (2 * 8));
-  p += emit_ldr (p, x0, x0, offset_memory_operand (0));
-  p += emit_mov (p, x1, immediate_operand (reg));
-
-  emit_ops_insns (buf, p - buf);
-
-  aarch64_emit_call (get_raw_reg_func_addr ());
-}
-
-/* Implementation of emit_ops method "emit_pop".  */
-
-static void
-aarch64_emit_pop (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x0);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_stack_flush".  */
-
-static void
-aarch64_emit_stack_flush (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_push (p, x0);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_zero_ext".  */
-
-static void
-aarch64_emit_zero_ext (int arg)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_ubfx (p, x0, x0, 0, arg);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_swap".  */
-
-static void
-aarch64_emit_swap (void)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_ldr (p, x1, sp, offset_memory_operand (0 * 16));
-  p += emit_str (p, x0, sp, offset_memory_operand (0 * 16));
-  p += emit_mov (p, x0, register_operand (x1));
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_stack_adjust".  */
-
-static void
-aarch64_emit_stack_adjust (int n)
-{
-  /* This is not needed with our design.  */
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_add (p, sp, sp, immediate_operand (n * 16));
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_int_call_1".  */
-
-static void
-aarch64_emit_int_call_1 (CORE_ADDR fn, int arg1)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_mov (p, x0, immediate_operand (arg1));
-
-  emit_ops_insns (buf, p - buf);
-
-  aarch64_emit_call (fn);
-}
-
-/* Implementation of emit_ops method "emit_void_call_2".  */
-
-static void
-aarch64_emit_void_call_2 (CORE_ADDR fn, int arg1)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  /* Push x0 on the stack.  */
-  aarch64_emit_stack_flush ();
-
-  /* Setup arguments for the function call:
-
-     x0: arg1
-     x1: top of the stack
-
-       MOV x1, x0
-       MOV x0, #arg1  */
-
-  p += emit_mov (p, x1, register_operand (x0));
-  p += emit_mov (p, x0, immediate_operand (arg1));
-
-  emit_ops_insns (buf, p - buf);
-
-  aarch64_emit_call (fn);
-
-  /* Restore x0.  */
-  aarch64_emit_pop ();
-}
-
-/* Implementation of emit_ops method "emit_eq_goto".  */
-
-static void
-aarch64_emit_eq_goto (int *offset_p, int *size_p)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_cmp (p, x1, register_operand (x0));
-  /* Branch over the next instruction if x0 != x1.  */
-  p += emit_bcond (p, NE, 8);
-  /* The NOP instruction will be patched with an unconditional branch.  */
-  if (offset_p)
-    *offset_p = (p - buf) * 4;
-  if (size_p)
-    *size_p = 4;
-  p += emit_nop (p);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_ne_goto".  */
-
-static void
-aarch64_emit_ne_goto (int *offset_p, int *size_p)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_cmp (p, x1, register_operand (x0));
-  /* Branch over the next instruction if x0 == x1.  */
-  p += emit_bcond (p, EQ, 8);
-  /* The NOP instruction will be patched with an unconditional branch.  */
-  if (offset_p)
-    *offset_p = (p - buf) * 4;
-  if (size_p)
-    *size_p = 4;
-  p += emit_nop (p);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_lt_goto".  */
-
-static void
-aarch64_emit_lt_goto (int *offset_p, int *size_p)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_cmp (p, x1, register_operand (x0));
-  /* Branch over the next instruction if x0 >= x1.  */
-  p += emit_bcond (p, GE, 8);
-  /* The NOP instruction will be patched with an unconditional branch.  */
-  if (offset_p)
-    *offset_p = (p - buf) * 4;
-  if (size_p)
-    *size_p = 4;
-  p += emit_nop (p);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_le_goto".  */
-
-static void
-aarch64_emit_le_goto (int *offset_p, int *size_p)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_cmp (p, x1, register_operand (x0));
-  /* Branch over the next instruction if x0 > x1.  */
-  p += emit_bcond (p, GT, 8);
-  /* The NOP instruction will be patched with an unconditional branch.  */
-  if (offset_p)
-    *offset_p = (p - buf) * 4;
-  if (size_p)
-    *size_p = 4;
-  p += emit_nop (p);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_gt_goto".  */
-
-static void
-aarch64_emit_gt_goto (int *offset_p, int *size_p)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_cmp (p, x1, register_operand (x0));
-  /* Branch over the next instruction if x0 <= x1.  */
-  p += emit_bcond (p, LE, 8);
-  /* The NOP instruction will be patched with an unconditional branch.  */
-  if (offset_p)
-    *offset_p = (p - buf) * 4;
-  if (size_p)
-    *size_p = 4;
-  p += emit_nop (p);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-/* Implementation of emit_ops method "emit_ge_got".  */
-
-static void
-aarch64_emit_ge_got (int *offset_p, int *size_p)
-{
-  uint32_t buf[16];
-  uint32_t *p = buf;
-
-  p += emit_pop (p, x1);
-  p += emit_cmp (p, x1, register_operand (x0));
-  /* Branch over the next instruction if x0 <= x1.  */
-  p += emit_bcond (p, LT, 8);
-  /* The NOP instruction will be patched with an unconditional branch.  */
-  if (offset_p)
-    *offset_p = (p - buf) * 4;
-  if (size_p)
-    *size_p = 4;
-  p += emit_nop (p);
-
-  emit_ops_insns (buf, p - buf);
-}
-
-static struct emit_ops aarch64_emit_ops_impl =
-{
-  aarch64_emit_prologue,
-  aarch64_emit_epilogue,
-  aarch64_emit_add,
-  aarch64_emit_sub,
-  aarch64_emit_mul,
-  aarch64_emit_lsh,
-  aarch64_emit_rsh_signed,
-  aarch64_emit_rsh_unsigned,
-  aarch64_emit_ext,
-  aarch64_emit_log_not,
-  aarch64_emit_bit_and,
-  aarch64_emit_bit_or,
-  aarch64_emit_bit_xor,
-  aarch64_emit_bit_not,
-  aarch64_emit_equal,
-  aarch64_emit_less_signed,
-  aarch64_emit_less_unsigned,
-  aarch64_emit_ref,
-  aarch64_emit_if_goto,
-  aarch64_emit_goto,
-  aarch64_write_goto_address,
-  aarch64_emit_const,
-  aarch64_emit_call,
-  aarch64_emit_reg,
-  aarch64_emit_pop,
-  aarch64_emit_stack_flush,
-  aarch64_emit_zero_ext,
-  aarch64_emit_swap,
-  aarch64_emit_stack_adjust,
-  aarch64_emit_int_call_1,
-  aarch64_emit_void_call_2,
-  aarch64_emit_eq_goto,
-  aarch64_emit_ne_goto,
-  aarch64_emit_lt_goto,
-  aarch64_emit_le_goto,
-  aarch64_emit_gt_goto,
-  aarch64_emit_ge_got,
-};
-
-/* Implementation of linux_target_ops method "emit_ops".  */
-
-static struct emit_ops *
-aarch64_emit_ops (void)
-{
-  return &aarch64_emit_ops_impl;
-}
-
-/* Implementation of linux_target_ops method
-   "get_min_fast_tracepoint_insn_len".  */
-
-static int
-aarch64_get_min_fast_tracepoint_insn_len (void)
-{
-  return 4;
-}
-
-/* Implementation of linux_target_ops method "supports_range_stepping".  */
-
-static int
-aarch64_supports_range_stepping (void)
-{
-  return 1;
-}
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-aarch64_sw_breakpoint_from_kind (int kind, int *size)
-{
-  if (is_64bit_tdesc ())
-    {
-      *size = aarch64_breakpoint_len;
-      return aarch64_breakpoint;
-    }
-  else
-    return arm_sw_breakpoint_from_kind (kind, size);
-}
-
-/* Implementation of linux_target_ops method "breakpoint_kind_from_pc".  */
-
-static int
-aarch64_breakpoint_kind_from_pc (CORE_ADDR *pcptr)
-{
-  if (is_64bit_tdesc ())
-    return aarch64_breakpoint_len;
-  else
-    return arm_breakpoint_kind_from_pc (pcptr);
-}
-
-/* Implementation of the linux_target_ops method
-   "breakpoint_kind_from_current_state".  */
-
-static int
-aarch64_breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
-{
-  if (is_64bit_tdesc ())
-    return aarch64_breakpoint_len;
-  else
-    return arm_breakpoint_kind_from_current_state (pcptr);
-}
-
-/* Support for hardware single step.  */
-
-static int
-aarch64_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-struct linux_target_ops the_low_target =
-{
-  aarch64_arch_setup,
-  aarch64_regs_info,
-  NULL, /* cannot_fetch_register */
-  NULL, /* cannot_store_register */
-  NULL, /* fetch_register */
-  aarch64_get_pc,
-  aarch64_set_pc,
-  aarch64_breakpoint_kind_from_pc,
-  aarch64_sw_breakpoint_from_kind,
-  NULL, /* get_next_pcs */
-  0,    /* decr_pc_after_break */
-  aarch64_breakpoint_at,
-  aarch64_supports_z_point_type,
-  aarch64_insert_point,
-  aarch64_remove_point,
-  aarch64_stopped_by_watchpoint,
-  aarch64_stopped_data_address,
-  NULL, /* collect_ptrace_register */
-  NULL, /* supply_ptrace_register */
-  aarch64_linux_siginfo_fixup,
-  aarch64_linux_new_process,
-  aarch64_linux_delete_process,
-  aarch64_linux_new_thread,
-  aarch64_linux_delete_thread,
-  aarch64_linux_new_fork,
-  aarch64_linux_prepare_to_resume,
-  NULL, /* process_qsupported */
-  aarch64_supports_tracepoints,
-  aarch64_get_thread_area,
-  aarch64_install_fast_tracepoint_jump_pad,
-  aarch64_emit_ops,
-  aarch64_get_min_fast_tracepoint_insn_len,
-  aarch64_supports_range_stepping,
-  aarch64_breakpoint_kind_from_current_state,
-  aarch64_supports_hardware_single_step,
-  aarch64_get_syscall_trapinfo,
-};
-
-void
-initialize_low_arch (void)
-{
-  initialize_low_arch_aarch32 ();
-
-  initialize_regsets_info (&aarch64_regsets_info);
-  initialize_regsets_info (&aarch64_sve_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch64-tdesc.c ./gdb/gdbserver/linux-aarch64-tdesc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch64-tdesc.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-aarch64-tdesc.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,57 +0,0 @@
-/* GNU/Linux/aarch64 specific target description, for the remote server
-   for GDB.
-   Copyright (C) 2017-2020 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 "server.h"
-#include "tdesc.h"
-#include "arch/aarch64.h"
-#include "linux-aarch32-low.h"
-#include <inttypes.h>
-
-/* All possible aarch64 target descriptors.  */
-struct target_desc *tdesc_aarch64_list[AARCH64_MAX_SVE_VQ + 1][2/*pauth*/];
-
-/* Create the aarch64 target description.  */
-
-const target_desc *
-aarch64_linux_read_description (uint64_t vq, bool pauth_p)
-{
-  if (vq > AARCH64_MAX_SVE_VQ)
-    error (_("VQ is %" PRIu64 ", maximum supported value is %d"), vq,
-	   AARCH64_MAX_SVE_VQ);
-
-  struct target_desc *tdesc = tdesc_aarch64_list[vq][pauth_p];
-
-  if (tdesc == NULL)
-    {
-      tdesc = aarch64_create_target_description (vq, pauth_p);
-
-      static const char *expedite_regs_aarch64[] = { "x29", "sp", "pc", NULL };
-      static const char *expedite_regs_aarch64_sve[] = { "x29", "sp", "pc",
-							 "vg", NULL };
-
-      if (vq == 0)
-	init_target_desc (tdesc, expedite_regs_aarch64);
-      else
-	init_target_desc (tdesc, expedite_regs_aarch64_sve);
-
-      tdesc_aarch64_list[vq][pauth_p] = tdesc;
-    }
-
-  return tdesc;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch64-tdesc.h ./gdb/gdbserver/linux-aarch64-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-aarch64-tdesc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-aarch64-tdesc.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,25 +0,0 @@
-/* Low level support for aarch64, shared between gdbserver and IPA.
-
-   Copyright (C) 2016-2020 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 GDBSERVER_LINUX_AARCH64_TDESC_H
-#define GDBSERVER_LINUX_AARCH64_TDESC_H
-
-const target_desc * aarch64_linux_read_description (uint64_t vq, bool pauth_p);
-
-#endif /* GDBSERVER_LINUX_AARCH64_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-amd64-ipa.c ./gdb/gdbserver/linux-amd64-ipa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-amd64-ipa.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-amd64-ipa.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,289 +0,0 @@
-/* GNU/Linux/x86-64 specific low level interface, for the in-process
-   agent library for GDB.
-
-   Copyright (C) 2010-2020 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 "server.h"
-#include <sys/mman.h>
-#include "tracepoint.h"
-#include "linux-x86-tdesc.h"
-#include "gdbsupport/x86-xstate.h"
-
-/* Defined in auto-generated file amd64-linux.c.  */
-void init_registers_amd64_linux (void);
-extern const struct target_desc *tdesc_amd64_linux;
-
-/* fast tracepoints collect registers.  */
-
-#define FT_CR_RIP 0
-#define FT_CR_EFLAGS 1
-#define FT_CR_R8 2
-#define FT_CR_R9 3
-#define FT_CR_R10 4
-#define FT_CR_R11 5
-#define FT_CR_R12 6
-#define FT_CR_R13 7
-#define FT_CR_R14 8
-#define FT_CR_R15 9
-#define FT_CR_RAX 10
-#define FT_CR_RBX 11
-#define FT_CR_RCX 12
-#define FT_CR_RDX 13
-#define FT_CR_RSI 14
-#define FT_CR_RDI 15
-#define FT_CR_RBP 16
-#define FT_CR_RSP 17
-
-static const int x86_64_ft_collect_regmap[] = {
-  FT_CR_RAX * 8, FT_CR_RBX * 8, FT_CR_RCX * 8, FT_CR_RDX * 8,
-  FT_CR_RSI * 8, FT_CR_RDI * 8, FT_CR_RBP * 8, FT_CR_RSP * 8,
-  FT_CR_R8 * 8,  FT_CR_R9 * 8,  FT_CR_R10 * 8, FT_CR_R11 * 8,
-  FT_CR_R12 * 8, FT_CR_R13 * 8, FT_CR_R14 * 8, FT_CR_R15 * 8,
-  FT_CR_RIP * 8, FT_CR_EFLAGS * 8
-};
-
-#define X86_64_NUM_FT_COLLECT_GREGS \
-  (sizeof (x86_64_ft_collect_regmap) / sizeof(x86_64_ft_collect_regmap[0]))
-
-void
-supply_fast_tracepoint_registers (struct regcache *regcache,
-				  const unsigned char *buf)
-{
-  int i;
-
-  for (i = 0; i < X86_64_NUM_FT_COLLECT_GREGS; i++)
-    supply_register (regcache, i,
-		     ((char *) buf) + x86_64_ft_collect_regmap[i]);
-}
-
-ULONGEST
-get_raw_reg (const unsigned char *raw_regs, int regnum)
-{
-  if (regnum >= X86_64_NUM_FT_COLLECT_GREGS)
-    return 0;
-
-  return *(ULONGEST *) (raw_regs + x86_64_ft_collect_regmap[regnum]);
-}
-
-#ifdef HAVE_UST
-
-#include <ust/processor.h>
-
-/* "struct registers" is the UST object type holding the registers at
-   the time of the static tracepoint marker call.  This doesn't
-   contain RIP, but we know what it must have been (the marker
-   address).  */
-
-#define ST_REGENTRY(REG)			\
-  {						\
-    offsetof (struct registers, REG),		\
-    sizeof (((struct registers *) NULL)->REG)	\
-  }
-
-static struct
-{
-  int offset;
-  int size;
-} x86_64_st_collect_regmap[] =
-  {
-    ST_REGENTRY(rax),
-    ST_REGENTRY(rbx),
-    ST_REGENTRY(rcx),
-    ST_REGENTRY(rdx),
-    ST_REGENTRY(rsi),
-    ST_REGENTRY(rdi),
-    ST_REGENTRY(rbp),
-    ST_REGENTRY(rsp),
-    ST_REGENTRY(r8),
-    ST_REGENTRY(r9),
-    ST_REGENTRY(r10),
-    ST_REGENTRY(r11),
-    ST_REGENTRY(r12),
-    ST_REGENTRY(r13),
-    ST_REGENTRY(r14),
-    ST_REGENTRY(r15),
-    { -1, 0 },
-    ST_REGENTRY(rflags),
-    ST_REGENTRY(cs),
-    ST_REGENTRY(ss),
-  };
-
-#define X86_64_NUM_ST_COLLECT_GREGS \
-  (sizeof (x86_64_st_collect_regmap) / sizeof (x86_64_st_collect_regmap[0]))
-
-/* GDB's RIP register number.  */
-#define AMD64_RIP_REGNUM 16
-
-void
-supply_static_tracepoint_registers (struct regcache *regcache,
-				    const unsigned char *buf,
-				    CORE_ADDR pc)
-{
-  int i;
-  unsigned long newpc = pc;
-
-  supply_register (regcache, AMD64_RIP_REGNUM, &newpc);
-
-  for (i = 0; i < X86_64_NUM_ST_COLLECT_GREGS; i++)
-    if (x86_64_st_collect_regmap[i].offset != -1)
-      {
-	switch (x86_64_st_collect_regmap[i].size)
-	  {
-	  case 8:
-	    supply_register (regcache, i,
-			     ((char *) buf)
-			     + x86_64_st_collect_regmap[i].offset);
-	    break;
-	  case 2:
-	    {
-	      unsigned long reg
-		= * (short *) (((char *) buf)
-			       + x86_64_st_collect_regmap[i].offset);
-	      reg &= 0xffff;
-	      supply_register (regcache, i, &reg);
-	    }
-	    break;
-	  default:
-	    internal_error (__FILE__, __LINE__,
-			    "unhandled register size: %d",
-			    x86_64_st_collect_regmap[i].size);
-	    break;
-	  }
-      }
-}
-
-#endif /* HAVE_UST */
-
-#if !defined __ILP32__
-/* Map the tdesc index to xcr0 mask.  */
-static uint64_t idx2mask[X86_TDESC_LAST] = {
-  X86_XSTATE_X87_MASK,
-  X86_XSTATE_SSE_MASK,
-  X86_XSTATE_AVX_MASK,
-  X86_XSTATE_MPX_MASK,
-  X86_XSTATE_AVX_MPX_MASK,
-  X86_XSTATE_AVX_AVX512_MASK,
-  X86_XSTATE_AVX_MPX_AVX512_PKU_MASK,
-};
-#endif
-
-/* Return target_desc to use for IPA, given the tdesc index passed by
-   gdbserver.  */
-
-const struct target_desc *
-get_ipa_tdesc (int idx)
-{
-  if (idx >= X86_TDESC_LAST)
-    {
-      internal_error (__FILE__, __LINE__,
-		      "unknown ipa tdesc index: %d", idx);
-    }
-
-#if defined __ILP32__
-  switch (idx)
-    {
-    case X86_TDESC_SSE:
-      return amd64_linux_read_description (X86_XSTATE_SSE_MASK, true);
-    case X86_TDESC_AVX:
-      return amd64_linux_read_description (X86_XSTATE_AVX_MASK, true);
-    case X86_TDESC_AVX_AVX512:
-      return amd64_linux_read_description (X86_XSTATE_AVX_AVX512_MASK, true);
-    default:
-      break;
-    }
-#else
-  return amd64_linux_read_description (idx2mask[idx], false);
-#endif
-
-  internal_error (__FILE__, __LINE__,
-		  "unknown ipa tdesc index: %d", idx);
-}
-
-/* Allocate buffer for the jump pads.  The branch instruction has a
-   reach of +/- 31-bit, and the executable is loaded at low addresses.
-
-   64-bit: Use MAP_32BIT to allocate in the first 2GB.  Shared
-   libraries, being allocated at the top, are unfortunately out of
-   luck.
-
-   x32: Since MAP_32BIT is 64-bit only, do the placement manually.
-   Try allocating at '0x80000000 - SIZE' initially, decreasing until
-   we hit a free area.  This ensures the executable is fully covered,
-   and is as close as possible to the shared libraries, which are
-   usually mapped at the top of the first 4GB of the address space.
-*/
-
-void *
-alloc_jump_pad_buffer (size_t size)
-{
-#if __ILP32__
-  uintptr_t addr;
-  int pagesize;
-
-  pagesize = sysconf (_SC_PAGE_SIZE);
-  if (pagesize == -1)
-    perror_with_name ("sysconf");
-
-  addr = 0x80000000 - size;
-
-  /* size should already be page-aligned, but this can't hurt.  */
-  addr &= ~(pagesize - 1);
-
-  /* Search for a free area.  If we hit 0, we're out of luck.  */
-  for (; addr; addr -= pagesize)
-    {
-      void *res;
-
-      /* No MAP_FIXED - we don't want to zap someone's mapping.  */
-      res = mmap ((void *) addr, size,
-		  PROT_READ | PROT_WRITE | PROT_EXEC,
-		  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-
-      /* If we got what we wanted, return.  */
-      if ((uintptr_t) res == addr)
-	return res;
-
-      /* If we got a mapping, but at a wrong address, undo it.  */
-      if (res != MAP_FAILED)
-	munmap (res, size);
-    }
-
-  return NULL;
-#else
-  void *res = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
-		    MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0);
-
-  if (res == MAP_FAILED)
-    return NULL;
-
-  return res;
-#endif
-}
-
-void
-initialize_low_tracepoint (void)
-{
-#if defined __ILP32__
-  amd64_linux_read_description (X86_XSTATE_SSE_MASK, true);
-  amd64_linux_read_description (X86_XSTATE_AVX_MASK, true);
-  amd64_linux_read_description (X86_XSTATE_AVX_AVX512_MASK, true);
-#else
-  for (auto i = 0; i < X86_TDESC_LAST; i++)
-    amd64_linux_read_description (idx2mask[i], false);
-#endif
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-arm-low.c ./gdb/gdbserver/linux-arm-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-arm-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-arm-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,1052 +0,0 @@
-/* GNU/Linux/ARM specific low level interface, for the remote server for GDB.
-   Copyright (C) 1995-2020 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 "server.h"
-#include "linux-low.h"
-#include "arch/arm.h"
-#include "arch/arm-linux.h"
-#include "arch/arm-get-next-pcs.h"
-#include "linux-aarch32-low.h"
-#include "linux-aarch32-tdesc.h"
-#include "linux-arm-tdesc.h"
-
-#include <sys/uio.h>
-/* Don't include elf.h if linux/elf.h got included by gdb_proc_service.h.
-   On Bionic elf.h and linux/elf.h have conflicting definitions.  */
-#ifndef ELFMAG0
-#include <elf.h>
-#endif
-#include "nat/gdb_ptrace.h"
-#include <signal.h>
-#include <sys/syscall.h>
-
-#ifndef PTRACE_GET_THREAD_AREA
-#define PTRACE_GET_THREAD_AREA 22
-#endif
-
-#ifndef PTRACE_GETWMMXREGS
-# define PTRACE_GETWMMXREGS 18
-# define PTRACE_SETWMMXREGS 19
-#endif
-
-#ifndef PTRACE_GETVFPREGS
-# define PTRACE_GETVFPREGS 27
-# define PTRACE_SETVFPREGS 28
-#endif
-
-#ifndef PTRACE_GETHBPREGS
-#define PTRACE_GETHBPREGS 29
-#define PTRACE_SETHBPREGS 30
-#endif
-
-/* Information describing the hardware breakpoint capabilities.  */
-static struct
-{
-  unsigned char arch;
-  unsigned char max_wp_length;
-  unsigned char wp_count;
-  unsigned char bp_count;
-} arm_linux_hwbp_cap;
-
-/* Enum describing the different types of ARM hardware break-/watch-points.  */
-typedef enum
-{
-  arm_hwbp_break = 0,
-  arm_hwbp_load = 1,
-  arm_hwbp_store = 2,
-  arm_hwbp_access = 3
-} arm_hwbp_type;
-
-/* Type describing an ARM Hardware Breakpoint Control register value.  */
-typedef unsigned int arm_hwbp_control_t;
-
-/* Structure used to keep track of hardware break-/watch-points.  */
-struct arm_linux_hw_breakpoint
-{
-  /* Address to break on, or being watched.  */
-  unsigned int address;
-  /* Control register for break-/watch- point.  */
-  arm_hwbp_control_t control;
-};
-
-/* Since we cannot dynamically allocate subfields of arch_process_info,
-   assume a maximum number of supported break-/watchpoints.  */
-#define MAX_BPTS 32
-#define MAX_WPTS 32
-
-/* Per-process arch-specific data we want to keep.  */
-struct arch_process_info
-{
-  /* Hardware breakpoints for this process.  */
-  struct arm_linux_hw_breakpoint bpts[MAX_BPTS];
-  /* Hardware watchpoints for this process.  */
-  struct arm_linux_hw_breakpoint wpts[MAX_WPTS];
-};
-
-/* Per-thread arch-specific data we want to keep.  */
-struct arch_lwp_info
-{
-  /* Non-zero if our copy differs from what's recorded in the thread.  */
-  char bpts_changed[MAX_BPTS];
-  char wpts_changed[MAX_WPTS];
-  /* Cached stopped data address.  */
-  CORE_ADDR stopped_data_address;
-};
-
-/* These are in <asm/elf.h> in current kernels.  */
-#define HWCAP_VFP       64
-#define HWCAP_IWMMXT    512
-#define HWCAP_NEON      4096
-#define HWCAP_VFPv3     8192
-#define HWCAP_VFPv3D16  16384
-
-#ifdef HAVE_SYS_REG_H
-#include <sys/reg.h>
-#endif
-
-#define arm_num_regs 26
-
-static int arm_regmap[] = {
-  0, 4, 8, 12, 16, 20, 24, 28,
-  32, 36, 40, 44, 48, 52, 56, 60,
-  -1, -1, -1, -1, -1, -1, -1, -1, -1,
-  64
-};
-
-/* Forward declarations needed for get_next_pcs ops.  */
-static ULONGEST get_next_pcs_read_memory_unsigned_integer (CORE_ADDR memaddr,
-							   int len,
-							   int byte_order);
-
-static CORE_ADDR get_next_pcs_addr_bits_remove (struct arm_get_next_pcs *self,
-						CORE_ADDR val);
-
-static CORE_ADDR get_next_pcs_syscall_next_pc (struct arm_get_next_pcs *self);
-
-static int get_next_pcs_is_thumb (struct arm_get_next_pcs *self);
-
-/* get_next_pcs operations.  */
-static struct arm_get_next_pcs_ops get_next_pcs_ops = {
-  get_next_pcs_read_memory_unsigned_integer,
-  get_next_pcs_syscall_next_pc,
-  get_next_pcs_addr_bits_remove,
-  get_next_pcs_is_thumb,
-  arm_linux_get_next_pcs_fixup,
-};
-
-static int
-arm_cannot_store_register (int regno)
-{
-  return (regno >= arm_num_regs);
-}
-
-static int
-arm_cannot_fetch_register (int regno)
-{
-  return (regno >= arm_num_regs);
-}
-
-static void
-arm_fill_wmmxregset (struct regcache *regcache, void *buf)
-{
-  if (arm_linux_get_tdesc_fp_type (regcache->tdesc) != ARM_FP_TYPE_IWMMXT)
-    return;
-
-  for (int i = 0; i < 16; i++)
-    collect_register (regcache, arm_num_regs + i, (char *) buf + i * 8);
-
-  /* We only have access to wcssf, wcasf, and wcgr0-wcgr3.  */
-  for (int i = 0; i < 6; i++)
-    collect_register (regcache, arm_num_regs + i + 16,
-		      (char *) buf + 16 * 8 + i * 4);
-}
-
-static void
-arm_store_wmmxregset (struct regcache *regcache, const void *buf)
-{
-  if (arm_linux_get_tdesc_fp_type (regcache->tdesc) != ARM_FP_TYPE_IWMMXT)
-    return;
-
-  for (int i = 0; i < 16; i++)
-    supply_register (regcache, arm_num_regs + i, (char *) buf + i * 8);
-
-  /* We only have access to wcssf, wcasf, and wcgr0-wcgr3.  */
-  for (int i = 0; i < 6; i++)
-    supply_register (regcache, arm_num_regs + i + 16,
-		     (char *) buf + 16 * 8 + i * 4);
-}
-
-static void
-arm_fill_vfpregset (struct regcache *regcache, void *buf)
-{
-  int num;
-
-  if (is_aarch32_linux_description (regcache->tdesc))
-    num = 32;
-  else
-    {
-      arm_fp_type fp_type = arm_linux_get_tdesc_fp_type (regcache->tdesc);
-
-      if (fp_type == ARM_FP_TYPE_VFPV3)
-	num = 32;
-      else if (fp_type == ARM_FP_TYPE_VFPV2)
-	num = 16;
-      else
-	return;
-    }
-
-  arm_fill_vfpregset_num (regcache, buf, num);
-}
-
-/* Wrapper of UNMAKE_THUMB_ADDR for get_next_pcs.  */
-static CORE_ADDR
-get_next_pcs_addr_bits_remove (struct arm_get_next_pcs *self, CORE_ADDR val)
-{
-  return UNMAKE_THUMB_ADDR (val);
-}
-
-static void
-arm_store_vfpregset (struct regcache *regcache, const void *buf)
-{
-  int num;
-
-  if (is_aarch32_linux_description (regcache->tdesc))
-    num = 32;
-  else
-    {
-      arm_fp_type fp_type = arm_linux_get_tdesc_fp_type (regcache->tdesc);
-
-      if (fp_type == ARM_FP_TYPE_VFPV3)
-	num = 32;
-      else if (fp_type == ARM_FP_TYPE_VFPV2)
-	num = 16;
-      else
-	return;
-    }
-
-  arm_store_vfpregset_num (regcache, buf, num);
-}
-
-/* Wrapper of arm_is_thumb_mode for get_next_pcs.  */
-static int
-get_next_pcs_is_thumb (struct arm_get_next_pcs *self)
-{
-  return arm_is_thumb_mode ();
-}
-
-/* Read memory from the inferior.
-   BYTE_ORDER is ignored and there to keep compatiblity with GDB's
-   read_memory_unsigned_integer. */
-static ULONGEST
-get_next_pcs_read_memory_unsigned_integer (CORE_ADDR memaddr,
-					   int len,
-					   int byte_order)
-{
-  ULONGEST res;
-
-  res = 0;
-  target_read_memory (memaddr, (unsigned char *) &res, len);
-
-  return res;
-}
-
-/* Fetch the thread-local storage pointer for libthread_db.  */
-
-ps_err_e
-ps_get_thread_area (struct ps_prochandle *ph,
-		    lwpid_t lwpid, int idx, void **base)
-{
-  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
-    return PS_ERR;
-
-  /* IDX is the bias from the thread pointer to the beginning of the
-     thread descriptor.  It has to be subtracted due to implementation
-     quirks in libthread_db.  */
-  *base = (void *) ((char *)*base - idx);
-
-  return PS_OK;
-}
-
-
-/* Query Hardware Breakpoint information for the target we are attached to
-   (using PID as ptrace argument) and set up arm_linux_hwbp_cap.  */
-static void
-arm_linux_init_hwbp_cap (int pid)
-{
-  unsigned int val;
-
-  if (ptrace (PTRACE_GETHBPREGS, pid, 0, &val) < 0)
-    return;
-
-  arm_linux_hwbp_cap.arch = (unsigned char)((val >> 24) & 0xff);
-  if (arm_linux_hwbp_cap.arch == 0)
-    return;
-
-  arm_linux_hwbp_cap.max_wp_length = (unsigned char)((val >> 16) & 0xff);
-  arm_linux_hwbp_cap.wp_count = (unsigned char)((val >> 8) & 0xff);
-  arm_linux_hwbp_cap.bp_count = (unsigned char)(val & 0xff);
-
-  if (arm_linux_hwbp_cap.wp_count > MAX_WPTS)
-    internal_error (__FILE__, __LINE__, "Unsupported number of watchpoints");
-  if (arm_linux_hwbp_cap.bp_count > MAX_BPTS)
-    internal_error (__FILE__, __LINE__, "Unsupported number of breakpoints");
-}
-
-/* How many hardware breakpoints are available?  */
-static int
-arm_linux_get_hw_breakpoint_count (void)
-{
-  return arm_linux_hwbp_cap.bp_count;
-}
-
-/* How many hardware watchpoints are available?  */
-static int
-arm_linux_get_hw_watchpoint_count (void)
-{
-  return arm_linux_hwbp_cap.wp_count;
-}
-
-/* Maximum length of area watched by hardware watchpoint.  */
-static int
-arm_linux_get_hw_watchpoint_max_length (void)
-{
-  return arm_linux_hwbp_cap.max_wp_length;
-}
-
-/* Initialize an ARM hardware break-/watch-point control register value.
-   BYTE_ADDRESS_SELECT is the mask of bytes to trigger on; HWBP_TYPE is the
-   type of break-/watch-point; ENABLE indicates whether the point is enabled.
-   */
-static arm_hwbp_control_t
-arm_hwbp_control_initialize (unsigned byte_address_select,
-			     arm_hwbp_type hwbp_type,
-			     int enable)
-{
-  gdb_assert ((byte_address_select & ~0xffU) == 0);
-  gdb_assert (hwbp_type != arm_hwbp_break
-	      || ((byte_address_select & 0xfU) != 0));
-
-  return (byte_address_select << 5) | (hwbp_type << 3) | (3 << 1) | enable;
-}
-
-/* Does the breakpoint control value CONTROL have the enable bit set?  */
-static int
-arm_hwbp_control_is_enabled (arm_hwbp_control_t control)
-{
-  return control & 0x1;
-}
-
-/* Is the breakpoint control value CONTROL initialized?  */
-static int
-arm_hwbp_control_is_initialized (arm_hwbp_control_t control)
-{
-  return control != 0;
-}
-
-/* Change a breakpoint control word so that it is in the disabled state.  */
-static arm_hwbp_control_t
-arm_hwbp_control_disable (arm_hwbp_control_t control)
-{
-  return control & ~0x1;
-}
-
-/* Are two break-/watch-points equal?  */
-static int
-arm_linux_hw_breakpoint_equal (const struct arm_linux_hw_breakpoint *p1,
-			       const struct arm_linux_hw_breakpoint *p2)
-{
-  return p1->address == p2->address && p1->control == p2->control;
-}
-
-/* Convert a raw breakpoint type to an enum arm_hwbp_type.  */
-
-static arm_hwbp_type
-raw_bkpt_type_to_arm_hwbp_type (enum raw_bkpt_type raw_type)
-{
-  switch (raw_type)
-    {
-    case raw_bkpt_type_hw:
-      return arm_hwbp_break;
-    case raw_bkpt_type_write_wp:
-      return arm_hwbp_store;
-    case raw_bkpt_type_read_wp:
-      return arm_hwbp_load;
-    case raw_bkpt_type_access_wp:
-      return arm_hwbp_access;
-    default:
-      gdb_assert_not_reached ("unhandled raw type");
-    }
-}
-
-/* Initialize the hardware breakpoint structure P for a breakpoint or
-   watchpoint at ADDR to LEN.  The type of watchpoint is given in TYPE.
-   Returns -1 if TYPE is unsupported, or -2 if the particular combination
-   of ADDR and LEN cannot be implemented.  Otherwise, returns 0 if TYPE
-   represents a breakpoint and 1 if type represents a watchpoint.  */
-static int
-arm_linux_hw_point_initialize (enum raw_bkpt_type raw_type, CORE_ADDR addr,
-			       int len, struct arm_linux_hw_breakpoint *p)
-{
-  arm_hwbp_type hwbp_type;
-  unsigned mask;
-
-  hwbp_type = raw_bkpt_type_to_arm_hwbp_type (raw_type);
-
-  if (hwbp_type == arm_hwbp_break)
-    {
-      /* For breakpoints, the length field encodes the mode.  */
-      switch (len)
-	{
-	case 2:	 /* 16-bit Thumb mode breakpoint */
-	case 3:  /* 32-bit Thumb mode breakpoint */
-	  mask = 0x3;
-	  addr &= ~1;
-	  break;
-	case 4:  /* 32-bit ARM mode breakpoint */
-	  mask = 0xf;
-	  addr &= ~3;
-	  break;
-	default:
-	  /* Unsupported. */
-	  return -2;
-	}
-    }
-  else
-    {
-      CORE_ADDR max_wp_length = arm_linux_get_hw_watchpoint_max_length ();
-      CORE_ADDR aligned_addr;
-
-      /* Can not set watchpoints for zero or negative lengths.  */
-      if (len <= 0)
-	return -2;
-      /* The current ptrace interface can only handle watchpoints that are a
-	 power of 2.  */
-      if ((len & (len - 1)) != 0)
-	return -2;
-
-      /* Test that the range [ADDR, ADDR + LEN) fits into the largest address
-	 range covered by a watchpoint.  */
-      aligned_addr = addr & ~(max_wp_length - 1);
-      if (aligned_addr + max_wp_length < addr + len)
-	return -2;
-
-      mask = (1 << len) - 1;
-    }
-
-  p->address = (unsigned int) addr;
-  p->control = arm_hwbp_control_initialize (mask, hwbp_type, 1);
-
-  return hwbp_type != arm_hwbp_break;
-}
-
-/* Callback to mark a watch-/breakpoint to be updated in all threads of
-   the current process.  */
-
-static void
-update_registers_callback (thread_info *thread, int watch, int i)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-
-  /* The actual update is done later just before resuming the lwp,
-     we just mark that the registers need updating.  */
-  if (watch)
-    lwp->arch_private->wpts_changed[i] = 1;
-  else
-    lwp->arch_private->bpts_changed[i] = 1;
-
-  /* If the lwp isn't stopped, force it to momentarily pause, so
-     we can update its breakpoint registers.  */
-  if (!lwp->stopped)
-    linux_stop_lwp (lwp);
-}
-
-static int
-arm_supports_z_point_type (char z_type)
-{
-  switch (z_type)
-    {
-    case Z_PACKET_SW_BP:
-    case Z_PACKET_HW_BP:
-    case Z_PACKET_WRITE_WP:
-    case Z_PACKET_READ_WP:
-    case Z_PACKET_ACCESS_WP:
-      return 1;
-    default:
-      /* Leave the handling of sw breakpoints with the gdb client.  */
-      return 0;
-    }
-}
-
-/* Insert hardware break-/watchpoint.  */
-static int
-arm_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		  int len, struct raw_breakpoint *bp)
-{
-  struct process_info *proc = current_process ();
-  struct arm_linux_hw_breakpoint p, *pts;
-  int watch, i, count;
-
-  watch = arm_linux_hw_point_initialize (type, addr, len, &p);
-  if (watch < 0)
-    {
-      /* Unsupported.  */
-      return watch == -1 ? 1 : -1;
-    }
-
-  if (watch)
-    {
-      count = arm_linux_get_hw_watchpoint_count ();
-      pts = proc->priv->arch_private->wpts;
-    }
-  else
-    {
-      count = arm_linux_get_hw_breakpoint_count ();
-      pts = proc->priv->arch_private->bpts;
-    }
-
-  for (i = 0; i < count; i++)
-    if (!arm_hwbp_control_is_enabled (pts[i].control))
-      {
-	pts[i] = p;
-
-	/* Only update the threads of the current process.  */
-	for_each_thread (current_thread->id.pid (), [&] (thread_info *thread)
-	  {
-	    update_registers_callback (thread, watch, i);
-	  });
-
-	return 0;
-      }
-
-  /* We're out of watchpoints.  */
-  return -1;
-}
-
-/* Remove hardware break-/watchpoint.  */
-static int
-arm_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		  int len, struct raw_breakpoint *bp)
-{
-  struct process_info *proc = current_process ();
-  struct arm_linux_hw_breakpoint p, *pts;
-  int watch, i, count;
-
-  watch = arm_linux_hw_point_initialize (type, addr, len, &p);
-  if (watch < 0)
-    {
-      /* Unsupported.  */
-      return -1;
-    }
-
-  if (watch)
-    {
-      count = arm_linux_get_hw_watchpoint_count ();
-      pts = proc->priv->arch_private->wpts;
-    }
-  else
-    {
-      count = arm_linux_get_hw_breakpoint_count ();
-      pts = proc->priv->arch_private->bpts;
-    }
-
-  for (i = 0; i < count; i++)
-    if (arm_linux_hw_breakpoint_equal (&p, pts + i))
-      {
-	pts[i].control = arm_hwbp_control_disable (pts[i].control);
-
-	/* Only update the threads of the current process.  */
-	for_each_thread (current_thread->id.pid (), [&] (thread_info *thread)
-	  {
-	    update_registers_callback (thread, watch, i);
-	  });
-
-	return 0;
-      }
-
-  /* No watchpoint matched.  */
-  return -1;
-}
-
-/* Return whether current thread is stopped due to a watchpoint.  */
-static int
-arm_stopped_by_watchpoint (void)
-{
-  struct lwp_info *lwp = get_thread_lwp (current_thread);
-  siginfo_t siginfo;
-
-  /* We must be able to set hardware watchpoints.  */
-  if (arm_linux_get_hw_watchpoint_count () == 0)
-    return 0;
-
-  /* Retrieve siginfo.  */
-  errno = 0;
-  ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread), 0, &siginfo);
-  if (errno != 0)
-    return 0;
-
-  /* This must be a hardware breakpoint.  */
-  if (siginfo.si_signo != SIGTRAP
-      || (siginfo.si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
-    return 0;
-
-  /* If we are in a positive slot then we're looking at a breakpoint and not
-     a watchpoint.  */
-  if (siginfo.si_errno >= 0)
-    return 0;
-
-  /* Cache stopped data address for use by arm_stopped_data_address.  */
-  lwp->arch_private->stopped_data_address
-    = (CORE_ADDR) (uintptr_t) siginfo.si_addr;
-
-  return 1;
-}
-
-/* Return data address that triggered watchpoint.  Called only if
-   arm_stopped_by_watchpoint returned true.  */
-static CORE_ADDR
-arm_stopped_data_address (void)
-{
-  struct lwp_info *lwp = get_thread_lwp (current_thread);
-  return lwp->arch_private->stopped_data_address;
-}
-
-/* Called when a new process is created.  */
-static struct arch_process_info *
-arm_new_process (void)
-{
-  struct arch_process_info *info = XCNEW (struct arch_process_info);
-  return info;
-}
-
-/* Called when a process is being deleted.  */
-
-static void
-arm_delete_process (struct arch_process_info *info)
-{
-  xfree (info);
-}
-
-/* Called when a new thread is detected.  */
-static void
-arm_new_thread (struct lwp_info *lwp)
-{
-  struct arch_lwp_info *info = XCNEW (struct arch_lwp_info);
-  int i;
-
-  for (i = 0; i < MAX_BPTS; i++)
-    info->bpts_changed[i] = 1;
-  for (i = 0; i < MAX_WPTS; i++)
-    info->wpts_changed[i] = 1;
-
-  lwp->arch_private = info;
-}
-
-/* Function to call when a thread is being deleted.  */
-
-static void
-arm_delete_thread (struct arch_lwp_info *arch_lwp)
-{
-  xfree (arch_lwp);
-}
-
-static void
-arm_new_fork (struct process_info *parent, struct process_info *child)
-{
-  struct arch_process_info *parent_proc_info;
-  struct arch_process_info *child_proc_info;
-  struct lwp_info *child_lwp;
-  struct arch_lwp_info *child_lwp_info;
-  int i;
-
-  /* These are allocated by linux_add_process.  */
-  gdb_assert (parent->priv != NULL
-	      && parent->priv->arch_private != NULL);
-  gdb_assert (child->priv != NULL
-	      && child->priv->arch_private != NULL);
-
-  parent_proc_info = parent->priv->arch_private;
-  child_proc_info = child->priv->arch_private;
-
-  /* Linux kernel before 2.6.33 commit
-     72f674d203cd230426437cdcf7dd6f681dad8b0d
-     will inherit hardware debug registers from parent
-     on fork/vfork/clone.  Newer Linux kernels create such tasks with
-     zeroed debug registers.
-
-     GDB core assumes the child inherits the watchpoints/hw
-     breakpoints of the parent, and will remove them all from the
-     forked off process.  Copy the debug registers mirrors into the
-     new process so that all breakpoints and watchpoints can be
-     removed together.  The debug registers mirror will become zeroed
-     in the end before detaching the forked off process, thus making
-     this compatible with older Linux kernels too.  */
-
-  *child_proc_info = *parent_proc_info;
-
-  /* Mark all the hardware breakpoints and watchpoints as changed to
-     make sure that the registers will be updated.  */
-  child_lwp = find_lwp_pid (ptid_t (child->pid));
-  child_lwp_info = child_lwp->arch_private;
-  for (i = 0; i < MAX_BPTS; i++)
-    child_lwp_info->bpts_changed[i] = 1;
-  for (i = 0; i < MAX_WPTS; i++)
-    child_lwp_info->wpts_changed[i] = 1;
-}
-
-/* Called when resuming a thread.
-   If the debug regs have changed, update the thread's copies.  */
-static void
-arm_prepare_to_resume (struct lwp_info *lwp)
-{
-  struct thread_info *thread = get_lwp_thread (lwp);
-  int pid = lwpid_of (thread);
-  struct process_info *proc = find_process_pid (pid_of (thread));
-  struct arch_process_info *proc_info = proc->priv->arch_private;
-  struct arch_lwp_info *lwp_info = lwp->arch_private;
-  int i;
-
-  for (i = 0; i < arm_linux_get_hw_breakpoint_count (); i++)
-    if (lwp_info->bpts_changed[i])
-      {
-	errno = 0;
-
-	if (arm_hwbp_control_is_enabled (proc_info->bpts[i].control))
-	  if (ptrace (PTRACE_SETHBPREGS, pid,
-		      (PTRACE_TYPE_ARG3) ((i << 1) + 1),
-		      &proc_info->bpts[i].address) < 0)
-	    perror_with_name ("Unexpected error setting breakpoint address");
-
-	if (arm_hwbp_control_is_initialized (proc_info->bpts[i].control))
-	  if (ptrace (PTRACE_SETHBPREGS, pid,
-		      (PTRACE_TYPE_ARG3) ((i << 1) + 2),
-		      &proc_info->bpts[i].control) < 0)
-	    perror_with_name ("Unexpected error setting breakpoint");
-
-	lwp_info->bpts_changed[i] = 0;
-      }
-
-  for (i = 0; i < arm_linux_get_hw_watchpoint_count (); i++)
-    if (lwp_info->wpts_changed[i])
-      {
-	errno = 0;
-
-	if (arm_hwbp_control_is_enabled (proc_info->wpts[i].control))
-	  if (ptrace (PTRACE_SETHBPREGS, pid,
-		      (PTRACE_TYPE_ARG3) -((i << 1) + 1),
-		      &proc_info->wpts[i].address) < 0)
-	    perror_with_name ("Unexpected error setting watchpoint address");
-
-	if (arm_hwbp_control_is_initialized (proc_info->wpts[i].control))
-	  if (ptrace (PTRACE_SETHBPREGS, pid,
-		      (PTRACE_TYPE_ARG3) -((i << 1) + 2),
-		      &proc_info->wpts[i].control) < 0)
-	    perror_with_name ("Unexpected error setting watchpoint");
-
-	lwp_info->wpts_changed[i] = 0;
-      }
-}
-
-/* Find the next pc for a sigreturn or rt_sigreturn syscall.  In
-   addition, set IS_THUMB depending on whether we will return to ARM
-   or Thumb code.
-   See arm-linux.h for stack layout details.  */
-static CORE_ADDR
-arm_sigreturn_next_pc (struct regcache *regcache, int svc_number,
-		       int *is_thumb)
-{
-  unsigned long sp;
-  unsigned long sp_data;
-  /* Offset of PC register.  */
-  int pc_offset = 0;
-  CORE_ADDR next_pc = 0;
-  uint32_t cpsr;
-
-  gdb_assert (svc_number == __NR_sigreturn || svc_number == __NR_rt_sigreturn);
-
-  collect_register_by_name (regcache, "sp", &sp);
-  (*the_target->read_memory) (sp, (unsigned char *) &sp_data, 4);
-
-  pc_offset = arm_linux_sigreturn_next_pc_offset
-    (sp, sp_data, svc_number, __NR_sigreturn == svc_number ? 1 : 0);
-
-  (*the_target->read_memory) (sp + pc_offset, (unsigned char *) &next_pc, 4);
-
-  /* Set IS_THUMB according the CPSR saved on the stack.  */
-  (*the_target->read_memory) (sp + pc_offset + 4, (unsigned char *) &cpsr, 4);
-  *is_thumb = ((cpsr & CPSR_T) != 0);
-
-  return next_pc;
-}
-
-/* When PC is at a syscall instruction, return the PC of the next
-   instruction to be executed.  */
-static CORE_ADDR
-get_next_pcs_syscall_next_pc (struct arm_get_next_pcs *self)
-{
-  CORE_ADDR next_pc = 0;
-  CORE_ADDR pc = regcache_read_pc (self->regcache);
-  int is_thumb = arm_is_thumb_mode ();
-  ULONGEST svc_number = 0;
-  struct regcache *regcache = self->regcache;
-
-  if (is_thumb)
-    {
-      collect_register (regcache, 7, &svc_number);
-      next_pc = pc + 2;
-    }
-  else
-    {
-      unsigned long this_instr;
-      unsigned long svc_operand;
-
-      target_read_memory (pc, (unsigned char *) &this_instr, 4);
-      svc_operand = (0x00ffffff & this_instr);
-
-      if (svc_operand)  /* OABI.  */
-	{
-	  svc_number = svc_operand - 0x900000;
-	}
-      else /* EABI.  */
-	{
-	  collect_register (regcache, 7, &svc_number);
-	}
-
-      next_pc = pc + 4;
-    }
-
-  /* This is a sigreturn or sigreturn_rt syscall.  */
-  if (svc_number == __NR_sigreturn || svc_number == __NR_rt_sigreturn)
-    {
-      /* SIGRETURN or RT_SIGRETURN may affect the arm thumb mode, so
-	 update IS_THUMB.   */
-      next_pc = arm_sigreturn_next_pc (regcache, svc_number, &is_thumb);
-    }
-
-  /* Addresses for calling Thumb functions have the bit 0 set.  */
-  if (is_thumb)
-    next_pc = MAKE_THUMB_ADDR (next_pc);
-
-  return next_pc;
-}
-
-static const struct target_desc *
-arm_read_description (void)
-{
-  unsigned long arm_hwcap = linux_get_hwcap (4);
-
-  if (arm_hwcap & HWCAP_IWMMXT)
-    return arm_linux_read_description (ARM_FP_TYPE_IWMMXT);
-
-  if (arm_hwcap & HWCAP_VFP)
-    {
-      /* Make sure that the kernel supports reading VFP registers.  Support was
-	 added in 2.6.30.  */
-      int pid = lwpid_of (current_thread);
-      errno = 0;
-      char *buf = (char *) alloca (ARM_VFP3_REGS_SIZE);
-      if (ptrace (PTRACE_GETVFPREGS, pid, 0, buf) < 0 && errno == EIO)
-	return arm_linux_read_description (ARM_FP_TYPE_NONE);
-
-      /* NEON implies either no VFP, or VFPv3-D32.  We only support
-	 it with VFP.  */
-      if (arm_hwcap & HWCAP_NEON)
-	return aarch32_linux_read_description ();
-      else if ((arm_hwcap & (HWCAP_VFPv3 | HWCAP_VFPv3D16)) == HWCAP_VFPv3)
-	return arm_linux_read_description (ARM_FP_TYPE_VFPV3);
-      else
-	return arm_linux_read_description (ARM_FP_TYPE_VFPV2);
-    }
-
-  /* The default configuration uses legacy FPA registers, probably
-     simulated.  */
-  return arm_linux_read_description (ARM_FP_TYPE_NONE);
-}
-
-static void
-arm_arch_setup (void)
-{
-  int tid = lwpid_of (current_thread);
-  int gpregs[18];
-  struct iovec iov;
-
-  /* Query hardware watchpoint/breakpoint capabilities.  */
-  arm_linux_init_hwbp_cap (tid);
-
-  current_process ()->tdesc = arm_read_description ();
-
-  iov.iov_base = gpregs;
-  iov.iov_len = sizeof (gpregs);
-
-  /* Check if PTRACE_GETREGSET works.  */
-  if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iov) == 0)
-    have_ptrace_getregset = 1;
-  else
-    have_ptrace_getregset = 0;
-}
-
-/* Fetch the next possible PCs after the current instruction executes.  */
-
-static std::vector<CORE_ADDR>
-arm_gdbserver_get_next_pcs (struct regcache *regcache)
-{
-  struct arm_get_next_pcs next_pcs_ctx;
-
-  arm_get_next_pcs_ctor (&next_pcs_ctx,
-			 &get_next_pcs_ops,
-			 /* Byte order is ignored assumed as host.  */
-			 0,
-			 0,
-			 1,
-			 regcache);
-
-  return arm_get_next_pcs (&next_pcs_ctx);
-}
-
-/* Support for hardware single step.  */
-
-static int
-arm_supports_hardware_single_step (void)
-{
-  return 0;
-}
-
-/* Implementation of linux_target_ops method "get_syscall_trapinfo".  */
-
-static void
-arm_get_syscall_trapinfo (struct regcache *regcache, int *sysno)
-{
-  if (arm_is_thumb_mode ())
-    collect_register_by_name (regcache, "r7", sysno);
-  else
-    {
-      unsigned long pc;
-      unsigned long insn;
-
-      collect_register_by_name (regcache, "pc", &pc);
-
-      if ((*the_target->read_memory) (pc - 4, (unsigned char *) &insn, 4))
-	*sysno = UNKNOWN_SYSCALL;
-      else
-	{
-	  unsigned long svc_operand = (0x00ffffff & insn);
-
-	  if (svc_operand)
-	    {
-	      /* OABI */
-	      *sysno = svc_operand - 0x900000;
-	    }
-	  else
-	    {
-	      /* EABI */
-	      collect_register_by_name (regcache, "r7", sysno);
-	    }
-	}
-    }
-}
-
-/* Register sets without using PTRACE_GETREGSET.  */
-
-static struct regset_info arm_regsets[] = {
-  { PTRACE_GETREGS, PTRACE_SETREGS, 0,
-    ARM_CORE_REGS_SIZE + ARM_INT_REGISTER_SIZE, GENERAL_REGS,
-    arm_fill_gregset, arm_store_gregset },
-  { PTRACE_GETWMMXREGS, PTRACE_SETWMMXREGS, 0, IWMMXT_REGS_SIZE, EXTENDED_REGS,
-    arm_fill_wmmxregset, arm_store_wmmxregset },
-  { PTRACE_GETVFPREGS, PTRACE_SETVFPREGS, 0, ARM_VFP3_REGS_SIZE, EXTENDED_REGS,
-    arm_fill_vfpregset, arm_store_vfpregset },
-  NULL_REGSET
-};
-
-static struct regsets_info arm_regsets_info =
-  {
-    arm_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct usrregs_info arm_usrregs_info =
-  {
-    arm_num_regs,
-    arm_regmap,
-  };
-
-static struct regs_info regs_info_arm =
-  {
-    NULL, /* regset_bitmap */
-    &arm_usrregs_info,
-    &arm_regsets_info
-  };
-
-static const struct regs_info *
-arm_regs_info (void)
-{
-  const struct target_desc *tdesc = current_process ()->tdesc;
-
-  if (have_ptrace_getregset == 1
-      && (is_aarch32_linux_description (tdesc)
-	  || arm_linux_get_tdesc_fp_type (tdesc) == ARM_FP_TYPE_VFPV3))
-    return &regs_info_aarch32;
-
-  return &regs_info_arm;
-}
-
-struct linux_target_ops the_low_target = {
-  arm_arch_setup,
-  arm_regs_info,
-  arm_cannot_fetch_register,
-  arm_cannot_store_register,
-  NULL, /* fetch_register */
-  linux_get_pc_32bit,
-  linux_set_pc_32bit,
-  arm_breakpoint_kind_from_pc,
-  arm_sw_breakpoint_from_kind,
-  arm_gdbserver_get_next_pcs,
-  0,
-  arm_breakpoint_at,
-  arm_supports_z_point_type,
-  arm_insert_point,
-  arm_remove_point,
-  arm_stopped_by_watchpoint,
-  arm_stopped_data_address,
-  NULL, /* collect_ptrace_register */
-  NULL, /* supply_ptrace_register */
-  NULL, /* siginfo_fixup */
-  arm_new_process,
-  arm_delete_process,
-  arm_new_thread,
-  arm_delete_thread,
-  arm_new_fork,
-  arm_prepare_to_resume,
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* get_thread_area */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* supports_range_stepping */
-  arm_breakpoint_kind_from_current_state,
-  arm_supports_hardware_single_step,
-  arm_get_syscall_trapinfo,
-};
-
-void
-initialize_low_arch (void)
-{
-  initialize_low_arch_aarch32 ();
-  initialize_regsets_info (&arm_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-arm-tdesc.c ./gdb/gdbserver/linux-arm-tdesc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-arm-tdesc.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-arm-tdesc.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,62 +0,0 @@
-/* Copyright (C) 2019-2020 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 "server.h"
-#include "tdesc.h"
-#include "arch/arm.h"
-#include <inttypes.h>
-
-/* All possible Arm target descriptors.  */
-static struct target_desc *tdesc_arm_list[ARM_FP_TYPE_INVALID];
-
-/* See linux-arm-tdesc.h.  */
-
-const target_desc *
-arm_linux_read_description (arm_fp_type fp_type)
-{
-  struct target_desc *tdesc = tdesc_arm_list[fp_type];
-
-  if (tdesc == nullptr)
-    {
-      tdesc = arm_create_target_description (fp_type);
-
-      static const char *expedite_regs[] = { "r11", "sp", "pc", 0 };
-      init_target_desc (tdesc, expedite_regs);
-
-      tdesc_arm_list[fp_type] = tdesc;
-    }
-
-  return tdesc;
-}
-
-/* See linux-arm-tdesc.h.  */
-
-arm_fp_type
-arm_linux_get_tdesc_fp_type (const target_desc *tdesc)
-{
-  gdb_assert (tdesc != nullptr);
-
-  /* Many of the tdesc_arm_list entries may not have been initialised yet.  This
-     is ok, because tdesc must be one of the initialised ones.  */
-  for (int i = ARM_FP_TYPE_NONE; i < ARM_FP_TYPE_INVALID; i++)
-    {
-      if (tdesc == tdesc_arm_list[i])
-	return (arm_fp_type) i;
-    }
-
-  return ARM_FP_TYPE_INVALID;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-arm-tdesc.h ./gdb/gdbserver/linux-arm-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-arm-tdesc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-arm-tdesc.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,29 +0,0 @@
-/* Copyright (C) 2019-2020 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 GDBSERVER_LINUX_ARM_TDESC_H
-#define GDBSERVER_LINUX_ARM_TDESC_H
-
-/* Return the Arm target description with fp registers FP_TYPE.  */
-
-const target_desc * arm_linux_read_description (arm_fp_type fp_type);
-
-/* For a target description TDESC, return its fp type.  */
-
-arm_fp_type arm_linux_get_tdesc_fp_type (const target_desc *tdesc);
-
-#endif /* linux-arm-tdesc.h.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-bfin-low.c ./gdb/gdbserver/linux-bfin-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-bfin-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-bfin-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,159 +0,0 @@
-/* GNU/Linux/BFIN specific low level interface, for the remote server for GDB.
-
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
-
-   Contributed by Analog Devices, 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 "server.h"
-#include "linux-low.h"
-#include <asm/ptrace.h>
-
-/* Defined in auto-generated file reg-bfin.c.  */
-void init_registers_bfin (void);
-extern const struct target_desc *tdesc_bfin;
-
-static int bfin_regmap[] =
-{
-  PT_R0, PT_R1, PT_R2, PT_R3, PT_R4, PT_R5, PT_R6, PT_R7,
-  PT_P0, PT_P1, PT_P2, PT_P3, PT_P4, PT_P5, PT_USP, PT_FP,
-  PT_I0, PT_I1, PT_I2, PT_I3, PT_M0, PT_M1, PT_M2, PT_M3,
-  PT_B0, PT_B1, PT_B2, PT_B3, PT_L0, PT_L1, PT_L2, PT_L3,
-  PT_A0X, PT_A0W, PT_A1X, PT_A1W, PT_ASTAT, PT_RETS,
-  PT_LC0, PT_LT0, PT_LB0, PT_LC1, PT_LT1, PT_LB1,
-  -1 /* PT_CYCLES */, -1 /* PT_CYCLES2 */,
-  -1 /* PT_USP */, PT_SEQSTAT, PT_SYSCFG, PT_PC, PT_RETX, PT_RETN, PT_RETE,
-  PT_PC,
-};
-
-#define bfin_num_regs ARRAY_SIZE (bfin_regmap)
-
-static int
-bfin_cannot_store_register (int regno)
-{
-  return (regno >= bfin_num_regs);
-}
-
-static int
-bfin_cannot_fetch_register (int regno)
-{
-  return (regno >= bfin_num_regs);
-}
-
-#define bfin_breakpoint_len 2
-static const gdb_byte bfin_breakpoint[bfin_breakpoint_len] = {0xa1, 0x00};
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-bfin_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = bfin_breakpoint_len;
-  return bfin_breakpoint;
-}
-
-static int
-bfin_breakpoint_at (CORE_ADDR where)
-{
-  unsigned char insn[bfin_breakpoint_len];
-
-  read_inferior_memory(where, insn, bfin_breakpoint_len);
-  if (insn[0] == bfin_breakpoint[0]
-      && insn[1] == bfin_breakpoint[1])
-    return 1;
-
-  /* If necessary, recognize more trap instructions here.  GDB only uses the
-     one.  */
-  return 0;
-}
-
-static void
-bfin_arch_setup (void)
-{
-  current_process ()->tdesc = tdesc_bfin;
-}
-
-/* Support for hardware single step.  */
-
-static int
-bfin_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-static struct usrregs_info bfin_usrregs_info =
-  {
-    bfin_num_regs,
-    bfin_regmap,
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &bfin_usrregs_info,
-  };
-
-static const struct regs_info *
-bfin_regs_info (void)
-{
-  return &regs_info;
-}
-
-struct linux_target_ops the_low_target = {
-  bfin_arch_setup,
-  bfin_regs_info,
-  bfin_cannot_fetch_register,
-  bfin_cannot_store_register,
-  NULL, /* fetch_register */
-  linux_get_pc_32bit,
-  linux_set_pc_32bit,
-  NULL, /* breakpoint_kind_from_pc */
-  bfin_sw_breakpoint_from_kind,
-  NULL, /* get_next_pcs */
-  2,
-  bfin_breakpoint_at,
-  NULL, /* supports_z_point_type */
-  NULL, /* insert_point */
-  NULL, /* remove_point */
-  NULL, /* stopped_by_watchpoint */
-  NULL, /* stopped_data_address */
-  NULL, /* collect_ptrace_register */
-  NULL, /* supply_ptrace_register */
-  NULL, /* siginfo_fixup */
-  NULL, /* new_process */
-  NULL, /* delete_process */
-  NULL, /* new_thread */
-  NULL, /* delete_thread */
-  NULL, /* new_fork */
-  NULL, /* prepare_to_resume */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* get_thread_area */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* supports_range_stepping */
-  NULL, /* breakpoint_kind_from_current_state */
-  bfin_supports_hardware_single_step,
-};
-
-
-void
-initialize_low_arch (void)
-{
-  init_registers_bfin ();
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-cris-low.c ./gdb/gdbserver/linux-cris-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-cris-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-cris-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,132 +0,0 @@
-/* GNU/Linux/CRIS specific low level interface, for the remote server for GDB.
-   Copyright (C) 1995-2020 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 "server.h"
-#include "linux-low.h"
-#include "nat/gdb_ptrace.h"
-
-/* Defined in auto-generated file reg-cris.c.  */
-void init_registers_cris (void);
-extern const struct target_desc *tdesc_cris;
-
-/* CRISv10 */
-#define cris_num_regs 32
-
-/* Locations need to match <include/asm/arch/ptrace.h>.  */
-static int cris_regmap[] = {
-  15*4, 14*4, 13*4, 12*4,
-  11*4, 10*4, 9*4, 8*4,
-  7*4, 6*4, 5*4, 4*4,
-  3*4, 2*4, 23*4, 19*4,
-
-  -1, -1, -1, -1,
-  -1, 17*4, -1, 16*4,
-  -1, -1, -1, 18*4,
-  -1, 17*4, -1, -1
-
-};
-
-static int
-cris_cannot_store_register (int regno)
-{
-  if (cris_regmap[regno] == -1)
-    return 1;
-
-  return (regno >= cris_num_regs);
-}
-
-static int
-cris_cannot_fetch_register (int regno)
-{
-  if (cris_regmap[regno] == -1)
-    return 1;
-
-  return (regno >= cris_num_regs);
-}
-
-static const unsigned short cris_breakpoint = 0xe938;
-#define cris_breakpoint_len 2
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-cris_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = cris_breakpoint_len;
-  return (const gdb_byte *) &cris_breakpoint;
-}
-
-static int
-cris_breakpoint_at (CORE_ADDR where)
-{
-  unsigned short insn;
-
-  (*the_target->read_memory) (where, (unsigned char *) &insn,
-			      cris_breakpoint_len);
-  if (insn == cris_breakpoint)
-    return 1;
-
-  /* If necessary, recognize more trap instructions here.  GDB only uses the
-     one.  */
-  return 0;
-}
-
-static void
-cris_arch_setup (void)
-{
-  current_process ()->tdesc = tdesc_cris;
-}
-
-static struct usrregs_info cris_usrregs_info =
-  {
-    cris_num_regs,
-    cris_regmap,
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &cris_usrregs_info,
-  };
-
-static const struct regs_info *
-cris_regs_info (void)
-{
-  return &regs_info;
-}
-
-struct linux_target_ops the_low_target = {
-  cris_arch_setup,
-  cris_regs_info,
-  cris_cannot_fetch_register,
-  cris_cannot_store_register,
-  NULL, /* fetch_register */
-  linux_get_pc_32bit,
-  linux_set_pc_32bit,
-  NULL, /* breakpoint_kind_from_pc */
-  cris_sw_breakpoint_from_kind,
-  NULL, /* get_next_pcs */
-  0,
-  cris_breakpoint_at,
-};
-
-void
-initialize_low_arch (void)
-{
-  init_registers_cris ();
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-crisv32-low.c ./gdb/gdbserver/linux-crisv32-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-crisv32-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-crisv32-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,440 +0,0 @@
-/* GNU/Linux/CRIS specific low level interface, for the remote server for GDB.
-   Copyright (C) 1995-2020 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 "server.h"
-#include "linux-low.h"
-#include "nat/gdb_ptrace.h"
-
-/* Defined in auto-generated file reg-crisv32.c.  */
-void init_registers_crisv32 (void);
-extern const struct target_desc *tdesc_crisv32;
-
-/* CRISv32 */
-#define cris_num_regs 49
-
-#ifndef PTRACE_GET_THREAD_AREA
-#define PTRACE_GET_THREAD_AREA 25
-#endif
-
-/* Note: Ignoring USP (having the stack pointer in two locations causes trouble
-   without any significant gain).  */
-
-/* Locations need to match <include/asm/arch/ptrace.h>.  */
-static int cris_regmap[] = {
-  1*4, 2*4, 3*4, 4*4,
-  5*4, 6*4, 7*4, 8*4,
-  9*4, 10*4, 11*4, 12*4,
-  13*4, 14*4, 24*4, 15*4,
-
-  -1, -1, -1, 16*4,
-  -1, 22*4, 23*4, 17*4,
-  -1, -1, 21*4, 20*4,
-  -1, 19*4, -1, 18*4,
-
-  25*4,
-
-  26*4, -1,   -1,   29*4,
-  30*4, 31*4, 32*4, 33*4,
-  34*4, 35*4, 36*4, 37*4,
-  38*4, 39*4, 40*4, -1
-
-};
-
-static const unsigned short cris_breakpoint = 0xe938;
-#define cris_breakpoint_len 2
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-cris_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = cris_breakpoint_len;
-  return (const gdb_byte *) &cris_breakpoint;
-}
-
-static int
-cris_breakpoint_at (CORE_ADDR where)
-{
-  unsigned short insn;
-
-  (*the_target->read_memory) (where, (unsigned char *) &insn,
-			      cris_breakpoint_len);
-  if (insn == cris_breakpoint)
-    return 1;
-
-  /* If necessary, recognize more trap instructions here.  GDB only uses the
-     one.  */
-  return 0;
-}
-
-static void
-cris_write_data_breakpoint (struct regcache *regcache,
-			    int bp, unsigned long start, unsigned long end)
-{
-  switch (bp)
-    {
-    case 0:
-      supply_register_by_name (regcache, "s3", &start);
-      supply_register_by_name (regcache, "s4", &end);
-      break;
-    case 1:
-      supply_register_by_name (regcache, "s5", &start);
-      supply_register_by_name (regcache, "s6", &end);
-      break;
-    case 2:
-      supply_register_by_name (regcache, "s7", &start);
-      supply_register_by_name (regcache, "s8", &end);
-      break;
-    case 3:
-      supply_register_by_name (regcache, "s9", &start);
-      supply_register_by_name (regcache, "s10", &end);
-      break;
-    case 4:
-      supply_register_by_name (regcache, "s11", &start);
-      supply_register_by_name (regcache, "s12", &end);
-      break;
-    case 5:
-      supply_register_by_name (regcache, "s13", &start);
-      supply_register_by_name (regcache, "s14", &end);
-      break;
-    }
-}
-
-static int
-cris_supports_z_point_type (char z_type)
-{
-  switch (z_type)
-    {
-    case Z_PACKET_WRITE_WP:
-    case Z_PACKET_READ_WP:
-    case Z_PACKET_ACCESS_WP:
-      return 1;
-    default:
-      return 0;
-    }
-}
-
-static int
-cris_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		   int len, struct raw_breakpoint *bp)
-{
-  int bp;
-  unsigned long bp_ctrl;
-  unsigned long start, end;
-  unsigned long ccs;
-  struct regcache *regcache;
-
-  regcache = get_thread_regcache (current_thread, 1);
-
-  /* Read watchpoints are set as access watchpoints, because of GDB's
-     inability to deal with pure read watchpoints.  */
-  if (type == raw_bkpt_type_read_wp)
-    type = raw_bkpt_type_access_wp;
-
-  /* Get the configuration register.  */
-  collect_register_by_name (regcache, "s0", &bp_ctrl);
-
-  /* The watchpoint allocation scheme is the simplest possible.
-     For example, if a region is watched for read and
-     a write watch is requested, a new watchpoint will
-     be used.  Also, if a watch for a region that is already
-     covered by one or more existing watchpoints, a new
-     watchpoint will be used.  */
-
-  /* First, find a free data watchpoint.  */
-  for (bp = 0; bp < 6; bp++)
-    {
-      /* Each data watchpoint's control registers occupy 2 bits
-	 (hence the 3), starting at bit 2 for D0 (hence the 2)
-	 with 4 bits between for each watchpoint (yes, the 4).  */
-      if (!(bp_ctrl & (0x3 << (2 + (bp * 4)))))
-	break;
-    }
-
-  if (bp > 5)
-    {
-      /* We're out of watchpoints.  */
-      return -1;
-    }
-
-  /* Configure the control register first.  */
-  if (type == raw_bkpt_type_read_wp || type == raw_bkpt_type_access_wp)
-    {
-      /* Trigger on read.  */
-      bp_ctrl |= (1 << (2 + bp * 4));
-    }
-  if (type == raw_bkpt_type_write_wp || type == raw_bkpt_type_access_wp)
-    {
-      /* Trigger on write.  */
-      bp_ctrl |= (2 << (2 + bp * 4));
-    }
-
-  /* Setup the configuration register.  */
-  supply_register_by_name (regcache, "s0", &bp_ctrl);
-
-  /* Setup the range.  */
-  start = addr;
-  end = addr + len - 1;
-
-  /* Configure the watchpoint register.  */
-  cris_write_data_breakpoint (regcache, bp, start, end);
-
-  collect_register_by_name (regcache, "ccs", &ccs);
-  /* Set the S1 flag to enable watchpoints.  */
-  ccs |= (1 << 19);
-  supply_register_by_name (regcache, "ccs", &ccs);
-
-  return 0;
-}
-
-static int
-cris_remove_point (enum raw_bkpt_type type, CORE_ADDR addr, int len,
-		   struct raw_breakpoint *bp)
-{
-  int bp;
-  unsigned long bp_ctrl;
-  unsigned long start, end;
-  struct regcache *regcache;
-  unsigned long bp_d_regs[12];
-
-  regcache = get_thread_regcache (current_thread, 1);
-
-  /* Read watchpoints are set as access watchpoints, because of GDB's
-     inability to deal with pure read watchpoints.  */
-  if (type == raw_bkpt_type_read_wp)
-    type = raw_bkpt_type_access_wp;
-
-  /* Get the configuration register.  */
-  collect_register_by_name (regcache, "s0", &bp_ctrl);
-
-  /* Try to find a watchpoint that is configured for the
-     specified range, then check that read/write also matches.  */
-
-  /* Ugly pointer arithmetic, since I cannot rely on a
-     single switch (addr) as there may be several watchpoints with
-     the same start address for example.  */
-
-  /* Get all range registers to simplify search.  */
-  collect_register_by_name (regcache, "s3", &bp_d_regs[0]);
-  collect_register_by_name (regcache, "s4", &bp_d_regs[1]);
-  collect_register_by_name (regcache, "s5", &bp_d_regs[2]);
-  collect_register_by_name (regcache, "s6", &bp_d_regs[3]);
-  collect_register_by_name (regcache, "s7", &bp_d_regs[4]);
-  collect_register_by_name (regcache, "s8", &bp_d_regs[5]);
-  collect_register_by_name (regcache, "s9", &bp_d_regs[6]);
-  collect_register_by_name (regcache, "s10", &bp_d_regs[7]);
-  collect_register_by_name (regcache, "s11", &bp_d_regs[8]);
-  collect_register_by_name (regcache, "s12", &bp_d_regs[9]);
-  collect_register_by_name (regcache, "s13", &bp_d_regs[10]);
-  collect_register_by_name (regcache, "s14", &bp_d_regs[11]);
-
-  for (bp = 0; bp < 6; bp++)
-    {
-      if (bp_d_regs[bp * 2] == addr
-	  && bp_d_regs[bp * 2 + 1] == (addr + len - 1)) {
-	/* Matching range.  */
-	int bitpos = 2 + bp * 4;
-	int rw_bits;
-
-	/* Read/write bits for this BP.  */
-	rw_bits = (bp_ctrl & (0x3 << bitpos)) >> bitpos;
-
-	if ((type == raw_bkpt_type_read_wp && rw_bits == 0x1)
-	    || (type == raw_bkpt_type_write_wp && rw_bits == 0x2)
-	    || (type == raw_bkpt_type_access_wp && rw_bits == 0x3))
-	  {
-	    /* Read/write matched.  */
-	    break;
-	  }
-      }
-    }
-
-  if (bp > 5)
-    {
-      /* No watchpoint matched.  */
-      return -1;
-    }
-
-  /* Found a matching watchpoint.  Now, deconfigure it by
-     both disabling read/write in bp_ctrl and zeroing its
-     start/end addresses.  */
-  bp_ctrl &= ~(3 << (2 + (bp * 4)));
-  /* Setup the configuration register.  */
-  supply_register_by_name (regcache, "s0", &bp_ctrl);
-
-  start = end = 0;
-  /* Configure the watchpoint register.  */
-  cris_write_data_breakpoint (regcache, bp, start, end);
-
-  /* Note that we don't clear the S1 flag here.  It's done when continuing.  */
-  return 0;
-}
-
-static int
-cris_stopped_by_watchpoint (void)
-{
-  unsigned long exs;
-  struct regcache *regcache = get_thread_regcache (current_thread, 1);
-
-  collect_register_by_name (regcache, "exs", &exs);
-
-  return (((exs & 0xff00) >> 8) == 0xc);
-}
-
-static CORE_ADDR
-cris_stopped_data_address (void)
-{
-  unsigned long eda;
-  struct regcache *regcache = get_thread_regcache (current_thread, 1);
-
-  collect_register_by_name (regcache, "eda", &eda);
-
-  /* FIXME: Possibly adjust to match watched range.  */
-  return eda;
-}
-
-ps_err_e
-ps_get_thread_area (struct ps_prochandle *ph,
-                    lwpid_t lwpid, int idx, void **base)
-{
-  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
-    return PS_ERR;
-
-  /* IDX is the bias from the thread pointer to the beginning of the
-     thread descriptor.  It has to be subtracted due to implementation
-     quirks in libthread_db.  */
-  *base = (void *) ((char *) *base - idx);
-  return PS_OK;
-}
-
-static void
-cris_fill_gregset (struct regcache *regcache, void *buf)
-{
-  int i;
-
-  for (i = 0; i < cris_num_regs; i++)
-    {
-      if (cris_regmap[i] != -1)
-	collect_register (regcache, i, ((char *) buf) + cris_regmap[i]);
-    }
-}
-
-static void
-cris_store_gregset (struct regcache *regcache, const void *buf)
-{
-  int i;
-
-  for (i = 0; i < cris_num_regs; i++)
-    {
-      if (cris_regmap[i] != -1)
-	supply_register (regcache, i, ((char *) buf) + cris_regmap[i]);
-    }
-}
-
-static void
-cris_arch_setup (void)
-{
-  current_process ()->tdesc = tdesc_crisv32;
-}
-
-/* Support for hardware single step.  */
-
-static int
-cris_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-static struct regset_info cris_regsets[] = {
-  { PTRACE_GETREGS, PTRACE_SETREGS, 0, cris_num_regs * 4,
-    GENERAL_REGS, cris_fill_gregset, cris_store_gregset },
-  NULL_REGSET
-};
-
-
-static struct regsets_info cris_regsets_info =
-  {
-    cris_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct usrregs_info cris_usrregs_info =
-  {
-    cris_num_regs,
-    cris_regmap,
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &cris_usrregs_info,
-    &cris_regsets_info
-  };
-
-static const struct regs_info *
-cris_regs_info (void)
-{
-  return &regs_info;
-}
-
-struct linux_target_ops the_low_target = {
-  cris_arch_setup,
-  cris_regs_info,
-  NULL,
-  NULL,
-  NULL, /* fetch_register */
-  linux_get_pc_32bit,
-  linux_set_pc_32bit,
-  NULL, /* breakpoint_kind_from_pc */
-  cris_sw_breakpoint_from_kind,
-  NULL, /* get_next_pcs */
-  0,
-  cris_breakpoint_at,
-  cris_supports_z_point_type,
-  cris_insert_point,
-  cris_remove_point,
-  cris_stopped_by_watchpoint,
-  cris_stopped_data_address,
-  NULL, /* collect_ptrace_register */
-  NULL, /* supply_ptrace_register */
-  NULL, /* siginfo_fixup */
-  NULL, /* new_process */
-  NULL, /* delete_process */
-  NULL, /* new_thread */
-  NULL, /* delete_thread */
-  NULL, /* new_fork */
-  NULL, /* prepare_to_resume */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* get_thread_area */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* supports_range_stepping */
-  NULL, /* breakpoint_kind_from_current_state */
-  cris_supports_hardware_single_step,
-};
-
-void
-initialize_low_arch (void)
-{
-  init_registers_crisv32 ();
-
-  initialize_regsets_info (&cris_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-i386-ipa.c ./gdb/gdbserver/linux-i386-ipa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-i386-ipa.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-i386-ipa.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,294 +0,0 @@
-/* GNU/Linux/x86 specific low level interface, for the in-process
-   agent library for GDB.
-
-   Copyright (C) 2010-2020 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 "server.h"
-#include <sys/mman.h>
-#include "tracepoint.h"
-#include "linux-x86-tdesc.h"
-#include "gdbsupport/x86-xstate.h"
-
-/* GDB register numbers.  */
-
-enum i386_gdb_regnum
-{
-  I386_EAX_REGNUM,		/* %eax */
-  I386_ECX_REGNUM,		/* %ecx */
-  I386_EDX_REGNUM,		/* %edx */
-  I386_EBX_REGNUM,		/* %ebx */
-  I386_ESP_REGNUM,		/* %esp */
-  I386_EBP_REGNUM,		/* %ebp */
-  I386_ESI_REGNUM,		/* %esi */
-  I386_EDI_REGNUM,		/* %edi */
-  I386_EIP_REGNUM,		/* %eip */
-  I386_EFLAGS_REGNUM,		/* %eflags */
-  I386_CS_REGNUM,		/* %cs */
-  I386_SS_REGNUM,		/* %ss */
-  I386_DS_REGNUM,		/* %ds */
-  I386_ES_REGNUM,		/* %es */
-  I386_FS_REGNUM,		/* %fs */
-  I386_GS_REGNUM,		/* %gs */
-  I386_ST0_REGNUM		/* %st(0) */
-};
-
-#define i386_num_regs 16
-
-#define FT_CR_EAX 15
-#define FT_CR_ECX 14
-#define FT_CR_EDX 13
-#define FT_CR_EBX 12
-#define FT_CR_UESP 11
-#define FT_CR_EBP 10
-#define FT_CR_ESI 9
-#define FT_CR_EDI 8
-#define FT_CR_EIP 7
-#define FT_CR_EFL 6
-#define FT_CR_DS 5
-#define FT_CR_ES 4
-#define FT_CR_FS 3
-#define FT_CR_GS 2
-#define FT_CR_SS 1
-#define FT_CR_CS 0
-
-/* Mapping between the general-purpose registers in jump tracepoint
-   format and GDB's register array layout.  */
-
-static const int i386_ft_collect_regmap[] =
-{
-  FT_CR_EAX * 4, FT_CR_ECX * 4, FT_CR_EDX * 4, FT_CR_EBX * 4,
-  FT_CR_UESP * 4, FT_CR_EBP * 4, FT_CR_ESI * 4, FT_CR_EDI * 4,
-  FT_CR_EIP * 4, FT_CR_EFL * 4, FT_CR_CS * 4, FT_CR_SS * 4,
-  FT_CR_DS * 4, FT_CR_ES * 4, FT_CR_FS * 4, FT_CR_GS * 4
-};
-
-void
-supply_fast_tracepoint_registers (struct regcache *regcache,
-				  const unsigned char *buf)
-{
-  int i;
-
-  for (i = 0; i < i386_num_regs; i++)
-    {
-      int regval;
-
-      if (i >= I386_CS_REGNUM && i <= I386_GS_REGNUM)
-	regval = *(short *) (((char *) buf) + i386_ft_collect_regmap[i]);
-      else
-	regval = *(int *) (((char *) buf) + i386_ft_collect_regmap[i]);
-
-      supply_register (regcache, i, &regval);
-    }
-}
-
-ULONGEST
-get_raw_reg (const unsigned char *raw_regs, int regnum)
-{
-  /* This should maybe be allowed to return an error code, or perhaps
-     better, have the emit_reg detect this, and emit a constant zero,
-     or something.  */
-
-  if (regnum > i386_num_regs)
-    return 0;
-  else if (regnum >= I386_CS_REGNUM && regnum <= I386_GS_REGNUM)
-    return *(short *) (raw_regs + i386_ft_collect_regmap[regnum]);
-  else
-    return *(int *) (raw_regs + i386_ft_collect_regmap[regnum]);
-}
-
-#ifdef HAVE_UST
-
-#include <ust/processor.h>
-
-/* "struct registers" is the UST object type holding the registers at
-   the time of the static tracepoint marker call.  This doesn't
-   contain EIP, but we know what it must have been (the marker
-   address).  */
-
-#define ST_REGENTRY(REG)			\
-  {						\
-    offsetof (struct registers, REG),		\
-    sizeof (((struct registers *) NULL)->REG)	\
-  }
-
-static struct
-{
-  int offset;
-  int size;
-} i386_st_collect_regmap[] =
-  {
-    ST_REGENTRY(eax),
-    ST_REGENTRY(ecx),
-    ST_REGENTRY(edx),
-    ST_REGENTRY(ebx),
-    ST_REGENTRY(esp),
-    ST_REGENTRY(ebp),
-    ST_REGENTRY(esi),
-    ST_REGENTRY(edi),
-    { -1, 0 }, /* eip */
-    ST_REGENTRY(eflags),
-    ST_REGENTRY(cs),
-    ST_REGENTRY(ss),
-  };
-
-#define i386_NUM_ST_COLLECT_GREGS \
-  (sizeof (i386_st_collect_regmap) / sizeof (i386_st_collect_regmap[0]))
-
-void
-supply_static_tracepoint_registers (struct regcache *regcache,
-				    const unsigned char *buf,
-				    CORE_ADDR pc)
-{
-  int i;
-  unsigned int newpc = pc;
-
-  supply_register (regcache, I386_EIP_REGNUM, &newpc);
-
-  for (i = 0; i < i386_NUM_ST_COLLECT_GREGS; i++)
-    if (i386_st_collect_regmap[i].offset != -1)
-      {
-	switch (i386_st_collect_regmap[i].size)
-	  {
-	  case 4:
-	    supply_register (regcache, i,
-			     ((char *) buf)
-			     + i386_st_collect_regmap[i].offset);
-	    break;
-	  case 2:
-	    {
-	      unsigned long reg
-		= * (short *) (((char *) buf)
-			       + i386_st_collect_regmap[i].offset);
-	      reg &= 0xffff;
-	      supply_register (regcache, i, &reg);
-	    }
-	    break;
-	  default:
-	    internal_error (__FILE__, __LINE__, "unhandled register size: %d",
-			    i386_st_collect_regmap[i].size);
-	  }
-      }
-}
-
-#endif /* HAVE_UST */
-
-
-/* This is only needed because reg-i386-linux-lib.o references it.  We
-   may use it proper at some point.  */
-const char *gdbserver_xmltarget;
-
-/* Attempt to allocate memory for trampolines in the first 64 KiB of
-   memory to enable smaller jump patches.  */
-
-static void
-initialize_fast_tracepoint_trampoline_buffer (void)
-{
-  const CORE_ADDR buffer_end = 64 * 1024;
-  /* Ensure that the buffer will be at least 1 KiB in size, which is
-     enough space for over 200 fast tracepoints.  */
-  const int min_buffer_size = 1024;
-  char buf[IPA_BUFSIZ];
-  CORE_ADDR mmap_min_addr = buffer_end + 1;
-  ULONGEST buffer_size;
-  FILE *f = fopen ("/proc/sys/vm/mmap_min_addr", "r");
-
-  if (!f)
-    {    
-      snprintf (buf, sizeof (buf), "mmap_min_addr open failed: %s",
-		safe_strerror (errno));
-      set_trampoline_buffer_space (0, 0, buf);
-      return;
-    }
-
-  if (fgets (buf, IPA_BUFSIZ, f))
-    sscanf (buf, "%llu", &mmap_min_addr);
-      
-  fclose (f);
-      
-  buffer_size = buffer_end - mmap_min_addr;
-
-  if (buffer_size >= min_buffer_size)
-    {
-      if (mmap ((void *) (uintptr_t) mmap_min_addr, buffer_size,
-		PROT_READ | PROT_EXEC | PROT_WRITE,
-		MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS,
-		-1, 0)
-	  != MAP_FAILED)
-	set_trampoline_buffer_space (mmap_min_addr, buffer_end, NULL);
-      else
-	{
-	  snprintf (buf, IPA_BUFSIZ, "low-64K-buffer mmap() failed: %s",
-		    safe_strerror (errno));
-	  set_trampoline_buffer_space (0, 0, buf);
-	}
-    }
-  else
-    {
-      snprintf (buf, IPA_BUFSIZ, "mmap_min_addr is %d, must be %d or less",
-		(int) mmap_min_addr, (int) buffer_end - min_buffer_size);
-      set_trampoline_buffer_space (0, 0, buf);
-    }
-}
-
-/* Map the tdesc index to xcr0 mask.  */
-static uint64_t idx2mask[X86_TDESC_LAST] = {
-  X86_XSTATE_X87_MASK,
-  X86_XSTATE_SSE_MASK,
-  X86_XSTATE_AVX_MASK,
-  X86_XSTATE_MPX_MASK,
-  X86_XSTATE_AVX_MPX_MASK,
-  X86_XSTATE_AVX_AVX512_MASK,
-  X86_XSTATE_AVX_MPX_AVX512_PKU_MASK,
-};
-
-/* Return target_desc to use for IPA, given the tdesc index passed by
-   gdbserver.  */
-
-const struct target_desc *
-get_ipa_tdesc (int idx)
-{
-  if (idx >= X86_TDESC_LAST)
-    {
-      internal_error (__FILE__, __LINE__,
-		      "unknown ipa tdesc index: %d", idx);
-    }
-  return i386_linux_read_description (idx2mask[idx]);
-}
-
-/* Allocate buffer for the jump pads.  On i386, we can reach an arbitrary
-   address with a jump instruction, so just allocate normally.  */
-
-void *
-alloc_jump_pad_buffer (size_t size)
-{
-  void *res = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
-		    MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-
-  if (res == MAP_FAILED)
-    return NULL;
-
-  return res;
-}
-
-void
-initialize_low_tracepoint (void)
-{
-  initialize_fast_tracepoint_trampoline_buffer ();
-  for (auto i = 0; i < X86_TDESC_LAST; i++)
-    i386_linux_read_description (idx2mask[i]);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-ia64-low.c ./gdb/gdbserver/linux-ia64-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-ia64-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-ia64-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,360 +0,0 @@
-/* GNU/Linux/IA64 specific low level interface, for the remote server for GDB.
-   Copyright (C) 1995-2020 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 "server.h"
-#include "linux-low.h"
-
-#ifdef HAVE_SYS_REG_H
-#include <sys/reg.h>
-#endif
-
-/* Defined in auto-generated file reg-ia64.c.  */
-void init_registers_ia64 (void);
-extern const struct target_desc *tdesc_ia64;
-
-#define ia64_num_regs 462
-
-#include <asm/ptrace_offsets.h>
-
-static int ia64_regmap[] =
-  {
-    /* general registers */
-    -1,		/* gr0 not available; i.e, it's always zero */
-    PT_R1,
-    PT_R2,
-    PT_R3,
-    PT_R4,
-    PT_R5,
-    PT_R6,
-    PT_R7,
-    PT_R8,
-    PT_R9,
-    PT_R10,
-    PT_R11,
-    PT_R12,
-    PT_R13,
-    PT_R14,
-    PT_R15,
-    PT_R16,
-    PT_R17,
-    PT_R18,
-    PT_R19,
-    PT_R20,
-    PT_R21,
-    PT_R22,
-    PT_R23,
-    PT_R24,
-    PT_R25,
-    PT_R26,
-    PT_R27,
-    PT_R28,
-    PT_R29,
-    PT_R30,
-    PT_R31,
-    /* gr32 through gr127 not directly available via the ptrace interface */
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    /* Floating point registers */
-    -1, -1,	/* f0 and f1 not available (f0 is +0.0 and f1 is +1.0) */
-    PT_F2,
-    PT_F3,
-    PT_F4,
-    PT_F5,
-    PT_F6,
-    PT_F7,
-    PT_F8,
-    PT_F9,
-    PT_F10,
-    PT_F11,
-    PT_F12,
-    PT_F13,
-    PT_F14,
-    PT_F15,
-    PT_F16,
-    PT_F17,
-    PT_F18,
-    PT_F19,
-    PT_F20,
-    PT_F21,
-    PT_F22,
-    PT_F23,
-    PT_F24,
-    PT_F25,
-    PT_F26,
-    PT_F27,
-    PT_F28,
-    PT_F29,
-    PT_F30,
-    PT_F31,
-    PT_F32,
-    PT_F33,
-    PT_F34,
-    PT_F35,
-    PT_F36,
-    PT_F37,
-    PT_F38,
-    PT_F39,
-    PT_F40,
-    PT_F41,
-    PT_F42,
-    PT_F43,
-    PT_F44,
-    PT_F45,
-    PT_F46,
-    PT_F47,
-    PT_F48,
-    PT_F49,
-    PT_F50,
-    PT_F51,
-    PT_F52,
-    PT_F53,
-    PT_F54,
-    PT_F55,
-    PT_F56,
-    PT_F57,
-    PT_F58,
-    PT_F59,
-    PT_F60,
-    PT_F61,
-    PT_F62,
-    PT_F63,
-    PT_F64,
-    PT_F65,
-    PT_F66,
-    PT_F67,
-    PT_F68,
-    PT_F69,
-    PT_F70,
-    PT_F71,
-    PT_F72,
-    PT_F73,
-    PT_F74,
-    PT_F75,
-    PT_F76,
-    PT_F77,
-    PT_F78,
-    PT_F79,
-    PT_F80,
-    PT_F81,
-    PT_F82,
-    PT_F83,
-    PT_F84,
-    PT_F85,
-    PT_F86,
-    PT_F87,
-    PT_F88,
-    PT_F89,
-    PT_F90,
-    PT_F91,
-    PT_F92,
-    PT_F93,
-    PT_F94,
-    PT_F95,
-    PT_F96,
-    PT_F97,
-    PT_F98,
-    PT_F99,
-    PT_F100,
-    PT_F101,
-    PT_F102,
-    PT_F103,
-    PT_F104,
-    PT_F105,
-    PT_F106,
-    PT_F107,
-    PT_F108,
-    PT_F109,
-    PT_F110,
-    PT_F111,
-    PT_F112,
-    PT_F113,
-    PT_F114,
-    PT_F115,
-    PT_F116,
-    PT_F117,
-    PT_F118,
-    PT_F119,
-    PT_F120,
-    PT_F121,
-    PT_F122,
-    PT_F123,
-    PT_F124,
-    PT_F125,
-    PT_F126,
-    PT_F127,
-    /* predicate registers - we don't fetch these individually */
-    -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1,
-    /* branch registers */
-    PT_B0,
-    PT_B1,
-    PT_B2,
-    PT_B3,
-    PT_B4,
-    PT_B5,
-    PT_B6,
-    PT_B7,
-    /* virtual frame pointer and virtual return address pointer */
-    -1, -1,
-    /* other registers */
-    PT_PR,
-    PT_CR_IIP,	/* ip */
-    PT_CR_IPSR, /* psr */
-    PT_CFM,	/* cfm */
-    /* kernel registers not visible via ptrace interface (?) */
-    -1, -1, -1, -1, -1, -1, -1, -1,
-    /* hole */
-    -1, -1, -1, -1, -1, -1, -1, -1,
-    PT_AR_RSC,
-    PT_AR_BSP,
-    PT_AR_BSPSTORE,
-    PT_AR_RNAT,
-    -1,
-    -1,		/* Not available: FCR, IA32 floating control register */
-    -1, -1,
-    -1,		/* Not available: EFLAG */
-    -1,		/* Not available: CSD */
-    -1,		/* Not available: SSD */
-    -1,		/* Not available: CFLG */
-    -1,		/* Not available: FSR */
-    -1,		/* Not available: FIR */
-    -1,		/* Not available: FDR */
-    -1,
-    PT_AR_CCV,
-    -1, -1, -1,
-    PT_AR_UNAT,
-    -1, -1, -1,
-    PT_AR_FPSR,
-    -1, -1, -1,
-    -1,		/* Not available: ITC */
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    PT_AR_PFS,
-    PT_AR_LC,
-    PT_AR_EC,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-    -1,
-  };
-
-static int
-ia64_cannot_store_register (int regno)
-{
-  return 0;
-}
-
-static int
-ia64_cannot_fetch_register (int regno)
-{
-  return 0;
-}
-
-/* GDB register numbers.  */
-#define IA64_GR0_REGNUM		0
-#define IA64_FR0_REGNUM		128
-#define IA64_FR1_REGNUM		129
-
-static int
-ia64_fetch_register (struct regcache *regcache, int regnum)
-{
-  /* r0 cannot be fetched but is always zero.  */
-  if (regnum == IA64_GR0_REGNUM)
-    {
-      const gdb_byte zero[8] = { 0 };
-
-      gdb_assert (sizeof (zero) == register_size (regcache->tdesc, regnum));
-      supply_register (regcache, regnum, zero);
-      return 1;
-    }
-
-  /* fr0 cannot be fetched but is always zero.  */
-  if (regnum == IA64_FR0_REGNUM)
-    {
-      const gdb_byte f_zero[16] = { 0 };
-
-      gdb_assert (sizeof (f_zero) == register_size (regcache->tdesc, regnum));
-      supply_register (regcache, regnum, f_zero);
-      return 1;
-    }
-
-  /* fr1 cannot be fetched but is always one (1.0).  */
-  if (regnum == IA64_FR1_REGNUM)
-    {
-      const gdb_byte f_one[16] =
-	{ 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0xff, 0, 0, 0, 0, 0, 0 };
-
-      gdb_assert (sizeof (f_one) == register_size (regcache->tdesc, regnum));
-      supply_register (regcache, regnum, f_one);
-      return 1;
-    }
-
-  return 0;
-}
-
-static struct usrregs_info ia64_usrregs_info =
-  {
-    ia64_num_regs,
-    ia64_regmap,
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &ia64_usrregs_info
-  };
-
-static const struct regs_info *
-ia64_regs_info (void)
-{
-  return &regs_info;
-}
-
-static void
-ia64_arch_setup (void)
-{
-  current_process ()->tdesc = tdesc_ia64;
-}
-
-
-struct linux_target_ops the_low_target = {
-  ia64_arch_setup,
-  ia64_regs_info,
-  ia64_cannot_fetch_register,
-  ia64_cannot_store_register,
-  ia64_fetch_register,
-};
-
-void
-initialize_low_arch (void)
-{
-  init_registers_ia64 ();
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-low.c ./gdb/gdbserver/linux-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,7492 +0,0 @@
-/* Low level interface to ptrace, for the remote server for GDB.
-   Copyright (C) 1995-2020 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 "server.h"
-#include "linux-low.h"
-#include "nat/linux-osdata.h"
-#include "gdbsupport/agent.h"
-#include "tdesc.h"
-#include "gdbsupport/rsp-low.h"
-#include "gdbsupport/signals-state-save-restore.h"
-#include "nat/linux-nat.h"
-#include "nat/linux-waitpid.h"
-#include "gdbsupport/gdb_wait.h"
-#include "nat/gdb_ptrace.h"
-#include "nat/linux-ptrace.h"
-#include "nat/linux-procfs.h"
-#include "nat/linux-personality.h"
-#include <signal.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/syscall.h>
-#include <sched.h>
-#include <ctype.h>
-#include <pwd.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <sys/vfs.h>
-#include <sys/uio.h>
-#include "gdbsupport/filestuff.h"
-#include "tracepoint.h"
-#include "hostio.h"
-#include <inttypes.h>
-#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
-   then ELFMAG0 will have been defined.  If it didn't get included by
-   gdb_proc_service.h then including it will likely introduce a duplicate
-   definition of elf_fpregset_t.  */
-#include <elf.h>
-#endif
-#include "nat/linux-namespaces.h"
-
-#ifdef HAVE_PERSONALITY
-# include <sys/personality.h>
-# if !HAVE_DECL_ADDR_NO_RANDOMIZE
-#  define ADDR_NO_RANDOMIZE 0x0040000
-# endif
-#endif
-
-#ifndef O_LARGEFILE
-#define O_LARGEFILE 0
-#endif
-
-#ifndef AT_HWCAP2
-#define AT_HWCAP2 26
-#endif
-
-/* Some targets did not define these ptrace constants from the start,
-   so gdbserver defines them locally here.  In the future, these may
-   be removed after they are added to asm/ptrace.h.  */
-#if !(defined(PT_TEXT_ADDR) \
-      || defined(PT_DATA_ADDR) \
-      || defined(PT_TEXT_END_ADDR))
-#if defined(__mcoldfire__)
-/* These are still undefined in 3.10 kernels.  */
-#define PT_TEXT_ADDR 49*4
-#define PT_DATA_ADDR 50*4
-#define PT_TEXT_END_ADDR  51*4
-/* BFIN already defines these since at least 2.6.32 kernels.  */
-#elif defined(BFIN)
-#define PT_TEXT_ADDR 220
-#define PT_TEXT_END_ADDR 224
-#define PT_DATA_ADDR 228
-/* These are still undefined in 3.10 kernels.  */
-#elif defined(__TMS320C6X__)
-#define PT_TEXT_ADDR     (0x10000*4)
-#define PT_DATA_ADDR     (0x10004*4)
-#define PT_TEXT_END_ADDR (0x10008*4)
-#endif
-#endif
-
-#ifdef HAVE_LINUX_BTRACE
-# include "nat/linux-btrace.h"
-# include "gdbsupport/btrace-common.h"
-#endif
-
-#ifndef HAVE_ELF32_AUXV_T
-/* Copied from glibc's elf.h.  */
-typedef struct
-{
-  uint32_t a_type;		/* Entry type */
-  union
-    {
-      uint32_t a_val;		/* Integer value */
-      /* We use to have pointer elements added here.  We cannot do that,
-	 though, since it does not work when using 32-bit definitions
-	 on 64-bit platforms and vice versa.  */
-    } a_un;
-} Elf32_auxv_t;
-#endif
-
-#ifndef HAVE_ELF64_AUXV_T
-/* Copied from glibc's elf.h.  */
-typedef struct
-{
-  uint64_t a_type;		/* Entry type */
-  union
-    {
-      uint64_t a_val;		/* Integer value */
-      /* We use to have pointer elements added here.  We cannot do that,
-	 though, since it does not work when using 32-bit definitions
-	 on 64-bit platforms and vice versa.  */
-    } a_un;
-} Elf64_auxv_t;
-#endif
-
-/* Does the current host support PTRACE_GETREGSET?  */
-int have_ptrace_getregset = -1;
-
-/* LWP accessors.  */
-
-/* See nat/linux-nat.h.  */
-
-ptid_t
-ptid_of_lwp (struct lwp_info *lwp)
-{
-  return ptid_of (get_lwp_thread (lwp));
-}
-
-/* See nat/linux-nat.h.  */
-
-void
-lwp_set_arch_private_info (struct lwp_info *lwp,
-			   struct arch_lwp_info *info)
-{
-  lwp->arch_private = info;
-}
-
-/* See nat/linux-nat.h.  */
-
-struct arch_lwp_info *
-lwp_arch_private_info (struct lwp_info *lwp)
-{
-  return lwp->arch_private;
-}
-
-/* See nat/linux-nat.h.  */
-
-int
-lwp_is_stopped (struct lwp_info *lwp)
-{
-  return lwp->stopped;
-}
-
-/* See nat/linux-nat.h.  */
-
-enum target_stop_reason
-lwp_stop_reason (struct lwp_info *lwp)
-{
-  return lwp->stop_reason;
-}
-
-/* See nat/linux-nat.h.  */
-
-int
-lwp_is_stepping (struct lwp_info *lwp)
-{
-  return lwp->stepping;
-}
-
-/* A list of all unknown processes which receive stop signals.  Some
-   other process will presumably claim each of these as forked
-   children momentarily.  */
-
-struct simple_pid_list
-{
-  /* The process ID.  */
-  int pid;
-
-  /* The status as reported by waitpid.  */
-  int status;
-
-  /* Next in chain.  */
-  struct simple_pid_list *next;
-};
-struct simple_pid_list *stopped_pids;
-
-/* Trivial list manipulation functions to keep track of a list of new
-   stopped processes.  */
-
-static void
-add_to_pid_list (struct simple_pid_list **listp, int pid, int status)
-{
-  struct simple_pid_list *new_pid = XNEW (struct simple_pid_list);
-
-  new_pid->pid = pid;
-  new_pid->status = status;
-  new_pid->next = *listp;
-  *listp = new_pid;
-}
-
-static int
-pull_pid_from_list (struct simple_pid_list **listp, int pid, int *statusp)
-{
-  struct simple_pid_list **p;
-
-  for (p = listp; *p != NULL; p = &(*p)->next)
-    if ((*p)->pid == pid)
-      {
-	struct simple_pid_list *next = (*p)->next;
-
-	*statusp = (*p)->status;
-	xfree (*p);
-	*p = next;
-	return 1;
-      }
-  return 0;
-}
-
-enum stopping_threads_kind
-  {
-    /* Not stopping threads presently.  */
-    NOT_STOPPING_THREADS,
-
-    /* Stopping threads.  */
-    STOPPING_THREADS,
-
-    /* Stopping and suspending threads.  */
-    STOPPING_AND_SUSPENDING_THREADS
-  };
-
-/* This is set while stop_all_lwps is in effect.  */
-enum stopping_threads_kind stopping_threads = NOT_STOPPING_THREADS;
-
-/* FIXME make into a target method?  */
-int using_threads = 1;
-
-/* True if we're presently stabilizing threads (moving them out of
-   jump pads).  */
-static int stabilizing_threads;
-
-static void linux_resume_one_lwp (struct lwp_info *lwp,
-				  int step, int signal, siginfo_t *info);
-static void linux_resume (struct thread_resume *resume_info, size_t n);
-static void stop_all_lwps (int suspend, struct lwp_info *except);
-static void unstop_all_lwps (int unsuspend, struct lwp_info *except);
-static void unsuspend_all_lwps (struct lwp_info *except);
-static int linux_wait_for_event_filtered (ptid_t wait_ptid, ptid_t filter_ptid,
-					  int *wstat, int options);
-static int linux_wait_for_event (ptid_t ptid, int *wstat, int options);
-static struct lwp_info *add_lwp (ptid_t ptid);
-static void linux_mourn (struct process_info *process);
-static int linux_stopped_by_watchpoint (void);
-static void mark_lwp_dead (struct lwp_info *lwp, int wstat);
-static int lwp_is_marked_dead (struct lwp_info *lwp);
-static void proceed_all_lwps (void);
-static int finish_step_over (struct lwp_info *lwp);
-static int kill_lwp (unsigned long lwpid, int signo);
-static void enqueue_pending_signal (struct lwp_info *lwp, int signal, siginfo_t *info);
-static void complete_ongoing_step_over (void);
-static int linux_low_ptrace_options (int attached);
-static int check_ptrace_stopped_lwp_gone (struct lwp_info *lp);
-static void proceed_one_lwp (thread_info *thread, lwp_info *except);
-
-/* When the event-loop is doing a step-over, this points at the thread
-   being stepped.  */
-ptid_t step_over_bkpt;
-
-/* True if the low target can hardware single-step.  */
-
-static int
-can_hardware_single_step (void)
-{
-  if (the_low_target.supports_hardware_single_step != NULL)
-    return the_low_target.supports_hardware_single_step ();
-  else
-    return 0;
-}
-
-/* True if the low target can software single-step.  Such targets
-   implement the GET_NEXT_PCS callback.  */
-
-static int
-can_software_single_step (void)
-{
-  return (the_low_target.get_next_pcs != NULL);
-}
-
-/* True if the low target supports memory breakpoints.  If so, we'll
-   have a GET_PC implementation.  */
-
-static int
-supports_breakpoints (void)
-{
-  return (the_low_target.get_pc != NULL);
-}
-
-/* Returns true if this target can support fast tracepoints.  This
-   does not mean that the in-process agent has been loaded in the
-   inferior.  */
-
-static int
-supports_fast_tracepoints (void)
-{
-  return the_low_target.install_fast_tracepoint_jump_pad != NULL;
-}
-
-/* True if LWP is stopped in its stepping range.  */
-
-static int
-lwp_in_step_range (struct lwp_info *lwp)
-{
-  CORE_ADDR pc = lwp->stop_pc;
-
-  return (pc >= lwp->step_range_start && pc < lwp->step_range_end);
-}
-
-struct pending_signals
-{
-  int signal;
-  siginfo_t info;
-  struct pending_signals *prev;
-};
-
-/* The read/write ends of the pipe registered as waitable file in the
-   event loop.  */
-static int linux_event_pipe[2] = { -1, -1 };
-
-/* True if we're currently in async mode.  */
-#define target_is_async_p() (linux_event_pipe[0] != -1)
-
-static void send_sigstop (struct lwp_info *lwp);
-static void wait_for_sigstop (void);
-
-/* Return non-zero if HEADER is a 64-bit ELF file.  */
-
-static int
-elf_64_header_p (const Elf64_Ehdr *header, unsigned int *machine)
-{
-  if (header->e_ident[EI_MAG0] == ELFMAG0
-      && header->e_ident[EI_MAG1] == ELFMAG1
-      && header->e_ident[EI_MAG2] == ELFMAG2
-      && header->e_ident[EI_MAG3] == ELFMAG3)
-    {
-      *machine = header->e_machine;
-      return header->e_ident[EI_CLASS] == ELFCLASS64;
-
-    }
-  *machine = EM_NONE;
-  return -1;
-}
-
-/* Return non-zero if FILE is a 64-bit ELF file,
-   zero if the file is not a 64-bit ELF file,
-   and -1 if the file is not accessible or doesn't exist.  */
-
-static int
-elf_64_file_p (const char *file, unsigned int *machine)
-{
-  Elf64_Ehdr header;
-  int fd;
-
-  fd = open (file, O_RDONLY);
-  if (fd < 0)
-    return -1;
-
-  if (read (fd, &header, sizeof (header)) != sizeof (header))
-    {
-      close (fd);
-      return 0;
-    }
-  close (fd);
-
-  return elf_64_header_p (&header, machine);
-}
-
-/* Accepts an integer PID; Returns true if the executable PID is
-   running is a 64-bit ELF file..  */
-
-int
-linux_pid_exe_is_elf_64_file (int pid, unsigned int *machine)
-{
-  char file[PATH_MAX];
-
-  sprintf (file, "/proc/%d/exe", pid);
-  return elf_64_file_p (file, machine);
-}
-
-static void
-delete_lwp (struct lwp_info *lwp)
-{
-  struct thread_info *thr = get_lwp_thread (lwp);
-
-  if (debug_threads)
-    debug_printf ("deleting %ld\n", lwpid_of (thr));
-
-  remove_thread (thr);
-
-  if (the_low_target.delete_thread != NULL)
-    the_low_target.delete_thread (lwp->arch_private);
-  else
-    gdb_assert (lwp->arch_private == NULL);
-
-  free (lwp);
-}
-
-/* Add a process to the common process list, and set its private
-   data.  */
-
-static struct process_info *
-linux_add_process (int pid, int attached)
-{
-  struct process_info *proc;
-
-  proc = add_process (pid, attached);
-  proc->priv = XCNEW (struct process_info_private);
-
-  if (the_low_target.new_process != NULL)
-    proc->priv->arch_private = the_low_target.new_process ();
-
-  return proc;
-}
-
-static CORE_ADDR get_pc (struct lwp_info *lwp);
-
-/* Call the target arch_setup function on the current thread.  */
-
-static void
-linux_arch_setup (void)
-{
-  the_low_target.arch_setup ();
-}
-
-/* Call the target arch_setup function on THREAD.  */
-
-static void
-linux_arch_setup_thread (struct thread_info *thread)
-{
-  struct thread_info *saved_thread;
-
-  saved_thread = current_thread;
-  current_thread = thread;
-
-  linux_arch_setup ();
-
-  current_thread = saved_thread;
-}
-
-/* Handle a GNU/Linux extended wait response.  If we see a clone,
-   fork, or vfork event, we need to add the new LWP to our list
-   (and return 0 so as not to report the trap to higher layers).
-   If we see an exec event, we will modify ORIG_EVENT_LWP to point
-   to a new LWP representing the new program.  */
-
-static int
-handle_extended_wait (struct lwp_info **orig_event_lwp, int wstat)
-{
-  client_state &cs = get_client_state ();
-  struct lwp_info *event_lwp = *orig_event_lwp;
-  int event = linux_ptrace_get_extended_event (wstat);
-  struct thread_info *event_thr = get_lwp_thread (event_lwp);
-  struct lwp_info *new_lwp;
-
-  gdb_assert (event_lwp->waitstatus.kind == TARGET_WAITKIND_IGNORE);
-
-  /* All extended events we currently use are mid-syscall.  Only
-     PTRACE_EVENT_STOP is delivered more like a signal-stop, but
-     you have to be using PTRACE_SEIZE to get that.  */
-  event_lwp->syscall_state = TARGET_WAITKIND_SYSCALL_ENTRY;
-
-  if ((event == PTRACE_EVENT_FORK) || (event == PTRACE_EVENT_VFORK)
-      || (event == PTRACE_EVENT_CLONE))
-    {
-      ptid_t ptid;
-      unsigned long new_pid;
-      int ret, status;
-
-      /* Get the pid of the new lwp.  */
-      ptrace (PTRACE_GETEVENTMSG, lwpid_of (event_thr), (PTRACE_TYPE_ARG3) 0,
-	      &new_pid);
-
-      /* If we haven't already seen the new PID stop, wait for it now.  */
-      if (!pull_pid_from_list (&stopped_pids, new_pid, &status))
-	{
-	  /* The new child has a pending SIGSTOP.  We can't affect it until it
-	     hits the SIGSTOP, but we're already attached.  */
-
-	  ret = my_waitpid (new_pid, &status, __WALL);
-
-	  if (ret == -1)
-	    perror_with_name ("waiting for new child");
-	  else if (ret != new_pid)
-	    warning ("wait returned unexpected PID %d", ret);
-	  else if (!WIFSTOPPED (status))
-	    warning ("wait returned unexpected status 0x%x", status);
-	}
-
-      if (event == PTRACE_EVENT_FORK || event == PTRACE_EVENT_VFORK)
-	{
-	  struct process_info *parent_proc;
-	  struct process_info *child_proc;
-	  struct lwp_info *child_lwp;
-	  struct thread_info *child_thr;
-	  struct target_desc *tdesc;
-
-	  ptid = ptid_t (new_pid, new_pid, 0);
-
-	  if (debug_threads)
-	    {
-	      debug_printf ("HEW: Got fork event from LWP %ld, "
-			    "new child is %d\n",
-			    ptid_of (event_thr).lwp (),
-			    ptid.pid ());
-	    }
-
-	  /* Add the new process to the tables and clone the breakpoint
-	     lists of the parent.  We need to do this even if the new process
-	     will be detached, since we will need the process object and the
-	     breakpoints to remove any breakpoints from memory when we
-	     detach, and the client side will access registers.  */
-	  child_proc = linux_add_process (new_pid, 0);
-	  gdb_assert (child_proc != NULL);
-	  child_lwp = add_lwp (ptid);
-	  gdb_assert (child_lwp != NULL);
-	  child_lwp->stopped = 1;
-	  child_lwp->must_set_ptrace_flags = 1;
-	  child_lwp->status_pending_p = 0;
-	  child_thr = get_lwp_thread (child_lwp);
-	  child_thr->last_resume_kind = resume_stop;
-	  child_thr->last_status.kind = TARGET_WAITKIND_STOPPED;
-
-	  /* If we're suspending all threads, leave this one suspended
-	     too.  If the fork/clone parent is stepping over a breakpoint,
-	     all other threads have been suspended already.  Leave the
-	     child suspended too.  */
-	  if (stopping_threads == STOPPING_AND_SUSPENDING_THREADS
-	      || event_lwp->bp_reinsert != 0)
-	    {
-	      if (debug_threads)
-		debug_printf ("HEW: leaving child suspended\n");
-	      child_lwp->suspended = 1;
-	    }
-
-	  parent_proc = get_thread_process (event_thr);
-	  child_proc->attached = parent_proc->attached;
-
-	  if (event_lwp->bp_reinsert != 0
-	      && can_software_single_step ()
-	      && event == PTRACE_EVENT_VFORK)
-	    {
-	      /* If we leave single-step breakpoints there, child will
-		 hit it, so uninsert single-step breakpoints from parent
-		 (and child).  Once vfork child is done, reinsert
-		 them back to parent.  */
-	      uninsert_single_step_breakpoints (event_thr);
-	    }
-
-	  clone_all_breakpoints (child_thr, event_thr);
-
-	  tdesc = allocate_target_description ();
-	  copy_target_description (tdesc, parent_proc->tdesc);
-	  child_proc->tdesc = tdesc;
-
-	  /* Clone arch-specific process data.  */
-	  if (the_low_target.new_fork != NULL)
-	    the_low_target.new_fork (parent_proc, child_proc);
-
-	  /* Save fork info in the parent thread.  */
-	  if (event == PTRACE_EVENT_FORK)
-	    event_lwp->waitstatus.kind = TARGET_WAITKIND_FORKED;
-	  else if (event == PTRACE_EVENT_VFORK)
-	    event_lwp->waitstatus.kind = TARGET_WAITKIND_VFORKED;
-
-	  event_lwp->waitstatus.value.related_pid = ptid;
-
-	  /* The status_pending field contains bits denoting the
-	     extended event, so when the pending event is handled,
-	     the handler will look at lwp->waitstatus.  */
-	  event_lwp->status_pending_p = 1;
-	  event_lwp->status_pending = wstat;
-
-	  /* Link the threads until the parent event is passed on to
-	     higher layers.  */
-	  event_lwp->fork_relative = child_lwp;
-	  child_lwp->fork_relative = event_lwp;
-
-	  /* If the parent thread is doing step-over with single-step
-	     breakpoints, the list of single-step breakpoints are cloned
-	     from the parent's.  Remove them from the child process.
-	     In case of vfork, we'll reinsert them back once vforked
-	     child is done.  */
-	  if (event_lwp->bp_reinsert != 0
-	      && can_software_single_step ())
-	    {
-	      /* The child process is forked and stopped, so it is safe
-		 to access its memory without stopping all other threads
-		 from other processes.  */
-	      delete_single_step_breakpoints (child_thr);
-
-	      gdb_assert (has_single_step_breakpoints (event_thr));
-	      gdb_assert (!has_single_step_breakpoints (child_thr));
-	    }
-
-	  /* Report the event.  */
-	  return 0;
-	}
-
-      if (debug_threads)
-	debug_printf ("HEW: Got clone event "
-		      "from LWP %ld, new child is LWP %ld\n",
-		      lwpid_of (event_thr), new_pid);
-
-      ptid = ptid_t (pid_of (event_thr), new_pid, 0);
-      new_lwp = add_lwp (ptid);
-
-      /* Either we're going to immediately resume the new thread
-	 or leave it stopped.  linux_resume_one_lwp is a nop if it
-	 thinks the thread is currently running, so set this first
-	 before calling linux_resume_one_lwp.  */
-      new_lwp->stopped = 1;
-
-      /* If we're suspending all threads, leave this one suspended
-	 too.  If the fork/clone parent is stepping over a breakpoint,
-	 all other threads have been suspended already.  Leave the
-	 child suspended too.  */
-      if (stopping_threads == STOPPING_AND_SUSPENDING_THREADS
-	  || event_lwp->bp_reinsert != 0)
-	new_lwp->suspended = 1;
-
-      /* Normally we will get the pending SIGSTOP.  But in some cases
-	 we might get another signal delivered to the group first.
-	 If we do get another signal, be sure not to lose it.  */
-      if (WSTOPSIG (status) != SIGSTOP)
-	{
-	  new_lwp->stop_expected = 1;
-	  new_lwp->status_pending_p = 1;
-	  new_lwp->status_pending = status;
-	}
-      else if (cs.report_thread_events)
-	{
-	  new_lwp->waitstatus.kind = TARGET_WAITKIND_THREAD_CREATED;
-	  new_lwp->status_pending_p = 1;
-	  new_lwp->status_pending = status;
-	}
-
-#ifdef USE_THREAD_DB
-      thread_db_notice_clone (event_thr, ptid);
-#endif
-
-      /* Don't report the event.  */
-      return 1;
-    }
-  else if (event == PTRACE_EVENT_VFORK_DONE)
-    {
-      event_lwp->waitstatus.kind = TARGET_WAITKIND_VFORK_DONE;
-
-      if (event_lwp->bp_reinsert != 0 && can_software_single_step ())
-	{
-	  reinsert_single_step_breakpoints (event_thr);
-
-	  gdb_assert (has_single_step_breakpoints (event_thr));
-	}
-
-      /* Report the event.  */
-      return 0;
-    }
-  else if (event == PTRACE_EVENT_EXEC && cs.report_exec_events)
-    {
-      struct process_info *proc;
-      std::vector<int> syscalls_to_catch;
-      ptid_t event_ptid;
-      pid_t event_pid;
-
-      if (debug_threads)
-	{
-	  debug_printf ("HEW: Got exec event from LWP %ld\n",
-			lwpid_of (event_thr));
-	}
-
-      /* Get the event ptid.  */
-      event_ptid = ptid_of (event_thr);
-      event_pid = event_ptid.pid ();
-
-      /* Save the syscall list from the execing process.  */
-      proc = get_thread_process (event_thr);
-      syscalls_to_catch = std::move (proc->syscalls_to_catch);
-
-      /* Delete the execing process and all its threads.  */
-      linux_mourn (proc);
-      current_thread = NULL;
-
-      /* Create a new process/lwp/thread.  */
-      proc = linux_add_process (event_pid, 0);
-      event_lwp = add_lwp (event_ptid);
-      event_thr = get_lwp_thread (event_lwp);
-      gdb_assert (current_thread == event_thr);
-      linux_arch_setup_thread (event_thr);
-
-      /* Set the event status.  */
-      event_lwp->waitstatus.kind = TARGET_WAITKIND_EXECD;
-      event_lwp->waitstatus.value.execd_pathname
-	= xstrdup (linux_proc_pid_to_exec_file (lwpid_of (event_thr)));
-
-      /* Mark the exec status as pending.  */
-      event_lwp->stopped = 1;
-      event_lwp->status_pending_p = 1;
-      event_lwp->status_pending = wstat;
-      event_thr->last_resume_kind = resume_continue;
-      event_thr->last_status.kind = TARGET_WAITKIND_IGNORE;
-
-      /* Update syscall state in the new lwp, effectively mid-syscall too.  */
-      event_lwp->syscall_state = TARGET_WAITKIND_SYSCALL_ENTRY;
-
-      /* Restore the list to catch.  Don't rely on the client, which is free
-	 to avoid sending a new list when the architecture doesn't change.
-	 Also, for ANY_SYSCALL, the architecture doesn't really matter.  */
-      proc->syscalls_to_catch = std::move (syscalls_to_catch);
-
-      /* Report the event.  */
-      *orig_event_lwp = event_lwp;
-      return 0;
-    }
-
-  internal_error (__FILE__, __LINE__, _("unknown ptrace event %d"), event);
-}
-
-/* Return the PC as read from the regcache of LWP, without any
-   adjustment.  */
-
-static CORE_ADDR
-get_pc (struct lwp_info *lwp)
-{
-  struct thread_info *saved_thread;
-  struct regcache *regcache;
-  CORE_ADDR pc;
-
-  if (the_low_target.get_pc == NULL)
-    return 0;
-
-  saved_thread = current_thread;
-  current_thread = get_lwp_thread (lwp);
-
-  regcache = get_thread_regcache (current_thread, 1);
-  pc = (*the_low_target.get_pc) (regcache);
-
-  if (debug_threads)
-    debug_printf ("pc is 0x%lx\n", (long) pc);
-
-  current_thread = saved_thread;
-  return pc;
-}
-
-/* This function should only be called if LWP got a SYSCALL_SIGTRAP.
-   Fill *SYSNO with the syscall nr trapped.  */
-
-static void
-get_syscall_trapinfo (struct lwp_info *lwp, int *sysno)
-{
-  struct thread_info *saved_thread;
-  struct regcache *regcache;
-
-  if (the_low_target.get_syscall_trapinfo == NULL)
-    {
-      /* If we cannot get the syscall trapinfo, report an unknown
-	 system call number.  */
-      *sysno = UNKNOWN_SYSCALL;
-      return;
-    }
-
-  saved_thread = current_thread;
-  current_thread = get_lwp_thread (lwp);
-
-  regcache = get_thread_regcache (current_thread, 1);
-  (*the_low_target.get_syscall_trapinfo) (regcache, sysno);
-
-  if (debug_threads)
-    debug_printf ("get_syscall_trapinfo sysno %d\n", *sysno);
-
-  current_thread = saved_thread;
-}
-
-static int check_stopped_by_watchpoint (struct lwp_info *child);
-
-/* Called when the LWP stopped for a signal/trap.  If it stopped for a
-   trap check what caused it (breakpoint, watchpoint, trace, etc.),
-   and save the result in the LWP's stop_reason field.  If it stopped
-   for a breakpoint, decrement the PC if necessary on the lwp's
-   architecture.  Returns true if we now have the LWP's stop PC.  */
-
-static int
-save_stop_reason (struct lwp_info *lwp)
-{
-  CORE_ADDR pc;
-  CORE_ADDR sw_breakpoint_pc;
-  struct thread_info *saved_thread;
-#if USE_SIGTRAP_SIGINFO
-  siginfo_t siginfo;
-#endif
-
-  if (the_low_target.get_pc == NULL)
-    return 0;
-
-  pc = get_pc (lwp);
-  sw_breakpoint_pc = pc - the_low_target.decr_pc_after_break;
-
-  /* breakpoint_at reads from the current thread.  */
-  saved_thread = current_thread;
-  current_thread = get_lwp_thread (lwp);
-
-#if USE_SIGTRAP_SIGINFO
-  if (ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread),
-	      (PTRACE_TYPE_ARG3) 0, &siginfo) == 0)
-    {
-      if (siginfo.si_signo == SIGTRAP)
-	{
-	  if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code)
-	      && GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code))
-	    {
-	      /* The si_code is ambiguous on this arch -- check debug
-		 registers.  */
-	      if (!check_stopped_by_watchpoint (lwp))
-		lwp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
-	    }
-	  else if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code))
-	    {
-	      /* If we determine the LWP stopped for a SW breakpoint,
-		 trust it.  Particularly don't check watchpoint
-		 registers, because at least on s390, we'd find
-		 stopped-by-watchpoint as long as there's a watchpoint
-		 set.  */
-	      lwp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
-	    }
-	  else if (GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code))
-	    {
-	      /* This can indicate either a hardware breakpoint or
-		 hardware watchpoint.  Check debug registers.  */
-	      if (!check_stopped_by_watchpoint (lwp))
-		lwp->stop_reason = TARGET_STOPPED_BY_HW_BREAKPOINT;
-	    }
-	  else if (siginfo.si_code == TRAP_TRACE)
-	    {
-	      /* We may have single stepped an instruction that
-		 triggered a watchpoint.  In that case, on some
-		 architectures (such as x86), instead of TRAP_HWBKPT,
-		 si_code indicates TRAP_TRACE, and we need to check
-		 the debug registers separately.  */
-	      if (!check_stopped_by_watchpoint (lwp))
-		lwp->stop_reason = TARGET_STOPPED_BY_SINGLE_STEP;
-	    }
-	}
-    }
-#else
-  /* We may have just stepped a breakpoint instruction.  E.g., in
-     non-stop mode, GDB first tells the thread A to step a range, and
-     then the user inserts a breakpoint inside the range.  In that
-     case we need to report the breakpoint PC.  */
-  if ((!lwp->stepping || lwp->stop_pc == sw_breakpoint_pc)
-      && (*the_low_target.breakpoint_at) (sw_breakpoint_pc))
-    lwp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
-
-  if (hardware_breakpoint_inserted_here (pc))
-    lwp->stop_reason = TARGET_STOPPED_BY_HW_BREAKPOINT;
-
-  if (lwp->stop_reason == TARGET_STOPPED_BY_NO_REASON)
-    check_stopped_by_watchpoint (lwp);
-#endif
-
-  if (lwp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT)
-    {
-      if (debug_threads)
-	{
-	  struct thread_info *thr = get_lwp_thread (lwp);
-
-	  debug_printf ("CSBB: %s stopped by software breakpoint\n",
-			target_pid_to_str (ptid_of (thr)));
-	}
-
-      /* Back up the PC if necessary.  */
-      if (pc != sw_breakpoint_pc)
-	{
-	  struct regcache *regcache
-	    = get_thread_regcache (current_thread, 1);
-	  (*the_low_target.set_pc) (regcache, sw_breakpoint_pc);
-	}
-
-      /* Update this so we record the correct stop PC below.  */
-      pc = sw_breakpoint_pc;
-    }
-  else if (lwp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT)
-    {
-      if (debug_threads)
-	{
-	  struct thread_info *thr = get_lwp_thread (lwp);
-
-	  debug_printf ("CSBB: %s stopped by hardware breakpoint\n",
-			target_pid_to_str (ptid_of (thr)));
-	}
-    }
-  else if (lwp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT)
-    {
-      if (debug_threads)
-	{
-	  struct thread_info *thr = get_lwp_thread (lwp);
-
-	  debug_printf ("CSBB: %s stopped by hardware watchpoint\n",
-			target_pid_to_str (ptid_of (thr)));
-	}
-    }
-  else if (lwp->stop_reason == TARGET_STOPPED_BY_SINGLE_STEP)
-    {
-      if (debug_threads)
-	{
-	  struct thread_info *thr = get_lwp_thread (lwp);
-
-	  debug_printf ("CSBB: %s stopped by trace\n",
-			target_pid_to_str (ptid_of (thr)));
-	}
-    }
-
-  lwp->stop_pc = pc;
-  current_thread = saved_thread;
-  return 1;
-}
-
-static struct lwp_info *
-add_lwp (ptid_t ptid)
-{
-  struct lwp_info *lwp;
-
-  lwp = XCNEW (struct lwp_info);
-
-  lwp->waitstatus.kind = TARGET_WAITKIND_IGNORE;
-
-  lwp->thread = add_thread (ptid, lwp);
-
-  if (the_low_target.new_thread != NULL)
-    the_low_target.new_thread (lwp);
-
-  return lwp;
-}
-
-/* Callback to be used when calling fork_inferior, responsible for
-   actually initiating the tracing of the inferior.  */
-
-static void
-linux_ptrace_fun ()
-{
-  if (ptrace (PTRACE_TRACEME, 0, (PTRACE_TYPE_ARG3) 0,
-	      (PTRACE_TYPE_ARG4) 0) < 0)
-    trace_start_error_with_name ("ptrace");
-
-  if (setpgid (0, 0) < 0)
-    trace_start_error_with_name ("setpgid");
-
-  /* If GDBserver is connected to gdb via stdio, redirect the inferior's
-     stdout to stderr so that inferior i/o doesn't corrupt the connection.
-     Also, redirect stdin to /dev/null.  */
-  if (remote_connection_is_stdio ())
-    {
-      if (close (0) < 0)
-	trace_start_error_with_name ("close");
-      if (open ("/dev/null", O_RDONLY) < 0)
-	trace_start_error_with_name ("open");
-      if (dup2 (2, 1) < 0)
-	trace_start_error_with_name ("dup2");
-      if (write (2, "stdin/stdout redirected\n",
-		 sizeof ("stdin/stdout redirected\n") - 1) < 0)
-	{
-	  /* Errors ignored.  */;
-	}
-    }
-}
-
-/* Start an inferior process and returns its pid.
-   PROGRAM is the name of the program to be started, and PROGRAM_ARGS
-   are its arguments.  */
-
-static int
-linux_create_inferior (const char *program,
-		       const std::vector<char *> &program_args)
-{
-  client_state &cs = get_client_state ();
-  struct lwp_info *new_lwp;
-  int pid;
-  ptid_t ptid;
-
-  {
-    maybe_disable_address_space_randomization restore_personality
-      (cs.disable_randomization);
-    std::string str_program_args = stringify_argv (program_args);
-
-    pid = fork_inferior (program,
-			 str_program_args.c_str (),
-			 get_environ ()->envp (), linux_ptrace_fun,
-			 NULL, NULL, NULL, NULL);
-  }
-
-  linux_add_process (pid, 0);
-
-  ptid = ptid_t (pid, pid, 0);
-  new_lwp = add_lwp (ptid);
-  new_lwp->must_set_ptrace_flags = 1;
-
-  post_fork_inferior (pid, program);
-
-  return pid;
-}
-
-/* Implement the post_create_inferior target_ops method.  */
-
-static void
-linux_post_create_inferior (void)
-{
-  struct lwp_info *lwp = get_thread_lwp (current_thread);
-
-  linux_arch_setup ();
-
-  if (lwp->must_set_ptrace_flags)
-    {
-      struct process_info *proc = current_process ();
-      int options = linux_low_ptrace_options (proc->attached);
-
-      linux_enable_event_reporting (lwpid_of (current_thread), options);
-      lwp->must_set_ptrace_flags = 0;
-    }
-}
-
-/* Attach to an inferior process.  Returns 0 on success, ERRNO on
-   error.  */
-
-int
-linux_attach_lwp (ptid_t ptid)
-{
-  struct lwp_info *new_lwp;
-  int lwpid = ptid.lwp ();
-
-  if (ptrace (PTRACE_ATTACH, lwpid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0)
-      != 0)
-    return errno;
-
-  new_lwp = add_lwp (ptid);
-
-  /* We need to wait for SIGSTOP before being able to make the next
-     ptrace call on this LWP.  */
-  new_lwp->must_set_ptrace_flags = 1;
-
-  if (linux_proc_pid_is_stopped (lwpid))
-    {
-      if (debug_threads)
-	debug_printf ("Attached to a stopped process\n");
-
-      /* The process is definitely stopped.  It is in a job control
-	 stop, unless the kernel predates the TASK_STOPPED /
-	 TASK_TRACED distinction, in which case it might be in a
-	 ptrace stop.  Make sure it is in a ptrace stop; from there we
-	 can kill it, signal it, et cetera.
-
-	 First make sure there is a pending SIGSTOP.  Since we are
-	 already attached, the process can not transition from stopped
-	 to running without a PTRACE_CONT; so we know this signal will
-	 go into the queue.  The SIGSTOP generated by PTRACE_ATTACH is
-	 probably already in the queue (unless this kernel is old
-	 enough to use TASK_STOPPED for ptrace stops); but since
-	 SIGSTOP is not an RT signal, it can only be queued once.  */
-      kill_lwp (lwpid, SIGSTOP);
-
-      /* Finally, resume the stopped process.  This will deliver the
-	 SIGSTOP (or a higher priority signal, just like normal
-	 PTRACE_ATTACH), which we'll catch later on.  */
-      ptrace (PTRACE_CONT, lwpid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0);
-    }
-
-  /* The next time we wait for this LWP we'll see a SIGSTOP as PTRACE_ATTACH
-     brings it to a halt.
-
-     There are several cases to consider here:
-
-     1) gdbserver has already attached to the process and is being notified
-	of a new thread that is being created.
-	In this case we should ignore that SIGSTOP and resume the
-	process.  This is handled below by setting stop_expected = 1,
-	and the fact that add_thread sets last_resume_kind ==
-	resume_continue.
-
-     2) This is the first thread (the process thread), and we're attaching
-	to it via attach_inferior.
-	In this case we want the process thread to stop.
-	This is handled by having linux_attach set last_resume_kind ==
-	resume_stop after we return.
-
-	If the pid we are attaching to is also the tgid, we attach to and
-	stop all the existing threads.  Otherwise, we attach to pid and
-	ignore any other threads in the same group as this pid.
-
-     3) GDB is connecting to gdbserver and is requesting an enumeration of all
-	existing threads.
-	In this case we want the thread to stop.
-	FIXME: This case is currently not properly handled.
-	We should wait for the SIGSTOP but don't.  Things work apparently
-	because enough time passes between when we ptrace (ATTACH) and when
-	gdb makes the next ptrace call on the thread.
-
-     On the other hand, if we are currently trying to stop all threads, we
-     should treat the new thread as if we had sent it a SIGSTOP.  This works
-     because we are guaranteed that the add_lwp call above added us to the
-     end of the list, and so the new thread has not yet reached
-     wait_for_sigstop (but will).  */
-  new_lwp->stop_expected = 1;
-
-  return 0;
-}
-
-/* Callback for linux_proc_attach_tgid_threads.  Attach to PTID if not
-   already attached.  Returns true if a new LWP is found, false
-   otherwise.  */
-
-static int
-attach_proc_task_lwp_callback (ptid_t ptid)
-{
-  /* Is this a new thread?  */
-  if (find_thread_ptid (ptid) == NULL)
-    {
-      int lwpid = ptid.lwp ();
-      int err;
-
-      if (debug_threads)
-	debug_printf ("Found new lwp %d\n", lwpid);
-
-      err = linux_attach_lwp (ptid);
-
-      /* Be quiet if we simply raced with the thread exiting.  EPERM
-	 is returned if the thread's task still exists, and is marked
-	 as exited or zombie, as well as other conditions, so in that
-	 case, confirm the status in /proc/PID/status.  */
-      if (err == ESRCH
-	  || (err == EPERM && linux_proc_pid_is_gone (lwpid)))
-	{
-	  if (debug_threads)
-	    {
-	      debug_printf ("Cannot attach to lwp %d: "
-			    "thread is gone (%d: %s)\n",
-			    lwpid, err, safe_strerror (err));
-	    }
-	}
-      else if (err != 0)
-	{
-	  std::string reason
-	    = linux_ptrace_attach_fail_reason_string (ptid, err);
-
-	  warning (_("Cannot attach to lwp %d: %s"), lwpid, reason.c_str ());
-	}
-
-      return 1;
-    }
-  return 0;
-}
-
-static void async_file_mark (void);
-
-/* Attach to PID.  If PID is the tgid, attach to it and all
-   of its threads.  */
-
-static int
-linux_attach (unsigned long pid)
-{
-  struct process_info *proc;
-  struct thread_info *initial_thread;
-  ptid_t ptid = ptid_t (pid, pid, 0);
-  int err;
-
-  proc = linux_add_process (pid, 1);
-
-  /* Attach to PID.  We will check for other threads
-     soon.  */
-  err = linux_attach_lwp (ptid);
-  if (err != 0)
-    {
-      remove_process (proc);
-
-      std::string reason = linux_ptrace_attach_fail_reason_string (ptid, err);
-      error ("Cannot attach to process %ld: %s", pid, reason.c_str ());
-    }
-
-  /* Don't ignore the initial SIGSTOP if we just attached to this
-     process.  It will be collected by wait shortly.  */
-  initial_thread = find_thread_ptid (ptid_t (pid, pid, 0));
-  initial_thread->last_resume_kind = resume_stop;
-
-  /* We must attach to every LWP.  If /proc is mounted, use that to
-     find them now.  On the one hand, the inferior may be using raw
-     clone instead of using pthreads.  On the other hand, even if it
-     is using pthreads, GDB may not be connected yet (thread_db needs
-     to do symbol lookups, through qSymbol).  Also, thread_db walks
-     structures in the inferior's address space to find the list of
-     threads/LWPs, and those structures may well be corrupted.  Note
-     that once thread_db is loaded, we'll still use it to list threads
-     and associate pthread info with each LWP.  */
-  linux_proc_attach_tgid_threads (pid, attach_proc_task_lwp_callback);
-
-  /* GDB will shortly read the xml target description for this
-     process, to figure out the process' architecture.  But the target
-     description is only filled in when the first process/thread in
-     the thread group reports its initial PTRACE_ATTACH SIGSTOP.  Do
-     that now, otherwise, if GDB is fast enough, it could read the
-     target description _before_ that initial stop.  */
-  if (non_stop)
-    {
-      struct lwp_info *lwp;
-      int wstat, lwpid;
-      ptid_t pid_ptid = ptid_t (pid);
-
-      lwpid = linux_wait_for_event_filtered (pid_ptid, pid_ptid,
-					     &wstat, __WALL);
-      gdb_assert (lwpid > 0);
-
-      lwp = find_lwp_pid (ptid_t (lwpid));
-
-      if (!WIFSTOPPED (wstat) || WSTOPSIG (wstat) != SIGSTOP)
-	{
-	  lwp->status_pending_p = 1;
-	  lwp->status_pending = wstat;
-	}
-
-      initial_thread->last_resume_kind = resume_continue;
-
-      async_file_mark ();
-
-      gdb_assert (proc->tdesc != NULL);
-    }
-
-  return 0;
-}
-
-static int
-last_thread_of_process_p (int pid)
-{
-  bool seen_one = false;
-
-  thread_info *thread = find_thread (pid, [&] (thread_info *thr_arg)
-    {
-      if (!seen_one)
-	{
-	  /* This is the first thread of this process we see.  */
-	  seen_one = true;
-	  return false;
-	}
-      else
-	{
-	  /* This is the second thread of this process we see.  */
-	  return true;
-	}
-    });
-
-  return thread == NULL;
-}
-
-/* Kill LWP.  */
-
-static void
-linux_kill_one_lwp (struct lwp_info *lwp)
-{
-  struct thread_info *thr = get_lwp_thread (lwp);
-  int pid = lwpid_of (thr);
-
-  /* PTRACE_KILL is unreliable.  After stepping into a signal handler,
-     there is no signal context, and ptrace(PTRACE_KILL) (or
-     ptrace(PTRACE_CONT, SIGKILL), pretty much the same) acts like
-     ptrace(CONT, pid, 0,0) and just resumes the tracee.  A better
-     alternative is to kill with SIGKILL.  We only need one SIGKILL
-     per process, not one for each thread.  But since we still support
-     support debugging programs using raw clone without CLONE_THREAD,
-     we send one for each thread.  For years, we used PTRACE_KILL
-     only, so we're being a bit paranoid about some old kernels where
-     PTRACE_KILL might work better (dubious if there are any such, but
-     that's why it's paranoia), so we try SIGKILL first, PTRACE_KILL
-     second, and so we're fine everywhere.  */
-
-  errno = 0;
-  kill_lwp (pid, SIGKILL);
-  if (debug_threads)
-    {
-      int save_errno = errno;
-
-      debug_printf ("LKL:  kill_lwp (SIGKILL) %s, 0, 0 (%s)\n",
-		    target_pid_to_str (ptid_of (thr)),
-		    save_errno ? safe_strerror (save_errno) : "OK");
-    }
-
-  errno = 0;
-  ptrace (PTRACE_KILL, pid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0);
-  if (debug_threads)
-    {
-      int save_errno = errno;
-
-      debug_printf ("LKL:  PTRACE_KILL %s, 0, 0 (%s)\n",
-		    target_pid_to_str (ptid_of (thr)),
-		    save_errno ? safe_strerror (save_errno) : "OK");
-    }
-}
-
-/* Kill LWP and wait for it to die.  */
-
-static void
-kill_wait_lwp (struct lwp_info *lwp)
-{
-  struct thread_info *thr = get_lwp_thread (lwp);
-  int pid = ptid_of (thr).pid ();
-  int lwpid = ptid_of (thr).lwp ();
-  int wstat;
-  int res;
-
-  if (debug_threads)
-    debug_printf ("kwl: killing lwp %d, for pid: %d\n", lwpid, pid);
-
-  do
-    {
-      linux_kill_one_lwp (lwp);
-
-      /* Make sure it died.  Notes:
-
-	 - The loop is most likely unnecessary.
-
-	 - We don't use linux_wait_for_event as that could delete lwps
-	   while we're iterating over them.  We're not interested in
-	   any pending status at this point, only in making sure all
-	   wait status on the kernel side are collected until the
-	   process is reaped.
-
-	 - We don't use __WALL here as the __WALL emulation relies on
-	   SIGCHLD, and killing a stopped process doesn't generate
-	   one, nor an exit status.
-      */
-      res = my_waitpid (lwpid, &wstat, 0);
-      if (res == -1 && errno == ECHILD)
-	res = my_waitpid (lwpid, &wstat, __WCLONE);
-    } while (res > 0 && WIFSTOPPED (wstat));
-
-  /* Even if it was stopped, the child may have already disappeared.
-     E.g., if it was killed by SIGKILL.  */
-  if (res < 0 && errno != ECHILD)
-    perror_with_name ("kill_wait_lwp");
-}
-
-/* Callback for `for_each_thread'.  Kills an lwp of a given process,
-   except the leader.  */
-
-static void
-kill_one_lwp_callback (thread_info *thread, int pid)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-
-  /* We avoid killing the first thread here, because of a Linux kernel (at
-     least 2.6.0-test7 through 2.6.8-rc4) bug; if we kill the parent before
-     the children get a chance to be reaped, it will remain a zombie
-     forever.  */
-
-  if (lwpid_of (thread) == pid)
-    {
-      if (debug_threads)
-	debug_printf ("lkop: is last of process %s\n",
-		      target_pid_to_str (thread->id));
-      return;
-    }
-
-  kill_wait_lwp (lwp);
-}
-
-static int
-linux_kill (process_info *process)
-{
-  int pid = process->pid;
-
-  /* If we're killing a running inferior, make sure it is stopped
-     first, as PTRACE_KILL will not work otherwise.  */
-  stop_all_lwps (0, NULL);
-
-  for_each_thread (pid, [&] (thread_info *thread)
-    {
-      kill_one_lwp_callback (thread, pid);
-    });
-
-  /* See the comment in linux_kill_one_lwp.  We did not kill the first
-     thread in the list, so do so now.  */
-  lwp_info *lwp = find_lwp_pid (ptid_t (pid));
-
-  if (lwp == NULL)
-    {
-      if (debug_threads)
-	debug_printf ("lk_1: cannot find lwp for pid: %d\n",
-		      pid);
-    }
-  else
-    kill_wait_lwp (lwp);
-
-  the_target->mourn (process);
-
-  /* Since we presently can only stop all lwps of all processes, we
-     need to unstop lwps of other processes.  */
-  unstop_all_lwps (0, NULL);
-  return 0;
-}
-
-/* Get pending signal of THREAD, for detaching purposes.  This is the
-   signal the thread last stopped for, which we need to deliver to the
-   thread when detaching, otherwise, it'd be suppressed/lost.  */
-
-static int
-get_detach_signal (struct thread_info *thread)
-{
-  client_state &cs = get_client_state ();
-  enum gdb_signal signo = GDB_SIGNAL_0;
-  int status;
-  struct lwp_info *lp = get_thread_lwp (thread);
-
-  if (lp->status_pending_p)
-    status = lp->status_pending;
-  else
-    {
-      /* If the thread had been suspended by gdbserver, and it stopped
-	 cleanly, then it'll have stopped with SIGSTOP.  But we don't
-	 want to deliver that SIGSTOP.  */
-      if (thread->last_status.kind != TARGET_WAITKIND_STOPPED
-	  || thread->last_status.value.sig == GDB_SIGNAL_0)
-	return 0;
-
-      /* Otherwise, we may need to deliver the signal we
-	 intercepted.  */
-      status = lp->last_status;
-    }
-
-  if (!WIFSTOPPED (status))
-    {
-      if (debug_threads)
-	debug_printf ("GPS: lwp %s hasn't stopped: no pending signal\n",
-		      target_pid_to_str (ptid_of (thread)));
-      return 0;
-    }
-
-  /* Extended wait statuses aren't real SIGTRAPs.  */
-  if (WSTOPSIG (status) == SIGTRAP && linux_is_extended_waitstatus (status))
-    {
-      if (debug_threads)
-	debug_printf ("GPS: lwp %s had stopped with extended "
-		      "status: no pending signal\n",
-		      target_pid_to_str (ptid_of (thread)));
-      return 0;
-    }
-
-  signo = gdb_signal_from_host (WSTOPSIG (status));
-
-  if (cs.program_signals_p && !cs.program_signals[signo])
-    {
-      if (debug_threads)
-	debug_printf ("GPS: lwp %s had signal %s, but it is in nopass state\n",
-		      target_pid_to_str (ptid_of (thread)),
-		      gdb_signal_to_string (signo));
-      return 0;
-    }
-  else if (!cs.program_signals_p
-	   /* If we have no way to know which signals GDB does not
-	      want to have passed to the program, assume
-	      SIGTRAP/SIGINT, which is GDB's default.  */
-	   && (signo == GDB_SIGNAL_TRAP || signo == GDB_SIGNAL_INT))
-    {
-      if (debug_threads)
-	debug_printf ("GPS: lwp %s had signal %s, "
-		      "but we don't know if we should pass it. "
-		      "Default to not.\n",
-		      target_pid_to_str (ptid_of (thread)),
-		      gdb_signal_to_string (signo));
-      return 0;
-    }
-  else
-    {
-      if (debug_threads)
-	debug_printf ("GPS: lwp %s has pending signal %s: delivering it.\n",
-		      target_pid_to_str (ptid_of (thread)),
-		      gdb_signal_to_string (signo));
-
-      return WSTOPSIG (status);
-    }
-}
-
-/* Detach from LWP.  */
-
-static void
-linux_detach_one_lwp (struct lwp_info *lwp)
-{
-  struct thread_info *thread = get_lwp_thread (lwp);
-  int sig;
-  int lwpid;
-
-  /* If there is a pending SIGSTOP, get rid of it.  */
-  if (lwp->stop_expected)
-    {
-      if (debug_threads)
-	debug_printf ("Sending SIGCONT to %s\n",
-		      target_pid_to_str (ptid_of (thread)));
-
-      kill_lwp (lwpid_of (thread), SIGCONT);
-      lwp->stop_expected = 0;
-    }
-
-  /* Pass on any pending signal for this thread.  */
-  sig = get_detach_signal (thread);
-
-  /* Preparing to resume may try to write registers, and fail if the
-     lwp is zombie.  If that happens, ignore the error.  We'll handle
-     it below, when detach fails with ESRCH.  */
-  try
-    {
-      /* Flush any pending changes to the process's registers.  */
-      regcache_invalidate_thread (thread);
-
-      /* Finally, let it resume.  */
-      if (the_low_target.prepare_to_resume != NULL)
-	the_low_target.prepare_to_resume (lwp);
-    }
-  catch (const gdb_exception_error &ex)
-    {
-      if (!check_ptrace_stopped_lwp_gone (lwp))
-	throw;
-    }
-
-  lwpid = lwpid_of (thread);
-  if (ptrace (PTRACE_DETACH, lwpid, (PTRACE_TYPE_ARG3) 0,
-	      (PTRACE_TYPE_ARG4) (long) sig) < 0)
-    {
-      int save_errno = errno;
-
-      /* We know the thread exists, so ESRCH must mean the lwp is
-	 zombie.  This can happen if one of the already-detached
-	 threads exits the whole thread group.  In that case we're
-	 still attached, and must reap the lwp.  */
-      if (save_errno == ESRCH)
-	{
-	  int ret, status;
-
-	  ret = my_waitpid (lwpid, &status, __WALL);
-	  if (ret == -1)
-	    {
-	      warning (_("Couldn't reap LWP %d while detaching: %s"),
-		       lwpid, safe_strerror (errno));
-	    }
-	  else if (!WIFEXITED (status) && !WIFSIGNALED (status))
-	    {
-	      warning (_("Reaping LWP %d while detaching "
-			 "returned unexpected status 0x%x"),
-		       lwpid, status);
-	    }
-	}
-      else
-	{
-	  error (_("Can't detach %s: %s"),
-		 target_pid_to_str (ptid_of (thread)),
-		 safe_strerror (save_errno));
-	}
-    }
-  else if (debug_threads)
-    {
-      debug_printf ("PTRACE_DETACH (%s, %s, 0) (OK)\n",
-		    target_pid_to_str (ptid_of (thread)),
-		    strsignal (sig));
-    }
-
-  delete_lwp (lwp);
-}
-
-/* Callback for for_each_thread.  Detaches from non-leader threads of a
-   given process.  */
-
-static void
-linux_detach_lwp_callback (thread_info *thread)
-{
-  /* We don't actually detach from the thread group leader just yet.
-     If the thread group exits, we must reap the zombie clone lwps
-     before we're able to reap the leader.  */
-  if (thread->id.pid () == thread->id.lwp ())
-    return;
-
-  lwp_info *lwp = get_thread_lwp (thread);
-  linux_detach_one_lwp (lwp);
-}
-
-static int
-linux_detach (process_info *process)
-{
-  struct lwp_info *main_lwp;
-
-  /* As there's a step over already in progress, let it finish first,
-     otherwise nesting a stabilize_threads operation on top gets real
-     messy.  */
-  complete_ongoing_step_over ();
-
-  /* Stop all threads before detaching.  First, ptrace requires that
-     the thread is stopped to successfully detach.  Second, thread_db
-     may need to uninstall thread event breakpoints from memory, which
-     only works with a stopped process anyway.  */
-  stop_all_lwps (0, NULL);
-
-#ifdef USE_THREAD_DB
-  thread_db_detach (process);
-#endif
-
-  /* Stabilize threads (move out of jump pads).  */
-  stabilize_threads ();
-
-  /* Detach from the clone lwps first.  If the thread group exits just
-     while we're detaching, we must reap the clone lwps before we're
-     able to reap the leader.  */
-  for_each_thread (process->pid, linux_detach_lwp_callback);
-
-  main_lwp = find_lwp_pid (ptid_t (process->pid));
-  linux_detach_one_lwp (main_lwp);
-
-  the_target->mourn (process);
-
-  /* Since we presently can only stop all lwps of all processes, we
-     need to unstop lwps of other processes.  */
-  unstop_all_lwps (0, NULL);
-  return 0;
-}
-
-/* Remove all LWPs that belong to process PROC from the lwp list.  */
-
-static void
-linux_mourn (struct process_info *process)
-{
-  struct process_info_private *priv;
-
-#ifdef USE_THREAD_DB
-  thread_db_mourn (process);
-#endif
-
-  for_each_thread (process->pid, [] (thread_info *thread)
-    {
-      delete_lwp (get_thread_lwp (thread));
-    });
-
-  /* Freeing all private data.  */
-  priv = process->priv;
-  if (the_low_target.delete_process != NULL)
-    the_low_target.delete_process (priv->arch_private);
-  else
-    gdb_assert (priv->arch_private == NULL);
-  free (priv);
-  process->priv = NULL;
-
-  remove_process (process);
-}
-
-static void
-linux_join (int pid)
-{
-  int status, ret;
-
-  do {
-    ret = my_waitpid (pid, &status, 0);
-    if (WIFEXITED (status) || WIFSIGNALED (status))
-      break;
-  } while (ret != -1 || errno != ECHILD);
-}
-
-/* Return nonzero if the given thread is still alive.  */
-static int
-linux_thread_alive (ptid_t ptid)
-{
-  struct lwp_info *lwp = find_lwp_pid (ptid);
-
-  /* We assume we always know if a thread exits.  If a whole process
-     exited but we still haven't been able to report it to GDB, we'll
-     hold on to the last lwp of the dead process.  */
-  if (lwp != NULL)
-    return !lwp_is_marked_dead (lwp);
-  else
-    return 0;
-}
-
-/* Return 1 if this lwp still has an interesting status pending.  If
-   not (e.g., it had stopped for a breakpoint that is gone), return
-   false.  */
-
-static int
-thread_still_has_status_pending_p (struct thread_info *thread)
-{
-  struct lwp_info *lp = get_thread_lwp (thread);
-
-  if (!lp->status_pending_p)
-    return 0;
-
-  if (thread->last_resume_kind != resume_stop
-      && (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
-	  || lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT))
-    {
-      struct thread_info *saved_thread;
-      CORE_ADDR pc;
-      int discard = 0;
-
-      gdb_assert (lp->last_status != 0);
-
-      pc = get_pc (lp);
-
-      saved_thread = current_thread;
-      current_thread = thread;
-
-      if (pc != lp->stop_pc)
-	{
-	  if (debug_threads)
-	    debug_printf ("PC of %ld changed\n",
-			  lwpid_of (thread));
-	  discard = 1;
-	}
-
-#if !USE_SIGTRAP_SIGINFO
-      else if (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
-	       && !(*the_low_target.breakpoint_at) (pc))
-	{
-	  if (debug_threads)
-	    debug_printf ("previous SW breakpoint of %ld gone\n",
-			  lwpid_of (thread));
-	  discard = 1;
-	}
-      else if (lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT
-	       && !hardware_breakpoint_inserted_here (pc))
-	{
-	  if (debug_threads)
-	    debug_printf ("previous HW breakpoint of %ld gone\n",
-			  lwpid_of (thread));
-	  discard = 1;
-	}
-#endif
-
-      current_thread = saved_thread;
-
-      if (discard)
-	{
-	  if (debug_threads)
-	    debug_printf ("discarding pending breakpoint status\n");
-	  lp->status_pending_p = 0;
-	  return 0;
-	}
-    }
-
-  return 1;
-}
-
-/* Returns true if LWP is resumed from the client's perspective.  */
-
-static int
-lwp_resumed (struct lwp_info *lwp)
-{
-  struct thread_info *thread = get_lwp_thread (lwp);
-
-  if (thread->last_resume_kind != resume_stop)
-    return 1;
-
-  /* Did gdb send us a `vCont;t', but we haven't reported the
-     corresponding stop to gdb yet?  If so, the thread is still
-     resumed/running from gdb's perspective.  */
-  if (thread->last_resume_kind == resume_stop
-      && thread->last_status.kind == TARGET_WAITKIND_IGNORE)
-    return 1;
-
-  return 0;
-}
-
-/* Return true if this lwp has an interesting status pending.  */
-static bool
-status_pending_p_callback (thread_info *thread, ptid_t ptid)
-{
-  struct lwp_info *lp = get_thread_lwp (thread);
-
-  /* Check if we're only interested in events from a specific process
-     or a specific LWP.  */
-  if (!thread->id.matches (ptid))
-    return 0;
-
-  if (!lwp_resumed (lp))
-    return 0;
-
-  if (lp->status_pending_p
-      && !thread_still_has_status_pending_p (thread))
-    {
-      linux_resume_one_lwp (lp, lp->stepping, GDB_SIGNAL_0, NULL);
-      return 0;
-    }
-
-  return lp->status_pending_p;
-}
-
-struct lwp_info *
-find_lwp_pid (ptid_t ptid)
-{
-  thread_info *thread = find_thread ([&] (thread_info *thr_arg)
-    {
-      int lwp = ptid.lwp () != 0 ? ptid.lwp () : ptid.pid ();
-      return thr_arg->id.lwp () == lwp;
-    });
-
-  if (thread == NULL)
-    return NULL;
-
-  return get_thread_lwp (thread);
-}
-
-/* Return the number of known LWPs in the tgid given by PID.  */
-
-static int
-num_lwps (int pid)
-{
-  int count = 0;
-
-  for_each_thread (pid, [&] (thread_info *thread)
-    {
-      count++;
-    });
-
-  return count;
-}
-
-/* See nat/linux-nat.h.  */
-
-struct lwp_info *
-iterate_over_lwps (ptid_t filter,
-		   gdb::function_view<iterate_over_lwps_ftype> callback)
-{
-  thread_info *thread = find_thread (filter, [&] (thread_info *thr_arg)
-    {
-      lwp_info *lwp = get_thread_lwp (thr_arg);
-
-      return callback (lwp);
-    });
-
-  if (thread == NULL)
-    return NULL;
-
-  return get_thread_lwp (thread);
-}
-
-/* Detect zombie thread group leaders, and "exit" them.  We can't reap
-   their exits until all other threads in the group have exited.  */
-
-static void
-check_zombie_leaders (void)
-{
-  for_each_process ([] (process_info *proc) {
-    pid_t leader_pid = pid_of (proc);
-    struct lwp_info *leader_lp;
-
-    leader_lp = find_lwp_pid (ptid_t (leader_pid));
-
-    if (debug_threads)
-      debug_printf ("leader_pid=%d, leader_lp!=NULL=%d, "
-		    "num_lwps=%d, zombie=%d\n",
-		    leader_pid, leader_lp!= NULL, num_lwps (leader_pid),
-		    linux_proc_pid_is_zombie (leader_pid));
-
-    if (leader_lp != NULL && !leader_lp->stopped
-	/* Check if there are other threads in the group, as we may
-	   have raced with the inferior simply exiting.  */
-	&& !last_thread_of_process_p (leader_pid)
-	&& linux_proc_pid_is_zombie (leader_pid))
-      {
-	/* A leader zombie can mean one of two things:
-
-	   - It exited, and there's an exit status pending
-	   available, or only the leader exited (not the whole
-	   program).  In the latter case, we can't waitpid the
-	   leader's exit status until all other threads are gone.
-
-	   - There are 3 or more threads in the group, and a thread
-	   other than the leader exec'd.  On an exec, the Linux
-	   kernel destroys all other threads (except the execing
-	   one) in the thread group, and resets the execing thread's
-	   tid to the tgid.  No exit notification is sent for the
-	   execing thread -- from the ptracer's perspective, it
-	   appears as though the execing thread just vanishes.
-	   Until we reap all other threads except the leader and the
-	   execing thread, the leader will be zombie, and the
-	   execing thread will be in `D (disc sleep)'.  As soon as
-	   all other threads are reaped, the execing thread changes
-	   it's tid to the tgid, and the previous (zombie) leader
-	   vanishes, giving place to the "new" leader.  We could try
-	   distinguishing the exit and exec cases, by waiting once
-	   more, and seeing if something comes out, but it doesn't
-	   sound useful.  The previous leader _does_ go away, and
-	   we'll re-add the new one once we see the exec event
-	   (which is just the same as what would happen if the
-	   previous leader did exit voluntarily before some other
-	   thread execs).  */
-
-	if (debug_threads)
-	  debug_printf ("CZL: Thread group leader %d zombie "
-			"(it exited, or another thread execd).\n",
-			leader_pid);
-
-	delete_lwp (leader_lp);
-      }
-    });
-}
-
-/* Callback for `find_thread'.  Returns the first LWP that is not
-   stopped.  */
-
-static bool
-not_stopped_callback (thread_info *thread, ptid_t filter)
-{
-  if (!thread->id.matches (filter))
-    return false;
-
-  lwp_info *lwp = get_thread_lwp (thread);
-
-  return !lwp->stopped;
-}
-
-/* Increment LWP's suspend count.  */
-
-static void
-lwp_suspended_inc (struct lwp_info *lwp)
-{
-  lwp->suspended++;
-
-  if (debug_threads && lwp->suspended > 4)
-    {
-      struct thread_info *thread = get_lwp_thread (lwp);
-
-      debug_printf ("LWP %ld has a suspiciously high suspend count,"
-		    " suspended=%d\n", lwpid_of (thread), lwp->suspended);
-    }
-}
-
-/* Decrement LWP's suspend count.  */
-
-static void
-lwp_suspended_decr (struct lwp_info *lwp)
-{
-  lwp->suspended--;
-
-  if (lwp->suspended < 0)
-    {
-      struct thread_info *thread = get_lwp_thread (lwp);
-
-      internal_error (__FILE__, __LINE__,
-		      "unsuspend LWP %ld, suspended=%d\n", lwpid_of (thread),
-		      lwp->suspended);
-    }
-}
-
-/* This function should only be called if the LWP got a SIGTRAP.
-
-   Handle any tracepoint steps or hits.  Return true if a tracepoint
-   event was handled, 0 otherwise.  */
-
-static int
-handle_tracepoints (struct lwp_info *lwp)
-{
-  struct thread_info *tinfo = get_lwp_thread (lwp);
-  int tpoint_related_event = 0;
-
-  gdb_assert (lwp->suspended == 0);
-
-  /* If this tracepoint hit causes a tracing stop, we'll immediately
-     uninsert tracepoints.  To do this, we temporarily pause all
-     threads, unpatch away, and then unpause threads.  We need to make
-     sure the unpausing doesn't resume LWP too.  */
-  lwp_suspended_inc (lwp);
-
-  /* And we need to be sure that any all-threads-stopping doesn't try
-     to move threads out of the jump pads, as it could deadlock the
-     inferior (LWP could be in the jump pad, maybe even holding the
-     lock.)  */
-
-  /* Do any necessary step collect actions.  */
-  tpoint_related_event |= tracepoint_finished_step (tinfo, lwp->stop_pc);
-
-  tpoint_related_event |= handle_tracepoint_bkpts (tinfo, lwp->stop_pc);
-
-  /* See if we just hit a tracepoint and do its main collect
-     actions.  */
-  tpoint_related_event |= tracepoint_was_hit (tinfo, lwp->stop_pc);
-
-  lwp_suspended_decr (lwp);
-
-  gdb_assert (lwp->suspended == 0);
-  gdb_assert (!stabilizing_threads
-	      || (lwp->collecting_fast_tracepoint
-		  != fast_tpoint_collect_result::not_collecting));
-
-  if (tpoint_related_event)
-    {
-      if (debug_threads)
-	debug_printf ("got a tracepoint event\n");
-      return 1;
-    }
-
-  return 0;
-}
-
-/* Convenience wrapper.  Returns information about LWP's fast tracepoint
-   collection status.  */
-
-static fast_tpoint_collect_result
-linux_fast_tracepoint_collecting (struct lwp_info *lwp,
-				  struct fast_tpoint_collect_status *status)
-{
-  CORE_ADDR thread_area;
-  struct thread_info *thread = get_lwp_thread (lwp);
-
-  if (the_low_target.get_thread_area == NULL)
-    return fast_tpoint_collect_result::not_collecting;
-
-  /* Get the thread area address.  This is used to recognize which
-     thread is which when tracing with the in-process agent library.
-     We don't read anything from the address, and treat it as opaque;
-     it's the address itself that we assume is unique per-thread.  */
-  if ((*the_low_target.get_thread_area) (lwpid_of (thread), &thread_area) == -1)
-    return fast_tpoint_collect_result::not_collecting;
-
-  return fast_tracepoint_collecting (thread_area, lwp->stop_pc, status);
-}
-
-/* The reason we resume in the caller, is because we want to be able
-   to pass lwp->status_pending as WSTAT, and we need to clear
-   status_pending_p before resuming, otherwise, linux_resume_one_lwp
-   refuses to resume.  */
-
-static int
-maybe_move_out_of_jump_pad (struct lwp_info *lwp, int *wstat)
-{
-  struct thread_info *saved_thread;
-
-  saved_thread = current_thread;
-  current_thread = get_lwp_thread (lwp);
-
-  if ((wstat == NULL
-       || (WIFSTOPPED (*wstat) && WSTOPSIG (*wstat) != SIGTRAP))
-      && supports_fast_tracepoints ()
-      && agent_loaded_p ())
-    {
-      struct fast_tpoint_collect_status status;
-
-      if (debug_threads)
-	debug_printf ("Checking whether LWP %ld needs to move out of the "
-		      "jump pad.\n",
-		      lwpid_of (current_thread));
-
-      fast_tpoint_collect_result r
-	= linux_fast_tracepoint_collecting (lwp, &status);
-
-      if (wstat == NULL
-	  || (WSTOPSIG (*wstat) != SIGILL
-	      && WSTOPSIG (*wstat) != SIGFPE
-	      && WSTOPSIG (*wstat) != SIGSEGV
-	      && WSTOPSIG (*wstat) != SIGBUS))
-	{
-	  lwp->collecting_fast_tracepoint = r;
-
-	  if (r != fast_tpoint_collect_result::not_collecting)
-	    {
-	      if (r == fast_tpoint_collect_result::before_insn
-		  && lwp->exit_jump_pad_bkpt == NULL)
-		{
-		  /* Haven't executed the original instruction yet.
-		     Set breakpoint there, and wait till it's hit,
-		     then single-step until exiting the jump pad.  */
-		  lwp->exit_jump_pad_bkpt
-		    = set_breakpoint_at (status.adjusted_insn_addr, NULL);
-		}
-
-	      if (debug_threads)
-		debug_printf ("Checking whether LWP %ld needs to move out of "
-			      "the jump pad...it does\n",
-			      lwpid_of (current_thread));
-	      current_thread = saved_thread;
-
-	      return 1;
-	    }
-	}
-      else
-	{
-	  /* If we get a synchronous signal while collecting, *and*
-	     while executing the (relocated) original instruction,
-	     reset the PC to point at the tpoint address, before
-	     reporting to GDB.  Otherwise, it's an IPA lib bug: just
-	     report the signal to GDB, and pray for the best.  */
-
-	  lwp->collecting_fast_tracepoint
-	    = fast_tpoint_collect_result::not_collecting;
-
-	  if (r != fast_tpoint_collect_result::not_collecting
-	      && (status.adjusted_insn_addr <= lwp->stop_pc
-		  && lwp->stop_pc < status.adjusted_insn_addr_end))
-	    {
-	      siginfo_t info;
-	      struct regcache *regcache;
-
-	      /* The si_addr on a few signals references the address
-		 of the faulting instruction.  Adjust that as
-		 well.  */
-	      if ((WSTOPSIG (*wstat) == SIGILL
-		   || WSTOPSIG (*wstat) == SIGFPE
-		   || WSTOPSIG (*wstat) == SIGBUS
-		   || WSTOPSIG (*wstat) == SIGSEGV)
-		  && ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread),
-			     (PTRACE_TYPE_ARG3) 0, &info) == 0
-		  /* Final check just to make sure we don't clobber
-		     the siginfo of non-kernel-sent signals.  */
-		  && (uintptr_t) info.si_addr == lwp->stop_pc)
-		{
-		  info.si_addr = (void *) (uintptr_t) status.tpoint_addr;
-		  ptrace (PTRACE_SETSIGINFO, lwpid_of (current_thread),
-			  (PTRACE_TYPE_ARG3) 0, &info);
-		}
-
-	      regcache = get_thread_regcache (current_thread, 1);
-	      (*the_low_target.set_pc) (regcache, status.tpoint_addr);
-	      lwp->stop_pc = status.tpoint_addr;
-
-	      /* Cancel any fast tracepoint lock this thread was
-		 holding.  */
-	      force_unlock_trace_buffer ();
-	    }
-
-	  if (lwp->exit_jump_pad_bkpt != NULL)
-	    {
-	      if (debug_threads)
-		debug_printf ("Cancelling fast exit-jump-pad: removing bkpt. "
-			      "stopping all threads momentarily.\n");
-
-	      stop_all_lwps (1, lwp);
-
-	      delete_breakpoint (lwp->exit_jump_pad_bkpt);
-	      lwp->exit_jump_pad_bkpt = NULL;
-
-	      unstop_all_lwps (1, lwp);
-
-	      gdb_assert (lwp->suspended >= 0);
-	    }
-	}
-    }
-
-  if (debug_threads)
-    debug_printf ("Checking whether LWP %ld needs to move out of the "
-		  "jump pad...no\n",
-		  lwpid_of (current_thread));
-
-  current_thread = saved_thread;
-  return 0;
-}
-
-/* Enqueue one signal in the "signals to report later when out of the
-   jump pad" list.  */
-
-static void
-enqueue_one_deferred_signal (struct lwp_info *lwp, int *wstat)
-{
-  struct pending_signals *p_sig;
-  struct thread_info *thread = get_lwp_thread (lwp);
-
-  if (debug_threads)
-    debug_printf ("Deferring signal %d for LWP %ld.\n",
-		  WSTOPSIG (*wstat), lwpid_of (thread));
-
-  if (debug_threads)
-    {
-      struct pending_signals *sig;
-
-      for (sig = lwp->pending_signals_to_report;
-	   sig != NULL;
-	   sig = sig->prev)
-	debug_printf ("   Already queued %d\n",
-		      sig->signal);
-
-      debug_printf ("   (no more currently queued signals)\n");
-    }
-
-  /* Don't enqueue non-RT signals if they are already in the deferred
-     queue.  (SIGSTOP being the easiest signal to see ending up here
-     twice)  */
-  if (WSTOPSIG (*wstat) < __SIGRTMIN)
-    {
-      struct pending_signals *sig;
-
-      for (sig = lwp->pending_signals_to_report;
-	   sig != NULL;
-	   sig = sig->prev)
-	{
-	  if (sig->signal == WSTOPSIG (*wstat))
-	    {
-	      if (debug_threads)
-		debug_printf ("Not requeuing already queued non-RT signal %d"
-			      " for LWP %ld\n",
-			      sig->signal,
-			      lwpid_of (thread));
-	      return;
-	    }
-	}
-    }
-
-  p_sig = XCNEW (struct pending_signals);
-  p_sig->prev = lwp->pending_signals_to_report;
-  p_sig->signal = WSTOPSIG (*wstat);
-
-  ptrace (PTRACE_GETSIGINFO, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0,
-	  &p_sig->info);
-
-  lwp->pending_signals_to_report = p_sig;
-}
-
-/* Dequeue one signal from the "signals to report later when out of
-   the jump pad" list.  */
-
-static int
-dequeue_one_deferred_signal (struct lwp_info *lwp, int *wstat)
-{
-  struct thread_info *thread = get_lwp_thread (lwp);
-
-  if (lwp->pending_signals_to_report != NULL)
-    {
-      struct pending_signals **p_sig;
-
-      p_sig = &lwp->pending_signals_to_report;
-      while ((*p_sig)->prev != NULL)
-	p_sig = &(*p_sig)->prev;
-
-      *wstat = W_STOPCODE ((*p_sig)->signal);
-      if ((*p_sig)->info.si_signo != 0)
-	ptrace (PTRACE_SETSIGINFO, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0,
-		&(*p_sig)->info);
-      free (*p_sig);
-      *p_sig = NULL;
-
-      if (debug_threads)
-	debug_printf ("Reporting deferred signal %d for LWP %ld.\n",
-		      WSTOPSIG (*wstat), lwpid_of (thread));
-
-      if (debug_threads)
-	{
-	  struct pending_signals *sig;
-
-	  for (sig = lwp->pending_signals_to_report;
-	       sig != NULL;
-	       sig = sig->prev)
-	    debug_printf ("   Still queued %d\n",
-			  sig->signal);
-
-	  debug_printf ("   (no more queued signals)\n");
-	}
-
-      return 1;
-    }
-
-  return 0;
-}
-
-/* Fetch the possibly triggered data watchpoint info and store it in
-   CHILD.
-
-   On some archs, like x86, that use debug registers to set
-   watchpoints, it's possible that the way to know which watched
-   address trapped, is to check the register that is used to select
-   which address to watch.  Problem is, between setting the watchpoint
-   and reading back which data address trapped, the user may change
-   the set of watchpoints, and, as a consequence, GDB changes the
-   debug registers in the inferior.  To avoid reading back a stale
-   stopped-data-address when that happens, we cache in LP the fact
-   that a watchpoint trapped, and the corresponding data address, as
-   soon as we see CHILD stop with a SIGTRAP.  If GDB changes the debug
-   registers meanwhile, we have the cached data we can rely on.  */
-
-static int
-check_stopped_by_watchpoint (struct lwp_info *child)
-{
-  if (the_low_target.stopped_by_watchpoint != NULL)
-    {
-      struct thread_info *saved_thread;
-
-      saved_thread = current_thread;
-      current_thread = get_lwp_thread (child);
-
-      if (the_low_target.stopped_by_watchpoint ())
-	{
-	  child->stop_reason = TARGET_STOPPED_BY_WATCHPOINT;
-
-	  if (the_low_target.stopped_data_address != NULL)
-	    child->stopped_data_address
-	      = the_low_target.stopped_data_address ();
-	  else
-	    child->stopped_data_address = 0;
-	}
-
-      current_thread = saved_thread;
-    }
-
-  return child->stop_reason == TARGET_STOPPED_BY_WATCHPOINT;
-}
-
-/* Return the ptrace options that we want to try to enable.  */
-
-static int
-linux_low_ptrace_options (int attached)
-{
-  client_state &cs = get_client_state ();
-  int options = 0;
-
-  if (!attached)
-    options |= PTRACE_O_EXITKILL;
-
-  if (cs.report_fork_events)
-    options |= PTRACE_O_TRACEFORK;
-
-  if (cs.report_vfork_events)
-    options |= (PTRACE_O_TRACEVFORK | PTRACE_O_TRACEVFORKDONE);
-
-  if (cs.report_exec_events)
-    options |= PTRACE_O_TRACEEXEC;
-
-  options |= PTRACE_O_TRACESYSGOOD;
-
-  return options;
-}
-
-/* Do low-level handling of the event, and check if we should go on
-   and pass it to caller code.  Return the affected lwp if we are, or
-   NULL otherwise.  */
-
-static struct lwp_info *
-linux_low_filter_event (int lwpid, int wstat)
-{
-  client_state &cs = get_client_state ();
-  struct lwp_info *child;
-  struct thread_info *thread;
-  int have_stop_pc = 0;
-
-  child = find_lwp_pid (ptid_t (lwpid));
-
-  /* Check for stop events reported by a process we didn't already
-     know about - anything not already in our LWP list.
-
-     If we're expecting to receive stopped processes after
-     fork, vfork, and clone events, then we'll just add the
-     new one to our list and go back to waiting for the event
-     to be reported - the stopped process might be returned
-     from waitpid before or after the event is.
-
-     But note the case of a non-leader thread exec'ing after the
-     leader having exited, and gone from our lists (because
-     check_zombie_leaders deleted it).  The non-leader thread
-     changes its tid to the tgid.  */
-
-  if (WIFSTOPPED (wstat) && child == NULL && WSTOPSIG (wstat) == SIGTRAP
-      && linux_ptrace_get_extended_event (wstat) == PTRACE_EVENT_EXEC)
-    {
-      ptid_t child_ptid;
-
-      /* A multi-thread exec after we had seen the leader exiting.  */
-      if (debug_threads)
-	{
-	  debug_printf ("LLW: Re-adding thread group leader LWP %d"
-			"after exec.\n", lwpid);
-	}
-
-      child_ptid = ptid_t (lwpid, lwpid, 0);
-      child = add_lwp (child_ptid);
-      child->stopped = 1;
-      current_thread = child->thread;
-    }
-
-  /* If we didn't find a process, one of two things presumably happened:
-     - A process we started and then detached from has exited.  Ignore it.
-     - A process we are controlling has forked and the new child's stop
-     was reported to us by the kernel.  Save its PID.  */
-  if (child == NULL && WIFSTOPPED (wstat))
-    {
-      add_to_pid_list (&stopped_pids, lwpid, wstat);
-      return NULL;
-    }
-  else if (child == NULL)
-    return NULL;
-
-  thread = get_lwp_thread (child);
-
-  child->stopped = 1;
-
-  child->last_status = wstat;
-
-  /* Check if the thread has exited.  */
-  if ((WIFEXITED (wstat) || WIFSIGNALED (wstat)))
-    {
-      if (debug_threads)
-	debug_printf ("LLFE: %d exited.\n", lwpid);
-
-      if (finish_step_over (child))
-	{
-	  /* Unsuspend all other LWPs, and set them back running again.  */
-	  unsuspend_all_lwps (child);
-	}
-
-      /* If there is at least one more LWP, then the exit signal was
-	 not the end of the debugged application and should be
-	 ignored, unless GDB wants to hear about thread exits.  */
-      if (cs.report_thread_events
-	  || last_thread_of_process_p (pid_of (thread)))
-	{
-	  /* Since events are serialized to GDB core, and we can't
-	     report this one right now.  Leave the status pending for
-	     the next time we're able to report it.  */
-	  mark_lwp_dead (child, wstat);
-	  return child;
-	}
-      else
-	{
-	  delete_lwp (child);
-	  return NULL;
-	}
-    }
-
-  gdb_assert (WIFSTOPPED (wstat));
-
-  if (WIFSTOPPED (wstat))
-    {
-      struct process_info *proc;
-
-      /* Architecture-specific setup after inferior is running.  */
-      proc = find_process_pid (pid_of (thread));
-      if (proc->tdesc == NULL)
-	{
-	  if (proc->attached)
-	    {
-	      /* This needs to happen after we have attached to the
-		 inferior and it is stopped for the first time, but
-		 before we access any inferior registers.  */
-	      linux_arch_setup_thread (thread);
-	    }
-	  else
-	    {
-	      /* The process is started, but GDBserver will do
-		 architecture-specific setup after the program stops at
-		 the first instruction.  */
-	      child->status_pending_p = 1;
-	      child->status_pending = wstat;
-	      return child;
-	    }
-	}
-    }
-
-  if (WIFSTOPPED (wstat) && child->must_set_ptrace_flags)
-    {
-      struct process_info *proc = find_process_pid (pid_of (thread));
-      int options = linux_low_ptrace_options (proc->attached);
-
-      linux_enable_event_reporting (lwpid, options);
-      child->must_set_ptrace_flags = 0;
-    }
-
-  /* Always update syscall_state, even if it will be filtered later.  */
-  if (WIFSTOPPED (wstat) && WSTOPSIG (wstat) == SYSCALL_SIGTRAP)
-    {
-      child->syscall_state
-	= (child->syscall_state == TARGET_WAITKIND_SYSCALL_ENTRY
-	   ? TARGET_WAITKIND_SYSCALL_RETURN
-	   : TARGET_WAITKIND_SYSCALL_ENTRY);
-    }
-  else
-    {
-      /* Almost all other ptrace-stops are known to be outside of system
-	 calls, with further exceptions in handle_extended_wait.  */
-      child->syscall_state = TARGET_WAITKIND_IGNORE;
-    }
-
-  /* Be careful to not overwrite stop_pc until save_stop_reason is
-     called.  */
-  if (WIFSTOPPED (wstat) && WSTOPSIG (wstat) == SIGTRAP
-      && linux_is_extended_waitstatus (wstat))
-    {
-      child->stop_pc = get_pc (child);
-      if (handle_extended_wait (&child, wstat))
-	{
-	  /* The event has been handled, so just return without
-	     reporting it.  */
-	  return NULL;
-	}
-    }
-
-  if (linux_wstatus_maybe_breakpoint (wstat))
-    {
-      if (save_stop_reason (child))
-	have_stop_pc = 1;
-    }
-
-  if (!have_stop_pc)
-    child->stop_pc = get_pc (child);
-
-  if (WIFSTOPPED (wstat) && WSTOPSIG (wstat) == SIGSTOP
-      && child->stop_expected)
-    {
-      if (debug_threads)
-	debug_printf ("Expected stop.\n");
-      child->stop_expected = 0;
-
-      if (thread->last_resume_kind == resume_stop)
-	{
-	  /* We want to report the stop to the core.  Treat the
-	     SIGSTOP as a normal event.  */
-	  if (debug_threads)
-	    debug_printf ("LLW: resume_stop SIGSTOP caught for %s.\n",
-			  target_pid_to_str (ptid_of (thread)));
-	}
-      else if (stopping_threads != NOT_STOPPING_THREADS)
-	{
-	  /* Stopping threads.  We don't want this SIGSTOP to end up
-	     pending.  */
-	  if (debug_threads)
-	    debug_printf ("LLW: SIGSTOP caught for %s "
-			  "while stopping threads.\n",
-			  target_pid_to_str (ptid_of (thread)));
-	  return NULL;
-	}
-      else
-	{
-	  /* This is a delayed SIGSTOP.  Filter out the event.  */
-	  if (debug_threads)
-	    debug_printf ("LLW: %s %s, 0, 0 (discard delayed SIGSTOP)\n",
-			  child->stepping ? "step" : "continue",
-			  target_pid_to_str (ptid_of (thread)));
-
-	  linux_resume_one_lwp (child, child->stepping, 0, NULL);
-	  return NULL;
-	}
-    }
-
-  child->status_pending_p = 1;
-  child->status_pending = wstat;
-  return child;
-}
-
-/* Return true if THREAD is doing hardware single step.  */
-
-static int
-maybe_hw_step (struct thread_info *thread)
-{
-  if (can_hardware_single_step ())
-    return 1;
-  else
-    {
-      /* GDBserver must insert single-step breakpoint for software
-	 single step.  */
-      gdb_assert (has_single_step_breakpoints (thread));
-      return 0;
-    }
-}
-
-/* Resume LWPs that are currently stopped without any pending status
-   to report, but are resumed from the core's perspective.  */
-
-static void
-resume_stopped_resumed_lwps (thread_info *thread)
-{
-  struct lwp_info *lp = get_thread_lwp (thread);
-
-  if (lp->stopped
-      && !lp->suspended
-      && !lp->status_pending_p
-      && thread->last_status.kind == TARGET_WAITKIND_IGNORE)
-    {
-      int step = 0;
-
-      if (thread->last_resume_kind == resume_step)
-	step = maybe_hw_step (thread);
-
-      if (debug_threads)
-	debug_printf ("RSRL: resuming stopped-resumed LWP %s at %s: step=%d\n",
-		      target_pid_to_str (ptid_of (thread)),
-		      paddress (lp->stop_pc),
-		      step);
-
-      linux_resume_one_lwp (lp, step, GDB_SIGNAL_0, NULL);
-    }
-}
-
-/* Wait for an event from child(ren) WAIT_PTID, and return any that
-   match FILTER_PTID (leaving others pending).  The PTIDs can be:
-   minus_one_ptid, to specify any child; a pid PTID, specifying all
-   lwps of a thread group; or a PTID representing a single lwp.  Store
-   the stop status through the status pointer WSTAT.  OPTIONS is
-   passed to the waitpid call.  Return 0 if no event was found and
-   OPTIONS contains WNOHANG.  Return -1 if no unwaited-for children
-   was found.  Return the PID of the stopped child otherwise.  */
-
-static int
-linux_wait_for_event_filtered (ptid_t wait_ptid, ptid_t filter_ptid,
-			       int *wstatp, int options)
-{
-  struct thread_info *event_thread;
-  struct lwp_info *event_child, *requested_child;
-  sigset_t block_mask, prev_mask;
-
- retry:
-  /* N.B. event_thread points to the thread_info struct that contains
-     event_child.  Keep them in sync.  */
-  event_thread = NULL;
-  event_child = NULL;
-  requested_child = NULL;
-
-  /* Check for a lwp with a pending status.  */
-
-  if (filter_ptid == minus_one_ptid || filter_ptid.is_pid ())
-    {
-      event_thread = find_thread_in_random ([&] (thread_info *thread)
-	{
-	  return status_pending_p_callback (thread, filter_ptid);
-	});
-
-      if (event_thread != NULL)
-	event_child = get_thread_lwp (event_thread);
-      if (debug_threads && event_thread)
-	debug_printf ("Got a pending child %ld\n", lwpid_of (event_thread));
-    }
-  else if (filter_ptid != null_ptid)
-    {
-      requested_child = find_lwp_pid (filter_ptid);
-
-      if (stopping_threads == NOT_STOPPING_THREADS
-	  && requested_child->status_pending_p
-	  && (requested_child->collecting_fast_tracepoint
-	      != fast_tpoint_collect_result::not_collecting))
-	{
-	  enqueue_one_deferred_signal (requested_child,
-				       &requested_child->status_pending);
-	  requested_child->status_pending_p = 0;
-	  requested_child->status_pending = 0;
-	  linux_resume_one_lwp (requested_child, 0, 0, NULL);
-	}
-
-      if (requested_child->suspended
-	  && requested_child->status_pending_p)
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "requesting an event out of a"
-			  " suspended child?");
-	}
-
-      if (requested_child->status_pending_p)
-	{
-	  event_child = requested_child;
-	  event_thread = get_lwp_thread (event_child);
-	}
-    }
-
-  if (event_child != NULL)
-    {
-      if (debug_threads)
-	debug_printf ("Got an event from pending child %ld (%04x)\n",
-		      lwpid_of (event_thread), event_child->status_pending);
-      *wstatp = event_child->status_pending;
-      event_child->status_pending_p = 0;
-      event_child->status_pending = 0;
-      current_thread = event_thread;
-      return lwpid_of (event_thread);
-    }
-
-  /* But if we don't find a pending event, we'll have to wait.
-
-     We only enter this loop if no process has a pending wait status.
-     Thus any action taken in response to a wait status inside this
-     loop is responding as soon as we detect the status, not after any
-     pending events.  */
-
-  /* Make sure SIGCHLD is blocked until the sigsuspend below.  Block
-     all signals while here.  */
-  sigfillset (&block_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
-     starvation.  */
-  while (event_child == NULL)
-    {
-      pid_t ret = 0;
-
-      /* Always use -1 and WNOHANG, due to couple of a kernel/ptrace
-	 quirks:
-
-	 - If the thread group leader exits while other threads in the
-	   thread group still exist, waitpid(TGID, ...) hangs.  That
-	   waitpid won't return an exit status until the other threads
-	   in the group are reaped.
-
-	 - When a non-leader thread execs, that thread just vanishes
-	   without reporting an exit (so we'd hang if we waited for it
-	   explicitly in that case).  The exec event is reported to
-	   the TGID pid.  */
-      errno = 0;
-      ret = my_waitpid (-1, wstatp, options | WNOHANG);
-
-      if (debug_threads)
-	debug_printf ("LWFE: waitpid(-1, ...) returned %d, %s\n",
-		      ret, errno ? safe_strerror (errno) : "ERRNO-OK");
-
-      if (ret > 0)
-	{
-	  if (debug_threads)
-	    {
-	      debug_printf ("LLW: waitpid %ld received %s\n",
-			    (long) ret, status_to_str (*wstatp));
-	    }
-
-	  /* Filter all events.  IOW, leave all events pending.  We'll
-	     randomly select an event LWP out of all that have events
-	     below.  */
-	  linux_low_filter_event (ret, *wstatp);
-	  /* Retry until nothing comes out of waitpid.  A single
-	     SIGCHLD can indicate more than one child stopped.  */
-	  continue;
-	}
-
-      /* Now that we've pulled all events out of the kernel, resume
-	 LWPs that don't have an interesting event to report.  */
-      if (stopping_threads == NOT_STOPPING_THREADS)
-	for_each_thread (resume_stopped_resumed_lwps);
-
-      /* ... and find an LWP with a status to report to the core, if
-	 any.  */
-      event_thread = find_thread_in_random ([&] (thread_info *thread)
-	{
-	  return status_pending_p_callback (thread, filter_ptid);
-	});
-
-      if (event_thread != NULL)
-	{
-	  event_child = get_thread_lwp (event_thread);
-	  *wstatp = event_child->status_pending;
-	  event_child->status_pending_p = 0;
-	  event_child->status_pending = 0;
-	  break;
-	}
-
-      /* Check for zombie thread group leaders.  Those can't be reaped
-	 until all other threads in the thread group are.  */
-      check_zombie_leaders ();
-
-      auto not_stopped = [&] (thread_info *thread)
-	{
-	  return not_stopped_callback (thread, wait_ptid);
-	};
-
-      /* If there are no resumed children left in the set of LWPs we
-	 want to wait for, bail.  We can't just block in
-	 waitpid/sigsuspend, because lwps might have been left stopped
-	 in trace-stop state, and we'd be stuck forever waiting for
-	 their status to change (which would only happen if we resumed
-	 them).  Even if WNOHANG is set, this return code is preferred
-	 over 0 (below), as it is more detailed.  */
-      if (find_thread (not_stopped) == NULL)
-	{
-	  if (debug_threads)
-	    debug_printf ("LLW: exit (no unwaited-for LWP)\n");
-	  gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
-	  return -1;
-	}
-
-      /* No interesting event to report to the caller.  */
-      if ((options & WNOHANG))
-	{
-	  if (debug_threads)
-	    debug_printf ("WNOHANG set, no event found\n");
-
-	  gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
-	  return 0;
-	}
-
-      /* Block until we get an event reported with SIGCHLD.  */
-      if (debug_threads)
-	debug_printf ("sigsuspend'ing\n");
-
-      sigsuspend (&prev_mask);
-      gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
-      goto retry;
-    }
-
-  gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
-
-  current_thread = event_thread;
-
-  return lwpid_of (event_thread);
-}
-
-/* Wait for an event from child(ren) PTID.  PTIDs can be:
-   minus_one_ptid, to specify any child; a pid PTID, specifying all
-   lwps of a thread group; or a PTID representing a single lwp.  Store
-   the stop status through the status pointer WSTAT.  OPTIONS is
-   passed to the waitpid call.  Return 0 if no event was found and
-   OPTIONS contains WNOHANG.  Return -1 if no unwaited-for children
-   was found.  Return the PID of the stopped child otherwise.  */
-
-static int
-linux_wait_for_event (ptid_t ptid, int *wstatp, int options)
-{
-  return linux_wait_for_event_filtered (ptid, ptid, wstatp, options);
-}
-
-/* Select one LWP out of those that have events pending.  */
-
-static void
-select_event_lwp (struct lwp_info **orig_lp)
-{
-  struct thread_info *event_thread = NULL;
-
-  /* In all-stop, give preference to the LWP that is being
-     single-stepped.  There will be at most one, and it's the LWP that
-     the core is most interested in.  If we didn't do this, then we'd
-     have to handle pending step SIGTRAPs somehow in case the core
-     later continues the previously-stepped thread, otherwise we'd
-     report the pending SIGTRAP, and the core, not having stepped the
-     thread, wouldn't understand what the trap was for, and therefore
-     would report it to the user as a random signal.  */
-  if (!non_stop)
-    {
-      event_thread = find_thread ([] (thread_info *thread)
-	{
-	  lwp_info *lp = get_thread_lwp (thread);
-
-	  return (thread->last_status.kind == TARGET_WAITKIND_IGNORE
-		  && thread->last_resume_kind == resume_step
-		  && lp->status_pending_p);
-	});
-
-      if (event_thread != NULL)
-	{
-	  if (debug_threads)
-	    debug_printf ("SEL: Select single-step %s\n",
-			  target_pid_to_str (ptid_of (event_thread)));
-	}
-    }
-  if (event_thread == NULL)
-    {
-      /* No single-stepping LWP.  Select one at random, out of those
-         which have had events.  */
-
-      event_thread = find_thread_in_random ([&] (thread_info *thread)
-	{
-	  lwp_info *lp = get_thread_lwp (thread);
-
-	  /* Only resumed LWPs that have an event pending. */
-	  return (thread->last_status.kind == TARGET_WAITKIND_IGNORE
-		  && lp->status_pending_p);
-	});
-    }
-
-  if (event_thread != NULL)
-    {
-      struct lwp_info *event_lp = get_thread_lwp (event_thread);
-
-      /* Switch the event LWP.  */
-      *orig_lp = event_lp;
-    }
-}
-
-/* Decrement the suspend count of all LWPs, except EXCEPT, if non
-   NULL.  */
-
-static void
-unsuspend_all_lwps (struct lwp_info *except)
-{
-  for_each_thread ([&] (thread_info *thread)
-    {
-      lwp_info *lwp = get_thread_lwp (thread);
-
-      if (lwp != except)
-	lwp_suspended_decr (lwp);
-    });
-}
-
-static void move_out_of_jump_pad_callback (thread_info *thread);
-static bool stuck_in_jump_pad_callback (thread_info *thread);
-static bool lwp_running (thread_info *thread);
-static ptid_t linux_wait_1 (ptid_t ptid,
-			    struct target_waitstatus *ourstatus,
-			    int target_options);
-
-/* Stabilize threads (move out of jump pads).
-
-   If a thread is midway collecting a fast tracepoint, we need to
-   finish the collection and move it out of the jump pad before
-   reporting the signal.
-
-   This avoids recursion while collecting (when a signal arrives
-   midway, and the signal handler itself collects), which would trash
-   the trace buffer.  In case the user set a breakpoint in a signal
-   handler, this avoids the backtrace showing the jump pad, etc..
-   Most importantly, there are certain things we can't do safely if
-   threads are stopped in a jump pad (or in its callee's).  For
-   example:
-
-     - starting a new trace run.  A thread still collecting the
-   previous run, could trash the trace buffer when resumed.  The trace
-   buffer control structures would have been reset but the thread had
-   no way to tell.  The thread could even midway memcpy'ing to the
-   buffer, which would mean that when resumed, it would clobber the
-   trace buffer that had been set for a new run.
-
-     - we can't rewrite/reuse the jump pads for new tracepoints
-   safely.  Say you do tstart while a thread is stopped midway while
-   collecting.  When the thread is later resumed, it finishes the
-   collection, and returns to the jump pad, to execute the original
-   instruction that was under the tracepoint jump at the time the
-   older run had been started.  If the jump pad had been rewritten
-   since for something else in the new run, the thread would now
-   execute the wrong / random instructions.  */
-
-static void
-linux_stabilize_threads (void)
-{
-  thread_info *thread_stuck = find_thread (stuck_in_jump_pad_callback);
-
-  if (thread_stuck != NULL)
-    {
-      if (debug_threads)
-	debug_printf ("can't stabilize, LWP %ld is stuck in jump pad\n",
-		      lwpid_of (thread_stuck));
-      return;
-    }
-
-  thread_info *saved_thread = current_thread;
-
-  stabilizing_threads = 1;
-
-  /* Kick 'em all.  */
-  for_each_thread (move_out_of_jump_pad_callback);
-
-  /* Loop until all are stopped out of the jump pads.  */
-  while (find_thread (lwp_running) != NULL)
-    {
-      struct target_waitstatus ourstatus;
-      struct lwp_info *lwp;
-      int wstat;
-
-      /* Note that we go through the full wait even loop.  While
-	 moving threads out of jump pad, we need to be able to step
-	 over internal breakpoints and such.  */
-      linux_wait_1 (minus_one_ptid, &ourstatus, 0);
-
-      if (ourstatus.kind == TARGET_WAITKIND_STOPPED)
-	{
-	  lwp = get_thread_lwp (current_thread);
-
-	  /* Lock it.  */
-	  lwp_suspended_inc (lwp);
-
-	  if (ourstatus.value.sig != GDB_SIGNAL_0
-	      || current_thread->last_resume_kind == resume_stop)
-	    {
-	      wstat = W_STOPCODE (gdb_signal_to_host (ourstatus.value.sig));
-	      enqueue_one_deferred_signal (lwp, &wstat);
-	    }
-	}
-    }
-
-  unsuspend_all_lwps (NULL);
-
-  stabilizing_threads = 0;
-
-  current_thread = saved_thread;
-
-  if (debug_threads)
-    {
-      thread_stuck = find_thread (stuck_in_jump_pad_callback);
-
-      if (thread_stuck != NULL)
-	debug_printf ("couldn't stabilize, LWP %ld got stuck in jump pad\n",
-		      lwpid_of (thread_stuck));
-    }
-}
-
-/* Convenience function that is called when the kernel reports an
-   event that is not passed out to GDB.  */
-
-static ptid_t
-ignore_event (struct target_waitstatus *ourstatus)
-{
-  /* If we got an event, there may still be others, as a single
-     SIGCHLD can indicate more than one child stopped.  This forces
-     another target_wait call.  */
-  async_file_mark ();
-
-  ourstatus->kind = TARGET_WAITKIND_IGNORE;
-  return null_ptid;
-}
-
-/* Convenience function that is called when the kernel reports an exit
-   event.  This decides whether to report the event to GDB as a
-   process exit event, a thread exit event, or to suppress the
-   event.  */
-
-static ptid_t
-filter_exit_event (struct lwp_info *event_child,
-		   struct target_waitstatus *ourstatus)
-{
-  client_state &cs = get_client_state ();
-  struct thread_info *thread = get_lwp_thread (event_child);
-  ptid_t ptid = ptid_of (thread);
-
-  if (!last_thread_of_process_p (pid_of (thread)))
-    {
-      if (cs.report_thread_events)
-	ourstatus->kind = TARGET_WAITKIND_THREAD_EXITED;
-      else
-	ourstatus->kind = TARGET_WAITKIND_IGNORE;
-
-      delete_lwp (event_child);
-    }
-  return ptid;
-}
-
-/* Returns 1 if GDB is interested in any event_child syscalls.  */
-
-static int
-gdb_catching_syscalls_p (struct lwp_info *event_child)
-{
-  struct thread_info *thread = get_lwp_thread (event_child);
-  struct process_info *proc = get_thread_process (thread);
-
-  return !proc->syscalls_to_catch.empty ();
-}
-
-/* Returns 1 if GDB is interested in the event_child syscall.
-   Only to be called when stopped reason is SYSCALL_SIGTRAP.  */
-
-static int
-gdb_catch_this_syscall_p (struct lwp_info *event_child)
-{
-  int sysno;
-  struct thread_info *thread = get_lwp_thread (event_child);
-  struct process_info *proc = get_thread_process (thread);
-
-  if (proc->syscalls_to_catch.empty ())
-    return 0;
-
-  if (proc->syscalls_to_catch[0] == ANY_SYSCALL)
-    return 1;
-
-  get_syscall_trapinfo (event_child, &sysno);
-
-  for (int iter : proc->syscalls_to_catch)
-    if (iter == sysno)
-      return 1;
-
-  return 0;
-}
-
-/* Wait for process, returns status.  */
-
-static ptid_t
-linux_wait_1 (ptid_t ptid,
-	      struct target_waitstatus *ourstatus, int target_options)
-{
-  client_state &cs = get_client_state ();
-  int w;
-  struct lwp_info *event_child;
-  int options;
-  int pid;
-  int step_over_finished;
-  int bp_explains_trap;
-  int maybe_internal_trap;
-  int report_to_gdb;
-  int trace_event;
-  int in_step_range;
-  int any_resumed;
-
-  if (debug_threads)
-    {
-      debug_enter ();
-      debug_printf ("linux_wait_1: [%s]\n", target_pid_to_str (ptid));
-    }
-
-  /* Translate generic target options into linux options.  */
-  options = __WALL;
-  if (target_options & TARGET_WNOHANG)
-    options |= WNOHANG;
-
-  bp_explains_trap = 0;
-  trace_event = 0;
-  in_step_range = 0;
-  ourstatus->kind = TARGET_WAITKIND_IGNORE;
-
-  auto status_pending_p_any = [&] (thread_info *thread)
-    {
-      return status_pending_p_callback (thread, minus_one_ptid);
-    };
-
-  auto not_stopped = [&] (thread_info *thread)
-    {
-      return not_stopped_callback (thread, minus_one_ptid);
-    };
-
-  /* Find a resumed LWP, if any.  */
-  if (find_thread (status_pending_p_any) != NULL)
-    any_resumed = 1;
-  else if (find_thread (not_stopped) != NULL)
-    any_resumed = 1;
-  else
-    any_resumed = 0;
-
-  if (step_over_bkpt == null_ptid)
-    pid = linux_wait_for_event (ptid, &w, options);
-  else
-    {
-      if (debug_threads)
-	debug_printf ("step_over_bkpt set [%s], doing a blocking wait\n",
-		      target_pid_to_str (step_over_bkpt));
-      pid = linux_wait_for_event (step_over_bkpt, &w, options & ~WNOHANG);
-    }
-
-  if (pid == 0 || (pid == -1 && !any_resumed))
-    {
-      gdb_assert (target_options & TARGET_WNOHANG);
-
-      if (debug_threads)
-	{
-	  debug_printf ("linux_wait_1 ret = null_ptid, "
-			"TARGET_WAITKIND_IGNORE\n");
-	  debug_exit ();
-	}
-
-      ourstatus->kind = TARGET_WAITKIND_IGNORE;
-      return null_ptid;
-    }
-  else if (pid == -1)
-    {
-      if (debug_threads)
-	{
-	  debug_printf ("linux_wait_1 ret = null_ptid, "
-			"TARGET_WAITKIND_NO_RESUMED\n");
-	  debug_exit ();
-	}
-
-      ourstatus->kind = TARGET_WAITKIND_NO_RESUMED;
-      return null_ptid;
-    }
-
-  event_child = get_thread_lwp (current_thread);
-
-  /* linux_wait_for_event only returns an exit status for the last
-     child of a process.  Report it.  */
-  if (WIFEXITED (w) || WIFSIGNALED (w))
-    {
-      if (WIFEXITED (w))
-	{
-	  ourstatus->kind = TARGET_WAITKIND_EXITED;
-	  ourstatus->value.integer = WEXITSTATUS (w);
-
-	  if (debug_threads)
-	    {
-	      debug_printf ("linux_wait_1 ret = %s, exited with "
-			    "retcode %d\n",
-			    target_pid_to_str (ptid_of (current_thread)),
-			    WEXITSTATUS (w));
-	      debug_exit ();
-	    }
-	}
-      else
-	{
-	  ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
-	  ourstatus->value.sig = gdb_signal_from_host (WTERMSIG (w));
-
-	  if (debug_threads)
-	    {
-	      debug_printf ("linux_wait_1 ret = %s, terminated with "
-			    "signal %d\n",
-			    target_pid_to_str (ptid_of (current_thread)),
-			    WTERMSIG (w));
-	      debug_exit ();
-	    }
-	}
-
-      if (ourstatus->kind == TARGET_WAITKIND_EXITED)
-	return filter_exit_event (event_child, ourstatus);
-
-      return ptid_of (current_thread);
-    }
-
-  /* If step-over executes a breakpoint instruction, in the case of a
-     hardware single step it means a gdb/gdbserver breakpoint had been
-     planted on top of a permanent breakpoint, in the case of a software
-     single step it may just mean that gdbserver hit the reinsert breakpoint.
-     The PC has been adjusted by save_stop_reason to point at
-     the breakpoint address.
-     So in the case of the hardware single step advance the PC manually
-     past the breakpoint and in the case of software single step advance only
-     if it's not the single_step_breakpoint we are hitting.
-     This avoids that a program would keep trapping a permanent breakpoint
-     forever.  */
-  if (step_over_bkpt != null_ptid
-      && event_child->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
-      && (event_child->stepping
-	  || !single_step_breakpoint_inserted_here (event_child->stop_pc)))
-    {
-      int increment_pc = 0;
-      int breakpoint_kind = 0;
-      CORE_ADDR stop_pc = event_child->stop_pc;
-
-      breakpoint_kind =
-	the_target->breakpoint_kind_from_current_state (&stop_pc);
-      the_target->sw_breakpoint_from_kind (breakpoint_kind, &increment_pc);
-
-      if (debug_threads)
-	{
-	  debug_printf ("step-over for %s executed software breakpoint\n",
-			target_pid_to_str (ptid_of (current_thread)));
-	}
-
-      if (increment_pc != 0)
-	{
-	  struct regcache *regcache
-	    = get_thread_regcache (current_thread, 1);
-
-	  event_child->stop_pc += increment_pc;
-	  (*the_low_target.set_pc) (regcache, event_child->stop_pc);
-
-	  if (!(*the_low_target.breakpoint_at) (event_child->stop_pc))
-	    event_child->stop_reason = TARGET_STOPPED_BY_NO_REASON;
-	}
-    }
-
-  /* If this event was not handled before, and is not a SIGTRAP, we
-     report it.  SIGILL and SIGSEGV are also treated as traps in case
-     a breakpoint is inserted at the current PC.  If this target does
-     not support internal breakpoints at all, we also report the
-     SIGTRAP without further processing; it's of no concern to us.  */
-  maybe_internal_trap
-    = (supports_breakpoints ()
-       && (WSTOPSIG (w) == SIGTRAP
-	   || ((WSTOPSIG (w) == SIGILL
-		|| WSTOPSIG (w) == SIGSEGV)
-	       && (*the_low_target.breakpoint_at) (event_child->stop_pc))));
-
-  if (maybe_internal_trap)
-    {
-      /* Handle anything that requires bookkeeping before deciding to
-	 report the event or continue waiting.  */
-
-      /* First check if we can explain the SIGTRAP with an internal
-	 breakpoint, or if we should possibly report the event to GDB.
-	 Do this before anything that may remove or insert a
-	 breakpoint.  */
-      bp_explains_trap = breakpoint_inserted_here (event_child->stop_pc);
-
-      /* We have a SIGTRAP, possibly a step-over dance has just
-	 finished.  If so, tweak the state machine accordingly,
-	 reinsert breakpoints and delete any single-step
-	 breakpoints.  */
-      step_over_finished = finish_step_over (event_child);
-
-      /* Now invoke the callbacks of any internal breakpoints there.  */
-      check_breakpoints (event_child->stop_pc);
-
-      /* Handle tracepoint data collecting.  This may overflow the
-	 trace buffer, and cause a tracing stop, removing
-	 breakpoints.  */
-      trace_event = handle_tracepoints (event_child);
-
-      if (bp_explains_trap)
-	{
-	  if (debug_threads)
-	    debug_printf ("Hit a gdbserver breakpoint.\n");
-	}
-    }
-  else
-    {
-      /* We have some other signal, possibly a step-over dance was in
-	 progress, and it should be cancelled too.  */
-      step_over_finished = finish_step_over (event_child);
-    }
-
-  /* We have all the data we need.  Either report the event to GDB, or
-     resume threads and keep waiting for more.  */
-
-  /* If we're collecting a fast tracepoint, finish the collection and
-     move out of the jump pad before delivering a signal.  See
-     linux_stabilize_threads.  */
-
-  if (WIFSTOPPED (w)
-      && WSTOPSIG (w) != SIGTRAP
-      && supports_fast_tracepoints ()
-      && agent_loaded_p ())
-    {
-      if (debug_threads)
-	debug_printf ("Got signal %d for LWP %ld.  Check if we need "
-		      "to defer or adjust it.\n",
-		      WSTOPSIG (w), lwpid_of (current_thread));
-
-      /* Allow debugging the jump pad itself.  */
-      if (current_thread->last_resume_kind != resume_step
-	  && maybe_move_out_of_jump_pad (event_child, &w))
-	{
-	  enqueue_one_deferred_signal (event_child, &w);
-
-	  if (debug_threads)
-	    debug_printf ("Signal %d for LWP %ld deferred (in jump pad)\n",
-			  WSTOPSIG (w), lwpid_of (current_thread));
-
-	  linux_resume_one_lwp (event_child, 0, 0, NULL);
-
-	  if (debug_threads)
-	    debug_exit ();
-	  return ignore_event (ourstatus);
-	}
-    }
-
-  if (event_child->collecting_fast_tracepoint
-      != fast_tpoint_collect_result::not_collecting)
-    {
-      if (debug_threads)
-	debug_printf ("LWP %ld was trying to move out of the jump pad (%d). "
-		      "Check if we're already there.\n",
-		      lwpid_of (current_thread),
-		      (int) event_child->collecting_fast_tracepoint);
-
-      trace_event = 1;
-
-      event_child->collecting_fast_tracepoint
-	= linux_fast_tracepoint_collecting (event_child, NULL);
-
-      if (event_child->collecting_fast_tracepoint
-	  != fast_tpoint_collect_result::before_insn)
-	{
-	  /* No longer need this breakpoint.  */
-	  if (event_child->exit_jump_pad_bkpt != NULL)
-	    {
-	      if (debug_threads)
-		debug_printf ("No longer need exit-jump-pad bkpt; removing it."
-			      "stopping all threads momentarily.\n");
-
-	      /* Other running threads could hit this breakpoint.
-		 We don't handle moribund locations like GDB does,
-		 instead we always pause all threads when removing
-		 breakpoints, so that any step-over or
-		 decr_pc_after_break adjustment is always taken
-		 care of while the breakpoint is still
-		 inserted.  */
-	      stop_all_lwps (1, event_child);
-
-	      delete_breakpoint (event_child->exit_jump_pad_bkpt);
-	      event_child->exit_jump_pad_bkpt = NULL;
-
-	      unstop_all_lwps (1, event_child);
-
-	      gdb_assert (event_child->suspended >= 0);
-	    }
-	}
-
-      if (event_child->collecting_fast_tracepoint
-	  == fast_tpoint_collect_result::not_collecting)
-	{
-	  if (debug_threads)
-	    debug_printf ("fast tracepoint finished "
-			  "collecting successfully.\n");
-
-	  /* We may have a deferred signal to report.  */
-	  if (dequeue_one_deferred_signal (event_child, &w))
-	    {
-	      if (debug_threads)
-		debug_printf ("dequeued one signal.\n");
-	    }
-	  else
-	    {
-	      if (debug_threads)
-		debug_printf ("no deferred signals.\n");
-
-	      if (stabilizing_threads)
-		{
-		  ourstatus->kind = TARGET_WAITKIND_STOPPED;
-		  ourstatus->value.sig = GDB_SIGNAL_0;
-
-		  if (debug_threads)
-		    {
-		      debug_printf ("linux_wait_1 ret = %s, stopped "
-				    "while stabilizing threads\n",
-				    target_pid_to_str (ptid_of (current_thread)));
-		      debug_exit ();
-		    }
-
-		  return ptid_of (current_thread);
-		}
-	    }
-	}
-    }
-
-  /* Check whether GDB would be interested in this event.  */
-
-  /* Check if GDB is interested in this syscall.  */
-  if (WIFSTOPPED (w)
-      && WSTOPSIG (w) == SYSCALL_SIGTRAP
-      && !gdb_catch_this_syscall_p (event_child))
-    {
-      if (debug_threads)
-	{
-	  debug_printf ("Ignored syscall for LWP %ld.\n",
-			lwpid_of (current_thread));
-	}
-
-      linux_resume_one_lwp (event_child, event_child->stepping,
-			    0, NULL);
-
-      if (debug_threads)
-	debug_exit ();
-      return ignore_event (ourstatus);
-    }
-
-  /* If GDB is not interested in this signal, don't stop other
-     threads, and don't report it to GDB.  Just resume the inferior
-     right away.  We do this for threading-related signals as well as
-     any that GDB specifically requested we ignore.  But never ignore
-     SIGSTOP if we sent it ourselves, and do not ignore signals when
-     stepping - they may require special handling to skip the signal
-     handler. Also never ignore signals that could be caused by a
-     breakpoint.  */
-  if (WIFSTOPPED (w)
-      && current_thread->last_resume_kind != resume_step
-      && (
-#if defined (USE_THREAD_DB) && !defined (__ANDROID__)
-	  (current_process ()->priv->thread_db != NULL
-	   && (WSTOPSIG (w) == __SIGRTMIN
-	       || WSTOPSIG (w) == __SIGRTMIN + 1))
-	  ||
-#endif
-	  (cs.pass_signals[gdb_signal_from_host (WSTOPSIG (w))]
-	   && !(WSTOPSIG (w) == SIGSTOP
-		&& current_thread->last_resume_kind == resume_stop)
-	   && !linux_wstatus_maybe_breakpoint (w))))
-    {
-      siginfo_t info, *info_p;
-
-      if (debug_threads)
-	debug_printf ("Ignored signal %d for LWP %ld.\n",
-		      WSTOPSIG (w), lwpid_of (current_thread));
-
-      if (ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread),
-		  (PTRACE_TYPE_ARG3) 0, &info) == 0)
-	info_p = &info;
-      else
-	info_p = NULL;
-
-      if (step_over_finished)
-	{
-	  /* We cancelled this thread's step-over above.  We still
-	     need to unsuspend all other LWPs, and set them back
-	     running again while the signal handler runs.  */
-	  unsuspend_all_lwps (event_child);
-
-	  /* Enqueue the pending signal info so that proceed_all_lwps
-	     doesn't lose it.  */
-	  enqueue_pending_signal (event_child, WSTOPSIG (w), info_p);
-
-	  proceed_all_lwps ();
-	}
-      else
-	{
-	  linux_resume_one_lwp (event_child, event_child->stepping,
-				WSTOPSIG (w), info_p);
-	}
-
-      if (debug_threads)
-	debug_exit ();
-
-      return ignore_event (ourstatus);
-    }
-
-  /* Note that all addresses are always "out of the step range" when
-     there's no range to begin with.  */
-  in_step_range = lwp_in_step_range (event_child);
-
-  /* If GDB wanted this thread to single step, and the thread is out
-     of the step range, we always want to report the SIGTRAP, and let
-     GDB handle it.  Watchpoints should always be reported.  So should
-     signals we can't explain.  A SIGTRAP we can't explain could be a
-     GDB breakpoint --- we may or not support Z0 breakpoints.  If we
-     do, we're be able to handle GDB breakpoints on top of internal
-     breakpoints, by handling the internal breakpoint and still
-     reporting the event to GDB.  If we don't, we're out of luck, GDB
-     won't see the breakpoint hit.  If we see a single-step event but
-     the thread should be continuing, don't pass the trap to gdb.
-     That indicates that we had previously finished a single-step but
-     left the single-step pending -- see
-     complete_ongoing_step_over.  */
-  report_to_gdb = (!maybe_internal_trap
-		   || (current_thread->last_resume_kind == resume_step
-		       && !in_step_range)
-		   || event_child->stop_reason == TARGET_STOPPED_BY_WATCHPOINT
-		   || (!in_step_range
-		       && !bp_explains_trap
-		       && !trace_event
-		       && !step_over_finished
-		       && !(current_thread->last_resume_kind == resume_continue
-			    && event_child->stop_reason == TARGET_STOPPED_BY_SINGLE_STEP))
-		   || (gdb_breakpoint_here (event_child->stop_pc)
-		       && gdb_condition_true_at_breakpoint (event_child->stop_pc)
-		       && gdb_no_commands_at_breakpoint (event_child->stop_pc))
-		   || event_child->waitstatus.kind != TARGET_WAITKIND_IGNORE);
-
-  run_breakpoint_commands (event_child->stop_pc);
-
-  /* We found no reason GDB would want us to stop.  We either hit one
-     of our own breakpoints, or finished an internal step GDB
-     shouldn't know about.  */
-  if (!report_to_gdb)
-    {
-      if (debug_threads)
-	{
-	  if (bp_explains_trap)
-	    debug_printf ("Hit a gdbserver breakpoint.\n");
-	  if (step_over_finished)
-	    debug_printf ("Step-over finished.\n");
-	  if (trace_event)
-	    debug_printf ("Tracepoint event.\n");
-	  if (lwp_in_step_range (event_child))
-	    debug_printf ("Range stepping pc 0x%s [0x%s, 0x%s).\n",
-			  paddress (event_child->stop_pc),
-			  paddress (event_child->step_range_start),
-			  paddress (event_child->step_range_end));
-	}
-
-      /* We're not reporting this breakpoint to GDB, so apply the
-	 decr_pc_after_break adjustment to the inferior's regcache
-	 ourselves.  */
-
-      if (the_low_target.set_pc != NULL)
-	{
-	  struct regcache *regcache
-	    = get_thread_regcache (current_thread, 1);
-	  (*the_low_target.set_pc) (regcache, event_child->stop_pc);
-	}
-
-      if (step_over_finished)
-	{
-	  /* If we have finished stepping over a breakpoint, we've
-	     stopped and suspended all LWPs momentarily except the
-	     stepping one.  This is where we resume them all again.
-	     We're going to keep waiting, so use proceed, which
-	     handles stepping over the next breakpoint.  */
-	  unsuspend_all_lwps (event_child);
-	}
-      else
-	{
-	  /* Remove the single-step breakpoints if any.  Note that
-	     there isn't single-step breakpoint if we finished stepping
-	     over.  */
-	  if (can_software_single_step ()
-	      && has_single_step_breakpoints (current_thread))
-	    {
-	      stop_all_lwps (0, event_child);
-	      delete_single_step_breakpoints (current_thread);
-	      unstop_all_lwps (0, event_child);
-	    }
-	}
-
-      if (debug_threads)
-	debug_printf ("proceeding all threads.\n");
-      proceed_all_lwps ();
-
-      if (debug_threads)
-	debug_exit ();
-
-      return ignore_event (ourstatus);
-    }
-
-  if (debug_threads)
-    {
-      if (event_child->waitstatus.kind != TARGET_WAITKIND_IGNORE)
-	{
-	  std::string str
-	    = target_waitstatus_to_string (&event_child->waitstatus);
-
-	  debug_printf ("LWP %ld: extended event with waitstatus %s\n",
-			lwpid_of (get_lwp_thread (event_child)), str.c_str ());
-	}
-      if (current_thread->last_resume_kind == resume_step)
-	{
-	  if (event_child->step_range_start == event_child->step_range_end)
-	    debug_printf ("GDB wanted to single-step, reporting event.\n");
-	  else if (!lwp_in_step_range (event_child))
-	    debug_printf ("Out of step range, reporting event.\n");
-	}
-      if (event_child->stop_reason == TARGET_STOPPED_BY_WATCHPOINT)
-	debug_printf ("Stopped by watchpoint.\n");
-      else if (gdb_breakpoint_here (event_child->stop_pc))
-	debug_printf ("Stopped by GDB breakpoint.\n");
-      if (debug_threads)
-	debug_printf ("Hit a non-gdbserver trap event.\n");
-    }
-
-  /* Alright, we're going to report a stop.  */
-
-  /* Remove single-step breakpoints.  */
-  if (can_software_single_step ())
-    {
-      /* Remove single-step breakpoints or not.  It it is true, stop all
-	 lwps, so that other threads won't hit the breakpoint in the
-	 staled memory.  */
-      int remove_single_step_breakpoints_p = 0;
-
-      if (non_stop)
-	{
-	  remove_single_step_breakpoints_p
-	    = has_single_step_breakpoints (current_thread);
-	}
-      else
-	{
-	  /* In all-stop, a stop reply cancels all previous resume
-	     requests.  Delete all single-step breakpoints.  */
-
-	  find_thread ([&] (thread_info *thread) {
-	    if (has_single_step_breakpoints (thread))
-	      {
-		remove_single_step_breakpoints_p = 1;
-		return true;
-	      }
-
-	    return false;
-	  });
-	}
-
-      if (remove_single_step_breakpoints_p)
-	{
-	  /* If we remove single-step breakpoints from memory, stop all lwps,
-	     so that other threads won't hit the breakpoint in the staled
-	     memory.  */
-	  stop_all_lwps (0, event_child);
-
-	  if (non_stop)
-	    {
-	      gdb_assert (has_single_step_breakpoints (current_thread));
-	      delete_single_step_breakpoints (current_thread);
-	    }
-	  else
-	    {
-	      for_each_thread ([] (thread_info *thread){
-		if (has_single_step_breakpoints (thread))
-		  delete_single_step_breakpoints (thread);
-	      });
-	    }
-
-	  unstop_all_lwps (0, event_child);
-	}
-    }
-
-  if (!stabilizing_threads)
-    {
-      /* In all-stop, stop all threads.  */
-      if (!non_stop)
-	stop_all_lwps (0, NULL);
-
-      if (step_over_finished)
-	{
-	  if (!non_stop)
-	    {
-	      /* If we were doing a step-over, all other threads but
-		 the stepping one had been paused in start_step_over,
-		 with their suspend counts incremented.  We don't want
-		 to do a full unstop/unpause, because we're in
-		 all-stop mode (so we want threads stopped), but we
-		 still need to unsuspend the other threads, to
-		 decrement their `suspended' count back.  */
-	      unsuspend_all_lwps (event_child);
-	    }
-	  else
-	    {
-	      /* If we just finished a step-over, then all threads had
-		 been momentarily paused.  In all-stop, that's fine,
-		 we want threads stopped by now anyway.  In non-stop,
-		 we need to re-resume threads that GDB wanted to be
-		 running.  */
-	      unstop_all_lwps (1, event_child);
-	    }
-	}
-
-      /* If we're not waiting for a specific LWP, choose an event LWP
-	 from among those that have had events.  Giving equal priority
-	 to all LWPs that have had events helps prevent
-	 starvation.  */
-      if (ptid == minus_one_ptid)
-	{
-	  event_child->status_pending_p = 1;
-	  event_child->status_pending = w;
-
-	  select_event_lwp (&event_child);
-
-	  /* current_thread and event_child must stay in sync.  */
-	  current_thread = get_lwp_thread (event_child);
-
-	  event_child->status_pending_p = 0;
-	  w = event_child->status_pending;
-	}
-
-
-      /* Stabilize threads (move out of jump pads).  */
-      if (!non_stop)
-	stabilize_threads ();
-    }
-  else
-    {
-      /* If we just finished a step-over, then all threads had been
-	 momentarily paused.  In all-stop, that's fine, we want
-	 threads stopped by now anyway.  In non-stop, we need to
-	 re-resume threads that GDB wanted to be running.  */
-      if (step_over_finished)
-	unstop_all_lwps (1, event_child);
-    }
-
-  if (event_child->waitstatus.kind != TARGET_WAITKIND_IGNORE)
-    {
-      /* If the reported event is an exit, fork, vfork or exec, let
-	 GDB know.  */
-
-      /* Break the unreported fork relationship chain.  */
-      if (event_child->waitstatus.kind == TARGET_WAITKIND_FORKED
-	  || event_child->waitstatus.kind == TARGET_WAITKIND_VFORKED)
-	{
-	  event_child->fork_relative->fork_relative = NULL;
-	  event_child->fork_relative = NULL;
-	}
-
-      *ourstatus = event_child->waitstatus;
-      /* Clear the event lwp's waitstatus since we handled it already.  */
-      event_child->waitstatus.kind = TARGET_WAITKIND_IGNORE;
-    }
-  else
-    ourstatus->kind = TARGET_WAITKIND_STOPPED;
-
-  /* Now that we've selected our final event LWP, un-adjust its PC if
-     it was a software breakpoint, and the client doesn't know we can
-     adjust the breakpoint ourselves.  */
-  if (event_child->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
-      && !cs.swbreak_feature)
-    {
-      int decr_pc = the_low_target.decr_pc_after_break;
-
-      if (decr_pc != 0)
-	{
-	  struct regcache *regcache
-	    = get_thread_regcache (current_thread, 1);
-	  (*the_low_target.set_pc) (regcache, event_child->stop_pc + decr_pc);
-	}
-    }
-
-  if (WSTOPSIG (w) == SYSCALL_SIGTRAP)
-    {
-      get_syscall_trapinfo (event_child,
-			    &ourstatus->value.syscall_number);
-      ourstatus->kind = event_child->syscall_state;
-    }
-  else if (current_thread->last_resume_kind == resume_stop
-	   && WSTOPSIG (w) == SIGSTOP)
-    {
-      /* A thread that has been requested to stop by GDB with vCont;t,
-	 and it stopped cleanly, so report as SIG0.  The use of
-	 SIGSTOP is an implementation detail.  */
-      ourstatus->value.sig = GDB_SIGNAL_0;
-    }
-  else if (current_thread->last_resume_kind == resume_stop
-	   && WSTOPSIG (w) != SIGSTOP)
-    {
-      /* A thread that has been requested to stop by GDB with vCont;t,
-	 but, it stopped for other reasons.  */
-      ourstatus->value.sig = gdb_signal_from_host (WSTOPSIG (w));
-    }
-  else if (ourstatus->kind == TARGET_WAITKIND_STOPPED)
-    {
-      ourstatus->value.sig = gdb_signal_from_host (WSTOPSIG (w));
-    }
-
-  gdb_assert (step_over_bkpt == null_ptid);
-
-  if (debug_threads)
-    {
-      debug_printf ("linux_wait_1 ret = %s, %d, %d\n",
-		    target_pid_to_str (ptid_of (current_thread)),
-		    ourstatus->kind, ourstatus->value.sig);
-      debug_exit ();
-    }
-
-  if (ourstatus->kind == TARGET_WAITKIND_EXITED)
-    return filter_exit_event (event_child, ourstatus);
-
-  return ptid_of (current_thread);
-}
-
-/* Get rid of any pending event in the pipe.  */
-static void
-async_file_flush (void)
-{
-  int ret;
-  char buf;
-
-  do
-    ret = read (linux_event_pipe[0], &buf, 1);
-  while (ret >= 0 || (ret == -1 && errno == EINTR));
-}
-
-/* Put something in the pipe, so the event loop wakes up.  */
-static void
-async_file_mark (void)
-{
-  int ret;
-
-  async_file_flush ();
-
-  do
-    ret = write (linux_event_pipe[1], "+", 1);
-  while (ret == 0 || (ret == -1 && errno == EINTR));
-
-  /* Ignore EAGAIN.  If the pipe is full, the event loop will already
-     be awakened anyway.  */
-}
-
-static ptid_t
-linux_wait (ptid_t ptid,
-	    struct target_waitstatus *ourstatus, int target_options)
-{
-  ptid_t event_ptid;
-
-  /* Flush the async file first.  */
-  if (target_is_async_p ())
-    async_file_flush ();
-
-  do
-    {
-      event_ptid = linux_wait_1 (ptid, ourstatus, target_options);
-    }
-  while ((target_options & TARGET_WNOHANG) == 0
-	 && event_ptid == null_ptid
-	 && ourstatus->kind == TARGET_WAITKIND_IGNORE);
-
-  /* If at least one stop was reported, there may be more.  A single
-     SIGCHLD can signal more than one child stop.  */
-  if (target_is_async_p ()
-      && (target_options & TARGET_WNOHANG) != 0
-      && event_ptid != null_ptid)
-    async_file_mark ();
-
-  return event_ptid;
-}
-
-/* Send a signal to an LWP.  */
-
-static int
-kill_lwp (unsigned long lwpid, int signo)
-{
-  int ret;
-
-  errno = 0;
-  ret = syscall (__NR_tkill, lwpid, signo);
-  if (errno == ENOSYS)
-    {
-      /* If tkill fails, then we are not using nptl threads, a
-	 configuration we no longer support.  */
-      perror_with_name (("tkill"));
-    }
-  return ret;
-}
-
-void
-linux_stop_lwp (struct lwp_info *lwp)
-{
-  send_sigstop (lwp);
-}
-
-static void
-send_sigstop (struct lwp_info *lwp)
-{
-  int pid;
-
-  pid = lwpid_of (get_lwp_thread (lwp));
-
-  /* If we already have a pending stop signal for this process, don't
-     send another.  */
-  if (lwp->stop_expected)
-    {
-      if (debug_threads)
-	debug_printf ("Have pending sigstop for lwp %d\n", pid);
-
-      return;
-    }
-
-  if (debug_threads)
-    debug_printf ("Sending sigstop to lwp %d\n", pid);
-
-  lwp->stop_expected = 1;
-  kill_lwp (pid, SIGSTOP);
-}
-
-static void
-send_sigstop (thread_info *thread, lwp_info *except)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-
-  /* Ignore EXCEPT.  */
-  if (lwp == except)
-    return;
-
-  if (lwp->stopped)
-    return;
-
-  send_sigstop (lwp);
-}
-
-/* Increment the suspend count of an LWP, and stop it, if not stopped
-   yet.  */
-static void
-suspend_and_send_sigstop (thread_info *thread, lwp_info *except)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-
-  /* Ignore EXCEPT.  */
-  if (lwp == except)
-    return;
-
-  lwp_suspended_inc (lwp);
-
-  send_sigstop (thread, except);
-}
-
-static void
-mark_lwp_dead (struct lwp_info *lwp, int wstat)
-{
-  /* Store the exit status for later.  */
-  lwp->status_pending_p = 1;
-  lwp->status_pending = wstat;
-
-  /* Store in waitstatus as well, as there's nothing else to process
-     for this event.  */
-  if (WIFEXITED (wstat))
-    {
-      lwp->waitstatus.kind = TARGET_WAITKIND_EXITED;
-      lwp->waitstatus.value.integer = WEXITSTATUS (wstat);
-    }
-  else if (WIFSIGNALED (wstat))
-    {
-      lwp->waitstatus.kind = TARGET_WAITKIND_SIGNALLED;
-      lwp->waitstatus.value.sig = gdb_signal_from_host (WTERMSIG (wstat));
-    }
-
-  /* Prevent trying to stop it.  */
-  lwp->stopped = 1;
-
-  /* No further stops are expected from a dead lwp.  */
-  lwp->stop_expected = 0;
-}
-
-/* Return true if LWP has exited already, and has a pending exit event
-   to report to GDB.  */
-
-static int
-lwp_is_marked_dead (struct lwp_info *lwp)
-{
-  return (lwp->status_pending_p
-	  && (WIFEXITED (lwp->status_pending)
-	      || WIFSIGNALED (lwp->status_pending)));
-}
-
-/* Wait for all children to stop for the SIGSTOPs we just queued.  */
-
-static void
-wait_for_sigstop (void)
-{
-  struct thread_info *saved_thread;
-  ptid_t saved_tid;
-  int wstat;
-  int ret;
-
-  saved_thread = current_thread;
-  if (saved_thread != NULL)
-    saved_tid = saved_thread->id;
-  else
-    saved_tid = null_ptid; /* avoid bogus unused warning */
-
-  if (debug_threads)
-    debug_printf ("wait_for_sigstop: pulling events\n");
-
-  /* Passing NULL_PTID as filter indicates we want all events to be
-     left pending.  Eventually this returns when there are no
-     unwaited-for children left.  */
-  ret = linux_wait_for_event_filtered (minus_one_ptid, null_ptid,
-				       &wstat, __WALL);
-  gdb_assert (ret == -1);
-
-  if (saved_thread == NULL || linux_thread_alive (saved_tid))
-    current_thread = saved_thread;
-  else
-    {
-      if (debug_threads)
-	debug_printf ("Previously current thread died.\n");
-
-      /* We can't change the current inferior behind GDB's back,
-	 otherwise, a subsequent command may apply to the wrong
-	 process.  */
-      current_thread = NULL;
-    }
-}
-
-/* Returns true if THREAD is stopped in a jump pad, and we can't
-   move it out, because we need to report the stop event to GDB.  For
-   example, if the user puts a breakpoint in the jump pad, it's
-   because she wants to debug it.  */
-
-static bool
-stuck_in_jump_pad_callback (thread_info *thread)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-
-  if (lwp->suspended != 0)
-    {
-      internal_error (__FILE__, __LINE__,
-		      "LWP %ld is suspended, suspended=%d\n",
-		      lwpid_of (thread), lwp->suspended);
-    }
-  gdb_assert (lwp->stopped);
-
-  /* Allow debugging the jump pad, gdb_collect, etc..  */
-  return (supports_fast_tracepoints ()
-	  && agent_loaded_p ()
-	  && (gdb_breakpoint_here (lwp->stop_pc)
-	      || lwp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT
-	      || thread->last_resume_kind == resume_step)
-	  && (linux_fast_tracepoint_collecting (lwp, NULL)
-	      != fast_tpoint_collect_result::not_collecting));
-}
-
-static void
-move_out_of_jump_pad_callback (thread_info *thread)
-{
-  struct thread_info *saved_thread;
-  struct lwp_info *lwp = get_thread_lwp (thread);
-  int *wstat;
-
-  if (lwp->suspended != 0)
-    {
-      internal_error (__FILE__, __LINE__,
-		      "LWP %ld is suspended, suspended=%d\n",
-		      lwpid_of (thread), lwp->suspended);
-    }
-  gdb_assert (lwp->stopped);
-
-  /* For gdb_breakpoint_here.  */
-  saved_thread = current_thread;
-  current_thread = thread;
-
-  wstat = lwp->status_pending_p ? &lwp->status_pending : NULL;
-
-  /* Allow debugging the jump pad, gdb_collect, etc.  */
-  if (!gdb_breakpoint_here (lwp->stop_pc)
-      && lwp->stop_reason != TARGET_STOPPED_BY_WATCHPOINT
-      && thread->last_resume_kind != resume_step
-      && maybe_move_out_of_jump_pad (lwp, wstat))
-    {
-      if (debug_threads)
-	debug_printf ("LWP %ld needs stabilizing (in jump pad)\n",
-		      lwpid_of (thread));
-
-      if (wstat)
-	{
-	  lwp->status_pending_p = 0;
-	  enqueue_one_deferred_signal (lwp, wstat);
-
-	  if (debug_threads)
-	    debug_printf ("Signal %d for LWP %ld deferred "
-			  "(in jump pad)\n",
-			  WSTOPSIG (*wstat), lwpid_of (thread));
-	}
-
-      linux_resume_one_lwp (lwp, 0, 0, NULL);
-    }
-  else
-    lwp_suspended_inc (lwp);
-
-  current_thread = saved_thread;
-}
-
-static bool
-lwp_running (thread_info *thread)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-
-  if (lwp_is_marked_dead (lwp))
-    return false;
-
-  return !lwp->stopped;
-}
-
-/* Stop all lwps that aren't stopped yet, except EXCEPT, if not NULL.
-   If SUSPEND, then also increase the suspend count of every LWP,
-   except EXCEPT.  */
-
-static void
-stop_all_lwps (int suspend, struct lwp_info *except)
-{
-  /* Should not be called recursively.  */
-  gdb_assert (stopping_threads == NOT_STOPPING_THREADS);
-
-  if (debug_threads)
-    {
-      debug_enter ();
-      debug_printf ("stop_all_lwps (%s, except=%s)\n",
-		    suspend ? "stop-and-suspend" : "stop",
-		    except != NULL
-		    ? target_pid_to_str (ptid_of (get_lwp_thread (except)))
-		    : "none");
-    }
-
-  stopping_threads = (suspend
-		      ? STOPPING_AND_SUSPENDING_THREADS
-		      : STOPPING_THREADS);
-
-  if (suspend)
-    for_each_thread ([&] (thread_info *thread)
-      {
-	suspend_and_send_sigstop (thread, except);
-      });
-  else
-    for_each_thread ([&] (thread_info *thread)
-      {
-	 send_sigstop (thread, except);
-      });
-
-  wait_for_sigstop ();
-  stopping_threads = NOT_STOPPING_THREADS;
-
-  if (debug_threads)
-    {
-      debug_printf ("stop_all_lwps done, setting stopping_threads "
-		    "back to !stopping\n");
-      debug_exit ();
-    }
-}
-
-/* Enqueue one signal in the chain of signals which need to be
-   delivered to this process on next resume.  */
-
-static void
-enqueue_pending_signal (struct lwp_info *lwp, int signal, siginfo_t *info)
-{
-  struct pending_signals *p_sig = XNEW (struct pending_signals);
-
-  p_sig->prev = lwp->pending_signals;
-  p_sig->signal = signal;
-  if (info == NULL)
-    memset (&p_sig->info, 0, sizeof (siginfo_t));
-  else
-    memcpy (&p_sig->info, info, sizeof (siginfo_t));
-  lwp->pending_signals = p_sig;
-}
-
-/* Install breakpoints for software single stepping.  */
-
-static void
-install_software_single_step_breakpoints (struct lwp_info *lwp)
-{
-  struct thread_info *thread = get_lwp_thread (lwp);
-  struct regcache *regcache = get_thread_regcache (thread, 1);
-
-  scoped_restore save_current_thread = make_scoped_restore (&current_thread);
-
-  current_thread = thread;
-  std::vector<CORE_ADDR> next_pcs = the_low_target.get_next_pcs (regcache);
-
-  for (CORE_ADDR pc : next_pcs)
-    set_single_step_breakpoint (pc, current_ptid);
-}
-
-/* Single step via hardware or software single step.
-   Return 1 if hardware single stepping, 0 if software single stepping
-   or can't single step.  */
-
-static int
-single_step (struct lwp_info* lwp)
-{
-  int step = 0;
-
-  if (can_hardware_single_step ())
-    {
-      step = 1;
-    }
-  else if (can_software_single_step ())
-    {
-      install_software_single_step_breakpoints (lwp);
-      step = 0;
-    }
-  else
-    {
-      if (debug_threads)
-	debug_printf ("stepping is not implemented on this target");
-    }
-
-  return step;
-}
-
-/* The signal can be delivered to the inferior if we are not trying to
-   finish a fast tracepoint collect.  Since signal can be delivered in
-   the step-over, the program may go to signal handler and trap again
-   after return from the signal handler.  We can live with the spurious
-   double traps.  */
-
-static int
-lwp_signal_can_be_delivered (struct lwp_info *lwp)
-{
-  return (lwp->collecting_fast_tracepoint
-	  == fast_tpoint_collect_result::not_collecting);
-}
-
-/* Resume execution of LWP.  If STEP is nonzero, single-step it.  If
-   SIGNAL is nonzero, give it that signal.  */
-
-static void
-linux_resume_one_lwp_throw (struct lwp_info *lwp,
-			    int step, int signal, siginfo_t *info)
-{
-  struct thread_info *thread = get_lwp_thread (lwp);
-  struct thread_info *saved_thread;
-  int ptrace_request;
-  struct process_info *proc = get_thread_process (thread);
-
-  /* Note that target description may not be initialised
-     (proc->tdesc == NULL) at this point because the program hasn't
-     stopped at the first instruction yet.  It means GDBserver skips
-     the extra traps from the wrapper program (see option --wrapper).
-     Code in this function that requires register access should be
-     guarded by proc->tdesc == NULL or something else.  */
-
-  if (lwp->stopped == 0)
-    return;
-
-  gdb_assert (lwp->waitstatus.kind == TARGET_WAITKIND_IGNORE);
-
-  fast_tpoint_collect_result fast_tp_collecting
-    = lwp->collecting_fast_tracepoint;
-
-  gdb_assert (!stabilizing_threads
-	      || (fast_tp_collecting
-		  != fast_tpoint_collect_result::not_collecting));
-
-  /* Cancel actions that rely on GDB not changing the PC (e.g., the
-     user used the "jump" command, or "set $pc = foo").  */
-  if (thread->while_stepping != NULL && lwp->stop_pc != get_pc (lwp))
-    {
-      /* Collecting 'while-stepping' actions doesn't make sense
-	 anymore.  */
-      release_while_stepping_state_list (thread);
-    }
-
-  /* If we have pending signals or status, and a new signal, enqueue the
-     signal.  Also enqueue the signal if it can't be delivered to the
-     inferior right now.  */
-  if (signal != 0
-      && (lwp->status_pending_p
-	  || lwp->pending_signals != NULL
-	  || !lwp_signal_can_be_delivered (lwp)))
-    {
-      enqueue_pending_signal (lwp, signal, info);
-
-      /* Postpone any pending signal.  It was enqueued above.  */
-      signal = 0;
-    }
-
-  if (lwp->status_pending_p)
-    {
-      if (debug_threads)
-	debug_printf ("Not resuming lwp %ld (%s, stop %s);"
-		      " has pending status\n",
-		      lwpid_of (thread), step ? "step" : "continue",
-		      lwp->stop_expected ? "expected" : "not expected");
-      return;
-    }
-
-  saved_thread = current_thread;
-  current_thread = thread;
-
-  /* This bit needs some thinking about.  If we get a signal that
-     we must report while a single-step reinsert is still pending,
-     we often end up resuming the thread.  It might be better to
-     (ew) allow a stack of pending events; then we could be sure that
-     the reinsert happened right away and not lose any signals.
-
-     Making this stack would also shrink the window in which breakpoints are
-     uninserted (see comment in linux_wait_for_lwp) but not enough for
-     complete correctness, so it won't solve that problem.  It may be
-     worthwhile just to solve this one, however.  */
-  if (lwp->bp_reinsert != 0)
-    {
-      if (debug_threads)
-	debug_printf ("  pending reinsert at 0x%s\n",
-		      paddress (lwp->bp_reinsert));
-
-      if (can_hardware_single_step ())
-	{
-	  if (fast_tp_collecting == fast_tpoint_collect_result::not_collecting)
-	    {
-	      if (step == 0)
-		warning ("BAD - reinserting but not stepping.");
-	      if (lwp->suspended)
-		warning ("BAD - reinserting and suspended(%d).",
-				 lwp->suspended);
-	    }
-	}
-
-      step = maybe_hw_step (thread);
-    }
-
-  if (fast_tp_collecting == fast_tpoint_collect_result::before_insn)
-    {
-      if (debug_threads)
-	debug_printf ("lwp %ld wants to get out of fast tracepoint jump pad"
-		      " (exit-jump-pad-bkpt)\n",
-		      lwpid_of (thread));
-    }
-  else if (fast_tp_collecting == fast_tpoint_collect_result::at_insn)
-    {
-      if (debug_threads)
-	debug_printf ("lwp %ld wants to get out of fast tracepoint jump pad"
-		      " single-stepping\n",
-		      lwpid_of (thread));
-
-      if (can_hardware_single_step ())
-	step = 1;
-      else
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "moving out of jump pad single-stepping"
-			  " not implemented on this target");
-	}
-    }
-
-  /* If we have while-stepping actions in this thread set it stepping.
-     If we have a signal to deliver, it may or may not be set to
-     SIG_IGN, we don't know.  Assume so, and allow collecting
-     while-stepping into a signal handler.  A possible smart thing to
-     do would be to set an internal breakpoint at the signal return
-     address, continue, and carry on catching this while-stepping
-     action only when that breakpoint is hit.  A future
-     enhancement.  */
-  if (thread->while_stepping != NULL)
-    {
-      if (debug_threads)
-	debug_printf ("lwp %ld has a while-stepping action -> forcing step.\n",
-		      lwpid_of (thread));
-
-      step = single_step (lwp);
-    }
-
-  if (proc->tdesc != NULL && the_low_target.get_pc != NULL)
-    {
-      struct regcache *regcache = get_thread_regcache (current_thread, 1);
-
-      lwp->stop_pc = (*the_low_target.get_pc) (regcache);
-
-      if (debug_threads)
-	{
-	  debug_printf ("  %s from pc 0x%lx\n", step ? "step" : "continue",
-			(long) lwp->stop_pc);
-	}
-    }
-
-  /* If we have pending signals, consume one if it can be delivered to
-     the inferior.  */
-  if (lwp->pending_signals != NULL && lwp_signal_can_be_delivered (lwp))
-    {
-      struct pending_signals **p_sig;
-
-      p_sig = &lwp->pending_signals;
-      while ((*p_sig)->prev != NULL)
-	p_sig = &(*p_sig)->prev;
-
-      signal = (*p_sig)->signal;
-      if ((*p_sig)->info.si_signo != 0)
-	ptrace (PTRACE_SETSIGINFO, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0,
-		&(*p_sig)->info);
-
-      free (*p_sig);
-      *p_sig = NULL;
-    }
-
-  if (debug_threads)
-    debug_printf ("Resuming lwp %ld (%s, signal %d, stop %s)\n",
-		  lwpid_of (thread), step ? "step" : "continue", signal,
-		  lwp->stop_expected ? "expected" : "not expected");
-
-  if (the_low_target.prepare_to_resume != NULL)
-    the_low_target.prepare_to_resume (lwp);
-
-  regcache_invalidate_thread (thread);
-  errno = 0;
-  lwp->stepping = step;
-  if (step)
-    ptrace_request = PTRACE_SINGLESTEP;
-  else if (gdb_catching_syscalls_p (lwp))
-    ptrace_request = PTRACE_SYSCALL;
-  else
-    ptrace_request = PTRACE_CONT;
-  ptrace (ptrace_request,
-	  lwpid_of (thread),
-	  (PTRACE_TYPE_ARG3) 0,
-	  /* Coerce to a uintptr_t first to avoid potential gcc warning
-	     of coercing an 8 byte integer to a 4 byte pointer.  */
-	  (PTRACE_TYPE_ARG4) (uintptr_t) signal);
-
-  current_thread = saved_thread;
-  if (errno)
-    perror_with_name ("resuming thread");
-
-  /* Successfully resumed.  Clear state that no longer makes sense,
-     and mark the LWP as running.  Must not do this before resuming
-     otherwise if that fails other code will be confused.  E.g., we'd
-     later try to stop the LWP and hang forever waiting for a stop
-     status.  Note that we must not throw after this is cleared,
-     otherwise handle_zombie_lwp_error would get confused.  */
-  lwp->stopped = 0;
-  lwp->stop_reason = TARGET_STOPPED_BY_NO_REASON;
-}
-
-/* Called when we try to resume a stopped LWP and that errors out.  If
-   the LWP is no longer in ptrace-stopped state (meaning it's zombie,
-   or about to become), discard the error, clear any pending status
-   the LWP may have, and return true (we'll collect the exit status
-   soon enough).  Otherwise, return false.  */
-
-static int
-check_ptrace_stopped_lwp_gone (struct lwp_info *lp)
-{
-  struct thread_info *thread = get_lwp_thread (lp);
-
-  /* If we get an error after resuming the LWP successfully, we'd
-     confuse !T state for the LWP being gone.  */
-  gdb_assert (lp->stopped);
-
-  /* We can't just check whether the LWP is in 'Z (Zombie)' state,
-     because even if ptrace failed with ESRCH, the tracee may be "not
-     yet fully dead", but already refusing ptrace requests.  In that
-     case the tracee has 'R (Running)' state for a little bit
-     (observed in Linux 3.18).  See also the note on ESRCH in the
-     ptrace(2) man page.  Instead, check whether the LWP has any state
-     other than ptrace-stopped.  */
-
-  /* Don't assume anything if /proc/PID/status can't be read.  */
-  if (linux_proc_pid_is_trace_stopped_nowarn (lwpid_of (thread)) == 0)
-    {
-      lp->stop_reason = TARGET_STOPPED_BY_NO_REASON;
-      lp->status_pending_p = 0;
-      return 1;
-    }
-  return 0;
-}
-
-/* Like linux_resume_one_lwp_throw, but no error is thrown if the LWP
-   disappears while we try to resume it.  */
-
-static void
-linux_resume_one_lwp (struct lwp_info *lwp,
-		      int step, int signal, siginfo_t *info)
-{
-  try
-    {
-      linux_resume_one_lwp_throw (lwp, step, signal, info);
-    }
-  catch (const gdb_exception_error &ex)
-    {
-      if (!check_ptrace_stopped_lwp_gone (lwp))
-	throw;
-    }
-}
-
-/* This function is called once per thread via for_each_thread.
-   We look up which resume request applies to THREAD and mark it with a
-   pointer to the appropriate resume request.
-
-   This algorithm is O(threads * resume elements), but resume elements
-   is small (and will remain small at least until GDB supports thread
-   suspension).  */
-
-static void
-linux_set_resume_request (thread_info *thread, thread_resume *resume, size_t n)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-
-  for (int ndx = 0; ndx < n; ndx++)
-    {
-      ptid_t ptid = resume[ndx].thread;
-      if (ptid == minus_one_ptid
-	  || ptid == thread->id
-	  /* Handle both 'pPID' and 'pPID.-1' as meaning 'all threads
-	     of PID'.  */
-	  || (ptid.pid () == pid_of (thread)
-	      && (ptid.is_pid ()
-		  || ptid.lwp () == -1)))
-	{
-	  if (resume[ndx].kind == resume_stop
-	      && thread->last_resume_kind == resume_stop)
-	    {
-	      if (debug_threads)
-		debug_printf ("already %s LWP %ld at GDB's request\n",
-			      (thread->last_status.kind
-			       == TARGET_WAITKIND_STOPPED)
-			      ? "stopped"
-			      : "stopping",
-			      lwpid_of (thread));
-
-	      continue;
-	    }
-
-	  /* Ignore (wildcard) resume requests for already-resumed
-	     threads.  */
-	  if (resume[ndx].kind != resume_stop
-	      && thread->last_resume_kind != resume_stop)
-	    {
-	      if (debug_threads)
-		debug_printf ("already %s LWP %ld at GDB's request\n",
-			      (thread->last_resume_kind
-			       == resume_step)
-			      ? "stepping"
-			      : "continuing",
-			      lwpid_of (thread));
-	      continue;
-	    }
-
-	  /* Don't let wildcard resumes resume fork children that GDB
-	     does not yet know are new fork children.  */
-	  if (lwp->fork_relative != NULL)
-	    {
-	      struct lwp_info *rel = lwp->fork_relative;
-
-	      if (rel->status_pending_p
-		  && (rel->waitstatus.kind == TARGET_WAITKIND_FORKED
-		      || rel->waitstatus.kind == TARGET_WAITKIND_VFORKED))
-		{
-		  if (debug_threads)
-		    debug_printf ("not resuming LWP %ld: has queued stop reply\n",
-				  lwpid_of (thread));
-		  continue;
-		}
-	    }
-
-	  /* If the thread has a pending event that has already been
-	     reported to GDBserver core, but GDB has not pulled the
-	     event out of the vStopped queue yet, likewise, ignore the
-	     (wildcard) resume request.  */
-	  if (in_queued_stop_replies (thread->id))
-	    {
-	      if (debug_threads)
-		debug_printf ("not resuming LWP %ld: has queued stop reply\n",
-			      lwpid_of (thread));
-	      continue;
-	    }
-
-	  lwp->resume = &resume[ndx];
-	  thread->last_resume_kind = lwp->resume->kind;
-
-	  lwp->step_range_start = lwp->resume->step_range_start;
-	  lwp->step_range_end = lwp->resume->step_range_end;
-
-	  /* If we had a deferred signal to report, dequeue one now.
-	     This can happen if LWP gets more than one signal while
-	     trying to get out of a jump pad.  */
-	  if (lwp->stopped
-	      && !lwp->status_pending_p
-	      && dequeue_one_deferred_signal (lwp, &lwp->status_pending))
-	    {
-	      lwp->status_pending_p = 1;
-
-	      if (debug_threads)
-		debug_printf ("Dequeueing deferred signal %d for LWP %ld, "
-			      "leaving status pending.\n",
-			      WSTOPSIG (lwp->status_pending),
-			      lwpid_of (thread));
-	    }
-
-	  return;
-	}
-    }
-
-  /* No resume action for this thread.  */
-  lwp->resume = NULL;
-}
-
-/* find_thread callback for linux_resume.  Return true if this lwp has an
-   interesting status pending.  */
-
-static bool
-resume_status_pending_p (thread_info *thread)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-
-  /* LWPs which will not be resumed are not interesting, because
-     we might not wait for them next time through linux_wait.  */
-  if (lwp->resume == NULL)
-    return false;
-
-  return thread_still_has_status_pending_p (thread);
-}
-
-/* Return 1 if this lwp that GDB wants running is stopped at an
-   internal breakpoint that we need to step over.  It assumes that any
-   required STOP_PC adjustment has already been propagated to the
-   inferior's regcache.  */
-
-static bool
-need_step_over_p (thread_info *thread)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-  struct thread_info *saved_thread;
-  CORE_ADDR pc;
-  struct process_info *proc = get_thread_process (thread);
-
-  /* GDBserver is skipping the extra traps from the wrapper program,
-     don't have to do step over.  */
-  if (proc->tdesc == NULL)
-    return false;
-
-  /* LWPs which will not be resumed are not interesting, because we
-     might not wait for them next time through linux_wait.  */
-
-  if (!lwp->stopped)
-    {
-      if (debug_threads)
-	debug_printf ("Need step over [LWP %ld]? Ignoring, not stopped\n",
-		      lwpid_of (thread));
-      return false;
-    }
-
-  if (thread->last_resume_kind == resume_stop)
-    {
-      if (debug_threads)
-	debug_printf ("Need step over [LWP %ld]? Ignoring, should remain"
-		      " stopped\n",
-		      lwpid_of (thread));
-      return false;
-    }
-
-  gdb_assert (lwp->suspended >= 0);
-
-  if (lwp->suspended)
-    {
-      if (debug_threads)
-	debug_printf ("Need step over [LWP %ld]? Ignoring, suspended\n",
-		      lwpid_of (thread));
-      return false;
-    }
-
-  if (lwp->status_pending_p)
-    {
-      if (debug_threads)
-	debug_printf ("Need step over [LWP %ld]? Ignoring, has pending"
-		      " status.\n",
-		      lwpid_of (thread));
-      return false;
-    }
-
-  /* Note: PC, not STOP_PC.  Either GDB has adjusted the PC already,
-     or we have.  */
-  pc = get_pc (lwp);
-
-  /* If the PC has changed since we stopped, then don't do anything,
-     and let the breakpoint/tracepoint be hit.  This happens if, for
-     instance, GDB handled the decr_pc_after_break subtraction itself,
-     GDB is OOL stepping this thread, or the user has issued a "jump"
-     command, or poked thread's registers herself.  */
-  if (pc != lwp->stop_pc)
-    {
-      if (debug_threads)
-	debug_printf ("Need step over [LWP %ld]? Cancelling, PC was changed. "
-		      "Old stop_pc was 0x%s, PC is now 0x%s\n",
-		      lwpid_of (thread),
-		      paddress (lwp->stop_pc), paddress (pc));
-      return false;
-    }
-
-  /* On software single step target, resume the inferior with signal
-     rather than stepping over.  */
-  if (can_software_single_step ()
-      && lwp->pending_signals != NULL
-      && lwp_signal_can_be_delivered (lwp))
-    {
-      if (debug_threads)
-	debug_printf ("Need step over [LWP %ld]? Ignoring, has pending"
-		      " signals.\n",
-		      lwpid_of (thread));
-
-      return false;
-    }
-
-  saved_thread = current_thread;
-  current_thread = thread;
-
-  /* We can only step over breakpoints we know about.  */
-  if (breakpoint_here (pc) || fast_tracepoint_jump_here (pc))
-    {
-      /* Don't step over a breakpoint that GDB expects to hit
-	 though.  If the condition is being evaluated on the target's side
-	 and it evaluate to false, step over this breakpoint as well.  */
-      if (gdb_breakpoint_here (pc)
-	  && gdb_condition_true_at_breakpoint (pc)
-	  && gdb_no_commands_at_breakpoint (pc))
-	{
-	  if (debug_threads)
-	    debug_printf ("Need step over [LWP %ld]? yes, but found"
-			  " GDB breakpoint at 0x%s; skipping step over\n",
-			  lwpid_of (thread), paddress (pc));
-
-	  current_thread = saved_thread;
-	  return false;
-	}
-      else
-	{
-	  if (debug_threads)
-	    debug_printf ("Need step over [LWP %ld]? yes, "
-			  "found breakpoint at 0x%s\n",
-			  lwpid_of (thread), paddress (pc));
-
-	  /* We've found an lwp that needs stepping over --- return 1 so
-	     that find_thread stops looking.  */
-	  current_thread = saved_thread;
-
-	  return true;
-	}
-    }
-
-  current_thread = saved_thread;
-
-  if (debug_threads)
-    debug_printf ("Need step over [LWP %ld]? No, no breakpoint found"
-		  " at 0x%s\n",
-		  lwpid_of (thread), paddress (pc));
-
-  return false;
-}
-
-/* Start a step-over operation on LWP.  When LWP stopped at a
-   breakpoint, to make progress, we need to remove the breakpoint out
-   of the way.  If we let other threads run while we do that, they may
-   pass by the breakpoint location and miss hitting it.  To avoid
-   that, a step-over momentarily stops all threads while LWP is
-   single-stepped by either hardware or software while the breakpoint
-   is temporarily uninserted from the inferior.  When the single-step
-   finishes, we reinsert the breakpoint, and let all threads that are
-   supposed to be running, run again.  */
-
-static int
-start_step_over (struct lwp_info *lwp)
-{
-  struct thread_info *thread = get_lwp_thread (lwp);
-  struct thread_info *saved_thread;
-  CORE_ADDR pc;
-  int step;
-
-  if (debug_threads)
-    debug_printf ("Starting step-over on LWP %ld.  Stopping all threads\n",
-		  lwpid_of (thread));
-
-  stop_all_lwps (1, lwp);
-
-  if (lwp->suspended != 0)
-    {
-      internal_error (__FILE__, __LINE__,
-		      "LWP %ld suspended=%d\n", lwpid_of (thread),
-		      lwp->suspended);
-    }
-
-  if (debug_threads)
-    debug_printf ("Done stopping all threads for step-over.\n");
-
-  /* Note, we should always reach here with an already adjusted PC,
-     either by GDB (if we're resuming due to GDB's request), or by our
-     caller, if we just finished handling an internal breakpoint GDB
-     shouldn't care about.  */
-  pc = get_pc (lwp);
-
-  saved_thread = current_thread;
-  current_thread = thread;
-
-  lwp->bp_reinsert = pc;
-  uninsert_breakpoints_at (pc);
-  uninsert_fast_tracepoint_jumps_at (pc);
-
-  step = single_step (lwp);
-
-  current_thread = saved_thread;
-
-  linux_resume_one_lwp (lwp, step, 0, NULL);
-
-  /* Require next event from this LWP.  */
-  step_over_bkpt = thread->id;
-  return 1;
-}
-
-/* Finish a step-over.  Reinsert the breakpoint we had uninserted in
-   start_step_over, if still there, and delete any single-step
-   breakpoints we've set, on non hardware single-step targets.  */
-
-static int
-finish_step_over (struct lwp_info *lwp)
-{
-  if (lwp->bp_reinsert != 0)
-    {
-      struct thread_info *saved_thread = current_thread;
-
-      if (debug_threads)
-	debug_printf ("Finished step over.\n");
-
-      current_thread = get_lwp_thread (lwp);
-
-      /* Reinsert any breakpoint at LWP->BP_REINSERT.  Note that there
-	 may be no breakpoint to reinsert there by now.  */
-      reinsert_breakpoints_at (lwp->bp_reinsert);
-      reinsert_fast_tracepoint_jumps_at (lwp->bp_reinsert);
-
-      lwp->bp_reinsert = 0;
-
-      /* Delete any single-step breakpoints.  No longer needed.  We
-	 don't have to worry about other threads hitting this trap,
-	 and later not being able to explain it, because we were
-	 stepping over a breakpoint, and we hold all threads but
-	 LWP stopped while doing that.  */
-      if (!can_hardware_single_step ())
-	{
-	  gdb_assert (has_single_step_breakpoints (current_thread));
-	  delete_single_step_breakpoints (current_thread);
-	}
-
-      step_over_bkpt = null_ptid;
-      current_thread = saved_thread;
-      return 1;
-    }
-  else
-    return 0;
-}
-
-/* If there's a step over in progress, wait until all threads stop
-   (that is, until the stepping thread finishes its step), and
-   unsuspend all lwps.  The stepping thread ends with its status
-   pending, which is processed later when we get back to processing
-   events.  */
-
-static void
-complete_ongoing_step_over (void)
-{
-  if (step_over_bkpt != null_ptid)
-    {
-      struct lwp_info *lwp;
-      int wstat;
-      int ret;
-
-      if (debug_threads)
-	debug_printf ("detach: step over in progress, finish it first\n");
-
-      /* Passing NULL_PTID as filter indicates we want all events to
-	 be left pending.  Eventually this returns when there are no
-	 unwaited-for children left.  */
-      ret = linux_wait_for_event_filtered (minus_one_ptid, null_ptid,
-					   &wstat, __WALL);
-      gdb_assert (ret == -1);
-
-      lwp = find_lwp_pid (step_over_bkpt);
-      if (lwp != NULL)
-	finish_step_over (lwp);
-      step_over_bkpt = null_ptid;
-      unsuspend_all_lwps (lwp);
-    }
-}
-
-/* This function is called once per thread.  We check the thread's resume
-   request, which will tell us whether to resume, step, or leave the thread
-   stopped; and what signal, if any, it should be sent.
-
-   For threads which we aren't explicitly told otherwise, we preserve
-   the stepping flag; this is used for stepping over gdbserver-placed
-   breakpoints.
-
-   If pending_flags was set in any thread, we queue any needed
-   signals, since we won't actually resume.  We already have a pending
-   event to report, so we don't need to preserve any step requests;
-   they should be re-issued if necessary.  */
-
-static void
-linux_resume_one_thread (thread_info *thread, bool leave_all_stopped)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-  int leave_pending;
-
-  if (lwp->resume == NULL)
-    return;
-
-  if (lwp->resume->kind == resume_stop)
-    {
-      if (debug_threads)
-	debug_printf ("resume_stop request for LWP %ld\n", lwpid_of (thread));
-
-      if (!lwp->stopped)
-	{
-	  if (debug_threads)
-	    debug_printf ("stopping LWP %ld\n", lwpid_of (thread));
-
-	  /* Stop the thread, and wait for the event asynchronously,
-	     through the event loop.  */
-	  send_sigstop (lwp);
-	}
-      else
-	{
-	  if (debug_threads)
-	    debug_printf ("already stopped LWP %ld\n",
-			  lwpid_of (thread));
-
-	  /* The LWP may have been stopped in an internal event that
-	     was not meant to be notified back to GDB (e.g., gdbserver
-	     breakpoint), so we should be reporting a stop event in
-	     this case too.  */
-
-	  /* If the thread already has a pending SIGSTOP, this is a
-	     no-op.  Otherwise, something later will presumably resume
-	     the thread and this will cause it to cancel any pending
-	     operation, due to last_resume_kind == resume_stop.  If
-	     the thread already has a pending status to report, we
-	     will still report it the next time we wait - see
-	     status_pending_p_callback.  */
-
-	  /* If we already have a pending signal to report, then
-	     there's no need to queue a SIGSTOP, as this means we're
-	     midway through moving the LWP out of the jumppad, and we
-	     will report the pending signal as soon as that is
-	     finished.  */
-	  if (lwp->pending_signals_to_report == NULL)
-	    send_sigstop (lwp);
-	}
-
-      /* For stop requests, we're done.  */
-      lwp->resume = NULL;
-      thread->last_status.kind = TARGET_WAITKIND_IGNORE;
-      return;
-    }
-
-  /* If this thread which is about to be resumed has a pending status,
-     then don't resume it - we can just report the pending status.
-     Likewise if it is suspended, because e.g., another thread is
-     stepping past a breakpoint.  Make sure to queue any signals that
-     would otherwise be sent.  In all-stop mode, we do this decision
-     based on if *any* thread has a pending status.  If there's a
-     thread that needs the step-over-breakpoint dance, then don't
-     resume any other thread but that particular one.  */
-  leave_pending = (lwp->suspended
-		   || lwp->status_pending_p
-		   || leave_all_stopped);
-
-  /* If we have a new signal, enqueue the signal.  */
-  if (lwp->resume->sig != 0)
-    {
-      siginfo_t info, *info_p;
-
-      /* If this is the same signal we were previously stopped by,
-	 make sure to queue its siginfo.  */
-      if (WIFSTOPPED (lwp->last_status)
-	  && WSTOPSIG (lwp->last_status) == lwp->resume->sig
-	  && ptrace (PTRACE_GETSIGINFO, lwpid_of (thread),
-		     (PTRACE_TYPE_ARG3) 0, &info) == 0)
-	info_p = &info;
-      else
-	info_p = NULL;
-
-      enqueue_pending_signal (lwp, lwp->resume->sig, info_p);
-    }
-
-  if (!leave_pending)
-    {
-      if (debug_threads)
-	debug_printf ("resuming LWP %ld\n", lwpid_of (thread));
-
-      proceed_one_lwp (thread, NULL);
-    }
-  else
-    {
-      if (debug_threads)
-	debug_printf ("leaving LWP %ld stopped\n", lwpid_of (thread));
-    }
-
-  thread->last_status.kind = TARGET_WAITKIND_IGNORE;
-  lwp->resume = NULL;
-}
-
-static void
-linux_resume (struct thread_resume *resume_info, size_t n)
-{
-  struct thread_info *need_step_over = NULL;
-
-  if (debug_threads)
-    {
-      debug_enter ();
-      debug_printf ("linux_resume:\n");
-    }
-
-  for_each_thread ([&] (thread_info *thread)
-    {
-      linux_set_resume_request (thread, resume_info, n);
-    });
-
-  /* If there is a thread which would otherwise be resumed, which has
-     a pending status, then don't resume any threads - we can just
-     report the pending status.  Make sure to queue any signals that
-     would otherwise be sent.  In non-stop mode, we'll apply this
-     logic to each thread individually.  We consume all pending events
-     before considering to start a step-over (in all-stop).  */
-  bool any_pending = false;
-  if (!non_stop)
-    any_pending = find_thread (resume_status_pending_p) != NULL;
-
-  /* If there is a thread which would otherwise be resumed, which is
-     stopped at a breakpoint that needs stepping over, then don't
-     resume any threads - have it step over the breakpoint with all
-     other threads stopped, then resume all threads again.  Make sure
-     to queue any signals that would otherwise be delivered or
-     queued.  */
-  if (!any_pending && supports_breakpoints ())
-    need_step_over = find_thread (need_step_over_p);
-
-  bool leave_all_stopped = (need_step_over != NULL || any_pending);
-
-  if (debug_threads)
-    {
-      if (need_step_over != NULL)
-	debug_printf ("Not resuming all, need step over\n");
-      else if (any_pending)
-	debug_printf ("Not resuming, all-stop and found "
-		      "an LWP with pending status\n");
-      else
-	debug_printf ("Resuming, no pending status or step over needed\n");
-    }
-
-  /* Even if we're leaving threads stopped, queue all signals we'd
-     otherwise deliver.  */
-  for_each_thread ([&] (thread_info *thread)
-    {
-      linux_resume_one_thread (thread, leave_all_stopped);
-    });
-
-  if (need_step_over)
-    start_step_over (get_thread_lwp (need_step_over));
-
-  if (debug_threads)
-    {
-      debug_printf ("linux_resume done\n");
-      debug_exit ();
-    }
-
-  /* We may have events that were pending that can/should be sent to
-     the client now.  Trigger a linux_wait call.  */
-  if (target_is_async_p ())
-    async_file_mark ();
-}
-
-/* This function is called once per thread.  We check the thread's
-   last resume request, which will tell us whether to resume, step, or
-   leave the thread stopped.  Any signal the client requested to be
-   delivered has already been enqueued at this point.
-
-   If any thread that GDB wants running is stopped at an internal
-   breakpoint that needs stepping over, we start a step-over operation
-   on that particular thread, and leave all others stopped.  */
-
-static void
-proceed_one_lwp (thread_info *thread, lwp_info *except)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-  int step;
-
-  if (lwp == except)
-    return;
-
-  if (debug_threads)
-    debug_printf ("proceed_one_lwp: lwp %ld\n", lwpid_of (thread));
-
-  if (!lwp->stopped)
-    {
-      if (debug_threads)
-	debug_printf ("   LWP %ld already running\n", lwpid_of (thread));
-      return;
-    }
-
-  if (thread->last_resume_kind == resume_stop
-      && thread->last_status.kind != TARGET_WAITKIND_IGNORE)
-    {
-      if (debug_threads)
-	debug_printf ("   client wants LWP to remain %ld stopped\n",
-		      lwpid_of (thread));
-      return;
-    }
-
-  if (lwp->status_pending_p)
-    {
-      if (debug_threads)
-	debug_printf ("   LWP %ld has pending status, leaving stopped\n",
-		      lwpid_of (thread));
-      return;
-    }
-
-  gdb_assert (lwp->suspended >= 0);
-
-  if (lwp->suspended)
-    {
-      if (debug_threads)
-	debug_printf ("   LWP %ld is suspended\n", lwpid_of (thread));
-      return;
-    }
-
-  if (thread->last_resume_kind == resume_stop
-      && lwp->pending_signals_to_report == NULL
-      && (lwp->collecting_fast_tracepoint
-	  == fast_tpoint_collect_result::not_collecting))
-    {
-      /* We haven't reported this LWP as stopped yet (otherwise, the
-	 last_status.kind check above would catch it, and we wouldn't
-	 reach here.  This LWP may have been momentarily paused by a
-	 stop_all_lwps call while handling for example, another LWP's
-	 step-over.  In that case, the pending expected SIGSTOP signal
-	 that was queued at vCont;t handling time will have already
-	 been consumed by wait_for_sigstop, and so we need to requeue
-	 another one here.  Note that if the LWP already has a SIGSTOP
-	 pending, this is a no-op.  */
-
-      if (debug_threads)
-	debug_printf ("Client wants LWP %ld to stop. "
-		      "Making sure it has a SIGSTOP pending\n",
-		      lwpid_of (thread));
-
-      send_sigstop (lwp);
-    }
-
-  if (thread->last_resume_kind == resume_step)
-    {
-      if (debug_threads)
-	debug_printf ("   stepping LWP %ld, client wants it stepping\n",
-		      lwpid_of (thread));
-
-      /* If resume_step is requested by GDB, install single-step
-	 breakpoints when the thread is about to be actually resumed if
-	 the single-step breakpoints weren't removed.  */
-      if (can_software_single_step ()
-	  && !has_single_step_breakpoints (thread))
-	install_software_single_step_breakpoints (lwp);
-
-      step = maybe_hw_step (thread);
-    }
-  else if (lwp->bp_reinsert != 0)
-    {
-      if (debug_threads)
-	debug_printf ("   stepping LWP %ld, reinsert set\n",
-		      lwpid_of (thread));
-
-      step = maybe_hw_step (thread);
-    }
-  else
-    step = 0;
-
-  linux_resume_one_lwp (lwp, step, 0, NULL);
-}
-
-static void
-unsuspend_and_proceed_one_lwp (thread_info *thread, lwp_info *except)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-
-  if (lwp == except)
-    return;
-
-  lwp_suspended_decr (lwp);
-
-  proceed_one_lwp (thread, except);
-}
-
-/* When we finish a step-over, set threads running again.  If there's
-   another thread that may need a step-over, now's the time to start
-   it.  Eventually, we'll move all threads past their breakpoints.  */
-
-static void
-proceed_all_lwps (void)
-{
-  struct thread_info *need_step_over;
-
-  /* If there is a thread which would otherwise be resumed, which is
-     stopped at a breakpoint that needs stepping over, then don't
-     resume any threads - have it step over the breakpoint with all
-     other threads stopped, then resume all threads again.  */
-
-  if (supports_breakpoints ())
-    {
-      need_step_over = find_thread (need_step_over_p);
-
-      if (need_step_over != NULL)
-	{
-	  if (debug_threads)
-	    debug_printf ("proceed_all_lwps: found "
-			  "thread %ld needing a step-over\n",
-			  lwpid_of (need_step_over));
-
-	  start_step_over (get_thread_lwp (need_step_over));
-	  return;
-	}
-    }
-
-  if (debug_threads)
-    debug_printf ("Proceeding, no step-over needed\n");
-
-  for_each_thread ([] (thread_info *thread)
-    {
-      proceed_one_lwp (thread, NULL);
-    });
-}
-
-/* Stopped LWPs that the client wanted to be running, that don't have
-   pending statuses, are set to run again, except for EXCEPT, if not
-   NULL.  This undoes a stop_all_lwps call.  */
-
-static void
-unstop_all_lwps (int unsuspend, struct lwp_info *except)
-{
-  if (debug_threads)
-    {
-      debug_enter ();
-      if (except)
-	debug_printf ("unstopping all lwps, except=(LWP %ld)\n",
-		      lwpid_of (get_lwp_thread (except)));
-      else
-	debug_printf ("unstopping all lwps\n");
-    }
-
-  if (unsuspend)
-    for_each_thread ([&] (thread_info *thread)
-      {
-	unsuspend_and_proceed_one_lwp (thread, except);
-      });
-  else
-    for_each_thread ([&] (thread_info *thread)
-      {
-	proceed_one_lwp (thread, except);
-      });
-
-  if (debug_threads)
-    {
-      debug_printf ("unstop_all_lwps done\n");
-      debug_exit ();
-    }
-}
-
-
-#ifdef HAVE_LINUX_REGSETS
-
-#define use_linux_regsets 1
-
-/* Returns true if REGSET has been disabled.  */
-
-static int
-regset_disabled (struct regsets_info *info, struct regset_info *regset)
-{
-  return (info->disabled_regsets != NULL
-	  && info->disabled_regsets[regset - info->regsets]);
-}
-
-/* Disable REGSET.  */
-
-static void
-disable_regset (struct regsets_info *info, struct regset_info *regset)
-{
-  int dr_offset;
-
-  dr_offset = regset - info->regsets;
-  if (info->disabled_regsets == NULL)
-    info->disabled_regsets = (char *) xcalloc (1, info->num_regsets);
-  info->disabled_regsets[dr_offset] = 1;
-}
-
-static int
-regsets_fetch_inferior_registers (struct regsets_info *regsets_info,
-				  struct regcache *regcache)
-{
-  struct regset_info *regset;
-  int saw_general_regs = 0;
-  int pid;
-  struct iovec iov;
-
-  pid = lwpid_of (current_thread);
-  for (regset = regsets_info->regsets; regset->size >= 0; regset++)
-    {
-      void *buf, *data;
-      int nt_type, res;
-
-      if (regset->size == 0 || regset_disabled (regsets_info, regset))
-	continue;
-
-      buf = xmalloc (regset->size);
-
-      nt_type = regset->nt_type;
-      if (nt_type)
-	{
-	  iov.iov_base = buf;
-	  iov.iov_len = regset->size;
-	  data = (void *) &iov;
-	}
-      else
-	data = buf;
-
-#ifndef __sparc__
-      res = ptrace (regset->get_request, pid,
-		    (PTRACE_TYPE_ARG3) (long) nt_type, data);
-#else
-      res = ptrace (regset->get_request, pid, data, nt_type);
-#endif
-      if (res < 0)
-	{
-	  if (errno == EIO
-	      || (errno == EINVAL && regset->type == OPTIONAL_REGS))
-	    {
-	      /* If we get EIO on a regset, or an EINVAL and the regset is
-		 optional, do not try it again for this process mode.  */
-	      disable_regset (regsets_info, regset);
-	    }
-	  else if (errno == ENODATA)
-	    {
-	      /* ENODATA may be returned if the regset is currently
-		 not "active".  This can happen in normal operation,
-		 so suppress the warning in this case.  */
-	    }
-	  else if (errno == ESRCH)
-	    {
-	      /* At this point, ESRCH should mean the process is
-		 already gone, in which case we simply ignore attempts
-		 to read its registers.  */
-	    }
-	  else
-	    {
-	      char s[256];
-	      sprintf (s, "ptrace(regsets_fetch_inferior_registers) PID=%d",
-		       pid);
-	      perror (s);
-	    }
-	}
-      else
-	{
-	  if (regset->type == GENERAL_REGS)
-	    saw_general_regs = 1;
-	  regset->store_function (regcache, buf);
-	}
-      free (buf);
-    }
-  if (saw_general_regs)
-    return 0;
-  else
-    return 1;
-}
-
-static int
-regsets_store_inferior_registers (struct regsets_info *regsets_info,
-				  struct regcache *regcache)
-{
-  struct regset_info *regset;
-  int saw_general_regs = 0;
-  int pid;
-  struct iovec iov;
-
-  pid = lwpid_of (current_thread);
-  for (regset = regsets_info->regsets; regset->size >= 0; regset++)
-    {
-      void *buf, *data;
-      int nt_type, res;
-
-      if (regset->size == 0 || regset_disabled (regsets_info, regset)
-	  || regset->fill_function == NULL)
-	continue;
-
-      buf = xmalloc (regset->size);
-
-      /* First fill the buffer with the current register set contents,
-	 in case there are any items in the kernel's regset that are
-	 not in gdbserver's regcache.  */
-
-      nt_type = regset->nt_type;
-      if (nt_type)
-	{
-	  iov.iov_base = buf;
-	  iov.iov_len = regset->size;
-	  data = (void *) &iov;
-	}
-      else
-	data = buf;
-
-#ifndef __sparc__
-      res = ptrace (regset->get_request, pid,
-		    (PTRACE_TYPE_ARG3) (long) nt_type, data);
-#else
-      res = ptrace (regset->get_request, pid, data, nt_type);
-#endif
-
-      if (res == 0)
-	{
-	  /* Then overlay our cached registers on that.  */
-	  regset->fill_function (regcache, buf);
-
-	  /* Only now do we write the register set.  */
-#ifndef __sparc__
-	  res = ptrace (regset->set_request, pid,
-			(PTRACE_TYPE_ARG3) (long) nt_type, data);
-#else
-	  res = ptrace (regset->set_request, pid, data, nt_type);
-#endif
-	}
-
-      if (res < 0)
-	{
-	  if (errno == EIO
-	      || (errno == EINVAL && regset->type == OPTIONAL_REGS))
-	    {
-	      /* If we get EIO on a regset, or an EINVAL and the regset is
-		 optional, do not try it again for this process mode.  */
-	      disable_regset (regsets_info, regset);
-	    }
-	  else if (errno == ESRCH)
-	    {
-	      /* At this point, ESRCH should mean the process is
-		 already gone, in which case we simply ignore attempts
-		 to change its registers.  See also the related
-		 comment in linux_resume_one_lwp.  */
-	      free (buf);
-	      return 0;
-	    }
-	  else
-	    {
-	      perror ("Warning: ptrace(regsets_store_inferior_registers)");
-	    }
-	}
-      else if (regset->type == GENERAL_REGS)
-	saw_general_regs = 1;
-      free (buf);
-    }
-  if (saw_general_regs)
-    return 0;
-  else
-    return 1;
-}
-
-#else /* !HAVE_LINUX_REGSETS */
-
-#define use_linux_regsets 0
-#define regsets_fetch_inferior_registers(regsets_info, regcache) 1
-#define regsets_store_inferior_registers(regsets_info, regcache) 1
-
-#endif
-
-/* Return 1 if register REGNO is supported by one of the regset ptrace
-   calls or 0 if it has to be transferred individually.  */
-
-static int
-linux_register_in_regsets (const struct regs_info *regs_info, int regno)
-{
-  unsigned char mask = 1 << (regno % 8);
-  size_t index = regno / 8;
-
-  return (use_linux_regsets
-	  && (regs_info->regset_bitmap == NULL
-	      || (regs_info->regset_bitmap[index] & mask) != 0));
-}
-
-#ifdef HAVE_LINUX_USRREGS
-
-static int
-register_addr (const struct usrregs_info *usrregs, int regnum)
-{
-  int addr;
-
-  if (regnum < 0 || regnum >= usrregs->num_regs)
-    error ("Invalid register number %d.", regnum);
-
-  addr = usrregs->regmap[regnum];
-
-  return addr;
-}
-
-/* Fetch one register.  */
-static void
-fetch_register (const struct usrregs_info *usrregs,
-		struct regcache *regcache, int regno)
-{
-  CORE_ADDR regaddr;
-  int i, size;
-  char *buf;
-  int pid;
-
-  if (regno >= usrregs->num_regs)
-    return;
-  if ((*the_low_target.cannot_fetch_register) (regno))
-    return;
-
-  regaddr = register_addr (usrregs, regno);
-  if (regaddr == -1)
-    return;
-
-  size = ((register_size (regcache->tdesc, regno)
-	   + sizeof (PTRACE_XFER_TYPE) - 1)
-	  & -sizeof (PTRACE_XFER_TYPE));
-  buf = (char *) alloca (size);
-
-  pid = lwpid_of (current_thread);
-  for (i = 0; i < size; i += sizeof (PTRACE_XFER_TYPE))
-    {
-      errno = 0;
-      *(PTRACE_XFER_TYPE *) (buf + i) =
-	ptrace (PTRACE_PEEKUSER, pid,
-		/* Coerce to a uintptr_t first to avoid potential gcc warning
-		   of coercing an 8 byte integer to a 4 byte pointer.  */
-		(PTRACE_TYPE_ARG3) (uintptr_t) regaddr, (PTRACE_TYPE_ARG4) 0);
-      regaddr += sizeof (PTRACE_XFER_TYPE);
-      if (errno != 0)
-	{
-	  /* Mark register REGNO unavailable.  */
-	  supply_register (regcache, regno, NULL);
-	  return;
-	}
-    }
-
-  if (the_low_target.supply_ptrace_register)
-    the_low_target.supply_ptrace_register (regcache, regno, buf);
-  else
-    supply_register (regcache, regno, buf);
-}
-
-/* Store one register.  */
-static void
-store_register (const struct usrregs_info *usrregs,
-		struct regcache *regcache, int regno)
-{
-  CORE_ADDR regaddr;
-  int i, size;
-  char *buf;
-  int pid;
-
-  if (regno >= usrregs->num_regs)
-    return;
-  if ((*the_low_target.cannot_store_register) (regno))
-    return;
-
-  regaddr = register_addr (usrregs, regno);
-  if (regaddr == -1)
-    return;
-
-  size = ((register_size (regcache->tdesc, regno)
-	   + sizeof (PTRACE_XFER_TYPE) - 1)
-	  & -sizeof (PTRACE_XFER_TYPE));
-  buf = (char *) alloca (size);
-  memset (buf, 0, size);
-
-  if (the_low_target.collect_ptrace_register)
-    the_low_target.collect_ptrace_register (regcache, regno, buf);
-  else
-    collect_register (regcache, regno, buf);
-
-  pid = lwpid_of (current_thread);
-  for (i = 0; i < size; i += sizeof (PTRACE_XFER_TYPE))
-    {
-      errno = 0;
-      ptrace (PTRACE_POKEUSER, pid,
-	    /* Coerce to a uintptr_t first to avoid potential gcc warning
-	       about coercing an 8 byte integer to a 4 byte pointer.  */
-	      (PTRACE_TYPE_ARG3) (uintptr_t) regaddr,
-	      (PTRACE_TYPE_ARG4) *(PTRACE_XFER_TYPE *) (buf + i));
-      if (errno != 0)
-	{
-	  /* At this point, ESRCH should mean the process is
-	     already gone, in which case we simply ignore attempts
-	     to change its registers.  See also the related
-	     comment in linux_resume_one_lwp.  */
-	  if (errno == ESRCH)
-	    return;
-
-	  if ((*the_low_target.cannot_store_register) (regno) == 0)
-	    error ("writing register %d: %s", regno, safe_strerror (errno));
-	}
-      regaddr += sizeof (PTRACE_XFER_TYPE);
-    }
-}
-
-/* Fetch all registers, or just one, from the child process.
-   If REGNO is -1, do this for all registers, skipping any that are
-   assumed to have been retrieved by regsets_fetch_inferior_registers,
-   unless ALL is non-zero.
-   Otherwise, REGNO specifies which register (so we can save time).  */
-static void
-usr_fetch_inferior_registers (const struct regs_info *regs_info,
-			      struct regcache *regcache, int regno, int all)
-{
-  struct usrregs_info *usr = regs_info->usrregs;
-
-  if (regno == -1)
-    {
-      for (regno = 0; regno < usr->num_regs; regno++)
-	if (all || !linux_register_in_regsets (regs_info, regno))
-	  fetch_register (usr, regcache, regno);
-    }
-  else
-    fetch_register (usr, regcache, regno);
-}
-
-/* Store our register values back into the inferior.
-   If REGNO is -1, do this for all registers, skipping any that are
-   assumed to have been saved by regsets_store_inferior_registers,
-   unless ALL is non-zero.
-   Otherwise, REGNO specifies which register (so we can save time).  */
-static void
-usr_store_inferior_registers (const struct regs_info *regs_info,
-			      struct regcache *regcache, int regno, int all)
-{
-  struct usrregs_info *usr = regs_info->usrregs;
-
-  if (regno == -1)
-    {
-      for (regno = 0; regno < usr->num_regs; regno++)
-	if (all || !linux_register_in_regsets (regs_info, regno))
-	  store_register (usr, regcache, regno);
-    }
-  else
-    store_register (usr, regcache, regno);
-}
-
-#else /* !HAVE_LINUX_USRREGS */
-
-#define usr_fetch_inferior_registers(regs_info, regcache, regno, all) do {} while (0)
-#define usr_store_inferior_registers(regs_info, regcache, regno, all) do {} while (0)
-
-#endif
-
-
-static void
-linux_fetch_registers (struct regcache *regcache, int regno)
-{
-  int use_regsets;
-  int all = 0;
-  const struct regs_info *regs_info = (*the_low_target.regs_info) ();
-
-  if (regno == -1)
-    {
-      if (the_low_target.fetch_register != NULL
-	  && regs_info->usrregs != NULL)
-	for (regno = 0; regno < regs_info->usrregs->num_regs; regno++)
-	  (*the_low_target.fetch_register) (regcache, regno);
-
-      all = regsets_fetch_inferior_registers (regs_info->regsets_info, regcache);
-      if (regs_info->usrregs != NULL)
-	usr_fetch_inferior_registers (regs_info, regcache, -1, all);
-    }
-  else
-    {
-      if (the_low_target.fetch_register != NULL
-	  && (*the_low_target.fetch_register) (regcache, regno))
-	return;
-
-      use_regsets = linux_register_in_regsets (regs_info, regno);
-      if (use_regsets)
-	all = regsets_fetch_inferior_registers (regs_info->regsets_info,
-						regcache);
-      if ((!use_regsets || all) && regs_info->usrregs != NULL)
-	usr_fetch_inferior_registers (regs_info, regcache, regno, 1);
-    }
-}
-
-static void
-linux_store_registers (struct regcache *regcache, int regno)
-{
-  int use_regsets;
-  int all = 0;
-  const struct regs_info *regs_info = (*the_low_target.regs_info) ();
-
-  if (regno == -1)
-    {
-      all = regsets_store_inferior_registers (regs_info->regsets_info,
-					      regcache);
-      if (regs_info->usrregs != NULL)
-	usr_store_inferior_registers (regs_info, regcache, regno, all);
-    }
-  else
-    {
-      use_regsets = linux_register_in_regsets (regs_info, regno);
-      if (use_regsets)
-	all = regsets_store_inferior_registers (regs_info->regsets_info,
-						regcache);
-      if ((!use_regsets || all) && regs_info->usrregs != NULL)
-	usr_store_inferior_registers (regs_info, regcache, regno, 1);
-    }
-}
-
-
-/* Copy LEN bytes from inferior's memory starting at MEMADDR
-   to debugger memory starting at MYADDR.  */
-
-static int
-linux_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  int pid = lwpid_of (current_thread);
-  PTRACE_XFER_TYPE *buffer;
-  CORE_ADDR addr;
-  int count;
-  char filename[64];
-  int i;
-  int ret;
-  int fd;
-
-  /* Try using /proc.  Don't bother for one word.  */
-  if (len >= 3 * sizeof (long))
-    {
-      int bytes;
-
-      /* We could keep this file open and cache it - possibly one per
-	 thread.  That requires some juggling, but is even faster.  */
-      sprintf (filename, "/proc/%d/mem", pid);
-      fd = open (filename, O_RDONLY | O_LARGEFILE);
-      if (fd == -1)
-	goto no_proc;
-
-      /* If pread64 is available, use it.  It's faster if the kernel
-	 supports it (only one syscall), and it's 64-bit safe even on
-	 32-bit platforms (for instance, SPARC debugging a SPARC64
-	 application).  */
-#ifdef HAVE_PREAD64
-      bytes = pread64 (fd, myaddr, len, memaddr);
-#else
-      bytes = -1;
-      if (lseek (fd, memaddr, SEEK_SET) != -1)
-	bytes = read (fd, myaddr, len);
-#endif
-
-      close (fd);
-      if (bytes == len)
-	return 0;
-
-      /* Some data was read, we'll try to get the rest with ptrace.  */
-      if (bytes > 0)
-	{
-	  memaddr += bytes;
-	  myaddr += bytes;
-	  len -= bytes;
-	}
-    }
-
- no_proc:
-  /* Round starting address down to longword boundary.  */
-  addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE);
-  /* Round ending address up; get number of longwords that makes.  */
-  count = ((((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1)
-	   / sizeof (PTRACE_XFER_TYPE));
-  /* Allocate buffer of that many longwords.  */
-  buffer = XALLOCAVEC (PTRACE_XFER_TYPE, count);
-
-  /* Read all the longwords */
-  errno = 0;
-  for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE))
-    {
-      /* Coerce the 3rd arg to a uintptr_t first to avoid potential gcc warning
-	 about coercing an 8 byte integer to a 4 byte pointer.  */
-      buffer[i] = ptrace (PTRACE_PEEKTEXT, pid,
-			  (PTRACE_TYPE_ARG3) (uintptr_t) addr,
-			  (PTRACE_TYPE_ARG4) 0);
-      if (errno)
-	break;
-    }
-  ret = errno;
-
-  /* Copy appropriate bytes out of the buffer.  */
-  if (i > 0)
-    {
-      i *= sizeof (PTRACE_XFER_TYPE);
-      i -= memaddr & (sizeof (PTRACE_XFER_TYPE) - 1);
-      memcpy (myaddr,
-	      (char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)),
-	      i < len ? i : len);
-    }
-
-  return ret;
-}
-
-/* Copy LEN bytes of data from debugger memory at MYADDR to inferior's
-   memory at MEMADDR.  On failure (cannot write to the inferior)
-   returns the value of errno.  Always succeeds if LEN is zero.  */
-
-static int
-linux_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len)
-{
-  int i;
-  /* Round starting address down to longword boundary.  */
-  CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE);
-  /* Round ending address up; get number of longwords that makes.  */
-  int count
-    = (((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1)
-    / sizeof (PTRACE_XFER_TYPE);
-
-  /* Allocate buffer of that many longwords.  */
-  PTRACE_XFER_TYPE *buffer = XALLOCAVEC (PTRACE_XFER_TYPE, count);
-
-  int pid = lwpid_of (current_thread);
-
-  if (len == 0)
-    {
-      /* Zero length write always succeeds.  */
-      return 0;
-    }
-
-  if (debug_threads)
-    {
-      /* Dump up to four bytes.  */
-      char str[4 * 2 + 1];
-      char *p = str;
-      int dump = len < 4 ? len : 4;
-
-      for (i = 0; i < dump; i++)
-	{
-	  sprintf (p, "%02x", myaddr[i]);
-	  p += 2;
-	}
-      *p = '\0';
-
-      debug_printf ("Writing %s to 0x%08lx in process %d\n",
-		    str, (long) memaddr, pid);
-    }
-
-  /* Fill start and end extra bytes of buffer with existing memory data.  */
-
-  errno = 0;
-  /* Coerce the 3rd arg to a uintptr_t first to avoid potential gcc warning
-     about coercing an 8 byte integer to a 4 byte pointer.  */
-  buffer[0] = ptrace (PTRACE_PEEKTEXT, pid,
-		      (PTRACE_TYPE_ARG3) (uintptr_t) addr,
-		      (PTRACE_TYPE_ARG4) 0);
-  if (errno)
-    return errno;
-
-  if (count > 1)
-    {
-      errno = 0;
-      buffer[count - 1]
-	= ptrace (PTRACE_PEEKTEXT, pid,
-		  /* Coerce to a uintptr_t first to avoid potential gcc warning
-		     about coercing an 8 byte integer to a 4 byte pointer.  */
-		  (PTRACE_TYPE_ARG3) (uintptr_t) (addr + (count - 1)
-						  * sizeof (PTRACE_XFER_TYPE)),
-		  (PTRACE_TYPE_ARG4) 0);
-      if (errno)
-	return errno;
-    }
-
-  /* Copy data to be written over corresponding part of buffer.  */
-
-  memcpy ((char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)),
-	  myaddr, len);
-
-  /* Write the entire buffer.  */
-
-  for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE))
-    {
-      errno = 0;
-      ptrace (PTRACE_POKETEXT, pid,
-	      /* Coerce to a uintptr_t first to avoid potential gcc warning
-		 about coercing an 8 byte integer to a 4 byte pointer.  */
-	      (PTRACE_TYPE_ARG3) (uintptr_t) addr,
-	      (PTRACE_TYPE_ARG4) buffer[i]);
-      if (errno)
-	return errno;
-    }
-
-  return 0;
-}
-
-static void
-linux_look_up_symbols (void)
-{
-#ifdef USE_THREAD_DB
-  struct process_info *proc = current_process ();
-
-  if (proc->priv->thread_db != NULL)
-    return;
-
-  thread_db_init ();
-#endif
-}
-
-static void
-linux_request_interrupt (void)
-{
-  /* Send a SIGINT to the process group.  This acts just like the user
-     typed a ^C on the controlling terminal.  */
-  kill (-signal_pid, SIGINT);
-}
-
-/* Copy LEN bytes from inferior's auxiliary vector starting at OFFSET
-   to debugger memory starting at MYADDR.  */
-
-static int
-linux_read_auxv (CORE_ADDR offset, unsigned char *myaddr, unsigned int len)
-{
-  char filename[PATH_MAX];
-  int fd, n;
-  int pid = lwpid_of (current_thread);
-
-  xsnprintf (filename, sizeof filename, "/proc/%d/auxv", pid);
-
-  fd = open (filename, O_RDONLY);
-  if (fd < 0)
-    return -1;
-
-  if (offset != (CORE_ADDR) 0
-      && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
-    n = -1;
-  else
-    n = read (fd, myaddr, len);
-
-  close (fd);
-
-  return n;
-}
-
-/* These breakpoint and watchpoint related wrapper functions simply
-   pass on the function call if the target has registered a
-   corresponding function.  */
-
-static int
-linux_supports_z_point_type (char z_type)
-{
-  return (the_low_target.supports_z_point_type != NULL
-	  && the_low_target.supports_z_point_type (z_type));
-}
-
-static int
-linux_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		    int size, struct raw_breakpoint *bp)
-{
-  if (type == raw_bkpt_type_sw)
-    return insert_memory_breakpoint (bp);
-  else if (the_low_target.insert_point != NULL)
-    return the_low_target.insert_point (type, addr, size, bp);
-  else
-    /* Unsupported (see target.h).  */
-    return 1;
-}
-
-static int
-linux_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		    int size, struct raw_breakpoint *bp)
-{
-  if (type == raw_bkpt_type_sw)
-    return remove_memory_breakpoint (bp);
-  else if (the_low_target.remove_point != NULL)
-    return the_low_target.remove_point (type, addr, size, bp);
-  else
-    /* Unsupported (see target.h).  */
-    return 1;
-}
-
-/* Implement the to_stopped_by_sw_breakpoint target_ops
-   method.  */
-
-static int
-linux_stopped_by_sw_breakpoint (void)
-{
-  struct lwp_info *lwp = get_thread_lwp (current_thread);
-
-  return (lwp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT);
-}
-
-/* Implement the to_supports_stopped_by_sw_breakpoint target_ops
-   method.  */
-
-static int
-linux_supports_stopped_by_sw_breakpoint (void)
-{
-  return USE_SIGTRAP_SIGINFO;
-}
-
-/* Implement the to_stopped_by_hw_breakpoint target_ops
-   method.  */
-
-static int
-linux_stopped_by_hw_breakpoint (void)
-{
-  struct lwp_info *lwp = get_thread_lwp (current_thread);
-
-  return (lwp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT);
-}
-
-/* Implement the to_supports_stopped_by_hw_breakpoint target_ops
-   method.  */
-
-static int
-linux_supports_stopped_by_hw_breakpoint (void)
-{
-  return USE_SIGTRAP_SIGINFO;
-}
-
-/* Implement the supports_hardware_single_step target_ops method.  */
-
-static int
-linux_supports_hardware_single_step (void)
-{
-  return can_hardware_single_step ();
-}
-
-static int
-linux_supports_software_single_step (void)
-{
-  return can_software_single_step ();
-}
-
-static int
-linux_stopped_by_watchpoint (void)
-{
-  struct lwp_info *lwp = get_thread_lwp (current_thread);
-
-  return lwp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT;
-}
-
-static CORE_ADDR
-linux_stopped_data_address (void)
-{
-  struct lwp_info *lwp = get_thread_lwp (current_thread);
-
-  return lwp->stopped_data_address;
-}
-
-#if defined(__UCLIBC__) && defined(HAS_NOMMU)	      \
-    && defined(PT_TEXT_ADDR) && defined(PT_DATA_ADDR) \
-    && defined(PT_TEXT_END_ADDR)
-
-/* This is only used for targets that define PT_TEXT_ADDR,
-   PT_DATA_ADDR and PT_TEXT_END_ADDR.  If those are not defined, supposedly
-   the target has different ways of acquiring this information, like
-   loadmaps.  */
-
-/* Under uClinux, programs are loaded at non-zero offsets, which we need
-   to tell gdb about.  */
-
-static int
-linux_read_offsets (CORE_ADDR *text_p, CORE_ADDR *data_p)
-{
-  unsigned long text, text_end, data;
-  int pid = lwpid_of (current_thread);
-
-  errno = 0;
-
-  text = ptrace (PTRACE_PEEKUSER, pid, (PTRACE_TYPE_ARG3) PT_TEXT_ADDR,
-		 (PTRACE_TYPE_ARG4) 0);
-  text_end = ptrace (PTRACE_PEEKUSER, pid, (PTRACE_TYPE_ARG3) PT_TEXT_END_ADDR,
-		     (PTRACE_TYPE_ARG4) 0);
-  data = ptrace (PTRACE_PEEKUSER, pid, (PTRACE_TYPE_ARG3) PT_DATA_ADDR,
-		 (PTRACE_TYPE_ARG4) 0);
-
-  if (errno == 0)
-    {
-      /* Both text and data offsets produced at compile-time (and so
-	 used by gdb) are relative to the beginning of the program,
-	 with the data segment immediately following the text segment.
-	 However, the actual runtime layout in memory may put the data
-	 somewhere else, so when we send gdb a data base-address, we
-	 use the real data base address and subtract the compile-time
-	 data base-address from it (which is just the length of the
-	 text segment).  BSS immediately follows data in both
-	 cases.  */
-      *text_p = text;
-      *data_p = data - (text_end - text);
-
-      return 1;
-    }
- return 0;
-}
-#endif
-
-static int
-linux_qxfer_osdata (const char *annex,
-		    unsigned char *readbuf, unsigned const char *writebuf,
-		    CORE_ADDR offset, int len)
-{
-  return linux_common_xfer_osdata (annex, readbuf, offset, len);
-}
-
-/* Convert a native/host siginfo object, into/from the siginfo in the
-   layout of the inferiors' architecture.  */
-
-static void
-siginfo_fixup (siginfo_t *siginfo, gdb_byte *inf_siginfo, int direction)
-{
-  int done = 0;
-
-  if (the_low_target.siginfo_fixup != NULL)
-    done = the_low_target.siginfo_fixup (siginfo, inf_siginfo, direction);
-
-  /* If there was no callback, or the callback didn't do anything,
-     then just do a straight memcpy.  */
-  if (!done)
-    {
-      if (direction == 1)
-	memcpy (siginfo, inf_siginfo, sizeof (siginfo_t));
-      else
-	memcpy (inf_siginfo, siginfo, sizeof (siginfo_t));
-    }
-}
-
-static int
-linux_xfer_siginfo (const char *annex, unsigned char *readbuf,
-		    unsigned const char *writebuf, CORE_ADDR offset, int len)
-{
-  int pid;
-  siginfo_t siginfo;
-  gdb_byte inf_siginfo[sizeof (siginfo_t)];
-
-  if (current_thread == NULL)
-    return -1;
-
-  pid = lwpid_of (current_thread);
-
-  if (debug_threads)
-    debug_printf ("%s siginfo for lwp %d.\n",
-		  readbuf != NULL ? "Reading" : "Writing",
-		  pid);
-
-  if (offset >= sizeof (siginfo))
-    return -1;
-
-  if (ptrace (PTRACE_GETSIGINFO, pid, (PTRACE_TYPE_ARG3) 0, &siginfo) != 0)
-    return -1;
-
-  /* When GDBSERVER is built as a 64-bit application, ptrace writes into
-     SIGINFO an object with 64-bit layout.  Since debugging a 32-bit
-     inferior with a 64-bit GDBSERVER should look the same as debugging it
-     with a 32-bit GDBSERVER, we need to convert it.  */
-  siginfo_fixup (&siginfo, inf_siginfo, 0);
-
-  if (offset + len > sizeof (siginfo))
-    len = sizeof (siginfo) - offset;
-
-  if (readbuf != NULL)
-    memcpy (readbuf, inf_siginfo + offset, len);
-  else
-    {
-      memcpy (inf_siginfo + offset, writebuf, len);
-
-      /* Convert back to ptrace layout before flushing it out.  */
-      siginfo_fixup (&siginfo, inf_siginfo, 1);
-
-      if (ptrace (PTRACE_SETSIGINFO, pid, (PTRACE_TYPE_ARG3) 0, &siginfo) != 0)
-	return -1;
-    }
-
-  return len;
-}
-
-/* SIGCHLD handler that serves two purposes: In non-stop/async mode,
-   so we notice when children change state; as the handler for the
-   sigsuspend in my_waitpid.  */
-
-static void
-sigchld_handler (int signo)
-{
-  int old_errno = errno;
-
-  if (debug_threads)
-    {
-      do
-	{
-	  /* Use the async signal safe debug function.  */
-	  if (debug_write ("sigchld_handler\n",
-			   sizeof ("sigchld_handler\n") - 1) < 0)
-	    break; /* just ignore */
-	} while (0);
-    }
-
-  if (target_is_async_p ())
-    async_file_mark (); /* trigger a linux_wait */
-
-  errno = old_errno;
-}
-
-static int
-linux_supports_non_stop (void)
-{
-  return 1;
-}
-
-static int
-linux_async (int enable)
-{
-  int previous = target_is_async_p ();
-
-  if (debug_threads)
-    debug_printf ("linux_async (%d), previous=%d\n",
-		  enable, previous);
-
-  if (previous != enable)
-    {
-      sigset_t mask;
-      sigemptyset (&mask);
-      sigaddset (&mask, SIGCHLD);
-
-      gdb_sigmask (SIG_BLOCK, &mask, NULL);
-
-      if (enable)
-	{
-	  if (pipe (linux_event_pipe) == -1)
-	    {
-	      linux_event_pipe[0] = -1;
-	      linux_event_pipe[1] = -1;
-	      gdb_sigmask (SIG_UNBLOCK, &mask, NULL);
-
-	      warning ("creating event pipe failed.");
-	      return previous;
-	    }
-
-	  fcntl (linux_event_pipe[0], F_SETFL, O_NONBLOCK);
-	  fcntl (linux_event_pipe[1], F_SETFL, O_NONBLOCK);
-
-	  /* Register the event loop handler.  */
-	  add_file_handler (linux_event_pipe[0],
-			    handle_target_event, NULL);
-
-	  /* Always trigger a linux_wait.  */
-	  async_file_mark ();
-	}
-      else
-	{
-	  delete_file_handler (linux_event_pipe[0]);
-
-	  close (linux_event_pipe[0]);
-	  close (linux_event_pipe[1]);
-	  linux_event_pipe[0] = -1;
-	  linux_event_pipe[1] = -1;
-	}
-
-      gdb_sigmask (SIG_UNBLOCK, &mask, NULL);
-    }
-
-  return previous;
-}
-
-static int
-linux_start_non_stop (int nonstop)
-{
-  /* Register or unregister from event-loop accordingly.  */
-  linux_async (nonstop);
-
-  if (target_is_async_p () != (nonstop != 0))
-    return -1;
-
-  return 0;
-}
-
-static int
-linux_supports_multi_process (void)
-{
-  return 1;
-}
-
-/* Check if fork events are supported.  */
-
-static int
-linux_supports_fork_events (void)
-{
-  return linux_supports_tracefork ();
-}
-
-/* Check if vfork events are supported.  */
-
-static int
-linux_supports_vfork_events (void)
-{
-  return linux_supports_tracefork ();
-}
-
-/* Check if exec events are supported.  */
-
-static int
-linux_supports_exec_events (void)
-{
-  return linux_supports_traceexec ();
-}
-
-/* Target hook for 'handle_new_gdb_connection'.  Causes a reset of the
-   ptrace flags for all inferiors.  This is in case the new GDB connection
-   doesn't support the same set of events that the previous one did.  */
-
-static void
-linux_handle_new_gdb_connection (void)
-{
-  /* Request that all the lwps reset their ptrace options.  */
-  for_each_thread ([] (thread_info *thread)
-    {
-      struct lwp_info *lwp = get_thread_lwp (thread);
-
-      if (!lwp->stopped)
-	{
-	  /* Stop the lwp so we can modify its ptrace options.  */
-	  lwp->must_set_ptrace_flags = 1;
-	  linux_stop_lwp (lwp);
-	}
-      else
-	{
-	  /* Already stopped; go ahead and set the ptrace options.  */
-	  struct process_info *proc = find_process_pid (pid_of (thread));
-	  int options = linux_low_ptrace_options (proc->attached);
-
-	  linux_enable_event_reporting (lwpid_of (thread), options);
-	  lwp->must_set_ptrace_flags = 0;
-	}
-    });
-}
-
-static int
-linux_supports_disable_randomization (void)
-{
-#ifdef HAVE_PERSONALITY
-  return 1;
-#else
-  return 0;
-#endif
-}
-
-static int
-linux_supports_agent (void)
-{
-  return 1;
-}
-
-static int
-linux_supports_range_stepping (void)
-{
-  if (can_software_single_step ())
-    return 1;
-  if (*the_low_target.supports_range_stepping == NULL)
-    return 0;
-
-  return (*the_low_target.supports_range_stepping) ();
-}
-
-#if defined PT_GETDSBT || defined PTRACE_GETFDPIC
-struct target_loadseg
-{
-  /* Core address to which the segment is mapped.  */
-  Elf32_Addr addr;
-  /* VMA recorded in the program header.  */
-  Elf32_Addr p_vaddr;
-  /* Size of this segment in memory.  */
-  Elf32_Word p_memsz;
-};
-
-# if defined PT_GETDSBT
-struct target_loadmap
-{
-  /* Protocol version number, must be zero.  */
-  Elf32_Word version;
-  /* Pointer to the DSBT table, its size, and the DSBT index.  */
-  unsigned *dsbt_table;
-  unsigned dsbt_size, dsbt_index;
-  /* Number of segments in this map.  */
-  Elf32_Word nsegs;
-  /* The actual memory map.  */
-  struct target_loadseg segs[/*nsegs*/];
-};
-#  define LINUX_LOADMAP		PT_GETDSBT
-#  define LINUX_LOADMAP_EXEC	PTRACE_GETDSBT_EXEC
-#  define LINUX_LOADMAP_INTERP	PTRACE_GETDSBT_INTERP
-# else
-struct target_loadmap
-{
-  /* Protocol version number, must be zero.  */
-  Elf32_Half version;
-  /* Number of segments in this map.  */
-  Elf32_Half nsegs;
-  /* The actual memory map.  */
-  struct target_loadseg segs[/*nsegs*/];
-};
-#  define LINUX_LOADMAP		PTRACE_GETFDPIC
-#  define LINUX_LOADMAP_EXEC	PTRACE_GETFDPIC_EXEC
-#  define LINUX_LOADMAP_INTERP	PTRACE_GETFDPIC_INTERP
-# endif
-
-static int
-linux_read_loadmap (const char *annex, CORE_ADDR offset,
-		    unsigned char *myaddr, unsigned int len)
-{
-  int pid = lwpid_of (current_thread);
-  int addr = -1;
-  struct target_loadmap *data = NULL;
-  unsigned int actual_length, copy_length;
-
-  if (strcmp (annex, "exec") == 0)
-    addr = (int) LINUX_LOADMAP_EXEC;
-  else if (strcmp (annex, "interp") == 0)
-    addr = (int) LINUX_LOADMAP_INTERP;
-  else
-    return -1;
-
-  if (ptrace (LINUX_LOADMAP, pid, addr, &data) != 0)
-    return -1;
-
-  if (data == NULL)
-    return -1;
-
-  actual_length = sizeof (struct target_loadmap)
-    + sizeof (struct target_loadseg) * data->nsegs;
-
-  if (offset < 0 || offset > actual_length)
-    return -1;
-
-  copy_length = actual_length - offset < len ? actual_length - offset : len;
-  memcpy (myaddr, (char *) data + offset, copy_length);
-  return copy_length;
-}
-#else
-# define linux_read_loadmap NULL
-#endif /* defined PT_GETDSBT || defined PTRACE_GETFDPIC */
-
-static void
-linux_process_qsupported (char **features, int count)
-{
-  if (the_low_target.process_qsupported != NULL)
-    the_low_target.process_qsupported (features, count);
-}
-
-static int
-linux_supports_catch_syscall (void)
-{
-  return (the_low_target.get_syscall_trapinfo != NULL
-	  && linux_supports_tracesysgood ());
-}
-
-static int
-linux_get_ipa_tdesc_idx (void)
-{
-  if (the_low_target.get_ipa_tdesc_idx == NULL)
-    return 0;
-
-  return (*the_low_target.get_ipa_tdesc_idx) ();
-}
-
-static int
-linux_supports_tracepoints (void)
-{
-  if (*the_low_target.supports_tracepoints == NULL)
-    return 0;
-
-  return (*the_low_target.supports_tracepoints) ();
-}
-
-static CORE_ADDR
-linux_read_pc (struct regcache *regcache)
-{
-  if (the_low_target.get_pc == NULL)
-    return 0;
-
-  return (*the_low_target.get_pc) (regcache);
-}
-
-static void
-linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
-{
-  gdb_assert (the_low_target.set_pc != NULL);
-
-  (*the_low_target.set_pc) (regcache, pc);
-}
-
-static int
-linux_thread_stopped (struct thread_info *thread)
-{
-  return get_thread_lwp (thread)->stopped;
-}
-
-/* This exposes stop-all-threads functionality to other modules.  */
-
-static void
-linux_pause_all (int freeze)
-{
-  stop_all_lwps (freeze, NULL);
-}
-
-/* This exposes unstop-all-threads functionality to other gdbserver
-   modules.  */
-
-static void
-linux_unpause_all (int unfreeze)
-{
-  unstop_all_lwps (unfreeze, NULL);
-}
-
-static int
-linux_prepare_to_access_memory (void)
-{
-  /* Neither ptrace nor /proc/PID/mem allow accessing memory through a
-     running LWP.  */
-  if (non_stop)
-    linux_pause_all (1);
-  return 0;
-}
-
-static void
-linux_done_accessing_memory (void)
-{
-  /* Neither ptrace nor /proc/PID/mem allow accessing memory through a
-     running LWP.  */
-  if (non_stop)
-    linux_unpause_all (1);
-}
-
-static int
-linux_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint, CORE_ADDR tpaddr,
-					CORE_ADDR collector,
-					CORE_ADDR lockaddr,
-					ULONGEST orig_size,
-					CORE_ADDR *jump_entry,
-					CORE_ADDR *trampoline,
-					ULONGEST *trampoline_size,
-					unsigned char *jjump_pad_insn,
-					ULONGEST *jjump_pad_insn_size,
-					CORE_ADDR *adjusted_insn_addr,
-					CORE_ADDR *adjusted_insn_addr_end,
-					char *err)
-{
-  return (*the_low_target.install_fast_tracepoint_jump_pad)
-    (tpoint, tpaddr, collector, lockaddr, orig_size,
-     jump_entry, trampoline, trampoline_size,
-     jjump_pad_insn, jjump_pad_insn_size,
-     adjusted_insn_addr, adjusted_insn_addr_end,
-     err);
-}
-
-static struct emit_ops *
-linux_emit_ops (void)
-{
-  if (the_low_target.emit_ops != NULL)
-    return (*the_low_target.emit_ops) ();
-  else
-    return NULL;
-}
-
-static int
-linux_get_min_fast_tracepoint_insn_len (void)
-{
-  return (*the_low_target.get_min_fast_tracepoint_insn_len) ();
-}
-
-/* Extract &phdr and num_phdr in the inferior.  Return 0 on success.  */
-
-static int
-get_phdr_phnum_from_proc_auxv (const int pid, const int is_elf64,
-			       CORE_ADDR *phdr_memaddr, int *num_phdr)
-{
-  char filename[PATH_MAX];
-  int fd;
-  const int auxv_size = is_elf64
-    ? sizeof (Elf64_auxv_t) : sizeof (Elf32_auxv_t);
-  char buf[sizeof (Elf64_auxv_t)];  /* The larger of the two.  */
-
-  xsnprintf (filename, sizeof filename, "/proc/%d/auxv", pid);
-
-  fd = open (filename, O_RDONLY);
-  if (fd < 0)
-    return 1;
-
-  *phdr_memaddr = 0;
-  *num_phdr = 0;
-  while (read (fd, buf, auxv_size) == auxv_size
-	 && (*phdr_memaddr == 0 || *num_phdr == 0))
-    {
-      if (is_elf64)
-	{
-	  Elf64_auxv_t *const aux = (Elf64_auxv_t *) buf;
-
-	  switch (aux->a_type)
-	    {
-	    case AT_PHDR:
-	      *phdr_memaddr = aux->a_un.a_val;
-	      break;
-	    case AT_PHNUM:
-	      *num_phdr = aux->a_un.a_val;
-	      break;
-	    }
-	}
-      else
-	{
-	  Elf32_auxv_t *const aux = (Elf32_auxv_t *) buf;
-
-	  switch (aux->a_type)
-	    {
-	    case AT_PHDR:
-	      *phdr_memaddr = aux->a_un.a_val;
-	      break;
-	    case AT_PHNUM:
-	      *num_phdr = aux->a_un.a_val;
-	      break;
-	    }
-	}
-    }
-
-  close (fd);
-
-  if (*phdr_memaddr == 0 || *num_phdr == 0)
-    {
-      warning ("Unexpected missing AT_PHDR and/or AT_PHNUM: "
-	       "phdr_memaddr = %ld, phdr_num = %d",
-	       (long) *phdr_memaddr, *num_phdr);
-      return 2;
-    }
-
-  return 0;
-}
-
-/* Return &_DYNAMIC (via PT_DYNAMIC) in the inferior, or 0 if not present.  */
-
-static CORE_ADDR
-get_dynamic (const int pid, const int is_elf64)
-{
-  CORE_ADDR phdr_memaddr, relocation;
-  int num_phdr, i;
-  unsigned char *phdr_buf;
-  const int phdr_size = is_elf64 ? sizeof (Elf64_Phdr) : sizeof (Elf32_Phdr);
-
-  if (get_phdr_phnum_from_proc_auxv (pid, is_elf64, &phdr_memaddr, &num_phdr))
-    return 0;
-
-  gdb_assert (num_phdr < 100);  /* Basic sanity check.  */
-  phdr_buf = (unsigned char *) alloca (num_phdr * phdr_size);
-
-  if (linux_read_memory (phdr_memaddr, phdr_buf, num_phdr * phdr_size))
-    return 0;
-
-  /* Compute relocation: it is expected to be 0 for "regular" executables,
-     non-zero for PIE ones.  */
-  relocation = -1;
-  for (i = 0; relocation == -1 && i < num_phdr; i++)
-    if (is_elf64)
-      {
-	Elf64_Phdr *const p = (Elf64_Phdr *) (phdr_buf + i * phdr_size);
-
-	if (p->p_type == PT_PHDR)
-	  relocation = phdr_memaddr - p->p_vaddr;
-      }
-    else
-      {
-	Elf32_Phdr *const p = (Elf32_Phdr *) (phdr_buf + i * phdr_size);
-
-	if (p->p_type == PT_PHDR)
-	  relocation = phdr_memaddr - p->p_vaddr;
-      }
-
-  if (relocation == -1)
-    {
-      /* PT_PHDR is optional, but necessary for PIE in general.  Fortunately
-	 any real world executables, including PIE executables, have always
-	 PT_PHDR present.  PT_PHDR is not present in some shared libraries or
-	 in fpc (Free Pascal 2.4) binaries but neither of those have a need for
-	 or present DT_DEBUG anyway (fpc binaries are statically linked).
-
-	 Therefore if there exists DT_DEBUG there is always also PT_PHDR.
-
-	 GDB could find RELOCATION also from AT_ENTRY - e_entry.  */
-
-      return 0;
-    }
-
-  for (i = 0; i < num_phdr; i++)
-    {
-      if (is_elf64)
-	{
-	  Elf64_Phdr *const p = (Elf64_Phdr *) (phdr_buf + i * phdr_size);
-
-	  if (p->p_type == PT_DYNAMIC)
-	    return p->p_vaddr + relocation;
-	}
-      else
-	{
-	  Elf32_Phdr *const p = (Elf32_Phdr *) (phdr_buf + i * phdr_size);
-
-	  if (p->p_type == PT_DYNAMIC)
-	    return p->p_vaddr + relocation;
-	}
-    }
-
-  return 0;
-}
-
-/* Return &_r_debug in the inferior, or -1 if not present.  Return value
-   can be 0 if the inferior does not yet have the library list initialized.
-   We look for DT_MIPS_RLD_MAP first.  MIPS executables use this instead of
-   DT_DEBUG, although they sometimes contain an unused DT_DEBUG entry too.  */
-
-static CORE_ADDR
-get_r_debug (const int pid, const int is_elf64)
-{
-  CORE_ADDR dynamic_memaddr;
-  const int dyn_size = is_elf64 ? sizeof (Elf64_Dyn) : sizeof (Elf32_Dyn);
-  unsigned char buf[sizeof (Elf64_Dyn)];  /* The larger of the two.  */
-  CORE_ADDR map = -1;
-
-  dynamic_memaddr = get_dynamic (pid, is_elf64);
-  if (dynamic_memaddr == 0)
-    return map;
-
-  while (linux_read_memory (dynamic_memaddr, buf, dyn_size) == 0)
-    {
-      if (is_elf64)
-	{
-	  Elf64_Dyn *const dyn = (Elf64_Dyn *) buf;
-#if defined DT_MIPS_RLD_MAP || defined DT_MIPS_RLD_MAP_REL
-	  union
-	    {
-	      Elf64_Xword map;
-	      unsigned char buf[sizeof (Elf64_Xword)];
-	    }
-	  rld_map;
-#endif
-#ifdef DT_MIPS_RLD_MAP
-	  if (dyn->d_tag == DT_MIPS_RLD_MAP)
-	    {
-	      if (linux_read_memory (dyn->d_un.d_val,
-				     rld_map.buf, sizeof (rld_map.buf)) == 0)
-		return rld_map.map;
-	      else
-		break;
-	    }
-#endif	/* DT_MIPS_RLD_MAP */
-#ifdef DT_MIPS_RLD_MAP_REL
-	  if (dyn->d_tag == DT_MIPS_RLD_MAP_REL)
-	    {
-	      if (linux_read_memory (dyn->d_un.d_val + dynamic_memaddr,
-				     rld_map.buf, sizeof (rld_map.buf)) == 0)
-		return rld_map.map;
-	      else
-		break;
-	    }
-#endif	/* DT_MIPS_RLD_MAP_REL */
-
-	  if (dyn->d_tag == DT_DEBUG && map == -1)
-	    map = dyn->d_un.d_val;
-
-	  if (dyn->d_tag == DT_NULL)
-	    break;
-	}
-      else
-	{
-	  Elf32_Dyn *const dyn = (Elf32_Dyn *) buf;
-#if defined DT_MIPS_RLD_MAP || defined DT_MIPS_RLD_MAP_REL
-	  union
-	    {
-	      Elf32_Word map;
-	      unsigned char buf[sizeof (Elf32_Word)];
-	    }
-	  rld_map;
-#endif
-#ifdef DT_MIPS_RLD_MAP
-	  if (dyn->d_tag == DT_MIPS_RLD_MAP)
-	    {
-	      if (linux_read_memory (dyn->d_un.d_val,
-				     rld_map.buf, sizeof (rld_map.buf)) == 0)
-		return rld_map.map;
-	      else
-		break;
-	    }
-#endif	/* DT_MIPS_RLD_MAP */
-#ifdef DT_MIPS_RLD_MAP_REL
-	  if (dyn->d_tag == DT_MIPS_RLD_MAP_REL)
-	    {
-	      if (linux_read_memory (dyn->d_un.d_val + dynamic_memaddr,
-				     rld_map.buf, sizeof (rld_map.buf)) == 0)
-		return rld_map.map;
-	      else
-		break;
-	    }
-#endif	/* DT_MIPS_RLD_MAP_REL */
-
-	  if (dyn->d_tag == DT_DEBUG && map == -1)
-	    map = dyn->d_un.d_val;
-
-	  if (dyn->d_tag == DT_NULL)
-	    break;
-	}
-
-      dynamic_memaddr += dyn_size;
-    }
-
-  return map;
-}
-
-/* Read one pointer from MEMADDR in the inferior.  */
-
-static int
-read_one_ptr (CORE_ADDR memaddr, CORE_ADDR *ptr, int ptr_size)
-{
-  int ret;
-
-  /* Go through a union so this works on either big or little endian
-     hosts, when the inferior's pointer size is smaller than the size
-     of CORE_ADDR.  It is assumed the inferior's endianness is the
-     same of the superior's.  */
-  union
-  {
-    CORE_ADDR core_addr;
-    unsigned int ui;
-    unsigned char uc;
-  } addr;
-
-  ret = linux_read_memory (memaddr, &addr.uc, ptr_size);
-  if (ret == 0)
-    {
-      if (ptr_size == sizeof (CORE_ADDR))
-	*ptr = addr.core_addr;
-      else if (ptr_size == sizeof (unsigned int))
-	*ptr = addr.ui;
-      else
-	gdb_assert_not_reached ("unhandled pointer size");
-    }
-  return ret;
-}
-
-struct link_map_offsets
-  {
-    /* Offset and size of r_debug.r_version.  */
-    int r_version_offset;
-
-    /* Offset and size of r_debug.r_map.  */
-    int r_map_offset;
-
-    /* Offset to l_addr field in struct link_map.  */
-    int l_addr_offset;
-
-    /* Offset to l_name field in struct link_map.  */
-    int l_name_offset;
-
-    /* Offset to l_ld field in struct link_map.  */
-    int l_ld_offset;
-
-    /* Offset to l_next field in struct link_map.  */
-    int l_next_offset;
-
-    /* Offset to l_prev field in struct link_map.  */
-    int l_prev_offset;
-  };
-
-/* Construct qXfer:libraries-svr4:read reply.  */
-
-static int
-linux_qxfer_libraries_svr4 (const char *annex, unsigned char *readbuf,
-			    unsigned const char *writebuf,
-			    CORE_ADDR offset, int len)
-{
-  struct process_info_private *const priv = current_process ()->priv;
-  char filename[PATH_MAX];
-  int pid, is_elf64;
-
-  static const struct link_map_offsets lmo_32bit_offsets =
-    {
-      0,     /* r_version offset. */
-      4,     /* r_debug.r_map offset.  */
-      0,     /* l_addr offset in link_map.  */
-      4,     /* l_name offset in link_map.  */
-      8,     /* l_ld offset in link_map.  */
-      12,    /* l_next offset in link_map.  */
-      16     /* l_prev offset in link_map.  */
-    };
-
-  static const struct link_map_offsets lmo_64bit_offsets =
-    {
-      0,     /* r_version offset. */
-      8,     /* r_debug.r_map offset.  */
-      0,     /* l_addr offset in link_map.  */
-      8,     /* l_name offset in link_map.  */
-      16,    /* l_ld offset in link_map.  */
-      24,    /* l_next offset in link_map.  */
-      32     /* l_prev offset in link_map.  */
-    };
-  const struct link_map_offsets *lmo;
-  unsigned int machine;
-  int ptr_size;
-  CORE_ADDR lm_addr = 0, lm_prev = 0;
-  CORE_ADDR l_name, l_addr, l_ld, l_next, l_prev;
-  int header_done = 0;
-
-  if (writebuf != NULL)
-    return -2;
-  if (readbuf == NULL)
-    return -1;
-
-  pid = lwpid_of (current_thread);
-  xsnprintf (filename, sizeof filename, "/proc/%d/exe", pid);
-  is_elf64 = elf_64_file_p (filename, &machine);
-  lmo = is_elf64 ? &lmo_64bit_offsets : &lmo_32bit_offsets;
-  ptr_size = is_elf64 ? 8 : 4;
-
-  while (annex[0] != '\0')
-    {
-      const char *sep;
-      CORE_ADDR *addrp;
-      int name_len;
-
-      sep = strchr (annex, '=');
-      if (sep == NULL)
-	break;
-
-      name_len = sep - annex;
-      if (name_len == 5 && startswith (annex, "start"))
-	addrp = &lm_addr;
-      else if (name_len == 4 && startswith (annex, "prev"))
-	addrp = &lm_prev;
-      else
-	{
-	  annex = strchr (sep, ';');
-	  if (annex == NULL)
-	    break;
-	  annex++;
-	  continue;
-	}
-
-      annex = decode_address_to_semicolon (addrp, sep + 1);
-    }
-
-  if (lm_addr == 0)
-    {
-      int r_version = 0;
-
-      if (priv->r_debug == 0)
-	priv->r_debug = get_r_debug (pid, is_elf64);
-
-      /* We failed to find DT_DEBUG.  Such situation will not change
-	 for this inferior - do not retry it.  Report it to GDB as
-	 E01, see for the reasons at the GDB solib-svr4.c side.  */
-      if (priv->r_debug == (CORE_ADDR) -1)
-	return -1;
-
-      if (priv->r_debug != 0)
-	{
-	  if (linux_read_memory (priv->r_debug + lmo->r_version_offset,
-				 (unsigned char *) &r_version,
-				 sizeof (r_version)) != 0
-	      || r_version != 1)
-	    {
-	      warning ("unexpected r_debug version %d", r_version);
-	    }
-	  else if (read_one_ptr (priv->r_debug + lmo->r_map_offset,
-				 &lm_addr, ptr_size) != 0)
-	    {
-	      warning ("unable to read r_map from 0x%lx",
-		       (long) priv->r_debug + lmo->r_map_offset);
-	    }
-	}
-    }
-
-  std::string document = "<library-list-svr4 version=\"1.0\"";
-
-  while (lm_addr
-	 && read_one_ptr (lm_addr + lmo->l_name_offset,
-			  &l_name, ptr_size) == 0
-	 && read_one_ptr (lm_addr + lmo->l_addr_offset,
-			  &l_addr, ptr_size) == 0
-	 && read_one_ptr (lm_addr + lmo->l_ld_offset,
-			  &l_ld, ptr_size) == 0
-	 && read_one_ptr (lm_addr + lmo->l_prev_offset,
-			  &l_prev, ptr_size) == 0
-	 && read_one_ptr (lm_addr + lmo->l_next_offset,
-			  &l_next, ptr_size) == 0)
-    {
-      unsigned char libname[PATH_MAX];
-
-      if (lm_prev != l_prev)
-	{
-	  warning ("Corrupted shared library list: 0x%lx != 0x%lx",
-		   (long) lm_prev, (long) l_prev);
-	  break;
-	}
-
-      /* Ignore the first entry even if it has valid name as the first entry
-	 corresponds to the main executable.  The first entry should not be
-	 skipped if the dynamic loader was loaded late by a static executable
-	 (see solib-svr4.c parameter ignore_first).  But in such case the main
-	 executable does not have PT_DYNAMIC present and this function already
-	 exited above due to failed get_r_debug.  */
-      if (lm_prev == 0)
-	string_appendf (document, " main-lm=\"0x%lx\"", (unsigned long) lm_addr);
-      else
-	{
-	  /* Not checking for error because reading may stop before
-	     we've got PATH_MAX worth of characters.  */
-	  libname[0] = '\0';
-	  linux_read_memory (l_name, libname, sizeof (libname) - 1);
-	  libname[sizeof (libname) - 1] = '\0';
-	  if (libname[0] != '\0')
-	    {
-	      if (!header_done)
-		{
-		  /* Terminate `<library-list-svr4'.  */
-		  document += '>';
-		  header_done = 1;
-		}
-
-	      string_appendf (document, "<library name=\"");
-	      xml_escape_text_append (&document, (char *) libname);
-	      string_appendf (document, "\" lm=\"0x%lx\" "
-			      "l_addr=\"0x%lx\" l_ld=\"0x%lx\"/>",
-			      (unsigned long) lm_addr, (unsigned long) l_addr,
-			      (unsigned long) l_ld);
-	    }
-	}
-
-      lm_prev = lm_addr;
-      lm_addr = l_next;
-    }
-
-  if (!header_done)
-    {
-      /* Empty list; terminate `<library-list-svr4'.  */
-      document += "/>";
-    }
-  else
-    document += "</library-list-svr4>";
-
-  int document_len = document.length ();
-  if (offset < document_len)
-    document_len -= offset;
-  else
-    document_len = 0;
-  if (len > document_len)
-    len = document_len;
-
-  memcpy (readbuf, document.data () + offset, len);
-
-  return len;
-}
-
-#ifdef HAVE_LINUX_BTRACE
-
-/* See to_disable_btrace target method.  */
-
-static int
-linux_low_disable_btrace (struct btrace_target_info *tinfo)
-{
-  enum btrace_error err;
-
-  err = linux_disable_btrace (tinfo);
-  return (err == BTRACE_ERR_NONE ? 0 : -1);
-}
-
-/* Encode an Intel Processor Trace configuration.  */
-
-static void
-linux_low_encode_pt_config (struct buffer *buffer,
-			    const struct btrace_data_pt_config *config)
-{
-  buffer_grow_str (buffer, "<pt-config>\n");
-
-  switch (config->cpu.vendor)
-    {
-    case CV_INTEL:
-      buffer_xml_printf (buffer, "<cpu vendor=\"GenuineIntel\" family=\"%u\" "
-			 "model=\"%u\" stepping=\"%u\"/>\n",
-			 config->cpu.family, config->cpu.model,
-			 config->cpu.stepping);
-      break;
-
-    default:
-      break;
-    }
-
-  buffer_grow_str (buffer, "</pt-config>\n");
-}
-
-/* Encode a raw buffer.  */
-
-static void
-linux_low_encode_raw (struct buffer *buffer, const gdb_byte *data,
-		      unsigned int size)
-{
-  if (size == 0)
-    return;
-
-  /* We use hex encoding - see gdbsupport/rsp-low.h.  */
-  buffer_grow_str (buffer, "<raw>\n");
-
-  while (size-- > 0)
-    {
-      char elem[2];
-
-      elem[0] = tohex ((*data >> 4) & 0xf);
-      elem[1] = tohex (*data++ & 0xf);
-
-      buffer_grow (buffer, elem, 2);
-    }
-
-  buffer_grow_str (buffer, "</raw>\n");
-}
-
-/* See to_read_btrace target method.  */
-
-static int
-linux_low_read_btrace (struct btrace_target_info *tinfo, struct buffer *buffer,
-		       enum btrace_read_type type)
-{
-  struct btrace_data btrace;
-  enum btrace_error err;
-
-  err = linux_read_btrace (&btrace, tinfo, type);
-  if (err != BTRACE_ERR_NONE)
-    {
-      if (err == BTRACE_ERR_OVERFLOW)
-	buffer_grow_str0 (buffer, "E.Overflow.");
-      else
-	buffer_grow_str0 (buffer, "E.Generic Error.");
-
-      return -1;
-    }
-
-  switch (btrace.format)
-    {
-    case BTRACE_FORMAT_NONE:
-      buffer_grow_str0 (buffer, "E.No Trace.");
-      return -1;
-
-    case BTRACE_FORMAT_BTS:
-      buffer_grow_str (buffer, "<!DOCTYPE btrace SYSTEM \"btrace.dtd\">\n");
-      buffer_grow_str (buffer, "<btrace version=\"1.0\">\n");
-
-      for (const btrace_block &block : *btrace.variant.bts.blocks)
-	buffer_xml_printf (buffer, "<block begin=\"0x%s\" end=\"0x%s\"/>\n",
-			   paddress (block.begin), paddress (block.end));
-
-      buffer_grow_str0 (buffer, "</btrace>\n");
-      break;
-
-    case BTRACE_FORMAT_PT:
-      buffer_grow_str (buffer, "<!DOCTYPE btrace SYSTEM \"btrace.dtd\">\n");
-      buffer_grow_str (buffer, "<btrace version=\"1.0\">\n");
-      buffer_grow_str (buffer, "<pt>\n");
-
-      linux_low_encode_pt_config (buffer, &btrace.variant.pt.config);
-
-      linux_low_encode_raw (buffer, btrace.variant.pt.data,
-			    btrace.variant.pt.size);
-
-      buffer_grow_str (buffer, "</pt>\n");
-      buffer_grow_str0 (buffer, "</btrace>\n");
-      break;
-
-    default:
-      buffer_grow_str0 (buffer, "E.Unsupported Trace Format.");
-      return -1;
-    }
-
-  return 0;
-}
-
-/* See to_btrace_conf target method.  */
-
-static int
-linux_low_btrace_conf (const struct btrace_target_info *tinfo,
-		       struct buffer *buffer)
-{
-  const struct btrace_config *conf;
-
-  buffer_grow_str (buffer, "<!DOCTYPE btrace-conf SYSTEM \"btrace-conf.dtd\">\n");
-  buffer_grow_str (buffer, "<btrace-conf version=\"1.0\">\n");
-
-  conf = linux_btrace_conf (tinfo);
-  if (conf != NULL)
-    {
-      switch (conf->format)
-	{
-	case BTRACE_FORMAT_NONE:
-	  break;
-
-	case BTRACE_FORMAT_BTS:
-	  buffer_xml_printf (buffer, "<bts");
-	  buffer_xml_printf (buffer, " size=\"0x%x\"", conf->bts.size);
-	  buffer_xml_printf (buffer, " />\n");
-	  break;
-
-	case BTRACE_FORMAT_PT:
-	  buffer_xml_printf (buffer, "<pt");
-	  buffer_xml_printf (buffer, " size=\"0x%x\"", conf->pt.size);
-	  buffer_xml_printf (buffer, "/>\n");
-	  break;
-	}
-    }
-
-  buffer_grow_str0 (buffer, "</btrace-conf>\n");
-  return 0;
-}
-#endif /* HAVE_LINUX_BTRACE */
-
-/* See nat/linux-nat.h.  */
-
-ptid_t
-current_lwp_ptid (void)
-{
-  return ptid_of (current_thread);
-}
-
-/* Implementation of the target_ops method "breakpoint_kind_from_pc".  */
-
-static int
-linux_breakpoint_kind_from_pc (CORE_ADDR *pcptr)
-{
-  if (the_low_target.breakpoint_kind_from_pc != NULL)
-    return (*the_low_target.breakpoint_kind_from_pc) (pcptr);
-  else
-    return default_breakpoint_kind_from_pc (pcptr);
-}
-
-/* Implementation of the target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-linux_sw_breakpoint_from_kind (int kind, int *size)
-{
-  gdb_assert (the_low_target.sw_breakpoint_from_kind != NULL);
-
-  return (*the_low_target.sw_breakpoint_from_kind) (kind, size);
-}
-
-/* Implementation of the target_ops method
-   "breakpoint_kind_from_current_state".  */
-
-static int
-linux_breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
-{
-  if (the_low_target.breakpoint_kind_from_current_state != NULL)
-    return (*the_low_target.breakpoint_kind_from_current_state) (pcptr);
-  else
-    return linux_breakpoint_kind_from_pc (pcptr);
-}
-
-/* Default implementation of linux_target_ops method "set_pc" for
-   32-bit pc register which is literally named "pc".  */
-
-void
-linux_set_pc_32bit (struct regcache *regcache, CORE_ADDR pc)
-{
-  uint32_t newpc = pc;
-
-  supply_register_by_name (regcache, "pc", &newpc);
-}
-
-/* Default implementation of linux_target_ops method "get_pc" for
-   32-bit pc register which is literally named "pc".  */
-
-CORE_ADDR
-linux_get_pc_32bit (struct regcache *regcache)
-{
-  uint32_t pc;
-
-  collect_register_by_name (regcache, "pc", &pc);
-  if (debug_threads)
-    debug_printf ("stop pc is 0x%" PRIx32 "\n", pc);
-  return pc;
-}
-
-/* Default implementation of linux_target_ops method "set_pc" for
-   64-bit pc register which is literally named "pc".  */
-
-void
-linux_set_pc_64bit (struct regcache *regcache, CORE_ADDR pc)
-{
-  uint64_t newpc = pc;
-
-  supply_register_by_name (regcache, "pc", &newpc);
-}
-
-/* Default implementation of linux_target_ops method "get_pc" for
-   64-bit pc register which is literally named "pc".  */
-
-CORE_ADDR
-linux_get_pc_64bit (struct regcache *regcache)
-{
-  uint64_t pc;
-
-  collect_register_by_name (regcache, "pc", &pc);
-  if (debug_threads)
-    debug_printf ("stop pc is 0x%" PRIx64 "\n", pc);
-  return pc;
-}
-
-/* See linux-low.h.  */
-
-int
-linux_get_auxv (int wordsize, CORE_ADDR match, CORE_ADDR *valp)
-{
-  gdb_byte *data = (gdb_byte *) alloca (2 * wordsize);
-  int offset = 0;
-
-  gdb_assert (wordsize == 4 || wordsize == 8);
-
-  while ((*the_target->read_auxv) (offset, data, 2 * wordsize) == 2 * wordsize)
-    {
-      if (wordsize == 4)
-	{
-	  uint32_t *data_p = (uint32_t *) data;
-	  if (data_p[0] == match)
-	    {
-	      *valp = data_p[1];
-	      return 1;
-	    }
-	}
-      else
-	{
-	  uint64_t *data_p = (uint64_t *) data;
-	  if (data_p[0] == match)
-	    {
-	      *valp = data_p[1];
-	      return 1;
-	    }
-	}
-
-      offset += 2 * wordsize;
-    }
-
-  return 0;
-}
-
-/* See linux-low.h.  */
-
-CORE_ADDR
-linux_get_hwcap (int wordsize)
-{
-  CORE_ADDR hwcap = 0;
-  linux_get_auxv (wordsize, AT_HWCAP, &hwcap);
-  return hwcap;
-}
-
-/* See linux-low.h.  */
-
-CORE_ADDR
-linux_get_hwcap2 (int wordsize)
-{
-  CORE_ADDR hwcap2 = 0;
-  linux_get_auxv (wordsize, AT_HWCAP2, &hwcap2);
-  return hwcap2;
-}
-
-static struct target_ops linux_target_ops = {
-  linux_create_inferior,
-  linux_post_create_inferior,
-  linux_attach,
-  linux_kill,
-  linux_detach,
-  linux_mourn,
-  linux_join,
-  linux_thread_alive,
-  linux_resume,
-  linux_wait,
-  linux_fetch_registers,
-  linux_store_registers,
-  linux_prepare_to_access_memory,
-  linux_done_accessing_memory,
-  linux_read_memory,
-  linux_write_memory,
-  linux_look_up_symbols,
-  linux_request_interrupt,
-  linux_read_auxv,
-  linux_supports_z_point_type,
-  linux_insert_point,
-  linux_remove_point,
-  linux_stopped_by_sw_breakpoint,
-  linux_supports_stopped_by_sw_breakpoint,
-  linux_stopped_by_hw_breakpoint,
-  linux_supports_stopped_by_hw_breakpoint,
-  linux_supports_hardware_single_step,
-  linux_stopped_by_watchpoint,
-  linux_stopped_data_address,
-#if defined(__UCLIBC__) && defined(HAS_NOMMU)	      \
-    && defined(PT_TEXT_ADDR) && defined(PT_DATA_ADDR) \
-    && defined(PT_TEXT_END_ADDR)
-  linux_read_offsets,
-#else
-  NULL,
-#endif
-#ifdef USE_THREAD_DB
-  thread_db_get_tls_address,
-#else
-  NULL,
-#endif
-  hostio_last_error_from_errno,
-  linux_qxfer_osdata,
-  linux_xfer_siginfo,
-  linux_supports_non_stop,
-  linux_async,
-  linux_start_non_stop,
-  linux_supports_multi_process,
-  linux_supports_fork_events,
-  linux_supports_vfork_events,
-  linux_supports_exec_events,
-  linux_handle_new_gdb_connection,
-#ifdef USE_THREAD_DB
-  thread_db_handle_monitor_command,
-#else
-  NULL,
-#endif
-  linux_common_core_of_thread,
-  linux_read_loadmap,
-  linux_process_qsupported,
-  linux_supports_tracepoints,
-  linux_read_pc,
-  linux_write_pc,
-  linux_thread_stopped,
-  NULL,
-  linux_pause_all,
-  linux_unpause_all,
-  linux_stabilize_threads,
-  linux_install_fast_tracepoint_jump_pad,
-  linux_emit_ops,
-  linux_supports_disable_randomization,
-  linux_get_min_fast_tracepoint_insn_len,
-  linux_qxfer_libraries_svr4,
-  linux_supports_agent,
-#ifdef HAVE_LINUX_BTRACE
-  linux_enable_btrace,
-  linux_low_disable_btrace,
-  linux_low_read_btrace,
-  linux_low_btrace_conf,
-#else
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-#endif
-  linux_supports_range_stepping,
-  linux_proc_pid_to_exec_file,
-  linux_mntns_open_cloexec,
-  linux_mntns_unlink,
-  linux_mntns_readlink,
-  linux_breakpoint_kind_from_pc,
-  linux_sw_breakpoint_from_kind,
-  linux_proc_tid_get_name,
-  linux_breakpoint_kind_from_current_state,
-  linux_supports_software_single_step,
-  linux_supports_catch_syscall,
-  linux_get_ipa_tdesc_idx,
-#if USE_THREAD_DB
-  thread_db_thread_handle,
-#else
-  NULL,
-#endif
-};
-
-#ifdef HAVE_LINUX_REGSETS
-void
-initialize_regsets_info (struct regsets_info *info)
-{
-  for (info->num_regsets = 0;
-       info->regsets[info->num_regsets].size >= 0;
-       info->num_regsets++)
-    ;
-}
-#endif
-
-void
-initialize_low (void)
-{
-  struct sigaction sigchld_action;
-
-  memset (&sigchld_action, 0, sizeof (sigchld_action));
-  set_target_ops (&linux_target_ops);
-
-  linux_ptrace_init_warnings ();
-  linux_proc_init_warnings ();
-
-  sigchld_action.sa_handler = sigchld_handler;
-  sigemptyset (&sigchld_action.sa_mask);
-  sigchld_action.sa_flags = SA_RESTART;
-  sigaction (SIGCHLD, &sigchld_action, NULL);
-
-  initialize_low_arch ();
-
-  linux_check_ptrace_features ();
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-low.h ./gdb/gdbserver/linux-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-low.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-low.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,456 +0,0 @@
-/* Internal interfaces for the GNU/Linux specific target code for gdbserver.
-   Copyright (C) 2002-2020 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 GDBSERVER_LINUX_LOW_H
-#define GDBSERVER_LINUX_LOW_H
-
-#include "nat/linux-nat.h"
-#include "nat/gdb_thread_db.h"
-#include <signal.h>
-
-#include "gdbthread.h"
-#include "gdb_proc_service.h"
-
-/* Included for ptrace type definitions.  */
-#include "nat/linux-ptrace.h"
-#include "target/waitstatus.h" /* For enum target_stop_reason.  */
-#include "tracepoint.h"
-
-#define PTRACE_XFER_TYPE long
-
-#ifdef HAVE_LINUX_REGSETS
-typedef void (*regset_fill_func) (struct regcache *, void *);
-typedef void (*regset_store_func) (struct regcache *, const void *);
-enum regset_type {
-  GENERAL_REGS,
-  FP_REGS,
-  EXTENDED_REGS,
-  OPTIONAL_REGS, /* Do not error if the regset cannot be accessed.  */
-};
-
-/* The arch's regsets array initializer must be terminated with a NULL
-   regset.  */
-#define NULL_REGSET \
-  { 0, 0, 0, -1, (enum regset_type) -1, NULL, NULL }
-
-struct regset_info
-{
-  int get_request, set_request;
-  /* If NT_TYPE isn't 0, it will be passed to ptrace as the 3rd
-     argument and the 4th argument should be "const struct iovec *".  */
-  int nt_type;
-  int size;
-  enum regset_type type;
-  regset_fill_func fill_function;
-  regset_store_func store_function;
-};
-
-/* Aggregation of all the supported regsets of a given
-   architecture/mode.  */
-
-struct regsets_info
-{
-  /* The regsets array.  */
-  struct regset_info *regsets;
-
-  /* The number of regsets in the REGSETS array.  */
-  int num_regsets;
-
-  /* If we get EIO on a regset, do not try it again.  Note the set of
-     supported regsets may depend on processor mode on biarch
-     machines.  This is a (lazily allocated) array holding one boolean
-     byte (0/1) per regset, with each element corresponding to the
-     regset in the REGSETS array above at the same offset.  */
-  char *disabled_regsets;
-};
-
-#endif
-
-/* Mapping between the general-purpose registers in `struct user'
-   format and GDB's register array layout.  */
-
-struct usrregs_info
-{
-  /* The number of registers accessible.  */
-  int num_regs;
-
-  /* The registers map.  */
-  int *regmap;
-};
-
-/* All info needed to access an architecture/mode's registers.  */
-
-struct regs_info
-{
-  /* Regset support bitmap: 1 for registers that are transferred as a part
-     of a regset, 0 for ones that need to be handled individually.  This
-     can be NULL if all registers are transferred with regsets or regsets
-     are not supported.  */
-  unsigned char *regset_bitmap;
-
-  /* Info used when accessing registers with PTRACE_PEEKUSER /
-     PTRACE_POKEUSER.  This can be NULL if all registers are
-     transferred with regsets  .*/
-  struct usrregs_info *usrregs;
-
-#ifdef HAVE_LINUX_REGSETS
-  /* Info used when accessing registers with regsets.  */
-  struct regsets_info *regsets_info;
-#endif
-};
-
-struct process_info_private
-{
-  /* Arch-specific additions.  */
-  struct arch_process_info *arch_private;
-
-  /* libthread_db-specific additions.  Not NULL if this process has loaded
-     thread_db, and it is active.  */
-  struct thread_db *thread_db;
-
-  /* &_r_debug.  0 if not yet determined.  -1 if no PT_DYNAMIC in Phdrs.  */
-  CORE_ADDR r_debug;
-};
-
-struct lwp_info;
-
-struct linux_target_ops
-{
-  /* Architecture-specific setup.  */
-  void (*arch_setup) (void);
-
-  const struct regs_info *(*regs_info) (void);
-  int (*cannot_fetch_register) (int);
-
-  /* Returns 0 if we can store the register, 1 if we can not
-     store the register, and 2 if failure to store the register
-     is acceptable.  */
-  int (*cannot_store_register) (int);
-
-  /* Hook to fetch a register in some non-standard way.  Used for
-     example by backends that have read-only registers with hardcoded
-     values (e.g., IA64's gr0/fr0/fr1).  Returns true if register
-     REGNO was supplied, false if not, and we should fallback to the
-     standard ptrace methods.  */
-  int (*fetch_register) (struct regcache *regcache, int regno);
-
-  CORE_ADDR (*get_pc) (struct regcache *regcache);
-  void (*set_pc) (struct regcache *regcache, CORE_ADDR newpc);
-
-  /* See target.h for details.  */
-  int (*breakpoint_kind_from_pc) (CORE_ADDR *pcptr);
-
-  /* See target.h for details.  */
-  const gdb_byte *(*sw_breakpoint_from_kind) (int kind, int *size);
-
-  /* Find the next possible PCs after the current instruction executes.  */
-  std::vector<CORE_ADDR> (*get_next_pcs) (struct regcache *regcache);
-
-  int decr_pc_after_break;
-  int (*breakpoint_at) (CORE_ADDR pc);
-
-  /* Breakpoint and watchpoint related functions.  See target.h for
-     comments.  */
-  int (*supports_z_point_type) (char z_type);
-  int (*insert_point) (enum raw_bkpt_type type, CORE_ADDR addr,
-		       int size, struct raw_breakpoint *bp);
-  int (*remove_point) (enum raw_bkpt_type type, CORE_ADDR addr,
-		       int size, struct raw_breakpoint *bp);
-
-  int (*stopped_by_watchpoint) (void);
-  CORE_ADDR (*stopped_data_address) (void);
-
-  /* Hooks to reformat register data for PEEKUSR/POKEUSR (in particular
-     for registers smaller than an xfer unit).  */
-  void (*collect_ptrace_register) (struct regcache *regcache,
-				   int regno, char *buf);
-  void (*supply_ptrace_register) (struct regcache *regcache,
-				  int regno, const char *buf);
-
-  /* Hook to convert from target format to ptrace format and back.
-     Returns true if any conversion was done; false otherwise.
-     If DIRECTION is 1, then copy from INF to NATIVE.
-     If DIRECTION is 0, copy from NATIVE to INF.  */
-  int (*siginfo_fixup) (siginfo_t *native, gdb_byte *inf, int direction);
-
-  /* Hook to call when a new process is created or attached to.
-     If extra per-process architecture-specific data is needed,
-     allocate it here.  */
-  struct arch_process_info * (*new_process) (void);
-
-  /* Hook to call when a process is being deleted.  If extra per-process
-     architecture-specific data is needed, delete it here.  */
-  void (*delete_process) (struct arch_process_info *info);
-
-  /* Hook to call when a new thread is detected.
-     If extra per-thread architecture-specific data is needed,
-     allocate it here.  */
-  void (*new_thread) (struct lwp_info *);
-
-  /* Hook to call when a thread is being deleted.  If extra per-thread
-     architecture-specific data is needed, delete it here.  */
-  void (*delete_thread) (struct arch_lwp_info *);
-
-  /* Hook to call, if any, when a new fork is attached.  */
-  void (*new_fork) (struct process_info *parent, struct process_info *child);
-
-  /* Hook to call prior to resuming a thread.  */
-  void (*prepare_to_resume) (struct lwp_info *);
-
-  /* Hook to support target specific qSupported.  */
-  void (*process_qsupported) (char **, int count);
-
-  /* Returns true if the low target supports tracepoints.  */
-  int (*supports_tracepoints) (void);
-
-  /* Fill ADDRP with the thread area address of LWPID.  Returns 0 on
-     success, -1 on failure.  */
-  int (*get_thread_area) (int lwpid, CORE_ADDR *addrp);
-
-  /* Install a fast tracepoint jump pad.  See target.h for
-     comments.  */
-  int (*install_fast_tracepoint_jump_pad) (CORE_ADDR tpoint, CORE_ADDR tpaddr,
-					   CORE_ADDR collector,
-					   CORE_ADDR lockaddr,
-					   ULONGEST orig_size,
-					   CORE_ADDR *jump_entry,
-					   CORE_ADDR *trampoline,
-					   ULONGEST *trampoline_size,
-					   unsigned char *jjump_pad_insn,
-					   ULONGEST *jjump_pad_insn_size,
-					   CORE_ADDR *adjusted_insn_addr,
-					   CORE_ADDR *adjusted_insn_addr_end,
-					   char *err);
-
-  /* Return the bytecode operations vector for the current inferior.
-     Returns NULL if bytecode compilation is not supported.  */
-  struct emit_ops *(*emit_ops) (void);
-
-  /* Return the minimum length of an instruction that can be safely overwritten
-     for use as a fast tracepoint.  */
-  int (*get_min_fast_tracepoint_insn_len) (void);
-
-  /* Returns true if the low target supports range stepping.  */
-  int (*supports_range_stepping) (void);
-
-  /* See target.h.  */
-  int (*breakpoint_kind_from_current_state) (CORE_ADDR *pcptr);
-
-  /* See target.h.  */
-  int (*supports_hardware_single_step) (void);
-
-  /* Fill *SYSNO with the syscall nr trapped.  Only to be called when
-     inferior is stopped due to SYSCALL_SIGTRAP.  */
-  void (*get_syscall_trapinfo) (struct regcache *regcache, int *sysno);
-
-  /* See target.h.  */
-  int (*get_ipa_tdesc_idx) (void);
-};
-
-extern struct linux_target_ops the_low_target;
-
-#define get_thread_lwp(thr) ((struct lwp_info *) (thread_target_data (thr)))
-#define get_lwp_thread(lwp) ((lwp)->thread)
-
-/* This struct is recorded in the target_data field of struct thread_info.
-
-   On linux ``all_threads'' is keyed by the LWP ID, which we use as the
-   GDB protocol representation of the thread ID.  Threads also have
-   a "process ID" (poorly named) which is (presently) the same as the
-   LWP ID.
-
-   There is also ``all_processes'' is keyed by the "overall process ID",
-   which GNU/Linux calls tgid, "thread group ID".  */
-
-struct lwp_info
-{
-  /* Backlink to the parent object.  */
-  struct thread_info *thread;
-
-  /* If this flag is set, the next SIGSTOP will be ignored (the
-     process will be immediately resumed).  This means that either we
-     sent the SIGSTOP to it ourselves and got some other pending event
-     (so the SIGSTOP is still pending), or that we stopped the
-     inferior implicitly via PTRACE_ATTACH and have not waited for it
-     yet.  */
-  int stop_expected;
-
-  /* When this is true, we shall not try to resume this thread, even
-     if last_resume_kind isn't resume_stop.  */
-  int suspended;
-
-  /* If this flag is set, the lwp is known to be stopped right now (stop
-     event already received in a wait()).  */
-  int stopped;
-
-  /* Signal whether we are in a SYSCALL_ENTRY or
-     in a SYSCALL_RETURN event.
-     Values:
-     - TARGET_WAITKIND_SYSCALL_ENTRY
-     - TARGET_WAITKIND_SYSCALL_RETURN */
-  enum target_waitkind syscall_state;
-
-  /* When stopped is set, the last wait status recorded for this lwp.  */
-  int last_status;
-
-  /* If WAITSTATUS->KIND != TARGET_WAITKIND_IGNORE, the waitstatus for
-     this LWP's last event, to pass to GDB without any further
-     processing.  This is used to store extended ptrace event
-     information or exit status until it can be reported to GDB.  */
-  struct target_waitstatus waitstatus;
-
-  /* A pointer to the fork child/parent relative.  Valid only while
-     the parent fork event is not reported to higher layers.  Used to
-     avoid wildcard vCont actions resuming a fork child before GDB is
-     notified about the parent's fork event.  */
-  struct lwp_info *fork_relative;
-
-  /* When stopped is set, this is where the lwp last stopped, with
-     decr_pc_after_break already accounted for.  If the LWP is
-     running, this is the address at which the lwp was resumed.  */
-  CORE_ADDR stop_pc;
-
-  /* If this flag is set, STATUS_PENDING is a waitstatus that has not yet
-     been reported.  */
-  int status_pending_p;
-  int status_pending;
-
-  /* The reason the LWP last stopped, if we need to track it
-     (breakpoint, watchpoint, etc.)  */
-  enum target_stop_reason stop_reason;
-
-  /* On architectures where it is possible to know the data address of
-     a triggered watchpoint, STOPPED_DATA_ADDRESS is non-zero, and
-     contains such data address.  Only valid if STOPPED_BY_WATCHPOINT
-     is true.  */
-  CORE_ADDR stopped_data_address;
-
-  /* If this is non-zero, it is a breakpoint to be reinserted at our next
-     stop (SIGTRAP stops only).  */
-  CORE_ADDR bp_reinsert;
-
-  /* If this flag is set, the last continue operation at the ptrace
-     level on this process was a single-step.  */
-  int stepping;
-
-  /* Range to single step within.  This is a copy of the step range
-     passed along the last resume request.  See 'struct
-     thread_resume'.  */
-  CORE_ADDR step_range_start;	/* Inclusive */
-  CORE_ADDR step_range_end;	/* Exclusive */
-
-  /* If this flag is set, we need to set the event request flags the
-     next time we see this LWP stop.  */
-  int must_set_ptrace_flags;
-
-  /* If this is non-zero, it points to a chain of signals which need to
-     be delivered to this process.  */
-  struct pending_signals *pending_signals;
-
-  /* A link used when resuming.  It is initialized from the resume request,
-     and then processed and cleared in linux_resume_one_lwp.  */
-  struct thread_resume *resume;
-
-  /* Information bout this lwp's fast tracepoint collection status (is it
-     currently stopped in the jump pad, and if so, before or at/after the
-     relocated instruction).  Normally, we won't care about this, but we will
-     if a signal arrives to this lwp while it is collecting.  */
-  fast_tpoint_collect_result collecting_fast_tracepoint;
-
-  /* If this is non-zero, it points to a chain of signals which need
-     to be reported to GDB.  These were deferred because the thread
-     was doing a fast tracepoint collect when they arrived.  */
-  struct pending_signals *pending_signals_to_report;
-
-  /* When collecting_fast_tracepoint is first found to be 1, we insert
-     a exit-jump-pad-quickly breakpoint.  This is it.  */
-  struct breakpoint *exit_jump_pad_bkpt;
-
-#ifdef USE_THREAD_DB
-  int thread_known;
-  /* The thread handle, used for e.g. TLS access.  Only valid if
-     THREAD_KNOWN is set.  */
-  td_thrhandle_t th;
-
-  /* The pthread_t handle.  */
-  thread_t thread_handle;
-#endif
-
-  /* Arch-specific additions.  */
-  struct arch_lwp_info *arch_private;
-};
-
-int linux_pid_exe_is_elf_64_file (int pid, unsigned int *machine);
-
-/* Attach to PTID.  Returns 0 on success, non-zero otherwise (an
-   errno).  */
-int linux_attach_lwp (ptid_t ptid);
-
-struct lwp_info *find_lwp_pid (ptid_t ptid);
-/* For linux_stop_lwp see nat/linux-nat.h.  */
-
-#ifdef HAVE_LINUX_REGSETS
-void initialize_regsets_info (struct regsets_info *regsets_info);
-#endif
-
-void initialize_low_arch (void);
-
-void linux_set_pc_32bit (struct regcache *regcache, CORE_ADDR pc);
-CORE_ADDR linux_get_pc_32bit (struct regcache *regcache);
-
-void linux_set_pc_64bit (struct regcache *regcache, CORE_ADDR pc);
-CORE_ADDR linux_get_pc_64bit (struct regcache *regcache);
-
-/* From thread-db.c  */
-int thread_db_init (void);
-void thread_db_detach (struct process_info *);
-void thread_db_mourn (struct process_info *);
-int thread_db_handle_monitor_command (char *);
-int thread_db_get_tls_address (struct thread_info *thread, CORE_ADDR offset,
-			       CORE_ADDR load_module, CORE_ADDR *address);
-int thread_db_look_up_one_symbol (const char *name, CORE_ADDR *addrp);
-
-/* Called from linux-low.c when a clone event is detected.  Upon entry,
-   both the clone and the parent should be stopped.  This function does
-   whatever is required have the clone under thread_db's control.  */
-
-void thread_db_notice_clone (struct thread_info *parent_thr, ptid_t child_ptid);
-
-bool thread_db_thread_handle (ptid_t ptid, gdb_byte **handle, int *handle_len);
-
-extern int have_ptrace_getregset;
-
-/* Search for the value with type MATCH in the auxv vector with
-   entries of length WORDSIZE bytes.  If found, store the value in
-   *VALP and return 1.  If not found or if there is an error, return
-   0.  */
-
-int linux_get_auxv (int wordsize, CORE_ADDR match,
-		    CORE_ADDR *valp);
-
-/* Fetch the AT_HWCAP entry from the auxv vector, where entries are length
-   WORDSIZE.  If no entry was found, return zero.  */
-
-CORE_ADDR linux_get_hwcap (int wordsize);
-
-/* Fetch the AT_HWCAP2 entry from the auxv vector, where entries are length
-   WORDSIZE.  If no entry was found, return zero.  */
-
-CORE_ADDR linux_get_hwcap2 (int wordsize);
-
-#endif /* GDBSERVER_LINUX_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-m32r-low.c ./gdb/gdbserver/linux-m32r-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-m32r-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-m32r-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,157 +0,0 @@
-/* GNU/Linux/m32r specific low level interface, for the remote server for GDB.
-   Copyright (C) 2005-2020 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 "server.h"
-#include "linux-low.h"
-
-#ifdef HAVE_SYS_REG_H
-#include <sys/reg.h>
-#endif
-
-/* Defined in auto-generated file reg-m32r.c.  */
-void init_registers_m32r (void);
-extern const struct target_desc *tdesc_m32r;
-
-#define m32r_num_regs 25
-
-static int m32r_regmap[] = {
-#ifdef PT_R0
-  PT_R0, PT_R1, PT_R2, PT_R3, PT_R4, PT_R5, PT_R6, PT_R7,
-  PT_R8, PT_R9, PT_R10, PT_R11, PT_R12, PT_FP, PT_LR, PT_SPU,
-  PT_PSW, PT_CBR, PT_SPI, PT_SPU, PT_BPC, PT_PC, PT_ACCL, PT_ACCH, PT_EVB
-#else
-  4 * 4, 4 * 5, 4 * 6, 4 * 7, 4 * 0, 4 * 1, 4 * 2, 4 * 8,
-  4 * 9, 4 * 10, 4 * 11, 4 * 12, 4 * 13, 4 * 24, 4 * 25, 4 * 23,
-  4 * 19, 4 * 31, 4 * 26, 4 * 23, 4 * 20, 4 * 30, 4 * 16, 4 * 15, 4 * 32
-#endif
-};
-
-static int
-m32r_cannot_store_register (int regno)
-{
-  return (regno >= m32r_num_regs);
-}
-
-static int
-m32r_cannot_fetch_register (int regno)
-{
-  return (regno >= m32r_num_regs);
-}
-
-static const unsigned short m32r_breakpoint = 0x10f1;
-#define m32r_breakpoint_len 2
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-m32r_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = m32r_breakpoint_len;
-  return (const gdb_byte *) &m32r_breakpoint;
-}
-
-static int
-m32r_breakpoint_at (CORE_ADDR where)
-{
-  unsigned short insn;
-
-  (*the_target->read_memory) (where, (unsigned char *) &insn,
-			      m32r_breakpoint_len);
-  if (insn == m32r_breakpoint)
-    return 1;
-
-  /* If necessary, recognize more trap instructions here.  GDB only uses the
-     one.  */
-  return 0;
-}
-
-static void
-m32r_arch_setup (void)
-{
-  current_process ()->tdesc = tdesc_m32r;
-}
-
-/* Support for hardware single step.  */
-
-static int
-m32r_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-static struct usrregs_info m32r_usrregs_info =
-  {
-    m32r_num_regs,
-    m32r_regmap,
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &m32r_usrregs_info,
-  };
-
-static const struct regs_info *
-m32r_regs_info (void)
-{
-  return &regs_info;
-}
-
-struct linux_target_ops the_low_target = {
-  m32r_arch_setup,
-  m32r_regs_info,
-  m32r_cannot_fetch_register,
-  m32r_cannot_store_register,
-  NULL, /* fetch_register */
-  linux_get_pc_32bit,
-  linux_set_pc_32bit,
-  NULL, /* breakpoint_from_pc */
-  m32r_sw_breakpoint_from_kind,
-  NULL,
-  0,
-  m32r_breakpoint_at,
-  NULL, /* supports_z_point_type */
-  NULL, /* insert_point */
-  NULL, /* remove_point */
-  NULL, /* stopped_by_watchpoint */
-  NULL, /* stopped_data_address */
-  NULL, /* collect_ptrace_register */
-  NULL, /* supply_ptrace_register */
-  NULL, /* siginfo_fixup */
-  NULL, /* new_process */
-  NULL, /* delete_process */
-  NULL, /* new_thread */
-  NULL, /* delete_thread */
-  NULL, /* new_fork */
-  NULL, /* prepare_to_resume */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* get_thread_area */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* supports_range_stepping */
-  NULL, /* breakpoint_kind_from_current_state */
-  m32r_supports_hardware_single_step,
-};
-
-void
-initialize_low_arch (void)
-{
-  init_registers_m32r ();
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-m68k-low.c ./gdb/gdbserver/linux-m68k-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-m68k-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-m68k-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,255 +0,0 @@
-/* GNU/Linux/m68k specific low level interface, for the remote server for GDB.
-   Copyright (C) 1995-2020 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 "server.h"
-#include "linux-low.h"
-
-/* Defined in auto-generated file reg-m68k.c.  */
-void init_registers_m68k (void);
-extern const struct target_desc *tdesc_m68k;
-
-#ifdef HAVE_SYS_REG_H
-#include <sys/reg.h>
-#endif
-
-#define m68k_num_regs 29
-#define m68k_num_gregs 18
-
-/* This table must line up with REGISTER_NAMES in tm-m68k.h */
-static int m68k_regmap[] =
-{
-#ifdef PT_D0
-  PT_D0 * 4, PT_D1 * 4, PT_D2 * 4, PT_D3 * 4,
-  PT_D4 * 4, PT_D5 * 4, PT_D6 * 4, PT_D7 * 4,
-  PT_A0 * 4, PT_A1 * 4, PT_A2 * 4, PT_A3 * 4,
-  PT_A4 * 4, PT_A5 * 4, PT_A6 * 4, PT_USP * 4,
-  PT_SR * 4, PT_PC * 4,
-#else
-  14 * 4, 0 * 4, 1 * 4, 2 * 4, 3 * 4, 4 * 4, 5 * 4, 6 * 4,
-  7 * 4, 8 * 4, 9 * 4, 10 * 4, 11 * 4, 12 * 4, 13 * 4, 15 * 4,
-  17 * 4, 18 * 4,
-#endif
-#ifdef PT_FP0
-  PT_FP0 * 4, PT_FP1 * 4, PT_FP2 * 4, PT_FP3 * 4,
-  PT_FP4 * 4, PT_FP5 * 4, PT_FP6 * 4, PT_FP7 * 4,
-  PT_FPCR * 4, PT_FPSR * 4, PT_FPIAR * 4
-#else
-  21 * 4, 24 * 4, 27 * 4, 30 * 4, 33 * 4, 36 * 4,
-  39 * 4, 42 * 4, 45 * 4, 46 * 4, 47 * 4
-#endif
-};
-
-static int
-m68k_cannot_store_register (int regno)
-{
-  return (regno >= m68k_num_regs);
-}
-
-static int
-m68k_cannot_fetch_register (int regno)
-{
-  return (regno >= m68k_num_regs);
-}
-
-#ifdef HAVE_PTRACE_GETREGS
-#include <sys/procfs.h>
-#include "nat/gdb_ptrace.h"
-
-static void
-m68k_fill_gregset (struct regcache *regcache, void *buf)
-{
-  int i;
-
-  for (i = 0; i < m68k_num_gregs; i++)
-    collect_register (regcache, i, (char *) buf + m68k_regmap[i]);
-}
-
-static void
-m68k_store_gregset (struct regcache *regcache, const void *buf)
-{
-  int i;
-
-  for (i = 0; i < m68k_num_gregs; i++)
-    supply_register (regcache, i, (const char *) buf + m68k_regmap[i]);
-}
-
-static void
-m68k_fill_fpregset (struct regcache *regcache, void *buf)
-{
-  int i;
-
-  for (i = m68k_num_gregs; i < m68k_num_regs; i++)
-    collect_register (regcache, i, ((char *) buf
-			 + (m68k_regmap[i] - m68k_regmap[m68k_num_gregs])));
-}
-
-static void
-m68k_store_fpregset (struct regcache *regcache, const void *buf)
-{
-  int i;
-
-  for (i = m68k_num_gregs; i < m68k_num_regs; i++)
-    supply_register (regcache, i, ((const char *) buf
-			 + (m68k_regmap[i] - m68k_regmap[m68k_num_gregs])));
-}
-
-#endif /* HAVE_PTRACE_GETREGS */
-
-static struct regset_info m68k_regsets[] = {
-#ifdef HAVE_PTRACE_GETREGS
-  { PTRACE_GETREGS, PTRACE_SETREGS, 0, sizeof (elf_gregset_t),
-    GENERAL_REGS,
-    m68k_fill_gregset, m68k_store_gregset },
-  { PTRACE_GETFPREGS, PTRACE_SETFPREGS, 0, sizeof (elf_fpregset_t),
-    FP_REGS,
-    m68k_fill_fpregset, m68k_store_fpregset },
-#endif /* HAVE_PTRACE_GETREGS */
-  NULL_REGSET
-};
-
-static const gdb_byte m68k_breakpoint[] = { 0x4E, 0x4F };
-#define m68k_breakpoint_len 2
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-m68k_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = m68k_breakpoint_len;
-  return m68k_breakpoint;
-}
-
-static int
-m68k_breakpoint_at (CORE_ADDR pc)
-{
-  unsigned char c[2];
-
-  read_inferior_memory (pc, c, 2);
-  if (c[0] == 0x4E && c[1] == 0x4F)
-    return 1;
-
-  return 0;
-}
-
-#include <asm/ptrace.h>
-
-#ifdef PTRACE_GET_THREAD_AREA
-/* Fetch the thread-local storage pointer for libthread_db.  */
-
-ps_err_e
-ps_get_thread_area (struct ps_prochandle *ph,
-		    lwpid_t lwpid, int idx, void **base)
-{
-  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
-    return PS_ERR;
-
-  /* IDX is the bias from the thread pointer to the beginning of the
-     thread descriptor.  It has to be subtracted due to implementation
-     quirks in libthread_db.  */
-  *base = (void *) ((char *)*base - idx);
-
-  return PS_OK;
-}
-#endif /* PTRACE_GET_THREAD_AREA */
-
-static struct regsets_info m68k_regsets_info =
-  {
-    m68k_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct usrregs_info m68k_usrregs_info =
-  {
-    m68k_num_regs,
-    m68k_regmap,
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &m68k_usrregs_info,
-    &m68k_regsets_info
-  };
-
-static const struct regs_info *
-m68k_regs_info (void)
-{
-  return &regs_info;
-}
-
-static void
-m68k_arch_setup (void)
-{
-  current_process ()->tdesc = tdesc_m68k;
-}
-
-/* Support for hardware single step.  */
-
-static int
-m68k_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-struct linux_target_ops the_low_target = {
-  m68k_arch_setup,
-  m68k_regs_info,
-  m68k_cannot_fetch_register,
-  m68k_cannot_store_register,
-  NULL, /* fetch_register */
-  linux_get_pc_32bit,
-  linux_set_pc_32bit,
-  NULL, /* breakpoint_kind_from_pc */
-  m68k_sw_breakpoint_from_kind,
-  NULL,
-  2,
-  m68k_breakpoint_at,
-  NULL, /* supports_z_point_type */
-  NULL, /* insert_point */
-  NULL, /* remove_point */
-  NULL, /* stopped_by_watchpoint */
-  NULL, /* stopped_data_address */
-  NULL, /* collect_ptrace_register */
-  NULL, /* supply_ptrace_register */
-  NULL, /* siginfo_fixup */
-  NULL, /* new_process */
-  NULL, /* delete_process */
-  NULL, /* new_thread */
-  NULL, /* delete_thread */
-  NULL, /* new_fork */
-  NULL, /* prepare_to_resume */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* get_thread_area */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* supports_range_stepping */
-  NULL, /* breakpoint_kind_from_current_state */
-  m68k_supports_hardware_single_step,
-};
-
-void
-initialize_low_arch (void)
-{
-  /* Initialize the Linux target descriptions.  */
-  init_registers_m68k ();
-
-  initialize_regsets_info (&m68k_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-mips-low.c ./gdb/gdbserver/linux-mips-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-mips-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-mips-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,978 +0,0 @@
-/* GNU/Linux/MIPS specific low level interface, for the remote server for GDB.
-   Copyright (C) 1995-2020 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 "server.h"
-#include "linux-low.h"
-
-#include "nat/gdb_ptrace.h"
-#include <endian.h>
-
-#include "nat/mips-linux-watch.h"
-#include "gdb_proc_service.h"
-
-/* Defined in auto-generated file mips-linux.c.  */
-void init_registers_mips_linux (void);
-extern const struct target_desc *tdesc_mips_linux;
-
-/* Defined in auto-generated file mips-dsp-linux.c.  */
-void init_registers_mips_dsp_linux (void);
-extern const struct target_desc *tdesc_mips_dsp_linux;
-
-/* Defined in auto-generated file mips64-linux.c.  */
-void init_registers_mips64_linux (void);
-extern const struct target_desc *tdesc_mips64_linux;
-
-/* Defined in auto-generated file mips64-dsp-linux.c.  */
-void init_registers_mips64_dsp_linux (void);
-extern const struct target_desc *tdesc_mips64_dsp_linux;
-
-#ifdef __mips64
-#define tdesc_mips_linux tdesc_mips64_linux
-#define tdesc_mips_dsp_linux tdesc_mips64_dsp_linux
-#endif
-
-#ifndef PTRACE_GET_THREAD_AREA
-#define PTRACE_GET_THREAD_AREA 25
-#endif
-
-#ifdef HAVE_SYS_REG_H
-#include <sys/reg.h>
-#endif
-
-#define mips_num_regs 73
-#define mips_dsp_num_regs 80
-
-#include <asm/ptrace.h>
-
-#ifndef DSP_BASE
-#define DSP_BASE 71
-#define DSP_CONTROL 77
-#endif
-
-union mips_register
-{
-  unsigned char buf[8];
-
-  /* Deliberately signed, for proper sign extension.  */
-  int reg32;
-  long long reg64;
-};
-
-/* Return the ptrace ``address'' of register REGNO. */
-
-#define mips_base_regs							\
-  -1,  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,					\
-									\
-  -1, MMLO, MMHI, BADVADDR, CAUSE, PC,					\
-									\
-  FPR_BASE,      FPR_BASE + 1,  FPR_BASE + 2,  FPR_BASE + 3,		\
-  FPR_BASE + 4,  FPR_BASE + 5,  FPR_BASE + 6,  FPR_BASE + 7,		\
-  FPR_BASE + 8,  FPR_BASE + 9,  FPR_BASE + 10, FPR_BASE + 11,		\
-  FPR_BASE + 12, FPR_BASE + 13, FPR_BASE + 14, FPR_BASE + 15,		\
-  FPR_BASE + 16, FPR_BASE + 17, FPR_BASE + 18, FPR_BASE + 19,		\
-  FPR_BASE + 20, FPR_BASE + 21, FPR_BASE + 22, FPR_BASE + 23,		\
-  FPR_BASE + 24, FPR_BASE + 25, FPR_BASE + 26, FPR_BASE + 27,		\
-  FPR_BASE + 28, FPR_BASE + 29, FPR_BASE + 30, FPR_BASE + 31,		\
-  FPC_CSR, FPC_EIR
-
-#define mips_dsp_regs							\
-  DSP_BASE,      DSP_BASE + 1,  DSP_BASE + 2,  DSP_BASE + 3,		\
-  DSP_BASE + 4,  DSP_BASE + 5,						\
-  DSP_CONTROL
-
-static int mips_regmap[mips_num_regs] = {
-  mips_base_regs,
-  0
-};
-
-static int mips_dsp_regmap[mips_dsp_num_regs] = {
-  mips_base_regs,
-  mips_dsp_regs,
-  0
-};
-
-/* DSP registers are not in any regset and can only be accessed
-   individually.  */
-
-static unsigned char mips_dsp_regset_bitmap[(mips_dsp_num_regs + 7) / 8] = {
-  0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x80
-};
-
-static int have_dsp = -1;
-
-/* Try peeking at an arbitrarily chosen DSP register and pick the available
-   user register set accordingly.  */
-
-static const struct target_desc *
-mips_read_description (void)
-{
-  if (have_dsp < 0)
-    {
-      int pid = lwpid_of (current_thread);
-
-      errno = 0;
-      ptrace (PTRACE_PEEKUSER, pid, DSP_CONTROL, 0);
-      switch (errno)
-	{
-	case 0:
-	  have_dsp = 1;
-	  break;
-	case EIO:
-	  have_dsp = 0;
-	  break;
-	default:
-	  perror_with_name ("ptrace");
-	  break;
-	}
-    }
-
-  return have_dsp ? tdesc_mips_dsp_linux : tdesc_mips_linux;
-}
-
-static void
-mips_arch_setup (void)
-{
-  current_process ()->tdesc = mips_read_description ();
-}
-
-static struct usrregs_info *
-get_usrregs_info (void)
-{
-  const struct regs_info *regs_info = the_low_target.regs_info ();
-
-  return regs_info->usrregs;
-}
-
-/* Per-process arch-specific data we want to keep.  */
-
-struct arch_process_info
-{
-  /* -1 if the kernel and/or CPU do not support watch registers.
-      1 if watch_readback is valid and we can read style, num_valid
-	and the masks.
-      0 if we need to read the watch_readback.  */
-
-  int watch_readback_valid;
-
-  /* Cached watch register read values.  */
-
-  struct pt_watch_regs watch_readback;
-
-  /* Current watchpoint requests for this process.  */
-
-  struct mips_watchpoint *current_watches;
-
-  /* The current set of watch register values for writing the
-     registers.  */
-
-  struct pt_watch_regs watch_mirror;
-};
-
-/* Per-thread arch-specific data we want to keep.  */
-
-struct arch_lwp_info
-{
-  /* Non-zero if our copy differs from what's recorded in the thread.  */
-  int watch_registers_changed;
-};
-
-/* From mips-linux-nat.c.  */
-
-/* Pseudo registers can not be read.  ptrace does not provide a way to
-   read (or set) PS_REGNUM, and there's no point in reading or setting
-   ZERO_REGNUM, it's always 0.  We also can not set BADVADDR, CAUSE,
-   or FCRIR via ptrace().  */
-
-static int
-mips_cannot_fetch_register (int regno)
-{
-  const struct target_desc *tdesc;
-
-  if (get_usrregs_info ()->regmap[regno] == -1)
-    return 1;
-
-  tdesc = current_process ()->tdesc;
-
-  /* On n32 we can't access 64-bit registers via PTRACE_PEEKUSR.  */
-  if (register_size (tdesc, regno) > sizeof (PTRACE_XFER_TYPE))
-    return 1;
-
-  if (find_regno (tdesc, "r0") == regno)
-    return 1;
-
-  return 0;
-}
-
-static int
-mips_cannot_store_register (int regno)
-{
-  const struct target_desc *tdesc;
-
-  if (get_usrregs_info ()->regmap[regno] == -1)
-    return 1;
-
-  tdesc = current_process ()->tdesc;
-
-  /* On n32 we can't access 64-bit registers via PTRACE_POKEUSR.  */
-  if (register_size (tdesc, regno) > sizeof (PTRACE_XFER_TYPE))
-    return 1;
-
-  if (find_regno (tdesc, "r0") == regno)
-    return 1;
-
-  if (find_regno (tdesc, "cause") == regno)
-    return 1;
-
-  if (find_regno (tdesc, "badvaddr") == regno)
-    return 1;
-
-  if (find_regno (tdesc, "fir") == regno)
-    return 1;
-
-  return 0;
-}
-
-static int
-mips_fetch_register (struct regcache *regcache, int regno)
-{
-  const struct target_desc *tdesc = current_process ()->tdesc;
-
-  if (find_regno (tdesc, "r0") == regno)
-    {
-      supply_register_zeroed (regcache, regno);
-      return 1;
-    }
-
-  return 0;
-}
-
-static CORE_ADDR
-mips_get_pc (struct regcache *regcache)
-{
-  union mips_register pc;
-  collect_register_by_name (regcache, "pc", pc.buf);
-  return register_size (regcache->tdesc, 0) == 4 ? pc.reg32 : pc.reg64;
-}
-
-static void
-mips_set_pc (struct regcache *regcache, CORE_ADDR pc)
-{
-  union mips_register newpc;
-  if (register_size (regcache->tdesc, 0) == 4)
-    newpc.reg32 = pc;
-  else
-    newpc.reg64 = pc;
-
-  supply_register_by_name (regcache, "pc", newpc.buf);
-}
-
-/* Correct in either endianness.  */
-static const unsigned int mips_breakpoint = 0x0005000d;
-#define mips_breakpoint_len 4
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-mips_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = mips_breakpoint_len;
-  return (const gdb_byte *) &mips_breakpoint;
-}
-
-static int
-mips_breakpoint_at (CORE_ADDR where)
-{
-  unsigned int insn;
-
-  (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
-  if (insn == mips_breakpoint)
-    return 1;
-
-  /* If necessary, recognize more trap instructions here.  GDB only uses the
-     one.  */
-  return 0;
-}
-
-/* Mark the watch registers of lwp, represented by ENTRY, as changed.  */
-
-static void
-update_watch_registers_callback (thread_info *thread)
-{
-  struct lwp_info *lwp = get_thread_lwp (thread);
-
-  /* The actual update is done later just before resuming the lwp,
-     we just mark that the registers need updating.  */
-  lwp->arch_private->watch_registers_changed = 1;
-
-  /* If the lwp isn't stopped, force it to momentarily pause, so
-     we can update its watch registers.  */
-  if (!lwp->stopped)
-    linux_stop_lwp (lwp);
-}
-
-/* This is the implementation of linux_target_ops method
-   new_process.  */
-
-static struct arch_process_info *
-mips_linux_new_process (void)
-{
-  struct arch_process_info *info = XCNEW (struct arch_process_info);
-
-  return info;
-}
-
-/* This is the implementation of linux_target_ops method
-   delete_process.  */
-
-static void
-mips_linux_delete_process (struct arch_process_info *info)
-{
-  xfree (info);
-}
-
-/* This is the implementation of linux_target_ops method new_thread.
-   Mark the watch registers as changed, so the threads' copies will
-   be updated.  */
-
-static void
-mips_linux_new_thread (struct lwp_info *lwp)
-{
-  struct arch_lwp_info *info = XCNEW (struct arch_lwp_info);
-
-  info->watch_registers_changed = 1;
-
-  lwp->arch_private = info;
-}
-
-/* Function to call when a thread is being deleted.  */
-
-static void
-mips_linux_delete_thread (struct arch_lwp_info *arch_lwp)
-{
-  xfree (arch_lwp);
-}
-
-/* Create a new mips_watchpoint and add it to the list.  */
-
-static void
-mips_add_watchpoint (struct arch_process_info *priv, CORE_ADDR addr, int len,
-		     enum target_hw_bp_type watch_type)
-{
-  struct mips_watchpoint *new_watch;
-  struct mips_watchpoint **pw;
-
-  new_watch = XNEW (struct mips_watchpoint);
-  new_watch->addr = addr;
-  new_watch->len = len;
-  new_watch->type = watch_type;
-  new_watch->next = NULL;
-
-  pw = &priv->current_watches;
-  while (*pw != NULL)
-    pw = &(*pw)->next;
-  *pw = new_watch;
-}
-
-/* Hook to call when a new fork is attached.  */
-
-static void
-mips_linux_new_fork (struct process_info *parent,
-			struct process_info *child)
-{
-  struct arch_process_info *parent_private;
-  struct arch_process_info *child_private;
-  struct mips_watchpoint *wp;
-
-  /* These are allocated by linux_add_process.  */
-  gdb_assert (parent->priv != NULL
-	      && parent->priv->arch_private != NULL);
-  gdb_assert (child->priv != NULL
-	      && child->priv->arch_private != NULL);
-
-  /* Linux kernel before 2.6.33 commit
-     72f674d203cd230426437cdcf7dd6f681dad8b0d
-     will inherit hardware debug registers from parent
-     on fork/vfork/clone.  Newer Linux kernels create such tasks with
-     zeroed debug registers.
-
-     GDB core assumes the child inherits the watchpoints/hw
-     breakpoints of the parent, and will remove them all from the
-     forked off process.  Copy the debug registers mirrors into the
-     new process so that all breakpoints and watchpoints can be
-     removed together.  The debug registers mirror will become zeroed
-     in the end before detaching the forked off process, thus making
-     this compatible with older Linux kernels too.  */
-
-  parent_private = parent->priv->arch_private;
-  child_private = child->priv->arch_private;
-
-  child_private->watch_readback_valid = parent_private->watch_readback_valid;
-  child_private->watch_readback = parent_private->watch_readback;
-
-  for (wp = parent_private->current_watches; wp != NULL; wp = wp->next)
-    mips_add_watchpoint (child_private, wp->addr, wp->len, wp->type);
-
-  child_private->watch_mirror = parent_private->watch_mirror;
-}
-/* This is the implementation of linux_target_ops method
-   prepare_to_resume.  If the watch regs have changed, update the
-   thread's copies.  */
-
-static void
-mips_linux_prepare_to_resume (struct lwp_info *lwp)
-{
-  ptid_t ptid = ptid_of (get_lwp_thread (lwp));
-  struct process_info *proc = find_process_pid (ptid.pid ());
-  struct arch_process_info *priv = proc->priv->arch_private;
-
-  if (lwp->arch_private->watch_registers_changed)
-    {
-      /* Only update the watch registers if we have set or unset a
-	 watchpoint already.  */
-      if (mips_linux_watch_get_num_valid (&priv->watch_mirror) > 0)
-	{
-	  /* Write the mirrored watch register values.  */
-	  int tid = ptid.lwp ();
-
-	  if (-1 == ptrace (PTRACE_SET_WATCH_REGS, tid,
-			    &priv->watch_mirror, NULL))
-	    perror_with_name ("Couldn't write watch register");
-	}
-
-      lwp->arch_private->watch_registers_changed = 0;
-    }
-}
-
-static int
-mips_supports_z_point_type (char z_type)
-{
-  switch (z_type)
-    {
-    case Z_PACKET_WRITE_WP:
-    case Z_PACKET_READ_WP:
-    case Z_PACKET_ACCESS_WP:
-      return 1;
-    default:
-      return 0;
-    }
-}
-
-/* This is the implementation of linux_target_ops method
-   insert_point.  */
-
-static int
-mips_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		   int len, struct raw_breakpoint *bp)
-{
-  struct process_info *proc = current_process ();
-  struct arch_process_info *priv = proc->priv->arch_private;
-  struct pt_watch_regs regs;
-  long lwpid;
-  enum target_hw_bp_type watch_type;
-  uint32_t irw;
-
-  lwpid = lwpid_of (current_thread);
-  if (!mips_linux_read_watch_registers (lwpid,
-					&priv->watch_readback,
-					&priv->watch_readback_valid,
-					0))
-    return -1;
-
-  if (len <= 0)
-    return -1;
-
-  regs = priv->watch_readback;
-  /* Add the current watches.  */
-  mips_linux_watch_populate_regs (priv->current_watches, &regs);
-
-  /* Now try to add the new watch.  */
-  watch_type = raw_bkpt_type_to_target_hw_bp_type (type);
-  irw = mips_linux_watch_type_to_irw (watch_type);
-  if (!mips_linux_watch_try_one_watch (&regs, addr, len, irw))
-    return -1;
-
-  /* It fit.  Stick it on the end of the list.  */
-  mips_add_watchpoint (priv, addr, len, watch_type);
-
-  priv->watch_mirror = regs;
-
-  /* Only update the threads of this process.  */
-  for_each_thread (proc->pid, update_watch_registers_callback);
-
-  return 0;
-}
-
-/* This is the implementation of linux_target_ops method
-   remove_point.  */
-
-static int
-mips_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		   int len, struct raw_breakpoint *bp)
-{
-  struct process_info *proc = current_process ();
-  struct arch_process_info *priv = proc->priv->arch_private;
-
-  int deleted_one;
-  enum target_hw_bp_type watch_type;
-
-  struct mips_watchpoint **pw;
-  struct mips_watchpoint *w;
-
-  /* Search for a known watch that matches.  Then unlink and free it.  */
-  watch_type = raw_bkpt_type_to_target_hw_bp_type (type);
-  deleted_one = 0;
-  pw = &priv->current_watches;
-  while ((w = *pw))
-    {
-      if (w->addr == addr && w->len == len && w->type == watch_type)
-	{
-	  *pw = w->next;
-	  free (w);
-	  deleted_one = 1;
-	  break;
-	}
-      pw = &(w->next);
-    }
-
-  if (!deleted_one)
-    return -1;  /* We don't know about it, fail doing nothing.  */
-
-  /* At this point watch_readback is known to be valid because we
-     could not have added the watch without reading it.  */
-  gdb_assert (priv->watch_readback_valid == 1);
-
-  priv->watch_mirror = priv->watch_readback;
-  mips_linux_watch_populate_regs (priv->current_watches,
-				  &priv->watch_mirror);
-
-  /* Only update the threads of this process.  */
-  for_each_thread (proc->pid, update_watch_registers_callback);
-
-  return 0;
-}
-
-/* This is the implementation of linux_target_ops method
-   stopped_by_watchpoint.  The watchhi R and W bits indicate
-   the watch register triggered. */
-
-static int
-mips_stopped_by_watchpoint (void)
-{
-  struct process_info *proc = current_process ();
-  struct arch_process_info *priv = proc->priv->arch_private;
-  int n;
-  int num_valid;
-  long lwpid = lwpid_of (current_thread);
-
-  if (!mips_linux_read_watch_registers (lwpid,
-					&priv->watch_readback,
-					&priv->watch_readback_valid,
-					1))
-    return 0;
-
-  num_valid = mips_linux_watch_get_num_valid (&priv->watch_readback);
-
-  for (n = 0; n < MAX_DEBUG_REGISTER && n < num_valid; n++)
-    if (mips_linux_watch_get_watchhi (&priv->watch_readback, n)
-	& (R_MASK | W_MASK))
-      return 1;
-
-  return 0;
-}
-
-/* This is the implementation of linux_target_ops method
-   stopped_data_address.  */
-
-static CORE_ADDR
-mips_stopped_data_address (void)
-{
-  struct process_info *proc = current_process ();
-  struct arch_process_info *priv = proc->priv->arch_private;
-  int n;
-  int num_valid;
-  long lwpid = lwpid_of (current_thread);
-
-  /* On MIPS we don't know the low order 3 bits of the data address.
-     GDB does not support remote targets that can't report the
-     watchpoint address.  So, make our best guess; return the starting
-     address of a watchpoint request which overlaps the one that
-     triggered.  */
-
-  if (!mips_linux_read_watch_registers (lwpid,
-					&priv->watch_readback,
-					&priv->watch_readback_valid,
-					0))
-    return 0;
-
-  num_valid = mips_linux_watch_get_num_valid (&priv->watch_readback);
-
-  for (n = 0; n < MAX_DEBUG_REGISTER && n < num_valid; n++)
-    if (mips_linux_watch_get_watchhi (&priv->watch_readback, n)
-	& (R_MASK | W_MASK))
-      {
-	CORE_ADDR t_low, t_hi;
-	int t_irw;
-	struct mips_watchpoint *watch;
-
-	t_low = mips_linux_watch_get_watchlo (&priv->watch_readback, n);
-	t_irw = t_low & IRW_MASK;
-	t_hi = (mips_linux_watch_get_watchhi (&priv->watch_readback, n)
-		| IRW_MASK);
-	t_low &= ~(CORE_ADDR)t_hi;
-
-	for (watch = priv->current_watches;
-	     watch != NULL;
-	     watch = watch->next)
-	  {
-	    CORE_ADDR addr = watch->addr;
-	    CORE_ADDR last_byte = addr + watch->len - 1;
-
-	    if ((t_irw & mips_linux_watch_type_to_irw (watch->type)) == 0)
-	      {
-		/* Different type.  */
-		continue;
-	      }
-	    /* Check for overlap of even a single byte.  */
-	    if (last_byte >= t_low && addr <= t_low + t_hi)
-	      return addr;
-	  }
-      }
-
-  /* Shouldn't happen.  */
-  return 0;
-}
-
-/* Fetch the thread-local storage pointer for libthread_db.  */
-
-ps_err_e
-ps_get_thread_area (struct ps_prochandle *ph,
-		    lwpid_t lwpid, int idx, void **base)
-{
-  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
-    return PS_ERR;
-
-  /* IDX is the bias from the thread pointer to the beginning of the
-     thread descriptor.  It has to be subtracted due to implementation
-     quirks in libthread_db.  */
-  *base = (void *) ((char *)*base - idx);
-
-  return PS_OK;
-}
-
-static void
-mips_collect_register (struct regcache *regcache,
-		       int use_64bit, int regno, union mips_register *reg)
-{
-  union mips_register tmp_reg;
-
-  if (use_64bit)
-    {
-      collect_register (regcache, regno, &tmp_reg.reg64);
-      *reg = tmp_reg;
-    }
-  else
-    {
-      collect_register (regcache, regno, &tmp_reg.reg32);
-      reg->reg64 = tmp_reg.reg32;
-    }
-}
-
-static void
-mips_supply_register (struct regcache *regcache,
-		      int use_64bit, int regno, const union mips_register *reg)
-{
-  int offset = 0;
-
-  /* For big-endian 32-bit targets, ignore the high four bytes of each
-     eight-byte slot.  */
-  if (__BYTE_ORDER == __BIG_ENDIAN && !use_64bit)
-    offset = 4;
-
-  supply_register (regcache, regno, reg->buf + offset);
-}
-
-#ifdef HAVE_PTRACE_GETREGS
-
-static void
-mips_collect_register_32bit (struct regcache *regcache,
-			     int use_64bit, int regno, unsigned char *buf)
-{
-  union mips_register tmp_reg;
-  int reg32;
-
-  mips_collect_register (regcache, use_64bit, regno, &tmp_reg);
-  reg32 = tmp_reg.reg64;
-  memcpy (buf, &reg32, 4);
-}
-
-static void
-mips_supply_register_32bit (struct regcache *regcache,
-			    int use_64bit, int regno, const unsigned char *buf)
-{
-  union mips_register tmp_reg;
-  int reg32;
-
-  memcpy (&reg32, buf, 4);
-  tmp_reg.reg64 = reg32;
-  mips_supply_register (regcache, use_64bit, regno, &tmp_reg);
-}
-
-static void
-mips_fill_gregset (struct regcache *regcache, void *buf)
-{
-  union mips_register *regset = (union mips_register *) buf;
-  int i, use_64bit;
-  const struct target_desc *tdesc = regcache->tdesc;
-
-  use_64bit = (register_size (tdesc, 0) == 8);
-
-  for (i = 1; i < 32; i++)
-    mips_collect_register (regcache, use_64bit, i, regset + i);
-
-  mips_collect_register (regcache, use_64bit,
-			 find_regno (tdesc, "lo"), regset + 32);
-  mips_collect_register (regcache, use_64bit,
-			 find_regno (tdesc, "hi"), regset + 33);
-  mips_collect_register (regcache, use_64bit,
-			 find_regno (tdesc, "pc"), regset + 34);
-  mips_collect_register (regcache, use_64bit,
-			 find_regno (tdesc, "badvaddr"), regset + 35);
-  mips_collect_register (regcache, use_64bit,
-			 find_regno (tdesc, "status"), regset + 36);
-  mips_collect_register (regcache, use_64bit,
-			 find_regno (tdesc, "cause"), regset + 37);
-
-  mips_collect_register (regcache, use_64bit,
-			 find_regno (tdesc, "restart"), regset + 0);
-}
-
-static void
-mips_store_gregset (struct regcache *regcache, const void *buf)
-{
-  const union mips_register *regset = (const union mips_register *) buf;
-  int i, use_64bit;
-
-  use_64bit = (register_size (regcache->tdesc, 0) == 8);
-
-  supply_register_by_name_zeroed (regcache, "r0");
-
-  for (i = 1; i < 32; i++)
-    mips_supply_register (regcache, use_64bit, i, regset + i);
-
-  mips_supply_register (regcache, use_64bit,
-			find_regno (regcache->tdesc, "lo"), regset + 32);
-  mips_supply_register (regcache, use_64bit,
-			find_regno (regcache->tdesc, "hi"), regset + 33);
-  mips_supply_register (regcache, use_64bit,
-			find_regno (regcache->tdesc, "pc"), regset + 34);
-  mips_supply_register (regcache, use_64bit,
-			find_regno (regcache->tdesc, "badvaddr"), regset + 35);
-  mips_supply_register (regcache, use_64bit,
-			find_regno (regcache->tdesc, "status"), regset + 36);
-  mips_supply_register (regcache, use_64bit,
-			find_regno (regcache->tdesc, "cause"), regset + 37);
-
-  mips_supply_register (regcache, use_64bit,
-			find_regno (regcache->tdesc, "restart"), regset + 0);
-}
-
-static void
-mips_fill_fpregset (struct regcache *regcache, void *buf)
-{
-  union mips_register *regset = (union mips_register *) buf;
-  int i, use_64bit, first_fp, big_endian;
-
-  use_64bit = (register_size (regcache->tdesc, 0) == 8);
-  first_fp = find_regno (regcache->tdesc, "f0");
-  big_endian = (__BYTE_ORDER == __BIG_ENDIAN);
-
-  /* See GDB for a discussion of this peculiar layout.  */
-  for (i = 0; i < 32; i++)
-    if (use_64bit)
-      collect_register (regcache, first_fp + i, regset[i].buf);
-    else
-      collect_register (regcache, first_fp + i,
-			regset[i & ~1].buf + 4 * (big_endian != (i & 1)));
-
-  mips_collect_register_32bit (regcache, use_64bit,
-			       find_regno (regcache->tdesc, "fcsr"), regset[32].buf);
-  mips_collect_register_32bit (regcache, use_64bit,
-			       find_regno (regcache->tdesc, "fir"),
-			       regset[32].buf + 4);
-}
-
-static void
-mips_store_fpregset (struct regcache *regcache, const void *buf)
-{
-  const union mips_register *regset = (const union mips_register *) buf;
-  int i, use_64bit, first_fp, big_endian;
-
-  use_64bit = (register_size (regcache->tdesc, 0) == 8);
-  first_fp = find_regno (regcache->tdesc, "f0");
-  big_endian = (__BYTE_ORDER == __BIG_ENDIAN);
-
-  /* See GDB for a discussion of this peculiar layout.  */
-  for (i = 0; i < 32; i++)
-    if (use_64bit)
-      supply_register (regcache, first_fp + i, regset[i].buf);
-    else
-      supply_register (regcache, first_fp + i,
-		       regset[i & ~1].buf + 4 * (big_endian != (i & 1)));
-
-  mips_supply_register_32bit (regcache, use_64bit,
-			      find_regno (regcache->tdesc, "fcsr"),
-			      regset[32].buf);
-  mips_supply_register_32bit (regcache, use_64bit,
-			      find_regno (regcache->tdesc, "fir"),
-			      regset[32].buf + 4);
-}
-#endif /* HAVE_PTRACE_GETREGS */
-
-/* Take care of 32-bit registers with 64-bit ptrace, POKEUSER side.  */
-
-static void
-mips_collect_ptrace_register (struct regcache *regcache,
-			      int regno, char *buf)
-{
-  int use_64bit = sizeof (PTRACE_XFER_TYPE) == 8;
-
-  if (use_64bit && register_size (regcache->tdesc, regno) == 4)
-    {
-      union mips_register reg;
-
-      mips_collect_register (regcache, 0, regno, &reg);
-      memcpy (buf, &reg, sizeof (reg));
-    }
-  else
-    collect_register (regcache, regno, buf);
-}
-
-/* Take care of 32-bit registers with 64-bit ptrace, PEEKUSER side.  */
-
-static void
-mips_supply_ptrace_register (struct regcache *regcache,
-			     int regno, const char *buf)
-{
-  int use_64bit = sizeof (PTRACE_XFER_TYPE) == 8;
-
-  if (use_64bit && register_size (regcache->tdesc, regno) == 4)
-    {
-      union mips_register reg;
-
-      memcpy (&reg, buf, sizeof (reg));
-      mips_supply_register (regcache, 0, regno, &reg);
-    }
-  else
-    supply_register (regcache, regno, buf);
-}
-
-static struct regset_info mips_regsets[] = {
-#ifdef HAVE_PTRACE_GETREGS
-  { PTRACE_GETREGS, PTRACE_SETREGS, 0, 38 * 8, GENERAL_REGS,
-    mips_fill_gregset, mips_store_gregset },
-  { PTRACE_GETFPREGS, PTRACE_SETFPREGS, 0, 33 * 8, FP_REGS,
-    mips_fill_fpregset, mips_store_fpregset },
-#endif /* HAVE_PTRACE_GETREGS */
-  NULL_REGSET
-};
-
-static struct regsets_info mips_regsets_info =
-  {
-    mips_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct usrregs_info mips_dsp_usrregs_info =
-  {
-    mips_dsp_num_regs,
-    mips_dsp_regmap,
-  };
-
-static struct usrregs_info mips_usrregs_info =
-  {
-    mips_num_regs,
-    mips_regmap,
-  };
-
-static struct regs_info dsp_regs_info =
-  {
-    mips_dsp_regset_bitmap,
-    &mips_dsp_usrregs_info,
-    &mips_regsets_info
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &mips_usrregs_info,
-    &mips_regsets_info
-  };
-
-static const struct regs_info *
-mips_regs_info (void)
-{
-  if (have_dsp)
-    return &dsp_regs_info;
-  else
-    return &regs_info;
-}
-
-struct linux_target_ops the_low_target = {
-  mips_arch_setup,
-  mips_regs_info,
-  mips_cannot_fetch_register,
-  mips_cannot_store_register,
-  mips_fetch_register,
-  mips_get_pc,
-  mips_set_pc,
-  NULL, /* breakpoint_kind_from_pc */
-  mips_sw_breakpoint_from_kind,
-  NULL, /* get_next_pcs */
-  0,
-  mips_breakpoint_at,
-  mips_supports_z_point_type,
-  mips_insert_point,
-  mips_remove_point,
-  mips_stopped_by_watchpoint,
-  mips_stopped_data_address,
-  mips_collect_ptrace_register,
-  mips_supply_ptrace_register,
-  NULL, /* siginfo_fixup */
-  mips_linux_new_process,
-  mips_linux_delete_process,
-  mips_linux_new_thread,
-  mips_linux_delete_thread,
-  mips_linux_new_fork,
-  mips_linux_prepare_to_resume
-};
-
-void
-initialize_low_arch (void)
-{
-  /* Initialize the Linux target descriptions.  */
-  init_registers_mips_linux ();
-  init_registers_mips_dsp_linux ();
-  init_registers_mips64_linux ();
-  init_registers_mips64_dsp_linux ();
-
-  initialize_regsets_info (&mips_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-nios2-low.c ./gdb/gdbserver/linux-nios2-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-nios2-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-nios2-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,259 +0,0 @@
-/* GNU/Linux/Nios II specific low level interface, for the remote server for
-   GDB.
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-   Contributed by Mentor Graphics, 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 "server.h"
-#include "linux-low.h"
-#include "elf/common.h"
-#include "nat/gdb_ptrace.h"
-#include <endian.h>
-#include "gdb_proc_service.h"
-#include <asm/ptrace.h>
-
-#ifndef PTRACE_GET_THREAD_AREA
-#define PTRACE_GET_THREAD_AREA 25
-#endif
-
-/* The following definition must agree with the number of registers
-   defined in "struct user_regs" in GLIBC
-   (sysdeps/unix/sysv/linux/nios2/sys/user.h), and also with
-   NIOS2_NUM_REGS in GDB proper.  */
-
-#define nios2_num_regs 49
-
-/* Defined in auto-generated file nios2-linux.c.  */
-
-void init_registers_nios2_linux (void);
-extern const struct target_desc *tdesc_nios2_linux;
-
-/* This union is used to convert between int and byte buffer
-   representations of register contents.  */
-
-union nios2_register
-{
-  unsigned char buf[4];
-  int reg32;
-};
-
-/* Return the ptrace ``address'' of register REGNO. */
-
-static int nios2_regmap[] = {
-  -1,  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,
-  0
-};
-
-/* Implement the arch_setup linux_target_ops method.  */
-
-static void
-nios2_arch_setup (void)
-{
-  current_process ()->tdesc = tdesc_nios2_linux;
-}
-
-/* Implement the cannot_fetch_register linux_target_ops method.  */
-
-static int
-nios2_cannot_fetch_register (int regno)
-{
-  if (nios2_regmap[regno] == -1)
-    return 1;
-
-  return 0;
-}
-
-/* Implement the cannot_store_register linux_target_ops method.  */
-
-static int
-nios2_cannot_store_register (int regno)
-{
-  if (nios2_regmap[regno] == -1)
-    return 1;
-
-  return 0;
-}
-
-/* Breakpoint support.  Also see comments on nios2_breakpoint_from_pc
-   in nios2-tdep.c.  */
-
-#if defined(__nios2_arch__) && __nios2_arch__ == 2
-#define NIOS2_BREAKPOINT 0xb7fd0020
-#define CDX_BREAKPOINT 0xd7c9
-#else
-#define NIOS2_BREAKPOINT 0x003b6ffa
-#endif
-
-/* We only register the 4-byte breakpoint, even on R2 targets which also
-   support 2-byte breakpoints.  Since there is no supports_z_point_type
-   function provided, gdbserver never inserts software breakpoints itself
-   and instead relies on GDB to insert the breakpoint of the correct length
-   via a memory write.  */
-static const unsigned int nios2_breakpoint = NIOS2_BREAKPOINT;
-#define nios2_breakpoint_len 4
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-nios2_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = nios2_breakpoint_len;
-  return (const gdb_byte *) &nios2_breakpoint;
-}
-
-/* Implement the breakpoint_at linux_target_ops method.  */
-
-static int
-nios2_breakpoint_at (CORE_ADDR where)
-{
-  unsigned int insn;
-
-  /* For R2, first check for the 2-byte CDX trap.n breakpoint encoding.  */
-#if defined(__nios2_arch__) && __nios2_arch__ == 2
-  (*the_target->read_memory) (where, (unsigned char *) &insn, 2);
-  if (insn == CDX_BREAKPOINT)
-    return 1;
-#endif
-
-  (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
-  if (insn == nios2_breakpoint)
-    return 1;
-  return 0;
-}
-
-/* Fetch the thread-local storage pointer for libthread_db.  */
-
-ps_err_e
-ps_get_thread_area (struct ps_prochandle *ph,
-                    lwpid_t lwpid, int idx, void **base)
-{
-  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
-    return PS_ERR;
-
-  /* IDX is the bias from the thread pointer to the beginning of the
-     thread descriptor.  It has to be subtracted due to implementation
-     quirks in libthread_db.  */
-  *base = (void *) ((char *) *base - idx);
-
-  return PS_OK;
-}
-
-/* Helper functions to collect/supply a single register REGNO.  */
-
-static void
-nios2_collect_register (struct regcache *regcache, int regno,
-			union nios2_register *reg)
-{
-  union nios2_register tmp_reg;
-
-  collect_register (regcache, regno, &tmp_reg.reg32);
-  reg->reg32 = tmp_reg.reg32;
-}
-
-static void
-nios2_supply_register (struct regcache *regcache, int regno,
-		       const union nios2_register *reg)
-{
-  supply_register (regcache, regno, reg->buf);
-}
-
-/* We have only a single register set on Nios II.  */
-
-static void
-nios2_fill_gregset (struct regcache *regcache, void *buf)
-{
-  union nios2_register *regset = (union nios2_register *) buf;
-  int i;
-
-  for (i = 1; i < nios2_num_regs; i++)
-    nios2_collect_register (regcache, i, regset + i);
-}
-
-static void
-nios2_store_gregset (struct regcache *regcache, const void *buf)
-{
-  const union nios2_register *regset = (union nios2_register *) buf;
-  int i;
-
-  for (i = 0; i < nios2_num_regs; i++)
-    nios2_supply_register (regcache, i, regset + i);
-}
-
-static struct regset_info nios2_regsets[] =
-{
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
-    nios2_num_regs * 4, GENERAL_REGS,
-    nios2_fill_gregset, nios2_store_gregset },
-  NULL_REGSET
-};
-
-static struct regsets_info nios2_regsets_info =
-  {
-    nios2_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct usrregs_info nios2_usrregs_info =
-  {
-    nios2_num_regs,
-    nios2_regmap,
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &nios2_usrregs_info,
-    &nios2_regsets_info
-  };
-
-static const struct regs_info *
-nios2_regs_info (void)
-{
-  return &regs_info;
-}
-
-struct linux_target_ops the_low_target =
-{
-  nios2_arch_setup,
-  nios2_regs_info,
-  nios2_cannot_fetch_register,
-  nios2_cannot_store_register,
-  NULL,
-  linux_get_pc_32bit,
-  linux_set_pc_32bit,
-  NULL, /* breakpoint_kind_from_pc */
-  nios2_sw_breakpoint_from_kind,
-  NULL, /* get_next_pcs */
-  0,
-  nios2_breakpoint_at,
-};
-
-void
-initialize_low_arch (void)
-{
-  init_registers_nios2_linux ();
-
-  initialize_regsets_info (&nios2_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-ppc-ipa.c ./gdb/gdbserver/linux-ppc-ipa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-ppc-ipa.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-ppc-ipa.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,259 +0,0 @@
-/* GNU/Linux/PowerPC specific low level interface, for the in-process
-   agent library for GDB.
-
-   Copyright (C) 2016-2020 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 "server.h"
-#include <sys/mman.h>
-#include "tracepoint.h"
-#include "arch/ppc-linux-tdesc.h"
-#include "linux-ppc-tdesc-init.h"
-#include <elf.h>
-#ifdef HAVE_GETAUXVAL
-#include <sys/auxv.h>
-#endif
-
-/* These macros define the position of registers in the buffer collected
-   by the fast tracepoint jump pad.  */
-#define FT_CR_R0	0
-#define FT_CR_CR	32
-#define FT_CR_XER	33
-#define FT_CR_LR	34
-#define FT_CR_CTR	35
-#define FT_CR_PC	36
-#define FT_CR_GPR(n)	(FT_CR_R0 + (n))
-
-static const int ppc_ft_collect_regmap[] = {
-  /* GPRs */
-  FT_CR_GPR (0), FT_CR_GPR (1), FT_CR_GPR (2),
-  FT_CR_GPR (3), FT_CR_GPR (4), FT_CR_GPR (5),
-  FT_CR_GPR (6), FT_CR_GPR (7), FT_CR_GPR (8),
-  FT_CR_GPR (9), FT_CR_GPR (10), FT_CR_GPR (11),
-  FT_CR_GPR (12), FT_CR_GPR (13), FT_CR_GPR (14),
-  FT_CR_GPR (15), FT_CR_GPR (16), FT_CR_GPR (17),
-  FT_CR_GPR (18), FT_CR_GPR (19), FT_CR_GPR (20),
-  FT_CR_GPR (21), FT_CR_GPR (22), FT_CR_GPR (23),
-  FT_CR_GPR (24), FT_CR_GPR (25), FT_CR_GPR (26),
-  FT_CR_GPR (27), FT_CR_GPR (28), FT_CR_GPR (29),
-  FT_CR_GPR (30), FT_CR_GPR (31),
-  /* FPRs - not collected.  */
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  FT_CR_PC, /* PC */
-  -1, /* MSR */
-  FT_CR_CR, /* CR */
-  FT_CR_LR, /* LR */
-  FT_CR_CTR, /* CTR */
-  FT_CR_XER, /* XER */
-  -1, /* FPSCR */
-};
-
-#define PPC_NUM_FT_COLLECT_GREGS \
-  (sizeof (ppc_ft_collect_regmap) / sizeof(ppc_ft_collect_regmap[0]))
-
-/* Supply registers collected by the fast tracepoint jump pad.
-   BUF is the second argument we pass to gdb_collect in jump pad.  */
-
-void
-supply_fast_tracepoint_registers (struct regcache *regcache,
-				  const unsigned char *buf)
-{
-  int i;
-
-  for (i = 0; i < PPC_NUM_FT_COLLECT_GREGS; i++)
-    {
-      if (ppc_ft_collect_regmap[i] == -1)
-	continue;
-      supply_register (regcache, i,
-		       ((char *) buf)
-			+ ppc_ft_collect_regmap[i] * sizeof (long));
-    }
-}
-
-/* Return the value of register REGNUM.  RAW_REGS is collected buffer
-   by jump pad.  This function is called by emit_reg.  */
-
-ULONGEST
-get_raw_reg (const unsigned char *raw_regs, int regnum)
-{
-  if (regnum >= PPC_NUM_FT_COLLECT_GREGS)
-    return 0;
-  if (ppc_ft_collect_regmap[regnum] == -1)
-    return 0;
-
-  return *(unsigned long *) (raw_regs
-			     + ppc_ft_collect_regmap[regnum] * sizeof (long));
-}
-
-/* Allocate buffer for the jump pads.  The branch instruction has a reach
-   of +/- 32MiB, and the executable is loaded at 0x10000000 (256MiB).
-
-   64-bit: To maximize the area of executable that can use tracepoints,
-   try allocating at 0x10000000 - size initially, decreasing until we hit
-   a free area.
-
-   32-bit: ld.so loads dynamic libraries right below the executable, so
-   we cannot depend on that area (dynamic libraries can be quite large).
-   Instead, aim right after the executable - at sbrk(0).  This will
-   cause future brk to fail, and malloc will fallback to mmap.  */
-
-void *
-alloc_jump_pad_buffer (size_t size)
-{
-#ifdef __powerpc64__
-  uintptr_t addr;
-  uintptr_t exec_base = getauxval (AT_PHDR);
-  int pagesize;
-  void *res;
-
-  if (exec_base == 0)
-    exec_base = 0x10000000;
-
-  pagesize = sysconf (_SC_PAGE_SIZE);
-  if (pagesize == -1)
-    perror_with_name ("sysconf");
-
-  addr = exec_base - size;
-
-  /* size should already be page-aligned, but this can't hurt.  */
-  addr &= ~(pagesize - 1);
-
-  /* Search for a free area.  If we hit 0, we're out of luck.  */
-  for (; addr; addr -= pagesize)
-    {
-      /* No MAP_FIXED - we don't want to zap someone's mapping.  */
-      res = mmap ((void *) addr, size,
-		  PROT_READ | PROT_WRITE | PROT_EXEC,
-		  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-
-      /* If we got what we wanted, return.  */
-      if ((uintptr_t) res == addr)
-	return res;
-
-      /* If we got a mapping, but at a wrong address, undo it.  */
-      if (res != MAP_FAILED)
-	munmap (res, size);
-    }
-
-  return NULL;
-#else
-  void *target = sbrk (0);
-  void *res = mmap (target, size, PROT_READ | PROT_WRITE | PROT_EXEC,
-		    MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-
-  if (res == target)
-    return res;
-
-  if (res != MAP_FAILED)
-    munmap (res, size);
-
-  return NULL;
-#endif
-}
-
-/* Return target_desc to use for IPA, given the tdesc index passed by
-   gdbserver.  */
-
-const struct target_desc *
-get_ipa_tdesc (int idx)
-{
-  switch (idx)
-    {
-#ifdef __powerpc64__
-    case PPC_TDESC_BASE:
-      return tdesc_powerpc_64l;
-    case PPC_TDESC_ALTIVEC:
-      return tdesc_powerpc_altivec64l;
-    case PPC_TDESC_VSX:
-      return tdesc_powerpc_vsx64l;
-    case PPC_TDESC_ISA205:
-      return tdesc_powerpc_isa205_64l;
-    case PPC_TDESC_ISA205_ALTIVEC:
-      return tdesc_powerpc_isa205_altivec64l;
-    case PPC_TDESC_ISA205_VSX:
-      return tdesc_powerpc_isa205_vsx64l;
-    case PPC_TDESC_ISA205_PPR_DSCR_VSX:
-      return tdesc_powerpc_isa205_ppr_dscr_vsx64l;
-    case PPC_TDESC_ISA207_VSX:
-      return tdesc_powerpc_isa207_vsx64l;
-    case PPC_TDESC_ISA207_HTM_VSX:
-      return tdesc_powerpc_isa207_htm_vsx64l;
-#else
-    case PPC_TDESC_BASE:
-      return tdesc_powerpc_32l;
-    case PPC_TDESC_ALTIVEC:
-      return tdesc_powerpc_altivec32l;
-    case PPC_TDESC_VSX:
-      return tdesc_powerpc_vsx32l;
-    case PPC_TDESC_ISA205:
-      return tdesc_powerpc_isa205_32l;
-    case PPC_TDESC_ISA205_ALTIVEC:
-      return tdesc_powerpc_isa205_altivec32l;
-    case PPC_TDESC_ISA205_VSX:
-      return tdesc_powerpc_isa205_vsx32l;
-    case PPC_TDESC_ISA205_PPR_DSCR_VSX:
-      return tdesc_powerpc_isa205_ppr_dscr_vsx32l;
-    case PPC_TDESC_ISA207_VSX:
-      return tdesc_powerpc_isa207_vsx32l;
-    case PPC_TDESC_ISA207_HTM_VSX:
-      return tdesc_powerpc_isa207_htm_vsx32l;
-    case PPC_TDESC_E500:
-      return tdesc_powerpc_e500l;
-#endif
-    default:
-      internal_error (__FILE__, __LINE__,
-                     "unknown ipa tdesc index: %d", idx);
-#ifdef __powerpc64__
-      return tdesc_powerpc_64l;
-#else
-      return tdesc_powerpc_32l;
-#endif
-    }
-}
-
-
-/* Initialize ipa_tdesc and others.  */
-
-void
-initialize_low_tracepoint (void)
-{
-#ifdef __powerpc64__
-  init_registers_powerpc_64l ();
-  init_registers_powerpc_altivec64l ();
-  init_registers_powerpc_vsx64l ();
-  init_registers_powerpc_isa205_64l ();
-  init_registers_powerpc_isa205_altivec64l ();
-  init_registers_powerpc_isa205_vsx64l ();
-  init_registers_powerpc_isa205_ppr_dscr_vsx64l ();
-  init_registers_powerpc_isa207_vsx64l ();
-  init_registers_powerpc_isa207_htm_vsx64l ();
-#else
-  init_registers_powerpc_32l ();
-  init_registers_powerpc_altivec32l ();
-  init_registers_powerpc_vsx32l ();
-  init_registers_powerpc_isa205_32l ();
-  init_registers_powerpc_isa205_altivec32l ();
-  init_registers_powerpc_isa205_vsx32l ();
-  init_registers_powerpc_isa205_ppr_dscr_vsx32l ();
-  init_registers_powerpc_isa207_vsx32l ();
-  init_registers_powerpc_isa207_htm_vsx32l ();
-  init_registers_powerpc_e500l ();
-#endif
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-ppc-low.c ./gdb/gdbserver/linux-ppc-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-ppc-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-ppc-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,3441 +0,0 @@
-/* GNU/Linux/PowerPC specific low level interface, for the remote server for
-   GDB.
-   Copyright (C) 1995-2020 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 "server.h"
-#include "linux-low.h"
-
-#include "elf/common.h"
-#include <sys/uio.h>
-#include <elf.h>
-#include <asm/ptrace.h>
-
-#include "arch/ppc-linux-common.h"
-#include "arch/ppc-linux-tdesc.h"
-#include "nat/ppc-linux.h"
-#include "nat/linux-ptrace.h"
-#include "linux-ppc-tdesc-init.h"
-#include "ax.h"
-#include "tracepoint.h"
-
-#define PPC_FIELD(value, from, len) \
-	(((value) >> (32 - (from) - (len))) & ((1 << (len)) - 1))
-#define PPC_SEXT(v, bs) \
-	((((CORE_ADDR) (v) & (((CORE_ADDR) 1 << (bs)) - 1)) \
-	  ^ ((CORE_ADDR) 1 << ((bs) - 1))) \
-	 - ((CORE_ADDR) 1 << ((bs) - 1)))
-#define PPC_OP6(insn)	PPC_FIELD (insn, 0, 6)
-#define PPC_BO(insn)	PPC_FIELD (insn, 6, 5)
-#define PPC_LI(insn)	(PPC_SEXT (PPC_FIELD (insn, 6, 24), 24) << 2)
-#define PPC_BD(insn)	(PPC_SEXT (PPC_FIELD (insn, 16, 14), 14) << 2)
-
-/* Holds the AT_HWCAP auxv entry.  */
-
-static unsigned long ppc_hwcap;
-
-/* Holds the AT_HWCAP2 auxv entry.  */
-
-static unsigned long ppc_hwcap2;
-
-
-#define ppc_num_regs 73
-
-#ifdef __powerpc64__
-/* We use a constant for FPSCR instead of PT_FPSCR, because
-   many shipped PPC64 kernels had the wrong value in ptrace.h.  */
-static int ppc_regmap[] =
- {PT_R0 * 8,     PT_R1 * 8,     PT_R2 * 8,     PT_R3 * 8,
-  PT_R4 * 8,     PT_R5 * 8,     PT_R6 * 8,     PT_R7 * 8,
-  PT_R8 * 8,     PT_R9 * 8,     PT_R10 * 8,    PT_R11 * 8,
-  PT_R12 * 8,    PT_R13 * 8,    PT_R14 * 8,    PT_R15 * 8,
-  PT_R16 * 8,    PT_R17 * 8,    PT_R18 * 8,    PT_R19 * 8,
-  PT_R20 * 8,    PT_R21 * 8,    PT_R22 * 8,    PT_R23 * 8,
-  PT_R24 * 8,    PT_R25 * 8,    PT_R26 * 8,    PT_R27 * 8,
-  PT_R28 * 8,    PT_R29 * 8,    PT_R30 * 8,    PT_R31 * 8,
-  PT_FPR0*8,     PT_FPR0*8 + 8, PT_FPR0*8+16,  PT_FPR0*8+24,
-  PT_FPR0*8+32,  PT_FPR0*8+40,  PT_FPR0*8+48,  PT_FPR0*8+56,
-  PT_FPR0*8+64,  PT_FPR0*8+72,  PT_FPR0*8+80,  PT_FPR0*8+88,
-  PT_FPR0*8+96,  PT_FPR0*8+104,  PT_FPR0*8+112,  PT_FPR0*8+120,
-  PT_FPR0*8+128, PT_FPR0*8+136,  PT_FPR0*8+144,  PT_FPR0*8+152,
-  PT_FPR0*8+160,  PT_FPR0*8+168,  PT_FPR0*8+176,  PT_FPR0*8+184,
-  PT_FPR0*8+192,  PT_FPR0*8+200,  PT_FPR0*8+208,  PT_FPR0*8+216,
-  PT_FPR0*8+224,  PT_FPR0*8+232,  PT_FPR0*8+240,  PT_FPR0*8+248,
-  PT_NIP * 8,    PT_MSR * 8,    PT_CCR * 8,    PT_LNK * 8,
-  PT_CTR * 8,    PT_XER * 8,    PT_FPR0*8 + 256,
-  PT_ORIG_R3 * 8, PT_TRAP * 8 };
-#else
-/* Currently, don't check/send MQ.  */
-static int ppc_regmap[] =
- {PT_R0 * 4,     PT_R1 * 4,     PT_R2 * 4,     PT_R3 * 4,
-  PT_R4 * 4,     PT_R5 * 4,     PT_R6 * 4,     PT_R7 * 4,
-  PT_R8 * 4,     PT_R9 * 4,     PT_R10 * 4,    PT_R11 * 4,
-  PT_R12 * 4,    PT_R13 * 4,    PT_R14 * 4,    PT_R15 * 4,
-  PT_R16 * 4,    PT_R17 * 4,    PT_R18 * 4,    PT_R19 * 4,
-  PT_R20 * 4,    PT_R21 * 4,    PT_R22 * 4,    PT_R23 * 4,
-  PT_R24 * 4,    PT_R25 * 4,    PT_R26 * 4,    PT_R27 * 4,
-  PT_R28 * 4,    PT_R29 * 4,    PT_R30 * 4,    PT_R31 * 4,
-  PT_FPR0*4,     PT_FPR0*4 + 8, PT_FPR0*4+16,  PT_FPR0*4+24,
-  PT_FPR0*4+32,  PT_FPR0*4+40,  PT_FPR0*4+48,  PT_FPR0*4+56,
-  PT_FPR0*4+64,  PT_FPR0*4+72,  PT_FPR0*4+80,  PT_FPR0*4+88,
-  PT_FPR0*4+96,  PT_FPR0*4+104,  PT_FPR0*4+112,  PT_FPR0*4+120,
-  PT_FPR0*4+128, PT_FPR0*4+136,  PT_FPR0*4+144,  PT_FPR0*4+152,
-  PT_FPR0*4+160,  PT_FPR0*4+168,  PT_FPR0*4+176,  PT_FPR0*4+184,
-  PT_FPR0*4+192,  PT_FPR0*4+200,  PT_FPR0*4+208,  PT_FPR0*4+216,
-  PT_FPR0*4+224,  PT_FPR0*4+232,  PT_FPR0*4+240,  PT_FPR0*4+248,
-  PT_NIP * 4,    PT_MSR * 4,    PT_CCR * 4,    PT_LNK * 4,
-  PT_CTR * 4,    PT_XER * 4,    PT_FPSCR * 4,
-  PT_ORIG_R3 * 4, PT_TRAP * 4
- };
-
-static int ppc_regmap_e500[] =
- {PT_R0 * 4,     PT_R1 * 4,     PT_R2 * 4,     PT_R3 * 4,
-  PT_R4 * 4,     PT_R5 * 4,     PT_R6 * 4,     PT_R7 * 4,
-  PT_R8 * 4,     PT_R9 * 4,     PT_R10 * 4,    PT_R11 * 4,
-  PT_R12 * 4,    PT_R13 * 4,    PT_R14 * 4,    PT_R15 * 4,
-  PT_R16 * 4,    PT_R17 * 4,    PT_R18 * 4,    PT_R19 * 4,
-  PT_R20 * 4,    PT_R21 * 4,    PT_R22 * 4,    PT_R23 * 4,
-  PT_R24 * 4,    PT_R25 * 4,    PT_R26 * 4,    PT_R27 * 4,
-  PT_R28 * 4,    PT_R29 * 4,    PT_R30 * 4,    PT_R31 * 4,
-  -1,            -1,            -1,            -1,
-  -1,            -1,            -1,            -1,
-  -1,            -1,            -1,            -1,
-  -1,            -1,            -1,            -1,
-  -1,            -1,            -1,            -1,
-  -1,            -1,            -1,            -1,
-  -1,            -1,            -1,            -1,
-  -1,            -1,            -1,            -1,
-  PT_NIP * 4,    PT_MSR * 4,    PT_CCR * 4,    PT_LNK * 4,
-  PT_CTR * 4,    PT_XER * 4,    -1,
-  PT_ORIG_R3 * 4, PT_TRAP * 4
- };
-#endif
-
-/* Check whether the kernel provides a register set with number
-   REGSET_ID of size REGSETSIZE for process/thread TID.  */
-
-static int
-ppc_check_regset (int tid, int regset_id, int regsetsize)
-{
-  void *buf = alloca (regsetsize);
-  struct iovec iov;
-
-  iov.iov_base = buf;
-  iov.iov_len = regsetsize;
-
-  if (ptrace (PTRACE_GETREGSET, tid, regset_id, &iov) >= 0
-      || errno == ENODATA)
-    return 1;
-  return 0;
-}
-
-static int
-ppc_cannot_store_register (int regno)
-{
-  const struct target_desc *tdesc = current_process ()->tdesc;
-
-#ifndef __powerpc64__
-  /* Some kernels do not allow us to store fpscr.  */
-  if (!(ppc_hwcap & PPC_FEATURE_HAS_SPE)
-      && regno == find_regno (tdesc, "fpscr"))
-    return 2;
-#endif
-
-  /* Some kernels do not allow us to store orig_r3 or trap.  */
-  if (regno == find_regno (tdesc, "orig_r3")
-      || regno == find_regno (tdesc, "trap"))
-    return 2;
-
-  return 0;
-}
-
-static int
-ppc_cannot_fetch_register (int regno)
-{
-  return 0;
-}
-
-static void
-ppc_collect_ptrace_register (struct regcache *regcache, int regno, char *buf)
-{
-  memset (buf, 0, sizeof (long));
-
-  if (__BYTE_ORDER == __LITTLE_ENDIAN)
-    {
-      /* Little-endian values always sit at the left end of the buffer.  */
-      collect_register (regcache, regno, buf);
-    }
-  else if (__BYTE_ORDER == __BIG_ENDIAN)
-    {
-      /* Big-endian values sit at the right end of the buffer.  In case of
-         registers whose sizes are smaller than sizeof (long), we must use a
-         padding to access them correctly.  */
-      int size = register_size (regcache->tdesc, regno);
-
-      if (size < sizeof (long))
-	collect_register (regcache, regno, buf + sizeof (long) - size);
-      else
-	collect_register (regcache, regno, buf);
-    }
-  else
-    perror_with_name ("Unexpected byte order");
-}
-
-static void
-ppc_supply_ptrace_register (struct regcache *regcache,
-			    int regno, const char *buf)
-{
-  if (__BYTE_ORDER == __LITTLE_ENDIAN)
-    {
-      /* Little-endian values always sit at the left end of the buffer.  */
-      supply_register (regcache, regno, buf);
-    }
-  else if (__BYTE_ORDER == __BIG_ENDIAN)
-    {
-      /* Big-endian values sit at the right end of the buffer.  In case of
-         registers whose sizes are smaller than sizeof (long), we must use a
-         padding to access them correctly.  */
-      int size = register_size (regcache->tdesc, regno);
-
-      if (size < sizeof (long))
-	supply_register (regcache, regno, buf + sizeof (long) - size);
-      else
-	supply_register (regcache, regno, buf);
-    }
-  else
-    perror_with_name ("Unexpected byte order");
-}
-
-static CORE_ADDR
-ppc_get_pc (struct regcache *regcache)
-{
-  if (register_size (regcache->tdesc, 0) == 4)
-    {
-      unsigned int pc;
-      collect_register_by_name (regcache, "pc", &pc);
-      return (CORE_ADDR) pc;
-    }
-  else
-    {
-      unsigned long pc;
-      collect_register_by_name (regcache, "pc", &pc);
-      return (CORE_ADDR) pc;
-    }
-}
-
-static void
-ppc_set_pc (struct regcache *regcache, CORE_ADDR pc)
-{
-  if (register_size (regcache->tdesc, 0) == 4)
-    {
-      unsigned int newpc = pc;
-      supply_register_by_name (regcache, "pc", &newpc);
-    }
-  else
-    {
-      unsigned long newpc = pc;
-      supply_register_by_name (regcache, "pc", &newpc);
-    }
-}
-
-#ifndef __powerpc64__
-static int ppc_regmap_adjusted;
-#endif
-
-
-/* Correct in either endianness.
-   This instruction is "twge r2, r2", which GDB uses as a software
-   breakpoint.  */
-static const unsigned int ppc_breakpoint = 0x7d821008;
-#define ppc_breakpoint_len 4
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-ppc_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = ppc_breakpoint_len;
-  return (const gdb_byte *) &ppc_breakpoint;
-}
-
-static int
-ppc_breakpoint_at (CORE_ADDR where)
-{
-  unsigned int insn;
-
-  (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
-  if (insn == ppc_breakpoint)
-    return 1;
-  /* If necessary, recognize more trap instructions here.  GDB only uses
-     the one.  */
-
-  return 0;
-}
-
-/* Implement supports_z_point_type target-ops.
-   Returns true if type Z_TYPE breakpoint is supported.
-
-   Handling software breakpoint at server side, so tracepoints
-   and breakpoints can be inserted at the same location.  */
-
-static int
-ppc_supports_z_point_type (char z_type)
-{
-  switch (z_type)
-    {
-    case Z_PACKET_SW_BP:
-      return 1;
-    case Z_PACKET_HW_BP:
-    case Z_PACKET_WRITE_WP:
-    case Z_PACKET_ACCESS_WP:
-    default:
-      return 0;
-    }
-}
-
-/* Implement insert_point target-ops.
-   Returns 0 on success, -1 on failure and 1 on unsupported.  */
-
-static int
-ppc_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		  int size, struct raw_breakpoint *bp)
-{
-  switch (type)
-    {
-    case raw_bkpt_type_sw:
-      return insert_memory_breakpoint (bp);
-
-    case raw_bkpt_type_hw:
-    case raw_bkpt_type_write_wp:
-    case raw_bkpt_type_access_wp:
-    default:
-      /* Unsupported.  */
-      return 1;
-    }
-}
-
-/* Implement remove_point target-ops.
-   Returns 0 on success, -1 on failure and 1 on unsupported.  */
-
-static int
-ppc_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		  int size, struct raw_breakpoint *bp)
-{
-  switch (type)
-    {
-    case raw_bkpt_type_sw:
-      return remove_memory_breakpoint (bp);
-
-    case raw_bkpt_type_hw:
-    case raw_bkpt_type_write_wp:
-    case raw_bkpt_type_access_wp:
-    default:
-      /* Unsupported.  */
-      return 1;
-    }
-}
-
-/* Provide only a fill function for the general register set.  ps_lgetregs
-   will use this for NPTL support.  */
-
-static void ppc_fill_gregset (struct regcache *regcache, void *buf)
-{
-  int i;
-
-  for (i = 0; i < 32; i++)
-    ppc_collect_ptrace_register (regcache, i, (char *) buf + ppc_regmap[i]);
-
-  for (i = 64; i < 70; i++)
-    ppc_collect_ptrace_register (regcache, i, (char *) buf + ppc_regmap[i]);
-
-  for (i = 71; i < 73; i++)
-    ppc_collect_ptrace_register (regcache, i, (char *) buf + ppc_regmap[i]);
-}
-
-/* Program Priority Register regset fill function.  */
-
-static void
-ppc_fill_pprregset (struct regcache *regcache, void *buf)
-{
-  char *ppr = (char *) buf;
-
-  collect_register_by_name (regcache, "ppr", ppr);
-}
-
-/* Program Priority Register regset store function.  */
-
-static void
-ppc_store_pprregset (struct regcache *regcache, const void *buf)
-{
-  const char *ppr = (const char *) buf;
-
-  supply_register_by_name (regcache, "ppr", ppr);
-}
-
-/* Data Stream Control Register regset fill function.  */
-
-static void
-ppc_fill_dscrregset (struct regcache *regcache, void *buf)
-{
-  char *dscr = (char *) buf;
-
-  collect_register_by_name (regcache, "dscr", dscr);
-}
-
-/* Data Stream Control Register regset store function.  */
-
-static void
-ppc_store_dscrregset (struct regcache *regcache, const void *buf)
-{
-  const char *dscr = (const char *) buf;
-
-  supply_register_by_name (regcache, "dscr", dscr);
-}
-
-/* Target Address Register regset fill function.  */
-
-static void
-ppc_fill_tarregset (struct regcache *regcache, void *buf)
-{
-  char *tar = (char *) buf;
-
-  collect_register_by_name (regcache, "tar", tar);
-}
-
-/* Target Address Register regset store function.  */
-
-static void
-ppc_store_tarregset (struct regcache *regcache, const void *buf)
-{
-  const char *tar = (const char *) buf;
-
-  supply_register_by_name (regcache, "tar", tar);
-}
-
-/* Event-Based Branching regset store function.  Unless the inferior
-   has a perf event open, ptrace can return in error when reading and
-   writing to the regset, with ENODATA.  For reading, the registers
-   will correctly show as unavailable.  For writing, gdbserver
-   currently only caches any register writes from P and G packets and
-   the stub always tries to write all the regsets when resuming the
-   inferior, which would result in frequent warnings.  For this
-   reason, we don't define a fill function.  This also means that the
-   client-side regcache will be dirty if the user tries to write to
-   the EBB registers.  G packets that the client sends to write to
-   unrelated registers will also include data for EBB registers, even
-   if they are unavailable.  */
-
-static void
-ppc_store_ebbregset (struct regcache *regcache, const void *buf)
-{
-  const char *regset = (const char *) buf;
-
-  /* The order in the kernel regset is: EBBRR, EBBHR, BESCR.  In the
-     .dat file is BESCR, EBBHR, EBBRR.  */
-  supply_register_by_name (regcache, "ebbrr", &regset[0]);
-  supply_register_by_name (regcache, "ebbhr", &regset[8]);
-  supply_register_by_name (regcache, "bescr", &regset[16]);
-}
-
-/* Performance Monitoring Unit regset fill function.  */
-
-static void
-ppc_fill_pmuregset (struct regcache *regcache, void *buf)
-{
-  char *regset = (char *) buf;
-
-  /* The order in the kernel regset is SIAR, SDAR, SIER, MMCR2, MMCR0.
-     In the .dat file is MMCR0, MMCR2, SIAR, SDAR, SIER.  */
-  collect_register_by_name (regcache, "siar", &regset[0]);
-  collect_register_by_name (regcache, "sdar", &regset[8]);
-  collect_register_by_name (regcache, "sier", &regset[16]);
-  collect_register_by_name (regcache, "mmcr2", &regset[24]);
-  collect_register_by_name (regcache, "mmcr0", &regset[32]);
-}
-
-/* Performance Monitoring Unit regset store function.  */
-
-static void
-ppc_store_pmuregset (struct regcache *regcache, const void *buf)
-{
-  const char *regset = (const char *) buf;
-
-  supply_register_by_name (regcache, "siar", &regset[0]);
-  supply_register_by_name (regcache, "sdar", &regset[8]);
-  supply_register_by_name (regcache, "sier", &regset[16]);
-  supply_register_by_name (regcache, "mmcr2", &regset[24]);
-  supply_register_by_name (regcache, "mmcr0", &regset[32]);
-}
-
-/* Hardware Transactional Memory special-purpose register regset fill
-   function.  */
-
-static void
-ppc_fill_tm_sprregset (struct regcache *regcache, void *buf)
-{
-  int i, base;
-  char *regset = (char *) buf;
-
-  base = find_regno (regcache->tdesc, "tfhar");
-  for (i = 0; i < 3; i++)
-    collect_register (regcache, base + i, &regset[i * 8]);
-}
-
-/* Hardware Transactional Memory special-purpose register regset store
-   function.  */
-
-static void
-ppc_store_tm_sprregset (struct regcache *regcache, const void *buf)
-{
-  int i, base;
-  const char *regset = (const char *) buf;
-
-  base = find_regno (regcache->tdesc, "tfhar");
-  for (i = 0; i < 3; i++)
-    supply_register (regcache, base + i, &regset[i * 8]);
-}
-
-/* For the same reasons as the EBB regset, none of the HTM
-   checkpointed regsets have a fill function.  These registers are
-   only available if the inferior is in a transaction.  */
-
-/* Hardware Transactional Memory checkpointed general-purpose regset
-   store function.  */
-
-static void
-ppc_store_tm_cgprregset (struct regcache *regcache, const void *buf)
-{
-  int i, base, size, endian_offset;
-  const char *regset = (const char *) buf;
-
-  base = find_regno (regcache->tdesc, "cr0");
-  size = register_size (regcache->tdesc, base);
-
-  gdb_assert (size == 4 || size == 8);
-
-  for (i = 0; i < 32; i++)
-    supply_register (regcache, base + i, &regset[i * size]);
-
-  endian_offset = 0;
-
-  if ((size == 8) && (__BYTE_ORDER == __BIG_ENDIAN))
-    endian_offset = 4;
-
-  supply_register_by_name (regcache, "ccr",
-			   &regset[PT_CCR * size + endian_offset]);
-
-  supply_register_by_name (regcache, "cxer",
-			   &regset[PT_XER * size + endian_offset]);
-
-  supply_register_by_name (regcache, "clr", &regset[PT_LNK * size]);
-  supply_register_by_name (regcache, "cctr", &regset[PT_CTR * size]);
-}
-
-/* Hardware Transactional Memory checkpointed floating-point regset
-   store function.  */
-
-static void
-ppc_store_tm_cfprregset (struct regcache *regcache, const void *buf)
-{
-  int i, base;
-  const char *regset = (const char *) buf;
-
-  base = find_regno (regcache->tdesc, "cf0");
-
-  for (i = 0; i < 32; i++)
-    supply_register (regcache, base + i, &regset[i * 8]);
-
-  supply_register_by_name (regcache, "cfpscr", &regset[32 * 8]);
-}
-
-/* Hardware Transactional Memory checkpointed vector regset store
-   function.  */
-
-static void
-ppc_store_tm_cvrregset (struct regcache *regcache, const void *buf)
-{
-  int i, base;
-  const char *regset = (const char *) buf;
-  int vscr_offset = 0;
-
-  base = find_regno (regcache->tdesc, "cvr0");
-
-  for (i = 0; i < 32; i++)
-    supply_register (regcache, base + i, &regset[i * 16]);
-
-  if (__BYTE_ORDER == __BIG_ENDIAN)
-    vscr_offset = 12;
-
-  supply_register_by_name (regcache, "cvscr",
-			   &regset[32 * 16 + vscr_offset]);
-
-  supply_register_by_name (regcache, "cvrsave", &regset[33 * 16]);
-}
-
-/* Hardware Transactional Memory checkpointed vector-scalar regset
-   store function.  */
-
-static void
-ppc_store_tm_cvsxregset (struct regcache *regcache, const void *buf)
-{
-  int i, base;
-  const char *regset = (const char *) buf;
-
-  base = find_regno (regcache->tdesc, "cvs0h");
-  for (i = 0; i < 32; i++)
-    supply_register (regcache, base + i, &regset[i * 8]);
-}
-
-/* Hardware Transactional Memory checkpointed Program Priority
-   Register regset store function.  */
-
-static void
-ppc_store_tm_cpprregset (struct regcache *regcache, const void *buf)
-{
-  const char *cppr = (const char *) buf;
-
-  supply_register_by_name (regcache, "cppr", cppr);
-}
-
-/* Hardware Transactional Memory checkpointed Data Stream Control
-   Register regset store function.  */
-
-static void
-ppc_store_tm_cdscrregset (struct regcache *regcache, const void *buf)
-{
-  const char *cdscr = (const char *) buf;
-
-  supply_register_by_name (regcache, "cdscr", cdscr);
-}
-
-/* Hardware Transactional Memory checkpointed Target Address Register
-   regset store function.  */
-
-static void
-ppc_store_tm_ctarregset (struct regcache *regcache, const void *buf)
-{
-  const char *ctar = (const char *) buf;
-
-  supply_register_by_name (regcache, "ctar", ctar);
-}
-
-static void
-ppc_fill_vsxregset (struct regcache *regcache, void *buf)
-{
-  int i, base;
-  char *regset = (char *) buf;
-
-  base = find_regno (regcache->tdesc, "vs0h");
-  for (i = 0; i < 32; i++)
-    collect_register (regcache, base + i, &regset[i * 8]);
-}
-
-static void
-ppc_store_vsxregset (struct regcache *regcache, const void *buf)
-{
-  int i, base;
-  const char *regset = (const char *) buf;
-
-  base = find_regno (regcache->tdesc, "vs0h");
-  for (i = 0; i < 32; i++)
-    supply_register (regcache, base + i, &regset[i * 8]);
-}
-
-static void
-ppc_fill_vrregset (struct regcache *regcache, void *buf)
-{
-  int i, base;
-  char *regset = (char *) buf;
-  int vscr_offset = 0;
-
-  base = find_regno (regcache->tdesc, "vr0");
-  for (i = 0; i < 32; i++)
-    collect_register (regcache, base + i, &regset[i * 16]);
-
-  if (__BYTE_ORDER == __BIG_ENDIAN)
-    vscr_offset = 12;
-
-  collect_register_by_name (regcache, "vscr",
-			    &regset[32 * 16 + vscr_offset]);
-
-  collect_register_by_name (regcache, "vrsave", &regset[33 * 16]);
-}
-
-static void
-ppc_store_vrregset (struct regcache *regcache, const void *buf)
-{
-  int i, base;
-  const char *regset = (const char *) buf;
-  int vscr_offset = 0;
-
-  base = find_regno (regcache->tdesc, "vr0");
-  for (i = 0; i < 32; i++)
-    supply_register (regcache, base + i, &regset[i * 16]);
-
-  if (__BYTE_ORDER == __BIG_ENDIAN)
-    vscr_offset = 12;
-
-  supply_register_by_name (regcache, "vscr",
-			   &regset[32 * 16 + vscr_offset]);
-  supply_register_by_name (regcache, "vrsave", &regset[33 * 16]);
-}
-
-struct gdb_evrregset_t
-{
-  unsigned long evr[32];
-  unsigned long long acc;
-  unsigned long spefscr;
-};
-
-static void
-ppc_fill_evrregset (struct regcache *regcache, void *buf)
-{
-  int i, ev0;
-  struct gdb_evrregset_t *regset = (struct gdb_evrregset_t *) buf;
-
-  ev0 = find_regno (regcache->tdesc, "ev0h");
-  for (i = 0; i < 32; i++)
-    collect_register (regcache, ev0 + i, &regset->evr[i]);
-
-  collect_register_by_name (regcache, "acc", &regset->acc);
-  collect_register_by_name (regcache, "spefscr", &regset->spefscr);
-}
-
-static void
-ppc_store_evrregset (struct regcache *regcache, const void *buf)
-{
-  int i, ev0;
-  const struct gdb_evrregset_t *regset = (const struct gdb_evrregset_t *) buf;
-
-  ev0 = find_regno (regcache->tdesc, "ev0h");
-  for (i = 0; i < 32; i++)
-    supply_register (regcache, ev0 + i, &regset->evr[i]);
-
-  supply_register_by_name (regcache, "acc", &regset->acc);
-  supply_register_by_name (regcache, "spefscr", &regset->spefscr);
-}
-
-/* Support for hardware single step.  */
-
-static int
-ppc_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-static struct regset_info ppc_regsets[] = {
-  /* List the extra register sets before GENERAL_REGS.  That way we will
-     fetch them every time, but still fall back to PTRACE_PEEKUSER for the
-     general registers.  Some kernels support these, but not the newer
-     PPC_PTRACE_GETREGS.  */
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CTAR, 0, EXTENDED_REGS,
-    NULL, ppc_store_tm_ctarregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CDSCR, 0, EXTENDED_REGS,
-    NULL, ppc_store_tm_cdscrregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CPPR, 0, EXTENDED_REGS,
-    NULL, ppc_store_tm_cpprregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CVSX, 0, EXTENDED_REGS,
-    NULL, ppc_store_tm_cvsxregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CVMX, 0, EXTENDED_REGS,
-    NULL, ppc_store_tm_cvrregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CFPR, 0, EXTENDED_REGS,
-    NULL, ppc_store_tm_cfprregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CGPR, 0, EXTENDED_REGS,
-    NULL, ppc_store_tm_cgprregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_SPR, 0, EXTENDED_REGS,
-    ppc_fill_tm_sprregset, ppc_store_tm_sprregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_EBB, 0, EXTENDED_REGS,
-    NULL, ppc_store_ebbregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_PMU, 0, EXTENDED_REGS,
-    ppc_fill_pmuregset, ppc_store_pmuregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TAR, 0, EXTENDED_REGS,
-    ppc_fill_tarregset, ppc_store_tarregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_PPR, 0, EXTENDED_REGS,
-    ppc_fill_pprregset, ppc_store_pprregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_DSCR, 0, EXTENDED_REGS,
-    ppc_fill_dscrregset, ppc_store_dscrregset },
-  { PTRACE_GETVSXREGS, PTRACE_SETVSXREGS, 0, 0, EXTENDED_REGS,
-  ppc_fill_vsxregset, ppc_store_vsxregset },
-  { PTRACE_GETVRREGS, PTRACE_SETVRREGS, 0, 0, EXTENDED_REGS,
-    ppc_fill_vrregset, ppc_store_vrregset },
-  { PTRACE_GETEVRREGS, PTRACE_SETEVRREGS, 0, 0, EXTENDED_REGS,
-    ppc_fill_evrregset, ppc_store_evrregset },
-  { 0, 0, 0, 0, GENERAL_REGS, ppc_fill_gregset, NULL },
-  NULL_REGSET
-};
-
-static struct usrregs_info ppc_usrregs_info =
-  {
-    ppc_num_regs,
-    ppc_regmap,
-  };
-
-static struct regsets_info ppc_regsets_info =
-  {
-    ppc_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &ppc_usrregs_info,
-    &ppc_regsets_info
-  };
-
-static const struct regs_info *
-ppc_regs_info (void)
-{
-  return &regs_info;
-}
-
-static void
-ppc_arch_setup (void)
-{
-  const struct target_desc *tdesc;
-  struct regset_info *regset;
-  struct ppc_linux_features features = ppc_linux_no_features;
-
-  int tid = lwpid_of (current_thread);
-
-  features.wordsize = ppc_linux_target_wordsize (tid);
-
-  if (features.wordsize == 4)
-      tdesc = tdesc_powerpc_32l;
-  else
-      tdesc = tdesc_powerpc_64l;
-
-  current_process ()->tdesc = tdesc;
-
-  /* The value of current_process ()->tdesc needs to be set for this
-     call.  */
-  ppc_hwcap = linux_get_hwcap (features.wordsize);
-  ppc_hwcap2 = linux_get_hwcap2 (features.wordsize);
-
-  features.isa205 = ppc_linux_has_isa205 (ppc_hwcap);
-
-  if (ppc_hwcap & PPC_FEATURE_HAS_VSX)
-    features.vsx = true;
-
-  if (ppc_hwcap & PPC_FEATURE_HAS_ALTIVEC)
-    features.altivec = true;
-
-  if ((ppc_hwcap2 & PPC_FEATURE2_DSCR)
-      && ppc_check_regset (tid, NT_PPC_DSCR, PPC_LINUX_SIZEOF_DSCRREGSET)
-      && ppc_check_regset (tid, NT_PPC_PPR, PPC_LINUX_SIZEOF_PPRREGSET))
-    {
-      features.ppr_dscr = true;
-      if ((ppc_hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	  && (ppc_hwcap2 & PPC_FEATURE2_TAR)
-	  && (ppc_hwcap2 & PPC_FEATURE2_EBB)
-	  && ppc_check_regset (tid, NT_PPC_TAR,
-			       PPC_LINUX_SIZEOF_TARREGSET)
-	  && ppc_check_regset (tid, NT_PPC_EBB,
-			       PPC_LINUX_SIZEOF_EBBREGSET)
-	  && ppc_check_regset (tid, NT_PPC_PMU,
-			       PPC_LINUX_SIZEOF_PMUREGSET))
-	{
-	  features.isa207 = true;
-	  if ((ppc_hwcap2 & PPC_FEATURE2_HTM)
-	      && ppc_check_regset (tid, NT_PPC_TM_SPR,
-				   PPC_LINUX_SIZEOF_TM_SPRREGSET))
-	    features.htm = true;
-	}
-    }
-
-  tdesc = ppc_linux_match_description (features);
-
-  /* On 32-bit machines, check for SPE registers.
-     Set the low target's regmap field as appropriately.  */
-#ifndef __powerpc64__
-  if (ppc_hwcap & PPC_FEATURE_HAS_SPE)
-    tdesc = tdesc_powerpc_e500l;
-
-  if (!ppc_regmap_adjusted)
-    {
-      if (ppc_hwcap & PPC_FEATURE_HAS_SPE)
-	ppc_usrregs_info.regmap = ppc_regmap_e500;
-
-      /* If the FPSCR is 64-bit wide, we need to fetch the whole
-	 64-bit slot and not just its second word.  The PT_FPSCR
-	 supplied in a 32-bit GDB compilation doesn't reflect
-	 this.  */
-      if (register_size (tdesc, 70) == 8)
-	ppc_regmap[70] = (48 + 2*32) * sizeof (long);
-
-      ppc_regmap_adjusted = 1;
-   }
-#endif
-
-  current_process ()->tdesc = tdesc;
-
-  for (regset = ppc_regsets; regset->size >= 0; regset++)
-    switch (regset->get_request)
-      {
-      case PTRACE_GETVRREGS:
-	regset->size = features.altivec ? PPC_LINUX_SIZEOF_VRREGSET : 0;
-	break;
-      case PTRACE_GETVSXREGS:
-	regset->size = features.vsx ? PPC_LINUX_SIZEOF_VSXREGSET : 0;
-	break;
-      case PTRACE_GETEVRREGS:
-	if (ppc_hwcap & PPC_FEATURE_HAS_SPE)
-	  regset->size = 32 * 4 + 8 + 4;
-	else
-	  regset->size = 0;
-	break;
-      case PTRACE_GETREGSET:
-	switch (regset->nt_type)
-	  {
-	  case NT_PPC_PPR:
-	    regset->size = (features.ppr_dscr ?
-			    PPC_LINUX_SIZEOF_PPRREGSET : 0);
-	    break;
-	  case NT_PPC_DSCR:
-	    regset->size = (features.ppr_dscr ?
-			    PPC_LINUX_SIZEOF_DSCRREGSET : 0);
-	    break;
-	  case NT_PPC_TAR:
-	    regset->size = (features.isa207 ?
-			    PPC_LINUX_SIZEOF_TARREGSET : 0);
-	    break;
-	  case NT_PPC_EBB:
-	    regset->size = (features.isa207 ?
-			    PPC_LINUX_SIZEOF_EBBREGSET : 0);
-	    break;
-	  case NT_PPC_PMU:
-	    regset->size = (features.isa207 ?
-			    PPC_LINUX_SIZEOF_PMUREGSET : 0);
-	    break;
-	  case NT_PPC_TM_SPR:
-	    regset->size = (features.htm ?
-			    PPC_LINUX_SIZEOF_TM_SPRREGSET : 0);
-	    break;
-	  case NT_PPC_TM_CGPR:
-	    if (features.wordsize == 4)
-	      regset->size = (features.htm ?
-			      PPC32_LINUX_SIZEOF_CGPRREGSET : 0);
-	    else
-	      regset->size = (features.htm ?
-			      PPC64_LINUX_SIZEOF_CGPRREGSET : 0);
-	    break;
-	  case NT_PPC_TM_CFPR:
-	    regset->size = (features.htm ?
-			    PPC_LINUX_SIZEOF_CFPRREGSET : 0);
-	    break;
-	  case NT_PPC_TM_CVMX:
-	    regset->size = (features.htm ?
-			    PPC_LINUX_SIZEOF_CVMXREGSET : 0);
-	    break;
-	  case NT_PPC_TM_CVSX:
-	    regset->size = (features.htm ?
-			    PPC_LINUX_SIZEOF_CVSXREGSET : 0);
-	    break;
-	  case NT_PPC_TM_CPPR:
-	    regset->size = (features.htm ?
-			    PPC_LINUX_SIZEOF_CPPRREGSET : 0);
-	    break;
-	  case NT_PPC_TM_CDSCR:
-	    regset->size = (features.htm ?
-			    PPC_LINUX_SIZEOF_CDSCRREGSET : 0);
-	    break;
-	  case NT_PPC_TM_CTAR:
-	    regset->size = (features.htm ?
-			    PPC_LINUX_SIZEOF_CTARREGSET : 0);
-	    break;
-	  default:
-	    break;
-	  }
-	break;
-      default:
-	break;
-      }
-}
-
-/* Implementation of linux_target_ops method "supports_tracepoints".  */
-
-static int
-ppc_supports_tracepoints (void)
-{
-  return 1;
-}
-
-/* Get the thread area address.  This is used to recognize which
-   thread is which when tracing with the in-process agent library.  We
-   don't read anything from the address, and treat it as opaque; it's
-   the address itself that we assume is unique per-thread.  */
-
-static int
-ppc_get_thread_area (int lwpid, CORE_ADDR *addr)
-{
-  struct lwp_info *lwp = find_lwp_pid (ptid_t (lwpid));
-  struct thread_info *thr = get_lwp_thread (lwp);
-  struct regcache *regcache = get_thread_regcache (thr, 1);
-  ULONGEST tp = 0;
-
-#ifdef __powerpc64__
-  if (register_size (regcache->tdesc, 0) == 8)
-    collect_register_by_name (regcache, "r13", &tp);
-  else
-#endif
-    collect_register_by_name (regcache, "r2", &tp);
-
-  *addr = tp;
-
-  return 0;
-}
-
-#ifdef __powerpc64__
-
-/* Older glibc doesn't provide this.  */
-
-#ifndef EF_PPC64_ABI
-#define EF_PPC64_ABI 3
-#endif
-
-/* Returns 1 if inferior is using ELFv2 ABI.  Undefined for 32-bit
-   inferiors.  */
-
-static int
-is_elfv2_inferior (void)
-{
-  /* To be used as fallback if we're unable to determine the right result -
-     assume inferior uses the same ABI as gdbserver.  */
-#if _CALL_ELF == 2
-  const int def_res = 1;
-#else
-  const int def_res = 0;
-#endif
-  CORE_ADDR phdr;
-  Elf64_Ehdr ehdr;
-
-  const struct target_desc *tdesc = current_process ()->tdesc;
-  int wordsize = register_size (tdesc, 0);
-
-  if (!linux_get_auxv (wordsize, AT_PHDR, &phdr))
-    return def_res;
-
-  /* Assume ELF header is at the beginning of the page where program headers
-     are located.  If it doesn't look like one, bail.  */
-
-  read_inferior_memory (phdr & ~0xfff, (unsigned char *) &ehdr, sizeof ehdr);
-  if (memcmp(ehdr.e_ident, ELFMAG, SELFMAG))
-    return def_res;
-
-  return (ehdr.e_flags & EF_PPC64_ABI) == 2;
-}
-
-#endif
-
-/* Generate a ds-form instruction in BUF and return the number of bytes written
-
-   0      6     11   16          30 32
-   | OPCD | RST | RA |     DS    |XO|  */
-
-__attribute__((unused)) /* Maybe unused due to conditional compilation.  */
-static int
-gen_ds_form (uint32_t *buf, int opcd, int rst, int ra, int ds, int xo)
-{
-  uint32_t insn;
-
-  gdb_assert ((opcd & ~0x3f) == 0);
-  gdb_assert ((rst & ~0x1f) == 0);
-  gdb_assert ((ra & ~0x1f) == 0);
-  gdb_assert ((xo & ~0x3) == 0);
-
-  insn = (rst << 21) | (ra << 16) | (ds & 0xfffc) | (xo & 0x3);
-  *buf = (opcd << 26) | insn;
-  return 1;
-}
-
-/* Followings are frequently used ds-form instructions.  */
-
-#define GEN_STD(buf, rs, ra, offset)	gen_ds_form (buf, 62, rs, ra, offset, 0)
-#define GEN_STDU(buf, rs, ra, offset)	gen_ds_form (buf, 62, rs, ra, offset, 1)
-#define GEN_LD(buf, rt, ra, offset)	gen_ds_form (buf, 58, rt, ra, offset, 0)
-#define GEN_LDU(buf, rt, ra, offset)	gen_ds_form (buf, 58, rt, ra, offset, 1)
-
-/* Generate a d-form instruction in BUF.
-
-   0      6     11   16             32
-   | OPCD | RST | RA |       D      |  */
-
-static int
-gen_d_form (uint32_t *buf, int opcd, int rst, int ra, int si)
-{
-  uint32_t insn;
-
-  gdb_assert ((opcd & ~0x3f) == 0);
-  gdb_assert ((rst & ~0x1f) == 0);
-  gdb_assert ((ra & ~0x1f) == 0);
-
-  insn = (rst << 21) | (ra << 16) | (si & 0xffff);
-  *buf = (opcd << 26) | insn;
-  return 1;
-}
-
-/* Followings are frequently used d-form instructions.  */
-
-#define GEN_ADDI(buf, rt, ra, si)	gen_d_form (buf, 14, rt, ra, si)
-#define GEN_ADDIS(buf, rt, ra, si)	gen_d_form (buf, 15, rt, ra, si)
-#define GEN_LI(buf, rt, si)		GEN_ADDI (buf, rt, 0, si)
-#define GEN_LIS(buf, rt, si)		GEN_ADDIS (buf, rt, 0, si)
-#define GEN_ORI(buf, rt, ra, si)	gen_d_form (buf, 24, rt, ra, si)
-#define GEN_ORIS(buf, rt, ra, si)	gen_d_form (buf, 25, rt, ra, si)
-#define GEN_LWZ(buf, rt, ra, si)	gen_d_form (buf, 32, rt, ra, si)
-#define GEN_STW(buf, rt, ra, si)	gen_d_form (buf, 36, rt, ra, si)
-#define GEN_STWU(buf, rt, ra, si)	gen_d_form (buf, 37, rt, ra, si)
-
-/* Generate a xfx-form instruction in BUF and return the number of bytes
-   written.
-
-   0      6     11         21        31 32
-   | OPCD | RST |    RI    |    XO   |/|  */
-
-static int
-gen_xfx_form (uint32_t *buf, int opcd, int rst, int ri, int xo)
-{
-  uint32_t insn;
-  unsigned int n = ((ri & 0x1f) << 5) | ((ri >> 5) & 0x1f);
-
-  gdb_assert ((opcd & ~0x3f) == 0);
-  gdb_assert ((rst & ~0x1f) == 0);
-  gdb_assert ((xo & ~0x3ff) == 0);
-
-  insn = (rst << 21) | (n << 11) | (xo << 1);
-  *buf = (opcd << 26) | insn;
-  return 1;
-}
-
-/* Followings are frequently used xfx-form instructions.  */
-
-#define GEN_MFSPR(buf, rt, spr)		gen_xfx_form (buf, 31, rt, spr, 339)
-#define GEN_MTSPR(buf, rt, spr)		gen_xfx_form (buf, 31, rt, spr, 467)
-#define GEN_MFCR(buf, rt)		gen_xfx_form (buf, 31, rt, 0, 19)
-#define GEN_MTCR(buf, rt)		gen_xfx_form (buf, 31, rt, 0x3cf, 144)
-#define GEN_SYNC(buf, L, E)             gen_xfx_form (buf, 31, L & 0x3, \
-						      E & 0xf, 598)
-#define GEN_LWSYNC(buf)			GEN_SYNC (buf, 1, 0)
-
-
-/* Generate a x-form instruction in BUF and return the number of bytes written.
-
-   0      6     11   16   21       31 32
-   | OPCD | RST | RA | RB |   XO   |RC|  */
-
-static int
-gen_x_form (uint32_t *buf, int opcd, int rst, int ra, int rb, int xo, int rc)
-{
-  uint32_t insn;
-
-  gdb_assert ((opcd & ~0x3f) == 0);
-  gdb_assert ((rst & ~0x1f) == 0);
-  gdb_assert ((ra & ~0x1f) == 0);
-  gdb_assert ((rb & ~0x1f) == 0);
-  gdb_assert ((xo & ~0x3ff) == 0);
-  gdb_assert ((rc & ~1) == 0);
-
-  insn = (rst << 21) | (ra << 16) | (rb << 11) | (xo << 1) | rc;
-  *buf = (opcd << 26) | insn;
-  return 1;
-}
-
-/* Followings are frequently used x-form instructions.  */
-
-#define GEN_OR(buf, ra, rs, rb)		gen_x_form (buf, 31, rs, ra, rb, 444, 0)
-#define GEN_MR(buf, ra, rs)		GEN_OR (buf, ra, rs, rs)
-#define GEN_LWARX(buf, rt, ra, rb)	gen_x_form (buf, 31, rt, ra, rb, 20, 0)
-#define GEN_STWCX(buf, rs, ra, rb)	gen_x_form (buf, 31, rs, ra, rb, 150, 1)
-/* Assume bf = cr7.  */
-#define GEN_CMPW(buf, ra, rb)		gen_x_form (buf, 31, 28, ra, rb, 0, 0)
-
-
-/* Generate a md-form instruction in BUF and return the number of bytes written.
-
-   0      6    11   16   21   27   30 31 32
-   | OPCD | RS | RA | sh | mb | XO |sh|Rc|  */
-
-static int
-gen_md_form (uint32_t *buf, int opcd, int rs, int ra, int sh, int mb,
-	     int xo, int rc)
-{
-  uint32_t insn;
-  unsigned int n = ((mb & 0x1f) << 1) | ((mb >> 5) & 0x1);
-  unsigned int sh0_4 = sh & 0x1f;
-  unsigned int sh5 = (sh >> 5) & 1;
-
-  gdb_assert ((opcd & ~0x3f) == 0);
-  gdb_assert ((rs & ~0x1f) == 0);
-  gdb_assert ((ra & ~0x1f) == 0);
-  gdb_assert ((sh & ~0x3f) == 0);
-  gdb_assert ((mb & ~0x3f) == 0);
-  gdb_assert ((xo & ~0x7) == 0);
-  gdb_assert ((rc & ~0x1) == 0);
-
-  insn = (rs << 21) | (ra << 16) | (sh0_4 << 11) | (n << 5)
-	 | (sh5 << 1) | (xo << 2) | (rc & 1);
-  *buf = (opcd << 26) | insn;
-  return 1;
-}
-
-/* The following are frequently used md-form instructions.  */
-
-#define GEN_RLDICL(buf, ra, rs ,sh, mb) \
-				gen_md_form (buf, 30, rs, ra, sh, mb, 0, 0)
-#define GEN_RLDICR(buf, ra, rs ,sh, mb) \
-				gen_md_form (buf, 30, rs, ra, sh, mb, 1, 0)
-
-/* Generate a i-form instruction in BUF and return the number of bytes written.
-
-   0      6                          30 31 32
-   | OPCD |            LI            |AA|LK|  */
-
-static int
-gen_i_form (uint32_t *buf, int opcd, int li, int aa, int lk)
-{
-  uint32_t insn;
-
-  gdb_assert ((opcd & ~0x3f) == 0);
-
-  insn = (li & 0x3fffffc) | (aa & 1) | (lk & 1);
-  *buf = (opcd << 26) | insn;
-  return 1;
-}
-
-/* The following are frequently used i-form instructions.  */
-
-#define GEN_B(buf, li)		gen_i_form (buf, 18, li, 0, 0)
-#define GEN_BL(buf, li)		gen_i_form (buf, 18, li, 0, 1)
-
-/* Generate a b-form instruction in BUF and return the number of bytes written.
-
-   0      6    11   16               30 31 32
-   | OPCD | BO | BI |      BD        |AA|LK|  */
-
-static int
-gen_b_form (uint32_t *buf, int opcd, int bo, int bi, int bd,
-	    int aa, int lk)
-{
-  uint32_t insn;
-
-  gdb_assert ((opcd & ~0x3f) == 0);
-  gdb_assert ((bo & ~0x1f) == 0);
-  gdb_assert ((bi & ~0x1f) == 0);
-
-  insn = (bo << 21) | (bi << 16) | (bd & 0xfffc) | (aa & 1) | (lk & 1);
-  *buf = (opcd << 26) | insn;
-  return 1;
-}
-
-/* The following are frequently used b-form instructions.  */
-/* Assume bi = cr7.  */
-#define GEN_BNE(buf, bd)  gen_b_form (buf, 16, 0x4, (7 << 2) | 2, bd, 0 ,0)
-
-/* GEN_LOAD and GEN_STORE generate 64- or 32-bit load/store for ppc64 or ppc32
-   respectively.  They are primary used for save/restore GPRs in jump-pad,
-   not used for bytecode compiling.  */
-
-#ifdef __powerpc64__
-#define GEN_LOAD(buf, rt, ra, si, is_64)	(is_64 ? \
-						 GEN_LD (buf, rt, ra, si) : \
-						 GEN_LWZ (buf, rt, ra, si))
-#define GEN_STORE(buf, rt, ra, si, is_64)	(is_64 ? \
-						 GEN_STD (buf, rt, ra, si) : \
-						 GEN_STW (buf, rt, ra, si))
-#else
-#define GEN_LOAD(buf, rt, ra, si, is_64)	GEN_LWZ (buf, rt, ra, si)
-#define GEN_STORE(buf, rt, ra, si, is_64)	GEN_STW (buf, rt, ra, si)
-#endif
-
-/* Generate a sequence of instructions to load IMM in the register REG.
-   Write the instructions in BUF and return the number of bytes written.  */
-
-static int
-gen_limm (uint32_t *buf, int reg, uint64_t imm, int is_64)
-{
-  uint32_t *p = buf;
-
-  if ((imm + 32768) < 65536)
-    {
-      /* li	reg, imm[15:0] */
-      p += GEN_LI (p, reg, imm);
-    }
-  else if ((imm >> 32) == 0)
-    {
-      /* lis	reg, imm[31:16]
-	 ori	reg, reg, imm[15:0]
-	 rldicl reg, reg, 0, 32 */
-      p += GEN_LIS (p, reg, (imm >> 16) & 0xffff);
-      if ((imm & 0xffff) != 0)
-	p += GEN_ORI (p, reg, reg, imm & 0xffff);
-      /* Clear upper 32-bit if sign-bit is set.  */
-      if (imm & (1u << 31) && is_64)
-	p += GEN_RLDICL (p, reg, reg, 0, 32);
-    }
-  else
-    {
-      gdb_assert (is_64);
-      /* lis    reg, <imm[63:48]>
-	 ori    reg, reg, <imm[48:32]>
-	 rldicr reg, reg, 32, 31
-	 oris   reg, reg, <imm[31:16]>
-	 ori    reg, reg, <imm[15:0]> */
-      p += GEN_LIS (p, reg, ((imm >> 48) & 0xffff));
-      if (((imm >> 32) & 0xffff) != 0)
-        p += GEN_ORI (p, reg, reg, ((imm >> 32) & 0xffff));
-      p += GEN_RLDICR (p, reg, reg, 32, 31);
-      if (((imm >> 16) & 0xffff) != 0)
-        p += GEN_ORIS (p, reg, reg, ((imm >> 16) & 0xffff));
-      if ((imm & 0xffff) != 0)
-        p += GEN_ORI (p, reg, reg, (imm & 0xffff));
-    }
-
-  return p - buf;
-}
-
-/* Generate a sequence for atomically exchange at location LOCK.
-   This code sequence clobbers r6, r7, r8.  LOCK is the location for
-   the atomic-xchg, OLD_VALUE is expected old value stored in the
-   location, and R_NEW is a register for the new value.  */
-
-static int
-gen_atomic_xchg (uint32_t *buf, CORE_ADDR lock, int old_value, int r_new,
-		 int is_64)
-{
-  const int r_lock = 6;
-  const int r_old = 7;
-  const int r_tmp = 8;
-  uint32_t *p = buf;
-
-  /*
-  1: lwarx   TMP, 0, LOCK
-     cmpwi   TMP, OLD
-     bne     1b
-     stwcx.  NEW, 0, LOCK
-     bne     1b */
-
-  p += gen_limm (p, r_lock, lock, is_64);
-  p += gen_limm (p, r_old, old_value, is_64);
-
-  p += GEN_LWARX (p, r_tmp, 0, r_lock);
-  p += GEN_CMPW (p, r_tmp, r_old);
-  p += GEN_BNE (p, -8);
-  p += GEN_STWCX (p, r_new, 0, r_lock);
-  p += GEN_BNE (p, -16);
-
-  return p - buf;
-}
-
-/* Generate a sequence of instructions for calling a function
-   at address of FN.  Return the number of bytes are written in BUF.  */
-
-static int
-gen_call (uint32_t *buf, CORE_ADDR fn, int is_64, int is_opd)
-{
-  uint32_t *p = buf;
-
-  /* Must be called by r12 for caller to calculate TOC address. */
-  p += gen_limm (p, 12, fn, is_64);
-  if (is_opd)
-    {
-      p += GEN_LOAD (p, 11, 12, 16, is_64);
-      p += GEN_LOAD (p, 2, 12, 8, is_64);
-      p += GEN_LOAD (p, 12, 12, 0, is_64);
-    }
-  p += GEN_MTSPR (p, 12, 9);		/* mtctr  r12 */
-  *p++ = 0x4e800421;			/* bctrl */
-
-  return p - buf;
-}
-
-/* Copy the instruction from OLDLOC to *TO, and update *TO to *TO + size
-   of instruction.  This function is used to adjust pc-relative instructions
-   when copying.  */
-
-static void
-ppc_relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc)
-{
-  uint32_t insn, op6;
-  long rel, newrel;
-
-  read_inferior_memory (oldloc, (unsigned char *) &insn, 4);
-  op6 = PPC_OP6 (insn);
-
-  if (op6 == 18 && (insn & 2) == 0)
-    {
-      /* branch && AA = 0 */
-      rel = PPC_LI (insn);
-      newrel = (oldloc - *to) + rel;
-
-      /* Out of range. Cannot relocate instruction.  */
-      if (newrel >= (1 << 25) || newrel < -(1 << 25))
-	return;
-
-      insn = (insn & ~0x3fffffc) | (newrel & 0x3fffffc);
-    }
-  else if (op6 == 16 && (insn & 2) == 0)
-    {
-      /* conditional branch && AA = 0 */
-
-      /* If the new relocation is too big for even a 26-bit unconditional
-	 branch, there is nothing we can do.  Just abort.
-
-	 Otherwise, if it can be fit in 16-bit conditional branch, just
-	 copy the instruction and relocate the address.
-
-	 If the it's  big for conditional-branch (16-bit), try to invert the
-	 condition and jump with 26-bit branch.  For example,
-
-	 beq  .Lgoto
-	 INSN1
-
-	 =>
-
-	 bne  1f (+8)
-	 b    .Lgoto
-       1:INSN1
-
-	 After this transform, we are actually jump from *TO+4 instead of *TO,
-	 so check the relocation again because it will be 1-insn farther then
-	 before if *TO is after OLDLOC.
-
-
-	 For BDNZT (or so) is transformed from
-
-	 bdnzt  eq, .Lgoto
-	 INSN1
-
-	 =>
-
-	 bdz    1f (+12)
-	 bf     eq, 1f (+8)
-	 b      .Lgoto
-       1:INSN1
-
-	 See also "BO field encodings".  */
-
-      rel = PPC_BD (insn);
-      newrel = (oldloc - *to) + rel;
-
-      if (newrel < (1 << 15) && newrel >= -(1 << 15))
-	insn = (insn & ~0xfffc) | (newrel & 0xfffc);
-      else if ((PPC_BO (insn) & 0x14) == 0x4 || (PPC_BO (insn) & 0x14) == 0x10)
-	{
-	  newrel -= 4;
-
-	  /* Out of range. Cannot relocate instruction.  */
-	  if (newrel >= (1 << 25) || newrel < -(1 << 25))
-	    return;
-
-	  if ((PPC_BO (insn) & 0x14) == 0x4)
-	    insn ^= (1 << 24);
-	  else if ((PPC_BO (insn) & 0x14) == 0x10)
-	    insn ^= (1 << 22);
-
-	  /* Jump over the unconditional branch.  */
-	  insn = (insn & ~0xfffc) | 0x8;
-	  target_write_memory (*to, (unsigned char *) &insn, 4);
-	  *to += 4;
-
-	  /* Build a unconditional branch and copy LK bit.  */
-	  insn = (18 << 26) | (0x3fffffc & newrel) | (insn & 0x3);
-	  target_write_memory (*to, (unsigned char *) &insn, 4);
-	  *to += 4;
-
-	  return;
-	}
-      else if ((PPC_BO (insn) & 0x14) == 0)
-	{
-	  uint32_t bdnz_insn = (16 << 26) | (0x10 << 21) | 12;
-	  uint32_t bf_insn = (16 << 26) | (0x4 << 21) | 8;
-
-	  newrel -= 8;
-
-	  /* Out of range. Cannot relocate instruction.  */
-	  if (newrel >= (1 << 25) || newrel < -(1 << 25))
-	    return;
-
-	  /* Copy BI field.  */
-	  bf_insn |= (insn & 0x1f0000);
-
-	  /* Invert condition.  */
-	  bdnz_insn |= (insn ^ (1 << 22)) & (1 << 22);
-	  bf_insn |= (insn ^ (1 << 24)) & (1 << 24);
-
-	  target_write_memory (*to, (unsigned char *) &bdnz_insn, 4);
-	  *to += 4;
-	  target_write_memory (*to, (unsigned char *) &bf_insn, 4);
-	  *to += 4;
-
-	  /* Build a unconditional branch and copy LK bit.  */
-	  insn = (18 << 26) | (0x3fffffc & newrel) | (insn & 0x3);
-	  target_write_memory (*to, (unsigned char *) &insn, 4);
-	  *to += 4;
-
-	  return;
-	}
-      else /* (BO & 0x14) == 0x14, branch always.  */
-	{
-	  /* Out of range. Cannot relocate instruction.  */
-	  if (newrel >= (1 << 25) || newrel < -(1 << 25))
-	    return;
-
-	  /* Build a unconditional branch and copy LK bit.  */
-	  insn = (18 << 26) | (0x3fffffc & newrel) | (insn & 0x3);
-	  target_write_memory (*to, (unsigned char *) &insn, 4);
-	  *to += 4;
-
-	  return;
-	}
-    }
-
-  target_write_memory (*to, (unsigned char *) &insn, 4);
-  *to += 4;
-}
-
-/* Implement install_fast_tracepoint_jump_pad of target_ops.
-   See target.h for details.  */
-
-static int
-ppc_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint, CORE_ADDR tpaddr,
-				      CORE_ADDR collector,
-				      CORE_ADDR lockaddr,
-				      ULONGEST orig_size,
-				      CORE_ADDR *jump_entry,
-				      CORE_ADDR *trampoline,
-				      ULONGEST *trampoline_size,
-				      unsigned char *jjump_pad_insn,
-				      ULONGEST *jjump_pad_insn_size,
-				      CORE_ADDR *adjusted_insn_addr,
-				      CORE_ADDR *adjusted_insn_addr_end,
-				      char *err)
-{
-  uint32_t buf[256];
-  uint32_t *p = buf;
-  int j, offset;
-  CORE_ADDR buildaddr = *jump_entry;
-  const CORE_ADDR entryaddr = *jump_entry;
-  int rsz, min_frame, frame_size, tp_reg;
-#ifdef __powerpc64__
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-  int is_64 = register_size (regcache->tdesc, 0) == 8;
-  int is_opd = is_64 && !is_elfv2_inferior ();
-#else
-  int is_64 = 0, is_opd = 0;
-#endif
-
-#ifdef __powerpc64__
-  if (is_64)
-    {
-      /* Minimum frame size is 32 bytes for ELFv2, and 112 bytes for ELFv1.  */
-      rsz = 8;
-      min_frame = 112;
-      frame_size = (40 * rsz) + min_frame;
-      tp_reg = 13;
-    }
-  else
-    {
-#endif
-      rsz = 4;
-      min_frame = 16;
-      frame_size = (40 * rsz) + min_frame;
-      tp_reg = 2;
-#ifdef __powerpc64__
-    }
-#endif
-
-  /* Stack frame layout for this jump pad,
-
-     High	thread_area (r13/r2)    |
-		tpoint			- collecting_t obj
-		PC/<tpaddr>		| +36
-		CTR			| +35
-		LR			| +34
-		XER			| +33
-		CR			| +32
-		R31			|
-		R29			|
-		...			|
-		R1			| +1
-		R0			- collected registers
-		...			|
-		...			|
-     Low	Back-chain		-
-
-
-     The code flow of this jump pad,
-
-     1. Adjust SP
-     2. Save GPR and SPR
-     3. Prepare argument
-     4. Call gdb_collector
-     5. Restore GPR and SPR
-     6. Restore SP
-     7. Build a jump for back to the program
-     8. Copy/relocate original instruction
-     9. Build a jump for replacing original instruction.  */
-
-  /* Adjust stack pointer.  */
-  if (is_64)
-    p += GEN_STDU (p, 1, 1, -frame_size);		/* stdu   r1,-frame_size(r1) */
-  else
-    p += GEN_STWU (p, 1, 1, -frame_size);		/* stwu   r1,-frame_size(r1) */
-
-  /* Store GPRs.  Save R1 later, because it had just been modified, but
-     we want the original value.  */
-  for (j = 2; j < 32; j++)
-    p += GEN_STORE (p, j, 1, min_frame + j * rsz, is_64);
-  p += GEN_STORE (p, 0, 1, min_frame + 0 * rsz, is_64);
-  /* Set r0 to the original value of r1 before adjusting stack frame,
-     and then save it.  */
-  p += GEN_ADDI (p, 0, 1, frame_size);
-  p += GEN_STORE (p, 0, 1, min_frame + 1 * rsz, is_64);
-
-  /* Save CR, XER, LR, and CTR.  */
-  p += GEN_MFCR (p, 3);					/* mfcr   r3 */
-  p += GEN_MFSPR (p, 4, 1);				/* mfxer  r4 */
-  p += GEN_MFSPR (p, 5, 8);				/* mflr   r5 */
-  p += GEN_MFSPR (p, 6, 9);				/* mfctr  r6 */
-  p += GEN_STORE (p, 3, 1, min_frame + 32 * rsz, is_64);/* std    r3, 32(r1) */
-  p += GEN_STORE (p, 4, 1, min_frame + 33 * rsz, is_64);/* std    r4, 33(r1) */
-  p += GEN_STORE (p, 5, 1, min_frame + 34 * rsz, is_64);/* std    r5, 34(r1) */
-  p += GEN_STORE (p, 6, 1, min_frame + 35 * rsz, is_64);/* std    r6, 35(r1) */
-
-  /* Save PC<tpaddr>  */
-  p += gen_limm (p, 3, tpaddr, is_64);
-  p += GEN_STORE (p, 3, 1, min_frame + 36 * rsz, is_64);
-
-
-  /* Setup arguments to collector.  */
-  /* Set r4 to collected registers.  */
-  p += GEN_ADDI (p, 4, 1, min_frame);
-  /* Set r3 to TPOINT.  */
-  p += gen_limm (p, 3, tpoint, is_64);
-
-  /* Prepare collecting_t object for lock.  */
-  p += GEN_STORE (p, 3, 1, min_frame + 37 * rsz, is_64);
-  p += GEN_STORE (p, tp_reg, 1, min_frame + 38 * rsz, is_64);
-  /* Set R5 to collecting object.  */
-  p += GEN_ADDI (p, 5, 1, 37 * rsz);
-
-  p += GEN_LWSYNC (p);
-  p += gen_atomic_xchg (p, lockaddr, 0, 5, is_64);
-  p += GEN_LWSYNC (p);
-
-  /* Call to collector.  */
-  p += gen_call (p, collector, is_64, is_opd);
-
-  /* Simply write 0 to release the lock.  */
-  p += gen_limm (p, 3, lockaddr, is_64);
-  p += gen_limm (p, 4, 0, is_64);
-  p += GEN_LWSYNC (p);
-  p += GEN_STORE (p, 4, 3, 0, is_64);
-
-  /* Restore stack and registers.  */
-  p += GEN_LOAD (p, 3, 1, min_frame + 32 * rsz, is_64);	/* ld	r3, 32(r1) */
-  p += GEN_LOAD (p, 4, 1, min_frame + 33 * rsz, is_64);	/* ld	r4, 33(r1) */
-  p += GEN_LOAD (p, 5, 1, min_frame + 34 * rsz, is_64);	/* ld	r5, 34(r1) */
-  p += GEN_LOAD (p, 6, 1, min_frame + 35 * rsz, is_64);	/* ld	r6, 35(r1) */
-  p += GEN_MTCR (p, 3);					/* mtcr	  r3 */
-  p += GEN_MTSPR (p, 4, 1);				/* mtxer  r4 */
-  p += GEN_MTSPR (p, 5, 8);				/* mtlr   r5 */
-  p += GEN_MTSPR (p, 6, 9);				/* mtctr  r6 */
-
-  /* Restore GPRs.  */
-  for (j = 2; j < 32; j++)
-    p += GEN_LOAD (p, j, 1, min_frame + j * rsz, is_64);
-  p += GEN_LOAD (p, 0, 1, min_frame + 0 * rsz, is_64);
-  /* Restore SP.  */
-  p += GEN_ADDI (p, 1, 1, frame_size);
-
-  /* Flush instructions to inferior memory.  */
-  target_write_memory (buildaddr, (unsigned char *) buf, (p - buf) * 4);
-
-  /* Now, insert the original instruction to execute in the jump pad.  */
-  *adjusted_insn_addr = buildaddr + (p - buf) * 4;
-  *adjusted_insn_addr_end = *adjusted_insn_addr;
-  ppc_relocate_instruction (adjusted_insn_addr_end, tpaddr);
-
-  /* Verify the relocation size.  If should be 4 for normal copy,
-     8 or 12 for some conditional branch.  */
-  if ((*adjusted_insn_addr_end - *adjusted_insn_addr == 0)
-      || (*adjusted_insn_addr_end - *adjusted_insn_addr > 12))
-    {
-      sprintf (err, "E.Unexpected instruction length = %d"
-		    "when relocate instruction.",
-		    (int) (*adjusted_insn_addr_end - *adjusted_insn_addr));
-      return 1;
-    }
-
-  buildaddr = *adjusted_insn_addr_end;
-  p = buf;
-  /* Finally, write a jump back to the program.  */
-  offset = (tpaddr + 4) - buildaddr;
-  if (offset >= (1 << 25) || offset < -(1 << 25))
-    {
-      sprintf (err, "E.Jump back from jump pad too far from tracepoint "
-		    "(offset 0x%x > 26-bit).", offset);
-      return 1;
-    }
-  /* b <tpaddr+4> */
-  p += GEN_B (p, offset);
-  target_write_memory (buildaddr, (unsigned char *) buf, (p - buf) * 4);
-  *jump_entry = buildaddr + (p - buf) * 4;
-
-  /* The jump pad is now built.  Wire in a jump to our jump pad.  This
-     is always done last (by our caller actually), so that we can
-     install fast tracepoints with threads running.  This relies on
-     the agent's atomic write support.  */
-  offset = entryaddr - tpaddr;
-  if (offset >= (1 << 25) || offset < -(1 << 25))
-    {
-      sprintf (err, "E.Jump back from jump pad too far from tracepoint "
-		    "(offset 0x%x > 26-bit).", offset);
-      return 1;
-    }
-  /* b <jentry> */
-  GEN_B ((uint32_t *) jjump_pad_insn, offset);
-  *jjump_pad_insn_size = 4;
-
-  return 0;
-}
-
-/* Returns the minimum instruction length for installing a tracepoint.  */
-
-static int
-ppc_get_min_fast_tracepoint_insn_len (void)
-{
-  return 4;
-}
-
-/* Emits a given buffer into the target at current_insn_ptr.  Length
-   is in units of 32-bit words.  */
-
-static void
-emit_insns (uint32_t *buf, int n)
-{
-  n = n * sizeof (uint32_t);
-  target_write_memory (current_insn_ptr, (unsigned char *) buf, n);
-  current_insn_ptr += n;
-}
-
-#define __EMIT_ASM(NAME, INSNS)					\
-  do								\
-    {								\
-      extern uint32_t start_bcax_ ## NAME [];			\
-      extern uint32_t end_bcax_ ## NAME [];			\
-      emit_insns (start_bcax_ ## NAME,				\
-		  end_bcax_ ## NAME - start_bcax_ ## NAME);	\
-      __asm__ (".section .text.__ppcbcax\n\t"			\
-	       "start_bcax_" #NAME ":\n\t"			\
-	       INSNS "\n\t"					\
-	       "end_bcax_" #NAME ":\n\t"			\
-	       ".previous\n\t");				\
-    } while (0)
-
-#define _EMIT_ASM(NAME, INSNS)		__EMIT_ASM (NAME, INSNS)
-#define EMIT_ASM(INSNS)			_EMIT_ASM (__LINE__, INSNS)
-
-/*
-
-  Bytecode execution stack frame - 32-bit
-
-	|  LR save area           (SP + 4)
- SP' -> +- Back chain             (SP + 0)
-	|  Save r31   for access saved arguments
-	|  Save r30   for bytecode stack pointer
-	|  Save r4    for incoming argument *value
-	|  Save r3    for incoming argument regs
- r30 -> +- Bytecode execution stack
-	|
-	|  64-byte (8 doublewords) at initial.
-	|  Expand stack as needed.
-	|
-	+-
-        |  Some padding for minimum stack frame and 16-byte alignment.
-        |  16 bytes.
- SP     +- Back-chain (SP')
-
-  initial frame size
-  = 16 + (4 * 4) + 64
-  = 96
-
-   r30 is the stack-pointer for bytecode machine.
-       It should point to next-empty, so we can use LDU for pop.
-   r3  is used for cache of the high part of TOP value.
-       It was the first argument, pointer to regs.
-   r4  is used for cache of the low part of TOP value.
-       It was the second argument, pointer to the result.
-       We should set *result = TOP after leaving this function.
-
- Note:
- * To restore stack at epilogue
-   => sp = r31
- * To check stack is big enough for bytecode execution.
-   => r30 - 8 > SP + 8
- * To return execution result.
-   => 0(r4) = TOP
-
- */
-
-/* Regardless of endian, register 3 is always high part, 4 is low part.
-   These defines are used when the register pair is stored/loaded.
-   Likewise, to simplify code, have a similiar define for 5:6. */
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define TOP_FIRST	"4"
-#define TOP_SECOND	"3"
-#define TMP_FIRST	"6"
-#define TMP_SECOND	"5"
-#else
-#define TOP_FIRST	"3"
-#define TOP_SECOND	"4"
-#define TMP_FIRST	"5"
-#define TMP_SECOND	"6"
-#endif
-
-/* Emit prologue in inferior memory.  See above comments.  */
-
-static void
-ppc_emit_prologue (void)
-{
-  EMIT_ASM (/* Save return address.  */
-	    "mflr  0		\n"
-	    "stw   0, 4(1)	\n"
-	    /* Adjust SP.  96 is the initial frame size.  */
-	    "stwu  1, -96(1)	\n"
-	    /* Save r30 and incoming arguments.  */
-	    "stw   31, 96-4(1)	\n"
-	    "stw   30, 96-8(1)	\n"
-	    "stw   4, 96-12(1)	\n"
-	    "stw   3, 96-16(1)	\n"
-	    /* Point r31 to original r1 for access arguments.  */
-	    "addi  31, 1, 96	\n"
-	    /* Set r30 to pointing stack-top.  */
-	    "addi  30, 1, 64	\n"
-	    /* Initial r3/TOP to 0.  */
-	    "li    3, 0		\n"
-	    "li    4, 0		\n");
-}
-
-/* Emit epilogue in inferior memory.  See above comments.  */
-
-static void
-ppc_emit_epilogue (void)
-{
-  EMIT_ASM (/* *result = TOP */
-	    "lwz   5, -12(31)	\n"
-	    "stw   " TOP_FIRST ", 0(5)	\n"
-	    "stw   " TOP_SECOND ", 4(5)	\n"
-	    /* Restore registers.  */
-	    "lwz   31, -4(31)	\n"
-	    "lwz   30, -8(31)	\n"
-	    /* Restore SP.  */
-	    "lwz   1, 0(1)      \n"
-	    /* Restore LR.  */
-	    "lwz   0, 4(1)	\n"
-	    /* Return 0 for no-error.  */
-	    "li    3, 0		\n"
-	    "mtlr  0		\n"
-	    "blr		\n");
-}
-
-/* TOP = stack[--sp] + TOP  */
-
-static void
-ppc_emit_add (void)
-{
-  EMIT_ASM ("lwzu  " TMP_FIRST ", 8(30)	\n"
-	    "lwz   " TMP_SECOND ", 4(30)\n"
-	    "addc  4, 6, 4	\n"
-	    "adde  3, 5, 3	\n");
-}
-
-/* TOP = stack[--sp] - TOP  */
-
-static void
-ppc_emit_sub (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "subfc  4, 4, 6	\n"
-	    "subfe  3, 3, 5	\n");
-}
-
-/* TOP = stack[--sp] * TOP  */
-
-static void
-ppc_emit_mul (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "mulhwu 7, 6, 4	\n"
-	    "mullw  3, 6, 3	\n"
-	    "mullw  5, 4, 5	\n"
-	    "mullw  4, 6, 4	\n"
-	    "add    3, 5, 3	\n"
-	    "add    3, 7, 3	\n");
-}
-
-/* TOP = stack[--sp] << TOP  */
-
-static void
-ppc_emit_lsh (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "subfic 3, 4, 32\n"		/* r3 = 32 - TOP */
-	    "addi   7, 4, -32\n"	/* r7 = TOP - 32 */
-	    "slw    5, 5, 4\n"		/* Shift high part left */
-	    "slw    4, 6, 4\n"		/* Shift low part left */
-	    "srw    3, 6, 3\n"		/* Shift low to high if shift < 32 */
-	    "slw    7, 6, 7\n"		/* Shift low to high if shift >= 32 */
-	    "or     3, 5, 3\n"
-	    "or     3, 7, 3\n");	/* Assemble high part */
-}
-
-/* Top = stack[--sp] >> TOP
-   (Arithmetic shift right)  */
-
-static void
-ppc_emit_rsh_signed (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "addi   7, 4, -32\n"	/* r7 = TOP - 32 */
-	    "sraw   3, 5, 4\n"		/* Shift high part right */
-	    "cmpwi  7, 1\n"
-	    "blt    0, 1f\n"		/* If shift <= 32, goto 1: */
-	    "sraw   4, 5, 7\n"		/* Shift high to low */
-	    "b      2f\n"
-	    "1:\n"
-	    "subfic 7, 4, 32\n"		/* r7 = 32 - TOP */
-	    "srw    4, 6, 4\n"		/* Shift low part right */
-	    "slw    5, 5, 7\n"		/* Shift high to low */
-	    "or     4, 4, 5\n"		/* Assemble low part */
-	    "2:\n");
-}
-
-/* Top = stack[--sp] >> TOP
-   (Logical shift right)  */
-
-static void
-ppc_emit_rsh_unsigned (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "subfic 3, 4, 32\n"		/* r3 = 32 - TOP */
-	    "addi   7, 4, -32\n"	/* r7 = TOP - 32 */
-	    "srw    6, 6, 4\n"		/* Shift low part right */
-	    "slw    3, 5, 3\n"		/* Shift high to low if shift < 32 */
-	    "srw    7, 5, 7\n"		/* Shift high to low if shift >= 32 */
-	    "or     6, 6, 3\n"
-	    "srw    3, 5, 4\n"		/* Shift high part right */
-	    "or     4, 6, 7\n");	/* Assemble low part */
-}
-
-/* Emit code for signed-extension specified by ARG.  */
-
-static void
-ppc_emit_ext (int arg)
-{
-  switch (arg)
-    {
-    case 8:
-      EMIT_ASM ("extsb  4, 4\n"
-		"srawi 3, 4, 31");
-      break;
-    case 16:
-      EMIT_ASM ("extsh  4, 4\n"
-		"srawi 3, 4, 31");
-      break;
-    case 32:
-      EMIT_ASM ("srawi 3, 4, 31");
-      break;
-    default:
-      emit_error = 1;
-    }
-}
-
-/* Emit code for zero-extension specified by ARG.  */
-
-static void
-ppc_emit_zero_ext (int arg)
-{
-  switch (arg)
-    {
-    case 8:
-      EMIT_ASM ("clrlwi 4,4,24\n"
-		"li 3, 0\n");
-      break;
-    case 16:
-      EMIT_ASM ("clrlwi 4,4,16\n"
-		"li 3, 0\n");
-      break;
-    case 32:
-      EMIT_ASM ("li 3, 0");
-      break;
-    default:
-      emit_error = 1;
-    }
-}
-
-/* TOP = !TOP
-   i.e., TOP = (TOP == 0) ? 1 : 0;  */
-
-static void
-ppc_emit_log_not (void)
-{
-  EMIT_ASM ("or      4, 3, 4	\n"
-	    "cntlzw  4, 4	\n"
-	    "srwi    4, 4, 5	\n"
-	    "li      3, 0	\n");
-}
-
-/* TOP = stack[--sp] & TOP  */
-
-static void
-ppc_emit_bit_and (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "and  4, 6, 4	\n"
-	    "and  3, 5, 3	\n");
-}
-
-/* TOP = stack[--sp] | TOP  */
-
-static void
-ppc_emit_bit_or (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "or  4, 6, 4	\n"
-	    "or  3, 5, 3	\n");
-}
-
-/* TOP = stack[--sp] ^ TOP  */
-
-static void
-ppc_emit_bit_xor (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "xor  4, 6, 4	\n"
-	    "xor  3, 5, 3	\n");
-}
-
-/* TOP = ~TOP
-   i.e., TOP = ~(TOP | TOP)  */
-
-static void
-ppc_emit_bit_not (void)
-{
-  EMIT_ASM ("nor  3, 3, 3	\n"
-	    "nor  4, 4, 4	\n");
-}
-
-/* TOP = stack[--sp] == TOP  */
-
-static void
-ppc_emit_equal (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "xor     4, 6, 4	\n"
-	    "xor     3, 5, 3	\n"
-	    "or      4, 3, 4	\n"
-	    "cntlzw  4, 4	\n"
-	    "srwi    4, 4, 5	\n"
-	    "li      3, 0	\n");
-}
-
-/* TOP = stack[--sp] < TOP
-   (Signed comparison)  */
-
-static void
-ppc_emit_less_signed (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "cmplw   6, 6, 4		\n"
-	    "cmpw    7, 5, 3		\n"
-	    /* CR6 bit 0 = low less and high equal */
-	    "crand   6*4+0, 6*4+0, 7*4+2\n"
-	    /* CR7 bit 0 = (low less and high equal) or high less */
-	    "cror    7*4+0, 7*4+0, 6*4+0\n"
-	    "mfcr    4			\n"
-	    "rlwinm  4, 4, 29, 31, 31	\n"
-	    "li      3, 0		\n");
-}
-
-/* TOP = stack[--sp] < TOP
-   (Unsigned comparison)  */
-
-static void
-ppc_emit_less_unsigned (void)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "cmplw   6, 6, 4		\n"
-	    "cmplw   7, 5, 3		\n"
-	    /* CR6 bit 0 = low less and high equal */
-	    "crand   6*4+0, 6*4+0, 7*4+2\n"
-	    /* CR7 bit 0 = (low less and high equal) or high less */
-	    "cror    7*4+0, 7*4+0, 6*4+0\n"
-	    "mfcr    4			\n"
-	    "rlwinm  4, 4, 29, 31, 31	\n"
-	    "li      3, 0		\n");
-}
-
-/* Access the memory address in TOP in size of SIZE.
-   Zero-extend the read value.  */
-
-static void
-ppc_emit_ref (int size)
-{
-  switch (size)
-    {
-    case 1:
-      EMIT_ASM ("lbz   4, 0(4)\n"
-		"li    3, 0");
-      break;
-    case 2:
-      EMIT_ASM ("lhz   4, 0(4)\n"
-		"li    3, 0");
-      break;
-    case 4:
-      EMIT_ASM ("lwz   4, 0(4)\n"
-		"li    3, 0");
-      break;
-    case 8:
-      if (__BYTE_ORDER == __LITTLE_ENDIAN)
-	EMIT_ASM ("lwz   3, 4(4)\n"
-		  "lwz   4, 0(4)");
-      else
-	EMIT_ASM ("lwz   3, 0(4)\n"
-		  "lwz   4, 4(4)");
-      break;
-    }
-}
-
-/* TOP = NUM  */
-
-static void
-ppc_emit_const (LONGEST num)
-{
-  uint32_t buf[10];
-  uint32_t *p = buf;
-
-  p += gen_limm (p, 3, num >> 32 & 0xffffffff, 0);
-  p += gen_limm (p, 4, num & 0xffffffff, 0);
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* Set TOP to the value of register REG by calling get_raw_reg function
-   with two argument, collected buffer and register number.  */
-
-static void
-ppc_emit_reg (int reg)
-{
-  uint32_t buf[13];
-  uint32_t *p = buf;
-
-  /* fctx->regs is passed in r3 and then saved in -16(31).  */
-  p += GEN_LWZ (p, 3, 31, -16);
-  p += GEN_LI (p, 4, reg);	/* li	r4, reg */
-  p += gen_call (p, get_raw_reg_func_addr (), 0, 0);
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-
-  if (__BYTE_ORDER == __LITTLE_ENDIAN)
-    {
-      EMIT_ASM ("mr 5, 4\n"
-		"mr 4, 3\n"
-		"mr 3, 5\n");
-    }
-}
-
-/* TOP = stack[--sp] */
-
-static void
-ppc_emit_pop (void)
-{
-  EMIT_ASM ("lwzu " TOP_FIRST ", 8(30)	\n"
-	    "lwz " TOP_SECOND ", 4(30)	\n");
-}
-
-/* stack[sp++] = TOP
-
-   Because we may use up bytecode stack, expand 8 doublewords more
-   if needed.  */
-
-static void
-ppc_emit_stack_flush (void)
-{
-  /* Make sure bytecode stack is big enough before push.
-     Otherwise, expand 64-byte more.  */
-
-  EMIT_ASM ("  stw   " TOP_FIRST ", 0(30)	\n"
-	    "  stw   " TOP_SECOND ", 4(30)\n"
-	    "  addi  5, 30, -(8 + 8)	\n"
-	    "  cmpw  7, 5, 1		\n"
-	    "  bgt   7, 1f		\n"
-	    "  stwu  31, -64(1)		\n"
-	    "1:addi  30, 30, -8		\n");
-}
-
-/* Swap TOP and stack[sp-1]  */
-
-static void
-ppc_emit_swap (void)
-{
-  EMIT_ASM ("lwz  " TMP_FIRST ", 8(30)	\n"
-	    "lwz  " TMP_SECOND ", 12(30)	\n"
-	    "stw  " TOP_FIRST ", 8(30)	\n"
-	    "stw  " TOP_SECOND ", 12(30)	\n"
-	    "mr   3, 5		\n"
-	    "mr   4, 6		\n");
-}
-
-/* Discard N elements in the stack.  Also used for ppc64.  */
-
-static void
-ppc_emit_stack_adjust (int n)
-{
-  uint32_t buf[6];
-  uint32_t *p = buf;
-
-  n = n << 3;
-  if ((n >> 15) != 0)
-    {
-      emit_error = 1;
-      return;
-    }
-
-  p += GEN_ADDI (p, 30, 30, n);
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* Call function FN.  */
-
-static void
-ppc_emit_call (CORE_ADDR fn)
-{
-  uint32_t buf[11];
-  uint32_t *p = buf;
-
-  p += gen_call (p, fn, 0, 0);
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* FN's prototype is `LONGEST(*fn)(int)'.
-   TOP = fn (arg1)
-  */
-
-static void
-ppc_emit_int_call_1 (CORE_ADDR fn, int arg1)
-{
-  uint32_t buf[15];
-  uint32_t *p = buf;
-
-  /* Setup argument.  arg1 is a 16-bit value.  */
-  p += gen_limm (p, 3, (uint32_t) arg1, 0);
-  p += gen_call (p, fn, 0, 0);
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-
-  if (__BYTE_ORDER == __LITTLE_ENDIAN)
-    {
-      EMIT_ASM ("mr 5, 4\n"
-		"mr 4, 3\n"
-		"mr 3, 5\n");
-    }
-}
-
-/* FN's prototype is `void(*fn)(int,LONGEST)'.
-   fn (arg1, TOP)
-
-   TOP should be preserved/restored before/after the call.  */
-
-static void
-ppc_emit_void_call_2 (CORE_ADDR fn, int arg1)
-{
-  uint32_t buf[21];
-  uint32_t *p = buf;
-
-  /* Save TOP.  0(30) is next-empty.  */
-  p += GEN_STW (p, 3, 30, 0);
-  p += GEN_STW (p, 4, 30, 4);
-
-  /* Setup argument.  arg1 is a 16-bit value.  */
-  if (__BYTE_ORDER == __LITTLE_ENDIAN)
-    {
-       p += GEN_MR (p, 5, 4);
-       p += GEN_MR (p, 6, 3);
-    }
-  else
-    {
-       p += GEN_MR (p, 5, 3);
-       p += GEN_MR (p, 6, 4);
-    }
-  p += gen_limm (p, 3, (uint32_t) arg1, 0);
-  p += gen_call (p, fn, 0, 0);
-
-  /* Restore TOP */
-  p += GEN_LWZ (p, 3, 30, 0);
-  p += GEN_LWZ (p, 4, 30, 4);
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* Note in the following goto ops:
-
-   When emitting goto, the target address is later relocated by
-   write_goto_address.  OFFSET_P is the offset of the branch instruction
-   in the code sequence, and SIZE_P is how to relocate the instruction,
-   recognized by ppc_write_goto_address.  In current implementation,
-   SIZE can be either 24 or 14 for branch of conditional-branch instruction.
- */
-
-/* If TOP is true, goto somewhere.  Otherwise, just fall-through.  */
-
-static void
-ppc_emit_if_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("or.    3, 3, 4	\n"
-	    "lwzu " TOP_FIRST ", 8(30)	\n"
-	    "lwz " TOP_SECOND ", 4(30)	\n"
-	    "1:bne  0, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 12;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Unconditional goto.  Also used for ppc64.  */
-
-static void
-ppc_emit_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("1:b	1b");
-
-  if (offset_p)
-    *offset_p = 0;
-  if (size_p)
-    *size_p = 24;
-}
-
-/* Goto if stack[--sp] == TOP  */
-
-static void
-ppc_emit_eq_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("lwzu  " TMP_FIRST ", 8(30)	\n"
-	    "lwz   " TMP_SECOND ", 4(30)	\n"
-	    "xor   4, 6, 4	\n"
-	    "xor   3, 5, 3	\n"
-	    "or.   3, 3, 4	\n"
-	    "lwzu  " TOP_FIRST ", 8(30)	\n"
-	    "lwz   " TOP_SECOND ", 4(30)	\n"
-	    "1:beq 0, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 28;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] != TOP  */
-
-static void
-ppc_emit_ne_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("lwzu  " TMP_FIRST ", 8(30)	\n"
-	    "lwz   " TMP_SECOND ", 4(30)	\n"
-	    "xor   4, 6, 4	\n"
-	    "xor   3, 5, 3	\n"
-	    "or.   3, 3, 4	\n"
-	    "lwzu  " TOP_FIRST ", 8(30)	\n"
-	    "lwz   " TOP_SECOND ", 4(30)	\n"
-	    "1:bne 0, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 28;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] < TOP  */
-
-static void
-ppc_emit_lt_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "cmplw   6, 6, 4		\n"
-	    "cmpw    7, 5, 3		\n"
-	    /* CR6 bit 0 = low less and high equal */
-	    "crand   6*4+0, 6*4+0, 7*4+2\n"
-	    /* CR7 bit 0 = (low less and high equal) or high less */
-	    "cror    7*4+0, 7*4+0, 6*4+0\n"
-	    "lwzu    " TOP_FIRST ", 8(30)	\n"
-	    "lwz     " TOP_SECOND ", 4(30)\n"
-	    "1:blt   7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 32;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] <= TOP  */
-
-static void
-ppc_emit_le_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "cmplw   6, 6, 4		\n"
-	    "cmpw    7, 5, 3		\n"
-	    /* CR6 bit 0 = low less/equal and high equal */
-	    "crandc   6*4+0, 7*4+2, 6*4+1\n"
-	    /* CR7 bit 0 = (low less/eq and high equal) or high less */
-	    "cror    7*4+0, 7*4+0, 6*4+0\n"
-	    "lwzu    " TOP_FIRST ", 8(30)	\n"
-	    "lwz     " TOP_SECOND ", 4(30)\n"
-	    "1:blt   7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 32;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] > TOP  */
-
-static void
-ppc_emit_gt_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "cmplw   6, 6, 4		\n"
-	    "cmpw    7, 5, 3		\n"
-	    /* CR6 bit 0 = low greater and high equal */
-	    "crand   6*4+0, 6*4+1, 7*4+2\n"
-	    /* CR7 bit 0 = (low greater and high equal) or high greater */
-	    "cror    7*4+0, 7*4+1, 6*4+0\n"
-	    "lwzu    " TOP_FIRST ", 8(30)	\n"
-	    "lwz     " TOP_SECOND ", 4(30)\n"
-	    "1:blt   7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 32;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] >= TOP  */
-
-static void
-ppc_emit_ge_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
-	    "lwz " TMP_SECOND ", 4(30)	\n"
-	    "cmplw   6, 6, 4		\n"
-	    "cmpw    7, 5, 3		\n"
-	    /* CR6 bit 0 = low ge and high equal */
-	    "crandc  6*4+0, 7*4+2, 6*4+0\n"
-	    /* CR7 bit 0 = (low ge and high equal) or high greater */
-	    "cror    7*4+0, 7*4+1, 6*4+0\n"
-	    "lwzu    " TOP_FIRST ", 8(30)\n"
-	    "lwz     " TOP_SECOND ", 4(30)\n"
-	    "1:blt   7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 32;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Relocate previous emitted branch instruction.  FROM is the address
-   of the branch instruction, TO is the goto target address, and SIZE
-   if the value we set by *SIZE_P before.  Currently, it is either
-   24 or 14 of branch and conditional-branch instruction.
-   Also used for ppc64.  */
-
-static void
-ppc_write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
-{
-  long rel = to - from;
-  uint32_t insn;
-  int opcd;
-
-  read_inferior_memory (from, (unsigned char *) &insn, 4);
-  opcd = (insn >> 26) & 0x3f;
-
-  switch (size)
-    {
-    case 14:
-      if (opcd != 16
-	  || (rel >= (1 << 15) || rel < -(1 << 15)))
-	emit_error = 1;
-      insn = (insn & ~0xfffc) | (rel & 0xfffc);
-      break;
-    case 24:
-      if (opcd != 18
-	  || (rel >= (1 << 25) || rel < -(1 << 25)))
-	emit_error = 1;
-      insn = (insn & ~0x3fffffc) | (rel & 0x3fffffc);
-      break;
-    default:
-      emit_error = 1;
-    }
-
-  if (!emit_error)
-    target_write_memory (from, (unsigned char *) &insn, 4);
-}
-
-/* Table of emit ops for 32-bit.  */
-
-static struct emit_ops ppc_emit_ops_impl =
-{
-  ppc_emit_prologue,
-  ppc_emit_epilogue,
-  ppc_emit_add,
-  ppc_emit_sub,
-  ppc_emit_mul,
-  ppc_emit_lsh,
-  ppc_emit_rsh_signed,
-  ppc_emit_rsh_unsigned,
-  ppc_emit_ext,
-  ppc_emit_log_not,
-  ppc_emit_bit_and,
-  ppc_emit_bit_or,
-  ppc_emit_bit_xor,
-  ppc_emit_bit_not,
-  ppc_emit_equal,
-  ppc_emit_less_signed,
-  ppc_emit_less_unsigned,
-  ppc_emit_ref,
-  ppc_emit_if_goto,
-  ppc_emit_goto,
-  ppc_write_goto_address,
-  ppc_emit_const,
-  ppc_emit_call,
-  ppc_emit_reg,
-  ppc_emit_pop,
-  ppc_emit_stack_flush,
-  ppc_emit_zero_ext,
-  ppc_emit_swap,
-  ppc_emit_stack_adjust,
-  ppc_emit_int_call_1,
-  ppc_emit_void_call_2,
-  ppc_emit_eq_goto,
-  ppc_emit_ne_goto,
-  ppc_emit_lt_goto,
-  ppc_emit_le_goto,
-  ppc_emit_gt_goto,
-  ppc_emit_ge_goto
-};
-
-#ifdef __powerpc64__
-
-/*
-
-  Bytecode execution stack frame - 64-bit
-
-	|  LR save area           (SP + 16)
-	|  CR save area           (SP + 8)
- SP' -> +- Back chain             (SP + 0)
-	|  Save r31   for access saved arguments
-	|  Save r30   for bytecode stack pointer
-	|  Save r4    for incoming argument *value
-	|  Save r3    for incoming argument regs
- r30 -> +- Bytecode execution stack
-	|
-	|  64-byte (8 doublewords) at initial.
-	|  Expand stack as needed.
-	|
-	+-
-        |  Some padding for minimum stack frame.
-        |  112 for ELFv1.
- SP     +- Back-chain (SP')
-
-  initial frame size
-  = 112 + (4 * 8) + 64
-  = 208
-
-   r30 is the stack-pointer for bytecode machine.
-       It should point to next-empty, so we can use LDU for pop.
-   r3  is used for cache of TOP value.
-       It was the first argument, pointer to regs.
-   r4  is the second argument, pointer to the result.
-       We should set *result = TOP after leaving this function.
-
- Note:
- * To restore stack at epilogue
-   => sp = r31
- * To check stack is big enough for bytecode execution.
-   => r30 - 8 > SP + 112
- * To return execution result.
-   => 0(r4) = TOP
-
- */
-
-/* Emit prologue in inferior memory.  See above comments.  */
-
-static void
-ppc64v1_emit_prologue (void)
-{
-  /* On ELFv1, function pointers really point to function descriptor,
-     so emit one here.  We don't care about contents of words 1 and 2,
-     so let them just overlap out code.  */
-  uint64_t opd = current_insn_ptr + 8;
-  uint32_t buf[2];
-
-  /* Mind the strict aliasing rules.  */
-  memcpy (buf, &opd, sizeof buf);
-  emit_insns(buf, 2);
-  EMIT_ASM (/* Save return address.  */
-	    "mflr  0		\n"
-	    "std   0, 16(1)	\n"
-	    /* Save r30 and incoming arguments.  */
-	    "std   31, -8(1)	\n"
-	    "std   30, -16(1)	\n"
-	    "std   4, -24(1)	\n"
-	    "std   3, -32(1)	\n"
-	    /* Point r31 to current r1 for access arguments.  */
-	    "mr    31, 1	\n"
-	    /* Adjust SP.  208 is the initial frame size.  */
-	    "stdu  1, -208(1)	\n"
-	    /* Set r30 to pointing stack-top.  */
-	    "addi  30, 1, 168	\n"
-	    /* Initial r3/TOP to 0.  */
-	    "li	   3, 0		\n");
-}
-
-/* Emit prologue in inferior memory.  See above comments.  */
-
-static void
-ppc64v2_emit_prologue (void)
-{
-  EMIT_ASM (/* Save return address.  */
-	    "mflr  0		\n"
-	    "std   0, 16(1)	\n"
-	    /* Save r30 and incoming arguments.  */
-	    "std   31, -8(1)	\n"
-	    "std   30, -16(1)	\n"
-	    "std   4, -24(1)	\n"
-	    "std   3, -32(1)	\n"
-	    /* Point r31 to current r1 for access arguments.  */
-	    "mr    31, 1	\n"
-	    /* Adjust SP.  208 is the initial frame size.  */
-	    "stdu  1, -208(1)	\n"
-	    /* Set r30 to pointing stack-top.  */
-	    "addi  30, 1, 168	\n"
-	    /* Initial r3/TOP to 0.  */
-	    "li	   3, 0		\n");
-}
-
-/* Emit epilogue in inferior memory.  See above comments.  */
-
-static void
-ppc64_emit_epilogue (void)
-{
-  EMIT_ASM (/* Restore SP.  */
-	    "ld    1, 0(1)      \n"
-	    /* *result = TOP */
-	    "ld    4, -24(1)	\n"
-	    "std   3, 0(4)	\n"
-	    /* Restore registers.  */
-	    "ld    31, -8(1)	\n"
-	    "ld    30, -16(1)	\n"
-            /* Restore LR.  */
-	    "ld    0, 16(1)	\n"
-	    /* Return 0 for no-error.  */
-	    "li    3, 0		\n"
-	    "mtlr  0		\n"
-	    "blr		\n");
-}
-
-/* TOP = stack[--sp] + TOP  */
-
-static void
-ppc64_emit_add (void)
-{
-  EMIT_ASM ("ldu  4, 8(30)	\n"
-	    "add  3, 4, 3	\n");
-}
-
-/* TOP = stack[--sp] - TOP  */
-
-static void
-ppc64_emit_sub (void)
-{
-  EMIT_ASM ("ldu  4, 8(30)	\n"
-	    "sub  3, 4, 3	\n");
-}
-
-/* TOP = stack[--sp] * TOP  */
-
-static void
-ppc64_emit_mul (void)
-{
-  EMIT_ASM ("ldu    4, 8(30)	\n"
-	    "mulld  3, 4, 3	\n");
-}
-
-/* TOP = stack[--sp] << TOP  */
-
-static void
-ppc64_emit_lsh (void)
-{
-  EMIT_ASM ("ldu  4, 8(30)	\n"
-	    "sld  3, 4, 3	\n");
-}
-
-/* Top = stack[--sp] >> TOP
-   (Arithmetic shift right)  */
-
-static void
-ppc64_emit_rsh_signed (void)
-{
-  EMIT_ASM ("ldu   4, 8(30)	\n"
-	    "srad  3, 4, 3	\n");
-}
-
-/* Top = stack[--sp] >> TOP
-   (Logical shift right)  */
-
-static void
-ppc64_emit_rsh_unsigned (void)
-{
-  EMIT_ASM ("ldu  4, 8(30)	\n"
-	    "srd  3, 4, 3	\n");
-}
-
-/* Emit code for signed-extension specified by ARG.  */
-
-static void
-ppc64_emit_ext (int arg)
-{
-  switch (arg)
-    {
-    case 8:
-      EMIT_ASM ("extsb  3, 3");
-      break;
-    case 16:
-      EMIT_ASM ("extsh  3, 3");
-      break;
-    case 32:
-      EMIT_ASM ("extsw  3, 3");
-      break;
-    default:
-      emit_error = 1;
-    }
-}
-
-/* Emit code for zero-extension specified by ARG.  */
-
-static void
-ppc64_emit_zero_ext (int arg)
-{
-  switch (arg)
-    {
-    case 8:
-      EMIT_ASM ("rldicl 3,3,0,56");
-      break;
-    case 16:
-      EMIT_ASM ("rldicl 3,3,0,48");
-      break;
-    case 32:
-      EMIT_ASM ("rldicl 3,3,0,32");
-      break;
-    default:
-      emit_error = 1;
-    }
-}
-
-/* TOP = !TOP
-   i.e., TOP = (TOP == 0) ? 1 : 0;  */
-
-static void
-ppc64_emit_log_not (void)
-{
-  EMIT_ASM ("cntlzd  3, 3	\n"
-	    "srdi    3, 3, 6	\n");
-}
-
-/* TOP = stack[--sp] & TOP  */
-
-static void
-ppc64_emit_bit_and (void)
-{
-  EMIT_ASM ("ldu  4, 8(30)	\n"
-	    "and  3, 4, 3	\n");
-}
-
-/* TOP = stack[--sp] | TOP  */
-
-static void
-ppc64_emit_bit_or (void)
-{
-  EMIT_ASM ("ldu  4, 8(30)	\n"
-	    "or   3, 4, 3	\n");
-}
-
-/* TOP = stack[--sp] ^ TOP  */
-
-static void
-ppc64_emit_bit_xor (void)
-{
-  EMIT_ASM ("ldu  4, 8(30)	\n"
-	    "xor  3, 4, 3	\n");
-}
-
-/* TOP = ~TOP
-   i.e., TOP = ~(TOP | TOP)  */
-
-static void
-ppc64_emit_bit_not (void)
-{
-  EMIT_ASM ("nor  3, 3, 3	\n");
-}
-
-/* TOP = stack[--sp] == TOP  */
-
-static void
-ppc64_emit_equal (void)
-{
-  EMIT_ASM ("ldu     4, 8(30)	\n"
-	    "xor     3, 3, 4	\n"
-	    "cntlzd  3, 3	\n"
-	    "srdi    3, 3, 6	\n");
-}
-
-/* TOP = stack[--sp] < TOP
-   (Signed comparison)  */
-
-static void
-ppc64_emit_less_signed (void)
-{
-  EMIT_ASM ("ldu     4, 8(30)		\n"
-	    "cmpd    7, 4, 3		\n"
-	    "mfcr    3			\n"
-	    "rlwinm  3, 3, 29, 31, 31	\n");
-}
-
-/* TOP = stack[--sp] < TOP
-   (Unsigned comparison)  */
-
-static void
-ppc64_emit_less_unsigned (void)
-{
-  EMIT_ASM ("ldu     4, 8(30)		\n"
-	    "cmpld   7, 4, 3		\n"
-	    "mfcr    3			\n"
-	    "rlwinm  3, 3, 29, 31, 31	\n");
-}
-
-/* Access the memory address in TOP in size of SIZE.
-   Zero-extend the read value.  */
-
-static void
-ppc64_emit_ref (int size)
-{
-  switch (size)
-    {
-    case 1:
-      EMIT_ASM ("lbz   3, 0(3)");
-      break;
-    case 2:
-      EMIT_ASM ("lhz   3, 0(3)");
-      break;
-    case 4:
-      EMIT_ASM ("lwz   3, 0(3)");
-      break;
-    case 8:
-      EMIT_ASM ("ld    3, 0(3)");
-      break;
-    }
-}
-
-/* TOP = NUM  */
-
-static void
-ppc64_emit_const (LONGEST num)
-{
-  uint32_t buf[5];
-  uint32_t *p = buf;
-
-  p += gen_limm (p, 3, num, 1);
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* Set TOP to the value of register REG by calling get_raw_reg function
-   with two argument, collected buffer and register number.  */
-
-static void
-ppc64v1_emit_reg (int reg)
-{
-  uint32_t buf[15];
-  uint32_t *p = buf;
-
-  /* fctx->regs is passed in r3 and then saved in 176(1).  */
-  p += GEN_LD (p, 3, 31, -32);
-  p += GEN_LI (p, 4, reg);
-  p += GEN_STD (p, 2, 1, 40);	/* Save TOC.  */
-  p += gen_call (p, get_raw_reg_func_addr (), 1, 1);
-  p += GEN_LD (p, 2, 1, 40);	/* Restore TOC.  */
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* Likewise, for ELFv2.  */
-
-static void
-ppc64v2_emit_reg (int reg)
-{
-  uint32_t buf[12];
-  uint32_t *p = buf;
-
-  /* fctx->regs is passed in r3 and then saved in 176(1).  */
-  p += GEN_LD (p, 3, 31, -32);
-  p += GEN_LI (p, 4, reg);
-  p += GEN_STD (p, 2, 1, 24);	/* Save TOC.  */
-  p += gen_call (p, get_raw_reg_func_addr (), 1, 0);
-  p += GEN_LD (p, 2, 1, 24);	/* Restore TOC.  */
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* TOP = stack[--sp] */
-
-static void
-ppc64_emit_pop (void)
-{
-  EMIT_ASM ("ldu  3, 8(30)");
-}
-
-/* stack[sp++] = TOP
-
-   Because we may use up bytecode stack, expand 8 doublewords more
-   if needed.  */
-
-static void
-ppc64_emit_stack_flush (void)
-{
-  /* Make sure bytecode stack is big enough before push.
-     Otherwise, expand 64-byte more.  */
-
-  EMIT_ASM ("  std   3, 0(30)		\n"
-	    "  addi  4, 30, -(112 + 8)	\n"
-	    "  cmpd  7, 4, 1		\n"
-	    "  bgt   7, 1f		\n"
-	    "  stdu  31, -64(1)		\n"
-	    "1:addi  30, 30, -8		\n");
-}
-
-/* Swap TOP and stack[sp-1]  */
-
-static void
-ppc64_emit_swap (void)
-{
-  EMIT_ASM ("ld   4, 8(30)	\n"
-	    "std  3, 8(30)	\n"
-	    "mr   3, 4		\n");
-}
-
-/* Call function FN - ELFv1.  */
-
-static void
-ppc64v1_emit_call (CORE_ADDR fn)
-{
-  uint32_t buf[13];
-  uint32_t *p = buf;
-
-  p += GEN_STD (p, 2, 1, 40);	/* Save TOC.  */
-  p += gen_call (p, fn, 1, 1);
-  p += GEN_LD (p, 2, 1, 40);	/* Restore TOC.  */
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* Call function FN - ELFv2.  */
-
-static void
-ppc64v2_emit_call (CORE_ADDR fn)
-{
-  uint32_t buf[10];
-  uint32_t *p = buf;
-
-  p += GEN_STD (p, 2, 1, 24);	/* Save TOC.  */
-  p += gen_call (p, fn, 1, 0);
-  p += GEN_LD (p, 2, 1, 24);	/* Restore TOC.  */
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* FN's prototype is `LONGEST(*fn)(int)'.
-   TOP = fn (arg1)
-  */
-
-static void
-ppc64v1_emit_int_call_1 (CORE_ADDR fn, int arg1)
-{
-  uint32_t buf[13];
-  uint32_t *p = buf;
-
-  /* Setup argument.  arg1 is a 16-bit value.  */
-  p += gen_limm (p, 3, arg1, 1);
-  p += GEN_STD (p, 2, 1, 40);	/* Save TOC.  */
-  p += gen_call (p, fn, 1, 1);
-  p += GEN_LD (p, 2, 1, 40);	/* Restore TOC.  */
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* Likewise for ELFv2.  */
-
-static void
-ppc64v2_emit_int_call_1 (CORE_ADDR fn, int arg1)
-{
-  uint32_t buf[10];
-  uint32_t *p = buf;
-
-  /* Setup argument.  arg1 is a 16-bit value.  */
-  p += gen_limm (p, 3, arg1, 1);
-  p += GEN_STD (p, 2, 1, 24);	/* Save TOC.  */
-  p += gen_call (p, fn, 1, 0);
-  p += GEN_LD (p, 2, 1, 24);	/* Restore TOC.  */
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* FN's prototype is `void(*fn)(int,LONGEST)'.
-   fn (arg1, TOP)
-
-   TOP should be preserved/restored before/after the call.  */
-
-static void
-ppc64v1_emit_void_call_2 (CORE_ADDR fn, int arg1)
-{
-  uint32_t buf[17];
-  uint32_t *p = buf;
-
-  /* Save TOP.  0(30) is next-empty.  */
-  p += GEN_STD (p, 3, 30, 0);
-
-  /* Setup argument.  arg1 is a 16-bit value.  */
-  p += GEN_MR (p, 4, 3);		/* mr	r4, r3 */
-  p += gen_limm (p, 3, arg1, 1);
-  p += GEN_STD (p, 2, 1, 40);	/* Save TOC.  */
-  p += gen_call (p, fn, 1, 1);
-  p += GEN_LD (p, 2, 1, 40);	/* Restore TOC.  */
-
-  /* Restore TOP */
-  p += GEN_LD (p, 3, 30, 0);
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* Likewise for ELFv2.  */
-
-static void
-ppc64v2_emit_void_call_2 (CORE_ADDR fn, int arg1)
-{
-  uint32_t buf[14];
-  uint32_t *p = buf;
-
-  /* Save TOP.  0(30) is next-empty.  */
-  p += GEN_STD (p, 3, 30, 0);
-
-  /* Setup argument.  arg1 is a 16-bit value.  */
-  p += GEN_MR (p, 4, 3);		/* mr	r4, r3 */
-  p += gen_limm (p, 3, arg1, 1);
-  p += GEN_STD (p, 2, 1, 24);	/* Save TOC.  */
-  p += gen_call (p, fn, 1, 0);
-  p += GEN_LD (p, 2, 1, 24);	/* Restore TOC.  */
-
-  /* Restore TOP */
-  p += GEN_LD (p, 3, 30, 0);
-
-  emit_insns (buf, p - buf);
-  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
-}
-
-/* If TOP is true, goto somewhere.  Otherwise, just fall-through.  */
-
-static void
-ppc64_emit_if_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("cmpdi  7, 3, 0	\n"
-	    "ldu    3, 8(30)	\n"
-	    "1:bne  7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 8;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] == TOP  */
-
-static void
-ppc64_emit_eq_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("ldu     4, 8(30)	\n"
-	    "cmpd    7, 4, 3	\n"
-	    "ldu     3, 8(30)	\n"
-	    "1:beq   7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 12;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] != TOP  */
-
-static void
-ppc64_emit_ne_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("ldu     4, 8(30)	\n"
-	    "cmpd    7, 4, 3	\n"
-	    "ldu     3, 8(30)	\n"
-	    "1:bne   7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 12;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] < TOP  */
-
-static void
-ppc64_emit_lt_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("ldu     4, 8(30)	\n"
-	    "cmpd    7, 4, 3	\n"
-	    "ldu     3, 8(30)	\n"
-	    "1:blt   7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 12;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] <= TOP  */
-
-static void
-ppc64_emit_le_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("ldu     4, 8(30)	\n"
-	    "cmpd    7, 4, 3	\n"
-	    "ldu     3, 8(30)	\n"
-	    "1:ble   7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 12;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] > TOP  */
-
-static void
-ppc64_emit_gt_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("ldu     4, 8(30)	\n"
-	    "cmpd    7, 4, 3	\n"
-	    "ldu     3, 8(30)	\n"
-	    "1:bgt   7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 12;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Goto if stack[--sp] >= TOP  */
-
-static void
-ppc64_emit_ge_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM ("ldu     4, 8(30)	\n"
-	    "cmpd    7, 4, 3	\n"
-	    "ldu     3, 8(30)	\n"
-	    "1:bge   7, 1b	\n");
-
-  if (offset_p)
-    *offset_p = 12;
-  if (size_p)
-    *size_p = 14;
-}
-
-/* Table of emit ops for 64-bit ELFv1.  */
-
-static struct emit_ops ppc64v1_emit_ops_impl =
-{
-  ppc64v1_emit_prologue,
-  ppc64_emit_epilogue,
-  ppc64_emit_add,
-  ppc64_emit_sub,
-  ppc64_emit_mul,
-  ppc64_emit_lsh,
-  ppc64_emit_rsh_signed,
-  ppc64_emit_rsh_unsigned,
-  ppc64_emit_ext,
-  ppc64_emit_log_not,
-  ppc64_emit_bit_and,
-  ppc64_emit_bit_or,
-  ppc64_emit_bit_xor,
-  ppc64_emit_bit_not,
-  ppc64_emit_equal,
-  ppc64_emit_less_signed,
-  ppc64_emit_less_unsigned,
-  ppc64_emit_ref,
-  ppc64_emit_if_goto,
-  ppc_emit_goto,
-  ppc_write_goto_address,
-  ppc64_emit_const,
-  ppc64v1_emit_call,
-  ppc64v1_emit_reg,
-  ppc64_emit_pop,
-  ppc64_emit_stack_flush,
-  ppc64_emit_zero_ext,
-  ppc64_emit_swap,
-  ppc_emit_stack_adjust,
-  ppc64v1_emit_int_call_1,
-  ppc64v1_emit_void_call_2,
-  ppc64_emit_eq_goto,
-  ppc64_emit_ne_goto,
-  ppc64_emit_lt_goto,
-  ppc64_emit_le_goto,
-  ppc64_emit_gt_goto,
-  ppc64_emit_ge_goto
-};
-
-/* Table of emit ops for 64-bit ELFv2.  */
-
-static struct emit_ops ppc64v2_emit_ops_impl =
-{
-  ppc64v2_emit_prologue,
-  ppc64_emit_epilogue,
-  ppc64_emit_add,
-  ppc64_emit_sub,
-  ppc64_emit_mul,
-  ppc64_emit_lsh,
-  ppc64_emit_rsh_signed,
-  ppc64_emit_rsh_unsigned,
-  ppc64_emit_ext,
-  ppc64_emit_log_not,
-  ppc64_emit_bit_and,
-  ppc64_emit_bit_or,
-  ppc64_emit_bit_xor,
-  ppc64_emit_bit_not,
-  ppc64_emit_equal,
-  ppc64_emit_less_signed,
-  ppc64_emit_less_unsigned,
-  ppc64_emit_ref,
-  ppc64_emit_if_goto,
-  ppc_emit_goto,
-  ppc_write_goto_address,
-  ppc64_emit_const,
-  ppc64v2_emit_call,
-  ppc64v2_emit_reg,
-  ppc64_emit_pop,
-  ppc64_emit_stack_flush,
-  ppc64_emit_zero_ext,
-  ppc64_emit_swap,
-  ppc_emit_stack_adjust,
-  ppc64v2_emit_int_call_1,
-  ppc64v2_emit_void_call_2,
-  ppc64_emit_eq_goto,
-  ppc64_emit_ne_goto,
-  ppc64_emit_lt_goto,
-  ppc64_emit_le_goto,
-  ppc64_emit_gt_goto,
-  ppc64_emit_ge_goto
-};
-
-#endif
-
-/* Implementation of linux_target_ops method "emit_ops".  */
-
-static struct emit_ops *
-ppc_emit_ops (void)
-{
-#ifdef __powerpc64__
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-
-  if (register_size (regcache->tdesc, 0) == 8)
-    {
-      if (is_elfv2_inferior ())
-        return &ppc64v2_emit_ops_impl;
-      else
-        return &ppc64v1_emit_ops_impl;
-    }
-#endif
-  return &ppc_emit_ops_impl;
-}
-
-/* Implementation of linux_target_ops method "get_ipa_tdesc_idx".  */
-
-static int
-ppc_get_ipa_tdesc_idx (void)
-{
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-  const struct target_desc *tdesc = regcache->tdesc;
-
-#ifdef __powerpc64__
-  if (tdesc == tdesc_powerpc_64l)
-    return PPC_TDESC_BASE;
-  if (tdesc == tdesc_powerpc_altivec64l)
-    return PPC_TDESC_ALTIVEC;
-  if (tdesc == tdesc_powerpc_vsx64l)
-    return PPC_TDESC_VSX;
-  if (tdesc == tdesc_powerpc_isa205_64l)
-    return PPC_TDESC_ISA205;
-  if (tdesc == tdesc_powerpc_isa205_altivec64l)
-    return PPC_TDESC_ISA205_ALTIVEC;
-  if (tdesc == tdesc_powerpc_isa205_vsx64l)
-    return PPC_TDESC_ISA205_VSX;
-  if (tdesc == tdesc_powerpc_isa205_ppr_dscr_vsx64l)
-    return PPC_TDESC_ISA205_PPR_DSCR_VSX;
-  if (tdesc == tdesc_powerpc_isa207_vsx64l)
-    return PPC_TDESC_ISA207_VSX;
-  if (tdesc == tdesc_powerpc_isa207_htm_vsx64l)
-    return PPC_TDESC_ISA207_HTM_VSX;
-#endif
-
-  if (tdesc == tdesc_powerpc_32l)
-    return PPC_TDESC_BASE;
-  if (tdesc == tdesc_powerpc_altivec32l)
-    return PPC_TDESC_ALTIVEC;
-  if (tdesc == tdesc_powerpc_vsx32l)
-    return PPC_TDESC_VSX;
-  if (tdesc == tdesc_powerpc_isa205_32l)
-    return PPC_TDESC_ISA205;
-  if (tdesc == tdesc_powerpc_isa205_altivec32l)
-    return PPC_TDESC_ISA205_ALTIVEC;
-  if (tdesc == tdesc_powerpc_isa205_vsx32l)
-    return PPC_TDESC_ISA205_VSX;
-  if (tdesc == tdesc_powerpc_isa205_ppr_dscr_vsx32l)
-    return PPC_TDESC_ISA205_PPR_DSCR_VSX;
-  if (tdesc == tdesc_powerpc_isa207_vsx32l)
-    return PPC_TDESC_ISA207_VSX;
-  if (tdesc == tdesc_powerpc_isa207_htm_vsx32l)
-    return PPC_TDESC_ISA207_HTM_VSX;
-  if (tdesc == tdesc_powerpc_e500l)
-    return PPC_TDESC_E500;
-
-  return 0;
-}
-
-struct linux_target_ops the_low_target = {
-  ppc_arch_setup,
-  ppc_regs_info,
-  ppc_cannot_fetch_register,
-  ppc_cannot_store_register,
-  NULL, /* fetch_register */
-  ppc_get_pc,
-  ppc_set_pc,
-  NULL, /* breakpoint_kind_from_pc */
-  ppc_sw_breakpoint_from_kind,
-  NULL,
-  0,
-  ppc_breakpoint_at,
-  ppc_supports_z_point_type,
-  ppc_insert_point,
-  ppc_remove_point,
-  NULL,
-  NULL,
-  ppc_collect_ptrace_register,
-  ppc_supply_ptrace_register,
-  NULL, /* siginfo_fixup */
-  NULL, /* new_process */
-  NULL, /* delete_process */
-  NULL, /* new_thread */
-  NULL, /* delete_thread */
-  NULL, /* new_fork */
-  NULL, /* prepare_to_resume */
-  NULL, /* process_qsupported */
-  ppc_supports_tracepoints,
-  ppc_get_thread_area,
-  ppc_install_fast_tracepoint_jump_pad,
-  ppc_emit_ops,
-  ppc_get_min_fast_tracepoint_insn_len,
-  NULL, /* supports_range_stepping */
-  NULL, /* breakpoint_kind_from_current_state */
-  ppc_supports_hardware_single_step,
-  NULL, /* get_syscall_trapinfo */
-  ppc_get_ipa_tdesc_idx,
-};
-
-void
-initialize_low_arch (void)
-{
-  /* Initialize the Linux target descriptions.  */
-
-  init_registers_powerpc_32l ();
-  init_registers_powerpc_altivec32l ();
-  init_registers_powerpc_vsx32l ();
-  init_registers_powerpc_isa205_32l ();
-  init_registers_powerpc_isa205_altivec32l ();
-  init_registers_powerpc_isa205_vsx32l ();
-  init_registers_powerpc_isa205_ppr_dscr_vsx32l ();
-  init_registers_powerpc_isa207_vsx32l ();
-  init_registers_powerpc_isa207_htm_vsx32l ();
-  init_registers_powerpc_e500l ();
-#if __powerpc64__
-  init_registers_powerpc_64l ();
-  init_registers_powerpc_altivec64l ();
-  init_registers_powerpc_vsx64l ();
-  init_registers_powerpc_isa205_64l ();
-  init_registers_powerpc_isa205_altivec64l ();
-  init_registers_powerpc_isa205_vsx64l ();
-  init_registers_powerpc_isa205_ppr_dscr_vsx64l ();
-  init_registers_powerpc_isa207_vsx64l ();
-  init_registers_powerpc_isa207_htm_vsx64l ();
-#endif
-
-  initialize_regsets_info (&ppc_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-ppc-tdesc-init.h ./gdb/gdbserver/linux-ppc-tdesc-init.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-ppc-tdesc-init.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-ppc-tdesc-init.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,106 +0,0 @@
-/* Low level support for ppc, shared between gdbserver and IPA.
-
-   Copyright (C) 2016-2020 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 GDBSERVER_LINUX_PPC_TDESC_INIT_H
-#define GDBSERVER_LINUX_PPC_TDESC_INIT_H
-
-/* Note: since IPA obviously knows what ABI it's running on (32 vs 64),
-   it's sufficient to pass only the register set here.  This, together with
-   the ABI known at IPA compile time, maps to a tdesc.  */
-
-enum ppc_linux_tdesc {
-  PPC_TDESC_BASE,
-  PPC_TDESC_ALTIVEC,
-  PPC_TDESC_CELL,  /* No longer used, but kept to avoid ABI changes.  */
-  PPC_TDESC_VSX,
-  PPC_TDESC_ISA205,
-  PPC_TDESC_ISA205_ALTIVEC,
-  PPC_TDESC_ISA205_VSX,
-  PPC_TDESC_ISA205_PPR_DSCR_VSX,
-  PPC_TDESC_ISA207_VSX,
-  PPC_TDESC_ISA207_HTM_VSX,
-  PPC_TDESC_E500,
-};
-
-#if !defined __powerpc64__ || !defined IN_PROCESS_AGENT
-
-/* Defined in auto-generated file powerpc-32l.c.  */
-void init_registers_powerpc_32l (void);
-
-/* Defined in auto-generated file powerpc-altivec32l.c.  */
-void init_registers_powerpc_altivec32l (void);
-
-/* Defined in auto-generated file powerpc-vsx32l.c.  */
-void init_registers_powerpc_vsx32l (void);
-
-/* Defined in auto-generated file powerpc-isa205-32l.c.  */
-void init_registers_powerpc_isa205_32l (void);
-
-/* Defined in auto-generated file powerpc-isa205-altivec32l.c.  */
-void init_registers_powerpc_isa205_altivec32l (void);
-
-/* Defined in auto-generated file powerpc-isa205-vsx32l.c.  */
-void init_registers_powerpc_isa205_vsx32l (void);
-
-/* Defined in auto-generated file powerpc-isa205-ppr-dscr-vsx32l.c.  */
-void init_registers_powerpc_isa205_ppr_dscr_vsx32l (void);
-
-/* Defined in auto-generated file powerpc-isa207-vsx32l.c.  */
-void init_registers_powerpc_isa207_vsx32l (void);
-
-/* Defined in auto-generated file powerpc-isa207-htm-vsx32l.c.  */
-void init_registers_powerpc_isa207_htm_vsx32l (void);
-
-/* Defined in auto-generated file powerpc-e500l.c.  */
-void init_registers_powerpc_e500l (void);
-
-#endif
-
-#if defined __powerpc64__
-
-/* Defined in auto-generated file powerpc-64l.c.  */
-void init_registers_powerpc_64l (void);
-
-/* Defined in auto-generated file powerpc-altivec64l.c.  */
-void init_registers_powerpc_altivec64l (void);
-
-/* Defined in auto-generated file powerpc-vsx64l.c.  */
-void init_registers_powerpc_vsx64l (void);
-
-/* Defined in auto-generated file powerpc-isa205-64l.c.  */
-void init_registers_powerpc_isa205_64l (void);
-
-/* Defined in auto-generated file powerpc-isa205-altivec64l.c.  */
-void init_registers_powerpc_isa205_altivec64l (void);
-
-/* Defined in auto-generated file powerpc-isa205-vsx64l.c.  */
-void init_registers_powerpc_isa205_vsx64l (void);
-
-/* Defined in auto-generated file powerpc-isa205-ppr-dscr-vsx64l.c.  */
-void init_registers_powerpc_isa205_ppr_dscr_vsx64l (void);
-
-/* Defined in auto-generated file powerpc-isa207-vsx64l.c.  */
-void init_registers_powerpc_isa207_vsx64l (void);
-
-/* Defined in auto-generated file powerpc-isa207-htm-vsx64l.c.  */
-void init_registers_powerpc_isa207_htm_vsx64l (void);
-
-#endif
-
-#endif /* GDBSERVER_LINUX_PPC_TDESC_INIT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-s390-ipa.c ./gdb/gdbserver/linux-s390-ipa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-s390-ipa.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-s390-ipa.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,463 +0,0 @@
-/* GNU/Linux S/390 specific low level interface, for the in-process
-   agent library for GDB.
-
-   Copyright (C) 2016-2020 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 "server.h"
-#include <sys/mman.h>
-#include "tracepoint.h"
-#include "linux-s390-tdesc.h"
-#include <elf.h>
-#ifdef HAVE_GETAUXVAL
-#include <sys/auxv.h>
-#endif
-
-#define FT_FPR(x) (0x000 + (x) * 0x10)
-#define FT_VR(x) (0x000 + (x) * 0x10)
-#define FT_VR_L(x) (0x008 + (x) * 0x10)
-#define FT_GPR(x) (0x200 + (x) * 8)
-#define FT_GPR_U(x) (0x200 + (x) * 8)
-#define FT_GPR_L(x) (0x204 + (x) * 8)
-#define FT_GPR(x) (0x200 + (x) * 8)
-#define FT_ACR(x) (0x280 + (x) * 4)
-#define FT_PSWM 0x2c0
-#define FT_PSWM_U 0x2c0
-#define FT_PSWA 0x2c8
-#define FT_PSWA_L 0x2cc
-#define FT_FPC 0x2d0
-
-/* Mappings between registers collected by the jump pad and GDB's register
-   array layout used by regcache.
-
-   See linux-s390-low.c (s390_install_fast_tracepoint_jump_pad) for more
-   details.  */
-
-#ifndef __s390x__
-
-/* Used for s390-linux32, s390-linux32v1, s390-linux32v2.  */
-
-static const int s390_linux32_ft_collect_regmap[] = {
-  /* 32-bit PSWA and PSWM.  */
-  FT_PSWM_U, FT_PSWA_L,
-  /* 32-bit GPRs (mapped to lower halves of 64-bit slots).  */
-  FT_GPR_L (0), FT_GPR_L (1), FT_GPR_L (2), FT_GPR_L (3),
-  FT_GPR_L (4), FT_GPR_L (5), FT_GPR_L (6), FT_GPR_L (7),
-  FT_GPR_L (8), FT_GPR_L (9), FT_GPR_L (10), FT_GPR_L (11),
-  FT_GPR_L (12), FT_GPR_L (13), FT_GPR_L (14), FT_GPR_L (15),
-  /* ACRs */
-  FT_ACR (0), FT_ACR (1), FT_ACR (2), FT_ACR (3),
-  FT_ACR (4), FT_ACR (5), FT_ACR (6), FT_ACR (7),
-  FT_ACR (8), FT_ACR (9), FT_ACR (10), FT_ACR (11),
-  FT_ACR (12), FT_ACR (13), FT_ACR (14), FT_ACR (15),
-  /* FPRs (mapped to upper halves of 128-bit VR slots).  */
-  FT_FPR (0), FT_FPR (1), FT_FPR (2), FT_FPR (3),
-  FT_FPR (4), FT_FPR (5), FT_FPR (6), FT_FPR (7),
-  FT_FPR (8), FT_FPR (9), FT_FPR (10), FT_FPR (11),
-  FT_FPR (12), FT_FPR (13), FT_FPR (14), FT_FPR (15),
-  /* orig_r2, last_break, system_call */
-  -1, -1, -1,
-};
-
-/* Used for s390-linux64, s390-linux64v1, s390-linux64v2, s390-vx-linux64.  */
-
-static const int s390_linux64_ft_collect_regmap[] = {
-  /* 32-bit PSWA and PSWM.  */
-  FT_PSWM_U, FT_PSWA_L,
-  /* 32-bit halves of 64-bit GPRs.  */
-  FT_GPR_U (0), FT_GPR_L (0),
-  FT_GPR_U (1), FT_GPR_L (1),
-  FT_GPR_U (2), FT_GPR_L (2),
-  FT_GPR_U (3), FT_GPR_L (3),
-  FT_GPR_U (4), FT_GPR_L (4),
-  FT_GPR_U (5), FT_GPR_L (5),
-  FT_GPR_U (6), FT_GPR_L (6),
-  FT_GPR_U (7), FT_GPR_L (7),
-  FT_GPR_U (8), FT_GPR_L (8),
-  FT_GPR_U (9), FT_GPR_L (9),
-  FT_GPR_U (10), FT_GPR_L (10),
-  FT_GPR_U (11), FT_GPR_L (11),
-  FT_GPR_U (12), FT_GPR_L (12),
-  FT_GPR_U (13), FT_GPR_L (13),
-  FT_GPR_U (14), FT_GPR_L (14),
-  FT_GPR_U (15), FT_GPR_L (15),
-  /* ACRs */
-  FT_ACR (0), FT_ACR (1), FT_ACR (2), FT_ACR (3),
-  FT_ACR (4), FT_ACR (5), FT_ACR (6), FT_ACR (7),
-  FT_ACR (8), FT_ACR (9), FT_ACR (10), FT_ACR (11),
-  FT_ACR (12), FT_ACR (13), FT_ACR (14), FT_ACR (15),
-  /* FPRs (mapped to upper halves of 128-bit VR slots).  */
-  FT_FPR (0), FT_FPR (1), FT_FPR (2), FT_FPR (3),
-  FT_FPR (4), FT_FPR (5), FT_FPR (6), FT_FPR (7),
-  FT_FPR (8), FT_FPR (9), FT_FPR (10), FT_FPR (11),
-  FT_FPR (12), FT_FPR (13), FT_FPR (14), FT_FPR (15),
-  /* orig_r2, last_break, system_call */
-  -1, -1, -1,
-  /* Lower halves of 128-bit VRs. */
-  FT_VR_L (0), FT_VR_L (1), FT_VR_L (2), FT_VR_L (3),
-  FT_VR_L (4), FT_VR_L (5), FT_VR_L (6), FT_VR_L (7),
-  FT_VR_L (8), FT_VR_L (9), FT_VR_L (10), FT_VR_L (11),
-  FT_VR_L (12), FT_VR_L (13), FT_VR_L (14), FT_VR_L (15),
-  /* And the next 16 VRs.  */
-  FT_VR (16), FT_VR (17), FT_VR (18), FT_VR (19),
-  FT_VR (20), FT_VR (21), FT_VR (22), FT_VR (23),
-  FT_VR (24), FT_VR (25), FT_VR (26), FT_VR (27),
-  FT_VR (28), FT_VR (29), FT_VR (30), FT_VR (31),
-};
-
-/* Used for s390-te-linux64, s390-tevx-linux64, and s390-gs-linux64.  */
-
-static const int s390_te_linux64_ft_collect_regmap[] = {
-  /* 32-bit PSWA and PSWM.  */
-  FT_PSWM_U, FT_PSWA_L,
-  /* 32-bit halves of 64-bit GPRs.  */
-  FT_GPR_U (0), FT_GPR_L (0),
-  FT_GPR_U (1), FT_GPR_L (1),
-  FT_GPR_U (2), FT_GPR_L (2),
-  FT_GPR_U (3), FT_GPR_L (3),
-  FT_GPR_U (4), FT_GPR_L (4),
-  FT_GPR_U (5), FT_GPR_L (5),
-  FT_GPR_U (6), FT_GPR_L (6),
-  FT_GPR_U (7), FT_GPR_L (7),
-  FT_GPR_U (8), FT_GPR_L (8),
-  FT_GPR_U (9), FT_GPR_L (9),
-  FT_GPR_U (10), FT_GPR_L (10),
-  FT_GPR_U (11), FT_GPR_L (11),
-  FT_GPR_U (12), FT_GPR_L (12),
-  FT_GPR_U (13), FT_GPR_L (13),
-  FT_GPR_U (14), FT_GPR_L (14),
-  FT_GPR_U (15), FT_GPR_L (15),
-  /* ACRs */
-  FT_ACR (0), FT_ACR (1), FT_ACR (2), FT_ACR (3),
-  FT_ACR (4), FT_ACR (5), FT_ACR (6), FT_ACR (7),
-  FT_ACR (8), FT_ACR (9), FT_ACR (10), FT_ACR (11),
-  FT_ACR (12), FT_ACR (13), FT_ACR (14), FT_ACR (15),
-  /* FPRs (mapped to upper halves of 128-bit VR slots).  */
-  FT_FPR (0), FT_FPR (1), FT_FPR (2), FT_FPR (3),
-  FT_FPR (4), FT_FPR (5), FT_FPR (6), FT_FPR (7),
-  FT_FPR (8), FT_FPR (9), FT_FPR (10), FT_FPR (11),
-  FT_FPR (12), FT_FPR (13), FT_FPR (14), FT_FPR (15),
-  /* orig_r2, last_break, system_call */
-  -1, -1, -1,
-  /* TDB */
-  -1, -1, -1, -1,
-  -1, -1, -1, -1,
-  -1, -1, -1, -1,
-  -1, -1, -1, -1,
-  -1, -1, -1, -1,
-  /* Lower halves of 128-bit VRs. */
-  FT_VR_L (0), FT_VR_L (1), FT_VR_L (2), FT_VR_L (3),
-  FT_VR_L (4), FT_VR_L (5), FT_VR_L (6), FT_VR_L (7),
-  FT_VR_L (8), FT_VR_L (9), FT_VR_L (10), FT_VR_L (11),
-  FT_VR_L (12), FT_VR_L (13), FT_VR_L (14), FT_VR_L (15),
-  /* And the next 16 VRs.  */
-  FT_VR (16), FT_VR (17), FT_VR (18), FT_VR (19),
-  FT_VR (20), FT_VR (21), FT_VR (22), FT_VR (23),
-  FT_VR (24), FT_VR (25), FT_VR (26), FT_VR (27),
-  FT_VR (28), FT_VR (29), FT_VR (30), FT_VR (31),
-};
-
-#else /* __s390x__ */
-
-/* Used for s390x-linux64, s390x-linux64v1, s390x-linux64v2, s390x-vx-linux64.  */
-
-static const int s390x_ft_collect_regmap[] = {
-  /* 64-bit PSWA and PSWM.  */
-  FT_PSWM, FT_PSWA,
-  /* 64-bit GPRs.  */
-  FT_GPR (0), FT_GPR (1), FT_GPR (2), FT_GPR (3),
-  FT_GPR (4), FT_GPR (5), FT_GPR (6), FT_GPR (7),
-  FT_GPR (8), FT_GPR (9), FT_GPR (10), FT_GPR (11),
-  FT_GPR (12), FT_GPR (13), FT_GPR (14), FT_GPR (15),
-  /* ACRs */
-  FT_ACR (0), FT_ACR (1), FT_ACR (2), FT_ACR (3),
-  FT_ACR (4), FT_ACR (5), FT_ACR (6), FT_ACR (7),
-  FT_ACR (8), FT_ACR (9), FT_ACR (10), FT_ACR (11),
-  FT_ACR (12), FT_ACR (13), FT_ACR (14), FT_ACR (15),
-  /* FPRs (mapped to upper halves of 128-bit VR slots).  */
-  FT_FPR (0), FT_FPR (1), FT_FPR (2), FT_FPR (3),
-  FT_FPR (4), FT_FPR (5), FT_FPR (6), FT_FPR (7),
-  FT_FPR (8), FT_FPR (9), FT_FPR (10), FT_FPR (11),
-  FT_FPR (12), FT_FPR (13), FT_FPR (14), FT_FPR (15),
-  /* orig_r2, last_break, system_call */
-  -1, -1, -1,
-  /* Lower halves of 128-bit VRs. */
-  FT_VR_L (0), FT_VR_L (1), FT_VR_L (2), FT_VR_L (3),
-  FT_VR_L (4), FT_VR_L (5), FT_VR_L (6), FT_VR_L (7),
-  FT_VR_L (8), FT_VR_L (9), FT_VR_L (10), FT_VR_L (11),
-  FT_VR_L (12), FT_VR_L (13), FT_VR_L (14), FT_VR_L (15),
-  /* And the next 16 VRs.  */
-  FT_VR (16), FT_VR (17), FT_VR (18), FT_VR (19),
-  FT_VR (20), FT_VR (21), FT_VR (22), FT_VR (23),
-  FT_VR (24), FT_VR (25), FT_VR (26), FT_VR (27),
-  FT_VR (28), FT_VR (29), FT_VR (30), FT_VR (31),
-};
-
-/* Used for s390x-te-linux64, s390x-tevx-linux64, and
-   s390x-gs-linux64.  */
-
-static const int s390x_te_ft_collect_regmap[] = {
-  /* 64-bit PSWA and PSWM.  */
-  FT_PSWM, FT_PSWA,
-  /* 64-bit GPRs.  */
-  FT_GPR (0), FT_GPR (1), FT_GPR (2), FT_GPR (3),
-  FT_GPR (4), FT_GPR (5), FT_GPR (6), FT_GPR (7),
-  FT_GPR (8), FT_GPR (9), FT_GPR (10), FT_GPR (11),
-  FT_GPR (12), FT_GPR (13), FT_GPR (14), FT_GPR (15),
-  /* ACRs */
-  FT_ACR (0), FT_ACR (1), FT_ACR (2), FT_ACR (3),
-  FT_ACR (4), FT_ACR (5), FT_ACR (6), FT_ACR (7),
-  FT_ACR (8), FT_ACR (9), FT_ACR (10), FT_ACR (11),
-  FT_ACR (12), FT_ACR (13), FT_ACR (14), FT_ACR (15),
-  /* FPRs (mapped to upper halves of 128-bit VR slots).  */
-  FT_FPR (0), FT_FPR (1), FT_FPR (2), FT_FPR (3),
-  FT_FPR (4), FT_FPR (5), FT_FPR (6), FT_FPR (7),
-  FT_FPR (8), FT_FPR (9), FT_FPR (10), FT_FPR (11),
-  FT_FPR (12), FT_FPR (13), FT_FPR (14), FT_FPR (15),
-  /* orig_r2, last_break, system_call */
-  -1, -1, -1,
-  /* TDB */
-  -1, -1, -1, -1,
-  -1, -1, -1, -1,
-  -1, -1, -1, -1,
-  -1, -1, -1, -1,
-  -1, -1, -1, -1,
-  /* Lower halves of 128-bit VRs. */
-  FT_VR_L (0), FT_VR_L (1), FT_VR_L (2), FT_VR_L (3),
-  FT_VR_L (4), FT_VR_L (5), FT_VR_L (6), FT_VR_L (7),
-  FT_VR_L (8), FT_VR_L (9), FT_VR_L (10), FT_VR_L (11),
-  FT_VR_L (12), FT_VR_L (13), FT_VR_L (14), FT_VR_L (15),
-  /* And the next 16 VRs.  */
-  FT_VR (16), FT_VR (17), FT_VR (18), FT_VR (19),
-  FT_VR (20), FT_VR (21), FT_VR (22), FT_VR (23),
-  FT_VR (24), FT_VR (25), FT_VR (26), FT_VR (27),
-  FT_VR (28), FT_VR (29), FT_VR (30), FT_VR (31),
-};
-
-#endif
-
-/* Initialized by get_ipa_tdesc according to the tdesc in use.  */
-
-static const int *s390_regmap;
-static int s390_regnum;
-
-/* Fill in REGCACHE with registers saved by the jump pad in BUF.  */
-
-void
-supply_fast_tracepoint_registers (struct regcache *regcache,
-				  const unsigned char *buf)
-{
-  int i;
-  for (i = 0; i < s390_regnum; i++)
-    if (s390_regmap[i] != -1)
-      supply_register (regcache, i, ((char *) buf) + s390_regmap[i]);
-}
-
-ULONGEST
-get_raw_reg (const unsigned char *raw_regs, int regnum)
-{
-  int offset;
-  if (regnum >= s390_regnum)
-    return 0;
-  offset = s390_regmap[regnum];
-  if (offset == -1)
-    return 0;
-
-  /* The regnums are variable, better to figure out size by FT offset.  */
-
-  /* 64-bit ones.  */
-  if (offset < FT_VR(16)
-#ifdef __s390x__
-      || (offset >= FT_GPR(0) && offset < FT_ACR(0))
-      || offset == FT_PSWM
-      || offset == FT_PSWA
-#endif
-     )
-    return *(uint64_t *) (raw_regs + offset);
-
-  if (offset >= FT_ACR(0 && offset < FT_PSWM)
-      || offset == FT_FPC
-#ifndef __s390x__
-      || (offset >= FT_GPR(0) && offset < FT_ACR(0))
-      || offset == FT_PSWM_U
-      || offset == FT_PSWA_L
-#endif
-     )
-    return *(uint32_t *) (raw_regs + offset);
-
-  /* This leaves 128-bit VX.  No way to return them.  */
-  return 0;
-}
-
-/* Return target_desc to use for IPA, given the tdesc index passed by
-   gdbserver.  For s390, it also sets s390_regmap and s390_regnum.  */
-
-const struct target_desc *
-get_ipa_tdesc (int idx)
-{
-#define SET_REGMAP(regmap, skip_last) \
-	do { \
-	  s390_regmap = regmap; \
-	  s390_regnum = (sizeof regmap / sizeof regmap[0]) - skip_last; \
-	} while(0)
-  switch (idx)
-    {
-#ifdef __s390x__
-    case S390_TDESC_64:
-      /* Subtract number of VX regs.  */
-      SET_REGMAP(s390x_ft_collect_regmap, 32);
-      return tdesc_s390x_linux64;
-    case S390_TDESC_64V1:
-      SET_REGMAP(s390x_ft_collect_regmap, 32);
-      return tdesc_s390x_linux64v1;
-    case S390_TDESC_64V2:
-      SET_REGMAP(s390x_ft_collect_regmap, 32);
-      return tdesc_s390x_linux64v2;
-    case S390_TDESC_TE:
-      SET_REGMAP(s390x_te_ft_collect_regmap, 32);
-      return tdesc_s390x_te_linux64;
-    case S390_TDESC_VX:
-      SET_REGMAP(s390x_ft_collect_regmap, 0);
-      return tdesc_s390x_vx_linux64;
-    case S390_TDESC_TEVX:
-      SET_REGMAP(s390x_te_ft_collect_regmap, 0);
-      return tdesc_s390x_tevx_linux64;
-    case S390_TDESC_GS:
-      SET_REGMAP(s390x_te_ft_collect_regmap, 0);
-      return tdesc_s390x_gs_linux64;
-#else
-    case S390_TDESC_32:
-      SET_REGMAP(s390_linux32_ft_collect_regmap, 0);
-      return tdesc_s390_linux32;
-    case S390_TDESC_32V1:
-      SET_REGMAP(s390_linux32_ft_collect_regmap, 0);
-      return tdesc_s390_linux32v1;
-    case S390_TDESC_32V2:
-      SET_REGMAP(s390_linux32_ft_collect_regmap, 0);
-      return tdesc_s390_linux32v2;
-    case S390_TDESC_64:
-      SET_REGMAP(s390_linux64_ft_collect_regmap, 32);
-      return tdesc_s390_linux64;
-    case S390_TDESC_64V1:
-      SET_REGMAP(s390_linux64_ft_collect_regmap, 32);
-      return tdesc_s390_linux64v1;
-    case S390_TDESC_64V2:
-      SET_REGMAP(s390_linux64_ft_collect_regmap, 32);
-      return tdesc_s390_linux64v2;
-    case S390_TDESC_TE:
-      SET_REGMAP(s390_te_linux64_ft_collect_regmap, 32);
-      return tdesc_s390_te_linux64;
-    case S390_TDESC_VX:
-      SET_REGMAP(s390_linux64_ft_collect_regmap, 0);
-      return tdesc_s390_vx_linux64;
-    case S390_TDESC_TEVX:
-      SET_REGMAP(s390_te_linux64_ft_collect_regmap, 0);
-      return tdesc_s390_tevx_linux64;
-    case S390_TDESC_GS:
-      SET_REGMAP(s390_te_linux64_ft_collect_regmap, 0);
-      return tdesc_s390_gs_linux64;
-#endif
-    default:
-      internal_error (__FILE__, __LINE__,
-		      "unknown ipa tdesc index: %d", idx);
-#ifdef __s390x__
-      return tdesc_s390x_linux64;
-#else
-      return tdesc_s390_linux32;
-#endif
-    }
-}
-
-/* Allocate buffer for the jump pads.  On 31-bit, JG reaches everywhere,
-   so just allocate normally.  On 64-bit, we have +/-4GiB of reach, and
-   the executable is usually mapped at 0x80000000 - aim for somewhere
-   below it.  */
-
-void *
-alloc_jump_pad_buffer (size_t size)
-{
-#ifdef __s390x__
-  uintptr_t addr;
-  uintptr_t exec_base = getauxval (AT_PHDR);
-  int pagesize;
-  void *res;
-
-  if (exec_base == 0)
-    exec_base = 0x80000000;
-
-  pagesize = sysconf (_SC_PAGE_SIZE);
-  if (pagesize == -1)
-    perror_with_name ("sysconf");
-
-  addr = exec_base - size;
-
-  /* size should already be page-aligned, but this can't hurt.  */
-  addr &= ~(pagesize - 1);
-
-  /* Search for a free area.  If we hit 0, we're out of luck.  */
-  for (; addr; addr -= pagesize)
-    {
-      /* No MAP_FIXED - we don't want to zap someone's mapping.  */
-      res = mmap ((void *) addr, size,
-		  PROT_READ | PROT_WRITE | PROT_EXEC,
-		  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-
-      /* If we got what we wanted, return.  */
-      if ((uintptr_t) res == addr)
-	return res;
-
-      /* If we got a mapping, but at a wrong address, undo it.  */
-      if (res != MAP_FAILED)
-	munmap (res, size);
-    }
-
-  return NULL;
-#else
-  void *res = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
-		    MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-
-  if (res == MAP_FAILED)
-    return NULL;
-
-  return res;
-#endif
-}
-
-void
-initialize_low_tracepoint (void)
-{
-#ifdef __s390x__
-  init_registers_s390x_linux64 ();
-  init_registers_s390x_linux64v1 ();
-  init_registers_s390x_linux64v2 ();
-  init_registers_s390x_te_linux64 ();
-  init_registers_s390x_vx_linux64 ();
-  init_registers_s390x_tevx_linux64 ();
-  init_registers_s390x_gs_linux64 ();
-#else
-  init_registers_s390_linux32 ();
-  init_registers_s390_linux32v1 ();
-  init_registers_s390_linux32v2 ();
-  init_registers_s390_linux64 ();
-  init_registers_s390_linux64v1 ();
-  init_registers_s390_linux64v2 ();
-  init_registers_s390_te_linux64 ();
-  init_registers_s390_vx_linux64 ();
-  init_registers_s390_tevx_linux64 ();
-  init_registers_s390_gs_linux64 ();
-#endif
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-s390-low.c ./gdb/gdbserver/linux-s390-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-s390-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-s390-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,2860 +0,0 @@
-/* GNU/Linux S/390 specific low level interface, for the remote server
-   for GDB.
-   Copyright (C) 2001-2020 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/>.  */
-
-/* This file is used for both 31-bit and 64-bit S/390 systems.  */
-
-#include "server.h"
-#include "linux-low.h"
-#include "elf/common.h"
-#include "ax.h"
-#include "tracepoint.h"
-
-#include <asm/ptrace.h>
-#include "nat/gdb_ptrace.h"
-#include <sys/uio.h>
-#include <elf.h>
-#include <inttypes.h>
-
-#include "linux-s390-tdesc.h"
-
-#ifndef HWCAP_S390_HIGH_GPRS
-#define HWCAP_S390_HIGH_GPRS 512
-#endif
-
-#ifndef HWCAP_S390_TE
-#define HWCAP_S390_TE 1024
-#endif
-
-#ifndef HWCAP_S390_VX
-#define HWCAP_S390_VX 2048
-#endif
-
-#ifndef HWCAP_S390_GS
-#define HWCAP_S390_GS 16384
-#endif
-
-#define s390_num_regs 52
-
-static int s390_regmap[] = {
-  PT_PSWMASK, PT_PSWADDR,
-
-  PT_GPR0, PT_GPR1, PT_GPR2, PT_GPR3,
-  PT_GPR4, PT_GPR5, PT_GPR6, PT_GPR7,
-  PT_GPR8, PT_GPR9, PT_GPR10, PT_GPR11,
-  PT_GPR12, PT_GPR13, PT_GPR14, PT_GPR15,
-
-  PT_ACR0, PT_ACR1, PT_ACR2, PT_ACR3,
-  PT_ACR4, PT_ACR5, PT_ACR6, PT_ACR7,
-  PT_ACR8, PT_ACR9, PT_ACR10, PT_ACR11,
-  PT_ACR12, PT_ACR13, PT_ACR14, PT_ACR15,
-
-  PT_FPC,
-
-#ifndef __s390x__
-  PT_FPR0_HI, PT_FPR1_HI, PT_FPR2_HI, PT_FPR3_HI,
-  PT_FPR4_HI, PT_FPR5_HI, PT_FPR6_HI, PT_FPR7_HI,
-  PT_FPR8_HI, PT_FPR9_HI, PT_FPR10_HI, PT_FPR11_HI,
-  PT_FPR12_HI, PT_FPR13_HI, PT_FPR14_HI, PT_FPR15_HI,
-#else
-  PT_FPR0, PT_FPR1, PT_FPR2, PT_FPR3,
-  PT_FPR4, PT_FPR5, PT_FPR6, PT_FPR7,
-  PT_FPR8, PT_FPR9, PT_FPR10, PT_FPR11,
-  PT_FPR12, PT_FPR13, PT_FPR14, PT_FPR15,
-#endif
-
-  PT_ORIGGPR2,
-};
-
-#define s390_num_regs_3264 68
-
-#ifdef __s390x__
-static int s390_regmap_3264[] = {
-  PT_PSWMASK, PT_PSWADDR,
-
-  PT_GPR0, PT_GPR0, PT_GPR1, PT_GPR1,
-  PT_GPR2, PT_GPR2, PT_GPR3, PT_GPR3,
-  PT_GPR4, PT_GPR4, PT_GPR5, PT_GPR5,
-  PT_GPR6, PT_GPR6, PT_GPR7, PT_GPR7,
-  PT_GPR8, PT_GPR8, PT_GPR9, PT_GPR9,
-  PT_GPR10, PT_GPR10, PT_GPR11, PT_GPR11,
-  PT_GPR12, PT_GPR12, PT_GPR13, PT_GPR13,
-  PT_GPR14, PT_GPR14, PT_GPR15, PT_GPR15,
-
-  PT_ACR0, PT_ACR1, PT_ACR2, PT_ACR3,
-  PT_ACR4, PT_ACR5, PT_ACR6, PT_ACR7,
-  PT_ACR8, PT_ACR9, PT_ACR10, PT_ACR11,
-  PT_ACR12, PT_ACR13, PT_ACR14, PT_ACR15,
-
-  PT_FPC,
-
-  PT_FPR0, PT_FPR1, PT_FPR2, PT_FPR3,
-  PT_FPR4, PT_FPR5, PT_FPR6, PT_FPR7,
-  PT_FPR8, PT_FPR9, PT_FPR10, PT_FPR11,
-  PT_FPR12, PT_FPR13, PT_FPR14, PT_FPR15,
-
-  PT_ORIGGPR2,
-};
-#else
-static int s390_regmap_3264[] = {
-  PT_PSWMASK, PT_PSWADDR,
-
-  -1, PT_GPR0, -1, PT_GPR1,
-  -1, PT_GPR2, -1, PT_GPR3,
-  -1, PT_GPR4, -1, PT_GPR5,
-  -1, PT_GPR6, -1, PT_GPR7,
-  -1, PT_GPR8, -1, PT_GPR9,
-  -1, PT_GPR10, -1, PT_GPR11,
-  -1, PT_GPR12, -1, PT_GPR13,
-  -1, PT_GPR14, -1, PT_GPR15,
-
-  PT_ACR0, PT_ACR1, PT_ACR2, PT_ACR3,
-  PT_ACR4, PT_ACR5, PT_ACR6, PT_ACR7,
-  PT_ACR8, PT_ACR9, PT_ACR10, PT_ACR11,
-  PT_ACR12, PT_ACR13, PT_ACR14, PT_ACR15,
-
-  PT_FPC,
-
-  PT_FPR0_HI, PT_FPR1_HI, PT_FPR2_HI, PT_FPR3_HI,
-  PT_FPR4_HI, PT_FPR5_HI, PT_FPR6_HI, PT_FPR7_HI,
-  PT_FPR8_HI, PT_FPR9_HI, PT_FPR10_HI, PT_FPR11_HI,
-  PT_FPR12_HI, PT_FPR13_HI, PT_FPR14_HI, PT_FPR15_HI,
-
-  PT_ORIGGPR2,
-};
-#endif
-
-
-static int
-s390_cannot_fetch_register (int regno)
-{
-  return 0;
-}
-
-static int
-s390_cannot_store_register (int regno)
-{
-  return 0;
-}
-
-static void
-s390_collect_ptrace_register (struct regcache *regcache, int regno, char *buf)
-{
-  int size = register_size (regcache->tdesc, regno);
-  const struct regs_info *regs_info = (*the_low_target.regs_info) ();
-  struct usrregs_info *usr = regs_info->usrregs;
-  int regaddr = usr->regmap[regno];
-
-  if (size < sizeof (long))
-    {
-      memset (buf, 0, sizeof (long));
-
-      if ((regno ^ 1) < usr->num_regs
-	  && usr->regmap[regno ^ 1] == regaddr)
-	{
-	  collect_register (regcache, regno & ~1, buf);
-	  collect_register (regcache, (regno & ~1) + 1,
-			    buf + sizeof (long) - size);
-	}
-      else if (regaddr == PT_PSWMASK)
-	{
-	  /* Convert 4-byte PSW mask to 8 bytes by clearing bit 12 and copying
-	     the basic addressing mode bit from the PSW address.  */
-	  gdb_byte *addr = (gdb_byte *) alloca (register_size (regcache->tdesc, regno ^ 1));
-	  collect_register (regcache, regno, buf);
-	  collect_register (regcache, regno ^ 1, addr);
-	  buf[1] &= ~0x8;
-	  buf[size] |= (addr[0] & 0x80);
-	}
-      else if (regaddr == PT_PSWADDR)
-	{
-	  /* Convert 4-byte PSW address to 8 bytes by clearing the addressing
-	     mode bit (which gets copied to the PSW mask instead).  */
-	  collect_register (regcache, regno, buf + sizeof (long) - size);
-	  buf[sizeof (long) - size] &= ~0x80;
-	}
-      else if ((regaddr >= PT_GPR0 && regaddr <= PT_GPR15)
-	       || regaddr == PT_ORIGGPR2)
-	collect_register (regcache, regno, buf + sizeof (long) - size);
-      else
-	collect_register (regcache, regno, buf);
-    }
-  else if (regaddr != -1)
-    collect_register (regcache, regno, buf);
-}
-
-static void
-s390_supply_ptrace_register (struct regcache *regcache,
-			     int regno, const char *buf)
-{
-  int size = register_size (regcache->tdesc, regno);
-  const struct regs_info *regs_info = (*the_low_target.regs_info) ();
-  struct usrregs_info *usr = regs_info->usrregs;
-  int regaddr = usr->regmap[regno];
-
-  if (size < sizeof (long))
-    {
-      if ((regno ^ 1) < usr->num_regs
-	  && usr->regmap[regno ^ 1] == regaddr)
-	{
-	  supply_register (regcache, regno & ~1, buf);
-	  supply_register (regcache, (regno & ~1) + 1,
-			   buf + sizeof (long) - size);
-	}
-      else if (regaddr == PT_PSWMASK)
-	{
-	  /* Convert 8-byte PSW mask to 4 bytes by setting bit 12 and copying
-	     the basic addressing mode into the PSW address.  */
-	  gdb_byte *mask = (gdb_byte *) alloca (size);
-	  gdb_byte *addr = (gdb_byte *) alloca (register_size (regcache->tdesc, regno ^ 1));
-	  memcpy (mask, buf, size);
-	  mask[1] |= 0x8;
-	  supply_register (regcache, regno, mask);
-
-	  collect_register (regcache, regno ^ 1, addr);
-	  addr[0] &= ~0x80;
-	  addr[0] |= (buf[size] & 0x80);
-	  supply_register (regcache, regno ^ 1, addr);
-	}
-      else if (regaddr == PT_PSWADDR)
-	{
-	  /* Convert 8-byte PSW address to 4 bytes by truncating, but
-	     keeping the addressing mode bit (which was set from the mask).  */
-	  gdb_byte *addr = (gdb_byte *) alloca (size);
-	  char amode;
-	  collect_register (regcache, regno, addr);
-	  amode = addr[0] & 0x80;
-	  memcpy (addr, buf + sizeof (long) - size, size);
-	  addr[0] &= ~0x80;
-	  addr[0] |= amode;
-	  supply_register (regcache, regno, addr);
-	}
-      else if ((regaddr >= PT_GPR0 && regaddr <= PT_GPR15)
-	       || regaddr == PT_ORIGGPR2)
-	supply_register (regcache, regno, buf + sizeof (long) - size);
-      else
-	supply_register (regcache, regno, buf);
-    }
-  else if (regaddr != -1)
-    supply_register (regcache, regno, buf);
-}
-
-/* Provide only a fill function for the general register set.  ps_lgetregs
-   will use this for NPTL support.  */
-
-static void
-s390_fill_gregset (struct regcache *regcache, void *buf)
-{
-  int i;
-  const struct regs_info *regs_info = (*the_low_target.regs_info) ();
-  struct usrregs_info *usr = regs_info->usrregs;
-
-  for (i = 0; i < usr->num_regs; i++)
-    {
-      if (usr->regmap[i] < PT_PSWMASK
-	  || usr->regmap[i] > PT_ACR15)
-	continue;
-
-      s390_collect_ptrace_register (regcache, i,
-				    (char *) buf + usr->regmap[i]);
-    }
-}
-
-/* Fill and store functions for extended register sets.  */
-
-#ifndef __s390x__
-static void
-s390_fill_gprs_high (struct regcache *regcache, void *buf)
-{
-  int r0h = find_regno (regcache->tdesc, "r0h");
-  int i;
-
-  for (i = 0; i < 16; i++)
-    collect_register (regcache, r0h + 2 * i, (char *) buf + 4 * i);
-}
-
-static void
-s390_store_gprs_high (struct regcache *regcache, const void *buf)
-{
-  int r0h = find_regno (regcache->tdesc, "r0h");
-  int i;
-
-  for (i = 0; i < 16; i++)
-    supply_register (regcache, r0h + 2 * i, (const char *) buf + 4 * i);
-}
-#endif
-
-static void
-s390_store_last_break (struct regcache *regcache, const void *buf)
-{
-  const char *p;
-
-  p = (const char *) buf + 8 - register_size (regcache->tdesc, 0);
-  supply_register_by_name (regcache, "last_break", p);
-}
-
-static void
-s390_fill_system_call (struct regcache *regcache, void *buf)
-{
-  collect_register_by_name (regcache, "system_call", buf);
-}
-
-static void
-s390_store_system_call (struct regcache *regcache, const void *buf)
-{
-  supply_register_by_name (regcache, "system_call", buf);
-}
-
-static void
-s390_store_tdb (struct regcache *regcache, const void *buf)
-{
-  int tdb0 = find_regno (regcache->tdesc, "tdb0");
-  int tr0 = find_regno (regcache->tdesc, "tr0");
-  int i;
-
-  for (i = 0; i < 4; i++)
-    supply_register (regcache, tdb0 + i, (const char *) buf + 8 * i);
-
-  for (i = 0; i < 16; i++)
-    supply_register (regcache, tr0 + i, (const char *) buf + 8 * (16 + i));
-}
-
-static void
-s390_fill_vxrs_low (struct regcache *regcache, void *buf)
-{
-  int v0 = find_regno (regcache->tdesc, "v0l");
-  int i;
-
-  for (i = 0; i < 16; i++)
-    collect_register (regcache, v0 + i, (char *) buf + 8 * i);
-}
-
-static void
-s390_store_vxrs_low (struct regcache *regcache, const void *buf)
-{
-  int v0 = find_regno (regcache->tdesc, "v0l");
-  int i;
-
-  for (i = 0; i < 16; i++)
-    supply_register (regcache, v0 + i, (const char *) buf + 8 * i);
-}
-
-static void
-s390_fill_vxrs_high (struct regcache *regcache, void *buf)
-{
-  int v16 = find_regno (regcache->tdesc, "v16");
-  int i;
-
-  for (i = 0; i < 16; i++)
-    collect_register (regcache, v16 + i, (char *) buf + 16 * i);
-}
-
-static void
-s390_store_vxrs_high (struct regcache *regcache, const void *buf)
-{
-  int v16 = find_regno (regcache->tdesc, "v16");
-  int i;
-
-  for (i = 0; i < 16; i++)
-    supply_register (regcache, v16 + i, (const char *) buf + 16 * i);
-}
-
-static void
-s390_store_gs (struct regcache *regcache, const void *buf)
-{
-  int gsd = find_regno (regcache->tdesc, "gsd");
-  int i;
-
-  for (i = 0; i < 3; i++)
-    supply_register (regcache, gsd + i, (const char *) buf + 8 * (i + 1));
-}
-
-static void
-s390_store_gsbc (struct regcache *regcache, const void *buf)
-{
-  int bc_gsd = find_regno (regcache->tdesc, "bc_gsd");
-  int i;
-
-  for (i = 0; i < 3; i++)
-    supply_register (regcache, bc_gsd + i, (const char *) buf + 8 * (i + 1));
-}
-
-static struct regset_info s390_regsets[] = {
-  { 0, 0, 0, 0, GENERAL_REGS, s390_fill_gregset, NULL },
-#ifndef __s390x__
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_HIGH_GPRS, 0,
-    EXTENDED_REGS, s390_fill_gprs_high, s390_store_gprs_high },
-#endif
-  /* Last break address is read-only; no fill function.  */
-  { PTRACE_GETREGSET, -1, NT_S390_LAST_BREAK, 0, EXTENDED_REGS,
-    NULL, s390_store_last_break },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_SYSTEM_CALL, 0,
-    EXTENDED_REGS, s390_fill_system_call, s390_store_system_call },
-  /* TDB is read-only.  */
-  { PTRACE_GETREGSET, -1, NT_S390_TDB, 0, EXTENDED_REGS,
-    NULL, s390_store_tdb },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_VXRS_LOW, 0,
-    EXTENDED_REGS, s390_fill_vxrs_low, s390_store_vxrs_low },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_VXRS_HIGH, 0,
-    EXTENDED_REGS, s390_fill_vxrs_high, s390_store_vxrs_high },
-  /* Guarded storage registers are read-only.  */
-  { PTRACE_GETREGSET, -1, NT_S390_GS_CB, 0, EXTENDED_REGS,
-    NULL, s390_store_gs },
-  { PTRACE_GETREGSET, -1, NT_S390_GS_BC, 0, EXTENDED_REGS,
-    NULL, s390_store_gsbc },
-  NULL_REGSET
-};
-
-
-static const gdb_byte s390_breakpoint[] = { 0, 1 };
-#define s390_breakpoint_len 2
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-s390_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = s390_breakpoint_len;
-  return s390_breakpoint;
-}
-
-static CORE_ADDR
-s390_get_pc (struct regcache *regcache)
-{
-  if (register_size (regcache->tdesc, 0) == 4)
-    {
-      unsigned int pswa;
-      collect_register_by_name (regcache, "pswa", &pswa);
-      return pswa & 0x7fffffff;
-    }
-  else
-    {
-      unsigned long pc;
-      collect_register_by_name (regcache, "pswa", &pc);
-      return pc;
-    }
-}
-
-static void
-s390_set_pc (struct regcache *regcache, CORE_ADDR newpc)
-{
-  if (register_size (regcache->tdesc, 0) == 4)
-    {
-      unsigned int pswa;
-      collect_register_by_name (regcache, "pswa", &pswa);
-      pswa = (pswa & 0x80000000) | (newpc & 0x7fffffff);
-      supply_register_by_name (regcache, "pswa", &pswa);
-    }
-  else
-    {
-      unsigned long pc = newpc;
-      supply_register_by_name (regcache, "pswa", &pc);
-    }
-}
-
-/* Determine the word size for the given PID, in bytes.  */
-
-#ifdef __s390x__
-static int
-s390_get_wordsize (int pid)
-{
-  errno = 0;
-  PTRACE_XFER_TYPE pswm = ptrace (PTRACE_PEEKUSER, pid,
-				  (PTRACE_TYPE_ARG3) 0,
-				  (PTRACE_TYPE_ARG4) 0);
-  if (errno != 0)
-    {
-      warning (_("Couldn't determine word size, assuming 64-bit."));
-      return 8;
-    }
-  /* Derive word size from extended addressing mode (PSW bit 31).  */
-  return pswm & (1L << 32) ? 8 : 4;
-}
-#else
-#define s390_get_wordsize(pid) 4
-#endif
-
-static int
-s390_check_regset (int pid, int regset, int regsize)
-{
-  void *buf = alloca (regsize);
-  struct iovec iov;
-
-  iov.iov_base = buf;
-  iov.iov_len = regsize;
-
-  if (ptrace (PTRACE_GETREGSET, pid, (long) regset, (long) &iov) >= 0
-      || errno == ENODATA)
-    return 1;
-  return 0;
-}
-
-/* For a 31-bit inferior, whether the kernel supports using the full
-   64-bit GPRs.  */
-static int have_hwcap_s390_high_gprs = 0;
-static int have_hwcap_s390_vx = 0;
-
-static void
-s390_arch_setup (void)
-{
-  const struct target_desc *tdesc;
-  struct regset_info *regset;
-
-  /* Determine word size and HWCAP.  */
-  int pid = pid_of (current_thread);
-  int wordsize = s390_get_wordsize (pid);
-  unsigned long hwcap = linux_get_hwcap (wordsize);
-
-  /* Check whether the kernel supports extra register sets.  */
-  int have_regset_last_break
-    = s390_check_regset (pid, NT_S390_LAST_BREAK, 8);
-  int have_regset_system_call
-    = s390_check_regset (pid, NT_S390_SYSTEM_CALL, 4);
-  int have_regset_tdb
-    = (s390_check_regset (pid, NT_S390_TDB, 256)
-       && (hwcap & HWCAP_S390_TE) != 0);
-  int have_regset_vxrs
-    = (s390_check_regset (pid, NT_S390_VXRS_LOW, 128)
-       && s390_check_regset (pid, NT_S390_VXRS_HIGH, 256)
-       && (hwcap & HWCAP_S390_VX) != 0);
-  int have_regset_gs
-    = (s390_check_regset (pid, NT_S390_GS_CB, 32)
-       && s390_check_regset (pid, NT_S390_GS_BC, 32)
-       && (hwcap & HWCAP_S390_GS) != 0);
-
-  {
-#ifdef __s390x__
-    if (wordsize == 8)
-      {
-	if (have_regset_gs)
-	  tdesc = tdesc_s390x_gs_linux64;
-	else if (have_regset_vxrs)
-	  tdesc = (have_regset_tdb ? tdesc_s390x_tevx_linux64 :
-		   tdesc_s390x_vx_linux64);
-	else if (have_regset_tdb)
-	  tdesc = tdesc_s390x_te_linux64;
-	else if (have_regset_system_call)
-	  tdesc = tdesc_s390x_linux64v2;
-	else if (have_regset_last_break)
-	  tdesc = tdesc_s390x_linux64v1;
-	else
-	  tdesc = tdesc_s390x_linux64;
-      }
-
-    /* For a 31-bit inferior, check whether the kernel supports
-       using the full 64-bit GPRs.  */
-    else
-#endif
-    if (hwcap & HWCAP_S390_HIGH_GPRS)
-      {
-	have_hwcap_s390_high_gprs = 1;
-	if (have_regset_gs)
-	  tdesc = tdesc_s390_gs_linux64;
-	else if (have_regset_vxrs)
-	  tdesc = (have_regset_tdb ? tdesc_s390_tevx_linux64 :
-		   tdesc_s390_vx_linux64);
-	else if (have_regset_tdb)
-	  tdesc = tdesc_s390_te_linux64;
-	else if (have_regset_system_call)
-	  tdesc = tdesc_s390_linux64v2;
-	else if (have_regset_last_break)
-	  tdesc = tdesc_s390_linux64v1;
-	else
-	  tdesc = tdesc_s390_linux64;
-      }
-    else
-      {
-	/* Assume 31-bit inferior process.  */
-	if (have_regset_system_call)
-	  tdesc = tdesc_s390_linux32v2;
-	else if (have_regset_last_break)
-	  tdesc = tdesc_s390_linux32v1;
-	else
-	  tdesc = tdesc_s390_linux32;
-      }
-
-    have_hwcap_s390_vx = have_regset_vxrs;
-  }
-
-  /* Update target_regsets according to available register sets.  */
-  for (regset = s390_regsets; regset->size >= 0; regset++)
-    if (regset->get_request == PTRACE_GETREGSET)
-      switch (regset->nt_type)
-	{
-#ifndef __s390x__
-	case NT_S390_HIGH_GPRS:
-	  regset->size = have_hwcap_s390_high_gprs ? 64 : 0;
-	  break;
-#endif
-	case NT_S390_LAST_BREAK:
-	  regset->size = have_regset_last_break ? 8 : 0;
-	  break;
-	case NT_S390_SYSTEM_CALL:
-	  regset->size = have_regset_system_call ? 4 : 0;
-	  break;
-	case NT_S390_TDB:
-	  regset->size = have_regset_tdb ? 256 : 0;
-	  break;
-	case NT_S390_VXRS_LOW:
-	  regset->size = have_regset_vxrs ? 128 : 0;
-	  break;
-	case NT_S390_VXRS_HIGH:
-	  regset->size = have_regset_vxrs ? 256 : 0;
-	  break;
-	case NT_S390_GS_CB:
-	case NT_S390_GS_BC:
-	  regset->size = have_regset_gs ? 32 : 0;
-	default:
-	  break;
-	}
-
-  current_process ()->tdesc = tdesc;
-}
-
-
-static int
-s390_breakpoint_at (CORE_ADDR pc)
-{
-  unsigned char c[s390_breakpoint_len];
-  read_inferior_memory (pc, c, s390_breakpoint_len);
-  return memcmp (c, s390_breakpoint, s390_breakpoint_len) == 0;
-}
-
-/* Breakpoint/Watchpoint support.  */
-
-/* The "supports_z_point_type" linux_target_ops method.  */
-
-static int
-s390_supports_z_point_type (char z_type)
-{
-  switch (z_type)
-    {
-    case Z_PACKET_SW_BP:
-      return 1;
-    default:
-      return 0;
-    }
-}
-
-/* Support for hardware single step.  */
-
-static int
-s390_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-static struct usrregs_info s390_usrregs_info =
-  {
-    s390_num_regs,
-    s390_regmap,
-  };
-
-static struct regsets_info s390_regsets_info =
-  {
-    s390_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &s390_usrregs_info,
-    &s390_regsets_info
-  };
-
-static struct usrregs_info s390_usrregs_info_3264 =
-  {
-    s390_num_regs_3264,
-    s390_regmap_3264
-  };
-
-static struct regsets_info s390_regsets_info_3264 =
-  {
-    s390_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct regs_info regs_info_3264 =
-  {
-    NULL, /* regset_bitmap */
-    &s390_usrregs_info_3264,
-    &s390_regsets_info_3264
-  };
-
-static const struct regs_info *
-s390_regs_info (void)
-{
-  if (have_hwcap_s390_high_gprs)
-    {
-#ifdef __s390x__
-      const struct target_desc *tdesc = current_process ()->tdesc;
-
-      if (register_size (tdesc, 0) == 4)
-	return &regs_info_3264;
-#else
-      return &regs_info_3264;
-#endif
-    }
-  return &regs_info;
-}
-
-/* The "supports_tracepoints" linux_target_ops method.  */
-
-static int
-s390_supports_tracepoints (void)
-{
-  return 1;
-}
-
-/* Implementation of linux_target_ops method "get_thread_area".  */
-
-static int
-s390_get_thread_area (int lwpid, CORE_ADDR *addrp)
-{
-  CORE_ADDR res = ptrace (PTRACE_PEEKUSER, lwpid, (long) PT_ACR0, (long) 0);
-#ifdef __s390x__
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-
-  if (register_size (regcache->tdesc, 0) == 4)
-    res &= 0xffffffffull;
-#endif
-  *addrp = res;
-  return 0;
-}
-
-
-/* Fast tracepoint support.
-
-   The register save area on stack is identical for all targets:
-
-   0x000+i*0x10: VR0-VR31
-   0x200+i*8: GR0-GR15
-   0x280+i*4: AR0-AR15
-   0x2c0: PSWM [64-bit]
-   0x2c8: PSWA [64-bit]
-   0x2d0: FPC
-
-   If we're on 31-bit linux, we just don't store the high parts of the GPRs.
-   Likewise, if there's no VX support, we just store the FRs into the slots
-   of low VR halves.  The agent code is responsible for rearranging that
-   into regcache.  */
-
-/* Code sequence saving GPRs for 31-bit target with no high GPRs.  There's
-   one trick used at the very beginning: since there's no way to allocate
-   stack space without destroying CC (lay instruction can do it, but it's
-   only supported on later CPUs), we take 4 different execution paths for
-   every possible value of CC, allocate stack space, save %r0, stuff the
-   CC value in %r0 (shifted to match its position in PSWM high word),
-   then branch to common path.  */
-
-static const unsigned char s390_ft_entry_gpr_esa[] = {
-  0xa7, 0x14, 0x00, 0x1e,		/* jo .Lcc3 */
-  0xa7, 0x24, 0x00, 0x14,		/* jh .Lcc2 */
-  0xa7, 0x44, 0x00, 0x0a,		/* jl .Lcc1 */
-  /* CC = 0 */
-  0xa7, 0xfa, 0xfd, 0x00,		/* ahi %r15, -0x300 */
-  0x50, 0x00, 0xf2, 0x04,		/* st %r0, 0x204(%r15) */
-  0xa7, 0x08, 0x00, 0x00,		/* lhi %r0, 0 */
-  0xa7, 0xf4, 0x00, 0x18,		/* j .Lccdone */
-  /* .Lcc1: */
-  0xa7, 0xfa, 0xfd, 0x00,		/* ahi %r15, -0x300 */
-  0x50, 0x00, 0xf2, 0x04,		/* st %r0, 0x204(%r15) */
-  0xa7, 0x08, 0x10, 0x00,		/* lhi %r0, 0x1000 */
-  0xa7, 0xf4, 0x00, 0x10,		/* j .Lccdone */
-  /* .Lcc2: */
-  0xa7, 0xfa, 0xfd, 0x00,		/* ahi %r15, -0x300 */
-  0x50, 0x00, 0xf2, 0x04,		/* st %r0, 0x204(%r15) */
-  0xa7, 0x08, 0x20, 0x00,		/* lhi %r0, 0x2000 */
-  0xa7, 0xf4, 0x00, 0x08,		/* j .Lccdone */
-  /* .Lcc3: */
-  0xa7, 0xfa, 0xfd, 0x00,		/* ahi %r15, -0x300 */
-  0x50, 0x00, 0xf2, 0x04,		/* st %r0, 0x204(%r15) */
-  0xa7, 0x08, 0x30, 0x00,		/* lhi %r0, 0x3000 */
-  /* .Lccdone: */
-  0x50, 0x10, 0xf2, 0x0c,		/* st %r1, 0x20c(%r15) */
-  0x50, 0x20, 0xf2, 0x14,		/* st %r2, 0x214(%r15) */
-  0x50, 0x30, 0xf2, 0x1c,		/* st %r3, 0x21c(%r15) */
-  0x50, 0x40, 0xf2, 0x24,		/* st %r4, 0x224(%r15) */
-  0x50, 0x50, 0xf2, 0x2c,		/* st %r5, 0x22c(%r15) */
-  0x50, 0x60, 0xf2, 0x34,		/* st %r6, 0x234(%r15) */
-  0x50, 0x70, 0xf2, 0x3c,		/* st %r7, 0x23c(%r15) */
-  0x50, 0x80, 0xf2, 0x44,		/* st %r8, 0x244(%r15) */
-  0x50, 0x90, 0xf2, 0x4c,		/* st %r9, 0x24c(%r15) */
-  0x50, 0xa0, 0xf2, 0x54,		/* st %r10, 0x254(%r15) */
-  0x50, 0xb0, 0xf2, 0x5c,		/* st %r11, 0x25c(%r15) */
-  0x50, 0xc0, 0xf2, 0x64,		/* st %r12, 0x264(%r15) */
-  0x50, 0xd0, 0xf2, 0x6c,		/* st %r13, 0x26c(%r15) */
-  0x50, 0xe0, 0xf2, 0x74,		/* st %r14, 0x274(%r15) */
-  /* Compute original value of %r15 and store it.  We use ahi instead
-     of la to preserve the whole value, and not just the low 31 bits.
-     This is not particularly important here, but essential in the
-     zarch case where someone might be using the high word of %r15
-     as an extra register.  */
-  0x18, 0x1f,				/* lr %r1, %r15 */
-  0xa7, 0x1a, 0x03, 0x00,		/* ahi %r1, 0x300 */
-  0x50, 0x10, 0xf2, 0x7c,		/* st %r1, 0x27c(%r15) */
-};
-
-/* Code sequence saving GPRs for 31-bit target with high GPRs and for 64-bit
-   target.  Same as above, except this time we can use load/store multiple,
-   since the 64-bit regs are tightly packed.  */
-
-static const unsigned char s390_ft_entry_gpr_zarch[] = {
-  0xa7, 0x14, 0x00, 0x21,		/* jo .Lcc3 */
-  0xa7, 0x24, 0x00, 0x16,		/* jh .Lcc2 */
-  0xa7, 0x44, 0x00, 0x0b,		/* jl .Lcc1 */
-  /* CC = 0 */
-  0xa7, 0xfb, 0xfd, 0x00,		/* aghi %r15, -0x300 */
-  0xeb, 0x0e, 0xf2, 0x00, 0x00, 0x24,	/* stmg %r0, %r14, 0x200(%r15) */
-  0xa7, 0x08, 0x00, 0x00,		/* lhi %r0, 0 */
-  0xa7, 0xf4, 0x00, 0x1b,		/* j .Lccdone */
-  /* .Lcc1: */
-  0xa7, 0xfb, 0xfd, 0x00,		/* aghi %r15, -0x300 */
-  0xeb, 0x0e, 0xf2, 0x00, 0x00, 0x24,	/* stmg %r0, %r14, 0x200(%r15) */
-  0xa7, 0x08, 0x10, 0x00,		/* lhi %r0, 0x1000 */
-  0xa7, 0xf4, 0x00, 0x12,		/* j .Lccdone */
-  /* .Lcc2: */
-  0xa7, 0xfb, 0xfd, 0x00,		/* aghi %r15, -0x300 */
-  0xeb, 0x0e, 0xf2, 0x00, 0x00, 0x24,	/* stmg %r0, %r14, 0x200(%r15) */
-  0xa7, 0x08, 0x20, 0x00,		/* lhi %r0, 0x2000 */
-  0xa7, 0xf4, 0x00, 0x09,		/* j .Lccdone */
-  /* .Lcc3: */
-  0xa7, 0xfb, 0xfd, 0x00,		/* aghi %r15, -0x300 */
-  0xeb, 0x0e, 0xf2, 0x00, 0x00, 0x24,	/* stmg %r0, %r14, 0x200(%r15) */
-  0xa7, 0x08, 0x30, 0x00,		/* lhi %r0, 0x3000 */
-  /* .Lccdone: */
-  0xb9, 0x04, 0x00, 0x1f,		/* lgr %r1, %r15 */
-  0xa7, 0x1b, 0x03, 0x00,		/* aghi %r1, 0x300 */
-  0xe3, 0x10, 0xf2, 0x78, 0x00, 0x24,	/* stg %r1, 0x278(%r15) */
-};
-
-/* Code sequence saving ARs, PSWM and FPC.  PSWM has to be assembled from
-   current PSWM (read by epsw) and CC from entry (in %r0).  */
-
-static const unsigned char s390_ft_entry_misc[] = {
-  0x9b, 0x0f, 0xf2, 0x80,		/* stam %a0, %a15, 0x20(%%r15) */
-  0xb9, 0x8d, 0x00, 0x23,		/* epsw %r2, %r3 */
-  0xa7, 0x18, 0xcf, 0xff,		/* lhi %r1, ~0x3000 */
-  0x14, 0x21,				/* nr %r2, %r1 */
-  0x16, 0x20,				/* or %r2, %r0 */
-  0x50, 0x20, 0xf2, 0xc0,		/* st %r2, 0x2c0(%r15) */
-  0x50, 0x30, 0xf2, 0xc4,		/* st %r3, 0x2c4(%r15) */
-  0xb2, 0x9c, 0xf2, 0xd0,		/* stfpc 0x2d0(%r15) */
-};
-
-/* Code sequence saving FRs, used if VX not supported.  */
-
-static const unsigned char s390_ft_entry_fr[] = {
-  0x60, 0x00, 0xf0, 0x00,		/* std %f0, 0x000(%r15) */
-  0x60, 0x10, 0xf0, 0x10,		/* std %f1, 0x010(%r15) */
-  0x60, 0x20, 0xf0, 0x20,		/* std %f2, 0x020(%r15) */
-  0x60, 0x30, 0xf0, 0x30,		/* std %f3, 0x030(%r15) */
-  0x60, 0x40, 0xf0, 0x40,		/* std %f4, 0x040(%r15) */
-  0x60, 0x50, 0xf0, 0x50,		/* std %f5, 0x050(%r15) */
-  0x60, 0x60, 0xf0, 0x60,		/* std %f6, 0x060(%r15) */
-  0x60, 0x70, 0xf0, 0x70,		/* std %f7, 0x070(%r15) */
-  0x60, 0x80, 0xf0, 0x80,		/* std %f8, 0x080(%r15) */
-  0x60, 0x90, 0xf0, 0x90,		/* std %f9, 0x090(%r15) */
-  0x60, 0xa0, 0xf0, 0xa0,		/* std %f10, 0x0a0(%r15) */
-  0x60, 0xb0, 0xf0, 0xb0,		/* std %f11, 0x0b0(%r15) */
-  0x60, 0xc0, 0xf0, 0xc0,		/* std %f12, 0x0c0(%r15) */
-  0x60, 0xd0, 0xf0, 0xd0,		/* std %f13, 0x0d0(%r15) */
-  0x60, 0xe0, 0xf0, 0xe0,		/* std %f14, 0x0e0(%r15) */
-  0x60, 0xf0, 0xf0, 0xf0,		/* std %f15, 0x0f0(%r15) */
-};
-
-/* Code sequence saving VRs, used if VX not supported.  */
-
-static const unsigned char s390_ft_entry_vr[] = {
-  0xe7, 0x0f, 0xf0, 0x00, 0x00, 0x3e,	/* vstm %v0, %v15, 0x000(%r15) */
-  0xe7, 0x0f, 0xf1, 0x00, 0x0c, 0x3e,	/* vstm %v16, %v31, 0x100(%r15) */
-};
-
-/* Code sequence doing the collection call for 31-bit target.  %r1 contains
-   the address of the literal pool.  */
-
-static const unsigned char s390_ft_main_31[] = {
-  /* Load the literals into registers.  */
-  0x58, 0x50, 0x10, 0x00,		/* l %r5, 0x0(%r1) */
-  0x58, 0x20, 0x10, 0x04,		/* l %r2, 0x4(%r1) */
-  0x58, 0x40, 0x10, 0x08,		/* l %r4, 0x8(%r1) */
-  0x58, 0x60, 0x10, 0x0c,		/* l %r6, 0xc(%r1) */
-  /* Save original PSWA (tracepoint address | 0x80000000).  */
-  0x50, 0x50, 0xf2, 0xcc,		/* st %r5, 0x2cc(%r15) */
-  /* Construct a collecting_t object at %r15+0x2e0.  */
-  0x50, 0x20, 0xf2, 0xe0,		/* st %r2, 0x2e0(%r15) */
-  0x9b, 0x00, 0xf2, 0xe4,		/* stam %a0, %a0, 0x2e4(%r15) */
-  /* Move its address to %r0.  */
-  0x41, 0x00, 0xf2, 0xe0,		/* la %r0, 0x2e0(%r15) */
-  /* Take the lock.  */
-  /* .Lloop:  */
-  0xa7, 0x18, 0x00, 0x00,		/* lhi %r1, 0 */
-  0xba, 0x10, 0x60, 0x00,		/* cs %r1, %r0, 0(%r6) */
-  0xa7, 0x74, 0xff, 0xfc,		/* jne .Lloop */
-  /* Address of the register save block to %r3.  */
-  0x18, 0x3f,				/* lr %r3, %r15 */
-  /* Make a stack frame, so that we can call the collector.  */
-  0xa7, 0xfa, 0xff, 0xa0,		/* ahi %r15, -0x60 */
-  /* Call it.  */
-  0x0d, 0xe4,				/* basr %r14, %r4 */
-  /* And get rid of the stack frame again.  */
-  0x41, 0xf0, 0xf0, 0x60,		/* la %r15, 0x60(%r15) */
-  /* Leave the lock.  */
-  0x07, 0xf0, 				/* br %r0 */
-  0xa7, 0x18, 0x00, 0x00,		/* lhi %r1, 0 */
-  0x50, 0x10, 0x60, 0x00,		/* st %t1, 0(%r6) */
-};
-
-/* Code sequence doing the collection call for 64-bit target.  %r1 contains
-   the address of the literal pool.  */
-
-static const unsigned char s390_ft_main_64[] = {
-  /* Load the literals into registers.  */
-  0xe3, 0x50, 0x10, 0x00, 0x00, 0x04,	/* lg %r5, 0x00(%r1) */
-  0xe3, 0x20, 0x10, 0x08, 0x00, 0x04,	/* lg %r2, 0x08(%r1) */
-  0xe3, 0x40, 0x10, 0x10, 0x00, 0x04,	/* lg %r4, 0x10(%r1) */
-  0xe3, 0x60, 0x10, 0x18, 0x00, 0x04,	/* lg %r6, 0x18(%r1) */
-  /* Save original PSWA (tracepoint address).  */
-  0xe3, 0x50, 0xf2, 0xc8, 0x00, 0x24,	/* stg %r5, 0x2c8(%r15) */
-  /* Construct a collecting_t object at %r15+0x2e0.  */
-  0xe3, 0x20, 0xf2, 0xe0, 0x00, 0x24,	/* stg %r2, 0x2e0(%r15) */
-  0x9b, 0x01, 0xf2, 0xe8,		/* stam %a0, %a1, 0x2e8(%r15) */
-  /* Move its address to %r0.  */
-  0x41, 0x00, 0xf2, 0xe0,		/* la %r0, 0x2e0(%r15) */
-  /* Take the lock.  */
-  /* .Lloop:  */
-  0xa7, 0x19, 0x00, 0x00,		/* lghi %r1, 0 */
-  0xeb, 0x10, 0x60, 0x00, 0x00, 0x30,	/* csg %r1, %r0, 0(%r6) */
-  0xa7, 0x74, 0xff, 0xfb,		/* jne .Lloop */
-  /* Address of the register save block to %r3.  */
-  0xb9, 0x04, 0x00, 0x3f,		/* lgr %r3, %r15 */
-  /* Make a stack frame, so that we can call the collector.  */
-  0xa7, 0xfb, 0xff, 0x60,		/* aghi %r15, -0xa0 */
-  /* Call it.  */
-  0x0d, 0xe4,				/* basr %r14, %r4 */
-  /* And get rid of the stack frame again.  */
-  0x41, 0xf0, 0xf0, 0xa0,		/* la %r15, 0xa0(%r15) */
-  /* Leave the lock.  */
-  0x07, 0xf0,				/* br %r0 */
-  0xa7, 0x19, 0x00, 0x00,		/* lghi %r1, 0 */
-  0xe3, 0x10, 0x60, 0x00, 0x00, 0x24,	/* stg %t1, 0(%r6) */
-};
-
-/* Code sequence restoring FRs, for targets with no VX support.  */
-
-static const unsigned char s390_ft_exit_fr[] = {
-  0x68, 0x00, 0xf0, 0x00,		/* ld %f0, 0x000(%r15) */
-  0x68, 0x10, 0xf0, 0x10,		/* ld %f1, 0x010(%r15) */
-  0x68, 0x20, 0xf0, 0x20,		/* ld %f2, 0x020(%r15) */
-  0x68, 0x30, 0xf0, 0x30,		/* ld %f3, 0x030(%r15) */
-  0x68, 0x40, 0xf0, 0x40,		/* ld %f4, 0x040(%r15) */
-  0x68, 0x50, 0xf0, 0x50,		/* ld %f5, 0x050(%r15) */
-  0x68, 0x60, 0xf0, 0x60,		/* ld %f6, 0x060(%r15) */
-  0x68, 0x70, 0xf0, 0x70,		/* ld %f7, 0x070(%r15) */
-  0x68, 0x80, 0xf0, 0x80,		/* ld %f8, 0x080(%r15) */
-  0x68, 0x90, 0xf0, 0x90,		/* ld %f9, 0x090(%r15) */
-  0x68, 0xa0, 0xf0, 0xa0,		/* ld %f10, 0x0a0(%r15) */
-  0x68, 0xb0, 0xf0, 0xb0,		/* ld %f11, 0x0b0(%r15) */
-  0x68, 0xc0, 0xf0, 0xc0,		/* ld %f12, 0x0c0(%r15) */
-  0x68, 0xd0, 0xf0, 0xd0,		/* ld %f13, 0x0d0(%r15) */
-  0x68, 0xe0, 0xf0, 0xe0,		/* ld %f14, 0x0e0(%r15) */
-  0x68, 0xf0, 0xf0, 0xf0,		/* ld %f15, 0x0f0(%r15) */
-};
-
-/* Code sequence restoring VRs.  */
-
-static const unsigned char s390_ft_exit_vr[] = {
-  0xe7, 0x0f, 0xf0, 0x00, 0x00, 0x36,	/* vlm %v0, %v15, 0x000(%r15) */
-  0xe7, 0x0f, 0xf1, 0x00, 0x0c, 0x36,	/* vlm %v16, %v31, 0x100(%r15) */
-};
-
-/* Code sequence restoring misc registers.  As for PSWM, only CC should be
-   modified by C code, so we use the alr instruction to restore it by
-   manufacturing an operand that'll result in the original flags.  */
-
-static const unsigned char s390_ft_exit_misc[] = {
-  0xb2, 0x9d, 0xf2, 0xd0,		/* lfpc 0x2d0(%r15) */
-  0x58, 0x00, 0xf2, 0xc0,		/* l %r0, 0x2c0(%r15) */
-  /* Extract CC to high 2 bits of %r0.  */
-  0x88, 0x00, 0x00, 0x0c,		/* srl %r0, 12 */
-  0x89, 0x00, 0x00, 0x1e,		/* sll %r0, 30 */
-  /* Add %r0 to itself.  Result will be nonzero iff CC bit 0 is set, and
-     will have carry iff CC bit 1 is set - resulting in the same flags
-     as the original.  */
-  0x1e, 0x00,				/* alr %r0, %r0 */
-  0x9a, 0x0f, 0xf2, 0x80,		/* lam %a0, %a15, 0x280(%r15) */
-};
-
-/* Code sequence restoring GPRs, for 31-bit targets with no high GPRs.  */
-
-static const unsigned char s390_ft_exit_gpr_esa[] = {
-  0x58, 0x00, 0xf2, 0x04,		/* l %r0, 0x204(%r15) */
-  0x58, 0x10, 0xf2, 0x0c,		/* l %r1, 0x20c(%r15) */
-  0x58, 0x20, 0xf2, 0x14,		/* l %r2, 0x214(%r15) */
-  0x58, 0x30, 0xf2, 0x1c,		/* l %r3, 0x21c(%r15) */
-  0x58, 0x40, 0xf2, 0x24,		/* l %r4, 0x224(%r15) */
-  0x58, 0x50, 0xf2, 0x2c,		/* l %r5, 0x22c(%r15) */
-  0x58, 0x60, 0xf2, 0x34,		/* l %r6, 0x234(%r15) */
-  0x58, 0x70, 0xf2, 0x3c,		/* l %r7, 0x23c(%r15) */
-  0x58, 0x80, 0xf2, 0x44,		/* l %r8, 0x244(%r15) */
-  0x58, 0x90, 0xf2, 0x4c,		/* l %r9, 0x24c(%r15) */
-  0x58, 0xa0, 0xf2, 0x54,		/* l %r10, 0x254(%r15) */
-  0x58, 0xb0, 0xf2, 0x5c,		/* l %r11, 0x25c(%r15) */
-  0x58, 0xc0, 0xf2, 0x64,		/* l %r12, 0x264(%r15) */
-  0x58, 0xd0, 0xf2, 0x6c,		/* l %r13, 0x26c(%r15) */
-  0x58, 0xe0, 0xf2, 0x74,		/* l %r14, 0x274(%r15) */
-  0x58, 0xf0, 0xf2, 0x7c,		/* l %r15, 0x27c(%r15) */
-};
-
-/* Code sequence restoring GPRs, for 64-bit targets and 31-bit targets
-   with high GPRs.  */
-
-static const unsigned char s390_ft_exit_gpr_zarch[] = {
-  0xeb, 0x0f, 0xf2, 0x00, 0x00, 0x04,	/* lmg %r0, %r15, 0x200(%r15) */
-};
-
-/* Writes instructions to target, updating the to pointer.  */
-
-static void
-append_insns (CORE_ADDR *to, size_t len, const unsigned char *buf)
-{
-  target_write_memory (*to, buf, len);
-  *to += len;
-}
-
-/* Relocates an instruction from oldloc to *to, updating to.  */
-
-static int
-s390_relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc, int is_64)
-{
-  gdb_byte buf[6];
-  int ilen;
-  int op2;
-  /* 0: no fixup, 1: PC16DBL fixup, 2: PC32DBL fixup.  */
-  int mode = 0;
-  int is_bras = 0;
-  read_inferior_memory (oldloc, buf, sizeof buf);
-  if (buf[0] < 0x40)
-    ilen = 2;
-  else if (buf[0] < 0xc0)
-    ilen = 4;
-  else
-    ilen = 6;
-  switch (buf[0])
-    {
-    case 0x05: /* BALR */
-    case 0x0c: /* BASSM */
-    case 0x0d: /* BASR */
-    case 0x45: /* BAL */
-    case 0x4d: /* BAS */
-      /* These save a return address and mess around with registers.
-	 We can't relocate them.  */
-      return 1;
-    case 0x84: /* BRXH */
-    case 0x85: /* BRXLE */
-      mode = 1;
-      break;
-    case 0xa7:
-      op2 = buf[1] & 0xf;
-      /* BRC, BRAS, BRCT, BRCTG */
-      if (op2 >= 4 && op2 <= 7)
-	mode = 1;
-      /* BRAS */
-      if (op2 == 5)
-	is_bras = 1;
-      break;
-    case 0xc0:
-      op2 = buf[1] & 0xf;
-      /* LARL, BRCL, BRASL */
-      if (op2 == 0 || op2 == 4 || op2 == 5)
-	mode = 2;
-      /* BRASL */
-      if (op2 == 5)
-	is_bras = 1;
-      break;
-    case 0xc4:
-    case 0xc6:
-      /* PC-relative addressing instructions.  */
-      mode = 2;
-      break;
-    case 0xc5: /* BPRP */
-    case 0xc7: /* BPP */
-      /* Branch prediction - just skip it.  */
-      return 0;
-    case 0xcc:
-      op2 = buf[1] & 0xf;
-      /* BRCTH */
-      if (op2 == 6)
-	mode = 2;
-      break;
-    case 0xec:
-      op2 = buf[5];
-      switch (op2)
-	{
-	case 0x44: /* BRXHG */
-	case 0x45: /* BRXLG */
-	case 0x64: /* CGRJ */
-	case 0x65: /* CLGRJ */
-	case 0x76: /* CRJ */
-	case 0x77: /* CLRJ */
-	  mode = 1;
-	  break;
-	}
-      break;
-    }
-
-  if (mode != 0)
-    {
-      /* We'll have to relocate an instruction with a PC-relative field.
-	 First, compute the target.  */
-      int64_t loffset = 0;
-      CORE_ADDR target;
-      if (mode == 1)
-	{
-	  int16_t soffset = 0;
-	  memcpy (&soffset, buf + 2, 2);
-	  loffset = soffset;
-	}
-      else if (mode == 2)
-	{
-	  int32_t soffset = 0;
-	  memcpy (&soffset, buf + 2, 4);
-	  loffset = soffset;
-	}
-      target = oldloc + loffset * 2;
-      if (!is_64)
-	target &= 0x7fffffff;
-
-      if (is_bras)
-	{
-	  /* BRAS or BRASL was used.  We cannot just relocate those, since
-	     they save the return address in a register.  We can, however,
-	     replace them with a LARL+JG sequence.  */
-
-	  /* Make the LARL.  */
-	  int32_t soffset;
-	  buf[0] = 0xc0;
-	  buf[1] &= 0xf0;
-	  loffset = oldloc + ilen - *to;
-	  loffset >>= 1;
-	  soffset = loffset;
-	  if (soffset != loffset && is_64)
-	    return 1;
-	  memcpy (buf + 2, &soffset, 4);
-	  append_insns (to, 6, buf);
-
-	  /* Note: this is not fully correct.  In 31-bit mode, LARL will write
-	     an address with the top bit 0, while BRAS/BRASL will write it
-	     with top bit 1.  It should not matter much, since linux compilers
-	     use BR and not BSM to return from functions, but it could confuse
-	     some poor stack unwinder.  */
-
-	  /* We'll now be writing a JG.  */
-	  mode = 2;
-	  buf[0] = 0xc0;
-	  buf[1] = 0xf4;
-	  ilen = 6;
-	}
-
-      /* Compute the new offset and write it to the buffer.  */
-      loffset = target - *to;
-      loffset >>= 1;
-
-      if (mode == 1)
-	{
-	  int16_t soffset = loffset;
-	  if (soffset != loffset)
-	    return 1;
-	  memcpy (buf + 2, &soffset, 2);
-	}
-      else if (mode == 2)
-	{
-	  int32_t soffset = loffset;
-	  if (soffset != loffset && is_64)
-	    return 1;
-	  memcpy (buf + 2, &soffset, 4);
-	}
-    }
-  append_insns (to, ilen, buf);
-  return 0;
-}
-
-/* Implementation of linux_target_ops method
-   "install_fast_tracepoint_jump_pad".  */
-
-static int
-s390_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint,
-				       CORE_ADDR tpaddr,
-				       CORE_ADDR collector,
-				       CORE_ADDR lockaddr,
-				       ULONGEST orig_size,
-				       CORE_ADDR *jump_entry,
-				       CORE_ADDR *trampoline,
-				       ULONGEST *trampoline_size,
-				       unsigned char *jjump_pad_insn,
-				       ULONGEST *jjump_pad_insn_size,
-				       CORE_ADDR *adjusted_insn_addr,
-				       CORE_ADDR *adjusted_insn_addr_end,
-				       char *err)
-{
-  int i;
-  int64_t loffset;
-  int32_t offset;
-  unsigned char jbuf[6] = { 0xc0, 0xf4, 0, 0, 0, 0 };	/* jg ... */
-  CORE_ADDR buildaddr = *jump_entry;
-#ifdef __s390x__
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-  int is_64 = register_size (regcache->tdesc, 0) == 8;
-  int is_zarch = is_64 || have_hwcap_s390_high_gprs;
-  int has_vx = have_hwcap_s390_vx;
-#else
-  int is_64 = 0, is_zarch = 0, has_vx = 0;
-#endif
-  CORE_ADDR literals[4] = {
-    tpaddr,
-    tpoint,
-    collector,
-    lockaddr,
-  };
-
-  /* First, store the GPRs.  */
-  if (is_zarch)
-    append_insns (&buildaddr, sizeof s390_ft_entry_gpr_zarch,
-			      s390_ft_entry_gpr_zarch);
-  else
-    append_insns (&buildaddr, sizeof s390_ft_entry_gpr_esa,
-			      s390_ft_entry_gpr_esa);
-
-  /* Second, misc registers (ARs, PSWM, FPC).  PSWA will be stored below.  */
-  append_insns (&buildaddr, sizeof s390_ft_entry_misc, s390_ft_entry_misc);
-
-  /* Third, FRs or VRs.  */
-  if (has_vx)
-    append_insns (&buildaddr, sizeof s390_ft_entry_vr, s390_ft_entry_vr);
-  else
-    append_insns (&buildaddr, sizeof s390_ft_entry_fr, s390_ft_entry_fr);
-
-  /* Now, the main part of code - store PSWA, take lock, call collector,
-     leave lock.  First, we'll need to fetch 4 literals.  */
-  if (is_64) {
-    unsigned char buf[] = {
-      0x07, 0x07,		/* nopr %r7 */
-      0x07, 0x07,		/* nopr %r7 */
-      0x07, 0x07,		/* nopr %r7 */
-      0xa7, 0x15, 0x00, 0x12,	/* bras %r1, .Lend */
-      0, 0, 0, 0, 0, 0, 0, 0,	/* tpaddr */
-      0, 0, 0, 0, 0, 0, 0, 0,	/* tpoint */
-      0, 0, 0, 0, 0, 0, 0, 0,	/* collector */
-      0, 0, 0, 0, 0, 0, 0, 0,	/* lockaddr */
-      /* .Lend: */
-    };
-    /* Find the proper start place in buf, so that literals will be
-       aligned. */
-    int bufpos = (buildaddr + 2) & 7;
-    /* Stuff the literals into the buffer. */
-    for (i = 0; i < 4; i++) {
-      uint64_t lit = literals[i];
-      memcpy (&buf[sizeof buf - 32 + i * 8], &lit, 8);
-    }
-    append_insns (&buildaddr, sizeof buf - bufpos, buf + bufpos);
-    append_insns (&buildaddr, sizeof s390_ft_main_64, s390_ft_main_64);
-  } else {
-    unsigned char buf[] = {
-      0x07, 0x07,		/* nopr %r7 */
-      0xa7, 0x15, 0x00, 0x0a,	/* bras %r1, .Lend */
-      0, 0, 0, 0,		/* tpaddr */
-      0, 0, 0, 0,		/* tpoint */
-      0, 0, 0, 0,		/* collector */
-      0, 0, 0, 0,		/* lockaddr */
-      /* .Lend: */
-    };
-    /* Find the proper start place in buf, so that literals will be
-       aligned. */
-    int bufpos = (buildaddr + 2) & 3;
-    /* First literal will be saved as the PSWA, make sure it has the high bit
-       set.  */
-    literals[0] |= 0x80000000;
-    /* Stuff the literals into the buffer. */
-    for (i = 0; i < 4; i++) {
-      uint32_t lit = literals[i];
-      memcpy (&buf[sizeof buf - 16 + i * 4], &lit, 4);
-    }
-    append_insns (&buildaddr, sizeof buf - bufpos, buf + bufpos);
-    append_insns (&buildaddr, sizeof s390_ft_main_31, s390_ft_main_31);
-  }
-
-  /* Restore FRs or VRs.  */
-  if (has_vx)
-    append_insns (&buildaddr, sizeof s390_ft_exit_vr, s390_ft_exit_vr);
-  else
-    append_insns (&buildaddr, sizeof s390_ft_exit_fr, s390_ft_exit_fr);
-
-  /* Restore misc registers.  */
-  append_insns (&buildaddr, sizeof s390_ft_exit_misc, s390_ft_exit_misc);
-
-  /* Restore the GPRs.  */
-  if (is_zarch)
-    append_insns (&buildaddr, sizeof s390_ft_exit_gpr_zarch,
-			      s390_ft_exit_gpr_zarch);
-  else
-    append_insns (&buildaddr, sizeof s390_ft_exit_gpr_esa,
-			      s390_ft_exit_gpr_esa);
-
-  /* Now, adjust the original instruction to execute in the jump
-     pad.  */
-  *adjusted_insn_addr = buildaddr;
-  if (s390_relocate_instruction (&buildaddr, tpaddr, is_64))
-    {
-      sprintf (err, "E.Could not relocate instruction for tracepoint.");
-      return 1;
-    }
-  *adjusted_insn_addr_end = buildaddr;
-
-  /* Finally, write a jump back to the program.  */
-
-  loffset = (tpaddr + orig_size) - buildaddr;
-  loffset >>= 1;
-  offset = loffset;
-  if (is_64 && offset != loffset)
-    {
-      sprintf (err,
-	       "E.Jump back from jump pad too far from tracepoint "
-	       "(offset 0x%" PRIx64 " > int33).", loffset);
-      return 1;
-    }
-  memcpy (jbuf + 2, &offset, 4);
-  append_insns (&buildaddr, sizeof jbuf, jbuf);
-
-  /* The jump pad is now built.  Wire in a jump to our jump pad.  This
-     is always done last (by our caller actually), so that we can
-     install fast tracepoints with threads running.  This relies on
-     the agent's atomic write support.  */
-  loffset = *jump_entry - tpaddr;
-  loffset >>= 1;
-  offset = loffset;
-  if (is_64 && offset != loffset)
-    {
-      sprintf (err,
-	       "E.Jump back from jump pad too far from tracepoint "
-	       "(offset 0x%" PRIx64 " > int33).", loffset);
-      return 1;
-    }
-  memcpy (jbuf + 2, &offset, 4);
-  memcpy (jjump_pad_insn, jbuf, sizeof jbuf);
-  *jjump_pad_insn_size = sizeof jbuf;
-
-  /* Return the end address of our pad.  */
-  *jump_entry = buildaddr;
-
-  return 0;
-}
-
-/* Implementation of linux_target_ops method
-   "get_min_fast_tracepoint_insn_len".  */
-
-static int
-s390_get_min_fast_tracepoint_insn_len (void)
-{
-  /* We only support using 6-byte jumps to reach the tracepoint code.
-     If the tracepoint buffer were allocated sufficiently close (64kiB)
-     to the executable code, and the traced instruction itself was close
-     enough to the beginning, we could use 4-byte jumps, but this doesn't
-     seem to be worth the effort.  */
-  return 6;
-}
-
-/* Implementation of linux_target_ops method "get_ipa_tdesc_idx".  */
-
-static int
-s390_get_ipa_tdesc_idx (void)
-{
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-  const struct target_desc *tdesc = regcache->tdesc;
-
-#ifdef __s390x__
-  if (tdesc == tdesc_s390x_linux64)
-    return S390_TDESC_64;
-  if (tdesc == tdesc_s390x_linux64v1)
-    return S390_TDESC_64V1;
-  if (tdesc == tdesc_s390x_linux64v2)
-    return S390_TDESC_64V2;
-  if (tdesc == tdesc_s390x_te_linux64)
-    return S390_TDESC_TE;
-  if (tdesc == tdesc_s390x_vx_linux64)
-    return S390_TDESC_VX;
-  if (tdesc == tdesc_s390x_tevx_linux64)
-    return S390_TDESC_TEVX;
-  if (tdesc == tdesc_s390x_gs_linux64)
-    return S390_TDESC_GS;
-#endif
-
-  if (tdesc == tdesc_s390_linux32)
-    return S390_TDESC_32;
-  if (tdesc == tdesc_s390_linux32v1)
-    return S390_TDESC_32V1;
-  if (tdesc == tdesc_s390_linux32v2)
-    return S390_TDESC_32V2;
-  if (tdesc == tdesc_s390_linux64)
-    return S390_TDESC_64;
-  if (tdesc == tdesc_s390_linux64v1)
-    return S390_TDESC_64V1;
-  if (tdesc == tdesc_s390_linux64v2)
-    return S390_TDESC_64V2;
-  if (tdesc == tdesc_s390_te_linux64)
-    return S390_TDESC_TE;
-  if (tdesc == tdesc_s390_vx_linux64)
-    return S390_TDESC_VX;
-  if (tdesc == tdesc_s390_tevx_linux64)
-    return S390_TDESC_TEVX;
-  if (tdesc == tdesc_s390_gs_linux64)
-    return S390_TDESC_GS;
-
-  return 0;
-}
-
-/* Appends given buffer to current_insn_ptr in the target.  */
-
-static void
-add_insns (const unsigned char *start, int len)
-{
-  CORE_ADDR buildaddr = current_insn_ptr;
-
-  if (debug_threads)
-    debug_printf ("Adding %d bytes of insn at %s\n",
-		  len, paddress (buildaddr));
-
-  append_insns (&buildaddr, len, start);
-  current_insn_ptr = buildaddr;
-}
-
-/* Register usage in emit:
-
-   - %r0, %r1: temp
-   - %r2: top of stack (high word for 31-bit)
-   - %r3: low word of top of stack (for 31-bit)
-   - %r4, %r5: temp
-   - %r6, %r7, %r8: don't use
-   - %r9: saved arg1
-   - %r10: saved arg2
-   - %r11: frame pointer
-   - %r12: saved top of stack for void_call_2 (high word for 31-bit)
-   - %r13: low word of saved top of stack (for 31-bit)
-   - %r14: return address for calls
-   - %r15: stack pointer
-
-  */
-
-/* The "emit_prologue" emit_ops method for s390.  */
-
-static void
-s390_emit_prologue (void)
-{
-  static const unsigned char buf[] = {
-    0x90, 0x9f, 0xf0, 0x24,		/* stm %r9, %r15, 0x24(%r15) */
-    0x18, 0x92,				/* lr %r9, %r2 */
-    0x18, 0xa3,				/* lr %r10, %r3 */
-    0x18, 0xbf,				/* lr %r11, %r15 */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_epilogue" emit_ops method for s390.  */
-
-static void
-s390_emit_epilogue (void)
-{
-  static const unsigned char buf[] = {
-    0x90, 0x23, 0xa0, 0x00,		/* stm %r2, %r3, 0(%r10) */
-    0xa7, 0x28, 0x00, 0x00,		/* lhi %r2, 0 */
-    0x98, 0x9f, 0xb0, 0x24,		/* lm %r9, %r15, 0x24(%r11) */
-    0x07, 0xfe,				/* br %r14 */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_add" emit_ops method for s390.  */
-
-static void
-s390_emit_add (void)
-{
-  static const unsigned char buf[] = {
-    0x5e, 0x30, 0xf0, 0x04,		/* al %r3, 4(%r15) */
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x98,	/* al %r2, 0(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_sub" emit_ops method for s390.  */
-
-static void
-s390_emit_sub (void)
-{
-  static const unsigned char buf[] = {
-    0x98, 0x45, 0xf0, 0x00,	/* lm %r4, %r5, 0(%r15) */
-    0x1f, 0x53,			/* slr %r5, %r3 */
-    0xb9, 0x99, 0x00, 0x42,	/* slbr %r4, %r2 */
-    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
-    0x18, 0x35,			/* lr %r3, %r5 */
-    0x18, 0x24,			/* lr %r2, %r4 */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_mul" emit_ops method for s390.  */
-
-static void
-s390_emit_mul (void)
-{
-  emit_error = 1;
-}
-
-/* The "emit_lsh" emit_ops method for s390.  */
-
-static void
-s390_emit_lsh (void)
-{
-  static const unsigned char buf[] = {
-    0x18, 0x43,			/* lr %r4, %r3 */
-    0x98, 0x23, 0xf0, 0x00,	/* lm %r2, %r3, 0(%r15) */
-    0x8d, 0x20, 0x40, 0x00,	/* sldl %r2, 0(%r4) */
-    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_rsh_signed" emit_ops method for s390.  */
-
-static void
-s390_emit_rsh_signed (void)
-{
-  static const unsigned char buf[] = {
-    0x18, 0x43,			/* lr %r4, %r3 */
-    0x98, 0x23, 0xf0, 0x00,	/* lm %r2, %r3, 0(%r15) */
-    0x8e, 0x20, 0x40, 0x00,	/* srda %r2, 0(%r4) */
-    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_rsh_unsigned" emit_ops method for s390.  */
-
-static void
-s390_emit_rsh_unsigned (void)
-{
-  static const unsigned char buf[] = {
-    0x18, 0x43,			/* lr %r4, %r3 */
-    0x98, 0x23, 0xf0, 0x00,	/* lm %r2, %r3, 0(%r15) */
-    0x8c, 0x20, 0x40, 0x00,	/* srdl %r2, 0(%r4) */
-    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_ext" emit_ops method for s390.  */
-
-static void
-s390_emit_ext (int arg)
-{
-  unsigned char buf[] = {
-    0x8d, 0x20, 0x00, (unsigned char) (64 - arg), /* sldl %r2, <64-arg> */
-    0x8e, 0x20, 0x00, (unsigned char) (64 - arg), /* srda %r2, <64-arg> */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_log_not" emit_ops method for s390.  */
-
-static void
-s390_emit_log_not (void)
-{
-  static const unsigned char buf[] = {
-    0x16, 0x23,			/* or %r2, %r3 */
-    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
-    0xa7, 0x38, 0x00, 0x00,	/* lhi %r3, 0 */
-    0xa7, 0x74, 0x00, 0x04,	/* jne .Lskip */
-    0xa7, 0x38, 0x00, 0x01,	/* lhi %r3, 1 */
-    /* .Lskip: */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_bit_and" emit_ops method for s390.  */
-
-static void
-s390_emit_bit_and (void)
-{
-  static const unsigned char buf[] = {
-    0x54, 0x20, 0xf0, 0x00,	/* n %r2, 0(%r15) */
-    0x54, 0x30, 0xf0, 0x04,	/* n %r3, 4(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_bit_or" emit_ops method for s390.  */
-
-static void
-s390_emit_bit_or (void)
-{
-  static const unsigned char buf[] = {
-    0x56, 0x20, 0xf0, 0x00,	/* o %r2, 0(%r15) */
-    0x56, 0x30, 0xf0, 0x04,	/* o %r3, 4(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_bit_xor" emit_ops method for s390.  */
-
-static void
-s390_emit_bit_xor (void)
-{
-  static const unsigned char buf[] = {
-    0x57, 0x20, 0xf0, 0x00,	/* x %r2, 0(%r15) */
-    0x57, 0x30, 0xf0, 0x04,	/* x %r3, 4(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_bit_not" emit_ops method for s390.  */
-
-static void
-s390_emit_bit_not (void)
-{
-  static const unsigned char buf[] = {
-    0xa7, 0x48, 0xff, 0xff,	/* lhi %r4, -1 */
-    0x17, 0x24,			/* xr %r2, %r4 */
-    0x17, 0x34,			/* xr %r3, %r4 */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_equal" emit_ops method for s390.  */
-
-static void
-s390_emit_equal (void)
-{
-  s390_emit_bit_xor ();
-  s390_emit_log_not ();
-}
-
-/* The "emit_less_signed" emit_ops method for s390.  */
-
-static void
-s390_emit_less_signed (void)
-{
-  static const unsigned char buf[] = {
-    0x59, 0x20, 0xf0, 0x00,	/* c %r2, 0(%r15) */
-    0xa7, 0x24, 0x00, 0x0c,	/* jh .Lless */
-    0xa7, 0x44, 0x00, 0x06,	/* jl .Lhigh */
-    0x55, 0x30, 0xf0, 0x04,	/* cl %r3, 4(%r15) */
-    0xa7, 0x24, 0x00, 0x06,	/* jh .Lless */
-    /* .Lhigh: */
-    0xa7, 0x38, 0x00, 0x00,	/* lhi %r3, 0 */
-    0xa7, 0xf4, 0x00, 0x04,	/* j .Lend */
-    /* .Lless: */
-    0xa7, 0x38, 0x00, 0x01,	/* lhi %r3, 1 */
-    /* .Lend: */
-    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
-    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_less_unsigned" emit_ops method for s390.  */
-
-static void
-s390_emit_less_unsigned (void)
-{
-  static const unsigned char buf[] = {
-    0x55, 0x20, 0xf0, 0x00,	/* cl %r2, 0(%r15) */
-    0xa7, 0x24, 0x00, 0x0c,	/* jh .Lless */
-    0xa7, 0x44, 0x00, 0x06,	/* jl .Lhigh */
-    0x55, 0x30, 0xf0, 0x04,	/* cl %r3, 4(%r15) */
-    0xa7, 0x24, 0x00, 0x06,	/* jh .Lless */
-    /* .Lhigh: */
-    0xa7, 0x38, 0x00, 0x00,	/* lhi %r3, 0 */
-    0xa7, 0xf4, 0x00, 0x04,	/* j .Lend */
-    /* .Lless: */
-    0xa7, 0x38, 0x00, 0x01,	/* lhi %r3, 1 */
-    /* .Lend: */
-    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
-    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_ref" emit_ops method for s390.  */
-
-static void
-s390_emit_ref (int size)
-{
-  static const unsigned char buf1[] = {
-    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
-    0x43, 0x30, 0x30, 0x00,	/* ic %r3, 0(%r3) */
-  };
-  static const unsigned char buf2[] = {
-    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
-    0x48, 0x30, 0x30, 0x00,	/* lh %r3, 0(%r3) */
-  };
-  static const unsigned char buf4[] = {
-    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
-    0x58, 0x30, 0x30, 0x00,	/* l %r3, 0(%r3) */
-  };
-  static const unsigned char buf8[] = {
-    0x98, 0x23, 0x30, 0x00,	/* lm %r2, %r3, 0(%r3) */
-  };
-  switch (size)
-    {
-    case 1:
-      add_insns (buf1, sizeof buf1);
-      break;
-    case 2:
-      add_insns (buf2, sizeof buf2);
-      break;
-    case 4:
-      add_insns (buf4, sizeof buf4);
-      break;
-    case 8:
-      add_insns (buf8, sizeof buf8);
-      break;
-    default:
-      emit_error = 1;
-    }
-}
-
-/* The "emit_if_goto" emit_ops method for s390.  */
-
-static void
-s390_emit_if_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0x16, 0x23,				/* or %r2, %r3 */
-    0x98, 0x23, 0xf0, 0x00,		/* lm %r2, %r3, 0(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-    0xc0, 0x74, 0x00, 0x00, 0x00, 0x00	/* jgne <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 12;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_goto" emit_ops method for s390 and s390x.  */
-
-static void
-s390_emit_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0xc0, 0xf4, 0x00, 0x00, 0x00, 0x00,	/* jg <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 2;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "write_goto_address" emit_ops method for s390 and s390x.  */
-
-static void
-s390_write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
-{
-  long diff = ((long) (to - (from - 2))) / 2;
-  int sdiff = diff;
-  unsigned char buf[sizeof sdiff];
-
-  /* We're only doing 4-byte sizes at the moment.  */
-  if (size != sizeof sdiff || sdiff != diff)
-    {
-      emit_error = 1;
-      return;
-    }
-
-  memcpy (buf, &sdiff, sizeof sdiff);
-  target_write_memory (from, buf, sizeof sdiff);
-}
-
-/* Preparation for emitting a literal pool of given size.  Loads the address
-   of the pool into %r1, and jumps over it.  Called should emit the pool data
-   immediately afterwards.  Used for both s390 and s390x.  */
-
-static void
-s390_emit_litpool (int size)
-{
-  static const unsigned char nop[] = {
-    0x07, 0x07,
-  };
-  unsigned char buf[] = {
-    0xa7, 0x15, 0x00,
-    (unsigned char) ((size + 4) / 2),	/* bras %r1, .Lend+size */
-    /* .Lend: */
-  };
-  if (size == 4)
-    {
-      /* buf needs to start at even halfword for litpool to be aligned */
-      if (current_insn_ptr & 2)
-	add_insns (nop, sizeof nop);
-    }
-  else
-    {
-      while ((current_insn_ptr & 6) != 4)
-	add_insns (nop, sizeof nop);
-    }
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_const" emit_ops method for s390.  */
-
-static void
-s390_emit_const (LONGEST num)
-{
-  unsigned long long n = num;
-  unsigned char buf_s[] = {
-    /* lhi %r3, <num> */
-    0xa7, 0x38,
-    (unsigned char) (num >> 8), (unsigned char) num,
-    /* xr %r2, %r2 */
-    0x17, 0x22,
-  };
-  static const unsigned char buf_l[] = {
-    0x98, 0x23, 0x10, 0x00,	/* lm %r2, %r3, 0(%r1) */
-  };
-  if (num < 0x8000 && num >= 0)
-  {
-    add_insns (buf_s, sizeof buf_s);
-  }
-  else
-  {
-    s390_emit_litpool (8);
-    add_insns ((unsigned char *) &n, sizeof n);
-    add_insns (buf_l, sizeof buf_l);
-  }
-}
-
-/* The "emit_call" emit_ops method for s390.  */
-
-static void
-s390_emit_call (CORE_ADDR fn)
-{
-  unsigned int n = fn;
-  static const unsigned char buf[] = {
-    0x58, 0x10, 0x10, 0x00,	/* l %r1, 0(%r1) */
-    0xa7, 0xfa, 0xff, 0xa0,	/* ahi %r15, -0x60 */
-    0x0d, 0xe1,			/* basr %r14, %r1 */
-    0xa7, 0xfa, 0x00, 0x60,	/* ahi %r15, 0x60 */
-  };
-  s390_emit_litpool (4);
-  add_insns ((unsigned char *) &n, sizeof n);
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_reg" emit_ops method for s390.  */
-
-static void
-s390_emit_reg (int reg)
-{
-  unsigned char bufpre[] = {
-    /* lr %r2, %r9 */
-    0x18, 0x29,
-    /* lhi %r3, <reg> */
-    0xa7, 0x38, (unsigned char) (reg >> 8), (unsigned char) reg,
-  };
-  add_insns (bufpre, sizeof bufpre);
-  s390_emit_call (get_raw_reg_func_addr ());
-}
-
-/* The "emit_pop" emit_ops method for s390.  */
-
-static void
-s390_emit_pop (void)
-{
-  static const unsigned char buf[] = {
-    0x98, 0x23, 0xf0, 0x00,	/* lm %r2, %r3, 0(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_stack_flush" emit_ops method for s390.  */
-
-static void
-s390_emit_stack_flush (void)
-{
-  static const unsigned char buf[] = {
-    0xa7, 0xfa, 0xff, 0xf8,	/* ahi %r15, -8 */
-    0x90, 0x23, 0xf0, 0x00,	/* stm %r2, %r3, 0(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_zero_ext" emit_ops method for s390.  */
-
-static void
-s390_emit_zero_ext (int arg)
-{
-  unsigned char buf[] = {
-    0x8d, 0x20, 0x00, (unsigned char) (64 - arg), /* sldl %r2, <64-arg> */
-    0x8c, 0x20, 0x00, (unsigned char) (64 - arg), /* srdl %r2, <64-arg> */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_swap" emit_ops method for s390.  */
-
-static void
-s390_emit_swap (void)
-{
-  static const unsigned char buf[] = {
-    0x98, 0x45, 0xf0, 0x00,	/* lm %r4, %r5, 0(%r15) */
-    0x90, 0x23, 0xf0, 0x00,	/* stm %r2, %r3, 0(%r15) */
-    0x18, 0x24,			/* lr %r2, %r4 */
-    0x18, 0x35,			/* lr %r3, %r5 */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_stack_adjust" emit_ops method for s390.  */
-
-static void
-s390_emit_stack_adjust (int n)
-{
-  unsigned char buf[] = {
-    /* ahi %r15, 8*n */
-    0xa7, 0xfa,
-    (unsigned char ) (n * 8 >> 8), (unsigned char) (n * 8),
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* Sets %r2 to a 32-bit constant.  */
-
-static void
-s390_emit_set_r2 (int arg1)
-{
-  unsigned char buf_s[] = {
-    /* lhi %r2, <arg1> */
-    0xa7, 0x28, (unsigned char) (arg1 >> 8), (unsigned char) arg1,
-  };
-  static const unsigned char buf_l[] = {
-    0x58, 0x20, 0x10, 0x00,	/* l %r2, 0(%r1) */
-  };
-  if (arg1 < 0x8000 && arg1 >= -0x8000)
-  {
-    add_insns (buf_s, sizeof buf_s);
-  }
-  else
-  {
-    s390_emit_litpool (4);
-    add_insns ((unsigned char *) &arg1, sizeof arg1);
-    add_insns (buf_l, sizeof buf_l);
-  }
-}
-
-/* The "emit_int_call_1" emit_ops method for s390.  */
-
-static void
-s390_emit_int_call_1 (CORE_ADDR fn, int arg1)
-{
-  /* FN's prototype is `LONGEST(*fn)(int)'.  */
-  s390_emit_set_r2 (arg1);
-  s390_emit_call (fn);
-}
-
-/* The "emit_void_call_2" emit_ops method for s390.  */
-
-static void
-s390_emit_void_call_2 (CORE_ADDR fn, int arg1)
-{
-  /* FN's prototype is `void(*fn)(int,LONGEST)'.  */
-  static const unsigned char buf[] = {
-    0x18, 0xc2,			/* lr %r12, %r2 */
-    0x18, 0xd3,			/* lr %r13, %r3 */
-    0x18, 0x43,			/* lr %r4, %r3 */
-    0x18, 0x32,			/* lr %r3, %r2 */
-  };
-  static const unsigned char buf2[] = {
-    0x18, 0x2c,			/* lr %r2, %r12 */
-    0x18, 0x3d,			/* lr %r3, %r13 */
-  };
-  add_insns (buf, sizeof buf);
-  s390_emit_set_r2 (arg1);
-  s390_emit_call (fn);
-  add_insns (buf2, sizeof buf2);
-}
-
-/* The "emit_eq_goto" emit_ops method for s390.  */
-
-static void
-s390_emit_eq_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0x57, 0x20, 0xf0, 0x00,		/* x %r2, 0(%r15) */
-    0x57, 0x30, 0xf0, 0x04,		/* x %r3, 4(%r15) */
-    0x16, 0x23,				/* or %r2, %r3 */
-    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0x84, 0x00, 0x00, 0x00, 0x00,	/* jge <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 20;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_ne_goto" emit_ops method for s390.  */
-
-static void
-s390_emit_ne_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0x57, 0x20, 0xf0, 0x00,		/* x %r2, 0(%r15) */
-    0x57, 0x30, 0xf0, 0x04,		/* x %r3, 4(%r15) */
-    0x16, 0x23,				/* or %r2, %r3 */
-    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0x74, 0x00, 0x00, 0x00, 0x00,	/* jgne <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 20;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_lt_goto" emit_ops method for s390.  */
-
-static void
-s390_emit_lt_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0x59, 0x20, 0xf0, 0x00,		/* c %r2, 0(%r15) */
-    0xa7, 0x24, 0x00, 0x0e,		/* jh .Ltrue */
-    0xa7, 0x44, 0x00, 0x06,		/* jl .Lfalse */
-    0x55, 0x30, 0xf0, 0x04,		/* cl %r3, 4(%r15) */
-    0xa7, 0x24, 0x00, 0x08,		/* jh .Ltrue */
-    /* .Lfalse: */
-    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xa7, 0xf4, 0x00, 0x09,		/* j .Lend */
-    /* .Ltrue: */
-    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0xf4, 0x00, 0x00, 0x00, 0x00,	/* jg <fillme> */
-    /* .Lend: */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 42;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_le_goto" emit_ops method for s390.  */
-
-static void
-s390_emit_le_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0x59, 0x20, 0xf0, 0x00,		/* c %r2, 0(%r15) */
-    0xa7, 0x24, 0x00, 0x0e,		/* jh .Ltrue */
-    0xa7, 0x44, 0x00, 0x06,		/* jl .Lfalse */
-    0x55, 0x30, 0xf0, 0x04,		/* cl %r3, 4(%r15) */
-    0xa7, 0xa4, 0x00, 0x08,		/* jhe .Ltrue */
-    /* .Lfalse: */
-    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xa7, 0xf4, 0x00, 0x09,		/* j .Lend */
-    /* .Ltrue: */
-    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0xf4, 0x00, 0x00, 0x00, 0x00,	/* jg <fillme> */
-    /* .Lend: */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 42;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_gt_goto" emit_ops method for s390.  */
-
-static void
-s390_emit_gt_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0x59, 0x20, 0xf0, 0x00,		/* c %r2, 0(%r15) */
-    0xa7, 0x44, 0x00, 0x0e,		/* jl .Ltrue */
-    0xa7, 0x24, 0x00, 0x06,		/* jh .Lfalse */
-    0x55, 0x30, 0xf0, 0x04,		/* cl %r3, 4(%r15) */
-    0xa7, 0x44, 0x00, 0x08,		/* jl .Ltrue */
-    /* .Lfalse: */
-    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xa7, 0xf4, 0x00, 0x09,		/* j .Lend */
-    /* .Ltrue: */
-    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0xf4, 0x00, 0x00, 0x00, 0x00,	/* jg <fillme> */
-    /* .Lend: */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 42;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_ge_goto" emit_ops method for s390.  */
-
-static void
-s390_emit_ge_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0x59, 0x20, 0xf0, 0x00,		/* c %r2, 0(%r15) */
-    0xa7, 0x44, 0x00, 0x0e,		/* jl .Ltrue */
-    0xa7, 0x24, 0x00, 0x06,		/* jh .Lfalse */
-    0x55, 0x30, 0xf0, 0x04,		/* cl %r3, 4(%r15) */
-    0xa7, 0xc4, 0x00, 0x08,		/* jle .Ltrue */
-    /* .Lfalse: */
-    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xa7, 0xf4, 0x00, 0x09,		/* j .Lend */
-    /* .Ltrue: */
-    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0xf4, 0x00, 0x00, 0x00, 0x00,	/* jg <fillme> */
-    /* .Lend: */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 42;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_ops" structure for s390.  Named _impl to avoid name
-   collision with s390_emit_ops function.  */
-
-static struct emit_ops s390_emit_ops_impl =
-  {
-    s390_emit_prologue,
-    s390_emit_epilogue,
-    s390_emit_add,
-    s390_emit_sub,
-    s390_emit_mul,
-    s390_emit_lsh,
-    s390_emit_rsh_signed,
-    s390_emit_rsh_unsigned,
-    s390_emit_ext,
-    s390_emit_log_not,
-    s390_emit_bit_and,
-    s390_emit_bit_or,
-    s390_emit_bit_xor,
-    s390_emit_bit_not,
-    s390_emit_equal,
-    s390_emit_less_signed,
-    s390_emit_less_unsigned,
-    s390_emit_ref,
-    s390_emit_if_goto,
-    s390_emit_goto,
-    s390_write_goto_address,
-    s390_emit_const,
-    s390_emit_call,
-    s390_emit_reg,
-    s390_emit_pop,
-    s390_emit_stack_flush,
-    s390_emit_zero_ext,
-    s390_emit_swap,
-    s390_emit_stack_adjust,
-    s390_emit_int_call_1,
-    s390_emit_void_call_2,
-    s390_emit_eq_goto,
-    s390_emit_ne_goto,
-    s390_emit_lt_goto,
-    s390_emit_le_goto,
-    s390_emit_gt_goto,
-    s390_emit_ge_goto
-  };
-
-#ifdef __s390x__
-
-/* The "emit_prologue" emit_ops method for s390x.  */
-
-static void
-s390x_emit_prologue (void)
-{
-  static const unsigned char buf[] = {
-    0xeb, 0x9f, 0xf0, 0x48, 0x00, 0x24,	/* stmg %r9, %r15, 0x48(%r15) */
-    0xb9, 0x04, 0x00, 0x92,		/* lgr %r9, %r2 */
-    0xb9, 0x04, 0x00, 0xa3,		/* lgr %r10, %r3 */
-    0xb9, 0x04, 0x00, 0xbf,		/* lgr %r11, %r15 */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_epilogue" emit_ops method for s390x.  */
-
-static void
-s390x_emit_epilogue (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xa0, 0x00, 0x00, 0x24,	/* stg %r2, 0(%r10) */
-    0xa7, 0x29, 0x00, 0x00,		/* lghi %r2, 0 */
-    0xeb, 0x9f, 0xf0, 0x48, 0x00, 0x04,	/* lmg %r9, %r15, 0x48(%r15) */
-    0x07, 0xfe,				/* br %r14 */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_add" emit_ops method for s390x.  */
-
-static void
-s390x_emit_add (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x0a,	/* alg %r2, 0(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_sub" emit_ops method for s390x.  */
-
-static void
-s390x_emit_sub (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x30, 0xf0, 0x00, 0x00, 0x04,	/* lg %r3, 0(%r15) */
-    0xb9, 0x0b, 0x00, 0x32,		/* slgr %r3, %r2 */
-    0xb9, 0x04, 0x00, 0x23,		/* lgr %r2, %r3 */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_mul" emit_ops method for s390x.  */
-
-static void
-s390x_emit_mul (void)
-{
-  emit_error = 1;
-}
-
-/* The "emit_lsh" emit_ops method for s390x.  */
-
-static void
-s390x_emit_lsh (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x30, 0xf0, 0x00, 0x00, 0x04,	/* lg %r3, 0(%r15) */
-    0xeb, 0x23, 0x20, 0x00, 0x00, 0x0d,	/* sllg %r2, %r3, 0(%r2) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_rsh_signed" emit_ops method for s390x.  */
-
-static void
-s390x_emit_rsh_signed (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x30, 0xf0, 0x00, 0x00, 0x04,	/* lg %r3, 0(%r15) */
-    0xeb, 0x23, 0x20, 0x00, 0x00, 0x0a,	/* srag %r2, %r3, 0(%r2) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_rsh_unsigned" emit_ops method for s390x.  */
-
-static void
-s390x_emit_rsh_unsigned (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x30, 0xf0, 0x00, 0x00, 0x04,	/* lg %r3, 0(%r15) */
-    0xeb, 0x23, 0x20, 0x00, 0x00, 0x0c,	/* srlg %r2, %r3, 0(%r2) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_ext" emit_ops method for s390x.  */
-
-static void
-s390x_emit_ext (int arg)
-{
-  unsigned char buf[] = {
-    /* sllg %r2, %r2, <64-arg> */
-    0xeb, 0x22, 0x00, (unsigned char) (64 - arg), 0x00, 0x0d,
-    /* srag %r2, %r2, <64-arg> */
-    0xeb, 0x22, 0x00, (unsigned char) (64 - arg), 0x00, 0x0a,
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_log_not" emit_ops method for s390x.  */
-
-static void
-s390x_emit_log_not (void)
-{
-  static const unsigned char buf[] = {
-    0xb9, 0x00, 0x00, 0x22,		/* lpgr %r2, %r2 */
-    0xa7, 0x2b, 0xff, 0xff,		/* aghi %r2, -1 */
-    0xeb, 0x22, 0x00, 0x3f, 0x00, 0x0c,	/* srlg %r2, %r2, 63 */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_bit_and" emit_ops method for s390x.  */
-
-static void
-s390x_emit_bit_and (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x80,	/* ng %r2, 0(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_bit_or" emit_ops method for s390x.  */
-
-static void
-s390x_emit_bit_or (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x81,	/* og %r2, 0(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_bit_xor" emit_ops method for s390x.  */
-
-static void
-s390x_emit_bit_xor (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x82,	/* xg %r2, 0(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_bit_not" emit_ops method for s390x.  */
-
-static void
-s390x_emit_bit_not (void)
-{
-  static const unsigned char buf[] = {
-    0xa7, 0x39, 0xff, 0xff,	/* lghi %r3, -1 */
-    0xb9, 0x82, 0x00, 0x23,	/* xgr %r2, %r3 */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_equal" emit_ops method for s390x.  */
-
-static void
-s390x_emit_equal (void)
-{
-  s390x_emit_bit_xor ();
-  s390x_emit_log_not ();
-}
-
-/* The "emit_less_signed" emit_ops method for s390x.  */
-
-static void
-s390x_emit_less_signed (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
-    0xa7, 0x29, 0x00, 0x01,		/* lghi %r2, 1 */
-    0xa7, 0x24, 0x00, 0x04,		/* jh .Lend */
-    0xa7, 0x29, 0x00, 0x00,		/* lghi %r2, 0 */
-    /* .Lend: */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_less_unsigned" emit_ops method for s390x.  */
-
-static void
-s390x_emit_less_unsigned (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x21,	/* clg %r2, 0(%r15) */
-    0xa7, 0x29, 0x00, 0x01,		/* lghi %r2, 1 */
-    0xa7, 0x24, 0x00, 0x04,		/* jh .Lend */
-    0xa7, 0x29, 0x00, 0x00,		/* lghi %r2, 0 */
-    /* .Lend: */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_ref" emit_ops method for s390x.  */
-
-static void
-s390x_emit_ref (int size)
-{
-  static const unsigned char buf1[] = {
-    0xe3, 0x20, 0x20, 0x00, 0x00, 0x90,	/* llgc %r2, 0(%r2) */
-  };
-  static const unsigned char buf2[] = {
-    0xe3, 0x20, 0x20, 0x00, 0x00, 0x91	/* llgh %r2, 0(%r2) */
-  };
-  static const unsigned char buf4[] = {
-    0xe3, 0x20, 0x20, 0x00, 0x00, 0x16,	/* llgf %r2, 0(%r2) */
-  };
-  static const unsigned char buf8[] = {
-    0xe3, 0x20, 0x20, 0x00, 0x00, 0x04,	/* lg %r2, 0(%r2) */
-  };
-  switch (size)
-    {
-    case 1:
-      add_insns (buf1, sizeof buf1);
-      break;
-    case 2:
-      add_insns (buf2, sizeof buf2);
-      break;
-    case 4:
-      add_insns (buf4, sizeof buf4);
-      break;
-    case 8:
-      add_insns (buf8, sizeof buf8);
-      break;
-    default:
-      emit_error = 1;
-    }
-}
-
-/* The "emit_if_goto" emit_ops method for s390x.  */
-
-static void
-s390x_emit_if_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0xb9, 0x02, 0x00, 0x22,		/* ltgr %r2, %r2 */
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x04,	/* lg %r2, 0(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-    0xc0, 0x74, 0x00, 0x00, 0x00, 0x00,	/* jgne <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 16;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_const" emit_ops method for s390x.  */
-
-static void
-s390x_emit_const (LONGEST num)
-{
-  unsigned long long n = num;
-  unsigned char buf_s[] = {
-    /* lghi %r2, <num> */
-    0xa7, 0x29, (unsigned char) (num >> 8), (unsigned char) num,
-  };
-  static const unsigned char buf_l[] = {
-    0xe3, 0x20, 0x10, 0x00, 0x00, 0x04,	/* lg %r2, 0(%r1) */
-  };
-  if (num < 0x8000 && num >= -0x8000)
-  {
-    add_insns (buf_s, sizeof buf_s);
-  }
-  else
-  {
-    s390_emit_litpool (8);
-    add_insns ((unsigned char *) &n, sizeof n);
-    add_insns (buf_l, sizeof buf_l);
-  }
-}
-
-/* The "emit_call" emit_ops method for s390x.  */
-
-static void
-s390x_emit_call (CORE_ADDR fn)
-{
-  unsigned long n = fn;
-  static const unsigned char buf[] = {
-    0xe3, 0x10, 0x10, 0x00, 0x00, 0x04,	/* lg %r1, 0(%r1) */
-    0xa7, 0xfb, 0xff, 0x60,		/* aghi %r15, -0xa0 */
-    0x0d, 0xe1,				/* basr %r14, %r1 */
-    0xa7, 0xfb, 0x00, 0xa0,		/* aghi %r15, 0xa0 */
-  };
-  s390_emit_litpool (8);
-  add_insns ((unsigned char *) &n, sizeof n);
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_reg" emit_ops method for s390x.  */
-
-static void
-s390x_emit_reg (int reg)
-{
-  unsigned char buf[] = {
-    /* lgr %r2, %r9 */
-    0xb9, 0x04, 0x00, 0x29,
-    /* lghi %r3, <reg> */
-    0xa7, 0x39, (unsigned char) (reg >> 8), (unsigned char) reg,
-  };
-  add_insns (buf, sizeof buf);
-  s390x_emit_call (get_raw_reg_func_addr ());
-}
-
-/* The "emit_pop" emit_ops method for s390x.  */
-
-static void
-s390x_emit_pop (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x04,	/* lg %r2, 0(%r15) */
-    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_stack_flush" emit_ops method for s390x.  */
-
-static void
-s390x_emit_stack_flush (void)
-{
-  static const unsigned char buf[] = {
-    0xa7, 0xfb, 0xff, 0xf8,		/* aghi %r15, -8 */
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x24,	/* stg %r2, 0(%r15) */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_zero_ext" emit_ops method for s390x.  */
-
-static void
-s390x_emit_zero_ext (int arg)
-{
-  unsigned char buf[] = {
-    /* sllg %r2, %r2, <64-arg> */
-    0xeb, 0x22, 0x00, (unsigned char) (64 - arg), 0x00, 0x0d,
-    /* srlg %r2, %r2, <64-arg> */
-    0xeb, 0x22, 0x00, (unsigned char) (64 - arg), 0x00, 0x0c,
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_swap" emit_ops method for s390x.  */
-
-static void
-s390x_emit_swap (void)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x30, 0xf0, 0x00, 0x00, 0x04,	/* lg %r3, 0(%r15) */
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x24,	/* stg %r2, 0(%r15) */
-    0xb9, 0x04, 0x00, 0x23,		/* lgr %r2, %r3 */
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_stack_adjust" emit_ops method for s390x.  */
-
-static void
-s390x_emit_stack_adjust (int n)
-{
-  unsigned char buf[] = {
-    /* aghi %r15, 8*n */
-    0xa7, 0xfb,
-    (unsigned char) (n * 8 >> 8), (unsigned char) (n * 8),
-  };
-  add_insns (buf, sizeof buf);
-}
-
-/* The "emit_int_call_1" emit_ops method for s390x.  */
-
-static void
-s390x_emit_int_call_1 (CORE_ADDR fn, int arg1)
-{
-  /* FN's prototype is `LONGEST(*fn)(int)'.  */
-  s390x_emit_const (arg1);
-  s390x_emit_call (fn);
-}
-
-/* The "emit_void_call_2" emit_ops method for s390x.  */
-
-static void
-s390x_emit_void_call_2 (CORE_ADDR fn, int arg1)
-{
-  /* FN's prototype is `void(*fn)(int,LONGEST)'.  */
-  static const unsigned char buf[] = {
-    0xb9, 0x04, 0x00, 0x32,		/* lgr %r3, %r2 */
-    0xb9, 0x04, 0x00, 0xc2,		/* lgr %r12, %r2 */
-  };
-  static const unsigned char buf2[] = {
-    0xb9, 0x04, 0x00, 0x2c,		/* lgr %r2, %r12 */
-  };
-  add_insns (buf, sizeof buf);
-  s390x_emit_const (arg1);
-  s390x_emit_call (fn);
-  add_insns (buf2, sizeof buf2);
-}
-
-/* The "emit_eq_goto" emit_ops method for s390x.  */
-
-static void
-s390x_emit_eq_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
-    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0x84, 0x00, 0x00, 0x00, 0x00,	/* jge <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 18;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_ne_goto" emit_ops method for s390x.  */
-
-static void
-s390x_emit_ne_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
-    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0x74, 0x00, 0x00, 0x00, 0x00,	/* jgne <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 18;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_lt_goto" emit_ops method for s390x.  */
-
-static void
-s390x_emit_lt_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
-    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0x24, 0x00, 0x00, 0x00, 0x00,	/* jgh <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 18;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_le_goto" emit_ops method for s390x.  */
-
-static void
-s390x_emit_le_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
-    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0xa4, 0x00, 0x00, 0x00, 0x00,	/* jghe <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 18;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_gt_goto" emit_ops method for s390x.  */
-
-static void
-s390x_emit_gt_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
-    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0x44, 0x00, 0x00, 0x00, 0x00,	/* jgl <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 18;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_ge_goto" emit_ops method for s390x.  */
-
-static void
-s390x_emit_ge_goto (int *offset_p, int *size_p)
-{
-  static const unsigned char buf[] = {
-    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
-    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
-    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
-    0xc0, 0xc4, 0x00, 0x00, 0x00, 0x00,	/* jgle <fillme> */
-  };
-  add_insns (buf, sizeof buf);
-  if (offset_p)
-    *offset_p = 18;
-  if (size_p)
-    *size_p = 4;
-}
-
-/* The "emit_ops" structure for s390x.  */
-
-static struct emit_ops s390x_emit_ops =
-  {
-    s390x_emit_prologue,
-    s390x_emit_epilogue,
-    s390x_emit_add,
-    s390x_emit_sub,
-    s390x_emit_mul,
-    s390x_emit_lsh,
-    s390x_emit_rsh_signed,
-    s390x_emit_rsh_unsigned,
-    s390x_emit_ext,
-    s390x_emit_log_not,
-    s390x_emit_bit_and,
-    s390x_emit_bit_or,
-    s390x_emit_bit_xor,
-    s390x_emit_bit_not,
-    s390x_emit_equal,
-    s390x_emit_less_signed,
-    s390x_emit_less_unsigned,
-    s390x_emit_ref,
-    s390x_emit_if_goto,
-    s390_emit_goto,
-    s390_write_goto_address,
-    s390x_emit_const,
-    s390x_emit_call,
-    s390x_emit_reg,
-    s390x_emit_pop,
-    s390x_emit_stack_flush,
-    s390x_emit_zero_ext,
-    s390x_emit_swap,
-    s390x_emit_stack_adjust,
-    s390x_emit_int_call_1,
-    s390x_emit_void_call_2,
-    s390x_emit_eq_goto,
-    s390x_emit_ne_goto,
-    s390x_emit_lt_goto,
-    s390x_emit_le_goto,
-    s390x_emit_gt_goto,
-    s390x_emit_ge_goto
-  };
-#endif
-
-/* The "emit_ops" linux_target_ops method.  */
-
-static struct emit_ops *
-s390_emit_ops (void)
-{
-#ifdef __s390x__
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-
-  if (register_size (regcache->tdesc, 0) == 8)
-    return &s390x_emit_ops;
-  else
-#endif
-    return &s390_emit_ops_impl;
-}
-
-struct linux_target_ops the_low_target = {
-  s390_arch_setup,
-  s390_regs_info,
-  s390_cannot_fetch_register,
-  s390_cannot_store_register,
-  NULL, /* fetch_register */
-  s390_get_pc,
-  s390_set_pc,
-  NULL, /* breakpoint_kind_from_pc */
-  s390_sw_breakpoint_from_kind,
-  NULL,
-  s390_breakpoint_len,
-  s390_breakpoint_at,
-  s390_supports_z_point_type,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  s390_collect_ptrace_register,
-  s390_supply_ptrace_register,
-  NULL, /* siginfo_fixup */
-  NULL, /* new_process */
-  NULL, /* delete_process */
-  NULL, /* new_thread */
-  NULL, /* delete_thread */
-  NULL, /* new_fork */
-  NULL, /* prepare_to_resume */
-  NULL, /* process_qsupported */
-  s390_supports_tracepoints,
-  s390_get_thread_area,
-  s390_install_fast_tracepoint_jump_pad,
-  s390_emit_ops,
-  s390_get_min_fast_tracepoint_insn_len,
-  NULL, /* supports_range_stepping */
-  NULL, /* breakpoint_kind_from_current_state */
-  s390_supports_hardware_single_step,
-  NULL, /* get_syscall_trapinfo */
-  s390_get_ipa_tdesc_idx,
-};
-
-void
-initialize_low_arch (void)
-{
-  /* Initialize the Linux target descriptions.  */
-
-  init_registers_s390_linux32 ();
-  init_registers_s390_linux32v1 ();
-  init_registers_s390_linux32v2 ();
-  init_registers_s390_linux64 ();
-  init_registers_s390_linux64v1 ();
-  init_registers_s390_linux64v2 ();
-  init_registers_s390_te_linux64 ();
-  init_registers_s390_vx_linux64 ();
-  init_registers_s390_tevx_linux64 ();
-  init_registers_s390_gs_linux64 ();
-#ifdef __s390x__
-  init_registers_s390x_linux64 ();
-  init_registers_s390x_linux64v1 ();
-  init_registers_s390x_linux64v2 ();
-  init_registers_s390x_te_linux64 ();
-  init_registers_s390x_vx_linux64 ();
-  init_registers_s390x_tevx_linux64 ();
-  init_registers_s390x_gs_linux64 ();
-#endif
-
-  initialize_regsets_info (&s390_regsets_info);
-  initialize_regsets_info (&s390_regsets_info_3264);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-s390-tdesc.h ./gdb/gdbserver/linux-s390-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-s390-tdesc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-s390-tdesc.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,116 +0,0 @@
-/* Low level support for s390, shared between gdbserver and IPA.
-
-   Copyright (C) 2016-2020 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 GDBSERVER_LINUX_S390_TDESC_H
-#define GDBSERVER_LINUX_S390_TDESC_H
-
-/* Note: since IPA obviously knows what ABI it's running on (s390 vs s390x),
-   it's sufficient to pass only the register set here.  This, together with
-   the ABI known at IPA compile time, maps to a tdesc.  */
-
-enum s390_linux_tdesc {
-  S390_TDESC_32,
-  S390_TDESC_32V1,
-  S390_TDESC_32V2,
-  S390_TDESC_64,
-  S390_TDESC_64V1,
-  S390_TDESC_64V2,
-  S390_TDESC_TE,
-  S390_TDESC_VX,
-  S390_TDESC_TEVX,
-  S390_TDESC_GS,
-};
-
-#ifdef __s390x__
-
-/* Defined in auto-generated file s390x-linux64.c.  */
-void init_registers_s390x_linux64 (void);
-extern const struct target_desc *tdesc_s390x_linux64;
-
-/* Defined in auto-generated file s390x-linux64v1.c.  */
-void init_registers_s390x_linux64v1 (void);
-extern const struct target_desc *tdesc_s390x_linux64v1;
-
-/* Defined in auto-generated file s390x-linux64v2.c.  */
-void init_registers_s390x_linux64v2 (void);
-extern const struct target_desc *tdesc_s390x_linux64v2;
-
-/* Defined in auto-generated file s390x-te-linux64.c.  */
-void init_registers_s390x_te_linux64 (void);
-extern const struct target_desc *tdesc_s390x_te_linux64;
-
-/* Defined in auto-generated file s390x-vx-linux64.c.  */
-void init_registers_s390x_vx_linux64 (void);
-extern const struct target_desc *tdesc_s390x_vx_linux64;
-
-/* Defined in auto-generated file s390x-tevx-linux64.c.  */
-void init_registers_s390x_tevx_linux64 (void);
-extern const struct target_desc *tdesc_s390x_tevx_linux64;
-
-/* Defined in auto-generated file s390x-gs-linux64.c.  */
-void init_registers_s390x_gs_linux64 (void);
-extern const struct target_desc *tdesc_s390x_gs_linux64;
-
-#endif
-
-#if !defined __s390x__ || !defined IN_PROCESS_AGENT
-
-/* Defined in auto-generated file s390-linux32.c.  */
-void init_registers_s390_linux32 (void);
-extern const struct target_desc *tdesc_s390_linux32;
-
-/* Defined in auto-generated file s390-linux32v1.c.  */
-void init_registers_s390_linux32v1 (void);
-extern const struct target_desc *tdesc_s390_linux32v1;
-
-/* Defined in auto-generated file s390-linux32v2.c.  */
-void init_registers_s390_linux32v2 (void);
-extern const struct target_desc *tdesc_s390_linux32v2;
-
-/* Defined in auto-generated file s390-linux64.c.  */
-void init_registers_s390_linux64 (void);
-extern const struct target_desc *tdesc_s390_linux64;
-
-/* Defined in auto-generated file s390-linux64v1.c.  */
-void init_registers_s390_linux64v1 (void);
-extern const struct target_desc *tdesc_s390_linux64v1;
-
-/* Defined in auto-generated file s390-linux64v2.c.  */
-void init_registers_s390_linux64v2 (void);
-extern const struct target_desc *tdesc_s390_linux64v2;
-
-/* Defined in auto-generated file s390-te-linux64.c.  */
-void init_registers_s390_te_linux64 (void);
-extern const struct target_desc *tdesc_s390_te_linux64;
-
-/* Defined in auto-generated file s390-vx-linux64.c.  */
-void init_registers_s390_vx_linux64 (void);
-extern const struct target_desc *tdesc_s390_vx_linux64;
-
-/* Defined in auto-generated file s390-tevx-linux64.c.  */
-void init_registers_s390_tevx_linux64 (void);
-extern const struct target_desc *tdesc_s390_tevx_linux64;
-
-/* Defined in auto-generated file s390-gs-linux64.c.  */
-void init_registers_s390_gs_linux64 (void);
-extern const struct target_desc *tdesc_s390_gs_linux64;
-
-#endif
-
-#endif /* GDBSERVER_LINUX_S390_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-sh-low.c ./gdb/gdbserver/linux-sh-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-sh-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-sh-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,189 +0,0 @@
-/* GNU/Linux/SH specific low level interface, for the remote server for GDB.
-   Copyright (C) 1995-2020 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 "server.h"
-#include "linux-low.h"
-
-/* Defined in auto-generated file reg-sh.c.  */
-void init_registers_sh (void);
-extern const struct target_desc *tdesc_sh;
-
-#ifdef HAVE_SYS_REG_H
-#include <sys/reg.h>
-#endif
-
-#include <asm/ptrace.h>
-
-#define sh_num_regs 41
-
-/* Currently, don't check/send MQ.  */
-static int sh_regmap[] = {
- 0,	4,	8,	12,	16,	20,	24,	28,
- 32,	36,	40,	44,	48,	52,	56,	60,
-
- REG_PC*4,   REG_PR*4,   REG_GBR*4,  -1,
- REG_MACH*4, REG_MACL*4, REG_SR*4,
- REG_FPUL*4, REG_FPSCR*4,
-
- REG_FPREG0*4+0,   REG_FPREG0*4+4,   REG_FPREG0*4+8,   REG_FPREG0*4+12,
- REG_FPREG0*4+16,  REG_FPREG0*4+20,  REG_FPREG0*4+24,  REG_FPREG0*4+28,
- REG_FPREG0*4+32,  REG_FPREG0*4+36,  REG_FPREG0*4+40,  REG_FPREG0*4+44,
- REG_FPREG0*4+48,  REG_FPREG0*4+52,  REG_FPREG0*4+56,  REG_FPREG0*4+60,
-};
-
-static int
-sh_cannot_store_register (int regno)
-{
-  return 0;
-}
-
-static int
-sh_cannot_fetch_register (int regno)
-{
-  return 0;
-}
-
-/* Correct in either endianness, obviously.  */
-static const unsigned short sh_breakpoint = 0xc3c3;
-#define sh_breakpoint_len 2
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-sh_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = sh_breakpoint_len;
-  return (const gdb_byte *) &sh_breakpoint;
-}
-
-static int
-sh_breakpoint_at (CORE_ADDR where)
-{
-  unsigned short insn;
-
-  (*the_target->read_memory) (where, (unsigned char *) &insn, 2);
-  if (insn == sh_breakpoint)
-    return 1;
-
-  /* If necessary, recognize more trap instructions here.  GDB only uses the
-     one.  */
-  return 0;
-}
-
-/* Support for hardware single step.  */
-
-static int
-sh_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-/* Provide only a fill function for the general register set.  ps_lgetregs
-   will use this for NPTL support.  */
-
-static void sh_fill_gregset (struct regcache *regcache, void *buf)
-{
-  int i;
-
-  for (i = 0; i < 23; i++)
-    if (sh_regmap[i] != -1)
-      collect_register (regcache, i, (char *) buf + sh_regmap[i]);
-}
-
-static struct regset_info sh_regsets[] = {
-  { 0, 0, 0, 0, GENERAL_REGS, sh_fill_gregset, NULL },
-  NULL_REGSET
-};
-
-static struct regsets_info sh_regsets_info =
-  {
-    sh_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct usrregs_info sh_usrregs_info =
-  {
-    sh_num_regs,
-    sh_regmap,
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &sh_usrregs_info,
-    &sh_regsets_info
-  };
-
-static const struct regs_info *
-sh_regs_info (void)
-{
-  return &regs_info;
-}
-
-static void
-sh_arch_setup (void)
-{
-  current_process ()->tdesc = tdesc_sh;
-}
-
-struct linux_target_ops the_low_target = {
-  sh_arch_setup,
-  sh_regs_info,
-  sh_cannot_fetch_register,
-  sh_cannot_store_register,
-  NULL, /* fetch_register */
-  linux_get_pc_32bit,
-  linux_set_pc_32bit,
-  NULL, /* breakpoint_kind_from_pc */
-  sh_sw_breakpoint_from_kind,
-  NULL,
-  0,
-  sh_breakpoint_at,
-  NULL, /* supports_z_point_type */
-  NULL, /* insert_point */
-  NULL, /* remove_point */
-  NULL, /* stopped_by_watchpoint */
-  NULL, /* stopped_data_address */
-  NULL, /* collect_ptrace_register */
-  NULL, /* supply_ptrace_register */
-  NULL, /* siginfo_fixup */
-  NULL, /* new_process */
-  NULL, /* delete_process */
-  NULL, /* new_thread */
-  NULL, /* delete_thread */
-  NULL, /* new_fork */
-  NULL, /* prepare_to_resume */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* get_thread_area */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* supports_range_stepping */
-  NULL, /* breakpoint_kind_from_current_state */
-  sh_supports_hardware_single_step,
-};
-
-void
-initialize_low_arch (void)
-{
-  init_registers_sh ();
-
-  initialize_regsets_info (&sh_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-sparc-low.c ./gdb/gdbserver/linux-sparc-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-sparc-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-sparc-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,326 +0,0 @@
-/* Low level interface to ptrace, for the remote server for GDB.
-   Copyright (C) 1995-2020 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 "server.h"
-#include "linux-low.h"
-
-#include "nat/gdb_ptrace.h"
-
-#include "gdb_proc_service.h"
-
-/* The stack pointer is offset from the stack frame by a BIAS of 2047
-   (0x7ff) for 64-bit code.  BIAS is likely to be defined on SPARC
-   hosts, so undefine it first.  */
-#undef BIAS
-#define BIAS 2047
-
-#ifdef HAVE_SYS_REG_H
-#include <sys/reg.h>
-#endif
-
-#define INSN_SIZE 4
-
-#define SPARC_R_REGS_NUM 32
-#define SPARC_F_REGS_NUM 48
-#define SPARC_CONTROL_REGS_NUM 6
-
-#define sparc_num_regs \
-  (SPARC_R_REGS_NUM + SPARC_F_REGS_NUM + SPARC_CONTROL_REGS_NUM)
-
-/* Each offset is multiplied by 8, because of the register size.
-   These offsets apply to the buffer sent/filled by ptrace.
-   Additionally, the array elements order corresponds to the .dat file, and the
-   gdb's registers enumeration order.  */
-
-static int sparc_regmap[] = {
-  /* These offsets correspond to GET/SETREGSET.  */
-	-1,  0*8,  1*8,  2*8,  3*8,  4*8,  5*8,  6*8,	 /* g0 .. g7 */
-	7*8,  8*8,  9*8, 10*8, 11*8, 12*8, 13*8, 14*8,	 /* o0 .. o5, sp, o7 */
-	-1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,	 /* l0 .. l7 */
-	-1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,	 /* i0 .. i5, fp, i7 */
-
-  /* Floating point registers offsets correspond to GET/SETFPREGSET.  */
-    0*4,  1*4,  2*4,  3*4,  4*4,  5*4,  6*4,  7*4,	   /*  f0 ..  f7 */
-    8*4,  9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4,	   /*  f8 .. f15 */
-   16*4, 17*4, 18*4, 19*4, 20*4, 21*4, 22*4, 23*4,	   /* f16 .. f23 */
-   24*4, 25*4, 26*4, 27*4, 28*4, 29*4, 30*4, 31*4,	   /* f24 .. f31 */
-
-  /* F32 offset starts next to f31: 31*4+4 = 16 * 8.  */
-   16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8,	   /* f32 .. f46 */
-   24*8, 25*8, 26*8, 27*8, 28*8, 29*8, 30*8, 31*8,	   /* f48 .. f62 */
-
-   17 *8, /*    pc */
-   18 *8, /*   npc */
-   16 *8, /* state */
-  /* FSR offset also corresponds to GET/SETFPREGSET, ans is placed
-     next to f62.  */
-   32 *8, /*   fsr */
-      -1, /*  fprs */
-  /* Y register is 32-bits length, but gdb takes care of that.  */
-   19 *8, /*     y */
-
-};
-
-
-struct regs_range_t
-{
-  int regno_start;
-  int regno_end;
-};
-
-static const struct regs_range_t gregs_ranges[] = {
- {  0, 31 }, /*   g0 .. i7  */
- { 80, 82 }, /*   pc .. state */
- { 84, 85 }  /* fprs .. y */
-};
-
-#define N_GREGS_RANGES (sizeof (gregs_ranges) / sizeof (struct regs_range_t))
-
-static const struct regs_range_t fpregs_ranges[] = {
- { 32, 79 }, /* f0 .. f62  */
- { 83, 83 }  /* fsr */
-};
-
-#define N_FPREGS_RANGES (sizeof (fpregs_ranges) / sizeof (struct regs_range_t))
-
-/* Defined in auto-generated file reg-sparc64.c.  */
-void init_registers_sparc64 (void);
-extern const struct target_desc *tdesc_sparc64;
-
-static int
-sparc_cannot_store_register (int regno)
-{
-  return (regno >= sparc_num_regs || sparc_regmap[regno] == -1);
-}
-
-static int
-sparc_cannot_fetch_register (int regno)
-{
-  return (regno >= sparc_num_regs || sparc_regmap[regno] == -1);
-}
-
-static void
-sparc_fill_gregset_to_stack (struct regcache *regcache, const void *buf)
-{
-  int i;
-  CORE_ADDR addr = 0;
-  unsigned char tmp_reg_buf[8];
-  const int l0_regno = find_regno (regcache->tdesc, "l0");
-  const int i7_regno = l0_regno + 15;
-
-  /* These registers have to be stored in the stack.  */
-  memcpy (&addr,
-	  ((char *) buf) + sparc_regmap[find_regno (regcache->tdesc, "sp")],
-	  sizeof (addr));
-
-  addr += BIAS;
-
-  for (i = l0_regno; i <= i7_regno; i++)
-    {
-      collect_register (regcache, i, tmp_reg_buf);
-      (*the_target->write_memory) (addr, tmp_reg_buf, sizeof (tmp_reg_buf));
-      addr += sizeof (tmp_reg_buf);
-    }
-}
-
-static void
-sparc_fill_gregset (struct regcache *regcache, void *buf)
-{
-  int i;
-  int range;
-
-  for (range = 0; range < N_GREGS_RANGES; range++)
-    for (i = gregs_ranges[range].regno_start;
-	 i <= gregs_ranges[range].regno_end; i++)
-      if (sparc_regmap[i] != -1)
-	collect_register (regcache, i, ((char *) buf) + sparc_regmap[i]);
-
-  sparc_fill_gregset_to_stack (regcache, buf);
-}
-
-static void
-sparc_fill_fpregset (struct regcache *regcache, void *buf)
-{
-  int i;
-  int range;
-
-  for (range = 0; range < N_FPREGS_RANGES; range++)
-    for (i = fpregs_ranges[range].regno_start;
-	 i <= fpregs_ranges[range].regno_end; i++)
-      collect_register (regcache, i, ((char *) buf) + sparc_regmap[i]);
-
-}
-
-static void
-sparc_store_gregset_from_stack (struct regcache *regcache, const void *buf)
-{
-  int i;
-  CORE_ADDR addr = 0;
-  unsigned char tmp_reg_buf[8];
-  const int l0_regno = find_regno (regcache->tdesc, "l0");
-  const int i7_regno = l0_regno + 15;
-
-  /* These registers have to be obtained from the stack.  */
-  memcpy (&addr,
-	  ((char *) buf) + sparc_regmap[find_regno (regcache->tdesc, "sp")],
-	  sizeof (addr));
-
-  addr += BIAS;
-
-  for (i = l0_regno; i <= i7_regno; i++)
-    {
-      (*the_target->read_memory) (addr, tmp_reg_buf, sizeof (tmp_reg_buf));
-      supply_register (regcache, i, tmp_reg_buf);
-      addr += sizeof (tmp_reg_buf);
-    }
-}
-
-static void
-sparc_store_gregset (struct regcache *regcache, const void *buf)
-{
-  int i;
-  char zerobuf[8];
-  int range;
-
-  memset (zerobuf, 0, sizeof (zerobuf));
-
-  for (range = 0; range < N_GREGS_RANGES; range++)
-    for (i = gregs_ranges[range].regno_start;
-	 i <= gregs_ranges[range].regno_end; i++)
-      if (sparc_regmap[i] != -1)
-	supply_register (regcache, i, ((char *) buf) + sparc_regmap[i]);
-      else
-	supply_register (regcache, i, zerobuf);
-
-  sparc_store_gregset_from_stack (regcache, buf);
-}
-
-static void
-sparc_store_fpregset (struct regcache *regcache, const void *buf)
-{
-  int i;
-  int range;
-
-  for (range = 0; range < N_FPREGS_RANGES; range++)
-    for (i = fpregs_ranges[range].regno_start;
-	 i <= fpregs_ranges[range].regno_end;
-	 i++)
-      supply_register (regcache, i, ((char *) buf) + sparc_regmap[i]);
-}
-
-static const gdb_byte sparc_breakpoint[INSN_SIZE] = {
-  0x91, 0xd0, 0x20, 0x01
-};
-#define sparc_breakpoint_len INSN_SIZE
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const unsigned char *
-sparc_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = sparc_breakpoint_len;
-  return sparc_breakpoint;
-}
-
-static int
-sparc_breakpoint_at (CORE_ADDR where)
-{
-  unsigned char insn[INSN_SIZE];
-
-  (*the_target->read_memory) (where, (unsigned char *) insn, sizeof (insn));
-
-  if (memcmp (sparc_breakpoint, insn, sizeof (insn)) == 0)
-    return 1;
-
-  /* If necessary, recognize more trap instructions here.  GDB only
-     uses TRAP Always.  */
-
-  return 0;
-}
-
-static void
-sparc_arch_setup (void)
-{
-  current_process ()->tdesc = tdesc_sparc64;
-}
-
-static struct regset_info sparc_regsets[] = {
-  { PTRACE_GETREGS, PTRACE_SETREGS, 0, sizeof (elf_gregset_t),
-    GENERAL_REGS,
-    sparc_fill_gregset, sparc_store_gregset },
-  { PTRACE_GETFPREGS, PTRACE_SETFPREGS, 0, sizeof (fpregset_t),
-    FP_REGS,
-    sparc_fill_fpregset, sparc_store_fpregset },
-  NULL_REGSET
-};
-
-static struct regsets_info sparc_regsets_info =
-  {
-    sparc_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct usrregs_info sparc_usrregs_info =
-  {
-    sparc_num_regs,
-    /* No regmap needs to be provided since this impl. doesn't use
-       USRREGS.  */
-    NULL
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &sparc_usrregs_info,
-    &sparc_regsets_info
-  };
-
-static const struct regs_info *
-sparc_regs_info (void)
-{
-  return &regs_info;
-}
-
-struct linux_target_ops the_low_target = {
-  sparc_arch_setup,
-  sparc_regs_info,
-  sparc_cannot_fetch_register,
-  sparc_cannot_store_register,
-  NULL, /* fetch_register */
-  linux_get_pc_64bit,
-  /* No sparc_set_pc is needed.  */
-  NULL,
-  NULL, /* breakpoint_kind_from_pc */
-  sparc_sw_breakpoint_from_kind,
-  NULL, /* get_next_pcs */
-  0,
-  sparc_breakpoint_at,
-  NULL,  /* supports_z_point_type */
-  NULL, NULL, NULL, NULL,
-  NULL, NULL
-};
-
-void
-initialize_low_arch (void)
-{
-  /* Initialize the Linux target descriptions.  */
-  init_registers_sparc64 ();
-
-  initialize_regsets_info (&sparc_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-tic6x-low.c ./gdb/gdbserver/linux-tic6x-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-tic6x-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-tic6x-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,455 +0,0 @@
-/* Target dependent code for GDB on TI C6x systems.
-
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
-   Contributed by Andrew Jenner <andrew@codesourcery.com>
-   Contributed by Yao Qi <yao@codesourcery.com>
-
-   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 "server.h"
-#include "linux-low.h"
-#include "arch/tic6x.h"
-#include "tdesc.h"
-
-#include "nat/gdb_ptrace.h"
-#include <endian.h>
-
-#include "gdb_proc_service.h"
-
-#ifndef PTRACE_GET_THREAD_AREA
-#define PTRACE_GET_THREAD_AREA 25
-#endif
-
-/* There are at most 69 registers accessible in ptrace.  */
-#define TIC6X_NUM_REGS 69
-
-#include <asm/ptrace.h>
-
-/* Defined in auto-generated file tic6x-c64xp-linux.c.  */
-void init_registers_tic6x_c64xp_linux (void);
-extern const struct target_desc *tdesc_tic6x_c64xp_linux;
-
-/* Defined in auto-generated file tic6x-c64x-linux.c.  */
-void init_registers_tic6x_c64x_linux (void);
-extern const struct target_desc *tdesc_tic6x_c64x_linux;
-
-/* Defined in auto-generated file tic62x-c6xp-linux.c.  */
-void init_registers_tic6x_c62x_linux (void);
-extern const struct target_desc *tdesc_tic6x_c62x_linux;
-
-union tic6x_register
-{
-  unsigned char buf[4];
-
-  int reg32;
-};
-
-/* Return the ptrace ``address'' of register REGNO.  */
-
-#if __BYTE_ORDER == __BIG_ENDIAN
-static int tic6x_regmap_c64xp[] = {
-  /* A0 - A15 */
-  53, 52, 55, 54, 57, 56, 59, 58,
-  61, 60, 63, 62, 65, 64, 67, 66,
-  /* B0 - B15 */
-  23, 22, 25, 24, 27, 26, 29, 28,
-  31, 30, 33, 32, 35, 34, 69, 68,
-  /* CSR PC */
-  5, 4,
-  /* A16 - A31 */
-  37, 36, 39, 38, 41, 40, 43, 42,
-  45, 44, 47, 46, 49, 48, 51, 50,
-  /* B16 - B31 */
-  7,  6,  9,  8,  11, 10, 13, 12,
-  15, 14, 17, 16, 19, 18, 21, 20,
-  /* TSR, ILC, RILC */
-  1,  2, 3
-};
-
-static int tic6x_regmap_c64x[] = {
-  /* A0 - A15 */
-  51, 50, 53, 52, 55, 54, 57, 56,
-  59, 58, 61, 60, 63, 62, 65, 64,
-  /* B0 - B15 */
-  21, 20, 23, 22, 25, 24, 27, 26,
-  29, 28, 31, 30, 33, 32, 67, 66,
-  /* CSR PC */
-  3,  2,
-  /* A16 - A31 */
-  35, 34, 37, 36, 39, 38, 41, 40,
-  43, 42, 45, 44, 47, 46, 49, 48,
-  /* B16 - B31 */
-  5,  4,  7,  6,  9,  8,  11, 10,
-  13, 12, 15, 14, 17, 16, 19, 18,
-  -1, -1, -1
-};
-
-static int tic6x_regmap_c62x[] = {
-  /* A0 - A15 */
-  19, 18, 21, 20, 23, 22, 25, 24,
-  27, 26, 29, 28, 31, 30, 33, 32,
-  /* B0 - B15 */
-   5,  4,  7,  6,  9,  8, 11, 10,
-  13, 12, 15, 14, 17, 16, 35, 34,
-  /* CSR, PC */
-  3, 2,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1
-};
-
-#else
-static int tic6x_regmap_c64xp[] = {
-  /* A0 - A15 */
-  52, 53, 54, 55, 56, 57, 58, 59,
-  60, 61, 62, 63, 64, 65, 66, 67,
-  /* B0 - B15 */
-  22, 23, 24, 25, 26, 27, 28, 29,
-  30, 31, 32, 33, 34, 35, 68, 69,
-  /* CSR PC */
-   4,  5,
-  /* A16 - A31 */
-  36, 37, 38, 39, 40, 41, 42, 43,
-  44, 45, 46, 47, 48, 49, 50, 51,
-  /* B16 -B31 */
-   6,  7,  8,  9, 10, 11, 12, 13,
-  14, 15, 16, 17, 18, 19, 20, 31,
-  /* TSR, ILC, RILC */
-  0,  3, 2
-};
-
-static int tic6x_regmap_c64x[] = {
-  /* A0 - A15 */
-  50, 51, 52, 53, 54, 55, 56, 57,
-  58, 59, 60, 61, 62, 63, 64, 65,
-  /* B0 - B15 */
-  20, 21, 22, 23, 24, 25, 26, 27,
-  28, 29, 30, 31, 32, 33, 66, 67,
-  /* CSR PC */
-  2,  3,
-  /* A16 - A31 */
-  34, 35, 36, 37, 38, 39, 40, 41,
-  42, 43, 44, 45, 46, 47, 48, 49,
-  /* B16 - B31 */
-  4,  5,  6,  7,  8,  9,  10, 11,
-  12, 13, 14, 15, 16, 17, 18, 19,
-  -1, -1, -1
-};
-
-static int tic6x_regmap_c62x[] = {
-  /* A0 - A15 */
-  18, 19, 20, 21, 22, 23, 24, 25,
-  26, 27, 28, 29, 30, 31, 32, 33,
-  /* B0 - B15 */
-  4,  5,  6,  7,  8,  9, 10, 11,
-  12, 13, 14, 15, 16, 17, 34, 35,
-  /* CSR PC */
-  2,  3,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1
-};
-
-#endif
-
-extern struct linux_target_ops the_low_target;
-
-static int *tic6x_regmap;
-static unsigned int tic6x_breakpoint;
-#define tic6x_breakpoint_len 4
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-tic6x_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = tic6x_breakpoint_len;
-  return (const gdb_byte *) &tic6x_breakpoint;
-}
-
-static struct usrregs_info tic6x_usrregs_info =
-  {
-    TIC6X_NUM_REGS,
-    NULL, /* Set in tic6x_read_description.  */
-  };
-
-static const struct target_desc *
-tic6x_read_description (enum c6x_feature feature)
-{
-  static target_desc *tdescs[C6X_LAST] = { };
-  struct target_desc **tdesc = &tdescs[feature];
-
-  if (*tdesc == NULL)
-    {
-      *tdesc = tic6x_create_target_description (feature);
-      static const char *expedite_regs[] = { "A15", "PC", NULL };
-      init_target_desc (*tdesc, expedite_regs);
-    }
-
-  return *tdesc;
-}
-
-static int
-tic6x_cannot_fetch_register (int regno)
-{
-  return (tic6x_regmap[regno] == -1);
-}
-
-static int
-tic6x_cannot_store_register (int regno)
-{
-  return (tic6x_regmap[regno] == -1);
-}
-
-static CORE_ADDR
-tic6x_get_pc (struct regcache *regcache)
-{
-  union tic6x_register pc;
-
-  collect_register_by_name (regcache, "PC", pc.buf);
-  return pc.reg32;
-}
-
-static void
-tic6x_set_pc (struct regcache *regcache, CORE_ADDR pc)
-{
-  union tic6x_register newpc;
-
-  newpc.reg32 = pc;
-  supply_register_by_name (regcache, "PC", newpc.buf);
-}
-
-static int
-tic6x_breakpoint_at (CORE_ADDR where)
-{
-  unsigned int insn;
-
-  (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
-  if (insn == tic6x_breakpoint)
-    return 1;
-
-  /* If necessary, recognize more trap instructions here.  GDB only uses the
-     one.  */
-  return 0;
-}
-
-/* Fetch the thread-local storage pointer for libthread_db.  */
-
-ps_err_e
-ps_get_thread_area (struct ps_prochandle *ph,
-		    lwpid_t lwpid, int idx, void **base)
-{
-  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
-    return PS_ERR;
-
-  /* IDX is the bias from the thread pointer to the beginning of the
-     thread descriptor.  It has to be subtracted due to implementation
-     quirks in libthread_db.  */
-  *base = (void *) ((char *) *base - idx);
-
-  return PS_OK;
-}
-
-static void
-tic6x_collect_register (struct regcache *regcache, int regno,
-			union tic6x_register *reg)
-{
-  union tic6x_register tmp_reg;
-
-  collect_register (regcache, regno, &tmp_reg.reg32);
-  reg->reg32 = tmp_reg.reg32;
-}
-
-static void
-tic6x_supply_register (struct regcache *regcache, int regno,
-		       const union tic6x_register *reg)
-{
-  int offset = 0;
-
-  supply_register (regcache, regno, reg->buf + offset);
-}
-
-static void
-tic6x_fill_gregset (struct regcache *regcache, void *buf)
-{
-  auto regset = static_cast<union tic6x_register *> (buf);
-  int i;
-
-  for (i = 0; i < TIC6X_NUM_REGS; i++)
-    if (tic6x_regmap[i] != -1)
-      tic6x_collect_register (regcache, i, regset + tic6x_regmap[i]);
-}
-
-static void
-tic6x_store_gregset (struct regcache *regcache, const void *buf)
-{
-  const auto regset = static_cast<const union tic6x_register *> (buf);
-  int i;
-
-  for (i = 0; i < TIC6X_NUM_REGS; i++)
-    if (tic6x_regmap[i] != -1)
-      tic6x_supply_register (regcache, i, regset + tic6x_regmap[i]);
-}
-
-static struct regset_info tic6x_regsets[] = {
-  { PTRACE_GETREGS, PTRACE_SETREGS, 0, TIC6X_NUM_REGS * 4, GENERAL_REGS,
-    tic6x_fill_gregset, tic6x_store_gregset },
-  NULL_REGSET
-};
-
-static void
-tic6x_arch_setup (void)
-{
-  register unsigned int csr asm ("B2");
-  unsigned int cpuid;
-  enum c6x_feature feature = C6X_CORE;
-
-  /* Determine the CPU we're running on to find the register order.  */
-  __asm__ ("MVC .S2 CSR,%0" : "=r" (csr) :);
-  cpuid = csr >> 24;
-  switch (cpuid)
-    {
-    case 0x00: /* C62x */
-    case 0x02: /* C67x */
-      tic6x_regmap = tic6x_regmap_c62x;
-      tic6x_breakpoint = 0x0000a122;  /* BNOP .S2 0,5 */
-      feature = C6X_CORE;
-      break;
-    case 0x03: /* C67x+ */
-      tic6x_regmap = tic6x_regmap_c64x;
-      tic6x_breakpoint = 0x0000a122;  /* BNOP .S2 0,5 */
-      feature = C6X_GP;
-      break;
-    case 0x0c: /* C64x */
-      tic6x_regmap = tic6x_regmap_c64x;
-      tic6x_breakpoint = 0x0000a122;  /* BNOP .S2 0,5 */
-      feature = C6X_GP;
-      break;
-    case 0x10: /* C64x+ */
-    case 0x14: /* C674x */
-    case 0x15: /* C66x */
-      tic6x_regmap = tic6x_regmap_c64xp;
-      tic6x_breakpoint = 0x56454314;  /* illegal opcode */
-      feature = C6X_C6XP;
-      break;
-    default:
-      error ("Unknown CPU ID 0x%02x", cpuid);
-    }
-  tic6x_usrregs_info.regmap = tic6x_regmap;
-
-  current_process ()->tdesc = tic6x_read_description (feature);
-}
-
-/* Support for hardware single step.  */
-
-static int
-tic6x_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-static struct regsets_info tic6x_regsets_info =
-  {
-    tic6x_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &tic6x_usrregs_info,
-    &tic6x_regsets_info
-  };
-
-static const struct regs_info *
-tic6x_regs_info (void)
-{
-  return &regs_info;
-}
-
-struct linux_target_ops the_low_target = {
-  tic6x_arch_setup,
-  tic6x_regs_info,
-  tic6x_cannot_fetch_register,
-  tic6x_cannot_store_register,
-  NULL, /* fetch_register */
-  tic6x_get_pc,
-  tic6x_set_pc,
-  NULL, /* breakpoint_kind_from_pc */
-  tic6x_sw_breakpoint_from_kind,
-  NULL,
-  0,
-  tic6x_breakpoint_at,
-  NULL, /* supports_z_point_type */
-  NULL, /* insert_point */
-  NULL, /* remove_point */
-  NULL, /* stopped_by_watchpoint */
-  NULL, /* stopped_data_address */
-  NULL, /* collect_ptrace_register */
-  NULL, /* supply_ptrace_register */
-  NULL, /* siginfo_fixup */
-  NULL, /* new_process */
-  NULL, /* delete_process */
-  NULL, /* new_thread */
-  NULL, /* delete_thread */
-  NULL, /* new_fork */
-  NULL, /* prepare_to_resume */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* get_thread_area */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* supports_range_stepping */
-  NULL, /* breakpoint_kind_from_current_state */
-  tic6x_supports_hardware_single_step,
-};
-
-#if GDB_SELF_TEST
-#include "gdbsupport/selftest.h"
-
-namespace selftests {
-namespace tdesc {
-static void
-tic6x_tdesc_test ()
-{
-  SELF_CHECK (*tdesc_tic6x_c62x_linux == *tic6x_read_description (C6X_CORE));
-  SELF_CHECK (*tdesc_tic6x_c64x_linux == *tic6x_read_description (C6X_GP));
-  SELF_CHECK (*tdesc_tic6x_c64xp_linux == *tic6x_read_description (C6X_C6XP));
-}
-}
-}
-#endif
-
-void
-initialize_low_arch (void)
-{
-#if GDB_SELF_TEST
-  /* Initialize the Linux target descriptions.  */
-  init_registers_tic6x_c64xp_linux ();
-  init_registers_tic6x_c64x_linux ();
-  init_registers_tic6x_c62x_linux ();
-
-  selftests::register_test ("tic6x-tdesc", selftests::tdesc::tic6x_tdesc_test);
-#endif
-
-  initialize_regsets_info (&tic6x_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-tile-low.c ./gdb/gdbserver/linux-tile-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-tile-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-tile-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,222 +0,0 @@
-/* GNU/Linux/TILE-Gx specific low level interface, GDBserver.
-
-   Copyright (C) 2012-2020 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 "server.h"
-#include "linux-low.h"
-
-#include <arch/abi.h>
-#include "nat/gdb_ptrace.h"
-
-/* Defined in auto-generated file reg-tilegx.c.  */
-void init_registers_tilegx (void);
-extern const struct target_desc *tdesc_tilegx;
-
-/* Defined in auto-generated file reg-tilegx32.c.  */
-void init_registers_tilegx32 (void);
-extern const struct target_desc *tdesc_tilegx32;
-
-#define tile_num_regs 65
-
-static int tile_regmap[] =
-{
-   0,  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,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  56
-};
-
-static int
-tile_cannot_fetch_register (int regno)
-{
-  if (regno >= 0 && regno < 56)
-    return 0;
-  else if (regno == 64)
-    return 0;
-  else
-    return 1;
-}
-
-static int
-tile_cannot_store_register (int regno)
-{
-  if (regno >= 0 && regno < 56)
-    return 0;
-  else if (regno == 64)
-    return 0;
-  else
-    return 1;
-}
-
-static uint64_t tile_breakpoint = 0x400b3cae70166000ULL;
-#define tile_breakpoint_len 8
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-tile_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = tile_breakpoint_len;
-  return (const gdb_byte *) &tile_breakpoint;
-}
-
-static int
-tile_breakpoint_at (CORE_ADDR where)
-{
-  uint64_t insn;
-
-  (*the_target->read_memory) (where, (unsigned char *) &insn, 8);
-  if (insn == tile_breakpoint)
-    return 1;
-
-  /* If necessary, recognize more trap instructions here.  GDB only uses the
-     one.  */
-  return 0;
-}
-
-static void
-tile_fill_gregset (struct regcache *regcache, void *buf)
-{
-  int i;
-
-  for (i = 0; i < tile_num_regs; i++)
-    if (tile_regmap[i] != -1)
-      collect_register (regcache, i, ((uint_reg_t *) buf) + tile_regmap[i]);
-}
-
-static void
-tile_store_gregset (struct regcache *regcache, const void *buf)
-{
-  int i;
-
-  for (i = 0; i < tile_num_regs; i++)
-    if (tile_regmap[i] != -1)
-      supply_register (regcache, i, ((uint_reg_t *) buf) + tile_regmap[i]);
-}
-
-static struct regset_info tile_regsets[] =
-{
-  { PTRACE_GETREGS, PTRACE_SETREGS, 0, tile_num_regs * 8,
-    GENERAL_REGS, tile_fill_gregset, tile_store_gregset },
-  NULL_REGSET
-};
-
-static struct regsets_info tile_regsets_info =
-  {
-    tile_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct usrregs_info tile_usrregs_info =
-  {
-    tile_num_regs,
-    tile_regmap,
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &tile_usrregs_info,
-    &tile_regsets_info,
-  };
-
-static const struct regs_info *
-tile_regs_info (void)
-{
-  return &regs_info;
-}
-
-static void
-tile_arch_setup (void)
-{
-  int pid = pid_of (current_thread);
-  unsigned int machine;
-  int is_elf64 = linux_pid_exe_is_elf_64_file (pid, &machine);
-
-  if (sizeof (void *) == 4)
-    if (is_elf64 > 0)
-      error (_("Can't debug 64-bit process with 32-bit GDBserver"));
-
-  if (!is_elf64)
-    current_process ()->tdesc = tdesc_tilegx32;
-  else
-    current_process ()->tdesc = tdesc_tilegx;
-}
-
-/* Support for hardware single step.  */
-
-static int
-tile_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-
-struct linux_target_ops the_low_target =
-{
-  tile_arch_setup,
-  tile_regs_info,
-  tile_cannot_fetch_register,
-  tile_cannot_store_register,
-  NULL,
-  linux_get_pc_64bit,
-  linux_set_pc_64bit,
-  NULL, /* breakpoint_kind_from_pc */
-  tile_sw_breakpoint_from_kind,
-  NULL,
-  0,
-  tile_breakpoint_at,
-  NULL, /* supports_z_point_type */
-  NULL, /* insert_point */
-  NULL, /* remove_point */
-  NULL, /* stopped_by_watchpoint */
-  NULL, /* stopped_data_address */
-  NULL, /* collect_ptrace_register */
-  NULL, /* supply_ptrace_register */
-  NULL, /* siginfo_fixup */
-  NULL, /* new_process */
-  NULL, /* delete_process */
-  NULL, /* new_thread */
-  NULL, /* delete_thread */
-  NULL, /* new_fork */
-  NULL, /* prepare_to_resume */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* get_thread_area */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* supports_range_stepping */
-  NULL, /* breakpoint_kind_from_current_state */
-  tile_supports_hardware_single_step,
-};
-
-void
-initialize_low_arch (void)
-{
-  init_registers_tilegx32();
-  init_registers_tilegx();
-
-  initialize_regsets_info (&tile_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-x86-low.c ./gdb/gdbserver/linux-x86-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-x86-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-x86-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,2922 +0,0 @@
-/* GNU/Linux/x86-64 specific low level interface, for the remote server
-   for GDB.
-   Copyright (C) 2002-2020 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 "server.h"
-#include <signal.h>
-#include <limits.h>
-#include <inttypes.h>
-#include "linux-low.h"
-#include "i387-fp.h"
-#include "x86-low.h"
-#include "gdbsupport/x86-xstate.h"
-#include "nat/gdb_ptrace.h"
-
-#ifdef __x86_64__
-#include "nat/amd64-linux-siginfo.h"
-#endif
-
-#include "gdb_proc_service.h"
-/* Don't include elf/common.h if linux/elf.h got included by
-   gdb_proc_service.h.  */
-#ifndef ELFMAG0
-#include "elf/common.h"
-#endif
-
-#include "gdbsupport/agent.h"
-#include "tdesc.h"
-#include "tracepoint.h"
-#include "ax.h"
-#include "nat/linux-nat.h"
-#include "nat/x86-linux.h"
-#include "nat/x86-linux-dregs.h"
-#include "linux-x86-tdesc.h"
-
-#ifdef __x86_64__
-static struct target_desc *tdesc_amd64_linux_no_xml;
-#endif
-static struct target_desc *tdesc_i386_linux_no_xml;
-
-
-static unsigned char jump_insn[] = { 0xe9, 0, 0, 0, 0 };
-static unsigned char small_jump_insn[] = { 0x66, 0xe9, 0, 0 };
-
-/* Backward compatibility for gdb without XML support.  */
-
-static const char *xmltarget_i386_linux_no_xml = "@<target>\
-<architecture>i386</architecture>\
-<osabi>GNU/Linux</osabi>\
-</target>";
-
-#ifdef __x86_64__
-static const char *xmltarget_amd64_linux_no_xml = "@<target>\
-<architecture>i386:x86-64</architecture>\
-<osabi>GNU/Linux</osabi>\
-</target>";
-#endif
-
-#include <sys/reg.h>
-#include <sys/procfs.h>
-#include <sys/uio.h>
-
-#ifndef PTRACE_GET_THREAD_AREA
-#define PTRACE_GET_THREAD_AREA 25
-#endif
-
-/* This definition comes from prctl.h, but some kernels may not have it.  */
-#ifndef PTRACE_ARCH_PRCTL
-#define PTRACE_ARCH_PRCTL      30
-#endif
-
-/* The following definitions come from prctl.h, but may be absent
-   for certain configurations.  */
-#ifndef ARCH_GET_FS
-#define ARCH_SET_GS 0x1001
-#define ARCH_SET_FS 0x1002
-#define ARCH_GET_FS 0x1003
-#define ARCH_GET_GS 0x1004
-#endif
-
-/* Per-process arch-specific data we want to keep.  */
-
-struct arch_process_info
-{
-  struct x86_debug_reg_state debug_reg_state;
-};
-
-#ifdef __x86_64__
-
-/* Mapping between the general-purpose registers in `struct user'
-   format and GDB's register array layout.
-   Note that the transfer layout uses 64-bit regs.  */
-static /*const*/ int i386_regmap[] = 
-{
-  RAX * 8, RCX * 8, RDX * 8, RBX * 8,
-  RSP * 8, RBP * 8, RSI * 8, RDI * 8,
-  RIP * 8, EFLAGS * 8, CS * 8, SS * 8,
-  DS * 8, ES * 8, FS * 8, GS * 8
-};
-
-#define I386_NUM_REGS (sizeof (i386_regmap) / sizeof (i386_regmap[0]))
-
-/* So code below doesn't have to care, i386 or amd64.  */
-#define ORIG_EAX ORIG_RAX
-#define REGSIZE 8
-
-static const int x86_64_regmap[] =
-{
-  RAX * 8, RBX * 8, RCX * 8, RDX * 8,
-  RSI * 8, RDI * 8, RBP * 8, RSP * 8,
-  R8 * 8, R9 * 8, R10 * 8, R11 * 8,
-  R12 * 8, R13 * 8, R14 * 8, R15 * 8,
-  RIP * 8, EFLAGS * 8, CS * 8, SS * 8,
-  DS * 8, ES * 8, FS * 8, GS * 8,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  ORIG_RAX * 8,
-#ifdef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-  21 * 8,  22 * 8,
-#else
-  -1, -1,
-#endif
-  -1, -1, -1, -1,			/* MPX registers BND0 ... BND3.  */
-  -1, -1,				/* MPX registers BNDCFGU, BNDSTATUS.  */
-  -1, -1, -1, -1, -1, -1, -1, -1,       /* xmm16 ... xmm31 (AVX512)  */
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,       /* ymm16 ... ymm31 (AVX512)  */
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,       /* k0 ... k7 (AVX512)  */
-  -1, -1, -1, -1, -1, -1, -1, -1,       /* zmm0 ... zmm31 (AVX512)  */
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1, -1, -1, -1, -1, -1, -1, -1,
-  -1					/* pkru  */
-};
-
-#define X86_64_NUM_REGS (sizeof (x86_64_regmap) / sizeof (x86_64_regmap[0]))
-#define X86_64_USER_REGS (GS + 1)
-
-#else /* ! __x86_64__ */
-
-/* Mapping between the general-purpose registers in `struct user'
-   format and GDB's register array layout.  */
-static /*const*/ int i386_regmap[] = 
-{
-  EAX * 4, ECX * 4, EDX * 4, EBX * 4,
-  UESP * 4, EBP * 4, ESI * 4, EDI * 4,
-  EIP * 4, EFL * 4, CS * 4, SS * 4,
-  DS * 4, ES * 4, FS * 4, GS * 4
-};
-
-#define I386_NUM_REGS (sizeof (i386_regmap) / sizeof (i386_regmap[0]))
-
-#define REGSIZE 4
-
-#endif
-
-#ifdef __x86_64__
-
-/* Returns true if the current inferior belongs to a x86-64 process,
-   per the tdesc.  */
-
-static int
-is_64bit_tdesc (void)
-{
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-
-  return register_size (regcache->tdesc, 0) == 8;
-}
-
-#endif
-
-
-/* Called by libthread_db.  */
-
-ps_err_e
-ps_get_thread_area (struct ps_prochandle *ph,
-		    lwpid_t lwpid, int idx, void **base)
-{
-#ifdef __x86_64__
-  int use_64bit = is_64bit_tdesc ();
-
-  if (use_64bit)
-    {
-      switch (idx)
-	{
-	case FS:
-	  if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_FS) == 0)
-	    return PS_OK;
-	  break;
-	case GS:
-	  if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_GS) == 0)
-	    return PS_OK;
-	  break;
-	default:
-	  return PS_BADADDR;
-	}
-      return PS_ERR;
-    }
-#endif
-
-  {
-    unsigned int desc[4];
-
-    if (ptrace (PTRACE_GET_THREAD_AREA, lwpid,
-		(void *) (intptr_t) idx, (unsigned long) &desc) < 0)
-      return PS_ERR;
-
-    /* Ensure we properly extend the value to 64-bits for x86_64.  */
-    *base = (void *) (uintptr_t) desc[1];
-    return PS_OK;
-  }
-}
-
-/* Get the thread area address.  This is used to recognize which
-   thread is which when tracing with the in-process agent library.  We
-   don't read anything from the address, and treat it as opaque; it's
-   the address itself that we assume is unique per-thread.  */
-
-static int
-x86_get_thread_area (int lwpid, CORE_ADDR *addr)
-{
-#ifdef __x86_64__
-  int use_64bit = is_64bit_tdesc ();
-
-  if (use_64bit)
-    {
-      void *base;
-      if (ptrace (PTRACE_ARCH_PRCTL, lwpid, &base, ARCH_GET_FS) == 0)
-	{
-	  *addr = (CORE_ADDR) (uintptr_t) base;
-	  return 0;
-	}
-
-      return -1;
-    }
-#endif
-
-  {
-    struct lwp_info *lwp = find_lwp_pid (ptid_t (lwpid));
-    struct thread_info *thr = get_lwp_thread (lwp);
-    struct regcache *regcache = get_thread_regcache (thr, 1);
-    unsigned int desc[4];
-    ULONGEST gs = 0;
-    const int reg_thread_area = 3; /* bits to scale down register value.  */
-    int idx;
-
-    collect_register_by_name (regcache, "gs", &gs);
-
-    idx = gs >> reg_thread_area;
-
-    if (ptrace (PTRACE_GET_THREAD_AREA,
-		lwpid_of (thr),
-		(void *) (long) idx, (unsigned long) &desc) < 0)
-      return -1;
-
-    *addr = desc[1];
-    return 0;
-  }
-}
-
-
-
-static int
-x86_cannot_store_register (int regno)
-{
-#ifdef __x86_64__
-  if (is_64bit_tdesc ())
-    return 0;
-#endif
-
-  return regno >= I386_NUM_REGS;
-}
-
-static int
-x86_cannot_fetch_register (int regno)
-{
-#ifdef __x86_64__
-  if (is_64bit_tdesc ())
-    return 0;
-#endif
-
-  return regno >= I386_NUM_REGS;
-}
-
-static void
-x86_fill_gregset (struct regcache *regcache, void *buf)
-{
-  int i;
-
-#ifdef __x86_64__
-  if (register_size (regcache->tdesc, 0) == 8)
-    {
-      for (i = 0; i < X86_64_NUM_REGS; i++)
-	if (x86_64_regmap[i] != -1)
-	  collect_register (regcache, i, ((char *) buf) + x86_64_regmap[i]);
-
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-      {
-        unsigned long base;
-        int lwpid = lwpid_of (current_thread);
-
-        collect_register_by_name (regcache, "fs_base", &base);
-        ptrace (PTRACE_ARCH_PRCTL, lwpid, &base, ARCH_SET_FS);
-
-        collect_register_by_name (regcache, "gs_base", &base);
-        ptrace (PTRACE_ARCH_PRCTL, lwpid, &base, ARCH_SET_GS);
-      }
-#endif
-
-      return;
-    }
-
-  /* 32-bit inferior registers need to be zero-extended.
-     Callers would read uninitialized memory otherwise.  */
-  memset (buf, 0x00, X86_64_USER_REGS * 8);
-#endif
-
-  for (i = 0; i < I386_NUM_REGS; i++)
-    collect_register (regcache, i, ((char *) buf) + i386_regmap[i]);
-
-  collect_register_by_name (regcache, "orig_eax",
-			    ((char *) buf) + ORIG_EAX * REGSIZE);
-
-#ifdef __x86_64__
-  /* Sign extend EAX value to avoid potential syscall restart
-     problems. 
-
-     See amd64_linux_collect_native_gregset() in gdb/amd64-linux-nat.c
-     for a detailed explanation.  */
-  if (register_size (regcache->tdesc, 0) == 4)
-    {
-      void *ptr = ((gdb_byte *) buf
-                   + i386_regmap[find_regno (regcache->tdesc, "eax")]);
-
-      *(int64_t *) ptr = *(int32_t *) ptr;
-    }
-#endif
-}
-
-static void
-x86_store_gregset (struct regcache *regcache, const void *buf)
-{
-  int i;
-
-#ifdef __x86_64__
-  if (register_size (regcache->tdesc, 0) == 8)
-    {
-      for (i = 0; i < X86_64_NUM_REGS; i++)
-	if (x86_64_regmap[i] != -1)
-	  supply_register (regcache, i, ((char *) buf) + x86_64_regmap[i]);
-
-#ifndef HAVE_STRUCT_USER_REGS_STRUCT_FS_BASE
-      {
-        unsigned long base;
-        int lwpid = lwpid_of (current_thread);
-
-        if (ptrace (PTRACE_ARCH_PRCTL, lwpid, &base, ARCH_GET_FS) == 0)
-          supply_register_by_name (regcache, "fs_base", &base);
-
-        if (ptrace (PTRACE_ARCH_PRCTL, lwpid, &base, ARCH_GET_GS) == 0)
-          supply_register_by_name (regcache, "gs_base", &base);
-      }
-#endif
-      return;
-    }
-#endif
-
-  for (i = 0; i < I386_NUM_REGS; i++)
-    supply_register (regcache, i, ((char *) buf) + i386_regmap[i]);
-
-  supply_register_by_name (regcache, "orig_eax",
-			   ((char *) buf) + ORIG_EAX * REGSIZE);
-}
-
-static void
-x86_fill_fpregset (struct regcache *regcache, void *buf)
-{
-#ifdef __x86_64__
-  i387_cache_to_fxsave (regcache, buf);
-#else
-  i387_cache_to_fsave (regcache, buf);
-#endif
-}
-
-static void
-x86_store_fpregset (struct regcache *regcache, const void *buf)
-{
-#ifdef __x86_64__
-  i387_fxsave_to_cache (regcache, buf);
-#else
-  i387_fsave_to_cache (regcache, buf);
-#endif
-}
-
-#ifndef __x86_64__
-
-static void
-x86_fill_fpxregset (struct regcache *regcache, void *buf)
-{
-  i387_cache_to_fxsave (regcache, buf);
-}
-
-static void
-x86_store_fpxregset (struct regcache *regcache, const void *buf)
-{
-  i387_fxsave_to_cache (regcache, buf);
-}
-
-#endif
-
-static void
-x86_fill_xstateregset (struct regcache *regcache, void *buf)
-{
-  i387_cache_to_xsave (regcache, buf);
-}
-
-static void
-x86_store_xstateregset (struct regcache *regcache, const void *buf)
-{
-  i387_xsave_to_cache (regcache, buf);
-}
-
-/* ??? The non-biarch i386 case stores all the i387 regs twice.
-   Once in i387_.*fsave.* and once in i387_.*fxsave.*.
-   This is, presumably, to handle the case where PTRACE_[GS]ETFPXREGS
-   doesn't work.  IWBN to avoid the duplication in the case where it
-   does work.  Maybe the arch_setup routine could check whether it works
-   and update the supported regsets accordingly.  */
-
-static struct regset_info x86_regsets[] =
-{
-#ifdef HAVE_PTRACE_GETREGS
-  { PTRACE_GETREGS, PTRACE_SETREGS, 0, sizeof (elf_gregset_t),
-    GENERAL_REGS,
-    x86_fill_gregset, x86_store_gregset },
-  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_X86_XSTATE, 0,
-    EXTENDED_REGS, x86_fill_xstateregset, x86_store_xstateregset },
-# ifndef __x86_64__
-#  ifdef HAVE_PTRACE_GETFPXREGS
-  { PTRACE_GETFPXREGS, PTRACE_SETFPXREGS, 0, sizeof (elf_fpxregset_t),
-    EXTENDED_REGS,
-    x86_fill_fpxregset, x86_store_fpxregset },
-#  endif
-# endif
-  { PTRACE_GETFPREGS, PTRACE_SETFPREGS, 0, sizeof (elf_fpregset_t),
-    FP_REGS,
-    x86_fill_fpregset, x86_store_fpregset },
-#endif /* HAVE_PTRACE_GETREGS */
-  NULL_REGSET
-};
-
-static CORE_ADDR
-x86_get_pc (struct regcache *regcache)
-{
-  int use_64bit = register_size (regcache->tdesc, 0) == 8;
-
-  if (use_64bit)
-    {
-      uint64_t pc;
-
-      collect_register_by_name (regcache, "rip", &pc);
-      return (CORE_ADDR) pc;
-    }
-  else
-    {
-      uint32_t pc;
-
-      collect_register_by_name (regcache, "eip", &pc);
-      return (CORE_ADDR) pc;
-    }
-}
-
-static void
-x86_set_pc (struct regcache *regcache, CORE_ADDR pc)
-{
-  int use_64bit = register_size (regcache->tdesc, 0) == 8;
-
-  if (use_64bit)
-    {
-      uint64_t newpc = pc;
-
-      supply_register_by_name (regcache, "rip", &newpc);
-    }
-  else
-    {
-      uint32_t newpc = pc;
-
-      supply_register_by_name (regcache, "eip", &newpc);
-    }
-}
-
-static const gdb_byte x86_breakpoint[] = { 0xCC };
-#define x86_breakpoint_len 1
-
-static int
-x86_breakpoint_at (CORE_ADDR pc)
-{
-  unsigned char c;
-
-  (*the_target->read_memory) (pc, &c, 1);
-  if (c == 0xCC)
-    return 1;
-
-  return 0;
-}
-
-/* Low-level function vector.  */
-struct x86_dr_low_type x86_dr_low =
-  {
-    x86_linux_dr_set_control,
-    x86_linux_dr_set_addr,
-    x86_linux_dr_get_addr,
-    x86_linux_dr_get_status,
-    x86_linux_dr_get_control,
-    sizeof (void *),
-  };
-
-/* Breakpoint/Watchpoint support.  */
-
-static int
-x86_supports_z_point_type (char z_type)
-{
-  switch (z_type)
-    {
-    case Z_PACKET_SW_BP:
-    case Z_PACKET_HW_BP:
-    case Z_PACKET_WRITE_WP:
-    case Z_PACKET_ACCESS_WP:
-      return 1;
-    default:
-      return 0;
-    }
-}
-
-static int
-x86_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		  int size, struct raw_breakpoint *bp)
-{
-  struct process_info *proc = current_process ();
-
-  switch (type)
-    {
-    case raw_bkpt_type_hw:
-    case raw_bkpt_type_write_wp:
-    case raw_bkpt_type_access_wp:
-      {
-	enum target_hw_bp_type hw_type
-	  = raw_bkpt_type_to_target_hw_bp_type (type);
-	struct x86_debug_reg_state *state
-	  = &proc->priv->arch_private->debug_reg_state;
-
-	return x86_dr_insert_watchpoint (state, hw_type, addr, size);
-      }
-
-    default:
-      /* Unsupported.  */
-      return 1;
-    }
-}
-
-static int
-x86_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		  int size, struct raw_breakpoint *bp)
-{
-  struct process_info *proc = current_process ();
-
-  switch (type)
-    {
-    case raw_bkpt_type_hw:
-    case raw_bkpt_type_write_wp:
-    case raw_bkpt_type_access_wp:
-      {
-	enum target_hw_bp_type hw_type
-	  = raw_bkpt_type_to_target_hw_bp_type (type);
-	struct x86_debug_reg_state *state
-	  = &proc->priv->arch_private->debug_reg_state;
-
-	return x86_dr_remove_watchpoint (state, hw_type, addr, size);
-      }
-    default:
-      /* Unsupported.  */
-      return 1;
-    }
-}
-
-static int
-x86_stopped_by_watchpoint (void)
-{
-  struct process_info *proc = current_process ();
-  return x86_dr_stopped_by_watchpoint (&proc->priv->arch_private->debug_reg_state);
-}
-
-static CORE_ADDR
-x86_stopped_data_address (void)
-{
-  struct process_info *proc = current_process ();
-  CORE_ADDR addr;
-  if (x86_dr_stopped_data_address (&proc->priv->arch_private->debug_reg_state,
-				   &addr))
-    return addr;
-  return 0;
-}
-
-/* Called when a new process is created.  */
-
-static struct arch_process_info *
-x86_linux_new_process (void)
-{
-  struct arch_process_info *info = XCNEW (struct arch_process_info);
-
-  x86_low_init_dregs (&info->debug_reg_state);
-
-  return info;
-}
-
-/* Called when a process is being deleted.  */
-
-static void
-x86_linux_delete_process (struct arch_process_info *info)
-{
-  xfree (info);
-}
-
-/* Target routine for linux_new_fork.  */
-
-static void
-x86_linux_new_fork (struct process_info *parent, struct process_info *child)
-{
-  /* These are allocated by linux_add_process.  */
-  gdb_assert (parent->priv != NULL
-	      && parent->priv->arch_private != NULL);
-  gdb_assert (child->priv != NULL
-	      && child->priv->arch_private != NULL);
-
-  /* Linux kernel before 2.6.33 commit
-     72f674d203cd230426437cdcf7dd6f681dad8b0d
-     will inherit hardware debug registers from parent
-     on fork/vfork/clone.  Newer Linux kernels create such tasks with
-     zeroed debug registers.
-
-     GDB core assumes the child inherits the watchpoints/hw
-     breakpoints of the parent, and will remove them all from the
-     forked off process.  Copy the debug registers mirrors into the
-     new process so that all breakpoints and watchpoints can be
-     removed together.  The debug registers mirror will become zeroed
-     in the end before detaching the forked off process, thus making
-     this compatible with older Linux kernels too.  */
-
-  *child->priv->arch_private = *parent->priv->arch_private;
-}
-
-/* See nat/x86-dregs.h.  */
-
-struct x86_debug_reg_state *
-x86_debug_reg_state (pid_t pid)
-{
-  struct process_info *proc = find_process_pid (pid);
-
-  return &proc->priv->arch_private->debug_reg_state;
-}
-
-/* When GDBSERVER is built as a 64-bit application on linux, the
-   PTRACE_GETSIGINFO data is always presented in 64-bit layout.  Since
-   debugging a 32-bit inferior with a 64-bit GDBSERVER should look the same
-   as debugging it with a 32-bit GDBSERVER, we do the 32-bit <-> 64-bit
-   conversion in-place ourselves.  */
-
-/* Convert a ptrace/host siginfo object, into/from the siginfo in the
-   layout of the inferiors' architecture.  Returns true if any
-   conversion was done; false otherwise.  If DIRECTION is 1, then copy
-   from INF to PTRACE.  If DIRECTION is 0, copy from PTRACE to
-   INF.  */
-
-static int
-x86_siginfo_fixup (siginfo_t *ptrace, gdb_byte *inf, int direction)
-{
-#ifdef __x86_64__
-  unsigned int machine;
-  int tid = lwpid_of (current_thread);
-  int is_elf64 = linux_pid_exe_is_elf_64_file (tid, &machine);
-
-  /* Is the inferior 32-bit?  If so, then fixup the siginfo object.  */
-  if (!is_64bit_tdesc ())
-      return amd64_linux_siginfo_fixup_common (ptrace, inf, direction,
-					       FIXUP_32);
-  /* No fixup for native x32 GDB.  */
-  else if (!is_elf64 && sizeof (void *) == 8)
-    return amd64_linux_siginfo_fixup_common (ptrace, inf, direction,
-					     FIXUP_X32);
-#endif
-
-  return 0;
-}
-
-static int use_xml;
-
-/* Format of XSAVE extended state is:
-	struct
-	{
-	  fxsave_bytes[0..463]
-	  sw_usable_bytes[464..511]
-	  xstate_hdr_bytes[512..575]
-	  avx_bytes[576..831]
-	  future_state etc
-	};
-
-  Same memory layout will be used for the coredump NT_X86_XSTATE
-  representing the XSAVE extended state registers.
-
-  The first 8 bytes of the sw_usable_bytes[464..467] is the OS enabled
-  extended state mask, which is the same as the extended control register
-  0 (the XFEATURE_ENABLED_MASK register), XCR0.  We can use this mask
-  together with the mask saved in the xstate_hdr_bytes to determine what
-  states the processor/OS supports and what state, used or initialized,
-  the process/thread is in.  */
-#define I386_LINUX_XSAVE_XCR0_OFFSET 464
-
-/* Does the current host support the GETFPXREGS request?  The header
-   file may or may not define it, and even if it is defined, the
-   kernel will return EIO if it's running on a pre-SSE processor.  */
-int have_ptrace_getfpxregs =
-#ifdef HAVE_PTRACE_GETFPXREGS
-  -1
-#else
-  0
-#endif
-;
-
-/* Get Linux/x86 target description from running target.  */
-
-static const struct target_desc *
-x86_linux_read_description (void)
-{
-  unsigned int machine;
-  int is_elf64;
-  int xcr0_features;
-  int tid;
-  static uint64_t xcr0;
-  struct regset_info *regset;
-
-  tid = lwpid_of (current_thread);
-
-  is_elf64 = linux_pid_exe_is_elf_64_file (tid, &machine);
-
-  if (sizeof (void *) == 4)
-    {
-      if (is_elf64 > 0)
-       error (_("Can't debug 64-bit process with 32-bit GDBserver"));
-#ifndef __x86_64__
-      else if (machine == EM_X86_64)
-       error (_("Can't debug x86-64 process with 32-bit GDBserver"));
-#endif
-    }
-
-#if !defined __x86_64__ && defined HAVE_PTRACE_GETFPXREGS
-  if (machine == EM_386 && have_ptrace_getfpxregs == -1)
-    {
-      elf_fpxregset_t fpxregs;
-
-      if (ptrace (PTRACE_GETFPXREGS, tid, 0, (long) &fpxregs) < 0)
-	{
-	  have_ptrace_getfpxregs = 0;
-	  have_ptrace_getregset = 0;
-	  return i386_linux_read_description (X86_XSTATE_X87);
-	}
-      else
-	have_ptrace_getfpxregs = 1;
-    }
-#endif
-
-  if (!use_xml)
-    {
-      x86_xcr0 = X86_XSTATE_SSE_MASK;
-
-      /* Don't use XML.  */
-#ifdef __x86_64__
-      if (machine == EM_X86_64)
-	return tdesc_amd64_linux_no_xml;
-      else
-#endif
-	return tdesc_i386_linux_no_xml;
-    }
-
-  if (have_ptrace_getregset == -1)
-    {
-      uint64_t xstateregs[(X86_XSTATE_SSE_SIZE / sizeof (uint64_t))];
-      struct iovec iov;
-
-      iov.iov_base = xstateregs;
-      iov.iov_len = sizeof (xstateregs);
-
-      /* Check if PTRACE_GETREGSET works.  */
-      if (ptrace (PTRACE_GETREGSET, tid,
-		  (unsigned int) NT_X86_XSTATE, (long) &iov) < 0)
-	have_ptrace_getregset = 0;
-      else
-	{
-	  have_ptrace_getregset = 1;
-
-	  /* Get XCR0 from XSAVE extended state.  */
-	  xcr0 = xstateregs[(I386_LINUX_XSAVE_XCR0_OFFSET
-			     / sizeof (uint64_t))];
-
-	  /* Use PTRACE_GETREGSET if it is available.  */
-	  for (regset = x86_regsets;
-	       regset->fill_function != NULL; regset++)
-	    if (regset->get_request == PTRACE_GETREGSET)
-	      regset->size = X86_XSTATE_SIZE (xcr0);
-	    else if (regset->type != GENERAL_REGS)
-	      regset->size = 0;
-	}
-    }
-
-  /* Check the native XCR0 only if PTRACE_GETREGSET is available.  */
-  xcr0_features = (have_ptrace_getregset
-		   && (xcr0 & X86_XSTATE_ALL_MASK));
-
-  if (xcr0_features)
-    x86_xcr0 = xcr0;
-
-  if (machine == EM_X86_64)
-    {
-#ifdef __x86_64__
-      const target_desc *tdesc = NULL;
-
-      if (xcr0_features)
-	{
-	  tdesc = amd64_linux_read_description (xcr0 & X86_XSTATE_ALL_MASK,
-						!is_elf64);
-	}
-
-      if (tdesc == NULL)
-	tdesc = amd64_linux_read_description (X86_XSTATE_SSE_MASK, !is_elf64);
-      return tdesc;
-#endif
-    }
-  else
-    {
-      const target_desc *tdesc = NULL;
-
-      if (xcr0_features)
-	  tdesc = i386_linux_read_description (xcr0 & X86_XSTATE_ALL_MASK);
-
-      if (tdesc == NULL)
-	tdesc = i386_linux_read_description (X86_XSTATE_SSE);
-
-      return tdesc;
-    }
-
-  gdb_assert_not_reached ("failed to return tdesc");
-}
-
-/* Update all the target description of all processes; a new GDB
-   connected, and it may or not support xml target descriptions.  */
-
-static void
-x86_linux_update_xmltarget (void)
-{
-  struct thread_info *saved_thread = current_thread;
-
-  /* Before changing the register cache's internal layout, flush the
-     contents of the current valid caches back to the threads, and
-     release the current regcache objects.  */
-  regcache_release ();
-
-  for_each_process ([] (process_info *proc) {
-    int pid = proc->pid;
-
-    /* Look up any thread of this process.  */
-    current_thread = find_any_thread_of_pid (pid);
-
-    the_low_target.arch_setup ();
-  });
-
-  current_thread = saved_thread;
-}
-
-/* Process qSupported query, "xmlRegisters=".  Update the buffer size for
-   PTRACE_GETREGSET.  */
-
-static void
-x86_linux_process_qsupported (char **features, int count)
-{
-  int i;
-
-  /* Return if gdb doesn't support XML.  If gdb sends "xmlRegisters="
-     with "i386" in qSupported query, it supports x86 XML target
-     descriptions.  */
-  use_xml = 0;
-  for (i = 0; i < count; i++)
-    {
-      const char *feature = features[i];
-
-      if (startswith (feature, "xmlRegisters="))
-	{
-	  char *copy = xstrdup (feature + 13);
-
-	  char *saveptr;
-	  for (char *p = strtok_r (copy, ",", &saveptr);
-	       p != NULL;
-	       p = strtok_r (NULL, ",", &saveptr))
-	    {
-	      if (strcmp (p, "i386") == 0)
-		{
-		  use_xml = 1;
-		  break;
-		}
-	    }
-
-	  free (copy);
-	}
-    }
-  x86_linux_update_xmltarget ();
-}
-
-/* Common for x86/x86-64.  */
-
-static struct regsets_info x86_regsets_info =
-  {
-    x86_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-#ifdef __x86_64__
-static struct regs_info amd64_linux_regs_info =
-  {
-    NULL, /* regset_bitmap */
-    NULL, /* usrregs_info */
-    &x86_regsets_info
-  };
-#endif
-static struct usrregs_info i386_linux_usrregs_info =
-  {
-    I386_NUM_REGS,
-    i386_regmap,
-  };
-
-static struct regs_info i386_linux_regs_info =
-  {
-    NULL, /* regset_bitmap */
-    &i386_linux_usrregs_info,
-    &x86_regsets_info
-  };
-
-const struct regs_info *
-x86_linux_regs_info (void)
-{
-#ifdef __x86_64__
-  if (is_64bit_tdesc ())
-    return &amd64_linux_regs_info;
-  else
-#endif
-    return &i386_linux_regs_info;
-}
-
-/* Initialize the target description for the architecture of the
-   inferior.  */
-
-static void
-x86_arch_setup (void)
-{
-  current_process ()->tdesc = x86_linux_read_description ();
-}
-
-/* Fill *SYSNO and *SYSRET with the syscall nr trapped and the syscall return
-   code.  This should only be called if LWP got a SYSCALL_SIGTRAP.  */
-
-static void
-x86_get_syscall_trapinfo (struct regcache *regcache, int *sysno)
-{
-  int use_64bit = register_size (regcache->tdesc, 0) == 8;
-
-  if (use_64bit)
-    {
-      long l_sysno;
-
-      collect_register_by_name (regcache, "orig_rax", &l_sysno);
-      *sysno = (int) l_sysno;
-    }
-  else
-    collect_register_by_name (regcache, "orig_eax", sysno);
-}
-
-static int
-x86_supports_tracepoints (void)
-{
-  return 1;
-}
-
-static void
-append_insns (CORE_ADDR *to, size_t len, const unsigned char *buf)
-{
-  target_write_memory (*to, buf, len);
-  *to += len;
-}
-
-static int
-push_opcode (unsigned char *buf, const char *op)
-{
-  unsigned char *buf_org = buf;
-
-  while (1)
-    {
-      char *endptr;
-      unsigned long ul = strtoul (op, &endptr, 16);
-
-      if (endptr == op)
-	break;
-
-      *buf++ = ul;
-      op = endptr;
-    }
-
-  return buf - buf_org;
-}
-
-#ifdef __x86_64__
-
-/* Build a jump pad that saves registers and calls a collection
-   function.  Writes a jump instruction to the jump pad to
-   JJUMPAD_INSN.  The caller is responsible to write it in at the
-   tracepoint address.  */
-
-static int
-amd64_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint, CORE_ADDR tpaddr,
-					CORE_ADDR collector,
-					CORE_ADDR lockaddr,
-					ULONGEST orig_size,
-					CORE_ADDR *jump_entry,
-					CORE_ADDR *trampoline,
-					ULONGEST *trampoline_size,
-					unsigned char *jjump_pad_insn,
-					ULONGEST *jjump_pad_insn_size,
-					CORE_ADDR *adjusted_insn_addr,
-					CORE_ADDR *adjusted_insn_addr_end,
-					char *err)
-{
-  unsigned char buf[40];
-  int i, offset;
-  int64_t loffset;
-
-  CORE_ADDR buildaddr = *jump_entry;
-
-  /* Build the jump pad.  */
-
-  /* First, do tracepoint data collection.  Save registers.  */
-  i = 0;
-  /* Need to ensure stack pointer saved first.  */
-  buf[i++] = 0x54; /* push %rsp */
-  buf[i++] = 0x55; /* push %rbp */
-  buf[i++] = 0x57; /* push %rdi */
-  buf[i++] = 0x56; /* push %rsi */
-  buf[i++] = 0x52; /* push %rdx */
-  buf[i++] = 0x51; /* push %rcx */
-  buf[i++] = 0x53; /* push %rbx */
-  buf[i++] = 0x50; /* push %rax */
-  buf[i++] = 0x41; buf[i++] = 0x57; /* push %r15 */
-  buf[i++] = 0x41; buf[i++] = 0x56; /* push %r14 */
-  buf[i++] = 0x41; buf[i++] = 0x55; /* push %r13 */
-  buf[i++] = 0x41; buf[i++] = 0x54; /* push %r12 */
-  buf[i++] = 0x41; buf[i++] = 0x53; /* push %r11 */
-  buf[i++] = 0x41; buf[i++] = 0x52; /* push %r10 */
-  buf[i++] = 0x41; buf[i++] = 0x51; /* push %r9 */
-  buf[i++] = 0x41; buf[i++] = 0x50; /* push %r8 */
-  buf[i++] = 0x9c; /* pushfq */
-  buf[i++] = 0x48; /* movabs <addr>,%rdi */
-  buf[i++] = 0xbf;
-  memcpy (buf + i, &tpaddr, 8);
-  i += 8;
-  buf[i++] = 0x57; /* push %rdi */
-  append_insns (&buildaddr, i, buf);
-
-  /* Stack space for the collecting_t object.  */
-  i = 0;
-  i += push_opcode (&buf[i], "48 83 ec 18");	/* sub $0x18,%rsp */
-  i += push_opcode (&buf[i], "48 b8");          /* mov <tpoint>,%rax */
-  memcpy (buf + i, &tpoint, 8);
-  i += 8;
-  i += push_opcode (&buf[i], "48 89 04 24");    /* mov %rax,(%rsp) */
-  i += push_opcode (&buf[i],
-		    "64 48 8b 04 25 00 00 00 00"); /* mov %fs:0x0,%rax */
-  i += push_opcode (&buf[i], "48 89 44 24 08"); /* mov %rax,0x8(%rsp) */
-  append_insns (&buildaddr, i, buf);
-
-  /* spin-lock.  */
-  i = 0;
-  i += push_opcode (&buf[i], "48 be");		/* movl <lockaddr>,%rsi */
-  memcpy (&buf[i], (void *) &lockaddr, 8);
-  i += 8;
-  i += push_opcode (&buf[i], "48 89 e1");       /* mov %rsp,%rcx */
-  i += push_opcode (&buf[i], "31 c0");		/* xor %eax,%eax */
-  i += push_opcode (&buf[i], "f0 48 0f b1 0e"); /* lock cmpxchg %rcx,(%rsi) */
-  i += push_opcode (&buf[i], "48 85 c0");	/* test %rax,%rax */
-  i += push_opcode (&buf[i], "75 f4");		/* jne <again> */
-  append_insns (&buildaddr, i, buf);
-
-  /* Set up the gdb_collect call.  */
-  /* At this point, (stack pointer + 0x18) is the base of our saved
-     register block.  */
-
-  i = 0;
-  i += push_opcode (&buf[i], "48 89 e6");	/* mov %rsp,%rsi */
-  i += push_opcode (&buf[i], "48 83 c6 18");	/* add $0x18,%rsi */
-
-  /* tpoint address may be 64-bit wide.  */
-  i += push_opcode (&buf[i], "48 bf");		/* movl <addr>,%rdi */
-  memcpy (buf + i, &tpoint, 8);
-  i += 8;
-  append_insns (&buildaddr, i, buf);
-
-  /* The collector function being in the shared library, may be
-     >31-bits away off the jump pad.  */
-  i = 0;
-  i += push_opcode (&buf[i], "48 b8");          /* mov $collector,%rax */
-  memcpy (buf + i, &collector, 8);
-  i += 8;
-  i += push_opcode (&buf[i], "ff d0");          /* callq *%rax */
-  append_insns (&buildaddr, i, buf);
-
-  /* Clear the spin-lock.  */
-  i = 0;
-  i += push_opcode (&buf[i], "31 c0");		/* xor %eax,%eax */
-  i += push_opcode (&buf[i], "48 a3");		/* mov %rax, lockaddr */
-  memcpy (buf + i, &lockaddr, 8);
-  i += 8;
-  append_insns (&buildaddr, i, buf);
-
-  /* Remove stack that had been used for the collect_t object.  */
-  i = 0;
-  i += push_opcode (&buf[i], "48 83 c4 18");	/* add $0x18,%rsp */
-  append_insns (&buildaddr, i, buf);
-
-  /* Restore register state.  */
-  i = 0;
-  buf[i++] = 0x48; /* add $0x8,%rsp */
-  buf[i++] = 0x83;
-  buf[i++] = 0xc4;
-  buf[i++] = 0x08;
-  buf[i++] = 0x9d; /* popfq */
-  buf[i++] = 0x41; buf[i++] = 0x58; /* pop %r8 */
-  buf[i++] = 0x41; buf[i++] = 0x59; /* pop %r9 */
-  buf[i++] = 0x41; buf[i++] = 0x5a; /* pop %r10 */
-  buf[i++] = 0x41; buf[i++] = 0x5b; /* pop %r11 */
-  buf[i++] = 0x41; buf[i++] = 0x5c; /* pop %r12 */
-  buf[i++] = 0x41; buf[i++] = 0x5d; /* pop %r13 */
-  buf[i++] = 0x41; buf[i++] = 0x5e; /* pop %r14 */
-  buf[i++] = 0x41; buf[i++] = 0x5f; /* pop %r15 */
-  buf[i++] = 0x58; /* pop %rax */
-  buf[i++] = 0x5b; /* pop %rbx */
-  buf[i++] = 0x59; /* pop %rcx */
-  buf[i++] = 0x5a; /* pop %rdx */
-  buf[i++] = 0x5e; /* pop %rsi */
-  buf[i++] = 0x5f; /* pop %rdi */
-  buf[i++] = 0x5d; /* pop %rbp */
-  buf[i++] = 0x5c; /* pop %rsp */
-  append_insns (&buildaddr, i, buf);
-
-  /* Now, adjust the original instruction to execute in the jump
-     pad.  */
-  *adjusted_insn_addr = buildaddr;
-  relocate_instruction (&buildaddr, tpaddr);
-  *adjusted_insn_addr_end = buildaddr;
-
-  /* Finally, write a jump back to the program.  */
-
-  loffset = (tpaddr + orig_size) - (buildaddr + sizeof (jump_insn));
-  if (loffset > INT_MAX || loffset < INT_MIN)
-    {
-      sprintf (err,
-	       "E.Jump back from jump pad too far from tracepoint "
-	       "(offset 0x%" PRIx64 " > int32).", loffset);
-      return 1;
-    }
-
-  offset = (int) loffset;
-  memcpy (buf, jump_insn, sizeof (jump_insn));
-  memcpy (buf + 1, &offset, 4);
-  append_insns (&buildaddr, sizeof (jump_insn), buf);
-
-  /* The jump pad is now built.  Wire in a jump to our jump pad.  This
-     is always done last (by our caller actually), so that we can
-     install fast tracepoints with threads running.  This relies on
-     the agent's atomic write support.  */
-  loffset = *jump_entry - (tpaddr + sizeof (jump_insn));
-  if (loffset > INT_MAX || loffset < INT_MIN)
-    {
-      sprintf (err,
-	       "E.Jump pad too far from tracepoint "
-	       "(offset 0x%" PRIx64 " > int32).", loffset);
-      return 1;
-    }
-
-  offset = (int) loffset;
-
-  memcpy (buf, jump_insn, sizeof (jump_insn));
-  memcpy (buf + 1, &offset, 4);
-  memcpy (jjump_pad_insn, buf, sizeof (jump_insn));
-  *jjump_pad_insn_size = sizeof (jump_insn);
-
-  /* Return the end address of our pad.  */
-  *jump_entry = buildaddr;
-
-  return 0;
-}
-
-#endif /* __x86_64__ */
-
-/* Build a jump pad that saves registers and calls a collection
-   function.  Writes a jump instruction to the jump pad to
-   JJUMPAD_INSN.  The caller is responsible to write it in at the
-   tracepoint address.  */
-
-static int
-i386_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint, CORE_ADDR tpaddr,
-				       CORE_ADDR collector,
-				       CORE_ADDR lockaddr,
-				       ULONGEST orig_size,
-				       CORE_ADDR *jump_entry,
-				       CORE_ADDR *trampoline,
-				       ULONGEST *trampoline_size,
-				       unsigned char *jjump_pad_insn,
-				       ULONGEST *jjump_pad_insn_size,
-				       CORE_ADDR *adjusted_insn_addr,
-				       CORE_ADDR *adjusted_insn_addr_end,
-				       char *err)
-{
-  unsigned char buf[0x100];
-  int i, offset;
-  CORE_ADDR buildaddr = *jump_entry;
-
-  /* Build the jump pad.  */
-
-  /* First, do tracepoint data collection.  Save registers.  */
-  i = 0;
-  buf[i++] = 0x60; /* pushad */
-  buf[i++] = 0x68; /* push tpaddr aka $pc */
-  *((int *)(buf + i)) = (int) tpaddr;
-  i += 4;
-  buf[i++] = 0x9c; /* pushf */
-  buf[i++] = 0x1e; /* push %ds */
-  buf[i++] = 0x06; /* push %es */
-  buf[i++] = 0x0f; /* push %fs */
-  buf[i++] = 0xa0;
-  buf[i++] = 0x0f; /* push %gs */
-  buf[i++] = 0xa8;
-  buf[i++] = 0x16; /* push %ss */
-  buf[i++] = 0x0e; /* push %cs */
-  append_insns (&buildaddr, i, buf);
-
-  /* Stack space for the collecting_t object.  */
-  i = 0;
-  i += push_opcode (&buf[i], "83 ec 08");	/* sub    $0x8,%esp */
-
-  /* Build the object.  */
-  i += push_opcode (&buf[i], "b8");		/* mov    <tpoint>,%eax */
-  memcpy (buf + i, &tpoint, 4);
-  i += 4;
-  i += push_opcode (&buf[i], "89 04 24");	   /* mov %eax,(%esp) */
-
-  i += push_opcode (&buf[i], "65 a1 00 00 00 00"); /* mov %gs:0x0,%eax */
-  i += push_opcode (&buf[i], "89 44 24 04");	   /* mov %eax,0x4(%esp) */
-  append_insns (&buildaddr, i, buf);
-
-  /* spin-lock.  Note this is using cmpxchg, which leaves i386 behind.
-     If we cared for it, this could be using xchg alternatively.  */
-
-  i = 0;
-  i += push_opcode (&buf[i], "31 c0");		/* xor %eax,%eax */
-  i += push_opcode (&buf[i], "f0 0f b1 25");    /* lock cmpxchg
-						   %esp,<lockaddr> */
-  memcpy (&buf[i], (void *) &lockaddr, 4);
-  i += 4;
-  i += push_opcode (&buf[i], "85 c0");		/* test %eax,%eax */
-  i += push_opcode (&buf[i], "75 f2");		/* jne <again> */
-  append_insns (&buildaddr, i, buf);
-
-
-  /* Set up arguments to the gdb_collect call.  */
-  i = 0;
-  i += push_opcode (&buf[i], "89 e0");		/* mov %esp,%eax */
-  i += push_opcode (&buf[i], "83 c0 08");	/* add $0x08,%eax */
-  i += push_opcode (&buf[i], "89 44 24 fc");	/* mov %eax,-0x4(%esp) */
-  append_insns (&buildaddr, i, buf);
-
-  i = 0;
-  i += push_opcode (&buf[i], "83 ec 08");	/* sub $0x8,%esp */
-  append_insns (&buildaddr, i, buf);
-
-  i = 0;
-  i += push_opcode (&buf[i], "c7 04 24");       /* movl <addr>,(%esp) */
-  memcpy (&buf[i], (void *) &tpoint, 4);
-  i += 4;
-  append_insns (&buildaddr, i, buf);
-
-  buf[0] = 0xe8; /* call <reladdr> */
-  offset = collector - (buildaddr + sizeof (jump_insn));
-  memcpy (buf + 1, &offset, 4);
-  append_insns (&buildaddr, 5, buf);
-  /* Clean up after the call.  */
-  buf[0] = 0x83; /* add $0x8,%esp */
-  buf[1] = 0xc4;
-  buf[2] = 0x08;
-  append_insns (&buildaddr, 3, buf);
-
-
-  /* Clear the spin-lock.  This would need the LOCK prefix on older
-     broken archs.  */
-  i = 0;
-  i += push_opcode (&buf[i], "31 c0");		/* xor %eax,%eax */
-  i += push_opcode (&buf[i], "a3");		/* mov %eax, lockaddr */
-  memcpy (buf + i, &lockaddr, 4);
-  i += 4;
-  append_insns (&buildaddr, i, buf);
-
-
-  /* Remove stack that had been used for the collect_t object.  */
-  i = 0;
-  i += push_opcode (&buf[i], "83 c4 08");	/* add $0x08,%esp */
-  append_insns (&buildaddr, i, buf);
-
-  i = 0;
-  buf[i++] = 0x83; /* add $0x4,%esp (no pop of %cs, assume unchanged) */
-  buf[i++] = 0xc4;
-  buf[i++] = 0x04;
-  buf[i++] = 0x17; /* pop %ss */
-  buf[i++] = 0x0f; /* pop %gs */
-  buf[i++] = 0xa9;
-  buf[i++] = 0x0f; /* pop %fs */
-  buf[i++] = 0xa1;
-  buf[i++] = 0x07; /* pop %es */
-  buf[i++] = 0x1f; /* pop %ds */
-  buf[i++] = 0x9d; /* popf */
-  buf[i++] = 0x83; /* add $0x4,%esp (pop of tpaddr aka $pc) */
-  buf[i++] = 0xc4;
-  buf[i++] = 0x04;
-  buf[i++] = 0x61; /* popad */
-  append_insns (&buildaddr, i, buf);
-
-  /* Now, adjust the original instruction to execute in the jump
-     pad.  */
-  *adjusted_insn_addr = buildaddr;
-  relocate_instruction (&buildaddr, tpaddr);
-  *adjusted_insn_addr_end = buildaddr;
-
-  /* Write the jump back to the program.  */
-  offset = (tpaddr + orig_size) - (buildaddr + sizeof (jump_insn));
-  memcpy (buf, jump_insn, sizeof (jump_insn));
-  memcpy (buf + 1, &offset, 4);
-  append_insns (&buildaddr, sizeof (jump_insn), buf);
-
-  /* The jump pad is now built.  Wire in a jump to our jump pad.  This
-     is always done last (by our caller actually), so that we can
-     install fast tracepoints with threads running.  This relies on
-     the agent's atomic write support.  */
-  if (orig_size == 4)
-    {
-      /* Create a trampoline.  */
-      *trampoline_size = sizeof (jump_insn);
-      if (!claim_trampoline_space (*trampoline_size, trampoline))
-	{
-	  /* No trampoline space available.  */
-	  strcpy (err,
-		  "E.Cannot allocate trampoline space needed for fast "
-		  "tracepoints on 4-byte instructions.");
-	  return 1;
-	}
-
-      offset = *jump_entry - (*trampoline + sizeof (jump_insn));
-      memcpy (buf, jump_insn, sizeof (jump_insn));
-      memcpy (buf + 1, &offset, 4);
-      target_write_memory (*trampoline, buf, sizeof (jump_insn));
-
-      /* Use a 16-bit relative jump instruction to jump to the trampoline.  */
-      offset = (*trampoline - (tpaddr + sizeof (small_jump_insn))) & 0xffff;
-      memcpy (buf, small_jump_insn, sizeof (small_jump_insn));
-      memcpy (buf + 2, &offset, 2);
-      memcpy (jjump_pad_insn, buf, sizeof (small_jump_insn));
-      *jjump_pad_insn_size = sizeof (small_jump_insn);
-    }
-  else
-    {
-      /* Else use a 32-bit relative jump instruction.  */
-      offset = *jump_entry - (tpaddr + sizeof (jump_insn));
-      memcpy (buf, jump_insn, sizeof (jump_insn));
-      memcpy (buf + 1, &offset, 4);
-      memcpy (jjump_pad_insn, buf, sizeof (jump_insn));
-      *jjump_pad_insn_size = sizeof (jump_insn);
-    }
-
-  /* Return the end address of our pad.  */
-  *jump_entry = buildaddr;
-
-  return 0;
-}
-
-static int
-x86_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint, CORE_ADDR tpaddr,
-				      CORE_ADDR collector,
-				      CORE_ADDR lockaddr,
-				      ULONGEST orig_size,
-				      CORE_ADDR *jump_entry,
-				      CORE_ADDR *trampoline,
-				      ULONGEST *trampoline_size,
-				      unsigned char *jjump_pad_insn,
-				      ULONGEST *jjump_pad_insn_size,
-				      CORE_ADDR *adjusted_insn_addr,
-				      CORE_ADDR *adjusted_insn_addr_end,
-				      char *err)
-{
-#ifdef __x86_64__
-  if (is_64bit_tdesc ())
-    return amd64_install_fast_tracepoint_jump_pad (tpoint, tpaddr,
-						   collector, lockaddr,
-						   orig_size, jump_entry,
-						   trampoline, trampoline_size,
-						   jjump_pad_insn,
-						   jjump_pad_insn_size,
-						   adjusted_insn_addr,
-						   adjusted_insn_addr_end,
-						   err);
-#endif
-
-  return i386_install_fast_tracepoint_jump_pad (tpoint, tpaddr,
-						collector, lockaddr,
-						orig_size, jump_entry,
-						trampoline, trampoline_size,
-						jjump_pad_insn,
-						jjump_pad_insn_size,
-						adjusted_insn_addr,
-						adjusted_insn_addr_end,
-						err);
-}
-
-/* Return the minimum instruction length for fast tracepoints on x86/x86-64
-   architectures.  */
-
-static int
-x86_get_min_fast_tracepoint_insn_len (void)
-{
-  static int warned_about_fast_tracepoints = 0;
-
-#ifdef __x86_64__
-  /*  On x86-64, 5-byte jump instructions with a 4-byte offset are always
-      used for fast tracepoints.  */
-  if (is_64bit_tdesc ())
-    return 5;
-#endif
-
-  if (agent_loaded_p ())
-    {
-      char errbuf[IPA_BUFSIZ];
-
-      errbuf[0] = '\0';
-
-      /* On x86, if trampolines are available, then 4-byte jump instructions
-	 with a 2-byte offset may be used, otherwise 5-byte jump instructions
-	 with a 4-byte offset are used instead.  */
-      if (have_fast_tracepoint_trampoline_buffer (errbuf))
-	return 4;
-      else
-	{
-	  /* GDB has no channel to explain to user why a shorter fast
-	     tracepoint is not possible, but at least make GDBserver
-	     mention that something has gone awry.  */
-	  if (!warned_about_fast_tracepoints)
-	    {
-	      warning ("4-byte fast tracepoints not available; %s", errbuf);
-	      warned_about_fast_tracepoints = 1;
-	    }
-	  return 5;
-	}
-    }
-  else
-    {
-      /* Indicate that the minimum length is currently unknown since the IPA
-	 has not loaded yet.  */
-      return 0;
-    }
-}
-
-static void
-add_insns (unsigned char *start, int len)
-{
-  CORE_ADDR buildaddr = current_insn_ptr;
-
-  if (debug_threads)
-    debug_printf ("Adding %d bytes of insn at %s\n",
-		  len, paddress (buildaddr));
-
-  append_insns (&buildaddr, len, start);
-  current_insn_ptr = buildaddr;
-}
-
-/* Our general strategy for emitting code is to avoid specifying raw
-   bytes whenever possible, and instead copy a block of inline asm
-   that is embedded in the function.  This is a little messy, because
-   we need to keep the compiler from discarding what looks like dead
-   code, plus suppress various warnings.  */
-
-#define EMIT_ASM(NAME, INSNS)						\
-  do									\
-    {									\
-      extern unsigned char start_ ## NAME, end_ ## NAME;		\
-      add_insns (&start_ ## NAME, &end_ ## NAME - &start_ ## NAME);	\
-      __asm__ ("jmp end_" #NAME "\n"					\
-	       "\t" "start_" #NAME ":"					\
-	       "\t" INSNS "\n"						\
-	       "\t" "end_" #NAME ":");					\
-    } while (0)
-
-#ifdef __x86_64__
-
-#define EMIT_ASM32(NAME,INSNS)						\
-  do									\
-    {									\
-      extern unsigned char start_ ## NAME, end_ ## NAME;		\
-      add_insns (&start_ ## NAME, &end_ ## NAME - &start_ ## NAME);	\
-      __asm__ (".code32\n"						\
-	       "\t" "jmp end_" #NAME "\n"				\
-	       "\t" "start_" #NAME ":\n"				\
-	       "\t" INSNS "\n"						\
-	       "\t" "end_" #NAME ":\n"					\
-	       ".code64\n");						\
-    } while (0)
-
-#else
-
-#define EMIT_ASM32(NAME,INSNS) EMIT_ASM(NAME,INSNS)
-
-#endif
-
-#ifdef __x86_64__
-
-static void
-amd64_emit_prologue (void)
-{
-  EMIT_ASM (amd64_prologue,
-	    "pushq %rbp\n\t"
-	    "movq %rsp,%rbp\n\t"
-	    "sub $0x20,%rsp\n\t"
-	    "movq %rdi,-8(%rbp)\n\t"
-	    "movq %rsi,-16(%rbp)");
-}
-
-
-static void
-amd64_emit_epilogue (void)
-{
-  EMIT_ASM (amd64_epilogue,
-	    "movq -16(%rbp),%rdi\n\t"
-	    "movq %rax,(%rdi)\n\t"
-	    "xor %rax,%rax\n\t"
-	    "leave\n\t"
-	    "ret");
-}
-
-static void
-amd64_emit_add (void)
-{
-  EMIT_ASM (amd64_add,
-	    "add (%rsp),%rax\n\t"
-	    "lea 0x8(%rsp),%rsp");
-}
-
-static void
-amd64_emit_sub (void)
-{
-  EMIT_ASM (amd64_sub,
-	    "sub %rax,(%rsp)\n\t"
-	    "pop %rax");
-}
-
-static void
-amd64_emit_mul (void)
-{
-  emit_error = 1;
-}
-
-static void
-amd64_emit_lsh (void)
-{
-  emit_error = 1;
-}
-
-static void
-amd64_emit_rsh_signed (void)
-{
-  emit_error = 1;
-}
-
-static void
-amd64_emit_rsh_unsigned (void)
-{
-  emit_error = 1;
-}
-
-static void
-amd64_emit_ext (int arg)
-{
-  switch (arg)
-    {
-    case 8:
-      EMIT_ASM (amd64_ext_8,
-		"cbtw\n\t"
-		"cwtl\n\t"
-		"cltq");
-      break;
-    case 16:
-      EMIT_ASM (amd64_ext_16,
-		"cwtl\n\t"
-		"cltq");
-      break;
-    case 32:
-      EMIT_ASM (amd64_ext_32,
-		"cltq");
-      break;
-    default:
-      emit_error = 1;
-    }
-}
-
-static void
-amd64_emit_log_not (void)
-{
-  EMIT_ASM (amd64_log_not,
-	    "test %rax,%rax\n\t"
-	    "sete %cl\n\t"
-	    "movzbq %cl,%rax");
-}
-
-static void
-amd64_emit_bit_and (void)
-{
-  EMIT_ASM (amd64_and,
-	    "and (%rsp),%rax\n\t"
-	    "lea 0x8(%rsp),%rsp");
-}
-
-static void
-amd64_emit_bit_or (void)
-{
-  EMIT_ASM (amd64_or,
-	    "or (%rsp),%rax\n\t"
-	    "lea 0x8(%rsp),%rsp");
-}
-
-static void
-amd64_emit_bit_xor (void)
-{
-  EMIT_ASM (amd64_xor,
-	    "xor (%rsp),%rax\n\t"
-	    "lea 0x8(%rsp),%rsp");
-}
-
-static void
-amd64_emit_bit_not (void)
-{
-  EMIT_ASM (amd64_bit_not,
-	    "xorq $0xffffffffffffffff,%rax");
-}
-
-static void
-amd64_emit_equal (void)
-{
-  EMIT_ASM (amd64_equal,
-	    "cmp %rax,(%rsp)\n\t"
-	    "je .Lamd64_equal_true\n\t"
-	    "xor %rax,%rax\n\t"
-	    "jmp .Lamd64_equal_end\n\t"
-	    ".Lamd64_equal_true:\n\t"
-	    "mov $0x1,%rax\n\t"
-	    ".Lamd64_equal_end:\n\t"
-	    "lea 0x8(%rsp),%rsp");
-}
-
-static void
-amd64_emit_less_signed (void)
-{
-  EMIT_ASM (amd64_less_signed,
-	    "cmp %rax,(%rsp)\n\t"
-	    "jl .Lamd64_less_signed_true\n\t"
-	    "xor %rax,%rax\n\t"
-	    "jmp .Lamd64_less_signed_end\n\t"
-	    ".Lamd64_less_signed_true:\n\t"
-	    "mov $1,%rax\n\t"
-	    ".Lamd64_less_signed_end:\n\t"
-	    "lea 0x8(%rsp),%rsp");
-}
-
-static void
-amd64_emit_less_unsigned (void)
-{
-  EMIT_ASM (amd64_less_unsigned,
-	    "cmp %rax,(%rsp)\n\t"
-	    "jb .Lamd64_less_unsigned_true\n\t"
-	    "xor %rax,%rax\n\t"
-	    "jmp .Lamd64_less_unsigned_end\n\t"
-	    ".Lamd64_less_unsigned_true:\n\t"
-	    "mov $1,%rax\n\t"
-	    ".Lamd64_less_unsigned_end:\n\t"
-	    "lea 0x8(%rsp),%rsp");
-}
-
-static void
-amd64_emit_ref (int size)
-{
-  switch (size)
-    {
-    case 1:
-      EMIT_ASM (amd64_ref1,
-		"movb (%rax),%al");
-      break;
-    case 2:
-      EMIT_ASM (amd64_ref2,
-		"movw (%rax),%ax");
-      break;
-    case 4:
-      EMIT_ASM (amd64_ref4,
-		"movl (%rax),%eax");
-      break;
-    case 8:
-      EMIT_ASM (amd64_ref8,
-		"movq (%rax),%rax");
-      break;
-    }
-}
-
-static void
-amd64_emit_if_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM (amd64_if_goto,
-	    "mov %rax,%rcx\n\t"
-	    "pop %rax\n\t"
-	    "cmp $0,%rcx\n\t"
-	    ".byte 0x0f, 0x85, 0x0, 0x0, 0x0, 0x0");
-  if (offset_p)
-    *offset_p = 10;
-  if (size_p)
-    *size_p = 4;
-}
-
-static void
-amd64_emit_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM (amd64_goto,
-	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0");
-  if (offset_p)
-    *offset_p = 1;
-  if (size_p)
-    *size_p = 4;
-}
-
-static void
-amd64_write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
-{
-  int diff = (to - (from + size));
-  unsigned char buf[sizeof (int)];
-
-  if (size != 4)
-    {
-      emit_error = 1;
-      return;
-    }
-
-  memcpy (buf, &diff, sizeof (int));
-  target_write_memory (from, buf, sizeof (int));
-}
-
-static void
-amd64_emit_const (LONGEST num)
-{
-  unsigned char buf[16];
-  int i;
-  CORE_ADDR buildaddr = current_insn_ptr;
-
-  i = 0;
-  buf[i++] = 0x48;  buf[i++] = 0xb8; /* mov $<n>,%rax */
-  memcpy (&buf[i], &num, sizeof (num));
-  i += 8;
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-}
-
-static void
-amd64_emit_call (CORE_ADDR fn)
-{
-  unsigned char buf[16];
-  int i;
-  CORE_ADDR buildaddr;
-  LONGEST offset64;
-
-  /* The destination function being in the shared library, may be
-     >31-bits away off the compiled code pad.  */
-
-  buildaddr = current_insn_ptr;
-
-  offset64 = fn - (buildaddr + 1 /* call op */ + 4 /* 32-bit offset */);
-
-  i = 0;
-
-  if (offset64 > INT_MAX || offset64 < INT_MIN)
-    {
-      /* Offset is too large for a call.  Use callq, but that requires
-	 a register, so avoid it if possible.  Use r10, since it is
-	 call-clobbered, we don't have to push/pop it.  */
-      buf[i++] = 0x48; /* mov $fn,%r10 */
-      buf[i++] = 0xba;
-      memcpy (buf + i, &fn, 8);
-      i += 8;
-      buf[i++] = 0xff; /* callq *%r10 */
-      buf[i++] = 0xd2;
-    }
-  else
-    {
-      int offset32 = offset64; /* we know we can't overflow here.  */
-
-      buf[i++] = 0xe8; /* call <reladdr> */
-      memcpy (buf + i, &offset32, 4);
-      i += 4;
-    }
-
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-}
-
-static void
-amd64_emit_reg (int reg)
-{
-  unsigned char buf[16];
-  int i;
-  CORE_ADDR buildaddr;
-
-  /* Assume raw_regs is still in %rdi.  */
-  buildaddr = current_insn_ptr;
-  i = 0;
-  buf[i++] = 0xbe; /* mov $<n>,%esi */
-  memcpy (&buf[i], &reg, sizeof (reg));
-  i += 4;
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-  amd64_emit_call (get_raw_reg_func_addr ());
-}
-
-static void
-amd64_emit_pop (void)
-{
-  EMIT_ASM (amd64_pop,
-	    "pop %rax");
-}
-
-static void
-amd64_emit_stack_flush (void)
-{
-  EMIT_ASM (amd64_stack_flush,
-	    "push %rax");
-}
-
-static void
-amd64_emit_zero_ext (int arg)
-{
-  switch (arg)
-    {
-    case 8:
-      EMIT_ASM (amd64_zero_ext_8,
-		"and $0xff,%rax");
-      break;
-    case 16:
-      EMIT_ASM (amd64_zero_ext_16,
-		"and $0xffff,%rax");
-      break;
-    case 32:
-      EMIT_ASM (amd64_zero_ext_32,
-		"mov $0xffffffff,%rcx\n\t"
-		"and %rcx,%rax");
-      break;
-    default:
-      emit_error = 1;
-    }
-}
-
-static void
-amd64_emit_swap (void)
-{
-  EMIT_ASM (amd64_swap,
-	    "mov %rax,%rcx\n\t"
-	    "pop %rax\n\t"
-	    "push %rcx");
-}
-
-static void
-amd64_emit_stack_adjust (int n)
-{
-  unsigned char buf[16];
-  int i;
-  CORE_ADDR buildaddr = current_insn_ptr;
-
-  i = 0;
-  buf[i++] = 0x48; /* lea $<n>(%rsp),%rsp */
-  buf[i++] = 0x8d;
-  buf[i++] = 0x64;
-  buf[i++] = 0x24;
-  /* This only handles adjustments up to 16, but we don't expect any more.  */
-  buf[i++] = n * 8;
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-}
-
-/* FN's prototype is `LONGEST(*fn)(int)'.  */
-
-static void
-amd64_emit_int_call_1 (CORE_ADDR fn, int arg1)
-{
-  unsigned char buf[16];
-  int i;
-  CORE_ADDR buildaddr;
-
-  buildaddr = current_insn_ptr;
-  i = 0;
-  buf[i++] = 0xbf; /* movl $<n>,%edi */
-  memcpy (&buf[i], &arg1, sizeof (arg1));
-  i += 4;
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-  amd64_emit_call (fn);
-}
-
-/* FN's prototype is `void(*fn)(int,LONGEST)'.  */
-
-static void
-amd64_emit_void_call_2 (CORE_ADDR fn, int arg1)
-{
-  unsigned char buf[16];
-  int i;
-  CORE_ADDR buildaddr;
-
-  buildaddr = current_insn_ptr;
-  i = 0;
-  buf[i++] = 0xbf; /* movl $<n>,%edi */
-  memcpy (&buf[i], &arg1, sizeof (arg1));
-  i += 4;
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-  EMIT_ASM (amd64_void_call_2_a,
-	    /* Save away a copy of the stack top.  */
-	    "push %rax\n\t"
-	    /* Also pass top as the second argument.  */
-	    "mov %rax,%rsi");
-  amd64_emit_call (fn);
-  EMIT_ASM (amd64_void_call_2_b,
-	    /* Restore the stack top, %rax may have been trashed.  */
-	    "pop %rax");
-}
-
-void
-amd64_emit_eq_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM (amd64_eq,
-	    "cmp %rax,(%rsp)\n\t"
-	    "jne .Lamd64_eq_fallthru\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax\n\t"
-	    /* jmp, but don't trust the assembler to choose the right jump */
-	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	    ".Lamd64_eq_fallthru:\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax");
-
-  if (offset_p)
-    *offset_p = 13;
-  if (size_p)
-    *size_p = 4;
-}
-
-void
-amd64_emit_ne_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM (amd64_ne,
-	    "cmp %rax,(%rsp)\n\t"
-	    "je .Lamd64_ne_fallthru\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax\n\t"
-	    /* jmp, but don't trust the assembler to choose the right jump */
-	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	    ".Lamd64_ne_fallthru:\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax");
-
-  if (offset_p)
-    *offset_p = 13;
-  if (size_p)
-    *size_p = 4;
-}
-
-void
-amd64_emit_lt_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM (amd64_lt,
-	    "cmp %rax,(%rsp)\n\t"
-	    "jnl .Lamd64_lt_fallthru\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax\n\t"
-	    /* jmp, but don't trust the assembler to choose the right jump */
-	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	    ".Lamd64_lt_fallthru:\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax");
-
-  if (offset_p)
-    *offset_p = 13;
-  if (size_p)
-    *size_p = 4;
-}
-
-void
-amd64_emit_le_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM (amd64_le,
-	    "cmp %rax,(%rsp)\n\t"
-	    "jnle .Lamd64_le_fallthru\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax\n\t"
-	    /* jmp, but don't trust the assembler to choose the right jump */
-	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	    ".Lamd64_le_fallthru:\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax");
-
-  if (offset_p)
-    *offset_p = 13;
-  if (size_p)
-    *size_p = 4;
-}
-
-void
-amd64_emit_gt_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM (amd64_gt,
-	    "cmp %rax,(%rsp)\n\t"
-	    "jng .Lamd64_gt_fallthru\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax\n\t"
-	    /* jmp, but don't trust the assembler to choose the right jump */
-	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	    ".Lamd64_gt_fallthru:\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax");
-
-  if (offset_p)
-    *offset_p = 13;
-  if (size_p)
-    *size_p = 4;
-}
-
-void
-amd64_emit_ge_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM (amd64_ge,
-	    "cmp %rax,(%rsp)\n\t"
-	    "jnge .Lamd64_ge_fallthru\n\t"
-	    ".Lamd64_ge_jump:\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax\n\t"
-	    /* jmp, but don't trust the assembler to choose the right jump */
-	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	    ".Lamd64_ge_fallthru:\n\t"
-	    "lea 0x8(%rsp),%rsp\n\t"
-	    "pop %rax");
-
-  if (offset_p)
-    *offset_p = 13;
-  if (size_p)
-    *size_p = 4;
-}
-
-struct emit_ops amd64_emit_ops =
-  {
-    amd64_emit_prologue,
-    amd64_emit_epilogue,
-    amd64_emit_add,
-    amd64_emit_sub,
-    amd64_emit_mul,
-    amd64_emit_lsh,
-    amd64_emit_rsh_signed,
-    amd64_emit_rsh_unsigned,
-    amd64_emit_ext,
-    amd64_emit_log_not,
-    amd64_emit_bit_and,
-    amd64_emit_bit_or,
-    amd64_emit_bit_xor,
-    amd64_emit_bit_not,
-    amd64_emit_equal,
-    amd64_emit_less_signed,
-    amd64_emit_less_unsigned,
-    amd64_emit_ref,
-    amd64_emit_if_goto,
-    amd64_emit_goto,
-    amd64_write_goto_address,
-    amd64_emit_const,
-    amd64_emit_call,
-    amd64_emit_reg,
-    amd64_emit_pop,
-    amd64_emit_stack_flush,
-    amd64_emit_zero_ext,
-    amd64_emit_swap,
-    amd64_emit_stack_adjust,
-    amd64_emit_int_call_1,
-    amd64_emit_void_call_2,
-    amd64_emit_eq_goto,
-    amd64_emit_ne_goto,
-    amd64_emit_lt_goto,
-    amd64_emit_le_goto,
-    amd64_emit_gt_goto,
-    amd64_emit_ge_goto
-  };
-
-#endif /* __x86_64__ */
-
-static void
-i386_emit_prologue (void)
-{
-  EMIT_ASM32 (i386_prologue,
-	    "push %ebp\n\t"
-	    "mov %esp,%ebp\n\t"
-	    "push %ebx");
-  /* At this point, the raw regs base address is at 8(%ebp), and the
-     value pointer is at 12(%ebp).  */
-}
-
-static void
-i386_emit_epilogue (void)
-{
-  EMIT_ASM32 (i386_epilogue,
-	    "mov 12(%ebp),%ecx\n\t"
-	    "mov %eax,(%ecx)\n\t"
-	    "mov %ebx,0x4(%ecx)\n\t"
-	    "xor %eax,%eax\n\t"
-	    "pop %ebx\n\t"
-	    "pop %ebp\n\t"
-	    "ret");
-}
-
-static void
-i386_emit_add (void)
-{
-  EMIT_ASM32 (i386_add,
-	    "add (%esp),%eax\n\t"
-	    "adc 0x4(%esp),%ebx\n\t"
-	    "lea 0x8(%esp),%esp");
-}
-
-static void
-i386_emit_sub (void)
-{
-  EMIT_ASM32 (i386_sub,
-	    "subl %eax,(%esp)\n\t"
-	    "sbbl %ebx,4(%esp)\n\t"
-	    "pop %eax\n\t"
-	    "pop %ebx\n\t");
-}
-
-static void
-i386_emit_mul (void)
-{
-  emit_error = 1;
-}
-
-static void
-i386_emit_lsh (void)
-{
-  emit_error = 1;
-}
-
-static void
-i386_emit_rsh_signed (void)
-{
-  emit_error = 1;
-}
-
-static void
-i386_emit_rsh_unsigned (void)
-{
-  emit_error = 1;
-}
-
-static void
-i386_emit_ext (int arg)
-{
-  switch (arg)
-    {
-    case 8:
-      EMIT_ASM32 (i386_ext_8,
-		"cbtw\n\t"
-		"cwtl\n\t"
-		"movl %eax,%ebx\n\t"
-		"sarl $31,%ebx");
-      break;
-    case 16:
-      EMIT_ASM32 (i386_ext_16,
-		"cwtl\n\t"
-		"movl %eax,%ebx\n\t"
-		"sarl $31,%ebx");
-      break;
-    case 32:
-      EMIT_ASM32 (i386_ext_32,
-		"movl %eax,%ebx\n\t"
-		"sarl $31,%ebx");
-      break;
-    default:
-      emit_error = 1;
-    }
-}
-
-static void
-i386_emit_log_not (void)
-{
-  EMIT_ASM32 (i386_log_not,
-	    "or %ebx,%eax\n\t"
-	    "test %eax,%eax\n\t"
-	    "sete %cl\n\t"
-	    "xor %ebx,%ebx\n\t"
-	    "movzbl %cl,%eax");
-}
-
-static void
-i386_emit_bit_and (void)
-{
-  EMIT_ASM32 (i386_and,
-	    "and (%esp),%eax\n\t"
-	    "and 0x4(%esp),%ebx\n\t"
-	    "lea 0x8(%esp),%esp");
-}
-
-static void
-i386_emit_bit_or (void)
-{
-  EMIT_ASM32 (i386_or,
-	    "or (%esp),%eax\n\t"
-	    "or 0x4(%esp),%ebx\n\t"
-	    "lea 0x8(%esp),%esp");
-}
-
-static void
-i386_emit_bit_xor (void)
-{
-  EMIT_ASM32 (i386_xor,
-	    "xor (%esp),%eax\n\t"
-	    "xor 0x4(%esp),%ebx\n\t"
-	    "lea 0x8(%esp),%esp");
-}
-
-static void
-i386_emit_bit_not (void)
-{
-  EMIT_ASM32 (i386_bit_not,
-	    "xor $0xffffffff,%eax\n\t"
-	    "xor $0xffffffff,%ebx\n\t");
-}
-
-static void
-i386_emit_equal (void)
-{
-  EMIT_ASM32 (i386_equal,
-	    "cmpl %ebx,4(%esp)\n\t"
-	    "jne .Li386_equal_false\n\t"
-	    "cmpl %eax,(%esp)\n\t"
-	    "je .Li386_equal_true\n\t"
-	    ".Li386_equal_false:\n\t"
-	    "xor %eax,%eax\n\t"
-	    "jmp .Li386_equal_end\n\t"
-	    ".Li386_equal_true:\n\t"
-	    "mov $1,%eax\n\t"
-	    ".Li386_equal_end:\n\t"
-	    "xor %ebx,%ebx\n\t"
-	    "lea 0x8(%esp),%esp");
-}
-
-static void
-i386_emit_less_signed (void)
-{
-  EMIT_ASM32 (i386_less_signed,
-	    "cmpl %ebx,4(%esp)\n\t"
-	    "jl .Li386_less_signed_true\n\t"
-	    "jne .Li386_less_signed_false\n\t"
-	    "cmpl %eax,(%esp)\n\t"
-	    "jl .Li386_less_signed_true\n\t"
-	    ".Li386_less_signed_false:\n\t"
-	    "xor %eax,%eax\n\t"
-	    "jmp .Li386_less_signed_end\n\t"
-	    ".Li386_less_signed_true:\n\t"
-	    "mov $1,%eax\n\t"
-	    ".Li386_less_signed_end:\n\t"
-	    "xor %ebx,%ebx\n\t"
-	    "lea 0x8(%esp),%esp");
-}
-
-static void
-i386_emit_less_unsigned (void)
-{
-  EMIT_ASM32 (i386_less_unsigned,
-	    "cmpl %ebx,4(%esp)\n\t"
-	    "jb .Li386_less_unsigned_true\n\t"
-	    "jne .Li386_less_unsigned_false\n\t"
-	    "cmpl %eax,(%esp)\n\t"
-	    "jb .Li386_less_unsigned_true\n\t"
-	    ".Li386_less_unsigned_false:\n\t"
-	    "xor %eax,%eax\n\t"
-	    "jmp .Li386_less_unsigned_end\n\t"
-	    ".Li386_less_unsigned_true:\n\t"
-	    "mov $1,%eax\n\t"
-	    ".Li386_less_unsigned_end:\n\t"
-	    "xor %ebx,%ebx\n\t"
-	    "lea 0x8(%esp),%esp");
-}
-
-static void
-i386_emit_ref (int size)
-{
-  switch (size)
-    {
-    case 1:
-      EMIT_ASM32 (i386_ref1,
-		"movb (%eax),%al");
-      break;
-    case 2:
-      EMIT_ASM32 (i386_ref2,
-		"movw (%eax),%ax");
-      break;
-    case 4:
-      EMIT_ASM32 (i386_ref4,
-		"movl (%eax),%eax");
-      break;
-    case 8:
-      EMIT_ASM32 (i386_ref8,
-		"movl 4(%eax),%ebx\n\t"
-		"movl (%eax),%eax");
-      break;
-    }
-}
-
-static void
-i386_emit_if_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM32 (i386_if_goto,
-	    "mov %eax,%ecx\n\t"
-	    "or %ebx,%ecx\n\t"
-	    "pop %eax\n\t"
-	    "pop %ebx\n\t"
-	    "cmpl $0,%ecx\n\t"
-	    /* Don't trust the assembler to choose the right jump */
-	    ".byte 0x0f, 0x85, 0x0, 0x0, 0x0, 0x0");
-
-  if (offset_p)
-    *offset_p = 11; /* be sure that this matches the sequence above */
-  if (size_p)
-    *size_p = 4;
-}
-
-static void
-i386_emit_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM32 (i386_goto,
-	    /* Don't trust the assembler to choose the right jump */
-	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0");
-  if (offset_p)
-    *offset_p = 1;
-  if (size_p)
-    *size_p = 4;
-}
-
-static void
-i386_write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
-{
-  int diff = (to - (from + size));
-  unsigned char buf[sizeof (int)];
-
-  /* We're only doing 4-byte sizes at the moment.  */
-  if (size != 4)
-    {
-      emit_error = 1;
-      return;
-    }
-
-  memcpy (buf, &diff, sizeof (int));
-  target_write_memory (from, buf, sizeof (int));
-}
-
-static void
-i386_emit_const (LONGEST num)
-{
-  unsigned char buf[16];
-  int i, hi, lo;
-  CORE_ADDR buildaddr = current_insn_ptr;
-
-  i = 0;
-  buf[i++] = 0xb8; /* mov $<n>,%eax */
-  lo = num & 0xffffffff;
-  memcpy (&buf[i], &lo, sizeof (lo));
-  i += 4;
-  hi = ((num >> 32) & 0xffffffff);
-  if (hi)
-    {
-      buf[i++] = 0xbb; /* mov $<n>,%ebx */
-      memcpy (&buf[i], &hi, sizeof (hi));
-      i += 4;
-    }
-  else
-    {
-      buf[i++] = 0x31; buf[i++] = 0xdb; /* xor %ebx,%ebx */
-    }
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-}
-
-static void
-i386_emit_call (CORE_ADDR fn)
-{
-  unsigned char buf[16];
-  int i, offset;
-  CORE_ADDR buildaddr;
-
-  buildaddr = current_insn_ptr;
-  i = 0;
-  buf[i++] = 0xe8; /* call <reladdr> */
-  offset = ((int) fn) - (buildaddr + 5);
-  memcpy (buf + 1, &offset, 4);
-  append_insns (&buildaddr, 5, buf);
-  current_insn_ptr = buildaddr;
-}
-
-static void
-i386_emit_reg (int reg)
-{
-  unsigned char buf[16];
-  int i;
-  CORE_ADDR buildaddr;
-
-  EMIT_ASM32 (i386_reg_a,
-	    "sub $0x8,%esp");
-  buildaddr = current_insn_ptr;
-  i = 0;
-  buf[i++] = 0xb8; /* mov $<n>,%eax */
-  memcpy (&buf[i], &reg, sizeof (reg));
-  i += 4;
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-  EMIT_ASM32 (i386_reg_b,
-	    "mov %eax,4(%esp)\n\t"
-	    "mov 8(%ebp),%eax\n\t"
-	    "mov %eax,(%esp)");
-  i386_emit_call (get_raw_reg_func_addr ());
-  EMIT_ASM32 (i386_reg_c,
-	    "xor %ebx,%ebx\n\t"
-	    "lea 0x8(%esp),%esp");
-}
-
-static void
-i386_emit_pop (void)
-{
-  EMIT_ASM32 (i386_pop,
-	    "pop %eax\n\t"
-	    "pop %ebx");
-}
-
-static void
-i386_emit_stack_flush (void)
-{
-  EMIT_ASM32 (i386_stack_flush,
-	    "push %ebx\n\t"
-	    "push %eax");
-}
-
-static void
-i386_emit_zero_ext (int arg)
-{
-  switch (arg)
-    {
-    case 8:
-      EMIT_ASM32 (i386_zero_ext_8,
-		"and $0xff,%eax\n\t"
-		"xor %ebx,%ebx");
-      break;
-    case 16:
-      EMIT_ASM32 (i386_zero_ext_16,
-		"and $0xffff,%eax\n\t"
-		"xor %ebx,%ebx");
-      break;
-    case 32:
-      EMIT_ASM32 (i386_zero_ext_32,
-		"xor %ebx,%ebx");
-      break;
-    default:
-      emit_error = 1;
-    }
-}
-
-static void
-i386_emit_swap (void)
-{
-  EMIT_ASM32 (i386_swap,
-	    "mov %eax,%ecx\n\t"
-	    "mov %ebx,%edx\n\t"
-	    "pop %eax\n\t"
-	    "pop %ebx\n\t"
-	    "push %edx\n\t"
-	    "push %ecx");
-}
-
-static void
-i386_emit_stack_adjust (int n)
-{
-  unsigned char buf[16];
-  int i;
-  CORE_ADDR buildaddr = current_insn_ptr;
-
-  i = 0;
-  buf[i++] = 0x8d; /* lea $<n>(%esp),%esp */
-  buf[i++] = 0x64;
-  buf[i++] = 0x24;
-  buf[i++] = n * 8;
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-}
-
-/* FN's prototype is `LONGEST(*fn)(int)'.  */
-
-static void
-i386_emit_int_call_1 (CORE_ADDR fn, int arg1)
-{
-  unsigned char buf[16];
-  int i;
-  CORE_ADDR buildaddr;
-
-  EMIT_ASM32 (i386_int_call_1_a,
-	    /* Reserve a bit of stack space.  */
-	    "sub $0x8,%esp");
-  /* Put the one argument on the stack.  */
-  buildaddr = current_insn_ptr;
-  i = 0;
-  buf[i++] = 0xc7;  /* movl $<arg1>,(%esp) */
-  buf[i++] = 0x04;
-  buf[i++] = 0x24;
-  memcpy (&buf[i], &arg1, sizeof (arg1));
-  i += 4;
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-  i386_emit_call (fn);
-  EMIT_ASM32 (i386_int_call_1_c,
-	    "mov %edx,%ebx\n\t"
-	    "lea 0x8(%esp),%esp");
-}
-
-/* FN's prototype is `void(*fn)(int,LONGEST)'.  */
-
-static void
-i386_emit_void_call_2 (CORE_ADDR fn, int arg1)
-{
-  unsigned char buf[16];
-  int i;
-  CORE_ADDR buildaddr;
-
-  EMIT_ASM32 (i386_void_call_2_a,
-	    /* Preserve %eax only; we don't have to worry about %ebx.  */
-	    "push %eax\n\t"
-	    /* Reserve a bit of stack space for arguments.  */
-	    "sub $0x10,%esp\n\t"
-	    /* Copy "top" to the second argument position.  (Note that
-	       we can't assume function won't scribble on its
-	       arguments, so don't try to restore from this.)  */
-	    "mov %eax,4(%esp)\n\t"
-	    "mov %ebx,8(%esp)");
-  /* Put the first argument on the stack.  */
-  buildaddr = current_insn_ptr;
-  i = 0;
-  buf[i++] = 0xc7;  /* movl $<arg1>,(%esp) */
-  buf[i++] = 0x04;
-  buf[i++] = 0x24;
-  memcpy (&buf[i], &arg1, sizeof (arg1));
-  i += 4;
-  append_insns (&buildaddr, i, buf);
-  current_insn_ptr = buildaddr;
-  i386_emit_call (fn);
-  EMIT_ASM32 (i386_void_call_2_b,
-	    "lea 0x10(%esp),%esp\n\t"
-	    /* Restore original stack top.  */
-	    "pop %eax");
-}
-
-
-void
-i386_emit_eq_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM32 (eq,
-	      /* Check low half first, more likely to be decider  */
-	      "cmpl %eax,(%esp)\n\t"
-	      "jne .Leq_fallthru\n\t"
-	      "cmpl %ebx,4(%esp)\n\t"
-	      "jne .Leq_fallthru\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx\n\t"
-	      /* jmp, but don't trust the assembler to choose the right jump */
-	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	      ".Leq_fallthru:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx");
-
-  if (offset_p)
-    *offset_p = 18;
-  if (size_p)
-    *size_p = 4;
-}
-
-void
-i386_emit_ne_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM32 (ne,
-	      /* Check low half first, more likely to be decider  */
-	      "cmpl %eax,(%esp)\n\t"
-	      "jne .Lne_jump\n\t"
-	      "cmpl %ebx,4(%esp)\n\t"
-	      "je .Lne_fallthru\n\t"
-	      ".Lne_jump:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx\n\t"
-	      /* jmp, but don't trust the assembler to choose the right jump */
-	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	      ".Lne_fallthru:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx");
-
-  if (offset_p)
-    *offset_p = 18;
-  if (size_p)
-    *size_p = 4;
-}
-
-void
-i386_emit_lt_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM32 (lt,
-	      "cmpl %ebx,4(%esp)\n\t"
-	      "jl .Llt_jump\n\t"
-	      "jne .Llt_fallthru\n\t"
-	      "cmpl %eax,(%esp)\n\t"
-	      "jnl .Llt_fallthru\n\t"
-	      ".Llt_jump:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx\n\t"
-	      /* jmp, but don't trust the assembler to choose the right jump */
-	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	      ".Llt_fallthru:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx");
-
-  if (offset_p)
-    *offset_p = 20;
-  if (size_p)
-    *size_p = 4;
-}
-
-void
-i386_emit_le_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM32 (le,
-	      "cmpl %ebx,4(%esp)\n\t"
-	      "jle .Lle_jump\n\t"
-	      "jne .Lle_fallthru\n\t"
-	      "cmpl %eax,(%esp)\n\t"
-	      "jnle .Lle_fallthru\n\t"
-	      ".Lle_jump:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx\n\t"
-	      /* jmp, but don't trust the assembler to choose the right jump */
-	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	      ".Lle_fallthru:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx");
-
-  if (offset_p)
-    *offset_p = 20;
-  if (size_p)
-    *size_p = 4;
-}
-
-void
-i386_emit_gt_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM32 (gt,
-	      "cmpl %ebx,4(%esp)\n\t"
-	      "jg .Lgt_jump\n\t"
-	      "jne .Lgt_fallthru\n\t"
-	      "cmpl %eax,(%esp)\n\t"
-	      "jng .Lgt_fallthru\n\t"
-	      ".Lgt_jump:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx\n\t"
-	      /* jmp, but don't trust the assembler to choose the right jump */
-	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	      ".Lgt_fallthru:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx");
-
-  if (offset_p)
-    *offset_p = 20;
-  if (size_p)
-    *size_p = 4;
-}
-
-void
-i386_emit_ge_goto (int *offset_p, int *size_p)
-{
-  EMIT_ASM32 (ge,
-	      "cmpl %ebx,4(%esp)\n\t"
-	      "jge .Lge_jump\n\t"
-	      "jne .Lge_fallthru\n\t"
-	      "cmpl %eax,(%esp)\n\t"
-	      "jnge .Lge_fallthru\n\t"
-	      ".Lge_jump:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx\n\t"
-	      /* jmp, but don't trust the assembler to choose the right jump */
-	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
-	      ".Lge_fallthru:\n\t"
-	      "lea 0x8(%esp),%esp\n\t"
-	      "pop %eax\n\t"
-	      "pop %ebx");
-
-  if (offset_p)
-    *offset_p = 20;
-  if (size_p)
-    *size_p = 4;
-}
-
-struct emit_ops i386_emit_ops =
-  {
-    i386_emit_prologue,
-    i386_emit_epilogue,
-    i386_emit_add,
-    i386_emit_sub,
-    i386_emit_mul,
-    i386_emit_lsh,
-    i386_emit_rsh_signed,
-    i386_emit_rsh_unsigned,
-    i386_emit_ext,
-    i386_emit_log_not,
-    i386_emit_bit_and,
-    i386_emit_bit_or,
-    i386_emit_bit_xor,
-    i386_emit_bit_not,
-    i386_emit_equal,
-    i386_emit_less_signed,
-    i386_emit_less_unsigned,
-    i386_emit_ref,
-    i386_emit_if_goto,
-    i386_emit_goto,
-    i386_write_goto_address,
-    i386_emit_const,
-    i386_emit_call,
-    i386_emit_reg,
-    i386_emit_pop,
-    i386_emit_stack_flush,
-    i386_emit_zero_ext,
-    i386_emit_swap,
-    i386_emit_stack_adjust,
-    i386_emit_int_call_1,
-    i386_emit_void_call_2,
-    i386_emit_eq_goto,
-    i386_emit_ne_goto,
-    i386_emit_lt_goto,
-    i386_emit_le_goto,
-    i386_emit_gt_goto,
-    i386_emit_ge_goto
-  };
-
-
-static struct emit_ops *
-x86_emit_ops (void)
-{
-#ifdef __x86_64__
-  if (is_64bit_tdesc ())
-    return &amd64_emit_ops;
-  else
-#endif
-    return &i386_emit_ops;
-}
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-x86_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = x86_breakpoint_len;
-  return x86_breakpoint;
-}
-
-static int
-x86_supports_range_stepping (void)
-{
-  return 1;
-}
-
-/* Implementation of linux_target_ops method "supports_hardware_single_step".
- */
-
-static int
-x86_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-static int
-x86_get_ipa_tdesc_idx (void)
-{
-  struct regcache *regcache = get_thread_regcache (current_thread, 0);
-  const struct target_desc *tdesc = regcache->tdesc;
-
-#ifdef __x86_64__
-  return amd64_get_ipa_tdesc_idx (tdesc);
-#endif
-
-  if (tdesc == tdesc_i386_linux_no_xml)
-    return X86_TDESC_SSE;
-
-  return i386_get_ipa_tdesc_idx (tdesc);
-}
-
-/* This is initialized assuming an amd64 target.
-   x86_arch_setup will correct it for i386 or amd64 targets.  */
-
-struct linux_target_ops the_low_target =
-{
-  x86_arch_setup,
-  x86_linux_regs_info,
-  x86_cannot_fetch_register,
-  x86_cannot_store_register,
-  NULL, /* fetch_register */
-  x86_get_pc,
-  x86_set_pc,
-  NULL, /* breakpoint_kind_from_pc */
-  x86_sw_breakpoint_from_kind,
-  NULL,
-  1,
-  x86_breakpoint_at,
-  x86_supports_z_point_type,
-  x86_insert_point,
-  x86_remove_point,
-  x86_stopped_by_watchpoint,
-  x86_stopped_data_address,
-  /* collect_ptrace_register/supply_ptrace_register are not needed in the
-     native i386 case (no registers smaller than an xfer unit), and are not
-     used in the biarch case (HAVE_LINUX_USRREGS is not defined).  */
-  NULL,
-  NULL,
-  /* need to fix up i386 siginfo if host is amd64 */
-  x86_siginfo_fixup,
-  x86_linux_new_process,
-  x86_linux_delete_process,
-  x86_linux_new_thread,
-  x86_linux_delete_thread,
-  x86_linux_new_fork,
-  x86_linux_prepare_to_resume,
-  x86_linux_process_qsupported,
-  x86_supports_tracepoints,
-  x86_get_thread_area,
-  x86_install_fast_tracepoint_jump_pad,
-  x86_emit_ops,
-  x86_get_min_fast_tracepoint_insn_len,
-  x86_supports_range_stepping,
-  NULL, /* breakpoint_kind_from_current_state */
-  x86_supports_hardware_single_step,
-  x86_get_syscall_trapinfo,
-  x86_get_ipa_tdesc_idx,
-};
-
-void
-initialize_low_arch (void)
-{
-  /* Initialize the Linux target descriptions.  */
-#ifdef __x86_64__
-  tdesc_amd64_linux_no_xml = allocate_target_description ();
-  copy_target_description (tdesc_amd64_linux_no_xml,
-			   amd64_linux_read_description (X86_XSTATE_SSE_MASK,
-							 false));
-  tdesc_amd64_linux_no_xml->xmltarget = xmltarget_amd64_linux_no_xml;
-#endif
-
-  tdesc_i386_linux_no_xml = allocate_target_description ();
-  copy_target_description (tdesc_i386_linux_no_xml,
-			   i386_linux_read_description (X86_XSTATE_SSE_MASK));
-  tdesc_i386_linux_no_xml->xmltarget = xmltarget_i386_linux_no_xml;
-
-  initialize_regsets_info (&x86_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-x86-tdesc.c ./gdb/gdbserver/linux-x86-tdesc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-x86-tdesc.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-x86-tdesc.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,164 +0,0 @@
-/* GNU/Linux/x86-64 specific target description, for the remote server
-   for GDB.
-   Copyright (C) 2017-2020 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 "server.h"
-#include "tdesc.h"
-#include "linux-x86-tdesc.h"
-#include "arch/i386.h"
-#include "gdbsupport/x86-xstate.h"
-#ifdef __x86_64__
-#include "arch/amd64.h"
-#endif
-#include "x86-tdesc.h"
-
-/* Return the right x86_linux_tdesc index for a given XCR0.  Return
-   X86_TDESC_LAST if can't find a match.  */
-
-static enum x86_linux_tdesc
-xcr0_to_tdesc_idx (uint64_t xcr0, bool is_x32)
-{
-  if (xcr0 & X86_XSTATE_PKRU)
-    {
-      if (is_x32)
-	{
-	  /* No x32 MPX and PKU, fall back to avx_avx512.  */
-	  return X86_TDESC_AVX_AVX512;
-	}
-      else
-	return X86_TDESC_AVX_MPX_AVX512_PKU;
-    }
-  else if (xcr0 & X86_XSTATE_AVX512)
-    return X86_TDESC_AVX_AVX512;
-  else if ((xcr0 & X86_XSTATE_AVX_MPX_MASK) == X86_XSTATE_AVX_MPX_MASK)
-    {
-      if (is_x32) /* No MPX on x32.  */
-	return X86_TDESC_AVX;
-      else
-	return X86_TDESC_AVX_MPX;
-    }
-  else if (xcr0 & X86_XSTATE_MPX)
-    {
-      if (is_x32) /* No MPX on x32.  */
-	return X86_TDESC_AVX;
-      else
-	return X86_TDESC_MPX;
-    }
-  else if (xcr0 & X86_XSTATE_AVX)
-    return X86_TDESC_AVX;
-  else if (xcr0 & X86_XSTATE_SSE)
-    return X86_TDESC_SSE;
-  else if (xcr0 & X86_XSTATE_X87)
-    return X86_TDESC_MMX;
-  else
-    return X86_TDESC_LAST;
-}
-
-#if defined __i386__ || !defined IN_PROCESS_AGENT
-
-static struct target_desc *i386_tdescs[X86_TDESC_LAST] = { };
-
-/* Return the target description according to XCR0.  */
-
-const struct target_desc *
-i386_linux_read_description (uint64_t xcr0)
-{
-  enum x86_linux_tdesc idx = xcr0_to_tdesc_idx (xcr0, false);
-
-  if (idx == X86_TDESC_LAST)
-    return NULL;
-
-  struct target_desc **tdesc = &i386_tdescs[idx];
-
-  if (*tdesc == NULL)
-    {
-      *tdesc = i386_create_target_description (xcr0, true, false);
-
-      init_target_desc (*tdesc, i386_expedite_regs);
-    }
-
-  return *tdesc;;
-}
-#endif
-
-#ifdef __x86_64__
-
-static target_desc *amd64_tdescs[X86_TDESC_LAST] = { };
-static target_desc *x32_tdescs[X86_TDESC_LAST] = { };
-
-const struct target_desc *
-amd64_linux_read_description (uint64_t xcr0, bool is_x32)
-{
-  enum x86_linux_tdesc idx = xcr0_to_tdesc_idx (xcr0, is_x32);
-
-  if (idx == X86_TDESC_LAST)
-    return NULL;
-
-  struct target_desc **tdesc = NULL;
-
-  if (is_x32)
-    tdesc = &x32_tdescs[idx];
-  else
-    tdesc = &amd64_tdescs[idx];
-
-  if (*tdesc == NULL)
-    {
-      *tdesc = amd64_create_target_description (xcr0, is_x32, true, true);
-
-      init_target_desc (*tdesc, amd64_expedite_regs);
-    }
-  return *tdesc;
-}
-
-#endif
-
-#ifndef IN_PROCESS_AGENT
-
-int
-i386_get_ipa_tdesc_idx (const struct target_desc *tdesc)
-{
-  for (int i = 0; i < X86_TDESC_LAST; i++)
-    {
-      if (tdesc == i386_tdescs[i])
-	return i;
-    }
-
-  /* If none tdesc is found, return the one with minimum features.  */
-  return X86_TDESC_MMX;
-}
-
-#if defined __x86_64__
-int
-amd64_get_ipa_tdesc_idx (const struct target_desc *tdesc)
-{
-  for (int i = 0; i < X86_TDESC_LAST; i++)
-    {
-      if (tdesc == amd64_tdescs[i])
-	return i;
-    }
-  for (int i = 0; i < X86_TDESC_LAST; i++)
-    {
-      if (tdesc == x32_tdescs[i])
-	return i;
-    }
-
-  return X86_TDESC_SSE;
-}
-
-#endif
-#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-x86-tdesc.h ./gdb/gdbserver/linux-x86-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-x86-tdesc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-x86-tdesc.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,56 +0,0 @@
-/* Low level support for x86 (i386 and x86-64), shared between gdbserver
-   and IPA.
-
-   Copyright (C) 2016-2020 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 GDBSERVER_LINUX_X86_TDESC_H
-#define GDBSERVER_LINUX_X86_TDESC_H
-
-/* Note: since IPA obviously knows what ABI it's running on (i386 vs x86_64
-   vs x32), it's sufficient to pass only the register set here.  This,
-   together with the ABI known at IPA compile time, maps to a tdesc.  */
-
-enum x86_linux_tdesc {
-  X86_TDESC_MMX = 0,
-  X86_TDESC_SSE = 1,
-  X86_TDESC_AVX = 2,
-  X86_TDESC_MPX = 3,
-  X86_TDESC_AVX_MPX = 4,
-  X86_TDESC_AVX_AVX512 = 5,
-  X86_TDESC_AVX_MPX_AVX512_PKU = 6,
-  X86_TDESC_LAST = 7,
-};
-
-#if defined __i386__ || !defined IN_PROCESS_AGENT
-int i386_get_ipa_tdesc_idx (const struct target_desc *tdesc);
-#endif
-
-#if defined __x86_64__ && !defined IN_PROCESS_AGENT
-int amd64_get_ipa_tdesc_idx (const struct target_desc *tdesc);
-#endif
-
-const struct target_desc *i386_get_ipa_tdesc (int idx);
-
-#ifdef __x86_64__
-const struct target_desc *amd64_linux_read_description (uint64_t xcr0,
-							bool is_x32);
-#endif
-
-const struct target_desc *i386_linux_read_description (uint64_t xcr0);
-
-#endif /* GDBSERVER_LINUX_X86_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-xtensa-low.c ./gdb/gdbserver/linux-xtensa-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/linux-xtensa-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/linux-xtensa-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,315 +0,0 @@
-/* GNU/Linux/Xtensa specific low level interface, for the remote server for GDB.
-   Copyright (C) 2007-2020 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 "server.h"
-#include "linux-low.h"
-
-/* Defined in auto-generated file reg-xtensa.c.  */
-void init_registers_xtensa (void);
-extern const struct target_desc *tdesc_xtensa;
-
-#include <asm/ptrace.h>
-#include <xtensa-config.h>
-#include "arch/xtensa.h"
-#include "gdb_proc_service.h"
-
-#include "xtensa-xtregs.c"
-
-enum regnum {
-	R_PC=0,	R_PS,
-	R_LBEG,	R_LEND,	R_LCOUNT,
-	R_SAR,
-	R_WS, R_WB,
-	R_THREADPTR,
-	R_A0 = 64
-};
-
-static void
-xtensa_fill_gregset (struct regcache *regcache, void *buf)
-{
-  elf_greg_t* rset = (elf_greg_t*)buf;
-  const struct target_desc *tdesc = regcache->tdesc;
-  int ar0_regnum;
-  char *ptr;
-  int i;
-
-  /* Take care of AR registers.  */
-
-  ar0_regnum = find_regno (tdesc, "ar0");
-  ptr = (char*)&rset[R_A0];
-
-  for (i = ar0_regnum; i < ar0_regnum + XCHAL_NUM_AREGS; i++)
-    {
-      collect_register (regcache, i, ptr);
-      ptr += register_size (tdesc, i);
-    }
-
-  if (XSHAL_ABI == XTHAL_ABI_CALL0)
-    {
-      int a0_regnum = find_regno (tdesc, "a0");
-      ptr = (char *) &rset[R_A0 + 4 * rset[R_WB]];
-
-      for (i = a0_regnum; i < a0_regnum + C0_NREGS; i++)
-	{
-	  if ((4 * rset[R_WB] + i - a0_regnum) == XCHAL_NUM_AREGS)
-	    ptr = (char *) &rset[R_A0];
-	  collect_register (regcache, i, ptr);
-	  ptr += register_size (tdesc, i);
-	}
-    }
-
-  /* Loop registers, if hardware has it.  */
-
-#if XCHAL_HAVE_LOOPS
-  collect_register_by_name (regcache, "lbeg", (char*)&rset[R_LBEG]);
-  collect_register_by_name (regcache, "lend", (char*)&rset[R_LEND]);
-  collect_register_by_name (regcache, "lcount", (char*)&rset[R_LCOUNT]);
-#endif
-
-  collect_register_by_name (regcache, "sar", (char*)&rset[R_SAR]);
-  collect_register_by_name (regcache, "pc", (char*)&rset[R_PC]);
-  collect_register_by_name (regcache, "ps", (char*)&rset[R_PS]);
-  collect_register_by_name (regcache, "windowbase", (char*)&rset[R_WB]);
-  collect_register_by_name (regcache, "windowstart", (char*)&rset[R_WS]);
-
-#if XCHAL_HAVE_THREADPTR
-  collect_register_by_name (regcache, "threadptr",
-			    (char *) &rset[R_THREADPTR]);
-#endif
-}
-
-static void
-xtensa_store_gregset (struct regcache *regcache, const void *buf)
-{
-  const elf_greg_t* rset = (const elf_greg_t*)buf;
-  const struct target_desc *tdesc = regcache->tdesc;
-  int ar0_regnum;
-  char *ptr;
-  int i;
-
-  /* Take care of AR registers.  */
-
-  ar0_regnum = find_regno (tdesc, "ar0");
-  ptr = (char *)&rset[R_A0];
-
-  for (i = ar0_regnum; i < ar0_regnum + XCHAL_NUM_AREGS; i++)
-    {
-      supply_register (regcache, i, ptr);
-      ptr += register_size (tdesc, i);
-    }
-
-  if (XSHAL_ABI == XTHAL_ABI_CALL0)
-    {
-      int a0_regnum = find_regno (tdesc, "a0");
-      ptr = (char *) &rset[R_A0 + (4 * rset[R_WB]) % XCHAL_NUM_AREGS];
-
-      for (i = a0_regnum; i < a0_regnum + C0_NREGS; i++)
-	{
-	  if ((4 * rset[R_WB] + i - a0_regnum) == XCHAL_NUM_AREGS)
-	    ptr = (char *) &rset[R_A0];
-	  supply_register (regcache, i, ptr);
-	  ptr += register_size (tdesc, i);
-	}
-    }
-
-  /* Loop registers, if hardware has it.  */
-
-#if XCHAL_HAVE_LOOPS
-  supply_register_by_name (regcache, "lbeg", (char*)&rset[R_LBEG]);
-  supply_register_by_name (regcache, "lend", (char*)&rset[R_LEND]);
-  supply_register_by_name (regcache, "lcount", (char*)&rset[R_LCOUNT]);
-#endif
-
-  supply_register_by_name (regcache, "sar", (char*)&rset[R_SAR]);
-  supply_register_by_name (regcache, "pc", (char*)&rset[R_PC]);
-  supply_register_by_name (regcache, "ps", (char*)&rset[R_PS]);
-  supply_register_by_name (regcache, "windowbase", (char*)&rset[R_WB]);
-  supply_register_by_name (regcache, "windowstart", (char*)&rset[R_WS]);
-
-#if XCHAL_HAVE_THREADPTR
-  supply_register_by_name (regcache, "threadptr",
-			   (char *) &rset[R_THREADPTR]);
-#endif
-}
-
-/* Xtensa GNU/Linux PTRACE interface includes extended register set.  */
-
-static void
-xtensa_fill_xtregset (struct regcache *regcache, void *buf)
-{
-  const xtensa_regtable_t *ptr;
-
-  for (ptr = xtensa_regmap_table; ptr->name; ptr++)
-    {
-      collect_register_by_name (regcache, ptr->name,
-				(char*)buf + ptr->ptrace_offset);
-    }
-}
-
-static void
-xtensa_store_xtregset (struct regcache *regcache, const void *buf)
-{
-  const xtensa_regtable_t *ptr;
-
-  for (ptr = xtensa_regmap_table; ptr->name; ptr++)
-    {
-      supply_register_by_name (regcache, ptr->name,
-				(char*)buf + ptr->ptrace_offset);
-    }
-}
-
-static struct regset_info xtensa_regsets[] = {
-  { PTRACE_GETREGS, PTRACE_SETREGS, 0, sizeof (elf_gregset_t),
-    GENERAL_REGS,
-    xtensa_fill_gregset, xtensa_store_gregset },
-  { PTRACE_GETXTREGS, PTRACE_SETXTREGS, 0, XTENSA_ELF_XTREG_SIZE,
-    EXTENDED_REGS,
-    xtensa_fill_xtregset, xtensa_store_xtregset },
-  NULL_REGSET
-};
-
-#if XCHAL_HAVE_BE
-#define XTENSA_BREAKPOINT {0xd2,0x0f}
-#else
-#define XTENSA_BREAKPOINT {0x2d,0xf0}
-#endif
-
-static const gdb_byte xtensa_breakpoint[] = XTENSA_BREAKPOINT;
-#define xtensa_breakpoint_len 2
-
-/* Implementation of linux_target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-xtensa_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = xtensa_breakpoint_len;
-  return xtensa_breakpoint;
-}
-
-static int
-xtensa_breakpoint_at (CORE_ADDR where)
-{
-    unsigned long insn;
-
-    (*the_target->read_memory) (where, (unsigned char *) &insn,
-				xtensa_breakpoint_len);
-    return memcmp((char *) &insn,
-		  xtensa_breakpoint, xtensa_breakpoint_len) == 0;
-}
-
-/* Called by libthread_db.  */
-
-ps_err_e
-ps_get_thread_area (struct ps_prochandle *ph,
-                    lwpid_t lwpid, int idx, void **base)
-{
-  xtensa_elf_gregset_t regs;
-
-  if (ptrace (PTRACE_GETREGS, lwpid, NULL, &regs) != 0)
-    return PS_ERR;
-
-  /* IDX is the bias from the thread pointer to the beginning of the
-     thread descriptor.  It has to be subtracted due to implementation
-     quirks in libthread_db.  */
-  *base = (void *) ((char *) regs.threadptr - idx);
-
-  return PS_OK;
-}
-
-static struct regsets_info xtensa_regsets_info =
-  {
-    xtensa_regsets, /* regsets */
-    0, /* num_regsets */
-    NULL, /* disabled_regsets */
-  };
-
-static struct regs_info regs_info =
-  {
-    NULL, /* regset_bitmap */
-    NULL, /* usrregs */
-    &xtensa_regsets_info
-  };
-
-static void
-xtensa_arch_setup (void)
-{
-  current_process ()->tdesc = tdesc_xtensa;
-}
-
-/* Support for hardware single step.  */
-
-static int
-xtensa_supports_hardware_single_step (void)
-{
-  return 1;
-}
-
-static const struct regs_info *
-xtensa_regs_info (void)
-{
-  return &regs_info;
-}
-
-struct linux_target_ops the_low_target = {
-  xtensa_arch_setup,
-  xtensa_regs_info,
-  0,
-  0,
-  NULL, /* fetch_register */
-  linux_get_pc_32bit,
-  linux_set_pc_32bit,
-  NULL, /* breakpoint_kind_from_pc */
-  xtensa_sw_breakpoint_from_kind,
-  NULL,
-  0,
-  xtensa_breakpoint_at,
-  NULL, /* supports_z_point_type */
-  NULL, /* insert_point */
-  NULL, /* remove_point */
-  NULL, /* stopped_by_watchpoint */
-  NULL, /* stopped_data_address */
-  NULL, /* collect_ptrace_register */
-  NULL, /* supply_ptrace_register */
-  NULL, /* siginfo_fixup */
-  NULL, /* new_process */
-  NULL, /* delete_process */
-  NULL, /* new_thread */
-  NULL, /* delete_thread */
-  NULL, /* new_fork */
-  NULL, /* prepare_to_resume */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* get_thread_area */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* supports_range_stepping */
-  NULL, /* breakpoint_kind_from_current_state */
-  xtensa_supports_hardware_single_step,
-};
-
-
-void
-initialize_low_arch (void)
-{
-  /* Initialize the Linux target descriptions.  */
-  init_registers_xtensa ();
-
-  initialize_regsets_info (&xtensa_regsets_info);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/lynx-i386-low.c ./gdb/gdbserver/lynx-i386-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/lynx-i386-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/lynx-i386-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,358 +0,0 @@
-/* Copyright (C) 2010-2020 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 "server.h"
-#include "lynx-low.h"
-#include <limits.h>
-#include <sys/ptrace.h>
-#include "gdbsupport/x86-xstate.h"
-#include "arch/i386.h"
-#include "x86-tdesc.h"
-
-/* The following two typedefs are defined in a .h file which is not
-   in the standard include path (/sys/include/family/x86/ucontext.h),
-   so we just duplicate them here.
-
-   Unfortunately for us, the definition of this structure differs between
-   LynxOS 5.x and LynxOS 178.  Rather than duplicate the code, we use
-   different definitions depending on the target.  */
-
-#ifdef VMOS_DEV
-#define LYNXOS_178
-#endif
-
-/* General register context */
-typedef struct usr_econtext {
-
-    uint32_t    uec_fault;
-    uint32_t    uec_es;
-    uint32_t    uec_ds;
-    uint32_t    uec_edi;
-    uint32_t    uec_esi;
-    uint32_t    uec_ebp;
-    uint32_t    uec_temp;
-    uint32_t    uec_ebx;
-    uint32_t    uec_edx;
-    uint32_t    uec_ecx;
-    uint32_t    uec_eax;
-    uint32_t    uec_inum;
-    uint32_t    uec_ecode;
-    uint32_t    uec_eip;
-    uint32_t    uec_cs;
-    uint32_t    uec_eflags;
-    uint32_t    uec_esp;
-    uint32_t    uec_ss;
-    uint32_t    uec_fs;
-    uint32_t    uec_gs;
-} usr_econtext_t;
-
-#if defined(LYNXOS_178)
-
-/* Floating point register context                                                                                      */
-typedef struct usr_fcontext {
-        uint32_t         ufc_control;
-        uint32_t         ufc_status;
-        uint32_t         ufc_tag;
-        uint8_t         *ufc_inst_off;
-        uint32_t         ufc_inst_sel;
-        uint8_t         *ufc_data_off;
-        uint32_t         ufc_data_sel;
-        struct ufp387_real {
-                uint16_t        umant4;
-        uint16_t        umant3;
-        uint16_t        umant2;
-        uint16_t        umant1;
-        uint16_t        us_and_e;
-        } ufc_reg[8];
-} usr_fcontext_t;
-
-#else /* This is LynxOS 5.x.  */
-
-/* Floating point and SIMD register context */
-typedef struct usr_fcontext {
-        uint16_t         ufc_control;
-        uint16_t         ufc_status;
-        uint16_t         ufc_tag;
-        uint16_t         ufc_opcode;
-        uint8_t         *ufc_inst_off;
-        uint32_t         ufc_inst_sel;
-        uint8_t         *ufc_data_off;
-        uint32_t         ufc_data_sel;
-        uint32_t         usse_mxcsr;
-        uint32_t         usse_mxcsr_mask;
-        struct ufp387_real {
-                uint16_t umant4;
-                uint16_t umant3;
-                uint16_t umant2;
-                uint16_t umant1;
-                uint16_t us_and_e;
-                uint16_t ureserved_1;
-                uint16_t ureserved_2;
-                uint16_t ureserved_3;
-        } ufc_reg[8];
-        struct uxmm_register {
-                uint16_t uchunk_1;
-                uint16_t uchunk_2;
-                uint16_t uchunk_3;
-                uint16_t uchunk_4;
-                uint16_t uchunk_5;
-                uint16_t uchunk_6;
-                uint16_t uchunk_7;
-                uint16_t uchunk_8;
-        } uxmm_reg[8];
-        char ureserved[16][14];
-} usr_fcontext_t;
-
-#endif
-
-/* The index of various registers inside the regcache.  */
-
-enum lynx_i386_gdb_regnum
-{
-  I386_EAX_REGNUM,
-  I386_ECX_REGNUM,
-  I386_EDX_REGNUM,
-  I386_EBX_REGNUM,
-  I386_ESP_REGNUM,
-  I386_EBP_REGNUM,
-  I386_ESI_REGNUM,
-  I386_EDI_REGNUM,
-  I386_EIP_REGNUM,
-  I386_EFLAGS_REGNUM,
-  I386_CS_REGNUM,
-  I386_SS_REGNUM,
-  I386_DS_REGNUM,
-  I386_ES_REGNUM,
-  I386_FS_REGNUM,
-  I386_GS_REGNUM,
-  I386_ST0_REGNUM,
-  I386_FCTRL_REGNUM = I386_ST0_REGNUM + 8,
-  I386_FSTAT_REGNUM,
-  I386_FTAG_REGNUM,
-  I386_FISEG_REGNUM,
-  I386_FIOFF_REGNUM,
-  I386_FOSEG_REGNUM,
-  I386_FOOFF_REGNUM,
-  I386_FOP_REGNUM,
-  I386_XMM0_REGNUM = 32,
-  I386_MXCSR_REGNUM = I386_XMM0_REGNUM + 8,
-  I386_SENTINEL_REGUM
-};
-
-/* The fill_function for the general-purpose register set.  */
-
-static void
-lynx_i386_fill_gregset (struct regcache *regcache, char *buf)
-{
-#define lynx_i386_collect_gp(regnum, fld) \
-  collect_register (regcache, regnum, \
-                    buf + offsetof (usr_econtext_t, uec_##fld))
-
-  lynx_i386_collect_gp (I386_EAX_REGNUM, eax);
-  lynx_i386_collect_gp (I386_ECX_REGNUM, ecx);
-  lynx_i386_collect_gp (I386_EDX_REGNUM, edx);
-  lynx_i386_collect_gp (I386_EBX_REGNUM, ebx);
-  lynx_i386_collect_gp (I386_ESP_REGNUM, esp);
-  lynx_i386_collect_gp (I386_EBP_REGNUM, ebp);
-  lynx_i386_collect_gp (I386_ESI_REGNUM, esi);
-  lynx_i386_collect_gp (I386_EDI_REGNUM, edi);
-  lynx_i386_collect_gp (I386_EIP_REGNUM, eip);
-  lynx_i386_collect_gp (I386_EFLAGS_REGNUM, eflags);
-  lynx_i386_collect_gp (I386_CS_REGNUM, cs);
-  lynx_i386_collect_gp (I386_SS_REGNUM, ss);
-  lynx_i386_collect_gp (I386_DS_REGNUM, ds);
-  lynx_i386_collect_gp (I386_ES_REGNUM, es);
-  lynx_i386_collect_gp (I386_FS_REGNUM, fs);
-  lynx_i386_collect_gp (I386_GS_REGNUM, gs);
-}
-
-/* The store_function for the general-purpose register set.  */
-
-static void
-lynx_i386_store_gregset (struct regcache *regcache, const char *buf)
-{
-#define lynx_i386_supply_gp(regnum, fld) \
-  supply_register (regcache, regnum, \
-                   buf + offsetof (usr_econtext_t, uec_##fld))
-
-  lynx_i386_supply_gp (I386_EAX_REGNUM, eax);
-  lynx_i386_supply_gp (I386_ECX_REGNUM, ecx);
-  lynx_i386_supply_gp (I386_EDX_REGNUM, edx);
-  lynx_i386_supply_gp (I386_EBX_REGNUM, ebx);
-  lynx_i386_supply_gp (I386_ESP_REGNUM, esp);
-  lynx_i386_supply_gp (I386_EBP_REGNUM, ebp);
-  lynx_i386_supply_gp (I386_ESI_REGNUM, esi);
-  lynx_i386_supply_gp (I386_EDI_REGNUM, edi);
-  lynx_i386_supply_gp (I386_EIP_REGNUM, eip);
-  lynx_i386_supply_gp (I386_EFLAGS_REGNUM, eflags);
-  lynx_i386_supply_gp (I386_CS_REGNUM, cs);
-  lynx_i386_supply_gp (I386_SS_REGNUM, ss);
-  lynx_i386_supply_gp (I386_DS_REGNUM, ds);
-  lynx_i386_supply_gp (I386_ES_REGNUM, es);
-  lynx_i386_supply_gp (I386_FS_REGNUM, fs);
-  lynx_i386_supply_gp (I386_GS_REGNUM, gs);
-}
-
-/* Extract the first 16 bits of register REGNUM in the REGCACHE,
-   and store these 2 bytes at DEST.
-
-   This is useful to collect certain 16bit registers which are known
-   by GDBserver as 32bit registers (such as the Control Register
-   for instance).  */
-
-static void
-collect_16bit_register (struct regcache *regcache, int regnum, char *dest)
-{
-  gdb_byte word[4];
-
-  collect_register (regcache, regnum, word);
-  memcpy (dest, word, 2);
-}
-
-/* The fill_function for the floating-point register set.  */
-
-static void
-lynx_i386_fill_fpregset (struct regcache *regcache, char *buf)
-{
-  int i;
-
-  /* Collect %st0 .. %st7.  */
-  for (i = 0; i < 8; i++)
-    collect_register (regcache, I386_ST0_REGNUM + i,
-                      buf + offsetof (usr_fcontext_t, ufc_reg)
-		      + i * sizeof (struct ufp387_real));
-
-  /* Collect the other FPU registers.  */
-  collect_16bit_register (regcache, I386_FCTRL_REGNUM,
-                          buf + offsetof (usr_fcontext_t, ufc_control));
-  collect_16bit_register (regcache, I386_FSTAT_REGNUM,
-                          buf + offsetof (usr_fcontext_t, ufc_status));
-  collect_16bit_register (regcache, I386_FTAG_REGNUM,
-                          buf + offsetof (usr_fcontext_t, ufc_tag));
-  collect_register (regcache, I386_FISEG_REGNUM,
-                    buf + offsetof (usr_fcontext_t, ufc_inst_sel));
-  collect_register (regcache, I386_FIOFF_REGNUM,
-                    buf + offsetof (usr_fcontext_t, ufc_inst_off));
-  collect_register (regcache, I386_FOSEG_REGNUM,
-                    buf + offsetof (usr_fcontext_t, ufc_data_sel));
-  collect_register (regcache, I386_FOOFF_REGNUM,
-                    buf + offsetof (usr_fcontext_t, ufc_data_off));
-#if !defined(LYNXOS_178)
-  collect_16bit_register (regcache, I386_FOP_REGNUM,
-                          buf + offsetof (usr_fcontext_t, ufc_opcode));
-
-  /* Collect the XMM registers.  */
-  for (i = 0; i < 8; i++)
-    collect_register (regcache, I386_XMM0_REGNUM + i,
-                      buf + offsetof (usr_fcontext_t, uxmm_reg)
-		      + i * sizeof (struct uxmm_register));
-  collect_register (regcache, I386_MXCSR_REGNUM,
-                    buf + offsetof (usr_fcontext_t, usse_mxcsr));
-#endif
-}
-
-/* This is the supply counterpart for collect_16bit_register:
-   It extracts a 2byte value from BUF, and uses that value to
-   set REGNUM's value in the regcache.
-
-   This is useful to supply the value of certain 16bit registers
-   which are known by GDBserver as 32bit registers (such as the Control
-   Register for instance).  */
-
-static void
-supply_16bit_register (struct regcache *regcache, int regnum, const char *buf)
-{
-  gdb_byte word[4];
-
-  memcpy (word, buf, 2);
-  memset (word + 2, 0, 2);
-  supply_register (regcache, regnum, word);
-}
-
-/* The store_function for the floating-point register set.  */
-
-static void
-lynx_i386_store_fpregset (struct regcache *regcache, const char *buf)
-{
-  int i;
-
-  /* Store the %st0 .. %st7 registers.  */
-  for (i = 0; i < 8; i++)
-    supply_register (regcache, I386_ST0_REGNUM + i,
-                     buf + offsetof (usr_fcontext_t, ufc_reg)
-		     + i * sizeof (struct ufp387_real));
-
-  /* Store the other FPU registers.  */
-  supply_16bit_register (regcache, I386_FCTRL_REGNUM,
-                         buf + offsetof (usr_fcontext_t, ufc_control));
-  supply_16bit_register (regcache, I386_FSTAT_REGNUM,
-                         buf + offsetof (usr_fcontext_t, ufc_status));
-  supply_16bit_register (regcache, I386_FTAG_REGNUM,
-                         buf + offsetof (usr_fcontext_t, ufc_tag));
-  supply_register (regcache, I386_FISEG_REGNUM,
-                   buf + offsetof (usr_fcontext_t, ufc_inst_sel));
-  supply_register (regcache, I386_FIOFF_REGNUM,
-                   buf + offsetof (usr_fcontext_t, ufc_inst_off));
-  supply_register (regcache, I386_FOSEG_REGNUM,
-                   buf + offsetof (usr_fcontext_t, ufc_data_sel));
-  supply_register (regcache, I386_FOOFF_REGNUM,
-                   buf + offsetof (usr_fcontext_t, ufc_data_off));
-#if !defined(LYNXOS_178)
-  supply_16bit_register (regcache, I386_FOP_REGNUM,
-                         buf + offsetof (usr_fcontext_t, ufc_opcode));
-
-  /* Store the XMM registers.  */
-  for (i = 0; i < 8; i++)
-    supply_register (regcache, I386_XMM0_REGNUM + i,
-                     buf + offsetof (usr_fcontext_t, uxmm_reg)
-		     + i * sizeof (struct uxmm_register));
-  supply_register (regcache, I386_MXCSR_REGNUM,
-                   buf + offsetof (usr_fcontext_t, usse_mxcsr));
-#endif
-}
-
-/* Implements the lynx_target_ops.arch_setup routine.  */
-
-static void
-lynx_i386_arch_setup (void)
-{
-  struct target_desc *tdesc
-    = i386_create_target_description (X86_XSTATE_SSE_MASK, false, false);
-
-  init_target_desc (tdesc, i386_expedite_regs);
-
-  lynx_tdesc = tdesc;
-}
-
-/* Description of all the x86-lynx register sets.  */
-
-struct lynx_regset_info lynx_target_regsets[] = {
-  /* General Purpose Registers.  */
-  {PTRACE_GETREGS, PTRACE_SETREGS, sizeof(usr_econtext_t),
-   lynx_i386_fill_gregset, lynx_i386_store_gregset},
-  /* Floating Point Registers.  */
-  { PTRACE_GETFPREGS, PTRACE_SETFPREGS, sizeof(usr_fcontext_t),
-    lynx_i386_fill_fpregset, lynx_i386_store_fpregset },
-  /* End of list marker.  */
-  {0, 0, -1, NULL, NULL }
-};
-
-/* The lynx_target_ops vector for x86-lynx.  */
-
-struct lynx_target_ops the_low_target = {
-  lynx_i386_arch_setup,
-};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/lynx-low.c ./gdb/gdbserver/lynx-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/lynx-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/lynx-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,776 +0,0 @@
-/* Copyright (C) 2009-2020 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 "server.h"
-#include "target.h"
-#include "lynx-low.h"
-
-#include <limits.h>
-#include <sys/ptrace.h>
-#include <sys/piddef.h> /* Provides PIDGET, TIDGET, BUILDPID, etc.  */
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include "gdbsupport/gdb_wait.h"
-#include <signal.h>
-#include "gdbsupport/filestuff.h"
-#include "gdbsupport/common-inferior.h"
-#include "nat/fork-inferior.h"
-
-int using_threads = 1;
-
-const struct target_desc *lynx_tdesc;
-
-/* Per-process private data.  */
-
-struct process_info_private
-{
-  /* The PTID obtained from the last wait performed on this process.
-     Initialized to null_ptid until the first wait is performed.  */
-  ptid_t last_wait_event_ptid;
-};
-
-/* Print a debug trace on standard output if debug_threads is set.  */
-
-static void
-lynx_debug (char *string, ...)
-{
-  va_list args;
-
-  if (!debug_threads)
-    return;
-
-  va_start (args, string);
-  fprintf (stderr, "DEBUG(lynx): ");
-  vfprintf (stderr, string, args);
-  fprintf (stderr, "\n");
-  va_end (args);
-}
-
-/* Build a ptid_t given a PID and a LynxOS TID.  */
-
-static ptid_t
-lynx_ptid_t (int pid, long tid)
-{
-  /* brobecker/2010-06-21: It looks like the LWP field in ptids
-     should be distinct for each thread (see write_ptid where it
-     writes the thread ID from the LWP).  So instead of storing
-     the LynxOS tid in the tid field of the ptid, we store it in
-     the lwp field.  */
-  return ptid_t (pid, tid, 0);
-}
-
-/* Return the process ID of the given PTID.
-
-   This function has little reason to exist, it's just a wrapper around
-   ptid_get_pid.  But since we have a getter function for the lynxos
-   ptid, it feels cleaner to have a getter for the pid as well.  */
-
-static int
-lynx_ptid_get_pid (ptid_t ptid)
-{
-  return ptid.pid ();
-}
-
-/* Return the LynxOS tid of the given PTID.  */
-
-static long
-lynx_ptid_get_tid (ptid_t ptid)
-{
-  /* See lynx_ptid_t: The LynxOS tid is stored inside the lwp field
-     of the ptid.  */
-  return ptid.lwp ();
-}
-
-/* For a given PTID, return the associated PID as known by the LynxOS
-   ptrace layer.  */
-
-static int
-lynx_ptrace_pid_from_ptid (ptid_t ptid)
-{
-  return BUILDPID (lynx_ptid_get_pid (ptid), lynx_ptid_get_tid (ptid));
-}
-
-/* Return a string image of the ptrace REQUEST number.  */
-
-static char *
-ptrace_request_to_str (int request)
-{
-#define CASE(X) case X: return #X
-  switch (request)
-    {
-      CASE(PTRACE_TRACEME);
-      CASE(PTRACE_PEEKTEXT);
-      CASE(PTRACE_PEEKDATA);
-      CASE(PTRACE_PEEKUSER);
-      CASE(PTRACE_POKETEXT);
-      CASE(PTRACE_POKEDATA);
-      CASE(PTRACE_POKEUSER);
-      CASE(PTRACE_CONT);
-      CASE(PTRACE_KILL);
-      CASE(PTRACE_SINGLESTEP);
-      CASE(PTRACE_ATTACH);
-      CASE(PTRACE_DETACH);
-      CASE(PTRACE_GETREGS);
-      CASE(PTRACE_SETREGS);
-      CASE(PTRACE_GETFPREGS);
-      CASE(PTRACE_SETFPREGS);
-      CASE(PTRACE_READDATA);
-      CASE(PTRACE_WRITEDATA);
-      CASE(PTRACE_READTEXT);
-      CASE(PTRACE_WRITETEXT);
-      CASE(PTRACE_GETFPAREGS);
-      CASE(PTRACE_SETFPAREGS);
-      CASE(PTRACE_GETWINDOW);
-      CASE(PTRACE_SETWINDOW);
-      CASE(PTRACE_SYSCALL);
-      CASE(PTRACE_DUMPCORE);
-      CASE(PTRACE_SETWRBKPT);
-      CASE(PTRACE_SETACBKPT);
-      CASE(PTRACE_CLRBKPT);
-      CASE(PTRACE_GET_UCODE);
-#ifdef PT_READ_GPR
-      CASE(PT_READ_GPR);
-#endif
-#ifdef PT_WRITE_GPR
-      CASE(PT_WRITE_GPR);
-#endif
-#ifdef PT_READ_FPR
-      CASE(PT_READ_FPR);
-#endif
-#ifdef PT_WRITE_FPR
-      CASE(PT_WRITE_FPR);
-#endif
-#ifdef PT_READ_VPR
-      CASE(PT_READ_VPR);
-#endif
-#ifdef PT_WRITE_VPR
-      CASE(PT_WRITE_VPR);
-#endif
-#ifdef PTRACE_PEEKUSP
-      CASE(PTRACE_PEEKUSP);
-#endif
-#ifdef PTRACE_POKEUSP
-      CASE(PTRACE_POKEUSP);
-#endif
-      CASE(PTRACE_PEEKTHREAD);
-      CASE(PTRACE_THREADUSER);
-      CASE(PTRACE_FPREAD);
-      CASE(PTRACE_FPWRITE);
-      CASE(PTRACE_SETSIG);
-      CASE(PTRACE_CONT_ONE);
-      CASE(PTRACE_KILL_ONE);
-      CASE(PTRACE_SINGLESTEP_ONE);
-      CASE(PTRACE_GETLOADINFO);
-      CASE(PTRACE_GETTRACESIG);
-#ifdef PTRACE_GETTHREADLIST
-      CASE(PTRACE_GETTHREADLIST);
-#endif
-    }
-#undef CASE
-
-  return "<unknown-request>";
-}
-
-/* A wrapper around ptrace that allows us to print debug traces of
-   ptrace calls if debug traces are activated.  */
-
-static int
-lynx_ptrace (int request, ptid_t ptid, int addr, int data, int addr2)
-{
-  int result;
-  const int pid = lynx_ptrace_pid_from_ptid (ptid);
-  int saved_errno;
-
-  if (debug_threads)
-    fprintf (stderr, "PTRACE (%s, pid=%d(pid=%d, tid=%d), addr=0x%x, "
-             "data=0x%x, addr2=0x%x)",
-             ptrace_request_to_str (request), pid, PIDGET (pid), TIDGET (pid),
-             addr, data, addr2);
-  result = ptrace (request, pid, addr, data, addr2);
-  saved_errno = errno;
-  if (debug_threads)
-    fprintf (stderr, " -> %d (=0x%x)\n", result, result);
-
-  errno = saved_errno;
-  return result;
-}
-
-/* Call add_process with the given parameters, and initializes
-   the process' private data.  */
-
-static struct process_info *
-lynx_add_process (int pid, int attached)
-{
-  struct process_info *proc;
-
-  proc = add_process (pid, attached);
-  proc->tdesc = lynx_tdesc;
-  proc->priv = XCNEW (struct process_info_private);
-  proc->priv->last_wait_event_ptid = null_ptid;
-
-  return proc;
-}
-
-/* Callback used by fork_inferior to start tracing the inferior.  */
-
-static void
-lynx_ptrace_fun ()
-{
-  int pgrp;
-
-  /* Switch child to its own process group so that signals won't
-     directly affect GDBserver. */
-  pgrp = getpid();
-  if (pgrp < 0)
-    trace_start_error_with_name ("pgrp");
-  if (setpgid (0, pgrp) < 0)
-    trace_start_error_with_name ("setpgid");
-  if (ioctl (0, TIOCSPGRP, &pgrp) < 0)
-    trace_start_error_with_name ("ioctl");
-  if (lynx_ptrace (PTRACE_TRACEME, null_ptid, 0, 0, 0) < 0)
-    trace_start_error_with_name ("lynx_ptrace");
-}
-
-/* Implement the create_inferior method of the target_ops vector.  */
-
-static int
-lynx_create_inferior (const char *program,
-		      const std::vector<char *> &program_args)
-{
-  int pid;
-  std::string str_program_args = stringify_argv (program_args);
-
-  lynx_debug ("lynx_create_inferior ()");
-
-  pid = fork_inferior (program,
-		       str_program_args.c_str (),
-		       get_environ ()->envp (), lynx_ptrace_fun,
-		       NULL, NULL, NULL, NULL);
-
-  post_fork_inferior (pid, program);
-
-  lynx_add_process (pid, 0);
-  /* Do not add the process thread just yet, as we do not know its tid.
-     We will add it later, during the wait for the STOP event corresponding
-     to the lynx_ptrace (PTRACE_TRACEME) call above.  */
-  return pid;
-}
-
-/* Assuming we've just attached to a running inferior whose pid is PID,
-   add all threads running in that process.  */
-
-static void
-lynx_add_threads_after_attach (int pid)
-{
-  /* Ugh!  There appears to be no way to get the list of threads
-     in the program we just attached to.  So get the list by calling
-     the "ps" command.  This is only needed now, as we will then
-     keep the thread list up to date thanks to thread creation and
-     exit notifications.  */
-  FILE *f;
-  char buf[256];
-  int thread_pid, thread_tid;
-
-  f = popen ("ps atx", "r");
-  if (f == NULL)
-    perror_with_name ("Cannot get thread list");
-
-  while (fgets (buf, sizeof (buf), f) != NULL)
-    if ((sscanf (buf, "%d %d", &thread_pid, &thread_tid) == 2
-	 && thread_pid == pid))
-    {
-      ptid_t thread_ptid = lynx_ptid_t (pid, thread_tid);
-
-      if (!find_thread_ptid (thread_ptid))
-	{
-	  lynx_debug ("New thread: (pid = %d, tid = %d)",
-		      pid, thread_tid);
-	  add_thread (thread_ptid, NULL);
-	}
-    }
-
-  pclose (f);
-}
-
-/* Implement the attach target_ops method.  */
-
-static int
-lynx_attach (unsigned long pid)
-{
-  ptid_t ptid = lynx_ptid_t (pid, 0);
-
-  if (lynx_ptrace (PTRACE_ATTACH, ptid, 0, 0, 0) != 0)
-    error ("Cannot attach to process %lu: %s (%d)\n", pid,
-	   safe_strerror (errno), errno);
-
-  lynx_add_process (pid, 1);
-  lynx_add_threads_after_attach (pid);
-
-  return 0;
-}
-
-/* Implement the resume target_ops method.  */
-
-static void
-lynx_resume (struct thread_resume *resume_info, size_t n)
-{
-  ptid_t ptid = resume_info[0].thread;
-  const int request
-    = (resume_info[0].kind == resume_step
-       ? (n == 1 ? PTRACE_SINGLESTEP_ONE : PTRACE_SINGLESTEP)
-       : PTRACE_CONT);
-  const int signal = resume_info[0].sig;
-
-  /* If given a minus_one_ptid, then try using the current_process'
-     private->last_wait_event_ptid.  On most LynxOS versions,
-     using any of the process' thread works well enough, but
-     LynxOS 178 is a little more sensitive, and triggers some
-     unexpected signals (Eg SIG61) when we resume the inferior
-     using a different thread.  */
-  if (ptid == minus_one_ptid)
-    ptid = current_process()->priv->last_wait_event_ptid;
-
-  /* The ptid might still be minus_one_ptid; this can happen between
-     the moment we create the inferior or attach to a process, and
-     the moment we resume its execution for the first time.  It is
-     fine to use the current_thread's ptid in those cases.  */
-  if (ptid == minus_one_ptid)
-    ptid = ptid_of (current_thread);
-
-  regcache_invalidate_pid (ptid.pid ());
-
-  errno = 0;
-  lynx_ptrace (request, ptid, 1, signal, 0);
-  if (errno)
-    perror_with_name ("ptrace");
-}
-
-/* Resume the execution of the given PTID.  */
-
-static void
-lynx_continue (ptid_t ptid)
-{
-  struct thread_resume resume_info;
-
-  resume_info.thread = ptid;
-  resume_info.kind = resume_continue;
-  resume_info.sig = 0;
-
-  lynx_resume (&resume_info, 1);
-}
-
-/* A wrapper around waitpid that handles the various idiosyncrasies
-   of LynxOS' waitpid.  */
-
-static int
-lynx_waitpid (int pid, int *stat_loc)
-{
-  int ret = 0;
-
-  while (1)
-    {
-      ret = waitpid (pid, stat_loc, WNOHANG);
-      if (ret < 0)
-        {
-	  /* An ECHILD error is not indicative of a real problem.
-	     It happens for instance while waiting for the inferior
-	     to stop after attaching to it.  */
-	  if (errno != ECHILD)
-	    perror_with_name ("waitpid (WNOHANG)");
-	}
-      if (ret > 0)
-        break;
-      /* No event with WNOHANG.  See if there is one with WUNTRACED.  */
-      ret = waitpid (pid, stat_loc, WNOHANG | WUNTRACED);
-      if (ret < 0)
-        {
-	  /* An ECHILD error is not indicative of a real problem.
-	     It happens for instance while waiting for the inferior
-	     to stop after attaching to it.  */
-	  if (errno != ECHILD)
-	    perror_with_name ("waitpid (WNOHANG|WUNTRACED)");
-	}
-      if (ret > 0)
-        break;
-      usleep (1000);
-    }
-  return ret;
-}
-
-/* Implement the wait target_ops method.  */
-
-static ptid_t
-lynx_wait_1 (ptid_t ptid, struct target_waitstatus *status, int options)
-{
-  int pid;
-  int ret;
-  int wstat;
-  ptid_t new_ptid;
-
-  if (ptid == minus_one_ptid)
-    pid = lynx_ptid_get_pid (ptid_of (current_thread));
-  else
-    pid = BUILDPID (lynx_ptid_get_pid (ptid), lynx_ptid_get_tid (ptid));
-
-retry:
-
-  ret = lynx_waitpid (pid, &wstat);
-  new_ptid = lynx_ptid_t (ret, ((union wait *) &wstat)->w_tid);
-  find_process_pid (ret)->priv->last_wait_event_ptid = new_ptid;
-
-  /* If this is a new thread, then add it now.  The reason why we do
-     this here instead of when handling new-thread events is because
-     we need to add the thread associated to the "main" thread - even
-     for non-threaded applications where the new-thread events are not
-     generated.  */
-  if (!find_thread_ptid (new_ptid))
-    {
-      lynx_debug ("New thread: (pid = %d, tid = %d)",
-		  lynx_ptid_get_pid (new_ptid), lynx_ptid_get_tid (new_ptid));
-      add_thread (new_ptid, NULL);
-    }
-
-  if (WIFSTOPPED (wstat))
-    {
-      status->kind = TARGET_WAITKIND_STOPPED;
-      status->value.integer = gdb_signal_from_host (WSTOPSIG (wstat));
-      lynx_debug ("process stopped with signal: %d",
-                  status->value.integer);
-    }
-  else if (WIFEXITED (wstat))
-    {
-      status->kind = TARGET_WAITKIND_EXITED;
-      status->value.integer = WEXITSTATUS (wstat);
-      lynx_debug ("process exited with code: %d", status->value.integer);
-    }
-  else if (WIFSIGNALED (wstat))
-    {
-      status->kind = TARGET_WAITKIND_SIGNALLED;
-      status->value.integer = gdb_signal_from_host (WTERMSIG (wstat));
-      lynx_debug ("process terminated with code: %d",
-                  status->value.integer);
-    }
-  else
-    {
-      /* Not sure what happened if we get here, or whether we can
-	 in fact get here.  But if we do, handle the event the best
-	 we can.  */
-      status->kind = TARGET_WAITKIND_STOPPED;
-      status->value.integer = gdb_signal_from_host (0);
-      lynx_debug ("unknown event ????");
-    }
-
-  /* SIGTRAP events are generated for situations other than single-step/
-     breakpoint events (Eg. new-thread events).  Handle those other types
-     of events, and resume the execution if necessary.  */
-  if (status->kind == TARGET_WAITKIND_STOPPED
-      && status->value.integer == GDB_SIGNAL_TRAP)
-    {
-      const int realsig = lynx_ptrace (PTRACE_GETTRACESIG, new_ptid, 0, 0, 0);
-
-      lynx_debug ("(realsig = %d)", realsig);
-      switch (realsig)
-	{
-	  case SIGNEWTHREAD:
-	    /* We just added the new thread above.  No need to do anything
-	       further.  Just resume the execution again.  */
-	    lynx_continue (new_ptid);
-	    goto retry;
-
-	  case SIGTHREADEXIT:
-	    remove_thread (find_thread_ptid (new_ptid));
-	    lynx_continue (new_ptid);
-	    goto retry;
-	}
-    }
-
-  return new_ptid;
-}
-
-/* A wrapper around lynx_wait_1 that also prints debug traces when
-   such debug traces have been activated.  */
-
-static ptid_t
-lynx_wait (ptid_t ptid, struct target_waitstatus *status, int options)
-{
-  ptid_t new_ptid;
-
-  lynx_debug ("lynx_wait (pid = %d, tid = %ld)",
-              lynx_ptid_get_pid (ptid), lynx_ptid_get_tid (ptid));
-  new_ptid = lynx_wait_1 (ptid, status, options);
-  lynx_debug ("          -> (pid=%d, tid=%ld, status->kind = %d)",
-	      lynx_ptid_get_pid (new_ptid), lynx_ptid_get_tid (new_ptid),
-	      status->kind);
-  return new_ptid;
-}
-
-/* Implement the kill target_ops method.  */
-
-static int
-lynx_kill (process_info *process)
-{
-  ptid_t ptid = lynx_ptid_t (process->pid, 0);
-  struct target_waitstatus status;
-
-  lynx_ptrace (PTRACE_KILL, ptid, 0, 0, 0);
-  lynx_wait (ptid, &status, 0);
-  the_target->mourn (process);
-  return 0;
-}
-
-/* Implement the detach target_ops method.  */
-
-static int
-lynx_detach (process_info *process)
-{
-  ptid_t ptid = lynx_ptid_t (process->pid, 0);
-
-  lynx_ptrace (PTRACE_DETACH, ptid, 0, 0, 0);
-  the_target->mourn (process);
-  return 0;
-}
-
-/* Implement the mourn target_ops method.  */
-
-static void
-lynx_mourn (struct process_info *proc)
-{
-  for_each_thread (proc->pid, remove_thread);
-
-  /* Free our private data.  */
-  free (proc->priv);
-  proc->priv = NULL;
-
-  remove_process (proc);
-}
-
-/* Implement the join target_ops method.  */
-
-static void
-lynx_join (int pid)
-{
-  /* The PTRACE_DETACH is sufficient to detach from the process.
-     So no need to do anything extra.  */
-}
-
-/* Implement the thread_alive target_ops method.  */
-
-static int
-lynx_thread_alive (ptid_t ptid)
-{
-  /* The list of threads is updated at the end of each wait, so it
-     should be up to date.  No need to re-fetch it.  */
-  return (find_thread_ptid (ptid) != NULL);
-}
-
-/* Implement the fetch_registers target_ops method.  */
-
-static void
-lynx_fetch_registers (struct regcache *regcache, int regno)
-{
-  struct lynx_regset_info *regset = lynx_target_regsets;
-  ptid_t inferior_ptid = ptid_of (current_thread);
-
-  lynx_debug ("lynx_fetch_registers (regno = %d)", regno);
-
-  while (regset->size >= 0)
-    {
-      char *buf;
-      int res;
-
-      buf = xmalloc (regset->size);
-      res = lynx_ptrace (regset->get_request, inferior_ptid, (int) buf, 0, 0);
-      if (res < 0)
-        perror ("ptrace");
-      regset->store_function (regcache, buf);
-      free (buf);
-      regset++;
-    }
-}
-
-/* Implement the store_registers target_ops method.  */
-
-static void
-lynx_store_registers (struct regcache *regcache, int regno)
-{
-  struct lynx_regset_info *regset = lynx_target_regsets;
-  ptid_t inferior_ptid = ptid_of (current_thread);
-
-  lynx_debug ("lynx_store_registers (regno = %d)", regno);
-
-  while (regset->size >= 0)
-    {
-      char *buf;
-      int res;
-
-      buf = xmalloc (regset->size);
-      res = lynx_ptrace (regset->get_request, inferior_ptid, (int) buf, 0, 0);
-      if (res == 0)
-        {
-	  /* Then overlay our cached registers on that.  */
-	  regset->fill_function (regcache, buf);
-	  /* Only now do we write the register set.  */
-	  res = lynx_ptrace (regset->set_request, inferior_ptid, (int) buf,
-			     0, 0);
-        }
-      if (res < 0)
-        perror ("ptrace");
-      free (buf);
-      regset++;
-    }
-}
-
-/* Implement the read_memory target_ops method.  */
-
-static int
-lynx_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  /* On LynxOS, memory reads needs to be performed in chunks the size
-     of int types, and they should also be aligned accordingly.  */
-  int buf;
-  const int xfer_size = sizeof (buf);
-  CORE_ADDR addr = memaddr & -(CORE_ADDR) xfer_size;
-  ptid_t inferior_ptid = ptid_of (current_thread);
-
-  while (addr < memaddr + len)
-    {
-      int skip = 0;
-      int truncate = 0;
-
-      errno = 0;
-      if (addr < memaddr)
-        skip = memaddr - addr;
-      if (addr + xfer_size > memaddr + len)
-        truncate = addr + xfer_size - memaddr - len;
-      buf = lynx_ptrace (PTRACE_PEEKTEXT, inferior_ptid, addr, 0, 0);
-      if (errno)
-        return errno;
-      memcpy (myaddr + (addr - memaddr) + skip, (gdb_byte *) &buf + skip,
-              xfer_size - skip - truncate);
-      addr += xfer_size;
-    }
-
-  return 0;
-}
-
-/* Implement the write_memory target_ops method.  */
-
-static int
-lynx_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len)
-{
-  /* On LynxOS, memory writes needs to be performed in chunks the size
-     of int types, and they should also be aligned accordingly.  */
-  int buf;
-  const int xfer_size = sizeof (buf);
-  CORE_ADDR addr = memaddr & -(CORE_ADDR) xfer_size;
-  ptid_t inferior_ptid = ptid_of (current_thread);
-
-  while (addr < memaddr + len)
-    {
-      int skip = 0;
-      int truncate = 0;
-
-      if (addr < memaddr)
-        skip = memaddr - addr;
-      if (addr + xfer_size > memaddr + len)
-        truncate = addr + xfer_size - memaddr - len;
-      if (skip > 0 || truncate > 0)
-	{
-	  /* We need to read the memory at this address in order to preserve
-	     the data that we are not overwriting.  */
-	  lynx_read_memory (addr, (unsigned char *) &buf, xfer_size);
-	  if (errno)
-	    return errno;
-	}
-      memcpy ((gdb_byte *) &buf + skip, myaddr + (addr - memaddr) + skip,
-              xfer_size - skip - truncate);
-      errno = 0;
-      lynx_ptrace (PTRACE_POKETEXT, inferior_ptid, addr, buf, 0);
-      if (errno)
-        return errno;
-      addr += xfer_size;
-    }
-
-  return 0;
-}
-
-/* Implement the kill_request target_ops method.  */
-
-static void
-lynx_request_interrupt (void)
-{
-  ptid_t inferior_ptid = ptid_of (get_first_thread ());
-
-  kill (lynx_ptid_get_pid (inferior_ptid), SIGINT);
-}
-
-/* The LynxOS target_ops vector.  */
-
-static struct target_ops lynx_target_ops = {
-  lynx_create_inferior,
-  NULL,  /* post_create_inferior */
-  lynx_attach,
-  lynx_kill,
-  lynx_detach,
-  lynx_mourn,
-  lynx_join,
-  lynx_thread_alive,
-  lynx_resume,
-  lynx_wait,
-  lynx_fetch_registers,
-  lynx_store_registers,
-  NULL,  /* prepare_to_access_memory */
-  NULL,  /* done_accessing_memory */
-  lynx_read_memory,
-  lynx_write_memory,
-  NULL,  /* look_up_symbols */
-  lynx_request_interrupt,
-  NULL,  /* read_auxv */
-  NULL,  /* supports_z_point_type */
-  NULL,  /* insert_point */
-  NULL,  /* remove_point */
-  NULL,  /* stopped_by_sw_breakpoint */
-  NULL,  /* supports_stopped_by_sw_breakpoint */
-  NULL,  /* stopped_by_hw_breakpoint */
-  NULL,  /* supports_stopped_by_hw_breakpoint */
-  target_can_do_hardware_single_step,
-  NULL,  /* stopped_by_watchpoint */
-  NULL,  /* stopped_data_address */
-  NULL,  /* read_offsets */
-  NULL,  /* get_tls_address */
-  NULL,  /* hostio_last_error */
-  NULL,  /* qxfer_osdata */
-  NULL,  /* qxfer_siginfo */
-  NULL,  /* supports_non_stop */
-  NULL,  /* async */
-  NULL,  /* start_non_stop */
-  NULL,  /* supports_multi_process */
-  NULL,  /* supports_fork_events */
-  NULL,  /* supports_vfork_events */
-  NULL,  /* supports_exec_events */
-  NULL,  /* handle_new_gdb_connection */
-  NULL,  /* handle_monitor_command */
-};
-
-void
-initialize_low (void)
-{
-  set_target_ops (&lynx_target_ops);
-  the_low_target.arch_setup ();
-}
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/lynx-low.h ./gdb/gdbserver/lynx-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/lynx-low.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/lynx-low.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,59 +0,0 @@
-/* Copyright (C) 2010-2020 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 GDBSERVER_LYNX_LOW_H
-#define GDBSERVER_LYNX_LOW_H
-
-struct regcache;
-struct target_desc;
-
-/*  Some information relative to a given register set.   */
-
-struct lynx_regset_info
-{
-  /* The ptrace request needed to get/set registers of this set.  */
-  int get_request, set_request;
-  /* The size of the register set.  */
-  int size;
-  /* Fill the buffer BUF from the contents of the given REGCACHE.  */
-  void (*fill_function) (struct regcache *regcache, char *buf);
-  /* Store the register value in BUF in the given REGCACHE.  */
-  void (*store_function) (struct regcache *regcache, const char *buf);
-};
-
-/* A list of regsets for the target being debugged, terminated by an entry
-   where the size is negative.
-
-   This list should be created by the target-specific code.  */
-
-extern struct lynx_regset_info lynx_target_regsets[];
-
-/* The target-specific operations for LynxOS support.  */
-
-struct lynx_target_ops
-{
-  /* Architecture-specific setup.  */
-  void (*arch_setup) (void);
-};
-
-extern struct lynx_target_ops the_low_target;
-
-/* The inferior's target description.  This is a global because the
-   LynxOS ports support neither bi-arch nor multi-process.  */
-extern const struct target_desc *lynx_tdesc;
-
-#endif /* GDBSERVER_LYNX_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/lynx-ppc-low.c ./gdb/gdbserver/lynx-ppc-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/lynx-ppc-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/lynx-ppc-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,185 +0,0 @@
-/* Copyright (C) 2009-2020 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 "server.h"
-#include "lynx-low.h"
-#include <limits.h>
-#include <sys/ptrace.h>
-
-/* The following two typedefs are defined in a .h file which is not
-   in the standard include path (/sys/include/family/ppc/ucontext.h),
-   so we just duplicate them here.  */
-
-/* General register context */
-typedef struct usr_econtext_s
-{
-        uint32_t        uec_iregs[32];
-        uint32_t        uec_inum;
-        uint32_t        uec_srr0;
-        uint32_t        uec_srr1;
-        uint32_t        uec_lr;
-        uint32_t        uec_ctr;
-        uint32_t        uec_cr;
-        uint32_t        uec_xer;
-        uint32_t        uec_dar;
-        uint32_t        uec_mq;
-        uint32_t        uec_msr;
-        uint32_t        uec_sregs[16];
-        uint32_t        uec_ss_count;
-        uint32_t        uec_ss_addr1;
-        uint32_t        uec_ss_addr2;
-        uint32_t        uec_ss_code1;
-        uint32_t        uec_ss_code2;
-} usr_econtext_t;
-
-/* Floating point register context */
-typedef struct usr_fcontext_s
-{
-        uint64_t        ufc_freg[32];
-        uint32_t        ufc_fpscr[2];
-} usr_fcontext_t;
-
-/* Index of for various registers inside the regcache.  */
-#define R0_REGNUM    0
-#define F0_REGNUM    32
-#define PC_REGNUM    64
-#define MSR_REGNUM   65
-#define CR_REGNUM    66
-#define LR_REGNUM    67
-#define CTR_REGNUM   68
-#define XER_REGNUM   69
-#define FPSCR_REGNUM 70
-
-/* Defined in auto-generated file powerpc-32.c.  */
-extern void init_registers_powerpc_32 (void);
-extern const struct target_desc *tdesc_powerpc_32;
-
-/* The fill_function for the general-purpose register set.  */
-
-static void
-lynx_ppc_fill_gregset (struct regcache *regcache, char *buf)
-{
-  int i;
-
-  /* r0 - r31 */
-  for (i = 0; i < 32; i++)
-    collect_register (regcache, R0_REGNUM + i,
-                      buf + offsetof (usr_econtext_t, uec_iregs[i]));
-
-  /* The other registers provided in the GP register context.  */
-  collect_register (regcache, PC_REGNUM,
-                    buf + offsetof (usr_econtext_t, uec_srr0));
-  collect_register (regcache, MSR_REGNUM,
-                    buf + offsetof (usr_econtext_t, uec_srr1));
-  collect_register (regcache, CR_REGNUM,
-                    buf + offsetof (usr_econtext_t, uec_cr));
-  collect_register (regcache, LR_REGNUM,
-                    buf + offsetof (usr_econtext_t, uec_lr));
-  collect_register (regcache, CTR_REGNUM,
-                    buf + offsetof (usr_econtext_t, uec_ctr));
-  collect_register (regcache, XER_REGNUM,
-                    buf + offsetof (usr_econtext_t, uec_xer));
-}
-
-/* The store_function for the general-purpose register set.  */
-
-static void
-lynx_ppc_store_gregset (struct regcache *regcache, const char *buf)
-{
-  int i;
-
-  /* r0 - r31 */
-  for (i = 0; i < 32; i++)
-    supply_register (regcache, R0_REGNUM + i,
-                      buf + offsetof (usr_econtext_t, uec_iregs[i]));
-
-  /* The other registers provided in the GP register context.  */
-  supply_register (regcache, PC_REGNUM,
-                   buf + offsetof (usr_econtext_t, uec_srr0));
-  supply_register (regcache, MSR_REGNUM,
-                   buf + offsetof (usr_econtext_t, uec_srr1));
-  supply_register (regcache, CR_REGNUM,
-                   buf + offsetof (usr_econtext_t, uec_cr));
-  supply_register (regcache, LR_REGNUM,
-                   buf + offsetof (usr_econtext_t, uec_lr));
-  supply_register (regcache, CTR_REGNUM,
-                   buf + offsetof (usr_econtext_t, uec_ctr));
-  supply_register (regcache, XER_REGNUM,
-                   buf + offsetof (usr_econtext_t, uec_xer));
-}
-
-/* The fill_function for the floating-point register set.  */
-
-static void
-lynx_ppc_fill_fpregset (struct regcache *regcache, char *buf)
-{
-  int i;
-
-  /* f0 - f31 */
-  for (i = 0; i < 32; i++)
-    collect_register (regcache, F0_REGNUM + i,
-                      buf + offsetof (usr_fcontext_t, ufc_freg[i]));
-
-  /* fpscr */
-  collect_register (regcache, FPSCR_REGNUM,
-                    buf + offsetof (usr_fcontext_t, ufc_fpscr));
-}
-
-/* The store_function for the floating-point register set.  */
-
-static void
-lynx_ppc_store_fpregset (struct regcache *regcache, const char *buf)
-{
-  int i;
-
-  /* f0 - f31 */
-  for (i = 0; i < 32; i++)
-    supply_register (regcache, F0_REGNUM + i,
-                     buf + offsetof (usr_fcontext_t, ufc_freg[i]));
-
-  /* fpscr */
-  supply_register (regcache, FPSCR_REGNUM,
-                   buf + offsetof (usr_fcontext_t, ufc_fpscr));
-}
-
-/* Implements the lynx_target_ops.arch_setup routine.  */
-
-static void
-lynx_ppc_arch_setup (void)
-{
-  init_registers_powerpc_32 ();
-  lynx_tdesc = tdesc_powerpc_32;
-}
-
-/* Description of all the powerpc-lynx register sets.  */
-
-struct lynx_regset_info lynx_target_regsets[] = {
-  /* General Purpose Registers.  */
-  {PTRACE_GETREGS, PTRACE_SETREGS, sizeof(usr_econtext_t),
-   lynx_ppc_fill_gregset, lynx_ppc_store_gregset},
-  /* Floating Point Registers.  */
-  { PTRACE_GETFPREGS, PTRACE_SETFPREGS, sizeof(usr_fcontext_t),
-    lynx_ppc_fill_fpregset, lynx_ppc_store_fpregset },
-  /* End of list marker.  */
-  {0, 0, -1, NULL, NULL }
-};
-
-/* The lynx_target_ops vector for powerpc-lynxos.  */
-
-struct lynx_target_ops the_low_target = {
-  lynx_ppc_arch_setup,
-};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/Makefile.in ./gdb/gdbserver/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/Makefile.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/Makefile.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,708 +0,0 @@
-# Copyright (C) 1989-2020 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/>.
-
-# Please keep lists in this file sorted alphabetically, with one item per line.
-# See gdb/Makefile.in for guidelines on ordering files and directories.
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-host_alias = @host_noncanonical@
-target_alias = @target_noncanonical@
-program_transform_name = @program_transform_name@
-bindir = @bindir@
-libdir = @libdir@
-tooldir = $(libdir)/$(target_alias)
-
-datarootdir = @datarootdir@
-datadir = @datadir@
-mandir = @mandir@
-man1dir = $(mandir)/man1
-man2dir = $(mandir)/man2
-man3dir = $(mandir)/man3
-man4dir = $(mandir)/man4
-man5dir = $(mandir)/man5
-man6dir = $(mandir)/man6
-man7dir = $(mandir)/man7
-man8dir = $(mandir)/man8
-man9dir = $(mandir)/man9
-infodir = @infodir@
-htmldir = $(prefix)/html
-includedir = @includedir@
-CONFIG_SRC_SUBDIR = @CONFIG_SRC_SUBDIR@
-
-SHELL = @SHELL@
-EXEEXT = @EXEEXT@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-RANLIB = @RANLIB@
-
-CC = @CC@
-CXX = @CXX@
-CXX_DIALECT = @CXX_DIALECT@
-AR = @AR@
-AR_FLAGS = rc
-
-# Dependency tracking information.
-DEPMODE = @CCDEPMODE@
-DEPDIR = @DEPDIR@
-depcomp = $(SHELL) $(srcdir)/../../depcomp
-
-# Directory containing source files.  Don't clean up the spacing,
-# this exact string is matched for by the "configure" script.
-srcdir = @srcdir@
-abs_top_srcdir = @abs_top_srcdir@
-abs_srcdir = @abs_srcdir@
-VPATH = @srcdir@
-
-include $(srcdir)/../silent-rules.mk
-
-# Note that these are overridden by GNU make-specific code below if
-# GNU make is used.  The overrides implement dependency tracking.
-COMPILE.pre = $(CXX) -x c++ $(CXX_DIALECT)
-COMPILE.post = -c -o $@
-COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post)
-POSTCOMPILE = @true
-
-# It is also possible that you will need to add -I/usr/include/sys to the
-# CFLAGS section if your system doesn't have fcntl.h in /usr/include (which
-# is where it should be according to Posix).
-
-# Set this up with gcc if you have gnu ld and the loader will print out
-# line numbers for undefinded refs.
-#CC_LD = g++ -static
-CC_LD = $(CXX) $(CXX_DIALECT)
-
-# Where is the "include" directory?  Traditionally ../include or ./include
-INCLUDE_DIR = ${srcdir}/../../include
-INCLUDE_DEP = $$(INCLUDE_DIR)
-
-LIBIBERTY_BUILDDIR = build-libiberty-gdbserver
-LIBIBERTY = $(LIBIBERTY_BUILDDIR)/libiberty.a
-
-# Where is ust?  These will be empty if ust was not available.
-ustlibs = @ustlibs@
-ustinc = @ustinc@
-
-# gnulib
-GNULIB_BUILDDIR = build-gnulib-gdbserver
-LIBGNU = $(GNULIB_BUILDDIR)/import/libgnu.a
-INCGNU = -I$(srcdir)/../../gnulib/import -I$(GNULIB_BUILDDIR)/import
-
-# Generated headers in the gnulib directory.  These must be listed
-# so that they are generated before other files are compiled.
-GNULIB_H = $(GNULIB_BUILDDIR)/import/string.h @GNULIB_STDINT_H@
-
-# All the includes used for CFLAGS and for lint.
-# -I. for config files.
-# -I${srcdir} for our headers.
-# -I$(srcdir)/../regformats for regdef.h.
-#
-# We do not include ../target or ../nat in here because headers
-# in those directories should be included with the subdirectory.
-# e.g.: "target/wait.h".
-#
-INCLUDE_CFLAGS = -I. -I${srcdir} \
-	-I$(srcdir)/../regformats -I$(srcdir)/.. -I$(INCLUDE_DIR) \
-	$(INCGNU)
-
-# M{H,T}_CFLAGS, if defined, has host- and target-dependent CFLAGS
-# from the config/ directory.
-GLOBAL_CFLAGS = ${MT_CFLAGS} ${MH_CFLAGS}
-#PROFILE_CFLAGS = -pg
-
-WARN_CFLAGS = @WARN_CFLAGS@
-WERROR_CFLAGS = @WERROR_CFLAGS@
-
-WARN_CFLAGS_NO_FORMAT = `echo " $(WARN_CFLAGS) " \
-		   | sed "s/ -Wformat-nonliteral / -Wno-format-nonliteral /g"`
-
-# These are specifically reserved for setting from the command line
-# when running make.  I.E.  "make CFLAGS=-Wmissing-prototypes".
-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} $(PTHREAD_CFLAGS)
-INTERNAL_WARN_CFLAGS = ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
-INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
-
-# LDFLAGS is specifically reserved for setting from the command line
-# when running make.
-LDFLAGS = @LDFLAGS@
-INTERNAL_LDFLAGS = $(LDFLAGS) @RDYNAMIC@
-
-# All source files that go into linking GDB remote server.
-
-SFILES = \
-	$(srcdir)/debug.c \
-	$(srcdir)/dll.c \
-	$(srcdir)/gdbreplay.c \
-	$(srcdir)/hostio.c \
-	$(srcdir)/hostio-errno.c \
-	$(srcdir)/i387-fp.c \
-	$(srcdir)/inferiors.c \
-	$(srcdir)/linux-aarch64-low.c \
-	$(srcdir)/linux-arm-low.c \
-	$(srcdir)/linux-bfin-low.c \
-	$(srcdir)/linux-cris-low.c \
-	$(srcdir)/linux-crisv32-low.c \
-	$(srcdir)/linux-ia64-low.c \
-	$(srcdir)/linux-low.c \
-	$(srcdir)/linux-m32r-low.c \
-	$(srcdir)/linux-m68k-low.c \
-	$(srcdir)/linux-mips-low.c \
-	$(srcdir)/linux-nios2-low.c \
-	$(srcdir)/linux-ppc-low.c \
-	$(srcdir)/linux-s390-low.c \
-	$(srcdir)/linux-sh-low.c \
-	$(srcdir)/linux-sparc-low.c \
-	$(srcdir)/linux-tile-low.c \
-	$(srcdir)/linux-x86-low.c \
-	$(srcdir)/linux-xtensa-low.c \
-	$(srcdir)/mem-break.c \
-	$(srcdir)/proc-service.c \
-	$(srcdir)/proc-service.list \
-	$(srcdir)/regcache.c \
-	$(srcdir)/remote-utils.c \
-	$(srcdir)/server.c \
-	$(srcdir)/symbol.c \
-	$(srcdir)/target.c \
-	$(srcdir)/thread-db.c \
-	$(srcdir)/utils.c \
-	$(srcdir)/win32-arm-low.c \
-	$(srcdir)/win32-i386-low.c \
-	$(srcdir)/win32-low.c \
-	$(srcdir)/wincecompat.c \
-	$(srcdir)/x86-low.c \
-	$(srcdir)/arch/arm.c \
-	$(srcdir)/arch/arm-get-next-pcs.c \
-	$(srcdir)/arch/arm-linux.c \
-	$(srcdir)/arch/ppc-linux-common.c \
-	$(srcdir)/../alloc.c \
-	$(srcdir)/gdbsupport/btrace-common.c \
-	$(srcdir)/gdbsupport/buffer.c \
-	$(srcdir)/gdbsupport/cleanups.c \
-	$(srcdir)/gdbsupport/common-debug.c \
-	$(srcdir)/gdbsupport/common-exceptions.c \
-	$(srcdir)/gdbsupport/common-inferior.c \
-	$(srcdir)/gdbsupport/common-regcache.c \
-	$(srcdir)/gdbsupport/common-utils.c \
-	$(srcdir)/gdbsupport/errors.c \
-	$(srcdir)/gdbsupport/environ.c \
-	$(srcdir)/gdbsupport/fileio.c \
-	$(srcdir)/gdbsupport/filestuff.c \
-	$(srcdir)/gdbsupport/job-control.c \
-	$(srcdir)/gdbsupport/gdb-dlfcn.c \
-	$(srcdir)/gdbsupport/gdb_tilde_expand.c \
-	$(srcdir)/gdbsupport/gdb_vecs.c \
-	$(srcdir)/gdbsupport/netstuff.c \
-	$(srcdir)/gdbsupport/new-op.c \
-	$(srcdir)/gdbsupport/pathstuff.c \
-	$(srcdir)/gdbsupport/print-utils.c \
-	$(srcdir)/gdbsupport/ptid.c \
-	$(srcdir)/gdbsupport/rsp-low.c \
-	$(srcdir)/gdbsupport/safe-strerror.c \
-	$(srcdir)/gdbsupport/tdesc.c \
-	$(srcdir)/gdbsupport/xml-utils.c \
-	$(srcdir)/nat/aarch64-sve-linux-ptrace.c \
-	$(srcdir)/nat/linux-btrace.c \
-	$(srcdir)/nat/linux-namespaces.c \
-	$(srcdir)/nat/linux-osdata.c \
-	$(srcdir)/nat/linux-personality.c \
-	$(srcdir)/nat/mips-linux-watch.c \
-	$(srcdir)/nat/ppc-linux.c \
-	$(srcdir)/nat/fork-inferior.c \
-	$(srcdir)/target/waitstatus.c
-
-DEPFILES = @GDBSERVER_DEPFILES@
-
-LIBOBJS = @LIBOBJS@
-
-SOURCES = $(SFILES)
-TAGFILES = $(SOURCES) ${HFILES} ${ALLPARAM} ${POSSLIBS}
-
-OBS = \
-	alloc.o \
-	ax.o \
-	gdbsupport/agent.o \
-	gdbsupport/btrace-common.o \
-	gdbsupport/buffer.o \
-	gdbsupport/cleanups.o \
-	gdbsupport/common-debug.o \
-	gdbsupport/common-exceptions.o \
-	gdbsupport/common-inferior.o \
-	gdbsupport/job-control.o \
-	gdbsupport/common-regcache.o \
-	gdbsupport/common-utils.o \
-	gdbsupport/errors.o \
-	gdbsupport/environ.o \
-	gdbsupport/fileio.o \
-	gdbsupport/filestuff.o \
-	gdbsupport/format.o \
-	gdbsupport/gdb-dlfcn.o \
-	gdbsupport/gdb_tilde_expand.o \
-	gdbsupport/gdb_vecs.o \
-	gdbsupport/netstuff.o \
-	gdbsupport/new-op.o \
-	gdbsupport/pathstuff.o \
-	gdbsupport/print-utils.o \
-	gdbsupport/ptid.o \
-	gdbsupport/rsp-low.o \
-	gdbsupport/safe-strerror.o \
-	gdbsupport/signals.o \
-	gdbsupport/signals-state-save-restore.o \
-	gdbsupport/tdesc.o \
-	gdbsupport/xml-utils.o \
-	debug.o \
-	dll.o \
-	event-loop.o \
-	hostio.o \
-	inferiors.o \
-	mem-break.o \
-	notif.o \
-	regcache.o \
-	remote-utils.o \
-	server.o \
-	symbol.o \
-	target.o \
-	tdesc.o \
-	tracepoint.o \
-	utils.o \
-	version.o \
-	waitstatus.o \
-	$(DEPFILES) \
-	$(LIBOBJS) \
-	$(XML_BUILTIN)
-
-GDBREPLAY_OBS = \
-	gdbsupport/cleanups.o \
-	gdbsupport/common-exceptions.o \
-	gdbsupport/common-utils.o \
-	gdbsupport/rsp-low.o \
-	gdbsupport/errors.o \
-	gdbsupport/netstuff.o \
-	gdbsupport/print-utils.o \
-	gdbsupport/safe-strerror.o \
-	gdbreplay.o \
-	utils.o \
-	version.o
-
-GDBSERVER_LIBS = @GDBSERVER_LIBS@ $(PTHREAD_LIBS)
-XM_CLIBS = @LIBS@
-CDEPS = $(srcdir)/proc-service.list
-
-# XML files to compile in to gdbserver, if any.
-XML_DIR = $(srcdir)/../features
-XML_FILES = @srv_xmlfiles@
-XML_BUILTIN = @srv_xmlbuiltin@
-
-IPA_DEPFILES = @IPA_DEPFILES@
-extra_libraries = @extra_libraries@
-
-SUBDIRS = $(GNULIB_BUILDDIR) $(LIBIBERTY_BUILDDIR)
-CLEANDIRS = $(SUBDIRS)
-
-# List of subdirectories in the build tree that must exist.
-# This is used to force build failures in existing trees when
-# a new directory is added.
-# The format here is for the `case' shell command.
-REQUIRED_SUBDIRS = $(GNULIB_BUILDDIR) | $(LIBIBERTY_BUILDDIR)
-
-FLAGS_TO_PASS = \
-	"prefix=$(prefix)" \
-	"exec_prefix=$(exec_prefix)" \
-	"infodir=$(infodir)" \
-	"datarootdir=$(datarootdir)" \
-	"docdir=$(docdir)" \
-	"htmldir=$(htmldir)" \
-	"pdfdir=$(pdfdir)" \
-	"libdir=$(libdir)" \
-	"mandir=$(mandir)" \
-	"datadir=$(datadir)" \
-	"includedir=$(includedir)" \
-	"against=$(against)" \
-	"DESTDIR=$(DESTDIR)" \
-	"AR=$(AR)" \
-	"AR_FLAGS=$(AR_FLAGS)" \
-	"CC=$(CC)" \
-	"CFLAGS=$(CFLAGS)" \
-	"CXX=$(CXX)" \
-	"CXXFLAGS=$(CXXFLAGS)" \
-	"DLLTOOL=$(DLLTOOL)" \
-	"LDFLAGS=$(LDFLAGS)" \
-	"RANLIB=$(RANLIB)" \
-	"MAKEINFO=$(MAKEINFO)" \
-	"MAKEHTML=$(MAKEHTML)" \
-	"MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \
-	"INSTALL=$(INSTALL)" \
-	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
-	"INSTALL_DATA=$(INSTALL_DATA)" \
-	"RUNTEST=$(RUNTEST)" \
-	"RUNTESTFLAGS=$(RUNTESTFLAGS)"
-
-# All generated files which can be included by another file.
-generated_files = config.h $(GNULIB_H)
-
-all: gdbserver$(EXEEXT) gdbreplay$(EXEEXT) $(extra_libraries)
-	@$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
-
-# Traditionally "install" depends on "all".  But it may be useful
-# not to; for example, if the user has made some trivial change to a
-# source file and doesn't care about rebuilding or just wants to save the
-# time it takes for make to check that all is up to date.
-# install-only is intended to address that need.
-install: all
-	@$(MAKE) $(FLAGS_TO_PASS) install-only
-
-install-only:
-	n=`echo gdbserver | sed '$(program_transform_name)'`; \
-	if [ x$$n = x ]; then n=gdbserver; else true; fi; \
-	if [ x"$(IPA_DEPFILES)" != x ]; then \
-		$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(libdir); \
-		$(INSTALL_PROGRAM) $(IPA_LIB) $(DESTDIR)$(libdir)/$(IPA_LIB); \
-	fi; \
-	$(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(bindir); \
-	$(INSTALL_PROGRAM) gdbserver$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
-	# Note that we run install and not install-only, as the latter
-	# is not part of GNU standards and in particular not provided
-	# in libiberty.
-	@$(MAKE) $(FLAGS_TO_PASS) DO=install "DODIRS=$(SUBDIRS)" subdir_do
-
-uninstall: force
-	n=`echo gdbserver | sed '$(program_transform_name)'`; \
-	if [ x$$n = x ]; then n=gdbserver; else true; fi; \
-	rm -f $(DESTDIR)/$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(man1dir)/$$n.1
-	@$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
-
-installcheck:
-check:
-info dvi pdf:
-install-info:
-install-pdf:
-html:
-install-html:
-clean-info: force
-	@$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
-
-gdbserver$(EXEEXT): $(sort $(OBS)) ${CDEPS} $(LIBGNU) $(LIBIBERTY)
-	$(SILENCE) rm -f gdbserver$(EXEEXT)
-	$(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
-		-o gdbserver$(EXEEXT) $(OBS) $(LIBGNU) $(LIBIBERTY) \
-		$(GDBSERVER_LIBS) $(XM_CLIBS)
-
-$(LIBGNU) $(LIBIBERTY) $(GNULIB_H): all-lib
-all-lib: $(GNULIB_BUILDDIR)/Makefile $(LIBIBERTY_BUILDDIR)/Makefile
-	@$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS="$(SUBDIRS)" subdir_do
-.PHONY: all-lib
-
-gdbreplay$(EXEEXT): $(sort $(GDBREPLAY_OBS)) $(LIBGNU) $(LIBIBERTY)
-	$(SILENCE) rm -f gdbreplay$(EXEEXT)
-	$(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
-		-o gdbreplay$(EXEEXT) $(GDBREPLAY_OBS) $(XM_CLIBS) $(LIBGNU) \
-		$(LIBIBERTY)
-
-IPA_OBJS = \
-	alloc-ipa.o \
-	ax-ipa.o \
-	gdbsupport/common-utils-ipa.o \
-	gdbsupport/errors-ipa.o \
-	gdbsupport/format-ipa.o \
-	gdbsupport/print-utils-ipa.o \
-	gdbsupport/rsp-low-ipa.o \
-	gdbsupport/safe-strerror-ipa.o \
-	gdbsupport/tdesc-ipa.o \
-	regcache-ipa.o \
-	remote-utils-ipa.o \
-	tdesc-ipa.o \
-	tracepoint-ipa.o \
-	utils-ipa.o \
-	${IPA_DEPFILES}
-
-IPA_LIB = libinproctrace.so
-
-$(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS}
-	$(SILENCE) rm -f $(IPA_LIB)
-	$(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \
-		-Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
-		-o $(IPA_LIB) ${IPA_OBJS} -ldl -pthread
-
-# Put the proper machine-specific files first, so M-. on a machine
-# specific routine gets the one for the correct machine.
-# The xyzzy stuff below deals with empty DEPFILES
-TAGS:	${TAGFILES}
-	etags `find ${srcdir}/../config -name $(DEPRECATED_TM_FILE) -print` \
-	  `find ${srcdir}/../config -name ${XM_FILE} -print` \
-	  `find ${srcdir}/../config -name ${NAT_FILE} -print` \
-	  `for i in yzzy ${DEPFILES}; do \
-	     if [ x$$i != xyzzy ]; then \
-	       echo ${srcdir}/$$i | sed -e 's/\.o$$/\.c/' ; \
-	     fi; \
-	   done` \
-	  ${TAGFILES}
-tags: TAGS
-
-clean:
-	rm -f *.o ${ADD_FILES} *~
-	rm -f gdbserver$(EXEEXT) gdbreplay$(EXEEXT) core make.log
-	rm -f $(IPA_LIB)
-	rm -f *-generated.c
-	rm -f stamp-xml
-	rm -f $(DEPDIR)/*.Po
-	for i in $(CONFIG_SRC_SUBDIR); do \
-		rm -f $$i/*.o;	\
-		rm -f $$i/$(DEPDIR)/*; \
-	done
-	@$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
-
-maintainer-clean realclean distclean: clean
-	@$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
-	rm -rf $(GNULIB_BUILDDIR)
-	rm -f Makefile config.status config.h stamp-h config.log
-	rm -f Makefile
-	for i in $(CONFIG_SRC_SUBDIR); do \
-		rmdir $$i/$(DEPDIR); \
-	done
-
-subdir_do: force
-	@for i in $(DODIRS); do \
-		case $$i in \
-		$(REQUIRED_SUBDIRS)) \
-			if [ ! -f ./$$i/Makefile ] ; then \
-				echo "Missing $$i/Makefile" >&2 ; \
-				exit 1 ; \
-			fi ;; \
-		esac ; \
-		if [ -f ./$$i/Makefile ] ; then \
-			if (cd ./$$i; \
-				$(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \
-			else exit 1 ; fi ; \
-		else true ; fi ; \
-	done
-
-config.h: stamp-h ; @true
-stamp-h: config.in config.status
-	$(SHELL) ./config.status config.h
-
-Makefile: Makefile.in config.status
-	$(SHELL) ./config.status $@
-
-$(GNULIB_BUILDDIR)/Makefile: $(srcdir)/../../gnulib/Makefile.in config.status
-	  @cd $(GNULIB_BUILDDIR); CONFIG_FILES="Makefile" \
-	  CONFIG_COMMANDS="depfiles" \
-	  CONFIG_HEADERS= \
-	  CONFIG_LINKS= \
-	  $(SHELL) config.status
-
-config.status: configure configure.srv $(srcdir)/../../bfd/development.sh
-	$(SHELL) ./config.status --recheck
-
-# automatic rebuilding in automake-generated Makefiles requires
-# this rule in the toplevel Makefile, which, with GNU make, causes
-# the desired updates through the implicit regeneration of the Makefile
-# and all of its prerequisites.
-am--refresh:
-	@:
-
-force:
-
-version-generated.c: Makefile $(srcdir)/../version.in $(srcdir)/../../bfd/version.h $(srcdir)/../gdbsupport/create-version.sh
-	$(ECHO_GEN) $(SHELL) $(srcdir)/../gdbsupport/create-version.sh $(srcdir)/.. \
-		$(host_alias) $(target_alias) $@
-
-xml-builtin-generated.c: stamp-xml; @true
-stamp-xml: $(XML_DIR)/feature_to_c.sh Makefile $(XML_FILES)
-	$(SILENCE) rm -f xml-builtin.tmp
-	$(ECHO_GEN_XML_BUILTIN_GENERATED) $(SHELL) $(XML_DIR)/feature_to_c.sh \
-		xml-builtin.tmp $(XML_FILES)
-	$(SILENCE) $(SHELL) $(srcdir)/../../move-if-change xml-builtin.tmp xml-builtin-generated.c
-	$(SILENCE) echo stamp > stamp-xml
-
-.PRECIOUS: xml-builtin.c
-
-# GNU Make has an annoying habit of putting *all* the Makefile variables
-# into the environment, unless you include this target as a circumvention.
-# Rumor is that this will be fixed (and this target can be removed)
-# in GNU Make 4.0.
-.NOEXPORT:
-
-# GNU Make 3.63 has a different problem: it keeps tacking command line
-# overrides onto the definition of $(MAKE).  This variable setting
-# will remove them.
-MAKEOVERRIDES =
-
-regdat_sh = $(srcdir)/../regformats/regdat.sh
-
-UST_CFLAGS = $(ustinc) -DCONFIG_UST_GDB_INTEGRATION
-
-# Undo gnulib replacements for the IPA shared library build.
-# The gnulib headers are still needed, but gnulib is not linked
-# into the IPA lib so replacement apis don't work.
-UNDO_GNULIB_CFLAGS = -Drpl_strerror_r=strerror_r
-
-# Note, we only build the IPA if -fvisibility=hidden is supported in
-# the first place.
-IPAGENT_CFLAGS = $(INTERNAL_CFLAGS) $(UST_CFLAGS) \
-	$(UNDO_GNULIB_CFLAGS) \
-	-fPIC -DIN_PROCESS_AGENT \
-	-fvisibility=hidden
-
-IPAGENT_COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(IPAGENT_CFLAGS) $(COMPILE.post)
-
-# Rules for special cases.
-
-ax-ipa.o: ax.c
-	$(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
-	$(POSTCOMPILE)
-
-ax.o: ax.c
-	$(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
-	$(POSTCOMPILE)
-
-alloc-ipa.o: ../alloc.c
-	$(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
-	$(POSTCOMPILE)
-
-# Rules for objects that go in the in-process agent.
-
-arch/%-ipa.o: ../arch/%.c
-	$(IPAGENT_COMPILE) $<
-	$(POSTCOMPILE)
-
-gdbsupport/%-ipa.o: ../gdbsupport/%.c
-	$(IPAGENT_COMPILE) $<
-	$(POSTCOMPILE)
-
-%-ipa.o: %-generated.c
-	$(IPAGENT_COMPILE) $<
-	$(POSTCOMPILE)
-
-%-ipa.o: %.c
-	$(IPAGENT_COMPILE) $<
-	$(POSTCOMPILE)
-
-# Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one.
-# Therefore, this one needs to be before "%.o: %.c" for it to be considered for
-# files such as linux-amd64-ipa.o generated from linux-amd64-ipa.c.
-#
-# Later versions of GNU Make choose the rule with the shortest stem, so it would
-# work in any order.
-
-%-ipa.o: %-ipa.c
-	$(IPAGENT_COMPILE) $<
-	$(POSTCOMPILE)
-
-# Rules for objects that go in the gdbserver binary.
-
-arch/%.o: ../arch/%.c
-	$(COMPILE) $<
-	$(POSTCOMPILE)
-
-gdbsupport/%.o: ../gdbsupport/%.c
-	$(COMPILE) $<
-	$(POSTCOMPILE)
-
-%.o: %-generated.c
-	$(COMPILE) $<
-	$(POSTCOMPILE)
-
-%.o: %.c
-	$(COMPILE) $<
-	$(POSTCOMPILE)
-
-%.o: ../nat/%.c
-	$(COMPILE) $<
-	$(POSTCOMPILE)
-
-%.o: ../target/%.c
-	$(COMPILE) $<
-	$(POSTCOMPILE)
-
-%.o: ../%.c
-	$(COMPILE) $<
-	$(POSTCOMPILE)
-
-# Rules for register format descriptions.  Suffix destination files with
-# -generated to identify and clean them easily.
-
-%-generated.c: ../regformats/%.dat | $(regdat_sh)
-	$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
-
-%-generated.c: ../regformats/arm/%.dat | $(regdat_sh)
-	$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
-
-%-generated.c: ../regformats/i386/%.dat | $(regdat_sh)
-	$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
-
-%-generated.c: ../regformats/rs6000/%.dat | $(regdat_sh)
-	$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
-
-#
-# Dependency tracking.
-#
-
-ifeq ($(DEPMODE),depmode=gcc3)
-# Note that we put the dependencies into a .Tpo file, then move them
-# into place if the compile succeeds.  We need this because gcc does
-# not atomically write the dependency output file.
-override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
-	-MF $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo
-override POSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo \
-	$(@D)/$(DEPDIR)/$(basename $(@F)).Po
-else
-override COMPILE.pre = source='$<' object='$@' libtool=no \
-	DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) \
-	$(CXX) -x c++ $(CXX_DIALECT)
-# depcomp handles atomicity for us, so we don't need a postcompile
-# step.
-override POSTCOMPILE =
-endif
-
-# A list of all the objects we might care about in this build, for
-# dependency tracking.
-all_object_files = $(OBS) $(GDBREPLAY_OBS) $(IPA_OBJS)
-
-# Ensure that generated files are created early.  Use order-only
-# dependencies if available.  They require GNU make 3.80 or newer,
-# and the .VARIABLES variable was introduced at the same time.
-ifdef .VARIABLES
-$(all_object_files): | $(generated_files)
-else
-$(all_object_files) : $(generated_files)
-endif
-
-# All the .deps files to include.
-all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\
-		   $(dir $(dep))/$(DEPDIR)/$(notdir $(dep)))
-
-# Dependencies.
--include $(all_deps_files)
-
-# Disable implicit make rules.
-include $(srcdir)/../disable-implicit-rules.mk
-
-# Do not delete intermediate files (e.g. *-generated.c).
-.SECONDARY:
-
-# This is the end of "Makefile.in".
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/mem-break.c ./gdb/gdbserver/mem-break.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/mem-break.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/mem-break.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,2237 +0,0 @@
-/* Memory breakpoint operations for the remote server for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
-
-   Contributed by MontaVista Software.
-
-   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 "server.h"
-#include "regcache.h"
-#include "ax.h"
-
-#define MAX_BREAKPOINT_LEN 8
-
-/* Helper macro used in loops that append multiple items to a singly-linked
-   list instead of inserting items at the head of the list, as, say, in the
-   breakpoint lists.  LISTPP is a pointer to the pointer that is the head of
-   the new list.  ITEMP is a pointer to the item to be added to the list.
-   TAILP must be defined to be the same type as ITEMP, and initialized to
-   NULL.  */
-
-#define APPEND_TO_LIST(listpp, itemp, tailp) \
-	  do \
-	    { \
-	      if ((tailp) == NULL) \
-		*(listpp) = (itemp); \
-	      else \
-		(tailp)->next = (itemp); \
-	      (tailp) = (itemp); \
-	    } \
-	  while (0)
-
-/* GDB will never try to install multiple breakpoints at the same
-   address.  However, we can see GDB requesting to insert a breakpoint
-   at an address is had already inserted one previously in a few
-   situations.
-
-   - The RSP documentation on Z packets says that to avoid potential
-   problems with duplicate packets, the operations should be
-   implemented in an idempotent way.
-
-   - A breakpoint is set at ADDR, an address in a shared library.
-   Then the shared library is unloaded.  And then another, unrelated,
-   breakpoint at ADDR is set.  There is not breakpoint removal request
-   between the first and the second breakpoint.
-
-   - When GDB wants to update the target-side breakpoint conditions or
-   commands, it re-inserts the breakpoint, with updated
-   conditions/commands associated.
-
-   Also, we need to keep track of internal breakpoints too, so we do
-   need to be able to install multiple breakpoints at the same address
-   transparently.
-
-   We keep track of two different, and closely related structures.  A
-   raw breakpoint, which manages the low level, close to the metal
-   aspect of a breakpoint.  It holds the breakpoint address, and for
-   software breakpoints, a buffer holding a copy of the instructions
-   that would be in memory had not been a breakpoint there (we call
-   that the shadow memory of the breakpoint).  We occasionally need to
-   temporarilly uninsert a breakpoint without the client knowing about
-   it (e.g., to step over an internal breakpoint), so we keep an
-   `inserted' state associated with this low level breakpoint
-   structure.  There can only be one such object for a given address.
-   Then, we have (a bit higher level) breakpoints.  This structure
-   holds a callback to be called whenever a breakpoint is hit, a
-   high-level type, and a link to a low level raw breakpoint.  There
-   can be many high-level breakpoints at the same address, and all of
-   them will point to the same raw breakpoint, which is reference
-   counted.  */
-
-/* The low level, physical, raw breakpoint.  */
-struct raw_breakpoint
-{
-  struct raw_breakpoint *next;
-
-  /* The low level type of the breakpoint (software breakpoint,
-     watchpoint, etc.)  */
-  enum raw_bkpt_type raw_type;
-
-  /* A reference count.  Each high level breakpoint referencing this
-     raw breakpoint accounts for one reference.  */
-  int refcount;
-
-  /* The breakpoint's insertion address.  There can only be one raw
-     breakpoint for a given PC.  */
-  CORE_ADDR pc;
-
-  /* The breakpoint's kind.  This is target specific.  Most
-     architectures only use one specific instruction for breakpoints, while
-     others may use more than one.  E.g., on ARM, we need to use different
-     breakpoint instructions on Thumb, Thumb-2, and ARM code.  Likewise for
-     hardware breakpoints -- some architectures (including ARM) need to
-     setup debug registers differently depending on mode.  */
-  int kind;
-
-  /* The breakpoint's shadow memory.  */
-  unsigned char old_data[MAX_BREAKPOINT_LEN];
-
-  /* Positive if this breakpoint is currently inserted in the
-     inferior.  Negative if it was, but we've detected that it's now
-     gone.  Zero if not inserted.  */
-  int inserted;
-};
-
-/* The type of a breakpoint.  */
-enum bkpt_type
-  {
-    /* A GDB breakpoint, requested with a Z0 packet.  */
-    gdb_breakpoint_Z0,
-
-    /* A GDB hardware breakpoint, requested with a Z1 packet.  */
-    gdb_breakpoint_Z1,
-
-    /* A GDB write watchpoint, requested with a Z2 packet.  */
-    gdb_breakpoint_Z2,
-
-    /* A GDB read watchpoint, requested with a Z3 packet.  */
-    gdb_breakpoint_Z3,
-
-    /* A GDB access watchpoint, requested with a Z4 packet.  */
-    gdb_breakpoint_Z4,
-
-    /* A software single-step breakpoint.  */
-    single_step_breakpoint,
-
-    /* Any other breakpoint type that doesn't require specific
-       treatment goes here.  E.g., an event breakpoint.  */
-    other_breakpoint,
-  };
-
-struct point_cond_list
-{
-  /* Pointer to the agent expression that is the breakpoint's
-     conditional.  */
-  struct agent_expr *cond;
-
-  /* Pointer to the next condition.  */
-  struct point_cond_list *next;
-};
-
-struct point_command_list
-{
-  /* Pointer to the agent expression that is the breakpoint's
-     commands.  */
-  struct agent_expr *cmd;
-
-  /* Flag that is true if this command should run even while GDB is
-     disconnected.  */
-  int persistence;
-
-  /* Pointer to the next command.  */
-  struct point_command_list *next;
-};
-
-/* A high level (in gdbserver's perspective) breakpoint.  */
-struct breakpoint
-{
-  struct breakpoint *next;
-
-  /* The breakpoint's type.  */
-  enum bkpt_type type;
-
-  /* Link to this breakpoint's raw breakpoint.  This is always
-     non-NULL.  */
-  struct raw_breakpoint *raw;
-};
-
-/* Breakpoint requested by GDB.  */
-
-struct gdb_breakpoint
-{
-  struct breakpoint base;
-
-  /* Pointer to the condition list that should be evaluated on
-     the target or NULL if the breakpoint is unconditional or
-     if GDB doesn't want us to evaluate the conditionals on the
-     target's side.  */
-  struct point_cond_list *cond_list;
-
-  /* Point to the list of commands to run when this is hit.  */
-  struct point_command_list *command_list;
-};
-
-/* Breakpoint used by GDBserver.  */
-
-struct other_breakpoint
-{
-  struct breakpoint base;
-
-  /* Function to call when we hit this breakpoint.  If it returns 1,
-     the breakpoint shall be deleted; 0 or if this callback is NULL,
-     it will be left inserted.  */
-  int (*handler) (CORE_ADDR);
-};
-
-/* Breakpoint for single step.  */
-
-struct single_step_breakpoint
-{
-  struct breakpoint base;
-
-  /* Thread the reinsert breakpoint belongs to.  */
-  ptid_t ptid;
-};
-
-/* Return the breakpoint size from its kind.  */
-
-static int
-bp_size (struct raw_breakpoint *bp)
-{
-  int size = 0;
-
-  the_target->sw_breakpoint_from_kind (bp->kind, &size);
-  return size;
-}
-
-/* Return the breakpoint opcode from its kind.  */
-
-static const gdb_byte *
-bp_opcode (struct raw_breakpoint *bp)
-{
-  int size = 0;
-
-  return the_target->sw_breakpoint_from_kind (bp->kind, &size);
-}
-
-/* See mem-break.h.  */
-
-enum target_hw_bp_type
-raw_bkpt_type_to_target_hw_bp_type (enum raw_bkpt_type raw_type)
-{
-  switch (raw_type)
-    {
-    case raw_bkpt_type_hw:
-      return hw_execute;
-    case raw_bkpt_type_write_wp:
-      return hw_write;
-    case raw_bkpt_type_read_wp:
-      return hw_read;
-    case raw_bkpt_type_access_wp:
-      return hw_access;
-    default:
-      internal_error (__FILE__, __LINE__,
-		      "bad raw breakpoint type %d", (int) raw_type);
-    }
-}
-
-/* See mem-break.h.  */
-
-static enum bkpt_type
-Z_packet_to_bkpt_type (char z_type)
-{
-  gdb_assert ('0' <= z_type && z_type <= '4');
-
-  return (enum bkpt_type) (gdb_breakpoint_Z0 + (z_type - '0'));
-}
-
-/* See mem-break.h.  */
-
-enum raw_bkpt_type
-Z_packet_to_raw_bkpt_type (char z_type)
-{
-  switch (z_type)
-    {
-    case Z_PACKET_SW_BP:
-      return raw_bkpt_type_sw;
-    case Z_PACKET_HW_BP:
-      return raw_bkpt_type_hw;
-    case Z_PACKET_WRITE_WP:
-      return raw_bkpt_type_write_wp;
-    case Z_PACKET_READ_WP:
-      return raw_bkpt_type_read_wp;
-    case Z_PACKET_ACCESS_WP:
-      return raw_bkpt_type_access_wp;
-    default:
-      gdb_assert_not_reached ("unhandled Z packet type.");
-    }
-}
-
-/* Return true if breakpoint TYPE is a GDB breakpoint.  */
-
-static int
-is_gdb_breakpoint (enum bkpt_type type)
-{
-  return (type == gdb_breakpoint_Z0
-	  || type == gdb_breakpoint_Z1
-	  || type == gdb_breakpoint_Z2
-	  || type == gdb_breakpoint_Z3
-	  || type == gdb_breakpoint_Z4);
-}
-
-bool
-any_persistent_commands (process_info *proc)
-{
-  struct breakpoint *bp;
-  struct point_command_list *cl;
-
-  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
-    {
-      if (is_gdb_breakpoint (bp->type))
-	{
-	  struct gdb_breakpoint *gdb_bp = (struct gdb_breakpoint *) bp;
-
-	  for (cl = gdb_bp->command_list; cl != NULL; cl = cl->next)
-	    if (cl->persistence)
-	      return true;
-	}
-    }
-
-  return false;
-}
-
-/* Find low-level breakpoint of type TYPE at address ADDR that is not
-   insert-disabled.  Returns NULL if not found.  */
-
-static struct raw_breakpoint *
-find_enabled_raw_code_breakpoint_at (CORE_ADDR addr, enum raw_bkpt_type type)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-
-  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
-    if (bp->pc == addr
-	&& bp->raw_type == type
-	&& bp->inserted >= 0)
-      return bp;
-
-  return NULL;
-}
-
-/* Find low-level breakpoint of type TYPE at address ADDR.  Returns
-   NULL if not found.  */
-
-static struct raw_breakpoint *
-find_raw_breakpoint_at (CORE_ADDR addr, enum raw_bkpt_type type, int kind)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-
-  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
-    if (bp->pc == addr && bp->raw_type == type && bp->kind == kind)
-      return bp;
-
-  return NULL;
-}
-
-/* See mem-break.h.  */
-
-int
-insert_memory_breakpoint (struct raw_breakpoint *bp)
-{
-  unsigned char buf[MAX_BREAKPOINT_LEN];
-  int err;
-
-  /* Note that there can be fast tracepoint jumps installed in the
-     same memory range, so to get at the original memory, we need to
-     use read_inferior_memory, which masks those out.  */
-  err = read_inferior_memory (bp->pc, buf, bp_size (bp));
-  if (err != 0)
-    {
-      if (debug_threads)
-	debug_printf ("Failed to read shadow memory of"
-		      " breakpoint at 0x%s (%s).\n",
-		      paddress (bp->pc), safe_strerror (err));
-    }
-  else
-    {
-      memcpy (bp->old_data, buf, bp_size (bp));
-
-      err = (*the_target->write_memory) (bp->pc, bp_opcode (bp),
-					 bp_size (bp));
-      if (err != 0)
-	{
-	  if (debug_threads)
-	    debug_printf ("Failed to insert breakpoint at 0x%s (%s).\n",
-			  paddress (bp->pc), safe_strerror (err));
-	}
-    }
-  return err != 0 ? -1 : 0;
-}
-
-/* See mem-break.h  */
-
-int
-remove_memory_breakpoint (struct raw_breakpoint *bp)
-{
-  unsigned char buf[MAX_BREAKPOINT_LEN];
-  int err;
-
-  /* Since there can be trap breakpoints inserted in the same address
-     range, we use `target_write_memory', which takes care of
-     layering breakpoints on top of fast tracepoints, and on top of
-     the buffer we pass it.  This works because the caller has already
-     either unlinked the breakpoint or marked it uninserted.  Also
-     note that we need to pass the current shadow contents, because
-     target_write_memory updates any shadow memory with what we pass
-     here, and we want that to be a nop.  */
-  memcpy (buf, bp->old_data, bp_size (bp));
-  err = target_write_memory (bp->pc, buf, bp_size (bp));
-  if (err != 0)
-    {
-      if (debug_threads)
-	debug_printf ("Failed to uninsert raw breakpoint "
-		      "at 0x%s (%s) while deleting it.\n",
-		      paddress (bp->pc), safe_strerror (err));
-    }
-  return err != 0 ? -1 : 0;
-}
-
-/* Set a RAW breakpoint of type TYPE and kind KIND at WHERE.  On
-   success, a pointer to the new breakpoint is returned.  On failure,
-   returns NULL and writes the error code to *ERR.  */
-
-static struct raw_breakpoint *
-set_raw_breakpoint_at (enum raw_bkpt_type type, CORE_ADDR where, int kind,
-		       int *err)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-
-  if (type == raw_bkpt_type_sw || type == raw_bkpt_type_hw)
-    {
-      bp = find_enabled_raw_code_breakpoint_at (where, type);
-      if (bp != NULL && bp->kind != kind)
-	{
-	  /* A different kind than previously seen.  The previous
-	     breakpoint must be gone then.  */
-	  if (debug_threads)
-	    debug_printf ("Inconsistent breakpoint kind?  Was %d, now %d.\n",
-			  bp->kind, kind);
-	  bp->inserted = -1;
-	  bp = NULL;
-	}
-    }
-  else
-    bp = find_raw_breakpoint_at (where, type, kind);
-
-  gdb::unique_xmalloc_ptr<struct raw_breakpoint> bp_holder;
-  if (bp == NULL)
-    {
-      bp_holder.reset (XCNEW (struct raw_breakpoint));
-      bp = bp_holder.get ();
-      bp->pc = where;
-      bp->kind = kind;
-      bp->raw_type = type;
-    }
-
-  if (!bp->inserted)
-    {
-      *err = the_target->insert_point (bp->raw_type, bp->pc, bp->kind, bp);
-      if (*err != 0)
-	{
-	  if (debug_threads)
-	    debug_printf ("Failed to insert breakpoint at 0x%s (%d).\n",
-			  paddress (where), *err);
-
-	  return NULL;
-	}
-
-      bp->inserted = 1;
-    }
-
-  /* If the breakpoint was allocated above, we know we want to keep it
-     now.  */
-  bp_holder.release ();
-
-  /* Link the breakpoint in, if this is the first reference.  */
-  if (++bp->refcount == 1)
-    {
-      bp->next = proc->raw_breakpoints;
-      proc->raw_breakpoints = bp;
-    }
-  return bp;
-}
-
-/* Notice that breakpoint traps are always installed on top of fast
-   tracepoint jumps.  This is even if the fast tracepoint is installed
-   at a later time compared to when the breakpoint was installed.
-   This means that a stopping breakpoint or tracepoint has higher
-   "priority".  In turn, this allows having fast and slow tracepoints
-   (and breakpoints) at the same address behave correctly.  */
-
-
-/* A fast tracepoint jump.  */
-
-struct fast_tracepoint_jump
-{
-  struct fast_tracepoint_jump *next;
-
-  /* A reference count.  GDB can install more than one fast tracepoint
-     at the same address (each with its own action list, for
-     example).  */
-  int refcount;
-
-  /* The fast tracepoint's insertion address.  There can only be one
-     of these for a given PC.  */
-  CORE_ADDR pc;
-
-  /* Non-zero if this fast tracepoint jump is currently inserted in
-     the inferior.  */
-  int inserted;
-
-  /* The length of the jump instruction.  */
-  int length;
-
-  /* A poor-man's flexible array member, holding both the jump
-     instruction to insert, and a copy of the instruction that would
-     be in memory had not been a jump there (the shadow memory of the
-     tracepoint jump).  */
-  unsigned char insn_and_shadow[0];
-};
-
-/* Fast tracepoint FP's jump instruction to insert.  */
-#define fast_tracepoint_jump_insn(fp) \
-  ((fp)->insn_and_shadow + 0)
-
-/* The shadow memory of fast tracepoint jump FP.  */
-#define fast_tracepoint_jump_shadow(fp) \
-  ((fp)->insn_and_shadow + (fp)->length)
-
-
-/* Return the fast tracepoint jump set at WHERE.  */
-
-static struct fast_tracepoint_jump *
-find_fast_tracepoint_jump_at (CORE_ADDR where)
-{
-  struct process_info *proc = current_process ();
-  struct fast_tracepoint_jump *jp;
-
-  for (jp = proc->fast_tracepoint_jumps; jp != NULL; jp = jp->next)
-    if (jp->pc == where)
-      return jp;
-
-  return NULL;
-}
-
-int
-fast_tracepoint_jump_here (CORE_ADDR where)
-{
-  struct fast_tracepoint_jump *jp = find_fast_tracepoint_jump_at (where);
-
-  return (jp != NULL);
-}
-
-int
-delete_fast_tracepoint_jump (struct fast_tracepoint_jump *todel)
-{
-  struct fast_tracepoint_jump *bp, **bp_link;
-  int ret;
-  struct process_info *proc = current_process ();
-
-  bp = proc->fast_tracepoint_jumps;
-  bp_link = &proc->fast_tracepoint_jumps;
-
-  while (bp)
-    {
-      if (bp == todel)
-	{
-	  if (--bp->refcount == 0)
-	    {
-	      struct fast_tracepoint_jump *prev_bp_link = *bp_link;
-	      unsigned char *buf;
-
-	      /* Unlink it.  */
-	      *bp_link = bp->next;
-
-	      /* Since there can be breakpoints inserted in the same
-		 address range, we use `target_write_memory', which
-		 takes care of layering breakpoints on top of fast
-		 tracepoints, and on top of the buffer we pass it.
-		 This works because we've already unlinked the fast
-		 tracepoint jump above.  Also note that we need to
-		 pass the current shadow contents, because
-		 target_write_memory updates any shadow memory with
-		 what we pass here, and we want that to be a nop.  */
-	      buf = (unsigned char *) alloca (bp->length);
-	      memcpy (buf, fast_tracepoint_jump_shadow (bp), bp->length);
-	      ret = target_write_memory (bp->pc, buf, bp->length);
-	      if (ret != 0)
-		{
-		  /* Something went wrong, relink the jump.  */
-		  *bp_link = prev_bp_link;
-
-		  if (debug_threads)
-		    debug_printf ("Failed to uninsert fast tracepoint jump "
-				  "at 0x%s (%s) while deleting it.\n",
-				  paddress (bp->pc), safe_strerror (ret));
-		  return ret;
-		}
-
-	      free (bp);
-	    }
-
-	  return 0;
-	}
-      else
-	{
-	  bp_link = &bp->next;
-	  bp = *bp_link;
-	}
-    }
-
-  warning ("Could not find fast tracepoint jump in list.");
-  return ENOENT;
-}
-
-void
-inc_ref_fast_tracepoint_jump (struct fast_tracepoint_jump *jp)
-{
-  jp->refcount++;
-}
-
-struct fast_tracepoint_jump *
-set_fast_tracepoint_jump (CORE_ADDR where,
-			  unsigned char *insn, ULONGEST length)
-{
-  struct process_info *proc = current_process ();
-  struct fast_tracepoint_jump *jp;
-  int err;
-  unsigned char *buf;
-
-  /* We refcount fast tracepoint jumps.  Check if we already know
-     about a jump at this address.  */
-  jp = find_fast_tracepoint_jump_at (where);
-  if (jp != NULL)
-    {
-      jp->refcount++;
-      return jp;
-    }
-
-  /* We don't, so create a new object.  Double the length, because the
-     flexible array member holds both the jump insn, and the
-     shadow.  */
-  jp = (struct fast_tracepoint_jump *) xcalloc (1, sizeof (*jp) + (length * 2));
-  jp->pc = where;
-  jp->length = length;
-  memcpy (fast_tracepoint_jump_insn (jp), insn, length);
-  jp->refcount = 1;
-  buf = (unsigned char *) alloca (length);
-
-  /* Note that there can be trap breakpoints inserted in the same
-     address range.  To access the original memory contents, we use
-     `read_inferior_memory', which masks out breakpoints.  */
-  err = read_inferior_memory (where, buf, length);
-  if (err != 0)
-    {
-      if (debug_threads)
-	debug_printf ("Failed to read shadow memory of"
-		      " fast tracepoint at 0x%s (%s).\n",
-		      paddress (where), safe_strerror (err));
-      free (jp);
-      return NULL;
-    }
-  memcpy (fast_tracepoint_jump_shadow (jp), buf, length);
-
-  /* Link the jump in.  */
-  jp->inserted = 1;
-  jp->next = proc->fast_tracepoint_jumps;
-  proc->fast_tracepoint_jumps = jp;
-
-  /* Since there can be trap breakpoints inserted in the same address
-     range, we use use `target_write_memory', which takes care of
-     layering breakpoints on top of fast tracepoints, on top of the
-     buffer we pass it.  This works because we've already linked in
-     the fast tracepoint jump above.  Also note that we need to pass
-     the current shadow contents, because target_write_memory
-     updates any shadow memory with what we pass here, and we want
-     that to be a nop.  */
-  err = target_write_memory (where, buf, length);
-  if (err != 0)
-    {
-      if (debug_threads)
-	debug_printf ("Failed to insert fast tracepoint jump at 0x%s (%s).\n",
-		      paddress (where), safe_strerror (err));
-
-      /* Unlink it.  */
-      proc->fast_tracepoint_jumps = jp->next;
-      free (jp);
-
-      return NULL;
-    }
-
-  return jp;
-}
-
-void
-uninsert_fast_tracepoint_jumps_at (CORE_ADDR pc)
-{
-  struct fast_tracepoint_jump *jp;
-  int err;
-
-  jp = find_fast_tracepoint_jump_at (pc);
-  if (jp == NULL)
-    {
-      /* This can happen when we remove all breakpoints while handling
-	 a step-over.  */
-      if (debug_threads)
-	debug_printf ("Could not find fast tracepoint jump at 0x%s "
-		      "in list (uninserting).\n",
-		      paddress (pc));
-      return;
-    }
-
-  if (jp->inserted)
-    {
-      unsigned char *buf;
-
-      jp->inserted = 0;
-
-      /* Since there can be trap breakpoints inserted in the same
-	 address range, we use use `target_write_memory', which
-	 takes care of layering breakpoints on top of fast
-	 tracepoints, and on top of the buffer we pass it.  This works
-	 because we've already marked the fast tracepoint fast
-	 tracepoint jump uninserted above.  Also note that we need to
-	 pass the current shadow contents, because
-	 target_write_memory updates any shadow memory with what we
-	 pass here, and we want that to be a nop.  */
-      buf = (unsigned char *) alloca (jp->length);
-      memcpy (buf, fast_tracepoint_jump_shadow (jp), jp->length);
-      err = target_write_memory (jp->pc, buf, jp->length);
-      if (err != 0)
-	{
-	  jp->inserted = 1;
-
-	  if (debug_threads)
-	    debug_printf ("Failed to uninsert fast tracepoint jump at"
-			  " 0x%s (%s).\n",
-			  paddress (pc), safe_strerror (err));
-	}
-    }
-}
-
-void
-reinsert_fast_tracepoint_jumps_at (CORE_ADDR where)
-{
-  struct fast_tracepoint_jump *jp;
-  int err;
-  unsigned char *buf;
-
-  jp = find_fast_tracepoint_jump_at (where);
-  if (jp == NULL)
-    {
-      /* This can happen when we remove breakpoints when a tracepoint
-	 hit causes a tracing stop, while handling a step-over.  */
-      if (debug_threads)
-	debug_printf ("Could not find fast tracepoint jump at 0x%s "
-		      "in list (reinserting).\n",
-		      paddress (where));
-      return;
-    }
-
-  if (jp->inserted)
-    error ("Jump already inserted at reinsert time.");
-
-  jp->inserted = 1;
-
-  /* Since there can be trap breakpoints inserted in the same address
-     range, we use `target_write_memory', which takes care of
-     layering breakpoints on top of fast tracepoints, and on top of
-     the buffer we pass it.  This works because we've already marked
-     the fast tracepoint jump inserted above.  Also note that we need
-     to pass the current shadow contents, because
-     target_write_memory updates any shadow memory with what we pass
-     here, and we want that to be a nop.  */
-  buf = (unsigned char *) alloca (jp->length);
-  memcpy (buf, fast_tracepoint_jump_shadow (jp), jp->length);
-  err = target_write_memory (where, buf, jp->length);
-  if (err != 0)
-    {
-      jp->inserted = 0;
-
-      if (debug_threads)
-	debug_printf ("Failed to reinsert fast tracepoint jump at"
-		      " 0x%s (%s).\n",
-		      paddress (where), safe_strerror (err));
-    }
-}
-
-/* Set a high-level breakpoint of type TYPE, with low level type
-   RAW_TYPE and kind KIND, at WHERE.  On success, a pointer to the new
-   breakpoint is returned.  On failure, returns NULL and writes the
-   error code to *ERR.  HANDLER is called when the breakpoint is hit.
-   HANDLER should return 1 if the breakpoint should be deleted, 0
-   otherwise.  */
-
-static struct breakpoint *
-set_breakpoint (enum bkpt_type type, enum raw_bkpt_type raw_type,
-		CORE_ADDR where, int kind,
-		int (*handler) (CORE_ADDR), int *err)
-{
-  struct process_info *proc = current_process ();
-  struct breakpoint *bp;
-  struct raw_breakpoint *raw;
-
-  raw = set_raw_breakpoint_at (raw_type, where, kind, err);
-
-  if (raw == NULL)
-    {
-      /* warn? */
-      return NULL;
-    }
-
-  if (is_gdb_breakpoint (type))
-    {
-      struct gdb_breakpoint *gdb_bp = XCNEW (struct gdb_breakpoint);
-
-      bp = (struct breakpoint *) gdb_bp;
-      gdb_assert (handler == NULL);
-    }
-  else if (type == other_breakpoint)
-    {
-      struct other_breakpoint *other_bp = XCNEW (struct other_breakpoint);
-
-      other_bp->handler = handler;
-      bp = (struct breakpoint *) other_bp;
-    }
-  else if (type == single_step_breakpoint)
-    {
-      struct single_step_breakpoint *ss_bp
-	= XCNEW (struct single_step_breakpoint);
-
-      bp = (struct breakpoint *) ss_bp;
-    }
-  else
-    gdb_assert_not_reached ("unhandled breakpoint type");
-
-  bp->type = type;
-  bp->raw = raw;
-
-  bp->next = proc->breakpoints;
-  proc->breakpoints = bp;
-
-  return bp;
-}
-
-/* Set breakpoint of TYPE on address WHERE with handler HANDLER.  */
-
-static struct breakpoint *
-set_breakpoint_type_at (enum bkpt_type type, CORE_ADDR where,
-			int (*handler) (CORE_ADDR))
-{
-  int err_ignored;
-  CORE_ADDR placed_address = where;
-  int breakpoint_kind = target_breakpoint_kind_from_pc (&placed_address);
-
-  return set_breakpoint (type, raw_bkpt_type_sw,
-			 placed_address, breakpoint_kind, handler,
-			 &err_ignored);
-}
-
-/* See mem-break.h  */
-
-struct breakpoint *
-set_breakpoint_at (CORE_ADDR where, int (*handler) (CORE_ADDR))
-{
-  return set_breakpoint_type_at (other_breakpoint, where, handler);
-}
-
-
-static int
-delete_raw_breakpoint (struct process_info *proc, struct raw_breakpoint *todel)
-{
-  struct raw_breakpoint *bp, **bp_link;
-  int ret;
-
-  bp = proc->raw_breakpoints;
-  bp_link = &proc->raw_breakpoints;
-
-  while (bp)
-    {
-      if (bp == todel)
-	{
-	  if (bp->inserted > 0)
-	    {
-	      struct raw_breakpoint *prev_bp_link = *bp_link;
-
-	      *bp_link = bp->next;
-
-	      ret = the_target->remove_point (bp->raw_type, bp->pc, bp->kind,
-					      bp);
-	      if (ret != 0)
-		{
-		  /* Something went wrong, relink the breakpoint.  */
-		  *bp_link = prev_bp_link;
-
-		  if (debug_threads)
-		    debug_printf ("Failed to uninsert raw breakpoint "
-				  "at 0x%s while deleting it.\n",
-				  paddress (bp->pc));
-		  return ret;
-		}
-	    }
-	  else
-	    *bp_link = bp->next;
-
-	  free (bp);
-	  return 0;
-	}
-      else
-	{
-	  bp_link = &bp->next;
-	  bp = *bp_link;
-	}
-    }
-
-  warning ("Could not find raw breakpoint in list.");
-  return ENOENT;
-}
-
-static int
-release_breakpoint (struct process_info *proc, struct breakpoint *bp)
-{
-  int newrefcount;
-  int ret;
-
-  newrefcount = bp->raw->refcount - 1;
-  if (newrefcount == 0)
-    {
-      ret = delete_raw_breakpoint (proc, bp->raw);
-      if (ret != 0)
-	return ret;
-    }
-  else
-    bp->raw->refcount = newrefcount;
-
-  free (bp);
-
-  return 0;
-}
-
-static int
-delete_breakpoint_1 (struct process_info *proc, struct breakpoint *todel)
-{
-  struct breakpoint *bp, **bp_link;
-  int err;
-
-  bp = proc->breakpoints;
-  bp_link = &proc->breakpoints;
-
-  while (bp)
-    {
-      if (bp == todel)
-	{
-	  *bp_link = bp->next;
-
-	  err = release_breakpoint (proc, bp);
-	  if (err != 0)
-	    return err;
-
-	  bp = *bp_link;
-	  return 0;
-	}
-      else
-	{
-	  bp_link = &bp->next;
-	  bp = *bp_link;
-	}
-    }
-
-  warning ("Could not find breakpoint in list.");
-  return ENOENT;
-}
-
-int
-delete_breakpoint (struct breakpoint *todel)
-{
-  struct process_info *proc = current_process ();
-  return delete_breakpoint_1 (proc, todel);
-}
-
-/* Locate a GDB breakpoint of type Z_TYPE and kind KIND placed at
-   address ADDR and return a pointer to its structure.  If KIND is -1,
-   the breakpoint's kind is ignored.  */
-
-static struct gdb_breakpoint *
-find_gdb_breakpoint (char z_type, CORE_ADDR addr, int kind)
-{
-  struct process_info *proc = current_process ();
-  struct breakpoint *bp;
-  enum bkpt_type type = Z_packet_to_bkpt_type (z_type);
-
-  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
-    if (bp->type == type && bp->raw->pc == addr
-	&& (kind == -1 || bp->raw->kind == kind))
-      return (struct gdb_breakpoint *) bp;
-
-  return NULL;
-}
-
-static int
-z_type_supported (char z_type)
-{
-  return (z_type >= '0' && z_type <= '4'
-	  && the_target->supports_z_point_type != NULL
-	  && the_target->supports_z_point_type (z_type));
-}
-
-/* Create a new GDB breakpoint of type Z_TYPE at ADDR with kind KIND.
-   Returns a pointer to the newly created breakpoint on success.  On
-   failure returns NULL and sets *ERR to either -1 for error, or 1 if
-   Z_TYPE breakpoints are not supported on this target.  */
-
-static struct gdb_breakpoint *
-set_gdb_breakpoint_1 (char z_type, CORE_ADDR addr, int kind, int *err)
-{
-  struct gdb_breakpoint *bp;
-  enum bkpt_type type;
-  enum raw_bkpt_type raw_type;
-
-  /* If we see GDB inserting a second code breakpoint at the same
-     address, then either: GDB is updating the breakpoint's conditions
-     or commands; or, the first breakpoint must have disappeared due
-     to a shared library unload.  On targets where the shared
-     libraries are handled by userspace, like SVR4, for example,
-     GDBserver can't tell if a library was loaded or unloaded.  Since
-     we refcount raw breakpoints, we must be careful to make sure GDB
-     breakpoints never contribute more than one reference.  if we
-     didn't do this, in case the previous breakpoint is gone due to a
-     shared library unload, we'd just increase the refcount of the
-     previous breakpoint at this address, but the trap was not planted
-     in the inferior anymore, thus the breakpoint would never be hit.
-     Note this must be careful to not create a window where
-     breakpoints are removed from the target, for non-stop, in case
-     the target can poke at memory while the program is running.  */
-  if (z_type == Z_PACKET_SW_BP
-      || z_type == Z_PACKET_HW_BP)
-    {
-      bp = find_gdb_breakpoint (z_type, addr, -1);
-
-      if (bp != NULL)
-	{
-	  if (bp->base.raw->kind != kind)
-	    {
-	      /* A different kind than previously seen.  The previous
-		 breakpoint must be gone then.  */
-	      bp->base.raw->inserted = -1;
-	      delete_breakpoint ((struct breakpoint *) bp);
-	      bp = NULL;
-	    }
-	  else if (z_type == Z_PACKET_SW_BP)
-	    {
-	      /* Check if the breakpoint is actually gone from the
-		 target, due to an solib unload, for example.  Might
-		 as well validate _all_ breakpoints.  */
-	      validate_breakpoints ();
-
-	      /* Breakpoints that don't pass validation are
-		 deleted.  */
-	      bp = find_gdb_breakpoint (z_type, addr, -1);
-	    }
-	}
-    }
-  else
-    {
-      /* Data breakpoints for the same address but different kind are
-	 expected.  GDB doesn't merge these.  The backend gets to do
-	 that if it wants/can.  */
-      bp = find_gdb_breakpoint (z_type, addr, kind);
-    }
-
-  if (bp != NULL)
-    {
-      /* We already know about this breakpoint, there's nothing else
-	 to do - GDB's reference is already accounted for.  Note that
-	 whether the breakpoint inserted is left as is - we may be
-	 stepping over it, for example, in which case we don't want to
-	 force-reinsert it.  */
-      return bp;
-    }
-
-  raw_type = Z_packet_to_raw_bkpt_type (z_type);
-  type = Z_packet_to_bkpt_type (z_type);
-  return (struct gdb_breakpoint *) set_breakpoint (type, raw_type, addr,
-						   kind, NULL, err);
-}
-
-static int
-check_gdb_bp_preconditions (char z_type, int *err)
-{
-  /* As software/memory breakpoints work by poking at memory, we need
-     to prepare to access memory.  If that operation fails, we need to
-     return error.  Seeing an error, if this is the first breakpoint
-     of that type that GDB tries to insert, GDB would then assume the
-     breakpoint type is supported, but it may actually not be.  So we
-     need to check whether the type is supported at all before
-     preparing to access memory.  */
-  if (!z_type_supported (z_type))
-    {
-      *err = 1;
-      return 0;
-    }
-
-  return 1;
-}
-
-/* See mem-break.h.  This is a wrapper for set_gdb_breakpoint_1 that
-   knows to prepare to access memory for Z0 breakpoints.  */
-
-struct gdb_breakpoint *
-set_gdb_breakpoint (char z_type, CORE_ADDR addr, int kind, int *err)
-{
-  struct gdb_breakpoint *bp;
-
-  if (!check_gdb_bp_preconditions (z_type, err))
-    return NULL;
-
-  /* If inserting a software/memory breakpoint, need to prepare to
-     access memory.  */
-  if (z_type == Z_PACKET_SW_BP)
-    {
-      if (prepare_to_access_memory () != 0)
-	{
-	  *err = -1;
-	  return NULL;
-	}
-    }
-
-  bp = set_gdb_breakpoint_1 (z_type, addr, kind, err);
-
-  if (z_type == Z_PACKET_SW_BP)
-    done_accessing_memory ();
-
-  return bp;
-}
-
-/* Delete a GDB breakpoint of type Z_TYPE and kind KIND previously
-   inserted at ADDR with set_gdb_breakpoint_at.  Returns 0 on success,
-   -1 on error, and 1 if Z_TYPE breakpoints are not supported on this
-   target.  */
-
-static int
-delete_gdb_breakpoint_1 (char z_type, CORE_ADDR addr, int kind)
-{
-  struct gdb_breakpoint *bp;
-  int err;
-
-  bp = find_gdb_breakpoint (z_type, addr, kind);
-  if (bp == NULL)
-    return -1;
-
-  /* Before deleting the breakpoint, make sure to free its condition
-     and command lists.  */
-  clear_breakpoint_conditions_and_commands (bp);
-  err = delete_breakpoint ((struct breakpoint *) bp);
-  if (err != 0)
-    return -1;
-
-  return 0;
-}
-
-/* See mem-break.h.  This is a wrapper for delete_gdb_breakpoint that
-   knows to prepare to access memory for Z0 breakpoints.  */
-
-int
-delete_gdb_breakpoint (char z_type, CORE_ADDR addr, int kind)
-{
-  int ret;
-
-  if (!check_gdb_bp_preconditions (z_type, &ret))
-    return ret;
-
-  /* If inserting a software/memory breakpoint, need to prepare to
-     access memory.  */
-  if (z_type == Z_PACKET_SW_BP)
-    {
-      int err;
-
-      err = prepare_to_access_memory ();
-      if (err != 0)
-	return -1;
-    }
-
-  ret = delete_gdb_breakpoint_1 (z_type, addr, kind);
-
-  if (z_type == Z_PACKET_SW_BP)
-    done_accessing_memory ();
-
-  return ret;
-}
-
-/* Clear all conditions associated with a breakpoint.  */
-
-static void
-clear_breakpoint_conditions (struct gdb_breakpoint *bp)
-{
-  struct point_cond_list *cond;
-
-  if (bp->cond_list == NULL)
-    return;
-
-  cond = bp->cond_list;
-
-  while (cond != NULL)
-    {
-      struct point_cond_list *cond_next;
-
-      cond_next = cond->next;
-      gdb_free_agent_expr (cond->cond);
-      free (cond);
-      cond = cond_next;
-    }
-
-  bp->cond_list = NULL;
-}
-
-/* Clear all commands associated with a breakpoint.  */
-
-static void
-clear_breakpoint_commands (struct gdb_breakpoint *bp)
-{
-  struct point_command_list *cmd;
-
-  if (bp->command_list == NULL)
-    return;
-
-  cmd = bp->command_list;
-
-  while (cmd != NULL)
-    {
-      struct point_command_list *cmd_next;
-
-      cmd_next = cmd->next;
-      gdb_free_agent_expr (cmd->cmd);
-      free (cmd);
-      cmd = cmd_next;
-    }
-
-  bp->command_list = NULL;
-}
-
-void
-clear_breakpoint_conditions_and_commands (struct gdb_breakpoint *bp)
-{
-  clear_breakpoint_conditions (bp);
-  clear_breakpoint_commands (bp);
-}
-
-/* Add condition CONDITION to GDBserver's breakpoint BP.  */
-
-static void
-add_condition_to_breakpoint (struct gdb_breakpoint *bp,
-			     struct agent_expr *condition)
-{
-  struct point_cond_list *new_cond;
-
-  /* Create new condition.  */
-  new_cond = XCNEW (struct point_cond_list);
-  new_cond->cond = condition;
-
-  /* Add condition to the list.  */
-  new_cond->next = bp->cond_list;
-  bp->cond_list = new_cond;
-}
-
-/* Add a target-side condition CONDITION to a breakpoint.  */
-
-int
-add_breakpoint_condition (struct gdb_breakpoint *bp, const char **condition)
-{
-  const char *actparm = *condition;
-  struct agent_expr *cond;
-
-  if (condition == NULL)
-    return 1;
-
-  if (bp == NULL)
-    return 0;
-
-  cond = gdb_parse_agent_expr (&actparm);
-
-  if (cond == NULL)
-    {
-      warning ("Condition evaluation failed. Assuming unconditional.");
-      return 0;
-    }
-
-  add_condition_to_breakpoint (bp, cond);
-
-  *condition = actparm;
-
-  return 1;
-}
-
-/* Evaluate condition (if any) at breakpoint BP.  Return 1 if
-   true and 0 otherwise.  */
-
-static int
-gdb_condition_true_at_breakpoint_z_type (char z_type, CORE_ADDR addr)
-{
-  /* Fetch registers for the current inferior.  */
-  struct gdb_breakpoint *bp = find_gdb_breakpoint (z_type, addr, -1);
-  ULONGEST value = 0;
-  struct point_cond_list *cl;
-  int err = 0;
-  struct eval_agent_expr_context ctx;
-
-  if (bp == NULL)
-    return 0;
-
-  /* Check if the breakpoint is unconditional.  If it is,
-     the condition always evaluates to TRUE.  */
-  if (bp->cond_list == NULL)
-    return 1;
-
-  ctx.regcache = get_thread_regcache (current_thread, 1);
-  ctx.tframe = NULL;
-  ctx.tpoint = NULL;
-
-  /* Evaluate each condition in the breakpoint's list of conditions.
-     Return true if any of the conditions evaluates to TRUE.
-
-     If we failed to evaluate the expression, TRUE is returned.  This
-     forces GDB to reevaluate the conditions.  */
-  for (cl = bp->cond_list;
-       cl && !value && !err; cl = cl->next)
-    {
-      /* Evaluate the condition.  */
-      err = gdb_eval_agent_expr (&ctx, cl->cond, &value);
-    }
-
-  if (err)
-    return 1;
-
-  return (value != 0);
-}
-
-int
-gdb_condition_true_at_breakpoint (CORE_ADDR where)
-{
-  /* Only check code (software or hardware) breakpoints.  */
-  return (gdb_condition_true_at_breakpoint_z_type (Z_PACKET_SW_BP, where)
-	  || gdb_condition_true_at_breakpoint_z_type (Z_PACKET_HW_BP, where));
-}
-
-/* Add commands COMMANDS to GDBserver's breakpoint BP.  */
-
-static void
-add_commands_to_breakpoint (struct gdb_breakpoint *bp,
-			    struct agent_expr *commands, int persist)
-{
-  struct point_command_list *new_cmd;
-
-  /* Create new command.  */
-  new_cmd = XCNEW (struct point_command_list);
-  new_cmd->cmd = commands;
-  new_cmd->persistence = persist;
-
-  /* Add commands to the list.  */
-  new_cmd->next = bp->command_list;
-  bp->command_list = new_cmd;
-}
-
-/* Add a target-side command COMMAND to the breakpoint at ADDR.  */
-
-int
-add_breakpoint_commands (struct gdb_breakpoint *bp, const char **command,
-			 int persist)
-{
-  const char *actparm = *command;
-  struct agent_expr *cmd;
-
-  if (command == NULL)
-    return 1;
-
-  if (bp == NULL)
-    return 0;
-
-  cmd = gdb_parse_agent_expr (&actparm);
-
-  if (cmd == NULL)
-    {
-      warning ("Command evaluation failed. Disabling.");
-      return 0;
-    }
-
-  add_commands_to_breakpoint (bp, cmd, persist);
-
-  *command = actparm;
-
-  return 1;
-}
-
-/* Return true if there are no commands to run at this location,
-   which likely means we want to report back to GDB.  */
-
-static int
-gdb_no_commands_at_breakpoint_z_type (char z_type, CORE_ADDR addr)
-{
-  struct gdb_breakpoint *bp = find_gdb_breakpoint (z_type, addr, -1);
-
-  if (bp == NULL)
-    return 1;
-
-  if (debug_threads)
-    debug_printf ("at 0x%s, type Z%c, bp command_list is 0x%s\n",
-		  paddress (addr), z_type,
-		  phex_nz ((uintptr_t) bp->command_list, 0));
-  return (bp->command_list == NULL);
-}
-
-/* Return true if there are no commands to run at this location,
-   which likely means we want to report back to GDB.  */
-
-int
-gdb_no_commands_at_breakpoint (CORE_ADDR where)
-{
-  /* Only check code (software or hardware) breakpoints.  */
-  return (gdb_no_commands_at_breakpoint_z_type (Z_PACKET_SW_BP, where)
-	  && gdb_no_commands_at_breakpoint_z_type (Z_PACKET_HW_BP, where));
-}
-
-/* Run a breakpoint's commands.  Returns 0 if there was a problem
-   running any command, 1 otherwise.  */
-
-static int
-run_breakpoint_commands_z_type (char z_type, CORE_ADDR addr)
-{
-  /* Fetch registers for the current inferior.  */
-  struct gdb_breakpoint *bp = find_gdb_breakpoint (z_type, addr, -1);
-  ULONGEST value = 0;
-  struct point_command_list *cl;
-  int err = 0;
-  struct eval_agent_expr_context ctx;
-
-  if (bp == NULL)
-    return 1;
-
-  ctx.regcache = get_thread_regcache (current_thread, 1);
-  ctx.tframe = NULL;
-  ctx.tpoint = NULL;
-
-  for (cl = bp->command_list;
-       cl && !value && !err; cl = cl->next)
-    {
-      /* Run the command.  */
-      err = gdb_eval_agent_expr (&ctx, cl->cmd, &value);
-
-      /* If one command has a problem, stop digging the hole deeper.  */
-      if (err)
-	return 0;
-    }
-
-  return 1;
-}
-
-void
-run_breakpoint_commands (CORE_ADDR where)
-{
-  /* Only check code (software or hardware) breakpoints.  If one
-     command has a problem, stop digging the hole deeper.  */
-  if (run_breakpoint_commands_z_type (Z_PACKET_SW_BP, where))
-    run_breakpoint_commands_z_type (Z_PACKET_HW_BP, where);
-}
-
-/* See mem-break.h.  */
-
-int
-gdb_breakpoint_here (CORE_ADDR where)
-{
-  /* Only check code (software or hardware) breakpoints.  */
-  return (find_gdb_breakpoint (Z_PACKET_SW_BP, where, -1) != NULL
-	  || find_gdb_breakpoint (Z_PACKET_HW_BP, where, -1) != NULL);
-}
-
-void
-set_single_step_breakpoint (CORE_ADDR stop_at, ptid_t ptid)
-{
-  struct single_step_breakpoint *bp;
-
-  gdb_assert (current_ptid.pid () == ptid.pid ());
-
-  bp = (struct single_step_breakpoint *) set_breakpoint_type_at (single_step_breakpoint,
-								stop_at, NULL);
-  bp->ptid = ptid;
-}
-
-void
-delete_single_step_breakpoints (struct thread_info *thread)
-{
-  struct process_info *proc = get_thread_process (thread);
-  struct breakpoint *bp, **bp_link;
-
-  bp = proc->breakpoints;
-  bp_link = &proc->breakpoints;
-
-  while (bp)
-    {
-      if (bp->type == single_step_breakpoint
-	  && ((struct single_step_breakpoint *) bp)->ptid == ptid_of (thread))
-	{
-	  struct thread_info *saved_thread = current_thread;
-
-	  current_thread = thread;
-	  *bp_link = bp->next;
-	  release_breakpoint (proc, bp);
-	  bp = *bp_link;
-	  current_thread = saved_thread;
-	}
-      else
-	{
-	  bp_link = &bp->next;
-	  bp = *bp_link;
-	}
-    }
-}
-
-static void
-uninsert_raw_breakpoint (struct raw_breakpoint *bp)
-{
-  if (bp->inserted < 0)
-    {
-      if (debug_threads)
-	debug_printf ("Breakpoint at %s is marked insert-disabled.\n",
-		      paddress (bp->pc));
-    }
-  else if (bp->inserted > 0)
-    {
-      int err;
-
-      bp->inserted = 0;
-
-      err = the_target->remove_point (bp->raw_type, bp->pc, bp->kind, bp);
-      if (err != 0)
-	{
-	  bp->inserted = 1;
-
-	  if (debug_threads)
-	    debug_printf ("Failed to uninsert raw breakpoint at 0x%s.\n",
-			  paddress (bp->pc));
-	}
-    }
-}
-
-void
-uninsert_breakpoints_at (CORE_ADDR pc)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-  int found = 0;
-
-  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
-    if ((bp->raw_type == raw_bkpt_type_sw
-	 || bp->raw_type == raw_bkpt_type_hw)
-	&& bp->pc == pc)
-      {
-	found = 1;
-
-	if (bp->inserted)
-	  uninsert_raw_breakpoint (bp);
-      }
-
-  if (!found)
-    {
-      /* This can happen when we remove all breakpoints while handling
-	 a step-over.  */
-      if (debug_threads)
-	debug_printf ("Could not find breakpoint at 0x%s "
-		      "in list (uninserting).\n",
-		      paddress (pc));
-    }
-}
-
-void
-uninsert_all_breakpoints (void)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-
-  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
-    if ((bp->raw_type == raw_bkpt_type_sw
-	 || bp->raw_type == raw_bkpt_type_hw)
-	&& bp->inserted)
-      uninsert_raw_breakpoint (bp);
-}
-
-void
-uninsert_single_step_breakpoints (struct thread_info *thread)
-{
-  struct process_info *proc = get_thread_process (thread);
-  struct breakpoint *bp;
-
-  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
-    {
-    if (bp->type == single_step_breakpoint
-	&& ((struct single_step_breakpoint *) bp)->ptid == ptid_of (thread))
-      {
-	gdb_assert (bp->raw->inserted > 0);
-
-	/* Only uninsert the raw breakpoint if it only belongs to a
-	   reinsert breakpoint.  */
-	if (bp->raw->refcount == 1)
-	  {
-	    struct thread_info *saved_thread = current_thread;
-
-	    current_thread = thread;
-	    uninsert_raw_breakpoint (bp->raw);
-	    current_thread = saved_thread;
-	  }
-      }
-    }
-}
-
-static void
-reinsert_raw_breakpoint (struct raw_breakpoint *bp)
-{
-  int err;
-
-  if (bp->inserted)
-    return;
-
-  err = the_target->insert_point (bp->raw_type, bp->pc, bp->kind, bp);
-  if (err == 0)
-    bp->inserted = 1;
-  else if (debug_threads)
-    debug_printf ("Failed to reinsert breakpoint at 0x%s (%d).\n",
-		  paddress (bp->pc), err);
-}
-
-void
-reinsert_breakpoints_at (CORE_ADDR pc)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-  int found = 0;
-
-  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
-    if ((bp->raw_type == raw_bkpt_type_sw
-	 || bp->raw_type == raw_bkpt_type_hw)
-	&& bp->pc == pc)
-      {
-	found = 1;
-
-	reinsert_raw_breakpoint (bp);
-      }
-
-  if (!found)
-    {
-      /* This can happen when we remove all breakpoints while handling
-	 a step-over.  */
-      if (debug_threads)
-	debug_printf ("Could not find raw breakpoint at 0x%s "
-		      "in list (reinserting).\n",
-		      paddress (pc));
-    }
-}
-
-int
-has_single_step_breakpoints (struct thread_info *thread)
-{
-  struct process_info *proc = get_thread_process (thread);
-  struct breakpoint *bp, **bp_link;
-
-  bp = proc->breakpoints;
-  bp_link = &proc->breakpoints;
-
-  while (bp)
-    {
-      if (bp->type == single_step_breakpoint
-	  && ((struct single_step_breakpoint *) bp)->ptid == ptid_of (thread))
-	return 1;
-      else
-	{
-	  bp_link = &bp->next;
-	  bp = *bp_link;
-	}
-    }
-
-  return 0;
-}
-
-void
-reinsert_all_breakpoints (void)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-
-  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
-    if ((bp->raw_type == raw_bkpt_type_sw
-	 || bp->raw_type == raw_bkpt_type_hw)
-	&& !bp->inserted)
-      reinsert_raw_breakpoint (bp);
-}
-
-void
-reinsert_single_step_breakpoints (struct thread_info *thread)
-{
-  struct process_info *proc = get_thread_process (thread);
-  struct breakpoint *bp;
-
-  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
-    {
-      if (bp->type == single_step_breakpoint
-	  && ((struct single_step_breakpoint *) bp)->ptid == ptid_of (thread))
-	{
-	  gdb_assert (bp->raw->inserted > 0);
-
-	  if (bp->raw->refcount == 1)
-	    {
-	      struct thread_info *saved_thread = current_thread;
-
-	      current_thread = thread;
-	      reinsert_raw_breakpoint (bp->raw);
-	      current_thread = saved_thread;
-	    }
-	}
-    }
-}
-
-void
-check_breakpoints (CORE_ADDR stop_pc)
-{
-  struct process_info *proc = current_process ();
-  struct breakpoint *bp, **bp_link;
-
-  bp = proc->breakpoints;
-  bp_link = &proc->breakpoints;
-
-  while (bp)
-    {
-      struct raw_breakpoint *raw = bp->raw;
-
-      if ((raw->raw_type == raw_bkpt_type_sw
-	   || raw->raw_type == raw_bkpt_type_hw)
-	  && raw->pc == stop_pc)
-	{
-	  if (!raw->inserted)
-	    {
-	      warning ("Hit a removed breakpoint?");
-	      return;
-	    }
-
-	  if (bp->type == other_breakpoint)
-	    {
-	      struct other_breakpoint *other_bp
-		= (struct other_breakpoint *) bp;
-
-	      if (other_bp->handler != NULL && (*other_bp->handler) (stop_pc))
-		{
-		  *bp_link = bp->next;
-
-		  release_breakpoint (proc, bp);
-
-		  bp = *bp_link;
-		  continue;
-		}
-	    }
-	}
-
-      bp_link = &bp->next;
-      bp = *bp_link;
-    }
-}
-
-int
-breakpoint_here (CORE_ADDR addr)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-
-  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
-    if ((bp->raw_type == raw_bkpt_type_sw
-	 || bp->raw_type == raw_bkpt_type_hw)
-	&& bp->pc == addr)
-      return 1;
-
-  return 0;
-}
-
-int
-breakpoint_inserted_here (CORE_ADDR addr)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-
-  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
-    if ((bp->raw_type == raw_bkpt_type_sw
-	 || bp->raw_type == raw_bkpt_type_hw)
-	&& bp->pc == addr
-	&& bp->inserted)
-      return 1;
-
-  return 0;
-}
-
-/* See mem-break.h.  */
-
-int
-software_breakpoint_inserted_here (CORE_ADDR addr)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-
-  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
-    if (bp->raw_type == raw_bkpt_type_sw
-	&& bp->pc == addr
-	&& bp->inserted)
-      return 1;
-
-  return 0;
-}
-
-/* See mem-break.h.  */
-
-int
-hardware_breakpoint_inserted_here (CORE_ADDR addr)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp;
-
-  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
-    if (bp->raw_type == raw_bkpt_type_hw
-	&& bp->pc == addr
-	&& bp->inserted)
-      return 1;
-
-  return 0;
-}
-
-/* See mem-break.h.  */
-
-int
-single_step_breakpoint_inserted_here (CORE_ADDR addr)
-{
-  struct process_info *proc = current_process ();
-  struct breakpoint *bp;
-
-  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
-    if (bp->type == single_step_breakpoint
-	&& bp->raw->pc == addr
-	&& bp->raw->inserted)
-      return 1;
-
-  return 0;
-}
-
-static int
-validate_inserted_breakpoint (struct raw_breakpoint *bp)
-{
-  unsigned char *buf;
-  int err;
-
-  gdb_assert (bp->inserted);
-  gdb_assert (bp->raw_type == raw_bkpt_type_sw);
-
-  buf = (unsigned char *) alloca (bp_size (bp));
-  err = (*the_target->read_memory) (bp->pc, buf, bp_size (bp));
-  if (err || memcmp (buf, bp_opcode (bp), bp_size (bp)) != 0)
-    {
-      /* Tag it as gone.  */
-      bp->inserted = -1;
-      return 0;
-    }
-
-  return 1;
-}
-
-static void
-delete_disabled_breakpoints (void)
-{
-  struct process_info *proc = current_process ();
-  struct breakpoint *bp, *next;
-
-  for (bp = proc->breakpoints; bp != NULL; bp = next)
-    {
-      next = bp->next;
-      if (bp->raw->inserted < 0)
-	{
-	  /* If single_step_breakpoints become disabled, that means the
-	     manipulations (insertion and removal) of them are wrong.  */
-	  gdb_assert (bp->type != single_step_breakpoint);
-	  delete_breakpoint_1 (proc, bp);
-	}
-    }
-}
-
-/* Check if breakpoints we inserted still appear to be inserted.  They
-   may disappear due to a shared library unload, and worse, a new
-   shared library may be reloaded at the same address as the
-   previously unloaded one.  If that happens, we should make sure that
-   the shadow memory of the old breakpoints isn't used when reading or
-   writing memory.  */
-
-void
-validate_breakpoints (void)
-{
-  struct process_info *proc = current_process ();
-  struct breakpoint *bp;
-
-  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
-    {
-      struct raw_breakpoint *raw = bp->raw;
-
-      if (raw->raw_type == raw_bkpt_type_sw && raw->inserted > 0)
-	validate_inserted_breakpoint (raw);
-    }
-
-  delete_disabled_breakpoints ();
-}
-
-void
-check_mem_read (CORE_ADDR mem_addr, unsigned char *buf, int mem_len)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp = proc->raw_breakpoints;
-  struct fast_tracepoint_jump *jp = proc->fast_tracepoint_jumps;
-  CORE_ADDR mem_end = mem_addr + mem_len;
-  int disabled_one = 0;
-
-  for (; jp != NULL; jp = jp->next)
-    {
-      CORE_ADDR bp_end = jp->pc + jp->length;
-      CORE_ADDR start, end;
-      int copy_offset, copy_len, buf_offset;
-
-      gdb_assert (fast_tracepoint_jump_shadow (jp) >= buf + mem_len
-		  || buf >= fast_tracepoint_jump_shadow (jp) + (jp)->length);
-
-      if (mem_addr >= bp_end)
-	continue;
-      if (jp->pc >= mem_end)
-	continue;
-
-      start = jp->pc;
-      if (mem_addr > start)
-	start = mem_addr;
-
-      end = bp_end;
-      if (end > mem_end)
-	end = mem_end;
-
-      copy_len = end - start;
-      copy_offset = start - jp->pc;
-      buf_offset = start - mem_addr;
-
-      if (jp->inserted)
-	memcpy (buf + buf_offset,
-		fast_tracepoint_jump_shadow (jp) + copy_offset,
-		copy_len);
-    }
-
-  for (; bp != NULL; bp = bp->next)
-    {
-      CORE_ADDR bp_end = bp->pc + bp_size (bp);
-      CORE_ADDR start, end;
-      int copy_offset, copy_len, buf_offset;
-
-      if (bp->raw_type != raw_bkpt_type_sw)
-	continue;
-
-      gdb_assert (bp->old_data >= buf + mem_len
-		  || buf >= &bp->old_data[sizeof (bp->old_data)]);
-
-      if (mem_addr >= bp_end)
-	continue;
-      if (bp->pc >= mem_end)
-	continue;
-
-      start = bp->pc;
-      if (mem_addr > start)
-	start = mem_addr;
-
-      end = bp_end;
-      if (end > mem_end)
-	end = mem_end;
-
-      copy_len = end - start;
-      copy_offset = start - bp->pc;
-      buf_offset = start - mem_addr;
-
-      if (bp->inserted > 0)
-	{
-	  if (validate_inserted_breakpoint (bp))
-	    memcpy (buf + buf_offset, bp->old_data + copy_offset, copy_len);
-	  else
-	    disabled_one = 1;
-	}
-    }
-
-  if (disabled_one)
-    delete_disabled_breakpoints ();
-}
-
-void
-check_mem_write (CORE_ADDR mem_addr, unsigned char *buf,
-		 const unsigned char *myaddr, int mem_len)
-{
-  struct process_info *proc = current_process ();
-  struct raw_breakpoint *bp = proc->raw_breakpoints;
-  struct fast_tracepoint_jump *jp = proc->fast_tracepoint_jumps;
-  CORE_ADDR mem_end = mem_addr + mem_len;
-  int disabled_one = 0;
-
-  /* First fast tracepoint jumps, then breakpoint traps on top.  */
-
-  for (; jp != NULL; jp = jp->next)
-    {
-      CORE_ADDR jp_end = jp->pc + jp->length;
-      CORE_ADDR start, end;
-      int copy_offset, copy_len, buf_offset;
-
-      gdb_assert (fast_tracepoint_jump_shadow (jp) >= myaddr + mem_len
-		  || myaddr >= fast_tracepoint_jump_shadow (jp) + (jp)->length);
-      gdb_assert (fast_tracepoint_jump_insn (jp) >= buf + mem_len
-		  || buf >= fast_tracepoint_jump_insn (jp) + (jp)->length);
-
-      if (mem_addr >= jp_end)
-	continue;
-      if (jp->pc >= mem_end)
-	continue;
-
-      start = jp->pc;
-      if (mem_addr > start)
-	start = mem_addr;
-
-      end = jp_end;
-      if (end > mem_end)
-	end = mem_end;
-
-      copy_len = end - start;
-      copy_offset = start - jp->pc;
-      buf_offset = start - mem_addr;
-
-      memcpy (fast_tracepoint_jump_shadow (jp) + copy_offset,
-	      myaddr + buf_offset, copy_len);
-      if (jp->inserted)
-	memcpy (buf + buf_offset,
-		fast_tracepoint_jump_insn (jp) + copy_offset, copy_len);
-    }
-
-  for (; bp != NULL; bp = bp->next)
-    {
-      CORE_ADDR bp_end = bp->pc + bp_size (bp);
-      CORE_ADDR start, end;
-      int copy_offset, copy_len, buf_offset;
-
-      if (bp->raw_type != raw_bkpt_type_sw)
-	continue;
-
-      gdb_assert (bp->old_data >= myaddr + mem_len
-		  || myaddr >= &bp->old_data[sizeof (bp->old_data)]);
-
-      if (mem_addr >= bp_end)
-	continue;
-      if (bp->pc >= mem_end)
-	continue;
-
-      start = bp->pc;
-      if (mem_addr > start)
-	start = mem_addr;
-
-      end = bp_end;
-      if (end > mem_end)
-	end = mem_end;
-
-      copy_len = end - start;
-      copy_offset = start - bp->pc;
-      buf_offset = start - mem_addr;
-
-      memcpy (bp->old_data + copy_offset, myaddr + buf_offset, copy_len);
-      if (bp->inserted > 0)
-	{
-	  if (validate_inserted_breakpoint (bp))
-	    memcpy (buf + buf_offset, bp_opcode (bp) + copy_offset, copy_len);
-	  else
-	    disabled_one = 1;
-	}
-    }
-
-  if (disabled_one)
-    delete_disabled_breakpoints ();
-}
-
-/* Delete all breakpoints, and un-insert them from the inferior.  */
-
-void
-delete_all_breakpoints (void)
-{
-  struct process_info *proc = current_process ();
-
-  while (proc->breakpoints)
-    delete_breakpoint_1 (proc, proc->breakpoints);
-}
-
-/* Clear the "inserted" flag in all breakpoints.  */
-
-void
-mark_breakpoints_out (struct process_info *proc)
-{
-  struct raw_breakpoint *raw_bp;
-
-  for (raw_bp = proc->raw_breakpoints; raw_bp != NULL; raw_bp = raw_bp->next)
-    raw_bp->inserted = 0;
-}
-
-/* Release all breakpoints, but do not try to un-insert them from the
-   inferior.  */
-
-void
-free_all_breakpoints (struct process_info *proc)
-{
-  mark_breakpoints_out (proc);
-
-  /* Note: use PROC explicitly instead of deferring to
-     delete_all_breakpoints --- CURRENT_INFERIOR may already have been
-     released when we get here.  There should be no call to
-     current_process from here on.  */
-  while (proc->breakpoints)
-    delete_breakpoint_1 (proc, proc->breakpoints);
-}
-
-/* Clone an agent expression.  */
-
-static struct agent_expr *
-clone_agent_expr (const struct agent_expr *src_ax)
-{
-  struct agent_expr *ax;
-
-  ax = XCNEW (struct agent_expr);
-  ax->length = src_ax->length;
-  ax->bytes = (unsigned char *) xcalloc (ax->length, 1);
-  memcpy (ax->bytes, src_ax->bytes, ax->length);
-  return ax;
-}
-
-/* Deep-copy the contents of one breakpoint to another.  */
-
-static struct breakpoint *
-clone_one_breakpoint (const struct breakpoint *src, ptid_t ptid)
-{
-  struct breakpoint *dest;
-  struct raw_breakpoint *dest_raw;
-
-  /* Clone the raw breakpoint.  */
-  dest_raw = XCNEW (struct raw_breakpoint);
-  dest_raw->raw_type = src->raw->raw_type;
-  dest_raw->refcount = src->raw->refcount;
-  dest_raw->pc = src->raw->pc;
-  dest_raw->kind = src->raw->kind;
-  memcpy (dest_raw->old_data, src->raw->old_data, MAX_BREAKPOINT_LEN);
-  dest_raw->inserted = src->raw->inserted;
-
-  /* Clone the high-level breakpoint.  */
-  if (is_gdb_breakpoint (src->type))
-    {
-      struct gdb_breakpoint *gdb_dest = XCNEW (struct gdb_breakpoint);
-      struct point_cond_list *current_cond;
-      struct point_cond_list *new_cond;
-      struct point_cond_list *cond_tail = NULL;
-      struct point_command_list *current_cmd;
-      struct point_command_list *new_cmd;
-      struct point_command_list *cmd_tail = NULL;
-
-      /* Clone the condition list.  */
-      for (current_cond = ((struct gdb_breakpoint *) src)->cond_list;
-	   current_cond != NULL;
-	   current_cond = current_cond->next)
-	{
-	  new_cond = XCNEW (struct point_cond_list);
-	  new_cond->cond = clone_agent_expr (current_cond->cond);
-	  APPEND_TO_LIST (&gdb_dest->cond_list, new_cond, cond_tail);
-	}
-
-      /* Clone the command list.  */
-      for (current_cmd = ((struct gdb_breakpoint *) src)->command_list;
-	   current_cmd != NULL;
-	   current_cmd = current_cmd->next)
-	{
-	  new_cmd = XCNEW (struct point_command_list);
-	  new_cmd->cmd = clone_agent_expr (current_cmd->cmd);
-	  new_cmd->persistence = current_cmd->persistence;
-	  APPEND_TO_LIST (&gdb_dest->command_list, new_cmd, cmd_tail);
-	}
-
-      dest = (struct breakpoint *) gdb_dest;
-    }
-  else if (src->type == other_breakpoint)
-    {
-      struct other_breakpoint *other_dest = XCNEW (struct other_breakpoint);
-
-      other_dest->handler = ((struct other_breakpoint *) src)->handler;
-      dest = (struct breakpoint *) other_dest;
-    }
-  else if (src->type == single_step_breakpoint)
-    {
-      struct single_step_breakpoint *ss_dest
-	= XCNEW (struct single_step_breakpoint);
-
-      dest = (struct breakpoint *) ss_dest;
-      /* Since single-step breakpoint is thread specific, don't copy
-	 thread id from SRC, use ID instead.  */
-      ss_dest->ptid = ptid;
-    }
-  else
-    gdb_assert_not_reached ("unhandled breakpoint type");
-
-  dest->type = src->type;
-  dest->raw = dest_raw;
-
-  return dest;
-}
-
-/* See mem-break.h.  */
-
-void
-clone_all_breakpoints (struct thread_info *child_thread,
-		       const struct thread_info *parent_thread)
-{
-  const struct breakpoint *bp;
-  struct breakpoint *new_bkpt;
-  struct breakpoint *bkpt_tail = NULL;
-  struct raw_breakpoint *raw_bkpt_tail = NULL;
-  struct process_info *child_proc = get_thread_process (child_thread);
-  struct process_info *parent_proc = get_thread_process (parent_thread);
-  struct breakpoint **new_list = &child_proc->breakpoints;
-  struct raw_breakpoint **new_raw_list = &child_proc->raw_breakpoints;
-
-  for (bp = parent_proc->breakpoints; bp != NULL; bp = bp->next)
-    {
-      new_bkpt = clone_one_breakpoint (bp, ptid_of (child_thread));
-      APPEND_TO_LIST (new_list, new_bkpt, bkpt_tail);
-      APPEND_TO_LIST (new_raw_list, new_bkpt->raw, raw_bkpt_tail);
-    }
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/mem-break.h ./gdb/gdbserver/mem-break.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/mem-break.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/mem-break.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,279 +0,0 @@
-/* Memory breakpoint interfaces for the remote server for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
-
-   Contributed by MontaVista Software.
-
-   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 GDBSERVER_MEM_BREAK_H
-#define GDBSERVER_MEM_BREAK_H
-
-#include "gdbsupport/break-common.h"
-
-/* Breakpoints are opaque.  */
-struct breakpoint;
-struct gdb_breakpoint;
-struct fast_tracepoint_jump;
-struct raw_breakpoint;
-struct process_info;
-
-#define Z_PACKET_SW_BP '0'
-#define Z_PACKET_HW_BP '1'
-#define Z_PACKET_WRITE_WP '2'
-#define Z_PACKET_READ_WP '3'
-#define Z_PACKET_ACCESS_WP '4'
-
-/* The low level breakpoint types.  */
-
-enum raw_bkpt_type
-  {
-    /* Software/memory breakpoint.  */
-    raw_bkpt_type_sw,
-
-    /* Hardware-assisted breakpoint.  */
-    raw_bkpt_type_hw,
-
-    /* Hardware-assisted write watchpoint.  */
-    raw_bkpt_type_write_wp,
-
-    /* Hardware-assisted read watchpoint.  */
-    raw_bkpt_type_read_wp,
-
-    /* Hardware-assisted access watchpoint.  */
-    raw_bkpt_type_access_wp
-  };
-
-/* Map the protocol breakpoint/watchpoint type Z_TYPE to the internal
-   raw breakpoint type.  */
-
-enum raw_bkpt_type Z_packet_to_raw_bkpt_type (char z_type);
-
-/* Map a raw breakpoint type to an enum target_hw_bp_type.  */
-
-enum target_hw_bp_type raw_bkpt_type_to_target_hw_bp_type
-  (enum raw_bkpt_type raw_type);
-
-/* Create a new GDB breakpoint of type Z_TYPE at ADDR with kind KIND.
-   Returns a pointer to the newly created breakpoint on success.  On
-   failure returns NULL and sets *ERR to either -1 for error, or 1 if
-   Z_TYPE breakpoints are not supported on this target.  */
-
-struct gdb_breakpoint *set_gdb_breakpoint (char z_type, CORE_ADDR addr,
-					   int kind, int *err);
-
-/* Delete a GDB breakpoint of type Z_TYPE and kind KIND previously
-   inserted at ADDR with set_gdb_breakpoint_at.  Returns 0 on success,
-   -1 on error, and 1 if Z_TYPE breakpoints are not supported on this
-   target.  */
-
-int delete_gdb_breakpoint (char z_type, CORE_ADDR addr, int kind);
-
-/* Returns TRUE if there's a software or hardware (code) breakpoint at
-   ADDR in our tables, inserted, or not.  */
-
-int breakpoint_here (CORE_ADDR addr);
-
-/* Returns TRUE if there's any inserted software or hardware (code)
-   breakpoint set at ADDR.  */
-
-int breakpoint_inserted_here (CORE_ADDR addr);
-
-/* Returns TRUE if there's any inserted software breakpoint at
-   ADDR.  */
-
-int software_breakpoint_inserted_here (CORE_ADDR addr);
-
-/* Returns TRUE if there's any inserted hardware (code) breakpoint at
-   ADDR.  */
-
-int hardware_breakpoint_inserted_here (CORE_ADDR addr);
-
-/* Returns TRUE if there's any single-step breakpoint at ADDR.  */
-
-int single_step_breakpoint_inserted_here (CORE_ADDR addr);
-
-/* Clear all breakpoint conditions and commands associated with a
-   breakpoint.  */
-
-void clear_breakpoint_conditions_and_commands (struct gdb_breakpoint *bp);
-
-/* Set target-side condition CONDITION to the breakpoint at ADDR.
-   Returns false on failure.  On success, advances CONDITION pointer
-   past the condition and returns true.  */
-
-int add_breakpoint_condition (struct gdb_breakpoint *bp,
-			      const char **condition);
-
-/* Set target-side commands COMMANDS to the breakpoint at ADDR.
-   Returns false on failure.  On success, advances COMMANDS past the
-   commands and returns true.  If PERSIST, the commands should run
-   even while GDB is disconnected.  */
-
-int add_breakpoint_commands (struct gdb_breakpoint *bp, const char **commands,
-			     int persist);
-
-/* Return true if PROC has any persistent command.  */
-bool any_persistent_commands (process_info *proc);
-
-/* Evaluation condition (if any) at breakpoint BP.  Return 1 if
-   true and 0 otherwise.  */
-
-int gdb_condition_true_at_breakpoint (CORE_ADDR where);
-
-int gdb_no_commands_at_breakpoint (CORE_ADDR where);
-
-void run_breakpoint_commands (CORE_ADDR where);
-
-/* Returns TRUE if there's a GDB breakpoint (Z0 or Z1) set at
-   WHERE.  */
-
-int gdb_breakpoint_here (CORE_ADDR where);
-
-/* Create a new breakpoint at WHERE, and call HANDLER when
-   it is hit.  HANDLER should return 1 if the breakpoint
-   should be deleted, 0 otherwise.  The type of the created
-   breakpoint is other_breakpoint.  */
-
-struct breakpoint *set_breakpoint_at (CORE_ADDR where,
-				      int (*handler) (CORE_ADDR));
-
-/* Delete a breakpoint.  */
-
-int delete_breakpoint (struct breakpoint *bkpt);
-
-/* Set a single-step breakpoint at STOP_AT for thread represented by
-   PTID.  */
-
-void set_single_step_breakpoint (CORE_ADDR stop_at, ptid_t ptid);
-
-/* Delete all single-step breakpoints of THREAD.  */
-
-void delete_single_step_breakpoints (struct thread_info *thread);
-
-/* Reinsert all single-step breakpoints of THREAD.  */
-
-void reinsert_single_step_breakpoints (struct thread_info *thread);
-
-/* Uninsert all single-step breakpoints of THREAD.  This still leaves
-   the single-step breakpoints in the table.  */
-
-void uninsert_single_step_breakpoints (struct thread_info *thread);
-
-/* Reinsert breakpoints at WHERE (and change their status to
-   inserted).  */
-
-void reinsert_breakpoints_at (CORE_ADDR where);
-
-/* The THREAD has single-step breakpoints or not.  */
-
-int has_single_step_breakpoints (struct thread_info *thread);
-
-/* Uninsert breakpoints at WHERE (and change their status to
-   uninserted).  This still leaves the breakpoints in the table.  */
-
-void uninsert_breakpoints_at (CORE_ADDR where);
-
-/* Reinsert all breakpoints of the current process (and change their
-   status to inserted).  */
-
-void reinsert_all_breakpoints (void);
-
-/* Uninsert all breakpoints of the current process (and change their
-   status to uninserted).  This still leaves the breakpoints in the
-   table.  */
-
-void uninsert_all_breakpoints (void);
-
-/* See if any breakpoint claims ownership of STOP_PC.  Call the handler for
-   the breakpoint, if found.  */
-
-void check_breakpoints (CORE_ADDR stop_pc);
-
-/* See if any breakpoints shadow the target memory area from MEM_ADDR
-   to MEM_ADDR + MEM_LEN.  Update the data already read from the target
-   (in BUF) if necessary.  */
-
-void check_mem_read (CORE_ADDR mem_addr, unsigned char *buf, int mem_len);
-
-/* See if any breakpoints shadow the target memory area from MEM_ADDR
-   to MEM_ADDR + MEM_LEN.  Update the data to be written to the target
-   (in BUF, a copy of MYADDR on entry) if necessary, as well as the
-   original data for any breakpoints.  */
-
-void check_mem_write (CORE_ADDR mem_addr,
-		      unsigned char *buf, const unsigned char *myaddr, int mem_len);
-
-/* Delete all breakpoints.  */
-
-void delete_all_breakpoints (void);
-
-/* Clear the "inserted" flag in all breakpoints of PROC.  */
-
-void mark_breakpoints_out (struct process_info *proc);
-
-/* Delete all breakpoints, but do not try to un-insert them from the
-   inferior.  */
-
-void free_all_breakpoints (struct process_info *proc);
-
-/* Check if breakpoints still seem to be inserted in the inferior.  */
-
-void validate_breakpoints (void);
-
-/* Insert a fast tracepoint jump at WHERE, using instruction INSN, of
-   LENGTH bytes.  */
-
-struct fast_tracepoint_jump *set_fast_tracepoint_jump (CORE_ADDR where,
-						       unsigned char *insn,
-						       ULONGEST length);
-
-/* Increment reference counter of JP.  */
-void inc_ref_fast_tracepoint_jump (struct fast_tracepoint_jump *jp);
-
-/* Delete fast tracepoint jump TODEL from our tables, and uninsert if
-   from memory.  */
-
-int delete_fast_tracepoint_jump (struct fast_tracepoint_jump *todel);
-
-/* Returns true if there's fast tracepoint jump set at WHERE.  */
-
-int fast_tracepoint_jump_here (CORE_ADDR);
-
-/* Uninsert fast tracepoint jumps at WHERE (and change their status to
-   uninserted).  This still leaves the tracepoints in the table.  */
-
-void uninsert_fast_tracepoint_jumps_at (CORE_ADDR pc);
-
-/* Reinsert fast tracepoint jumps at WHERE (and change their status to
-   inserted).  */
-
-void reinsert_fast_tracepoint_jumps_at (CORE_ADDR where);
-
-/* Insert a memory breakpoint.  */
-
-int insert_memory_breakpoint (struct raw_breakpoint *bp);
-
-/* Remove a previously inserted memory breakpoint.  */
-
-int remove_memory_breakpoint (struct raw_breakpoint *bp);
-
-/* Create a new breakpoint list in CHILD_THREAD's process that is a
-   copy of breakpoint list in PARENT_THREAD's process.  */
-
-void clone_all_breakpoints (struct thread_info *child_thread,
-			    const struct thread_info *parent_thread);
-
-#endif /* GDBSERVER_MEM_BREAK_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/notif.c ./gdb/gdbserver/notif.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/notif.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/notif.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,154 +0,0 @@
-/* Notification to GDB.
-   Copyright (C) 1989-2020 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/>.  */
-
-/* Async notifications to GDB.  When the state of remote target is
-   changed or something interesting to GDB happened, async
-   notifications are used to tell GDB.
-
-   Each type of notification is represented by an object
-   'struct notif_server', in which there is a queue for events to GDB
-   represented by 'struct notif_event'.  GDBserver writes (by means of
-   'write' field) each event in the queue into the buffer and send the
-   contents in buffer to GDB.  The contents in buffer is specified in
-   RSP.  See more in the comments to field 'queue' of
-   'struct notif_server'.
-
-   Here is the workflow of sending events and managing queue:
-   1.  At any time, when something interesting FOO happens, a object
-   of 'struct notif_event' or its sub-class EVENT is created for FOO.
-
-   2.  Enque EVENT to the 'queue' field of 'struct notif_server' for
-   FOO and send corresponding notification packet to GDB if EVENT is
-   the first one.
-   #1 and #2 are done by function 'notif_push'.
-
-   3.  EVENT is not deque'ed until the ack of FOO from GDB arrives.
-   Before ack of FOO arrives, FOO happens again, a new object of
-   EVENT is created and enque EVENT silently.
-   Once GDB has a chance to ack to FOO, it sends an ack to GDBserver,
-   and GDBserver repeatedly sends events to GDB and gets ack of FOO,
-   until queue is empty.  Then, GDBserver sends 'OK' to GDB that all
-   queued notification events are done.
-
-   # 3 is done by function 'handle_notif_ack'.  */
-
-#include "server.h"
-#include "notif.h"
-
-static struct notif_server *notifs[] =
-{
-  &notif_stop,
-};
-
-/* Write another event or an OK, if there are no more left, to
-   OWN_BUF.  */
-
-void
-notif_write_event (struct notif_server *notif, char *own_buf)
-{
-  if (!notif->queue.empty ())
-    {
-      struct notif_event *event = notif->queue.front ();
-
-      notif->write (event, own_buf);
-    }
-  else
-    write_ok (own_buf);
-}
-
-/* Handle the ack in buffer OWN_BUF,and packet length is PACKET_LEN.
-   Return 1 if the ack is handled, and return 0 if the contents
-   in OWN_BUF is not a ack.  */
-
-int
-handle_notif_ack (char *own_buf, int packet_len)
-{
-  size_t i;
-  struct notif_server *np;
-
-  for (i = 0; i < ARRAY_SIZE (notifs); i++)
-    {
-      const char *ack_name = notifs[i]->ack_name;
-
-      if (startswith (own_buf, ack_name)
-	  && packet_len == strlen (ack_name))
-	break;
-    }
-
-  if (i == ARRAY_SIZE (notifs))
-    return 0;
-
-  np = notifs[i];
-
-  /* If we're waiting for GDB to acknowledge a pending event,
-     consider that done.  */
-  if (!np->queue.empty ())
-    {
-      struct notif_event *head = np->queue.front ();
-      np->queue.pop_front ();
-
-      if (remote_debug)
-	debug_printf ("%s: acking %d\n", np->ack_name,
-		      (int) np->queue.size ());
-
-      delete head;
-    }
-
-  notif_write_event (np, own_buf);
-
-  return 1;
-}
-
-/* Put EVENT to the queue of NOTIF.  */
-
-void
-notif_event_enque (struct notif_server *notif,
-		   struct notif_event *event)
-{
-  notif->queue.push_back (event);
-
-  if (remote_debug)
-    debug_printf ("pending events: %s %d\n", notif->notif_name,
-		  (int) notif->queue.size ());
-
-}
-
-/* Push one event NEW_EVENT of notification NP into NP->queue.  */
-
-void
-notif_push (struct notif_server *np, struct notif_event *new_event)
-{
-  bool is_first_event = np->queue.empty ();
-
-  /* Something interesting.  Tell GDB about it.  */
-  notif_event_enque (np, new_event);
-
-  /* If this is the first stop reply in the queue, then inform GDB
-     about it, by sending a corresponding notification.  */
-  if (is_first_event)
-    {
-      char buf[PBUFSIZ];
-      char *p = buf;
-
-      xsnprintf (p, PBUFSIZ, "%s:", np->notif_name);
-      p += strlen (p);
-
-      np->write (new_event, p);
-      putpkt_notif (buf);
-    }
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/notif.h ./gdb/gdbserver/notif.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/notif.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/notif.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,68 +0,0 @@
-/* Notification to GDB.
-   Copyright (C) 1989-2020 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 GDBSERVER_NOTIF_H
-#define GDBSERVER_NOTIF_H
-
-#include "target.h"
-#include <list>
-
-/* Structure holding information related to a single event.  We
-   keep a queue of these to push to GDB.  It can be extended if
-   the event of given notification contains more information.  */
-
-struct notif_event
-{
-  virtual ~notif_event ()
-  {
-  }
-
-  /* No payload needed.  */
-};
-
-/* A type notification to GDB.  An object of 'struct notif_server'
-   represents a type of notification.  */
-
-typedef struct notif_server
-{
-  /* The name of ack packet, for example, 'vStopped'.  */
-  const char *ack_name;
-
-  /* The notification packet, for example, '%Stop'.  Note that '%' is
-     not in 'notif_name'.  */
-  const char *notif_name;
-
-  /* A queue of events to GDB.  A new notif_event can be enque'ed
-     into QUEUE at any appropriate time, and the notif_reply is
-     deque'ed only when the ack from GDB arrives.  */
-  std::list<notif_event *> queue;
-
-  /* Write event EVENT to OWN_BUF.  */
-  void (*write) (struct notif_event *event, char *own_buf);
-} *notif_server_p;
-
-extern struct notif_server notif_stop;
-
-int handle_notif_ack (char *own_buf, int packet_len);
-void notif_write_event (struct notif_server *notif, char *own_buf);
-
-void notif_push (struct notif_server *np, struct notif_event *event);
-void notif_event_enque (struct notif_server *notif,
-			struct notif_event *event);
-
-#endif /* GDBSERVER_NOTIF_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/nto-low.c ./gdb/gdbserver/nto-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/nto-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/nto-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,1026 +0,0 @@
-/* QNX Neutrino specific low level interface, for the remote server
-   for GDB.
-   Copyright (C) 2009-2020 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 "server.h"
-#include "gdbthread.h"
-#include "nto-low.h"
-#include "hostio.h"
-#include "debug.h"
-
-#include <limits.h>
-#include <fcntl.h>
-#include <spawn.h>
-#include <sys/procfs.h>
-#include <sys/auxv.h>
-#include <sys/iomgr.h>
-#include <sys/neutrino.h>
-
-
-int using_threads = 1;
-
-const struct target_desc *nto_tdesc;
-
-static void
-nto_trace (const char *fmt, ...)
-{
-  va_list arg_list;
-
-  if (debug_threads == 0)
-    return;
-  fprintf (stderr, "nto:");
-  va_start (arg_list, fmt);
-  vfprintf (stderr, fmt, arg_list);
-  va_end (arg_list);
-}
-
-#define TRACE nto_trace
-
-/* Structure holding neutrino specific information about
-   inferior.  */
-
-struct nto_inferior
-{
-  char nto_procfs_path[PATH_MAX];
-  int ctl_fd;
-  pid_t pid;
-  int exit_signo; /* For tracking exit status.  */
-};
-
-static struct nto_inferior nto_inferior;
-
-static void
-init_nto_inferior (struct nto_inferior *nto_inferior)
-{
-  memset (nto_inferior, 0, sizeof (struct nto_inferior));
-  nto_inferior->ctl_fd = -1;
-  nto_inferior->pid = -1;
-}
-
-static void
-do_detach (void)
-{
-  if (nto_inferior.ctl_fd != -1)
-    {
-      nto_trace ("Closing fd\n");
-      close (nto_inferior.ctl_fd);
-      init_nto_inferior (&nto_inferior);
-    }
-}
-
-/* Set current thread. Return 1 on success, 0 otherwise.  */
-
-static int
-nto_set_thread (ptid_t ptid)
-{
-  int res = 0;
-
-  TRACE ("%s pid: %d tid: %ld\n", __func__, ptid.pid (),
-	 ptid.lwp ());
-  if (nto_inferior.ctl_fd != -1
-      && ptid != null_ptid
-      && ptid != minus_one_ptid)
-    {
-      pthread_t tid = ptid.lwp ();
-
-      if (EOK == devctl (nto_inferior.ctl_fd, DCMD_PROC_CURTHREAD, &tid,
-	  sizeof (tid), 0))
-	res = 1;
-      else
-	TRACE ("%s: Error: failed to set current thread\n", __func__);
-    }
-  return res;
-}
-
-/* This function will determine all alive threads.  Note that we do not list
-   dead but unjoined threads even though they are still in the process' thread
-   list.  
-
-   NTO_INFERIOR must not be NULL.  */
-
-static void
-nto_find_new_threads (struct nto_inferior *nto_inferior)
-{
-  pthread_t tid;
-
-  TRACE ("%s pid:%d\n", __func__, nto_inferior->pid);
-
-  if (nto_inferior->ctl_fd == -1)
-    return;
-
-  for (tid = 1;; ++tid)
-    {
-      procfs_status status;
-      ptid_t ptid;
-      int err;
-
-      status.tid = tid;
-      err = devctl (nto_inferior->ctl_fd, DCMD_PROC_TIDSTATUS, &status,
-		    sizeof (status), 0);
-
-      if (err != EOK || status.tid == 0)
-	break;
-
-      /* All threads in between are gone.  */
-      while (tid != status.tid || status.state == STATE_DEAD)
-	{
-	  struct thread_info *ti;
-
-	  ptid = ptid_t (nto_inferior->pid, tid, 0);
-	  ti = find_thread_ptid (ptid);
-	  if (ti != NULL)
-	    {
-	      TRACE ("Removing thread %d\n", tid);
-	      remove_thread (ti);
-	    }
-	  if (tid == status.tid)
-	    break;
-	  ++tid;
-	}
-
-      if (status.state != STATE_DEAD)
-	{
-	  TRACE ("Adding thread %d\n", tid);
-	  ptid = ptid_t (nto_inferior->pid, tid, 0);
-	  if (!find_thread_ptid (ptid))
-	    add_thread (ptid, NULL);
-	}
-    }
-}
-
-/* Given pid, open procfs path.  */
-
-static pid_t
-do_attach (pid_t pid)
-{
-  procfs_status status;
-  struct sigevent event;
-
-  if (nto_inferior.ctl_fd != -1)
-    {
-      close (nto_inferior.ctl_fd);
-      init_nto_inferior (&nto_inferior);
-    }
-  xsnprintf (nto_inferior.nto_procfs_path, PATH_MAX - 1, "/proc/%d/as", pid);
-  nto_inferior.ctl_fd = open (nto_inferior.nto_procfs_path, O_RDWR);
-  if (nto_inferior.ctl_fd == -1)
-    {
-      TRACE ("Failed to open %s\n", nto_inferior.nto_procfs_path);
-      init_nto_inferior (&nto_inferior);
-      return -1;
-    }
-  if (devctl (nto_inferior.ctl_fd, DCMD_PROC_STOP, &status, sizeof (status), 0)
-      != EOK)
-    {
-      do_detach ();
-      return -1;
-    }
-  nto_inferior.pid = pid;
-  /* Define a sigevent for process stopped notification.  */
-  event.sigev_notify = SIGEV_SIGNAL_THREAD;
-  event.sigev_signo = SIGUSR1;
-  event.sigev_code = 0;
-  event.sigev_value.sival_ptr = NULL;
-  event.sigev_priority = -1;
-  devctl (nto_inferior.ctl_fd, DCMD_PROC_EVENT, &event, sizeof (event), 0);
-
-  if (devctl (nto_inferior.ctl_fd, DCMD_PROC_STATUS, &status, sizeof (status),
-	      0) == EOK
-      && (status.flags & _DEBUG_FLAG_STOPPED))
-    {
-      ptid_t ptid;
-      struct process_info *proc;
-
-      kill (pid, SIGCONT);
-      ptid = ptid_t (status.pid, status.tid, 0);
-      the_low_target.arch_setup ();
-      proc = add_process (status.pid, 1);
-      proc->tdesc = nto_tdesc;
-      TRACE ("Adding thread: pid=%d tid=%ld\n", status.pid,
-	     ptid.lwp ());
-      nto_find_new_threads (&nto_inferior);
-    }
-  else
-    {
-      do_detach ();
-      return -1;
-    }
-
-  return pid;
-}
-
-/* Read or write LEN bytes from/to inferior's MEMADDR memory address
-   into gdbservers's MYADDR buffer.  Return number of bytes actually
-   transfered.  */
-
-static int
-nto_xfer_memory (off_t memaddr, unsigned char *myaddr, int len,
-		 int dowrite)
-{
-  int nbytes = 0;
-
-  if (lseek (nto_inferior.ctl_fd, memaddr, SEEK_SET) == memaddr)
-    {
-      if (dowrite)
-	nbytes = write (nto_inferior.ctl_fd, myaddr, len);
-      else
-	nbytes = read (nto_inferior.ctl_fd, myaddr, len);
-      if (nbytes < 0)
-	nbytes = 0;
-    }
-  if (nbytes == 0)
-    {
-      int e = errno;
-      TRACE ("Error in %s : errno=%d (%s)\n", __func__, e, safe_strerror (e));
-    }
-  return nbytes;
-}
-
-/* Insert or remove breakpoint or watchpoint at address ADDR.
-   TYPE can be one of Neutrino breakpoint types.  SIZE must be 0 for
-   inserting the point, -1 for removing it.  
-
-   Return 0 on success, 1 otherwise.  */
-
-static int
-nto_breakpoint (CORE_ADDR addr, int type, int size)
-{
-  procfs_break brk;
-
-  brk.type = type;
-  brk.addr = addr;
-  brk.size = size;
-  if (devctl (nto_inferior.ctl_fd, DCMD_PROC_BREAK, &brk, sizeof (brk), 0)
-      != EOK)
-    return 1;
-  return 0;
-}
-
-/* Read auxiliary vector from inferior's initial stack into gdbserver's
-   MYADDR buffer, up to LEN bytes.  
-
-   Return number of bytes read.  */
-
-static int
-nto_read_auxv_from_initial_stack (CORE_ADDR initial_stack,
-				  unsigned char *myaddr,
-				  unsigned int len)
-{
-  int data_ofs = 0;
-  int anint;
-  unsigned int len_read = 0;
-
-  /* Skip over argc, argv and envp... Comment from ldd.c:
-
-     The startup frame is set-up so that we have:
-     auxv
-     NULL
-     ...
-     envp2
-     envp1 <----- void *frame + (argc + 2) * sizeof(char *)
-     NULL
-     ...
-     argv2
-     argv1
-     argc  <------ void * frame
-
-     On entry to ldd, frame gives the address of argc on the stack.  */
-  if (nto_xfer_memory (initial_stack, (unsigned char *)&anint,
-		       sizeof (anint), 0) != sizeof (anint))
-    return 0;
-
-  /* Size of pointer is assumed to be 4 bytes (32 bit arch. ) */
-  data_ofs += (anint + 2) * sizeof (void *); /* + 2 comes from argc itself and
-						NULL terminating pointer in
-						argv.  */
-
-  /* Now loop over env table:  */
-  while (nto_xfer_memory (initial_stack + data_ofs,
-			  (unsigned char *)&anint, sizeof (anint), 0)
-	 == sizeof (anint))
-    {
-      data_ofs += sizeof (anint);
-      if (anint == 0)
-	break;
-    }
-  initial_stack += data_ofs;
-
-  memset (myaddr, 0, len);
-  while (len_read <= len - sizeof (auxv_t))
-    {
-      auxv_t *auxv = (auxv_t *)myaddr;
-
-      /* Search backwards until we have read AT_PHDR (num. 3),
-	 AT_PHENT (num 4), AT_PHNUM (num 5)  */
-      if (nto_xfer_memory (initial_stack, (unsigned char *)auxv,
-			   sizeof (auxv_t), 0) == sizeof (auxv_t))
-	{
-	  if (auxv->a_type != AT_NULL)
-	    {
-	      auxv++;
-	      len_read += sizeof (auxv_t);
-	    }
-	  if (auxv->a_type == AT_PHNUM) /* That's all we need.  */
-	    break;
-	  initial_stack += sizeof (auxv_t);
-	}
-      else
-	break;
-    }
-  TRACE ("auxv: len_read: %d\n", len_read);
-  return len_read;
-}
-
-/* Start inferior specified by PROGRAM, using PROGRAM_ARGS as its
-   arguments.  */
-
-static int
-nto_create_inferior (const char *program,
-		     const std::vector<char *> &program_args)
-{
-  struct inheritance inherit;
-  pid_t pid;
-  sigset_t set;
-  std::string str_program_args = stringify_argv (program_args);
-
-  TRACE ("%s %s\n", __func__, program);
-  /* Clear any pending SIGUSR1's but keep the behavior the same.  */
-  signal (SIGUSR1, signal (SIGUSR1, SIG_IGN));
-
-  sigemptyset (&set);
-  sigaddset (&set, SIGUSR1);
-  sigprocmask (SIG_UNBLOCK, &set, NULL);
-
-  memset (&inherit, 0, sizeof (inherit));
-  inherit.flags |= SPAWN_SETGROUP | SPAWN_HOLD;
-  inherit.pgroup = SPAWN_NEWPGROUP;
-  pid = spawnp (program, 0, NULL, &inherit,
-		(char *) str_program_args.c_str (), 0);
-  sigprocmask (SIG_BLOCK, &set, NULL);
-
-  if (pid == -1)
-    return -1;
-
-  if (do_attach (pid) != pid)
-    return -1;
-
-  return pid;
-}
-
-/* Attach to process PID.  */
-
-static int
-nto_attach (unsigned long pid)
-{
-  TRACE ("%s %ld\n", __func__, pid);
-  if (do_attach (pid) != pid)
-    error ("Unable to attach to %ld\n", pid);
-  return 0;
-}
-
-/* Send signal to process PID.  */
-
-static int
-nto_kill (process_info *proc)
-{
-  int pid = proc->pid;
-
-  TRACE ("%s %d\n", __func__, pid);
-  kill (pid, SIGKILL);
-  do_detach ();
-  return 0;
-}
-
-/* Detach from process PID.  */
-
-static int
-nto_detach (process_info *proc)
-{
-  TRACE ("%s %d\n", __func__, proc->pid);
-  do_detach ();
-  return 0;
-}
-
-static void
-nto_mourn (struct process_info *process)
-{
-  remove_process (process);
-}
-
-/* Check if the given thread is alive.  
-
-   Return 1 if alive, 0 otherwise.  */
-
-static int
-nto_thread_alive (ptid_t ptid)
-{
-  int res;
-
-  TRACE ("%s pid:%d tid:%d\n", __func__, ptid.pid (),
-	 ptid.lwp ());
-  if (SignalKill (0, ptid.pid (), ptid.lwp (),
-		  0, 0, 0) == -1)
-    res = 0;
-  else
-    res = 1;
-  TRACE ("%s: %s\n", __func__, res ? "yes" : "no");
-  return res;
-}
-
-/* Resume inferior's execution.  */
-
-static void
-nto_resume (struct thread_resume *resume_info, size_t n)
-{
-  /* We can only work in all-stop mode.  */
-  procfs_status status;
-  procfs_run run;
-  int err;
-
-  TRACE ("%s\n", __func__);
-  /* Workaround for aliasing rules violation. */
-  sigset_t *run_fault = (sigset_t *) (void *) &run.fault;
-
-  nto_set_thread (resume_info->thread);
-
-  run.flags = _DEBUG_RUN_FAULT | _DEBUG_RUN_TRACE;
-  if (resume_info->kind == resume_step)
-    run.flags |= _DEBUG_RUN_STEP;
-  run.flags |= _DEBUG_RUN_ARM;
-
-  sigemptyset (run_fault);
-  sigaddset (run_fault, FLTBPT);
-  sigaddset (run_fault, FLTTRACE);
-  sigaddset (run_fault, FLTILL);
-  sigaddset (run_fault, FLTPRIV);
-  sigaddset (run_fault, FLTBOUNDS);
-  sigaddset (run_fault, FLTIOVF);
-  sigaddset (run_fault, FLTIZDIV);
-  sigaddset (run_fault, FLTFPE);
-  sigaddset (run_fault, FLTPAGE);
-  sigaddset (run_fault, FLTSTACK);
-  sigaddset (run_fault, FLTACCESS);
-
-  sigemptyset (&run.trace);
-  if (resume_info->sig)
-    {
-      int signal_to_pass;
-
-      devctl (nto_inferior.ctl_fd, DCMD_PROC_STATUS, &status, sizeof (status),
-	      0);
-      signal_to_pass = resume_info->sig;
-      if (status.why & (_DEBUG_WHY_SIGNALLED | _DEBUG_WHY_FAULTED))
-	{
-	  if (signal_to_pass != status.info.si_signo)
-	    {
-	      kill (status.pid, signal_to_pass);
-	      run.flags |= _DEBUG_RUN_CLRFLT | _DEBUG_RUN_CLRSIG;
-	    }
-	  else		/* Let it kill the program without telling us.  */
-	    sigdelset (&run.trace, signal_to_pass);
-	}
-    }
-  else
-    run.flags |= _DEBUG_RUN_CLRSIG | _DEBUG_RUN_CLRFLT;
-
-  sigfillset (&run.trace);
-
-  regcache_invalidate ();
-
-  err = devctl (nto_inferior.ctl_fd, DCMD_PROC_RUN, &run, sizeof (run), 0);
-  if (err != EOK)
-    TRACE ("Error: %d \"%s\"\n", err, safe_strerror (err));
-}
-
-/* Wait for inferior's event.  
-
-   Return ptid of thread that caused the event.  */
-
-static ptid_t
-nto_wait (ptid_t ptid,
-	  struct target_waitstatus *ourstatus, int target_options)
-{
-  sigset_t set;
-  siginfo_t info;
-  procfs_status status;
-  const int trace_mask = (_DEBUG_FLAG_TRACE_EXEC | _DEBUG_FLAG_TRACE_RD
-			  | _DEBUG_FLAG_TRACE_WR | _DEBUG_FLAG_TRACE_MODIFY);
-
-  TRACE ("%s\n", __func__);
-
-  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-
-  sigemptyset (&set);
-  sigaddset (&set, SIGUSR1);
-
-  devctl (nto_inferior.ctl_fd, DCMD_PROC_STATUS, &status, sizeof (status), 0);
-  while (!(status.flags & _DEBUG_FLAG_ISTOP))
-    {
-      sigwaitinfo (&set, &info);
-      devctl (nto_inferior.ctl_fd, DCMD_PROC_STATUS, &status, sizeof (status),
-	      0);
-    }
-  nto_find_new_threads (&nto_inferior);
-
-  if (status.flags & _DEBUG_FLAG_SSTEP)
-    {
-      TRACE ("SSTEP\n");
-      ourstatus->kind = TARGET_WAITKIND_STOPPED;
-      ourstatus->value.sig = GDB_SIGNAL_TRAP;
-    }
-  /* Was it a breakpoint?  */
-  else if (status.flags & trace_mask)
-    {
-      TRACE ("STOPPED\n");
-      ourstatus->kind = TARGET_WAITKIND_STOPPED;
-      ourstatus->value.sig = GDB_SIGNAL_TRAP;
-    }
-  else if (status.flags & _DEBUG_FLAG_ISTOP)
-    {
-      TRACE ("ISTOP\n");
-      switch (status.why)
-	{
-	case _DEBUG_WHY_SIGNALLED:
-	  TRACE ("  SIGNALLED\n");
-	  ourstatus->kind = TARGET_WAITKIND_STOPPED;
-	  ourstatus->value.sig =
-	    gdb_signal_from_host (status.info.si_signo);
-	  nto_inferior.exit_signo = ourstatus->value.sig;
-	  break;
-	case _DEBUG_WHY_FAULTED:
-	  TRACE ("  FAULTED\n");
-	  ourstatus->kind = TARGET_WAITKIND_STOPPED;
-	  if (status.info.si_signo == SIGTRAP)
-	    {
-	      ourstatus->value.sig = 0;
-	      nto_inferior.exit_signo = 0;
-	    }
-	  else
-	    {
-	      ourstatus->value.sig =
-		gdb_signal_from_host (status.info.si_signo);
-	      nto_inferior.exit_signo = ourstatus->value.sig;
-	    }
-	  break;
-
-	case _DEBUG_WHY_TERMINATED:
-	  {
-	    int waitval = 0;
-
-	    TRACE ("  TERMINATED\n");
-	    waitpid (ptid.pid (), &waitval, WNOHANG);
-	    if (nto_inferior.exit_signo)
-	      {
-		/* Abnormal death.  */
-		ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
-		ourstatus->value.sig = nto_inferior.exit_signo;
-	      }
-	    else
-	      {
-		/* Normal death.  */
-		ourstatus->kind = TARGET_WAITKIND_EXITED;
-		ourstatus->value.integer = WEXITSTATUS (waitval);
-	      }
-	    nto_inferior.exit_signo = 0;
-	    break;
-	  }
-
-	case _DEBUG_WHY_REQUESTED:
-	  TRACE ("REQUESTED\n");
-	  /* We are assuming a requested stop is due to a SIGINT.  */
-	  ourstatus->kind = TARGET_WAITKIND_STOPPED;
-	  ourstatus->value.sig = GDB_SIGNAL_INT;
-	  nto_inferior.exit_signo = 0;
-	  break;
-	}
-    }
-
-  return ptid_t (status.pid, status.tid, 0);
-}
-
-/* Fetch inferior's registers for currently selected thread (CURRENT_INFERIOR).
-   If REGNO is -1, fetch all registers, or REGNO register only otherwise.  */
-
-static void
-nto_fetch_registers (struct regcache *regcache, int regno)
-{
-  int regsize;
-  procfs_greg greg;
-
-  TRACE ("%s (regno=%d)\n", __func__, regno);
-  if (regno >= the_low_target.num_regs)
-    return;
-
-  if (current_thread == NULL)
-    {
-      TRACE ("current_thread is NULL\n");
-      return;
-    }
-  ptid_t ptid = ptid_of (current_thread);
-  if (!nto_set_thread (ptid))
-    return;
-
-  if (devctl (nto_inferior.ctl_fd, DCMD_PROC_GETGREG, &greg, sizeof (greg),
-	      &regsize) == EOK)
-    {
-      if (regno == -1) /* All registers. */
-	{
-	  for (regno = 0; regno != the_low_target.num_regs; ++regno)
-	    {
-	      const unsigned int registeroffset
-		= the_low_target.register_offset (regno);
-	      supply_register (regcache, regno,
-			       ((char *)&greg) + registeroffset);
-	    }
-	}
-      else
-	{
-	  const unsigned int registeroffset
-	    = the_low_target.register_offset (regno);
-	  if (registeroffset == -1)
-	    return;
-	  supply_register (regcache, regno, ((char *)&greg) + registeroffset);
-	}
-    }
-  else
-    TRACE ("ERROR reading registers from inferior.\n");
-}
-
-/* Store registers for currently selected thread (CURRENT_INFERIOR).  
-   We always store all registers, regardless of REGNO.  */
-
-static void
-nto_store_registers (struct regcache *regcache, int regno)
-{
-  procfs_greg greg;
-  int err;
-
-  TRACE ("%s (regno:%d)\n", __func__, regno);
-
-  if (current_thread == NULL)
-    {
-      TRACE ("current_thread is NULL\n");
-      return;
-    }
-  ptid_t ptid = ptid_of (current_thread);
-  if (!nto_set_thread (ptid))
-    return;
-
-  memset (&greg, 0, sizeof (greg));
-  for  (regno = 0; regno != the_low_target.num_regs; ++regno)
-    {
-      const unsigned int regoffset
-	= the_low_target.register_offset (regno);
-      collect_register (regcache, regno, ((char *)&greg) + regoffset);
-    }
-  err = devctl (nto_inferior.ctl_fd, DCMD_PROC_SETGREG, &greg, sizeof (greg),
-		0);
-  if (err != EOK)
-    TRACE ("Error: setting registers.\n");
-}
-
-/* Read LEN bytes from inferior's memory address MEMADDR into
-   gdbserver's MYADDR buffer.  
-
-   Return 0 on success -1 otherwise.  */
-
-static int
-nto_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  TRACE ("%s memaddr:0x%08lx, len:%d\n", __func__, memaddr, len);
-
-  if (nto_xfer_memory (memaddr, myaddr, len, 0) != len)
-    {
-      TRACE ("Failed to read memory\n");
-      return -1;
-    }
-
-  return 0;
-}
-
-/* Write LEN bytes from gdbserver's buffer MYADDR into inferior's
-   memory at address MEMADDR.  
-
-   Return 0 on success -1 otherwise.  */
-
-static int
-nto_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len)
-{
-  int len_written;
-
-  TRACE ("%s memaddr: 0x%08llx len: %d\n", __func__, memaddr, len);
-  if ((len_written = nto_xfer_memory (memaddr, (unsigned char *)myaddr, len,
-				      1))
-      != len)
-    {
-      TRACE ("Wanted to write: %d but written: %d\n", len, len_written);
-      return -1;
-    }
-
-  return 0;
-}
-
-/* Stop inferior.  We always stop all threads.  */
-
-static void
-nto_request_interrupt (void)
-{
-  TRACE ("%s\n", __func__);
-  nto_set_thread (ptid_t (nto_inferior.pid, 1, 0));
-  if (EOK != devctl (nto_inferior.ctl_fd, DCMD_PROC_STOP, NULL, 0, 0))
-    TRACE ("Error stopping inferior.\n");
-}
-
-/* Read auxiliary vector from inferior's memory into gdbserver's buffer
-   MYADDR.  We always read whole auxv.  
-   
-   Return number of bytes stored in MYADDR buffer, 0 if OFFSET > 0
-   or -1 on error.  */
-
-static int
-nto_read_auxv (CORE_ADDR offset, unsigned char *myaddr, unsigned int len)
-{
-  int err;
-  CORE_ADDR initial_stack;
-  procfs_info procinfo;
-
-  TRACE ("%s\n", __func__);
-  if (offset > 0)
-    return 0;
-
-  err = devctl (nto_inferior.ctl_fd, DCMD_PROC_INFO, &procinfo,
-		sizeof procinfo, 0);
-  if (err != EOK)
-    return -1;
-
-  initial_stack = procinfo.initial_stack;
-
-  return nto_read_auxv_from_initial_stack (initial_stack, myaddr, len);
-}
-
-static int
-nto_supports_z_point_type (char z_type)
-{
-  switch (z_type)
-    {
-    case Z_PACKET_SW_BP:
-    case Z_PACKET_HW_BP:
-    case Z_PACKET_WRITE_WP:
-    case Z_PACKET_READ_WP:
-    case Z_PACKET_ACCESS_WP:
-      return 1;
-    default:
-      return 0;
-    }
-}
-
-/* Insert {break/watch}point at address ADDR.  SIZE is not used.  */
-
-static int
-nto_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		  int size, struct raw_breakpoint *bp)
-{
-  int wtype = _DEBUG_BREAK_HW; /* Always request HW.  */
-
-  TRACE ("%s type:%c addr: 0x%08lx len:%d\n", __func__, (int)type, addr, size);
-  switch (type)
-    {
-    case raw_bkpt_type_sw:
-      wtype = _DEBUG_BREAK_EXEC;
-      break;
-    case raw_bkpt_type_hw:
-      wtype |= _DEBUG_BREAK_EXEC;
-      break;
-    case raw_bkpt_type_write_wp:
-      wtype |= _DEBUG_BREAK_RW;
-      break;
-    case raw_bkpt_type_read_wp:
-      wtype |= _DEBUG_BREAK_RD;
-      break;
-    case raw_bkpt_type_access_wp:
-      wtype |= _DEBUG_BREAK_RW;
-      break;
-    default:
-      return 1; /* Not supported.  */
-    }
-  return nto_breakpoint (addr, wtype, 0);
-}
-
-/* Remove {break/watch}point at address ADDR.  SIZE is not used.  */
-
-static int
-nto_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		  int size, struct raw_breakpoint *bp)
-{
-  int wtype = _DEBUG_BREAK_HW; /* Always request HW.  */
-
-  TRACE ("%s type:%c addr: 0x%08lx len:%d\n", __func__, (int)type, addr, size);
-  switch (type)
-    {
-    case raw_bkpt_type_sw:
-      wtype = _DEBUG_BREAK_EXEC;
-      break;
-    case raw_bkpt_type_hw:
-      wtype |= _DEBUG_BREAK_EXEC;
-      break;
-    case raw_bkpt_type_write_wp:
-      wtype |= _DEBUG_BREAK_RW;
-      break;
-    case raw_bkpt_type_read_wp:
-      wtype |= _DEBUG_BREAK_RD;
-      break;
-    case raw_bkpt_type_access_wp:
-      wtype |= _DEBUG_BREAK_RW;
-      break;
-    default:
-      return 1; /* Not supported.  */
-    }
-  return nto_breakpoint (addr, wtype, -1);
-}
-
-/* Check if the reason of stop for current thread (CURRENT_INFERIOR) is
-   a watchpoint.
-
-   Return 1 if stopped by watchpoint, 0 otherwise.  */
-
-static int
-nto_stopped_by_watchpoint (void)
-{
-  int ret = 0;
-
-  TRACE ("%s\n", __func__);
-  if (nto_inferior.ctl_fd != -1 && current_thread != NULL)
-    {
-      ptid_t ptid = ptid_of (current_thread);
-      if (nto_set_thread (ptid))
-	{
-	  const int watchmask = _DEBUG_FLAG_TRACE_RD | _DEBUG_FLAG_TRACE_WR
-				| _DEBUG_FLAG_TRACE_MODIFY;
-	  procfs_status status;
-	  int err;
-
-	  err = devctl (nto_inferior.ctl_fd, DCMD_PROC_STATUS, &status,
-			sizeof (status), 0);
-	  if (err == EOK && (status.flags & watchmask))
-	    ret = 1;
-	}
-    }
-  TRACE ("%s: %s\n", __func__, ret ? "yes" : "no");
-  return ret;
-}
-
-/* Get instruction pointer for CURRENT_INFERIOR thread.  
-
-   Return inferior's instruction pointer value, or 0 on error.  */ 
-
-static CORE_ADDR
-nto_stopped_data_address (void)
-{
-  CORE_ADDR ret = (CORE_ADDR)0;
-
-  TRACE ("%s\n", __func__);
-  if (nto_inferior.ctl_fd != -1 && current_thread != NULL)
-    {
-      ptid_t ptid = ptid_of (current_thread);
-
-      if (nto_set_thread (ptid))
-	{
-	  procfs_status status;
-
-	  if (devctl (nto_inferior.ctl_fd, DCMD_PROC_STATUS, &status,
-		      sizeof (status), 0) == EOK)
-	    ret = status.ip;
-	}
-    }
-  TRACE ("%s: 0x%08lx\n", __func__, ret);
-  return ret;
-}
-
-/* We do not currently support non-stop.  */
-
-static int
-nto_supports_non_stop (void)
-{
-  TRACE ("%s\n", __func__);
-  return 0;
-}
-
-/* Implementation of the target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-nto_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = the_low_target.breakpoint_len;
-  return the_low_target.breakpoint;
-}
-
-
-static struct target_ops nto_target_ops = {
-  nto_create_inferior,
-  NULL,  /* post_create_inferior */
-  nto_attach,
-  nto_kill,
-  nto_detach,
-  nto_mourn,
-  NULL, /* nto_join */
-  nto_thread_alive,
-  nto_resume,
-  nto_wait,
-  nto_fetch_registers,
-  nto_store_registers,
-  NULL, /* prepare_to_access_memory */
-  NULL, /* done_accessing_memory */
-  nto_read_memory,
-  nto_write_memory,
-  NULL, /* nto_look_up_symbols */
-  nto_request_interrupt,
-  nto_read_auxv,
-  nto_supports_z_point_type,
-  nto_insert_point,
-  nto_remove_point,
-  NULL, /* stopped_by_sw_breakpoint */
-  NULL, /* supports_stopped_by_sw_breakpoint */
-  NULL, /* stopped_by_hw_breakpoint */
-  NULL, /* supports_stopped_by_hw_breakpoint */
-  target_can_do_hardware_single_step,
-  nto_stopped_by_watchpoint,
-  nto_stopped_data_address,
-  NULL, /* nto_read_offsets */
-  NULL, /* thread_db_set_tls_address */
-  hostio_last_error_from_errno,
-  NULL, /* nto_qxfer_osdata */
-  NULL, /* xfer_siginfo */
-  nto_supports_non_stop,
-  NULL, /* async */
-  NULL, /* start_non_stop */
-  NULL, /* supports_multi_process */
-  NULL, /* supports_fork_events */
-  NULL, /* supports_vfork_events */
-  NULL, /* supports_exec_events */
-  NULL, /* handle_new_gdb_connection */
-  NULL, /* handle_monitor_command */
-  NULL, /* core_of_thread */
-  NULL, /* read_loadmap */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* read_pc */
-  NULL, /* write_pc */
-  NULL, /* thread_stopped */
-  NULL, /* get_tib_address */
-  NULL, /* pause_all */
-  NULL, /* unpause_all */
-  NULL, /* stabilize_threads */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* supports_disable_randomization */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* qxfer_libraries_svr4 */
-  NULL, /* support_agent */
-  NULL, /* enable_btrace */
-  NULL, /* disable_btrace */
-  NULL, /* read_btrace */
-  NULL, /* read_btrace_conf */
-  NULL, /* supports_range_stepping */
-  NULL, /* pid_to_exec_file */
-  NULL, /* multifs_open */
-  NULL, /* multifs_unlink */
-  NULL, /* multifs_readlink */
-  NULL, /* breakpoint_kind_from_pc */
-  nto_sw_breakpoint_from_kind,
-};
-
-
-/* Global function called by server.c.  Initializes QNX Neutrino
-   gdbserver.  */
-
-void
-initialize_low (void)
-{
-  sigset_t set;
-
-  TRACE ("%s\n", __func__);
-  set_target_ops (&nto_target_ops);
-
-  /* We use SIGUSR1 to gain control after we block waiting for a process.
-     We use sigwaitevent to wait.  */
-  sigemptyset (&set);
-  sigaddset (&set, SIGUSR1);
-  sigprocmask (SIG_BLOCK, &set, NULL);
-}
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/nto-low.h ./gdb/gdbserver/nto-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/nto-low.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/nto-low.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,49 +0,0 @@
-/* Internal interfaces for the QNX Neutrino specific target code for gdbserver.
-   Copyright (C) 2009-2020 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 GDBSERVER_NTO_LOW_H
-#define GDBSERVER_NTO_LOW_H
-
-struct target_desc;
-
-enum regset_type
-{
-  NTO_REG_GENERAL,
-  NTO_REG_FLOAT,
-  NTO_REG_SYSTEM,
-  NTO_REG_ALT,
-  NTO_REG_END
-};
-
-struct nto_target_ops
-{
-  /* Architecture specific setup.  */
-  void (*arch_setup) (void);
-  int num_regs;
-  int (*register_offset) (int gdbregno);
-  const unsigned char *breakpoint;
-  int breakpoint_len;
-};
-
-extern struct nto_target_ops the_low_target;
-
-/* The inferior's target description.  This is a global because the
-   LynxOS ports support neither bi-arch nor multi-process.  */
-extern const struct target_desc *nto_tdesc;
-
-#endif /* GDBSERVER_NTO_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/nto-x86-low.c ./gdb/gdbserver/nto-x86-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/nto-x86-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/nto-x86-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,109 +0,0 @@
-/* QNX Neutrino specific low level interface, for the remote server
-   for GDB.
-   Copyright (C) 2009-2020 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 "server.h"
-#include "nto-low.h"
-#include "regdef.h"
-#include "regcache.h"
-
-#include <x86/context.h>
-#include "gdbsupport/x86-xstate.h"
-#include "arch/i386.h"
-#include "x86-tdesc.h"
-
-const unsigned char x86_breakpoint[] = { 0xCC };
-#define x86_breakpoint_len 1
-
-/* Returns offset in appropriate Neutrino's context structure.
-   Defined in x86/context.h.
-   GDBREGNO is index into regs_i386 array.  It is autogenerated and
-   hopefully doesn't change.  */
-static int
-nto_x86_register_offset (int gdbregno)
-{
-  if (gdbregno >= 0 && gdbregno < 16)
-    {
-      X86_CPU_REGISTERS *dummy = (void*)0;
-      /* GPRs  */
-      switch (gdbregno)
-	{
-	case 0: 
-	  return (int)&(dummy->eax);
-	case 1:
-	  return (int)&(dummy->ecx);
-	case 2:
-	  return (int)&(dummy->edx);
-	case 3:
-	  return (int)&(dummy->ebx);
-	case 4:
-	  return (int)&(dummy->esp);
-	case 5:
-	  return (int)&(dummy->ebp);
-	case 6:
-	  return (int)&(dummy->esi);
-	case 7:
-	  return (int)&(dummy->edi);
-	case 8:
-	  return (int)&(dummy->eip);
-	case 9:
-	  return (int)&(dummy->efl);
-	case 10:
-	  return (int)&(dummy->cs);
-	case 11:
-	  return (int)&(dummy->ss);
-#ifdef __SEGMENTS__
-	case 12:
-	  return (int)&(dummy->ds);
-	case 13:
-	  return (int)&(dummy->es);
-	case 14:
-	  return (int)&(dummy->fs);
-	case 15:
-	  return (int)&(dummy->gs);
-#endif
-	default:
-	  return -1;
-	}
-    }
-  return -1;
-}
-
-static void
-nto_x86_arch_setup (void)
-{
-  the_low_target.num_regs = 16;
-  struct target_desc *tdesc
-    = i386_create_target_description (X86_XSTATE_SSE_MASK, false, false);
-
-  init_target_desc (tdesc, i386_expedite_regs);
-
-  nto_tdesc = tdesc;
-}
-
-struct nto_target_ops the_low_target =
-{
-  nto_x86_arch_setup,
-  0, /* num_regs */
-  nto_x86_register_offset,
-  x86_breakpoint,
-  x86_breakpoint_len
-};
-
-
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/proc-service.c ./gdb/gdbserver/proc-service.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/proc-service.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/proc-service.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,165 +0,0 @@
-/* libthread_db helper functions for the remote server for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
-
-   Contributed by MontaVista Software.
-
-   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 "server.h"
-
-/* This file is currently tied to GNU/Linux.  It should scale well to
-   another libthread_db implementation, with the appropriate gdbserver
-   hooks, but for now this means we can use GNU/Linux's target data.  */
-
-#include "linux-low.h"
-
-#include "gdb_proc_service.h"
-
-typedef struct ps_prochandle *gdb_ps_prochandle_t;
-typedef void *gdb_ps_read_buf_t;
-typedef const void *gdb_ps_write_buf_t;
-typedef size_t gdb_ps_size_t;
-
-#ifdef HAVE_LINUX_REGSETS
-#define HAVE_REGSETS
-#endif
-
-#ifdef HAVE_REGSETS
-static struct regset_info *
-gregset_info (void)
-{
-  int i = 0;
-  const struct regs_info *regs_info = (*the_low_target.regs_info) ();
-  struct regsets_info *regsets_info = regs_info->regsets_info;
-
-  while (regsets_info->regsets[i].size != -1)
-    {
-      if (regsets_info->regsets[i].type == GENERAL_REGS)
-	break;
-      i++;
-    }
-
-  return &regsets_info->regsets[i];
-}
-#endif
-
-/* Search for the symbol named NAME within the object named OBJ within
-   the target process PH.  If the symbol is found the address of the
-   symbol is stored in SYM_ADDR.  */
-
-ps_err_e
-ps_pglobal_lookup (gdb_ps_prochandle_t ph, const char *obj,
-		   const char *name, psaddr_t *sym_addr)
-{
-  CORE_ADDR addr;
-
-  if (thread_db_look_up_one_symbol (name, &addr) == 0)
-    return PS_NOSYM;
-
-  *sym_addr = (psaddr_t) (unsigned long) addr;
-  return PS_OK;
-}
-
-/* Read SIZE bytes from the target process PH at address ADDR and copy
-   them into BUF.  */
-
-ps_err_e
-ps_pdread (gdb_ps_prochandle_t ph, psaddr_t addr,
-	   gdb_ps_read_buf_t buf, gdb_ps_size_t size)
-{
-  if (read_inferior_memory ((uintptr_t) addr, (gdb_byte *) buf, size) != 0)
-    return PS_ERR;
-  return PS_OK;
-}
-
-/* Write SIZE bytes from BUF into the target process PH at address ADDR.  */
-
-ps_err_e
-ps_pdwrite (gdb_ps_prochandle_t ph, psaddr_t addr,
-	    gdb_ps_write_buf_t buf, gdb_ps_size_t size)
-{
-  if (target_write_memory ((uintptr_t) addr, (const gdb_byte *) buf, size)
-      != 0)
-    return PS_ERR;
-  return PS_OK;
-}
-
-/* Get the general registers of LWP LWPID within the target process PH
-   and store them in GREGSET.  */
-
-ps_err_e
-ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prgregset_t gregset)
-{
-#ifdef HAVE_REGSETS
-  struct lwp_info *lwp;
-  struct thread_info *reg_thread, *saved_thread;
-  struct regcache *regcache;
-
-  lwp = find_lwp_pid (ptid_t (lwpid));
-  if (lwp == NULL)
-    return PS_ERR;
-
-  reg_thread = get_lwp_thread (lwp);
-  saved_thread = current_thread;
-  current_thread = reg_thread;
-  regcache = get_thread_regcache (current_thread, 1);
-  gregset_info ()->fill_function (regcache, gregset);
-
-  current_thread = saved_thread;
-  return PS_OK;
-#else
-  return PS_ERR;
-#endif
-}
-
-/* Set the general registers of LWP LWPID within the target process PH
-   from GREGSET.  */
-
-ps_err_e
-ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, const prgregset_t gregset)
-{
-  /* Unneeded.  */
-  return PS_ERR;
-}
-
-/* Get the floating-point registers of LWP LWPID within the target
-   process PH and store them in FPREGSET.  */
-
-ps_err_e
-ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prfpregset_t *fpregset)
-{
-  /* Unneeded.  */
-  return PS_ERR;
-}
-
-/* Set the floating-point registers of LWP LWPID within the target
-   process PH from FPREGSET.  */
-
-ps_err_e
-ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, const prfpregset_t *fpregset)
-{
-  /* Unneeded.  */
-  return PS_ERR;
-}
-
-/* Return overall process id of the target PH.  Special for GNU/Linux
-   -- not used on Solaris.  */
-
-pid_t
-ps_getpid (gdb_ps_prochandle_t ph)
-{
-  return pid_of (current_thread);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/proc-service.list ./gdb/gdbserver/proc-service.list
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/proc-service.list	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/proc-service.list	1970-01-01 00:00:00.000000000 +0000
@@ -1,30 +0,0 @@
-/* -Wl,--dynamic-list symbols exported for libthread_db.
-
-   Copyright (C) 2010-2020 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/>.  */
-
-{
-  ps_get_thread_area;
-  ps_getpid;
-  ps_lgetfpregs;
-  ps_lgetregs;
-  ps_lsetfpregs;
-  ps_lsetregs;
-  ps_pdread;
-  ps_pdwrite;
-  ps_pglobal_lookup;
-};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/README ./gdb/gdbserver/README
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/README	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/README	1970-01-01 00:00:00.000000000 +0000
@@ -1,152 +0,0 @@
-		   README for GDBserver & GDBreplay
-		    by Stu Grossman and Fred Fish
-
-Introduction:
-
-This is GDBserver, a remote server for Un*x-like systems.  It can be used to
-control the execution of a program on a target system from a GDB on a different
-host.  GDB and GDBserver communicate using the standard remote serial protocol
-implemented in remote.c, and various *-stub.c files.  They communicate via
-either a serial line or a TCP connection.
-
-For more information about GDBserver, see the GDB manual.
-
-Usage (server (target) side):
-
-First, you need to have a copy of the program you want to debug put onto
-the target system.  The program can be stripped to save space if needed, as
-GDBserver doesn't care about symbols.  All symbol handling is taken care of by
-the GDB running on the host system.
-
-To use the server, you log on to the target system, and run the `gdbserver'
-program.  You must tell it (a) how to communicate with GDB, (b) the name of
-your program, and (c) its arguments.  The general syntax is:
-
-	target> gdbserver COMM PROGRAM [ARGS ...]
-
-For example, using a serial port, you might say:
-
-	target> gdbserver /dev/com1 emacs foo.txt
-
-This tells GDBserver to debug emacs with an argument of foo.txt, and to
-communicate with GDB via /dev/com1.  GDBserver now waits patiently for the
-host GDB to communicate with it.
-
-To use a TCP connection, you could say:
-
-	target> gdbserver host:2345 emacs foo.txt
-
-This says pretty much the same thing as the last example, except that we are
-going to communicate with the host GDB via TCP.  The `host:2345' argument means
-that we are expecting to see a TCP connection from `host' to local TCP port
-2345.  (Currently, the `host' part is ignored.)  You can choose any number you
-want for the port number as long as it does not conflict with any existing TCP
-ports on the target system.  This same port number must be used in the host
-GDBs `target remote' command, which will be described shortly.  Note that if
-you chose a port number that conflicts with another service, GDBserver will
-print an error message and exit.
-
-On some targets, GDBserver can also attach to running programs.  This is
-accomplished via the --attach argument.  The syntax is:
-
-	target> gdbserver --attach COMM PID
-
-PID is the process ID of a currently running process.  It isn't necessary
-to point GDBserver at a binary for the running process.
-
-Usage (host side):
-
-You need an unstripped copy of the target program on your host system, since
-GDB needs to examine it's symbol tables and such.  Start up GDB as you normally
-would, with the target program as the first argument.  (You may need to use the
---baud option if the serial line is running at anything except 9600 baud.)
-Ie: `gdb TARGET-PROG', or `gdb --baud BAUD TARGET-PROG'.  After that, the only
-new command you need to know about is `target remote'.  It's argument is either
-a device name (usually a serial device, like `/dev/ttyb'), or a HOST:PORT
-descriptor.  For example:
-
-	(gdb) target remote /dev/ttyb
-
-communicates with the server via serial line /dev/ttyb, and:
-
-	(gdb) target remote the-target:2345
-
-communicates via a TCP connection to port 2345 on host `the-target', where
-you previously started up GDBserver with the same port number.  Note that for
-TCP connections, you must start up GDBserver prior to using the `target remote'
-command, otherwise you may get an error that looks something like
-`Connection refused'.
-
-Building GDBserver:
-
-The supported targets as of November 2006 are:
-	arm-*-linux*
-	bfin-*-uclinux
-	bfin-*-linux-uclibc
-	crisv32-*-linux*
-	cris-*-linux*
-	i[34567]86-*-cygwin*
-	i[34567]86-*-linux*
-	i[34567]86-*-mingw*
-	ia64-*-linux*
-	m32r*-*-linux*
-	m68*-*-linux*
-	m68*-*-uclinux*
-	mips*64*-*-linux*
-	mips*-*-linux*
-	powerpc[64]-*-linux*
-	s390[x]-*-linux*
-	sh-*-linux*
-	spu*-*-*
-	x86_64-*-linux*
-
-Configuring GDBserver you should specify the same machine for host and
-target (which are the machine that GDBserver is going to run on.  This
-is not the same as the machine that GDB is going to run on; building
-GDBserver automatically as part of building a whole tree of tools does
-not currently work if cross-compilation is involved (we don't get the
-right CC in the Makefile, to start with)).
-
-Building GDBserver for your target is very straightforward.  If you build
-GDB natively on a target which GDBserver supports, it will be built
-automatically when you build GDB.  You can also build just GDBserver:
-
-	% mkdir obj
-	% cd obj
-	% path-to-gdbserver-sources/configure
-	% make
-
-If you prefer to cross-compile to your target, then you can also build
-GDBserver that way.  In a Bourne shell, for example:
-
-	% export CC=your-cross-compiler
-	% path-to-gdbserver-sources/configure your-target-name
-	% make
-
-Using GDBreplay:
-
-A special hacked down version of GDBserver can be used to replay remote
-debug log files created by GDB.  Before using the GDB "target" command to
-initiate a remote debug session, use "set remotelogfile <filename>" to tell
-GDB that you want to make a recording of the serial or tcp session.  Note
-that when replaying the session, GDB communicates with GDBreplay via tcp,
-regardless of whether the original session was via a serial link or tcp.
-
-Once you are done with the remote debug session, start GDBreplay and
-tell it the name of the log file and the host and port number that GDB
-should connect to (typically the same as the host running GDB):
-
-	$ gdbreplay logfile host:port
-
-Then start GDB (preferably in a different screen or window) and use the
-"target" command to connect to GDBreplay:
-
-	(gdb) target remote host:port
-
-Repeat the same sequence of user commands to GDB that you gave in the
-original debug session.  GDB should not be able to tell that it is talking
-to GDBreplay rather than a real target, all other things being equal.  Note
-that GDBreplay echos the command lines to stderr, as well as the contents of
-the packets it sends and receives.  The last command echoed by GDBreplay is
-the next command that needs to be typed to GDB to continue the session in
-sync with the original session.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/regcache.c ./gdb/gdbserver/regcache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/regcache.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/regcache.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,528 +0,0 @@
-/* Register support routines for the remote server for GDB.
-   Copyright (C) 2001-2020 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 "server.h"
-#include "regdef.h"
-#include "gdbthread.h"
-#include "tdesc.h"
-#include "gdbsupport/rsp-low.h"
-#ifndef IN_PROCESS_AGENT
-
-struct regcache *
-get_thread_regcache (struct thread_info *thread, int fetch)
-{
-  struct regcache *regcache;
-
-  regcache = thread_regcache_data (thread);
-
-  /* Threads' regcaches are created lazily, because biarch targets add
-     the main thread/lwp before seeing it stop for the first time, and
-     it is only after the target sees the thread stop for the first
-     time that the target has a chance of determining the process's
-     architecture.  IOW, when we first add the process's main thread
-     we don't know which architecture/tdesc its regcache should
-     have.  */
-  if (regcache == NULL)
-    {
-      struct process_info *proc = get_thread_process (thread);
-
-      gdb_assert (proc->tdesc != NULL);
-
-      regcache = new_register_cache (proc->tdesc);
-      set_thread_regcache_data (thread, regcache);
-    }
-
-  if (fetch && regcache->registers_valid == 0)
-    {
-      struct thread_info *saved_thread = current_thread;
-
-      current_thread = thread;
-      /* Invalidate all registers, to prevent stale left-overs.  */
-      memset (regcache->register_status, REG_UNAVAILABLE,
-	      regcache->tdesc->reg_defs.size ());
-      fetch_inferior_registers (regcache, -1);
-      current_thread = saved_thread;
-      regcache->registers_valid = 1;
-    }
-
-  return regcache;
-}
-
-/* See gdbsupport/common-regcache.h.  */
-
-struct regcache *
-get_thread_regcache_for_ptid (ptid_t ptid)
-{
-  return get_thread_regcache (find_thread_ptid (ptid), 1);
-}
-
-void
-regcache_invalidate_thread (struct thread_info *thread)
-{
-  struct regcache *regcache;
-
-  regcache = thread_regcache_data (thread);
-
-  if (regcache == NULL)
-    return;
-
-  if (regcache->registers_valid)
-    {
-      struct thread_info *saved_thread = current_thread;
-
-      current_thread = thread;
-      store_inferior_registers (regcache, -1);
-      current_thread = saved_thread;
-    }
-
-  regcache->registers_valid = 0;
-}
-
-/* See regcache.h.  */
-
-void
-regcache_invalidate_pid (int pid)
-{
-  /* Only invalidate the regcaches of threads of this process.  */
-  for_each_thread (pid, regcache_invalidate_thread);
-}
-
-/* See regcache.h.  */
-
-void
-regcache_invalidate (void)
-{
-  /* Only update the threads of the current process.  */
-  int pid = current_thread->id.pid ();
-
-  regcache_invalidate_pid (pid);
-}
-
-#endif
-
-struct regcache *
-init_register_cache (struct regcache *regcache,
-		     const struct target_desc *tdesc,
-		     unsigned char *regbuf)
-{
-  if (regbuf == NULL)
-    {
-#ifndef IN_PROCESS_AGENT
-      /* Make sure to zero-initialize the register cache when it is
-	 created, in case there are registers the target never
-	 fetches.  This way they'll read as zero instead of
-	 garbage.  */
-      regcache->tdesc = tdesc;
-      regcache->registers
-	= (unsigned char *) xcalloc (1, tdesc->registers_size);
-      regcache->registers_owned = 1;
-      regcache->register_status
-	= (unsigned char *) xmalloc (tdesc->reg_defs.size ());
-      memset ((void *) regcache->register_status, REG_UNAVAILABLE,
-	      tdesc->reg_defs.size ());
-#else
-      gdb_assert_not_reached ("can't allocate memory from the heap");
-#endif
-    }
-  else
-    {
-      regcache->tdesc = tdesc;
-      regcache->registers = regbuf;
-      regcache->registers_owned = 0;
-#ifndef IN_PROCESS_AGENT
-      regcache->register_status = NULL;
-#endif
-    }
-
-  regcache->registers_valid = 0;
-
-  return regcache;
-}
-
-#ifndef IN_PROCESS_AGENT
-
-struct regcache *
-new_register_cache (const struct target_desc *tdesc)
-{
-  struct regcache *regcache = new struct regcache;
-
-  gdb_assert (tdesc->registers_size != 0);
-
-  return init_register_cache (regcache, tdesc, NULL);
-}
-
-void
-free_register_cache (struct regcache *regcache)
-{
-  if (regcache)
-    {
-      if (regcache->registers_owned)
-	free (regcache->registers);
-      free (regcache->register_status);
-      delete regcache;
-    }
-}
-
-#endif
-
-void
-regcache_cpy (struct regcache *dst, struct regcache *src)
-{
-  gdb_assert (src != NULL && dst != NULL);
-  gdb_assert (src->tdesc == dst->tdesc);
-  gdb_assert (src != dst);
-
-  memcpy (dst->registers, src->registers, src->tdesc->registers_size);
-#ifndef IN_PROCESS_AGENT
-  if (dst->register_status != NULL && src->register_status != NULL)
-    memcpy (dst->register_status, src->register_status,
-	    src->tdesc->reg_defs.size ());
-#endif
-  dst->registers_valid = src->registers_valid;
-}
-
-/* Return a reference to the description of register N.  */
-
-static const struct reg &
-find_register_by_number (const struct target_desc *tdesc, int n)
-{
-  return tdesc->reg_defs[n];
-}
-
-#ifndef IN_PROCESS_AGENT
-
-void
-registers_to_string (struct regcache *regcache, char *buf)
-{
-  unsigned char *registers = regcache->registers;
-  const struct target_desc *tdesc = regcache->tdesc;
-
-  for (int i = 0; i < tdesc->reg_defs.size (); ++i)
-    {
-      if (regcache->register_status[i] == REG_VALID)
-	{
-	  bin2hex (registers, buf, register_size (tdesc, i));
-	  buf += register_size (tdesc, i) * 2;
-	}
-      else
-	{
-	  memset (buf, 'x', register_size (tdesc, i) * 2);
-	  buf += register_size (tdesc, i) * 2;
-	}
-      registers += register_size (tdesc, i);
-    }
-  *buf = '\0';
-}
-
-void
-registers_from_string (struct regcache *regcache, char *buf)
-{
-  int len = strlen (buf);
-  unsigned char *registers = regcache->registers;
-  const struct target_desc *tdesc = regcache->tdesc;
-
-  if (len != tdesc->registers_size * 2)
-    {
-      warning ("Wrong sized register packet (expected %d bytes, got %d)",
-	       2 * tdesc->registers_size, len);
-      if (len > tdesc->registers_size * 2)
-	len = tdesc->registers_size * 2;
-    }
-  hex2bin (buf, registers, len / 2);
-}
-
-int
-find_regno (const struct target_desc *tdesc, const char *name)
-{
-  for (int i = 0; i < tdesc->reg_defs.size (); ++i)
-    {
-      if (strcmp (name, find_register_by_number (tdesc, i).name) == 0)
-	return i;
-    }
-  internal_error (__FILE__, __LINE__, "Unknown register %s requested",
-		  name);
-}
-
-static void
-free_register_cache_thread (struct thread_info *thread)
-{
-  struct regcache *regcache = thread_regcache_data (thread);
-
-  if (regcache != NULL)
-    {
-      regcache_invalidate_thread (thread);
-      free_register_cache (regcache);
-      set_thread_regcache_data (thread, NULL);
-    }
-}
-
-void
-regcache_release (void)
-{
-  /* Flush and release all pre-existing register caches.  */
-  for_each_thread (free_register_cache_thread);
-}
-#endif
-
-int
-register_cache_size (const struct target_desc *tdesc)
-{
-  return tdesc->registers_size;
-}
-
-int
-register_size (const struct target_desc *tdesc, int n)
-{
-  return find_register_by_number (tdesc, n).size / 8;
-}
-
-/* See gdbsupport/common-regcache.h.  */
-
-int
-regcache_register_size (const struct regcache *regcache, int n)
-{
-  return register_size (regcache->tdesc, n);
-}
-
-static unsigned char *
-register_data (const struct regcache *regcache, int n, int fetch)
-{
-  return (regcache->registers
-	  + find_register_by_number (regcache->tdesc, n).offset / 8);
-}
-
-void
-supply_register (struct regcache *regcache, int n, const void *buf)
-{
-  return regcache->raw_supply (n, buf);
-}
-
-/* See gdbsupport/common-regcache.h.  */
-
-void
-regcache::raw_supply (int n, const void *buf)
-{
-  if (buf)
-    {
-      memcpy (register_data (this, n, 0), buf, register_size (tdesc, n));
-#ifndef IN_PROCESS_AGENT
-      if (register_status != NULL)
-	register_status[n] = REG_VALID;
-#endif
-    }
-  else
-    {
-      memset (register_data (this, n, 0), 0, register_size (tdesc, n));
-#ifndef IN_PROCESS_AGENT
-      if (register_status != NULL)
-	register_status[n] = REG_UNAVAILABLE;
-#endif
-    }
-}
-
-/* Supply register N with value zero to REGCACHE.  */
-
-void
-supply_register_zeroed (struct regcache *regcache, int n)
-{
-  memset (register_data (regcache, n, 0), 0,
-	  register_size (regcache->tdesc, n));
-#ifndef IN_PROCESS_AGENT
-  if (regcache->register_status != NULL)
-    regcache->register_status[n] = REG_VALID;
-#endif
-}
-
-#ifndef IN_PROCESS_AGENT
-
-/* Supply register called NAME with value zero to REGCACHE.  */
-
-void
-supply_register_by_name_zeroed (struct regcache *regcache,
-				const char *name)
-{
-  supply_register_zeroed (regcache, find_regno (regcache->tdesc, name));
-}
-
-#endif
-
-/* Supply the whole register set whose contents are stored in BUF, to
-   REGCACHE.  If BUF is NULL, all the registers' values are recorded
-   as unavailable.  */
-
-void
-supply_regblock (struct regcache *regcache, const void *buf)
-{
-  if (buf)
-    {
-      const struct target_desc *tdesc = regcache->tdesc;
-
-      memcpy (regcache->registers, buf, tdesc->registers_size);
-#ifndef IN_PROCESS_AGENT
-      {
-	int i;
-
-	for (i = 0; i < tdesc->reg_defs.size (); i++)
-	  regcache->register_status[i] = REG_VALID;
-      }
-#endif
-    }
-  else
-    {
-      const struct target_desc *tdesc = regcache->tdesc;
-
-      memset (regcache->registers, 0, tdesc->registers_size);
-#ifndef IN_PROCESS_AGENT
-      {
-	int i;
-
-	for (i = 0; i < tdesc->reg_defs.size (); i++)
-	  regcache->register_status[i] = REG_UNAVAILABLE;
-      }
-#endif
-    }
-}
-
-#ifndef IN_PROCESS_AGENT
-
-void
-supply_register_by_name (struct regcache *regcache,
-			 const char *name, const void *buf)
-{
-  supply_register (regcache, find_regno (regcache->tdesc, name), buf);
-}
-
-#endif
-
-void
-collect_register (struct regcache *regcache, int n, void *buf)
-{
-  regcache->raw_collect (n, buf);
-}
-
-/* See gdbsupport/common-regcache.h.  */
-
-void
-regcache::raw_collect (int n, void *buf) const
-{
-  memcpy (buf, register_data (this, n, 1), register_size (tdesc, n));
-}
-
-enum register_status
-regcache_raw_read_unsigned (struct regcache *regcache, int regnum,
-			    ULONGEST *val)
-{
-  int size;
-
-  gdb_assert (regcache != NULL);
-  gdb_assert (regnum >= 0
-	      && regnum < regcache->tdesc->reg_defs.size ());
-
-  size = register_size (regcache->tdesc, regnum);
-
-  if (size > (int) sizeof (ULONGEST))
-    error (_("That operation is not available on integers of more than"
-            "%d bytes."),
-          (int) sizeof (ULONGEST));
-
-  *val = 0;
-  collect_register (regcache, regnum, val);
-
-  return REG_VALID;
-}
-
-#ifndef IN_PROCESS_AGENT
-
-/* See regcache.h.  */
-
-ULONGEST
-regcache_raw_get_unsigned_by_name (struct regcache *regcache,
-				   const char *name)
-{
-  return regcache_raw_get_unsigned (regcache,
-				    find_regno (regcache->tdesc, name));
-}
-
-void
-collect_register_as_string (struct regcache *regcache, int n, char *buf)
-{
-  bin2hex (register_data (regcache, n, 1), buf,
-	   register_size (regcache->tdesc, n));
-}
-
-void
-collect_register_by_name (struct regcache *regcache,
-			  const char *name, void *buf)
-{
-  collect_register (regcache, find_regno (regcache->tdesc, name), buf);
-}
-
-/* Special handling for register PC.  */
-
-CORE_ADDR
-regcache_read_pc (struct regcache *regcache)
-{
-  CORE_ADDR pc_val;
-
-  if (the_target->read_pc)
-    pc_val = the_target->read_pc (regcache);
-  else
-    internal_error (__FILE__, __LINE__,
-		    "regcache_read_pc: Unable to find PC");
-
-  return pc_val;
-}
-
-void
-regcache_write_pc (struct regcache *regcache, CORE_ADDR pc)
-{
-  if (the_target->write_pc)
-    the_target->write_pc (regcache, pc);
-  else
-    internal_error (__FILE__, __LINE__,
-		    "regcache_write_pc: Unable to update PC");
-}
-
-#endif
-
-/* See gdbsupport/common-regcache.h.  */
-
-enum register_status
-regcache::get_register_status (int regnum) const
-{
-#ifndef IN_PROCESS_AGENT
-  gdb_assert (regnum >= 0 && regnum < tdesc->reg_defs.size ());
-  return (enum register_status) (register_status[regnum]);
-#else
-  return REG_VALID;
-#endif
-}
-
-/* See gdbsupport/common-regcache.h.  */
-
-bool
-regcache::raw_compare (int regnum, const void *buf, int offset) const
-{
-  gdb_assert (buf != NULL);
-
-  const unsigned char *regbuf = register_data (this, regnum, 1);
-  int size = register_size (tdesc, regnum);
-  gdb_assert (size >= offset);
-
-  return (memcmp (buf, regbuf + offset, size - offset) == 0);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/regcache.h ./gdb/gdbserver/regcache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/regcache.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/regcache.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,141 +0,0 @@
-/* Register support routines for the remote server for GDB.
-   Copyright (C) 2001-2020 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 GDBSERVER_REGCACHE_H
-#define GDBSERVER_REGCACHE_H
-
-#include "gdbsupport/common-regcache.h"
-
-struct thread_info;
-struct target_desc;
-
-/* The data for the register cache.  Note that we have one per
-   inferior; this is primarily for simplicity, as the performance
-   benefit is minimal.  */
-
-struct regcache : public reg_buffer_common
-{
-  /* The regcache's target description.  */
-  const struct target_desc *tdesc = nullptr;
-
-  /* Whether the REGISTERS buffer's contents are valid.  If false, we
-     haven't fetched the registers from the target yet.  Not that this
-     register cache is _not_ pass-through, unlike GDB's.  Note that
-     "valid" here is unrelated to whether the registers are available
-     in a traceframe.  For that, check REGISTER_STATUS below.  */
-  int registers_valid = 0;
-  int registers_owned = 0;
-  unsigned char *registers = nullptr;
-#ifndef IN_PROCESS_AGENT
-  /* One of REG_UNAVAILABLE or REG_VALID.  */
-  unsigned char *register_status = nullptr;
-#endif
-
-  /* See gdbsupport/common-regcache.h.  */
-  enum register_status get_register_status (int regnum) const override;
-
-  /* See gdbsupport/common-regcache.h.  */
-  void raw_supply (int regnum, const void *buf) override;
-
-  /* See gdbsupport/common-regcache.h.  */
-  void raw_collect (int regnum, void *buf) const override;
-
-  /* See gdbsupport/common-regcache.h.  */
-  bool raw_compare (int regnum, const void *buf, int offset) const override;
-};
-
-struct regcache *init_register_cache (struct regcache *regcache,
-				      const struct target_desc *tdesc,
-				      unsigned char *regbuf);
-
-void regcache_cpy (struct regcache *dst, struct regcache *src);
-
-/* Create a new register cache for INFERIOR.  */
-
-struct regcache *new_register_cache (const struct target_desc *tdesc);
-
-struct regcache *get_thread_regcache (struct thread_info *thread, int fetch);
-
-/* Release all memory associated with the register cache for INFERIOR.  */
-
-void free_register_cache (struct regcache *regcache);
-
-/* Invalidate cached registers for one thread.  */
-
-void regcache_invalidate_thread (struct thread_info *);
-
-/* Invalidate cached registers for all threads of the given process.  */
-
-void regcache_invalidate_pid (int pid);
-
-/* Invalidate cached registers for all threads of the current
-   process.  */
-
-void regcache_invalidate (void);
-
-/* Invalidate and release the register cache of all threads of the
-   current process.  */
-
-void regcache_release (void);
-
-/* Convert all registers to a string in the currently specified remote
-   format.  */
-
-void registers_to_string (struct regcache *regcache, char *buf);
-
-/* Convert a string to register values and fill our register cache.  */
-
-void registers_from_string (struct regcache *regcache, char *buf);
-
-/* For regcache_read_pc see gdbsupport/common-regcache.h.  */
-
-void regcache_write_pc (struct regcache *regcache, CORE_ADDR pc);
-
-int register_cache_size (const struct target_desc *tdesc);
-
-int register_size (const struct target_desc *tdesc, int n);
-
-int find_regno (const struct target_desc *tdesc, const char *name);
-
-void supply_register (struct regcache *regcache, int n, const void *buf);
-
-void supply_register_zeroed (struct regcache *regcache, int n);
-
-void supply_register_by_name (struct regcache *regcache,
-			      const char *name, const void *buf);
-
-void supply_register_by_name_zeroed (struct regcache *regcache,
-				     const char *name);
-
-void supply_regblock (struct regcache *regcache, const void *buf);
-
-void collect_register (struct regcache *regcache, int n, void *buf);
-
-void collect_register_as_string (struct regcache *regcache, int n, char *buf);
-
-void collect_register_by_name (struct regcache *regcache,
-			       const char *name, void *buf);
-
-/* Read a raw register as an unsigned integer.  Convenience wrapper
-   around regcache_raw_get_unsigned that takes a register name instead
-   of a register number.  */
-
-ULONGEST regcache_raw_get_unsigned_by_name (struct regcache *regcache,
-					    const char *name);
-
-#endif /* GDBSERVER_REGCACHE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/remote-utils.c ./gdb/gdbserver/remote-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/remote-utils.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/remote-utils.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,1691 +0,0 @@
-/* Remote utility routines for the remote server for GDB.
-   Copyright (C) 1986-2020 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 "server.h"
-#if HAVE_TERMIOS_H
-#include <termios.h>
-#endif
-#include "target.h"
-#include "gdbthread.h"
-#include "tdesc.h"
-#include "debug.h"
-#include "dll.h"
-#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>
-#endif
-#if HAVE_SYS_FILE_H
-#include <sys/file.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#if HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-#if HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-#if HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#if HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#include "gdbsupport/gdb_sys_time.h"
-#include <unistd.h>
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#include <sys/stat.h>
-
-#if USE_WIN32API
-#include <ws2tcpip.h>
-#endif
-
-#if __QNX__
-#include <sys/iomgr.h>
-#endif /* __QNX__ */
-
-#ifndef HAVE_SOCKLEN_T
-typedef int socklen_t;
-#endif
-
-#ifndef IN_PROCESS_AGENT
-
-#if USE_WIN32API
-# define INVALID_DESCRIPTOR INVALID_SOCKET
-#else
-# define INVALID_DESCRIPTOR -1
-#endif
-
-/* Extra value for readchar_callback.  */
-enum {
-  /* The callback is currently not scheduled.  */
-  NOT_SCHEDULED = -1
-};
-
-/* Status of the readchar callback.
-   Either NOT_SCHEDULED or the callback id.  */
-static int readchar_callback = NOT_SCHEDULED;
-
-static int readchar (void);
-static void reset_readchar (void);
-static void reschedule (void);
-
-/* A cache entry for a successfully looked-up symbol.  */
-struct sym_cache
-{
-  char *name;
-  CORE_ADDR addr;
-  struct sym_cache *next;
-};
-
-static int remote_is_stdio = 0;
-
-static gdb_fildes_t remote_desc = INVALID_DESCRIPTOR;
-static gdb_fildes_t listen_desc = INVALID_DESCRIPTOR;
-
-#ifdef USE_WIN32API
-# define read(fd, buf, len) recv (fd, (char *) buf, len, 0)
-# define write(fd, buf, len) send (fd, (char *) buf, len, 0)
-#endif
-
-int
-gdb_connected (void)
-{
-  return remote_desc != INVALID_DESCRIPTOR;
-}
-
-/* Return true if the remote connection is over stdio.  */
-
-int
-remote_connection_is_stdio (void)
-{
-  return remote_is_stdio;
-}
-
-static void
-enable_async_notification (int fd)
-{
-#if defined(F_SETFL) && defined (FASYNC)
-  int save_fcntl_flags;
-
-  save_fcntl_flags = fcntl (fd, F_GETFL, 0);
-  fcntl (fd, F_SETFL, save_fcntl_flags | FASYNC);
-#if defined (F_SETOWN)
-  fcntl (fd, F_SETOWN, getpid ());
-#endif
-#endif
-}
-
-static int
-handle_accept_event (int err, gdb_client_data client_data)
-{
-  struct sockaddr_storage sockaddr;
-  socklen_t len = sizeof (sockaddr);
-
-  if (debug_threads)
-    debug_printf ("handling possible accept event\n");
-
-  remote_desc = accept (listen_desc, (struct sockaddr *) &sockaddr, &len);
-  if (remote_desc == -1)
-    perror_with_name ("Accept failed");
-
-  /* Enable TCP keep alive process. */
-  socklen_t tmp = 1;
-  setsockopt (remote_desc, SOL_SOCKET, SO_KEEPALIVE,
-	      (char *) &tmp, sizeof (tmp));
-
-  /* Tell TCP not to delay small packets.  This greatly speeds up
-     interactive response. */
-  tmp = 1;
-  setsockopt (remote_desc, IPPROTO_TCP, TCP_NODELAY,
-	      (char *) &tmp, sizeof (tmp));
-
-#ifndef USE_WIN32API
-  signal (SIGPIPE, SIG_IGN);	/* If we don't do this, then gdbserver simply
-				   exits when the remote side dies.  */
-#endif
-
-  if (run_once)
-    {
-#ifndef USE_WIN32API
-      close (listen_desc);		/* No longer need this */
-#else
-      closesocket (listen_desc);	/* No longer need this */
-#endif
-    }
-
-  /* Even if !RUN_ONCE no longer notice new connections.  Still keep the
-     descriptor open for add_file_handler to wait for a new connection.  */
-  delete_file_handler (listen_desc);
-
-  /* Convert IP address to string.  */
-  char orig_host[GDB_NI_MAX_ADDR], orig_port[GDB_NI_MAX_PORT];
-
-  int r = getnameinfo ((struct sockaddr *) &sockaddr, len,
-		       orig_host, sizeof (orig_host),
-		       orig_port, sizeof (orig_port),
-		       NI_NUMERICHOST | NI_NUMERICSERV);
-
-  if (r != 0)
-    fprintf (stderr, _("Could not obtain remote address: %s\n"),
-	     gai_strerror (r));
-  else
-    fprintf (stderr, _("Remote debugging from host %s, port %s\n"),
-	     orig_host, orig_port);
-
-  enable_async_notification (remote_desc);
-
-  /* Register the event loop handler.  */
-  add_file_handler (remote_desc, handle_serial_event, NULL);
-
-  /* We have a new GDB connection now.  If we were disconnected
-     tracing, there's a window where the target could report a stop
-     event to the event loop, and since we have a connection now, we'd
-     try to send vStopped notifications to GDB.  But, don't do that
-     until GDB as selected all-stop/non-stop, and has queried the
-     threads' status ('?').  */
-  target_async (0);
-
-  return 0;
-}
-
-/* Prepare for a later connection to a remote debugger.
-   NAME is the filename used for communication.  */
-
-void
-remote_prepare (const char *name)
-{
-  client_state &cs = get_client_state ();
-#ifdef USE_WIN32API
-  static int winsock_initialized;
-#endif
-  socklen_t tmp;
-
-  remote_is_stdio = 0;
-  if (strcmp (name, STDIO_CONNECTION_NAME) == 0)
-    {
-      /* We need to record fact that we're using stdio sooner than the
-	 call to remote_open so start_inferior knows the connection is
-	 via stdio.  */
-      remote_is_stdio = 1;
-      cs.transport_is_reliable = 1;
-      return;
-    }
-
-  struct addrinfo hint;
-  struct addrinfo *ainfo;
-
-  memset (&hint, 0, sizeof (hint));
-  /* Assume no prefix will be passed, therefore we should use
-     AF_UNSPEC.  */
-  hint.ai_family = AF_UNSPEC;
-  hint.ai_socktype = SOCK_STREAM;
-  hint.ai_protocol = IPPROTO_TCP;
-
-  parsed_connection_spec parsed
-    = parse_connection_spec_without_prefix (name, &hint);
-
-  if (parsed.port_str.empty ())
-    {
-      cs.transport_is_reliable = 0;
-      return;
-    }
-
-#ifdef USE_WIN32API
-  if (!winsock_initialized)
-    {
-      WSADATA wsad;
-
-      WSAStartup (MAKEWORD (1, 0), &wsad);
-      winsock_initialized = 1;
-    }
-#endif
-
-  int r = getaddrinfo (parsed.host_str.c_str (), parsed.port_str.c_str (),
-		       &hint, &ainfo);
-
-  if (r != 0)
-    error (_("%s: cannot resolve name: %s"), name, gai_strerror (r));
-
-  scoped_free_addrinfo freeaddrinfo (ainfo);
-
-  struct addrinfo *iter;
-
-  for (iter = ainfo; iter != NULL; iter = iter->ai_next)
-    {
-      listen_desc = gdb_socket_cloexec (iter->ai_family, iter->ai_socktype,
-					iter->ai_protocol);
-
-      if (listen_desc >= 0)
-	break;
-    }
-
-  if (iter == NULL)
-    perror_with_name ("Can't open socket");
-
-  /* Allow rapid reuse of this port. */
-  tmp = 1;
-  setsockopt (listen_desc, SOL_SOCKET, SO_REUSEADDR, (char *) &tmp,
-	      sizeof (tmp));
-
-  switch (iter->ai_family)
-    {
-    case AF_INET:
-      ((struct sockaddr_in *) iter->ai_addr)->sin_addr.s_addr = INADDR_ANY;
-      break;
-    case AF_INET6:
-      ((struct sockaddr_in6 *) iter->ai_addr)->sin6_addr = in6addr_any;
-      break;
-    default:
-      internal_error (__FILE__, __LINE__,
-		      _("Invalid 'ai_family' %d\n"), iter->ai_family);
-    }
-
-  if (bind (listen_desc, iter->ai_addr, iter->ai_addrlen) != 0)
-    perror_with_name ("Can't bind address");
-
-  if (listen (listen_desc, 1) != 0)
-    perror_with_name ("Can't listen on socket");
-
-  cs.transport_is_reliable = 1;
-}
-
-/* Open a connection to a remote debugger.
-   NAME is the filename used for communication.  */
-
-void
-remote_open (const char *name)
-{
-  const char *port_str;
-
-  port_str = strchr (name, ':');
-#ifdef USE_WIN32API
-  if (port_str == NULL)
-    error ("Only HOST:PORT is supported on this platform.");
-#endif
-
-  if (strcmp (name, STDIO_CONNECTION_NAME) == 0)
-    {
-      fprintf (stderr, "Remote debugging using stdio\n");
-
-      /* Use stdin as the handle of the connection.
-	 We only select on reads, for example.  */
-      remote_desc = fileno (stdin);
-
-      enable_async_notification (remote_desc);
-
-      /* Register the event loop handler.  */
-      add_file_handler (remote_desc, handle_serial_event, NULL);
-    }
-#ifndef USE_WIN32API
-  else if (port_str == NULL)
-    {
-      struct stat statbuf;
-
-      if (stat (name, &statbuf) == 0
-	  && (S_ISCHR (statbuf.st_mode) || S_ISFIFO (statbuf.st_mode)))
-	remote_desc = open (name, O_RDWR);
-      else
-	{
-	  errno = EINVAL;
-	  remote_desc = -1;
-	}
-
-      if (remote_desc < 0)
-	perror_with_name ("Could not open remote device");
-
-#if HAVE_TERMIOS_H
-      {
-	struct termios termios;
-	tcgetattr (remote_desc, &termios);
-
-	termios.c_iflag = 0;
-	termios.c_oflag = 0;
-	termios.c_lflag = 0;
-	termios.c_cflag &= ~(CSIZE | PARENB);
-	termios.c_cflag |= CLOCAL | CS8;
-	termios.c_cc[VMIN] = 1;
-	termios.c_cc[VTIME] = 0;
-
-	tcsetattr (remote_desc, TCSANOW, &termios);
-      }
-#endif
-
-      fprintf (stderr, "Remote debugging using %s\n", name);
-
-      enable_async_notification (remote_desc);
-
-      /* Register the event loop handler.  */
-      add_file_handler (remote_desc, handle_serial_event, NULL);
-    }
-#endif /* USE_WIN32API */
-  else
-    {
-      char listen_port[GDB_NI_MAX_PORT];
-      struct sockaddr_storage sockaddr;
-      socklen_t len = sizeof (sockaddr);
-
-      if (getsockname (listen_desc, (struct sockaddr *) &sockaddr, &len) < 0)
-	perror_with_name ("Can't determine port");
-
-      int r = getnameinfo ((struct sockaddr *) &sockaddr, len,
-			   NULL, 0,
-			   listen_port, sizeof (listen_port),
-			   NI_NUMERICSERV);
-
-      if (r != 0)
-	fprintf (stderr, _("Can't obtain port where we are listening: %s"),
-		 gai_strerror (r));
-      else
-	fprintf (stderr, _("Listening on port %s\n"), listen_port);
-
-      fflush (stderr);
-
-      /* Register the event loop handler.  */
-      add_file_handler (listen_desc, handle_accept_event, NULL);
-    }
-}
-
-void
-remote_close (void)
-{
-  delete_file_handler (remote_desc);
-
-  disable_async_io ();
-
-#ifdef USE_WIN32API
-  closesocket (remote_desc);
-#else
-  if (! remote_connection_is_stdio ())
-    close (remote_desc);
-#endif
-  remote_desc = INVALID_DESCRIPTOR;
-
-  reset_readchar ();
-}
-
-#endif
-
-#ifndef IN_PROCESS_AGENT
-
-void
-decode_address (CORE_ADDR *addrp, const char *start, int len)
-{
-  CORE_ADDR addr;
-  char ch;
-  int i;
-
-  addr = 0;
-  for (i = 0; i < len; i++)
-    {
-      ch = start[i];
-      addr = addr << 4;
-      addr = addr | (fromhex (ch) & 0x0f);
-    }
-  *addrp = addr;
-}
-
-const char *
-decode_address_to_semicolon (CORE_ADDR *addrp, const char *start)
-{
-  const char *end;
-
-  end = start;
-  while (*end != '\0' && *end != ';')
-    end++;
-
-  decode_address (addrp, start, end - start);
-
-  if (*end == ';')
-    end++;
-  return end;
-}
-
-#endif
-
-#ifndef IN_PROCESS_AGENT
-
-/* Look for a sequence of characters which can be run-length encoded.
-   If there are any, update *CSUM and *P.  Otherwise, output the
-   single character.  Return the number of characters consumed.  */
-
-static int
-try_rle (char *buf, int remaining, unsigned char *csum, char **p)
-{
-  int n;
-
-  /* Always output the character.  */
-  *csum += buf[0];
-  *(*p)++ = buf[0];
-
-  /* Don't go past '~'.  */
-  if (remaining > 97)
-    remaining = 97;
-
-  for (n = 1; n < remaining; n++)
-    if (buf[n] != buf[0])
-      break;
-
-  /* N is the index of the first character not the same as buf[0].
-     buf[0] is counted twice, so by decrementing N, we get the number
-     of characters the RLE sequence will replace.  */
-  n--;
-
-  if (n < 3)
-    return 1;
-
-  /* Skip the frame characters.  The manual says to skip '+' and '-'
-     also, but there's no reason to.  Unfortunately these two unusable
-     characters double the encoded length of a four byte zero
-     value.  */
-  while (n + 29 == '$' || n + 29 == '#')
-    n--;
-
-  *csum += '*';
-  *(*p)++ = '*';
-  *csum += n + 29;
-  *(*p)++ = n + 29;
-
-  return n + 1;
-}
-
-#endif
-
-#ifndef IN_PROCESS_AGENT
-
-/* Write a PTID to BUF.  Returns BUF+CHARACTERS_WRITTEN.  */
-
-char *
-write_ptid (char *buf, ptid_t ptid)
-{
-  client_state &cs = get_client_state ();
-  int pid, tid;
-
-  if (cs.multi_process)
-    {
-      pid = ptid.pid ();
-      if (pid < 0)
-	buf += sprintf (buf, "p-%x.", -pid);
-      else
-	buf += sprintf (buf, "p%x.", pid);
-    }
-  tid = ptid.lwp ();
-  if (tid < 0)
-    buf += sprintf (buf, "-%x", -tid);
-  else
-    buf += sprintf (buf, "%x", tid);
-
-  return buf;
-}
-
-static ULONGEST
-hex_or_minus_one (const char *buf, const char **obuf)
-{
-  ULONGEST ret;
-
-  if (startswith (buf, "-1"))
-    {
-      ret = (ULONGEST) -1;
-      buf += 2;
-    }
-  else
-    buf = unpack_varlen_hex (buf, &ret);
-
-  if (obuf)
-    *obuf = buf;
-
-  return ret;
-}
-
-/* Extract a PTID from BUF.  If non-null, OBUF is set to the to one
-   passed the last parsed char.  Returns null_ptid on error.  */
-ptid_t
-read_ptid (const char *buf, const char **obuf)
-{
-  const char *p = buf;
-  const char *pp;
-  ULONGEST pid = 0, tid = 0;
-
-  if (*p == 'p')
-    {
-      /* Multi-process ptid.  */
-      pp = unpack_varlen_hex (p + 1, &pid);
-      if (*pp != '.')
-	error ("invalid remote ptid: %s\n", p);
-
-      p = pp + 1;
-
-      tid = hex_or_minus_one (p, &pp);
-
-      if (obuf)
-	*obuf = pp;
-      return ptid_t (pid, tid, 0);
-    }
-
-  /* No multi-process.  Just a tid.  */
-  tid = hex_or_minus_one (p, &pp);
-
-  /* Since GDB is not sending a process id (multi-process extensions
-     are off), then there's only one process.  Default to the first in
-     the list.  */
-  pid = pid_of (get_first_process ());
-
-  if (obuf)
-    *obuf = pp;
-  return ptid_t (pid, tid, 0);
-}
-
-/* Write COUNT bytes in BUF to the client.
-   The result is the number of bytes written or -1 if error.
-   This may return less than COUNT.  */
-
-static int
-write_prim (const void *buf, int count)
-{
-  if (remote_connection_is_stdio ())
-    return write (fileno (stdout), buf, count);
-  else
-    return write (remote_desc, buf, count);
-}
-
-/* Read COUNT bytes from the client and store in BUF.
-   The result is the number of bytes read or -1 if error.
-   This may return less than COUNT.  */
-
-static int
-read_prim (void *buf, int count)
-{
-  if (remote_connection_is_stdio ())
-    return read (fileno (stdin), buf, count);
-  else
-    return read (remote_desc, buf, count);
-}
-
-/* Send a packet to the remote machine, with error checking.
-   The data of the packet is in BUF, and the length of the
-   packet is in CNT.  Returns >= 0 on success, -1 otherwise.  */
-
-static int
-putpkt_binary_1 (char *buf, int cnt, int is_notif)
-{
-  client_state &cs = get_client_state ();
-  int i;
-  unsigned char csum = 0;
-  char *buf2;
-  char *p;
-  int cc;
-
-  buf2 = (char *) xmalloc (strlen ("$") + cnt + strlen ("#nn") + 1);
-
-  /* Copy the packet into buffer BUF2, encapsulating it
-     and giving it a checksum.  */
-
-  p = buf2;
-  if (is_notif)
-    *p++ = '%';
-  else
-    *p++ = '$';
-
-  for (i = 0; i < cnt;)
-    i += try_rle (buf + i, cnt - i, &csum, &p);
-
-  *p++ = '#';
-  *p++ = tohex ((csum >> 4) & 0xf);
-  *p++ = tohex (csum & 0xf);
-
-  *p = '\0';
-
-  /* Send it over and over until we get a positive ack.  */
-
-  do
-    {
-      if (write_prim (buf2, p - buf2) != p - buf2)
-	{
-	  perror ("putpkt(write)");
-	  free (buf2);
-	  return -1;
-	}
-
-      if (cs.noack_mode || is_notif)
-	{
-	  /* Don't expect an ack then.  */
-	  if (remote_debug)
-	    {
-	      if (is_notif)
-		debug_printf ("putpkt (\"%s\"); [notif]\n", buf2);
-	      else
-		debug_printf ("putpkt (\"%s\"); [noack mode]\n", buf2);
-	      debug_flush ();
-	    }
-	  break;
-	}
-
-      if (remote_debug)
-	{
-	  debug_printf ("putpkt (\"%s\"); [looking for ack]\n", buf2);
-	  debug_flush ();
-	}
-
-      cc = readchar ();
-
-      if (cc < 0)
-	{
-	  free (buf2);
-	  return -1;
-	}
-
-      if (remote_debug)
-	{
-	  debug_printf ("[received '%c' (0x%x)]\n", cc, cc);
-	  debug_flush ();
-	}
-
-      /* Check for an input interrupt while we're here.  */
-      if (cc == '\003' && current_thread != NULL)
-	(*the_target->request_interrupt) ();
-    }
-  while (cc != '+');
-
-  free (buf2);
-  return 1;			/* Success! */
-}
-
-int
-putpkt_binary (char *buf, int cnt)
-{
-  return putpkt_binary_1 (buf, cnt, 0);
-}
-
-/* Send a packet to the remote machine, with error checking.  The data
-   of the packet is in BUF, and the packet should be a NUL-terminated
-   string.  Returns >= 0 on success, -1 otherwise.  */
-
-int
-putpkt (char *buf)
-{
-  return putpkt_binary (buf, strlen (buf));
-}
-
-int
-putpkt_notif (char *buf)
-{
-  return putpkt_binary_1 (buf, strlen (buf), 1);
-}
-
-/* Come here when we get an input interrupt from the remote side.  This
-   interrupt should only be active while we are waiting for the child to do
-   something.  Thus this assumes readchar:bufcnt is 0.
-   About the only thing that should come through is a ^C, which
-   will cause us to request child interruption.  */
-
-static void
-input_interrupt (int unused)
-{
-  fd_set readset;
-  struct timeval immediate = { 0, 0 };
-
-  /* Protect against spurious interrupts.  This has been observed to
-     be a problem under NetBSD 1.4 and 1.5.  */
-
-  FD_ZERO (&readset);
-  FD_SET (remote_desc, &readset);
-  if (select (remote_desc + 1, &readset, 0, 0, &immediate) > 0)
-    {
-      int cc;
-      char c = 0;
-
-      cc = read_prim (&c, 1);
-
-      if (cc == 0)
-	{
-	  fprintf (stderr, "client connection closed\n");
-	  return;
-	}
-      else if (cc != 1 || c != '\003')
-	{
-	  fprintf (stderr, "input_interrupt, count = %d c = %d ", cc, c);
-	  if (isprint (c))
-	    fprintf (stderr, "('%c')\n", c);
-	  else
-	    fprintf (stderr, "('\\x%02x')\n", c & 0xff);
-	  return;
-	}
-
-      (*the_target->request_interrupt) ();
-    }
-}
-
-/* Check if the remote side sent us an interrupt request (^C).  */
-void
-check_remote_input_interrupt_request (void)
-{
-  /* This function may be called before establishing communications,
-     therefore we need to validate the remote descriptor.  */
-
-  if (remote_desc == INVALID_DESCRIPTOR)
-    return;
-
-  input_interrupt (0);
-}
-
-/* Asynchronous I/O support.  SIGIO must be unblocked when waiting,
-   in order to accept Control-C from the client, and must be blocked
-   when talking to the client.  */
-
-static void
-block_unblock_async_io (int block)
-{
-#ifndef USE_WIN32API
-  sigset_t sigio_set;
-
-  sigemptyset (&sigio_set);
-  sigaddset (&sigio_set, SIGIO);
-  gdb_sigmask (block ? SIG_BLOCK : SIG_UNBLOCK, &sigio_set, NULL);
-#endif
-}
-
-#ifdef __QNX__
-static void
-nto_comctrl (int enable)
-{
-  struct sigevent event;
-
-  if (enable)
-    {
-      event.sigev_notify = SIGEV_SIGNAL_THREAD;
-      event.sigev_signo = SIGIO;
-      event.sigev_code = 0;
-      event.sigev_value.sival_ptr = NULL;
-      event.sigev_priority = -1;
-      ionotify (remote_desc, _NOTIFY_ACTION_POLLARM, _NOTIFY_COND_INPUT,
-		&event);
-    }
-  else
-    ionotify (remote_desc, _NOTIFY_ACTION_POLL, _NOTIFY_COND_INPUT, NULL);
-}
-#endif /* __QNX__ */
-
-
-/* Current state of asynchronous I/O.  */
-static int async_io_enabled;
-
-/* Enable asynchronous I/O.  */
-void
-enable_async_io (void)
-{
-  if (async_io_enabled)
-    return;
-
-  block_unblock_async_io (0);
-
-  async_io_enabled = 1;
-#ifdef __QNX__
-  nto_comctrl (1);
-#endif /* __QNX__ */
-}
-
-/* Disable asynchronous I/O.  */
-void
-disable_async_io (void)
-{
-  if (!async_io_enabled)
-    return;
-
-  block_unblock_async_io (1);
-
-  async_io_enabled = 0;
-#ifdef __QNX__
-  nto_comctrl (0);
-#endif /* __QNX__ */
-
-}
-
-void
-initialize_async_io (void)
-{
-  /* Make sure that async I/O starts blocked.  */
-  async_io_enabled = 1;
-  disable_async_io ();
-
-  /* Install the signal handler.  */
-#ifndef USE_WIN32API
-  signal (SIGIO, input_interrupt);
-#endif
-}
-
-/* Internal buffer used by readchar.
-   These are global to readchar because reschedule_remote needs to be
-   able to tell whether the buffer is empty.  */
-
-static unsigned char readchar_buf[BUFSIZ];
-static int readchar_bufcnt = 0;
-static unsigned char *readchar_bufp;
-
-/* Returns next char from remote GDB.  -1 if error.  */
-
-static int
-readchar (void)
-{
-  int ch;
-
-  if (readchar_bufcnt == 0)
-    {
-      readchar_bufcnt = read_prim (readchar_buf, sizeof (readchar_buf));
-
-      if (readchar_bufcnt <= 0)
-	{
-	  if (readchar_bufcnt == 0)
-	    {
-	      if (remote_debug)
-		debug_printf ("readchar: Got EOF\n");
-	    }
-	  else
-	    perror ("readchar");
-
-	  return -1;
-	}
-
-      readchar_bufp = readchar_buf;
-    }
-
-  readchar_bufcnt--;
-  ch = *readchar_bufp++;
-  reschedule ();
-  return ch;
-}
-
-/* Reset the readchar state machine.  */
-
-static void
-reset_readchar (void)
-{
-  readchar_bufcnt = 0;
-  if (readchar_callback != NOT_SCHEDULED)
-    {
-      delete_callback_event (readchar_callback);
-      readchar_callback = NOT_SCHEDULED;
-    }
-}
-
-/* Process remaining data in readchar_buf.  */
-
-static int
-process_remaining (void *context)
-{
-  int res;
-
-  /* This is a one-shot event.  */
-  readchar_callback = NOT_SCHEDULED;
-
-  if (readchar_bufcnt > 0)
-    res = handle_serial_event (0, NULL);
-  else
-    res = 0;
-
-  return res;
-}
-
-/* If there is still data in the buffer, queue another event to process it,
-   we can't sleep in select yet.  */
-
-static void
-reschedule (void)
-{
-  if (readchar_bufcnt > 0 && readchar_callback == NOT_SCHEDULED)
-    readchar_callback = append_callback_event (process_remaining, NULL);
-}
-
-/* Read a packet from the remote machine, with error checking,
-   and store it in BUF.  Returns length of packet, or negative if error. */
-
-int
-getpkt (char *buf)
-{
-  client_state &cs = get_client_state ();
-  char *bp;
-  unsigned char csum, c1, c2;
-  int c;
-
-  while (1)
-    {
-      csum = 0;
-
-      while (1)
-	{
-	  c = readchar ();
-
-	  /* The '\003' may appear before or after each packet, so
-	     check for an input interrupt.  */
-	  if (c == '\003')
-	    {
-	      (*the_target->request_interrupt) ();
-	      continue;
-	    }
-
-	  if (c == '$')
-	    break;
-	  if (remote_debug)
-	    {
-	      debug_printf ("[getpkt: discarding char '%c']\n", c);
-	      debug_flush ();
-	    }
-
-	  if (c < 0)
-	    return -1;
-	}
-
-      bp = buf;
-      while (1)
-	{
-	  c = readchar ();
-	  if (c < 0)
-	    return -1;
-	  if (c == '#')
-	    break;
-	  *bp++ = c;
-	  csum += c;
-	}
-      *bp = 0;
-
-      c1 = fromhex (readchar ());
-      c2 = fromhex (readchar ());
-
-      if (csum == (c1 << 4) + c2)
-	break;
-
-      if (cs.noack_mode)
-	{
-	  fprintf (stderr,
-		   "Bad checksum, sentsum=0x%x, csum=0x%x, "
-		   "buf=%s [no-ack-mode, Bad medium?]\n",
-		   (c1 << 4) + c2, csum, buf);
-	  /* Not much we can do, GDB wasn't expecting an ack/nac.  */
-	  break;
-	}
-
-      fprintf (stderr, "Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n",
-	       (c1 << 4) + c2, csum, buf);
-      if (write_prim ("-", 1) != 1)
-	return -1;
-    }
-
-  if (!cs.noack_mode)
-    {
-      if (remote_debug)
-	{
-	  debug_printf ("getpkt (\"%s\");  [sending ack] \n", buf);
-	  debug_flush ();
-	}
-
-      if (write_prim ("+", 1) != 1)
-	return -1;
-
-      if (remote_debug)
-	{
-	  debug_printf ("[sent ack]\n");
-	  debug_flush ();
-	}
-    }
-  else
-    {
-      if (remote_debug)
-	{
-	  debug_printf ("getpkt (\"%s\");  [no ack sent] \n", buf);
-	  debug_flush ();
-	}
-    }
-
-  /* The readchar above may have already read a '\003' out of the socket
-     and moved it to the local buffer.  For example, when GDB sends
-     vCont;c immediately followed by interrupt (see
-     gdb.base/interrupt-noterm.exp).  As soon as we see the vCont;c, we'll
-     resume the inferior and wait.  Since we've already moved the '\003'
-     to the local buffer, SIGIO won't help.  In that case, if we don't
-     check for interrupt after the vCont;c packet, the interrupt character
-     would stay in the buffer unattended until after the next (unrelated)
-     stop.  */
-  while (readchar_bufcnt > 0 && *readchar_bufp == '\003')
-    {
-      /* Consume the interrupt character in the buffer.  */
-      readchar ();
-      (*the_target->request_interrupt) ();
-    }
-
-  return bp - buf;
-}
-
-void
-write_ok (char *buf)
-{
-  buf[0] = 'O';
-  buf[1] = 'K';
-  buf[2] = '\0';
-}
-
-void
-write_enn (char *buf)
-{
-  /* Some day, we should define the meanings of the error codes... */
-  buf[0] = 'E';
-  buf[1] = '0';
-  buf[2] = '1';
-  buf[3] = '\0';
-}
-
-#endif
-
-#ifndef IN_PROCESS_AGENT
-
-static char *
-outreg (struct regcache *regcache, int regno, char *buf)
-{
-  if ((regno >> 12) != 0)
-    *buf++ = tohex ((regno >> 12) & 0xf);
-  if ((regno >> 8) != 0)
-    *buf++ = tohex ((regno >> 8) & 0xf);
-  *buf++ = tohex ((regno >> 4) & 0xf);
-  *buf++ = tohex (regno & 0xf);
-  *buf++ = ':';
-  collect_register_as_string (regcache, regno, buf);
-  buf += 2 * register_size (regcache->tdesc, regno);
-  *buf++ = ';';
-
-  return buf;
-}
-
-void
-prepare_resume_reply (char *buf, ptid_t ptid,
-		      struct target_waitstatus *status)
-{
-  client_state &cs = get_client_state ();
-  if (debug_threads)
-    debug_printf ("Writing resume reply for %s:%d\n",
-		  target_pid_to_str (ptid), status->kind);
-
-  switch (status->kind)
-    {
-    case TARGET_WAITKIND_STOPPED:
-    case TARGET_WAITKIND_FORKED:
-    case TARGET_WAITKIND_VFORKED:
-    case TARGET_WAITKIND_VFORK_DONE:
-    case TARGET_WAITKIND_EXECD:
-    case TARGET_WAITKIND_THREAD_CREATED:
-    case TARGET_WAITKIND_SYSCALL_ENTRY:
-    case TARGET_WAITKIND_SYSCALL_RETURN:
-      {
-	struct thread_info *saved_thread;
-	const char **regp;
-	struct regcache *regcache;
-
-	if ((status->kind == TARGET_WAITKIND_FORKED && cs.report_fork_events)
-	    || (status->kind == TARGET_WAITKIND_VFORKED 
-		&& cs.report_vfork_events))
-	  {
-	    enum gdb_signal signal = GDB_SIGNAL_TRAP;
-	    const char *event = (status->kind == TARGET_WAITKIND_FORKED
-				 ? "fork" : "vfork");
-
-	    sprintf (buf, "T%02x%s:", signal, event);
-	    buf += strlen (buf);
-	    buf = write_ptid (buf, status->value.related_pid);
-	    strcat (buf, ";");
-	  }
-	else if (status->kind == TARGET_WAITKIND_VFORK_DONE 
-		 && cs.report_vfork_events)
-	  {
-	    enum gdb_signal signal = GDB_SIGNAL_TRAP;
-
-	    sprintf (buf, "T%02xvforkdone:;", signal);
-	  }
-	else if (status->kind == TARGET_WAITKIND_EXECD && cs.report_exec_events)
-	  {
-	    enum gdb_signal signal = GDB_SIGNAL_TRAP;
-	    const char *event = "exec";
-	    char hexified_pathname[PATH_MAX * 2];
-
-	    sprintf (buf, "T%02x%s:", signal, event);
-	    buf += strlen (buf);
-
-	    /* Encode pathname to hexified format.  */
-	    bin2hex ((const gdb_byte *) status->value.execd_pathname,
-		     hexified_pathname,
-		     strlen (status->value.execd_pathname));
-
-	    sprintf (buf, "%s;", hexified_pathname);
-	    xfree (status->value.execd_pathname);
-	    status->value.execd_pathname = NULL;
-	    buf += strlen (buf);
-	  }
-	else if (status->kind == TARGET_WAITKIND_THREAD_CREATED
-		 && cs.report_thread_events)
-	  {
-	    enum gdb_signal signal = GDB_SIGNAL_TRAP;
-
-	    sprintf (buf, "T%02xcreate:;", signal);
-	  }
-	else if (status->kind == TARGET_WAITKIND_SYSCALL_ENTRY
-		 || status->kind == TARGET_WAITKIND_SYSCALL_RETURN)
-	  {
-	    enum gdb_signal signal = GDB_SIGNAL_TRAP;
-	    const char *event = (status->kind == TARGET_WAITKIND_SYSCALL_ENTRY
-				 ? "syscall_entry" : "syscall_return");
-
-	    sprintf (buf, "T%02x%s:%x;", signal, event,
-		     status->value.syscall_number);
-	  }
-	else
-	  sprintf (buf, "T%02x", status->value.sig);
-
-	buf += strlen (buf);
-
-	saved_thread = current_thread;
-
-	switch_to_thread (ptid);
-
-	regp = current_target_desc ()->expedite_regs;
-
-	regcache = get_thread_regcache (current_thread, 1);
-
-	if (the_target->stopped_by_watchpoint != NULL
-	    && (*the_target->stopped_by_watchpoint) ())
-	  {
-	    CORE_ADDR addr;
-	    int i;
-
-	    memcpy (buf, "watch:", 6);
-	    buf += 6;
-
-	    addr = (*the_target->stopped_data_address) ();
-
-	    /* Convert each byte of the address into two hexadecimal
-	       chars.  Note that we take sizeof (void *) instead of
-	       sizeof (addr); this is to avoid sending a 64-bit
-	       address to a 32-bit GDB.  */
-	    for (i = sizeof (void *) * 2; i > 0; i--)
-	      *buf++ = tohex ((addr >> (i - 1) * 4) & 0xf);
-	    *buf++ = ';';
-	  }
-	else if (cs.swbreak_feature && target_stopped_by_sw_breakpoint ())
-	  {
-	    sprintf (buf, "swbreak:;");
-	    buf += strlen (buf);
-	  }
-	else if (cs.hwbreak_feature && target_stopped_by_hw_breakpoint ())
-	  {
-	    sprintf (buf, "hwbreak:;");
-	    buf += strlen (buf);
-	  }
-
-	while (*regp)
-	  {
-	    buf = outreg (regcache, find_regno (regcache->tdesc, *regp), buf);
-	    regp ++;
-	  }
-	*buf = '\0';
-
-	/* Formerly, if the debugger had not used any thread features
-	   we would not burden it with a thread status response.  This
-	   was for the benefit of GDB 4.13 and older.  However, in
-	   recent GDB versions the check (``if (cont_thread != 0)'')
-	   does not have the desired effect because of sillyness in
-	   the way that the remote protocol handles specifying a
-	   thread.  Since thread support relies on qSymbol support
-	   anyway, assume GDB can handle threads.  */
-
-	if (using_threads && !disable_packet_Tthread)
-	  {
-	    /* This if (1) ought to be unnecessary.  But remote_wait
-	       in GDB will claim this event belongs to inferior_ptid
-	       if we do not specify a thread, and there's no way for
-	       gdbserver to know what inferior_ptid is.  */
-	    if (1 || cs.general_thread != ptid)
-	      {
-		int core = -1;
-		/* In non-stop, don't change the general thread behind
-		   GDB's back.  */
-		if (!non_stop)
-		  cs.general_thread = ptid;
-		sprintf (buf, "thread:");
-		buf += strlen (buf);
-		buf = write_ptid (buf, ptid);
-		strcat (buf, ";");
-		buf += strlen (buf);
-
-		core = target_core_of_thread (ptid);
-
-		if (core != -1)
-		  {
-		    sprintf (buf, "core:");
-		    buf += strlen (buf);
-		    sprintf (buf, "%x", core);
-		    strcat (buf, ";");
-		    buf += strlen (buf);
-		  }
-	      }
-	  }
-
-	if (dlls_changed)
-	  {
-	    strcpy (buf, "library:;");
-	    buf += strlen (buf);
-	    dlls_changed = 0;
-	  }
-
-	current_thread = saved_thread;
-      }
-      break;
-    case TARGET_WAITKIND_EXITED:
-      if (cs.multi_process)
-	sprintf (buf, "W%x;process:%x",
-		 status->value.integer, ptid.pid ());
-      else
-	sprintf (buf, "W%02x", status->value.integer);
-      break;
-    case TARGET_WAITKIND_SIGNALLED:
-      if (cs.multi_process)
-	sprintf (buf, "X%x;process:%x",
-		 status->value.sig, ptid.pid ());
-      else
-	sprintf (buf, "X%02x", status->value.sig);
-      break;
-    case TARGET_WAITKIND_THREAD_EXITED:
-      sprintf (buf, "w%x;", status->value.integer);
-      buf += strlen (buf);
-      buf = write_ptid (buf, ptid);
-      break;
-    case TARGET_WAITKIND_NO_RESUMED:
-      sprintf (buf, "N");
-      break;
-    default:
-      error ("unhandled waitkind");
-      break;
-    }
-}
-
-void
-decode_m_packet (char *from, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr)
-{
-  int i = 0, j = 0;
-  char ch;
-  *mem_addr_ptr = *len_ptr = 0;
-
-  while ((ch = from[i++]) != ',')
-    {
-      *mem_addr_ptr = *mem_addr_ptr << 4;
-      *mem_addr_ptr |= fromhex (ch) & 0x0f;
-    }
-
-  for (j = 0; j < 4; j++)
-    {
-      if ((ch = from[i++]) == 0)
-	break;
-      *len_ptr = *len_ptr << 4;
-      *len_ptr |= fromhex (ch) & 0x0f;
-    }
-}
-
-void
-decode_M_packet (char *from, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr,
-		 unsigned char **to_p)
-{
-  int i = 0;
-  char ch;
-  *mem_addr_ptr = *len_ptr = 0;
-
-  while ((ch = from[i++]) != ',')
-    {
-      *mem_addr_ptr = *mem_addr_ptr << 4;
-      *mem_addr_ptr |= fromhex (ch) & 0x0f;
-    }
-
-  while ((ch = from[i++]) != ':')
-    {
-      *len_ptr = *len_ptr << 4;
-      *len_ptr |= fromhex (ch) & 0x0f;
-    }
-
-  if (*to_p == NULL)
-    *to_p = (unsigned char *) xmalloc (*len_ptr);
-
-  hex2bin (&from[i++], *to_p, *len_ptr);
-}
-
-int
-decode_X_packet (char *from, int packet_len, CORE_ADDR *mem_addr_ptr,
-		 unsigned int *len_ptr, unsigned char **to_p)
-{
-  int i = 0;
-  char ch;
-  *mem_addr_ptr = *len_ptr = 0;
-
-  while ((ch = from[i++]) != ',')
-    {
-      *mem_addr_ptr = *mem_addr_ptr << 4;
-      *mem_addr_ptr |= fromhex (ch) & 0x0f;
-    }
-
-  while ((ch = from[i++]) != ':')
-    {
-      *len_ptr = *len_ptr << 4;
-      *len_ptr |= fromhex (ch) & 0x0f;
-    }
-
-  if (*to_p == NULL)
-    *to_p = (unsigned char *) xmalloc (*len_ptr);
-
-  if (remote_unescape_input ((const gdb_byte *) &from[i], packet_len - i,
-			     *to_p, *len_ptr) != *len_ptr)
-    return -1;
-
-  return 0;
-}
-
-/* Decode a qXfer write request.  */
-
-int
-decode_xfer_write (char *buf, int packet_len, CORE_ADDR *offset,
-		   unsigned int *len, unsigned char *data)
-{
-  char ch;
-  char *b = buf;
-
-  /* Extract the offset.  */
-  *offset = 0;
-  while ((ch = *buf++) != ':')
-    {
-      *offset = *offset << 4;
-      *offset |= fromhex (ch) & 0x0f;
-    }
-
-  /* Get encoded data.  */
-  packet_len -= buf - b;
-  *len = remote_unescape_input ((const gdb_byte *) buf, packet_len,
-				data, packet_len);
-  return 0;
-}
-
-/* Decode the parameters of a qSearch:memory packet.  */
-
-int
-decode_search_memory_packet (const char *buf, int packet_len,
-			     CORE_ADDR *start_addrp,
-			     CORE_ADDR *search_space_lenp,
-			     gdb_byte *pattern, unsigned int *pattern_lenp)
-{
-  const char *p = buf;
-
-  p = decode_address_to_semicolon (start_addrp, p);
-  p = decode_address_to_semicolon (search_space_lenp, p);
-  packet_len -= p - buf;
-  *pattern_lenp = remote_unescape_input ((const gdb_byte *) p, packet_len,
-					 pattern, packet_len);
-  return 0;
-}
-
-static void
-free_sym_cache (struct sym_cache *sym)
-{
-  if (sym != NULL)
-    {
-      free (sym->name);
-      free (sym);
-    }
-}
-
-void
-clear_symbol_cache (struct sym_cache **symcache_p)
-{
-  struct sym_cache *sym, *next;
-
-  /* Check the cache first.  */
-  for (sym = *symcache_p; sym; sym = next)
-    {
-      next = sym->next;
-      free_sym_cache (sym);
-    }
-
-  *symcache_p = NULL;
-}
-
-/* Get the address of NAME, and return it in ADDRP if found.  if
-   MAY_ASK_GDB is false, assume symbol cache misses are failures.
-   Returns 1 if the symbol is found, 0 if it is not, -1 on error.  */
-
-int
-look_up_one_symbol (const char *name, CORE_ADDR *addrp, int may_ask_gdb)
-{
-  client_state &cs = get_client_state ();
-  char *p, *q;
-  int len;
-  struct sym_cache *sym;
-  struct process_info *proc;
-
-  proc = current_process ();
-
-  /* Check the cache first.  */
-  for (sym = proc->symbol_cache; sym; sym = sym->next)
-    if (strcmp (name, sym->name) == 0)
-      {
-	*addrp = sym->addr;
-	return 1;
-      }
-
-  /* It might not be an appropriate time to look up a symbol,
-     e.g. while we're trying to fetch registers.  */
-  if (!may_ask_gdb)
-    return 0;
-
-  /* Send the request.  */
-  strcpy (cs.own_buf, "qSymbol:");
-  bin2hex ((const gdb_byte *) name, cs.own_buf + strlen ("qSymbol:"),
-	  strlen (name));
-  if (putpkt (cs.own_buf) < 0)
-    return -1;
-
-  /* FIXME:  Eventually add buffer overflow checking (to getpkt?)  */
-  len = getpkt (cs.own_buf);
-  if (len < 0)
-    return -1;
-
-  /* We ought to handle pretty much any packet at this point while we
-     wait for the qSymbol "response".  That requires re-entering the
-     main loop.  For now, this is an adequate approximation; allow
-     GDB to read from memory and handle 'v' packets (for vFile transfers)
-     while it figures out the address of the symbol.  */
-  while (1)
-    {
-      if (cs.own_buf[0] == 'm')
-	{
-	  CORE_ADDR mem_addr;
-	  unsigned char *mem_buf;
-	  unsigned int mem_len;
-
-	  decode_m_packet (&cs.own_buf[1], &mem_addr, &mem_len);
-	  mem_buf = (unsigned char *) xmalloc (mem_len);
-	  if (read_inferior_memory (mem_addr, mem_buf, mem_len) == 0)
-	    bin2hex (mem_buf, cs.own_buf, mem_len);
-	  else
-	    write_enn (cs.own_buf);
-	  free (mem_buf);
-	  if (putpkt (cs.own_buf) < 0)
-	    return -1;
-	}
-      else if (cs.own_buf[0] == 'v')
-	{
-	  int new_len = -1;
-	  handle_v_requests (cs.own_buf, len, &new_len);
-	  if (new_len != -1)
-	    putpkt_binary (cs.own_buf, new_len);
-	  else
-	    putpkt (cs.own_buf);
-	}
-      else
-	break;
-      len = getpkt (cs.own_buf);
-      if (len < 0)
-	return -1;
-    }
-
-  if (!startswith (cs.own_buf, "qSymbol:"))
-    {
-      warning ("Malformed response to qSymbol, ignoring: %s", cs.own_buf);
-      return -1;
-    }
-
-  p = cs.own_buf + strlen ("qSymbol:");
-  q = p;
-  while (*q && *q != ':')
-    q++;
-
-  /* Make sure we found a value for the symbol.  */
-  if (p == q || *q == '\0')
-    return 0;
-
-  decode_address (addrp, p, q - p);
-
-  /* Save the symbol in our cache.  */
-  sym = XNEW (struct sym_cache);
-  sym->name = xstrdup (name);
-  sym->addr = *addrp;
-  sym->next = proc->symbol_cache;
-  proc->symbol_cache = sym;
-
-  return 1;
-}
-
-/* Relocate an instruction to execute at a different address.  OLDLOC
-   is the address in the inferior memory where the instruction to
-   relocate is currently at.  On input, TO points to the destination
-   where we want the instruction to be copied (and possibly adjusted)
-   to.  On output, it points to one past the end of the resulting
-   instruction(s).  The effect of executing the instruction at TO
-   shall be the same as if executing it at OLDLOC.  For example, call
-   instructions that implicitly push the return address on the stack
-   should be adjusted to return to the instruction after OLDLOC;
-   relative branches, and other PC-relative instructions need the
-   offset adjusted; etc.  Returns 0 on success, -1 on failure.  */
-
-int
-relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc)
-{
-  client_state &cs = get_client_state ();
-  int len;
-  ULONGEST written = 0;
-
-  /* Send the request.  */
-  sprintf (cs.own_buf, "qRelocInsn:%s;%s", paddress (oldloc),
-	   paddress (*to));
-  if (putpkt (cs.own_buf) < 0)
-    return -1;
-
-  /* FIXME:  Eventually add buffer overflow checking (to getpkt?)  */
-  len = getpkt (cs.own_buf);
-  if (len < 0)
-    return -1;
-
-  /* We ought to handle pretty much any packet at this point while we
-     wait for the qRelocInsn "response".  That requires re-entering
-     the main loop.  For now, this is an adequate approximation; allow
-     GDB to access memory.  */
-  while (cs.own_buf[0] == 'm' || cs.own_buf[0] == 'M' || cs.own_buf[0] == 'X')
-    {
-      CORE_ADDR mem_addr;
-      unsigned char *mem_buf = NULL;
-      unsigned int mem_len;
-
-      if (cs.own_buf[0] == 'm')
-	{
-	  decode_m_packet (&cs.own_buf[1], &mem_addr, &mem_len);
-	  mem_buf = (unsigned char *) xmalloc (mem_len);
-	  if (read_inferior_memory (mem_addr, mem_buf, mem_len) == 0)
-	    bin2hex (mem_buf, cs.own_buf, mem_len);
-	  else
-	    write_enn (cs.own_buf);
-	}
-      else if (cs.own_buf[0] == 'X')
-	{
-	  if (decode_X_packet (&cs.own_buf[1], len - 1, &mem_addr,
-			       &mem_len, &mem_buf) < 0
-	      || target_write_memory (mem_addr, mem_buf, mem_len) != 0)
-	    write_enn (cs.own_buf);
-	  else
-	    write_ok (cs.own_buf);
-	}
-      else
-	{
-	  decode_M_packet (&cs.own_buf[1], &mem_addr, &mem_len, &mem_buf);
-	  if (target_write_memory (mem_addr, mem_buf, mem_len) == 0)
-	    write_ok (cs.own_buf);
-	  else
-	    write_enn (cs.own_buf);
-	}
-      free (mem_buf);
-      if (putpkt (cs.own_buf) < 0)
-	return -1;
-      len = getpkt (cs.own_buf);
-      if (len < 0)
-	return -1;
-    }
-
-  if (cs.own_buf[0] == 'E')
-    {
-      warning ("An error occurred while relocating an instruction: %s",
-	       cs.own_buf);
-      return -1;
-    }
-
-  if (!startswith (cs.own_buf, "qRelocInsn:"))
-    {
-      warning ("Malformed response to qRelocInsn, ignoring: %s",
-	       cs.own_buf);
-      return -1;
-    }
-
-  unpack_varlen_hex (cs.own_buf + strlen ("qRelocInsn:"), &written);
-
-  *to += written;
-  return 0;
-}
-
-void
-monitor_output (const char *msg)
-{
-  int len = strlen (msg);
-  char *buf = (char *) xmalloc (len * 2 + 2);
-
-  buf[0] = 'O';
-  bin2hex ((const gdb_byte *) msg, buf + 1, len);
-
-  putpkt (buf);
-  free (buf);
-}
-
-#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/remote-utils.h ./gdb/gdbserver/remote-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/remote-utils.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/remote-utils.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,70 +0,0 @@
-/* Remote utility routines for the remote server for GDB.
-   Copyright (C) 1993-2020 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 GDBSERVER_REMOTE_UTILS_H
-#define GDBSERVER_REMOTE_UTILS_H
-
-int gdb_connected (void);
-
-#define STDIO_CONNECTION_NAME "stdio"
-int remote_connection_is_stdio (void);
-
-ptid_t read_ptid (const char *buf, const char **obuf);
-char *write_ptid (char *buf, ptid_t ptid);
-
-int putpkt (char *buf);
-int putpkt_binary (char *buf, int len);
-int putpkt_notif (char *buf);
-int getpkt (char *buf);
-void remote_prepare (const char *name);
-void remote_open (const char *name);
-void remote_close (void);
-void write_ok (char *buf);
-void write_enn (char *buf);
-void initialize_async_io (void);
-void enable_async_io (void);
-void disable_async_io (void);
-void check_remote_input_interrupt_request (void);
-void prepare_resume_reply (char *buf, ptid_t ptid,
-			   struct target_waitstatus *status);
-
-const char *decode_address_to_semicolon (CORE_ADDR *addrp, const char *start);
-void decode_address (CORE_ADDR *addrp, const char *start, int len);
-void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr,
-		      unsigned int *len_ptr);
-void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr,
-		      unsigned int *len_ptr, unsigned char **to_p);
-int decode_X_packet (char *from, int packet_len, CORE_ADDR * mem_addr_ptr,
-		     unsigned int *len_ptr, unsigned char **to_p);
-int decode_xfer_write (char *buf, int packet_len,
-		       CORE_ADDR *offset, unsigned int *len,
-		       unsigned char *data);
-int decode_search_memory_packet (const char *buf, int packet_len,
-				 CORE_ADDR *start_addrp,
-				 CORE_ADDR *search_space_lenp,
-				 gdb_byte *pattern,
-				 unsigned int *pattern_lenp);
-
-void clear_symbol_cache (struct sym_cache **symcache_p);
-int look_up_one_symbol (const char *name, CORE_ADDR *addrp, int may_ask_gdb);
-
-int relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc);
-
-void monitor_output (const char *msg);
-
-#endif /* GDBSERVER_REMOTE_UTILS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/server.c ./gdb/gdbserver/server.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/server.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/server.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,4485 +0,0 @@
-/* Main code for remote server for GDB.
-   Copyright (C) 1989-2020 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 "server.h"
-#include "gdbthread.h"
-#include "gdbsupport/agent.h"
-#include "notif.h"
-#include "tdesc.h"
-#include "gdbsupport/rsp-low.h"
-#include "gdbsupport/signals-state-save-restore.h"
-#include <ctype.h>
-#include <unistd.h>
-#if HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#include "gdbsupport/gdb_vecs.h"
-#include "gdbsupport/gdb_wait.h"
-#include "gdbsupport/btrace-common.h"
-#include "gdbsupport/filestuff.h"
-#include "tracepoint.h"
-#include "dll.h"
-#include "hostio.h"
-#include <vector>
-#include "gdbsupport/common-inferior.h"
-#include "gdbsupport/job-control.h"
-#include "gdbsupport/environ.h"
-#include "filenames.h"
-#include "gdbsupport/pathstuff.h"
-#ifdef USE_XML
-#include "xml-builtin.h"
-#endif
-
-#include "gdbsupport/selftest.h"
-#include "gdbsupport/scope-exit.h"
-
-#define require_running_or_return(BUF)		\
-  if (!target_running ())			\
-    {						\
-      write_enn (BUF);				\
-      return;					\
-    }
-
-#define require_running_or_break(BUF)		\
-  if (!target_running ())			\
-    {						\
-      write_enn (BUF);				\
-      break;					\
-    }
-
-/* String containing the current directory (what getwd would return).  */
-
-char *current_directory;
-
-/* The environment to pass to the inferior when creating it.  */
-
-static gdb_environ our_environ;
-
-bool server_waiting;
-
-static bool extended_protocol;
-static bool response_needed;
-static bool exit_requested;
-
-/* --once: Exit after the first connection has closed.  */
-bool run_once;
-
-/* Whether to report TARGET_WAITKIND_NO_RESUMED events.  */
-static bool report_no_resumed;
-
-bool non_stop;
-
-static struct {
-  /* Set the PROGRAM_PATH.  Here we adjust the path of the provided
-     binary if needed.  */
-  void set (gdb::unique_xmalloc_ptr<char> &&path)
-  {
-    m_path = std::move (path);
-
-    /* Make sure we're using the absolute path of the inferior when
-       creating it.  */
-    if (!contains_dir_separator (m_path.get ()))
-      {
-	int reg_file_errno;
-
-	/* Check if the file is in our CWD.  If it is, then we prefix
-	   its name with CURRENT_DIRECTORY.  Otherwise, we leave the
-	   name as-is because we'll try searching for it in $PATH.  */
-	if (is_regular_file (m_path.get (), &reg_file_errno))
-	  m_path = gdb_abspath (m_path.get ());
-      }
-  }
-
-  /* Return the PROGRAM_PATH.  */
-  char *get ()
-  { return m_path.get (); }
-
-private:
-  /* The program name, adjusted if needed.  */
-  gdb::unique_xmalloc_ptr<char> m_path;
-} program_path;
-static std::vector<char *> program_args;
-static std::string wrapper_argv;
-
-/* The PID of the originally created or attached inferior.  Used to
-   send signals to the process when GDB sends us an asynchronous interrupt
-   (user hitting Control-C in the client), and to wait for the child to exit
-   when no longer debugging it.  */
-
-unsigned long signal_pid;
-
-/* Set if you want to disable optional thread related packets support
-   in gdbserver, for the sake of testing GDB against stubs that don't
-   support them.  */
-bool disable_packet_vCont;
-bool disable_packet_Tthread;
-bool disable_packet_qC;
-bool disable_packet_qfThreadInfo;
-
-static unsigned char *mem_buf;
-
-/* A sub-class of 'struct notif_event' for stop, holding information
-   relative to a single stop reply.  We keep a queue of these to
-   push to GDB in non-stop mode.  */
-
-struct vstop_notif : public notif_event
-{
-  /* Thread or process that got the event.  */
-  ptid_t ptid;
-
-  /* Event info.  */
-  struct target_waitstatus status;
-};
-
-/* The current btrace configuration.  This is gdbserver's mirror of GDB's
-   btrace configuration.  */
-static struct btrace_config current_btrace_conf;
-
-/* The client remote protocol state. */
-
-static client_state g_client_state;
-
-client_state &
-get_client_state ()
-{
-  client_state &cs = g_client_state;
-  return cs;
-}
-
-
-/* Put a stop reply to the stop reply queue.  */
-
-static void
-queue_stop_reply (ptid_t ptid, struct target_waitstatus *status)
-{
-  struct vstop_notif *new_notif = new struct vstop_notif;
-
-  new_notif->ptid = ptid;
-  new_notif->status = *status;
-
-  notif_event_enque (&notif_stop, new_notif);
-}
-
-static bool
-remove_all_on_match_ptid (struct notif_event *event, ptid_t filter_ptid)
-{
-  struct vstop_notif *vstop_event = (struct vstop_notif *) event;
-
-  return vstop_event->ptid.matches (filter_ptid);
-}
-
-/* See server.h.  */
-
-void
-discard_queued_stop_replies (ptid_t ptid)
-{
-  std::list<notif_event *>::iterator iter, next, end;
-  end = notif_stop.queue.end ();
-  for (iter = notif_stop.queue.begin (); iter != end; iter = next)
-    {
-      next = iter;
-      ++next;
-
-      if (remove_all_on_match_ptid (*iter, ptid))
-	{
-	  delete *iter;
-	  notif_stop.queue.erase (iter);
-	}
-    }
-}
-
-static void
-vstop_notif_reply (struct notif_event *event, char *own_buf)
-{
-  struct vstop_notif *vstop = (struct vstop_notif *) event;
-
-  prepare_resume_reply (own_buf, vstop->ptid, &vstop->status);
-}
-
-/* Helper for in_queued_stop_replies.  */
-
-static bool
-in_queued_stop_replies_ptid (struct notif_event *event, ptid_t filter_ptid)
-{
-  struct vstop_notif *vstop_event = (struct vstop_notif *) event;
-
-  if (vstop_event->ptid.matches (filter_ptid))
-    return true;
-
-  /* Don't resume fork children that GDB does not know about yet.  */
-  if ((vstop_event->status.kind == TARGET_WAITKIND_FORKED
-       || vstop_event->status.kind == TARGET_WAITKIND_VFORKED)
-      && vstop_event->status.value.related_pid.matches (filter_ptid))
-    return true;
-
-  return false;
-}
-
-/* See server.h.  */
-
-int
-in_queued_stop_replies (ptid_t ptid)
-{
-  for (notif_event *event : notif_stop.queue)
-    {
-      if (in_queued_stop_replies_ptid (event, ptid))
-	return true;
-    }
-
-  return false;
-}
-
-struct notif_server notif_stop =
-{
-  "vStopped", "Stop", {}, vstop_notif_reply,
-};
-
-static int
-target_running (void)
-{
-  return get_first_thread () != NULL;
-}
-
-/* See gdbsupport/common-inferior.h.  */
-
-const char *
-get_exec_wrapper ()
-{
-  return !wrapper_argv.empty () ? wrapper_argv.c_str () : NULL;
-}
-
-/* See gdbsupport/common-inferior.h.  */
-
-char *
-get_exec_file (int err)
-{
-  if (err && program_path.get () == NULL)
-    error (_("No executable file specified."));
-
-  return program_path.get ();
-}
-
-/* See server.h.  */
-
-gdb_environ *
-get_environ ()
-{
-  return &our_environ;
-}
-
-static int
-attach_inferior (int pid)
-{
-  client_state &cs = get_client_state ();
-  /* myattach should return -1 if attaching is unsupported,
-     0 if it succeeded, and call error() otherwise.  */
-
-  if (find_process_pid (pid) != nullptr)
-    error ("Already attached to process %d\n", pid);
-
-  if (myattach (pid) != 0)
-    return -1;
-
-  fprintf (stderr, "Attached; pid = %d\n", pid);
-  fflush (stderr);
-
-  /* FIXME - It may be that we should get the SIGNAL_PID from the
-     attach function, so that it can be the main thread instead of
-     whichever we were told to attach to.  */
-  signal_pid = pid;
-
-  if (!non_stop)
-    {
-      cs.last_ptid = mywait (ptid_t (pid), &cs.last_status, 0, 0);
-
-      /* GDB knows to ignore the first SIGSTOP after attaching to a running
-	 process using the "attach" command, but this is different; it's
-	 just using "target remote".  Pretend it's just starting up.  */
-      if (cs.last_status.kind == TARGET_WAITKIND_STOPPED
-	  && cs.last_status.value.sig == GDB_SIGNAL_STOP)
-	cs.last_status.value.sig = GDB_SIGNAL_TRAP;
-
-      current_thread->last_resume_kind = resume_stop;
-      current_thread->last_status = cs.last_status;
-    }
-
-  return 0;
-}
-
-/* Decode a qXfer read request.  Return 0 if everything looks OK,
-   or -1 otherwise.  */
-
-static int
-decode_xfer_read (char *buf, CORE_ADDR *ofs, unsigned int *len)
-{
-  /* After the read marker and annex, qXfer looks like a
-     traditional 'm' packet.  */
-  decode_m_packet (buf, ofs, len);
-
-  return 0;
-}
-
-static int
-decode_xfer (char *buf, char **object, char **rw, char **annex, char **offset)
-{
-  /* Extract and NUL-terminate the object.  */
-  *object = buf;
-  while (*buf && *buf != ':')
-    buf++;
-  if (*buf == '\0')
-    return -1;
-  *buf++ = 0;
-
-  /* Extract and NUL-terminate the read/write action.  */
-  *rw = buf;
-  while (*buf && *buf != ':')
-    buf++;
-  if (*buf == '\0')
-    return -1;
-  *buf++ = 0;
-
-  /* Extract and NUL-terminate the annex.  */
-  *annex = buf;
-  while (*buf && *buf != ':')
-    buf++;
-  if (*buf == '\0')
-    return -1;
-  *buf++ = 0;
-
-  *offset = buf;
-  return 0;
-}
-
-/* Write the response to a successful qXfer read.  Returns the
-   length of the (binary) data stored in BUF, corresponding
-   to as much of DATA/LEN as we could fit.  IS_MORE controls
-   the first character of the response.  */
-static int
-write_qxfer_response (char *buf, const gdb_byte *data, int len, int is_more)
-{
-  int out_len;
-
-  if (is_more)
-    buf[0] = 'm';
-  else
-    buf[0] = 'l';
-
-  return remote_escape_output (data, len, 1, (unsigned char *) buf + 1,
-			       &out_len, PBUFSIZ - 2) + 1;
-}
-
-/* Handle btrace enabling in BTS format.  */
-
-static void
-handle_btrace_enable_bts (struct thread_info *thread)
-{
-  if (thread->btrace != NULL)
-    error (_("Btrace already enabled."));
-
-  current_btrace_conf.format = BTRACE_FORMAT_BTS;
-  thread->btrace = target_enable_btrace (thread->id, &current_btrace_conf);
-}
-
-/* Handle btrace enabling in Intel Processor Trace format.  */
-
-static void
-handle_btrace_enable_pt (struct thread_info *thread)
-{
-  if (thread->btrace != NULL)
-    error (_("Btrace already enabled."));
-
-  current_btrace_conf.format = BTRACE_FORMAT_PT;
-  thread->btrace = target_enable_btrace (thread->id, &current_btrace_conf);
-}
-
-/* Handle btrace disabling.  */
-
-static void
-handle_btrace_disable (struct thread_info *thread)
-{
-
-  if (thread->btrace == NULL)
-    error (_("Branch tracing not enabled."));
-
-  if (target_disable_btrace (thread->btrace) != 0)
-    error (_("Could not disable branch tracing."));
-
-  thread->btrace = NULL;
-}
-
-/* Handle the "Qbtrace" packet.  */
-
-static int
-handle_btrace_general_set (char *own_buf)
-{
-  client_state &cs = get_client_state ();
-  struct thread_info *thread;
-  char *op;
-
-  if (!startswith (own_buf, "Qbtrace:"))
-    return 0;
-
-  op = own_buf + strlen ("Qbtrace:");
-
-  if (cs.general_thread == null_ptid
-      || cs.general_thread == minus_one_ptid)
-    {
-      strcpy (own_buf, "E.Must select a single thread.");
-      return -1;
-    }
-
-  thread = find_thread_ptid (cs.general_thread);
-  if (thread == NULL)
-    {
-      strcpy (own_buf, "E.No such thread.");
-      return -1;
-    }
-
-  try
-    {
-      if (strcmp (op, "bts") == 0)
-	handle_btrace_enable_bts (thread);
-      else if (strcmp (op, "pt") == 0)
-	handle_btrace_enable_pt (thread);
-      else if (strcmp (op, "off") == 0)
-	handle_btrace_disable (thread);
-      else
-	error (_("Bad Qbtrace operation.  Use bts, pt, or off."));
-
-      write_ok (own_buf);
-    }
-  catch (const gdb_exception_error &exception)
-    {
-      sprintf (own_buf, "E.%s", exception.what ());
-    }
-
-  return 1;
-}
-
-/* Handle the "Qbtrace-conf" packet.  */
-
-static int
-handle_btrace_conf_general_set (char *own_buf)
-{
-  client_state &cs = get_client_state ();
-  struct thread_info *thread;
-  char *op;
-
-  if (!startswith (own_buf, "Qbtrace-conf:"))
-    return 0;
-
-  op = own_buf + strlen ("Qbtrace-conf:");
-
-  if (cs.general_thread == null_ptid
-      || cs.general_thread == minus_one_ptid)
-    {
-      strcpy (own_buf, "E.Must select a single thread.");
-      return -1;
-    }
-
-  thread = find_thread_ptid (cs.general_thread);
-  if (thread == NULL)
-    {
-      strcpy (own_buf, "E.No such thread.");
-      return -1;
-    }
-
-  if (startswith (op, "bts:size="))
-    {
-      unsigned long size;
-      char *endp = NULL;
-
-      errno = 0;
-      size = strtoul (op + strlen ("bts:size="), &endp, 16);
-      if (endp == NULL || *endp != 0 || errno != 0 || size > UINT_MAX)
-	{
-	  strcpy (own_buf, "E.Bad size value.");
-	  return -1;
-	}
-
-      current_btrace_conf.bts.size = (unsigned int) size;
-    }
-  else if (strncmp (op, "pt:size=", strlen ("pt:size=")) == 0)
-    {
-      unsigned long size;
-      char *endp = NULL;
-
-      errno = 0;
-      size = strtoul (op + strlen ("pt:size="), &endp, 16);
-      if (endp == NULL || *endp != 0 || errno != 0 || size > UINT_MAX)
-	{
-	  strcpy (own_buf, "E.Bad size value.");
-	  return -1;
-	}
-
-      current_btrace_conf.pt.size = (unsigned int) size;
-    }
-  else
-    {
-      strcpy (own_buf, "E.Bad Qbtrace configuration option.");
-      return -1;
-    }
-
-  write_ok (own_buf);
-  return 1;
-}
-
-/* Handle all of the extended 'Q' packets.  */
-
-static void
-handle_general_set (char *own_buf)
-{
-  client_state &cs = get_client_state ();
-  if (startswith (own_buf, "QPassSignals:"))
-    {
-      int numsigs = (int) GDB_SIGNAL_LAST, i;
-      const char *p = own_buf + strlen ("QPassSignals:");
-      CORE_ADDR cursig;
-
-      p = decode_address_to_semicolon (&cursig, p);
-      for (i = 0; i < numsigs; i++)
-	{
-	  if (i == cursig)
-	    {
-	      cs.pass_signals[i] = 1;
-	      if (*p == '\0')
-		/* Keep looping, to clear the remaining signals.  */
-		cursig = -1;
-	      else
-		p = decode_address_to_semicolon (&cursig, p);
-	    }
-	  else
-	    cs.pass_signals[i] = 0;
-	}
-      strcpy (own_buf, "OK");
-      return;
-    }
-
-  if (startswith (own_buf, "QProgramSignals:"))
-    {
-      int numsigs = (int) GDB_SIGNAL_LAST, i;
-      const char *p = own_buf + strlen ("QProgramSignals:");
-      CORE_ADDR cursig;
-
-      cs.program_signals_p = 1;
-
-      p = decode_address_to_semicolon (&cursig, p);
-      for (i = 0; i < numsigs; i++)
-	{
-	  if (i == cursig)
-	    {
-	      cs.program_signals[i] = 1;
-	      if (*p == '\0')
-		/* Keep looping, to clear the remaining signals.  */
-		cursig = -1;
-	      else
-		p = decode_address_to_semicolon (&cursig, p);
-	    }
-	  else
-	    cs.program_signals[i] = 0;
-	}
-      strcpy (own_buf, "OK");
-      return;
-    }
-
-  if (startswith (own_buf, "QCatchSyscalls:"))
-    {
-      const char *p = own_buf + sizeof ("QCatchSyscalls:") - 1;
-      int enabled = -1;
-      CORE_ADDR sysno;
-      struct process_info *process;
-
-      if (!target_running () || !target_supports_catch_syscall ())
-	{
-	  write_enn (own_buf);
-	  return;
-	}
-
-      if (strcmp (p, "0") == 0)
-	enabled = 0;
-      else if (p[0] == '1' && (p[1] == ';' || p[1] == '\0'))
-	enabled = 1;
-      else
-	{
-	  fprintf (stderr, "Unknown catch-syscalls mode requested: %s\n",
-		   own_buf);
-	  write_enn (own_buf);
-	  return;
-	}
-
-      process = current_process ();
-      process->syscalls_to_catch.clear ();
-
-      if (enabled)
-	{
-	  p += 1;
-	  if (*p == ';')
-	    {
-	      p += 1;
-	      while (*p != '\0')
-		{
-		  p = decode_address_to_semicolon (&sysno, p);
-		  process->syscalls_to_catch.push_back (sysno);
-		}
-	    }
-	  else
-	    process->syscalls_to_catch.push_back (ANY_SYSCALL);
-	}
-
-      write_ok (own_buf);
-      return;
-    }
-
-  if (strcmp (own_buf, "QEnvironmentReset") == 0)
-    {
-      our_environ = gdb_environ::from_host_environ ();
-
-      write_ok (own_buf);
-      return;
-    }
-
-  if (startswith (own_buf, "QEnvironmentHexEncoded:"))
-    {
-      const char *p = own_buf + sizeof ("QEnvironmentHexEncoded:") - 1;
-      /* The final form of the environment variable.  FINAL_VAR will
-	 hold the 'VAR=VALUE' format.  */
-      std::string final_var = hex2str (p);
-      std::string var_name, var_value;
-
-      if (remote_debug)
-	{
-	  debug_printf (_("[QEnvironmentHexEncoded received '%s']\n"), p);
-	  debug_printf (_("[Environment variable to be set: '%s']\n"),
-			final_var.c_str ());
-	  debug_flush ();
-	}
-
-      size_t pos = final_var.find ('=');
-      if (pos == std::string::npos)
-	{
-	  warning (_("Unexpected format for environment variable: '%s'"),
-		   final_var.c_str ());
-	  write_enn (own_buf);
-	  return;
-	}
-
-      var_name = final_var.substr (0, pos);
-      var_value = final_var.substr (pos + 1, std::string::npos);
-
-      our_environ.set (var_name.c_str (), var_value.c_str ());
-
-      write_ok (own_buf);
-      return;
-    }
-
-  if (startswith (own_buf, "QEnvironmentUnset:"))
-    {
-      const char *p = own_buf + sizeof ("QEnvironmentUnset:") - 1;
-      std::string varname = hex2str (p);
-
-      if (remote_debug)
-	{
-	  debug_printf (_("[QEnvironmentUnset received '%s']\n"), p);
-	  debug_printf (_("[Environment variable to be unset: '%s']\n"),
-			varname.c_str ());
-	  debug_flush ();
-	}
-
-      our_environ.unset (varname.c_str ());
-
-      write_ok (own_buf);
-      return;
-    }
-
-  if (strcmp (own_buf, "QStartNoAckMode") == 0)
-    {
-      if (remote_debug)
-	{
-	  debug_printf ("[noack mode enabled]\n");
-	  debug_flush ();
-	}
-
-      cs.noack_mode = 1;
-      write_ok (own_buf);
-      return;
-    }
-
-  if (startswith (own_buf, "QNonStop:"))
-    {
-      char *mode = own_buf + 9;
-      int req = -1;
-      const char *req_str;
-
-      if (strcmp (mode, "0") == 0)
-	req = 0;
-      else if (strcmp (mode, "1") == 0)
-	req = 1;
-      else
-	{
-	  /* We don't know what this mode is, so complain to
-	     GDB.  */
-	  fprintf (stderr, "Unknown non-stop mode requested: %s\n",
-		   own_buf);
-	  write_enn (own_buf);
-	  return;
-	}
-
-      req_str = req ? "non-stop" : "all-stop";
-      if (start_non_stop (req) != 0)
-	{
-	  fprintf (stderr, "Setting %s mode failed\n", req_str);
-	  write_enn (own_buf);
-	  return;
-	}
-
-      non_stop = (req != 0);
-
-      if (remote_debug)
-	debug_printf ("[%s mode enabled]\n", req_str);
-
-      write_ok (own_buf);
-      return;
-    }
-
-  if (startswith (own_buf, "QDisableRandomization:"))
-    {
-      char *packet = own_buf + strlen ("QDisableRandomization:");
-      ULONGEST setting;
-
-      unpack_varlen_hex (packet, &setting);
-      cs.disable_randomization = setting;
-
-      if (remote_debug)
-	{
-	  debug_printf (cs.disable_randomization
-			? "[address space randomization disabled]\n"
-			: "[address space randomization enabled]\n");
-	}
-
-      write_ok (own_buf);
-      return;
-    }
-
-  if (target_supports_tracepoints ()
-      && handle_tracepoint_general_set (own_buf))
-    return;
-
-  if (startswith (own_buf, "QAgent:"))
-    {
-      char *mode = own_buf + strlen ("QAgent:");
-      int req = 0;
-
-      if (strcmp (mode, "0") == 0)
-	req = 0;
-      else if (strcmp (mode, "1") == 0)
-	req = 1;
-      else
-	{
-	  /* We don't know what this value is, so complain to GDB.  */
-	  sprintf (own_buf, "E.Unknown QAgent value");
-	  return;
-	}
-
-      /* Update the flag.  */
-      use_agent = req;
-      if (remote_debug)
-	debug_printf ("[%s agent]\n", req ? "Enable" : "Disable");
-      write_ok (own_buf);
-      return;
-    }
-
-  if (handle_btrace_general_set (own_buf))
-    return;
-
-  if (handle_btrace_conf_general_set (own_buf))
-    return;
-
-  if (startswith (own_buf, "QThreadEvents:"))
-    {
-      char *mode = own_buf + strlen ("QThreadEvents:");
-      enum tribool req = TRIBOOL_UNKNOWN;
-
-      if (strcmp (mode, "0") == 0)
-	req = TRIBOOL_FALSE;
-      else if (strcmp (mode, "1") == 0)
-	req = TRIBOOL_TRUE;
-      else
-	{
-	  /* We don't know what this mode is, so complain to GDB.  */
-	  sprintf (own_buf, "E.Unknown thread-events mode requested: %s\n",
-		   mode);
-	  return;
-	}
-
-      cs.report_thread_events = (req == TRIBOOL_TRUE);
-
-      if (remote_debug)
-	{
-	  const char *req_str = cs.report_thread_events ? "enabled" : "disabled";
-
-	  debug_printf ("[thread events are now %s]\n", req_str);
-	}
-
-      write_ok (own_buf);
-      return;
-    }
-
-  if (startswith (own_buf, "QStartupWithShell:"))
-    {
-      const char *value = own_buf + strlen ("QStartupWithShell:");
-
-      if (strcmp (value, "1") == 0)
-	startup_with_shell = true;
-      else if (strcmp (value, "0") == 0)
-	startup_with_shell = false;
-      else
-	{
-	  /* Unknown value.  */
-	  fprintf (stderr, "Unknown value to startup-with-shell: %s\n",
-		   own_buf);
-	  write_enn (own_buf);
-	  return;
-	}
-
-      if (remote_debug)
-	debug_printf (_("[Inferior will %s started with shell]"),
-		      startup_with_shell ? "be" : "not be");
-
-      write_ok (own_buf);
-      return;
-    }
-
-  if (startswith (own_buf, "QSetWorkingDir:"))
-    {
-      const char *p = own_buf + strlen ("QSetWorkingDir:");
-
-      if (*p != '\0')
-	{
-	  std::string path = hex2str (p);
-
-	  set_inferior_cwd (path.c_str ());
-
-	  if (remote_debug)
-	    debug_printf (_("[Set the inferior's current directory to %s]\n"),
-			  path.c_str ());
-	}
-      else
-	{
-	  /* An empty argument means that we should clear out any
-	     previously set cwd for the inferior.  */
-	  set_inferior_cwd (NULL);
-
-	  if (remote_debug)
-	    debug_printf (_("\
-[Unset the inferior's current directory; will use gdbserver's cwd]\n"));
-	}
-      write_ok (own_buf);
-
-      return;
-    }
-
-  /* Otherwise we didn't know what packet it was.  Say we didn't
-     understand it.  */
-  own_buf[0] = 0;
-}
-
-static const char *
-get_features_xml (const char *annex)
-{
-  const struct target_desc *desc = current_target_desc ();
-
-  /* `desc->xmltarget' defines what to return when looking for the
-     "target.xml" file.  Its contents can either be verbatim XML code
-     (prefixed with a '@') or else the name of the actual XML file to
-     be used in place of "target.xml".
-
-     This variable is set up from the auto-generated
-     init_registers_... routine for the current target.  */
-
-  if (strcmp (annex, "target.xml") == 0)
-    {
-      const char *ret = tdesc_get_features_xml (desc);
-
-      if (*ret == '@')
-	return ret + 1;
-      else
-	annex = ret;
-    }
-
-#ifdef USE_XML
-  {
-    int i;
-
-    /* Look for the annex.  */
-    for (i = 0; xml_builtin[i][0] != NULL; i++)
-      if (strcmp (annex, xml_builtin[i][0]) == 0)
-	break;
-
-    if (xml_builtin[i][0] != NULL)
-      return xml_builtin[i][1];
-  }
-#endif
-
-  return NULL;
-}
-
-static void
-monitor_show_help (void)
-{
-  monitor_output ("The following monitor commands are supported:\n");
-  monitor_output ("  set debug <0|1>\n");
-  monitor_output ("    Enable general debugging messages\n");
-  monitor_output ("  set debug-hw-points <0|1>\n");
-  monitor_output ("    Enable h/w breakpoint/watchpoint debugging messages\n");
-  monitor_output ("  set remote-debug <0|1>\n");
-  monitor_output ("    Enable remote protocol debugging messages\n");
-  monitor_output ("  set debug-format option1[,option2,...]\n");
-  monitor_output ("    Add additional information to debugging messages\n");
-  monitor_output ("    Options: all, none");
-  monitor_output (", timestamp");
-  monitor_output ("\n");
-  monitor_output ("  exit\n");
-  monitor_output ("    Quit GDBserver\n");
-}
-
-/* Read trace frame or inferior memory.  Returns the number of bytes
-   actually read, zero when no further transfer is possible, and -1 on
-   error.  Return of a positive value smaller than LEN does not
-   indicate there's no more to be read, only the end of the transfer.
-   E.g., when GDB reads memory from a traceframe, a first request may
-   be served from a memory block that does not cover the whole request
-   length.  A following request gets the rest served from either
-   another block (of the same traceframe) or from the read-only
-   regions.  */
-
-static int
-gdb_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  client_state &cs = get_client_state ();
-  int res;
-
-  if (cs.current_traceframe >= 0)
-    {
-      ULONGEST nbytes;
-      ULONGEST length = len;
-
-      if (traceframe_read_mem (cs.current_traceframe,
-			       memaddr, myaddr, len, &nbytes))
-	return -1;
-      /* Data read from trace buffer, we're done.  */
-      if (nbytes > 0)
-	return nbytes;
-      if (!in_readonly_region (memaddr, length))
-	return -1;
-      /* Otherwise we have a valid readonly case, fall through.  */
-      /* (assume no half-trace half-real blocks for now) */
-    }
-
-  res = prepare_to_access_memory ();
-  if (res == 0)
-    {
-      if (set_desired_thread ())
-	res = read_inferior_memory (memaddr, myaddr, len);
-      else
-	res = 1;
-      done_accessing_memory ();
-
-      return res == 0 ? len : -1;
-    }
-  else
-    return -1;
-}
-
-/* Write trace frame or inferior memory.  Actually, writing to trace
-   frames is forbidden.  */
-
-static int
-gdb_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len)
-{
-  client_state &cs = get_client_state ();
-  if (cs.current_traceframe >= 0)
-    return EIO;
-  else
-    {
-      int ret;
-
-      ret = prepare_to_access_memory ();
-      if (ret == 0)
-	{
-	  if (set_desired_thread ())
-	    ret = target_write_memory (memaddr, myaddr, len);
-	  else
-	    ret = EIO;
-	  done_accessing_memory ();
-	}
-      return ret;
-    }
-}
-
-/* Subroutine of handle_search_memory to simplify it.  */
-
-static int
-handle_search_memory_1 (CORE_ADDR start_addr, CORE_ADDR search_space_len,
-			gdb_byte *pattern, unsigned pattern_len,
-			gdb_byte *search_buf,
-			unsigned chunk_size, unsigned search_buf_size,
-			CORE_ADDR *found_addrp)
-{
-  /* Prime the search buffer.  */
-
-  if (gdb_read_memory (start_addr, search_buf, search_buf_size)
-      != search_buf_size)
-    {
-      warning ("Unable to access %ld bytes of target "
-	       "memory at 0x%lx, halting search.",
-	       (long) search_buf_size, (long) start_addr);
-      return -1;
-    }
-
-  /* Perform the search.
-
-     The loop is kept simple by allocating [N + pattern-length - 1] bytes.
-     When we've scanned N bytes we copy the trailing bytes to the start and
-     read in another N bytes.  */
-
-  while (search_space_len >= pattern_len)
-    {
-      gdb_byte *found_ptr;
-      unsigned nr_search_bytes = (search_space_len < search_buf_size
-				  ? search_space_len
-				  : search_buf_size);
-
-      found_ptr = (gdb_byte *) memmem (search_buf, nr_search_bytes, pattern,
-				       pattern_len);
-
-      if (found_ptr != NULL)
-	{
-	  CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
-	  *found_addrp = found_addr;
-	  return 1;
-	}
-
-      /* Not found in this chunk, skip to next chunk.  */
-
-      /* Don't let search_space_len wrap here, it's unsigned.  */
-      if (search_space_len >= chunk_size)
-	search_space_len -= chunk_size;
-      else
-	search_space_len = 0;
-
-      if (search_space_len >= pattern_len)
-	{
-	  unsigned keep_len = search_buf_size - chunk_size;
-	  CORE_ADDR read_addr = start_addr + chunk_size + keep_len;
-	  int nr_to_read;
-
-	  /* Copy the trailing part of the previous iteration to the front
-	     of the buffer for the next iteration.  */
-	  memcpy (search_buf, search_buf + chunk_size, keep_len);
-
-	  nr_to_read = (search_space_len - keep_len < chunk_size
-			? search_space_len - keep_len
-			: chunk_size);
-
-	  if (gdb_read_memory (read_addr, search_buf + keep_len,
-			       nr_to_read) != search_buf_size)
-	    {
-	      warning ("Unable to access %ld bytes of target memory "
-		       "at 0x%lx, halting search.",
-		       (long) nr_to_read, (long) read_addr);
-	      return -1;
-	    }
-
-	  start_addr += chunk_size;
-	}
-    }
-
-  /* Not found.  */
-
-  return 0;
-}
-
-/* Handle qSearch:memory packets.  */
-
-static void
-handle_search_memory (char *own_buf, int packet_len)
-{
-  CORE_ADDR start_addr;
-  CORE_ADDR search_space_len;
-  gdb_byte *pattern;
-  unsigned int pattern_len;
-  /* NOTE: also defined in find.c testcase.  */
-#define SEARCH_CHUNK_SIZE 16000
-  const unsigned chunk_size = SEARCH_CHUNK_SIZE;
-  /* Buffer to hold memory contents for searching.  */
-  gdb_byte *search_buf;
-  unsigned search_buf_size;
-  int found;
-  CORE_ADDR found_addr;
-  int cmd_name_len = sizeof ("qSearch:memory:") - 1;
-
-  pattern = (gdb_byte *) malloc (packet_len);
-  if (pattern == NULL)
-    {
-      error ("Unable to allocate memory to perform the search");
-      strcpy (own_buf, "E00");
-      return;
-    }
-  if (decode_search_memory_packet (own_buf + cmd_name_len,
-				   packet_len - cmd_name_len,
-				   &start_addr, &search_space_len,
-				   pattern, &pattern_len) < 0)
-    {
-      free (pattern);
-      error ("Error in parsing qSearch:memory packet");
-      strcpy (own_buf, "E00");
-      return;
-    }
-
-  search_buf_size = chunk_size + pattern_len - 1;
-
-  /* No point in trying to allocate a buffer larger than the search space.  */
-  if (search_space_len < search_buf_size)
-    search_buf_size = search_space_len;
-
-  search_buf = (gdb_byte *) malloc (search_buf_size);
-  if (search_buf == NULL)
-    {
-      free (pattern);
-      error ("Unable to allocate memory to perform the search");
-      strcpy (own_buf, "E00");
-      return;
-    }
-
-  found = handle_search_memory_1 (start_addr, search_space_len,
-				  pattern, pattern_len,
-				  search_buf, chunk_size, search_buf_size,
-				  &found_addr);
-
-  if (found > 0)
-    sprintf (own_buf, "1,%lx", (long) found_addr);
-  else if (found == 0)
-    strcpy (own_buf, "0");
-  else
-    strcpy (own_buf, "E00");
-
-  free (search_buf);
-  free (pattern);
-}
-
-/* Handle the "D" packet.  */
-
-static void
-handle_detach (char *own_buf)
-{
-  client_state &cs = get_client_state ();
-
-  process_info *process;
-
-  if (cs.multi_process)
-    {
-      /* skip 'D;' */
-      int pid = strtol (&own_buf[2], NULL, 16);
-
-      process = find_process_pid (pid);
-    }
-  else
-    {
-      process = (current_thread != nullptr
-		 ? get_thread_process (current_thread)
-		 : nullptr);
-    }
-
-  if (process == NULL)
-    {
-      write_enn (own_buf);
-      return;
-    }
-
-  if ((tracing && disconnected_tracing) || any_persistent_commands (process))
-    {
-      if (tracing && disconnected_tracing)
-	fprintf (stderr,
-		 "Disconnected tracing in effect, "
-		 "leaving gdbserver attached to the process\n");
-
-      if (any_persistent_commands (process))
-	fprintf (stderr,
-		 "Persistent commands are present, "
-		 "leaving gdbserver attached to the process\n");
-
-      /* Make sure we're in non-stop/async mode, so we we can both
-	 wait for an async socket accept, and handle async target
-	 events simultaneously.  There's also no point either in
-	 having the target stop all threads, when we're going to
-	 pass signals down without informing GDB.  */
-      if (!non_stop)
-	{
-	  if (debug_threads)
-	    debug_printf ("Forcing non-stop mode\n");
-
-	  non_stop = true;
-	  start_non_stop (1);
-	}
-
-      process->gdb_detached = 1;
-
-      /* Detaching implicitly resumes all threads.  */
-      target_continue_no_signal (minus_one_ptid);
-
-      write_ok (own_buf);
-      return;
-    }
-
-  fprintf (stderr, "Detaching from process %d\n", process->pid);
-  stop_tracing ();
-
-  /* We'll need this after PROCESS has been destroyed.  */
-  int pid = process->pid;
-
-  if (detach_inferior (process) != 0)
-    write_enn (own_buf);
-  else
-    {
-      discard_queued_stop_replies (ptid_t (pid));
-      write_ok (own_buf);
-
-      if (extended_protocol || target_running ())
-	{
-	  /* There is still at least one inferior remaining or
-	     we are in extended mode, so don't terminate gdbserver,
-	     and instead treat this like a normal program exit.  */
-	  cs.last_status.kind = TARGET_WAITKIND_EXITED;
-	  cs.last_status.value.integer = 0;
-	  cs.last_ptid = ptid_t (pid);
-
-	  current_thread = NULL;
-	}
-      else
-	{
-	  putpkt (own_buf);
-	  remote_close ();
-
-	  /* If we are attached, then we can exit.  Otherwise, we
-	     need to hang around doing nothing, until the child is
-	     gone.  */
-	  join_inferior (pid);
-	  exit (0);
-	}
-    }
-}
-
-/* Parse options to --debug-format= and "monitor set debug-format".
-   ARG is the text after "--debug-format=" or "monitor set debug-format".
-   IS_MONITOR is non-zero if we're invoked via "monitor set debug-format".
-   This triggers calls to monitor_output.
-   The result is an empty string if all options were parsed ok, otherwise an
-   error message which the caller must free.
-
-   N.B. These commands affect all debug format settings, they are not
-   cumulative.  If a format is not specified, it is turned off.
-   However, we don't go to extra trouble with things like
-   "monitor set debug-format all,none,timestamp".
-   Instead we just parse them one at a time, in order.
-
-   The syntax for "monitor set debug" we support here is not identical
-   to gdb's "set debug foo on|off" because we also use this function to
-   parse "--debug-format=foo,bar".  */
-
-static std::string
-parse_debug_format_options (const char *arg, int is_monitor)
-{
-  /* First turn all debug format options off.  */
-  debug_timestamp = 0;
-
-  /* First remove leading spaces, for "monitor set debug-format".  */
-  while (isspace (*arg))
-    ++arg;
-
-  std::vector<gdb::unique_xmalloc_ptr<char>> options
-    = delim_string_to_char_ptr_vec (arg, ',');
-
-  for (const gdb::unique_xmalloc_ptr<char> &option : options)
-    {
-      if (strcmp (option.get (), "all") == 0)
-	{
-	  debug_timestamp = 1;
-	  if (is_monitor)
-	    monitor_output ("All extra debug format options enabled.\n");
-	}
-      else if (strcmp (option.get (), "none") == 0)
-	{
-	  debug_timestamp = 0;
-	  if (is_monitor)
-	    monitor_output ("All extra debug format options disabled.\n");
-	}
-      else if (strcmp (option.get (), "timestamp") == 0)
-	{
-	  debug_timestamp = 1;
-	  if (is_monitor)
-	    monitor_output ("Timestamps will be added to debug output.\n");
-	}
-      else if (*option == '\0')
-	{
-	  /* An empty option, e.g., "--debug-format=foo,,bar", is ignored.  */
-	  continue;
-	}
-      else
-	return string_printf ("Unknown debug-format argument: \"%s\"\n",
-			      option.get ());
-    }
-
-  return std::string ();
-}
-
-/* Handle monitor commands not handled by target-specific handlers.  */
-
-static void
-handle_monitor_command (char *mon, char *own_buf)
-{
-  if (strcmp (mon, "set debug 1") == 0)
-    {
-      debug_threads = 1;
-      monitor_output ("Debug output enabled.\n");
-    }
-  else if (strcmp (mon, "set debug 0") == 0)
-    {
-      debug_threads = 0;
-      monitor_output ("Debug output disabled.\n");
-    }
-  else if (strcmp (mon, "set debug-hw-points 1") == 0)
-    {
-      show_debug_regs = 1;
-      monitor_output ("H/W point debugging output enabled.\n");
-    }
-  else if (strcmp (mon, "set debug-hw-points 0") == 0)
-    {
-      show_debug_regs = 0;
-      monitor_output ("H/W point debugging output disabled.\n");
-    }
-  else if (strcmp (mon, "set remote-debug 1") == 0)
-    {
-      remote_debug = 1;
-      monitor_output ("Protocol debug output enabled.\n");
-    }
-  else if (strcmp (mon, "set remote-debug 0") == 0)
-    {
-      remote_debug = 0;
-      monitor_output ("Protocol debug output disabled.\n");
-    }
-  else if (startswith (mon, "set debug-format "))
-    {
-      std::string error_msg
-	= parse_debug_format_options (mon + sizeof ("set debug-format ") - 1,
-				      1);
-
-      if (!error_msg.empty ())
-	{
-	  monitor_output (error_msg.c_str ());
-	  monitor_show_help ();
-	  write_enn (own_buf);
-	}
-    }
-  else if (strcmp (mon, "set debug-file") == 0)
-    debug_set_output (nullptr);
-  else if (startswith (mon, "set debug-file "))
-    debug_set_output (mon + sizeof ("set debug-file ") - 1);
-  else if (strcmp (mon, "help") == 0)
-    monitor_show_help ();
-  else if (strcmp (mon, "exit") == 0)
-    exit_requested = true;
-  else
-    {
-      monitor_output ("Unknown monitor command.\n\n");
-      monitor_show_help ();
-      write_enn (own_buf);
-    }
-}
-
-/* Associates a callback with each supported qXfer'able object.  */
-
-struct qxfer
-{
-  /* The object this handler handles.  */
-  const char *object;
-
-  /* Request that the target transfer up to LEN 8-bit bytes of the
-     target's OBJECT.  The OFFSET, for a seekable object, specifies
-     the starting point.  The ANNEX can be used to provide additional
-     data-specific information to the target.
-
-     Return the number of bytes actually transfered, zero when no
-     further transfer is possible, -1 on error, -2 when the transfer
-     is not supported, and -3 on a verbose error message that should
-     be preserved.  Return of a positive value smaller than LEN does
-     not indicate the end of the object, only the end of the transfer.
-
-     One, and only one, of readbuf or writebuf must be non-NULL.  */
-  int (*xfer) (const char *annex,
-	       gdb_byte *readbuf, const gdb_byte *writebuf,
-	       ULONGEST offset, LONGEST len);
-};
-
-/* Handle qXfer:auxv:read.  */
-
-static int
-handle_qxfer_auxv (const char *annex,
-		   gdb_byte *readbuf, const gdb_byte *writebuf,
-		   ULONGEST offset, LONGEST len)
-{
-  if (the_target->read_auxv == NULL || writebuf != NULL)
-    return -2;
-
-  if (annex[0] != '\0' || current_thread == NULL)
-    return -1;
-
-  return (*the_target->read_auxv) (offset, readbuf, len);
-}
-
-/* Handle qXfer:exec-file:read.  */
-
-static int
-handle_qxfer_exec_file (const char *annex,
-			gdb_byte *readbuf, const gdb_byte *writebuf,
-			ULONGEST offset, LONGEST len)
-{
-  char *file;
-  ULONGEST pid;
-  int total_len;
-
-  if (the_target->pid_to_exec_file == NULL || writebuf != NULL)
-    return -2;
-
-  if (annex[0] == '\0')
-    {
-      if (current_thread == NULL)
-	return -1;
-
-      pid = pid_of (current_thread);
-    }
-  else
-    {
-      annex = unpack_varlen_hex (annex, &pid);
-      if (annex[0] != '\0')
-	return -1;
-    }
-
-  if (pid <= 0)
-    return -1;
-
-  file = (*the_target->pid_to_exec_file) (pid);
-  if (file == NULL)
-    return -1;
-
-  total_len = strlen (file);
-
-  if (offset > total_len)
-    return -1;
-
-  if (offset + len > total_len)
-    len = total_len - offset;
-
-  memcpy (readbuf, file + offset, len);
-  return len;
-}
-
-/* Handle qXfer:features:read.  */
-
-static int
-handle_qxfer_features (const char *annex,
-		       gdb_byte *readbuf, const gdb_byte *writebuf,
-		       ULONGEST offset, LONGEST len)
-{
-  const char *document;
-  size_t total_len;
-
-  if (writebuf != NULL)
-    return -2;
-
-  if (!target_running ())
-    return -1;
-
-  /* Grab the correct annex.  */
-  document = get_features_xml (annex);
-  if (document == NULL)
-    return -1;
-
-  total_len = strlen (document);
-
-  if (offset > total_len)
-    return -1;
-
-  if (offset + len > total_len)
-    len = total_len - offset;
-
-  memcpy (readbuf, document + offset, len);
-  return len;
-}
-
-/* Handle qXfer:libraries:read.  */
-
-static int
-handle_qxfer_libraries (const char *annex,
-			gdb_byte *readbuf, const gdb_byte *writebuf,
-			ULONGEST offset, LONGEST len)
-{
-  if (writebuf != NULL)
-    return -2;
-
-  if (annex[0] != '\0' || current_thread == NULL)
-    return -1;
-
-  std::string document = "<library-list version=\"1.0\">\n";
-
-  for (const dll_info &dll : all_dlls)
-    document += string_printf
-      ("  <library name=\"%s\"><segment address=\"0x%s\"/></library>\n",
-       dll.name.c_str (), paddress (dll.base_addr));
-
-  document += "</library-list>\n";
-
-  if (offset > document.length ())
-    return -1;
-
-  if (offset + len > document.length ())
-    len = document.length () - offset;
-
-  memcpy (readbuf, &document[offset], len);
-
-  return len;
-}
-
-/* Handle qXfer:libraries-svr4:read.  */
-
-static int
-handle_qxfer_libraries_svr4 (const char *annex,
-			     gdb_byte *readbuf, const gdb_byte *writebuf,
-			     ULONGEST offset, LONGEST len)
-{
-  if (writebuf != NULL)
-    return -2;
-
-  if (current_thread == NULL || the_target->qxfer_libraries_svr4 == NULL)
-    return -1;
-
-  return the_target->qxfer_libraries_svr4 (annex, readbuf, writebuf, offset, len);
-}
-
-/* Handle qXfer:osadata:read.  */
-
-static int
-handle_qxfer_osdata (const char *annex,
-		     gdb_byte *readbuf, const gdb_byte *writebuf,
-		     ULONGEST offset, LONGEST len)
-{
-  if (the_target->qxfer_osdata == NULL || writebuf != NULL)
-    return -2;
-
-  return (*the_target->qxfer_osdata) (annex, readbuf, NULL, offset, len);
-}
-
-/* Handle qXfer:siginfo:read and qXfer:siginfo:write.  */
-
-static int
-handle_qxfer_siginfo (const char *annex,
-		      gdb_byte *readbuf, const gdb_byte *writebuf,
-		      ULONGEST offset, LONGEST len)
-{
-  if (the_target->qxfer_siginfo == NULL)
-    return -2;
-
-  if (annex[0] != '\0' || current_thread == NULL)
-    return -1;
-
-  return (*the_target->qxfer_siginfo) (annex, readbuf, writebuf, offset, len);
-}
-
-/* Handle qXfer:statictrace:read.  */
-
-static int
-handle_qxfer_statictrace (const char *annex,
-			  gdb_byte *readbuf, const gdb_byte *writebuf,
-			  ULONGEST offset, LONGEST len)
-{
-  client_state &cs = get_client_state ();
-  ULONGEST nbytes;
-
-  if (writebuf != NULL)
-    return -2;
-
-  if (annex[0] != '\0' || current_thread == NULL 
-      || cs.current_traceframe == -1)
-    return -1;
-
-  if (traceframe_read_sdata (cs.current_traceframe, offset,
-			     readbuf, len, &nbytes))
-    return -1;
-  return nbytes;
-}
-
-/* Helper for handle_qxfer_threads_proper.
-   Emit the XML to describe the thread of INF.  */
-
-static void
-handle_qxfer_threads_worker (thread_info *thread, struct buffer *buffer)
-{
-  ptid_t ptid = ptid_of (thread);
-  char ptid_s[100];
-  int core = target_core_of_thread (ptid);
-  char core_s[21];
-  const char *name = target_thread_name (ptid);
-  int handle_len;
-  gdb_byte *handle;
-  bool handle_status = target_thread_handle (ptid, &handle, &handle_len);
-
-  write_ptid (ptid_s, ptid);
-
-  buffer_xml_printf (buffer, "<thread id=\"%s\"", ptid_s);
-
-  if (core != -1)
-    {
-      sprintf (core_s, "%d", core);
-      buffer_xml_printf (buffer, " core=\"%s\"", core_s);
-    }
-
-  if (name != NULL)
-    buffer_xml_printf (buffer, " name=\"%s\"", name);
-
-  if (handle_status)
-    {
-      char *handle_s = (char *) alloca (handle_len * 2 + 1);
-      bin2hex (handle, handle_s, handle_len);
-      buffer_xml_printf (buffer, " handle=\"%s\"", handle_s);
-    }
-
-  buffer_xml_printf (buffer, "/>\n");
-}
-
-/* Helper for handle_qxfer_threads.  */
-
-static void
-handle_qxfer_threads_proper (struct buffer *buffer)
-{
-  buffer_grow_str (buffer, "<threads>\n");
-
-  for_each_thread ([&] (thread_info *thread)
-    {
-      handle_qxfer_threads_worker (thread, buffer);
-    });
-
-  buffer_grow_str0 (buffer, "</threads>\n");
-}
-
-/* Handle qXfer:threads:read.  */
-
-static int
-handle_qxfer_threads (const char *annex,
-		      gdb_byte *readbuf, const gdb_byte *writebuf,
-		      ULONGEST offset, LONGEST len)
-{
-  static char *result = 0;
-  static unsigned int result_length = 0;
-
-  if (writebuf != NULL)
-    return -2;
-
-  if (annex[0] != '\0')
-    return -1;
-
-  if (offset == 0)
-    {
-      struct buffer buffer;
-      /* When asked for data at offset 0, generate everything and store into
-	 'result'.  Successive reads will be served off 'result'.  */
-      if (result)
-	free (result);
-
-      buffer_init (&buffer);
-
-      handle_qxfer_threads_proper (&buffer);
-
-      result = buffer_finish (&buffer);
-      result_length = strlen (result);
-      buffer_free (&buffer);
-    }
-
-  if (offset >= result_length)
-    {
-      /* We're out of data.  */
-      free (result);
-      result = NULL;
-      result_length = 0;
-      return 0;
-    }
-
-  if (len > result_length - offset)
-    len = result_length - offset;
-
-  memcpy (readbuf, result + offset, len);
-
-  return len;
-}
-
-/* Handle qXfer:traceframe-info:read.  */
-
-static int
-handle_qxfer_traceframe_info (const char *annex,
-			      gdb_byte *readbuf, const gdb_byte *writebuf,
-			      ULONGEST offset, LONGEST len)
-{
-  client_state &cs = get_client_state ();
-  static char *result = 0;
-  static unsigned int result_length = 0;
-
-  if (writebuf != NULL)
-    return -2;
-
-  if (!target_running () || annex[0] != '\0' || cs.current_traceframe == -1)
-    return -1;
-
-  if (offset == 0)
-    {
-      struct buffer buffer;
-
-      /* When asked for data at offset 0, generate everything and
-	 store into 'result'.  Successive reads will be served off
-	 'result'.  */
-      free (result);
-
-      buffer_init (&buffer);
-
-      traceframe_read_info (cs.current_traceframe, &buffer);
-
-      result = buffer_finish (&buffer);
-      result_length = strlen (result);
-      buffer_free (&buffer);
-    }
-
-  if (offset >= result_length)
-    {
-      /* We're out of data.  */
-      free (result);
-      result = NULL;
-      result_length = 0;
-      return 0;
-    }
-
-  if (len > result_length - offset)
-    len = result_length - offset;
-
-  memcpy (readbuf, result + offset, len);
-  return len;
-}
-
-/* Handle qXfer:fdpic:read.  */
-
-static int
-handle_qxfer_fdpic (const char *annex, gdb_byte *readbuf,
-		    const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
-{
-  if (the_target->read_loadmap == NULL)
-    return -2;
-
-  if (current_thread == NULL)
-    return -1;
-
-  return (*the_target->read_loadmap) (annex, offset, readbuf, len);
-}
-
-/* Handle qXfer:btrace:read.  */
-
-static int
-handle_qxfer_btrace (const char *annex,
-		     gdb_byte *readbuf, const gdb_byte *writebuf,
-		     ULONGEST offset, LONGEST len)
-{
-  client_state &cs = get_client_state ();
-  static struct buffer cache;
-  struct thread_info *thread;
-  enum btrace_read_type type;
-  int result;
-
-  if (writebuf != NULL)
-    return -2;
-
-  if (cs.general_thread == null_ptid
-      || cs.general_thread == minus_one_ptid)
-    {
-      strcpy (cs.own_buf, "E.Must select a single thread.");
-      return -3;
-    }
-
-  thread = find_thread_ptid (cs.general_thread);
-  if (thread == NULL)
-    {
-      strcpy (cs.own_buf, "E.No such thread.");
-      return -3;
-    }
-
-  if (thread->btrace == NULL)
-    {
-      strcpy (cs.own_buf, "E.Btrace not enabled.");
-      return -3;
-    }
-
-  if (strcmp (annex, "all") == 0)
-    type = BTRACE_READ_ALL;
-  else if (strcmp (annex, "new") == 0)
-    type = BTRACE_READ_NEW;
-  else if (strcmp (annex, "delta") == 0)
-    type = BTRACE_READ_DELTA;
-  else
-    {
-      strcpy (cs.own_buf, "E.Bad annex.");
-      return -3;
-    }
-
-  if (offset == 0)
-    {
-      buffer_free (&cache);
-
-      try
-	{
-	  result = target_read_btrace (thread->btrace, &cache, type);
-	  if (result != 0)
-	    memcpy (cs.own_buf, cache.buffer, cache.used_size);
-	}
-      catch (const gdb_exception_error &exception)
-	{
-	  sprintf (cs.own_buf, "E.%s", exception.what ());
-	  result = -1;
-	}
-
-      if (result != 0)
-	return -3;
-    }
-  else if (offset > cache.used_size)
-    {
-      buffer_free (&cache);
-      return -3;
-    }
-
-  if (len > cache.used_size - offset)
-    len = cache.used_size - offset;
-
-  memcpy (readbuf, cache.buffer + offset, len);
-
-  return len;
-}
-
-/* Handle qXfer:btrace-conf:read.  */
-
-static int
-handle_qxfer_btrace_conf (const char *annex,
-			  gdb_byte *readbuf, const gdb_byte *writebuf,
-			  ULONGEST offset, LONGEST len)
-{
-  client_state &cs = get_client_state ();
-  static struct buffer cache;
-  struct thread_info *thread;
-  int result;
-
-  if (writebuf != NULL)
-    return -2;
-
-  if (annex[0] != '\0')
-    return -1;
-
-  if (cs.general_thread == null_ptid
-      || cs.general_thread == minus_one_ptid)
-    {
-      strcpy (cs.own_buf, "E.Must select a single thread.");
-      return -3;
-    }
-
-  thread = find_thread_ptid (cs.general_thread);
-  if (thread == NULL)
-    {
-      strcpy (cs.own_buf, "E.No such thread.");
-      return -3;
-    }
-
-  if (thread->btrace == NULL)
-    {
-      strcpy (cs.own_buf, "E.Btrace not enabled.");
-      return -3;
-    }
-
-  if (offset == 0)
-    {
-      buffer_free (&cache);
-
-      try
-	{
-	  result = target_read_btrace_conf (thread->btrace, &cache);
-	  if (result != 0)
-	    memcpy (cs.own_buf, cache.buffer, cache.used_size);
-	}
-      catch (const gdb_exception_error &exception)
-	{
-	  sprintf (cs.own_buf, "E.%s", exception.what ());
-	  result = -1;
-	}
-
-      if (result != 0)
-	return -3;
-    }
-  else if (offset > cache.used_size)
-    {
-      buffer_free (&cache);
-      return -3;
-    }
-
-  if (len > cache.used_size - offset)
-    len = cache.used_size - offset;
-
-  memcpy (readbuf, cache.buffer + offset, len);
-
-  return len;
-}
-
-static const struct qxfer qxfer_packets[] =
-  {
-    { "auxv", handle_qxfer_auxv },
-    { "btrace", handle_qxfer_btrace },
-    { "btrace-conf", handle_qxfer_btrace_conf },
-    { "exec-file", handle_qxfer_exec_file},
-    { "fdpic", handle_qxfer_fdpic},
-    { "features", handle_qxfer_features },
-    { "libraries", handle_qxfer_libraries },
-    { "libraries-svr4", handle_qxfer_libraries_svr4 },
-    { "osdata", handle_qxfer_osdata },
-    { "siginfo", handle_qxfer_siginfo },
-    { "statictrace", handle_qxfer_statictrace },
-    { "threads", handle_qxfer_threads },
-    { "traceframe-info", handle_qxfer_traceframe_info },
-  };
-
-static int
-handle_qxfer (char *own_buf, int packet_len, int *new_packet_len_p)
-{
-  int i;
-  char *object;
-  char *rw;
-  char *annex;
-  char *offset;
-
-  if (!startswith (own_buf, "qXfer:"))
-    return 0;
-
-  /* Grab the object, r/w and annex.  */
-  if (decode_xfer (own_buf + 6, &object, &rw, &annex, &offset) < 0)
-    {
-      write_enn (own_buf);
-      return 1;
-    }
-
-  for (i = 0;
-       i < sizeof (qxfer_packets) / sizeof (qxfer_packets[0]);
-       i++)
-    {
-      const struct qxfer *q = &qxfer_packets[i];
-
-      if (strcmp (object, q->object) == 0)
-	{
-	  if (strcmp (rw, "read") == 0)
-	    {
-	      unsigned char *data;
-	      int n;
-	      CORE_ADDR ofs;
-	      unsigned int len;
-
-	      /* Grab the offset and length.  */
-	      if (decode_xfer_read (offset, &ofs, &len) < 0)
-		{
-		  write_enn (own_buf);
-		  return 1;
-		}
-
-	      /* Read one extra byte, as an indicator of whether there is
-		 more.  */
-	      if (len > PBUFSIZ - 2)
-		len = PBUFSIZ - 2;
-	      data = (unsigned char *) malloc (len + 1);
-	      if (data == NULL)
-		{
-		  write_enn (own_buf);
-		  return 1;
-		}
-	      n = (*q->xfer) (annex, data, NULL, ofs, len + 1);
-	      if (n == -2)
-		{
-		  free (data);
-		  return 0;
-		}
-	      else if (n == -3)
-		{
-		  /* Preserve error message.  */
-		}
-	      else if (n < 0)
-		write_enn (own_buf);
-	      else if (n > len)
-		*new_packet_len_p = write_qxfer_response (own_buf, data, len, 1);
-	      else
-		*new_packet_len_p = write_qxfer_response (own_buf, data, n, 0);
-
-	      free (data);
-	      return 1;
-	    }
-	  else if (strcmp (rw, "write") == 0)
-	    {
-	      int n;
-	      unsigned int len;
-	      CORE_ADDR ofs;
-	      unsigned char *data;
-
-	      strcpy (own_buf, "E00");
-	      data = (unsigned char *) malloc (packet_len - (offset - own_buf));
-	      if (data == NULL)
-		{
-		  write_enn (own_buf);
-		  return 1;
-		}
-	      if (decode_xfer_write (offset, packet_len - (offset - own_buf),
-				     &ofs, &len, data) < 0)
-		{
-		  free (data);
-		  write_enn (own_buf);
-		  return 1;
-		}
-
-	      n = (*q->xfer) (annex, NULL, data, ofs, len);
-	      if (n == -2)
-		{
-		  free (data);
-		  return 0;
-		}
-	      else if (n == -3)
-		{
-		  /* Preserve error message.  */
-		}
-	      else if (n < 0)
-		write_enn (own_buf);
-	      else
-		sprintf (own_buf, "%x", n);
-
-	      free (data);
-	      return 1;
-	    }
-
-	  return 0;
-	}
-    }
-
-  return 0;
-}
-
-/* Compute 32 bit CRC from inferior memory.
-
-   On success, return 32 bit CRC.
-   On failure, return (unsigned long long) -1.  */
-
-static unsigned long long
-crc32 (CORE_ADDR base, int len, unsigned int crc)
-{
-  while (len--)
-    {
-      unsigned char byte = 0;
-
-      /* Return failure if memory read fails.  */
-      if (read_inferior_memory (base, &byte, 1) != 0)
-	return (unsigned long long) -1;
-
-      crc = xcrc32 (&byte, 1, crc);
-      base++;
-    }
-  return (unsigned long long) crc;
-}
-
-/* Add supported btrace packets to BUF.  */
-
-static void
-supported_btrace_packets (char *buf)
-{
-  strcat (buf, ";Qbtrace:bts+");
-  strcat (buf, ";Qbtrace-conf:bts:size+");
-  strcat (buf, ";Qbtrace:pt+");
-  strcat (buf, ";Qbtrace-conf:pt:size+");
-  strcat (buf, ";Qbtrace:off+");
-  strcat (buf, ";qXfer:btrace:read+");
-  strcat (buf, ";qXfer:btrace-conf:read+");
-}
-
-/* Handle all of the extended 'q' packets.  */
-
-static void
-handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
-{
-  client_state &cs = get_client_state ();
-  static std::list<thread_info *>::const_iterator thread_iter;
-
-  /* Reply the current thread id.  */
-  if (strcmp ("qC", own_buf) == 0 && !disable_packet_qC)
-    {
-      ptid_t ptid;
-      require_running_or_return (own_buf);
-
-      if (cs.general_thread != null_ptid && cs.general_thread != minus_one_ptid)
-	ptid = cs.general_thread;
-      else
-	{
-	  thread_iter = all_threads.begin ();
-	  ptid = (*thread_iter)->id;
-	}
-
-      sprintf (own_buf, "QC");
-      own_buf += 2;
-      write_ptid (own_buf, ptid);
-      return;
-    }
-
-  if (strcmp ("qSymbol::", own_buf) == 0)
-    {
-      struct thread_info *save_thread = current_thread;
-
-      /* For qSymbol, GDB only changes the current thread if the
-	 previous current thread was of a different process.  So if
-	 the previous thread is gone, we need to pick another one of
-	 the same process.  This can happen e.g., if we followed an
-	 exec in a non-leader thread.  */
-      if (current_thread == NULL)
-	{
-	  current_thread
-	    = find_any_thread_of_pid (cs.general_thread.pid ());
-
-	  /* Just in case, if we didn't find a thread, then bail out
-	     instead of crashing.  */
-	  if (current_thread == NULL)
-	    {
-	      write_enn (own_buf);
-	      current_thread = save_thread;
-	      return;
-	    }
-	}
-
-      /* GDB is suggesting new symbols have been loaded.  This may
-	 mean a new shared library has been detected as loaded, so
-	 take the opportunity to check if breakpoints we think are
-	 inserted, still are.  Note that it isn't guaranteed that
-	 we'll see this when a shared library is loaded, and nor will
-	 we see this for unloads (although breakpoints in unloaded
-	 libraries shouldn't trigger), as GDB may not find symbols for
-	 the library at all.  We also re-validate breakpoints when we
-	 see a second GDB breakpoint for the same address, and or when
-	 we access breakpoint shadows.  */
-      validate_breakpoints ();
-
-      if (target_supports_tracepoints ())
-	tracepoint_look_up_symbols ();
-
-      if (current_thread != NULL && the_target->look_up_symbols != NULL)
-	(*the_target->look_up_symbols) ();
-
-      current_thread = save_thread;
-
-      strcpy (own_buf, "OK");
-      return;
-    }
-
-  if (!disable_packet_qfThreadInfo)
-    {
-      if (strcmp ("qfThreadInfo", own_buf) == 0)
-	{
-	  require_running_or_return (own_buf);
-	  thread_iter = all_threads.begin ();
-
-	  *own_buf++ = 'm';
-	  ptid_t ptid = (*thread_iter)->id;
-	  write_ptid (own_buf, ptid);
-	  thread_iter++;
-	  return;
-	}
-
-      if (strcmp ("qsThreadInfo", own_buf) == 0)
-	{
-	  require_running_or_return (own_buf);
-	  if (thread_iter != all_threads.end ())
-	    {
-	      *own_buf++ = 'm';
-	      ptid_t ptid = (*thread_iter)->id;
-	      write_ptid (own_buf, ptid);
-	      thread_iter++;
-	      return;
-	    }
-	  else
-	    {
-	      sprintf (own_buf, "l");
-	      return;
-	    }
-	}
-    }
-
-  if (the_target->read_offsets != NULL
-      && strcmp ("qOffsets", own_buf) == 0)
-    {
-      CORE_ADDR text, data;
-
-      require_running_or_return (own_buf);
-      if (the_target->read_offsets (&text, &data))
-	sprintf (own_buf, "Text=%lX;Data=%lX;Bss=%lX",
-		 (long)text, (long)data, (long)data);
-      else
-	write_enn (own_buf);
-
-      return;
-    }
-
-  /* Protocol features query.  */
-  if (startswith (own_buf, "qSupported")
-      && (own_buf[10] == ':' || own_buf[10] == '\0'))
-    {
-      char *p = &own_buf[10];
-      int gdb_supports_qRelocInsn = 0;
-
-      /* Process each feature being provided by GDB.  The first
-	 feature will follow a ':', and latter features will follow
-	 ';'.  */
-      if (*p == ':')
-	{
-	  char **qsupported = NULL;
-	  int count = 0;
-	  int unknown = 0;
-	  int i;
-
-	  /* Two passes, to avoid nested strtok calls in
-	     target_process_qsupported.  */
-	  char *saveptr;
-	  for (p = strtok_r (p + 1, ";", &saveptr);
-	       p != NULL;
-	       p = strtok_r (NULL, ";", &saveptr))
-	    {
-	      count++;
-	      qsupported = XRESIZEVEC (char *, qsupported, count);
-	      qsupported[count - 1] = xstrdup (p);
-	    }
-
-	  for (i = 0; i < count; i++)
-	    {
-	      p = qsupported[i];
-	      if (strcmp (p, "multiprocess+") == 0)
-		{
-		  /* GDB supports and wants multi-process support if
-		     possible.  */
-		  if (target_supports_multi_process ())
-		    cs.multi_process = 1;
-		}
-	      else if (strcmp (p, "qRelocInsn+") == 0)
-		{
-		  /* GDB supports relocate instruction requests.  */
-		  gdb_supports_qRelocInsn = 1;
-		}
-	      else if (strcmp (p, "swbreak+") == 0)
-		{
-		  /* GDB wants us to report whether a trap is caused
-		     by a software breakpoint and for us to handle PC
-		     adjustment if necessary on this target.  */
-		  if (target_supports_stopped_by_sw_breakpoint ())
-		    cs.swbreak_feature = 1;
-		}
-	      else if (strcmp (p, "hwbreak+") == 0)
-		{
-		  /* GDB wants us to report whether a trap is caused
-		     by a hardware breakpoint.  */
-		  if (target_supports_stopped_by_hw_breakpoint ())
-		    cs.hwbreak_feature = 1;
-		}
-	      else if (strcmp (p, "fork-events+") == 0)
-		{
-		  /* GDB supports and wants fork events if possible.  */
-		  if (target_supports_fork_events ())
-		    cs.report_fork_events = 1;
-		}
-	      else if (strcmp (p, "vfork-events+") == 0)
-		{
-		  /* GDB supports and wants vfork events if possible.  */
-		  if (target_supports_vfork_events ())
-		    cs.report_vfork_events = 1;
-		}
-	      else if (strcmp (p, "exec-events+") == 0)
-		{
-		  /* GDB supports and wants exec events if possible.  */
-		  if (target_supports_exec_events ())
-		    cs.report_exec_events = 1;
-		}
-	      else if (strcmp (p, "vContSupported+") == 0)
-		cs.vCont_supported = 1;
-	      else if (strcmp (p, "QThreadEvents+") == 0)
-		;
-	      else if (strcmp (p, "no-resumed+") == 0)
-		{
-		  /* GDB supports and wants TARGET_WAITKIND_NO_RESUMED
-		     events.  */
-		  report_no_resumed = true;
-		}
-	      else
-		{
-		  /* Move the unknown features all together.  */
-		  qsupported[i] = NULL;
-		  qsupported[unknown] = p;
-		  unknown++;
-		}
-	    }
-
-	  /* Give the target backend a chance to process the unknown
-	     features.  */
-	  target_process_qsupported (qsupported, unknown);
-
-	  for (i = 0; i < count; i++)
-	    free (qsupported[i]);
-	  free (qsupported);
-	}
-
-      sprintf (own_buf,
-	       "PacketSize=%x;QPassSignals+;QProgramSignals+;"
-	       "QStartupWithShell+;QEnvironmentHexEncoded+;"
-	       "QEnvironmentReset+;QEnvironmentUnset+;"
-	       "QSetWorkingDir+",
-	       PBUFSIZ - 1);
-
-      if (target_supports_catch_syscall ())
-	strcat (own_buf, ";QCatchSyscalls+");
-
-      if (the_target->qxfer_libraries_svr4 != NULL)
-	strcat (own_buf, ";qXfer:libraries-svr4:read+"
-		";augmented-libraries-svr4-read+");
-      else
-	{
-	  /* We do not have any hook to indicate whether the non-SVR4 target
-	     backend supports qXfer:libraries:read, so always report it.  */
-	  strcat (own_buf, ";qXfer:libraries:read+");
-	}
-
-      if (the_target->read_auxv != NULL)
-	strcat (own_buf, ";qXfer:auxv:read+");
-
-      if (the_target->qxfer_siginfo != NULL)
-	strcat (own_buf, ";qXfer:siginfo:read+;qXfer:siginfo:write+");
-
-      if (the_target->read_loadmap != NULL)
-	strcat (own_buf, ";qXfer:fdpic:read+");
-
-      /* We always report qXfer:features:read, as targets may
-	 install XML files on a subsequent call to arch_setup.
-	 If we reported to GDB on startup that we don't support
-	 qXfer:feature:read at all, we will never be re-queried.  */
-      strcat (own_buf, ";qXfer:features:read+");
-
-      if (cs.transport_is_reliable)
-	strcat (own_buf, ";QStartNoAckMode+");
-
-      if (the_target->qxfer_osdata != NULL)
-	strcat (own_buf, ";qXfer:osdata:read+");
-
-      if (target_supports_multi_process ())
-	strcat (own_buf, ";multiprocess+");
-
-      if (target_supports_fork_events ())
-	strcat (own_buf, ";fork-events+");
-
-      if (target_supports_vfork_events ())
-	strcat (own_buf, ";vfork-events+");
-
-      if (target_supports_exec_events ())
-	strcat (own_buf, ";exec-events+");
-
-      if (target_supports_non_stop ())
-	strcat (own_buf, ";QNonStop+");
-
-      if (target_supports_disable_randomization ())
-	strcat (own_buf, ";QDisableRandomization+");
-
-      strcat (own_buf, ";qXfer:threads:read+");
-
-      if (target_supports_tracepoints ())
-	{
-	  strcat (own_buf, ";ConditionalTracepoints+");
-	  strcat (own_buf, ";TraceStateVariables+");
-	  strcat (own_buf, ";TracepointSource+");
-	  strcat (own_buf, ";DisconnectedTracing+");
-	  if (gdb_supports_qRelocInsn && target_supports_fast_tracepoints ())
-	    strcat (own_buf, ";FastTracepoints+");
-	  strcat (own_buf, ";StaticTracepoints+");
-	  strcat (own_buf, ";InstallInTrace+");
-	  strcat (own_buf, ";qXfer:statictrace:read+");
-	  strcat (own_buf, ";qXfer:traceframe-info:read+");
-	  strcat (own_buf, ";EnableDisableTracepoints+");
-	  strcat (own_buf, ";QTBuffer:size+");
-	  strcat (own_buf, ";tracenz+");
-	}
-
-      if (target_supports_hardware_single_step ()
-	  || target_supports_software_single_step () )
-	{
-	  strcat (own_buf, ";ConditionalBreakpoints+");
-	}
-      strcat (own_buf, ";BreakpointCommands+");
-
-      if (target_supports_agent ())
-	strcat (own_buf, ";QAgent+");
-
-      supported_btrace_packets (own_buf);
-
-      if (target_supports_stopped_by_sw_breakpoint ())
-	strcat (own_buf, ";swbreak+");
-
-      if (target_supports_stopped_by_hw_breakpoint ())
-	strcat (own_buf, ";hwbreak+");
-
-      if (the_target->pid_to_exec_file != NULL)
-	strcat (own_buf, ";qXfer:exec-file:read+");
-
-      strcat (own_buf, ";vContSupported+");
-
-      strcat (own_buf, ";QThreadEvents+");
-
-      strcat (own_buf, ";no-resumed+");
-
-      /* Reinitialize components as needed for the new connection.  */
-      hostio_handle_new_gdb_connection ();
-      target_handle_new_gdb_connection ();
-
-      return;
-    }
-
-  /* Thread-local storage support.  */
-  if (the_target->get_tls_address != NULL
-      && startswith (own_buf, "qGetTLSAddr:"))
-    {
-      char *p = own_buf + 12;
-      CORE_ADDR parts[2], address = 0;
-      int i, err;
-      ptid_t ptid = null_ptid;
-
-      require_running_or_return (own_buf);
-
-      for (i = 0; i < 3; i++)
-	{
-	  char *p2;
-	  int len;
-
-	  if (p == NULL)
-	    break;
-
-	  p2 = strchr (p, ',');
-	  if (p2)
-	    {
-	      len = p2 - p;
-	      p2++;
-	    }
-	  else
-	    {
-	      len = strlen (p);
-	      p2 = NULL;
-	    }
-
-	  if (i == 0)
-	    ptid = read_ptid (p, NULL);
-	  else
-	    decode_address (&parts[i - 1], p, len);
-	  p = p2;
-	}
-
-      if (p != NULL || i < 3)
-	err = 1;
-      else
-	{
-	  struct thread_info *thread = find_thread_ptid (ptid);
-
-	  if (thread == NULL)
-	    err = 2;
-	  else
-	    err = the_target->get_tls_address (thread, parts[0], parts[1],
-					       &address);
-	}
-
-      if (err == 0)
-	{
-	  strcpy (own_buf, paddress(address));
-	  return;
-	}
-      else if (err > 0)
-	{
-	  write_enn (own_buf);
-	  return;
-	}
-
-      /* Otherwise, pretend we do not understand this packet.  */
-    }
-
-  /* Windows OS Thread Information Block address support.  */
-  if (the_target->get_tib_address != NULL
-      && startswith (own_buf, "qGetTIBAddr:"))
-    {
-      const char *annex;
-      int n;
-      CORE_ADDR tlb;
-      ptid_t ptid = read_ptid (own_buf + 12, &annex);
-
-      n = (*the_target->get_tib_address) (ptid, &tlb);
-      if (n == 1)
-	{
-	  strcpy (own_buf, paddress(tlb));
-	  return;
-	}
-      else if (n == 0)
-	{
-	  write_enn (own_buf);
-	  return;
-	}
-      return;
-    }
-
-  /* Handle "monitor" commands.  */
-  if (startswith (own_buf, "qRcmd,"))
-    {
-      char *mon = (char *) malloc (PBUFSIZ);
-      int len = strlen (own_buf + 6);
-
-      if (mon == NULL)
-	{
-	  write_enn (own_buf);
-	  return;
-	}
-
-      if ((len % 2) != 0
-	  || hex2bin (own_buf + 6, (gdb_byte *) mon, len / 2) != len / 2)
-	{
-	  write_enn (own_buf);
-	  free (mon);
-	  return;
-	}
-      mon[len / 2] = '\0';
-
-      write_ok (own_buf);
-
-      if (the_target->handle_monitor_command == NULL
-	  || (*the_target->handle_monitor_command) (mon) == 0)
-	/* Default processing.  */
-	handle_monitor_command (mon, own_buf);
-
-      free (mon);
-      return;
-    }
-
-  if (startswith (own_buf, "qSearch:memory:"))
-    {
-      require_running_or_return (own_buf);
-      handle_search_memory (own_buf, packet_len);
-      return;
-    }
-
-  if (strcmp (own_buf, "qAttached") == 0
-      || startswith (own_buf, "qAttached:"))
-    {
-      struct process_info *process;
-
-      if (own_buf[sizeof ("qAttached") - 1])
-	{
-	  int pid = strtoul (own_buf + sizeof ("qAttached:") - 1, NULL, 16);
-	  process = find_process_pid (pid);
-	}
-      else
-	{
-	  require_running_or_return (own_buf);
-	  process = current_process ();
-	}
-
-      if (process == NULL)
-	{
-	  write_enn (own_buf);
-	  return;
-	}
-
-      strcpy (own_buf, process->attached ? "1" : "0");
-      return;
-    }
-
-  if (startswith (own_buf, "qCRC:"))
-    {
-      /* CRC check (compare-section).  */
-      const char *comma;
-      ULONGEST base;
-      int len;
-      unsigned long long crc;
-
-      require_running_or_return (own_buf);
-      comma = unpack_varlen_hex (own_buf + 5, &base);
-      if (*comma++ != ',')
-	{
-	  write_enn (own_buf);
-	  return;
-	}
-      len = strtoul (comma, NULL, 16);
-      crc = crc32 (base, len, 0xffffffff);
-      /* Check for memory failure.  */
-      if (crc == (unsigned long long) -1)
-	{
-	  write_enn (own_buf);
-	  return;
-	}
-      sprintf (own_buf, "C%lx", (unsigned long) crc);
-      return;
-    }
-
-  if (handle_qxfer (own_buf, packet_len, new_packet_len_p))
-    return;
-
-  if (target_supports_tracepoints () && handle_tracepoint_query (own_buf))
-    return;
-
-  /* Otherwise we didn't know what packet it was.  Say we didn't
-     understand it.  */
-  own_buf[0] = 0;
-}
-
-static void gdb_wants_all_threads_stopped (void);
-static void resume (struct thread_resume *actions, size_t n);
-
-/* The callback that is passed to visit_actioned_threads.  */
-typedef int (visit_actioned_threads_callback_ftype)
-  (const struct thread_resume *, struct thread_info *);
-
-/* Call CALLBACK for any thread to which ACTIONS applies to.  Returns
-   true if CALLBACK returns true.  Returns false if no matching thread
-   is found or CALLBACK results false.
-   Note: This function is itself a callback for find_thread.  */
-
-static bool
-visit_actioned_threads (thread_info *thread,
-			const struct thread_resume *actions,
-			size_t num_actions,
-			visit_actioned_threads_callback_ftype *callback)
-{
-  for (size_t i = 0; i < num_actions; i++)
-    {
-      const struct thread_resume *action = &actions[i];
-
-      if (action->thread == minus_one_ptid
-	  || action->thread == thread->id
-	  || ((action->thread.pid ()
-	       == thread->id.pid ())
-	      && action->thread.lwp () == -1))
-	{
-	  if ((*callback) (action, thread))
-	    return true;
-	}
-    }
-
-  return false;
-}
-
-/* Callback for visit_actioned_threads.  If the thread has a pending
-   status to report, report it now.  */
-
-static int
-handle_pending_status (const struct thread_resume *resumption,
-		       struct thread_info *thread)
-{
-  client_state &cs = get_client_state ();
-  if (thread->status_pending_p)
-    {
-      thread->status_pending_p = 0;
-
-      cs.last_status = thread->last_status;
-      cs.last_ptid = thread->id;
-      prepare_resume_reply (cs.own_buf, cs.last_ptid, &cs.last_status);
-      return 1;
-    }
-  return 0;
-}
-
-/* Parse vCont packets.  */
-static void
-handle_v_cont (char *own_buf)
-{
-  const char *p;
-  int n = 0, i = 0;
-  struct thread_resume *resume_info;
-  struct thread_resume default_action { null_ptid };
-
-  /* Count the number of semicolons in the packet.  There should be one
-     for every action.  */
-  p = &own_buf[5];
-  while (p)
-    {
-      n++;
-      p++;
-      p = strchr (p, ';');
-    }
-
-  resume_info = (struct thread_resume *) malloc (n * sizeof (resume_info[0]));
-  if (resume_info == NULL)
-    goto err;
-
-  p = &own_buf[5];
-  while (*p)
-    {
-      p++;
-
-      memset (&resume_info[i], 0, sizeof resume_info[i]);
-
-      if (p[0] == 's' || p[0] == 'S')
-	resume_info[i].kind = resume_step;
-      else if (p[0] == 'r')
-	resume_info[i].kind = resume_step;
-      else if (p[0] == 'c' || p[0] == 'C')
-	resume_info[i].kind = resume_continue;
-      else if (p[0] == 't')
-	resume_info[i].kind = resume_stop;
-      else
-	goto err;
-
-      if (p[0] == 'S' || p[0] == 'C')
-	{
-	  char *q;
-	  int sig = strtol (p + 1, &q, 16);
-	  if (p == q)
-	    goto err;
-	  p = q;
-
-	  if (!gdb_signal_to_host_p ((enum gdb_signal) sig))
-	    goto err;
-	  resume_info[i].sig = gdb_signal_to_host ((enum gdb_signal) sig);
-	}
-      else if (p[0] == 'r')
-	{
-	  ULONGEST addr;
-
-	  p = unpack_varlen_hex (p + 1, &addr);
-	  resume_info[i].step_range_start = addr;
-
-	  if (*p != ',')
-	    goto err;
-
-	  p = unpack_varlen_hex (p + 1, &addr);
-	  resume_info[i].step_range_end = addr;
-	}
-      else
-	{
-	  p = p + 1;
-	}
-
-      if (p[0] == 0)
-	{
-	  resume_info[i].thread = minus_one_ptid;
-	  default_action = resume_info[i];
-
-	  /* Note: we don't increment i here, we'll overwrite this entry
-	     the next time through.  */
-	}
-      else if (p[0] == ':')
-	{
-	  const char *q;
-	  ptid_t ptid = read_ptid (p + 1, &q);
-
-	  if (p == q)
-	    goto err;
-	  p = q;
-	  if (p[0] != ';' && p[0] != 0)
-	    goto err;
-
-	  resume_info[i].thread = ptid;
-
-	  i++;
-	}
-    }
-
-  if (i < n)
-    resume_info[i] = default_action;
-
-  resume (resume_info, n);
-  free (resume_info);
-  return;
-
-err:
-  write_enn (own_buf);
-  free (resume_info);
-  return;
-}
-
-/* Resume target with ACTIONS, an array of NUM_ACTIONS elements.  */
-
-static void
-resume (struct thread_resume *actions, size_t num_actions)
-{
-  client_state &cs = get_client_state ();
-  if (!non_stop)
-    {
-      /* Check if among the threads that GDB wants actioned, there's
-	 one with a pending status to report.  If so, skip actually
-	 resuming/stopping and report the pending event
-	 immediately.  */
-
-      thread_info *thread_with_status = find_thread ([&] (thread_info *thread)
-	{
-	  return visit_actioned_threads (thread, actions, num_actions,
-					 handle_pending_status);
-	});
-
-      if (thread_with_status != NULL)
-	return;
-
-      enable_async_io ();
-    }
-
-  (*the_target->resume) (actions, num_actions);
-
-  if (non_stop)
-    write_ok (cs.own_buf);
-  else
-    {
-      cs.last_ptid = mywait (minus_one_ptid, &cs.last_status, 0, 1);
-
-      if (cs.last_status.kind == TARGET_WAITKIND_NO_RESUMED
-	  && !report_no_resumed)
-	{
-	  /* The client does not support this stop reply.  At least
-	     return error.  */
-	  sprintf (cs.own_buf, "E.No unwaited-for children left.");
-	  disable_async_io ();
-	  return;
-	}
-
-      if (cs.last_status.kind != TARGET_WAITKIND_EXITED
-          && cs.last_status.kind != TARGET_WAITKIND_SIGNALLED
-	  && cs.last_status.kind != TARGET_WAITKIND_NO_RESUMED)
-	current_thread->last_status = cs.last_status;
-
-      /* From the client's perspective, all-stop mode always stops all
-	 threads implicitly (and the target backend has already done
-	 so by now).  Tag all threads as "want-stopped", so we don't
-	 resume them implicitly without the client telling us to.  */
-      gdb_wants_all_threads_stopped ();
-      prepare_resume_reply (cs.own_buf, cs.last_ptid, &cs.last_status);
-      disable_async_io ();
-
-      if (cs.last_status.kind == TARGET_WAITKIND_EXITED
-          || cs.last_status.kind == TARGET_WAITKIND_SIGNALLED)
-        target_mourn_inferior (cs.last_ptid);
-    }
-}
-
-/* Attach to a new program.  Return 1 if successful, 0 if failure.  */
-static int
-handle_v_attach (char *own_buf)
-{
-  client_state &cs = get_client_state ();
-  int pid;
-
-  pid = strtol (own_buf + 8, NULL, 16);
-  if (pid != 0 && attach_inferior (pid) == 0)
-    {
-      /* Don't report shared library events after attaching, even if
-	 some libraries are preloaded.  GDB will always poll the
-	 library list.  Avoids the "stopped by shared library event"
-	 notice on the GDB side.  */
-      dlls_changed = 0;
-
-      if (non_stop)
-	{
-	  /* In non-stop, we don't send a resume reply.  Stop events
-	     will follow up using the normal notification
-	     mechanism.  */
-	  write_ok (own_buf);
-	}
-      else
-	prepare_resume_reply (own_buf, cs.last_ptid, &cs.last_status);
-
-      return 1;
-    }
-  else
-    {
-      write_enn (own_buf);
-      return 0;
-    }
-}
-
-/* Run a new program.  Return 1 if successful, 0 if failure.  */
-static int
-handle_v_run (char *own_buf)
-{
-  client_state &cs = get_client_state ();
-  char *p, *next_p;
-  std::vector<char *> new_argv;
-  char *new_program_name = NULL;
-  int i, new_argc;
-
-  new_argc = 0;
-  for (p = own_buf + strlen ("vRun;"); p && *p; p = strchr (p, ';'))
-    {
-      p++;
-      new_argc++;
-    }
-
-  for (i = 0, p = own_buf + strlen ("vRun;"); *p; p = next_p, ++i)
-    {
-      next_p = strchr (p, ';');
-      if (next_p == NULL)
-	next_p = p + strlen (p);
-
-      if (i == 0 && p == next_p)
-	{
-	  /* No program specified.  */
-	  new_program_name = NULL;
-	}
-      else if (p == next_p)
-	{
-	  /* Empty argument.  */
-	  new_argv.push_back (xstrdup ("''"));
-	}
-      else
-	{
-	  size_t len = (next_p - p) / 2;
-	  /* ARG is the unquoted argument received via the RSP.  */
-	  char *arg = (char *) xmalloc (len + 1);
-	  /* FULL_ARGS will contain the quoted version of ARG.  */
-	  char *full_arg = (char *) xmalloc ((len + 1) * 2);
-	  /* These are pointers used to navigate the strings above.  */
-	  char *tmp_arg = arg;
-	  char *tmp_full_arg = full_arg;
-	  int need_quote = 0;
-
-	  hex2bin (p, (gdb_byte *) arg, len);
-	  arg[len] = '\0';
-
-	  while (*tmp_arg != '\0')
-	    {
-	      switch (*tmp_arg)
-		{
-		case '\n':
-		  /* Quote \n.  */
-		  *tmp_full_arg = '\'';
-		  ++tmp_full_arg;
-		  need_quote = 1;
-		  break;
-
-		case '\'':
-		  /* Quote single quote.  */
-		  *tmp_full_arg = '\\';
-		  ++tmp_full_arg;
-		  break;
-
-		default:
-		  break;
-		}
-
-	      *tmp_full_arg = *tmp_arg;
-	      ++tmp_full_arg;
-	      ++tmp_arg;
-	    }
-
-	  if (need_quote)
-	    *tmp_full_arg++ = '\'';
-
-	  /* Finish FULL_ARG and push it into the vector containing
-	     the argv.  */
-	  *tmp_full_arg = '\0';
-	  if (i == 0)
-	    new_program_name = full_arg;
-	  else
-	    new_argv.push_back (full_arg);
-	  xfree (arg);
-	}
-      if (*next_p)
-	next_p++;
-    }
-  new_argv.push_back (NULL);
-
-  if (new_program_name == NULL)
-    {
-      /* GDB didn't specify a program to run.  Use the program from the
-	 last run with the new argument list.  */
-      if (program_path.get () == NULL)
-	{
-	  write_enn (own_buf);
-	  free_vector_argv (new_argv);
-	  return 0;
-	}
-    }
-  else
-    program_path.set (gdb::unique_xmalloc_ptr<char> (new_program_name));
-
-  /* Free the old argv and install the new one.  */
-  free_vector_argv (program_args);
-  program_args = new_argv;
-
-  create_inferior (program_path.get (), program_args);
-
-  if (cs.last_status.kind == TARGET_WAITKIND_STOPPED)
-    {
-      prepare_resume_reply (own_buf, cs.last_ptid, &cs.last_status);
-
-      /* In non-stop, sending a resume reply doesn't set the general
-	 thread, but GDB assumes a vRun sets it (this is so GDB can
-	 query which is the main thread of the new inferior.  */
-      if (non_stop)
-	cs.general_thread = cs.last_ptid;
-
-      return 1;
-    }
-  else
-    {
-      write_enn (own_buf);
-      return 0;
-    }
-}
-
-/* Kill process.  Return 1 if successful, 0 if failure.  */
-static int
-handle_v_kill (char *own_buf)
-{
-  client_state &cs = get_client_state ();
-  int pid;
-  char *p = &own_buf[6];
-  if (cs.multi_process)
-    pid = strtol (p, NULL, 16);
-  else
-    pid = signal_pid;
-
-  process_info *proc = find_process_pid (pid);
-
-  if (proc != nullptr && kill_inferior (proc) == 0)
-    {
-      cs.last_status.kind = TARGET_WAITKIND_SIGNALLED;
-      cs.last_status.value.sig = GDB_SIGNAL_KILL;
-      cs.last_ptid = ptid_t (pid);
-      discard_queued_stop_replies (cs.last_ptid);
-      write_ok (own_buf);
-      return 1;
-    }
-  else
-    {
-      write_enn (own_buf);
-      return 0;
-    }
-}
-
-/* Handle all of the extended 'v' packets.  */
-void
-handle_v_requests (char *own_buf, int packet_len, int *new_packet_len)
-{
-  client_state &cs = get_client_state ();
-  if (!disable_packet_vCont)
-    {
-      if (strcmp (own_buf, "vCtrlC") == 0)
-	{
-	  (*the_target->request_interrupt) ();
-	  write_ok (own_buf);
-	  return;
-	}
-
-      if (startswith (own_buf, "vCont;"))
-	{
-	  handle_v_cont (own_buf);
-	  return;
-	}
-
-      if (startswith (own_buf, "vCont?"))
-	{
-	  strcpy (own_buf, "vCont;c;C;t");
-
-	  if (target_supports_hardware_single_step ()
-	      || target_supports_software_single_step ()
-	      || !cs.vCont_supported)
-	    {
-	      /* If target supports single step either by hardware or by
-		 software, add actions s and S to the list of supported
-		 actions.  On the other hand, if GDB doesn't request the
-		 supported vCont actions in qSupported packet, add s and
-		 S to the list too.  */
-	      own_buf = own_buf + strlen (own_buf);
-	      strcpy (own_buf, ";s;S");
-	    }
-
-	  if (target_supports_range_stepping ())
-	    {
-	      own_buf = own_buf + strlen (own_buf);
-	      strcpy (own_buf, ";r");
-	    }
-	  return;
-	}
-    }
-
-  if (startswith (own_buf, "vFile:")
-      && handle_vFile (own_buf, packet_len, new_packet_len))
-    return;
-
-  if (startswith (own_buf, "vAttach;"))
-    {
-      if ((!extended_protocol || !cs.multi_process) && target_running ())
-	{
-	  fprintf (stderr, "Already debugging a process\n");
-	  write_enn (own_buf);
-	  return;
-	}
-      handle_v_attach (own_buf);
-      return;
-    }
-
-  if (startswith (own_buf, "vRun;"))
-    {
-      if ((!extended_protocol || !cs.multi_process) && target_running ())
-	{
-	  fprintf (stderr, "Already debugging a process\n");
-	  write_enn (own_buf);
-	  return;
-	}
-      handle_v_run (own_buf);
-      return;
-    }
-
-  if (startswith (own_buf, "vKill;"))
-    {
-      if (!target_running ())
-	{
-	  fprintf (stderr, "No process to kill\n");
-	  write_enn (own_buf);
-	  return;
-	}
-      handle_v_kill (own_buf);
-      return;
-    }
-
-  if (handle_notif_ack (own_buf, packet_len))
-    return;
-
-  /* Otherwise we didn't know what packet it was.  Say we didn't
-     understand it.  */
-  own_buf[0] = 0;
-  return;
-}
-
-/* Resume thread and wait for another event.  In non-stop mode,
-   don't really wait here, but return immediatelly to the event
-   loop.  */
-static void
-myresume (char *own_buf, int step, int sig)
-{
-  client_state &cs = get_client_state ();
-  struct thread_resume resume_info[2];
-  int n = 0;
-  int valid_cont_thread;
-
-  valid_cont_thread = (cs.cont_thread != null_ptid
-			 && cs.cont_thread != minus_one_ptid);
-
-  if (step || sig || valid_cont_thread)
-    {
-      resume_info[0].thread = current_ptid;
-      if (step)
-	resume_info[0].kind = resume_step;
-      else
-	resume_info[0].kind = resume_continue;
-      resume_info[0].sig = sig;
-      n++;
-    }
-
-  if (!valid_cont_thread)
-    {
-      resume_info[n].thread = minus_one_ptid;
-      resume_info[n].kind = resume_continue;
-      resume_info[n].sig = 0;
-      n++;
-    }
-
-  resume (resume_info, n);
-}
-
-/* Callback for for_each_thread.  Make a new stop reply for each
-   stopped thread.  */
-
-static void
-queue_stop_reply_callback (thread_info *thread)
-{
-  /* For now, assume targets that don't have this callback also don't
-     manage the thread's last_status field.  */
-  if (the_target->thread_stopped == NULL)
-    {
-      struct vstop_notif *new_notif = new struct vstop_notif;
-
-      new_notif->ptid = thread->id;
-      new_notif->status = thread->last_status;
-      /* Pass the last stop reply back to GDB, but don't notify
-	 yet.  */
-      notif_event_enque (&notif_stop, new_notif);
-    }
-  else
-    {
-      if (thread_stopped (thread))
-	{
-	  if (debug_threads)
-	    {
-	      std::string status_string
-		= target_waitstatus_to_string (&thread->last_status);
-
-	      debug_printf ("Reporting thread %s as already stopped with %s\n",
-			    target_pid_to_str (thread->id),
-			    status_string.c_str ());
-	    }
-
-	  gdb_assert (thread->last_status.kind != TARGET_WAITKIND_IGNORE);
-
-	  /* Pass the last stop reply back to GDB, but don't notify
-	     yet.  */
-	  queue_stop_reply (thread->id, &thread->last_status);
-	}
-    }
-}
-
-/* Set this inferior threads's state as "want-stopped".  We won't
-   resume this thread until the client gives us another action for
-   it.  */
-
-static void
-gdb_wants_thread_stopped (thread_info *thread)
-{
-  thread->last_resume_kind = resume_stop;
-
-  if (thread->last_status.kind == TARGET_WAITKIND_IGNORE)
-    {
-      /* Most threads are stopped implicitly (all-stop); tag that with
-	 signal 0.  */
-      thread->last_status.kind = TARGET_WAITKIND_STOPPED;
-      thread->last_status.value.sig = GDB_SIGNAL_0;
-    }
-}
-
-/* Set all threads' states as "want-stopped".  */
-
-static void
-gdb_wants_all_threads_stopped (void)
-{
-  for_each_thread (gdb_wants_thread_stopped);
-}
-
-/* Callback for for_each_thread.  If the thread is stopped with an
-   interesting event, mark it as having a pending event.  */
-
-static void
-set_pending_status_callback (thread_info *thread)
-{
-  if (thread->last_status.kind != TARGET_WAITKIND_STOPPED
-      || (thread->last_status.value.sig != GDB_SIGNAL_0
-	  /* A breakpoint, watchpoint or finished step from a previous
-	     GDB run isn't considered interesting for a new GDB run.
-	     If we left those pending, the new GDB could consider them
-	     random SIGTRAPs.  This leaves out real async traps.  We'd
-	     have to peek into the (target-specific) siginfo to
-	     distinguish those.  */
-	  && thread->last_status.value.sig != GDB_SIGNAL_TRAP))
-    thread->status_pending_p = 1;
-}
-
-/* Status handler for the '?' packet.  */
-
-static void
-handle_status (char *own_buf)
-{
-  client_state &cs = get_client_state ();
-
-  /* GDB is connected, don't forward events to the target anymore.  */
-  for_each_process ([] (process_info *process) {
-    process->gdb_detached = 0;
-  });
-
-  /* In non-stop mode, we must send a stop reply for each stopped
-     thread.  In all-stop mode, just send one for the first stopped
-     thread we find.  */
-
-  if (non_stop)
-    {
-      for_each_thread (queue_stop_reply_callback);
-
-      /* The first is sent immediatly.  OK is sent if there is no
-	 stopped thread, which is the same handling of the vStopped
-	 packet (by design).  */
-      notif_write_event (&notif_stop, cs.own_buf);
-    }
-  else
-    {
-      thread_info *thread = NULL;
-
-      pause_all (0);
-      stabilize_threads ();
-      gdb_wants_all_threads_stopped ();
-
-      /* We can only report one status, but we might be coming out of
-	 non-stop -- if more than one thread is stopped with
-	 interesting events, leave events for the threads we're not
-	 reporting now pending.  They'll be reported the next time the
-	 threads are resumed.  Start by marking all interesting events
-	 as pending.  */
-      for_each_thread (set_pending_status_callback);
-
-      /* Prefer the last thread that reported an event to GDB (even if
-	 that was a GDB_SIGNAL_TRAP).  */
-      if (cs.last_status.kind != TARGET_WAITKIND_IGNORE
-	  && cs.last_status.kind != TARGET_WAITKIND_EXITED
-	  && cs.last_status.kind != TARGET_WAITKIND_SIGNALLED)
-	thread = find_thread_ptid (cs.last_ptid);
-
-      /* If the last event thread is not found for some reason, look
-	 for some other thread that might have an event to report.  */
-      if (thread == NULL)
-	thread = find_thread ([] (thread_info *thr_arg)
-	  {
-	    return thr_arg->status_pending_p;
-	  });
-
-      /* If we're still out of luck, simply pick the first thread in
-	 the thread list.  */
-      if (thread == NULL)
-	thread = get_first_thread ();
-
-      if (thread != NULL)
-	{
-	  struct thread_info *tp = (struct thread_info *) thread;
-
-	  /* We're reporting this event, so it's no longer
-	     pending.  */
-	  tp->status_pending_p = 0;
-
-	  /* GDB assumes the current thread is the thread we're
-	     reporting the status for.  */
-	  cs.general_thread = thread->id;
-	  set_desired_thread ();
-
-	  gdb_assert (tp->last_status.kind != TARGET_WAITKIND_IGNORE);
-	  prepare_resume_reply (own_buf, tp->id, &tp->last_status);
-	}
-      else
-	strcpy (own_buf, "W00");
-    }
-}
-
-static void
-gdbserver_version (void)
-{
-  printf ("GNU gdbserver %s%s\n"
-	  "Copyright (C) 2020 Free Software Foundation, Inc.\n"
-	  "gdbserver is free software, covered by the "
-	  "GNU General Public License.\n"
-	  "This gdbserver was configured as \"%s\"\n",
-	  PKGVERSION, version, host_name);
-}
-
-static void
-gdbserver_usage (FILE *stream)
-{
-  fprintf (stream, "Usage:\tgdbserver [OPTIONS] COMM PROG [ARGS ...]\n"
-	   "\tgdbserver [OPTIONS] --attach COMM PID\n"
-	   "\tgdbserver [OPTIONS] --multi COMM\n"
-	   "\n"
-	   "COMM may either be a tty device (for serial debugging),\n"
-	   "HOST:PORT to listen for a TCP connection, or '-' or 'stdio' to use \n"
-	   "stdin/stdout of gdbserver.\n"
-	   "PROG is the executable program.  ARGS are arguments passed to inferior.\n"
-	   "PID is the process ID to attach to, when --attach is specified.\n"
-	   "\n"
-	   "Operating modes:\n"
-	   "\n"
-	   "  --attach              Attach to running process PID.\n"
-	   "  --multi               Start server without a specific program, and\n"
-	   "                        only quit when explicitly commanded.\n"
-	   "  --once                Exit after the first connection has closed.\n"
-	   "  --help                Print this message and then exit.\n"
-	   "  --version             Display version information and exit.\n"
-	   "\n"
-	   "Other options:\n"
-	   "\n"
-	   "  --wrapper WRAPPER --  Run WRAPPER to start new programs.\n"
-	   "  --disable-randomization\n"
-	   "                        Run PROG with address space randomization disabled.\n"
-	   "  --no-disable-randomization\n"
-	   "                        Don't disable address space randomization when\n"
-	   "                        starting PROG.\n"
-	   "  --startup-with-shell\n"
-	   "                        Start PROG using a shell.  I.e., execs a shell that\n"
-	   "                        then execs PROG.  (default)\n"
-	   "  --no-startup-with-shell\n"
-	   "                        Exec PROG directly instead of using a shell.\n"
-	   "                        Disables argument globbing and variable substitution\n"
-	   "                        on UNIX-like systems.\n"
-	   "\n"
-	   "Debug options:\n"
-	   "\n"
-	   "  --debug               Enable general debugging output.\n"
-	   "  --debug-format=OPT1[,OPT2,...]\n"
-	   "                        Specify extra content in debugging output.\n"
-	   "                          Options:\n"
-	   "                            all\n"
-	   "                            none\n"
-	   "                            timestamp\n"
-	   "  --remote-debug        Enable remote protocol debugging output.\n"
-	   "  --disable-packet=OPT1[,OPT2,...]\n"
-	   "                        Disable support for RSP packets or features.\n"
-	   "                          Options:\n"
-	   "                            vCont, Tthread, qC, qfThreadInfo and \n"
-	   "                            threads (disable all threading packets).\n"
-	   "\n"
-	   "For more information, consult the GDB manual (available as on-line \n"
-	   "info or a printed manual).\n");
-  if (REPORT_BUGS_TO[0] && stream == stdout)
-    fprintf (stream, "Report bugs to \"%s\".\n", REPORT_BUGS_TO);
-}
-
-static void
-gdbserver_show_disableable (FILE *stream)
-{
-  fprintf (stream, "Disableable packets:\n"
-	   "  vCont       \tAll vCont packets\n"
-	   "  qC          \tQuerying the current thread\n"
-	   "  qfThreadInfo\tThread listing\n"
-	   "  Tthread     \tPassing the thread specifier in the "
-	   "T stop reply packet\n"
-	   "  threads     \tAll of the above\n");
-}
-
-static void
-kill_inferior_callback (process_info *process)
-{
-  kill_inferior (process);
-  discard_queued_stop_replies (ptid_t (process->pid));
-}
-
-/* Call this when exiting gdbserver with possible inferiors that need
-   to be killed or detached from.  */
-
-static void
-detach_or_kill_for_exit (void)
-{
-  /* First print a list of the inferiors we will be killing/detaching.
-     This is to assist the user, for example, in case the inferior unexpectedly
-     dies after we exit: did we screw up or did the inferior exit on its own?
-     Having this info will save some head-scratching.  */
-
-  if (have_started_inferiors_p ())
-    {
-      fprintf (stderr, "Killing process(es):");
-
-      for_each_process ([] (process_info *process) {
-	if (!process->attached)
-	  fprintf (stderr, " %d", process->pid);
-      });
-
-      fprintf (stderr, "\n");
-    }
-  if (have_attached_inferiors_p ())
-    {
-      fprintf (stderr, "Detaching process(es):");
-
-      for_each_process ([] (process_info *process) {
-	if (process->attached)
-	  fprintf (stderr, " %d", process->pid);
-      });
-
-      fprintf (stderr, "\n");
-    }
-
-  /* Now we can kill or detach the inferiors.  */
-  for_each_process ([] (process_info *process) {
-    int pid = process->pid;
-
-    if (process->attached)
-      detach_inferior (process);
-    else
-      kill_inferior (process);
-
-    discard_queued_stop_replies (ptid_t (pid));
-  });
-}
-
-/* Value that will be passed to exit(3) when gdbserver exits.  */
-static int exit_code;
-
-/* Wrapper for detach_or_kill_for_exit that catches and prints
-   errors.  */
-
-static void
-detach_or_kill_for_exit_cleanup ()
-{
-  try
-    {
-      detach_or_kill_for_exit ();
-    }
-  catch (const gdb_exception &exception)
-    {
-      fflush (stdout);
-      fprintf (stderr, "Detach or kill failed: %s\n",
-	       exception.what ());
-      exit_code = 1;
-    }
-}
-
-/* Main function.  This is called by the real "main" function,
-   wrapped in a TRY_CATCH that handles any uncaught exceptions.  */
-
-static void ATTRIBUTE_NORETURN
-captured_main (int argc, char *argv[])
-{
-  int bad_attach;
-  int pid;
-  char *arg_end;
-  const char *port = NULL;
-  char **next_arg = &argv[1];
-  volatile int multi_mode = 0;
-  volatile int attach = 0;
-  int was_running;
-  bool selftest = false;
-#if GDB_SELF_TEST
-  const char *selftest_filter = NULL;
-#endif
-
-  current_directory = getcwd (NULL, 0);
-  client_state &cs = get_client_state ();
-
-  if (current_directory == NULL)
-    {
-      error (_("Could not find current working directory: %s"),
-	     safe_strerror (errno));
-    }
-
-  while (*next_arg != NULL && **next_arg == '-')
-    {
-      if (strcmp (*next_arg, "--version") == 0)
-	{
-	  gdbserver_version ();
-	  exit (0);
-	}
-      else if (strcmp (*next_arg, "--help") == 0)
-	{
-	  gdbserver_usage (stdout);
-	  exit (0);
-	}
-      else if (strcmp (*next_arg, "--attach") == 0)
-	attach = 1;
-      else if (strcmp (*next_arg, "--multi") == 0)
-	multi_mode = 1;
-      else if (strcmp (*next_arg, "--wrapper") == 0)
-	{
-	  char **tmp;
-
-	  next_arg++;
-
-	  tmp = next_arg;
-	  while (*next_arg != NULL && strcmp (*next_arg, "--") != 0)
-	    {
-	      wrapper_argv += *next_arg;
-	      wrapper_argv += ' ';
-	      next_arg++;
-	    }
-
-	  if (!wrapper_argv.empty ())
-	    {
-	      /* Erase the last whitespace.  */
-	      wrapper_argv.erase (wrapper_argv.end () - 1);
-	    }
-
-	  if (next_arg == tmp || *next_arg == NULL)
-	    {
-	      gdbserver_usage (stderr);
-	      exit (1);
-	    }
-
-	  /* Consume the "--".  */
-	  *next_arg = NULL;
-	}
-      else if (strcmp (*next_arg, "--debug") == 0)
-	debug_threads = 1;
-      else if (startswith (*next_arg, "--debug-format="))
-	{
-	  std::string error_msg
-	    = parse_debug_format_options ((*next_arg)
-					  + sizeof ("--debug-format=") - 1, 0);
-
-	  if (!error_msg.empty ())
-	    {
-	      fprintf (stderr, "%s", error_msg.c_str ());
-	      exit (1);
-	    }
-	}
-      else if (strcmp (*next_arg, "--remote-debug") == 0)
-	remote_debug = 1;
-      else if (startswith (*next_arg, "--debug-file="))
-	debug_set_output ((*next_arg) + sizeof ("--debug-file=") -1);
-      else if (strcmp (*next_arg, "--disable-packet") == 0)
-	{
-	  gdbserver_show_disableable (stdout);
-	  exit (0);
-	}
-      else if (startswith (*next_arg, "--disable-packet="))
-	{
-	  char *packets = *next_arg += sizeof ("--disable-packet=") - 1;
-	  char *saveptr;
-	  for (char *tok = strtok_r (packets, ",", &saveptr);
-	       tok != NULL;
-	       tok = strtok_r (NULL, ",", &saveptr))
-	    {
-	      if (strcmp ("vCont", tok) == 0)
-		disable_packet_vCont = true;
-	      else if (strcmp ("Tthread", tok) == 0)
-		disable_packet_Tthread = true;
-	      else if (strcmp ("qC", tok) == 0)
-		disable_packet_qC = true;
-	      else if (strcmp ("qfThreadInfo", tok) == 0)
-		disable_packet_qfThreadInfo = true;
-	      else if (strcmp ("threads", tok) == 0)
-		{
-		  disable_packet_vCont = true;
-		  disable_packet_Tthread = true;
-		  disable_packet_qC = true;
-		  disable_packet_qfThreadInfo = true;
-		}
-	      else
-		{
-		  fprintf (stderr, "Don't know how to disable \"%s\".\n\n",
-			   tok);
-		  gdbserver_show_disableable (stderr);
-		  exit (1);
-		}
-	    }
-	}
-      else if (strcmp (*next_arg, "-") == 0)
-	{
-	  /* "-" specifies a stdio connection and is a form of port
-	     specification.  */
-	  port = STDIO_CONNECTION_NAME;
-	  next_arg++;
-	  break;
-	}
-      else if (strcmp (*next_arg, "--disable-randomization") == 0)
-	cs.disable_randomization = 1;
-      else if (strcmp (*next_arg, "--no-disable-randomization") == 0)
-	cs.disable_randomization = 0;
-      else if (strcmp (*next_arg, "--startup-with-shell") == 0)
-	startup_with_shell = true;
-      else if (strcmp (*next_arg, "--no-startup-with-shell") == 0)
-	startup_with_shell = false;
-      else if (strcmp (*next_arg, "--once") == 0)
-	run_once = true;
-      else if (strcmp (*next_arg, "--selftest") == 0)
-	selftest = true;
-      else if (startswith (*next_arg, "--selftest="))
-	{
-	  selftest = true;
-#if GDB_SELF_TEST
-	  selftest_filter = *next_arg + strlen ("--selftest=");
-#endif
-	}
-      else
-	{
-	  fprintf (stderr, "Unknown argument: %s\n", *next_arg);
-	  exit (1);
-	}
-
-      next_arg++;
-      continue;
-    }
-
-  if (port == NULL)
-    {
-      port = *next_arg;
-      next_arg++;
-    }
-  if ((port == NULL || (!attach && !multi_mode && *next_arg == NULL))
-       && !selftest)
-    {
-      gdbserver_usage (stderr);
-      exit (1);
-    }
-
-  /* Remember stdio descriptors.  LISTEN_DESC must not be listed, it will be
-     opened by remote_prepare.  */
-  notice_open_fds ();
-
-  save_original_signals_state (false);
-
-  /* We need to know whether the remote connection is stdio before
-     starting the inferior.  Inferiors created in this scenario have
-     stdin,stdout redirected.  So do this here before we call
-     start_inferior.  */
-  if (port != NULL)
-    remote_prepare (port);
-
-  bad_attach = 0;
-  pid = 0;
-
-  /* --attach used to come after PORT, so allow it there for
-       compatibility.  */
-  if (*next_arg != NULL && strcmp (*next_arg, "--attach") == 0)
-    {
-      attach = 1;
-      next_arg++;
-    }
-
-  if (attach
-      && (*next_arg == NULL
-	  || (*next_arg)[0] == '\0'
-	  || (pid = strtoul (*next_arg, &arg_end, 0)) == 0
-	  || *arg_end != '\0'
-	  || next_arg[1] != NULL))
-    bad_attach = 1;
-
-  if (bad_attach)
-    {
-      gdbserver_usage (stderr);
-      exit (1);
-    }
-
-  /* Gather information about the environment.  */
-  our_environ = gdb_environ::from_host_environ ();
-
-  initialize_async_io ();
-  initialize_low ();
-  have_job_control ();
-  initialize_event_loop ();
-  if (target_supports_tracepoints ())
-    initialize_tracepoint ();
-
-  mem_buf = (unsigned char *) xmalloc (PBUFSIZ);
-
-  if (selftest)
-    {
-#if GDB_SELF_TEST
-      selftests::run_tests (selftest_filter);
-#else
-      printf (_("Selftests have been disabled for this build.\n"));
-#endif
-      throw_quit ("Quit");
-    }
-
-  if (pid == 0 && *next_arg != NULL)
-    {
-      int i, n;
-
-      n = argc - (next_arg - argv);
-      program_path.set (make_unique_xstrdup (next_arg[0]));
-      for (i = 1; i < n; i++)
-	program_args.push_back (xstrdup (next_arg[i]));
-      program_args.push_back (NULL);
-
-      /* Wait till we are at first instruction in program.  */
-      create_inferior (program_path.get (), program_args);
-
-      /* We are now (hopefully) stopped at the first instruction of
-	 the target process.  This assumes that the target process was
-	 successfully created.  */
-    }
-  else if (pid != 0)
-    {
-      if (attach_inferior (pid) == -1)
-	error ("Attaching not supported on this target");
-
-      /* Otherwise succeeded.  */
-    }
-  else
-    {
-      cs.last_status.kind = TARGET_WAITKIND_EXITED;
-      cs.last_status.value.integer = 0;
-      cs.last_ptid = minus_one_ptid;
-    }
-
-  SCOPE_EXIT { detach_or_kill_for_exit_cleanup (); };
-
-  /* Don't report shared library events on the initial connection,
-     even if some libraries are preloaded.  Avoids the "stopped by
-     shared library event" notice on gdb side.  */
-  dlls_changed = 0;
-
-  if (cs.last_status.kind == TARGET_WAITKIND_EXITED
-      || cs.last_status.kind == TARGET_WAITKIND_SIGNALLED)
-    was_running = 0;
-  else
-    was_running = 1;
-
-  if (!was_running && !multi_mode)
-    error ("No program to debug");
-
-  while (1)
-    {
-      cs.noack_mode = 0;
-      cs.multi_process = 0;
-      cs.report_fork_events = 0;
-      cs.report_vfork_events = 0;
-      cs.report_exec_events = 0;
-      /* Be sure we're out of tfind mode.  */
-      cs.current_traceframe = -1;
-      cs.cont_thread = null_ptid;
-      cs.swbreak_feature = 0;
-      cs.hwbreak_feature = 0;
-      cs.vCont_supported = 0;
-
-      remote_open (port);
-
-      try
-	{
-	  /* Wait for events.  This will return when all event sources
-	     are removed from the event loop.  */
-	  start_event_loop ();
-
-	  /* If an exit was requested (using the "monitor exit"
-	     command), terminate now.  */
-	  if (exit_requested)
-	    throw_quit ("Quit");
-
-	  /* The only other way to get here is for getpkt to fail:
-
-	      - If --once was specified, we're done.
-
-	      - If not in extended-remote mode, and we're no longer
-	        debugging anything, simply exit: GDB has disconnected
-	        after processing the last process exit.
-
-	      - Otherwise, close the connection and reopen it at the
-	        top of the loop.  */
-	  if (run_once || (!extended_protocol && !target_running ()))
-	    throw_quit ("Quit");
-
-	  fprintf (stderr,
-		   "Remote side has terminated connection.  "
-		   "GDBserver will reopen the connection.\n");
-
-	  /* Get rid of any pending statuses.  An eventual reconnection
-	     (by the same GDB instance or another) will refresh all its
-	     state from scratch.  */
-	  discard_queued_stop_replies (minus_one_ptid);
-	  for_each_thread ([] (thread_info *thread)
-	    {
-	      thread->status_pending_p = 0;
-	    });
-
-	  if (tracing)
-	    {
-	      if (disconnected_tracing)
-		{
-		  /* Try to enable non-stop/async mode, so we we can
-		     both wait for an async socket accept, and handle
-		     async target events simultaneously.  There's also
-		     no point either in having the target always stop
-		     all threads, when we're going to pass signals
-		     down without informing GDB.  */
-		  if (!non_stop)
-		    {
-		      if (start_non_stop (1))
-			non_stop = 1;
-
-		      /* Detaching implicitly resumes all threads;
-			 simply disconnecting does not.  */
-		    }
-		}
-	      else
-		{
-		  fprintf (stderr,
-			   "Disconnected tracing disabled; "
-			   "stopping trace run.\n");
-		  stop_tracing ();
-		}
-	    }
-	}
-      catch (const gdb_exception_error &exception)
-	{
-	  fflush (stdout);
-	  fprintf (stderr, "gdbserver: %s\n", exception.what ());
-
-	  if (response_needed)
-	    {
-	      write_enn (cs.own_buf);
-	      putpkt (cs.own_buf);
-	    }
-
-	  if (run_once)
-	    throw_quit ("Quit");
-	}
-    }
-}
-
-/* Main function.  */
-
-int
-main (int argc, char *argv[])
-{
-
-  try
-    {
-      captured_main (argc, argv);
-    }
-  catch (const gdb_exception &exception)
-    {
-      if (exception.reason == RETURN_ERROR)
-	{
-	  fflush (stdout);
-	  fprintf (stderr, "%s\n", exception.what ());
-	  fprintf (stderr, "Exiting\n");
-	  exit_code = 1;
-	}
-
-      exit (exit_code);
-    }
-
-  gdb_assert_not_reached ("captured_main should never return");
-}
-
-/* Process options coming from Z packets for a breakpoint.  PACKET is
-   the packet buffer.  *PACKET is updated to point to the first char
-   after the last processed option.  */
-
-static void
-process_point_options (struct gdb_breakpoint *bp, const char **packet)
-{
-  const char *dataptr = *packet;
-  int persist;
-
-  /* Check if data has the correct format.  */
-  if (*dataptr != ';')
-    return;
-
-  dataptr++;
-
-  while (*dataptr)
-    {
-      if (*dataptr == ';')
-	++dataptr;
-
-      if (*dataptr == 'X')
-	{
-	  /* Conditional expression.  */
-	  if (debug_threads)
-	    debug_printf ("Found breakpoint condition.\n");
-	  if (!add_breakpoint_condition (bp, &dataptr))
-	    dataptr = strchrnul (dataptr, ';');
-	}
-      else if (startswith (dataptr, "cmds:"))
-	{
-	  dataptr += strlen ("cmds:");
-	  if (debug_threads)
-	    debug_printf ("Found breakpoint commands %s.\n", dataptr);
-	  persist = (*dataptr == '1');
-	  dataptr += 2;
-	  if (add_breakpoint_commands (bp, &dataptr, persist))
-	    dataptr = strchrnul (dataptr, ';');
-	}
-      else
-	{
-	  fprintf (stderr, "Unknown token %c, ignoring.\n",
-		   *dataptr);
-	  /* Skip tokens until we find one that we recognize.  */
-	  dataptr = strchrnul (dataptr, ';');
-	}
-    }
-  *packet = dataptr;
-}
-
-/* Event loop callback that handles a serial event.  The first byte in
-   the serial buffer gets us here.  We expect characters to arrive at
-   a brisk pace, so we read the rest of the packet with a blocking
-   getpkt call.  */
-
-static int
-process_serial_event (void)
-{
-  client_state &cs = get_client_state ();
-  int signal;
-  unsigned int len;
-  CORE_ADDR mem_addr;
-  unsigned char sig;
-  int packet_len;
-  int new_packet_len = -1;
-
-  disable_async_io ();
-
-  response_needed = false;
-  packet_len = getpkt (cs.own_buf);
-  if (packet_len <= 0)
-    {
-      remote_close ();
-      /* Force an event loop break.  */
-      return -1;
-    }
-  response_needed = true;
-
-  char ch = cs.own_buf[0];
-  switch (ch)
-    {
-    case 'q':
-      handle_query (cs.own_buf, packet_len, &new_packet_len);
-      break;
-    case 'Q':
-      handle_general_set (cs.own_buf);
-      break;
-    case 'D':
-      handle_detach (cs.own_buf);
-      break;
-    case '!':
-      extended_protocol = true;
-      write_ok (cs.own_buf);
-      break;
-    case '?':
-      handle_status (cs.own_buf);
-      break;
-    case 'H':
-      if (cs.own_buf[1] == 'c' || cs.own_buf[1] == 'g' || cs.own_buf[1] == 's')
-	{
-	  require_running_or_break (cs.own_buf);
-
-	  ptid_t thread_id = read_ptid (&cs.own_buf[2], NULL);
-
-	  if (thread_id == null_ptid || thread_id == minus_one_ptid)
-	    thread_id = null_ptid;
-	  else if (thread_id.is_pid ())
-	    {
-	      /* The ptid represents a pid.  */
-	      thread_info *thread = find_any_thread_of_pid (thread_id.pid ());
-
-	      if (thread == NULL)
-		{
-		  write_enn (cs.own_buf);
-		  break;
-		}
-
-	      thread_id = thread->id;
-	    }
-	  else
-	    {
-	      /* The ptid represents a lwp/tid.  */
-	      if (find_thread_ptid (thread_id) == NULL)
-		{
-		  write_enn (cs.own_buf);
-		  break;
-		}
-	    }
-
-	  if (cs.own_buf[1] == 'g')
-	    {
-	      if (thread_id == null_ptid)
-		{
-		  /* GDB is telling us to choose any thread.  Check if
-		     the currently selected thread is still valid. If
-		     it is not, select the first available.  */
-		  thread_info *thread = find_thread_ptid (cs.general_thread);
-		  if (thread == NULL)
-		    thread = get_first_thread ();
-		  thread_id = thread->id;
-		}
-
-	      cs.general_thread = thread_id;
-	      set_desired_thread ();
-	      gdb_assert (current_thread != NULL);
-	    }
-	  else if (cs.own_buf[1] == 'c')
-	    cs.cont_thread = thread_id;
-
-	  write_ok (cs.own_buf);
-	}
-      else
-	{
-	  /* Silently ignore it so that gdb can extend the protocol
-	     without compatibility headaches.  */
-	  cs.own_buf[0] = '\0';
-	}
-      break;
-    case 'g':
-      require_running_or_break (cs.own_buf);
-      if (cs.current_traceframe >= 0)
-	{
-	  struct regcache *regcache
-	    = new_register_cache (current_target_desc ());
-
-	  if (fetch_traceframe_registers (cs.current_traceframe,
-					  regcache, -1) == 0)
-	    registers_to_string (regcache, cs.own_buf);
-	  else
-	    write_enn (cs.own_buf);
-	  free_register_cache (regcache);
-	}
-      else
-	{
-	  struct regcache *regcache;
-
-	  if (!set_desired_thread ())
-	    write_enn (cs.own_buf);
-	  else
-	    {
-	      regcache = get_thread_regcache (current_thread, 1);
-	      registers_to_string (regcache, cs.own_buf);
-	    }
-	}
-      break;
-    case 'G':
-      require_running_or_break (cs.own_buf);
-      if (cs.current_traceframe >= 0)
-	write_enn (cs.own_buf);
-      else
-	{
-	  struct regcache *regcache;
-
-	  if (!set_desired_thread ())
-	    write_enn (cs.own_buf);
-	  else
-	    {
-	      regcache = get_thread_regcache (current_thread, 1);
-	      registers_from_string (regcache, &cs.own_buf[1]);
-	      write_ok (cs.own_buf);
-	    }
-	}
-      break;
-    case 'm':
-      {
-	require_running_or_break (cs.own_buf);
-	decode_m_packet (&cs.own_buf[1], &mem_addr, &len);
-	int res = gdb_read_memory (mem_addr, mem_buf, len);
-	if (res < 0)
-	  write_enn (cs.own_buf);
-	else
-	  bin2hex (mem_buf, cs.own_buf, res);
-      }
-      break;
-    case 'M':
-      require_running_or_break (cs.own_buf);
-      decode_M_packet (&cs.own_buf[1], &mem_addr, &len, &mem_buf);
-      if (gdb_write_memory (mem_addr, mem_buf, len) == 0)
-	write_ok (cs.own_buf);
-      else
-	write_enn (cs.own_buf);
-      break;
-    case 'X':
-      require_running_or_break (cs.own_buf);
-      if (decode_X_packet (&cs.own_buf[1], packet_len - 1,
-			   &mem_addr, &len, &mem_buf) < 0
-	  || gdb_write_memory (mem_addr, mem_buf, len) != 0)
-	write_enn (cs.own_buf);
-      else
-	write_ok (cs.own_buf);
-      break;
-    case 'C':
-      require_running_or_break (cs.own_buf);
-      hex2bin (cs.own_buf + 1, &sig, 1);
-      if (gdb_signal_to_host_p ((enum gdb_signal) sig))
-	signal = gdb_signal_to_host ((enum gdb_signal) sig);
-      else
-	signal = 0;
-      myresume (cs.own_buf, 0, signal);
-      break;
-    case 'S':
-      require_running_or_break (cs.own_buf);
-      hex2bin (cs.own_buf + 1, &sig, 1);
-      if (gdb_signal_to_host_p ((enum gdb_signal) sig))
-	signal = gdb_signal_to_host ((enum gdb_signal) sig);
-      else
-	signal = 0;
-      myresume (cs.own_buf, 1, signal);
-      break;
-    case 'c':
-      require_running_or_break (cs.own_buf);
-      signal = 0;
-      myresume (cs.own_buf, 0, signal);
-      break;
-    case 's':
-      require_running_or_break (cs.own_buf);
-      signal = 0;
-      myresume (cs.own_buf, 1, signal);
-      break;
-    case 'Z':  /* insert_ ... */
-      /* Fallthrough.  */
-    case 'z':  /* remove_ ... */
-      {
-	char *dataptr;
-	ULONGEST addr;
-	int kind;
-	char type = cs.own_buf[1];
-	int res;
-	const int insert = ch == 'Z';
-	const char *p = &cs.own_buf[3];
-
-	p = unpack_varlen_hex (p, &addr);
-	kind = strtol (p + 1, &dataptr, 16);
-
-	if (insert)
-	  {
-	    struct gdb_breakpoint *bp;
-
-	    bp = set_gdb_breakpoint (type, addr, kind, &res);
-	    if (bp != NULL)
-	      {
-		res = 0;
-
-		/* GDB may have sent us a list of *point parameters to
-		   be evaluated on the target's side.  Read such list
-		   here.  If we already have a list of parameters, GDB
-		   is telling us to drop that list and use this one
-		   instead.  */
-		clear_breakpoint_conditions_and_commands (bp);
-		const char *options = dataptr;
-		process_point_options (bp, &options);
-	      }
-	  }
-	else
-	  res = delete_gdb_breakpoint (type, addr, kind);
-
-	if (res == 0)
-	  write_ok (cs.own_buf);
-	else if (res == 1)
-	  /* Unsupported.  */
-	  cs.own_buf[0] = '\0';
-	else
-	  write_enn (cs.own_buf);
-	break;
-      }
-    case 'k':
-      response_needed = false;
-      if (!target_running ())
-	/* The packet we received doesn't make sense - but we can't
-	   reply to it, either.  */
-	return 0;
-
-      fprintf (stderr, "Killing all inferiors\n");
-
-      for_each_process (kill_inferior_callback);
-
-      /* When using the extended protocol, we wait with no program
-	 running.  The traditional protocol will exit instead.  */
-      if (extended_protocol)
-	{
-	  cs.last_status.kind = TARGET_WAITKIND_EXITED;
-	  cs.last_status.value.sig = GDB_SIGNAL_KILL;
-	  return 0;
-	}
-      else
-	exit (0);
-
-    case 'T':
-      {
-	require_running_or_break (cs.own_buf);
-
-	ptid_t thread_id = read_ptid (&cs.own_buf[1], NULL);
-	if (find_thread_ptid (thread_id) == NULL)
-	  {
-	    write_enn (cs.own_buf);
-	    break;
-	  }
-
-	if (mythread_alive (thread_id))
-	  write_ok (cs.own_buf);
-	else
-	  write_enn (cs.own_buf);
-      }
-      break;
-    case 'R':
-      response_needed = false;
-
-      /* Restarting the inferior is only supported in the extended
-	 protocol.  */
-      if (extended_protocol)
-	{
-	  if (target_running ())
-	    for_each_process (kill_inferior_callback);
-
-	  fprintf (stderr, "GDBserver restarting\n");
-
-	  /* Wait till we are at 1st instruction in prog.  */
-	  if (program_path.get () != NULL)
-	    {
-	      create_inferior (program_path.get (), program_args);
-
-	      if (cs.last_status.kind == TARGET_WAITKIND_STOPPED)
-		{
-		  /* Stopped at the first instruction of the target
-		     process.  */
-		  cs.general_thread = cs.last_ptid;
-		}
-	      else
-		{
-		  /* Something went wrong.  */
-		  cs.general_thread = null_ptid;
-		}
-	    }
-	  else
-	    {
-	      cs.last_status.kind = TARGET_WAITKIND_EXITED;
-	      cs.last_status.value.sig = GDB_SIGNAL_KILL;
-	    }
-	  return 0;
-	}
-      else
-	{
-	  /* It is a request we don't understand.  Respond with an
-	     empty packet so that gdb knows that we don't support this
-	     request.  */
-	  cs.own_buf[0] = '\0';
-	  break;
-	}
-    case 'v':
-      /* Extended (long) request.  */
-      handle_v_requests (cs.own_buf, packet_len, &new_packet_len);
-      break;
-
-    default:
-      /* It is a request we don't understand.  Respond with an empty
-	 packet so that gdb knows that we don't support this
-	 request.  */
-      cs.own_buf[0] = '\0';
-      break;
-    }
-
-  if (new_packet_len != -1)
-    putpkt_binary (cs.own_buf, new_packet_len);
-  else
-    putpkt (cs.own_buf);
-
-  response_needed = false;
-
-  if (exit_requested)
-    return -1;
-
-  return 0;
-}
-
-/* Event-loop callback for serial events.  */
-
-int
-handle_serial_event (int err, gdb_client_data client_data)
-{
-  if (debug_threads)
-    debug_printf ("handling possible serial event\n");
-
-  /* Really handle it.  */
-  if (process_serial_event () < 0)
-    return -1;
-
-  /* Be sure to not change the selected thread behind GDB's back.
-     Important in the non-stop mode asynchronous protocol.  */
-  set_desired_thread ();
-
-  return 0;
-}
-
-/* Push a stop notification on the notification queue.  */
-
-static void
-push_stop_notification (ptid_t ptid, struct target_waitstatus *status)
-{
-  struct vstop_notif *vstop_notif = new struct vstop_notif;
-
-  vstop_notif->status = *status;
-  vstop_notif->ptid = ptid;
-  /* Push Stop notification.  */
-  notif_push (&notif_stop, vstop_notif);
-}
-
-/* Event-loop callback for target events.  */
-
-int
-handle_target_event (int err, gdb_client_data client_data)
-{
-  client_state &cs = get_client_state ();
-  if (debug_threads)
-    debug_printf ("handling possible target event\n");
-
-  cs.last_ptid = mywait (minus_one_ptid, &cs.last_status,
-		      TARGET_WNOHANG, 1);
-
-  if (cs.last_status.kind == TARGET_WAITKIND_NO_RESUMED)
-    {
-      if (gdb_connected () && report_no_resumed)
-	push_stop_notification (null_ptid, &cs.last_status);
-    }
-  else if (cs.last_status.kind != TARGET_WAITKIND_IGNORE)
-    {
-      int pid = cs.last_ptid.pid ();
-      struct process_info *process = find_process_pid (pid);
-      int forward_event = !gdb_connected () || process->gdb_detached;
-
-      if (cs.last_status.kind == TARGET_WAITKIND_EXITED
-	  || cs.last_status.kind == TARGET_WAITKIND_SIGNALLED)
-	{
-	  mark_breakpoints_out (process);
-	  target_mourn_inferior (cs.last_ptid);
-	}
-      else if (cs.last_status.kind == TARGET_WAITKIND_THREAD_EXITED)
-	;
-      else
-	{
-	  /* We're reporting this thread as stopped.  Update its
-	     "want-stopped" state to what the client wants, until it
-	     gets a new resume action.  */
-	  current_thread->last_resume_kind = resume_stop;
-	  current_thread->last_status = cs.last_status;
-	}
-
-      if (forward_event)
-	{
-	  if (!target_running ())
-	    {
-	      /* The last process exited.  We're done.  */
-	      exit (0);
-	    }
-
-	  if (cs.last_status.kind == TARGET_WAITKIND_EXITED
-	      || cs.last_status.kind == TARGET_WAITKIND_SIGNALLED
-	      || cs.last_status.kind == TARGET_WAITKIND_THREAD_EXITED)
-	    ;
-	  else
-	    {
-	      /* A thread stopped with a signal, but gdb isn't
-		 connected to handle it.  Pass it down to the
-		 inferior, as if it wasn't being traced.  */
-	      enum gdb_signal signal;
-
-	      if (debug_threads)
-		debug_printf ("GDB not connected; forwarding event %d for"
-			      " [%s]\n",
-			      (int) cs.last_status.kind,
-			      target_pid_to_str (cs.last_ptid));
-
-	      if (cs.last_status.kind == TARGET_WAITKIND_STOPPED)
-		signal = cs.last_status.value.sig;
-	      else
-		signal = GDB_SIGNAL_0;
-	      target_continue (cs.last_ptid, signal);
-	    }
-	}
-      else
-	push_stop_notification (cs.last_ptid, &cs.last_status);
-    }
-
-  /* Be sure to not change the selected thread behind GDB's back.
-     Important in the non-stop mode asynchronous protocol.  */
-  set_desired_thread ();
-
-  return 0;
-}
-
-#if GDB_SELF_TEST
-namespace selftests
-{
-
-void
-reset ()
-{}
-
-} // namespace selftests
-#endif /* GDB_SELF_TEST */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/server.h ./gdb/gdbserver/server.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/server.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/server.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,202 +0,0 @@
-/* Common definitions for remote server for GDB.
-   Copyright (C) 1993-2020 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 GDBSERVER_SERVER_H
-#define GDBSERVER_SERVER_H
-
-#include "gdbsupport/common-defs.h"
-
-gdb_static_assert (sizeof (CORE_ADDR) >= sizeof (void *));
-
-#ifdef __MINGW32CE__
-#include "wincecompat.h"
-#endif
-
-#include "gdbsupport/version.h"
-
-#if !HAVE_DECL_PERROR
-#ifndef perror
-extern void perror (const char *);
-#endif
-#endif
-
-#if !HAVE_DECL_VASPRINTF
-extern int vasprintf(char **strp, const char *fmt, va_list ap);
-#endif
-#if !HAVE_DECL_VSNPRINTF
-int vsnprintf(char *str, size_t size, const char *format, va_list ap);
-#endif
-
-#ifdef IN_PROCESS_AGENT
-#  define PROG "ipa"
-#else
-#  define PROG "gdbserver"
-#endif
-
-#include "gdbsupport/buffer.h"
-#include "gdbsupport/xml-utils.h"
-#include "regcache.h"
-#include "gdbsupport/gdb_signals.h"
-#include "target.h"
-#include "mem-break.h"
-#include "gdbsupport/environ.h"
-
-/* Target-specific functions */
-
-void initialize_low ();
-
-/* Public variables in server.c */
-
-extern bool server_waiting;
-
-extern bool disable_packet_vCont;
-extern bool disable_packet_Tthread;
-extern bool disable_packet_qC;
-extern bool disable_packet_qfThreadInfo;
-
-extern bool run_once;
-extern bool non_stop;
-
-#if USE_WIN32API
-#include <winsock2.h>
-typedef SOCKET gdb_fildes_t;
-#else
-typedef int gdb_fildes_t;
-#endif
-
-#include "event-loop.h"
-
-/* Functions from server.c.  */
-extern void handle_v_requests (char *own_buf, int packet_len,
-			       int *new_packet_len);
-extern int handle_serial_event (int err, gdb_client_data client_data);
-extern int handle_target_event (int err, gdb_client_data client_data);
-
-/* Get rid of the currently pending stop replies that match PTID.  */
-extern void discard_queued_stop_replies (ptid_t ptid);
-
-/* Returns true if there's a pending stop reply that matches PTID in
-   the vStopped notifications queue.  */
-extern int in_queued_stop_replies (ptid_t ptid);
-
-#include "remote-utils.h"
-
-#include "utils.h"
-#include "debug.h"
-#include "gdbsupport/gdb_vecs.h"
-
-/* Maximum number of bytes to read/write at once.  The value here
-   is chosen to fill up a packet (the headers account for the 32).  */
-#define MAXBUFBYTES(N) (((N)-32)/2)
-
-/* Buffer sizes for transferring memory, registers, etc.   Set to a constant
-   value to accomodate multiple register formats.  This value must be at least
-   as large as the largest register set supported by gdbserver.  */
-#define PBUFSIZ 18432
-
-/* Definition for an unknown syscall, used basically in error-cases.  */
-#define UNKNOWN_SYSCALL (-1)
-
-/* Definition for any syscall, used for unfiltered syscall reporting.  */
-#define ANY_SYSCALL (-2)
-
-/* After fork_inferior has been called, we need to adjust a few
-   signals and call startup_inferior to start the inferior and consume
-   its first events.  This is done here.  PID is the pid of the new
-   inferior and PROGRAM is its name.  */
-extern void post_fork_inferior (int pid, const char *program);
-
-/* Get the gdb_environ being used in the current session.  */
-extern gdb_environ *get_environ ();
-
-extern unsigned long signal_pid;
-
-
-/* Description of the client remote protocol state for the currently
-   connected client.  */
-
-struct client_state
-{
-  client_state ():
-    own_buf ((char *) xmalloc (PBUFSIZ + 1)) 
-  {}
-
-  /* The thread set with an `Hc' packet.  `Hc' is deprecated in favor of
-     `vCont'.  Note the multi-process extensions made `vCont' a
-     requirement, so `Hc pPID.TID' is pretty much undefined.  So
-     CONT_THREAD can be null_ptid for no `Hc' thread, minus_one_ptid for
-     resuming all threads of the process (again, `Hc' isn't used for
-     multi-process), or a specific thread ptid_t.  */
-  ptid_t cont_thread;
-
-  /* The thread set with an `Hg' packet.  */
-  ptid_t general_thread;
-
-  int multi_process = 0;
-  int report_fork_events = 0;
-  int report_vfork_events = 0;
-  int report_exec_events = 0;
-  int report_thread_events = 0;
-
-  /* True if the "swbreak+" feature is active.  In that case, GDB wants
-     us to report whether a trap is explained by a software breakpoint
-     and for the server to handle PC adjustment if necessary on this
-     target.  Only enabled if the target supports it.  */
-  int swbreak_feature = 0;
-  /* True if the "hwbreak+" feature is active.  In that case, GDB wants
-     us to report whether a trap is explained by a hardware breakpoint.
-     Only enabled if the target supports it.  */
-  int hwbreak_feature = 0;
-
-  /* True if the "vContSupported" feature is active.  In that case, GDB
-     wants us to report whether single step is supported in the reply to
-     "vCont?" packet.  */
-  int vCont_supported = 0;
-
-  /* Whether we should attempt to disable the operating system's address
-     space randomization feature before starting an inferior.  */
-  int disable_randomization = 1;
-
-  int pass_signals[GDB_SIGNAL_LAST];
-  int program_signals[GDB_SIGNAL_LAST];
-  int program_signals_p = 0;
-
-  /* Last status reported to GDB.  */
-  struct target_waitstatus last_status;
-  ptid_t last_ptid;
-
-  char *own_buf;
-
-  /* If true, then GDB has requested noack mode.  */
-  int noack_mode = 0;
-  /* If true, then we tell GDB to use noack mode by default.  */
-  int transport_is_reliable = 0;
-
-  /* The traceframe to be used as the source of data to send back to
-     GDB.  A value of -1 means to get data from the live program.  */
-
-  int current_traceframe = -1;
-
-};
-
-client_state &get_client_state ();
-
-#include "gdbthread.h"
-#include "inferiors.h"
-
-#endif /* GDBSERVER_SERVER_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/symbol.c ./gdb/gdbserver/symbol.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/symbol.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/symbol.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,32 +0,0 @@
-/* Symbol manipulating routines for the remote server for GDB.
-
-   Copyright (C) 2014-2020 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 "server.h"
-#include "gdbsupport/symbol.h"
-
-/* See gdbsupport/symbol.h.  */
-
-int
-find_minimal_symbol_address (const char *name, CORE_ADDR *addr,
-			     struct objfile *objfile)
-{
-  gdb_assert (objfile == NULL);
-
-  return look_up_one_symbol (name, addr, 1) != 1;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/target.c ./gdb/gdbserver/target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/target.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/target.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,395 +0,0 @@
-/* Target operations for the remote server for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
-
-   Contributed by MontaVista Software.
-
-   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 "server.h"
-#include "tracepoint.h"
-#include "gdbsupport/byte-vector.h"
-
-struct target_ops *the_target;
-
-int
-set_desired_thread ()
-{
-  client_state &cs = get_client_state ();
-  thread_info *found = find_thread_ptid (cs.general_thread);
-
-  current_thread = found;
-  return (current_thread != NULL);
-}
-
-/* The thread that was current before prepare_to_access_memory was
-   called.  done_accessing_memory uses this to restore the previous
-   selected thread.  */
-static ptid_t prev_general_thread;
-
-/* See target.h.  */
-
-int
-prepare_to_access_memory (void)
-{
-  client_state &cs = get_client_state ();
-
-  /* The first thread found.  */
-  struct thread_info *first = NULL;
-  /* The first stopped thread found.  */
-  struct thread_info *stopped = NULL;
-  /* The current general thread, if found.  */
-  struct thread_info *current = NULL;
-
-  /* Save the general thread value, since prepare_to_access_memory could change
-     it.  */
-  prev_general_thread = cs.general_thread;
-
-  if (the_target->prepare_to_access_memory != NULL)
-    {
-      int res;
-
-      res = the_target->prepare_to_access_memory ();
-      if (res != 0)
-	return res;
-    }
-
-  for_each_thread (prev_general_thread.pid (), [&] (thread_info *thread)
-    {
-      if (mythread_alive (thread->id))
-	{
-	  if (stopped == NULL && the_target->thread_stopped != NULL
-	      && thread_stopped (thread))
-	    stopped = thread;
-
-	  if (first == NULL)
-	    first = thread;
-
-	  if (current == NULL && prev_general_thread == thread->id)
-	    current = thread;
-	}
-    });
-
-  /* The thread we end up choosing.  */
-  struct thread_info *thread;
-
-  /* Prefer a stopped thread.  If none is found, try the current
-     thread.  Otherwise, take the first thread in the process.  If
-     none is found, undo the effects of
-     target->prepare_to_access_memory() and return error.  */
-  if (stopped != NULL)
-    thread = stopped;
-  else if (current != NULL)
-    thread = current;
-  else if (first != NULL)
-    thread = first;
-  else
-    {
-      done_accessing_memory ();
-      return 1;
-    }
-
-  current_thread = thread;
-  cs.general_thread = ptid_of (thread);
-
-  return 0;
-}
-
-/* See target.h.  */
-
-void
-done_accessing_memory (void)
-{
-  client_state &cs = get_client_state ();
-
-  if (the_target->done_accessing_memory != NULL)
-    the_target->done_accessing_memory ();
-
-  /* Restore the previous selected thread.  */
-  cs.general_thread = prev_general_thread;
-  switch_to_thread (cs.general_thread);
-}
-
-int
-read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  int res;
-  res = (*the_target->read_memory) (memaddr, myaddr, len);
-  check_mem_read (memaddr, myaddr, len);
-  return res;
-}
-
-/* See target/target.h.  */
-
-int
-target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
-{
-  return read_inferior_memory (memaddr, myaddr, len);
-}
-
-/* See target/target.h.  */
-
-int
-target_read_uint32 (CORE_ADDR memaddr, uint32_t *result)
-{
-  return read_inferior_memory (memaddr, (gdb_byte *) result, sizeof (*result));
-}
-
-/* See target/target.h.  */
-
-int
-target_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
-		     ssize_t len)
-{
-  /* Make a copy of the data because check_mem_write may need to
-     update it.  */
-  gdb::byte_vector buffer (myaddr, myaddr + len);
-  check_mem_write (memaddr, buffer.data (), myaddr, len);
-  return (*the_target->write_memory) (memaddr, buffer.data (), len);
-}
-
-ptid_t
-mywait (ptid_t ptid, struct target_waitstatus *ourstatus, int options,
-	int connected_wait)
-{
-  ptid_t ret;
-
-  if (connected_wait)
-    server_waiting = 1;
-
-  ret = target_wait (ptid, ourstatus, options);
-
-  /* We don't expose _LOADED events to gdbserver core.  See the
-     `dlls_changed' global.  */
-  if (ourstatus->kind == TARGET_WAITKIND_LOADED)
-    ourstatus->kind = TARGET_WAITKIND_STOPPED;
-
-  /* If GDB is connected through TCP/serial, then GDBserver will most
-     probably be running on its own terminal/console, so it's nice to
-     print there why is GDBserver exiting.  If however, GDB is
-     connected through stdio, then there's no need to spam the GDB
-     console with this -- the user will already see the exit through
-     regular GDB output, in that same terminal.  */
-  if (!remote_connection_is_stdio ())
-    {
-      if (ourstatus->kind == TARGET_WAITKIND_EXITED)
-	fprintf (stderr,
-		 "\nChild exited with status %d\n", ourstatus->value.integer);
-      else if (ourstatus->kind == TARGET_WAITKIND_SIGNALLED)
-	fprintf (stderr, "\nChild terminated with signal = 0x%x (%s)\n",
-		 gdb_signal_to_host (ourstatus->value.sig),
-		 gdb_signal_to_name (ourstatus->value.sig));
-    }
-
-  if (connected_wait)
-    server_waiting = 0;
-
-  return ret;
-}
-
-/* See target/target.h.  */
-
-void
-target_stop_and_wait (ptid_t ptid)
-{
-  struct target_waitstatus status;
-  bool was_non_stop = non_stop;
-  struct thread_resume resume_info;
-
-  resume_info.thread = ptid;
-  resume_info.kind = resume_stop;
-  resume_info.sig = GDB_SIGNAL_0;
-  (*the_target->resume) (&resume_info, 1);
-
-  non_stop = true;
-  mywait (ptid, &status, 0, 0);
-  non_stop = was_non_stop;
-}
-
-/* See target/target.h.  */
-
-ptid_t
-target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
-{
-  return (*the_target->wait) (ptid, status, options);
-}
-
-/* See target/target.h.  */
-
-void
-target_mourn_inferior (ptid_t ptid)
-{
-  (*the_target->mourn) (find_process_pid (ptid.pid ()));
-}
-
-/* See target/target.h.  */
-
-void
-target_continue_no_signal (ptid_t ptid)
-{
-  struct thread_resume resume_info;
-
-  resume_info.thread = ptid;
-  resume_info.kind = resume_continue;
-  resume_info.sig = GDB_SIGNAL_0;
-  (*the_target->resume) (&resume_info, 1);
-}
-
-/* See target/target.h.  */
-
-void
-target_continue (ptid_t ptid, enum gdb_signal signal)
-{
-  struct thread_resume resume_info;
-
-  resume_info.thread = ptid;
-  resume_info.kind = resume_continue;
-  resume_info.sig = gdb_signal_to_host (signal);
-  (*the_target->resume) (&resume_info, 1);
-}
-
-/* See target/target.h.  */
-
-int
-target_supports_multi_process (void)
-{
-  return (the_target->supports_multi_process != NULL ?
-	  (*the_target->supports_multi_process) () : 0);
-}
-
-int
-start_non_stop (int nonstop)
-{
-  if (the_target->start_non_stop == NULL)
-    {
-      if (nonstop)
-	return -1;
-      else
-	return 0;
-    }
-
-  return (*the_target->start_non_stop) (nonstop);
-}
-
-void
-set_target_ops (struct target_ops *target)
-{
-  the_target = XNEW (struct target_ops);
-  memcpy (the_target, target, sizeof (*the_target));
-}
-
-/* Convert pid to printable format.  */
-
-const char *
-target_pid_to_str (ptid_t ptid)
-{
-  static char buf[80];
-
-  if (ptid == minus_one_ptid)
-    xsnprintf (buf, sizeof (buf), "<all threads>");
-  else if (ptid == null_ptid)
-    xsnprintf (buf, sizeof (buf), "<null thread>");
-  else if (ptid.tid () != 0)
-    xsnprintf (buf, sizeof (buf), "Thread %d.0x%lx",
-	       ptid.pid (), ptid.tid ());
-  else if (ptid.lwp () != 0)
-    xsnprintf (buf, sizeof (buf), "LWP %d.%ld",
-	       ptid.pid (), ptid.lwp ());
-  else
-    xsnprintf (buf, sizeof (buf), "Process %d",
-	       ptid.pid ());
-
-  return buf;
-}
-
-int
-kill_inferior (process_info *proc)
-{
-  gdb_agent_about_to_close (proc->pid);
-
-  return (*the_target->kill) (proc);
-}
-
-/* Target can do hardware single step.  */
-
-int
-target_can_do_hardware_single_step (void)
-{
-  return 1;
-}
-
-/* Default implementation for breakpoint_kind_for_pc.
-
-   The default behavior for targets that don't implement breakpoint_kind_for_pc
-   is to use the size of a breakpoint as the kind.  */
-
-int
-default_breakpoint_kind_from_pc (CORE_ADDR *pcptr)
-{
-  int size = 0;
-
-  gdb_assert (the_target->sw_breakpoint_from_kind != NULL);
-
-  (*the_target->sw_breakpoint_from_kind) (0, &size);
-  return size;
-}
-
-/* Define it.  */
-
-target_terminal_state target_terminal::m_terminal_state
-  = target_terminal_state::is_ours;
-
-/* See target/target.h.  */
-
-void
-target_terminal::init ()
-{
-  /* Placeholder needed because of fork_inferior.  Not necessary on
-     GDBserver.  */
-}
-
-/* See target/target.h.  */
-
-void
-target_terminal::inferior ()
-{
-  /* Placeholder needed because of fork_inferior.  Not necessary on
-     GDBserver.  */
-}
-
-/* See target/target.h.  */
-
-void
-target_terminal::ours ()
-{
-  /* Placeholder needed because of fork_inferior.  Not necessary on
-     GDBserver.  */
-}
-
-/* See target/target.h.  */
-
-void
-target_terminal::ours_for_output (void)
-{
-  /* Placeholder.  */
-}
-
-/* See target/target.h.  */
-
-void
-target_terminal::info (const char *arg, int from_tty)
-{
-  /* Placeholder.  */
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/target.h ./gdb/gdbserver/target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/target.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/target.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,733 +0,0 @@
-/* Target operations for the remote server for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
-
-   Contributed by MontaVista Software.
-
-   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 GDBSERVER_TARGET_H
-#define GDBSERVER_TARGET_H
-
-#include <sys/types.h> /* for mode_t */
-#include "target/target.h"
-#include "target/resume.h"
-#include "target/wait.h"
-#include "target/waitstatus.h"
-#include "mem-break.h"
-#include "gdbsupport/btrace-common.h"
-#include <vector>
-
-struct emit_ops;
-struct buffer;
-struct process_info;
-
-/* This structure describes how to resume a particular thread (or all
-   threads) based on the client's request.  If thread is -1, then this
-   entry applies to all threads.  These are passed around as an
-   array.  */
-
-struct thread_resume
-{
-  ptid_t thread;
-
-  /* How to "resume".  */
-  enum resume_kind kind;
-
-  /* If non-zero, send this signal when we resume, or to stop the
-     thread.  If stopping a thread, and this is 0, the target should
-     stop the thread however it best decides to (e.g., SIGSTOP on
-     linux; SuspendThread on win32).  This is a host signal value (not
-     enum gdb_signal).  */
-  int sig;
-
-  /* Range to single step within.  Valid only iff KIND is resume_step.
-
-     Single-step once, and then continuing stepping as long as the
-     thread stops in this range.  (If the range is empty
-     [STEP_RANGE_START == STEP_RANGE_END], then this is a single-step
-     request.)  */
-  CORE_ADDR step_range_start;	/* Inclusive */
-  CORE_ADDR step_range_end;	/* Exclusive */
-};
-
-struct target_ops
-{
-  /* Start a new process.
-
-     PROGRAM is a path to the program to execute.
-     PROGRAM_ARGS is a standard NULL-terminated array of arguments,
-     to be passed to the inferior as ``argv'' (along with PROGRAM).
-
-     Returns the new PID on success, -1 on failure.  Registers the new
-     process with the process list.  */
-  int (*create_inferior) (const char *program,
-			  const std::vector<char *> &program_args);
-
-  /* Do additional setup after a new process is created, including
-     exec-wrapper completion.  */
-  void (*post_create_inferior) (void);
-
-  /* Attach to a running process.
-
-     PID is the process ID to attach to, specified by the user
-     or a higher layer.
-
-     Returns -1 if attaching is unsupported, 0 on success, and calls
-     error() otherwise.  */
-
-  int (*attach) (unsigned long pid);
-
-  /* Kill process PROC.  Return -1 on failure, and 0 on success.  */
-
-  int (*kill) (process_info *proc);
-
-  /* Detach from process PROC.  Return -1 on failure, and 0 on
-     success.  */
-
-  int (*detach) (process_info *proc);
-
-  /* The inferior process has died.  Do what is right.  */
-
-  void (*mourn) (struct process_info *proc);
-
-  /* Wait for process PID to exit.  */
-
-  void (*join) (int pid);
-
-  /* Return 1 iff the thread with process ID PID is alive.  */
-
-  int (*thread_alive) (ptid_t pid);
-
-  /* Resume the inferior process.  */
-
-  void (*resume) (struct thread_resume *resume_info, size_t n);
-
-  /* Wait for the inferior process or thread to change state.  Store
-     status through argument pointer STATUS.
-
-     PTID = -1 to wait for any pid to do something, PTID(pid,0,0) to
-     wait for any thread of process pid to do something.  Return ptid
-     of child, or -1 in case of error; store status through argument
-     pointer STATUS.  OPTIONS is a bit set of options defined as
-     TARGET_W* above.  If options contains TARGET_WNOHANG and there's
-     no child stop to report, return is
-     null_ptid/TARGET_WAITKIND_IGNORE.  */
-
-  ptid_t (*wait) (ptid_t ptid, struct target_waitstatus *status, int options);
-
-  /* Fetch registers from the inferior process.
-
-     If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO.  */
-
-  void (*fetch_registers) (struct regcache *regcache, int regno);
-
-  /* Store registers to the inferior process.
-
-     If REGNO is -1, store all registers; otherwise, store at least REGNO.  */
-
-  void (*store_registers) (struct regcache *regcache, int regno);
-
-  /* Prepare to read or write memory from the inferior process.
-     Targets use this to do what is necessary to get the state of the
-     inferior such that it is possible to access memory.
-
-     This should generally only be called from client facing routines,
-     such as gdb_read_memory/gdb_write_memory, or the GDB breakpoint
-     insertion routine.
-
-     Like `read_memory' and `write_memory' below, returns 0 on success
-     and errno on failure.  */
-
-  int (*prepare_to_access_memory) (void);
-
-  /* Undo the effects of prepare_to_access_memory.  */
-
-  void (*done_accessing_memory) (void);
-
-  /* Read memory from the inferior process.  This should generally be
-     called through read_inferior_memory, which handles breakpoint shadowing.
-
-     Read LEN bytes at MEMADDR into a buffer at MYADDR.
-  
-     Returns 0 on success and errno on failure.  */
-
-  int (*read_memory) (CORE_ADDR memaddr, unsigned char *myaddr, int len);
-
-  /* Write memory to the inferior process.  This should generally be
-     called through target_write_memory, which handles breakpoint shadowing.
-
-     Write LEN bytes from the buffer at MYADDR to MEMADDR.
-
-     Returns 0 on success and errno on failure.  */
-
-  int (*write_memory) (CORE_ADDR memaddr, const unsigned char *myaddr,
-		       int len);
-
-  /* Query GDB for the values of any symbols we're interested in.
-     This function is called whenever we receive a "qSymbols::"
-     query, which corresponds to every time more symbols (might)
-     become available.  NULL if we aren't interested in any
-     symbols.  */
-
-  void (*look_up_symbols) (void);
-
-  /* Send an interrupt request to the inferior process,
-     however is appropriate.  */
-
-  void (*request_interrupt) (void);
-
-  /* Read auxiliary vector data from the inferior process.
-
-     Read LEN bytes at OFFSET into a buffer at MYADDR.  */
-
-  int (*read_auxv) (CORE_ADDR offset, unsigned char *myaddr,
-		    unsigned int len);
-
-  /* Returns true if GDB Z breakpoint type TYPE is supported, false
-     otherwise.  The type is coded as follows:
-       '0' - software-breakpoint
-       '1' - hardware-breakpoint
-       '2' - write watchpoint
-       '3' - read watchpoint
-       '4' - access watchpoint
-  */
-  int (*supports_z_point_type) (char z_type);
-
-  /* Insert and remove a break or watchpoint.
-     Returns 0 on success, -1 on failure and 1 on unsupported.  */
-
-  int (*insert_point) (enum raw_bkpt_type type, CORE_ADDR addr,
-		       int size, struct raw_breakpoint *bp);
-  int (*remove_point) (enum raw_bkpt_type type, CORE_ADDR addr,
-		       int size, struct raw_breakpoint *bp);
-
-  /* Returns 1 if the target stopped because it executed a software
-     breakpoint instruction, 0 otherwise.  */
-  int (*stopped_by_sw_breakpoint) (void);
-
-  /* Returns true if the target knows whether a trap was caused by a
-     SW breakpoint triggering.  */
-  int (*supports_stopped_by_sw_breakpoint) (void);
-
-  /* Returns 1 if the target stopped for a hardware breakpoint.  */
-  int (*stopped_by_hw_breakpoint) (void);
-
-  /* Returns true if the target knows whether a trap was caused by a
-     HW breakpoint triggering.  */
-  int (*supports_stopped_by_hw_breakpoint) (void);
-
-  /* Returns true if the target can do hardware single step.  */
-  int (*supports_hardware_single_step) (void);
-
-  /* Returns 1 if target was stopped due to a watchpoint hit, 0 otherwise.  */
-
-  int (*stopped_by_watchpoint) (void);
-
-  /* Returns the address associated with the watchpoint that hit, if any;
-     returns 0 otherwise.  */
-
-  CORE_ADDR (*stopped_data_address) (void);
-
-  /* Reports the text, data offsets of the executable.  This is
-     needed for uclinux where the executable is relocated during load
-     time.  */
-
-  int (*read_offsets) (CORE_ADDR *text, CORE_ADDR *data);
-
-  /* Fetch the address associated with a specific thread local storage
-     area, determined by the specified THREAD, OFFSET, and LOAD_MODULE.
-     Stores it in *ADDRESS and returns zero on success; otherwise returns
-     an error code.  A return value of -1 means this system does not
-     support the operation.  */
-
-  int (*get_tls_address) (struct thread_info *thread, CORE_ADDR offset,
-			  CORE_ADDR load_module, CORE_ADDR *address);
-
-  /* Fill BUF with an hostio error packet representing the last hostio
-     error.  */
-  void (*hostio_last_error) (char *buf);
-
-  /* Read/Write OS data using qXfer packets.  */
-  int (*qxfer_osdata) (const char *annex, unsigned char *readbuf,
-		       unsigned const char *writebuf, CORE_ADDR offset,
-		       int len);
-
-  /* Read/Write extra signal info.  */
-  int (*qxfer_siginfo) (const char *annex, unsigned char *readbuf,
-			unsigned const char *writebuf,
-			CORE_ADDR offset, int len);
-
-  int (*supports_non_stop) (void);
-
-  /* Enables async target events.  Returns the previous enable
-     state.  */
-  int (*async) (int enable);
-
-  /* Switch to non-stop (1) or all-stop (0) mode.  Return 0 on
-     success, -1 otherwise.  */
-  int (*start_non_stop) (int);
-
-  /* Returns true if the target supports multi-process debugging.  */
-  int (*supports_multi_process) (void);
-
-  /* Returns true if fork events are supported.  */
-  int (*supports_fork_events) (void);
-
-  /* Returns true if vfork events are supported.  */
-  int (*supports_vfork_events) (void);
-
-  /* Returns true if exec events are supported.  */
-  int (*supports_exec_events) (void);
-
-  /* Allows target to re-initialize connection-specific settings.  */
-  void (*handle_new_gdb_connection) (void);
-
-  /* If not NULL, target-specific routine to process monitor command.
-     Returns 1 if handled, or 0 to perform default processing.  */
-  int (*handle_monitor_command) (char *);
-
-  /* Returns the core given a thread, or -1 if not known.  */
-  int (*core_of_thread) (ptid_t);
-
-  /* Read loadmaps.  Read LEN bytes at OFFSET into a buffer at MYADDR.  */
-  int (*read_loadmap) (const char *annex, CORE_ADDR offset,
-		       unsigned char *myaddr, unsigned int len);
-
-  /* Target specific qSupported support.  FEATURES is an array of
-     features with COUNT elements.  */
-  void (*process_qsupported) (char **features, int count);
-
-  /* Return 1 if the target supports tracepoints, 0 (or leave the
-     callback NULL) otherwise.  */
-  int (*supports_tracepoints) (void);
-
-  /* Read PC from REGCACHE.  */
-  CORE_ADDR (*read_pc) (struct regcache *regcache);
-
-  /* Write PC to REGCACHE.  */
-  void (*write_pc) (struct regcache *regcache, CORE_ADDR pc);
-
-  /* Return true if THREAD is known to be stopped now.  */
-  int (*thread_stopped) (struct thread_info *thread);
-
-  /* Read Thread Information Block address.  */
-  int (*get_tib_address) (ptid_t ptid, CORE_ADDR *address);
-
-  /* Pause all threads.  If FREEZE, arrange for any resume attempt to
-     be ignored until an unpause_all call unfreezes threads again.
-     There can be nested calls to pause_all, so a freeze counter
-     should be maintained.  */
-  void (*pause_all) (int freeze);
-
-  /* Unpause all threads.  Threads that hadn't been resumed by the
-     client should be left stopped.  Basically a pause/unpause call
-     pair should not end up resuming threads that were stopped before
-     the pause call.  */
-  void (*unpause_all) (int unfreeze);
-
-  /* Stabilize all threads.  That is, force them out of jump pads.  */
-  void (*stabilize_threads) (void);
-
-  /* Install a fast tracepoint jump pad.  TPOINT is the address of the
-     tracepoint internal object as used by the IPA agent.  TPADDR is
-     the address of tracepoint.  COLLECTOR is address of the function
-     the jump pad redirects to.  LOCKADDR is the address of the jump
-     pad lock object.  ORIG_SIZE is the size in bytes of the
-     instruction at TPADDR.  JUMP_ENTRY points to the address of the
-     jump pad entry, and on return holds the address past the end of
-     the created jump pad.  If a trampoline is created by the function,
-     then TRAMPOLINE and TRAMPOLINE_SIZE return the address and size of
-     the trampoline, else they remain unchanged.  JJUMP_PAD_INSN is a
-     buffer containing a copy of the instruction at TPADDR.
-     ADJUST_INSN_ADDR and ADJUST_INSN_ADDR_END are output parameters that
-     return the address range where the instruction at TPADDR was relocated
-     to.  If an error occurs, the ERR may be used to pass on an error
-     message.  */
-  int (*install_fast_tracepoint_jump_pad) (CORE_ADDR tpoint, CORE_ADDR tpaddr,
-					   CORE_ADDR collector,
-					   CORE_ADDR lockaddr,
-					   ULONGEST orig_size,
-					   CORE_ADDR *jump_entry,
-					   CORE_ADDR *trampoline,
-					   ULONGEST *trampoline_size,
-					   unsigned char *jjump_pad_insn,
-					   ULONGEST *jjump_pad_insn_size,
-					   CORE_ADDR *adjusted_insn_addr,
-					   CORE_ADDR *adjusted_insn_addr_end,
-					   char *err);
-
-  /* Return the bytecode operations vector for the current inferior.
-     Returns NULL if bytecode compilation is not supported.  */
-  struct emit_ops *(*emit_ops) (void);
-
-  /* Returns true if the target supports disabling randomization.  */
-  int (*supports_disable_randomization) (void);
-
-  /* Return the minimum length of an instruction that can be safely overwritten
-     for use as a fast tracepoint.  */
-  int (*get_min_fast_tracepoint_insn_len) (void);
-
-  /* Read solib info on SVR4 platforms.  */
-  int (*qxfer_libraries_svr4) (const char *annex, unsigned char *readbuf,
-			       unsigned const char *writebuf,
-			       CORE_ADDR offset, int len);
-
-  /* Return true if target supports debugging agent.  */
-  int (*supports_agent) (void);
-
-  /* Enable branch tracing for PTID based on CONF and allocate a branch trace
-     target information struct for reading and for disabling branch trace.  */
-  struct btrace_target_info *(*enable_btrace)
-    (ptid_t ptid, const struct btrace_config *conf);
-
-  /* Disable branch tracing.
-     Returns zero on success, non-zero otherwise.  */
-  int (*disable_btrace) (struct btrace_target_info *tinfo);
-
-  /* Read branch trace data into buffer.
-     Return 0 on success; print an error message into BUFFER and return -1,
-     otherwise.  */
-  int (*read_btrace) (struct btrace_target_info *, struct buffer *,
-		      enum btrace_read_type type);
-
-  /* Read the branch trace configuration into BUFFER.
-     Return 0 on success; print an error message into BUFFER and return -1
-     otherwise.  */
-  int (*read_btrace_conf) (const struct btrace_target_info *, struct buffer *);
-
-  /* Return true if target supports range stepping.  */
-  int (*supports_range_stepping) (void);
-
-  /* Return the full absolute name of the executable file that was
-     run to create the process PID.  If the executable file cannot
-     be determined, NULL is returned.  Otherwise, a pointer to a
-     character string containing the pathname is returned.  This
-     string should be copied into a buffer by the client if the string
-     will not be immediately used, or if it must persist.  */
-  char *(*pid_to_exec_file) (int pid);
-
-  /* Multiple-filesystem-aware open.  Like open(2), but operating in
-     the filesystem as it appears to process PID.  Systems where all
-     processes share a common filesystem should set this to NULL.
-     If NULL, the caller should fall back to open(2).  */
-  int (*multifs_open) (int pid, const char *filename,
-		       int flags, mode_t mode);
-
-  /* Multiple-filesystem-aware unlink.  Like unlink(2), but operates
-     in the filesystem as it appears to process PID.  Systems where
-     all processes share a common filesystem should set this to NULL.
-     If NULL, the caller should fall back to unlink(2).  */
-  int (*multifs_unlink) (int pid, const char *filename);
-
-  /* Multiple-filesystem-aware readlink.  Like readlink(2), but
-     operating in the filesystem as it appears to process PID.
-     Systems where all processes share a common filesystem should
-     set this to NULL.  If NULL, the caller should fall back to
-     readlink(2).  */
-  ssize_t (*multifs_readlink) (int pid, const char *filename,
-			       char *buf, size_t bufsiz);
-
-  /* Return the breakpoint kind for this target based on PC.  The PCPTR is
-     adjusted to the real memory location in case a flag (e.g., the Thumb bit on
-     ARM) was present in the PC.  */
-  int (*breakpoint_kind_from_pc) (CORE_ADDR *pcptr);
-
-  /* Return the software breakpoint from KIND.  KIND can have target
-     specific meaning like the Z0 kind parameter.
-     SIZE is set to the software breakpoint's length in memory.  */
-  const gdb_byte *(*sw_breakpoint_from_kind) (int kind, int *size);
-
-  /* Return the thread's name, or NULL if the target is unable to determine it.
-     The returned value must not be freed by the caller.  */
-  const char *(*thread_name) (ptid_t thread);
-
-  /* Return the breakpoint kind for this target based on the current
-     processor state (e.g. the current instruction mode on ARM) and the
-     PC.  The PCPTR is adjusted to the real memory location in case a flag
-     (e.g., the Thumb bit on ARM) is present in the PC.  */
-  int (*breakpoint_kind_from_current_state) (CORE_ADDR *pcptr);
-
-  /* Returns true if the target can software single step.  */
-  int (*supports_software_single_step) (void);
-
-  /* Return 1 if the target supports catch syscall, 0 (or leave the
-     callback NULL) otherwise.  */
-  int (*supports_catch_syscall) (void);
-
-  /* Return tdesc index for IPA.  */
-  int (*get_ipa_tdesc_idx) (void);
-
-  /* Thread ID to (numeric) thread handle: Return true on success and
-     false for failure.  Return pointer to thread handle via HANDLE
-     and the handle's length via HANDLE_LEN.  */
-  bool (*thread_handle) (ptid_t ptid, gdb_byte **handle, int *handle_len);
-};
-
-extern struct target_ops *the_target;
-
-void set_target_ops (struct target_ops *);
-
-#define create_inferior(program, program_args)	\
-  (*the_target->create_inferior) (program, program_args)
-
-#define target_post_create_inferior()			 \
-  do							 \
-    {							 \
-      if (the_target->post_create_inferior != NULL)	 \
-	(*the_target->post_create_inferior) ();		 \
-    } while (0)
-
-#define myattach(pid) \
-  (*the_target->attach) (pid)
-
-int kill_inferior (process_info *proc);
-
-#define target_supports_fork_events() \
-  (the_target->supports_fork_events ? \
-   (*the_target->supports_fork_events) () : 0)
-
-#define target_supports_vfork_events() \
-  (the_target->supports_vfork_events ? \
-   (*the_target->supports_vfork_events) () : 0)
-
-#define target_supports_exec_events() \
-  (the_target->supports_exec_events ? \
-   (*the_target->supports_exec_events) () : 0)
-
-#define target_handle_new_gdb_connection()		 \
-  do							 \
-    {							 \
-      if (the_target->handle_new_gdb_connection != NULL) \
-	(*the_target->handle_new_gdb_connection) ();	 \
-    } while (0)
-
-#define detach_inferior(proc) \
-  (*the_target->detach) (proc)
-
-#define mythread_alive(pid) \
-  (*the_target->thread_alive) (pid)
-
-#define fetch_inferior_registers(regcache, regno)	\
-  (*the_target->fetch_registers) (regcache, regno)
-
-#define store_inferior_registers(regcache, regno) \
-  (*the_target->store_registers) (regcache, regno)
-
-#define join_inferior(pid) \
-  (*the_target->join) (pid)
-
-#define target_supports_non_stop() \
-  (the_target->supports_non_stop ? (*the_target->supports_non_stop ) () : 0)
-
-#define target_async(enable) \
-  (the_target->async ? (*the_target->async) (enable) : 0)
-
-#define target_process_qsupported(features, count)	\
-  do							\
-    {							\
-      if (the_target->process_qsupported)		\
-	the_target->process_qsupported (features, count); \
-    } while (0)
-
-#define target_supports_catch_syscall()              	\
-  (the_target->supports_catch_syscall ?			\
-   (*the_target->supports_catch_syscall) () : 0)
-
-#define target_get_ipa_tdesc_idx()			\
-  (the_target->get_ipa_tdesc_idx			\
-   ? (*the_target->get_ipa_tdesc_idx) () : 0)
-
-#define target_supports_tracepoints()			\
-  (the_target->supports_tracepoints			\
-   ? (*the_target->supports_tracepoints) () : 0)
-
-#define target_supports_fast_tracepoints()		\
-  (the_target->install_fast_tracepoint_jump_pad != NULL)
-
-#define target_get_min_fast_tracepoint_insn_len()	\
-  (the_target->get_min_fast_tracepoint_insn_len		\
-   ? (*the_target->get_min_fast_tracepoint_insn_len) () : 0)
-
-#define thread_stopped(thread) \
-  (*the_target->thread_stopped) (thread)
-
-#define pause_all(freeze)			\
-  do						\
-    {						\
-      if (the_target->pause_all)		\
-	(*the_target->pause_all) (freeze);	\
-    } while (0)
-
-#define unpause_all(unfreeze)			\
-  do						\
-    {						\
-      if (the_target->unpause_all)		\
-	(*the_target->unpause_all) (unfreeze);	\
-    } while (0)
-
-#define stabilize_threads()			\
-  do						\
-    {						\
-      if (the_target->stabilize_threads)     	\
-	(*the_target->stabilize_threads) ();  	\
-    } while (0)
-
-#define install_fast_tracepoint_jump_pad(tpoint, tpaddr,		\
-					 collector, lockaddr,		\
-					 orig_size,			\
-					 jump_entry,			\
-					 trampoline, trampoline_size,	\
-					 jjump_pad_insn,		\
-					 jjump_pad_insn_size,		\
-					 adjusted_insn_addr,		\
-					 adjusted_insn_addr_end,	\
-					 err)				\
-  (*the_target->install_fast_tracepoint_jump_pad) (tpoint, tpaddr,	\
-						   collector,lockaddr,	\
-						   orig_size, jump_entry, \
-						   trampoline,		\
-						   trampoline_size,	\
-						   jjump_pad_insn,	\
-						   jjump_pad_insn_size, \
-						   adjusted_insn_addr,	\
-						   adjusted_insn_addr_end, \
-						   err)
-
-#define target_emit_ops() \
-  (the_target->emit_ops ? (*the_target->emit_ops) () : NULL)
-
-#define target_supports_disable_randomization() \
-  (the_target->supports_disable_randomization ? \
-   (*the_target->supports_disable_randomization) () : 0)
-
-#define target_supports_agent() \
-  (the_target->supports_agent ? \
-   (*the_target->supports_agent) () : 0)
-
-static inline struct btrace_target_info *
-target_enable_btrace (ptid_t ptid, const struct btrace_config *conf)
-{
-  if (the_target->enable_btrace == nullptr)
-    error (_("Target does not support branch tracing."));
-
-  return (*the_target->enable_btrace) (ptid, conf);
-}
-
-static inline int
-target_disable_btrace (struct btrace_target_info *tinfo)
-{
-  if (the_target->disable_btrace == nullptr)
-    error (_("Target does not support branch tracing."));
-
-  return (*the_target->disable_btrace) (tinfo);
-}
-
-static inline int
-target_read_btrace (struct btrace_target_info *tinfo,
-		    struct buffer *buffer,
-		    enum btrace_read_type type)
-{
-  if (the_target->read_btrace == nullptr)
-    error (_("Target does not support branch tracing."));
-
-  return (*the_target->read_btrace) (tinfo, buffer, type);
-}
-
-static inline int
-target_read_btrace_conf (struct btrace_target_info *tinfo,
-			 struct buffer *buffer)
-{
-  if (the_target->read_btrace_conf == nullptr)
-    error (_("Target does not support branch tracing."));
-
-  return (*the_target->read_btrace_conf) (tinfo, buffer);
-}
-
-#define target_supports_range_stepping() \
-  (the_target->supports_range_stepping ? \
-   (*the_target->supports_range_stepping) () : 0)
-
-#define target_supports_stopped_by_sw_breakpoint() \
-  (the_target->supports_stopped_by_sw_breakpoint ? \
-   (*the_target->supports_stopped_by_sw_breakpoint) () : 0)
-
-#define target_stopped_by_sw_breakpoint() \
-  (the_target->stopped_by_sw_breakpoint ? \
-   (*the_target->stopped_by_sw_breakpoint) () : 0)
-
-#define target_supports_stopped_by_hw_breakpoint() \
-  (the_target->supports_stopped_by_hw_breakpoint ? \
-   (*the_target->supports_stopped_by_hw_breakpoint) () : 0)
-
-#define target_supports_hardware_single_step() \
-  (the_target->supports_hardware_single_step ? \
-   (*the_target->supports_hardware_single_step) () : 0)
-
-#define target_stopped_by_hw_breakpoint() \
-  (the_target->stopped_by_hw_breakpoint ? \
-   (*the_target->stopped_by_hw_breakpoint) () : 0)
-
-#define target_breakpoint_kind_from_pc(pcptr) \
-  (the_target->breakpoint_kind_from_pc \
-   ? (*the_target->breakpoint_kind_from_pc) (pcptr) \
-   : default_breakpoint_kind_from_pc (pcptr))
-
-#define target_breakpoint_kind_from_current_state(pcptr) \
-  (the_target->breakpoint_kind_from_current_state \
-   ? (*the_target->breakpoint_kind_from_current_state) (pcptr) \
-   : target_breakpoint_kind_from_pc (pcptr))
-
-#define target_supports_software_single_step() \
-  (the_target->supports_software_single_step ? \
-   (*the_target->supports_software_single_step) () : 0)
-
-/* Start non-stop mode, returns 0 on success, -1 on failure.   */
-
-int start_non_stop (int nonstop);
-
-ptid_t mywait (ptid_t ptid, struct target_waitstatus *ourstatus, int options,
-	       int connected_wait);
-
-/* Prepare to read or write memory from the inferior process.  See the
-   corresponding target_ops methods for more details.  */
-
-int prepare_to_access_memory (void);
-void done_accessing_memory (void);
-
-#define target_core_of_thread(ptid)		\
-  (the_target->core_of_thread ? (*the_target->core_of_thread) (ptid) \
-   : -1)
-
-#define target_thread_name(ptid)                                \
-  (the_target->thread_name ? (*the_target->thread_name) (ptid)  \
-   : NULL)
-
-#define target_thread_handle(ptid, handle, handle_len) \
-   (the_target->thread_handle ? (*the_target->thread_handle) \
-                                  (ptid, handle, handle_len) \
-   : false)
-
-int read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len);
-
-int set_desired_thread ();
-
-const char *target_pid_to_str (ptid_t);
-
-int target_can_do_hardware_single_step (void);
-
-int default_breakpoint_kind_from_pc (CORE_ADDR *pcptr);
-
-#endif /* GDBSERVER_TARGET_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/tdesc.c ./gdb/gdbserver/tdesc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/tdesc.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/tdesc.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,204 +0,0 @@
-/* Copyright (C) 2012-2020 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 "server.h"
-#include "tdesc.h"
-#include "regdef.h"
-
-#ifndef IN_PROCESS_AGENT
-
-target_desc::~target_desc ()
-{
-  xfree ((char *) arch);
-  xfree ((char *) osabi);
-}
-
-bool target_desc::operator== (const target_desc &other) const
-{
-  if (reg_defs != other.reg_defs)
-    return false;
-
-  /* Compare expedite_regs.  */
-  int i = 0;
-  for (; expedite_regs[i] != NULL; i++)
-    {
-      if (strcmp (expedite_regs[i], other.expedite_regs[i]) != 0)
-	return false;
-    }
-  if (other.expedite_regs[i] != NULL)
-    return false;
-
-  return true;
-}
-
-#endif
-
-void target_desc::accept (tdesc_element_visitor &v) const
-{
-#ifndef IN_PROCESS_AGENT
-  v.visit_pre (this);
-
-  for (const tdesc_feature_up &feature : features)
-    feature->accept (v);
-
-  v.visit_post (this);
-#endif
-}
-
-void
-init_target_desc (struct target_desc *tdesc,
-		  const char **expedite_regs)
-{
-  int offset = 0;
-
-  /* Go through all the features and populate reg_defs.  */
-  for (const tdesc_feature_up &feature : tdesc->features)
-    for (const tdesc_reg_up &treg : feature->registers)
-      {
-	int regnum = treg->target_regnum;
-
-	/* Register number will increase (possibly with gaps) or be zero.  */
-	gdb_assert (regnum == 0 || regnum >= tdesc->reg_defs.size ());
-
-	if (regnum != 0)
-	  tdesc->reg_defs.resize (regnum, reg (offset));
-
-	tdesc->reg_defs.emplace_back (treg->name.c_str (), offset,
-				      treg->bitsize);
-	offset += treg->bitsize;
-      }
-
-  tdesc->registers_size = offset / 8;
-
-  /* Make sure PBUFSIZ is large enough to hold a full register
-     packet.  */
-  gdb_assert (2 * tdesc->registers_size + 32 <= PBUFSIZ);
-
-#ifndef IN_PROCESS_AGENT
-  tdesc->expedite_regs = expedite_regs;
-#endif
-}
-
-struct target_desc *
-allocate_target_description (void)
-{
-  return new target_desc ();
-}
-
-#ifndef IN_PROCESS_AGENT
-
-static const struct target_desc default_description {};
-
-void
-copy_target_description (struct target_desc *dest,
-			 const struct target_desc *src)
-{
-  dest->reg_defs = src->reg_defs;
-  dest->expedite_regs = src->expedite_regs;
-  dest->registers_size = src->registers_size;
-  dest->xmltarget = src->xmltarget;
-}
-
-const struct target_desc *
-current_target_desc (void)
-{
-  if (current_thread == NULL)
-    return &default_description;
-
-  return current_process ()->tdesc;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-const char *
-tdesc_architecture_name (const struct target_desc *target_desc)
-{
-  return target_desc->arch;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-void
-set_tdesc_architecture (struct target_desc *target_desc,
-			const char *name)
-{
-  target_desc->arch = xstrdup (name);
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-const char *
-tdesc_osabi_name (const struct target_desc *target_desc)
-{
-  return target_desc->osabi;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-void
-set_tdesc_osabi (struct target_desc *target_desc, const char *name)
-{
-  target_desc->osabi = xstrdup (name);
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-const char *
-tdesc_get_features_xml (const target_desc *tdesc)
-{
-  /* Either .xmltarget or .features is not NULL.  */
-  gdb_assert (tdesc->xmltarget != NULL
-	      || (!tdesc->features.empty ()
-		  && tdesc->arch != NULL));
-
-  if (tdesc->xmltarget == NULL)
-    {
-      std::string buffer ("@");
-      print_xml_feature v (&buffer);
-      tdesc->accept (v);
-      tdesc->xmltarget = xstrdup (buffer.c_str ());
-    }
-
-  return tdesc->xmltarget;
-}
-#endif
-
-/* See gdbsupport/tdesc.h.  */
-
-struct tdesc_feature *
-tdesc_create_feature (struct target_desc *tdesc, const char *name)
-{
-  struct tdesc_feature *new_feature = new tdesc_feature (name);
-  tdesc->features.emplace_back (new_feature);
-  return new_feature;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-bool
-tdesc_contains_feature (const target_desc *tdesc, const std::string &feature)
-{
-  gdb_assert (tdesc != nullptr);
-
-  for (const tdesc_feature_up &f : tdesc->features)
-    {
-      if (f->name == feature)
-	return true;
-    }
-
-  return false;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/tdesc.h ./gdb/gdbserver/tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/tdesc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/tdesc.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,101 +0,0 @@
-/* Target description definitions for remote server for GDB.
-   Copyright (C) 2012-2020 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 GDBSERVER_TDESC_H
-#define GDBSERVER_TDESC_H
-
-#include "gdbsupport/tdesc.h"
-
-#include "regdef.h"
-#include <vector>
-
-/* A target description.  Inherit from tdesc_feature so that target_desc
-   can be used as tdesc_feature.  */
-
-struct target_desc : tdesc_element
-{
-  /* A vector of elements of register definitions that
-     describe the inferior's register set.  */
-  std::vector<struct reg> reg_defs;
-
-  /* The register cache size, in bytes.  */
-  int registers_size;
-
-  /* XML features in this target description.  */
-  std::vector<tdesc_feature_up> features;
-
-#ifndef IN_PROCESS_AGENT
-  /* An array of register names.  These are the "expedite" registers:
-     registers whose values are sent along with stop replies.  */
-  const char **expedite_regs = NULL;
-
-  /* Defines what to return when looking for the "target.xml" file in
-     response to qXfer:features:read.  Its contents can either be
-     verbatim XML code (prefixed with a '@') or else the name of the
-     actual XML file to be used in place of "target.xml".
-
-     If NULL then its content will be generated by parsing the target
-     description into xml.  */
-  mutable const char *xmltarget = NULL;
-
-  /* The value of <architecture> element in the XML, replying GDB.  */
-  const char *arch = NULL;
-
-  /* The value of <osabi> element in the XML, replying GDB.  */
-  const char *osabi = NULL;
-
-public:
-  target_desc ()
-    : registers_size (0)
-  {}
-
-  ~target_desc ();
-
-  bool operator== (const target_desc &other) const;
-
-  bool operator!= (const target_desc &other) const
-  {
-    return !(*this == other);
-  }
-#endif
-
-  void accept (tdesc_element_visitor &v) const override;
-};
-
-/* Copy target description SRC to DEST.  */
-
-void copy_target_description (struct target_desc *dest,
-			      const struct target_desc *src);
-
-/* Initialize TDESC, and then set its expedite_regs field to
-   EXPEDITE_REGS.  */
-
-void init_target_desc (struct target_desc *tdesc,
-		       const char **expedite_regs);
-
-/* Return the current inferior's target description.  Never returns
-   NULL.  */
-
-const struct target_desc *current_target_desc (void);
-
-/* Return true if TDESC contains the feature described by string FEATURE.
-   Return false otherwise.  */
-bool tdesc_contains_feature (const target_desc *tdesc,
-			     const std::string &feature);
-
-#endif /* GDBSERVER_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/thread-db.c ./gdb/gdbserver/thread-db.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/thread-db.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/thread-db.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,910 +0,0 @@
-/* Thread management interface, for the remote server for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
-
-   Contributed by MontaVista Software.
-
-   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 "server.h"
-
-#include "linux-low.h"
-
-#include "debug.h"
-#include "gdb_proc_service.h"
-#include "nat/gdb_thread_db.h"
-#include "gdbsupport/gdb_vecs.h"
-#include "nat/linux-procfs.h"
-#include "gdbsupport/scoped_restore.h"
-
-#ifndef USE_LIBTHREAD_DB_DIRECTLY
-#include <dlfcn.h>
-#endif
-#include <limits.h>
-#include <ctype.h>
-
-struct thread_db
-{
-  /* Structure that identifies the child process for the
-     <proc_service.h> interface.  */
-  struct ps_prochandle proc_handle;
-
-  /* Connection to the libthread_db library.  */
-  td_thragent_t *thread_agent;
-
-  /* If this flag has been set, we've already asked GDB for all
-     symbols we might need; assume symbol cache misses are
-     failures.  */
-  int all_symbols_looked_up;
-
-#ifndef USE_LIBTHREAD_DB_DIRECTLY
-  /* Handle of the libthread_db from dlopen.  */
-  void *handle;
-#endif
-
-  /* Addresses of libthread_db functions.  */
-  td_ta_new_ftype *td_ta_new_p;
-  td_ta_map_lwp2thr_ftype *td_ta_map_lwp2thr_p;
-  td_thr_get_info_ftype *td_thr_get_info_p;
-  td_ta_thr_iter_ftype *td_ta_thr_iter_p;
-  td_thr_tls_get_addr_ftype *td_thr_tls_get_addr_p;
-  td_thr_tlsbase_ftype *td_thr_tlsbase_p;
-  td_symbol_list_ftype *td_symbol_list_p;
-};
-
-static char *libthread_db_search_path;
-
-static int find_one_thread (ptid_t);
-static int find_new_threads_callback (const td_thrhandle_t *th_p, void *data);
-
-static const char *
-thread_db_err_str (td_err_e err)
-{
-  static char buf[64];
-
-  switch (err)
-    {
-    case TD_OK:
-      return "generic 'call succeeded'";
-    case TD_ERR:
-      return "generic error";
-    case TD_NOTHR:
-      return "no thread to satisfy query";
-    case TD_NOSV:
-      return "no sync handle to satisfy query";
-    case TD_NOLWP:
-      return "no LWP to satisfy query";
-    case TD_BADPH:
-      return "invalid process handle";
-    case TD_BADTH:
-      return "invalid thread handle";
-    case TD_BADSH:
-      return "invalid synchronization handle";
-    case TD_BADTA:
-      return "invalid thread agent";
-    case TD_BADKEY:
-      return "invalid key";
-    case TD_NOMSG:
-      return "no event message for getmsg";
-    case TD_NOFPREGS:
-      return "FPU register set not available";
-    case TD_NOLIBTHREAD:
-      return "application not linked with libthread";
-    case TD_NOEVENT:
-      return "requested event is not supported";
-    case TD_NOCAPAB:
-      return "capability not available";
-    case TD_DBERR:
-      return "debugger service failed";
-    case TD_NOAPLIC:
-      return "operation not applicable to";
-    case TD_NOTSD:
-      return "no thread-specific data for this thread";
-    case TD_MALLOC:
-      return "malloc failed";
-    case TD_PARTIALREG:
-      return "only part of register set was written/read";
-    case TD_NOXREGS:
-      return "X register set not available for this thread";
-#ifdef HAVE_TD_VERSION
-    case TD_VERSION:
-      return "version mismatch between libthread_db and libpthread";
-#endif
-    default:
-      xsnprintf (buf, sizeof (buf), "unknown thread_db error '%d'", err);
-      return buf;
-    }
-}
-
-#if 0
-static char *
-thread_db_state_str (td_thr_state_e state)
-{
-  static char buf[64];
-
-  switch (state)
-    {
-    case TD_THR_STOPPED:
-      return "stopped by debugger";
-    case TD_THR_RUN:
-      return "runnable";
-    case TD_THR_ACTIVE:
-      return "active";
-    case TD_THR_ZOMBIE:
-      return "zombie";
-    case TD_THR_SLEEP:
-      return "sleeping";
-    case TD_THR_STOPPED_ASLEEP:
-      return "stopped by debugger AND blocked";
-    default:
-      xsnprintf (buf, sizeof (buf), "unknown thread_db state %d", state);
-      return buf;
-    }
-}
-#endif
-
-/* Get thread info about PTID, accessing memory via the current
-   thread.  */
-
-static int
-find_one_thread (ptid_t ptid)
-{
-  td_thrhandle_t th;
-  td_thrinfo_t ti;
-  td_err_e err;
-  struct lwp_info *lwp;
-  struct thread_db *thread_db = current_process ()->priv->thread_db;
-  int lwpid = ptid.lwp ();
-
-  thread_info *thread = find_thread_ptid (ptid);
-  lwp = get_thread_lwp (thread);
-  if (lwp->thread_known)
-    return 1;
-
-  /* Get information about this thread.  */
-  err = thread_db->td_ta_map_lwp2thr_p (thread_db->thread_agent, lwpid, &th);
-  if (err != TD_OK)
-    error ("Cannot get thread handle for LWP %d: %s",
-	   lwpid, thread_db_err_str (err));
-
-  err = thread_db->td_thr_get_info_p (&th, &ti);
-  if (err != TD_OK)
-    error ("Cannot get thread info for LWP %d: %s",
-	   lwpid, thread_db_err_str (err));
-
-  if (debug_threads)
-    debug_printf ("Found thread %ld (LWP %d)\n",
-		  (unsigned long) ti.ti_tid, ti.ti_lid);
-
-  if (lwpid != ti.ti_lid)
-    {
-      warning ("PID mismatch!  Expected %ld, got %ld",
-	       (long) lwpid, (long) ti.ti_lid);
-      return 0;
-    }
-
-  /* If the new thread ID is zero, a final thread ID will be available
-     later.  Do not enable thread debugging yet.  */
-  if (ti.ti_tid == 0)
-    return 0;
-
-  lwp->thread_known = 1;
-  lwp->th = th;
-  lwp->thread_handle = ti.ti_tid;
-
-  return 1;
-}
-
-/* Attach a thread.  Return true on success.  */
-
-static int
-attach_thread (const td_thrhandle_t *th_p, td_thrinfo_t *ti_p)
-{
-  struct process_info *proc = current_process ();
-  int pid = pid_of (proc);
-  ptid_t ptid = ptid_t (pid, ti_p->ti_lid, 0);
-  struct lwp_info *lwp;
-  int err;
-
-  if (debug_threads)
-    debug_printf ("Attaching to thread %ld (LWP %d)\n",
-		  (unsigned long) ti_p->ti_tid, ti_p->ti_lid);
-  err = linux_attach_lwp (ptid);
-  if (err != 0)
-    {
-      std::string reason = linux_ptrace_attach_fail_reason_string (ptid, err);
-
-      warning ("Could not attach to thread %ld (LWP %d): %s",
-	       (unsigned long) ti_p->ti_tid, ti_p->ti_lid, reason.c_str ());
-
-      return 0;
-    }
-
-  lwp = find_lwp_pid (ptid);
-  gdb_assert (lwp != NULL);
-  lwp->thread_known = 1;
-  lwp->th = *th_p;
-  lwp->thread_handle = ti_p->ti_tid;
-
-  return 1;
-}
-
-/* Attach thread if we haven't seen it yet.
-   Increment *COUNTER if we have attached a new thread.
-   Return false on failure.  */
-
-static int
-maybe_attach_thread (const td_thrhandle_t *th_p, td_thrinfo_t *ti_p,
-		     int *counter)
-{
-  struct lwp_info *lwp;
-
-  lwp = find_lwp_pid (ptid_t (ti_p->ti_lid));
-  if (lwp != NULL)
-    return 1;
-
-  if (!attach_thread (th_p, ti_p))
-    return 0;
-
-  if (counter != NULL)
-    *counter += 1;
-
-  return 1;
-}
-
-static int
-find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
-{
-  td_thrinfo_t ti;
-  td_err_e err;
-  struct thread_db *thread_db = current_process ()->priv->thread_db;
-
-  err = thread_db->td_thr_get_info_p (th_p, &ti);
-  if (err != TD_OK)
-    error ("Cannot get thread info: %s", thread_db_err_str (err));
-
-  if (ti.ti_lid == -1)
-    {
-      /* A thread with kernel thread ID -1 is either a thread that
-	 exited and was joined, or a thread that is being created but
-	 hasn't started yet, and that is reusing the tcb/stack of a
-	 thread that previously exited and was joined.  (glibc marks
-	 terminated and joined threads with kernel thread ID -1.  See
-	 glibc PR17707.  */
-      if (debug_threads)
-	debug_printf ("thread_db: skipping exited and "
-		      "joined thread (0x%lx)\n",
-		      (unsigned long) ti.ti_tid);
-      return 0;
-    }
-
-  /* Check for zombies.  */
-  if (ti.ti_state == TD_THR_UNKNOWN || ti.ti_state == TD_THR_ZOMBIE)
-    return 0;
-
-  if (!maybe_attach_thread (th_p, &ti, (int *) data))
-    {
-      /* Terminate iteration early: we might be looking at stale data in
-	 the inferior.  The thread_db_find_new_threads will retry.  */
-      return 1;
-    }
-
-  return 0;
-}
-
-static void
-thread_db_find_new_threads (void)
-{
-  td_err_e err;
-  ptid_t ptid = current_ptid;
-  struct thread_db *thread_db = current_process ()->priv->thread_db;
-  int loop, iteration;
-
-  /* This function is only called when we first initialize thread_db.
-     First locate the initial thread.  If it is not ready for
-     debugging yet, then stop.  */
-  if (find_one_thread (ptid) == 0)
-    return;
-
-  /* Require 4 successive iterations which do not find any new threads.
-     The 4 is a heuristic: there is an inherent race here, and I have
-     seen that 2 iterations in a row are not always sufficient to
-     "capture" all threads.  */
-  for (loop = 0, iteration = 0; loop < 4; ++loop, ++iteration)
-    {
-      int new_thread_count = 0;
-
-      /* Iterate over all user-space threads to discover new threads.  */
-      err = thread_db->td_ta_thr_iter_p (thread_db->thread_agent,
-					 find_new_threads_callback,
-					 &new_thread_count,
-					 TD_THR_ANY_STATE,
-					 TD_THR_LOWEST_PRIORITY,
-					 TD_SIGNO_MASK, TD_THR_ANY_USER_FLAGS);
-      if (debug_threads)
-	debug_printf ("Found %d threads in iteration %d.\n",
-		      new_thread_count, iteration);
-
-      if (new_thread_count != 0)
-	{
-	  /* Found new threads.  Restart iteration from beginning.  */
-	  loop = -1;
-	}
-    }
-  if (err != TD_OK)
-    error ("Cannot find new threads: %s", thread_db_err_str (err));
-}
-
-/* Cache all future symbols that thread_db might request.  We can not
-   request symbols at arbitrary states in the remote protocol, only
-   when the client tells us that new symbols are available.  So when
-   we load the thread library, make sure to check the entire list.  */
-
-static void
-thread_db_look_up_symbols (void)
-{
-  struct thread_db *thread_db = current_process ()->priv->thread_db;
-  const char **sym_list;
-  CORE_ADDR unused;
-
-  for (sym_list = thread_db->td_symbol_list_p (); *sym_list; sym_list++)
-    look_up_one_symbol (*sym_list, &unused, 1);
-
-  /* We're not interested in any other libraries loaded after this
-     point, only in symbols in libpthread.so.  */
-  thread_db->all_symbols_looked_up = 1;
-}
-
-int
-thread_db_look_up_one_symbol (const char *name, CORE_ADDR *addrp)
-{
-  struct thread_db *thread_db = current_process ()->priv->thread_db;
-  int may_ask_gdb = !thread_db->all_symbols_looked_up;
-
-  /* If we've passed the call to thread_db_look_up_symbols, then
-     anything not in the cache must not exist; we're not interested
-     in any libraries loaded after that point, only in symbols in
-     libpthread.so.  It might not be an appropriate time to look
-     up a symbol, e.g. while we're trying to fetch registers.  */
-  return look_up_one_symbol (name, addrp, may_ask_gdb);
-}
-
-int
-thread_db_get_tls_address (struct thread_info *thread, CORE_ADDR offset,
-			   CORE_ADDR load_module, CORE_ADDR *address)
-{
-  psaddr_t addr;
-  td_err_e err;
-  struct lwp_info *lwp;
-  struct thread_info *saved_thread;
-  struct process_info *proc;
-  struct thread_db *thread_db;
-
-  proc = get_thread_process (thread);
-  thread_db = proc->priv->thread_db;
-
-  /* If the thread layer is not (yet) initialized, fail.  */
-  if (thread_db == NULL || !thread_db->all_symbols_looked_up)
-    return TD_ERR;
-
-  /* If td_thr_tls_get_addr is missing rather do not expect td_thr_tlsbase
-     could work.  */
-  if (thread_db->td_thr_tls_get_addr_p == NULL
-      || (load_module == 0 && thread_db->td_thr_tlsbase_p == NULL))
-    return -1;
-
-  lwp = get_thread_lwp (thread);
-  if (!lwp->thread_known)
-    find_one_thread (thread->id);
-  if (!lwp->thread_known)
-    return TD_NOTHR;
-
-  saved_thread = current_thread;
-  current_thread = thread;
-
-  if (load_module != 0)
-    {
-      /* Note the cast through uintptr_t: this interface only works if
-	 a target address fits in a psaddr_t, which is a host pointer.
-	 So a 32-bit debugger can not access 64-bit TLS through this.  */
-      err = thread_db->td_thr_tls_get_addr_p (&lwp->th,
-					     (psaddr_t) (uintptr_t) load_module,
-					      offset, &addr);
-    }
-  else
-    {
-      /* This code path handles the case of -static -pthread executables:
-	 https://sourceware.org/ml/libc-help/2014-03/msg00024.html
-	 For older GNU libc r_debug.r_map is NULL.  For GNU libc after
-	 PR libc/16831 due to GDB PR threads/16954 LOAD_MODULE is also NULL.
-	 The constant number 1 depends on GNU __libc_setup_tls
-	 initialization of l_tls_modid to 1.  */
-      err = thread_db->td_thr_tlsbase_p (&lwp->th, 1, &addr);
-      addr = (char *) addr + offset;
-    }
-
-  current_thread = saved_thread;
-  if (err == TD_OK)
-    {
-      *address = (CORE_ADDR) (uintptr_t) addr;
-      return 0;
-    }
-  else
-    return err;
-}
-
-/* See linux-low.h.  */
-
-bool
-thread_db_thread_handle (ptid_t ptid, gdb_byte **handle, int *handle_len)
-{
-  struct thread_db *thread_db;
-  struct lwp_info *lwp;
-  thread_info *thread = find_thread_ptid (ptid);
-
-  if (thread == NULL)
-    return false;
-
-  thread_db = get_thread_process (thread)->priv->thread_db;
-
-  if (thread_db == NULL)
-    return false;
-
-  lwp = get_thread_lwp (thread);
-
-  if (!lwp->thread_known && !find_one_thread (thread->id))
-    return false;
-
-  gdb_assert (lwp->thread_known);
-
-  *handle = (gdb_byte *) &lwp->thread_handle;
-  *handle_len = sizeof (lwp->thread_handle);
-  return true;
-}
-
-#ifdef USE_LIBTHREAD_DB_DIRECTLY
-
-static int
-thread_db_load_search (void)
-{
-  td_err_e err;
-  struct thread_db *tdb;
-  struct process_info *proc = current_process ();
-
-  gdb_assert (proc->priv->thread_db == NULL);
-
-  tdb = XCNEW (struct thread_db);
-  proc->priv->thread_db = tdb;
-
-  tdb->td_ta_new_p = &td_ta_new;
-
-  /* Attempt to open a connection to the thread library.  */
-  err = tdb->td_ta_new_p (&tdb->proc_handle, &tdb->thread_agent);
-  if (err != TD_OK)
-    {
-      if (debug_threads)
-	debug_printf ("td_ta_new(): %s\n", thread_db_err_str (err));
-      free (tdb);
-      proc->priv->thread_db = NULL;
-      return 0;
-    }
-
-  tdb->td_ta_map_lwp2thr_p = &td_ta_map_lwp2thr;
-  tdb->td_thr_get_info_p = &td_thr_get_info;
-  tdb->td_ta_thr_iter_p = &td_ta_thr_iter;
-  tdb->td_symbol_list_p = &td_symbol_list;
-
-  /* These are not essential.  */
-  tdb->td_thr_tls_get_addr_p = &td_thr_tls_get_addr;
-  tdb->td_thr_tlsbase_p = &td_thr_tlsbase;
-
-  return 1;
-}
-
-#else
-
-static int
-try_thread_db_load_1 (void *handle)
-{
-  td_err_e err;
-  struct thread_db *tdb;
-  struct process_info *proc = current_process ();
-
-  gdb_assert (proc->priv->thread_db == NULL);
-
-  tdb = XCNEW (struct thread_db);
-  proc->priv->thread_db = tdb;
-
-  tdb->handle = handle;
-
-  /* Initialize pointers to the dynamic library functions we will use.
-     Essential functions first.  */
-
-#define CHK(required, a)					\
-  do								\
-    {								\
-      if ((a) == NULL)						\
-	{							\
-	  if (debug_threads)					\
-	    debug_printf ("dlsym: %s\n", dlerror ());		\
-	  if (required)						\
-	    {							\
-	      free (tdb);					\
-	      proc->priv->thread_db = NULL;			\
-	      return 0;						\
-	    }							\
-	}							\
-    }								\
-  while (0)
-
-#define TDB_DLSYM(tdb, func) \
-  tdb->func ## _p = (func ## _ftype *) dlsym (tdb->handle, #func)
-
-  CHK (1, TDB_DLSYM (tdb, td_ta_new));
-
-  /* Attempt to open a connection to the thread library.  */
-  err = tdb->td_ta_new_p (&tdb->proc_handle, &tdb->thread_agent);
-  if (err != TD_OK)
-    {
-      if (debug_threads)
-	debug_printf ("td_ta_new(): %s\n", thread_db_err_str (err));
-      free (tdb);
-      proc->priv->thread_db = NULL;
-      return 0;
-    }
-
-  CHK (1, TDB_DLSYM (tdb, td_ta_map_lwp2thr));
-  CHK (1, TDB_DLSYM (tdb, td_thr_get_info));
-  CHK (1, TDB_DLSYM (tdb, td_ta_thr_iter));
-  CHK (1, TDB_DLSYM (tdb, td_symbol_list));
-
-  /* These are not essential.  */
-  CHK (0, TDB_DLSYM (tdb, td_thr_tls_get_addr));
-  CHK (0, TDB_DLSYM (tdb, td_thr_tlsbase));
-
-#undef CHK
-#undef TDB_DLSYM
-
-  return 1;
-}
-
-#ifdef HAVE_DLADDR
-
-/* Lookup a library in which given symbol resides.
-   Note: this is looking in the GDBSERVER process, not in the inferior.
-   Returns library name, or NULL.  */
-
-static const char *
-dladdr_to_soname (const void *addr)
-{
-  Dl_info info;
-
-  if (dladdr (addr, &info) != 0)
-    return info.dli_fname;
-  return NULL;
-}
-
-#endif
-
-static int
-try_thread_db_load (const char *library)
-{
-  void *handle;
-
-  if (debug_threads)
-    debug_printf ("Trying host libthread_db library: %s.\n",
-		  library);
-  handle = dlopen (library, RTLD_NOW);
-  if (handle == NULL)
-    {
-      if (debug_threads)
-	debug_printf ("dlopen failed: %s.\n", dlerror ());
-      return 0;
-    }
-
-#ifdef HAVE_DLADDR
-  if (debug_threads && strchr (library, '/') == NULL)
-    {
-      void *td_init;
-
-      td_init = dlsym (handle, "td_init");
-      if (td_init != NULL)
-	{
-	  const char *const libpath = dladdr_to_soname (td_init);
-
-	  if (libpath != NULL)
-	    debug_printf ("Host %s resolved to: %s.\n", library, libpath);
-	}
-    }
-#endif
-
-  if (try_thread_db_load_1 (handle))
-    return 1;
-
-  /* This library "refused" to work on current inferior.  */
-  dlclose (handle);
-  return 0;
-}
-
-/* Handle $sdir in libthread-db-search-path.
-   Look for libthread_db in the system dirs, or wherever a plain
-   dlopen(file_without_path) will look.
-   The result is true for success.  */
-
-static int
-try_thread_db_load_from_sdir (void)
-{
-  return try_thread_db_load (LIBTHREAD_DB_SO);
-}
-
-/* Try to load libthread_db from directory DIR of length DIR_LEN.
-   The result is true for success.  */
-
-static int
-try_thread_db_load_from_dir (const char *dir, size_t dir_len)
-{
-  char path[PATH_MAX];
-
-  if (dir_len + 1 + strlen (LIBTHREAD_DB_SO) + 1 > sizeof (path))
-    {
-      char *cp = (char *) xmalloc (dir_len + 1);
-
-      memcpy (cp, dir, dir_len);
-      cp[dir_len] = '\0';
-      warning (_("libthread-db-search-path component too long,"
-		 " ignored: %s."), cp);
-      free (cp);
-      return 0;
-    }
-
-  memcpy (path, dir, dir_len);
-  path[dir_len] = '/';
-  strcpy (path + dir_len + 1, LIBTHREAD_DB_SO);
-  return try_thread_db_load (path);
-}
-
-/* Search libthread_db_search_path for libthread_db which "agrees"
-   to work on current inferior.
-   The result is true for success.  */
-
-static int
-thread_db_load_search (void)
-{
-  int rc = 0;
-
-  if (libthread_db_search_path == NULL)
-    libthread_db_search_path = xstrdup (LIBTHREAD_DB_SEARCH_PATH);
-
-  std::vector<gdb::unique_xmalloc_ptr<char>> dir_vec
-    = dirnames_to_char_ptr_vec (libthread_db_search_path);
-
-  for (const gdb::unique_xmalloc_ptr<char> &this_dir_up : dir_vec)
-    {
-      char *this_dir = this_dir_up.get ();
-      const int pdir_len = sizeof ("$pdir") - 1;
-      size_t this_dir_len;
-
-      this_dir_len = strlen (this_dir);
-
-      if (strncmp (this_dir, "$pdir", pdir_len) == 0
-	  && (this_dir[pdir_len] == '\0'
-	      || this_dir[pdir_len] == '/'))
-	{
-	  /* We don't maintain a list of loaded libraries so we don't know
-	     where libpthread lives.  We *could* fetch the info, but we don't
-	     do that yet.  Ignore it.  */
-	}
-      else if (strcmp (this_dir, "$sdir") == 0)
-	{
-	  if (try_thread_db_load_from_sdir ())
-	    {
-	      rc = 1;
-	      break;
-	    }
-	}
-      else
-	{
-	  if (try_thread_db_load_from_dir (this_dir, this_dir_len))
-	    {
-	      rc = 1;
-	      break;
-	    }
-	}
-    }
-
-  if (debug_threads)
-    debug_printf ("thread_db_load_search returning %d\n", rc);
-  return rc;
-}
-
-#endif  /* USE_LIBTHREAD_DB_DIRECTLY */
-
-int
-thread_db_init (void)
-{
-  struct process_info *proc = current_process ();
-
-  /* FIXME drow/2004-10-16: This is the "overall process ID", which
-     GNU/Linux calls tgid, "thread group ID".  When we support
-     attaching to threads, the original thread may not be the correct
-     thread.  We would have to get the process ID from /proc for NPTL.
-
-     This isn't the only place in gdbserver that assumes that the first
-     process in the list is the thread group leader.  */
-
-  if (thread_db_load_search ())
-    {
-      /* It's best to avoid td_ta_thr_iter if possible.  That walks
-	 data structures in the inferior's address space that may be
-	 corrupted, or, if the target is running, the list may change
-	 while we walk it.  In the latter case, it's possible that a
-	 thread exits just at the exact time that causes GDBserver to
-	 get stuck in an infinite loop.  As the kernel supports clone
-	 events and /proc/PID/task/ exists, then we already know about
-	 all threads in the process.  When we need info out of
-	 thread_db on a given thread (e.g., for TLS), we'll use
-	 find_one_thread then.  That uses thread_db entry points that
-	 do not walk libpthread's thread list, so should be safe, as
-	 well as more efficient.  */
-      if (!linux_proc_task_list_dir_exists (pid_of (proc)))
-	thread_db_find_new_threads ();
-      thread_db_look_up_symbols ();
-      return 1;
-    }
-
-  return 0;
-}
-
-static void
-switch_to_process (struct process_info *proc)
-{
-  int pid = pid_of (proc);
-
-  current_thread = find_any_thread_of_pid (pid);
-}
-
-/* Disconnect from libthread_db and free resources.  */
-
-static void
-disable_thread_event_reporting (struct process_info *proc)
-{
-  struct thread_db *thread_db = proc->priv->thread_db;
-  if (thread_db)
-    {
-      td_err_e (*td_ta_clear_event_p) (const td_thragent_t *ta,
-				       td_thr_events_t *event);
-
-#ifndef USE_LIBTHREAD_DB_DIRECTLY
-      td_ta_clear_event_p
-	= (td_ta_clear_event_ftype *) dlsym (thread_db->handle,
-					     "td_ta_clear_event");
-#else
-      td_ta_clear_event_p = &td_ta_clear_event;
-#endif
-
-      if (td_ta_clear_event_p != NULL)
-	{
-	  struct thread_info *saved_thread = current_thread;
-	  td_thr_events_t events;
-
-	  switch_to_process (proc);
-
-	  /* Set the process wide mask saying we aren't interested
-	     in any events anymore.  */
-	  td_event_fillset (&events);
-	  (*td_ta_clear_event_p) (thread_db->thread_agent, &events);
-
-	  current_thread = saved_thread;
-	}
-    }
-}
-
-void
-thread_db_detach (struct process_info *proc)
-{
-  struct thread_db *thread_db = proc->priv->thread_db;
-
-  if (thread_db)
-    {
-      disable_thread_event_reporting (proc);
-    }
-}
-
-/* Disconnect from libthread_db and free resources.  */
-
-void
-thread_db_mourn (struct process_info *proc)
-{
-  struct thread_db *thread_db = proc->priv->thread_db;
-  if (thread_db)
-    {
-      td_ta_delete_ftype *td_ta_delete_p;
-
-#ifndef USE_LIBTHREAD_DB_DIRECTLY
-      td_ta_delete_p = (td_ta_delete_ftype *) dlsym (thread_db->handle, "td_ta_delete");
-#else
-      td_ta_delete_p = &td_ta_delete;
-#endif
-
-      if (td_ta_delete_p != NULL)
-	(*td_ta_delete_p) (thread_db->thread_agent);
-
-#ifndef USE_LIBTHREAD_DB_DIRECTLY
-      dlclose (thread_db->handle);
-#endif  /* USE_LIBTHREAD_DB_DIRECTLY  */
-
-      free (thread_db);
-      proc->priv->thread_db = NULL;
-    }
-}
-
-/* Handle "set libthread-db-search-path" monitor command and return 1.
-   For any other command, return 0.  */
-
-int
-thread_db_handle_monitor_command (char *mon)
-{
-  const char *cmd = "set libthread-db-search-path";
-  size_t cmd_len = strlen (cmd);
-
-  if (strncmp (mon, cmd, cmd_len) == 0
-      && (mon[cmd_len] == '\0'
-	  || mon[cmd_len] == ' '))
-    {
-      const char *cp = mon + cmd_len;
-
-      if (libthread_db_search_path != NULL)
-	free (libthread_db_search_path);
-
-      /* Skip leading space (if any).  */
-      while (isspace (*cp))
-	++cp;
-
-      if (*cp == '\0')
-	cp = LIBTHREAD_DB_SEARCH_PATH;
-      libthread_db_search_path = xstrdup (cp);
-
-      monitor_output ("libthread-db-search-path set to `");
-      monitor_output (libthread_db_search_path);
-      monitor_output ("'\n");
-      return 1;
-    }
-
-  /* Tell server.c to perform default processing.  */
-  return 0;
-}
-
-/* See linux-low.h.  */
-
-void
-thread_db_notice_clone (struct thread_info *parent_thr, ptid_t child_ptid)
-{
-  process_info *parent_proc = get_thread_process (parent_thr);
-  struct thread_db *thread_db = parent_proc->priv->thread_db;
-
-  /* If the thread layer isn't initialized, return.  It may just
-     be that the program uses clone, but does not use libthread_db.  */
-  if (thread_db == NULL || !thread_db->all_symbols_looked_up)
-    return;
-
-  /* find_one_thread calls into libthread_db which accesses memory via
-     the current thread.  Temporarily switch to a thread we know is
-     stopped.  */
-  scoped_restore restore_current_thread
-    = make_scoped_restore (&current_thread, parent_thr);
-
-  if (!find_one_thread (child_ptid))
-    warning ("Cannot find thread after clone.");
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/tracepoint.c ./gdb/gdbserver/tracepoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/tracepoint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/tracepoint.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,7453 +0,0 @@
-/* Tracepoint code for remote server for GDB.
-   Copyright (C) 2009-2020 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 "server.h"
-#include "tracepoint.h"
-#include "gdbthread.h"
-#include "gdbsupport/rsp-low.h"
-
-#include <ctype.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <chrono>
-#include <inttypes.h>
-#include "ax.h"
-#include "tdesc.h"
-
-#define IPA_SYM_STRUCT_NAME ipa_sym_addresses
-#include "gdbsupport/agent.h"
-
-#define DEFAULT_TRACE_BUFFER_SIZE 5242880 /* 5*1024*1024 */
-
-/* This file is built for both GDBserver, and the in-process
-   agent (IPA), a shared library that includes a tracing agent that is
-   loaded by the inferior to support fast tracepoints.  Fast
-   tracepoints (or more accurately, jump based tracepoints) are
-   implemented by patching the tracepoint location with a jump into a
-   small trampoline function whose job is to save the register state,
-   call the in-process tracing agent, and then execute the original
-   instruction that was under the tracepoint jump (possibly adjusted,
-   if PC-relative, or some such).
-
-   The current synchronization design is pull based.  That means,
-   GDBserver does most of the work, by peeking/poking at the inferior
-   agent's memory directly for downloading tracepoint and associated
-   objects, and for uploading trace frames.  Whenever the IPA needs
-   something from GDBserver (trace buffer is full, tracing stopped for
-   some reason, etc.) the IPA calls a corresponding hook function
-   where GDBserver has placed a breakpoint.
-
-   Each of the agents has its own trace buffer.  When browsing the
-   trace frames built from slow and fast tracepoints from GDB (tfind
-   mode), there's no guarantee the user is seeing the trace frames in
-   strict chronological creation order, although, GDBserver tries to
-   keep the order relatively reasonable, by syncing the trace buffers
-   at appropriate times.
-
-*/
-
-#ifdef IN_PROCESS_AGENT
-
-static void trace_vdebug (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
-
-static void
-trace_vdebug (const char *fmt, ...)
-{
-  char buf[1024];
-  va_list ap;
-
-  va_start (ap, fmt);
-  vsprintf (buf, fmt, ap);
-  fprintf (stderr, PROG "/tracepoint: %s\n", buf);
-  va_end (ap);
-}
-
-#define trace_debug_1(level, fmt, args...)	\
-  do {						\
-    if (level <= debug_threads)		\
-      trace_vdebug ((fmt), ##args);		\
-  } while (0)
-
-#else
-
-#define trace_debug_1(level, fmt, args...)	\
-  do {						\
-    if (level <= debug_threads)			\
-      {						\
-	debug_printf ((fmt), ##args);		\
-	debug_printf ("\n");			\
-      }						\
-  } while (0)
-
-#endif
-
-#define trace_debug(FMT, args...)		\
-  trace_debug_1 (1, FMT, ##args)
-
-/* Prefix exported symbols, for good citizenship.  All the symbols
-   that need exporting are defined in this module.  Note that all
-   these symbols must be tagged with IP_AGENT_EXPORT_*.  */
-#ifdef IN_PROCESS_AGENT
-# define gdb_tp_heap_buffer IPA_SYM_EXPORTED_NAME (gdb_tp_heap_buffer)
-# define gdb_jump_pad_buffer IPA_SYM_EXPORTED_NAME (gdb_jump_pad_buffer)
-# define gdb_jump_pad_buffer_end IPA_SYM_EXPORTED_NAME (gdb_jump_pad_buffer_end)
-# define gdb_trampoline_buffer IPA_SYM_EXPORTED_NAME (gdb_trampoline_buffer)
-# define gdb_trampoline_buffer_end IPA_SYM_EXPORTED_NAME (gdb_trampoline_buffer_end)
-# define gdb_trampoline_buffer_error IPA_SYM_EXPORTED_NAME (gdb_trampoline_buffer_error)
-# define collecting IPA_SYM_EXPORTED_NAME (collecting)
-# define gdb_collect_ptr IPA_SYM_EXPORTED_NAME (gdb_collect_ptr)
-# define stop_tracing IPA_SYM_EXPORTED_NAME (stop_tracing)
-# define flush_trace_buffer IPA_SYM_EXPORTED_NAME (flush_trace_buffer)
-# define about_to_request_buffer_space IPA_SYM_EXPORTED_NAME (about_to_request_buffer_space)
-# define trace_buffer_is_full IPA_SYM_EXPORTED_NAME (trace_buffer_is_full)
-# define stopping_tracepoint IPA_SYM_EXPORTED_NAME (stopping_tracepoint)
-# define expr_eval_result IPA_SYM_EXPORTED_NAME (expr_eval_result)
-# define error_tracepoint IPA_SYM_EXPORTED_NAME (error_tracepoint)
-# define tracepoints IPA_SYM_EXPORTED_NAME (tracepoints)
-# define tracing IPA_SYM_EXPORTED_NAME (tracing)
-# define trace_buffer_ctrl IPA_SYM_EXPORTED_NAME (trace_buffer_ctrl)
-# define trace_buffer_ctrl_curr IPA_SYM_EXPORTED_NAME (trace_buffer_ctrl_curr)
-# define trace_buffer_lo IPA_SYM_EXPORTED_NAME (trace_buffer_lo)
-# define trace_buffer_hi IPA_SYM_EXPORTED_NAME (trace_buffer_hi)
-# define traceframe_read_count IPA_SYM_EXPORTED_NAME (traceframe_read_count)
-# define traceframe_write_count IPA_SYM_EXPORTED_NAME (traceframe_write_count)
-# define traceframes_created IPA_SYM_EXPORTED_NAME (traceframes_created)
-# define trace_state_variables IPA_SYM_EXPORTED_NAME (trace_state_variables)
-# define get_raw_reg_ptr IPA_SYM_EXPORTED_NAME (get_raw_reg_ptr)
-# define get_trace_state_variable_value_ptr \
-  IPA_SYM_EXPORTED_NAME (get_trace_state_variable_value_ptr)
-# define set_trace_state_variable_value_ptr \
-  IPA_SYM_EXPORTED_NAME (set_trace_state_variable_value_ptr)
-# define ust_loaded IPA_SYM_EXPORTED_NAME (ust_loaded)
-# define helper_thread_id IPA_SYM_EXPORTED_NAME (helper_thread_id)
-# define cmd_buf IPA_SYM_EXPORTED_NAME (cmd_buf)
-# define ipa_tdesc_idx IPA_SYM_EXPORTED_NAME (ipa_tdesc_idx)
-#endif
-
-#ifndef IN_PROCESS_AGENT
-
-/* Addresses of in-process agent's symbols GDBserver cares about.  */
-
-struct ipa_sym_addresses
-{
-  CORE_ADDR addr_gdb_tp_heap_buffer;
-  CORE_ADDR addr_gdb_jump_pad_buffer;
-  CORE_ADDR addr_gdb_jump_pad_buffer_end;
-  CORE_ADDR addr_gdb_trampoline_buffer;
-  CORE_ADDR addr_gdb_trampoline_buffer_end;
-  CORE_ADDR addr_gdb_trampoline_buffer_error;
-  CORE_ADDR addr_collecting;
-  CORE_ADDR addr_gdb_collect_ptr;
-  CORE_ADDR addr_stop_tracing;
-  CORE_ADDR addr_flush_trace_buffer;
-  CORE_ADDR addr_about_to_request_buffer_space;
-  CORE_ADDR addr_trace_buffer_is_full;
-  CORE_ADDR addr_stopping_tracepoint;
-  CORE_ADDR addr_expr_eval_result;
-  CORE_ADDR addr_error_tracepoint;
-  CORE_ADDR addr_tracepoints;
-  CORE_ADDR addr_tracing;
-  CORE_ADDR addr_trace_buffer_ctrl;
-  CORE_ADDR addr_trace_buffer_ctrl_curr;
-  CORE_ADDR addr_trace_buffer_lo;
-  CORE_ADDR addr_trace_buffer_hi;
-  CORE_ADDR addr_traceframe_read_count;
-  CORE_ADDR addr_traceframe_write_count;
-  CORE_ADDR addr_traceframes_created;
-  CORE_ADDR addr_trace_state_variables;
-  CORE_ADDR addr_get_raw_reg_ptr;
-  CORE_ADDR addr_get_trace_state_variable_value_ptr;
-  CORE_ADDR addr_set_trace_state_variable_value_ptr;
-  CORE_ADDR addr_ust_loaded;
-  CORE_ADDR addr_ipa_tdesc_idx;
-};
-
-static struct
-{
-  const char *name;
-  int offset;
-} symbol_list[] = {
-  IPA_SYM(gdb_tp_heap_buffer),
-  IPA_SYM(gdb_jump_pad_buffer),
-  IPA_SYM(gdb_jump_pad_buffer_end),
-  IPA_SYM(gdb_trampoline_buffer),
-  IPA_SYM(gdb_trampoline_buffer_end),
-  IPA_SYM(gdb_trampoline_buffer_error),
-  IPA_SYM(collecting),
-  IPA_SYM(gdb_collect_ptr),
-  IPA_SYM(stop_tracing),
-  IPA_SYM(flush_trace_buffer),
-  IPA_SYM(about_to_request_buffer_space),
-  IPA_SYM(trace_buffer_is_full),
-  IPA_SYM(stopping_tracepoint),
-  IPA_SYM(expr_eval_result),
-  IPA_SYM(error_tracepoint),
-  IPA_SYM(tracepoints),
-  IPA_SYM(tracing),
-  IPA_SYM(trace_buffer_ctrl),
-  IPA_SYM(trace_buffer_ctrl_curr),
-  IPA_SYM(trace_buffer_lo),
-  IPA_SYM(trace_buffer_hi),
-  IPA_SYM(traceframe_read_count),
-  IPA_SYM(traceframe_write_count),
-  IPA_SYM(traceframes_created),
-  IPA_SYM(trace_state_variables),
-  IPA_SYM(get_raw_reg_ptr),
-  IPA_SYM(get_trace_state_variable_value_ptr),
-  IPA_SYM(set_trace_state_variable_value_ptr),
-  IPA_SYM(ust_loaded),
-  IPA_SYM(ipa_tdesc_idx),
-};
-
-static struct ipa_sym_addresses ipa_sym_addrs;
-
-static int read_inferior_integer (CORE_ADDR symaddr, int *val);
-
-/* Returns true if both the in-process agent library and the static
-   tracepoints libraries are loaded in the inferior, and agent has
-   capability on static tracepoints.  */
-
-static int
-in_process_agent_supports_ust (void)
-{
-  int loaded = 0;
-
-  if (!agent_loaded_p ())
-    {
-      warning ("In-process agent not loaded");
-      return 0;
-    }
-
-  if (agent_capability_check (AGENT_CAPA_STATIC_TRACE))
-    {
-      /* Agent understands static tracepoint, then check whether UST is in
-	 fact loaded in the inferior.  */
-      if (read_inferior_integer (ipa_sym_addrs.addr_ust_loaded, &loaded))
-	{
-	  warning ("Error reading ust_loaded in lib");
-	  return 0;
-	}
-
-      return loaded;
-    }
-  else
-    return 0;
-}
-
-static void
-write_e_ipa_not_loaded (char *buffer)
-{
-  sprintf (buffer,
-	   "E.In-process agent library not loaded in process.  "
-	   "Fast and static tracepoints unavailable.");
-}
-
-/* Write an error to BUFFER indicating that UST isn't loaded in the
-   inferior.  */
-
-static void
-write_e_ust_not_loaded (char *buffer)
-{
-#ifdef HAVE_UST
-  sprintf (buffer,
-	   "E.UST library not loaded in process.  "
-	   "Static tracepoints unavailable.");
-#else
-  sprintf (buffer, "E.GDBserver was built without static tracepoints support");
-#endif
-}
-
-/* If the in-process agent library isn't loaded in the inferior, write
-   an error to BUFFER, and return 1.  Otherwise, return 0.  */
-
-static int
-maybe_write_ipa_not_loaded (char *buffer)
-{
-  if (!agent_loaded_p ())
-    {
-      write_e_ipa_not_loaded (buffer);
-      return 1;
-    }
-  return 0;
-}
-
-/* If the in-process agent library and the ust (static tracepoints)
-   library aren't loaded in the inferior, write an error to BUFFER,
-   and return 1.  Otherwise, return 0.  */
-
-static int
-maybe_write_ipa_ust_not_loaded (char *buffer)
-{
-  if (!agent_loaded_p ())
-    {
-      write_e_ipa_not_loaded (buffer);
-      return 1;
-    }
-  else if (!in_process_agent_supports_ust ())
-    {
-      write_e_ust_not_loaded (buffer);
-      return 1;
-    }
-  return 0;
-}
-
-/* Cache all future symbols that the tracepoints module might request.
-   We can not request symbols at arbitrary states in the remote
-   protocol, only when the client tells us that new symbols are
-   available.  So when we load the in-process library, make sure to
-   check the entire list.  */
-
-void
-tracepoint_look_up_symbols (void)
-{
-  int i;
-
-  if (agent_loaded_p ())
-    return;
-
-  for (i = 0; i < sizeof (symbol_list) / sizeof (symbol_list[0]); i++)
-    {
-      CORE_ADDR *addrp =
-	(CORE_ADDR *) ((char *) &ipa_sym_addrs + symbol_list[i].offset);
-
-      if (look_up_one_symbol (symbol_list[i].name, addrp, 1) == 0)
-	{
-	  if (debug_threads)
-	    debug_printf ("symbol `%s' not found\n", symbol_list[i].name);
-	  return;
-	}
-    }
-
-  agent_look_up_symbols (NULL);
-}
-
-#endif
-
-/* GDBserver places a breakpoint on the IPA's version (which is a nop)
-   of the "stop_tracing" function.  When this breakpoint is hit,
-   tracing stopped in the IPA for some reason.  E.g., due to
-   tracepoint reaching the pass count, hitting conditional expression
-   evaluation error, etc.
-
-   The IPA's trace buffer is never in circular tracing mode: instead,
-   GDBserver's is, and whenever the in-process buffer fills, it calls
-   "flush_trace_buffer", which triggers an internal breakpoint.
-   GDBserver reacts to this breakpoint by pulling the meanwhile
-   collected data.  Old frames discarding is always handled on the
-   GDBserver side.  */
-
-#ifdef IN_PROCESS_AGENT
-int
-read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  memcpy (myaddr, (void *) (uintptr_t) memaddr, len);
-  return 0;
-}
-
-/* Call this in the functions where GDBserver places a breakpoint, so
-   that the compiler doesn't try to be clever and skip calling the
-   function at all.  This is necessary, even if we tell the compiler
-   to not inline said functions.  */
-
-#if defined(__GNUC__)
-#  define UNKNOWN_SIDE_EFFECTS() asm ("")
-#else
-#  define UNKNOWN_SIDE_EFFECTS() do {} while (0)
-#endif
-
-IP_AGENT_EXPORT_FUNC void
-stop_tracing (void)
-{
-  /* GDBserver places breakpoint here.  */
-  UNKNOWN_SIDE_EFFECTS();
-}
-
-IP_AGENT_EXPORT_FUNC void
-flush_trace_buffer (void)
-{
-  /* GDBserver places breakpoint here.  */
-  UNKNOWN_SIDE_EFFECTS();
-}
-
-#endif
-
-#ifndef IN_PROCESS_AGENT
-static int
-tracepoint_handler (CORE_ADDR address)
-{
-  trace_debug ("tracepoint_handler: tracepoint at 0x%s hit",
-	       paddress (address));
-  return 0;
-}
-
-/* Breakpoint at "stop_tracing" in the inferior lib.  */
-struct breakpoint *stop_tracing_bkpt;
-static int stop_tracing_handler (CORE_ADDR);
-
-/* Breakpoint at "flush_trace_buffer" in the inferior lib.  */
-struct breakpoint *flush_trace_buffer_bkpt;
-static int flush_trace_buffer_handler (CORE_ADDR);
-
-static void download_trace_state_variables (void);
-static void upload_fast_traceframes (void);
-
-static int run_inferior_command (char *cmd, int len);
-
-static int
-read_inferior_integer (CORE_ADDR symaddr, int *val)
-{
-  return read_inferior_memory (symaddr, (unsigned char *) val,
-			       sizeof (*val));
-}
-
-struct tracepoint;
-static int tracepoint_send_agent (struct tracepoint *tpoint);
-
-static int
-read_inferior_uinteger (CORE_ADDR symaddr, unsigned int *val)
-{
-  return read_inferior_memory (symaddr, (unsigned char *) val,
-			       sizeof (*val));
-}
-
-static int
-read_inferior_data_pointer (CORE_ADDR symaddr, CORE_ADDR *val)
-{
-  void *pval = (void *) (uintptr_t) val;
-  int ret;
-
-  ret = read_inferior_memory (symaddr, (unsigned char *) &pval, sizeof (pval));
-  *val = (uintptr_t) pval;
-  return ret;
-}
-
-static int
-write_inferior_data_pointer (CORE_ADDR symaddr, CORE_ADDR val)
-{
-  void *pval = (void *) (uintptr_t) val;
-  return target_write_memory (symaddr,
-				(unsigned char *) &pval, sizeof (pval));
-}
-
-static int
-write_inferior_integer (CORE_ADDR symaddr, int val)
-{
-  return target_write_memory (symaddr, (unsigned char *) &val, sizeof (val));
-}
-
-static int
-write_inferior_int8 (CORE_ADDR symaddr, int8_t val)
-{
-  return target_write_memory (symaddr, (unsigned char *) &val, sizeof (val));
-}
-
-static int
-write_inferior_uinteger (CORE_ADDR symaddr, unsigned int val)
-{
-  return target_write_memory (symaddr, (unsigned char *) &val, sizeof (val));
-}
-
-static CORE_ADDR target_malloc (ULONGEST size);
-
-#define COPY_FIELD_TO_BUF(BUF, OBJ, FIELD)	\
-  do {							\
-    memcpy (BUF, &(OBJ)->FIELD, sizeof ((OBJ)->FIELD)); \
-    BUF += sizeof ((OBJ)->FIELD);			\
-  } while (0)
-
-#endif
-
-/* Base action.  Concrete actions inherit this.  */
-
-struct tracepoint_action
-{
-  char type;
-};
-
-/* An 'M' (collect memory) action.  */
-struct collect_memory_action
-{
-  struct tracepoint_action base;
-
-  ULONGEST addr;
-  ULONGEST len;
-  int32_t basereg;
-};
-
-/* An 'R' (collect registers) action.  */
-
-struct collect_registers_action
-{
-  struct tracepoint_action base;
-};
-
-/* An 'X' (evaluate expression) action.  */
-
-struct eval_expr_action
-{
-  struct tracepoint_action base;
-
-  struct agent_expr *expr;
-};
-
-/* An 'L' (collect static trace data) action.  */
-struct collect_static_trace_data_action
-{
-  struct tracepoint_action base;
-};
-
-#ifndef IN_PROCESS_AGENT
-static CORE_ADDR
-m_tracepoint_action_download (const struct tracepoint_action *action)
-{
-  CORE_ADDR ipa_action = target_malloc (sizeof (struct collect_memory_action));
-
-  target_write_memory (ipa_action, (unsigned char *) action,
-			 sizeof (struct collect_memory_action));
-
-  return ipa_action;
-}
-static char *
-m_tracepoint_action_send (char *buffer, const struct tracepoint_action *action)
-{
-  struct collect_memory_action *maction
-    = (struct collect_memory_action *) action;
-
-  COPY_FIELD_TO_BUF (buffer, maction, addr);
-  COPY_FIELD_TO_BUF (buffer, maction, len);
-  COPY_FIELD_TO_BUF (buffer, maction, basereg);
-
-  return buffer;
-}
-
-static CORE_ADDR
-r_tracepoint_action_download (const struct tracepoint_action *action)
-{
-  CORE_ADDR ipa_action = target_malloc (sizeof (struct collect_registers_action));
-
-  target_write_memory (ipa_action, (unsigned char *) action,
-			 sizeof (struct collect_registers_action));
-
-  return ipa_action;
-}
-
-static char *
-r_tracepoint_action_send (char *buffer, const struct tracepoint_action *action)
-{
-  return buffer;
-}
-
-static CORE_ADDR download_agent_expr (struct agent_expr *expr);
-
-static CORE_ADDR
-x_tracepoint_action_download (const struct tracepoint_action *action)
-{
-  CORE_ADDR ipa_action = target_malloc (sizeof (struct eval_expr_action));
-  CORE_ADDR expr;
-
-  target_write_memory (ipa_action, (unsigned char *) action,
-			 sizeof (struct eval_expr_action));
-  expr = download_agent_expr (((struct eval_expr_action *) action)->expr);
-  write_inferior_data_pointer (ipa_action
-			       + offsetof (struct eval_expr_action, expr),
-			       expr);
-
-  return ipa_action;
-}
-
-/* Copy agent expression AEXPR to buffer pointed by P.  If AEXPR is NULL,
-   copy 0 to P.  Return updated header of buffer.  */
-
-static char *
-agent_expr_send (char *p, const struct agent_expr *aexpr)
-{
-  /* Copy the length of condition first, and then copy its
-     content.  */
-  if (aexpr == NULL)
-    {
-      memset (p, 0, 4);
-      p += 4;
-    }
-  else
-    {
-      memcpy (p, &aexpr->length, 4);
-      p +=4;
-
-      memcpy (p, aexpr->bytes, aexpr->length);
-      p += aexpr->length;
-    }
-  return p;
-}
-
-static char *
-x_tracepoint_action_send ( char *buffer, const struct tracepoint_action *action)
-{
-  struct eval_expr_action *eaction = (struct eval_expr_action *) action;
-
-  return agent_expr_send (buffer, eaction->expr);
-}
-
-static CORE_ADDR
-l_tracepoint_action_download (const struct tracepoint_action *action)
-{
-  CORE_ADDR ipa_action
-    = target_malloc (sizeof (struct collect_static_trace_data_action));
-
-  target_write_memory (ipa_action, (unsigned char *) action,
-			 sizeof (struct collect_static_trace_data_action));
-
-  return ipa_action;
-}
-
-static char *
-l_tracepoint_action_send (char *buffer, const struct tracepoint_action *action)
-{
-  return buffer;
-}
-
-static char *
-tracepoint_action_send (char *buffer, const struct tracepoint_action *action)
-{
-  switch (action->type)
-    {
-    case 'M':
-      return m_tracepoint_action_send (buffer, action);
-    case 'R':
-      return r_tracepoint_action_send (buffer, action);
-    case 'X':
-      return x_tracepoint_action_send (buffer, action);
-    case 'L':
-      return l_tracepoint_action_send (buffer, action);
-    }
-  error ("Unknown trace action '%c'.", action->type);
-}
-
-static CORE_ADDR
-tracepoint_action_download (const struct tracepoint_action *action)
-{
-  switch (action->type)
-    {
-    case 'M':
-      return m_tracepoint_action_download (action);
-    case 'R':
-      return r_tracepoint_action_download (action);
-    case 'X':
-      return x_tracepoint_action_download (action);
-    case 'L':
-      return l_tracepoint_action_download (action);
-    }
-  error ("Unknown trace action '%c'.", action->type);
-}
-#endif
-
-/* This structure describes a piece of the source-level definition of
-   the tracepoint.  The contents are not interpreted by the target,
-   but preserved verbatim for uploading upon reconnection.  */
-
-struct source_string
-{
-  /* The type of string, such as "cond" for a conditional.  */
-  char *type;
-
-  /* The source-level string itself.  For the sake of target
-     debugging, we store it in plaintext, even though it is always
-     transmitted in hex.  */
-  char *str;
-
-  /* Link to the next one in the list.  We link them in the order
-     received, in case some make up an ordered list of commands or
-     some such.  */
-  struct source_string *next;
-};
-
-enum tracepoint_type
-{
-  /* Trap based tracepoint.  */
-  trap_tracepoint,
-
-  /* A fast tracepoint implemented with a jump instead of a trap.  */
-  fast_tracepoint,
-
-  /* A static tracepoint, implemented by a program call into a tracing
-     library.  */
-  static_tracepoint
-};
-
-struct tracepoint_hit_ctx;
-
-typedef enum eval_result_type (*condfn) (unsigned char *,
-					 ULONGEST *);
-
-/* The definition of a tracepoint.  */
-
-/* Tracepoints may have multiple locations, each at a different
-   address.  This can occur with optimizations, template
-   instantiation, etc.  Since the locations may be in different
-   scopes, the conditions and actions may be different for each
-   location.  Our target version of tracepoints is more like GDB's
-   notion of "breakpoint locations", but we have almost nothing that
-   is not per-location, so we bother having two kinds of objects.  The
-   key consequence is that numbers are not unique, and that it takes
-   both number and address to identify a tracepoint uniquely.  */
-
-struct tracepoint
-{
-  /* The number of the tracepoint, as specified by GDB.  Several
-     tracepoint objects here may share a number.  */
-  uint32_t number;
-
-  /* Address at which the tracepoint is supposed to trigger.  Several
-     tracepoints may share an address.  */
-  CORE_ADDR address;
-
-  /* Tracepoint type.  */
-  enum tracepoint_type type;
-
-  /* True if the tracepoint is currently enabled.  */
-  int8_t enabled;
-
-  /* The number of single steps that will be performed after each
-     tracepoint hit.  */
-  uint64_t step_count;
-
-  /* The number of times the tracepoint may be hit before it will
-     terminate the entire tracing run.  */
-  uint64_t pass_count;
-
-  /* Pointer to the agent expression that is the tracepoint's
-     conditional, or NULL if the tracepoint is unconditional.  */
-  struct agent_expr *cond;
-
-  /* The list of actions to take when the tracepoint triggers.  */
-  uint32_t numactions;
-  struct tracepoint_action **actions;
-
-  /* Count of the times we've hit this tracepoint during the run.
-     Note that while-stepping steps are not counted as "hits".  */
-  uint64_t hit_count;
-
-  /* Cached sum of the sizes of traceframes created by this point.  */
-  uint64_t traceframe_usage;
-
-  CORE_ADDR compiled_cond;
-
-  /* Link to the next tracepoint in the list.  */
-  struct tracepoint *next;
-
-#ifndef IN_PROCESS_AGENT
-  /* The list of actions to take when the tracepoint triggers, in
-     string/packet form.  */
-  char **actions_str;
-
-  /* The collection of strings that describe the tracepoint as it was
-     entered into GDB.  These are not used by the target, but are
-     reported back to GDB upon reconnection.  */
-  struct source_string *source_strings;
-
-  /* The number of bytes displaced by fast tracepoints. It may subsume
-     multiple instructions, for multi-byte fast tracepoints.  This
-     field is only valid for fast tracepoints.  */
-  uint32_t orig_size;
-
-  /* Only for fast tracepoints.  */
-  CORE_ADDR obj_addr_on_target;
-
-  /* Address range where the original instruction under a fast
-     tracepoint was relocated to.  (_end is actually one byte past
-     the end).  */
-  CORE_ADDR adjusted_insn_addr;
-  CORE_ADDR adjusted_insn_addr_end;
-
-  /* The address range of the piece of the jump pad buffer that was
-     assigned to this fast tracepoint.  (_end is actually one byte
-     past the end).*/
-  CORE_ADDR jump_pad;
-  CORE_ADDR jump_pad_end;
-
-  /* The address range of the piece of the trampoline buffer that was
-     assigned to this fast tracepoint.  (_end is actually one byte
-     past the end).  */
-  CORE_ADDR trampoline;
-  CORE_ADDR trampoline_end;
-
-  /* The list of actions to take while in a stepping loop.  These
-     fields are only valid for patch-based tracepoints.  */
-  int num_step_actions;
-  struct tracepoint_action **step_actions;
-  /* Same, but in string/packet form.  */
-  char **step_actions_str;
-
-  /* Handle returned by the breakpoint or tracepoint module when we
-     inserted the trap or jump, or hooked into a static tracepoint.
-     NULL if we haven't inserted it yet.  */
-  void *handle;
-#endif
-
-};
-
-#ifndef IN_PROCESS_AGENT
-
-/* Given `while-stepping', a thread may be collecting data for more
-   than one tracepoint simultaneously.  On the other hand, the same
-   tracepoint with a while-stepping action may be hit by more than one
-   thread simultaneously (but not quite, each thread could be handling
-   a different step).  Each thread holds a list of these objects,
-   representing the current step of each while-stepping action being
-   collected.  */
-
-struct wstep_state
-{
-  struct wstep_state *next;
-
-  /* The tracepoint number.  */
-  int tp_number;
-  /* The tracepoint's address.  */
-  CORE_ADDR tp_address;
-
-  /* The number of the current step in this 'while-stepping'
-     action.  */
-  long current_step;
-};
-
-#endif
-
-EXTERN_C_PUSH
-
-/* The linked list of all tracepoints.  Marked explicitly as used as
-   the in-process library doesn't use it for the fast tracepoints
-   support.  */
-IP_AGENT_EXPORT_VAR struct tracepoint *tracepoints;
-
-/* The first tracepoint to exceed its pass count.  */
-
-IP_AGENT_EXPORT_VAR struct tracepoint *stopping_tracepoint;
-
-/* True if the trace buffer is full or otherwise no longer usable.  */
-
-IP_AGENT_EXPORT_VAR int trace_buffer_is_full;
-
-/* The first error that occurred during expression evaluation.  */
-
-/* Stored as an int to avoid the IPA ABI being dependent on whatever
-   the compiler decides to use for the enum's underlying type.  Holds
-   enum eval_result_type values.  */
-IP_AGENT_EXPORT_VAR int expr_eval_result = expr_eval_no_error;
-
-EXTERN_C_POP
-
-#ifndef IN_PROCESS_AGENT
-
-/* Pointer to the last tracepoint in the list, new tracepoints are
-   linked in at the end.  */
-
-static struct tracepoint *last_tracepoint;
-
-static const char *eval_result_names[] =
-  {
-    "terror:in the attic",  /* this should never be reported */
-    "terror:empty expression",
-    "terror:empty stack",
-    "terror:stack overflow",
-    "terror:stack underflow",
-    "terror:unhandled opcode",
-    "terror:unrecognized opcode",
-    "terror:divide by zero"
-  };
-
-#endif
-
-/* The tracepoint in which the error occurred.  */
-
-EXTERN_C_PUSH
-IP_AGENT_EXPORT_VAR struct tracepoint *error_tracepoint;
-EXTERN_C_POP
-
-struct trace_state_variable
-{
-  /* This is the name of the variable as used in GDB.  The target
-     doesn't use the name, but needs to have it for saving and
-     reconnection purposes.  */
-  char *name;
-
-  /* This number identifies the variable uniquely.  Numbers may be
-     assigned either by the target (in the case of builtin variables),
-     or by GDB, and are presumed unique during the course of a trace
-     experiment.  */
-  int number;
-
-  /* The variable's initial value, a 64-bit signed integer always.  */
-  LONGEST initial_value;
-
-  /* The variable's value, a 64-bit signed integer always.  */
-  LONGEST value;
-
-  /* Pointer to a getter function, used to supply computed values.  */
-  LONGEST (*getter) (void);
-
-  /* Link to the next variable.  */
-  struct trace_state_variable *next;
-};
-
-/* Linked list of all trace state variables.  */
-
-#ifdef IN_PROCESS_AGENT
-struct trace_state_variable *alloced_trace_state_variables;
-#endif
-
-IP_AGENT_EXPORT_VAR struct trace_state_variable *trace_state_variables;
-
-/* The results of tracing go into a fixed-size space known as the
-   "trace buffer".  Because usage follows a limited number of
-   patterns, we manage it ourselves rather than with malloc.  Basic
-   rules are that we create only one trace frame at a time, each is
-   variable in size, they are never moved once created, and we only
-   discard if we are doing a circular buffer, and then only the oldest
-   ones.  Each trace frame includes its own size, so we don't need to
-   link them together, and the trace frame number is relative to the
-   first one, so we don't need to record numbers.  A trace frame also
-   records the number of the tracepoint that created it.  The data
-   itself is a series of blocks, each introduced by a single character
-   and with a defined format.  Each type of block has enough
-   type/length info to allow scanners to jump quickly from one block
-   to the next without reading each byte in the block.  */
-
-/* Trace buffer management would be simple - advance a free pointer
-   from beginning to end, then stop - were it not for the circular
-   buffer option, which is a useful way to prevent a trace run from
-   stopping prematurely because the buffer filled up.  In the circular
-   case, the location of the first trace frame (trace_buffer_start)
-   moves as old trace frames are discarded.  Also, since we grow trace
-   frames incrementally as actions are performed, we wrap around to
-   the beginning of the trace buffer.  This is per-block, so each
-   block within a trace frame remains contiguous.  Things get messy
-   when the wrapped-around trace frame is the one being discarded; the
-   free space ends up in two parts at opposite ends of the buffer.  */
-
-#ifndef ATTR_PACKED
-#  if defined(__GNUC__)
-#    define ATTR_PACKED __attribute__ ((packed))
-#  else
-#    define ATTR_PACKED /* nothing */
-#  endif
-#endif
-
-/* The data collected at a tracepoint hit.  This object should be as
-   small as possible, since there may be a great many of them.  We do
-   not need to keep a frame number, because they are all sequential
-   and there are no deletions; so the Nth frame in the buffer is
-   always frame number N.  */
-
-struct traceframe
-{
-  /* Number of the tracepoint that collected this traceframe.  A value
-     of 0 indicates the current end of the trace buffer.  We make this
-     a 16-bit field because it's never going to happen that GDB's
-     numbering of tracepoints reaches 32,000.  */
-  int tpnum : 16;
-
-  /* The size of the data in this trace frame.  We limit this to 32
-     bits, even on a 64-bit target, because it's just implausible that
-     one is validly going to collect 4 gigabytes of data at a single
-     tracepoint hit.  */
-  unsigned int data_size : 32;
-
-  /* The base of the trace data, which is contiguous from this point.  */
-  unsigned char data[0];
-
-} ATTR_PACKED;
-
-/* The size of the EOB marker, in bytes.  A traceframe with zeroed
-   fields (and no data) marks the end of trace data.  */
-#define TRACEFRAME_EOB_MARKER_SIZE offsetof (struct traceframe, data)
-
-/* This flag is true if the trace buffer is circular, meaning that
-   when it fills, the oldest trace frames are discarded in order to
-   make room.  */
-
-#ifndef IN_PROCESS_AGENT
-static int circular_trace_buffer;
-#endif
-
-/* Size of the trace buffer.  */
-
-static LONGEST trace_buffer_size;
-
-EXTERN_C_PUSH
-
-/* Pointer to the block of memory that traceframes all go into.  */
-
-IP_AGENT_EXPORT_VAR unsigned char *trace_buffer_lo;
-
-/* Pointer to the end of the trace buffer, more precisely to the byte
-   after the end of the buffer.  */
-
-IP_AGENT_EXPORT_VAR unsigned char *trace_buffer_hi;
-
-EXTERN_C_POP
-
-/* Control structure holding the read/write/etc. pointers into the
-   trace buffer.  We need more than one of these to implement a
-   transaction-like mechanism to guarantees that both GDBserver and the
-   in-process agent can try to change the trace buffer
-   simultaneously.  */
-
-struct trace_buffer_control
-{
-  /* Pointer to the first trace frame in the buffer.  In the
-     non-circular case, this is equal to trace_buffer_lo, otherwise it
-     moves around in the buffer.  */
-  unsigned char *start;
-
-  /* Pointer to the free part of the trace buffer.  Note that we clear
-     several bytes at and after this pointer, so that traceframe
-     scans/searches terminate properly.  */
-  unsigned char *free;
-
-  /* Pointer to the byte after the end of the free part.  Note that
-     this may be smaller than trace_buffer_free in the circular case,
-     and means that the free part is in two pieces.  Initially it is
-     equal to trace_buffer_hi, then is generally equivalent to
-     trace_buffer_start.  */
-  unsigned char *end_free;
-
-  /* Pointer to the wraparound.  If not equal to trace_buffer_hi, then
-     this is the point at which the trace data breaks, and resumes at
-     trace_buffer_lo.  */
-  unsigned char *wrap;
-};
-
-/* Same as above, to be used by GDBserver when updating the in-process
-   agent.  */
-struct ipa_trace_buffer_control
-{
-  uintptr_t start;
-  uintptr_t free;
-  uintptr_t end_free;
-  uintptr_t wrap;
-};
-
-
-/* We have possibly both GDBserver and an inferior thread accessing
-   the same IPA trace buffer memory.  The IPA is the producer (tries
-   to put new frames in the buffer), while GDBserver occasionally
-   consumes them, that is, flushes the IPA's buffer into its own
-   buffer.  Both sides need to update the trace buffer control
-   pointers (current head, tail, etc.).  We can't use a global lock to
-   synchronize the accesses, as otherwise we could deadlock GDBserver
-   (if the thread holding the lock stops for a signal, say).  So
-   instead of that, we use a transaction scheme where GDBserver writes
-   always prevail over the IPAs writes, and, we have the IPA detect
-   the commit failure/overwrite, and retry the whole attempt.  This is
-   mainly implemented by having a global token object that represents
-   who wrote last to the buffer control structure.  We need to freeze
-   any inferior writing to the buffer while GDBserver touches memory,
-   so that the inferior can correctly detect that GDBserver had been
-   there, otherwise, it could mistakingly think its commit was
-   successful; that's implemented by simply having GDBserver set a
-   breakpoint the inferior hits if it is the critical region.
-
-   There are three cycling trace buffer control structure copies
-   (buffer head, tail, etc.), with the token object including an index
-   indicating which is current live copy.  The IPA tentatively builds
-   an updated copy in a non-current control structure, while GDBserver
-   always clobbers the current version directly.  The IPA then tries
-   to atomically "commit" its version; if GDBserver clobbered the
-   structure meanwhile, that will fail, and the IPA restarts the
-   allocation process.
-
-   Listing the step in further detail, we have:
-
-  In-process agent (producer):
-
-  - passes by `about_to_request_buffer_space' breakpoint/lock
-
-  - reads current token, extracts current trace buffer control index,
-    and starts tentatively updating the rightmost one (0->1, 1->2,
-    2->0).  Note that only one inferior thread is executing this code
-    at any given time, due to an outer lock in the jump pads.
-
-  - updates counters, and tries to commit the token.
-
-  - passes by second `about_to_request_buffer_space' breakpoint/lock,
-    leaving the sync region.
-
-  - checks if the update was effective.
-
-  - if trace buffer was found full, hits flush_trace_buffer
-    breakpoint, and restarts later afterwards.
-
-  GDBserver (consumer):
-
-  - sets `about_to_request_buffer_space' breakpoint/lock.
-
-  - updates the token unconditionally, using the current buffer
-    control index, since it knows that the IP agent always writes to
-    the rightmost, and due to the breakpoint, at most one IP thread
-    can try to update the trace buffer concurrently to GDBserver, so
-    there will be no danger of trace buffer control index wrap making
-    the IPA write to the same index as GDBserver.
-
-  - flushes the IP agent's trace buffer completely, and updates the
-    current trace buffer control structure.  GDBserver *always* wins.
-
-  - removes the `about_to_request_buffer_space' breakpoint.
-
-The token is stored in the `trace_buffer_ctrl_curr' variable.
-Internally, it's bits are defined as:
-
- |-------------+-----+-------------+--------+-------------+--------------|
- | Bit offsets |  31 |   30 - 20   |   19   |    18-8     |     7-0      |
- |-------------+-----+-------------+--------+-------------+--------------|
- | What        | GSB | PC (11-bit) | unused | CC (11-bit) | TBCI (8-bit) |
- |-------------+-----+-------------+--------+-------------+--------------|
-
- GSB  - GDBserver Stamp Bit
- PC   - Previous Counter
- CC   - Current Counter
- TBCI - Trace Buffer Control Index
-
-
-An IPA update of `trace_buffer_ctrl_curr' does:
-
-    - read CC from the current token, save as PC.
-    - updates pointers
-    - atomically tries to write PC+1,CC
-
-A GDBserver update of `trace_buffer_ctrl_curr' does:
-
-    - reads PC and CC from the current token.
-    - updates pointers
-    - writes GSB,PC,CC
-*/
-
-/* These are the bits of `trace_buffer_ctrl_curr' that are reserved
-   for the counters described below.  The cleared bits are used to
-   hold the index of the items of the `trace_buffer_ctrl' array that
-   is "current".  */
-#define GDBSERVER_FLUSH_COUNT_MASK        0xfffffff0
-
-/* `trace_buffer_ctrl_curr' contains two counters.  The `previous'
-   counter, and the `current' counter.  */
-
-#define GDBSERVER_FLUSH_COUNT_MASK_PREV   0x7ff00000
-#define GDBSERVER_FLUSH_COUNT_MASK_CURR   0x0007ff00
-
-/* When GDBserver update the IP agent's `trace_buffer_ctrl_curr', it
-   always stamps this bit as set.  */
-#define GDBSERVER_UPDATED_FLUSH_COUNT_BIT 0x80000000
-
-#ifdef IN_PROCESS_AGENT
-IP_AGENT_EXPORT_VAR struct trace_buffer_control trace_buffer_ctrl[3];
-IP_AGENT_EXPORT_VAR unsigned int trace_buffer_ctrl_curr;
-
-# define TRACE_BUFFER_CTRL_CURR \
-  (trace_buffer_ctrl_curr & ~GDBSERVER_FLUSH_COUNT_MASK)
-
-#else
-
-/* The GDBserver side agent only needs one instance of this object, as
-   it doesn't need to sync with itself.  Define it as array anyway so
-   that the rest of the code base doesn't need to care for the
-   difference.  */
-struct trace_buffer_control trace_buffer_ctrl[1];
-# define TRACE_BUFFER_CTRL_CURR 0
-#endif
-
-/* These are convenience macros used to access the current trace
-   buffer control in effect.  */
-#define trace_buffer_start (trace_buffer_ctrl[TRACE_BUFFER_CTRL_CURR].start)
-#define trace_buffer_free (trace_buffer_ctrl[TRACE_BUFFER_CTRL_CURR].free)
-#define trace_buffer_end_free \
-  (trace_buffer_ctrl[TRACE_BUFFER_CTRL_CURR].end_free)
-#define trace_buffer_wrap (trace_buffer_ctrl[TRACE_BUFFER_CTRL_CURR].wrap)
-
-
-/* Macro that returns a pointer to the first traceframe in the buffer.  */
-
-#define FIRST_TRACEFRAME() ((struct traceframe *) trace_buffer_start)
-
-/* Macro that returns a pointer to the next traceframe in the buffer.
-   If the computed location is beyond the wraparound point, subtract
-   the offset of the wraparound.  */
-
-#define NEXT_TRACEFRAME_1(TF) \
-  (((unsigned char *) (TF)) + sizeof (struct traceframe) + (TF)->data_size)
-
-#define NEXT_TRACEFRAME(TF) \
-  ((struct traceframe *) (NEXT_TRACEFRAME_1 (TF)  \
-			  - ((NEXT_TRACEFRAME_1 (TF) >= trace_buffer_wrap) \
-			     ? (trace_buffer_wrap - trace_buffer_lo)	\
-			     : 0)))
-
-/* The difference between these counters represents the total number
-   of complete traceframes present in the trace buffer.  The IP agent
-   writes to the write count, GDBserver writes to read count.  */
-
-IP_AGENT_EXPORT_VAR unsigned int traceframe_write_count;
-IP_AGENT_EXPORT_VAR unsigned int traceframe_read_count;
-
-/* Convenience macro.  */
-
-#define traceframe_count \
-  ((unsigned int) (traceframe_write_count - traceframe_read_count))
-
-/* The count of all traceframes created in the current run, including
-   ones that were discarded to make room.  */
-
-IP_AGENT_EXPORT_VAR int traceframes_created;
-
-#ifndef IN_PROCESS_AGENT
-
-/* Read-only regions are address ranges whose contents don't change,
-   and so can be read from target memory even while looking at a trace
-   frame.  Without these, disassembly for instance will likely fail,
-   because the program code is not usually collected into a trace
-   frame.  This data structure does not need to be very complicated or
-   particularly efficient, it's only going to be used occasionally,
-   and only by some commands.  */
-
-struct readonly_region
-{
-  /* The bounds of the region.  */
-  CORE_ADDR start, end;
-
-  /* Link to the next one.  */
-  struct readonly_region *next;
-};
-
-/* Linked list of readonly regions.  This list stays in effect from
-   one tstart to the next.  */
-
-static struct readonly_region *readonly_regions;
-
-#endif
-
-/* The global that controls tracing overall.  */
-
-IP_AGENT_EXPORT_VAR int tracing;
-
-#ifndef IN_PROCESS_AGENT
-
-/* Controls whether tracing should continue after GDB disconnects.  */
-
-int disconnected_tracing;
-
-/* The reason for the last tracing run to have stopped.  We initialize
-   to a distinct string so that GDB can distinguish between "stopped
-   after running" and "stopped because never run" cases.  */
-
-static const char *tracing_stop_reason = "tnotrun";
-
-static int tracing_stop_tpnum;
-
-/* 64-bit timestamps for the trace run's start and finish, expressed
-   in microseconds from the Unix epoch.  */
-
-LONGEST tracing_start_time;
-LONGEST tracing_stop_time;
-
-/* The (optional) user-supplied name of the user that started the run.
-   This is an arbitrary string, and may be NULL.  */
-
-char *tracing_user_name;
-
-/* Optional user-supplied text describing the run.  This is
-   an arbitrary string, and may be NULL.  */
-
-char *tracing_notes;
-
-/* Optional user-supplied text explaining a tstop command.  This is an
-   arbitrary string, and may be NULL.  */
-
-char *tracing_stop_note;
-
-#endif
-
-/* Functions local to this file.  */
-
-/* Base "class" for tracepoint type specific data to be passed down to
-   collect_data_at_tracepoint.  */
-struct tracepoint_hit_ctx
-{
-  enum tracepoint_type type;
-};
-
-#ifdef IN_PROCESS_AGENT
-
-/* Fast/jump tracepoint specific data to be passed down to
-   collect_data_at_tracepoint.  */
-struct fast_tracepoint_ctx
-{
-  struct tracepoint_hit_ctx base;
-
-  struct regcache regcache;
-  int regcache_initted;
-  unsigned char *regspace;
-
-  unsigned char *regs;
-  struct tracepoint *tpoint;
-};
-
-/* Static tracepoint specific data to be passed down to
-   collect_data_at_tracepoint.  */
-struct static_tracepoint_ctx
-{
-  struct tracepoint_hit_ctx base;
-
-  /* The regcache corresponding to the registers state at the time of
-     the tracepoint hit.  Initialized lazily, from REGS.  */
-  struct regcache regcache;
-  int regcache_initted;
-
-  /* The buffer space REGCACHE above uses.  We use a separate buffer
-     instead of letting the regcache malloc for both signal safety and
-     performance reasons; this is allocated on the stack instead.  */
-  unsigned char *regspace;
-
-  /* The register buffer as passed on by lttng/ust.  */
-  struct registers *regs;
-
-  /* The "printf" formatter and the args the user passed to the marker
-     call.  We use this to be able to collect "static trace data"
-     ($_sdata).  */
-  const char *fmt;
-  va_list *args;
-
-  /* The GDB tracepoint matching the probed marker that was "hit".  */
-  struct tracepoint *tpoint;
-};
-
-#else
-
-/* Static tracepoint specific data to be passed down to
-   collect_data_at_tracepoint.  */
-struct trap_tracepoint_ctx
-{
-  struct tracepoint_hit_ctx base;
-
-  struct regcache *regcache;
-};
-
-#endif
-
-#ifndef IN_PROCESS_AGENT
-static CORE_ADDR traceframe_get_pc (struct traceframe *tframe);
-static int traceframe_read_tsv (int num, LONGEST *val);
-#endif
-
-static int condition_true_at_tracepoint (struct tracepoint_hit_ctx *ctx,
-					 struct tracepoint *tpoint);
-
-#ifndef IN_PROCESS_AGENT
-static void clear_readonly_regions (void);
-static void clear_installed_tracepoints (void);
-#endif
-
-static void collect_data_at_tracepoint (struct tracepoint_hit_ctx *ctx,
-					CORE_ADDR stop_pc,
-					struct tracepoint *tpoint);
-#ifndef IN_PROCESS_AGENT
-static void collect_data_at_step (struct tracepoint_hit_ctx *ctx,
-				  CORE_ADDR stop_pc,
-				  struct tracepoint *tpoint, int current_step);
-static void compile_tracepoint_condition (struct tracepoint *tpoint,
-					  CORE_ADDR *jump_entry);
-#endif
-static void do_action_at_tracepoint (struct tracepoint_hit_ctx *ctx,
-				     CORE_ADDR stop_pc,
-				     struct tracepoint *tpoint,
-				     struct traceframe *tframe,
-				     struct tracepoint_action *taction);
-
-#ifndef IN_PROCESS_AGENT
-static struct tracepoint *fast_tracepoint_from_ipa_tpoint_address (CORE_ADDR);
-
-static void install_tracepoint (struct tracepoint *, char *own_buf);
-static void download_tracepoint (struct tracepoint *);
-static int install_fast_tracepoint (struct tracepoint *, char *errbuf);
-static void clone_fast_tracepoint (struct tracepoint *to,
-				   const struct tracepoint *from);
-#endif
-
-static LONGEST get_timestamp (void);
-
-#if defined(__GNUC__)
-#  define memory_barrier() asm volatile ("" : : : "memory")
-#else
-#  define memory_barrier() do {} while (0)
-#endif
-
-/* We only build the IPA if this builtin is supported, and there are
-   no uses of this in GDBserver itself, so we're safe in defining this
-   unconditionally.  */
-#define cmpxchg(mem, oldval, newval) \
-  __sync_val_compare_and_swap (mem, oldval, newval)
-
-/* Record that an error occurred during expression evaluation.  */
-
-static void
-record_tracepoint_error (struct tracepoint *tpoint, const char *which,
-			 enum eval_result_type rtype)
-{
-  trace_debug ("Tracepoint %d at %s %s eval reports error %d",
-	       tpoint->number, paddress (tpoint->address), which, rtype);
-
-#ifdef IN_PROCESS_AGENT
-  /* Only record the first error we get.  */
-  if (cmpxchg (&expr_eval_result,
-	       expr_eval_no_error,
-	       rtype) != expr_eval_no_error)
-    return;
-#else
-  if (expr_eval_result != expr_eval_no_error)
-    return;
-#endif
-
-  error_tracepoint = tpoint;
-}
-
-/* Trace buffer management.  */
-
-static void
-clear_trace_buffer (void)
-{
-  trace_buffer_start = trace_buffer_lo;
-  trace_buffer_free = trace_buffer_lo;
-  trace_buffer_end_free = trace_buffer_hi;
-  trace_buffer_wrap = trace_buffer_hi;
-  /* A traceframe with zeroed fields marks the end of trace data.  */
-  ((struct traceframe *) trace_buffer_free)->tpnum = 0;
-  ((struct traceframe *) trace_buffer_free)->data_size = 0;
-  traceframe_read_count = traceframe_write_count = 0;
-  traceframes_created = 0;
-}
-
-#ifndef IN_PROCESS_AGENT
-
-static void
-clear_inferior_trace_buffer (void)
-{
-  CORE_ADDR ipa_trace_buffer_lo;
-  CORE_ADDR ipa_trace_buffer_hi;
-  struct traceframe ipa_traceframe = { 0 };
-  struct ipa_trace_buffer_control ipa_trace_buffer_ctrl;
-
-  read_inferior_data_pointer (ipa_sym_addrs.addr_trace_buffer_lo,
-			      &ipa_trace_buffer_lo);
-  read_inferior_data_pointer (ipa_sym_addrs.addr_trace_buffer_hi,
-			      &ipa_trace_buffer_hi);
-
-  ipa_trace_buffer_ctrl.start = ipa_trace_buffer_lo;
-  ipa_trace_buffer_ctrl.free = ipa_trace_buffer_lo;
-  ipa_trace_buffer_ctrl.end_free = ipa_trace_buffer_hi;
-  ipa_trace_buffer_ctrl.wrap = ipa_trace_buffer_hi;
-
-  /* A traceframe with zeroed fields marks the end of trace data.  */
-  target_write_memory (ipa_sym_addrs.addr_trace_buffer_ctrl,
-			 (unsigned char *) &ipa_trace_buffer_ctrl,
-			 sizeof (ipa_trace_buffer_ctrl));
-
-  write_inferior_uinteger (ipa_sym_addrs.addr_trace_buffer_ctrl_curr, 0);
-
-  /* A traceframe with zeroed fields marks the end of trace data.  */
-  target_write_memory (ipa_trace_buffer_lo,
-			 (unsigned char *) &ipa_traceframe,
-			 sizeof (ipa_traceframe));
-
-  write_inferior_uinteger (ipa_sym_addrs.addr_traceframe_write_count, 0);
-  write_inferior_uinteger (ipa_sym_addrs.addr_traceframe_read_count, 0);
-  write_inferior_integer (ipa_sym_addrs.addr_traceframes_created, 0);
-}
-
-#endif
-
-static void
-init_trace_buffer (LONGEST bufsize)
-{
-  size_t alloc_size;
-
-  trace_buffer_size = bufsize;
-
-  /* Make sure to internally allocate at least space for the EOB
-     marker.  */
-  alloc_size = (bufsize < TRACEFRAME_EOB_MARKER_SIZE
-		? TRACEFRAME_EOB_MARKER_SIZE : bufsize);
-  trace_buffer_lo = (unsigned char *) xrealloc (trace_buffer_lo, alloc_size);
-
-  trace_buffer_hi = trace_buffer_lo + trace_buffer_size;
-
-  clear_trace_buffer ();
-}
-
-#ifdef IN_PROCESS_AGENT
-
-IP_AGENT_EXPORT_FUNC void
-about_to_request_buffer_space (void)
-{
-  /* GDBserver places breakpoint here while it goes about to flush
-     data at random times.  */
-  UNKNOWN_SIDE_EFFECTS();
-}
-
-#endif
-
-/* Carve out a piece of the trace buffer, returning NULL in case of
-   failure.  */
-
-static void *
-trace_buffer_alloc (size_t amt)
-{
-  unsigned char *rslt;
-  struct trace_buffer_control *tbctrl;
-  unsigned int curr;
-#ifdef IN_PROCESS_AGENT
-  unsigned int prev, prev_filtered;
-  unsigned int commit_count;
-  unsigned int commit;
-  unsigned int readout;
-#else
-  struct traceframe *oldest;
-  unsigned char *new_start;
-#endif
-
-  trace_debug ("Want to allocate %ld+%ld bytes in trace buffer",
-	       (long) amt, (long) sizeof (struct traceframe));
-
-  /* Account for the EOB marker.  */
-  amt += TRACEFRAME_EOB_MARKER_SIZE;
-
-#ifdef IN_PROCESS_AGENT
- again:
-  memory_barrier ();
-
-  /* Read the current token and extract the index to try to write to,
-     storing it in CURR.  */
-  prev = trace_buffer_ctrl_curr;
-  prev_filtered = prev & ~GDBSERVER_FLUSH_COUNT_MASK;
-  curr = prev_filtered + 1;
-  if (curr > 2)
-    curr = 0;
-
-  about_to_request_buffer_space ();
-
-  /* Start out with a copy of the current state.  GDBserver may be
-     midway writing to the PREV_FILTERED TBC, but, that's OK, we won't
-     be able to commit anyway if that happens.  */
-  trace_buffer_ctrl[curr]
-    = trace_buffer_ctrl[prev_filtered];
-  trace_debug ("trying curr=%u", curr);
-#else
-  /* The GDBserver's agent doesn't need all that syncing, and always
-     updates TCB 0 (there's only one, mind you).  */
-  curr = 0;
-#endif
-  tbctrl = &trace_buffer_ctrl[curr];
-
-  /* Offsets are easier to grok for debugging than raw addresses,
-     especially for the small trace buffer sizes that are useful for
-     testing.  */
-  trace_debug ("Trace buffer [%d] start=%d free=%d endfree=%d wrap=%d hi=%d",
-	       curr,
-	       (int) (tbctrl->start - trace_buffer_lo),
-	       (int) (tbctrl->free - trace_buffer_lo),
-	       (int) (tbctrl->end_free - trace_buffer_lo),
-	       (int) (tbctrl->wrap - trace_buffer_lo),
-	       (int) (trace_buffer_hi - trace_buffer_lo));
-
-  /* The algorithm here is to keep trying to get a contiguous block of
-     the requested size, possibly discarding older traceframes to free
-     up space.  Since free space might come in one or two pieces,
-     depending on whether discarded traceframes wrapped around at the
-     high end of the buffer, we test both pieces after each
-     discard.  */
-  while (1)
-    {
-      /* First, if we have two free parts, try the upper one first.  */
-      if (tbctrl->end_free < tbctrl->free)
-	{
-	  if (tbctrl->free + amt <= trace_buffer_hi)
-	    /* We have enough in the upper part.  */
-	    break;
-	  else
-	    {
-	      /* Our high part of free space wasn't enough.  Give up
-		 on it for now, set wraparound.  We will recover the
-		 space later, if/when the wrapped-around traceframe is
-		 discarded.  */
-	      trace_debug ("Upper part too small, setting wraparound");
-	      tbctrl->wrap = tbctrl->free;
-	      tbctrl->free = trace_buffer_lo;
-	    }
-	}
-
-      /* The normal case.  */
-      if (tbctrl->free + amt <= tbctrl->end_free)
-	break;
-
-#ifdef IN_PROCESS_AGENT
-      /* The IP Agent's buffer is always circular.  It isn't used
-	 currently, but `circular_trace_buffer' could represent
-	 GDBserver's mode.  If we didn't find space, ask GDBserver to
-	 flush.  */
-
-      flush_trace_buffer ();
-      memory_barrier ();
-      if (tracing)
-	{
-	  trace_debug ("gdbserver flushed buffer, retrying");
-	  goto again;
-	}
-
-      /* GDBserver cancelled the tracing.  Bail out as well.  */
-      return NULL;
-#else
-      /* If we're here, then neither part is big enough, and
-	 non-circular trace buffers are now full.  */
-      if (!circular_trace_buffer)
-	{
-	  trace_debug ("Not enough space in the trace buffer");
-	  return NULL;
-	}
-
-      trace_debug ("Need more space in the trace buffer");
-
-      /* If we have a circular buffer, we can try discarding the
-	 oldest traceframe and see if that helps.  */
-      oldest = FIRST_TRACEFRAME ();
-      if (oldest->tpnum == 0)
-	{
-	  /* Not good; we have no traceframes to free.  Perhaps we're
-	     asking for a block that is larger than the buffer?  In
-	     any case, give up.  */
-	  trace_debug ("No traceframes to discard");
-	  return NULL;
-	}
-
-      /* We don't run this code in the in-process agent currently.
-	 E.g., we could leave the in-process agent in autonomous
-	 circular mode if we only have fast tracepoints.  If we do
-	 that, then this bit becomes racy with GDBserver, which also
-	 writes to this counter.  */
-      --traceframe_write_count;
-
-      new_start = (unsigned char *) NEXT_TRACEFRAME (oldest);
-      /* If we freed the traceframe that wrapped around, go back
-	 to the non-wrap case.  */
-      if (new_start < tbctrl->start)
-	{
-	  trace_debug ("Discarding past the wraparound");
-	  tbctrl->wrap = trace_buffer_hi;
-	}
-      tbctrl->start = new_start;
-      tbctrl->end_free = tbctrl->start;
-
-      trace_debug ("Discarded a traceframe\n"
-		   "Trace buffer [%d], start=%d free=%d "
-		   "endfree=%d wrap=%d hi=%d",
-		   curr,
-		   (int) (tbctrl->start - trace_buffer_lo),
-		   (int) (tbctrl->free - trace_buffer_lo),
-		   (int) (tbctrl->end_free - trace_buffer_lo),
-		   (int) (tbctrl->wrap - trace_buffer_lo),
-		   (int) (trace_buffer_hi - trace_buffer_lo));
-
-      /* Now go back around the loop.  The discard might have resulted
-	 in either one or two pieces of free space, so we want to try
-	 both before freeing any more traceframes.  */
-#endif
-    }
-
-  /* If we get here, we know we can provide the asked-for space.  */
-
-  rslt = tbctrl->free;
-
-  /* Adjust the request back down, now that we know we have space for
-     the marker, but don't commit to AMT yet, we may still need to
-     restart the operation if GDBserver touches the trace buffer
-     (obviously only important in the in-process agent's version).  */
-  tbctrl->free += (amt - sizeof (struct traceframe));
-
-  /* Or not.  If GDBserver changed the trace buffer behind our back,
-     we get to restart a new allocation attempt.  */
-
-#ifdef IN_PROCESS_AGENT
-  /* Build the tentative token.  */
-  commit_count = (((prev & GDBSERVER_FLUSH_COUNT_MASK_CURR) + 0x100)
-		  & GDBSERVER_FLUSH_COUNT_MASK_CURR);
-  commit = (((prev & GDBSERVER_FLUSH_COUNT_MASK_CURR) << 12)
-	    | commit_count
-	    | curr);
-
-  /* Try to commit it.  */
-  readout = cmpxchg (&trace_buffer_ctrl_curr, prev, commit);
-  if (readout != prev)
-    {
-      trace_debug ("GDBserver has touched the trace buffer, restarting."
-		   " (prev=%08x, commit=%08x, readout=%08x)",
-		   prev, commit, readout);
-      goto again;
-    }
-
-  /* Hold your horses here.  Even if that change was committed,
-     GDBserver could come in, and clobber it.  We need to hold to be
-     able to tell if GDBserver clobbers before or after we committed
-     the change.  Whenever GDBserver goes about touching the IPA
-     buffer, it sets a breakpoint in this routine, so we have a sync
-     point here.  */
-  about_to_request_buffer_space ();
-
-  /* Check if the change has been effective, even if GDBserver stopped
-     us at the breakpoint.  */
-
-  {
-    unsigned int refetch;
-
-    memory_barrier ();
-
-    refetch = trace_buffer_ctrl_curr;
-
-    if (refetch == commit
-	|| ((refetch & GDBSERVER_FLUSH_COUNT_MASK_PREV) >> 12) == commit_count)
-      {
-	/* effective */
-	trace_debug ("change is effective: (prev=%08x, commit=%08x, "
-		     "readout=%08x, refetch=%08x)",
-		     prev, commit, readout, refetch);
-      }
-    else
-      {
-	trace_debug ("GDBserver has touched the trace buffer, not effective."
-		     " (prev=%08x, commit=%08x, readout=%08x, refetch=%08x)",
-		     prev, commit, readout, refetch);
-	goto again;
-      }
-  }
-#endif
-
-  /* We have a new piece of the trace buffer.  Hurray!  */
-
-  /* Add an EOB marker just past this allocation.  */
-  ((struct traceframe *) tbctrl->free)->tpnum = 0;
-  ((struct traceframe *) tbctrl->free)->data_size = 0;
-
-  /* Adjust the request back down, now that we know we have space for
-     the marker.  */
-  amt -= sizeof (struct traceframe);
-
-  if (debug_threads)
-    {
-      trace_debug ("Allocated %d bytes", (int) amt);
-      trace_debug ("Trace buffer [%d] start=%d free=%d "
-		   "endfree=%d wrap=%d hi=%d",
-		   curr,
-		   (int) (tbctrl->start - trace_buffer_lo),
-		   (int) (tbctrl->free - trace_buffer_lo),
-		   (int) (tbctrl->end_free - trace_buffer_lo),
-		   (int) (tbctrl->wrap - trace_buffer_lo),
-		   (int) (trace_buffer_hi - trace_buffer_lo));
-    }
-
-  return rslt;
-}
-
-#ifndef IN_PROCESS_AGENT
-
-/* Return the total free space.  This is not necessarily the largest
-   block we can allocate, because of the two-part case.  */
-
-static int
-free_space (void)
-{
-  if (trace_buffer_free <= trace_buffer_end_free)
-    return trace_buffer_end_free - trace_buffer_free;
-  else
-    return ((trace_buffer_end_free - trace_buffer_lo)
-	    + (trace_buffer_hi - trace_buffer_free));
-}
-
-/* An 'S' in continuation packets indicates remainder are for
-   while-stepping.  */
-
-static int seen_step_action_flag;
-
-/* Create a tracepoint (location) with given number and address.  Add this
-   new tracepoint to list and sort this list.  */
-
-static struct tracepoint *
-add_tracepoint (int num, CORE_ADDR addr)
-{
-  struct tracepoint *tpoint, **tp_next;
-
-  tpoint = XNEW (struct tracepoint);
-  tpoint->number = num;
-  tpoint->address = addr;
-  tpoint->numactions = 0;
-  tpoint->actions = NULL;
-  tpoint->actions_str = NULL;
-  tpoint->cond = NULL;
-  tpoint->num_step_actions = 0;
-  tpoint->step_actions = NULL;
-  tpoint->step_actions_str = NULL;
-  /* Start all off as regular (slow) tracepoints.  */
-  tpoint->type = trap_tracepoint;
-  tpoint->orig_size = -1;
-  tpoint->source_strings = NULL;
-  tpoint->compiled_cond = 0;
-  tpoint->handle = NULL;
-  tpoint->next = NULL;
-
-  /* Find a place to insert this tracepoint into list in order to keep
-     the tracepoint list still in the ascending order.  There may be
-     multiple tracepoints at the same address as TPOINT's, and this
-     guarantees TPOINT is inserted after all the tracepoints which are
-     set at the same address.  For example, fast tracepoints A, B, C are
-     set at the same address, and D is to be insert at the same place as
-     well,
-
-     -->| A |--> | B |-->| C |->...
-
-     One jump pad was created for tracepoint A, B, and C, and the target
-     address of A is referenced/used in jump pad.  So jump pad will let
-     inferior jump to A.  If D is inserted in front of A, like this,
-
-     -->| D |-->| A |--> | B |-->| C |->...
-
-     without updating jump pad, D is not reachable during collect, which
-     is wrong.  As we can see, the order of B, C and D doesn't matter, but
-     A should always be the `first' one.  */
-  for (tp_next = &tracepoints;
-       (*tp_next) != NULL && (*tp_next)->address <= tpoint->address;
-       tp_next = &(*tp_next)->next)
-    ;
-  tpoint->next = *tp_next;
-  *tp_next = tpoint;
-  last_tracepoint = tpoint;
-
-  seen_step_action_flag = 0;
-
-  return tpoint;
-}
-
-#ifndef IN_PROCESS_AGENT
-
-/* Return the tracepoint with the given number and address, or NULL.  */
-
-static struct tracepoint *
-find_tracepoint (int id, CORE_ADDR addr)
-{
-  struct tracepoint *tpoint;
-
-  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
-    if (tpoint->number == id && tpoint->address == addr)
-      return tpoint;
-
-  return NULL;
-}
-
-/* Remove TPOINT from global list.  */
-
-static void
-remove_tracepoint (struct tracepoint *tpoint)
-{
-  struct tracepoint *tp, *tp_prev;
-
-  for (tp = tracepoints, tp_prev = NULL; tp && tp != tpoint;
-       tp_prev = tp, tp = tp->next)
-    ;
-
-  if (tp)
-    {
-      if (tp_prev)
-	tp_prev->next = tp->next;
-      else
-	tracepoints = tp->next;
-
-      xfree (tp);
-    }
-}
-
-/* There may be several tracepoints with the same number (because they
-   are "locations", in GDB parlance); return the next one after the
-   given tracepoint, or search from the beginning of the list if the
-   first argument is NULL.  */
-
-static struct tracepoint *
-find_next_tracepoint_by_number (struct tracepoint *prev_tp, int num)
-{
-  struct tracepoint *tpoint;
-
-  if (prev_tp)
-    tpoint = prev_tp->next;
-  else
-    tpoint = tracepoints;
-  for (; tpoint; tpoint = tpoint->next)
-    if (tpoint->number == num)
-      return tpoint;
-
-  return NULL;
-}
-
-#endif
-
-/* Append another action to perform when the tracepoint triggers.  */
-
-static void
-add_tracepoint_action (struct tracepoint *tpoint, const char *packet)
-{
-  const char *act;
-
-  if (*packet == 'S')
-    {
-      seen_step_action_flag = 1;
-      ++packet;
-    }
-
-  act = packet;
-
-  while (*act)
-    {
-      const char *act_start = act;
-      struct tracepoint_action *action = NULL;
-
-      switch (*act)
-	{
-	case 'M':
-	  {
-	    struct collect_memory_action *maction =
-	      XNEW (struct collect_memory_action);
-	    ULONGEST basereg;
-	    int is_neg;
-
-	    maction->base.type = *act;
-	    action = &maction->base;
-
-	    ++act;
-	    is_neg = (*act == '-');
-	    if (*act == '-')
-	      ++act;
-	    act = unpack_varlen_hex (act, &basereg);
-	    ++act;
-	    act = unpack_varlen_hex (act, &maction->addr);
-	    ++act;
-	    act = unpack_varlen_hex (act, &maction->len);
-	    maction->basereg = (is_neg
-				? - (int) basereg
-				: (int) basereg);
-	    trace_debug ("Want to collect %s bytes at 0x%s (basereg %d)",
-			 pulongest (maction->len),
-			 paddress (maction->addr), maction->basereg);
-	    break;
-	  }
-	case 'R':
-	  {
-	    struct collect_registers_action *raction =
-	      XNEW (struct collect_registers_action);
-
-	    raction->base.type = *act;
-	    action = &raction->base;
-
-	    trace_debug ("Want to collect registers");
-	    ++act;
-	    /* skip past hex digits of mask for now */
-	    while (isxdigit(*act))
-	      ++act;
-	    break;
-	  }
-	case 'L':
-	  {
-	    struct collect_static_trace_data_action *raction =
-	      XNEW (struct collect_static_trace_data_action);
-
-	    raction->base.type = *act;
-	    action = &raction->base;
-
-	    trace_debug ("Want to collect static trace data");
-	    ++act;
-	    break;
-	  }
-	case 'S':
-	  trace_debug ("Unexpected step action, ignoring");
-	  ++act;
-	  break;
-	case 'X':
-	  {
-	    struct eval_expr_action *xaction = XNEW (struct eval_expr_action);
-
-	    xaction->base.type = *act;
-	    action = &xaction->base;
-
-	    trace_debug ("Want to evaluate expression");
-	    xaction->expr = gdb_parse_agent_expr (&act);
-	    break;
-	  }
-	default:
-	  trace_debug ("unknown trace action '%c', ignoring...", *act);
-	  break;
-	case '-':
-	  break;
-	}
-
-      if (action == NULL)
-	break;
-
-      if (seen_step_action_flag)
-	{
-	  tpoint->num_step_actions++;
-
-	  tpoint->step_actions
-	    = XRESIZEVEC (struct tracepoint_action *, tpoint->step_actions,
-			  tpoint->num_step_actions);
-	  tpoint->step_actions_str
-	    = XRESIZEVEC (char *, tpoint->step_actions_str,
-			  tpoint->num_step_actions);
-	  tpoint->step_actions[tpoint->num_step_actions - 1] = action;
-	  tpoint->step_actions_str[tpoint->num_step_actions - 1]
-	    = savestring (act_start, act - act_start);
-	}
-      else
-	{
-	  tpoint->numactions++;
-	  tpoint->actions
-	    = XRESIZEVEC (struct tracepoint_action *, tpoint->actions,
-			  tpoint->numactions);
-	  tpoint->actions_str
-	    = XRESIZEVEC (char *, tpoint->actions_str, tpoint->numactions);
-	  tpoint->actions[tpoint->numactions - 1] = action;
-	  tpoint->actions_str[tpoint->numactions - 1]
-	    = savestring (act_start, act - act_start);
-	}
-    }
-}
-
-#endif
-
-/* Find or create a trace state variable with the given number.  */
-
-static struct trace_state_variable *
-get_trace_state_variable (int num)
-{
-  struct trace_state_variable *tsv;
-
-#ifdef IN_PROCESS_AGENT
-  /* Search for an existing variable.  */
-  for (tsv = alloced_trace_state_variables; tsv; tsv = tsv->next)
-    if (tsv->number == num)
-      return tsv;
-#endif
-
-  /* Search for an existing variable.  */
-  for (tsv = trace_state_variables; tsv; tsv = tsv->next)
-    if (tsv->number == num)
-      return tsv;
-
-  return NULL;
-}
-
-/* Find or create a trace state variable with the given number.  */
-
-static struct trace_state_variable *
-create_trace_state_variable (int num, int gdb)
-{
-  struct trace_state_variable *tsv;
-
-  tsv = get_trace_state_variable (num);
-  if (tsv != NULL)
-    return tsv;
-
-  /* Create a new variable.  */
-  tsv = XNEW (struct trace_state_variable);
-  tsv->number = num;
-  tsv->initial_value = 0;
-  tsv->value = 0;
-  tsv->getter = NULL;
-  tsv->name = NULL;
-#ifdef IN_PROCESS_AGENT
-  if (!gdb)
-    {
-      tsv->next = alloced_trace_state_variables;
-      alloced_trace_state_variables = tsv;
-    }
-  else
-#endif
-    {
-      tsv->next = trace_state_variables;
-      trace_state_variables = tsv;
-    }
-  return tsv;
-}
-
-IP_AGENT_EXPORT_FUNC LONGEST
-get_trace_state_variable_value (int num)
-{
-  struct trace_state_variable *tsv;
-
-  tsv = get_trace_state_variable (num);
-
-  if (!tsv)
-    {
-      trace_debug ("No trace state variable %d, skipping value get", num);
-      return 0;
-    }
-
-  /* Call a getter function if we have one.  While it's tempting to
-     set up something to only call the getter once per tracepoint hit,
-     it could run afoul of thread races. Better to let the getter
-     handle it directly, if necessary to worry about it.  */
-  if (tsv->getter)
-    tsv->value = (tsv->getter) ();
-
-  trace_debug ("get_trace_state_variable_value(%d) ==> %s",
-	       num, plongest (tsv->value));
-
-  return tsv->value;
-}
-
-IP_AGENT_EXPORT_FUNC void
-set_trace_state_variable_value (int num, LONGEST val)
-{
-  struct trace_state_variable *tsv;
-
-  tsv = get_trace_state_variable (num);
-
-  if (!tsv)
-    {
-      trace_debug ("No trace state variable %d, skipping value set", num);
-      return;
-    }
-
-  tsv->value = val;
-}
-
-LONGEST
-agent_get_trace_state_variable_value (int num)
-{
-  return get_trace_state_variable_value (num);
-}
-
-void
-agent_set_trace_state_variable_value (int num, LONGEST val)
-{
-  set_trace_state_variable_value (num, val);
-}
-
-static void
-set_trace_state_variable_name (int num, const char *name)
-{
-  struct trace_state_variable *tsv;
-
-  tsv = get_trace_state_variable (num);
-
-  if (!tsv)
-    {
-      trace_debug ("No trace state variable %d, skipping name set", num);
-      return;
-    }
-
-  tsv->name = (char *) name;
-}
-
-static void
-set_trace_state_variable_getter (int num, LONGEST (*getter) (void))
-{
-  struct trace_state_variable *tsv;
-
-  tsv = get_trace_state_variable (num);
-
-  if (!tsv)
-    {
-      trace_debug ("No trace state variable %d, skipping getter set", num);
-      return;
-    }
-
-  tsv->getter = getter;
-}
-
-/* Add a raw traceframe for the given tracepoint.  */
-
-static struct traceframe *
-add_traceframe (struct tracepoint *tpoint)
-{
-  struct traceframe *tframe;
-
-  tframe
-    = (struct traceframe *) trace_buffer_alloc (sizeof (struct traceframe));
-
-  if (tframe == NULL)
-    return NULL;
-
-  tframe->tpnum = tpoint->number;
-  tframe->data_size = 0;
-
-  return tframe;
-}
-
-/* Add a block to the traceframe currently being worked on.  */
-
-static unsigned char *
-add_traceframe_block (struct traceframe *tframe,
-		      struct tracepoint *tpoint, int amt)
-{
-  unsigned char *block;
-
-  if (!tframe)
-    return NULL;
-
-  block = (unsigned char *) trace_buffer_alloc (amt);
-
-  if (!block)
-    return NULL;
-
-  gdb_assert (tframe->tpnum == tpoint->number);
-
-  tframe->data_size += amt;
-  tpoint->traceframe_usage += amt;
-
-  return block;
-}
-
-/* Flag that the current traceframe is finished.  */
-
-static void
-finish_traceframe (struct traceframe *tframe)
-{
-  ++traceframe_write_count;
-  ++traceframes_created;
-}
-
-#ifndef IN_PROCESS_AGENT
-
-/* Given a traceframe number NUM, find the NUMth traceframe in the
-   buffer.  */
-
-static struct traceframe *
-find_traceframe (int num)
-{
-  struct traceframe *tframe;
-  int tfnum = 0;
-
-  for (tframe = FIRST_TRACEFRAME ();
-       tframe->tpnum != 0;
-       tframe = NEXT_TRACEFRAME (tframe))
-    {
-      if (tfnum == num)
-	return tframe;
-      ++tfnum;
-    }
-
-  return NULL;
-}
-
-static CORE_ADDR
-get_traceframe_address (struct traceframe *tframe)
-{
-  CORE_ADDR addr;
-  struct tracepoint *tpoint;
-
-  addr = traceframe_get_pc (tframe);
-
-  if (addr)
-    return addr;
-
-  /* Fallback strategy, will be incorrect for while-stepping frames
-     and multi-location tracepoints.  */
-  tpoint = find_next_tracepoint_by_number (NULL, tframe->tpnum);
-  return tpoint->address;
-}
-
-/* Search for the next traceframe whose address is inside or outside
-   the given range.  */
-
-static struct traceframe *
-find_next_traceframe_in_range (CORE_ADDR lo, CORE_ADDR hi, int inside_p,
-			       int *tfnump)
-{
-  client_state &cs = get_client_state ();
-  struct traceframe *tframe;
-  CORE_ADDR tfaddr;
-
-  *tfnump = cs.current_traceframe + 1;
-  tframe = find_traceframe (*tfnump);
-  /* The search is not supposed to wrap around.  */
-  if (!tframe)
-    {
-      *tfnump = -1;
-      return NULL;
-    }
-
-  for (; tframe->tpnum != 0; tframe = NEXT_TRACEFRAME (tframe))
-    {
-      tfaddr = get_traceframe_address (tframe);
-      if (inside_p
-	  ? (lo <= tfaddr && tfaddr <= hi)
-	  : (lo > tfaddr || tfaddr > hi))
-	return tframe;
-      ++*tfnump;
-    }
-
-  *tfnump = -1;
-  return NULL;
-}
-
-/* Search for the next traceframe recorded by the given tracepoint.
-   Note that for multi-location tracepoints, this will find whatever
-   location appears first.  */
-
-static struct traceframe *
-find_next_traceframe_by_tracepoint (int num, int *tfnump)
-{
-  client_state &cs = get_client_state ();
-  struct traceframe *tframe;
-
-  *tfnump = cs.current_traceframe + 1;
-  tframe = find_traceframe (*tfnump);
-  /* The search is not supposed to wrap around.  */
-  if (!tframe)
-    {
-      *tfnump = -1;
-      return NULL;
-    }
-
-  for (; tframe->tpnum != 0; tframe = NEXT_TRACEFRAME (tframe))
-    {
-      if (tframe->tpnum == num)
-	return tframe;
-      ++*tfnump;
-    }
-
-  *tfnump = -1;
-  return NULL;
-}
-
-#endif
-
-#ifndef IN_PROCESS_AGENT
-
-/* Clear all past trace state.  */
-
-static void
-cmd_qtinit (char *packet)
-{
-  client_state &cs = get_client_state ();
-  struct trace_state_variable *tsv, *prev, *next;
-
-  /* Can't do this command without a pid attached.  */
-  if (current_thread == NULL)
-    {
-      write_enn (packet);
-      return;
-    }
-
-  /* Make sure we don't try to read from a trace frame.  */
-  cs.current_traceframe = -1;
-
-  stop_tracing ();
-
-  trace_debug ("Initializing the trace");
-
-  clear_installed_tracepoints ();
-  clear_readonly_regions ();
-
-  tracepoints = NULL;
-  last_tracepoint = NULL;
-
-  /* Clear out any leftover trace state variables.  Ones with target
-     defined getters should be kept however.  */
-  prev = NULL;
-  tsv = trace_state_variables;
-  while (tsv)
-    {
-      trace_debug ("Looking at var %d", tsv->number);
-      if (tsv->getter == NULL)
-	{
-	  next = tsv->next;
-	  if (prev)
-	    prev->next = next;
-	  else
-	    trace_state_variables = next;
-	  trace_debug ("Deleting var %d", tsv->number);
-	  free (tsv);
-	  tsv = next;
-	}
-      else
-	{
-	  prev = tsv;
-	  tsv = tsv->next;
-	}
-    }
-
-  clear_trace_buffer ();
-  clear_inferior_trace_buffer ();
-
-  write_ok (packet);
-}
-
-/* Unprobe the UST marker at ADDRESS.  */
-
-static void
-unprobe_marker_at (CORE_ADDR address)
-{
-  char cmd[IPA_CMD_BUF_SIZE];
-
-  sprintf (cmd, "unprobe_marker_at:%s", paddress (address));
-  run_inferior_command (cmd, strlen (cmd) + 1);
-}
-
-/* Restore the program to its pre-tracing state.  This routine may be called
-   in error situations, so it needs to be careful about only restoring
-   from known-valid bits.  */
-
-static void
-clear_installed_tracepoints (void)
-{
-  struct tracepoint *tpoint;
-  struct tracepoint *prev_stpoint;
-
-  pause_all (1);
-
-  prev_stpoint = NULL;
-
-  /* Restore any bytes overwritten by tracepoints.  */
-  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
-    {
-      /* Catch the case where we might try to remove a tracepoint that
-	 was never actually installed.  */
-      if (tpoint->handle == NULL)
-	{
-	  trace_debug ("Tracepoint %d at 0x%s was "
-		       "never installed, nothing to clear",
-		       tpoint->number, paddress (tpoint->address));
-	  continue;
-	}
-
-      switch (tpoint->type)
-	{
-	case trap_tracepoint:
-	  {
-	    struct breakpoint *bp
-	      = (struct breakpoint *) tpoint->handle;
-
-	    delete_breakpoint (bp);
-	  }
-	  break;
-	case fast_tracepoint:
-	  {
-	    struct fast_tracepoint_jump *jump
-	      = (struct fast_tracepoint_jump *) tpoint->handle;
-
-	    delete_fast_tracepoint_jump (jump);
-	  }
-	  break;
-	case static_tracepoint:
-	  if (prev_stpoint != NULL
-	      && prev_stpoint->address == tpoint->address)
-	    /* Nothing to do.  We already unprobed a tracepoint set at
-	       this marker address (and there can only be one probe
-	       per marker).  */
-	    ;
-	  else
-	    {
-	      unprobe_marker_at (tpoint->address);
-	      prev_stpoint = tpoint;
-	    }
-	  break;
-	}
-
-      tpoint->handle = NULL;
-    }
-
-  unpause_all (1);
-}
-
-/* Parse a packet that defines a tracepoint.  */
-
-static void
-cmd_qtdp (char *own_buf)
-{
-  int tppacket;
-  /* Whether there is a trailing hyphen at the end of the QTDP packet.  */
-  int trail_hyphen = 0;
-  ULONGEST num;
-  ULONGEST addr;
-  ULONGEST count;
-  struct tracepoint *tpoint;
-  const char *packet = own_buf;
-
-  packet += strlen ("QTDP:");
-
-  /* A hyphen at the beginning marks a packet specifying actions for a
-     tracepoint already supplied.  */
-  tppacket = 1;
-  if (*packet == '-')
-    {
-      tppacket = 0;
-      ++packet;
-    }
-  packet = unpack_varlen_hex (packet, &num);
-  ++packet; /* skip a colon */
-  packet = unpack_varlen_hex (packet, &addr);
-  ++packet; /* skip a colon */
-
-  /* See if we already have this tracepoint.  */
-  tpoint = find_tracepoint (num, addr);
-
-  if (tppacket)
-    {
-      /* Duplicate tracepoints are never allowed.  */
-      if (tpoint)
-	{
-	  trace_debug ("Tracepoint error: tracepoint %d"
-		       " at 0x%s already exists",
-		       (int) num, paddress (addr));
-	  write_enn (own_buf);
-	  return;
-	}
-
-      tpoint = add_tracepoint (num, addr);
-
-      tpoint->enabled = (*packet == 'E');
-      ++packet; /* skip 'E' */
-      ++packet; /* skip a colon */
-      packet = unpack_varlen_hex (packet, &count);
-      tpoint->step_count = count;
-      ++packet; /* skip a colon */
-      packet = unpack_varlen_hex (packet, &count);
-      tpoint->pass_count = count;
-      /* See if we have any of the additional optional fields.  */
-      while (*packet == ':')
-	{
-	  ++packet;
-	  if (*packet == 'F')
-	    {
-	      tpoint->type = fast_tracepoint;
-	      ++packet;
-	      packet = unpack_varlen_hex (packet, &count);
-	      tpoint->orig_size = count;
-	    }
-	  else if (*packet == 'S')
-	    {
-	      tpoint->type = static_tracepoint;
-	      ++packet;
-	    }
-	  else if (*packet == 'X')
-	    {
-	      tpoint->cond = gdb_parse_agent_expr (&packet);
-	    }
-	  else if (*packet == '-')
-	    break;
-	  else if (*packet == '\0')
-	    break;
-	  else
-	    trace_debug ("Unknown optional tracepoint field");
-	}
-      if (*packet == '-')
-	{
-	  trail_hyphen = 1;
-	  trace_debug ("Also has actions\n");
-	}
-
-      trace_debug ("Defined %stracepoint %d at 0x%s, "
-		   "enabled %d step %" PRIu64 " pass %" PRIu64,
-		   tpoint->type == fast_tracepoint ? "fast "
-		   : tpoint->type == static_tracepoint ? "static " : "",
-		   tpoint->number, paddress (tpoint->address), tpoint->enabled,
-		   tpoint->step_count, tpoint->pass_count);
-    }
-  else if (tpoint)
-    add_tracepoint_action (tpoint, packet);
-  else
-    {
-      trace_debug ("Tracepoint error: tracepoint %d at 0x%s not found",
-		   (int) num, paddress (addr));
-      write_enn (own_buf);
-      return;
-    }
-
-  /* Install tracepoint during tracing only once for each tracepoint location.
-     For each tracepoint loc, GDB may send multiple QTDP packets, and we can
-     determine the last QTDP packet for one tracepoint location by checking
-     trailing hyphen in QTDP packet.  */
-  if (tracing && !trail_hyphen)
-    {
-      struct tracepoint *tp = NULL;
-
-      /* Pause all threads temporarily while we patch tracepoints.  */
-      pause_all (0);
-
-      /* download_tracepoint will update global `tracepoints'
-	 list, so it is unsafe to leave threads in jump pad.  */
-      stabilize_threads ();
-
-      /* Freeze threads.  */
-      pause_all (1);
-
-
-      if (tpoint->type != trap_tracepoint)
-	{
-	  /* Find another fast or static tracepoint at the same address.  */
-	  for (tp = tracepoints; tp; tp = tp->next)
-	    {
-	      if (tp->address == tpoint->address && tp->type == tpoint->type
-		  && tp->number != tpoint->number)
-		break;
-	    }
-
-	  /* TPOINT is installed at the same address as TP.  */
-	  if (tp)
-	    {
-	      if (tpoint->type == fast_tracepoint)
-		clone_fast_tracepoint (tpoint, tp);
-	      else if (tpoint->type == static_tracepoint)
-		tpoint->handle = (void *) -1;
-	    }
-	}
-
-      if (use_agent && tpoint->type == fast_tracepoint
-	  && agent_capability_check (AGENT_CAPA_FAST_TRACE))
-	{
-	  /* Download and install fast tracepoint by agent.  */
-	  if (tracepoint_send_agent (tpoint) == 0)
-	    write_ok (own_buf);
-	  else
-	    {
-	      write_enn (own_buf);
-	      remove_tracepoint (tpoint);
-	    }
-	}
-      else
-	{
-	  download_tracepoint (tpoint);
-
-	  if (tpoint->type == trap_tracepoint || tp == NULL)
-	    {
-	      install_tracepoint (tpoint, own_buf);
-	      if (strcmp (own_buf, "OK") != 0)
-		remove_tracepoint (tpoint);
-	    }
-	  else
-	    write_ok (own_buf);
-	}
-
-      unpause_all (1);
-      return;
-    }
-
-  write_ok (own_buf);
-}
-
-static void
-cmd_qtdpsrc (char *own_buf)
-{
-  ULONGEST num, addr, start, slen;
-  struct tracepoint *tpoint;
-  const char *packet = own_buf;
-  const char *saved;
-  char *srctype, *src;
-  size_t nbytes;
-  struct source_string *last, *newlast;
-
-  packet += strlen ("QTDPsrc:");
-
-  packet = unpack_varlen_hex (packet, &num);
-  ++packet; /* skip a colon */
-  packet = unpack_varlen_hex (packet, &addr);
-  ++packet; /* skip a colon */
-
-  /* See if we already have this tracepoint.  */
-  tpoint = find_tracepoint (num, addr);
-
-  if (!tpoint)
-    {
-      trace_debug ("Tracepoint error: tracepoint %d at 0x%s not found",
-		   (int) num, paddress (addr));
-      write_enn (own_buf);
-      return;
-    }
-
-  saved = packet;
-  packet = strchr (packet, ':');
-  srctype = (char *) xmalloc (packet - saved + 1);
-  memcpy (srctype, saved, packet - saved);
-  srctype[packet - saved] = '\0';
-  ++packet;
-  packet = unpack_varlen_hex (packet, &start);
-  ++packet; /* skip a colon */
-  packet = unpack_varlen_hex (packet, &slen);
-  ++packet; /* skip a colon */
-  src = (char *) xmalloc (slen + 1);
-  nbytes = hex2bin (packet, (gdb_byte *) src, strlen (packet) / 2);
-  src[nbytes] = '\0';
-
-  newlast = XNEW (struct source_string);
-  newlast->type = srctype;
-  newlast->str = src;
-  newlast->next = NULL;
-  /* Always add a source string to the end of the list;
-     this keeps sequences of actions/commands in the right
-     order.  */
-  if (tpoint->source_strings)
-    {
-      for (last = tpoint->source_strings; last->next; last = last->next)
-	;
-      last->next = newlast;
-    }
-  else
-    tpoint->source_strings = newlast;
-
-  write_ok (own_buf);
-}
-
-static void
-cmd_qtdv (char *own_buf)
-{
-  ULONGEST num, val, builtin;
-  char *varname;
-  size_t nbytes;
-  struct trace_state_variable *tsv;
-  const char *packet = own_buf;
-
-  packet += strlen ("QTDV:");
-
-  packet = unpack_varlen_hex (packet, &num);
-  ++packet; /* skip a colon */
-  packet = unpack_varlen_hex (packet, &val);
-  ++packet; /* skip a colon */
-  packet = unpack_varlen_hex (packet, &builtin);
-  ++packet; /* skip a colon */
-
-  nbytes = strlen (packet) / 2;
-  varname = (char *) xmalloc (nbytes + 1);
-  nbytes = hex2bin (packet, (gdb_byte *) varname, nbytes);
-  varname[nbytes] = '\0';
-
-  tsv = create_trace_state_variable (num, 1);
-  tsv->initial_value = (LONGEST) val;
-  tsv->name = varname;
-
-  set_trace_state_variable_value (num, (LONGEST) val);
-
-  write_ok (own_buf);
-}
-
-static void
-cmd_qtenable_disable (char *own_buf, int enable)
-{
-  const char *packet = own_buf;
-  ULONGEST num, addr;
-  struct tracepoint *tp;
-
-  packet += strlen (enable ? "QTEnable:" : "QTDisable:");
-  packet = unpack_varlen_hex (packet, &num);
-  ++packet; /* skip a colon */
-  packet = unpack_varlen_hex (packet, &addr);
-
-  tp = find_tracepoint (num, addr);
-
-  if (tp)
-    {
-      if ((enable && tp->enabled) || (!enable && !tp->enabled))
-	{
-	  trace_debug ("Tracepoint %d at 0x%s is already %s",
-		       (int) num, paddress (addr),
-		       enable ? "enabled" : "disabled");
-	  write_ok (own_buf);
-	  return;
-	}
-
-      trace_debug ("%s tracepoint %d at 0x%s",
-		   enable ? "Enabling" : "Disabling",
-		   (int) num, paddress (addr));
-
-      tp->enabled = enable;
-
-      if (tp->type == fast_tracepoint || tp->type == static_tracepoint)
-	{
-	  int ret;
-	  int offset = offsetof (struct tracepoint, enabled);
-	  CORE_ADDR obj_addr = tp->obj_addr_on_target + offset;
-
-	  ret = prepare_to_access_memory ();
-	  if (ret)
-	    {
-	      trace_debug ("Failed to temporarily stop inferior threads");
-	      write_enn (own_buf);
-	      return;
-	    }
-
-	  ret = write_inferior_int8 (obj_addr, enable);
-	  done_accessing_memory ();
-	  
-	  if (ret)
-	    {
-	      trace_debug ("Cannot write enabled flag into "
-			   "inferior process memory");
-	      write_enn (own_buf);
-	      return;
-	    }
-	}
-
-      write_ok (own_buf);
-    }
-  else
-    {
-      trace_debug ("Tracepoint %d at 0x%s not found",
-		   (int) num, paddress (addr));
-      write_enn (own_buf);
-    }
-}
-
-static void
-cmd_qtv (char *own_buf)
-{
-  client_state &cs = get_client_state ();
-  ULONGEST num;
-  LONGEST val = 0;
-  int err;
-  char *packet = own_buf;
-
-  packet += strlen ("qTV:");
-  unpack_varlen_hex (packet, &num);
-
-  if (cs.current_traceframe >= 0)
-    {
-      err = traceframe_read_tsv ((int) num, &val);
-      if (err)
-	{
-	  strcpy (own_buf, "U");
-	  return;
-	}
-    }
-  /* Only make tsv's be undefined before the first trace run.  After a
-     trace run is over, the user might want to see the last value of
-     the tsv, and it might not be available in a traceframe.  */
-  else if (!tracing && strcmp (tracing_stop_reason, "tnotrun") == 0)
-    {
-      strcpy (own_buf, "U");
-      return;
-    }
-  else
-    val = get_trace_state_variable_value (num);
-
-  sprintf (own_buf, "V%s", phex_nz (val, 0));
-}
-
-/* Clear out the list of readonly regions.  */
-
-static void
-clear_readonly_regions (void)
-{
-  struct readonly_region *roreg;
-
-  while (readonly_regions)
-    {
-      roreg = readonly_regions;
-      readonly_regions = readonly_regions->next;
-      free (roreg);
-    }
-}
-
-/* Parse the collection of address ranges whose contents GDB believes
-   to be unchanging and so can be read directly from target memory
-   even while looking at a traceframe.  */
-
-static void
-cmd_qtro (char *own_buf)
-{
-  ULONGEST start, end;
-  struct readonly_region *roreg;
-  const char *packet = own_buf;
-
-  trace_debug ("Want to mark readonly regions");
-
-  clear_readonly_regions ();
-
-  packet += strlen ("QTro");
-
-  while (*packet == ':')
-    {
-      ++packet;  /* skip a colon */
-      packet = unpack_varlen_hex (packet, &start);
-      ++packet;  /* skip a comma */
-      packet = unpack_varlen_hex (packet, &end);
-
-      roreg = XNEW (struct readonly_region);
-      roreg->start = start;
-      roreg->end = end;
-      roreg->next = readonly_regions;
-      readonly_regions = roreg;
-      trace_debug ("Added readonly region from 0x%s to 0x%s",
-		   paddress (roreg->start), paddress (roreg->end));
-    }
-
-  write_ok (own_buf);
-}
-
-/* Test to see if the given range is in our list of readonly ranges.
-   We only test for being entirely within a range, GDB is not going to
-   send a single memory packet that spans multiple regions.  */
-
-int
-in_readonly_region (CORE_ADDR addr, ULONGEST length)
-{
-  struct readonly_region *roreg;
-
-  for (roreg = readonly_regions; roreg; roreg = roreg->next)
-    if (roreg->start <= addr && (addr + length - 1) <= roreg->end)
-      return 1;
-
-  return 0;
-}
-
-static CORE_ADDR gdb_jump_pad_head;
-
-/* Return the address of the next free jump space.  */
-
-static CORE_ADDR
-get_jump_space_head (void)
-{
-  if (gdb_jump_pad_head == 0)
-    {
-      if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_jump_pad_buffer,
-				      &gdb_jump_pad_head))
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "error extracting jump_pad_buffer");
-	}
-    }
-
-  return gdb_jump_pad_head;
-}
-
-/* Reserve USED bytes from the jump space.  */
-
-static void
-claim_jump_space (ULONGEST used)
-{
-  trace_debug ("claim_jump_space reserves %s bytes at %s",
-	       pulongest (used), paddress (gdb_jump_pad_head));
-  gdb_jump_pad_head += used;
-}
-
-static CORE_ADDR trampoline_buffer_head = 0;
-static CORE_ADDR trampoline_buffer_tail;
-
-/* Reserve USED bytes from the trampoline buffer and return the
-   address of the start of the reserved space in TRAMPOLINE.  Returns
-   non-zero if the space is successfully claimed.  */
-
-int
-claim_trampoline_space (ULONGEST used, CORE_ADDR *trampoline)
-{
-  if (!trampoline_buffer_head)
-    {
-      if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer,
-				      &trampoline_buffer_tail))
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "error extracting trampoline_buffer");
-	}
-
-      if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer_end,
-				      &trampoline_buffer_head))
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "error extracting trampoline_buffer_end");
-	}
-    }
-
-  /* Start claiming space from the top of the trampoline space.  If
-     the space is located at the bottom of the virtual address space,
-     this reduces the possibility that corruption will occur if a null
-     pointer is used to write to memory.  */
-  if (trampoline_buffer_head - trampoline_buffer_tail < used)
-    {
-      trace_debug ("claim_trampoline_space failed to reserve %s bytes",
-		   pulongest (used));
-      return 0;
-    }
-
-  trampoline_buffer_head -= used;
-
-  trace_debug ("claim_trampoline_space reserves %s bytes at %s",
-	       pulongest (used), paddress (trampoline_buffer_head));
-
-  *trampoline = trampoline_buffer_head;
-  return 1;
-}
-
-/* Returns non-zero if there is space allocated for use in trampolines
-   for fast tracepoints.  */
-
-int
-have_fast_tracepoint_trampoline_buffer (char *buf)
-{
-  CORE_ADDR trampoline_end, errbuf;
-
-  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer_end,
-				  &trampoline_end))
-    {
-      internal_error (__FILE__, __LINE__,
-		      "error extracting trampoline_buffer_end");
-    }
-  
-  if (buf)
-    {
-      buf[0] = '\0';
-      strcpy (buf, "was claiming");
-      if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer_error,
-				  &errbuf))
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "error extracting errbuf");
-	}
-
-      read_inferior_memory (errbuf, (unsigned char *) buf, 100);
-    }
-
-  return trampoline_end != 0;
-}
-
-/* Ask the IPA to probe the marker at ADDRESS.  Returns -1 if running
-   the command fails, or 0 otherwise.  If the command ran
-   successfully, but probing the marker failed, ERROUT will be filled
-   with the error to reply to GDB, and -1 is also returned.  This
-   allows directly passing IPA errors to GDB.  */
-
-static int
-probe_marker_at (CORE_ADDR address, char *errout)
-{
-  char cmd[IPA_CMD_BUF_SIZE];
-  int err;
-
-  sprintf (cmd, "probe_marker_at:%s", paddress (address));
-  err = run_inferior_command (cmd, strlen (cmd) + 1);
-
-  if (err == 0)
-    {
-      if (*cmd == 'E')
-	{
-	  strcpy (errout, cmd);
-	  return -1;
-	}
-    }
-
-  return err;
-}
-
-static void
-clone_fast_tracepoint (struct tracepoint *to, const struct tracepoint *from)
-{
-  to->jump_pad = from->jump_pad;
-  to->jump_pad_end = from->jump_pad_end;
-  to->trampoline = from->trampoline;
-  to->trampoline_end = from->trampoline_end;
-  to->adjusted_insn_addr = from->adjusted_insn_addr;
-  to->adjusted_insn_addr_end = from->adjusted_insn_addr_end;
-  to->handle = from->handle;
-
-  gdb_assert (from->handle);
-  inc_ref_fast_tracepoint_jump ((struct fast_tracepoint_jump *) from->handle);
-}
-
-#define MAX_JUMP_SIZE 20
-
-/* Install fast tracepoint.  Return 0 if successful, otherwise return
-   non-zero.  */
-
-static int
-install_fast_tracepoint (struct tracepoint *tpoint, char *errbuf)
-{
-  CORE_ADDR jentry, jump_entry;
-  CORE_ADDR trampoline;
-  CORE_ADDR collect;
-  ULONGEST trampoline_size;
-  int err = 0;
-  /* The jump to the jump pad of the last fast tracepoint
-     installed.  */
-  unsigned char fjump[MAX_JUMP_SIZE];
-  ULONGEST fjump_size;
-
-  if (tpoint->orig_size < target_get_min_fast_tracepoint_insn_len ())
-    {
-      trace_debug ("Requested a fast tracepoint on an instruction "
-		   "that is of less than the minimum length.");
-      return 0;
-    }
-
-  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_collect_ptr,
-				  &collect))
-    {
-      error ("error extracting gdb_collect_ptr");
-      return 1;
-    }
-
-  jentry = jump_entry = get_jump_space_head ();
-
-  trampoline = 0;
-  trampoline_size = 0;
-
-  /* Install the jump pad.  */
-  err = install_fast_tracepoint_jump_pad (tpoint->obj_addr_on_target,
-					  tpoint->address,
-					  collect,
-					  ipa_sym_addrs.addr_collecting,
-					  tpoint->orig_size,
-					  &jentry,
-					  &trampoline, &trampoline_size,
-					  fjump, &fjump_size,
-					  &tpoint->adjusted_insn_addr,
-					  &tpoint->adjusted_insn_addr_end,
-					  errbuf);
-
-  if (err)
-    return 1;
-
-  /* Wire it in.  */
-  tpoint->handle = set_fast_tracepoint_jump (tpoint->address, fjump,
-					     fjump_size);
-
-  if (tpoint->handle != NULL)
-    {
-      tpoint->jump_pad = jump_entry;
-      tpoint->jump_pad_end = jentry;
-      tpoint->trampoline = trampoline;
-      tpoint->trampoline_end = trampoline + trampoline_size;
-
-      /* Pad to 8-byte alignment.  */
-      jentry = ((jentry + 7) & ~0x7);
-      claim_jump_space (jentry - jump_entry);
-    }
-
-  return 0;
-}
-
-
-/* Install tracepoint TPOINT, and write reply message in OWN_BUF.  */
-
-static void
-install_tracepoint (struct tracepoint *tpoint, char *own_buf)
-{
-  tpoint->handle = NULL;
-  *own_buf = '\0';
-
-  if (tpoint->type == trap_tracepoint)
-    {
-      /* Tracepoints are installed as memory breakpoints.  Just go
-	 ahead and install the trap.  The breakpoints module
-	 handles duplicated breakpoints, and the memory read
-	 routine handles un-patching traps from memory reads.  */
-      tpoint->handle = set_breakpoint_at (tpoint->address,
-					  tracepoint_handler);
-    }
-  else if (tpoint->type == fast_tracepoint || tpoint->type == static_tracepoint)
-    {
-      if (!agent_loaded_p ())
-	{
-	  trace_debug ("Requested a %s tracepoint, but fast "
-		       "tracepoints aren't supported.",
-		       tpoint->type == static_tracepoint ? "static" : "fast");
-	  write_e_ipa_not_loaded (own_buf);
-	  return;
-	}
-      if (tpoint->type == static_tracepoint
-	  && !in_process_agent_supports_ust ())
-	{
-	  trace_debug ("Requested a static tracepoint, but static "
-		       "tracepoints are not supported.");
-	  write_e_ust_not_loaded (own_buf);
-	  return;
-	}
-
-      if (tpoint->type == fast_tracepoint)
-	install_fast_tracepoint (tpoint, own_buf);
-      else
-	{
-	  if (probe_marker_at (tpoint->address, own_buf) == 0)
-	    tpoint->handle = (void *) -1;
-	}
-
-    }
-  else
-    internal_error (__FILE__, __LINE__, "Unknown tracepoint type");
-
-  if (tpoint->handle == NULL)
-    {
-      if (*own_buf == '\0')
-	write_enn (own_buf);
-    }
-  else
-    write_ok (own_buf);
-}
-
-static void download_tracepoint_1 (struct tracepoint *tpoint);
-
-static void
-cmd_qtstart (char *packet)
-{
-  struct tracepoint *tpoint, *prev_ftpoint, *prev_stpoint;
-  CORE_ADDR tpptr = 0, prev_tpptr = 0;
-
-  trace_debug ("Starting the trace");
-
-  /* Pause all threads temporarily while we patch tracepoints.  */
-  pause_all (0);
-
-  /* Get threads out of jump pads.  Safe to do here, since this is a
-     top level command.  And, required to do here, since we're
-     deleting/rewriting jump pads.  */
-
-  stabilize_threads ();
-
-  /* Freeze threads.  */
-  pause_all (1);
-
-  /* Sync the fast tracepoints list in the inferior ftlib.  */
-  if (agent_loaded_p ())
-    download_trace_state_variables ();
-
-  /* No previous fast tpoint yet.  */
-  prev_ftpoint = NULL;
-
-  /* No previous static tpoint yet.  */
-  prev_stpoint = NULL;
-
-  *packet = '\0';
-
-  if (agent_loaded_p ())
-    {
-      /* Tell IPA about the correct tdesc.  */
-      if (write_inferior_integer (ipa_sym_addrs.addr_ipa_tdesc_idx,
-				  target_get_ipa_tdesc_idx ()))
-        error ("Error setting ipa_tdesc_idx variable in lib");
-    }
-
-  /* Start out empty.  */
-  if (agent_loaded_p ())
-    write_inferior_data_pointer (ipa_sym_addrs.addr_tracepoints, 0);
-
-  /* Download and install tracepoints.  */
-  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
-    {
-      /* Ensure all the hit counts start at zero.  */
-      tpoint->hit_count = 0;
-      tpoint->traceframe_usage = 0;
-
-      if (tpoint->type == trap_tracepoint)
-	{
-	  /* Tracepoints are installed as memory breakpoints.  Just go
-	     ahead and install the trap.  The breakpoints module
-	     handles duplicated breakpoints, and the memory read
-	     routine handles un-patching traps from memory reads.  */
-	  tpoint->handle = set_breakpoint_at (tpoint->address,
-					      tracepoint_handler);
-	}
-      else if (tpoint->type == fast_tracepoint
-	       || tpoint->type == static_tracepoint)
-	{
-	  if (maybe_write_ipa_not_loaded (packet))
-	    {
-	      trace_debug ("Requested a %s tracepoint, but fast "
-			   "tracepoints aren't supported.",
-			   tpoint->type == static_tracepoint
-			   ? "static" : "fast");
-	      break;
-	    }
-
-	  if (tpoint->type == fast_tracepoint)
-	    {
-	      int use_agent_p
-		= use_agent && agent_capability_check (AGENT_CAPA_FAST_TRACE);
-
-	      if (prev_ftpoint != NULL
-		  && prev_ftpoint->address == tpoint->address)
-		{
-		  if (use_agent_p)
-		    tracepoint_send_agent (tpoint);
-		  else
-		    download_tracepoint_1 (tpoint);
-
-		  clone_fast_tracepoint (tpoint, prev_ftpoint);
-		}
-	      else
-		{
-		  /* Tracepoint is installed successfully?  */
-		  int installed = 0;
-
-		  /* Download and install fast tracepoint by agent.  */
-		  if (use_agent_p)
-		    installed = !tracepoint_send_agent (tpoint);
-		  else
-		    {
-		      download_tracepoint_1 (tpoint);
-		      installed = !install_fast_tracepoint (tpoint, packet);
-		    }
-
-		  if (installed)
-		    prev_ftpoint = tpoint;
-		}
-	    }
-	  else
-	    {
-	      if (!in_process_agent_supports_ust ())
-		{
-		  trace_debug ("Requested a static tracepoint, but static "
-			       "tracepoints are not supported.");
-		  break;
-		}
-
-	      download_tracepoint_1 (tpoint);
-	      /* Can only probe a given marker once.  */
-	      if (prev_stpoint != NULL
-		  && prev_stpoint->address == tpoint->address)
-		tpoint->handle = (void *) -1;
-	      else
-		{
-		  if (probe_marker_at (tpoint->address, packet) == 0)
-		    {
-		      tpoint->handle = (void *) -1;
-
-		      /* So that we can handle multiple static tracepoints
-			 at the same address easily.  */
-		      prev_stpoint = tpoint;
-		    }
-		}
-	    }
-
-	  prev_tpptr = tpptr;
-	  tpptr = tpoint->obj_addr_on_target;
-
-	  if (tpoint == tracepoints)
-	    /* First object in list, set the head pointer in the
-	       inferior.  */
-	    write_inferior_data_pointer (ipa_sym_addrs.addr_tracepoints, tpptr);
-	  else
-	    write_inferior_data_pointer (prev_tpptr
-					 + offsetof (struct tracepoint, next),
-					 tpptr);
-	}
-
-      /* Any failure in the inner loop is sufficient cause to give
-	 up.  */
-      if (tpoint->handle == NULL)
-	break;
-    }
-
-  /* Any error in tracepoint insertion is unacceptable; better to
-     address the problem now, than end up with a useless or misleading
-     trace run.  */
-  if (tpoint != NULL)
-    {
-      clear_installed_tracepoints ();
-      if (*packet == '\0')
-	write_enn (packet);
-      unpause_all (1);
-      return;
-    }
-
-  stopping_tracepoint = NULL;
-  trace_buffer_is_full = 0;
-  expr_eval_result = expr_eval_no_error;
-  error_tracepoint = NULL;
-  tracing_start_time = get_timestamp ();
-
-  /* Tracing is now active, hits will now start being logged.  */
-  tracing = 1;
-
-  if (agent_loaded_p ())
-    {
-      if (write_inferior_integer (ipa_sym_addrs.addr_tracing, 1))
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "Error setting tracing variable in lib");
-	}
-
-      if (write_inferior_data_pointer (ipa_sym_addrs.addr_stopping_tracepoint,
-				       0))
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "Error clearing stopping_tracepoint variable"
-			  " in lib");
-	}
-
-      if (write_inferior_integer (ipa_sym_addrs.addr_trace_buffer_is_full, 0))
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "Error clearing trace_buffer_is_full variable"
-			  " in lib");
-	}
-
-      stop_tracing_bkpt = set_breakpoint_at (ipa_sym_addrs.addr_stop_tracing,
-					     stop_tracing_handler);
-      if (stop_tracing_bkpt == NULL)
-	error ("Error setting stop_tracing breakpoint");
-
-      flush_trace_buffer_bkpt
-	= set_breakpoint_at (ipa_sym_addrs.addr_flush_trace_buffer,
-			     flush_trace_buffer_handler);
-      if (flush_trace_buffer_bkpt == NULL)
-	error ("Error setting flush_trace_buffer breakpoint");
-    }
-
-  unpause_all (1);
-
-  write_ok (packet);
-}
-
-/* End a tracing run, filling in a stop reason to report back to GDB,
-   and removing the tracepoints from the code.  */
-
-void
-stop_tracing (void)
-{
-  if (!tracing)
-    {
-      trace_debug ("Tracing is already off, ignoring");
-      return;
-    }
-
-  trace_debug ("Stopping the trace");
-
-  /* Pause all threads before removing fast jumps from memory,
-     breakpoints, and touching IPA state variables (inferior memory).
-     Some thread may hit the internal tracing breakpoints, or be
-     collecting this moment, but that's ok, we don't release the
-     tpoint object's memory or the jump pads here (we only do that
-     when we're sure we can move all threads out of the jump pads).
-     We can't now, since we may be getting here due to the inferior
-     agent calling us.  */
-  pause_all (1);
-
-  /* Stop logging. Tracepoints can still be hit, but they will not be
-     recorded.  */
-  tracing = 0;
-  if (agent_loaded_p ())
-    {
-      if (write_inferior_integer (ipa_sym_addrs.addr_tracing, 0))
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "Error clearing tracing variable in lib");
-	}
-    }
-
-  tracing_stop_time = get_timestamp ();
-  tracing_stop_reason = "t???";
-  tracing_stop_tpnum = 0;
-  if (stopping_tracepoint)
-    {
-      trace_debug ("Stopping the trace because "
-		   "tracepoint %d was hit %" PRIu64 " times",
-		   stopping_tracepoint->number,
-		   stopping_tracepoint->pass_count);
-      tracing_stop_reason = "tpasscount";
-      tracing_stop_tpnum = stopping_tracepoint->number;
-    }
-  else if (trace_buffer_is_full)
-    {
-      trace_debug ("Stopping the trace because the trace buffer is full");
-      tracing_stop_reason = "tfull";
-    }
-  else if (expr_eval_result != expr_eval_no_error)
-    {
-      trace_debug ("Stopping the trace because of an expression eval error");
-      tracing_stop_reason = eval_result_names[expr_eval_result];
-      tracing_stop_tpnum = error_tracepoint->number;
-    }
-#ifndef IN_PROCESS_AGENT
-  else if (!gdb_connected ())
-    {
-      trace_debug ("Stopping the trace because GDB disconnected");
-      tracing_stop_reason = "tdisconnected";
-    }
-#endif
-  else
-    {
-      trace_debug ("Stopping the trace because of a tstop command");
-      tracing_stop_reason = "tstop";
-    }
-
-  stopping_tracepoint = NULL;
-  error_tracepoint = NULL;
-
-  /* Clear out the tracepoints.  */
-  clear_installed_tracepoints ();
-
-  if (agent_loaded_p ())
-    {
-      /* Pull in fast tracepoint trace frames from the inferior lib
-	 buffer into our buffer, even if our buffer is already full,
-	 because we want to present the full number of created frames
-	 in addition to what fit in the trace buffer.  */
-      upload_fast_traceframes ();
-    }
-
-  if (stop_tracing_bkpt != NULL)
-    {
-      delete_breakpoint (stop_tracing_bkpt);
-      stop_tracing_bkpt = NULL;
-    }
-
-  if (flush_trace_buffer_bkpt != NULL)
-    {
-      delete_breakpoint (flush_trace_buffer_bkpt);
-      flush_trace_buffer_bkpt = NULL;
-    }
-
-  unpause_all (1);
-}
-
-static int
-stop_tracing_handler (CORE_ADDR addr)
-{
-  trace_debug ("lib hit stop_tracing");
-
-  /* Don't actually handle it here.  When we stop tracing we remove
-     breakpoints from the inferior, and that is not allowed in a
-     breakpoint handler (as the caller is walking the breakpoint
-     list).  */
-  return 0;
-}
-
-static int
-flush_trace_buffer_handler (CORE_ADDR addr)
-{
-  trace_debug ("lib hit flush_trace_buffer");
-  return 0;
-}
-
-static void
-cmd_qtstop (char *packet)
-{
-  stop_tracing ();
-  write_ok (packet);
-}
-
-static void
-cmd_qtdisconnected (char *own_buf)
-{
-  ULONGEST setting;
-  char *packet = own_buf;
-
-  packet += strlen ("QTDisconnected:");
-
-  unpack_varlen_hex (packet, &setting);
-
-  write_ok (own_buf);
-
-  disconnected_tracing = setting;
-}
-
-static void
-cmd_qtframe (char *own_buf)
-{
-  client_state &cs = get_client_state ();
-  ULONGEST frame, pc, lo, hi, num;
-  int tfnum, tpnum;
-  struct traceframe *tframe;
-  const char *packet = own_buf;
-
-  packet += strlen ("QTFrame:");
-
-  if (startswith (packet, "pc:"))
-    {
-      packet += strlen ("pc:");
-      unpack_varlen_hex (packet, &pc);
-      trace_debug ("Want to find next traceframe at pc=0x%s", paddress (pc));
-      tframe = find_next_traceframe_in_range (pc, pc, 1, &tfnum);
-    }
-  else if (startswith (packet, "range:"))
-    {
-      packet += strlen ("range:");
-      packet = unpack_varlen_hex (packet, &lo);
-      ++packet;
-      unpack_varlen_hex (packet, &hi);
-      trace_debug ("Want to find next traceframe in the range 0x%s to 0x%s",
-		   paddress (lo), paddress (hi));
-      tframe = find_next_traceframe_in_range (lo, hi, 1, &tfnum);
-    }
-  else if (startswith (packet, "outside:"))
-    {
-      packet += strlen ("outside:");
-      packet = unpack_varlen_hex (packet, &lo);
-      ++packet;
-      unpack_varlen_hex (packet, &hi);
-      trace_debug ("Want to find next traceframe "
-		   "outside the range 0x%s to 0x%s",
-		   paddress (lo), paddress (hi));
-      tframe = find_next_traceframe_in_range (lo, hi, 0, &tfnum);
-    }
-  else if (startswith (packet, "tdp:"))
-    {
-      packet += strlen ("tdp:");
-      unpack_varlen_hex (packet, &num);
-      tpnum = (int) num;
-      trace_debug ("Want to find next traceframe for tracepoint %d", tpnum);
-      tframe = find_next_traceframe_by_tracepoint (tpnum, &tfnum);
-    }
-  else
-    {
-      unpack_varlen_hex (packet, &frame);
-      tfnum = (int) frame;
-      if (tfnum == -1)
-	{
-	  trace_debug ("Want to stop looking at traceframes");
-	  cs.current_traceframe = -1;
-	  write_ok (own_buf);
-	  return;
-	}
-      trace_debug ("Want to look at traceframe %d", tfnum);
-      tframe = find_traceframe (tfnum);
-    }
-
-  if (tframe)
-    {
-      cs.current_traceframe = tfnum;
-      sprintf (own_buf, "F%xT%x", tfnum, tframe->tpnum);
-    }
-  else
-    sprintf (own_buf, "F-1");
-}
-
-static void
-cmd_qtstatus (char *packet)
-{
-  char *stop_reason_rsp = NULL;
-  char *buf1, *buf2, *buf3;
-  const char *str;
-  int slen;
-
-  /* Translate the plain text of the notes back into hex for
-     transmission.  */
-
-  str = (tracing_user_name ? tracing_user_name : "");
-  slen = strlen (str);
-  buf1 = (char *) alloca (slen * 2 + 1);
-  bin2hex ((gdb_byte *) str, buf1, slen);
-
-  str = (tracing_notes ? tracing_notes : "");
-  slen = strlen (str);
-  buf2 = (char *) alloca (slen * 2 + 1);
-  bin2hex ((gdb_byte *) str, buf2, slen);
-
-  str = (tracing_stop_note ? tracing_stop_note : "");
-  slen = strlen (str);
-  buf3 = (char *) alloca (slen * 2 + 1);
-  bin2hex ((gdb_byte *) str, buf3, slen);
-
-  trace_debug ("Returning trace status as %d, stop reason %s",
-	       tracing, tracing_stop_reason);
-
-  if (agent_loaded_p ())
-    {
-      pause_all (1);
-
-      upload_fast_traceframes ();
-
-      unpause_all (1);
-   }
-
-  stop_reason_rsp = (char *) tracing_stop_reason;
-
-  /* The user visible error string in terror needs to be hex encoded.
-     We leave it as plain string in `tracing_stop_reason' to ease
-     debugging.  */
-  if (startswith (stop_reason_rsp, "terror:"))
-    {
-      const char *result_name;
-      int hexstr_len;
-      char *p;
-
-      result_name = stop_reason_rsp + strlen ("terror:");
-      hexstr_len = strlen (result_name) * 2;
-      p = stop_reason_rsp
-	= (char *) alloca (strlen ("terror:") + hexstr_len + 1);
-      strcpy (p, "terror:");
-      p += strlen (p);
-      bin2hex ((gdb_byte *) result_name, p, strlen (result_name));
-    }
-
-  /* If this was a forced stop, include any stop note that was supplied.  */
-  if (strcmp (stop_reason_rsp, "tstop") == 0)
-    {
-      stop_reason_rsp = (char *) alloca (strlen ("tstop:") + strlen (buf3) + 1);
-      strcpy (stop_reason_rsp, "tstop:");
-      strcat (stop_reason_rsp, buf3);
-    }
-
-  sprintf (packet,
-	   "T%d;"
-	   "%s:%x;"
-	   "tframes:%x;tcreated:%x;"
-	   "tfree:%x;tsize:%s;"
-	   "circular:%d;"
-	   "disconn:%d;"
-	   "starttime:%s;stoptime:%s;"
-	   "username:%s;notes:%s:",
-	   tracing ? 1 : 0,
-	   stop_reason_rsp, tracing_stop_tpnum,
-	   traceframe_count, traceframes_created,
-	   free_space (), phex_nz (trace_buffer_hi - trace_buffer_lo, 0),
-	   circular_trace_buffer,
-	   disconnected_tracing,
-	   phex_nz (tracing_start_time, sizeof (tracing_start_time)),
-	   phex_nz (tracing_stop_time, sizeof (tracing_stop_time)),
-	   buf1, buf2);
-}
-
-static void
-cmd_qtp (char *own_buf)
-{
-  ULONGEST num, addr;
-  struct tracepoint *tpoint;
-  const char *packet = own_buf;
-
-  packet += strlen ("qTP:");
-
-  packet = unpack_varlen_hex (packet, &num);
-  ++packet; /* skip a colon */
-  packet = unpack_varlen_hex (packet, &addr);
-
-  /* See if we already have this tracepoint.  */
-  tpoint = find_tracepoint (num, addr);
-
-  if (!tpoint)
-    {
-      trace_debug ("Tracepoint error: tracepoint %d at 0x%s not found",
-		   (int) num, paddress (addr));
-      write_enn (own_buf);
-      return;
-    }
-
-  sprintf (own_buf, "V%" PRIu64 ":%" PRIu64 "", tpoint->hit_count,
-	   tpoint->traceframe_usage);
-}
-
-/* State variables to help return all the tracepoint bits.  */
-static struct tracepoint *cur_tpoint;
-static unsigned int cur_action;
-static unsigned int cur_step_action;
-static struct source_string *cur_source_string;
-static struct trace_state_variable *cur_tsv;
-
-/* Compose a response that is an imitation of the syntax by which the
-   tracepoint was originally downloaded.  */
-
-static void
-response_tracepoint (char *packet, struct tracepoint *tpoint)
-{
-  char *buf;
-
-  sprintf (packet, "T%x:%s:%c:%" PRIx64 ":%" PRIx64, tpoint->number,
-	   paddress (tpoint->address),
-	   (tpoint->enabled ? 'E' : 'D'), tpoint->step_count,
-	   tpoint->pass_count);
-  if (tpoint->type == fast_tracepoint)
-    sprintf (packet + strlen (packet), ":F%x", tpoint->orig_size);
-  else if (tpoint->type == static_tracepoint)
-    sprintf (packet + strlen (packet), ":S");
-
-  if (tpoint->cond)
-    {
-      buf = gdb_unparse_agent_expr (tpoint->cond);
-      sprintf (packet + strlen (packet), ":X%x,%s",
-	       tpoint->cond->length, buf);
-      free (buf);
-    }
-}
-
-/* Compose a response that is an imitation of the syntax by which the
-   tracepoint action was originally downloaded (with the difference
-   that due to the way we store the actions, this will output a packet
-   per action, while GDB could have combined more than one action
-   per-packet.  */
-
-static void
-response_action (char *packet, struct tracepoint *tpoint,
-		 char *taction, int step)
-{
-  sprintf (packet, "%c%x:%s:%s",
-	   (step ? 'S' : 'A'), tpoint->number, paddress (tpoint->address),
-	   taction);
-}
-
-/* Compose a response that is an imitation of the syntax by which the
-   tracepoint source piece was originally downloaded.  */
-
-static void
-response_source (char *packet,
-		 struct tracepoint *tpoint, struct source_string *src)
-{
-  char *buf;
-  int len;
-
-  len = strlen (src->str);
-  buf = (char *) alloca (len * 2 + 1);
-  bin2hex ((gdb_byte *) src->str, buf, len);
-
-  sprintf (packet, "Z%x:%s:%s:%x:%x:%s",
-	   tpoint->number, paddress (tpoint->address),
-	   src->type, 0, len, buf);
-}
-
-/* Return the first piece of tracepoint definition, and initialize the
-   state machine that will iterate through all the tracepoint
-   bits.  */
-
-static void
-cmd_qtfp (char *packet)
-{
-  trace_debug ("Returning first tracepoint definition piece");
-
-  cur_tpoint = tracepoints;
-  cur_action = cur_step_action = 0;
-  cur_source_string = NULL;
-
-  if (cur_tpoint)
-    response_tracepoint (packet, cur_tpoint);
-  else
-    strcpy (packet, "l");
-}
-
-/* Return additional pieces of tracepoint definition.  Each action and
-   stepping action must go into its own packet, because of packet size
-   limits, and so we use state variables to deliver one piece at a
-   time.  */
-
-static void
-cmd_qtsp (char *packet)
-{
-  trace_debug ("Returning subsequent tracepoint definition piece");
-
-  if (!cur_tpoint)
-    {
-      /* This case would normally never occur, but be prepared for
-	 GDB misbehavior.  */
-      strcpy (packet, "l");
-    }
-  else if (cur_action < cur_tpoint->numactions)
-    {
-      response_action (packet, cur_tpoint,
-		       cur_tpoint->actions_str[cur_action], 0);
-      ++cur_action;
-    }
-  else if (cur_step_action < cur_tpoint->num_step_actions)
-    {
-      response_action (packet, cur_tpoint,
-		       cur_tpoint->step_actions_str[cur_step_action], 1);
-      ++cur_step_action;
-    }
-  else if ((cur_source_string
-	    ? cur_source_string->next
-	    : cur_tpoint->source_strings))
-    {
-      if (cur_source_string)
-	cur_source_string = cur_source_string->next;
-      else
-	cur_source_string = cur_tpoint->source_strings;
-      response_source (packet, cur_tpoint, cur_source_string);
-    }
-  else
-    {
-      cur_tpoint = cur_tpoint->next;
-      cur_action = cur_step_action = 0;
-      cur_source_string = NULL;
-      if (cur_tpoint)
-	response_tracepoint (packet, cur_tpoint);
-      else
-	strcpy (packet, "l");
-    }
-}
-
-/* Compose a response that is an imitation of the syntax by which the
-   trace state variable was originally downloaded.  */
-
-static void
-response_tsv (char *packet, struct trace_state_variable *tsv)
-{
-  char *buf = (char *) "";
-  int namelen;
-
-  if (tsv->name)
-    {
-      namelen = strlen (tsv->name);
-      buf = (char *) alloca (namelen * 2 + 1);
-      bin2hex ((gdb_byte *) tsv->name, buf, namelen);
-    }
-
-  sprintf (packet, "%x:%s:%x:%s", tsv->number, phex_nz (tsv->initial_value, 0),
-	   tsv->getter ? 1 : 0, buf);
-}
-
-/* Return the first trace state variable definition, and initialize
-   the state machine that will iterate through all the tsv bits.  */
-
-static void
-cmd_qtfv (char *packet)
-{
-  trace_debug ("Returning first trace state variable definition");
-
-  cur_tsv = trace_state_variables;
-
-  if (cur_tsv)
-    response_tsv (packet, cur_tsv);
-  else
-    strcpy (packet, "l");
-}
-
-/* Return additional trace state variable definitions. */
-
-static void
-cmd_qtsv (char *packet)
-{
-  trace_debug ("Returning additional trace state variable definition");
-
-  if (cur_tsv)
-    {
-      cur_tsv = cur_tsv->next;
-      if (cur_tsv)
-	response_tsv (packet, cur_tsv);
-      else
-	strcpy (packet, "l");
-    }
-  else
-    strcpy (packet, "l");
-}
-
-/* Return the first static tracepoint marker, and initialize the state
-   machine that will iterate through all the static tracepoints
-   markers.  */
-
-static void
-cmd_qtfstm (char *packet)
-{
-  if (!maybe_write_ipa_ust_not_loaded (packet))
-    run_inferior_command (packet, strlen (packet) + 1);
-}
-
-/* Return additional static tracepoints markers.  */
-
-static void
-cmd_qtsstm (char *packet)
-{
-  if (!maybe_write_ipa_ust_not_loaded (packet))
-    run_inferior_command (packet, strlen (packet) + 1);
-}
-
-/* Return the definition of the static tracepoint at a given address.
-   Result packet is the same as qTsST's.  */
-
-static void
-cmd_qtstmat (char *packet)
-{
-  if (!maybe_write_ipa_ust_not_loaded (packet))
-    run_inferior_command (packet, strlen (packet) + 1);
-}
-
-/* Sent the agent a command to close it.  */
-
-void
-gdb_agent_about_to_close (int pid)
-{
-  char buf[IPA_CMD_BUF_SIZE];
-
-  if (!maybe_write_ipa_not_loaded (buf))
-    {
-      struct thread_info *saved_thread;
-
-      saved_thread = current_thread;
-
-      /* Find any thread which belongs to process PID.  */
-      current_thread = find_any_thread_of_pid (pid);
-
-      strcpy (buf, "close");
-
-      run_inferior_command (buf, strlen (buf) + 1);
-
-      current_thread = saved_thread;
-    }
-}
-
-/* Return the minimum instruction size needed for fast tracepoints as a
-   hexadecimal number.  */
-
-static void
-cmd_qtminftpilen (char *packet)
-{
-  if (current_thread == NULL)
-    {
-      /* Indicate that the minimum length is currently unknown.  */
-      strcpy (packet, "0");
-      return;
-    }
-
-  sprintf (packet, "%x", target_get_min_fast_tracepoint_insn_len ());
-}
-
-/* Respond to qTBuffer packet with a block of raw data from the trace
-   buffer.  GDB may ask for a lot, but we are allowed to reply with
-   only as much as will fit within packet limits or whatever.  */
-
-static void
-cmd_qtbuffer (char *own_buf)
-{
-  ULONGEST offset, num, tot;
-  unsigned char *tbp;
-  const char *packet = own_buf;
-
-  packet += strlen ("qTBuffer:");
-
-  packet = unpack_varlen_hex (packet, &offset);
-  ++packet; /* skip a comma */
-  unpack_varlen_hex (packet, &num);
-
-  trace_debug ("Want to get trace buffer, %d bytes at offset 0x%s",
-	       (int) num, phex_nz (offset, 0));
-
-  tot = (trace_buffer_hi - trace_buffer_lo) - free_space ();
-
-  /* If we're right at the end, reply specially that we're done.  */
-  if (offset == tot)
-    {
-      strcpy (own_buf, "l");
-      return;
-    }
-
-  /* Object to any other out-of-bounds request.  */
-  if (offset > tot)
-    {
-      write_enn (own_buf);
-      return;
-    }
-
-  /* Compute the pointer corresponding to the given offset, accounting
-     for wraparound.  */
-  tbp = trace_buffer_start + offset;
-  if (tbp >= trace_buffer_wrap)
-    tbp -= (trace_buffer_wrap - trace_buffer_lo);
-
-  /* Trim to the remaining bytes if we're close to the end.  */
-  if (num > tot - offset)
-    num = tot - offset;
-
-  /* Trim to available packet size.  */
-  if (num >= (PBUFSIZ - 16) / 2 )
-    num = (PBUFSIZ - 16) / 2;
-
-  bin2hex (tbp, own_buf, num);
-}
-
-static void
-cmd_bigqtbuffer_circular (char *own_buf)
-{
-  ULONGEST val;
-  char *packet = own_buf;
-
-  packet += strlen ("QTBuffer:circular:");
-
-  unpack_varlen_hex (packet, &val);
-  circular_trace_buffer = val;
-  trace_debug ("Trace buffer is now %s",
-	       circular_trace_buffer ? "circular" : "linear");
-  write_ok (own_buf);
-}
-
-static void
-cmd_bigqtbuffer_size (char *own_buf)
-{
-  ULONGEST val;
-  LONGEST sval;
-  char *packet = own_buf;
-
-  /* Can't change the size during a tracing run.  */
-  if (tracing)
-    {
-      write_enn (own_buf);
-      return;
-    }
-
-  packet += strlen ("QTBuffer:size:");
-
-  /* -1 is sent as literal "-1".  */
-  if (strcmp (packet, "-1") == 0)
-    sval = DEFAULT_TRACE_BUFFER_SIZE;
-  else
-    {
-      unpack_varlen_hex (packet, &val);
-      sval = (LONGEST) val;
-    }
-
-  init_trace_buffer (sval);
-  trace_debug ("Trace buffer is now %s bytes",
-	       plongest (trace_buffer_size));
-  write_ok (own_buf);
-}
-
-static void
-cmd_qtnotes (char *own_buf)
-{
-  size_t nbytes;
-  char *saved, *user, *notes, *stopnote;
-  char *packet = own_buf;
-
-  packet += strlen ("QTNotes:");
-
-  while (*packet)
-    {
-      if (startswith (packet, "user:"))
-	{
-	  packet += strlen ("user:");
-	  saved = packet;
-	  packet = strchr (packet, ';');
-	  nbytes = (packet - saved) / 2;
-	  user = (char *) xmalloc (nbytes + 1);
-	  nbytes = hex2bin (saved, (gdb_byte *) user, nbytes);
-	  user[nbytes] = '\0';
-	  ++packet; /* skip the semicolon */
-	  trace_debug ("User is '%s'", user);
-	  xfree (tracing_user_name);
-	  tracing_user_name = user;
-	}
-      else if (startswith (packet, "notes:"))
-	{
-	  packet += strlen ("notes:");
-	  saved = packet;
-	  packet = strchr (packet, ';');
-	  nbytes = (packet - saved) / 2;
-	  notes = (char *) xmalloc (nbytes + 1);
-	  nbytes = hex2bin (saved, (gdb_byte *) notes, nbytes);
-	  notes[nbytes] = '\0';
-	  ++packet; /* skip the semicolon */
-	  trace_debug ("Notes is '%s'", notes);
-	  xfree (tracing_notes);
-	  tracing_notes = notes;
-	}
-      else if (startswith (packet, "tstop:"))
-	{
-	  packet += strlen ("tstop:");
-	  saved = packet;
-	  packet = strchr (packet, ';');
-	  nbytes = (packet - saved) / 2;
-	  stopnote = (char *) xmalloc (nbytes + 1);
-	  nbytes = hex2bin (saved, (gdb_byte *) stopnote, nbytes);
-	  stopnote[nbytes] = '\0';
-	  ++packet; /* skip the semicolon */
-	  trace_debug ("tstop note is '%s'", stopnote);
-	  xfree (tracing_stop_note);
-	  tracing_stop_note = stopnote;
-	}
-      else
-	break;
-    }
-
-  write_ok (own_buf);
-}
-
-int
-handle_tracepoint_general_set (char *packet)
-{
-  if (strcmp ("QTinit", packet) == 0)
-    {
-      cmd_qtinit (packet);
-      return 1;
-    }
-  else if (startswith (packet, "QTDP:"))
-    {
-      cmd_qtdp (packet);
-      return 1;
-    }
-  else if (startswith (packet, "QTDPsrc:"))
-    {
-      cmd_qtdpsrc (packet);
-      return 1;
-    }
-  else if (startswith (packet, "QTEnable:"))
-    {
-      cmd_qtenable_disable (packet, 1);
-      return 1;
-    }
-  else if (startswith (packet, "QTDisable:"))
-    {
-      cmd_qtenable_disable (packet, 0);
-      return 1;
-    }
-  else if (startswith (packet, "QTDV:"))
-    {
-      cmd_qtdv (packet);
-      return 1;
-    }
-  else if (startswith (packet, "QTro:"))
-    {
-      cmd_qtro (packet);
-      return 1;
-    }
-  else if (strcmp ("QTStart", packet) == 0)
-    {
-      cmd_qtstart (packet);
-      return 1;
-    }
-  else if (strcmp ("QTStop", packet) == 0)
-    {
-      cmd_qtstop (packet);
-      return 1;
-    }
-  else if (startswith (packet, "QTDisconnected:"))
-    {
-      cmd_qtdisconnected (packet);
-      return 1;
-    }
-  else if (startswith (packet, "QTFrame:"))
-    {
-      cmd_qtframe (packet);
-      return 1;
-    }
-  else if (startswith (packet, "QTBuffer:circular:"))
-    {
-      cmd_bigqtbuffer_circular (packet);
-      return 1;
-    }
-  else if (startswith (packet, "QTBuffer:size:"))
-    {
-      cmd_bigqtbuffer_size (packet);
-      return 1;
-    }
-  else if (startswith (packet, "QTNotes:"))
-    {
-      cmd_qtnotes (packet);
-      return 1;
-    }
-
-  return 0;
-}
-
-int
-handle_tracepoint_query (char *packet)
-{
-  if (strcmp ("qTStatus", packet) == 0)
-    {
-      cmd_qtstatus (packet);
-      return 1;
-    }
-  else if (startswith (packet, "qTP:"))
-    {
-      cmd_qtp (packet);
-      return 1;
-    }
-  else if (strcmp ("qTfP", packet) == 0)
-    {
-      cmd_qtfp (packet);
-      return 1;
-    }
-  else if (strcmp ("qTsP", packet) == 0)
-    {
-      cmd_qtsp (packet);
-      return 1;
-    }
-  else if (strcmp ("qTfV", packet) == 0)
-    {
-      cmd_qtfv (packet);
-      return 1;
-    }
-  else if (strcmp ("qTsV", packet) == 0)
-    {
-      cmd_qtsv (packet);
-      return 1;
-    }
-  else if (startswith (packet, "qTV:"))
-    {
-      cmd_qtv (packet);
-      return 1;
-    }
-  else if (startswith (packet, "qTBuffer:"))
-    {
-      cmd_qtbuffer (packet);
-      return 1;
-    }
-  else if (strcmp ("qTfSTM", packet) == 0)
-    {
-      cmd_qtfstm (packet);
-      return 1;
-    }
-  else if (strcmp ("qTsSTM", packet) == 0)
-    {
-      cmd_qtsstm (packet);
-      return 1;
-    }
-  else if (startswith (packet, "qTSTMat:"))
-    {
-      cmd_qtstmat (packet);
-      return 1;
-    }
-  else if (strcmp ("qTMinFTPILen", packet) == 0)
-    {
-      cmd_qtminftpilen (packet);
-      return 1;
-    }
-
-  return 0;
-}
-
-#endif
-#ifndef IN_PROCESS_AGENT
-
-/* Call this when thread TINFO has hit the tracepoint defined by
-   TP_NUMBER and TP_ADDRESS, and that tracepoint has a while-stepping
-   action.  This adds a while-stepping collecting state item to the
-   threads' collecting state list, so that we can keep track of
-   multiple simultaneous while-stepping actions being collected by the
-   same thread.  This can happen in cases like:
-
-    ff0001  INSN1 <-- TP1, while-stepping 10 collect $regs
-    ff0002  INSN2
-    ff0003  INSN3 <-- TP2, collect $regs
-    ff0004  INSN4 <-- TP3, while-stepping 10 collect $regs
-    ff0005  INSN5
-
-   Notice that when instruction INSN5 is reached, the while-stepping
-   actions of both TP1 and TP3 are still being collected, and that TP2
-   had been collected meanwhile.  The whole range of ff0001-ff0005
-   should be single-stepped, due to at least TP1's while-stepping
-   action covering the whole range.  */
-
-static void
-add_while_stepping_state (struct thread_info *tinfo,
-			  int tp_number, CORE_ADDR tp_address)
-{
-  struct wstep_state *wstep = XNEW (struct wstep_state);
-
-  wstep->next = tinfo->while_stepping;
-
-  wstep->tp_number = tp_number;
-  wstep->tp_address = tp_address;
-  wstep->current_step = 0;
-
-  tinfo->while_stepping = wstep;
-}
-
-/* Release the while-stepping collecting state WSTEP.  */
-
-static void
-release_while_stepping_state (struct wstep_state *wstep)
-{
-  free (wstep);
-}
-
-/* Release all while-stepping collecting states currently associated
-   with thread TINFO.  */
-
-void
-release_while_stepping_state_list (struct thread_info *tinfo)
-{
-  struct wstep_state *head;
-
-  while (tinfo->while_stepping)
-    {
-      head = tinfo->while_stepping;
-      tinfo->while_stepping = head->next;
-      release_while_stepping_state (head);
-    }
-}
-
-/* If TINFO was handling a 'while-stepping' action, the step has
-   finished, so collect any step data needed, and check if any more
-   steps are required.  Return true if the thread was indeed
-   collecting tracepoint data, false otherwise.  */
-
-int
-tracepoint_finished_step (struct thread_info *tinfo, CORE_ADDR stop_pc)
-{
-  struct tracepoint *tpoint;
-  struct wstep_state *wstep;
-  struct wstep_state **wstep_link;
-  struct trap_tracepoint_ctx ctx;
-
-  /* Pull in fast tracepoint trace frames from the inferior lib buffer into
-     our buffer.  */
-  if (agent_loaded_p ())
-    upload_fast_traceframes ();
-
-  /* Check if we were indeed collecting data for one of more
-     tracepoints with a 'while-stepping' count.  */
-  if (tinfo->while_stepping == NULL)
-    return 0;
-
-  if (!tracing)
-    {
-      /* We're not even tracing anymore.  Stop this thread from
-	 collecting.  */
-      release_while_stepping_state_list (tinfo);
-
-      /* The thread had stopped due to a single-step request indeed
-	 explained by a tracepoint.  */
-      return 1;
-    }
-
-  wstep = tinfo->while_stepping;
-  wstep_link = &tinfo->while_stepping;
-
-  trace_debug ("Thread %s finished a single-step for tracepoint %d at 0x%s",
-	       target_pid_to_str (tinfo->id),
-	       wstep->tp_number, paddress (wstep->tp_address));
-
-  ctx.base.type = trap_tracepoint;
-  ctx.regcache = get_thread_regcache (tinfo, 1);
-
-  while (wstep != NULL)
-    {
-      tpoint = find_tracepoint (wstep->tp_number, wstep->tp_address);
-      if (tpoint == NULL)
-	{
-	  trace_debug ("NO TRACEPOINT %d at 0x%s FOR THREAD %s!",
-		       wstep->tp_number, paddress (wstep->tp_address),
-		       target_pid_to_str (tinfo->id));
-
-	  /* Unlink.  */
-	  *wstep_link = wstep->next;
-	  release_while_stepping_state (wstep);
-	  wstep = *wstep_link;
-	  continue;
-	}
-
-      /* We've just finished one step.  */
-      ++wstep->current_step;
-
-      /* Collect data.  */
-      collect_data_at_step ((struct tracepoint_hit_ctx *) &ctx,
-			    stop_pc, tpoint, wstep->current_step);
-
-      if (wstep->current_step >= tpoint->step_count)
-	{
-	  /* The requested numbers of steps have occurred.  */
-	  trace_debug ("Thread %s done stepping for tracepoint %d at 0x%s",
-		       target_pid_to_str (tinfo->id),
-		       wstep->tp_number, paddress (wstep->tp_address));
-
-	  /* Unlink the wstep.  */
-	  *wstep_link = wstep->next;
-	  release_while_stepping_state (wstep);
-	  wstep = *wstep_link;
-
-	  /* Only check the hit count now, which ensure that we do all
-	     our stepping before stopping the run.  */
-	  if (tpoint->pass_count > 0
-	      && tpoint->hit_count >= tpoint->pass_count
-	      && stopping_tracepoint == NULL)
-	    stopping_tracepoint = tpoint;
-	}
-      else
-	{
-	  /* Keep single-stepping until the requested numbers of steps
-	     have occurred.  */
-	  wstep_link = &wstep->next;
-	  wstep = *wstep_link;
-	}
-
-      if (stopping_tracepoint
-	  || trace_buffer_is_full
-	  || expr_eval_result != expr_eval_no_error)
-	{
-	  stop_tracing ();
-	  break;
-	}
-    }
-
-  return 1;
-}
-
-/* Handle any internal tracing control breakpoint hits.  That means,
-   pull traceframes from the IPA to our buffer, and syncing both
-   tracing agents when the IPA's tracing stops for some reason.  */
-
-int
-handle_tracepoint_bkpts (struct thread_info *tinfo, CORE_ADDR stop_pc)
-{
-  /* Pull in fast tracepoint trace frames from the inferior in-process
-     agent's buffer into our buffer.  */
-
-  if (!agent_loaded_p ())
-    return 0;
-
-  upload_fast_traceframes ();
-
-  /* Check if the in-process agent had decided we should stop
-     tracing.  */
-  if (stop_pc == ipa_sym_addrs.addr_stop_tracing)
-    {
-      int ipa_trace_buffer_is_full;
-      CORE_ADDR ipa_stopping_tracepoint;
-      int ipa_expr_eval_result;
-      CORE_ADDR ipa_error_tracepoint;
-
-      trace_debug ("lib stopped at stop_tracing");
-
-      read_inferior_integer (ipa_sym_addrs.addr_trace_buffer_is_full,
-			     &ipa_trace_buffer_is_full);
-
-      read_inferior_data_pointer (ipa_sym_addrs.addr_stopping_tracepoint,
-				  &ipa_stopping_tracepoint);
-      write_inferior_data_pointer (ipa_sym_addrs.addr_stopping_tracepoint, 0);
-
-      read_inferior_data_pointer (ipa_sym_addrs.addr_error_tracepoint,
-				  &ipa_error_tracepoint);
-      write_inferior_data_pointer (ipa_sym_addrs.addr_error_tracepoint, 0);
-
-      read_inferior_integer (ipa_sym_addrs.addr_expr_eval_result,
-			     &ipa_expr_eval_result);
-      write_inferior_integer (ipa_sym_addrs.addr_expr_eval_result, 0);
-
-      trace_debug ("lib: trace_buffer_is_full: %d, "
-		   "stopping_tracepoint: %s, "
-		   "ipa_expr_eval_result: %d, "
-		   "error_tracepoint: %s, ",
-		   ipa_trace_buffer_is_full,
-		   paddress (ipa_stopping_tracepoint),
-		   ipa_expr_eval_result,
-		   paddress (ipa_error_tracepoint));
-
-      if (debug_threads)
-	{
-	  if (ipa_trace_buffer_is_full)
-	    trace_debug ("lib stopped due to full buffer.");
-	  if (ipa_stopping_tracepoint)
-	    trace_debug ("lib stopped due to tpoint");
-	  if (ipa_error_tracepoint)
-	    trace_debug ("lib stopped due to error");
-	}
-
-      if (ipa_stopping_tracepoint != 0)
-	{
-	  stopping_tracepoint
-	    = fast_tracepoint_from_ipa_tpoint_address (ipa_stopping_tracepoint);
-	}
-      else if (ipa_expr_eval_result != expr_eval_no_error)
-	{
-	  expr_eval_result = ipa_expr_eval_result;
-	  error_tracepoint
-	    = fast_tracepoint_from_ipa_tpoint_address (ipa_error_tracepoint);
-	}
-      stop_tracing ();
-      return 1;
-    }
-  else if (stop_pc == ipa_sym_addrs.addr_flush_trace_buffer)
-    {
-      trace_debug ("lib stopped at flush_trace_buffer");
-      return 1;
-    }
-
-  return 0;
-}
-
-/* Return true if TINFO just hit a tracepoint.  Collect data if
-   so.  */
-
-int
-tracepoint_was_hit (struct thread_info *tinfo, CORE_ADDR stop_pc)
-{
-  struct tracepoint *tpoint;
-  int ret = 0;
-  struct trap_tracepoint_ctx ctx;
-
-  /* Not tracing, don't handle.  */
-  if (!tracing)
-    return 0;
-
-  ctx.base.type = trap_tracepoint;
-  ctx.regcache = get_thread_regcache (tinfo, 1);
-
-  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
-    {
-      /* Note that we collect fast tracepoints here as well.  We'll
-	 step over the fast tracepoint jump later, which avoids the
-	 double collect.  However, we don't collect for static
-	 tracepoints here, because UST markers are compiled in program,
-	 and probes will be executed in program.  So static tracepoints
-	 are collected there.   */
-      if (tpoint->enabled && stop_pc == tpoint->address
-	  && tpoint->type != static_tracepoint)
-	{
-	  trace_debug ("Thread %s at address of tracepoint %d at 0x%s",
-		       target_pid_to_str (tinfo->id),
-		       tpoint->number, paddress (tpoint->address));
-
-	  /* Test the condition if present, and collect if true.  */
-	  if (!tpoint->cond
-	      || (condition_true_at_tracepoint
-		  ((struct tracepoint_hit_ctx *) &ctx, tpoint)))
-	    collect_data_at_tracepoint ((struct tracepoint_hit_ctx *) &ctx,
-					stop_pc, tpoint);
-
-	  if (stopping_tracepoint
-	      || trace_buffer_is_full
-	      || expr_eval_result != expr_eval_no_error)
-	    {
-	      stop_tracing ();
-	    }
-	  /* If the tracepoint had a 'while-stepping' action, then set
-	     the thread to collect this tracepoint on the following
-	     single-steps.  */
-	  else if (tpoint->step_count > 0)
-	    {
-	      add_while_stepping_state (tinfo,
-					tpoint->number, tpoint->address);
-	    }
-
-	  ret = 1;
-	}
-    }
-
-  return ret;
-}
-
-#endif
-
-#if defined IN_PROCESS_AGENT && defined HAVE_UST
-struct ust_marker_data;
-static void collect_ust_data_at_tracepoint (struct tracepoint_hit_ctx *ctx,
-					    struct traceframe *tframe);
-#endif
-
-/* Create a trace frame for the hit of the given tracepoint in the
-   given thread.  */
-
-static void
-collect_data_at_tracepoint (struct tracepoint_hit_ctx *ctx, CORE_ADDR stop_pc,
-			    struct tracepoint *tpoint)
-{
-  struct traceframe *tframe;
-  int acti;
-
-  /* Only count it as a hit when we actually collect data.  */
-  tpoint->hit_count++;
-
-  /* If we've exceeded a defined pass count, record the event for
-     later, and finish the collection for this hit.  This test is only
-     for nonstepping tracepoints, stepping tracepoints test at the end
-     of their while-stepping loop.  */
-  if (tpoint->pass_count > 0
-      && tpoint->hit_count >= tpoint->pass_count
-      && tpoint->step_count == 0
-      && stopping_tracepoint == NULL)
-    stopping_tracepoint = tpoint;
-
-  trace_debug ("Making new traceframe for tracepoint %d at 0x%s, hit %" PRIu64,
-	       tpoint->number, paddress (tpoint->address), tpoint->hit_count);
-
-  tframe = add_traceframe (tpoint);
-
-  if (tframe)
-    {
-      for (acti = 0; acti < tpoint->numactions; ++acti)
-	{
-#ifndef IN_PROCESS_AGENT
-	  trace_debug ("Tracepoint %d at 0x%s about to do action '%s'",
-		       tpoint->number, paddress (tpoint->address),
-		       tpoint->actions_str[acti]);
-#endif
-
-	  do_action_at_tracepoint (ctx, stop_pc, tpoint, tframe,
-				   tpoint->actions[acti]);
-	}
-
-      finish_traceframe (tframe);
-    }
-
-  if (tframe == NULL && tracing)
-    trace_buffer_is_full = 1;
-}
-
-#ifndef IN_PROCESS_AGENT
-
-static void
-collect_data_at_step (struct tracepoint_hit_ctx *ctx,
-		      CORE_ADDR stop_pc,
-		      struct tracepoint *tpoint, int current_step)
-{
-  struct traceframe *tframe;
-  int acti;
-
-  trace_debug ("Making new step traceframe for "
-	       "tracepoint %d at 0x%s, step %d of %" PRIu64 ", hit %" PRIu64,
-	       tpoint->number, paddress (tpoint->address),
-	       current_step, tpoint->step_count,
-	       tpoint->hit_count);
-
-  tframe = add_traceframe (tpoint);
-
-  if (tframe)
-    {
-      for (acti = 0; acti < tpoint->num_step_actions; ++acti)
-	{
-	  trace_debug ("Tracepoint %d at 0x%s about to do step action '%s'",
-		       tpoint->number, paddress (tpoint->address),
-		       tpoint->step_actions_str[acti]);
-
-	  do_action_at_tracepoint (ctx, stop_pc, tpoint, tframe,
-				   tpoint->step_actions[acti]);
-	}
-
-      finish_traceframe (tframe);
-    }
-
-  if (tframe == NULL && tracing)
-    trace_buffer_is_full = 1;
-}
-
-#endif
-
-#ifdef IN_PROCESS_AGENT
-/* The target description index for IPA.  Passed from gdbserver, used
-   to select ipa_tdesc.  */
-EXTERN_C_PUSH
-IP_AGENT_EXPORT_VAR int ipa_tdesc_idx;
-EXTERN_C_POP
-#endif
-
-static struct regcache *
-get_context_regcache (struct tracepoint_hit_ctx *ctx)
-{
-  struct regcache *regcache = NULL;
-#ifdef IN_PROCESS_AGENT
-  const struct target_desc *ipa_tdesc = get_ipa_tdesc (ipa_tdesc_idx);
-
-  if (ctx->type == fast_tracepoint)
-    {
-      struct fast_tracepoint_ctx *fctx = (struct fast_tracepoint_ctx *) ctx;
-      if (!fctx->regcache_initted)
-	{
-	  fctx->regcache_initted = 1;
-	  init_register_cache (&fctx->regcache, ipa_tdesc, fctx->regspace);
-	  supply_regblock (&fctx->regcache, NULL);
-	  supply_fast_tracepoint_registers (&fctx->regcache, fctx->regs);
-	}
-      regcache = &fctx->regcache;
-    }
-#ifdef HAVE_UST
-  if (ctx->type == static_tracepoint)
-    {
-      struct static_tracepoint_ctx *sctx
-	= (struct static_tracepoint_ctx *) ctx;
-
-      if (!sctx->regcache_initted)
-	{
-	  sctx->regcache_initted = 1;
-	  init_register_cache (&sctx->regcache, ipa_tdesc, sctx->regspace);
-	  supply_regblock (&sctx->regcache, NULL);
-	  /* Pass down the tracepoint address, because REGS doesn't
-	     include the PC, but we know what it must have been.  */
-	  supply_static_tracepoint_registers (&sctx->regcache,
-					      (const unsigned char *)
-					      sctx->regs,
-					      sctx->tpoint->address);
-	}
-      regcache = &sctx->regcache;
-    }
-#endif
-#else
-  if (ctx->type == trap_tracepoint)
-    {
-      struct trap_tracepoint_ctx *tctx = (struct trap_tracepoint_ctx *) ctx;
-      regcache = tctx->regcache;
-    }
-#endif
-
-  gdb_assert (regcache != NULL);
-
-  return regcache;
-}
-
-static void
-do_action_at_tracepoint (struct tracepoint_hit_ctx *ctx,
-			 CORE_ADDR stop_pc,
-			 struct tracepoint *tpoint,
-			 struct traceframe *tframe,
-			 struct tracepoint_action *taction)
-{
-  enum eval_result_type err;
-
-  switch (taction->type)
-    {
-    case 'M':
-      {
-	struct collect_memory_action *maction;
-	struct eval_agent_expr_context ax_ctx;
-
-	maction = (struct collect_memory_action *) taction;
-	ax_ctx.regcache = NULL;
-	ax_ctx.tframe = tframe;
-	ax_ctx.tpoint = tpoint;
-
-	trace_debug ("Want to collect %s bytes at 0x%s (basereg %d)",
-		     pulongest (maction->len),
-		     paddress (maction->addr), maction->basereg);
-	/* (should use basereg) */
-	agent_mem_read (&ax_ctx, NULL, (CORE_ADDR) maction->addr,
-			maction->len);
-	break;
-      }
-    case 'R':
-      {
-	unsigned char *regspace;
-	struct regcache tregcache;
-	struct regcache *context_regcache;
-	int regcache_size;
-
-	trace_debug ("Want to collect registers");
-
-	context_regcache = get_context_regcache (ctx);
-	regcache_size = register_cache_size (context_regcache->tdesc);
-
-	/* Collect all registers for now.  */
-	regspace = add_traceframe_block (tframe, tpoint, 1 + regcache_size);
-	if (regspace == NULL)
-	  {
-	    trace_debug ("Trace buffer block allocation failed, skipping");
-	    break;
-	  }
-	/* Identify a register block.  */
-	*regspace = 'R';
-
-	/* Wrap the regblock in a register cache (in the stack, we
-	   don't want to malloc here).  */
-	init_register_cache (&tregcache, context_regcache->tdesc,
-			     regspace + 1);
-
-	/* Copy the register data to the regblock.  */
-	regcache_cpy (&tregcache, context_regcache);
-
-#ifndef IN_PROCESS_AGENT
-	/* On some platforms, trap-based tracepoints will have the PC
-	   pointing to the next instruction after the trap, but we
-	   don't want the user or GDB trying to guess whether the
-	   saved PC needs adjusting; so always record the adjusted
-	   stop_pc.  Note that we can't use tpoint->address instead,
-	   since it will be wrong for while-stepping actions.  This
-	   adjustment is a nop for fast tracepoints collected from the
-	   in-process lib (but not if GDBserver is collecting one
-	   preemptively), since the PC had already been adjusted to
-	   contain the tracepoint's address by the jump pad.  */
-	trace_debug ("Storing stop pc (0x%s) in regblock",
-		     paddress (stop_pc));
-
-	/* This changes the regblock, not the thread's
-	   regcache.  */
-	regcache_write_pc (&tregcache, stop_pc);
-#endif
-      }
-      break;
-    case 'X':
-      {
-	struct eval_expr_action *eaction;
-	struct eval_agent_expr_context ax_ctx;
-
-	eaction = (struct eval_expr_action *) taction;
-	ax_ctx.regcache = get_context_regcache (ctx);
-	ax_ctx.tframe = tframe;
-	ax_ctx.tpoint = tpoint;
-
-	trace_debug ("Want to evaluate expression");
-
-	err = gdb_eval_agent_expr (&ax_ctx, eaction->expr, NULL);
-
-	if (err != expr_eval_no_error)
-	  {
-	    record_tracepoint_error (tpoint, "action expression", err);
-	    return;
-	  }
-      }
-      break;
-    case 'L':
-      {
-#if defined IN_PROCESS_AGENT && defined HAVE_UST
-	trace_debug ("Want to collect static trace data");
-	collect_ust_data_at_tracepoint (ctx, tframe);
-#else
-	trace_debug ("warning: collecting static trace data, "
-		     "but static tracepoints are not supported");
-#endif
-      }
-      break;
-    default:
-      trace_debug ("unknown trace action '%c', ignoring", taction->type);
-      break;
-    }
-}
-
-static int
-condition_true_at_tracepoint (struct tracepoint_hit_ctx *ctx,
-			      struct tracepoint *tpoint)
-{
-  ULONGEST value = 0;
-  enum eval_result_type err;
-
-  /* Presently, gdbserver doesn't run compiled conditions, only the
-     IPA does.  If the program stops at a fast tracepoint's address
-     (e.g., due to a breakpoint, trap tracepoint, or stepping),
-     gdbserver preemptively collect the fast tracepoint.  Later, on
-     resume, gdbserver steps over the fast tracepoint like it steps
-     over breakpoints, so that the IPA doesn't see that fast
-     tracepoint.  This avoids double collects of fast tracepoints in
-     that stopping scenario.  Having gdbserver itself handle the fast
-     tracepoint gives the user a consistent view of when fast or trap
-     tracepoints are collected, compared to an alternative where only
-     trap tracepoints are collected on stop, and fast tracepoints on
-     resume.  When a fast tracepoint is being processed by gdbserver,
-     it is always the non-compiled condition expression that is
-     used.  */
-#ifdef IN_PROCESS_AGENT
-  if (tpoint->compiled_cond)
-    {
-      struct fast_tracepoint_ctx *fctx = (struct fast_tracepoint_ctx *) ctx;
-      err = ((condfn) (uintptr_t) (tpoint->compiled_cond)) (fctx->regs, &value);
-    }
-  else
-#endif
-    {
-      struct eval_agent_expr_context ax_ctx;
-
-      ax_ctx.regcache = get_context_regcache (ctx);
-      ax_ctx.tframe = NULL;
-      ax_ctx.tpoint = tpoint;
-
-      err = gdb_eval_agent_expr (&ax_ctx, tpoint->cond, &value);
-    }
-  if (err != expr_eval_no_error)
-    {
-      record_tracepoint_error (tpoint, "condition", err);
-      /* The error case must return false.  */
-      return 0;
-    }
-
-  trace_debug ("Tracepoint %d at 0x%s condition evals to %s",
-	       tpoint->number, paddress (tpoint->address),
-	       pulongest (value));
-  return (value ? 1 : 0);
-}
-
-/* Do memory copies for bytecodes.  */
-/* Do the recording of memory blocks for actions and bytecodes.  */
-
-int
-agent_mem_read (struct eval_agent_expr_context *ctx,
-		unsigned char *to, CORE_ADDR from, ULONGEST len)
-{
-  unsigned char *mspace;
-  ULONGEST remaining = len;
-  unsigned short blocklen;
-
-  /* If a 'to' buffer is specified, use it.  */
-  if (to != NULL)
-    {
-      read_inferior_memory (from, to, len);
-      return 0;
-    }
-
-  /* Otherwise, create a new memory block in the trace buffer.  */
-  while (remaining > 0)
-    {
-      size_t sp;
-
-      blocklen = (remaining > 65535 ? 65535 : remaining);
-      sp = 1 + sizeof (from) + sizeof (blocklen) + blocklen;
-      mspace = add_traceframe_block (ctx->tframe, ctx->tpoint, sp);
-      if (mspace == NULL)
-	return 1;
-      /* Identify block as a memory block.  */
-      *mspace = 'M';
-      ++mspace;
-      /* Record address and size.  */
-      memcpy (mspace, &from, sizeof (from));
-      mspace += sizeof (from);
-      memcpy (mspace, &blocklen, sizeof (blocklen));
-      mspace += sizeof (blocklen);
-      /* Record the memory block proper.  */
-      read_inferior_memory (from, mspace, blocklen);
-      trace_debug ("%d bytes recorded", blocklen);
-      remaining -= blocklen;
-      from += blocklen;
-    }
-  return 0;
-}
-
-int
-agent_mem_read_string (struct eval_agent_expr_context *ctx,
-		       unsigned char *to, CORE_ADDR from, ULONGEST len)
-{
-  unsigned char *buf, *mspace;
-  ULONGEST remaining = len;
-  unsigned short blocklen, i;
-
-  /* To save a bit of space, block lengths are 16-bit, so break large
-     requests into multiple blocks.  Bordering on overkill for strings,
-     but it could happen that someone specifies a large max length.  */
-  while (remaining > 0)
-    {
-      size_t sp;
-
-      blocklen = (remaining > 65535 ? 65535 : remaining);
-      /* We want working space to accumulate nonzero bytes, since
-	 traceframes must have a predecided size (otherwise it gets
-	 harder to wrap correctly for the circular case, etc).  */
-      buf = (unsigned char *) xmalloc (blocklen + 1);
-      for (i = 0; i < blocklen; ++i)
-	{
-	  /* Read the string one byte at a time, in case the string is
-	     at the end of a valid memory area - we don't want a
-	     correctly-terminated string to engender segvio
-	     complaints.  */
-	  read_inferior_memory (from + i, buf + i, 1);
-
-	  if (buf[i] == '\0')
-	    {
-	      blocklen = i + 1;
-	      /* Make sure outer loop stops now too.  */
-	      remaining = blocklen;
-	      break;
-	    }
-	}
-      sp = 1 + sizeof (from) + sizeof (blocklen) + blocklen;
-      mspace = add_traceframe_block (ctx->tframe, ctx->tpoint, sp);
-      if (mspace == NULL)
-	{
-	  xfree (buf);
-	  return 1;
-	}
-      /* Identify block as a memory block.  */
-      *mspace = 'M';
-      ++mspace;
-      /* Record address and size.  */
-      memcpy ((void *) mspace, (void *) &from, sizeof (from));
-      mspace += sizeof (from);
-      memcpy ((void *) mspace, (void *) &blocklen, sizeof (blocklen));
-      mspace += sizeof (blocklen);
-      /* Copy the string contents.  */
-      memcpy ((void *) mspace, (void *) buf, blocklen);
-      remaining -= blocklen;
-      from += blocklen;
-      xfree (buf);
-    }
-  return 0;
-}
-
-/* Record the value of a trace state variable.  */
-
-int
-agent_tsv_read (struct eval_agent_expr_context *ctx, int n)
-{
-  unsigned char *vspace;
-  LONGEST val;
-
-  vspace = add_traceframe_block (ctx->tframe, ctx->tpoint,
-				 1 + sizeof (n) + sizeof (LONGEST));
-  if (vspace == NULL)
-    return 1;
-  /* Identify block as a variable.  */
-  *vspace = 'V';
-  /* Record variable's number and value.  */
-  memcpy (vspace + 1, &n, sizeof (n));
-  val = get_trace_state_variable_value (n);
-  memcpy (vspace + 1 + sizeof (n), &val, sizeof (val));
-  trace_debug ("Variable %d recorded", n);
-  return 0;
-}
-
-#ifndef IN_PROCESS_AGENT
-
-/* Callback for traceframe_walk_blocks, used to find a given block
-   type in a traceframe.  */
-
-static int
-match_blocktype (char blocktype, unsigned char *dataptr, void *data)
-{
-  char *wantedp = (char *) data;
-
-  if (*wantedp == blocktype)
-    return 1;
-
-  return 0;
-}
-
-/* Walk over all traceframe blocks of the traceframe buffer starting
-   at DATABASE, of DATASIZE bytes long, and call CALLBACK for each
-   block found, passing in DATA unmodified.  If CALLBACK returns true,
-   this returns a pointer to where the block is found.  Returns NULL
-   if no callback call returned true, indicating that all blocks have
-   been walked.  */
-
-static unsigned char *
-traceframe_walk_blocks (unsigned char *database, unsigned int datasize,
-			int tfnum,
-			int (*callback) (char blocktype,
-					 unsigned char *dataptr,
-					 void *data),
-			void *data)
-{
-  unsigned char *dataptr;
-
-  if (datasize == 0)
-    {
-      trace_debug ("traceframe %d has no data", tfnum);
-      return NULL;
-    }
-
-  /* Iterate through a traceframe's blocks, looking for a block of the
-     requested type.  */
-  for (dataptr = database;
-       dataptr < database + datasize;
-       /* nothing */)
-    {
-      char blocktype;
-      unsigned short mlen;
-
-      if (dataptr == trace_buffer_wrap)
-	{
-	  /* Adjust to reflect wrapping part of the frame around to
-	     the beginning.  */
-	  datasize = dataptr - database;
-	  dataptr = database = trace_buffer_lo;
-	}
-
-      blocktype = *dataptr++;
-
-      if ((*callback) (blocktype, dataptr, data))
-	return dataptr;
-
-      switch (blocktype)
-	{
-	case 'R':
-	  /* Skip over the registers block.  */
-	  dataptr += current_target_desc ()->registers_size;
-	  break;
-	case 'M':
-	  /* Skip over the memory block.  */
-	  dataptr += sizeof (CORE_ADDR);
-	  memcpy (&mlen, dataptr, sizeof (mlen));
-	  dataptr += (sizeof (mlen) + mlen);
-	  break;
-	case 'V':
-	  /* Skip over the TSV block.  */
-	  dataptr += (sizeof (int) + sizeof (LONGEST));
-	  break;
-	case 'S':
-	  /* Skip over the static trace data block.  */
-	  memcpy (&mlen, dataptr, sizeof (mlen));
-	  dataptr += (sizeof (mlen) + mlen);
-	  break;
-	default:
-	  trace_debug ("traceframe %d has unknown block type 0x%x",
-		       tfnum, blocktype);
-	  return NULL;
-	}
-    }
-
-  return NULL;
-}
-
-/* Look for the block of type TYPE_WANTED in the traceframe starting
-   at DATABASE of DATASIZE bytes long.  TFNUM is the traceframe
-   number.  */
-
-static unsigned char *
-traceframe_find_block_type (unsigned char *database, unsigned int datasize,
-			    int tfnum, char type_wanted)
-{
-  return traceframe_walk_blocks (database, datasize, tfnum,
-				 match_blocktype, &type_wanted);
-}
-
-static unsigned char *
-traceframe_find_regblock (struct traceframe *tframe, int tfnum)
-{
-  unsigned char *regblock;
-
-  regblock = traceframe_find_block_type (tframe->data,
-					 tframe->data_size,
-					 tfnum, 'R');
-
-  if (regblock == NULL)
-    trace_debug ("traceframe %d has no register data", tfnum);
-
-  return regblock;
-}
-
-/* Get registers from a traceframe.  */
-
-int
-fetch_traceframe_registers (int tfnum, struct regcache *regcache, int regnum)
-{
-  unsigned char *dataptr;
-  struct tracepoint *tpoint;
-  struct traceframe *tframe;
-
-  tframe = find_traceframe (tfnum);
-
-  if (tframe == NULL)
-    {
-      trace_debug ("traceframe %d not found", tfnum);
-      return 1;
-    }
-
-  dataptr = traceframe_find_regblock (tframe, tfnum);
-  if (dataptr == NULL)
-    {
-      /* Mark registers unavailable.  */
-      supply_regblock (regcache, NULL);
-
-      /* We can generally guess at a PC, although this will be
-	 misleading for while-stepping frames and multi-location
-	 tracepoints.  */
-      tpoint = find_next_tracepoint_by_number (NULL, tframe->tpnum);
-      if (tpoint != NULL)
-	regcache_write_pc (regcache, tpoint->address);
-    }
-  else
-    supply_regblock (regcache, dataptr);
-
-  return 0;
-}
-
-static CORE_ADDR
-traceframe_get_pc (struct traceframe *tframe)
-{
-  struct regcache regcache;
-  unsigned char *dataptr;
-  const struct target_desc *tdesc = current_target_desc ();
-
-  dataptr = traceframe_find_regblock (tframe, -1);
-  if (dataptr == NULL)
-    return 0;
-
-  init_register_cache (&regcache, tdesc, dataptr);
-  return regcache_read_pc (&regcache);
-}
-
-/* Read a requested block of memory from a trace frame.  */
-
-int
-traceframe_read_mem (int tfnum, CORE_ADDR addr,
-		     unsigned char *buf, ULONGEST length,
-		     ULONGEST *nbytes)
-{
-  struct traceframe *tframe;
-  unsigned char *database, *dataptr;
-  unsigned int datasize;
-  CORE_ADDR maddr;
-  unsigned short mlen;
-
-  trace_debug ("traceframe_read_mem");
-
-  tframe = find_traceframe (tfnum);
-
-  if (!tframe)
-    {
-      trace_debug ("traceframe %d not found", tfnum);
-      return 1;
-    }
-
-  datasize = tframe->data_size;
-  database = dataptr = &tframe->data[0];
-
-  /* Iterate through a traceframe's blocks, looking for memory.  */
-  while ((dataptr = traceframe_find_block_type (dataptr,
-						datasize
-						- (dataptr - database),
-						tfnum, 'M')) != NULL)
-    {
-      memcpy (&maddr, dataptr, sizeof (maddr));
-      dataptr += sizeof (maddr);
-      memcpy (&mlen, dataptr, sizeof (mlen));
-      dataptr += sizeof (mlen);
-      trace_debug ("traceframe %d has %d bytes at %s",
-		   tfnum, mlen, paddress (maddr));
-
-      /* If the block includes the first part of the desired range,
-	 return as much it has; GDB will re-request the remainder,
-	 which might be in a different block of this trace frame.  */
-      if (maddr <= addr && addr < (maddr + mlen))
-	{
-	  ULONGEST amt = (maddr + mlen) - addr;
-	  if (amt > length)
-	    amt = length;
-
-	  memcpy (buf, dataptr + (addr - maddr), amt);
-	  *nbytes = amt;
-	  return 0;
-	}
-
-      /* Skip over this block.  */
-      dataptr += mlen;
-    }
-
-  trace_debug ("traceframe %d has no memory data for the desired region",
-	       tfnum);
-
-  *nbytes = 0;
-  return 0;
-}
-
-static int
-traceframe_read_tsv (int tsvnum, LONGEST *val)
-{
-  client_state &cs = get_client_state ();
-  int tfnum;
-  struct traceframe *tframe;
-  unsigned char *database, *dataptr;
-  unsigned int datasize;
-  int vnum;
-  int found = 0;
-
-  trace_debug ("traceframe_read_tsv");
-
-  tfnum = cs.current_traceframe;
-
-  if (tfnum < 0)
-    {
-      trace_debug ("no current traceframe");
-      return 1;
-    }
-
-  tframe = find_traceframe (tfnum);
-
-  if (tframe == NULL)
-    {
-      trace_debug ("traceframe %d not found", tfnum);
-      return 1;
-    }
-
-  datasize = tframe->data_size;
-  database = dataptr = &tframe->data[0];
-
-  /* Iterate through a traceframe's blocks, looking for the last
-     matched tsv.  */
-  while ((dataptr = traceframe_find_block_type (dataptr,
-						datasize
-						- (dataptr - database),
-						tfnum, 'V')) != NULL)
-    {
-      memcpy (&vnum, dataptr, sizeof (vnum));
-      dataptr += sizeof (vnum);
-
-      trace_debug ("traceframe %d has variable %d", tfnum, vnum);
-
-      /* Check that this is the variable we want.  */
-      if (tsvnum == vnum)
-	{
-	  memcpy (val, dataptr, sizeof (*val));
-	  found = 1;
-	}
-
-      /* Skip over this block.  */
-      dataptr += sizeof (LONGEST);
-    }
-
-  if (!found)
-    trace_debug ("traceframe %d has no data for variable %d",
-		 tfnum, tsvnum);
-  return !found;
-}
-
-/* Read a requested block of static tracepoint data from a trace
-   frame.  */
-
-int
-traceframe_read_sdata (int tfnum, ULONGEST offset,
-		       unsigned char *buf, ULONGEST length,
-		       ULONGEST *nbytes)
-{
-  struct traceframe *tframe;
-  unsigned char *database, *dataptr;
-  unsigned int datasize;
-  unsigned short mlen;
-
-  trace_debug ("traceframe_read_sdata");
-
-  tframe = find_traceframe (tfnum);
-
-  if (!tframe)
-    {
-      trace_debug ("traceframe %d not found", tfnum);
-      return 1;
-    }
-
-  datasize = tframe->data_size;
-  database = &tframe->data[0];
-
-  /* Iterate through a traceframe's blocks, looking for static
-     tracepoint data.  */
-  dataptr = traceframe_find_block_type (database, datasize,
-					tfnum, 'S');
-  if (dataptr != NULL)
-    {
-      memcpy (&mlen, dataptr, sizeof (mlen));
-      dataptr += sizeof (mlen);
-      if (offset < mlen)
-	{
-	  if (offset + length > mlen)
-	    length = mlen - offset;
-
-	  memcpy (buf, dataptr, length);
-	  *nbytes = length;
-	}
-      else
-	*nbytes = 0;
-      return 0;
-    }
-
-  trace_debug ("traceframe %d has no static trace data", tfnum);
-
-  *nbytes = 0;
-  return 0;
-}
-
-/* Callback for traceframe_walk_blocks.  Builds a traceframe-info
-   object.  DATA is pointer to a struct buffer holding the
-   traceframe-info object being built.  */
-
-static int
-build_traceframe_info_xml (char blocktype, unsigned char *dataptr, void *data)
-{
-  struct buffer *buffer = (struct buffer *) data;
-
-  switch (blocktype)
-    {
-    case 'M':
-      {
-	unsigned short mlen;
-	CORE_ADDR maddr;
-
-	memcpy (&maddr, dataptr, sizeof (maddr));
-	dataptr += sizeof (maddr);
-	memcpy (&mlen, dataptr, sizeof (mlen));
-	dataptr += sizeof (mlen);
-	buffer_xml_printf (buffer,
-			   "<memory start=\"0x%s\" length=\"0x%s\"/>\n",
-			   paddress (maddr), phex_nz (mlen, sizeof (mlen)));
-	break;
-      }
-    case 'V':
-      {
-	int vnum;
-
-	memcpy (&vnum, dataptr, sizeof (vnum));
-	buffer_xml_printf (buffer, "<tvar id=\"%d\"/>\n", vnum);
-	break;
-      }
-    case 'R':
-    case 'S':
-      {
-	break;
-      }
-    default:
-      warning ("Unhandled trace block type (%d) '%c ' "
-	       "while building trace frame info.",
-	       blocktype, blocktype);
-      break;
-    }
-
-  return 0;
-}
-
-/* Build a traceframe-info object for traceframe number TFNUM into
-   BUFFER.  */
-
-int
-traceframe_read_info (int tfnum, struct buffer *buffer)
-{
-  struct traceframe *tframe;
-
-  trace_debug ("traceframe_read_info");
-
-  tframe = find_traceframe (tfnum);
-
-  if (!tframe)
-    {
-      trace_debug ("traceframe %d not found", tfnum);
-      return 1;
-    }
-
-  buffer_grow_str (buffer, "<traceframe-info>\n");
-  traceframe_walk_blocks (tframe->data, tframe->data_size,
-			  tfnum, build_traceframe_info_xml, buffer);
-  buffer_grow_str0 (buffer, "</traceframe-info>\n");
-  return 0;
-}
-
-/* Return the first fast tracepoint whose jump pad contains PC.  */
-
-static struct tracepoint *
-fast_tracepoint_from_jump_pad_address (CORE_ADDR pc)
-{
-  struct tracepoint *tpoint;
-
-  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
-    if (tpoint->type == fast_tracepoint)
-      if (tpoint->jump_pad <= pc && pc < tpoint->jump_pad_end)
-	return tpoint;
-
-  return NULL;
-}
-
-/* Return the first fast tracepoint whose trampoline contains PC.  */
-
-static struct tracepoint *
-fast_tracepoint_from_trampoline_address (CORE_ADDR pc)
-{
-  struct tracepoint *tpoint;
-
-  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
-    {
-      if (tpoint->type == fast_tracepoint
-	  && tpoint->trampoline <= pc && pc < tpoint->trampoline_end)
-	return tpoint;
-    }
-
-  return NULL;
-}
-
-/* Return GDBserver's tracepoint that matches the IP Agent's
-   tracepoint object that lives at IPA_TPOINT_OBJ in the IP Agent's
-   address space.  */
-
-static struct tracepoint *
-fast_tracepoint_from_ipa_tpoint_address (CORE_ADDR ipa_tpoint_obj)
-{
-  struct tracepoint *tpoint;
-
-  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
-    if (tpoint->type == fast_tracepoint)
-      if (tpoint->obj_addr_on_target == ipa_tpoint_obj)
-	return tpoint;
-
-  return NULL;
-}
-
-#endif
-
-/* The type of the object that is used to synchronize fast tracepoint
-   collection.  */
-
-typedef struct collecting_t
-{
-  /* The fast tracepoint number currently collecting.  */
-  uintptr_t tpoint;
-
-  /* A number that GDBserver can use to identify the thread that is
-     presently holding the collect lock.  This need not (and usually
-     is not) the thread id, as getting the current thread ID usually
-     requires a system call, which we want to avoid like the plague.
-     Usually this is thread's TCB, found in the TLS (pseudo-)
-     register, which is readable with a single insn on several
-     architectures.  */
-  uintptr_t thread_area;
-} collecting_t;
-
-#ifndef IN_PROCESS_AGENT
-
-void
-force_unlock_trace_buffer (void)
-{
-  write_inferior_data_pointer (ipa_sym_addrs.addr_collecting, 0);
-}
-
-/* Check if the thread identified by THREAD_AREA which is stopped at
-   STOP_PC, is presently locking the fast tracepoint collection, and
-   if so, gather some status of said collection.  Returns 0 if the
-   thread isn't collecting or in the jump pad at all.  1, if in the
-   jump pad (or within gdb_collect) and hasn't executed the adjusted
-   original insn yet (can set a breakpoint there and run to it).  2,
-   if presently executing the adjusted original insn --- in which
-   case, if we want to move the thread out of the jump pad, we need to
-   single-step it until this function returns 0.  */
-
-fast_tpoint_collect_result
-fast_tracepoint_collecting (CORE_ADDR thread_area,
-			    CORE_ADDR stop_pc,
-			    struct fast_tpoint_collect_status *status)
-{
-  CORE_ADDR ipa_collecting;
-  CORE_ADDR ipa_gdb_jump_pad_buffer, ipa_gdb_jump_pad_buffer_end;
-  CORE_ADDR ipa_gdb_trampoline_buffer;
-  CORE_ADDR ipa_gdb_trampoline_buffer_end;
-  struct tracepoint *tpoint;
-  int needs_breakpoint;
-
-  /* The thread THREAD_AREA is either:
-
-      0. not collecting at all, not within the jump pad, or within
-	 gdb_collect or one of its callees.
-
-      1. in the jump pad and haven't reached gdb_collect
-
-      2. within gdb_collect (out of the jump pad) (collect is set)
-
-      3. we're in the jump pad, after gdb_collect having returned,
-	 possibly executing the adjusted insns.
-
-      For cases 1 and 3, `collecting' may or not be set.  The jump pad
-      doesn't have any complicated jump logic, so we can tell if the
-      thread is executing the adjust original insn or not by just
-      matching STOP_PC with known jump pad addresses.  If we it isn't
-      yet executing the original insn, set a breakpoint there, and let
-      the thread run to it, so to quickly step over a possible (many
-      insns) gdb_collect call.  Otherwise, or when the breakpoint is
-      hit, only a few (small number of) insns are left to be executed
-      in the jump pad.  Single-step the thread until it leaves the
-      jump pad.  */
-
- again:
-  tpoint = NULL;
-  needs_breakpoint = 0;
-  trace_debug ("fast_tracepoint_collecting");
-
-  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_jump_pad_buffer,
-				  &ipa_gdb_jump_pad_buffer))
-    {
-      internal_error (__FILE__, __LINE__,
-		      "error extracting `gdb_jump_pad_buffer'");
-    }
-  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_jump_pad_buffer_end,
-				  &ipa_gdb_jump_pad_buffer_end))
-    {
-      internal_error (__FILE__, __LINE__,
-		      "error extracting `gdb_jump_pad_buffer_end'");
-    }
-
-  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer,
-				  &ipa_gdb_trampoline_buffer))
-    {
-      internal_error (__FILE__, __LINE__,
-		      "error extracting `gdb_trampoline_buffer'");
-    }
-  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer_end,
-				  &ipa_gdb_trampoline_buffer_end))
-    {
-      internal_error (__FILE__, __LINE__,
-		      "error extracting `gdb_trampoline_buffer_end'");
-    }
-
-  if (ipa_gdb_jump_pad_buffer <= stop_pc
-      && stop_pc < ipa_gdb_jump_pad_buffer_end)
-    {
-      /* We can tell which tracepoint(s) the thread is collecting by
-	 matching the jump pad address back to the tracepoint.  */
-      tpoint = fast_tracepoint_from_jump_pad_address (stop_pc);
-      if (tpoint == NULL)
-	{
-	  warning ("in jump pad, but no matching tpoint?");
-	  return fast_tpoint_collect_result::not_collecting;
-	}
-      else
-	{
-	  trace_debug ("in jump pad of tpoint (%d, %s); jump_pad(%s, %s); "
-		       "adj_insn(%s, %s)",
-		       tpoint->number, paddress (tpoint->address),
-		       paddress (tpoint->jump_pad),
-		       paddress (tpoint->jump_pad_end),
-		       paddress (tpoint->adjusted_insn_addr),
-		       paddress (tpoint->adjusted_insn_addr_end));
-	}
-
-      /* Definitely in the jump pad.  May or may not need
-	 fast-exit-jump-pad breakpoint.  */
-      if (tpoint->jump_pad <= stop_pc
-	  && stop_pc < tpoint->adjusted_insn_addr)
-	needs_breakpoint =  1;
-    }
-  else if (ipa_gdb_trampoline_buffer <= stop_pc
-	   && stop_pc < ipa_gdb_trampoline_buffer_end)
-    {
-      /* We can tell which tracepoint(s) the thread is collecting by
-	 matching the trampoline address back to the tracepoint.  */
-      tpoint = fast_tracepoint_from_trampoline_address (stop_pc);
-      if (tpoint == NULL)
-	{
-	  warning ("in trampoline, but no matching tpoint?");
-	  return fast_tpoint_collect_result::not_collecting;
-	}
-      else
-	{
-	  trace_debug ("in trampoline of tpoint (%d, %s); trampoline(%s, %s)",
-		       tpoint->number, paddress (tpoint->address),
-		       paddress (tpoint->trampoline),
-		       paddress (tpoint->trampoline_end));
-	}
-
-      /* Have not reached jump pad yet, but treat the trampoline as a
-	 part of the jump pad that is before the adjusted original
-	 instruction.  */
-      needs_breakpoint = 1;
-    }
-  else
-    {
-      collecting_t ipa_collecting_obj;
-
-      /* If `collecting' is set/locked, then the THREAD_AREA thread
-	 may or not be the one holding the lock.  We have to read the
-	 lock to find out.  */
-
-      if (read_inferior_data_pointer (ipa_sym_addrs.addr_collecting,
-				      &ipa_collecting))
-	{
-	  trace_debug ("fast_tracepoint_collecting:"
-		       " failed reading 'collecting' in the inferior");
-	  return fast_tpoint_collect_result::not_collecting;
-	}
-
-      if (!ipa_collecting)
-	{
-	  trace_debug ("fast_tracepoint_collecting: not collecting"
-		       " (and nobody is).");
-	  return fast_tpoint_collect_result::not_collecting;
-	}
-
-      /* Some thread is collecting.  Check which.  */
-      if (read_inferior_memory (ipa_collecting,
-				(unsigned char *) &ipa_collecting_obj,
-				sizeof (ipa_collecting_obj)) != 0)
-	goto again;
-
-      if (ipa_collecting_obj.thread_area != thread_area)
-	{
-	  trace_debug ("fast_tracepoint_collecting: not collecting "
-		       "(another thread is)");
-	  return fast_tpoint_collect_result::not_collecting;
-	}
-
-      tpoint
-	= fast_tracepoint_from_ipa_tpoint_address (ipa_collecting_obj.tpoint);
-      if (tpoint == NULL)
-	{
-	  warning ("fast_tracepoint_collecting: collecting, "
-		   "but tpoint %s not found?",
-		   paddress ((CORE_ADDR) ipa_collecting_obj.tpoint));
-	  return fast_tpoint_collect_result::not_collecting;
-	}
-
-      /* The thread is within `gdb_collect', skip over the rest of
-	 fast tracepoint collection quickly using a breakpoint.  */
-      needs_breakpoint = 1;
-    }
-
-  /* The caller wants a bit of status detail.  */
-  if (status != NULL)
-    {
-      status->tpoint_num = tpoint->number;
-      status->tpoint_addr = tpoint->address;
-      status->adjusted_insn_addr = tpoint->adjusted_insn_addr;
-      status->adjusted_insn_addr_end = tpoint->adjusted_insn_addr_end;
-    }
-
-  if (needs_breakpoint)
-    {
-      /* Hasn't executed the original instruction yet.  Set breakpoint
-	 there, and wait till it's hit, then single-step until exiting
-	 the jump pad.  */
-
-      trace_debug ("\
-fast_tracepoint_collecting, returning continue-until-break at %s",
-		   paddress (tpoint->adjusted_insn_addr));
-
-      return fast_tpoint_collect_result::before_insn; /* continue */
-    }
-  else
-    {
-      /* Just single-step until exiting the jump pad.  */
-
-      trace_debug ("fast_tracepoint_collecting, returning "
-		   "need-single-step (%s-%s)",
-		   paddress (tpoint->adjusted_insn_addr),
-		   paddress (tpoint->adjusted_insn_addr_end));
-
-      return fast_tpoint_collect_result::at_insn; /* single-step */
-    }
-}
-
-#endif
-
-#ifdef IN_PROCESS_AGENT
-
-/* The global fast tracepoint collect lock.  Points to a collecting_t
-   object built on the stack by the jump pad, if presently locked;
-   NULL if it isn't locked.  Note that this lock *must* be set while
-   executing any *function other than the jump pad.  See
-   fast_tracepoint_collecting.  */
-EXTERN_C_PUSH
-IP_AGENT_EXPORT_VAR collecting_t *collecting;
-EXTERN_C_POP
-
-/* This routine, called from the jump pad (in asm) is designed to be
-   called from the jump pads of fast tracepoints, thus it is on the
-   critical path.  */
-
-IP_AGENT_EXPORT_FUNC void
-gdb_collect (struct tracepoint *tpoint, unsigned char *regs)
-{
-  struct fast_tracepoint_ctx ctx;
-  const struct target_desc *ipa_tdesc;
-
-  /* Don't do anything until the trace run is completely set up.  */
-  if (!tracing)
-    return;
-
-  ipa_tdesc = get_ipa_tdesc (ipa_tdesc_idx);
-  ctx.base.type = fast_tracepoint;
-  ctx.regs = regs;
-  ctx.regcache_initted = 0;
-  /* Wrap the regblock in a register cache (in the stack, we don't
-     want to malloc here).  */
-  ctx.regspace = (unsigned char *) alloca (ipa_tdesc->registers_size);
-  if (ctx.regspace == NULL)
-    {
-      trace_debug ("Trace buffer block allocation failed, skipping");
-      return;
-    }
-
-  for (ctx.tpoint = tpoint;
-       ctx.tpoint != NULL && ctx.tpoint->address == tpoint->address;
-       ctx.tpoint = ctx.tpoint->next)
-    {
-      if (!ctx.tpoint->enabled)
-	continue;
-
-      /* Multiple tracepoints of different types, such as fast tracepoint and
-	 static tracepoint, can be set at the same address.  */
-      if (ctx.tpoint->type != tpoint->type)
-	continue;
-
-      /* Test the condition if present, and collect if true.  */
-      if (ctx.tpoint->cond == NULL
-	  || condition_true_at_tracepoint ((struct tracepoint_hit_ctx *) &ctx,
-					   ctx.tpoint))
-	{
-	  collect_data_at_tracepoint ((struct tracepoint_hit_ctx *) &ctx,
-				      ctx.tpoint->address, ctx.tpoint);
-
-	  /* Note that this will cause original insns to be written back
-	     to where we jumped from, but that's OK because we're jumping
-	     back to the next whole instruction.  This will go badly if
-	     instruction restoration is not atomic though.  */
-	  if (stopping_tracepoint
-	      || trace_buffer_is_full
-	      || expr_eval_result != expr_eval_no_error)
-	    {
-	      stop_tracing ();
-	      break;
-	    }
-	}
-      else
-	{
-	  /* If there was a condition and it evaluated to false, the only
-	     way we would stop tracing is if there was an error during
-	     condition expression evaluation.  */
-	  if (expr_eval_result != expr_eval_no_error)
-	    {
-	      stop_tracing ();
-	      break;
-	    }
-	}
-    }
-}
-
-/* These global variables points to the corresponding functions.  This is
-   necessary on powerpc64, where asking for function symbol address from gdb
-   results in returning the actual code pointer, instead of the descriptor
-   pointer.  */
-
-typedef void (*gdb_collect_ptr_type) (struct tracepoint *, unsigned char *);
-typedef ULONGEST (*get_raw_reg_ptr_type) (const unsigned char *, int);
-typedef LONGEST (*get_trace_state_variable_value_ptr_type) (int);
-typedef void (*set_trace_state_variable_value_ptr_type) (int, LONGEST);
-
-EXTERN_C_PUSH
-IP_AGENT_EXPORT_VAR gdb_collect_ptr_type gdb_collect_ptr = gdb_collect;
-IP_AGENT_EXPORT_VAR get_raw_reg_ptr_type get_raw_reg_ptr = get_raw_reg;
-IP_AGENT_EXPORT_VAR get_trace_state_variable_value_ptr_type
-  get_trace_state_variable_value_ptr = get_trace_state_variable_value;
-IP_AGENT_EXPORT_VAR set_trace_state_variable_value_ptr_type
-  set_trace_state_variable_value_ptr = set_trace_state_variable_value;
-EXTERN_C_POP
-
-#endif
-
-#ifndef IN_PROCESS_AGENT
-
-CORE_ADDR
-get_raw_reg_func_addr (void)
-{
-  CORE_ADDR res;
-  if (read_inferior_data_pointer (ipa_sym_addrs.addr_get_raw_reg_ptr, &res))
-    {
-      error ("error extracting get_raw_reg_ptr");
-      return 0;
-    }
-  return res;
-}
-
-CORE_ADDR
-get_get_tsv_func_addr (void)
-{
-  CORE_ADDR res;
-  if (read_inferior_data_pointer (
-	ipa_sym_addrs.addr_get_trace_state_variable_value_ptr, &res))
-    {
-      error ("error extracting get_trace_state_variable_value_ptr");
-      return 0;
-    }
-  return res;
-}
-
-CORE_ADDR
-get_set_tsv_func_addr (void)
-{
-  CORE_ADDR res;
-  if (read_inferior_data_pointer (
-	ipa_sym_addrs.addr_set_trace_state_variable_value_ptr, &res))
-    {
-      error ("error extracting set_trace_state_variable_value_ptr");
-      return 0;
-    }
-  return res;
-}
-
-static void
-compile_tracepoint_condition (struct tracepoint *tpoint,
-			      CORE_ADDR *jump_entry)
-{
-  CORE_ADDR entry_point = *jump_entry;
-  enum eval_result_type err;
-
-  trace_debug ("Starting condition compilation for tracepoint %d\n",
-	       tpoint->number);
-
-  /* Initialize the global pointer to the code being built.  */
-  current_insn_ptr = *jump_entry;
-
-  emit_prologue ();
-
-  err = compile_bytecodes (tpoint->cond);
-
-  if (err == expr_eval_no_error)
-    {
-      emit_epilogue ();
-
-      /* Record the beginning of the compiled code.  */
-      tpoint->compiled_cond = entry_point;
-
-      trace_debug ("Condition compilation for tracepoint %d complete\n",
-		   tpoint->number);
-    }
-  else
-    {
-      /* Leave the unfinished code in situ, but don't point to it.  */
-
-      tpoint->compiled_cond = 0;
-
-      trace_debug ("Condition compilation for tracepoint %d failed, "
-		   "error code %d",
-		   tpoint->number, err);
-    }
-
-  /* Update the code pointer passed in.  Note that we do this even if
-     the compile fails, so that we can look at the partial results
-     instead of letting them be overwritten.  */
-  *jump_entry = current_insn_ptr;
-
-  /* Leave a gap, to aid dump decipherment.  */
-  *jump_entry += 16;
-}
-
-/* The base pointer of the IPA's heap.  This is the only memory the
-   IPA is allowed to use.  The IPA should _not_ call the inferior's
-   `malloc' during operation.  That'd be slow, and, most importantly,
-   it may not be safe.  We may be collecting a tracepoint in a signal
-   handler, for example.  */
-static CORE_ADDR target_tp_heap;
-
-/* Allocate at least SIZE bytes of memory from the IPA heap, aligned
-   to 8 bytes.  */
-
-static CORE_ADDR
-target_malloc (ULONGEST size)
-{
-  CORE_ADDR ptr;
-
-  if (target_tp_heap == 0)
-    {
-      /* We have the pointer *address*, need what it points to.  */
-      if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_tp_heap_buffer,
-				      &target_tp_heap))
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "couldn't get target heap head pointer");
-	}
-    }
-
-  ptr = target_tp_heap;
-  target_tp_heap += size;
-
-  /* Pad to 8-byte alignment.  */
-  target_tp_heap = ((target_tp_heap + 7) & ~0x7);
-
-  return ptr;
-}
-
-static CORE_ADDR
-download_agent_expr (struct agent_expr *expr)
-{
-  CORE_ADDR expr_addr;
-  CORE_ADDR expr_bytes;
-
-  expr_addr = target_malloc (sizeof (*expr));
-  target_write_memory (expr_addr, (unsigned char *) expr, sizeof (*expr));
-
-  expr_bytes = target_malloc (expr->length);
-  write_inferior_data_pointer (expr_addr + offsetof (struct agent_expr, bytes),
-			       expr_bytes);
-  target_write_memory (expr_bytes, expr->bytes, expr->length);
-
-  return expr_addr;
-}
-
-/* Align V up to N bits.  */
-#define UALIGN(V, N) (((V) + ((N) - 1)) & ~((N) - 1))
-
-/* Sync tracepoint with IPA, but leave maintenance of linked list to caller.  */
-
-static void
-download_tracepoint_1 (struct tracepoint *tpoint)
-{
-  struct tracepoint target_tracepoint;
-  CORE_ADDR tpptr = 0;
-
-  gdb_assert (tpoint->type == fast_tracepoint
-	      || tpoint->type == static_tracepoint);
-
-  if (tpoint->cond != NULL && target_emit_ops () != NULL)
-    {
-      CORE_ADDR jentry, jump_entry;
-
-      jentry = jump_entry = get_jump_space_head ();
-
-      if (tpoint->cond != NULL)
-	{
-	  /* Pad to 8-byte alignment. (needed?)  */
-	  /* Actually this should be left for the target to
-	     decide.  */
-	  jentry = UALIGN (jentry, 8);
-
-	  compile_tracepoint_condition (tpoint, &jentry);
-	}
-
-      /* Pad to 8-byte alignment.  */
-      jentry = UALIGN (jentry, 8);
-      claim_jump_space (jentry - jump_entry);
-    }
-
-  target_tracepoint = *tpoint;
-
-  tpptr = target_malloc (sizeof (*tpoint));
-  tpoint->obj_addr_on_target = tpptr;
-
-  /* Write the whole object.  We'll fix up its pointers in a bit.
-     Assume no next for now.  This is fixed up above on the next
-     iteration, if there's any.  */
-  target_tracepoint.next = NULL;
-  /* Need to clear this here too, since we're downloading the
-     tracepoints before clearing our own copy.  */
-  target_tracepoint.hit_count = 0;
-
-  target_write_memory (tpptr, (unsigned char *) &target_tracepoint,
-			 sizeof (target_tracepoint));
-
-  if (tpoint->cond)
-    write_inferior_data_pointer (tpptr
-				 + offsetof (struct tracepoint, cond),
-				 download_agent_expr (tpoint->cond));
-
-  if (tpoint->numactions)
-    {
-      int i;
-      CORE_ADDR actions_array;
-
-      /* The pointers array.  */
-      actions_array
-	= target_malloc (sizeof (*tpoint->actions) * tpoint->numactions);
-      write_inferior_data_pointer (tpptr + offsetof (struct tracepoint,
-						     actions),
-				   actions_array);
-
-      /* Now for each pointer, download the action.  */
-      for (i = 0; i < tpoint->numactions; i++)
-	{
-	  struct tracepoint_action *action = tpoint->actions[i];
-	  CORE_ADDR ipa_action = tracepoint_action_download (action);
-
-	  if (ipa_action != 0)
-	    write_inferior_data_pointer (actions_array
-					 + i * sizeof (*tpoint->actions),
-					 ipa_action);
-	}
-    }
-}
-
-#define IPA_PROTO_FAST_TRACE_FLAG 0
-#define IPA_PROTO_FAST_TRACE_ADDR_ON_TARGET 2
-#define IPA_PROTO_FAST_TRACE_JUMP_PAD 10
-#define IPA_PROTO_FAST_TRACE_FJUMP_SIZE 18
-#define IPA_PROTO_FAST_TRACE_FJUMP_INSN 22
-
-/* Send a command to agent to download and install tracepoint TPOINT.  */
-
-static int
-tracepoint_send_agent (struct tracepoint *tpoint)
-{
-  char buf[IPA_CMD_BUF_SIZE];
-  char *p;
-  int i, ret;
-
-  p = buf;
-  strcpy (p, "FastTrace:");
-  p += 10;
-
-  COPY_FIELD_TO_BUF (p, tpoint, number);
-  COPY_FIELD_TO_BUF (p, tpoint, address);
-  COPY_FIELD_TO_BUF (p, tpoint, type);
-  COPY_FIELD_TO_BUF (p, tpoint, enabled);
-  COPY_FIELD_TO_BUF (p, tpoint, step_count);
-  COPY_FIELD_TO_BUF (p, tpoint, pass_count);
-  COPY_FIELD_TO_BUF (p, tpoint, numactions);
-  COPY_FIELD_TO_BUF (p, tpoint, hit_count);
-  COPY_FIELD_TO_BUF (p, tpoint, traceframe_usage);
-  COPY_FIELD_TO_BUF (p, tpoint, compiled_cond);
-  COPY_FIELD_TO_BUF (p, tpoint, orig_size);
-
-  /* condition */
-  p = agent_expr_send (p, tpoint->cond);
-
-  /* tracepoint_action */
-  for (i = 0; i < tpoint->numactions; i++)
-    {
-      struct tracepoint_action *action = tpoint->actions[i];
-
-      p[0] = action->type;
-      p = tracepoint_action_send (&p[1], action);
-    }
-
-  get_jump_space_head ();
-  /* Copy the value of GDB_JUMP_PAD_HEAD to command buffer, so that
-     agent can use jump pad from it.  */
-  if (tpoint->type == fast_tracepoint)
-    {
-      memcpy (p, &gdb_jump_pad_head, 8);
-      p += 8;
-    }
-
-  ret = run_inferior_command (buf, (int) (ptrdiff_t) (p - buf));
-  if (ret)
-    return ret;
-
-  if (!startswith (buf, "OK"))
-    return 1;
-
-  /* The value of tracepoint's target address is stored in BUF.  */
-  memcpy (&tpoint->obj_addr_on_target,
-	  &buf[IPA_PROTO_FAST_TRACE_ADDR_ON_TARGET], 8);
-
-  if (tpoint->type == fast_tracepoint)
-    {
-      unsigned char *insn
-	= (unsigned char *) &buf[IPA_PROTO_FAST_TRACE_FJUMP_INSN];
-      int fjump_size;
-
-     trace_debug ("agent: read from cmd_buf 0x%x 0x%x\n",
-		  (unsigned int) tpoint->obj_addr_on_target,
-		  (unsigned int) gdb_jump_pad_head);
-
-      memcpy (&gdb_jump_pad_head, &buf[IPA_PROTO_FAST_TRACE_JUMP_PAD], 8);
-
-      /* This has been done in agent.  We should also set up record for it.  */
-      memcpy (&fjump_size, &buf[IPA_PROTO_FAST_TRACE_FJUMP_SIZE], 4);
-      /* Wire it in.  */
-      tpoint->handle
-	= set_fast_tracepoint_jump (tpoint->address, insn, fjump_size);
-    }
-
-  return 0;
-}
-
-static void
-download_tracepoint (struct tracepoint *tpoint)
-{
-  struct tracepoint *tp, *tp_prev;
-
-  if (tpoint->type != fast_tracepoint
-      && tpoint->type != static_tracepoint)
-    return;
-
-  download_tracepoint_1 (tpoint);
-
-  /* Find the previous entry of TPOINT, which is fast tracepoint or
-     static tracepoint.  */
-  tp_prev = NULL;
-  for (tp = tracepoints; tp != tpoint; tp = tp->next)
-    {
-      if (tp->type == fast_tracepoint || tp->type == static_tracepoint)
-	tp_prev = tp;
-    }
-
-  if (tp_prev)
-    {
-      CORE_ADDR tp_prev_target_next_addr;
-
-      /* Insert TPOINT after TP_PREV in IPA.  */
-      if (read_inferior_data_pointer (tp_prev->obj_addr_on_target
-				      + offsetof (struct tracepoint, next),
-				      &tp_prev_target_next_addr))
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "error reading `tp_prev->next'");
-	}
-
-      /* tpoint->next = tp_prev->next */
-      write_inferior_data_pointer (tpoint->obj_addr_on_target
-				   + offsetof (struct tracepoint, next),
-				   tp_prev_target_next_addr);
-      /* tp_prev->next = tpoint */
-      write_inferior_data_pointer (tp_prev->obj_addr_on_target
-				   + offsetof (struct tracepoint, next),
-				   tpoint->obj_addr_on_target);
-    }
-  else
-    /* First object in list, set the head pointer in the
-       inferior.  */
-    write_inferior_data_pointer (ipa_sym_addrs.addr_tracepoints,
-				 tpoint->obj_addr_on_target);
-
-}
-
-static void
-download_trace_state_variables (void)
-{
-  CORE_ADDR ptr = 0, prev_ptr = 0;
-  struct trace_state_variable *tsv;
-
-  /* Start out empty.  */
-  write_inferior_data_pointer (ipa_sym_addrs.addr_trace_state_variables, 0);
-
-  for (tsv = trace_state_variables; tsv != NULL; tsv = tsv->next)
-    {
-      struct trace_state_variable target_tsv;
-
-      /* TSV's with a getter have been initialized equally in both the
-	 inferior and GDBserver.  Skip them.  */
-      if (tsv->getter != NULL)
-	continue;
-
-      target_tsv = *tsv;
-
-      prev_ptr = ptr;
-      ptr = target_malloc (sizeof (*tsv));
-
-      if (tsv == trace_state_variables)
-	{
-	  /* First object in list, set the head pointer in the
-	     inferior.  */
-
-	  write_inferior_data_pointer (ipa_sym_addrs.addr_trace_state_variables,
-				       ptr);
-	}
-      else
-	{
-	  write_inferior_data_pointer (prev_ptr
-				       + offsetof (struct trace_state_variable,
-						   next),
-				       ptr);
-	}
-
-      /* Write the whole object.  We'll fix up its pointers in a bit.
-	 Assume no next, fixup when needed.  */
-      target_tsv.next = NULL;
-
-      target_write_memory (ptr, (unsigned char *) &target_tsv,
-			     sizeof (target_tsv));
-
-      if (tsv->name != NULL)
-	{
-	  size_t size = strlen (tsv->name) + 1;
-	  CORE_ADDR name_addr = target_malloc (size);
-	  target_write_memory (name_addr,
-				 (unsigned char *) tsv->name, size);
-	  write_inferior_data_pointer (ptr
-				       + offsetof (struct trace_state_variable,
-						   name),
-				       name_addr);
-	}
-
-      gdb_assert (tsv->getter == NULL);
-    }
-
-  if (prev_ptr != 0)
-    {
-      /* Fixup the next pointer in the last item in the list.  */
-      write_inferior_data_pointer (prev_ptr
-				   + offsetof (struct trace_state_variable,
-					       next), 0);
-    }
-}
-
-/* Upload complete trace frames out of the IP Agent's trace buffer
-   into GDBserver's trace buffer.  This always uploads either all or
-   no trace frames.  This is the counter part of
-   `trace_alloc_trace_buffer'.  See its description of the atomic
-   syncing mechanism.  */
-
-static void
-upload_fast_traceframes (void)
-{
-  unsigned int ipa_traceframe_read_count, ipa_traceframe_write_count;
-  unsigned int ipa_traceframe_read_count_racy, ipa_traceframe_write_count_racy;
-  CORE_ADDR tf;
-  struct ipa_trace_buffer_control ipa_trace_buffer_ctrl;
-  unsigned int curr_tbctrl_idx;
-  unsigned int ipa_trace_buffer_ctrl_curr;
-  unsigned int ipa_trace_buffer_ctrl_curr_old;
-  CORE_ADDR ipa_trace_buffer_ctrl_addr;
-  struct breakpoint *about_to_request_buffer_space_bkpt;
-  CORE_ADDR ipa_trace_buffer_lo;
-  CORE_ADDR ipa_trace_buffer_hi;
-
-  if (read_inferior_uinteger (ipa_sym_addrs.addr_traceframe_read_count,
-			      &ipa_traceframe_read_count_racy))
-    {
-      /* This will happen in most targets if the current thread is
-	 running.  */
-      return;
-    }
-
-  if (read_inferior_uinteger (ipa_sym_addrs.addr_traceframe_write_count,
-			      &ipa_traceframe_write_count_racy))
-    return;
-
-  trace_debug ("ipa_traceframe_count (racy area): %d (w=%d, r=%d)",
-	       ipa_traceframe_write_count_racy
-	       - ipa_traceframe_read_count_racy,
-	       ipa_traceframe_write_count_racy,
-	       ipa_traceframe_read_count_racy);
-
-  if (ipa_traceframe_write_count_racy == ipa_traceframe_read_count_racy)
-    return;
-
-  about_to_request_buffer_space_bkpt
-    = set_breakpoint_at (ipa_sym_addrs.addr_about_to_request_buffer_space,
-			 NULL);
-
-  if (read_inferior_uinteger (ipa_sym_addrs.addr_trace_buffer_ctrl_curr,
-			      &ipa_trace_buffer_ctrl_curr))
-    return;
-
-  ipa_trace_buffer_ctrl_curr_old = ipa_trace_buffer_ctrl_curr;
-
-  curr_tbctrl_idx = ipa_trace_buffer_ctrl_curr & ~GDBSERVER_FLUSH_COUNT_MASK;
-
-  {
-    unsigned int prev, counter;
-
-    /* Update the token, with new counters, and the GDBserver stamp
-       bit.  Alway reuse the current TBC index.  */
-    prev = ipa_trace_buffer_ctrl_curr & GDBSERVER_FLUSH_COUNT_MASK_CURR;
-    counter = (prev + 0x100) & GDBSERVER_FLUSH_COUNT_MASK_CURR;
-
-    ipa_trace_buffer_ctrl_curr = (GDBSERVER_UPDATED_FLUSH_COUNT_BIT
-				  | (prev << 12)
-				  | counter
-				  | curr_tbctrl_idx);
-  }
-
-  if (write_inferior_uinteger (ipa_sym_addrs.addr_trace_buffer_ctrl_curr,
-			       ipa_trace_buffer_ctrl_curr))
-    return;
-
-  trace_debug ("Lib: Committed %08x -> %08x",
-	       ipa_trace_buffer_ctrl_curr_old,
-	       ipa_trace_buffer_ctrl_curr);
-
-  /* Re-read these, now that we've installed the
-     `about_to_request_buffer_space' breakpoint/lock.  A thread could
-     have finished a traceframe between the last read of these
-     counters and setting the breakpoint above.  If we start
-     uploading, we never want to leave this function with
-     traceframe_read_count != 0, otherwise, GDBserver could end up
-     incrementing the counter tokens more than once (due to event loop
-     nesting), which would break the IP agent's "effective" detection
-     (see trace_alloc_trace_buffer).  */
-  if (read_inferior_uinteger (ipa_sym_addrs.addr_traceframe_read_count,
-			      &ipa_traceframe_read_count))
-    return;
-  if (read_inferior_uinteger (ipa_sym_addrs.addr_traceframe_write_count,
-			      &ipa_traceframe_write_count))
-    return;
-
-  if (debug_threads)
-    {
-      trace_debug ("ipa_traceframe_count (blocked area): %d (w=%d, r=%d)",
-		   ipa_traceframe_write_count - ipa_traceframe_read_count,
-		   ipa_traceframe_write_count, ipa_traceframe_read_count);
-
-      if (ipa_traceframe_write_count != ipa_traceframe_write_count_racy
-	  || ipa_traceframe_read_count != ipa_traceframe_read_count_racy)
-	trace_debug ("note that ipa_traceframe_count's parts changed");
-    }
-
-  /* Get the address of the current TBC object (the IP agent has an
-     array of 3 such objects).  The index is stored in the TBC
-     token.  */
-  ipa_trace_buffer_ctrl_addr = ipa_sym_addrs.addr_trace_buffer_ctrl;
-  ipa_trace_buffer_ctrl_addr
-    += sizeof (struct ipa_trace_buffer_control) * curr_tbctrl_idx;
-
-  if (read_inferior_memory (ipa_trace_buffer_ctrl_addr,
-			    (unsigned char *) &ipa_trace_buffer_ctrl,
-			    sizeof (struct ipa_trace_buffer_control)))
-    return;
-
-  if (read_inferior_data_pointer (ipa_sym_addrs.addr_trace_buffer_lo,
-				  &ipa_trace_buffer_lo))
-    return;
-  if (read_inferior_data_pointer (ipa_sym_addrs.addr_trace_buffer_hi,
-				  &ipa_trace_buffer_hi))
-    return;
-
-  /* Offsets are easier to grok for debugging than raw addresses,
-     especially for the small trace buffer sizes that are useful for
-     testing.  */
-  trace_debug ("Lib: Trace buffer [%d] start=%d free=%d "
-	       "endfree=%d wrap=%d hi=%d",
-	       curr_tbctrl_idx,
-	       (int) (ipa_trace_buffer_ctrl.start - ipa_trace_buffer_lo),
-	       (int) (ipa_trace_buffer_ctrl.free - ipa_trace_buffer_lo),
-	       (int) (ipa_trace_buffer_ctrl.end_free - ipa_trace_buffer_lo),
-	       (int) (ipa_trace_buffer_ctrl.wrap - ipa_trace_buffer_lo),
-	       (int) (ipa_trace_buffer_hi - ipa_trace_buffer_lo));
-
-  /* Note that the IPA's buffer is always circular.  */
-
-#define IPA_FIRST_TRACEFRAME() (ipa_trace_buffer_ctrl.start)
-
-#define IPA_NEXT_TRACEFRAME_1(TF, TFOBJ)		\
-  ((TF) + sizeof (struct traceframe) + (TFOBJ)->data_size)
-
-#define IPA_NEXT_TRACEFRAME(TF, TFOBJ)					\
-  (IPA_NEXT_TRACEFRAME_1 (TF, TFOBJ)					\
-   - ((IPA_NEXT_TRACEFRAME_1 (TF, TFOBJ) >= ipa_trace_buffer_ctrl.wrap) \
-      ? (ipa_trace_buffer_ctrl.wrap - ipa_trace_buffer_lo)		\
-      : 0))
-
-  tf = IPA_FIRST_TRACEFRAME ();
-
-  while (ipa_traceframe_write_count - ipa_traceframe_read_count)
-    {
-      struct tracepoint *tpoint;
-      struct traceframe *tframe;
-      unsigned char *block;
-      struct traceframe ipa_tframe;
-
-      if (read_inferior_memory (tf, (unsigned char *) &ipa_tframe,
-				offsetof (struct traceframe, data)))
-	error ("Uploading: couldn't read traceframe at %s\n", paddress (tf));
-
-      if (ipa_tframe.tpnum == 0)
-	{
-	  internal_error (__FILE__, __LINE__,
-			  "Uploading: No (more) fast traceframes, but"
-			  " ipa_traceframe_count == %u??\n",
-			  ipa_traceframe_write_count
-			  - ipa_traceframe_read_count);
-	}
-
-      /* Note that this will be incorrect for multi-location
-	 tracepoints...  */
-      tpoint = find_next_tracepoint_by_number (NULL, ipa_tframe.tpnum);
-
-      tframe = add_traceframe (tpoint);
-      if (tframe == NULL)
-	{
-	  trace_buffer_is_full = 1;
-	  trace_debug ("Uploading: trace buffer is full");
-	}
-      else
-	{
-	  /* Copy the whole set of blocks in one go for now.  FIXME:
-	     split this in smaller blocks.  */
-	  block = add_traceframe_block (tframe, tpoint,
-					ipa_tframe.data_size);
-	  if (block != NULL)
-	    {
-	      if (read_inferior_memory (tf
-					+ offsetof (struct traceframe, data),
-					block, ipa_tframe.data_size))
-		error ("Uploading: Couldn't read traceframe data at %s\n",
-		       paddress (tf + offsetof (struct traceframe, data)));
-	    }
-
-	  trace_debug ("Uploading: traceframe didn't fit");
-	  finish_traceframe (tframe);
-	}
-
-      tf = IPA_NEXT_TRACEFRAME (tf, &ipa_tframe);
-
-      /* If we freed the traceframe that wrapped around, go back
-	 to the non-wrap case.  */
-      if (tf < ipa_trace_buffer_ctrl.start)
-	{
-	  trace_debug ("Lib: Discarding past the wraparound");
-	  ipa_trace_buffer_ctrl.wrap = ipa_trace_buffer_hi;
-	}
-      ipa_trace_buffer_ctrl.start = tf;
-      ipa_trace_buffer_ctrl.end_free = ipa_trace_buffer_ctrl.start;
-      ++ipa_traceframe_read_count;
-
-      if (ipa_trace_buffer_ctrl.start == ipa_trace_buffer_ctrl.free
-	  && ipa_trace_buffer_ctrl.start == ipa_trace_buffer_ctrl.end_free)
-	{
-	  trace_debug ("Lib: buffer is fully empty.  "
-		       "Trace buffer [%d] start=%d free=%d endfree=%d",
-		       curr_tbctrl_idx,
-		       (int) (ipa_trace_buffer_ctrl.start
-			      - ipa_trace_buffer_lo),
-		       (int) (ipa_trace_buffer_ctrl.free
-			      - ipa_trace_buffer_lo),
-		       (int) (ipa_trace_buffer_ctrl.end_free
-			      - ipa_trace_buffer_lo));
-
-	  ipa_trace_buffer_ctrl.start = ipa_trace_buffer_lo;
-	  ipa_trace_buffer_ctrl.free = ipa_trace_buffer_lo;
-	  ipa_trace_buffer_ctrl.end_free = ipa_trace_buffer_hi;
-	  ipa_trace_buffer_ctrl.wrap = ipa_trace_buffer_hi;
-	}
-
-      trace_debug ("Uploaded a traceframe\n"
-		   "Lib: Trace buffer [%d] start=%d free=%d "
-		   "endfree=%d wrap=%d hi=%d",
-		   curr_tbctrl_idx,
-		   (int) (ipa_trace_buffer_ctrl.start - ipa_trace_buffer_lo),
-		   (int) (ipa_trace_buffer_ctrl.free - ipa_trace_buffer_lo),
-		   (int) (ipa_trace_buffer_ctrl.end_free
-			  - ipa_trace_buffer_lo),
-		   (int) (ipa_trace_buffer_ctrl.wrap - ipa_trace_buffer_lo),
-		   (int) (ipa_trace_buffer_hi - ipa_trace_buffer_lo));
-    }
-
-  if (target_write_memory (ipa_trace_buffer_ctrl_addr,
-			     (unsigned char *) &ipa_trace_buffer_ctrl,
-			     sizeof (struct ipa_trace_buffer_control)))
-    return;
-
-  write_inferior_integer (ipa_sym_addrs.addr_traceframe_read_count,
-			  ipa_traceframe_read_count);
-
-  trace_debug ("Done uploading traceframes [%d]\n", curr_tbctrl_idx);
-
-  pause_all (1);
-
-  delete_breakpoint (about_to_request_buffer_space_bkpt);
-  about_to_request_buffer_space_bkpt = NULL;
-
-  unpause_all (1);
-
-  if (trace_buffer_is_full)
-    stop_tracing ();
-}
-#endif
-
-#ifdef IN_PROCESS_AGENT
-
-IP_AGENT_EXPORT_VAR int ust_loaded;
-IP_AGENT_EXPORT_VAR char cmd_buf[IPA_CMD_BUF_SIZE];
-
-#ifdef HAVE_UST
-
-/* Static tracepoints.  */
-
-/* UST puts a "struct tracepoint" in the global namespace, which
-   conflicts with our tracepoint.  Arguably, being a library, it
-   shouldn't take ownership of such a generic name.  We work around it
-   here.  */
-#define tracepoint ust_tracepoint
-#include <ust/ust.h>
-#undef tracepoint
-
-extern int serialize_to_text (char *outbuf, int bufsize,
-			      const char *fmt, va_list ap);
-
-#define GDB_PROBE_NAME "gdb"
-
-/* We dynamically search for the UST symbols instead of linking them
-   in.  This lets the user decide if the application uses static
-   tracepoints, instead of always pulling libust.so in.  This vector
-   holds pointers to all functions we care about.  */
-
-static struct
-{
-  int (*serialize_to_text) (char *outbuf, int bufsize,
-			    const char *fmt, va_list ap);
-
-  int (*ltt_probe_register) (struct ltt_available_probe *pdata);
-  int (*ltt_probe_unregister) (struct ltt_available_probe *pdata);
-
-  int (*ltt_marker_connect) (const char *channel, const char *mname,
-			     const char *pname);
-  int (*ltt_marker_disconnect) (const char *channel, const char *mname,
-				const char *pname);
-
-  void (*marker_iter_start) (struct marker_iter *iter);
-  void (*marker_iter_next) (struct marker_iter *iter);
-  void (*marker_iter_stop) (struct marker_iter *iter);
-  void (*marker_iter_reset) (struct marker_iter *iter);
-} ust_ops;
-
-#include <dlfcn.h>
-
-/* Cast through typeof to catch incompatible API changes.  Since UST
-   only builds with gcc, we can freely use gcc extensions here
-   too.  */
-#define GET_UST_SYM(SYM)					\
-  do								\
-    {								\
-      if (ust_ops.SYM == NULL)					\
-	ust_ops.SYM = (typeof (&SYM)) dlsym (RTLD_DEFAULT, #SYM);	\
-      if (ust_ops.SYM == NULL)					\
-	return 0;						\
-    } while (0)
-
-#define USTF(SYM) ust_ops.SYM
-
-/* Get pointers to all libust.so functions we care about.  */
-
-static int
-dlsym_ust (void)
-{
-  GET_UST_SYM (serialize_to_text);
-
-  GET_UST_SYM (ltt_probe_register);
-  GET_UST_SYM (ltt_probe_unregister);
-  GET_UST_SYM (ltt_marker_connect);
-  GET_UST_SYM (ltt_marker_disconnect);
-
-  GET_UST_SYM (marker_iter_start);
-  GET_UST_SYM (marker_iter_next);
-  GET_UST_SYM (marker_iter_stop);
-  GET_UST_SYM (marker_iter_reset);
-
-  ust_loaded = 1;
-  return 1;
-}
-
-/* Given an UST marker, return the matching gdb static tracepoint.
-   The match is done by address.  */
-
-static struct tracepoint *
-ust_marker_to_static_tracepoint (const struct marker *mdata)
-{
-  struct tracepoint *tpoint;
-
-  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
-    {
-      if (tpoint->type != static_tracepoint)
-	continue;
-
-      if (tpoint->address == (uintptr_t) mdata->location)
-	return tpoint;
-    }
-
-  return NULL;
-}
-
-/* The probe function we install on lttng/ust markers.  Whenever a
-   probed ust marker is hit, this function is called.  This is similar
-   to gdb_collect, only for static tracepoints, instead of fast
-   tracepoints.  */
-
-static void
-gdb_probe (const struct marker *mdata, void *probe_private,
-	   struct registers *regs, void *call_private,
-	   const char *fmt, va_list *args)
-{
-  struct tracepoint *tpoint;
-  struct static_tracepoint_ctx ctx;
-  const struct target_desc *ipa_tdesc;
-
-  /* Don't do anything until the trace run is completely set up.  */
-  if (!tracing)
-    {
-      trace_debug ("gdb_probe: not tracing\n");
-      return;
-    }
-
-  ipa_tdesc = get_ipa_tdesc (ipa_tdesc_idx);
-  ctx.base.type = static_tracepoint;
-  ctx.regcache_initted = 0;
-  ctx.regs = regs;
-  ctx.fmt = fmt;
-  ctx.args = args;
-
-  /* Wrap the regblock in a register cache (in the stack, we don't
-     want to malloc here).  */
-  ctx.regspace = alloca (ipa_tdesc->registers_size);
-  if (ctx.regspace == NULL)
-    {
-      trace_debug ("Trace buffer block allocation failed, skipping");
-      return;
-    }
-
-  tpoint = ust_marker_to_static_tracepoint (mdata);
-  if (tpoint == NULL)
-    {
-      trace_debug ("gdb_probe: marker not known: "
-		   "loc:0x%p, ch:\"%s\",n:\"%s\",f:\"%s\"",
-		   mdata->location, mdata->channel,
-		   mdata->name, mdata->format);
-      return;
-    }
-
-  if (!tpoint->enabled)
-    {
-      trace_debug ("gdb_probe: tracepoint disabled");
-      return;
-    }
-
-  ctx.tpoint = tpoint;
-
-  trace_debug ("gdb_probe: collecting marker: "
-	       "loc:0x%p, ch:\"%s\",n:\"%s\",f:\"%s\"",
-	       mdata->location, mdata->channel,
-	       mdata->name, mdata->format);
-
-  /* Test the condition if present, and collect if true.  */
-  if (tpoint->cond == NULL
-      || condition_true_at_tracepoint ((struct tracepoint_hit_ctx *) &ctx,
-				       tpoint))
-    {
-      collect_data_at_tracepoint ((struct tracepoint_hit_ctx *) &ctx,
-				  tpoint->address, tpoint);
-
-      if (stopping_tracepoint
-	  || trace_buffer_is_full
-	  || expr_eval_result != expr_eval_no_error)
-	stop_tracing ();
-    }
-  else
-    {
-      /* If there was a condition and it evaluated to false, the only
-	 way we would stop tracing is if there was an error during
-	 condition expression evaluation.  */
-      if (expr_eval_result != expr_eval_no_error)
-	stop_tracing ();
-    }
-}
-
-/* Called if the gdb static tracepoint requested collecting "$_sdata",
-   static tracepoint string data.  This is a string passed to the
-   tracing library by the user, at the time of the tracepoint marker
-   call.  E.g., in the UST marker call:
-
-     trace_mark (ust, bar33, "str %s", "FOOBAZ");
-
-   the collected data is "str FOOBAZ".
-*/
-
-static void
-collect_ust_data_at_tracepoint (struct tracepoint_hit_ctx *ctx,
-				struct traceframe *tframe)
-{
-  struct static_tracepoint_ctx *umd = (struct static_tracepoint_ctx *) ctx;
-  unsigned char *bufspace;
-  int size;
-  va_list copy;
-  unsigned short blocklen;
-
-  if (umd == NULL)
-    {
-      trace_debug ("Wanted to collect static trace data, "
-		   "but there's no static trace data");
-      return;
-    }
-
-  va_copy (copy, *umd->args);
-  size = USTF(serialize_to_text) (NULL, 0, umd->fmt, copy);
-  va_end (copy);
-
-  trace_debug ("Want to collect ust data");
-
-  /* 'S' + size + string */
-  bufspace = add_traceframe_block (tframe, umd->tpoint,
-				   1 + sizeof (blocklen) + size + 1);
-  if (bufspace == NULL)
-    {
-      trace_debug ("Trace buffer block allocation failed, skipping");
-      return;
-    }
-
-  /* Identify a static trace data block.  */
-  *bufspace = 'S';
-
-  blocklen = size + 1;
-  memcpy (bufspace + 1, &blocklen, sizeof (blocklen));
-
-  va_copy (copy, *umd->args);
-  USTF(serialize_to_text) ((char *) bufspace + 1 + sizeof (blocklen),
-			   size + 1, umd->fmt, copy);
-  va_end (copy);
-
-  trace_debug ("Storing static tracepoint data in regblock: %s",
-	       bufspace + 1 + sizeof (blocklen));
-}
-
-/* The probe to register with lttng/ust.  */
-static struct ltt_available_probe gdb_ust_probe =
-  {
-    GDB_PROBE_NAME,
-    NULL,
-    gdb_probe,
-  };
-
-#endif /* HAVE_UST */
-#endif /* IN_PROCESS_AGENT */
-
-#ifndef IN_PROCESS_AGENT
-
-/* Ask the in-process agent to run a command.  Since we don't want to
-   have to handle the IPA hitting breakpoints while running the
-   command, we pause all threads, remove all breakpoints, and then set
-   the helper thread re-running.  We communicate with the helper
-   thread by means of direct memory xfering, and a socket for
-   synchronization.  */
-
-static int
-run_inferior_command (char *cmd, int len)
-{
-  int err = -1;
-  int pid = current_ptid.pid ();
-
-  trace_debug ("run_inferior_command: running: %s", cmd);
-
-  pause_all (0);
-  uninsert_all_breakpoints ();
-
-  err = agent_run_command (pid, (const char *) cmd, len);
-
-  reinsert_all_breakpoints ();
-  unpause_all (0);
-
-  return err;
-}
-
-#else /* !IN_PROCESS_AGENT */
-
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#ifndef UNIX_PATH_MAX
-#define UNIX_PATH_MAX sizeof(((struct sockaddr_un *) NULL)->sun_path)
-#endif
-
-/* Where we put the socked used for synchronization.  */
-#define SOCK_DIR P_tmpdir
-
-/* Thread ID of the helper thread.  GDBserver reads this to know which
-   is the help thread.  This is an LWP id on Linux.  */
-EXTERN_C_PUSH
-IP_AGENT_EXPORT_VAR int helper_thread_id;
-EXTERN_C_POP
-
-static int
-init_named_socket (const char *name)
-{
-  int result, fd;
-  struct sockaddr_un addr;
-
-  result = fd = socket (PF_UNIX, SOCK_STREAM, 0);
-  if (result == -1)
-    {
-      warning ("socket creation failed: %s", safe_strerror (errno));
-      return -1;
-    }
-
-  addr.sun_family = AF_UNIX;
-
-  strncpy (addr.sun_path, name, UNIX_PATH_MAX);
-  addr.sun_path[UNIX_PATH_MAX - 1] = '\0';
-
-  result = access (name, F_OK);
-  if (result == 0)
-    {
-      /* File exists.  */
-      result = unlink (name);
-      if (result == -1)
-	{
-	  warning ("unlink failed: %s", safe_strerror (errno));
-	  close (fd);
-	  return -1;
-	}
-      warning ("socket %s already exists; overwriting", name);
-    }
-
-  result = bind (fd, (struct sockaddr *) &addr, sizeof (addr));
-  if (result == -1)
-    {
-      warning ("bind failed: %s", safe_strerror (errno));
-      close (fd);
-      return -1;
-    }
-
-  result = listen (fd, 1);
-  if (result == -1)
-    {
-      warning ("listen: %s", safe_strerror (errno));
-      close (fd);
-      return -1;
-    }
-
-  return fd;
-}
-
-static char agent_socket_name[UNIX_PATH_MAX];
-
-static int
-gdb_agent_socket_init (void)
-{
-  int result, fd;
-
-  result = xsnprintf (agent_socket_name, UNIX_PATH_MAX, "%s/gdb_ust%d",
-		      SOCK_DIR, getpid ());
-  if (result >= UNIX_PATH_MAX)
-    {
-      trace_debug ("string overflow allocating socket name");
-      return -1;
-    }
-
-  fd = init_named_socket (agent_socket_name);
-  if (fd < 0)
-    warning ("Error initializing named socket (%s) for communication with the "
-	     "ust helper thread. Check that directory exists and that it "
-	     "is writable.", agent_socket_name);
-
-  return fd;
-}
-
-#ifdef HAVE_UST
-
-/* The next marker to be returned on a qTsSTM command.  */
-static const struct marker *next_st;
-
-/* Returns the first known marker.  */
-
-struct marker *
-first_marker (void)
-{
-  struct marker_iter iter;
-
-  USTF(marker_iter_reset) (&iter);
-  USTF(marker_iter_start) (&iter);
-
-  return iter.marker;
-}
-
-/* Returns the marker following M.  */
-
-const struct marker *
-next_marker (const struct marker *m)
-{
-  struct marker_iter iter;
-
-  USTF(marker_iter_reset) (&iter);
-  USTF(marker_iter_start) (&iter);
-
-  for (; iter.marker != NULL; USTF(marker_iter_next) (&iter))
-    {
-      if (iter.marker == m)
-	{
-	  USTF(marker_iter_next) (&iter);
-	  return iter.marker;
-	}
-    }
-
-  return NULL;
-}
-
-/* Return an hexstr version of the STR C string, fit for sending to
-   GDB.  */
-
-static char *
-cstr_to_hexstr (const char *str)
-{
-  int len = strlen (str);
-  char *hexstr = xmalloc (len * 2 + 1);
-  bin2hex ((gdb_byte *) str, hexstr, len);
-  return hexstr;
-}
-
-/* Compose packet that is the response to the qTsSTM/qTfSTM/qTSTMat
-   packets.  */
-
-static void
-response_ust_marker (char *packet, const struct marker *st)
-{
-  char *strid, *format, *tmp;
-
-  next_st = next_marker (st);
-
-  tmp = xmalloc (strlen (st->channel) + 1 +
-		 strlen (st->name) + 1);
-  sprintf (tmp, "%s/%s", st->channel, st->name);
-
-  strid = cstr_to_hexstr (tmp);
-  free (tmp);
-
-  format = cstr_to_hexstr (st->format);
-
-  sprintf (packet, "m%s:%s:%s",
-	   paddress ((uintptr_t) st->location),
-	   strid,
-	   format);
-
-  free (strid);
-  free (format);
-}
-
-/* Return the first static tracepoint, and initialize the state
-   machine that will iterate through all the static tracepoints.  */
-
-static void
-cmd_qtfstm (char *packet)
-{
-  trace_debug ("Returning first trace state variable definition");
-
-  if (first_marker ())
-    response_ust_marker (packet, first_marker ());
-  else
-    strcpy (packet, "l");
-}
-
-/* Return additional trace state variable definitions. */
-
-static void
-cmd_qtsstm (char *packet)
-{
-  trace_debug ("Returning static tracepoint");
-
-  if (next_st)
-    response_ust_marker (packet, next_st);
-  else
-    strcpy (packet, "l");
-}
-
-/* Disconnect the GDB probe from a marker at a given address.  */
-
-static void
-unprobe_marker_at (char *packet)
-{
-  char *p = packet;
-  ULONGEST address;
-  struct marker_iter iter;
-
-  p += sizeof ("unprobe_marker_at:") - 1;
-
-  p = unpack_varlen_hex (p, &address);
-
-  USTF(marker_iter_reset) (&iter);
-  USTF(marker_iter_start) (&iter);
-  for (; iter.marker != NULL; USTF(marker_iter_next) (&iter))
-    if ((uintptr_t ) iter.marker->location == address)
-      {
-	int result;
-
-	result = USTF(ltt_marker_disconnect) (iter.marker->channel,
-					      iter.marker->name,
-					      GDB_PROBE_NAME);
-	if (result < 0)
-	  warning ("could not disable marker %s/%s",
-		   iter.marker->channel, iter.marker->name);
-	break;
-      }
-}
-
-/* Connect the GDB probe to a marker at a given address.  */
-
-static int
-probe_marker_at (char *packet)
-{
-  char *p = packet;
-  ULONGEST address;
-  struct marker_iter iter;
-  struct marker *m;
-
-  p += sizeof ("probe_marker_at:") - 1;
-
-  p = unpack_varlen_hex (p, &address);
-
-  USTF(marker_iter_reset) (&iter);
-
-  for (USTF(marker_iter_start) (&iter), m = iter.marker;
-       m != NULL;
-       USTF(marker_iter_next) (&iter), m = iter.marker)
-    if ((uintptr_t ) m->location == address)
-      {
-	int result;
-
-	trace_debug ("found marker for address.  "
-		     "ltt_marker_connect (marker = %s/%s)",
-		     m->channel, m->name);
-
-	result = USTF(ltt_marker_connect) (m->channel, m->name,
-					   GDB_PROBE_NAME);
-	if (result && result != -EEXIST)
-	  trace_debug ("ltt_marker_connect (marker = %s/%s, errno = %d)",
-		       m->channel, m->name, -result);
-
-	if (result < 0)
-	  {
-	    sprintf (packet, "E.could not connect marker: channel=%s, name=%s",
-		     m->channel, m->name);
-	    return -1;
-	  }
-
-	strcpy (packet, "OK");
-	return 0;
-      }
-
-  sprintf (packet, "E.no marker found at 0x%s", paddress (address));
-  return -1;
-}
-
-static int
-cmd_qtstmat (char *packet)
-{
-  char *p = packet;
-  ULONGEST address;
-  struct marker_iter iter;
-  struct marker *m;
-
-  p += sizeof ("qTSTMat:") - 1;
-
-  p = unpack_varlen_hex (p, &address);
-
-  USTF(marker_iter_reset) (&iter);
-
-  for (USTF(marker_iter_start) (&iter), m = iter.marker;
-       m != NULL;
-       USTF(marker_iter_next) (&iter), m = iter.marker)
-    if ((uintptr_t ) m->location == address)
-      {
-	response_ust_marker (packet, m);
-	return 0;
-      }
-
-  strcpy (packet, "l");
-  return -1;
-}
-
-static void
-gdb_ust_init (void)
-{
-  if (!dlsym_ust ())
-    return;
-
-  USTF(ltt_probe_register) (&gdb_ust_probe);
-}
-
-#endif /* HAVE_UST */
-
-#include <sys/syscall.h>
-
-static void
-gdb_agent_remove_socket (void)
-{
-  unlink (agent_socket_name);
-}
-
-/* Helper thread of agent.  */
-
-static void *
-gdb_agent_helper_thread (void *arg)
-{
-  int listen_fd;
-
-  atexit (gdb_agent_remove_socket);
-
-  while (1)
-    {
-      listen_fd = gdb_agent_socket_init ();
-
-      if (helper_thread_id == 0)
-	helper_thread_id = syscall (SYS_gettid);
-
-      if (listen_fd == -1)
-	{
-	  warning ("could not create sync socket");
-	  break;
-	}
-
-      while (1)
-	{
-	  socklen_t tmp;
-	  struct sockaddr_un sockaddr;
-	  int fd;
-	  char buf[1];
-	  int ret;
-	  int stop_loop = 0;
-
-	  tmp = sizeof (sockaddr);
-
-	  do
-	    {
-	      fd = accept (listen_fd, (struct sockaddr *) &sockaddr, &tmp);
-	    }
-	  /* It seems an ERESTARTSYS can escape out of accept.  */
-	  while (fd == -512 || (fd == -1 && errno == EINTR));
-
-	  if (fd < 0)
-	    {
-	      warning ("Accept returned %d, error: %s",
-		       fd, safe_strerror (errno));
-	      break;
-	    }
-
-	  do
-	    {
-	      ret = read (fd, buf, 1);
-	    } while (ret == -1 && errno == EINTR);
-
-	  if (ret == -1)
-	    {
-	      warning ("reading socket (fd=%d) failed with %s",
-		       fd, safe_strerror (errno));
-	      close (fd);
-	      break;
-	    }
-
-	  if (cmd_buf[0])
-	    {
-	      if (startswith (cmd_buf, "close"))
-		{
-		  stop_loop = 1;
-		}
-#ifdef HAVE_UST
-	      else if (strcmp ("qTfSTM", cmd_buf) == 0)
-		{
-		  cmd_qtfstm (cmd_buf);
-		}
-	      else if (strcmp ("qTsSTM", cmd_buf) == 0)
-		{
-		  cmd_qtsstm (cmd_buf);
-		}
-	      else if (startswith (cmd_buf, "unprobe_marker_at:"))
-		{
-		  unprobe_marker_at (cmd_buf);
-		}
-	      else if (startswith (cmd_buf, "probe_marker_at:"))
-		{
-		  probe_marker_at (cmd_buf);
-		}
-	      else if (startswith (cmd_buf, "qTSTMat:"))
-		{
-		  cmd_qtstmat (cmd_buf);
-		}
-#endif /* HAVE_UST */
-	    }
-
-	  /* Fix compiler's warning: ignoring return value of 'write'.  */
-	  ret = write (fd, buf, 1);
-	  close (fd);
-
-	  if (stop_loop)
-	    {
-	      close (listen_fd);
-	      unlink (agent_socket_name);
-
-	      /* Sleep endlessly to wait the whole inferior stops.  This
-		 thread can not exit because GDB or GDBserver may still need
-		 'current_thread' (representing this thread) to access
-		 inferior memory.  Otherwise, this thread exits earlier than
-		 other threads, and 'current_thread' is set to NULL.  */
-	      while (1)
-		sleep (10);
-	    }
-	}
-    }
-
-  return NULL;
-}
-
-#include <signal.h>
-#include <pthread.h>
-
-EXTERN_C_PUSH
-IP_AGENT_EXPORT_VAR int gdb_agent_capability = AGENT_CAPA_STATIC_TRACE;
-EXTERN_C_POP
-
-static void
-gdb_agent_init (void)
-{
-  int res;
-  pthread_t thread;
-  sigset_t new_mask;
-  sigset_t orig_mask;
-
-  /* We want the helper thread to be as transparent as possible, so
-     have it inherit an all-signals-blocked mask.  */
-
-  sigfillset (&new_mask);
-  res = pthread_sigmask (SIG_SETMASK, &new_mask, &orig_mask);
-  if (res)
-    perror_with_name ("pthread_sigmask (1)");
-
-  res = pthread_create (&thread,
-			NULL,
-			gdb_agent_helper_thread,
-			NULL);
-
-  res = pthread_sigmask (SIG_SETMASK, &orig_mask, NULL);
-  if (res)
-    perror_with_name ("pthread_sigmask (2)");
-
-  while (helper_thread_id == 0)
-    usleep (1);
-
-#ifdef HAVE_UST
-  gdb_ust_init ();
-#endif
-}
-
-#include <sys/mman.h>
-
-IP_AGENT_EXPORT_VAR char *gdb_tp_heap_buffer;
-IP_AGENT_EXPORT_VAR char *gdb_jump_pad_buffer;
-IP_AGENT_EXPORT_VAR char *gdb_jump_pad_buffer_end;
-IP_AGENT_EXPORT_VAR char *gdb_trampoline_buffer;
-IP_AGENT_EXPORT_VAR char *gdb_trampoline_buffer_end;
-IP_AGENT_EXPORT_VAR char *gdb_trampoline_buffer_error;
-
-/* Record the result of getting buffer space for fast tracepoint
-   trampolines.  Any error message is copied, since caller may not be
-   using persistent storage.  */
-
-void
-set_trampoline_buffer_space (CORE_ADDR begin, CORE_ADDR end, char *errmsg)
-{
-  gdb_trampoline_buffer = (char *) (uintptr_t) begin;
-  gdb_trampoline_buffer_end = (char *) (uintptr_t) end;
-  if (errmsg)
-    strncpy (gdb_trampoline_buffer_error, errmsg, 99);
-  else
-    strcpy (gdb_trampoline_buffer_error, "no buffer passed");
-}
-
-static void __attribute__ ((constructor))
-initialize_tracepoint_ftlib (void)
-{
-  initialize_tracepoint ();
-
-  gdb_agent_init ();
-}
-
-#ifndef HAVE_GETAUXVAL
-/* Retrieve the value of TYPE from the auxiliary vector.  If TYPE is not
-   found, 0 is returned.  This function is provided if glibc is too old.  */
-
-unsigned long
-getauxval (unsigned long type)
-{
-  unsigned long data[2];
-  FILE *f = fopen ("/proc/self/auxv", "r");
-  unsigned long value = 0;
-
-  if (f == NULL)
-    return 0;
-
-  while (fread (data, sizeof (data), 1, f) > 0)
-    {
-      if (data[0] == type)
-	{
-	  value = data[1];
-	  break;
-	}
-    }
-
-  fclose (f);
-  return value;
-}
-#endif
-
-#endif /* IN_PROCESS_AGENT */
-
-/* Return a timestamp, expressed as microseconds of the usual Unix
-   time.  (As the result is a 64-bit number, it will not overflow any
-   time soon.)  */
-
-static LONGEST
-get_timestamp (void)
-{
-  using namespace std::chrono;
-
-  steady_clock::time_point now = steady_clock::now ();
-  return duration_cast<microseconds> (now.time_since_epoch ()).count ();
-}
-
-void
-initialize_tracepoint (void)
-{
-  /* Start with the default size.  */
-  init_trace_buffer (DEFAULT_TRACE_BUFFER_SIZE);
-
-  /* Wire trace state variable 1 to be the timestamp.  This will be
-     uploaded to GDB upon connection and become one of its trace state
-     variables.  (In case you're wondering, if GDB already has a trace
-     variable numbered 1, it will be renumbered.)  */
-  create_trace_state_variable (1, 0);
-  set_trace_state_variable_name (1, "trace_timestamp");
-  set_trace_state_variable_getter (1, get_timestamp);
-
-#ifdef IN_PROCESS_AGENT
-  {
-    int pagesize;
-    size_t jump_pad_size;
-
-    pagesize = sysconf (_SC_PAGE_SIZE);
-    if (pagesize == -1)
-      perror_with_name ("sysconf");
-
-#define SCRATCH_BUFFER_NPAGES 20
-
-    jump_pad_size = pagesize * SCRATCH_BUFFER_NPAGES;
-
-    gdb_tp_heap_buffer = (char *) xmalloc (5 * 1024 * 1024);
-    gdb_jump_pad_buffer = (char *) alloc_jump_pad_buffer (jump_pad_size);
-    if (gdb_jump_pad_buffer == NULL)
-      perror_with_name ("mmap");
-    gdb_jump_pad_buffer_end = gdb_jump_pad_buffer + jump_pad_size;
-  }
-
-  gdb_trampoline_buffer = gdb_trampoline_buffer_end = 0;
-
-  /* It's not a fatal error for something to go wrong with trampoline
-     buffer setup, but it can be mysterious, so create a channel to
-     report back on what went wrong, using a fixed size since we may
-     not be able to allocate space later when the problem occurs.  */
-  gdb_trampoline_buffer_error = (char *) xmalloc (IPA_BUFSIZ);
-
-  strcpy (gdb_trampoline_buffer_error, "No errors reported");
-
-  initialize_low_tracepoint ();
-#endif
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/tracepoint.h ./gdb/gdbserver/tracepoint.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/tracepoint.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/tracepoint.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,195 +0,0 @@
-/* Tracepoint code for remote server for GDB.
-   Copyright (C) 1993-2020 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 GDBSERVER_TRACEPOINT_H
-#define GDBSERVER_TRACEPOINT_H
-
-/* Size for a small buffer to report problems from the in-process
-   agent back to GDBserver.  */
-#define IPA_BUFSIZ 100
-
-void initialize_tracepoint (void);
-
-#if defined(__GNUC__)
-# define ATTR_USED __attribute__((used))
-# define ATTR_NOINLINE __attribute__((noinline))
-#else
-# define ATTR_USED
-# define ATTR_NOINLINE
-#endif
-
-/* How to make symbol public/exported.  */
-
-#if defined _WIN32 || defined __CYGWIN__
-# define EXPORTED_SYMBOL __declspec (dllexport)
-#else
-# if __GNUC__ >= 4
-#  define EXPORTED_SYMBOL __attribute__ ((visibility ("default")))
-# else
-#  define EXPORTED_SYMBOL
-# endif
-#endif
-
-/* Use these to make sure the functions and variables the IPA needs to
-   export (symbols GDBserver needs to query GDB about) are visible and
-   have C linkage.
-
-   Tag exported functions with IP_AGENT_EXPORT_FUNC, tag the
-   definitions of exported variables with IP_AGENT_EXPORT_VAR, and
-   variable declarations with IP_AGENT_EXPORT_VAR_DECL.  Variables
-   must also be exported with C linkage.  As we can't both use extern
-   "C" and initialize a variable in the same statement, variables that
-   don't have a separate declaration must use
-   EXTERN_C_PUSH/EXTERN_C_POP around their definition.  */
-
-#ifdef IN_PROCESS_AGENT
-# define IP_AGENT_EXPORT_FUNC EXTERN_C EXPORTED_SYMBOL ATTR_NOINLINE ATTR_USED
-# define IP_AGENT_EXPORT_VAR EXPORTED_SYMBOL ATTR_USED
-# define IP_AGENT_EXPORT_VAR_DECL EXTERN_C EXPORTED_SYMBOL
-#else
-# define IP_AGENT_EXPORT_FUNC
-# define IP_AGENT_EXPORT_VAR
-# define IP_AGENT_EXPORT_VAR_DECL extern
-#endif
-
-IP_AGENT_EXPORT_VAR_DECL int tracing;
-
-extern int disconnected_tracing;
-
-void tracepoint_look_up_symbols (void);
-
-void stop_tracing (void);
-
-int handle_tracepoint_general_set (char *own_buf);
-int handle_tracepoint_query (char *own_buf);
-
-int tracepoint_finished_step (struct thread_info *tinfo, CORE_ADDR stop_pc);
-int tracepoint_was_hit (struct thread_info *tinfo, CORE_ADDR stop_pc);
-
-void release_while_stepping_state_list (struct thread_info *tinfo);
-
-int in_readonly_region (CORE_ADDR addr, ULONGEST length);
-int traceframe_read_mem (int tfnum, CORE_ADDR addr,
-			 unsigned char *buf, ULONGEST length,
-			 ULONGEST *nbytes);
-int fetch_traceframe_registers (int tfnum,
-				struct regcache *regcache,
-				int regnum);
-
-int traceframe_read_sdata (int tfnum, ULONGEST offset,
-			   unsigned char *buf, ULONGEST length,
-			   ULONGEST *nbytes);
-
-int traceframe_read_info (int tfnum, struct buffer *buffer);
-
-/* If a thread is determined to be collecting a fast tracepoint, this
-   structure holds the collect status.  */
-
-struct fast_tpoint_collect_status
-{
-  /* The tracepoint that is presently being collected.  */
-  int tpoint_num;
-  CORE_ADDR tpoint_addr;
-
-  /* The address range in the jump pad of where the original
-     instruction the tracepoint jump was inserted was relocated
-     to.  */
-  CORE_ADDR adjusted_insn_addr;
-  CORE_ADDR adjusted_insn_addr_end;
-};
-
-/* The possible states a thread can be in, related to the collection of fast
-   tracepoint.  */
-
-enum class fast_tpoint_collect_result
-{
-  /* Not collecting a fast tracepoint.  */
-  not_collecting,
-
-  /* In the jump pad, but before the relocated instruction.  */
-  before_insn,
-
-  /* In the jump pad, but at (or after) the relocated instruction.  */
-  at_insn,
-};
-
-fast_tpoint_collect_result fast_tracepoint_collecting
-  (CORE_ADDR thread_area, CORE_ADDR stop_pc,
-   struct fast_tpoint_collect_status *status);
-
-void force_unlock_trace_buffer (void);
-
-int handle_tracepoint_bkpts (struct thread_info *tinfo, CORE_ADDR stop_pc);
-
-#ifdef IN_PROCESS_AGENT
-void initialize_low_tracepoint (void);
-const struct target_desc *get_ipa_tdesc (int idx);
-void supply_fast_tracepoint_registers (struct regcache *regcache,
-				       const unsigned char *regs);
-void supply_static_tracepoint_registers (struct regcache *regcache,
-					 const unsigned char *regs,
-					 CORE_ADDR pc);
-void set_trampoline_buffer_space (CORE_ADDR begin, CORE_ADDR end,
-				  char *errmsg);
-void *alloc_jump_pad_buffer (size_t size);
-#ifndef HAVE_GETAUXVAL
-unsigned long getauxval (unsigned long type);
-#endif
-#else
-void stop_tracing (void);
-
-int claim_trampoline_space (ULONGEST used, CORE_ADDR *trampoline);
-int have_fast_tracepoint_trampoline_buffer (char *msgbuf);
-void gdb_agent_about_to_close (int pid);
-#endif
-
-struct traceframe;
-struct eval_agent_expr_context;
-
-/* Do memory copies for bytecodes.  */
-/* Do the recording of memory blocks for actions and bytecodes.  */
-
-int agent_mem_read (struct eval_agent_expr_context *ctx,
-		    unsigned char *to, CORE_ADDR from,
-		    ULONGEST len);
-
-LONGEST agent_get_trace_state_variable_value (int num);
-void agent_set_trace_state_variable_value (int num, LONGEST val);
-
-/* Record the value of a trace state variable.  */
-
-int agent_tsv_read (struct eval_agent_expr_context *ctx, int n);
-int agent_mem_read_string (struct eval_agent_expr_context *ctx,
-			   unsigned char *to,
-			   CORE_ADDR from,
-			   ULONGEST len);
-
-/* The prototype the get_raw_reg function in the IPA.  Each arch's
-   bytecode compiler emits calls to this function.  */
-ULONGEST get_raw_reg (const unsigned char *raw_regs, int regnum);
-
-/* Returns the address of the get_raw_reg function in the IPA.  */
-CORE_ADDR get_raw_reg_func_addr (void);
-/* Returns the address of the get_trace_state_variable_value
-   function in the IPA.  */
-CORE_ADDR get_get_tsv_func_addr (void);
-/* Returns the address of the set_trace_state_variable_value
-   function in the IPA.  */
-CORE_ADDR get_set_tsv_func_addr (void);
-
-#endif /* GDBSERVER_TRACEPOINT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/utils.c ./gdb/gdbserver/utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/utils.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/utils.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,127 +0,0 @@
-/* General utility routines for the remote server for GDB.
-   Copyright (C) 1986-2020 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 "server.h"
-
-#ifdef IN_PROCESS_AGENT
-#  define PREFIX "ipa: "
-#  define TOOLNAME "GDBserver in-process agent"
-#else
-#  define PREFIX "gdbserver: "
-#  define TOOLNAME "GDBserver"
-#endif
-
-/* Generally useful subroutines used throughout the program.  */
-
-void
-malloc_failure (long size)
-{
-  fprintf (stderr,
-	   PREFIX "ran out of memory while trying to allocate %lu bytes\n",
-	   (unsigned long) size);
-  exit (1);
-}
-
-/* Print the system error message for errno, and also mention STRING
-   as the file name for which the error was encountered.
-   Then return to command level.  */
-
-void
-perror_with_name (const char *string)
-{
-  const char *err;
-  char *combined;
-
-  err = safe_strerror (errno);
-  if (err == NULL)
-    err = "unknown error";
-
-  combined = (char *) alloca (strlen (err) + strlen (string) + 3);
-  strcpy (combined, string);
-  strcat (combined, ": ");
-  strcat (combined, err);
-
-  error ("%s.", combined);
-}
-
-/* Print an error message and return to top level.  */
-
-void
-verror (const char *string, va_list args)
-{
-#ifdef IN_PROCESS_AGENT
-  fflush (stdout);
-  vfprintf (stderr, string, args);
-  fprintf (stderr, "\n");
-  exit (1);
-#else
-  throw_verror (GENERIC_ERROR, string, args);
-#endif
-}
-
-void
-vwarning (const char *string, va_list args)
-{
-  fprintf (stderr, PREFIX);
-  vfprintf (stderr, string, args);
-  fprintf (stderr, "\n");
-}
-
-/* Report a problem internal to GDBserver, and exit.  */
-
-void
-internal_verror (const char *file, int line, const char *fmt, va_list args)
-{
-  fprintf (stderr,  "\
-%s:%d: A problem internal to " TOOLNAME " has been detected.\n", file, line);
-  vfprintf (stderr, fmt, args);
-  fprintf (stderr, "\n");
-  exit (1);
-}
-
-/* Report a problem internal to GDBserver.  */
-
-void
-internal_vwarning (const char *file, int line, const char *fmt, va_list args)
-{
-  fprintf (stderr,  "\
-%s:%d: A problem internal to " TOOLNAME " has been detected.\n", file, line);
-  vfprintf (stderr, fmt, args);
-  fprintf (stderr, "\n");
-}
-
-/* Convert a CORE_ADDR into a HEX string, like %lx.
-   The result is stored in a circular static buffer, NUMCELLS deep.  */
-
-char *
-paddress (CORE_ADDR addr)
-{
-  return phex_nz (addr, sizeof (CORE_ADDR));
-}
-
-/* Convert a file descriptor into a printable string.  */
-
-char *
-pfildes (gdb_fildes_t fd)
-{
-#if USE_WIN32API
-  return phex_nz (fd, sizeof (gdb_fildes_t));
-#else
-  return plongest (fd);
-#endif
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/utils.h ./gdb/gdbserver/utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/utils.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/utils.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,25 +0,0 @@
-/* General utility routines for the remote server for GDB.
-   Copyright (C) 1993-2020 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 GDBSERVER_UTILS_H
-#define GDBSERVER_UTILS_H
-
-char *paddress (CORE_ADDR addr);
-char *pfildes (gdb_fildes_t fd);
-
-#endif /* GDBSERVER_UTILS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/win32-arm-low.c ./gdb/gdbserver/win32-arm-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/win32-arm-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/win32-arm-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,134 +0,0 @@
-/* Copyright (C) 2007-2020 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 "server.h"
-#include "win32-low.h"
-
-#ifndef CONTEXT_FLOATING_POINT
-#define CONTEXT_FLOATING_POINT 0
-#endif
-
-/* Defined in auto-generated file reg-arm.c.  */
-void init_registers_arm (void);
-extern const struct target_desc *tdesc_arm;
-
-static void
-arm_get_thread_context (win32_thread_info *th)
-{
-  th->context.ContextFlags = \
-    CONTEXT_FULL | \
-    CONTEXT_FLOATING_POINT;
-
-  GetThreadContext (th->h, &th->context);
-}
-
-#define context_offset(x) ((int)&(((CONTEXT *)NULL)->x))
-static const int mappings[] = {
-  context_offset (R0),
-  context_offset (R1),
-  context_offset (R2),
-  context_offset (R3),
-  context_offset (R4),
-  context_offset (R5),
-  context_offset (R6),
-  context_offset (R7),
-  context_offset (R8),
-  context_offset (R9),
-  context_offset (R10),
-  context_offset (R11),
-  context_offset (R12),
-  context_offset (Sp),
-  context_offset (Lr),
-  context_offset (Pc),
-  -1, /* f0 */
-  -1, /* f1 */
-  -1, /* f2 */
-  -1, /* f3 */
-  -1, /* f4 */
-  -1, /* f5 */
-  -1, /* f6 */
-  -1, /* f7 */
-  -1, /* fps */
-  context_offset (Psr),
-};
-#undef context_offset
-
-/* Return a pointer into a CONTEXT field indexed by gdb register number.
-   Return a pointer to an dummy register holding zero if there is no
-   corresponding CONTEXT field for the given register number.  */
-static char *
-regptr (CONTEXT* c, int r)
-{
-  if (mappings[r] < 0)
-  {
-    static ULONG zero;
-    /* Always force value to zero, in case the user tried to write
-       to this register before.  */
-    zero = 0;
-    return (char *) &zero;
-  }
-  else
-    return (char *) c + mappings[r];
-}
-
-/* Fetch register from gdbserver regcache data.  */
-static void
-arm_fetch_inferior_register (struct regcache *regcache,
-			     win32_thread_info *th, int r)
-{
-  char *context_offset = regptr (&th->context, r);
-  supply_register (regcache, r, context_offset);
-}
-
-/* Store a new register value into the thread context of TH.  */
-static void
-arm_store_inferior_register (struct regcache *regcache,
-			     win32_thread_info *th, int r)
-{
-  collect_register (regcache, r, regptr (&th->context, r));
-}
-
-static void
-arm_arch_setup (void)
-{
-  init_registers_arm ();
-  win32_tdesc = tdesc_arm;
-}
-
-/* Correct in either endianness.  We do not support Thumb yet.  */
-static const unsigned long arm_wince_breakpoint = 0xe6000010;
-#define arm_wince_breakpoint_len 4
-
-struct win32_target_ops the_low_target = {
-  arm_arch_setup,
-  sizeof (mappings) / sizeof (mappings[0]),
-  NULL, /* initial_stuff */
-  arm_get_thread_context,
-  NULL, /* prepare_to_resume */
-  NULL, /* thread_added */
-  arm_fetch_inferior_register,
-  arm_store_inferior_register,
-  NULL, /* single_step */
-  (const unsigned char *) &arm_wince_breakpoint,
-  arm_wince_breakpoint_len,
-  /* Watchpoint related functions.  See target.h for comments.  */
-  NULL, /* supports_z_point_type */
-  NULL, /* insert_point */
-  NULL, /* remove_point */
-  NULL, /* stopped_by_watchpoint */
-  NULL  /* stopped_data_address */
-};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/win32-i386-low.c ./gdb/gdbserver/win32-i386-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/win32-i386-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/win32-i386-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,468 +0,0 @@
-/* Copyright (C) 2007-2020 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 "server.h"
-#include "win32-low.h"
-#include "x86-low.h"
-#include "gdbsupport/x86-xstate.h"
-#ifdef __x86_64__
-#include "arch/amd64.h"
-#endif
-#include "arch/i386.h"
-#include "tdesc.h"
-#include "x86-tdesc.h"
-
-#ifndef CONTEXT_EXTENDED_REGISTERS
-#define CONTEXT_EXTENDED_REGISTERS 0
-#endif
-
-#define FCS_REGNUM 27
-#define FOP_REGNUM 31
-
-#define FLAG_TRACE_BIT 0x100
-
-static struct x86_debug_reg_state debug_reg_state;
-
-static void
-update_debug_registers (thread_info *thread)
-{
-  win32_thread_info *th = (win32_thread_info *) thread_target_data (thread);
-
-  /* The actual update is done later just before resuming the lwp,
-     we just mark that the registers need updating.  */
-  th->debug_registers_changed = 1;
-}
-
-/* Update the inferior's debug register REGNUM from STATE.  */
-
-static void
-x86_dr_low_set_addr (int regnum, CORE_ADDR addr)
-{
-  gdb_assert (DR_FIRSTADDR <= regnum && regnum <= DR_LASTADDR);
-
-  /* Only update the threads of this process.  */
-  for_each_thread (current_thread->id.pid (), update_debug_registers);
-}
-
-/* Update the inferior's DR7 debug control register from STATE.  */
-
-static void
-x86_dr_low_set_control (unsigned long control)
-{
-  /* Only update the threads of this process.  */
-  for_each_thread (current_thread->id.pid (), update_debug_registers);
-}
-
-/* Return the current value of a DR register of the current thread's
-   context.  */
-
-static DWORD64
-win32_get_current_dr (int dr)
-{
-  win32_thread_info *th
-    = (win32_thread_info *) thread_target_data (current_thread);
-
-  win32_require_context (th);
-
-#define RET_DR(DR)				\
-  case DR:					\
-    return th->context.Dr ## DR
-
-  switch (dr)
-    {
-      RET_DR (0);
-      RET_DR (1);
-      RET_DR (2);
-      RET_DR (3);
-      RET_DR (6);
-      RET_DR (7);
-    }
-
-#undef RET_DR
-
-  gdb_assert_not_reached ("unhandled dr");
-}
-
-static CORE_ADDR
-x86_dr_low_get_addr (int regnum)
-{
-  gdb_assert (DR_FIRSTADDR <= regnum && regnum <= DR_LASTADDR);
-
-  return win32_get_current_dr (regnum - DR_FIRSTADDR);
-}
-
-static unsigned long
-x86_dr_low_get_control (void)
-{
-  return win32_get_current_dr (7);
-}
-
-/* Get the value of the DR6 debug status register from the inferior
-   and record it in STATE.  */
-
-static unsigned long
-x86_dr_low_get_status (void)
-{
-  return win32_get_current_dr (6);
-}
-
-/* Low-level function vector.  */
-struct x86_dr_low_type x86_dr_low =
-  {
-    x86_dr_low_set_control,
-    x86_dr_low_set_addr,
-    x86_dr_low_get_addr,
-    x86_dr_low_get_status,
-    x86_dr_low_get_control,
-    sizeof (void *),
-  };
-
-/* Breakpoint/watchpoint support.  */
-
-static int
-i386_supports_z_point_type (char z_type)
-{
-  switch (z_type)
-    {
-    case Z_PACKET_WRITE_WP:
-    case Z_PACKET_ACCESS_WP:
-      return 1;
-    default:
-      return 0;
-    }
-}
-
-static int
-i386_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		   int size, struct raw_breakpoint *bp)
-{
-  switch (type)
-    {
-    case raw_bkpt_type_write_wp:
-    case raw_bkpt_type_access_wp:
-      {
-	enum target_hw_bp_type hw_type
-	  = raw_bkpt_type_to_target_hw_bp_type (type);
-
-	return x86_dr_insert_watchpoint (&debug_reg_state,
-					 hw_type, addr, size);
-      }
-    default:
-      /* Unsupported.  */
-      return 1;
-    }
-}
-
-static int
-i386_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		   int size, struct raw_breakpoint *bp)
-{
-  switch (type)
-    {
-    case raw_bkpt_type_write_wp:
-    case raw_bkpt_type_access_wp:
-      {
-	enum target_hw_bp_type hw_type
-	  = raw_bkpt_type_to_target_hw_bp_type (type);
-
-	return x86_dr_remove_watchpoint (&debug_reg_state,
-					 hw_type, addr, size);
-      }
-    default:
-      /* Unsupported.  */
-      return 1;
-    }
-}
-
-static int
-x86_stopped_by_watchpoint (void)
-{
-  return x86_dr_stopped_by_watchpoint (&debug_reg_state);
-}
-
-static CORE_ADDR
-x86_stopped_data_address (void)
-{
-  CORE_ADDR addr;
-  if (x86_dr_stopped_data_address (&debug_reg_state, &addr))
-    return addr;
-  return 0;
-}
-
-static void
-i386_initial_stuff (void)
-{
-  x86_low_init_dregs (&debug_reg_state);
-}
-
-static void
-i386_get_thread_context (win32_thread_info *th)
-{
-  /* Requesting the CONTEXT_EXTENDED_REGISTERS register set fails if
-     the system doesn't support extended registers.  */
-  static DWORD extended_registers = CONTEXT_EXTENDED_REGISTERS;
-
- again:
-  th->context.ContextFlags = (CONTEXT_FULL
-			      | CONTEXT_FLOATING_POINT
-			      | CONTEXT_DEBUG_REGISTERS
-			      | extended_registers);
-
-  if (!GetThreadContext (th->h, &th->context))
-    {
-      DWORD e = GetLastError ();
-
-      if (extended_registers && e == ERROR_INVALID_PARAMETER)
-	{
-	  extended_registers = 0;
-	  goto again;
-	}
-
-      error ("GetThreadContext failure %ld\n", (long) e);
-    }
-}
-
-static void
-i386_prepare_to_resume (win32_thread_info *th)
-{
-  if (th->debug_registers_changed)
-    {
-      struct x86_debug_reg_state *dr = &debug_reg_state;
-
-      win32_require_context (th);
-
-      th->context.Dr0 = dr->dr_mirror[0];
-      th->context.Dr1 = dr->dr_mirror[1];
-      th->context.Dr2 = dr->dr_mirror[2];
-      th->context.Dr3 = dr->dr_mirror[3];
-      /* th->context.Dr6 = dr->dr_status_mirror;
-	 FIXME: should we set dr6 also ?? */
-      th->context.Dr7 = dr->dr_control_mirror;
-
-      th->debug_registers_changed = 0;
-    }
-}
-
-static void
-i386_thread_added (win32_thread_info *th)
-{
-  th->debug_registers_changed = 1;
-}
-
-static void
-i386_single_step (win32_thread_info *th)
-{
-  th->context.EFlags |= FLAG_TRACE_BIT;
-}
-
-#ifndef __x86_64__
-
-/* An array of offset mappings into a Win32 Context structure.
-   This is a one-to-one mapping which is indexed by gdb's register
-   numbers.  It retrieves an offset into the context structure where
-   the 4 byte register is located.
-   An offset value of -1 indicates that Win32 does not provide this
-   register in it's CONTEXT structure.  In this case regptr will return
-   a pointer into a dummy register.  */
-#define context_offset(x) ((int)&(((CONTEXT *)NULL)->x))
-static const int mappings[] = {
-  context_offset (Eax),
-  context_offset (Ecx),
-  context_offset (Edx),
-  context_offset (Ebx),
-  context_offset (Esp),
-  context_offset (Ebp),
-  context_offset (Esi),
-  context_offset (Edi),
-  context_offset (Eip),
-  context_offset (EFlags),
-  context_offset (SegCs),
-  context_offset (SegSs),
-  context_offset (SegDs),
-  context_offset (SegEs),
-  context_offset (SegFs),
-  context_offset (SegGs),
-  context_offset (FloatSave.RegisterArea[0 * 10]),
-  context_offset (FloatSave.RegisterArea[1 * 10]),
-  context_offset (FloatSave.RegisterArea[2 * 10]),
-  context_offset (FloatSave.RegisterArea[3 * 10]),
-  context_offset (FloatSave.RegisterArea[4 * 10]),
-  context_offset (FloatSave.RegisterArea[5 * 10]),
-  context_offset (FloatSave.RegisterArea[6 * 10]),
-  context_offset (FloatSave.RegisterArea[7 * 10]),
-  context_offset (FloatSave.ControlWord),
-  context_offset (FloatSave.StatusWord),
-  context_offset (FloatSave.TagWord),
-  context_offset (FloatSave.ErrorSelector),
-  context_offset (FloatSave.ErrorOffset),
-  context_offset (FloatSave.DataSelector),
-  context_offset (FloatSave.DataOffset),
-  context_offset (FloatSave.ErrorSelector),
-  /* XMM0-7 */
-  context_offset (ExtendedRegisters[10 * 16]),
-  context_offset (ExtendedRegisters[11 * 16]),
-  context_offset (ExtendedRegisters[12 * 16]),
-  context_offset (ExtendedRegisters[13 * 16]),
-  context_offset (ExtendedRegisters[14 * 16]),
-  context_offset (ExtendedRegisters[15 * 16]),
-  context_offset (ExtendedRegisters[16 * 16]),
-  context_offset (ExtendedRegisters[17 * 16]),
-  /* MXCSR */
-  context_offset (ExtendedRegisters[24])
-};
-#undef context_offset
-
-#else /* __x86_64__ */
-
-#define context_offset(x) (offsetof (CONTEXT, x))
-static const int mappings[] =
-{
-  context_offset (Rax),
-  context_offset (Rbx),
-  context_offset (Rcx),
-  context_offset (Rdx),
-  context_offset (Rsi),
-  context_offset (Rdi),
-  context_offset (Rbp),
-  context_offset (Rsp),
-  context_offset (R8),
-  context_offset (R9),
-  context_offset (R10),
-  context_offset (R11),
-  context_offset (R12),
-  context_offset (R13),
-  context_offset (R14),
-  context_offset (R15),
-  context_offset (Rip),
-  context_offset (EFlags),
-  context_offset (SegCs),
-  context_offset (SegSs),
-  context_offset (SegDs),
-  context_offset (SegEs),
-  context_offset (SegFs),
-  context_offset (SegGs),
-  context_offset (FloatSave.FloatRegisters[0]),
-  context_offset (FloatSave.FloatRegisters[1]),
-  context_offset (FloatSave.FloatRegisters[2]),
-  context_offset (FloatSave.FloatRegisters[3]),
-  context_offset (FloatSave.FloatRegisters[4]),
-  context_offset (FloatSave.FloatRegisters[5]),
-  context_offset (FloatSave.FloatRegisters[6]),
-  context_offset (FloatSave.FloatRegisters[7]),
-  context_offset (FloatSave.ControlWord),
-  context_offset (FloatSave.StatusWord),
-  context_offset (FloatSave.TagWord),
-  context_offset (FloatSave.ErrorSelector),
-  context_offset (FloatSave.ErrorOffset),
-  context_offset (FloatSave.DataSelector),
-  context_offset (FloatSave.DataOffset),
-  context_offset (FloatSave.ErrorSelector)
-  /* XMM0-7 */ ,
-  context_offset (Xmm0),
-  context_offset (Xmm1),
-  context_offset (Xmm2),
-  context_offset (Xmm3),
-  context_offset (Xmm4),
-  context_offset (Xmm5),
-  context_offset (Xmm6),
-  context_offset (Xmm7),
-  context_offset (Xmm8),
-  context_offset (Xmm9),
-  context_offset (Xmm10),
-  context_offset (Xmm11),
-  context_offset (Xmm12),
-  context_offset (Xmm13),
-  context_offset (Xmm14),
-  context_offset (Xmm15),
-  /* MXCSR */
-  context_offset (FloatSave.MxCsr)
-};
-#undef context_offset
-
-#endif /* __x86_64__ */
-
-/* Fetch register from gdbserver regcache data.  */
-static void
-i386_fetch_inferior_register (struct regcache *regcache,
-			      win32_thread_info *th, int r)
-{
-  char *context_offset = (char *) &th->context + mappings[r];
-
-  long l;
-  if (r == FCS_REGNUM)
-    {
-      l = *((long *) context_offset) & 0xffff;
-      supply_register (regcache, r, (char *) &l);
-    }
-  else if (r == FOP_REGNUM)
-    {
-      l = (*((long *) context_offset) >> 16) & ((1 << 11) - 1);
-      supply_register (regcache, r, (char *) &l);
-    }
-  else
-    supply_register (regcache, r, context_offset);
-}
-
-/* Store a new register value into the thread context of TH.  */
-static void
-i386_store_inferior_register (struct regcache *regcache,
-			      win32_thread_info *th, int r)
-{
-  char *context_offset = (char *) &th->context + mappings[r];
-  collect_register (regcache, r, context_offset);
-}
-
-static const unsigned char i386_win32_breakpoint = 0xcc;
-#define i386_win32_breakpoint_len 1
-
-static void
-i386_arch_setup (void)
-{
-  struct target_desc *tdesc;
-
-#ifdef __x86_64__
-  tdesc = amd64_create_target_description (X86_XSTATE_SSE_MASK, false,
-					   false, false);
-  const char **expedite_regs = amd64_expedite_regs;
-#else
-  tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false, false);
-  const char **expedite_regs = i386_expedite_regs;
-#endif
-
-  init_target_desc (tdesc, expedite_regs);
-
-  win32_tdesc = tdesc;
-}
-
-struct win32_target_ops the_low_target = {
-  i386_arch_setup,
-  sizeof (mappings) / sizeof (mappings[0]),
-  i386_initial_stuff,
-  i386_get_thread_context,
-  i386_prepare_to_resume,
-  i386_thread_added,
-  i386_fetch_inferior_register,
-  i386_store_inferior_register,
-  i386_single_step,
-  &i386_win32_breakpoint,
-  i386_win32_breakpoint_len,
-  i386_supports_z_point_type,
-  i386_insert_point,
-  i386_remove_point,
-  x86_stopped_by_watchpoint,
-  x86_stopped_data_address
-};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/win32-low.c ./gdb/gdbserver/win32-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/win32-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/win32-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,1864 +0,0 @@
-/* Low level interface to Windows debugging, for gdbserver.
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
-
-   Contributed by Leo Zayas.  Based on "win32-nat.c" from GDB.
-
-   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 "server.h"
-#include "regcache.h"
-#include "gdb/fileio.h"
-#include "mem-break.h"
-#include "win32-low.h"
-#include "gdbthread.h"
-#include "dll.h"
-#include "hostio.h"
-#include <windows.h>
-#include <winnt.h>
-#include <imagehlp.h>
-#include <tlhelp32.h>
-#include <psapi.h>
-#include <process.h>
-#include "gdbsupport/gdb_tilde_expand.h"
-#include "gdbsupport/common-inferior.h"
-
-#ifndef USE_WIN32API
-#include <sys/cygwin.h>
-#endif
-
-#define OUTMSG(X) do { printf X; fflush (stderr); } while (0)
-
-#define OUTMSG2(X) \
-  do						\
-    {						\
-      if (debug_threads)			\
-	{					\
-	  printf X;				\
-	  fflush (stderr);			\
-	}					\
-    } while (0)
-
-#ifndef _T
-#define _T(x) TEXT (x)
-#endif
-
-#ifndef COUNTOF
-#define COUNTOF(STR) (sizeof (STR) / sizeof ((STR)[0]))
-#endif
-
-#ifdef _WIN32_WCE
-# define GETPROCADDRESS(DLL, PROC) \
-  ((winapi_ ## PROC) GetProcAddress (DLL, TEXT (#PROC)))
-#else
-# define GETPROCADDRESS(DLL, PROC) \
-  ((winapi_ ## PROC) GetProcAddress (DLL, #PROC))
-#endif
-
-int using_threads = 1;
-
-/* Globals.  */
-static int attaching = 0;
-static HANDLE current_process_handle = NULL;
-static DWORD current_process_id = 0;
-static DWORD main_thread_id = 0;
-static enum gdb_signal last_sig = GDB_SIGNAL_0;
-
-/* The current debug event from WaitForDebugEvent.  */
-static DEBUG_EVENT current_event;
-
-/* A status that hasn't been reported to the core yet, and so
-   win32_wait should return it next, instead of fetching the next
-   debug event off the win32 API.  */
-static struct target_waitstatus cached_status;
-
-/* Non zero if an interrupt request is to be satisfied by suspending
-   all threads.  */
-static int soft_interrupt_requested = 0;
-
-/* Non zero if the inferior is stopped in a simulated breakpoint done
-   by suspending all the threads.  */
-static int faked_breakpoint = 0;
-
-const struct target_desc *win32_tdesc;
-
-#define NUM_REGS (the_low_target.num_regs)
-
-typedef BOOL (WINAPI *winapi_DebugActiveProcessStop) (DWORD dwProcessId);
-typedef BOOL (WINAPI *winapi_DebugSetProcessKillOnExit) (BOOL KillOnExit);
-typedef BOOL (WINAPI *winapi_DebugBreakProcess) (HANDLE);
-typedef BOOL (WINAPI *winapi_GenerateConsoleCtrlEvent) (DWORD, DWORD);
-
-static ptid_t win32_wait (ptid_t ptid, struct target_waitstatus *ourstatus,
-			  int options);
-static void win32_resume (struct thread_resume *resume_info, size_t n);
-#ifndef _WIN32_WCE
-static void win32_add_all_dlls (void);
-#endif
-
-/* Get the thread ID from the current selected inferior (the current
-   thread).  */
-static ptid_t
-current_thread_ptid (void)
-{
-  return current_ptid;
-}
-
-/* The current debug event from WaitForDebugEvent.  */
-static ptid_t
-debug_event_ptid (DEBUG_EVENT *event)
-{
-  return ptid_t (event->dwProcessId, event->dwThreadId, 0);
-}
-
-/* Get the thread context of the thread associated with TH.  */
-
-static void
-win32_get_thread_context (win32_thread_info *th)
-{
-  memset (&th->context, 0, sizeof (CONTEXT));
-  (*the_low_target.get_thread_context) (th);
-#ifdef _WIN32_WCE
-  memcpy (&th->base_context, &th->context, sizeof (CONTEXT));
-#endif
-}
-
-/* Set the thread context of the thread associated with TH.  */
-
-static void
-win32_set_thread_context (win32_thread_info *th)
-{
-#ifdef _WIN32_WCE
-  /* Calling SuspendThread on a thread that is running kernel code
-     will report that the suspending was successful, but in fact, that
-     will often not be true.  In those cases, the context returned by
-     GetThreadContext will not be correct by the time the thread
-     stops, hence we can't set that context back into the thread when
-     resuming - it will most likely crash the inferior.
-     Unfortunately, there is no way to know when the thread will
-     really stop.  To work around it, we'll only write the context
-     back to the thread when either the user or GDB explicitly change
-     it between stopping and resuming.  */
-  if (memcmp (&th->context, &th->base_context, sizeof (CONTEXT)) != 0)
-#endif
-    SetThreadContext (th->h, &th->context);
-}
-
-/* Set the thread context of the thread associated with TH.  */
-
-static void
-win32_prepare_to_resume (win32_thread_info *th)
-{
-  if (the_low_target.prepare_to_resume != NULL)
-    (*the_low_target.prepare_to_resume) (th);
-}
-
-/* See win32-low.h.  */
-
-void
-win32_require_context (win32_thread_info *th)
-{
-  if (th->context.ContextFlags == 0)
-    {
-      if (!th->suspended)
-	{
-	  if (SuspendThread (th->h) == (DWORD) -1)
-	    {
-	      DWORD err = GetLastError ();
-	      OUTMSG (("warning: SuspendThread failed in thread_rec, "
-		       "(error %d): %s\n", (int) err, strwinerror (err)));
-	    }
-	  else
-	    th->suspended = 1;
-	}
-
-      win32_get_thread_context (th);
-    }
-}
-
-/* Find a thread record given a thread id.  If GET_CONTEXT is set then
-   also retrieve the context for this thread.  */
-static win32_thread_info *
-thread_rec (ptid_t ptid, int get_context)
-{
-  thread_info *thread = find_thread_ptid (ptid);
-  if (thread == NULL)
-    return NULL;
-
-  win32_thread_info *th = (win32_thread_info *) thread_target_data (thread);
-  if (get_context)
-    win32_require_context (th);
-  return th;
-}
-
-/* Add a thread to the thread list.  */
-static win32_thread_info *
-child_add_thread (DWORD pid, DWORD tid, HANDLE h, void *tlb)
-{
-  win32_thread_info *th;
-  ptid_t ptid = ptid_t (pid, tid, 0);
-
-  if ((th = thread_rec (ptid, FALSE)))
-    return th;
-
-  th = XCNEW (win32_thread_info);
-  th->tid = tid;
-  th->h = h;
-  th->thread_local_base = (CORE_ADDR) (uintptr_t) tlb;
-
-  add_thread (ptid, th);
-
-  if (the_low_target.thread_added != NULL)
-    (*the_low_target.thread_added) (th);
-
-  return th;
-}
-
-/* Delete a thread from the list of threads.  */
-static void
-delete_thread_info (thread_info *thread)
-{
-  win32_thread_info *th = (win32_thread_info *) thread_target_data (thread);
-
-  remove_thread (thread);
-  CloseHandle (th->h);
-  free (th);
-}
-
-/* Delete a thread from the list of threads.  */
-static void
-child_delete_thread (DWORD pid, DWORD tid)
-{
-  /* If the last thread is exiting, just return.  */
-  if (all_threads.size () == 1)
-    return;
-
-  thread_info *thread = find_thread_ptid (ptid_t (pid, tid));
-  if (thread == NULL)
-    return;
-
-  delete_thread_info (thread);
-}
-
-/* These watchpoint related wrapper functions simply pass on the function call
-   if the low target has registered a corresponding function.  */
-
-static int
-win32_supports_z_point_type (char z_type)
-{
-  return (the_low_target.supports_z_point_type != NULL
-	  && the_low_target.supports_z_point_type (z_type));
-}
-
-static int
-win32_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		    int size, struct raw_breakpoint *bp)
-{
-  if (the_low_target.insert_point != NULL)
-    return the_low_target.insert_point (type, addr, size, bp);
-  else
-    /* Unsupported (see target.h).  */
-    return 1;
-}
-
-static int
-win32_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
-		    int size, struct raw_breakpoint *bp)
-{
-  if (the_low_target.remove_point != NULL)
-    return the_low_target.remove_point (type, addr, size, bp);
-  else
-    /* Unsupported (see target.h).  */
-    return 1;
-}
-
-static int
-win32_stopped_by_watchpoint (void)
-{
-  if (the_low_target.stopped_by_watchpoint != NULL)
-    return the_low_target.stopped_by_watchpoint ();
-  else
-    return 0;
-}
-
-static CORE_ADDR
-win32_stopped_data_address (void)
-{
-  if (the_low_target.stopped_data_address != NULL)
-    return the_low_target.stopped_data_address ();
-  else
-    return 0;
-}
-
-
-/* Transfer memory from/to the debugged process.  */
-static int
-child_xfer_memory (CORE_ADDR memaddr, char *our, int len,
-		   int write, struct target_ops *target)
-{
-  BOOL success;
-  SIZE_T done = 0;
-  DWORD lasterror = 0;
-  uintptr_t addr = (uintptr_t) memaddr;
-
-  if (write)
-    {
-      success = WriteProcessMemory (current_process_handle, (LPVOID) addr,
-				    (LPCVOID) our, len, &done);
-      if (!success)
-	lasterror = GetLastError ();
-      FlushInstructionCache (current_process_handle, (LPCVOID) addr, len);
-    }
-  else
-    {
-      success = ReadProcessMemory (current_process_handle, (LPCVOID) addr,
-				   (LPVOID) our, len, &done);
-      if (!success)
-	lasterror = GetLastError ();
-    }
-  if (!success && lasterror == ERROR_PARTIAL_COPY && done > 0)
-    return done;
-  else
-    return success ? done : -1;
-}
-
-/* Clear out any old thread list and reinitialize it to a pristine
-   state. */
-static void
-child_init_thread_list (void)
-{
-  for_each_thread (delete_thread_info);
-}
-
-/* Zero during the child initialization phase, and nonzero otherwise.  */
-
-static int child_initialization_done = 0;
-
-static void
-do_initial_child_stuff (HANDLE proch, DWORD pid, int attached)
-{
-  struct process_info *proc;
-
-  last_sig = GDB_SIGNAL_0;
-
-  current_process_handle = proch;
-  current_process_id = pid;
-  main_thread_id = 0;
-
-  soft_interrupt_requested = 0;
-  faked_breakpoint = 0;
-
-  memset (&current_event, 0, sizeof (current_event));
-
-  proc = add_process (pid, attached);
-  proc->tdesc = win32_tdesc;
-  child_init_thread_list ();
-  child_initialization_done = 0;
-
-  if (the_low_target.initial_stuff != NULL)
-    (*the_low_target.initial_stuff) ();
-
-  cached_status.kind = TARGET_WAITKIND_IGNORE;
-
-  /* Flush all currently pending debug events (thread and dll list) up
-     to the initial breakpoint.  */
-  while (1)
-    {
-      struct target_waitstatus status;
-
-      win32_wait (minus_one_ptid, &status, 0);
-
-      /* Note win32_wait doesn't return thread events.  */
-      if (status.kind != TARGET_WAITKIND_LOADED)
-	{
-	  cached_status = status;
-	  break;
-	}
-
-      {
-	struct thread_resume resume;
-
-	resume.thread = minus_one_ptid;
-	resume.kind = resume_continue;
-	resume.sig = 0;
-
-	win32_resume (&resume, 1);
-      }
-    }
-
-#ifndef _WIN32_WCE
-  /* Now that the inferior has been started and all DLLs have been mapped,
-     we can iterate over all DLLs and load them in.
-
-     We avoid doing it any earlier because, on certain versions of Windows,
-     LOAD_DLL_DEBUG_EVENTs are sometimes not complete.  In particular,
-     we have seen on Windows 8.1 that the ntdll.dll load event does not
-     include the DLL name, preventing us from creating an associated SO.
-     A possible explanation is that ntdll.dll might be mapped before
-     the SO info gets created by the Windows system -- ntdll.dll is
-     the first DLL to be reported via LOAD_DLL_DEBUG_EVENT and other DLLs
-     do not seem to suffer from that problem.
-
-     Rather than try to work around this sort of issue, it is much
-     simpler to just ignore DLL load/unload events during the startup
-     phase, and then process them all in one batch now.  */
-  win32_add_all_dlls ();
-#endif
-
-  child_initialization_done = 1;
-}
-
-/* Resume all artificially suspended threads if we are continuing
-   execution.  */
-static void
-continue_one_thread (thread_info *thread, int thread_id)
-{
-  win32_thread_info *th = (win32_thread_info *) thread_target_data (thread);
-
-  if (thread_id == -1 || thread_id == th->tid)
-    {
-      win32_prepare_to_resume (th);
-
-      if (th->suspended)
-	{
-	  if (th->context.ContextFlags)
-	    {
-	      win32_set_thread_context (th);
-	      th->context.ContextFlags = 0;
-	    }
-
-	  if (ResumeThread (th->h) == (DWORD) -1)
-	    {
-	      DWORD err = GetLastError ();
-	      OUTMSG (("warning: ResumeThread failed in continue_one_thread, "
-		       "(error %d): %s\n", (int) err, strwinerror (err)));
-	    }
-	  th->suspended = 0;
-	}
-    }
-}
-
-static BOOL
-child_continue (DWORD continue_status, int thread_id)
-{
-  /* The inferior will only continue after the ContinueDebugEvent
-     call.  */
-  for_each_thread ([&] (thread_info *thread)
-    {
-      continue_one_thread (thread, thread_id);
-    });
-  faked_breakpoint = 0;
-
-  if (!ContinueDebugEvent (current_event.dwProcessId,
-			   current_event.dwThreadId,
-			   continue_status))
-    return FALSE;
-
-  return TRUE;
-}
-
-/* Fetch register(s) from the current thread context.  */
-static void
-child_fetch_inferior_registers (struct regcache *regcache, int r)
-{
-  int regno;
-  win32_thread_info *th = thread_rec (current_thread_ptid (), TRUE);
-  if (r == -1 || r > NUM_REGS)
-    child_fetch_inferior_registers (regcache, NUM_REGS);
-  else
-    for (regno = 0; regno < r; regno++)
-      (*the_low_target.fetch_inferior_register) (regcache, th, regno);
-}
-
-/* Store a new register value into the current thread context.  We don't
-   change the program's context until later, when we resume it.  */
-static void
-child_store_inferior_registers (struct regcache *regcache, int r)
-{
-  int regno;
-  win32_thread_info *th = thread_rec (current_thread_ptid (), TRUE);
-  if (r == -1 || r == 0 || r > NUM_REGS)
-    child_store_inferior_registers (regcache, NUM_REGS);
-  else
-    for (regno = 0; regno < r; regno++)
-      (*the_low_target.store_inferior_register) (regcache, th, regno);
-}
-
-/* Map the Windows error number in ERROR to a locale-dependent error
-   message string and return a pointer to it.  Typically, the values
-   for ERROR come from GetLastError.
-
-   The string pointed to shall not be modified by the application,
-   but may be overwritten by a subsequent call to strwinerror
-
-   The strwinerror function does not change the current setting
-   of GetLastError.  */
-
-char *
-strwinerror (DWORD error)
-{
-  static char buf[1024];
-  TCHAR *msgbuf;
-  DWORD lasterr = GetLastError ();
-  DWORD chars = FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM
-			       | FORMAT_MESSAGE_ALLOCATE_BUFFER,
-			       NULL,
-			       error,
-			       0, /* Default language */
-			       (LPTSTR) &msgbuf,
-			       0,
-			       NULL);
-  if (chars != 0)
-    {
-      /* If there is an \r\n appended, zap it.  */
-      if (chars >= 2
-	  && msgbuf[chars - 2] == '\r'
-	  && msgbuf[chars - 1] == '\n')
-	{
-	  chars -= 2;
-	  msgbuf[chars] = 0;
-	}
-
-      if (chars > ((COUNTOF (buf)) - 1))
-	{
-	  chars = COUNTOF (buf) - 1;
-	  msgbuf [chars] = 0;
-	}
-
-#ifdef UNICODE
-      wcstombs (buf, msgbuf, chars + 1);
-#else
-      strncpy (buf, msgbuf, chars + 1);
-#endif
-      LocalFree (msgbuf);
-    }
-  else
-    sprintf (buf, "unknown win32 error (%u)", (unsigned) error);
-
-  SetLastError (lasterr);
-  return buf;
-}
-
-static BOOL
-create_process (const char *program, char *args,
-		DWORD flags, PROCESS_INFORMATION *pi)
-{
-  const char *inferior_cwd = get_inferior_cwd ();
-  BOOL ret;
-
-#ifdef _WIN32_WCE
-  wchar_t *p, *wprogram, *wargs, *wcwd = NULL;
-  size_t argslen;
-
-  wprogram = alloca ((strlen (program) + 1) * sizeof (wchar_t));
-  mbstowcs (wprogram, program, strlen (program) + 1);
-
-  for (p = wprogram; *p; ++p)
-    if (L'/' == *p)
-      *p = L'\\';
-
-  argslen = strlen (args);
-  wargs = alloca ((argslen + 1) * sizeof (wchar_t));
-  mbstowcs (wargs, args, argslen + 1);
-
-  if (inferior_cwd != NULL)
-    {
-      std::string expanded_infcwd = gdb_tilde_expand (inferior_cwd);
-      std::replace (expanded_infcwd.begin (), expanded_infcwd.end (),
-		    '/', '\\');
-      wcwd = alloca ((expanded_infcwd.size () + 1) * sizeof (wchar_t));
-      if (mbstowcs (wcwd, expanded_infcwd.c_str (),
-		    expanded_infcwd.size () + 1) == NULL)
-	{
-	  error (_("\
-Could not convert the expanded inferior cwd to wide-char."));
-	}
-    }
-
-  ret = CreateProcessW (wprogram, /* image name */
-			wargs,    /* command line */
-			NULL,     /* security, not supported */
-			NULL,     /* thread, not supported */
-			FALSE,    /* inherit handles, not supported */
-			flags,    /* start flags */
-			NULL,     /* environment, not supported */
-			wcwd,     /* current directory */
-			NULL,     /* start info, not supported */
-			pi);      /* proc info */
-#else
-  STARTUPINFOA si = { sizeof (STARTUPINFOA) };
-
-  ret = CreateProcessA (program,  /* image name */
-			args,     /* command line */
-			NULL,     /* security */
-			NULL,     /* thread */
-			TRUE,     /* inherit handles */
-			flags,    /* start flags */
-			NULL,     /* environment */
-			/* current directory */
-			(inferior_cwd == NULL
-			 ? NULL
-			 : gdb_tilde_expand (inferior_cwd).c_str()),
-			&si,      /* start info */
-			pi);      /* proc info */
-#endif
-
-  return ret;
-}
-
-/* Start a new process.
-   PROGRAM is the program name.
-   PROGRAM_ARGS is the vector containing the inferior's args.
-   Returns the new PID on success, -1 on failure.  Registers the new
-   process with the process list.  */
-static int
-win32_create_inferior (const char *program,
-		       const std::vector<char *> &program_args)
-{
-  client_state &cs = get_client_state ();
-#ifndef USE_WIN32API
-  char real_path[PATH_MAX];
-  char *orig_path, *new_path, *path_ptr;
-#endif
-  BOOL ret;
-  DWORD flags;
-  PROCESS_INFORMATION pi;
-  DWORD err;
-  std::string str_program_args = stringify_argv (program_args);
-  char *args = (char *) str_program_args.c_str ();
-
-  /* win32_wait needs to know we're not attaching.  */
-  attaching = 0;
-
-  if (!program)
-    error ("No executable specified, specify executable to debug.\n");
-
-  flags = DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS;
-
-#ifndef USE_WIN32API
-  orig_path = NULL;
-  path_ptr = getenv ("PATH");
-  if (path_ptr)
-    {
-      int size = cygwin_conv_path_list (CCP_POSIX_TO_WIN_A, path_ptr, NULL, 0);
-      orig_path = (char *) alloca (strlen (path_ptr) + 1);
-      new_path = (char *) alloca (size);
-      strcpy (orig_path, path_ptr);
-      cygwin_conv_path_list (CCP_POSIX_TO_WIN_A, path_ptr, new_path, size);
-      setenv ("PATH", new_path, 1);
-     }
-  cygwin_conv_path (CCP_POSIX_TO_WIN_A, program, real_path, PATH_MAX);
-  program = real_path;
-#endif
-
-  OUTMSG2 (("Command line is \"%s\"\n", args));
-
-#ifdef CREATE_NEW_PROCESS_GROUP
-  flags |= CREATE_NEW_PROCESS_GROUP;
-#endif
-
-  ret = create_process (program, args, flags, &pi);
-  err = GetLastError ();
-  if (!ret && err == ERROR_FILE_NOT_FOUND)
-    {
-      char *exename = (char *) alloca (strlen (program) + 5);
-      strcat (strcpy (exename, program), ".exe");
-      ret = create_process (exename, args, flags, &pi);
-      err = GetLastError ();
-    }
-
-#ifndef USE_WIN32API
-  if (orig_path)
-    setenv ("PATH", orig_path, 1);
-#endif
-
-  if (!ret)
-    {
-      error ("Error creating process \"%s%s\", (error %d): %s\n",
-	     program, args, (int) err, strwinerror (err));
-    }
-  else
-    {
-      OUTMSG2 (("Process created: %s\n", (char *) args));
-    }
-
-#ifndef _WIN32_WCE
-  /* On Windows CE this handle can't be closed.  The OS reuses
-     it in the debug events, while the 9x/NT versions of Windows
-     probably use a DuplicateHandle'd one.  */
-  CloseHandle (pi.hThread);
-#endif
-
-  do_initial_child_stuff (pi.hProcess, pi.dwProcessId, 0);
-
-  /* Wait till we are at 1st instruction in program, return new pid
-     (assuming success).  */
-  cs.last_ptid = win32_wait (ptid_t (current_process_id), &cs.last_status, 0);
-
-  return current_process_id;
-}
-
-/* Attach to a running process.
-   PID is the process ID to attach to, specified by the user
-   or a higher layer.  */
-static int
-win32_attach (unsigned long pid)
-{
-  HANDLE h;
-  winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
-  DWORD err;
-#ifdef _WIN32_WCE
-  HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
-#else
-  HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
-#endif
-  DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit);
-
-  h = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
-  if (h != NULL)
-    {
-      if (DebugActiveProcess (pid))
-	{
-	  if (DebugSetProcessKillOnExit != NULL)
-	    DebugSetProcessKillOnExit (FALSE);
-
-	  /* win32_wait needs to know we're attaching.  */
-	  attaching = 1;
-	  do_initial_child_stuff (h, pid, 1);
-	  return 0;
-	}
-
-      CloseHandle (h);
-    }
-
-  err = GetLastError ();
-  error ("Attach to process failed (error %d): %s\n",
-	 (int) err, strwinerror (err));
-}
-
-/* Handle OUTPUT_DEBUG_STRING_EVENT from child process.  */
-static void
-handle_output_debug_string (void)
-{
-#define READ_BUFFER_LEN 1024
-  CORE_ADDR addr;
-  char s[READ_BUFFER_LEN + 1] = { 0 };
-  DWORD nbytes = current_event.u.DebugString.nDebugStringLength;
-
-  if (nbytes == 0)
-    return;
-
-  if (nbytes > READ_BUFFER_LEN)
-    nbytes = READ_BUFFER_LEN;
-
-  addr = (CORE_ADDR) (size_t) current_event.u.DebugString.lpDebugStringData;
-
-  if (current_event.u.DebugString.fUnicode)
-    {
-      /* The event tells us how many bytes, not chars, even
-	 in Unicode.  */
-      WCHAR buffer[(READ_BUFFER_LEN + 1) / sizeof (WCHAR)] = { 0 };
-      if (read_inferior_memory (addr, (unsigned char *) buffer, nbytes) != 0)
-	return;
-      wcstombs (s, buffer, (nbytes + 1) / sizeof (WCHAR));
-    }
-  else
-    {
-      if (read_inferior_memory (addr, (unsigned char *) s, nbytes) != 0)
-	return;
-    }
-
-  if (!startswith (s, "cYg"))
-    {
-      if (!server_waiting)
-	{
-	  OUTMSG2(("%s", s));
-	  return;
-	}
-
-      monitor_output (s);
-    }
-#undef READ_BUFFER_LEN
-}
-
-static void
-win32_clear_inferiors (void)
-{
-  if (current_process_handle != NULL)
-    CloseHandle (current_process_handle);
-
-  for_each_thread (delete_thread_info);
-  clear_inferiors ();
-}
-
-/* Implementation of target_ops::kill.  */
-
-static int
-win32_kill (process_info *process)
-{
-  TerminateProcess (current_process_handle, 0);
-  for (;;)
-    {
-      if (!child_continue (DBG_CONTINUE, -1))
-	break;
-      if (!WaitForDebugEvent (&current_event, INFINITE))
-	break;
-      if (current_event.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT)
-	break;
-      else if (current_event.dwDebugEventCode == OUTPUT_DEBUG_STRING_EVENT)
-	handle_output_debug_string ();
-    }
-
-  win32_clear_inferiors ();
-
-  remove_process (process);
-  return 0;
-}
-
-/* Implementation of target_ops::detach.  */
-
-static int
-win32_detach (process_info *process)
-{
-  winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL;
-  winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
-#ifdef _WIN32_WCE
-  HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
-#else
-  HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
-#endif
-  DebugActiveProcessStop = GETPROCADDRESS (dll, DebugActiveProcessStop);
-  DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit);
-
-  if (DebugSetProcessKillOnExit == NULL
-      || DebugActiveProcessStop == NULL)
-    return -1;
-
-  {
-    struct thread_resume resume;
-    resume.thread = minus_one_ptid;
-    resume.kind = resume_continue;
-    resume.sig = 0;
-    win32_resume (&resume, 1);
-  }
-
-  if (!DebugActiveProcessStop (current_process_id))
-    return -1;
-
-  DebugSetProcessKillOnExit (FALSE);
-  remove_process (process);
-
-  win32_clear_inferiors ();
-  return 0;
-}
-
-static void
-win32_mourn (struct process_info *process)
-{
-  remove_process (process);
-}
-
-/* Implementation of target_ops::join.  */
-
-static void
-win32_join (int pid)
-{
-  HANDLE h = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
-  if (h != NULL)
-    {
-      WaitForSingleObject (h, INFINITE);
-      CloseHandle (h);
-    }
-}
-
-/* Return 1 iff the thread with thread ID TID is alive.  */
-static int
-win32_thread_alive (ptid_t ptid)
-{
-  /* Our thread list is reliable; don't bother to poll target
-     threads.  */
-  return find_thread_ptid (ptid) != NULL;
-}
-
-/* Resume the inferior process.  RESUME_INFO describes how we want
-   to resume.  */
-static void
-win32_resume (struct thread_resume *resume_info, size_t n)
-{
-  DWORD tid;
-  enum gdb_signal sig;
-  int step;
-  win32_thread_info *th;
-  DWORD continue_status = DBG_CONTINUE;
-  ptid_t ptid;
-
-  /* This handles the very limited set of resume packets that GDB can
-     currently produce.  */
-
-  if (n == 1 && resume_info[0].thread == minus_one_ptid)
-    tid = -1;
-  else if (n > 1)
-    tid = -1;
-  else
-    /* Yes, we're ignoring resume_info[0].thread.  It'd be tricky to make
-       the Windows resume code do the right thing for thread switching.  */
-    tid = current_event.dwThreadId;
-
-  if (resume_info[0].thread != minus_one_ptid)
-    {
-      sig = gdb_signal_from_host (resume_info[0].sig);
-      step = resume_info[0].kind == resume_step;
-    }
-  else
-    {
-      sig = GDB_SIGNAL_0;
-      step = 0;
-    }
-
-  if (sig != GDB_SIGNAL_0)
-    {
-      if (current_event.dwDebugEventCode != EXCEPTION_DEBUG_EVENT)
-	{
-	  OUTMSG (("Cannot continue with signal %s here.\n",
-		   gdb_signal_to_string (sig)));
-	}
-      else if (sig == last_sig)
-	continue_status = DBG_EXCEPTION_NOT_HANDLED;
-      else
-	OUTMSG (("Can only continue with received signal %s.\n",
-		 gdb_signal_to_string (last_sig)));
-    }
-
-  last_sig = GDB_SIGNAL_0;
-
-  /* Get context for the currently selected thread.  */
-  ptid = debug_event_ptid (&current_event);
-  th = thread_rec (ptid, FALSE);
-  if (th)
-    {
-      win32_prepare_to_resume (th);
-
-      if (th->context.ContextFlags)
-	{
-	  /* Move register values from the inferior into the thread
-	     context structure.  */
-	  regcache_invalidate ();
-
-	  if (step)
-	    {
-	      if (the_low_target.single_step != NULL)
-		(*the_low_target.single_step) (th);
-	      else
-		error ("Single stepping is not supported "
-		       "in this configuration.\n");
-	    }
-
-	  win32_set_thread_context (th);
-	  th->context.ContextFlags = 0;
-	}
-    }
-
-  /* Allow continuing with the same signal that interrupted us.
-     Otherwise complain.  */
-
-  child_continue (continue_status, tid);
-}
-
-static void
-win32_add_one_solib (const char *name, CORE_ADDR load_addr)
-{
-  char buf[MAX_PATH + 1];
-  char buf2[MAX_PATH + 1];
-
-#ifdef _WIN32_WCE
-  WIN32_FIND_DATA w32_fd;
-  WCHAR wname[MAX_PATH + 1];
-  mbstowcs (wname, name, MAX_PATH);
-  HANDLE h = FindFirstFile (wname, &w32_fd);
-#else
-  WIN32_FIND_DATAA w32_fd;
-  HANDLE h = FindFirstFileA (name, &w32_fd);
-#endif
-
-  /* The symbols in a dll are offset by 0x1000, which is the
-     offset from 0 of the first byte in an image - because
-     of the file header and the section alignment. */
-  load_addr += 0x1000;
-
-  if (h == INVALID_HANDLE_VALUE)
-    strcpy (buf, name);
-  else
-    {
-      FindClose (h);
-      strcpy (buf, name);
-#ifndef _WIN32_WCE
-      {
-	char cwd[MAX_PATH + 1];
-	char *p;
-	if (GetCurrentDirectoryA (MAX_PATH + 1, cwd))
-	  {
-	    p = strrchr (buf, '\\');
-	    if (p)
-	      p[1] = '\0';
-	    SetCurrentDirectoryA (buf);
-	    GetFullPathNameA (w32_fd.cFileName, MAX_PATH, buf, &p);
-	    SetCurrentDirectoryA (cwd);
-	  }
-      }
-#endif
-    }
-
-#ifndef _WIN32_WCE
-  if (strcasecmp (buf, "ntdll.dll") == 0)
-    {
-      GetSystemDirectoryA (buf, sizeof (buf));
-      strcat (buf, "\\ntdll.dll");
-    }
-#endif
-
-#ifdef __CYGWIN__
-  cygwin_conv_path (CCP_WIN_A_TO_POSIX, buf, buf2, sizeof (buf2));
-#else
-  strcpy (buf2, buf);
-#endif
-
-  loaded_dll (buf2, load_addr);
-}
-
-static char *
-get_image_name (HANDLE h, void *address, int unicode)
-{
-  static char buf[(2 * MAX_PATH) + 1];
-  DWORD size = unicode ? sizeof (WCHAR) : sizeof (char);
-  char *address_ptr;
-  int len = 0;
-  char b[2];
-  SIZE_T done;
-
-  /* Attempt to read the name of the dll that was detected.
-     This is documented to work only when actively debugging
-     a program.  It will not work for attached processes. */
-  if (address == NULL)
-    return NULL;
-
-#ifdef _WIN32_WCE
-  /* Windows CE reports the address of the image name,
-     instead of an address of a pointer into the image name.  */
-  address_ptr = address;
-#else
-  /* See if we could read the address of a string, and that the
-     address isn't null. */
-  if (!ReadProcessMemory (h, address,  &address_ptr,
-			  sizeof (address_ptr), &done)
-      || done != sizeof (address_ptr)
-      || !address_ptr)
-    return NULL;
-#endif
-
-  /* Find the length of the string */
-  while (ReadProcessMemory (h, address_ptr + len++ * size, &b, size, &done)
-	 && (b[0] != 0 || b[size - 1] != 0) && done == size)
-    continue;
-
-  if (!unicode)
-    ReadProcessMemory (h, address_ptr, buf, len, &done);
-  else
-    {
-      WCHAR *unicode_address = XALLOCAVEC (WCHAR, len);
-      ReadProcessMemory (h, address_ptr, unicode_address, len * sizeof (WCHAR),
-			 &done);
-
-      WideCharToMultiByte (CP_ACP, 0, unicode_address, len, buf, len, 0, 0);
-    }
-
-  return buf;
-}
-
-typedef BOOL (WINAPI *winapi_EnumProcessModules) (HANDLE, HMODULE *,
-						  DWORD, LPDWORD);
-typedef BOOL (WINAPI *winapi_GetModuleInformation) (HANDLE, HMODULE,
-						    LPMODULEINFO, DWORD);
-typedef DWORD (WINAPI *winapi_GetModuleFileNameExA) (HANDLE, HMODULE,
-						     LPSTR, DWORD);
-
-static winapi_EnumProcessModules win32_EnumProcessModules;
-static winapi_GetModuleInformation win32_GetModuleInformation;
-static winapi_GetModuleFileNameExA win32_GetModuleFileNameExA;
-
-static BOOL
-load_psapi (void)
-{
-  static int psapi_loaded = 0;
-  static HMODULE dll = NULL;
-
-  if (!psapi_loaded)
-    {
-      psapi_loaded = 1;
-      dll = LoadLibrary (TEXT("psapi.dll"));
-      if (!dll)
-	return FALSE;
-      win32_EnumProcessModules =
-	      GETPROCADDRESS (dll, EnumProcessModules);
-      win32_GetModuleInformation =
-	      GETPROCADDRESS (dll, GetModuleInformation);
-      win32_GetModuleFileNameExA =
-	      GETPROCADDRESS (dll, GetModuleFileNameExA);
-    }
-
-  return (win32_EnumProcessModules != NULL
-	  && win32_GetModuleInformation != NULL
-	  && win32_GetModuleFileNameExA != NULL);
-}
-
-#ifndef _WIN32_WCE
-
-/* Iterate over all DLLs currently mapped by our inferior, and
-   add them to our list of solibs.  */
-
-static void
-win32_add_all_dlls (void)
-{
-  size_t i;
-  HMODULE dh_buf[1];
-  HMODULE *DllHandle = dh_buf;
-  DWORD cbNeeded;
-  BOOL ok;
-
-  if (!load_psapi ())
-    return;
-
-  cbNeeded = 0;
-  ok = (*win32_EnumProcessModules) (current_process_handle,
-				    DllHandle,
-				    sizeof (HMODULE),
-				    &cbNeeded);
-
-  if (!ok || !cbNeeded)
-    return;
-
-  DllHandle = (HMODULE *) alloca (cbNeeded);
-  if (!DllHandle)
-    return;
-
-  ok = (*win32_EnumProcessModules) (current_process_handle,
-				    DllHandle,
-				    cbNeeded,
-				    &cbNeeded);
-  if (!ok)
-    return;
-
-  for (i = 1; i < ((size_t) cbNeeded / sizeof (HMODULE)); i++)
-    {
-      MODULEINFO mi;
-      char dll_name[MAX_PATH];
-
-      if (!(*win32_GetModuleInformation) (current_process_handle,
-					  DllHandle[i],
-					  &mi,
-					  sizeof (mi)))
-	continue;
-      if ((*win32_GetModuleFileNameExA) (current_process_handle,
-					 DllHandle[i],
-					 dll_name,
-					 MAX_PATH) == 0)
-	continue;
-      win32_add_one_solib (dll_name, (CORE_ADDR) (uintptr_t) mi.lpBaseOfDll);
-    }
-}
-#endif
-
-typedef HANDLE (WINAPI *winapi_CreateToolhelp32Snapshot) (DWORD, DWORD);
-typedef BOOL (WINAPI *winapi_Module32First) (HANDLE, LPMODULEENTRY32);
-typedef BOOL (WINAPI *winapi_Module32Next) (HANDLE, LPMODULEENTRY32);
-
-/* Handle a DLL load event.
-
-   This function assumes that this event did not occur during inferior
-   initialization, where their event info may be incomplete (see
-   do_initial_child_stuff and win32_add_all_dlls for more info on
-   how we handle DLL loading during that phase).  */
-
-static void
-handle_load_dll (void)
-{
-  LOAD_DLL_DEBUG_INFO *event = &current_event.u.LoadDll;
-  char *dll_name;
-
-  dll_name = get_image_name (current_process_handle,
-			     event->lpImageName, event->fUnicode);
-  if (!dll_name)
-    return;
-
-  win32_add_one_solib (dll_name, (CORE_ADDR) (uintptr_t) event->lpBaseOfDll);
-}
-
-/* Handle a DLL unload event.
-
-   This function assumes that this event did not occur during inferior
-   initialization, where their event info may be incomplete (see
-   do_initial_child_stuff and win32_add_one_solib for more info
-   on how we handle DLL loading during that phase).  */
-
-static void
-handle_unload_dll (void)
-{
-  CORE_ADDR load_addr =
-	  (CORE_ADDR) (uintptr_t) current_event.u.UnloadDll.lpBaseOfDll;
-
-  /* The symbols in a dll are offset by 0x1000, which is the
-     offset from 0 of the first byte in an image - because
-     of the file header and the section alignment. */
-  load_addr += 0x1000;
-  unloaded_dll (NULL, load_addr);
-}
-
-static void
-handle_exception (struct target_waitstatus *ourstatus)
-{
-  DWORD code = current_event.u.Exception.ExceptionRecord.ExceptionCode;
-
-  ourstatus->kind = TARGET_WAITKIND_STOPPED;
-
-  switch (code)
-    {
-    case EXCEPTION_ACCESS_VIOLATION:
-      OUTMSG2 (("EXCEPTION_ACCESS_VIOLATION"));
-      ourstatus->value.sig = GDB_SIGNAL_SEGV;
-      break;
-    case STATUS_STACK_OVERFLOW:
-      OUTMSG2 (("STATUS_STACK_OVERFLOW"));
-      ourstatus->value.sig = GDB_SIGNAL_SEGV;
-      break;
-    case STATUS_FLOAT_DENORMAL_OPERAND:
-      OUTMSG2 (("STATUS_FLOAT_DENORMAL_OPERAND"));
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
-      OUTMSG2 (("EXCEPTION_ARRAY_BOUNDS_EXCEEDED"));
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_INEXACT_RESULT:
-      OUTMSG2 (("STATUS_FLOAT_INEXACT_RESULT"));
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_INVALID_OPERATION:
-      OUTMSG2 (("STATUS_FLOAT_INVALID_OPERATION"));
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_OVERFLOW:
-      OUTMSG2 (("STATUS_FLOAT_OVERFLOW"));
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_STACK_CHECK:
-      OUTMSG2 (("STATUS_FLOAT_STACK_CHECK"));
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_UNDERFLOW:
-      OUTMSG2 (("STATUS_FLOAT_UNDERFLOW"));
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_DIVIDE_BY_ZERO:
-      OUTMSG2 (("STATUS_FLOAT_DIVIDE_BY_ZERO"));
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_INTEGER_DIVIDE_BY_ZERO:
-      OUTMSG2 (("STATUS_INTEGER_DIVIDE_BY_ZERO"));
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_INTEGER_OVERFLOW:
-      OUTMSG2 (("STATUS_INTEGER_OVERFLOW"));
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case EXCEPTION_BREAKPOINT:
-      OUTMSG2 (("EXCEPTION_BREAKPOINT"));
-      ourstatus->value.sig = GDB_SIGNAL_TRAP;
-#ifdef _WIN32_WCE
-      /* Remove the initial breakpoint.  */
-      check_breakpoints ((CORE_ADDR) (long) current_event
-			 .u.Exception.ExceptionRecord.ExceptionAddress);
-#endif
-      break;
-    case DBG_CONTROL_C:
-      OUTMSG2 (("DBG_CONTROL_C"));
-      ourstatus->value.sig = GDB_SIGNAL_INT;
-      break;
-    case DBG_CONTROL_BREAK:
-      OUTMSG2 (("DBG_CONTROL_BREAK"));
-      ourstatus->value.sig = GDB_SIGNAL_INT;
-      break;
-    case EXCEPTION_SINGLE_STEP:
-      OUTMSG2 (("EXCEPTION_SINGLE_STEP"));
-      ourstatus->value.sig = GDB_SIGNAL_TRAP;
-      break;
-    case EXCEPTION_ILLEGAL_INSTRUCTION:
-      OUTMSG2 (("EXCEPTION_ILLEGAL_INSTRUCTION"));
-      ourstatus->value.sig = GDB_SIGNAL_ILL;
-      break;
-    case EXCEPTION_PRIV_INSTRUCTION:
-      OUTMSG2 (("EXCEPTION_PRIV_INSTRUCTION"));
-      ourstatus->value.sig = GDB_SIGNAL_ILL;
-      break;
-    case EXCEPTION_NONCONTINUABLE_EXCEPTION:
-      OUTMSG2 (("EXCEPTION_NONCONTINUABLE_EXCEPTION"));
-      ourstatus->value.sig = GDB_SIGNAL_ILL;
-      break;
-    default:
-      if (current_event.u.Exception.dwFirstChance)
-	{
-	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-	  return;
-	}
-      OUTMSG2 (("gdbserver: unknown target exception 0x%08x at 0x%s",
-	    (unsigned) current_event.u.Exception.ExceptionRecord.ExceptionCode,
-	    phex_nz ((uintptr_t) current_event.u.Exception.ExceptionRecord.
-	    ExceptionAddress, sizeof (uintptr_t))));
-      ourstatus->value.sig = GDB_SIGNAL_UNKNOWN;
-      break;
-    }
-  OUTMSG2 (("\n"));
-  last_sig = ourstatus->value.sig;
-}
-
-
-static void
-suspend_one_thread (thread_info *thread)
-{
-  win32_thread_info *th = (win32_thread_info *) thread_target_data (thread);
-
-  if (!th->suspended)
-    {
-      if (SuspendThread (th->h) == (DWORD) -1)
-	{
-	  DWORD err = GetLastError ();
-	  OUTMSG (("warning: SuspendThread failed in suspend_one_thread, "
-		   "(error %d): %s\n", (int) err, strwinerror (err)));
-	}
-      else
-	th->suspended = 1;
-    }
-}
-
-static void
-fake_breakpoint_event (void)
-{
-  OUTMSG2(("fake_breakpoint_event\n"));
-
-  faked_breakpoint = 1;
-
-  memset (&current_event, 0, sizeof (current_event));
-  current_event.dwThreadId = main_thread_id;
-  current_event.dwDebugEventCode = EXCEPTION_DEBUG_EVENT;
-  current_event.u.Exception.ExceptionRecord.ExceptionCode
-    = EXCEPTION_BREAKPOINT;
-
-  for_each_thread (suspend_one_thread);
-}
-
-#ifdef _WIN32_WCE
-static int
-auto_delete_breakpoint (CORE_ADDR stop_pc)
-{
-  return 1;
-}
-#endif
-
-/* Get the next event from the child.  */
-
-static int
-get_child_debug_event (struct target_waitstatus *ourstatus)
-{
-  ptid_t ptid;
-
-  last_sig = GDB_SIGNAL_0;
-  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-
-  /* Check if GDB sent us an interrupt request.  */
-  check_remote_input_interrupt_request ();
-
-  if (soft_interrupt_requested)
-    {
-      soft_interrupt_requested = 0;
-      fake_breakpoint_event ();
-      goto gotevent;
-    }
-
-#ifndef _WIN32_WCE
-  attaching = 0;
-#else
-  if (attaching)
-    {
-      /* WinCE doesn't set an initial breakpoint automatically.  To
-	 stop the inferior, we flush all currently pending debug
-	 events -- the thread list and the dll list are always
-	 reported immediatelly without delay, then, we suspend all
-	 threads and pretend we saw a trap at the current PC of the
-	 main thread.
-
-	 Contrary to desktop Windows, Windows CE *does* report the dll
-	 names on LOAD_DLL_DEBUG_EVENTs resulting from a
-	 DebugActiveProcess call.  This limits the way we can detect
-	 if all the dlls have already been reported.  If we get a real
-	 debug event before leaving attaching, the worst that will
-	 happen is the user will see a spurious breakpoint.  */
-
-      current_event.dwDebugEventCode = 0;
-      if (!WaitForDebugEvent (&current_event, 0))
-	{
-	  OUTMSG2(("no attach events left\n"));
-	  fake_breakpoint_event ();
-	  attaching = 0;
-	}
-      else
-	OUTMSG2(("got attach event\n"));
-    }
-  else
-#endif
-    {
-      /* Keep the wait time low enough for comfortable remote
-	 interruption, but high enough so gdbserver doesn't become a
-	 bottleneck.  */
-      if (!WaitForDebugEvent (&current_event, 250))
-        {
-	  DWORD e  = GetLastError();
-
-	  if (e == ERROR_PIPE_NOT_CONNECTED)
-	    {
-	      /* This will happen if the loader fails to succesfully
-		 load the application, e.g., if the main executable
-		 tries to pull in a non-existing export from a
-		 DLL.  */
-	      ourstatus->kind = TARGET_WAITKIND_EXITED;
-	      ourstatus->value.integer = 1;
-	      return 1;
-	    }
-
-	  return 0;
-        }
-    }
-
- gotevent:
-
-  switch (current_event.dwDebugEventCode)
-    {
-    case CREATE_THREAD_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event CREATE_THREAD_DEBUG_EVENT "
-		"for pid=%u tid=%x)\n",
-		(unsigned) current_event.dwProcessId,
-		(unsigned) current_event.dwThreadId));
-
-      /* Record the existence of this thread.  */
-      child_add_thread (current_event.dwProcessId,
-			current_event.dwThreadId,
-			current_event.u.CreateThread.hThread,
-			current_event.u.CreateThread.lpThreadLocalBase);
-      break;
-
-    case EXIT_THREAD_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event EXIT_THREAD_DEBUG_EVENT "
-		"for pid=%u tid=%x\n",
-		(unsigned) current_event.dwProcessId,
-		(unsigned) current_event.dwThreadId));
-      child_delete_thread (current_event.dwProcessId,
-			   current_event.dwThreadId);
-
-      current_thread = get_first_thread ();
-      return 1;
-
-    case CREATE_PROCESS_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event CREATE_PROCESS_DEBUG_EVENT "
-		"for pid=%u tid=%x\n",
-		(unsigned) current_event.dwProcessId,
-		(unsigned) current_event.dwThreadId));
-      CloseHandle (current_event.u.CreateProcessInfo.hFile);
-
-      current_process_handle = current_event.u.CreateProcessInfo.hProcess;
-      main_thread_id = current_event.dwThreadId;
-
-      /* Add the main thread.  */
-      child_add_thread (current_event.dwProcessId,
-			main_thread_id,
-			current_event.u.CreateProcessInfo.hThread,
-			current_event.u.CreateProcessInfo.lpThreadLocalBase);
-
-#ifdef _WIN32_WCE
-      if (!attaching)
-	{
-	  /* Windows CE doesn't set the initial breakpoint
-	     automatically like the desktop versions of Windows do.
-	     We add it explicitly here.	 It will be removed as soon as
-	     it is hit.	 */
-	  set_breakpoint_at ((CORE_ADDR) (long) current_event.u
-			     .CreateProcessInfo.lpStartAddress,
-			     auto_delete_breakpoint);
-	}
-#endif
-      break;
-
-    case EXIT_PROCESS_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event EXIT_PROCESS_DEBUG_EVENT "
-		"for pid=%u tid=%x\n",
-		(unsigned) current_event.dwProcessId,
-		(unsigned) current_event.dwThreadId));
-      ourstatus->kind = TARGET_WAITKIND_EXITED;
-      ourstatus->value.integer = current_event.u.ExitProcess.dwExitCode;
-      child_continue (DBG_CONTINUE, -1);
-      CloseHandle (current_process_handle);
-      current_process_handle = NULL;
-      break;
-
-    case LOAD_DLL_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event LOAD_DLL_DEBUG_EVENT "
-		"for pid=%u tid=%x\n",
-		(unsigned) current_event.dwProcessId,
-		(unsigned) current_event.dwThreadId));
-      CloseHandle (current_event.u.LoadDll.hFile);
-      if (! child_initialization_done)
-	break;
-      handle_load_dll ();
-
-      ourstatus->kind = TARGET_WAITKIND_LOADED;
-      ourstatus->value.sig = GDB_SIGNAL_TRAP;
-      break;
-
-    case UNLOAD_DLL_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event UNLOAD_DLL_DEBUG_EVENT "
-		"for pid=%u tid=%x\n",
-		(unsigned) current_event.dwProcessId,
-		(unsigned) current_event.dwThreadId));
-      if (! child_initialization_done)
-	break;
-      handle_unload_dll ();
-      ourstatus->kind = TARGET_WAITKIND_LOADED;
-      ourstatus->value.sig = GDB_SIGNAL_TRAP;
-      break;
-
-    case EXCEPTION_DEBUG_EVENT:
-      OUTMSG2 (("gdbserver: kernel event EXCEPTION_DEBUG_EVENT "
-		"for pid=%u tid=%x\n",
-		(unsigned) current_event.dwProcessId,
-		(unsigned) current_event.dwThreadId));
-      handle_exception (ourstatus);
-      break;
-
-    case OUTPUT_DEBUG_STRING_EVENT:
-      /* A message from the kernel (or Cygwin).  */
-      OUTMSG2 (("gdbserver: kernel event OUTPUT_DEBUG_STRING_EVENT "
-		"for pid=%u tid=%x\n",
-		(unsigned) current_event.dwProcessId,
-		(unsigned) current_event.dwThreadId));
-      handle_output_debug_string ();
-      break;
-
-    default:
-      OUTMSG2 (("gdbserver: kernel event unknown "
-		"for pid=%u tid=%x code=%x\n",
-		(unsigned) current_event.dwProcessId,
-		(unsigned) current_event.dwThreadId,
-		(unsigned) current_event.dwDebugEventCode));
-      break;
-    }
-
-  ptid = debug_event_ptid (&current_event);
-  current_thread = find_thread_ptid (ptid);
-  return 1;
-}
-
-/* Wait for the inferior process to change state.
-   STATUS will be filled in with a response code to send to GDB.
-   Returns the signal which caused the process to stop. */
-static ptid_t
-win32_wait (ptid_t ptid, struct target_waitstatus *ourstatus, int options)
-{
-  struct regcache *regcache;
-
-  if (cached_status.kind != TARGET_WAITKIND_IGNORE)
-    {
-      /* The core always does a wait after creating the inferior, and
-	 do_initial_child_stuff already ran the inferior to the
-	 initial breakpoint (or an exit, if creating the process
-	 fails).  Report it now.  */
-      *ourstatus = cached_status;
-      cached_status.kind = TARGET_WAITKIND_IGNORE;
-      return debug_event_ptid (&current_event);
-    }
-
-  while (1)
-    {
-      if (!get_child_debug_event (ourstatus))
-	continue;
-
-      switch (ourstatus->kind)
-	{
-	case TARGET_WAITKIND_EXITED:
-	  OUTMSG2 (("Child exited with retcode = %x\n",
-		    ourstatus->value.integer));
-	  win32_clear_inferiors ();
-	  return ptid_t (current_event.dwProcessId);
-	case TARGET_WAITKIND_STOPPED:
-	case TARGET_WAITKIND_LOADED:
-	  OUTMSG2 (("Child Stopped with signal = %d \n",
-		    ourstatus->value.sig));
-
-	  regcache = get_thread_regcache (current_thread, 1);
-	  child_fetch_inferior_registers (regcache, -1);
-	  return debug_event_ptid (&current_event);
-	default:
-	  OUTMSG (("Ignoring unknown internal event, %d\n", ourstatus->kind));
-	  /* fall-through */
-	case TARGET_WAITKIND_SPURIOUS:
-	  /* do nothing, just continue */
-	  child_continue (DBG_CONTINUE, -1);
-	  break;
-	}
-    }
-}
-
-/* Fetch registers from the inferior process.
-   If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO.  */
-static void
-win32_fetch_inferior_registers (struct regcache *regcache, int regno)
-{
-  child_fetch_inferior_registers (regcache, regno);
-}
-
-/* Store registers to the inferior process.
-   If REGNO is -1, store all registers; otherwise, store at least REGNO.  */
-static void
-win32_store_inferior_registers (struct regcache *regcache, int regno)
-{
-  child_store_inferior_registers (regcache, regno);
-}
-
-/* Read memory from the inferior process.  This should generally be
-   called through read_inferior_memory, which handles breakpoint shadowing.
-   Read LEN bytes at MEMADDR into a buffer at MYADDR.  */
-static int
-win32_read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
-  return child_xfer_memory (memaddr, (char *) myaddr, len, 0, 0) != len;
-}
-
-/* Write memory to the inferior process.  This should generally be
-   called through write_inferior_memory, which handles breakpoint shadowing.
-   Write LEN bytes from the buffer at MYADDR to MEMADDR.
-   Returns 0 on success and errno on failure.  */
-static int
-win32_write_inferior_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
-			     int len)
-{
-  return child_xfer_memory (memaddr, (char *) myaddr, len, 1, 0) != len;
-}
-
-/* Send an interrupt request to the inferior process. */
-static void
-win32_request_interrupt (void)
-{
-  winapi_DebugBreakProcess DebugBreakProcess;
-  winapi_GenerateConsoleCtrlEvent GenerateConsoleCtrlEvent;
-
-#ifdef _WIN32_WCE
-  HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
-#else
-  HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
-#endif
-
-  GenerateConsoleCtrlEvent = GETPROCADDRESS (dll, GenerateConsoleCtrlEvent);
-
-  if (GenerateConsoleCtrlEvent != NULL
-      && GenerateConsoleCtrlEvent (CTRL_BREAK_EVENT, current_process_id))
-    return;
-
-  /* GenerateConsoleCtrlEvent can fail if process id being debugged is
-     not a process group id.
-     Fallback to XP/Vista 'DebugBreakProcess', which generates a
-     breakpoint exception in the interior process.  */
-
-  DebugBreakProcess = GETPROCADDRESS (dll, DebugBreakProcess);
-
-  if (DebugBreakProcess != NULL
-      && DebugBreakProcess (current_process_handle))
-    return;
-
-  /* Last resort, suspend all threads manually.  */
-  soft_interrupt_requested = 1;
-}
-
-#ifdef _WIN32_WCE
-int
-win32_error_to_fileio_error (DWORD err)
-{
-  switch (err)
-    {
-    case ERROR_BAD_PATHNAME:
-    case ERROR_FILE_NOT_FOUND:
-    case ERROR_INVALID_NAME:
-    case ERROR_PATH_NOT_FOUND:
-      return FILEIO_ENOENT;
-    case ERROR_CRC:
-    case ERROR_IO_DEVICE:
-    case ERROR_OPEN_FAILED:
-      return FILEIO_EIO;
-    case ERROR_INVALID_HANDLE:
-      return FILEIO_EBADF;
-    case ERROR_ACCESS_DENIED:
-    case ERROR_SHARING_VIOLATION:
-      return FILEIO_EACCES;
-    case ERROR_NOACCESS:
-      return FILEIO_EFAULT;
-    case ERROR_BUSY:
-      return FILEIO_EBUSY;
-    case ERROR_ALREADY_EXISTS:
-    case ERROR_FILE_EXISTS:
-      return FILEIO_EEXIST;
-    case ERROR_BAD_DEVICE:
-      return FILEIO_ENODEV;
-    case ERROR_DIRECTORY:
-      return FILEIO_ENOTDIR;
-    case ERROR_FILENAME_EXCED_RANGE:
-    case ERROR_INVALID_DATA:
-    case ERROR_INVALID_PARAMETER:
-    case ERROR_NEGATIVE_SEEK:
-      return FILEIO_EINVAL;
-    case ERROR_TOO_MANY_OPEN_FILES:
-      return FILEIO_EMFILE;
-    case ERROR_HANDLE_DISK_FULL:
-    case ERROR_DISK_FULL:
-      return FILEIO_ENOSPC;
-    case ERROR_WRITE_PROTECT:
-      return FILEIO_EROFS;
-    case ERROR_NOT_SUPPORTED:
-      return FILEIO_ENOSYS;
-    }
-
-  return FILEIO_EUNKNOWN;
-}
-
-static void
-wince_hostio_last_error (char *buf)
-{
-  DWORD winerr = GetLastError ();
-  int fileio_err = win32_error_to_fileio_error (winerr);
-  sprintf (buf, "F-1,%x", fileio_err);
-}
-#endif
-
-/* Write Windows OS Thread Information Block address.  */
-
-static int
-win32_get_tib_address (ptid_t ptid, CORE_ADDR *addr)
-{
-  win32_thread_info *th;
-  th = thread_rec (ptid, 0);
-  if (th == NULL)
-    return 0;
-  if (addr != NULL)
-    *addr = th->thread_local_base;
-  return 1;
-}
-
-/* Implementation of the target_ops method "sw_breakpoint_from_kind".  */
-
-static const gdb_byte *
-win32_sw_breakpoint_from_kind (int kind, int *size)
-{
-  *size = the_low_target.breakpoint_len;
-  return the_low_target.breakpoint;
-}
-
-static struct target_ops win32_target_ops = {
-  win32_create_inferior,
-  NULL,  /* post_create_inferior */
-  win32_attach,
-  win32_kill,
-  win32_detach,
-  win32_mourn,
-  win32_join,
-  win32_thread_alive,
-  win32_resume,
-  win32_wait,
-  win32_fetch_inferior_registers,
-  win32_store_inferior_registers,
-  NULL, /* prepare_to_access_memory */
-  NULL, /* done_accessing_memory */
-  win32_read_inferior_memory,
-  win32_write_inferior_memory,
-  NULL, /* lookup_symbols */
-  win32_request_interrupt,
-  NULL, /* read_auxv */
-  win32_supports_z_point_type,
-  win32_insert_point,
-  win32_remove_point,
-  NULL, /* stopped_by_sw_breakpoint */
-  NULL, /* supports_stopped_by_sw_breakpoint */
-  NULL, /* stopped_by_hw_breakpoint */
-  NULL, /* supports_stopped_by_hw_breakpoint */
-  target_can_do_hardware_single_step,
-  win32_stopped_by_watchpoint,
-  win32_stopped_data_address,
-  NULL, /* read_offsets */
-  NULL, /* get_tls_address */
-#ifdef _WIN32_WCE
-  wince_hostio_last_error,
-#else
-  hostio_last_error_from_errno,
-#endif
-  NULL, /* qxfer_osdata */
-  NULL, /* qxfer_siginfo */
-  NULL, /* supports_non_stop */
-  NULL, /* async */
-  NULL, /* start_non_stop */
-  NULL, /* supports_multi_process */
-  NULL, /* supports_fork_events */
-  NULL, /* supports_vfork_events */
-  NULL, /* supports_exec_events */
-  NULL, /* handle_new_gdb_connection */
-  NULL, /* handle_monitor_command */
-  NULL, /* core_of_thread */
-  NULL, /* read_loadmap */
-  NULL, /* process_qsupported */
-  NULL, /* supports_tracepoints */
-  NULL, /* read_pc */
-  NULL, /* write_pc */
-  NULL, /* thread_stopped */
-  win32_get_tib_address,
-  NULL, /* pause_all */
-  NULL, /* unpause_all */
-  NULL, /* stabilize_threads */
-  NULL, /* install_fast_tracepoint_jump_pad */
-  NULL, /* emit_ops */
-  NULL, /* supports_disable_randomization */
-  NULL, /* get_min_fast_tracepoint_insn_len */
-  NULL, /* qxfer_libraries_svr4 */
-  NULL, /* support_agent */
-  NULL, /* enable_btrace */
-  NULL, /* disable_btrace */
-  NULL, /* read_btrace */
-  NULL, /* read_btrace_conf */
-  NULL, /* supports_range_stepping */
-  NULL, /* pid_to_exec_file */
-  NULL, /* multifs_open */
-  NULL, /* multifs_unlink */
-  NULL, /* multifs_readlink */
-  NULL, /* breakpoint_kind_from_pc */
-  win32_sw_breakpoint_from_kind,
-};
-
-/* Initialize the Win32 backend.  */
-void
-initialize_low (void)
-{
-  set_target_ops (&win32_target_ops);
-  the_low_target.arch_setup ();
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/win32-low.h ./gdb/gdbserver/win32-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/win32-low.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/win32-low.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,122 +0,0 @@
-/* Internal interfaces for the Win32 specific target code for gdbserver.
-   Copyright (C) 2007-2020 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 GDBSERVER_WIN32_LOW_H
-#define GDBSERVER_WIN32_LOW_H
-
-#include <windows.h>
-
-struct target_desc;
-
-/* The inferior's target description.  This is a global because the
-   Windows ports support neither bi-arch nor multi-process.  */
-extern const struct target_desc *win32_tdesc;
-
-/* Thread information structure used to track extra information about
-   each thread.  */
-typedef struct win32_thread_info
-{
-  /* The Win32 thread identifier.  */
-  DWORD tid;
-
-  /* The handle to the thread.  */
-  HANDLE h;
-
-  /* Thread Information Block address.  */
-  CORE_ADDR thread_local_base;
-
-  /* Non zero if SuspendThread was called on this thread.  */
-  int suspended;
-
-#ifdef _WIN32_WCE
-  /* The context as retrieved right after suspending the thread. */
-  CONTEXT base_context;
-#endif
-
-  /* The context of the thread, including any manipulations.  */
-  CONTEXT context;
-
-  /* Whether debug registers changed since we last set CONTEXT back to
-     the thread.  */
-  int debug_registers_changed;
-} win32_thread_info;
-
-struct win32_target_ops
-{
-  /* Architecture-specific setup.  */
-  void (*arch_setup) (void);
-
-  /* The number of target registers.  */
-  int num_regs;
-
-  /* Perform initializations on startup.  */
-  void (*initial_stuff) (void);
-
-  /* Fetch the context from the inferior.  */
-  void (*get_thread_context) (win32_thread_info *th);
-
-  /* Called just before resuming the thread.  */
-  void (*prepare_to_resume) (win32_thread_info *th);
-
-  /* Called when a thread was added.  */
-  void (*thread_added) (win32_thread_info *th);
-
-  /* Fetch register from gdbserver regcache data.  */
-  void (*fetch_inferior_register) (struct regcache *regcache,
-				   win32_thread_info *th, int r);
-
-  /* Store a new register value into the thread context of TH.  */
-  void (*store_inferior_register) (struct regcache *regcache,
-				   win32_thread_info *th, int r);
-
-  void (*single_step) (win32_thread_info *th);
-
-  const unsigned char *breakpoint;
-  int breakpoint_len;
-
-  /* Breakpoint/Watchpoint related functions.  See target.h for comments.  */
-  int (*supports_z_point_type) (char z_type);
-  int (*insert_point) (enum raw_bkpt_type type, CORE_ADDR addr,
-		       int size, struct raw_breakpoint *bp);
-  int (*remove_point) (enum raw_bkpt_type type, CORE_ADDR addr,
-		       int size, struct raw_breakpoint *bp);
-  int (*stopped_by_watchpoint) (void);
-  CORE_ADDR (*stopped_data_address) (void);
-};
-
-extern struct win32_target_ops the_low_target;
-
-/* Retrieve the context for this thread, if not already retrieved.  */
-extern void win32_require_context (win32_thread_info *th);
-
-/* Map the Windows error number in ERROR to a locale-dependent error
-   message string and return a pointer to it.  Typically, the values
-   for ERROR come from GetLastError.
-
-   The string pointed to shall not be modified by the application,
-   but may be overwritten by a subsequent call to strwinerror
-
-   The strwinerror function does not change the current setting
-   of GetLastError.  */
-extern char * strwinerror (DWORD error);
-
-/* in wincecompat.c */
-
-extern void to_back_slashes (char *);
-
-#endif /* GDBSERVER_WIN32_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/wincecompat.c ./gdb/gdbserver/wincecompat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/wincecompat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/wincecompat.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
-/* Compatibility routines for Windows CE.
-   Copyright (C) 2007-2020 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 "server.h"
-
-#include <windows.h>
-
-void
-perror (const char *s)
-{
-  if (s && *s)
-    fprintf (stderr, "%s: %s\n", s, strwinerror (GetLastError ()));
-  else
-    fprintf (stderr, "%s\n", strwinerror (GetLastError ()));
-}
-
-void
-to_back_slashes (char *path)
-{
-  for (; *path; ++path)
-    if ('/' == *path)
-      *path = '\\';
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/wincecompat.h ./gdb/gdbserver/wincecompat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/wincecompat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/wincecompat.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,30 +0,0 @@
-/* Compatibility routines for Windows CE.
-   Copyright (C) 2007-2020 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 GDBSERVER_WINCECOMPAT_H
-#define GDBSERVER_WINCECOMPAT_H
-
-#include <windows.h>
-
-#define errno (GetLastError ())
-
-/* in win32-low.c */
-extern char * strwinerror (DWORD error);
-#define strerror strwinerror
-
-#endif /* GDBSERVER_WINCECOMPAT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/x86-low.c ./gdb/gdbserver/x86-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/x86-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/x86-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
-/* Low level support for x86 (i386 and x86-64).
-
-   Copyright (C) 2009-2020 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 "server.h"
-#include "x86-low.h"
-
-/* Clear the reference counts and forget everything we knew about the
-   debug registers.  */
-
-void
-x86_low_init_dregs (struct x86_debug_reg_state *state)
-{
-  int i;
-
-  ALL_DEBUG_ADDRESS_REGISTERS (i)
-    {
-      state->dr_mirror[i] = 0;
-      state->dr_ref_count[i] = 0;
-    }
-  state->dr_control_mirror = 0;
-  state->dr_status_mirror  = 0;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/x86-low.h ./gdb/gdbserver/x86-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/x86-low.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/x86-low.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,28 +0,0 @@
-/* Low level support for x86 (i386 and x86-64).
-
-   Copyright (C) 2009-2020 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 GDBSERVER_X86_LOW_H
-#define GDBSERVER_X86_LOW_H
-
-#include "nat/x86-dregs.h"
-
-/* Initialize STATE.  */
-extern void x86_low_init_dregs (struct x86_debug_reg_state *state);
-
-#endif /* GDBSERVER_X86_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/x86-tdesc.h ./gdb/gdbserver/x86-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/x86-tdesc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/x86-tdesc.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,32 +0,0 @@
-/* Copyright (C) 2018-2020 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 GDBSERVER_X86_TDESC_H
-#define GDBSERVER_X86_TDESC_H
-
-/* The "expedite" registers for x86 targets.  Since whether the
-   variable is used depends on host/configuration, we mark it
-   ATTRIBUTE_UNUSED to keep it simple here.  */
-static const char *i386_expedite_regs[] ATTRIBUTE_UNUSED
-    = {"ebp", "esp", "eip", NULL};
-
-#ifdef __x86_64__
-/* The "expedite" registers for x86_64 targets.  */
-static const char *amd64_expedite_regs[] = {"rbp", "rsp", "rip", NULL};
-#endif
-
-#endif /* GDBSERVER_X86_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/xtensa-xtregs.c ./gdb/gdbserver/xtensa-xtregs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbserver/xtensa-xtregs.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbserver/xtensa-xtregs.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,37 +0,0 @@
-/* Table mapping between kernel xtregset and GDB register cache.
-   Copyright (C) 2007-2020 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/>.  */
-
-
-typedef struct {
-  int   gdb_regnum;
-  int   gdb_offset;
-  int   ptrace_cp_offset;
-  int   ptrace_offset;
-  int   size;
-  int   coproc;
-  int   dbnum;
-  char* name
-;} xtensa_regtable_t;
-
-#define XTENSA_ELF_XTREG_SIZE	4
-
-const xtensa_regtable_t  xtensa_regmap_table[] = {
-  /* gnum,gofs,cpofs,ofs,siz,cp, dbnum,  name */
-  {   44, 176,   0,   0,  4, -1, 0x020c, "scompare1" },
-  { 0 }
-};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-stabs.h ./gdb/gdb-stabs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb-stabs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb-stabs.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Definitions for symbol-reading containing "stabs", for GDB.
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Support.  Written by John Gilmore.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/agent.c ./gdb/gdbsupport/agent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/agent.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/agent.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,280 +0,0 @@
-/* Shared utility routines for GDB to interact with agent.
-
-   Copyright (C) 2009-2020 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"
-#include "target/target.h"
-#include "gdbsupport/symbol.h"
-#include <unistd.h>
-#include "filestuff.h"
-
-#define IPA_SYM_STRUCT_NAME ipa_sym_addresses_common
-#include "agent.h"
-
-bool debug_agent = false;
-
-/* A stdarg wrapper for debug_vprintf.  */
-
-static void ATTRIBUTE_PRINTF (1, 2)
-debug_agent_printf (const char *fmt, ...)
-{
-  va_list ap;
-
-  if (!debug_agent)
-    return;
-  va_start (ap, fmt);
-  debug_vprintf (fmt, ap);
-  va_end (ap);
-}
-
-#define DEBUG_AGENT debug_agent_printf
-
-/* Global flag to determine using agent or not.  */
-bool use_agent = false;
-
-/* Addresses of in-process agent's symbols both GDB and GDBserver cares
-   about.  */
-
-struct ipa_sym_addresses_common
-{
-  CORE_ADDR addr_helper_thread_id;
-  CORE_ADDR addr_cmd_buf;
-  CORE_ADDR addr_capability;
-};
-
-/* Cache of the helper thread id.  FIXME: this global should be made
-   per-process.  */
-static uint32_t helper_thread_id = 0;
-
-static struct
-{
-  const char *name;
-  int offset;
-} symbol_list[] = {
-  IPA_SYM(helper_thread_id),
-  IPA_SYM(cmd_buf),
-  IPA_SYM(capability),
-};
-
-static struct ipa_sym_addresses_common ipa_sym_addrs;
-
-static bool all_agent_symbols_looked_up = false;
-
-bool
-agent_loaded_p (void)
-{
-  return all_agent_symbols_looked_up;
-}
-
-/* Look up all symbols needed by agent.  Return 0 if all the symbols are
-   found, return non-zero otherwise.  */
-
-int
-agent_look_up_symbols (void *arg)
-{
-  all_agent_symbols_looked_up = false;
-
-  for (int i = 0; i < sizeof (symbol_list) / sizeof (symbol_list[0]); i++)
-    {
-      CORE_ADDR *addrp =
-	(CORE_ADDR *) ((char *) &ipa_sym_addrs + symbol_list[i].offset);
-      struct objfile *objfile = (struct objfile *) arg;
-
-      if (find_minimal_symbol_address (symbol_list[i].name, addrp,
-				       objfile) != 0)
-	{
-	  DEBUG_AGENT ("symbol `%s' not found\n", symbol_list[i].name);
-	  return -1;
-	}
-    }
-
-  all_agent_symbols_looked_up = true;
-  return 0;
-}
-
-static unsigned int
-agent_get_helper_thread_id (void)
-{
-  if  (helper_thread_id == 0)
-    {
-      if (target_read_uint32 (ipa_sym_addrs.addr_helper_thread_id,
-			      &helper_thread_id))
-	warning (_("Error reading helper thread's id in lib"));
-    }
-
-  return helper_thread_id;
-}
-
-#ifdef HAVE_SYS_UN_H
-#include <sys/socket.h>
-#include <sys/un.h>
-#define SOCK_DIR P_tmpdir
-
-#ifndef UNIX_PATH_MAX
-#define UNIX_PATH_MAX sizeof(((struct sockaddr_un *) NULL)->sun_path)
-#endif
-
-#endif
-
-/* Connects to synchronization socket.  PID is the pid of inferior, which is
-   used to set up the connection socket.  */
-
-static int
-gdb_connect_sync_socket (int pid)
-{
-#ifdef HAVE_SYS_UN_H
-  struct sockaddr_un addr;
-  int res, fd;
-  char path[UNIX_PATH_MAX];
-
-  res = xsnprintf (path, UNIX_PATH_MAX, "%s/gdb_ust%d", P_tmpdir, pid);
-  if (res >= UNIX_PATH_MAX)
-    return -1;
-
-  res = fd = gdb_socket_cloexec (PF_UNIX, SOCK_STREAM, 0);
-  if (res == -1)
-    {
-      warning (_("error opening sync socket: %s"), safe_strerror (errno));
-      return -1;
-    }
-
-  addr.sun_family = AF_UNIX;
-
-  res = xsnprintf (addr.sun_path, UNIX_PATH_MAX, "%s", path);
-  if (res >= UNIX_PATH_MAX)
-    {
-      warning (_("string overflow allocating socket name"));
-      close (fd);
-      return -1;
-    }
-
-  res = connect (fd, (struct sockaddr *) &addr, sizeof (addr));
-  if (res == -1)
-    {
-      warning (_("error connecting sync socket (%s): %s. "
-		 "Make sure the directory exists and that it is writable."),
-		 path, safe_strerror (errno));
-      close (fd);
-      return -1;
-    }
-
-  return fd;
-#else
-  return -1;
-#endif
-}
-
-/* Execute an agent command in the inferior.  PID is the value of pid of the
-   inferior.  CMD is the buffer for command.  GDB or GDBserver will store the
-   command into it and fetch the return result from CMD.  The interaction
-   between GDB/GDBserver and the agent is synchronized by a synchronization
-   socket.  Return zero if success, otherwise return non-zero.  */
-
-int
-agent_run_command (int pid, const char *cmd, int len)
-{
-  int fd;
-  int tid = agent_get_helper_thread_id ();
-  ptid_t ptid = ptid_t (pid, tid, 0);
-
-  int ret = target_write_memory (ipa_sym_addrs.addr_cmd_buf,
-				 (gdb_byte *) cmd, len);
-
-  if (ret != 0)
-    {
-      warning (_("unable to write"));
-      return -1;
-    }
-
-  DEBUG_AGENT ("agent: resumed helper thread\n");
-
-  /* Resume helper thread.  */
-  target_continue_no_signal (ptid);
-
-  fd = gdb_connect_sync_socket (pid);
-  if (fd >= 0)
-    {
-      char buf[1] = "";
-
-      DEBUG_AGENT ("agent: signalling helper thread\n");
-
-      do
-	{
-	  ret = write (fd, buf, 1);
-	} while (ret == -1 && errno == EINTR);
-
-	DEBUG_AGENT ("agent: waiting for helper thread's response\n");
-
-      do
-	{
-	  ret = read (fd, buf, 1);
-	} while (ret == -1 && errno == EINTR);
-
-      close (fd);
-
-      DEBUG_AGENT ("agent: helper thread's response received\n");
-    }
-  else
-    return -1;
-
-  /* Need to read response with the inferior stopped.  */
-  if (ptid != null_ptid)
-    {
-      /* Stop thread PTID.  */
-      DEBUG_AGENT ("agent: stop helper thread\n");
-      target_stop_and_wait (ptid);
-    }
-
-  if (fd >= 0)
-    {
-      if (target_read_memory (ipa_sym_addrs.addr_cmd_buf, (gdb_byte *) cmd,
-			      IPA_CMD_BUF_SIZE))
-	{
-	  warning (_("Error reading command response"));
-	  return -1;
-	}
-    }
-
-  return 0;
-}
-
-/* Each bit of it stands for a capability of agent.  */
-static uint32_t agent_capability = 0;
-
-/* Return true if agent has capability AGENT_CAP, otherwise return false.  */
-
-bool
-agent_capability_check (enum agent_capa agent_capa)
-{
-  if (agent_capability == 0)
-    {
-      if (target_read_uint32 (ipa_sym_addrs.addr_capability,
-			      &agent_capability))
-	warning (_("Error reading capability of agent"));
-    }
-  return (agent_capability & agent_capa) != 0;
-}
-
-/* Invalidate the cache of agent capability, so we'll read it from inferior
-   again.  Call it when launches a new program or reconnect to remote stub.  */
-
-void
-agent_capability_invalidate (void)
-{
-  agent_capability = 0;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/agent.h ./gdb/gdbsupport/agent.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/agent.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/agent.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,68 +0,0 @@
-/* Shared utility routines for GDB to interact with agent.
-
-   Copyright (C) 2009-2020 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 COMMON_AGENT_H
-#define COMMON_AGENT_H
-
-#include "gdbsupport/preprocessor.h"
-
-int agent_run_command (int pid, const char *cmd, int len);
-
-int agent_look_up_symbols (void *);
-
-#define IPA_SYM_EXPORTED_NAME(SYM) gdb_agent_ ## SYM
-
-/* Define an entry in an IPA symbol list array.  If IPA_SYM is used, the macro
-   IPA_SYM_STRUCT_NAME must be defined to the structure name holding the IPA
-   symbol addresses in that particular file, before including
-   gdbsupport/agent.h.  */
-#define IPA_SYM(SYM)                                   \
-  {                                                    \
-    STRINGIFY (IPA_SYM_EXPORTED_NAME (SYM)),           \
-    offsetof (IPA_SYM_STRUCT_NAME, addr_ ## SYM)       \
-  }
-
-/* The size in bytes of the buffer used to talk to the IPA helper
-   thread.  */
-#define IPA_CMD_BUF_SIZE 1024
-
-bool agent_loaded_p (void);
-
-extern bool debug_agent;
-
-extern bool use_agent;
-
-/* Capability of agent.  Different agents may have different capabilities,
-   such as installing fast tracepoint or evaluating breakpoint conditions.
-   Capabilities are represented by bit-maps, and each capability occupies one
-   bit.  */
-
-enum agent_capa
-{
-  /* Capability to install fast tracepoint.  */
-  AGENT_CAPA_FAST_TRACE = 0x1,
-  /* Capability to install static tracepoint.  */
-  AGENT_CAPA_STATIC_TRACE = (0x1 << 1),
-};
-
-bool agent_capability_check (enum agent_capa);
-
-void agent_capability_invalidate (void);
-
-#endif /* COMMON_AGENT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/alt-stack.h ./gdb/gdbsupport/alt-stack.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/alt-stack.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/alt-stack.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,70 +0,0 @@
-/* Temporarily install an alternate signal stack
-
-   Copyright (C) 2019-2020 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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/array-view.h ./gdb/gdbsupport/array-view.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/array-view.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/array-view.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,259 +0,0 @@
-/* Copyright (C) 2017-2020 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 COMMON_ARRAY_VIEW_H
-#define COMMON_ARRAY_VIEW_H
-
-#include "traits.h"
-#include <type_traits>
-
-/* An array_view is an abstraction that provides a non-owning view
-   over a sequence of contiguous objects.
-
-   A way to put it is that array_view is to std::vector (and
-   std::array and built-in arrays with rank==1) like std::string_view
-   is to std::string.
-
-   The main intent of array_view is to use it as function input
-   parameter type, making it possible to pass in any sequence of
-   contiguous objects, irrespective of whether the objects live on the
-   stack or heap and what actual container owns them.  Implicit
-   construction from the element type is supported too, making it easy
-   to call functions that expect an array of elements when you only
-   have one element (usually on the stack).  For example:
-
-    struct A { .... };
-    void function (gdb::array_view<A> as);
-
-    std::vector<A> std_vec = ...;
-    std::array<A, N> std_array = ...;
-    A array[] = {...};
-    A elem;
-
-    function (std_vec);
-    function (std_array);
-    function (array);
-    function (elem);
-
-   Views can be either mutable or const.  A const view is simply
-   created by specifying a const T as array_view template parameter,
-   in which case operator[] of non-const array_view objects ends up
-   returning const references.  Making the array_view itself const is
-   analogous to making a pointer itself be const.  I.e., disables
-   re-seating the view/pointer.
-
-   Since array_view objects are small (pointer plus size), and
-   designed to be trivially copyable, they should generally be passed
-   around by value.
-
-   You can find unit tests covering the whole API in
-   unittests/array-view-selftests.c.  */
-
-namespace gdb {
-
-template <typename T>
-class array_view
-{
-  /* True iff decayed T is the same as decayed U.  E.g., we want to
-     say that 'T&' is the same as 'const T'.  */
-  template <typename U>
-  using IsDecayedT = typename std::is_same<typename std::decay<T>::type,
-					   typename std::decay<U>::type>;
-
-  /* True iff decayed T is the same as decayed U, and 'U *' is
-     implicitly convertible to 'T *'.  This is a requirement for
-     several methods.  */
-  template <typename U>
-  using DecayedConvertible = gdb::And<IsDecayedT<U>,
-				      std::is_convertible<U *, T *>>;
-
-public:
-  using value_type = T;
-  using reference = T &;
-  using const_reference = const T &;
-  using size_type = size_t;
-
-  /* Default construction creates an empty view.  */
-  constexpr array_view () noexcept
-    : m_array (nullptr), m_size (0)
-  {}
-
-  /* Create an array view over a single object of the type of an
-     array_view element.  The created view as size==1.  This is
-     templated on U to allow constructing a array_view<const T> over a
-     (non-const) T.  The "convertible" requirement makes sure that you
-     can't create an array_view<T> over a const T.  */
-  template<typename U,
-	   typename = Requires<DecayedConvertible<U>>>
-  constexpr array_view (U &elem) noexcept
-    : m_array (&elem), m_size (1)
-  {}
-
-  /* Same as above, for rvalue references.  */
-  template<typename U,
-	   typename = Requires<DecayedConvertible<U>>>
-  constexpr array_view (U &&elem) noexcept
-    : m_array (&elem), m_size (1)
-  {}
-
-  /* Create an array view from a pointer to an array and an element
-     count.  */
-  template<typename U,
-	   typename = Requires<DecayedConvertible<U>>>
-  constexpr array_view (U *array, size_t size) noexcept
-    : m_array (array), m_size (size)
-  {}
-
-  /* Create an array view from a range.  This is templated on both U
-     an V to allow passing in a mix of 'const T *' and 'T *'.  */
-  template<typename U, typename V,
-	   typename = Requires<DecayedConvertible<U>>,
-	   typename = Requires<DecayedConvertible<V>>>
-  constexpr array_view (U *begin, V *end) noexcept
-    : m_array (begin), m_size (end - begin)
-  {}
-
-  /* Create an array view from an array.  */
-  template<typename U, size_t Size,
-	   typename = Requires<DecayedConvertible<U>>>
-  constexpr array_view (U (&array)[Size]) noexcept
-    : m_array (array), m_size (Size)
-  {}
-
-  /* Create an array view from a contiguous container.  E.g.,
-     std::vector and std::array.  */
-  template<typename Container,
-	   typename = Requires<gdb::Not<IsDecayedT<Container>>>,
-	   typename
-	     = Requires<std::is_convertible
-			<decltype (std::declval<Container> ().data ()),
-			 T *>>,
-	   typename
-	     = Requires<std::is_convertible
-			<decltype (std::declval<Container> ().size ()),
-			 size_type>>>
-  constexpr array_view (Container &&c) noexcept
-    : m_array (c.data ()), m_size (c.size ())
-  {}
-
-  /* Observer methods.  Some of these can't be constexpr until we
-     require C++14.  */
-  /*constexpr14*/ T *data () noexcept { return m_array; }
-  constexpr const T *data () const noexcept { return m_array; }
-
-  /*constexpr14*/ T *begin () noexcept { return m_array; }
-  constexpr const T *begin () const noexcept { return m_array; }
-
-  /*constexpr14*/ T *end () noexcept { return m_array + m_size; }
-  constexpr const T *end () const noexcept { return m_array + m_size; }
-
-  /*constexpr14*/ reference operator[] (size_t index) noexcept
-  { return m_array[index]; }
-  constexpr const_reference operator[] (size_t index) const noexcept
-  { return m_array[index]; }
-
-  constexpr size_type size () const noexcept { return m_size; }
-  constexpr bool empty () const noexcept { return m_size == 0; }
-
-  /* Slice an array view.  */
-
-  /* Return a new array view over SIZE elements starting at START.  */
-  constexpr array_view<T> slice (size_type start, size_type size) const noexcept
-  { return {m_array + start, size}; }
-
-  /* Return a new array view over all the elements after START,
-     inclusive.  */
-  constexpr array_view<T> slice (size_type start) const noexcept
-  { return {m_array + start, size () - start}; }
-
-private:
-  T *m_array;
-  size_type m_size;
-};
-
-/* Compare LHS and RHS for (deep) equality.  That is, whether LHS and
-   RHS have the same sizes, and whether each pair of elements of LHS
-   and RHS at the same position compares equal.  */
-
-template <typename T>
-bool
-operator== (const gdb::array_view<T> &lhs, const gdb::array_view<T> &rhs)
-{
-  if (lhs.size () != rhs.size ())
-    return false;
-
-  for (size_t i = 0; i < lhs.size (); i++)
-    if (!(lhs[i] == rhs[i]))
-      return false;
-
-  return true;
-}
-
-/* Compare two array_views for inequality.  */
-
-template <typename T>
-bool
-operator!= (const gdb::array_view<T> &lhs, const gdb::array_view<T> &rhs)
-{
-  return !(lhs == rhs);
-}
-
-/* Create an array view from a pointer to an array and an element
-   count.
-
-   This is useful as alternative to constructing an array_view using
-   brace initialization when the size variable you have handy is of
-   signed type, since otherwise without an explicit cast the code
-   would be ill-formed.
-
-   For example, with:
-
-     extern void foo (int, int, gdb::array_view<value *>);
-
-     value *args[2];
-     int nargs;
-     foo (1, 2, {values, nargs});
-
-   You'd get:
-
-     source.c:10: error: narrowing conversion of â€˜nargsâ€™ from â€˜intâ€™ to
-     â€˜size_t {aka long unsigned int}â€™ inside { } [-Werror=narrowing]
-
-   You could fix it by writing the somewhat distracting explicit cast:
-
-     foo (1, 2, {values, (size_t) nargs});
-
-   Or by instantiating an array_view explicitly:
-
-     foo (1, 2, gdb::array_view<value *>(values, nargs));
-
-   Or, better, using make_array_view, which has the advantage of
-   inferring the arrav_view element's type:
-
-     foo (1, 2, gdb::make_array_view (values, nargs));
-*/
-
-template<typename U>
-constexpr inline array_view<U>
-make_array_view (U *array, size_t size) noexcept
-{
-  return {array, size};
-}
-
-} /* namespace gdb */
-
-#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/ax.def ./gdb/gdbsupport/ax.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/ax.def	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/ax.def	1970-01-01 00:00:00.000000000 +0000
@@ -1,97 +0,0 @@
-/* Definition of agent opcode values.   -*- c -*-
-   Copyright (C) 1998-2020 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/>.  */
-
-/* The actual values of the various bytecode operations.
-
-   Other independent implementations of the agent bytecode engine will
-   rely on the exact values of these enums, and may not be recompiled
-   when we change this table.  The numeric values should remain fixed
-   whenever possible.  Thus, we assign them values explicitly here (to
-   allow gaps to form safely), and the disassembly table in
-   agentexpr.h behaves like an opcode map.  If you want to see them
-   grouped logically, see doc/agentexpr.texi.
-
-   Each line is of the form:
-   
-   DEFOP (name, size, data_size, consumed, produced, opcode)
-   
-   NAME is the name of the operation.
-   SIZE is the number of argument bytes that the operation takes from
-   the bytecode stream.
-   DATA_SIZE is the size of data operated on, in bits, for operations
-   that care (ref and const).  It is zero otherwise.
-   CONSUMED is the number of stack elements consumed.
-   PRODUCED is the number of stack elements produced.
-   OPCODE is the operation's encoding.  */
-
-DEFOP (float, 0, 0, 0, 0, 0x01)
-DEFOP (add, 0, 0, 2, 1, 0x02)
-DEFOP (sub, 0, 0, 2, 1, 0x03)
-DEFOP (mul, 0, 0, 2, 1, 0x04)
-DEFOP (div_signed, 0, 0, 2, 1, 0x05)
-DEFOP (div_unsigned, 0, 0, 2, 1, 0x06)
-DEFOP (rem_signed, 0, 0, 2, 1, 0x07)
-DEFOP (rem_unsigned, 0, 0, 2, 1, 0x08)
-DEFOP (lsh, 0, 0, 2, 1, 0x09)
-DEFOP (rsh_signed, 0, 0, 2, 1, 0x0a)
-DEFOP (rsh_unsigned, 0, 0, 2, 1, 0x0b)
-DEFOP (trace, 0, 0, 2, 0, 0x0c)
-DEFOP (trace_quick, 1, 0, 1, 1, 0x0d)
-DEFOP (log_not, 0, 0, 1, 1, 0x0e)
-DEFOP (bit_and, 0, 0, 2, 1, 0x0f)
-DEFOP (bit_or, 0, 0, 2, 1, 0x10)
-DEFOP (bit_xor, 0, 0, 2, 1, 0x11)
-DEFOP (bit_not, 0, 0, 1, 1, 0x12)
-DEFOP (equal, 0, 0, 2, 1, 0x13)
-DEFOP (less_signed, 0, 0, 2, 1, 0x14)
-DEFOP (less_unsigned, 0, 0, 2, 1, 0x15)
-DEFOP (ext, 1, 0, 1, 1, 0x16)
-DEFOP (ref8, 0, 8, 1, 1, 0x17)
-DEFOP (ref16, 0, 16, 1, 1, 0x18)
-DEFOP (ref32, 0, 32, 1, 1, 0x19)
-DEFOP (ref64, 0, 64, 1, 1, 0x1a)
-DEFOP (ref_float, 0, 0, 1, 1, 0x1b)
-DEFOP (ref_double, 0, 0, 1, 1, 0x1c)
-DEFOP (ref_long_double, 0, 0, 1, 1, 0x1d)
-DEFOP (l_to_d, 0, 0, 1, 1, 0x1e)
-DEFOP (d_to_l, 0, 0, 1, 1, 0x1f)
-DEFOP (if_goto, 2, 0, 1, 0, 0x20)
-DEFOP (goto, 2, 0, 0, 0, 0x21)
-DEFOP (const8, 1, 8, 0, 1, 0x22)
-DEFOP (const16, 2, 16, 0, 1, 0x23)
-DEFOP (const32, 4, 32, 0, 1, 0x24)
-DEFOP (const64, 8, 64, 0, 1, 0x25)
-DEFOP (reg, 2, 0, 0, 1, 0x26)
-DEFOP (end, 0, 0, 0, 0, 0x27)
-DEFOP (dup, 0, 0, 1, 2, 0x28)
-DEFOP (pop, 0, 0, 1, 0, 0x29)
-DEFOP (zero_ext, 1, 0, 1, 1, 0x2a)
-DEFOP (swap, 0, 0, 2, 2, 0x2b)
-DEFOP (getv, 2, 0, 0, 1, 0x2c)
-DEFOP (setv, 2, 0, 1, 1, 0x2d)
-DEFOP (tracev, 2, 0, 0, 1, 0x2e)
-DEFOP (tracenz, 0, 0, 2, 0, 0x2f)
-DEFOP (trace16, 2, 0, 1, 1, 0x30)
-/* We need something here just to make the tables come out ok.  */
-DEFOP (invalid2, 0, 0, 0, 0, 0x31)
-/* The "consumed" number for pick is wrong, but there's no way to
-   express the right thing.  */
-DEFOP (pick, 1, 0, 0, 1, 0x32)
-DEFOP (rot, 0, 0, 3, 3, 0x33)
-/* Both the argument and consumed numbers are dynamic for this one.  */
-DEFOP (printf, 0, 0, 0, 0, 0x34)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/block-signals.h ./gdb/gdbsupport/block-signals.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/block-signals.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/block-signals.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,67 +0,0 @@
-/* Block signals used by gdb
-
-   Copyright (C) 2019-2020 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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/break-common.h ./gdb/gdbsupport/break-common.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/break-common.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/break-common.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,31 +0,0 @@
-/* Data structures associated with breakpoints shared in both GDB and
-   GDBserver.
-   Copyright (C) 1992-2020 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 COMMON_BREAK_COMMON_H
-#define COMMON_BREAK_COMMON_H
-
-enum target_hw_bp_type
-  {
-    hw_write   = 0, 		/* Common  HW watchpoint */
-    hw_read    = 1, 		/* Read    HW watchpoint */
-    hw_access  = 2, 		/* Access  HW watchpoint */
-    hw_execute = 3		/* Execute HW breakpoint */
-  };
-
-#endif /* COMMON_BREAK_COMMON_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/btrace-common.c ./gdb/gdbsupport/btrace-common.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/btrace-common.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/btrace-common.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,190 +0,0 @@
-/* Copyright (C) 2014-2020 Free Software Foundation, Inc.
-
-   Contributed by Intel Corp. <markus.t.metzger@intel.com>
-
-   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"
-#include "btrace-common.h"
-
-
-/* See btrace-common.h.  */
-
-const char *
-btrace_format_string (enum btrace_format format)
-{
-  switch (format)
-    {
-    case BTRACE_FORMAT_NONE:
-      return _("No or unknown format");
-
-    case BTRACE_FORMAT_BTS:
-      return _("Branch Trace Store");
-
-    case BTRACE_FORMAT_PT:
-      return _("Intel Processor Trace");
-    }
-
-  internal_error (__FILE__, __LINE__, _("Unknown branch trace format"));
-}
-
-/* See btrace-common.h.  */
-
-const char *
-btrace_format_short_string (enum btrace_format format)
-{
-  switch (format)
-    {
-    case BTRACE_FORMAT_NONE:
-      return "unknown";
-
-    case BTRACE_FORMAT_BTS:
-      return "bts";
-
-    case BTRACE_FORMAT_PT:
-      return "pt";
-    }
-
-  internal_error (__FILE__, __LINE__, _("Unknown branch trace format"));
-}
-
-/* See btrace-common.h.  */
-
-void
-btrace_data::fini ()
-{
-  switch (format)
-    {
-    case BTRACE_FORMAT_NONE:
-      /* Nothing to do.  */
-      return;
-
-    case BTRACE_FORMAT_BTS:
-      delete variant.bts.blocks;
-      variant.bts.blocks = nullptr;
-      return;
-
-    case BTRACE_FORMAT_PT:
-      xfree (variant.pt.data);
-      return;
-    }
-
-  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
-}
-
-/* See btrace-common.h.  */
-
-bool
-btrace_data::empty () const
-{
-  switch (format)
-    {
-    case BTRACE_FORMAT_NONE:
-      return true;
-
-    case BTRACE_FORMAT_BTS:
-      return variant.bts.blocks->empty ();
-
-    case BTRACE_FORMAT_PT:
-      return (variant.pt.size == 0);
-    }
-
-  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
-}
-
-/* See btrace-common.h.  */
-
-void
-btrace_data::clear ()
-{
-  fini ();
-  format = BTRACE_FORMAT_NONE;
-}
-
-/* See btrace-common.h.  */
-
-int
-btrace_data_append (struct btrace_data *dst,
-		    const struct btrace_data *src)
-{
-  switch (src->format)
-    {
-    case BTRACE_FORMAT_NONE:
-      return 0;
-
-    case BTRACE_FORMAT_BTS:
-      switch (dst->format)
-	{
-	default:
-	  return -1;
-
-	case BTRACE_FORMAT_NONE:
-	  dst->format = BTRACE_FORMAT_BTS;
-	  dst->variant.bts.blocks = new std::vector<btrace_block>;
-
-	  /* Fall-through.  */
-	case BTRACE_FORMAT_BTS:
-	  {
-	    unsigned int blk;
-
-	    /* We copy blocks in reverse order to have the oldest block at
-	       index zero.  */
-	    blk = src->variant.bts.blocks->size ();
-	    while (blk != 0)
-	      {
-		const btrace_block &block
-		  = src->variant.bts.blocks->at (--blk);
-		dst->variant.bts.blocks->push_back (block);
-	      }
-	  }
-	}
-      return 0;
-
-    case BTRACE_FORMAT_PT:
-      switch (dst->format)
-	{
-	default:
-	  return -1;
-
-	case BTRACE_FORMAT_NONE:
-	  dst->format = BTRACE_FORMAT_PT;
-	  dst->variant.pt.data = NULL;
-	  dst->variant.pt.size = 0;
-
-	  /* fall-through.  */
-	case BTRACE_FORMAT_PT:
-	  {
-	    gdb_byte *data;
-	    size_t size;
-
-	    size = src->variant.pt.size + dst->variant.pt.size;
-	    data = (gdb_byte *) xmalloc (size);
-
-	    memcpy (data, dst->variant.pt.data, dst->variant.pt.size);
-	    memcpy (data + dst->variant.pt.size, src->variant.pt.data,
-		    src->variant.pt.size);
-
-	    xfree (dst->variant.pt.data);
-
-	    dst->variant.pt.data = data;
-	    dst->variant.pt.size = size;
-	  }
-	}
-      return 0;
-    }
-
-  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/btrace-common.h ./gdb/gdbsupport/btrace-common.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/btrace-common.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/btrace-common.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,260 +0,0 @@
-/* Branch trace support for GDB, the GNU debugger.
-
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
-
-   Contributed by Intel Corp. <markus.t.metzger@intel.com>.
-
-   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 COMMON_BTRACE_COMMON_H
-#define COMMON_BTRACE_COMMON_H
-
-/* Branch tracing (btrace) is a per-thread control-flow execution trace of the
-   inferior.  For presentation purposes, the branch trace is represented as a
-   list of sequential control-flow blocks, one such list per thread.  */
-
-/* A branch trace block.
-
-   This represents a block of sequential control-flow.  Adjacent blocks will be
-   connected via calls, returns, or jumps.  The latter can be direct or
-   indirect, conditional or unconditional.  Branches can further be
-   asynchronous, e.g. interrupts.  */
-struct btrace_block
-{
-  /* The address of the first byte of the first instruction in the block.
-     The address may be zero if we do not know the beginning of this block,
-     such as for the first block in a delta trace.  */
-  CORE_ADDR begin;
-
-  /* The address of the first byte of the last instruction in the block.  */
-  CORE_ADDR end;
-
-  /* Simple constructor.  */
-  btrace_block (CORE_ADDR begin, CORE_ADDR end)
-    : begin (begin),
-      end (end)
-  {
-    /* Nothing.  */
-  }
-};
-
-/* Enumeration of btrace formats.  */
-
-enum btrace_format
-{
-  /* No branch trace format.  */
-  BTRACE_FORMAT_NONE,
-
-  /* Branch trace is in Branch Trace Store (BTS) format.
-     Actually, the format is a sequence of blocks derived from BTS.  */
-  BTRACE_FORMAT_BTS,
-
-  /* Branch trace is in Intel Processor Trace format.  */
-  BTRACE_FORMAT_PT
-};
-
-/* An enumeration of cpu vendors.  */
-
-enum btrace_cpu_vendor
-{
-  /* We do not know this vendor.  */
-  CV_UNKNOWN,
-
-  /* Intel.  */
-  CV_INTEL
-};
-
-/* A cpu identifier.  */
-
-struct btrace_cpu
-{
-  /* The processor vendor.  */
-  enum btrace_cpu_vendor vendor;
-
-  /* The cpu family.  */
-  unsigned short family;
-
-  /* The cpu model.  */
-  unsigned char model;
-
-  /* The cpu stepping.  */
-  unsigned char stepping;
-};
-
-/* A BTS configuration.  */
-
-struct btrace_config_bts
-{
-  /* The size of the branch trace buffer in bytes.
-
-     This is unsigned int and not size_t since it is registered as
-     control variable for "set record btrace bts buffer-size".  */
-  unsigned int size;
-};
-
-/* An Intel Processor Trace configuration.  */
-
-struct btrace_config_pt
-{
-  /* The size of the branch trace buffer in bytes.
-
-     This is unsigned int and not size_t since it is registered as
-     control variable for "set record btrace pt buffer-size".  */
-  unsigned int size;
-};
-
-/* A branch tracing configuration.
-
-   This describes the requested configuration as well as the actually
-   obtained configuration.
-   We describe the configuration for all different formats so we can
-   easily switch between formats.  */
-
-struct btrace_config
-{
-  /* The branch tracing format.  */
-  enum btrace_format format;
-
-  /* The BTS format configuration.  */
-  struct btrace_config_bts bts;
-
-  /* The Intel Processor Trace format configuration.  */
-  struct btrace_config_pt pt;
-};
-
-/* Branch trace in BTS format.  */
-struct btrace_data_bts
-{
-  /* Branch trace is represented as a vector of branch trace blocks starting
-     with the most recent block.  This needs to be a pointer as we place
-     btrace_data_bts into a union.  */
-  std::vector<btrace_block> *blocks;
-};
-
-/* Configuration information to go with the trace data.  */
-struct btrace_data_pt_config
-{
-  /* The processor on which the trace has been collected.  */
-  struct btrace_cpu cpu;
-};
-
-/* Branch trace in Intel Processor Trace format.  */
-struct btrace_data_pt
-{
-  /* Some configuration information to go with the data.  */
-  struct btrace_data_pt_config config;
-
-  /* The trace data.  */
-  gdb_byte *data;
-
-  /* The size of DATA in bytes.  */
-  size_t size;
-};
-
-/* The branch trace data.  */
-struct btrace_data
-{
-  btrace_data () = default;
-
-  ~btrace_data ()
-  {
-    fini ();
-  }
-
-  btrace_data &operator= (btrace_data &&other)
-  {
-    if (this != &other)
-      {
-	fini ();
-	format = other.format;
-	variant = other.variant;
-	other.format = BTRACE_FORMAT_NONE;
-      }
-    return *this;
-  }
-
-  /* Return true if this is empty; false otherwise.  */
-  bool empty () const;
-
-  /* Clear this object.  */
-  void clear ();
-
-  enum btrace_format format = BTRACE_FORMAT_NONE;
-
-  union
-  {
-    /* Format == BTRACE_FORMAT_BTS.  */
-    struct btrace_data_bts bts;
-
-    /* Format == BTRACE_FORMAT_PT.  */
-    struct btrace_data_pt pt;
-  } variant;
-
-private:
-
-  DISABLE_COPY_AND_ASSIGN (btrace_data);
-
-  void fini ();
-};
-
-/* Target specific branch trace information.  */
-struct btrace_target_info;
-
-/* Enumeration of btrace read types.  */
-
-enum btrace_read_type
-{
-  /* Send all available trace.  */
-  BTRACE_READ_ALL,
-
-  /* Send all available trace, if it changed.  */
-  BTRACE_READ_NEW,
-
-  /* Send the trace since the last request.  This will fail if the trace
-     buffer overflowed.  */
-  BTRACE_READ_DELTA
-};
-
-/* Enumeration of btrace errors.  */
-
-enum btrace_error
-{
-  /* No error.  Everything is OK.  */
-  BTRACE_ERR_NONE,
-
-  /* An unknown error.  */
-  BTRACE_ERR_UNKNOWN,
-
-  /* Branch tracing is not supported on this system.  */
-  BTRACE_ERR_NOT_SUPPORTED,
-
-  /* The branch trace buffer overflowed; no delta read possible.  */
-  BTRACE_ERR_OVERFLOW
-};
-
-/* Return a string representation of FORMAT.  */
-extern const char *btrace_format_string (enum btrace_format format);
-
-/* Return an abbreviation string representation of FORMAT.  */
-extern const char *btrace_format_short_string (enum btrace_format format);
-
-/* Append the branch trace data from SRC to the end of DST.
-   Both SRC and DST must use the same format.
-   Returns zero on success; a negative number otherwise.  */
-extern int btrace_data_append (struct btrace_data *dst,
-			       const struct btrace_data *src);
-
-#endif /* COMMON_BTRACE_COMMON_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/buffer.c ./gdb/gdbsupport/buffer.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/buffer.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/buffer.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,178 +0,0 @@
-/* A simple growing buffer for GDB.
-  
-   Copyright (C) 2009-2020 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"
-#include "xml-utils.h"
-#include "buffer.h"
-#include "inttypes.h"
-void
-buffer_grow (struct buffer *buffer, const char *data, size_t size)
-{
-  char *new_buffer;
-  size_t new_buffer_size;
-
-  if (size == 0)
-    return;
-
-  new_buffer_size = buffer->buffer_size;
-
-  if (new_buffer_size == 0)
-    new_buffer_size = 1;
-
-  while (buffer->used_size + size > new_buffer_size)
-    new_buffer_size *= 2;
-  new_buffer = (char *) xrealloc (buffer->buffer, new_buffer_size);
-  memcpy (new_buffer + buffer->used_size, data, size);
-  buffer->buffer = new_buffer;
-  buffer->buffer_size = new_buffer_size;
-  buffer->used_size += size;
-}
-
-void
-buffer_free (struct buffer *buffer)
-{
-  if (!buffer)
-    return;
-
-  xfree (buffer->buffer);
-  buffer->buffer = NULL;
-  buffer->buffer_size = 0;
-  buffer->used_size = 0;
-}
-
-void
-buffer_init (struct buffer *buffer)
-{
-  memset (buffer, 0, sizeof (*buffer));
-}
-
-char*
-buffer_finish (struct buffer *buffer)
-{
-  char *ret = buffer->buffer;
-  buffer->buffer = NULL;
-  buffer->buffer_size = 0;
-  buffer->used_size = 0;
-  return ret;
-}
-
-void
-buffer_xml_printf (struct buffer *buffer, const char *format, ...)
-{
-  va_list ap;
-  const char *f;
-  const char *prev;
-  int percent = 0;
-
-  va_start (ap, format);
-
-  prev = format;
-  for (f = format; *f; f++)
-    {
-      if (percent)
-	{
-	  char buf[32];
-	  char *str = buf;
-	  const char *f_old = f;
-	  
-	  switch (*f)
-	    {
-	    case 's':
-	      str = va_arg (ap, char *);
-	      break;
-	    case 'd':
-	      sprintf (str, "%d", va_arg (ap, int));
-	      break;
-	    case 'u':
-	      sprintf (str, "%u", va_arg (ap, unsigned int));
-	      break;
-	    case 'x':
-	      sprintf (str, "%x", va_arg (ap, unsigned int));
-	      break;
-	    case 'o':
-	      sprintf (str, "%o", va_arg (ap, unsigned int));
-	      break;
-	    case 'l':
-	      f++;
-	      switch (*f)
-		{
-		case 'd':
-		  sprintf (str, "%ld", va_arg (ap, long));
-		  break;
-		case 'u':
-		  sprintf (str, "%lu", va_arg (ap, unsigned long));
-		  break;
-		case 'x':
-		  sprintf (str, "%lx", va_arg (ap, unsigned long));
-		  break;
-		case 'o':
-		  sprintf (str, "%lo", va_arg (ap, unsigned long));
-		  break;
-		case 'l':
-		  f++;
-		  switch (*f)
-		    {
-		    case 'd':
-		      sprintf (str, "%" PRId64,
-			       (int64_t) va_arg (ap, long long));
-		      break;
-		    case 'u':
-		      sprintf (str, "%" PRIu64,
-			       (uint64_t) va_arg (ap, unsigned long long));
-		      break;
-		    case 'x':
-		      sprintf (str, "%" PRIx64,
-			       (uint64_t) va_arg (ap, unsigned long long));
-		      break;
-		    case 'o':
-		      sprintf (str, "%" PRIo64,
-			       (uint64_t) va_arg (ap, unsigned long long));
-		      break;
-		    default:
-		      str = 0;
-		      break;
-		    }
-		  break;
-		default:
-		  str = 0;
-		  break;
-		}
-	      break;
-	    default:
-	      str = 0;
-	      break;
-	    }
-
-	  if (str)
-	    {
-	      buffer_grow (buffer, prev, f_old - prev - 1);
-	      std::string p = xml_escape_text (str);
-	      buffer_grow_str (buffer, p.c_str ());
-	      prev = f + 1;
-	    }
-	  percent = 0;
-	}
-      else if (*f == '%')
-	percent = 1;
-    }
-
-  buffer_grow_str (buffer, prev);
-  va_end (ap);
-}
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/buffer.h ./gdb/gdbsupport/buffer.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/buffer.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/buffer.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,68 +0,0 @@
-/* A simple growing buffer for GDB.
-  
-   Copyright (C) 2009-2020 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 COMMON_BUFFER_H
-#define COMMON_BUFFER_H
-
-struct buffer
-{
-  char *buffer;
-  size_t buffer_size; /* allocated size */
-  size_t used_size; /* actually used size */
-};
-
-/* Append DATA of size SIZE to the end of BUFFER.  Grows the buffer to
-   accommodate the new data.  */
-void buffer_grow (struct buffer *buffer, const char *data, size_t size);
-
-/* Append C to the end of BUFFER.  Grows the buffer to accommodate the
-   new data.  */
-
-static inline void
-buffer_grow_char (struct buffer *buffer, char c)
-{
-  buffer_grow (buffer, &c, 1);
-}
-
-/* Release any memory held by BUFFER.  */
-void buffer_free (struct buffer *buffer);
-
-/* Initialize BUFFER.  BUFFER holds no memory afterwards.  */
-void buffer_init (struct buffer *buffer);
-
-/* Return a pointer into BUFFER data, effectively transferring
-   ownership of the buffer memory to the caller.  Calling buffer_free
-   afterwards has no effect on the returned data.  */
-char* buffer_finish (struct buffer *buffer);
-
-/* Simple printf to buffer function.  Current implemented formatters:
-   %s - grow an xml escaped text in BUFFER.
-   %d - grow an signed integer in BUFFER.
-   %u - grow an unsigned integer in BUFFER.
-   %x - grow an unsigned integer formatted in hexadecimal in BUFFER.
-   %o - grow an unsigned integer formatted in octal in BUFFER.  */
-void buffer_xml_printf (struct buffer *buffer, const char *format, ...)
-  ATTRIBUTE_PRINTF (2, 3);
-
-#define buffer_grow_str(BUFFER,STRING)		\
-  buffer_grow (BUFFER, STRING, strlen (STRING))
-#define buffer_grow_str0(BUFFER,STRING)			\
-  buffer_grow (BUFFER, STRING, strlen (STRING) + 1)
-
-#endif /* COMMON_BUFFER_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/byte-vector.h ./gdb/gdbsupport/byte-vector.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/byte-vector.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/byte-vector.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,63 +0,0 @@
-/* Copyright (C) 2017-2020 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 COMMON_BYTE_VECTOR_H
-#define COMMON_BYTE_VECTOR_H
-
-#include "gdbsupport/def-vector.h"
-
-namespace gdb {
-
-/* byte_vector is a gdb_byte std::vector with a custom allocator that
-   unlike std::vector<gdb_byte> does not zero-initialize new elements
-   by default when the vector is created/resized.  This is what you
-   usually want when working with byte buffers, since if you're
-   creating or growing a buffer you'll most surely want to fill it in
-   with data, in which case zero-initialization would be a
-   pessimization.  For example:
-
-     gdb::byte_vector buf (some_large_size);
-     fill_with_data (buf.data (), buf.size ());
-
-   On the odd case you do need zero initialization, then you can still
-   call the overloads that specify an explicit value, like:
-
-     gdb::byte_vector buf (some_initial_size, 0);
-     buf.resize (a_bigger_size, 0);
-
-   (Or use std::vector<gdb_byte> instead.)
-
-   Note that unlike std::vector<gdb_byte>, function local
-   gdb::byte_vector objects constructed with an initial size like:
-
-     gdb::byte_vector buf (some_size);
-     fill_with_data (buf.data (), buf.size ());
-
-   usually compile down to the exact same as:
-
-     std::unique_ptr<byte[]> buf (new gdb_byte[some_size]);
-     fill_with_data (buf.get (), some_size);
-
-   with the former having the advantage of being a bit more readable,
-   and providing the whole std::vector API, if you end up needing it.
-*/
-using byte_vector = gdb::def_vector<gdb_byte>;
-using char_vector = gdb::def_vector<char>;
-
-} /* namespace gdb */
-
-#endif /* COMMON_DEF_VECTOR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/cleanups.c ./gdb/gdbsupport/cleanups.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/cleanups.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/cleanups.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,144 +0,0 @@
-/* Cleanup routines for GDB, the GNU debugger.
-
-   Copyright (C) 1986-2020 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"
-#include "cleanups.h"
-
-/* The cleanup list records things that have to be undone
-   if an error happens (descriptors to be closed, memory to be freed, etc.)
-   Each link in the chain records a function to call and an
-   argument to give it.
-
-   Use make_cleanup to add an element to the cleanup chain.
-   Use do_cleanups to do all cleanup actions back to a given
-   point in the chain.  Use discard_cleanups to remove cleanups
-   from the chain back to a given point, not doing them.
-
-   If the argument is pointer to allocated memory, then you need
-   to additionally set the 'free_arg' member to a function that will
-   free that memory.  This function will be called both when the cleanup
-   is executed and when it's discarded.  */
-
-struct cleanup
-{
-  struct cleanup *next;
-  void (*function) (void *);
-  void (*free_arg) (void *);
-  void *arg;
-};
-
-/* Used to mark the end of a cleanup chain.
-   The value is chosen so that it:
-   - is non-NULL so that make_cleanup never returns NULL,
-   - causes a segv if dereferenced
-     [though this won't catch errors that a value of, say,
-     ((struct cleanup *) -1) will]
-   - displays as something useful when printed in gdb.
-   This is const for a bit of extra robustness.
-   It is initialized to coax gcc into putting it into .rodata.
-   All fields are initialized to survive -Wextra.  */
-static const struct cleanup sentinel_cleanup = { 0, 0, 0, 0 };
-
-/* Handy macro to use when referring to sentinel_cleanup.  */
-#define SENTINEL_CLEANUP ((struct cleanup *) &sentinel_cleanup)
-
-/* Chain of cleanup actions established with make_final_cleanup,
-   to be executed when gdb exits.  */
-static struct cleanup *final_cleanup_chain = SENTINEL_CLEANUP;
-
-/* Main worker routine to create a cleanup.
-   PMY_CHAIN is a pointer to either cleanup_chain or final_cleanup_chain.
-   FUNCTION is the function to call to perform the cleanup.
-   ARG is passed to FUNCTION when called.
-   FREE_ARG, if non-NULL, is called after the cleanup is performed.
-
-   The result is a pointer to the previous chain pointer
-   to be passed later to do_cleanups or discard_cleanups.  */
-
-static struct cleanup *
-make_my_cleanup2 (struct cleanup **pmy_chain, make_cleanup_ftype *function,
-		  void *arg,  void (*free_arg) (void *))
-{
-  struct cleanup *newobj = XNEW (struct cleanup);
-  struct cleanup *old_chain = *pmy_chain;
-
-  newobj->next = *pmy_chain;
-  newobj->function = function;
-  newobj->free_arg = free_arg;
-  newobj->arg = arg;
-  *pmy_chain = newobj;
-
-  gdb_assert (old_chain != NULL);
-  return old_chain;
-}
-
-/* Worker routine to create a cleanup without a destructor.
-   PMY_CHAIN is a pointer to either cleanup_chain or final_cleanup_chain.
-   FUNCTION is the function to call to perform the cleanup.
-   ARG is passed to FUNCTION when called.
-
-   The result is a pointer to the previous chain pointer
-   to be passed later to do_cleanups or discard_cleanups.  */
-
-static struct cleanup *
-make_my_cleanup (struct cleanup **pmy_chain, make_cleanup_ftype *function,
-		 void *arg)
-{
-  return make_my_cleanup2 (pmy_chain, function, arg, NULL);
-}
-
-/* Add a new cleanup to the final cleanup_chain,
-   and return the previous chain pointer
-   to be passed later to do_cleanups or discard_cleanups.
-   Args are FUNCTION to clean up with, and ARG to pass to it.  */
-
-struct cleanup *
-make_final_cleanup (make_cleanup_ftype *function, void *arg)
-{
-  return make_my_cleanup (&final_cleanup_chain, function, arg);
-}
-
-/* Worker routine to perform cleanups.
-   PMY_CHAIN is a pointer to either cleanup_chain or final_cleanup_chain.
-   OLD_CHAIN is the result of a "make" cleanup routine.
-   Cleanups are performed until we get back to the old end of the chain.  */
-
-static void
-do_my_cleanups (struct cleanup **pmy_chain,
-		struct cleanup *old_chain)
-{
-  struct cleanup *ptr;
-
-  while ((ptr = *pmy_chain) != old_chain)
-    {
-      *pmy_chain = ptr->next;	/* Do this first in case of recursion.  */
-      (*ptr->function) (ptr->arg);
-      if (ptr->free_arg)
-	(*ptr->free_arg) (ptr->arg);
-      xfree (ptr);
-    }
-}
-
-/* Discard final cleanups and do the actions they describe.  */
-
-void
-do_final_cleanups ()
-{
-  do_my_cleanups (&final_cleanup_chain, SENTINEL_CLEANUP);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/cleanups.h ./gdb/gdbsupport/cleanups.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/cleanups.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/cleanups.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,39 +0,0 @@
-/* Cleanups.
-   Copyright (C) 1986-2020 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 COMMON_CLEANUPS_H
-#define COMMON_CLEANUPS_H
-
-/* Outside of cleanups.c, this is an opaque type.  */
-struct cleanup;
-
-/* NOTE: cagney/2000-03-04: This typedef is strictly for the
-   make_cleanup function declarations below.  Do not use this typedef
-   as a cast when passing functions into the make_cleanup() code.
-   Instead either use a bounce function or add a wrapper function.
-   Calling a f(char*) function with f(void*) is non-portable.  */
-typedef void (make_cleanup_ftype) (void *);
-
-/* Function type for the dtor in make_cleanup_dtor.  */
-typedef void (make_cleanup_dtor_ftype) (void *);
-
-extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
-
-extern void do_final_cleanups ();
-
-#endif /* COMMON_CLEANUPS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-debug.c ./gdb/gdbsupport/common-debug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-debug.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-debug.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,37 +0,0 @@
-/* Debug printing functions.
-
-   Copyright (C) 2014-2020 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"
-#include "common-debug.h"
-
-/* See gdbsupport/common-debug.h.  */
-
-bool show_debug_regs;
-
-/* See gdbsupport/common-debug.h.  */
-
-void
-debug_printf (const char *fmt, ...)
-{
-  va_list ap;
-
-  va_start (ap, fmt);
-  debug_vprintf (fmt, ap);
-  va_end (ap);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-debug.h ./gdb/gdbsupport/common-debug.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-debug.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-debug.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,41 +0,0 @@
-/* Declarations for debug printing functions.
-
-   Copyright (C) 2014-2020 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 COMMON_COMMON_DEBUG_H
-#define COMMON_COMMON_DEBUG_H
-
-/* Set to true to enable debugging of hardware breakpoint/
-   watchpoint support code.  */
-
-extern bool show_debug_regs;
-
-/* Print a formatted message to the appropriate channel for
-   debugging output for the client.  */
-
-extern void debug_printf (const char *format, ...)
-     ATTRIBUTE_PRINTF (1, 2);
-
-/* Print a formatted message to the appropriate channel for
-   debugging output for the client.  This function must be
-   provided by the client.  */
-
-extern void debug_vprintf (const char *format, va_list ap)
-     ATTRIBUTE_PRINTF (1, 0);
-
-#endif /* COMMON_COMMON_DEBUG_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-defs.h ./gdb/gdbsupport/common-defs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-defs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-defs.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,159 +0,0 @@
-/* Common definitions.
-
-   Copyright (C) 1986-2020 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 COMMON_COMMON_DEFS_H
-#define COMMON_COMMON_DEFS_H
-
-#include "config.h"
-
-#undef PACKAGE_NAME
-#undef PACKAGE_VERSION
-#undef PACKAGE_STRING
-#undef PACKAGE_TARNAME
-
-#ifdef GDBSERVER
-#include "build-gnulib-gdbserver/config.h"
-#else
-#include "../../gnulib/config.h"
-#endif
-
-#undef PACKAGE_NAME
-#undef PACKAGE_VERSION
-#undef PACKAGE_STRING
-#undef PACKAGE_TARNAME
-
-/* From:
-    https://www.gnu.org/software/gnulib/manual/html_node/stdint_002eh.html
-
-   "On some hosts that predate C++11, when using C++ one must define
-   __STDC_CONSTANT_MACROS to make visible the definitions of constant
-   macros such as INTMAX_C, and one must define __STDC_LIMIT_MACROS to
-   make visible the definitions of limit macros such as INTMAX_MAX.".
-
-   And:
-    https://www.gnu.org/software/gnulib/manual/html_node/inttypes_002eh.html
-
-   "On some hosts that predate C++11, when using C++ one must define
-   __STDC_FORMAT_MACROS to make visible the declarations of format
-   macros such as PRIdMAX."
-
-   Must do this before including any system header, since other system
-   headers may include stdint.h/inttypes.h.  */
-#define __STDC_CONSTANT_MACROS 1
-#define __STDC_LIMIT_MACROS 1
-#define __STDC_FORMAT_MACROS 1
-
-/* Some distros enable _FORTIFY_SOURCE by default, which on occasion
-   has caused build failures with -Wunused-result when a patch is
-   developed on a distro that does not enable _FORTIFY_SOURCE.  We
-   enable it here in order to try to catch these problems earlier;
-   plus this seems like a reasonable safety measure.  The check for
-   optimization is required because _FORTIFY_SOURCE only works when
-   optimization is enabled.  If _FORTIFY_SOURCE is already defined,
-   then we don't do anything.  Also, on MinGW, fortify requires
-   linking to -lssp, and to avoid the hassle of checking for
-   that and linking to it statically, we just don't define
-   _FORTIFY_SOURCE there.  */
-
-#if (!defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 \
-     && !defined(__MINGW32__))
-#define _FORTIFY_SOURCE 2
-#endif
-
-/* We don't support Windows versions before XP, so we define
-   _WIN32_WINNT correspondingly to ensure the Windows API headers
-   expose the required symbols.  */
-#if defined (__MINGW32__) || defined (__CYGWIN__)
-# ifdef _WIN32_WINNT
-#  if _WIN32_WINNT < 0x0501
-#   undef _WIN32_WINNT
-#   define _WIN32_WINNT 0x0501
-#  endif
-# else
-#  define _WIN32_WINNT 0x0501
-# endif
-#endif	/* __MINGW32__ || __CYGWIN__ */
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-#ifdef HAVE_STRINGS_H
-#include <strings.h>	/* for strcasecmp and strncasecmp */
-#endif
-#include <errno.h>
-#include <alloca.h>
-/* Must be included before pathmax.h to avoid build errors about localtime_r
-   and gmtime_r in gnulib on MinGW.  This is a gnulib bug:
-   https://lists.gnu.org/archive/html/bug-gnulib/2019-11/msg00022.html  */
-#include <time.h>
-
-
-#include "ansidecl.h"
-/* This is defined by ansidecl.h, but we prefer gnulib's version.  On
-   MinGW, gnulib might enable __USE_MINGW_ANSI_STDIO, which may or not
-   require use of attribute gnu_printf instead of printf.  gnulib
-   checks that at configure time.  Since _GL_ATTRIBUTE_FORMAT_PRINTF
-   is compatible with ATTRIBUTE_PRINTF, simply use it.  */
-#undef ATTRIBUTE_PRINTF
-#define ATTRIBUTE_PRINTF _GL_ATTRIBUTE_FORMAT_PRINTF
-
-#if GCC_VERSION >= 3004
-#define ATTRIBUTE_UNUSED_RESULT __attribute__ ((__warn_unused_result__))
-#else
-#define ATTRIBUTE_UNUSED_RESULT
-#endif
-
-#include "libiberty.h"
-#include "pathmax.h"
-#include "gdb/signals.h"
-#include "gdb_locale.h"
-#include "ptid.h"
-#include "common-types.h"
-#include "common-utils.h"
-#include "gdb_assert.h"
-#include "errors.h"
-#include "print-utils.h"
-#include "common-debug.h"
-#include "cleanups.h"
-#include "common-exceptions.h"
-#include "gdbsupport/poison.h"
-
-#define EXTERN_C extern "C"
-#define EXTERN_C_PUSH extern "C" {
-#define EXTERN_C_POP }
-
-/* Pull in gdb::unique_xmalloc_ptr.  */
-#include "gdbsupport/gdb_unique_ptr.h"
-
-/* String containing the current directory (what getwd would return).  */
-extern char *current_directory;
-
-/* sbrk on macOS is not useful for our purposes, since sbrk(0) always
-   returns the same value.  brk/sbrk on macOS is just an emulation
-   that always returns a pointer to a 4MB section reserved for
-   that.  */
-
-#if defined (HAVE_SBRK) && !__APPLE__
-#define HAVE_USEFUL_SBRK 1
-#endif
-
-#endif /* COMMON_COMMON_DEFS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-exceptions.c ./gdb/gdbsupport/common-exceptions.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-exceptions.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-exceptions.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,235 +0,0 @@
-/* Exception (throw catch) mechanism, for GDB, the GNU debugger.
-
-   Copyright (C) 1986-2020 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"
-#include "common-exceptions.h"
-#include <forward_list>
-
-/* Possible catcher states.  */
-enum catcher_state {
-  /* Initial state, a new catcher has just been created.  */
-  CATCHER_CREATED,
-  /* The catch code is running.  */
-  CATCHER_RUNNING,
-  CATCHER_RUNNING_1,
-  /* The catch code threw an exception.  */
-  CATCHER_ABORTING
-};
-
-/* Possible catcher actions.  */
-enum catcher_action {
-  CATCH_ITER,
-  CATCH_ITER_1,
-  CATCH_THROWING
-};
-
-struct catcher
-{
-  enum catcher_state state = CATCHER_CREATED;
-  /* Jump buffer pointing back at the exception handler.  */
-  jmp_buf buf;
-  /* Status buffer belonging to the exception handler.  */
-  struct gdb_exception exception;
-};
-
-/* Where to go for throw_exception().  */
-static std::forward_list<struct catcher> catchers;
-
-jmp_buf *
-exceptions_state_mc_init ()
-{
-  catchers.emplace_front ();
-  return &catchers.front ().buf;
-}
-
-/* Catcher state machine.  Returns non-zero if the m/c should be run
-   again, zero if it should abort.  */
-
-static int
-exceptions_state_mc (enum catcher_action action)
-{
-  switch (catchers.front ().state)
-    {
-    case CATCHER_CREATED:
-      switch (action)
-	{
-	case CATCH_ITER:
-	  /* Allow the code to run the catcher.  */
-	  catchers.front ().state = CATCHER_RUNNING;
-	  return 1;
-	default:
-	  internal_error (__FILE__, __LINE__, _("bad state"));
-	}
-    case CATCHER_RUNNING:
-      switch (action)
-	{
-	case CATCH_ITER:
-	  /* No error/quit has occured.  */
-	  return 0;
-	case CATCH_ITER_1:
-	  catchers.front ().state = CATCHER_RUNNING_1;
-	  return 1;
-	case CATCH_THROWING:
-	  catchers.front ().state = CATCHER_ABORTING;
-	  /* See also throw_exception.  */
-	  return 1;
-	default:
-	  internal_error (__FILE__, __LINE__, _("bad switch"));
-	}
-    case CATCHER_RUNNING_1:
-      switch (action)
-	{
-	case CATCH_ITER:
-	  /* The did a "break" from the inner while loop.  */
-	  return 0;
-	case CATCH_ITER_1:
-	  catchers.front ().state = CATCHER_RUNNING;
-	  return 0;
-	case CATCH_THROWING:
-	  catchers.front ().state = CATCHER_ABORTING;
-	  /* See also throw_exception.  */
-	  return 1;
-	default:
-	  internal_error (__FILE__, __LINE__, _("bad switch"));
-	}
-    case CATCHER_ABORTING:
-      switch (action)
-	{
-	case CATCH_ITER:
-	  {
-	    /* Exit normally if this catcher can handle this
-	       exception.  The caller analyses the func return
-	       values.  */
-	    return 0;
-	  }
-	default:
-	  internal_error (__FILE__, __LINE__, _("bad state"));
-	}
-    default:
-      internal_error (__FILE__, __LINE__, _("bad switch"));
-    }
-}
-
-int
-exceptions_state_mc_catch (struct gdb_exception *exception,
-			   int mask)
-{
-  *exception = std::move (catchers.front ().exception);
-  catchers.pop_front ();
-
-  if (exception->reason < 0)
-    {
-      if (mask & RETURN_MASK (exception->reason))
-	{
-	  /* Exit normally and let the caller handle the
-	     exception.  */
-	  return 1;
-	}
-
-      /* The caller didn't request that the event be caught, relay the
-	 event to the next exception_catch/CATCH_SJLJ.  */
-      throw_exception_sjlj (*exception);
-    }
-
-  /* No exception was thrown.  */
-  return 0;
-}
-
-int
-exceptions_state_mc_action_iter (void)
-{
-  return exceptions_state_mc (CATCH_ITER);
-}
-
-int
-exceptions_state_mc_action_iter_1 (void)
-{
-  return exceptions_state_mc (CATCH_ITER_1);
-}
-
-/* Return EXCEPTION to the nearest containing CATCH_SJLJ block.  */
-
-void
-throw_exception_sjlj (const struct gdb_exception &exception)
-{
-  /* Jump to the nearest CATCH_SJLJ block, communicating REASON to
-     that call via setjmp's return value.  Note that REASON can't be
-     zero, by definition in common-exceptions.h.  */
-  exceptions_state_mc (CATCH_THROWING);
-  enum return_reason reason = exception.reason;
-  catchers.front ().exception = exception;
-  longjmp (catchers.front ().buf, reason);
-}
-
-/* Implementation of throw_exception that uses C++ try/catch.  */
-
-void
-throw_exception (gdb_exception &&exception)
-{
-  if (exception.reason == RETURN_QUIT)
-    throw gdb_exception_quit (std::move (exception));
-  else if (exception.reason == RETURN_ERROR)
-    throw gdb_exception_error (std::move (exception));
-  else
-    gdb_assert_not_reached ("invalid return reason");
-}
-
-static void ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0)
-throw_it (enum return_reason reason, enum errors error, const char *fmt,
-	  va_list ap)
-{
-  if (reason == RETURN_QUIT)
-    throw gdb_exception_quit (fmt, ap);
-  else if (reason == RETURN_ERROR)
-    throw gdb_exception_error (error, fmt, ap);
-  else
-    gdb_assert_not_reached ("invalid return reason");
-}
-
-void
-throw_verror (enum errors error, const char *fmt, va_list ap)
-{
-  throw_it (RETURN_ERROR, error, fmt, ap);
-}
-
-void
-throw_vquit (const char *fmt, va_list ap)
-{
-  throw_it (RETURN_QUIT, GDB_NO_ERROR, fmt, ap);
-}
-
-void
-throw_error (enum errors error, const char *fmt, ...)
-{
-  va_list args;
-
-  va_start (args, fmt);
-  throw_verror (error, fmt, args);
-  va_end (args);
-}
-
-void
-throw_quit (const char *fmt, ...)
-{
-  va_list args;
-
-  va_start (args, fmt);
-  throw_vquit (fmt, args);
-  va_end (args);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-exceptions.h ./gdb/gdbsupport/common-exceptions.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-exceptions.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-exceptions.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,304 +0,0 @@
-/* Exception (throw catch) mechanism, for GDB, the GNU debugger.
-
-   Copyright (C) 1986-2020 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 COMMON_COMMON_EXCEPTIONS_H
-#define COMMON_COMMON_EXCEPTIONS_H
-
-#include <setjmp.h>
-#include <new>
-#include <memory>
-#include <string>
-
-/* Reasons for calling throw_exceptions().  NOTE: all reason values
-   must be different from zero.  enum value 0 is reserved for internal
-   use as the return value from an initial setjmp().  */
-
-enum return_reason
-  {
-    /* User interrupt.  */
-    RETURN_QUIT = -2,
-    /* Any other error.  */
-    RETURN_ERROR
-  };
-
-#define RETURN_MASK(reason)	(1 << (int)(-reason))
-
-typedef enum
-{
-  RETURN_MASK_QUIT = RETURN_MASK (RETURN_QUIT),
-  RETURN_MASK_ERROR = RETURN_MASK (RETURN_ERROR),
-  RETURN_MASK_ALL = (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
-} return_mask;
-
-/* Describe all exceptions.  */
-
-enum errors {
-  GDB_NO_ERROR,
-
-  /* Any generic error, the corresponding text is in
-     exception.message.  */
-  GENERIC_ERROR,
-
-  /* Something requested was not found.  */
-  NOT_FOUND_ERROR,
-
-  /* Thread library lacks support necessary for finding thread local
-     storage.  */
-  TLS_NO_LIBRARY_SUPPORT_ERROR,
-
-  /* Load module not found while attempting to find thread local storage.  */
-  TLS_LOAD_MODULE_NOT_FOUND_ERROR,
-
-  /* Thread local storage has not been allocated yet.  */
-  TLS_NOT_ALLOCATED_YET_ERROR,
-
-  /* Something else went wrong while attempting to find thread local
-     storage.  The ``struct gdb_exception'' message field provides
-     more detail.  */
-  TLS_GENERIC_ERROR,
-
-  /* Problem parsing an XML document.  */
-  XML_PARSE_ERROR,
-
-  /* Error accessing memory.  */
-  MEMORY_ERROR,
-
-  /* Value not available.  E.g., a register was not collected in a
-     traceframe.  */
-  NOT_AVAILABLE_ERROR,
-
-  /* Value was optimized out.  Note: if the value was a register, this
-     means the register was not saved in the frame.  */
-  OPTIMIZED_OUT_ERROR,
-
-  /* DW_OP_entry_value resolving failed.  */
-  NO_ENTRY_VALUE_ERROR,
-
-  /* Target throwing an error has been closed.  Current command should be
-     aborted as the inferior state is no longer valid.  */
-  TARGET_CLOSE_ERROR,
-
-  /* An undefined command was executed.  */
-  UNDEFINED_COMMAND_ERROR,
-
-  /* Requested feature, method, mechanism, etc. is not supported.  */
-  NOT_SUPPORTED_ERROR,
-
-  /* The number of candidates generated during line completion has
-     reached the user's specified limit.  This isn't an error, this exception
-     is used to halt searching for more completions, but for consistency
-     "_ERROR" is appended to the name.  */
-  MAX_COMPLETIONS_REACHED_ERROR,
-
-  /* Add more errors here.  */
-  NR_ERRORS
-};
-
-struct gdb_exception
-{
-  gdb_exception ()
-    : reason ((enum return_reason) 0),
-      error (GDB_NO_ERROR)
-  {
-  }
-
-  gdb_exception (enum return_reason r, enum errors e)
-    : reason (r),
-      error (e)
-  {
-  }
-
-  gdb_exception (enum return_reason r, enum errors e,
-		 const char *fmt, va_list ap)
-    ATTRIBUTE_PRINTF (4, 0)
-    : reason (r),
-      error (e),
-      message (std::make_shared<std::string> (string_vprintf (fmt, ap)))
-  {
-  }
-
-  /* The move constructor exists so that we can mark it "noexcept",
-     which is a good practice for any sort of exception object.  */
-  explicit gdb_exception (gdb_exception &&other) noexcept = default;
-
-  /* The copy constructor exists so that we can mark it "noexcept",
-     which is a good practice for any sort of exception object.  */
-  gdb_exception (const gdb_exception &other) noexcept
-    : reason (other.reason),
-      error (other.error),
-      message (other.message)
-  {
-  }
-
-  /* The assignment operator exists so that we can mark it "noexcept",
-     which is a good practice for any sort of exception object.  */
-  gdb_exception &operator= (const gdb_exception &other) noexcept
-  {
-    reason = other.reason;
-    error = other.error;
-    message = other.message;
-    return *this;
-  }
-
-  gdb_exception &operator= (gdb_exception &&other) noexcept = default;
-
-  /* Return the contents of the exception message, as a C string.  The
-     string remains owned by the exception object.  */
-  const char *what () const noexcept
-  {
-    return message->c_str ();
-  }
-
-  enum return_reason reason;
-  enum errors error;
-  std::shared_ptr<std::string> message;
-};
-
-/* Functions to drive the sjlj-based exceptions state machine.  Though
-   declared here by necessity, these functions should be considered
-   internal to the exceptions subsystem and not used other than via
-   the TRY/CATCH (or TRY_SJLJ/CATCH_SJLJ) macros defined below.  */
-
-extern jmp_buf *exceptions_state_mc_init (void);
-extern int exceptions_state_mc_action_iter (void);
-extern int exceptions_state_mc_action_iter_1 (void);
-extern int exceptions_state_mc_catch (struct gdb_exception *, int);
-
-/* Macro to wrap up standard try/catch behavior.
-
-   The double loop lets us correctly handle code "break"ing out of the
-   try catch block.  (It works as the "break" only exits the inner
-   "while" loop, the outer for loop detects this handling it
-   correctly.)  Of course "return" and "goto" are not so lucky.
-
-   For instance:
-
-   *INDENT-OFF*
-
-   TRY_SJLJ
-     {
-     }
-   CATCH_SJLJ (e, RETURN_MASK_ERROR)
-     {
-       switch (e.reason)
-         {
-           case RETURN_ERROR: ...
-         }
-     }
-   END_CATCH_SJLJ
-
-   The SJLJ variants are needed in some cases where gdb exceptions
-   need to cross third-party library code compiled without exceptions
-   support (e.g., readline).  */
-
-#define TRY_SJLJ \
-     { \
-       jmp_buf *buf = \
-	 exceptions_state_mc_init (); \
-       setjmp (*buf); \
-     } \
-     while (exceptions_state_mc_action_iter ()) \
-       while (exceptions_state_mc_action_iter_1 ())
-
-#define CATCH_SJLJ(EXCEPTION, MASK)				\
-  {							\
-    struct gdb_exception EXCEPTION;				\
-    if (exceptions_state_mc_catch (&(EXCEPTION), MASK))
-
-#define END_CATCH_SJLJ				\
-  }
-
-/* The exception types client code may catch.  They're just shims
-   around gdb_exception that add nothing but type info.  Which is used
-   is selected depending on the MASK argument passed to CATCH.  */
-
-struct gdb_exception_error : public gdb_exception
-{
-  gdb_exception_error (enum errors e, const char *fmt, va_list ap)
-    ATTRIBUTE_PRINTF (3, 0)
-    : gdb_exception (RETURN_ERROR, e, fmt, ap)
-  {
-  }
-
-  explicit gdb_exception_error (gdb_exception &&ex) noexcept
-    : gdb_exception (std::move (ex))
-  {
-    gdb_assert (ex.reason == RETURN_ERROR);
-  }
-};
-
-struct gdb_exception_quit : public gdb_exception
-{
-  gdb_exception_quit (const char *fmt, va_list ap)
-    ATTRIBUTE_PRINTF (2, 0)
-    : gdb_exception (RETURN_QUIT, GDB_NO_ERROR, fmt, ap)
-  {
-  }
-
-  explicit gdb_exception_quit (gdb_exception &&ex) noexcept
-    : gdb_exception (std::move (ex))
-  {
-    gdb_assert (ex.reason == RETURN_QUIT);
-  }
-};
-
-/* An exception type that inherits from both std::bad_alloc and a gdb
-   exception.  This is necessary because operator new can only throw
-   std::bad_alloc, and OTOH, we want exceptions thrown due to memory
-   allocation error to be caught by all the CATCH/RETURN_MASK_ALL
-   spread around the codebase.  */
-
-struct gdb_quit_bad_alloc
-  : public gdb_exception_quit,
-    public std::bad_alloc
-{
-  explicit gdb_quit_bad_alloc (gdb_exception &&ex) noexcept
-    : gdb_exception_quit (std::move (ex)),
-      std::bad_alloc ()
-  {
-  }
-};
-
-/* *INDENT-ON* */
-
-/* Throw an exception (as described by "struct gdb_exception"),
-   landing in the inner most containing exception handler established
-   using TRY/CATCH.  */
-extern void throw_exception (gdb_exception &&exception)
-     ATTRIBUTE_NORETURN;
-
-/* Throw an exception by executing a LONG JUMP to the inner most
-   containing exception handler established using TRY_SJLJ.  Necessary
-   in some cases where we need to throw GDB exceptions across
-   third-party library code (e.g., readline).  */
-extern void throw_exception_sjlj (const struct gdb_exception &exception)
-     ATTRIBUTE_NORETURN;
-
-/* Convenience wrappers around throw_exception that throw GDB
-   errors.  */
-extern void throw_verror (enum errors, const char *fmt, va_list ap)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 0);
-extern void throw_vquit (const char *fmt, va_list ap)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
-extern void throw_error (enum errors error, const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 3);
-extern void throw_quit (const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
-
-#endif /* COMMON_COMMON_EXCEPTIONS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-gdbthread.h ./gdb/gdbsupport/common-gdbthread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-gdbthread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-gdbthread.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,25 +0,0 @@
-/* Common multi-process/thread control defs for GDB and gdbserver.
-   Copyright (C) 1987-2020 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 COMMON_COMMON_GDBTHREAD_H
-#define COMMON_COMMON_GDBTHREAD_H
-
-/* Switch from one thread to another.  */
-extern void switch_to_thread (ptid_t ptid);
-
-#endif /* COMMON_COMMON_GDBTHREAD_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-inferior.c ./gdb/gdbsupport/common-inferior.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-inferior.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-inferior.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,26 +0,0 @@
-/* Functions to deal with the inferior being executed on GDB or
-   GDBserver.
-
-   Copyright (C) 2019-2020 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 "gdbsupport/common-defs.h"
-#include "gdbsupport/common-inferior.h"
-
-/* See common-inferior.h.  */
-
-bool startup_with_shell = true;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-inferior.h ./gdb/gdbsupport/common-inferior.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-inferior.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-inferior.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,61 +0,0 @@
-/* Functions to deal with the inferior being executed on GDB or
-   GDBserver.
-
-   Copyright (C) 1986-2020 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 COMMON_COMMON_INFERIOR_H
-#define COMMON_COMMON_INFERIOR_H
-
-/* Return the exec wrapper to be used when starting the inferior, or NULL
-   otherwise.  */
-extern const char *get_exec_wrapper ();
-
-/* Return the name of the executable file as a string.
-   ERR nonzero means get error if there is none specified;
-   otherwise return 0 in that case.  */
-extern char *get_exec_file (int err);
-
-/* Return the inferior's current working directory.  If nothing has
-   been set, then return NULL.  */
-extern const char *get_inferior_cwd ();
-
-/* Set the inferior current working directory.  If CWD is NULL, unset
-   the directory.  */
-extern void set_inferior_cwd (const char *cwd);
-
-/* Whether to start up the debuggee under a shell.
-
-   If startup-with-shell is set, GDB's "run" will attempt to start up
-   the debuggee under a shell.  This also happens when using GDBserver
-   under extended remote mode.
-
-   This is in order for argument-expansion to occur.  E.g.,
-
-   (gdb) run *
-
-   The "*" gets expanded by the shell into a list of files.
-
-   While this is a nice feature, it may be handy to bypass the shell
-   in some cases.  To disable this feature, do "set startup-with-shell
-   false".
-
-   The catch-exec traps expected during start-up will be one more if
-   the target is started up with a shell.  */
-extern bool startup_with_shell;
-
-#endif /* COMMON_COMMON_INFERIOR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common.m4 ./gdb/gdbsupport/common.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common.m4	1970-01-01 00:00:00.000000000 +0000
@@ -1,81 +0,0 @@
-dnl Autoconf configure snippets for common.
-dnl Copyright (C) 1995-2020 Free Software Foundation, Inc.
-dnl
-dnl This file is part of GDB.
-dnl 
-dnl This program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 3 of the License, or
-dnl (at your option) any later version.
-dnl
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-dnl GNU General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-dnl Invoke configury needed by the files in 'common'.
-AC_DEFUN([GDB_AC_COMMON], [
-  AC_HEADER_STDC
-  AC_FUNC_ALLOCA
-
-  dnl Note that this requires codeset.m4, which is included
-  dnl by the users of common.m4.
-  AM_LANGINFO_CODESET
-
-  AC_CHECK_HEADERS(linux/perf_event.h locale.h memory.h signal.h dnl
-		   sys/resource.h sys/socket.h dnl
-		   sys/un.h sys/wait.h dnl
-		   thread_db.h wait.h dnl
-		   termios.h dnl
-		   dlfcn.h)
-
-  AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 socketpair sigaction \
-		  sigprocmask])
-
-  AC_CHECK_DECLS([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,
-[AC_TRY_COMPILE([
-#include <setjmp.h>
-], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
-gdb_cv_func_sigsetjmp=yes, gdb_cv_func_sigsetjmp=no)])
-if test "$gdb_cv_func_sigsetjmp" = "yes"; then
-  AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
-fi
-])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-regcache.c ./gdb/gdbsupport/common-regcache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-regcache.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-regcache.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,36 +0,0 @@
-/* Cache and manage the values of registers for GDB, the GNU debugger.
-
-   Copyright (C) 2015-2020 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"
-#include "common-regcache.h"
-
-/* Return the register's value or throw if it's not available.  */
-
-ULONGEST
-regcache_raw_get_unsigned (struct regcache *regcache, int regnum)
-{
-  ULONGEST value;
-  enum register_status status;
-
-  status = regcache_raw_read_unsigned (regcache, regnum, &value);
-  if (status == REG_UNAVAILABLE)
-    throw_error (NOT_AVAILABLE_ERROR,
-		 _("Register %d is not available"), regnum);
-  return value;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-regcache.h ./gdb/gdbsupport/common-regcache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-regcache.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-regcache.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,85 +0,0 @@
-/* Cache and manage the values of registers
-
-   Copyright (C) 2014-2020 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 COMMON_COMMON_REGCACHE_H
-#define COMMON_COMMON_REGCACHE_H
-
-/* This header is a stopgap until we have an independent regcache.  */
-
-enum register_status : signed char
-  {
-    /* The register value is not in the cache, and we don't know yet
-       whether it's available in the target (or traceframe).  */
-    REG_UNKNOWN = 0,
-
-    /* The register value is valid and cached.  */
-    REG_VALID = 1,
-
-    /* The register value is unavailable.  E.g., we're inspecting a
-       traceframe, and this register wasn't collected.  Note that this
-       is different a different "unavailable" from saying the register
-       does not exist in the target's architecture --- in that case,
-       the target should have given us a target description that does
-       not include the register in the first place.  */
-    REG_UNAVAILABLE = -1
-  };
-
-/* Return a pointer to the register cache associated with the
-   thread specified by PTID.  This function must be provided by
-   the client.  */
-
-extern struct regcache *get_thread_regcache_for_ptid (ptid_t ptid);
-
-/* Return the size of register numbered N in REGCACHE.  This function
-   must be provided by the client.  */
-
-extern int regcache_register_size (const struct regcache *regcache, int n);
-
-/* Read the PC register.  This function must be provided by the
-   client.  */
-
-extern CORE_ADDR regcache_read_pc (struct regcache *regcache);
-
-/* Read a raw register into a unsigned integer.  */
-extern enum register_status regcache_raw_read_unsigned
-  (struct regcache *regcache, int regnum, ULONGEST *val);
-
-ULONGEST regcache_raw_get_unsigned (struct regcache *regcache, int regnum);
-
-struct reg_buffer_common
-{
-  virtual ~reg_buffer_common () = default;
-
-  /* Get the availability status of the value of register REGNUM in this
-     buffer.  */
-  virtual register_status get_register_status (int regnum) const = 0;
-
-  /* Supply register REGNUM, whose contents are stored in BUF, to REGCACHE.  */
-  virtual void raw_supply (int regnum, const void *buf) = 0;
-
-  /* Collect register REGNUM from REGCACHE and store its contents in BUF.  */
-  virtual void raw_collect (int regnum, void *buf) const = 0;
-
-  /* Compare the contents of the register stored in the regcache (ignoring the
-     first OFFSET bytes) to the contents of BUF (without any offset).  Returns
-     true if the same.  */
-  virtual bool raw_compare (int regnum, const void *buf, int offset) const = 0;
-};
-
-#endif /* COMMON_COMMON_REGCACHE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-types.h ./gdb/gdbsupport/common-types.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-types.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-types.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,66 +0,0 @@
-/* Declarations for common types.
-
-   Copyright (C) 1986-2020 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 COMMON_COMMON_TYPES_H
-#define COMMON_COMMON_TYPES_H
-
-#ifdef GDBSERVER
-
-/* * A byte from the program being debugged.  */
-typedef unsigned char gdb_byte;
-
-typedef unsigned long long CORE_ADDR;
-
-typedef long long LONGEST;
-typedef unsigned long long ULONGEST;
-
-#else /* GDBSERVER */
-
-#include "bfd.h"
-
-/* * A byte from the program being debugged.  */
-typedef bfd_byte gdb_byte;
-
-/* * An address in the program being debugged.  Host byte order.  */
-typedef bfd_vma CORE_ADDR;
-
-/* This is to make sure that LONGEST is at least as big as CORE_ADDR.  */
-
-#ifdef BFD64
-
-typedef BFD_HOST_64_BIT LONGEST;
-typedef BFD_HOST_U_64_BIT ULONGEST;
-
-#else /* No BFD64 */
-
-typedef long long LONGEST;
-typedef unsigned long long ULONGEST;
-
-#endif /* No BFD64 */
-#endif /* GDBSERVER */
-
-/* * The largest CORE_ADDR value.  */
-#define CORE_ADDR_MAX (~(CORE_ADDR) 0)
-
-/* * The largest ULONGEST value.  */
-#define ULONGEST_MAX (~(ULONGEST) 0)
-
-enum tribool { TRIBOOL_UNKNOWN = -1, TRIBOOL_FALSE = 0, TRIBOOL_TRUE = 1 };
-
-#endif /* COMMON_COMMON_TYPES_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-utils.c ./gdb/gdbsupport/common-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-utils.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-utils.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,417 +0,0 @@
-/* Shared general utility routines for GDB, the GNU debugger.
-
-   Copyright (C) 1986-2020 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"
-#include "common-utils.h"
-#include "host-defs.h"
-#include <ctype.h>
-
-void *
-xzalloc (size_t size)
-{
-  return xcalloc (1, size);
-}
-
-/* Like asprintf/vasprintf but get an internal_error if the call
-   fails. */
-
-char *
-xstrprintf (const char *format, ...)
-{
-  char *ret;
-  va_list args;
-
-  va_start (args, format);
-  ret = xstrvprintf (format, args);
-  va_end (args);
-  return ret;
-}
-
-char *
-xstrvprintf (const char *format, va_list ap)
-{
-  char *ret = NULL;
-  int status = vasprintf (&ret, format, ap);
-
-  /* NULL is returned when there was a memory allocation problem, or
-     any other error (for instance, a bad format string).  A negative
-     status (the printed length) with a non-NULL buffer should never
-     happen, but just to be sure.  */
-  if (ret == NULL || status < 0)
-    internal_error (__FILE__, __LINE__, _("vasprintf call failed"));
-  return ret;
-}
-
-int
-xsnprintf (char *str, size_t size, const char *format, ...)
-{
-  va_list args;
-  int ret;
-
-  va_start (args, format);
-  ret = vsnprintf (str, size, format, args);
-  gdb_assert (ret < size);
-  va_end (args);
-
-  return ret;
-}
-
-/* See documentation in common-utils.h.  */
-
-std::string
-string_printf (const char* fmt, ...)
-{
-  va_list vp;
-  int size;
-
-  va_start (vp, fmt);
-  size = vsnprintf (NULL, 0, fmt, vp);
-  va_end (vp);
-
-  std::string str (size, '\0');
-
-  /* C++11 and later guarantee std::string uses contiguous memory and
-     always includes the terminating '\0'.  */
-  va_start (vp, fmt);
-  vsprintf (&str[0], fmt, vp);
-  va_end (vp);
-
-  return str;
-}
-
-/* See documentation in common-utils.h.  */
-
-std::string
-string_vprintf (const char* fmt, va_list args)
-{
-  va_list vp;
-  size_t size;
-
-  va_copy (vp, args);
-  size = vsnprintf (NULL, 0, fmt, vp);
-  va_end (vp);
-
-  std::string str (size, '\0');
-
-  /* C++11 and later guarantee std::string uses contiguous memory and
-     always includes the terminating '\0'.  */
-  vsprintf (&str[0], fmt, args);
-
-  return str;
-}
-
-
-/* See documentation in common-utils.h.  */
-
-void
-string_appendf (std::string &str, const char *fmt, ...)
-{
-  va_list vp;
-
-  va_start (vp, fmt);
-  string_vappendf (str, fmt, vp);
-  va_end (vp);
-}
-
-
-/* See documentation in common-utils.h.  */
-
-void
-string_vappendf (std::string &str, const char *fmt, va_list args)
-{
-  va_list vp;
-  int grow_size;
-
-  va_copy (vp, args);
-  grow_size = vsnprintf (NULL, 0, fmt, vp);
-  va_end (vp);
-
-  size_t curr_size = str.size ();
-  str.resize (curr_size + grow_size);
-
-  /* C++11 and later guarantee std::string uses contiguous memory and
-     always includes the terminating '\0'.  */
-  vsprintf (&str[curr_size], fmt, args);
-}
-
-char *
-savestring (const char *ptr, size_t len)
-{
-  char *p = (char *) xmalloc (len + 1);
-
-  memcpy (p, ptr, len);
-  p[len] = 0;
-  return p;
-}
-
-/* See documentation in common-utils.h.  */
-
-std::string
-extract_string_maybe_quoted (const char **arg)
-{
-  bool squote = false;
-  bool dquote = false;
-  bool bsquote = false;
-  std::string result;
-  const char *p = *arg;
-
-  /* Find the start of the argument.  */
-  p = skip_spaces (p);
-
-  /* Parse p similarly to gdb_argv buildargv function.  */
-  while (*p != '\0')
-    {
-      if (isspace (*p) && !squote && !dquote && !bsquote)
-	break;
-      else
-	{
-	  if (bsquote)
-	    {
-	      bsquote = false;
-	      result += *p;
-	    }
-	  else if (*p == '\\')
-	    bsquote = true;
-	  else if (squote)
-	    {
-	      if (*p == '\'')
-		squote = false;
-	      else
-		result += *p;
-	    }
-	  else if (dquote)
-	    {
-	      if (*p == '"')
-		dquote = false;
-	      else
-		result += *p;
-	    }
-	  else
-	    {
-	      if (*p == '\'')
-		squote = true;
-	      else if (*p == '"')
-		dquote = true;
-	      else
-		result += *p;
-	    }
-	  p++;
-	}
-    }
-
-  *arg = p;
-  return result;
-}
-
-/* The bit offset of the highest byte in a ULONGEST, for overflow
-   checking.  */
-
-#define HIGH_BYTE_POSN ((sizeof (ULONGEST) - 1) * HOST_CHAR_BIT)
-
-/* True (non-zero) iff DIGIT is a valid digit in radix BASE,
-   where 2 <= BASE <= 36.  */
-
-static int
-is_digit_in_base (unsigned char digit, int base)
-{
-  if (!isalnum (digit))
-    return 0;
-  if (base <= 10)
-    return (isdigit (digit) && digit < base + '0');
-  else
-    return (isdigit (digit) || tolower (digit) < base - 10 + 'a');
-}
-
-static int
-digit_to_int (unsigned char c)
-{
-  if (isdigit (c))
-    return c - '0';
-  else
-    return tolower (c) - 'a' + 10;
-}
-
-/* As for strtoul, but for ULONGEST results.  */
-
-ULONGEST
-strtoulst (const char *num, const char **trailer, int base)
-{
-  unsigned int high_part;
-  ULONGEST result;
-  int minus = 0;
-  int i = 0;
-
-  /* Skip leading whitespace.  */
-  while (isspace (num[i]))
-    i++;
-
-  /* Handle prefixes.  */
-  if (num[i] == '+')
-    i++;
-  else if (num[i] == '-')
-    {
-      minus = 1;
-      i++;
-    }
-
-  if (base == 0 || base == 16)
-    {
-      if (num[i] == '0' && (num[i + 1] == 'x' || num[i + 1] == 'X'))
-	{
-	  i += 2;
-	  if (base == 0)
-	    base = 16;
-	}
-    }
-
-  if (base == 0 && num[i] == '0')
-    base = 8;
-
-  if (base == 0)
-    base = 10;
-
-  if (base < 2 || base > 36)
-    {
-      errno = EINVAL;
-      return 0;
-    }
-
-  result = high_part = 0;
-  for (; is_digit_in_base (num[i], base); i += 1)
-    {
-      result = result * base + digit_to_int (num[i]);
-      high_part = high_part * base + (unsigned int) (result >> HIGH_BYTE_POSN);
-      result &= ((ULONGEST) 1 << HIGH_BYTE_POSN) - 1;
-      if (high_part > 0xff)
-	{
-	  errno = ERANGE;
-	  result = ~ (ULONGEST) 0;
-	  high_part = 0;
-	  minus = 0;
-	  break;
-	}
-    }
-
-  if (trailer != NULL)
-    *trailer = &num[i];
-
-  result = result + ((ULONGEST) high_part << HIGH_BYTE_POSN);
-  if (minus)
-    return -result;
-  else
-    return result;
-}
-
-/* See documentation in common-utils.h.  */
-
-char *
-skip_spaces (char *chp)
-{
-  if (chp == NULL)
-    return NULL;
-  while (*chp && isspace (*chp))
-    chp++;
-  return chp;
-}
-
-/* A const-correct version of the above.  */
-
-const char *
-skip_spaces (const char *chp)
-{
-  if (chp == NULL)
-    return NULL;
-  while (*chp && isspace (*chp))
-    chp++;
-  return chp;
-}
-
-/* See documentation in common-utils.h.  */
-
-const char *
-skip_to_space (const char *chp)
-{
-  if (chp == NULL)
-    return NULL;
-  while (*chp && !isspace (*chp))
-    chp++;
-  return chp;
-}
-
-/* See documentation in common-utils.h.  */
-
-char *
-skip_to_space (char *chp)
-{
-  return (char *) skip_to_space ((const char *) chp);
-}
-
-/* See gdbsupport/common-utils.h.  */
-
-void
-free_vector_argv (std::vector<char *> &v)
-{
-  for (char *el : v)
-    xfree (el);
-
-  v.clear ();
-}
-
-/* See gdbsupport/common-utils.h.  */
-
-std::string
-stringify_argv (const std::vector<char *> &args)
-{
-  std::string ret;
-
-  if (!args.empty () && args[0] != NULL)
-    {
-      for (auto s : args)
-	if (s != NULL)
-	  {
-	    ret += s;
-	    ret += ' ';
-	  }
-
-      /* Erase the last whitespace.  */
-      ret.erase (ret.end () - 1);
-    }
-
-  return ret;
-}
-
-/* See gdbsupport/common-utils.h.  */
-
-ULONGEST
-align_up (ULONGEST v, int n)
-{
-  /* Check that N is really a power of two.  */
-  gdb_assert (n && (n & (n-1)) == 0);
-  return (v + n - 1) & -n;
-}
-
-/* See gdbsupport/common-utils.h.  */
-
-ULONGEST
-align_down (ULONGEST v, int n)
-{
-  /* Check that N is really a power of two.  */
-  gdb_assert (n && (n & (n-1)) == 0);
-  return (v & -n);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-utils.h ./gdb/gdbsupport/common-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/common-utils.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/common-utils.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,202 +0,0 @@
-/* Shared general utility routines for GDB, the GNU debugger.
-
-   Copyright (C) 1986-2020 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 COMMON_COMMON_UTILS_H
-#define COMMON_COMMON_UTILS_H
-
-#include <string>
-#include <vector>
-
-#include "poison.h"
-
-/* If possible, define FUNCTION_NAME, a macro containing the name of
-   the function being defined.  Since this macro may not always be
-   defined, all uses must be protected by appropriate macro definition
-   checks (Eg: "#ifdef FUNCTION_NAME").
-
-   Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
-   which contains the name of the function currently being defined.
-   This is broken in G++ before version 2.6.
-   C9x has a similar variable called __func__, but prefer the GCC one since
-   it demangles C++ function names.  */
-#if (GCC_VERSION >= 2004)
-#define FUNCTION_NAME		__PRETTY_FUNCTION__
-#else
-#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
-#define FUNCTION_NAME		__func__  /* ARI: func */
-#endif
-#endif
-
-#include "gdb_string_view.h"
-
-/* xmalloc(), xrealloc() and xcalloc() have already been declared in
-   "libiberty.h". */
-
-/* Like xmalloc, but zero the memory.  */
-void *xzalloc (size_t);
-
-template <typename T>
-static void
-xfree (T *ptr)
-{
-  static_assert (IsFreeable<T>::value, "Trying to use xfree with a non-POD \
-data type.  Use operator delete instead.");
-
-  if (ptr != NULL)
-    free (ptr);		/* ARI: free */
-}
-
-
-/* Like asprintf and vasprintf, but return the string, throw an error
-   if no memory.  */
-char *xstrprintf (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
-char *xstrvprintf (const char *format, va_list ap)
-     ATTRIBUTE_PRINTF (1, 0);
-
-/* Like snprintf, but throw an error if the output buffer is too small.  */
-int xsnprintf (char *str, size_t size, const char *format, ...)
-     ATTRIBUTE_PRINTF (3, 4);
-
-/* Returns a std::string built from a printf-style format string.  */
-std::string string_printf (const char* fmt, ...)
-  ATTRIBUTE_PRINTF (1, 2);
-
-/* Like string_printf, but takes a va_list.  */
-std::string string_vprintf (const char* fmt, va_list args)
-  ATTRIBUTE_PRINTF (1, 0);
-
-/* Like string_printf, but appends to DEST instead of returning a new
-   std::string.  */
-void string_appendf (std::string &dest, const char* fmt, ...)
-  ATTRIBUTE_PRINTF (2, 3);
-
-/* Like string_appendf, but takes a va_list.  */
-void string_vappendf (std::string &dest, const char* fmt, va_list args)
-  ATTRIBUTE_PRINTF (2, 0);
-
-/* Make a copy of the string at PTR with LEN characters
-   (and add a null character at the end in the copy).
-   Uses malloc to get the space.  Returns the address of the copy.  */
-
-char *savestring (const char *ptr, size_t len);
-
-/* Extract the next word from ARG.  The next word is defined as either,
-   everything up to the next space, or, if the next word starts with either
-   a single or double quote, then everything up to the closing quote.  The
-   enclosing quotes are not returned in the result string.  The pointer in
-   ARG is updated to point to the first character after the end of the
-   word, or, for quoted words, the first character after the closing
-   quote.  */
-
-std::string extract_string_maybe_quoted (const char **arg);
-
-/* The strerror() function can return NULL for errno values that are
-   out of range.  Provide a "safe" version that always returns a
-   printable string.  This version is also thread-safe.  */
-
-extern const char *safe_strerror (int);
-
-/* Return true if the start of STRING matches PATTERN, false otherwise.  */
-
-static inline bool
-startswith (const char *string, const char *pattern)
-{
-  return strncmp (string, pattern, strlen (pattern)) == 0;
-}
-
-/* Version of startswith that takes string_view arguments.  See comment
-   above.  */
-
-static inline bool
-startswith (gdb::string_view string, gdb::string_view pattern)
-{
-  return (string.length () >= pattern.length ()
-	  && strncmp (string.data (), pattern.data (), pattern.length ()) == 0);
-}
-
-ULONGEST strtoulst (const char *num, const char **trailer, int base);
-
-/* Skip leading whitespace characters in INP, returning an updated
-   pointer.  If INP is NULL, return NULL.  */
-
-extern char *skip_spaces (char *inp);
-
-/* A const-correct version of the above.  */
-
-extern const char *skip_spaces (const char *inp);
-
-/* Skip leading non-whitespace characters in INP, returning an updated
-   pointer.  If INP is NULL, return NULL.  */
-
-extern char *skip_to_space (char *inp);
-
-/* A const-correct version of the above.  */
-
-extern const char *skip_to_space (const char *inp);
-
-/* Assumes that V is an argv for a program, and iterates through
-   freeing all the elements.  */
-extern void free_vector_argv (std::vector<char *> &v);
-
-/* Given a vector of arguments ARGV, return a string equivalent to
-   joining all the arguments with a whitespace separating them.  */
-extern std::string stringify_argv (const std::vector<char *> &argv);
-
-/* Return true if VALUE is in [LOW, HIGH].  */
-
-template <typename T>
-static bool
-in_inclusive_range (T value, T low, T high)
-{
-  return value >= low && value <= high;
-}
-
-/* Ensure that V is aligned to an N byte boundary (B's assumed to be a
-   power of 2).  Round up/down when necessary.  Examples of correct
-   use include:
-
-    addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
-    write_memory (addr, value, len);
-    addr += len;
-
-   and:
-
-    sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
-    write_memory (sp, value, len);
-
-   Note that uses such as:
-
-    write_memory (addr, value, len);
-    addr += align_up (len, 8);
-
-   and:
-
-    sp -= align_up (len, 8);
-    write_memory (sp, value, len);
-
-   are typically not correct as they don't ensure that the address (SP
-   or ADDR) is correctly aligned (relying on previous alignment to
-   keep things right).  This is also why the methods are called
-   "align_..." instead of "round_..." as the latter reads better with
-   this incorrect coding style.  */
-
-extern ULONGEST align_up (ULONGEST v, int n);
-extern ULONGEST align_down (ULONGEST v, int n);
-
-#endif /* COMMON_COMMON_UTILS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/create-version.sh ./gdb/gdbsupport/create-version.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/create-version.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/create-version.sh	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
-#!/bin/sh
-
-# Copyright (C) 1989-2020 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/>.
-
-# Create version.c from version.in.
-# Usage:
-#    create-version.sh PATH-TO-GDB-SRCDIR HOST_ALIAS \
-#        TARGET_ALIAS OUTPUT-FILE-NAME
-
-srcdir="$1"
-host_alias="$2"
-target_alias="$3"
-output="$4"
-
-rm -f version.c-tmp $output version.tmp
-date=`sed -n -e 's/^.* BFD_VERSION_DATE \(.*\)$/\1/p' $srcdir/../bfd/version.h`
-sed -e "s/DATE/$date/" < $srcdir/version.in > version.tmp
-echo '#include "gdbsupport/version.h"' >> version.c-tmp
-echo 'const char version[] = "'"`sed q version.tmp`"'";' >> version.c-tmp
-echo 'const char host_name[] = "'"$host_alias"'";' >> version.c-tmp
-echo 'const char target_name[] = "'"$target_alias"'";' >> version.c-tmp
-mv version.c-tmp $output
-rm -f version.tmp
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/default-init-alloc.h ./gdb/gdbsupport/default-init-alloc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/default-init-alloc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/default-init-alloc.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,67 +0,0 @@
-/* Copyright (C) 2017-2020 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 COMMON_DEFAULT_INIT_ALLOC_H
-#define COMMON_DEFAULT_INIT_ALLOC_H
-
-namespace gdb {
-
-/* An allocator that default constructs using default-initialization
-   rather than value-initialization.  The idea is to use this when you
-   don't want to default construct elements of containers of trivial
-   types using zero-initialization.  */
-
-/* Mostly as implementation convenience, this is implemented as an
-   adapter that given an allocator A, overrides 'A::construct()'.  'A'
-   defaults to std::allocator<T>.  */
-
-template<typename T, typename A = std::allocator<T>>
-class default_init_allocator : public A
-{
-public:
-  /* Pull in A's ctors.  */
-  using A::A;
-
-  /* Override rebind.  */
-  template<typename U>
-  struct rebind
-  {
-    /* A couple helpers just to make it a bit more readable.  */
-    typedef std::allocator_traits<A> traits_;
-    typedef typename traits_::template rebind_alloc<U> alloc_;
-
-    /* This is what we're after.  */
-    typedef default_init_allocator<U, alloc_> other;
-  };
-
-  /* Make the base allocator's construct method(s) visible.  */
-  using A::construct;
-
-  /* .. and provide an override/overload for the case of default
-     construction (i.e., no arguments).  This is where we construct
-     with default-init.  */
-  template <typename U>
-  void construct (U *ptr)
-    noexcept (std::is_nothrow_default_constructible<U>::value)
-  {
-    ::new ((void *) ptr) U; /* default-init */
-  }
-};
-
-} /* namespace gdb */
-
-#endif /* COMMON_DEFAULT_INIT_ALLOC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/def-vector.h ./gdb/gdbsupport/def-vector.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/def-vector.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/def-vector.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,36 +0,0 @@
-/* Copyright (C) 2017-2020 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 COMMON_DEF_VECTOR_H
-#define COMMON_DEF_VECTOR_H
-
-#include <vector>
-#include "gdbsupport/default-init-alloc.h"
-
-namespace gdb {
-
-/* A vector that uses an allocator that default constructs using
-   default-initialization rather than value-initialization.  The idea
-   is to use this when you don't want zero-initialization of elements
-   of vectors of trivial types.  E.g., byte buffers.  */
-
-template<typename T> using def_vector
-  = std::vector<T, gdb::default_init_allocator<T>>;
-
-} /* namespace gdb */
-
-#endif /* COMMON_DEF_VECTOR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/enum-flags.h ./gdb/gdbsupport/enum-flags.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/enum-flags.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/enum-flags.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,221 +0,0 @@
-/* Copyright (C) 2015-2020 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 COMMON_ENUM_FLAGS_H
-#define COMMON_ENUM_FLAGS_H
-
-/* Type-safe wrapper for enum flags.  enum flags are enums where the
-   values are bits that are meant to be ORed together.
-
-   This allows writing code like the below, while with raw enums this
-   would fail to compile without casts to enum type at the assignments
-   to 'f':
-
-    enum some_flag
-    {
-       flag_val1 = 1 << 1,
-       flag_val2 = 1 << 2,
-       flag_val3 = 1 << 3,
-       flag_val4 = 1 << 4,
-    };
-    DEF_ENUM_FLAGS_TYPE(enum some_flag, some_flags);
-
-    some_flags f = flag_val1 | flag_val2;
-    f |= flag_val3;
-
-   It's also possible to assign literal zero to an enum flags variable
-   (meaning, no flags), dispensing adding an awkward explicit "no
-   value" value to the enumeration.  For example:
-
-    some_flags f = 0;
-    f |= flag_val3 | flag_val4;
-
-   Note that literal integers other than zero fail to compile:
-
-    some_flags f = 1; // error
-*/
-
-#ifdef __cplusplus
-
-/* Traits type used to prevent the global operator overloads from
-   instantiating for non-flag enums.  */
-template<typename T> struct enum_flags_type {};
-
-/* Use this to mark an enum as flags enum.  It defines FLAGS as
-   enum_flags wrapper class for ENUM, and enables the global operator
-   overloads for ENUM.  */
-#define DEF_ENUM_FLAGS_TYPE(enum_type, flags_type)	\
-  typedef enum_flags<enum_type> flags_type;		\
-  template<>						\
-  struct enum_flags_type<enum_type>			\
-  {							\
-    typedef enum_flags<enum_type> type;			\
-  }
-
-/* Until we can rely on std::underlying type being universally
-   available (C++11), roll our own for enums.  */
-template<int size, bool sign> class integer_for_size { typedef void type; };
-template<> struct integer_for_size<1, 0> { typedef uint8_t type; };
-template<> struct integer_for_size<2, 0> { typedef uint16_t type; };
-template<> struct integer_for_size<4, 0> { typedef uint32_t type; };
-template<> struct integer_for_size<8, 0> { typedef uint64_t type; };
-template<> struct integer_for_size<1, 1> { typedef int8_t type; };
-template<> struct integer_for_size<2, 1> { typedef int16_t type; };
-template<> struct integer_for_size<4, 1> { typedef int32_t type; };
-template<> struct integer_for_size<8, 1> { typedef int64_t type; };
-
-template<typename T>
-struct enum_underlying_type
-{
-  typedef typename
-    integer_for_size<sizeof (T), static_cast<bool>(T (-1) < T (0))>::type
-    type;
-};
-
-template <typename E>
-class enum_flags
-{
-public:
-  typedef E enum_type;
-  typedef typename enum_underlying_type<enum_type>::type underlying_type;
-
-private:
-  /* Private type used to support initializing flag types with zero:
-
-       foo_flags f = 0;
-
-     but not other integers:
-
-       foo_flags f = 1;
-
-     The way this works is that we define an implicit constructor that
-     takes a pointer to this private type.  Since nothing can
-     instantiate an object of this type, the only possible pointer to
-     pass to the constructor is the NULL pointer, or, zero.  */
-  struct zero_type;
-
-  underlying_type
-  underlying_value () const
-  {
-    return m_enum_value;
-  }
-
-public:
-  /* Allow default construction.  */
-  enum_flags ()
-    : m_enum_value ((enum_type) 0)
-  {}
-
-  /* If you get an error saying these two overloads are ambiguous,
-     then you tried to mix values of different enum types.  */
-  enum_flags (enum_type e)
-    : m_enum_value (e)
-  {}
-  enum_flags (struct enum_flags::zero_type *zero)
-    : m_enum_value ((enum_type) 0)
-  {}
-
-  enum_flags &operator&= (enum_type e)
-  {
-    m_enum_value = (enum_type) (underlying_value () & e);
-    return *this;
-  }
-  enum_flags &operator|= (enum_type e)
-  {
-    m_enum_value = (enum_type) (underlying_value () | e);
-    return *this;
-  }
-  enum_flags &operator^= (enum_type e)
-  {
-    m_enum_value = (enum_type) (underlying_value () ^ e);
-    return *this;
-  }
-
-  operator enum_type () const
-  {
-    return m_enum_value;
-  }
-
-  enum_flags operator& (enum_type e) const
-  {
-    return (enum_type) (underlying_value () & e);
-  }
-  enum_flags operator| (enum_type e) const
-  {
-    return (enum_type) (underlying_value () | e);
-  }
-  enum_flags operator^ (enum_type e) const
-  {
-    return (enum_type) (underlying_value () ^ e);
-  }
-  enum_flags operator~ () const
-  {
-    // We only the underlying type to be unsigned when actually using
-    // operator~ -- if it were not unsigned, undefined behavior could
-    // result.  However, asserting this in the class itself would
-    // require too many unnecessary changes to otherwise ok enum
-    // types.
-    gdb_static_assert (std::is_unsigned<underlying_type>::value);
-    return (enum_type) ~underlying_value ();
-  }
-
-private:
-  /* Stored as enum_type because GDB knows to print the bit flags
-     neatly if the enum values look like bit flags.  */
-  enum_type m_enum_value;
-};
-
-/* Global operator overloads.  */
-
-template <typename enum_type>
-typename enum_flags_type<enum_type>::type
-operator& (enum_type e1, enum_type e2)
-{
-  return enum_flags<enum_type> (e1) & e2;
-}
-
-template <typename enum_type>
-typename enum_flags_type<enum_type>::type
-operator| (enum_type e1, enum_type e2)
-{
-  return enum_flags<enum_type> (e1) | e2;
-}
-
-template <typename enum_type>
-typename enum_flags_type<enum_type>::type
-operator^ (enum_type e1, enum_type e2)
-{
-  return enum_flags<enum_type> (e1) ^ e2;
-}
-
-template <typename enum_type>
-typename enum_flags_type<enum_type>::type
-operator~ (enum_type e)
-{
-  return ~enum_flags<enum_type> (e);
-}
-
-#else /* __cplusplus */
-
-/* In C, the flags type is just a typedef for the enum type.  */
-
-#define DEF_ENUM_FLAGS_TYPE(enum_type, flags_type) \
-  typedef enum_type flags_type
-
-#endif /* __cplusplus */
-
-#endif /* COMMON_ENUM_FLAGS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/environ.c ./gdb/gdbsupport/environ.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/environ.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/environ.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,183 +0,0 @@
-/* environ.c -- library for manipulating environments for GNU.
-
-   Copyright (C) 1986-2020 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/>.  */
-
-#include "common-defs.h"
-#include "environ.h"
-#include <algorithm>
-#include <utility>
-
-/* See gdbsupport/environ.h.  */
-
-gdb_environ &
-gdb_environ::operator= (gdb_environ &&e)
-{
-  /* Are we self-moving?  */
-  if (&e == this)
-    return *this;
-
-  m_environ_vector = std::move (e.m_environ_vector);
-  m_user_set_env = std::move (e.m_user_set_env);
-  m_user_unset_env = std::move (e.m_user_unset_env);
-  e.m_environ_vector.clear ();
-  e.m_environ_vector.push_back (NULL);
-  e.m_user_set_env.clear ();
-  e.m_user_unset_env.clear ();
-  return *this;
-}
-
-/* See gdbsupport/environ.h.  */
-
-gdb_environ gdb_environ::from_host_environ ()
-{
-  extern char **environ;
-  gdb_environ e;
-
-  if (environ == NULL)
-    return e;
-
-  for (int i = 0; environ[i] != NULL; ++i)
-    {
-      /* Make sure we add the element before the last (NULL).  */
-      e.m_environ_vector.insert (e.m_environ_vector.end () - 1,
-				 xstrdup (environ[i]));
-    }
-
-  return e;
-}
-
-/* See gdbsupport/environ.h.  */
-
-void
-gdb_environ::clear ()
-{
-  for (char *v : m_environ_vector)
-    xfree (v);
-  m_environ_vector.clear ();
-  /* Always add the NULL element.  */
-  m_environ_vector.push_back (NULL);
-  m_user_set_env.clear ();
-  m_user_unset_env.clear ();
-}
-
-/* Helper function to check if STRING contains an environment variable
-   assignment of VAR, i.e., if STRING starts with 'VAR='.  Return true
-   if it contains, false otherwise.  */
-
-static bool
-match_var_in_string (const char *string, const char *var, size_t var_len)
-{
-  if (strncmp (string, var, var_len) == 0 && string[var_len] == '=')
-    return true;
-
-  return false;
-}
-
-/* See gdbsupport/environ.h.  */
-
-const char *
-gdb_environ::get (const char *var) const
-{
-  size_t len = strlen (var);
-
-  for (char *el : m_environ_vector)
-    if (el != NULL && match_var_in_string (el, var, len))
-      return &el[len + 1];
-
-  return NULL;
-}
-
-/* See gdbsupport/environ.h.  */
-
-void
-gdb_environ::set (const char *var, const char *value)
-{
-  char *fullvar = concat (var, "=", value, NULL);
-
-  /* We have to unset the variable in the vector if it exists.  */
-  unset (var, false);
-
-  /* Insert the element before the last one, which is always NULL.  */
-  m_environ_vector.insert (m_environ_vector.end () - 1, fullvar);
-
-  /* Mark this environment variable as having been set by the user.
-     This will be useful when we deal with setting environment
-     variables on the remote target.  */
-  m_user_set_env.insert (std::string (fullvar));
-
-  /* If this environment variable is marked as unset by the user, then
-     remove it from the list, because now the user wants to set
-     it.  */
-  m_user_unset_env.erase (std::string (var));
-}
-
-/* See gdbsupport/environ.h.  */
-
-void
-gdb_environ::unset (const char *var, bool update_unset_list)
-{
-  size_t len = strlen (var);
-  std::vector<char *>::iterator it_env;
-
-  /* We iterate until '.end () - 1' because the last element is
-     always NULL.  */
-  for (it_env = m_environ_vector.begin ();
-       it_env != m_environ_vector.end () - 1;
-       ++it_env)
-    if (match_var_in_string (*it_env, var, len))
-      break;
-
-  if (it_env != m_environ_vector.end () - 1)
-    {
-      m_user_set_env.erase (std::string (*it_env));
-      xfree (*it_env);
-
-      m_environ_vector.erase (it_env);
-    }
-
-  if (update_unset_list)
-    m_user_unset_env.insert (std::string (var));
-}
-
-/* See gdbsupport/environ.h.  */
-
-void
-gdb_environ::unset (const char *var)
-{
-  unset (var, true);
-}
-
-/* See gdbsupport/environ.h.  */
-
-char **
-gdb_environ::envp () const
-{
-  return const_cast<char **> (&m_environ_vector[0]);
-}
-
-/* See gdbsupport/environ.h.  */
-
-const std::set<std::string> &
-gdb_environ::user_set_env () const
-{
-  return m_user_set_env;
-}
-
-const std::set<std::string> &
-gdb_environ::user_unset_env () const
-{
-  return m_user_unset_env;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/environ.h ./gdb/gdbsupport/environ.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/environ.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/environ.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,103 +0,0 @@
-/* Header for environment manipulation library.
-   Copyright (C) 1989-2020 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/>.  */
-
-#ifndef COMMON_ENVIRON_H
-#define COMMON_ENVIRON_H
-
-#include <vector>
-#include <set>
-
-/* Class that represents the environment variables as seen by the
-   inferior.  */
-
-class gdb_environ
-{
-public:
-  /* Regular constructor and destructor.  */
-  gdb_environ ()
-  {
-    /* Make sure that the vector contains at least a NULL element.
-       If/when we add more variables to it, NULL will always be the
-       last element.  */
-    m_environ_vector.push_back (NULL);
-  }
-
-  ~gdb_environ ()
-  {
-    clear ();
-  }
-
-  /* Move constructor.  */
-  gdb_environ (gdb_environ &&e)
-    : m_environ_vector (std::move (e.m_environ_vector)),
-      m_user_set_env (std::move (e.m_user_set_env)),
-      m_user_unset_env (std::move (e.m_user_unset_env))
-  {
-    /* Make sure that the moved-from vector is left at a valid
-       state (only one NULL element).  */
-    e.m_environ_vector.clear ();
-    e.m_environ_vector.push_back (NULL);
-    e.m_user_set_env.clear ();
-    e.m_user_unset_env.clear ();
-  }
-
-  /* Move assignment.  */
-  gdb_environ &operator= (gdb_environ &&e);
-
-  /* Create a gdb_environ object using the host's environment
-     variables.  */
-  static gdb_environ from_host_environ ();
-
-  /* Clear the environment variables stored in the object.  */
-  void clear ();
-
-  /* Return the value in the environment for the variable VAR.  The
-     returned pointer is only valid as long as the gdb_environ object
-     is not modified.  */
-  const char *get (const char *var) const;
-
-  /* Store VAR=VALUE in the environment.  */
-  void set (const char *var, const char *value);
-
-  /* Unset VAR in environment.  */
-  void unset (const char *var);
-
-  /* Return the environment vector represented as a 'char **'.  */
-  char **envp () const;
-
-  /* Return the user-set environment vector.  */
-  const std::set<std::string> &user_set_env () const;
-
-  /* Return the user-unset environment vector.  */
-  const std::set<std::string> &user_unset_env () const;
-
-private:
-  /* Unset VAR in environment.  If UPDATE_UNSET_LIST is true, then
-     also update M_USER_UNSET_ENV to reflect the unsetting of the
-     environment variable.  */
-  void unset (const char *var, bool update_unset_list);
-
-  /* A vector containing the environment variables.  */
-  std::vector<char *> m_environ_vector;
-
-  /* The environment variables explicitly set by the user.  */
-  std::set<std::string> m_user_set_env;
-
-  /* The environment variables explicitly unset by the user.  */
-  std::set<std::string> m_user_unset_env;
-};
-
-#endif /* COMMON_ENVIRON_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/errors.c ./gdb/gdbsupport/errors.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/errors.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/errors.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,69 +0,0 @@
-/* Error reporting facilities.
-
-   Copyright (C) 1986-2020 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"
-#include "errors.h"
-
-/* See gdbsupport/errors.h.  */
-
-void
-warning (const char *fmt, ...)
-{
-  va_list ap;
-
-  va_start (ap, fmt);
-  vwarning (fmt, ap);
-  va_end (ap);
-}
-
-/* See gdbsupport/errors.h.  */
-
-void
-error (const char *fmt, ...)
-{
-  va_list ap;
-
-  va_start (ap, fmt);
-  verror (fmt, ap);
-  va_end (ap);
-}
-
-/* See gdbsupport/errors.h.  */
-
-void
-internal_error (const char *file, int line, const char *fmt, ...)
-{
-  va_list ap;
-
-  va_start (ap, fmt);
-  internal_verror (file, line, fmt, ap);
-  va_end (ap);
-}
-
-/* See gdbsupport/errors.h.  */
-
-void
-internal_warning (const char *file, int line, const char *fmt, ...)
-{
-  va_list ap;
-
-  va_start (ap, fmt);
-  internal_vwarning (file, line, fmt, ap);
-  va_end (ap);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/errors.h ./gdb/gdbsupport/errors.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/errors.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/errors.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,90 +0,0 @@
-/* Declarations for error-reporting facilities.
-
-   Copyright (C) 1986-2020 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 COMMON_ERRORS_H
-#define COMMON_ERRORS_H
-
-/* A problem was detected, but the requested operation can still
-   proceed.  A warning message is constructed using a printf- or
-   vprintf-style argument list.  The function "vwarning" must be
-   provided by the client.  */
-
-extern void warning (const char *fmt, ...)
-     ATTRIBUTE_PRINTF (1, 2);
-
-extern void vwarning (const char *fmt, va_list args)
-     ATTRIBUTE_PRINTF (1, 0);
-
-/* A non-predictable, non-fatal error was detected.  The requested
-   operation cannot proceed.  An error message is constructed using
-   a printf- or vprintf-style argument list.  These functions do not
-   return.  The function "verror" must be provided by the client.  */
-
-extern void error (const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
-
-extern void verror (const char *fmt, va_list args)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
-
-/* An internal error was detected.  Internal errors indicate
-   programming errors such as assertion failures, as opposed to
-   more general errors beyond the application's control.  These
-   functions do not return.  An error message is constructed using
-   a printf- or vprintf-style argument list.  FILE and LINE
-   indicate the file and line number where the programming error
-   was detected.  The function "internal_verror" must be provided
-   by the client.  */
-
-extern void internal_error (const char *file, int line,
-			    const char *fmt, ...)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 4);
-
-extern void internal_verror (const char *file, int line,
-			     const char *fmt, va_list args)
-     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0);
-
-/* An internal problem was detected, but the requested operation can
-   still proceed.  Internal warnings indicate programming errors as
-   opposed to more general issues beyond the application's control.
-   A warning message is constructed using a printf- or vprintf-style
-   argument list.  The function "internal_vwarning" must be provided
-   by the client.  */
-
-extern void internal_warning (const char *file, int line,
-			      const char *fmt, ...)
-     ATTRIBUTE_PRINTF (3, 4);
-
-extern void internal_vwarning (const char *file, int line,
-			       const char *fmt, va_list args)
-     ATTRIBUTE_PRINTF (3, 0);
-
-
-/* Like "error", but the error message is constructed by combining
-   STRING with the system error message for errno.  This function does
-   not return.  This function must be provided by the client.  */
-
-extern void perror_with_name (const char *string) ATTRIBUTE_NORETURN;
-
-/* Call this function to handle memory allocation failures.  This
-   function does not return.  This function must be provided by the
-   client.  */
-
-extern void malloc_failure (long size) ATTRIBUTE_NORETURN;
-
-#endif /* COMMON_ERRORS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/fileio.c ./gdb/gdbsupport/fileio.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/fileio.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/fileio.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,255 +0,0 @@
-/* File-I/O functions for GDB, the GNU debugger.
-
-   Copyright (C) 2003-2020 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"
-#include "fileio.h"
-#include <sys/stat.h>
-#include <fcntl.h>
-
-/* See fileio.h.  */
-
-int
-host_to_fileio_error (int error)
-{
-  switch (error)
-    {
-      case EPERM:
-        return FILEIO_EPERM;
-      case ENOENT:
-        return FILEIO_ENOENT;
-      case EINTR:
-        return FILEIO_EINTR;
-      case EIO:
-        return FILEIO_EIO;
-      case EBADF:
-        return FILEIO_EBADF;
-      case EACCES:
-        return FILEIO_EACCES;
-      case EFAULT:
-        return FILEIO_EFAULT;
-      case EBUSY:
-        return FILEIO_EBUSY;
-      case EEXIST:
-        return FILEIO_EEXIST;
-      case ENODEV:
-        return FILEIO_ENODEV;
-      case ENOTDIR:
-        return FILEIO_ENOTDIR;
-      case EISDIR:
-        return FILEIO_EISDIR;
-      case EINVAL:
-        return FILEIO_EINVAL;
-      case ENFILE:
-        return FILEIO_ENFILE;
-      case EMFILE:
-        return FILEIO_EMFILE;
-      case EFBIG:
-        return FILEIO_EFBIG;
-      case ENOSPC:
-        return FILEIO_ENOSPC;
-      case ESPIPE:
-        return FILEIO_ESPIPE;
-      case EROFS:
-        return FILEIO_EROFS;
-      case ENOSYS:
-        return FILEIO_ENOSYS;
-      case ENAMETOOLONG:
-        return FILEIO_ENAMETOOLONG;
-    }
-  return FILEIO_EUNKNOWN;
-}
-
-/* See fileio.h.  */
-
-int
-fileio_to_host_openflags (int fileio_open_flags, int *open_flags_p)
-{
-  int open_flags = 0;
-
-  if (fileio_open_flags & ~FILEIO_O_SUPPORTED)
-    return -1;
-
-  if (fileio_open_flags & FILEIO_O_CREAT)
-    open_flags |= O_CREAT;
-  if (fileio_open_flags & FILEIO_O_EXCL)
-    open_flags |= O_EXCL;
-  if (fileio_open_flags & FILEIO_O_TRUNC)
-    open_flags |= O_TRUNC;
-  if (fileio_open_flags & FILEIO_O_APPEND)
-    open_flags |= O_APPEND;
-  if (fileio_open_flags & FILEIO_O_RDONLY)
-    open_flags |= O_RDONLY;
-  if (fileio_open_flags & FILEIO_O_WRONLY)
-    open_flags |= O_WRONLY;
-  if (fileio_open_flags & FILEIO_O_RDWR)
-    open_flags |= O_RDWR;
-  /* On systems supporting binary and text mode, always open files
-     in binary mode. */
-#ifdef O_BINARY
-  open_flags |= O_BINARY;
-#endif
-
-  *open_flags_p = open_flags;
-  return 0;
-}
-
-/* See fileio.h.  */
-
-int
-fileio_to_host_mode (int fileio_mode, mode_t *mode_p)
-{
-  mode_t mode = 0;
-
-  if (fileio_mode & ~FILEIO_S_SUPPORTED)
-    return -1;
-
-  if (fileio_mode & FILEIO_S_IFREG)
-    mode |= S_IFREG;
-  if (fileio_mode & FILEIO_S_IFDIR)
-    mode |= S_IFDIR;
-  if (fileio_mode & FILEIO_S_IFCHR)
-    mode |= S_IFCHR;
-  if (fileio_mode & FILEIO_S_IRUSR)
-    mode |= S_IRUSR;
-  if (fileio_mode & FILEIO_S_IWUSR)
-    mode |= S_IWUSR;
-  if (fileio_mode & FILEIO_S_IXUSR)
-    mode |= S_IXUSR;
-#ifdef S_IRGRP
-  if (fileio_mode & FILEIO_S_IRGRP)
-    mode |= S_IRGRP;
-#endif
-#ifdef S_IWGRP
-  if (fileio_mode & FILEIO_S_IWGRP)
-    mode |= S_IWGRP;
-#endif
-#ifdef S_IXGRP
-  if (fileio_mode & FILEIO_S_IXGRP)
-    mode |= S_IXGRP;
-#endif
-  if (fileio_mode & FILEIO_S_IROTH)
-    mode |= S_IROTH;
-#ifdef S_IWOTH
-  if (fileio_mode & FILEIO_S_IWOTH)
-    mode |= S_IWOTH;
-#endif
-#ifdef S_IXOTH
-  if (fileio_mode & FILEIO_S_IXOTH)
-    mode |= S_IXOTH;
-#endif
-
-  *mode_p = mode;
-  return 0;
-}
-
-/* Convert a host-format mode_t into a bitmask of File-I/O flags.  */
-
-static LONGEST
-fileio_mode_pack (mode_t mode)
-{
-  mode_t tmode = 0;
-
-  if (S_ISREG (mode))
-    tmode |= FILEIO_S_IFREG;
-  if (S_ISDIR (mode))
-    tmode |= FILEIO_S_IFDIR;
-  if (S_ISCHR (mode))
-    tmode |= FILEIO_S_IFCHR;
-  if (mode & S_IRUSR)
-    tmode |= FILEIO_S_IRUSR;
-  if (mode & S_IWUSR)
-    tmode |= FILEIO_S_IWUSR;
-  if (mode & S_IXUSR)
-    tmode |= FILEIO_S_IXUSR;
-#ifdef S_IRGRP
-  if (mode & S_IRGRP)
-    tmode |= FILEIO_S_IRGRP;
-#endif
-#ifdef S_IWGRP
-  if (mode & S_IWGRP)
-    tmode |= FILEIO_S_IWGRP;
-#endif
-#ifdef S_IXGRP
-  if (mode & S_IXGRP)
-    tmode |= FILEIO_S_IXGRP;
-#endif
-  if (mode & S_IROTH)
-    tmode |= FILEIO_S_IROTH;
-#ifdef S_IWOTH
-  if (mode & S_IWOTH)
-    tmode |= FILEIO_S_IWOTH;
-#endif
-#ifdef S_IXOTH
-  if (mode & S_IXOTH)
-    tmode |= FILEIO_S_IXOTH;
-#endif
-  return tmode;
-}
-
-/* Pack a host-format mode_t into an fio_mode_t.  */
-
-static void
-host_to_fileio_mode (mode_t num, fio_mode_t fnum)
-{
-  host_to_bigendian (fileio_mode_pack (num), (char *) fnum, 4);
-}
-
-/* Pack a host-format integer into an fio_ulong_t.  */
-
-static void
-host_to_fileio_ulong (LONGEST num, fio_ulong_t fnum)
-{
-  host_to_bigendian (num, (char *) fnum, 8);
-}
-
-/* See fileio.h.  */
-
-void
-host_to_fileio_stat (struct stat *st, struct fio_stat *fst)
-{
-  LONGEST blksize;
-
-  host_to_fileio_uint ((long) st->st_dev, fst->fst_dev);
-  host_to_fileio_uint ((long) st->st_ino, fst->fst_ino);
-  host_to_fileio_mode (st->st_mode, fst->fst_mode);
-  host_to_fileio_uint ((long) st->st_nlink, fst->fst_nlink);
-  host_to_fileio_uint ((long) st->st_uid, fst->fst_uid);
-  host_to_fileio_uint ((long) st->st_gid, fst->fst_gid);
-  host_to_fileio_uint ((long) st->st_rdev, fst->fst_rdev);
-  host_to_fileio_ulong ((LONGEST) st->st_size, fst->fst_size);
-#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
-  blksize = st->st_blksize;
-#else
-  blksize = 512;
-#endif
-  host_to_fileio_ulong (blksize, fst->fst_blksize);
-#if HAVE_STRUCT_STAT_ST_BLOCKS
-  host_to_fileio_ulong ((LONGEST) st->st_blocks, fst->fst_blocks);
-#else
-  /* FIXME: This is correct for DJGPP, but other systems that don't
-     have st_blocks, if any, might prefer 512 instead of st_blksize.
-     (eliz, 30-12-2003)  */
-  host_to_fileio_ulong (((LONGEST) st->st_size + blksize - 1)
-			/ blksize,
-			fst->fst_blocks);
-#endif
-  host_to_fileio_time (st->st_atime, fst->fst_atime);
-  host_to_fileio_time (st->st_mtime, fst->fst_mtime);
-  host_to_fileio_time (st->st_ctime, fst->fst_ctime);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/fileio.h ./gdb/gdbsupport/fileio.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/fileio.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/fileio.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,73 +0,0 @@
-/* File-I/O functions for GDB, the GNU debugger.
-
-   Copyright (C) 2003-2020 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 COMMON_FILEIO_H
-#define COMMON_FILEIO_H
-
-#include "gdb/fileio.h"
-#include <sys/stat.h>
-
-/* Convert a host-format errno value to a File-I/O error number.  */
-
-extern int host_to_fileio_error (int error);
-
-/* Convert File-I/O open flags FFLAGS to host format, storing
-   the result in *FLAGS.  Return 0 on success, -1 on error.  */
-
-extern int fileio_to_host_openflags (int fflags, int *flags);
-
-/* Convert File-I/O mode FMODE to host format, storing
-   the result in *MODE.  Return 0 on success, -1 on error.  */
-
-extern int fileio_to_host_mode (int fmode, mode_t *mode);
-
-/* Pack a host-format integer into a byte buffer in big-endian
-   format.  BYTES specifies the size of the integer to pack in
-   bytes.  */
-
-static inline void
-host_to_bigendian (LONGEST num, char *buf, int bytes)
-{
-  int i;
-
-  for (i = 0; i < bytes; ++i)
-    buf[i] = (num >> (8 * (bytes - i - 1))) & 0xff;
-}
-
-/* Pack a host-format integer into an fio_uint_t.  */
-
-static inline void
-host_to_fileio_uint (long num, fio_uint_t fnum)
-{
-  host_to_bigendian ((LONGEST) num, (char *) fnum, 4);
-}
-
-/* Pack a host-format time_t into an fio_time_t.  */
-
-static inline void
-host_to_fileio_time (time_t num, fio_time_t fnum)
-{
-  host_to_bigendian ((LONGEST) num, (char *) fnum, 4);
-}
-
-/* Pack a host-format struct stat into a struct fio_stat.  */
-
-extern void host_to_fileio_stat (struct stat *st, struct fio_stat *fst);
-
-#endif /* COMMON_FILEIO_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/filestuff.c ./gdb/gdbsupport/filestuff.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/filestuff.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/filestuff.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,503 +0,0 @@
-/* Low-level file-handling.
-   Copyright (C) 2012-2020 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"
-#include "filestuff.h"
-#include "gdb_vecs.h"
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <algorithm>
-
-#ifdef USE_WIN32API
-#include <winsock2.h>
-#include <windows.h>
-#define HAVE_SOCKETS 1
-#elif defined HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-/* Define HAVE_F_GETFD if we plan to use F_GETFD.  */
-#define HAVE_F_GETFD F_GETFD
-#define HAVE_SOCKETS 1
-#endif
-
-#ifdef HAVE_KINFO_GETFILE
-#include <sys/user.h>
-#include <libutil.h>
-#endif
-
-#ifdef HAVE_SYS_RESOURCE_H
-#include <sys/resource.h>
-#endif /* HAVE_SYS_RESOURCE_H */
-
-#ifndef O_CLOEXEC
-#define O_CLOEXEC 0
-#endif
-
-#ifndef O_NOINHERIT
-#define O_NOINHERIT 0
-#endif
-
-#ifndef SOCK_CLOEXEC
-#define SOCK_CLOEXEC 0
-#endif
-
-
-
-#ifndef HAVE_FDWALK
-
-#include <dirent.h>
-
-/* Replacement for fdwalk, if the system doesn't define it.  Walks all
-   open file descriptors (though this implementation may walk closed
-   ones as well, depending on the host platform's capabilities) and
-   call FUNC with ARG.  If FUNC returns non-zero, stops immediately
-   and returns the same value.  Otherwise, returns zero when
-   finished.  */
-
-static int
-fdwalk (int (*func) (void *, int), void *arg)
-{
-  /* Checking __linux__ isn't great but it isn't clear what would be
-     better.  There doesn't seem to be a good way to check for this in
-     configure.  */
-#ifdef __linux__
-  DIR *dir;
-
-  dir = opendir ("/proc/self/fd");
-  if (dir != NULL)
-    {
-      struct dirent *entry;
-      int result = 0;
-
-      for (entry = readdir (dir); entry != NULL; entry = readdir (dir))
-	{
-	  long fd;
-	  char *tail;
-
-	  errno = 0;
-	  fd = strtol (entry->d_name, &tail, 10);
-	  if (*tail != '\0' || errno != 0)
-	    continue;
-	  if ((int) fd != fd)
-	    {
-	      /* What can we do here really?  */
-	      continue;
-	    }
-
-	  if (fd == dirfd (dir))
-	    continue;
-
-	  result = func (arg, fd);
-	  if (result != 0)
-	    break;
-	}
-
-      closedir (dir);
-      return result;
-    }
-  /* We may fall through to the next case.  */
-#endif
-#ifdef HAVE_KINFO_GETFILE
-  int nfd;
-  gdb::unique_xmalloc_ptr<struct kinfo_file[]> fdtbl
-    (kinfo_getfile (getpid (), &nfd));
-  if (fdtbl != NULL)
-    {
-      for (int i = 0; i < nfd; i++)
-	{
-	  if (fdtbl[i].kf_fd >= 0)
-	    {
-	      int result = func (arg, fdtbl[i].kf_fd);
-	      if (result != 0)
-		return result;
-	    }
-	}
-      return 0;
-    }
-  /* We may fall through to the next case.  */
-#endif
-
-  {
-    int max, fd;
-
-#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_NOFILE)
-    struct rlimit rlim;
-
-    if (getrlimit (RLIMIT_NOFILE, &rlim) == 0 && rlim.rlim_max != RLIM_INFINITY)
-      max = rlim.rlim_max;
-    else
-#endif
-      {
-#ifdef _SC_OPEN_MAX
-	max = sysconf (_SC_OPEN_MAX);
-#else
-	/* Whoops.  */
-	return 0;
-#endif /* _SC_OPEN_MAX */
-      }
-
-    for (fd = 0; fd < max; ++fd)
-      {
-	struct stat sb;
-	int result;
-
-	/* Only call FUNC for open fds.  */
-	if (fstat (fd, &sb) == -1)
-	  continue;
-
-	result = func (arg, fd);
-	if (result != 0)
-	  return result;
-      }
-
-    return 0;
-  }
-}
-
-#endif /* HAVE_FDWALK */
-
-
-
-/* A vector holding all the fds open when notice_open_fds was called.  We
-   don't use a hashtab because we don't expect there to be many open fds.  */
-
-static std::vector<int> open_fds;
-
-/* An fdwalk callback function used by notice_open_fds.  It puts the
-   given file descriptor into the vec.  */
-
-static int
-do_mark_open_fd (void *ignore, int fd)
-{
-  open_fds.push_back (fd);
-  return 0;
-}
-
-/* See filestuff.h.  */
-
-void
-notice_open_fds (void)
-{
-  fdwalk (do_mark_open_fd, NULL);
-}
-
-/* See filestuff.h.  */
-
-void
-mark_fd_no_cloexec (int fd)
-{
-  do_mark_open_fd (NULL, fd);
-}
-
-/* See filestuff.h.  */
-
-void
-unmark_fd_no_cloexec (int fd)
-{
-  auto it = std::remove (open_fds.begin (), open_fds.end (), fd);
-
-  if (it != open_fds.end ())
-    open_fds.erase (it);
-  else
-    gdb_assert_not_reached (_("fd not found in open_fds"));
-}
-
-/* Helper function for close_most_fds that closes the file descriptor
-   if appropriate.  */
-
-static int
-do_close (void *ignore, int fd)
-{
-  for (int val : open_fds)
-    {
-      if (fd == val)
-	{
-	  /* Keep this one open.  */
-	  return 0;
-	}
-    }
-
-  close (fd);
-  return 0;
-}
-
-/* See filestuff.h.  */
-
-void
-close_most_fds (void)
-{
-  fdwalk (do_close, NULL);
-}
-
-
-
-/* This is a tri-state flag.  When zero it means we haven't yet tried
-   O_CLOEXEC.  When positive it means that O_CLOEXEC works on this
-   host.  When negative, it means that O_CLOEXEC doesn't work.  We
-   track this state because, while gdb might have been compiled
-   against a libc that supplies O_CLOEXEC, there is no guarantee that
-   the kernel supports it.  */
-
-static int trust_o_cloexec;
-
-/* Mark FD as close-on-exec, ignoring errors.  Update
-   TRUST_O_CLOEXEC.  */
-
-static void
-mark_cloexec (int fd)
-{
-#ifdef HAVE_F_GETFD
-  int old = fcntl (fd, F_GETFD, 0);
-
-  if (old != -1)
-    {
-      fcntl (fd, F_SETFD, old | FD_CLOEXEC);
-
-      if (trust_o_cloexec == 0)
-	{
-	  if ((old & FD_CLOEXEC) != 0)
-	    trust_o_cloexec = 1;
-	  else
-	    trust_o_cloexec = -1;
-	}
-    }
-#endif /* HAVE_F_GETFD */
-}
-
-/* Depending on TRUST_O_CLOEXEC, mark FD as close-on-exec.  */
-
-static void
-maybe_mark_cloexec (int fd)
-{
-  if (trust_o_cloexec <= 0)
-    mark_cloexec (fd);
-}
-
-#ifdef HAVE_SOCKETS
-
-/* Like maybe_mark_cloexec, but for callers that use SOCK_CLOEXEC.  */
-
-static void
-socket_mark_cloexec (int fd)
-{
-  if (SOCK_CLOEXEC == 0 || trust_o_cloexec <= 0)
-    mark_cloexec (fd);
-}
-
-#endif
-
-
-
-/* See filestuff.h.  */
-
-int
-gdb_open_cloexec (const char *filename, int flags, unsigned long mode)
-{
-  int fd = open (filename, flags | O_CLOEXEC, mode);
-
-  if (fd >= 0)
-    maybe_mark_cloexec (fd);
-
-  return fd;
-}
-
-/* See filestuff.h.  */
-
-gdb_file_up
-gdb_fopen_cloexec (const char *filename, const char *opentype)
-{
-  FILE *result;
-  /* Probe for "e" support once.  But, if we can tell the operating
-     system doesn't know about close on exec mode "e" without probing,
-     skip it.  E.g., the Windows runtime issues an "Invalid parameter
-     passed to C runtime function" OutputDebugString warning for
-     unknown modes.  Assume that if O_CLOEXEC is zero, then "e" isn't
-     supported.  On MinGW, O_CLOEXEC is an alias of O_NOINHERIT, and
-     "e" isn't supported.  */
-  static int fopen_e_ever_failed_einval =
-    O_CLOEXEC == 0 || O_CLOEXEC == O_NOINHERIT;
-
-  if (!fopen_e_ever_failed_einval)
-    {
-      char *copy;
-
-      copy = (char *) alloca (strlen (opentype) + 2);
-      strcpy (copy, opentype);
-      /* This is a glibc extension but we try it unconditionally on
-	 this path.  */
-      strcat (copy, "e");
-      result = fopen (filename, copy);
-
-      if (result == NULL && errno == EINVAL)
-	{
-	  result = fopen (filename, opentype);
-	  if (result != NULL)
-	    fopen_e_ever_failed_einval = 1;
-	}
-    }
-  else
-    result = fopen (filename, opentype);
-
-  if (result != NULL)
-    maybe_mark_cloexec (fileno (result));
-
-  return gdb_file_up (result);
-}
-
-#ifdef HAVE_SOCKETS
-/* See filestuff.h.  */
-
-int
-gdb_socketpair_cloexec (int domain, int style, int protocol,
-			int filedes[2])
-{
-#ifdef HAVE_SOCKETPAIR
-  int result = socketpair (domain, style | SOCK_CLOEXEC, protocol, filedes);
-
-  if (result != -1)
-    {
-      socket_mark_cloexec (filedes[0]);
-      socket_mark_cloexec (filedes[1]);
-    }
-
-  return result;
-#else
-  gdb_assert_not_reached (_("socketpair not available on this host"));
-#endif
-}
-
-/* See filestuff.h.  */
-
-int
-gdb_socket_cloexec (int domain, int style, int protocol)
-{
-  int result = socket (domain, style | SOCK_CLOEXEC, protocol);
-
-  if (result != -1)
-    socket_mark_cloexec (result);
-
-  return result;
-}
-#endif
-
-/* See filestuff.h.  */
-
-int
-gdb_pipe_cloexec (int filedes[2])
-{
-  int result;
-
-#ifdef HAVE_PIPE2
-  result = pipe2 (filedes, O_CLOEXEC);
-  if (result != -1)
-    {
-      maybe_mark_cloexec (filedes[0]);
-      maybe_mark_cloexec (filedes[1]);
-    }
-#else
-#ifdef HAVE_PIPE
-  result = pipe (filedes);
-  if (result != -1)
-    {
-      mark_cloexec (filedes[0]);
-      mark_cloexec (filedes[1]);
-    }
-#else /* HAVE_PIPE */
-  gdb_assert_not_reached (_("pipe not available on this host"));
-#endif /* HAVE_PIPE */
-#endif /* HAVE_PIPE2 */
-
-  return result;
-}
-
-/* See gdbsupport/filestuff.h.  */
-
-bool
-is_regular_file (const char *name, int *errno_ptr)
-{
-  struct stat st;
-  const int status = stat (name, &st);
-
-  /* Stat should never fail except when the file does not exist.
-     If stat fails, analyze the source of error and return true
-     unless the file does not exist, to avoid returning false results
-     on obscure systems where stat does not work as expected.  */
-
-  if (status != 0)
-    {
-      if (errno != ENOENT)
-	return true;
-      *errno_ptr = ENOENT;
-      return false;
-    }
-
-  if (S_ISREG (st.st_mode))
-    return true;
-
-  if (S_ISDIR (st.st_mode))
-    *errno_ptr = EISDIR;
-  else
-    *errno_ptr = EINVAL;
-  return false;
-}
-
-/* See gdbsupport/filestuff.h.  */
-
-bool
-mkdir_recursive (const char *dir)
-{
-  auto holder = make_unique_xstrdup (dir);
-  char * const start = holder.get ();
-  char *component_start = start;
-  char *component_end = start;
-
-  while (1)
-    {
-      /* Find the beginning of the next component.  */
-      while (*component_start == '/')
-	component_start++;
-
-      /* Are we done?  */
-      if (*component_start == '\0')
-	return true;
-
-      /* Find the slash or null-terminator after this component.  */
-      component_end = component_start;
-      while (*component_end != '/' && *component_end != '\0')
-	component_end++;
-
-      /* Temporarily replace the slash with a null terminator, so we can create
-         the directory up to this component.  */
-      char saved_char = *component_end;
-      *component_end = '\0';
-
-      /* If we get EEXIST and the existing path is a directory, then we're
-         happy.  If it exists, but it's a regular file and this is not the last
-         component, we'll fail at the next component.  If this is the last
-         component, the caller will fail with ENOTDIR when trying to
-         open/create a file under that path.  */
-      if (mkdir (start, 0700) != 0)
-	if (errno != EEXIST)
-	  return false;
-
-      /* Restore the overwritten char.  */
-      *component_end = saved_char;
-      component_start = component_end;
-    }
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/filestuff.h ./gdb/gdbsupport/filestuff.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/filestuff.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/filestuff.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,142 +0,0 @@
-/* Low-level file-handling.
-   Copyright (C) 2012-2020 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 COMMON_FILESTUFF_H
-#define COMMON_FILESTUFF_H
-
-#include <dirent.h>
-#include <fcntl.h>
-
-/* Note all the file descriptors which are open when this is called.
-   These file descriptors will not be closed by close_most_fds.  */
-
-extern void notice_open_fds (void);
-
-/* Mark a file descriptor as inheritable across an exec.  */
-
-extern void mark_fd_no_cloexec (int fd);
-
-/* Mark a file descriptor as no longer being inheritable across an
-   exec.  This is only meaningful when FD was previously passed to
-   mark_fd_no_cloexec.  */
-
-extern void unmark_fd_no_cloexec (int fd);
-
-/* Close all open file descriptors other than those marked by
-   'notice_open_fds', and stdin, stdout, and stderr.  Errors that
-   occur while closing are ignored.  */
-
-extern void close_most_fds (void);
-
-/* Like 'open', but ensures that the returned file descriptor has the
-   close-on-exec flag set.  */
-
-extern int gdb_open_cloexec (const char *filename, int flags,
-			     /* mode_t */ unsigned long mode);
-
-/* Like mkstemp, but ensures that the file descriptor is
-   close-on-exec.  */
-
-static inline int
-gdb_mkostemp_cloexec (char *name_template, int flags = 0)
-{
-  /* gnulib provides a mkostemp replacement if needed.  */
-  return mkostemp (name_template, flags | O_CLOEXEC);
-}
-
-/* Convenience wrapper for the above, which takes the filename as an
-   std::string.  */
-
-static inline int
-gdb_open_cloexec (const std::string &filename, int flags,
-		  /* mode_t */ unsigned long mode)
-{
-  return gdb_open_cloexec (filename.c_str (), flags, mode);
-}
-
-struct gdb_file_deleter
-{
-  void operator() (FILE *file) const
-  {
-    fclose (file);
-  }
-};
-
-/* A unique pointer to a FILE.  */
-
-typedef std::unique_ptr<FILE, gdb_file_deleter> gdb_file_up;
-
-/* Like 'fopen', but ensures that the returned file descriptor has the
-   close-on-exec flag set.  */
-
-extern gdb_file_up gdb_fopen_cloexec (const char *filename,
-				      const char *opentype);
-
-/* Convenience wrapper for the above, which takes the filename as an
-   std::string.  */
-
-static inline gdb_file_up
-gdb_fopen_cloexec (const std::string &filename, const char *opentype)
-{
-  return gdb_fopen_cloexec (filename.c_str (), opentype);
-}
-
-/* Like 'socketpair', but ensures that the returned file descriptors
-   have the close-on-exec flag set.  */
-
-extern int gdb_socketpair_cloexec (int domain, int style, int protocol,
-				   int filedes[2]);
-
-/* Like 'socket', but ensures that the returned file descriptor has
-   the close-on-exec flag set.  */
-
-extern int gdb_socket_cloexec (int domain, int style, int protocol);
-
-/* Like 'pipe', but ensures that the returned file descriptors have
-   the close-on-exec flag set.  */
-
-extern int gdb_pipe_cloexec (int filedes[2]);
-
-struct gdb_dir_deleter
-{
-  void operator() (DIR *dir) const
-  {
-    closedir (dir);
-  }
-};
-
-/* A unique pointer to a DIR.  */
-
-typedef std::unique_ptr<DIR, gdb_dir_deleter> gdb_dir_up;
-
-/* Return true if the file NAME exists and is a regular file.
-   If the result is false then *ERRNO_PTR is set to a useful value assuming
-   we're expecting a regular file.  */
-extern bool is_regular_file (const char *name, int *errno_ptr);
-
-
-/* A cheap (as in low-quality) recursive mkdir.  Try to create all the
-   parents directories up to DIR and DIR itself.  Stop if we hit an
-   error along the way.  There is no attempt to remove created
-   directories in case of failure.
-
-   Returns false on failure and sets errno.  */
-
-extern bool mkdir_recursive (const char *dir);
-
-#endif /* COMMON_FILESTUFF_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/filtered-iterator.h ./gdb/gdbsupport/filtered-iterator.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/filtered-iterator.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/filtered-iterator.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,87 +0,0 @@
-/* A forward filtered iterator for GDB, the GNU debugger.
-   Copyright (C) 2018-2020 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 COMMON_FILTERED_ITERATOR_H
-#define COMMON_FILTERED_ITERATOR_H
-
-/* A filtered iterator.  This wraps BaseIterator and automatically
-   skips elements that FilterFunc filters out.  Requires that
-   default-constructing a BaseIterator creates a valid one-past-end
-   iterator.  */
-
-template<typename BaseIterator, typename FilterFunc>
-class filtered_iterator
-{
-public:
-  typedef filtered_iterator self_type;
-  typedef typename BaseIterator::value_type value_type;
-  typedef typename BaseIterator::reference reference;
-  typedef typename BaseIterator::pointer pointer;
-  typedef typename BaseIterator::iterator_category iterator_category;
-  typedef typename BaseIterator::difference_type difference_type;
-
-  /* Construct by forwarding all arguments to the underlying
-     iterator.  */
-  template<typename... Args>
-  explicit filtered_iterator (Args &&...args)
-    : m_it (std::forward<Args> (args)...)
-  { skip_filtered (); }
-
-  /* Create a one-past-end iterator.  */
-  filtered_iterator () = default;
-
-  /* Need these as the variadic constructor would be a better match
-     otherwise.  */
-  filtered_iterator (filtered_iterator &) = default;
-  filtered_iterator (const filtered_iterator &) = default;
-  filtered_iterator (filtered_iterator &&) = default;
-  filtered_iterator (const filtered_iterator &&other)
-    : filtered_iterator (static_cast<const filtered_iterator &> (other))
-  {}
-
-  value_type operator* () const { return *m_it; }
-
-  self_type &operator++ ()
-  {
-    ++m_it;
-    skip_filtered ();
-    return *this;
-  }
-
-  bool operator== (const self_type &other) const
-  { return m_it == other.m_it; }
-
-  bool operator!= (const self_type &other) const
-  { return m_it != other.m_it; }
-
-private:
-
-  void skip_filtered ()
-  {
-    for (; m_it != m_end; ++m_it)
-      if (m_filter (*m_it))
-	break;
-  }
-
-private:
-  FilterFunc m_filter {};
-  BaseIterator m_it {};
-  BaseIterator m_end {};
-};
-
-#endif /* COMMON_FILTERED_ITERATOR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/format.c ./gdb/gdbsupport/format.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/format.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/format.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,412 +0,0 @@
-/* Parse a printf-style format string.
-
-   Copyright (C) 1986-2020 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"
-#include "format.h"
-
-format_pieces::format_pieces (const char **arg, bool gdb_extensions)
-{
-  const char *s;
-  const char *string;
-  const char *prev_start;
-  const char *percent_loc;
-  char *sub_start, *current_substring;
-  enum argclass this_argclass;
-
-  s = *arg;
-
-  if (gdb_extensions)
-    {
-      string = *arg;
-      *arg += strlen (*arg);
-    }
-  else
-    {
-      /* Parse the format-control string and copy it into the string STRING,
-	 processing some kinds of escape sequence.  */
-
-      char *f = (char *) alloca (strlen (s) + 1);
-      string = f;
-
-      while ((gdb_extensions || *s != '"') && *s != '\0')
-	{
-	  int c = *s++;
-	  switch (c)
-	    {
-	    case '\0':
-	      continue;
-
-	    case '\\':
-	      switch (c = *s++)
-		{
-		case '\\':
-		  *f++ = '\\';
-		  break;
-		case 'a':
-		  *f++ = '\a';
-		  break;
-		case 'b':
-		  *f++ = '\b';
-		  break;
-		case 'e':
-		  *f++ = '\e';
-		  break;
-		case 'f':
-		  *f++ = '\f';
-		  break;
-		case 'n':
-		  *f++ = '\n';
-		  break;
-		case 'r':
-		  *f++ = '\r';
-		  break;
-		case 't':
-		  *f++ = '\t';
-		  break;
-		case 'v':
-		  *f++ = '\v';
-		  break;
-		case '"':
-		  *f++ = '"';
-		  break;
-		default:
-		  /* ??? TODO: handle other escape sequences.  */
-		  error (_("Unrecognized escape character \\%c in format string."),
-			 c);
-		}
-	      break;
-
-	    default:
-	      *f++ = c;
-	    }
-	}
-
-      /* Terminate our escape-processed copy.  */
-      *f++ = '\0';
-
-      /* Whether the format string ended with double-quote or zero, we're
-	 done with it; it's up to callers to complain about syntax.  */
-      *arg = s;
-    }
-
-  /* Need extra space for the '\0's.  Doubling the size is sufficient.  */
-
-  current_substring = (char *) xmalloc (strlen (string) * 2 + 1000);
-  m_storage.reset (current_substring);
-
-  /* Now scan the string for %-specs and see what kinds of args they want.
-     argclass classifies the %-specs so we can give printf-type functions
-     something of the right size.  */
-
-  const char *f = string;
-  prev_start = string;
-  while (*f)
-    if (*f++ == '%')
-      {
-	int seen_hash = 0, seen_zero = 0, lcount = 0, seen_prec = 0;
-	int seen_space = 0, seen_plus = 0;
-	int seen_big_l = 0, seen_h = 0, seen_big_h = 0;
-	int seen_big_d = 0, seen_double_big_d = 0;
-	int seen_size_t = 0;
-	int bad = 0;
-	int n_int_args = 0;
-	bool seen_i64 = false;
-
-	/* Skip over "%%", it will become part of a literal piece.  */
-	if (*f == '%')
-	  {
-	    f++;
-	    continue;
-	  }
-
-	sub_start = current_substring;
-
-	strncpy (current_substring, prev_start, f - 1 - prev_start);
-	current_substring += f - 1 - prev_start;
-	*current_substring++ = '\0';
-
-	if (*sub_start != '\0')
-	  m_pieces.emplace_back (sub_start, literal_piece, 0);
-
-	percent_loc = f - 1;
-
-	/* Check the validity of the format specifier, and work
-	   out what argument it expects.  We only accept C89
-	   format strings, with the exception of long long (which
-	   we autoconf for).  */
-
-	/* The first part of a format specifier is a set of flag
-	   characters.  */
-	while (*f != '\0' && strchr ("0-+ #", *f))
-	  {
-	    if (*f == '#')
-	      seen_hash = 1;
-	    else if (*f == '0')
-	      seen_zero = 1;
-	    else if (*f == ' ')
-	      seen_space = 1;
-	    else if (*f == '+')
-	      seen_plus = 1;
-	    f++;
-	  }
-
-	/* The next part of a format specifier is a width.  */
-	if (gdb_extensions && *f == '*')
-	  {
-	    ++f;
-	    ++n_int_args;
-	  }
-	else
-	  {
-	    while (*f != '\0' && strchr ("0123456789", *f))
-	      f++;
-	  }
-
-	/* The next part of a format specifier is a precision.  */
-	if (*f == '.')
-	  {
-	    seen_prec = 1;
-	    f++;
-	    if (gdb_extensions && *f == '*')
-	      {
-		++f;
-		++n_int_args;
-	      }
-	    else
-	      {
-		while (*f != '\0' && strchr ("0123456789", *f))
-		  f++;
-	      }
-	  }
-
-	/* The next part of a format specifier is a length modifier.  */
-	switch (*f)
-	  {
-	  case 'h':
-	    seen_h = 1;
-	    f++;
-	    break;
-	  case 'l':
-	    f++;
-	    lcount++;
-	    if (*f == 'l')
-	      {
-		f++;
-		lcount++;
-	      }
-	    break;
-	  case 'L':
-	    seen_big_l = 1;
-	    f++;
-	    break;
-	  case 'H':
-	    /* Decimal32 modifier.  */
-	    seen_big_h = 1;
-	    f++;
-	    break;
-	  case 'D':
-	    /* Decimal64 and Decimal128 modifiers.  */
-	    f++;
-
-	    /* Check for a Decimal128.  */
-	    if (*f == 'D')
-	      {
-		f++;
-		seen_double_big_d = 1;
-	      }
-	    else
-	      seen_big_d = 1;
-	    break;
-	  case 'z':
-	    /* For size_t or ssize_t.  */
-	    seen_size_t = 1;
-	    f++;
-	    break;
-	  case 'I':
-	    /* Support the Windows '%I64' extension, because an
-	       earlier call to format_pieces might have converted %lld
-	       to %I64d.  */
-	    if (f[1] == '6' && f[2] == '4')
-	      {
-		f += 3;
-		lcount = 2;
-		seen_i64 = true;
-	      }
-	    break;
-	}
-
-	switch (*f)
-	  {
-	  case 'u':
-	    if (seen_hash)
-	      bad = 1;
-	    /* FALLTHROUGH */
-
-	  case 'o':
-	  case 'x':
-	  case 'X':
-	    if (seen_space || seen_plus)
-	      bad = 1;
-	  /* FALLTHROUGH */
-
-	  case 'd':
-	  case 'i':
-	    if (seen_size_t)
-	      this_argclass = size_t_arg;
-	    else if (lcount == 0)
-	      this_argclass = int_arg;
-	    else if (lcount == 1)
-	      this_argclass = long_arg;
-	    else
-	      this_argclass = long_long_arg;
-
-	    if (seen_big_l)
-	      bad = 1;
-	    break;
-
-	  case 'c':
-	    this_argclass = lcount == 0 ? int_arg : wide_char_arg;
-	    if (lcount > 1 || seen_h || seen_big_l)
-	      bad = 1;
-	    if (seen_prec || seen_zero || seen_space || seen_plus)
-	      bad = 1;
-	    break;
-
-	  case 'p':
-	    this_argclass = ptr_arg;
-	    if (lcount || seen_h || seen_big_l)
-	      bad = 1;
-	    if (seen_prec)
-	      bad = 1;
-	    if (seen_hash || seen_zero || seen_space || seen_plus)
-	      bad = 1;
-
-	    if (gdb_extensions)
-	      {
-		switch (f[1])
-		  {
-		  case 's':
-		  case 'F':
-		  case '[':
-		  case ']':
-		    f++;
-		    break;
-		  }
-	      }
-
-	    break;
-
-	  case 's':
-	    this_argclass = lcount == 0 ? string_arg : wide_string_arg;
-	    if (lcount > 1 || seen_h || seen_big_l)
-	      bad = 1;
-	    if (seen_zero || seen_space || seen_plus)
-	      bad = 1;
-	    break;
-
-	  case 'e':
-	  case 'f':
-	  case 'g':
-	  case 'E':
-	  case 'G':
-	    if (seen_double_big_d)
-	      this_argclass = dec128float_arg;
-	    else if (seen_big_d)
-	      this_argclass = dec64float_arg;
-	    else if (seen_big_h)
-	      this_argclass = dec32float_arg;
-	    else if (seen_big_l)
-	      this_argclass = long_double_arg;
-	    else
-	      this_argclass = double_arg;
-
-	    if (lcount || seen_h)
-	      bad = 1;
-	    break;
-
-	  case '*':
-	    error (_("`*' not supported for precision or width in printf"));
-
-	  case 'n':
-	    error (_("Format specifier `n' not supported in printf"));
-
-	  case '\0':
-	    error (_("Incomplete format specifier at end of format string"));
-
-	  default:
-	    error (_("Unrecognized format specifier '%c' in printf"), *f);
-	  }
-
-	if (bad)
-	  error (_("Inappropriate modifiers to "
-		   "format specifier '%c' in printf"),
-		 *f);
-
-	f++;
-
-	sub_start = current_substring;
-
-	if (lcount > 1 && !seen_i64 && USE_PRINTF_I64)
-	  {
-	    /* Windows' printf does support long long, but not the usual way.
-	       Convert %lld to %I64d.  */
-	    int length_before_ll = f - percent_loc - 1 - lcount;
-
-	    strncpy (current_substring, percent_loc, length_before_ll);
-	    strcpy (current_substring + length_before_ll, "I64");
-	    current_substring[length_before_ll + 3] =
-	      percent_loc[length_before_ll + lcount];
-	    current_substring += length_before_ll + 4;
-	  }
-	else if (this_argclass == wide_string_arg
-		 || this_argclass == wide_char_arg)
-	  {
-	    /* Convert %ls or %lc to %s.  */
-	    int length_before_ls = f - percent_loc - 2;
-
-	    strncpy (current_substring, percent_loc, length_before_ls);
-	    strcpy (current_substring + length_before_ls, "s");
-	    current_substring += length_before_ls + 2;
-	  }
-	else
-	  {
-	    strncpy (current_substring, percent_loc, f - percent_loc);
-	    current_substring += f - percent_loc;
-	  }
-
-	*current_substring++ = '\0';
-
-	prev_start = f;
-
-	m_pieces.emplace_back (sub_start, this_argclass, n_int_args);
-      }
-
-  /* Record the remainder of the string.  */
-
-  if (f > prev_start)
-    {
-      sub_start = current_substring;
-
-      strncpy (current_substring, prev_start, f - prev_start);
-      current_substring += f - prev_start;
-      *current_substring++ = '\0';
-
-      m_pieces.emplace_back (sub_start, literal_piece, 0);
-    }
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/format.h ./gdb/gdbsupport/format.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/format.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/format.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,101 +0,0 @@
-/* Parse a printf-style format string.
-
-   Copyright (C) 1986-2020 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 COMMON_FORMAT_H
-#define COMMON_FORMAT_H
-
-#include "gdbsupport/gdb_string_view.h"
-
-#if defined(__MINGW32__) && !defined(PRINTF_HAS_LONG_LONG)
-# define USE_PRINTF_I64 1
-# define PRINTF_HAS_LONG_LONG
-#else
-# define USE_PRINTF_I64 0
-#endif
-
-/* The argclass represents the general type of data that goes with a
-   format directive; int_arg for %d, long_arg for %l, and so forth.
-   Note that these primarily distinguish types by size and need for
-   special handling, so for instance %u and %x are (at present) also
-   classed as int_arg.  */
-
-enum argclass
-  {
-    literal_piece,
-    int_arg, long_arg, long_long_arg, size_t_arg, ptr_arg,
-    string_arg, wide_string_arg, wide_char_arg,
-    double_arg, long_double_arg,
-    dec32float_arg, dec64float_arg, dec128float_arg
-  };
-
-/* A format piece is a section of the format string that may include a
-   single print directive somewhere in it, and the associated class
-   for the argument.  */
-
-struct format_piece
-{
-  format_piece (const char *str, enum argclass argc, int n)
-    : string (str),
-      argclass (argc),
-      n_int_args (n)
-  {
-  }
-
-  bool operator== (const format_piece &other) const
-  {
-    return (this->argclass == other.argclass
-	    && gdb::string_view (this->string) == other.string);
-  }
-
-  const char *string;
-  enum argclass argclass;
-  /* Count the number of preceding 'int' arguments that must be passed
-     along.  This is used for a width or precision of '*'.  Note that
-     this feature is only available in "gdb_extensions" mode.  */
-  int n_int_args;
-};
-
-class format_pieces
-{
-public:
-
-  format_pieces (const char **arg, bool gdb_extensions = false);
-  ~format_pieces () = default;
-
-  DISABLE_COPY_AND_ASSIGN (format_pieces);
-
-  typedef std::vector<format_piece>::iterator iterator;
-
-  iterator begin ()
-  {
-    return m_pieces.begin ();
-  }
-
-  iterator end ()
-  {
-    return m_pieces.end ();
-  }
-
-private:
-
-  std::vector<format_piece> m_pieces;
-  gdb::unique_xmalloc_ptr<char> m_storage;
-};
-
-#endif /* COMMON_FORMAT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/forward-scope-exit.h ./gdb/gdbsupport/forward-scope-exit.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/forward-scope-exit.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/forward-scope-exit.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,123 +0,0 @@
-/* Copyright (C) 2019-2020 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 COMMON_FORWARD_SCOPE_EXIT_H
-#define COMMON_FORWARD_SCOPE_EXIT_H
-
-#include "gdbsupport/scope-exit.h"
-#include <functional>
-
-/* A forward_scope_exit is like scope_exit, but instead of giving it a
-   callable, you instead specialize it for a given cleanup function,
-   and the generated class automatically has a constructor with the
-   same interface as the cleanup function.  forward_scope_exit
-   captures the arguments passed to the ctor, and in turn passes those
-   as arguments to the wrapped cleanup function, when it is called at
-   scope exit time, from within the forward_scope_exit dtor.  The
-   forward_scope_exit class can take any number of arguments, and is
-   cancelable if needed.
-
-   This allows usage like this:
-
-      void
-      delete_longjmp_breakpoint (int arg)
-      {
-	// Blah, blah, blah...
-      }
-
-      using longjmp_breakpoint_cleanup
-	= FORWARD_SCOPE_EXIT (delete_longjmp_breakpoint);
-
-   This above created a new cleanup class `longjmp_breakpoint_cleanup`
-   than can then be used like this:
-
-      longjmp_breakpoint_cleanup obj (thread);
-
-      // Blah, blah, blah...
-
-      obj.release ();  // Optional cancel if needed.
-
-   forward_scope_exit is also handy when you would need to wrap a
-   scope_exit in a gdb::optional:
-
-      gdb::optional<longjmp_breakpoint_cleanup> cleanup;
-      if (some condition)
-	cleanup.emplace (thread);
-      ...
-      if (cleanup)
-	cleanup->release ();
-
-   since with scope exit, you would have to know the scope_exit's
-   callable template type when you create the gdb::optional:
-
-     gdb:optional<scope_exit<what goes here?>>
-
-   The "forward" naming fits both purposes shown above -- the class
-   "forwards" ctor arguments to the wrapped cleanup function at scope
-   exit time, and can also be used to "forward declare"
-   scope_exit-like objects.  */
-
-namespace detail
-{
-
-/* Function and Signature are passed in the same type, in order to
-   extract Function's arguments' types in the specialization below.
-   Those are used to generate the constructor.  */
-
-template<typename Function, Function *function, typename Signature>
-struct forward_scope_exit;
-
-template<typename Function, Function *function,
-	 typename Res, typename... Args>
-class forward_scope_exit<Function, function, Res (Args...)>
-  : public scope_exit_base<forward_scope_exit<Function,
-					      function,
-					      Res (Args...)>>
-{
-  /* For access to on_exit().  */
-  friend scope_exit_base<forward_scope_exit<Function,
-					    function,
-					    Res (Args...)>>;
-
-public:
-  explicit forward_scope_exit (Args ...args)
-    : m_bind_function (function, args...)
-  {
-    /* Nothing.  */
-  }
-
-private:
-  void on_exit ()
-  {
-    m_bind_function ();
-  }
-
-  /* The function and the arguments passed to the ctor, all packed in
-     a std::bind.  */
-  decltype (std::bind (function, std::declval<Args> ()...))
-    m_bind_function;
-};
-
-} /* namespace detail */
-
-/* This is the "public" entry point.  It's a macro to avoid having to
-   name FUNC more than once.  */
-
-#define FORWARD_SCOPE_EXIT(FUNC) \
-  detail::forward_scope_exit<decltype (FUNC), FUNC, decltype (FUNC)>
-
-#endif /* COMMON_FORWARD_SCOPE_EXIT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/function-view.h ./gdb/gdbsupport/function-view.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/function-view.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/function-view.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,323 +0,0 @@
-/* Copyright (C) 2017-2020 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 COMMON_FUNCTION_VIEW_H
-#define COMMON_FUNCTION_VIEW_H
-
-/* function_view is a polymorphic type-erasing wrapper class that
-   encapsulates a non-owning reference to arbitrary callable objects.
-
-   A way to put it is that function_view is to std::function like
-   std::string_view is to std::string.  While std::function stores a
-   type-erased callable object internally, function_view holds a
-   type-erased reference to an external callable object.
-
-   This is meant to be used as callback type of a function that:
-
-     #1 - Takes a callback as parameter.
-
-     #2 - Wants to support arbitrary callable objects as callback type
-	  (e.g., stateful function objects, lambda closures, free
-	  functions).
-
-     #3 - Does not store the callback anywhere; instead the function
-	  just calls the callback directly or forwards it to some
-	  other function that calls it.
-
-     #4 - Can't be, or we don't want it to be, a template function
-	  with the callable type as template parameter.  For example,
-	  when the callback is a parameter of a virtual member
-	  function, or when putting the function template in a header
-	  would expose too much implementation detail.
-
-   Note that the C-style "function pointer" + "void *data" callback
-   parameter idiom fails requirement #2 above.  Please don't add new
-   uses of that idiom.  I.e., something like this wouldn't work;
-
-    typedef bool (iterate_over_foos_cb) (foo *f, void *user_data),
-    void iterate_over_foos (iterate_over_foos_cb *callback, void *user_data);
-
-    foo *find_foo_by_type (int type)
-    {
-      foo *found = nullptr;
-
-      iterate_over_foos ([&] (foo *f, void *data)
-	{
-	  if (foo->type == type)
-	    {
-	      found = foo;
-	      return true; // stop iterating
-	    }
-	  return false; // continue iterating
-	}, NULL);
-
-      return found;
-    }
-
-   The above wouldn't compile, because lambdas with captures can't be
-   implicitly converted to a function pointer (because a capture means
-   some context data must be passed to the lambda somehow).
-
-   C++11 gave us std::function as type-erased wrapper around arbitrary
-   callables, however, std::function is not an ideal fit for transient
-   callbacks such as the use case above.  For this use case, which is
-   quite pervasive, a function_view is a better choice, because while
-   function_view is light and does not require any heap allocation,
-   std::function is a heavy-weight object with value semantics that
-   generally requires a heap allocation on construction/assignment of
-   the target callable.  In addition, while it is possible to use
-   std::function in such a way that avoids most of the overhead by
-   making sure to only construct it with callables of types that fit
-   std::function's small object optimization, such as function
-   pointers and std::reference_wrapper callables, that is quite
-   inconvenient in practice, because restricting to free-function
-   callables would imply no state/capture/closure, which we need in
-   most cases, and std::reference_wrapper implies remembering to use
-   std::ref/std::cref where the callable is constructed, with the
-   added inconvenience that std::ref/std::cref have deleted rvalue-ref
-   overloads, meaning you can't use unnamed/temporary lambdas with
-   them.
-
-   Note that because function_view is a non-owning view of a callable,
-   care must be taken to ensure that the callable outlives the
-   function_view that calls it.  This is not really a problem for the
-   use case function_view is intended for, such as passing a temporary
-   function object / lambda to a function that accepts a callback,
-   because in those cases, the temporary is guaranteed to be live
-   until the called function returns.
-
-   Calling a function_view with no associated target is undefined,
-   unlike with std::function, which throws std::bad_function_call.
-   This is by design, to avoid the otherwise necessary NULL check in
-   function_view::operator().
-
-   Since function_view objects are small (a pair of pointers), they
-   should generally be passed around by value.
-
-   Usage:
-
-   Given this function that accepts a callback:
-
-    void
-    iterate_over_foos (gdb::function_view<void (foo *)> callback)
-    {
-       for (auto &foo : foos)
-	 callback (&foo);
-    }
-
-   you can call it like this, passing a lambda as callback:
-
-    iterate_over_foos ([&] (foo *f)
-      {
-	process_one_foo (f);
-      });
-
-   or like this, passing a function object as callback:
-
-    struct function_object
-    {
-      void operator() (foo *f)
-      {
-	if (s->check ())
-	  process_one_foo (f);
-      }
-
-      // some state
-      state *s;
-    };
-
-    state mystate;
-    function_object matcher {&mystate};
-    iterate_over_foos (matcher);
-
-  or like this, passing a function pointer as callback:
-
-    iterate_over_foos (process_one_foo);
-
-  You can find unit tests covering the whole API in
-  unittests/function-view-selftests.c.  */
-
-namespace gdb {
-
-namespace fv_detail {
-/* Bits shared by all function_view instantiations that do not depend
-   on the template parameters.  */
-
-/* Storage for the erased callable.  This is a union in order to be
-   able to save both a function object (data) pointer or a function
-   pointer without triggering undefined behavior.  */
-union erased_callable
-{
-  /* For function objects.  */
-  void *data;
-
-    /* For function pointers.  */
-  void (*fn) ();
-};
-
-} /* namespace fv_detail */
-
-/* Use partial specialization to get access to the callable's
-   signature. */
-template<class Signature>
-struct function_view;
-
-template<typename Res, typename... Args>
-class function_view<Res (Args...)>
-{
-  template<typename From, typename To>
-  using CompatibleReturnType
-    = Or<std::is_void<To>,
-	 std::is_same<From, To>,
-	 std::is_convertible<From, To>>;
-
-  /* True if Func can be called with Args, and either the result is
-     Res, convertible to Res or Res is void.  */
-  template<typename Callable,
-	   typename Res2 = typename std::result_of<Callable &(Args...)>::type>
-  struct IsCompatibleCallable : CompatibleReturnType<Res2, Res>
-  {};
-
-  /* True if Callable is a function_view.  Used to avoid hijacking the
-     copy ctor.  */
-  template <typename Callable>
-  struct IsFunctionView
-    : std::is_same<function_view, typename std::decay<Callable>::type>
-  {};
-
- public:
-
-  /* NULL by default.  */
-  constexpr function_view () noexcept
-    : m_erased_callable {},
-      m_invoker {}
-  {}
-
-  /* Default copy/assignment is fine.  */
-  function_view (const function_view &) = default;
-  function_view &operator= (const function_view &) = default;
-
-  /* This is the main entry point.  Use SFINAE to avoid hijacking the
-     copy constructor and to ensure that the target type is
-     compatible.  */
-  template
-    <typename Callable,
-     typename = Requires<Not<IsFunctionView<Callable>>>,
-     typename = Requires<IsCompatibleCallable<Callable>>>
-  function_view (Callable &&callable) noexcept
-  {
-    bind (callable);
-  }
-
-  /* Construct a NULL function_view.  */
-  constexpr function_view (std::nullptr_t) noexcept
-    : m_erased_callable {},
-      m_invoker {}
-  {}
-
-  /* Clear a function_view.  */
-  function_view &operator= (std::nullptr_t) noexcept
-  {
-    m_invoker = nullptr;
-    return *this;
-  }
-
-  /* Return true if the wrapper has a target, false otherwise.  Note
-     we check M_INVOKER instead of M_ERASED_CALLABLE because we don't
-     know which member of the union is active right now.  */
-  constexpr explicit operator bool () const noexcept
-  { return m_invoker != nullptr; }
-
-  /* Call the callable.  */
-  Res operator () (Args... args) const
-  { return m_invoker (m_erased_callable, std::forward<Args> (args)...); }
-
- private:
-
-  /* Bind this function_view to a compatible function object
-     reference.  */
-  template <typename Callable>
-  void bind (Callable &callable) noexcept
-  {
-    m_erased_callable.data = (void *) std::addressof (callable);
-    m_invoker = [] (fv_detail::erased_callable ecall, Args... args)
-      noexcept (noexcept (callable (std::forward<Args> (args)...))) -> Res
-      {
-	auto &restored_callable = *static_cast<Callable *> (ecall.data);
-	/* The explicit cast to Res avoids a compile error when Res is
-	   void and the callable returns non-void.  */
-	return (Res) restored_callable (std::forward<Args> (args)...);
-      };
-  }
-
-  /* Bind this function_view to a compatible function pointer.
-
-     Making this a separate function allows avoiding one indirection,
-     by storing the function pointer directly in the storage, instead
-     of a pointer to pointer.  erased_callable is then a union in
-     order to avoid storing a function pointer as a data pointer here,
-     which would be undefined.  */
-  template<class Res2, typename... Args2>
-  void bind (Res2 (*fn) (Args2...)) noexcept
-  {
-    m_erased_callable.fn = reinterpret_cast<void (*) ()> (fn);
-    m_invoker = [] (fv_detail::erased_callable ecall, Args... args)
-      noexcept (noexcept (fn (std::forward<Args> (args)...))) -> Res
-      {
-	auto restored_fn = reinterpret_cast<Res2 (*) (Args2...)> (ecall.fn);
-	/* The explicit cast to Res avoids a compile error when Res is
-	   void and the callable returns non-void.  */
-	return (Res) restored_fn (std::forward<Args> (args)...);
-      };
-  }
-
-  /* Storage for the erased callable.  */
-  fv_detail::erased_callable m_erased_callable;
-
-  /* The invoker.  This is set to a capture-less lambda by one of the
-     'bind' overloads.  The lambda restores the right type of the
-     callable (which is passed as first argument), and forwards the
-     args.  */
-  Res (*m_invoker) (fv_detail::erased_callable, Args...);
-};
-
-/* Allow comparison with NULL.  Defer the work to the in-class
-   operator bool implementation.  */
-
-template<typename Res, typename... Args>
-constexpr inline bool
-operator== (const function_view<Res (Args...)> &f, std::nullptr_t) noexcept
-{ return !static_cast<bool> (f); }
-
-template<typename Res, typename... Args>
-constexpr inline bool
-operator== (std::nullptr_t, const function_view<Res (Args...)> &f) noexcept
-{ return !static_cast<bool> (f); }
-
-template<typename Res, typename... Args>
-constexpr inline bool
-operator!= (const function_view<Res (Args...)> &f, std::nullptr_t) noexcept
-{ return static_cast<bool> (f); }
-
-template<typename Res, typename... Args>
-constexpr inline bool
-operator!= (std::nullptr_t, const function_view<Res (Args...)> &f) noexcept
-{ return static_cast<bool> (f); }
-
-} /* namespace gdb */
-
-#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_assert.h ./gdb/gdbsupport/gdb_assert.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_assert.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_assert.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,61 +0,0 @@
-/* GDB-friendly replacement for <assert.h>.
-   Copyright (C) 2000-2020 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 COMMON_GDB_ASSERT_H
-#define COMMON_GDB_ASSERT_H
-
-#include "errors.h"
-
-/* A static assertion.  This will cause a compile-time error if EXPR,
-   which must be a compile-time constant, is false.  */
-
-#define gdb_static_assert(expr) static_assert (expr, "")
-
-/* PRAGMATICS: "gdb_assert.h":gdb_assert() is a lower case (rather
-   than upper case) macro since that provides the closest fit to the
-   existing lower case macro <assert.h>:assert() that it is
-   replacing.  */
-
-#define gdb_assert(expr)                                                      \
-  ((void) ((expr) ? 0 :                                                       \
-	   (gdb_assert_fail (#expr, __FILE__, __LINE__, FUNCTION_NAME), 0)))
-
-/* This prints an "Assertion failed" message, asking the user if they
-   want to continue, dump core, or just exit.  */
-#if defined (FUNCTION_NAME)
-#define gdb_assert_fail(assertion, file, line, function)                      \
-  internal_error (file, line, _("%s: Assertion `%s' failed."),                \
-		  function, assertion)
-#else
-#define gdb_assert_fail(assertion, file, line, function)                      \
-  internal_error (file, line, _("Assertion `%s' failed."),                    \
-		  assertion)
-#endif
-
-/* The canonical form of gdb_assert (0).
-   MESSAGE is a string to include in the error message.  */
-
-#if defined (FUNCTION_NAME)
-#define gdb_assert_not_reached(message) \
-  internal_error (__FILE__, __LINE__, "%s: %s", FUNCTION_NAME, _(message))
-#else
-#define gdb_assert_not_reached(message) \
-  internal_error (__FILE__, __LINE__, _(message))
-#endif
-
-#endif /* COMMON_GDB_ASSERT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_binary_search.h ./gdb/gdbsupport/gdb_binary_search.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_binary_search.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_binary_search.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,59 +0,0 @@
-/* C++ implementation of a binary search.
-
-   Copyright (C) 2019-2020 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_BINARY_SEARCH_H
-#define GDBSUPPORT_GDB_BINARY_SEARCH_H
-
-#include <algorithm>
-
-namespace gdb {
-
-/* Implements a binary search using C++ iterators.
-   This differs from std::binary_search in that it returns an interator for
-   the found element and in that the type of EL can be different from the
-   type of the elements in the countainer.
-
-   COMP is a C-style comparison function with signature:
-   int comp(const value_type& a, const T& b);
-   It should return -1, 0 or 1 if a is less than, equal to, or greater than
-   b, respectively.
-   [first, last) must be sorted.
-
-   The return value is an iterator pointing to the found element, or LAST if
-   no element was found.  */
-template<typename It, typename T, typename Comp>
-It binary_search (It first, It last, T el, Comp comp)
-{
-  auto lt = [&] (const typename std::iterator_traits<It>::value_type &a,
-		 const T &b)
-    { return comp (a, b) < 0; };
-
-  auto lb = std::lower_bound (first, last, el, lt);
-  if (lb != last)
-    {
-      if (comp (*lb, el) == 0)
-	return lb;
-    }
-  return last;
-}
-
-} /* namespace gdb */
-
-#endif /* GDBSUPPORT_GDB_BINARY_SEARCH_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb-dlfcn.c ./gdb/gdbsupport/gdb-dlfcn.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb-dlfcn.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb-dlfcn.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,118 +0,0 @@
-/* Platform independent shared object routines for GDB.
-
-   Copyright (C) 2011-2020 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"
-#include "gdb-dlfcn.h"
-
-#ifdef HAVE_DLFCN_H
-#include <dlfcn.h>
-#elif __MINGW32__
-#include <windows.h>
-#else
-/* Unsupported configuration. */
-#define NO_SHARED_LIB
-#endif
-
-#ifdef NO_SHARED_LIB
-
-gdb_dlhandle_up
-gdb_dlopen (const char *filename)
-{
-  gdb_assert_not_reached ("gdb_dlopen should not be called on this platform.");
-}
-
-void *
-gdb_dlsym (const gdb_dlhandle_up &handle, const char *symbol)
-{
-  gdb_assert_not_reached ("gdb_dlsym should not be called on this platform.");
-}
-
-void
-dlclose_deleter::operator() (void *handle) const
-{
-  gdb_assert_not_reached ("gdb_dlclose should not be called on this platform.");
-}
-
-int
-is_dl_available (void)
-{
-  return 0;
-}
-
-#else /* NO_SHARED_LIB */
-
-gdb_dlhandle_up
-gdb_dlopen (const char *filename)
-{
-  void *result;
-#ifdef HAVE_DLFCN_H
-  result = dlopen (filename, RTLD_NOW);
-#elif __MINGW32__
-  result = (void *) LoadLibrary (filename);
-#endif
-  if (result != NULL)
-    return gdb_dlhandle_up (result);
-
-#ifdef HAVE_DLFCN_H
-  error (_("Could not load %s: %s"), filename, dlerror());
-#else
-  {
-    LPVOID buffer;
-    DWORD dw;
-
-    dw = GetLastError();
-
-    FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
-                   FORMAT_MESSAGE_IGNORE_INSERTS,
-                   NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-                   (LPTSTR) &buffer,
-                   0, NULL);
-
-    error (_("Could not load %s: %s"), filename, (char *) buffer);
-  }
-#endif
-}
-
-void *
-gdb_dlsym (const gdb_dlhandle_up &handle, const char *symbol)
-{
-#ifdef HAVE_DLFCN_H
-  return dlsym (handle.get (), symbol);
-#elif __MINGW32__
-  return (void *) GetProcAddress ((HMODULE) handle.get (), symbol);
-#endif
-}
-
-void
-dlclose_deleter::operator() (void *handle) const
-{
-#ifdef HAVE_DLFCN_H
-  dlclose (handle);
-#elif __MINGW32__
-  FreeLibrary ((HMODULE) handle);
-#endif
-}
-
-int
-is_dl_available (void)
-{
-  return 1;
-}
-
-#endif /* NO_SHARED_LIB */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb-dlfcn.h ./gdb/gdbsupport/gdb-dlfcn.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb-dlfcn.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb-dlfcn.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,51 +0,0 @@
-/* Platform independent shared object routines for GDB.
-
-   Copyright (C) 2011-2020 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_DLFCN_H
-#define GDB_DLFCN_H
-
-/* A deleter that closes an open dynamic library.  */
-
-struct dlclose_deleter
-{
-  void operator() (void *handle) const;
-};
-
-/* A unique pointer that points to a dynamic library.  */
-
-typedef std::unique_ptr<void, dlclose_deleter> gdb_dlhandle_up;
-
-/* Load the dynamic library file named FILENAME, and return a handle
-   for that dynamic library.  Return NULL if the loading fails for any
-   reason.  */
-
-gdb_dlhandle_up gdb_dlopen (const char *filename);
-
-/* Return the address of the symbol named SYMBOL inside the shared
-   library whose handle is HANDLE.  Return NULL when the symbol could
-   not be found.  */
-
-void *gdb_dlsym (const gdb_dlhandle_up &handle, const char *symbol);
-
-/* Return non-zero if the dynamic library functions are available on
-   this platform.  */
-
-int is_dl_available(void);
-
-#endif /* GDB_DLFCN_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_locale.h ./gdb/gdbsupport/gdb_locale.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_locale.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_locale.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,43 +0,0 @@
-/* GDB-friendly replacement for <locale.h>.
-   Copyright (C) 2002-2020 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 COMMON_GDB_LOCALE_H
-#define COMMON_GDB_LOCALE_H
-
-#ifdef HAVE_LOCALE_H
-# include <locale.h>
-#endif
-
-#ifdef ENABLE_NLS
-# include <libintl.h>
-# define _(String) gettext (String)
-# ifdef gettext_noop
-#  define N_(String) gettext_noop (String)
-# else
-#  define N_(String) (String)
-# endif
-#else
-# define _(String) (String)
-# define N_(String) (String)
-#endif
-
-#ifdef HAVE_LANGINFO_CODESET
-#include <langinfo.h>
-#endif
-
-#endif /* COMMON_GDB_LOCALE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_optional.h ./gdb/gdbsupport/gdb_optional.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_optional.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_optional.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,219 +0,0 @@
-/* An optional object.
-
-   Copyright (C) 2017-2020 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 COMMON_GDB_OPTIONAL_H
-#define COMMON_GDB_OPTIONAL_H
-
-#include "gdbsupport/traits.h"
-
-namespace gdb
-{
-
-struct in_place_t
-{
-  explicit in_place_t () = default;
-};
-
-constexpr gdb::in_place_t in_place {};
-
-/* This class attempts to be a compatible subset of std::optional,
-   which is slated to be available in C++17.  This class optionally
-   holds an object of some type -- by default it is constructed not
-   holding an object, but later the object can be "emplaced".  This is
-   similar to using std::unique_ptr, but in-object allocation is
-   guaranteed.
-
-   Unlike std::optional, we currently only support copy/move
-   construction/assignment of an optional<T> from either exactly
-   optional<T> or T.  I.e., we don't support copy/move
-   construction/assignment from optional<U> or U, when U is a type
-   convertible to T.  Making that work depending on the definitions of
-   T and U is somewhat complicated, and currently the users of this
-   class don't need it.  */
-
-template<typename T>
-class optional
-{
-public:
-
-  constexpr optional ()
-    : m_dummy ()
-  {}
-
-  template<typename... Args>
-  constexpr optional (in_place_t, Args &&... args)
-    : m_item (std::forward<Args> (args)...),
-      m_instantiated (true)
-  {}
-
-  ~optional ()
-  { this->reset (); }
-
-  /* Copy and move constructors.  */
-
-  optional (const optional &other)
-  {
-    if (other.m_instantiated)
-      this->emplace (other.get ());
-  }
-
-  optional (optional &&other)
-    noexcept(std::is_nothrow_move_constructible<T> ())
-  {
-    if (other.m_instantiated)
-      this->emplace (std::move (other.get ()));
-  }
-
-  constexpr optional (const T &other)
-    : m_item (other),
-      m_instantiated (true)
-  {}
-
-  constexpr optional (T &&other)
-    noexcept (std::is_nothrow_move_constructible<T> ())
-    : m_item (std::move (other)),
-      m_instantiated (true)
-  {}
-
-  /* Assignment operators.  */
-
-  optional &
-  operator= (const optional &other)
-  {
-    if (m_instantiated && other.m_instantiated)
-      this->get () = other.get ();
-    else
-      {
-	if (other.m_instantiated)
-	  this->emplace (other.get ());
-	else
-	  this->reset ();
-      }
-
-    return *this;
-  }
-
-  optional &
-  operator= (optional &&other)
-    noexcept (And<std::is_nothrow_move_constructible<T>,
-	      std::is_nothrow_move_assignable<T>> ())
-  {
-    if (m_instantiated && other.m_instantiated)
-      this->get () = std::move (other.get ());
-    else
-      {
-	if (other.m_instantiated)
-	  this->emplace (std::move (other.get ()));
-	else
-	  this->reset ();
-      }
-    return *this;
-  }
-
-  optional &
-  operator= (const T &other)
-  {
-    if (m_instantiated)
-      this->get () = other;
-    else
-      this->emplace (other);
-    return *this;
-  }
-
-  optional &
-  operator= (T &&other)
-    noexcept (And<std::is_nothrow_move_constructible<T>,
-	      std::is_nothrow_move_assignable<T>> ())
-  {
-    if (m_instantiated)
-      this->get () = std::move (other);
-    else
-      this->emplace (std::move (other));
-    return *this;
-  }
-
-  template<typename... Args>
-  T &emplace (Args &&... args)
-  {
-    this->reset ();
-    new (&m_item) T (std::forward<Args>(args)...);
-    m_instantiated = true;
-    return this->get ();
-  }
-
-  /* Observers.  */
-  constexpr const T *operator-> () const
-  { return std::addressof (this->get ()); }
-
-  T *operator-> ()
-  { return std::addressof (this->get ()); }
-
-  constexpr const T &operator* () const &
-  { return this->get (); }
-
-  T &operator* () &
-  { return this->get (); }
-
-  T &&operator* () &&
-  { return std::move (this->get ()); }
-
-  constexpr const T &&operator* () const &&
-  { return std::move (this->get ()); }
-
-  constexpr explicit operator bool () const noexcept
-  { return m_instantiated; }
-
-  constexpr bool has_value () const noexcept
-  { return m_instantiated; }
-
-  /* 'reset' is a 'safe' operation with no precondition.  */
-  void reset () noexcept
-  {
-    if (m_instantiated)
-      this->destroy ();
-  }
-
-private:
-
-  /* Destroy the object.  */
-  void destroy ()
-  {
-    gdb_assert (m_instantiated);
-    m_instantiated = false;
-    m_item.~T ();
-  }
-
-  /* The get operations have m_instantiated as a precondition.  */
-  T &get () noexcept { return m_item; }
-  constexpr const T &get () const noexcept { return m_item; }
-
-  /* The object.  */
-  union
-  {
-    struct { } m_dummy;
-    T m_item;
-  };
-
-  /* True if the object was ever emplaced.  */
-  bool m_instantiated = false;
-};
-
-}
-
-#endif /* COMMON_GDB_OPTIONAL_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_proc_service.h ./gdb/gdbsupport/gdb_proc_service.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_proc_service.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_proc_service.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,173 +0,0 @@
-/* <proc_service.h> replacement for systems that don't have it.
-   Copyright (C) 2000-2020 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 COMMON_GDB_PROC_SERVICE_H
-#define COMMON_GDB_PROC_SERVICE_H
-
-#include <sys/types.h>
-
-#ifdef HAVE_PROC_SERVICE_H
-
-/* glibc's proc_service.h doesn't wrap itself with extern "C".  Need
-   to do it ourselves.  */
-EXTERN_C_PUSH
-
-#include <proc_service.h>
-
-EXTERN_C_POP
-
-#else /* HAVE_PROC_SERVICE_H */
-
-/* The following fallback definitions have been imported and adjusted
-   from glibc's proc_service.h  */
-
-/* Callback interface for libthread_db, functions users must define.
-   Copyright (C) 1999,2002,2003 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library 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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* The definitions in this file must correspond to those in the debugger.  */
-
-#ifdef HAVE_SYS_PROCFS_H
-#include <sys/procfs.h>
-#endif
-
-/* Not all platforms bring in <linux/elf.h> via <sys/procfs.h>.  If
-   <sys/procfs.h> wasn't enough to find elf_fpregset_t, try the kernel
-   headers also (but don't if we don't need to).  */
-#ifndef HAVE_ELF_FPREGSET_T
-# ifdef HAVE_LINUX_ELF_H
-#  include <linux/elf.h>
-# endif
-#endif
-
-EXTERN_C_PUSH
-
-/* Functions in this interface return one of these status codes.  */
-typedef enum
-{
-  PS_OK,		/* Generic "call succeeded".  */
-  PS_ERR,		/* Generic error.  */
-  PS_BADPID,		/* Bad process handle.  */
-  PS_BADLID,		/* Bad LWP identifier.  */
-  PS_BADADDR,		/* Bad address.  */
-  PS_NOSYM,		/* Could not find given symbol.  */
-  PS_NOFREGS		/* FPU register set not available for given LWP.  */
-} ps_err_e;
-
-#ifndef HAVE_LWPID_T
-typedef unsigned int lwpid_t;
-#endif
-
-#ifndef HAVE_PSADDR_T
-typedef void *psaddr_t;
-#endif
-
-#ifndef HAVE_PRGREGSET_T
-typedef elf_gregset_t prgregset_t;
-#endif
-
-#ifndef HAVE_PRFPREGSET_T
-typedef elf_fpregset_t prfpregset_t;
-#endif
-
-/* This type is opaque in this interface.  It's defined by the user of
-   libthread_db.  GDB's version is defined below.  */
-struct ps_prochandle;
-
-
-/* Read or write process memory at the given address.  */
-extern ps_err_e ps_pdread (struct ps_prochandle *,
-			   psaddr_t, void *, size_t);
-extern ps_err_e ps_pdwrite (struct ps_prochandle *,
-			    psaddr_t, const void *, size_t);
-extern ps_err_e ps_ptread (struct ps_prochandle *,
-			   psaddr_t, void *, size_t);
-extern ps_err_e ps_ptwrite (struct ps_prochandle *,
-			    psaddr_t, const void *, size_t);
-
-
-/* Get and set the given LWP's general or FPU register set.  */
-extern ps_err_e ps_lgetregs (struct ps_prochandle *,
-			     lwpid_t, prgregset_t);
-extern ps_err_e ps_lsetregs (struct ps_prochandle *,
-			     lwpid_t, const prgregset_t);
-extern ps_err_e ps_lgetfpregs (struct ps_prochandle *,
-			       lwpid_t, prfpregset_t *);
-extern ps_err_e ps_lsetfpregs (struct ps_prochandle *,
-			       lwpid_t, const prfpregset_t *);
-
-/* Return the PID of the process.  */
-extern pid_t ps_getpid (struct ps_prochandle *);
-
-/* Fetch the special per-thread address associated with the given LWP.
-   This call is only used on a few platforms (most use a normal register).
-   The meaning of the `int' parameter is machine-dependent.  */
-extern ps_err_e ps_get_thread_area (struct ps_prochandle *,
-				    lwpid_t, int, psaddr_t *);
-
-
-/* Look up the named symbol in the named DSO in the symbol tables
-   associated with the process being debugged, filling in *SYM_ADDR
-   with the corresponding run-time address.  */
-extern ps_err_e ps_pglobal_lookup (struct ps_prochandle *,
-				   const char *object_name,
-				   const char *sym_name,
-				   psaddr_t *sym_addr);
-
-
-/* Stop or continue the entire process.  */
-extern ps_err_e ps_pstop (struct ps_prochandle *);
-extern ps_err_e ps_pcontinue (struct ps_prochandle *);
-
-/* Stop or continue the given LWP alone.  */
-extern ps_err_e ps_lstop (struct ps_prochandle *, lwpid_t);
-extern ps_err_e ps_lcontinue (struct ps_prochandle *, lwpid_t);
-
-/* The following are only defined in/called by Solaris.  */
-
-/* Get size of extra register set.  */
-extern ps_err_e ps_lgetxregsize (struct ps_prochandle *ph,
-				 lwpid_t lwpid, int *xregsize);
-/* Get extra register set.  */
-extern ps_err_e ps_lgetxregs (struct ps_prochandle *ph, lwpid_t lwpid,
-			      caddr_t xregset);
-extern ps_err_e ps_lsetxregs (struct ps_prochandle *ph, lwpid_t lwpid,
-			      caddr_t xregset);
-
-/* Log a message (sends to gdb_stderr).  */
-extern void ps_plog (const char *fmt, ...);
-
-EXTERN_C_POP
-
-#endif /* HAVE_PROC_SERVICE_H */
-
-#endif /* COMMON_GDB_PROC_SERVICE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_ref_ptr.h ./gdb/gdbsupport/gdb_ref_ptr.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_ref_ptr.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_ref_ptr.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,228 +0,0 @@
-/* Reference-counted smart pointer class
-
-   Copyright (C) 2016-2020 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 COMMON_GDB_REF_PTR_H
-#define COMMON_GDB_REF_PTR_H
-
-#include <cstddef>
-
-namespace gdb
-{
-
-/* An instance of this class either holds a reference to a
-   reference-counted object or is "NULL".  Reference counting is
-   handled externally by a policy class.  If the object holds a
-   reference, then when the object is destroyed, the reference is
-   decref'd.
-
-   Normally an instance is constructed using a pointer.  This sort of
-   initialization lets this class manage the lifetime of that
-   reference.
-
-   Assignment and copy construction will make a new reference as
-   appropriate.  Assignment from a plain pointer is disallowed to
-   avoid confusion about whether this acquires a new reference;
-   instead use the "reset" method -- which, like the pointer
-   constructor, transfers ownership.
-
-   The policy class must provide two static methods:
-   void incref (T *);
-   void decref (T *);
-*/
-template<typename T, typename Policy>
-class ref_ptr
-{
- public:
-
-  /* Create a new NULL instance.  */
-  ref_ptr ()
-    : m_obj (NULL)
-  {
-  }
-
-  /* Create a new NULL instance.  Note that this is not explicit.  */
-  ref_ptr (const std::nullptr_t)
-    : m_obj (NULL)
-  {
-  }
-
-  /* Create a new instance.  OBJ is a reference, management of which
-     is now transferred to this class.  */
-  explicit ref_ptr (T *obj)
-    : m_obj (obj)
-  {
-  }
-
-  /* Copy another instance.  */
-  ref_ptr (const ref_ptr &other)
-    : m_obj (other.m_obj)
-  {
-    if (m_obj != NULL)
-      Policy::incref (m_obj);
-  }
-
-  /* Transfer ownership from OTHER.  */
-  ref_ptr (ref_ptr &&other)
-    : m_obj (other.m_obj)
-  {
-    other.m_obj = NULL;
-  }
-
-  /* Destroy this instance.  */
-  ~ref_ptr ()
-  {
-    if (m_obj != NULL)
-      Policy::decref (m_obj);
-  }
-
-  /* Copy another instance.  */
-  ref_ptr &operator= (const ref_ptr &other)
-  {
-    /* Do nothing on self-assignment.  */
-    if (this != &other)
-      {
-	reset (other.m_obj);
-	if (m_obj != NULL)
-	  Policy::incref (m_obj);
-      }
-    return *this;
-  }
-
-  /* Transfer ownership from OTHER.  */
-  ref_ptr &operator= (ref_ptr &&other)
-  {
-    /* Do nothing on self-assignment.  */
-    if (this != &other)
-      {
-	reset (other.m_obj);
-	other.m_obj = NULL;
-      }
-    return *this;
-  }
-
-  /* Change this instance's referent.  OBJ is a reference, management
-     of which is now transferred to this class.  */
-  void reset (T *obj)
-  {
-    if (m_obj != NULL)
-      Policy::decref (m_obj);
-    m_obj = obj;
-  }
-
-  /* Return this instance's referent without changing the state of
-     this class.  */
-  T *get () const
-  {
-    return m_obj;
-  }
-
-  /* Return this instance's referent, and stop managing this
-     reference.  The caller is now responsible for the ownership of
-     the reference.  */
-  ATTRIBUTE_UNUSED_RESULT T *release ()
-  {
-    T *result = m_obj;
-
-    m_obj = NULL;
-    return result;
-  }
-
-  /* Let users refer to members of the underlying pointer.  */
-  T *operator-> () const
-  {
-    return m_obj;
-  }
-
-  /* Acquire a new reference and return a ref_ptr that owns it.  */
-  static ref_ptr<T, Policy> new_reference (T *obj)
-  {
-    Policy::incref (obj);
-    return ref_ptr<T, Policy> (obj);
-  }
-
- private:
-
-  T *m_obj;
-};
-
-template<typename T, typename Policy>
-inline bool operator== (const ref_ptr<T, Policy> &lhs,
-			const ref_ptr<T, Policy> &rhs)
-{
-  return lhs.get () == rhs.get ();
-}
-
-template<typename T, typename Policy>
-inline bool operator== (const ref_ptr<T, Policy> &lhs, const T *rhs)
-{
-  return lhs.get () == rhs;
-}
-
-template<typename T, typename Policy>
-inline bool operator== (const ref_ptr<T, Policy> &lhs, const std::nullptr_t)
-{
-  return lhs.get () == nullptr;
-}
-
-template<typename T, typename Policy>
-inline bool operator== (const T *lhs, const ref_ptr<T, Policy> &rhs)
-{
-  return lhs == rhs.get ();
-}
-
-template<typename T, typename Policy>
-inline bool operator== (const std::nullptr_t, const ref_ptr<T, Policy> &rhs)
-{
-  return nullptr == rhs.get ();
-}
-
-template<typename T, typename Policy>
-inline bool operator!= (const ref_ptr<T, Policy> &lhs,
-			const ref_ptr<T, Policy> &rhs)
-{
-  return lhs.get () != rhs.get ();
-}
-
-template<typename T, typename Policy>
-inline bool operator!= (const ref_ptr<T, Policy> &lhs, const T *rhs)
-{
-  return lhs.get () != rhs;
-}
-
-template<typename T, typename Policy>
-inline bool operator!= (const ref_ptr<T, Policy> &lhs, const std::nullptr_t)
-{
-  return lhs.get () != nullptr;
-}
-
-template<typename T, typename Policy>
-inline bool operator!= (const T *lhs, const ref_ptr<T, Policy> &rhs)
-{
-  return lhs != rhs.get ();
-}
-
-template<typename T, typename Policy>
-inline bool operator!= (const std::nullptr_t, const ref_ptr<T, Policy> &rhs)
-{
-  return nullptr != rhs.get ();
-}
-
-}
-
-#endif /* COMMON_GDB_REF_PTR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_setjmp.h ./gdb/gdbsupport/gdb_setjmp.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_setjmp.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_setjmp.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,36 +0,0 @@
-/* Portability wrappers for setjmp and longjmp.
-   Copyright (C) 1986-2020 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 COMMON_GDB_SETJMP_H
-#define COMMON_GDB_SETJMP_H
-
-#include <setjmp.h>
-
-#ifdef HAVE_SIGSETJMP
-#define SIGJMP_BUF		sigjmp_buf
-#define SIGSETJMP(buf,val)	sigsetjmp((buf), val)
-#define SIGLONGJMP(buf,val)	siglongjmp((buf), (val))
-#else
-#define SIGJMP_BUF		jmp_buf
-/* We ignore val here because that's safer and avoids having to check
-   whether _setjmp exists.  */
-#define SIGSETJMP(buf,val)	setjmp(buf)
-#define SIGLONGJMP(buf,val)	longjmp((buf), (val))
-#endif
-
-#endif /* COMMON_GDB_SETJMP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb-sigmask.h ./gdb/gdbsupport/gdb-sigmask.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb-sigmask.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb-sigmask.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,45 +0,0 @@
-/* sigprocmask wrapper for gdb
-
-   Copyright (C) 2019-2020 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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_signals.h ./gdb/gdbsupport/gdb_signals.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_signals.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_signals.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,58 +0,0 @@
-/* Target signal translation functions for GDB.
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
-   Contributed by Cygnus Support.
-
-   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 COMMON_GDB_SIGNALS_H
-#define COMMON_GDB_SIGNALS_H
-
-#include "gdb/signals.h"
-
-/* Predicate to gdb_signal_to_host(). Return non-zero if the enum
-   targ_signal SIGNO has an equivalent ``host'' representation.  */
-/* FIXME: cagney/1999-11-22: The name below was chosen in preference
-   to the shorter gdb_signal_p() because it is far less ambigious.
-   In this context ``gdb_signal'' refers to GDB's internal
-   representation of the target's set of signals while ``host signal''
-   refers to the target operating system's signal.  Confused?  */
-extern int gdb_signal_to_host_p (enum gdb_signal signo);
-
-/* Convert between host signal numbers and enum gdb_signal's.
-   gdb_signal_to_host() returns 0 and prints a warning() on GDB's
-   console if SIGNO has no equivalent host representation.  */
-/* FIXME: cagney/1999-11-22: Here ``host'' is used incorrectly, it is
-   refering to the target operating system's signal numbering.
-   Similarly, ``enum gdb_signal'' is named incorrectly, ``enum
-   gdb_signal'' would probably be better as it is refering to GDB's
-   internal representation of a target operating system's signal.  */
-extern enum gdb_signal gdb_signal_from_host (int);
-extern int gdb_signal_to_host (enum gdb_signal);
-
-/* Return the enum symbol name of SIG as a string, to use in debug
-   output.  */
-extern const char *gdb_signal_to_symbol_string (enum gdb_signal sig);
-
-/* Return the string for a signal.  */
-extern const char *gdb_signal_to_string (enum gdb_signal);
-
-/* Return the name (SIGHUP, etc.) for a signal.  */
-extern const char *gdb_signal_to_name (enum gdb_signal);
-
-/* Given a name (SIGHUP, etc.), return its signal.  */
-enum gdb_signal gdb_signal_from_name (const char *);
-
-#endif /* COMMON_GDB_SIGNALS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_splay_tree.h ./gdb/gdbsupport/gdb_splay_tree.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_splay_tree.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_splay_tree.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,42 +0,0 @@
-/* GDB wrapper for splay trees.
-
-   Copyright (C) 2017-2020 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 COMMON_GDB_SPLAY_TREE_H
-#define COMMON_GDB_SPLAY_TREE_H
-
-#include "splay-tree.h"
-
-namespace gdb {
-
-struct splay_tree_deleter
-{
-  void operator() (splay_tree tree) const
-  {
-    splay_tree_delete (tree);
-  }
-};
-
-} /* namespace gdb */
-
-/* A unique pointer to a splay tree.  */
-
-typedef std::unique_ptr<splay_tree_s, gdb::splay_tree_deleter>
-    gdb_splay_tree_up;
-
-#endif /* COMMON_GDB_SPLAY_TREE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_string_view.h ./gdb/gdbsupport/gdb_string_view.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_string_view.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_string_view.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,563 +0,0 @@
-// Components for manipulating non-owning sequences of characters -*- C++ -*-
-
-
-#ifndef COMMON_GDB_STRING_VIEW_H
-#define COMMON_GDB_STRING_VIEW_H
-
-// Note: This file has been stolen from the gcc repo
-// (libstdc++-v3/include/experimental/string_view) and has local modifications.
-
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library 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, or (at your option)
-// any later version.
-
-// This library 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.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-//
-// N3762 basic_string_view library
-//
-
-
-#if __cplusplus >= 201703L
-
-#include <string_view>
-
-namespace gdb {
-  using string_view = std::string_view;
-} /* namespace gdb */
-
-#else /* __cplusplus < 201703L */
-
-#include <string>
-#include <limits>
-#include "gdb_assert.h"
-
-namespace gdb {
-
-  /**
-   *  @class basic_string_view <experimental/string_view>
-   *  @brief  A non-owning reference to a string.
-   *
-   *  @ingroup strings
-   *  @ingroup sequences
-   *  @ingroup experimental
-   *
-   *  @tparam _CharT  Type of character
-   *  @tparam _Traits  Traits for character type, defaults to
-   *                   char_traits<_CharT>.
-   *
-   *  A basic_string_view looks like this:
-   *
-   *  @code
-   *    _CharT*    _M_str
-   *    size_t     _M_len
-   *  @endcode
-   */
-  template<typename _CharT, typename _Traits = std::char_traits<_CharT>>
-    class basic_string_view
-    {
-    public:
-
-      // types
-      using traits_type = _Traits;
-      using value_type = _CharT;
-      using pointer = const _CharT*;
-      using const_pointer = const _CharT*;
-      using reference = const _CharT&;
-      using const_reference = const _CharT&;
-      using const_iterator = const _CharT*;
-      using iterator = const_iterator;
-      using const_reverse_iterator = std::reverse_iterator<const_iterator>;
-      using reverse_iterator = const_reverse_iterator;
-      using size_type = size_t;
-      using difference_type = ptrdiff_t;
-      static constexpr size_type npos = size_type(-1);
-
-      // [string.view.cons], construct/copy
-
-      constexpr
-      basic_string_view() noexcept
-      : _M_len{0}, _M_str{nullptr}
-      { }
-
-      constexpr basic_string_view(const basic_string_view&) noexcept = default;
-
-      template<typename _Allocator>
-        basic_string_view(const std::basic_string<_CharT, _Traits,
-			  _Allocator>& __str) noexcept
-        : _M_len{__str.length()}, _M_str{__str.data()}
-        { }
-
-      /*constexpr*/ basic_string_view(const _CharT* __str)
-      : _M_len{__str == nullptr ? 0 : traits_type::length(__str)},
-	_M_str{__str}
-      { }
-
-      constexpr basic_string_view(const _CharT* __str, size_type __len)
-      : _M_len{__len},
-        _M_str{__str}
-      { }
-
-      basic_string_view&
-      operator=(const basic_string_view&) noexcept = default;
-
-      // [string.view.iterators], iterators
-
-      constexpr const_iterator
-      begin() const noexcept
-      { return this->_M_str; }
-
-      constexpr const_iterator
-      end() const noexcept
-      { return this->_M_str + this->_M_len; }
-
-      constexpr const_iterator
-      cbegin() const noexcept
-      { return this->_M_str; }
-
-      constexpr const_iterator
-      cend() const noexcept
-      { return this->_M_str + this->_M_len; }
-
-      const_reverse_iterator
-      rbegin() const noexcept
-      { return const_reverse_iterator(this->end()); }
-
-      const_reverse_iterator
-      rend() const noexcept
-      { return const_reverse_iterator(this->begin()); }
-
-      const_reverse_iterator
-      crbegin() const noexcept
-      { return const_reverse_iterator(this->end()); }
-
-      const_reverse_iterator
-      crend() const noexcept
-      { return const_reverse_iterator(this->begin()); }
-
-      // [string.view.capacity], capacity
-
-      constexpr size_type
-      size() const noexcept
-      { return this->_M_len; }
-
-      constexpr size_type
-      length() const noexcept
-      { return _M_len; }
-
-      constexpr size_type
-      max_size() const noexcept
-      {
-	return (npos - sizeof(size_type) - sizeof(void*))
-		/ sizeof(value_type) / 4;
-      }
-
-      constexpr bool
-      empty() const noexcept
-      { return this->_M_len == 0; }
-
-      // [string.view.access], element access
-
-      constexpr const _CharT&
-      operator[](size_type __pos) const
-      {
-	// TODO: Assert to restore in a way compatible with the constexpr.
-	// __glibcxx_assert(__pos < this->_M_len);
-	return *(this->_M_str + __pos);
-      }
-
-      constexpr const _CharT&
-      at(size_type __pos) const
-      {
-	return __pos < this->_M_len
-	     ? *(this->_M_str + __pos)
-	     : (error (_("basic_string_view::at: __pos "
-			 "(which is %zu) >= this->size() "
-			 "(which is %zu)"),
-		       __pos, this->size()),
-		*this->_M_str);
-      }
-
-      constexpr const _CharT&
-      front() const
-      {
-	// TODO: Assert to restore in a way compatible with the constexpr.
-	// __glibcxx_assert(this->_M_len > 0);
-	return *this->_M_str;
-      }
-
-      constexpr const _CharT&
-      back() const
-      {
-	// TODO: Assert to restore in a way compatible with the constexpr.
-	// __glibcxx_assert(this->_M_len > 0);
-	return *(this->_M_str + this->_M_len - 1);
-      }
-
-      constexpr const _CharT*
-      data() const noexcept
-      { return this->_M_str; }
-
-      // [string.view.modifiers], modifiers:
-
-      /*constexpr*/ void
-      remove_prefix(size_type __n)
-      {
-	gdb_assert (this->_M_len >= __n);
-	this->_M_str += __n;
-	this->_M_len -= __n;
-      }
-
-      /*constexpr*/ void
-      remove_suffix(size_type __n)
-      { this->_M_len -= __n; }
-
-      /*constexpr*/ void
-      swap(basic_string_view& __sv) noexcept
-      {
-	auto __tmp = *this;
-	*this = __sv;
-	__sv = __tmp;
-      }
-
-
-      // [string.view.ops], string operations:
-
-      template<typename _Allocator>
-        explicit operator std::basic_string<_CharT, _Traits, _Allocator>() const
-        {
-	  return { this->_M_str, this->_M_len };
-	}
-
-      template<typename _Allocator = std::allocator<_CharT>>
-	std::basic_string<_CharT, _Traits, _Allocator>
-	to_string(const _Allocator& __alloc = _Allocator()) const
-	{
-	  return { this->_M_str, this->_M_len, __alloc };
-	}
-
-      size_type
-      copy(_CharT* __str, size_type __n, size_type __pos = 0) const
-      {
-	gdb_assert (__str != nullptr || __n == 0);
-	if (__pos > this->_M_len)
-	  error (_("basic_string_view::copy: __pos "
-		   "(which is %zu) > this->size() "
-		   "(which is %zu)"),
-		 __pos, this->size());
-	size_type __rlen{std::min(__n, size_type{this->_M_len  - __pos})};
-	for (auto __begin = this->_M_str + __pos,
-	     __end = __begin + __rlen; __begin != __end;)
-	  *__str++ = *__begin++;
-	return __rlen;
-      }
-
-
-      // [string.view.ops], string operations:
-
-      /*constexpr*/ basic_string_view
-      substr(size_type __pos, size_type __n=npos) const
-      {
-	return __pos <= this->_M_len
-	     ? basic_string_view{this->_M_str + __pos,
-				std::min(__n, size_type{this->_M_len  - __pos})}
-	     : (error (_("basic_string_view::substr: __pos "
-			 "(which is %zu) > this->size() "
-			 "(which is %zu)"),
-		       __pos, this->size()), basic_string_view{});
-      }
-
-      /*constexpr*/ int
-      compare(basic_string_view __str) const noexcept
-      {
-	int __ret = traits_type::compare(this->_M_str, __str._M_str,
-					 std::min(this->_M_len, __str._M_len));
-	if (__ret == 0)
-	  __ret = _S_compare(this->_M_len, __str._M_len);
-	return __ret;
-      }
-
-      /*constexpr*/ int
-      compare(size_type __pos1, size_type __n1, basic_string_view __str) const
-      { return this->substr(__pos1, __n1).compare(__str); }
-
-      /*constexpr*/ int
-      compare(size_type __pos1, size_type __n1,
-	      basic_string_view __str, size_type __pos2, size_type __n2) const
-      { return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); }
-
-      /*constexpr*/ int
-      compare(const _CharT* __str) const noexcept
-      { return this->compare(basic_string_view{__str}); }
-
-      /*constexpr*/ int
-      compare(size_type __pos1, size_type __n1, const _CharT* __str) const
-      { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); }
-
-      /*constexpr*/ int
-      compare(size_type __pos1, size_type __n1,
-	      const _CharT* __str, size_type __n2) const
-      {
-	return this->substr(__pos1, __n1)
-		   .compare(basic_string_view(__str, __n2));
-      }
-
-      /*constexpr*/ size_type
-      find(basic_string_view __str, size_type __pos = 0) const noexcept
-      { return this->find(__str._M_str, __pos, __str._M_len); }
-
-      /*constexpr*/ size_type
-      find(_CharT __c, size_type __pos=0) const noexcept;
-
-      /*constexpr*/ size_type
-      find(const _CharT* __str, size_type __pos, size_type __n) const noexcept;
-
-      /*constexpr*/ size_type
-      find(const _CharT* __str, size_type __pos=0) const noexcept
-      { return this->find(__str, __pos, traits_type::length(__str)); }
-
-      /*constexpr*/ size_type
-      rfind(basic_string_view __str, size_type __pos = npos) const noexcept
-      { return this->rfind(__str._M_str, __pos, __str._M_len); }
-
-      /*constexpr*/ size_type
-      rfind(_CharT __c, size_type __pos = npos) const noexcept;
-
-      /*constexpr*/ size_type
-      rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept;
-
-      /*constexpr*/ size_type
-      rfind(const _CharT* __str, size_type __pos = npos) const noexcept
-      { return this->rfind(__str, __pos, traits_type::length(__str)); }
-
-      /*constexpr*/ size_type
-      find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept
-      { return this->find_first_of(__str._M_str, __pos, __str._M_len); }
-
-      /*constexpr*/ size_type
-      find_first_of(_CharT __c, size_type __pos = 0) const noexcept
-      { return this->find(__c, __pos); }
-
-      /*constexpr*/ size_type
-      find_first_of(const _CharT* __str, size_type __pos, size_type __n) const;
-
-      /*constexpr*/ size_type
-      find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept
-      { return this->find_first_of(__str, __pos, traits_type::length(__str)); }
-
-      /*constexpr*/ size_type
-      find_last_of(basic_string_view __str,
-		   size_type __pos = npos) const noexcept
-      { return this->find_last_of(__str._M_str, __pos, __str._M_len); }
-
-      size_type
-      find_last_of(_CharT __c, size_type __pos=npos) const noexcept
-      { return this->rfind(__c, __pos); }
-
-      /*constexpr*/ size_type
-      find_last_of(const _CharT* __str, size_type __pos, size_type __n) const;
-
-      /*constexpr*/ size_type
-      find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept
-      { return this->find_last_of(__str, __pos, traits_type::length(__str)); }
-
-      /*constexpr*/ size_type
-      find_first_not_of(basic_string_view __str,
-			size_type __pos = 0) const noexcept
-      { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); }
-
-      /*constexpr*/ size_type
-      find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept;
-
-      /*constexpr*/ size_type
-      find_first_not_of(const _CharT* __str,
-			size_type __pos, size_type __n) const;
-
-      /*constexpr*/ size_type
-      find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept
-      {
-	return this->find_first_not_of(__str, __pos,
-				       traits_type::length(__str));
-      }
-
-      /*constexpr*/ size_type
-      find_last_not_of(basic_string_view __str,
-		       size_type __pos = npos) const noexcept
-      { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); }
-
-      /*constexpr*/ size_type
-      find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept;
-
-      /*constexpr*/ size_type
-      find_last_not_of(const _CharT* __str,
-		       size_type __pos, size_type __n) const;
-
-      /*constexpr*/ size_type
-      find_last_not_of(const _CharT* __str,
-		       size_type __pos = npos) const noexcept
-      {
-	return this->find_last_not_of(__str, __pos,
-				      traits_type::length(__str));
-      }
-
-    private:
-
-      static constexpr int
-      _S_compare(size_type __n1, size_type __n2) noexcept
-      {
-	return difference_type(__n1 - __n2) > std::numeric_limits<int>::max()
-	     ? std::numeric_limits<int>::max()
-	     : difference_type(__n1 - __n2) < std::numeric_limits<int>::min()
-	     ? std::numeric_limits<int>::min()
-	     : static_cast<int>(difference_type(__n1 - __n2));
-      }
-
-      size_t	    _M_len;
-      const _CharT* _M_str;
-    };
-
-  // [string.view.comparison], non-member basic_string_view comparison functions
-
-  namespace __detail
-  {
-    // Identity transform to create a non-deduced context, so that only one
-    // argument participates in template argument deduction and the other
-    // argument gets implicitly converted to the deduced type. See n3766.html.
-    template<typename _Tp>
-      using __idt = typename std::common_type<_Tp>::type;
-  }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator==(basic_string_view<_CharT, _Traits> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return __x.size() == __y.size() && __x.compare(__y) == 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator==(basic_string_view<_CharT, _Traits> __x,
-               __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
-    { return __x.size() == __y.size() && __x.compare(__y) == 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator==(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return __x.size() == __y.size() && __x.compare(__y) == 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator!=(basic_string_view<_CharT, _Traits> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return !(__x == __y); }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator!=(basic_string_view<_CharT, _Traits> __x,
-               __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
-    { return !(__x == __y); }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator!=(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return !(__x == __y); }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator< (basic_string_view<_CharT, _Traits> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return __x.compare(__y) < 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator< (basic_string_view<_CharT, _Traits> __x,
-               __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
-    { return __x.compare(__y) < 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator< (__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return __x.compare(__y) < 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator> (basic_string_view<_CharT, _Traits> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return __x.compare(__y) > 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator> (basic_string_view<_CharT, _Traits> __x,
-               __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
-    { return __x.compare(__y) > 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator> (__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return __x.compare(__y) > 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator<=(basic_string_view<_CharT, _Traits> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return __x.compare(__y) <= 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator<=(basic_string_view<_CharT, _Traits> __x,
-               __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
-    { return __x.compare(__y) <= 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator<=(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return __x.compare(__y) <= 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator>=(basic_string_view<_CharT, _Traits> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return __x.compare(__y) >= 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator>=(basic_string_view<_CharT, _Traits> __x,
-               __detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
-    { return __x.compare(__y) >= 0; }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ bool
-    operator>=(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
-               basic_string_view<_CharT, _Traits> __y) noexcept
-    { return __x.compare(__y) >= 0; }
-
-  // basic_string_view typedef names
-
-  using string_view = basic_string_view<char>;
-} /* namespace gdb */
-
-#include "gdb_string_view.tcc"
-
-#endif // __cplusplus < 201703L
-
-#endif /* COMMON_GDB_STRING_VIEW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_string_view.tcc ./gdb/gdbsupport/gdb_string_view.tcc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_string_view.tcc	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_string_view.tcc	1970-01-01 00:00:00.000000000 +0000
@@ -1,219 +0,0 @@
-// Components for manipulating non-owning sequences of characters -*- C++ -*-
-
-// Note: This file has been stolen from the gcc repo
-// (libstdc++-v3/include/experimental/bits/string_view.tcc) and has local
-// modifications.
-
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library 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, or (at your option)
-// any later version.
-
-// This library 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.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file experimental/bits/string_view.tcc
- *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. @headername{experimental/string_view}
- */
-
-//
-// N3762 basic_string_view library
-//
-
-#ifndef GDB_STRING_VIEW_TCC
-#define GDB_STRING_VIEW_TCC 1
-
-namespace gdb
-{
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ typename basic_string_view<_CharT, _Traits>::size_type
-    basic_string_view<_CharT, _Traits>::
-    find(const _CharT* __str, size_type __pos, size_type __n) const noexcept
-    {
-      gdb_assert (__str != nullptr || __n == 0);
-
-      if (__n == 0)
-	return __pos <= this->_M_len ? __pos : npos;
-
-      if (__n <= this->_M_len)
-	{
-	  for (; __pos <= this->_M_len - __n; ++__pos)
-	    if (traits_type::eq(this->_M_str[__pos], __str[0])
-		&& traits_type::compare(this->_M_str + __pos + 1,
-					__str + 1, __n - 1) == 0)
-	      return __pos;
-	}
-      return npos;
-    }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ typename basic_string_view<_CharT, _Traits>::size_type
-    basic_string_view<_CharT, _Traits>::
-    find(_CharT __c, size_type __pos) const noexcept
-    {
-      size_type __ret = npos;
-      if (__pos < this->_M_len)
-	{
-	  const size_type __n = this->_M_len - __pos;
-	  const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c);
-	  if (__p)
-	    __ret = __p - this->_M_str;
-	}
-      return __ret;
-    }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ typename basic_string_view<_CharT, _Traits>::size_type
-    basic_string_view<_CharT, _Traits>::
-    rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept
-    {
-      gdb_assert (__str != nullptr || __n == 0);
-
-      if (__n <= this->_M_len)
-	{
-	  __pos = std::min(size_type(this->_M_len - __n), __pos);
-	  do
-	    {
-	      if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0)
-		return __pos;
-	    }
-	  while (__pos-- > 0);
-	}
-      return npos;
-    }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ typename basic_string_view<_CharT, _Traits>::size_type
-    basic_string_view<_CharT, _Traits>::
-    rfind(_CharT __c, size_type __pos) const noexcept
-    {
-      size_type __size = this->_M_len;
-      if (__size > 0)
-	{
-	  if (--__size > __pos)
-	    __size = __pos;
-	  for (++__size; __size-- > 0; )
-	    if (traits_type::eq(this->_M_str[__size], __c))
-	      return __size;
-	}
-      return npos;
-    }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ typename basic_string_view<_CharT, _Traits>::size_type
-    basic_string_view<_CharT, _Traits>::
-    find_first_of(const _CharT* __str, size_type __pos, size_type __n) const
-    {
-      gdb_assert (__str != nullptr || __n == 0);
-      for (; __n && __pos < this->_M_len; ++__pos)
-	{
-	  const _CharT* __p = traits_type::find(__str, __n,
-						this->_M_str[__pos]);
-	  if (__p)
-	    return __pos;
-	}
-      return npos;
-    }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ typename basic_string_view<_CharT, _Traits>::size_type
-    basic_string_view<_CharT, _Traits>::
-    find_last_of(const _CharT* __str, size_type __pos, size_type __n) const
-    {
-      gdb_assert (__str != nullptr || __n == 0);
-      size_type __size = this->size();
-      if (__size && __n)
-	{
-	  if (--__size > __pos)
-	    __size = __pos;
-	  do
-	    {
-	      if (traits_type::find(__str, __n, this->_M_str[__size]))
-		return __size;
-	    }
-	  while (__size-- != 0);
-	}
-      return npos;
-    }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ typename basic_string_view<_CharT, _Traits>::size_type
-    basic_string_view<_CharT, _Traits>::
-    find_first_not_of(const _CharT* __str, size_type __pos, size_type __n) const
-    {
-      gdb_assert (__str != nullptr || __n == 0);
-      for (; __pos < this->_M_len; ++__pos)
-	if (!traits_type::find(__str, __n, this->_M_str[__pos]))
-	  return __pos;
-      return npos;
-    }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ typename basic_string_view<_CharT, _Traits>::size_type
-    basic_string_view<_CharT, _Traits>::
-    find_first_not_of(_CharT __c, size_type __pos) const noexcept
-    {
-      for (; __pos < this->_M_len; ++__pos)
-	if (!traits_type::eq(this->_M_str[__pos], __c))
-	  return __pos;
-      return npos;
-    }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ typename basic_string_view<_CharT, _Traits>::size_type
-    basic_string_view<_CharT, _Traits>::
-    find_last_not_of(const _CharT* __str, size_type __pos, size_type __n) const
-    {
-      gdb_assert (__str != nullptr || __n == 0);
-      size_type __size = this->_M_len;
-      if (__size)
-	{
-	  if (--__size > __pos)
-	    __size = __pos;
-	  do
-	    {
-	      if (!traits_type::find(__str, __n, this->_M_str[__size]))
-		return __size;
-	    }
-	  while (__size--);
-	}
-      return npos;
-    }
-
-  template<typename _CharT, typename _Traits>
-    /*constexpr*/ typename basic_string_view<_CharT, _Traits>::size_type
-    basic_string_view<_CharT, _Traits>::
-    find_last_not_of(_CharT __c, size_type __pos) const noexcept
-    {
-      size_type __size = this->_M_len;
-      if (__size)
-	{
-	  if (--__size > __pos)
-	    __size = __pos;
-	  do
-	    {
-	      if (!traits_type::eq(this->_M_str[__size], __c))
-		return __size;
-	    }
-	  while (__size--);
-	}
-      return npos;
-    }
-} // namespace gdb
-
-#endif // GDB_STRING_VIEW_TCC
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_sys_time.h ./gdb/gdbsupport/gdb_sys_time.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_sys_time.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_sys_time.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
-/* Copyright (C) 2015-2020 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 COMMON_GDB_SYS_TIME_H
-#define COMMON_GDB_SYS_TIME_H
-
-#include <sys/time.h>
-
-/* On MinGW-w64, gnulib's sys/time.h replaces 'struct timeval' and
-   gettimeofday with versions that support 64-bit time_t, for POSIX
-   compliance.  However, the gettimeofday replacement does not ever
-   return time_t values larger than 31-bit, as it simply returns the
-   system's gettimeofday's (signed) 32-bit result as (signed) 64-bit.
-   Because we don't really need the POSIX compliance, and it ends up
-   causing conflicts with other libraries we use that don't use gnulib
-   and thus work with the native struct timeval, such as Winsock2's
-   native 'select' and libiberty, simply undefine away gnulib's
-   replacements.  */
-#if GNULIB_defined_struct_timeval
-# undef timeval
-# undef gettimeofday
-#endif
-
-#endif /* COMMON_GDB_SYS_TIME_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_tilde_expand.c ./gdb/gdbsupport/gdb_tilde_expand.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_tilde_expand.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_tilde_expand.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,95 +0,0 @@
-/* Perform tilde expansion on paths for GDB and gdbserver.
-
-   Copyright (C) 2017-2020 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"
-#include "gdb_tilde_expand.h"
-#include <glob.h>
-
-/* RAII-style class wrapping "glob".  */
-
-class gdb_glob
-{
-public:
-  /* Construct a "gdb_glob" object by calling "glob" with the provided
-     parameters.  This function can throw if "glob" fails.  */
-  gdb_glob (const char *pattern, int flags,
-	    int (*errfunc) (const char *epath, int eerrno))
-  {
-    int ret = glob (pattern, flags, errfunc, &m_glob);
-
-    if (ret != 0)
-      {
-	if (ret == GLOB_NOMATCH)
-	  error (_("Could not find a match for '%s'."), pattern);
-	else
-	  error (_("glob could not process pattern '%s'."),
-		 pattern);
-      }
-  }
-
-  /* Destroy the object and free M_GLOB.  */
-  ~gdb_glob ()
-  {
-    globfree (&m_glob);
-  }
-
-  /* Return the GL_PATHC component of M_GLOB.  */
-  int pathc () const
-  {
-    return m_glob.gl_pathc;
-  }
-
-  /* Return the GL_PATHV component of M_GLOB.  */
-  char **pathv () const
-  {
-    return m_glob.gl_pathv;
-  }
-
-private:
-  /* The actual glob object we're dealing with.  */
-  glob_t m_glob;
-};
-
-/* See gdbsupport/gdb_tilde_expand.h.  */
-
-std::string
-gdb_tilde_expand (const char *dir)
-{
-  gdb_glob glob (dir, GLOB_TILDE_CHECK, NULL);
-
-  gdb_assert (glob.pathc () > 0);
-  /* "glob" may return more than one match to the path provided by the
-     user, but we are only interested in the first match.  */
-  std::string expanded_dir = glob.pathv ()[0];
-
-  return expanded_dir;
-}
-
-/* See gdbsupport/gdb_tilde_expand.h.  */
-
-gdb::unique_xmalloc_ptr<char>
-gdb_tilde_expand_up (const char *dir)
-{
-  gdb_glob glob (dir, GLOB_TILDE_CHECK, NULL);
-
-  gdb_assert (glob.pathc () > 0);
-  /* "glob" may return more than one match to the path provided by the
-     user, but we are only interested in the first match.  */
-  return make_unique_xstrdup (glob.pathv ()[0]);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_tilde_expand.h ./gdb/gdbsupport/gdb_tilde_expand.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_tilde_expand.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_tilde_expand.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,31 +0,0 @@
-/* Perform tilde expansion on paths for GDB and gdbserver.
-
-   Copyright (C) 2017-2020 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 COMMON_GDB_TILDE_EXPAND_H
-#define COMMON_GDB_TILDE_EXPAND_H
-
-/* Perform path expansion (i.e., tilde expansion) on DIR, and return
-   the full path.  */
-extern std::string gdb_tilde_expand (const char *dir);
-
-/* Same as GDB_TILDE_EXPAND, but return the full path as a
-   gdb::unique_xmalloc_ptr<char>.  */
-extern gdb::unique_xmalloc_ptr<char> gdb_tilde_expand_up (const char *dir);
-
-#endif /* COMMON_GDB_TILDE_EXPAND_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_unique_ptr.h ./gdb/gdbsupport/gdb_unique_ptr.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_unique_ptr.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_unique_ptr.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,67 +0,0 @@
-/* std::unique_ptr specializations for GDB.
-
-   Copyright (C) 2016-2020 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 COMMON_GDB_UNIQUE_PTR_H
-#define COMMON_GDB_UNIQUE_PTR_H
-
-#include <memory>
-
-namespace gdb
-{
-/* Define gdb::unique_xmalloc_ptr, a std::unique_ptr that manages
-   xmalloc'ed memory.  */
-
-/* The deleter for std::unique_xmalloc_ptr.  Uses xfree.  */
-template <typename T>
-struct xfree_deleter
-{
-  void operator() (T *ptr) const { xfree (ptr); }
-};
-
-/* Same, for arrays.  */
-template <typename T>
-struct xfree_deleter<T[]>
-{
-  void operator() (T *ptr) const { xfree (ptr); }
-};
-
-/* Import the standard unique_ptr to our namespace with a custom
-   deleter.  */
-
-template<typename T> using unique_xmalloc_ptr
-  = std::unique_ptr<T, xfree_deleter<T>>;
-
-/* A no-op deleter.  */
-template<typename T>
-struct noop_deleter
-{
-  void operator() (T *ptr) const { }
-};
-
-} /* namespace gdb */
-
-/* Dup STR and return a unique_xmalloc_ptr for the result.  */
-
-static inline gdb::unique_xmalloc_ptr<char>
-make_unique_xstrdup (const char *str)
-{
-  return gdb::unique_xmalloc_ptr<char> (xstrdup (str));
-}
-
-#endif /* COMMON_GDB_UNIQUE_PTR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_unlinker.h ./gdb/gdbsupport/gdb_unlinker.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_unlinker.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_unlinker.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,60 +0,0 @@
-/* Unlinking class
-
-   Copyright (C) 2016-2020 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 COMMON_GDB_UNLINKER_H
-#define COMMON_GDB_UNLINKER_H
-
-namespace gdb
-{
-
-/* An object of this class holds a filename and, when the object goes
-   of scope, the file is removed using unlink.
-
-   A user of this class can request that the file be preserved using
-   the "keep" method.  */
-class unlinker
-{
- public:
-
-  unlinker (const char *filename) ATTRIBUTE_NONNULL (2)
-    : m_filename (filename)
-  {
-    gdb_assert (filename != NULL);
-  }
-
-  ~unlinker ()
-  {
-    if (m_filename != NULL)
-      unlink (m_filename);
-  }
-
-  /* Keep the file, rather than unlink it.  */
-  void keep ()
-  {
-    m_filename = NULL;
-  }
-
- private:
-
-  const char *m_filename;
-};
-
-}
-
-#endif /* COMMON_GDB_UNLINKER_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_vecs.c ./gdb/gdbsupport/gdb_vecs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_vecs.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_vecs.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,88 +0,0 @@
-/* Some commonly-used VEC types.
-
-   Copyright (C) 2012-2020 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"
-#include "gdb_vecs.h"
-#include "host-defs.h"
-
-/* Worker function to split character delimiter separated string of fields
-   STR into a char pointer vector.  */
-
-static void
-delim_string_to_char_ptr_vec_append
-  (std::vector<gdb::unique_xmalloc_ptr<char>> *vecp, const char *str,
-   char delimiter)
-{
-  do
-    {
-      size_t this_len;
-      const char *next_field;
-      char *this_field;
-
-      next_field = strchr (str, delimiter);
-      if (next_field == NULL)
-	this_len = strlen (str);
-      else
-	{
-	  this_len = next_field - str;
-	  next_field++;
-	}
-
-      this_field = (char *) xmalloc (this_len + 1);
-      memcpy (this_field, str, this_len);
-      this_field[this_len] = '\0';
-      vecp->emplace_back (this_field);
-
-      str = next_field;
-    }
-  while (str != NULL);
-}
-
-/* See gdb_vecs.h.  */
-
-std::vector<gdb::unique_xmalloc_ptr<char>>
-delim_string_to_char_ptr_vec (const char *str, char delimiter)
-{
-  std::vector<gdb::unique_xmalloc_ptr<char>> retval;
-  
-  delim_string_to_char_ptr_vec_append (&retval, str, delimiter);
-
-  return retval;
-}
-
-/* See gdb_vecs.h.  */
-
-void
-dirnames_to_char_ptr_vec_append
-  (std::vector<gdb::unique_xmalloc_ptr<char>> *vecp, const char *dirnames)
-{
-  delim_string_to_char_ptr_vec_append (vecp, dirnames, DIRNAME_SEPARATOR);
-}
-
-/* See gdb_vecs.h.  */
-
-std::vector<gdb::unique_xmalloc_ptr<char>>
-dirnames_to_char_ptr_vec (const char *dirnames)
-{
-  std::vector<gdb::unique_xmalloc_ptr<char>> retval;
-  
-  dirnames_to_char_ptr_vec_append (&retval, dirnames);
-
-  return retval;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_vecs.h ./gdb/gdbsupport/gdb_vecs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_vecs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_vecs.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,88 +0,0 @@
-/* Some commonly-used VEC types.
-
-   Copyright (C) 2012-2020 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 COMMON_GDB_VECS_H
-#define COMMON_GDB_VECS_H
-
-/* Split STR, a list of DELIMITER-separated fields, into a char pointer vector.
-
-   You may modify the returned strings.  */
-
-extern std::vector<gdb::unique_xmalloc_ptr<char>>
-  delim_string_to_char_ptr_vec (const char *str, char delimiter);
-
-/* Like dirnames_to_char_ptr_vec, but append the directories to *VECP.  */
-
-extern void dirnames_to_char_ptr_vec_append
-  (std::vector<gdb::unique_xmalloc_ptr<char>> *vecp, const char *dirnames);
-
-/* Split DIRNAMES by DIRNAME_SEPARATOR delimiter and return a list of all the
-   elements in their original order.  For empty string ("") DIRNAMES return
-   list of one empty string ("") element.
-
-   You may modify the returned strings.  */
-
-extern std::vector<gdb::unique_xmalloc_ptr<char>>
-  dirnames_to_char_ptr_vec (const char *dirnames);
-
-/* Remove the element pointed by iterator IT from VEC, not preserving the order
-   of the remaining elements.  Return the removed element.  */
-
-template <typename T>
-T
-unordered_remove (std::vector<T> &vec, typename std::vector<T>::iterator it)
-{
-  gdb_assert (it >= vec.begin () && it < vec.end ());
-
-  T removed = std::move (*it);
-  if (it != vec.end () - 1)
-    *it = std::move (vec.back ());
-  vec.pop_back ();
-
-  return removed;
-}
-
-/* Remove the element at position IX from VEC, not preserving the order of the
-   remaining elements.  Return the removed element.  */
-
-template <typename T>
-T
-unordered_remove (std::vector<T> &vec, typename std::vector<T>::size_type ix)
-{
-  gdb_assert (ix < vec.size ());
-
-  return unordered_remove (vec, vec.begin () + ix);
-}
-
-/* Remove the element at position IX from VEC, preserving the order the
-   remaining elements.  Return the removed element.  */
-
-template <typename T>
-T
-ordered_remove (std::vector<T> &vec, typename std::vector<T>::size_type ix)
-{
-  gdb_assert (ix < vec.size ());
-
-  T removed = std::move (vec[ix]);
-  vec.erase (vec.begin () + ix);
-
-  return removed;
-}
-
-#endif /* COMMON_GDB_VECS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_wait.h ./gdb/gdbsupport/gdb_wait.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/gdb_wait.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/gdb_wait.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,113 +0,0 @@
-/* Standard wait macros.
-   Copyright (C) 2000-2020 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 COMMON_GDB_WAIT_H
-#define COMMON_GDB_WAIT_H
-
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h> /* POSIX */
-#else
-#ifdef HAVE_WAIT_H
-#include <wait.h> /* legacy */
-#endif
-#endif
-
-/* Define how to access the int that the wait system call stores.
-   This has been compatible in all Unix systems since time immemorial,
-   but various well-meaning people have defined various different
-   words for the same old bits in the same old int (sometimes claimed
-   to be a struct).  We just know it's an int and we use these macros
-   to access the bits.  */
-
-/* The following macros are defined equivalently to their definitions
-   in POSIX.1.  We fail to define WNOHANG and WUNTRACED, which POSIX.1
-   <sys/wait.h> defines, since our code does not use waitpid() (but
-   NOTE exception for GNU/Linux below).  We also fail to declare
-   wait() and waitpid().  */
-
-#ifndef	WIFEXITED
-#define WIFEXITED(w)	(((w)&0377) == 0)
-#endif
-
-#ifndef	WIFSIGNALED
-#define WIFSIGNALED(w)	(((w)&0377) != 0177 && ((w)&~0377) == 0)
-#endif
-
-#ifndef	WIFSTOPPED
-#ifdef IBM6000
-
-/* Unfortunately, the above comment (about being compatible in all Unix 
-   systems) is not quite correct for AIX, sigh.  And AIX 3.2 can generate
-   status words like 0x57c (sigtrap received after load), and gdb would
-   choke on it.  */
-
-#define WIFSTOPPED(w)	((w)&0x40)
-
-#else
-#define WIFSTOPPED(w)	(((w)&0377) == 0177)
-#endif
-#endif
-
-#ifndef	WEXITSTATUS
-#define WEXITSTATUS(w)	(((w) >> 8) & 0377) /* same as WRETCODE */
-#endif
-
-#ifndef	WTERMSIG
-#define WTERMSIG(w)	((w) & 0177)
-#endif
-
-#ifndef	WSTOPSIG
-#define WSTOPSIG	WEXITSTATUS
-#endif
-
-/* These are not defined in POSIX, but are used by our programs.  */
-
-#ifndef	WSETEXIT
-# ifdef	W_EXITCODE
-#define	WSETEXIT(w,status) ((w) = W_EXITCODE(status,0))
-# else
-#define WSETEXIT(w,status) ((w) = (0 | ((status) << 8)))
-# endif
-#endif
-
-#ifndef W_STOPCODE
-#define W_STOPCODE(sig) ((sig) << 8 | 0x7f)
-#endif
-
-#ifndef	WSETSTOP
-#define	WSETSTOP(w,sig)    ((w) = W_STOPCODE(sig))
-#endif
-
-/* For native GNU/Linux we may use waitpid and the __WCLONE option.
-  <GRIPE> It is of course dangerous not to use the REAL header file...
-  </GRIPE>.  */
-
-/* Bits in the third argument to `waitpid'.  */
-#ifndef WNOHANG
-#define	WNOHANG		1	/* Don't block waiting.  */
-#endif
-
-#ifndef WUNTRACED
-#define	WUNTRACED	2	/* Report status of stopped children.  */
-#endif
-
-#ifndef __WCLONE
-#define __WCLONE	0x80000000 /* Wait for cloned process.  */
-#endif
-
-#endif /* COMMON_GDB_WAIT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/hash_enum.h ./gdb/gdbsupport/hash_enum.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/hash_enum.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/hash_enum.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,45 +0,0 @@
-/* A hasher for enums.
-
-   Copyright (C) 2017-2020 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 COMMON_HASH_ENUM_H
-#define COMMON_HASH_ENUM_H
-
-/* A hasher for enums, which was missing in C++11:
-    http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2148
-*/
-
-namespace gdb {
-
-/* Helper struct for hashing enum types.  */
-template<typename T>
-struct hash_enum
-{
-  typedef size_t result_type;
-  typedef T argument_type;
-
-  size_t operator() (T val) const noexcept
-  {
-    using underlying = typename std::underlying_type<T>::type;
-    return std::hash<underlying> () (static_cast<underlying> (val));
-  }
-};
-
-} /* namespace gdb */
-
-#endif /* COMMON_HASH_ENUM_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/host-defs.h ./gdb/gdbsupport/host-defs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/host-defs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/host-defs.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,61 +0,0 @@
-/* Basic host-specific definitions for GDB.
-   Copyright (C) 1986-2020 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 COMMON_HOST_DEFS_H
-#define COMMON_HOST_DEFS_H
-
-#include <limits.h>
-
-/* Static host-system-dependent parameters for GDB.  */
-
-/* * Number of bits in a char or unsigned char for the target machine.
-   Just like CHAR_BIT in <limits.h> but describes the target machine.  */
-#if !defined (TARGET_CHAR_BIT)
-#define TARGET_CHAR_BIT 8
-#endif
-
-/* * If we picked up a copy of CHAR_BIT from a configuration file
-   (which may get it by including <limits.h>) then use it to set
-   the number of bits in a host char.  If not, use the same size
-   as the target.  */
-
-#if defined (CHAR_BIT)
-#define HOST_CHAR_BIT CHAR_BIT
-#else
-#define HOST_CHAR_BIT TARGET_CHAR_BIT
-#endif
-
-#ifdef __MSDOS__
-# define CANT_FORK
-# define GLOBAL_CURDIR
-# define DIRNAME_SEPARATOR ';'
-#endif
-
-#if !defined (__CYGWIN__) && defined (_WIN32)
-# define DIRNAME_SEPARATOR ';'
-#endif
-
-#ifndef DIRNAME_SEPARATOR
-#define DIRNAME_SEPARATOR ':'
-#endif
-
-#ifndef SLASH_STRING
-#define SLASH_STRING "/"
-#endif
-
-#endif /* COMMON_HOST_DEFS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/job-control.c ./gdb/gdbsupport/job-control.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/job-control.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/job-control.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,86 +0,0 @@
-/* Job control and terminal related functions, for GDB and gdbserver
-   when running under Unix.
-
-   Copyright (C) 1986-2020 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"
-#include "job-control.h"
-#ifdef HAVE_TERMIOS_H
-#include <termios.h>
-#endif
-#include <unistd.h>
-
-/* Nonzero if we have job control.  */
-int job_control;
-
-/* Set the process group ID of the inferior.
-
-   Just using job_control only does part of it because setpgid or
-   setpgrp might not exist on a system without job control.
-
-   For a more clean implementation, in libiberty, put a setpgid which merely
-   calls setpgrp and a setpgrp which does nothing (any system with job control
-   will have one or the other).  */
-
-int
-gdb_setpgid ()
-{
-  int retval = 0;
-
-  if (job_control)
-    {
-#ifdef HAVE_SETPGID
-      /* The call setpgid (0, 0) is supposed to work and mean the same
-         thing as this, but on Ultrix 4.2A it fails with EPERM (and
-         setpgid (getpid (), getpid ()) succeeds).  */
-      retval = setpgid (getpid (), getpid ());
-#else
-#ifdef HAVE_SETPGRP
-#ifdef SETPGRP_VOID
-      retval = setpgrp ();
-#else
-      retval = setpgrp (getpid (), getpid ());
-#endif
-#endif /* HAVE_SETPGRP */
-#endif /* HAVE_SETPGID */
-    }
-
-  return retval;
-}
-
-/* See gdbsupport/common-terminal.h.  */
-
-void
-have_job_control ()
-{
-  /* OK, figure out whether we have job control.  If termios is not
-     available, leave job_control 0.  */
-#if defined (HAVE_TERMIOS_H)
-  /* Do all systems with termios have the POSIX way of identifying job
-     control?  I hope so.  */
-#ifdef _POSIX_JOB_CONTROL
-  job_control = 1;
-#else
-#ifdef _SC_JOB_CONTROL
-  job_control = sysconf (_SC_JOB_CONTROL);
-#else
-  job_control = 0;		/* Have to assume the worst.  */
-#endif /* _SC_JOB_CONTROL */
-#endif /* _POSIX_JOB_CONTROL */
-#endif /* HAVE_TERMIOS_H */
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/job-control.h ./gdb/gdbsupport/job-control.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/job-control.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/job-control.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
-/* Job control and terminal related functions, for GDB and gdbserver
-   when running under Unix.
-
-   Copyright (C) 1986-2020 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 COMMON_JOB_CONTROL_H
-#define COMMON_JOB_CONTROL_H
-
-/* Do we have job control?  Can be assumed to always be the same
-   within a given run of GDB.  Use in gdb/inflow.c and
-   gdbsupport/common-inflow.c.  */
-extern int job_control;
-
-/* Set the process group of the caller to its own pid, or do nothing
-   if we lack job control.  */
-extern int gdb_setpgid ();
-
-/* Determine whether we have job control, and set variable JOB_CONTROL
-   accordingly.  This function must be called before any use of
-   JOB_CONTROL.  */
-extern void have_job_control ();
-
-#endif /* COMMON_JOB_CONTROL_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/netstuff.c ./gdb/gdbsupport/netstuff.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/netstuff.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/netstuff.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,154 +0,0 @@
-/* Operations on network stuff.
-   Copyright (C) 2018-2020 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"
-#include "netstuff.h"
-#include <algorithm>
-
-#ifdef USE_WIN32API
-#include <ws2tcpip.h>
-#else
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <sys/socket.h>
-#include <netinet/tcp.h>
-#endif
-
-/* See gdbsupport/netstuff.h.  */
-
-scoped_free_addrinfo::~scoped_free_addrinfo ()
-{
-  freeaddrinfo (m_res);
-}
-
-/* See gdbsupport/netstuff.h.  */
-
-parsed_connection_spec
-parse_connection_spec_without_prefix (std::string spec, struct addrinfo *hint)
-{
-  parsed_connection_spec ret;
-  size_t last_colon_pos = 0;
-  /* We're dealing with IPv6 if:
-
-     - ai_family is AF_INET6, or
-     - ai_family is not AF_INET, and
-       - spec[0] is '[', or
-       - the number of ':' on spec is greater than 1.  */
-  bool is_ipv6 = (hint->ai_family == AF_INET6
-		  || (hint->ai_family != AF_INET
-		      && (spec[0] == '['
-			  || std::count (spec.begin (),
-					 spec.end (), ':') > 1)));
-
-  if (is_ipv6)
-    {
-      if (spec[0] == '[')
-	{
-	  /* IPv6 addresses can be written as '[ADDR]:PORT', and we
-	     support this notation.  */
-	  size_t close_bracket_pos = spec.find_first_of (']');
-
-	  if (close_bracket_pos == std::string::npos)
-	    error (_("Missing close bracket in hostname '%s'"),
-		   spec.c_str ());
-
-	  hint->ai_family = AF_INET6;
-
-	  const char c = spec[close_bracket_pos + 1];
-
-	  if (c == '\0')
-	    last_colon_pos = std::string::npos;
-	  else if (c != ':')
-	    error (_("Invalid cruft after close bracket in '%s'"),
-		   spec.c_str ());
-
-	  /* Erase both '[' and ']'.  */
-	  spec.erase (0, 1);
-	  spec.erase (close_bracket_pos - 1, 1);
-	}
-      else if (spec.find_first_of (']') != std::string::npos)
-	error (_("Missing open bracket in hostname '%s'"),
-	       spec.c_str ());
-    }
-
-  if (last_colon_pos == 0)
-    last_colon_pos = spec.find_last_of (':');
-
-  /* The length of the hostname part.  */
-  size_t host_len;
-
-  if (last_colon_pos != std::string::npos)
-    {
-      /* The user has provided a port.  */
-      host_len = last_colon_pos;
-      ret.port_str = spec.substr (last_colon_pos + 1);
-    }
-  else
-    host_len = spec.size ();
-
-  ret.host_str = spec.substr (0, host_len);
-
-  /* Default hostname is localhost.  */
-  if (ret.host_str.empty ())
-    ret.host_str = "localhost";
-
-  return ret;
-}
-
-/* See gdbsupport/netstuff.h.  */
-
-parsed_connection_spec
-parse_connection_spec (const char *spec, struct addrinfo *hint)
-{
-  /* Struct to hold the association between valid prefixes, their
-     family and socktype.  */
-  struct host_prefix
-    {
-      /* The prefix.  */
-      const char *prefix;
-
-      /* The 'ai_family'.  */
-      int family;
-
-      /* The 'ai_socktype'.  */
-      int socktype;
-    };
-  static const struct host_prefix prefixes[] =
-    {
-      { "udp:",  AF_UNSPEC, SOCK_DGRAM },
-      { "tcp:",  AF_UNSPEC, SOCK_STREAM },
-      { "udp4:", AF_INET,   SOCK_DGRAM },
-      { "tcp4:", AF_INET,   SOCK_STREAM },
-      { "udp6:", AF_INET6,  SOCK_DGRAM },
-      { "tcp6:", AF_INET6,  SOCK_STREAM },
-    };
-
-  for (const host_prefix prefix : prefixes)
-    if (startswith (spec, prefix.prefix))
-      {
-	spec += strlen (prefix.prefix);
-	hint->ai_family = prefix.family;
-	hint->ai_socktype = prefix.socktype;
-	hint->ai_protocol
-	  = hint->ai_socktype == SOCK_DGRAM ? IPPROTO_UDP : IPPROTO_TCP;
-	break;
-      }
-
-  return parse_connection_spec_without_prefix (spec, hint);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/netstuff.h ./gdb/gdbsupport/netstuff.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/netstuff.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/netstuff.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,76 +0,0 @@
-/* Operations on network stuff.
-   Copyright (C) 2018-2020 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 COMMON_NETSTUFF_H
-#define COMMON_NETSTUFF_H
-
-#include <string>
-
-/* Like NI_MAXHOST/NI_MAXSERV, but enough for numeric forms.  */
-#define GDB_NI_MAX_ADDR 64
-#define GDB_NI_MAX_PORT 16
-
-/* Helper class to guarantee that we always call 'freeaddrinfo'.  */
-
-class scoped_free_addrinfo
-{
-public:
-  /* Default constructor.  */
-  explicit scoped_free_addrinfo (struct addrinfo *ainfo)
-    : m_res (ainfo)
-  {
-  }
-
-  /* Destructor responsible for free'ing M_RES by calling
-     'freeaddrinfo'.  */
-  ~scoped_free_addrinfo ();
-
-  DISABLE_COPY_AND_ASSIGN (scoped_free_addrinfo);
-
-private:
-  /* The addrinfo resource.  */
-  struct addrinfo *m_res;
-};
-
-/* The struct we return after parsing the connection spec.  */
-
-struct parsed_connection_spec
-{
-  /* The hostname.  */
-  std::string host_str;
-
-  /* The port, if any.  */
-  std::string port_str;
-};
-
-
-/* Parse SPEC (which is a string in the form of "ADDR:PORT") and
-   return a 'parsed_connection_spec' structure with the proper fields
-   filled in.  Also adjust HINT accordingly.  */
-extern parsed_connection_spec
-  parse_connection_spec_without_prefix (std::string spec,
-					struct addrinfo *hint);
-
-/* Parse SPEC (which is a string in the form of
-   "[tcp[6]:|udp[6]:]ADDR:PORT") and return a 'parsed_connection_spec'
-   structure with the proper fields filled in.  Also adjust HINT
-   accordingly.  */
-extern parsed_connection_spec parse_connection_spec (const char *spec,
-						     struct addrinfo *hint);
-
-#endif /* COMMON_NETSTUFF_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/new-op.c ./gdb/gdbsupport/new-op.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/new-op.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/new-op.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,95 +0,0 @@
-/* Replace operator new/new[], for GDB, the GNU debugger.
-
-   Copyright (C) 2016-2020 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/>.  */
-
-/* GCC does not understand __has_feature.  */
-#if !defined(__has_feature)
-# define __has_feature(x) 0
-#endif
-
-#if !__has_feature(address_sanitizer) && !defined(__SANITIZE_ADDRESS__)
-#include "common-defs.h"
-#include "host-defs.h"
-#include <new>
-
-/* Override operator new / operator new[], in order to internal_error
-   on allocation failure and thus query the user for abort/core
-   dump/continue, just like xmalloc does.  We don't do this from a
-   new-handler function instead (std::set_new_handler) because we want
-   to catch allocation errors from within global constructors too.
-
-   Skip overriding if building with -fsanitize=address though.
-   Address sanitizer wants to override operator new/delete too in
-   order to detect malloc+delete and new+free mismatches.  Our
-   versions would mask out ASan's, with the result of losing that
-   useful mismatch detection.
-
-   Note that C++ implementations could either have their throw
-   versions call the nothrow versions (libstdc++), or the other way
-   around (clang/libc++).  For that reason, we replace both throw and
-   nothrow variants and call malloc directly.  */
-
-void *
-operator new (std::size_t sz)
-{
-  /* malloc (0) is unpredictable; avoid it.  */
-  if (sz == 0)
-    sz = 1;
-
-  void *p = malloc (sz);	/* ARI: malloc */
-  if (p == NULL)
-    {
-      /* If the user decides to continue debugging, throw a
-	 gdb_quit_bad_alloc exception instead of a regular QUIT
-	 gdb_exception.  The former extends both std::bad_alloc and a
-	 QUIT gdb_exception.  This is necessary because operator new
-	 can only ever throw std::bad_alloc, or something that extends
-	 it.  */
-      try
-	{
-	  malloc_failure (sz);
-	}
-      catch (gdb_exception &ex)
-	{
-	  throw gdb_quit_bad_alloc (std::move (ex));
-	}
-    }
-  return p;
-}
-
-void *
-operator new (std::size_t sz, const std::nothrow_t&) noexcept
-{
-  /* malloc (0) is unpredictable; avoid it.  */
-  if (sz == 0)
-    sz = 1;
-  return malloc (sz);		/* ARI: malloc */
-}
-
-void *
-operator new[] (std::size_t sz)
-{
-   return ::operator new (sz);
-}
-
-void*
-operator new[] (std::size_t sz, const std::nothrow_t&) noexcept
-{
-  return ::operator new (sz, std::nothrow);
-}
-#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/next-iterator.h ./gdb/gdbsupport/next-iterator.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/next-iterator.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/next-iterator.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,102 +0,0 @@
-/* A "next" iterator for GDB, the GNU debugger.
-   Copyright (C) 2019-2020 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 COMMON_NEXT_ITERATOR_H
-#define COMMON_NEXT_ITERATOR_H
-
-/* An iterator that uses the 'next' field of a type to iterate.  This
-   can be used with various GDB types that are stored as linked
-   lists.  */
-
-template<typename T>
-struct next_iterator
-{
-  typedef next_iterator self_type;
-  typedef T *value_type;
-  typedef T *&reference;
-  typedef T **pointer;
-  typedef std::forward_iterator_tag iterator_category;
-  typedef int difference_type;
-
-  explicit next_iterator (T *item)
-    : m_item (item)
-  {
-  }
-
-  /* Create a one-past-the-end iterator.  */
-  next_iterator ()
-    : m_item (nullptr)
-  {
-  }
-
-  value_type operator* () const
-  {
-    return m_item;
-  }
-
-  bool operator== (const self_type &other) const
-  {
-    return m_item == other.m_item;
-  }
-
-  bool operator!= (const self_type &other) const
-  {
-    return m_item != other.m_item;
-  }
-
-  self_type &operator++ ()
-  {
-    m_item = m_item->next;
-    return *this;
-  }
-
-private:
-
-  T *m_item;
-};
-
-/* A range adapter that allows iterating over a linked list.  */
-
-template<typename T, typename Iterator = next_iterator<T>>
-class next_adapter
-{
-public:
-
-  explicit next_adapter (T *item)
-    : m_item (item)
-  {
-  }
-
-  using iterator = Iterator;
-
-  iterator begin () const
-  {
-    return iterator (m_item);
-  }
-
-  iterator end () const
-  {
-    return iterator ();
-  }
-
-private:
-
-  T *m_item;
-};
-
-#endif /* COMMON_NEXT_ITERATOR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/observable.h ./gdb/gdbsupport/observable.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/observable.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/observable.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,119 +0,0 @@
-/* Observers
-
-   Copyright (C) 2016-2020 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 COMMON_OBSERVABLE_H
-#define COMMON_OBSERVABLE_H
-
-#include <algorithm>
-#include <functional>
-#include <vector>
-
-namespace gdb
-{
-
-namespace observers
-{
-
-extern unsigned int observer_debug;
-
-/* An observer is an entity which is interested in being notified
-   when GDB reaches certain states, or certain events occur in GDB.
-   The entity being observed is called the observable.  To receive
-   notifications, the observer attaches a callback to the observable.
-   One observable can have several observers.
-
-   The observer implementation is also currently not reentrant.  In
-   particular, it is therefore not possible to call the attach or
-   detach routines during a notification.  */
-
-/* The type of a key that can be passed to attach, which can be passed
-   to detach to remove associated observers.  Tokens have address
-   identity, and are thus usually const globals.  */
-struct token
-{
-  token () = default;
-
-  DISABLE_COPY_AND_ASSIGN (token);
-};
-
-template<typename... T>
-class observable
-{
-public:
-
-  typedef std::function<void (T...)> func_type;
-
-  explicit observable (const char *name)
-    : m_name (name)
-  {
-  }
-
-  DISABLE_COPY_AND_ASSIGN (observable);
-
-  /* Attach F as an observer to this observable.  F cannot be
-     detached.  */
-  void attach (const func_type &f)
-  {
-    m_observers.emplace_back (nullptr, f);
-  }
-
-  /* Attach F as an observer to this observable.  T is a reference to
-     a token that can be used to later remove F.  */
-  void attach (const func_type &f, const token &t)
-  {
-    m_observers.emplace_back (&t, f);
-  }
-
-  /* Remove observers associated with T from this observable.  T is
-     the token that was previously passed to any number of "attach"
-     calls.  */
-  void detach (const token &t)
-  {
-    auto iter = std::remove_if (m_observers.begin (),
-				m_observers.end (),
-				[&] (const std::pair<const token *,
-				     func_type> &e)
-				{
-				  return e.first == &t;
-				});
-
-    m_observers.erase (iter, m_observers.end ());
-  }
-
-  /* Notify all observers that are attached to this observable.  */
-  void notify (T... args) const
-  {
-    if (observer_debug)
-      fprintf_unfiltered (gdb_stdlog, "observable %s notify() called\n",
-			  m_name);
-    for (auto &&e : m_observers)
-      e.second (args...);
-  }
-
-private:
-
-  std::vector<std::pair<const token *, func_type>> m_observers;
-  const char *m_name;
-};
-
-} /* namespace observers */
-
-} /* namespace gdb */
-
-#endif /* COMMON_OBSERVABLE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/offset-type.h ./gdb/gdbsupport/offset-type.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/offset-type.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/offset-type.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,133 +0,0 @@
-/* Offset types for GDB.
-
-   Copyright (C) 2017-2020 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/>.  */
-
-/* Define an "offset" type.  Offset types are distinct integer types
-   that are used to represent an offset into anything that is
-   addressable.  For example, an offset into a DWARF debug section.
-   The idea is catch mixing unrelated offset types at compile time, in
-   code that needs to manipulate multiple different kinds of offsets
-   that are easily confused.  They're safer to use than native
-   integers, because they have no implicit conversion to anything.
-   And also, since they're implemented as "enum class" strong
-   typedefs, they're still integers ABI-wise, making them a bit more
-   efficient than wrapper structs on some ABIs.
-
-   Some properties of offset types, loosely modeled on pointers:
-
-   - You can compare offsets of the same type for equality and order.
-     You can't compare an offset with an unrelated type.
-
-   - You can add/substract an integer to/from an offset, which gives
-     you back a shifted offset.
-
-   - You can subtract two offsets of the same type, which gives you
-     back the delta as an integer (of the enum class's underlying
-     type), not as an offset type.
-
-   - You can't add two offsets of the same type, as that would not
-     make sense.
-
-   However, unlike pointers, you can't deference offset types.  */
-
-#ifndef COMMON_OFFSET_TYPE_H
-#define COMMON_OFFSET_TYPE_H
-
-/* Declare TYPE as being an offset type.  This declares the type and
-   enables the operators defined below.  */
-#define DEFINE_OFFSET_TYPE(TYPE, UNDERLYING)	\
-  enum class TYPE : UNDERLYING {};		\
-  void is_offset_type (TYPE)
-
-/* The macro macro is all you need to know use offset types.  The rest
-   below is all implementation detail.  */
-
-/* For each enum class type that you want to support arithmetic
-   operators, declare an "is_offset_type" overload that has exactly
-   one parameter, of type that enum class.  E.g.,:
-
-     void is_offset_type (sect_offset);
-
-   The function does not need to be defined, only declared.
-   DEFINE_OFFSET_TYPE declares this.
-
-   A function declaration is preferred over a traits type, because the
-   former allows calling the DEFINE_OFFSET_TYPE macro inside a
-   namespace to define the corresponding offset type in that
-   namespace.  The compiler finds the corresponding is_offset_type
-   function via ADL.
-*/
-
-/* Adding or subtracting an integer to an offset type shifts the
-   offset.  This is like "PTR = PTR + INT" and "PTR += INT".  */
-
-#define DEFINE_OFFSET_ARITHM_OP(OP)					\
-  template<typename E,							\
-	   typename = decltype (is_offset_type (std::declval<E> ()))>	\
-  constexpr E								\
-  operator OP (E lhs, typename std::underlying_type<E>::type rhs)	\
-  {									\
-    using underlying = typename std::underlying_type<E>::type;		\
-    return (E) (static_cast<underlying> (lhs) OP rhs);			\
-  }									\
-									\
-  template<typename E,							\
-	   typename = decltype (is_offset_type (std::declval<E> ()))>	\
-  constexpr E								\
-  operator OP (typename std::underlying_type<E>::type lhs, E rhs)	\
-  {									\
-    using underlying = typename std::underlying_type<E>::type;		\
-    return (E) (lhs OP static_cast<underlying> (rhs));			\
-  }									\
-									\
-  template<typename E,							\
-	   typename = decltype (is_offset_type (std::declval<E> ()))>	\
-  E &									\
-  operator OP ## = (E &lhs, typename std::underlying_type<E>::type rhs)	\
-  {									\
-    using underlying = typename std::underlying_type<E>::type;		\
-    lhs = (E) (static_cast<underlying> (lhs) OP rhs);			\
-    return lhs;								\
-  }
-
-DEFINE_OFFSET_ARITHM_OP(+)
-DEFINE_OFFSET_ARITHM_OP(-)
-
-/* Adding two offset types doesn't make sense, just like "PTR + PTR"
-   doesn't make sense.  This is defined as a deleted function so that
-   a compile error easily brings you to this comment.  */
-
-template<typename E,
-	 typename = decltype (is_offset_type (std::declval<E> ()))>
-constexpr typename std::underlying_type<E>::type
-operator+ (E lhs, E rhs) = delete;
-
-/* Subtracting two offset types, however, gives you back the
-   difference between the offsets, as an underlying type.  Similar to
-   how "PTR2 - PTR1" returns a ptrdiff_t.  */
-
-template<typename E,
-	 typename = decltype (is_offset_type (std::declval<E> ()))>
-constexpr typename std::underlying_type<E>::type
-operator- (E lhs, E rhs)
-{
-  using underlying = typename std::underlying_type<E>::type;
-  return static_cast<underlying> (lhs) - static_cast<underlying> (rhs);
-}
-
-#endif /* COMMON_OFFSET_TYPE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/parallel-for.h ./gdb/gdbsupport/parallel-for.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/parallel-for.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/parallel-for.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,86 +0,0 @@
-/* Parallel for loops
-
-   Copyright (C) 2019-2020 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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/pathstuff.c ./gdb/gdbsupport/pathstuff.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/pathstuff.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/pathstuff.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,290 +0,0 @@
-/* Path manipulation routines for GDB and gdbserver.
-
-   Copyright (C) 1986-2020 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"
-#include "pathstuff.h"
-#include "host-defs.h"
-#include "filenames.h"
-#include "gdb_tilde_expand.h"
-
-#ifdef USE_WIN32API
-#include <windows.h>
-#endif
-
-/* See gdbsupport/pathstuff.h.  */
-
-gdb::unique_xmalloc_ptr<char>
-gdb_realpath (const char *filename)
-{
-/* On most hosts, we rely on canonicalize_file_name to compute
-   the FILENAME's realpath.
-
-   But the situation is slightly more complex on Windows, due to some
-   versions of GCC which were reported to generate paths where
-   backlashes (the directory separator) were doubled.  For instance:
-      c:\\some\\double\\slashes\\dir
-   ... instead of ...
-      c:\some\double\slashes\dir
-   Those double-slashes were getting in the way when comparing paths,
-   for instance when trying to insert a breakpoint as follow:
-      (gdb) b c:/some/double/slashes/dir/foo.c:4
-      No source file named c:/some/double/slashes/dir/foo.c:4.
-      (gdb) b c:\some\double\slashes\dir\foo.c:4
-      No source file named c:\some\double\slashes\dir\foo.c:4.
-   To prevent this from happening, we need this function to always
-   strip those extra backslashes.  While canonicalize_file_name does
-   perform this simplification, it only works when the path is valid.
-   Since the simplification would be useful even if the path is not
-   valid (one can always set a breakpoint on a file, even if the file
-   does not exist locally), we rely instead on GetFullPathName to
-   perform the canonicalization.  */
-
-#if defined (_WIN32)
-  {
-    char buf[MAX_PATH];
-    DWORD len = GetFullPathName (filename, MAX_PATH, buf, NULL);
-
-    /* The file system is case-insensitive but case-preserving.
-       So it is important we do not lowercase the path.  Otherwise,
-       we might not be able to display the original casing in a given
-       path.  */
-    if (len > 0 && len < MAX_PATH)
-      return make_unique_xstrdup (buf);
-  }
-#else
-  {
-    char *rp = canonicalize_file_name (filename);
-
-    if (rp != NULL)
-      return gdb::unique_xmalloc_ptr<char> (rp);
-  }
-#endif
-
-  /* This system is a lost cause, just dup the buffer.  */
-  return make_unique_xstrdup (filename);
-}
-
-/* See gdbsupport/pathstuff.h.  */
-
-gdb::unique_xmalloc_ptr<char>
-gdb_realpath_keepfile (const char *filename)
-{
-  const char *base_name = lbasename (filename);
-  char *dir_name;
-  char *result;
-
-  /* Extract the basename of filename, and return immediately
-     a copy of filename if it does not contain any directory prefix.  */
-  if (base_name == filename)
-    return make_unique_xstrdup (filename);
-
-  dir_name = (char *) alloca ((size_t) (base_name - filename + 2));
-  /* Allocate enough space to store the dir_name + plus one extra
-     character sometimes needed under Windows (see below), and
-     then the closing \000 character.  */
-  strncpy (dir_name, filename, base_name - filename);
-  dir_name[base_name - filename] = '\000';
-
-#ifdef HAVE_DOS_BASED_FILE_SYSTEM
-  /* We need to be careful when filename is of the form 'd:foo', which
-     is equivalent of d:./foo, which is totally different from d:/foo.  */
-  if (strlen (dir_name) == 2 && isalpha (dir_name[0]) && dir_name[1] == ':')
-    {
-      dir_name[2] = '.';
-      dir_name[3] = '\000';
-    }
-#endif
-
-  /* Canonicalize the directory prefix, and build the resulting
-     filename.  If the dirname realpath already contains an ending
-     directory separator, avoid doubling it.  */
-  gdb::unique_xmalloc_ptr<char> path_storage = gdb_realpath (dir_name);
-  const char *real_path = path_storage.get ();
-  if (IS_DIR_SEPARATOR (real_path[strlen (real_path) - 1]))
-    result = concat (real_path, base_name, (char *) NULL);
-  else
-    result = concat (real_path, SLASH_STRING, base_name, (char *) NULL);
-
-  return gdb::unique_xmalloc_ptr<char> (result);
-}
-
-/* See gdbsupport/pathstuff.h.  */
-
-gdb::unique_xmalloc_ptr<char>
-gdb_abspath (const char *path)
-{
-  gdb_assert (path != NULL && path[0] != '\0');
-
-  if (path[0] == '~')
-    return gdb_tilde_expand_up (path);
-
-  if (IS_ABSOLUTE_PATH (path))
-    return make_unique_xstrdup (path);
-
-  /* Beware the // my son, the Emacs barfs, the botch that catch...  */
-  return gdb::unique_xmalloc_ptr<char>
-    (concat (current_directory,
-	     IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])
-	     ? "" : SLASH_STRING,
-	     path, (char *) NULL));
-}
-
-/* See gdbsupport/pathstuff.h.  */
-
-const char *
-child_path (const char *parent, const char *child)
-{
-  /* The child path must start with the parent path.  */
-  size_t parent_len = strlen (parent);
-  if (filename_ncmp (parent, child, parent_len) != 0)
-    return NULL;
-
-  /* The parent path must be a directory and the child must contain at
-     least one component underneath the parent.  */
-  const char *child_component;
-  if (parent_len > 0 && IS_DIR_SEPARATOR (parent[parent_len - 1]))
-    {
-      /* The parent path ends in a directory separator, so it is a
-	 directory.  The first child component starts after the common
-	 prefix.  */
-      child_component = child + parent_len;
-    }
-  else
-    {
-      /* The parent path does not end in a directory separator.  The
-	 first character in the child after the common prefix must be
-	 a directory separator.
-
-	 Note that CHILD must hold at least parent_len characters for
-	 filename_ncmp to return zero.  If the character at parent_len
-	 is nul due to CHILD containing the same path as PARENT, the
-	 IS_DIR_SEPARATOR check will fail here.  */
-      if (!IS_DIR_SEPARATOR (child[parent_len]))
-	return NULL;
-
-      /* The first child component starts after the separator after the
-	 common prefix.  */
-      child_component = child + parent_len + 1;
-    }
-
-  /* The child must contain at least one non-separator character after
-     the parent.  */
-  while (*child_component != '\0')
-    {
-      if (!IS_DIR_SEPARATOR (*child_component))
-	return child_component;
-
-      child_component++;
-    }
-  return NULL;
-}
-
-/* See gdbsupport/pathstuff.h.  */
-
-bool
-contains_dir_separator (const char *path)
-{
-  for (; *path != '\0'; path++)
-    {
-      if (IS_DIR_SEPARATOR (*path))
-	return true;
-    }
-
-  return false;
-}
-
-/* See gdbsupport/pathstuff.h.  */
-
-std::string
-get_standard_cache_dir ()
-{
-#ifdef __APPLE__
-#define HOME_CACHE_DIR "Library/Caches"
-#else
-#define HOME_CACHE_DIR ".cache"
-#endif
-
-#ifndef __APPLE__
-  const char *xdg_cache_home = getenv ("XDG_CACHE_HOME");
-  if (xdg_cache_home != NULL)
-    {
-      /* Make sure the path is absolute and tilde-expanded.  */
-      gdb::unique_xmalloc_ptr<char> abs (gdb_abspath (xdg_cache_home));
-      return string_printf ("%s/gdb", abs.get ());
-    }
-#endif
-
-  const char *home = getenv ("HOME");
-  if (home != NULL)
-    {
-      /* Make sure the path is absolute and tilde-expanded.  */
-      gdb::unique_xmalloc_ptr<char> abs (gdb_abspath (home));
-      return string_printf ("%s/" HOME_CACHE_DIR "/gdb", abs.get ());
-    }
-
-  return {};
-}
-
-/* See gdbsupport/pathstuff.h.  */
-
-std::string
-get_standard_temp_dir ()
-{
-#ifdef WIN32
-  const char *tmp = getenv ("TMP");
-  if (tmp != nullptr)
-    return tmp;
-
-  tmp = getenv ("TEMP");
-  if (tmp != nullptr)
-    return tmp;
-
-  error (_("Couldn't find temp dir path, both TMP and TEMP are unset."));
-
-#else
-  const char *tmp = getenv ("TMPDIR");
-  if (tmp != nullptr)
-    return tmp;
-
-  return "/tmp";
-#endif
-}
-
-/* See gdbsupport/pathstuff.h.  */
-
-const char *
-get_shell ()
-{
-  const char *ret = getenv ("SHELL");
-  if (ret == NULL)
-    ret = "/bin/sh";
-
-  return ret;
-}
-
-/* See gdbsupport/pathstuff.h.  */
-
-gdb::char_vector
-make_temp_filename (const std::string &f)
-{
-  gdb::char_vector filename_temp (f.length () + 8);
-  strcpy (filename_temp.data (), f.c_str ());
-  strcat (filename_temp.data () + f.size (), "-XXXXXX");
-  return filename_temp;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/pathstuff.h ./gdb/gdbsupport/pathstuff.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/pathstuff.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/pathstuff.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,95 +0,0 @@
-/* Path manipulation routines for GDB and gdbserver.
-
-   Copyright (C) 1986-2020 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 COMMON_PATHSTUFF_H
-#define COMMON_PATHSTUFF_H
-
-#include "gdbsupport/byte-vector.h"
-
-/* Path utilities.  */
-
-/* Return the real path of FILENAME, expanding all the symbolic links.
-
-   Contrary to "gdb_abspath", this function does not use
-   CURRENT_DIRECTORY for path expansion.  Instead, it relies on the
-   current working directory (CWD) of GDB or gdbserver.  */
-
-extern gdb::unique_xmalloc_ptr<char> gdb_realpath (const char *filename);
-
-/* Return a copy of FILENAME, with its directory prefix canonicalized
-   by gdb_realpath.  */
-
-extern gdb::unique_xmalloc_ptr<char>
-  gdb_realpath_keepfile (const char *filename);
-
-/* Return PATH in absolute form, performing tilde-expansion if necessary.
-   PATH cannot be NULL or the empty string.
-   This does not resolve symlinks however, use gdb_realpath for that.
-
-   Contrary to "gdb_realpath", this function uses CURRENT_DIRECTORY
-   for the path expansion.  This may lead to scenarios the current
-   working directory (CWD) is different than CURRENT_DIRECTORY.  */
-
-extern gdb::unique_xmalloc_ptr<char> gdb_abspath (const char *path);
-
-/* If the path in CHILD is a child of the path in PARENT, return a
-   pointer to the first component in the CHILD's pathname below the
-   PARENT.  Otherwise, return NULL.  */
-
-extern const char *child_path (const char *parent, const char *child);
-
-/* Return whether PATH contains a directory separator character.  */
-
-extern bool contains_dir_separator (const char *path);
-
-/* Get the usual user cache directory for the current platform.
-
-   On Linux, it follows the XDG Base Directory specification: use
-   $XDG_CACHE_HOME/gdb if the XDG_CACHE_HOME environment variable is
-   defined, otherwise $HOME/.cache.
-
-   On macOS, it follows the local convention and uses
-   ~/Library/Caches/gdb.
-
-  The return value is absolute and tilde-expanded.  Return an empty
-  string if neither XDG_CACHE_HOME (on Linux) or HOME are defined.  */
-
-extern std::string get_standard_cache_dir ();
-
-/* Get the usual temporary directory for the current platform.
-
-   On Windows, this is the TMP or TEMP environment variable.
-
-   On the rest, this is the TMPDIR environment variable, if defined, else /tmp.
-
-   Throw an exception on error.  */
-
-extern std::string get_standard_temp_dir ();
-
-/* Return the file name of the user's shell.  Normally this comes from
-   the SHELL environment variable.  */
-
-extern const char *get_shell ();
-
-/* Make a filename suitable to pass to mkstemp based on F (e.g.
-   /tmp/foo -> /tmp/foo-XXXXXX).  */
-
-extern gdb::char_vector make_temp_filename (const std::string &f);
-
-#endif /* COMMON_PATHSTUFF_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/poison.h ./gdb/gdbsupport/poison.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/poison.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/poison.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,248 +0,0 @@
-/* Poison symbols at compile time.
-
-   Copyright (C) 2017-2020 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 COMMON_POISON_H
-#define COMMON_POISON_H
-
-#include "traits.h"
-#include "obstack.h"
-
-/* Poison memset of non-POD types.  The idea is catching invalid
-   initialization of non-POD structs that is easy to be introduced as
-   side effect of refactoring.  For example, say this:
-
- struct S { VEC(foo_s) *m_data; };
-
-is converted to this at some point:
-
- struct S {
-   S() { m_data.reserve (10); }
-   std::vector<foo> m_data;
- };
-
-and old code was initializing S objects like this:
-
- struct S s;
- memset (&s, 0, sizeof (S)); // whoops, now wipes vector.
-
-Declaring memset as deleted for non-POD types makes the memset above
-be a compile-time error.  */
-
-/* Helper for SFINAE.  True if "T *" is memsettable.  I.e., if T is
-   either void, or POD.  */
-template<typename T>
-struct IsMemsettable
-  : gdb::Or<std::is_void<T>,
-	    std::is_pod<T>>
-{};
-
-template <typename T,
-	  typename = gdb::Requires<gdb::Not<IsMemsettable<T>>>>
-void *memset (T *s, int c, size_t n) = delete;
-
-#if HAVE_IS_TRIVIALLY_COPYABLE
-
-/* Similarly, poison memcpy and memmove of non trivially-copyable
-   types, which is undefined.  */
-
-/* True if "T *" is relocatable.  I.e., copyable with memcpy/memmove.
-   I.e., T is either trivially copyable, or void.  */
-template<typename T>
-struct IsRelocatable
-  : gdb::Or<std::is_void<T>,
-	    std::is_trivially_copyable<T>>
-{};
-
-/* True if both source and destination are relocatable.  */
-
-template <typename D, typename S>
-using BothAreRelocatable
-  = gdb::And<IsRelocatable<D>, IsRelocatable<S>>;
-
-template <typename D, typename S,
-	  typename = gdb::Requires<gdb::Not<BothAreRelocatable<D, S>>>>
-void *memcpy (D *dest, const S *src, size_t n) = delete;
-
-template <typename D, typename S,
-	  typename = gdb::Requires<gdb::Not<BothAreRelocatable<D, S>>>>
-void *memmove (D *dest, const S *src, size_t n) = delete;
-
-#endif /* HAVE_IS_TRIVIALLY_COPYABLE */
-
-/* Poison XNEW and friends to catch usages of malloc-style allocations on
-   objects that require new/delete.  */
-
-template<typename T>
-#if HAVE_IS_TRIVIALLY_CONSTRUCTIBLE
-using IsMallocable = std::is_trivially_constructible<T>;
-#else
-using IsMallocable = std::true_type;
-#endif
-
-template<typename T>
-using IsFreeable = gdb::Or<std::is_trivially_destructible<T>, std::is_void<T>>;
-
-template <typename T, typename = gdb::Requires<gdb::Not<IsFreeable<T>>>>
-void free (T *ptr) = delete;
-
-template<typename T>
-static T *
-xnew ()
-{
-  static_assert (IsMallocable<T>::value, "Trying to use XNEW with a non-POD \
-data type.  Use operator new instead.");
-  return XNEW (T);
-}
-
-#undef XNEW
-#define XNEW(T) xnew<T>()
-
-template<typename T>
-static T *
-xcnew ()
-{
-  static_assert (IsMallocable<T>::value, "Trying to use XCNEW with a non-POD \
-data type.  Use operator new instead.");
-  return XCNEW (T);
-}
-
-#undef XCNEW
-#define XCNEW(T) xcnew<T>()
-
-template<typename T>
-static void
-xdelete (T *p)
-{
-  static_assert (IsFreeable<T>::value, "Trying to use XDELETE with a non-POD \
-data type.  Use operator delete instead.");
-  XDELETE (p);
-}
-
-#undef XDELETE
-#define XDELETE(P) xdelete (P)
-
-template<typename T>
-static T *
-xnewvec (size_t n)
-{
-  static_assert (IsMallocable<T>::value, "Trying to use XNEWVEC with a \
-non-POD data type.  Use operator new[] (or std::vector) instead.");
-  return XNEWVEC (T, n);
-}
-
-#undef XNEWVEC
-#define XNEWVEC(T, N) xnewvec<T> (N)
-
-template<typename T>
-static T *
-xcnewvec (size_t n)
-{
-  static_assert (IsMallocable<T>::value, "Trying to use XCNEWVEC with a \
-non-POD data type.  Use operator new[] (or std::vector) instead.");
-  return XCNEWVEC (T, n);
-}
-
-#undef XCNEWVEC
-#define XCNEWVEC(T, N) xcnewvec<T> (N)
-
-template<typename T>
-static T *
-xresizevec (T *p, size_t n)
-{
-  static_assert (IsMallocable<T>::value, "Trying to use XRESIZEVEC with a \
-non-POD data type.");
-  return XRESIZEVEC (T, p, n);
-}
-
-#undef XRESIZEVEC
-#define XRESIZEVEC(T, P, N) xresizevec<T> (P, N)
-
-template<typename T>
-static void
-xdeletevec (T *p)
-{
-  static_assert (IsFreeable<T>::value, "Trying to use XDELETEVEC with a \
-non-POD data type.  Use operator delete[] (or std::vector) instead.");
-  XDELETEVEC (p);
-}
-
-#undef XDELETEVEC
-#define XDELETEVEC(P) xdeletevec (P)
-
-template<typename T>
-static T *
-xnewvar (size_t s)
-{
-  static_assert (IsMallocable<T>::value, "Trying to use XNEWVAR with a \
-non-POD data type.");
-  return XNEWVAR (T, s);;
-}
-
-#undef XNEWVAR
-#define XNEWVAR(T, S) xnewvar<T> (S)
-
-template<typename T>
-static T *
-xcnewvar (size_t s)
-{
-  static_assert (IsMallocable<T>::value, "Trying to use XCNEWVAR with a \
-non-POD data type.");
-  return XCNEWVAR (T, s);
-}
-
-#undef XCNEWVAR
-#define XCNEWVAR(T, S) xcnewvar<T> (S)
-
-template<typename T>
-static T *
-xresizevar (T *p, size_t s)
-{
-  static_assert (IsMallocable<T>::value, "Trying to use XRESIZEVAR with a \
-non-POD data type.");
-  return XRESIZEVAR (T, p, s);
-}
-
-#undef XRESIZEVAR
-#define XRESIZEVAR(T, P, S) xresizevar<T> (P, S)
-
-template<typename T>
-static T *
-xobnew (obstack *ob)
-{
-  static_assert (IsMallocable<T>::value, "Trying to use XOBNEW with a \
-non-POD data type.");
-  return XOBNEW (ob, T);
-}
-
-#undef XOBNEW
-#define XOBNEW(O, T) xobnew<T> (O)
-
-template<typename T>
-static T *
-xobnewvec (obstack *ob, size_t n)
-{
-  static_assert (IsMallocable<T>::value, "Trying to use XOBNEWVEC with a \
-non-POD data type.");
-  return XOBNEWVEC (ob, T, n);
-}
-
-#undef XOBNEWVEC
-#define XOBNEWVEC(O, T, N) xobnewvec<T> (O, N)
-
-#endif /* COMMON_POISON_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/preprocessor.h ./gdb/gdbsupport/preprocessor.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/preprocessor.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/preprocessor.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,35 +0,0 @@
-/* Copyright (C) 2017-2020 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 COMMON_PREPROCESSOR_H
-#define COMMON_PREPROCESSOR_H
-
-/* Generally useful preprocessor bits.  */
-
-/* Concatenate two tokens.  */
-#define CONCAT_1(a, b) a ## b
-#define CONCAT(a, b) CONCAT_1 (a, b)
-
-/* Stringification.  */
-#define STRINGIFY_1(x) #x
-#define STRINGIFY(x) STRINGIFY_1 (x)
-
-/* Escape parens out.  Useful if you need to pass an argument that
-   includes commas to another macro.  */
-#define ESC_PARENS(...) __VA_ARGS__
-
-#endif /* COMMON_PREPROCESSOR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/print-utils.c ./gdb/gdbsupport/print-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/print-utils.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/print-utils.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,326 +0,0 @@
-/* Cell-based print utility routines for GDB, the GNU debugger.
-
-   Copyright (C) 1986-2020 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"
-#include "print-utils.h"
-/* Temporary storage using circular buffer.  */
-
-/* Number of cells in the circular buffer.  */
-#define NUMCELLS 16
-
-/* Return the next entry in the circular buffer.  */
-
-char *
-get_print_cell (void)
-{
-  static char buf[NUMCELLS][PRINT_CELL_SIZE];
-  static int cell = 0;
-
-  if (++cell >= NUMCELLS)
-    cell = 0;
-  return buf[cell];
-}
-
-static char *
-decimal2str (const char *sign, ULONGEST addr, int width)
-{
-  /* Steal code from valprint.c:print_decimal().  Should this worry
-     about the real size of addr as the above does?  */
-  unsigned long temp[3];
-  char *str = get_print_cell ();
-  int i = 0;
-
-  do
-    {
-      temp[i] = addr % (1000 * 1000 * 1000);
-      addr /= (1000 * 1000 * 1000);
-      i++;
-      width -= 9;
-    }
-  while (addr != 0 && i < (sizeof (temp) / sizeof (temp[0])));
-
-  width += 9;
-  if (width < 0)
-    width = 0;
-
-  switch (i)
-    {
-    case 1:
-      xsnprintf (str, PRINT_CELL_SIZE, "%s%0*lu", sign, width, temp[0]);
-      break;
-    case 2:
-      xsnprintf (str, PRINT_CELL_SIZE, "%s%0*lu%09lu", sign, width,
-		 temp[1], temp[0]);
-      break;
-    case 3:
-      xsnprintf (str, PRINT_CELL_SIZE, "%s%0*lu%09lu%09lu", sign, width,
-		 temp[2], temp[1], temp[0]);
-      break;
-    default:
-      internal_error (__FILE__, __LINE__,
-		      _("failed internal consistency check"));
-    }
-
-  return str;
-}
-
-static char *
-octal2str (ULONGEST addr, int width)
-{
-  unsigned long temp[3];
-  char *str = get_print_cell ();
-  int i = 0;
-
-  do
-    {
-      temp[i] = addr % (0100000 * 0100000);
-      addr /= (0100000 * 0100000);
-      i++;
-      width -= 10;
-    }
-  while (addr != 0 && i < (sizeof (temp) / sizeof (temp[0])));
-
-  width += 10;
-  if (width < 0)
-    width = 0;
-
-  switch (i)
-    {
-    case 1:
-      if (temp[0] == 0)
-	xsnprintf (str, PRINT_CELL_SIZE, "%*o", width, 0);
-      else
-	xsnprintf (str, PRINT_CELL_SIZE, "0%0*lo", width, temp[0]);
-      break;
-    case 2:
-      xsnprintf (str, PRINT_CELL_SIZE, "0%0*lo%010lo", width, temp[1], temp[0]);
-      break;
-    case 3:
-      xsnprintf (str, PRINT_CELL_SIZE, "0%0*lo%010lo%010lo", width,
-		 temp[2], temp[1], temp[0]);
-      break;
-    default:
-      internal_error (__FILE__, __LINE__,
-		      _("failed internal consistency check"));
-    }
-
-  return str;
-}
-
-/* See print-utils.h.  */
-
-char *
-pulongest (ULONGEST u)
-{
-  return decimal2str ("", u, 0);
-}
-
-/* See print-utils.h.  */
-
-char *
-plongest (LONGEST l)
-{
-  if (l < 0)
-    return decimal2str ("-", -l, 0);
-  else
-    return decimal2str ("", l, 0);
-}
-
-/* Eliminate warning from compiler on 32-bit systems.  */
-static int thirty_two = 32;
-
-/* See print-utils.h.  */
-
-char *
-phex (ULONGEST l, int sizeof_l)
-{
-  char *str;
-
-  switch (sizeof_l)
-    {
-    case 8:
-      str = get_print_cell ();
-      xsnprintf (str, PRINT_CELL_SIZE, "%08lx%08lx",
-		 (unsigned long) (l >> thirty_two),
-		 (unsigned long) (l & 0xffffffff));
-      break;
-    case 4:
-      str = get_print_cell ();
-      xsnprintf (str, PRINT_CELL_SIZE, "%08lx", (unsigned long) l);
-      break;
-    case 2:
-      str = get_print_cell ();
-      xsnprintf (str, PRINT_CELL_SIZE, "%04x", (unsigned short) (l & 0xffff));
-      break;
-    default:
-      str = phex (l, sizeof (l));
-      break;
-    }
-
-  return str;
-}
-
-/* See print-utils.h.  */
-
-char *
-phex_nz (ULONGEST l, int sizeof_l)
-{
-  char *str;
-
-  switch (sizeof_l)
-    {
-    case 8:
-      {
-	unsigned long high = (unsigned long) (l >> thirty_two);
-
-	str = get_print_cell ();
-	if (high == 0)
-	  xsnprintf (str, PRINT_CELL_SIZE, "%lx",
-		     (unsigned long) (l & 0xffffffff));
-	else
-	  xsnprintf (str, PRINT_CELL_SIZE, "%lx%08lx", high,
-		     (unsigned long) (l & 0xffffffff));
-	break;
-      }
-    case 4:
-      str = get_print_cell ();
-      xsnprintf (str, PRINT_CELL_SIZE, "%lx", (unsigned long) l);
-      break;
-    case 2:
-      str = get_print_cell ();
-      xsnprintf (str, PRINT_CELL_SIZE, "%x", (unsigned short) (l & 0xffff));
-      break;
-    default:
-      str = phex_nz (l, sizeof (l));
-      break;
-    }
-
-  return str;
-}
-
-/* See print-utils.h.  */
-
-char *
-hex_string (LONGEST num)
-{
-  char *result = get_print_cell ();
-
-  xsnprintf (result, PRINT_CELL_SIZE, "0x%s", phex_nz (num, sizeof (num)));
-  return result;
-}
-
-/* See print-utils.h.  */
-
-char *
-hex_string_custom (LONGEST num, int width)
-{
-  char *result = get_print_cell ();
-  char *result_end = result + PRINT_CELL_SIZE - 1;
-  const char *hex = phex_nz (num, sizeof (num));
-  int hex_len = strlen (hex);
-
-  if (hex_len > width)
-    width = hex_len;
-  if (width + 2 >= PRINT_CELL_SIZE)
-    internal_error (__FILE__, __LINE__, _("\
-hex_string_custom: insufficient space to store result"));
-
-  strcpy (result_end - width - 2, "0x");
-  memset (result_end - width, '0', width);
-  strcpy (result_end - hex_len, hex);
-  return result_end - width - 2;
-}
-
-/* See print-utils.h.  */
-
-char *
-int_string (LONGEST val, int radix, int is_signed, int width,
-	    int use_c_format)
-{
-  switch (radix)
-    {
-    case 16:
-      {
-	char *result;
-
-	if (width == 0)
-	  result = hex_string (val);
-	else
-	  result = hex_string_custom (val, width);
-	if (! use_c_format)
-	  result += 2;
-	return result;
-      }
-    case 10:
-      {
-	if (is_signed && val < 0)
-	  return decimal2str ("-", -val, width);
-	else
-	  return decimal2str ("", val, width);
-      }
-    case 8:
-      {
-	char *result = octal2str (val, width);
-
-	if (use_c_format || val == 0)
-	  return result;
-	else
-	  return result + 1;
-      }
-    default:
-      internal_error (__FILE__, __LINE__,
-		      _("failed internal consistency check"));
-    }
-}
-
-/* See print-utils.h.  */
-
-const char *
-core_addr_to_string (const CORE_ADDR addr)
-{
-  char *str = get_print_cell ();
-
-  strcpy (str, "0x");
-  strcat (str, phex (addr, sizeof (addr)));
-  return str;
-}
-
-/* See print-utils.h.  */
-
-const char *
-core_addr_to_string_nz (const CORE_ADDR addr)
-{
-  char *str = get_print_cell ();
-
-  strcpy (str, "0x");
-  strcat (str, phex_nz (addr, sizeof (addr)));
-  return str;
-}
-
-/* See print-utils.h.  */
-
-const char *
-host_address_to_string_1 (const void *addr)
-{
-  char *str = get_print_cell ();
-
-  xsnprintf (str, PRINT_CELL_SIZE, "0x%s",
-	     phex_nz ((uintptr_t) addr, sizeof (addr)));
-  return str;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/print-utils.h ./gdb/gdbsupport/print-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/print-utils.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/print-utils.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,85 +0,0 @@
-/* Cell-based print utility routines for GDB, the GNU debugger.
-
-   Copyright (C) 1986-2020 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 COMMON_PRINT_UTILS_H
-#define COMMON_PRINT_UTILS_H
-
-/* How many characters (including the terminating null byte) fit in a
-   cell.  */
-#define PRINT_CELL_SIZE 50
-
-/* %u for ULONGEST.  The result is stored in a circular static buffer,
-   NUMCELLS deep.  */
-
-extern char *pulongest (ULONGEST u);
-
-/* %d for LONGEST.  The result is stored in a circular static buffer,
-   NUMCELLS deep.  */
-
-extern char *plongest (LONGEST l);
-
-/* Convert a ULONGEST into a HEX string, like %lx, with leading zeros.
-   The result is stored in a circular static buffer, NUMCELLS deep.  */
-
-extern char *phex (ULONGEST l, int sizeof_l);
-
-/* Convert a ULONGEST into a HEX string, like %lx, without leading zeros.
-   The result is  stored in a circular static buffer, NUMCELLS deep.  */
-
-extern char *phex_nz (ULONGEST l, int sizeof_l);
-
-/* Converts a LONGEST to a C-format hexadecimal literal and stores it
-   in a static string.  Returns a pointer to this string.  */
-
-extern char *hex_string (LONGEST num);
-
-/* Converts a LONGEST number to a C-format hexadecimal literal and
-   stores it in a static string.  Returns a pointer to this string
-   that is valid until the next call.  The number is padded on the
-   left with 0s to at least WIDTH characters.  */
-
-extern char *hex_string_custom (LONGEST num, int width);
-
-/* Convert VAL to a numeral in the given radix.  For
- * radix 10, IS_SIGNED may be true, indicating a signed quantity;
- * otherwise VAL is interpreted as unsigned.  If WIDTH is supplied, 
- * it is the minimum width (0-padded if needed).  USE_C_FORMAT means
- * to use C format in all cases.  If it is false, then 'x' 
- * and 'o' formats do not include a prefix (0x or leading 0).  */
-
-extern char *int_string (LONGEST val, int radix, int is_signed, int width, 
-			 int use_c_format);	
-
-/* Convert a CORE_ADDR into a string.  */
-
-extern const char *core_addr_to_string (const CORE_ADDR addr);
-
-extern const char *core_addr_to_string_nz (const CORE_ADDR addr);
-
-extern const char *host_address_to_string_1 (const void *addr);
-
-/* Wrapper that avoids adding a pointless cast to all callers.  */
-#define host_address_to_string(ADDR) \
-  host_address_to_string_1 ((const void *) (ADDR))
-
-/* Return the next entry in the circular print buffer.  */
-
-extern char *get_print_cell (void);
-
-#endif /* COMMON_PRINT_UTILS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/ptid.c ./gdb/gdbsupport/ptid.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/ptid.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/ptid.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,26 +0,0 @@
-/* The ptid_t type and common functions operating on it.
-
-   Copyright (C) 1986-2020 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"
-#include "ptid.h"
-
-/* See ptid.h for these.  */
-
-ptid_t const null_ptid = ptid_t::make_null ();
-ptid_t const minus_one_ptid = ptid_t::make_minus_one ();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/ptid.h ./gdb/gdbsupport/ptid.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/ptid.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/ptid.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,155 +0,0 @@
-/* The ptid_t type and common functions operating on it.
-
-   Copyright (C) 1986-2020 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 COMMON_PTID_H
-#define COMMON_PTID_H
-
-/* The ptid struct is a collection of the various "ids" necessary for
-   identifying the inferior process/thread being debugged.  This
-   consists of the process id (pid), lightweight process id (lwp) and
-   thread id (tid).  When manipulating ptids, the constructors,
-   accessors, and predicates declared in this file should be used.  Do
-   NOT access the struct ptid members directly.
-
-   process_stratum targets that handle threading themselves should
-   prefer using the ptid.lwp field, leaving the ptid.tid field for any
-   thread_stratum target that might want to sit on top.
-*/
-
-class ptid_t
-{
-public:
-  /* Must have a trivial defaulted default constructor so that the
-     type remains POD.  */
-  ptid_t () noexcept = default;
-
-  /* Make a ptid given the necessary PID, LWP, and TID components.
-
-     A ptid with only a PID (LWP and TID equal to zero) is usually used to
-     represent a whole process, including all its lwps/threads.  */
-
-  explicit constexpr ptid_t (int pid, long lwp = 0, long tid = 0)
-    : m_pid (pid), m_lwp (lwp), m_tid (tid)
-  {}
-
-  /* Fetch the pid (process id) component from the ptid.  */
-
-  constexpr int pid () const
-  { return m_pid; }
-
-  /* Return true if the ptid's lwp member is non-zero.  */
-
-  constexpr bool lwp_p () const
-  { return m_lwp != 0; }
-
-  /* Fetch the lwp (lightweight process) component from the ptid.  */
-
-  constexpr long lwp () const
-  { return m_lwp; }
-
-  /* Return true if the ptid's tid member is non-zero.  */
-
-  constexpr bool tid_p () const
-  { return m_tid != 0; }
-
-  /* Fetch the tid (thread id) component from a ptid.  */
-
-  constexpr long tid () const
-  { return m_tid; }
-
-  /* Return true if the ptid represents a whole process, including all its
-     lwps/threads.  Such ptids have the form of (pid, 0, 0), with
-     pid != -1.  */
-
-  constexpr bool is_pid () const
-  {
-    return (*this != make_null ()
-	    && *this != make_minus_one ()
-	    && m_lwp == 0
-	    && m_tid == 0);
-  }
-
-  /* Compare two ptids to see if they are equal.  */
-
-  constexpr bool operator== (const ptid_t &other) const
-  {
-    return (m_pid == other.m_pid
-	    && m_lwp == other.m_lwp
-	    && m_tid == other.m_tid);
-  }
-
-  /* Compare two ptids to see if they are different.  */
-
-  constexpr bool operator!= (const ptid_t &other) const
-  {
-    return !(*this == other);
-  }
-
-  /* Return true if the ptid matches FILTER.  FILTER can be the wild
-     card MINUS_ONE_PTID (all ptids match it); can be a ptid representing
-     a process (ptid.is_pid () returns true), in which case, all lwps and
-     threads of that given process match, lwps and threads of other
-     processes do not; or, it can represent a specific thread, in which
-     case, only that thread will match true.  The ptid must represent a
-     specific LWP or THREAD, it can never be a wild card.  */
-
-  constexpr bool matches (const ptid_t &filter) const
-  {
-    return (/* If filter represents any ptid, it's always a match.  */
-	    filter == make_minus_one ()
-	    /* If filter is only a pid, any ptid with that pid
-	       matches.  */
-	    || (filter.is_pid () && m_pid == filter.pid ())
-
-	    /* Otherwise, this ptid only matches if it's exactly equal
-	       to filter.  */
-	    || *this == filter);
-  }
-
-  /* Make a null ptid.  */
-
-  static constexpr ptid_t make_null ()
-  { return ptid_t (0, 0, 0); }
-
-  /* Make a minus one ptid.  */
-
-  static constexpr ptid_t make_minus_one ()
-  { return ptid_t (-1, 0, 0); }
-
-private:
-  /* Process id.  */
-  int m_pid;
-
-  /* Lightweight process id.  */
-  long m_lwp;
-
-  /* Thread id.  */
-  long m_tid;
-};
-
-/* The null or zero ptid, often used to indicate no process. */
-
-extern const ptid_t null_ptid;
-
-/* The (-1,0,0) ptid, often used to indicate either an error condition
-   or a "don't care" condition, i.e, "run all threads."  */
-
-extern const ptid_t minus_one_ptid;
-
-#endif /* COMMON_PTID_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/refcounted-object.h ./gdb/gdbsupport/refcounted-object.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/refcounted-object.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/refcounted-object.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,70 +0,0 @@
-/* Base class of intrusively reference-counted objects.
-   Copyright (C) 2017-2020 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 COMMON_REFCOUNTED_OBJECT_H
-#define COMMON_REFCOUNTED_OBJECT_H
-
-/* Base class of intrusively reference-countable objects.
-   Incrementing and decrementing the reference count is an external
-   responsibility.  */
-
-class refcounted_object
-{
-public:
-  refcounted_object () = default;
-
-  /* Increase the refcount.  */
-  void incref ()
-  {
-    gdb_assert (m_refcount >= 0);
-    m_refcount++;
-  }
-
-  /* Decrease the refcount.  */
-  void decref ()
-  {
-    m_refcount--;
-    gdb_assert (m_refcount >= 0);
-  }
-
-  int refcount () const { return m_refcount; }
-
-private:
-  DISABLE_COPY_AND_ASSIGN (refcounted_object);
-
-  /* The reference count.  */
-  int m_refcount = 0;
-};
-
-/* A policy class to interface gdb::ref_ptr with a
-   refcounted_object.  */
-
-struct refcounted_object_ref_policy
-{
-  static void incref (refcounted_object *ptr)
-  {
-    ptr->incref ();
-  }
-
-  static void decref (refcounted_object *ptr)
-  {
-    ptr->decref ();
-  }
-};
-
-#endif /* COMMON_REFCOUNTED_OBJECT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/rsp-low.c ./gdb/gdbsupport/rsp-low.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/rsp-low.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/rsp-low.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,307 +0,0 @@
-/* Low-level RSP routines for GDB, the GNU debugger.
-
-   Copyright (C) 1988-2020 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"
-#include "rsp-low.h"
-
-/* See rsp-low.h.  */
-
-int
-fromhex (int a)
-{
-  if (a >= '0' && a <= '9')
-    return a - '0';
-  else if (a >= 'a' && a <= 'f')
-    return a - 'a' + 10;
-  else if (a >= 'A' && a <= 'F')
-    return a - 'A' + 10;
-  else
-    error (_("Reply contains invalid hex digit %d"), a);
-}
-
-/* See rsp-low.h.  */
-
-int
-tohex (int nib)
-{
-  if (nib < 10)
-    return '0' + nib;
-  else
-    return 'a' + nib - 10;
-}
-
-/* Encode 64 bits in 16 chars of hex.  */
-
-static const char hexchars[] = "0123456789abcdef";
-
-static int
-ishex (int ch, int *val)
-{
-  if ((ch >= 'a') && (ch <= 'f'))
-    {
-      *val = ch - 'a' + 10;
-      return 1;
-    }
-  if ((ch >= 'A') && (ch <= 'F'))
-    {
-      *val = ch - 'A' + 10;
-      return 1;
-    }
-  if ((ch >= '0') && (ch <= '9'))
-    {
-      *val = ch - '0';
-      return 1;
-    }
-  return 0;
-}
-
-/* See rsp-low.h.  */
-
-char *
-pack_nibble (char *buf, int nibble)
-{
-  *buf++ = hexchars[(nibble & 0x0f)];
-  return buf;
-}
-
-/* See rsp-low.h.  */
-
-char *
-pack_hex_byte (char *pkt, int byte)
-{
-  *pkt++ = hexchars[(byte >> 4) & 0xf];
-  *pkt++ = hexchars[(byte & 0xf)];
-  return pkt;
-}
-
-/* See rsp-low.h.  */
-
-const char *
-unpack_varlen_hex (const char *buff,	/* packet to parse */
-		   ULONGEST *result)
-{
-  int nibble;
-  ULONGEST retval = 0;
-
-  while (ishex (*buff, &nibble))
-    {
-      buff++;
-      retval = retval << 4;
-      retval |= nibble & 0x0f;
-    }
-  *result = retval;
-  return buff;
-}
-
-/* See rsp-low.h.  */
-
-int
-hex2bin (const char *hex, gdb_byte *bin, int count)
-{
-  int i;
-
-  for (i = 0; i < count; i++)
-    {
-      if (hex[0] == 0 || hex[1] == 0)
-	{
-	  /* Hex string is short, or of uneven length.
-	     Return the count that has been converted so far.  */
-	  return i;
-	}
-      *bin++ = fromhex (hex[0]) * 16 + fromhex (hex[1]);
-      hex += 2;
-    }
-  return i;
-}
-
-/* See rsp-low.h.  */
-
-gdb::byte_vector
-hex2bin (const char *hex)
-{
-  size_t bin_len = strlen (hex) / 2;
-  gdb::byte_vector bin (bin_len);
-
-  hex2bin (hex, bin.data (), bin_len);
-
-  return bin;
-}
-
-/* See rsp-low.h.  */
-
-std::string
-hex2str (const char *hex)
-{
-  return hex2str (hex, strlen (hex));
-}
-
-/* See rsp-low.h.  */
-
-std::string
-hex2str (const char *hex, int count)
-{
-  std::string ret;
-
-  ret.reserve (count);
-  for (size_t i = 0; i < count; ++i)
-    {
-      if (hex[0] == '\0' || hex[1] == '\0')
-	{
-	  /* Hex string is short, or of uneven length.  Return what we
-	     have so far.  */
-	  return ret;
-	}
-      ret += fromhex (hex[0]) * 16 + fromhex (hex[1]);
-      hex += 2;
-    }
-
-  return ret;
-}
-
-/* See rsp-low.h.  */
-
-int
-bin2hex (const gdb_byte *bin, char *hex, int count)
-{
-  int i;
-
-  for (i = 0; i < count; i++)
-    {
-      *hex++ = tohex ((*bin >> 4) & 0xf);
-      *hex++ = tohex (*bin++ & 0xf);
-    }
-  *hex = 0;
-  return i;
-}
-
-/* See rsp-low.h.  */
-
-std::string
-bin2hex (const gdb_byte *bin, int count)
-{
-  std::string ret;
-
-  ret.reserve (count * 2);
-  for (int i = 0; i < count; ++i)
-    {
-      ret += tohex ((*bin >> 4) & 0xf);
-      ret += tohex (*bin++ & 0xf);
-    }
-
-  return ret;
-}
-
-/* Return whether byte B needs escaping when sent as part of binary data.  */
-
-static int
-needs_escaping (gdb_byte b)
-{
-  return b == '$' || b == '#' || b == '}' || b == '*';
-}
-
-/* See rsp-low.h.  */
-
-int
-remote_escape_output (const gdb_byte *buffer, int len_units, int unit_size,
-		      gdb_byte *out_buf, int *out_len_units,
-		      int out_maxlen_bytes)
-{
-  int input_unit_index, output_byte_index = 0, byte_index_in_unit;
-  int number_escape_bytes_needed;
-
-  /* Try to copy integral addressable memory units until
-     (1) we run out of space or
-     (2) we copied all of them.  */
-  for (input_unit_index = 0;
-       input_unit_index < len_units;
-       input_unit_index++)
-    {
-      /* Find out how many escape bytes we need for this unit.  */
-      number_escape_bytes_needed = 0;
-      for (byte_index_in_unit = 0;
-	   byte_index_in_unit < unit_size;
-	   byte_index_in_unit++)
-	{
-	  int idx = input_unit_index * unit_size + byte_index_in_unit;
-	  gdb_byte b = buffer[idx];
-	  if (needs_escaping (b))
-	    number_escape_bytes_needed++;
-	}
-
-      /* Check if we have room to fit this escaped unit.  */
-      if (output_byte_index + unit_size + number_escape_bytes_needed >
-	    out_maxlen_bytes)
-	  break;
-
-      /* Copy the unit byte per byte, adding escapes.  */
-      for (byte_index_in_unit = 0;
-	   byte_index_in_unit < unit_size;
-	   byte_index_in_unit++)
-	{
-	  int idx = input_unit_index * unit_size + byte_index_in_unit;
-	  gdb_byte b = buffer[idx];
-	  if (needs_escaping (b))
-	    {
-	      out_buf[output_byte_index++] = '}';
-	      out_buf[output_byte_index++] = b ^ 0x20;
-	    }
-	  else
-	    out_buf[output_byte_index++] = b;
-	}
-    }
-
-  *out_len_units = input_unit_index;
-  return output_byte_index;
-}
-
-/* See rsp-low.h.  */
-
-int
-remote_unescape_input (const gdb_byte *buffer, int len,
-		       gdb_byte *out_buf, int out_maxlen)
-{
-  int input_index, output_index;
-  int escaped;
-
-  output_index = 0;
-  escaped = 0;
-  for (input_index = 0; input_index < len; input_index++)
-    {
-      gdb_byte b = buffer[input_index];
-
-      if (output_index + 1 > out_maxlen)
-	error (_("Received too much data from the target."));
-
-      if (escaped)
-	{
-	  out_buf[output_index++] = b ^ 0x20;
-	  escaped = 0;
-	}
-      else if (b == '}')
-	escaped = 1;
-      else
-	out_buf[output_index++] = b;
-    }
-
-  if (escaped)
-    error (_("Unmatched escape character in target response."));
-
-  return output_index;
-}
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/rsp-low.h ./gdb/gdbsupport/rsp-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/rsp-low.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/rsp-low.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,101 +0,0 @@
-/* Low-level RSP routines for GDB, the GNU debugger.
-
-   Copyright (C) 1988-2020 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 COMMON_RSP_LOW_H
-#define COMMON_RSP_LOW_H
-
-#include "gdbsupport/byte-vector.h"
-
-/* Convert hex digit A to a number, or throw an exception.  */
-
-extern int fromhex (int a);
-
-/* Convert number NIB to a hex digit.  */
-
-extern int tohex (int nib);
-
-/* Write a character representing the low order four bits of NIBBLE in
-   hex to *BUF.  Returns BUF+1.  */
-
-extern char *pack_nibble (char *buf, int nibble);
-
-/* Write the low byte of BYTE in hex to *BUF.  Returns BUF+2.  */
-
-extern char *pack_hex_byte (char *pkt, int byte);
-
-/* Read hex digits from BUFF and convert to a number, which is stored
-   in RESULT.  Reads until a non-hex digit is seen.  Returns a pointer
-   to the terminating character.  */
-
-extern const char *unpack_varlen_hex (const char *buff, ULONGEST *result);
-
-/* HEX is a string of characters representing hexadecimal digits.
-   Convert pairs of hex digits to bytes and store sequentially into
-   BIN.  COUNT is the maximum number of characters to convert.  This
-   will convert fewer characters if the number of hex characters
-   actually seen is odd, or if HEX terminates before COUNT characters.
-   Returns the number of characters actually converted.  */
-
-extern int hex2bin (const char *hex, gdb_byte *bin, int count);
-
-/* Like the above, but return a gdb::byte_vector.  */
-
-gdb::byte_vector hex2bin (const char *hex);
-
-/* Like hex2bin, but return a std::string.  */
-
-extern std::string hex2str (const char *hex);
-
-/* Like hex2bin, but return a std::string.  */
-
-extern std::string hex2str (const char *hex, int count);
-
-/* Convert some bytes to a hexadecimal representation.  BIN holds the
-   bytes to convert.  COUNT says how many bytes to convert.  The
-   resulting characters are stored in HEX, followed by a NUL
-   character.  Returns the number of bytes actually converted.  */
-
-extern int bin2hex (const gdb_byte *bin, char *hex, int count);
-
-/* Overloaded version of bin2hex that returns a std::string.  */
-
-extern std::string bin2hex (const gdb_byte *bin, int count);
-
-/* Convert BUFFER, binary data at least LEN_UNITS addressable memory units
-   long, into escaped binary data in OUT_BUF.  Only copy memory units that fit
-   completely in OUT_BUF.  Set *OUT_LEN_UNITS to the number of units from
-   BUFFER successfully encoded in OUT_BUF, and return the number of bytes used
-   in OUT_BUF.  The total number of bytes in the output buffer will be at most
-   OUT_MAXLEN_BYTES.  This function properly escapes '*', and so is suitable
-   for the server side as well as the client.  */
-
-extern int remote_escape_output (const gdb_byte *buffer, int len_units,
-				 int unit_size, gdb_byte *out_buf,
-				 int *out_len_units, int out_maxlen_bytes);
-
-/* Convert BUFFER, escaped data LEN bytes long, into binary data
-   in OUT_BUF.  Return the number of bytes written to OUT_BUF.
-   Raise an error if the total number of bytes exceeds OUT_MAXLEN.
-
-   This function reverses remote_escape_output.  */
-
-extern int remote_unescape_input (const gdb_byte *buffer, int len,
-				  gdb_byte *out_buf, int out_maxlen);
-
-#endif /* COMMON_RSP_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/run-time-clock.c ./gdb/gdbsupport/run-time-clock.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/run-time-clock.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/run-time-clock.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,58 +0,0 @@
-/* User/system CPU time clocks that follow the std::chrono interface.
-   Copyright (C) 2016-2020 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"
-#include "run-time-clock.h"
-#if defined HAVE_SYS_RESOURCE_H
-#include <sys/resource.h>
-#endif
-
-using namespace std::chrono;
-
-run_time_clock::time_point
-run_time_clock::now () noexcept
-{
-  return time_point (microseconds (get_run_time ()));
-}
-
-#ifdef HAVE_GETRUSAGE
-static std::chrono::microseconds
-timeval_to_microseconds (struct timeval *tv)
-{
-  return (seconds (tv->tv_sec) + microseconds (tv->tv_usec));
-}
-#endif
-
-void
-run_time_clock::now (user_cpu_time_clock::time_point &user,
-		     system_cpu_time_clock::time_point &system) noexcept
-{
-#ifdef HAVE_GETRUSAGE
-  struct rusage rusage;
-
-  getrusage (RUSAGE_SELF, &rusage);
-
-  microseconds utime = timeval_to_microseconds (&rusage.ru_utime);
-  microseconds stime = timeval_to_microseconds (&rusage.ru_stime);
-  user = user_cpu_time_clock::time_point (utime);
-  system = system_cpu_time_clock::time_point (stime);
-#else
-  user = user_cpu_time_clock::time_point (microseconds (get_run_time ()));
-  system = system_cpu_time_clock::time_point (microseconds::zero ());
-#endif
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/run-time-clock.h ./gdb/gdbsupport/run-time-clock.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/run-time-clock.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/run-time-clock.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,75 +0,0 @@
-/* User/system CPU time clocks that follow the std::chrono interface.
-   Copyright (C) 2016-2020 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 COMMON_RUN_TIME_CLOCK_H
-#define COMMON_RUN_TIME_CLOCK_H
-
-#include <chrono>
-
-/* Count the total amount of time spent executing in user mode.  */
-
-struct user_cpu_time_clock
-{
-  using duration = std::chrono::microseconds;
-  using rep = duration::rep;
-  using period = duration::period;
-  using time_point = std::chrono::time_point<user_cpu_time_clock>;
-
-  static constexpr bool is_steady = true;
-
-  /* Use run_time_clock::now instead.  */
-  static time_point now () noexcept = delete;
-};
-
-/* Count the total amount of time spent executing in kernel mode.  */
-
-struct system_cpu_time_clock
-{
-  using duration = std::chrono::microseconds;
-  using rep = duration::rep;
-  using period = duration::period;
-  using time_point = std::chrono::time_point<system_cpu_time_clock>;
-
-  static constexpr bool is_steady = true;
-
-  /* Use run_time_clock::now instead.  */
-  static time_point now () noexcept = delete;
-};
-
-/* Count the total amount of time spent executing in userspace+kernel
-   mode.  */
-
-struct run_time_clock
-{
-  using duration = std::chrono::microseconds;
-  using rep = duration::rep;
-  using period = duration::period;
-  using time_point = std::chrono::time_point<run_time_clock>;
-
-  static constexpr bool is_steady = true;
-
-  static time_point now () noexcept;
-
-  /* Return the user/system time as separate time points, if
-     supported.  If not supported, then the combined user+kernel time
-     is returned in USER and SYSTEM is set to zero.  */
-  static void now (user_cpu_time_clock::time_point &user,
-		   system_cpu_time_clock::time_point &system) noexcept;
-};
-
-#endif /* COMMON_RUN_TIME_CLOCK_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/safe-iterator.h ./gdb/gdbsupport/safe-iterator.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/safe-iterator.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/safe-iterator.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,93 +0,0 @@
-/* A safe iterator for GDB, the GNU debugger.
-   Copyright (C) 2018-2020 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 COMMON_SAFE_ITERATOR_H
-#define COMMON_SAFE_ITERATOR_H
-
-/* A forward iterator that wraps Iterator, such that when iterating
-   with iterator IT, it is possible to delete *IT without invalidating
-   IT.  Suitably wrapped in a range type and used with range-for, this
-   allow convenient patterns like this:
-
-     // range_safe() returns a range type whose begin()/end() methods
-     // return safe iterators.
-     for (foo *f : range_safe ())
-       {
-	 if (f->should_delete ())
-	   {
-	     // The ++it operation implicitly done by the range-for is
-	     // still OK after this.
-	     delete f;
-	   }
-       }
-*/
-
-template<typename Iterator>
-class basic_safe_iterator
-{
-public:
-  typedef basic_safe_iterator self_type;
-  typedef typename Iterator::value_type value_type;
-  typedef typename Iterator::reference reference;
-  typedef typename Iterator::pointer pointer;
-  typedef typename Iterator::iterator_category iterator_category;
-  typedef typename Iterator::difference_type difference_type;
-
-  /* Construct by forwarding all arguments to the underlying
-     iterator.  */
-  template<typename... Args>
-  explicit basic_safe_iterator (Args &&...args)
-    : m_it (std::forward<Args> (args)...),
-      m_next (m_it)
-  {
-    if (m_it != m_end)
-      ++m_next;
-  }
-
-  /* Create a one-past-end iterator.  */
-  basic_safe_iterator ()
-  {}
-
-  value_type operator* () const { return *m_it; }
-
-  self_type &operator++ ()
-  {
-    m_it = m_next;
-    if (m_it != m_end)
-      ++m_next;
-    return *this;
-  }
-
-  bool operator== (const self_type &other) const
-  { return m_it == other.m_it; }
-
-  bool operator!= (const self_type &other) const
-  { return m_it != other.m_it; }
-
-private:
-  /* The current element.  */
-  Iterator m_it {};
-
-  /* The next element.  Always one element ahead of M_IT.  */
-  Iterator m_next {};
-
-  /* A one-past-end iterator.  */
-  Iterator m_end {};
-};
-
-#endif /* COMMON_SAFE_ITERATOR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/safe-strerror.c ./gdb/gdbsupport/safe-strerror.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/safe-strerror.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/safe-strerror.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,64 +0,0 @@
-/* Safe version of strerror for GDB, the GNU debugger.
-
-   Copyright (C) 2006-2020 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"
-#include "diagnostics.h"
-#include <string.h>
-
-/* There are two different versions of strerror_r; one is GNU-specific, the
-   other XSI-compliant.  They differ in the return type.  This overload lets
-   us choose the right behavior for each return type.  We cannot rely on Gnulib
-   to solve this for us because IPA does not use Gnulib but uses this
-   function.  */
-
-/* We only ever use one of the two overloads, so suppress the warning for
-   an unused function.  */
-DIAGNOSTIC_PUSH
-DIAGNOSTIC_IGNORE_UNUSED_FUNCTION
-
-/* Called if we have a XSI-compliant strerror_r.  */
-static char *
-select_strerror_r (int res, char *buf)
-{
-  return res == 0 ? buf : nullptr;
-}
-
-/* Called if we have a GNU strerror_r.  */
-static char *
-select_strerror_r (char *res, char *)
-{
-  return res;
-}
-
-DIAGNOSTIC_POP
-
-/* Implementation of safe_strerror as defined in common-utils.h.  */
-
-const char *
-safe_strerror (int errnum)
-{
-  static thread_local char buf[1024];
-
-  char *res = select_strerror_r (strerror_r (errnum, buf, sizeof (buf)), buf);
-  if (res != nullptr)
-    return res;
-
-  xsnprintf (buf, sizeof buf, "(undocumented errno %d)", errnum);
-  return buf;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/scoped_fd.h ./gdb/gdbsupport/scoped_fd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/scoped_fd.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/scoped_fd.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,87 +0,0 @@
-/* scoped_fd, automatically close a file descriptor
-
-   Copyright (C) 2018-2020 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 COMMON_SCOPED_FD_H
-#define COMMON_SCOPED_FD_H
-
-#include <unistd.h>
-#include "filestuff.h"
-
-/* A smart-pointer-like class to automatically close a file descriptor.  */
-
-class scoped_fd
-{
-public:
-  explicit scoped_fd (int fd = -1) noexcept : m_fd (fd) {}
-
-  scoped_fd (scoped_fd &&other)
-    : m_fd (other.m_fd)
-  {
-    other.m_fd = -1;
-  }
-
-  ~scoped_fd ()
-  {
-    if (m_fd >= 0)
-      close (m_fd);
-  }
-
-  scoped_fd &operator= (scoped_fd &&other)
-  {
-    if (m_fd != other.m_fd)
-      {
-	if (m_fd >= 0)
-	  close (m_fd);
-	m_fd = other.m_fd;
-	other.m_fd = -1;
-      }
-    return *this;
-  }
-
-  DISABLE_COPY_AND_ASSIGN (scoped_fd);
-
-  ATTRIBUTE_UNUSED_RESULT int release () noexcept
-  {
-    int fd = m_fd;
-    m_fd = -1;
-    return fd;
-  }
-
-  /* Like release, but return a gdb_file_up that owns the file
-     descriptor.  On success, this scoped_fd will be released.  On
-     failure, return NULL and leave this scoped_fd in possession of
-     the fd.  */
-  gdb_file_up to_file (const char *mode) noexcept
-  {
-    gdb_file_up result (fdopen (m_fd, mode));
-    if (result != nullptr)
-      m_fd = -1;
-    return result;
-  }
-
-  int get () const noexcept
-  {
-    return m_fd;
-  }
-
-private:
-  int m_fd;
-};
-
-#endif /* COMMON_SCOPED_FD_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/scoped_mmap.c ./gdb/gdbsupport/scoped_mmap.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/scoped_mmap.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/scoped_mmap.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,49 +0,0 @@
-/* scoped_mmap, automatically unmap files
-
-   Copyright (C) 2018-2020 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"
-#include "scoped_mmap.h"
-#include "scoped_fd.h"
-#include "gdbsupport/filestuff.h"
-
-#ifdef HAVE_SYS_MMAN_H
-
-scoped_mmap
-mmap_file (const char *filename)
-{
-  scoped_fd fd (gdb_open_cloexec (filename, O_RDONLY, 0));
-  if (fd.get () < 0)
-    perror_with_name (("open"));
-
-  off_t size = lseek (fd.get (), 0, SEEK_END);
-  if (size < 0)
-    perror_with_name (("lseek"));
-
-  /* We can't map an empty file.  */
-  if (size == 0)
-    error (_("file to mmap is empty"));
-
-  scoped_mmap mmapped_file (nullptr, size, PROT_READ, MAP_PRIVATE, fd.get (), 0);
-  if (mmapped_file.get () == MAP_FAILED)
-    perror_with_name (("mmap"));
-
-  return mmapped_file;
-}
-
-#endif /* HAVE_SYS_MMAN_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/scoped_mmap.h ./gdb/gdbsupport/scoped_mmap.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/scoped_mmap.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/scoped_mmap.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,94 +0,0 @@
-/* scoped_mmap, automatically unmap files
-
-   Copyright (C) 2018-2020 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 COMMON_SCOPED_MMAP_H
-#define COMMON_SCOPED_MMAP_H
-
-#ifdef HAVE_SYS_MMAN_H
-
-#include <sys/mman.h>
-
-/* A smart-pointer-like class to mmap() and automatically munmap() a memory
-   mapping.  */
-
-class scoped_mmap
-{
-public:
-  scoped_mmap () noexcept : m_mem (MAP_FAILED), m_length (0) {}
-  scoped_mmap (void *addr, size_t length, int prot, int flags, int fd,
-	       off_t offset) noexcept : m_length (length)
-  {
-    m_mem = mmap (addr, m_length, prot, flags, fd, offset);
-  }
-
-  ~scoped_mmap ()
-  {
-    destroy ();
-  }
-
-  scoped_mmap (scoped_mmap &&rhs)
-  {
-    destroy ();
-
-    m_mem = rhs.m_mem;
-    m_length = rhs.m_length;
-
-    rhs.m_mem = MAP_FAILED;
-    rhs.m_length = 0;
-  }
-
-  DISABLE_COPY_AND_ASSIGN (scoped_mmap);
-
-  ATTRIBUTE_UNUSED_RESULT void *release () noexcept
-  {
-    void *mem = m_mem;
-    m_mem = MAP_FAILED;
-    m_length = 0;
-    return mem;
-  }
-
-  void reset (void *addr, size_t length, int prot, int flags, int fd,
-	      off_t offset) noexcept
-  {
-    destroy ();
-
-    m_length = length;
-    m_mem = mmap (addr, m_length, prot, flags, fd, offset);
-  }
-
-  size_t size () const noexcept { return m_length; }
-  void *get () const noexcept { return m_mem; }
-
-private:
-  void destroy ()
-  {
-    if (m_mem != MAP_FAILED)
-      munmap (m_mem, m_length);
-  }
-
-  void *m_mem;
-  size_t m_length;
-};
-
-/* Map FILENAME in memory.  Throw an error if anything goes wrong.  */
-scoped_mmap mmap_file (const char *filename);
-
-#endif /* HAVE_SYS_MMAN_H */
-
-#endif /* COMMON_SCOPED_MMAP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/scoped_restore.h ./gdb/gdbsupport/scoped_restore.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/scoped_restore.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/scoped_restore.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,118 +0,0 @@
-/* scoped_restore, a simple class for saving and restoring a value
-
-   Copyright (C) 2016-2020 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 COMMON_SCOPED_RESTORE_H
-#define COMMON_SCOPED_RESTORE_H
-
-/* Base class for scoped_restore_tmpl.  */
-class scoped_restore_base
-{
-public:
-  /* This informs the (scoped_restore_tmpl<T>) dtor that you no longer
-     want the original value restored.  */
-  void release () const
-  { m_saved_var = NULL; }
-
-protected:
-  scoped_restore_base (void *saved_var)
-    : m_saved_var (saved_var)
-  {}
-
-  /* The type-erased saved variable.  This is here so that clients can
-     call release() on a "scoped_restore" local, which is a typedef to
-     a scoped_restore_base.  See below.  */
-  mutable void *m_saved_var;
-};
-
-/* A convenience typedef.  Users of make_scoped_restore declare the
-   local RAII object as having this type.  */
-typedef const scoped_restore_base &scoped_restore;
-
-/* An RAII-based object that saves a variable's value, and then
-   restores it again when this object is destroyed. */
-template<typename T>
-class scoped_restore_tmpl : public scoped_restore_base
-{
- public:
-
-  /* Create a new scoped_restore object that saves the current value
-     of *VAR.  *VAR will be restored when this scoped_restore object
-     is destroyed.  */
-  scoped_restore_tmpl (T *var)
-    : scoped_restore_base (var),
-      m_saved_value (*var)
-  {
-  }
-
-  /* Create a new scoped_restore object that saves the current value
-     of *VAR, and sets *VAR to VALUE.  *VAR will be restored when this
-     scoped_restore object is destroyed.  This is templated on T2 to
-     allow passing VALUEs of types convertible to T.
-     E.g.: T='base'; T2='derived'.  */
-  template <typename T2>
-  scoped_restore_tmpl (T *var, T2 value)
-    : scoped_restore_base (var),
-      m_saved_value (*var)
-  {
-    *var = value;
-  }
-
-  scoped_restore_tmpl (const scoped_restore_tmpl<T> &other)
-    : scoped_restore_base {other.m_saved_var},
-      m_saved_value (other.m_saved_value)
-  {
-    other.m_saved_var = NULL;
-  }
-
-  ~scoped_restore_tmpl ()
-  {
-    if (saved_var () != NULL)
-      *saved_var () = m_saved_value;
-  }
-
-private:
-  /* Return a pointer to the saved variable with its type
-     restored.  */
-  T *saved_var ()
-  { return static_cast<T *> (m_saved_var); }
-
-  /* No need for this.  It is intentionally not defined anywhere.  */
-  scoped_restore_tmpl &operator= (const scoped_restore_tmpl &);
-
-  /* The saved value.  */
-  const T m_saved_value;
-};
-
-/* Make a scoped_restore.  This is useful because it lets template
-   argument deduction work.  */
-template<typename T>
-scoped_restore_tmpl<T> make_scoped_restore (T *var)
-{
-  return scoped_restore_tmpl<T> (var);
-}
-
-/* Make a scoped_restore.  This is useful because it lets template
-   argument deduction work.  */
-template<typename T, typename T2>
-scoped_restore_tmpl<T> make_scoped_restore (T *var, T2 value)
-{
-  return scoped_restore_tmpl<T> (var, value);
-}
-
-#endif /* COMMON_SCOPED_RESTORE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/scope-exit.h ./gdb/gdbsupport/scope-exit.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/scope-exit.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/scope-exit.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,186 +0,0 @@
-/* Copyright (C) 2019-2020 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 COMMON_SCOPE_EXIT_H
-#define COMMON_SCOPE_EXIT_H
-
-#include <functional>
-#include <type_traits>
-#include "gdbsupport/preprocessor.h"
-
-/* scope_exit is a general-purpose scope guard that calls its exit
-   function at the end of the current scope.  A scope_exit may be
-   canceled by calling the "release" method.  The API is modeled on
-   P0052R5 - Generic Scope Guard and RAII Wrapper for the Standard
-   Library, which is itself based on Andrej Alexandrescu's
-   ScopeGuard/SCOPE_EXIT.
-
-   There are two forms available:
-
-   - The "make_scope_exit" form allows canceling the scope guard.  Use
-     it like this:
-
-     auto cleanup = make_scope_exit ( <function, function object, lambda> );
-     ...
-     cleanup.release (); // cancel
-
-   - If you don't need to cancel the guard, you can use the SCOPE_EXIT
-     macro, like this:
-
-     SCOPE_EXIT
-       {
-	 // any code you like here.
-       }
-
-   See also forward_scope_exit.
-*/
-
-/* CRTP base class for cancelable scope_exit-like classes.  Implements
-   the common call-custom-function-from-dtor functionality.  Classes
-   that inherit this implement the on_exit() method, which is called
-   from scope_exit_base's dtor.  */
-
-template <typename CRTP>
-class scope_exit_base
-{
-public:
-  scope_exit_base () = default;
-
-  ~scope_exit_base ()
-  {
-    if (!m_released)
-      {
-	auto *self = static_cast<CRTP *> (this);
-	self->on_exit ();
-      }
-  }
-
-  /* This is needed for make_scope_exit because copy elision isn't
-     guaranteed until C++17.  An optimizing compiler will usually skip
-     calling this, but it must exist.  */
-  scope_exit_base (const scope_exit_base &other)
-    : m_released (other.m_released)
-  {
-    other.m_released = true;
-  }
-
-  void operator= (const scope_exit_base &) = delete;
-
-  /* If this is called, then the wrapped function will not be called
-     on destruction.  */
-  void release () noexcept
-  {
-    m_released = true;
-  }
-
-private:
-
-  /* True if released.  Mutable because of the copy ctor hack
-     above.  */
-  mutable bool m_released = false;
-};
-
-/* The scope_exit class.  */
-
-template<typename EF>
-class scope_exit : public scope_exit_base<scope_exit<EF>>
-{
-  /* For access to on_exit().  */
-  friend scope_exit_base<scope_exit<EF>>;
-
-public:
-
-  template<typename EFP,
-	   typename = gdb::Requires<std::is_constructible<EF, EFP>>>
-  scope_exit (EFP &&f)
-    try : m_exit_function ((!std::is_lvalue_reference<EFP>::value
-			    && std::is_nothrow_constructible<EF, EFP>::value)
-			   ? std::move (f)
-			   : f)
-  {
-  }
-  catch (...)
-    {
-      /* "If the initialization of exit_function throws an exception,
-	 calls f()."  */
-      f ();
-    }
-
-  template<typename EFP,
-	   typename = gdb::Requires<std::is_constructible<EF, EFP>>>
-  scope_exit (scope_exit &&rhs)
-    noexcept (std::is_nothrow_move_constructible<EF>::value
-	      || std::is_nothrow_copy_constructible<EF>::value)
-    : m_exit_function (std::is_nothrow_constructible<EFP>::value
-		       ? std::move (rhs)
-		       : rhs)
-  {
-    rhs.release ();
-  }
-
-  /* This is needed for make_scope_exit because copy elision isn't
-     guaranteed until C++17.  An optimizing compiler will usually skip
-     calling this, but it must exist.  */
-  scope_exit (const scope_exit &other)
-    : scope_exit_base<scope_exit<EF>> (other),
-      m_exit_function (other.m_exit_function)
-  {
-  }
-
-  void operator= (const scope_exit &) = delete;
-  void operator= (scope_exit &&) = delete;
-
-private:
-  void on_exit ()
-  {
-    m_exit_function ();
-  }
-
-  /* The function to call on scope exit.  */
-  EF m_exit_function;
-};
-
-template <typename EF>
-scope_exit<typename std::decay<EF>::type>
-make_scope_exit (EF &&f)
-{
-  return scope_exit<typename std::decay<EF>::type> (std::forward<EF> (f));
-}
-
-namespace detail
-{
-
-enum class scope_exit_lhs {};
-
-template<typename EF>
-scope_exit<typename std::decay<EF>::type>
-operator+ (scope_exit_lhs, EF &&rhs)
-{
-  return scope_exit<typename std::decay<EF>::type> (std::forward<EF> (rhs));
-}
-
-}
-
-/* Register a block of code to run on scope exit.  Note that the local
-   context is captured by reference, which means you should be careful
-   to avoid inadvertently changing a captured local's value before the
-   scope exit runs.  */
-
-#define SCOPE_EXIT \
-  auto CONCAT(scope_exit_, __LINE__) = ::detail::scope_exit_lhs () + [&] ()
-
-#endif /* COMMON_SCOPE_EXIT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/selftest.c ./gdb/gdbsupport/selftest.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/selftest.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/selftest.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,111 +0,0 @@
-/* GDB self-testing.
-   Copyright (C) 2016-2020 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"
-#include "common-exceptions.h"
-#include "common-debug.h"
-#include "selftest.h"
-#include <map>
-
-namespace selftests
-{
-/* All the tests that have been registered.  Using an std::map allows keeping
-   the order of tests stable and easily looking up whether a test name
-   exists.  */
-
-static std::map<std::string, std::unique_ptr<selftest>> tests;
-
-/* A selftest that calls the test function without arguments.  */
-
-struct simple_selftest : public selftest
-{
-  simple_selftest (self_test_function *function_)
-  : function (function_)
-  {}
-
-  void operator() () const override
-  {
-    function ();
-  }
-
-  self_test_function *function;
-};
-
-/* See selftest.h.  */
-
-void
-register_test (const std::string &name, selftest *test)
-{
-  /* Check that no test with this name already exist.  */
-  gdb_assert (tests.find (name) == tests.end ());
-
-  tests[name] = std::unique_ptr<selftest> (test);
-}
-
-/* See selftest.h.  */
-
-void
-register_test (const std::string &name, self_test_function *function)
-{
-  register_test (name, new simple_selftest (function));
-}
-
-/* See selftest.h.  */
-
-void
-run_tests (const char *filter)
-{
-  int ran = 0, failed = 0;
-
-  for (const auto &pair : tests)
-    {
-      const std::string &name = pair.first;
-      const std::unique_ptr<selftest> &test = pair.second;
-
-      if (filter != NULL && *filter != '\0'
-	  && name.find (filter) == std::string::npos)
-	continue;
-
-      try
-	{
-	  debug_printf (_("Running selftest %s.\n"), name.c_str ());
-	  ++ran;
-	  (*test) ();
-	}
-      catch (const gdb_exception_error &ex)
-	{
-	  ++failed;
-	  debug_printf ("Self test failed: %s\n", ex.what ());
-	}
-
-      reset ();
-    }
-
-  debug_printf (_("Ran %d unit tests, %d failed\n"),
-		ran, failed);
-}
-
-/* See selftest.h.  */
-
-void for_each_selftest (for_each_selftest_ftype func)
-{
-  for (const auto &pair : tests)
-    func (pair.first);
-}
-
-} // namespace selftests
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/selftest.h ./gdb/gdbsupport/selftest.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/selftest.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/selftest.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,73 +0,0 @@
-/* GDB self-testing.
-   Copyright (C) 2016-2020 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 COMMON_SELFTEST_H
-#define COMMON_SELFTEST_H
-
-/* A test is just a function that does some checks and throws an
-   exception if something has gone wrong.  */
-
-typedef void self_test_function (void);
-
-namespace selftests
-{
-
-/* Interface for the various kinds of selftests.  */
-
-struct selftest
-{
-  virtual ~selftest () = default;
-  virtual void operator() () const = 0;
-};
-
-/* Register a new self-test.  */
-
-extern void register_test (const std::string &name, selftest *test);
-
-/* Register a new self-test.  */
-
-extern void register_test (const std::string &name,
-			   self_test_function *function);
-
-/* Run all the self tests.  This print a message describing the number
-   of test and the number of failures.
-
-   If FILTER is not NULL and not empty, only tests with names containing FILTER
-   will be ran.  */
-
-extern void run_tests (const char *filter);
-
-/* Reset GDB or GDBserver's internal state.  */
-extern void reset ();
-
-typedef void for_each_selftest_ftype (const std::string &name);
-
-/* Call FUNC for each registered selftest.  */
-
-extern void for_each_selftest (for_each_selftest_ftype func);
-}
-
-/* Check that VALUE is true, and, if not, throw an exception.  */
-
-#define SELF_CHECK(VALUE)						\
-  do {									\
-    if (!(VALUE))							\
-      error (_("self-test failed at %s:%d"), __FILE__, __LINE__);	\
-  } while (0)
-
-#endif /* COMMON_SELFTEST_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/signals.c ./gdb/gdbsupport/signals.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/signals.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/signals.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,653 +0,0 @@
-/* Target signal translation functions for GDB.
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
-   Contributed by Cygnus Support.
-
-   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"
-
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-
-#include "gdb_signals.h"
-
-struct gdbarch;
-
-/* Always use __SIGRTMIN if it's available.  SIGRTMIN is the lowest
-   _available_ realtime signal, not the lowest supported; glibc takes
-   several for its own use.  */
-
-#ifndef REALTIME_LO
-# if defined(__SIGRTMIN)
-#  define REALTIME_LO __SIGRTMIN
-#  define REALTIME_HI (__SIGRTMAX + 1)
-# elif defined(SIGRTMIN)
-#  define REALTIME_LO SIGRTMIN
-#  define REALTIME_HI (SIGRTMAX + 1)
-# endif
-#endif
-
-/* This table must match in order and size the signals in enum
-   gdb_signal.  */
-
-static const struct {
-  const char *symbol;
-  const char *name;
-  const char *string;
-  } signals [] =
-{
-#define SET(symbol, constant, name, string) { #symbol, name, string },
-#include "gdb/signals.def"
-#undef SET
-};
-
-const char *
-gdb_signal_to_symbol_string (enum gdb_signal sig)
-{
-  gdb_assert ((int) sig >= GDB_SIGNAL_FIRST && (int) sig <= GDB_SIGNAL_LAST);
-
-  return signals[sig].symbol;
-}
-
-/* Return the string for a signal.  */
-const char *
-gdb_signal_to_string (enum gdb_signal sig)
-{
-  if ((int) sig >= GDB_SIGNAL_FIRST && (int) sig <= GDB_SIGNAL_LAST)
-    return signals[sig].string;
-  else
-    return signals[GDB_SIGNAL_UNKNOWN].string;
-}
-
-/* Return the name for a signal.  */
-const char *
-gdb_signal_to_name (enum gdb_signal sig)
-{
-  if ((int) sig >= GDB_SIGNAL_FIRST && (int) sig <= GDB_SIGNAL_LAST
-      && signals[sig].name != NULL)
-    return signals[sig].name;
-  else
-    /* I think the code which prints this will always print it along
-       with the string, so no need to be verbose (very old comment).  */
-    return "?";
-}
-
-/* Given a name, return its signal.  */
-enum gdb_signal
-gdb_signal_from_name (const char *name)
-{
-  enum gdb_signal sig;
-
-  /* It's possible we also should allow "SIGCLD" as well as "SIGCHLD"
-     for GDB_SIGNAL_SIGCHLD.  SIGIOT, on the other hand, is more
-     questionable; seems like by now people should call it SIGABRT
-     instead.  */
-
-  /* This ugly cast brought to you by the native VAX compiler.  */
-  for (sig = GDB_SIGNAL_HUP;
-       sig < GDB_SIGNAL_LAST;
-       sig = (enum gdb_signal) ((int) sig + 1))
-    if (signals[sig].name != NULL
-	&& strcmp (name, signals[sig].name) == 0)
-      return sig;
-  return GDB_SIGNAL_UNKNOWN;
-}
-
-/* The following functions are to help certain targets deal
-   with the signal/waitstatus stuff.  They could just as well be in
-   a file called native-utils.c or unixwaitstatus-utils.c or whatever.  */
-
-/* Convert host signal to our signals.  */
-enum gdb_signal
-gdb_signal_from_host (int hostsig)
-{
-  /* A switch statement would make sense but would require special
-     kludges to deal with the cases where more than one signal has the
-     same number.  Signals are ordered ANSI-standard signals first,
-     other signals second, with signals in each block ordered by their
-     numerical values on a typical POSIX platform.  */
-
-  if (hostsig == 0)
-    return GDB_SIGNAL_0;
-
-  /* SIGINT, SIGILL, SIGABRT, SIGFPE, SIGSEGV and SIGTERM
-     are ANSI-standard signals and are always available.  */
-  if (hostsig == SIGINT)
-    return GDB_SIGNAL_INT;
-  if (hostsig == SIGILL)
-    return GDB_SIGNAL_ILL;
-  if (hostsig == SIGABRT)
-    return GDB_SIGNAL_ABRT;
-  if (hostsig == SIGFPE)
-    return GDB_SIGNAL_FPE;
-  if (hostsig == SIGSEGV)
-    return GDB_SIGNAL_SEGV;
-  if (hostsig == SIGTERM)
-    return GDB_SIGNAL_TERM;
-
-  /* All other signals need preprocessor conditionals.  */
-#if defined (SIGHUP)
-  if (hostsig == SIGHUP)
-    return GDB_SIGNAL_HUP;
-#endif
-#if defined (SIGQUIT)
-  if (hostsig == SIGQUIT)
-    return GDB_SIGNAL_QUIT;
-#endif
-#if defined (SIGTRAP)
-  if (hostsig == SIGTRAP)
-    return GDB_SIGNAL_TRAP;
-#endif
-#if defined (SIGEMT)
-  if (hostsig == SIGEMT)
-    return GDB_SIGNAL_EMT;
-#endif
-#if defined (SIGKILL)
-  if (hostsig == SIGKILL)
-    return GDB_SIGNAL_KILL;
-#endif
-#if defined (SIGBUS)
-  if (hostsig == SIGBUS)
-    return GDB_SIGNAL_BUS;
-#endif
-#if defined (SIGSYS)
-  if (hostsig == SIGSYS)
-    return GDB_SIGNAL_SYS;
-#endif
-#if defined (SIGPIPE)
-  if (hostsig == SIGPIPE)
-    return GDB_SIGNAL_PIPE;
-#endif
-#if defined (SIGALRM)
-  if (hostsig == SIGALRM)
-    return GDB_SIGNAL_ALRM;
-#endif
-#if defined (SIGUSR1)
-  if (hostsig == SIGUSR1)
-    return GDB_SIGNAL_USR1;
-#endif
-#if defined (SIGUSR2)
-  if (hostsig == SIGUSR2)
-    return GDB_SIGNAL_USR2;
-#endif
-#if defined (SIGCLD)
-  if (hostsig == SIGCLD)
-    return GDB_SIGNAL_CHLD;
-#endif
-#if defined (SIGCHLD)
-  if (hostsig == SIGCHLD)
-    return GDB_SIGNAL_CHLD;
-#endif
-#if defined (SIGPWR)
-  if (hostsig == SIGPWR)
-    return GDB_SIGNAL_PWR;
-#endif
-#if defined (SIGWINCH)
-  if (hostsig == SIGWINCH)
-    return GDB_SIGNAL_WINCH;
-#endif
-#if defined (SIGURG)
-  if (hostsig == SIGURG)
-    return GDB_SIGNAL_URG;
-#endif
-#if defined (SIGIO)
-  if (hostsig == SIGIO)
-    return GDB_SIGNAL_IO;
-#endif
-#if defined (SIGPOLL)
-  if (hostsig == SIGPOLL)
-    return GDB_SIGNAL_POLL;
-#endif
-#if defined (SIGSTOP)
-  if (hostsig == SIGSTOP)
-    return GDB_SIGNAL_STOP;
-#endif
-#if defined (SIGTSTP)
-  if (hostsig == SIGTSTP)
-    return GDB_SIGNAL_TSTP;
-#endif
-#if defined (SIGCONT)
-  if (hostsig == SIGCONT)
-    return GDB_SIGNAL_CONT;
-#endif
-#if defined (SIGTTIN)
-  if (hostsig == SIGTTIN)
-    return GDB_SIGNAL_TTIN;
-#endif
-#if defined (SIGTTOU)
-  if (hostsig == SIGTTOU)
-    return GDB_SIGNAL_TTOU;
-#endif
-#if defined (SIGVTALRM)
-  if (hostsig == SIGVTALRM)
-    return GDB_SIGNAL_VTALRM;
-#endif
-#if defined (SIGPROF)
-  if (hostsig == SIGPROF)
-    return GDB_SIGNAL_PROF;
-#endif
-#if defined (SIGXCPU)
-  if (hostsig == SIGXCPU)
-    return GDB_SIGNAL_XCPU;
-#endif
-#if defined (SIGXFSZ)
-  if (hostsig == SIGXFSZ)
-    return GDB_SIGNAL_XFSZ;
-#endif
-#if defined (SIGWIND)
-  if (hostsig == SIGWIND)
-    return GDB_SIGNAL_WIND;
-#endif
-#if defined (SIGPHONE)
-  if (hostsig == SIGPHONE)
-    return GDB_SIGNAL_PHONE;
-#endif
-#if defined (SIGLOST)
-  if (hostsig == SIGLOST)
-    return GDB_SIGNAL_LOST;
-#endif
-#if defined (SIGWAITING)
-  if (hostsig == SIGWAITING)
-    return GDB_SIGNAL_WAITING;
-#endif
-#if defined (SIGCANCEL)
-  if (hostsig == SIGCANCEL)
-    return GDB_SIGNAL_CANCEL;
-#endif
-#if defined (SIGLWP)
-  if (hostsig == SIGLWP)
-    return GDB_SIGNAL_LWP;
-#endif
-#if defined (SIGDANGER)
-  if (hostsig == SIGDANGER)
-    return GDB_SIGNAL_DANGER;
-#endif
-#if defined (SIGGRANT)
-  if (hostsig == SIGGRANT)
-    return GDB_SIGNAL_GRANT;
-#endif
-#if defined (SIGRETRACT)
-  if (hostsig == SIGRETRACT)
-    return GDB_SIGNAL_RETRACT;
-#endif
-#if defined (SIGMSG)
-  if (hostsig == SIGMSG)
-    return GDB_SIGNAL_MSG;
-#endif
-#if defined (SIGSOUND)
-  if (hostsig == SIGSOUND)
-    return GDB_SIGNAL_SOUND;
-#endif
-#if defined (SIGSAK)
-  if (hostsig == SIGSAK)
-    return GDB_SIGNAL_SAK;
-#endif
-#if defined (SIGPRIO)
-  if (hostsig == SIGPRIO)
-    return GDB_SIGNAL_PRIO;
-#endif
-
-  /* Mach exceptions.  Assumes that the values for EXC_ are positive! */
-#if defined (EXC_BAD_ACCESS) && defined (_NSIG)
-  if (hostsig == _NSIG + EXC_BAD_ACCESS)
-    return GDB_EXC_BAD_ACCESS;
-#endif
-#if defined (EXC_BAD_INSTRUCTION) && defined (_NSIG)
-  if (hostsig == _NSIG + EXC_BAD_INSTRUCTION)
-    return GDB_EXC_BAD_INSTRUCTION;
-#endif
-#if defined (EXC_ARITHMETIC) && defined (_NSIG)
-  if (hostsig == _NSIG + EXC_ARITHMETIC)
-    return GDB_EXC_ARITHMETIC;
-#endif
-#if defined (EXC_EMULATION) && defined (_NSIG)
-  if (hostsig == _NSIG + EXC_EMULATION)
-    return GDB_EXC_EMULATION;
-#endif
-#if defined (EXC_SOFTWARE) && defined (_NSIG)
-  if (hostsig == _NSIG + EXC_SOFTWARE)
-    return GDB_EXC_SOFTWARE;
-#endif
-#if defined (EXC_BREAKPOINT) && defined (_NSIG)
-  if (hostsig == _NSIG + EXC_BREAKPOINT)
-    return GDB_EXC_BREAKPOINT;
-#endif
-
-#if defined (SIGINFO)
-  if (hostsig == SIGINFO)
-    return GDB_SIGNAL_INFO;
-#endif
-#if defined (SIGLIBRT)
-  if (hostsig == SIGLIBRT)
-    return GDB_SIGNAL_LIBRT;
-#endif
-
-#if defined (REALTIME_LO)
-  if (hostsig >= REALTIME_LO && hostsig < REALTIME_HI)
-    {
-      /* This block of GDB_SIGNAL_REALTIME value is in order.  */
-      if (33 <= hostsig && hostsig <= 63)
-	return (enum gdb_signal)
-	  (hostsig - 33 + (int) GDB_SIGNAL_REALTIME_33);
-      else if (hostsig == 32)
-	return GDB_SIGNAL_REALTIME_32;
-      else if (64 <= hostsig && hostsig <= 127)
-	return (enum gdb_signal)
-	  (hostsig - 64 + (int) GDB_SIGNAL_REALTIME_64);
-      else
-	error (_("GDB bug: target.c (gdb_signal_from_host): "
-	       "unrecognized real-time signal"));
-    }
-#endif
-
-  return GDB_SIGNAL_UNKNOWN;
-}
-
-/* Convert a OURSIG (an enum gdb_signal) to the form used by the
-   target operating system (refered to as the ``host'') or zero if the
-   equivalent host signal is not available.  Set/clear OURSIG_OK
-   accordingly. */
-
-static int
-do_gdb_signal_to_host (enum gdb_signal oursig,
-			  int *oursig_ok)
-{
-  int retsig;
-  /* Silence the 'not used' warning, for targets that
-     do not support signals.  */
-  (void) retsig;
-
-  /* Signals are ordered ANSI-standard signals first, other signals
-     second, with signals in each block ordered by their numerical
-     values on a typical POSIX platform.  */
-
-  *oursig_ok = 1;
-  switch (oursig)
-    {
-    case GDB_SIGNAL_0:
-      return 0;
-
-      /* SIGINT, SIGILL, SIGABRT, SIGFPE, SIGSEGV and SIGTERM
-	 are ANSI-standard signals and are always available.  */
-    case GDB_SIGNAL_INT:
-      return SIGINT;
-    case GDB_SIGNAL_ILL:
-      return SIGILL;
-    case GDB_SIGNAL_ABRT:
-      return SIGABRT;
-    case GDB_SIGNAL_FPE:
-      return SIGFPE;
-    case GDB_SIGNAL_SEGV:
-      return SIGSEGV;
-    case GDB_SIGNAL_TERM:
-      return SIGTERM;
-
-      /* All other signals need preprocessor conditionals.  */
-#if defined (SIGHUP)
-    case GDB_SIGNAL_HUP:
-      return SIGHUP;
-#endif
-#if defined (SIGQUIT)
-    case GDB_SIGNAL_QUIT:
-      return SIGQUIT;
-#endif
-#if defined (SIGTRAP)
-    case GDB_SIGNAL_TRAP:
-      return SIGTRAP;
-#endif
-#if defined (SIGEMT)
-    case GDB_SIGNAL_EMT:
-      return SIGEMT;
-#endif
-#if defined (SIGKILL)
-    case GDB_SIGNAL_KILL:
-      return SIGKILL;
-#endif
-#if defined (SIGBUS)
-    case GDB_SIGNAL_BUS:
-      return SIGBUS;
-#endif
-#if defined (SIGSYS)
-    case GDB_SIGNAL_SYS:
-      return SIGSYS;
-#endif
-#if defined (SIGPIPE)
-    case GDB_SIGNAL_PIPE:
-      return SIGPIPE;
-#endif
-#if defined (SIGALRM)
-    case GDB_SIGNAL_ALRM:
-      return SIGALRM;
-#endif
-#if defined (SIGUSR1)
-    case GDB_SIGNAL_USR1:
-      return SIGUSR1;
-#endif
-#if defined (SIGUSR2)
-    case GDB_SIGNAL_USR2:
-      return SIGUSR2;
-#endif
-#if defined (SIGCHLD) || defined (SIGCLD)
-    case GDB_SIGNAL_CHLD:
-#if defined (SIGCHLD)
-      return SIGCHLD;
-#else
-      return SIGCLD;
-#endif
-#endif /* SIGCLD or SIGCHLD */
-#if defined (SIGPWR)
-    case GDB_SIGNAL_PWR:
-      return SIGPWR;
-#endif
-#if defined (SIGWINCH)
-    case GDB_SIGNAL_WINCH:
-      return SIGWINCH;
-#endif
-#if defined (SIGURG)
-    case GDB_SIGNAL_URG:
-      return SIGURG;
-#endif
-#if defined (SIGIO)
-    case GDB_SIGNAL_IO:
-      return SIGIO;
-#endif
-#if defined (SIGPOLL)
-    case GDB_SIGNAL_POLL:
-      return SIGPOLL;
-#endif
-#if defined (SIGSTOP)
-    case GDB_SIGNAL_STOP:
-      return SIGSTOP;
-#endif
-#if defined (SIGTSTP)
-    case GDB_SIGNAL_TSTP:
-      return SIGTSTP;
-#endif
-#if defined (SIGCONT)
-    case GDB_SIGNAL_CONT:
-      return SIGCONT;
-#endif
-#if defined (SIGTTIN)
-    case GDB_SIGNAL_TTIN:
-      return SIGTTIN;
-#endif
-#if defined (SIGTTOU)
-    case GDB_SIGNAL_TTOU:
-      return SIGTTOU;
-#endif
-#if defined (SIGVTALRM)
-    case GDB_SIGNAL_VTALRM:
-      return SIGVTALRM;
-#endif
-#if defined (SIGPROF)
-    case GDB_SIGNAL_PROF:
-      return SIGPROF;
-#endif
-#if defined (SIGXCPU)
-    case GDB_SIGNAL_XCPU:
-      return SIGXCPU;
-#endif
-#if defined (SIGXFSZ)
-    case GDB_SIGNAL_XFSZ:
-      return SIGXFSZ;
-#endif
-#if defined (SIGWIND)
-    case GDB_SIGNAL_WIND:
-      return SIGWIND;
-#endif
-#if defined (SIGPHONE)
-    case GDB_SIGNAL_PHONE:
-      return SIGPHONE;
-#endif
-#if defined (SIGLOST)
-    case GDB_SIGNAL_LOST:
-      return SIGLOST;
-#endif
-#if defined (SIGWAITING)
-    case GDB_SIGNAL_WAITING:
-      return SIGWAITING;
-#endif
-#if defined (SIGCANCEL)
-    case GDB_SIGNAL_CANCEL:
-      return SIGCANCEL;
-#endif
-#if defined (SIGLWP)
-    case GDB_SIGNAL_LWP:
-      return SIGLWP;
-#endif
-#if defined (SIGDANGER)
-    case GDB_SIGNAL_DANGER:
-      return SIGDANGER;
-#endif
-#if defined (SIGGRANT)
-    case GDB_SIGNAL_GRANT:
-      return SIGGRANT;
-#endif
-#if defined (SIGRETRACT)
-    case GDB_SIGNAL_RETRACT:
-      return SIGRETRACT;
-#endif
-#if defined (SIGMSG)
-    case GDB_SIGNAL_MSG:
-      return SIGMSG;
-#endif
-#if defined (SIGSOUND)
-    case GDB_SIGNAL_SOUND:
-      return SIGSOUND;
-#endif
-#if defined (SIGSAK)
-    case GDB_SIGNAL_SAK:
-      return SIGSAK;
-#endif
-#if defined (SIGPRIO)
-    case GDB_SIGNAL_PRIO:
-      return SIGPRIO;
-#endif
-
-      /* Mach exceptions.  Assumes that the values for EXC_ are positive! */
-#if defined (EXC_BAD_ACCESS) && defined (_NSIG)
-    case GDB_EXC_BAD_ACCESS:
-      return _NSIG + EXC_BAD_ACCESS;
-#endif
-#if defined (EXC_BAD_INSTRUCTION) && defined (_NSIG)
-    case GDB_EXC_BAD_INSTRUCTION:
-      return _NSIG + EXC_BAD_INSTRUCTION;
-#endif
-#if defined (EXC_ARITHMETIC) && defined (_NSIG)
-    case GDB_EXC_ARITHMETIC:
-      return _NSIG + EXC_ARITHMETIC;
-#endif
-#if defined (EXC_EMULATION) && defined (_NSIG)
-    case GDB_EXC_EMULATION:
-      return _NSIG + EXC_EMULATION;
-#endif
-#if defined (EXC_SOFTWARE) && defined (_NSIG)
-    case GDB_EXC_SOFTWARE:
-      return _NSIG + EXC_SOFTWARE;
-#endif
-#if defined (EXC_BREAKPOINT) && defined (_NSIG)
-    case GDB_EXC_BREAKPOINT:
-      return _NSIG + EXC_BREAKPOINT;
-#endif
-
-#if defined (SIGINFO)
-    case GDB_SIGNAL_INFO:
-      return SIGINFO;
-#endif
-#if defined (SIGLIBRT)
-    case GDB_SIGNAL_LIBRT:
-      return SIGLIBRT;
-#endif
-
-    default:
-#if defined (REALTIME_LO)
-      retsig = 0;
-
-      if (oursig >= GDB_SIGNAL_REALTIME_33
-	  && oursig <= GDB_SIGNAL_REALTIME_63)
-	{
-	  /* This block of signals is continuous, and
-             GDB_SIGNAL_REALTIME_33 is 33 by definition.  */
-	  retsig = (int) oursig - (int) GDB_SIGNAL_REALTIME_33 + 33;
-	}
-      else if (oursig == GDB_SIGNAL_REALTIME_32)
-	{
-	  /* GDB_SIGNAL_REALTIME_32 isn't contiguous with
-             GDB_SIGNAL_REALTIME_33.  It is 32 by definition.  */
-	  retsig = 32;
-	}
-      else if (oursig >= GDB_SIGNAL_REALTIME_64
-	  && oursig <= GDB_SIGNAL_REALTIME_127)
-	{
-	  /* This block of signals is continuous, and
-             GDB_SIGNAL_REALTIME_64 is 64 by definition.  */
-	  retsig = (int) oursig - (int) GDB_SIGNAL_REALTIME_64 + 64;
-	}
-
-      if (retsig >= REALTIME_LO && retsig < REALTIME_HI)
-	return retsig;
-#endif
-
-      *oursig_ok = 0;
-      return 0;
-    }
-}
-
-int
-gdb_signal_to_host_p (enum gdb_signal oursig)
-{
-  int oursig_ok;
-  do_gdb_signal_to_host (oursig, &oursig_ok);
-  return oursig_ok;
-}
-
-int
-gdb_signal_to_host (enum gdb_signal oursig)
-{
-  int oursig_ok;
-  int targ_signo = do_gdb_signal_to_host (oursig, &oursig_ok);
-  if (!oursig_ok)
-    {
-      /* The user might be trying to do "signal SIGSAK" where this system
-         doesn't have SIGSAK.  */
-      warning (_("Signal %s does not exist on this system."),
-	       gdb_signal_to_name (oursig));
-      return 0;
-    }
-  else
-    return targ_signo;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/signals-state-save-restore.c ./gdb/gdbsupport/signals-state-save-restore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/signals-state-save-restore.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/signals-state-save-restore.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,114 +0,0 @@
-/* Copyright (C) 2016-2020 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"
-#include "signals-state-save-restore.h"
-#include "gdbsupport/gdb-sigmask.h"
-
-#include <signal.h>
-
-/* The original signal actions and mask.  */
-
-#ifdef HAVE_SIGACTION
-static struct sigaction original_signal_actions[NSIG];
-
-static sigset_t original_signal_mask;
-#endif
-
-/* See signals-state-save-restore.h.   */
-
-void
-save_original_signals_state (bool quiet)
-{
-#ifdef HAVE_SIGACTION
-  int i;
-  int res;
-
-  res = gdb_sigmask (0,  NULL, &original_signal_mask);
-  if (res == -1)
-    perror_with_name (("sigprocmask"));
-
-  bool found_preinstalled = false;
-
-  for (i = 1; i < NSIG; i++)
-    {
-      struct sigaction *oldact = &original_signal_actions[i];
-
-      res = sigaction (i, NULL, oldact);
-      if (res == -1 && errno == EINVAL)
-	{
-	  /* Some signal numbers in the range are invalid.  */
-	  continue;
-	}
-      else if (res == -1)
-	perror_with_name (("sigaction"));
-
-      /* If we find a custom signal handler already installed, then
-	 this function was called too late.  This is a warning instead
-	 of an internal error because this can also happen if you
-	 LD_PRELOAD a library that installs a signal handler early via
-	 __attribute__((constructor)), like libSegFault.so.  */
-      if (!quiet
-	  && oldact->sa_handler != SIG_DFL
-	  && oldact->sa_handler != SIG_IGN)
-	{
-	  found_preinstalled = true;
-
-	  /* Use raw fprintf here because we're being called in early
-	     startup, before GDB's filtered streams are created.  */
-	  fprintf (stderr,
-		   _("warning: Found custom handler for signal "
-		     "%d (%s) preinstalled.\n"), i,
-		   strsignal (i));
-	}
-    }
-
-  if (found_preinstalled)
-    {
-      fprintf (stderr, _("\
-Some signal dispositions inherited from the environment (SIG_DFL/SIG_IGN)\n\
-won't be propagated to spawned programs.\n"));
-    }
-#endif
-}
-
-/* See signals-state-save-restore.h.   */
-
-void
-restore_original_signals_state (void)
-{
-#ifdef HAVE_SIGACTION
-  int i;
-  int res;
-
-  for (i = 1; i < NSIG; i++)
-    {
-      res = sigaction (i, &original_signal_actions[i], NULL);
-      if (res == -1 && errno == EINVAL)
-	{
-	  /* Some signal numbers in the range are invalid.  */
-	  continue;
-	}
-      else if (res == -1)
-	perror_with_name (("sigaction"));
-    }
-
-  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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/signals-state-save-restore.h ./gdb/gdbsupport/signals-state-save-restore.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/signals-state-save-restore.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/signals-state-save-restore.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,40 +0,0 @@
-/* Copyright (C) 2016-2020 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 COMMON_SIGNALS_STATE_SAVE_RESTORE_H
-#define COMMON_SIGNALS_STATE_SAVE_RESTORE_H
-
-/* Save/restore the signal actions of all signals, and the signal
-   mask.
-
-   Since the exec family of functions does not reset the signal
-   disposition of signals set to SIG_IGN, nor does it reset the signal
-   mask, in order to be transparent, when spawning new child processes
-   to debug (with "run", etc.), we must reset signal actions and mask
-   back to what was originally inherited from gdb/gdbserver's parent,
-   just before execing the target program to debug.  */
-
-/* Save the signal state of all signals.  If !QUIET, warn if we detect
-   a custom signal handler preinstalled.  */
-
-extern void save_original_signals_state (bool quiet);
-
-/* Restore the signal state of all signals.  */
-
-extern void restore_original_signals_state (void);
-
-#endif /* COMMON_SIGNALS_STATE_SAVE_RESTORE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/symbol.h ./gdb/gdbsupport/symbol.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/symbol.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/symbol.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,37 +0,0 @@
-/* Declarations of common symbol functions.
-
-   Copyright (C) 2014-2020 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 COMMON_SYMBOL_H
-#define COMMON_SYMBOL_H
-
-struct objfile;
-
-/* Find a symbol that matches NAME.  Limit the search to OBJFILE if
-   OBJFILE is non-NULL and the implementation supports limiting the
-   search to specific object files.  NAME may be mangled or demangled.
-   If a match is found, store the matching symbol's address in ADDR
-   and return zero.  Returns nonzero if no symbol matching NAME is
-   found.  Raise an exception if OBJFILE is non-NULL and the
-   implementation does not support limiting searches to specific
-   object files.  This function must be provided by the client.  */
-
-extern int find_minimal_symbol_address (const char *name, CORE_ADDR *addr,
-					struct objfile *objfile);
-
-#endif /* COMMON_SYMBOL_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/tdesc.c ./gdb/gdbsupport/tdesc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/tdesc.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/tdesc.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,401 +0,0 @@
-/* Target description support for GDB.
-
-   Copyright (C) 2018-2020 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"
-#include "gdbsupport/tdesc.h"
-
-tdesc_reg::tdesc_reg (struct tdesc_feature *feature, const std::string &name_,
-		      int regnum, int save_restore_, const char *group_,
-		      int bitsize_, const char *type_)
-  : name (name_), target_regnum (regnum),
-    save_restore (save_restore_),
-    group (group_ != NULL ? group_ : ""),
-    bitsize (bitsize_),
-    type (type_ != NULL ? type_ : "<unknown>")
-{
-  /* If the register's type is target-defined, look it up now.  We may not
-     have easy access to the containing feature when we want it later.  */
-  tdesc_type = tdesc_named_type (feature, type.c_str ());
-}
-
-/* Predefined types.  */
-static tdesc_type_builtin tdesc_predefined_types[] =
-{
-  { "bool", TDESC_TYPE_BOOL },
-  { "int8", TDESC_TYPE_INT8 },
-  { "int16", TDESC_TYPE_INT16 },
-  { "int32", TDESC_TYPE_INT32 },
-  { "int64", TDESC_TYPE_INT64 },
-  { "int128", TDESC_TYPE_INT128 },
-  { "uint8", TDESC_TYPE_UINT8 },
-  { "uint16", TDESC_TYPE_UINT16 },
-  { "uint32", TDESC_TYPE_UINT32 },
-  { "uint64", TDESC_TYPE_UINT64 },
-  { "uint128", TDESC_TYPE_UINT128 },
-  { "code_ptr", TDESC_TYPE_CODE_PTR },
-  { "data_ptr", TDESC_TYPE_DATA_PTR },
-  { "ieee_half", TDESC_TYPE_IEEE_HALF },
-  { "ieee_single", TDESC_TYPE_IEEE_SINGLE },
-  { "ieee_double", TDESC_TYPE_IEEE_DOUBLE },
-  { "arm_fpa_ext", TDESC_TYPE_ARM_FPA_EXT },
-  { "i387_ext", TDESC_TYPE_I387_EXT }
-};
-
-void tdesc_feature::accept (tdesc_element_visitor &v) const
-{
-  v.visit_pre (this);
-
-  for (const tdesc_type_up &type : types)
-    type->accept (v);
-
-  for (const tdesc_reg_up &reg : registers)
-    reg->accept (v);
-
-  v.visit_post (this);
-}
-
-bool tdesc_feature::operator== (const tdesc_feature &other) const
-{
-  if (name != other.name)
-    return false;
-
-  if (registers.size () != other.registers.size ())
-    return false;
-
-  for (int ix = 0; ix < registers.size (); ix++)
-    {
-      const tdesc_reg_up &reg1 = registers[ix];
-      const tdesc_reg_up &reg2 = other.registers[ix];
-
-      if (reg1 != reg2 && *reg1 != *reg2)
-	return false;
-      }
-
-  if (types.size () != other.types.size ())
-    return false;
-
-  for (int ix = 0; ix < types.size (); ix++)
-    {
-      const tdesc_type_up &type1 = types[ix];
-      const tdesc_type_up &type2 = other.types[ix];
-
-      if (type1 != type2 && *type1 != *type2)
-	return false;
-    }
-
-  return true;
-}
-
-/* Lookup a predefined type.  */
-
-static struct tdesc_type *
-tdesc_predefined_type (enum tdesc_type_kind kind)
-{
-  for (int ix = 0; ix < ARRAY_SIZE (tdesc_predefined_types); ix++)
-    if (tdesc_predefined_types[ix].kind == kind)
-      return &tdesc_predefined_types[ix];
-
-  gdb_assert_not_reached ("bad predefined tdesc type");
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-struct tdesc_type *
-tdesc_named_type (const struct tdesc_feature *feature, const char *id)
-{
-  /* First try target-defined types.  */
-  for (const tdesc_type_up &type : feature->types)
-    if (type->name == id)
-      return type.get ();
-
-  /* Next try the predefined types.  */
-  for (int ix = 0; ix < ARRAY_SIZE (tdesc_predefined_types); ix++)
-    if (tdesc_predefined_types[ix].name == id)
-      return &tdesc_predefined_types[ix];
-
-  return NULL;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-void
-tdesc_create_reg (struct tdesc_feature *feature, const char *name,
-		  int regnum, int save_restore, const char *group,
-		  int bitsize, const char *type)
-{
-  tdesc_reg *reg = new tdesc_reg (feature, name, regnum, save_restore,
-				  group, bitsize, type);
-
-  feature->registers.emplace_back (reg);
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-struct tdesc_type *
-tdesc_create_vector (struct tdesc_feature *feature, const char *name,
-		     struct tdesc_type *field_type, int count)
-{
-  tdesc_type_vector *type = new tdesc_type_vector (name, field_type, count);
-  feature->types.emplace_back (type);
-
-  return type;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-tdesc_type_with_fields *
-tdesc_create_struct (struct tdesc_feature *feature, const char *name)
-{
-  tdesc_type_with_fields *type
-    = new tdesc_type_with_fields (name, TDESC_TYPE_STRUCT);
-  feature->types.emplace_back (type);
-
-  return type;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-void
-tdesc_set_struct_size (tdesc_type_with_fields *type, int size)
-{
-  gdb_assert (type->kind == TDESC_TYPE_STRUCT);
-  gdb_assert (size > 0);
-  type->size = size;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-tdesc_type_with_fields *
-tdesc_create_union (struct tdesc_feature *feature, const char *name)
-{
-  tdesc_type_with_fields *type
-    = new tdesc_type_with_fields (name, TDESC_TYPE_UNION);
-  feature->types.emplace_back (type);
-
-  return type;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-tdesc_type_with_fields *
-tdesc_create_flags (struct tdesc_feature *feature, const char *name,
-		    int size)
-{
-  gdb_assert (size > 0);
-
-  tdesc_type_with_fields *type
-    = new tdesc_type_with_fields (name, TDESC_TYPE_FLAGS, size);
-  feature->types.emplace_back (type);
-
-  return type;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-tdesc_type_with_fields *
-tdesc_create_enum (struct tdesc_feature *feature, const char *name,
-		   int size)
-{
-  gdb_assert (size > 0);
-
-  tdesc_type_with_fields *type
-    = new tdesc_type_with_fields (name, TDESC_TYPE_ENUM, size);
-  feature->types.emplace_back (type);
-
-  return type;
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-void
-tdesc_add_field (tdesc_type_with_fields *type, const char *field_name,
-		 struct tdesc_type *field_type)
-{
-  gdb_assert (type->kind == TDESC_TYPE_UNION
-	      || type->kind == TDESC_TYPE_STRUCT);
-
-  /* Initialize start and end so we know this is not a bit-field
-     when we print-c-tdesc.  */
-  type->fields.emplace_back (field_name, field_type, -1, -1);
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-void
-tdesc_add_typed_bitfield (tdesc_type_with_fields *type, const char *field_name,
-			  int start, int end, struct tdesc_type *field_type)
-{
-  gdb_assert (type->kind == TDESC_TYPE_STRUCT
-	      || type->kind == TDESC_TYPE_FLAGS);
-  gdb_assert (start >= 0 && end >= start);
-
-  type->fields.emplace_back (field_name, field_type, start, end);
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-void
-tdesc_add_bitfield (tdesc_type_with_fields *type, const char *field_name,
-		    int start, int end)
-{
-  struct tdesc_type *field_type;
-
-  gdb_assert (start >= 0 && end >= start);
-
-  if (type->size > 4)
-    field_type = tdesc_predefined_type (TDESC_TYPE_UINT64);
-  else
-    field_type = tdesc_predefined_type (TDESC_TYPE_UINT32);
-
-  tdesc_add_typed_bitfield (type, field_name, start, end, field_type);
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-void
-tdesc_add_flag (tdesc_type_with_fields *type, int start,
-		const char *flag_name)
-{
-  gdb_assert (type->kind == TDESC_TYPE_FLAGS
-	      || type->kind == TDESC_TYPE_STRUCT);
-
-  type->fields.emplace_back (flag_name,
-			     tdesc_predefined_type (TDESC_TYPE_BOOL),
-			     start, start);
-}
-
-/* See gdbsupport/tdesc.h.  */
-
-void
-tdesc_add_enum_value (tdesc_type_with_fields *type, int value,
-		      const char *name)
-{
-  gdb_assert (type->kind == TDESC_TYPE_ENUM);
-  type->fields.emplace_back (name,
-			     tdesc_predefined_type (TDESC_TYPE_INT32),
-			     value, -1);
-}
-
-void print_xml_feature::visit_pre (const tdesc_feature *e)
-{
-  string_appendf (*m_buffer, "<feature name=\"%s\">\n", e->name.c_str ());
-}
-
-void print_xml_feature::visit_post (const tdesc_feature *e)
-{
-  string_appendf (*m_buffer, "</feature>\n");
-}
-
-void print_xml_feature::visit (const tdesc_type_builtin *t)
-{
-  error (_("xml output is not supported for type \"%s\"."), t->name.c_str ());
-}
-
-void print_xml_feature::visit (const tdesc_type_vector *t)
-{
-  string_appendf (*m_buffer, "<vector id=\"%s\" type=\"%s\" count=\"%d\"/>\n",
-		  t->name.c_str (), t->element_type->name.c_str (), t->count);
-}
-
-void print_xml_feature::visit (const tdesc_type_with_fields *t)
-{
-  const static char *types[] = { "struct", "union", "flags", "enum" };
-
-  gdb_assert (t->kind >= TDESC_TYPE_STRUCT && t->kind <= TDESC_TYPE_ENUM);
-
-  string_appendf (*m_buffer,
-		  "<%s id=\"%s\"", types[t->kind - TDESC_TYPE_STRUCT],
-		  t->name.c_str ());
-
-  switch (t->kind)
-    {
-    case TDESC_TYPE_STRUCT:
-    case TDESC_TYPE_FLAGS:
-      if (t->size > 0)
-	string_appendf (*m_buffer, " size=\"%d\"", t->size);
-      string_appendf (*m_buffer, ">\n");
-
-      for (const tdesc_type_field &f : t->fields)
-	{
-	  string_appendf (*m_buffer, "  <field name=\"%s\" ", f.name.c_str ());
-	  if (f.start == -1)
-	    string_appendf (*m_buffer, "type=\"%s\"/>\n",
-			    f.type->name.c_str ());
-	  else
-	    string_appendf (*m_buffer, "start=\"%d\" end=\"%d\"/>\n", f.start,
-			    f.end);
-	}
-      break;
-
-    case TDESC_TYPE_ENUM:
-      string_appendf (*m_buffer, ">\n");
-      for (const tdesc_type_field &f : t->fields)
-	string_appendf (*m_buffer, "  <field name=\"%s\" start=\"%d\"/>\n",
-			f.name.c_str (), f.start);
-      break;
-
-    case TDESC_TYPE_UNION:
-      string_appendf (*m_buffer, ">\n");
-      for (const tdesc_type_field &f : t->fields)
-	string_appendf (*m_buffer, "  <field name=\"%s\" type=\"%s\"/>\n",
-			f.name.c_str (), f.type->name.c_str ());
-      break;
-
-    default:
-      error (_("xml output is not supported for type \"%s\"."),
-	     t->name.c_str ());
-    }
-
-  string_appendf (*m_buffer, "</%s>\n", types[t->kind - TDESC_TYPE_STRUCT]);
-}
-
-void print_xml_feature::visit (const tdesc_reg *r)
-{
-  string_appendf (*m_buffer,
-		  "<reg name=\"%s\" bitsize=\"%d\" type=\"%s\" regnum=\"%ld\"",
-		  r->name.c_str (), r->bitsize, r->type.c_str (),
-		  r->target_regnum);
-
-  if (r->group.length () > 0)
-    string_appendf (*m_buffer, " group=\"%s\"", r->group.c_str ());
-
-  if (r->save_restore == 0)
-    string_appendf (*m_buffer, " save-restore=\"no\"");
-
-  string_appendf (*m_buffer, "/>\n");
-}
-
-void print_xml_feature::visit_pre (const target_desc *e)
-{
-#ifndef IN_PROCESS_AGENT
-  string_appendf (*m_buffer, "<?xml version=\"1.0\"?>\n");
-  string_appendf (*m_buffer, "<!DOCTYPE target SYSTEM \"gdb-target.dtd\">\n");
-  string_appendf (*m_buffer, "<target>\n<architecture>%s</architecture>\n",
-		  tdesc_architecture_name (e));
-
-  const char *osabi = tdesc_osabi_name (e);
-  if (osabi != nullptr)
-    string_appendf (*m_buffer, "<osabi>%s</osabi>", osabi);
-#endif
-}
-
-void print_xml_feature::visit_post (const target_desc *e)
-{
-  string_appendf (*m_buffer, "</target>\n");
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/tdesc.h ./gdb/gdbsupport/tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/tdesc.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/tdesc.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,408 +0,0 @@
-/* Copyright (C) 2006-2020 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 COMMON_TDESC_H
-#define COMMON_TDESC_H
-
-struct tdesc_feature;
-struct tdesc_type;
-struct tdesc_type_builtin;
-struct tdesc_type_vector;
-struct tdesc_type_with_fields;
-struct tdesc_reg;
-struct target_desc;
-
-/* The interface to visit different elements of target description.  */
-
-class tdesc_element_visitor
-{
-public:
-  virtual void visit_pre (const target_desc *e)
-  {}
-
-  virtual void visit_post (const target_desc *e)
-  {}
-
-  virtual void visit_pre (const tdesc_feature *e)
-  {}
-
-  virtual void visit_post (const tdesc_feature *e)
-  {}
-
-  virtual void visit (const tdesc_type_builtin *e)
-  {}
-
-  virtual void visit (const tdesc_type_vector *e)
-  {}
-
-  virtual void visit (const tdesc_type_with_fields *e)
-  {}
-
-  virtual void visit (const tdesc_reg *e)
-  {}
-};
-
-class tdesc_element
-{
-public:
-  virtual void accept (tdesc_element_visitor &v) const = 0;
-};
-
-/* An individual register from a target description.  */
-
-struct tdesc_reg : tdesc_element
-{
-  tdesc_reg (struct tdesc_feature *feature, const std::string &name_,
-	     int regnum, int save_restore_, const char *group_,
-	     int bitsize_, const char *type_);
-
-  virtual ~tdesc_reg () = default;
-
-  DISABLE_COPY_AND_ASSIGN (tdesc_reg);
-
-  /* The name of this register.  In standard features, it may be
-     recognized by the architecture support code, or it may be purely
-     for the user.  */
-  std::string name;
-
-  /* The register number used by this target to refer to this
-     register.  This is used for remote p/P packets and to determine
-     the ordering of registers in the remote g/G packets.  */
-  long target_regnum;
-
-  /* If this flag is set, GDB should save and restore this register
-     around calls to an inferior function.  */
-  int save_restore;
-
-  /* The name of the register group containing this register, or empty
-     if the group should be automatically determined from the
-     register's type.  If this is "general", "float", or "vector", the
-     corresponding "info" command should display this register's
-     value.  It can be an arbitrary string, but should be limited to
-     alphanumeric characters and internal hyphens.  Currently other
-     strings are ignored (treated as empty).  */
-  std::string group;
-
-  /* The size of the register, in bits.  */
-  int bitsize;
-
-  /* The type of the register.  This string corresponds to either
-     a named type from the target description or a predefined
-     type from GDB.  */
-  std::string type;
-
-  /* The target-described type corresponding to TYPE, if found.  */
-  struct tdesc_type *tdesc_type;
-
-  void accept (tdesc_element_visitor &v) const override
-  {
-    v.visit (this);
-  }
-
-  bool operator== (const tdesc_reg &other) const
-  {
-    return (name == other.name
-       && target_regnum == other.target_regnum
-       && save_restore == other.save_restore
-       && bitsize == other.bitsize
-       && group == other.group
-       && type == other.type);
-  }
-
-  bool operator!= (const tdesc_reg &other) const
-  {
-    return !(*this == other);
-  }
-};
-
-typedef std::unique_ptr<tdesc_reg> tdesc_reg_up;
-
-enum tdesc_type_kind
-{
-  /* Predefined types.  */
-  TDESC_TYPE_BOOL,
-  TDESC_TYPE_INT8,
-  TDESC_TYPE_INT16,
-  TDESC_TYPE_INT32,
-  TDESC_TYPE_INT64,
-  TDESC_TYPE_INT128,
-  TDESC_TYPE_UINT8,
-  TDESC_TYPE_UINT16,
-  TDESC_TYPE_UINT32,
-  TDESC_TYPE_UINT64,
-  TDESC_TYPE_UINT128,
-  TDESC_TYPE_CODE_PTR,
-  TDESC_TYPE_DATA_PTR,
-  TDESC_TYPE_IEEE_HALF,
-  TDESC_TYPE_IEEE_SINGLE,
-  TDESC_TYPE_IEEE_DOUBLE,
-  TDESC_TYPE_ARM_FPA_EXT,
-  TDESC_TYPE_I387_EXT,
-
-  /* Types defined by a target feature.  */
-  TDESC_TYPE_VECTOR,
-  TDESC_TYPE_STRUCT,
-  TDESC_TYPE_UNION,
-  TDESC_TYPE_FLAGS,
-  TDESC_TYPE_ENUM
-};
-
-struct tdesc_type : tdesc_element
-{
-  tdesc_type (const std::string &name_, enum tdesc_type_kind kind_)
-    : name (name_), kind (kind_)
-  {}
-
-  virtual ~tdesc_type () = default;
-
-  DISABLE_COPY_AND_ASSIGN (tdesc_type);
-
-  /* The name of this type.  */
-  std::string name;
-
-  /* Identify the kind of this type.  */
-  enum tdesc_type_kind kind;
-
-  bool operator== (const tdesc_type &other) const
-  {
-    return name == other.name && kind == other.kind;
-  }
-
-  bool operator!= (const tdesc_type &other) const
-  {
-    return !(*this == other);
-  }
-};
-
-typedef std::unique_ptr<tdesc_type> tdesc_type_up;
-
-struct tdesc_type_builtin : tdesc_type
-{
-  tdesc_type_builtin (const std::string &name, enum tdesc_type_kind kind)
-  : tdesc_type (name, kind)
-  {}
-
-  void accept (tdesc_element_visitor &v) const override
-  {
-    v.visit (this);
-  }
-};
-
-/* tdesc_type for vector types.  */
-
-struct tdesc_type_vector : tdesc_type
-{
-  tdesc_type_vector (const std::string &name, tdesc_type *element_type_,
-		     int count_)
-  : tdesc_type (name, TDESC_TYPE_VECTOR),
-    element_type (element_type_), count (count_)
-  {}
-
-  void accept (tdesc_element_visitor &v) const override
-  {
-    v.visit (this);
-  }
-
-  struct tdesc_type *element_type;
-  int count;
-};
-
-/* A named type from a target description.  */
-
-struct tdesc_type_field
-{
-  tdesc_type_field (const std::string &name_, tdesc_type *type_,
-		    int start_, int end_)
-  : name (name_), type (type_), start (start_), end (end_)
-  {}
-
-  std::string name;
-  struct tdesc_type *type;
-  /* For non-enum-values, either both are -1 (non-bitfield), or both are
-     not -1 (bitfield).  For enum values, start is the value (which could be
-     -1), end is -1.  */
-  int start, end;
-};
-
-/* tdesc_type for struct, union, flags, and enum types.  */
-
-struct tdesc_type_with_fields : tdesc_type
-{
-  tdesc_type_with_fields (const std::string &name, tdesc_type_kind kind,
-			  int size_ = 0)
-  : tdesc_type (name, kind), size (size_)
-  {}
-
-  void accept (tdesc_element_visitor &v) const override
-  {
-    v.visit (this);
-  }
-
-  std::vector<tdesc_type_field> fields;
-  int size;
-};
-
-/* A feature from a target description.  Each feature is a collection
-   of other elements, e.g. registers and types.  */
-
-struct tdesc_feature : tdesc_element
-{
-  tdesc_feature (const std::string &name_)
-    : name (name_)
-  {}
-
-  virtual ~tdesc_feature () = default;
-
-  DISABLE_COPY_AND_ASSIGN (tdesc_feature);
-
-  /* The name of this feature.  It may be recognized by the architecture
-     support code.  */
-  std::string name;
-
-  /* The registers associated with this feature.  */
-  std::vector<tdesc_reg_up> registers;
-
-  /* The types associated with this feature.  */
-  std::vector<tdesc_type_up> types;
-
-  void accept (tdesc_element_visitor &v) const override;
-
-  bool operator== (const tdesc_feature &other) const;
-
-  bool operator!= (const tdesc_feature &other) const
-  {
-    return !(*this == other);
-  }
-};
-
-typedef std::unique_ptr<tdesc_feature> tdesc_feature_up;
-
-/* Allocate a new target_desc.  */
-target_desc *allocate_target_description (void);
-
-/* Set TARGET_DESC's architecture by NAME.  */
-void set_tdesc_architecture (target_desc *target_desc,
-			     const char *name);
-
-/* Return the architecture associated with this target description as a string,
-   or NULL if no architecture was specified.  */
-const char *tdesc_architecture_name (const struct target_desc *target_desc);
-
-/* Set TARGET_DESC's osabi by NAME.  */
-void set_tdesc_osabi (target_desc *target_desc, const char *name);
-
-/* Return the osabi associated with this target description as a string,
-   or NULL if no osabi was specified.  */
-const char *tdesc_osabi_name (const struct target_desc *target_desc);
-
-/* Return the type associated with ID in the context of FEATURE, or
-   NULL if none.  */
-struct tdesc_type *tdesc_named_type (const struct tdesc_feature *feature,
-				     const char *id);
-
-/* Return the created feature named NAME in target description TDESC.  */
-struct tdesc_feature *tdesc_create_feature (struct target_desc *tdesc,
-					    const char *name);
-
-/* Return the created vector tdesc_type named NAME in FEATURE.  */
-struct tdesc_type *tdesc_create_vector (struct tdesc_feature *feature,
-					const char *name,
-					struct tdesc_type *field_type,
-					int count);
-
-/* Return the created struct tdesc_type named NAME in FEATURE.  */
-tdesc_type_with_fields *tdesc_create_struct (struct tdesc_feature *feature,
-					     const char *name);
-
-/* Return the created union tdesc_type named NAME in FEATURE.  */
-tdesc_type_with_fields *tdesc_create_union (struct tdesc_feature *feature,
-					    const char *name);
-
-/* Return the created flags tdesc_type named NAME in FEATURE.  */
-tdesc_type_with_fields *tdesc_create_flags (struct tdesc_feature *feature,
-					    const char *name,
-					    int size);
-
-/* Return the created enum tdesc_type named NAME in FEATURE.  */
-tdesc_type_with_fields *tdesc_create_enum (struct tdesc_feature *feature,
-					   const char *name,
-					   int size);
-
-/* Add a new field to TYPE.  FIELD_NAME is its name, and FIELD_TYPE is
-   its type.  */
-void tdesc_add_field (tdesc_type_with_fields *type, const char *field_name,
-		      struct tdesc_type *field_type);
-
-/* Add a new bitfield to TYPE, with range START to END.  FIELD_NAME is its name,
-   and FIELD_TYPE is its type.  */
-void tdesc_add_typed_bitfield (tdesc_type_with_fields *type,
-			       const char *field_name,
-			       int start, int end,
-			       struct tdesc_type *field_type);
-
-/* Set the total length of TYPE.  Structs which contain bitfields may
-   omit the reserved bits, so the end of the last field may not
-   suffice.  */
-void tdesc_set_struct_size (tdesc_type_with_fields *type, int size);
-
-/* Add a new untyped bitfield to TYPE.
-   Untyped bitfields become either uint32 or uint64 depending on the size
-   of the underlying type.  */
-void tdesc_add_bitfield (tdesc_type_with_fields *type, const char *field_name,
-			 int start, int end);
-
-/* A flag is just a typed(bool) single-bit bitfield.
-   This function is kept to minimize changes in generated files.  */
-void tdesc_add_flag (tdesc_type_with_fields *type, int start,
-		     const char *flag_name);
-
-/* Add field with VALUE and NAME to the enum TYPE.  */
-void tdesc_add_enum_value (tdesc_type_with_fields *type, int value,
-			   const char *name);
-
-/* Create a register in feature FEATURE.  */
-void tdesc_create_reg (struct tdesc_feature *feature, const char *name,
-		       int regnum, int save_restore, const char *group,
-		       int bitsize, const char *type);
-
-/* Return the tdesc in string XML format.  */
-
-const char *tdesc_get_features_xml (const target_desc *tdesc);
-
-/* Print target description as xml.  */
-
-class print_xml_feature : public tdesc_element_visitor
-{
-public:
-  print_xml_feature (std::string *buffer_)
-    : m_buffer (buffer_)
-  {}
-
-  void visit_pre (const target_desc *e) override;
-  void visit_post (const target_desc *e) override;
-  void visit_pre (const tdesc_feature *e) override;
-  void visit_post (const tdesc_feature *e) override;
-  void visit (const tdesc_type_builtin *type) override;
-  void visit (const tdesc_type_vector *type) override;
-  void visit (const tdesc_type_with_fields *type) override;
-  void visit (const tdesc_reg *reg) override;
-
-private:
-  std::string *m_buffer;
-};
-
-#endif /* COMMON_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/thread-pool.c ./gdb/gdbsupport/thread-pool.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/thread-pool.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/thread-pool.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,173 +0,0 @@
-/* Thread pool
-
-   Copyright (C) 2019-2020 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>
-#include "diagnostics.h"
-
-/* 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>
-
-DIAGNOSTIC_PUSH
-DIAGNOSTIC_IGNORE_UNUSED_FUNCTION
-
-/* Handle platform discrepancies in pthread_setname_np: macOS uses a
-   single-argument form, while Linux uses a two-argument form.  This
-   wrapper handles the difference.  */
-
-static void
-set_thread_name (int (*set_name) (pthread_t, const char *), const char *name)
-{
-  set_name (pthread_self (), name);
-}
-
-/* The macOS man page says that pthread_setname_np returns "void", but
-   the headers actually declare it returning "int".  */
-static void
-set_thread_name (int (*set_name) (const char *), const char *name)
-{
-  set_name (name);
-}
-
-DIAGNOSTIC_POP
-
-#endif	/* USE_PTHREAD_SETNAME_NP */
-
-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);
-	  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 ()
-{
-#ifdef USE_PTHREAD_SETNAME_NP
-  /* This must be done here, because on macOS one can only set the
-     name of the current thread.  */
-  set_thread_name (pthread_setname_np, "gdb worker");
-#endif
-
-  /* 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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/thread-pool.h ./gdb/gdbsupport/thread-pool.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/thread-pool.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/thread-pool.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,90 +0,0 @@
-/* Thread pool
-
-   Copyright (C) 2019-2020 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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/traits.h ./gdb/gdbsupport/traits.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/traits.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/traits.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,109 +0,0 @@
-/* Copyright (C) 2017-2020 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 COMMON_TRAITS_H
-#define COMMON_TRAITS_H
-
-#include <type_traits>
-
-/* GCC does not understand __has_feature.  */
-#if !defined(__has_feature)
-# define __has_feature(x) 0
-#endif
-
-/* HAVE_IS_TRIVIALLY_COPYABLE is defined as 1 iff
-   std::is_trivially_copyable is available.  GCC only implemented it
-   in GCC 5.  */
-#if (__has_feature(is_trivially_copyable) \
-     || (defined __GNUC__ && __GNUC__ >= 5))
-# define HAVE_IS_TRIVIALLY_COPYABLE 1
-#endif
-
-/* HAVE_IS_TRIVIALLY_CONSTRUCTIBLE is defined as 1 iff
-   std::is_trivially_constructible is available.  GCC only implemented it
-   in GCC 5.  */
-#if (__has_feature(is_trivially_constructible) \
-     || (defined __GNUC__ && __GNUC__ >= 5))
-# define HAVE_IS_TRIVIALLY_CONSTRUCTIBLE 1
-#endif
-
-namespace gdb {
-
-/* Pre C++14-safe (CWG 1558) version of C++17's std::void_t.  See
-   <http://en.cppreference.com/w/cpp/types/void_t>.  */
-
-template<typename... Ts>
-struct make_void { typedef void type; };
-
-template<typename... Ts>
-using void_t = typename make_void<Ts...>::type;
-
-/* A few trait helpers, mainly stolen from libstdc++.  Uppercase
-   because "and/or", etc. are reserved keywords.  */
-
-template<typename Predicate>
-struct Not : public std::integral_constant<bool, !Predicate::value>
-{};
-
-template<typename...>
-struct Or;
-
-template<>
-struct Or<> : public std::false_type
-{};
-
-template<typename B1>
-struct Or<B1> : public B1
-{};
-
-template<typename B1, typename B2>
-struct Or<B1, B2>
-  : public std::conditional<B1::value, B1, B2>::type
-{};
-
-template<typename B1,typename B2,typename B3, typename... Bn>
-struct Or<B1, B2, B3, Bn...>
-  : public std::conditional<B1::value, B1, Or<B2, B3, Bn...>>::type
-{};
-
-template<typename...>
-struct And;
-
-template<>
-struct And<> : public std::true_type
-{};
-
-template<typename B1>
-struct And<B1> : public B1
-{};
-
-template<typename B1, typename B2>
-struct And<B1, B2>
-  : public std::conditional<B1::value, B2, B1>::type
-{};
-
-template<typename B1, typename B2, typename B3, typename... Bn>
-struct And<B1, B2, B3, Bn...>
-  : public std::conditional<B1::value, And<B2, B3, Bn...>, B1>::type
-{};
-
-/* Concepts-light-like helper to make SFINAE logic easier to read.  */
-template<typename Condition>
-using Requires = typename std::enable_if<Condition::value, void>::type;
-}
-
-#endif /* COMMON_TRAITS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/underlying.h ./gdb/gdbsupport/underlying.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/underlying.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/underlying.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,32 +0,0 @@
-/* Copyright (C) 2017-2020 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 COMMON_UNDERLYING_H
-#define COMMON_UNDERLYING_H
-
-#include <type_traits>
-
-/* Convert an enum to its underlying value.  */
-
-template<typename E>
-constexpr typename std::underlying_type<E>::type
-to_underlying (E val) noexcept
-{
-  return static_cast<typename std::underlying_type<E>::type> (val);
-}
-
-#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/valid-expr.h ./gdb/gdbsupport/valid-expr.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/valid-expr.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/valid-expr.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,108 +0,0 @@
-/* Compile-time valid expression checker for GDB, the GNU debugger.
-
-   Copyright (C) 2017-2020 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/>.  */
-
-/* Helper macros used to build compile-time unit tests that make sure
-   that invalid expressions that should not compile would not compile,
-   and that expressions that should compile do compile, and have the
-   right type.  This is mainly used to verify that some utility's API
-   is really as safe as intended.  */
-
-#ifndef COMMON_VALID_EXPR_H
-#define COMMON_VALID_EXPR_H
-
-#include "gdbsupport/preprocessor.h"
-#include "gdbsupport/traits.h"
-
-/* Macro that uses SFINAE magic to detect whether the EXPR expression
-   is either valid or ill-formed, at compile time, without actually
-   producing compile-time errors.  I.e., check that bad uses of the
-   types (e.g., involving mismatching types) would be caught at
-   compile time.  If the expression is valid, also check whether the
-   expression has the right type.
-
-   EXPR must be defined in terms of some of the template parameters,
-   so that template substitution failure discards the overload instead
-   of causing a real compile error.  TYPES is thus the list of types
-   involved in the expression, and TYPENAMES is the same list, but
-   with each element prefixed by "typename".  These are passed as
-   template parameter types to the templates within the macro.
-
-   VALID is a boolean that indicates whether the expression is
-   supposed to be valid or invalid.
-
-   EXPR_TYPE is the expected type of EXPR.  Only meaningful iff VALID
-   is true.  If VALID is false, then you must pass "void" as expected
-   type.
-
-   Each invocation of the macro is wrapped in its own namespace to
-   avoid ODR violations.  The generated namespace only includes the
-   line number, so client code should wrap sets of calls in a
-   test-specific namespace too, to fully guarantee uniqueness between
-   the multiple clients in the codebase.  */
-#define CHECK_VALID_EXPR_INT(TYPENAMES, TYPES, VALID, EXPR_TYPE, EXPR)	\
-  namespace CONCAT (check_valid_expr, __LINE__) {			\
-									\
-  template<typename, typename, typename = void>				\
-  struct is_valid_expression						\
-    : std::false_type {};						\
-									\
-  template <TYPENAMES>							\
-    struct is_valid_expression<TYPES, gdb::void_t<decltype (EXPR)>>	\
-    : std::true_type {};						\
-									\
-  static_assert (is_valid_expression<TYPES>::value == VALID,		\
-		 "");							\
-									\
-  template<TYPENAMES, typename = void>					\
-  struct is_same_type							\
-    : std::is_same<EXPR_TYPE, void> {};					\
-									\
-  template <TYPENAMES>							\
-    struct is_same_type<TYPES, gdb::void_t<decltype (EXPR)>>		\
-    : std::is_same<EXPR_TYPE, decltype (EXPR)> {};			\
-									\
-  static_assert (is_same_type<TYPES>::value, "");			\
-  } /* namespace */
-
-/* A few convenience macros that support expressions involving a
-   varying numbers of types.  If you need more types, feel free to add
-   another variant.  */
-
-#define CHECK_VALID_EXPR_1(T1, VALID, EXPR_TYPE, EXPR)			\
-  CHECK_VALID_EXPR_INT (ESC_PARENS (typename T1),			\
-			ESC_PARENS (T1),				\
-			VALID, EXPR_TYPE, EXPR)
-
-#define CHECK_VALID_EXPR_2(T1, T2, VALID, EXPR_TYPE, EXPR)		\
-  CHECK_VALID_EXPR_INT (ESC_PARENS(typename T1, typename T2),		\
-			ESC_PARENS (T1, T2),				\
-			VALID, EXPR_TYPE, EXPR)
-
-#define CHECK_VALID_EXPR_3(T1, T2, T3, VALID, EXPR_TYPE, EXPR)		\
-  CHECK_VALID_EXPR_INT (ESC_PARENS (typename T1, typename T2, typename T3), \
-			ESC_PARENS (T1, T2, T3),				\
-			VALID, EXPR_TYPE, EXPR)
-
-#define CHECK_VALID_EXPR_4(T1, T2, T3, T4, VALID, EXPR_TYPE, EXPR)	\
-  CHECK_VALID_EXPR_INT (ESC_PARENS (typename T1, typename T2,		\
-				    typename T3, typename T4),		\
-			ESC_PARENS (T1, T2, T3, T4),			\
-			VALID, EXPR_TYPE, EXPR)
-
-#endif /* COMMON_VALID_EXPR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/version.h ./gdb/gdbsupport/version.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/version.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/version.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,31 +0,0 @@
-/* Version information for GDB.
-   Copyright (C) 1999-2020 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 COMMON_VERSION_H
-#define COMMON_VERSION_H
-
-/* Version number of GDB, as a string.  */
-extern const char version[];
-
-/* Canonical host name as a string.  */
-extern const char host_name[];
-
-/* Canonical target name as a string.  */
-extern const char target_name[];
-
-#endif /* COMMON_VERSION_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/x86-xstate.h ./gdb/gdbsupport/x86-xstate.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/x86-xstate.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/x86-xstate.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,88 +0,0 @@
-/* Common code for x86 XSAVE extended state.
-
-   Copyright (C) 2010-2020 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 COMMON_X86_XSTATE_H
-#define COMMON_X86_XSTATE_H
-
-/* The extended state feature bits.  */
-#define X86_XSTATE_X87		(1ULL << 0)
-#define X86_XSTATE_SSE		(1ULL << 1)
-#define X86_XSTATE_AVX		(1ULL << 2)
-#define X86_XSTATE_BNDREGS	(1ULL << 3)
-#define X86_XSTATE_BNDCFG	(1ULL << 4)
-#define X86_XSTATE_MPX		(X86_XSTATE_BNDREGS | X86_XSTATE_BNDCFG)
-
-/* AVX 512 adds three feature bits.  All three must be enabled.  */
-#define X86_XSTATE_K		(1ULL << 5)
-#define X86_XSTATE_ZMM_H	(1ULL << 6)
-#define X86_XSTATE_ZMM		(1ULL << 7)
-#define X86_XSTATE_AVX512	(X86_XSTATE_K | X86_XSTATE_ZMM_H \
-				 | X86_XSTATE_ZMM)
-
-#define X86_XSTATE_PKRU		(1ULL << 9)
-
-/* Supported mask and size of the extended state.  */
-#define X86_XSTATE_X87_MASK	X86_XSTATE_X87
-#define X86_XSTATE_SSE_MASK	(X86_XSTATE_X87 | X86_XSTATE_SSE)
-#define X86_XSTATE_AVX_MASK	(X86_XSTATE_SSE_MASK | X86_XSTATE_AVX)
-#define X86_XSTATE_MPX_MASK	(X86_XSTATE_SSE_MASK | X86_XSTATE_MPX)
-#define X86_XSTATE_AVX_MPX_MASK	(X86_XSTATE_AVX_MASK | X86_XSTATE_MPX)
-#define X86_XSTATE_AVX_AVX512_MASK	(X86_XSTATE_AVX_MASK | X86_XSTATE_AVX512)
-#define X86_XSTATE_AVX_MPX_AVX512_PKU_MASK 	(X86_XSTATE_AVX_MPX_MASK\
-					| X86_XSTATE_AVX512 | X86_XSTATE_PKRU)
-
-#define X86_XSTATE_ALL_MASK		(X86_XSTATE_AVX_MPX_AVX512_PKU_MASK)
-
-
-#define X86_XSTATE_SSE_SIZE	576
-#define X86_XSTATE_AVX_SIZE	832
-#define X86_XSTATE_BNDREGS_SIZE	1024
-#define X86_XSTATE_BNDCFG_SIZE	1088
-#define X86_XSTATE_AVX512_SIZE	2688
-#define X86_XSTATE_PKRU_SIZE	2696
-#define X86_XSTATE_MAX_SIZE	2696
-
-
-/* In case one of the MPX XCR0 bits is set we consider we have MPX.  */
-#define HAS_MPX(XCR0) (((XCR0) & X86_XSTATE_MPX) != 0)
-#define HAS_AVX(XCR0) (((XCR0) & X86_XSTATE_AVX) != 0)
-#define HAS_AVX512(XCR0) (((XCR0) & X86_XSTATE_AVX512) != 0)
-#define HAS_PKRU(XCR0) (((XCR0) & X86_XSTATE_PKRU) != 0)
-
-/* Get I386 XSAVE extended state size.  */
-#define X86_XSTATE_SIZE(XCR0) \
-    (HAS_PKRU (XCR0) ? X86_XSTATE_PKRU_SIZE : \
-     (HAS_AVX512 (XCR0) ? X86_XSTATE_AVX512_SIZE : \
-      (HAS_MPX (XCR0) ? X86_XSTATE_BNDCFG_SIZE : \
-       (HAS_AVX (XCR0) ? X86_XSTATE_AVX_SIZE : X86_XSTATE_SSE_SIZE))))
-
-/* Initial value for fctrl register, as defined in the X86 manual, and
-   confirmed in the (Linux) kernel source.  When the x87 floating point
-   feature is not enabled in an inferior we use this as the value of the
-   fcrtl register.  */
-
-#define I387_FCTRL_INIT_VAL 0x037f
-
-/* Initial value for mxcsr register.  When the avx and sse floating point
-   features are not enabled in an inferior we use this as the value of the
-   mxcsr register.  */
-
-#define I387_MXCSR_INIT_VAL 0x1f80
-
-#endif /* COMMON_X86_XSTATE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/xml-utils.c ./gdb/gdbsupport/xml-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/xml-utils.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/xml-utils.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,63 +0,0 @@
-/* Shared helper routines for manipulating XML.
-
-   Copyright (C) 2006-2020 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"
-#include "xml-utils.h"
-
-/* See xml-utils.h.  */
-
-std::string
-xml_escape_text (const char *text)
-{
-  std::string result;
-
-  xml_escape_text_append (&result, text);
-
-  return result;
-}
-
-/* See xml-utils.h.  */
-
-void
-xml_escape_text_append (std::string *result, const char *text)
-{
-  /* Expand the result.  */
-  for (int i = 0; text[i] != '\0'; i++)
-    switch (text[i])
-      {
-      case '\'':
-	*result += "&apos;";
-	break;
-      case '\"':
-	*result += "&quot;";
-	break;
-      case '&':
-	*result += "&amp;";
-	break;
-      case '<':
-	*result += "&lt;";
-	break;
-      case '>':
-	*result += "&gt;";
-	break;
-      default:
-	*result += text[i];
-	break;
-      }
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/xml-utils.h ./gdb/gdbsupport/xml-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbsupport/xml-utils.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbsupport/xml-utils.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,33 +0,0 @@
-/* Shared helper routines for manipulating XML.
-
-   Copyright (C) 2006-2020 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 COMMON_XML_UTILS_H
-#define COMMON_XML_UTILS_H
-
-/* Return a string with special characters from TEXT replaced by entity
-   references.  */
-
-extern std::string xml_escape_text (const char *text);
-
-/* Append TEXT to RESULT, with special characters replaced by entity
-   references.  */
-
-extern void xml_escape_text_append (std::string *result, const char *text);
-
-#endif /* COMMON_XML_UTILS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbthread.h ./gdb/gdbthread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbthread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbthread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Multi-process/thread control defs for GDB, the GNU debugger.
-   Copyright (C) 1987-2020 Free Software Foundation, Inc.
+   Copyright (C) 1987-2021 Free Software Foundation, Inc.
    Contributed by Lynx Real-Time Systems, Inc.  Los Gatos, CA.
    
 
@@ -34,6 +34,7 @@ struct symtab;
 #include "gdbsupport/forward-scope-exit.h"
 
 struct inferior;
+struct process_stratum_target;
 
 /* Frontend view of the thread state.  Possible extensions: stepping,
    finishing, until(ling),...
@@ -130,28 +131,10 @@ struct thread_control_state
      any inlined frames).  */
   struct frame_id step_stack_frame_id {};
 
-  /* Nonzero if we are presently stepping over a breakpoint.
-
-     If we hit a breakpoint or watchpoint, and then continue, we need
-     to single step the current thread with breakpoints disabled, to
-     avoid hitting the same breakpoint or watchpoint again.  And we
-     should step just a single thread and keep other threads stopped,
-     so that other threads don't miss breakpoints while they are
-     removed.
-
-     So, this variable simultaneously means that we need to single
-     step the current thread, keep other threads stopped, and that
-     breakpoints should be removed while we step.
-
-     This variable is set either:
-     - in proceed, when we resume inferior on user's explicit request
-     - in keep_going, if handle_inferior_event decides we need to
-     step over breakpoint.
-
-     The variable is cleared in normal_stop.  The proceed calls
-     wait_for_inferior, which calls handle_inferior_event in a loop,
-     and until wait_for_inferior exits, this variable is changed only
-     by keep_going.  */
+  /* True if the the thread is presently stepping over a breakpoint or
+     a watchpoint, either with an inline step over or a displaced (out
+     of line) step, and we're now expecting it to report a trap for
+     the finished single step.  */
   int trap_expected = 0;
 
   /* Nonzero if the thread is being proceeded for a "finish" command
@@ -300,20 +283,20 @@ public:
      if the thread does not have a user-given name.  */
   char *name = NULL;
 
-  /* Non-zero means the thread is executing.  Note: this is different
+  /* True means the thread is executing.  Note: this is different
      from saying that there is an active target and we are stopped at
      a breakpoint, for instance.  This is a real indicator whether the
      thread is off and running.  */
-  int executing = 0;
+  bool executing = false;
 
-  /* Non-zero if this thread is resumed from infrun's perspective.
+  /* True if this thread is resumed from infrun's perspective.
      Note that a thread can be marked both as not-executing and
      resumed at the same time.  This happens if we try to resume a
      thread that has a wait status pending.  We shouldn't let the
      thread really run until that wait status has been processed, but
      we should not process that wait status if we didn't try to let
      the thread run.  */
-  int resumed = 0;
+  bool resumed = false;
 
   /* Frontend view of the thread state.  Note that the THREAD_RUNNING/
      THREAD_STOPPED states are different from EXECUTING.  When the
@@ -412,6 +395,13 @@ public:
 using thread_info_ref
   = gdb::ref_ptr<struct thread_info, refcounted_object_ref_policy>;
 
+/* A gdb::ref_ptr pointer to an inferior.  This would ideally be in
+   inferior.h, but it can't due to header dependencies (inferior.h
+   includes gdbthread.h).  */
+
+using inferior_ref
+  = gdb::ref_ptr<struct inferior, refcounted_object_ref_policy>;
+
 /* Create an empty thread list, or empty the existing one.  */
 extern void init_thread_list (void);
 
@@ -419,22 +409,26 @@ extern void init_thread_list (void);
    that a new thread is found, and return the pointer to
    the new thread.  Caller my use this pointer to 
    initialize the private thread data.  */
-extern struct thread_info *add_thread (ptid_t ptid);
+extern struct thread_info *add_thread (process_stratum_target *targ,
+				       ptid_t ptid);
 
-/* Same as add_thread, but does not print a message
-   about new thread.  */
-extern struct thread_info *add_thread_silent (ptid_t ptid);
+/* Same as add_thread, but does not print a message about new
+   thread.  */
+extern struct thread_info *add_thread_silent (process_stratum_target *targ,
+					      ptid_t ptid);
 
 /* Same as add_thread, and sets the private info.  */
-extern struct thread_info *add_thread_with_info (ptid_t ptid,
-						 struct private_thread_info *);
-
-/* Delete an existing thread list entry.  */
+extern struct thread_info *add_thread_with_info (process_stratum_target *targ,
+						 ptid_t ptid,
+						 private_thread_info *);
+
+/* Delete thread THREAD and notify of thread exit.  If the thread is
+   currently not deletable, don't actually delete it but still tag it
+   as exited and do the notification.  */
 extern void delete_thread (struct thread_info *thread);
 
-/* Delete an existing thread list entry, and be quiet about it.  Used
-   after the process this thread having belonged to having already
-   exited, for example.  */
+/* Like delete_thread, but be quiet about it.  Used when the process
+   this thread belonged to has already exited, for example.  */
 extern void delete_thread_silent (struct thread_info *thread);
 
 /* Delete a step_resume_breakpoint from the thread database.  */
@@ -468,17 +462,21 @@ extern int show_inferior_qualified_tids
 const char *print_thread_id (struct thread_info *thr);
 
 /* Boolean test for an already-known ptid.  */
-extern int in_thread_list (ptid_t ptid);
+extern bool in_thread_list (process_stratum_target *targ, ptid_t ptid);
 
 /* Boolean test for an already-known global thread id (GDB's homegrown
    global id, not the system's).  */
 extern int valid_global_thread_id (int global_id);
 
-/* Search function to lookup a thread by 'pid'.  */
-extern struct thread_info *find_thread_ptid (ptid_t ptid);
+/* Find (non-exited) thread PTID of inferior INF.  */
+extern thread_info *find_thread_ptid (inferior *inf, ptid_t ptid);
+
+/* Search function to lookup a (non-exited) thread by 'ptid'.  */
+extern struct thread_info *find_thread_ptid (process_stratum_target *targ,
+					     ptid_t ptid);
 
-/* Search function to lookup a thread by 'ptid'.  Only searches in
-   threads of INF.  */
+/* Search function to lookup a (non-exited) thread by 'ptid'.  Only
+   searches in threads of INF.  */
 extern struct thread_info *find_thread_ptid (inferior *inf, ptid_t ptid);
 
 /* Find thread by GDB global thread ID.  */
@@ -500,7 +498,8 @@ extern struct thread_info *any_thread_of
 extern struct thread_info *any_live_thread_of_inferior (inferior *inf);
 
 /* Change the ptid of thread OLD_PTID to NEW_PTID.  */
-void thread_change_ptid (ptid_t old_ptid, ptid_t new_ptid);
+void thread_change_ptid (process_stratum_target *targ,
+			 ptid_t old_ptid, ptid_t new_ptid);
 
 /* Iterator function to call a user-provided callback function
    once for each known thread.  */
@@ -511,34 +510,44 @@ extern struct thread_info *iterate_over_
    iterators.  Must be done after struct thread_info is defined.  */
 #include "thread-iter.h"
 
-/* Return a range that can be used to walk over all threads of all
-   inferiors, with range-for.  Used like this:
+/* Return a range that can be used to walk over threads, with
+   range-for.
+
+   Used like this, it walks over all threads of all inferiors of all
+   targets:
 
        for (thread_info *thr : all_threads ())
 	 { .... }
-*/
-inline all_threads_range
-all_threads ()
-{
-  return {};
-}
 
-/* Likewise, but accept a filter PTID.  */
+   FILTER_PTID can be used to filter out threads that don't match.
+   FILTER_PTID can be:
+
+   - minus_one_ptid, meaning walk all threads of all inferiors of
+     PROC_TARGET.  If PROC_TARGET is NULL, then of all targets.
+
+   - A process ptid, in which case walk all threads of the specified
+     process.  PROC_TARGET must be non-NULL in this case.
+
+   - A thread ptid, in which case walk that thread only.  PROC_TARGET
+     must be non-NULL in this case.
+*/
 
 inline all_matching_threads_range
-all_threads (ptid_t filter_ptid)
+all_threads (process_stratum_target *proc_target = nullptr,
+	     ptid_t filter_ptid = minus_one_ptid)
 {
-  return all_matching_threads_range (filter_ptid);
+  return all_matching_threads_range (proc_target, filter_ptid);
 }
 
 /* Return a range that can be used to walk over all non-exited threads
-   of all inferiors, with range-for.  FILTER_PTID can be used to
-   filter out thread that don't match.  */
+   of all inferiors, with range-for.  Arguments are like all_threads
+   above.  */
 
 inline all_non_exited_threads_range
-all_non_exited_threads (ptid_t filter_ptid = minus_one_ptid)
+all_non_exited_threads (process_stratum_target *proc_target = nullptr,
+			ptid_t filter_ptid = minus_one_ptid)
 {
-  return all_non_exited_threads_range (filter_ptid);
+  return all_non_exited_threads_range (proc_target, filter_ptid);
 }
 
 /* Return a range that can be used to walk over all threads of all
@@ -554,10 +563,10 @@ all_non_exited_threads (ptid_t filter_pt
 inline all_threads_safe_range
 all_threads_safe ()
 {
-  return all_threads_safe_range ();
+  return {};
 }
 
-extern int thread_count (void);
+extern int thread_count (process_stratum_target *proc_target);
 
 /* Return true if we have any thread in any inferior.  */
 extern bool any_thread_p ();
@@ -571,44 +580,50 @@ extern void switch_to_no_thread ();
 /* Switch from one thread to another.  Does not read registers.  */
 extern void switch_to_thread_no_regs (struct thread_info *thread);
 
-/* Marks or clears thread(s) PTID as resumed.  If PTID is
-   MINUS_ONE_PTID, applies to all threads.  If ptid_is_pid(PTID) is
-   true, applies to all threads of the process pointed at by PTID.  */
-extern void set_resumed (ptid_t ptid, int resumed);
-
-/* Marks thread PTID is running, or stopped. 
-   If PTID is minus_one_ptid, marks all threads.  */
-extern void set_running (ptid_t ptid, int running);
-
-/* Marks or clears thread(s) PTID as having been requested to stop.
-   If PTID is MINUS_ONE_PTID, applies to all threads.  If
+/* Marks or clears thread(s) PTID of TARG as resumed.  If PTID is
+   MINUS_ONE_PTID, applies to all threads of TARG.  If
    ptid_is_pid(PTID) is true, applies to all threads of the process
-   pointed at by PTID.  If STOP, then the THREAD_STOP_REQUESTED
-   observer is called with PTID as argument.  */
-extern void set_stop_requested (ptid_t ptid, int stop);
+   pointed at by {TARG,PTID}.  */
+extern void set_resumed (process_stratum_target *targ,
+			 ptid_t ptid, bool resumed);
+
+/* Marks thread PTID of TARG as running, or as stopped.  If PTID is
+   minus_one_ptid, marks all threads of TARG.  */
+extern void set_running (process_stratum_target *targ,
+			 ptid_t ptid, bool running);
+
+/* Marks or clears thread(s) PTID of TARG as having been requested to
+   stop.  If PTID is MINUS_ONE_PTID, applies to all threads of TARG.
+   If ptid_is_pid(PTID) is true, applies to all threads of the process
+   pointed at by {TARG, PTID}.  If STOP, then the
+   THREAD_STOP_REQUESTED observer is called with PTID as argument.  */
+extern void set_stop_requested (process_stratum_target *targ,
+				ptid_t ptid, bool stop);
 
-/* Marks thread PTID as executing, or not.  If PTID is minus_one_ptid,
-   marks all threads.
+/* Marks thread PTID of TARG as executing, or not.  If PTID is
+   minus_one_ptid, marks all threads of TARG.
 
    Note that this is different from the running state.  See the
    description of state and executing fields of struct
    thread_info.  */
-extern void set_executing (ptid_t ptid, int executing);
+extern void set_executing (process_stratum_target *targ,
+			   ptid_t ptid, bool executing);
 
-/* True if any (known or unknown) thread is or may be executing.  */
-extern int threads_are_executing (void);
+/* True if any (known or unknown) thread of TARG is or may be
+   executing.  */
+extern bool threads_are_executing (process_stratum_target *targ);
 
-/* Merge the executing property of thread PTID over to its thread
-   state property (frontend running/stopped view).
+/* Merge the executing property of thread PTID of TARG over to its
+   thread state property (frontend running/stopped view).
 
    "not executing" -> "stopped"
    "executing"     -> "running"
    "exited"        -> "exited"
 
-   If PTID is minus_one_ptid, go over all threads.
+   If PTID is minus_one_ptid, go over all threads of TARG.
 
    Notifications are only emitted if the thread state did change.  */
-extern void finish_thread_state (ptid_t ptid);
+extern void finish_thread_state (process_stratum_target *targ, ptid_t ptid);
 
 /* Calls finish_thread_state on scope exit, unless release() is called
    to disengage.  */
@@ -645,11 +660,16 @@ public:
 
   DISABLE_COPY_AND_ASSIGN (scoped_restore_current_thread);
 
+  /* Cancel restoring on scope exit.  */
+  void dont_restore () { m_dont_restore = true; }
+
 private:
-  /* Use the "class" keyword here, because of a clash with a "thread_info"
-     function in the Darwin API.  */
-  class thread_info *m_thread;
-  inferior *m_inf;
+  void restore ();
+
+  bool m_dont_restore = false;
+  thread_info_ref m_thread;
+  inferior_ref m_inf;
+
   frame_id m_selected_frame_id;
   int m_selected_frame_level;
   bool m_was_stopped;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbtypes.c ./gdb/gdbtypes.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbtypes.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbtypes.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support routines for manipulating internal types for GDB.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
@@ -36,9 +36,10 @@
 #include "hashtab.h"
 #include "cp-support.h"
 #include "bcache.h"
-#include "dwarf2loc.h"
+#include "dwarf2/loc.h"
 #include "gdbcore.h"
 #include "floatformat.h"
+#include <algorithm>
 
 /* Initialize BADNESS constants.  */
 
@@ -114,6 +115,10 @@ const struct floatformat *floatformats_i
   &floatformat_ibm_long_double_big,
   &floatformat_ibm_long_double_little
 };
+const struct floatformat *floatformats_bfloat16[BFD_ENDIAN_UNKNOWN] = {
+  &floatformat_bfloat16_big,
+  &floatformat_bfloat16_little
+};
 
 /* Should opaque types be resolved?  */
 
@@ -181,7 +186,7 @@ alloc_type (struct objfile *objfile)
 
   /* Initialize the fields that might not be zero.  */
 
-  TYPE_CODE (type) = TYPE_CODE_UNDEF;
+  type->set_code (TYPE_CODE_UNDEF);
   TYPE_CHAIN (type) = type;	/* Chain back to itself.  */
 
   return type;
@@ -208,7 +213,7 @@ alloc_type_arch (struct gdbarch *gdbarch
 
   /* Initialize the fields that might not be zero.  */
 
-  TYPE_CODE (type) = TYPE_CODE_UNDEF;
+  type->set_code (TYPE_CODE_UNDEF);
   TYPE_CHAIN (type) = type;	/* Chain back to itself.  */
 
   return type;
@@ -236,7 +241,7 @@ get_type_arch (const struct type *type)
   struct gdbarch *arch;
 
   if (TYPE_OBJFILE_OWNED (type))
-    arch = get_objfile_arch (TYPE_OWNER (type).objfile);
+    arch = TYPE_OWNER (type).objfile->arch ();
   else
     arch = TYPE_OWNER (type).gdbarch;
 
@@ -365,7 +370,7 @@ make_pointer_type (struct type *type, st
 
   TYPE_LENGTH (ntype)
     = gdbarch_ptr_bit (get_type_arch (type)) / TARGET_CHAR_BIT;
-  TYPE_CODE (ntype) = TYPE_CODE_PTR;
+  ntype->set_code (TYPE_CODE_PTR);
 
   /* Mark pointers as unsigned.  The target converts between pointers
      and addresses (CORE_ADDRs) using gdbarch_pointer_to_address and
@@ -449,7 +454,7 @@ make_reference_type (struct type *type,
 
   TYPE_LENGTH (ntype) =
     gdbarch_ptr_bit (get_type_arch (type)) / TARGET_CHAR_BIT;
-  TYPE_CODE (ntype) = refcode;
+  ntype->set_code (refcode);
 
   *reftype = ntype;
 
@@ -514,7 +519,7 @@ make_function_type (struct type *type, s
   TYPE_TARGET_TYPE (ntype) = type;
 
   TYPE_LENGTH (ntype) = 1;
-  TYPE_CODE (ntype) = TYPE_CODE_FUNC;
+  ntype->set_code (TYPE_CODE_FUNC);
 
   INIT_FUNC_SPECIFIC (ntype);
 
@@ -549,7 +554,7 @@ lookup_function_type_with_arguments (str
 	  --nparams;
 	  TYPE_VARARGS (fn) = 1;
 	}
-      else if (TYPE_CODE (check_typedef (param_types[nparams - 1]))
+      else if (check_typedef (param_types[nparams - 1])->code ()
 	       == TYPE_CODE_VOID)
 	{
 	  --nparams;
@@ -561,11 +566,11 @@ lookup_function_type_with_arguments (str
 	TYPE_PROTOTYPED (fn) = 1;
     }
 
-  TYPE_NFIELDS (fn) = nparams;
-  TYPE_FIELDS (fn)
-    = (struct field *) TYPE_ZALLOC (fn, nparams * sizeof (struct field));
+  fn->set_num_fields (nparams);
+  fn->set_fields
+    ((struct field *) TYPE_ZALLOC (fn, nparams * sizeof (struct field)));
   for (i = 0; i < nparams; ++i)
-    TYPE_FIELD_TYPE (fn, i) = param_types[i];
+    fn->field (i).set_type (param_types[i]);
 
   return fn;
 }
@@ -860,7 +865,7 @@ allocate_stub_method (struct type *type)
   struct type *mtype;
 
   mtype = alloc_type_copy (type);
-  TYPE_CODE (mtype) = TYPE_CODE_METHOD;
+  mtype->set_code (TYPE_CODE_METHOD);
   TYPE_LENGTH (mtype) = 1;
   TYPE_STUB (mtype) = 1;
   TYPE_TARGET_TYPE (mtype) = type;
@@ -873,19 +878,23 @@ allocate_stub_method (struct type *type)
 bool
 operator== (const dynamic_prop &l, const dynamic_prop &r)
 {
-  if (l.kind != r.kind)
+  if (l.kind () != r.kind ())
     return false;
 
-  switch (l.kind)
+  switch (l.kind ())
     {
     case PROP_UNDEFINED:
       return true;
     case PROP_CONST:
-      return l.data.const_val == r.data.const_val;
+      return l.const_val () == r.const_val ();
     case PROP_ADDR_OFFSET:
     case PROP_LOCEXPR:
     case PROP_LOCLIST:
-      return l.data.baton == r.data.baton;
+      return l.baton () == r.baton ();
+    case PROP_VARIANT_PARTS:
+      return l.variant_parts () == r.variant_parts ();
+    case PROP_TYPE:
+      return l.original_type () == r.original_type ();
     }
 
   gdb_assert_not_reached ("unhandled dynamic_prop kind");
@@ -918,36 +927,35 @@ create_range_type (struct type *result_t
 {
   /* The INDEX_TYPE should be a type capable of holding the upper and lower
      bounds, as such a zero sized, or void type makes no sense.  */
-  gdb_assert (TYPE_CODE (index_type) != TYPE_CODE_VOID);
+  gdb_assert (index_type->code () != TYPE_CODE_VOID);
   gdb_assert (TYPE_LENGTH (index_type) > 0);
 
   if (result_type == NULL)
     result_type = alloc_type_copy (index_type);
-  TYPE_CODE (result_type) = TYPE_CODE_RANGE;
+  result_type->set_code (TYPE_CODE_RANGE);
   TYPE_TARGET_TYPE (result_type) = index_type;
   if (TYPE_STUB (index_type))
     TYPE_TARGET_STUB (result_type) = 1;
   else
     TYPE_LENGTH (result_type) = TYPE_LENGTH (check_typedef (index_type));
 
-  TYPE_RANGE_DATA (result_type) = (struct range_bounds *)
-    TYPE_ZALLOC (result_type, sizeof (struct range_bounds));
-  TYPE_RANGE_DATA (result_type)->low = *low_bound;
-  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;
+  range_bounds *bounds
+    = (struct range_bounds *) TYPE_ZALLOC (result_type, sizeof (range_bounds));
+  bounds->low = *low_bound;
+  bounds->high = *high_bound;
+  bounds->bias = bias;
+  bounds->stride.set_const_val (0);
+
+  result_type->set_bounds (bounds);
 
-  if (low_bound->kind == PROP_CONST && low_bound->data.const_val >= 0)
+  if (low_bound->kind () == PROP_CONST && low_bound->const_val () >= 0)
     TYPE_UNSIGNED (result_type) = 1;
 
   /* Ada allows the declaration of range types whose upper bound is
      less than the lower bound, so checking the lower bound is not
      enough.  Make sure we do not mark a range type whose upper bound
      is negative as unsigned.  */
-  if (high_bound->kind == PROP_CONST && high_bound->data.const_val < 0)
+  if (high_bound->kind () == PROP_CONST && high_bound->const_val () < 0)
     TYPE_UNSIGNED (result_type) = 0;
 
   TYPE_ENDIANITY_NOT_DEFAULT (result_type)
@@ -971,8 +979,8 @@ create_range_type_with_stride (struct ty
 				   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;
+  result_type->bounds ()->stride = *stride;
+  result_type->bounds ()->flag_is_byte_stride = byte_stride_p;
 
   return result_type;
 }
@@ -995,11 +1003,8 @@ create_static_range_type (struct type *r
 {
   struct dynamic_prop low, high;
 
-  low.kind = PROP_CONST;
-  low.data.const_val = low_bound;
-
-  high.kind = PROP_CONST;
-  high.data.const_val = high_bound;
+  low.set_const_val (low_bound);
+  high.set_const_val (high_bound);
 
   result_type = create_range_type (result_type, index_type, &low, &high, 0);
 
@@ -1014,114 +1019,195 @@ has_static_range (const struct range_bou
 {
   /* 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->stride.kind == PROP_CONST);
+  return (bounds->low.kind () == PROP_CONST
+	  && bounds->high.kind () == PROP_CONST
+	  && bounds->stride.kind () == PROP_CONST);
 }
 
+/* See gdbtypes.h.  */
 
-/* Set *LOWP and *HIGHP to the lower and upper bounds of discrete type
-   TYPE.  Return 1 if type is a range type, 0 if it is discrete (and
-   bounds will fit in LONGEST), or -1 otherwise.  */
-
-int
-get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp)
+gdb::optional<LONGEST>
+get_discrete_low_bound (struct type *type)
 {
   type = check_typedef (type);
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_RANGE:
-      *lowp = TYPE_LOW_BOUND (type);
-      *highp = TYPE_HIGH_BOUND (type);
-      return 1;
+      {
+	/* This function only works for ranges with a constant low bound.  */
+	if (type->bounds ()->low.kind () != PROP_CONST)
+	  return {};
+
+	LONGEST low = type->bounds ()->low.const_val ();
+
+	if (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_ENUM)
+	  {
+	    gdb::optional<LONGEST> low_pos
+	      = discrete_position (TYPE_TARGET_TYPE (type), low);
+
+	    if (low_pos.has_value ())
+	      low = *low_pos;
+	  }
+
+	return low;
+      }
+
     case TYPE_CODE_ENUM:
-      if (TYPE_NFIELDS (type) > 0)
-	{
-	  /* The enums may not be sorted by value, so search all
-	     entries.  */
-	  int i;
+      {
+	if (type->num_fields () > 0)
+	  {
+	    /* The enums may not be sorted by value, so search all
+	       entries.  */
+	    LONGEST low = TYPE_FIELD_ENUMVAL (type, 0);
 
-	  *lowp = *highp = TYPE_FIELD_ENUMVAL (type, 0);
-	  for (i = 0; i < TYPE_NFIELDS (type); i++)
-	    {
-	      if (TYPE_FIELD_ENUMVAL (type, i) < *lowp)
-		*lowp = TYPE_FIELD_ENUMVAL (type, i);
-	      if (TYPE_FIELD_ENUMVAL (type, i) > *highp)
-		*highp = TYPE_FIELD_ENUMVAL (type, i);
-	    }
+	    for (int i = 0; i < type->num_fields (); i++)
+	      {
+		if (TYPE_FIELD_ENUMVAL (type, i) < low)
+		  low = TYPE_FIELD_ENUMVAL (type, i);
+	      }
 
-	  /* Set unsigned indicator if warranted.  */
-	  if (*lowp >= 0)
-	    {
+	    /* Set unsigned indicator if warranted.  */
+	    if (low >= 0)
 	      TYPE_UNSIGNED (type) = 1;
-	    }
-	}
-      else
-	{
-	  *lowp = 0;
-	  *highp = -1;
-	}
-      return 0;
+
+	    return low;
+	  }
+	else
+	  return 0;
+      }
+
     case TYPE_CODE_BOOL:
-      *lowp = 0;
-      *highp = 1;
       return 0;
+
     case TYPE_CODE_INT:
       if (TYPE_LENGTH (type) > sizeof (LONGEST))	/* Too big */
-	return -1;
+	return {};
+
+      if (!TYPE_UNSIGNED (type))
+	return -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
+
+      /* fall through */
+    case TYPE_CODE_CHAR:
+      return 0;
+
+    default:
+      return {};
+    }
+}
+
+/* See gdbtypes.h.  */
+
+gdb::optional<LONGEST>
+get_discrete_high_bound (struct type *type)
+{
+  type = check_typedef (type);
+  switch (type->code ())
+    {
+    case TYPE_CODE_RANGE:
+      {
+	/* This function only works for ranges with a constant high bound.  */
+	if (type->bounds ()->high.kind () != PROP_CONST)
+	  return {};
+
+	LONGEST high = type->bounds ()->high.const_val ();
+
+	if (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_ENUM)
+	  {
+	    gdb::optional<LONGEST> high_pos
+	      = discrete_position (TYPE_TARGET_TYPE (type), high);
+
+	    if (high_pos.has_value ())
+	      high = *high_pos;
+	  }
+
+	return high;
+      }
+
+    case TYPE_CODE_ENUM:
+      {
+	if (type->num_fields () > 0)
+	  {
+	    /* The enums may not be sorted by value, so search all
+	       entries.  */
+	    LONGEST high = TYPE_FIELD_ENUMVAL (type, 0);
+
+	    for (int i = 0; i < type->num_fields (); i++)
+	      {
+		if (TYPE_FIELD_ENUMVAL (type, i) > high)
+		  high = TYPE_FIELD_ENUMVAL (type, i);
+	      }
+
+	    return high;
+	  }
+	else
+	  return -1;
+      }
+
+    case TYPE_CODE_BOOL:
+      return 1;
+
+    case TYPE_CODE_INT:
+      if (TYPE_LENGTH (type) > sizeof (LONGEST))	/* Too big */
+	return {};
+
       if (!TYPE_UNSIGNED (type))
 	{
-	  *lowp = -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
-	  *highp = -*lowp - 1;
-	  return 0;
+	  LONGEST low = -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
+	  return -low - 1;
 	}
+
       /* fall through */
     case TYPE_CODE_CHAR:
-      *lowp = 0;
-      /* This round-about calculation is to avoid shifting by
-         TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
-         if TYPE_LENGTH (type) == sizeof (LONGEST).  */
-      *highp = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1);
-      *highp = (*highp - 1) | *highp;
-      return 0;
+      {
+	/* This round-about calculation is to avoid shifting by
+	   TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
+	   if TYPE_LENGTH (type) == sizeof (LONGEST).  */
+	LONGEST high = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1);
+	return (high - 1) | high;
+      }
+
     default:
-      return -1;
+      return {};
     }
 }
 
+/* See gdbtypes.h.  */
+
+bool
+get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp)
+{
+  gdb::optional<LONGEST> low = get_discrete_low_bound (type);
+  if (!low.has_value ())
+    return false;
+
+  gdb::optional<LONGEST> high = get_discrete_high_bound (type);
+  if (!high.has_value ())
+    return false;
+
+  *lowp = *low;
+  *highp = *high;
+
+  return true;
+}
+
 /* Assuming TYPE is a simple, non-empty array type, compute its upper
    and lower bound.  Save the low bound into LOW_BOUND if not NULL.
    Save the high bound into HIGH_BOUND if not NULL.
 
    Return 1 if the operation was successful.  Return zero otherwise,
-   in which case the values of LOW_BOUND and HIGH_BOUNDS are unmodified.
-
-   We now simply use get_discrete_bounds call to get the values
-   of the low and high bounds.
-   get_discrete_bounds can return three values:
-   1, meaning that index is a range,
-   0, meaning that index is a discrete type,
-   or -1 for failure.  */
+   in which case the values of LOW_BOUND and HIGH_BOUNDS are unmodified.  */
 
 int
 get_array_bounds (struct type *type, LONGEST *low_bound, LONGEST *high_bound)
 {
-  struct type *index = TYPE_INDEX_TYPE (type);
+  struct type *index = type->index_type ();
   LONGEST low = 0;
   LONGEST high = 0;
-  int res;
 
   if (index == NULL)
     return 0;
 
-  res = get_discrete_bounds (index, &low, &high);
-  if (res == -1)
-    return 0;
-
-  /* Check if the array bounds are undefined.  */
-  if (res == 1
-      && ((low_bound && TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED (type))
-	  || (high_bound && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))))
+  if (!get_discrete_bounds (index, &low, &high))
     return 0;
 
   if (low_bound)
@@ -1147,29 +1233,85 @@ get_array_bounds (struct type *type, LON
    in which case the value of POS is unmodified.
 */
 
-int
-discrete_position (struct type *type, LONGEST val, LONGEST *pos)
+gdb::optional<LONGEST>
+discrete_position (struct type *type, LONGEST val)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_ENUM)
+  if (type->code () == TYPE_CODE_RANGE)
+    type = TYPE_TARGET_TYPE (type);
+
+  if (type->code () == TYPE_CODE_ENUM)
     {
       int i;
 
-      for (i = 0; i < TYPE_NFIELDS (type); i += 1)
+      for (i = 0; i < type->num_fields (); i += 1)
         {
           if (val == TYPE_FIELD_ENUMVAL (type, i))
-	    {
-	      *pos = i;
-	      return 1;
-	    }
+	    return i;
         }
       /* Invalid enumeration value.  */
-      return 0;
+      return {};
     }
   else
+    return val;
+}
+
+/* If the array TYPE has static bounds calculate and update its
+   size, then return true.  Otherwise return false and leave TYPE
+   unchanged.  */
+
+static bool
+update_static_array_size (struct type *type)
+{
+  gdb_assert (type->code () == TYPE_CODE_ARRAY);
+
+  struct type *range_type = type->index_type ();
+
+  if (type->dyn_prop (DYN_PROP_BYTE_STRIDE) == nullptr
+      && has_static_range (range_type->bounds ())
+      && (!type_not_associated (type)
+	  && !type_not_allocated (type)))
     {
-      *pos = val;
-      return 1;
+      LONGEST low_bound, high_bound;
+      int stride;
+      struct type *element_type;
+
+      /* 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 = TYPE_FIELD_BITSIZE (type, 0);
+      if (stride == 0)
+	stride = range_type->bit_stride ();
+
+      if (!get_discrete_bounds (range_type, &low_bound, &high_bound))
+	low_bound = high_bound = 0;
+
+      element_type = check_typedef (TYPE_TARGET_TYPE (type));
+      /* Be careful when setting the array length.  Ada arrays can be
+	 empty arrays with the high_bound being smaller than the low_bound.
+	 In such cases, the array length should be zero.  */
+      if (high_bound < low_bound)
+	TYPE_LENGTH (type) = 0;
+      else if (stride != 0)
+	{
+	  /* Ensure that the type length is always positive, even in the
+	     case where (for example in Fortran) we have a negative
+	     stride.  It is possible to have a single element array with a
+	     negative stride in Fortran (this doesn't mean anything
+	     special, it's still just a single element array) so do
+	     consider that case when touching this code.  */
+	  LONGEST element_count = std::abs (high_bound - low_bound + 1);
+	  TYPE_LENGTH (type)
+	    = ((std::abs (stride) * element_count) + 7) / 8;
+	}
+      else
+	TYPE_LENGTH (type) =
+	  TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
+
+      return true;
     }
+
+  return false;
 }
 
 /* Create an array type using either a blank type supplied in
@@ -1202,53 +1344,32 @@ create_array_type_with_stride (struct ty
 			       unsigned int bit_stride)
 {
   if (byte_stride_prop != NULL
-      && byte_stride_prop->kind == PROP_CONST)
+      && byte_stride_prop->kind () == PROP_CONST)
     {
       /* The byte stride is actually not dynamic.  Pretend we were
 	 called with bit_stride set instead of byte_stride_prop.
 	 This will give us the same result type, while avoiding
 	 the need to handle this as a special case.  */
-      bit_stride = byte_stride_prop->data.const_val * 8;
+      bit_stride = byte_stride_prop->const_val () * 8;
       byte_stride_prop = NULL;
     }
 
   if (result_type == NULL)
     result_type = alloc_type_copy (range_type);
 
-  TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
+  result_type->set_code (TYPE_CODE_ARRAY);
   TYPE_TARGET_TYPE (result_type) = element_type;
-  if (byte_stride_prop == NULL
-      && has_static_range (TYPE_RANGE_DATA (range_type))
-      && (!type_not_associated (result_type)
-	  && !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);
+  result_type->set_num_fields (1);
+  result_type->set_fields
+    ((struct field *) TYPE_ZALLOC (result_type, sizeof (struct field)));
+  result_type->set_index_type (range_type);
+  if (byte_stride_prop != NULL)
+    result_type->add_dyn_prop (DYN_PROP_BYTE_STRIDE, *byte_stride_prop);
+  else if (bit_stride > 0)
+    TYPE_FIELD_BITSIZE (result_type, 0) = bit_stride;
 
-      if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
-	low_bound = high_bound = 0;
-      element_type = check_typedef (element_type);
-      /* Be careful when setting the array length.  Ada arrays can be
-	 empty arrays with the high_bound being smaller than the low_bound.
-	 In such cases, the array length should be zero.  */
-      if (high_bound < low_bound)
-	TYPE_LENGTH (result_type) = 0;
-      else if (stride > 0)
-	TYPE_LENGTH (result_type) =
-	  (stride * (high_bound - low_bound + 1) + 7) / 8;
-      else
-	TYPE_LENGTH (result_type) =
-	  TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
-    }
-  else
+  if (!update_static_array_size (result_type))
     {
       /* This type is dynamic and its length needs to be computed
          on demand.  In the meantime, avoid leaving the TYPE_LENGTH
@@ -1259,15 +1380,6 @@ create_array_type_with_stride (struct ty
       TYPE_LENGTH (result_type) = 0;
     }
 
-  TYPE_NFIELDS (result_type) = 1;
-  TYPE_FIELDS (result_type) =
-    (struct field *) TYPE_ZALLOC (result_type, sizeof (struct field));
-  TYPE_INDEX_TYPE (result_type) = range_type;
-  if (byte_stride_prop != NULL)
-    add_dyn_prop (DYN_PROP_BYTE_STRIDE, *byte_stride_prop, result_type);
-  else if (bit_stride > 0)
-    TYPE_FIELD_BITSIZE (result_type, 0) = bit_stride;
-
   /* TYPE_TARGET_STUB will take care of zero length arrays.  */
   if (TYPE_LENGTH (result_type) == 0)
     TYPE_TARGET_STUB (result_type) = 1;
@@ -1324,7 +1436,7 @@ create_string_type (struct type *result_
   result_type = create_array_type (result_type,
 				   string_char_type,
 				   range_type);
-  TYPE_CODE (result_type) = TYPE_CODE_STRING;
+  result_type->set_code (TYPE_CODE_STRING);
   return result_type;
 }
 
@@ -1336,7 +1448,7 @@ lookup_string_range_type (struct type *s
 
   result_type = lookup_array_range_type (string_char_type,
 					 low_bound, high_bound);
-  TYPE_CODE (result_type) = TYPE_CODE_STRING;
+  result_type->set_code (TYPE_CODE_STRING);
   return result_type;
 }
 
@@ -1346,24 +1458,25 @@ create_set_type (struct type *result_typ
   if (result_type == NULL)
     result_type = alloc_type_copy (domain_type);
 
-  TYPE_CODE (result_type) = TYPE_CODE_SET;
-  TYPE_NFIELDS (result_type) = 1;
-  TYPE_FIELDS (result_type)
-    = (struct field *) TYPE_ZALLOC (result_type, sizeof (struct field));
+  result_type->set_code (TYPE_CODE_SET);
+  result_type->set_num_fields (1);
+  result_type->set_fields
+    ((struct field *) TYPE_ZALLOC (result_type, sizeof (struct field)));
 
   if (!TYPE_STUB (domain_type))
     {
       LONGEST low_bound, high_bound, bit_length;
 
-      if (get_discrete_bounds (domain_type, &low_bound, &high_bound) < 0)
+      if (!get_discrete_bounds (domain_type, &low_bound, &high_bound))
 	low_bound = high_bound = 0;
+
       bit_length = high_bound - low_bound + 1;
       TYPE_LENGTH (result_type)
 	= (bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
       if (low_bound >= 0)
 	TYPE_UNSIGNED (result_type) = 1;
     }
-  TYPE_FIELD_TYPE (result_type, 0) = domain_type;
+  result_type->field (0).set_type (domain_type);
 
   return result_type;
 }
@@ -1380,11 +1493,11 @@ make_vector_type (struct type *array_typ
   /* Find the innermost array type, in case the array is
      multi-dimensional.  */
   inner_array = array_type;
-  while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
+  while (TYPE_TARGET_TYPE (inner_array)->code () == TYPE_CODE_ARRAY)
     inner_array = TYPE_TARGET_TYPE (inner_array);
 
   elt_type = TYPE_TARGET_TYPE (inner_array);
-  if (TYPE_CODE (elt_type) == TYPE_CODE_INT)
+  if (elt_type->code () == TYPE_CODE_INT)
     {
       flags = TYPE_INSTANCE_FLAGS (elt_type) | TYPE_INSTANCE_FLAG_NOTTEXT;
       elt_type = make_qualified_type (elt_type, flags, NULL);
@@ -1413,7 +1526,7 @@ init_vector_type (struct type *elt_type,
 struct type *
 internal_type_self_type (struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_METHODPTR:
     case TYPE_CODE_MEMBERPTR:
@@ -1439,7 +1552,7 @@ internal_type_self_type (struct type *ty
 void
 set_type_self_type (struct type *type, struct type *self_type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_METHODPTR:
     case TYPE_CODE_MEMBERPTR:
@@ -1475,7 +1588,7 @@ smash_to_memberptr_type (struct type *ty
 			 struct type *to_type)
 {
   smash_type (type);
-  TYPE_CODE (type) = TYPE_CODE_MEMBERPTR;
+  type->set_code (TYPE_CODE_MEMBERPTR);
   TYPE_TARGET_TYPE (type) = to_type;
   set_type_self_type (type, self_type);
   /* Assume that a data member pointer is the same size as a normal
@@ -1494,7 +1607,7 @@ void
 smash_to_methodptr_type (struct type *type, struct type *to_type)
 {
   smash_type (type);
-  TYPE_CODE (type) = TYPE_CODE_METHODPTR;
+  type->set_code (TYPE_CODE_METHODPTR);
   TYPE_TARGET_TYPE (type) = to_type;
   set_type_self_type (type, TYPE_SELF_TYPE (to_type));
   TYPE_LENGTH (type) = cplus_method_ptr_size (to_type);
@@ -1513,11 +1626,11 @@ smash_to_method_type (struct type *type,
 		      int nargs, int varargs)
 {
   smash_type (type);
-  TYPE_CODE (type) = TYPE_CODE_METHOD;
+  type->set_code (TYPE_CODE_METHOD);
   TYPE_TARGET_TYPE (type) = to_type;
   set_type_self_type (type, self_type);
-  TYPE_FIELDS (type) = args;
-  TYPE_NFIELDS (type) = nargs;
+  type->set_fields (args);
+  type->set_num_fields (nargs);
   if (varargs)
     TYPE_VARARGS (type) = 1;
   TYPE_LENGTH (type) = 1;	/* In practice, this is never needed.  */
@@ -1539,11 +1652,11 @@ type_name_or_error (struct type *type)
 
   type = check_typedef (type);
 
-  name = TYPE_NAME (type);
+  name = type->name ();
   if (name != NULL)
     return name;
 
-  name = TYPE_NAME (saved_type);
+  name = saved_type->name ();
   objfile = TYPE_OBJFILE (saved_type);
   error (_("Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"),
 	 name ? name : "<anonymous>",
@@ -1611,7 +1724,7 @@ lookup_struct (const char *name, const s
     {
       error (_("No struct type named %s."), name);
     }
-  if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
+  if (SYMBOL_TYPE (sym)->code () != TYPE_CODE_STRUCT)
     {
       error (_("This context has class, union or enum %s, not a struct."),
 	     name);
@@ -1635,7 +1748,7 @@ lookup_union (const char *name, const st
 
   t = SYMBOL_TYPE (sym);
 
-  if (TYPE_CODE (t) == TYPE_CODE_UNION)
+  if (t->code () == TYPE_CODE_UNION)
     return t;
 
   /* If we get here, it's not a union.  */
@@ -1656,7 +1769,7 @@ lookup_enum (const char *name, const str
     {
       error (_("No enum type named %s."), name);
     }
-  if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_ENUM)
+  if (SYMBOL_TYPE (sym)->code () != TYPE_CODE_ENUM)
     {
       error (_("This context has class, struct or union %s, not an enum."), 
 	     name);
@@ -1673,11 +1786,11 @@ lookup_template_type (const char *name,
 {
   struct symbol *sym;
   char *nam = (char *) 
-    alloca (strlen (name) + strlen (TYPE_NAME (type)) + 4);
+    alloca (strlen (name) + strlen (type->name ()) + 4);
 
   strcpy (nam, name);
   strcat (nam, "<");
-  strcat (nam, TYPE_NAME (type));
+  strcat (nam, type->name ());
   strcat (nam, " >");	/* FIXME, extra space still introduced in gcc?  */
 
   sym = lookup_symbol (nam, block, VAR_DOMAIN, 0).symbol;
@@ -1686,7 +1799,7 @@ lookup_template_type (const char *name,
     {
       error (_("No template type named %s."), name);
     }
-  if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
+  if (SYMBOL_TYPE (sym)->code () != TYPE_CODE_STRUCT)
     {
       error (_("This context has class, union or enum %s, not a struct."),
 	     name);
@@ -1704,32 +1817,32 @@ lookup_struct_elt (struct type *type, co
   for (;;)
     {
       type = check_typedef (type);
-      if (TYPE_CODE (type) != TYPE_CODE_PTR
-	  && TYPE_CODE (type) != TYPE_CODE_REF)
+      if (type->code () != TYPE_CODE_PTR
+	  && type->code () != TYPE_CODE_REF)
 	break;
       type = TYPE_TARGET_TYPE (type);
     }
 
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT 
-      && TYPE_CODE (type) != TYPE_CODE_UNION)
+  if (type->code () != TYPE_CODE_STRUCT
+      && type->code () != TYPE_CODE_UNION)
     {
       std::string type_name = type_to_string (type);
       error (_("Type %s is not a structure or union type."),
 	     type_name.c_str ());
     }
 
-  for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
+  for (i = type->num_fields () - 1; i >= TYPE_N_BASECLASSES (type); i--)
     {
       const char *t_field_name = TYPE_FIELD_NAME (type, i);
 
       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
 	{
-	  return {&TYPE_FIELD (type, i), TYPE_FIELD_BITPOS (type, i)};
+	  return {&type->field (i), TYPE_FIELD_BITPOS (type, i)};
 	}
      else if (!t_field_name || *t_field_name == '\0')
 	{
 	  struct_elt elt
-	    = lookup_struct_elt (TYPE_FIELD_TYPE (type, i), name, 1);
+	    = lookup_struct_elt (type->field (i).type (), name, 1);
 	  if (elt.field != NULL)
 	    {
 	      elt.offset += TYPE_FIELD_BITPOS (type, i);
@@ -1760,7 +1873,7 @@ lookup_struct_elt_type (struct type *typ
 {
   struct_elt elt = lookup_struct_elt (type, name, noerr);
   if (elt.field != NULL)
-    return FIELD_TYPE (*elt.field);
+    return elt.field->type ();
   else
     return NULL;
 }
@@ -1774,7 +1887,7 @@ get_unsigned_type_max (struct type *type
   unsigned int n;
 
   type = check_typedef (type);
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_INT && TYPE_UNSIGNED (type));
+  gdb_assert (type->code () == TYPE_CODE_INT && TYPE_UNSIGNED (type));
   gdb_assert (TYPE_LENGTH (type) <= sizeof (ULONGEST));
 
   /* Written this way to avoid overflow.  */
@@ -1791,7 +1904,7 @@ get_signed_type_minmax (struct type *typ
   unsigned int n;
 
   type = check_typedef (type);
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_INT && !TYPE_UNSIGNED (type));
+  gdb_assert (type->code () == TYPE_CODE_INT && !TYPE_UNSIGNED (type));
   gdb_assert (TYPE_LENGTH (type) <= sizeof (LONGEST));
 
   n = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
@@ -1810,8 +1923,8 @@ int
 internal_type_vptr_fieldno (struct type *type)
 {
   type = check_typedef (type);
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (type) == TYPE_CODE_UNION);
+  gdb_assert (type->code () == TYPE_CODE_STRUCT
+	      || type->code () == TYPE_CODE_UNION);
   if (!HAVE_CPLUS_STRUCT (type))
     return -1;
   return TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_fieldno;
@@ -1823,8 +1936,8 @@ void
 set_type_vptr_fieldno (struct type *type, int fieldno)
 {
   type = check_typedef (type);
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (type) == TYPE_CODE_UNION);
+  gdb_assert (type->code () == TYPE_CODE_STRUCT
+	      || type->code () == TYPE_CODE_UNION);
   if (!HAVE_CPLUS_STRUCT (type))
     ALLOCATE_CPLUS_STRUCT_TYPE (type);
   TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_fieldno = fieldno;
@@ -1837,8 +1950,8 @@ struct type *
 internal_type_vptr_basetype (struct type *type)
 {
   type = check_typedef (type);
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (type) == TYPE_CODE_UNION);
+  gdb_assert (type->code () == TYPE_CODE_STRUCT
+	      || type->code () == TYPE_CODE_UNION);
   gdb_assert (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_CPLUS_STUFF);
   return TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_basetype;
 }
@@ -1849,8 +1962,8 @@ void
 set_type_vptr_basetype (struct type *type, struct type *basetype)
 {
   type = check_typedef (type);
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (type) == TYPE_CODE_UNION);
+  gdb_assert (type->code () == TYPE_CODE_STRUCT
+	      || type->code () == TYPE_CODE_UNION);
   if (!HAVE_CPLUS_STRUCT (type))
     ALLOCATE_CPLUS_STRUCT_TYPE (type);
   TYPE_RAW_CPLUS_SPECIFIC (type)->vptr_basetype = basetype;
@@ -1924,9 +2037,9 @@ stub_noname_complaint (void)
 static int
 array_type_has_dynamic_stride (struct type *type)
 {
-  struct dynamic_prop *prop = get_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
+  struct dynamic_prop *prop = type->dyn_prop (DYN_PROP_BYTE_STRIDE);
 
-  return (prop != NULL && prop->kind != PROP_CONST);
+  return (prop != NULL && prop->kind () != PROP_CONST);
 }
 
 /* Worker for is_dynamic_type.  */
@@ -1937,7 +2050,7 @@ is_dynamic_type_internal (struct type *t
   type = check_typedef (type);
 
   /* We only want to recognize references at the outermost level.  */
-  if (top_level && TYPE_CODE (type) == TYPE_CODE_REF)
+  if (top_level && type->code () == TYPE_CODE_REF)
     type = check_typedef (TYPE_TARGET_TYPE (type));
 
   /* Types that have a dynamic TYPE_DATA_LOCATION are considered
@@ -1957,7 +2070,14 @@ is_dynamic_type_internal (struct type *t
   if (TYPE_ALLOCATED_PROP (type))
     return 1;
 
-  switch (TYPE_CODE (type))
+  struct dynamic_prop *prop = type->dyn_prop (DYN_PROP_VARIANT_PARTS);
+  if (prop != nullptr && prop->kind () != PROP_TYPE)
+    return 1;
+
+  if (TYPE_HAS_DYNAMIC_LENGTH (type))
+    return 1;
+
+  switch (type->code ())
     {
     case TYPE_CODE_RANGE:
       {
@@ -1966,7 +2086,7 @@ is_dynamic_type_internal (struct type *t
 	   dynamic when its subtype is dynamic, even if the bounds
 	   of the range type are static.  It allows us to assume that
 	   the subtype of a static range type is also static.  */
-	return (!has_static_range (TYPE_RANGE_DATA (type))
+	return (!has_static_range (type->bounds ())
 		|| is_dynamic_type_internal (TYPE_TARGET_TYPE (type), 0));
       }
 
@@ -1975,10 +2095,10 @@ is_dynamic_type_internal (struct type *t
 	 treated as one here.  */
     case TYPE_CODE_ARRAY:
       {
-	gdb_assert (TYPE_NFIELDS (type) == 1);
+	gdb_assert (type->num_fields () == 1);
 
 	/* The array is dynamic if either the bounds are dynamic...  */
-	if (is_dynamic_type_internal (TYPE_INDEX_TYPE (type), 0))
+	if (is_dynamic_type_internal (type->index_type (), 0))
 	  return 1;
 	/* ... or the elements it contains have a dynamic contents...  */
 	if (is_dynamic_type_internal (TYPE_TARGET_TYPE (type), 0))
@@ -1994,10 +2114,27 @@ is_dynamic_type_internal (struct type *t
       {
 	int i;
 
-	for (i = 0; i < TYPE_NFIELDS (type); ++i)
-	  if (!field_is_static (&TYPE_FIELD (type, i))
-	      && is_dynamic_type_internal (TYPE_FIELD_TYPE (type, i), 0))
+	bool is_cplus = HAVE_CPLUS_STRUCT (type);
+
+	for (i = 0; i < type->num_fields (); ++i)
+	  {
+	    /* Static fields can be ignored here.  */
+	    if (field_is_static (&type->field (i)))
+	      continue;
+	    /* If the field has dynamic type, then so does TYPE.  */
+	    if (is_dynamic_type_internal (type->field (i).type (), 0))
+	      return 1;
+	    /* If the field is at a fixed offset, then it is not
+	       dynamic.  */
+	    if (TYPE_FIELD_LOC_KIND (type, i) != FIELD_LOC_KIND_DWARF_BLOCK)
+	      continue;
+	    /* Do not consider C++ virtual base types to be dynamic
+	       due to the field's offset being dynamic; these are
+	       handled via other means.  */
+	    if (is_cplus && BASETYPE_VIA_VIRTUAL (type, i))
+	      continue;
 	    return 1;
+	  }
       }
       break;
     }
@@ -2026,45 +2163,33 @@ 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, stride;
 
-  gdb_assert (TYPE_CODE (dyn_range_type) == TYPE_CODE_RANGE);
+  gdb_assert (dyn_range_type->code () == TYPE_CODE_RANGE);
 
-  prop = &TYPE_RANGE_DATA (dyn_range_type)->low;
+  const struct dynamic_prop *prop = &dyn_range_type->bounds ()->low;
   if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
-    {
-      low_bound.kind = PROP_CONST;
-      low_bound.data.const_val = value;
-    }
+    low_bound.set_const_val (value);
   else
-    {
-      low_bound.kind = PROP_UNDEFINED;
-      low_bound.data.const_val = 0;
-    }
+    low_bound.set_undefined ();
 
-  prop = &TYPE_RANGE_DATA (dyn_range_type)->high;
+  prop = &dyn_range_type->bounds ()->high;
   if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
     {
-      high_bound.kind = PROP_CONST;
-      high_bound.data.const_val = value;
+      high_bound.set_const_val (value);
 
-      if (TYPE_RANGE_DATA (dyn_range_type)->flag_upper_bound_is_count)
-	high_bound.data.const_val
-	  = low_bound.data.const_val + high_bound.data.const_val - 1;
+      if (dyn_range_type->bounds ()->flag_upper_bound_is_count)
+	high_bound.set_const_val
+	  (low_bound.const_val () + high_bound.const_val () - 1);
     }
   else
-    {
-      high_bound.kind = PROP_UNDEFINED;
-      high_bound.data.const_val = 0;
-    }
+    high_bound.set_undefined ();
 
-  bool byte_stride_p = TYPE_RANGE_DATA (dyn_range_type)->flag_is_byte_stride;
-  prop = &TYPE_RANGE_DATA (dyn_range_type)->stride;
+  bool byte_stride_p = dyn_range_type->bounds ()->flag_is_byte_stride;
+  prop = &dyn_range_type->bounds ()->stride;
   if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
     {
-      stride.kind = PROP_CONST;
-      stride.data.const_val = value;
+      stride.set_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
@@ -2078,19 +2203,18 @@ resolve_dynamic_range (struct type *dyn_
     }
   else
     {
-      stride.kind = PROP_UNDEFINED;
-      stride.data.const_val = 0;
+      stride.set_undefined ();
       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;
+  LONGEST bias = dyn_range_type->bounds ()->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;
+  static_range_type->bounds ()->flag_bound_evaluated = 1;
   return static_range_type;
 }
 
@@ -2111,43 +2235,38 @@ resolve_dynamic_array_or_string (struct
 
   /* 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);
+  gdb_assert (type->code () == TYPE_CODE_ARRAY
+	      || type->code () == TYPE_CODE_STRING);
 
   type = copy_type (type);
 
   elt_type = type;
-  range_type = check_typedef (TYPE_INDEX_TYPE (elt_type));
+  range_type = check_typedef (elt_type->index_type ());
   range_type = resolve_dynamic_range (range_type, addr_stack);
 
   /* Resolve allocated/associated here before creating a new array type, which
      will update the length of the array accordingly.  */
   prop = TYPE_ALLOCATED_PROP (type);
   if (prop != NULL && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
-    {
-      TYPE_DYN_PROP_ADDR (prop) = value;
-      TYPE_DYN_PROP_KIND (prop) = PROP_CONST;
-    }
+    prop->set_const_val (value);
+
   prop = TYPE_ASSOCIATED_PROP (type);
   if (prop != NULL && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
-    {
-      TYPE_DYN_PROP_ADDR (prop) = value;
-      TYPE_DYN_PROP_KIND (prop) = PROP_CONST;
-    }
+    prop->set_const_val (value);
 
   ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type));
 
-  if (ary_dim != NULL && TYPE_CODE (ary_dim) == TYPE_CODE_ARRAY)
+  if (ary_dim != NULL && ary_dim->code () == TYPE_CODE_ARRAY)
     elt_type = resolve_dynamic_array_or_string (ary_dim, addr_stack);
   else
     elt_type = TYPE_TARGET_TYPE (type);
 
-  prop = get_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
+  prop = type->dyn_prop (DYN_PROP_BYTE_STRIDE);
   if (prop != NULL)
     {
       if (dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
 	{
-	  remove_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
+	  type->remove_dyn_prop (DYN_PROP_BYTE_STRIDE);
 	  bit_stride = (unsigned int) (value * 8);
 	}
       else
@@ -2156,7 +2275,7 @@ resolve_dynamic_array_or_string (struct
 	     if the DWARF info is not correct.  Issue a warning,
 	     and assume no byte/bit stride (leave bit_stride = 0).  */
 	  warning (_("cannot determine array stride for type %s"),
-		   TYPE_NAME (type) ? TYPE_NAME (type) : "<no name>");
+		   type->name () ? type->name () : "<no name>");
 	}
     }
   else
@@ -2178,34 +2297,193 @@ resolve_dynamic_union (struct type *type
   int i;
   unsigned int max_len = 0;
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
+  gdb_assert (type->code () == TYPE_CODE_UNION);
 
   resolved_type = copy_type (type);
-  TYPE_FIELDS (resolved_type)
-    = (struct field *) TYPE_ALLOC (resolved_type,
-				   TYPE_NFIELDS (resolved_type)
-				   * sizeof (struct field));
-  memcpy (TYPE_FIELDS (resolved_type),
-	  TYPE_FIELDS (type),
-	  TYPE_NFIELDS (resolved_type) * sizeof (struct field));
-  for (i = 0; i < TYPE_NFIELDS (resolved_type); ++i)
+  resolved_type->set_fields
+    ((struct field *)
+     TYPE_ALLOC (resolved_type,
+		 resolved_type->num_fields () * sizeof (struct field)));
+  memcpy (resolved_type->fields (),
+	  type->fields (),
+	  resolved_type->num_fields () * sizeof (struct field));
+  for (i = 0; i < resolved_type->num_fields (); ++i)
     {
       struct type *t;
 
-      if (field_is_static (&TYPE_FIELD (type, i)))
+      if (field_is_static (&type->field (i)))
 	continue;
 
-      t = resolve_dynamic_type_internal (TYPE_FIELD_TYPE (resolved_type, i),
+      t = resolve_dynamic_type_internal (resolved_type->field (i).type (),
 					 addr_stack, 0);
-      TYPE_FIELD_TYPE (resolved_type, i) = t;
-      if (TYPE_LENGTH (t) > max_len)
-	max_len = TYPE_LENGTH (t);
+      resolved_type->field (i).set_type (t);
+
+      struct type *real_type = check_typedef (t);
+      if (TYPE_LENGTH (real_type) > max_len)
+	max_len = TYPE_LENGTH (real_type);
     }
 
   TYPE_LENGTH (resolved_type) = max_len;
   return resolved_type;
 }
 
+/* See gdbtypes.h.  */
+
+bool
+variant::matches (ULONGEST value, bool is_unsigned) const
+{
+  for (const discriminant_range &range : discriminants)
+    if (range.contains (value, is_unsigned))
+      return true;
+  return false;
+}
+
+static void
+compute_variant_fields_inner (struct type *type,
+			      struct property_addr_info *addr_stack,
+			      const variant_part &part,
+			      std::vector<bool> &flags);
+
+/* A helper function to determine which variant fields will be active.
+   This handles both the variant's direct fields, and any variant
+   parts embedded in this variant.  TYPE is the type we're examining.
+   ADDR_STACK holds information about the concrete object.  VARIANT is
+   the current variant to be handled.  FLAGS is where the results are
+   stored -- this function sets the Nth element in FLAGS if the
+   corresponding field is enabled.  ENABLED is whether this variant is
+   enabled or not.  */
+
+static void
+compute_variant_fields_recurse (struct type *type,
+				struct property_addr_info *addr_stack,
+				const variant &variant,
+				std::vector<bool> &flags,
+				bool enabled)
+{
+  for (int field = variant.first_field; field < variant.last_field; ++field)
+    flags[field] = enabled;
+
+  for (const variant_part &new_part : variant.parts)
+    {
+      if (enabled)
+	compute_variant_fields_inner (type, addr_stack, new_part, flags);
+      else
+	{
+	  for (const auto &sub_variant : new_part.variants)
+	    compute_variant_fields_recurse (type, addr_stack, sub_variant,
+					    flags, enabled);
+	}
+    }
+}
+
+/* A helper function to determine which variant fields will be active.
+   This evaluates the discriminant, decides which variant (if any) is
+   active, and then updates FLAGS to reflect which fields should be
+   available.  TYPE is the type we're examining.  ADDR_STACK holds
+   information about the concrete object.  VARIANT is the current
+   variant to be handled.  FLAGS is where the results are stored --
+   this function sets the Nth element in FLAGS if the corresponding
+   field is enabled.  */
+
+static void
+compute_variant_fields_inner (struct type *type,
+			      struct property_addr_info *addr_stack,
+			      const variant_part &part,
+			      std::vector<bool> &flags)
+{
+  /* Evaluate the discriminant.  */
+  gdb::optional<ULONGEST> discr_value;
+  if (part.discriminant_index != -1)
+    {
+      int idx = part.discriminant_index;
+
+      if (TYPE_FIELD_LOC_KIND (type, idx) != FIELD_LOC_KIND_BITPOS)
+	error (_("Cannot determine struct field location"
+		 " (invalid location kind)"));
+
+      if (addr_stack->valaddr.data () != NULL)
+	discr_value = unpack_field_as_long (type, addr_stack->valaddr.data (),
+					    idx);
+      else
+	{
+	  CORE_ADDR addr = (addr_stack->addr
+			    + (TYPE_FIELD_BITPOS (type, idx)
+			       / TARGET_CHAR_BIT));
+
+	  LONGEST bitsize = TYPE_FIELD_BITSIZE (type, idx);
+	  LONGEST size = bitsize / 8;
+	  if (size == 0)
+	    size = TYPE_LENGTH (type->field (idx).type ());
+
+	  gdb_byte bits[sizeof (ULONGEST)];
+	  read_memory (addr, bits, size);
+
+	  LONGEST bitpos = (TYPE_FIELD_BITPOS (type, idx)
+			    % TARGET_CHAR_BIT);
+
+	  discr_value = unpack_bits_as_long (type->field (idx).type (),
+					     bits, bitpos, bitsize);
+	}
+    }
+
+  /* Go through each variant and see which applies.  */
+  const variant *default_variant = nullptr;
+  const variant *applied_variant = nullptr;
+  for (const auto &variant : part.variants)
+    {
+      if (variant.is_default ())
+	default_variant = &variant;
+      else if (discr_value.has_value ()
+	       && variant.matches (*discr_value, part.is_unsigned))
+	{
+	  applied_variant = &variant;
+	  break;
+	}
+    }
+  if (applied_variant == nullptr)
+    applied_variant = default_variant;
+
+  for (const auto &variant : part.variants)
+    compute_variant_fields_recurse (type, addr_stack, variant,
+				    flags, applied_variant == &variant);
+}  
+
+/* Determine which variant fields are available in TYPE.  The enabled
+   fields are stored in RESOLVED_TYPE.  ADDR_STACK holds information
+   about the concrete object.  PARTS describes the top-level variant
+   parts for this type.  */
+
+static void
+compute_variant_fields (struct type *type,
+			struct type *resolved_type,
+			struct property_addr_info *addr_stack,
+			const gdb::array_view<variant_part> &parts)
+{
+  /* Assume all fields are included by default.  */
+  std::vector<bool> flags (resolved_type->num_fields (), true);
+
+  /* Now disable fields based on the variants that control them.  */
+  for (const auto &part : parts)
+    compute_variant_fields_inner (type, addr_stack, part, flags);
+
+  resolved_type->set_num_fields
+    (std::count (flags.begin (), flags.end (), true));
+  resolved_type->set_fields
+    ((struct field *)
+     TYPE_ALLOC (resolved_type,
+		 resolved_type->num_fields () * sizeof (struct field)));
+
+  int out = 0;
+  for (int i = 0; i < type->num_fields (); ++i)
+    {
+      if (!flags[i])
+	continue;
+
+      resolved_type->field (out) = type->field (i);
+      ++out;
+    }
+}
+
 /* Resolve dynamic bounds of members of the struct TYPE to static
    bounds.  ADDR_STACK is a stack of struct property_addr_info to
    be used if needed during the dynamic resolution.  */
@@ -2218,25 +2496,56 @@ resolve_dynamic_struct (struct type *typ
   int i;
   unsigned resolved_type_bit_length = 0;
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT);
-  gdb_assert (TYPE_NFIELDS (type) > 0);
+  gdb_assert (type->code () == TYPE_CODE_STRUCT);
+  gdb_assert (type->num_fields () > 0);
 
   resolved_type = copy_type (type);
-  TYPE_FIELDS (resolved_type)
-    = (struct field *) TYPE_ALLOC (resolved_type,
-				   TYPE_NFIELDS (resolved_type)
-				   * sizeof (struct field));
-  memcpy (TYPE_FIELDS (resolved_type),
-	  TYPE_FIELDS (type),
-	  TYPE_NFIELDS (resolved_type) * sizeof (struct field));
-  for (i = 0; i < TYPE_NFIELDS (resolved_type); ++i)
+
+  dynamic_prop *variant_prop = resolved_type->dyn_prop (DYN_PROP_VARIANT_PARTS);
+  if (variant_prop != nullptr && variant_prop->kind () == PROP_VARIANT_PARTS)
+    {
+      compute_variant_fields (type, resolved_type, addr_stack,
+			      *variant_prop->variant_parts ());
+      /* We want to leave the property attached, so that the Rust code
+	 can tell whether the type was originally an enum.  */
+      variant_prop->set_original_type (type);
+    }
+  else
+    {
+      resolved_type->set_fields
+	((struct field *)
+	 TYPE_ALLOC (resolved_type,
+		     resolved_type->num_fields () * sizeof (struct field)));
+      memcpy (resolved_type->fields (),
+	      type->fields (),
+	      resolved_type->num_fields () * sizeof (struct field));
+    }
+
+  for (i = 0; i < resolved_type->num_fields (); ++i)
     {
       unsigned new_bit_length;
       struct property_addr_info pinfo;
 
-      if (field_is_static (&TYPE_FIELD (type, i)))
+      if (field_is_static (&resolved_type->field (i)))
 	continue;
 
+      if (TYPE_FIELD_LOC_KIND (resolved_type, i) == FIELD_LOC_KIND_DWARF_BLOCK)
+	{
+	  struct dwarf2_property_baton baton;
+	  baton.property_type
+	    = lookup_pointer_type (resolved_type->field (i).type ());
+	  baton.locexpr = *TYPE_FIELD_DWARF_BLOCK (resolved_type, i);
+
+	  struct dynamic_prop prop;
+	  prop.set_locexpr (&baton);
+
+	  CORE_ADDR addr;
+	  if (dwarf2_evaluate_property (&prop, nullptr, addr_stack, &addr,
+					true))
+	    SET_FIELD_BITPOS (resolved_type->field (i),
+			      TARGET_CHAR_BIT * (addr - addr_stack->addr));
+	}
+
       /* As we know this field is not a static field, the field's
 	 field_loc_kind should be FIELD_LOC_KIND_BITPOS.  Verify
 	 this is the case, but only trigger a simple error rather
@@ -2244,20 +2553,20 @@ resolve_dynamic_struct (struct type *typ
 	 that verification indicates a bug in our code, the error
 	 is not severe enough to suggest to the user he stops
 	 his debugging session because of it.  */
-      if (TYPE_FIELD_LOC_KIND (type, i) != FIELD_LOC_KIND_BITPOS)
+      if (TYPE_FIELD_LOC_KIND (resolved_type, i) != FIELD_LOC_KIND_BITPOS)
 	error (_("Cannot determine struct field location"
 		 " (invalid location kind)"));
 
-      pinfo.type = check_typedef (TYPE_FIELD_TYPE (type, i));
+      pinfo.type = check_typedef (resolved_type->field (i).type ());
       pinfo.valaddr = addr_stack->valaddr;
       pinfo.addr
 	= (addr_stack->addr
 	   + (TYPE_FIELD_BITPOS (resolved_type, i) / TARGET_CHAR_BIT));
       pinfo.next = addr_stack;
 
-      TYPE_FIELD_TYPE (resolved_type, i)
-	= resolve_dynamic_type_internal (TYPE_FIELD_TYPE (resolved_type, i),
-					 &pinfo, 0);
+      resolved_type->field (i).set_type
+	(resolve_dynamic_type_internal (resolved_type->field (i).type (),
+					&pinfo, 0));
       gdb_assert (TYPE_FIELD_LOC_KIND (resolved_type, i)
 		  == FIELD_LOC_KIND_BITPOS);
 
@@ -2265,8 +2574,12 @@ resolve_dynamic_struct (struct type *typ
       if (TYPE_FIELD_BITSIZE (resolved_type, i) != 0)
 	new_bit_length += TYPE_FIELD_BITSIZE (resolved_type, i);
       else
-	new_bit_length += (TYPE_LENGTH (TYPE_FIELD_TYPE (resolved_type, i))
-			   * TARGET_CHAR_BIT);
+	{
+	  struct type *real_type
+	    = check_typedef (resolved_type->field (i).type ());
+
+	  new_bit_length += (TYPE_LENGTH (real_type) * TARGET_CHAR_BIT);
+	}
 
       /* Normally, we would use the position and size of the last field
 	 to determine the size of the enclosing structure.  But GCC seems
@@ -2301,14 +2614,20 @@ resolve_dynamic_type_internal (struct ty
 			       int top_level)
 {
   struct type *real_type = check_typedef (type);
-  struct type *resolved_type = type;
+  struct type *resolved_type = nullptr;
   struct dynamic_prop *prop;
   CORE_ADDR value;
 
   if (!is_dynamic_type_internal (real_type, top_level))
     return type;
 
-  if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+  gdb::optional<CORE_ADDR> type_length;
+  prop = TYPE_DYNAMIC_LENGTH (type);
+  if (prop != NULL
+      && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
+    type_length = value;
+
+  if (type->code () == TYPE_CODE_TYPEDEF)
     {
       resolved_type = copy_type (type);
       TYPE_TARGET_TYPE (resolved_type)
@@ -2320,16 +2639,17 @@ resolve_dynamic_type_internal (struct ty
       /* Before trying to resolve TYPE, make sure it is not a stub.  */
       type = real_type;
 
-      switch (TYPE_CODE (type))
+      switch (type->code ())
 	{
 	case TYPE_CODE_REF:
 	  {
 	    struct property_addr_info pinfo;
 
 	    pinfo.type = check_typedef (TYPE_TARGET_TYPE (type));
-	    pinfo.valaddr = NULL;
-	    if (addr_stack->valaddr != NULL)
-	      pinfo.addr = extract_typed_address (addr_stack->valaddr, type);
+	    pinfo.valaddr = {};
+	    if (addr_stack->valaddr.data () != NULL)
+	      pinfo.addr = extract_typed_address (addr_stack->valaddr.data (),
+						  type);
 	    else
 	      pinfo.addr = read_memory_typed_address (addr_stack->addr, type);
 	    pinfo.next = addr_stack;
@@ -2362,14 +2682,20 @@ resolve_dynamic_type_internal (struct ty
 	}
     }
 
+  if (resolved_type == nullptr)
+    return type;
+
+  if (type_length.has_value ())
+    {
+      TYPE_LENGTH (resolved_type) = *type_length;
+      resolved_type->remove_dyn_prop (DYN_PROP_BYTE_SIZE);
+    }
+
   /* Resolve data_location attribute.  */
   prop = TYPE_DATA_LOCATION (resolved_type);
   if (prop != NULL
       && dwarf2_evaluate_property (prop, NULL, addr_stack, &value))
-    {
-      TYPE_DYN_PROP_ADDR (prop) = value;
-      TYPE_DYN_PROP_KIND (prop) = PROP_CONST;
-    }
+    prop->set_const_val (value);
 
   return resolved_type;
 }
@@ -2377,7 +2703,8 @@ resolve_dynamic_type_internal (struct ty
 /* See gdbtypes.h  */
 
 struct type *
-resolve_dynamic_type (struct type *type, const gdb_byte *valaddr,
+resolve_dynamic_type (struct type *type,
+		      gdb::array_view<const gdb_byte> valaddr,
 		      CORE_ADDR addr)
 {
   struct property_addr_info pinfo
@@ -2388,10 +2715,10 @@ resolve_dynamic_type (struct type *type,
 
 /* See gdbtypes.h  */
 
-struct dynamic_prop *
-get_dyn_prop (enum dynamic_prop_node_kind prop_kind, const struct type *type)
+dynamic_prop *
+type::dyn_prop (dynamic_prop_node_kind prop_kind) const
 {
-  struct dynamic_prop_list *node = TYPE_DYN_PROP_LIST (type);
+  dynamic_prop_list *node = this->main_type->dyn_prop_list;
 
   while (node != NULL)
     {
@@ -2405,43 +2732,41 @@ get_dyn_prop (enum dynamic_prop_node_kin
 /* See gdbtypes.h  */
 
 void
-add_dyn_prop (enum dynamic_prop_node_kind prop_kind, struct dynamic_prop prop,
-              struct type *type)
+type::add_dyn_prop (dynamic_prop_node_kind prop_kind, dynamic_prop prop)
 {
   struct dynamic_prop_list *temp;
 
-  gdb_assert (TYPE_OBJFILE_OWNED (type));
+  gdb_assert (TYPE_OBJFILE_OWNED (this));
 
-  temp = XOBNEW (&TYPE_OBJFILE (type)->objfile_obstack,
+  temp = XOBNEW (&TYPE_OBJFILE (this)->objfile_obstack,
 		 struct dynamic_prop_list);
   temp->prop_kind = prop_kind;
   temp->prop = prop;
-  temp->next = TYPE_DYN_PROP_LIST (type);
+  temp->next = this->main_type->dyn_prop_list;
 
-  TYPE_DYN_PROP_LIST (type) = temp;
+  this->main_type->dyn_prop_list = temp;
 }
 
-/* Remove dynamic property from TYPE in case it exists.  */
+/* See gdbtypes.h.  */
 
 void
-remove_dyn_prop (enum dynamic_prop_node_kind prop_kind,
-                 struct type *type)
+type::remove_dyn_prop (dynamic_prop_node_kind kind)
 {
   struct dynamic_prop_list *prev_node, *curr_node;
 
-  curr_node = TYPE_DYN_PROP_LIST (type);
+  curr_node = this->main_type->dyn_prop_list;
   prev_node = NULL;
 
   while (NULL != curr_node)
     {
-      if (curr_node->prop_kind == prop_kind)
+      if (curr_node->prop_kind == kind)
 	{
 	  /* Update the linked list but don't free anything.
 	     The property was allocated on objstack and it is not known
 	     if we are on top of it.  Nevertheless, everything is released
 	     when the complete objstack is freed.  */
 	  if (NULL == prev_node)
-	    TYPE_DYN_PROP_LIST (type) = curr_node->next;
+	    this->main_type->dyn_prop_list = curr_node->next;
 	  else
 	    prev_node->next = curr_node->next;
 
@@ -2491,7 +2816,7 @@ check_typedef (struct type *type)
 
   gdb_assert (type);
 
-  while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+  while (type->code () == TYPE_CODE_TYPEDEF)
     {
       if (!TYPE_TARGET_TYPE (type))
 	{
@@ -2503,7 +2828,7 @@ check_typedef (struct type *type)
 	  if (currently_reading_symtab)
 	    return make_qualified_type (type, instance_flags, NULL);
 
-	  name = TYPE_NAME (type);
+	  name = type->name ();
 	  /* FIXME: shouldn't we look in STRUCT_DOMAIN and/or
 	     VAR_DOMAIN as appropriate?  */
 	  if (name == NULL)
@@ -2556,7 +2881,7 @@ check_typedef (struct type *type)
       && opaque_type_resolution 
       && !currently_reading_symtab)
     {
-      const char *name = TYPE_NAME (type);
+      const char *name = type->name ();
       struct type *newtype;
 
       if (name == NULL)
@@ -2590,7 +2915,7 @@ check_typedef (struct type *type)
      types.  */
   else if (TYPE_STUB (type) && !currently_reading_symtab)
     {
-      const char *name = TYPE_NAME (type);
+      const char *name = type->name ();
       /* FIXME: shouldn't we look in STRUCT_DOMAIN and/or VAR_DOMAIN
          as appropriate?  */
       struct symbol *sym;
@@ -2606,7 +2931,7 @@ check_typedef (struct type *type)
           /* Same as above for opaque types, we can replace the stub
              with the complete type only if they are in the same
              objfile.  */
-	  if (TYPE_OBJFILE (SYMBOL_TYPE(sym)) == TYPE_OBJFILE (type))
+	  if (TYPE_OBJFILE (SYMBOL_TYPE (sym)) == TYPE_OBJFILE (type))
             type = make_qualified_type (SYMBOL_TYPE (sym),
 					TYPE_INSTANCE_FLAGS (type),
 					type);
@@ -2623,11 +2948,14 @@ check_typedef (struct type *type)
 	{
 	  /* Nothing we can do.  */
 	}
-      else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
+      else if (type->code () == TYPE_CODE_RANGE)
 	{
 	  TYPE_LENGTH (type) = TYPE_LENGTH (target_type);
 	  TYPE_TARGET_STUB (type) = 0;
 	}
+      else if (type->code () == TYPE_CODE_ARRAY
+	       && update_static_array_size (type))
+	TYPE_TARGET_STUB (type) = 0;
     }
 
   type = make_qualified_type (type, instance_flags, NULL);
@@ -2737,7 +3065,7 @@ check_stub_method (struct type *type, in
     argcount = 0;
   else
     {
-      argtypes[0].type = lookup_pointer_type (type);
+      argtypes[0].set_type (lookup_pointer_type (type));
       argcount = 1;
     }
 
@@ -2753,8 +3081,8 @@ check_stub_method (struct type *type, in
 	      if (strncmp (argtypetext, "...", p - argtypetext) != 0
 		  && strncmp (argtypetext, "void", p - argtypetext) != 0)
 		{
-		  argtypes[argcount].type =
-		    safe_parse_type (gdbarch, argtypetext, p - argtypetext);
+		  argtypes[argcount].set_type
+		    (safe_parse_type (gdbarch, argtypetext, p - argtypetext));
 		  argcount += 1;
 		}
 	      argtypetext = p + 1;
@@ -2847,7 +3175,7 @@ allocate_gnat_aux_type (struct type *typ
 static void
 set_type_code (struct type *type, enum type_code code)
 {
-  TYPE_CODE (type) = code;
+  type->set_code (code);
 
   switch (code)
     {
@@ -2889,7 +3217,7 @@ verify_floatformat (int bit, const struc
 const struct floatformat *
 floatformat_from_type (const struct type *type)
 {
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
+  gdb_assert (type->code () == TYPE_CODE_FLT);
   gdb_assert (TYPE_FLOATFORMAT (type));
   return TYPE_FLOATFORMAT (type);
 }
@@ -2910,7 +3238,7 @@ init_type (struct objfile *objfile, enum
   set_type_code (type, code);
   gdb_assert ((bit % TARGET_CHAR_BIT) == 0);
   TYPE_LENGTH (type) = bit / TARGET_CHAR_BIT;
-  TYPE_NAME (type) = name;
+  type->set_name (name);
 
   return type;
 }
@@ -2991,7 +3319,7 @@ init_float_type (struct objfile *objfile
 {
   if (byte_order == BFD_ENDIAN_UNKNOWN)
     {
-      struct gdbarch *gdbarch = get_objfile_arch (objfile);
+      struct gdbarch *gdbarch = objfile->arch ();
       byte_order = gdbarch_byte_order (gdbarch);
     }
   const struct floatformat *fmt = floatformats[byte_order];
@@ -3016,19 +3344,40 @@ init_decfloat_type (struct objfile *objf
   return t;
 }
 
-/* Allocate a TYPE_CODE_COMPLEX type structure associated with OBJFILE.
-   NAME is the type name.  TARGET_TYPE is the component float type.  */
+/* Allocate a TYPE_CODE_COMPLEX type structure.  NAME is the type
+   name.  TARGET_TYPE is the component type.  */
 
 struct type *
-init_complex_type (struct objfile *objfile,
-		   const char *name, struct type *target_type)
+init_complex_type (const char *name, struct type *target_type)
 {
   struct type *t;
 
-  t = init_type (objfile, TYPE_CODE_COMPLEX,
-		 2 * TYPE_LENGTH (target_type) * TARGET_CHAR_BIT, name);
-  TYPE_TARGET_TYPE (t) = target_type;
-  return t;
+  gdb_assert (target_type->code () == TYPE_CODE_INT
+	      || target_type->code () == TYPE_CODE_FLT);
+
+  if (TYPE_MAIN_TYPE (target_type)->flds_bnds.complex_type == nullptr)
+    {
+      if (name == nullptr && target_type->name () != nullptr)
+	{
+	  char *new_name
+	    = (char *) TYPE_ALLOC (target_type,
+				   strlen (target_type->name ())
+				   + strlen ("_Complex ") + 1);
+	  strcpy (new_name, "_Complex ");
+	  strcat (new_name, target_type->name ());
+	  name = new_name;
+	}
+
+      t = alloc_type_copy (target_type);
+      set_type_code (t, TYPE_CODE_COMPLEX);
+      TYPE_LENGTH (t) = 2 * TYPE_LENGTH (target_type);
+      t->set_name (name);
+
+      TYPE_TARGET_TYPE (t) = target_type;
+      TYPE_MAIN_TYPE (target_type)->flds_bnds.complex_type = t;
+    }
+
+  return TYPE_MAIN_TYPE (target_type)->flds_bnds.complex_type;
 }
 
 /* Allocate a TYPE_CODE_PTR type structure associated with OBJFILE.
@@ -3074,7 +3423,7 @@ type_align (struct type *type)
   if (align != 0)
     return align;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_FUNC:
@@ -3103,12 +3452,12 @@ type_align (struct type *type)
     case TYPE_CODE_UNION:
       {
 	int number_of_non_static_fields = 0;
-	for (unsigned i = 0; i < TYPE_NFIELDS (type); ++i)
+	for (unsigned i = 0; i < type->num_fields (); ++i)
 	  {
-	    if (!field_is_static (&TYPE_FIELD (type, i)))
+	    if (!field_is_static (&type->field (i)))
 	      {
 		number_of_non_static_fields++;
-		ULONGEST f_align = type_align (TYPE_FIELD_TYPE (type, i));
+		ULONGEST f_align = type_align (type->field (i).type ());
 		if (f_align == 0)
 		  {
 		    /* Don't pretend we know something we don't.  */
@@ -3184,8 +3533,8 @@ can_dereference (struct type *t)
   t = check_typedef (t);
   return
     (t != NULL
-     && TYPE_CODE (t) == TYPE_CODE_PTR
-     && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID);
+     && t->code () == TYPE_CODE_PTR
+     && TYPE_TARGET_TYPE (t)->code () != TYPE_CODE_VOID);
 }
 
 int
@@ -3194,12 +3543,12 @@ is_integral_type (struct type *t)
   t = check_typedef (t);
   return
     ((t != NULL)
-     && ((TYPE_CODE (t) == TYPE_CODE_INT)
-	 || (TYPE_CODE (t) == TYPE_CODE_ENUM)
-	 || (TYPE_CODE (t) == TYPE_CODE_FLAGS)
-	 || (TYPE_CODE (t) == TYPE_CODE_CHAR)
-	 || (TYPE_CODE (t) == TYPE_CODE_RANGE)
-	 || (TYPE_CODE (t) == TYPE_CODE_BOOL)));
+     && ((t->code () == TYPE_CODE_INT)
+	 || (t->code () == TYPE_CODE_ENUM)
+	 || (t->code () == TYPE_CODE_FLAGS)
+	 || (t->code () == TYPE_CODE_CHAR)
+	 || (t->code () == TYPE_CODE_RANGE)
+	 || (t->code () == TYPE_CODE_BOOL)));
 }
 
 int
@@ -3208,8 +3557,8 @@ is_floating_type (struct type *t)
   t = check_typedef (t);
   return
     ((t != NULL)
-     && ((TYPE_CODE (t) == TYPE_CODE_FLT)
-	 || (TYPE_CODE (t) == TYPE_CODE_DECFLOAT)));
+     && ((t->code () == TYPE_CODE_FLT)
+	 || (t->code () == TYPE_CODE_DECFLOAT)));
 }
 
 /* Return true if TYPE is scalar.  */
@@ -3219,7 +3568,7 @@ is_scalar_type (struct type *type)
 {
   type = check_typedef (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
     case TYPE_CODE_STRUCT:
@@ -3244,27 +3593,27 @@ is_scalar_type_recursive (struct type *t
   if (is_scalar_type (t))
     return 1;
   /* Are we dealing with an array or string of known dimensions?  */
-  else if ((TYPE_CODE (t) == TYPE_CODE_ARRAY
-	    || TYPE_CODE (t) == TYPE_CODE_STRING) && TYPE_NFIELDS (t) == 1
-	   && TYPE_CODE (TYPE_INDEX_TYPE (t)) == TYPE_CODE_RANGE)
+  else if ((t->code () == TYPE_CODE_ARRAY
+	    || t->code () == TYPE_CODE_STRING) && t->num_fields () == 1
+	   && t->index_type ()->code () == TYPE_CODE_RANGE)
     {
       LONGEST low_bound, high_bound;
       struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (t));
 
-      get_discrete_bounds (TYPE_INDEX_TYPE (t), &low_bound, &high_bound);
+      get_discrete_bounds (t->index_type (), &low_bound, &high_bound);
 
       return high_bound == low_bound && is_scalar_type_recursive (elt_type);
     }
   /* Are we dealing with a struct with one element?  */
-  else if (TYPE_CODE (t) == TYPE_CODE_STRUCT && TYPE_NFIELDS (t) == 1)
-    return is_scalar_type_recursive (TYPE_FIELD_TYPE (t, 0));
-  else if (TYPE_CODE (t) == TYPE_CODE_UNION)
+  else if (t->code () == TYPE_CODE_STRUCT && t->num_fields () == 1)
+    return is_scalar_type_recursive (t->field (0).type ());
+  else if (t->code () == TYPE_CODE_UNION)
     {
-      int i, n = TYPE_NFIELDS (t);
+      int i, n = t->num_fields ();
 
       /* If all elements of the union are scalar, then the union is scalar.  */
       for (i = 0; i < n; i++)
-	if (!is_scalar_type_recursive (TYPE_FIELD_TYPE (t, i)))
+	if (!is_scalar_type_recursive (t->field (i).type ()))
 	  return 0;
 
       return 1;
@@ -3278,8 +3627,8 @@ is_scalar_type_recursive (struct type *t
 int
 class_or_union_p (const struct type *t)
 {
-  return (TYPE_CODE (t) == TYPE_CODE_STRUCT
-          || TYPE_CODE (t) == TYPE_CODE_UNION);
+  return (t->code () == TYPE_CODE_STRUCT
+          || t->code () == TYPE_CODE_UNION);
 }
 
 /* A helper function which returns true if types A and B represent the
@@ -3290,8 +3639,8 @@ int
 class_types_same_p (const struct type *a, const struct type *b)
 {
   return (TYPE_MAIN_TYPE (a) == TYPE_MAIN_TYPE (b)
-	  || (TYPE_NAME (a) && TYPE_NAME (b)
-	      && !strcmp (TYPE_NAME (a), TYPE_NAME (b))));
+	  || (a->name () && b->name ()
+	      && !strcmp (a->name (), b->name ())));
 }
 
 /* If BASE is an ancestor of DCLASS return the distance between them.
@@ -3621,21 +3970,21 @@ types_equal (struct type *a, struct type
     return true;
 
   /* Resolve typedefs */
-  if (TYPE_CODE (a) == TYPE_CODE_TYPEDEF)
+  if (a->code () == TYPE_CODE_TYPEDEF)
     a = check_typedef (a);
-  if (TYPE_CODE (b) == TYPE_CODE_TYPEDEF)
+  if (b->code () == TYPE_CODE_TYPEDEF)
     b = check_typedef (b);
 
   /* If after resolving typedefs a and b are not of the same type
      code then they are not equal.  */
-  if (TYPE_CODE (a) != TYPE_CODE (b))
+  if (a->code () != b->code ())
     return false;
 
   /* If a and b are both pointers types or both reference types then
      they are equal of the same type iff the objects they refer to are
      of the same type.  */
-  if (TYPE_CODE (a) == TYPE_CODE_PTR
-      || TYPE_CODE (a) == TYPE_CODE_REF)
+  if (a->code () == TYPE_CODE_PTR
+      || a->code () == TYPE_CODE_REF)
     return types_equal (TYPE_TARGET_TYPE (a),
                         TYPE_TARGET_TYPE (b));
 
@@ -3644,8 +3993,8 @@ types_equal (struct type *a, struct type
      stubs.  The types won't point to the same address, but they
      really are the same.  */
 
-  if (TYPE_NAME (a) && TYPE_NAME (b)
-      && strcmp (TYPE_NAME (a), TYPE_NAME (b)) == 0)
+  if (a->name () && b->name ()
+      && strcmp (a->name (), b->name ()) == 0)
     return true;
 
   /* Check if identical after resolving typedefs.  */
@@ -3654,18 +4003,18 @@ types_equal (struct type *a, struct type
 
   /* Two function types are equal if their argument and return types
      are equal.  */
-  if (TYPE_CODE (a) == TYPE_CODE_FUNC)
+  if (a->code () == TYPE_CODE_FUNC)
     {
       int i;
 
-      if (TYPE_NFIELDS (a) != TYPE_NFIELDS (b))
+      if (a->num_fields () != b->num_fields ())
 	return false;
       
       if (!types_equal (TYPE_TARGET_TYPE (a), TYPE_TARGET_TYPE (b)))
 	return false;
 
-      for (i = 0; i < TYPE_NFIELDS (a); ++i)
-	if (!types_equal (TYPE_FIELD_TYPE (a, i), TYPE_FIELD_TYPE (b, i)))
+      for (i = 0; i < a->num_fields (); ++i)
+	if (!types_equal (a->field (i).type (), b->field (i).type ()))
 	  return false;
 
       return true;
@@ -3714,7 +4063,7 @@ check_types_equal (struct type *type1, s
   if (type1 == type2)
     return true;
 
-  if (TYPE_CODE (type1) != TYPE_CODE (type2)
+  if (type1->code () != type2->code ()
       || TYPE_LENGTH (type1) != TYPE_LENGTH (type2)
       || TYPE_UNSIGNED (type1) != TYPE_UNSIGNED (type2)
       || TYPE_NOSIGN (type1) != TYPE_NOSIGN (type2)
@@ -3723,27 +4072,27 @@ check_types_equal (struct type *type1, s
       || TYPE_VECTOR (type1) != TYPE_VECTOR (type2)
       || TYPE_NOTTEXT (type1) != TYPE_NOTTEXT (type2)
       || TYPE_INSTANCE_FLAGS (type1) != TYPE_INSTANCE_FLAGS (type2)
-      || TYPE_NFIELDS (type1) != TYPE_NFIELDS (type2))
+      || type1->num_fields () != type2->num_fields ())
     return false;
 
-  if (!compare_maybe_null_strings (TYPE_NAME (type1), TYPE_NAME (type2)))
+  if (!compare_maybe_null_strings (type1->name (), type2->name ()))
     return false;
-  if (!compare_maybe_null_strings (TYPE_NAME (type1), TYPE_NAME (type2)))
+  if (!compare_maybe_null_strings (type1->name (), type2->name ()))
     return false;
 
-  if (TYPE_CODE (type1) == TYPE_CODE_RANGE)
+  if (type1->code () == TYPE_CODE_RANGE)
     {
-      if (*TYPE_RANGE_DATA (type1) != *TYPE_RANGE_DATA (type2))
+      if (*type1->bounds () != *type2->bounds ())
 	return false;
     }
   else
     {
       int i;
 
-      for (i = 0; i < TYPE_NFIELDS (type1); ++i)
+      for (i = 0; i < type1->num_fields (); ++i)
 	{
-	  const struct field *field1 = &TYPE_FIELD (type1, i);
-	  const struct field *field2 = &TYPE_FIELD (type2, i);
+	  const struct field *field1 = &type1->field (i);
+	  const struct field *field2 = &type2->field (i);
 
 	  if (FIELD_ARTIFICIAL (*field1) != FIELD_ARTIFICIAL (*field2)
 	      || FIELD_BITSIZE (*field1) != FIELD_BITSIZE (*field2)
@@ -3790,7 +4139,7 @@ check_types_equal (struct type *type1, s
 			      FIELD_LOC_KIND (*field1));
 	    }
 
-	  worklist->emplace_back (FIELD_TYPE (*field1), FIELD_TYPE (*field2));
+	  worklist->emplace_back (field1->type (), field2->type ());
 	}
     }
 
@@ -3817,7 +4166,7 @@ check_types_worklist (std::vector<type_e
 {
   while (!worklist->empty ())
     {
-      int added;
+      bool added;
 
       struct type_equality_entry entry = std::move (worklist->back ());
       worklist->pop_back ();
@@ -3862,8 +4211,8 @@ type_not_allocated (const struct type *t
 {
   struct dynamic_prop *prop = TYPE_ALLOCATED_PROP (type);
 
-  return (prop && TYPE_DYN_PROP_KIND (prop) == PROP_CONST
-         && !TYPE_DYN_PROP_ADDR (prop));
+  return (prop != nullptr && prop->kind () == PROP_CONST
+	  && prop->const_val () == 0);
 }
 
 /* Associated status of type TYPE.  Return zero if type TYPE is associated.
@@ -3874,8 +4223,8 @@ type_not_associated (const struct type *
 {
   struct dynamic_prop *prop = TYPE_ASSOCIATED_PROP (type);
 
-  return (prop && TYPE_DYN_PROP_KIND (prop) == PROP_CONST
-         && !TYPE_DYN_PROP_ADDR (prop));
+  return (prop != nullptr && prop->kind () == PROP_CONST
+	  && prop->const_val () == 0);
 }
 
 /* rank_one_type helper for when PARM's type code is TYPE_CODE_PTR.  */
@@ -3885,13 +4234,13 @@ rank_one_type_parm_ptr (struct type *par
 {
   struct rank rank = {0,0};
 
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
     case TYPE_CODE_PTR:
 
       /* Allowed pointer conversions are:
 	 (a) pointer to void-pointer conversion.  */
-      if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID)
+      if (TYPE_TARGET_TYPE (parm)->code () == TYPE_CODE_VOID)
 	return VOID_PTR_CONVERSION_BADNESS;
 
       /* (b) pointer to ancestor-pointer conversion.  */
@@ -3923,7 +4272,7 @@ rank_one_type_parm_ptr (struct type *par
     case TYPE_CODE_FUNC:
       return rank_one_type (TYPE_TARGET_TYPE (parm), arg, NULL);
     case TYPE_CODE_INT:
-      if (value != NULL && TYPE_CODE (value_type (value)) == TYPE_CODE_INT)
+      if (value != NULL && value_type (value)->code () == TYPE_CODE_INT)
 	{
 	  if (value_as_long (value) == 0)
 	    {
@@ -3954,7 +4303,7 @@ rank_one_type_parm_ptr (struct type *par
 static struct rank
 rank_one_type_parm_array (struct type *parm, struct type *arg, struct value *value)
 {
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_ARRAY:
@@ -3970,7 +4319,7 @@ rank_one_type_parm_array (struct type *p
 static struct rank
 rank_one_type_parm_func (struct type *parm, struct type *arg, struct value *value)
 {
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
     case TYPE_CODE_PTR:	/* funcptr -> func */
       return rank_one_type (parm, TYPE_TARGET_TYPE (arg), NULL);
@@ -3984,7 +4333,7 @@ rank_one_type_parm_func (struct type *pa
 static struct rank
 rank_one_type_parm_int (struct type *parm, struct type *arg, struct value *value)
 {
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
     case TYPE_CODE_INT:
       if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
@@ -4005,12 +4354,12 @@ rank_one_type_parm_int (struct type *par
 		{
 		  /* unsigned int -> unsigned int, or
 		     unsigned long -> unsigned long */
-		  if (integer_types_same_name_p (TYPE_NAME (parm),
-						 TYPE_NAME (arg)))
+		  if (integer_types_same_name_p (parm->name (),
+						 arg->name ()))
 		    return EXACT_MATCH_BADNESS;
-		  else if (integer_types_same_name_p (TYPE_NAME (arg),
+		  else if (integer_types_same_name_p (arg->name (),
 						      "int")
-			   && integer_types_same_name_p (TYPE_NAME (parm),
+			   && integer_types_same_name_p (parm->name (),
 							 "long"))
 		    /* unsigned int -> unsigned long */
 		    return INTEGER_PROMOTION_BADNESS;
@@ -4020,9 +4369,9 @@ rank_one_type_parm_int (struct type *par
 		}
 	      else
 		{
-		  if (integer_types_same_name_p (TYPE_NAME (arg),
+		  if (integer_types_same_name_p (arg->name (),
 						 "long")
-		      && integer_types_same_name_p (TYPE_NAME (parm),
+		      && integer_types_same_name_p (parm->name (),
 						    "int"))
 		    /* signed long -> unsigned int */
 		    return INTEGER_CONVERSION_BADNESS;
@@ -4033,12 +4382,12 @@ rank_one_type_parm_int (struct type *par
 	    }
 	  else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
 	    {
-	      if (integer_types_same_name_p (TYPE_NAME (parm),
-					     TYPE_NAME (arg)))
+	      if (integer_types_same_name_p (parm->name (),
+					     arg->name ()))
 		return EXACT_MATCH_BADNESS;
-	      else if (integer_types_same_name_p (TYPE_NAME (arg),
+	      else if (integer_types_same_name_p (arg->name (),
 						  "int")
-		       && integer_types_same_name_p (TYPE_NAME (parm),
+		       && integer_types_same_name_p (parm->name (),
 						     "long"))
 		return INTEGER_PROMOTION_BADNESS;
 	      else
@@ -4073,7 +4422,7 @@ rank_one_type_parm_int (struct type *par
 static struct rank
 rank_one_type_parm_enum (struct type *parm, struct type *arg, struct value *value)
 {
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
     case TYPE_CODE_INT:
     case TYPE_CODE_CHAR:
@@ -4095,7 +4444,7 @@ rank_one_type_parm_enum (struct type *pa
 static struct rank
 rank_one_type_parm_char (struct type *parm, struct type *arg, struct value *value)
 {
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
     case TYPE_CODE_RANGE:
     case TYPE_CODE_BOOL:
@@ -4142,7 +4491,7 @@ rank_one_type_parm_char (struct type *pa
 static struct rank
 rank_one_type_parm_range (struct type *parm, struct type *arg, struct value *value)
 {
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
     case TYPE_CODE_INT:
     case TYPE_CODE_CHAR:
@@ -4162,7 +4511,7 @@ rank_one_type_parm_range (struct type *p
 static struct rank
 rank_one_type_parm_bool (struct type *parm, struct type *arg, struct value *value)
 {
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
       /* n3290 draft, section 4.12.1 (conv.bool):
 
@@ -4193,7 +4542,7 @@ rank_one_type_parm_bool (struct type *pa
 static struct rank
 rank_one_type_parm_float (struct type *parm, struct type *arg, struct value *value)
 {
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
     case TYPE_CODE_FLT:
       if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
@@ -4218,7 +4567,7 @@ rank_one_type_parm_float (struct type *p
 static struct rank
 rank_one_type_parm_complex (struct type *parm, struct type *arg, struct value *value)
 {
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {		/* Strictly not needed for C++, but...  */
     case TYPE_CODE_FLT:
       return FLOAT_PROMOTION_BADNESS;
@@ -4236,7 +4585,7 @@ rank_one_type_parm_struct (struct type *
 {
   struct rank rank = {0, 0};
 
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
     case TYPE_CODE_STRUCT:
       /* Check for derivation */
@@ -4254,12 +4603,12 @@ rank_one_type_parm_struct (struct type *
 static struct rank
 rank_one_type_parm_set (struct type *parm, struct type *arg, struct value *value)
 {
-  switch (TYPE_CODE (arg))
+  switch (arg->code ())
     {
       /* Not in C++ */
     case TYPE_CODE_SET:
-      return rank_one_type (TYPE_FIELD_TYPE (parm, 0),
-			    TYPE_FIELD_TYPE (arg, 0), NULL);
+      return rank_one_type (parm->field (0).type (),
+			    arg->field (0).type (), NULL);
     default:
       return INCOMPATIBLE_TYPE_BADNESS;
     }
@@ -4282,9 +4631,9 @@ rank_one_type (struct type *parm, struct
   struct rank rank = {0,0};
 
   /* Resolve typedefs */
-  if (TYPE_CODE (parm) == TYPE_CODE_TYPEDEF)
+  if (parm->code () == TYPE_CODE_TYPEDEF)
     parm = check_typedef (parm);
-  if (TYPE_CODE (arg) == TYPE_CODE_TYPEDEF)
+  if (arg->code () == TYPE_CODE_TYPEDEF)
     arg = check_typedef (arg);
 
   if (TYPE_IS_REFERENCE (parm) && value != NULL)
@@ -4293,7 +4642,7 @@ rank_one_type (struct type *parm, struct
 	{
 	  /* Rvalues should preferably bind to rvalue references or const
 	     lvalue references.  */
-	  if (TYPE_CODE (parm) == TYPE_CODE_RVALUE_REF)
+	  if (parm->code () == TYPE_CODE_RVALUE_REF)
 	    rank.subrank = REFERENCE_CONVERSION_RVALUE;
 	  else if (TYPE_CONST (TYPE_TARGET_TYPE (parm)))
 	    rank.subrank = REFERENCE_CONVERSION_CONST_LVALUE;
@@ -4304,7 +4653,7 @@ rank_one_type (struct type *parm, struct
       else
 	{
 	  /* It's illegal to pass an lvalue as an rvalue.  */
-	  if (TYPE_CODE (parm) == TYPE_CODE_RVALUE_REF)
+	  if (parm->code () == TYPE_CODE_RVALUE_REF)
 	    return INCOMPATIBLE_TYPE_BADNESS;
 	}
     }
@@ -4315,7 +4664,7 @@ rank_one_type (struct type *parm, struct
       struct type *t2 = arg;
 
       /* For pointers and references, compare target type.  */
-      if (TYPE_CODE (parm) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (parm))
+      if (parm->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (parm))
 	{
 	  t1 = TYPE_TARGET_TYPE (parm);
 	  t2 = TYPE_TARGET_TYPE (arg);
@@ -4342,14 +4691,14 @@ rank_one_type (struct type *parm, struct
                        REFERENCE_SEE_THROUGH_BADNESS));
   if (overload_debug)
   /* Debugging only.  */
-    fprintf_filtered (gdb_stderr, 
+    fprintf_filtered (gdb_stderr,
 		      "------ Arg is %s [%d], parm is %s [%d]\n",
-		      TYPE_NAME (arg), TYPE_CODE (arg), 
-		      TYPE_NAME (parm), TYPE_CODE (parm));
+		      arg->name (), arg->code (),
+		      parm->name (), parm->code ());
 
   /* x -> y means arg of type x being supplied for parameter of type y.  */
 
-  switch (TYPE_CODE (parm))
+  switch (parm->code ())
     {
     case TYPE_CODE_PTR:
       return rank_one_type_parm_ptr (parm, arg, value);
@@ -4377,7 +4726,7 @@ rank_one_type (struct type *parm, struct
       return rank_one_type_parm_set (parm, arg, value);
     default:
       return INCOMPATIBLE_TYPE_BADNESS;
-    }				/* switch (TYPE_CODE (arg)) */
+    }				/* switch (arg->code ()) */
 }
 
 /* End of functions for overload resolution.  */
@@ -4417,7 +4766,7 @@ print_args (struct field *args, int narg
 	{
 	  printfi_filtered (spaces, "[%d] name '%s'\n", i,
 			    args[i].name != NULL ? args[i].name : "<NULL>");
-	  recursive_dump_type (args[i].type, spaces + 2);
+	  recursive_dump_type (args[i].type (), spaces + 2);
 	}
     }
 }
@@ -4477,7 +4826,7 @@ dump_fn_fieldlists (struct type *type, i
 				  gdb_stdout);
 	  printf_filtered ("\n");
 	  print_args (TYPE_FN_FIELD_ARGS (f, overload_idx),
-		      TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, overload_idx)),
+		      TYPE_FN_FIELD_TYPE (f, overload_idx)->num_fields (),
 		      spaces + 8 + 2);
 	  printfi_filtered (spaces + 8, "fcontext ");
 	  gdb_print_host_address (TYPE_FN_FIELD_FCONTEXT (f, overload_idx),
@@ -4494,6 +4843,10 @@ dump_fn_fieldlists (struct type *type, i
 			    TYPE_FN_FIELD_PROTECTED (f, overload_idx));
 	  printfi_filtered (spaces + 8, "is_stub %d\n",
 			    TYPE_FN_FIELD_STUB (f, overload_idx));
+	  printfi_filtered (spaces + 8, "defaulted %d\n",
+			    TYPE_FN_FIELD_DEFAULTED (f, overload_idx));
+	  printfi_filtered (spaces + 8, "is_deleted %d\n",
+			    TYPE_FN_FIELD_DELETED (f, overload_idx));
 	  printfi_filtered (spaces + 8, "voffset %u\n",
 			    TYPE_FN_FIELD_VOFFSET (f, overload_idx));
 	}
@@ -4526,30 +4879,30 @@ print_cplus_stuff (struct type *type, in
 			TYPE_N_BASECLASSES (type));
       puts_filtered ("\n");
     }
-  if (TYPE_NFIELDS (type) > 0)
+  if (type->num_fields () > 0)
     {
       if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
 	{
 	  printfi_filtered (spaces, 
 			    "private_field_bits (%d bits at *",
-			    TYPE_NFIELDS (type));
+			    type->num_fields ());
 	  gdb_print_host_address (TYPE_FIELD_PRIVATE_BITS (type), 
 				  gdb_stdout);
 	  printf_filtered (")");
 	  print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
-			    TYPE_NFIELDS (type));
+			    type->num_fields ());
 	  puts_filtered ("\n");
 	}
       if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
 	{
 	  printfi_filtered (spaces, 
 			    "protected_field_bits (%d bits at *",
-			    TYPE_NFIELDS (type));
+			    type->num_fields ());
 	  gdb_print_host_address (TYPE_FIELD_PROTECTED_BITS (type), 
 				  gdb_stdout);
 	  printf_filtered (")");
 	  print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
-			    TYPE_NFIELDS (type));
+			    type->num_fields ());
 	  puts_filtered ("\n");
 	}
     }
@@ -4557,6 +4910,9 @@ print_cplus_stuff (struct type *type, in
     {
       dump_fn_fieldlists (type, spaces);
     }
+
+  printfi_filtered (spaces, "calling_convention %d\n",
+		    TYPE_CPLUS_CALLING_CONVENTION (type));
 }
 
 /* Print the contents of the TYPE's type_specific union, assuming that
@@ -4578,6 +4934,29 @@ print_gnat_stuff (struct type *type, int
 
 static struct obstack dont_print_type_obstack;
 
+/* Print the dynamic_prop PROP.  */
+
+static void
+dump_dynamic_prop (dynamic_prop const& prop)
+{
+  switch (prop.kind ())
+    {
+    case PROP_CONST:
+      printf_filtered ("%s", plongest (prop.const_val ()));
+      break;
+    case PROP_UNDEFINED:
+      printf_filtered ("(undefined)");
+      break;
+    case PROP_LOCEXPR:
+    case PROP_LOCLIST:
+      printf_filtered ("(dynamic)");
+      break;
+    default:
+      gdb_assert_not_reached ("unhandled prop kind");
+      break;
+    }
+}
+
 void
 recursive_dump_type (struct type *type, int spaces)
 {
@@ -4586,7 +4965,7 @@ recursive_dump_type (struct type *type,
   if (spaces == 0)
     obstack_begin (&dont_print_type_obstack, 0);
 
-  if (TYPE_NFIELDS (type) > 0
+  if (type->num_fields () > 0
       || (HAVE_CPLUS_STRUCT (type) && TYPE_NFN_FIELDS (type) > 0))
     {
       struct type **first_dont_print
@@ -4613,11 +4992,11 @@ recursive_dump_type (struct type *type,
   gdb_print_host_address (type, gdb_stdout);
   printf_filtered ("\n");
   printfi_filtered (spaces, "name '%s' (",
-		    TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
-  gdb_print_host_address (TYPE_NAME (type), gdb_stdout);
+		    type->name () ? type->name () : "<NULL>");
+  gdb_print_host_address (type->name (), gdb_stdout);
   printf_filtered (")\n");
-  printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
-  switch (TYPE_CODE (type))
+  printfi_filtered (spaces, "code 0x%x ", type->code ());
+  switch (type->code ())
     {
     case TYPE_CODE_UNDEF:
       printf_filtered ("(TYPE_CODE_UNDEF)");
@@ -4785,10 +5164,6 @@ recursive_dump_type (struct type *type,
     {
       puts_filtered (" TYPE_PROTOTYPED");
     }
-  if (TYPE_INCOMPLETE (type))
-    {
-      puts_filtered (" TYPE_INCOMPLETE");
-    }
   if (TYPE_VARARGS (type))
     {
       puts_filtered (" TYPE_VARARGS");
@@ -4813,12 +5188,12 @@ recursive_dump_type (struct type *type,
       puts_filtered (" TYPE_NOTTEXT");
     }
   puts_filtered ("\n");
-  printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
-  gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
+  printfi_filtered (spaces, "nfields %d ", type->num_fields ());
+  gdb_print_host_address (type->fields (), gdb_stdout);
   puts_filtered ("\n");
-  for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
+  for (idx = 0; idx < type->num_fields (); idx++)
     {
-      if (TYPE_CODE (type) == TYPE_CODE_ENUM)
+      if (type->code () == TYPE_CODE_ENUM)
 	printfi_filtered (spaces + 2,
 			  "[%d] enumval %s type ",
 			  idx, plongest (TYPE_FIELD_ENUMVAL (type, idx)));
@@ -4827,26 +5202,25 @@ recursive_dump_type (struct type *type,
 			  "[%d] bitpos %s bitsize %d type ",
 			  idx, plongest (TYPE_FIELD_BITPOS (type, idx)),
 			  TYPE_FIELD_BITSIZE (type, idx));
-      gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
+      gdb_print_host_address (type->field (idx).type (), gdb_stdout);
       printf_filtered (" name '%s' (",
 		       TYPE_FIELD_NAME (type, idx) != NULL
 		       ? TYPE_FIELD_NAME (type, idx)
 		       : "<NULL>");
       gdb_print_host_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
       printf_filtered (")\n");
-      if (TYPE_FIELD_TYPE (type, idx) != NULL)
+      if (type->field (idx).type () != NULL)
 	{
-	  recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
+	  recursive_dump_type (type->field (idx).type (), spaces + 4);
 	}
     }
-  if (TYPE_CODE (type) == TYPE_CODE_RANGE)
+  if (type->code () == TYPE_CODE_RANGE)
     {
-      printfi_filtered (spaces, "low %s%s  high %s%s\n",
-			plongest (TYPE_LOW_BOUND (type)), 
-			TYPE_LOW_BOUND_UNDEFINED (type) ? " (undefined)" : "",
-			plongest (TYPE_HIGH_BOUND (type)),
-			TYPE_HIGH_BOUND_UNDEFINED (type) 
-			? " (undefined)" : "");
+      printfi_filtered (spaces, "low ");
+      dump_dynamic_prop (type->bounds ()->low);
+      printf_filtered ("  high ");
+      dump_dynamic_prop (type->bounds ()->high);
+      printf_filtered ("\n");
     }
 
   switch (TYPE_SPECIFIC_FIELD (type))
@@ -5001,48 +5375,50 @@ copy_type_recursive (struct objfile *obj
   TYPE_OBJFILE_OWNED (new_type) = 0;
   TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
 
-  if (TYPE_NAME (type))
-    TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
+  if (type->name ())
+    new_type->set_name (xstrdup (type->name ()));
 
   TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
 
   /* Copy the fields.  */
-  if (TYPE_NFIELDS (type))
+  if (type->num_fields ())
     {
       int i, nfields;
 
-      nfields = TYPE_NFIELDS (type);
-      TYPE_FIELDS (new_type) = (struct field *)
-        TYPE_ZALLOC (new_type, nfields * sizeof (struct field));
+      nfields = type->num_fields ();
+      new_type->set_fields
+	((struct field *)
+	 TYPE_ZALLOC (new_type, nfields * sizeof (struct field)));
+
       for (i = 0; i < nfields; i++)
 	{
 	  TYPE_FIELD_ARTIFICIAL (new_type, i) = 
 	    TYPE_FIELD_ARTIFICIAL (type, i);
 	  TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i);
-	  if (TYPE_FIELD_TYPE (type, i))
-	    TYPE_FIELD_TYPE (new_type, i)
-	      = copy_type_recursive (objfile, TYPE_FIELD_TYPE (type, i),
-				     copied_types);
+	  if (type->field (i).type ())
+	    new_type->field (i).set_type
+	      (copy_type_recursive (objfile, type->field (i).type (),
+				    copied_types));
 	  if (TYPE_FIELD_NAME (type, i))
 	    TYPE_FIELD_NAME (new_type, i) = 
 	      xstrdup (TYPE_FIELD_NAME (type, i));
 	  switch (TYPE_FIELD_LOC_KIND (type, i))
 	    {
 	    case FIELD_LOC_KIND_BITPOS:
-	      SET_FIELD_BITPOS (TYPE_FIELD (new_type, i),
+	      SET_FIELD_BITPOS (new_type->field (i),
 				TYPE_FIELD_BITPOS (type, i));
 	      break;
 	    case FIELD_LOC_KIND_ENUMVAL:
-	      SET_FIELD_ENUMVAL (TYPE_FIELD (new_type, i),
+	      SET_FIELD_ENUMVAL (new_type->field (i),
 				 TYPE_FIELD_ENUMVAL (type, i));
 	      break;
 	    case FIELD_LOC_KIND_PHYSADDR:
-	      SET_FIELD_PHYSADDR (TYPE_FIELD (new_type, i),
+	      SET_FIELD_PHYSADDR (new_type->field (i),
 				  TYPE_FIELD_STATIC_PHYSADDR (type, i));
 	      break;
 	    case FIELD_LOC_KIND_PHYSNAME:
-	      SET_FIELD_PHYSNAME (TYPE_FIELD (new_type, i),
+	      SET_FIELD_PHYSNAME (new_type->field (i),
 				  xstrdup (TYPE_FIELD_STATIC_PHYSNAME (type,
 								       i)));
 	      break;
@@ -5055,17 +5431,20 @@ copy_type_recursive (struct objfile *obj
     }
 
   /* For range types, copy the bounds information.  */
-  if (TYPE_CODE (type) == TYPE_CODE_RANGE)
+  if (type->code () == TYPE_CODE_RANGE)
     {
-      TYPE_RANGE_DATA (new_type) = (struct range_bounds *)
-        TYPE_ALLOC (new_type, sizeof (struct range_bounds));
-      *TYPE_RANGE_DATA (new_type) = *TYPE_RANGE_DATA (type);
+      range_bounds *bounds
+        = ((struct range_bounds *) TYPE_ALLOC
+	   (new_type, sizeof (struct range_bounds)));
+
+      *bounds = *type->bounds ();
+      new_type->set_bounds (bounds);
     }
 
-  if (TYPE_DYN_PROP_LIST (type) != NULL)
-    TYPE_DYN_PROP_LIST (new_type)
+  if (type->main_type->dyn_prop_list != NULL)
+    new_type->main_type->dyn_prop_list
       = copy_dynamic_prop_list (&objfile->objfile_obstack,
-				TYPE_DYN_PROP_LIST (type));
+				type->main_type->dyn_prop_list);
 
 
   /* Copy pointers to other types.  */
@@ -5130,10 +5509,10 @@ copy_type (const struct type *type)
   TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
   memcpy (TYPE_MAIN_TYPE (new_type), TYPE_MAIN_TYPE (type),
 	  sizeof (struct main_type));
-  if (TYPE_DYN_PROP_LIST (type) != NULL)
-    TYPE_DYN_PROP_LIST (new_type)
+  if (type->main_type->dyn_prop_list != NULL)
+    new_type->main_type->dyn_prop_list
       = copy_dynamic_prop_list (&TYPE_OBJFILE (type) -> objfile_obstack,
-				TYPE_DYN_PROP_LIST (type));
+				type->main_type->dyn_prop_list);
 
   return new_type;
 }
@@ -5155,7 +5534,7 @@ arch_type (struct gdbarch *gdbarch,
   TYPE_LENGTH (type) = bit / TARGET_CHAR_BIT;
 
   if (name)
-    TYPE_NAME (type) = gdbarch_obstack_strdup (gdbarch, name);
+    type->set_name (gdbarch_obstack_strdup (gdbarch, name));
 
   return type;
 }
@@ -5243,21 +5622,6 @@ arch_decfloat_type (struct gdbarch *gdba
   return t;
 }
 
-/* Allocate a TYPE_CODE_COMPLEX type structure associated with GDBARCH.
-   NAME is the type name.  TARGET_TYPE is the component float type.  */
-
-struct type *
-arch_complex_type (struct gdbarch *gdbarch,
-		   const char *name, struct type *target_type)
-{
-  struct type *t;
-
-  t = arch_type (gdbarch, TYPE_CODE_COMPLEX,
-		 2 * TYPE_LENGTH (target_type) * TARGET_CHAR_BIT, name);
-  TYPE_TARGET_TYPE (t) = target_type;
-  return t;
-}
-
 /* Allocate a TYPE_CODE_PTR type structure associated with GDBARCH.
    BIT is the pointer type size in bits.  NAME is the type name.
    TARGET_TYPE is the pointer target type.  Always sets the pointer type's
@@ -5285,10 +5649,10 @@ arch_flags_type (struct gdbarch *gdbarch
 
   type = arch_type (gdbarch, TYPE_CODE_FLAGS, bit, name);
   TYPE_UNSIGNED (type) = 1;
-  TYPE_NFIELDS (type) = 0;
+  type->set_num_fields (0);
   /* Pre-allocate enough space assuming every field is one bit.  */
-  TYPE_FIELDS (type)
-    = (struct field *) TYPE_ZALLOC (type, bit * sizeof (struct field));
+  type->set_fields
+    ((struct field *) TYPE_ZALLOC (type, bit * sizeof (struct field)));
 
   return type;
 }
@@ -5302,19 +5666,19 @@ append_flags_type_field (struct type *ty
 			 struct type *field_type, const char *name)
 {
   int type_bitsize = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
-  int field_nr = TYPE_NFIELDS (type);
+  int field_nr = type->num_fields ();
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLAGS);
-  gdb_assert (TYPE_NFIELDS (type) + 1 <= type_bitsize);
+  gdb_assert (type->code () == TYPE_CODE_FLAGS);
+  gdb_assert (type->num_fields () + 1 <= type_bitsize);
   gdb_assert (start_bitpos >= 0 && start_bitpos < type_bitsize);
   gdb_assert (nr_bits >= 1 && nr_bits <= type_bitsize);
   gdb_assert (name != NULL);
 
   TYPE_FIELD_NAME (type, field_nr) = xstrdup (name);
-  TYPE_FIELD_TYPE (type, field_nr) = field_type;
-  SET_FIELD_BITPOS (TYPE_FIELD (type, field_nr), start_bitpos);
+  type->field (field_nr).set_type (field_type);
+  SET_FIELD_BITPOS (type->field (field_nr), start_bitpos);
   TYPE_FIELD_BITSIZE (type, field_nr) = nr_bits;
-  ++TYPE_NFIELDS (type);
+  type->set_num_fields (type->num_fields () + 1);
 }
 
 /* Special version of append_flags_type_field to add a flag field.
@@ -5342,7 +5706,7 @@ arch_composite_type (struct gdbarch *gdb
 
   gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
   t = arch_type (gdbarch, code, 0, NULL);
-  TYPE_NAME (t) = name;
+  t->set_name (name);
   INIT_CPLUS_SPECIFIC (t);
   return t;
 }
@@ -5357,12 +5721,12 @@ append_composite_type_field_raw (struct
 {
   struct field *f;
 
-  TYPE_NFIELDS (t) = TYPE_NFIELDS (t) + 1;
-  TYPE_FIELDS (t) = XRESIZEVEC (struct field, TYPE_FIELDS (t),
-				TYPE_NFIELDS (t));
-  f = &(TYPE_FIELDS (t)[TYPE_NFIELDS (t) - 1]);
+  t->set_num_fields (t->num_fields () + 1);
+  t->set_fields (XRESIZEVEC (struct field, t->fields (),
+			     t->num_fields ()));
+  f = &t->field (t->num_fields () - 1);
   memset (f, 0, sizeof f[0]);
-  FIELD_TYPE (f[0]) = field;
+  f[0].set_type (field);
   FIELD_NAME (f[0]) = name;
   return f;
 }
@@ -5376,19 +5740,19 @@ append_composite_type_field_aligned (str
 {
   struct field *f = append_composite_type_field_raw (t, name, field);
 
-  if (TYPE_CODE (t) == TYPE_CODE_UNION)
+  if (t->code () == TYPE_CODE_UNION)
     {
       if (TYPE_LENGTH (t) < TYPE_LENGTH (field))
 	TYPE_LENGTH (t) = TYPE_LENGTH (field);
     }
-  else if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
+  else if (t->code () == TYPE_CODE_STRUCT)
     {
       TYPE_LENGTH (t) = TYPE_LENGTH (t) + TYPE_LENGTH (field);
-      if (TYPE_NFIELDS (t) > 1)
+      if (t->num_fields () > 1)
 	{
 	  SET_FIELD_BITPOS (f[0],
 			    (FIELD_BITPOS (f[-1])
-			     + (TYPE_LENGTH (FIELD_TYPE (f[-1]))
+			     + (TYPE_LENGTH (f[-1].type ())
 				* TARGET_CHAR_BIT)));
 
 	  if (alignment)
@@ -5474,6 +5838,9 @@ gdbtypes_post_init (struct gdbarch *gdba
   builtin_type->builtin_float
     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
 		       "float", gdbarch_float_format (gdbarch));
+  builtin_type->builtin_bfloat16
+    = arch_float_type (gdbarch, gdbarch_bfloat16_bit (gdbarch),
+		       "bfloat16", gdbarch_bfloat16_format (gdbarch));
   builtin_type->builtin_double
     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
 		       "double", gdbarch_double_format (gdbarch));
@@ -5481,11 +5848,9 @@ gdbtypes_post_init (struct gdbarch *gdba
     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
 		       "long double", gdbarch_long_double_format (gdbarch));
   builtin_type->builtin_complex
-    = arch_complex_type (gdbarch, "complex",
-			 builtin_type->builtin_float);
+    = init_complex_type ("complex", builtin_type->builtin_float);
   builtin_type->builtin_double_complex
-    = arch_complex_type (gdbarch, "double complex",
-			 builtin_type->builtin_double);
+    = init_complex_type ("double complex", builtin_type->builtin_double);
   builtin_type->builtin_string
     = arch_type (gdbarch, TYPE_CODE_STRING, TARGET_CHAR_BIT, "string");
   builtin_type->builtin_bool
@@ -5587,7 +5952,7 @@ objfile_type (struct objfile *objfile)
 				 1, struct objfile_type);
 
   /* Use the objfile architecture to determine basic type properties.  */
-  gdbarch = get_objfile_arch (objfile);
+  gdbarch = objfile->arch ();
 
   /* Basic types.  */
   objfile_type->builtin_void
@@ -5687,8 +6052,9 @@ objfile_type (struct objfile *objfile)
   return objfile_type;
 }
 
+void _initialize_gdbtypes ();
 void
-_initialize_gdbtypes (void)
+_initialize_gdbtypes ()
 {
   gdbtypes_data = gdbarch_data_register_post_init (gdbtypes_post_init);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbtypes.h ./gdb/gdbtypes.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdbtypes.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdbtypes.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 
 /* Internal type definitions for GDB.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
@@ -46,16 +46,21 @@
 
 #include "hashtab.h"
 #include "gdbsupport/array-view.h"
+#include "gdbsupport/gdb_optional.h"
 #include "gdbsupport/offset-type.h"
 #include "gdbsupport/enum-flags.h"
 #include "gdbsupport/underlying.h"
 #include "gdbsupport/print-utils.h"
+#include "dwarf2.h"
+#include "gdb_obstack.h"
 
 /* Forward declarations for prototypes.  */
 struct field;
 struct block;
 struct value_print_options;
 struct language_defn;
+struct dwarf2_per_cu_data;
+struct dwarf2_per_objfile;
 
 /* These declarations are DWARF-specific as some of the gdbtypes.h data types
    are already DWARF-specific.  */
@@ -119,9 +124,7 @@ enum type_code
     TYPE_CODE_FUNC,		/**< Function type */
     TYPE_CODE_INT,		/**< Integer type */
 
-    /* * Floating type.  This is *NOT* a complex type.  Beware, there
-       are parts of GDB which bogusly assume that TYPE_CODE_FLT can
-       mean complex.  */
+    /* * Floating type.  This is *NOT* a complex type.  */
     TYPE_CODE_FLT,
 
     /* * Void type.  The length field specifies the length (probably
@@ -246,16 +249,6 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_
 
 #define TYPE_PROTOTYPED(t)	(TYPE_MAIN_TYPE (t)->flag_prototyped)
 
-/* * This flag is used to indicate that processing for this type
-   is incomplete.
-
-   (Mostly intended for HP platforms, where class methods, for
-   instance, can be encountered before their classes in the debug
-   info; the incomplete type has to be marked so that the class and
-   the method can be assigned correct types.)  */
-
-#define TYPE_INCOMPLETE(t)	(TYPE_MAIN_TYPE (t)->flag_incomplete)
-
 /* * FIXME drow/2002-06-03:  Only used for methods, but applies as well
    to functions.  */
 
@@ -319,14 +312,6 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_
 
 #define TYPE_FLAG_ENUM(t) (TYPE_MAIN_TYPE (t)->flag_flag_enum)
 
-/* * True if this type is a discriminated union type.  Only valid for
-   TYPE_CODE_UNION.  A discriminated union stores a reference to the
-   discriminant field along with the discriminator values in a dynamic
-   property.  */
-
-#define TYPE_FLAG_DISCRIMINATED_UNION(t) \
-  (TYPE_MAIN_TYPE (t)->flag_discriminated_union)
-
 /* * Constant type.  If this is set, the corresponding type has a
    const modifier.  */
 
@@ -353,11 +338,19 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_
 /* * True if this type represents either an lvalue or lvalue reference type.  */
 
 #define TYPE_IS_REFERENCE(t) \
-  (TYPE_CODE (t) == TYPE_CODE_REF || TYPE_CODE (t) == TYPE_CODE_RVALUE_REF)
+  ((t)->code () == TYPE_CODE_REF || (t)->code () == TYPE_CODE_RVALUE_REF)
 
 /* * True if this type is allocatable.  */
 #define TYPE_IS_ALLOCATABLE(t) \
-  (get_dyn_prop (DYN_PROP_ALLOCATED, t) != NULL)
+  ((t)->dyn_prop (DYN_PROP_ALLOCATED) != NULL)
+
+/* * True if this type has variant parts.  */
+#define TYPE_HAS_VARIANT_PARTS(t) \
+  ((t)->dyn_prop (DYN_PROP_VARIANT_PARTS) != nullptr)
+
+/* * True if this type has a dynamic length.  */
+#define TYPE_HAS_DYNAMIC_LENGTH(t) \
+  ((t)->dyn_prop (DYN_PROP_BYTE_SIZE) != nullptr)
 
 /* * Instruction-space delimited type.  This is for Harvard architectures
    which have separate instruction and data address spaces (and perhaps
@@ -400,46 +393,93 @@ DEF_ENUM_FLAGS_TYPE (enum type_instance_
 #define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \
 				   & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
 
-/* * Information needed for a discriminated union.  A discriminated
-   union is handled somewhat differently from an ordinary union.
+/* * Information about a single discriminant.  */
 
-   One field is designated as the discriminant.  Only one other field
-   is active at a time; which one depends on the value of the
-   discriminant and the data in this structure.
-
-   Additionally, it is possible to have a univariant discriminated
-   union.  In this case, the union has just a single field, which is
-   assumed to be the only active variant -- in this case no
-   discriminant is provided.  */
-
-struct discriminant_info
+struct discriminant_range
 {
-  /* * The index of the discriminant field.  If -1, then this union
-     must have just a single field.  */
-
-  int discriminant_index;
+  /* * The range of values for the variant.  This is an inclusive
+     range.  */
+  ULONGEST low, high;
+
+  /* * Return true if VALUE is contained in this range.  IS_UNSIGNED
+     is true if this should be an unsigned comparison; false for
+     signed.  */
+  bool contains (ULONGEST value, bool is_unsigned) const
+  {
+    if (is_unsigned)
+      return value >= low && value <= high;
+    LONGEST valuel = (LONGEST) value;
+    return valuel >= (LONGEST) low && valuel <= (LONGEST) high;
+  }
+};
+
+struct variant_part;
+
+/* * A single variant.  A variant has a list of discriminant values.
+   When the discriminator matches one of these, the variant is
+   enabled.  Each variant controls zero or more fields; and may also
+   control other variant parts as well.  This struct corresponds to
+   DW_TAG_variant in DWARF.  */
+
+struct variant : allocate_on_obstack
+{
+  /* * The discriminant ranges for this variant.  */
+  gdb::array_view<discriminant_range> discriminants;
+
+  /* * The fields controlled by this variant.  This is inclusive on
+     the low end and exclusive on the high end.  A variant may not
+     control any fields, in which case the two values will be equal.
+     These are indexes into the type's array of fields.  */
+  int first_field;
+  int last_field;
+
+  /* * Variant parts controlled by this variant.  */
+  gdb::array_view<variant_part> parts;
+
+  /* * Return true if this is the default variant.  The default
+     variant can be recognized because it has no associated
+     discriminants.  */
+  bool is_default () const
+  {
+    return discriminants.empty ();
+  }
 
-  /* * The index of the default branch of the union.  If -1, then
-     there is no default branch.  */
+  /* * Return true if this variant matches VALUE.  IS_UNSIGNED is true
+     if this should be an unsigned comparison; false for signed.  */
+  bool matches (ULONGEST value, bool is_unsigned) const;
+};
 
-  int default_index;
+/* * A variant part.  Each variant part has an optional discriminant
+   and holds an array of variants.  This struct corresponds to
+   DW_TAG_variant_part in DWARF.  */
 
-  /* * The discriminant values corresponding to each branch.  This has
-     a number of entries equal to the number of fields in this union.
-     If discriminant_index is not -1, then that entry in this array is
-     not used.  If default_index is not -1, then that entry in this
-     array is not used.  */
+struct variant_part : allocate_on_obstack
+{
+  /* * The index of the discriminant field in the outer type.  This is
+     an index into the type's array of fields.  If this is -1, there
+     is no discriminant, and only the default variant can be
+     considered to be selected.  */
+  int discriminant_index;
 
-  ULONGEST discriminants[1];
+  /* * True if this discriminant is unsigned; false if signed.  This
+     comes from the type of the discriminant.  */
+  bool is_unsigned;
+
+  /* * The variants that are controlled by this variant part.  Note
+     that these will always be sorted by field number.  */
+  gdb::array_view<variant> variants;
 };
 
+
 enum dynamic_prop_kind
 {
   PROP_UNDEFINED, /* Not defined.  */
   PROP_CONST,     /* Constant.  */
   PROP_ADDR_OFFSET, /* Address offset.  */
   PROP_LOCEXPR,   /* Location expression.  */
-  PROP_LOCLIST    /* Location list.  */
+  PROP_LOCLIST,    /* Location list.  */
+  PROP_VARIANT_PARTS, /* Variant parts.  */
+  PROP_TYPE,	   /* Type.  */
 };
 
 union dynamic_prop_data
@@ -451,17 +491,108 @@ union dynamic_prop_data
   /* Storage for dynamic property.  */
 
   void *baton;
+
+  /* Storage of variant parts for a type.  A type with variant parts
+     has all its fields "linearized" -- stored in a single field
+     array, just as if they had all been declared that way.  The
+     variant parts are attached via a dynamic property, and then are
+     used to control which fields end up in the final type during
+     dynamic type resolution.  */
+
+  const gdb::array_view<variant_part> *variant_parts;
+
+  /* Once a variant type is resolved, we may want to be able to go
+     from the resolved type to the original type.  In this case we
+     rewrite the property's kind and set this field.  */
+
+  struct type *original_type;
 };
 
 /* * Used to store a dynamic property.  */
 
 struct dynamic_prop
 {
+  dynamic_prop_kind kind () const
+  {
+    return m_kind;
+  }
+
+  void set_undefined ()
+  {
+    m_kind = PROP_UNDEFINED;
+  }
+
+  LONGEST const_val () const
+  {
+    gdb_assert (m_kind == PROP_CONST);
+
+    return m_data.const_val;
+  }
+
+  void set_const_val (LONGEST const_val)
+  {
+    m_kind = PROP_CONST;
+    m_data.const_val = const_val;
+  }
+
+  void *baton () const
+  {
+    gdb_assert (m_kind == PROP_LOCEXPR
+		|| m_kind == PROP_LOCLIST
+		|| m_kind == PROP_ADDR_OFFSET);
+
+    return m_data.baton;
+  }
+
+  void set_locexpr (void *baton)
+  {
+    m_kind = PROP_LOCEXPR;
+    m_data.baton = baton;
+  }
+
+  void set_loclist (void *baton)
+  {
+    m_kind = PROP_LOCLIST;
+    m_data.baton = baton;
+  }
+
+  void set_addr_offset (void *baton)
+  {
+    m_kind = PROP_ADDR_OFFSET;
+    m_data.baton = baton;
+  }
+
+  const gdb::array_view<variant_part> *variant_parts () const
+  {
+    gdb_assert (m_kind == PROP_VARIANT_PARTS);
+
+    return m_data.variant_parts;
+  }
+
+  void set_variant_parts (gdb::array_view<variant_part> *variant_parts)
+  {
+    m_kind = PROP_VARIANT_PARTS;
+    m_data.variant_parts = variant_parts;
+  }
+
+  struct type *original_type () const
+  {
+    gdb_assert (m_kind == PROP_TYPE);
+
+    return m_data.original_type;
+  }
+
+  void set_original_type (struct type *original_type)
+  {
+    m_kind = PROP_TYPE;
+    m_data.original_type = original_type;
+  }
+
   /* Determine which field of the union dynamic_prop.data is used.  */
-  enum dynamic_prop_kind kind;
+  enum dynamic_prop_kind m_kind;
 
   /* Storage for dynamic or static value.  */
-  union dynamic_prop_data data;
+  union dynamic_prop_data m_data;
 };
 
 /* Compare two dynamic_prop objects for equality.  dynamic_prop
@@ -485,15 +616,18 @@ enum dynamic_prop_node_kind
      indicates that the object of the type can be allocated/deallocated.  */
   DYN_PROP_ALLOCATED,
 
-  /* A property representing DW_AT_allocated.  The presence of this attribute
+  /* A property representing DW_AT_associated.  The presence of this attribute
      indicated that the object of the type can be associated.  */
   DYN_PROP_ASSOCIATED,
 
   /* A property providing an array's byte stride.  */
   DYN_PROP_BYTE_STRIDE,
 
-  /* A property holding information about a discriminated union.  */
-  DYN_PROP_DISCRIMINATED,
+  /* A property holding variant parts.  */
+  DYN_PROP_VARIANT_PARTS,
+
+  /* A property holding the size of the type.  */
+  DYN_PROP_BYTE_SIZE,
 };
 
 /* * List for dynamic type attributes.  */
@@ -578,6 +712,16 @@ union field_location
 
 struct field
 {
+  struct type *type () const
+  {
+    return this->m_type;
+  }
+
+  void set_type (struct type *type)
+  {
+    this->m_type = type;
+  }
+
   union field_location loc;
 
   /* * For a function or member type, this is 1 if the argument is
@@ -603,7 +747,7 @@ struct field
      - In a function or member type, type of this argument.
      - In an array type, the domain-type of the array.  */
 
-  struct type *type;
+  struct type *m_type;
 
   /* * Name of field, value or argument.
      NULL for range bounds, array domains, and member function
@@ -614,6 +758,14 @@ struct field
 
 struct range_bounds
 {
+  ULONGEST bit_stride () const
+  {
+    if (this->flag_is_byte_stride)
+      return this->stride.const_val () * 8;
+    else
+      return this->stride.const_val ();
+  }
+
   /* * Low bound of range.  */
 
   struct dynamic_prop low;
@@ -708,9 +860,7 @@ struct main_type
   unsigned int flag_nosign : 1;
   unsigned int flag_stub : 1;
   unsigned int flag_target_stub : 1;
-  unsigned int flag_static : 1;
   unsigned int flag_prototyped : 1;
-  unsigned int flag_incomplete : 1;
   unsigned int flag_varargs : 1;
   unsigned int flag_vector : 1;
   unsigned int flag_stub_supported : 1;
@@ -729,13 +879,6 @@ struct main_type
 
   unsigned int flag_flag_enum : 1;
 
-  /* * True if this type is a discriminated union type.  Only valid
-     for TYPE_CODE_UNION.  A discriminated union stores a reference to
-     the discriminant field along with the discriminator values in a
-     dynamic property.  */
-
-  unsigned int flag_discriminated_union : 1;
-
   /* * A discriminant telling us which field of the type_specific
      union is being used for this type, if any.  */
 
@@ -804,6 +947,10 @@ struct main_type
 
     struct range_bounds *bounds;
 
+    /* If this is a scalar type, then this is its corresponding
+       complex type.  */
+    struct type *complex_type;
+
   } flds_bnds;
 
   /* * Slot to point to additional language-specific fields of this
@@ -824,6 +971,117 @@ struct main_type
 
 struct type
 {
+  /* Get the type code of this type. 
+
+     Note that the code can be TYPE_CODE_TYPEDEF, so if you want the real
+     type, you need to do `check_typedef (type)->code ()`.  */
+  type_code code () const
+  {
+    return this->main_type->code;
+  }
+
+  /* Set the type code of this type.  */
+  void set_code (type_code code)
+  {
+    this->main_type->code = code;
+  }
+
+  /* Get the name of this type.  */
+  const char *name () const
+  {
+    return this->main_type->name;
+  }
+
+  /* Set the name of this type.  */
+  void set_name (const char *name)
+  {
+    this->main_type->name = name;
+  }
+
+  /* Get the number of fields of this type.  */
+  int num_fields () const
+  {
+    return this->main_type->nfields;
+  }
+
+  /* Set the number of fields of this type.  */
+  void set_num_fields (int num_fields)
+  {
+    this->main_type->nfields = num_fields;
+  }
+
+  /* Get the fields array of this type.  */
+  struct field *fields () const
+  {
+    return this->main_type->flds_bnds.fields;
+  }
+
+  /* Get the field at index IDX.  */
+  struct field &field (int idx) const
+  {
+    return this->fields ()[idx];
+  }
+
+  /* Set the fields array of this type.  */
+  void set_fields (struct field *fields)
+  {
+    this->main_type->flds_bnds.fields = fields;
+  }
+
+  type *index_type () const
+  {
+    return this->field (0).type ();
+  }
+
+  void set_index_type (type *index_type)
+  {
+    this->field (0).set_type (index_type);
+  }
+
+  /* Get the bounds bounds of this type.  The type must be a range type.  */
+  range_bounds *bounds () const
+  {
+    switch (this->code ())
+      {
+      case TYPE_CODE_RANGE:
+	return this->main_type->flds_bnds.bounds;
+
+      case TYPE_CODE_ARRAY:
+      case TYPE_CODE_STRING:
+	return this->index_type ()->bounds ();
+
+      default:
+	gdb_assert_not_reached
+	  ("type::bounds called on type with invalid code");
+      }
+  }
+
+  /* Set the bounds of this type.  The type must be a range type.  */
+  void set_bounds (range_bounds *bounds)
+  {
+    gdb_assert (this->code () == TYPE_CODE_RANGE);
+
+    this->main_type->flds_bnds.bounds = bounds;
+  }
+
+  ULONGEST bit_stride () const
+  {
+    return this->bounds ()->bit_stride ();
+  }
+
+  /* * Return the dynamic property of the requested KIND from this type's
+     list of dynamic properties.  */
+  dynamic_prop *dyn_prop (dynamic_prop_node_kind kind) const;
+
+  /* * Given a dynamic property PROP of a given KIND, add this dynamic
+     property to this type.
+
+     This function assumes that this type is objfile-owned.  */
+  void add_dyn_prop (dynamic_prop_node_kind kind, dynamic_prop prop);
+
+  /* * Remove dynamic property of kind KIND from this type, if it exists.  */
+  void remove_dyn_prop (dynamic_prop_node_kind kind);
+
   /* * Type that is a pointer to this type.
      NULL if no such pointer-to type is known yet.
      The debugger may add the address of such a type
@@ -891,8 +1149,6 @@ struct type
   struct main_type *main_type;
 };
 
-#define	NULL_TYPE ((struct type *) 0)
-
 struct fn_fieldlist
 {
 
@@ -957,9 +1213,18 @@ struct fn_field
 
   unsigned int is_constructor : 1;
 
+  /* * True if this function is deleted, false otherwise.  */
+
+  unsigned int is_deleted : 1;
+
+  /* * DW_AT_defaulted attribute for this function.  The value is one
+     of the DW_DEFAULTED constants.  */
+
+  ENUM_BITFIELD (dwarf_defaulted_attribute) defaulted : 2;
+
   /* * Unused.  */
 
-  unsigned int dummy:9;
+  unsigned int dummy:6;
 
   /* * Index into that baseclass's virtual function table, minus 2;
      else if static: VOFFSET_STATIC; else: 0.  */
@@ -1033,6 +1298,12 @@ struct cplus_struct_type
 
     int is_dynamic : 2;
 
+    /* * The calling convention for this type, fetched from the
+       DW_AT_calling_convention attribute.  The value is one of the
+       DW_CC constants.  */
+
+    ENUM_BITFIELD (dwarf_calling_convention) calling_convention : 8;
+
     /* * The base class which defined the virtual function table pointer.  */
 
     struct type *vptr_basetype;
@@ -1141,9 +1412,9 @@ struct func_type
     /* * The calling convention for targets supporting multiple ABIs.
        Right now this is only fetched from the Dwarf-2
        DW_AT_calling_convention attribute.  The value is one of the
-       DW_CC enum dwarf_calling_convention constants.  */
+       DW_CC constants.  */
 
-    unsigned calling_convention : 8;
+    ENUM_BITFIELD (dwarf_calling_convention) calling_convention : 8;
 
     /* * Whether this function normally returns to its caller.  It is
        set from the DW_AT_noreturn attribute if set on the
@@ -1255,7 +1526,11 @@ struct call_site
     /* * CU of the function where the call is located.  It gets used
        for DWARF blocks execution in the parameter array below.  */
 
-    struct dwarf2_per_cu_data *per_cu;
+    dwarf2_per_cu_data *per_cu;
+
+    /* objfile of the function where the call is located.  */
+
+    dwarf2_per_objfile *per_objfile;
 
     /* * Describe DW_TAG_call_site's DW_TAG_formal_parameter.  */
 
@@ -1311,7 +1586,6 @@ extern void allocate_gnat_aux_type (stru
 
 #define TYPE_INSTANCE_FLAGS(thistype) (thistype)->instance_flags
 #define TYPE_MAIN_TYPE(thistype) (thistype)->main_type
-#define TYPE_NAME(thistype) TYPE_MAIN_TYPE(thistype)->name
 #define TYPE_TARGET_TYPE(thistype) TYPE_MAIN_TYPE(thistype)->target_type
 #define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type
 #define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type
@@ -1342,73 +1616,23 @@ extern unsigned type_align (struct type
    space in struct type.  */
 extern bool set_type_align (struct type *, ULONGEST);
 
-/* * Note that TYPE_CODE can be TYPE_CODE_TYPEDEF, so if you want the real
-   type, you need to do TYPE_CODE (check_type (this_type)).  */
-#define TYPE_CODE(thistype) TYPE_MAIN_TYPE(thistype)->code
-#define TYPE_NFIELDS(thistype) TYPE_MAIN_TYPE(thistype)->nfields
-#define TYPE_FIELDS(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields
-
-#define TYPE_INDEX_TYPE(type) TYPE_FIELD_TYPE (type, 0)
-#define TYPE_RANGE_DATA(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.bounds
-#define TYPE_LOW_BOUND(range_type) \
-  TYPE_RANGE_DATA(range_type)->low.data.const_val
-#define TYPE_HIGH_BOUND(range_type) \
-  TYPE_RANGE_DATA(range_type)->high.data.const_val
-#define TYPE_LOW_BOUND_UNDEFINED(range_type) \
-  (TYPE_RANGE_DATA(range_type)->low.kind == PROP_UNDEFINED)
-#define TYPE_HIGH_BOUND_UNDEFINED(range_type) \
-  (TYPE_RANGE_DATA(range_type)->high.kind == PROP_UNDEFINED)
-#define TYPE_HIGH_BOUND_KIND(range_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) \
-  get_dyn_prop (DYN_PROP_DATA_LOCATION, thistype)
+  ((thistype)->dyn_prop (DYN_PROP_DATA_LOCATION))
 #define TYPE_DATA_LOCATION_BATON(thistype) \
   TYPE_DATA_LOCATION (thistype)->data.baton
 #define TYPE_DATA_LOCATION_ADDR(thistype) \
-  TYPE_DATA_LOCATION (thistype)->data.const_val
+  (TYPE_DATA_LOCATION (thistype)->const_val ())
 #define TYPE_DATA_LOCATION_KIND(thistype) \
-  TYPE_DATA_LOCATION (thistype)->kind
+  (TYPE_DATA_LOCATION (thistype)->kind ())
+#define TYPE_DYNAMIC_LENGTH(thistype) \
+  ((thistype)->dyn_prop (DYN_PROP_BYTE_SIZE))
 
 /* Property accessors for the type allocated/associated.  */
 #define TYPE_ALLOCATED_PROP(thistype) \
-  get_dyn_prop (DYN_PROP_ALLOCATED, thistype)
+  ((thistype)->dyn_prop (DYN_PROP_ALLOCATED))
 #define TYPE_ASSOCIATED_PROP(thistype) \
-  get_dyn_prop (DYN_PROP_ASSOCIATED, thistype)
-
-/* Attribute accessors for dynamic properties.  */
-#define TYPE_DYN_PROP_LIST(thistype) \
-  TYPE_MAIN_TYPE(thistype)->dyn_prop_list
-#define TYPE_DYN_PROP_BATON(dynprop) \
-  dynprop->data.baton
-#define TYPE_DYN_PROP_ADDR(dynprop) \
-  dynprop->data.const_val
-#define TYPE_DYN_PROP_KIND(dynprop) \
-  dynprop->kind
-
-
-/* Accessors for struct range_bounds data attached to an array type's
-   index type.  */
-
-#define TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED(arraytype) \
-   TYPE_HIGH_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
-#define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \
-   TYPE_LOW_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
-
-#define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \
-   (TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype))))
-
-#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))))
+  ((thistype)->dyn_prop (DYN_PROP_ASSOCIATED))
 
 /* C++ */
 
@@ -1437,13 +1661,15 @@ extern void set_type_vptr_basetype (stru
     ? (struct cplus_struct_type*)&cplus_struct_default \
     : TYPE_RAW_CPLUS_SPECIFIC(thistype))
 #define TYPE_RAW_CPLUS_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.cplus_stuff
+#define TYPE_CPLUS_CALLING_CONVENTION(thistype) \
+  TYPE_MAIN_TYPE(thistype)->type_specific.cplus_stuff->calling_convention
 #define TYPE_FLOATFORMAT(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.floatformat
 #define TYPE_GNAT_SPECIFIC(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.gnat_stuff
 #define TYPE_DESCRIPTIVE_TYPE(thistype) TYPE_GNAT_SPECIFIC(thistype)->descriptive_type
 #define TYPE_CALLING_CONVENTION(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.func_stuff->calling_convention
 #define TYPE_NO_RETURN(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.func_stuff->is_noreturn
 #define TYPE_TAIL_CALL_LIST(thistype) TYPE_MAIN_TYPE(thistype)->type_specific.func_stuff->tail_call_list
-#define TYPE_BASECLASS(thistype,index) TYPE_FIELD_TYPE(thistype, index)
+#define TYPE_BASECLASS(thistype,index) ((thistype)->field (index).type ())
 #define TYPE_N_BASECLASSES(thistype) TYPE_CPLUS_SPECIFIC(thistype)->n_baseclasses
 #define TYPE_BASECLASS_NAME(thistype,index) TYPE_FIELD_NAME(thistype, index)
 #define TYPE_BASECLASS_BITPOS(thistype,index) TYPE_FIELD_BITPOS(thistype,index)
@@ -1455,7 +1681,6 @@ extern void set_type_vptr_basetype (stru
   (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \
     : B_TST(TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits, (index)))
 
-#define FIELD_TYPE(thisfld) ((thisfld).type)
 #define FIELD_NAME(thisfld) ((thisfld).name)
 #define FIELD_LOC_KIND(thisfld) ((thisfld).loc_kind)
 #define FIELD_BITPOS_LVAL(thisfld) ((thisfld).loc.bitpos)
@@ -1483,18 +1708,16 @@ extern void set_type_vptr_basetype (stru
 #define FIELD_ARTIFICIAL(thisfld) ((thisfld).artificial)
 #define FIELD_BITSIZE(thisfld) ((thisfld).bitsize)
 
-#define TYPE_FIELD(thistype, n) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields[n]
-#define TYPE_FIELD_TYPE(thistype, n) FIELD_TYPE(TYPE_FIELD(thistype, n))
-#define TYPE_FIELD_NAME(thistype, n) FIELD_NAME(TYPE_FIELD(thistype, n))
-#define TYPE_FIELD_LOC_KIND(thistype, n) FIELD_LOC_KIND (TYPE_FIELD (thistype, n))
-#define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n))
-#define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL (TYPE_FIELD (thistype, n))
-#define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n))
-#define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR (TYPE_FIELD (thistype, n))
-#define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thistype, n))
-#define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL(TYPE_FIELD(thistype,n))
-#define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE(TYPE_FIELD(thistype,n))
-#define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE(TYPE_FIELD(thistype,n))!=0)
+#define TYPE_FIELD_NAME(thistype, n) FIELD_NAME((thistype)->field (n))
+#define TYPE_FIELD_LOC_KIND(thistype, n) FIELD_LOC_KIND ((thistype)->field (n))
+#define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS ((thistype)->field (n))
+#define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL ((thistype)->field (n))
+#define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME ((thistype)->field (n))
+#define TYPE_FIELD_STATIC_PHYSADDR(thistype, n) FIELD_STATIC_PHYSADDR ((thistype)->field (n))
+#define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK ((thistype)->field (n))
+#define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL((thistype)->field (n))
+#define TYPE_FIELD_BITSIZE(thistype, n) FIELD_BITSIZE((thistype)->field (n))
+#define TYPE_FIELD_PACKED(thistype, n) (FIELD_BITSIZE((thistype)->field (n))!=0)
 
 #define TYPE_FIELD_PRIVATE_BITS(thistype) \
   TYPE_CPLUS_SPECIFIC(thistype)->private_field_bits
@@ -1541,7 +1764,7 @@ extern void set_type_vptr_basetype (stru
 #define TYPE_FN_FIELD(thisfn, n) (thisfn)[n]
 #define TYPE_FN_FIELD_PHYSNAME(thisfn, n) (thisfn)[n].physname
 #define TYPE_FN_FIELD_TYPE(thisfn, n) (thisfn)[n].type
-#define TYPE_FN_FIELD_ARGS(thisfn, n) TYPE_FIELDS ((thisfn)[n].type)
+#define TYPE_FN_FIELD_ARGS(thisfn, n) (((thisfn)[n].type)->fields ())
 #define TYPE_FN_FIELD_CONST(thisfn, n) ((thisfn)[n].is_const)
 #define TYPE_FN_FIELD_VOLATILE(thisfn, n) ((thisfn)[n].is_volatile)
 #define TYPE_FN_FIELD_PRIVATE(thisfn, n) ((thisfn)[n].is_private)
@@ -1553,6 +1776,8 @@ extern void set_type_vptr_basetype (stru
 #define TYPE_FN_FIELD_VOFFSET(thisfn, n) ((thisfn)[n].voffset-2)
 #define TYPE_FN_FIELD_VIRTUAL_P(thisfn, n) ((thisfn)[n].voffset > 1)
 #define TYPE_FN_FIELD_STATIC_P(thisfn, n) ((thisfn)[n].voffset == VOFFSET_STATIC)
+#define TYPE_FN_FIELD_DEFAULTED(thisfn, n) ((thisfn)[n].defaulted)
+#define TYPE_FN_FIELD_DELETED(thisfn, n) ((thisfn)[n].is_deleted)
 
 /* Accessors for typedefs defined by a class.  */
 #define TYPE_TYPEDEF_FIELD_ARRAY(thistype) \
@@ -1586,9 +1811,9 @@ extern void set_type_vptr_basetype (stru
   TYPE_NESTED_TYPES_FIELD (thistype, n).is_private
 
 #define TYPE_IS_OPAQUE(thistype) \
-  (((TYPE_CODE (thistype) == TYPE_CODE_STRUCT) \
-    || (TYPE_CODE (thistype) == TYPE_CODE_UNION)) \
-   && (TYPE_NFIELDS (thistype) == 0) \
+  ((((thistype)->code () == TYPE_CODE_STRUCT) \
+    || ((thistype)->code () == TYPE_CODE_UNION)) \
+   && ((thistype)->num_fields () == 0) \
    && (!HAVE_CPLUS_STRUCT (thistype) \
        || TYPE_NFN_FIELDS (thistype) == 0) \
    && (TYPE_STUB (thistype) || !TYPE_STUB_SUPPORTED (thistype)))
@@ -1597,13 +1822,13 @@ extern void set_type_vptr_basetype (stru
    if the type has no name.  */
 
 #define TYPE_SAFE_NAME(type) \
-  (TYPE_NAME (type) ? TYPE_NAME (type) : _("<unnamed type>"))
+  (type->name () != nullptr ? type->name () : _("<unnamed type>"))
 
 /* * 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.  */
 
 #define TYPE_ERROR_NAME(type) \
-  (TYPE_NAME (type) ? TYPE_NAME (type) : _("<error type>"))
+  (type->name () ? type->name () : _("<error type>"))
 
 /* Given TYPE, return its floatformat.  */
 const struct floatformat *floatformat_from_type (const struct type *type);
@@ -1623,6 +1848,7 @@ struct builtin_type
   struct type *builtin_unsigned_short;
   struct type *builtin_unsigned_int;
   struct type *builtin_unsigned_long;
+  struct type *builtin_bfloat16;
   struct type *builtin_half;
   struct type *builtin_float;
   struct type *builtin_double;
@@ -1757,7 +1983,7 @@ extern const struct floatformat *floatfo
 extern const struct floatformat *floatformats_vax_f[BFD_ENDIAN_UNKNOWN];
 extern const struct floatformat *floatformats_vax_d[BFD_ENDIAN_UNKNOWN];
 extern const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN];
-
+extern const struct floatformat *floatformats_bfloat16[BFD_ENDIAN_UNKNOWN];
 
 /* Allocate space for storing data associated with a particular
    type.  We ensure that the space is allocated using the same
@@ -1823,8 +2049,7 @@ extern struct type *init_float_type (str
 				     const struct floatformat **,
 				     enum bfd_endian = BFD_ENDIAN_UNKNOWN);
 extern struct type *init_decfloat_type (struct objfile *, int, const char *);
-extern struct type *init_complex_type (struct objfile *, const char *,
-				       struct type *);
+extern struct type *init_complex_type (const char *, struct type *);
 extern struct type *init_pointer_type (struct objfile *, int, const char *,
 				       struct type *);
 
@@ -1840,8 +2065,6 @@ extern struct type *arch_boolean_type (s
 extern struct type *arch_float_type (struct gdbarch *, int, const char *,
 				     const struct floatformat **);
 extern struct type *arch_decfloat_type (struct gdbarch *, int, const char *);
-extern struct type *arch_complex_type (struct gdbarch *, const char *,
-				       struct type *);
 extern struct type *arch_pointer_type (struct gdbarch *, int, const char *,
 				       struct type *);
 
@@ -2018,29 +2241,13 @@ extern void get_signed_type_minmax (stru
    ADDR specifies the location of the variable the type is bound to.
    If TYPE has no dynamic properties return TYPE; otherwise a new type with
    static properties is returned.  */
-extern struct type *resolve_dynamic_type (struct type *type,
-					  const gdb_byte *valaddr,
-					  CORE_ADDR addr);
+extern struct type *resolve_dynamic_type
+  (struct type *type, gdb::array_view<const gdb_byte> valaddr,
+   CORE_ADDR addr);
 
 /* * Predicate if the type has dynamic values, which are not resolved yet.  */
 extern int is_dynamic_type (struct type *type);
 
-/* * Return the dynamic property of the requested KIND from TYPE's
-   list of dynamic properties.  */
-extern struct dynamic_prop *get_dyn_prop
-  (enum dynamic_prop_node_kind kind, const struct type *type);
-
-/* * Given a dynamic property PROP of a given KIND, add this dynamic
-   property to the given TYPE.
-
-   This function assumes that TYPE is objfile-owned.  */
-extern void add_dyn_prop
-  (enum dynamic_prop_node_kind kind, struct dynamic_prop prop,
-   struct type *type);
-
-extern void remove_dyn_prop (enum dynamic_prop_node_kind prop_kind,
-                             struct type *type);
-
 extern struct type *check_typedef (struct type *);
 
 extern void check_stub_method_group (struct type *, int);
@@ -2055,12 +2262,27 @@ extern struct type *lookup_template_type
 
 extern int get_vptr_fieldno (struct type *, struct type **);
 
-extern int get_discrete_bounds (struct type *, LONGEST *, LONGEST *);
+/* Set *LOWP and *HIGHP to the lower and upper bounds of discrete type
+   TYPE.
+
+   Return true if the two bounds are available, false otherwise.  */
+
+extern bool get_discrete_bounds (struct type *type, LONGEST *lowp,
+				 LONGEST *highp);
+
+/* If TYPE's low bound is a known constant, return it, else return nullopt.  */
+
+extern gdb::optional<LONGEST> get_discrete_low_bound (struct type *type);
+
+/* If TYPE's high bound is a known constant, return it, else return nullopt.  */
+
+extern gdb::optional<LONGEST> get_discrete_high_bound (struct type *type);
 
 extern int get_array_bounds (struct type *type, LONGEST *low_bound,
 			     LONGEST *high_bound);
 
-extern int discrete_position (struct type *type, LONGEST val, LONGEST *pos);
+extern gdb::optional<LONGEST> discrete_position (struct type *type,
+						 LONGEST val);
 
 extern int class_types_same_p (const struct type *, const struct type *);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_vfork.h ./gdb/gdb_vfork.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_vfork.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_vfork.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* GDB-friendly replacement for <vfork.h>.
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_wchar.h ./gdb/gdb_wchar.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gdb_wchar.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gdb_wchar.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Wide characters for gdb
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/.gitattributes ./gdb/.gitattributes
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/.gitattributes	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/.gitattributes	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,7 @@
+# -*- conf -*-
+
+# Use cpp-style diffs for .h and .c files.  This is useful
+# if you modify classes defined in those files.
+
+*.h	diff=cpp
+*.c	diff=cpp
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/glibc-tdep.c ./gdb/glibc-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/glibc-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/glibc-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the GNU C Library (glibc).
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/glibc-tdep.h ./gdb/glibc-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/glibc-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/glibc-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the GNU C Library (glibc).
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gnu-nat.c ./gdb/gnu-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gnu-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gnu-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Interface GDB to the GNU Hurd.
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -64,6 +64,7 @@ extern "C"
 #include "language.h"
 #include "target.h"
 #include "gdbsupport/gdb_wait.h"
+#include "gdbarch.h"
 #include "gdbcmd.h"
 #include "gdbcore.h"
 #include "gdbthread.h"
@@ -82,8 +83,12 @@ extern "C"
 #include "msg_reply_S.h"
 #include "exc_request_U.h"
 #include "msg_U.h"
+
+#include "gnu-nat-mig.h"
 }
 
+struct gnu_nat_target *gnu_target;
+
 static process_t proc_server = MACH_PORT_NULL;
 
 /* If we've sent a proc_wait_request to the proc server, the pid of the
@@ -98,42 +103,12 @@ bool gnu_debug_flag = false;
 /* Forward decls */
 
 static struct inf *make_inf ();
-void inf_clear_wait (struct inf *inf);
-void inf_cleanup (struct inf *inf);
-void inf_startup (struct inf *inf, int pid);
-int inf_update_suspends (struct inf *inf);
-void inf_set_pid (struct inf *inf, pid_t pid);
-void inf_validate_procs (struct inf *inf);
-void inf_steal_exc_ports (struct inf *inf);
-void inf_restore_exc_ports (struct inf *inf);
-void inf_set_threads_resume_sc (struct inf *inf,
-				struct proc *run_thread,
-				int run_others);
-int inf_set_threads_resume_sc_for_signal_thread (struct inf *inf);
-void inf_suspend (struct inf *inf);
-void inf_resume (struct inf *inf);
-void inf_set_step_thread (struct inf *inf, struct proc *proc);
-void inf_detach (struct inf *inf);
-void inf_attach (struct inf *inf, int pid);
-void inf_signal (struct inf *inf, enum gdb_signal sig);
-void inf_continue (struct inf *inf);
 
 #define inf_debug(_inf, msg, args...) \
   do { struct inf *__inf = (_inf); \
        debug ("{inf %d %s}: " msg, __inf->pid, \
        host_address_to_string (__inf) , ##args); } while (0)
 
-void proc_abort (struct proc *proc, int force);
-struct proc *make_proc (struct inf *inf, mach_port_t port, int tid);
-struct proc *_proc_free (struct proc *proc);
-int proc_update_sc (struct proc *proc);
-kern_return_t proc_get_exception_port (struct proc *proc, mach_port_t * port);
-kern_return_t proc_set_exception_port (struct proc *proc, mach_port_t port);
-static mach_port_t _proc_get_exc_port (struct proc *proc);
-void proc_steal_exc_port (struct proc *proc, mach_port_t exc_port);
-void proc_restore_exc_port (struct proc *proc);
-int proc_trace (struct proc *proc, int set);
-
 /* Evaluate RPC_EXPR in a scope with the variables MSGPORT and REFPORT bound
    to INF's msg port and task port respectively.  If it has no msg port,
    EIEIO is returned.  INF must refer to a running process!  */
@@ -262,7 +237,7 @@ __proc_pid (struct proc *proc)
 /* Update PROC's real suspend count to match it's desired one.  Returns true
    if we think PROC is now in a runnable state.  */
 int
-proc_update_sc (struct proc *proc)
+gnu_nat_target::proc_update_sc (struct proc *proc)
 {
   int running;
   int err = 0;
@@ -328,7 +303,7 @@ proc_update_sc (struct proc *proc)
    In particular, a thread is precious if it's running (in which case forcing
    it includes suspending it first), or if it has an exception pending.  */
 void
-proc_abort (struct proc *proc, int force)
+gnu_nat_target::proc_abort (struct proc *proc, int force)
 {
   gdb_assert (proc_is_thread (proc));
 
@@ -365,7 +340,7 @@ proc_abort (struct proc *proc, int force
    that the thread is stopped and aborted first, and sets the state_changed
    field in PROC to true.  */
 thread_state_t
-proc_get_state (struct proc *proc, int will_modify)
+gnu_nat_target::proc_get_state (struct proc *proc, int will_modify)
 {
   int was_aborted = proc->aborted;
 
@@ -402,7 +377,7 @@ proc_get_state (struct proc *proc, int w
 
 /* Set PORT to PROC's exception port.  */
 kern_return_t
-proc_get_exception_port (struct proc * proc, mach_port_t * port)
+gnu_nat_target::proc_get_exception_port (struct proc * proc, mach_port_t * port)
 {
   if (proc_is_task (proc))
     return task_get_exception_port (proc->port, port);
@@ -412,7 +387,7 @@ proc_get_exception_port (struct proc * p
 
 /* Set PROC's exception port to PORT.  */
 kern_return_t
-proc_set_exception_port (struct proc * proc, mach_port_t port)
+gnu_nat_target::proc_set_exception_port (struct proc * proc, mach_port_t port)
 {
   proc_debug (proc, "setting exception port: %lu", port);
   if (proc_is_task (proc))
@@ -422,8 +397,8 @@ proc_set_exception_port (struct proc * p
 }
 
 /* Get PROC's exception port, cleaning up a bit if proc has died.  */
-static mach_port_t
-_proc_get_exc_port (struct proc *proc)
+mach_port_t
+gnu_nat_target::_proc_get_exc_port (struct proc *proc)
 {
   mach_port_t exc_port;
   kern_return_t err = proc_get_exception_port (proc, &exc_port);
@@ -446,7 +421,7 @@ _proc_get_exc_port (struct proc *proc)
    been done.  Stash away any existing exception port so we can
    restore it later.  */
 void
-proc_steal_exc_port (struct proc *proc, mach_port_t exc_port)
+gnu_nat_target::proc_steal_exc_port (struct proc *proc, mach_port_t exc_port)
 {
   mach_port_t cur_exc_port = _proc_get_exc_port (proc);
 
@@ -489,7 +464,7 @@ proc_steal_exc_port (struct proc *proc,
    found there at the time, unless *our* exception port has since been
    overwritten, in which case who knows what's going on.  */
 void
-proc_restore_exc_port (struct proc *proc)
+gnu_nat_target::proc_restore_exc_port (struct proc *proc)
 {
   mach_port_t cur_exc_port = _proc_get_exc_port (proc);
 
@@ -519,7 +494,7 @@ proc_restore_exc_port (struct proc *proc
 /* Turns hardware tracing in PROC on or off when SET is true or false,
    respectively.  Returns true on success.  */
 int
-proc_trace (struct proc *proc, int set)
+gnu_nat_target::proc_trace (struct proc *proc, int set)
 {
   thread_state_t state = proc_get_state (proc, 1);
 
@@ -549,7 +524,7 @@ static int next_thread_id = 1;
 /* Returns a new proc structure with the given fields.  Also adds a
    notification for PORT becoming dead to be sent to INF's notify port.  */
 struct proc *
-make_proc (struct inf *inf, mach_port_t port, int tid)
+gnu_nat_target::make_proc (struct inf *inf, mach_port_t port, int tid)
 {
   kern_return_t err;
   mach_port_t prev_port = MACH_PORT_NULL;
@@ -613,7 +588,7 @@ make_proc (struct inf *inf, mach_port_t
 /* Frees PROC and any resources it uses, and returns the value of PROC's 
    next field.  */
 struct proc *
-_proc_free (struct proc *proc)
+gnu_nat_target::_proc_free (struct proc *proc)
 {
   struct inf *inf = proc->inf;
   struct proc *next = proc->next;
@@ -682,7 +657,7 @@ make_inf (void)
 
 /* Clear INF's target wait status.  */
 void
-inf_clear_wait (struct inf *inf)
+gnu_nat_target::inf_clear_wait (struct inf *inf)
 {
   inf_debug (inf, "clearing wait");
   inf->wait.status.kind = TARGET_WAITKIND_SPURIOUS;
@@ -702,7 +677,7 @@ inf_clear_wait (struct inf *inf)
 
 
 void
-inf_cleanup (struct inf *inf)
+gnu_nat_target::inf_cleanup (struct inf *inf)
 {
   inf_debug (inf, "cleanup");
 
@@ -725,7 +700,7 @@ inf_cleanup (struct inf *inf)
 }
 
 void
-inf_startup (struct inf *inf, int pid)
+gnu_nat_target::inf_startup (struct inf *inf, int pid)
 {
   kern_return_t err;
 
@@ -748,7 +723,7 @@ inf_startup (struct inf *inf, int pid)
 
 /* Close current process, if any, and attach INF to process PORT.  */
 void
-inf_set_pid (struct inf *inf, pid_t pid)
+gnu_nat_target::inf_set_pid (struct inf *inf, pid_t pid)
 {
   task_t task_port;
   struct proc *task = inf->task;
@@ -800,8 +775,8 @@ inf_set_pid (struct inf *inf, pid_t pid)
    proc server state.  Note that the traced field is only updated from
    the proc server state if we do not have a message port.  If we do
    have a message port we'd better look at the tracemask itself.  */
-static void
-inf_validate_procinfo (struct inf *inf)
+void
+gnu_nat_target::inf_validate_procinfo (struct inf *inf)
 {
   char *noise;
   mach_msg_type_number_t noise_len = 0;
@@ -827,8 +802,8 @@ inf_validate_procinfo (struct inf *inf)
 
 /* Validates INF's task suspend count.  If it's higher than we expect,
    verify with the user before `stealing' the extra count.  */
-static void
-inf_validate_task_sc (struct inf *inf)
+void
+gnu_nat_target::inf_validate_task_sc (struct inf *inf)
 {
   char *noise;
   mach_msg_type_number_t noise_len = 0;
@@ -879,8 +854,8 @@ inf_validate_task_sc (struct inf *inf)
    is.  If INF is running, the resume_sc count of INF's threads will
    be modified, and the signal thread will briefly be run to change
    the trace state.  */
-static void
-inf_set_traced (struct inf *inf, int on)
+void
+gnu_nat_target::inf_set_traced (struct inf *inf, int on)
 {
   if (on == inf->traced)
     return;
@@ -916,7 +891,7 @@ inf_set_traced (struct inf *inf, int on)
    counts in the safe order.  Returns true if at least one thread is
    thought to be running.  */
 int
-inf_update_suspends (struct inf *inf)
+gnu_nat_target::inf_update_suspends (struct inf *inf)
 {
   struct proc *task = inf->task;
 
@@ -1007,7 +982,7 @@ inf_threads (struct inf *inf, inf_thread
 
 /* Make INF's list of threads be consistent with reality of TASK.  */
 void
-inf_validate_procs (struct inf *inf)
+gnu_nat_target::inf_validate_procs (struct inf *inf)
 {
   thread_array_t threads;
   mach_msg_type_number_t num_threads, i;
@@ -1106,12 +1081,12 @@ inf_validate_procs (struct inf *inf)
 	    if (inferior_ptid == ptid_t (inf->pid))
 	      /* This is the first time we're hearing about thread
 		 ids, after a fork-child.  */
-	      thread_change_ptid (inferior_ptid, ptid);
+	      thread_change_ptid (this, inferior_ptid, ptid);
 	    else if (inf->pending_execs != 0)
 	      /* This is a shell thread.  */
-	      add_thread_silent (ptid);
+	      add_thread_silent (this, ptid);
 	    else
-	      add_thread (ptid);
+	      add_thread (this, ptid);
 	  }
       }
 
@@ -1128,7 +1103,7 @@ inf_update_procs (struct inf *inf)
   if (!inf->task)
     return 0;
   if (!inf->threads_up_to_date)
-    inf_validate_procs (inf);
+    gnu_target->inf_validate_procs (inf);
   return !!inf->task;
 }
 
@@ -1136,8 +1111,8 @@ inf_update_procs (struct inf *inf)
    and others are set to their run_sc if RUN_OTHERS is true, and otherwise
    their pause_sc.  */
 void
-inf_set_threads_resume_sc (struct inf *inf,
-			   struct proc *run_thread, int run_others)
+gnu_nat_target::inf_set_threads_resume_sc (struct inf *inf,
+					   struct proc *run_thread, int run_others)
 {
   struct proc *thread;
 
@@ -1155,7 +1130,7 @@ inf_set_threads_resume_sc (struct inf *i
 /* Cause INF to continue execution immediately; individual threads may still
    be suspended (but their suspend counts will be updated).  */
 void
-inf_resume (struct inf *inf)
+gnu_nat_target::inf_resume (struct inf *inf)
 {
   struct proc *thread;
 
@@ -1180,7 +1155,7 @@ inf_resume (struct inf *inf)
 /* Cause INF to stop execution immediately; individual threads may still
    be running.  */
 void
-inf_suspend (struct inf *inf)
+gnu_nat_target::inf_suspend (struct inf *inf)
 {
   struct proc *thread;
 
@@ -1200,7 +1175,7 @@ inf_suspend (struct inf *inf)
    function changes it to be PROC, changing any old step_thread to be
    a normal one.  A PROC of 0 clears any existing value.  */
 void
-inf_set_step_thread (struct inf *inf, struct proc *thread)
+gnu_nat_target::inf_set_step_thread (struct inf *inf, struct proc *thread)
 {
   gdb_assert (!thread || proc_is_thread (thread));
 
@@ -1226,7 +1201,7 @@ inf_set_step_thread (struct inf *inf, st
    (plus whatever other thread are set to always run).  Returns true if we
    did so, or false if we can't find a signal thread.  */
 int
-inf_set_threads_resume_sc_for_signal_thread (struct inf *inf)
+gnu_nat_target::inf_set_threads_resume_sc_for_signal_thread (struct inf *inf)
 {
   if (inf->signal_thread)
     {
@@ -1248,7 +1223,7 @@ inf_update_signal_thread (struct inf *in
 
 /* Detachs from INF's inferior task, letting it run once again...  */
 void
-inf_detach (struct inf *inf)
+gnu_nat_target::inf_detach (struct inf *inf)
 {
   struct proc *task = inf->task;
 
@@ -1290,7 +1265,7 @@ inf_detach (struct inf *inf)
 /* Attaches INF to the process with process id PID, returning it in a
    suspended state suitable for debugging.  */
 void
-inf_attach (struct inf *inf, int pid)
+gnu_nat_target::inf_attach (struct inf *inf, int pid)
 {
   inf_debug (inf, "attaching: %d", pid);
 
@@ -1303,7 +1278,7 @@ inf_attach (struct inf *inf, int pid)
 
 /* Makes sure that we've got our exception ports entrenched in the process.  */
 void
-inf_steal_exc_ports (struct inf *inf)
+gnu_nat_target::inf_steal_exc_ports (struct inf *inf)
 {
   struct proc *thread;
 
@@ -1318,7 +1293,7 @@ inf_steal_exc_ports (struct inf *inf)
 
 /* Makes sure the process has its own exception ports.  */
 void
-inf_restore_exc_ports (struct inf *inf)
+gnu_nat_target::inf_restore_exc_ports (struct inf *inf)
 {
   struct proc *thread;
 
@@ -1336,7 +1311,7 @@ inf_restore_exc_ports (struct inf *inf)
    signal 0, will continue it.  INF is assumed to be in a paused state, and
    the resume_sc's of INF's threads may be affected.  */
 void
-inf_signal (struct inf *inf, enum gdb_signal sig)
+gnu_nat_target::inf_signal (struct inf *inf, enum gdb_signal sig)
 {
   kern_return_t err = 0;
   int host_sig = gdb_signal_to_host (sig);
@@ -1424,7 +1399,7 @@ inf_signal (struct inf *inf, enum gdb_si
 /* Continue INF without delivering a signal.  This is meant to be used
    when INF does not have a message port.  */
 void
-inf_continue (struct inf *inf)
+gnu_nat_target::inf_continue (struct inf *inf)
 {
   process_t proc;
   kern_return_t err = proc_pid2proc (proc_server, inf->pid, &proc);
@@ -1455,13 +1430,7 @@ struct inf *gnu_current_inf = 0;
 
 /* The inferior being waited for by gnu_wait.  Since GDB is decidely not
    multi-threaded, we don't bother to lock this.  */
-struct inf *waiting_inf;
-
-/* MIG stubs are not yet ready for C++ compilation.  */
-extern "C" int exc_server (mach_msg_header_t *, mach_msg_header_t *);
-extern "C" int msg_reply_server (mach_msg_header_t *, mach_msg_header_t *);
-extern "C" int notify_server (mach_msg_header_t *, mach_msg_header_t *);
-extern "C" int process_reply_server (mach_msg_header_t *, mach_msg_header_t *);
+static struct inf *waiting_inf;
 
 /* Wait for something to happen in the inferior, returning what in STATUS.  */
 
@@ -1849,7 +1818,7 @@ S_proc_wait_reply (mach_port_t reply, ke
 	  inf->no_wait = 1;
 
 	  /* Since we can't see the inferior's signals, don't trap them.  */
-	  inf_set_traced (inf, 0);
+	  gnu_target->inf_set_traced (inf, 0);
 	}
     }
   else if (pid == inf->pid)
@@ -2143,21 +2112,23 @@ gnu_nat_target::create_inferior (const c
 
   inf_debug (inf, "creating inferior");
 
+  if (!target_is_pushed (this))
+    push_target (this);
+
   pid = fork_inferior (exec_file, allargs, env, gnu_ptrace_me,
                        NULL, NULL, NULL, NULL);
 
   /* We have something that executes now.  We'll be running through
      the shell at this point (if startup-with-shell is true), but the
      pid shouldn't change.  */
-  add_thread_silent (ptid_t (pid));
+  thread_info *thr = add_thread_silent (this, ptid_t (pid));
+  switch_to_thread (thr);
 
   /* Attach to the now stopped child, which is actually a shell...  */
   inf_debug (inf, "attaching to child: %d", pid);
 
   inf_attach (inf, pid);
 
-  push_target (this);
-
   inf->pending_execs = 1;
   inf->nomsg = 1;
   inf->traced = 1;
@@ -2167,7 +2138,7 @@ gnu_nat_target::create_inferior (const c
   inf_resume (inf);
 
   /* We now have thread info.  */
-  thread_change_ptid (inferior_ptid,
+  thread_change_ptid (this, inferior_ptid,
 		      ptid_t (inf->pid, inf_pick_first_thread (), 0));
 
   gdb_startup_inferior (pid, START_INFERIOR_TRAPS_EXPECTED);
@@ -2195,7 +2166,6 @@ void
 gnu_nat_target::attach (const char *args, int from_tty)
 {
   int pid;
-  char *exec_file;
   struct inf *inf = cur_inf ();
   struct inferior *inferior;
 
@@ -2206,7 +2176,7 @@ gnu_nat_target::attach (const char *args
 
   if (from_tty)
     {
-      exec_file = (char *) get_exec_file (0);
+      const char *exec_file = get_exec_file (0);
 
       if (exec_file)
 	printf_unfiltered ("Attaching to program `%s', pid %d\n",
@@ -2227,7 +2197,9 @@ gnu_nat_target::attach (const char *args
 
   inf_update_procs (inf);
 
-  inferior_ptid = ptid_t (pid, inf_pick_first_thread (), 0);
+  thread_info *thr
+    = find_thread_ptid (this, ptid_t (pid, inf_pick_first_thread ()));
+  switch_to_thread (thr);
 
   /* We have to initialize the terminal settings now, since the code
      below might try to restore them.  */
@@ -2256,11 +2228,9 @@ gnu_nat_target::attach (const char *args
 void
 gnu_nat_target::detach (inferior *inf, int from_tty)
 {
-  int pid;
-
   if (from_tty)
     {
-      char *exec_file = get_exec_file (0);
+      const char *exec_file = get_exec_file (0);
 
       if (exec_file)
 	printf_unfiltered ("Detaching from program `%s' pid %d\n",
@@ -2269,12 +2239,10 @@ gnu_nat_target::detach (inferior *inf, i
 	printf_unfiltered ("Detaching from pid %d\n", gnu_current_inf->pid);
     }
 
-  pid = gnu_current_inf->pid;
-
   inf_detach (gnu_current_inf);
 
-  inferior_ptid = null_ptid;
-  detach_inferior (find_inferior_pid (pid));
+  switch_to_no_thread ();
+  detach_inferior (inf);
 
   maybe_unpush_target ();
 }
@@ -2552,7 +2520,6 @@ gnu_xfer_auxv (gdb_byte *readbuf, const
 		    ? gnu_current_inf->task->port : 0)
 		 : 0);
   process_t proc;
-  int res;
   kern_return_t err;
   vm_address_t entry;
   ElfW(auxv_t) auxv[2];
@@ -2642,7 +2609,6 @@ gnu_nat_target::find_memory_regions (fin
       mach_port_t object_name;
       vm_offset_t offset;
       vm_size_t region_length = VM_MAX_ADDRESS - region_address;
-      vm_address_t old_address = region_address;
 
       err = vm_region (task,
 		       &region_address,
@@ -2841,7 +2807,7 @@ set_task_pause_cmd (int arg, int from_tt
   if (old_sc == 0 && inf->pause_sc != 0)
     /* If the task is currently unsuspended, immediately suspend it,
        otherwise wait until the next time it gets control.  */
-    inf_suspend (inf);
+    gnu_target->inf_suspend (inf);
 }
 
 static void
@@ -2937,8 +2903,8 @@ show_thread_default_detach_sc_cmd (const
 
 /* Steal a send right called NAME in the inferior task, and make it PROC's
    saved exception port.  */
-static void
-steal_exc_port (struct proc *proc, mach_port_t name)
+void
+gnu_nat_target::steal_exc_port (struct proc *proc, mach_port_t name)
 {
   kern_return_t err;
   mach_port_t port;
@@ -2979,7 +2945,7 @@ set_task_exc_port_cmd (const char *args,
 
   if (!args)
     error (_("No argument to \"set task exception-port\" command."));
-  steal_exc_port (inf->task, parse_and_eval_address (args));
+  gnu_target->steal_exc_port (inf->task, parse_and_eval_address (args));
 }
 
 static void
@@ -3039,7 +3005,7 @@ set_signals_cmd (int arg, int from_tty)
 
   if (inf->task && inf->want_signals != inf->traced)
     /* Make this take effect immediately in a running process.  */
-    inf_set_traced (inf, inf->want_signals);
+    gnu_target->inf_set_traced (inf, inf->want_signals);
 }
 
 static void
@@ -3337,7 +3303,7 @@ set_thread_pause_cmd (const char *args,
   if (old_sc == 0 && thread->pause_sc != 0 && thread->inf->pause_sc == 0)
     /* If the task is currently unsuspended, immediately suspend it,
        otherwise wait until the next time it gets control.  */
-    inf_suspend (thread->inf);
+    gnu_target->inf_suspend (thread->inf);
 }
 
 static void
@@ -3398,7 +3364,7 @@ set_thread_exc_port_cmd (const char *arg
 
   if (!args)
     error (_("No argument to \"set thread exception-port\" command."));
-  steal_exc_port (thread, parse_and_eval_address (args));
+  gnu_target->steal_exc_port (thread, parse_and_eval_address (args));
 }
 
 #if 0
@@ -3501,8 +3467,9 @@ to the thread's initial suspend-count wh
 	   &thread_cmd_list);
 }
 
+void _initialize_gnu_nat ();
 void
-_initialize_gnu_nat (void)
+_initialize_gnu_nat ()
 {
   proc_server = getproc ();
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gnu-nat.h ./gdb/gnu-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gnu-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gnu-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Common things used by the various *gnu-nat.c files
-   Copyright (C) 1995-2020 Free Software Foundation, Inc.
+   Copyright (C) 1995-2021 Free Software Foundation, Inc.
 
    Written by Miles Bader <miles@gnu.ai.mit.edu>
 
@@ -96,12 +96,6 @@ struct proc
 
 extern int __proc_pid (struct proc *proc);
 
-/* Make sure that the state field in PROC is up to date, and return a
-   pointer to it, or 0 if something is wrong.  If WILL_MODIFY is true,
-   makes sure that the thread is stopped and aborted first, and sets
-   the state_changed field in PROC to true.  */
-extern thread_state_t proc_get_state (struct proc *proc, int will_modify);
-
 /* Return printable description of proc.  */
 extern char *proc_string (struct proc *proc);
 
@@ -111,7 +105,7 @@ extern char *proc_string (struct proc *p
 	      __proc_pid (__proc), __proc->tid, \
 	      host_address_to_string (__proc) , ##args); } while (0)
 
-extern int gnu_debug_flag;
+extern bool gnu_debug_flag;
 
 #define debug(msg, args...) \
  do { if (gnu_debug_flag) \
@@ -148,6 +142,52 @@ struct gnu_nat_target : public inf_child
   bool thread_alive (ptid_t ptid) override;
   std::string pid_to_str (ptid_t) override;
   void stop (ptid_t) override;
+
+  void inf_validate_procs (struct inf *inf);
+  void inf_suspend (struct inf *inf);
+  void inf_set_traced (struct inf *inf, int on);
+  void steal_exc_port (struct proc *proc, mach_port_t name);
+
+  /* Make sure that the state field in PROC is up to date, and return a
+     pointer to it, or 0 if something is wrong.  If WILL_MODIFY is true,
+     makes sure that the thread is stopped and aborted first, and sets
+     the state_changed field in PROC to true.  */
+  thread_state_t proc_get_state (struct proc *proc, int will_modify);
+
+private:
+  void inf_clear_wait (struct inf *inf);
+  void inf_cleanup (struct inf *inf);
+  void inf_startup (struct inf *inf, int pid);
+  int inf_update_suspends (struct inf *inf);
+  void inf_set_pid (struct inf *inf, pid_t pid);
+  void inf_steal_exc_ports (struct inf *inf);
+  void inf_validate_procinfo (struct inf *inf);
+  void inf_validate_task_sc (struct inf *inf);
+  void inf_restore_exc_ports (struct inf *inf);
+  void inf_set_threads_resume_sc (struct inf *inf,
+  				struct proc *run_thread,
+  				int run_others);
+  int inf_set_threads_resume_sc_for_signal_thread (struct inf *inf);
+  void inf_resume (struct inf *inf);
+  void inf_set_step_thread (struct inf *inf, struct proc *proc);
+  void inf_detach (struct inf *inf);
+  void inf_attach (struct inf *inf, int pid);
+  void inf_signal (struct inf *inf, enum gdb_signal sig);
+  void inf_continue (struct inf *inf);
+
+  struct proc *make_proc (struct inf *inf, mach_port_t port, int tid);
+  void proc_abort (struct proc *proc, int force);
+  struct proc *_proc_free (struct proc *proc);
+  int proc_update_sc (struct proc *proc);
+  kern_return_t proc_get_exception_port (struct proc *proc, mach_port_t * port);
+  kern_return_t proc_set_exception_port (struct proc *proc, mach_port_t port);
+  mach_port_t _proc_get_exc_port (struct proc *proc);
+  void proc_steal_exc_port (struct proc *proc, mach_port_t exc_port);
+  void proc_restore_exc_port (struct proc *proc);
+  int proc_trace (struct proc *proc, int set);
 };
 
+/* The final/concrete instance.  */
+extern gnu_nat_target *gnu_target;
+
 #endif /* GNU_NAT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gnu-nat-mig.h ./gdb/gnu-nat-mig.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gnu-nat-mig.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/gnu-nat-mig.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,31 @@
+/* Common things used by the various *gnu-nat.c files
+   Copyright (C) 2020-2021 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/>.  */
+
+#ifndef GNU_NAT_MIG_H
+#define GNU_NAT_MIG_H
+
+#include <mach/boolean.h>
+#include <mach/message.h>
+
+boolean_t exc_server (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
+boolean_t msg_reply_server (mach_msg_header_t *InHeadP,
+			    mach_msg_header_t *OutHeadP);
+boolean_t notify_server (mach_msg_header_t *InHeadP,
+			 mach_msg_header_t *OutHeadP);
+boolean_t process_reply_server (mach_msg_header_t *InHeadP,
+				mach_msg_header_t *OutHeadP);
+
+#endif /* GNU_NAT_MIG_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gnu-v2-abi.c ./gdb/gnu-v2-abi.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gnu-v2-abi.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gnu-v2-abi.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Abstraction of GNU v2 abi.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    Contributed by Daniel Berlin <dberlin@redhat.com>
 
@@ -132,8 +132,8 @@ gnuv2_virtual_fn_field (struct value **a
 
   /* With older versions of g++, the vtbl field pointed to an array
      of structures.  Nowadays it points directly to the structure.  */
-  if (TYPE_CODE (value_type (vtbl)) == TYPE_CODE_PTR
-      && TYPE_CODE (TYPE_TARGET_TYPE (value_type (vtbl))) == TYPE_CODE_ARRAY)
+  if (value_type (vtbl)->code () == TYPE_CODE_PTR
+      && TYPE_TARGET_TYPE (value_type (vtbl))->code () == TYPE_CODE_ARRAY)
     {
       /* Handle the case where the vtbl field points to an
          array of structures.  */
@@ -155,7 +155,7 @@ gnuv2_virtual_fn_field (struct value **a
 
   entry_type = check_typedef (value_type (entry));
 
-  if (TYPE_CODE (entry_type) == TYPE_CODE_STRUCT)
+  if (entry_type->code () == TYPE_CODE_STRUCT)
     {
       /* Move the `this' pointer according to the virtual function table.  */
       set_value_offset (arg1, value_offset (arg1)
@@ -169,7 +169,7 @@ gnuv2_virtual_fn_field (struct value **a
 
       vfn = value_field (entry, 2);
     }
-  else if (TYPE_CODE (entry_type) == TYPE_CODE_PTR)
+  else if (entry_type->code () == TYPE_CODE_PTR)
     vfn = entry;
   else
     error (_("I'm confused:  virtual function table has bad type"));
@@ -206,7 +206,7 @@ gnuv2_value_rtti_type (struct value *v,
   known_type = value_type (v);
   known_type = check_typedef (known_type);
   /* RTTI works only or class objects.  */
-  if (TYPE_CODE (known_type) != TYPE_CODE_STRUCT)
+  if (known_type->code () != TYPE_CODE_STRUCT)
     return NULL;
 
   /* Plan on this changing in the future as i get around to setting
@@ -312,9 +312,9 @@ vb_match (struct type *type, int index,
 
   /* It's a virtual baseclass pointer, now we just need to find out whether
      it is for this baseclass.  */
-  fieldtype = TYPE_FIELD_TYPE (type, index);
+  fieldtype = type->field (index).type ();
   if (fieldtype == NULL
-      || TYPE_CODE (fieldtype) != TYPE_CODE_PTR)
+      || fieldtype->code () != TYPE_CODE_PTR)
     /* "Can't happen".  */
     return 0;
 
@@ -325,10 +325,10 @@ vb_match (struct type *type, int index,
   if (TYPE_TARGET_TYPE (fieldtype) == basetype)
     return 1;
 
-  if (TYPE_NAME (basetype) != NULL
-      && TYPE_NAME (TYPE_TARGET_TYPE (fieldtype)) != NULL
-      && strcmp (TYPE_NAME (basetype),
-		 TYPE_NAME (TYPE_TARGET_TYPE (fieldtype))) == 0)
+  if (basetype->name () != NULL
+      && TYPE_TARGET_TYPE (fieldtype)->name () != NULL
+      && strcmp (basetype->name (),
+		 TYPE_TARGET_TYPE (fieldtype)->name ()) == 0)
     return 1;
   return 0;
 }
@@ -348,7 +348,7 @@ gnuv2_baseclass_offset (struct type *typ
   if (BASETYPE_VIA_VIRTUAL (type, index))
     {
       /* Must hunt for the pointer to this virtual baseclass.  */
-      int i, len = TYPE_NFIELDS (type);
+      int i, len = type->num_fields ();
       int n_baseclasses = TYPE_N_BASECLASSES (type);
 
       /* First look for the virtual baseclass pointer
@@ -362,7 +362,7 @@ gnuv2_baseclass_offset (struct type *typ
 	      int field_length;
 	      CORE_ADDR addr;
 
-	      field_type = check_typedef (TYPE_FIELD_TYPE (type, i));
+	      field_type = check_typedef (type->field (i).type ());
 	      field_offset = TYPE_FIELD_BITPOS (type, i) / 8;
 	      field_length = TYPE_LENGTH (field_type);
 
@@ -413,8 +413,9 @@ init_gnuv2_ops (void)
   gnu_v2_abi_ops.baseclass_offset = gnuv2_baseclass_offset;
 }
 
+void _initialize_gnu_v2_abi ();
 void
-_initialize_gnu_v2_abi (void)
+_initialize_gnu_v2_abi ()
 {
   init_gnuv2_ops ();
   register_cp_abi (&gnu_v2_abi_ops);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gnu-v3-abi.c ./gdb/gnu-v3-abi.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gnu-v3-abi.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gnu-v3-abi.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Abstraction of GNU v3 abi.
    Contributed by Jim Blandy <jimb@redhat.com>
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -23,12 +23,14 @@
 #include "cp-abi.h"
 #include "cp-support.h"
 #include "demangle.h"
+#include "dwarf2.h"
 #include "objfiles.h"
 #include "valprint.h"
 #include "c-lang.h"
 #include "typeprint.h"
 #include <algorithm>
 #include "cli/cli-style.h"
+#include "dwarf2/loc.h"
 
 static struct cp_abi_ops gnu_v3_abi_ops;
 
@@ -133,39 +135,39 @@ build_gdb_vtable_type (struct gdbarch *a
 
   /* ptrdiff_t vcall_and_vbase_offsets[0]; */
   FIELD_NAME (*field) = "vcall_and_vbase_offsets";
-  FIELD_TYPE (*field) = lookup_array_range_type (ptrdiff_type, 0, -1);
+  field->set_type (lookup_array_range_type (ptrdiff_type, 0, -1));
   SET_FIELD_BITPOS (*field, offset * TARGET_CHAR_BIT);
-  offset += TYPE_LENGTH (FIELD_TYPE (*field));
+  offset += TYPE_LENGTH (field->type ());
   field++;
 
   /* ptrdiff_t offset_to_top; */
   FIELD_NAME (*field) = "offset_to_top";
-  FIELD_TYPE (*field) = ptrdiff_type;
+  field->set_type (ptrdiff_type);
   SET_FIELD_BITPOS (*field, offset * TARGET_CHAR_BIT);
-  offset += TYPE_LENGTH (FIELD_TYPE (*field));
+  offset += TYPE_LENGTH (field->type ());
   field++;
 
   /* void *type_info; */
   FIELD_NAME (*field) = "type_info";
-  FIELD_TYPE (*field) = void_ptr_type;
+  field->set_type (void_ptr_type);
   SET_FIELD_BITPOS (*field, offset * TARGET_CHAR_BIT);
-  offset += TYPE_LENGTH (FIELD_TYPE (*field));
+  offset += TYPE_LENGTH (field->type ());
   field++;
 
   /* void (*virtual_functions[0]) (); */
   FIELD_NAME (*field) = "virtual_functions";
-  FIELD_TYPE (*field) = lookup_array_range_type (ptr_to_void_fn_type, 0, -1);
+  field->set_type (lookup_array_range_type (ptr_to_void_fn_type, 0, -1));
   SET_FIELD_BITPOS (*field, offset * TARGET_CHAR_BIT);
-  offset += TYPE_LENGTH (FIELD_TYPE (*field));
+  offset += TYPE_LENGTH (field->type ());
   field++;
 
   /* We assumed in the allocation above that there were four fields.  */
   gdb_assert (field == (field_list + 4));
 
   t = arch_type (arch, TYPE_CODE_STRUCT, offset * TARGET_CHAR_BIT, NULL);
-  TYPE_NFIELDS (t) = field - field_list;
-  TYPE_FIELDS (t) = field_list;
-  TYPE_NAME (t) = "gdb_gnu_v3_abi_vtable";
+  t->set_num_fields (field - field_list);
+  t->set_fields (field_list);
+  t->set_name ("gdb_gnu_v3_abi_vtable");
   INIT_CPLUS_SPECIFIC (t);
 
   return make_type_with_address_space (t, TYPE_INSTANCE_FLAG_CODE_SPACE);
@@ -180,7 +182,7 @@ vtable_ptrdiff_type (struct gdbarch *gdb
     = (struct type *) gdbarch_data (gdbarch, vtable_type_gdbarch_data);
 
   /* The "offset_to_top" field has the appropriate (ptrdiff_t) type.  */
-  return TYPE_FIELD_TYPE (vtable_type, vtable_field_offset_to_top);
+  return vtable_type->field (vtable_field_offset_to_top).type ();
 }
 
 /* Return the offset from the start of the imaginary `struct
@@ -206,10 +208,10 @@ gnuv3_dynamic_class (struct type *type)
   int fieldnum, fieldelem;
 
   type = check_typedef (type);
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (type) == TYPE_CODE_UNION);
+  gdb_assert (type->code () == TYPE_CODE_STRUCT
+	      || type->code () == TYPE_CODE_UNION);
 
-  if (TYPE_CODE (type) == TYPE_CODE_UNION)
+  if (type->code () == TYPE_CODE_UNION)
     return 0;
 
   if (TYPE_CPLUS_DYNAMIC (type))
@@ -219,7 +221,7 @@ gnuv3_dynamic_class (struct type *type)
 
   for (fieldnum = 0; fieldnum < TYPE_N_BASECLASSES (type); fieldnum++)
     if (BASETYPE_VIA_VIRTUAL (type, fieldnum)
-	|| gnuv3_dynamic_class (TYPE_FIELD_TYPE (type, fieldnum)))
+	|| gnuv3_dynamic_class (type->field (fieldnum).type ()))
       {
 	TYPE_CPLUS_DYNAMIC (type) = 1;
 	return 1;
@@ -257,7 +259,7 @@ gnuv3_get_vtable (struct gdbarch *gdbarc
   CORE_ADDR vtable_address;
 
   container_type = check_typedef (container_type);
-  gdb_assert (TYPE_CODE (container_type) == TYPE_CODE_STRUCT);
+  gdb_assert (container_type->code () == TYPE_CODE_STRUCT);
 
   /* If this type does not have a virtual table, don't read the first
      field.  */
@@ -301,7 +303,7 @@ gnuv3_rtti_type (struct value *value,
   const char *atsign;
 
   /* We only have RTTI for dynamic class objects.  */
-  if (TYPE_CODE (values_type) != TYPE_CODE_STRUCT
+  if (values_type->code () != TYPE_CODE_STRUCT
       || !gnuv3_dynamic_class (values_type))
     return NULL;
 
@@ -416,7 +418,7 @@ gnuv3_virtual_fn_field (struct value **v
   struct gdbarch *gdbarch;
 
   /* Some simple sanity checks.  */
-  if (TYPE_CODE (values_type) != TYPE_CODE_STRUCT)
+  if (values_type->code () != TYPE_CODE_STRUCT)
     error (_("Only classes can have virtual functions."));
 
   /* Determine architecture.  */
@@ -460,6 +462,30 @@ gnuv3_baseclass_offset (struct type *typ
   if (!BASETYPE_VIA_VIRTUAL (type, index))
     return TYPE_BASECLASS_BITPOS (type, index) / 8;
 
+  /* If we have a DWARF expression for the offset, evaluate it.  */
+  if (TYPE_FIELD_LOC_KIND (type, index) == FIELD_LOC_KIND_DWARF_BLOCK)
+    {
+      struct dwarf2_property_baton baton;
+      baton.property_type
+	= lookup_pointer_type (type->field (index).type ());
+      baton.locexpr = *TYPE_FIELD_DWARF_BLOCK (type, index);
+
+      struct dynamic_prop prop;
+      prop.set_locexpr (&baton);
+
+      struct property_addr_info addr_stack;
+      addr_stack.type = type;
+      /* Note that we don't set "valaddr" here.  Doing so causes
+	 regressions.  FIXME.  */
+      addr_stack.addr = address + embedded_offset;
+      addr_stack.next = nullptr;
+
+      CORE_ADDR result;
+      if (dwarf2_evaluate_property (&prop, nullptr, &addr_stack, &result,
+				    true))
+	return (int) (result - addr_stack.addr);
+    }
+
   /* To access a virtual base, we need to use the vbase offset stored in
      our vtable.  Recent GCC versions provide this information.  If it isn't
      available, we could get what we needed from RTTI, or from drawing the
@@ -523,7 +549,7 @@ gnuv3_find_method_in (struct type *domai
 	continue;
 
       pos = TYPE_BASECLASS_BITPOS (domain, i) / 8;
-      basetype = TYPE_FIELD_TYPE (domain, i);
+      basetype = domain->field (i).type ();
       /* Recurse with a modified adjustment.  We don't need to adjust
 	 voffset.  */
       if (adjustment >= pos && adjustment < pos + TYPE_LENGTH (basetype))
@@ -822,7 +848,7 @@ compute_vtable_size (htab_t offset_hash,
   void **slot;
   struct value_and_voffset search_vo, *current_vo;
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_STRUCT);
+  gdb_assert (type->code () == TYPE_CODE_STRUCT);
 
   /* If the object is not dynamic, then we are done; as it cannot have
      dynamic base types either.  */
@@ -937,7 +963,7 @@ gnuv3_print_vtable (struct value *value)
 
   value = coerce_ref (value);
   type = check_typedef (value_type (value));
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  if (type->code () == TYPE_CODE_PTR)
     {
       value = value_ind (value);
       type = check_typedef (value_type (value));
@@ -955,7 +981,7 @@ gnuv3_print_vtable (struct value *value)
   gdbarch = get_type_arch (type);
 
   vtable = NULL;
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     vtable = gnuv3_get_vtable (gdbarch, type,
 			       value_as_address (value_addr (value)));
 
@@ -1012,24 +1038,24 @@ build_std_type_info_type (struct gdbarch
 
   /* The vtable.  */
   FIELD_NAME (*field) = "_vptr.type_info";
-  FIELD_TYPE (*field) = void_ptr_type;
+  field->set_type (void_ptr_type);
   SET_FIELD_BITPOS (*field, offset * TARGET_CHAR_BIT);
-  offset += TYPE_LENGTH (FIELD_TYPE (*field));
+  offset += TYPE_LENGTH (field->type ());
   field++;
 
   /* The name.  */
   FIELD_NAME (*field) = "__name";
-  FIELD_TYPE (*field) = char_ptr_type;
+  field->set_type (char_ptr_type);
   SET_FIELD_BITPOS (*field, offset * TARGET_CHAR_BIT);
-  offset += TYPE_LENGTH (FIELD_TYPE (*field));
+  offset += TYPE_LENGTH (field->type ());
   field++;
 
   gdb_assert (field == (field_list + 2));
 
   t = arch_type (arch, TYPE_CODE_STRUCT, offset * TARGET_CHAR_BIT, NULL);
-  TYPE_NFIELDS (t) = field - field_list;
-  TYPE_FIELDS (t) = field_list;
-  TYPE_NAME (t) = "gdb_gnu_v3_type_info";
+  t->set_num_fields (field - field_list);
+  t->set_fields (field_list);
+  t->set_name ("gdb_gnu_v3_type_info");
   INIT_CPLUS_SPECIFIC (t);
 
   return t;
@@ -1063,7 +1089,8 @@ gnuv3_get_typeid (struct value *value)
   struct type *type;
   struct gdbarch *gdbarch;
   struct value *result;
-  std::string type_name, canonical;
+  std::string type_name;
+  gdb::unique_xmalloc_ptr<char> canonical;
 
   /* We have to handle values a bit trickily here, to allow this code
      to work properly with non_lvalue values that are really just
@@ -1075,7 +1102,7 @@ gnuv3_get_typeid (struct value *value)
 
   /* In the non_lvalue case, a reference might have slipped through
      here.  */
-  if (TYPE_CODE (type) == TYPE_CODE_REF)
+  if (type->code () == TYPE_CODE_REF)
     type = check_typedef (TYPE_TARGET_TYPE (type));
 
   /* Ignore top-level cv-qualifiers.  */
@@ -1091,14 +1118,15 @@ gnuv3_get_typeid (struct value *value)
      uses.  E.g., GDB tends to use "const char *" as a type name, but
      the demangler uses "char const *".  */
   canonical = cp_canonicalize_string (type_name.c_str ());
-  if (!canonical.empty ())
-    type_name = canonical;
+  const char *name = (canonical == nullptr
+		      ? type_name.c_str ()
+		      : canonical.get ());
 
   typeinfo_type = gnuv3_get_typeid_type (gdbarch);
 
   /* We check for lval_memory because in the "typeid (type-id)" case,
      the type is passed via a not_lval value object.  */
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
+  if (type->code () == TYPE_CODE_STRUCT
       && value_lval_const (value) == lval_memory
       && gnuv3_dynamic_class (type))
     {
@@ -1108,19 +1136,19 @@ gnuv3_get_typeid (struct value *value)
       vtable = gnuv3_get_vtable (gdbarch, type, address);
       if (vtable == NULL)
 	error (_("cannot find typeinfo for object of type '%s'"),
-	       type_name.c_str ());
+	       name);
       typeinfo_value = value_field (vtable, vtable_field_type_info);
       result = value_ind (value_cast (make_pointer_type (typeinfo_type, NULL),
 				      typeinfo_value));
     }
   else
     {
-      std::string sym_name = std::string ("typeinfo for ") + type_name;
+      std::string sym_name = std::string ("typeinfo for ") + name;
       bound_minimal_symbol minsym
 	= lookup_minimal_symbol (sym_name.c_str (), NULL, NULL);
 
       if (minsym.minsym == NULL)
-	error (_("could not find typeinfo symbol for '%s'"), type_name.c_str ());
+	error (_("could not find typeinfo symbol for '%s'"), name);
 
       result = value_at_lazy (typeinfo_type, BMSYMBOL_VALUE_ADDRESS (minsym));
     }
@@ -1230,7 +1258,128 @@ gnuv3_skip_trampoline (struct frame_info
   return real_stop_pc;
 }
 
-/* Return nonzero if a type should be passed by reference.
+/* A member function is in one these states.  */
+
+enum definition_style
+{
+  DOES_NOT_EXIST_IN_SOURCE,
+  DEFAULTED_INSIDE,
+  DEFAULTED_OUTSIDE,
+  DELETED,
+  EXPLICIT,
+};
+
+/* Return how the given field is defined.  */
+
+static definition_style
+get_def_style (struct fn_field *fn, int fieldelem)
+{
+  if (TYPE_FN_FIELD_DELETED (fn, fieldelem))
+    return DELETED;
+
+  if (TYPE_FN_FIELD_ARTIFICIAL (fn, fieldelem))
+    return DOES_NOT_EXIST_IN_SOURCE;
+
+  switch (TYPE_FN_FIELD_DEFAULTED (fn, fieldelem))
+    {
+    case DW_DEFAULTED_no:
+      return EXPLICIT;
+    case DW_DEFAULTED_in_class:
+      return DEFAULTED_INSIDE;
+    case DW_DEFAULTED_out_of_class:
+      return DEFAULTED_OUTSIDE;
+    default:
+      break;
+    }
+
+  return EXPLICIT;
+}
+
+/* Helper functions to determine whether the given definition style
+   denotes that the definition is user-provided or implicit.
+   Being defaulted outside the class decl counts as an explicit
+   user-definition, while being defaulted inside is implicit.  */
+
+static bool
+is_user_provided_def (definition_style def)
+{
+  return def == EXPLICIT || def == DEFAULTED_OUTSIDE;
+}
+
+static bool
+is_implicit_def (definition_style def)
+{
+  return def == DOES_NOT_EXIST_IN_SOURCE || def == DEFAULTED_INSIDE;
+}
+
+/* Helper function to decide if METHOD_TYPE is a copy/move
+   constructor type for CLASS_TYPE.  EXPECTED is the expected
+   type code for the "right-hand-side" argument.
+   This function is supposed to be used by the IS_COPY_CONSTRUCTOR_TYPE
+   and IS_MOVE_CONSTRUCTOR_TYPE functions below.  Normally, you should
+   not need to call this directly.  */
+
+static bool
+is_copy_or_move_constructor_type (struct type *class_type,
+				  struct type *method_type,
+				  type_code expected)
+{
+  /* The method should take at least two arguments...  */
+  if (method_type->num_fields () < 2)
+    return false;
+
+  /* ...and the second argument should be the same as the class
+     type, with the expected type code...  */
+  struct type *arg_type = method_type->field (1).type ();
+
+  if (arg_type->code () != expected)
+    return false;
+
+  struct type *target = check_typedef (TYPE_TARGET_TYPE (arg_type));
+  if (!(class_types_same_p (target, class_type)))
+    return false;
+
+  /* ...and if any of the remaining arguments don't have a default value
+     then this is not a copy or move constructor, but just a
+     constructor.  */
+  for (int i = 2; i < method_type->num_fields (); i++)
+    {
+      arg_type = method_type->field (i).type ();
+      /* FIXME aktemur/2019-10-31: As of this date, neither
+	 clang++-7.0.0 nor g++-8.2.0 produce a DW_AT_default_value
+	 attribute.  GDB is also not set to read this attribute, yet.
+	 Hence, we immediately return false if there are more than
+	 2 parameters.
+	 GCC bug link:
+	 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42959
+      */
+      return false;
+    }
+
+  return true;
+}
+
+/* Return true if METHOD_TYPE is a copy ctor type for CLASS_TYPE.  */
+
+static bool
+is_copy_constructor_type (struct type *class_type,
+			  struct type *method_type)
+{
+  return is_copy_or_move_constructor_type (class_type, method_type,
+					   TYPE_CODE_REF);
+}
+
+/* Return true if METHOD_TYPE is a move ctor type for CLASS_TYPE.  */
+
+static bool
+is_move_constructor_type (struct type *class_type,
+			  struct type *method_type)
+{
+  return is_copy_or_move_constructor_type (class_type, method_type,
+					   TYPE_CODE_RVALUE_REF);
+}
+
+/* Return pass-by-reference information for the given TYPE.
 
    The rule in the v3 ABI document comes from section 3.1.1.  If the
    type has a non-trivial copy constructor or destructor, then the
@@ -1238,32 +1387,59 @@ gnuv3_skip_trampoline (struct frame_info
    is one or perform the copy itself otherwise), pass the address of
    the copy, and then destroy the temporary (if necessary).
 
-   For return values with non-trivial copy constructors or
+   For return values with non-trivial copy/move constructors or
    destructors, space will be allocated in the caller, and a pointer
    will be passed as the first argument (preceding "this").
 
    We don't have a bulletproof mechanism for determining whether a
-   constructor or destructor is trivial.  For GCC and DWARF2 debug
-   information, we can check the artificial flag.
+   constructor or destructor is trivial.  For GCC and DWARF5 debug
+   information, we can check the calling_convention attribute,
+   the 'artificial' flag, the 'defaulted' attribute, and the
+   'deleted' attribute.  */
 
-   We don't do anything with the constructors or destructors,
-   but we have to get the argument passing right anyway.  */
-static int
+static struct language_pass_by_ref_info
 gnuv3_pass_by_reference (struct type *type)
 {
   int fieldnum, fieldelem;
 
   type = check_typedef (type);
 
+  /* Start with the default values.  */
+  struct language_pass_by_ref_info info;
+
+  bool has_cc_attr = false;
+  bool is_pass_by_value = false;
+  bool is_dynamic = false;
+  definition_style cctor_def = DOES_NOT_EXIST_IN_SOURCE;
+  definition_style dtor_def = DOES_NOT_EXIST_IN_SOURCE;
+  definition_style mctor_def = DOES_NOT_EXIST_IN_SOURCE;
+
   /* We're only interested in things that can have methods.  */
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-      && TYPE_CODE (type) != TYPE_CODE_UNION)
-    return 0;
+  if (type->code () != TYPE_CODE_STRUCT
+      && type->code () != TYPE_CODE_UNION)
+    return info;
+
+  /* The compiler may have emitted the calling convention attribute.
+     Note: GCC does not produce this attribute as of version 9.2.1.
+     Bug link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92418  */
+  if (TYPE_CPLUS_CALLING_CONVENTION (type) == DW_CC_pass_by_value)
+    {
+      has_cc_attr = true;
+      is_pass_by_value = true;
+      /* Do not return immediately.  We have to find out if this type
+	 is copy_constructible and destructible.  */
+    }
+
+  if (TYPE_CPLUS_CALLING_CONVENTION (type) == DW_CC_pass_by_reference)
+    {
+      has_cc_attr = true;
+      is_pass_by_value = false;
+    }
 
   /* A dynamic class has a non-trivial copy constructor.
      See c++98 section 12.8 Copying class objects [class.copy].  */
   if (gnuv3_dynamic_class (type))
-    return 1;
+    is_dynamic = true;
 
   for (fieldnum = 0; fieldnum < TYPE_NFN_FIELDS (type); fieldnum++)
     for (fieldelem = 0; fieldelem < TYPE_FN_FIELDLIST_LENGTH (type, fieldnum);
@@ -1273,44 +1449,75 @@ gnuv3_pass_by_reference (struct type *ty
 	const char *name = TYPE_FN_FIELDLIST_NAME (type, fieldnum);
 	struct type *fieldtype = TYPE_FN_FIELD_TYPE (fn, fieldelem);
 
-	/* If this function is marked as artificial, it is compiler-generated,
-	   and we assume it is trivial.  */
-	if (TYPE_FN_FIELD_ARTIFICIAL (fn, fieldelem))
-	  continue;
-
-	/* If we've found a destructor, we must pass this by reference.  */
 	if (name[0] == '~')
-	  return 1;
-
-	/* If the mangled name of this method doesn't indicate that it
-	   is a constructor, we're not interested.
-
-	   FIXME drow/2007-09-23: We could do this using the name of
-	   the method and the name of the class instead of dealing
-	   with the mangled name.  We don't have a convenient function
-	   to strip off both leading scope qualifiers and trailing
-	   template arguments yet.  */
-	if (!is_constructor_name (TYPE_FN_FIELD_PHYSNAME (fn, fieldelem))
-	    && !TYPE_FN_FIELD_CONSTRUCTOR (fn, fieldelem))
-	  continue;
-
-	/* If this method takes two arguments, and the second argument is
-	   a reference to this class, then it is a copy constructor.  */
-	if (TYPE_NFIELDS (fieldtype) == 2)
 	  {
-	    struct type *arg_type = TYPE_FIELD_TYPE (fieldtype, 1);
-
-	    if (TYPE_CODE (arg_type) == TYPE_CODE_REF)
+	    /* We've found a destructor.
+	       There should be at most one dtor definition.  */
+	    gdb_assert (dtor_def == DOES_NOT_EXIST_IN_SOURCE);
+	    dtor_def = get_def_style (fn, fieldelem);
+	  }
+	else if (is_constructor_name (TYPE_FN_FIELD_PHYSNAME (fn, fieldelem))
+		 || TYPE_FN_FIELD_CONSTRUCTOR (fn, fieldelem))
+	  {
+	    /* FIXME drow/2007-09-23: We could do this using the name of
+	       the method and the name of the class instead of dealing
+	       with the mangled name.  We don't have a convenient function
+	       to strip off both leading scope qualifiers and trailing
+	       template arguments yet.  */
+	    if (is_copy_constructor_type (type, fieldtype))
 	      {
-		struct type *arg_target_type;
+		/* There may be more than one cctors.  E.g.: one that
+		   take a const parameter and another that takes a
+		   non-const parameter.  Such as:
+
+		   class K {
+		     K (const K &k)...
+		     K (K &k)...
+		   };
+
+		   It is sufficient for the type to be non-trivial
+		   even only one of the cctors is explicit.
+		   Therefore, update the cctor_def value in the
+		   implicit -> explicit direction, not backwards.  */
 
-	        arg_target_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
-		if (class_types_same_p (arg_target_type, type))
-		  return 1;
+		if (is_implicit_def (cctor_def))
+		  cctor_def = get_def_style (fn, fieldelem);
+	      }
+	    else if (is_move_constructor_type (type, fieldtype))
+	      {
+		/* Again, there may be multiple move ctors.  Update the
+		   mctor_def value if we found an explicit def and the
+		   existing one is not explicit.  Otherwise retain the
+		   existing value.  */
+		if (is_implicit_def (mctor_def))
+		  mctor_def = get_def_style (fn, fieldelem);
 	      }
 	  }
       }
 
+  bool cctor_implicitly_deleted
+    = (mctor_def != DOES_NOT_EXIST_IN_SOURCE
+       && cctor_def == DOES_NOT_EXIST_IN_SOURCE);
+
+  bool cctor_explicitly_deleted = (cctor_def == DELETED);
+
+  if (cctor_implicitly_deleted || cctor_explicitly_deleted)
+    info.copy_constructible = false;
+
+  if (dtor_def == DELETED)
+    info.destructible = false;
+
+  info.trivially_destructible = is_implicit_def (dtor_def);
+
+  info.trivially_copy_constructible
+    = (is_implicit_def (cctor_def)
+       && !is_dynamic);
+
+  info.trivially_copyable
+    = (info.trivially_copy_constructible
+       && info.trivially_destructible
+       && !is_user_provided_def (mctor_def));
+
   /* Even if all the constructors and destructors were artificial, one
      of them may have invoked a non-artificial constructor or
      destructor in a base class.  If any base class needs to be passed
@@ -1318,12 +1525,39 @@ gnuv3_pass_by_reference (struct type *ty
      are constructed whenever this class is.  We do not need to worry
      about recursive loops here, since we are only looking at members
      of complete class type.  Also ignore any static members.  */
-  for (fieldnum = 0; fieldnum < TYPE_NFIELDS (type); fieldnum++)
-    if (! field_is_static (&TYPE_FIELD (type, fieldnum))
-        && gnuv3_pass_by_reference (TYPE_FIELD_TYPE (type, fieldnum)))
-      return 1;
+  for (fieldnum = 0; fieldnum < type->num_fields (); fieldnum++)
+    if (!field_is_static (&type->field (fieldnum)))
+      {
+	struct type *field_type = type->field (fieldnum).type ();
 
-  return 0;
+	/* For arrays, make the decision based on the element type.  */
+	if (field_type->code () == TYPE_CODE_ARRAY)
+	  field_type = check_typedef (TYPE_TARGET_TYPE (field_type));
+
+	struct language_pass_by_ref_info field_info
+	  = gnuv3_pass_by_reference (field_type);
+
+	if (!field_info.copy_constructible)
+	  info.copy_constructible = false;
+	if (!field_info.destructible)
+	  info.destructible = false;
+	if (!field_info.trivially_copyable)
+	  info.trivially_copyable = false;
+	if (!field_info.trivially_copy_constructible)
+	  info.trivially_copy_constructible = false;
+	if (!field_info.trivially_destructible)
+	  info.trivially_destructible = false;
+      }
+
+  /* Consistency check.  */
+  if (has_cc_attr && info.trivially_copyable != is_pass_by_value)
+    {
+      /* DWARF CC attribute is not the same as the inferred value;
+	 use the DWARF attribute.  */
+      info.trivially_copyable = is_pass_by_value;
+    }
+
+  return info;
 }
 
 static void
@@ -1360,8 +1594,9 @@ init_gnuv3_ops (void)
   gnu_v3_abi_ops.pass_by_reference = gnuv3_pass_by_reference;
 }
 
+void _initialize_gnu_v3_abi ();
 void
-_initialize_gnu_v3_abi (void)
+_initialize_gnu_v3_abi ()
 {
   init_gnuv3_ops ();
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go32-nat.c ./gdb/go32-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go32-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/go32-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Native debugging support for Intel x86 running DJGPP.
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
    Written by Robert Hoehne.
 
    This file is part of GDB.
@@ -507,7 +507,8 @@ go32_nat_target::wait (ptid_t ptid, stru
     }
 
   getcwd (child_cwd, sizeof (child_cwd)); /* in case it has changed */
-  chdir (current_directory);
+  if (current_directory != NULL)
+    chdir (current_directory);
 
   if (a_tss.tss_irqn == 0x21)
     {
@@ -752,14 +753,14 @@ go32_nat_target::create_inferior (const
   save_npx ();
 #endif
 
-  inferior_ptid = ptid_t (SOME_PID);
   inf = current_inferior ();
   inferior_appeared (inf, SOME_PID);
 
   if (!target_is_pushed (this))
     push_target (this);
 
-  add_thread_silent (inferior_ptid);
+  thread_info *thr = add_thread_silent (ptid_t (SOME_PID));
+  switch_to_thread (thr);
 
   clear_proceed_status (0);
   insert_breakpoints ();
@@ -769,8 +770,6 @@ go32_nat_target::create_inferior (const
 void
 go32_nat_target::mourn_inferior ()
 {
-  ptid_t ptid;
-
   redir_cmdline_delete (&child_cmd);
   resume_signal = -1;
   resume_is_step = 0;
@@ -786,8 +785,6 @@ go32_nat_target::mourn_inferior ()
      the OS cleans up when the debuggee exits.  */
   x86_cleanup_dregs ();
 
-  ptid = inferior_ptid;
-  inferior_ptid = null_ptid;
   prog_has_started = 0;
 
   generic_mourn_inferior ();
@@ -2074,14 +2071,9 @@ go32_pte_for_address (const char *arg, i
 
 static struct cmd_list_element *info_dos_cmdlist = NULL;
 
-static void
-go32_info_dos_command (const char *args, int from_tty)
-{
-  help_list (info_dos_cmdlist, "info dos ", class_info, gdb_stdout);
-}
-
+void _initialize_go32_nat ();
 void
-_initialize_go32_nat (void)
+_initialize_go32_nat ()
 {
   x86_dr_low.set_control = go32_set_dr7;
   x86_dr_low.set_addr = go32_set_dr;
@@ -2105,9 +2097,9 @@ _initialize_go32_nat (void)
   /* We are always processing GCC-compiled programs.  */
   processing_gcc_compilation = 2;
 
-  add_prefix_cmd ("dos", class_info, go32_info_dos_command, _("\
+  add_basic_prefix_cmd ("dos", class_info, _("\
 Print information specific to DJGPP (aka MS-DOS) debugging."),
-		  &info_dos_cmdlist, "info dos ", 0, &infolist);
+			&info_dos_cmdlist, "info dos ", 0, &infolist);
 
   add_cmd ("sysinfo", class_info, go32_sysinfo, _("\
 Display information about the target system, including CPU, OS, DPMI, etc."),
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-exp.c ./gdb/go-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-exp.c	2020-03-07 02:11:13.000000000 +0000
+++ ./gdb/go-exp.c	2021-05-21 02:00:06.000000000 +0000
@@ -1,21 +1,20 @@
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* Bison implementation for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   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/>.  */
 
@@ -28,13 +27,17 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -46,7 +49,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,14 +63,10 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
-
 
 
-/* Copy the first part of user declarations.  */
 
-/* Line 189 of yacc.c  */
+/* First part of user prologue.  */
 #line 52 "go-exp.y"
 
 
@@ -104,80 +103,96 @@ static int yylex (void);
 static void yyerror (const char *);
 
 
+#line 107 "go-exp.c.tmp"
 
-/* Line 189 of yacc.c  */
-#line 110 "go-exp.c.tmp"
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTRPTR nullptr
+#   else
+#    define YY_NULLPTRPTR 0
+#   endif
+#  else
+#   define YY_NULLPTRPTR ((void*)0)
+#  endif
+# endif
 
-/* Enabling traces.  */
+
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+#if YYDEBUG
+extern int yydebug;
 #endif
 
-
-/* Tokens.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     INT = 258,
-     FLOAT = 259,
-     RAW_STRING = 260,
-     STRING = 261,
-     CHAR = 262,
-     NAME = 263,
-     TYPENAME = 264,
-     COMPLETE = 265,
-     NAME_OR_INT = 266,
-     TRUE_KEYWORD = 267,
-     FALSE_KEYWORD = 268,
-     STRUCT_KEYWORD = 269,
-     INTERFACE_KEYWORD = 270,
-     TYPE_KEYWORD = 271,
-     CHAN_KEYWORD = 272,
-     SIZEOF_KEYWORD = 273,
-     LEN_KEYWORD = 274,
-     CAP_KEYWORD = 275,
-     NEW_KEYWORD = 276,
-     IOTA_KEYWORD = 277,
-     NIL_KEYWORD = 278,
-     CONST_KEYWORD = 279,
-     DOTDOTDOT = 280,
-     ENTRY = 281,
-     ERROR = 282,
-     BYTE_KEYWORD = 283,
-     DOLLAR_VARIABLE = 284,
-     ASSIGN_MODIFY = 285,
-     ABOVE_COMMA = 286,
-     OROR = 287,
-     ANDAND = 288,
-     ANDNOT = 289,
-     NOTEQUAL = 290,
-     EQUAL = 291,
-     GEQ = 292,
-     LEQ = 293,
-     RSH = 294,
-     LSH = 295,
-     DECREMENT = 296,
-     INCREMENT = 297,
-     UNARY = 298,
-     LEFT_ARROW = 299
-   };
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    INT = 258,                     /* INT  */
+    FLOAT = 259,                   /* FLOAT  */
+    RAW_STRING = 260,              /* RAW_STRING  */
+    STRING = 261,                  /* STRING  */
+    CHAR = 262,                    /* CHAR  */
+    NAME = 263,                    /* NAME  */
+    TYPENAME = 264,                /* TYPENAME  */
+    COMPLETE = 265,                /* COMPLETE  */
+    NAME_OR_INT = 266,             /* NAME_OR_INT  */
+    TRUE_KEYWORD = 267,            /* TRUE_KEYWORD  */
+    FALSE_KEYWORD = 268,           /* FALSE_KEYWORD  */
+    STRUCT_KEYWORD = 269,          /* STRUCT_KEYWORD  */
+    INTERFACE_KEYWORD = 270,       /* INTERFACE_KEYWORD  */
+    TYPE_KEYWORD = 271,            /* TYPE_KEYWORD  */
+    CHAN_KEYWORD = 272,            /* CHAN_KEYWORD  */
+    SIZEOF_KEYWORD = 273,          /* SIZEOF_KEYWORD  */
+    LEN_KEYWORD = 274,             /* LEN_KEYWORD  */
+    CAP_KEYWORD = 275,             /* CAP_KEYWORD  */
+    NEW_KEYWORD = 276,             /* NEW_KEYWORD  */
+    IOTA_KEYWORD = 277,            /* IOTA_KEYWORD  */
+    NIL_KEYWORD = 278,             /* NIL_KEYWORD  */
+    CONST_KEYWORD = 279,           /* CONST_KEYWORD  */
+    DOTDOTDOT = 280,               /* DOTDOTDOT  */
+    ENTRY = 281,                   /* ENTRY  */
+    ERROR = 282,                   /* ERROR  */
+    BYTE_KEYWORD = 283,            /* BYTE_KEYWORD  */
+    DOLLAR_VARIABLE = 284,         /* DOLLAR_VARIABLE  */
+    ASSIGN_MODIFY = 285,           /* ASSIGN_MODIFY  */
+    ABOVE_COMMA = 286,             /* ABOVE_COMMA  */
+    OROR = 287,                    /* OROR  */
+    ANDAND = 288,                  /* ANDAND  */
+    ANDNOT = 289,                  /* ANDNOT  */
+    EQUAL = 290,                   /* EQUAL  */
+    NOTEQUAL = 291,                /* NOTEQUAL  */
+    LEQ = 292,                     /* LEQ  */
+    GEQ = 293,                     /* GEQ  */
+    LSH = 294,                     /* LSH  */
+    RSH = 295,                     /* RSH  */
+    UNARY = 296,                   /* UNARY  */
+    INCREMENT = 297,               /* INCREMENT  */
+    DECREMENT = 298,               /* DECREMENT  */
+    LEFT_ARROW = 299               /* LEFT_ARROW  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
 #endif
-/* Tokens.  */
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define INT 258
 #define FLOAT 259
 #define RAW_STRING 260
@@ -210,25 +225,21 @@ static void yyerror (const char *);
 #define OROR 287
 #define ANDAND 288
 #define ANDNOT 289
-#define NOTEQUAL 290
-#define EQUAL 291
-#define GEQ 292
-#define LEQ 293
-#define RSH 294
-#define LSH 295
-#define DECREMENT 296
+#define EQUAL 290
+#define NOTEQUAL 291
+#define LEQ 292
+#define GEQ 293
+#define LSH 294
+#define RSH 295
+#define UNARY 296
 #define INCREMENT 297
-#define UNARY 298
+#define DECREMENT 298
 #define LEFT_ARROW 299
 
-
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
 #line 93 "go-exp.y"
 
     LONGEST lval;
@@ -251,58 +262,192 @@ typedef union YYSTYPE
     struct stoken_vector svec;
   
 
+#line 266 "go-exp.c.tmp"
 
-/* Line 214 of yacc.c  */
-#line 257 "go-exp.c.tmp"
-} YYSTYPE;
+};
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
+extern YYSTYPE yylval;
+
+int yyparse (void);
+
+
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_INT = 3,                        /* INT  */
+  YYSYMBOL_FLOAT = 4,                      /* FLOAT  */
+  YYSYMBOL_RAW_STRING = 5,                 /* RAW_STRING  */
+  YYSYMBOL_STRING = 6,                     /* STRING  */
+  YYSYMBOL_CHAR = 7,                       /* CHAR  */
+  YYSYMBOL_NAME = 8,                       /* NAME  */
+  YYSYMBOL_TYPENAME = 9,                   /* TYPENAME  */
+  YYSYMBOL_COMPLETE = 10,                  /* COMPLETE  */
+  YYSYMBOL_NAME_OR_INT = 11,               /* NAME_OR_INT  */
+  YYSYMBOL_TRUE_KEYWORD = 12,              /* TRUE_KEYWORD  */
+  YYSYMBOL_FALSE_KEYWORD = 13,             /* FALSE_KEYWORD  */
+  YYSYMBOL_STRUCT_KEYWORD = 14,            /* STRUCT_KEYWORD  */
+  YYSYMBOL_INTERFACE_KEYWORD = 15,         /* INTERFACE_KEYWORD  */
+  YYSYMBOL_TYPE_KEYWORD = 16,              /* TYPE_KEYWORD  */
+  YYSYMBOL_CHAN_KEYWORD = 17,              /* CHAN_KEYWORD  */
+  YYSYMBOL_SIZEOF_KEYWORD = 18,            /* SIZEOF_KEYWORD  */
+  YYSYMBOL_LEN_KEYWORD = 19,               /* LEN_KEYWORD  */
+  YYSYMBOL_CAP_KEYWORD = 20,               /* CAP_KEYWORD  */
+  YYSYMBOL_NEW_KEYWORD = 21,               /* NEW_KEYWORD  */
+  YYSYMBOL_IOTA_KEYWORD = 22,              /* IOTA_KEYWORD  */
+  YYSYMBOL_NIL_KEYWORD = 23,               /* NIL_KEYWORD  */
+  YYSYMBOL_CONST_KEYWORD = 24,             /* CONST_KEYWORD  */
+  YYSYMBOL_DOTDOTDOT = 25,                 /* DOTDOTDOT  */
+  YYSYMBOL_ENTRY = 26,                     /* ENTRY  */
+  YYSYMBOL_ERROR = 27,                     /* ERROR  */
+  YYSYMBOL_BYTE_KEYWORD = 28,              /* BYTE_KEYWORD  */
+  YYSYMBOL_DOLLAR_VARIABLE = 29,           /* DOLLAR_VARIABLE  */
+  YYSYMBOL_ASSIGN_MODIFY = 30,             /* ASSIGN_MODIFY  */
+  YYSYMBOL_31_ = 31,                       /* ','  */
+  YYSYMBOL_ABOVE_COMMA = 32,               /* ABOVE_COMMA  */
+  YYSYMBOL_33_ = 33,                       /* '='  */
+  YYSYMBOL_34_ = 34,                       /* '?'  */
+  YYSYMBOL_OROR = 35,                      /* OROR  */
+  YYSYMBOL_ANDAND = 36,                    /* ANDAND  */
+  YYSYMBOL_37_ = 37,                       /* '|'  */
+  YYSYMBOL_38_ = 38,                       /* '^'  */
+  YYSYMBOL_39_ = 39,                       /* '&'  */
+  YYSYMBOL_ANDNOT = 40,                    /* ANDNOT  */
+  YYSYMBOL_EQUAL = 41,                     /* EQUAL  */
+  YYSYMBOL_NOTEQUAL = 42,                  /* NOTEQUAL  */
+  YYSYMBOL_43_ = 43,                       /* '<'  */
+  YYSYMBOL_44_ = 44,                       /* '>'  */
+  YYSYMBOL_LEQ = 45,                       /* LEQ  */
+  YYSYMBOL_GEQ = 46,                       /* GEQ  */
+  YYSYMBOL_LSH = 47,                       /* LSH  */
+  YYSYMBOL_RSH = 48,                       /* RSH  */
+  YYSYMBOL_49_ = 49,                       /* '@'  */
+  YYSYMBOL_50_ = 50,                       /* '+'  */
+  YYSYMBOL_51_ = 51,                       /* '-'  */
+  YYSYMBOL_52_ = 52,                       /* '*'  */
+  YYSYMBOL_53_ = 53,                       /* '/'  */
+  YYSYMBOL_54_ = 54,                       /* '%'  */
+  YYSYMBOL_UNARY = 55,                     /* UNARY  */
+  YYSYMBOL_INCREMENT = 56,                 /* INCREMENT  */
+  YYSYMBOL_DECREMENT = 57,                 /* DECREMENT  */
+  YYSYMBOL_LEFT_ARROW = 58,                /* LEFT_ARROW  */
+  YYSYMBOL_59_ = 59,                       /* '.'  */
+  YYSYMBOL_60_ = 60,                       /* '['  */
+  YYSYMBOL_61_ = 61,                       /* '('  */
+  YYSYMBOL_62_ = 62,                       /* '!'  */
+  YYSYMBOL_63_ = 63,                       /* ']'  */
+  YYSYMBOL_64_ = 64,                       /* ')'  */
+  YYSYMBOL_65_ = 65,                       /* '{'  */
+  YYSYMBOL_66_ = 66,                       /* '}'  */
+  YYSYMBOL_67_ = 67,                       /* ':'  */
+  YYSYMBOL_YYACCEPT = 68,                  /* $accept  */
+  YYSYMBOL_start = 69,                     /* start  */
+  YYSYMBOL_type_exp = 70,                  /* type_exp  */
+  YYSYMBOL_exp1 = 71,                      /* exp1  */
+  YYSYMBOL_exp = 72,                       /* exp  */
+  YYSYMBOL_73_1 = 73,                      /* $@1  */
+  YYSYMBOL_lcurly = 74,                    /* lcurly  */
+  YYSYMBOL_arglist = 75,                   /* arglist  */
+  YYSYMBOL_rcurly = 76,                    /* rcurly  */
+  YYSYMBOL_string_exp = 77,                /* string_exp  */
+  YYSYMBOL_variable = 78,                  /* variable  */
+  YYSYMBOL_type = 79,                      /* type  */
+  YYSYMBOL_name_not_typename = 80          /* name_not_typename  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
 
-/* Line 264 of yacc.c  */
+/* Second part of user prologue.  */
 #line 114 "go-exp.y"
 
 /* YYSTYPE gets defined by %union.  */
 static int parse_number (struct parser_state *,
 			 const char *, int, int, YYSTYPE *);
 
+#line 376 "go-exp.c.tmp"
 
-/* Line 264 of yacc.c  */
-#line 276 "go-exp.c.tmp"
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef short int yytype_int16;
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -310,55 +455,100 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int8 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
 #else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if !defined yyoverflow
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
 
@@ -374,11 +564,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -386,8 +576,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -401,92 +591,93 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined xmalloc) \
-	     && (defined YYFREE || defined xfree)))
+             && (defined YYFREE || defined xfree)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC xmalloc
-#   if ! defined xmalloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xmalloc && ! defined EXIT_SUCCESS
 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE xfree
-#   if ! defined xfree && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xfree && ! defined EXIT_SUCCESS
 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYPTRDIFF_T yynewbytes;                                         \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
+      }                                                                 \
+    while (0)
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYPTRDIFF_T yyi;                      \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  40
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   443
+#define YYLAST   451
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  68
@@ -494,29 +685,33 @@ union yyalloc
 #define YYNNTS  13
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  69
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  122
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
 #define YYMAXUTOK   299
 
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex.  */
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,    62,     2,     2,     2,    54,    39,     2,
-      60,    64,    52,    50,    31,    51,    58,    53,     2,     2,
+      61,    64,    52,    50,    31,    51,    59,    53,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,    67,     2,
       43,    33,    44,    34,    49,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    59,     2,    63,    38,     2,     2,     2,     2,     2,
+       2,    60,     2,    63,    38,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,    65,    37,    66,     2,     2,     2,     2,
@@ -536,53 +731,12 @@ static const yytype_uint8 yytranslate[]
        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,    32,    35,    36,    40,
-      41,    42,    45,    46,    47,    48,    55,    56,    57,    61
+      41,    42,    45,    46,    47,    48,    55,    56,    57,    58
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint8 yyprhs[] =
-{
-       0,     0,     3,     5,     7,     9,    11,    15,    18,    21,
-      24,    27,    30,    33,    36,    39,    43,    48,    52,    57,
-      58,    64,    66,    67,    69,    73,    75,    80,    85,    89,
-      93,    97,   101,   105,   109,   113,   117,   121,   125,   129,
-     133,   137,   141,   145,   149,   153,   157,   161,   165,   171,
-     175,   179,   181,   183,   185,   187,   189,   191,   196,   201,
-     203,   207,   209,   211,   213,   216,   218,   221,   223,   225
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      69,     0,    -1,    71,    -1,    70,    -1,    79,    -1,    72,
-      -1,    71,    31,    72,    -1,    52,    72,    -1,    39,    72,
-      -1,    51,    72,    -1,    50,    72,    -1,    62,    72,    -1,
-      38,    72,    -1,    72,    56,    -1,    72,    55,    -1,    72,
-      58,    80,    -1,    72,    58,    80,    10,    -1,    72,    58,
-      10,    -1,    72,    59,    71,    63,    -1,    -1,    72,    60,
-      73,    75,    64,    -1,    65,    -1,    -1,    72,    -1,    75,
-      31,    72,    -1,    66,    -1,    74,    79,    76,    72,    -1,
-      79,    60,    72,    64,    -1,    60,    71,    64,    -1,    72,
-      49,    72,    -1,    72,    52,    72,    -1,    72,    53,    72,
-      -1,    72,    54,    72,    -1,    72,    50,    72,    -1,    72,
-      51,    72,    -1,    72,    48,    72,    -1,    72,    47,    72,
-      -1,    72,    42,    72,    -1,    72,    41,    72,    -1,    72,
-      46,    72,    -1,    72,    45,    72,    -1,    72,    43,    72,
-      -1,    72,    44,    72,    -1,    72,    39,    72,    -1,    72,
-      38,    72,    -1,    72,    37,    72,    -1,    72,    36,    72,
-      -1,    72,    35,    72,    -1,    72,    34,    72,    67,    72,
-      -1,    72,    33,    72,    -1,    72,    30,    72,    -1,     3,
-      -1,     7,    -1,    11,    -1,     4,    -1,    78,    -1,    29,
-      -1,    18,    60,    79,    64,    -1,    18,    60,    72,    64,
-      -1,     6,    -1,    77,    50,     6,    -1,    77,    -1,    12,
-      -1,    13,    -1,    80,    26,    -1,    80,    -1,    52,    79,
-      -1,     9,    -1,    28,    -1,     8,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+static const yytype_int16 yyrline[] =
 {
        0,   191,   191,   192,   195,   202,   203,   208,   212,   216,
      220,   224,   228,   232,   236,   242,   248,   255,   265,   272,
@@ -594,70 +748,89 @@ static const yytype_uint16 yyrline[] =
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "INT", "FLOAT", "RAW_STRING", "STRING",
-  "CHAR", "NAME", "TYPENAME", "COMPLETE", "NAME_OR_INT", "TRUE_KEYWORD",
-  "FALSE_KEYWORD", "STRUCT_KEYWORD", "INTERFACE_KEYWORD", "TYPE_KEYWORD",
-  "CHAN_KEYWORD", "SIZEOF_KEYWORD", "LEN_KEYWORD", "CAP_KEYWORD",
-  "NEW_KEYWORD", "IOTA_KEYWORD", "NIL_KEYWORD", "CONST_KEYWORD",
-  "DOTDOTDOT", "ENTRY", "ERROR", "BYTE_KEYWORD", "DOLLAR_VARIABLE",
-  "ASSIGN_MODIFY", "','", "ABOVE_COMMA", "'='", "'?'", "OROR", "ANDAND",
-  "'|'", "'^'", "'&'", "ANDNOT", "NOTEQUAL", "EQUAL", "'<'", "'>'", "GEQ",
-  "LEQ", "RSH", "LSH", "'@'", "'+'", "'-'", "'*'", "'/'", "'%'",
-  "DECREMENT", "INCREMENT", "UNARY", "'.'", "'['", "'('", "LEFT_ARROW",
-  "'!'", "']'", "')'", "'{'", "'}'", "':'", "$accept", "start", "type_exp",
-  "exp1", "exp", "$@1", "lcurly", "arglist", "rcurly", "string_exp",
-  "variable", "type", "name_not_typename", 0
+  "\"end of file\"", "error", "\"invalid token\"", "INT", "FLOAT",
+  "RAW_STRING", "STRING", "CHAR", "NAME", "TYPENAME", "COMPLETE",
+  "NAME_OR_INT", "TRUE_KEYWORD", "FALSE_KEYWORD", "STRUCT_KEYWORD",
+  "INTERFACE_KEYWORD", "TYPE_KEYWORD", "CHAN_KEYWORD", "SIZEOF_KEYWORD",
+  "LEN_KEYWORD", "CAP_KEYWORD", "NEW_KEYWORD", "IOTA_KEYWORD",
+  "NIL_KEYWORD", "CONST_KEYWORD", "DOTDOTDOT", "ENTRY", "ERROR",
+  "BYTE_KEYWORD", "DOLLAR_VARIABLE", "ASSIGN_MODIFY", "','", "ABOVE_COMMA",
+  "'='", "'?'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "ANDNOT", "EQUAL",
+  "NOTEQUAL", "'<'", "'>'", "LEQ", "GEQ", "LSH", "RSH", "'@'", "'+'",
+  "'-'", "'*'", "'/'", "'%'", "UNARY", "INCREMENT", "DECREMENT",
+  "LEFT_ARROW", "'.'", "'['", "'('", "'!'", "']'", "')'", "'{'", "'}'",
+  "':'", "$accept", "start", "type_exp", "exp1", "exp", "$@1", "lcurly",
+  "arglist", "rcurly", "string_exp", "variable", "type",
+  "name_not_typename", YY_NULLPTRPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+#ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,    44,   286,    61,    63,   287,   288,   124,    94,    38,
      289,   290,   291,    60,    62,   292,   293,   294,   295,    64,
-      43,    45,    42,    47,    37,   296,   297,   298,    46,    91,
-      40,   299,    33,    93,    41,   123,   125,    58
+      43,    45,    42,    47,    37,   296,   297,   298,   299,    46,
+      91,    40,    33,    93,    41,   123,   125,    58
 };
-# endif
+#endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    68,    69,    69,    70,    71,    71,    72,    72,    72,
-      72,    72,    72,    72,    72,    72,    72,    72,    72,    73,
-      72,    74,    75,    75,    75,    76,    72,    72,    72,    72,
-      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-      72,    72,    72,    72,    72,    72,    72,    72,    72,    77,
-      77,    72,    72,    72,    78,    78,    79,    79,    79,    80
-};
+#define YYPACT_NINF (-42)
+
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+#define YYTABLE_NINF (-1)
+
+#define yytable_value_is_error(Yyn) \
+  0
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
 {
-       0,     2,     1,     1,     1,     1,     3,     2,     2,     2,
-       2,     2,     2,     2,     2,     3,     4,     3,     4,     0,
-       5,     1,     0,     1,     3,     1,     4,     4,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     5,     3,
-       3,     1,     1,     1,     1,     1,     1,     4,     4,     1,
-       3,     1,     1,     1,     2,     1,     2,     1,     1,     1
+      49,   -42,   -42,   -42,   -42,   -42,   -42,   -42,   -42,   -42,
+     -38,   -42,   -42,    49,    49,    49,    49,    49,    49,    49,
+     -42,    27,   -42,    34,   187,    45,    16,   -42,    11,    53,
+      49,   -35,    11,   -35,   -35,   -35,   -35,    11,    38,   -35,
+     -42,    49,    49,    49,    49,    49,    49,    49,    49,    49,
+      49,    49,    49,    49,    49,    49,    49,    49,    49,    49,
+      49,    49,    49,    49,   -42,   -42,    -3,    49,   -42,    45,
+       9,    74,    49,   -42,   123,    10,   -42,   187,   187,   187,
+      88,   241,   266,   290,   313,   334,   353,   353,   368,   368,
+     368,   368,   -41,   -41,   380,   390,   390,   -35,   -35,   -35,
+     -42,    72,    33,    49,   -42,   -42,    49,   -42,   155,   -42,
+     -42,    49,   -42,   -42,   187,    39,   -35,   -42,   215,    49,
+     -42,   187
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint8 yydefact[] =
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_int8 yydefact[] =
 {
        0,    51,    54,    59,    52,    69,    67,    53,    62,    63,
        0,    68,    56,     0,     0,     0,     0,     0,     0,     0,
@@ -665,164 +838,144 @@ static const yytype_uint8 yydefact[] =
        0,    12,     0,     8,    10,     9,     7,    66,     0,    11,
        1,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    14,    13,     0,     0,    19,     0,
+       0,     0,     0,     0,    13,    14,     0,     0,    19,     0,
        0,     0,     0,    64,     0,     0,    28,     6,    50,    49,
-       0,    47,    46,    45,    44,    43,    38,    37,    41,    42,
-      40,    39,    36,    35,    29,    33,    34,    30,    31,    32,
+       0,    47,    46,    45,    44,    43,    37,    38,    41,    42,
+      39,    40,    35,    36,    29,    33,    34,    30,    31,    32,
       17,    15,     0,    22,    66,    25,     0,    60,     0,    58,
       57,     0,    16,    18,    23,     0,    26,    27,    48,     0,
       20,    24
 };
 
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int8 yydefgoto[] =
-{
-      -1,    21,    22,    23,    24,   103,    25,   115,   106,    26,
-      27,    32,    29
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -56
-static const yytype_int16 yypact[] =
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int8 yypgoto[] =
 {
-      49,   -56,   -56,   -56,   -56,   -56,   -56,   -56,   -56,   -56,
-     -44,   -56,   -56,    49,    49,    49,    49,    49,    49,    49,
-     -56,    23,   -56,    34,   187,    45,   -23,   -56,     6,    46,
-      49,   -48,     6,   -48,   -48,   -48,   -48,     6,    38,   -48,
-     -56,    49,    49,    49,    49,    49,    49,    49,    49,    49,
-      49,    49,    49,    49,    49,    49,    49,    49,    49,    49,
-      49,    49,    49,    49,   -56,   -56,     5,    49,   -56,    45,
-       8,    65,    49,   -56,   123,   -55,   -56,   187,   187,   187,
-      88,   239,   263,   286,   308,   328,   346,   346,   360,   360,
-     360,   360,   372,   372,   383,   -34,   -34,   -48,   -48,   -48,
-     -56,    69,    33,    49,   -56,   -56,    49,   -56,   155,   -56,
-     -56,    49,   -56,   -56,   187,    39,   -48,   -56,   214,    49,
-     -56,   187
+     -42,   -42,   -42,    -4,   -13,   -42,   -42,   -42,   -42,   -42,
+     -42,    51,    17
 };
 
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int8 yypgoto[] =
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int8 yydefgoto[] =
 {
-     -56,   -56,   -56,    -4,   -13,   -56,   -56,   -56,   -56,   -56,
-     -56,    51,     9
+      -1,    21,    22,    23,    24,   103,    25,   115,   106,    26,
+      27,    32,    29
 };
 
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -1
-static const yytype_uint8 yytable[] =
-{
-      31,    33,    34,    35,    36,    72,    39,    64,    65,   110,
-      66,    67,    68,     5,    38,   100,    30,    74,    61,    62,
-      63,    64,    65,    40,    66,    67,    68,    71,    77,    78,
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
+static const yytype_int8 yytable[] =
+{
+      31,    33,    34,    35,    36,     5,    39,   100,    58,    59,
+      60,    61,    62,    63,    38,    64,    65,    74,    66,    67,
+      68,    64,    65,    30,    66,    67,    68,    40,    77,    78,
       79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
       99,    28,     1,     2,     6,     3,     4,     5,     6,   108,
-       7,     8,     9,   102,    41,    41,    72,    10,    37,    41,
-     119,   107,    73,    11,   105,   101,    70,    11,    12,   112,
-       0,    75,     0,     0,     0,     0,     0,    13,    14,     0,
+       7,     8,     9,   102,    41,    41,    71,    10,    37,    41,
+     119,    72,    72,    11,   110,   105,    70,    11,    12,    73,
+     107,    75,   112,   101,     0,     0,     0,    13,    14,     0,
      114,     0,     0,   116,     0,     0,   113,    69,   118,    15,
-      16,    17,    76,   120,     0,     0,   121,     0,     0,    18,
-       0,    19,     0,     0,    20,     0,     0,     0,    42,     0,
+      16,    17,    76,   120,     0,     0,   121,     0,     0,     0,
+      18,    19,     0,     0,    20,     0,     0,     0,    42,     0,
      104,    43,    44,    45,    46,    47,    48,    49,     0,    50,
       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,     0,    66,    67,    68,     0,
+      61,    62,    63,     0,    64,    65,     0,    66,    67,    68,
        0,     0,     0,    42,     0,   111,    43,    44,    45,    46,
       47,    48,    49,     0,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-       0,    66,    67,    68,     0,    42,     0,   109,    43,    44,
+      56,    57,    58,    59,    60,    61,    62,    63,     0,    64,
+      65,     0,    66,    67,    68,    42,     0,   109,    43,    44,
       45,    46,    47,    48,    49,     0,    50,    51,    52,    53,
       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,     0,    66,    67,    68,     0,    42,     0,   117,
+       0,    64,    65,     0,    66,    67,    68,    42,     0,   117,
       43,    44,    45,    46,    47,    48,    49,     0,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,     0,    66,    67,    68,    44,    45,
-      46,    47,    48,    49,     0,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,     0,    66,    67,    68,    46,    47,    48,    49,     0,
-      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,     0,    66,    67,    68,
-      47,    48,    49,     0,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-       0,    66,    67,    68,    48,    49,     0,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,     0,    66,    67,    68,    49,     0,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,     0,    66,    67,    68,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,     0,    66,    67,    68,    52,
+      62,    63,     0,    64,    65,     0,    66,    67,    68,    44,
+      45,    46,    47,    48,    49,     0,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+       0,    64,    65,     0,    66,    67,    68,    46,    47,    48,
+      49,     0,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,     0,    64,    65,     0,
+      66,    67,    68,    47,    48,    49,     0,    50,    51,    52,
       53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,     0,    66,    67,    68,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,     0,    66,    67,
-      68,    58,    59,    60,    61,    62,    63,    64,    65,     0,
-      66,    67,    68,    59,    60,    61,    62,    63,    64,    65,
-       0,    66,    67,    68
+      63,     0,    64,    65,     0,    66,    67,    68,    48,    49,
+       0,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,     0,    64,    65,     0,    66,
+      67,    68,    49,     0,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,     0,    64,
+      65,     0,    66,    67,    68,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,     0,
+      64,    65,     0,    66,    67,    68,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,     0,    64,
+      65,     0,    66,    67,    68,    56,    57,    58,    59,    60,
+      61,    62,    63,     0,    64,    65,     0,    66,    67,    68,
+      59,    60,    61,    62,    63,     0,    64,    65,     0,    66,
+      67,    68,    61,    62,    63,     0,    64,    65,     0,    66,
+      67,    68
 };
 
 static const yytype_int8 yycheck[] =
 {
-      13,    14,    15,    16,    17,    60,    19,    55,    56,    64,
-      58,    59,    60,     8,    18,    10,    60,    30,    52,    53,
-      54,    55,    56,     0,    58,    59,    60,    50,    41,    42,
+      13,    14,    15,    16,    17,     8,    19,    10,    49,    50,
+      51,    52,    53,    54,    18,    56,    57,    30,    59,    60,
+      61,    56,    57,    61,    59,    60,    61,     0,    41,    42,
       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
       53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
       63,     0,     3,     4,     9,     6,     7,     8,     9,    72,
-      11,    12,    13,    67,    31,    31,    60,    18,    17,    31,
-      31,     6,    26,    28,    66,    66,    25,    28,    29,    10,
-      -1,    30,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,
+      11,    12,    13,    67,    31,    31,    50,    18,    17,    31,
+      31,    61,    61,    28,    64,    66,    25,    28,    29,    26,
+       6,    30,    10,    66,    -1,    -1,    -1,    38,    39,    -1,
      103,    -1,    -1,   106,    -1,    -1,    63,    52,   111,    50,
-      51,    52,    64,    64,    -1,    -1,   119,    -1,    -1,    60,
-      -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    30,    -1,
+      51,    52,    64,    64,    -1,    -1,   119,    -1,    -1,    -1,
+      61,    62,    -1,    -1,    65,    -1,    -1,    -1,    30,    -1,
       69,    33,    34,    35,    36,    37,    38,    39,    -1,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    -1,    58,    59,    60,    -1,
+      52,    53,    54,    -1,    56,    57,    -1,    59,    60,    61,
       -1,    -1,    -1,    30,    -1,    67,    33,    34,    35,    36,
       37,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      -1,    58,    59,    60,    -1,    30,    -1,    64,    33,    34,
+      47,    48,    49,    50,    51,    52,    53,    54,    -1,    56,
+      57,    -1,    59,    60,    61,    30,    -1,    64,    33,    34,
       35,    36,    37,    38,    39,    -1,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    -1,    58,    59,    60,    -1,    30,    -1,    64,
+      -1,    56,    57,    -1,    59,    60,    61,    30,    -1,    64,
       33,    34,    35,    36,    37,    38,    39,    -1,    41,    42,
       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    -1,    58,    59,    60,    34,    35,
-      36,    37,    38,    39,    -1,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    -1,    58,    59,    60,    36,    37,    38,    39,    -1,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
-      37,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      -1,    58,    59,    60,    38,    39,    -1,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    -1,    58,    59,    60,    39,    -1,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    -1,    58,    59,    60,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    -1,    58,    59,    60,    43,
+      53,    54,    -1,    56,    57,    -1,    59,    60,    61,    34,
+      35,    36,    37,    38,    39,    -1,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      -1,    56,    57,    -1,    59,    60,    61,    36,    37,    38,
+      39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    -1,    56,    57,    -1,
+      59,    60,    61,    37,    38,    39,    -1,    41,    42,    43,
       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    -1,    58,    59,    60,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
-      60,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
-      58,    59,    60,    50,    51,    52,    53,    54,    55,    56,
-      -1,    58,    59,    60
+      54,    -1,    56,    57,    -1,    59,    60,    61,    38,    39,
+      -1,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    -1,    56,    57,    -1,    59,
+      60,    61,    39,    -1,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    -1,    56,
+      57,    -1,    59,    60,    61,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    -1,
+      56,    57,    -1,    59,    60,    61,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    -1,    56,
+      57,    -1,    59,    60,    61,    47,    48,    49,    50,    51,
+      52,    53,    54,    -1,    56,    57,    -1,    59,    60,    61,
+      50,    51,    52,    53,    54,    -1,    56,    57,    -1,    59,
+      60,    61,    52,    53,    54,    -1,    56,    57,    -1,    59,
+      60,    61
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
+static const yytype_int8 yystos[] =
 {
        0,     3,     4,     6,     7,     8,     9,    11,    12,    13,
-      18,    28,    29,    38,    39,    50,    51,    52,    60,    62,
+      18,    28,    29,    38,    39,    50,    51,    52,    61,    62,
       65,    69,    70,    71,    72,    74,    77,    78,    79,    80,
-      60,    72,    79,    72,    72,    72,    72,    79,    71,    72,
+      61,    72,    79,    72,    72,    72,    72,    79,    71,    72,
        0,    31,    30,    33,    34,    35,    36,    37,    38,    39,
       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    58,    59,    60,    52,
-      79,    50,    60,    26,    72,    79,    64,    72,    72,    72,
+      51,    52,    53,    54,    56,    57,    59,    60,    61,    52,
+      79,    50,    61,    26,    72,    79,    64,    72,    72,    72,
       72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
       72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
       10,    80,    71,    73,    79,    66,    76,     6,    72,    64,
@@ -830,95 +983,64 @@ static const yytype_uint8 yystos[] =
       64,    72
 };
 
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
-
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
-
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_int8 yyr1[] =
+{
+       0,    68,    69,    69,    70,    71,    71,    72,    72,    72,
+      72,    72,    72,    72,    72,    72,    72,    72,    72,    73,
+      72,    74,    75,    75,    75,    76,    72,    72,    72,    72,
+      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
+      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
+      72,    72,    72,    72,    72,    72,    72,    72,    72,    77,
+      77,    72,    72,    72,    78,    78,    79,    79,    79,    80
+};
 
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_int8 yyr2[] =
+{
+       0,     2,     1,     1,     1,     1,     3,     2,     2,     2,
+       2,     2,     2,     2,     2,     3,     4,     3,     4,     0,
+       5,     1,     0,     1,     3,     1,     4,     4,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     5,     3,
+       3,     1,     1,     1,     1,     1,     1,     4,     4,     1,
+       3,     1,     1,     1,     2,     1,     2,     1,     1,     1
+};
 
-#define YYFAIL		goto yyerrlab
 
-#define YYRECOVERING()  (!!yyerrstatus)
+enum { YYENOMEM = -2 };
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
-
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
 
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
 
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
 
+#define YYRECOVERING()  (!!yyerrstatus)
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
+
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -928,80 +1050,65 @@ while (YYID (0))
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+# ifndef YY_LOCATION_PRINT
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+
+
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Kind, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
+
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
 static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yykind, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -1009,16 +1116,8 @@ yy_symbol_print (yyoutput, yytype, yyval
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
 static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1029,63 +1128,56 @@ yy_stack_print (yybottom, yytop)
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
 static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule)
 {
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
+      yy_symbol_print (stderr,
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)]);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1100,342 +1192,82 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
-
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
 
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
 
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
 
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
 
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
-  switch (yytype)
-    {
-
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
 
 /* The lookahead symbol.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
-
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+
+/*----------.
+| yyparse.  |
+`----------*/
+
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
-
-
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to xreallocate them elsewhere.  */
 
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize;
+
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
-
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -1443,133 +1275,147 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
   yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
-	/* Give user a chance to xreallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        yy_state_t *yyss1 = yyss;
+        YYSTYPE *yyvs1 = yyvs;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
+                    &yystacksize);
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yy_state_t *yyss1 = yyss;
+        union yyalloc *yyptr =
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      YYDPRINTF ((stderr, "Reading a token\n"));
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -1584,8 +1430,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -1597,13 +1443,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -1618,14 +1464,14 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -1638,432 +1484,378 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 4:
-
-/* Line 1455 of yacc.c  */
+  case 4:
 #line 196 "go-exp.y"
-    { write_exp_elt_opcode (pstate, OP_TYPE);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].tval));
+                        { write_exp_elt_opcode (pstate, OP_TYPE);
+			  write_exp_elt_type (pstate, (yyvsp[0].tval));
 			  write_exp_elt_opcode (pstate, OP_TYPE); }
+#line 1494 "go-exp.c.tmp"
     break;
 
   case 6:
-
-/* Line 1455 of yacc.c  */
 #line 204 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+                        { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+#line 1500 "go-exp.c.tmp"
     break;
 
   case 7:
-
-/* Line 1455 of yacc.c  */
 #line 209 "go-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND); }
+                        { write_exp_elt_opcode (pstate, UNOP_IND); }
+#line 1506 "go-exp.c.tmp"
     break;
 
   case 8:
-
-/* Line 1455 of yacc.c  */
 #line 213 "go-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+                        { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+#line 1512 "go-exp.c.tmp"
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
 #line 217 "go-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_NEG); }
+                        { write_exp_elt_opcode (pstate, UNOP_NEG); }
+#line 1518 "go-exp.c.tmp"
     break;
 
   case 10:
-
-/* Line 1455 of yacc.c  */
 #line 221 "go-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+                        { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+#line 1524 "go-exp.c.tmp"
     break;
 
   case 11:
-
-/* Line 1455 of yacc.c  */
 #line 225 "go-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+                        { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+#line 1530 "go-exp.c.tmp"
     break;
 
   case 12:
-
-/* Line 1455 of yacc.c  */
 #line 229 "go-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_COMPLEMENT); }
+                        { write_exp_elt_opcode (pstate, UNOP_COMPLEMENT); }
+#line 1536 "go-exp.c.tmp"
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
 #line 233 "go-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_POSTINCREMENT); }
+                        { write_exp_elt_opcode (pstate, UNOP_POSTINCREMENT); }
+#line 1542 "go-exp.c.tmp"
     break;
 
   case 14:
-
-/* Line 1455 of yacc.c  */
 #line 237 "go-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_POSTDECREMENT); }
+                        { write_exp_elt_opcode (pstate, UNOP_POSTDECREMENT); }
+#line 1548 "go-exp.c.tmp"
     break;
 
   case 15:
-
-/* Line 1455 of yacc.c  */
 #line 243 "go-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, (yyvsp[(3) - (3)].ssym).stoken);
+                        { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+			  write_exp_string (pstate, (yyvsp[0].ssym).stoken);
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 1556 "go-exp.c.tmp"
     break;
 
   case 16:
-
-/* Line 1455 of yacc.c  */
 #line 249 "go-exp.y"
-    { pstate->mark_struct_expression ();
+                        { pstate->mark_struct_expression ();
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, (yyvsp[(3) - (4)].ssym).stoken);
+			  write_exp_string (pstate, (yyvsp[-1].ssym).stoken);
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 1565 "go-exp.c.tmp"
     break;
 
   case 17:
-
-/* Line 1455 of yacc.c  */
 #line 256 "go-exp.y"
-    { struct stoken s;
+                        { struct stoken s;
 			  pstate->mark_struct_expression ();
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
 			  s.ptr = "";
 			  s.length = 0;
 			  write_exp_string (pstate, s);
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 1577 "go-exp.c.tmp"
     break;
 
   case 18:
-
-/* Line 1455 of yacc.c  */
 #line 266 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+                        { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+#line 1583 "go-exp.c.tmp"
     break;
 
   case 19:
-
-/* Line 1455 of yacc.c  */
 #line 272 "go-exp.y"
-    { pstate->start_arglist (); }
+                        { pstate->start_arglist (); }
+#line 1589 "go-exp.c.tmp"
     break;
 
   case 20:
-
-/* Line 1455 of yacc.c  */
 #line 274 "go-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FUNCALL);
+                        { write_exp_elt_opcode (pstate, OP_FUNCALL);
 			  write_exp_elt_longcst (pstate,
 						 pstate->end_arglist ());
 			  write_exp_elt_opcode (pstate, OP_FUNCALL); }
+#line 1598 "go-exp.c.tmp"
     break;
 
   case 21:
-
-/* Line 1455 of yacc.c  */
 #line 281 "go-exp.y"
-    { pstate->start_arglist (); }
+                        { pstate->start_arglist (); }
+#line 1604 "go-exp.c.tmp"
     break;
 
   case 23:
-
-/* Line 1455 of yacc.c  */
 #line 288 "go-exp.y"
-    { pstate->arglist_len = 1; }
+                        { pstate->arglist_len = 1; }
+#line 1610 "go-exp.c.tmp"
     break;
 
   case 24:
-
-/* Line 1455 of yacc.c  */
 #line 292 "go-exp.y"
-    { pstate->arglist_len++; }
+                        { pstate->arglist_len++; }
+#line 1616 "go-exp.c.tmp"
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
 #line 296 "go-exp.y"
-    { (yyval.lval) = pstate->end_arglist () - 1; }
+                        { (yyval.lval) = pstate->end_arglist () - 1; }
+#line 1622 "go-exp.c.tmp"
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
 #line 300 "go-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_MEMVAL);
-			  write_exp_elt_type (pstate, (yyvsp[(2) - (4)].tval));
+                        { write_exp_elt_opcode (pstate, UNOP_MEMVAL);
+			  write_exp_elt_type (pstate, (yyvsp[-2].tval));
 			  write_exp_elt_opcode (pstate, UNOP_MEMVAL); }
+#line 1630 "go-exp.c.tmp"
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
 #line 306 "go-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CAST);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (4)].tval));
+                        { write_exp_elt_opcode (pstate, UNOP_CAST);
+			  write_exp_elt_type (pstate, (yyvsp[-3].tval));
 			  write_exp_elt_opcode (pstate, UNOP_CAST); }
+#line 1638 "go-exp.c.tmp"
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
 #line 312 "go-exp.y"
-    { }
+                        { }
+#line 1644 "go-exp.c.tmp"
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
 #line 318 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+                        { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+#line 1650 "go-exp.c.tmp"
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
 #line 322 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MUL); }
+                        { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 1656 "go-exp.c.tmp"
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
 #line 326 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_DIV); }
+                        { write_exp_elt_opcode (pstate, BINOP_DIV); }
+#line 1662 "go-exp.c.tmp"
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
 #line 330 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REM); }
+                        { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 1668 "go-exp.c.tmp"
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
 #line 334 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ADD); }
+                        { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 1674 "go-exp.c.tmp"
     break;
 
   case 34:
-
-/* Line 1455 of yacc.c  */
 #line 338 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUB); }
+                        { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 1680 "go-exp.c.tmp"
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
 #line 342 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LSH); }
+                        { write_exp_elt_opcode (pstate, BINOP_LSH); }
+#line 1686 "go-exp.c.tmp"
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
 #line 346 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_RSH); }
+                        { write_exp_elt_opcode (pstate, BINOP_RSH); }
+#line 1692 "go-exp.c.tmp"
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
 #line 350 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+                        { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 1698 "go-exp.c.tmp"
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
 #line 354 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+                        { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 1704 "go-exp.c.tmp"
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
 #line 358 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+                        { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+#line 1710 "go-exp.c.tmp"
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
 #line 362 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+                        { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+#line 1716 "go-exp.c.tmp"
     break;
 
   case 41:
-
-/* Line 1455 of yacc.c  */
 #line 366 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LESS); }
+                        { write_exp_elt_opcode (pstate, BINOP_LESS); }
+#line 1722 "go-exp.c.tmp"
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
 #line 370 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GTR); }
+                        { write_exp_elt_opcode (pstate, BINOP_GTR); }
+#line 1728 "go-exp.c.tmp"
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
 #line 374 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 1734 "go-exp.c.tmp"
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
 #line 378 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 1740 "go-exp.c.tmp"
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
 #line 382 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 1746 "go-exp.c.tmp"
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
 #line 386 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 1752 "go-exp.c.tmp"
     break;
 
   case 47:
-
-/* Line 1455 of yacc.c  */
 #line 390 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 1758 "go-exp.c.tmp"
     break;
 
   case 48:
-
-/* Line 1455 of yacc.c  */
 #line 394 "go-exp.y"
-    { write_exp_elt_opcode (pstate, TERNOP_COND); }
+                        { write_exp_elt_opcode (pstate, TERNOP_COND); }
+#line 1764 "go-exp.c.tmp"
     break;
 
   case 49:
-
-/* Line 1455 of yacc.c  */
 #line 398 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 1770 "go-exp.c.tmp"
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
 #line 402 "go-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
-			  write_exp_elt_opcode (pstate, (yyvsp[(2) - (3)].opcode));
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
+			  write_exp_elt_opcode (pstate, (yyvsp[-1].opcode));
 			  write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY); }
+#line 1778 "go-exp.c.tmp"
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
 #line 408 "go-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val_int).type);
-			  write_exp_elt_longcst (pstate, (LONGEST)((yyvsp[(1) - (1)].typed_val_int).val));
+                        { write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val_int).type);
+			  write_exp_elt_longcst (pstate, (LONGEST)((yyvsp[0].typed_val_int).val));
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 1787 "go-exp.c.tmp"
     break;
 
   case 52:
-
-/* Line 1455 of yacc.c  */
 #line 415 "go-exp.y"
-    {
+                        {
 			  struct stoken_vector vec;
 			  vec.len = 1;
-			  vec.tokens = &(yyvsp[(1) - (1)].tsval);
-			  write_exp_string_vector (pstate, (yyvsp[(1) - (1)].tsval).type, &vec);
+			  vec.tokens = &(yyvsp[0].tsval);
+			  write_exp_string_vector (pstate, (yyvsp[0].tsval).type, &vec);
 			}
+#line 1798 "go-exp.c.tmp"
     break;
 
   case 53:
-
-/* Line 1455 of yacc.c  */
 #line 424 "go-exp.y"
-    { YYSTYPE val;
-			  parse_number (pstate, (yyvsp[(1) - (1)].ssym).stoken.ptr,
-					(yyvsp[(1) - (1)].ssym).stoken.length, 0, &val);
+                        { YYSTYPE val;
+			  parse_number (pstate, (yyvsp[0].ssym).stoken.ptr,
+					(yyvsp[0].ssym).stoken.length, 0, &val);
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate, val.typed_val_int.type);
 			  write_exp_elt_longcst (pstate, (LONGEST)
 						 val.typed_val_int.val);
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			}
+#line 1812 "go-exp.c.tmp"
     break;
 
   case 54:
-
-/* Line 1455 of yacc.c  */
 #line 437 "go-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FLOAT);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val_float).type);
-			  write_exp_elt_floatcst (pstate, (yyvsp[(1) - (1)].typed_val_float).val);
+                        { write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val_float).type);
+			  write_exp_elt_floatcst (pstate, (yyvsp[0].typed_val_float).val);
 			  write_exp_elt_opcode (pstate, OP_FLOAT); }
+#line 1821 "go-exp.c.tmp"
     break;
 
   case 56:
-
-/* Line 1455 of yacc.c  */
 #line 447 "go-exp.y"
-    {
-			  write_dollar_variable (pstate, (yyvsp[(1) - (1)].sval));
+                        {
+			  write_dollar_variable (pstate, (yyvsp[0].sval));
 			}
+#line 1829 "go-exp.c.tmp"
     break;
 
   case 57:
-
-/* Line 1455 of yacc.c  */
 #line 453 "go-exp.y"
-    {
+                        {
 			  /* TODO(dje): Go objects in structs.  */
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			  /* TODO(dje): What's the right type here?  */
 			  write_exp_elt_type
 			    (pstate,
 			     parse_type (pstate)->builtin_unsigned_int);
-			  (yyvsp[(3) - (4)].tval) = check_typedef ((yyvsp[(3) - (4)].tval));
+			  (yyvsp[-1].tval) = check_typedef ((yyvsp[-1].tval));
 			  write_exp_elt_longcst (pstate,
-						 (LONGEST) TYPE_LENGTH ((yyvsp[(3) - (4)].tval)));
+						 (LONGEST) TYPE_LENGTH ((yyvsp[-1].tval)));
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			}
+#line 1846 "go-exp.c.tmp"
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
 #line 468 "go-exp.y"
-    {
+                        {
 			  /* TODO(dje): Go objects in structs.  */
 			  write_exp_elt_opcode (pstate, UNOP_SIZEOF);
 			}
+#line 1855 "go-exp.c.tmp"
     break;
 
   case 59:
-
-/* Line 1455 of yacc.c  */
 #line 475 "go-exp.y"
-    {
+                        {
 			  /* We copy the string here, and not in the
 			     lexer, to guarantee that we do not leak a
 			     string.  */
@@ -2073,18 +1865,17 @@ yyreduce:
 			  (yyval.svec).len = 1;
 			  (yyval.svec).tokens = vec;
 
-			  vec->type = (yyvsp[(1) - (1)].tsval).type;
-			  vec->length = (yyvsp[(1) - (1)].tsval).length;
-			  vec->ptr = (char *) xmalloc ((yyvsp[(1) - (1)].tsval).length + 1);
-			  memcpy (vec->ptr, (yyvsp[(1) - (1)].tsval).ptr, (yyvsp[(1) - (1)].tsval).length + 1);
+			  vec->type = (yyvsp[0].tsval).type;
+			  vec->length = (yyvsp[0].tsval).length;
+			  vec->ptr = (char *) xmalloc ((yyvsp[0].tsval).length + 1);
+			  memcpy (vec->ptr, (yyvsp[0].tsval).ptr, (yyvsp[0].tsval).length + 1);
 			}
+#line 1875 "go-exp.c.tmp"
     break;
 
   case 60:
-
-/* Line 1455 of yacc.c  */
 #line 492 "go-exp.y"
-    {
+                        {
 			  /* Note that we NUL-terminate here, but just
 			     for convenience.  */
 			  char *p;
@@ -2092,72 +1883,67 @@ yyreduce:
 			  (yyval.svec).tokens = XRESIZEVEC (struct typed_stoken,
 						  (yyval.svec).tokens, (yyval.svec).len);
 
-			  p = (char *) xmalloc ((yyvsp[(3) - (3)].tsval).length + 1);
-			  memcpy (p, (yyvsp[(3) - (3)].tsval).ptr, (yyvsp[(3) - (3)].tsval).length + 1);
+			  p = (char *) xmalloc ((yyvsp[0].tsval).length + 1);
+			  memcpy (p, (yyvsp[0].tsval).ptr, (yyvsp[0].tsval).length + 1);
 
-			  (yyval.svec).tokens[(yyval.svec).len - 1].type = (yyvsp[(3) - (3)].tsval).type;
-			  (yyval.svec).tokens[(yyval.svec).len - 1].length = (yyvsp[(3) - (3)].tsval).length;
+			  (yyval.svec).tokens[(yyval.svec).len - 1].type = (yyvsp[0].tsval).type;
+			  (yyval.svec).tokens[(yyval.svec).len - 1].length = (yyvsp[0].tsval).length;
 			  (yyval.svec).tokens[(yyval.svec).len - 1].ptr = p;
 			}
+#line 1895 "go-exp.c.tmp"
     break;
 
   case 61:
-
-/* Line 1455 of yacc.c  */
 #line 510 "go-exp.y"
-    {
+                        {
 			  int i;
 
 			  write_exp_string_vector (pstate, 0 /*always utf8*/,
-						   &(yyvsp[(1) - (1)].svec));
-			  for (i = 0; i < (yyvsp[(1) - (1)].svec).len; ++i)
-			    xfree ((yyvsp[(1) - (1)].svec).tokens[i].ptr);
-			  xfree ((yyvsp[(1) - (1)].svec).tokens);
+						   &(yyvsp[0].svec));
+			  for (i = 0; i < (yyvsp[0].svec).len; ++i)
+			    xfree ((yyvsp[0].svec).tokens[i].ptr);
+			  xfree ((yyvsp[0].svec).tokens);
 			}
+#line 1909 "go-exp.c.tmp"
     break;
 
   case 62:
-
-/* Line 1455 of yacc.c  */
 #line 522 "go-exp.y"
-    { write_exp_elt_opcode (pstate, OP_BOOL);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].lval));
+                        { write_exp_elt_opcode (pstate, OP_BOOL);
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].lval));
 			  write_exp_elt_opcode (pstate, OP_BOOL); }
+#line 1917 "go-exp.c.tmp"
     break;
 
   case 63:
-
-/* Line 1455 of yacc.c  */
 #line 528 "go-exp.y"
-    { write_exp_elt_opcode (pstate, OP_BOOL);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].lval));
+                        { write_exp_elt_opcode (pstate, OP_BOOL);
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].lval));
 			  write_exp_elt_opcode (pstate, OP_BOOL); }
+#line 1925 "go-exp.c.tmp"
     break;
 
   case 64:
-
-/* Line 1455 of yacc.c  */
 #line 534 "go-exp.y"
-    { struct symbol *sym = (yyvsp[(1) - (2)].ssym).sym.symbol;
+                        { struct symbol *sym = (yyvsp[-1].ssym).sym.symbol;
 
 			  if (sym == NULL
 			      || !SYMBOL_IS_ARGUMENT (sym)
 			      || !symbol_read_needs_frame (sym))
 			    error (_("@entry can be used only for function "
 				     "parameters, not for \"%s\""),
-				   copy_name ((yyvsp[(1) - (2)].ssym).stoken).c_str ());
+				   copy_name ((yyvsp[-1].ssym).stoken).c_str ());
 
 			  write_exp_elt_opcode (pstate, OP_VAR_ENTRY_VALUE);
 			  write_exp_elt_sym (pstate, sym);
 			  write_exp_elt_opcode (pstate, OP_VAR_ENTRY_VALUE);
 			}
+#line 1943 "go-exp.c.tmp"
     break;
 
   case 65:
-
-/* Line 1455 of yacc.c  */
 #line 550 "go-exp.y"
-    { struct block_symbol sym = (yyvsp[(1) - (1)].ssym).sym;
+                        { struct block_symbol sym = (yyvsp[0].ssym).sym;
 
 			  if (sym.symbol)
 			    {
@@ -2169,7 +1955,7 @@ yyreduce:
 			      write_exp_elt_sym (pstate, sym.symbol);
 			      write_exp_elt_opcode (pstate, OP_VAR_VALUE);
 			    }
-			  else if ((yyvsp[(1) - (1)].ssym).is_a_field_of_this)
+			  else if ((yyvsp[0].ssym).is_a_field_of_this)
 			    {
 			      /* TODO(dje): Can we get here?
 				 E.g., via a mix of c++ and go?  */
@@ -2178,7 +1964,7 @@ yyreduce:
 			  else
 			    {
 			      struct bound_minimal_symbol msymbol;
-			      std::string arg = copy_name ((yyvsp[(1) - (1)].ssym).stoken);
+			      std::string arg = copy_name ((yyvsp[0].ssym).stoken);
 
 			      msymbol =
 				lookup_bound_minimal_symbol (arg.c_str ());
@@ -2193,123 +1979,96 @@ yyreduce:
 				       arg.c_str ());
 			    }
 			}
+#line 1984 "go-exp.c.tmp"
     break;
 
   case 66:
-
-/* Line 1455 of yacc.c  */
 #line 597 "go-exp.y"
-    { (yyval.tval) = lookup_pointer_type ((yyvsp[(2) - (2)].tval)); }
+                        { (yyval.tval) = lookup_pointer_type ((yyvsp[0].tval)); }
+#line 1990 "go-exp.c.tmp"
     break;
 
   case 67:
-
-/* Line 1455 of yacc.c  */
 #line 599 "go-exp.y"
-    { (yyval.tval) = (yyvsp[(1) - (1)].tsym).type; }
+                        { (yyval.tval) = (yyvsp[0].tsym).type; }
+#line 1996 "go-exp.c.tmp"
     break;
 
   case 68:
-
-/* Line 1455 of yacc.c  */
 #line 606 "go-exp.y"
-    { (yyval.tval) = builtin_go_type (pstate->gdbarch ())
+                        { (yyval.tval) = builtin_go_type (pstate->gdbarch ())
 			    ->builtin_uint8; }
+#line 2003 "go-exp.c.tmp"
     break;
 
 
+#line 2007 "go-exp.c.tmp"
 
-/* Line 1455 of yacc.c  */
-#line 2225 "go-exp.c.tmp"
       default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -2321,14 +2080,12 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -2341,39 +2098,42 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -2386,6 +2146,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -2393,7 +2154,8 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+
+#if !defined yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2403,35 +2165,37 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
 
+  return yyresult;
+}
 
-/* Line 1675 of yacc.c  */
 #line 628 "go-exp.y"
 
 
@@ -3141,7 +2905,7 @@ package_name_p (const char *name, const
 
   if (sym
       && SYMBOL_CLASS (sym) == LOC_TYPEDEF
-      && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_MODULE)
+      && SYMBOL_TYPE (sym)->code () == TYPE_CODE_MODULE)
     return 1;
 
   return 0;
@@ -3389,4 +3153,3 @@ yyerror (const char *msg)
 
   error (_("A %s in expression, near `%s'."), msg, pstate->lexptr);
 }
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-exp.y ./gdb/go-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-exp.y	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/go-exp.y	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* YACC parser for Go expressions, for GDB.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1333,7 +1333,7 @@ package_name_p (const char *name, const
 
   if (sym
       && SYMBOL_CLASS (sym) == LOC_TYPEDEF
-      && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_MODULE)
+      && SYMBOL_TYPE (sym)->code () == TYPE_CODE_MODULE)
     return 1;
 
   return 0;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-lang.c ./gdb/go-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-lang.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/go-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Go language support routines for GDB, the GNU debugger.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -73,26 +73,26 @@ gccgo_string_p (struct type *type)
 {
   /* gccgo strings don't necessarily have a name we can use.  */
 
-  if (TYPE_NFIELDS (type) == 2)
+  if (type->num_fields () == 2)
     {
-      struct type *type0 = TYPE_FIELD_TYPE (type, 0);
-      struct type *type1 = TYPE_FIELD_TYPE (type, 1);
+      struct type *type0 = type->field (0).type ();
+      struct type *type1 = type->field (1).type ();
 
       type0 = check_typedef (type0);
       type1 = check_typedef (type1);
 
-      if (TYPE_CODE (type0) == TYPE_CODE_PTR
+      if (type0->code () == TYPE_CODE_PTR
 	  && strcmp (TYPE_FIELD_NAME (type, 0), "__data") == 0
-	  && TYPE_CODE (type1) == TYPE_CODE_INT
+	  && type1->code () == TYPE_CODE_INT
 	  && strcmp (TYPE_FIELD_NAME (type, 1), "__length") == 0)
 	{
 	  struct type *target_type = TYPE_TARGET_TYPE (type0);
 
 	  target_type = check_typedef (target_type);
 
-	  if (TYPE_CODE (target_type) == TYPE_CODE_INT
+	  if (target_type->code () == TYPE_CODE_INT
 	      && TYPE_LENGTH (target_type) == 1
-	      && strcmp (TYPE_NAME (target_type), "uint8") == 0)
+	      && strcmp (target_type->name (), "uint8") == 0)
 	    return 1;
 	}
     }
@@ -106,9 +106,9 @@ gccgo_string_p (struct type *type)
 static int
 sixg_string_p (struct type *type)
 {
-  if (TYPE_NFIELDS (type) == 2
-      && TYPE_NAME (type) != NULL
-      && strcmp (TYPE_NAME (type), "string") == 0)
+  if (type->num_fields () == 2
+      && type->name () != NULL
+      && strcmp (type->name (), "string") == 0)
     return 1;
 
   return 0;
@@ -131,16 +131,6 @@ go_classify_struct_type (struct type *ty
   return GO_TYPE_NONE;
 }
 
-/* Return true if TYPE is a string.  */
-
-static bool
-go_is_string_type_p (struct type *type)
-{
-  type = check_typedef (type);
-  return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	  && go_classify_struct_type (type) == GO_TYPE_STRING);
-}
-
 /* Subroutine of unpack_mangled_go_symbol to simplify it.
    Given "[foo.]bar.baz", store "bar" in *PACKAGEP and "baz" in *OBJECTP.
    We stomp on the last '.' to nul-terminate "bar".
@@ -396,15 +386,6 @@ go_demangle (const char *mangled_name, i
   return result;
 }
 
-/* la_sniff_from_mangled_name for Go.  */
-
-static int
-go_sniff_from_mangled_name (const char *mangled, char **demangled)
-{
-  *demangled = go_demangle (mangled, 0);
-  return *demangled != NULL;
-}
-
 /* Given a Go symbol, return its package or NULL if unknown.
    Space for the result is malloc'd, caller must free.  */
 
@@ -420,7 +401,7 @@ go_symbol_package_name (const struct sym
   char *name_buf;
   char *result;
 
-  gdb_assert (SYMBOL_LANGUAGE (sym) == language_go);
+  gdb_assert (sym->language () == language_go);
   name_buf = unpack_mangled_go_symbol (mangled_name,
 				       &package_name, &object_name,
 				       &method_type_package_name,
@@ -523,60 +504,9 @@ enum go_primitive_types {
   nr_go_primitive_types
 };
 
-static void
-go_language_arch_info (struct gdbarch *gdbarch,
-		       struct language_arch_info *lai)
-{
-  const struct builtin_go_type *builtin = builtin_go_type (gdbarch);
-
-  lai->string_char_type = builtin->builtin_char;
+/* Constant data that describes the Go language.  */
 
-  lai->primitive_type_vector
-    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_go_primitive_types + 1,
-			      struct type *);
-
-  lai->primitive_type_vector [go_primitive_type_void]
-    = builtin->builtin_void;
-  lai->primitive_type_vector [go_primitive_type_char]
-    = builtin->builtin_char;
-  lai->primitive_type_vector [go_primitive_type_bool]
-    = builtin->builtin_bool;
-  lai->primitive_type_vector [go_primitive_type_int]
-    = builtin->builtin_int;
-  lai->primitive_type_vector [go_primitive_type_uint]
-    = builtin->builtin_uint;
-  lai->primitive_type_vector [go_primitive_type_uintptr]
-    = builtin->builtin_uintptr;
-  lai->primitive_type_vector [go_primitive_type_int8]
-    = builtin->builtin_int8;
-  lai->primitive_type_vector [go_primitive_type_int16]
-    = builtin->builtin_int16;
-  lai->primitive_type_vector [go_primitive_type_int32]
-    = builtin->builtin_int32;
-  lai->primitive_type_vector [go_primitive_type_int64]
-    = builtin->builtin_int64;
-  lai->primitive_type_vector [go_primitive_type_uint8]
-    = builtin->builtin_uint8;
-  lai->primitive_type_vector [go_primitive_type_uint16]
-    = builtin->builtin_uint16;
-  lai->primitive_type_vector [go_primitive_type_uint32]
-    = builtin->builtin_uint32;
-  lai->primitive_type_vector [go_primitive_type_uint64]
-    = builtin->builtin_uint64;
-  lai->primitive_type_vector [go_primitive_type_float32]
-    = builtin->builtin_float32;
-  lai->primitive_type_vector [go_primitive_type_float64]
-    = builtin->builtin_float64;
-  lai->primitive_type_vector [go_primitive_type_complex64]
-    = builtin->builtin_complex64;
-  lai->primitive_type_vector [go_primitive_type_complex128]
-    = builtin->builtin_complex128;
-
-  lai->bool_type_symbol = "bool";
-  lai->bool_type_default = builtin->builtin_bool;
-}
-
-extern const struct language_defn go_language_defn =
+extern const struct language_data go_language_data =
 {
   "go",
   "Go",
@@ -587,45 +517,132 @@ extern const struct language_defn go_lan
   macro_expansion_no,
   NULL,
   &exp_descriptor_c,
-  go_parse,
-  null_post_parser,
-  c_printchar,			/* Print a character constant.  */
-  c_printstr,			/* Function to print string constant.  */
-  c_emit_char,			/* Print a single char.  */
-  go_print_type,		/* Print a type using appropriate syntax.  */
-  c_print_typedef,		/* Print a typedef using appropriate
-				   syntax.  */
-  go_val_print,			/* Print a value using appropriate syntax.  */
-  c_value_print,		/* Print a top-level value.  */
-  default_read_var_value,	/* la_read_var_value */
-  NULL,				/* Language specific skip_trampoline.  */
   NULL,				/* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
-  basic_lookup_symbol_nonlocal, 
-  basic_lookup_transparent_type,
-  go_demangle,			/* Language specific symbol demangler.  */
-  go_sniff_from_mangled_name,
-  NULL,				/* Language specific
-				   class_name_from_physname.  */
   go_op_print_tab,		/* Expression operators for printing.  */
   1,				/* C-style arrays.  */
   0,				/* String lower bound.  */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  go_language_arch_info,
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  go_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
 
+/* Class representing the Go language.  */
+
+class go_language : public language_defn
+{
+public:
+  go_language ()
+    : language_defn (language_go, go_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    const struct builtin_go_type *builtin = builtin_go_type (gdbarch);
+
+    lai->string_char_type = builtin->builtin_char;
+
+    lai->primitive_type_vector
+      = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_go_primitive_types + 1,
+				struct type *);
+
+    lai->primitive_type_vector [go_primitive_type_void]
+      = builtin->builtin_void;
+    lai->primitive_type_vector [go_primitive_type_char]
+      = builtin->builtin_char;
+    lai->primitive_type_vector [go_primitive_type_bool]
+      = builtin->builtin_bool;
+    lai->primitive_type_vector [go_primitive_type_int]
+      = builtin->builtin_int;
+    lai->primitive_type_vector [go_primitive_type_uint]
+      = builtin->builtin_uint;
+    lai->primitive_type_vector [go_primitive_type_uintptr]
+      = builtin->builtin_uintptr;
+    lai->primitive_type_vector [go_primitive_type_int8]
+      = builtin->builtin_int8;
+    lai->primitive_type_vector [go_primitive_type_int16]
+      = builtin->builtin_int16;
+    lai->primitive_type_vector [go_primitive_type_int32]
+      = builtin->builtin_int32;
+    lai->primitive_type_vector [go_primitive_type_int64]
+      = builtin->builtin_int64;
+    lai->primitive_type_vector [go_primitive_type_uint8]
+      = builtin->builtin_uint8;
+    lai->primitive_type_vector [go_primitive_type_uint16]
+      = builtin->builtin_uint16;
+    lai->primitive_type_vector [go_primitive_type_uint32]
+      = builtin->builtin_uint32;
+    lai->primitive_type_vector [go_primitive_type_uint64]
+      = builtin->builtin_uint64;
+    lai->primitive_type_vector [go_primitive_type_float32]
+      = builtin->builtin_float32;
+    lai->primitive_type_vector [go_primitive_type_float64]
+      = builtin->builtin_float64;
+    lai->primitive_type_vector [go_primitive_type_complex64]
+      = builtin->builtin_complex64;
+    lai->primitive_type_vector [go_primitive_type_complex128]
+      = builtin->builtin_complex128;
+
+    lai->bool_type_symbol = "bool";
+    lai->bool_type_default = builtin->builtin_bool;
+  }
+
+  /* See language.h.  */
+  bool sniff_from_mangled_name (const char *mangled,
+				char **demangled) const override
+  {
+    *demangled = go_demangle (mangled, 0);
+    return *demangled != NULL;
+  }
+
+  /* See language.h.  */
+
+  char *demangle (const char *mangled, int options) const override
+  {
+    return go_demangle (mangled, options);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    go_print_type (type, varstring, stream, show, level, flags);
+  }
+
+  /* See language.h.  */
+
+  void value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const override
+  {
+    return go_value_print_inner (val, stream, recurse, options);
+  }
+
+  /* See language.h.  */
+
+  int parser (struct parser_state *ps) const override
+  {
+    return go_parse (ps);
+  }
+
+  /* See language.h.  */
+
+  bool is_string_type_p (struct type *type) const override
+  {
+    type = check_typedef (type);
+    return (type->code () == TYPE_CODE_STRUCT
+	    && go_classify_struct_type (type) == GO_TYPE_STRING);
+  }
+
+};
+
+/* Single instance of the Go language class.  */
+
+static go_language go_language_defn;
+
 static void *
 build_go_types (struct gdbarch *gdbarch)
 {
@@ -665,11 +682,9 @@ build_go_types (struct gdbarch *gdbarch)
   builtin_go_type->builtin_float64
     = arch_float_type (gdbarch, 64, "float64", floatformats_ieee_double);
   builtin_go_type->builtin_complex64
-    = arch_complex_type (gdbarch, "complex64",
-			 builtin_go_type->builtin_float32);
+    = init_complex_type ("complex64", builtin_go_type->builtin_float32);
   builtin_go_type->builtin_complex128
-    = arch_complex_type (gdbarch, "complex128",
-			 builtin_go_type->builtin_float64);
+    = init_complex_type ("complex128", builtin_go_type->builtin_float64);
 
   return builtin_go_type;
 }
@@ -682,8 +697,9 @@ builtin_go_type (struct gdbarch *gdbarch
   return (const struct builtin_go_type *) gdbarch_data (gdbarch, go_type_data);
 }
 
+void _initialize_go_language ();
 void
-_initialize_go_language (void)
+_initialize_go_language ()
 {
   go_type_data = gdbarch_data_register_post_init (build_go_types);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-lang.h ./gdb/go-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-lang.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/go-lang.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Go language support definitions for GDB, the GNU debugger.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -80,12 +80,10 @@ extern void go_print_type (struct type *
 			   struct ui_file *stream, int show, int level,
 			   const struct type_print_options *flags);
 
-/* Defined in go-valprint.c.  */
+/* Implement la_value_print_inner for Go.  */
 
-extern void go_val_print (struct type *type,
-			  int embedded_offset, CORE_ADDR address,
-			  struct ui_file *stream, int recurse,
-			  struct value *val,
-			  const struct value_print_options *options);
+extern void go_value_print_inner (struct value *value,
+				  struct ui_file *stream, int recurse,
+				  const struct value_print_options *options);
 
 #endif /* !defined (GO_LANG_H) */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-typeprint.c ./gdb/go-typeprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-typeprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/go-typeprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for printing Go types for GDB, the GNU debugger.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -51,8 +51,8 @@ go_print_type (struct type *type, const
     type = check_typedef (type);
 
   /* Print the type of "abc" as "string", not char[4].  */
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY
-      && TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_CHAR)
+  if (type->code () == TYPE_CODE_ARRAY
+      && TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_CHAR)
     {
       fputs_filtered ("string", stream);
       return;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-valprint.c ./gdb/go-valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/go-valprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/go-valprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for printing Go values for GDB, the GNU debugger.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -44,7 +44,7 @@ print_go_string (struct type *type,
 		 const struct value_print_options *options)
 {
   struct gdbarch *gdbarch = get_type_arch (type);
-  struct type *elt_ptr_type = TYPE_FIELD_TYPE (type, 0);
+  struct type *elt_ptr_type = type->field (0).type ();
   struct type *elt_type = TYPE_TARGET_TYPE (elt_ptr_type);
   LONGEST length;
   /* TODO(dje): The encapsulation of what a pointer is belongs in value.c.
@@ -84,17 +84,15 @@ print_go_string (struct type *type,
   val_print_string (elt_type, NULL, addr, length, stream, options);
 }
 
-/* Implements the la_val_print routine for language Go.  */
+/* See go-lang.h.  */
 
 void
-go_val_print (struct type *type, int embedded_offset,
-	      CORE_ADDR address, struct ui_file *stream, int recurse,
-	      struct value *val,
-	      const struct value_print_options *options)
+go_value_print_inner (struct value *val, struct ui_file *stream,
+		      int recurse, const struct value_print_options *options)
 {
-  type = check_typedef (type);
+  struct type *type = check_typedef (value_type (val));
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
       case TYPE_CODE_STRUCT:
 	{
@@ -105,7 +103,8 @@ go_val_print (struct type *type, int emb
 	    case GO_TYPE_STRING:
 	      if (! options->raw)
 		{
-		  print_go_string (type, embedded_offset, address,
+		  print_go_string (type, value_embedded_offset (val),
+				   value_address (val),
 				   stream, recurse, val, options);
 		  return;
 		}
@@ -117,8 +116,7 @@ go_val_print (struct type *type, int emb
 	/* Fall through.  */
 
       default:
-	c_val_print (type, embedded_offset, address, stream,
-		     recurse, val, options);
+	c_value_print_inner (val, stream, recurse, options);
 	break;
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gregset.h ./gdb/gregset.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/gregset.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/gregset.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Interface for functions using gregset and fpregset types.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/guile.c ./gdb/guile/guile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/guile.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/guile.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* General GDB/Guile code.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -396,33 +396,6 @@ static struct cmd_list_element *set_guil
 static struct cmd_list_element *show_guile_list;
 static struct cmd_list_element *info_guile_list;
 
-/* Function for use by 'set guile' prefix command.  */
-
-static void
-set_guile_command (const char *args, int from_tty)
-{
-  help_list (set_guile_list, "set guile ", all_commands, gdb_stdout);
-}
-
-/* Function for use by 'show guile' prefix command.  */
-
-static void
-show_guile_command (const char *args, int from_tty)
-{
-  cmd_show_list (show_guile_list, from_tty, "");
-}
-
-/* The "info scheme" command is defined as a prefix, with
-   allow_unknown 0.  Therefore, its own definition is called only for
-   "info scheme" with no args.  */
-
-static void
-info_guile_command (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"info guile\" must be followed"
-		       " by the name of an info command.\n"));
-  help_list (info_guile_list, "info guile ", all_commands, gdb_stdout);
-}
 
 /* Initialization.  */
 
@@ -761,22 +734,22 @@ This command is only a placeholder.")
 	   );
   add_com_alias ("gu", "guile", class_obscure, 1);
 
-  add_prefix_cmd ("guile", class_obscure, set_guile_command,
-		  _("Prefix command for Guile preference settings."),
-		  &set_guile_list, "set guile ", 0,
-		  &setlist);
+  add_basic_prefix_cmd ("guile", class_obscure,
+			_("Prefix command for Guile preference settings."),
+			&set_guile_list, "set guile ", 0,
+			&setlist);
   add_alias_cmd ("gu", "guile", class_obscure, 1, &setlist);
 
-  add_prefix_cmd ("guile", class_obscure, show_guile_command,
-		  _("Prefix command for Guile preference settings."),
-		  &show_guile_list, "show guile ", 0,
-		  &showlist);
+  add_show_prefix_cmd ("guile", class_obscure,
+		       _("Prefix command for Guile preference settings."),
+		       &show_guile_list, "show guile ", 0,
+		       &showlist);
   add_alias_cmd ("gu", "guile", class_obscure, 1, &showlist);
 
-  add_prefix_cmd ("guile", class_obscure, info_guile_command,
-		  _("Prefix command for Guile info displays."),
-		  &info_guile_list, "info guile ", 0,
-		  &infolist);
+  add_basic_prefix_cmd ("guile", class_obscure,
+			_("Prefix command for Guile info displays."),
+			&info_guile_list, "info guile ", 0,
+			&infolist);
   add_info_alias ("gu", "guile", 1);
 
   /* The name "print-stack" is carried over from Python.
@@ -792,8 +765,9 @@ message == an error message without a st
 			&set_guile_list, &show_guile_list);
 }
 
+void _initialize_guile ();
 void
-_initialize_guile (void)
+_initialize_guile ()
 {
   install_gdb_commands ();
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/guile.h ./gdb/guile/guile.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/guile.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/guile.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* General GDB/Scheme code.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/guile-internal.h ./gdb/guile/guile-internal.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/guile-internal.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/guile-internal.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Internal header for GDB/Scheme code.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -579,6 +579,7 @@ extern struct value *vlscm_scm_to_value
 extern int vlscm_is_value (SCM scm);
 
 extern SCM vlscm_scm_from_value (struct value *value);
+extern SCM vlscm_scm_from_value_no_release (struct value *value);
 
 extern struct value *vlscm_convert_typed_value_from_scheme
   (const char *func_name, int obj_arg_pos, SCM obj,
@@ -602,10 +603,8 @@ extern void gdbscm_preserve_values
 
 extern enum ext_lang_rc gdbscm_apply_val_pretty_printer
   (const struct extension_language_defn *,
-   struct type *type,
-   LONGEST embedded_offset, CORE_ADDR address,
-   struct ui_file *stream, int recurse,
    struct value *val,
+   struct ui_file *stream, int recurse,
    const struct value_print_options *options,
    const struct language_defn *language);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/boot.scm ./gdb/guile/lib/gdb/boot.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/boot.scm	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/lib/gdb/boot.scm	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 ;; Bootstrap the Scheme side of the gdb module.
 ;;
-;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
 ;;
 ;; This file is part of GDB.
 ;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/experimental.scm ./gdb/guile/lib/gdb/experimental.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/experimental.scm	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/lib/gdb/experimental.scm	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 ;; Various experimental utilities.
 ;; Anything in this file can change or disappear.
 ;;
-;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
 ;;
 ;; This file is part of GDB.
 ;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/init.scm ./gdb/guile/lib/gdb/init.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/init.scm	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/lib/gdb/init.scm	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 ;; Scheme side of the gdb module.
 ;;
-;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
 ;;
 ;; This file is part of GDB.
 ;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/iterator.scm ./gdb/guile/lib/gdb/iterator.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/iterator.scm	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/lib/gdb/iterator.scm	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 ;; Iteration utilities.
 ;; Anything in this file can change or disappear.
 ;;
-;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
 ;;
 ;; This file is part of GDB.
 ;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/printing.scm ./gdb/guile/lib/gdb/printing.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/printing.scm	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/lib/gdb/printing.scm	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 ;; Additional pretty-printer support.
 ;;
-;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
 ;;
 ;; This file is part of GDB.
 ;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/support.scm ./gdb/guile/lib/gdb/support.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/support.scm	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/lib/gdb/support.scm	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 ;; Internal support routines.
 ;;
-;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
 ;;
 ;; This file is part of GDB.
 ;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/types.scm ./gdb/guile/lib/gdb/types.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb/types.scm	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/lib/gdb/types.scm	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 ;; Type utilities.
-;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb.scm ./gdb/guile/lib/gdb.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/lib/gdb.scm	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/lib/gdb.scm	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 ;; Scheme side of the gdb module.
 ;;
-;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2021 Free Software Foundation, Inc.
 ;;
 ;; This file is part of GDB.
 ;;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-arch.c ./gdb/guile/scm-arch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-arch.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-arch.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to architecture.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-auto-load.c ./gdb/guile/scm-auto-load.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-auto-load.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-auto-load.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB routines for supporting auto-loaded Guile scripts.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-block.c ./gdb/guile/scm-block.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-block.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-block.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to blocks.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-breakpoint.c ./gdb/guile/scm-breakpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-breakpoint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-breakpoint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to breakpoints.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-cmd.c ./gdb/guile/scm-cmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-cmd.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-cmd.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB commands implemented in Scheme.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -512,7 +512,7 @@ gdbscm_parse_command_name (const char *n
   prefix_text[i + 1] = '\0';
 
   prefix_text2 = prefix_text;
-  elt = lookup_cmd_1 (&prefix_text2, *start_list, NULL, 1);
+  elt = lookup_cmd_1 (&prefix_text2, *start_list, NULL, NULL, 1);
   if (elt == NULL || elt == CMD_LIST_AMBIGUOUS)
     {
       msg = xstrprintf (_("could not find command prefix '%s'"), prefix_text);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-disasm.c ./gdb/guile/scm-disasm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-disasm.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-disasm.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to architecture.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-exception.c ./gdb/guile/scm-exception.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-exception.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-exception.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB/Scheme exception support.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-frame.c ./gdb/guile/scm-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-frame.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-frame.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to stack frames.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-gsmob.c ./gdb/guile/scm-gsmob.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-gsmob.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-gsmob.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB/Scheme smobs (gsmob is pronounced "jee smob")
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-iterator.c ./gdb/guile/scm-iterator.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-iterator.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-iterator.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Simple iterators for GDB/Scheme.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-lazy-string.c ./gdb/guile/scm-lazy-string.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-lazy-string.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-lazy-string.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to lazy strings.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -201,7 +201,7 @@ lsscm_elt_type (lazy_string_smob *ls_smo
 
   realtype = check_typedef (type);
 
-  switch (TYPE_CODE (realtype))
+  switch (realtype->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_ARRAY:
@@ -314,7 +314,7 @@ lsscm_safe_lazy_string_to_value (SCM str
       struct type *type = tyscm_scm_to_type (ls_smob->type);
       struct type *realtype = check_typedef (type);
 
-      switch (TYPE_CODE (realtype))
+      switch (realtype->code ())
 	{
 	case TYPE_CODE_PTR:
 	  /* If a length is specified we need to convert this to an array
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-math.c ./gdb/guile/scm-math.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-math.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-math.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB/Scheme support for math operations on values.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -65,7 +65,7 @@ enum valscm_binary_opcode
 
 /* If TYPE is a reference, return the target; otherwise return TYPE.  */
 #define STRIP_REFERENCE(TYPE) \
-  ((TYPE_CODE (TYPE) == TYPE_CODE_REF) ? (TYPE_TARGET_TYPE (TYPE)) : (TYPE))
+  ((TYPE->code () == TYPE_CODE_REF) ? (TYPE_TARGET_TYPE (TYPE)) : (TYPE))
 
 /* Helper for vlscm_unop.  Contains all the code that may throw a GDB
    exception.  */
@@ -168,10 +168,10 @@ vlscm_binop_gdbthrow (enum valscm_binary
 	rtype = check_typedef (rtype);
 	rtype = STRIP_REFERENCE (rtype);
 
-	if (TYPE_CODE (ltype) == TYPE_CODE_PTR
+	if (ltype->code () == TYPE_CODE_PTR
 	    && is_integral_type (rtype))
 	  res_val = value_ptradd (arg1, value_as_long (arg2));
-	else if (TYPE_CODE (rtype) == TYPE_CODE_PTR
+	else if (rtype->code () == TYPE_CODE_PTR
 		 && is_integral_type (ltype))
 	  res_val = value_ptradd (arg2, value_as_long (arg1));
 	else
@@ -188,15 +188,15 @@ vlscm_binop_gdbthrow (enum valscm_binary
 	rtype = check_typedef (rtype);
 	rtype = STRIP_REFERENCE (rtype);
 
-	if (TYPE_CODE (ltype) == TYPE_CODE_PTR
-	    && TYPE_CODE (rtype) == TYPE_CODE_PTR)
+	if (ltype->code () == TYPE_CODE_PTR
+	    && rtype->code () == TYPE_CODE_PTR)
 	  {
 	    /* A ptrdiff_t for the target would be preferable here.  */
 	    res_val
 	      = value_from_longest (builtin_type (gdbarch)->builtin_long,
 				    value_ptrdiff (arg1, arg2));
 	  }
-	else if (TYPE_CODE (ltype) == TYPE_CODE_PTR
+	else if (ltype->code () == TYPE_CODE_PTR
 		 && is_integral_type (rtype))
 	  res_val = value_ptradd (arg1, - value_as_long (arg2));
 	else
@@ -525,7 +525,7 @@ vlscm_convert_typed_number (const char *
 			    struct gdbarch *gdbarch, SCM *except_scmp)
 {
   if (is_integral_type (type)
-      || TYPE_CODE (type) == TYPE_CODE_PTR)
+      || type->code () == TYPE_CODE_PTR)
     {
       if (TYPE_UNSIGNED (type))
 	{
@@ -558,7 +558,7 @@ vlscm_convert_typed_number (const char *
 	  return value_from_longest (type, gdbscm_scm_to_longest (obj));
 	}
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_FLT)
+  else if (type->code () == TYPE_CODE_FLT)
     return value_from_host_double (type, scm_to_double (obj));
   else
     {
@@ -578,7 +578,7 @@ vlscm_integer_fits_p (SCM obj, struct ty
       ULONGEST max;
 
       /* If scm_is_unsigned_integer can't work with this type, just punt.  */
-      if (TYPE_LENGTH (type) > sizeof (scm_t_uintmax))
+      if (TYPE_LENGTH (type) > sizeof (uintmax_t))
 	return 0;
       get_unsigned_type_max (type, &max);
       return scm_is_unsigned_integer (obj, 0, max);
@@ -588,7 +588,7 @@ vlscm_integer_fits_p (SCM obj, struct ty
       LONGEST min, max;
 
       /* If scm_is_signed_integer can't work with this type, just punt.  */
-      if (TYPE_LENGTH (type) > sizeof (scm_t_intmax))
+      if (TYPE_LENGTH (type) > sizeof (intmax_t))
 	return 0;
       get_signed_type_minmax (type, &min, &max);
       return scm_is_signed_integer (obj, min, max);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-objfile.c ./gdb/guile/scm-objfile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-objfile.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-objfile.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to objfiles.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-param.c ./gdb/guile/scm-param.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-param.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-param.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB parameters implemented in Guile.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -466,13 +466,13 @@ add_setshow_generic (enum var_types para
   /* Lookup created parameter, and register Scheme object against the
      parameter context.  Perform this task against both lists.  */
   tmp_name = cmd_name;
-  param = lookup_cmd (&tmp_name, *show_list, "", 0, 1);
+  param = lookup_cmd (&tmp_name, *show_list, "", NULL, 0, 1);
   gdb_assert (param != NULL);
   set_cmd_context (param, self);
   *set_cmd = param;
 
   tmp_name = cmd_name;
-  param = lookup_cmd (&tmp_name, *set_list, "", 0, 1);
+  param = lookup_cmd (&tmp_name, *set_list, "", NULL, 0, 1);
   gdb_assert (param != NULL);
   set_cmd_context (param, self);
   *show_cmd = param;
@@ -969,7 +969,7 @@ pascm_parameter_defined_p (const char *n
 {
   struct cmd_list_element *c;
 
-  c = lookup_cmd_1 (&name, list, NULL, 1);
+  c = lookup_cmd_1 (&name, list, NULL, NULL, 1);
 
   /* If the name is ambiguous that's ok, it's a new parameter still.  */
   return c != NULL && c != CMD_LIST_AMBIGUOUS;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-ports.c ./gdb/guile/scm-ports.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-ports.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-ports.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Support for connecting Guile's stdio to GDB's.
    as well as r/w memory via ports.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,7 +22,7 @@
    conventions, et.al.  */
 
 #include "defs.h"
-#include "gdb_select.h"
+#include "gdbsupport/gdb_select.h"
 #include "top.h"
 #include "target.h"
 #include "guile-internal.h"
@@ -36,6 +36,12 @@
 #endif
 #endif
 
+/* Whether we're using Guile < 2.2 and its clumsy port API.  */
+
+#define USING_GUILE_BEFORE_2_2				\
+  (SCM_MAJOR_VERSION == 2 && SCM_MINOR_VERSION == 0)
+
+
 /* A ui-file for sending output to Guile.  */
 
 class ioscm_file_port : public ui_file
@@ -66,12 +72,14 @@ typedef struct
      This value is always in the range [0, size].  */
   ULONGEST current;
 
+#if USING_GUILE_BEFORE_2_2
   /* The size of the internal r/w buffers.
      Scheme ports aren't a straightforward mapping to memory r/w.
      Generally the user specifies how much to r/w and all access is
      unbuffered.  We don't try to provide equivalent access, but we allow
      the user to specify these values to help get something similar.  */
   unsigned read_buf_size, write_buf_size;
+#endif
 } ioscm_memory_port;
 
 /* Copies of the original system input/output/error ports.
@@ -81,7 +89,11 @@ static SCM orig_output_port_scm;
 static SCM orig_error_port_scm;
 
 /* This is the stdio port descriptor, scm_ptob_descriptor.  */
+#if USING_GUILE_BEFORE_2_2
 static scm_t_bits stdio_port_desc;
+#else
+static scm_t_port_type *stdio_port_desc;
+#endif
 
 /* Note: scm_make_port_type takes a char * instead of a const char *.  */
 static /*const*/ char stdio_port_desc_name[] = "gdb:stdio-port";
@@ -102,11 +114,17 @@ static SCM error_port_scm;
 enum oport { GDB_STDOUT, GDB_STDERR };
 
 /* This is the memory port descriptor, scm_ptob_descriptor.  */
+#if USING_GUILE_BEFORE_2_2
 static scm_t_bits memory_port_desc;
+#else
+static scm_t_port_type *memory_port_desc;
+#endif
 
 /* Note: scm_make_port_type takes a char * instead of a const char *.  */
 static /*const*/ char memory_port_desc_name[] = "gdb:memory-port";
 
+#if USING_GUILE_BEFORE_2_2
+
 /* The default amount of memory to fetch for each read/write request.
    Scheme ports don't provide a way to specify the size of a read,
    which is important to us to minimize the number of inferior interactions,
@@ -123,16 +141,24 @@ static const unsigned max_memory_port_bu
 /* "out of range" error message for buf sizes.  */
 static char *out_of_range_buf_size;
 
+#else
+
+/* The maximum values to use for get_natural_buffer_sizes.  */
+static const unsigned natural_buf_size = 16;
+
+#endif
+
 /* Keywords used by open-memory.  */
 static SCM mode_keyword;
 static SCM start_keyword;
 static SCM size_keyword;
 
-/* Helper to do the low level work of opening a port.
-   Newer versions of Guile (2.1.x) have scm_c_make_port.  */
+/* Helper to do the low level work of opening a port.  */
+
+#if USING_GUILE_BEFORE_2_2
 
 static SCM
-ioscm_open_port (scm_t_bits port_type, long mode_bits)
+ioscm_open_port (scm_t_bits port_type, long mode_bits, scm_t_bits stream)
 {
   SCM port;
 
@@ -143,6 +169,7 @@ ioscm_open_port (scm_t_bits port_type, l
   port = scm_new_port_table_entry (port_type);
 
   SCM_SET_CELL_TYPE (port, port_type | mode_bits);
+  SCM_SETSTREAM (port, stream);
 
 #if 0 /* TODO: Guile doesn't export this.  What to do?  */
   scm_i_pthread_mutex_unlock (&scm_i_port_table_mutex);
@@ -150,9 +177,39 @@ ioscm_open_port (scm_t_bits port_type, l
 
   return port;
 }
+
+#else
+
+static SCM
+ioscm_open_port (scm_t_port_type *port_type, long mode_bits, scm_t_bits stream)
+{
+  return scm_c_make_port (port_type, mode_bits, stream);
+}
+
+#endif
+
 
 /* Support for connecting Guile's stdio ports to GDB's stdio ports.  */
 
+/* Like fputstrn_filtered, but don't escape characters, except nul.
+   Also like fputs_filtered, but a length is specified.  */
+
+static void
+fputsn_filtered (const char *s, size_t size, struct ui_file *stream)
+{
+  size_t i;
+
+  for (i = 0; i < size; ++i)
+    {
+      if (s[i] == '\0')
+	fputs_filtered ("\\000", stream);
+      else
+	fputc_filtered (s[i], stream);
+    }
+}
+
+#if USING_GUILE_BEFORE_2_2
+
 /* The scm_t_ptob_descriptor.input_waiting "method".
    Return a lower bound on the number of bytes available for input.  */
 
@@ -234,7 +291,7 @@ ioscm_fill_input (SCM port)
   gdb_flush (gdb_stdout);
   gdb_flush (gdb_stderr);
 
-  count = ui_file_read (gdb_stdin, (char *) pt->read_buf, pt->read_buf_size);
+  count = gdb_stdin->read ((char *) pt->read_buf, pt->read_buf_size);
   if (count == -1)
     scm_syserror (FUNC_NAME);
   if (count == 0)
@@ -245,23 +302,6 @@ ioscm_fill_input (SCM port)
   return *pt->read_buf;
 }
 
-/* Like fputstrn_filtered, but don't escape characters, except nul.
-   Also like fputs_filtered, but a length is specified.  */
-
-static void
-fputsn_filtered (const char *s, size_t size, struct ui_file *stream)
-{
-  size_t i;
-
-  for (i = 0; i < size; ++i)
-    {
-      if (s[i] == '\0')
-	fputs_filtered ("\\000", stream);
-      else
-	fputc_filtered (s[i], stream);
-    }
-}
-
 /* Write to gdb's stdout or stderr.  */
 
 static void
@@ -302,6 +342,62 @@ ioscm_flush (SCM port)
     gdb_flush (gdb_stdout);
 }
 
+#else /* !USING_GUILE_BEFORE_2_2 */
+
+/* Read up to COUNT bytes into bytevector DST at offset START.  Return the
+   number of bytes read, zero for the end of file.  */
+
+static size_t
+ioscm_read_from_port (SCM port, SCM dst, size_t start, size_t count)
+{
+  long read;
+  char *read_buf;
+
+  /* If we're called on stdout,stderr, punt.  */
+  if (! scm_is_eq (port, input_port_scm))
+    return 0;
+
+  gdb_flush (gdb_stdout);
+  gdb_flush (gdb_stderr);
+
+  read_buf = (char *) SCM_BYTEVECTOR_CONTENTS (dst) + start;
+  read = gdb_stdin->read (read_buf, count);
+  if (read == -1)
+    scm_syserror (FUNC_NAME);
+
+  return (size_t) read;
+}
+
+/* Write to gdb's stdout or stderr.  */
+
+static size_t
+ioscm_write (SCM port, SCM src, size_t start, size_t count)
+{
+  const char *data = (char *) SCM_BYTEVECTOR_CONTENTS (src) + start;
+
+  /* If we're called on stdin, punt.  */
+  if (scm_is_eq (port, input_port_scm))
+    return 0;
+
+  gdbscm_gdb_exception exc {};
+  try
+    {
+      if (scm_is_eq (port, error_port_scm))
+	fputsn_filtered ((const char *) data, count, gdb_stderr);
+      else
+	fputsn_filtered ((const char *) data, count, gdb_stdout);
+    }
+  catch (const gdb_exception &except)
+    {
+      exc = unpack (except);
+    }
+  GDBSCM_HANDLE_GDB_EXCEPTION (exc);
+
+  return count;
+}
+
+#endif /* !USING_GUILE_BEFORE_2_2 */
+
 /* Initialize the gdb stdio port type.
 
    N.B. isatty? will fail on these ports, it is only supported for file
@@ -311,12 +407,25 @@ static void
 ioscm_init_gdb_stdio_port (void)
 {
   stdio_port_desc = scm_make_port_type (stdio_port_desc_name,
-					ioscm_fill_input, ioscm_write);
+#if USING_GUILE_BEFORE_2_2
+					ioscm_fill_input,
+#else
+					ioscm_read_from_port,
+#endif
+					ioscm_write);
 
+#if USING_GUILE_BEFORE_2_2
   scm_set_port_input_waiting (stdio_port_desc, ioscm_input_waiting);
   scm_set_port_flush (stdio_port_desc, ioscm_flush);
+#else
+  scm_set_port_read_wait_fd (stdio_port_desc, STDIN_FILENO);
+#endif
 }
 
+#define GDB_STDIO_BUFFER_DEFAULT_SIZE 1024
+
+#if USING_GUILE_BEFORE_2_2
+
 /* Subroutine of ioscm_make_gdb_stdio_port to simplify it.
    Set up the buffers of port PORT.
    MODE_BITS are the mode bits of PORT.  */
@@ -325,7 +434,6 @@ static void
 ioscm_init_stdio_buffers (SCM port, long mode_bits)
 {
   scm_t_port *pt = SCM_PTAB_ENTRY (port);
-#define GDB_STDIO_BUFFER_DEFAULT_SIZE 1024
   int size = mode_bits & SCM_BUF0 ? 0 : GDB_STDIO_BUFFER_DEFAULT_SIZE;
   int writing = (mode_bits & SCM_WRTNG) != 0;
 
@@ -359,6 +467,20 @@ ioscm_init_stdio_buffers (SCM port, long
   pt->write_end = pt->write_buf + pt->write_buf_size;
 }
 
+#else
+
+static void
+ioscm_init_stdio_buffers (SCM port, long mode_bits)
+{
+  if (mode_bits & SCM_BUF0)
+    scm_setvbuf (port, scm_from_utf8_symbol ("none"), scm_from_size_t (0));
+  else
+    scm_setvbuf (port, scm_from_utf8_symbol ("block"),
+		 scm_from_size_t (GDB_STDIO_BUFFER_DEFAULT_SIZE));
+}
+
+#endif
+
 /* Create a gdb stdio port.  */
 
 static SCM
@@ -389,7 +511,7 @@ ioscm_make_gdb_stdio_port (int fd)
     }
 
   mode_bits = scm_mode_bits ((char *) mode_str);
-  port = ioscm_open_port (stdio_port_desc, mode_bits);
+  port = ioscm_open_port (stdio_port_desc, mode_bits, 0);
 
   scm_set_port_filename_x (port, gdbscm_scm_from_c_string (name));
 
@@ -403,9 +525,14 @@ ioscm_make_gdb_stdio_port (int fd)
 static SCM
 gdbscm_stdio_port_p (SCM scm)
 {
+#if USING_GUILE_BEFORE_2_2
   /* This is copied from SCM_FPORTP.  */
   return scm_from_bool (!SCM_IMP (scm)
 			&& (SCM_TYP16 (scm) == stdio_port_desc));
+#else
+  return scm_from_bool (SCM_PORTP (scm)
+			&& (SCM_PORT_TYPE (scm) == stdio_port_desc));
+#endif
 }
 
 /* GDB's ports are accessed via functions to keep them read-only.  */
@@ -568,6 +695,8 @@ ioscm_lseek_address (ioscm_memory_port *
   return 1;
 }
 
+#if USING_GUILE_BEFORE_2_2
+
 /* "fill_input" method for memory ports.  */
 
 static int
@@ -661,73 +790,6 @@ gdbscm_memory_port_flush (SCM port)
   pt->rw_active = SCM_PORT_NEITHER;
 }
 
-/* "write" method for memory ports.  */
-
-static void
-gdbscm_memory_port_write (SCM port, const void *void_data, size_t size)
-{
-  scm_t_port *pt = SCM_PTAB_ENTRY (port);
-  ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (port);
-  const gdb_byte *data = (const gdb_byte *) void_data;
-
-  /* There's no way to indicate a short write, so if the request goes past
-     the end of the port's memory range, flag an error.  */
-  if (size > iomem->size - iomem->current)
-    {
-      gdbscm_out_of_range_error (FUNC_NAME, 0, gdbscm_scm_from_ulongest (size),
-				 _("writing beyond end of memory range"));
-    }
-
-  if (pt->write_buf == &pt->shortbuf)
-    {
-      /* Unbuffered port.  */
-      if (target_write_memory (iomem->start + iomem->current, data, size) != 0)
-	gdbscm_memory_error (FUNC_NAME, _("error writing memory"), SCM_EOL);
-      iomem->current += size;
-      return;
-    }
-
-  /* Note: The edge case of what to do when the buffer exactly fills is
-     debatable.  Guile flushes when the buffer exactly fills up, so we
-     do too.  It's counter-intuitive to my mind, but in case there's a
-     subtlety somewhere that depends on this, we do the same.  */
-
-  {
-    size_t space = pt->write_end - pt->write_pos;
-
-    if (size < space)
-      {
-	/* Data fits in buffer, and does not fill it.  */
-	memcpy (pt->write_pos, data, size);
-	pt->write_pos += size;
-      }
-    else
-      {
-	memcpy (pt->write_pos, data, space);
-	pt->write_pos = pt->write_end;
-	gdbscm_memory_port_flush (port);
-	{
-	  const gdb_byte *ptr = data + space;
-	  size_t remaining = size - space;
-
-	  if (remaining >= pt->write_buf_size)
-	    {
-	      if (target_write_memory (iomem->start + iomem->current, ptr,
-				       remaining) != 0)
-		gdbscm_memory_error (FUNC_NAME, _("error writing memory"),
-				     SCM_EOL);
-	      iomem->current += remaining;
-	    }
-	  else
-	    {
-	      memcpy (pt->write_pos, ptr, remaining);
-	      pt->write_pos += remaining;
-	    }
-	}
-      }
-  }
-}
-
 /* "seek" method for memory ports.  */
 
 static scm_t_off
@@ -820,6 +882,73 @@ gdbscm_memory_port_seek (SCM port, scm_t
   return result;
 }
 
+/* "write" method for memory ports.  */
+
+static void
+gdbscm_memory_port_write (SCM port, const void *void_data, size_t size)
+{
+  scm_t_port *pt = SCM_PTAB_ENTRY (port);
+  ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (port);
+  const gdb_byte *data = (const gdb_byte *) void_data;
+
+  /* There's no way to indicate a short write, so if the request goes past
+     the end of the port's memory range, flag an error.  */
+  if (size > iomem->size - iomem->current)
+    {
+      gdbscm_out_of_range_error (FUNC_NAME, 0, gdbscm_scm_from_ulongest (size),
+				 _("writing beyond end of memory range"));
+    }
+
+  if (pt->write_buf == &pt->shortbuf)
+    {
+      /* Unbuffered port.  */
+      if (target_write_memory (iomem->start + iomem->current, data, size) != 0)
+	gdbscm_memory_error (FUNC_NAME, _("error writing memory"), SCM_EOL);
+      iomem->current += size;
+      return;
+    }
+
+  /* Note: The edge case of what to do when the buffer exactly fills is
+     debatable.  Guile flushes when the buffer exactly fills up, so we
+     do too.  It's counter-intuitive to my mind, but in case there's a
+     subtlety somewhere that depends on this, we do the same.  */
+
+  {
+    size_t space = pt->write_end - pt->write_pos;
+
+    if (size < space)
+      {
+	/* Data fits in buffer, and does not fill it.  */
+	memcpy (pt->write_pos, data, size);
+	pt->write_pos += size;
+      }
+    else
+      {
+	memcpy (pt->write_pos, data, space);
+	pt->write_pos = pt->write_end;
+	gdbscm_memory_port_flush (port);
+	{
+	  const gdb_byte *ptr = data + space;
+	  size_t remaining = size - space;
+
+	  if (remaining >= pt->write_buf_size)
+	    {
+	      if (target_write_memory (iomem->start + iomem->current, ptr,
+				       remaining) != 0)
+		gdbscm_memory_error (FUNC_NAME, _("error writing memory"),
+				     SCM_EOL);
+	      iomem->current += remaining;
+	    }
+	  else
+	    {
+	      memcpy (pt->write_pos, ptr, remaining);
+	      pt->write_pos += remaining;
+	    }
+	}
+      }
+  }
+}
+
 /* "close" method for memory ports.  */
 
 static int
@@ -851,18 +980,178 @@ gdbscm_memory_port_free (SCM port)
   return 0;
 }
 
+/* Re-initialize a memory port, updating its read/write buffer sizes.
+   An exception is thrown if the port is unbuffered.
+   TODO: Allow switching buffered/unbuffered.
+   An exception is also thrown if data is still buffered, except in the case
+   where the buffer size isn't changing (since that's just a nop).  */
+
+static void
+ioscm_reinit_memory_port (SCM port, size_t read_buf_size,
+			  size_t write_buf_size, const char *func_name)
+{
+  scm_t_port *pt = SCM_PTAB_ENTRY (port);
+  ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (port);
+
+  gdb_assert (read_buf_size >= min_memory_port_buf_size
+	      && read_buf_size <= max_memory_port_buf_size);
+  gdb_assert (write_buf_size >= min_memory_port_buf_size
+	      && write_buf_size <= max_memory_port_buf_size);
+
+  /* First check if the port is unbuffered.  */
+
+  if (pt->read_buf == &pt->shortbuf)
+    {
+      gdb_assert (pt->write_buf == &pt->shortbuf);
+      scm_misc_error (func_name, _("port is unbuffered: ~a"),
+		      scm_list_1 (port));
+    }
+
+  /* Next check if anything is buffered.  */
+
+  if (read_buf_size != pt->read_buf_size
+      && pt->read_end != pt->read_buf)
+    {
+      scm_misc_error (func_name, _("read buffer not empty: ~a"),
+		      scm_list_1 (port));
+    }
+
+  if (write_buf_size != pt->write_buf_size
+      && pt->write_pos != pt->write_buf)
+    {
+      scm_misc_error (func_name, _("write buffer not empty: ~a"),
+		      scm_list_1 (port));
+    }
+
+  /* Now we can update the buffer sizes, but only if the size has changed.  */
+
+  if (read_buf_size != pt->read_buf_size)
+    {
+      iomem->read_buf_size = read_buf_size;
+      pt->read_buf_size = read_buf_size;
+      xfree (pt->read_buf);
+      pt->read_buf = (unsigned char *) xmalloc (pt->read_buf_size);
+      pt->read_pos = pt->read_end = pt->read_buf;
+    }
+
+  if (write_buf_size != pt->write_buf_size)
+    {
+      iomem->write_buf_size = write_buf_size;
+      pt->write_buf_size = write_buf_size;
+      xfree (pt->write_buf);
+      pt->write_buf = (unsigned char *) xmalloc (pt->write_buf_size);
+      pt->write_pos = pt->write_buf;
+      pt->write_end = pt->write_buf + pt->write_buf_size;
+    }
+}
+
+#else /* !USING_GUILE_BEFORE_2_2 */
+
+/* The semantics get weird if the buffer size is larger than the port range,
+   so provide a better default buffer size.  */
+
+static void
+gdbscm_get_natural_buffer_sizes (SCM port, size_t *read_size,
+				 size_t *write_size)
+{
+  ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (port);
+
+  size_t size = natural_buf_size;
+  if (iomem != NULL && iomem->size < size)
+    size = iomem->size;
+  *read_size = *write_size = size;
+}
+
+/* Read up to COUNT bytes into bytevector DST at offset START.  Return the
+   number of bytes read, zero for the end of file.  */
+
+static size_t
+gdbscm_memory_port_read (SCM port, SCM dst, size_t start, size_t count)
+{
+  gdb_byte *read_buf;
+  ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (port);
+
+  /* "current" is the offset of the first byte we want to read.  */
+  gdb_assert (iomem->current <= iomem->size);
+  if (iomem->current == iomem->size)
+    return 0;
+
+  /* Don't read outside the allowed memory range.  */
+  if (count > iomem->size - iomem->current)
+    count = iomem->size - iomem->current;
+
+  read_buf = (gdb_byte *) SCM_BYTEVECTOR_CONTENTS (dst) + start;
+  if (target_read_memory (iomem->start + iomem->current, read_buf,
+			  count) != 0)
+    gdbscm_memory_error (FUNC_NAME, _("error reading memory"), SCM_EOL);
+
+  iomem->current += count;
+  return count;
+}
+
+static size_t
+gdbscm_memory_port_write (SCM port, SCM src, size_t start, size_t count)
+{
+  ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (port);
+  const gdb_byte *data =
+    (const gdb_byte *) SCM_BYTEVECTOR_CONTENTS (src) + start;
+
+  /* If the request goes past the end of the port's memory range, flag an
+     error.  */
+  if (count > iomem->size - iomem->current)
+    gdbscm_out_of_range_error (FUNC_NAME, 0, scm_from_size_t (count),
+			       _("writing beyond end of memory range"));
+
+  if (target_write_memory (iomem->start + iomem->current, data,
+			   count) != 0)
+    gdbscm_memory_error (FUNC_NAME, _("error writing memory"),
+			 SCM_EOL);
+
+  iomem->current += count;
+
+  return count;
+}
+
+static scm_t_off
+gdbscm_memory_port_seek (SCM port, scm_t_off offset, int whence)
+{
+  ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (port);
+  int rc;
+
+  rc = ioscm_lseek_address (iomem, offset, whence);
+  if (rc == 0)
+    gdbscm_out_of_range_error (FUNC_NAME, 0,
+			       gdbscm_scm_from_longest (offset),
+			       _("bad seek"));
+
+  /* TODO: The Guile API doesn't support 32x64.  We can't fix that here,
+     and there's no need to throw an error if the new address can't be
+     represented in a scm_t_off.  But we could return something less
+     clumsy.  */
+  return iomem->current;
+}
+
+static void
+gdbscm_memory_port_close (SCM port)
+{
+  ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (port);
+  scm_gc_free (iomem, sizeof (*iomem), "memory port");
+  SCM_SETSTREAM (port, NULL);
+}
+
+#endif /* !USING_GUILE_BEFORE_2_2 */
+
 /* "print" method for memory ports.  */
 
 static int
 gdbscm_memory_port_print (SCM exp, SCM port, scm_print_state *pstate)
 {
   ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (exp);
-  char *type = SCM_PTOBNAME (SCM_PTOBNUM (exp));
 
   scm_puts ("#<", port);
   scm_print_port_mode (exp, port);
   /* scm_print_port_mode includes a trailing space.  */
-  gdbscm_printf (port, "%s %s-%s", type,
+  gdbscm_printf (port, "%s %s-%s", memory_port_desc_name,
 		 hex_string (iomem->start), hex_string (iomem->end));
   scm_putc ('>', port);
   return 1;
@@ -874,14 +1163,23 @@ static void
 ioscm_init_memory_port_type (void)
 {
   memory_port_desc = scm_make_port_type (memory_port_desc_name,
+#if USING_GUILE_BEFORE_2_2
 					 gdbscm_memory_port_fill_input,
+#else
+					 gdbscm_memory_port_read,
+#endif
 					 gdbscm_memory_port_write);
 
+#if USING_GUILE_BEFORE_2_2
   scm_set_port_end_input (memory_port_desc, gdbscm_memory_port_end_input);
   scm_set_port_flush (memory_port_desc, gdbscm_memory_port_flush);
+  scm_set_port_free (memory_port_desc, gdbscm_memory_port_free);
+#else
+  scm_set_port_get_natural_buffer_sizes (memory_port_desc,
+					 gdbscm_get_natural_buffer_sizes);
+#endif
   scm_set_port_seek (memory_port_desc, gdbscm_memory_port_seek);
   scm_set_port_close (memory_port_desc, gdbscm_memory_port_close);
-  scm_set_port_free (memory_port_desc, gdbscm_memory_port_free);
   scm_set_port_print (memory_port_desc, gdbscm_memory_port_print);
 }
 
@@ -922,17 +1220,13 @@ ioscm_parse_mode_bits (const char *func_
   return mode_bits;
 }
 
-/* Helper for gdbscm_open_memory to finish initializing the port.
-   The port has address range [start,end).
-   This means that address of 0xff..ff is not accessible.
-   I can live with that.  */
+/* Return the memory object to be used as a "stream" associated with a memory
+   port for the START--END range.  */
 
-static void
-ioscm_init_memory_port (SCM port, CORE_ADDR start, CORE_ADDR end)
+static ioscm_memory_port *
+ioscm_init_memory_port_stream (CORE_ADDR start, CORE_ADDR end)
 {
-  scm_t_port *pt;
   ioscm_memory_port *iomem;
-  int buffered = (SCM_CELL_WORD_0 (port) & SCM_BUF0) == 0;
 
   gdb_assert (start <= end);
 
@@ -943,6 +1237,23 @@ ioscm_init_memory_port (SCM port, CORE_A
   iomem->end = end;
   iomem->size = end - start;
   iomem->current = 0;
+
+  return iomem;
+}
+
+#if USING_GUILE_BEFORE_2_2
+
+/* Helper for gdbscm_open_memory to finish initializing the port.
+   The port has address range [start,end).
+   This means that address of 0xff..ff is not accessible.
+   I can live with that.  */
+
+static void
+ioscm_init_memory_port_buffers (SCM port)
+{
+  ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (port);
+
+  int buffered = (SCM_CELL_WORD_0 (port) & SCM_BUF0) == 0;
   if (buffered)
     {
       iomem->read_buf_size = default_read_buf_size;
@@ -954,7 +1265,7 @@ ioscm_init_memory_port (SCM port, CORE_A
       iomem->write_buf_size = 1;
     }
 
-  pt = SCM_PTAB_ENTRY (port);
+  scm_t_port *pt = SCM_PTAB_ENTRY (port);
   /* Match the expectation of `binary-port?'.  */
   pt->encoding = NULL;
   pt->rw_random = 1;
@@ -973,74 +1284,9 @@ ioscm_init_memory_port (SCM port, CORE_A
   pt->read_pos = pt->read_end = pt->read_buf;
   pt->write_pos = pt->write_buf;
   pt->write_end = pt->write_buf + pt->write_buf_size;
-
-  SCM_SETSTREAM (port, iomem);
 }
 
-/* Re-initialize a memory port, updating its read/write buffer sizes.
-   An exception is thrown if the port is unbuffered.
-   TODO: Allow switching buffered/unbuffered.
-   An exception is also thrown if data is still buffered, except in the case
-   where the buffer size isn't changing (since that's just a nop).  */
-
-static void
-ioscm_reinit_memory_port (SCM port, size_t read_buf_size,
-			  size_t write_buf_size, const char *func_name)
-{
-  scm_t_port *pt = SCM_PTAB_ENTRY (port);
-  ioscm_memory_port *iomem = (ioscm_memory_port *) SCM_STREAM (port);
-
-  gdb_assert (read_buf_size >= min_memory_port_buf_size
-	      && read_buf_size <= max_memory_port_buf_size);
-  gdb_assert (write_buf_size >= min_memory_port_buf_size
-	      && write_buf_size <= max_memory_port_buf_size);
-
-  /* First check if the port is unbuffered.  */
-
-  if (pt->read_buf == &pt->shortbuf)
-    {
-      gdb_assert (pt->write_buf == &pt->shortbuf);
-      scm_misc_error (func_name, _("port is unbuffered: ~a"),
-		      scm_list_1 (port));
-    }
-
-  /* Next check if anything is buffered.  */
-
-  if (read_buf_size != pt->read_buf_size
-      && pt->read_end != pt->read_buf)
-    {
-      scm_misc_error (func_name, _("read buffer not empty: ~a"),
-		      scm_list_1 (port));
-    }
-
-  if (write_buf_size != pt->write_buf_size
-      && pt->write_pos != pt->write_buf)
-    {
-      scm_misc_error (func_name, _("write buffer not empty: ~a"),
-		      scm_list_1 (port));
-    }
-
-  /* Now we can update the buffer sizes, but only if the size has changed.  */
-
-  if (read_buf_size != pt->read_buf_size)
-    {
-      iomem->read_buf_size = read_buf_size;
-      pt->read_buf_size = read_buf_size;
-      xfree (pt->read_buf);
-      pt->read_buf = (unsigned char *) xmalloc (pt->read_buf_size);
-      pt->read_pos = pt->read_end = pt->read_buf;
-    }
-
-  if (write_buf_size != pt->write_buf_size)
-    {
-      iomem->write_buf_size = write_buf_size;
-      pt->write_buf_size = write_buf_size;
-      xfree (pt->write_buf);
-      pt->write_buf = (unsigned char *) xmalloc (pt->write_buf_size);
-      pt->write_pos = pt->write_buf;
-      pt->write_end = pt->write_buf + pt->write_buf_size;
-    }
-}
+#endif
 
 /* (open-memory [#:mode string] [#:start address] [#:size integer]) -> port
    Return a port that can be used for reading and writing memory.
@@ -1109,9 +1355,19 @@ gdbscm_open_memory (SCM rest)
 
   mode_bits = ioscm_parse_mode_bits (FUNC_NAME, mode);
 
-  port = ioscm_open_port (memory_port_desc, mode_bits);
+  /* Edge case: empty range -> unbuffered.
+     There's no need to disallow empty ranges, but we need an unbuffered port
+     to get the semantics right.  */
+  if (size == 0)
+    mode_bits |= SCM_BUF0;
+
+  auto stream = ioscm_init_memory_port_stream (start, end);
+  port = ioscm_open_port (memory_port_desc, mode_bits,
+			  (scm_t_bits) stream);
 
-  ioscm_init_memory_port (port, start, end);
+#if USING_GUILE_BEFORE_2_2
+  ioscm_init_memory_port_buffers (port);
+#endif
 
   scm_dynwind_end ();
 
@@ -1124,7 +1380,11 @@ gdbscm_open_memory (SCM rest)
 static int
 gdbscm_is_memory_port (SCM obj)
 {
+#if USING_GUILE_BEFORE_2_2
   return !SCM_IMP (obj) && (SCM_TYP16 (obj) == memory_port_desc);
+#else
+  return SCM_PORTP (obj) && (SCM_PORT_TYPE (obj) == memory_port_desc);
+#endif
 }
 
 /* (memory-port? obj) -> boolean */
@@ -1155,6 +1415,7 @@ gdbscm_memory_port_range (SCM port)
 static SCM
 gdbscm_memory_port_read_buffer_size (SCM port)
 {
+#if USING_GUILE_BEFORE_2_2
   ioscm_memory_port *iomem;
 
   SCM_ASSERT_TYPE (gdbscm_is_memory_port (port), port, SCM_ARG1, FUNC_NAME,
@@ -1162,6 +1423,9 @@ gdbscm_memory_port_read_buffer_size (SCM
 
   iomem = (ioscm_memory_port *) SCM_STREAM (port);
   return scm_from_uint (iomem->read_buf_size);
+#else
+  return scm_from_uint (0);
+#endif
 }
 
 /* (set-memory-port-read-buffer-size! port size) -> unspecified
@@ -1171,6 +1435,7 @@ gdbscm_memory_port_read_buffer_size (SCM
 static SCM
 gdbscm_set_memory_port_read_buffer_size_x (SCM port, SCM size)
 {
+#if USING_GUILE_BEFORE_2_2
   ioscm_memory_port *iomem;
 
   SCM_ASSERT_TYPE (gdbscm_is_memory_port (port), port, SCM_ARG1, FUNC_NAME,
@@ -1190,6 +1455,9 @@ gdbscm_set_memory_port_read_buffer_size_
 			    FUNC_NAME);
 
   return SCM_UNSPECIFIED;
+#else
+  return scm_setvbuf (port, scm_from_utf8_symbol ("block"), size);
+#endif
 }
 
 /* (memory-port-write-buffer-size port) -> integer */
@@ -1197,6 +1465,7 @@ gdbscm_set_memory_port_read_buffer_size_
 static SCM
 gdbscm_memory_port_write_buffer_size (SCM port)
 {
+#if USING_GUILE_BEFORE_2_2
   ioscm_memory_port *iomem;
 
   SCM_ASSERT_TYPE (gdbscm_is_memory_port (port), port, SCM_ARG1, FUNC_NAME,
@@ -1204,6 +1473,9 @@ gdbscm_memory_port_write_buffer_size (SC
 
   iomem = (ioscm_memory_port *) SCM_STREAM (port);
   return scm_from_uint (iomem->write_buf_size);
+#else
+  return scm_from_uint (0);
+#endif
 }
 
 /* (set-memory-port-write-buffer-size! port size) -> unspecified
@@ -1213,6 +1485,7 @@ gdbscm_memory_port_write_buffer_size (SC
 static SCM
 gdbscm_set_memory_port_write_buffer_size_x (SCM port, SCM size)
 {
+#if USING_GUILE_BEFORE_2_2
   ioscm_memory_port *iomem;
 
   SCM_ASSERT_TYPE (gdbscm_is_memory_port (port), port, SCM_ARG1, FUNC_NAME,
@@ -1232,6 +1505,9 @@ gdbscm_set_memory_port_write_buffer_size
 			    FUNC_NAME);
 
   return SCM_UNSPECIFIED;
+#else
+  return scm_setvbuf (port, scm_from_utf8_symbol ("block"), size);
+#endif
 }
 
 /* Initialize gdb ports.  */
@@ -1366,9 +1642,11 @@ gdbscm_initialize_ports (void)
   start_keyword = scm_from_latin1_keyword ("start");
   size_keyword = scm_from_latin1_keyword ("size");
 
+#if USING_GUILE_BEFORE_2_2
   /* Error message text for "out of range" memory port buffer sizes.  */
 
   out_of_range_buf_size = xstrprintf ("size not between %u - %u",
 				      min_memory_port_buf_size,
 				      max_memory_port_buf_size);
+#endif
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-pretty-print.c ./gdb/guile/scm-pretty-print.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-pretty-print.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-pretty-print.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB/Scheme pretty-printing.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -943,36 +943,32 @@ ppscm_print_children (SCM printer, enum
 
 enum ext_lang_rc
 gdbscm_apply_val_pretty_printer (const struct extension_language_defn *extlang,
-				 struct type *type,
-				 LONGEST embedded_offset, CORE_ADDR address,
+				 struct value *value,
 				 struct ui_file *stream, int recurse,
-				 struct value *val,
 				 const struct value_print_options *options,
 				 const struct language_defn *language)
 {
+  struct type *type = value_type (value);
   struct gdbarch *gdbarch = get_type_arch (type);
   SCM exception = SCM_BOOL_F;
   SCM printer = SCM_BOOL_F;
   SCM val_obj = SCM_BOOL_F;
-  struct value *value;
   enum display_hint hint;
   enum ext_lang_rc result = EXT_LANG_RC_NOP;
   enum string_repr_result print_result;
 
-  if (value_lazy (val))
-    value_fetch_lazy (val);
+  if (value_lazy (value))
+    value_fetch_lazy (value);
 
   /* No pretty-printer support for unavailable values.  */
-  if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
+  if (!value_bytes_available (value, 0, TYPE_LENGTH (type)))
     return EXT_LANG_RC_NOP;
 
   if (!gdb_scheme_initialized)
     return EXT_LANG_RC_NOP;
 
   /* Instantiate the printer.  */
-  value = value_from_component (val, type, embedded_offset);
-
-  val_obj = vlscm_scm_from_value (value);
+  val_obj = vlscm_scm_from_value_no_release (value);
   if (gdbscm_is_exception (val_obj))
     {
       exception = val_obj;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-progspace.c ./gdb/guile/scm-progspace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-progspace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-progspace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Guile interface to program spaces.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -353,17 +353,16 @@ gdbscm_current_progspace (void)
 static SCM
 gdbscm_progspaces (void)
 {
-  struct program_space *ps;
   SCM result;
 
   result = SCM_EOL;
 
-  ALL_PSPACES (ps)
-  {
-    SCM item = psscm_scm_from_pspace (ps);
+  for (struct program_space *ps : program_spaces)
+    {
+      SCM item = psscm_scm_from_pspace (ps);
 
-    result = scm_cons (item, result);
-  }
+      result = scm_cons (item, result);
+    }
 
   return scm_reverse_x (result, SCM_EOL);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-safe-call.c ./gdb/guile/scm-safe-call.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-safe-call.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-safe-call.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB/Scheme support for safe calls into the Guile interpreter.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-string.c ./gdb/guile/scm-string.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-string.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-string.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB/Scheme charset interface.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-symbol.c ./gdb/guile/scm-symbol.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-symbol.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-symbol.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to symbols.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-symtab.c ./gdb/guile/scm-symtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-symtab.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-symtab.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to symbol tables.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-type.c ./gdb/guile/scm-type.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-type.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-type.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to types.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,7 +27,7 @@
 #include "objfiles.h"
 #include "language.h"
 #include "bcache.h"
-#include "dwarf2loc.h"
+#include "dwarf2/loc.h"
 #include "typeprint.h"
 #include "guile-internal.h"
 
@@ -512,9 +512,9 @@ tyscm_field_smob_to_field (field_smob *f
   struct type *type = tyscm_field_smob_containing_type (f_smob);
 
   /* This should be non-NULL by construction.  */
-  gdb_assert (TYPE_FIELDS (type) != NULL);
+  gdb_assert (type->fields () != NULL);
 
-  return &TYPE_FIELD (type, f_smob->field_num);
+  return &type->field (f_smob->field_num);
 }
 
 /* Type smob accessors.  */
@@ -529,7 +529,7 @@ gdbscm_type_code (SCM self)
     = tyscm_get_type_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
   struct type *type = t_smob->type;
 
-  return scm_from_int (TYPE_CODE (type));
+  return scm_from_int (type->code ());
 }
 
 /* (type-fields <gdb:type>) -> list
@@ -560,7 +560,7 @@ gdbscm_type_fields (SCM self)
     containing_type_scm = tyscm_scm_from_type (containing_type);
 
   result = SCM_EOL;
-  for (i = 0; i < TYPE_NFIELDS (containing_type); ++i)
+  for (i = 0; i < containing_type->num_fields (); ++i)
     result = scm_cons (tyscm_make_field_smob (containing_type_scm, i), result);
 
   return scm_reverse_x (result, SCM_EOL);
@@ -577,10 +577,10 @@ gdbscm_type_tag (SCM self)
   struct type *type = t_smob->type;
   const char *tagname = nullptr;
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION
-      || TYPE_CODE (type) == TYPE_CODE_ENUM)
-    tagname = TYPE_NAME (type);
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION
+      || type->code () == TYPE_CODE_ENUM)
+    tagname = type->name ();
 
   if (tagname == nullptr)
     return SCM_BOOL_F;
@@ -597,9 +597,9 @@ gdbscm_type_name (SCM self)
     = tyscm_get_type_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
   struct type *type = t_smob->type;
 
-  if (!TYPE_NAME (type))
+  if (!type->name ())
     return SCM_BOOL_F;
-  return gdbscm_scm_from_c_string (TYPE_NAME (type));
+  return gdbscm_scm_from_c_string (type->name ());
 }
 
 /* (type-print-name <gdb:type>) -> string
@@ -685,17 +685,17 @@ tyscm_get_composite (struct type *type)
 	}
 
       GDBSCM_HANDLE_GDB_EXCEPTION (exc);
-      if (TYPE_CODE (type) != TYPE_CODE_PTR
-	  && TYPE_CODE (type) != TYPE_CODE_REF)
+      if (type->code () != TYPE_CODE_PTR
+	  && type->code () != TYPE_CODE_REF)
 	break;
       type = TYPE_TARGET_TYPE (type);
     }
 
   /* If this is not a struct, union, or enum type, raise TypeError
      exception.  */
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-      && TYPE_CODE (type) != TYPE_CODE_UNION
-      && TYPE_CODE (type) != TYPE_CODE_ENUM)
+  if (type->code () != TYPE_CODE_STRUCT
+      && type->code () != TYPE_CODE_UNION
+      && type->code () != TYPE_CODE_ENUM)
     return NULL;
 
   return type;
@@ -817,21 +817,25 @@ gdbscm_type_range (SCM self)
   /* Initialize these to appease GCC warnings.  */
   LONGEST low = 0, high = 0;
 
-  SCM_ASSERT_TYPE (TYPE_CODE (type) == TYPE_CODE_ARRAY
-		   || TYPE_CODE (type) == TYPE_CODE_STRING
-		   || TYPE_CODE (type) == TYPE_CODE_RANGE,
+  SCM_ASSERT_TYPE (type->code () == TYPE_CODE_ARRAY
+		   || type->code () == TYPE_CODE_STRING
+		   || type->code () == TYPE_CODE_RANGE,
 		   self, SCM_ARG1, FUNC_NAME, _("ranged type"));
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
     case TYPE_CODE_STRING:
-      low = TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
-      high = TYPE_HIGH_BOUND (TYPE_INDEX_TYPE (type));
-      break;
     case TYPE_CODE_RANGE:
-      low = TYPE_LOW_BOUND (type);
-      high = TYPE_HIGH_BOUND (type);
+      if (type->bounds ()->low.kind () == PROP_CONST)
+	low = type->bounds ()->low.const_val ();
+      else
+	low = 0;
+
+      if (type->bounds ()->high.kind () == PROP_CONST)
+	high = type->bounds ()->high.const_val ();
+      else
+	high = 0;
       break;
     }
 
@@ -969,7 +973,7 @@ gdbscm_type_num_fields (SCM self)
     gdbscm_out_of_range_error (FUNC_NAME, SCM_ARG1, self,
 			       _(not_composite_error));
 
-  return scm_from_long (TYPE_NFIELDS (type));
+  return scm_from_long (type->num_fields ());
 }
 
 /* (type-field <gdb:type> string) -> <gdb:field>
@@ -997,7 +1001,7 @@ gdbscm_type_field (SCM self, SCM field_s
   {
     gdb::unique_xmalloc_ptr<char> field = gdbscm_scm_to_c_string (field_scm);
 
-    for (int i = 0; i < TYPE_NFIELDS (type); i++)
+    for (int i = 0; i < type->num_fields (); i++)
       {
 	const char *t_field_name = TYPE_FIELD_NAME (type, i);
 
@@ -1039,7 +1043,7 @@ gdbscm_type_has_field_p (SCM self, SCM f
     gdb::unique_xmalloc_ptr<char> field
       = gdbscm_scm_to_c_string (field_scm);
 
-    for (int i = 0; i < TYPE_NFIELDS (type); i++)
+    for (int i = 0; i < type->num_fields (); i++)
       {
 	const char *t_field_name = TYPE_FIELD_NAME (type, i);
 
@@ -1105,11 +1109,11 @@ gdbscm_type_next_field_x (SCM self)
   type = t_smob->type;
 
   SCM_ASSERT_TYPE (scm_is_signed_integer (progress,
-					  0, TYPE_NFIELDS (type)),
+					  0, type->num_fields ()),
 		   progress, SCM_ARG1, FUNC_NAME, _("integer"));
   field = scm_to_int (progress);
 
-  if (field < TYPE_NFIELDS (type))
+  if (field < type->num_fields ())
     {
       result = tyscm_make_field_smob (object, field);
       itscm_set_iterator_smob_progress_x (i_smob, scm_from_int (field + 1));
@@ -1147,8 +1151,8 @@ gdbscm_field_type (SCM self)
   struct field *field = tyscm_field_smob_to_field (f_smob);
 
   /* A field can have a NULL type in some situations.  */
-  if (FIELD_TYPE (*field))
-    return tyscm_scm_from_type (FIELD_TYPE (*field));
+  if (field->type ())
+    return tyscm_scm_from_type (field->type ());
   return SCM_BOOL_F;
 }
 
@@ -1163,7 +1167,7 @@ gdbscm_field_enumval (SCM self)
   struct field *field = tyscm_field_smob_to_field (f_smob);
   struct type *type = tyscm_field_smob_containing_type (f_smob);
 
-  SCM_ASSERT_TYPE (TYPE_CODE (type) == TYPE_CODE_ENUM,
+  SCM_ASSERT_TYPE (type->code () == TYPE_CODE_ENUM,
 		   self, SCM_ARG1, FUNC_NAME, _("enum type"));
 
   return scm_from_long (FIELD_ENUMVAL (*field));
@@ -1180,7 +1184,7 @@ gdbscm_field_bitpos (SCM self)
   struct field *field = tyscm_field_smob_to_field (f_smob);
   struct type *type = tyscm_field_smob_containing_type (f_smob);
 
-  SCM_ASSERT_TYPE (TYPE_CODE (type) != TYPE_CODE_ENUM,
+  SCM_ASSERT_TYPE (type->code () != TYPE_CODE_ENUM,
 		   self, SCM_ARG1, FUNC_NAME, _("non-enum type"));
 
   return scm_from_long (FIELD_BITPOS (*field));
@@ -1222,7 +1226,7 @@ gdbscm_field_baseclass_p (SCM self)
     = tyscm_get_field_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
   struct type *type = tyscm_field_smob_containing_type (f_smob);
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     return scm_from_bool (f_smob->field_num < TYPE_N_BASECLASSES (type));
   return SCM_BOOL_F;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-utils.c ./gdb/guile/scm-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-utils.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-utils.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* General utility routines for GDB/Scheme code.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-value.c ./gdb/guile/scm-value.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/guile/scm-value.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/guile/scm-value.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Scheme interface to values.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -261,6 +261,24 @@ vlscm_scm_from_value (struct value *valu
   return v_scm;
 }
 
+/* Create a new <gdb:value> object that encapsulates VALUE.
+   The value is not released from the all_values chain.  */
+
+SCM
+vlscm_scm_from_value_no_release (struct value *value)
+{
+  /* N.B. It's important to not cause any side-effects until we know the
+     conversion worked.  */
+  SCM v_scm = vlscm_make_value_smob ();
+  value_smob *v_smob = (value_smob *) SCM_SMOB_DATA (v_scm);
+
+  value_incref (value);
+  v_smob->value = value;
+  vlscm_remember_scheme_value (v_smob);
+
+  return v_scm;
+}
+
 /* Returns the <gdb:value> object in SELF.
    Throws an exception if SELF is not a <gdb:value> object.  */
 
@@ -452,7 +470,7 @@ gdbscm_value_referenced_value (SCM self)
 
       struct value *res_val;
 
-      switch (TYPE_CODE (check_typedef (value_type (value))))
+      switch (check_typedef (value_type (value))->code ())
         {
         case TYPE_CODE_PTR:
           res_val = value_ind (value);
@@ -505,12 +523,12 @@ gdbscm_value_dynamic_type (SCM self)
       type = value_type (value);
       type = check_typedef (type);
 
-      if (((TYPE_CODE (type) == TYPE_CODE_PTR)
-	   || (TYPE_CODE (type) == TYPE_CODE_REF))
-	  && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT))
+      if (((type->code () == TYPE_CODE_PTR)
+	   || (type->code () == TYPE_CODE_REF))
+	  && (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_STRUCT))
 	{
 	  struct value *target;
-	  int was_pointer = TYPE_CODE (type) == TYPE_CODE_PTR;
+	  int was_pointer = type->code () == TYPE_CODE_PTR;
 
 	  if (was_pointer)
 	    target = value_ind (value);
@@ -526,7 +544,7 @@ gdbscm_value_dynamic_type (SCM self)
 		type = lookup_lvalue_reference_type (type);
 	    }
 	}
-      else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+      else if (type->code () == TYPE_CODE_STRUCT)
 	type = value_rtti_type (value, NULL, NULL, NULL);
       else
 	{
@@ -664,8 +682,8 @@ gdbscm_value_subscript (SCM self, SCM in
 	 a subscript.  */
       struct value *tmp = coerce_ref (value);
       struct type *tmp_type = check_typedef (value_type (tmp));
-      if (TYPE_CODE (tmp_type) != TYPE_CODE_ARRAY
-	  && TYPE_CODE (tmp_type) != TYPE_CODE_PTR)
+      if (tmp_type->code () != TYPE_CODE_ARRAY
+	  && tmp_type->code () != TYPE_CODE_PTR)
 	error (_("Cannot subscript requested type"));
 
       struct value *res_val = value_subscript (tmp, value_as_long (index));
@@ -697,7 +715,7 @@ gdbscm_value_call (SCM self, SCM args)
     }
 
   GDBSCM_HANDLE_GDB_EXCEPTION (exc);
-  SCM_ASSERT_TYPE (TYPE_CODE (ftype) == TYPE_CODE_FUNC, self,
+  SCM_ASSERT_TYPE (ftype->code () == TYPE_CODE_FUNC, self,
 		   SCM_ARG1, FUNC_NAME,
 		   _("function (value of TYPE_CODE_FUNC)"));
 
@@ -778,11 +796,11 @@ gdbscm_value_to_bytevector (SCM self)
 static int
 is_intlike (struct type *type, int ptr_ok)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_INT
-	  || TYPE_CODE (type) == TYPE_CODE_ENUM
-	  || TYPE_CODE (type) == TYPE_CODE_BOOL
-	  || TYPE_CODE (type) == TYPE_CODE_CHAR
-	  || (ptr_ok && TYPE_CODE (type) == TYPE_CODE_PTR));
+  return (type->code () == TYPE_CODE_INT
+	  || type->code () == TYPE_CODE_ENUM
+	  || type->code () == TYPE_CODE_BOOL
+	  || type->code () == TYPE_CODE_CHAR
+	  || (ptr_ok && type->code () == TYPE_CODE_PTR));
 }
 
 /* (value->bool <gdb:value>) -> boolean
@@ -815,7 +833,7 @@ gdbscm_value_to_bool (SCM self)
 
   try
     {
-      if (TYPE_CODE (type) == TYPE_CODE_PTR)
+      if (type->code () == TYPE_CODE_PTR)
 	l = value_as_address (value);
       else
 	l = value_as_long (value);
@@ -859,7 +877,7 @@ gdbscm_value_to_integer (SCM self)
 
   try
     {
-      if (TYPE_CODE (type) == TYPE_CODE_PTR)
+      if (type->code () == TYPE_CODE_PTR)
 	l = value_as_address (value);
       else
 	l = value_as_long (value);
@@ -902,7 +920,7 @@ gdbscm_value_to_real (SCM self)
     }
 
   GDBSCM_HANDLE_GDB_EXCEPTION (exc);
-  SCM_ASSERT_TYPE (is_intlike (type, 0) || TYPE_CODE (type) == TYPE_CODE_FLT,
+  SCM_ASSERT_TYPE (is_intlike (type, 0) || type->code () == TYPE_CODE_FLT,
 		   self, SCM_ARG1, FUNC_NAME, _("number"));
 
   try
@@ -1095,7 +1113,7 @@ gdbscm_value_to_lazy_string (SCM self, S
       type = value_type (value);
       realtype = check_typedef (type);
 
-      switch (TYPE_CODE (realtype))
+      switch (realtype->code ())
 	{
 	case TYPE_CODE_ARRAY:
 	  {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/h8300-tdep.c ./gdb/h8300-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/h8300-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/h8300-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-machine dependent code for Renesas H8/300, for GDB.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -29,7 +29,7 @@
 #include "gdbcore.h"
 #include "objfiles.h"
 #include "dis-asm.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
 
@@ -178,10 +178,10 @@ h8300_is_argument_spill (struct gdbarch
       if (IS_MOVB_Rn24_SP (read_memory_unsigned_integer (pc + 2,
 							 2, byte_order)))
 	{
-	  LONGEST disp = read_memory_integer (pc + 4, 4, byte_order);
+	  ULONGEST disp = read_memory_unsigned_integer (pc + 4, 4, byte_order);
 
 	  /* ... and d:24 is negative.  */
-	  if (disp < 0 && disp > 0xffffff)
+	  if ((disp & 0x00800000) != 0)
 	    return 8;
 	}
     }
@@ -197,10 +197,10 @@ h8300_is_argument_spill (struct gdbarch
       if (IS_MOVW_Rn24_SP (read_memory_unsigned_integer (pc + 2,
 							 2, byte_order)))
 	{
-	  LONGEST disp = read_memory_integer (pc + 4, 4, byte_order);
+	  ULONGEST disp = read_memory_unsigned_integer (pc + 4, 4, byte_order);
 
 	  /* ... and d:24 is negative.  */
-	  if (disp < 0 && disp > 0xffffff)
+	  if ((disp & 0x00800000) != 0)
 	    return 8;
 	}
     }
@@ -219,10 +219,11 @@ h8300_is_argument_spill (struct gdbarch
 	{
 	  if (IS_MOVL_Rn24_SP (read_memory_integer (pc + 4, 2, byte_order)))
 	    {
-	      LONGEST disp = read_memory_integer (pc + 6, 4, byte_order);
+	      ULONGEST disp = read_memory_unsigned_integer (pc + 6, 4,
+							    byte_order);
 
 	      /* ... and d:24 is negative.  */
-	      if (disp < 0 && disp > 0xffffff)
+	      if ((disp & 0x00800000) != 0)
 		return 10;
 	    }
 	}
@@ -740,7 +741,7 @@ h8300_extract_return_value (struct type
       store_unsigned_integer (valbuf + 2, 2, byte_order, c);
       break;
     case 8:			/* long long is now 8 bytes.  */
-      if (TYPE_CODE (type) == TYPE_CODE_INT)
+      if (type->code () == TYPE_CODE_INT)
 	{
 	  regcache_cooked_read_unsigned (regcache, E_RET0_REGNUM, &addr);
 	  c = read_memory_unsigned_integer ((CORE_ADDR) addr, len, byte_order);
@@ -771,7 +772,7 @@ h8300h_extract_return_value (struct type
       store_unsigned_integer (valbuf, TYPE_LENGTH (type), byte_order, c);
       break;
     case 8:			/* long long is now 8 bytes.  */
-      if (TYPE_CODE (type) == TYPE_CODE_INT)
+      if (type->code () == TYPE_CODE_INT)
 	{
 	  regcache_cooked_read_unsigned (regcache, E_RET0_REGNUM, &c);
 	  store_unsigned_integer (valbuf, 4, byte_order, c);
@@ -792,8 +793,8 @@ h8300_use_struct_convention (struct type
   /* Types of 1, 2 or 4 bytes are returned in R0/R1, everything else on the
      stack.  */
 
-  if (TYPE_CODE (value_type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (value_type) == TYPE_CODE_UNION)
+  if (value_type->code () == TYPE_CODE_STRUCT
+      || value_type->code () == TYPE_CODE_UNION)
     return 1;
   return !(TYPE_LENGTH (value_type) == 1
 	   || TYPE_LENGTH (value_type) == 2
@@ -805,14 +806,14 @@ h8300h_use_struct_convention (struct typ
 {
   /* Types of 1, 2 or 4 bytes are returned in R0, INT types of 8 bytes are
      returned in R0/R1, everything else on the stack.  */
-  if (TYPE_CODE (value_type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (value_type) == TYPE_CODE_UNION)
+  if (value_type->code () == TYPE_CODE_STRUCT
+      || value_type->code () == TYPE_CODE_UNION)
     return 1;
   return !(TYPE_LENGTH (value_type) == 1
 	   || TYPE_LENGTH (value_type) == 2
 	   || TYPE_LENGTH (value_type) == 4
 	   || (TYPE_LENGTH (value_type) == 8
-	       && TYPE_CODE (value_type) == TYPE_CODE_INT));
+	       && value_type->code () == TYPE_CODE_INT));
 }
 
 /* Function: store_return_value
@@ -1377,8 +1378,9 @@ h8300_gdbarch_init (struct gdbarch_info
 
 }
 
+void _initialize_h8300_tdep ();
 void
-_initialize_h8300_tdep (void)
+_initialize_h8300_tdep ()
 {
   register_gdbarch_init (bfd_arch_h8300, h8300_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-bsd-tdep.c ./gdb/hppa-bsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-bsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-bsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for HP PA-RISC BSD's.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -26,7 +26,7 @@
 
 #include "hppa-tdep.h"
 #include "hppa-bsd-tdep.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "solib-svr4.h"
 
 static CORE_ADDR
@@ -87,8 +87,7 @@ hppabsd_find_global_pointer (struct gdba
 		     we have to do it ourselves.  */
 		  pltgot = extract_unsigned_integer (buf, sizeof buf,
 						     byte_order);
-		  pltgot += ANOFFSET (sec->objfile->section_offsets,
-				      SECT_OFF_TEXT (sec->objfile));
+		  pltgot += sec->objfile->text_section_offset ();
 
 		  return pltgot;
 		}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-bsd-tdep.h ./gdb/hppa-bsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-bsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-bsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for HP PA-RISC BSD's.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-linux-nat.c ./gdb/hppa-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Functions specific to running GDB native on HPPA running GNU/Linux.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -384,8 +384,9 @@ fill_fpregset (const struct regcache *re
    }
 }
 
+void _initialize_hppa_linux_nat ();
 void
-_initialize_hppa_linux_nat (void)
+_initialize_hppa_linux_nat ()
 {
   /* Register the target.  */
   linux_target = &the_hppa_linux_nat_target;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-linux-offsets.h ./gdb/hppa-linux-offsets.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-linux-offsets.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-linux-offsets.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Register offsets for HPPA running GNU/Linux.
 
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-linux-tdep.c ./gdb/hppa-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux running on PA-RISC, for GDB.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -26,7 +26,7 @@
 #include "glibc-tdep.h"
 #include "frame-unwind.h"
 #include "trad-frame.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "value.h"
 #include "regset.h"
 #include "regcache.h"
@@ -526,8 +526,9 @@ hppa_linux_init_abi (struct gdbarch_info
                                              svr4_fetch_objfile_link_map);
 }
 
+void _initialize_hppa_linux_tdep ();
 void
-_initialize_hppa_linux_tdep (void)
+_initialize_hppa_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_hppa, 0, GDB_OSABI_LINUX,
 			  hppa_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-nbsd-nat.c ./gdb/hppa-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-nbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-nbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for NetBSD/hppa.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -171,12 +171,13 @@ hppa_nbsd_nat_target::fetch_registers (s
 
 {
   pid_t pid = regcache->ptid ().pid ();
+  int lwp = regcache->ptid ().lwp ();
 
   if (regnum == -1 || hppanbsd_gregset_supplies_p (regnum))
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
 	perror_with_name (_("Couldn't get registers"));
 
       hppanbsd_supply_gregset (regcache, &regs);
@@ -186,7 +187,7 @@ hppa_nbsd_nat_target::fetch_registers (s
     {
       struct fpreg fpregs;
 
-      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't get floating point status"));
 
       hppanbsd_supply_fpregset (regcache, &fpregs);
@@ -200,17 +201,18 @@ void
 hppa_nbsd_nat_target::store_registers (struct regcache *regcache, int regnum)
 {
   pid_t pid = regcache->ptid ().pid ();
+  int lwp = regcache->ptid ().lwp ();
 
   if (regnum == -1 || hppanbsd_gregset_supplies_p (regnum))
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
         perror_with_name (_("Couldn't get registers"));
 
       hppanbsd_collect_gregset (regcache, &regs, regnum);
 
-      if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
         perror_with_name (_("Couldn't write registers"));
     }
 
@@ -218,18 +220,19 @@ hppa_nbsd_nat_target::store_registers (s
     {
       struct fpreg fpregs;
 
-      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't get floating point status"));
 
       hppanbsd_collect_fpregset (regcache, &fpregs, regnum);
 
-      if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't write floating point status"));
     }
 }
 
+void _initialize_hppanbsd_nat ();
 void
-_initialize_hppanbsd_nat (void)
+_initialize_hppanbsd_nat ()
 {
   add_inf_child_target (&the_hppa_nbsd_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-nbsd-tdep.c ./gdb/hppa-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/hppa
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,6 +27,7 @@
 
 #include "hppa-tdep.h"
 #include "hppa-bsd-tdep.h"
+#include "nbsd-tdep.h"
 #include "gdbarch.h"
 
 /* From <machine/mcontext.h>.  */
@@ -201,6 +202,8 @@ hppanbsd_init_abi (struct gdbarch_info i
   /* Obviously NetBSD is BSD-based.  */
   hppabsd_init_abi (info, gdbarch);
 
+  nbsd_init_abi (info, gdbarch);
+
   /* Core file support.  */
   set_gdbarch_iterate_over_regset_sections
     (gdbarch, hppanbsd_iterate_over_regset_sections);
@@ -208,8 +211,9 @@ hppanbsd_init_abi (struct gdbarch_info i
   tramp_frame_prepend_unwinder (gdbarch, &hppanbsd_sigtramp_si4);
 }
 
+void _initialize_hppanbsd_tdep ();
 void
-_initialize_hppanbsd_tdep (void)
+_initialize_hppanbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_hppa, 0, GDB_OSABI_NETBSD,
 			  hppanbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-obsd-nat.c ./gdb/hppa-obsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-obsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-obsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for OpenBSD/hppa.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -252,8 +252,9 @@ hppa_obsd_nat_target::store_registers (s
     }
 }
 
+void _initialize_hppaobsd_nat ();
 void
-_initialize_hppaobsd_nat (void)
+_initialize_hppaobsd_nat ()
 {
   add_inf_child_target (&the_hppa_obsd_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-obsd-tdep.c ./gdb/hppa-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-obsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-obsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/hppa
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -168,8 +168,9 @@ hppaobsd_init_abi (struct gdbarch_info i
     (gdbarch, hppaobsd_iterate_over_regset_sections);
 }
 
+void _initialize_hppabsd_tdep ();
 void
-_initialize_hppabsd_tdep (void)
+_initialize_hppabsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_hppa, 0, GDB_OSABI_OPENBSD,
 			  hppaobsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-tdep.c ./gdb/hppa-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the HP PA-RISC architecture.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    Contributed by the Center for Software Science at the
    University of Utah (pa-gdb-bugs@cs.utah.edu).
@@ -258,7 +258,7 @@ internalize_unwinds (struct objfile *obj
 
   if (size > 0)
     {
-      struct gdbarch *gdbarch = get_objfile_arch (objfile);
+      struct gdbarch *gdbarch = objfile->arch ();
       unsigned long tmp;
       unsigned i;
       char *buf = (char *) alloca (size);
@@ -357,7 +357,7 @@ read_unwind_info (struct objfile *objfil
   struct hppa_unwind_info *ui;
   struct hppa_objfile_private *obj_private;
 
-  text_offset = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
+  text_offset = objfile->text_section_offset ();
   ui = (struct hppa_unwind_info *) obstack_alloc (&objfile->objfile_obstack,
 					   sizeof (struct hppa_unwind_info));
 
@@ -763,8 +763,8 @@ hppa32_push_dummy_call (struct gdbarch *
 	      store_unsigned_integer (param_val, 4, byte_order,
 				      struct_end - struct_ptr);
 	    }
-	  else if (TYPE_CODE (type) == TYPE_CODE_INT
-		   || TYPE_CODE (type) == TYPE_CODE_ENUM)
+	  else if (type->code () == TYPE_CODE_INT
+		   || type->code () == TYPE_CODE_ENUM)
 	    {
 	      /* Integer value store, right aligned.  "unpack_long"
 		 takes care of any sign-extension problems.  */
@@ -773,7 +773,7 @@ hppa32_push_dummy_call (struct gdbarch *
 				      unpack_long (type,
 						   value_contents (arg)));
 	    }
-	  else if (TYPE_CODE (type) == TYPE_CODE_FLT)
+	  else if (type->code () == TYPE_CODE_FLT)
             {
 	      /* Floating point value store, right aligned.  */
 	      param_len = align_up (TYPE_LENGTH (type), 4);
@@ -876,7 +876,7 @@ hppa32_push_dummy_call (struct gdbarch *
 static int
 hppa64_integral_or_pointer_p (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_INT:
     case TYPE_CODE_BOOL:
@@ -903,7 +903,7 @@ hppa64_integral_or_pointer_p (const stru
 static int
 hppa64_floating_p (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_FLT:
       {
@@ -1064,8 +1064,8 @@ hppa64_push_dummy_call (struct gdbarch *
 
       /* If we are passing a function pointer, make sure we pass a function
          descriptor instead of the function entry address.  */
-      if (TYPE_CODE (type) == TYPE_CODE_PTR
-          && TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC)
+      if (type->code () == TYPE_CODE_PTR
+          && TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_FUNC)
         {
 	  ULONGEST codeptr, fptr;
 
@@ -1144,7 +1144,7 @@ hppa32_return_value (struct gdbarch *gdb
       /* The value always lives in the right hand end of the register
 	 (or register pair)?  */
       int b;
-      int reg = TYPE_CODE (type) == TYPE_CODE_FLT ? HPPA_FP4_REGNUM : 28;
+      int reg = type->code () == TYPE_CODE_FLT ? HPPA_FP4_REGNUM : 28;
       int part = TYPE_LENGTH (type) % 4;
       /* The left hand register contains only part of the value,
 	 transfer that first so that the rest can be xfered as entire
@@ -3168,8 +3168,9 @@ hppa_dump_tdep (struct gdbarch *gdbarch,
   fprintf_unfiltered (file, "elf = %s\n", tdep->is_elf ? "yes" : "no");
 }
 
+void _initialize_hppa_tdep ();
 void
-_initialize_hppa_tdep (void)
+_initialize_hppa_tdep ()
 {
   gdbarch_register (bfd_arch_hppa, hppa_gdbarch_init, hppa_dump_tdep);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-tdep.h ./gdb/hppa-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/hppa-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/hppa-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the HP PA-RISC architecture.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-bsd-nat.c ./gdb/i386-bsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-bsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-bsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for modern i386 BSD's.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -34,6 +34,21 @@
 #include "inf-ptrace.h"
 
 
+static PTRACE_TYPE_RET
+gdb_ptrace (PTRACE_TYPE_ARG1 request, ptid_t ptid, PTRACE_TYPE_ARG3 addr,
+	    PTRACE_TYPE_ARG4 data)
+{
+#ifdef __NetBSD__
+  gdb_assert (data == 0);
+  /* Support for NetBSD threads: unlike other ptrace implementations in this
+     file, NetBSD requires that we pass both the pid and lwp.  */
+  return ptrace (request, ptid.pid (), addr, ptid.lwp ());
+#else
+  pid_t pid = get_ptrace_pid (ptid);
+  return ptrace (request, pid, addr, data);
+#endif
+}
+
 /* In older BSD versions we cannot get at some of the segment
    registers.  FreeBSD for example didn't support the %fs and %gs
    registers until the 3.0 release.  We have autoconf checks for their
@@ -130,13 +145,13 @@ i386bsd_collect_gregset (const struct re
 void
 i386bsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
 {
-  pid_t pid = get_ptrace_pid (regcache->ptid ());
+  ptid_t ptid = regcache->ptid ();
 
   if (regnum == -1 || GETREGS_SUPPLIES (regnum))
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PT_GETREGS, ptid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
 	perror_with_name (_("Couldn't get registers"));
 
       i386bsd_supply_gregset (regcache, &regs);
@@ -149,7 +164,7 @@ i386bsd_fetch_inferior_registers (struct
     {
       register_t base;
 
-      if (ptrace (PT_GETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+      if (gdb_ptrace (PT_GETFSBASE, ptid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
 	perror_with_name (_("Couldn't get segment register fs_base"));
 
       regcache->raw_supply (I386_FSBASE_REGNUM, &base);
@@ -162,7 +177,7 @@ i386bsd_fetch_inferior_registers (struct
     {
       register_t base;
 
-      if (ptrace (PT_GETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+      if (gdb_ptrace (PT_GETGSBASE, ptid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
 	perror_with_name (_("Couldn't get segment register gs_base"));
 
       regcache->raw_supply (I386_GSBASE_REGNUM, &base);
@@ -184,8 +199,8 @@ i386bsd_fetch_inferior_registers (struct
 	  void *xstateregs;
 
 	  xstateregs = alloca (x86bsd_xsave_len);
-	  if (ptrace (PT_GETXSTATE, pid,
-		      (PTRACE_TYPE_ARG3) xstateregs, 0) == -1)
+	  if (gdb_ptrace (PT_GETXSTATE, ptid,
+			  (PTRACE_TYPE_ARG3) xstateregs, 0) == -1)
 	    perror_with_name (_("Couldn't get extended state status"));
 
 	  i387_supply_xsave (regcache, -1, xstateregs);
@@ -195,7 +210,8 @@ i386bsd_fetch_inferior_registers (struct
       
 #ifdef HAVE_PT_GETXMMREGS
       if (have_ptrace_xmmregs != 0
-	  && ptrace(PT_GETXMMREGS, pid, (PTRACE_TYPE_ARG3) xmmregs, 0) == 0)
+	  && gdb_ptrace(PT_GETXMMREGS, ptid,
+			(PTRACE_TYPE_ARG3) xmmregs, 0) == 0)
 	{
 	  have_ptrace_xmmregs = 1;
 	  i387_supply_fxsave (regcache, -1, xmmregs);
@@ -204,7 +220,8 @@ i386bsd_fetch_inferior_registers (struct
 	{
 	  have_ptrace_xmmregs = 0;
 #endif
-          if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+          if (gdb_ptrace (PT_GETFPREGS, ptid,
+			  (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
 	    perror_with_name (_("Couldn't get floating point status"));
 
 	  i387_supply_fsave (regcache, -1, &fpregs);
@@ -220,18 +237,18 @@ i386bsd_fetch_inferior_registers (struct
 void
 i386bsd_store_inferior_registers (struct regcache *regcache, int regnum)
 {
-  pid_t pid = get_ptrace_pid (regcache->ptid ());
+  ptid_t ptid = regcache->ptid ();
 
   if (regnum == -1 || GETREGS_SUPPLIES (regnum))
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PT_GETREGS, ptid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
         perror_with_name (_("Couldn't get registers"));
 
       i386bsd_collect_gregset (regcache, &regs, regnum);
 
-      if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PT_SETREGS, ptid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
         perror_with_name (_("Couldn't write registers"));
 
       if (regnum != -1)
@@ -245,7 +262,7 @@ i386bsd_store_inferior_registers (struct
 
       regcache->raw_collect (I386_FSBASE_REGNUM, &base);
 
-      if (ptrace (PT_SETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+      if (gdb_ptrace (PT_SETFSBASE, ptid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
 	perror_with_name (_("Couldn't write segment register fs_base"));
       if (regnum != -1)
 	return;
@@ -258,7 +275,7 @@ i386bsd_store_inferior_registers (struct
 
       regcache->raw_collect (I386_GSBASE_REGNUM, &base);
 
-      if (ptrace (PT_SETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+      if (gdb_ptrace (PT_SETGSBASE, ptid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
 	perror_with_name (_("Couldn't write segment register gs_base"));
       if (regnum != -1)
 	return;
@@ -278,14 +295,14 @@ i386bsd_store_inferior_registers (struct
 	  void *xstateregs;
 
 	  xstateregs = alloca (x86bsd_xsave_len);
-	  if (ptrace (PT_GETXSTATE, pid,
-		      (PTRACE_TYPE_ARG3) xstateregs, 0) == -1)
+	  if (gdb_ptrace (PT_GETXSTATE, ptid,
+			  (PTRACE_TYPE_ARG3) xstateregs, 0) == -1)
 	    perror_with_name (_("Couldn't get extended state status"));
 
 	  i387_collect_xsave (regcache, -1, xstateregs, 0);
 
-	  if (ptrace (PT_SETXSTATE, pid,
-		      (PTRACE_TYPE_ARG3) xstateregs, x86bsd_xsave_len) == -1)
+	  if (gdb_ptrace (PT_SETXSTATE, ptid, (PTRACE_TYPE_ARG3) xstateregs,
+			  x86bsd_xsave_len) == -1)
 	    perror_with_name (_("Couldn't write extended state status"));
 	  return;
 	}
@@ -293,25 +310,29 @@ i386bsd_store_inferior_registers (struct
 
 #ifdef HAVE_PT_GETXMMREGS
       if (have_ptrace_xmmregs != 0
-	  && ptrace(PT_GETXMMREGS, pid, (PTRACE_TYPE_ARG3) xmmregs, 0) == 0)
+	  && gdb_ptrace(PT_GETXMMREGS, ptid,
+			(PTRACE_TYPE_ARG3) xmmregs, 0) == 0)
 	{
 	  have_ptrace_xmmregs = 1;
 
 	  i387_collect_fxsave (regcache, regnum, xmmregs);
 
-	  if (ptrace (PT_SETXMMREGS, pid, (PTRACE_TYPE_ARG3) xmmregs, 0) == -1)
+	  if (gdb_ptrace (PT_SETXMMREGS, ptid,
+			  (PTRACE_TYPE_ARG3) xmmregs, 0) == -1)
             perror_with_name (_("Couldn't write XMM registers"));
 	}
       else
 	{
 	  have_ptrace_xmmregs = 0;
 #endif
-          if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+          if (gdb_ptrace (PT_GETFPREGS, ptid,
+			  (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
 	    perror_with_name (_("Couldn't get floating point status"));
 
           i387_collect_fsave (regcache, regnum, &fpregs);
 
-          if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+          if (gdb_ptrace (PT_SETFPREGS, ptid,
+			  (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
 	    perror_with_name (_("Couldn't write floating point status"));
 #ifdef HAVE_PT_GETXMMREGS
         }
@@ -319,8 +340,9 @@ i386bsd_store_inferior_registers (struct
     }
 }
 
+void _initialize_i386bsd_nat ();
 void
-_initialize_i386bsd_nat (void)
+_initialize_i386bsd_nat ()
 {
   int offset;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-bsd-nat.h ./gdb/i386-bsd-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-bsd-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-bsd-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for modern i386 BSD's.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-bsd-tdep.c ./gdb/i386-bsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-bsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-bsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for i386 BSD's.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-cygwin-tdep.c ./gdb/i386-cygwin-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-cygwin-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-cygwin-tdep.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,262 +0,0 @@
-/* Target-dependent code for Cygwin running on i386's, for GDB.
-
-   Copyright (C) 2003-2020 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 "osabi.h"
-#include "i386-tdep.h"
-#include "windows-tdep.h"
-#include "regset.h"
-#include "gdb_obstack.h"
-#include "xml-support.h"
-#include "gdbcore.h"
-#include "inferior.h"
-
-/* Core file support.  */
-
-/* This vector maps GDB's idea of a register's number into an address
-   in the windows exception context vector.  */
-
-static int i386_windows_gregset_reg_offset[] =
-{
-  176, /* eax */
-  172, /* ecx */
-  168, /* edx */
-  164, /* ebx */
-
-  196, /* esp */
-  180, /* ebp */
-  160, /* esi */
-  156, /* edi */
-
-  184, /* eip */
-  192, /* eflags */
-  188, /* cs */
-  200, /* ss */
-
-  152, /* ds */
-  148, /* es */
-  144, /* fs */
-  140, /* gs */
-
-  56, /* FloatSave.RegisterArea[0 * 10] */
-  66, /* FloatSave.RegisterArea[1 * 10] */
-  76, /* FloatSave.RegisterArea[2 * 10] */
-  86, /* FloatSave.RegisterArea[3 * 10] */
-  96, /* FloatSave.RegisterArea[4 * 10] */
-  106, /* FloatSave.RegisterArea[5 * 10] */
-  116, /* FloatSave.RegisterArea[6 * 10] */
-  126, /* FloatSave.RegisterArea[7 * 10] */
-
-  28, /* FloatSave.ControlWord */
-  32, /* FloatSave.StatusWord */
-  36, /* FloatSave.TagWord */
-  44, /* FloatSave.ErrorSelector */
-  40, /* FloatSave.ErrorOffset */
-  52, /* FloatSave.DataSelector */
-  48, /* FloatSave.DataOffset */
-  44, /* FloatSave.ErrorSelector */
-
-  /* XMM0-7 */
-  364, /* ExtendedRegisters[10*16] */
-  380, /* ExtendedRegisters[11*16] */
-  396, /* ExtendedRegisters[12*16] */
-  412, /* ExtendedRegisters[13*16] */
-  428, /* ExtendedRegisters[14*16] */
-  444, /* ExtendedRegisters[15*16] */
-  460, /* ExtendedRegisters[16*16] */
-  476, /* ExtendedRegisters[17*16] */
-
-  /* MXCSR */
-  228 /* ExtendedRegisters[24] */
-};
-
-#define I386_WINDOWS_SIZEOF_GREGSET 716
-
-struct cpms_data
-{
-  struct gdbarch *gdbarch;
-  struct obstack *obstack;
-  int module_count;
-};
-
-static void
-core_process_module_section (bfd *abfd, asection *sect, void *obj)
-{
-  struct cpms_data *data = (struct cpms_data *) obj;
-  enum bfd_endian byte_order = gdbarch_byte_order (data->gdbarch);
-
-  char *module_name;
-  size_t module_name_size;
-  CORE_ADDR base_addr;
-
-  gdb_byte *buf = NULL;
-
-  if (!startswith (sect->name, ".module"))
-    return;
-
-  buf = (gdb_byte *) xmalloc (bfd_section_size (sect) + 1);
-  if (!buf)
-    {
-      printf_unfiltered ("memory allocation failed for %s\n", sect->name);
-      goto out;
-    }
-  if (!bfd_get_section_contents (abfd, sect,
-				 buf, 0, bfd_section_size (sect)))
-    goto out;
-
-
-
-  /* A DWORD (data_type) followed by struct windows_core_module_info.  */
-
-  base_addr =
-    extract_unsigned_integer (buf + 4, 4, byte_order);
-
-  module_name_size =
-    extract_unsigned_integer (buf + 8, 4, byte_order);
-
-  if (12 + module_name_size > bfd_section_size (sect))
-    goto out;
-  module_name = (char *) buf + 12;
-
-  /* The first module is the .exe itself.  */
-  if (data->module_count != 0)
-    windows_xfer_shared_library (module_name, base_addr,
-				 data->gdbarch, data->obstack);
-  data->module_count++;
-
-out:
-  if (buf)
-    xfree (buf);
-  return;
-}
-
-static ULONGEST
-windows_core_xfer_shared_libraries (struct gdbarch *gdbarch,
-				  gdb_byte *readbuf,
-				  ULONGEST offset, ULONGEST len)
-{
-  struct obstack obstack;
-  const char *buf;
-  ULONGEST len_avail;
-  struct cpms_data data = { gdbarch, &obstack, 0 };
-
-  obstack_init (&obstack);
-  obstack_grow_str (&obstack, "<library-list>\n");
-  bfd_map_over_sections (core_bfd,
-			 core_process_module_section,
-			 &data);
-  obstack_grow_str0 (&obstack, "</library-list>\n");
-
-  buf = (const char *) obstack_finish (&obstack);
-  len_avail = strlen (buf);
-  if (offset >= len_avail)
-    return 0;
-
-  if (len > len_avail - offset)
-    len = len_avail - offset;
-  memcpy (readbuf, buf + offset, len);
-
-  obstack_free (&obstack, NULL);
-  return len;
-}
-
-/* This is how we want PTIDs from core files to be printed.  */
-
-static std::string
-i386_windows_core_pid_to_str (struct gdbarch *gdbarch, ptid_t ptid)
-{
-  if (ptid.lwp () != 0)
-    return string_printf ("Thread 0x%lx", ptid.lwp ());
-
-  return normal_pid_to_str (ptid);
-}
-
-static CORE_ADDR
-i386_cygwin_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
-{
-  return i386_pe_skip_trampoline_code (frame, pc, NULL);
-}
-
-static const char *
-i386_cygwin_auto_wide_charset (void)
-{
-  return "UTF-16";
-}
-
-static void
-i386_cygwin_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  windows_init_abi (info, gdbarch);
-
-  set_gdbarch_skip_trampoline_code (gdbarch, i386_cygwin_skip_trampoline_code);
-
-  set_gdbarch_skip_main_prologue (gdbarch, i386_skip_main_prologue);
-
-  tdep->struct_return = reg_struct_return;
-
-  tdep->gregset_reg_offset = i386_windows_gregset_reg_offset;
-  tdep->gregset_num_regs = ARRAY_SIZE (i386_windows_gregset_reg_offset);
-  tdep->sizeof_gregset = I386_WINDOWS_SIZEOF_GREGSET;
-
-  tdep->sizeof_fpregset = 0;
-
-  /* Core file support.  */
-  set_gdbarch_core_xfer_shared_libraries
-    (gdbarch, windows_core_xfer_shared_libraries);
-  set_gdbarch_core_pid_to_str (gdbarch, i386_windows_core_pid_to_str);
-
-  set_gdbarch_auto_wide_charset (gdbarch, i386_cygwin_auto_wide_charset);
-}
-
-static enum gdb_osabi
-i386_cygwin_osabi_sniffer (bfd *abfd)
-{
-  const char *target_name = bfd_get_target (abfd);
-
-  if (strcmp (target_name, "pei-i386") == 0)
-    return GDB_OSABI_CYGWIN;
-
-  /* Cygwin uses elf core dumps.  Do not claim all ELF executables,
-     check whether there is a .reg section of proper size.  */
-  if (strcmp (target_name, "elf32-i386") == 0)
-    {
-      asection *section = bfd_get_section_by_name (abfd, ".reg");
-      if (section
-	  && bfd_section_size (section) == I386_WINDOWS_SIZEOF_GREGSET)
-	return GDB_OSABI_CYGWIN;
-    }
-
-  return GDB_OSABI_UNKNOWN;
-}
-
-void
-_initialize_i386_cygwin_tdep (void)
-{
-  gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_coff_flavour,
-                                  i386_cygwin_osabi_sniffer);
-
-  /* Cygwin uses elf core dumps.  */
-  gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour,
-                                  i386_cygwin_osabi_sniffer);
-
-  gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_CYGWIN,
-                          i386_cygwin_init_abi);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-darwin-nat.c ./gdb/i386-darwin-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-darwin-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-darwin-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Darwin support for GDB, the GNU debugger.
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
 
    Contributed by Apple Computer, Inc.
 
@@ -633,8 +633,9 @@ darwin_set_sstep (thread_t thread, int e
     }
 }
 
+void _initialize_i386_darwin_nat ();
 void
-_initialize_i386_darwin_nat (void)
+_initialize_i386_darwin_nat ()
 {
 #ifdef BFD64
   amd64_native_gregset64_reg_offset = amd64_darwin_thread_state_reg_offset;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-darwin-tdep.c ./gdb/i386-darwin-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-darwin-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-darwin-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Darwin support for GDB, the GNU debugger.
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
 
    Contributed by Apple Computer, Inc.
 
@@ -34,7 +34,7 @@
 #include "i386-darwin-tdep.h"
 #include "solib.h"
 #include "solib-darwin.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include <algorithm>
 
 /* Offsets into the struct i386_thread_state where we'll find the saved regs.
@@ -109,7 +109,7 @@ darwin_dwarf_signal_frame_p (struct gdba
 static int
 i386_m128_p (struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
+  return (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
           && TYPE_LENGTH (type) == 16);
 }
 
@@ -124,22 +124,22 @@ i386_darwin_arg_type_alignment (struct t
          aligned to 8-byte boundaries.
      7.  [...]  The caller aligns 128-bit vectors in the parameter area to
          16-byte boundaries.  */
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
+  if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
     return TYPE_LENGTH (type);
   /* 4.  The caller places all the fields of structures (or unions) with no
          vector elements in the parameter area.  These structures are 4-byte
          aligned.
      5.  The caller places structures with vector elements on the stack,
          16-byte aligned.  */
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION)
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION)
     {
       int i;
       int res = 4;
-      for (i = 0; i < TYPE_NFIELDS (type); i++)
+      for (i = 0; i < type->num_fields (); i++)
 	{
 	  int align
-	    = i386_darwin_arg_type_alignment (TYPE_FIELD_TYPE (type, i));
+	    = i386_darwin_arg_type_alignment (type->field (i).type ());
 
 	  res = std::max (res, align);
 	}
@@ -286,8 +286,9 @@ i386_mach_o_osabi_sniffer (bfd *abfd)
   return GDB_OSABI_UNKNOWN;
 }
 
+void _initialize_i386_darwin_tdep ();
 void
-_initialize_i386_darwin_tdep (void)
+_initialize_i386_darwin_tdep ()
 {
   gdbarch_register_osabi_sniffer (bfd_arch_unknown, bfd_target_mach_o_flavour,
                                   i386_mach_o_osabi_sniffer);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-darwin-tdep.h ./gdb/i386-darwin-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-darwin-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-darwin-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Darwin x86.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-dicos-tdep.c ./gdb/i386-dicos-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-dicos-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-dicos-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for DICOS running on i386's, for GDB.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -41,8 +41,9 @@ i386_dicos_osabi_sniffer (bfd *abfd)
   return GDB_OSABI_UNKNOWN;
 }
 
+void _initialize_i386_dicos_tdep ();
 void
-_initialize_i386_dicos_tdep (void)
+_initialize_i386_dicos_tdep ()
 {
   gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour,
                                   i386_dicos_osabi_sniffer);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-fbsd-nat.c ./gdb/i386-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-fbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-fbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD/i386.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -174,8 +174,9 @@ i386_fbsd_nat_target::supports_stopped_b
 }
 #endif
 
+void _initialize_i386fbsd_nat ();
 void
-_initialize_i386fbsd_nat (void)
+_initialize_i386fbsd_nat ()
 {
   add_inf_child_target (&the_i386_fbsd_nat_target);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-fbsd-tdep.c ./gdb/i386-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-fbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-fbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD/i386.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -30,6 +30,7 @@
 #include "i387-tdep.h"
 #include "fbsd-tdep.h"
 #include "solib-svr4.h"
+#include "inferior.h"
 
 /* Support for signal handlers.  */
 
@@ -332,7 +333,8 @@ i386fbsd_get_thread_local_address (struc
   if (tdep->fsbase_regnum == -1)
     error (_("Unable to fetch %%gsbase"));
 
-  regcache = get_thread_arch_regcache (ptid, gdbarch);
+  regcache = get_thread_arch_regcache (current_inferior ()->process_target (),
+				       ptid, gdbarch);
 
   target_fetch_registers (regcache, tdep->fsbase_regnum + 1);
 
@@ -449,8 +451,9 @@ i386fbsd4_init_abi (struct gdbarch_info
 					i386fbsd_get_thread_local_address);
 }
 
+void _initialize_i386fbsd_tdep ();
 void
-_initialize_i386fbsd_tdep (void)
+_initialize_i386fbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_FREEBSD,
 			  i386fbsd4_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-fbsd-tdep.h ./gdb/i386-fbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-fbsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-fbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD x86.
 
-   Copyright (C) 2015-2020 Free Software Foundation, Inc.
+   Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-gnu-nat.c ./gdb/i386-gnu-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-gnu-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-gnu-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low level interface to i386 running the GNU Hurd.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -425,8 +425,9 @@ i386_gnu_dr_get_control (void)
 }
 #endif /* i386_DEBUG_STATE */
 
+void _initialize_i386gnu_nat ();
 void
-_initialize_i386gnu_nat (void)
+_initialize_i386gnu_nat ()
 {
 #ifdef i386_DEBUG_STATE
   x86_dr_low.set_control = i386_gnu_dr_set_control;
@@ -438,6 +439,8 @@ _initialize_i386gnu_nat (void)
   x86_set_debug_register_length (4);
 #endif /* i386_DEBUG_STATE */
 
+  gnu_target = &the_i386_gnu_nat_target;
+
   /* Register the target.  */
   add_inf_child_target (&the_i386_gnu_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-gnu-tdep.c ./gdb/i386-gnu-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-gnu-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-gnu-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-dependent code for the GNU Hurd.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,11 +17,138 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
+#include "gdbcore.h"
 #include "osabi.h"
 #include "solib-svr4.h"
 
 #include "i386-tdep.h"
 
+/* Recognizing signal handler frames.  */
+
+/* When the GNU/Hurd libc calls a signal handler, the return address points
+   inside the trampoline assembly snippet.
+
+   If the trampoline function name can not be identified, we resort to reading
+   memory from the process in order to identify it.  */
+
+static const gdb_byte gnu_sigtramp_code[] =
+{
+/* rpc_wait_trampoline: */
+  0xb8, 0xe7, 0xff, 0xff, 0xff,			/* mov    $-25,%eax */
+  0x9a, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,	/* lcall  $7,$0 */
+  0x89, 0x01,					/* movl   %eax, (%ecx) */
+  0x89, 0xdc,					/* movl   %ebx, %esp */
+
+/* trampoline: */
+  0xff, 0xd2,					/* call   *%edx */
+/* RA HERE */
+  0x83, 0xc4, 0x0c,				/* addl   $12, %esp */
+  0xc3,						/* ret */
+
+/* firewall: */
+  0xf4,						/* hlt */
+};
+
+#define GNU_SIGTRAMP_LEN (sizeof gnu_sigtramp_code)
+#define GNU_SIGTRAMP_TAIL 5			/* length of tail after RA */
+
+/* If THIS_FRAME is a sigtramp routine, return the address of the
+   start of the routine.  Otherwise, return 0.  */
+
+static CORE_ADDR
+i386_gnu_sigtramp_start (struct frame_info *this_frame)
+{
+  CORE_ADDR pc = get_frame_pc (this_frame);
+  gdb_byte buf[GNU_SIGTRAMP_LEN];
+
+  if (!safe_frame_unwind_memory (this_frame,
+				 pc + GNU_SIGTRAMP_TAIL - GNU_SIGTRAMP_LEN,
+				 buf, GNU_SIGTRAMP_LEN))
+    return 0;
+
+  if (memcmp (buf, gnu_sigtramp_code, GNU_SIGTRAMP_LEN) != 0)
+    return 0;
+
+  return pc;
+}
+
+/* Return whether THIS_FRAME corresponds to a GNU/Linux sigtramp
+   routine.  */
+
+static int
+i386_gnu_sigtramp_p (struct frame_info *this_frame)
+{
+  CORE_ADDR pc = get_frame_pc (this_frame);
+  const char *name;
+
+  find_pc_partial_function (pc, &name, NULL, NULL);
+
+  /* If we have a NAME, we can check for the trampoline function */
+  if (name != NULL && strcmp (name, "trampoline") == 0)
+    return 1;
+
+  return i386_gnu_sigtramp_start (this_frame) != 0;
+}
+
+/* Offset to sc_i386_thread_state in sigcontext, from <bits/sigcontext.h>.  */
+#define I386_GNU_SIGCONTEXT_THREAD_STATE_OFFSET 20
+
+/* Assuming THIS_FRAME is a GNU/Linux sigtramp routine, return the
+   address of the associated sigcontext structure.  */
+
+static CORE_ADDR
+i386_gnu_sigcontext_addr (struct frame_info *this_frame)
+{
+  struct gdbarch *gdbarch = get_frame_arch (this_frame);
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  CORE_ADDR pc;
+  CORE_ADDR sp;
+  gdb_byte buf[4];
+
+  get_frame_register (this_frame, I386_ESP_REGNUM, buf);
+  sp = extract_unsigned_integer (buf, 4, byte_order);
+
+  pc = i386_gnu_sigtramp_start (this_frame);
+  if (pc)
+    {
+      CORE_ADDR sigcontext_addr;
+
+      /* The sigcontext structure address is passed as the third argument to
+	 the signal handler. */
+      read_memory (sp + 8, buf, 4);
+      sigcontext_addr = extract_unsigned_integer (buf, 4, byte_order);
+      return sigcontext_addr + I386_GNU_SIGCONTEXT_THREAD_STATE_OFFSET;
+    }
+
+  error (_("Couldn't recognize signal trampoline."));
+  return 0;
+}
+
+/* Mapping between the general-purpose registers in `struct
+   sigcontext' format (starting at sc_i386_thread_state)
+   and GDB's register cache layout.  */
+
+/* From <bits/sigcontext.h>.  */
+static int i386_gnu_sc_reg_offset[] =
+{
+  11 * 4,			/* %eax */
+  10 * 4,			/* %ecx */
+  9 * 4,			/* %edx */
+  8 * 4,			/* %ebx */
+  7 * 4,			/* %esp */
+  6 * 4,			/* %ebp */
+  5 * 4,			/* %esi */
+  4 * 4,			/* %edi */
+  12 * 4,			/* %eip */
+  14 * 4,			/* %eflags */
+  13 * 4,			/* %cs */
+  16 * 4,			/* %ss */
+  3 * 4,			/* %ds */
+  2 * 4,			/* %es */
+  1 * 4,			/* %fs */
+  0 * 4				/* %gs */
+};
+
 /* From <sys/ucontext.h>.  */
 static int i386gnu_gregset_reg_offset[] =
 {
@@ -59,10 +186,16 @@ i386gnu_init_abi (struct gdbarch_info in
   tdep->sizeof_gregset = 19 * 4;
 
   tdep->jb_pc_offset = 20;	/* From <bits/setjmp.h>.  */
+
+  tdep->sigtramp_p = i386_gnu_sigtramp_p;
+  tdep->sigcontext_addr = i386_gnu_sigcontext_addr;
+  tdep->sc_reg_offset = i386_gnu_sc_reg_offset;
+  tdep->sc_num_regs = ARRAY_SIZE (i386_gnu_sc_reg_offset);
 }
 
+void _initialize_i386gnu_tdep ();
 void
-_initialize_i386gnu_tdep (void)
+_initialize_i386gnu_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_HURD, i386gnu_init_abi);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-go32-tdep.c ./gdb/i386-go32-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-go32-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-go32-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for DJGPP/i386.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -62,6 +62,7 @@ i386_coff_osabi_sniffer (bfd *abfd)
 }
 
 
+void _initialize_i386_go32_tdep ();
 void
 _initialize_i386_go32_tdep ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-linux-nat.c ./gdb/i386-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux i386.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -657,7 +657,7 @@ i386_linux_nat_target::low_resume (ptid_
 
   if (step)
     {
-      struct regcache *regcache = get_thread_regcache (ptid);
+      struct regcache *regcache = get_thread_regcache (this, ptid);
       struct gdbarch *gdbarch = regcache->arch ();
       enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
       ULONGEST pc;
@@ -711,8 +711,9 @@ i386_linux_nat_target::low_resume (ptid_
     perror_with_name (("ptrace"));
 }
 
+void _initialize_i386_linux_nat ();
 void
-_initialize_i386_linux_nat (void)
+_initialize_i386_linux_nat ()
 {
   linux_target = &the_i386_linux_nat_target;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-linux-nat.h ./gdb/i386-linux-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-linux-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-linux-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux i386.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-linux-tdep.c ./gdb/i386-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux i386.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -26,7 +26,7 @@
 #include "inferior.h"
 #include "osabi.h"
 #include "reggroups.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "i386-tdep.h"
 #include "i386-linux-tdep.h"
 #include "linux-tdep.h"
@@ -36,6 +36,7 @@
 #include "symtab.h"
 #include "arch-utils.h"
 #include "xml-syscall.h"
+#include "infrun.h"
 
 #include "i387-tdep.h"
 #include "gdbsupport/x86-xstate.h"
@@ -387,19 +388,19 @@ i386_canonicalize_syscall (int syscall)
 
 #define SIG_CODE_BONDARY_FAULT 3
 
-/* i386 GNU/Linux implementation of the handle_segmentation_fault
+/* i386 GNU/Linux implementation of the report_signal_info
    gdbarch hook.  Displays information related to MPX bound
    violations.  */
 void
-i386_linux_handle_segmentation_fault (struct gdbarch *gdbarch,
-				      struct ui_out *uiout)
+i386_linux_report_signal_info (struct gdbarch *gdbarch, struct ui_out *uiout,
+			       enum gdb_signal siggnal)
 {
   /* -Wmaybe-uninitialized  */
   CORE_ADDR lower_bound = 0, upper_bound = 0, access = 0;
   int is_upper;
   long sig_code = 0;
 
-  if (!i386_mpx_enabled ())
+  if (!i386_mpx_enabled () || siggnal != GDB_SIGNAL_SEGV)
     return;
 
   try
@@ -797,12 +798,12 @@ i386_linux_iterate_over_regset_sections
    which does not seem worth it.  The same effect is achieved by patching that
    'nop' instruction there instead.  */
 
-static struct displaced_step_closure *
+static displaced_step_closure_up
 i386_linux_displaced_step_copy_insn (struct gdbarch *gdbarch,
 				     CORE_ADDR from, CORE_ADDR to,
 				     struct regcache *regs)
 {
-  displaced_step_closure *closure_
+  displaced_step_closure_up closure_
     =  i386_displaced_step_copy_insn (gdbarch, from, to, regs);
 
   if (i386_linux_get_syscall_number_from_regcache (regs) != -1)
@@ -810,7 +811,7 @@ i386_linux_displaced_step_copy_insn (str
       /* The closure returned by i386_displaced_step_copy_insn is simply a
 	 buffer with a copy of the instruction. */
       i386_displaced_step_closure *closure
-	= (i386_displaced_step_closure *) closure_;
+	= (i386_displaced_step_closure *) closure_.get ();
 
       /* Fake nop.  */
       closure->buf[0] = 0x90;
@@ -1072,12 +1073,12 @@ i386_linux_init_abi (struct gdbarch_info
                                   i386_linux_get_syscall_number);
 
   set_gdbarch_get_siginfo_type (gdbarch, x86_linux_get_siginfo_type);
-  set_gdbarch_handle_segmentation_fault (gdbarch,
-					 i386_linux_handle_segmentation_fault);
+  set_gdbarch_report_signal_info (gdbarch, i386_linux_report_signal_info);
 }
 
+void _initialize_i386_linux_tdep ();
 void
-_initialize_i386_linux_tdep (void)
+_initialize_i386_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_LINUX,
 			  i386_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-linux-tdep.h ./gdb/i386-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-linux-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-linux-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux x86.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -39,8 +39,9 @@ extern uint64_t i386_linux_core_read_xcr
 
 /* Handle and display information related to the MPX bound violation
    to the user.  */
-extern void i386_linux_handle_segmentation_fault (struct gdbarch *gdbarch,
-						  struct ui_out *uiout);
+extern void i386_linux_report_signal_info (struct gdbarch *gdbarch,
+					   struct ui_out *uiout,
+					   enum gdb_signal siggnal);
 
 /* Return the target description according to XCR0.  */
 extern const struct target_desc *i386_linux_read_description (uint64_t xcr0);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-nbsd-nat.c ./gdb/i386-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-nbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-nbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for NetBSD/i386.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -73,8 +73,9 @@ i386nbsd_supply_pcb (struct regcache *re
 
 static i386_bsd_nat_target<nbsd_nat_target> the_i386_nbsd_nat_target;
 
+void _initialize_i386nbsd_nat ();
 void
-_initialize_i386nbsd_nat (void)
+_initialize_i386nbsd_nat ()
 {
   add_inf_child_target (&the_i386_nbsd_nat_target);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-nbsd-tdep.c ./gdb/i386-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/i386.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -377,6 +377,8 @@ i386nbsd_init_abi (struct gdbarch_info i
   /* Obviously NetBSD is BSD-based.  */
   i386bsd_init_abi (info, gdbarch);
 
+  nbsd_init_abi (info, gdbarch);
+
   /* NetBSD has a different `struct reg'.  */
   tdep->gregset_reg_offset = i386nbsd_r_reg_offset;
   tdep->gregset_num_regs = ARRAY_SIZE (i386nbsd_r_reg_offset);
@@ -421,8 +423,9 @@ i386nbsdelf_init_abi (struct gdbarch_inf
   tdep->struct_return = pcc_struct_return;
 }
 
+void _initialize_i386nbsd_tdep ();
 void
-_initialize_i386nbsd_tdep (void)
+_initialize_i386nbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_NETBSD,
 			  i386nbsdelf_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-nto-tdep.c ./gdb/i386-nto-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-nto-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-nto-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for QNX Neutrino x86.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    Contributed by QNX Software Systems Ltd.
 
@@ -367,8 +367,9 @@ i386nto_init_abi (struct gdbarch_info in
   set_gdbarch_wchar_signed (gdbarch, 0);
 }
 
+void _initialize_i386nto_tdep ();
 void
-_initialize_i386nto_tdep (void)
+_initialize_i386nto_tdep ()
 {
   init_i386nto_ops ();
   gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_QNXNTO,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-obsd-nat.c ./gdb/i386-obsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-obsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-obsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for OpenBSD/i386.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -90,8 +90,9 @@ i386obsd_supply_pcb (struct regcache *re
 
 static i386_bsd_nat_target<obsd_nat_target> the_i386_obsd_nat_target;
 
+void _initialize_i386obsd_nat ();
 void
-_initialize_i386obsd_nat (void)
+_initialize_i386obsd_nat ()
 {
   add_inf_child_target (&i386_obsd_nat_target);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-obsd-tdep.c ./gdb/i386-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-obsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-obsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/i386.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -443,8 +443,9 @@ i386obsd_init_abi (struct gdbarch_info i
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
 }
 
+void _initialize_i386obsd_tdep ();
 void
-_initialize_i386obsd_tdep (void)
+_initialize_i386obsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_OPENBSD,
 			  i386obsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-sol2-nat.c ./gdb/i386-sol2-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-sol2-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-sol2-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for Solaris x86.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -178,10 +178,22 @@ fill_fpregset (const struct regcache *re
    format and GDB's register array layout.  */
 static int regmap[] =
 {
-  EAX, ECX, EDX, EBX,
-  UESP, EBP, ESI, EDI,
-  EIP, EFL, CS, SS,
-  DS, ES, FS, GS
+  11	/* EAX */,
+  10	/* ECX */,
+  9	/* EDX */,
+  8	/* EBX */,
+  17	/* UESP */,
+  6	/* EBP */,
+  5	/* ESI */,
+  4	/* EDI */,
+  14	/* EIP */,
+  16	/* EFL */,
+  15	/* CS */,
+  18	/* SS */,
+  3	/* DS */,
+  2	/* ES */,
+  1	/* FS */,
+  0	/* GS */
 };
 
 /* Fill GDB's register array with the general-purpose register values
@@ -241,8 +253,9 @@ fill_fpregset (const struct regcache *re
 
 #endif
 
+void _initialize_amd64_sol2_nat ();
 void
-_initialize_amd64_sol2_nat (void)
+_initialize_amd64_sol2_nat ()
 {
 #if PR_MODEL_NATIVE == PR_MODEL_LP64
   amd64_native_gregset32_reg_offset = amd64_sol2_gregset32_reg_offset;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-sol2-tdep.c ./gdb/i386-sol2-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-sol2-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-sol2-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Solaris x86.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -46,21 +46,6 @@ static int i386_sol2_gregset_reg_offset[
   0 * 4				/* %gs */
 };
 
-/* Return whether THIS_FRAME corresponds to a Solaris sigtramp
-   routine.  */
-
-static int
-i386_sol2_sigtramp_p (struct frame_info *this_frame)
-{
-  CORE_ADDR pc = get_frame_pc (this_frame);
-  const char *name;
-
-  find_pc_partial_function (pc, &name, NULL, NULL);
-  return (name && (strcmp ("sigacthandler", name) == 0
-		   || strcmp (name, "ucbsigvechandler") == 0
-		   || strcmp (name, "__sighndlr") == 0));
-}
-
 /* Solaris doesn't have a `struct sigcontext', but it does have a
    `mcontext_t' that contains the saved set of machine registers.  */
 
@@ -75,30 +60,6 @@ i386_sol2_mcontext_addr (struct frame_in
   return ucontext_addr + 36;
 }
 
-/* SunPRO encodes the static variables.  This is not related to C++
-   mangling, it is done for C too.  */
-
-static const char *
-i386_sol2_static_transform_name (const char *name)
-{
-  if (name[0] == '.')
-    {
-      const char *p;
-
-      /* For file-local statics there will be a period, a bunch of
-         junk (the contents of which match a string given in the
-         N_OPT), a period and the name.  For function-local statics
-         there will be a bunch of junk (which seems to change the
-         second character from 'A' to 'B'), a period, the name of the
-         function, and the name.  So just skip everything before the
-         last period.  */
-      p = strrchr (name, '.');
-      if (p != NULL)
-        name = p + 1;
-    }
-  return name;
-}
-
 /* Solaris 2.  */
 
 static void
@@ -109,12 +70,7 @@ i386_sol2_init_abi (struct gdbarch_info
   /* Solaris is SVR4-based.  */
   i386_svr4_init_abi (info, gdbarch);
 
-  /* The SunPRO compiler puts out 0 instead of the address in N_SO symbols,
-     and for SunPRO 3.0, N_FUN symbols too.  */
-  set_gdbarch_sofun_address_maybe_missing (gdbarch, 1);
-
-  /* Handle SunPRO encoding of static symbols.  */
-  set_gdbarch_static_transform_name (gdbarch, i386_sol2_static_transform_name);
+  sol2_init_abi (info, gdbarch);
 
   /* Solaris reserves space for its FPU emulator in `fpregset_t'.
      There is also some space reserved for the registers of a Weitek
@@ -125,18 +81,14 @@ i386_sol2_init_abi (struct gdbarch_info
   tdep->sizeof_fpregset = 380;
 
   /* Signal trampolines are slightly different from SVR4.  */
-  tdep->sigtramp_p = i386_sol2_sigtramp_p;
+  tdep->sigtramp_p = sol2_sigtramp_p;
   tdep->sigcontext_addr = i386_sol2_mcontext_addr;
   tdep->sc_reg_offset = tdep->gregset_reg_offset;
   tdep->sc_num_regs = tdep->gregset_num_regs;
 
   /* Solaris has SVR4-style shared libraries.  */
-  set_gdbarch_skip_solib_resolver (gdbarch, sol2_skip_solib_resolver);
   set_solib_svr4_fetch_link_map_offsets
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
-
-  /* How to print LWP PTIDs from core files.  */
-  set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str);
 }
 
 
@@ -151,8 +103,9 @@ i386_sol2_osabi_sniffer (bfd *abfd)
   return GDB_OSABI_UNKNOWN;
 }
 
+void _initialize_i386_sol2_tdep ();
 void
-_initialize_i386_sol2_tdep (void)
+_initialize_i386_sol2_tdep ()
 {
   /* Register an ELF OS ABI sniffer for Solaris 2 binaries.  */
   gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-tdep.c ./gdb/i386-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Intel 386 target-dependent stuff.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,7 +22,7 @@
 #include "arch-utils.h"
 #include "command.h"
 #include "dummy-frame.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
@@ -65,6 +65,7 @@
 #include <ctype.h>
 #include <algorithm>
 #include <unordered_set>
+#include "producer.h"
 
 /* Register names.  */
 
@@ -798,13 +799,14 @@ i386_insn_is_jump (struct gdbarch *gdbar
 
 /* Some kernels may run one past a syscall insn, so we have to cope.  */
 
-struct displaced_step_closure *
+displaced_step_closure_up
 i386_displaced_step_copy_insn (struct gdbarch *gdbarch,
 			       CORE_ADDR from, CORE_ADDR to,
 			       struct regcache *regs)
 {
   size_t len = gdbarch_max_insn_length (gdbarch);
-  i386_displaced_step_closure *closure = new i386_displaced_step_closure (len);
+  std::unique_ptr<i386_displaced_step_closure> closure
+    (new i386_displaced_step_closure (len));
   gdb_byte *buf = closure->buf.data ();
 
   read_memory (from, buf, len);
@@ -830,7 +832,8 @@ i386_displaced_step_copy_insn (struct gd
       displaced_step_dump_bytes (gdb_stdlog, buf, len);
     }
 
-  return closure;
+  /* This is a work around for a problem with g++ 4.8.  */
+  return displaced_step_closure_up (closure.release ());
 }
 
 /* Fix up the state of registers and memory after having single-stepped
@@ -1535,6 +1538,24 @@ struct i386_insn i386_frame_setup_skip_i
   { 0 }
 };
 
+/* Check whether PC points to an endbr32 instruction.  */
+static CORE_ADDR
+i386_skip_endbr (CORE_ADDR pc)
+{
+  static const gdb_byte endbr32[] = { 0xf3, 0x0f, 0x1e, 0xfb };
+
+  gdb_byte buf[sizeof (endbr32)];
+
+  /* Stop there if we can't read the code */
+  if (target_read_code (pc, buf, sizeof (endbr32)))
+    return pc;
+
+  /* If the instruction isn't an endbr32, stop */
+  if (memcmp (buf, endbr32, sizeof (endbr32)) != 0)
+    return pc;
+
+  return pc + sizeof (endbr32);
+}
 
 /* Check whether PC points to a no-op instruction.  */
 static CORE_ADDR
@@ -1812,6 +1833,7 @@ i386_analyze_prologue (struct gdbarch *g
 		       CORE_ADDR pc, CORE_ADDR current_pc,
 		       struct i386_frame_cache *cache)
 {
+  pc = i386_skip_endbr (pc);
   pc = i386_skip_noop (pc);
   pc = i386_follow_jump (gdbarch, pc);
   pc = i386_analyze_struct_return (pc, current_pc, cache);
@@ -1845,12 +1867,13 @@ i386_skip_prologue (struct gdbarch *gdba
 	= skip_prologue_using_sal (gdbarch, func_addr);
       struct compunit_symtab *cust = find_pc_compunit_symtab (func_addr);
 
-      /* Clang always emits a line note before the prologue and another
-	 one after.  We trust clang to emit usable line notes.  */
+      /* LLVM backend (Clang/Flang) always emits a line note before the
+         prologue and another one after.  We trust clang to emit usable
+         line notes.  */
       if (post_prologue_pc
 	  && (cust != NULL
 	      && COMPUNIT_PRODUCER (cust) != NULL
-	      && startswith (COMPUNIT_PRODUCER (cust), "clang ")))
+	      && producer_is_llvm (COMPUNIT_PRODUCER (cust))))
         return std::max (start_pc, post_prologue_pc);
     }
  
@@ -2631,19 +2654,19 @@ static int
 i386_16_byte_align_p (struct type *type)
 {
   type = check_typedef (type);
-  if ((TYPE_CODE (type) == TYPE_CODE_DECFLOAT
-       || (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type)))
+  if ((type->code () == TYPE_CODE_DECFLOAT
+       || (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type)))
       && TYPE_LENGTH (type) == 16)
     return 1;
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type->code () == TYPE_CODE_ARRAY)
     return i386_16_byte_align_p (TYPE_TARGET_TYPE (type));
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION)
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION)
     {
       int i;
-      for (i = 0; i < TYPE_NFIELDS (type); i++)
+      for (i = 0; i < type->num_fields (); i++)
 	{
-	  if (i386_16_byte_align_p (TYPE_FIELD_TYPE (type, i)))
+	  if (i386_16_byte_align_p (type->field (i).type ()))
 	    return 1;
 	}
     }
@@ -2666,12 +2689,15 @@ i386_push_dummy_code (struct gdbarch *gd
   return sp - 16;
 }
 
-static CORE_ADDR
-i386_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
-		      struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
-		      struct value **args, CORE_ADDR sp,
-		      function_call_return_method return_method,
-		      CORE_ADDR struct_addr)
+/* The "push_dummy_call" gdbarch method, optionally with the thiscall
+   calling convention.  */
+
+CORE_ADDR
+i386_thiscall_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+			       struct regcache *regcache, CORE_ADDR bp_addr,
+			       int nargs, struct value **args, CORE_ADDR sp,
+			       function_call_return_method return_method,
+			       CORE_ADDR struct_addr, bool thiscall)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   gdb_byte buf[4];
@@ -2707,7 +2733,7 @@ i386_push_dummy_call (struct gdbarch *gd
 	    args_space += 4;
 	}
 
-      for (i = 0; i < nargs; i++)
+      for (i = thiscall ? 1 : 0; i < nargs; i++)
 	{
 	  int len = TYPE_LENGTH (value_enclosing_type (args[i]));
 
@@ -2759,6 +2785,10 @@ i386_push_dummy_call (struct gdbarch *gd
   /* ...and fake a frame pointer.  */
   regcache->cooked_write (I386_EBP_REGNUM, buf);
 
+  /* The 'this' pointer needs to be in ECX.  */
+  if (thiscall)
+    regcache->cooked_write (I386_ECX_REGNUM, value_contents_all (args[0]));
+
   /* MarkK wrote: This "+ 8" is all over the place:
      (i386_frame_this_id, i386_sigtramp_frame_this_id,
      i386_dummy_id).  It's there, since all frame unwinders for
@@ -2771,6 +2801,20 @@ i386_push_dummy_call (struct gdbarch *gd
   return sp + 8;
 }
 
+/* Implement the "push_dummy_call" gdbarch method.  */
+
+static CORE_ADDR
+i386_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+		      struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
+		      struct value **args, CORE_ADDR sp,
+		      function_call_return_method return_method,
+		      CORE_ADDR struct_addr)
+{
+  return i386_thiscall_push_dummy_call (gdbarch, function, regcache, bp_addr,
+					nargs, args, sp, return_method,
+					struct_addr, false);
+}
+
 /* These registers are used for returning integers (and on some
    targets also for returning `struct' and `union' values when their
    size and alignment match an integer type).  */
@@ -2788,7 +2832,7 @@ i386_extract_return_value (struct gdbarc
   int len = TYPE_LENGTH (type);
   gdb_byte buf[I386_MAX_REGISTER_SIZE];
 
-  if (TYPE_CODE (type) == TYPE_CODE_FLT)
+  if (type->code () == TYPE_CODE_FLT)
     {
       if (tdep->st0_regnum < 0)
 	{
@@ -2838,7 +2882,7 @@ i386_store_return_value (struct gdbarch
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
   int len = TYPE_LENGTH (type);
 
-  if (TYPE_CODE (type) == TYPE_CODE_FLT)
+  if (type->code () == TYPE_CODE_FLT)
     {
       ULONGEST fstat;
       gdb_byte buf[I386_MAX_REGISTER_SIZE];
@@ -2915,7 +2959,7 @@ static int
 i386_reg_struct_return_p (struct gdbarch *gdbarch, struct type *type)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
   int len = TYPE_LENGTH (type);
 
   gdb_assert (code == TYPE_CODE_STRUCT
@@ -2929,10 +2973,10 @@ i386_reg_struct_return_p (struct gdbarch
 
   /* Structures consisting of a single `float', `double' or 'long
      double' member are returned in %st(0).  */
-  if (code == TYPE_CODE_STRUCT && TYPE_NFIELDS (type) == 1)
+  if (code == TYPE_CODE_STRUCT && type->num_fields () == 1)
     {
-      type = check_typedef (TYPE_FIELD_TYPE (type, 0));
-      if (TYPE_CODE (type) == TYPE_CODE_FLT)
+      type = check_typedef (type->field (0).type ());
+      if (type->code () == TYPE_CODE_FLT)
 	return (len == 4 || len == 8 || len == 12);
     }
 
@@ -2950,7 +2994,7 @@ i386_return_value (struct gdbarch *gdbar
 		   struct type *type, struct regcache *regcache,
 		   gdb_byte *readbuf, const gdb_byte *writebuf)
 {
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
 
   if (((code == TYPE_CODE_STRUCT
 	|| code == TYPE_CODE_UNION
@@ -2997,9 +3041,9 @@ i386_return_value (struct gdbarch *gdbar
      the structure.  Since that should work for all structures that
      have only one member, we don't bother to check the member's type
      here.  */
-  if (code == TYPE_CODE_STRUCT && TYPE_NFIELDS (type) == 1)
+  if (code == TYPE_CODE_STRUCT && type->num_fields () == 1)
     {
-      type = check_typedef (TYPE_FIELD_TYPE (type, 0));
+      type = check_typedef (type->field (0).type ());
       return i386_return_value (gdbarch, function, type, regcache,
 				readbuf, writebuf);
     }
@@ -3057,7 +3101,7 @@ i386_bnd_type (struct gdbarch *gdbarch)
       append_composite_type_field (t, "lbound", bt->builtin_data_ptr);
       append_composite_type_field (t, "ubound", bt->builtin_data_ptr);
 
-      TYPE_NAME (t) = "builtin_type_bound128";
+      t->set_name ("builtin_type_bound128");
       tdep->i386_bnd_type = t;
     }
 
@@ -3080,13 +3124,14 @@ i386_zmm_type (struct gdbarch *gdbarch)
 #if 0
       union __gdb_builtin_type_vec512i
       {
-	int128_t uint128[4];
-	int64_t v4_int64[8];
-	int32_t v8_int32[16];
-	int16_t v16_int16[32];
-	int8_t v32_int8[64];
-	double v4_double[8];
-	float v8_float[16];
+	int128_t v4_int128[4];
+	int64_t v8_int64[8];
+	int32_t v16_int32[16];
+	int16_t v32_int16[32];
+	int8_t v64_int8[64];
+	double v8_double[8];
+	float v16_float[16];
+	bfloat16_t v32_bfloat16[32];
       };
 #endif
 
@@ -3094,6 +3139,8 @@ i386_zmm_type (struct gdbarch *gdbarch)
 
       t = arch_composite_type (gdbarch,
 			       "__gdb_builtin_type_vec512i", TYPE_CODE_UNION);
+      append_composite_type_field (t, "v32_bfloat16",
+				   init_vector_type (bt->builtin_bfloat16, 32));
       append_composite_type_field (t, "v16_float",
 				   init_vector_type (bt->builtin_float, 16));
       append_composite_type_field (t, "v8_double",
@@ -3110,7 +3157,7 @@ i386_zmm_type (struct gdbarch *gdbarch)
 				   init_vector_type (bt->builtin_int128, 4));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "builtin_type_vec512i";
+      t->set_name ("builtin_type_vec512i");
       tdep->i386_zmm_type = t;
     }
 
@@ -3133,13 +3180,14 @@ i386_ymm_type (struct gdbarch *gdbarch)
 #if 0
       union __gdb_builtin_type_vec256i
       {
-        int128_t uint128[2];
-        int64_t v2_int64[4];
-        int32_t v4_int32[8];
-        int16_t v8_int16[16];
-        int8_t v16_int8[32];
-        double v2_double[4];
-        float v4_float[8];
+        int128_t v2_int128[2];
+        int64_t v4_int64[4];
+        int32_t v8_int32[8];
+        int16_t v16_int16[16];
+        int8_t v32_int8[32];
+        double v4_double[4];
+        float v8_float[8];
+        bfloat16_t v16_bfloat16[16];
       };
 #endif
 
@@ -3147,6 +3195,8 @@ i386_ymm_type (struct gdbarch *gdbarch)
 
       t = arch_composite_type (gdbarch,
 			       "__gdb_builtin_type_vec256i", TYPE_CODE_UNION);
+      append_composite_type_field (t, "v16_bfloat16",
+				   init_vector_type (bt->builtin_bfloat16, 16));
       append_composite_type_field (t, "v8_float",
 				   init_vector_type (bt->builtin_float, 8));
       append_composite_type_field (t, "v4_double",
@@ -3163,7 +3213,7 @@ i386_ymm_type (struct gdbarch *gdbarch)
 				   init_vector_type (bt->builtin_int128, 2));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "builtin_type_vec256i";
+      t->set_name ("builtin_type_vec256i");
       tdep->i386_ymm_type = t;
     }
 
@@ -3205,7 +3255,7 @@ i386_mmx_type (struct gdbarch *gdbarch)
 				   init_vector_type (bt->builtin_int8, 8));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "builtin_type_vec64i";
+      t->set_name ("builtin_type_vec64i");
       tdep->i386_mmx_type = t;
     }
 
@@ -8186,7 +8236,9 @@ i386_floatformat_for_type (struct gdbarc
 	|| strcmp (name, "_Float128") == 0
 	|| strcmp (name, "complex _Float128") == 0
 	|| strcmp (name, "complex(kind=16)") == 0
-	|| strcmp (name, "real(kind=16)") == 0)
+	|| strcmp (name, "quad complex") == 0
+	|| strcmp (name, "real(kind=16)") == 0
+	|| strcmp (name, "real*16") == 0)
       return floatformats_ia64_quad;
 
   return default_floatformat_for_type (gdbarch, name, len);
@@ -8375,13 +8427,13 @@ i386_type_align (struct gdbarch *gdbarch
 
   if (gdbarch_ptr_bit (gdbarch) == 32)
     {
-      if ((TYPE_CODE (type) == TYPE_CODE_INT
-	   || TYPE_CODE (type) == TYPE_CODE_FLT)
+      if ((type->code () == TYPE_CODE_INT
+	   || type->code () == TYPE_CODE_FLT)
 	  && TYPE_LENGTH (type) > 4)
 	return 4;
 
       /* Handle x86's funny long double.  */
-      if (TYPE_CODE (type) == TYPE_CODE_FLT
+      if (type->code () == TYPE_CODE_FLT
 	  && gdbarch_long_double_bit (gdbarch) == TYPE_LENGTH (type) * 8)
 	return 4;
     }
@@ -8460,6 +8512,9 @@ i386_gdbarch_init (struct gdbarch_info i
      alignment.  */
   set_gdbarch_long_double_bit (gdbarch, 96);
 
+  /* Support of bfloat16 format.  */
+  set_gdbarch_bfloat16_format (gdbarch, floatformats_bfloat16);
+
   /* Support for floating-point data type variants.  */
   set_gdbarch_floatformat_for_type (gdbarch, i386_floatformat_for_type);
 
@@ -9016,24 +9071,9 @@ i386_mpx_set_bounds (const char *args, i
 
 static struct cmd_list_element *mpx_set_cmdlist, *mpx_show_cmdlist;
 
-/* Helper function for the CLI commands.  */
-
-static void
-set_mpx_cmd (const char *args, int from_tty)
-{
-  help_list (mpx_set_cmdlist, "set mpx ", all_commands, gdb_stdout);
-}
-
-/* Helper function for the CLI commands.  */
-
-static void
-show_mpx_cmd (const char *args, int from_tty)
-{
-  cmd_show_list (mpx_show_cmdlist, from_tty, "");
-}
-
+void _initialize_i386_tdep ();
 void
-_initialize_i386_tdep (void)
+_initialize_i386_tdep ()
 {
   register_gdbarch_init (bfd_arch_i386, i386_gdbarch_init);
 
@@ -9061,17 +9101,17 @@ is \"default\"."),
 
   /* Add "mpx" prefix for the set commands.  */
 
-  add_prefix_cmd ("mpx", class_support, set_mpx_cmd, _("\
+  add_basic_prefix_cmd ("mpx", class_support, _("\
 Set Intel Memory Protection Extensions specific variables."),
-		  &mpx_set_cmdlist, "set mpx ",
-		  0 /* allow-unknown */, &setlist);
+			&mpx_set_cmdlist, "set mpx ",
+			0 /* allow-unknown */, &setlist);
 
   /* Add "mpx" prefix for the show commands.  */
 
-  add_prefix_cmd ("mpx", class_support, show_mpx_cmd, _("\
+  add_show_prefix_cmd ("mpx", class_support, _("\
 Show Intel Memory Protection Extensions specific variables."),
-		  &mpx_show_cmdlist, "show mpx ",
-		  0 /* allow-unknown */, &showlist);
+		       &mpx_show_cmdlist, "show mpx ",
+		       0 /* allow-unknown */, &showlist);
 
   /* Add "bound" command for the show mpx commands list.  */
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-tdep.h ./gdb/i386-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the i386.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -399,6 +399,19 @@ extern CORE_ADDR i386_pe_skip_trampoline
 extern CORE_ADDR i386_skip_main_prologue (struct gdbarch *gdbarch,
 					  CORE_ADDR pc);
 
+/* The "push_dummy_call" gdbarch method, optionally with the thiscall
+   calling convention.  */
+extern CORE_ADDR i386_thiscall_push_dummy_call (struct gdbarch *gdbarch,
+						struct value *function,
+						struct regcache *regcache,
+						CORE_ADDR bp_addr,
+						int nargs, struct value **args,
+						CORE_ADDR sp,
+						function_call_return_method
+						return_method,
+						CORE_ADDR struct_addr,
+						bool thiscall);
+
 /* Return whether the THIS_FRAME corresponds to a sigtramp routine.  */
 extern int i386_sigtramp_p (struct frame_info *this_frame);
 
@@ -428,7 +441,7 @@ extern void
 
 typedef buf_displaced_step_closure i386_displaced_step_closure;
 
-extern struct displaced_step_closure *i386_displaced_step_copy_insn
+extern displaced_step_closure_up i386_displaced_step_copy_insn
   (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to,
    struct regcache *regs);
 extern void i386_displaced_step_fixup (struct gdbarch *gdbarch,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-windows-nat.c ./gdb/i386-windows-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-windows-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i386-windows-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,8 +22,11 @@
 
 #include <windows.h>
 
-#define context_offset(x) ((int)&(((CONTEXT *)NULL)->x))
-static const int mappings[] =
+#ifdef __x86_64__
+#define CONTEXT WOW64_CONTEXT
+#endif
+#define context_offset(x) ((int)(size_t)&(((CONTEXT *)NULL)->x))
+const int i386_mappings[] =
 {
   context_offset (Eax),
   context_offset (Ecx),
@@ -70,19 +73,21 @@ static const int mappings[] =
   context_offset (ExtendedRegisters[24])
 };
 #undef context_offset
+#undef CONTEXT
 
 /* segment_register_p_ftype implementation for x86.  */
 
-static int
+int
 i386_windows_segment_register_p (int regnum)
 {
   return regnum >= I386_CS_REGNUM && regnum <= I386_GS_REGNUM;
 }
 
+void _initialize_i386_windows_nat ();
 void
-_initialize_i386_windows_nat (void)
+_initialize_i386_windows_nat ()
 {
-  windows_set_context_register_offsets (mappings);
-  windows_set_segment_register_p (i386_windows_segment_register_p);
+#ifndef __x86_64__
   x86_set_debug_register_length (4);
+#endif
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-windows-tdep.c ./gdb/i386-windows-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i386-windows-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/i386-windows-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,326 @@
+/* Target-dependent code for Windows (including Cygwin) running on i386's,
+   for GDB.
+
+   Copyright (C) 2003-2021 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 "osabi.h"
+#include "i386-tdep.h"
+#include "windows-tdep.h"
+#include "regset.h"
+#include "gdb_obstack.h"
+#include "xml-support.h"
+#include "gdbcore.h"
+#include "inferior.h"
+
+/* Core file support.  */
+
+/* This vector maps GDB's idea of a register's number into an address
+   in the windows exception context vector.  */
+
+static int i386_windows_gregset_reg_offset[] =
+{
+  176, /* eax */
+  172, /* ecx */
+  168, /* edx */
+  164, /* ebx */
+
+  196, /* esp */
+  180, /* ebp */
+  160, /* esi */
+  156, /* edi */
+
+  184, /* eip */
+  192, /* eflags */
+  188, /* cs */
+  200, /* ss */
+
+  152, /* ds */
+  148, /* es */
+  144, /* fs */
+  140, /* gs */
+
+  56, /* FloatSave.RegisterArea[0 * 10] */
+  66, /* FloatSave.RegisterArea[1 * 10] */
+  76, /* FloatSave.RegisterArea[2 * 10] */
+  86, /* FloatSave.RegisterArea[3 * 10] */
+  96, /* FloatSave.RegisterArea[4 * 10] */
+  106, /* FloatSave.RegisterArea[5 * 10] */
+  116, /* FloatSave.RegisterArea[6 * 10] */
+  126, /* FloatSave.RegisterArea[7 * 10] */
+
+  28, /* FloatSave.ControlWord */
+  32, /* FloatSave.StatusWord */
+  36, /* FloatSave.TagWord */
+  44, /* FloatSave.ErrorSelector */
+  40, /* FloatSave.ErrorOffset */
+  52, /* FloatSave.DataSelector */
+  48, /* FloatSave.DataOffset */
+  44, /* FloatSave.ErrorSelector */
+
+  /* XMM0-7 */
+  364, /* ExtendedRegisters[10*16] */
+  380, /* ExtendedRegisters[11*16] */
+  396, /* ExtendedRegisters[12*16] */
+  412, /* ExtendedRegisters[13*16] */
+  428, /* ExtendedRegisters[14*16] */
+  444, /* ExtendedRegisters[15*16] */
+  460, /* ExtendedRegisters[16*16] */
+  476, /* ExtendedRegisters[17*16] */
+
+  /* MXCSR */
+  228 /* ExtendedRegisters[24] */
+};
+
+#define I386_WINDOWS_SIZEOF_GREGSET 716
+
+struct cpms_data
+{
+  struct gdbarch *gdbarch;
+  struct obstack *obstack;
+  int module_count;
+};
+
+static void
+core_process_module_section (bfd *abfd, asection *sect, void *obj)
+{
+  struct cpms_data *data = (struct cpms_data *) obj;
+  enum bfd_endian byte_order = gdbarch_byte_order (data->gdbarch);
+
+  char *module_name;
+  size_t module_name_size;
+  CORE_ADDR base_addr;
+
+  gdb_byte *buf = NULL;
+
+  if (!startswith (sect->name, ".module"))
+    return;
+
+  buf = (gdb_byte *) xmalloc (bfd_section_size (sect) + 1);
+  if (!buf)
+    {
+      printf_unfiltered ("memory allocation failed for %s\n", sect->name);
+      goto out;
+    }
+  if (!bfd_get_section_contents (abfd, sect,
+				 buf, 0, bfd_section_size (sect)))
+    goto out;
+
+
+
+  /* A DWORD (data_type) followed by struct windows_core_module_info.  */
+
+  base_addr =
+    extract_unsigned_integer (buf + 4, 4, byte_order);
+
+  module_name_size =
+    extract_unsigned_integer (buf + 8, 4, byte_order);
+
+  if (12 + module_name_size > bfd_section_size (sect))
+    goto out;
+  module_name = (char *) buf + 12;
+
+  /* The first module is the .exe itself.  */
+  if (data->module_count != 0)
+    windows_xfer_shared_library (module_name, base_addr,
+				 NULL, data->gdbarch, data->obstack);
+  data->module_count++;
+
+out:
+  xfree (buf);
+  return;
+}
+
+static ULONGEST
+windows_core_xfer_shared_libraries (struct gdbarch *gdbarch,
+				  gdb_byte *readbuf,
+				  ULONGEST offset, ULONGEST len)
+{
+  struct obstack obstack;
+  const char *buf;
+  ULONGEST len_avail;
+  struct cpms_data data = { gdbarch, &obstack, 0 };
+
+  obstack_init (&obstack);
+  obstack_grow_str (&obstack, "<library-list>\n");
+  bfd_map_over_sections (core_bfd,
+			 core_process_module_section,
+			 &data);
+  obstack_grow_str0 (&obstack, "</library-list>\n");
+
+  buf = (const char *) obstack_finish (&obstack);
+  len_avail = strlen (buf);
+  if (offset >= len_avail)
+    return 0;
+
+  if (len > len_avail - offset)
+    len = len_avail - offset;
+  memcpy (readbuf, buf + offset, len);
+
+  obstack_free (&obstack, NULL);
+  return len;
+}
+
+/* This is how we want PTIDs from core files to be printed.  */
+
+static std::string
+i386_windows_core_pid_to_str (struct gdbarch *gdbarch, ptid_t ptid)
+{
+  if (ptid.lwp () != 0)
+    return string_printf ("Thread 0x%lx", ptid.lwp ());
+
+  return normal_pid_to_str (ptid);
+}
+
+static CORE_ADDR
+i386_windows_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
+{
+  return i386_pe_skip_trampoline_code (frame, pc, NULL);
+}
+
+static const char *
+i386_windows_auto_wide_charset (void)
+{
+  return "UTF-16";
+}
+
+/* Implement the "push_dummy_call" gdbarch method.  */
+
+static CORE_ADDR
+i386_windows_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+			      struct regcache *regcache, CORE_ADDR bp_addr,
+			      int nargs, struct value **args, CORE_ADDR sp,
+			      function_call_return_method return_method,
+			      CORE_ADDR struct_addr)
+{
+  /* For non-static member functions of 32bit Windows programs, the thiscall
+     calling convention is used, so the 'this' pointer is passed in ECX.  */
+  bool thiscall = false;
+
+  struct type *type = check_typedef (value_type (function));
+  if (type->code () == TYPE_CODE_PTR)
+    type = check_typedef (TYPE_TARGET_TYPE (type));
+
+  /* read_subroutine_type sets for non-static member functions the
+     artificial flag of the first parameter ('this' pointer).  */
+  if (type->code () == TYPE_CODE_METHOD
+      && type->num_fields () > 0
+      && TYPE_FIELD_ARTIFICIAL (type, 0)
+      && type->field (0).type ()->code () == TYPE_CODE_PTR)
+    thiscall = 1;
+
+  return i386_thiscall_push_dummy_call (gdbarch, function, regcache, bp_addr,
+					nargs, args, sp, return_method,
+					struct_addr, thiscall);
+}
+
+/* Common parts for gdbarch initialization for Windows and Cygwin on i386.  */
+
+static void
+i386_windows_init_abi_common (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+  set_gdbarch_skip_trampoline_code (gdbarch, i386_windows_skip_trampoline_code);
+
+  set_gdbarch_skip_main_prologue (gdbarch, i386_skip_main_prologue);
+
+  tdep->struct_return = reg_struct_return;
+
+  tdep->gregset_reg_offset = i386_windows_gregset_reg_offset;
+  tdep->gregset_num_regs = ARRAY_SIZE (i386_windows_gregset_reg_offset);
+  tdep->sizeof_gregset = I386_WINDOWS_SIZEOF_GREGSET;
+
+  tdep->sizeof_fpregset = 0;
+
+  /* Core file support.  */
+  set_gdbarch_core_xfer_shared_libraries
+    (gdbarch, windows_core_xfer_shared_libraries);
+  set_gdbarch_core_pid_to_str (gdbarch, i386_windows_core_pid_to_str);
+
+  set_gdbarch_auto_wide_charset (gdbarch, i386_windows_auto_wide_charset);
+}
+
+/* gdbarch initialization for Windows on i386.  */
+
+static void
+i386_windows_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  i386_windows_init_abi_common (info, gdbarch);
+  windows_init_abi (info, gdbarch);
+
+  set_gdbarch_push_dummy_call (gdbarch, i386_windows_push_dummy_call);
+}
+
+/* gdbarch initialization for Cygwin on i386.  */
+
+static void
+i386_cygwin_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  i386_windows_init_abi_common (info, gdbarch);
+  cygwin_init_abi (info, gdbarch);
+}
+
+static gdb_osabi
+i386_windows_osabi_sniffer (bfd *abfd)
+{
+  const char *target_name = bfd_get_target (abfd);
+
+  if (!streq (target_name, "pei-i386"))
+    return GDB_OSABI_UNKNOWN;
+
+  if (is_linked_with_cygwin_dll (abfd))
+    return GDB_OSABI_CYGWIN;
+
+  return GDB_OSABI_WINDOWS;
+}
+
+static enum gdb_osabi
+i386_cygwin_core_osabi_sniffer (bfd *abfd)
+{
+  const char *target_name = bfd_get_target (abfd);
+
+  /* Cygwin uses elf core dumps.  Do not claim all ELF executables,
+     check whether there is a .reg section of proper size.  */
+  if (strcmp (target_name, "elf32-i386") == 0)
+    {
+      asection *section = bfd_get_section_by_name (abfd, ".reg");
+      if (section != nullptr
+	  && bfd_section_size (section) == I386_WINDOWS_SIZEOF_GREGSET)
+	return GDB_OSABI_CYGWIN;
+    }
+
+  return GDB_OSABI_UNKNOWN;
+}
+
+void _initialize_i386_windows_tdep ();
+void
+_initialize_i386_windows_tdep ()
+{
+  gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_coff_flavour,
+                                  i386_windows_osabi_sniffer);
+
+  /* Cygwin uses elf core dumps.  */
+  gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour,
+                                  i386_cygwin_core_osabi_sniffer);
+
+  gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_WINDOWS,
+                          i386_windows_init_abi);
+  gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_CYGWIN,
+			  i386_cygwin_init_abi);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i387-tdep.c ./gdb/i387-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i387-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i387-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Intel 387 floating point stuff.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -332,7 +332,7 @@ i387_convert_register_p (struct gdbarch
       /* Floating point registers must be converted unless we are
 	 accessing them in their hardware type or TYPE is not float.  */
       if (type == i387_ext_type (gdbarch)
-	  || TYPE_CODE (type) != TYPE_CODE_FLT)
+	  || type->code () != TYPE_CODE_FLT)
 	return 0;
       else
 	return 1;
@@ -355,7 +355,7 @@ i387_register_to_value (struct frame_inf
   gdb_assert (i386_fp_regnum_p (gdbarch, regnum));
 
   /* We only support floating-point values.  */
-  if (TYPE_CODE (type) != TYPE_CODE_FLT)
+  if (type->code () != TYPE_CODE_FLT)
     {
       warning (_("Cannot convert floating-point register value "
 	       "to non-floating-point type."));
@@ -387,7 +387,7 @@ i387_value_to_register (struct frame_inf
   gdb_assert (i386_fp_regnum_p (gdbarch, regnum));
 
   /* We only support floating-point values.  */
-  if (TYPE_CODE (type) != TYPE_CODE_FLT)
+  if (type->code () != TYPE_CODE_FLT)
     {
       warning (_("Cannot convert non-floating-point type "
 	       "to floating-point register value."));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i387-tdep.h ./gdb/i387-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/i387-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/i387-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the i387.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-libunwind-tdep.c ./gdb/ia64-libunwind-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-libunwind-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ia64-libunwind-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Frame unwinder for ia64 frames using the libunwind library.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    Written by Jeff Johnston, contributed by Red Hat Inc.
 
@@ -133,10 +133,10 @@ libunwind_descr (struct gdbarch *gdbarch
 }
 
 static void *
-libunwind_descr_init (struct gdbarch *gdbarch)
+libunwind_descr_init (struct obstack *obstack)
 {
   struct libunwind_descr *descr
-    = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct libunwind_descr);
+    = OBSTACK_ZALLOC (obstack, struct libunwind_descr);
 
   return descr;
 }
@@ -151,14 +151,7 @@ libunwind_frame_set_descr (struct gdbarc
 
   arch_descr = ((struct libunwind_descr *)
 		gdbarch_data (gdbarch, libunwind_descr_handle));
-
-  if (arch_descr == NULL)
-    {
-      /* First time here.  Must initialize data area.  */
-      arch_descr = (struct libunwind_descr *) libunwind_descr_init (gdbarch);
-      deprecated_set_gdbarch_data (gdbarch,
-				   libunwind_descr_handle, arch_descr);
-    }
+  gdb_assert (arch_descr != NULL);
 
   /* Copy new descriptor info into arch descriptor.  */
   arch_descr->gdb2uw = descr->gdb2uw;
@@ -591,11 +584,12 @@ libunwind_is_initialized (void)
   return libunwind_initialized;
 }
 
+void _initialize_libunwind_frame ();
 void
-_initialize_libunwind_frame (void)
+_initialize_libunwind_frame ()
 {
   libunwind_descr_handle
-    = gdbarch_data_register_post_init (libunwind_descr_init);
+    = gdbarch_data_register_pre_init (libunwind_descr_init);
 
   libunwind_initialized = libunwind_load ();
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-libunwind-tdep.h ./gdb/ia64-libunwind-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-libunwind-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ia64-libunwind-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Frame unwinder for ia64 frames with libunwind frame information.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    Contributed by Jeff Johnston.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-linux-nat.c ./gdb/ia64-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ia64-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Functions specific to running gdb native on IA-64 running
    GNU/Linux.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,6 +21,7 @@
 #include "defs.h"
 #include "inferior.h"
 #include "target.h"
+#include "gdbarch.h"
 #include "gdbcore.h"
 #include "regcache.h"
 #include "ia64-tdep.h"
@@ -80,6 +81,8 @@ public:
   /* Override linux_nat_target low methods.  */
   void low_new_thread (struct lwp_info *lp) override;
   bool low_status_is_event (int status) override;
+
+  void enable_watchpoints_in_psr (ptid_t ptid);
 };
 
 static ia64_linux_nat_target the_ia64_linux_nat_target;
@@ -529,10 +532,10 @@ fill_fpregset (const struct regcache *re
 #define IA64_PSR_DB (1UL << 24)
 #define IA64_PSR_DD (1UL << 39)
 
-static void
-enable_watchpoints_in_psr (ptid_t ptid)
+void
+ia64_linux_nat_target::enable_watchpoints_in_psr (ptid_t ptid)
 {
-  struct regcache *regcache = get_thread_regcache (ptid);
+  struct regcache *regcache = get_thread_regcache (this, ptid);
   ULONGEST psr;
 
   regcache_cooked_read_unsigned (regcache, IA64_PSR_REGNUM, &psr);
@@ -921,8 +924,9 @@ ia64_linux_nat_target::low_status_is_eve
 				 || WSTOPSIG (status) == SIGILL);
 }
 
+void _initialize_ia64_linux_nat ();
 void
-_initialize_ia64_linux_nat (void)
+_initialize_ia64_linux_nat ()
 {
   /* Register the target.  */
   linux_target = &the_ia64_linux_nat_target;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-linux-tdep.c ./gdb/ia64-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ia64-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the IA-64 for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -258,8 +258,9 @@ ia64_linux_init_abi (struct gdbarch_info
 				      ia64_linux_stap_is_single_operand);
 }
 
+void _initialize_ia64_linux_tdep ();
 void
-_initialize_ia64_linux_tdep (void)
+_initialize_ia64_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_ia64, 0, GDB_OSABI_LINUX,
 			  ia64_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-tdep.c ./gdb/ia64-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ia64-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the IA-64 for GDB, the GNU debugger.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -330,7 +330,7 @@ ia64_register_reggroup_p (struct gdbarch
   if (group == all_reggroup)
     return 1;
   vector_p = TYPE_VECTOR (register_type (gdbarch, regnum));
-  float_p = TYPE_CODE (register_type (gdbarch, regnum)) == TYPE_CODE_FLT;
+  float_p = register_type (gdbarch, regnum)->code () == TYPE_CODE_FLT;
   raw_p = regnum < NUM_IA64_RAW_REGS;
   if (group == float_reggroup)
     return float_p;
@@ -1212,7 +1212,7 @@ static int
 ia64_convert_register_p (struct gdbarch *gdbarch, int regno, struct type *type)
 {
   return (regno >= IA64_FR0_REGNUM && regno <= IA64_FR127_REGNUM
-	  && TYPE_CODE (type) == TYPE_CODE_FLT
+	  && type->code () == TYPE_CODE_FLT
 	  && type != ia64_ext_type (gdbarch));
 }
 
@@ -2713,7 +2713,7 @@ ia64_find_unwind_table (struct objfile *
   ehdr = elf_tdata (bfd)->elf_header;
   phdr = elf_tdata (bfd)->phdr;
 
-  load_base = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
+  load_base = objfile->text_section_offset ();
 
   for (i = 0; i < ehdr->e_phnum; ++i)
     {
@@ -2764,7 +2764,7 @@ ia64_find_unwind_table (struct objfile *
 
   dip->start_ip = p_text->p_vaddr + load_base;
   dip->end_ip = dip->start_ip + p_text->p_memsz;
-  dip->gp = ia64_find_global_pointer (get_objfile_arch (objfile), ip);
+  dip->gp = ia64_find_global_pointer (objfile->arch (), ip);
   dip->format = UNW_INFO_FORMAT_REMOTE_TABLE;
   dip->u.rti.name_ptr = (unw_word_t) bfd_get_filename (bfd);
   dip->u.rti.segbase = segbase;
@@ -3149,9 +3149,9 @@ ia64_use_struct_convention (struct type
 
   /* Don't use the struct convention for anything but structure,
      union, or array types.  */
-  if (!(TYPE_CODE (type) == TYPE_CODE_STRUCT
-	|| TYPE_CODE (type) == TYPE_CODE_UNION
-	|| TYPE_CODE (type) == TYPE_CODE_ARRAY))
+  if (!(type->code () == TYPE_CODE_STRUCT
+	|| type->code () == TYPE_CODE_UNION
+	|| type->code () == TYPE_CODE_ARRAY))
     return 0;
 
   /* HFAs are structures (or arrays) consisting entirely of floating
@@ -3173,8 +3173,8 @@ ia64_use_struct_convention (struct type
 static int
 ia64_struct_type_p (const struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-          || TYPE_CODE (type) == TYPE_CODE_UNION);
+  return (type->code () == TYPE_CODE_STRUCT
+          || type->code () == TYPE_CODE_UNION);
 }
 
 static void
@@ -3320,7 +3320,7 @@ ia64_return_value (struct gdbarch *gdbar
 static int
 is_float_or_hfa_type_recurse (struct type *t, struct type **etp)
 {
-  switch (TYPE_CODE (t))
+  switch (t->code ())
     {
     case TYPE_CODE_FLT:
       if (*etp)
@@ -3340,9 +3340,9 @@ is_float_or_hfa_type_recurse (struct typ
       {
 	int i;
 
-	for (i = 0; i < TYPE_NFIELDS (t); i++)
+	for (i = 0; i < t->num_fields (); i++)
 	  if (!is_float_or_hfa_type_recurse
-	      (check_typedef (TYPE_FIELD_TYPE (t, i)), etp))
+	      (check_typedef (t->field (i).type ()), etp))
 	    return 0;
 	return 1;
       }
@@ -3374,7 +3374,7 @@ is_float_or_hfa_type (struct type *t)
 static int
 slot_alignment_is_next_even (struct type *t)
 {
-  switch (TYPE_CODE (t))
+  switch (t->code ())
     {
     case TYPE_CODE_INT:
     case TYPE_CODE_FLT:
@@ -3389,9 +3389,9 @@ slot_alignment_is_next_even (struct type
       {
 	int i;
 
-	for (i = 0; i < TYPE_NFIELDS (t); i++)
+	for (i = 0; i < t->num_fields (); i++)
 	  if (slot_alignment_is_next_even
-	      (check_typedef (TYPE_FIELD_TYPE (t, i))))
+	      (check_typedef (t->field (i).type ())))
 	    return 1;
 	return 0;
       }
@@ -3699,7 +3699,7 @@ ia64_push_dummy_call (struct gdbarch *gd
       if ((nslots & 1) && slot_alignment_is_next_even (type))
 	nslots++;
 
-      if (TYPE_CODE (type) == TYPE_CODE_FUNC)
+      if (type->code () == TYPE_CODE_FUNC)
 	nfuncargs++;
 
       nslots += (len + 7) / 8;
@@ -3740,9 +3740,9 @@ ia64_push_dummy_call (struct gdbarch *gd
       len = TYPE_LENGTH (type);
 
       /* Special handling for function parameters.  */
-      if (len == 8 
-          && TYPE_CODE (type) == TYPE_CODE_PTR 
-	  && TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC)
+      if (len == 8
+          && type->code () == TYPE_CODE_PTR
+          && TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_FUNC)
 	{
 	  gdb_byte val_buf[8];
 	  ULONGEST faddr = extract_unsigned_integer (value_contents (arg),
@@ -4012,8 +4012,9 @@ ia64_gdbarch_init (struct gdbarch_info i
   return gdbarch;
 }
 
+void _initialize_ia64_tdep ();
 void
-_initialize_ia64_tdep (void)
+_initialize_ia64_tdep ()
 {
   gdbarch_register (bfd_arch_ia64, ia64_gdbarch_init, NULL);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-tdep.h ./gdb/ia64-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ia64-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the ia64.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-vms-tdep.c ./gdb/ia64-vms-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ia64-vms-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ia64-vms-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenVMS IA-64.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -153,8 +153,9 @@ ia64_openvms_init_abi (struct gdbarch_in
 #endif
 }
 
+void _initialize_ia64_vms_tdep ();
 void
-_initialize_ia64_vms_tdep (void)
+_initialize_ia64_vms_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_ia64, 0, GDB_OSABI_OPENVMS,
 			  ia64_openvms_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/infcall.c ./gdb/infcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/infcall.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/infcall.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Perform an inferior function call, for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -42,6 +42,7 @@
 #include "thread-fsm.h"
 #include <algorithm>
 #include "gdbsupport/scope-exit.h"
+#include <list>
 
 /* If we can't find a function's name from its address,
    we print this instead.  */
@@ -168,7 +169,7 @@ value_arg_coerce (struct gdbarch *gdbarc
      saved by the called function.  */
   arg = value_coerce_to_target (arg);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_REF:
     case TYPE_CODE_RVALUE_REF:
@@ -183,7 +184,7 @@ value_arg_coerce (struct gdbarch *gdbarc
 	   if the value was not previously in memory - in some cases
 	   we should clearly be allowing this, but how?  */
 	new_value = value_cast (TYPE_TARGET_TYPE (type), arg);
-	new_value = value_ref (new_value, TYPE_CODE (type));
+	new_value = value_ref (new_value, type->code ());
 	return new_value;
       }
     case TYPE_CODE_INT:
@@ -259,20 +260,20 @@ find_function_addr (struct value *functi
      part of it.  */
 
   /* Determine address to call.  */
-  if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
-      || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
+  if (ftype->code () == TYPE_CODE_FUNC
+      || ftype->code () == TYPE_CODE_METHOD)
     funaddr = value_address (function);
-  else if (TYPE_CODE (ftype) == TYPE_CODE_PTR)
+  else if (ftype->code () == TYPE_CODE_PTR)
     {
       funaddr = value_as_address (function);
       ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
-      if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
-	  || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
+      if (ftype->code () == TYPE_CODE_FUNC
+	  || ftype->code () == TYPE_CODE_METHOD)
 	funaddr = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr,
 						      current_top_target ());
     }
-  if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
-      || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
+  if (ftype->code () == TYPE_CODE_FUNC
+      || ftype->code () == TYPE_CODE_METHOD)
     {
       if (TYPE_GNU_IFUNC (ftype))
 	{
@@ -302,7 +303,7 @@ find_function_addr (struct value *functi
       else
 	value_type = TYPE_TARGET_TYPE (ftype);
     }
-  else if (TYPE_CODE (ftype) == TYPE_CODE_INT)
+  else if (ftype->code () == TYPE_CODE_INT)
     {
       /* Handle the case of functions lacking debugging info.
          Their values are characters since their addresses are char.  */
@@ -437,7 +438,7 @@ get_call_return_value (struct call_retur
   thread_info *thr = inferior_thread ();
   bool stack_temporaries = thread_stack_temporaries_enabled_p (thr);
 
-  if (TYPE_CODE (ri->value_type) == TYPE_CODE_VOID)
+  if (ri->value_type->code () == TYPE_CODE_VOID)
     retval = allocate_value (ri->value_type);
   else if (ri->struct_return_p)
     {
@@ -648,7 +649,8 @@ run_inferior_call (struct call_thread_fs
   if (!was_running
       && call_thread_ptid == inferior_ptid
       && stop_stack_dummy == STOP_STACK_DUMMY)
-    finish_thread_state (user_visible_resume_ptid (0));
+    finish_thread_state (call_thread->inf->process_target (),
+			 user_visible_resume_ptid (0));
 
   enable_watchpoints_after_interactive_call_stop ();
 
@@ -704,6 +706,33 @@ reserve_stack_space (const type *values_
   return addr;
 }
 
+/* The data structure which keeps a destructor function and
+   its implicit 'this' parameter.  */
+
+struct destructor_info
+{
+  destructor_info (struct value *function, struct value *self)
+    : function (function), self (self) { }
+
+  struct value *function;
+  struct value *self;
+};
+
+
+/* Auxiliary function that takes a list of destructor functions
+   with their 'this' parameters, and invokes the functions.  */
+
+static void
+call_destructors (const std::list<destructor_info> &dtors_to_invoke,
+		  struct type *default_return_type)
+{
+  for (auto vals : dtors_to_invoke)
+    {
+      call_function_by_hand (vals.function, default_return_type,
+			     gdb::make_array_view (&(vals.self), 1));
+    }
+}
+
 /* See infcall.h.  */
 
 struct value *
@@ -798,7 +827,7 @@ call_function_by_hand_dummy (struct valu
 
   values_type = check_typedef (values_type);
 
-  if (args.size () < TYPE_NFIELDS (ftype))
+  if (args.size () < ftype->num_fields ())
     error (_("Too few arguments in function call."));
 
   /* A holder for the inferior status.
@@ -983,6 +1012,12 @@ call_function_by_hand_dummy (struct valu
       internal_error (__FILE__, __LINE__, _("bad switch"));
     }
 
+  /* Coerce the arguments and handle pass-by-reference.
+     We want to remember the destruction required for pass-by-ref values.
+     For these, store the dtor function and the 'this' argument
+     in DTORS_TO_INVOKE.  */
+  std::list<destructor_info> dtors_to_invoke;
+
   for (int i = args.size () - 1; i >= 0; i--)
     {
       int prototyped;
@@ -990,9 +1025,9 @@ call_function_by_hand_dummy (struct valu
 
       /* FIXME drow/2002-05-31: Should just always mark methods as
 	 prototyped.  Can we respect TYPE_VARARGS?  Probably not.  */
-      if (TYPE_CODE (ftype) == TYPE_CODE_METHOD)
+      if (ftype->code () == TYPE_CODE_METHOD)
 	prototyped = 1;
-      if (TYPE_TARGET_TYPE (ftype) == NULL && TYPE_NFIELDS (ftype) == 0
+      if (TYPE_TARGET_TYPE (ftype) == NULL && ftype->num_fields () == 0
 	  && default_return_type != NULL)
 	{
 	  /* Calling a no-debug function with the return type
@@ -1007,21 +1042,105 @@ call_function_by_hand_dummy (struct valu
 	  */
 	  prototyped = 1;
 	}
-      else if (i < TYPE_NFIELDS (ftype))
+      else if (i < ftype->num_fields ())
 	prototyped = TYPE_PROTOTYPED (ftype);
       else
 	prototyped = 0;
 
-      if (i < TYPE_NFIELDS (ftype))
-	param_type = TYPE_FIELD_TYPE (ftype, i);
+      if (i < ftype->num_fields ())
+	param_type = ftype->field (i).type ();
       else
 	param_type = NULL;
 
+      value *original_arg = args[i];
       args[i] = value_arg_coerce (gdbarch, args[i],
 				  param_type, prototyped);
 
-      if (param_type != NULL && language_pass_by_reference (param_type))
-	args[i] = value_addr (args[i]);
+      if (param_type == NULL)
+	continue;
+
+      auto info = language_pass_by_reference (param_type);
+      if (!info.copy_constructible)
+	error (_("expression cannot be evaluated because the type '%s' "
+		 "is not copy constructible"), param_type->name ());
+
+      if (!info.destructible)
+	error (_("expression cannot be evaluated because the type '%s' "
+		 "is not destructible"), param_type->name ());
+
+      if (info.trivially_copyable)
+	continue;
+
+      /* Make a copy of the argument on the stack.  If the argument is
+	 trivially copy ctor'able, copy bit by bit.  Otherwise, call
+	 the copy ctor to initialize the clone.  */
+      CORE_ADDR addr = reserve_stack_space (param_type, sp);
+      value *clone
+	= value_from_contents_and_address (param_type, nullptr, addr);
+      push_thread_stack_temporary (call_thread.get (), clone);
+      value *clone_ptr
+	= value_from_pointer (lookup_pointer_type (param_type), addr);
+
+      if (info.trivially_copy_constructible)
+	{
+	  int length = TYPE_LENGTH (param_type);
+	  write_memory (addr, value_contents (args[i]), length);
+	}
+      else
+	{
+	  value *copy_ctor;
+	  value *cctor_args[2] = { clone_ptr, original_arg };
+	  find_overload_match (gdb::make_array_view (cctor_args, 2),
+			       param_type->name (), METHOD,
+			       &clone_ptr, nullptr, &copy_ctor, nullptr,
+			       nullptr, 0, EVAL_NORMAL);
+
+	  if (copy_ctor == nullptr)
+	    error (_("expression cannot be evaluated because a copy "
+		     "constructor for the type '%s' could not be found "
+		     "(maybe inlined?)"), param_type->name ());
+
+	  call_function_by_hand (copy_ctor, default_return_type,
+				 gdb::make_array_view (cctor_args, 2));
+	}
+
+      /* If the argument has a destructor, remember it so that we
+	 invoke it after the infcall is complete.  */
+      if (!info.trivially_destructible)
+	{
+	  /* Looking up the function via overload resolution does not
+	     work because the compiler (in particular, gcc) adds an
+	     artificial int parameter in some cases.  So we look up
+	     the function by using the "~" name.  This should be OK
+	     because there can be only one dtor definition.  */
+	  const char *dtor_name = nullptr;
+	  for (int fieldnum = 0;
+	       fieldnum < TYPE_NFN_FIELDS (param_type);
+	       fieldnum++)
+	    {
+	      fn_field *fn
+		= TYPE_FN_FIELDLIST1 (param_type, fieldnum);
+	      const char *field_name
+		= TYPE_FN_FIELDLIST_NAME (param_type, fieldnum);
+
+	      if (field_name[0] == '~')
+		dtor_name = TYPE_FN_FIELD_PHYSNAME (fn, 0);
+	    }
+
+	  if (dtor_name == nullptr)
+	    error (_("expression cannot be evaluated because a destructor "
+		     "for the type '%s' could not be found "
+		     "(maybe inlined?)"), param_type->name ());
+
+	  value *dtor
+	    = find_function_in_inferior (dtor_name, 0);
+
+	  /* Insert the dtor to the front of the list to call them
+	     in reverse order later.  */
+	  dtors_to_invoke.emplace_front (dtor, clone_ptr);
+	}
+
+      args[i] = clone_ptr;
     }
 
   /* Reserve space for the return structure to be written on the
@@ -1188,6 +1307,10 @@ call_function_by_hand_dummy (struct valu
 	    maybe_remove_breakpoints ();
 
 	    gdb_assert (retval != NULL);
+
+	    /* Destruct the pass-by-ref argument clones.  */
+	    call_destructors (dtors_to_invoke, default_return_type);
+
 	    return retval;
 	  }
 
@@ -1384,8 +1507,9 @@ When the function is done executing, GDB
   gdb_assert_not_reached ("... should not be here");
 }
 
+void _initialize_infcall ();
 void
-_initialize_infcall (void)
+_initialize_infcall ()
 {
   add_setshow_boolean_cmd ("may-call-functions", no_class,
 			   &may_call_functions_p, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/infcall.h ./gdb/infcall.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/infcall.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/infcall.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Perform an inferior function call, for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-child.c ./gdb/inf-child.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-child.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inf-child.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Base/prototype target for default child (native) targets.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -206,7 +206,7 @@ inf_child_target::mourn_inferior ()
 void
 inf_child_target::maybe_unpush_target ()
 {
-  if (!inf_child_explicitly_opened && !have_inferiors ())
+  if (!inf_child_explicitly_opened)
     unpush_target (this);
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-child.h ./gdb/inf-child.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-child.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inf-child.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Base/prototype target for default child (native) targets.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/infcmd.c ./gdb/infcmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/infcmd.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/infcmd.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Memory-access and commands for "inferior" process, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -52,6 +52,7 @@
 #include "thread-fsm.h"
 #include "top.h"
 #include "interps.h"
+#include "skip.h"
 #include "gdbsupport/gdb_optional.h"
 #include "source.h"
 #include "cli/cli-style.h"
@@ -99,27 +100,6 @@ enum stop_stack_kind stop_stack_dummy;
 int stopped_by_random_signal;
 
 
-/* Accessor routines.  */
-
-/* Set the io terminal for the current inferior.  Ownership of
-   TERMINAL_NAME is not transferred.  */
-
-void 
-set_inferior_io_terminal (const char *terminal_name)
-{
-  xfree (current_inferior ()->terminal);
-
-  if (terminal_name != NULL && *terminal_name != '\0')
-    current_inferior ()->terminal = xstrdup (terminal_name);
-  else
-    current_inferior ()->terminal = NULL;
-}
-
-const char *
-get_inferior_io_terminal (void)
-{
-  return current_inferior ()->terminal;
-}
 
 static void
 set_inferior_tty_command (const char *args, int from_tty,
@@ -127,7 +107,7 @@ set_inferior_tty_command (const char *ar
 {
   /* CLI has assigned the user-provided value to inferior_io_terminal_scratch.
      Now route it to current inferior.  */
-  set_inferior_io_terminal (inferior_io_terminal_scratch);
+  current_inferior ()->set_tty (inferior_io_terminal_scratch);
 }
 
 static void
@@ -136,13 +116,13 @@ show_inferior_tty_command (struct ui_fil
 {
   /* Note that we ignore the passed-in value in favor of computing it
      directly.  */
-  const char *inferior_io_terminal = get_inferior_io_terminal ();
+  const char *inferior_tty = current_inferior ()->tty ();
 
-  if (inferior_io_terminal == NULL)
-    inferior_io_terminal = "";
+  if (inferior_tty == nullptr)
+    inferior_tty = "";
   fprintf_filtered (gdb_stdout,
 		    _("Terminal for future runs of program being debugged "
-		      "is \"%s\".\n"), inferior_io_terminal);
+		      "is \"%s\".\n"), inferior_tty);
 }
 
 const char *
@@ -150,12 +130,10 @@ get_inferior_args (void)
 {
   if (current_inferior ()->argc != 0)
     {
-      char *n;
-
-      n = construct_inferior_arguments (current_inferior ()->argc,
-					current_inferior ()->argv);
-      set_inferior_args (n);
-      xfree (n);
+      gdb::array_view<char * const> args (current_inferior ()->argv,
+                                          current_inferior ()->argc);
+      std::string n = construct_inferior_arguments (args);
+      set_inferior_args (n.c_str ());
     }
 
   if (current_inferior ()->args == NULL)
@@ -258,125 +236,6 @@ server's cwd if remote debugging.\n"));
 			"when starting the inferior is \"%s\".\n"), cwd);
 }
 
-
-/* Compute command-line string given argument vector.  This does the
-   same shell processing as fork_inferior.  */
-
-char *
-construct_inferior_arguments (int argc, char **argv)
-{
-  char *result;
-
-  if (startup_with_shell)
-    {
-#ifdef __MINGW32__
-      /* This holds all the characters considered special to the
-	 Windows shells.  */
-      static const char special[] = "\"!&*|[]{}<>?`~^=;, \t\n";
-      static const char quote = '"';
-#else
-      /* This holds all the characters considered special to the
-	 typical Unix shells.  We include `^' because the SunOS
-	 /bin/sh treats it as a synonym for `|'.  */
-      static const char special[] = "\"!#$&*()\\|[]{}<>?'`~^; \t\n";
-      static const char quote = '\'';
-#endif
-      int i;
-      int length = 0;
-      char *out, *cp;
-
-      /* We over-compute the size.  It shouldn't matter.  */
-      for (i = 0; i < argc; ++i)
-	length += 3 * strlen (argv[i]) + 1 + 2 * (argv[i][0] == '\0');
-
-      result = (char *) xmalloc (length);
-      out = result;
-
-      for (i = 0; i < argc; ++i)
-	{
-	  if (i > 0)
-	    *out++ = ' ';
-
-	  /* Need to handle empty arguments specially.  */
-	  if (argv[i][0] == '\0')
-	    {
-	      *out++ = quote;
-	      *out++ = quote;
-	    }
-	  else
-	    {
-#ifdef __MINGW32__
-	      int quoted = 0;
-
-	      if (strpbrk (argv[i], special))
-		{
-		  quoted = 1;
-		  *out++ = quote;
-		}
-#endif
-	      for (cp = argv[i]; *cp; ++cp)
-		{
-		  if (*cp == '\n')
-		    {
-		      /* A newline cannot be quoted with a backslash (it
-			 just disappears), only by putting it inside
-			 quotes.  */
-		      *out++ = quote;
-		      *out++ = '\n';
-		      *out++ = quote;
-		    }
-		  else
-		    {
-#ifdef __MINGW32__
-		      if (*cp == quote)
-#else
-		      if (strchr (special, *cp) != NULL)
-#endif
-			*out++ = '\\';
-		      *out++ = *cp;
-		    }
-		}
-#ifdef __MINGW32__
-	      if (quoted)
-		*out++ = quote;
-#endif
-	    }
-	}
-      *out = '\0';
-    }
-  else
-    {
-      /* In this case we can't handle arguments that contain spaces,
-	 tabs, or newlines -- see breakup_args().  */
-      int i;
-      int length = 0;
-
-      for (i = 0; i < argc; ++i)
-	{
-	  char *cp = strchr (argv[i], ' ');
-	  if (cp == NULL)
-	    cp = strchr (argv[i], '\t');
-	  if (cp == NULL)
-	    cp = strchr (argv[i], '\n');
-	  if (cp != NULL)
-	    error (_("can't handle command-line "
-		     "argument containing whitespace"));
-	  length += strlen (argv[i]) + 1;
-	}
-
-      result = (char *) xmalloc (length);
-      result[0] = '\0';
-      for (i = 0; i < argc; ++i)
-	{
-	  if (i > 0)
-	    strcat (result, " ");
-	  strcat (result, argv[i]);
-	}
-    }
-
-  return result;
-}
-
 
 /* This function strips the '&' character (indicating background
    execution) that is added as *the last* of the arguments ARGS of a
@@ -440,7 +299,8 @@ post_create_inferior (struct target_ops
   thr->suspend.stop_pc = 0;
   try
     {
-      thr->suspend.stop_pc = regcache_read_pc (get_current_regcache ());
+      regcache *rc = get_thread_regcache (thr);
+      thr->suspend.stop_pc = regcache_read_pc (rc);
     }
   catch (const gdb_exception_error &ex)
     {
@@ -644,10 +504,19 @@ run_command_1 (const char *args, int fro
      events --- the frontend shouldn't see them as stopped.  In
      all-stop, always finish the state of all threads, as we may be
      resuming more than just the new process.  */
-  ptid_t finish_ptid = (non_stop
-			? ptid_t (current_inferior ()->pid)
-			: minus_one_ptid);
-  scoped_finish_thread_state finish_state (finish_ptid);
+  process_stratum_target *finish_target;
+  ptid_t finish_ptid;
+  if (non_stop)
+    {
+      finish_target = current_inferior ()->process_target ();
+      finish_ptid = ptid_t (current_inferior ()->pid);
+    }
+  else
+    {
+      finish_target = nullptr;
+      finish_ptid = minus_one_ptid;
+    }
+  scoped_finish_thread_state finish_state (finish_target, finish_ptid);
 
   /* Pass zero for FROM_TTY, because at this point the "run" command
      has done its thing; now we are setting up the running program.  */
@@ -717,6 +586,9 @@ proceed_thread_callback (struct thread_i
   if (thread->state != THREAD_STOPPED)
     return 0;
 
+  if (!thread->inf->has_execution ())
+    return 0;
+
   switch_to_thread (thread);
   clear_proceed_status (0);
   proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT);
@@ -810,7 +682,7 @@ static void
 continue_command (const char *args, int from_tty)
 {
   int async_exec;
-  int all_threads = 0;
+  bool all_threads_p = false;
 
   ERROR_NO_INFERIOR;
 
@@ -822,17 +694,17 @@ continue_command (const char *args, int
     {
       if (startswith (args, "-a"))
 	{
-	  all_threads = 1;
+	  all_threads_p = true;
 	  args += sizeof ("-a") - 1;
 	  if (*args == '\0')
 	    args = NULL;
 	}
     }
 
-  if (!non_stop && all_threads)
+  if (!non_stop && all_threads_p)
     error (_("`-a' is meaningless in all-stop mode."));
 
-  if (args != NULL && all_threads)
+  if (args != NULL && all_threads_p)
     error (_("Can't resume all threads and specify "
 	     "proceed count simultaneously."));
 
@@ -849,11 +721,11 @@ continue_command (const char *args, int
 	tp = inferior_thread ();
       else
 	{
+	  process_stratum_target *last_target;
 	  ptid_t last_ptid;
-	  struct target_waitstatus ws;
 
-	  get_last_target_status (&last_ptid, &ws);
-	  tp = find_thread_ptid (last_ptid);
+	  get_last_target_status (&last_target, &last_ptid, nullptr);
+	  tp = find_thread_ptid (last_target, last_ptid);
 	}
       if (tp != NULL)
 	bs = tp->control.stop_bpstat;
@@ -881,7 +753,7 @@ continue_command (const char *args, int
   ERROR_NO_INFERIOR;
   ensure_not_tfind_mode ();
 
-  if (!non_stop || !all_threads)
+  if (!non_stop || !all_threads_p)
     {
       ensure_valid_thread ();
       ensure_not_running ();
@@ -892,21 +764,24 @@ continue_command (const char *args, int
   if (from_tty)
     printf_filtered (_("Continuing.\n"));
 
-  continue_1 (all_threads);
+  continue_1 (all_threads_p);
 }
 
-/* Record the starting point of a "step" or "next" command.  */
+/* Record in TP the starting point of a "step" or "next" command.  */
 
 static void
-set_step_frame (void)
+set_step_frame (thread_info *tp)
 {
+  /* This can be removed once this function no longer implicitly relies on the
+     inferior_ptid value.  */
+  gdb_assert (inferior_ptid == tp->ptid);
+
   frame_info *frame = get_current_frame ();
 
   symtab_and_line sal = find_frame_sal (frame);
-  set_step_info (frame, sal);
+  set_step_info (tp, frame, sal);
 
   CORE_ADDR pc = get_frame_pc (frame);
-  thread_info *tp = inferior_thread ();
   tp->control.step_start_function = find_pc_function (pc);
 }
 
@@ -983,7 +858,7 @@ step_command_fsm_prepare (struct step_co
   thread->control.stepping_command = 1;
 }
 
-static int prepare_one_step (struct step_command_fsm *sm);
+static int prepare_one_step (thread_info *, struct step_command_fsm *sm);
 
 static void
 step_1 (int skip_subroutines, int single_inst, const char *count_string)
@@ -1021,7 +896,7 @@ step_1 (int skip_subroutines, int single
      loop.  Let the continuation figure out how many other steps we
      need to do, and handle them one at the time, through
      step_once.  */
-  if (!prepare_one_step (step_sm))
+  if (!prepare_one_step (thr, step_sm))
     proceed ((CORE_ADDR) -1, GDB_SIGNAL_DEFAULT);
   else
     {
@@ -1032,7 +907,7 @@ step_1 (int skip_subroutines, int single
       thr->thread_fsm->clean_up (thr);
       proceeded = normal_stop ();
       if (!proceeded)
-	inferior_event_handler (INF_EXEC_COMPLETE, NULL);
+	inferior_event_handler (INF_EXEC_COMPLETE);
       all_uis_check_sync_execution_done ();
     }
 }
@@ -1051,7 +926,7 @@ step_command_fsm::should_stop (struct th
       /* There are more steps to make, and we did stop due to
 	 ending a stepping range.  Do another step.  */
       if (--count > 0)
-	return prepare_one_step (this);
+	return prepare_one_step (tp, this);
 
       set_finished ();
     }
@@ -1083,19 +958,17 @@ step_command_fsm::do_async_reply_reason
    resumed.  */
 
 static int
-prepare_one_step (struct step_command_fsm *sm)
+prepare_one_step (thread_info *tp, struct step_command_fsm *sm)
 {
+  /* This can be removed once this function no longer implicitly relies on the
+     inferior_ptid value.  */
+  gdb_assert (inferior_ptid == tp->ptid);
+
   if (sm->count > 0)
     {
       struct frame_info *frame = get_current_frame ();
 
-      /* Don't assume THREAD is a valid thread id.  It is set to -1 if
-	 the longjmp breakpoint was not required.  Use the
-	 INFERIOR_PTID thread instead, which is the same thread when
-	 THREAD is set.  */
-      struct thread_info *tp = inferior_thread ();
-
-      set_step_frame ();
+      set_step_frame (tp);
 
       if (!sm->single_inst)
 	{
@@ -1106,14 +979,29 @@ prepare_one_step (struct step_command_fs
 	      && inline_skipped_frames (tp))
 	    {
 	      ptid_t resume_ptid;
+	      const char *fn = NULL;
+	      symtab_and_line sal;
+	      struct symbol *sym;
 
 	      /* Pretend that we've ran.  */
 	      resume_ptid = user_visible_resume_ptid (1);
-	      set_running (resume_ptid, 1);
+	      set_running (tp->inf->process_target (), resume_ptid, true);
 
 	      step_into_inline_frame (tp);
-	      sm->count--;
-	      return prepare_one_step (sm);
+
+	      frame = get_current_frame ();
+	      sal = find_frame_sal (frame);
+	      sym = get_frame_function (frame);
+
+	      if (sym != NULL)
+		fn = sym->print_name ();
+
+	      if (sal.line == 0
+		  || !function_name_is_marked_for_skip (fn, sal))
+		{
+		  sm->count--;
+		  return prepare_one_step (tp, sm);
+		}
 	    }
 
 	  pc = get_frame_pc (frame);
@@ -1301,10 +1189,14 @@ signal_command (const char *signum_exp,
       /* This indicates what will be resumed.  Either a single thread,
 	 a whole process, or all threads of all processes.  */
       ptid_t resume_ptid = user_visible_resume_ptid (0);
+      process_stratum_target *resume_target
+	= user_visible_resume_target (resume_ptid);
+
+      thread_info *current = inferior_thread ();
 
-      for (thread_info *tp : all_non_exited_threads (resume_ptid))
+      for (thread_info *tp : all_non_exited_threads (resume_target, resume_ptid))
 	{
-	  if (tp->ptid == inferior_ptid)
+	  if (tp == current)
 	    continue;
 
 	  if (tp->suspend.stop_signal != GDB_SIGNAL_0
@@ -1450,7 +1342,7 @@ until_next_command (int from_tty)
   struct until_next_fsm *sm;
 
   clear_proceed_status (0);
-  set_step_frame ();
+  set_step_frame (tp);
 
   frame = get_current_frame ();
 
@@ -1550,7 +1442,7 @@ get_return_value (struct value *function
   struct value *value;
 
   value_type = check_typedef (value_type);
-  gdb_assert (TYPE_CODE (value_type) != TYPE_CODE_VOID);
+  gdb_assert (value_type->code () != TYPE_CODE_VOID);
 
   /* FIXME: 2003-09-27: When returning from a nested inferior function
      call, it's possible (with no help from the architecture vector)
@@ -1641,7 +1533,7 @@ void
 print_return_value (struct ui_out *uiout, struct return_value_info *rv)
 {
   if (rv->type == NULL
-      || TYPE_CODE (check_typedef (rv->type)) == TYPE_CODE_VOID)
+      || check_typedef (rv->type)->code () == TYPE_CODE_VOID)
     return;
 
   try
@@ -1705,7 +1597,7 @@ finish_command_fsm::should_stop (struct
 	internal_error (__FILE__, __LINE__,
 			_("finish_command: function has no target type"));
 
-      if (TYPE_CODE (check_typedef (rv->type)) != TYPE_CODE_VOID)
+      if (check_typedef (rv->type)->code () != TYPE_CODE_VOID)
 	{
 	  struct value *func;
 
@@ -1907,7 +1799,7 @@ finish_command (const char *arg, int fro
 	 called by that frame.  We don't use the magic "1" value for
 	 step_range_end, because then infrun will think this is nexti,
 	 and not step over the rest of this inlined function call.  */
-      set_step_info (frame, {});
+      set_step_info (tp, frame, {});
       tp->control.step_range_start = get_frame_pc (frame);
       tp->control.step_range_end = tp->control.step_range_start;
       tp->control.step_over_calls = STEP_OVER_ALL;
@@ -1967,6 +1859,7 @@ info_program_command (const char *args,
   bpstat bs;
   int num, stat;
   ptid_t ptid;
+  process_stratum_target *proc_target;
 
   if (!target_has_execution)
     {
@@ -1975,18 +1868,17 @@ info_program_command (const char *args,
     }
 
   if (non_stop)
-    ptid = inferior_ptid;
-  else
     {
-      struct target_waitstatus ws;
-
-      get_last_target_status (&ptid, &ws);
+      ptid = inferior_ptid;
+      proc_target = current_inferior ()->process_target ();
     }
+  else
+    get_last_target_status (&proc_target, &ptid, nullptr);
 
   if (ptid == null_ptid || ptid == minus_one_ptid)
     error (_("No selected thread."));
 
-  thread_info *tp = find_thread_ptid (ptid);
+  thread_info *tp = find_thread_ptid (proc_target, ptid);
 
   if (tp->state == THREAD_EXITED)
     error (_("Invalid selected thread."));
@@ -2211,8 +2103,8 @@ default_print_one_register_info (struct
 
   /* If virtual format is floating, print it that way, and in raw
      hex.  */
-  if (TYPE_CODE (regtype) == TYPE_CODE_FLT
-      || TYPE_CODE (regtype) == TYPE_CODE_DECFLOAT)
+  if (regtype->code () == TYPE_CODE_FLT
+      || regtype->code () == TYPE_CODE_DECFLOAT)
     {
       struct value_print_options opts;
       const gdb_byte *valaddr = value_contents_for_printing (val);
@@ -2221,9 +2113,7 @@ default_print_one_register_info (struct
       get_user_print_options (&opts);
       opts.deref_ref = 1;
 
-      val_print (regtype,
-		 value_embedded_offset (val), 0,
-		 &format_stream, 0, val, &opts, current_language);
+      common_val_print (val, &format_stream, 0, &opts, current_language);
 
       if (print_raw_format)
 	{
@@ -2241,9 +2131,7 @@ default_print_one_register_info (struct
       /* Print the register in hex.  */
       get_formatted_print_options (&opts, 'x');
       opts.deref_ref = 1;
-      val_print (regtype,
-		 value_embedded_offset (val), 0,
-		 &format_stream, 0, val, &opts, current_language);
+      common_val_print (val, &format_stream, 0, &opts, current_language);
       /* If not a vector register, print it also according to its
 	 natural format.  */
       if (print_raw_format && TYPE_VECTOR (regtype) == 0)
@@ -2251,9 +2139,7 @@ default_print_one_register_info (struct
 	  pad_to_column (format_stream, value_column_2);
 	  get_user_print_options (&opts);
 	  opts.deref_ref = 1;
-	  val_print (regtype,
-		     value_embedded_offset (val), 0,
-		     &format_stream, 0, val, &opts, current_language);
+	  common_val_print (val, &format_stream, 0, &opts, current_language);
 	}
     }
 
@@ -2495,20 +2381,6 @@ kill_command (const char *arg, int from_
     printf_unfiltered (_("[Inferior %d (%s) killed]\n"),
 		       infnum, pid_str.c_str ());
 
-  /* If we still have other inferiors to debug, then don't mess with
-     with their threads.  */
-  if (!have_inferiors ())
-    {
-      init_thread_list ();		/* Destroy thread info.  */
-
-      /* Killing off the inferior can leave us with a core file.  If
-	 so, print the state we are left in.  */
-      if (target_has_stack)
-	{
-	  printf_filtered (_("In %s,\n"), target_longname);
-	  print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
-	}
-    }
   bfd_cache_close_all ();
 }
 
@@ -2766,6 +2638,9 @@ attach_command (const char *args, int fr
 	target_stop (ptid_t (inferior_ptid.pid ()));
     }
 
+  /* Check for exec file mismatch, and let the user solve it.  */
+  validate_exec_file (from_tty);
+
   mode = async_exec ? ATTACH_POST_WAIT_RESUME : ATTACH_POST_WAIT_STOP;
 
   /* Some system don't generate traps when attaching to inferior.
@@ -2789,12 +2664,16 @@ attach_command (const char *args, int fr
       add_inferior_continuation (attach_command_continuation, a,
 				 attach_command_continuation_free_args);
 
+      /* Let infrun consider waiting for events out of this
+	 target.  */
+      inferior->process_target ()->threads_executing = true;
+
       if (!target_is_async_p ())
 	mark_infrun_async_event_handler ();
       return;
     }
-
-  attach_post_wait (args, from_tty, mode);
+  else
+    attach_post_wait (args, from_tty, mode);
 }
 
 /* We had just found out that the target was already attached to an
@@ -2911,20 +2790,15 @@ disconnect_command (const char *args, in
     deprecated_detach_hook ();
 }
 
-void 
-interrupt_target_1 (int all_threads)
-{
-  ptid_t ptid;
-
-  if (all_threads)
-    ptid = minus_one_ptid;
-  else
-    ptid = inferior_ptid;
+/* Stop PTID in the current target, and tag the PTID threads as having
+   been explicitly requested to stop.  PTID can be a thread, a
+   process, or minus_one_ptid, meaning all threads of all inferiors of
+   the current target.  */
 
-  if (non_stop)
-    target_stop (ptid);
-  else
-    target_interrupt ();
+static void
+stop_current_target_threads_ns (ptid_t ptid)
+{
+  target_stop (ptid);
 
   /* Tag the thread as having been explicitly requested to stop, so
      other parts of gdb know not to resume this thread automatically,
@@ -2932,8 +2806,32 @@ interrupt_target_1 (int all_threads)
      non-stop mode, as when debugging a multi-threaded application in
      all-stop mode, we will only get one stop event --- it's undefined
      which thread will report the event.  */
+  set_stop_requested (current_inferior ()->process_target (),
+		      ptid, 1);
+}
+
+/* See inferior.h.  */
+
+void
+interrupt_target_1 (bool all_threads)
+{
   if (non_stop)
-    set_stop_requested (ptid, 1);
+    {
+      if (all_threads)
+	{
+	  scoped_restore_current_thread restore_thread;
+
+	  for (inferior *inf : all_inferiors ())
+	    {
+	      switch_to_inferior_no_thread (inf);
+	      stop_current_target_threads_ns (minus_one_ptid);
+	    }
+	}
+      else
+	stop_current_target_threads_ns (inferior_ptid);
+    }
+  else
+    target_interrupt ();
 }
 
 /* interrupt [-a]
@@ -2996,14 +2894,6 @@ info_float_command (const char *args, in
   gdbarch_print_float_info (get_frame_arch (frame), gdb_stdout, frame, args);
 }
 
-static void
-unset_command (const char *args, int from_tty)
-{
-  printf_filtered (_("\"unset\" must be followed by the "
-		     "name of an unset subcommand.\n"));
-  help_list (unsetlist, "unset ", all_commands, gdb_stdout);
-}
-
 /* Implement `info proc' family of commands.  */
 
 static void
@@ -3121,8 +3011,9 @@ use \"set args\" without arguments.\n\
 \n\
 To start the inferior without using a shell, use \"set startup-with-shell off\"."
 
+void _initialize_infcmd ();
 void
-_initialize_infcmd (void)
+_initialize_infcmd ()
 {
   static struct cmd_list_element *info_proc_cmdlist;
   struct cmd_list_element *c = NULL;
@@ -3140,9 +3031,9 @@ is restored."),
 				     show_inferior_tty_command,
 				     &setlist, &showlist);
   cmd_name = "inferior-tty";
-  c = lookup_cmd (&cmd_name, setlist, "", -1, 1);
+  c = lookup_cmd (&cmd_name, setlist, "", NULL, -1, 1);
   gdb_assert (c != NULL);
-  add_alias_cmd ("tty", c, class_alias, 0, &cmdlist);
+  add_alias_cmd ("tty", c, class_run, 0, &cmdlist);
 
   cmd_name = "args";
   add_setshow_string_noescape_cmd (cmd_name, class_run,
@@ -3153,7 +3044,7 @@ Follow this command with any number of a
 				   set_args_command,
 				   show_args_command,
 				   &setlist, &showlist);
-  c = lookup_cmd (&cmd_name, setlist, "", -1, 1);
+  c = lookup_cmd (&cmd_name, setlist, "", NULL, -1, 1);
   gdb_assert (c != NULL);
   set_cmd_completer (c, filename_completer);
 
@@ -3172,7 +3063,7 @@ working directory."),
 				   set_cwd_command,
 				   show_cwd_command,
 				   &setlist, &showlist);
-  c = lookup_cmd (&cmd_name, setlist, "", -1, 1);
+  c = lookup_cmd (&cmd_name, setlist, "", NULL, -1, 1);
   gdb_assert (c != NULL);
   set_cmd_completer (c, filename_completer);
 
@@ -3183,9 +3074,9 @@ give the program being debugged.  With n
 environment to be given to the program."), &showlist);
   set_cmd_completer (c, noop_completer);
 
-  add_prefix_cmd ("unset", no_class, unset_command,
-		  _("Complement to certain \"set\" commands."),
-		  &unsetlist, "unset ", 0, &cmdlist);
+  add_basic_prefix_cmd ("unset", no_class,
+			_("Complement to certain \"set\" commands."),
+			&unsetlist, "unset ", 0, &cmdlist);
 
   c = add_cmd ("environment", class_run, unset_environment_command, _("\
 Cancel environment variable VAR for the program.\n\
@@ -3280,14 +3171,14 @@ Step one instruction exactly.\n\
 Usage: stepi [N]\n\
 Argument N means step N times (or till program stops for another \
 reason)."));
-  add_com_alias ("si", "stepi", class_alias, 0);
+  add_com_alias ("si", "stepi", class_run, 0);
 
   add_com ("nexti", class_run, nexti_command, _("\
 Step one instruction, but proceed through subroutine calls.\n\
 Usage: nexti [N]\n\
 Argument N means step N times (or till program stops for another \
 reason)."));
-  add_com_alias ("ni", "nexti", class_alias, 0);
+  add_com_alias ("ni", "nexti", class_run, 0);
 
   add_com ("finish", class_run, finish_command, _("\
 Execute until selected stack frame returns.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inferior.c ./gdb/inferior.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inferior.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inferior.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Multi-process control for GDB, the GNU debugger.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -79,7 +79,6 @@ inferior::~inferior ()
   discard_all_inferior_continuations (inf);
   inferior_free_data (inf);
   xfree (inf->args);
-  xfree (inf->terminal);
   target_desc_info_free (inf->tdesc_info);
 }
 
@@ -90,6 +89,23 @@ inferior::inferior (int pid_)
     registry_data ()
 {
   inferior_alloc_data (this);
+
+  m_target_stack.push (get_dummy_target ());
+}
+
+void
+inferior::set_tty (const char *terminal_name)
+{
+  if (terminal_name != nullptr && *terminal_name != '\0')
+    m_terminal = make_unique_xstrdup (terminal_name);
+  else
+    m_terminal = NULL;
+}
+
+const char *
+inferior::tty ()
+{
+  return m_terminal.get ();
 }
 
 struct inferior *
@@ -160,7 +176,7 @@ delete_inferior (struct inferior *todel)
 
   /* If this program space is rendered useless, remove it. */
   if (program_space_empty_p (inf->pspace))
-    delete_program_space (inf->pspace);
+    delete inf->pspace;
 
   delete inf;
 }
@@ -247,6 +263,7 @@ inferior_appeared (struct inferior *inf,
 {
   /* If this is the first inferior with threads, reset the global
      thread id.  */
+  delete_exited_threads ();
   if (!any_thread_p ())
     init_thread_list ();
 
@@ -257,13 +274,6 @@ inferior_appeared (struct inferior *inf,
   gdb::observers::inferior_appeared.notify (inf);
 }
 
-void
-discard_all_inferiors (void)
-{
-  for (inferior *inf : all_non_exited_inferiors ())
-    exit_inferior_silent (inf);
-}
-
 struct inferior *
 find_inferior_id (int num)
 {
@@ -275,14 +285,14 @@ find_inferior_id (int num)
 }
 
 struct inferior *
-find_inferior_pid (int pid)
+find_inferior_pid (process_stratum_target *targ, int pid)
 {
   /* Looking for inferior pid == 0 is always wrong, and indicative of
      a bug somewhere else.  There may be more than one with pid == 0,
      for instance.  */
   gdb_assert (pid != 0);
 
-  for (inferior *inf : all_inferiors ())
+  for (inferior *inf : all_inferiors (targ))
     if (inf->pid == pid)
       return inf;
 
@@ -292,9 +302,9 @@ find_inferior_pid (int pid)
 /* See inferior.h */
 
 struct inferior *
-find_inferior_ptid (ptid_t ptid)
+find_inferior_ptid (process_stratum_target *targ, ptid_t ptid)
 {
-  return find_inferior_pid (ptid.pid ());
+  return find_inferior_pid (targ, ptid.pid ());
 }
 
 /* See inferior.h.  */
@@ -314,17 +324,6 @@ find_inferior_for_program_space (struct
   return NULL;
 }
 
-struct inferior *
-iterate_over_inferiors (int (*callback) (struct inferior *, void *),
-			void *data)
-{
-  for (inferior *inf : all_inferiors_safe ())
-    if ((*callback) (inf, data))
-      return inf;
-
-  return NULL;
-}
-
 int
 have_inferiors (void)
 {
@@ -339,12 +338,12 @@ have_inferiors (void)
    in the middle of a 'mourn' operation.  */
 
 int
-number_of_live_inferiors (void)
+number_of_live_inferiors (process_stratum_target *proc_target)
 {
   int num_inf = 0;
 
-  for (inferior *inf : all_non_exited_inferiors ())
-    if (target_has_execution_1 (ptid_t (inf->pid)))
+  for (inferior *inf : all_non_exited_inferiors (proc_target))
+    if (inf->has_execution ())
       for (thread_info *tp ATTRIBUTE_UNUSED : inf->non_exited_threads ())
 	{
 	  /* Found a live thread in this inferior, go to the next
@@ -361,7 +360,7 @@ number_of_live_inferiors (void)
 int
 have_live_inferiors (void)
 {
-  return number_of_live_inferiors () > 0;
+  return number_of_live_inferiors (NULL) > 0;
 }
 
 /* Prune away any unused inferiors, and then prune away no longer used
@@ -425,6 +424,31 @@ print_selected_inferior (struct ui_out *
 		  inf->num, inferior_pid_to_str (inf->pid).c_str (), filename);
 }
 
+/* Helper for print_inferior.  Returns the 'connection-id' string for
+   PROC_TARGET.  */
+
+static std::string
+uiout_field_connection (process_stratum_target *proc_target)
+{
+  if (proc_target == NULL)
+    {
+      return {};
+    }
+  else if (proc_target->connection_string () != NULL)
+    {
+      return string_printf ("%d (%s %s)",
+			    proc_target->connection_number,
+			    proc_target->shortname (),
+			    proc_target->connection_string ());
+    }
+  else
+    {
+      return string_printf ("%d (%s)",
+			    proc_target->connection_number,
+			    proc_target->shortname ());
+    }
+}
+
 /* Prints the list of inferiors and their details on UIOUT.  This is a
    version of 'info_inferior_command' suitable for use from MI.
 
@@ -436,6 +460,7 @@ static void
 print_inferior (struct ui_out *uiout, const char *requested_inferiors)
 {
   int inf_count = 0;
+  size_t connection_id_len = 20;
 
   /* Compute number of inferiors we will print.  */
   for (inferior *inf : all_inferiors ())
@@ -443,6 +468,10 @@ print_inferior (struct ui_out *uiout, co
       if (!number_is_in_list (requested_inferiors, inf->num))
 	continue;
 
+      std::string conn = uiout_field_connection (inf->process_target ());
+      if (connection_id_len < conn.size ())
+	connection_id_len = conn.size ();
+
       ++inf_count;
     }
 
@@ -452,13 +481,20 @@ print_inferior (struct ui_out *uiout, co
       return;
     }
 
-  ui_out_emit_table table_emitter (uiout, 4, inf_count, "inferiors");
+  ui_out_emit_table table_emitter (uiout, 5, inf_count, "inferiors");
   uiout->table_header (1, ui_left, "current", "");
   uiout->table_header (4, ui_left, "number", "Num");
   uiout->table_header (17, ui_left, "target-id", "Description");
+  uiout->table_header (connection_id_len, ui_left,
+		       "connection-id", "Connection");
   uiout->table_header (17, ui_left, "exec", "Executable");
 
   uiout->table_body ();
+
+  /* Restore the current thread after the loop because we switch the
+     inferior in the loop.  */
+  scoped_restore_current_pspace_and_thread restore_pspace_thread;
+  inferior *current_inf = current_inferior ();
   for (inferior *inf : all_inferiors ())
     {
       if (!number_is_in_list (requested_inferiors, inf->num))
@@ -466,15 +502,22 @@ print_inferior (struct ui_out *uiout, co
 
       ui_out_emit_tuple tuple_emitter (uiout, NULL);
 
-      if (inf == current_inferior ())
+      if (inf == current_inf)
 	uiout->field_string ("current", "*");
       else
 	uiout->field_skip ("current");
 
       uiout->field_signed ("number", inf->num);
 
+      /* Because target_pid_to_str uses current_top_target,
+	 switch the inferior.  */
+      switch_to_inferior_no_thread (inf);
+
       uiout->field_string ("target-id", inferior_pid_to_str (inf->pid));
 
+      std::string conn = uiout_field_connection (inf->process_target ());
+      uiout->field_string ("connection-id", conn.c_str ());
+
       if (inf->pspace->pspace_exec_filename != NULL)
 	uiout->field_string ("exec", inf->pspace->pspace_exec_filename);
       else
@@ -574,6 +617,16 @@ kill_inferior_command (const char *args,
   bfd_cache_close_all ();
 }
 
+/* See inferior.h.  */
+
+void
+switch_to_inferior_no_thread (inferior *inf)
+{
+  set_current_inferior (inf);
+  switch_to_no_thread ();
+  set_current_program_space (inf->pspace);
+}
+
 static void
 inferior_command (const char *args, int from_tty)
 {
@@ -604,9 +657,7 @@ inferior_command (const char *args, int
     }
   else
     {
-      set_current_inferior (inf);
-      switch_to_no_thread ();
-      set_current_program_space (inf->pspace);
+      switch_to_inferior_no_thread (inf);
 
       gdb::observers::user_selected_context_changed.notify
 	(USER_SELECTED_INFERIOR);
@@ -685,7 +736,41 @@ add_inferior_with_spaces (void)
   return inf;
 }
 
-/* add-inferior [-copies N] [-exec FILENAME]  */
+/* Switch to inferior NEW_INF, a new inferior, and unless
+   NO_CONNECTION is true, push the process_stratum_target of ORG_INF
+   to NEW_INF.  */
+
+static void
+switch_to_inferior_and_push_target (inferior *new_inf,
+				    bool no_connection, inferior *org_inf)
+{
+  process_stratum_target *proc_target = org_inf->process_target ();
+
+  /* Switch over temporarily, while reading executable and
+     symbols.  */
+  switch_to_inferior_no_thread (new_inf);
+
+  /* Reuse the target for new inferior.  */
+  if (!no_connection && proc_target != NULL)
+    {
+      push_target (proc_target);
+      if (proc_target->connection_string () != NULL)
+	printf_filtered (_("Added inferior %d on connection %d (%s %s)\n"),
+			 new_inf->num,
+			 proc_target->connection_number,
+			 proc_target->shortname (),
+			 proc_target->connection_string ());
+      else
+	printf_filtered (_("Added inferior %d on connection %d (%s)\n"),
+			 new_inf->num,
+			 proc_target->connection_number,
+			 proc_target->shortname ());
+    }
+  else
+    printf_filtered (_("Added inferior %d\n"), new_inf->num);
+}
+
+/* add-inferior [-copies N] [-exec FILENAME] [-no-connection] */
 
 static void
 add_inferior_command (const char *args, int from_tty)
@@ -693,6 +778,7 @@ add_inferior_command (const char *args,
   int i, copies = 1;
   gdb::unique_xmalloc_ptr<char> exec;
   symfile_add_flags add_flags = 0;
+  bool no_connection = false;
 
   if (from_tty)
     add_flags |= SYMFILE_VERBOSE;
@@ -712,6 +798,8 @@ add_inferior_command (const char *args,
 		    error (_("No argument to -copies"));
 		  copies = parse_and_eval_long (*argv);
 		}
+	      else if (strcmp (*argv, "-no-connection") == 0)
+		no_connection = true;
 	      else if (strcmp (*argv, "-exec") == 0)
 		{
 		  ++argv;
@@ -725,35 +813,32 @@ add_inferior_command (const char *args,
 	}
     }
 
+  inferior *orginf = current_inferior ();
+
   scoped_restore_current_pspace_and_thread restore_pspace_thread;
 
   for (i = 0; i < copies; ++i)
     {
-      struct inferior *inf = add_inferior_with_spaces ();
+      inferior *inf = add_inferior_with_spaces ();
 
-      printf_filtered (_("Added inferior %d\n"), inf->num);
+      switch_to_inferior_and_push_target (inf, no_connection, orginf);
 
       if (exec != NULL)
 	{
-	  /* Switch over temporarily, while reading executable and
-	     symbols.q.  */
-	  set_current_program_space (inf->pspace);
-	  set_current_inferior (inf);
-	  switch_to_no_thread ();
-
 	  exec_file_attach (exec.get (), from_tty);
 	  symbol_file_add_main (exec.get (), add_flags);
 	}
     }
 }
 
-/* clone-inferior [-copies N] [ID] */
+/* clone-inferior [-copies N] [ID] [-no-connection] */
 
 static void
 clone_inferior_command (const char *args, int from_tty)
 {
   int i, copies = 1;
   struct inferior *orginf = NULL;
+  bool no_connection = false;
 
   if (args)
     {
@@ -774,6 +859,8 @@ clone_inferior_command (const char *args
 		  if (copies < 0)
 		    error (_("Invalid copies number"));
 		}
+	      else if (strcmp (*argv, "-no-connection") == 0)
+		no_connection = true;
 	    }
 	  else
 	    {
@@ -819,15 +906,13 @@ clone_inferior_command (const char *args
       inf->aspace = pspace->aspace;
       inf->gdbarch = orginf->gdbarch;
 
+      switch_to_inferior_and_push_target (inf, no_connection, orginf);
+
       /* If the original inferior had a user specified target
 	 description, make the clone use it too.  */
       if (target_desc_info_from_user_p (inf->tdesc_info))
 	copy_inferior_target_desc_info (inf, orginf);
 
-      printf_filtered (_("Added inferior %d.\n"), inf->num);
-
-      set_current_inferior (inf);
-      switch_to_no_thread ();
       clone_program_space (pspace, orginf->pspace);
     }
 }
@@ -888,10 +973,13 @@ By default all inferiors are displayed."
 
   c = add_com ("add-inferior", no_class, add_inferior_command, _("\
 Add a new inferior.\n\
-Usage: add-inferior [-copies N] [-exec FILENAME]\n\
+Usage: add-inferior [-copies N] [-exec FILENAME] [-no-connection]\n\
 N is the optional number of inferiors to add, default is 1.\n\
 FILENAME is the file name of the executable to use\n\
-as main program."));
+as main program.\n\
+By default, the new inferior inherits the current inferior's connection.\n\
+If -no-connection is specified, the new inferior begins with\n\
+no target connection yet."));
   set_cmd_completer (c, filename_completer);
 
   add_com ("remove-inferiors", no_class, remove_inferior_command, _("\
@@ -900,11 +988,14 @@ Usage: remove-inferiors ID..."));
 
   add_com ("clone-inferior", no_class, clone_inferior_command, _("\
 Clone inferior ID.\n\
-Usage: clone-inferior [-copies N] [ID]\n\
-Add N copies of inferior ID.  The new inferior has the same\n\
+Usage: clone-inferior [-copies N] [-no-connection] [ID]\n\
+Add N copies of inferior ID.  The new inferiors have the same\n\
 executable loaded as the copied inferior.  If -copies is not specified,\n\
 adds 1 copy.  If ID is not specified, it is the current inferior\n\
-that is cloned."));
+that is cloned.\n\
+By default, the new inferiors inherit the copied inferior's connection.\n\
+If -no-connection is specified, the new inferiors begin with\n\
+no target connection yet."));
 
   add_cmd ("inferiors", class_run, detach_inferior_command, _("\
 Detach from inferior ID (or list of IDS).\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inferior.h ./gdb/inferior.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inferior.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inferior.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Variables that describe the inferior process running under GDB:
    Where it is, why it stopped, and how to step it.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,6 +21,8 @@
 #if !defined (INFERIOR_H)
 #define INFERIOR_H 1
 
+#include <exception>
+
 struct target_waitstatus;
 struct frame_info;
 struct ui_file;
@@ -52,10 +54,13 @@ struct thread_info;
 #include "symfile-add-flags.h"
 #include "gdbsupport/refcounted-object.h"
 #include "gdbsupport/forward-scope-exit.h"
+#include "gdbsupport/gdb_unique_ptr.h"
 
 #include "gdbsupport/common-inferior.h"
 #include "gdbthread.h"
 
+#include "process-stratum-target.h"
+
 struct infcall_suspend_state;
 struct infcall_control_state;
 
@@ -77,7 +82,13 @@ struct infcall_suspend_state_deleter
 	/* If we are restoring the inferior state due to an exception,
 	   some error message will be printed.  So, only warn the user
 	   when we cannot restore during normal execution.  */
-	if (!std::uncaught_exception ())
+	bool unwinding;
+#if __cpp_lib_uncaught_exceptions
+	unwinding = std::uncaught_exceptions () > 0;
+#else
+	unwinding = std::uncaught_exception ();
+#endif
+	if (!unwinding)
 	  warning (_("Failed to restore inferior state: %s"), e.what ());
       }
   }
@@ -115,11 +126,6 @@ extern void set_sigint_trap (void);
 
 extern void clear_sigint_trap (void);
 
-/* Set/get file name for default use for standard in/out in the inferior.  */
-
-extern void set_inferior_io_terminal (const char *terminal_name);
-extern const char *get_inferior_io_terminal (void);
-
 /* Collected pid, tid, etc. of the debugged inferior.  When there's
    no inferior, inferior_ptid.pid () will be 0.  */
 
@@ -182,8 +188,6 @@ extern void child_interrupt (struct targ
    STARTUP_INFERIOR.  */
 extern ptid_t gdb_startup_inferior (pid_t pid, int num_traps);
 
-extern char *construct_inferior_arguments (int, char **);
-
 /* From infcmd.c */
 
 /* Initial inferior setup.  Determines the exec file is not yet known,
@@ -206,7 +210,7 @@ extern void registers_info (const char *
 
 extern void continue_1 (int all_threads);
 
-extern void interrupt_target_1 (int all_threads);
+extern void interrupt_target_1 (bool all_threads);
 
 using delete_longjmp_breakpoint_cleanup
   = FORWARD_SCOPE_EXIT (delete_longjmp_breakpoint);
@@ -308,6 +312,10 @@ extern inferior *current_inferior ();
 
 extern void set_current_inferior (inferior *);
 
+/* Switch inferior (and program space) to INF, and switch to no thread
+   selected.  */
+extern void switch_to_inferior_no_thread (inferior *inf);
+
 /* GDB represents the state of each program execution with an object
    called an inferior.  An inferior typically corresponds to a process
    but is more general and applies also to targets that do not have a
@@ -339,6 +347,38 @@ public:
   /* Returns true if we can delete this inferior.  */
   bool deletable () const { return refcount () == 0; }
 
+  /* Push T in this inferior's target stack.  */
+  void push_target (struct target_ops *t)
+  { m_target_stack.push (t); }
+
+  /* Unpush T from this inferior's target stack.  */
+  int unpush_target (struct target_ops *t)
+  { return m_target_stack.unpush (t); }
+
+  /* Returns true if T is pushed in this inferior's target stack.  */
+  bool target_is_pushed (target_ops *t)
+  { return m_target_stack.is_pushed (t); }
+
+  /* Find the target beneath T in this inferior's target stack.  */
+  target_ops *find_target_beneath (const target_ops *t)
+  { return m_target_stack.find_beneath (t); }
+
+  /* Return the target at the top of this inferior's target stack.  */
+  target_ops *top_target ()
+  { return m_target_stack.top (); }
+
+  /* Return the target at process_stratum level in this inferior's
+     target stack.  */
+  struct process_stratum_target *process_target ()
+  { return (process_stratum_target *) m_target_stack.at (process_stratum); }
+
+  /* Return the target at STRATUM in this inferior's target stack.  */
+  target_ops *target_at (enum strata stratum)
+  { return m_target_stack.at (stratum); }
+
+  bool has_execution ()
+  { return target_has_execution_1 (this); }
+
   /* Pointer to next inferior in singly-linked list of inferiors.  */
   struct inferior *next = NULL;
 
@@ -374,6 +414,14 @@ public:
   inline safe_inf_threads_range threads_safe ()
   { return safe_inf_threads_range (this->thread_list); }
 
+  /* Set/get file name for default use for standard in/out in the
+     inferior.  On Unix systems, we try to make TERMINAL_NAME the
+     inferior's controlling terminal.  If TERMINAL_NAME is nullptr or
+     the empty string, then the inferior inherits GDB's terminal (or
+     GDBserver's if spawning a remote process).  */
+  void set_tty (const char *terminal_name);
+  const char *tty ();
+
   /* Convenient handle (GDB inferior id).  Unique across all
      inferiors.  */
   int num = 0;
@@ -419,9 +467,6 @@ public:
      this inferior.  */
   gdb::unique_xmalloc_ptr<char> cwd;
 
-  /* The name of terminal device to use for I/O.  */
-  char *terminal = NULL;
-
   /* The terminal state as set by the last target_terminal::terminal_*
      call.  */
   target_terminal_state terminal_state = target_terminal_state::is_ours;
@@ -500,6 +545,13 @@ public:
 
   /* Per inferior data-pointers required by other GDB modules.  */
   REGISTRY_FIELDS;
+
+private:
+  /* The inferior's target stack.  */
+  target_stack m_target_stack;
+
+  /* The name of terminal device to use for I/O.  */
+  gdb::unique_xmalloc_ptr<char> m_terminal;
 };
 
 /* Keep a registry of per-inferior data-pointers required by other GDB
@@ -530,14 +582,14 @@ extern void exit_inferior_num_silent (in
 
 extern void inferior_appeared (struct inferior *inf, int pid);
 
-/* Get rid of all inferiors.  */
-extern void discard_all_inferiors (void);
-
-/* Search function to lookup an inferior by target 'pid'.  */
-extern struct inferior *find_inferior_pid (int pid);
-
-/* Search function to lookup an inferior whose pid is equal to 'ptid.pid'. */
-extern struct inferior *find_inferior_ptid (ptid_t ptid);
+/* Search function to lookup an inferior of TARG by target 'pid'.  */
+extern struct inferior *find_inferior_pid (process_stratum_target *targ,
+					   int pid);
+
+/* Search function to lookup an inferior of TARG whose pid is equal to
+   'ptid.pid'. */
+extern struct inferior *find_inferior_ptid (process_stratum_target *targ,
+					    ptid_t ptid);
 
 /* Search function to lookup an inferior by GDB 'num'.  */
 extern struct inferior *find_inferior_id (int num);
@@ -547,25 +599,12 @@ extern struct inferior *find_inferior_id
 extern struct inferior *
   find_inferior_for_program_space (struct program_space *pspace);
 
-/* Inferior iterator function.
-
-   Calls a callback function once for each inferior, so long as the
-   callback function returns false.  If the callback function returns
-   true, the iteration will end and the current inferior will be
-   returned.  This can be useful for implementing a search for a
-   inferior with arbitrary attributes, or for applying some operation
-   to every inferior.
-
-   It is safe to delete the iterated inferior from the callback.  */
-extern struct inferior *iterate_over_inferiors (int (*) (struct inferior *,
-							 void *),
-						void *);
-
 /* Returns true if the inferior list is not empty.  */
 extern int have_inferiors (void);
 
-/* Returns the number of live inferiors (real live processes).  */
-extern int number_of_live_inferiors (void);
+/* Returns the number of live inferiors running on PROC_TARGET (real
+   live processes with execution).  */
+extern int number_of_live_inferiors (process_stratum_target *proc_target);
 
 /* Returns true if there are any live inferiors in the inferior list
    (not cores, not executables, real live processes).  */
@@ -622,18 +661,18 @@ all_inferiors_safe ()
 */
 
 inline all_inferiors_range
-all_inferiors ()
+all_inferiors (process_stratum_target *proc_target = nullptr)
 {
-  return {};
+  return all_inferiors_range (proc_target);
 }
 
 /* Return a range that can be used to walk over all inferiors with PID
    not zero, with range-for.  */
 
 inline all_non_exited_inferiors_range
-all_non_exited_inferiors ()
+all_non_exited_inferiors (process_stratum_target *proc_target = nullptr)
 {
-  return {};
+  return all_non_exited_inferiors_range (proc_target);
 }
 
 /* Prune away automatically added inferiors that aren't required
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inferior-iter.h ./gdb/inferior-iter.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inferior-iter.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inferior-iter.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Inferior iterators and ranges for GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -36,18 +36,23 @@ public:
   typedef int difference_type;
 
   /* Create an iterator pointing at HEAD.  */
-  explicit all_inferiors_iterator (inferior *head)
-    : m_inf (head)
-  {}
+  all_inferiors_iterator (process_stratum_target *proc_target, inferior *head)
+    : m_proc_target (proc_target)
+  {
+    /* Advance M_INF to the first inferior's position.  */
+    for (m_inf = head; m_inf != NULL; m_inf = m_inf->next)
+      if (m_inf_matches ())
+	return;
+  }
 
   /* Create a one-past-end iterator.  */
   all_inferiors_iterator ()
-    : m_inf (nullptr)
+    : m_proc_target (nullptr), m_inf (nullptr)
   {}
 
   all_inferiors_iterator &operator++ ()
   {
-    m_inf = m_inf->next;
+    advance ();
     return *this;
   }
 
@@ -58,6 +63,30 @@ public:
   { return m_inf != other.m_inf; }
 
 private:
+  /* Advance to next inferior, skipping filtered inferiors.  */
+  void advance ()
+  {
+    /* The loop below is written in the natural way as-if we'd always
+       start at the beginning of the inferior list.  This
+       fast-forwards the algorithm to the actual current position.  */
+    goto start;
+
+    while (m_inf != NULL)
+      {
+	if (m_inf_matches ())
+	  return;
+      start:
+	m_inf = m_inf->next;
+      }
+  }
+
+  bool m_inf_matches ()
+  {
+    return (m_proc_target == nullptr
+	    || m_proc_target == m_inf->process_target ());
+  }
+
+  process_stratum_target *m_proc_target;
   inferior *m_inf;
 };
 
@@ -80,10 +109,17 @@ using all_non_exited_inferiors_iterator
    inferiors with range-for.  */
 struct all_inferiors_range
 {
+  all_inferiors_range (process_stratum_target *proc_target = nullptr)
+    : m_filter_target (proc_target)
+  {}
+
   all_inferiors_iterator begin () const
-  { return all_inferiors_iterator (inferior_list); }
+  { return all_inferiors_iterator (m_filter_target, inferior_list); }
   all_inferiors_iterator end () const
   { return all_inferiors_iterator (); }
+
+private:
+  process_stratum_target *m_filter_target;
 };
 
 /* Iterate over all inferiors, safely.  */
@@ -97,10 +133,26 @@ using all_inferiors_safe_iterator
 
 struct all_inferiors_safe_range
 {
+  explicit all_inferiors_safe_range (process_stratum_target *filter_target)
+    : m_filter_target (filter_target)
+  {}
+
+  all_inferiors_safe_range ()
+    : m_filter_target (nullptr)
+  {}
+
   all_inferiors_safe_iterator begin () const
-  { return all_inferiors_safe_iterator (inferior_list); }
+  {
+    return (all_inferiors_safe_iterator
+	    (all_inferiors_iterator (m_filter_target, inferior_list)));
+  }
+
   all_inferiors_safe_iterator end () const
   { return all_inferiors_safe_iterator (); }
+
+private:
+  /* The filter.  */
+  process_stratum_target *m_filter_target;
 };
 
 /* A range adapter that makes it possible to iterate over all
@@ -108,10 +160,22 @@ struct all_inferiors_safe_range
 
 struct all_non_exited_inferiors_range
 {
+  explicit all_non_exited_inferiors_range (process_stratum_target *filter_target)
+    : m_filter_target (filter_target)
+  {}
+
+  all_non_exited_inferiors_range ()
+    : m_filter_target (nullptr)
+  {}
+
   all_non_exited_inferiors_iterator begin () const
-  { return all_non_exited_inferiors_iterator (inferior_list); }
+  { return all_non_exited_inferiors_iterator (m_filter_target, inferior_list); }
   all_non_exited_inferiors_iterator end () const
   { return all_non_exited_inferiors_iterator (); }
+
+private:
+  /* The filter.  */
+  process_stratum_target *m_filter_target;
 };
 
 #endif /* !defined (INFERIOR_ITER_H) */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-loop.c ./gdb/inf-loop.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-loop.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inf-loop.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Handling of inferior events for the event loop for GDB, the GNU debugger.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
    Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
 
    This file is part of GDB.
@@ -20,7 +20,7 @@
 #include "defs.h"
 #include "inferior.h"
 #include "infrun.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "event-top.h"
 #include "inf-loop.h"
 #include "remote.h"
@@ -34,13 +34,12 @@
 /* General function to handle events in the inferior.  */
 
 void
-inferior_event_handler (enum inferior_event_type event_type, 
-			gdb_client_data client_data)
+inferior_event_handler (enum inferior_event_type event_type)
 {
   switch (event_type)
     {
     case INF_REG_EVENT:
-      fetch_inferior_event (client_data);
+      fetch_inferior_event ();
       break;
 
     case INF_EXEC_COMPLETE:
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-loop.h ./gdb/inf-loop.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-loop.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inf-loop.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Interface to the inferior event handling code for GDB, the GNU debugger.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
    Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
 
    This file is part of GDB.
@@ -22,7 +22,6 @@
 
 #include "target.h"             /* For enum inferior_event_type.  */
 
-extern void inferior_event_handler (enum inferior_event_type event_type, 
-				    void* client_data);
+extern void inferior_event_handler (enum inferior_event_type event_type);
 
 #endif /* #ifndef INF_LOOP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inflow.c ./gdb/inflow.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inflow.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inflow.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Low level interface to ptrace, for GDB when running under Unix.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,7 +27,7 @@
 #include "observable.h"
 #include <signal.h>
 #include <fcntl.h>
-#include "gdb_select.h"
+#include "gdbsupport/gdb_select.h"
 
 #include "inflow.h"
 #include "gdbcmd.h"
@@ -953,8 +953,9 @@ initialize_stdin_serial (void)
   stdin_serial = serial_fdopen (0);
 }
 
+void _initialize_inflow ();
 void
-_initialize_inflow (void)
+_initialize_inflow ()
 {
   add_info ("terminal", info_terminal_command,
 	    _("Print inferior's saved terminal status."));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inflow.h ./gdb/inflow.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inflow.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inflow.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low level interface to ptrace, for GDB when running under Unix.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-ptrace.c ./gdb/inf-ptrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-ptrace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inf-ptrace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low-level child interface to ptrace.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -37,61 +37,21 @@
 
 
 
-/* A unique_ptr helper to unpush a target.  */
-
-struct target_unpusher
+static PTRACE_TYPE_RET
+gdb_ptrace (PTRACE_TYPE_ARG1 request, ptid_t ptid, PTRACE_TYPE_ARG3 addr,
+	    PTRACE_TYPE_ARG4 data)
 {
-  void operator() (struct target_ops *ops) const
-  {
-    unpush_target (ops);
-  }
-};
-
-/* A unique_ptr that unpushes a target on destruction.  */
-
-typedef std::unique_ptr<struct target_ops, target_unpusher> target_unpush_up;
-
-
+#ifdef __NetBSD__
+  return ptrace (request, ptid.pid (), addr, data);
+#else
+  pid_t pid = get_ptrace_pid (ptid);
+  return ptrace (request, pid, addr, data);
+#endif
+}
 
 inf_ptrace_target::~inf_ptrace_target ()
 {}
 
-#ifdef PT_GET_PROCESS_STATE
-
-/* Target hook for follow_fork.  On entry and at return inferior_ptid is
-   the ptid of the followed inferior.  */
-
-int
-inf_ptrace_target::follow_fork (int follow_child, int detach_fork)
-{
-  if (!follow_child)
-    {
-      struct thread_info *tp = inferior_thread ();
-      pid_t child_pid = tp->pending_follow.value.related_pid.pid ();
-
-      /* Breakpoints have already been detached from the child by
-	 infrun.c.  */
-
-      if (ptrace (PT_DETACH, child_pid, (PTRACE_TYPE_ARG3)1, 0) == -1)
-	perror_with_name (("ptrace"));
-    }
-
-  return 0;
-}
-
-int
-inf_ptrace_target::insert_fork_catchpoint (int pid)
-{
-  return 0;
-}
-
-int
-inf_ptrace_target::remove_fork_catchpoint (int pid)
-{
-  return 0;
-}
-
-#endif /* PT_GET_PROCESS_STATE */
 
 
 /* Prepare to be traced.  */
@@ -114,9 +74,6 @@ inf_ptrace_target::create_inferior (cons
 				    const std::string &allargs,
 				    char **env, int from_tty)
 {
-  pid_t pid;
-  ptid_t ptid;
-
   /* Do not change either targets above or the same target if already present.
      The reason is the target stack is shared across multiple inferiors.  */
   int ops_already_pushed = target_is_pushed (this);
@@ -129,14 +86,15 @@ inf_ptrace_target::create_inferior (cons
       unpusher.reset (this);
     }
 
-  pid = fork_inferior (exec_file, allargs, env, inf_ptrace_me, NULL,
-		       NULL, NULL, NULL);
+  pid_t pid = fork_inferior (exec_file, allargs, env, inf_ptrace_me, NULL,
+			     NULL, NULL, NULL);
 
-  ptid = ptid_t (pid);
+  ptid_t ptid (pid);
   /* We have something that executes now.  We'll be running through
      the shell at this point (if startup-with-shell is true), but the
      pid shouldn't change.  */
-  add_thread_silent (ptid);
+  thread_info *thr = add_thread_silent (this, ptid);
+  switch_to_thread (thr);
 
   unpusher.release ();
 
@@ -147,23 +105,6 @@ inf_ptrace_target::create_inferior (cons
   target_post_startup_inferior (ptid);
 }
 
-#ifdef PT_GET_PROCESS_STATE
-
-void
-inf_ptrace_target::post_startup_inferior (ptid_t pid)
-{
-  ptrace_event_t pe;
-
-  /* Set the initial event mask.  */
-  memset (&pe, 0, sizeof pe);
-  pe.pe_set_event |= PTRACE_FORK;
-  if (ptrace (PT_SET_EVENT_MASK, pid.pid (),
-	      (PTRACE_TYPE_ARG3)&pe, sizeof pe) == -1)
-    perror_with_name (("ptrace"));
-}
-
-#endif
-
 /* Clean up a rotting corpse of an inferior after it died.  */
 
 void
@@ -186,7 +127,6 @@ inf_ptrace_target::mourn_inferior ()
 void
 inf_ptrace_target::attach (const char *args, int from_tty)
 {
-  char *exec_file;
   pid_t pid;
   struct inferior *inf;
 
@@ -210,7 +150,7 @@ inf_ptrace_target::attach (const char *a
 
   if (from_tty)
     {
-      exec_file = get_exec_file (0);
+      const char *exec_file = get_exec_file (0);
 
       if (exec_file)
 	printf_unfiltered (_("Attaching to program: %s, %s\n"), exec_file,
@@ -232,35 +172,19 @@ inf_ptrace_target::attach (const char *a
   inf = current_inferior ();
   inferior_appeared (inf, pid);
   inf->attach_flag = 1;
-  inferior_ptid = ptid_t (pid);
 
   /* Always add a main thread.  If some target extends the ptrace
      target, it should decorate the ptid later with more info.  */
-  thread_info *thr = add_thread_silent (inferior_ptid);
+  thread_info *thr = add_thread_silent (this, ptid_t (pid));
+  switch_to_thread (thr);
+
   /* Don't consider the thread stopped until we've processed its
      initial SIGSTOP stop.  */
-  set_executing (thr->ptid, true);
+  set_executing (this, thr->ptid, true);
 
   unpusher.release ();
 }
 
-#ifdef PT_GET_PROCESS_STATE
-
-void
-inf_ptrace_target::post_attach (int pid)
-{
-  ptrace_event_t pe;
-
-  /* Set the initial event mask.  */
-  memset (&pe, 0, sizeof pe);
-  pe.pe_set_event |= PTRACE_FORK;
-  if (ptrace (PT_SET_EVENT_MASK, pid,
-	      (PTRACE_TYPE_ARG3)&pe, sizeof pe) == -1)
-    perror_with_name (("ptrace"));
-}
-
-#endif
-
 /* Detach from the inferior.  If FROM_TTY is non-zero, be chatty about it.  */
 
 void
@@ -291,7 +215,7 @@ inf_ptrace_target::detach (inferior *inf
 void
 inf_ptrace_target::detach_success (inferior *inf)
 {
-  inferior_ptid = null_ptid;
+  switch_to_no_thread ();
   detach_inferior (inf);
 
   maybe_unpush_target ();
@@ -314,8 +238,9 @@ inf_ptrace_target::kill ()
   target_mourn_inferior (inferior_ptid);
 }
 
-/* Return which PID to pass to ptrace in order to observe/control the
-   tracee identified by PTID.  */
+#ifndef __NetBSD__
+
+/* See inf-ptrace.h.  */
 
 pid_t
 get_ptrace_pid (ptid_t ptid)
@@ -329,6 +254,7 @@ get_ptrace_pid (ptid_t ptid)
     pid = ptid.pid ();
   return pid;
 }
+#endif
 
 /* Resume execution of thread PTID, or all threads if PTID is -1.  If
    STEP is nonzero, single-step it.  If SIGNAL is nonzero, give it
@@ -337,15 +263,12 @@ get_ptrace_pid (ptid_t ptid)
 void
 inf_ptrace_target::resume (ptid_t ptid, int step, enum gdb_signal signal)
 {
-  pid_t pid;
-  int request;
+  PTRACE_TYPE_ARG1 request;
 
   if (minus_one_ptid == ptid)
     /* Resume all threads.  Traditionally ptrace() only supports
        single-threaded processes, so simply resume the inferior.  */
-    pid = inferior_ptid.pid ();
-  else
-    pid = get_ptrace_pid (ptid);
+    ptid = ptid_t (inferior_ptid.pid ());
 
   if (catch_syscall_enabled () > 0)
     request = PT_SYSCALL;
@@ -355,10 +278,10 @@ inf_ptrace_target::resume (ptid_t ptid,
   if (step)
     {
       /* If this system does not support PT_STEP, a higher level
-         function will have called single_step() to transmute the step
-         request into a continue request (by setting breakpoints on
-         all possible successor instructions), so we don't have to
-         worry about that here.  */
+	 function will have called the appropriate functions to transmute the
+	 step request into a continue request (by setting breakpoints on
+	 all possible successor instructions), so we don't have to
+	 worry about that here.  */
       request = PT_STEP;
     }
 
@@ -366,7 +289,7 @@ inf_ptrace_target::resume (ptid_t ptid,
      where it was.  If GDB wanted it to start some other way, we have
      already written a new program counter value to the child.  */
   errno = 0;
-  ptrace (request, pid, (PTRACE_TYPE_ARG3)1, gdb_signal_to_host (signal));
+  gdb_ptrace (request, ptid, (PTRACE_TYPE_ARG3)1, gdb_signal_to_host (signal));
   if (errno != 0)
     perror_with_name (("ptrace"));
 }
@@ -408,49 +331,11 @@ inf_ptrace_target::wait (ptid_t ptid, st
 	}
 
       /* Ignore terminated detached child processes.  */
-      if (!WIFSTOPPED (status) && pid != inferior_ptid.pid ())
+      if (!WIFSTOPPED (status) && find_inferior_pid (this, pid) == nullptr)
 	pid = -1;
     }
   while (pid == -1);
 
-#ifdef PT_GET_PROCESS_STATE
-  if (WIFSTOPPED (status))
-    {
-      ptrace_state_t pe;
-      pid_t fpid;
-
-      if (ptrace (PT_GET_PROCESS_STATE, pid,
-		  (PTRACE_TYPE_ARG3)&pe, sizeof pe) == -1)
-	perror_with_name (("ptrace"));
-
-      switch (pe.pe_report_event)
-	{
-	case PTRACE_FORK:
-	  ourstatus->kind = TARGET_WAITKIND_FORKED;
-	  ourstatus->value.related_pid = ptid_t (pe.pe_other_pid);
-
-	  /* Make sure the other end of the fork is stopped too.  */
-	  fpid = waitpid (pe.pe_other_pid, &status, 0);
-	  if (fpid == -1)
-	    perror_with_name (("waitpid"));
-
-	  if (ptrace (PT_GET_PROCESS_STATE, fpid,
-		      (PTRACE_TYPE_ARG3)&pe, sizeof pe) == -1)
-	    perror_with_name (("ptrace"));
-
-	  gdb_assert (pe.pe_report_event == PTRACE_FORK);
-	  gdb_assert (pe.pe_other_pid == pid);
-	  if (fpid == inferior_ptid.pid ())
-	    {
-	      ourstatus->value.related_pid = ptid_t (pe.pe_other_pid);
-	      return ptid_t (fpid);
-	    }
-
-	  return ptid_t (pid);
-	}
-    }
-#endif
-
   store_waitstatus (ourstatus, status);
   return ptid_t (pid);
 }
@@ -461,7 +346,7 @@ inf_ptrace_target::wait (ptid_t ptid, st
    be non-null.  Return the number of transferred bytes.  */
 
 static ULONGEST
-inf_ptrace_peek_poke (pid_t pid, gdb_byte *readbuf,
+inf_ptrace_peek_poke (ptid_t ptid, gdb_byte *readbuf,
 		      const gdb_byte *writebuf,
 		      ULONGEST addr, ULONGEST len)
 {
@@ -492,8 +377,8 @@ inf_ptrace_peek_poke (pid_t pid, gdb_byt
       if (readbuf != NULL || chunk < sizeof (PTRACE_TYPE_RET))
 	{
 	  errno = 0;
-	  buf.word = ptrace (PT_READ_I, pid,
-			     (PTRACE_TYPE_ARG3)(uintptr_t) addr, 0);
+	  buf.word = gdb_ptrace (PT_READ_I, ptid,
+				 (PTRACE_TYPE_ARG3)(uintptr_t) addr, 0);
 	  if (errno != 0)
 	    break;
 	  if (readbuf != NULL)
@@ -503,15 +388,15 @@ inf_ptrace_peek_poke (pid_t pid, gdb_byt
 	{
 	  memcpy (buf.byte + skip, writebuf + n, chunk);
 	  errno = 0;
-	  ptrace (PT_WRITE_D, pid, (PTRACE_TYPE_ARG3)(uintptr_t) addr,
+	  gdb_ptrace (PT_WRITE_D, ptid, (PTRACE_TYPE_ARG3)(uintptr_t) addr,
 		  buf.word);
 	  if (errno != 0)
 	    {
 	      /* Using the appropriate one (I or D) is necessary for
 		 Gould NP1, at least.  */
 	      errno = 0;
-	      ptrace (PT_WRITE_I, pid, (PTRACE_TYPE_ARG3)(uintptr_t) addr,
-		      buf.word);
+	      gdb_ptrace (PT_WRITE_I, ptid, (PTRACE_TYPE_ARG3)(uintptr_t) addr,
+			  buf.word);
 	      if (errno != 0)
 		break;
 	    }
@@ -529,7 +414,7 @@ inf_ptrace_target::xfer_partial (enum ta
 				 const gdb_byte *writebuf,
 				 ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
 {
-  pid_t pid = get_ptrace_pid (inferior_ptid);
+  ptid_t ptid = inferior_ptid;
 
   switch (object)
     {
@@ -553,7 +438,7 @@ inf_ptrace_target::xfer_partial (enum ta
 	piod.piod_len = len;
 
 	errno = 0;
-	if (ptrace (PT_IO, pid, (caddr_t)&piod, 0) == 0)
+	if (gdb_ptrace (PT_IO, ptid, (caddr_t)&piod, 0) == 0)
 	  {
 	    /* Return the actual number of bytes read or written.  */
 	    *xfered_len = piod.piod_len;
@@ -566,7 +451,7 @@ inf_ptrace_target::xfer_partial (enum ta
 	  return TARGET_XFER_EOF;
       }
 #endif
-      *xfered_len = inf_ptrace_peek_poke (pid, readbuf, writebuf,
+      *xfered_len = inf_ptrace_peek_poke (ptid, readbuf, writebuf,
 					  offset, len);
       return *xfered_len != 0 ? TARGET_XFER_OK : TARGET_XFER_EOF;
 
@@ -589,7 +474,7 @@ inf_ptrace_target::xfer_partial (enum ta
 	piod.piod_len = len;
 
 	errno = 0;
-	if (ptrace (PT_IO, pid, (caddr_t)&piod, 0) == 0)
+	if (gdb_ptrace (PT_IO, ptid, (caddr_t)&piod, 0) == 0)
 	  {
 	    /* Return the actual number of bytes read or written.  */
 	    *xfered_len = piod.piod_len;
@@ -633,39 +518,3 @@ inf_ptrace_target::pid_to_str (ptid_t pt
 {
   return normal_pid_to_str (ptid);
 }
-
-#if defined (PT_IO) && defined (PIOD_READ_AUXV)
-
-/* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
-   Return 0 if *READPTR is already at the end of the buffer.
-   Return -1 if there is insufficient buffer for a whole entry.
-   Return 1 if an entry was read into *TYPEP and *VALP.  */
-
-int
-inf_ptrace_target::auxv_parse (gdb_byte **readptr, gdb_byte *endptr,
-			       CORE_ADDR *typep, CORE_ADDR *valp)
-{
-  struct type *int_type = builtin_type (target_gdbarch ())->builtin_int;
-  struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
-  const int sizeof_auxv_type = TYPE_LENGTH (int_type);
-  const int sizeof_auxv_val = TYPE_LENGTH (ptr_type);
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  gdb_byte *ptr = *readptr;
-
-  if (endptr == ptr)
-    return 0;
-
-  if (endptr - ptr < 2 * sizeof_auxv_val)
-    return -1;
-
-  *typep = extract_unsigned_integer (ptr, sizeof_auxv_type, byte_order);
-  ptr += sizeof_auxv_val;	/* Alignment.  */
-  *valp = extract_unsigned_integer (ptr, sizeof_auxv_val, byte_order);
-  ptr += sizeof_auxv_val;
-
-  *readptr = ptr;
-  return 1;
-}
-
-#endif
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-ptrace.h ./gdb/inf-ptrace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inf-ptrace.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inf-ptrace.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low level child interface to ptrace.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -43,17 +43,6 @@ struct inf_ptrace_target : public inf_ch
 
   void create_inferior (const char *, const std::string &,
 			char **, int) override;
-#ifdef PT_GET_PROCESS_STATE
-  int follow_fork (int, int) override;
-
-  int insert_fork_catchpoint (int) override;
-
-  int remove_fork_catchpoint (int) override;
-
-  void post_startup_inferior (ptid_t) override;
-
-  void post_attach (int) override;
-#endif
 
   void mourn_inferior () override;
 
@@ -68,19 +57,19 @@ struct inf_ptrace_target : public inf_ch
 					ULONGEST offset, ULONGEST len,
 					ULONGEST *xfered_len) override;
 
-#if defined (PT_IO) && defined (PIOD_READ_AUXV)
-  int auxv_parse (gdb_byte **readptr,
-		  gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp) override;
-#endif
-
 protected:
   /* Cleanup the inferior after a successful ptrace detach.  */
   void detach_success (inferior *inf);
 };
 
+#ifndef __NetBSD__
 /* Return which PID to pass to ptrace in order to observe/control the
-   tracee identified by PTID.  */
+   tracee identified by PTID.
+
+   Unlike most other Operating Systems, NetBSD tracks both pid and lwp
+   and avoids this function.  */
 
 extern pid_t get_ptrace_pid (ptid_t);
+#endif
 
 #endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/infrun.c ./gdb/infrun.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/infrun.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/infrun.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Target-struct-independent code to start (run) and stop an inferior
    process.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -28,6 +28,7 @@
 #include "gdbcore.h"
 #include "gdbcmd.h"
 #include "target.h"
+#include "target-connection.h"
 #include "gdbthread.h"
 #include "annotate.h"
 #include "symfile.h"
@@ -55,7 +56,7 @@
 #include "target-dcache.h"
 #include "terminal.h"
 #include "solist.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "thread-fsm.h"
 #include "gdbsupport/enum-flags.h"
 #include "progspace-and-thread.h"
@@ -63,6 +64,13 @@
 #include "arch-utils.h"
 #include "gdbsupport/scope-exit.h"
 #include "gdbsupport/forward-scope-exit.h"
+#include "gdbsupport/gdb_select.h"
+#include <unordered_map>
+#include "async-event.h"
+#include "gdbsupport/selftest.h"
+#include "scoped-mock-context.h"
+#include "test-target.h"
+#include "debug.h"
 
 /* Prototypes for local functions */
 
@@ -70,16 +78,10 @@ static void sig_print_info (enum gdb_sig
 
 static void sig_print_header (void);
 
-static int follow_fork (void);
-
-static int follow_fork_inferior (int follow_child, int detach_fork);
-
 static void follow_inferior_reset_breakpoints (void);
 
 static int currently_stepping (struct thread_info *tp);
 
-void nullify_last_target_wait_ptid (void);
-
 static void insert_hp_step_resume_breakpoint_at_frame (struct frame_info *);
 
 static void insert_step_resume_breakpoint_at_caller (struct frame_info *);
@@ -90,6 +92,8 @@ static int maybe_software_singlestep (st
 
 static void resume (gdb_signal sig);
 
+static void wait_for_inferior (inferior *inf);
+
 /* Asynchronous signal handler registered as event loop source for
    when we have pending events ready to be passed to the core.  */
 static struct async_event_handler *infrun_async_inferior_event_token;
@@ -101,16 +105,24 @@ static int infrun_is_async = -1;
 /* See infrun.h.  */
 
 void
+infrun_debug_printf_1 (const char *func_name, const char *fmt, ...)
+{
+  va_list ap;
+  va_start (ap, fmt);
+  debug_prefixed_vprintf ("infrun", func_name, fmt, ap);
+  va_end (ap);
+}
+
+/* See infrun.h.  */
+
+void
 infrun_async (int enable)
 {
   if (infrun_is_async != enable)
     {
       infrun_is_async = enable;
 
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: infrun_async(%d)\n",
-			    enable);
+      infrun_debug_printf ("enable=%d", enable);
 
       if (enable)
 	mark_async_event_handler (infrun_async_inferior_event_token);
@@ -372,9 +384,10 @@ show_stop_on_solib_events (struct ui_fil
 
 static int stop_print_frame;
 
-/* This is a cached copy of the pid/waitstatus of the last event
-   returned by target_wait()/deprecated_target_wait_hook().  This
-   information is returned by get_last_target_status().  */
+/* This is a cached copy of the target/ptid/waitstatus of the last
+   event returned by target_wait()/deprecated_target_wait_hook().
+   This information is returned by get_last_target_status().  */
+static process_stratum_target *target_last_proc_target;
 static ptid_t target_last_wait_ptid;
 static struct target_waitstatus target_last_waitstatus;
 
@@ -407,8 +420,8 @@ show_follow_fork_mode_string (struct ui_
    the fork parent.  At return inferior_ptid is the ptid of the
    followed inferior.  */
 
-static int
-follow_fork_inferior (int follow_child, int detach_fork)
+static bool
+follow_fork_inferior (bool follow_child, bool detach_fork)
 {
   int has_vforked;
   ptid_t parent_ptid, child_ptid;
@@ -480,10 +493,12 @@ holding the child stopped.  Try \"set de
 
 	  scoped_restore_current_pspace_and_thread restore_pspace_thread;
 
-	  inferior_ptid = child_ptid;
-	  add_thread_silent (inferior_ptid);
 	  set_current_inferior (child_inf);
+	  switch_to_no_thread ();
 	  child_inf->symfile_flags = SYMFILE_NO_READ;
+	  push_target (parent_inf->process_target ());
+	  thread_info *child_thr
+	    = add_thread_silent (child_inf->process_target (), child_ptid);
 
 	  /* If this is a vfork child, then the address-space is
 	     shared with the parent.  */
@@ -492,6 +507,8 @@ holding the child stopped.  Try \"set de
 	      child_inf->pspace = parent_inf->pspace;
 	      child_inf->aspace = parent_inf->aspace;
 
+	      exec_on_vfork ();
+
 	      /* The parent will be frozen until the child is done
 		 with the shared region.  Keep track of the
 		 parent.  */
@@ -499,6 +516,11 @@ holding the child stopped.  Try \"set de
 	      child_inf->pending_detach = 0;
 	      parent_inf->vfork_child = child_inf;
 	      parent_inf->pending_detach = 0;
+
+	      /* Now that the inferiors and program spaces are all
+		 wired up, we can switch to the child thread (which
+		 switches inferior and program space too).  */
+	      switch_to_thread (child_thr);
 	    }
 	  else
 	    {
@@ -508,6 +530,10 @@ holding the child stopped.  Try \"set de
 	      set_current_program_space (child_inf->pspace);
 	      clone_program_space (child_inf->pspace, parent_inf->pspace);
 
+	      /* solib_create_inferior_hook relies on the current
+		 thread.  */
+	      switch_to_thread (child_thr);
+
 	      /* Let the shared library layer (e.g., solib-svr4) learn
 		 about this new process, relocate the cloned exec, pull
 		 in shared libraries, and install the solib event
@@ -567,52 +593,63 @@ holding the child stopped.  Try \"set de
 
       parent_pspace = parent_inf->pspace;
 
-      /* If we're vforking, we want to hold on to the parent until the
-	 child exits or execs.  At child exec or exit time we can
-	 remove the old breakpoints from the parent and detach or
-	 resume debugging it.  Otherwise, detach the parent now; we'll
-	 want to reuse it's program/address spaces, but we can't set
-	 them to the child before removing breakpoints from the
-	 parent, otherwise, the breakpoints module could decide to
-	 remove breakpoints from the wrong process (since they'd be
-	 assigned to the same address space).  */
+      process_stratum_target *target = parent_inf->process_target ();
 
-      if (has_vforked)
-	{
-	  gdb_assert (child_inf->vfork_parent == NULL);
-	  gdb_assert (parent_inf->vfork_child == NULL);
-	  child_inf->vfork_parent = parent_inf;
-	  child_inf->pending_detach = 0;
-	  parent_inf->vfork_child = child_inf;
-	  parent_inf->pending_detach = detach_fork;
-	  parent_inf->waiting_for_vfork_done = 0;
-	}
-      else if (detach_fork)
-	{
-	  if (print_inferior_events)
-	    {
-	      /* Ensure that we have a process ptid.  */
-	      ptid_t process_ptid = ptid_t (parent_ptid.pid ());
+      {
+	/* Hold a strong reference to the target while (maybe)
+	   detaching the parent.  Otherwise detaching could close the
+	   target.  */
+	auto target_ref = target_ops_ref::new_reference (target);
+
+	/* If we're vforking, we want to hold on to the parent until
+	   the child exits or execs.  At child exec or exit time we
+	   can remove the old breakpoints from the parent and detach
+	   or resume debugging it.  Otherwise, detach the parent now;
+	   we'll want to reuse it's program/address spaces, but we
+	   can't set them to the child before removing breakpoints
+	   from the parent, otherwise, the breakpoints module could
+	   decide to remove breakpoints from the wrong process (since
+	   they'd be assigned to the same address space).  */
 
-	      target_terminal::ours_for_output ();
-	      fprintf_filtered (gdb_stdlog,
-				_("[Detaching after fork from "
-				  "parent %s]\n"),
-				target_pid_to_str (process_ptid).c_str ());
-	    }
+	if (has_vforked)
+	  {
+	    gdb_assert (child_inf->vfork_parent == NULL);
+	    gdb_assert (parent_inf->vfork_child == NULL);
+	    child_inf->vfork_parent = parent_inf;
+	    child_inf->pending_detach = 0;
+	    parent_inf->vfork_child = child_inf;
+	    parent_inf->pending_detach = detach_fork;
+	    parent_inf->waiting_for_vfork_done = 0;
+	  }
+	else if (detach_fork)
+	  {
+	    if (print_inferior_events)
+	      {
+		/* Ensure that we have a process ptid.  */
+		ptid_t process_ptid = ptid_t (parent_ptid.pid ());
 
-	  target_detach (parent_inf, 0);
-	}
+		target_terminal::ours_for_output ();
+		fprintf_filtered (gdb_stdlog,
+				  _("[Detaching after fork from "
+				    "parent %s]\n"),
+				  target_pid_to_str (process_ptid).c_str ());
+	      }
 
-      /* Note that the detach above makes PARENT_INF dangling.  */
+	    target_detach (parent_inf, 0);
+	    parent_inf = NULL;
+	  }
 
-      /* Add the child thread to the appropriate lists, and switch to
-	 this new thread, before cloning the program space, and
-	 informing the solib layer about this new process.  */
+	/* Note that the detach above makes PARENT_INF dangling.  */
 
-      inferior_ptid = child_ptid;
-      add_thread_silent (inferior_ptid);
-      set_current_inferior (child_inf);
+	/* Add the child thread to the appropriate lists, and switch
+	   to this new thread, before cloning the program space, and
+	   informing the solib layer about this new process.  */
+
+	set_current_inferior (child_inf);
+	push_target (target);
+      }
+
+      thread_info *child_thr = add_thread_silent (target, child_ptid);
 
       /* If this is a vfork child, then the address-space is shared
 	 with the parent.  If we detached from the parent, then we can
@@ -621,6 +658,8 @@ holding the child stopped.  Try \"set de
 	{
 	  child_inf->pspace = parent_pspace;
 	  child_inf->aspace = child_inf->pspace->aspace;
+
+	  exec_on_vfork ();
 	}
       else
 	{
@@ -638,6 +677,8 @@ holding the child stopped.  Try \"set de
 	     the core, this wouldn't be required.  */
 	  solib_create_inferior_hook (0);
 	}
+
+      switch_to_thread (child_thr);
     }
 
   return target_follow_fork (follow_child, detach_fork);
@@ -647,11 +688,11 @@ holding the child stopped.  Try \"set de
    if the inferior should be resumed; false, if the target for some
    reason decided it's best not to resume.  */
 
-static int
-follow_fork (void)
+static bool
+follow_fork ()
 {
-  int follow_child = (follow_fork_mode_string == follow_fork_mode_child);
-  int should_resume = 1;
+  bool follow_child = (follow_fork_mode_string == follow_fork_mode_child);
+  bool should_resume = true;
   struct thread_info *tp;
 
   /* Copy user stepping state to the new inferior thread.  FIXME: the
@@ -662,16 +703,19 @@ follow_fork (void)
   struct breakpoint *exception_resume_breakpoint = NULL;
   CORE_ADDR step_range_start = 0;
   CORE_ADDR step_range_end = 0;
+  int current_line = 0;
+  symtab *current_symtab = NULL;
   struct frame_id step_frame_id = { 0 };
   struct thread_fsm *thread_fsm = NULL;
 
   if (!non_stop)
     {
+      process_stratum_target *wait_target;
       ptid_t wait_ptid;
       struct target_waitstatus wait_status;
 
       /* Get the last target status returned by target_wait().  */
-      get_last_target_status (&wait_ptid, &wait_status);
+      get_last_target_status (&wait_target, &wait_ptid, &wait_status);
 
       /* If not stopped at a fork event, then there's nothing else to
 	 do.  */
@@ -682,16 +726,16 @@ follow_fork (void)
       /* Check if we switched over from WAIT_PTID, since the event was
 	 reported.  */
       if (wait_ptid != minus_one_ptid
-	  && inferior_ptid != wait_ptid)
+	  && (current_inferior ()->process_target () != wait_target
+	      || inferior_ptid != wait_ptid))
 	{
 	  /* We did.  Switch back to WAIT_PTID thread, to tell the
 	     target to follow it (in either direction).  We'll
 	     afterwards refuse to resume, and inform the user what
 	     happened.  */
-	  thread_info *wait_thread
-	    = find_thread_ptid (wait_ptid);
+	  thread_info *wait_thread = find_thread_ptid (wait_target, wait_ptid);
 	  switch_to_thread (wait_thread);
-	  should_resume = 0;
+	  should_resume = false;
 	}
     }
 
@@ -714,6 +758,8 @@ follow_fork (void)
 					 (tp->control.step_resume_breakpoint);
 	    step_range_start = tp->control.step_range_start;
 	    step_range_end = tp->control.step_range_end;
+	    current_line = tp->current_line;
+	    current_symtab = tp->current_symtab;
 	    step_frame_id = tp->control.step_frame_id;
 	    exception_resume_breakpoint
 	      = clone_momentary_breakpoint (tp->control.exception_resume_breakpoint);
@@ -735,6 +781,7 @@ follow_fork (void)
 	parent = inferior_ptid;
 	child = tp->pending_follow.value.related_pid;
 
+	process_stratum_target *parent_targ = tp->inf->process_target ();
 	/* Set up inferior(s) as specified by the caller, and tell the
 	   target to do whatever is necessary to follow either parent
 	   or child.  */
@@ -750,7 +797,7 @@ follow_fork (void)
 	       or another.  The previous selected thread may be gone
 	       from the lists by now, but if it is still around, need
 	       to clear the pending follow request.  */
-	    tp = find_thread_ptid (parent);
+	    tp = find_thread_ptid (parent_targ, parent);
 	    if (tp)
 	      tp->pending_follow.kind = TARGET_WAITKIND_SPURIOUS;
 
@@ -761,7 +808,7 @@ follow_fork (void)
 	    /* If we followed the child, switch to it...  */
 	    if (follow_child)
 	      {
-		thread_info *child_thr = find_thread_ptid (child);
+		thread_info *child_thr = find_thread_ptid (parent_targ, child);
 		switch_to_thread (child_thr);
 
 		/* ... and preserve the stepping state, in case the
@@ -773,6 +820,8 @@ follow_fork (void)
 		      = step_resume_breakpoint;
 		    tp->control.step_range_start = step_range_start;
 		    tp->control.step_range_end = step_range_end;
+		    tp->current_line = current_line;
+		    tp->current_symtab = current_symtab;
 		    tp->control.step_frame_id = step_frame_id;
 		    tp->control.exception_resume_breakpoint
 		      = exception_resume_breakpoint;
@@ -864,10 +913,8 @@ proceed_after_vfork_done (struct thread_
       && !thread->stop_requested
       && thread->suspend.stop_signal == GDB_SIGNAL_0)
     {
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: resuming vfork parent thread %s\n",
-			    target_pid_to_str (thread->ptid).c_str ());
+      infrun_debug_printf ("resuming vfork parent thread %s",
+			   target_pid_to_str (thread->ptid).c_str ());
 
       switch_to_thread (thread);
       clear_proceed_status (0);
@@ -877,22 +924,6 @@ proceed_after_vfork_done (struct thread_
   return 0;
 }
 
-/* Save/restore inferior_ptid, current program space and current
-   inferior.  Only use this if the current context points at an exited
-   inferior (and therefore there's no current thread to save).  */
-class scoped_restore_exited_inferior
-{
-public:
-  scoped_restore_exited_inferior ()
-    : m_saved_ptid (&inferior_ptid)
-  {}
-
-private:
-  scoped_restore_tmpl<ptid_t> m_saved_ptid;
-  scoped_restore_current_program_space m_pspace;
-  scoped_restore_current_inferior m_inferior;
-};
-
 /* Called whenever we notice an exec or exit event, to handle
    detaching or resuming a vfork parent.  */
 
@@ -915,7 +946,6 @@ handle_vfork_child_exec_or_exit (int exe
 	 time.  */
       if (vfork_parent->pending_detach)
 	{
-	  struct thread_info *tp;
 	  struct program_space *pspace;
 	  struct address_space *aspace;
 
@@ -923,20 +953,10 @@ handle_vfork_child_exec_or_exit (int exe
 
 	  vfork_parent->pending_detach = 0;
 
-	  gdb::optional<scoped_restore_exited_inferior>
-	    maybe_restore_inferior;
-	  gdb::optional<scoped_restore_current_pspace_and_thread>
-	    maybe_restore_thread;
-
-	  /* If we're handling a child exit, then inferior_ptid points
-	     at the inferior's pid, not to a thread.  */
-	  if (!exec)
-	    maybe_restore_inferior.emplace ();
-	  else
-	    maybe_restore_thread.emplace ();
+	  scoped_restore_current_pspace_and_thread restore_thread;
 
 	  /* We're letting loose of the parent.  */
-	  tp = any_live_thread_of_inferior (vfork_parent);
+	  thread_info *tp = any_live_thread_of_inferior (vfork_parent);
 	  switch_to_thread (tp);
 
 	  /* We're about to detach from the parent, which implicitly
@@ -996,8 +1016,6 @@ handle_vfork_child_exec_or_exit (int exe
 	}
       else
 	{
-	  struct program_space *pspace;
-
 	  /* If this is a vfork child exiting, then the pspace and
 	     aspaces were shared with the parent.  Since we're
 	     reporting the process exit, we'll be mourning all that is
@@ -1007,24 +1025,18 @@ handle_vfork_child_exec_or_exit (int exe
 	     go ahead and create a new one for this exiting
 	     inferior.  */
 
-	  /* Switch to null_ptid while running clone_program_space, so
+	  /* Switch to no-thread while running clone_program_space, so
 	     that clone_program_space doesn't want to read the
 	     selected frame of a dead process.  */
-	  scoped_restore restore_ptid
-	    = make_scoped_restore (&inferior_ptid, null_ptid);
+	  scoped_restore_current_thread restore_thread;
+	  switch_to_no_thread ();
 
-	  /* This inferior is dead, so avoid giving the breakpoints
-	     module the option to write through to it (cloning a
-	     program space resets breakpoints).  */
-	  inf->aspace = NULL;
-	  inf->pspace = NULL;
-	  pspace = new program_space (maybe_new_address_space ());
-	  set_current_program_space (pspace);
+	  inf->pspace = new program_space (maybe_new_address_space ());
+	  inf->aspace = inf->pspace->aspace;
+	  set_current_program_space (inf->pspace);
 	  inf->removable = 1;
 	  inf->symfile_flags = SYMFILE_NO_READ;
-	  clone_program_space (pspace, vfork_parent->pspace);
-	  inf->pspace = pspace;
-	  inf->aspace = pspace->aspace;
+	  clone_program_space (inf->pspace, vfork_parent->pspace);
 
 	  resume_parent = vfork_parent->pid;
 	}
@@ -1037,10 +1049,8 @@ handle_vfork_child_exec_or_exit (int exe
 	     free now.  */
 	  scoped_restore_current_thread restore_thread;
 
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: resuming vfork parent process %d\n",
-				resume_parent);
+	  infrun_debug_printf ("resuming vfork parent process %d",
+			       resume_parent);
 
 	  iterate_over_threads (proceed_after_vfork_done, &resume_parent);
 	}
@@ -1190,9 +1200,11 @@ follow_exec (ptid_t ptid, const char *ex
       inf->pid = pid;
       target_follow_exec (inf, exec_file_target);
 
-      set_current_inferior (inf);
-      set_current_program_space (inf->pspace);
-      add_thread (ptid);
+      inferior *org_inferior = current_inferior ();
+      switch_to_inferior_no_thread (inf);
+      push_target (org_inferior->process_target ());
+      thread_info *thr = add_thread (inf->process_target (), ptid);
+      switch_to_thread (thr);
     }
   else
     {
@@ -1329,9 +1341,7 @@ set_step_over_info (const address_space
 static void
 clear_step_over_info (void)
 {
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog,
-			"infrun: clear_step_over_info\n");
+  infrun_debug_printf ("clearing step over info");
   step_over_info.aspace = NULL;
   step_over_info.address = 0;
   step_over_info.nonsteppable_watchpoint_p = 0;
@@ -1522,7 +1532,7 @@ get_displaced_step_closure_by_addr (CORE
   /* If checking the mode of displaced instruction in copy area.  */
   if (displaced->step_thread != nullptr
       && displaced->step_copy == addr)
-    return displaced->step_closure;
+    return displaced->step_closure.get ();
 
   return NULL;
 }
@@ -1538,8 +1548,7 @@ infrun_inferior_exit (struct inferior *i
    doesn't support it, GDB will instead use the traditional
    hold-and-step approach.  If AUTO (which is the default), GDB will
    decide which technique to use to step over breakpoints depending on
-   which of all-stop or non-stop mode is active --- displaced stepping
-   in non-stop mode; hold-and-step in all-stop mode.  */
+   whether the target works in a non-stop way (see use_displaced_stepping).  */
 
 static enum auto_boolean can_use_displaced_stepping = AUTO_BOOLEAN_AUTO;
 
@@ -1559,39 +1568,67 @@ show_can_use_displaced_stepping (struct
 			"to step over breakpoints is %s.\n"), value);
 }
 
+/* Return true if the gdbarch implements the required methods to use
+   displaced stepping.  */
+
+static bool
+gdbarch_supports_displaced_stepping (gdbarch *arch)
+{
+  /* Only check for the presence of step_copy_insn.  Other required methods
+     are checked by the gdbarch validation.  */
+  return gdbarch_displaced_step_copy_insn_p (arch);
+}
+
 /* Return non-zero if displaced stepping can/should be used to step
    over breakpoints of thread TP.  */
 
-static int
-use_displaced_stepping (struct thread_info *tp)
+static bool
+use_displaced_stepping (thread_info *tp)
 {
-  struct regcache *regcache = get_thread_regcache (tp);
-  struct gdbarch *gdbarch = regcache->arch ();
+  /* If the user disabled it explicitly, don't use displaced stepping.  */
+  if (can_use_displaced_stepping == AUTO_BOOLEAN_FALSE)
+    return false;
+
+  /* If "auto", only use displaced stepping if the target operates in a non-stop
+     way.  */
+  if (can_use_displaced_stepping == AUTO_BOOLEAN_AUTO
+      && !target_is_non_stop_p ())
+    return false;
+
+  gdbarch *gdbarch = get_thread_regcache (tp)->arch ();
+
+  /* If the architecture doesn't implement displaced stepping, don't use
+     it.  */
+  if (!gdbarch_supports_displaced_stepping (gdbarch))
+    return false;
+
+  /* If recording, don't use displaced stepping.  */
+  if (find_record_target () != nullptr)
+    return false;
+
   displaced_step_inferior_state *displaced_state
     = get_displaced_stepping_state (tp->inf);
 
-  return (((can_use_displaced_stepping == AUTO_BOOLEAN_AUTO
-	    && target_is_non_stop_p ())
-	   || can_use_displaced_stepping == AUTO_BOOLEAN_TRUE)
-	  && gdbarch_displaced_step_copy_insn_p (gdbarch)
-	  && find_record_target () == NULL
-	  && !displaced_state->failed_before);
+  /* If displaced stepping failed before for this inferior, don't bother trying
+     again.  */
+  if (displaced_state->failed_before)
+    return false;
+
+  return true;
 }
 
-/* Clean out any stray displaced stepping state.  */
+/* Simple function wrapper around displaced_step_inferior_state::reset.  */
+
 static void
-displaced_step_clear (struct displaced_step_inferior_state *displaced)
+displaced_step_reset (displaced_step_inferior_state *displaced)
 {
-  /* Indicate that there is no cleanup pending.  */
-  displaced->step_thread = nullptr;
-
-  delete displaced->step_closure;
-  displaced->step_closure = NULL;
+  displaced->reset ();
 }
 
-/* A cleanup that wraps displaced_step_clear.  */
-using displaced_step_clear_cleanup
-  = FORWARD_SCOPE_EXIT (displaced_step_clear);
+/* A cleanup that wraps displaced_step_reset.  We use this instead of, say,
+   SCOPE_EXIT, because it needs to be discardable with "cleanup.release ()".  */
+
+using displaced_step_reset_cleanup = FORWARD_SCOPE_EXIT (displaced_step_reset);
 
 /* Dump LEN bytes at BUF in hex to FILE, followed by a newline.  */
 void
@@ -1630,12 +1667,11 @@ displaced_step_prepare_throw (thread_inf
   const address_space *aspace = regcache->aspace ();
   CORE_ADDR original, copy;
   ULONGEST len;
-  struct displaced_step_closure *closure;
   int status;
 
   /* We should never reach this function if the architecture does not
      support displaced stepping.  */
-  gdb_assert (gdbarch_displaced_step_copy_insn_p (gdbarch));
+  gdb_assert (gdbarch_supports_displaced_stepping (gdbarch));
 
   /* Nor if the thread isn't meant to step over a breakpoint.  */
   gdb_assert (tp->control.trap_expected);
@@ -1673,7 +1709,7 @@ displaced_step_prepare_throw (thread_inf
 			    target_pid_to_str (tp->ptid).c_str ());
     }
 
-  displaced_step_clear (displaced);
+  displaced_step_reset (displaced);
 
   scoped_restore_current_thread restore_thread;
 
@@ -1722,9 +1758,9 @@ displaced_step_prepare_throw (thread_inf
 				 len);
     };
 
-  closure = gdbarch_displaced_step_copy_insn (gdbarch,
-					      original, copy, regcache);
-  if (closure == NULL)
+  displaced->step_closure
+    = gdbarch_displaced_step_copy_insn (gdbarch, original, copy, regcache);
+  if (displaced->step_closure == NULL)
     {
       /* The architecture doesn't know how or want to displaced step
 	 this instruction or instruction sequence.  Fallback to
@@ -1736,12 +1772,11 @@ displaced_step_prepare_throw (thread_inf
      succeeds.  */
   displaced->step_thread = tp;
   displaced->step_gdbarch = gdbarch;
-  displaced->step_closure = closure;
   displaced->step_original = original;
   displaced->step_copy = copy;
 
   {
-    displaced_step_clear_cleanup cleanup (displaced);
+    displaced_step_reset_cleanup cleanup (displaced);
 
     /* Resume execution at the copy.  */
     regcache_write_pc (regcache, copy);
@@ -1776,12 +1811,8 @@ displaced_step_prepare (thread_info *thr
 	  && ex.error != NOT_SUPPORTED_ERROR)
 	throw;
 
-      if (debug_infrun)
-	{
-	  fprintf_unfiltered (gdb_stdlog,
-			      "infrun: disabling displaced stepping: %s\n",
-			      ex.what ());
-	}
+      infrun_debug_printf ("caught exception, disabling displaced stepping: %s",
+			   ex.what ());
 
       /* Be verbose if "set displaced-stepping" is "on", silent if
 	 "auto".  */
@@ -1844,15 +1875,16 @@ displaced_step_fixup (thread_info *event
   if (displaced->step_thread != event_thread)
     return 0;
 
-  displaced_step_clear_cleanup cleanup (displaced);
-
-  displaced_step_restore (displaced, displaced->step_thread->ptid);
-
   /* Fixup may need to read memory/registers.  Switch to the thread
      that we're fixing up.  Also, target_stopped_by_watchpoint checks
-     the current thread.  */
+     the current thread, and displaced_step_restore performs ptid-dependent
+     memory accesses using current_inferior() and current_top_target().  */
   switch_to_thread (event_thread);
 
+  displaced_step_reset_cleanup cleanup (displaced);
+
+  displaced_step_restore (displaced, displaced->step_thread->ptid);
+
   /* Did the instruction complete successfully?  */
   if (signal == GDB_SIGNAL_TRAP
       && !(target_stopped_by_watchpoint ()
@@ -1861,7 +1893,7 @@ displaced_step_fixup (thread_info *event
     {
       /* Fix up the resulting state.  */
       gdbarch_displaced_step_fixup (displaced->step_gdbarch,
-                                    displaced->step_closure,
+                                    displaced->step_closure.get (),
                                     displaced->step_original,
                                     displaced->step_copy,
                                     get_thread_regcache (displaced->step_thread));
@@ -1886,6 +1918,7 @@ displaced_step_fixup (thread_info *event
    discarded between events.  */
 struct execution_control_state
 {
+  process_stratum_target *target;
   ptid_t ptid;
   /* The thread that got the event, if this was a thread event; NULL
      otherwise.  */
@@ -1963,11 +1996,7 @@ start_step_over (void)
       thread_step_over_chain_remove (tp);
 
       if (step_over_queue_head == NULL)
-	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: step-over queue now empty\n");
-	}
+	infrun_debug_printf ("step-over queue now empty");
 
       if (tp->control.trap_expected
 	  || tp->resumed
@@ -1982,10 +2011,8 @@ start_step_over (void)
 			  tp->executing);
 	}
 
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: resuming [%s] for step-over\n",
-			    target_pid_to_str (tp->ptid).c_str ());
+      infrun_debug_printf ("resuming [%s] for step-over",
+			   target_pid_to_str (tp->ptid).c_str ());
 
       /* keep_going_pass_signal skips the step-over if the breakpoint
 	 is no longer inserted.  In all-stop, we want to keep looking
@@ -2037,9 +2064,11 @@ start_step_over (void)
 /* Update global variables holding ptids to hold NEW_PTID if they were
    holding OLD_PTID.  */
 static void
-infrun_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid)
+infrun_thread_ptid_changed (process_stratum_target *target,
+			    ptid_t old_ptid, ptid_t new_ptid)
 {
-  if (inferior_ptid == old_ptid)
+  if (inferior_ptid == old_ptid
+      && current_inferior ()->process_target () == target)
     inferior_ptid = new_ptid;
 }
 
@@ -2142,6 +2171,16 @@ user_visible_resume_ptid (int step)
   return resume_ptid;
 }
 
+/* See infrun.h.  */
+
+process_stratum_target *
+user_visible_resume_target (ptid_t resume_ptid)
+{
+  return (resume_ptid == minus_one_ptid && sched_multi
+	  ? NULL
+	  : current_inferior ()->process_target ());
+}
+
 /* Return a ptid representing the set of threads that we will resume,
    in the perspective of the target, assuming run control handling
    does not require leaving some threads stopped (e.g., stepping past
@@ -2206,6 +2245,9 @@ do_target_resume (ptid_t resume_ptid, in
   target_resume (resume_ptid, step, sig);
 
   target_commit_resume ();
+
+  if (target_can_async_p ())
+    target_async (1);
 }
 
 /* Resume the inferior.  SIG is the signal to give the inferior
@@ -2218,7 +2260,6 @@ resume_1 (enum gdb_signal sig)
   struct regcache *regcache = get_current_regcache ();
   struct gdbarch *gdbarch = regcache->arch ();
   struct thread_info *tp = inferior_thread ();
-  CORE_ADDR pc = regcache_read_pc (regcache);
   const address_space *aspace = regcache->aspace ();
   ptid_t resume_ptid;
   /* This represents the user's step vs continue request.  When
@@ -2236,20 +2277,15 @@ resume_1 (enum gdb_signal sig)
 
   if (tp->suspend.waitstatus_pending_p)
     {
-      if (debug_infrun)
-	{
-	  std::string statstr
-	    = target_waitstatus_to_string (&tp->suspend.waitstatus);
+      infrun_debug_printf
+	("thread %s has pending wait "
+	 "status %s (currently_stepping=%d).",
+	 target_pid_to_str (tp->ptid).c_str (),
+	 target_waitstatus_to_string (&tp->suspend.waitstatus).c_str (),
+	 currently_stepping (tp));
 
-	  fprintf_unfiltered (gdb_stdlog,
-			      "infrun: resume: thread %s has pending wait "
-			      "status %s (currently_stepping=%d).\n",
-			      target_pid_to_str (tp->ptid).c_str (),
-			      statstr.c_str (),
-			      currently_stepping (tp));
-	}
-
-      tp->resumed = 1;
+      tp->inf->process_target ()->threads_executing = true;
+      tp->resumed = true;
 
       /* FIXME: What should we do if we are supposed to resume this
 	 thread with a signal?  Maybe we should maintain a queue of
@@ -2290,20 +2326,18 @@ resume_1 (enum gdb_signal sig)
 	 Eventually, we'll see a TARGET_WAITKIND_VFORK_DONE event for
 	 the parent, and tell it to `keep_going', which automatically
 	 re-sets it stepping.  */
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: resume : clear step\n");
+      infrun_debug_printf ("resume : clear step");
       step = 0;
     }
 
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog,
-			"infrun: resume (step=%d, signal=%s), "
-			"trap_expected=%d, current thread [%s] at %s\n",
-			step, gdb_signal_to_symbol_string (sig),
-			tp->control.trap_expected,
-			target_pid_to_str (inferior_ptid).c_str (),
-			paddress (gdbarch, pc));
+  CORE_ADDR pc = regcache_read_pc (regcache);
+
+  infrun_debug_printf ("step=%d, signal=%s, trap_expected=%d, "
+		       "current thread [%s] at %s",
+		       step, gdb_signal_to_symbol_string (sig),
+		       tp->control.trap_expected,
+		       target_pid_to_str (inferior_ptid).c_str (),
+		       paddress (gdbarch, pc));
 
   /* Normally, by the time we reach `resume', the breakpoints are either
      removed or inserted, as appropriate.  The exception is if we're sitting
@@ -2327,10 +2361,8 @@ resume_1 (enum gdb_signal sig)
 	     signal handler (or hit some other event).  We'll delete
 	     the step-resume breakpoint then.  */
 
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: resume: skipping permanent breakpoint, "
-				"deliver signal first\n");
+	  infrun_debug_printf ("resume: skipping permanent breakpoint, "
+			       "deliver signal first");
 
 	  clear_step_over_info ();
 	  tp->control.trap_expected = 0;
@@ -2352,9 +2384,7 @@ resume_1 (enum gdb_signal sig)
 	{
 	  /* There's no signal to pass, we can go ahead and skip the
 	     permanent breakpoint manually.  */
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: resume: skipping permanent breakpoint\n");
+	  infrun_debug_printf ("skipping permanent breakpoint");
 	  gdbarch_skip_permanent_breakpoint (gdbarch, regcache);
 	  /* Update pc to reflect the new address from which we will
 	     execute instructions.  */
@@ -2377,7 +2407,7 @@ resume_1 (enum gdb_signal sig)
 
 	      resume_ptid = internal_resume_ptid (user_step);
 	      do_target_resume (resume_ptid, 0, GDB_SIGNAL_0);
-	      tp->resumed = 1;
+	      tp->resumed = true;
 	      return;
 	    }
 	}
@@ -2388,8 +2418,8 @@ resume_1 (enum gdb_signal sig)
   if (tp->control.trap_expected || bpstat_should_step ())
     tp->control.may_range_step = 0;
 
-  /* If enabled, step over breakpoints by executing a copy of the
-     instruction at a different address.
+  /* If displaced stepping is enabled, step over breakpoints by executing a
+     copy of the instruction at a different address.
 
      We can't use displaced stepping when we have a signal to deliver;
      the comments for displaced_step_prepare explain why.  The
@@ -2409,9 +2439,7 @@ resume_1 (enum gdb_signal sig)
 
       if (prepared == 0)
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"Got placed in step-over queue\n");
+	  infrun_debug_printf ("Got placed in step-over queue");
 
 	  tp->control.trap_expected = 0;
 	  return;
@@ -2439,8 +2467,8 @@ resume_1 (enum gdb_signal sig)
 	  pc = regcache_read_pc (get_thread_regcache (tp));
 
 	  displaced = get_displaced_stepping_state (tp->inf);
-	  step = gdbarch_displaced_step_hw_singlestep (gdbarch,
-						       displaced->step_closure);
+	  step = gdbarch_displaced_step_hw_singlestep
+	    (gdbarch, displaced->step_closure.get ());
 	}
     }
 
@@ -2477,7 +2505,7 @@ resume_1 (enum gdb_signal sig)
       && step_over_info_valid_p ())
     {
       /* If we have nested signals or a pending signal is delivered
-	 immediately after a handler returns, might might already have
+	 immediately after a handler returns, might already have
 	 a step-resume breakpoint set on the earlier handler.  We cannot
 	 set another step-resume breakpoint; just continue on until the
 	 original breakpoint is hit.  */
@@ -2548,10 +2576,8 @@ resume_1 (enum gdb_signal sig)
 	 gdb.threads/non-stop-fair-events.exp, on targets that don't
 	 do displaced stepping.  */
 
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: resume: [%s] stepped breakpoint\n",
-			    target_pid_to_str (tp->ptid).c_str ());
+      infrun_debug_printf ("resume: [%s] stepped breakpoint",
+			   target_pid_to_str (tp->ptid).c_str ());
 
       tp->stepped_breakpoint = 1;
 
@@ -2589,7 +2615,7 @@ resume_1 (enum gdb_signal sig)
     }
 
   do_target_resume (resume_ptid, step, sig);
-  tp->resumed = 1;
+  tp->resumed = true;
 }
 
 /* Resume the inferior.  SIG is the signal to give the inferior
@@ -2652,10 +2678,7 @@ new_stop_id (void)
 static void
 clear_proceed_status_thread (struct thread_info *tp)
 {
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog,
-			"infrun: clear_proceed_status_thread (%s)\n",
-			target_pid_to_str (tp->ptid).c_str ());
+  infrun_debug_printf ("%s", target_pid_to_str (tp->ptid).c_str ());
 
   /* If we're starting a new sequence, then the previous finished
      single-step is no longer relevant.  */
@@ -2663,28 +2686,20 @@ clear_proceed_status_thread (struct thre
     {
       if (tp->suspend.stop_reason == TARGET_STOPPED_BY_SINGLE_STEP)
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: clear_proceed_status: pending "
-				"event of %s was a finished step. "
-				"Discarding.\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("pending event of %s was a finished step. "
+			       "Discarding.",
+			       target_pid_to_str (tp->ptid).c_str ());
 
 	  tp->suspend.waitstatus_pending_p = 0;
 	  tp->suspend.stop_reason = TARGET_STOPPED_BY_NO_REASON;
 	}
-      else if (debug_infrun)
+      else
 	{
-	  std::string statstr
-	    = target_waitstatus_to_string (&tp->suspend.waitstatus);
-
-	  fprintf_unfiltered (gdb_stdlog,
-			      "infrun: clear_proceed_status_thread: thread %s "
-			      "has pending wait status %s "
-			      "(currently_stepping=%d).\n",
-			      target_pid_to_str (tp->ptid).c_str (),
-			      statstr.c_str (),
-			      currently_stepping (tp));
+	  infrun_debug_printf
+	    ("thread %s has pending wait status %s (currently_stepping=%d).",
+	     target_pid_to_str (tp->ptid).c_str (),
+	     target_waitstatus_to_string (&tp->suspend.waitstatus).c_str (),
+	     currently_stepping (tp));
 	}
     }
 
@@ -2734,10 +2749,12 @@ clear_proceed_status (int step)
   if (!non_stop && inferior_ptid != null_ptid)
     {
       ptid_t resume_ptid = user_visible_resume_ptid (step);
+      process_stratum_target *resume_target
+	= user_visible_resume_target (resume_ptid);
 
       /* In all-stop mode, delete the per-thread status of all threads
 	 we're about to resume, implicitly and explicitly.  */
-      for (thread_info *tp : all_non_exited_threads (resume_ptid))
+      for (thread_info *tp : all_non_exited_threads (resume_target, resume_ptid))
 	clear_proceed_status_thread (tp);
     }
 
@@ -2814,6 +2831,86 @@ schedlock_applies (struct thread_info *t
 					    execution_direction)));
 }
 
+/* Calls target_commit_resume on all targets.  */
+
+static void
+commit_resume_all_targets ()
+{
+  scoped_restore_current_thread restore_thread;
+
+  /* Map between process_target and a representative inferior.  This
+     is to avoid committing a resume in the same target more than
+     once.  Resumptions must be idempotent, so this is an
+     optimization.  */
+  std::unordered_map<process_stratum_target *, inferior *> conn_inf;
+
+  for (inferior *inf : all_non_exited_inferiors ())
+    if (inf->has_execution ())
+      conn_inf[inf->process_target ()] = inf;
+
+  for (const auto &ci : conn_inf)
+    {
+      inferior *inf = ci.second;
+      switch_to_inferior_no_thread (inf);
+      target_commit_resume ();
+    }
+}
+
+/* Check that all the targets we're about to resume are in non-stop
+   mode.  Ideally, we'd only care whether all targets support
+   target-async, but we're not there yet.  E.g., stop_all_threads
+   doesn't know how to handle all-stop targets.  Also, the remote
+   protocol in all-stop mode is synchronous, irrespective of
+   target-async, which means that things like a breakpoint re-set
+   triggered by one target would try to read memory from all targets
+   and fail.  */
+
+static void
+check_multi_target_resumption (process_stratum_target *resume_target)
+{
+  if (!non_stop && resume_target == nullptr)
+    {
+      scoped_restore_current_thread restore_thread;
+
+      /* This is used to track whether we're resuming more than one
+	 target.  */
+      process_stratum_target *first_connection = nullptr;
+
+      /* The first inferior we see with a target that does not work in
+	 always-non-stop mode.  */
+      inferior *first_not_non_stop = nullptr;
+
+      for (inferior *inf : all_non_exited_inferiors (resume_target))
+	{
+	  switch_to_inferior_no_thread (inf);
+
+	  if (!target_has_execution)
+	    continue;
+
+	  process_stratum_target *proc_target
+	    = current_inferior ()->process_target();
+
+	  if (!target_is_non_stop_p ())
+	    first_not_non_stop = inf;
+
+	  if (first_connection == nullptr)
+	    first_connection = proc_target;
+	  else if (first_connection != proc_target
+		   && first_not_non_stop != nullptr)
+	    {
+	      switch_to_inferior_no_thread (first_not_non_stop);
+
+	      proc_target = current_inferior ()->process_target();
+
+	      error (_("Connection %d (%s) does not support "
+		       "multi-target resumption."),
+		     proc_target->connection_number,
+		     make_target_connection_string (proc_target).c_str ());
+	    }
+	}
+    }
+}
+
 /* Basic routine for continuing the program in various fashions.
 
    ADDR is the address to resume at, or -1 for resume where stopped.
@@ -2828,7 +2925,6 @@ proceed (CORE_ADDR addr, enum gdb_signal
   struct regcache *regcache;
   struct gdbarch *gdbarch;
   CORE_ADDR pc;
-  ptid_t resume_ptid;
   struct execution_control_state ecss;
   struct execution_control_state *ecs = &ecss;
   int started;
@@ -2841,7 +2937,7 @@ proceed (CORE_ADDR addr, enum gdb_signal
       /* The target for some reason decided not to resume.  */
       normal_stop ();
       if (target_can_async_p ())
-	inferior_event_handler (INF_EXEC_COMPLETE, NULL);
+	inferior_event_handler (INF_EXEC_COMPLETE);
       return;
     }
 
@@ -2852,7 +2948,8 @@ proceed (CORE_ADDR addr, enum gdb_signal
   gdbarch = regcache->arch ();
   const address_space *aspace = regcache->aspace ();
 
-  pc = regcache_read_pc (regcache);
+  pc = regcache_read_pc_protected (regcache);
+
   thread_info *cur_thr = inferior_thread ();
 
   /* Fill in with reasonable starting values.  */
@@ -2860,6 +2957,13 @@ proceed (CORE_ADDR addr, enum gdb_signal
 
   gdb_assert (!thread_is_in_step_over_chain (cur_thr));
 
+  ptid_t resume_ptid
+    = user_visible_resume_ptid (cur_thr->control.stepping_command);
+  process_stratum_target *resume_target
+    = user_visible_resume_target (resume_ptid);
+
+  check_multi_target_resumption (resume_target);
+
   if (addr == (CORE_ADDR) -1)
     {
       if (pc == cur_thr->suspend.stop_pc
@@ -2889,12 +2993,10 @@ proceed (CORE_ADDR addr, enum gdb_signal
   if (siggnal != GDB_SIGNAL_DEFAULT)
     cur_thr->suspend.stop_signal = siggnal;
 
-  resume_ptid = user_visible_resume_ptid (cur_thr->control.stepping_command);
-
   /* If an exception is thrown from this point on, make sure to
      propagate GDB's knowledge of the executing state to the
      frontend/user running state.  */
-  scoped_finish_thread_state finish_state (resume_ptid);
+  scoped_finish_thread_state finish_state (resume_target, resume_ptid);
 
   /* Even if RESUME_PTID is a wildcard, and we end up resuming fewer
      threads (e.g., we might need to set threads stepping over
@@ -2903,13 +3005,10 @@ proceed (CORE_ADDR addr, enum gdb_signal
      inferior function, as in that case we pretend the inferior
      doesn't run at all.  */
   if (!cur_thr->control.in_infcall)
-   set_running (resume_ptid, 1);
+    set_running (resume_target, resume_ptid, true);
 
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog,
-			"infrun: proceed (addr=%s, signal=%s)\n",
-			paddress (gdbarch, addr),
-			gdb_signal_to_symbol_string (siggnal));
+  infrun_debug_printf ("addr=%s, signal=%s", paddress (gdbarch, addr),
+		       gdb_signal_to_symbol_string (siggnal));
 
   annotate_starting ();
 
@@ -2938,8 +3037,11 @@ proceed (CORE_ADDR addr, enum gdb_signal
      threads.  */
   if (!non_stop && !schedlock_applies (cur_thr))
     {
-      for (thread_info *tp : all_non_exited_threads (resume_ptid))
+      for (thread_info *tp : all_non_exited_threads (resume_target,
+						     resume_ptid))
 	{
+	  switch_to_thread_no_regs (tp);
+
 	  /* Ignore the current thread here.  It's handled
 	     afterwards.  */
 	  if (tp == cur_thr)
@@ -2950,13 +3052,13 @@ proceed (CORE_ADDR addr, enum gdb_signal
 
 	  gdb_assert (!thread_is_in_step_over_chain (tp));
 
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: need to step-over [%s] first\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("need to step-over [%s] first",
+			       target_pid_to_str (tp->ptid).c_str ());
 
 	  thread_step_over_chain_enqueue (tp);
 	}
+
+      switch_to_thread (cur_thr);
     }
 
   /* Enqueue the current thread last, so that we move all other
@@ -2969,7 +3071,7 @@ proceed (CORE_ADDR addr, enum gdb_signal
      advanced.  Must do this before resuming any thread, as in
      all-stop/remote, once we resume we can't send any other packet
      until the target stops again.  */
-  cur_thr->prev_pc = regcache_read_pc (regcache);
+  cur_thr->prev_pc = regcache_read_pc_protected (regcache);
 
   {
     scoped_restore save_defer_tc = make_scoped_defer_target_commit_resume ();
@@ -2991,38 +3093,42 @@ proceed (CORE_ADDR addr, enum gdb_signal
       {
 	/* In all-stop, but the target is always in non-stop mode.
 	   Start all other threads that are implicitly resumed too.  */
-      for (thread_info *tp : all_non_exited_threads (resume_ptid))
-        {
-	  if (tp->resumed)
-	    {
-	      if (debug_infrun)
-		fprintf_unfiltered (gdb_stdlog,
-				    "infrun: proceed: [%s] resumed\n",
-				    target_pid_to_str (tp->ptid).c_str ());
-	      gdb_assert (tp->executing || tp->suspend.waitstatus_pending_p);
-	      continue;
-	    }
+	for (thread_info *tp : all_non_exited_threads (resume_target,
+						       resume_ptid))
+	  {
+	    switch_to_thread_no_regs (tp);
 
-	  if (thread_is_in_step_over_chain (tp))
-	    {
-	      if (debug_infrun)
-		fprintf_unfiltered (gdb_stdlog,
-				    "infrun: proceed: [%s] needs step-over\n",
-				    target_pid_to_str (tp->ptid).c_str ());
-	      continue;
-	    }
+	    if (!tp->inf->has_execution ())
+	      {
+		infrun_debug_printf ("[%s] target has no execution",
+				     target_pid_to_str (tp->ptid).c_str ());
+		continue;
+	      }
 
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: proceed: resuming %s\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	    if (tp->resumed)
+	      {
+		infrun_debug_printf ("[%s] resumed",
+				     target_pid_to_str (tp->ptid).c_str ());
+		gdb_assert (tp->executing || tp->suspend.waitstatus_pending_p);
+		continue;
+	      }
 
-	  reset_ecs (ecs, tp);
-	  switch_to_thread (tp);
-	  keep_going_pass_signal (ecs);
-	  if (!ecs->wait_some_more)
-	    error (_("Command aborted."));
-	}
+	    if (thread_is_in_step_over_chain (tp))
+	      {
+		infrun_debug_printf ("[%s] needs step-over",
+				     target_pid_to_str (tp->ptid).c_str ());
+		continue;
+	      }
+
+	    infrun_debug_printf ("resuming %s",
+			         target_pid_to_str (tp->ptid).c_str ());
+
+	    reset_ecs (ecs, tp);
+	    switch_to_thread (tp);
+	    keep_going_pass_signal (ecs);
+	    if (!ecs->wait_some_more)
+	      error (_("Command aborted."));
+	  }
       }
     else if (!cur_thr->resumed && !thread_is_in_step_over_chain (cur_thr))
       {
@@ -3035,10 +3141,15 @@ proceed (CORE_ADDR addr, enum gdb_signal
       }
   }
 
-  target_commit_resume ();
+  commit_resume_all_targets ();
 
   finish_state.release ();
 
+  /* If we've switched threads above, switch back to the previously
+     current thread.  We don't want the user to see a different
+     selected thread.  */
+  switch_to_thread (cur_thr);
+
   /* Tell the event loop to wait for it to stop.  If the target
      supports asynchronous execution, it'll do this from within
      target_resume.  */
@@ -3052,10 +3163,8 @@ proceed (CORE_ADDR addr, enum gdb_signal
 void
 start_remote (int from_tty)
 {
-  struct inferior *inferior;
-
-  inferior = current_inferior ();
-  inferior->control.stop_soon = STOP_QUIETLY_REMOTE;
+  inferior *inf = current_inferior ();
+  inf->control.stop_soon = STOP_QUIETLY_REMOTE;
 
   /* Always go on waiting for the target, regardless of the mode.  */
   /* FIXME: cagney/1999-09-23: At present it isn't possible to
@@ -3071,7 +3180,7 @@ start_remote (int from_tty)
      target_open() return to the caller an indication that the target
      is currently running and GDB state should be set to the same as
      for an async run.  */
-  wait_for_inferior ();
+  wait_for_inferior (inf);
 
   /* Now that the inferior has stopped, do any bookkeeping like
      loading shared libraries.  We want to do this before normal_stop,
@@ -3092,7 +3201,7 @@ init_wait_for_inferior (void)
 
   clear_proceed_status (0);
 
-  target_last_wait_ptid = minus_one_ptid;
+  nullify_last_target_wait_ptid ();
 
   previous_inferior_ptid = inferior_ptid;
 }
@@ -3122,11 +3231,13 @@ static int switch_back_to_stepped_thread
 static void
 infrun_thread_stop_requested (ptid_t ptid)
 {
+  process_stratum_target *curr_target = current_inferior ()->process_target ();
+
   /* PTID was requested to stop.  If the thread was already stopped,
      but the user/frontend doesn't know about that yet (e.g., the
      thread had been temporarily paused for some step-over), set up
      for reporting the stop now.  */
-  for (thread_info *tp : all_threads (ptid))
+  for (thread_info *tp : all_threads (curr_target, ptid))
     {
       if (tp->state != THREAD_RUNNING)
 	continue;
@@ -3152,7 +3263,7 @@ infrun_thread_stop_requested (ptid_t pti
 
       /* Clear the inline-frame state, since we're re-processing the
 	 stop.  */
-      clear_inline_frame_state (tp->ptid);
+      clear_inline_frame_state (tp);
 
       /* If this thread was paused because some other thread was
 	 doing an inline-step over, let that finish first.  Once
@@ -3164,14 +3275,15 @@ infrun_thread_stop_requested (ptid_t pti
       /* Otherwise we can process the (new) pending event now.  Set
 	 it so this pending event is considered by
 	 do_target_wait.  */
-      tp->resumed = 1;
+      tp->resumed = true;
     }
 }
 
 static void
 infrun_thread_thread_exit (struct thread_info *tp, int silent)
 {
-  if (target_last_wait_ptid == tp->ptid)
+  if (target_last_proc_target == tp->inf->process_target ()
+      && target_last_wait_ptid == tp->ptid)
     nullify_last_target_wait_ptid ();
 }
 
@@ -3244,19 +3356,19 @@ print_target_wait_results (ptid_t waiton
      output as a unit; we want only one timestamp printed if debug_timestamp
      is set.  */
 
-  stb.printf ("infrun: target_wait (%d.%ld.%ld",
+  stb.printf ("[infrun] target_wait (%d.%ld.%ld",
 	      waiton_ptid.pid (),
 	      waiton_ptid.lwp (),
 	      waiton_ptid.tid ());
   if (waiton_ptid.pid () != -1)
     stb.printf (" [%s]", target_pid_to_str (waiton_ptid).c_str ());
   stb.printf (", status) =\n");
-  stb.printf ("infrun:   %d.%ld.%ld [%s],\n",
+  stb.printf ("[infrun]   %d.%ld.%ld [%s],\n",
 	      result_ptid.pid (),
 	      result_ptid.lwp (),
 	      result_ptid.tid (),
 	      target_pid_to_str (result_ptid).c_str ());
-  stb.printf ("infrun:   %s\n", status_string.c_str ());
+  stb.printf ("[infrun]   %s\n", status_string.c_str ());
 
   /* This uses %s in part to handle %'s in the text, but also to avoid
      a gcc error: the format attribute requires a string literal.  */
@@ -3267,19 +3379,20 @@ print_target_wait_results (ptid_t waiton
    had events.  */
 
 static struct thread_info *
-random_pending_event_thread (ptid_t waiton_ptid)
+random_pending_event_thread (inferior *inf, ptid_t waiton_ptid)
 {
   int num_events = 0;
 
-  auto has_event = [] (thread_info *tp)
+  auto has_event = [&] (thread_info *tp)
     {
-      return (tp->resumed
+      return (tp->ptid.matches (waiton_ptid)
+	      && tp->resumed
 	      && tp->suspend.waitstatus_pending_p);
     };
 
   /* First see how many events we have.  Count only resumed threads
      that have an event pending.  */
-  for (thread_info *tp : all_non_exited_threads (waiton_ptid))
+  for (thread_info *tp : inf->non_exited_threads ())
     if (has_event (tp))
       num_events++;
 
@@ -3290,13 +3403,12 @@ random_pending_event_thread (ptid_t wait
   int random_selector = (int) ((num_events * (double) rand ())
 			       / (RAND_MAX + 1.0));
 
-  if (debug_infrun && num_events > 1)
-    fprintf_unfiltered (gdb_stdlog,
-			"infrun: Found %d events, selecting #%d\n",
-			num_events, random_selector);
+  if (num_events > 1)
+    infrun_debug_printf ("Found %d events, selecting #%d",
+			 num_events, random_selector);
 
   /* Select the Nth thread that has had an event.  */
-  for (thread_info *tp : all_non_exited_threads (waiton_ptid))
+  for (thread_info *tp : inf->non_exited_threads ())
     if (has_event (tp))
       if (random_selector-- == 0)
 	return tp;
@@ -3306,29 +3418,35 @@ random_pending_event_thread (ptid_t wait
 
 /* Wrapper for target_wait that first checks whether threads have
    pending statuses to report before actually asking the target for
-   more events.  */
+   more events.  INF is the inferior we're using to call target_wait
+   on.  */
 
 static ptid_t
-do_target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
+do_target_wait_1 (inferior *inf, ptid_t ptid,
+		  target_waitstatus *status, int options)
 {
   ptid_t event_ptid;
   struct thread_info *tp;
 
+  /* We know that we are looking for an event in the target of inferior
+     INF, but we don't know which thread the event might come from.  As
+     such we want to make sure that INFERIOR_PTID is reset so that none of
+     the wait code relies on it - doing so is always a mistake.  */
+  switch_to_inferior_no_thread (inf);
+
   /* First check if there is a resumed thread with a wait status
      pending.  */
   if (ptid == minus_one_ptid || ptid.is_pid ())
     {
-      tp = random_pending_event_thread (ptid);
+      tp = random_pending_event_thread (inf, ptid);
     }
   else
     {
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: Waiting for specific thread %s.\n",
-			    target_pid_to_str (ptid).c_str ());
+      infrun_debug_printf ("Waiting for specific thread %s.",
+			   target_pid_to_str (ptid).c_str ());
 
       /* We have a specific thread to check.  */
-      tp = find_thread_ptid (ptid);
+      tp = find_thread_ptid (inf, ptid);
       gdb_assert (tp != NULL);
       if (!tp->suspend.waitstatus_pending_p)
 	tp = NULL;
@@ -3347,31 +3465,25 @@ do_target_wait (ptid_t ptid, struct targ
 
       if (pc != tp->suspend.stop_pc)
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: PC of %s changed.  was=%s, now=%s\n",
-				target_pid_to_str (tp->ptid).c_str (),
-				paddress (gdbarch, tp->suspend.stop_pc),
-				paddress (gdbarch, pc));
+	  infrun_debug_printf ("PC of %s changed.  was=%s, now=%s",
+			       target_pid_to_str (tp->ptid).c_str (),
+			       paddress (gdbarch, tp->suspend.stop_pc),
+			       paddress (gdbarch, pc));
 	  discard = 1;
 	}
       else if (!breakpoint_inserted_here_p (regcache->aspace (), pc))
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: previous breakpoint of %s, at %s gone\n",
-				target_pid_to_str (tp->ptid).c_str (),
-				paddress (gdbarch, pc));
+	  infrun_debug_printf ("previous breakpoint of %s, at %s gone",
+			       target_pid_to_str (tp->ptid).c_str (),
+			       paddress (gdbarch, pc));
 
 	  discard = 1;
 	}
 
       if (discard)
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: pending event of %s cancelled.\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("pending event of %s cancelled.",
+			       target_pid_to_str (tp->ptid).c_str ());
 
 	  tp->suspend.waitstatus.kind = TARGET_WAITKIND_SPURIOUS;
 	  tp->suspend.stop_reason = TARGET_STOPPED_BY_NO_REASON;
@@ -3380,16 +3492,10 @@ do_target_wait (ptid_t ptid, struct targ
 
   if (tp != NULL)
     {
-      if (debug_infrun)
-	{
-	  std::string statstr
-	    = target_waitstatus_to_string (&tp->suspend.waitstatus);
-
-	  fprintf_unfiltered (gdb_stdlog,
-			      "infrun: Using pending wait status %s for %s.\n",
-			      statstr.c_str (),
-			      target_pid_to_str (tp->ptid).c_str ());
-	}
+      infrun_debug_printf ("Using pending wait status %s for %s.",
+			   target_waitstatus_to_string
+			     (&tp->suspend.waitstatus).c_str (),
+			   target_pid_to_str (tp->ptid).c_str ());
 
       /* Now that we've selected our final event LWP, un-adjust its PC
 	 if it was a software breakpoint (and the target doesn't
@@ -3427,6 +3533,11 @@ do_target_wait (ptid_t ptid, struct targ
 
   /* But if we don't find one, we'll have to wait.  */
 
+  /* We can't ask a non-async target to do a non-blocking wait, so this will be
+     a blocking wait.  */
+  if (!target_can_async_p ())
+    options &= ~TARGET_WNOHANG;
+
   if (deprecated_target_wait_hook)
     event_ptid = deprecated_target_wait_hook (ptid, status, options);
   else
@@ -3435,6 +3546,90 @@ do_target_wait (ptid_t ptid, struct targ
   return event_ptid;
 }
 
+/* Wrapper for target_wait that first checks whether threads have
+   pending statuses to report before actually asking the target for
+   more events.  Polls for events from all inferiors/targets.  */
+
+static bool
+do_target_wait (ptid_t wait_ptid, execution_control_state *ecs, int options)
+{
+  int num_inferiors = 0;
+  int random_selector;
+
+  /* For fairness, we pick the first inferior/target to poll at random
+     out of all inferiors that may report events, and then continue
+     polling the rest of the inferior list starting from that one in a
+     circular fashion until the whole list is polled once.  */
+
+  auto inferior_matches = [&wait_ptid] (inferior *inf)
+    {
+      return (inf->process_target () != NULL
+	      && ptid_t (inf->pid).matches (wait_ptid));
+    };
+
+  /* First see how many matching inferiors we have.  */
+  for (inferior *inf : all_inferiors ())
+    if (inferior_matches (inf))
+      num_inferiors++;
+
+  if (num_inferiors == 0)
+    {
+      ecs->ws.kind = TARGET_WAITKIND_IGNORE;
+      return false;
+    }
+
+  /* Now randomly pick an inferior out of those that matched.  */
+  random_selector = (int)
+    ((num_inferiors * (double) rand ()) / (RAND_MAX + 1.0));
+
+  if (num_inferiors > 1)
+    infrun_debug_printf ("Found %d inferiors, starting at #%d",
+			 num_inferiors, random_selector);
+
+  /* Select the Nth inferior that matched.  */
+
+  inferior *selected = nullptr;
+
+  for (inferior *inf : all_inferiors ())
+    if (inferior_matches (inf))
+      if (random_selector-- == 0)
+	{
+	  selected = inf;
+	  break;
+	}
+
+  /* Now poll for events out of each of the matching inferior's
+     targets, starting from the selected one.  */
+
+  auto do_wait = [&] (inferior *inf)
+  {
+    ecs->ptid = do_target_wait_1 (inf, wait_ptid, &ecs->ws, options);
+    ecs->target = inf->process_target ();
+    return (ecs->ws.kind != TARGET_WAITKIND_IGNORE);
+  };
+
+  /* Needed in 'all-stop + target-non-stop' mode, because we end up
+     here spuriously after the target is all stopped and we've already
+     reported the stop to the user, polling for events.  */
+  scoped_restore_current_thread restore_thread;
+
+  int inf_num = selected->num;
+  for (inferior *inf = selected; inf != NULL; inf = inf->next)
+    if (inferior_matches (inf))
+      if (do_wait (inf))
+	return true;
+
+  for (inferior *inf = inferior_list;
+       inf != NULL && inf->num < inf_num;
+       inf = inf->next)
+    if (inferior_matches (inf))
+      if (do_wait (inf))
+	return true;
+
+  ecs->ws.kind = TARGET_WAITKIND_IGNORE;
+  return false;
+}
+
 /* Prepare and stabilize the inferior for detaching it.  E.g.,
    detaching while a thread is displaced stepping is a recipe for
    crashing it, as nothing would readjust the PC out of the scratch
@@ -3453,9 +3648,7 @@ prepare_for_detach (void)
   if (displaced->step_thread == nullptr)
     return;
 
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced-stepping in-process while detaching");
+  infrun_debug_printf ("displaced-stepping in-process while detaching");
 
   scoped_restore restore_detaching = make_scoped_restore (&inf->detaching, true);
 
@@ -3474,7 +3667,7 @@ prepare_for_detach (void)
 	 don't get any event.  */
       target_dcache_invalidate ();
 
-      ecs->ptid = do_target_wait (pid_ptid, &ecs->ws, 0);
+      do_target_wait (pid_ptid, ecs, 0);
 
       if (debug_infrun)
 	print_target_wait_results (pid_ptid, ecs->ptid, &ecs->ws);
@@ -3482,7 +3675,8 @@ prepare_for_detach (void)
       /* If an error happens while handling the event, propagate GDB's
 	 knowledge of the executing state to the frontend/user running
 	 state.  */
-      scoped_finish_thread_state finish_state (minus_one_ptid);
+      scoped_finish_thread_state finish_state (inf->process_target (),
+					       minus_one_ptid);
 
       /* Now figure out what to do with the result of the result.  */
       handle_inferior_event (ecs);
@@ -3510,25 +3704,23 @@ prepare_for_detach (void)
    When this function actually returns it means the inferior
    should be left stopped and GDB should read more commands.  */
 
-void
-wait_for_inferior (void)
+static void
+wait_for_inferior (inferior *inf)
 {
-  if (debug_infrun)
-    fprintf_unfiltered
-      (gdb_stdlog, "infrun: wait_for_inferior ()\n");
+  infrun_debug_printf ("wait_for_inferior ()");
 
   SCOPE_EXIT { delete_just_stopped_threads_infrun_breakpoints (); };
 
   /* If an error happens while handling the event, propagate GDB's
      knowledge of the executing state to the frontend/user running
      state.  */
-  scoped_finish_thread_state finish_state (minus_one_ptid);
+  scoped_finish_thread_state finish_state
+    (inf->process_target (), minus_one_ptid);
 
   while (1)
     {
       struct execution_control_state ecss;
       struct execution_control_state *ecs = &ecss;
-      ptid_t waiton_ptid = minus_one_ptid;
 
       memset (ecs, 0, sizeof (*ecs));
 
@@ -3540,10 +3732,11 @@ wait_for_inferior (void)
 	 don't get any event.  */
       target_dcache_invalidate ();
 
-      ecs->ptid = do_target_wait (waiton_ptid, &ecs->ws, 0);
+      ecs->ptid = do_target_wait_1 (inf, minus_one_ptid, &ecs->ws, 0);
+      ecs->target = inf->process_target ();
 
       if (debug_infrun)
-	print_target_wait_results (waiton_ptid, ecs->ptid, &ecs->ws);
+	print_target_wait_results (minus_one_ptid, ecs->ptid, &ecs->ws);
 
       /* Now figure out what to do with the result of the result.  */
       handle_inferior_event (ecs);
@@ -3664,12 +3857,11 @@ all_uis_on_sync_execution_starting (void
    necessary cleanups.  */
 
 void
-fetch_inferior_event (void *client_data)
+fetch_inferior_event ()
 {
   struct execution_control_state ecss;
   struct execution_control_state *ecs = &ecss;
   int cmd_done = 0;
-  ptid_t waiton_ptid = minus_one_ptid;
 
   memset (ecs, 0, sizeof (*ecs));
 
@@ -3693,14 +3885,11 @@ fetch_inferior_event (void *client_data)
 	set_current_traceframe (-1);
       }
 
-    gdb::optional<scoped_restore_current_thread> maybe_restore_thread;
-
-    if (non_stop)
-      /* In non-stop mode, the user/frontend should not notice a thread
-	 switch due to internal events.  Make sure we reverse to the
-	 user selected thread and frame after handling the event and
-	 running any breakpoint commands.  */
-      maybe_restore_thread.emplace ();
+    /* The user/frontend should not notice a thread switch due to
+       internal events.  Make sure we revert to the user selected
+       thread and frame after handling the event and running any
+       breakpoint commands.  */
+    scoped_restore_current_thread restore_thread;
 
     overlay_cache_invalid = 1;
     /* Flush target cache before starting to handle each event.  Target
@@ -3713,17 +3902,23 @@ fetch_inferior_event (void *client_data)
       = make_scoped_restore (&execution_direction,
 			     target_execution_direction ());
 
-    ecs->ptid = do_target_wait (waiton_ptid, &ecs->ws,
-				target_can_async_p () ? TARGET_WNOHANG : 0);
+    if (!do_target_wait (minus_one_ptid, ecs, TARGET_WNOHANG))
+      return;
+
+    gdb_assert (ecs->ws.kind != TARGET_WAITKIND_IGNORE);
+
+    /* Switch to the target that generated the event, so we can do
+       target calls.  */
+    switch_to_target_no_thread (ecs->target);
 
     if (debug_infrun)
-      print_target_wait_results (waiton_ptid, ecs->ptid, &ecs->ws);
+      print_target_wait_results (minus_one_ptid, ecs->ptid, &ecs->ws);
 
     /* If an error happens while handling the event, propagate GDB's
        knowledge of the executing state to the frontend/user running
        state.  */
     ptid_t finish_ptid = !target_is_non_stop_p () ? minus_one_ptid : ecs->ptid;
-    scoped_finish_thread_state finish_state (finish_ptid);
+    scoped_finish_thread_state finish_state (ecs->target, finish_ptid);
 
     /* Get executed before scoped_restore_current_thread above to apply
        still for the thread which has thrown the exception.  */
@@ -3737,7 +3932,7 @@ fetch_inferior_event (void *client_data)
 
     if (!ecs->wait_some_more)
       {
-	struct inferior *inf = find_inferior_ptid (ecs->ptid);
+	struct inferior *inf = find_inferior_ptid (ecs->target, ecs->ptid);
 	int should_stop = 1;
 	struct thread_info *thr = ecs->event_thread;
 
@@ -3774,9 +3969,22 @@ fetch_inferior_event (void *client_data)
 
 	    if (!proceeded)
 	      {
-		inferior_event_handler (INF_EXEC_COMPLETE, NULL);
+		inferior_event_handler (INF_EXEC_COMPLETE);
 		cmd_done = 1;
 	      }
+
+	    /* If we got a TARGET_WAITKIND_NO_RESUMED event, then the
+	       previously selected thread is gone.  We have two
+	       choices - switch to no thread selected, or restore the
+	       previously selected thread (now exited).  We chose the
+	       later, just because that's what GDB used to do.  After
+	       this, "info threads" says "The current thread <Thread
+	       ID 2> has terminated." instead of "No thread
+	       selected.".  */
+	    if (!non_stop
+		&& cmd_done
+		&& ecs->ws.kind != TARGET_WAITKIND_NO_RESUMED)
+	      restore_thread.dont_restore ();
 	  }
       }
 
@@ -3802,11 +4010,15 @@ fetch_inferior_event (void *client_data)
     printf_unfiltered (_("completed.\n"));
 }
 
-/* Record the frame and location we're currently stepping through.  */
+/* See infrun.h.  */
+
 void
-set_step_info (struct frame_info *frame, struct symtab_and_line sal)
+set_step_info (thread_info *tp, struct frame_info *frame,
+	       struct symtab_and_line sal)
 {
-  struct thread_info *tp = inferior_thread ();
+  /* This can be removed once this function no longer implicitly relies on the
+     inferior_ptid value.  */
+  gdb_assert (inferior_ptid == tp->ptid);
 
   tp->control.step_frame_id = get_frame_id (frame);
   tp->control.step_stack_frame_id = get_stack_frame_id (frame);
@@ -3826,31 +4038,39 @@ init_thread_stepping_state (struct threa
   tss->step_after_step_resume_breakpoint = 0;
 }
 
-/* Set the cached copy of the last ptid/waitstatus.  */
+/* See infrun.h.  */
 
 void
-set_last_target_status (ptid_t ptid, struct target_waitstatus status)
+set_last_target_status (process_stratum_target *target, ptid_t ptid,
+			target_waitstatus status)
 {
+  target_last_proc_target = target;
   target_last_wait_ptid = ptid;
   target_last_waitstatus = status;
 }
 
-/* Return the cached copy of the last pid/waitstatus returned by
-   target_wait()/deprecated_target_wait_hook().  The data is actually
-   cached by handle_inferior_event(), which gets called immediately
-   after target_wait()/deprecated_target_wait_hook().  */
+/* See infrun.h.  */
 
 void
-get_last_target_status (ptid_t *ptidp, struct target_waitstatus *status)
+get_last_target_status (process_stratum_target **target, ptid_t *ptid,
+			target_waitstatus *status)
 {
-  *ptidp = target_last_wait_ptid;
-  *status = target_last_waitstatus;
+  if (target != nullptr)
+    *target = target_last_proc_target;
+  if (ptid != nullptr)
+    *ptid = target_last_wait_ptid;
+  if (status != nullptr)
+    *status = target_last_waitstatus;
 }
 
+/* See infrun.h.  */
+
 void
 nullify_last_target_wait_ptid (void)
 {
+  target_last_proc_target = nullptr;
   target_last_wait_ptid = minus_one_ptid;
+  target_last_waitstatus = {};
 }
 
 /* Switch thread contexts.  */
@@ -3858,14 +4078,13 @@ nullify_last_target_wait_ptid (void)
 static void
 context_switch (execution_control_state *ecs)
 {
-  if (debug_infrun
-      && ecs->ptid != inferior_ptid
-      && ecs->event_thread != inferior_thread ())
-    {
-      fprintf_unfiltered (gdb_stdlog, "infrun: Switching context from %s ",
-			  target_pid_to_str (inferior_ptid).c_str ());
-      fprintf_unfiltered (gdb_stdlog, "to %s\n",
-			  target_pid_to_str (ecs->ptid).c_str ());
+  if (ecs->ptid != inferior_ptid
+      && (inferior_ptid == null_ptid
+	  || ecs->event_thread != inferior_thread ()))
+    {
+      infrun_debug_printf ("Switching context from %s to %s",
+			   target_pid_to_str (inferior_ptid).c_str (),
+			   target_pid_to_str (ecs->ptid).c_str ());
     }
 
   switch_to_thread (ecs->event_thread);
@@ -4034,6 +4253,45 @@ stepped_in_from (struct frame_info *fram
   return 0;
 }
 
+/* Look for an inline frame that is marked for skip.
+   If PREV_FRAME is TRUE start at the previous frame,
+   otherwise start at the current frame.  Stop at the
+   first non-inline frame, or at the frame where the
+   step started.  */
+
+static bool
+inline_frame_is_marked_for_skip (bool prev_frame, struct thread_info *tp)
+{
+  struct frame_info *frame = get_current_frame ();
+
+  if (prev_frame)
+    frame = get_prev_frame (frame);
+
+  for (; frame != NULL; frame = get_prev_frame (frame))
+    {
+      const char *fn = NULL;
+      symtab_and_line sal;
+      struct symbol *sym;
+
+      if (frame_id_eq (get_frame_id (frame), tp->control.step_frame_id))
+	break;
+      if (get_frame_type (frame) != INLINE_FRAME)
+	break;
+
+      sal = find_frame_sal (frame);
+      sym = get_frame_function (frame);
+
+      if (sym != NULL)
+	fn = sym->print_name ();
+
+      if (sal.line != 0
+	  && function_name_is_marked_for_skip (fn, sal))
+	return true;
+    }
+
+  return false;
+}
+
 /* If the event thread has the stop requested flag set, pretend it
    stopped for a GDB_SIGNAL_0 (i.e., as if it stopped due to
    target_stop).  */
@@ -4071,9 +4329,7 @@ handle_syscall_event (struct execution_c
   if (catch_syscall_enabled () > 0
       && catching_syscall_number (syscall_number) > 0)
     {
-      if (debug_infrun)
-        fprintf_unfiltered (gdb_stdlog, "infrun: syscall number = '%d'\n",
-                            syscall_number);
+      infrun_debug_printf ("syscall number=%d", syscall_number);
 
       ecs->event_thread->control.stop_bpstat
 	= bpstat_stop_status (regcache->aspace (),
@@ -4107,14 +4363,16 @@ fill_in_stop_func (struct gdbarch *gdbar
   if (!ecs->stop_func_filled_in)
     {
       const block *block;
+      const general_symbol_info *gsi;
 
       /* Don't care about return value; stop_func_start and stop_func_name
 	 will both be 0 if it doesn't work.  */
-      find_pc_partial_function (ecs->event_thread->suspend.stop_pc,
-				&ecs->stop_func_name,
-				&ecs->stop_func_start,
-				&ecs->stop_func_end,
-				&block);
+      find_pc_partial_function_sym (ecs->event_thread->suspend.stop_pc,
+				    &gsi,
+				    &ecs->stop_func_start,
+				    &ecs->stop_func_end,
+				    &block);
+      ecs->stop_func_name = gsi == nullptr ? nullptr : gsi->print_name ();
 
       /* The call to find_pc_partial_function, above, will set
 	 stop_func_start and stop_func_end to the start and end
@@ -4146,20 +4404,19 @@ fill_in_stop_func (struct gdbarch *gdbar
 static enum stop_kind
 get_inferior_stop_soon (execution_control_state *ecs)
 {
-  struct inferior *inf = find_inferior_ptid (ecs->ptid);
+  struct inferior *inf = find_inferior_ptid (ecs->target, ecs->ptid);
 
   gdb_assert (inf != NULL);
   return inf->control.stop_soon;
 }
 
-/* Wait for one event.  Store the resulting waitstatus in WS, and
-   return the event ptid.  */
+/* Poll for one event out of the current target.  Store the resulting
+   waitstatus in WS, and return the event ptid.  Does not block.  */
 
 static ptid_t
-wait_one (struct target_waitstatus *ws)
+poll_one_curr_target (struct target_waitstatus *ws)
 {
   ptid_t event_ptid;
-  ptid_t wait_ptid = minus_one_ptid;
 
   overlay_cache_invalid = 1;
 
@@ -4170,51 +4427,111 @@ wait_one (struct target_waitstatus *ws)
   target_dcache_invalidate ();
 
   if (deprecated_target_wait_hook)
-    event_ptid = deprecated_target_wait_hook (wait_ptid, ws, 0);
+    event_ptid = deprecated_target_wait_hook (minus_one_ptid, ws, TARGET_WNOHANG);
   else
-    event_ptid = target_wait (wait_ptid, ws, 0);
+    event_ptid = target_wait (minus_one_ptid, ws, TARGET_WNOHANG);
 
   if (debug_infrun)
-    print_target_wait_results (wait_ptid, event_ptid, ws);
+    print_target_wait_results (minus_one_ptid, event_ptid, ws);
 
   return event_ptid;
 }
 
-/* Generate a wrapper for target_stopped_by_REASON that works on PTID
-   instead of the current thread.  */
-#define THREAD_STOPPED_BY(REASON)		\
-static int					\
-thread_stopped_by_ ## REASON (ptid_t ptid)	\
-{						\
-  scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid); \
-  inferior_ptid = ptid;				\
-						\
-  return target_stopped_by_ ## REASON ();	\
-}
-
-/* Generate thread_stopped_by_watchpoint.  */
-THREAD_STOPPED_BY (watchpoint)
-/* Generate thread_stopped_by_sw_breakpoint.  */
-THREAD_STOPPED_BY (sw_breakpoint)
-/* Generate thread_stopped_by_hw_breakpoint.  */
-THREAD_STOPPED_BY (hw_breakpoint)
+/* An event reported by wait_one.  */
 
-/* Save the thread's event and stop reason to process it later.  */
+struct wait_one_event
+{
+  /* The target the event came out of.  */
+  process_stratum_target *target;
 
-static void
-save_waitstatus (struct thread_info *tp, struct target_waitstatus *ws)
+  /* The PTID the event was for.  */
+  ptid_t ptid;
+
+  /* The waitstatus.  */
+  target_waitstatus ws;
+};
+
+/* Wait for one event out of any target.  */
+
+static wait_one_event
+wait_one ()
 {
-  if (debug_infrun)
+  while (1)
     {
-      std::string statstr = target_waitstatus_to_string (ws);
+      for (inferior *inf : all_inferiors ())
+	{
+	  process_stratum_target *target = inf->process_target ();
+	  if (target == NULL
+	      || !target->is_async_p ()
+	      || !target->threads_executing)
+	    continue;
+
+	  switch_to_inferior_no_thread (inf);
 
-      fprintf_unfiltered (gdb_stdlog,
-			  "infrun: saving status %s for %d.%ld.%ld\n",
-			  statstr.c_str (),
-			  tp->ptid.pid (),
-			  tp->ptid.lwp (),
-			  tp->ptid.tid ());
+	  wait_one_event event;
+	  event.target = target;
+	  event.ptid = poll_one_curr_target (&event.ws);
+
+	  if (event.ws.kind == TARGET_WAITKIND_NO_RESUMED)
+	    {
+	      /* If nothing is resumed, remove the target from the
+		 event loop.  */
+	      target_async (0);
+	    }
+	  else if (event.ws.kind != TARGET_WAITKIND_IGNORE)
+	    return event;
+	}
+
+      /* Block waiting for some event.  */
+
+      fd_set readfds;
+      int nfds = 0;
+
+      FD_ZERO (&readfds);
+
+      for (inferior *inf : all_inferiors ())
+	{
+	  process_stratum_target *target = inf->process_target ();
+	  if (target == NULL
+	      || !target->is_async_p ()
+	      || !target->threads_executing)
+	    continue;
+
+	  int fd = target->async_wait_fd ();
+	  FD_SET (fd, &readfds);
+	  if (nfds <= fd)
+	    nfds = fd + 1;
+	}
+
+      if (nfds == 0)
+	{
+	  /* No waitable targets left.  All must be stopped.  */
+	  return {NULL, minus_one_ptid, {TARGET_WAITKIND_NO_RESUMED}};
+	}
+
+      QUIT;
+
+      int numfds = interruptible_select (nfds, &readfds, 0, NULL, 0);
+      if (numfds < 0)
+	{
+	  if (errno == EINTR)
+	    continue;
+	  else
+	    perror_with_name ("interruptible_select");
+	}
     }
+}
+
+/* Save the thread's event and stop reason to process it later.  */
+
+static void
+save_waitstatus (struct thread_info *tp, const target_waitstatus *ws)
+{
+  infrun_debug_printf ("saving status %s for %d.%ld.%ld",
+		       target_waitstatus_to_string (ws).c_str (),
+		       tp->ptid.pid (),
+		       tp->ptid.lwp (),
+		       tp->ptid.tid ());
 
   /* Record for later.  */
   tp->suspend.waitstatus = *ws;
@@ -4230,19 +4547,22 @@ save_waitstatus (struct thread_info *tp,
 
       adjust_pc_after_break (tp, &tp->suspend.waitstatus);
 
-      if (thread_stopped_by_watchpoint (tp->ptid))
+      scoped_restore_current_thread restore_thread;
+      switch_to_thread (tp);
+
+      if (target_stopped_by_watchpoint ())
 	{
 	  tp->suspend.stop_reason
 	    = TARGET_STOPPED_BY_WATCHPOINT;
 	}
       else if (target_supports_stopped_by_sw_breakpoint ()
-	       && thread_stopped_by_sw_breakpoint (tp->ptid))
+	       && target_stopped_by_sw_breakpoint ())
 	{
 	  tp->suspend.stop_reason
 	    = TARGET_STOPPED_BY_SW_BREAKPOINT;
 	}
       else if (target_supports_stopped_by_hw_breakpoint ()
-	       && thread_stopped_by_hw_breakpoint (tp->ptid))
+	       && target_stopped_by_hw_breakpoint ())
 	{
 	  tp->suspend.stop_reason
 	    = TARGET_STOPPED_BY_HW_BREAKPOINT;
@@ -4270,6 +4590,47 @@ save_waitstatus (struct thread_info *tp,
     }
 }
 
+/* Mark the non-executing threads accordingly.  In all-stop, all
+   threads of all processes are stopped when we get any event
+   reported.  In non-stop mode, only the event thread stops.  */
+
+static void
+mark_non_executing_threads (process_stratum_target *target,
+			    ptid_t event_ptid,
+			    struct target_waitstatus ws)
+{
+  ptid_t mark_ptid;
+
+  if (!target_is_non_stop_p ())
+    mark_ptid = minus_one_ptid;
+  else if (ws.kind == TARGET_WAITKIND_SIGNALLED
+	   || ws.kind == TARGET_WAITKIND_EXITED)
+    {
+      /* If we're handling a process exit in non-stop mode, even
+	 though threads haven't been deleted yet, one would think
+	 that there is nothing to do, as threads of the dead process
+	 will be soon deleted, and threads of any other process were
+	 left running.  However, on some targets, threads survive a
+	 process exit event.  E.g., for the "checkpoint" command,
+	 when the current checkpoint/fork exits, linux-fork.c
+	 automatically switches to another fork from within
+	 target_mourn_inferior, by associating the same
+	 inferior/thread to another fork.  We haven't mourned yet at
+	 this point, but we must mark any threads left in the
+	 process as not-executing so that finish_thread_state marks
+	 them stopped (in the user's perspective) if/when we present
+	 the stop to the user.  */
+      mark_ptid = ptid_t (event_ptid.pid ());
+    }
+  else
+    mark_ptid = event_ptid;
+
+  set_executing (target, mark_ptid, false);
+
+  /* Likewise the resumed flag.  */
+  set_resumed (target, mark_ptid, false);
+}
+
 /* See infrun.h.  */
 
 void
@@ -4279,15 +4640,33 @@ stop_all_threads (void)
   int pass;
   int iterations = 0;
 
-  gdb_assert (target_is_non_stop_p ());
+  gdb_assert (exists_non_stop_target ());
 
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog, "infrun: stop_all_threads\n");
+  infrun_debug_printf ("starting");
 
   scoped_restore_current_thread restore_thread;
 
-  target_thread_events (1);
-  SCOPE_EXIT { target_thread_events (0); };
+  /* Enable thread events of all targets.  */
+  for (auto *target : all_non_exited_process_targets ())
+    {
+      switch_to_target_no_thread (target);
+      target_thread_events (true);
+    }
+
+  SCOPE_EXIT
+    {
+      /* Disable thread events of all targets.  */
+      for (auto *target : all_non_exited_process_targets ())
+	{
+	  switch_to_target_no_thread (target);
+	  target_thread_events (false);
+	}
+
+      /* Use infrun_debug_printf_1 directly to get a meaningful function
+         name.  */
+      if (debug_infrun)
+	infrun_debug_printf_1 ("stop_all_threads", "done");
+    };
 
   /* Request threads to stop, and then wait for the stops.  Because
      threads we already know about can spawn more threads while we're
@@ -4296,62 +4675,64 @@ stop_all_threads (void)
      until two passes find no threads that need to be stopped.  */
   for (pass = 0; pass < 2; pass++, iterations++)
     {
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: stop_all_threads, pass=%d, "
-			    "iterations=%d\n", pass, iterations);
+      infrun_debug_printf ("pass=%d, iterations=%d", pass, iterations);
       while (1)
 	{
-	  ptid_t event_ptid;
-	  struct target_waitstatus ws;
-	  int need_wait = 0;
+	  int waits_needed = 0;
 
-	  update_thread_list ();
+	  for (auto *target : all_non_exited_process_targets ())
+	    {
+	      switch_to_target_no_thread (target);
+	      update_thread_list ();
+	    }
 
 	  /* Go through all threads looking for threads that we need
 	     to tell the target to stop.  */
 	  for (thread_info *t : all_non_exited_threads ())
 	    {
+	      /* For a single-target setting with an all-stop target,
+		 we would not even arrive here.  For a multi-target
+		 setting, until GDB is able to handle a mixture of
+		 all-stop and non-stop targets, simply skip all-stop
+		 targets' threads.  This should be fine due to the
+		 protection of 'check_multi_target_resumption'.  */
+
+	      switch_to_thread_no_regs (t);
+	      if (!target_is_non_stop_p ())
+		continue;
+
 	      if (t->executing)
 		{
 		  /* If already stopping, don't request a stop again.
 		     We just haven't seen the notification yet.  */
 		  if (!t->stop_requested)
 		    {
-		      if (debug_infrun)
-			fprintf_unfiltered (gdb_stdlog,
-					    "infrun:   %s executing, "
-					    "need stop\n",
-					    target_pid_to_str (t->ptid).c_str ());
+		      infrun_debug_printf ("  %s executing, need stop",
+					   target_pid_to_str (t->ptid).c_str ());
 		      target_stop (t->ptid);
 		      t->stop_requested = 1;
 		    }
 		  else
 		    {
-		      if (debug_infrun)
-			fprintf_unfiltered (gdb_stdlog,
-					    "infrun:   %s executing, "
-					    "already stopping\n",
-					    target_pid_to_str (t->ptid).c_str ());
+		      infrun_debug_printf ("  %s executing, already stopping",
+					   target_pid_to_str (t->ptid).c_str ());
 		    }
 
 		  if (t->stop_requested)
-		    need_wait = 1;
+		    waits_needed++;
 		}
 	      else
 		{
-		  if (debug_infrun)
-		    fprintf_unfiltered (gdb_stdlog,
-					"infrun:   %s not executing\n",
-					target_pid_to_str (t->ptid).c_str ());
+		  infrun_debug_printf ("  %s not executing",
+				       target_pid_to_str (t->ptid).c_str ());
 
 		  /* The thread may be not executing, but still be
 		     resumed with a pending status to process.  */
-		  t->resumed = 0;
+		  t->resumed = false;
 		}
 	    }
 
-	  if (!need_wait)
+	  if (waits_needed == 0)
 	    break;
 
 	  /* If we find new threads on the second iteration, restart
@@ -4360,117 +4741,148 @@ stop_all_threads (void)
 	  if (pass > 0)
 	    pass = -1;
 
-	  event_ptid = wait_one (&ws);
-	  if (debug_infrun)
+	  for (int i = 0; i < waits_needed; i++)
 	    {
-	      fprintf_unfiltered (gdb_stdlog,
-				  "infrun: stop_all_threads %s %s\n",
-				  target_waitstatus_to_string (&ws).c_str (),
-				  target_pid_to_str (event_ptid).c_str ());
-	    }
+	      wait_one_event event = wait_one ();
 
-	  if (ws.kind == TARGET_WAITKIND_NO_RESUMED
-	      || ws.kind == TARGET_WAITKIND_THREAD_EXITED
-	      || ws.kind == TARGET_WAITKIND_EXITED
-	      || ws.kind == TARGET_WAITKIND_SIGNALLED)
-	    {
-	      /* All resumed threads exited
-		 or one thread/process exited/signalled.  */
-	    }
-	  else
-	    {
-	      thread_info *t = find_thread_ptid (event_ptid);
-	      if (t == NULL)
-		t = add_thread (event_ptid);
-
-	      t->stop_requested = 0;
-	      t->executing = 0;
-	      t->resumed = 0;
-	      t->control.may_range_step = 0;
-
-	      /* This may be the first time we see the inferior report
-		 a stop.  */
-	      inferior *inf = find_inferior_ptid (event_ptid);
-	      if (inf->needs_setup)
+	      infrun_debug_printf
+		("%s %s", target_waitstatus_to_string (&event.ws).c_str (),
+		 target_pid_to_str (event.ptid).c_str ());
+
+	      if (event.ws.kind == TARGET_WAITKIND_NO_RESUMED)
 		{
-		  switch_to_thread_no_regs (t);
-		  setup_inferior (0);
+		  /* All resumed threads exited.  */
+		  break;
 		}
-
-	      if (ws.kind == TARGET_WAITKIND_STOPPED
-		  && ws.value.sig == GDB_SIGNAL_0)
+	      else if (event.ws.kind == TARGET_WAITKIND_THREAD_EXITED
+		       || event.ws.kind == TARGET_WAITKIND_EXITED
+		       || event.ws.kind == TARGET_WAITKIND_SIGNALLED)
 		{
-		  /* We caught the event that we intended to catch, so
-		     there's no event pending.  */
-		  t->suspend.waitstatus.kind = TARGET_WAITKIND_IGNORE;
-		  t->suspend.waitstatus_pending_p = 0;
+		  /* One thread/process exited/signalled.  */
 
-		  if (displaced_step_fixup (t, GDB_SIGNAL_0) < 0)
+		  thread_info *t = nullptr;
+
+		  /* The target may have reported just a pid.  If so, try
+		     the first non-exited thread.  */
+		  if (event.ptid.is_pid ())
 		    {
-		      /* Add it back to the step-over queue.  */
-		      if (debug_infrun)
+		      int pid  = event.ptid.pid ();
+		      inferior *inf = find_inferior_pid (event.target, pid);
+		      for (thread_info *tp : inf->non_exited_threads ())
 			{
-			  fprintf_unfiltered (gdb_stdlog,
-					      "infrun: displaced-step of %s "
-					      "canceled: adding back to the "
-					      "step-over queue\n",
-					      target_pid_to_str (t->ptid).c_str ());
+			  t = tp;
+			  break;
 			}
-		      t->control.trap_expected = 0;
-		      thread_step_over_chain_enqueue (t);
+
+		      /* If there is no available thread, the event would
+			 have to be appended to a per-inferior event list,
+			 which does not exist (and if it did, we'd have
+			 to adjust run control command to be able to
+			 resume such an inferior).  We assert here instead
+			 of going into an infinite loop.  */
+		      gdb_assert (t != nullptr);
+
+		      infrun_debug_printf
+			("using %s", target_pid_to_str (t->ptid).c_str ());
+		    }
+		  else
+		    {
+		      t = find_thread_ptid (event.target, event.ptid);
+		      /* Check if this is the first time we see this thread.
+			 Don't bother adding if it individually exited.  */
+		      if (t == nullptr
+			  && event.ws.kind != TARGET_WAITKIND_THREAD_EXITED)
+			t = add_thread (event.target, event.ptid);
+		    }
+
+		  if (t != nullptr)
+		    {
+		      /* Set the threads as non-executing to avoid
+			 another stop attempt on them.  */
+		      switch_to_thread_no_regs (t);
+		      mark_non_executing_threads (event.target, event.ptid,
+						  event.ws);
+		      save_waitstatus (t, &event.ws);
+		      t->stop_requested = false;
 		    }
 		}
 	      else
 		{
-		  enum gdb_signal sig;
-		  struct regcache *regcache;
+		  thread_info *t = find_thread_ptid (event.target, event.ptid);
+		  if (t == NULL)
+		    t = add_thread (event.target, event.ptid);
+
+		  t->stop_requested = 0;
+		  t->executing = 0;
+		  t->resumed = false;
+		  t->control.may_range_step = 0;
+
+		  /* This may be the first time we see the inferior report
+		     a stop.  */
+		  inferior *inf = find_inferior_ptid (event.target, event.ptid);
+		  if (inf->needs_setup)
+		    {
+		      switch_to_thread_no_regs (t);
+		      setup_inferior (0);
+		    }
 
-		  if (debug_infrun)
+		  if (event.ws.kind == TARGET_WAITKIND_STOPPED
+		      && event.ws.value.sig == GDB_SIGNAL_0)
 		    {
-		      std::string statstr = target_waitstatus_to_string (&ws);
+		      /* We caught the event that we intended to catch, so
+			 there's no event pending.  */
+		      t->suspend.waitstatus.kind = TARGET_WAITKIND_IGNORE;
+		      t->suspend.waitstatus_pending_p = 0;
 
-		      fprintf_unfiltered (gdb_stdlog,
-					  "infrun: target_wait %s, saving "
-					  "status for %d.%ld.%ld\n",
-					  statstr.c_str (),
-					  t->ptid.pid (),
-					  t->ptid.lwp (),
-					  t->ptid.tid ());
+		      if (displaced_step_fixup (t, GDB_SIGNAL_0) < 0)
+			{
+			  /* Add it back to the step-over queue.  */
+			  infrun_debug_printf
+			    ("displaced-step of %s canceled: adding back to "
+			     "the step-over queue",
+			      target_pid_to_str (t->ptid).c_str ());
+
+			  t->control.trap_expected = 0;
+			  thread_step_over_chain_enqueue (t);
+			}
 		    }
+		  else
+		    {
+		      enum gdb_signal sig;
+		      struct regcache *regcache;
 
-		  /* Record for later.  */
-		  save_waitstatus (t, &ws);
+		      infrun_debug_printf
+			("target_wait %s, saving status for %d.%ld.%ld",
+			 target_waitstatus_to_string (&event.ws).c_str (),
+			 t->ptid.pid (), t->ptid.lwp (), t->ptid.tid ());
 
-		  sig = (ws.kind == TARGET_WAITKIND_STOPPED
-			 ? ws.value.sig : GDB_SIGNAL_0);
+		      /* Record for later.  */
+		      save_waitstatus (t, &event.ws);
 
-		  if (displaced_step_fixup (t, sig) < 0)
-		    {
-		      /* Add it back to the step-over queue.  */
-		      t->control.trap_expected = 0;
-		      thread_step_over_chain_enqueue (t);
-		    }
+		      sig = (event.ws.kind == TARGET_WAITKIND_STOPPED
+			     ? event.ws.value.sig : GDB_SIGNAL_0);
 
-		  regcache = get_thread_regcache (t);
-		  t->suspend.stop_pc = regcache_read_pc (regcache);
+		      if (displaced_step_fixup (t, sig) < 0)
+			{
+			  /* Add it back to the step-over queue.  */
+			  t->control.trap_expected = 0;
+			  thread_step_over_chain_enqueue (t);
+			}
 
-		  if (debug_infrun)
-		    {
-		      fprintf_unfiltered (gdb_stdlog,
-					  "infrun: saved stop_pc=%s for %s "
-					  "(currently_stepping=%d)\n",
-					  paddress (target_gdbarch (),
-						    t->suspend.stop_pc),
-					  target_pid_to_str (t->ptid).c_str (),
-					  currently_stepping (t));
+		      regcache = get_thread_regcache (t);
+		      t->suspend.stop_pc = regcache_read_pc (regcache);
+
+		      infrun_debug_printf ("saved stop_pc=%s for %s "
+					   "(currently_stepping=%d)",
+					   paddress (target_gdbarch (),
+						     t->suspend.stop_pc),
+					   target_pid_to_str (t->ptid).c_str (),
+					   currently_stepping (t));
 		    }
 		}
 	    }
 	}
     }
-
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog, "infrun: stop_all_threads done\n");
 }
 
 /* Handle a TARGET_WAITKIND_NO_RESUMED event.  */
@@ -4480,10 +4892,9 @@ handle_no_resumed (struct execution_cont
 {
   if (target_can_async_p ())
     {
-      struct ui *ui;
       int any_sync = 0;
 
-      ALL_UIS (ui)
+      for (ui *ui : all_uis ())
 	{
 	  if (ui->prompt_state == PROMPT_BLOCKED)
 	    {
@@ -4497,10 +4908,7 @@ handle_no_resumed (struct execution_cont
 	     we're not synchronously waiting for events either.  Just
 	     ignore.  */
 
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: TARGET_WAITKIND_NO_RESUMED "
-				"(ignoring: bg)\n");
+	  infrun_debug_printf ("TARGET_WAITKIND_NO_RESUMED (ignoring: bg)");
 	  prepare_to_wait (ecs);
 	  return 1;
 	}
@@ -4537,44 +4945,75 @@ handle_no_resumed (struct execution_cont
      have resumed threads _now_.  In the example above, this removes
      thread 3 from the thread list.  If thread 2 was re-resumed, we
      ignore this event.  If we find no thread resumed, then we cancel
-     the synchronous command show "no unwaited-for " to the user.  */
-  update_thread_list ();
+     the synchronous command and show "no unwaited-for " to the
+     user.  */
 
-  for (thread_info *thread : all_non_exited_threads ())
+  inferior *curr_inf = current_inferior ();
+
+  scoped_restore_current_thread restore_thread;
+
+  for (auto *target : all_non_exited_process_targets ())
     {
-      if (thread->executing
-	  || thread->suspend.waitstatus_pending_p)
-	{
-	  /* There were no unwaited-for children left in the target at
-	     some point, but there are now.  Just ignore.  */
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: TARGET_WAITKIND_NO_RESUMED "
-				"(ignoring: found resumed)\n");
-	  prepare_to_wait (ecs);
-	  return 1;
-	}
+      switch_to_target_no_thread (target);
+      update_thread_list ();
     }
 
-  /* Note however that we may find no resumed thread because the whole
-     process exited meanwhile (thus updating the thread list results
-     in an empty thread list).  In this case we know we'll be getting
-     a process exit event shortly.  */
-  for (inferior *inf : all_inferiors ())
+  /* If:
+
+       - the current target has no thread executing, and
+       - the current inferior is native, and
+       - the current inferior is the one which has the terminal, and
+       - we did nothing,
+
+     then a Ctrl-C from this point on would remain stuck in the
+     kernel, until a thread resumes and dequeues it.  That would
+     result in the GDB CLI not reacting to Ctrl-C, not able to
+     interrupt the program.  To address this, if the current inferior
+     no longer has any thread executing, we give the terminal to some
+     other inferior that has at least one thread executing.  */
+  bool swap_terminal = true;
+
+  /* Whether to ignore this TARGET_WAITKIND_NO_RESUMED event, or
+     whether to report it to the user.  */
+  bool ignore_event = false;
+
+  for (thread_info *thread : all_non_exited_threads ())
     {
-      if (inf->pid == 0)
-	continue;
+      if (swap_terminal && thread->executing)
+	{
+	  if (thread->inf != curr_inf)
+	    {
+	      target_terminal::ours ();
+
+	      switch_to_thread (thread);
+	      target_terminal::inferior ();
+	    }
+	  swap_terminal = false;
+	}
 
-      thread_info *thread = any_live_thread_of_inferior (inf);
-      if (thread == NULL)
+      if (!ignore_event
+	  && (thread->executing
+	      || thread->suspend.waitstatus_pending_p))
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: TARGET_WAITKIND_NO_RESUMED "
-				"(expect process exit)\n");
-	  prepare_to_wait (ecs);
-	  return 1;
+	  /* Either there were no unwaited-for children left in the
+	     target at some point, but there are now, or some target
+	     other than the eventing one has unwaited-for children
+	     left.  Just ignore.  */
+	  infrun_debug_printf ("TARGET_WAITKIND_NO_RESUMED "
+			       "(ignoring: found resumed)");
+
+	  ignore_event = true;
 	}
+
+      if (ignore_event && !swap_terminal)
+	break;
+    }
+
+  if (ignore_event)
+    {
+      switch_to_inferior_no_thread (curr_inf);
+      prepare_to_wait (ecs);
+      return 1;
     }
 
   /* Go ahead and report the event.  */
@@ -4604,9 +5043,7 @@ handle_inferior_event (struct execution_
 
   enum stop_kind stop_soon;
 
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog, "infrun: handle_inferior_event %s\n",
-			target_waitstatus_to_string (&ecs->ws).c_str ());
+  infrun_debug_printf ("%s", target_waitstatus_to_string (&ecs->ws).c_str ());
 
   if (ecs->ws.kind == TARGET_WAITKIND_IGNORE)
     {
@@ -4633,8 +5070,8 @@ handle_inferior_event (struct execution_
       && handle_no_resumed (ecs))
     return;
 
-  /* Cache the last pid/waitstatus.  */
-  set_last_target_status (ecs->ptid, ecs->ws);
+  /* Cache the last target/ptid/waitstatus.  */
+  set_last_target_status (ecs->target, ecs->ptid, ecs->ws);
 
   /* Always clear state belonging to the previous time we stopped.  */
   stop_stack_dummy = STOP_NONE;
@@ -4651,10 +5088,10 @@ handle_inferior_event (struct execution_
   if (ecs->ws.kind != TARGET_WAITKIND_EXITED
       && ecs->ws.kind != TARGET_WAITKIND_SIGNALLED)
     {
-      ecs->event_thread = find_thread_ptid (ecs->ptid);
+      ecs->event_thread = find_thread_ptid (ecs->target, ecs->ptid);
       /* If it's a new thread, add it to the thread database.  */
       if (ecs->event_thread == NULL)
-	ecs->event_thread = add_thread (ecs->ptid);
+	ecs->event_thread = add_thread (ecs->target, ecs->ptid);
 
       /* Disable range stepping.  If the next step request could use a
 	 range, this will be end up re-enabled then.  */
@@ -4689,48 +5126,12 @@ handle_inferior_event (struct execution_
       if (breakpoint_inserted_here_p (regcache->aspace (),
 				      regcache_read_pc (regcache)))
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: Treating signal as SIGTRAP\n");
+	  infrun_debug_printf ("Treating signal as SIGTRAP");
 	  ecs->ws.value.sig = GDB_SIGNAL_TRAP;
 	}
     }
 
-  /* Mark the non-executing threads accordingly.  In all-stop, all
-     threads of all processes are stopped when we get any event
-     reported.  In non-stop mode, only the event thread stops.  */
-  {
-    ptid_t mark_ptid;
-
-    if (!target_is_non_stop_p ())
-      mark_ptid = minus_one_ptid;
-    else if (ecs->ws.kind == TARGET_WAITKIND_SIGNALLED
-	     || ecs->ws.kind == TARGET_WAITKIND_EXITED)
-      {
-	/* If we're handling a process exit in non-stop mode, even
-	   though threads haven't been deleted yet, one would think
-	   that there is nothing to do, as threads of the dead process
-	   will be soon deleted, and threads of any other process were
-	   left running.  However, on some targets, threads survive a
-	   process exit event.  E.g., for the "checkpoint" command,
-	   when the current checkpoint/fork exits, linux-fork.c
-	   automatically switches to another fork from within
-	   target_mourn_inferior, by associating the same
-	   inferior/thread to another fork.  We haven't mourned yet at
-	   this point, but we must mark any threads left in the
-	   process as not-executing so that finish_thread_state marks
-	   them stopped (in the user's perspective) if/when we present
-	   the stop to the user.  */
-	mark_ptid = ptid_t (ecs->ptid.pid ());
-      }
-    else
-      mark_ptid = ecs->ptid;
-
-    set_executing (mark_ptid, 0);
-
-    /* Likewise the resumed flag.  */
-    set_resumed (mark_ptid, 0);
-  }
+  mark_non_executing_threads (ecs->target, ecs->ptid, ecs->ws);
 
   switch (ecs->ws.kind)
     {
@@ -4802,8 +5203,7 @@ handle_inferior_event (struct execution_
       if (stop_soon == STOP_QUIETLY_NO_SIGSTOP
 	  || stop_soon == STOP_QUIETLY_REMOTE)
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog, "infrun: quietly stopped\n");
+	  infrun_debug_printf ("quietly stopped");
 	  stop_waiting (ecs);
 	  return;
 	}
@@ -4829,9 +5229,21 @@ handle_inferior_event (struct execution_
 
     case TARGET_WAITKIND_EXITED:
     case TARGET_WAITKIND_SIGNALLED:
-      inferior_ptid = ecs->ptid;
-      set_current_inferior (find_inferior_ptid (ecs->ptid));
-      set_current_program_space (current_inferior ()->pspace);
+      {
+	/* Depending on the system, ecs->ptid may point to a thread or
+	   to a process.  On some targets, target_mourn_inferior may
+	   need to have access to the just-exited thread.  That is the
+	   case of GNU/Linux's "checkpoint" support, for example.
+	   Call the switch_to_xxx routine as appropriate.  */
+	thread_info *thr = find_thread_ptid (ecs->target, ecs->ptid);
+	if (thr != nullptr)
+	  switch_to_thread (thr);
+	else
+	  {
+	    inferior *inf = find_inferior_ptid (ecs->target, ecs->ptid);
+	    switch_to_inferior_no_thread (inf);
+	  }
+      }
       handle_vfork_child_exec_or_exit (0);
       target_terminal::ours ();	/* Must do this before mourn anyway.  */
 
@@ -4875,9 +5287,8 @@ handle_inferior_event (struct execution_
 		 information to the user.  It's better to just warn
 		 her about it (if infrun debugging is enabled), and
 		 give up.  */
-	      if (debug_infrun)
-		fprintf_filtered (gdb_stdlog, _("\
-Cannot fill $_exitsignal with the correct signal number.\n"));
+	      infrun_debug_printf ("Cannot fill $_exitsignal with the correct "
+				   "signal number.");
 	    }
 
 	  gdb::observers::signal_exited.notify (ecs->ws.value.sig);
@@ -4889,8 +5300,6 @@ Cannot fill $_exitsignal with the correc
       stop_waiting (ecs);
       return;
 
-      /* The following are the only cases in which we keep going;
-         the above cases end in a continue or goto.  */
     case TARGET_WAITKIND_FORKED:
     case TARGET_WAITKIND_VFORKED:
       /* Check whether the inferior is displaced stepping.  */
@@ -4903,10 +5312,19 @@ Cannot fill $_exitsignal with the correc
 	if (displaced_step_in_progress_thread (ecs->event_thread))
 	  {
 	    struct inferior *parent_inf
-	      = find_inferior_ptid (ecs->ptid);
+	      = find_inferior_ptid (ecs->target, ecs->ptid);
 	    struct regcache *child_regcache;
 	    CORE_ADDR parent_pc;
 
+	    if (ecs->ws.kind == TARGET_WAITKIND_FORKED)
+	      {
+		struct displaced_step_inferior_state *displaced
+		  = get_displaced_stepping_state (parent_inf);
+
+		/* Restore scratch pad for child process.  */
+		displaced_step_restore (displaced, ecs->ws.value.related_pid);
+	      }
+
 	    /* GDB has got TARGET_WAITKIND_FORKED or TARGET_WAITKIND_VFORKED,
 	       indicating that the displaced stepping of syscall instruction
 	       has been done.  Perform cleanup for parent process here.  Note
@@ -4917,15 +5335,6 @@ Cannot fill $_exitsignal with the correc
 	       that needs it.  */
 	    start_step_over ();
 
-	    if (ecs->ws.kind == TARGET_WAITKIND_FORKED)
-	      {
-		struct displaced_step_inferior_state *displaced
-		  = get_displaced_stepping_state (parent_inf);
-
-		/* Restore scratch pad for child process.  */
-		displaced_step_restore (displaced, ecs->ws.value.related_pid);
-	      }
-
 	    /* Since the vfork/fork syscall instruction was executed in the scratchpad,
 	       the child's PC is also within the scratchpad.  Set the child's PC
 	       to the parent's PC value, which has already been fixed up.
@@ -4934,7 +5343,8 @@ Cannot fill $_exitsignal with the correc
 	       list yet at this point.  */
 
 	    child_regcache
-	      = get_thread_arch_aspace_regcache (ecs->ws.value.related_pid,
+	      = get_thread_arch_aspace_regcache (parent_inf->process_target (),
+						 ecs->ws.value.related_pid,
 						 gdbarch,
 						 parent_inf->aspace);
 	    /* Read PC value of parent process.  */
@@ -4996,16 +5406,21 @@ Cannot fill $_exitsignal with the correc
 	 watchpoints, for example, always appear in the bpstat.  */
       if (!bpstat_causes_stop (ecs->event_thread->control.stop_bpstat))
 	{
-	  int should_resume;
-	  int follow_child
+	  bool follow_child
 	    = (follow_fork_mode_string == follow_fork_mode_child);
 
 	  ecs->event_thread->suspend.stop_signal = GDB_SIGNAL_0;
 
-	  should_resume = follow_fork ();
+	  process_stratum_target *targ
+	    = ecs->event_thread->inf->process_target ();
 
+	  bool should_resume = follow_fork ();
+
+	  /* Note that one of these may be an invalid pointer,
+	     depending on detach_fork.  */
 	  thread_info *parent = ecs->event_thread;
-	  thread_info *child = find_thread_ptid (ecs->ws.value.related_pid);
+	  thread_info *child
+	    = find_thread_ptid (targ, ecs->ws.value.related_pid);
 
 	  /* At this point, the parent is marked running, and the
 	     child is marked stopped.  */
@@ -5139,8 +5554,7 @@ Cannot fill $_exitsignal with the correc
 
       /* Switch to the stopped thread.  */
       context_switch (ecs);
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog, "infrun: stopped\n");
+      infrun_debug_printf ("stopped");
 
       delete_just_stopped_threads_single_step_breakpoints ();
       ecs->event_thread->suspend.stop_pc
@@ -5167,43 +5581,34 @@ restart_threads (struct thread_info *eve
 
   for (thread_info *tp : all_non_exited_threads ())
     {
+      switch_to_thread_no_regs (tp);
+
       if (tp == event_thread)
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: restart threads: "
-				"[%s] is event thread\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("restart threads: [%s] is event thread",
+			       target_pid_to_str (tp->ptid).c_str ());
 	  continue;
 	}
 
       if (!(tp->state == THREAD_RUNNING || tp->control.in_infcall))
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: restart threads: "
-				"[%s] not meant to be running\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("restart threads: [%s] not meant to be running",
+			       target_pid_to_str (tp->ptid).c_str ());
 	  continue;
 	}
 
       if (tp->resumed)
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: restart threads: [%s] resumed\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("restart threads: [%s] resumed",
+			      target_pid_to_str (tp->ptid).c_str ());
 	  gdb_assert (tp->executing || tp->suspend.waitstatus_pending_p);
 	  continue;
 	}
 
       if (thread_is_in_step_over_chain (tp))
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: restart threads: "
-				"[%s] needs step-over\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("restart threads: [%s] needs step-over",
+			       target_pid_to_str (tp->ptid).c_str ());
 	  gdb_assert (!tp->resumed);
 	  continue;
 	}
@@ -5211,12 +5616,9 @@ restart_threads (struct thread_info *eve
 
       if (tp->suspend.waitstatus_pending_p)
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: restart threads: "
-				"[%s] has pending status\n",
-				target_pid_to_str (tp->ptid).c_str ());
-	  tp->resumed = 1;
+	  infrun_debug_printf ("restart threads: [%s] has pending status",
+			       target_pid_to_str (tp->ptid).c_str ());
+	  tp->resumed = true;
 	  continue;
 	}
 
@@ -5235,10 +5637,8 @@ restart_threads (struct thread_info *eve
 
       if (currently_stepping (tp))
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: restart threads: [%s] was stepping\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("restart threads: [%s] was stepping",
+			       target_pid_to_str (tp->ptid).c_str ());
 	  keep_going_stepped_thread (tp);
 	}
       else
@@ -5246,10 +5646,8 @@ restart_threads (struct thread_info *eve
 	  struct execution_control_state ecss;
 	  struct execution_control_state *ecs = &ecss;
 
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: restart threads: [%s] continuing\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("restart threads: [%s] continuing",
+			       target_pid_to_str (tp->ptid).c_str ());
 	  reset_ecs (ecs, tp);
 	  switch_to_thread (tp);
 	  keep_going_pass_signal (ecs);
@@ -5342,12 +5740,8 @@ finish_step_over (struct execution_contr
 	  struct thread_info *tp = ecs->event_thread;
 	  struct regcache *regcache;
 
-	  if (debug_infrun)
-	    {
-	      fprintf_unfiltered (gdb_stdlog,
-				  "infrun: found resumed threads with "
-				  "pending events, saving status\n");
-	    }
+	  infrun_debug_printf ("found resumed threads with "
+			       "pending events, saving status");
 
 	  gdb_assert (pending != tp);
 
@@ -5356,23 +5750,19 @@ finish_step_over (struct execution_contr
 	  /* This was cleared early, by handle_inferior_event.  Set it
 	     so this pending event is considered by
 	     do_target_wait.  */
-	  tp->resumed = 1;
+	  tp->resumed = true;
 
 	  gdb_assert (!tp->executing);
 
 	  regcache = get_thread_regcache (tp);
 	  tp->suspend.stop_pc = regcache_read_pc (regcache);
 
-	  if (debug_infrun)
-	    {
-	      fprintf_unfiltered (gdb_stdlog,
-				  "infrun: saved stop_pc=%s for %s "
-				  "(currently_stepping=%d)\n",
-				  paddress (target_gdbarch (),
-					    tp->suspend.stop_pc),
-				  target_pid_to_str (tp->ptid).c_str (),
-				  currently_stepping (tp));
-	    }
+	  infrun_debug_printf ("saved stop_pc=%s for %s "
+			       "(currently_stepping=%d)",
+			       paddress (target_gdbarch (),
+				         tp->suspend.stop_pc),
+			       target_pid_to_str (tp->ptid).c_str (),
+			       currently_stepping (tp));
 
 	  /* This in-line step-over finished; clear this so we won't
 	     start a new one.  This is what handle_signal_stop would
@@ -5425,26 +5815,23 @@ handle_signal_stop (struct execution_con
     {
       struct regcache *regcache = get_thread_regcache (ecs->event_thread);
       struct gdbarch *reg_gdbarch = regcache->arch ();
-      scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
 
-      inferior_ptid = ecs->ptid;
+      switch_to_thread (ecs->event_thread);
 
-      fprintf_unfiltered (gdb_stdlog, "infrun: stop_pc = %s\n",
-			  paddress (reg_gdbarch,
-				    ecs->event_thread->suspend.stop_pc));
+      infrun_debug_printf ("stop_pc=%s",
+			   paddress (reg_gdbarch,
+				     ecs->event_thread->suspend.stop_pc));
       if (target_stopped_by_watchpoint ())
 	{
           CORE_ADDR addr;
 
-	  fprintf_unfiltered (gdb_stdlog, "infrun: stopped by watchpoint\n");
+	  infrun_debug_printf ("stopped by watchpoint");
 
 	  if (target_stopped_data_address (current_top_target (), &addr))
-            fprintf_unfiltered (gdb_stdlog,
-                                "infrun: stopped data address = %s\n",
-                                paddress (reg_gdbarch, addr));
+	    infrun_debug_printf ("stopped data address=%s",
+			         paddress (reg_gdbarch, addr));
           else
-            fprintf_unfiltered (gdb_stdlog,
-                                "infrun: (no data address available)\n");
+	    infrun_debug_printf ("(no data address available)");
 	}
     }
 
@@ -5454,8 +5841,7 @@ handle_signal_stop (struct execution_con
   if (stop_soon == STOP_QUIETLY || stop_soon == STOP_QUIETLY_REMOTE)
     {
       context_switch (ecs);
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog, "infrun: quietly stopped\n");
+      infrun_debug_printf ("quietly stopped");
       stop_print_frame = 1;
       stop_waiting (ecs);
       return;
@@ -5496,8 +5882,7 @@ handle_signal_stop (struct execution_con
      so, then switch to that thread.  */
   if (ecs->ptid != inferior_ptid)
     {
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog, "infrun: context switch\n");
+      infrun_debug_printf ("context switch");
 
       context_switch (ecs);
 
@@ -5528,25 +5913,16 @@ handle_signal_stop (struct execution_con
 	{
 	  if (single_step_breakpoint_inserted_here_p (aspace, pc))
 	    {
-	      if (debug_infrun)
-		{
-		  fprintf_unfiltered (gdb_stdlog,
-				      "infrun: [%s] hit another thread's "
-				      "single-step breakpoint\n",
-				      target_pid_to_str (ecs->ptid).c_str ());
-		}
+	      infrun_debug_printf ("[%s] hit another thread's single-step "
+				   "breakpoint",
+				   target_pid_to_str (ecs->ptid).c_str ());
 	      ecs->hit_singlestep_breakpoint = 1;
 	    }
 	}
       else
 	{
-	  if (debug_infrun)
-	    {
-	      fprintf_unfiltered (gdb_stdlog,
-				  "infrun: [%s] hit its "
-				  "single-step breakpoint\n",
-				  target_pid_to_str (ecs->ptid).c_str ());
-	    }
+	  infrun_debug_printf ("[%s] hit its single-step breakpoint",
+			       target_pid_to_str (ecs->ptid).c_str ());
 	}
     }
   delete_just_stopped_threads_single_step_breakpoints ();
@@ -5661,8 +6037,9 @@ handle_signal_stop (struct execution_con
       int step_through_delay
 	= gdbarch_single_step_through_delay (gdbarch, frame);
 
-      if (debug_infrun && step_through_delay)
-	fprintf_unfiltered (gdb_stdlog, "infrun: step through delay\n");
+      if (step_through_delay)
+	infrun_debug_printf ("step through delay");
+
       if (ecs->event_thread->control.step_range_end == 0
 	  && step_through_delay)
 	{
@@ -5703,14 +6080,14 @@ handle_signal_stop (struct execution_con
      simply make sure to ignore it if `stopped_by_watchpoint' is
      set.  */
 
-  if (debug_infrun
-      && ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
+  if (ecs->event_thread->suspend.stop_signal == GDB_SIGNAL_TRAP
       && !bpstat_explains_signal (ecs->event_thread->control.stop_bpstat,
 				  GDB_SIGNAL_TRAP)
       && stopped_by_watchpoint)
-    fprintf_unfiltered (gdb_stdlog,
-			"infrun: no user watchpoint explains "
-			"watchpoint SIGTRAP, ignoring\n");
+    {
+      infrun_debug_printf ("no user watchpoint explains watchpoint SIGTRAP, "
+			   "ignoring");
+    }
 
   /* NOTE: cagney/2003-03-29: These checks for a random signal
      at one stage in the past included checks for an inferior
@@ -5741,8 +6118,8 @@ handle_signal_stop (struct execution_con
      been removed.  */
   if (random_signal && target_stopped_by_sw_breakpoint ())
     {
-      if (program_breakpoint_here_p (gdbarch,
-				     ecs->event_thread->suspend.stop_pc))
+      if (gdbarch_program_breakpoint_here_p (gdbarch,
+					     ecs->event_thread->suspend.stop_pc))
 	{
 	  struct regcache *regcache;
 	  int decr_pc;
@@ -5767,10 +6144,7 @@ handle_signal_stop (struct execution_con
       else
 	{
 	  /* A delayed software breakpoint event.  Ignore the trap.  */
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: delayed software breakpoint "
-				"trap, ignoring\n");
+	  infrun_debug_printf ("delayed software breakpoint trap, ignoring");
 	  random_signal = 0;
 	}
     }
@@ -5780,10 +6154,8 @@ handle_signal_stop (struct execution_con
   if (random_signal && target_stopped_by_hw_breakpoint ())
     {
       /* A delayed hardware breakpoint event.  Ignore the trap.  */
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: delayed hardware breakpoint/watchpoint "
-			    "trap, ignoring\n");
+      infrun_debug_printf ("delayed hardware breakpoint/watchpoint "
+			   "trap, ignoring");
       random_signal = 0;
     }
 
@@ -5807,8 +6179,7 @@ handle_signal_stop (struct execution_con
   if (ecs->event_thread->stop_requested)
     {
       random_signal = 1;
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog, "infrun: user-requested stop\n");
+      infrun_debug_printf ("user-requested stop");
     }
 
   /* For the program's own signals, act according to
@@ -5817,12 +6188,11 @@ handle_signal_stop (struct execution_con
   if (random_signal)
     {
       /* Signal not for debugging purposes.  */
-      struct inferior *inf = find_inferior_ptid (ecs->ptid);
+      struct inferior *inf = find_inferior_ptid (ecs->target, ecs->ptid);
       enum gdb_signal stop_signal = ecs->event_thread->suspend.stop_signal;
 
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog, "infrun: random signal (%s)\n",
-			     gdb_signal_to_symbol_string (stop_signal));
+      infrun_debug_printf ("random signal (%s)",
+			   gdb_signal_to_symbol_string (stop_signal));
 
       stopped_by_random_signal = 1;
 
@@ -5867,10 +6237,7 @@ handle_signal_stop (struct execution_con
 	     code paths as single-step - set a breakpoint at the
 	     signal return address and then, once hit, step off that
 	     breakpoint.  */
-          if (debug_infrun)
-            fprintf_unfiltered (gdb_stdlog,
-                                "infrun: signal arrived while stepping over "
-                                "breakpoint\n");
+	  infrun_debug_printf ("signal arrived while stepping over breakpoint");
 
 	  insert_hp_step_resume_breakpoint_at_frame (frame);
 	  ecs->event_thread->step_after_step_resume_breakpoint = 1;
@@ -5901,10 +6268,7 @@ handle_signal_stop (struct execution_con
 	     Note that this is only needed for a signal delivered
 	     while in the single-step range.  Nested signals aren't a
 	     problem as they eventually all return.  */
-          if (debug_infrun)
-            fprintf_unfiltered (gdb_stdlog,
-                                "infrun: signal may take us out of "
-                                "single-step range\n");
+	  infrun_debug_printf ("signal may take us out of single-step range");
 
 	  clear_step_over_info ();
 	  insert_hp_step_resume_breakpoint_at_frame (frame);
@@ -5924,9 +6288,7 @@ handle_signal_stop (struct execution_con
 
       if (!switch_back_to_stepped_thread (ecs))
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: random signal, keep going\n");
+	  infrun_debug_printf ("random signal, keep going");
 
 	  keep_going (ecs);
 	}
@@ -5980,9 +6342,7 @@ process_event_stop_test (struct executio
 	 install a momentary breakpoint at the target of the
 	 jmp_buf.  */
 
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME\n");
+      infrun_debug_printf ("BPSTAT_WHAT_SET_LONGJMP_RESUME");
 
       ecs->event_thread->stepping_over_breakpoint = 1;
 
@@ -6003,10 +6363,8 @@ process_event_stop_test (struct executio
 		   || !gdbarch_get_longjmp_target (gdbarch,
 						   frame, &jmp_buf_pc))
 	    {
-	      if (debug_infrun)
-		fprintf_unfiltered (gdb_stdlog,
-				    "infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME "
-				    "(!gdbarch_get_longjmp_target)\n");
+	      infrun_debug_printf ("BPSTAT_WHAT_SET_LONGJMP_RESUME "
+				   "(!gdbarch_get_longjmp_target)");
 	      keep_going (ecs);
 	      return;
 	    }
@@ -6041,9 +6399,7 @@ process_event_stop_test (struct executio
 	   against stale dummy frames and user is not interested in
 	   stopping around longjmps.  */
 
-	if (debug_infrun)
-	  fprintf_unfiltered (gdb_stdlog,
-			      "infrun: BPSTAT_WHAT_CLEAR_LONGJMP_RESUME\n");
+	infrun_debug_printf ("BPSTAT_WHAT_CLEAR_LONGJMP_RESUME");
 
 	gdb_assert (ecs->event_thread->control.exception_resume_breakpoint
 		    != NULL);
@@ -6089,16 +6445,14 @@ process_event_stop_test (struct executio
       return;
 
     case BPSTAT_WHAT_SINGLE:
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_SINGLE\n");
+      infrun_debug_printf ("BPSTAT_WHAT_SINGLE");
       ecs->event_thread->stepping_over_breakpoint = 1;
       /* Still need to check other stuff, at least the case where we
 	 are stepping and step out of the right range.  */
       break;
 
     case BPSTAT_WHAT_STEP_RESUME:
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STEP_RESUME\n");
+      infrun_debug_printf ("BPSTAT_WHAT_STEP_RESUME");
 
       delete_step_resume_breakpoint (ecs->event_thread);
       if (ecs->event_thread->control.proceed_to_finish
@@ -6130,11 +6484,10 @@ process_event_stop_test (struct executio
       break;
 
     case BPSTAT_WHAT_STOP_NOISY:
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STOP_NOISY\n");
+      infrun_debug_printf ("BPSTAT_WHAT_STOP_NOISY");
       stop_print_frame = 1;
 
-      /* Assume the thread stopped for a breapoint.  We'll still check
+      /* Assume the thread stopped for a breakpoint.  We'll still check
 	 whether a/the breakpoint is there when the thread is next
 	 resumed.  */
       ecs->event_thread->stepping_over_breakpoint = 1;
@@ -6143,11 +6496,10 @@ process_event_stop_test (struct executio
       return;
 
     case BPSTAT_WHAT_STOP_SILENT:
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_STOP_SILENT\n");
+      infrun_debug_printf ("BPSTAT_WHAT_STOP_SILENT");
       stop_print_frame = 0;
 
-      /* Assume the thread stopped for a breapoint.  We'll still check
+      /* Assume the thread stopped for a breakpoint.  We'll still check
 	 whether a/the breakpoint is there when the thread is next
 	 resumed.  */
       ecs->event_thread->stepping_over_breakpoint = 1;
@@ -6155,8 +6507,7 @@ process_event_stop_test (struct executio
       return;
 
     case BPSTAT_WHAT_HP_STEP_RESUME:
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_HP_STEP_RESUME\n");
+      infrun_debug_printf ("BPSTAT_WHAT_HP_STEP_RESUME");
 
       delete_step_resume_breakpoint (ecs->event_thread);
       if (ecs->event_thread->step_after_step_resume_breakpoint)
@@ -6191,10 +6542,7 @@ process_event_stop_test (struct executio
 	  && sr_bp->type == bp_hp_step_resume
 	  && sr_bp->loc->address == ecs->event_thread->prev_pc)
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: stepped permanent breakpoint, stopped in "
-				"handler\n");
+	  infrun_debug_printf ("stepped permanent breakpoint, stopped in handler");
 	  delete_step_resume_breakpoint (ecs->event_thread);
 	  ecs->event_thread->step_after_step_resume_breakpoint = 0;
 	}
@@ -6212,9 +6560,7 @@ process_event_stop_test (struct executio
 
   if (ecs->event_thread->control.step_resume_breakpoint)
     {
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog,
-			     "infrun: step-resume breakpoint is inserted\n");
+      infrun_debug_printf ("step-resume breakpoint is inserted");
 
       /* Having a step-resume breakpoint overrides anything
          else having to do with stepping commands until
@@ -6225,8 +6571,7 @@ process_event_stop_test (struct executio
 
   if (ecs->event_thread->control.step_range_end == 0)
     {
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog, "infrun: no stepping, continue\n");
+      infrun_debug_printf ("no stepping, continue");
       /* Likewise if we aren't even stepping.  */
       keep_going (ecs);
       return;
@@ -6255,11 +6600,10 @@ process_event_stop_test (struct executio
 	  || frame_id_eq (get_frame_id (frame),
 			  ecs->event_thread->control.step_frame_id)))
     {
-      if (debug_infrun)
-	fprintf_unfiltered
-	  (gdb_stdlog, "infrun: stepping inside range [%s-%s]\n",
-	   paddress (gdbarch, ecs->event_thread->control.step_range_start),
-	   paddress (gdbarch, ecs->event_thread->control.step_range_end));
+      infrun_debug_printf
+	("stepping inside range [%s-%s]",
+	 paddress (gdbarch, ecs->event_thread->control.step_range_start),
+	 paddress (gdbarch, ecs->event_thread->control.step_range_end));
 
       /* Tentatively re-enable range stepping; `resume' disables it if
 	 necessary (e.g., if we're stepping over a breakpoint or we
@@ -6302,9 +6646,7 @@ process_event_stop_test (struct executio
 	gdbarch_skip_solib_resolver (gdbarch,
 				     ecs->event_thread->suspend.stop_pc);
 
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog,
-			     "infrun: stepped into dynsym resolve code\n");
+      infrun_debug_printf ("stepped into dynsym resolve code");
 
       if (pc_after_resolver)
 	{
@@ -6327,9 +6669,7 @@ process_event_stop_test (struct executio
       && gdbarch_in_indirect_branch_thunk (gdbarch,
 					   ecs->event_thread->suspend.stop_pc))
     {
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog,
-			     "infrun: stepped into indirect branch thunk\n");
+      infrun_debug_printf ("stepped into indirect branch thunk");
       keep_going (ecs);
       return;
     }
@@ -6339,9 +6679,7 @@ process_event_stop_test (struct executio
 	  || ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
       && get_frame_type (frame) == SIGTRAMP_FRAME)
     {
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog,
-			     "infrun: stepped into signal trampoline\n");
+      infrun_debug_printf ("stepped into signal trampoline");
       /* The inferior, while doing a "step" or "next", has ended up in
          a signal trampoline (either by a signal being delivered or by
          the signal handler returning).  Just single-step until the
@@ -6366,9 +6704,7 @@ process_event_stop_test (struct executio
       CORE_ADDR real_stop_pc
 	= gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc);
 
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog,
-			     "infrun: stepped into solib return tramp\n");
+      infrun_debug_printf ("stepped into solib return tramp");
 
       /* Only proceed through if we know where it's going.  */
       if (real_stop_pc)
@@ -6421,8 +6757,7 @@ process_event_stop_test (struct executio
       CORE_ADDR stop_pc = ecs->event_thread->suspend.stop_pc;
       CORE_ADDR real_stop_pc;
 
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog, "infrun: stepped into subroutine\n");
+      infrun_debug_printf ("stepped into subroutine");
 
       if (ecs->event_thread->control.step_over_calls == STEP_OVER_NONE)
 	{
@@ -6524,7 +6859,8 @@ process_event_stop_test (struct executio
 	tmp_sal = find_pc_line (ecs->stop_func_start, 0);
 	if (tmp_sal.line != 0
 	    && !function_name_is_marked_for_skip (ecs->stop_func_name,
-						  tmp_sal))
+						  tmp_sal)
+	    && !inline_frame_is_marked_for_skip (true, ecs->event_thread))
 	  {
 	    if (execution_direction == EXEC_REVERSE)
 	      handle_step_into_function_backward (gdbarch, ecs);
@@ -6605,6 +6941,10 @@ process_event_stop_test (struct executio
 	}
     }
 
+  /* This always returns the sal for the inner-most frame when we are in a
+     stack of inlined frames, even if GDB actually believes that it is in a
+     more outer frame.  This is checked for below by calls to
+     inline_skipped_frames.  */
   stop_pc_sal = find_pc_line (ecs->event_thread->suspend.stop_pc, 0);
 
   /* NOTE: tausq/2004-05-24: This if block used to be done before all
@@ -6614,9 +6954,7 @@ process_event_stop_test (struct executio
       && ecs->stop_func_name == NULL
       && stop_pc_sal.line == 0)
     {
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog,
-			     "infrun: stepped into undebuggable function\n");
+      infrun_debug_printf ("stepped into undebuggable function");
 
       /* The inferior just stepped into, or returned to, an
          undebuggable function (where there is no debugging information
@@ -6649,8 +6987,7 @@ process_event_stop_test (struct executio
     {
       /* It is stepi or nexti.  We always want to stop stepping after
          one instruction.  */
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog, "infrun: stepi/nexti\n");
+      infrun_debug_printf ("stepi/nexti");
       end_stepping_range (ecs);
       return;
     }
@@ -6661,8 +6998,7 @@ process_event_stop_test (struct executio
          stepping (does this always happen right after one instruction,
          when we do "s" in a function with no line numbers,
          or can this happen as a result of a return or longjmp?).  */
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog, "infrun: no line number info\n");
+      infrun_debug_printf ("line number info");
       end_stepping_range (ecs);
       return;
     }
@@ -6675,9 +7011,7 @@ process_event_stop_test (struct executio
 		   ecs->event_thread->control.step_frame_id)
       && inline_skipped_frames (ecs->event_thread))
     {
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: stepped into inlined function\n");
+      infrun_debug_printf ("stepped into inlined function");
 
       symtab_and_line call_sal = find_frame_sal (get_current_frame ());
 
@@ -6690,7 +7024,14 @@ process_event_stop_test (struct executio
 
 	  if (call_sal.line == ecs->event_thread->current_line
 	      && call_sal.symtab == ecs->event_thread->current_symtab)
-	    step_into_inline_frame (ecs->event_thread);
+	    {
+	      step_into_inline_frame (ecs->event_thread);
+	      if (inline_frame_is_marked_for_skip (false, ecs->event_thread))
+		{
+		  keep_going (ecs);
+		  return;
+		}
+	    }
 
 	  end_stepping_range (ecs);
 	  return;
@@ -6720,30 +7061,42 @@ process_event_stop_test (struct executio
       && stepped_in_from (get_current_frame (),
 			  ecs->event_thread->control.step_frame_id))
     {
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: stepping through inlined function\n");
+      infrun_debug_printf ("stepping through inlined function");
 
-      if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
+      if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL
+	  || inline_frame_is_marked_for_skip (false, ecs->event_thread))
 	keep_going (ecs);
       else
 	end_stepping_range (ecs);
       return;
     }
 
+  bool refresh_step_info = true;
   if ((ecs->event_thread->suspend.stop_pc == stop_pc_sal.pc)
       && (ecs->event_thread->current_line != stop_pc_sal.line
  	  || ecs->event_thread->current_symtab != stop_pc_sal.symtab))
     {
-      /* We are at the start of a different line.  So stop.  Note that
-         we don't stop if we step into the middle of a different line.
-         That is said to make things like for (;;) statements work
-         better.  */
-      if (debug_infrun)
-	 fprintf_unfiltered (gdb_stdlog,
-			     "infrun: stepped to a different line\n");
-      end_stepping_range (ecs);
-      return;
+      if (stop_pc_sal.is_stmt)
+	{
+	  /* We are at the start of a different line.  So stop.  Note that
+	     we don't stop if we step into the middle of a different line.
+	     That is said to make things like for (;;) statements work
+	     better.  */
+	  infrun_debug_printf ("stepped to a different line");
+	  end_stepping_range (ecs);
+	  return;
+	}
+      else if (frame_id_eq (get_frame_id (get_current_frame ()),
+			    ecs->event_thread->control.step_frame_id))
+	{
+	  /* We are at the start of a different line, however, this line is
+	     not marked as a statement, and we have not changed frame.  We
+	     ignore this line table entry, and continue stepping forward,
+	     looking for a better place to stop.  */
+	  refresh_step_info = false;
+	  infrun_debug_printf ("stepped to a different line, but "
+			       "it's not the start of a statement");
+	}
     }
 
   /* We aren't done stepping.
@@ -6751,15 +7104,22 @@ process_event_stop_test (struct executio
      Optimize by setting the stepping range to the line.
      (We might not be in the original line, but if we entered a
      new line in mid-statement, we continue stepping.  This makes
-     things like for(;;) statements work better.)  */
+     things like for(;;) statements work better.)
+
+     If we entered a SAL that indicates a non-statement line table entry,
+     then we update the stepping range, but we don't update the step info,
+     which includes things like the line number we are stepping away from.
+     This means we will stop when we find a line table entry that is marked
+     as is-statement, even if it matches the non-statement one we just
+     stepped into.   */
 
   ecs->event_thread->control.step_range_start = stop_pc_sal.pc;
   ecs->event_thread->control.step_range_end = stop_pc_sal.end;
   ecs->event_thread->control.may_range_step = 1;
-  set_step_info (frame, stop_pc_sal);
+  if (refresh_step_info)
+    set_step_info (ecs->event_thread, frame, stop_pc_sal);
 
-  if (debug_infrun)
-     fprintf_unfiltered (gdb_stdlog, "infrun: keep going\n");
+  infrun_debug_printf ("keep going");
   keep_going (ecs);
 }
 
@@ -6791,12 +7151,9 @@ switch_back_to_stepped_thread (struct ex
       if (ecs->event_thread->control.trap_expected
 	  && ecs->event_thread->suspend.stop_signal != GDB_SIGNAL_TRAP)
 	{
-	  if (debug_infrun)
-	    {
-	      fprintf_unfiltered (gdb_stdlog,
-				  "infrun: need to finish step-over of [%s]\n",
-				  target_pid_to_str (ecs->event_thread->ptid).c_str ());
-	    }
+	  infrun_debug_printf
+	    ("need to finish step-over of [%s]",
+	     target_pid_to_str (ecs->event_thread->ptid).c_str ());
 	  keep_going (ecs);
 	  return 1;
 	}
@@ -6805,13 +7162,8 @@ switch_back_to_stepped_thread (struct ex
 	 breakpoint of another thread.  */
       if (ecs->hit_singlestep_breakpoint)
        {
-	 if (debug_infrun)
-	   {
-	     fprintf_unfiltered (gdb_stdlog,
-				 "infrun: need to step [%s] over single-step "
-				 "breakpoint\n",
-				 target_pid_to_str (ecs->ptid).c_str ());
-	   }
+	 infrun_debug_printf ("need to step [%s] over single-step breakpoint",
+			      target_pid_to_str (ecs->ptid).c_str ());
 	 keep_going (ecs);
 	 return 1;
        }
@@ -6821,12 +7173,9 @@ switch_back_to_stepped_thread (struct ex
 	 another thread.  */
       if (thread_still_needs_step_over (ecs->event_thread))
 	{
-	  if (debug_infrun)
-	    {
-	      fprintf_unfiltered (gdb_stdlog,
-				  "infrun: thread [%s] still needs step-over\n",
-				  target_pid_to_str (ecs->event_thread->ptid).c_str ());
-	    }
+	  infrun_debug_printf
+	    ("thread [%s] still needs step-over",
+	     target_pid_to_str (ecs->event_thread->ptid).c_str ());
 	  keep_going (ecs);
 	  return 1;
 	}
@@ -6861,10 +7210,13 @@ switch_back_to_stepped_thread (struct ex
 
       for (thread_info *tp : all_non_exited_threads ())
         {
+	  switch_to_thread_no_regs (tp);
+
 	  /* Ignore threads of processes the caller is not
 	     resuming.  */
 	  if (!sched_multi
-	      && tp->ptid.pid () != ecs->ptid.pid ())
+	      && (tp->inf->process_target () != ecs->target
+		  || tp->inf->pid != ecs->ptid.pid ()))
 	    continue;
 
 	  /* When stepping over a breakpoint, we lock all threads
@@ -6902,9 +7254,7 @@ switch_back_to_stepped_thread (struct ex
 
       if (stepping_thread != NULL)
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: switching back to stepped thread\n");
+	  infrun_debug_printf ("switching back to stepped thread");
 
 	  if (keep_going_stepped_thread (stepping_thread))
 	    {
@@ -6912,6 +7262,8 @@ switch_back_to_stepped_thread (struct ex
 	      return 1;
 	    }
 	}
+
+      switch_to_thread (ecs->event_thread);
     }
 
   return 0;
@@ -6948,18 +7300,14 @@ keep_going_stepped_thread (struct thread
 
   if (tp->state == THREAD_EXITED || !target_thread_alive (tp->ptid))
     {
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: not resuming previously  "
-			    "stepped thread, it has vanished\n");
+      infrun_debug_printf ("not resuming previously stepped thread, it has "
+			   "vanished");
 
       delete_thread (tp);
       return 0;
     }
 
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog,
-			"infrun: resuming previously stepped thread\n");
+  infrun_debug_printf ("resuming previously stepped thread");
 
   reset_ecs (ecs, tp);
   switch_to_thread (tp);
@@ -6984,11 +7332,9 @@ keep_going_stepped_thread (struct thread
     {
       ptid_t resume_ptid;
 
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: expected thread advanced also (%s -> %s)\n",
-			    paddress (target_gdbarch (), tp->prev_pc),
-			    paddress (target_gdbarch (), tp->suspend.stop_pc));
+      infrun_debug_printf ("expected thread advanced also (%s -> %s)",
+			   paddress (target_gdbarch (), tp->prev_pc),
+			   paddress (target_gdbarch (), tp->suspend.stop_pc));
 
       /* Clear the info of the previous step-over, as it's no longer
 	 valid (if the thread was trying to step over a breakpoint, it
@@ -7004,15 +7350,13 @@ keep_going_stepped_thread (struct thread
 				     get_frame_address_space (frame),
 				     tp->suspend.stop_pc);
 
-      tp->resumed = 1;
+      tp->resumed = true;
       resume_ptid = internal_resume_ptid (tp->control.stepping_command);
       do_target_resume (resume_ptid, 0, GDB_SIGNAL_0);
     }
   else
     {
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: expected thread still hasn't advanced\n");
+      infrun_debug_printf ("expected thread still hasn't advanced");
 
       keep_going_pass_signal (ecs);
     }
@@ -7163,10 +7507,8 @@ insert_step_resume_breakpoint_at_sal_1 (
   gdb_assert (inferior_thread ()->control.step_resume_breakpoint == NULL);
   gdb_assert (sr_type == bp_step_resume || sr_type == bp_hp_step_resume);
 
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog,
-			"infrun: inserting step-resume breakpoint at %s\n",
-			paddress (gdbarch, sr_sal.pc));
+  infrun_debug_printf ("inserting step-resume breakpoint at %s",
+		       paddress (gdbarch, sr_sal.pc));
 
   inferior_thread ()->control.step_resume_breakpoint
     = set_momentary_breakpoint (gdbarch, sr_sal, sr_id, sr_type).release ();
@@ -7252,10 +7594,8 @@ insert_longjmp_resume_breakpoint (struct
      longjmp_resume_breakpoint when one is already active.  */
   gdb_assert (inferior_thread ()->control.exception_resume_breakpoint == NULL);
 
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog,
-			"infrun: inserting longjmp-resume breakpoint at %s\n",
-			paddress (gdbarch, pc));
+  infrun_debug_printf ("inserting longjmp-resume breakpoint at %s",
+		       paddress (gdbarch, pc));
 
   inferior_thread ()->control.exception_resume_breakpoint =
     set_momentary_breakpoint_at_pc (gdbarch, pc, bp_longjmp_resume).release ();
@@ -7288,10 +7628,8 @@ insert_exception_resume_breakpoint (stru
 	{
 	  handler = value_as_address (value);
 
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: exception resume at %lx\n",
-				(unsigned long) handler);
+	  infrun_debug_printf ("exception resume at %lx",
+			       (unsigned long) handler);
 
 	  bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame),
 					       handler,
@@ -7328,11 +7666,8 @@ insert_exception_resume_from_probe (stru
 
   handler = value_as_address (arg_value);
 
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog,
-			"infrun: exception resume at %s\n",
-			paddress (get_objfile_arch (probe->objfile),
-				  handler));
+  infrun_debug_printf ("exception resume at %s",
+		       paddress (probe->objfile->arch (), handler));
 
   bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame),
 				       handler, bp_exception_resume).release ();
@@ -7411,15 +7746,14 @@ check_exception_resume (struct execution
 static void
 stop_waiting (struct execution_control_state *ecs)
 {
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog, "infrun: stop_waiting\n");
+  infrun_debug_printf ("stop_waiting");
 
   /* Let callers know we don't want to wait for the inferior anymore.  */
   ecs->wait_some_more = 0;
 
-  /* If all-stop, but the target is always in non-stop mode, stop all
+  /* If all-stop, but there exists a non-stop target, stop all
      threads now that we're presenting the stop to the user.  */
-  if (!non_stop && target_is_non_stop_p ())
+  if (!non_stop && exists_non_stop_target ())
     stop_all_threads ();
 }
 
@@ -7434,17 +7768,15 @@ keep_going_pass_signal (struct execution
 
   /* Save the pc before execution, to compare with pc after stop.  */
   ecs->event_thread->prev_pc
-    = regcache_read_pc (get_thread_regcache (ecs->event_thread));
+    = regcache_read_pc_protected (get_thread_regcache (ecs->event_thread));
 
   if (ecs->event_thread->control.trap_expected)
     {
       struct thread_info *tp = ecs->event_thread;
 
-      if (debug_infrun)
-	fprintf_unfiltered (gdb_stdlog,
-			    "infrun: %s has trap_expected set, "
-			    "resuming to collect trap\n",
-			    target_pid_to_str (tp->ptid).c_str ());
+      infrun_debug_printf ("%s has trap_expected set, "
+			   "resuming to collect trap",
+			   target_pid_to_str (tp->ptid).c_str ());
 
       /* We haven't yet gotten our trap, and either: intercepted a
 	 non-signal event (e.g., a fork); or took a signal which we
@@ -7462,20 +7794,15 @@ keep_going_pass_signal (struct execution
       if (ecs->hit_singlestep_breakpoint
 	  || thread_still_needs_step_over (tp))
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: step-over already in progress: "
-				"step-over for %s deferred\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("step-over already in progress: "
+			       "step-over for %s deferred",
+			       target_pid_to_str (tp->ptid).c_str ());
 	  thread_step_over_chain_enqueue (tp);
 	}
       else
 	{
-	  if (debug_infrun)
-	    fprintf_unfiltered (gdb_stdlog,
-				"infrun: step-over in progress: "
-				"resume of %s deferred\n",
-				target_pid_to_str (tp->ptid).c_str ());
+	  infrun_debug_printf ("step-over in progress: resume of %s deferred",
+			       target_pid_to_str (tp->ptid).c_str ());
 	}
     }
   else
@@ -7575,12 +7902,15 @@ keep_going (struct execution_control_sta
 static void
 prepare_to_wait (struct execution_control_state *ecs)
 {
-  if (debug_infrun)
-    fprintf_unfiltered (gdb_stdlog, "infrun: prepare_to_wait\n");
+  infrun_debug_printf ("prepare_to_wait");
 
   ecs->wait_some_more = 1;
 
-  if (!target_is_async_p ())
+  /* If the target can't async, emulate it by marking the infrun event
+     handler such that as soon as we get back to the event-loop, we
+     immediately end up in fetch_inferior_event again calling
+     target_wait.  */
+  if (!target_can_async_p ())
     mark_infrun_async_event_handler ();
 }
 
@@ -7665,20 +7995,6 @@ print_exited_reason (struct ui_out *uiou
     }
 }
 
-/* Some targets/architectures can do extra processing/display of
-   segmentation faults.  E.g., Intel MPX boundary faults.
-   Call the architecture dependent function to handle the fault.  */
-
-static void
-handle_segmentation_fault (struct ui_out *uiout)
-{
-  struct regcache *regcache = get_current_regcache ();
-  struct gdbarch *gdbarch = regcache->arch ();
-
-  if (gdbarch_handle_segmentation_fault_p (gdbarch))
-    gdbarch_handle_segmentation_fault (gdbarch, uiout);
-}
-
 void
 print_signal_received_reason (struct ui_out *uiout, enum gdb_signal siggnal)
 {
@@ -7721,8 +8037,10 @@ print_signal_received_reason (struct ui_
       annotate_signal_string ();
       uiout->field_string ("signal-meaning", gdb_signal_to_string (siggnal));
 
-      if (siggnal == GDB_SIGNAL_SEGV)
-	handle_segmentation_fault (uiout);
+      struct regcache *regcache = get_current_regcache ();
+      struct gdbarch *gdbarch = regcache->arch ();
+      if (gdbarch_report_signal_info_p (gdbarch))
+	gdbarch_report_signal_info (gdbarch, uiout, siggnal);
 
       annotate_signal_string_end ();
     }
@@ -7801,10 +8119,9 @@ void
 print_stop_event (struct ui_out *uiout, bool displays)
 {
   struct target_waitstatus last;
-  ptid_t last_ptid;
   struct thread_info *tp;
 
-  get_last_target_status (&last_ptid, &last);
+  get_last_target_status (nullptr, nullptr, &last);
 
   {
     scoped_restore save_uiout = make_scoped_restore (&current_uiout, uiout);
@@ -7923,9 +8240,8 @@ int
 normal_stop (void)
 {
   struct target_waitstatus last;
-  ptid_t last_ptid;
 
-  get_last_target_status (&last_ptid, &last);
+  get_last_target_status (nullptr, nullptr, &last);
 
   new_stop_id ();
 
@@ -7934,10 +8250,10 @@ normal_stop (void)
      frontend/user running state.  A QUIT is an easy exception to see
      here, so do this before any filtered output.  */
 
-  gdb::optional<scoped_finish_thread_state> maybe_finish_thread_state;
+  ptid_t finish_ptid = null_ptid;
 
   if (!non_stop)
-    maybe_finish_thread_state.emplace (minus_one_ptid);
+    finish_ptid = minus_one_ptid;
   else if (last.kind == TARGET_WAITKIND_SIGNALLED
 	   || last.kind == TARGET_WAITKIND_EXITED)
     {
@@ -7947,10 +8263,17 @@ normal_stop (void)
 	 linux-fork.c automatically switches to another fork from
 	 within target_mourn_inferior.  */
       if (inferior_ptid != null_ptid)
-	maybe_finish_thread_state.emplace (ptid_t (inferior_ptid.pid ()));
+	finish_ptid = ptid_t (inferior_ptid.pid ());
     }
   else if (last.kind != TARGET_WAITKIND_NO_RESUMED)
-    maybe_finish_thread_state.emplace (inferior_ptid);
+    finish_ptid = inferior_ptid;
+
+  gdb::optional<scoped_finish_thread_state> maybe_finish_thread_state;
+  if (finish_ptid != null_ptid)
+    {
+      maybe_finish_thread_state.emplace
+	(user_visible_resume_target (finish_ptid), finish_ptid);
+    }
 
   /* As we're presenting a stop, and potentially removing breakpoints,
      update the thread list so we can tell whether there are threads
@@ -8881,11 +9204,79 @@ static const struct internalvar_funcs si
 static void
 infrun_async_inferior_event_handler (gdb_client_data data)
 {
-  inferior_event_handler (INF_REG_EVENT, NULL);
+  inferior_event_handler (INF_REG_EVENT);
 }
 
+#if GDB_SELF_TEST
+namespace selftests
+{
+
+/* Verify that when two threads with the same ptid exist (from two different
+   targets) and one of them changes ptid, we only update inferior_ptid if
+   it is appropriate.  */
+
+static void
+infrun_thread_ptid_changed ()
+{
+  gdbarch *arch = current_inferior ()->gdbarch;
+
+  /* The thread which inferior_ptid represents changes ptid.  */
+  {
+    scoped_restore_current_pspace_and_thread restore;
+
+    scoped_mock_context<test_target_ops> target1 (arch);
+    scoped_mock_context<test_target_ops> target2 (arch);
+    target2.mock_inferior.next = &target1.mock_inferior;
+
+    ptid_t old_ptid (111, 222);
+    ptid_t new_ptid (111, 333);
+
+    target1.mock_inferior.pid = old_ptid.pid ();
+    target1.mock_thread.ptid = old_ptid;
+    target2.mock_inferior.pid = old_ptid.pid ();
+    target2.mock_thread.ptid = old_ptid;
+
+    auto restore_inferior_ptid = make_scoped_restore (&inferior_ptid, old_ptid);
+    set_current_inferior (&target1.mock_inferior);
+
+    thread_change_ptid (&target1.mock_target, old_ptid, new_ptid);
+
+    gdb_assert (inferior_ptid == new_ptid);
+  }
+
+  /* A thread with the same ptid as inferior_ptid, but from another target,
+     changes ptid.  */
+  {
+    scoped_restore_current_pspace_and_thread restore;
+
+    scoped_mock_context<test_target_ops> target1 (arch);
+    scoped_mock_context<test_target_ops> target2 (arch);
+    target2.mock_inferior.next = &target1.mock_inferior;
+
+    ptid_t old_ptid (111, 222);
+    ptid_t new_ptid (111, 333);
+
+    target1.mock_inferior.pid = old_ptid.pid ();
+    target1.mock_thread.ptid = old_ptid;
+    target2.mock_inferior.pid = old_ptid.pid ();
+    target2.mock_thread.ptid = old_ptid;
+
+    auto restore_inferior_ptid = make_scoped_restore (&inferior_ptid, old_ptid);
+    set_current_inferior (&target2.mock_inferior);
+
+    thread_change_ptid (&target1.mock_target, old_ptid, new_ptid);
+
+    gdb_assert (inferior_ptid == old_ptid);
+  }
+}
+
+} /* namespace selftests */
+
+#endif /* GDB_SELF_TEST */
+
+void _initialize_infrun ();
 void
-_initialize_infrun (void)
+_initialize_infrun ()
 {
   struct cmd_list_element *c;
 
@@ -9184,4 +9575,9 @@ or signalled."),
 			   show_observer_mode,
 			   &setlist,
 			   &showlist);
+
+#if GDB_SELF_TEST
+  selftests::register_test ("infrun_thread_ptid_changed",
+			    selftests::infrun_thread_ptid_changed);
+#endif
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/infrun.h ./gdb/infrun.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/infrun.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/infrun.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1986-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,10 +25,23 @@ struct target_waitstatus;
 struct frame_info;
 struct address_space;
 struct return_value_info;
+struct process_stratum_target;
+struct thread_info;
 
 /* True if we are debugging run control.  */
 extern unsigned int debug_infrun;
 
+/* Print an "infrun" debug statement.  Should be used through
+   infrun_debug_printf.  */
+void ATTRIBUTE_PRINTF (2, 3) infrun_debug_printf_1
+  (const char *func_name, const char *fmt, ...);
+
+#define infrun_debug_printf(fmt, ...) \
+  do { \
+    if (debug_infrun) \
+      infrun_debug_printf_1 (__func__, fmt, ##__VA_ARGS__); \
+  } while (0)
+
 /* True if we are debugging displaced stepping.  */
 extern bool debug_displaced;
 
@@ -93,7 +106,13 @@ extern void proceed (CORE_ADDR, enum gdb
    resumed.  */
 extern ptid_t user_visible_resume_ptid (int step);
 
-extern void wait_for_inferior (void);
+/* Return the process_stratum target that we will proceed, in the
+   perspective of the user/frontend.  If RESUME_PTID is
+   MINUS_ONE_PTID, then we'll resume all threads of all targets, so
+   the function returns NULL.  Otherwise, we'll be resuming a process
+   or thread of the current process, so we return the current
+   inferior's process stratum target.  */
+extern process_stratum_target *user_visible_resume_target (ptid_t resume_ptid);
 
 /* Return control to GDB when the inferior stops for real.  Print
    appropriate messages, remove breakpoints, give terminal our modes,
@@ -101,18 +120,28 @@ extern void wait_for_inferior (void);
    target, false otherwise.  */
 extern int normal_stop (void);
 
-extern void get_last_target_status (ptid_t *ptid,
+/* Return the cached copy of the last target/ptid/waitstatus returned
+   by target_wait()/deprecated_target_wait_hook().  The data is
+   actually cached by handle_inferior_event(), which gets called
+   immediately after target_wait()/deprecated_target_wait_hook().  */
+extern void get_last_target_status (process_stratum_target **target,
+				    ptid_t *ptid,
 				    struct target_waitstatus *status);
 
-extern void set_last_target_status (ptid_t ptid,
+/* Set the cached copy of the last target/ptid/waitstatus.  */
+extern void set_last_target_status (process_stratum_target *target, ptid_t ptid,
 				    struct target_waitstatus status);
 
+/* Clear the cached copy of the last ptid/waitstatus returned by
+   target_wait().  */
+extern void nullify_last_target_wait_ptid ();
+
 /* Stop all threads.  Only returns after everything is halted.  */
 extern void stop_all_threads (void);
 
 extern void prepare_for_detach (void);
 
-extern void fetch_inferior_event (void *);
+extern void fetch_inferior_event ();
 
 extern void init_wait_for_inferior (void);
 
@@ -133,7 +162,9 @@ extern int thread_is_stepping_over_break
    triggers a non-steppable watchpoint.  */
 extern int stepping_past_nonsteppable_watchpoint (void);
 
-extern void set_step_info (struct frame_info *frame,
+/* Record in TP the frame and location we're currently stepping through.  */
+extern void set_step_info (thread_info *tp,
+			   struct frame_info *frame,
 			   struct symtab_and_line sal);
 
 /* Several print_*_reason helper functions to print why the inferior
@@ -248,6 +279,8 @@ struct displaced_step_closure
   virtual ~displaced_step_closure () = 0;
 };
 
+using displaced_step_closure_up = std::unique_ptr<displaced_step_closure>;
+
 /* A simple displaced step closure that contains only a byte buffer.  */
 
 struct buf_displaced_step_closure : displaced_step_closure
@@ -273,7 +306,7 @@ struct displaced_step_inferior_state
     failed_before = 0;
     step_thread = nullptr;
     step_gdbarch = nullptr;
-    step_closure = nullptr;
+    step_closure.reset ();
     step_original = 0;
     step_copy = 0;
     step_saved_copy.clear ();
@@ -293,7 +326,7 @@ struct displaced_step_inferior_state
 
   /* The closure provided gdbarch_displaced_step_copy_insn, to be used
      for post-step cleanup.  */
-  displaced_step_closure *step_closure;
+  displaced_step_closure_up step_closure;
 
   /* The address of the original instruction, and the copy we
      made.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inline-frame.c ./gdb/inline-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inline-frame.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inline-frame.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Inline frame unwinder for GDB.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -37,9 +37,9 @@
 struct inline_state
 {
   inline_state (thread_info *thread_, int skipped_frames_, CORE_ADDR saved_pc_,
-		symbol *skipped_symbol_)
+		std::vector<symbol *> &&skipped_symbols_)
     : thread (thread_), skipped_frames (skipped_frames_), saved_pc (saved_pc_),
-      skipped_symbol (skipped_symbol_)
+      skipped_symbols (std::move (skipped_symbols_))
   {}
 
   /* The thread this data relates to.  It should be a currently
@@ -56,10 +56,10 @@ struct inline_state
      any skipped frames.  */
   CORE_ADDR saved_pc;
 
-  /* Only valid if SKIPPED_FRAMES is non-zero.  This is the symbol
-     of the outermost skipped inline function.  It's used to find the
-     call site of the current frame.  */
-  struct symbol *skipped_symbol;
+  /* Only valid if SKIPPED_FRAMES is non-zero.  This is the list of all
+     function symbols that have been skipped, from inner most to outer
+     most.  It is used to find the call site of the current frame.  */
+  std::vector<struct symbol *> skipped_symbols;
 };
 
 static std::vector<inline_state> inline_states;
@@ -95,37 +95,54 @@ find_inline_frame_state (thread_info *th
   return &state;
 }
 
-/* Forget about any hidden inlined functions in PTID, which is new or
-   about to be resumed.  PTID may be minus_one_ptid (all processes)
-   or a PID (all threads in this process).  */
+/* See inline-frame.h.  */
 
 void
-clear_inline_frame_state (ptid_t ptid)
+clear_inline_frame_state (process_stratum_target *target, ptid_t filter_ptid)
 {
-  if (ptid == minus_one_ptid)
-    {
-      inline_states.clear ();
-      return;
-    }
+  gdb_assert (target != NULL);
 
-  if (ptid.is_pid ())
+  if (filter_ptid == minus_one_ptid || filter_ptid.is_pid ())
     {
-      int pid = ptid.pid ();
+      auto matcher = [target, &filter_ptid] (const inline_state &state)
+	{
+	  thread_info *t = state.thread;
+	  return (t->inf->process_target () == target
+		  && t->ptid.matches (filter_ptid));
+	};
+
       auto it = std::remove_if (inline_states.begin (), inline_states.end (),
-				[pid] (const inline_state &state)
-				  {
-				    return pid == state.thread->inf->pid;
-				  });
+				matcher);
 
       inline_states.erase (it, inline_states.end ());
 
       return;
     }
 
+
+  auto matcher = [target, &filter_ptid] (const inline_state &state)
+    {
+      thread_info *t = state.thread;
+      return (t->inf->process_target () == target
+	      && filter_ptid == t->ptid);
+    };
+
+  auto it = std::find_if (inline_states.begin (), inline_states.end (),
+			  matcher);
+
+  if (it != inline_states.end ())
+    unordered_remove (inline_states, it);
+}
+
+/* See inline-frame.h.  */
+
+void
+clear_inline_frame_state (thread_info *thread)
+{
   auto it = std::find_if (inline_states.begin (), inline_states.end (),
-			  [&ptid] (const inline_state &state)
+			  [thread] (const inline_state &state)
 			    {
-			      return ptid == state.thread->ptid;
+			      return thread == state.thread;
 			    });
 
   if (it != inline_states.end ())
@@ -154,10 +171,6 @@ inline_frame_this_id (struct frame_info
      frame").  This will take work.  */
   gdb_assert (frame_id_p (*this_id));
 
-  /* For now, require we don't match outer_frame_id either (see
-     comment above).  */
-  gdb_assert (!frame_id_eq (*this_id, outer_frame_id));
-
   /* Future work NOTE: Alexandre Oliva applied a patch to GCC 4.3
      which generates DW_AT_entry_pc for inlined functions when
      possible.  If this attribute is available, we should use it
@@ -286,7 +299,8 @@ block_starting_point_at (CORE_ADDR pc, c
 }
 
 /* Loop over the stop chain and determine if execution stopped in an
-   inlined frame because of a user breakpoint set at FRAME_BLOCK.  */
+   inlined frame because of a breakpoint with a user-specified location
+   set at FRAME_BLOCK.  */
 
 static bool
 stopped_by_user_bp_inline_frame (const block *frame_block, bpstat stop_chain)
@@ -295,7 +309,8 @@ stopped_by_user_bp_inline_frame (const b
     {
       struct breakpoint *bpt = s->breakpoint_at;
 
-      if (bpt != NULL && user_breakpoint_p (bpt))
+      if (bpt != NULL
+	  && (user_breakpoint_p (bpt) || bpt->type == bp_until))
 	{
 	  bp_location *loc = s->bp_location_at;
 	  enum bp_loc_type t = loc->loc_type;
@@ -324,7 +339,7 @@ void
 skip_inline_frames (thread_info *thread, bpstat stop_chain)
 {
   const struct block *frame_block, *cur_block;
-  struct symbol *last_sym = NULL;
+  std::vector<struct symbol *> skipped_syms;
   int skip_count = 0;
 
   /* This function is called right after reinitializing the frame
@@ -352,7 +367,7 @@ skip_inline_frames (thread_info *thread,
 		    break;
 
 		  skip_count++;
-		  last_sym = BLOCK_FUNCTION (cur_block);
+		  skipped_syms.push_back (BLOCK_FUNCTION (cur_block));
 		}
 	      else
 		break;
@@ -365,7 +380,8 @@ skip_inline_frames (thread_info *thread,
     }
 
   gdb_assert (find_inline_frame_state (thread) == NULL);
-  inline_states.emplace_back (thread, skip_count, this_pc, last_sym);
+  inline_states.emplace_back (thread, skip_count, this_pc,
+			      std::move (skipped_syms));
 
   if (skip_count != 0)
     reinit_frame_cache ();
@@ -404,9 +420,16 @@ struct symbol *
 inline_skipped_symbol (thread_info *thread)
 {
   inline_state *state = find_inline_frame_state (thread);
-
   gdb_assert (state != NULL);
-  return state->skipped_symbol;
+
+  /* This should only be called when we are skipping at least one frame,
+     hence SKIPPED_FRAMES will be greater than zero when we get here.
+     We initialise SKIPPED_FRAMES at the same time as we build
+     SKIPPED_SYMBOLS, hence it should be true that SKIPPED_FRAMES never
+     indexes outside of the SKIPPED_SYMBOLS vector.  */
+  gdb_assert (state->skipped_frames > 0);
+  gdb_assert (state->skipped_frames <= state->skipped_symbols.size ());
+  return state->skipped_symbols[state->skipped_frames - 1];
 }
 
 /* Return the number of functions inlined into THIS_FRAME.  Some of
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inline-frame.h ./gdb/inline-frame.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/inline-frame.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/inline-frame.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for inline frame support.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -23,6 +23,7 @@
 struct frame_info;
 struct frame_unwind;
 struct bpstats;
+struct process_stratum_target;
 
 /* The inline frame unwinder.  */
 
@@ -39,10 +40,15 @@ extern const struct frame_unwind inline_
 void skip_inline_frames (thread_info *thread, struct bpstats *stop_chain);
 
 /* Forget about any hidden inlined functions in PTID, which is new or
-   about to be resumed.  If PTID is minus_one_ptid, forget about all
-   hidden inlined functions.  */
+   about to be resumed.  PTID may be minus_one_ptid (all processes of
+   TARGET) or a PID (all threads in this process of TARGET).  */
 
-void clear_inline_frame_state (ptid_t ptid);
+void clear_inline_frame_state (process_stratum_target *target, ptid_t ptid);
+
+/* Forget about any hidden inlined functions in THREAD, which is new
+   or about to be resumed.  */
+
+void clear_inline_frame_state (thread_info *thread);
 
 /* Step into an inlined function by unhiding it.  */
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/interps.c ./gdb/interps.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/interps.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/interps.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Manages interpreters for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    Written by Jim Ingham <jingham@apple.com> of Apple Computer, Inc.
 
@@ -32,7 +32,7 @@
 #include "defs.h"
 #include "gdbcmd.h"
 #include "ui-out.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "event-top.h"
 #include "interps.h"
 #include "completer.h"
@@ -439,8 +439,9 @@ current_interpreter (void)
 }
 
 /* This just adds the "interpreter-exec" command.  */
+void _initialize_interpreter ();
 void
-_initialize_interpreter (void)
+_initialize_interpreter ()
 {
   struct cmd_list_element *c;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/interps.h ./gdb/interps.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/interps.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/interps.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Manages interpreters for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    Written by Jim Ingham <jingham@apple.com> of Apple Computer, Inc.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/iq2000-tdep.c ./gdb/iq2000-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/iq2000-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/iq2000-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Target-dependent code for the IQ2000 architecture, for GDB, the GNU
    Debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 
@@ -24,7 +24,7 @@
 #include "frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "gdbtypes.h"
 #include "value.h"
 #include "dis-asm.h"
@@ -89,7 +89,7 @@ iq2000_pointer_to_address (struct gdbarc
 			   struct type * type, const gdb_byte * buf)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  enum type_code target = TYPE_CODE (TYPE_TARGET_TYPE (type));
+  enum type_code target = TYPE_TARGET_TYPE (type)->code ();
   CORE_ADDR addr
     = extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order);
 
@@ -109,7 +109,7 @@ iq2000_address_to_pointer (struct gdbarc
 			   struct type *type, gdb_byte *buf, CORE_ADDR addr)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  enum type_code target = TYPE_CODE (TYPE_TARGET_TYPE (type));
+  enum type_code target = TYPE_TARGET_TYPE (type)->code ();
 
   if (target == TYPE_CODE_FUNC || target == TYPE_CODE_METHOD)
     addr = insn_ptr_from_addr (addr);
@@ -504,8 +504,8 @@ iq2000_store_return_value (struct type *
 static int
 iq2000_use_struct_convention (struct type *type)
 {
-  return ((TYPE_CODE (type) == TYPE_CODE_STRUCT)
-	  || (TYPE_CODE (type) == TYPE_CODE_UNION))
+  return ((type->code () == TYPE_CODE_STRUCT)
+	  || (type->code () == TYPE_CODE_UNION))
 	 && TYPE_LENGTH (type) > 8;
 }
 
@@ -597,26 +597,26 @@ iq2000_pass_8bytetype_by_address (struct
   struct type *ftype;
 
   /* Skip typedefs.  */
-  while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+  while (type->code () == TYPE_CODE_TYPEDEF)
     type = TYPE_TARGET_TYPE (type);
   /* Non-struct and non-union types are always passed by value.  */
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-      && TYPE_CODE (type) != TYPE_CODE_UNION)
+  if (type->code () != TYPE_CODE_STRUCT
+      && type->code () != TYPE_CODE_UNION)
     return 0;
   /* Structs with more than 1 field are always passed by address.  */
-  if (TYPE_NFIELDS (type) != 1)
+  if (type->num_fields () != 1)
     return 1;
   /* Get field type.  */
-  ftype = (TYPE_FIELDS (type))[0].type;
+  ftype = type->field (0).type ();
   /* The field type must have size 8, otherwise pass by address.  */
   if (TYPE_LENGTH (ftype) != 8)
     return 1;
   /* Skip typedefs of field type.  */
-  while (TYPE_CODE (ftype) == TYPE_CODE_TYPEDEF)
+  while (ftype->code () == TYPE_CODE_TYPEDEF)
     ftype = TYPE_TARGET_TYPE (ftype);
   /* If field is int or float, pass by value.  */
-  if (TYPE_CODE (ftype) == TYPE_CODE_FLT
-      || TYPE_CODE (ftype) == TYPE_CODE_INT)
+  if (ftype->code () == TYPE_CODE_FLT
+      || ftype->code () == TYPE_CODE_INT)
     return 0;
   /* Everything else, pass by address.  */
   return 1;
@@ -839,8 +839,9 @@ iq2000_gdbarch_init (struct gdbarch_info
    Initializer function for the iq2000 module.
    Called by gdb at start-up.  */
 
+void _initialize_iq2000_tdep ();
 void
-_initialize_iq2000_tdep (void)
+_initialize_iq2000_tdep ()
 {
   register_gdbarch_init (bfd_arch_iq2000, iq2000_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/jit.c ./gdb/jit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/jit.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/jit.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle JIT code generation in the inferior for GDB, the GNU Debugger.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -41,11 +41,10 @@
 #include "gdb_bfd.h"
 #include "readline/tilde.h"
 #include "completer.h"
+#include <forward_list>
 
 static std::string jit_reader_dir;
 
-static const struct objfile_data *jit_objfile_data;
-
 static const char *const jit_break_name = "__jit_debug_register_code";
 
 static const char *const jit_descriptor_name = "__jit_debug_descriptor";
@@ -100,7 +99,7 @@ mem_bfd_iovec_close (struct bfd *abfd, v
 
 static file_ptr
 mem_bfd_iovec_pread (struct bfd *abfd, void *stream, void *buf,
-                     file_ptr nbytes, file_ptr offset)
+		     file_ptr nbytes, file_ptr offset)
 {
   int err;
   struct target_buffer *buffer = (struct target_buffer *) stream;
@@ -135,7 +134,8 @@ mem_bfd_iovec_stat (struct bfd *abfd, vo
 /* Open a BFD from the target's memory.  */
 
 static gdb_bfd_ref_ptr
-bfd_open_from_target_memory (CORE_ADDR addr, ULONGEST size, char *target)
+bfd_open_from_target_memory (CORE_ADDR addr, ULONGEST size,
+			     const char *target)
 {
   struct target_buffer *buffer = XNEW (struct target_buffer);
 
@@ -185,13 +185,13 @@ jit_reader_load (const char *file_name)
 
   if (jit_debug)
     fprintf_unfiltered (gdb_stdlog, _("Opening shared object %s.\n"),
-                        file_name);
+			file_name);
   gdb_dlhandle_up so = gdb_dlopen (file_name);
 
   init_fn = (reader_init_fn_type *) gdb_dlsym (so, reader_init_fn_sym);
   if (!init_fn)
     error (_("Could not locate initialization function: %s."),
-          reader_init_fn_sym);
+	   reader_init_fn_sym);
 
   if (gdb_dlsym (so, "plugin_is_GPL_compatible") == NULL)
     error (_("Reader not GPL compatible."));
@@ -239,65 +239,24 @@ jit_reader_unload_command (const char *a
   loaded_jit_reader = NULL;
 }
 
-/* Per-program space structure recording which objfile has the JIT
-   symbols.  */
+/* Destructor for jiter_objfile_data.  */
 
-struct jit_program_space_data
+jiter_objfile_data::~jiter_objfile_data ()
 {
-  /* The objfile.  This is NULL if no objfile holds the JIT
-     symbols.  */
-
-  struct objfile *objfile = nullptr;
-
-  /* If this program space has __jit_debug_register_code, this is the
-     cached address from the minimal symbol.  This is used to detect
-     relocations requiring the breakpoint to be re-created.  */
-
-  CORE_ADDR cached_code_address = 0;
-
-  /* This is the JIT event breakpoint, or NULL if it has not been
-     set.  */
-
-  struct breakpoint *jit_breakpoint = nullptr;
-};
-
-static program_space_key<jit_program_space_data> jit_program_space_key;
-
-/* Per-objfile structure recording the addresses in the program space.
-   This object serves two purposes: for ordinary objfiles, it may
-   cache some symbols related to the JIT interface; and for
-   JIT-created objfiles, it holds some information about the
-   jit_code_entry.  */
-
-struct jit_objfile_data
-{
-  /* Symbol for __jit_debug_register_code.  */
-  struct minimal_symbol *register_code;
-
-  /* Symbol for __jit_debug_descriptor.  */
-  struct minimal_symbol *descriptor;
-
-  /* Address of struct jit_code_entry in this objfile.  This is only
-     non-zero for objfiles that represent code created by the JIT.  */
-  CORE_ADDR addr;
-};
+  if (this->jit_breakpoint != nullptr)
+    delete_breakpoint (this->jit_breakpoint);
+}
 
-/* Fetch the jit_objfile_data associated with OBJF.  If no data exists
+/* Fetch the jiter_objfile_data associated with OBJF.  If no data exists
    yet, make a new structure and attach it.  */
 
-static struct jit_objfile_data *
-get_jit_objfile_data (struct objfile *objf)
+static jiter_objfile_data *
+get_jiter_objfile_data (objfile *objf)
 {
-  struct jit_objfile_data *objf_data;
-
-  objf_data = (struct jit_objfile_data *) objfile_data (objf, jit_objfile_data);
-  if (objf_data == NULL)
-    {
-      objf_data = XCNEW (struct jit_objfile_data);
-      set_objfile_data (objf, jit_objfile_data, objf_data);
-    }
+  if (objf->jiter_data == nullptr)
+    objf->jiter_data.reset (new jiter_objfile_data ());
 
-  return objf_data;
+  return objf->jiter_data.get ();
 }
 
 /* Remember OBJFILE has been created for struct jit_code_entry located
@@ -306,33 +265,18 @@ get_jit_objfile_data (struct objfile *ob
 static void
 add_objfile_entry (struct objfile *objfile, CORE_ADDR entry)
 {
-  struct jit_objfile_data *objf_data;
+  gdb_assert (objfile->jited_data == nullptr);
 
-  objf_data = get_jit_objfile_data (objfile);
-  objf_data->addr = entry;
-}
-
-/* Return jit_program_space_data for current program space.  Allocate
-   if not already present.  */
-
-static struct jit_program_space_data *
-get_jit_program_space_data ()
-{
-  struct jit_program_space_data *ps_data;
-
-  ps_data = jit_program_space_key.get (current_program_space);
-  if (ps_data == NULL)
-    ps_data = jit_program_space_key.emplace (current_program_space);
-  return ps_data;
+  objfile->jited_data.reset (new jited_objfile_data (entry));
 }
 
 /* Helper function for reading the global JIT descriptor from remote
-   memory.  Returns 1 if all went well, 0 otherwise.  */
+   memory.  Returns true if all went well, false otherwise.  */
 
-static int
-jit_read_descriptor (struct gdbarch *gdbarch,
-		     struct jit_descriptor *descriptor,
-		     struct jit_program_space_data *ps_data)
+static bool
+jit_read_descriptor (gdbarch *gdbarch,
+		     jit_descriptor *descriptor,
+		     objfile *jiter)
 {
   int err;
   struct type *ptr_type;
@@ -340,19 +284,17 @@ jit_read_descriptor (struct gdbarch *gdb
   int desc_size;
   gdb_byte *desc_buf;
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  struct jit_objfile_data *objf_data;
 
-  if (ps_data->objfile == NULL)
-    return 0;
-  objf_data = get_jit_objfile_data (ps_data->objfile);
-  if (objf_data->descriptor == NULL)
-    return 0;
+  gdb_assert (jiter != nullptr);
+  jiter_objfile_data *objf_data = jiter->jiter_data.get ();
+  gdb_assert (objf_data != nullptr);
+
+  CORE_ADDR addr = MSYMBOL_VALUE_ADDRESS (jiter, objf_data->descriptor);
 
   if (jit_debug)
     fprintf_unfiltered (gdb_stdlog,
 			"jit_read_descriptor, descriptor_addr = %s\n",
-			paddress (gdbarch, MSYMBOL_VALUE_ADDRESS (ps_data->objfile,
-								  objf_data->descriptor)));
+			paddress (gdbarch, addr));
 
   /* Figure out how big the descriptor is on the remote and how to read it.  */
   ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
@@ -361,14 +303,12 @@ jit_read_descriptor (struct gdbarch *gdb
   desc_buf = (gdb_byte *) alloca (desc_size);
 
   /* Read the descriptor.  */
-  err = target_read_memory (MSYMBOL_VALUE_ADDRESS (ps_data->objfile,
-						   objf_data->descriptor),
-			    desc_buf, desc_size);
+  err = target_read_memory (addr, desc_buf, desc_size);
   if (err)
     {
       printf_unfiltered (_("Unable to read JIT descriptor from "
 			   "remote memory\n"));
-      return 0;
+      return false;
     }
 
   /* Fix the endianness to match the host.  */
@@ -379,7 +319,7 @@ jit_read_descriptor (struct gdbarch *gdb
   descriptor->first_entry =
       extract_typed_address (&desc_buf[8 + ptr_size], ptr_type);
 
-  return 1;
+  return true;
 }
 
 /* Helper function for reading a JITed code entry from remote memory.  */
@@ -428,48 +368,68 @@ jit_read_code_entry (struct gdbarch *gdb
 
 struct gdb_block
 {
-  /* gdb_blocks are linked into a tree structure.  Next points to the
-     next node at the same depth as this block and parent to the
-     parent gdb_block.  */
-  struct gdb_block *next, *parent;
+  gdb_block (gdb_block *parent, CORE_ADDR begin, CORE_ADDR end,
+	     const char *name)
+    : parent (parent),
+      begin (begin),
+      end (end),
+      name (name != nullptr ? xstrdup (name) : nullptr)
+  {}
+
+  /* The parent of this block.  */
+  struct gdb_block *parent;
 
   /* Points to the "real" block that is being built out of this
      instance.  This block will be added to a blockvector, which will
      then be added to a symtab.  */
-  struct block *real_block;
+  struct block *real_block = nullptr;
 
   /* The first and last code address corresponding to this block.  */
   CORE_ADDR begin, end;
 
   /* The name of this block (if any).  If this is non-NULL, the
      FUNCTION symbol symbol is set to this value.  */
-  const char *name;
+  gdb::unique_xmalloc_ptr<char> name;
 };
 
 /* Proxy object for building a symtab.  */
 
 struct gdb_symtab
 {
+  explicit gdb_symtab (const char *file_name)
+    : file_name (file_name != nullptr ? file_name : "")
+  {}
+
   /* The list of blocks in this symtab.  These will eventually be
-     converted to real blocks.  */
-  struct gdb_block *blocks;
+     converted to real blocks.
+
+     This is specifically a linked list, instead of, for example, a vector,
+     because the pointers are returned to the user's debug info reader.  So
+     it's important that the objects don't change location during their
+     lifetime (which would happen with a vector of objects getting resized).  */
+  std::forward_list<gdb_block> blocks;
 
   /* The number of blocks inserted.  */
-  int nblocks;
+  int nblocks = 0;
 
   /* A mapping between line numbers to PC.  */
-  struct linetable *linetable;
+  gdb::unique_xmalloc_ptr<struct linetable> linetable;
 
   /* The source file for this symtab.  */
-  const char *file_name;
-  struct gdb_symtab *next;
+  std::string file_name;
 };
 
 /* Proxy object for building an object.  */
 
 struct gdb_object
 {
-  struct gdb_symtab *symtabs;
+  /* Symtabs of this object.
+
+     This is specifically a linked list, instead of, for example, a vector,
+     because the pointers are returned to the user's debug info reader.  So
+     it's important that the objects don't change location during their
+     lifetime (which would happen with a vector of objects getting resized).  */
+  std::forward_list<gdb_symtab> symtabs;
 };
 
 /* The type of the `private' data passed around by the callback
@@ -501,7 +461,7 @@ jit_object_open_impl (struct gdb_symbol_
   /* CB is not required right now, but sometime in the future we might
      need a handle to it, and we'd like to do that without breaking
      the ABI.  */
-  return XCNEW (struct gdb_object);
+  return new gdb_object;
 }
 
 /* Readers call into this function to open a new gdb_symtab, which,
@@ -509,40 +469,13 @@ jit_object_open_impl (struct gdb_symbol_
 
 static struct gdb_symtab *
 jit_symtab_open_impl (struct gdb_symbol_callbacks *cb,
-                      struct gdb_object *object,
-                      const char *file_name)
+		      struct gdb_object *object,
+		      const char *file_name)
 {
-  struct gdb_symtab *ret;
-
   /* CB stays unused.  See comment in jit_object_open_impl.  */
 
-  ret = XCNEW (struct gdb_symtab);
-  ret->file_name = file_name ? xstrdup (file_name) : xstrdup ("");
-  ret->next = object->symtabs;
-  object->symtabs = ret;
-  return ret;
-}
-
-/* Returns true if the block corresponding to old should be placed
-   before the block corresponding to new in the final blockvector.  */
-
-static int
-compare_block (const struct gdb_block *const old,
-               const struct gdb_block *const newobj)
-{
-  if (old == NULL)
-    return 1;
-  if (old->begin < newobj->begin)
-    return 1;
-  else if (old->begin == newobj->begin)
-    {
-      if (old->end > newobj->end)
-        return 1;
-      else
-        return 0;
-    }
-  else
-    return 0;
+  object->symtabs.emplace_front (file_name);
+  return &object->symtabs.front ();
 }
 
 /* Called by readers to open a new gdb_block.  This function also
@@ -551,42 +484,15 @@ compare_block (const struct gdb_block *c
 
 static struct gdb_block *
 jit_block_open_impl (struct gdb_symbol_callbacks *cb,
-                     struct gdb_symtab *symtab, struct gdb_block *parent,
-                     GDB_CORE_ADDR begin, GDB_CORE_ADDR end, const char *name)
+		     struct gdb_symtab *symtab, struct gdb_block *parent,
+		     GDB_CORE_ADDR begin, GDB_CORE_ADDR end, const char *name)
 {
-  struct gdb_block *block = XCNEW (struct gdb_block);
-
-  block->next = symtab->blocks;
-  block->begin = (CORE_ADDR) begin;
-  block->end = (CORE_ADDR) end;
-  block->name = name ? xstrdup (name) : NULL;
-  block->parent = parent;
-
-  /* Ensure that the blocks are inserted in the correct (reverse of
-     the order expected by blockvector).  */
-  if (compare_block (symtab->blocks, block))
-    {
-      symtab->blocks = block;
-    }
-  else
-    {
-      struct gdb_block *i = symtab->blocks;
-
-      for (;; i = i->next)
-        {
-          /* Guaranteed to terminate, since compare_block (NULL, _)
-             returns 1.  */
-          if (compare_block (i->next, block))
-            {
-              block->next = i->next;
-              i->next = block;
-              break;
-            }
-        }
-    }
+  /* Place the block at the beginning of the list, it will be sorted when the
+     symtab is finalized.  */
+  symtab->blocks.emplace_front (parent, begin, end, name);
   symtab->nblocks++;
 
-  return block;
+  return &symtab->blocks.front ();
 }
 
 /* Readers call this to add a line mapping (from PC to line number) to
@@ -594,8 +500,8 @@ jit_block_open_impl (struct gdb_symbol_c
 
 static void
 jit_symtab_line_mapping_add_impl (struct gdb_symbol_callbacks *cb,
-                                  struct gdb_symtab *stab, int nlines,
-                                  struct gdb_line_mapping *map)
+				  struct gdb_symtab *stab, int nlines,
+				  struct gdb_line_mapping *map)
 {
   int i;
   int alloc_len;
@@ -605,12 +511,13 @@ jit_symtab_line_mapping_add_impl (struct
 
   alloc_len = sizeof (struct linetable)
 	      + (nlines - 1) * sizeof (struct linetable_entry);
-  stab->linetable = (struct linetable *) xmalloc (alloc_len);
+  stab->linetable.reset (XNEWVAR (struct linetable, alloc_len));
   stab->linetable->nitems = nlines;
   for (i = 0; i < nlines; i++)
     {
       stab->linetable->item[i].pc = (CORE_ADDR) map[i].pc;
       stab->linetable->item[i].line = map[i].line;
+      stab->linetable->item[i].is_stmt = 1;
     }
 }
 
@@ -619,7 +526,7 @@ jit_symtab_line_mapping_add_impl (struct
 
 static void
 jit_symtab_close_impl (struct gdb_symbol_callbacks *cb,
-                       struct gdb_symtab *stab)
+		       struct gdb_symtab *stab)
 {
   /* Right now nothing needs to be done here.  We may need to do some
      cleanup here in the future (again, without breaking the plugin
@@ -632,17 +539,23 @@ static void
 finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
 {
   struct compunit_symtab *cust;
-  struct gdb_block *gdb_block_iter, *gdb_block_iter_tmp;
-  struct block *block_iter;
-  int actual_nblocks, i;
   size_t blockvector_size;
   CORE_ADDR begin, end;
   struct blockvector *bv;
 
-  actual_nblocks = FIRST_LOCAL_BLOCK + stab->nblocks;
+  int actual_nblocks = FIRST_LOCAL_BLOCK + stab->nblocks;
+
+  /* Sort the blocks in the order they should appear in the blockvector.  */
+  stab->blocks.sort([] (const gdb_block &a, const gdb_block &b)
+    {
+      if (a.begin != b.begin)
+	return a.begin < b.begin;
+
+      return a.end > b.end;
+    });
 
-  cust = allocate_compunit_symtab (objfile, stab->file_name);
-  allocate_symtab (cust, stab->file_name);
+  cust = allocate_compunit_symtab (objfile, stab->file_name.c_str ());
+  allocate_symtab (cust, stab->file_name.c_str ());
   add_compunit_symtab_to_objfile (cust);
 
   /* JIT compilers compile in memory.  */
@@ -656,33 +569,32 @@ finalize_symtab (struct gdb_symtab *stab
 		     + sizeof (struct linetable));
       SYMTAB_LINETABLE (COMPUNIT_FILETABS (cust))
 	= (struct linetable *) obstack_alloc (&objfile->objfile_obstack, size);
-      memcpy (SYMTAB_LINETABLE (COMPUNIT_FILETABS (cust)), stab->linetable,
-	      size);
+      memcpy (SYMTAB_LINETABLE (COMPUNIT_FILETABS (cust)),
+	      stab->linetable.get (), size);
     }
 
   blockvector_size = (sizeof (struct blockvector)
-                      + (actual_nblocks - 1) * sizeof (struct block *));
+		      + (actual_nblocks - 1) * sizeof (struct block *));
   bv = (struct blockvector *) obstack_alloc (&objfile->objfile_obstack,
 					     blockvector_size);
   COMPUNIT_BLOCKVECTOR (cust) = bv;
 
-  /* (begin, end) will contain the PC range this entire blockvector
-     spans.  */
+  /* At the end of this function, (begin, end) will contain the PC range this
+     entire blockvector spans.  */
   BLOCKVECTOR_MAP (bv) = NULL;
-  begin = stab->blocks->begin;
-  end = stab->blocks->end;
+  begin = stab->blocks.front ().begin;
+  end = stab->blocks.front ().end;
   BLOCKVECTOR_NBLOCKS (bv) = actual_nblocks;
 
   /* First run over all the gdb_block objects, creating a real block
      object for each.  Simultaneously, keep setting the real_block
      fields.  */
-  for (i = (actual_nblocks - 1), gdb_block_iter = stab->blocks;
-       i >= FIRST_LOCAL_BLOCK;
-       i--, gdb_block_iter = gdb_block_iter->next)
+  int block_idx = FIRST_LOCAL_BLOCK;
+  for (gdb_block &gdb_block_iter : stab->blocks)
     {
       struct block *new_block = allocate_block (&objfile->objfile_obstack);
-      struct symbol *block_name = allocate_symbol (objfile);
-      struct type *block_type = arch_type (get_objfile_arch (objfile),
+      struct symbol *block_name = new (&objfile->objfile_obstack) symbol;
+      struct type *block_type = arch_type (objfile->arch (),
 					   TYPE_CODE_VOID,
 					   TARGET_CHAR_BIT,
 					   "void");
@@ -690,8 +602,8 @@ finalize_symtab (struct gdb_symtab *stab
       BLOCK_MULTIDICT (new_block)
 	= mdict_create_linear (&objfile->objfile_obstack, NULL);
       /* The address range.  */
-      BLOCK_START (new_block) = (CORE_ADDR) gdb_block_iter->begin;
-      BLOCK_END (new_block) = (CORE_ADDR) gdb_block_iter->end;
+      BLOCK_START (new_block) = (CORE_ADDR) gdb_block_iter.begin;
+      BLOCK_END (new_block) = (CORE_ADDR) gdb_block_iter.end;
 
       /* The name.  */
       SYMBOL_DOMAIN (block_name) = VAR_DOMAIN;
@@ -700,23 +612,25 @@ finalize_symtab (struct gdb_symtab *stab
       SYMBOL_TYPE (block_name) = lookup_function_type (block_type);
       SYMBOL_BLOCK_VALUE (block_name) = new_block;
 
-      block_name->name = obstack_strdup (&objfile->objfile_obstack,
-					 gdb_block_iter->name);
+      block_name->m_name = obstack_strdup (&objfile->objfile_obstack,
+					   gdb_block_iter.name.get ());
 
       BLOCK_FUNCTION (new_block) = block_name;
 
-      BLOCKVECTOR_BLOCK (bv, i) = new_block;
+      BLOCKVECTOR_BLOCK (bv, block_idx) = new_block;
       if (begin > BLOCK_START (new_block))
-        begin = BLOCK_START (new_block);
+	begin = BLOCK_START (new_block);
       if (end < BLOCK_END (new_block))
-        end = BLOCK_END (new_block);
+	end = BLOCK_END (new_block);
 
-      gdb_block_iter->real_block = new_block;
+      gdb_block_iter.real_block = new_block;
+
+      block_idx++;
     }
 
   /* Now add the special blocks.  */
-  block_iter = NULL;
-  for (i = 0; i < FIRST_LOCAL_BLOCK; i++)
+  struct block *block_iter = NULL;
+  for (enum block_enum i : { GLOBAL_BLOCK, STATIC_BLOCK })
     {
       struct block *new_block;
 
@@ -739,39 +653,22 @@ finalize_symtab (struct gdb_symtab *stab
 
   /* Fill up the superblock fields for the real blocks, using the
      real_block fields populated earlier.  */
-  for (gdb_block_iter = stab->blocks;
-       gdb_block_iter;
-       gdb_block_iter = gdb_block_iter->next)
+  for (gdb_block &gdb_block_iter : stab->blocks)
     {
-      if (gdb_block_iter->parent != NULL)
+      if (gdb_block_iter.parent != NULL)
 	{
 	  /* If the plugin specifically mentioned a parent block, we
 	     use that.  */
-	  BLOCK_SUPERBLOCK (gdb_block_iter->real_block) =
-	    gdb_block_iter->parent->real_block;
+	  BLOCK_SUPERBLOCK (gdb_block_iter.real_block) =
+	    gdb_block_iter.parent->real_block;
 	}
       else
 	{
 	  /* And if not, we set a default parent block.  */
-	  BLOCK_SUPERBLOCK (gdb_block_iter->real_block) =
+	  BLOCK_SUPERBLOCK (gdb_block_iter.real_block) =
 	    BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
 	}
     }
-
-  /* Free memory.  */
-  gdb_block_iter = stab->blocks;
-
-  for (gdb_block_iter = stab->blocks, gdb_block_iter_tmp = gdb_block_iter->next;
-       gdb_block_iter;
-       gdb_block_iter = gdb_block_iter_tmp)
-    {
-      gdb_block_iter_tmp = gdb_block_iter->next;
-      xfree ((void *) gdb_block_iter->name);
-      xfree (gdb_block_iter);
-    }
-  xfree (stab->linetable);
-  xfree ((char *) stab->file_name);
-  xfree (stab);
 }
 
 /* Called when closing a gdb_objfile.  Converts OBJ to a proper
@@ -779,26 +676,23 @@ finalize_symtab (struct gdb_symtab *stab
 
 static void
 jit_object_close_impl (struct gdb_symbol_callbacks *cb,
-                       struct gdb_object *obj)
+		       struct gdb_object *obj)
 {
-  struct gdb_symtab *i, *j;
   struct objfile *objfile;
   jit_dbg_reader_data *priv_data;
 
   priv_data = (jit_dbg_reader_data *) cb->priv_data;
 
-  objfile = new struct objfile (NULL, "<< JIT compiled code >>",
-				OBJF_NOT_FILENAME);
+  objfile = objfile::make (nullptr, "<< JIT compiled code >>",
+			   OBJF_NOT_FILENAME);
   objfile->per_bfd->gdbarch = target_gdbarch ();
 
-  j = NULL;
-  for (i = obj->symtabs; i; i = j)
-    {
-      j = i->next;
-      finalize_symtab (i, objfile);
-    }
+  for (gdb_symtab &symtab : obj->symtabs)
+    finalize_symtab (&symtab, objfile);
+
   add_objfile_entry (objfile, *priv_data);
-  xfree (obj);
+
+  delete obj;
 }
 
 /* Try to read CODE_ENTRY using the loaded jit reader (if any).
@@ -807,9 +701,8 @@ jit_object_close_impl (struct gdb_symbol
 
 static int
 jit_reader_try_read_symtab (struct jit_code_entry *code_entry,
-                            CORE_ADDR entry_addr)
+			    CORE_ADDR entry_addr)
 {
-  gdb_byte *gdb_mem;
   int status;
   jit_dbg_reader_data priv_data;
   struct gdb_reader_funcs *funcs;
@@ -832,12 +725,12 @@ jit_reader_try_read_symtab (struct jit_c
   if (!loaded_jit_reader)
     return 0;
 
-  gdb_mem = (gdb_byte *) xmalloc (code_entry->symfile_size);
+  gdb::byte_vector gdb_mem (code_entry->symfile_size);
 
   status = 1;
   try
     {
-      if (target_read_memory (code_entry->symfile_addr, gdb_mem,
+      if (target_read_memory (code_entry->symfile_addr, gdb_mem.data (),
 			      code_entry->symfile_size))
 	status = 0;
     }
@@ -849,15 +742,15 @@ jit_reader_try_read_symtab (struct jit_c
   if (status)
     {
       funcs = loaded_jit_reader->functions;
-      if (funcs->read (funcs, &callbacks, gdb_mem, code_entry->symfile_size)
-          != GDB_SUCCESS)
-        status = 0;
+      if (funcs->read (funcs, &callbacks, gdb_mem.data (),
+		       code_entry->symfile_size)
+	  != GDB_SUCCESS)
+	status = 0;
     }
 
-  xfree (gdb_mem);
   if (jit_debug && status == 0)
     fprintf_unfiltered (gdb_stdlog,
-                        "Could not read symtab using the loaded JIT reader.\n");
+			"Could not read symtab using the loaded JIT reader.\n");
   return status;
 }
 
@@ -866,8 +759,8 @@ jit_reader_try_read_symtab (struct jit_c
 
 static void
 jit_bfd_try_read_symtab (struct jit_code_entry *code_entry,
-                         CORE_ADDR entry_addr,
-                         struct gdbarch *gdbarch)
+			 CORE_ADDR entry_addr,
+			 struct gdbarch *gdbarch)
 {
   struct bfd_section *sec;
   struct objfile *objfile;
@@ -902,7 +795,7 @@ JITed symbol file is not an object file,
   b = gdbarch_bfd_arch_info (gdbarch);
   if (b->compatible (b, bfd_get_arch_info (nbfd.get ())) != b)
     warning (_("JITed object file architecture %s is not compatible "
-               "with target architecture %s."),
+	       "with target architecture %s."),
 	     bfd_get_arch_info (nbfd.get ())->printable_name,
 	     b->printable_name);
 
@@ -913,8 +806,8 @@ JITed symbol file is not an object file,
   for (sec = nbfd->sections; sec != NULL; sec = sec->next)
     if ((bfd_section_flags (sec) & (SEC_ALLOC|SEC_LOAD)) != 0)
       {
-        /* We assume that these virtual addresses are absolute, and do not
-           treat them as offsets.  */
+	/* We assume that these virtual addresses are absolute, and do not
+	   treat them as offsets.  */
 	sai.emplace_back (bfd_section_vma (sec),
 			  bfd_section_name (sec),
 			  sec->index);
@@ -936,16 +829,16 @@ JITed symbol file is not an object file,
 
 static void
 jit_register_code (struct gdbarch *gdbarch,
-                   CORE_ADDR entry_addr, struct jit_code_entry *code_entry)
+		   CORE_ADDR entry_addr, struct jit_code_entry *code_entry)
 {
   int success;
 
   if (jit_debug)
     fprintf_unfiltered (gdb_stdlog,
-                        "jit_register_code, symfile_addr = %s, "
-                        "symfile_size = %s\n",
-                        paddress (gdbarch, code_entry->symfile_addr),
-                        pulongest (code_entry->symfile_size));
+			"jit_register_code, symfile_addr = %s, "
+			"symfile_size = %s\n",
+			paddress (gdbarch, code_entry->symfile_addr),
+			pulongest (code_entry->symfile_size));
 
   success = jit_reader_try_read_symtab (code_entry, entry_addr);
 
@@ -953,18 +846,6 @@ jit_register_code (struct gdbarch *gdbar
     jit_bfd_try_read_symtab (code_entry, entry_addr, gdbarch);
 }
 
-/* This function unregisters JITed code and frees the corresponding
-   objfile.  */
-
-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;
-}
-
 /* Look up the objfile with this code entry address.  */
 
 static struct objfile *
@@ -972,13 +853,10 @@ jit_find_objf_with_entry_addr (CORE_ADDR
 {
   for (objfile *objf : current_program_space->objfiles ())
     {
-      struct jit_objfile_data *objf_data;
-
-      objf_data
-	= (struct jit_objfile_data *) objfile_data (objf, jit_objfile_data);
-      if (objf_data != NULL && objf_data->addr == entry_addr)
-        return objf;
+      if (objf->jited_data != nullptr && objf->jited_data->addr == entry_addr)
+	return objf;
     }
+
   return NULL;
 }
 
@@ -988,80 +866,84 @@ jit_find_objf_with_entry_addr (CORE_ADDR
 static void
 jit_breakpoint_deleted (struct breakpoint *b)
 {
-  struct bp_location *iter;
-
   if (b->type != bp_jit_event)
     return;
 
-  for (iter = b->loc; iter != NULL; iter = iter->next)
+  for (bp_location *iter = b->loc; iter != nullptr; iter = iter->next)
     {
-      struct jit_program_space_data *ps_data;
-
-      ps_data = jit_program_space_key.get (iter->pspace);
-      if (ps_data != NULL && ps_data->jit_breakpoint == iter->owner)
+      for (objfile *objf : iter->pspace->objfiles ())
 	{
-	  ps_data->cached_code_address = 0;
-	  ps_data->jit_breakpoint = NULL;
+	  jiter_objfile_data *jiter_data = objf->jiter_data.get ();
+
+	  if (jiter_data != nullptr
+	      && jiter_data->jit_breakpoint == iter->owner)
+	    {
+	      jiter_data->cached_code_address = 0;
+	      jiter_data->jit_breakpoint = nullptr;
+	    }
 	}
     }
 }
 
-/* (Re-)Initialize the jit breakpoint if necessary.
-   Return 0 if the jit breakpoint has been successfully initialized.  */
+/* (Re-)Initialize the jit breakpoints for JIT-producing objfiles in
+   PSPACE.  */
 
-static int
-jit_breakpoint_re_set_internal (struct gdbarch *gdbarch,
-				struct jit_program_space_data *ps_data)
+static void
+jit_breakpoint_re_set_internal (struct gdbarch *gdbarch, program_space *pspace)
 {
-  struct bound_minimal_symbol reg_symbol;
-  struct bound_minimal_symbol desc_symbol;
-  struct jit_objfile_data *objf_data;
-  CORE_ADDR addr;
-
-  if (ps_data->objfile == NULL)
+  for (objfile *the_objfile : pspace->objfiles ())
     {
+      if (the_objfile->skip_jit_symbol_lookup)
+	continue;
+
       /* Lookup the registration symbol.  If it is missing, then we
 	 assume we are not attached to a JIT.  */
-      reg_symbol = lookup_bound_minimal_symbol (jit_break_name);
+      bound_minimal_symbol reg_symbol
+	= lookup_minimal_symbol (jit_break_name, nullptr, the_objfile);
       if (reg_symbol.minsym == NULL
 	  || BMSYMBOL_VALUE_ADDRESS (reg_symbol) == 0)
-	return 1;
+	{
+	  /* No need to repeat the lookup the next time.  */
+	  the_objfile->skip_jit_symbol_lookup = true;
+	  continue;
+	}
 
-      desc_symbol = lookup_minimal_symbol (jit_descriptor_name, NULL,
-					   reg_symbol.objfile);
+      bound_minimal_symbol desc_symbol
+	= lookup_minimal_symbol (jit_descriptor_name, NULL, the_objfile);
       if (desc_symbol.minsym == NULL
 	  || BMSYMBOL_VALUE_ADDRESS (desc_symbol) == 0)
-	return 1;
+	{
+	  /* No need to repeat the lookup the next time.  */
+	  the_objfile->skip_jit_symbol_lookup = true;
+	  continue;
+	}
 
-      objf_data = get_jit_objfile_data (reg_symbol.objfile);
+      jiter_objfile_data *objf_data
+	= get_jiter_objfile_data (reg_symbol.objfile);
       objf_data->register_code = reg_symbol.minsym;
       objf_data->descriptor = desc_symbol.minsym;
 
-      ps_data->objfile = reg_symbol.objfile;
-    }
-  else
-    objf_data = get_jit_objfile_data (ps_data->objfile);
+      CORE_ADDR addr = MSYMBOL_VALUE_ADDRESS (the_objfile,
+					      objf_data->register_code);
 
-  addr = MSYMBOL_VALUE_ADDRESS (ps_data->objfile, objf_data->register_code);
-
-  if (jit_debug)
-    fprintf_unfiltered (gdb_stdlog,
-			"jit_breakpoint_re_set_internal, "
-			"breakpoint_addr = %s\n",
-			paddress (gdbarch, addr));
-
-  if (ps_data->cached_code_address == addr)
-    return 0;
-
-  /* Delete the old breakpoint.  */
-  if (ps_data->jit_breakpoint != NULL)
-    delete_breakpoint (ps_data->jit_breakpoint);
-
-  /* Put a breakpoint in the registration symbol.  */
-  ps_data->cached_code_address = addr;
-  ps_data->jit_breakpoint = create_jit_event_breakpoint (gdbarch, addr);
-
-  return 0;
+      if (jit_debug)
+	fprintf_unfiltered (gdb_stdlog,
+			    "jit_breakpoint_re_set_internal, "
+			    "breakpoint_addr = %s\n",
+			    paddress (gdbarch, addr));
+
+      /* Check if we need to re-create the breakpoint.  */
+      if (objf_data->cached_code_address == addr)
+	continue;
+
+      /* Delete the old breakpoint.  */
+      if (objf_data->jit_breakpoint != nullptr)
+	delete_breakpoint (objf_data->jit_breakpoint);
+
+      /* Put a breakpoint in the registration symbol.  */
+      objf_data->cached_code_address = addr;
+      objf_data->jit_breakpoint = create_jit_event_breakpoint (gdbarch, addr);
+    }
 }
 
 /* The private data passed around in the frame unwind callback
@@ -1081,7 +963,7 @@ struct jit_unwind_private
 
 static void
 jit_unwind_reg_set_impl (struct gdb_unwind_callbacks *cb, int dwarf_regnum,
-                         struct gdb_reg_value *value)
+			 struct gdb_reg_value *value)
 {
   struct jit_unwind_private *priv;
   int gdb_reg;
@@ -1089,13 +971,13 @@ jit_unwind_reg_set_impl (struct gdb_unwi
   priv = (struct jit_unwind_private *) cb->priv_data;
 
   gdb_reg = gdbarch_dwarf2_reg_to_regnum (get_frame_arch (priv->this_frame),
-                                          dwarf_regnum);
+					  dwarf_regnum);
   if (gdb_reg == -1)
     {
       if (jit_debug)
-        fprintf_unfiltered (gdb_stdlog,
-                            _("Could not recognize DWARF regnum %d"),
-                            dwarf_regnum);
+	fprintf_unfiltered (gdb_stdlog,
+			    _("Could not recognize DWARF regnum %d"),
+			    dwarf_regnum);
       value->free (value);
       return;
     }
@@ -1157,7 +1039,7 @@ jit_dealloc_cache (struct frame_info *th
 
 static int
 jit_frame_sniffer (const struct frame_unwind *self,
-                   struct frame_info *this_frame, void **cache)
+		   struct frame_info *this_frame, void **cache)
 {
   struct jit_unwind_private *priv_data;
   struct gdb_unwind_callbacks callbacks;
@@ -1187,13 +1069,13 @@ jit_frame_sniffer (const struct frame_un
   if (funcs->unwind (funcs, &callbacks) == GDB_SUCCESS)
     {
       if (jit_debug)
-        fprintf_unfiltered (gdb_stdlog, _("Successfully unwound frame using "
-                                          "JIT reader.\n"));
+	fprintf_unfiltered (gdb_stdlog, _("Successfully unwound frame using "
+					  "JIT reader.\n"));
       return 1;
     }
   if (jit_debug)
     fprintf_unfiltered (gdb_stdlog, _("Could not unwind frame using "
-                                      "JIT reader.\n"));
+				      "JIT reader.\n"));
 
   jit_dealloc_cache (this_frame, *cache);
   *cache = NULL;
@@ -1207,7 +1089,7 @@ jit_frame_sniffer (const struct frame_un
 
 static void
 jit_frame_this_id (struct frame_info *this_frame, void **cache,
-                   struct frame_id *this_id)
+		   struct frame_id *this_id)
 {
   struct jit_unwind_private priv;
   struct gdb_frame_id frame_id;
@@ -1300,7 +1182,6 @@ jit_inferior_init (struct gdbarch *gdbar
 {
   struct jit_descriptor descriptor;
   struct jit_code_entry cur_entry;
-  struct jit_program_space_data *ps_data;
   CORE_ADDR cur_entry_addr;
 
   if (jit_debug)
@@ -1308,38 +1189,43 @@ jit_inferior_init (struct gdbarch *gdbar
 
   jit_prepend_unwinder (gdbarch);
 
-  ps_data = get_jit_program_space_data ();
-  if (jit_breakpoint_re_set_internal (gdbarch, ps_data) != 0)
-    return;
-
-  /* Read the descriptor so we can check the version number and load
-     any already JITed functions.  */
-  if (!jit_read_descriptor (gdbarch, &descriptor, ps_data))
-    return;
+  jit_breakpoint_re_set_internal (gdbarch, current_program_space);
 
-  /* Check that the version number agrees with that we support.  */
-  if (descriptor.version != 1)
+  for (objfile *jiter : current_program_space->objfiles ())
     {
-      printf_unfiltered (_("Unsupported JIT protocol version %ld "
-			   "in descriptor (expected 1)\n"),
-			 (long) descriptor.version);
-      return;
-    }
+      if (jiter->jiter_data == nullptr)
+	continue;
+
+      /* Read the descriptor so we can check the version number and load
+	 any already JITed functions.  */
+      if (!jit_read_descriptor (gdbarch, &descriptor, jiter))
+	continue;
 
-  /* If we've attached to a running program, we need to check the descriptor
-     to register any functions that were already generated.  */
-  for (cur_entry_addr = descriptor.first_entry;
-       cur_entry_addr != 0;
-       cur_entry_addr = cur_entry.next_entry)
-    {
-      jit_read_code_entry (gdbarch, cur_entry_addr, &cur_entry);
-
-      /* This hook may be called many times during setup, so make sure we don't
-         add the same symbol file twice.  */
-      if (jit_find_objf_with_entry_addr (cur_entry_addr) != NULL)
-        continue;
+      /* Check that the version number agrees with that we support.  */
+      if (descriptor.version != 1)
+	{
+	  printf_unfiltered (_("Unsupported JIT protocol version %ld "
+			       "in descriptor (expected 1)\n"),
+			     (long) descriptor.version);
+	  continue;
+	}
 
-      jit_register_code (gdbarch, cur_entry_addr, &cur_entry);
+      /* If we've attached to a running program, we need to check the
+	 descriptor to register any functions that were already
+	 generated.  */
+      for (cur_entry_addr = descriptor.first_entry;
+	   cur_entry_addr != 0;
+	   cur_entry_addr = cur_entry.next_entry)
+	{
+	  jit_read_code_entry (gdbarch, cur_entry_addr, &cur_entry);
+
+	  /* This hook may be called many times during setup, so make sure
+	     we don't add the same symbol file twice.  */
+	  if (jit_find_objf_with_entry_addr (cur_entry_addr) != NULL)
+	    continue;
+
+	  jit_register_code (gdbarch, cur_entry_addr, &cur_entry);
+	}
     }
 }
 
@@ -1365,8 +1251,7 @@ jit_inferior_created_hook (void)
 void
 jit_breakpoint_re_set (void)
 {
-  jit_breakpoint_re_set_internal (target_gdbarch (),
-				  get_jit_program_space_data ());
+  jit_breakpoint_re_set_internal (target_gdbarch (), current_program_space);
 }
 
 /* This function cleans up any code entries left over when the
@@ -1378,77 +1263,58 @@ jit_inferior_exit_hook (struct inferior
 {
   for (objfile *objf : current_program_space->objfiles_safe ())
     {
-      struct jit_objfile_data *objf_data
-	= (struct jit_objfile_data *) objfile_data (objf, jit_objfile_data);
-
-      if (objf_data != NULL && objf_data->addr != 0)
-	jit_unregister_code (objf);
+      if (objf->jited_data != nullptr && objf->jited_data->addr != 0)
+	objf->unlink ();
     }
 }
 
 void
-jit_event_handler (struct gdbarch *gdbarch)
+jit_event_handler (gdbarch *gdbarch, objfile *jiter)
 {
   struct jit_descriptor descriptor;
-  struct jit_code_entry code_entry;
-  CORE_ADDR entry_addr;
-  struct objfile *objf;
+
+  /* If we get a JIT breakpoint event for this objfile, it is necessarily a
+     JITer.  */
+  gdb_assert (jiter->jiter_data != nullptr);
 
   /* Read the descriptor from remote memory.  */
-  if (!jit_read_descriptor (gdbarch, &descriptor,
-			    get_jit_program_space_data ()))
+  if (!jit_read_descriptor (gdbarch, &descriptor, jiter))
     return;
-  entry_addr = descriptor.relevant_entry;
+  CORE_ADDR entry_addr = descriptor.relevant_entry;
 
   /* Do the corresponding action.  */
   switch (descriptor.action_flag)
     {
     case JIT_NOACTION:
       break;
+
     case JIT_REGISTER:
-      jit_read_code_entry (gdbarch, entry_addr, &code_entry);
-      jit_register_code (gdbarch, entry_addr, &code_entry);
-      break;
+      {
+	jit_code_entry code_entry;
+	jit_read_code_entry (gdbarch, entry_addr, &code_entry);
+	jit_register_code (gdbarch, entry_addr, &code_entry);
+	break;
+      }
+
     case JIT_UNREGISTER:
-      objf = jit_find_objf_with_entry_addr (entry_addr);
-      if (objf == NULL)
-	printf_unfiltered (_("Unable to find JITed code "
-			     "entry at address: %s\n"),
-			   paddress (gdbarch, entry_addr));
-      else
-        jit_unregister_code (objf);
+      {
+	objfile *jited = jit_find_objf_with_entry_addr (entry_addr);
+	if (jited == nullptr)
+	  printf_unfiltered (_("Unable to find JITed code "
+			       "entry at address: %s\n"),
+			     paddress (gdbarch, entry_addr));
+	else
+	  jited->unlink ();
+
+	break;
+      }
 
-      break;
     default:
       error (_("Unknown action_flag value in JIT descriptor!"));
       break;
     }
 }
 
-/* Called to free the data allocated to the jit_program_space_data slot.  */
-
-static void
-free_objfile_data (struct objfile *objfile, void *data)
-{
-  struct jit_objfile_data *objf_data = (struct jit_objfile_data *) data;
-
-  if (objf_data->register_code != NULL)
-    {
-      struct jit_program_space_data *ps_data;
-
-      ps_data = jit_program_space_key.get (objfile->pspace);
-      if (ps_data != NULL && ps_data->objfile == objfile)
-	{
-	  ps_data->objfile = NULL;
-	  if (ps_data->jit_breakpoint != NULL)
-	    delete_breakpoint (ps_data->jit_breakpoint);
-	  ps_data->cached_code_address = 0;
-	}
-    }
-
-  xfree (data);
-}
-
 /* Initialize the jit_gdbarch_data slot with an instance of struct
    jit_gdbarch_data_type */
 
@@ -1463,11 +1329,12 @@ jit_gdbarch_data_init (struct obstack *o
   return data;
 }
 
+void _initialize_jit ();
 void
-_initialize_jit (void)
+_initialize_jit ()
 {
   jit_reader_dir = relocate_gdb_directory (JIT_READER_DIR,
-                                           JIT_READER_DIR_RELOCATABLE);
+					   JIT_READER_DIR_RELOCATABLE);
   add_setshow_zuinteger_cmd ("jit", class_maintenance, &jit_debug,
 			     _("Set JIT debugging."),
 			     _("Show JIT debugging."),
@@ -1480,8 +1347,6 @@ _initialize_jit (void)
   gdb::observers::inferior_exit.attach (jit_inferior_exit_hook);
   gdb::observers::breakpoint_deleted.attach (jit_breakpoint_deleted);
 
-  jit_objfile_data =
-    register_objfile_data_with_cleanup (NULL, free_objfile_data);
   jit_gdbarch_data = gdbarch_data_register_pre_init (jit_gdbarch_data_init);
   if (is_dl_available ())
     {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/jit.h ./gdb/jit.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/jit.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/jit.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* JIT declarations for GDB, the GNU Debugger.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -20,6 +20,9 @@
 #ifndef JIT_H
 #define JIT_H
 
+struct objfile;
+struct minimal_symbol;
+
 /* When the JIT breakpoint fires, the inferior wants us to take one of
    these actions.  These values are used by the inferior, so the
    values of these enums cannot be changed.  */
@@ -64,6 +67,41 @@ struct jit_descriptor
   CORE_ADDR first_entry;
 };
 
+/* An objfile that defines the required symbols of the JIT interface has an
+   instance of this type attached to it.  */
+
+struct jiter_objfile_data
+{
+  ~jiter_objfile_data ();
+
+  /* Symbol for __jit_debug_register_code.  */
+  minimal_symbol *register_code = nullptr;
+
+  /* Symbol for __jit_debug_descriptor.  */
+  minimal_symbol *descriptor = nullptr;
+
+  /* This is the relocated address of the __jit_debug_register_code function
+     provided by this objfile.  This is used to detect relocations changes
+     requiring the breakpoint to be re-created.  */
+  CORE_ADDR cached_code_address = 0;
+
+  /* This is the JIT event breakpoint, or nullptr if it has been deleted.  */
+  breakpoint *jit_breakpoint = nullptr;
+};
+
+/* An objfile that is the product of JIT compilation and was registered
+   using the JIT interface has an instance of this type attached to it.  */
+
+struct jited_objfile_data
+{
+  jited_objfile_data (CORE_ADDR addr)
+    : addr (addr)
+  {}
+
+  /* Address of struct jit_code_entry for this objfile.  */
+  CORE_ADDR addr;
+};
+
 /* Looks for the descriptor and registration symbols and breakpoints
    the registration function.  If it finds both, it registers all the
    already JITed code.  If it has already found the symbols, then it
@@ -76,8 +114,9 @@ extern void jit_inferior_created_hook (v
 extern void jit_breakpoint_re_set (void);
 
 /* This function is called by handle_inferior_event when it decides
-   that the JIT event breakpoint has fired.  */
+   that the JIT event breakpoint has fired.  JITER is the objfile
+   whose JIT event breakpoint has been hit.  */
 
-extern void jit_event_handler (struct gdbarch *gdbarch);
+extern void jit_event_handler (gdbarch *gdbarch, objfile *jiter);
 
 #endif /* JIT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/jit-reader.in ./gdb/jit-reader.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/jit-reader.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/jit-reader.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* JIT declarations for GDB, the GNU Debugger.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/language.c ./gdb/language.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/language.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/language.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Multiple source language support for GDB.
 
-   Copyright (C) 1991-2020 Free Software Foundation, Inc.
+   Copyright (C) 1991-2021 Free Software Foundation, Inc.
 
    Contributed by the Department of Computer Science at the State University
    of New York at Buffalo.
@@ -47,24 +47,8 @@
 #include <algorithm>
 #include "gdbarch.h"
 
-static int unk_lang_parser (struct parser_state *);
-
 static void set_range_case (void);
 
-static void unk_lang_emit_char (int c, struct type *type,
-				struct ui_file *stream, int quoter);
-
-static void unk_lang_printchar (int c, struct type *type,
-				struct ui_file *stream);
-
-static void unk_lang_value_print (struct value *, struct ui_file *,
-				  const struct value_print_options *);
-
-static CORE_ADDR unk_lang_trampoline (struct frame_info *, CORE_ADDR pc);
-
-/* Forward declaration */
-extern const struct language_defn unknown_language_defn;
-
 /* The current (default at startup) state of type and range checking.
    (If the modes are set to "auto", though, these are changed based
    on the default language at startup, and then again based on the
@@ -77,7 +61,7 @@ enum case_sensitivity case_sensitivity =
 
 /* The current language and language_mode (see language.h).  */
 
-const struct language_defn *current_language = &unknown_language_defn;
+const struct language_defn *current_language = nullptr;
 enum language_mode language_mode = language_mode_auto;
 
 /* The language that the user expects to be typing in (the language
@@ -85,26 +69,9 @@ enum language_mode language_mode = langu
 
 const struct language_defn *expected_language;
 
-/* The list of supported languages.  Keep this in the same order as
-   the 'enum language' values.  */
+/* Define the array containing all languages.  */
 
-static const struct language_defn *languages[] = {
-  &unknown_language_defn,
-  &auto_language_defn,
-  &c_language_defn,
-  &objc_language_defn,
-  &cplus_language_defn,
-  &d_language_defn,
-  &go_language_defn,
-  &f_language_defn,
-  &m2_language_defn,
-  &asm_language_defn,
-  &pascal_language_defn,
-  &opencl_language_defn,
-  &rust_language_defn,
-  &minimal_language_defn,
-  &ada_language_defn,
-};
+const struct language_defn *language_defn::languages[nr_languages];
 
 /* The current values of the "set language/range/case-sensitive" enum
    commands.  */
@@ -162,7 +129,7 @@ set_language_command (const char *ignore
     language = "auto";
 
   /* Search the list of languages for a match.  */
-  for (const auto &lang : languages)
+  for (const auto &lang : language_defn::languages)
     {
       if (strcmp (lang->la_name, language) == 0)
 	{
@@ -377,7 +344,7 @@ set_language (enum language lang)
   enum language prev_language;
 
   prev_language = current_language->la_language;
-  current_language = languages[lang];
+  current_language = language_def (lang);
   set_range_case ();
   return prev_language;
 }
@@ -410,7 +377,7 @@ language_info (int quietly)
 int
 pointer_type (struct type *type)
 {
-  return TYPE_CODE (type) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type);
+  return type->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type);
 }
 
 
@@ -474,7 +441,7 @@ range_error (const char *string,...)
 enum language
 language_enum (const char *str)
 {
-  for (const auto &lang : languages)
+  for (const auto &lang : language_defn::languages)
     if (strcmp (lang->la_name, str) == 0)
       return lang->la_language;
 
@@ -489,7 +456,9 @@ language_enum (const char *str)
 const struct language_defn *
 language_def (enum language lang)
 {
-  return languages[lang];
+  const struct language_defn *l = language_defn::languages[lang];
+  gdb_assert (l != nullptr);
+  return l;
 }
 
 /* Return the language as a string.  */
@@ -497,22 +466,9 @@ language_def (enum language lang)
 const char *
 language_str (enum language lang)
 {
-  return languages[lang]->la_name;
+  return language_def (lang)->la_name;
 }
 
-static void
-set_check (const char *ignore, int from_tty)
-{
-  printf_unfiltered (
-     "\"set check\" must be followed by the name of a check subcommand.\n");
-  help_list (setchecklist, "set check ", all_commands, gdb_stdout);
-}
-
-static void
-show_check (const char *ignore, int from_tty)
-{
-  cmd_show_list (showchecklist, from_tty, "");
-}
 
 
 /* Build and install the "set language LANG" command.  */
@@ -525,16 +481,16 @@ add_set_language_command ()
   /* Build the language names array, to be used as enumeration in the
      "set language" enum command.  +1 for "local" and +1 for NULL
      termination.  */
-  language_names = new const char *[ARRAY_SIZE (languages) + 2];
+  language_names = new const char *[ARRAY_SIZE (language_defn::languages) + 2];
 
   /* Display "auto", "local" and "unknown" first, and then the rest,
      alpha sorted.  */
   const char **language_names_p = language_names;
-  *language_names_p++ = auto_language_defn.la_name;
+  *language_names_p++ = language_def (language_auto)->la_name;
   *language_names_p++ = "local";
-  *language_names_p++ = unknown_language_defn.la_name;
+  *language_names_p++ = language_def (language_unknown)->la_name;
   const char **sort_begin = language_names_p;
-  for (const auto &lang : languages)
+  for (const auto &lang : language_defn::languages)
     {
       /* Already handled above.  */
       if (lang->la_language == language_auto
@@ -546,7 +502,7 @@ add_set_language_command ()
   std::sort (sort_begin, language_names_p, compare_cstrings);
 
   /* Add the filename extensions.  */
-  for (const auto &lang : languages)
+  for (const auto &lang : language_defn::languages)
     if (lang->la_filename_extensions != NULL)
       {
 	for (size_t i = 0; lang->la_filename_extensions[i] != NULL; ++i)
@@ -561,7 +517,7 @@ add_set_language_command ()
 		"The currently understood settings are:\n\nlocal or "
 		"auto    Automatic setting based on source file"));
 
-  for (const auto &lang : languages)
+  for (const auto &lang : language_defn::languages)
     {
       /* Already dealt with these above.  */
       if (lang->la_language == language_unknown
@@ -596,15 +552,12 @@ add_set_language_command ()
 CORE_ADDR 
 skip_language_trampoline (struct frame_info *frame, CORE_ADDR pc)
 {
-  for (const auto &lang : languages)
+  for (const auto &lang : language_defn::languages)
     {
-      if (lang->skip_trampoline != NULL)
-	{
-	  CORE_ADDR real_pc = lang->skip_trampoline (frame, pc);
+      CORE_ADDR real_pc = lang->skip_trampoline (frame, pc);
 
-	  if (real_pc)
-	    return real_pc;
-	}
+      if (real_pc != 0)
+	return real_pc;
     }
 
   return 0;
@@ -620,91 +573,147 @@ char *
 language_demangle (const struct language_defn *current_language, 
 				const char *mangled, int options)
 {
-  if (current_language != NULL && current_language->la_demangle)
-    return current_language->la_demangle (mangled, options);
+  if (current_language != NULL)
+    return current_language->demangle (mangled, options);
   return NULL;
 }
 
+/* Return information about whether TYPE should be passed
+   (and returned) by reference at the language level.  */
+
+struct language_pass_by_ref_info
+language_pass_by_reference (struct type *type)
+{
+  return current_language->pass_by_reference_info (type);
+}
+
+/* Return the default string containing the list of characters
+   delimiting words.  This is a reasonable default value that
+   most languages should be able to use.  */
+
+const char *
+default_word_break_characters (void)
+{
+  return " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,-";
+}
+
 /* See language.h.  */
 
-int
-language_sniff_from_mangled_name (const struct language_defn *lang,
-				  const char *mangled, char **demangled)
+void
+language_defn::print_array_index (struct type *index_type, LONGEST index,
+				  struct ui_file *stream,
+				  const value_print_options *options) const
 {
-  gdb_assert (lang != NULL);
+  struct value *index_value = value_from_longest (index_type, index);
 
-  if (lang->la_sniff_from_mangled_name == NULL)
-    {
-      *demangled = NULL;
-      return 0;
-    }
+  fprintf_filtered (stream, "[");
+  LA_VALUE_PRINT (index_value, stream, options);
+  fprintf_filtered (stream, "] = ");
+}
 
-  return lang->la_sniff_from_mangled_name (mangled, demangled);
+/* See language.h.  */
+
+gdb::unique_xmalloc_ptr<char>
+language_defn::watch_location_expression (struct type *type,
+					  CORE_ADDR addr) const
+{
+  /* Generates an expression that assumes a C like syntax is valid.  */
+  type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
+  std::string name = type_to_string (type);
+  return gdb::unique_xmalloc_ptr<char>
+    (xstrprintf ("* (%s *) %s", name.c_str (), core_addr_to_string (addr)));
 }
 
-/* Return class name from physname or NULL.  */
-char *
-language_class_name_from_physname (const struct language_defn *lang,
-				   const char *physname)
+/* See language.h.  */
+
+void
+language_defn::value_print (struct value *val, struct ui_file *stream,
+	       const struct value_print_options *options) const
 {
-  if (lang != NULL && lang->la_class_name_from_physname)
-    return lang->la_class_name_from_physname (physname);
-  return NULL;
+  return c_value_print (val, stream, options);
 }
 
-/* Return non-zero if TYPE should be passed (and returned) by
-   reference at the language level.  */
+/* See language.h.  */
+
 int
-language_pass_by_reference (struct type *type)
+language_defn::parser (struct parser_state *ps) const
 {
-  return current_language->la_pass_by_reference (type);
+  return c_parse (ps);
 }
 
-/* Return zero; by default, types are passed by value at the language
-   level.  The target ABI may pass or return some structs by reference
-   independent of this.  */
-int
-default_pass_by_reference (struct type *type)
+/* See language.h.  */
+
+void
+language_defn::value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const
 {
-  return 0;
+  return c_value_print_inner (val, stream, recurse, options);
 }
 
-/* Return the default string containing the list of characters
-   delimiting words.  This is a reasonable default value that
-   most languages should be able to use.  */
+/* See language.h.  */
 
-const char *
-default_word_break_characters (void)
+void
+language_defn::emitchar (int ch, struct type *chtype,
+			 struct ui_file * stream, int quoter) const
 {
-  return " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,-";
+  c_emit_char (ch, chtype, stream, quoter);
 }
 
-/* Print the index of array elements using the C99 syntax.  */
+/* See language.h.  */
 
 void
-default_print_array_index (struct value *index_value, struct ui_file *stream,
-			   const struct value_print_options *options)
+language_defn::printchar (int ch, struct type *chtype,
+			  struct ui_file * stream) const
 {
-  fprintf_filtered (stream, "[");
-  LA_VALUE_PRINT (index_value, stream, options);
-  fprintf_filtered (stream, "] = ");
+  c_printchar (ch, chtype, stream);
+}
+
+/* See language.h.  */
+
+void
+language_defn::printstr (struct ui_file *stream, struct type *elttype,
+			 const gdb_byte *string, unsigned int length,
+			 const char *encoding, int force_ellipses,
+			 const struct value_print_options *options) const
+{
+  c_printstr (stream, elttype, string, length, encoding, force_ellipses,
+	      options);
+}
+
+/* See language.h.  */
+
+void
+language_defn::print_typedef (struct type *type, struct symbol *new_symbol,
+			      struct ui_file *stream) const
+{
+  c_print_typedef (type, new_symbol, stream);
 }
 
 /* See language.h.  */
 
 bool
+language_defn::is_string_type_p (struct type *type) const
+{
+  return c_is_string_type_p (type);
+}
+
+/* The default implementation of the get_symbol_name_matcher_inner method
+   from the language_defn class.  Matches with strncmp_iw.  */
+
+static bool
 default_symbol_name_matcher (const char *symbol_search_name,
 			     const lookup_name_info &lookup_name,
 			     completion_match_result *comp_match_res)
 {
-  const std::string &name = lookup_name.name ();
+  gdb::string_view name = lookup_name.name ();
   completion_match_for_lcd *match_for_lcd
     = (comp_match_res != NULL ? &comp_match_res->match_for_lcd : NULL);
   strncmp_iw_mode mode = (lookup_name.completion_mode ()
 			  ? strncmp_iw_mode::NORMAL
 			  : strncmp_iw_mode::MATCH_PARAMS);
 
-  if (strncmp_iw_with_mode (symbol_search_name, name.c_str (), name.size (),
+  if (strncmp_iw_with_mode (symbol_search_name, name.data (), name.size (),
 			    mode, language_minimal, match_for_lcd) == 0)
     {
       if (comp_match_res != NULL)
@@ -717,111 +726,42 @@ default_symbol_name_matcher (const char
 
 /* See language.h.  */
 
-bool
-default_is_string_type_p (struct type *type)
-{
-  type = check_typedef (type);
-  while (TYPE_CODE (type) == TYPE_CODE_REF)
-    {
-      type = TYPE_TARGET_TYPE (type);
-      type = check_typedef (type);
-    }
-  return (TYPE_CODE (type)  == TYPE_CODE_STRING);
-}
-
-/* See language.h.  */
-
 symbol_name_matcher_ftype *
-get_symbol_name_matcher (const language_defn *lang,
-			 const lookup_name_info &lookup_name)
+language_defn::get_symbol_name_matcher
+	(const lookup_name_info &lookup_name) const
 {
   /* If currently in Ada mode, and the lookup name is wrapped in
      '<...>', hijack all symbol name comparisons using the Ada
      matcher, which handles the verbatim matching.  */
   if (current_language->la_language == language_ada
       && lookup_name.ada ().verbatim_p ())
-    return current_language->la_get_symbol_name_matcher (lookup_name);
-
-  if (lang->la_get_symbol_name_matcher != nullptr)
-    return lang->la_get_symbol_name_matcher (lookup_name);
-  return default_symbol_name_matcher;
-}
-
-/* Define the language that is no language.  */
-
-static int
-unk_lang_parser (struct parser_state *ps)
-{
-  return 1;
-}
-
-static void
-unk_lang_emit_char (int c, struct type *type, struct ui_file *stream,
-		    int quoter)
-{
-  error (_("internal error - unimplemented "
-	   "function unk_lang_emit_char called."));
-}
-
-static void
-unk_lang_printchar (int c, struct type *type, struct ui_file *stream)
-{
-  error (_("internal error - unimplemented "
-	   "function unk_lang_printchar called."));
-}
-
-static void
-unk_lang_printstr (struct ui_file *stream, struct type *type,
-		   const gdb_byte *string, unsigned int length,
-		   const char *encoding, int force_ellipses,
-		   const struct value_print_options *options)
-{
-  error (_("internal error - unimplemented "
-	   "function unk_lang_printstr called."));
-}
-
-static void
-unk_lang_print_type (struct type *type, const char *varstring,
-		     struct ui_file *stream, int show, int level,
-		     const struct type_print_options *flags)
-{
-  error (_("internal error - unimplemented "
-	   "function unk_lang_print_type called."));
-}
+    return current_language->get_symbol_name_matcher_inner (lookup_name);
 
-static void
-unk_lang_val_print (struct type *type,
-		    int embedded_offset, CORE_ADDR address,
-		    struct ui_file *stream, int recurse,
-		    struct value *val,
-		    const struct value_print_options *options)
-{
-  error (_("internal error - unimplemented "
-	   "function unk_lang_val_print called."));
+  return this->get_symbol_name_matcher_inner (lookup_name);
 }
 
-static void
-unk_lang_value_print (struct value *val, struct ui_file *stream,
-		      const struct value_print_options *options)
-{
-  error (_("internal error - unimplemented "
-	   "function unk_lang_value_print called."));
-}
+/* See language.h.  */
 
-static CORE_ADDR unk_lang_trampoline (struct frame_info *frame, CORE_ADDR pc)
+symbol_name_matcher_ftype *
+language_defn::get_symbol_name_matcher_inner
+	(const lookup_name_info &lookup_name) const
 {
-  return 0;
+  return default_symbol_name_matcher;
 }
 
-/* Unknown languages just use the cplus demangler.  */
-static char *unk_lang_demangle (const char *mangled, int options)
-{
-  return gdb_demangle (mangled, options);
-}
+/* Return true if TYPE is a string type, otherwise return false.  This
+   default implementation only detects TYPE_CODE_STRING.  */
 
-static char *unk_lang_class_name (const char *mangled)
+static bool
+default_is_string_type_p (struct type *type)
 {
-  return NULL;
+  type = check_typedef (type);
+  while (type->code () == TYPE_CODE_REF)
+    {
+      type = TYPE_TARGET_TYPE (type);
+      type = check_typedef (type);
+    }
+  return (type->code ()  == TYPE_CODE_STRING);
 }
 
 static const struct op_print unk_op_print_tab[] =
@@ -839,7 +779,9 @@ unknown_language_arch_info (struct gdbar
 						       struct type *);
 }
 
-const struct language_defn unknown_language_defn =
+/* Constant data that describes the unknown language.  */
+
+extern const struct language_data unknown_language_data =
 {
   "unknown",
   "Unknown",
@@ -850,47 +792,122 @@ const struct language_defn unknown_langu
   macro_expansion_no,
   NULL,
   &exp_descriptor_standard,
-  unk_lang_parser,
-  null_post_parser,
-  unk_lang_printchar,		/* Print character constant */
-  unk_lang_printstr,
-  unk_lang_emit_char,
-  unk_lang_print_type,		/* Print a type using appropriate syntax */
-  default_print_typedef,	/* Print a typedef using appropriate syntax */
-  unk_lang_val_print,		/* Print a value using appropriate syntax */
-  unk_lang_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  unk_lang_trampoline,		/* Language specific skip_trampoline */
   "this",        	    	/* name_of_this */
   true,				/* store_sym_names_in_linkage_form_p */
-  basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  unk_lang_demangle,		/* Language specific symbol demangler */
-  NULL,
-  unk_lang_class_name,		/* Language specific
-				   class_name_from_physname */
   unk_op_print_tab,		/* expression operators for printing */
   1,				/* c-style arrays */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  unknown_language_arch_info,	/* la_language_arch_info.  */
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  default_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
 
-/* These two structs define fake entries for the "local" and "auto"
-   options.  */
-const struct language_defn auto_language_defn =
+/* Class representing the unknown language.  */
+
+class unknown_language : public language_defn
+{
+public:
+  unknown_language ()
+    : language_defn (language_unknown, unknown_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    unknown_language_arch_info (gdbarch, lai);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    error (_("unimplemented unknown_language::print_type called"));
+  }
+
+  /* See language.h.  */
+
+  char *demangle (const char *mangled, int options) const override
+  {
+    /* The unknown language just uses the C++ demangler.  */
+    return gdb_demangle (mangled, options);
+  }
+
+  /* See language.h.  */
+
+  void value_print (struct value *val, struct ui_file *stream,
+		    const struct value_print_options *options) const override
+  {
+    error (_("unimplemented unknown_language::value_print called"));
+  }
+
+  /* See language.h.  */
+
+  void value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const override
+  {
+    error (_("unimplemented unknown_language::value_print_inner called"));
+  }
+
+  /* See language.h.  */
+
+  int parser (struct parser_state *ps) const override
+  {
+    /* No parsing is done, just claim success.  */
+    return 1;
+  }
+
+  /* See language.h.  */
+
+  void emitchar (int ch, struct type *chtype,
+		 struct ui_file *stream, int quoter) const override
+  {
+    error (_("unimplemented unknown_language::emitchar called"));
+  }
+
+  /* See language.h.  */
+
+  void printchar (int ch, struct type *chtype,
+		  struct ui_file *stream) const override
+  {
+    error (_("unimplemented unknown_language::printchar called"));
+  }
+
+  /* See language.h.  */
+
+  void printstr (struct ui_file *stream, struct type *elttype,
+		 const gdb_byte *string, unsigned int length,
+		 const char *encoding, int force_ellipses,
+		 const struct value_print_options *options) const override
+  {
+    error (_("unimplemented unknown_language::printstr called"));
+  }
+
+  /* See language.h.  */
+
+  void print_typedef (struct type *type, struct symbol *new_symbol,
+		      struct ui_file *stream) const override
+  {
+    error (_("unimplemented unknown_language::print_typedef called"));
+  }
+
+  /* See language.h.  */
+
+  bool is_string_type_p (struct type *type) const override
+  {
+    return default_is_string_type_p (type);
+  }
+};
+
+/* Single instance of the unknown language class.  */
+
+static unknown_language unknown_language_defn;
+
+/* Constant data for the fake "auto" language.  */
+
+extern const struct language_data auto_language_data =
 {
   "auto",
   "Auto",
@@ -901,44 +918,119 @@ const struct language_defn auto_language
   macro_expansion_no,
   NULL,
   &exp_descriptor_standard,
-  unk_lang_parser,
-  null_post_parser,
-  unk_lang_printchar,		/* Print character constant */
-  unk_lang_printstr,
-  unk_lang_emit_char,
-  unk_lang_print_type,		/* Print a type using appropriate syntax */
-  default_print_typedef,	/* Print a typedef using appropriate syntax */
-  unk_lang_val_print,		/* Print a value using appropriate syntax */
-  unk_lang_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  unk_lang_trampoline,		/* Language specific skip_trampoline */
   "this",		        /* name_of_this */
   false,			/* store_sym_names_in_linkage_form_p */
-  basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  unk_lang_demangle,		/* Language specific symbol demangler */
-  NULL,
-  unk_lang_class_name,		/* Language specific
-				   class_name_from_physname */
   unk_op_print_tab,		/* expression operators for printing */
   1,				/* c-style arrays */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  unknown_language_arch_info,	/* la_language_arch_info.  */
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  default_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
 
+/* Class representing the fake "auto" language.  */
+
+class auto_language : public language_defn
+{
+public:
+  auto_language ()
+    : language_defn (language_auto, auto_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    unknown_language_arch_info (gdbarch, lai);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    error (_("unimplemented auto_language::print_type called"));
+  }
+
+  /* See language.h.  */
+
+  char *demangle (const char *mangled, int options) const override
+  {
+    /* The auto language just uses the C++ demangler.  */
+    return gdb_demangle (mangled, options);
+  }
+
+  /* See language.h.  */
+
+  void value_print (struct value *val, struct ui_file *stream,
+		    const struct value_print_options *options) const override
+  {
+    error (_("unimplemented auto_language::value_print called"));
+  }
+
+  /* See language.h.  */
+
+  void value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const override
+  {
+    error (_("unimplemented auto_language::value_print_inner called"));
+  }
+
+  /* See language.h.  */
+
+  int parser (struct parser_state *ps) const override
+  {
+    /* No parsing is done, just claim success.  */
+    return 1;
+  }
+
+  /* See language.h.  */
+
+  void emitchar (int ch, struct type *chtype,
+		 struct ui_file *stream, int quoter) const override
+  {
+    error (_("unimplemented auto_language::emitchar called"));
+  }
+
+  /* See language.h.  */
+
+  void printchar (int ch, struct type *chtype,
+		  struct ui_file *stream) const override
+  {
+    error (_("unimplemented auto_language::printchar called"));
+  }
+
+  /* See language.h.  */
+
+  void printstr (struct ui_file *stream, struct type *elttype,
+		 const gdb_byte *string, unsigned int length,
+		 const char *encoding, int force_ellipses,
+		 const struct value_print_options *options) const override
+  {
+    error (_("unimplemented auto_language::printstr called"));
+  }
+
+  /* See language.h.  */
+
+  void print_typedef (struct type *type, struct symbol *new_symbol,
+		      struct ui_file *stream) const override
+  {
+    error (_("unimplemented auto_language::print_typedef called"));
+  }
+
+  /* See language.h.  */
+
+  bool is_string_type_p (struct type *type) const override
+  {
+    return default_is_string_type_p (type);
+  }
+};
+
+/* Single instance of the fake "auto" language.  */
+
+static auto_language auto_language_defn;
+
 
 /* Per-architecture language information.  */
 
@@ -957,12 +1049,12 @@ language_gdbarch_post_init (struct gdbar
   struct language_gdbarch *l;
 
   l = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct language_gdbarch);
-  for (const auto &lang : languages)
-    if (lang != NULL && lang->la_language_arch_info != NULL)
-      {
-	lang->la_language_arch_info (gdbarch,
-				     l->arch_info + lang->la_language);
-      }
+  for (const auto &lang : language_defn::languages)
+    {
+      gdb_assert (lang != nullptr);
+      lang->language_arch_info (gdbarch,
+				l->arch_info + lang->la_language);
+    }
 
   return l;
 }
@@ -994,7 +1086,7 @@ language_bool_type (const struct languag
 	{
 	  struct type *type = SYMBOL_TYPE (sym);
 
-	  if (type && TYPE_CODE (type) == TYPE_CODE_BOOL)
+	  if (type && type->code () == TYPE_CODE_BOOL)
 	    return type;
 	}
     }
@@ -1012,7 +1104,7 @@ language_lookup_primitive_type_1 (const
 
   for (p = lai->primitive_type_vector; (*p) != NULL; p++)
     {
-      if (strcmp (TYPE_NAME (*p), name) == 0)
+      if (strcmp ((*p)->name (), name) == 0)
 	return p;
     }
   return NULL;
@@ -1050,10 +1142,11 @@ language_alloc_type_symbol (enum languag
   gdbarch = TYPE_OWNER (type).gdbarch;
   symbol = new (gdbarch_obstack (gdbarch)) struct symbol ();
 
-  symbol->name = TYPE_NAME (type);
-  symbol->language = lang;
+  symbol->m_name = type->name ();
+  symbol->set_language (lang, nullptr);
   symbol->owner.arch = gdbarch;
   SYMBOL_OBJFILE_OWNED (symbol) = 0;
+  SYMBOL_SECTION (symbol) = 0;
   SYMBOL_TYPE (symbol) = type;
   SYMBOL_DOMAIN (symbol) = VAR_DOMAIN;
   SYMBOL_ACLASS_INDEX (symbol) = LOC_TYPEDEF;
@@ -1134,8 +1227,9 @@ language_lookup_primitive_type_as_symbol
 
 /* Initialize the language routines.  */
 
+void _initialize_language ();
 void
-_initialize_language (void)
+_initialize_language ()
 {
   static const char *const type_or_range_names[]
     = { "on", "off", "warn", "auto", NULL };
@@ -1148,15 +1242,15 @@ _initialize_language (void)
 
   /* GDB commands for language specific stuff.  */
 
-  add_prefix_cmd ("check", no_class, set_check,
-		  _("Set the status of the type/range checker."),
-		  &setchecklist, "set check ", 0, &setlist);
+  add_basic_prefix_cmd ("check", no_class,
+			_("Set the status of the type/range checker."),
+			&setchecklist, "set check ", 0, &setlist);
   add_alias_cmd ("c", "check", no_class, 1, &setlist);
   add_alias_cmd ("ch", "check", no_class, 1, &setlist);
 
-  add_prefix_cmd ("check", no_class, show_check,
-		  _("Show the status of the type/range checker."),
-		  &showchecklist, "show check ", 0, &showlist);
+  add_show_prefix_cmd ("check", no_class,
+		       _("Show the status of the type/range checker."),
+		       &showchecklist, "show check ", 0, &showlist);
   add_alias_cmd ("c", "check", no_class, 1, &showlist);
   add_alias_cmd ("ch", "check", no_class, 1, &showlist);
 
@@ -1177,6 +1271,11 @@ For Fortran the default is off; for othe
 			show_case_command,
 			&setlist, &showlist);
 
+  /* In order to call SET_LANGUAGE (below) we need to make sure that
+     CURRENT_LANGUAGE is not NULL.  So first set the language to unknown,
+     then we can change the language to 'auto'.  */
+  current_language = language_def (language_unknown);
+
   add_set_language_command ();
 
   language = "auto";
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/language.h ./gdb/language.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/language.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/language.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Source-language-related definitions for GDB.
 
-   Copyright (C) 1991-2020 Free Software Foundation, Inc.
+   Copyright (C) 1991-2021 Free Software Foundation, Inc.
 
    Contributed by the Department of Computer Science at the State University
    of New York at Buffalo.
@@ -128,9 +128,65 @@ struct language_arch_info
   struct type *bool_type_default;
 };
 
-/* Structure tying together assorted information about a language.  */
+/* In a language (particularly C++) a function argument of an aggregate
+   type (i.e.  class/struct/union) may be implicitly passed by reference
+   even though it is declared a call-by-value argument in the source.
+   The struct below puts together necessary information for GDB to be
+   able to detect and carry out pass-by-reference semantics for a
+   particular type.  This type is referred as T in the inlined comments
+   below.
+
+   The default values of the fields are chosen to give correct semantics
+   for primitive types and for simple aggregate types, such as
+
+   class T {
+     int x;
+   };  */
 
-struct language_defn
+struct language_pass_by_ref_info
+{
+  /* True if an argument of type T can be passed to a function by value
+     (i.e.  not through an implicit reference).  False, otherwise.  */
+  bool trivially_copyable = true;
+
+  /* True if a copy of a value of type T can be initialized by
+     memcpy'ing the value bit-by-bit.  False, otherwise.
+     E.g.  If T has a user-defined copy ctor, this should be false.  */
+  bool trivially_copy_constructible = true;
+
+  /* True if a value of type T can be destructed simply by reclaiming
+     the memory area occupied by the value.  False, otherwise.
+     E.g.  If T has a user-defined destructor, this should be false.  */
+  bool trivially_destructible = true;
+
+  /* True if it is allowed to create a copy of a value of type T.
+     False, otherwise.
+     E.g.  If T has a deleted copy ctor, this should be false.  */
+  bool copy_constructible = true;
+
+  /* True if a value of type T can be destructed.  False, otherwise.
+     E.g.  If T has a deleted destructor, this should be false.  */
+  bool destructible = true;
+};
+
+/* Splitting strings into words.  */
+extern const char *default_word_break_characters (void);
+
+/* Structure tying together assorted information about a language.
+
+   As we move over from the old structure based languages to a class
+   hierarchy of languages this structure will continue to contain a
+   mixture of both data and function pointers.
+
+   Once the class hierarchy of languages in place the first task is to
+   remove the function pointers from this structure and convert them into
+   member functions on the different language classes.
+
+   The current plan it to keep the constant data that describes a language
+   in this structure, and have each language pass in an instance of this
+   structure at construction time.  */
+
+struct language_data
   {
     /* Name of the language.  */
 
@@ -169,94 +225,6 @@ struct language_defn
 
     const struct exp_descriptor *la_exp_desc;
 
-    /* Parser function.  */
-
-    int (*la_parser) (struct parser_state *);
-
-    /* Given an expression *EXPP created by prefixifying the result of
-       la_parser, perform any remaining processing necessary to complete
-       its translation.  *EXPP may change; la_post_parser is responsible 
-       for releasing its previous contents, if necessary.  If 
-       VOID_CONTEXT_P, then no value is expected from the expression.
-       If COMPLETING is non-zero, then the expression has been parsed
-       for completion, not evaluation.  */
-
-    void (*la_post_parser) (expression_up *expp, int void_context_p,
-			    int completing, innermost_block_tracker *tracker);
-
-    void (*la_printchar) (int ch, struct type *chtype,
-			  struct ui_file * stream);
-
-    void (*la_printstr) (struct ui_file * stream, struct type *elttype,
-			 const gdb_byte *string, unsigned int length,
-			 const char *encoding, int force_ellipses,
-			 const struct value_print_options *);
-
-    void (*la_emitchar) (int ch, struct type *chtype,
-			 struct ui_file * stream, int quoter);
-
-    /* Print a type using syntax appropriate for this language.  */
-
-    void (*la_print_type) (struct type *, const char *, struct ui_file *, int,
-			   int, const struct type_print_options *);
-
-    /* Print a typedef using syntax appropriate for this language.
-       TYPE is the underlying type.  NEW_SYMBOL is the symbol naming
-       the type.  STREAM is the output stream on which to print.  */
-
-    void (*la_print_typedef) (struct type *type, struct symbol *new_symbol,
-			      struct ui_file *stream);
-
-    /* Print a value using syntax appropriate for this language.
-       
-       TYPE is the type of the sub-object to be printed.
-
-       EMBEDDED_OFFSET is the offset into the outermost object of the
-       sub-object represented by TYPE.  This is the object which this
-       call should print.  Note that the enclosing type is not
-       available.
-
-       ADDRESS is the address in the inferior of the enclosing object.
-
-       STREAM is the stream on which the value is to be printed.
-
-       RECURSE is the recursion depth.  It is zero-based.
-
-       OPTIONS are the formatting options to be used when
-       printing.  */
-
-    void (*la_val_print) (struct type *type,
-			  int embedded_offset, CORE_ADDR address,
-			  struct ui_file *stream, int recurse,
-			  struct value *val,
-			  const struct value_print_options *options);
-
-    /* Print a top-level value using syntax appropriate for this language.  */
-
-    void (*la_value_print) (struct value *, struct ui_file *,
-			    const struct value_print_options *);
-
-    /* Given a symbol VAR, the corresponding block VAR_BLOCK (if any) and a
-       stack frame id FRAME, read the value of the variable and return (pointer
-       to a) struct value containing the value.
-
-       VAR_BLOCK is needed if there's a possibility for VAR to be outside
-       FRAME.  This is what happens if FRAME correspond to a nested function
-       and VAR is defined in the outer function.  If callers know that VAR is
-       located in FRAME or is global/static, NULL can be passed as VAR_BLOCK.
-
-       Throw an error if the variable cannot be found.  */
-
-    struct value *(*la_read_var_value) (struct symbol *var,
-					const struct block *var_block,
-					struct frame_info *frame);
-
-    /* PC is possibly an unknown languages trampoline.
-       If that PC falls in a trampoline belonging to this language,
-       return the address of the first pc in the real function, or 0
-       if it isn't a language tramp for this language.  */
-    CORE_ADDR (*skip_trampoline) (struct frame_info *, CORE_ADDR);
-
     /* Now come some hooks for lookup_symbol.  */
 
     /* If this is non-NULL, specifies the name that of the implicit
@@ -284,41 +252,6 @@ struct language_defn
 
     const bool la_store_sym_names_in_linkage_form_p;
 
-    /* This is a function that lookup_symbol will call when it gets to
-       the part of symbol lookup where C looks up static and global
-       variables.  */
-
-    struct block_symbol (*la_lookup_symbol_nonlocal)
-      (const struct language_defn *,
-       const char *,
-       const struct block *,
-       const domain_enum);
-
-    /* Find the definition of the type with the given name.  */
-    struct type *(*la_lookup_transparent_type) (const char *);
-
-    /* Return demangled language symbol, or NULL.  */
-    char *(*la_demangle) (const char *mangled, int options);
-
-    /* Demangle a symbol according to this language's rules.  Unlike
-       la_demangle, this does not take any options.
-
-       *DEMANGLED will be set by this function.
-       
-       If this function returns 0, then *DEMANGLED must always be set
-       to NULL.
-
-       If this function returns 1, the implementation may set this to
-       a xmalloc'd string holding the demangled form.  However, it is
-       not required to.  The string, if any, is owned by the caller.
-
-       The resulting string should be of the form that will be
-       installed into a symbol.  */
-    int (*la_sniff_from_mangled_name) (const char *mangled, char **demangled);
-
-    /* Return class name of a mangled method name or NULL.  */
-    char *(*la_class_name_from_physname) (const char *physname);
-
     /* Table for printing expressions.  */
 
     const struct op_print *la_op_print_tab;
@@ -331,119 +264,303 @@ struct language_defn
     /* Index to use for extracting the first element of a string.  */
     char string_lower_bound;
 
-    /* The list of characters forming word boundaries.  */
-    const char *(*la_word_break_characters) (void);
-
-    /* Add to the completion tracker all symbols which are possible
-       completions for TEXT.  WORD is the entire command on which the
-       completion is being made.  If CODE is TYPE_CODE_UNDEF, then all
-       symbols should be examined; otherwise, only STRUCT_DOMAIN
-       symbols whose type has a code of CODE should be matched.  */
-    void (*la_collect_symbol_completion_matches)
-      (completion_tracker &tracker,
-       complete_symbol_mode mode,
-       symbol_name_match_type match_type,
-       const char *text,
-       const char *word,
-       enum type_code code);
-
-    /* The per-architecture (OS/ABI) language information.  */
-    void (*la_language_arch_info) (struct gdbarch *,
-				   struct language_arch_info *);
-
-    /* Print the index of an element of an array.  */
-    void (*la_print_array_index) (struct value *index_value,
-                                  struct ui_file *stream,
-                                  const struct value_print_options *options);
-
-    /* Return non-zero if TYPE should be passed (and returned) by
-       reference at the language level.  */
-    int (*la_pass_by_reference) (struct type *type);
-
-    /* Return an expression that can be used for a location
-       watchpoint.  TYPE is a pointer type that points to the memory
-       to watch, and ADDR is the address of the watched memory.  */
-    gdb::unique_xmalloc_ptr<char> (*la_watch_location_expression)
-         (struct type *type, CORE_ADDR addr);
-
-    /* Return a pointer to the function that should be used to match a
-       symbol name against LOOKUP_NAME, according to this language's
-       rules.  The matching algorithm depends on LOOKUP_NAME.  For
-       example, on Ada, the matching algorithm depends on the symbol
-       name (wild/full/verbatim matching), and on whether we're doing
-       a normal lookup or a completion match lookup.
-
-       This field may be NULL, in which case
-       default_symbol_name_matcher is used to perform the
-       matching.  */
-    symbol_name_matcher_ftype *(*la_get_symbol_name_matcher)
-      (const lookup_name_info &);
-
-    /* Find all symbols in the current program space matching NAME in
-       DOMAIN, according to this language's rules.
-
-       The search is done in BLOCK only.
-       The caller is responsible for iterating up through superblocks
-       if desired.
-
-       For each one, call CALLBACK with the symbol.  If CALLBACK
-       returns false, the iteration ends at that point.
-
-       This field may not be NULL.  If the language does not need any
-       special processing here, 'iterate_over_symbols' should be
-       used as the definition.  */
-    bool (*la_iterate_over_symbols)
-      (const struct block *block, const lookup_name_info &name,
-       domain_enum domain,
-       gdb::function_view<symbol_found_callback_ftype> callback);
-
-    /* Hash the given symbol search name.  Use
-       default_search_name_hash if no special treatment is
-       required.  */
-    unsigned int (*la_search_name_hash) (const char *name);
-
     /* Various operations on varobj.  */
     const struct lang_varobj_ops *la_varobj_ops;
 
-    /* If this language allows compilation from the gdb command line,
-       this method should be non-NULL.  When called it should return
-       an instance of struct gcc_context appropriate to the language.
-       When defined this method must never return NULL; instead it
-       should throw an exception on failure.  The returned compiler
-       instance is owned by its caller and must be deallocated by
-       calling its 'destroy' method.  */
-
-    compile_instance *(*la_get_compile_instance) (void);
-
-    /* This method must be defined if 'la_get_gcc_context' is defined.
-       If 'la_get_gcc_context' is not defined, then this method is
-       ignored.
-
-       This takes the user-supplied text and returns a new bit of code
-       to compile.
-
-       INST is the compiler instance being used.
-       INPUT is the user's input text.
-       GDBARCH is the architecture to use.
-       EXPR_BLOCK is the block in which the expression is being
-       parsed.
-       EXPR_PC is the PC at which the expression is being parsed.  */
+    /* This string is used by the 'set print max-depth' setting.  When GDB
+       replaces a struct or union (during value printing) that is "too
+       deep" this string is displayed instead.  */
+    const char *la_struct_too_deep_ellipsis;
+
+  };
+
+/* Base class from which all other language classes derive.  */
+
+struct language_defn : language_data
+{
+  language_defn (enum language lang, const language_data &init_data)
+    : language_data (init_data)
+  {
+    /* We should only ever create one instance of each language.  */
+    gdb_assert (languages[lang] == nullptr);
+    languages[lang] = this;
+  }
+
+  /* Print the index of an element of an array.  This default
+     implementation prints using C99 syntax.  */
+
+  virtual void print_array_index (struct type *index_type,
+				  LONGEST index_value,
+				  struct ui_file *stream,
+				  const value_print_options *options) const;
+
+  /* Given a symbol VAR, the corresponding block VAR_BLOCK (if any) and a
+     stack frame id FRAME, read the value of the variable and return (pointer
+     to a) struct value containing the value.
+
+     VAR_BLOCK is needed if there's a possibility for VAR to be outside
+     FRAME.  This is what happens if FRAME correspond to a nested function
+     and VAR is defined in the outer function.  If callers know that VAR is
+     located in FRAME or is global/static, NULL can be passed as VAR_BLOCK.
+
+     Throw an error if the variable cannot be found.  */
+
+  virtual struct value *read_var_value (struct symbol *var,
+					const struct block *var_block,
+					struct frame_info *frame) const;
+
+  /* Return information about whether TYPE should be passed
+     (and returned) by reference at the language level.  The default
+     implementation returns a LANGUAGE_PASS_BY_REF_INFO initialised in its
+     default state.  */
+
+  virtual struct language_pass_by_ref_info pass_by_reference_info
+	(struct type *type) const
+  {
+    return {};
+  }
+
+  /* The per-architecture (OS/ABI) language information.  */
+
+  virtual void language_arch_info (struct gdbarch *,
+				   struct language_arch_info *) const = 0;
+
+  /* Find the definition of the type with the given name.  */
+
+  virtual struct type *lookup_transparent_type (const char *name) const
+  {
+    return basic_lookup_transparent_type (name);
+  }
 
-    std::string (*la_compute_program) (compile_instance *inst,
+  /* Find all symbols in the current program space matching NAME in
+     DOMAIN, according to this language's rules.
+
+     The search is done in BLOCK only.
+     The caller is responsible for iterating up through superblocks
+     if desired.
+
+     For each one, call CALLBACK with the symbol.  If CALLBACK
+     returns false, the iteration ends at that point.
+
+     This field may not be NULL.  If the language does not need any
+     special processing here, 'iterate_over_symbols' should be
+     used as the definition.  */
+  virtual bool iterate_over_symbols
+	(const struct block *block, const lookup_name_info &name,
+	 domain_enum domain,
+	 gdb::function_view<symbol_found_callback_ftype> callback) const
+  {
+    return ::iterate_over_symbols (block, name, domain, callback);
+  }
+
+  /* Return a pointer to the function that should be used to match a
+     symbol name against LOOKUP_NAME, according to this language's
+     rules.  The matching algorithm depends on LOOKUP_NAME.  For
+     example, on Ada, the matching algorithm depends on the symbol
+     name (wild/full/verbatim matching), and on whether we're doing
+     a normal lookup or a completion match lookup.
+
+     As Ada wants to capture symbol matching for all languages in some
+     cases, then this method is a non-overridable interface.  Languages
+     should override GET_SYMBOL_NAME_MATCHER_INNER if they need to.  */
+
+  symbol_name_matcher_ftype *get_symbol_name_matcher
+	(const lookup_name_info &lookup_name) const;
+
+  /* If this language allows compilation from the gdb command line, then
+     this method will return an instance of struct gcc_context appropriate
+     to the language.  If compilation for this language is generally
+     supported, but something goes wrong then an exception is thrown.  The
+     returned compiler instance is owned by its caller and must be
+     deallocated by the caller.  If compilation is not supported for this
+     language then this method returns NULL.  */
+
+  virtual compile_instance *get_compile_instance () const
+  {
+    return nullptr;
+  }
+
+  /* This method must be overridden if 'get_compile_instance' is
+     overridden.
+
+     This takes the user-supplied text and returns a new bit of code
+     to compile.
+
+     INST is the compiler instance being used.
+     INPUT is the user's input text.
+     GDBARCH is the architecture to use.
+     EXPR_BLOCK is the block in which the expression is being
+     parsed.
+     EXPR_PC is the PC at which the expression is being parsed.  */
+
+  virtual std::string compute_program (compile_instance *inst,
 				       const char *input,
 				       struct gdbarch *gdbarch,
 				       const struct block *expr_block,
-				       CORE_ADDR expr_pc);
+				       CORE_ADDR expr_pc) const
+  {
+    gdb_assert_not_reached ("language_defn::compute_program");
+  }
 
-    /* Return true if TYPE is a string type.  */
-    bool (*la_is_string_type_p) (struct type *type);
+  /* Hash the given symbol search name.  */
+  virtual unsigned int search_name_hash (const char *name) const;
 
-    /* This string is used by the 'set print max-depth' setting.  When GDB
-       replaces a struct or union (during value printing) that is "too
-       deep" this string is displayed instead.  */
-    const char *la_struct_too_deep_ellipsis;
+  /* Demangle a symbol according to this language's rules.  Unlike
+     la_demangle, this does not take any options.
 
-  };
+     *DEMANGLED will be set by this function.
+
+     If this function returns false, then *DEMANGLED must always be set
+     to NULL.
+
+     If this function returns true, the implementation may set this to
+     a xmalloc'd string holding the demangled form.  However, it is
+     not required to.  The string, if any, is owned by the caller.
+
+     The resulting string should be of the form that will be
+     installed into a symbol.  */
+  virtual bool sniff_from_mangled_name (const char *mangled,
+					char **demangled) const
+  {
+    *demangled = nullptr;
+    return false;
+  }
+
+  /* Return demangled language symbol version of MANGLED, or NULL.  */
+  virtual char *demangle (const char *mangled, int options) const
+  {
+    return nullptr;
+  }
+
+  /* Print a type using syntax appropriate for this language.  */
+
+  virtual void print_type (struct type *, const char *, struct ui_file *, int,
+			   int, const struct type_print_options *) const = 0;
+
+  /* PC is possibly an unknown languages trampoline.
+     If that PC falls in a trampoline belonging to this language, return
+     the address of the first pc in the real function, or 0 if it isn't a
+     language tramp for this language.  */
+  virtual CORE_ADDR skip_trampoline (struct frame_info *fi, CORE_ADDR pc) const
+  {
+    return (CORE_ADDR) 0;
+  }
+
+  /* Return class name of a mangled method name or NULL.  */
+  virtual char *class_name_from_physname (const char *physname) const
+  {
+    return nullptr;
+  }
+
+  /* The list of characters forming word boundaries.  */
+  virtual const char *word_break_characters (void) const
+  {
+    return default_word_break_characters ();
+  }
+
+  /* Add to the completion tracker all symbols which are possible
+     completions for TEXT.  WORD is the entire command on which the
+     completion is being made.  If CODE is TYPE_CODE_UNDEF, then all
+     symbols should be examined; otherwise, only STRUCT_DOMAIN symbols
+     whose type has a code of CODE should be matched.  */
+
+  virtual void collect_symbol_completion_matches
+	(completion_tracker &tracker,
+	 complete_symbol_mode mode,
+	 symbol_name_match_type name_match_type,
+	 const char *text,
+	 const char *word,
+	 enum type_code code) const
+  {
+    return default_collect_symbol_completion_matches_break_on
+      (tracker, mode, name_match_type, text, word, "", code);
+  }
+
+  /* This is a function that lookup_symbol will call when it gets to
+     the part of symbol lookup where C looks up static and global
+     variables.  This default implements the basic C lookup rules.  */
+
+  virtual struct block_symbol lookup_symbol_nonlocal
+	(const char *name,
+	 const struct block *block,
+	 const domain_enum domain) const;
+
+  /* Return an expression that can be used for a location
+     watchpoint.  TYPE is a pointer type that points to the memory
+     to watch, and ADDR is the address of the watched memory.  */
+  virtual gdb::unique_xmalloc_ptr<char> watch_location_expression
+	(struct type *type, CORE_ADDR addr) const;
+
+  /* List of all known languages.  */
+  static const struct language_defn *languages[nr_languages];
+
+  /* Print a top-level value using syntax appropriate for this language.  */
+  virtual void value_print (struct value *val, struct ui_file *stream,
+			    const struct value_print_options *options) const;
+
+  /* Print a value using syntax appropriate for this language.  RECURSE is
+     the recursion depth.  It is zero-based.  */
+  virtual void value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const;
+
+  /* Parser function.  */
+
+  virtual int parser (struct parser_state *ps) const;
+
+  /* Given an expression *EXPP created by prefixifying the result of
+     la_parser, perform any remaining processing necessary to complete its
+     translation.  *EXPP may change; la_post_parser is responsible for
+     releasing its previous contents, if necessary.  If VOID_CONTEXT_P,
+     then no value is expected from the expression.  If COMPLETING is
+     non-zero, then the expression has been parsed for completion, not
+     evaluation.  */
+
+  virtual void post_parser (expression_up *expp, int void_context_p,
+			    int completing,
+			    innermost_block_tracker *tracker) const
+  {
+    /* By default the post-parser does nothing.  */
+  }
+
+  /* Print the character CH (of type CHTYPE) on STREAM as part of the
+     contents of a literal string whose delimiter is QUOTER.  */
+
+  virtual void emitchar (int ch, struct type *chtype,
+			 struct ui_file *stream, int quoter) const;
+
+  virtual void printchar (int ch, struct type *chtype,
+			  struct ui_file * stream) const;
+
+/* Print the character string STRING, printing at most LENGTH characters.
+   Printing stops early if the number hits print_max; repeat counts
+   are printed as appropriate.  Print ellipses at the end if we
+   had to stop before printing LENGTH characters, or if FORCE_ELLIPSES.  */
+
+  virtual void printstr (struct ui_file *stream, struct type *elttype,
+			 const gdb_byte *string, unsigned int length,
+			 const char *encoding, int force_ellipses,
+			 const struct value_print_options *options) const;
+
+
+  /* Print a typedef using syntax appropriate for this language.
+     TYPE is the underlying type.  NEW_SYMBOL is the symbol naming
+     the type.  STREAM is the output stream on which to print.  */
+
+  virtual void print_typedef (struct type *type, struct symbol *new_symbol,
+			      struct ui_file *stream) const;
+
+  /* Return true if TYPE is a string type.  */
+  virtual bool is_string_type_p (struct type *type) const;
+
+protected:
+
+  /* This is the overridable part of the GET_SYMBOL_NAME_MATCHER method.
+     See that method for a description of the arguments.  */
+
+  virtual symbol_name_matcher_ftype *get_symbol_name_matcher_inner
+	  (const lookup_name_info &lookup_name) const;
+};
 
 /* Pointer to the language_defn for our current language.  This pointer
    always points to *some* valid struct; it can be used without checking
@@ -529,27 +646,28 @@ extern enum language set_language (enum
    with the "set language" command.  */
 
 #define LA_PRINT_TYPE(type,varstring,stream,show,level,flags)		\
-  (current_language->la_print_type(type,varstring,stream,show,level,flags))
+  (current_language->print_type(type,varstring,stream,show,level,flags))
 
 #define LA_PRINT_TYPEDEF(type,new_symbol,stream) \
-  (current_language->la_print_typedef(type,new_symbol,stream))
+  (current_language->print_typedef (type,new_symbol,stream))
 
 #define LA_VALUE_PRINT(val,stream,options) \
-  (current_language->la_value_print(val,stream,options))
+  (current_language->value_print (val,stream,options))
 
 #define LA_PRINT_CHAR(ch, type, stream) \
-  (current_language->la_printchar(ch, type, stream))
+  (current_language->printchar (ch, type, stream))
 #define LA_PRINT_STRING(stream, elttype, string, length, encoding, force_ellipses, options) \
-  (current_language->la_printstr(stream, elttype, string, length, \
-				 encoding, force_ellipses,options))
+  (current_language->printstr (stream, elttype, string, length, \
+			       encoding, force_ellipses,options))
 #define LA_EMIT_CHAR(ch, type, stream, quoter) \
-  (current_language->la_emitchar(ch, type, stream, quoter))
+  (current_language->emitchar (ch, type, stream, quoter))
 
-#define LA_PRINT_ARRAY_INDEX(index_value, stream, options) \
-  (current_language->la_print_array_index(index_value, stream, options))
+#define LA_PRINT_ARRAY_INDEX(index_type, index_value, stream, options)	\
+  (current_language->print_array_index(index_type, index_value, stream, \
+				       options))
 
 #define LA_ITERATE_OVER_SYMBOLS(BLOCK, NAME, DOMAIN, CALLBACK) \
-  (current_language->la_iterate_over_symbols (BLOCK, NAME, DOMAIN, CALLBACK))
+  (current_language->iterate_over_symbols (BLOCK, NAME, DOMAIN, CALLBACK))
 
 /* Test a character to decide whether it can be printed in literal form
    or needs to be printed in another representation.  For example,
@@ -566,10 +684,6 @@ extern enum language set_language (enum
 
 extern int pointer_type (struct type *);
 
-/* Return true if TYPE is a string type, otherwise return false.  This
-   default implementation only detects TYPE_CODE_STRING.  */
-extern bool default_is_string_type_p (struct type *type);
-
 /* Error messages */
 
 extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
@@ -594,58 +708,15 @@ extern CORE_ADDR skip_language_trampolin
 extern char *language_demangle (const struct language_defn *current_language, 
 				const char *mangled, int options);
 
-/* A wrapper for la_sniff_from_mangled_name.  The arguments and result
-   are as for the method.  */
-
-extern int language_sniff_from_mangled_name (const struct language_defn *lang,
-					     const char *mangled,
-					     char **demangled);
-
-/* Return class name from physname, or NULL.  */
-extern char *language_class_name_from_physname (const struct language_defn *,
-					        const char *physname);
-
-/* Splitting strings into words.  */
-extern const char *default_word_break_characters (void);
-
-/* Print the index of an array element using the C99 syntax.  */
-extern void default_print_array_index (struct value *index_value,
-                                       struct ui_file *stream,
-				       const struct value_print_options *options);
-
-/* Return non-zero if TYPE should be passed (and returned) by
-   reference at the language level.  */
-int language_pass_by_reference (struct type *type);
-
-/* Return zero; by default, types are passed by value at the language
-   level.  The target ABI may pass or return some structs by reference
-   independent of this.  */
-int default_pass_by_reference (struct type *type);
-
-/* The default implementation of la_print_typedef.  */
-void default_print_typedef (struct type *type, struct symbol *new_symbol,
-			    struct ui_file *stream);
-
-/* Default name hashing function.  */
-
-/* Produce an unsigned hash value from SEARCH_NAME that is consistent
-   with strcmp_iw, strcmp, and, at least on Ada symbols, wild_match.
-   That is, two identifiers equivalent according to any of those three
-   comparison operators hash to the same value.  */
-extern unsigned int default_search_name_hash (const char *search_name);
+/* Return information about whether TYPE should be passed
+   (and returned) by reference at the language level.  */
+struct language_pass_by_ref_info language_pass_by_reference (struct type *type);
 
 void c_get_string (struct value *value,
 		   gdb::unique_xmalloc_ptr<gdb_byte> *buffer,
 		   int *length, struct type **char_type,
 		   const char **charset);
 
-/* The default implementation of la_symbol_name_matcher.  Matches with
-   strncmp_iw.  */
-extern bool default_symbol_name_matcher
-  (const char *symbol_search_name,
-   const lookup_name_info &lookup_name,
-   completion_match_result *comp_match_res);
-
 /* Get LANG's symbol_name_matcher method for LOOKUP_NAME.  Returns
    default_symbol_name_matcher if not set.  LANG is used as a hint;
    the function may ignore it depending on the current language and
@@ -654,25 +725,6 @@ extern bool default_symbol_name_matcher
 symbol_name_matcher_ftype *get_symbol_name_matcher
   (const language_defn *lang, const lookup_name_info &lookup_name);
 
-/* The languages supported by GDB.  */
-
-extern const struct language_defn auto_language_defn;
-extern const struct language_defn unknown_language_defn;
-extern const struct language_defn minimal_language_defn;
-
-extern const struct language_defn ada_language_defn;
-extern const struct language_defn asm_language_defn;
-extern const struct language_defn c_language_defn;
-extern const struct language_defn cplus_language_defn;
-extern const struct language_defn d_language_defn;
-extern const struct language_defn f_language_defn;
-extern const struct language_defn go_language_defn;
-extern const struct language_defn m2_language_defn;
-extern const struct language_defn objc_language_defn;
-extern const struct language_defn opencl_language_defn;
-extern const struct language_defn pascal_language_defn;
-extern const struct language_defn rust_language_defn;
-
 /* Save the current language and restore it upon destruction.  */
 
 class scoped_restore_current_language
@@ -715,7 +767,7 @@ public:
       {
 	m_lang = current_language->la_language;
 	m_switched = true;
-	set_language (SYMBOL_LANGUAGE (sym));
+	set_language (sym->language ());
       }
     else
       {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/libiberty.m4 ./gdb/libiberty.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/libiberty.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/libiberty.m4	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 dnl Bits libiberty clients must do on their autoconf step.
 dnl
-dnl Copyright (C) 2012-2020 Free Software Foundation, Inc.
+dnl Copyright (C) 2012-2021 Free Software Foundation, Inc.
 dnl
 dnl This file is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linespec.c ./gdb/linespec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linespec.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linespec.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Parser for linespec for the GNU debugger, GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1133,58 +1133,56 @@ iterate_over_all_matching_symtabs
    struct program_space *search_pspace, bool include_inline,
    gdb::function_view<symbol_found_callback_ftype> callback)
 {
-  struct program_space *pspace;
-
-  ALL_PSPACES (pspace)
-  {
-    if (search_pspace != NULL && search_pspace != pspace)
-      continue;
-    if (pspace->executing_startup)
-      continue;
+  for (struct program_space *pspace : program_spaces)
+    {
+      if (search_pspace != NULL && search_pspace != pspace)
+	continue;
+      if (pspace->executing_startup)
+	continue;
 
-    set_current_program_space (pspace);
+      set_current_program_space (pspace);
 
-    for (objfile *objfile : current_program_space->objfiles ())
-      {
-	if (objfile->sf)
-	  objfile->sf->qf->expand_symtabs_matching (objfile,
-						    NULL,
-						    lookup_name,
-						    NULL, NULL,
-						    search_domain);
+      for (objfile *objfile : current_program_space->objfiles ())
+	{
+	  if (objfile->sf)
+	    objfile->sf->qf->expand_symtabs_matching (objfile,
+						      NULL,
+						      &lookup_name,
+						      NULL, NULL,
+						      search_domain);
 
-	for (compunit_symtab *cu : objfile->compunits ())
-	  {
-	    struct symtab *symtab = COMPUNIT_FILETABS (cu);
+	  for (compunit_symtab *cu : objfile->compunits ())
+	    {
+	      struct symtab *symtab = COMPUNIT_FILETABS (cu);
 
-	    iterate_over_file_blocks (symtab, lookup_name, name_domain,
-				      callback);
+	      iterate_over_file_blocks (symtab, lookup_name, name_domain,
+					callback);
 
-	    if (include_inline)
-	      {
-		const struct block *block;
-		int i;
+	      if (include_inline)
+		{
+		  const struct block *block;
+		  int i;
 
-		for (i = FIRST_LOCAL_BLOCK;
-		     i < BLOCKVECTOR_NBLOCKS (SYMTAB_BLOCKVECTOR (symtab));
-		     i++)
-		  {
-		    block = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab), i);
-		    state->language->la_iterate_over_symbols
-		      (block, lookup_name, name_domain,
-		       [&] (block_symbol *bsym)
-		       {
-			 /* Restrict calls to CALLBACK to symbols
-			    representing inline symbols only.  */
-			 if (SYMBOL_INLINED (bsym->symbol))
-			   return callback (bsym);
-			 return true;
-		       });
-		  }
-	      }
-	  }
-      }
-  }
+		  for (i = FIRST_LOCAL_BLOCK;
+		       i < BLOCKVECTOR_NBLOCKS (SYMTAB_BLOCKVECTOR (symtab));
+		       i++)
+		    {
+		      block = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab), i);
+		      state->language->iterate_over_symbols
+			(block, lookup_name, name_domain,
+			 [&] (block_symbol *bsym)
+			 {
+			   /* Restrict calls to CALLBACK to symbols
+			      representing inline symbols only.  */
+			   if (SYMBOL_INLINED (bsym->symbol))
+			     return callback (bsym);
+			   return true;
+			 });
+		    }
+		}
+	    }
+	}
+    }
 }
 
 /* Returns the block to be used for symbol searches from
@@ -1224,7 +1222,7 @@ find_methods (struct type *t, enum langu
 	      std::vector<struct type *> *superclasses)
 {
   int ibase;
-  const char *class_name = TYPE_NAME (t);
+  const char *class_name = t->name ();
 
   /* Ignore this class if it doesn't have a name.  This is ugly, but
      unless we figure out how to get the physname without the name of
@@ -1234,7 +1232,7 @@ find_methods (struct type *t, enum langu
       int method_counter;
       lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
       symbol_name_matcher_ftype *symbol_name_compare
-	= get_symbol_name_matcher (language_def (t_lang), lookup_name);
+	= language_def (t_lang)->get_symbol_name_matcher (lookup_name);
 
       t = check_typedef (t);
 
@@ -2291,7 +2289,7 @@ convert_linespec_to_sals (struct linespe
 			  if (MSYMBOL_TYPE (elem.minsym) == mst_data_gnu_ifunc)
 			    {
 			      struct gdbarch *gdbarch
-				= get_objfile_arch (elem.objfile);
+				= elem.objfile->arch ();
 			      msym_addr
 				= (gdbarch_convert_from_func_ptr_addr
 				   (gdbarch,
@@ -3203,7 +3201,7 @@ event_location_to_sals (linespec_parser
 /* See linespec.h.  */
 
 void
-decode_line_full (const struct event_location *location, int flags,
+decode_line_full (struct event_location *location, int flags,
 		  struct program_space *search_pspace,
 		  struct symtab *default_symtab,
 		  int default_line, struct linespec_result *canonical,
@@ -3232,6 +3230,10 @@ decode_line_full (const struct event_loc
 								location);
   state = PARSER_STATE (&parser);
 
+  if (result.size () == 0)
+    throw_error (NOT_SUPPORTED_ERROR, _("Location %s not available"),
+		 event_location_to_string (location));
+
   gdb_assert (result.size () == 1 || canonical->pre_expanded);
   canonical->pre_expanded = 1;
 
@@ -3493,9 +3495,9 @@ decode_compound_collector::operator () (
 
   t = SYMBOL_TYPE (sym);
   t = check_typedef (t);
-  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
-      && TYPE_CODE (t) != TYPE_CODE_UNION
-      && TYPE_CODE (t) != TYPE_CODE_NAMESPACE)
+  if (t->code () != TYPE_CODE_STRUCT
+      && t->code () != TYPE_CODE_UNION
+      && t->code () != TYPE_CODE_NAMESPACE)
     return true; /* Continue iterating.  */
 
   slot = htab_find_slot (m_unique_syms, sym, INSERT);
@@ -3670,12 +3672,12 @@ find_method (struct linespec_state *self
      because we collect data across the program space before deciding
      what to do.  */
   last_result_len = 0;
-  unsigned int ix = 0;
   for (const auto &elt : *sym_classes)
     {
       struct type *t;
       struct program_space *pspace;
       struct symbol *sym = elt.symbol;
+      unsigned int ix = &elt - &*sym_classes->begin ();
 
       /* Program spaces that are executing startup should have
 	 been filtered out earlier.  */
@@ -3683,7 +3685,7 @@ find_method (struct linespec_state *self
       gdb_assert (!pspace->executing_startup);
       set_current_program_space (pspace);
       t = check_typedef (SYMBOL_TYPE (sym));
-      find_methods (t, SYMBOL_LANGUAGE (sym),
+      find_methods (t, sym->language (),
 		    method_name, &result_names, &superclass_vec);
 
       /* Handle all items from a single program space at once; and be
@@ -3696,7 +3698,7 @@ find_method (struct linespec_state *self
 	     this program space, consider superclasses.  */
 	  if (result_names.size () == last_result_len)
 	    find_superclass_methods (std::move (superclass_vec), method_name,
-				     SYMBOL_LANGUAGE (sym), &result_names);
+				     sym->language (), &result_names);
 
 	  /* We have a list of candidate symbol names, so now we
 	     iterate over the symbol tables looking for all
@@ -3706,7 +3708,6 @@ find_method (struct linespec_state *self
 
 	  superclass_vec.clear ();
 	  last_result_len = result_names.size ();
-	  ++ix;
 	}
     }
 
@@ -3787,9 +3788,7 @@ collect_symtabs_from_filename (const cha
   /* Find that file's data.  */
   if (search_pspace == NULL)
     {
-      struct program_space *pspace;
-
-      ALL_PSPACES (pspace)
+      for (struct program_space *pspace : program_spaces)
         {
 	  if (pspace->executing_startup)
 	    continue;
@@ -3899,9 +3898,10 @@ find_linespec_symbols (struct linespec_s
 		       std::vector <block_symbol> *symbols,
 		       std::vector<bound_minimal_symbol> *minsyms)
 {
-  std::string canon = cp_canonicalize_string_no_typedefs (lookup_name);
-  if (!canon.empty ())
-    lookup_name = canon.c_str ();
+  gdb::unique_xmalloc_ptr<char> canon
+    = cp_canonicalize_string_no_typedefs (lookup_name);
+  if (canon != nullptr)
+    lookup_name = canon.get ();
 
   /* It's important to not call expand_symtabs_matching unnecessarily
      as it can really slow things down (by unnecessarily expanding
@@ -3998,7 +3998,7 @@ find_label_symbols_in_block (const struc
 
       ALL_BLOCK_SYMBOLS (block, iter, sym)
 	{
-	  if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
+	  if (symbol_matches_domain (sym->language (),
 				     SYMBOL_DOMAIN (sym), LABEL_DOMAIN)
 	      && cmp (sym->search_name (), name, name_len) == 0)
 	    {
@@ -4168,7 +4168,7 @@ linespec_parse_variable (struct linespec
       sscanf ((variable[1] == '$') ? variable + 2 : variable + 1, "%d", &index);
       val_history
 	= access_value_history ((variable[1] == '$') ? -index : index);
-      if (TYPE_CODE (value_type (val_history)) != TYPE_CODE_INT)
+      if (value_type (val_history)->code () != TYPE_CODE_INT)
 	error (_("History values used in line "
 		 "specs must have integer values."));
       offset.offset = value_as_long (val_history);
@@ -4335,29 +4335,27 @@ search_minsyms_for_name (struct collect_
 
   if (symtab == NULL)
     {
-      struct program_space *pspace;
-
-      ALL_PSPACES (pspace)
-      {
-	if (search_pspace != NULL && search_pspace != pspace)
-	  continue;
-	if (pspace->executing_startup)
-	  continue;
+      for (struct program_space *pspace : program_spaces)
+	{
+	  if (search_pspace != NULL && search_pspace != pspace)
+	    continue;
+	  if (pspace->executing_startup)
+	    continue;
 
-	set_current_program_space (pspace);
+	  set_current_program_space (pspace);
 
-	for (objfile *objfile : current_program_space->objfiles ())
-	  {
-	    iterate_over_minimal_symbols (objfile, name,
-					  [&] (struct minimal_symbol *msym)
-					  {
-					    add_minsym (msym, objfile, nullptr,
-							info->state->list_mode,
-							&minsyms);
-					    return false;
-					  });
-	  }
-      }
+	  for (objfile *objfile : current_program_space->objfiles ())
+	    {
+	      iterate_over_minimal_symbols (objfile, name,
+					    [&] (struct minimal_symbol *msym)
+					    {
+					      add_minsym (msym, objfile, nullptr,
+							  info->state->list_mode,
+							  &minsyms);
+					      return false;
+					    });
+	    }
+	}
     }
   else
     {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linespec.h ./gdb/linespec.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linespec.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linespec.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header for GDB line completion.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 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
@@ -124,7 +124,7 @@ extern std::vector<symtab_and_line>
    strcmp sense) to FILTER will be returned; all others will be
    filtered out.  */
 
-extern void decode_line_full (const struct event_location *location, int flags,
+extern void decode_line_full (struct event_location *location, int flags,
 			      struct program_space *search_pspace,
 			      struct symtab *default_symtab, int default_line,
 			      struct linespec_result *canonical,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-fork.c ./gdb/linux-fork.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-fork.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-fork.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GNU/Linux native-dependent code for debugging multiple forks.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -61,8 +61,8 @@ struct fork_info
 
     if (savedregs)
       delete savedregs;
-    if (filepos)
-      xfree (filepos);
+
+    xfree (filepos);
   }
 
   ptid_t ptid = null_ptid;
@@ -110,8 +110,7 @@ find_last_fork (void)
 static bool
 one_fork_p ()
 {
-  return (!fork_list.empty ()
-	  && &fork_list.front () == &fork_list.back ());
+  return fork_list.size () == 1;
 }
 
 /* Add a new fork to the internal fork list.  */
@@ -215,7 +214,6 @@ call_lseek (int fd, off_t offset, int wh
 static void
 fork_load_infrun_state (struct fork_info *fp)
 {
-  extern void nullify_last_target_wait_ptid ();
   int i;
 
   linux_nat_switch_fork (fp->ptid);
@@ -520,7 +518,7 @@ Please switch to another checkpoint befo
      list, waitpid the ptid.
      If fi->parent_ptid is a part of lwp and it is stopped, waitpid the
      ptid.  */
-  thread_info *parent = find_thread_ptid (pptid);
+  thread_info *parent = find_thread_ptid (linux_target, pptid);
   if ((parent == NULL && find_fork_ptid (pptid))
       || (parent != NULL && parent->state == THREAD_STOPPED))
     {
@@ -665,7 +663,7 @@ checkpoint_command (const char *args, in
   if (!fork_fn)
     error (_("checkpoint: can't find fork function in inferior."));
 
-  gdbarch = get_objfile_arch (fork_objf);
+  gdbarch = fork_objf->arch ();
   ret = value_from_longest (builtin_type (gdbarch)->builtin_int, 0);
 
   /* Tell linux-nat.c that we're checkpointing this inferior.  */
@@ -680,7 +678,7 @@ checkpoint_command (const char *args, in
     error (_("checkpoint: call_function_by_hand returned null."));
 
   retpid = value_as_long (ret);
-  get_last_target_status (&last_target_ptid, &last_target_waitstatus);
+  get_last_target_status (nullptr, &last_target_ptid, &last_target_waitstatus);
 
   fp = find_fork_pid (retpid);
 
@@ -752,8 +750,9 @@ restart_command (const char *args, int f
   linux_fork_context (fp, from_tty);
 }
 
+void _initialize_linux_fork ();
 void
-_initialize_linux_fork (void)
+_initialize_linux_fork ()
 {
   /* Checkpoint command: create a fork of the inferior process
      and set it aside for later debugging.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-fork.h ./gdb/linux-fork.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-fork.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-fork.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GNU/Linux native-dependent code for debugging multiple forks.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-nat.c ./gdb/linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GNU/Linux native-dependent code common to multiple platforms.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -47,7 +47,7 @@
 #include <sys/stat.h>		/* for struct stat */
 #include <fcntl.h>		/* for O_RDONLY */
 #include "inf-loop.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "event-top.h"
 #include <pwd.h>
 #include <sys/types.h>
@@ -68,6 +68,7 @@
 #include "gdbsupport/fileio.h"
 #include "gdbsupport/scope-exit.h"
 #include "gdbsupport/gdb-sigmask.h"
+#include "debug.h"
 
 /* This comment documents high-level logic of this file.
 
@@ -198,13 +199,30 @@ show_debug_linux_nat (struct ui_file *fi
 		    value);
 }
 
+/* Print a debug statement.  Should be used through linux_nat_debug_printf.  */
+
+static void ATTRIBUTE_PRINTF (2, 3)
+linux_nat_debug_printf_1 (const char *func_name, const char *fmt, ...)
+{
+  va_list ap;
+  va_start (ap, fmt);
+  debug_prefixed_vprintf ("linux-nat", func_name, fmt, ap);
+  va_end (ap);
+}
+
+#define linux_nat_debug_printf(fmt, ...) \
+  do { \
+    if (debug_linux_nat) \
+      linux_nat_debug_printf_1 (__func__, fmt, ##__VA_ARGS__); \
+  } while (0)
+
 struct simple_pid_list
 {
   int pid;
   int status;
   struct simple_pid_list *next;
 };
-struct simple_pid_list *stopped_pids;
+static struct simple_pid_list *stopped_pids;
 
 /* Whether target_thread_events is in effect.  */
 static int report_thread_events;
@@ -440,8 +458,8 @@ typedef std::unique_ptr<struct lwp_info,
    ptid of the followed inferior.  At return, inferior_ptid will be
    unchanged.  */
 
-int
-linux_nat_target::follow_fork (int follow_child, int detach_fork)
+bool
+linux_nat_target::follow_fork (bool follow_child, bool detach_fork)
 {
   if (!follow_child)
     {
@@ -515,9 +533,12 @@ linux_nat_target::follow_fork (int follo
 	}
       else
 	{
-	  scoped_restore save_inferior_ptid
-	    = make_scoped_restore (&inferior_ptid);
-	  inferior_ptid = child_ptid;
+	  /* Switching inferior_ptid is not enough, because then
+	     inferior_thread () would crash by not finding the thread
+	     in the current inferior.  */
+	  scoped_restore_current_thread restore_current_thread;
+	  thread_info *child = find_thread_ptid (this, child_ptid);
+	  switch_to_thread (child);
 
 	  /* Let the thread_db layer learn about this new process.  */
 	  check_for_thread_db ();
@@ -532,10 +553,8 @@ linux_nat_target::follow_fork (int follo
 
 	  if (linux_supports_tracevforkdone ())
 	    {
-  	      if (debug_linux_nat)
-  		fprintf_unfiltered (gdb_stdlog,
-  				    "LCFF: waiting for VFORK_DONE on %d\n",
-  				    parent_pid);
+	      linux_nat_debug_printf ("waiting for VFORK_DONE on %d",
+				      parent_pid);
 	      parent_lp->stopped = 1;
 
 	      /* We'll handle the VFORK_DONE event like any other
@@ -574,10 +593,7 @@ linux_nat_target::follow_fork (int follo
 		 is only the single-step breakpoint at vfork's return
 		 point.  */
 
-  	      if (debug_linux_nat)
-  		fprintf_unfiltered (gdb_stdlog,
-				    "LCFF: no VFORK_DONE "
-				    "support, sleeping a bit\n");
+	      linux_nat_debug_printf ("no VFORK_DONE support, sleeping a bit");
 
 	      usleep (10000);
 
@@ -608,7 +624,7 @@ linux_nat_target::follow_fork (int follo
       check_for_thread_db ();
     }
 
-  return 0;
+  return false;
 }
 
 
@@ -989,7 +1005,7 @@ linux_nat_switch_fork (ptid_t new_ptid)
   /* This changes the thread's ptid while preserving the gdb thread
      num.  Also changes the inferior pid, while preserving the
      inferior num.  */
-  thread_change_ptid (inferior_ptid, new_ptid);
+  thread_change_ptid (linux_target, inferior_ptid, new_ptid);
 
   /* We've just told GDB core that the thread changed target id, but,
      in fact, it really is a different thread, with different register
@@ -1002,7 +1018,7 @@ linux_nat_switch_fork (ptid_t new_ptid)
 static void
 exit_lwp (struct lwp_info *lp)
 {
-  struct thread_info *th = find_thread_ptid (lp->ptid);
+  struct thread_info *th = find_thread_ptid (linux_target, lp->ptid);
 
   if (th)
     {
@@ -1027,9 +1043,7 @@ linux_nat_post_attach_wait (ptid_t ptid,
 
   if (linux_proc_pid_is_stopped (pid))
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LNPAW: Attaching to a stopped process\n");
+      linux_nat_debug_printf ("Attaching to a stopped process");
 
       /* The process is definitely stopped.  It is in a job control
 	 stop, unless the kernel predates the TASK_STOPPED /
@@ -1060,19 +1074,16 @@ linux_nat_post_attach_wait (ptid_t ptid,
   if (!WIFSTOPPED (status))
     {
       /* The pid we tried to attach has apparently just exited.  */
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog, "LNPAW: Failed to stop %d: %s",
-			    pid, status_to_str (status));
+      linux_nat_debug_printf ("Failed to stop %d: %s", pid,
+			      status_to_str (status));
       return status;
     }
 
   if (WSTOPSIG (status) != SIGSTOP)
     {
       *signalled = 1;
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LNPAW: Received %s after attaching\n",
-			    status_to_str (status));
+      linux_nat_debug_printf ("Received %s after attaching",
+			      status_to_str (status));
     }
 
   return status;
@@ -1122,13 +1133,10 @@ attach_proc_task_lwp_callback (ptid_t pt
 	  if (err == ESRCH
 	      || (err == EPERM && linux_proc_pid_is_gone (lwpid)))
 	    {
-	      if (debug_linux_nat)
-		{
-		  fprintf_unfiltered (gdb_stdlog,
-				      "Cannot attach to lwp %d: "
-				      "thread is gone (%d: %s)\n",
-				      lwpid, err, safe_strerror (err));
-		}
+	      linux_nat_debug_printf
+		("Cannot attach to lwp %d: thread is gone (%d: %s)",
+		 lwpid, err, safe_strerror (err));
+
 	    }
 	  else
 	    {
@@ -1141,10 +1149,8 @@ attach_proc_task_lwp_callback (ptid_t pt
 	}
       else
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"PTRACE_ATTACH %s, 0, 0 (OK)\n",
-				target_pid_to_str (ptid).c_str ());
+	  linux_nat_debug_printf ("PTRACE_ATTACH %s, 0, 0 (OK)",
+				  target_pid_to_str (ptid).c_str ());
 
 	  lp = add_lwp (ptid);
 
@@ -1162,9 +1168,9 @@ attach_proc_task_lwp_callback (ptid_t pt
 	  /* Also add the LWP to gdb's thread list, in case a
 	     matching libthread_db is not found (or the process uses
 	     raw clone).  */
-	  add_thread (lp->ptid);
-	  set_running (lp->ptid, 1);
-	  set_executing (lp->ptid, 1);
+	  add_thread (linux_target, lp->ptid);
+	  set_running (linux_target, lp->ptid, true);
+	  set_executing (linux_target, lp->ptid, true);
 	}
 
       return 1;
@@ -1203,7 +1209,7 @@ linux_nat_target::attach (const char *ar
   ptid = ptid_t (inferior_ptid.pid (),
 		 inferior_ptid.pid (),
 		 0);
-  thread_change_ptid (inferior_ptid, ptid);
+  thread_change_ptid (linux_target, inferior_ptid, ptid);
 
   /* Add the initial process as the first LWP to the list.  */
   lp = add_initial_lwp (ptid);
@@ -1246,10 +1252,8 @@ linux_nat_target::attach (const char *ar
 
   /* Save the wait status to report later.  */
   lp->resumed = 1;
-  if (debug_linux_nat)
-    fprintf_unfiltered (gdb_stdlog,
-			"LNA: waitpid %ld, saving status %s\n",
-			(long) lp->ptid.pid (), status_to_str (status));
+  linux_nat_debug_printf ("waitpid %ld, saving status %s",
+			  (long) lp->ptid.pid (), status_to_str (status));
 
   lp->status = status;
 
@@ -1304,7 +1308,7 @@ get_detach_signal (struct lwp_info *lp)
     signo = gdb_signal_from_host (WSTOPSIG (lp->status));
   else
     {
-      struct thread_info *tp = find_thread_ptid (lp->ptid);
+      struct thread_info *tp = find_thread_ptid (linux_target, lp->ptid);
 
       if (target_is_non_stop_p () && !tp->executing)
 	{
@@ -1315,39 +1319,33 @@ get_detach_signal (struct lwp_info *lp)
 	}
       else if (!target_is_non_stop_p ())
 	{
-	  struct target_waitstatus last;
 	  ptid_t last_ptid;
+	  process_stratum_target *last_target;
 
-	  get_last_target_status (&last_ptid, &last);
+	  get_last_target_status (&last_target, &last_ptid, nullptr);
 
-	  if (lp->ptid.lwp () == last_ptid.lwp ())
+	  if (last_target == linux_target
+	      && lp->ptid.lwp () == last_ptid.lwp ())
 	    signo = tp->suspend.stop_signal;
 	}
     }
 
   if (signo == GDB_SIGNAL_0)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "GPT: lwp %s has no pending signal\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("lwp %s has no pending signal",
+			      target_pid_to_str (lp->ptid).c_str ());
     }
   else if (!signal_pass_state (signo))
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "GPT: lwp %s had signal %s, "
-			    "but it is in no pass state\n",
-			    target_pid_to_str (lp->ptid).c_str (),
-			    gdb_signal_to_string (signo));
+      linux_nat_debug_printf
+	("lwp %s had signal %s but it is in no pass state",
+	 target_pid_to_str (lp->ptid).c_str (), gdb_signal_to_string (signo));
     }
   else
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "GPT: lwp %s has pending signal %s\n",
-			    target_pid_to_str (lp->ptid).c_str (),
-			    gdb_signal_to_string (signo));
+      linux_nat_debug_printf ("lwp %s has pending signal %s",
+			      target_pid_to_str (lp->ptid).c_str (),
+			      gdb_signal_to_string (signo));
 
       return gdb_signal_to_host (signo);
     }
@@ -1367,18 +1365,16 @@ detach_one_lwp (struct lwp_info *lp, int
 
   gdb_assert (lp->status == 0 || WIFSTOPPED (lp->status));
 
-  if (debug_linux_nat && lp->status)
-    fprintf_unfiltered (gdb_stdlog, "DC:  Pending %s for %s on detach.\n",
-			strsignal (WSTOPSIG (lp->status)),
-			target_pid_to_str (lp->ptid).c_str ());
+  if (lp->status != 0)
+    linux_nat_debug_printf ("Pending %s for %s on detach.",
+			    strsignal (WSTOPSIG (lp->status)),
+			    target_pid_to_str (lp->ptid).c_str ());
 
   /* If there is a pending SIGSTOP, get rid of it.  */
   if (lp->signalled)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "DC: Sending SIGCONT to %s\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("Sending SIGCONT to %s",
+			      target_pid_to_str (lp->ptid).c_str ());
 
       kill_lwp (lwpid, SIGCONT);
       lp->signalled = 0;
@@ -1437,13 +1433,10 @@ detach_one_lwp (struct lwp_info *lp, int
 		 safe_strerror (save_errno));
 	}
     }
-  else if (debug_linux_nat)
-    {
-      fprintf_unfiltered (gdb_stdlog,
-			  "PTRACE_DETACH (%s, %s, 0) (OK)\n",
-			  target_pid_to_str (lp->ptid).c_str (),
-			  strsignal (signo));
-    }
+  else
+    linux_nat_debug_printf ("PTRACE_DETACH (%s, %s, 0) (OK)",
+			    target_pid_to_str (lp->ptid).c_str (),
+			    strsignal (signo));
 
   delete_lwp (lp->ptid);
 }
@@ -1517,7 +1510,7 @@ linux_resume_one_lwp_throw (struct lwp_i
      handle the case of stepping a breakpoint instruction).  */
   if (step)
     {
-      struct regcache *regcache = get_thread_regcache (lp->ptid);
+      struct regcache *regcache = get_thread_regcache (linux_target, lp->ptid);
 
       lp->stop_pc = regcache_read_pc (regcache);
     }
@@ -1536,7 +1529,7 @@ linux_resume_one_lwp_throw (struct lwp_i
   lp->stopped = 0;
   lp->core = -1;
   lp->stop_reason = TARGET_STOPPED_BY_NO_REASON;
-  registers_changed_ptid (lp->ptid);
+  registers_changed_ptid (linux_target, lp->ptid);
 }
 
 /* Called when we try to resume a stopped LWP and that errors out.  If
@@ -1595,43 +1588,33 @@ resume_lwp (struct lwp_info *lp, int ste
 {
   if (lp->stopped)
     {
-      struct inferior *inf = find_inferior_ptid (lp->ptid);
+      struct inferior *inf = find_inferior_ptid (linux_target, lp->ptid);
 
       if (inf->vfork_child != NULL)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"RC: Not resuming %s (vfork parent)\n",
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf ("Not resuming %s (vfork parent)",
+				  target_pid_to_str (lp->ptid).c_str ());
 	}
       else if (!lwp_status_pending_p (lp))
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"RC: Resuming sibling %s, %s, %s\n",
-				target_pid_to_str (lp->ptid).c_str (),
-				(signo != GDB_SIGNAL_0
-				 ? strsignal (gdb_signal_to_host (signo))
-				 : "0"),
-				step ? "step" : "resume");
+	  linux_nat_debug_printf ("Resuming sibling %s, %s, %s",
+				  target_pid_to_str (lp->ptid).c_str (),
+				  (signo != GDB_SIGNAL_0
+				   ? strsignal (gdb_signal_to_host (signo))
+				   : "0"),
+				  step ? "step" : "resume");
 
 	  linux_resume_one_lwp (lp, step, signo);
 	}
       else
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"RC: Not resuming sibling %s (has pending)\n",
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf ("Not resuming sibling %s (has pending)",
+				  target_pid_to_str (lp->ptid).c_str ());
 	}
     }
   else
-    {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "RC: Not resuming sibling %s (not stopped)\n",
+    linux_nat_debug_printf ("Not resuming sibling %s (not stopped)",
 			    target_pid_to_str (lp->ptid).c_str ());
-    }
 }
 
 /* Callback for iterate_over_lwps.  If LWP is EXCEPT, do nothing.
@@ -1649,7 +1632,7 @@ linux_nat_resume_callback (struct lwp_in
     {
       struct thread_info *thread;
 
-      thread = find_thread_ptid (lp->ptid);
+      thread = find_thread_ptid (linux_target, lp->ptid);
       if (thread != NULL)
 	{
 	  signo = thread->suspend.stop_signal;
@@ -1683,20 +1666,19 @@ linux_nat_target::resume (ptid_t ptid, i
   struct lwp_info *lp;
   int resume_many;
 
-  if (debug_linux_nat)
-    fprintf_unfiltered (gdb_stdlog,
-			"LLR: Preparing to %s %s, %s, inferior_ptid %s\n",
-			step ? "step" : "resume",
-			target_pid_to_str (ptid).c_str (),
-			(signo != GDB_SIGNAL_0
-			 ? strsignal (gdb_signal_to_host (signo)) : "0"),
-			target_pid_to_str (inferior_ptid).c_str ());
+  linux_nat_debug_printf ("Preparing to %s %s, %s, inferior_ptid %s",
+			  step ? "step" : "resume",
+			  target_pid_to_str (ptid).c_str (),
+			  (signo != GDB_SIGNAL_0
+			   ? strsignal (gdb_signal_to_host (signo)) : "0"),
+			  target_pid_to_str (inferior_ptid).c_str ());
 
   /* A specific PTID means `step only this process id'.  */
   resume_many = (minus_one_ptid == ptid
 		 || ptid.is_pid ());
 
-  /* Mark the lwps we're resuming as resumed.  */
+  /* Mark the lwps we're resuming as resumed and update their
+     last_resume_kind to resume_continue.  */
   iterate_over_lwps (ptid, resume_set_callback);
 
   /* See if it's the current inferior that should be handled
@@ -1724,10 +1706,8 @@ linux_nat_target::resume (ptid_t ptid, i
 	  && WSTOPSIG (lp->status)
 	  && sigismember (&pass_mask, WSTOPSIG (lp->status)))
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"LLR: Not short circuiting for ignored "
-				"status 0x%x\n", lp->status);
+	  linux_nat_debug_printf
+	    ("Not short circuiting for ignored status 0x%x", lp->status);
 
 	  /* FIXME: What should we do if we are supposed to continue
 	     this thread with a signal?  */
@@ -1743,10 +1723,8 @@ linux_nat_target::resume (ptid_t ptid, i
 	 this thread with a signal?  */
       gdb_assert (signo == GDB_SIGNAL_0);
 
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LLR: Short circuiting for status 0x%x\n",
-			    lp->status);
+      linux_nat_debug_printf ("Short circuiting for status 0x%x",
+			      lp->status);
 
       if (target_can_async_p ())
 	{
@@ -1763,13 +1741,11 @@ linux_nat_target::resume (ptid_t ptid, i
 			       return linux_nat_resume_callback (info, lp);
 			     });
 
-  if (debug_linux_nat)
-    fprintf_unfiltered (gdb_stdlog,
-			"LLR: %s %s, %s (resume event thread)\n",
-			step ? "PTRACE_SINGLESTEP" : "PTRACE_CONT",
-			target_pid_to_str (lp->ptid).c_str (),
-			(signo != GDB_SIGNAL_0
-			 ? strsignal (gdb_signal_to_host (signo)) : "0"));
+  linux_nat_debug_printf ("%s %s, %s (resume event thread)",
+			  step ? "PTRACE_SINGLESTEP" : "PTRACE_CONT",
+			  target_pid_to_str (lp->ptid).c_str (),
+			  (signo != GDB_SIGNAL_0
+			   ? strsignal (gdb_signal_to_host (signo)) : "0"));
 
   linux_resume_one_lwp (lp, step, signo);
 
@@ -1806,7 +1782,7 @@ linux_handle_syscall_trap (struct lwp_in
 {
   struct target_waitstatus *ourstatus = &lp->waitstatus;
   struct gdbarch *gdbarch = target_thread_architecture (lp->ptid);
-  thread_info *thread = find_thread_ptid (lp->ptid);
+  thread_info *thread = find_thread_ptid (linux_target, lp->ptid);
   int syscall_number = (int) gdbarch_get_syscall_number (gdbarch, thread);
 
   if (stopping)
@@ -1831,13 +1807,9 @@ linux_handle_syscall_trap (struct lwp_in
 	 actually get to execute.  It seems it would be even more
 	 confusing to the user.  */
 
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LHST: ignoring syscall %d "
-			    "for LWP %ld (stopping threads), "
-			    "resuming with PTRACE_CONT for SIGSTOP\n",
-			    syscall_number,
-			    lp->ptid.lwp ());
+      linux_nat_debug_printf
+	("ignoring syscall %d for LWP %ld (stopping threads), resuming with "
+	 "PTRACE_CONT for SIGSTOP", syscall_number, lp->ptid.lwp ());
 
       lp->syscall_state = TARGET_WAITKIND_IGNORE;
       ptrace (PTRACE_CONT, lp->ptid.lwp (), 0, 0);
@@ -1862,26 +1834,18 @@ linux_handle_syscall_trap (struct lwp_in
 	  ourstatus->kind = lp->syscall_state;
 	  ourstatus->value.syscall_number = syscall_number;
 
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"LHST: stopping for %s of syscall %d"
-				" for LWP %ld\n",
-				lp->syscall_state
-				== TARGET_WAITKIND_SYSCALL_ENTRY
-				? "entry" : "return",
-				syscall_number,
-				lp->ptid.lwp ());
+	  linux_nat_debug_printf
+	    ("stopping for %s of syscall %d for LWP %ld",
+	     (lp->syscall_state == TARGET_WAITKIND_SYSCALL_ENTRY
+	      ? "entry" : "return"), syscall_number, lp->ptid.lwp ());
+
 	  return 0;
 	}
 
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LHST: ignoring %s of syscall %d "
-			    "for LWP %ld\n",
-			    lp->syscall_state == TARGET_WAITKIND_SYSCALL_ENTRY
-			    ? "entry" : "return",
-			    syscall_number,
-			    lp->ptid.lwp ());
+      linux_nat_debug_printf
+	("ignoring %s of syscall %d for LWP %ld",
+	 (lp->syscall_state == TARGET_WAITKIND_SYSCALL_ENTRY
+	  ? "entry" : "return"), syscall_number, lp->ptid.lwp ());
     }
   else
     {
@@ -1901,13 +1865,9 @@ linux_handle_syscall_trap (struct lwp_in
 
 	 The points above mean that the next resume, be it PT_STEP or
 	 PT_CONTINUE, can not trigger a syscall trace event.  */
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LHST: caught syscall event "
-			    "with no syscall catchpoints."
-			    " %d for LWP %ld, ignoring\n",
-			    syscall_number,
-			    lp->ptid.lwp ());
+      linux_nat_debug_printf
+	("caught syscall event with no syscall catchpoints. %d for LWP %ld, "
+	 "ignoring", syscall_number, lp->ptid.lwp ());
       lp->syscall_state = TARGET_WAITKIND_IGNORE;
     }
 
@@ -1973,6 +1933,10 @@ linux_handle_extended_wait (struct lwp_i
 	     inferior.  */
 	  linux_target->low_new_fork (lp, new_pid);
 	}
+      else if (event == PTRACE_EVENT_CLONE)
+	{
+	  linux_target->low_new_clone (lp, new_pid);
+	}
 
       if (event == PTRACE_EVENT_FORK
 	  && linux_fork_checkpointing_p (lp->ptid.pid ()))
@@ -2008,11 +1972,8 @@ linux_handle_extended_wait (struct lwp_i
 
 	  ourstatus->kind = TARGET_WAITKIND_IGNORE;
 
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"LHEW: Got clone event "
-				"from LWP %d, new child is LWP %ld\n",
-				pid, new_pid);
+	  linux_nat_debug_printf
+	    ("Got clone event from LWP %d, new child is LWP %ld", pid, new_pid);
 
 	  new_lp = add_lwp (ptid_t (lp->ptid.pid (), new_pid, 0));
 	  new_lp->stopped = 1;
@@ -2026,15 +1987,15 @@ linux_handle_extended_wait (struct lwp_i
 	      /* The process is not using thread_db.  Add the LWP to
 		 GDB's list.  */
 	      target_post_attach (new_lp->ptid.lwp ());
-	      add_thread (new_lp->ptid);
+	      add_thread (linux_target, new_lp->ptid);
 	    }
 
 	  /* Even if we're stopping the thread for some reason
 	     internal to this module, from the perspective of infrun
 	     and the user/frontend, this new thread is running until
 	     it next reports a stop.  */
-	  set_running (new_lp->ptid, 1);
-	  set_executing (new_lp->ptid, 1);
+	  set_running (linux_target, new_lp->ptid, true);
+	  set_executing (linux_target, new_lp->ptid, true);
 
 	  if (WSTOPSIG (status) != SIGSTOP)
 	    {
@@ -2051,12 +2012,9 @@ linux_handle_extended_wait (struct lwp_i
 	      gdb_assert (new_lp->status == 0);
 
 	      /* Save the wait status to report later.  */
-	      if (debug_linux_nat)
-		fprintf_unfiltered (gdb_stdlog,
-				    "LHEW: waitpid of new LWP %ld, "
-				    "saving status %s\n",
-				    (long) new_lp->ptid.lwp (),
-				    status_to_str (status));
+	      linux_nat_debug_printf
+		("waitpid of new LWP %ld, saving status %s",
+		 (long) new_lp->ptid.lwp (), status_to_str (status));
 	      new_lp->status = status;
 	    }
 	  else if (report_thread_events)
@@ -2073,10 +2031,7 @@ linux_handle_extended_wait (struct lwp_i
 
   if (event == PTRACE_EVENT_EXEC)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LHEW: Got exec event from LWP %ld\n",
-			    lp->ptid.lwp ());
+      linux_nat_debug_printf ("Got exec event from LWP %ld", lp->ptid.lwp ());
 
       ourstatus->kind = TARGET_WAITKIND_EXECD;
       ourstatus->value.execd_pathname
@@ -2093,21 +2048,17 @@ linux_handle_extended_wait (struct lwp_i
     {
       if (current_inferior ()->waiting_for_vfork_done)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"LHEW: Got expected PTRACE_EVENT_"
-				"VFORK_DONE from LWP %ld: stopping\n",
-				lp->ptid.lwp ());
+	  linux_nat_debug_printf
+	    ("Got expected PTRACE_EVENT_VFORK_DONE from LWP %ld: stopping",
+	     lp->ptid.lwp ());
 
 	  ourstatus->kind = TARGET_WAITKIND_VFORK_DONE;
 	  return 0;
 	}
 
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LHEW: Got PTRACE_EVENT_VFORK_DONE "
-			    "from LWP %ld: ignoring\n",
-			    lp->ptid.lwp ());
+      linux_nat_debug_printf
+	("Got PTRACE_EVENT_VFORK_DONE from LWP %ld: ignoring", lp->ptid.lwp ());
+
       return 1;
     }
 
@@ -2121,8 +2072,7 @@ linux_handle_extended_wait (struct lwp_i
 static void
 wait_for_signal ()
 {
-  if (debug_linux_nat)
-    fprintf_unfiltered (gdb_stdlog, "linux-nat: about to sigsuspend\n");
+  linux_nat_debug_printf ("about to sigsuspend");
   sigsuspend (&suspend_mask);
 
   /* If the quit flag is set, it means that the user pressed Ctrl-C
@@ -2166,9 +2116,8 @@ wait_lwp (struct lwp_info *lp)
 	     won't get an exit event.  See comments on exec events at
 	     the top of the file.  */
 	  thread_dead = 1;
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog, "WL: %s vanished.\n",
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf ("%s vanished.",
+				  target_pid_to_str (lp->ptid).c_str ());
 	}
       if (pid != 0)
 	break;
@@ -2191,10 +2140,8 @@ wait_lwp (struct lwp_info *lp)
 	  && linux_proc_pid_is_zombie (lp->ptid.lwp ()))
 	{
 	  thread_dead = 1;
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"WL: Thread group leader %s vanished.\n",
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf ("Thread group leader %s vanished.",
+				  target_pid_to_str (lp->ptid).c_str ());
 	  break;
 	}
 
@@ -2213,13 +2160,9 @@ wait_lwp (struct lwp_info *lp)
     {
       gdb_assert (pid == lp->ptid.lwp ());
 
-      if (debug_linux_nat)
-	{
-	  fprintf_unfiltered (gdb_stdlog,
-			      "WL: waitpid %s received %s\n",
+      linux_nat_debug_printf ("waitpid %s received %s",
 			      target_pid_to_str (lp->ptid).c_str (),
 			      status_to_str (status));
-	}
 
       /* Check if the thread has exited.  */
       if (WIFEXITED (status) || WIFSIGNALED (status))
@@ -2227,9 +2170,7 @@ wait_lwp (struct lwp_info *lp)
 	  if (report_thread_events
 	      || lp->ptid.pid () == lp->ptid.lwp ())
 	    {
-	      if (debug_linux_nat)
-		fprintf_unfiltered (gdb_stdlog, "WL: LWP %d exited.\n",
-				    lp->ptid.pid ());
+	      linux_nat_debug_printf ("LWP %d exited.", lp->ptid.pid ());
 
 	      /* If this is the leader exiting, it means the whole
 		 process is gone.  Store the status to report to the
@@ -2240,9 +2181,8 @@ wait_lwp (struct lwp_info *lp)
 	    }
 
 	  thread_dead = 1;
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog, "WL: %s exited.\n",
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf ("%s exited.",
+				  target_pid_to_str (lp->ptid).c_str ());
 	}
     }
 
@@ -2257,7 +2197,7 @@ wait_lwp (struct lwp_info *lp)
 
   if (lp->must_set_ptrace_flags)
     {
-      struct inferior *inf = find_inferior_pid (lp->ptid.pid ());
+      inferior *inf = find_inferior_pid (linux_target, lp->ptid.pid ());
       int options = linux_nat_ptrace_options (inf->attach_flag);
 
       linux_enable_event_reporting (lp->ptid.lwp (), options);
@@ -2286,10 +2226,7 @@ wait_lwp (struct lwp_info *lp)
   if (WIFSTOPPED (status) && WSTOPSIG (status) == SIGTRAP
       && linux_is_extended_waitstatus (status))
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "WL: Handling extended status 0x%06x\n",
-			    status);
+      linux_nat_debug_printf ("Handling extended status 0x%06x", status);
       linux_handle_extended_wait (lp, status);
       return 0;
     }
@@ -2306,21 +2243,13 @@ stop_callback (struct lwp_info *lp)
     {
       int ret;
 
-      if (debug_linux_nat)
-	{
-	  fprintf_unfiltered (gdb_stdlog,
-			      "SC:  kill %s **<SIGSTOP>**\n",
+      linux_nat_debug_printf ("kill %s **<SIGSTOP>**",
 			      target_pid_to_str (lp->ptid).c_str ());
-	}
+
       errno = 0;
       ret = kill_lwp (lp->ptid.lwp (), SIGSTOP);
-      if (debug_linux_nat)
-	{
-	  fprintf_unfiltered (gdb_stdlog,
-			      "SC:  lwp kill %d %s\n",
-			      ret,
+      linux_nat_debug_printf ("lwp kill %d %s", ret,
 			      errno ? safe_strerror (errno) : "ERRNO-OK");
-	}
 
       lp->signalled = 1;
       gdb_assert (lp->status == 0);
@@ -2408,10 +2337,8 @@ maybe_clear_ignore_sigint (struct lwp_in
 
   if (!linux_nat_has_pending_sigint (lp->ptid.lwp ()))
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "MCIS: Clearing bogus flag for %s\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("Clearing bogus flag for %s",
+			      target_pid_to_str (lp->ptid).c_str ());
       lp->ignore_sigint = 0;
     }
 }
@@ -2484,7 +2411,7 @@ linux_nat_target::low_status_is_event (i
 static int
 stop_wait_callback (struct lwp_info *lp)
 {
-  struct inferior *inf = find_inferior_ptid (lp->ptid);
+  inferior *inf = find_inferior_ptid (linux_target, lp->ptid);
 
   /* If this is a vfork parent, bail out, it is not going to report
      any SIGSTOP until the vfork is done with.  */
@@ -2507,12 +2434,10 @@ stop_wait_callback (struct lwp_info *lp)
 	  errno = 0;
 	  ptrace (PTRACE_CONT, lp->ptid.lwp (), 0, 0);
 	  lp->stopped = 0;
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"PTRACE_CONT %s, 0, 0 (%s) "
-				"(discarding SIGINT)\n",
-				target_pid_to_str (lp->ptid).c_str (),
-				errno ? safe_strerror (errno) : "OK");
+	  linux_nat_debug_printf
+	    ("PTRACE_CONT %s, 0, 0 (%s) (discarding SIGINT)",
+	     target_pid_to_str (lp->ptid).c_str (),
+	     errno ? safe_strerror (errno) : "OK");
 
 	  return stop_wait_callback (lp);
 	}
@@ -2523,11 +2448,9 @@ stop_wait_callback (struct lwp_info *lp)
 	{
 	  /* The thread was stopped with a signal other than SIGSTOP.  */
 
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"SWC: Pending event %s in %s\n",
-				status_to_str ((int) status),
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf ("Pending event %s in %s",
+				  status_to_str ((int) status),
+				  target_pid_to_str (lp->ptid).c_str ());
 
 	  /* Save the sigtrap event.  */
 	  lp->status = status;
@@ -2538,10 +2461,8 @@ stop_wait_callback (struct lwp_info *lp)
 	{
 	  /* We caught the SIGSTOP that we intended to catch.  */
 
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"SWC: Expected SIGSTOP caught for %s.\n",
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf ("Expected SIGSTOP caught for %s.",
+				  target_pid_to_str (lp->ptid).c_str ());
 
 	  lp->signalled = 0;
 
@@ -2577,7 +2498,7 @@ status_callback (struct lwp_info *lp)
   if (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
       || lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT)
     {
-      struct regcache *regcache = get_thread_regcache (lp->ptid);
+      struct regcache *regcache = get_thread_regcache (linux_target, lp->ptid);
       CORE_ADDR pc;
       int discard = 0;
 
@@ -2585,23 +2506,19 @@ status_callback (struct lwp_info *lp)
 
       if (pc != lp->stop_pc)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"SC: PC of %s changed.  was=%s, now=%s\n",
-				target_pid_to_str (lp->ptid).c_str (),
-				paddress (target_gdbarch (), lp->stop_pc),
-				paddress (target_gdbarch (), pc));
+	  linux_nat_debug_printf ("PC of %s changed.  was=%s, now=%s",
+				  target_pid_to_str (lp->ptid).c_str (),
+				  paddress (target_gdbarch (), lp->stop_pc),
+				  paddress (target_gdbarch (), pc));
 	  discard = 1;
 	}
 
 #if !USE_SIGTRAP_SIGINFO
       else if (!breakpoint_inserted_here_p (regcache->aspace (), pc))
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"SC: previous breakpoint of %s, at %s gone\n",
-				target_pid_to_str (lp->ptid).c_str (),
-				paddress (target_gdbarch (), lp->stop_pc));
+	  linux_nat_debug_printf ("previous breakpoint of %s, at %s gone",
+				  target_pid_to_str (lp->ptid).c_str (),
+				  paddress (target_gdbarch (), lp->stop_pc));
 
 	  discard = 1;
 	}
@@ -2609,10 +2526,8 @@ status_callback (struct lwp_info *lp)
 
       if (discard)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"SC: pending event of %s cancelled.\n",
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf ("pending event of %s cancelled.",
+				  target_pid_to_str (lp->ptid).c_str ());
 
 	  lp->status = 0;
 	  linux_resume_one_lwp (lp, lp->step, GDB_SIGNAL_0);
@@ -2698,7 +2613,7 @@ save_stop_reason (struct lwp_info *lp)
   if (!linux_target->low_status_is_event (lp->status))
     return;
 
-  regcache = get_thread_regcache (lp->ptid);
+  regcache = get_thread_regcache (linux_target, lp->ptid);
   gdbarch = regcache->arch ();
 
   pc = regcache_read_pc (regcache);
@@ -2721,7 +2636,7 @@ save_stop_reason (struct lwp_info *lp)
 	    {
 	      /* If we determine the LWP stopped for a SW breakpoint,
 		 trust it.  Particularly don't check watchpoint
-		 registers, because at least on s390, we'd find
+		 registers, because, at least on s390, we'd find
 		 stopped-by-watchpoint as long as there's a watchpoint
 		 set.  */
 	      lp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
@@ -2735,10 +2650,8 @@ save_stop_reason (struct lwp_info *lp)
 	    }
 	  else if (siginfo.si_code == TRAP_TRACE)
 	    {
-	      if (debug_linux_nat)
-		fprintf_unfiltered (gdb_stdlog,
-				    "CSBB: %s stopped by trace\n",
-				    target_pid_to_str (lp->ptid).c_str ());
+	      linux_nat_debug_printf ("%s stopped by trace",
+				      target_pid_to_str (lp->ptid).c_str ());
 
 	      /* We may have single stepped an instruction that
 		 triggered a watchpoint.  In that case, on some
@@ -2768,10 +2681,8 @@ save_stop_reason (struct lwp_info *lp)
 
   if (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "CSBB: %s stopped by software breakpoint\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("%s stopped by software breakpoint",
+			      target_pid_to_str (lp->ptid).c_str ());
 
       /* Back up the PC if necessary.  */
       if (pc != sw_bp_pc)
@@ -2782,17 +2693,13 @@ save_stop_reason (struct lwp_info *lp)
     }
   else if (lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "CSBB: %s stopped by hardware breakpoint\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("%s stopped by hardware breakpoint",
+			      target_pid_to_str (lp->ptid).c_str ());
     }
   else if (lp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "CSBB: %s stopped by hardware watchpoint\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("%s stopped by hardware watchpoint",
+			      target_pid_to_str (lp->ptid).c_str ());
     }
 
   lp->stop_pc = pc;
@@ -2866,10 +2773,8 @@ select_event_lwp (ptid_t filter, struct
       event_lp = iterate_over_lwps (filter, select_singlestep_lwp_callback);
       if (event_lp != NULL)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"SEL: Select single-step %s\n",
-				target_pid_to_str (event_lp->ptid).c_str ());
+	  linux_nat_debug_printf ("Select single-step %s",
+				  target_pid_to_str (event_lp->ptid).c_str ());
 	}
     }
 
@@ -2890,10 +2795,9 @@ select_event_lwp (ptid_t filter, struct
       random_selector = (int)
 	((num_events * (double) rand ()) / (RAND_MAX + 1.0));
 
-      if (debug_linux_nat && num_events > 1)
-	fprintf_unfiltered (gdb_stdlog,
-			    "SEL: Found %d events, selecting #%d\n",
-			    num_events, random_selector);
+      if (num_events > 1)
+	linux_nat_debug_printf ("Found %d events, selecting #%d",
+				num_events, random_selector);
 
       event_lp
 	= (iterate_over_lwps
@@ -2925,7 +2829,7 @@ resumed_callback (struct lwp_info *lp)
 }
 
 /* Check if we should go on and pass this event to common code.
-   Return the affected lwp if we are, or NULL otherwise.  */
+   Return the affected lwp if we should, or NULL otherwise.  */
 
 static struct lwp_info *
 linux_nat_filter_event (int lwpid, int status)
@@ -2952,23 +2856,18 @@ linux_nat_filter_event (int lwpid, int s
       && (WSTOPSIG (status) == SIGTRAP && event == PTRACE_EVENT_EXEC))
     {
       /* A multi-thread exec after we had seen the leader exiting.  */
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LLW: Re-adding thread group leader LWP %d.\n",
-			    lwpid);
+      linux_nat_debug_printf ("Re-adding thread group leader LWP %d.", lwpid);
 
       lp = add_lwp (ptid_t (lwpid, lwpid, 0));
       lp->stopped = 1;
       lp->resumed = 1;
-      add_thread (lp->ptid);
+      add_thread (linux_target, lp->ptid);
     }
 
   if (WIFSTOPPED (status) && !lp)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LHEW: saving LWP %ld status %s in stopped_pids list\n",
-			    (long) lwpid, status_to_str (status));
+      linux_nat_debug_printf ("saving LWP %ld status %s in stopped_pids list",
+			      (long) lwpid, status_to_str (status));
       add_to_pid_list (&stopped_pids, lwpid, status);
       return NULL;
     }
@@ -2986,7 +2885,7 @@ linux_nat_filter_event (int lwpid, int s
 
   if (WIFSTOPPED (status) && lp->must_set_ptrace_flags)
     {
-      struct inferior *inf = find_inferior_pid (lp->ptid.pid ());
+      inferior *inf = find_inferior_pid (linux_target, lp->ptid.pid ());
       int options = linux_nat_ptrace_options (inf->attach_flag);
 
       linux_enable_event_reporting (lp->ptid.lwp (), options);
@@ -3015,10 +2914,8 @@ linux_nat_filter_event (int lwpid, int s
   if (WIFSTOPPED (status) && WSTOPSIG (status) == SIGTRAP
       && linux_is_extended_waitstatus (status))
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LLW: Handling extended status 0x%06x\n",
-			    status);
+      linux_nat_debug_printf ("Handling extended status 0x%06x", status);
+
       if (linux_handle_extended_wait (lp, status))
 	return NULL;
     }
@@ -3029,10 +2926,8 @@ linux_nat_filter_event (int lwpid, int s
       if (!report_thread_events
 	  && num_lwps (lp->ptid.pid ()) > 1)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"LLW: %s exited.\n",
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf ("%s exited.",
+				  target_pid_to_str (lp->ptid).c_str ());
 
 	  /* If there is at least one more LWP, then the exit signal
 	     was not the end of the debugged application and should be
@@ -3045,10 +2940,8 @@ linux_nat_filter_event (int lwpid, int s
 	 exit, if e.g., some other thread brings down the whole
 	 process (calls `exit').  So don't assert that the lwp is
 	 resumed.  */
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LWP %ld exited (resumed=%d)\n",
-			    lp->ptid.lwp (), lp->resumed);
+      linux_nat_debug_printf ("LWP %ld exited (resumed=%d)",
+			      lp->ptid.lwp (), lp->resumed);
 
       /* Dead LWP's aren't expected to reported a pending sigstop.  */
       lp->signalled = 0;
@@ -3068,21 +2961,17 @@ linux_nat_filter_event (int lwpid, int s
 
       if (lp->last_resume_kind == resume_stop)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"LLW: resume_stop SIGSTOP caught for %s.\n",
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf ("resume_stop SIGSTOP caught for %s.",
+				  target_pid_to_str (lp->ptid).c_str ());
 	}
       else
 	{
 	  /* This is a delayed SIGSTOP.  Filter out the event.  */
 
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"LLW: %s %s, 0, 0 (discard delayed SIGSTOP)\n",
-				lp->step ?
-				"PTRACE_SINGLESTEP" : "PTRACE_CONT",
-				target_pid_to_str (lp->ptid).c_str ());
+	  linux_nat_debug_printf
+	    ("%s %s, 0, 0 (discard delayed SIGSTOP)",
+	     lp->step ? "PTRACE_SINGLESTEP" : "PTRACE_CONT",
+	     target_pid_to_str (lp->ptid).c_str ());
 
 	  linux_resume_one_lwp (lp, lp->step, GDB_SIGNAL_0);
 	  gdb_assert (lp->resumed);
@@ -3095,21 +2984,16 @@ linux_nat_filter_event (int lwpid, int s
   if (lp->ignore_sigint
       && WIFSTOPPED (status) && WSTOPSIG (status) == SIGINT)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LLW: Delayed SIGINT caught for %s.\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("Delayed SIGINT caught for %s.",
+			      target_pid_to_str (lp->ptid).c_str ());
 
       /* This is a delayed SIGINT.  */
       lp->ignore_sigint = 0;
 
       linux_resume_one_lwp (lp, lp->step, GDB_SIGNAL_0);
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LLW: %s %s, 0, 0 (discard SIGINT)\n",
-			    lp->step ?
-			    "PTRACE_SINGLESTEP" : "PTRACE_CONT",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("%s %s, 0, 0 (discard SIGINT)",
+			      lp->step ? "PTRACE_SINGLESTEP" : "PTRACE_CONT",
+			      target_pid_to_str (lp->ptid).c_str ());
       gdb_assert (lp->resumed);
 
       /* Discard the event.  */
@@ -3118,7 +3002,7 @@ linux_nat_filter_event (int lwpid, int s
 
   /* Don't report signals that GDB isn't interested in, such as
      signals that are neither printed nor stopped upon.  Stopping all
-     threads can be a bit time-consuming so if we want decent
+     threads can be a bit time-consuming, so if we want decent
      performance with heavily multi-threaded programs, especially when
      they're using a high frequency timer, we'd better avoid it if we
      can.  */
@@ -3152,19 +3036,16 @@ linux_nat_filter_event (int lwpid, int s
       if (!lp->step
 	  && WSTOPSIG (status) && sigismember (&pass_mask, WSTOPSIG (status))
 	  && (WSTOPSIG (status) != SIGSTOP
-	      || !find_thread_ptid (lp->ptid)->stop_requested)
+	      || !find_thread_ptid (linux_target, lp->ptid)->stop_requested)
 	  && !linux_wstatus_maybe_breakpoint (status))
 	{
 	  linux_resume_one_lwp (lp, lp->step, signo);
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"LLW: %s %s, %s (preempt 'handle')\n",
-				lp->step ?
-				"PTRACE_SINGLESTEP" : "PTRACE_CONT",
-				target_pid_to_str (lp->ptid).c_str (),
-				(signo != GDB_SIGNAL_0
-				 ? strsignal (gdb_signal_to_host (signo))
-				 : "0"));
+	  linux_nat_debug_printf
+	    ("%s %s, %s (preempt 'handle')",
+	     lp->step ? "PTRACE_SINGLESTEP" : "PTRACE_CONT",
+	     target_pid_to_str (lp->ptid).c_str (),
+	     (signo != GDB_SIGNAL_0
+	      ? strsignal (gdb_signal_to_host (signo)) : "0"));
 	  return NULL;
 	}
     }
@@ -3196,11 +3077,9 @@ check_zombie_leaders (void)
 	  && num_lwps (inf->pid) > 1
 	  && linux_proc_pid_is_zombie (inf->pid))
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"CZL: Thread group leader %d zombie "
-				"(it exited, or another thread execd).\n",
-				inf->pid);
+	  linux_nat_debug_printf ("Thread group leader %d zombie "
+				  "(it exited, or another thread execd).",
+				  inf->pid);
 
 	  /* A leader zombie can mean one of two things:
 
@@ -3220,10 +3099,7 @@ check_zombie_leaders (void)
 	     previous leader did exit voluntarily before some other
 	     thread execs).  */
 
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"CZL: Thread group leader %d vanished.\n",
-				inf->pid);
+	  linux_nat_debug_printf ("Thread group leader %d vanished.", inf->pid);
 	  exit_lwp (leader_lp);
 	}
     }
@@ -3262,8 +3138,7 @@ linux_nat_wait_1 (ptid_t ptid, struct ta
   struct lwp_info *lp;
   int status;
 
-  if (debug_linux_nat)
-    fprintf_unfiltered (gdb_stdlog, "LLW: enter\n");
+  linux_nat_debug_printf ("enter");
 
   /* The first time we get here after starting a new inferior, we may
      not have added it to the LWP list yet - this is the earliest
@@ -3271,7 +3146,7 @@ linux_nat_wait_1 (ptid_t ptid, struct ta
   if (inferior_ptid.is_pid ())
     {
       /* Upgrade the main thread's ptid.  */
-      thread_change_ptid (inferior_ptid,
+      thread_change_ptid (linux_target, inferior_ptid,
 			  ptid_t (inferior_ptid.pid (),
 				  inferior_ptid.pid (), 0));
 
@@ -3286,11 +3161,9 @@ linux_nat_wait_1 (ptid_t ptid, struct ta
   lp = iterate_over_lwps (ptid, status_callback);
   if (lp != NULL)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LLW: Using pending wait status %s for %s.\n",
-			    status_to_str (lp->status),
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("Using pending wait status %s for %s.",
+			      status_to_str (lp->status),
+			      target_pid_to_str (lp->ptid).c_str ());
     }
 
   /* But if we don't find a pending event, we'll have to wait.  Always
@@ -3317,19 +3190,14 @@ linux_nat_wait_1 (ptid_t ptid, struct ta
       errno = 0;
       lwpid = my_waitpid (-1, &status,  __WALL | WNOHANG);
 
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LNW: waitpid(-1, ...) returned %d, %s\n",
-			    lwpid, errno ? safe_strerror (errno) : "ERRNO-OK");
+      linux_nat_debug_printf ("waitpid(-1, ...) returned %d, %s",
+			      lwpid,
+			      errno ? safe_strerror (errno) : "ERRNO-OK");
 
       if (lwpid > 0)
 	{
-	  if (debug_linux_nat)
-	    {
-	      fprintf_unfiltered (gdb_stdlog,
-				  "LLW: waitpid %ld received %s\n",
+	  linux_nat_debug_printf ("waitpid %ld received %s",
 				  (long) lwpid, status_to_str (status));
-	    }
 
 	  linux_nat_filter_event (lwpid, status);
 	  /* Retry until nothing comes out of waitpid.  A single
@@ -3359,8 +3227,7 @@ linux_nat_wait_1 (ptid_t ptid, struct ta
 	 forever in the sigsuspend call below otherwise.  */
       if (iterate_over_lwps (ptid, resumed_callback) == NULL)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog, "LLW: exit (no resumed LWP)\n");
+	  linux_nat_debug_printf ("exit (no resumed LWP)");
 
 	  ourstatus->kind = TARGET_WAITKIND_NO_RESUMED;
 
@@ -3372,8 +3239,7 @@ linux_nat_wait_1 (ptid_t ptid, struct ta
 
       if (target_options & TARGET_WNOHANG)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog, "LLW: exit (ignore)\n");
+	  linux_nat_debug_printf ("exit (ignore)");
 
 	  ourstatus->kind = TARGET_WAITKIND_IGNORE;
 	  restore_child_signals_mask (&prev_mask);
@@ -3416,7 +3282,7 @@ linux_nat_wait_1 (ptid_t ptid, struct ta
   if (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
       && !USE_SIGTRAP_SIGINFO)
     {
-      struct regcache *regcache = get_thread_regcache (lp->ptid);
+      struct regcache *regcache = get_thread_regcache (linux_target, lp->ptid);
       struct gdbarch *gdbarch = regcache->arch ();
       int decr_pc = gdbarch_decr_pc_after_break (gdbarch);
 
@@ -3447,10 +3313,8 @@ linux_nat_wait_1 (ptid_t ptid, struct ta
 
   if (linux_target->low_status_is_event (status))
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LLW: trap ptid is %s.\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("trap ptid is %s.",
+			      target_pid_to_str (lp->ptid).c_str ());
     }
 
   if (lp->waitstatus.kind != TARGET_WAITKIND_IGNORE)
@@ -3461,8 +3325,7 @@ linux_nat_wait_1 (ptid_t ptid, struct ta
   else
     store_waitstatus (ourstatus, status);
 
-  if (debug_linux_nat)
-    fprintf_unfiltered (gdb_stdlog, "LLW: exit\n");
+  linux_nat_debug_printf ("exit");
 
   restore_child_signals_mask (&prev_mask);
 
@@ -3496,28 +3359,22 @@ resume_stopped_resumed_lwps (struct lwp_
 {
   if (!lp->stopped)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "RSRL: NOT resuming LWP %s, not stopped\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("NOT resuming LWP %s, not stopped",
+			      target_pid_to_str (lp->ptid).c_str ());
     }
   else if (!lp->resumed)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "RSRL: NOT resuming LWP %s, not resumed\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("NOT resuming LWP %s, not resumed",
+			      target_pid_to_str (lp->ptid).c_str ());
     }
   else if (lwp_status_pending_p (lp))
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "RSRL: NOT resuming LWP %s, has pending status\n",
-			    target_pid_to_str (lp->ptid).c_str ());
+      linux_nat_debug_printf ("NOT resuming LWP %s, has pending status",
+			      target_pid_to_str (lp->ptid).c_str ());
     }
   else
     {
-      struct regcache *regcache = get_thread_regcache (lp->ptid);
+      struct regcache *regcache = get_thread_regcache (linux_target, lp->ptid);
       struct gdbarch *gdbarch = regcache->arch ();
 
       try
@@ -3535,13 +3392,10 @@ resume_stopped_resumed_lwps (struct lwp_
 
 	  if (!leave_stopped)
 	    {
-	      if (debug_linux_nat)
-		fprintf_unfiltered (gdb_stdlog,
-				    "RSRL: resuming stopped-resumed LWP %s at "
-				    "%s: step=%d\n",
-				    target_pid_to_str (lp->ptid).c_str (),
-				    paddress (gdbarch, pc),
-				    lp->step);
+	      linux_nat_debug_printf
+		("resuming stopped-resumed LWP %s at %s: step=%d",
+		 target_pid_to_str (lp->ptid).c_str (), paddress (gdbarch, pc),
+		 lp->step);
 
 	      linux_resume_one_lwp_throw (lp, lp->step, GDB_SIGNAL_0);
 	    }
@@ -3562,14 +3416,8 @@ linux_nat_target::wait (ptid_t ptid, str
 {
   ptid_t event_ptid;
 
-  if (debug_linux_nat)
-    {
-      std::string options_string = target_options_to_string (target_options);
-      fprintf_unfiltered (gdb_stdlog,
-			  "linux_nat_wait: [%s], [%s]\n",
-			  target_pid_to_str (ptid).c_str (),
-			  options_string.c_str ());
-    }
+  linux_nat_debug_printf ("[%s], [%s]", target_pid_to_str (ptid).c_str (),
+			  target_options_to_string (target_options).c_str ());
 
   /* Flush the async file first.  */
   if (target_is_async_p ())
@@ -3612,13 +3460,14 @@ kill_one_lwp (pid_t pid)
 
   errno = 0;
   kill_lwp (pid, SIGKILL);
+
   if (debug_linux_nat)
     {
       int save_errno = errno;
 
-      fprintf_unfiltered (gdb_stdlog,
-			  "KC:  kill (SIGKILL) %ld, 0, 0 (%s)\n", (long) pid,
-			  save_errno ? safe_strerror (save_errno) : "OK");
+      linux_nat_debug_printf
+	("kill (SIGKILL) %ld, 0, 0 (%s)", (long) pid,
+	 save_errno != 0 ? safe_strerror (save_errno) : "OK");
     }
 
   /* Some kernels ignore even SIGKILL for processes under ptrace.  */
@@ -3629,9 +3478,9 @@ kill_one_lwp (pid_t pid)
     {
       int save_errno = errno;
 
-      fprintf_unfiltered (gdb_stdlog,
-			  "KC:  PTRACE_KILL %ld, 0, 0 (%s)\n", (long) pid,
-			  save_errno ? safe_strerror (save_errno) : "OK");
+      linux_nat_debug_printf
+	("PTRACE_KILL %ld, 0, 0 (%s)", (long) pid,
+	 save_errno ? safe_strerror (save_errno) : "OK");
     }
 }
 
@@ -3651,10 +3500,8 @@ kill_wait_one_lwp (pid_t pid)
       res = my_waitpid (pid, NULL, __WALL);
       if (res != (pid_t) -1)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"KWC: wait %ld received unknown.\n",
-				(long) pid);
+	  linux_nat_debug_printf ("wait %ld received unknown.", (long) pid);
+
 	  /* The Linux kernel sometimes fails to kill a thread
 	     completely after PTRACE_KILL; that goes from the stop
 	     point in do_fork out to the one in get_signal_to_deliver
@@ -4165,7 +4012,7 @@ linux_nat_target::can_async_p ()
 bool
 linux_nat_target::supports_non_stop ()
 {
-  return 1;
+  return true;
 }
 
 /* to_always_non_stop_p implementation.  */
@@ -4173,27 +4020,22 @@ linux_nat_target::supports_non_stop ()
 bool
 linux_nat_target::always_non_stop_p ()
 {
-  return 1;
+  return true;
 }
 
-/* True if we want to support multi-process.  To be removed when GDB
-   supports multi-exec.  */
-
-int linux_multi_process = 1;
-
 bool
 linux_nat_target::supports_multi_process ()
 {
-  return linux_multi_process;
+  return true;
 }
 
 bool
 linux_nat_target::supports_disable_randomization ()
 {
 #ifdef HAVE_PERSONALITY
-  return 1;
+  return true;
 #else
-  return 0;
+  return false;
 #endif
 }
 
@@ -4208,8 +4050,7 @@ sigchld_handler (int signo)
   int old_errno = errno;
 
   if (debug_linux_nat)
-    ui_file_write_async_safe (gdb_stdlog,
-			      "sigchld\n", sizeof ("sigchld\n") - 1);
+    gdb_stdlog->write_async_safe ("sigchld\n", sizeof ("sigchld\n") - 1);
 
   if (signo == SIGCHLD
       && linux_nat_event_pipe[0] != -1)
@@ -4224,7 +4065,7 @@ sigchld_handler (int signo)
 static void
 handle_target_event (int error, gdb_client_data client_data)
 {
-  inferior_event_handler (INF_REG_EVENT, NULL);
+  inferior_event_handler (INF_REG_EVENT);
 }
 
 /* Create/destroy the target events pipe.  Returns previous state.  */
@@ -4265,6 +4106,12 @@ linux_async_pipe (int enable)
   return previous;
 }
 
+int
+linux_nat_target::async_wait_fd ()
+{
+  return linux_nat_event_pipe[0];
+}
+
 /* target_async implementation.  */
 
 void
@@ -4297,19 +4144,14 @@ linux_nat_stop_lwp (struct lwp_info *lwp
 {
   if (!lwp->stopped)
     {
-      if (debug_linux_nat)
-	fprintf_unfiltered (gdb_stdlog,
-			    "LNSL: running -> suspending %s\n",
-			    target_pid_to_str (lwp->ptid).c_str ());
+      linux_nat_debug_printf ("running -> suspending %s",
+			      target_pid_to_str (lwp->ptid).c_str ());
 
 
       if (lwp->last_resume_kind == resume_stop)
 	{
-	  if (debug_linux_nat)
-	    fprintf_unfiltered (gdb_stdlog,
-				"linux-nat: already stopping LWP %ld at "
-				"GDB's request\n",
-				lwp->ptid.lwp ());
+	  linux_nat_debug_printf ("already stopping LWP %ld at GDB's request",
+				  lwp->ptid.lwp ());
 	  return 0;
 	}
 
@@ -4322,15 +4164,12 @@ linux_nat_stop_lwp (struct lwp_info *lwp
 
       if (debug_linux_nat)
 	{
-	  if (find_thread_ptid (lwp->ptid)->stop_requested)
-	    fprintf_unfiltered (gdb_stdlog,
-				"LNSL: already stopped/stop_requested %s\n",
-				target_pid_to_str (lwp->ptid).c_str ());
+	  if (find_thread_ptid (linux_target, lwp->ptid)->stop_requested)
+	    linux_nat_debug_printf ("already stopped/stop_requested %s",
+				    target_pid_to_str (lwp->ptid).c_str ());
 	  else
-	    fprintf_unfiltered (gdb_stdlog,
-				"LNSL: already stopped/no "
-				"stop_requested yet %s\n",
-				target_pid_to_str (lwp->ptid).c_str ());
+	    linux_nat_debug_printf ("already stopped/no stop_requested yet %s",
+				    target_pid_to_str (lwp->ptid).c_str ());
 	}
     }
   return 0;
@@ -4379,7 +4218,7 @@ linux_nat_target::thread_address_space (
       pid = ptid.pid ();
     }
 
-  inf = find_inferior_pid (pid);
+  inf = find_inferior_pid (this, pid);
   gdb_assert (inf != NULL);
   return inf->aspace;
 }
@@ -4535,8 +4374,9 @@ current_lwp_ptid (void)
   return inferior_ptid;
 }
 
+void _initialize_linux_nat ();
 void
-_initialize_linux_nat (void)
+_initialize_linux_nat ()
 {
   add_setshow_zuinteger_cmd ("lin-lwp", class_maintenance,
 			     &debug_linux_nat, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-nat.h ./gdb/linux-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native debugging support for GNU/Linux (LWP layer).
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -88,6 +88,7 @@ public:
   bool supports_non_stop () override;
   bool always_non_stop_p () override;
 
+  int async_wait_fd () override;
   void async (int) override;
 
   void close () override;
@@ -132,7 +133,7 @@ public:
 
   void post_attach (int) override;
 
-  int follow_fork (int, int) override;
+  bool follow_fork (bool, bool) override;
 
   std::vector<static_tracepoint_marker>
     static_tracepoint_markers_by_strid (const char *id) override;
@@ -163,6 +164,10 @@ public:
   virtual void low_new_fork (struct lwp_info *parent, pid_t child_pid)
   {}
 
+  /* The method to call, if any, when a new clone event is detected.  */
+  virtual void low_new_clone (struct lwp_info *parent, pid_t child_lwp)
+  {}
+
   /* The method to call, if any, when a process is no longer
      attached.  */
   virtual void low_forget_process (pid_t pid)
@@ -228,7 +233,7 @@ struct lwp_info
 
   /* When 'stopped' is set, this is where the lwp last stopped, with
      decr_pc_after_break already accounted for.  If the LWP is
-     running, and stepping, this is the address at which the lwp was
+     running and stepping, this is the address at which the lwp was
      resumed (that is, it's the previous stop PC).  If the LWP is
      running and not stepping, this is 0.  */
   CORE_ADDR stop_pc;
@@ -237,7 +242,7 @@ struct lwp_info
   int step;
 
   /* The reason the LWP last stopped, if we need to track it
-     (breakpoint, watchpoint, etc.)  */
+     (breakpoint, watchpoint, etc.).  */
   enum target_stop_reason stop_reason;
 
   /* On architectures where it is possible to know the data address of
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-nat-trad.c ./gdb/linux-nat-trad.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-nat-trad.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-nat-trad.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic GNU/Linux target using traditional ptrace register access.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-nat-trad.h ./gdb/linux-nat-trad.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-nat-trad.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-nat-trad.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic GNU/Linux target using traditional ptrace register access.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-record.c ./gdb/linux-record.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-record.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-record.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Process record and replay target code for GNU/Linux.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-record.h ./gdb/linux-record.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-record.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-record.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Process record and replay target code for GNU/Linux.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-tdep.c ./gdb/linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux, architecture independent.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -258,7 +258,7 @@ linux_get_siginfo_type_with_fields (stru
 
   /* sival_t */
   sigval_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
-  TYPE_NAME (sigval_type) = xstrdup ("sigval_t");
+  sigval_type->set_name (xstrdup ("sigval_t"));
   append_composite_type_field (sigval_type, "sival_int", int_type);
   append_composite_type_field (sigval_type, "sival_ptr", void_ptr_type);
 
@@ -352,7 +352,7 @@ linux_get_siginfo_type_with_fields (stru
 
   /* struct siginfo */
   siginfo_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (siginfo_type) = xstrdup ("siginfo");
+  siginfo_type->set_name (xstrdup ("siginfo"));
   append_composite_type_field (siginfo_type, "si_signo", int_type);
   append_composite_type_field (siginfo_type, "si_errno", int_type);
   append_composite_type_field (siginfo_type, "si_code", int_type);
@@ -701,22 +701,16 @@ dump_mapping_p (filter_flags filterflags
   if (!dump_p && private_p && offset == 0
       && (filterflags & COREFILTER_ELF_HEADERS) != 0)
     {
-      /* Let's check if we have an ELF header.  */
-      gdb::unique_xmalloc_ptr<char> header;
-      int errcode;
-
       /* Useful define specifying the size of the ELF magical
 	 header.  */
 #ifndef SELFMAG
 #define SELFMAG 4
 #endif
 
-      /* Read the first SELFMAG bytes and check if it is ELFMAG.  */
-      if (target_read_string (addr, &header, SELFMAG, &errcode) == SELFMAG
-	  && errcode == 0)
+      /* Let's check if we have an ELF header.  */
+      gdb_byte h[SELFMAG];
+      if (target_read_memory (addr, h, SELFMAG) == 0)
 	{
-	  const char *h = header.get ();
-
 	  /* The EI_MAG* and ELFMAG* constants come from
 	     <elf/common.h>.  */
 	  if (h[EI_MAG0] == ELFMAG0 && h[EI_MAG1] == ELFMAG1
@@ -732,6 +726,25 @@ dump_mapping_p (filter_flags filterflags
   return dump_p;
 }
 
+/* As above, but return true only when we should dump the NT_FILE
+   entry.  */
+
+static int
+dump_note_entry_p (filter_flags filterflags, const struct smaps_vmflags *v,
+		int maybe_private_p, int mapping_anon_p, int mapping_file_p,
+		const char *filename, ULONGEST addr, ULONGEST offset)
+{
+  /* vDSO and vsyscall mappings will end up in the core file.  Don't
+     put them in the NT_FILE note.  */
+  if (strcmp ("[vdso]", filename) == 0
+      || strcmp ("[vsyscall]", filename) == 0)
+    return 0;
+
+  /* Otherwise, any other file-based mapping should be placed in the
+     note.  */
+  return filename != nullptr;
+}
+
 /* Implement the "info proc" command.  */
 
 static void
@@ -1024,104 +1037,172 @@ linux_info_proc (struct gdbarch *gdbarch
     }
 }
 
-/* Implement "info proc mappings" for a corefile.  */
+/* Implementation of `gdbarch_read_core_file_mappings', as defined in
+   gdbarch.h.
+   
+   This function reads the NT_FILE note (which BFD turns into the
+   section ".note.linuxcore.file").  The format of this note / section
+   is described as follows in the Linux kernel sources in
+   fs/binfmt_elf.c:
+   
+      long count     -- how many files are mapped
+      long page_size -- units for file_ofs
+      array of [COUNT] elements of
+	long start
+	long end
+	long file_ofs
+      followed by COUNT filenames in ASCII: "FILE1" NUL "FILE2" NUL...
+      
+   CBFD is the BFD of the core file.
+
+   PRE_LOOP_CB is the callback function to invoke prior to starting
+   the loop which processes individual entries.  This callback will
+   only be executed after the note has been examined in enough
+   detail to verify that it's not malformed in some way.
+   
+   LOOP_CB is the callback function that will be executed once
+   for each mapping.  */
 
 static void
-linux_core_info_proc_mappings (struct gdbarch *gdbarch, const char *args)
+linux_read_core_file_mappings (struct gdbarch *gdbarch,
+			       struct bfd *cbfd,
+			       gdb::function_view<void (ULONGEST count)>
+			         pre_loop_cb,
+			       gdb::function_view<void (int num,
+			                                ULONGEST start,
+							ULONGEST end,
+							ULONGEST file_ofs,
+							const char *filename,
+							const void *other)>
+				 loop_cb)
 {
-  asection *section;
-  ULONGEST count, page_size;
-  unsigned char *descdata, *filenames, *descend;
-  size_t note_size;
-  unsigned int addr_size_bits, addr_size;
-  struct gdbarch *core_gdbarch = gdbarch_from_bfd (core_bfd);
-  /* We assume this for reading 64-bit core files.  */
+  /* Ensure that ULONGEST is big enough for reading 64-bit core files.  */
   gdb_static_assert (sizeof (ULONGEST) >= 8);
 
-  section = bfd_get_section_by_name (core_bfd, ".note.linuxcore.file");
-  if (section == NULL)
-    {
-      warning (_("unable to find mappings in core file"));
-      return;
-    }
+  /* It's not required that the NT_FILE note exists, so return silently
+     if it's not found.  Beyond this point though, we'll complain
+     if problems are found.  */
+  asection *section = bfd_get_section_by_name (cbfd, ".note.linuxcore.file");
+  if (section == nullptr)
+    return;
 
-  addr_size_bits = gdbarch_addr_bit (core_gdbarch);
-  addr_size = addr_size_bits / 8;
-  note_size = bfd_section_size (section);
+  unsigned int addr_size_bits = gdbarch_addr_bit (gdbarch);
+  unsigned int addr_size = addr_size_bits / 8;
+  size_t note_size = bfd_section_size (section);
 
   if (note_size < 2 * addr_size)
-    error (_("malformed core note - too short for header"));
+    {
+      warning (_("malformed core note - too short for header"));
+      return;
+    }
 
-  gdb::def_vector<unsigned char> contents (note_size);
+  gdb::def_vector<gdb_byte> contents (note_size);
   if (!bfd_get_section_contents (core_bfd, section, contents.data (),
 				 0, note_size))
-    error (_("could not get core note contents"));
+    {
+      warning (_("could not get core note contents"));
+      return;
+    }
 
-  descdata = contents.data ();
-  descend = descdata + note_size;
+  gdb_byte *descdata = contents.data ();
+  char *descend = (char *) descdata + note_size;
 
   if (descdata[note_size - 1] != '\0')
-    error (_("malformed note - does not end with \\0"));
+    {
+      warning (_("malformed note - does not end with \\0"));
+      return;
+    }
 
-  count = bfd_get (addr_size_bits, core_bfd, descdata);
+  ULONGEST count = bfd_get (addr_size_bits, core_bfd, descdata);
   descdata += addr_size;
 
-  page_size = bfd_get (addr_size_bits, core_bfd, descdata);
+  ULONGEST page_size = bfd_get (addr_size_bits, core_bfd, descdata);
   descdata += addr_size;
 
   if (note_size < 2 * addr_size + count * 3 * addr_size)
-    error (_("malformed note - too short for supplied file count"));
-
-  printf_filtered (_("Mapped address spaces:\n\n"));
-  if (gdbarch_addr_bit (gdbarch) == 32)
     {
-      printf_filtered ("\t%10s %10s %10s %10s %s\n",
-		       "Start Addr",
-		       "  End Addr",
-		       "      Size", "    Offset", "objfile");
-    }
-  else
-    {
-      printf_filtered ("  %18s %18s %10s %10s %s\n",
-		       "Start Addr",
-		       "  End Addr",
-		       "      Size", "    Offset", "objfile");
+      warning (_("malformed note - too short for supplied file count"));
+      return;
     }
 
-  filenames = descdata + count * 3 * addr_size;
-  while (--count > 0)
-    {
-      ULONGEST start, end, file_ofs;
+  char *filenames = (char *) descdata + count * 3 * addr_size;
 
-      if (filenames == descend)
-	error (_("malformed note - filenames end too early"));
+  /* Make sure that the correct number of filenames exist.  Complain
+     if there aren't enough or are too many.  */
+  char *f = filenames;
+  for (int i = 0; i < count; i++)
+    {
+      if (f >= descend)
+        {
+	  warning (_("malformed note - filename area is too small"));
+	  return;
+	}
+      f += strnlen (f, descend - f) + 1;
+    }
+  /* Complain, but don't return early if the filename area is too big.  */
+  if (f != descend)
+    warning (_("malformed note - filename area is too big"));
 
-      start = bfd_get (addr_size_bits, core_bfd, descdata);
+  pre_loop_cb (count);
+
+  for (int i = 0; i < count; i++)
+    {
+      ULONGEST start = bfd_get (addr_size_bits, core_bfd, descdata);
       descdata += addr_size;
-      end = bfd_get (addr_size_bits, core_bfd, descdata);
+      ULONGEST end = bfd_get (addr_size_bits, core_bfd, descdata);
       descdata += addr_size;
-      file_ofs = bfd_get (addr_size_bits, core_bfd, descdata);
+      ULONGEST file_ofs
+        = bfd_get (addr_size_bits, core_bfd, descdata) * page_size;
       descdata += addr_size;
+      char * filename = filenames;
+      filenames += strlen ((char *) filenames) + 1;
 
-      file_ofs *= page_size;
+      loop_cb (i, start, end, file_ofs, filename, nullptr);
+    }
+}
 
-      if (gdbarch_addr_bit (gdbarch) == 32)
-	printf_filtered ("\t%10s %10s %10s %10s %s\n",
-			 paddress (gdbarch, start),
-			 paddress (gdbarch, end),
-			 hex_string (end - start),
-			 hex_string (file_ofs),
-			 filenames);
-      else
-	printf_filtered ("  %18s %18s %10s %10s %s\n",
-			 paddress (gdbarch, start),
-			 paddress (gdbarch, end),
-			 hex_string (end - start),
-			 hex_string (file_ofs),
-			 filenames);
+/* Implement "info proc mappings" for a corefile.  */
 
-      filenames += 1 + strlen ((char *) filenames);
-    }
+static void
+linux_core_info_proc_mappings (struct gdbarch *gdbarch, const char *args)
+{
+  linux_read_core_file_mappings (gdbarch, core_bfd,
+    [=] (ULONGEST count)
+      {
+	printf_filtered (_("Mapped address spaces:\n\n"));
+	if (gdbarch_addr_bit (gdbarch) == 32)
+	  {
+	    printf_filtered ("\t%10s %10s %10s %10s %s\n",
+			     "Start Addr",
+			     "  End Addr",
+			     "      Size", "    Offset", "objfile");
+	  }
+	else
+	  {
+	    printf_filtered ("  %18s %18s %10s %10s %s\n",
+			     "Start Addr",
+			     "  End Addr",
+			     "      Size", "    Offset", "objfile");
+	  }
+      },
+    [=] (int num, ULONGEST start, ULONGEST end, ULONGEST file_ofs,
+         const char *filename, const void *other)
+      {
+	if (gdbarch_addr_bit (gdbarch) == 32)
+	  printf_filtered ("\t%10s %10s %10s %10s %s\n",
+			   paddress (gdbarch, start),
+			   paddress (gdbarch, end),
+			   hex_string (end - start),
+			   hex_string (file_ofs),
+			   filename);
+	else
+	  printf_filtered ("  %18s %18s %10s %10s %s\n",
+			   paddress (gdbarch, start),
+			   paddress (gdbarch, end),
+			   hex_string (end - start),
+			   hex_string (file_ofs),
+			   filename);
+      });
 }
 
 /* Implement "info proc" for a corefile.  */
@@ -1178,10 +1259,20 @@ typedef int linux_find_memory_region_fty
 					    const char *filename,
 					    void *data);
 
+typedef int linux_dump_mapping_p_ftype (filter_flags filterflags,
+					const struct smaps_vmflags *v,
+					int maybe_private_p,
+					int mapping_anon_p,
+					int mapping_file_p,
+					const char *filename,
+					ULONGEST addr,
+					ULONGEST offset);
+
 /* List memory regions in the inferior for a corefile.  */
 
 static int
 linux_find_memory_regions_full (struct gdbarch *gdbarch,
+				linux_dump_mapping_p_ftype *should_dump_mapping_p,
 				linux_find_memory_region_ftype *func,
 				void *obfd)
 {
@@ -1332,9 +1423,10 @@ linux_find_memory_regions_full (struct g
 	    }
 
 	  if (has_anonymous)
-	    should_dump_p = dump_mapping_p (filterflags, &v, priv,
-					    mapping_anon_p, mapping_file_p,
-					    filename, addr, offset);
+	    should_dump_p = should_dump_mapping_p (filterflags, &v, priv,
+					           mapping_anon_p,
+						   mapping_file_p,
+					           filename, addr, offset);
 	  else
 	    {
 	      /* Older Linux kernels did not support the "Anonymous:" counter.
@@ -1398,22 +1490,11 @@ linux_find_memory_regions (struct gdbarc
   data.obfd = obfd;
 
   return linux_find_memory_regions_full (gdbarch,
+					 dump_mapping_p,
 					 linux_find_memory_regions_thunk,
 					 &data);
 }
 
-/* Determine which signal stopped execution.  */
-
-static int
-find_signalled_thread (struct thread_info *info, void *data)
-{
-  if (info->suspend.stop_signal != GDB_SIGNAL_0
-      && info->ptid.pid () == inferior_ptid.pid ())
-    return 1;
-
-  return 0;
-}
-
 /* This is used to pass information from
    linux_make_mappings_corefile_notes through
    linux_find_memory_regions_full.  */
@@ -1493,7 +1574,9 @@ linux_make_mappings_corefile_notes (stru
   pack_long (buf, long_type, 1);
   obstack_grow (&data_obstack, buf, TYPE_LENGTH (long_type));
 
-  linux_find_memory_regions_full (gdbarch, linux_make_mappings_callback,
+  linux_find_memory_regions_full (gdbarch, 
+				  dump_note_entry_p,
+				  linux_make_mappings_callback,
 				  &mapping_data);
 
   if (mapping_data.file_count != 0)
@@ -1618,8 +1701,8 @@ linux_get_siginfo_data (thread_info *thr
   if (!gdbarch_get_siginfo_type_p (gdbarch))
     return gdb::byte_vector ();
 
-  scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
-  inferior_ptid = thread->ptid;
+  scoped_restore_current_thread save_current_thread;
+  switch_to_thread (thread);
 
   siginfo_type = gdbarch_get_siginfo_type (gdbarch);
 
@@ -1651,7 +1734,8 @@ linux_corefile_thread (struct thread_inf
 {
   struct regcache *regcache;
 
-  regcache = get_thread_arch_regcache (info->ptid, args->gdbarch);
+  regcache = get_thread_arch_regcache (info->inf->process_target (),
+				       info->ptid, args->gdbarch);
 
   target_fetch_registers (regcache, -1);
   gdb::byte_vector siginfo_data = linux_get_siginfo_data (info, args->gdbarch);
@@ -1728,7 +1812,7 @@ linux_fill_prpsinfo (struct elf_internal
 
   /* Copying the program name.  Only the basename matters.  */
   basename = lbasename (fname.get ());
-  strncpy (p->pr_fname, basename, sizeof (p->pr_fname));
+  strncpy (p->pr_fname, basename, sizeof (p->pr_fname) - 1);
   p->pr_fname[sizeof (p->pr_fname) - 1] = '\0';
 
   infargs = get_inferior_args ();
@@ -1738,7 +1822,7 @@ linux_fill_prpsinfo (struct elf_internal
   if (infargs != NULL)
     psargs = psargs + " " + infargs;
 
-  strncpy (p->pr_psargs, psargs.c_str (), sizeof (p->pr_psargs));
+  strncpy (p->pr_psargs, psargs.c_str (), sizeof (p->pr_psargs) - 1);
   p->pr_psargs[sizeof (p->pr_psargs) - 1] = '\0';
 
   xsnprintf (filename, sizeof (filename), "/proc/%d/stat", (int) pid);
@@ -1860,6 +1944,30 @@ linux_fill_prpsinfo (struct elf_internal
   return 1;
 }
 
+/* Find the signalled thread.  In case there's more than one signalled
+   thread, prefer the current thread, if it is signalled.  If no
+   thread was signalled, default to the current thread, unless it has
+   exited, in which case return NULL.  */
+
+static thread_info *
+find_signalled_thread ()
+{
+  thread_info *curr_thr = inferior_thread ();
+  if (curr_thr->state != THREAD_EXITED
+      && curr_thr->suspend.stop_signal != GDB_SIGNAL_0)
+    return curr_thr;
+
+  for (thread_info *thr : current_inferior ()->non_exited_threads ())
+    if (thr->suspend.stop_signal != GDB_SIGNAL_0)
+      return thr;
+
+  /* Default to the current thread, unless it has exited.  */
+  if (curr_thr->state != THREAD_EXITED)
+    return curr_thr;
+
+  return nullptr;
+}
+
 /* Build the note section for a corefile, and return it in a malloc
    buffer.  */
 
@@ -1869,7 +1977,6 @@ linux_make_corefile_notes (struct gdbarc
   struct linux_corefile_thread_data thread_args;
   struct elf_internal_linux_prpsinfo prpsinfo;
   char *note_data = NULL;
-  struct thread_info *curr_thr, *signalled_thr;
 
   if (! gdbarch_iterate_over_regset_sections_p (gdbarch))
     return NULL;
@@ -1897,26 +2004,21 @@ linux_make_corefile_notes (struct gdbarc
     }
 
   /* Like the kernel, prefer dumping the signalled thread first.
-     "First thread" is what tools use to infer the signalled thread.
-     In case there's more than one signalled thread, prefer the
-     current thread, if it is signalled.  */
-  curr_thr = inferior_thread ();
-  if (curr_thr->suspend.stop_signal != GDB_SIGNAL_0)
-    signalled_thr = curr_thr;
-  else
-    {
-      signalled_thr = iterate_over_threads (find_signalled_thread, NULL);
-      if (signalled_thr == NULL)
-	signalled_thr = curr_thr;
-    }
+     "First thread" is what tools use to infer the signalled
+     thread.  */
+  thread_info *signalled_thr = find_signalled_thread ();
 
   thread_args.gdbarch = gdbarch;
   thread_args.obfd = obfd;
   thread_args.note_data = note_data;
   thread_args.note_size = note_size;
-  thread_args.stop_signal = signalled_thr->suspend.stop_signal;
+  if (signalled_thr != nullptr)
+    thread_args.stop_signal = signalled_thr->suspend.stop_signal;
+  else
+    thread_args.stop_signal = GDB_SIGNAL_0;
 
-  linux_corefile_thread (signalled_thr, &thread_args);
+  if (signalled_thr != nullptr)
+    linux_corefile_thread (signalled_thr, &thread_args);
   for (thread_info *thr : current_inferior ()->non_exited_threads ())
     {
       if (thr == signalled_thr)
@@ -2325,7 +2427,7 @@ linux_infcall_mmap (CORE_ADDR size, unsi
      "mmap" uses 64-bit off_t on x86_64 and 32-bit off_t on i386 and x32.  */
   struct value *mmap_val = find_function_in_inferior ("mmap64", &objf);
   struct value *addr_val;
-  struct gdbarch *gdbarch = get_objfile_arch (objf);
+  struct gdbarch *gdbarch = objf->arch ();
   CORE_ADDR retval;
   enum
     {
@@ -2364,7 +2466,7 @@ linux_infcall_munmap (CORE_ADDR addr, CO
   struct objfile *objf;
   struct value *munmap_val = find_function_in_inferior ("munmap", &objf);
   struct value *retval_val;
-  struct gdbarch *gdbarch = get_objfile_arch (objf);
+  struct gdbarch *gdbarch = objf->arch ();
   LONGEST retval;
   enum
     {
@@ -2471,6 +2573,7 @@ linux_init_abi (struct gdbarch_info info
   set_gdbarch_info_proc (gdbarch, linux_info_proc);
   set_gdbarch_core_info_proc (gdbarch, linux_core_info_proc);
   set_gdbarch_core_xfer_siginfo (gdbarch, linux_core_xfer_siginfo);
+  set_gdbarch_read_core_file_mappings (gdbarch, linux_read_core_file_mappings);
   set_gdbarch_find_memory_regions (gdbarch, linux_find_memory_regions);
   set_gdbarch_make_corefile_notes (gdbarch, linux_make_corefile_notes);
   set_gdbarch_has_shared_address_space (gdbarch,
@@ -2485,8 +2588,9 @@ linux_init_abi (struct gdbarch_info info
   set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type);
 }
 
+void _initialize_linux_tdep ();
 void
-_initialize_linux_tdep (void)
+_initialize_linux_tdep ()
 {
   linux_gdbarch_data_handle =
     gdbarch_data_register_post_init (init_linux_gdbarch_data);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-tdep.h ./gdb/linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux, architecture independent.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-thread-db.c ./gdb/linux-thread-db.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/linux-thread-db.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/linux-thread-db.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* libthread_db assisted debugging support, generic parts.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -168,6 +168,9 @@ struct thread_db_info
 {
   struct thread_db_info *next;
 
+  /* The target this thread_db_info is bound to.  */
+  process_stratum_target *process_target;
+
   /* Process id this object refers to.  */
   int pid;
 
@@ -228,6 +231,7 @@ add_thread_db_info (void *handle)
 {
   struct thread_db_info *info = XCNEW (struct thread_db_info);
 
+  info->process_target = current_inferior ()->process_target ();
   info->pid = inferior_ptid.pid ();
   info->handle = handle;
 
@@ -246,12 +250,12 @@ add_thread_db_info (void *handle)
    related to process PID, if any; NULL otherwise.  */
 
 static struct thread_db_info *
-get_thread_db_info (int pid)
+get_thread_db_info (process_stratum_target *targ, int pid)
 {
   struct thread_db_info *info;
 
   for (info = thread_db_list; info; info = info->next)
-    if (pid == info->pid)
+    if (targ == info->process_target && pid == info->pid)
       return info;
 
   return NULL;
@@ -265,14 +269,14 @@ static const char *thread_db_err_str (td
    LIBTHREAD_DB_SO's dlopen'ed handle.  */
 
 static void
-delete_thread_db_info (int pid)
+delete_thread_db_info (process_stratum_target *targ, int pid)
 {
   struct thread_db_info *info, *info_prev;
 
   info_prev = NULL;
 
   for (info = thread_db_list; info; info_prev = info, info = info->next)
-    if (pid == info->pid)
+    if (targ == info->process_target && pid == info->pid)
       break;
 
   if (info == NULL)
@@ -406,7 +410,7 @@ thread_from_lwp (thread_info *stopped, p
      LWP.  */
   gdb_assert (ptid.lwp () != 0);
 
-  info = get_thread_db_info (ptid.pid ());
+  info = get_thread_db_info (stopped->inf->process_target (), ptid.pid ());
 
   /* Access an lwp we know is stopped.  */
   info->proc_handle.thread = stopped;
@@ -422,7 +426,7 @@ thread_from_lwp (thread_info *stopped, p
 	   thread_db_err_str (err));
 
   /* Fill the cache.  */
-  tp = find_thread_ptid (ptid);
+  tp = find_thread_ptid (stopped->inf->process_target (), ptid);
   return record_thread (info, tp, ptid, &th, &ti);
 }
 
@@ -434,12 +438,12 @@ thread_db_notice_clone (ptid_t parent, p
 {
   struct thread_db_info *info;
 
-  info = get_thread_db_info (child.pid ());
+  info = get_thread_db_info (linux_target, child.pid ());
 
   if (info == NULL)
     return 0;
 
-  thread_info *stopped = find_thread_ptid (parent);
+  thread_info *stopped = find_thread_ptid (linux_target, parent);
 
   thread_from_lwp (stopped, child);
 
@@ -468,16 +472,17 @@ inferior_has_bug (const char *ver_symbol
 {
   struct bound_minimal_symbol version_msym;
   CORE_ADDR version_addr;
-  gdb::unique_xmalloc_ptr<char> version;
-  int err, got, retval = 0;
+  int got, retval = 0;
 
   version_msym = lookup_minimal_symbol (ver_symbol, NULL, NULL);
   if (version_msym.minsym == NULL)
     return 0;
 
   version_addr = BMSYMBOL_VALUE_ADDRESS (version_msym);
-  got = target_read_string (version_addr, &version, 32, &err);
-  if (err == 0 && memchr (version.get (), 0, got) == version.get () + got - 1)
+  gdb::unique_xmalloc_ptr<char> version
+    = target_read_string (version_addr, 32, &got);
+  if (version != nullptr
+      && memchr (version.get (), 0, got) == version.get () + got - 1)
     {
       int major, minor;
 
@@ -684,13 +689,13 @@ check_thread_db_callback (const td_thrha
      to how GDB accesses TLS could result in this passing
      without exercising the calls it's supposed to.  */
   ptid_t ptid = ptid_t (tdb_testinfo->info->pid, ti.ti_lid, 0);
-  struct thread_info *thread_info = find_thread_ptid (ptid);
+  thread_info *thread_info = find_thread_ptid (linux_target, ptid);
   if (thread_info != NULL && thread_info->priv != NULL)
     {
       LOG ("; errno");
 
       scoped_restore_current_thread restore_current_thread;
-      switch_to_thread (ptid);
+      switch_to_thread (thread_info);
 
       expression_up expr = parse_expression ("(int) errno");
       struct value *val = evaluate_expression (expr.get ());
@@ -940,10 +945,8 @@ try_thread_db_load_1 (struct thread_db_i
     }
 
   /* The thread library was detected.  Activate the thread_db target
-     if this is the first process using it.  */
-  if (thread_db_list->next == NULL)
-    push_target (&the_thread_db_target);
-
+     for this process.  */
+  push_target (&the_thread_db_target);
   return true;
 }
 
@@ -1013,7 +1016,8 @@ try_thread_db_load (const char *library,
     return true;
 
   /* This library "refused" to work on current inferior.  */
-  delete_thread_db_info (inferior_ptid.pid ());
+  delete_thread_db_info (current_inferior ()->process_target (),
+			 inferior_ptid.pid ());
   return false;
 }
 
@@ -1182,7 +1186,8 @@ thread_db_load (void)
 {
   struct thread_db_info *info;
 
-  info = get_thread_db_info (inferior_ptid.pid ());
+  info = get_thread_db_info (current_inferior ()->process_target (),
+			     inferior_ptid.pid ());
 
   if (info != NULL)
     return true;
@@ -1349,7 +1354,7 @@ record_thread (struct thread_db_info *in
      thread with this PTID, but it's marked exited, then the kernel
      reused the tid of an old thread.  */
   if (tp == NULL || tp->state == THREAD_EXITED)
-    tp = add_thread_with_info (ptid, priv);
+    tp = add_thread_with_info (info->process_target, ptid, priv);
   else
     tp->priv.reset (priv);
 
@@ -1362,16 +1367,14 @@ record_thread (struct thread_db_info *in
 void
 thread_db_target::detach (inferior *inf, int from_tty)
 {
-  delete_thread_db_info (inf->pid);
+  delete_thread_db_info (inf->process_target (), inf->pid);
 
   beneath ()->detach (inf, from_tty);
 
   /* NOTE: From this point on, inferior_ptid is null_ptid.  */
 
-  /* If there are no more processes using libpthread, detach the
-     thread_db target ops.  */
-  if (!thread_db_list)
-    unpush_target (this);
+  /* Detach the thread_db target from this inferior.  */
+  unpush_target (this);
 }
 
 ptid_t
@@ -1380,7 +1383,10 @@ thread_db_target::wait (ptid_t ptid, str
 {
   struct thread_db_info *info;
 
-  ptid = beneath ()->wait (ptid, ourstatus, options);
+  process_stratum_target *beneath
+    = as_process_stratum_target (this->beneath ());
+
+  ptid = beneath->wait (ptid, ourstatus, options);
 
   switch (ourstatus->kind)
     {
@@ -1391,7 +1397,7 @@ thread_db_target::wait (ptid_t ptid, str
       return ptid;
     }
 
-  info = get_thread_db_info (ptid.pid ());
+  info = get_thread_db_info (beneath, ptid.pid ());
 
   /* If this process isn't using thread_db, we're done.  */
   if (info == NULL)
@@ -1401,15 +1407,14 @@ thread_db_target::wait (ptid_t ptid, str
     {
       /* New image, it may or may not end up using thread_db.  Assume
 	 not unless we find otherwise.  */
-      delete_thread_db_info (ptid.pid ());
-      if (!thread_db_list)
-	unpush_target (&the_thread_db_target);
+      delete_thread_db_info (beneath, ptid.pid ());
+      unpush_target (this);
 
       return ptid;
     }
 
   /* Fill in the thread's user-level thread id and status.  */
-  thread_from_lwp (find_thread_ptid (ptid), ptid);
+  thread_from_lwp (find_thread_ptid (beneath, ptid), ptid);
 
   return ptid;
 }
@@ -1417,13 +1422,15 @@ thread_db_target::wait (ptid_t ptid, str
 void
 thread_db_target::mourn_inferior ()
 {
-  delete_thread_db_info (inferior_ptid.pid ());
+  process_stratum_target *target_beneath
+    = as_process_stratum_target (this->beneath ());
+
+  delete_thread_db_info (target_beneath, inferior_ptid.pid ());
 
-  beneath ()->mourn_inferior ();
+  target_beneath->mourn_inferior ();
 
-  /* Detach thread_db target ops.  */
-  if (!thread_db_list)
-    unpush_target (&the_thread_db_target);
+  /* Detach the thread_db target from this inferior.  */
+  unpush_target (this);
 }
 
 struct callback_data
@@ -1488,7 +1495,7 @@ find_new_threads_callback (const td_thrh
     }
 
   ptid_t ptid (info->pid, ti.ti_lid);
-  tp = find_thread_ptid (ptid);
+  tp = find_thread_ptid (info->process_target, ptid);
   if (tp == NULL || tp->priv == NULL)
     record_thread (info, tp, ptid, th_p, &ti);
 
@@ -1555,7 +1562,8 @@ thread_db_find_new_threads_2 (thread_inf
   struct thread_db_info *info;
   int i, loop;
 
-  info = get_thread_db_info (stopped->ptid.pid ());
+  info = get_thread_db_info (stopped->inf->process_target (),
+			     stopped->ptid.pid ());
 
   /* Access an lwp we know is stopped.  */
   info->proc_handle.thread = stopped;
@@ -1598,16 +1606,14 @@ thread_db_target::update_thread_list ()
 
   for (inferior *inf : all_inferiors ())
     {
-      struct thread_info *thread;
-
       if (inf->pid == 0)
 	continue;
 
-      info = get_thread_db_info (inf->pid);
+      info = get_thread_db_info (inf->process_target (), inf->pid);
       if (info == NULL)
 	continue;
 
-      thread = any_live_thread_of_inferior (inf);
+      thread_info *thread = any_live_thread_of_inferior (inf);
       if (thread == NULL || thread->executing)
 	continue;
 
@@ -1622,7 +1628,7 @@ thread_db_target::update_thread_list ()
 	 stop.  That uses thread_db entry points that do not walk
 	 libpthread's thread list, so should be safe, as well as more
 	 efficient.  */
-      if (target_has_execution_1 (thread->ptid))
+      if (thread->inf->has_execution ())
 	continue;
 
       thread_db_find_new_threads_1 (thread);
@@ -1635,7 +1641,7 @@ thread_db_target::update_thread_list ()
 std::string
 thread_db_target::pid_to_str (ptid_t ptid)
 {
-  struct thread_info *thread_info = find_thread_ptid (ptid);
+  thread_info *thread_info = find_thread_ptid (current_inferior (), ptid);
 
   if (thread_info != NULL && thread_info->priv != NULL)
     {
@@ -1728,9 +1734,10 @@ thread_db_target::get_thread_local_addre
 					    CORE_ADDR offset)
 {
   struct thread_info *thread_info;
-
+  process_stratum_target *beneath
+    = as_process_stratum_target (this->beneath ());
   /* Find the matching thread.  */
-  thread_info = find_thread_ptid (ptid);
+  thread_info = find_thread_ptid (beneath, ptid);
 
   /* We may not have discovered the thread yet.  */
   if (thread_info != NULL && thread_info->priv == NULL)
@@ -1740,7 +1747,7 @@ thread_db_target::get_thread_local_addre
     {
       td_err_e err;
       psaddr_t address;
-      thread_db_info *info = get_thread_db_info (ptid.pid ());
+      thread_db_info *info = get_thread_db_info (beneath, ptid.pid ());
       thread_db_thread_info *priv = get_thread_db_thread_info (thread_info);
 
       /* Finally, get the address of the variable.  */
@@ -1799,7 +1806,7 @@ thread_db_target::get_thread_local_addre
 	      : (CORE_ADDR) (uintptr_t) address);
     }
 
-  return beneath ()->get_thread_local_address (ptid, lm, offset);
+  return beneath->get_thread_local_address (ptid, lm, offset);
 }
 
 /* Implement the to_get_ada_task_ptid target method for this target.  */
@@ -1814,12 +1821,13 @@ thread_db_target::get_ada_task_ptid (lon
 void
 thread_db_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
 {
-  struct thread_db_info *info;
+  process_stratum_target *beneath
+    = as_process_stratum_target (this->beneath ());
 
-  if (ptid == minus_one_ptid)
-    info = get_thread_db_info (inferior_ptid.pid ());
-  else
-    info = get_thread_db_info (ptid.pid ());
+  thread_db_info *info
+    = get_thread_db_info (beneath, (ptid == minus_one_ptid
+				    ? inferior_ptid.pid ()
+				    : ptid.pid ()));
 
   /* This workaround is only needed for child fork lwps stopped in a
      PTRACE_O_TRACEFORK event.  When the inferior is resumed, the
@@ -1827,7 +1835,7 @@ thread_db_target::resume (ptid_t ptid, i
   if (info)
     info->need_stale_parent_threads_check = 0;
 
-  beneath ()->resume (ptid, step, signo);
+  beneath->resume (ptid, step, signo);
 }
 
 /* std::sort helper function for info_auto_load_libthread_db, sort the
@@ -1953,15 +1961,17 @@ maintenance_check_libthread_db (const ch
   if (inferior_pid == 0)
     error (_("No inferior running"));
 
-  info = get_thread_db_info (inferior_pid);
+  info = get_thread_db_info (current_inferior ()->process_target (),
+			     inferior_pid);
   if (info == NULL)
     error (_("No libthread_db loaded"));
 
   check_thread_db (info, true);
 }
 
+void _initialize_thread_db ();
 void
-_initialize_thread_db (void)
+_initialize_thread_db ()
 {
   /* Defer loading of libthread_db.so until inferior is running.
      This allows gdb to load correct libthread_db for a given
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/lm32-tdep.c ./gdb/lm32-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/lm32-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/lm32-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Target-dependent code for Lattice Mico32 processor, for GDB.
    Contributed by Jon Beniston <jon@beniston.com>
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -81,7 +81,7 @@ lm32_register_reggroup_p (struct gdbarch
     return ((regnum >= SIM_LM32_R0_REGNUM) && (regnum <= SIM_LM32_RA_REGNUM))
       || (regnum == SIM_LM32_PC_REGNUM);
   else if (group == system_reggroup)
-    return ((regnum >= SIM_LM32_EA_REGNUM) && (regnum <= SIM_LM32_BA_REGNUM))
+    return ((regnum >= SIM_LM32_BA_REGNUM) && (regnum <= SIM_LM32_EA_REGNUM))
       || ((regnum >= SIM_LM32_EID_REGNUM) && (regnum <= SIM_LM32_IP_REGNUM));
   return default_register_reggroup_p (gdbarch, regnum, group);
 }
@@ -258,7 +258,7 @@ lm32_push_dummy_call (struct gdbarch *gd
       ULONGEST val;
 
       /* Promote small integer types to int.  */
-      switch (TYPE_CODE (arg_type))
+      switch (arg_type->code ())
 	{
 	case TYPE_CODE_INT:
 	case TYPE_CODE_BOOL:
@@ -309,15 +309,15 @@ lm32_extract_return_value (struct type *
   ULONGEST l;
   CORE_ADDR return_buffer;
 
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-      && TYPE_CODE (type) != TYPE_CODE_UNION
-      && TYPE_CODE (type) != TYPE_CODE_ARRAY && TYPE_LENGTH (type) <= 4)
+  if (type->code () != TYPE_CODE_STRUCT
+      && type->code () != TYPE_CODE_UNION
+      && type->code () != TYPE_CODE_ARRAY && TYPE_LENGTH (type) <= 4)
     {
       /* Return value is returned in a single register.  */
       regcache_cooked_read_unsigned (regcache, SIM_LM32_R1_REGNUM, &l);
       store_unsigned_integer (valbuf, TYPE_LENGTH (type), byte_order, l);
     }
-  else if ((TYPE_CODE (type) == TYPE_CODE_INT) && (TYPE_LENGTH (type) == 8))
+  else if ((type->code () == TYPE_CODE_INT) && (TYPE_LENGTH (type) == 8))
     {
       /* 64-bit values are returned in a register pair.  */
       regcache_cooked_read_unsigned (regcache, SIM_LM32_R1_REGNUM, &l);
@@ -368,7 +368,7 @@ lm32_return_value (struct gdbarch *gdbar
 		   struct type *valtype, struct regcache *regcache,
 		   gdb_byte *readbuf, const gdb_byte *writebuf)
 {
-  enum type_code code = TYPE_CODE (valtype);
+  enum type_code code = valtype->code ();
 
   if (code == TYPE_CODE_STRUCT
       || code == TYPE_CODE_UNION
@@ -549,8 +549,9 @@ lm32_gdbarch_init (struct gdbarch_info i
   return gdbarch;
 }
 
+void _initialize_lm32_tdep ();
 void
-_initialize_lm32_tdep (void)
+_initialize_lm32_tdep ()
 {
   register_gdbarch_init (bfd_arch_lm32, lm32_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/location.c ./gdb/location.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/location.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/location.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Data structures and API for event locations in GDB.
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/location.h ./gdb/location.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/location.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/location.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Data structures and API for event locations in GDB.
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-exp.c ./gdb/m2-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-exp.c	2020-03-07 02:11:13.000000000 +0000
+++ ./gdb/m2-exp.c	2021-05-21 02:00:06.000000000 +0000
@@ -1,21 +1,20 @@
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* Bison implementation for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   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/>.  */
 
@@ -28,13 +27,17 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -46,7 +49,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,14 +63,10 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
-
 
 
-/* Copy the first part of user declarations.  */
 
-/* Line 189 of yacc.c  */
+/* First part of user prologue.  */
 #line 38 "m2-exp.y"
 
 
@@ -107,85 +106,101 @@ static int parse_number (int);
 static int number_sign = 1;
 
 
+#line 110 "m2-exp.c.tmp"
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTRPTR nullptr
+#   else
+#    define YY_NULLPTRPTR 0
+#   endif
+#  else
+#   define YY_NULLPTRPTR ((void*)0)
+#  endif
+# endif
 
-/* Line 189 of yacc.c  */
-#line 113 "m2-exp.c.tmp"
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+#if YYDEBUG
+extern int yydebug;
 #endif
 
-
-/* Tokens.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     INT = 258,
-     HEX = 259,
-     ERROR = 260,
-     UINT = 261,
-     M2_TRUE = 262,
-     M2_FALSE = 263,
-     CHAR = 264,
-     FLOAT = 265,
-     STRING = 266,
-     NAME = 267,
-     BLOCKNAME = 268,
-     IDENT = 269,
-     VARNAME = 270,
-     TYPENAME = 271,
-     SIZE = 272,
-     CAP = 273,
-     ORD = 274,
-     HIGH = 275,
-     ABS = 276,
-     MIN_FUNC = 277,
-     MAX_FUNC = 278,
-     FLOAT_FUNC = 279,
-     VAL = 280,
-     CHR = 281,
-     ODD = 282,
-     TRUNC = 283,
-     TSIZE = 284,
-     INC = 285,
-     DEC = 286,
-     INCL = 287,
-     EXCL = 288,
-     COLONCOLON = 289,
-     DOLLAR_VARIABLE = 290,
-     ABOVE_COMMA = 291,
-     ASSIGN = 292,
-     IN = 293,
-     NOTEQUAL = 294,
-     GEQ = 295,
-     LEQ = 296,
-     OROR = 297,
-     LOGICAL_AND = 298,
-     MOD = 299,
-     DIV = 300,
-     UNARY = 301,
-     DOT = 302,
-     NOT = 303,
-     QID = 304
-   };
-#endif
-/* Tokens.  */
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    INT = 258,                     /* INT  */
+    HEX = 259,                     /* HEX  */
+    ERROR = 260,                   /* ERROR  */
+    UINT = 261,                    /* UINT  */
+    M2_TRUE = 262,                 /* M2_TRUE  */
+    M2_FALSE = 263,                /* M2_FALSE  */
+    CHAR = 264,                    /* CHAR  */
+    FLOAT = 265,                   /* FLOAT  */
+    STRING = 266,                  /* STRING  */
+    NAME = 267,                    /* NAME  */
+    BLOCKNAME = 268,               /* BLOCKNAME  */
+    IDENT = 269,                   /* IDENT  */
+    VARNAME = 270,                 /* VARNAME  */
+    TYPENAME = 271,                /* TYPENAME  */
+    SIZE = 272,                    /* SIZE  */
+    CAP = 273,                     /* CAP  */
+    ORD = 274,                     /* ORD  */
+    HIGH = 275,                    /* HIGH  */
+    ABS = 276,                     /* ABS  */
+    MIN_FUNC = 277,                /* MIN_FUNC  */
+    MAX_FUNC = 278,                /* MAX_FUNC  */
+    FLOAT_FUNC = 279,              /* FLOAT_FUNC  */
+    VAL = 280,                     /* VAL  */
+    CHR = 281,                     /* CHR  */
+    ODD = 282,                     /* ODD  */
+    TRUNC = 283,                   /* TRUNC  */
+    TSIZE = 284,                   /* TSIZE  */
+    INC = 285,                     /* INC  */
+    DEC = 286,                     /* DEC  */
+    INCL = 287,                    /* INCL  */
+    EXCL = 288,                    /* EXCL  */
+    COLONCOLON = 289,              /* COLONCOLON  */
+    DOLLAR_VARIABLE = 290,         /* DOLLAR_VARIABLE  */
+    ABOVE_COMMA = 291,             /* ABOVE_COMMA  */
+    ASSIGN = 292,                  /* ASSIGN  */
+    LEQ = 293,                     /* LEQ  */
+    GEQ = 294,                     /* GEQ  */
+    NOTEQUAL = 295,                /* NOTEQUAL  */
+    IN = 296,                      /* IN  */
+    OROR = 297,                    /* OROR  */
+    LOGICAL_AND = 298,             /* LOGICAL_AND  */
+    DIV = 299,                     /* DIV  */
+    MOD = 300,                     /* MOD  */
+    UNARY = 301,                   /* UNARY  */
+    DOT = 302,                     /* DOT  */
+    NOT = 303,                     /* NOT  */
+    QID = 304                      /* QID  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
+#endif
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define INT 258
 #define HEX 259
 #define ERROR 260
@@ -221,27 +236,23 @@ static int number_sign = 1;
 #define DOLLAR_VARIABLE 290
 #define ABOVE_COMMA 291
 #define ASSIGN 292
-#define IN 293
-#define NOTEQUAL 294
-#define GEQ 295
-#define LEQ 296
+#define LEQ 293
+#define GEQ 294
+#define NOTEQUAL 295
+#define IN 296
 #define OROR 297
 #define LOGICAL_AND 298
-#define MOD 299
-#define DIV 300
+#define DIV 299
+#define MOD 300
 #define UNARY 301
 #define DOT 302
 #define NOT 303
 #define QID 304
 
-
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
 #line 82 "m2-exp.y"
 
     LONGEST lval;
@@ -259,51 +270,187 @@ typedef union YYSTYPE
     int *ivec;
   
 
+#line 274 "m2-exp.c.tmp"
 
-/* Line 214 of yacc.c  */
-#line 265 "m2-exp.c.tmp"
-} YYSTYPE;
+};
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
+extern YYSTYPE yylval;
+
+int yyparse (void);
+
+
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_INT = 3,                        /* INT  */
+  YYSYMBOL_HEX = 4,                        /* HEX  */
+  YYSYMBOL_ERROR = 5,                      /* ERROR  */
+  YYSYMBOL_UINT = 6,                       /* UINT  */
+  YYSYMBOL_M2_TRUE = 7,                    /* M2_TRUE  */
+  YYSYMBOL_M2_FALSE = 8,                   /* M2_FALSE  */
+  YYSYMBOL_CHAR = 9,                       /* CHAR  */
+  YYSYMBOL_FLOAT = 10,                     /* FLOAT  */
+  YYSYMBOL_STRING = 11,                    /* STRING  */
+  YYSYMBOL_NAME = 12,                      /* NAME  */
+  YYSYMBOL_BLOCKNAME = 13,                 /* BLOCKNAME  */
+  YYSYMBOL_IDENT = 14,                     /* IDENT  */
+  YYSYMBOL_VARNAME = 15,                   /* VARNAME  */
+  YYSYMBOL_TYPENAME = 16,                  /* TYPENAME  */
+  YYSYMBOL_SIZE = 17,                      /* SIZE  */
+  YYSYMBOL_CAP = 18,                       /* CAP  */
+  YYSYMBOL_ORD = 19,                       /* ORD  */
+  YYSYMBOL_HIGH = 20,                      /* HIGH  */
+  YYSYMBOL_ABS = 21,                       /* ABS  */
+  YYSYMBOL_MIN_FUNC = 22,                  /* MIN_FUNC  */
+  YYSYMBOL_MAX_FUNC = 23,                  /* MAX_FUNC  */
+  YYSYMBOL_FLOAT_FUNC = 24,                /* FLOAT_FUNC  */
+  YYSYMBOL_VAL = 25,                       /* VAL  */
+  YYSYMBOL_CHR = 26,                       /* CHR  */
+  YYSYMBOL_ODD = 27,                       /* ODD  */
+  YYSYMBOL_TRUNC = 28,                     /* TRUNC  */
+  YYSYMBOL_TSIZE = 29,                     /* TSIZE  */
+  YYSYMBOL_INC = 30,                       /* INC  */
+  YYSYMBOL_DEC = 31,                       /* DEC  */
+  YYSYMBOL_INCL = 32,                      /* INCL  */
+  YYSYMBOL_EXCL = 33,                      /* EXCL  */
+  YYSYMBOL_COLONCOLON = 34,                /* COLONCOLON  */
+  YYSYMBOL_DOLLAR_VARIABLE = 35,           /* DOLLAR_VARIABLE  */
+  YYSYMBOL_36_ = 36,                       /* ','  */
+  YYSYMBOL_ABOVE_COMMA = 37,               /* ABOVE_COMMA  */
+  YYSYMBOL_ASSIGN = 38,                    /* ASSIGN  */
+  YYSYMBOL_39_ = 39,                       /* '<'  */
+  YYSYMBOL_40_ = 40,                       /* '>'  */
+  YYSYMBOL_LEQ = 41,                       /* LEQ  */
+  YYSYMBOL_GEQ = 42,                       /* GEQ  */
+  YYSYMBOL_43_ = 43,                       /* '='  */
+  YYSYMBOL_NOTEQUAL = 44,                  /* NOTEQUAL  */
+  YYSYMBOL_45_ = 45,                       /* '#'  */
+  YYSYMBOL_IN = 46,                        /* IN  */
+  YYSYMBOL_OROR = 47,                      /* OROR  */
+  YYSYMBOL_LOGICAL_AND = 48,               /* LOGICAL_AND  */
+  YYSYMBOL_49_ = 49,                       /* '&'  */
+  YYSYMBOL_50_ = 50,                       /* '@'  */
+  YYSYMBOL_51_ = 51,                       /* '+'  */
+  YYSYMBOL_52_ = 52,                       /* '-'  */
+  YYSYMBOL_53_ = 53,                       /* '*'  */
+  YYSYMBOL_54_ = 54,                       /* '/'  */
+  YYSYMBOL_DIV = 55,                       /* DIV  */
+  YYSYMBOL_MOD = 56,                       /* MOD  */
+  YYSYMBOL_UNARY = 57,                     /* UNARY  */
+  YYSYMBOL_58_ = 58,                       /* '^'  */
+  YYSYMBOL_DOT = 59,                       /* DOT  */
+  YYSYMBOL_60_ = 60,                       /* '['  */
+  YYSYMBOL_61_ = 61,                       /* '('  */
+  YYSYMBOL_NOT = 62,                       /* NOT  */
+  YYSYMBOL_63_ = 63,                       /* '~'  */
+  YYSYMBOL_QID = 64,                       /* QID  */
+  YYSYMBOL_65_ = 65,                       /* ')'  */
+  YYSYMBOL_66_ = 66,                       /* '{'  */
+  YYSYMBOL_67_ = 67,                       /* '}'  */
+  YYSYMBOL_68_ = 68,                       /* ']'  */
+  YYSYMBOL_YYACCEPT = 69,                  /* $accept  */
+  YYSYMBOL_start = 70,                     /* start  */
+  YYSYMBOL_type_exp = 71,                  /* type_exp  */
+  YYSYMBOL_exp = 72,                       /* exp  */
+  YYSYMBOL_73_1 = 73,                      /* $@1  */
+  YYSYMBOL_not_exp = 74,                   /* not_exp  */
+  YYSYMBOL_set = 75,                       /* set  */
+  YYSYMBOL_76_2 = 76,                      /* $@2  */
+  YYSYMBOL_77_3 = 77,                      /* $@3  */
+  YYSYMBOL_arglist = 78,                   /* arglist  */
+  YYSYMBOL_non_empty_arglist = 79,         /* non_empty_arglist  */
+  YYSYMBOL_block = 80,                     /* block  */
+  YYSYMBOL_fblock = 81,                    /* fblock  */
+  YYSYMBOL_variable = 82,                  /* variable  */
+  YYSYMBOL_type = 83                       /* type  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
 
 
-/* Line 264 of yacc.c  */
-#line 277 "m2-exp.c.tmp"
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef short int yytype_int16;
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -311,55 +458,100 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_uint8 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
 #else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if !defined yyoverflow
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
 
@@ -375,11 +567,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -387,8 +579,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -402,125 +594,130 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined xmalloc) \
-	     && (defined YYFREE || defined xfree)))
+             && (defined YYFREE || defined xfree)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC xmalloc
-#   if ! defined xmalloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xmalloc && ! defined EXIT_SUCCESS
 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE xfree
-#   if ! defined xfree && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xfree && ! defined EXIT_SUCCESS
 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYPTRDIFF_T yynewbytes;                                         \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
+      }                                                                 \
+    while (0)
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYPTRDIFF_T yyi;                      \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  69
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   923
+#define YYLAST   890
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  69
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  15
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  82
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  187
+#define YYNRULES  81
+/* YYNSTATES -- Number of states.  */
+#define YYNSTATES  185
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
 #define YYMAXUTOK   304
 
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex.  */
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,    42,     2,     2,    48,     2,
-      60,    65,    53,    51,    36,    52,     2,    54,     2,     2,
+       2,     2,     2,     2,     2,    45,     2,     2,    49,     2,
+      61,    65,    53,    51,    36,    52,     2,    54,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      39,    41,    40,     2,    50,     2,     2,     2,     2,     2,
+      39,    43,    40,     2,    50,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    59,     2,    68,    58,     2,     2,     2,     2,     2,
+       2,    60,     2,    68,    58,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    66,     2,    67,    62,     2,     2,     2,
+       2,     2,     2,    66,     2,    67,    63,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -537,518 +734,426 @@ static const yytype_uint8 yytranslate[]
        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,    37,    38,    43,    44,    45,    46,    47,    49,    55,
-      56,    57,    61,    63,    64
+      35,    37,    38,    41,    42,    44,    46,    47,    48,    55,
+      56,    57,    59,    62,    64
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     5,     7,     9,    12,    13,    17,    20,
-      23,    25,    27,    32,    37,    42,    47,    52,    57,    62,
-      69,    74,    79,    84,    89,    92,    97,   104,   109,   116,
-     120,   122,   126,   133,   140,   144,   149,   150,   156,   161,
-     162,   168,   169,   171,   175,   177,   181,   186,   191,   195,
-     199,   203,   207,   211,   215,   219,   223,   227,   231,   235,
-     239,   243,   247,   251,   255,   259,   263,   265,   267,   269,
-     271,   273,   275,   277,   282,   284,   286,   288,   292,   294,
-     296,   300,   302
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      70,     0,    -1,    72,    -1,    71,    -1,    83,    -1,    72,
-      58,    -1,    -1,    52,    73,    72,    -1,    51,    72,    -1,
-      74,    72,    -1,    63,    -1,    62,    -1,    18,    60,    72,
-      65,    -1,    19,    60,    72,    65,    -1,    21,    60,    72,
-      65,    -1,    20,    60,    72,    65,    -1,    22,    60,    83,
-      65,    -1,    23,    60,    83,    65,    -1,    24,    60,    72,
-      65,    -1,    25,    60,    83,    36,    72,    65,    -1,    26,
-      60,    72,    65,    -1,    27,    60,    72,    65,    -1,    28,
-      60,    72,    65,    -1,    29,    60,    72,    65,    -1,    17,
-      72,    -1,    30,    60,    72,    65,    -1,    30,    60,    72,
-      36,    72,    65,    -1,    31,    60,    72,    65,    -1,    31,
-      60,    72,    36,    72,    65,    -1,    72,    61,    12,    -1,
-      75,    -1,    72,    43,    75,    -1,    32,    60,    72,    36,
-      72,    65,    -1,    33,    60,    72,    36,    72,    65,    -1,
-      66,    78,    67,    -1,    83,    66,    78,    67,    -1,    -1,
-      72,    59,    76,    79,    68,    -1,    72,    59,    72,    68,
-      -1,    -1,    72,    60,    77,    78,    65,    -1,    -1,    72,
-      -1,    78,    36,    72,    -1,    72,    -1,    79,    36,    72,
-      -1,    66,    83,    67,    72,    -1,    83,    60,    72,    65,
-      -1,    60,    72,    65,    -1,    72,    50,    72,    -1,    72,
-      53,    72,    -1,    72,    54,    72,    -1,    72,    56,    72,
-      -1,    72,    55,    72,    -1,    72,    51,    72,    -1,    72,
-      52,    72,    -1,    72,    41,    72,    -1,    72,    44,    72,
-      -1,    72,    42,    72,    -1,    72,    46,    72,    -1,    72,
-      45,    72,    -1,    72,    39,    72,    -1,    72,    40,    72,
-      -1,    72,    49,    72,    -1,    72,    47,    72,    -1,    72,
-      38,    72,    -1,     7,    -1,     8,    -1,     3,    -1,     6,
-      -1,     9,    -1,    10,    -1,    82,    -1,    17,    60,    83,
-      65,    -1,    11,    -1,    81,    -1,    13,    -1,    80,    34,
-      13,    -1,    81,    -1,    35,    -1,    80,    34,    12,    -1,
-      12,    -1,    16,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+static const yytype_int16 yyrline[] =
 {
        0,   151,   151,   152,   155,   164,   169,   168,   175,   179,
      183,   184,   187,   191,   195,   199,   203,   209,   215,   219,
      225,   229,   233,   237,   241,   246,   250,   257,   261,   268,
-     274,   277,   281,   285,   289,   291,   301,   297,   309,   316,
-     313,   324,   327,   331,   336,   341,   346,   352,   358,   366,
-     370,   374,   378,   382,   386,   390,   394,   398,   400,   404,
-     408,   412,   416,   420,   424,   428,   435,   441,   447,   455,
-     466,   476,   485,   488,   497,   504,   508,   518,   530,   538,
-     542,   560,   599
+     274,   277,   281,   285,   289,   291,   301,   297,   315,   312,
+     323,   326,   330,   335,   340,   345,   351,   357,   365,   369,
+     373,   377,   381,   385,   389,   393,   397,   399,   403,   407,
+     411,   415,   419,   423,   427,   434,   440,   446,   454,   465,
+     475,   484,   487,   496,   503,   507,   517,   529,   537,   541,
+     559,   598
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "INT", "HEX", "ERROR", "UINT", "M2_TRUE",
-  "M2_FALSE", "CHAR", "FLOAT", "STRING", "NAME", "BLOCKNAME", "IDENT",
-  "VARNAME", "TYPENAME", "SIZE", "CAP", "ORD", "HIGH", "ABS", "MIN_FUNC",
-  "MAX_FUNC", "FLOAT_FUNC", "VAL", "CHR", "ODD", "TRUNC", "TSIZE", "INC",
-  "DEC", "INCL", "EXCL", "COLONCOLON", "DOLLAR_VARIABLE", "','",
-  "ABOVE_COMMA", "ASSIGN", "'<'", "'>'", "'='", "'#'", "IN", "NOTEQUAL",
-  "GEQ", "LEQ", "OROR", "'&'", "LOGICAL_AND", "'@'", "'+'", "'-'", "'*'",
-  "'/'", "MOD", "DIV", "UNARY", "'^'", "'['", "'('", "DOT", "'~'", "NOT",
-  "QID", "')'", "'{'", "'}'", "']'", "$accept", "start", "type_exp", "exp",
-  "$@1", "not_exp", "set", "$@2", "$@3", "arglist", "non_empty_arglist",
-  "block", "fblock", "variable", "type", 0
+  "\"end of file\"", "error", "\"invalid token\"", "INT", "HEX", "ERROR",
+  "UINT", "M2_TRUE", "M2_FALSE", "CHAR", "FLOAT", "STRING", "NAME",
+  "BLOCKNAME", "IDENT", "VARNAME", "TYPENAME", "SIZE", "CAP", "ORD",
+  "HIGH", "ABS", "MIN_FUNC", "MAX_FUNC", "FLOAT_FUNC", "VAL", "CHR", "ODD",
+  "TRUNC", "TSIZE", "INC", "DEC", "INCL", "EXCL", "COLONCOLON",
+  "DOLLAR_VARIABLE", "','", "ABOVE_COMMA", "ASSIGN", "'<'", "'>'", "LEQ",
+  "GEQ", "'='", "NOTEQUAL", "'#'", "IN", "OROR", "LOGICAL_AND", "'&'",
+  "'@'", "'+'", "'-'", "'*'", "'/'", "DIV", "MOD", "UNARY", "'^'", "DOT",
+  "'['", "'('", "NOT", "'~'", "QID", "')'", "'{'", "'}'", "']'", "$accept",
+  "start", "type_exp", "exp", "$@1", "not_exp", "set", "$@2", "$@3",
+  "arglist", "non_empty_arglist", "block", "fblock", "variable", "type", YY_NULLPTRPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+#ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,    44,   291,   292,    60,
-      62,    61,    35,   293,   294,   295,   296,   297,    38,   298,
-      64,    43,    45,    42,    47,   299,   300,   301,    94,    91,
-      40,   302,   126,   303,   304,    41,   123,   125,    93
+      62,   293,   294,    61,   295,    35,   296,   297,   298,    38,
+      64,    43,    45,    42,    47,   299,   300,   301,    94,   302,
+      91,    40,   303,   126,   304,    41,   123,   125,    93
 };
-# endif
+#endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    69,    70,    70,    71,    72,    73,    72,    72,    72,
-      74,    74,    72,    72,    72,    72,    72,    72,    72,    72,
-      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-      72,    72,    72,    72,    75,    75,    76,    72,    72,    77,
-      72,    78,    78,    78,    79,    79,    72,    72,    72,    72,
-      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-      72,    72,    72,    72,    72,    80,    81,    81,    82,    82,
-      82,    82,    83
-};
+#define YYPACT_NINF (-89)
+
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
+
+#define YYTABLE_NINF (-75)
+
+#define yytable_value_is_error(Yyn) \
+  ((Yyn) == YYTABLE_NINF)
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
 {
-       0,     2,     1,     1,     1,     2,     0,     3,     2,     2,
-       1,     1,     4,     4,     4,     4,     4,     4,     4,     6,
-       4,     4,     4,     4,     2,     4,     6,     4,     6,     3,
-       1,     3,     6,     6,     3,     4,     0,     5,     4,     0,
-       5,     0,     1,     3,     1,     3,     4,     4,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     1,     1,     1,     1,
-       1,     1,     1,     4,     1,     1,     1,     3,     1,     1,
-       3,     1,     1
+     161,   -89,   -89,   -89,   -89,   -89,   -89,   -89,   -89,   -89,
+     -89,   222,   -55,   -53,   -28,   -22,   -18,     2,     8,    17,
+      28,    29,    30,    31,    32,    34,    35,    36,   -89,   161,
+     -89,   161,   -89,   -89,   161,    46,   -89,   805,   161,   -89,
+      -6,    -4,   -89,   -21,   161,     7,   -21,   161,   161,   161,
+     161,    83,    83,   161,    83,   161,   161,   161,   161,   161,
+     161,   161,   161,     7,   161,   307,   805,   -32,   -42,   -89,
+     161,   161,   161,   161,   161,   161,   161,   161,   -15,   161,
+     161,   161,   161,   161,   161,   161,   161,   161,   -89,    88,
+     -89,   -89,     7,    14,   161,   161,   -24,   335,   363,   391,
+     419,    37,    38,   447,    65,   475,   503,   531,   559,   251,
+     279,   755,   781,     7,   -89,   161,   -89,   161,   829,   -38,
+     -38,   -38,   -38,   -38,   -38,   -38,   161,   -89,    41,    68,
+      90,   146,   205,   205,     7,     7,     7,     7,   -89,   161,
+     161,   -89,   -89,   587,   -31,   -89,   -89,   -89,   -89,   -89,
+     -89,   -89,   -89,   161,   -89,   -89,   -89,   -89,   161,   -89,
+     161,   -89,   161,   161,   805,     7,   805,   -34,   -33,   -89,
+     -89,   615,   643,   671,   699,   727,   161,   -89,   -89,   -89,
+     -89,   -89,   -89,   -89,   805
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint8 yydefact[] =
-{
-       0,    68,    69,    66,    67,    70,    71,    74,    81,    76,
-      82,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    79,     0,
-       6,     0,    11,    10,    41,     0,     3,     2,     0,    30,
-       0,    78,    72,     4,     0,    24,     0,     0,     0,     0,
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_int8 yydefact[] =
+{
+       0,    67,    68,    65,    66,    69,    70,    73,    80,    75,
+      81,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    78,     0,
+       6,     0,    10,    11,    40,     0,     3,     2,     0,    30,
+       0,    77,    71,     4,     0,    24,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     8,     0,     0,    42,     0,     0,     1,
+       0,     0,     0,     8,     0,     0,    41,     0,     0,     1,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     5,     0,
-      39,     0,     9,     0,     0,    41,     0,     0,     0,     0,
+      36,    38,     9,     0,     0,    40,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     7,    48,     0,    34,     0,    65,    61,
-      62,    56,    58,    41,    31,     0,    57,    60,    59,    64,
-      63,    49,    54,    55,    50,    51,    53,    52,     0,     0,
-      41,    29,    80,    77,     0,     0,    73,    12,    13,    15,
-      14,    16,    17,    18,     0,    20,    21,    22,    23,     0,
-      25,     0,    27,     0,     0,    43,    46,    38,    44,     0,
-       0,    47,    35,     0,     0,     0,     0,     0,     0,    37,
-      40,    19,    26,    28,    32,    33,    45
-};
-
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,    35,    36,    66,    64,    38,    39,   139,   140,    67,
-     169,    40,    41,    42,    46
+       0,     0,     0,     7,    47,     0,    34,     0,    64,    60,
+      61,    58,    59,    55,    56,    57,    40,    31,     0,    63,
+      62,    48,    53,    54,    49,    50,    51,    52,    29,     0,
+      40,    79,    76,     0,     0,    72,    12,    13,    15,    14,
+      16,    17,    18,     0,    20,    21,    22,    23,     0,    25,
+       0,    27,     0,     0,    42,    45,    43,     0,     0,    46,
+      35,     0,     0,     0,     0,     0,     0,    37,    39,    19,
+      26,    28,    32,    33,    44
 };
 
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -89
-static const yytype_int16 yypact[] =
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int8 yypgoto[] =
 {
-     163,   -89,   -89,   -89,   -89,   -89,   -89,   -89,   -89,   -89,
-     -89,   224,   -54,   -35,   -30,   -20,   -19,   -14,     3,     9,
-      15,    30,    31,    32,    33,    35,    36,    37,   -89,   163,
-     -89,   163,   -89,   -89,   163,    28,   -89,   838,   163,   -89,
-      11,    65,   -89,   -27,   163,     7,   -27,   163,   163,   163,
-     163,    84,    84,   163,    84,   163,   163,   163,   163,   163,
-     163,   163,   163,     7,   163,   340,   838,   -32,   -40,   -89,
-     163,   163,   163,   163,   163,   -15,   163,   163,   163,   163,
-     163,   163,   163,   163,   163,   163,   163,   163,   -89,   163,
-     -89,    89,     7,    -4,   163,   163,   -23,   368,   396,   424,
-     452,    38,    39,   480,    66,   508,   536,   564,   592,   284,
-     312,   788,   814,     7,   -89,   163,   -89,   163,   862,   -37,
-     -37,   -37,   -37,   163,   -89,    41,   -37,   -37,   -37,    72,
-      90,   148,   207,   207,     7,     7,     7,     7,   253,   163,
-     163,   -89,   -89,   -89,   620,   -31,   -89,   -89,   -89,   -89,
-     -89,   -89,   -89,   -89,   163,   -89,   -89,   -89,   -89,   163,
-     -89,   163,   -89,   163,   163,   838,     7,   -89,   838,   -34,
-     -33,   -89,   -89,   648,   676,   704,   732,   760,   163,   -89,
-     -89,   -89,   -89,   -89,   -89,   -89,   838
+     -89,   -89,   -89,     0,   -89,   -89,    26,   -89,   -89,   -88,
+     -89,   -89,   -89,   -89,    54
 };
 
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int8 yypgoto[] =
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
 {
-     -89,   -89,   -89,     0,   -89,   -89,    34,   -89,   -89,   -88,
-     -89,   -89,   -89,   -89,    54
+      -1,    35,    36,    66,    64,    38,    39,   139,   140,    67,
+     167,    40,    41,    42,    46
 };
 
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -76
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      37,    10,   178,   115,   115,   115,    47,   145,   142,   143,
-      79,    45,    80,    81,    82,    83,    84,    85,    86,    87,
-      94,    88,    89,    90,    91,    48,    95,   117,    69,    63,
-      49,    65,   180,    94,   179,   116,   172,    94,    92,    95,
-      50,    51,   146,    95,    65,    93,    52,    97,    98,    99,
-     100,   123,   170,   103,    43,   105,   106,   107,   108,   109,
-     110,   111,   112,    53,   113,    88,    89,    90,    91,    54,
-     118,   119,   120,   121,   122,    55,   126,   127,   128,   129,
-     130,   131,   132,   133,   134,   135,   136,   137,    68,   138,
-      56,    57,    58,    59,   144,    60,    61,    62,    96,   -75,
-      10,   141,   154,   151,   152,   101,   102,    95,   104,   124,
-       0,     0,     0,     0,     0,   165,     0,   166,     0,     0,
-       0,    80,    81,    82,    83,    84,    85,    86,    87,   125,
-      88,    89,    90,    91,     0,     0,     0,     0,     0,   168,
-      81,    82,    83,    84,    85,    86,    87,     0,    88,    89,
-      90,    91,     0,     0,   173,     0,     0,     0,     0,   174,
-       0,   175,     0,   176,   177,     0,     1,     0,     0,     2,
-       3,     4,     5,     6,     7,     8,     9,     0,   186,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,     0,    28,    82,
+      37,    10,   176,   115,   115,   115,    47,   144,    48,    79,
+      80,    45,    81,    82,    83,    84,    85,    86,    87,    94,
+      88,    89,    90,    91,    95,   117,   141,   142,    93,    63,
+     -74,    65,   178,    49,   177,   116,   170,    94,    92,    50,
+      94,   145,    95,    51,    65,    95,    69,    97,    98,    99,
+     100,   126,   168,   103,    43,   105,   106,   107,   108,   109,
+     110,   111,   112,    52,   113,    88,    89,    90,    91,    53,
+     118,   119,   120,   121,   122,   123,   124,   125,    54,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,    68,    55,
+      56,    57,    58,    59,   143,    60,    61,    62,    96,    10,
+     138,   153,   150,   151,   127,   101,   102,    95,   104,     0,
+       0,     0,     0,     0,     0,   164,    80,   165,    81,    82,
       83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
-       0,     0,     0,     0,    29,    30,     0,     0,     0,     0,
-       0,     0,     0,    31,     0,    32,    33,     1,     0,    34,
-       2,     3,     4,     5,     6,     7,     8,     9,     0,     0,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,     0,    28,
-      84,    85,    86,    87,     0,    88,    89,    90,    91,     0,
-       0,     0,     0,     0,     0,    29,    30,     0,     0,     0,
-       0,     0,     0,     0,    44,     0,    32,    33,     0,     0,
-      34,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,     0,    80,    81,    82,    83,    84,    85,    86,    87,
-       0,    88,    89,    90,    91,     0,     0,     0,     0,     0,
-     159,   167,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,     0,    80,    81,    82,    83,    84,    85,    86,
-      87,     0,    88,    89,    90,    91,     0,     0,   161,   160,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-       0,    80,    81,    82,    83,    84,    85,    86,    87,     0,
-      88,    89,    90,    91,     0,     0,     0,   162,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,     0,    80,
-      81,    82,    83,    84,    85,    86,    87,     0,    88,    89,
-      90,    91,     0,     0,     0,   114,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,     0,    80,    81,    82,
-      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
-       0,     0,     0,   147,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,     0,    80,    81,    82,    83,    84,
-      85,    86,    87,     0,    88,    89,    90,    91,     0,     0,
-       0,   148,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,     0,    80,    81,    82,    83,    84,    85,    86,
-      87,     0,    88,    89,    90,    91,     0,     0,     0,   149,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-       0,    80,    81,    82,    83,    84,    85,    86,    87,     0,
-      88,    89,    90,    91,     0,     0,     0,   150,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,     0,    80,
-      81,    82,    83,    84,    85,    86,    87,     0,    88,    89,
-      90,    91,     0,     0,     0,   153,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,     0,    80,    81,    82,
-      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
-       0,     0,     0,   155,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,     0,    80,    81,    82,    83,    84,
-      85,    86,    87,     0,    88,    89,    90,    91,     0,     0,
-       0,   156,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,     0,    80,    81,    82,    83,    84,    85,    86,
-      87,     0,    88,    89,    90,    91,     0,     0,     0,   157,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-       0,    80,    81,    82,    83,    84,    85,    86,    87,     0,
-      88,    89,    90,    91,     0,     0,     0,   158,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,     0,    80,
+       0,     0,   128,     0,     0,     0,     0,     0,     0,   166,
       81,    82,    83,    84,    85,    86,    87,     0,    88,    89,
-      90,    91,     0,     0,     0,   171,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,     0,    80,    81,    82,
-      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
-       0,     0,     0,   181,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,     0,    80,    81,    82,    83,    84,
+      90,    91,     0,   171,     0,     0,     0,     0,   172,     0,
+     173,     0,   174,   175,     1,     0,     0,     2,     3,     4,
+       5,     6,     7,     8,     9,     0,   184,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,     0,    28,    82,    83,    84,
       85,    86,    87,     0,    88,    89,    90,    91,     0,     0,
-       0,   182,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,     0,    80,    81,    82,    83,    84,    85,    86,
-      87,     0,    88,    89,    90,    91,     0,     0,     0,   183,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-       0,    80,    81,    82,    83,    84,    85,    86,    87,     0,
-      88,    89,    90,    91,     0,     0,     0,   184,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,     0,    80,
-      81,    82,    83,    84,    85,    86,    87,     0,    88,    89,
-      90,    91,     0,     0,   163,   185,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,     0,    80,    81,    82,
-      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
-     164,     0,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,     0,    80,    81,    82,    83,    84,    85,    86,
-      87,     0,    88,    89,    90,    91,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,     0,    80,    81,    82,
-      83,    84,    85,    86,    87,     0,    88,    89,    90,    91,
-     -76,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-       0,    80,    81,    82,    83,    84,    85,    86,    87,     0,
-      88,    89,    90,    91
+       0,     0,    29,    30,     0,     0,     0,     0,     0,     0,
+       0,     0,    31,    32,    33,     1,     0,    34,     2,     3,
+       4,     5,     6,     7,     8,     9,     0,     0,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,     0,    28,    84,    85,
+      86,    87,     0,    88,    89,    90,    91,     0,     0,     0,
+       0,     0,     0,    29,    30,     0,     0,     0,     0,     0,
+       0,     0,     0,    44,    32,    33,     0,   158,    34,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+       0,    81,    82,    83,    84,    85,    86,    87,     0,    88,
+      89,    90,    91,     0,     0,   160,   159,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,     0,    81,
+      82,    83,    84,    85,    86,    87,     0,    88,    89,    90,
+      91,     0,     0,     0,   161,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,     0,    81,    82,    83,
+      84,    85,    86,    87,     0,    88,    89,    90,    91,     0,
+       0,     0,   114,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,     0,    81,    82,    83,    84,    85,
+      86,    87,     0,    88,    89,    90,    91,     0,     0,     0,
+     146,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,     0,    81,    82,    83,    84,    85,    86,    87,
+       0,    88,    89,    90,    91,     0,     0,     0,   147,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+       0,    81,    82,    83,    84,    85,    86,    87,     0,    88,
+      89,    90,    91,     0,     0,     0,   148,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,     0,    81,
+      82,    83,    84,    85,    86,    87,     0,    88,    89,    90,
+      91,     0,     0,     0,   149,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,     0,    81,    82,    83,
+      84,    85,    86,    87,     0,    88,    89,    90,    91,     0,
+       0,     0,   152,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,     0,    81,    82,    83,    84,    85,
+      86,    87,     0,    88,    89,    90,    91,     0,     0,     0,
+     154,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,     0,    81,    82,    83,    84,    85,    86,    87,
+       0,    88,    89,    90,    91,     0,     0,     0,   155,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+       0,    81,    82,    83,    84,    85,    86,    87,     0,    88,
+      89,    90,    91,     0,     0,     0,   156,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,     0,    81,
+      82,    83,    84,    85,    86,    87,     0,    88,    89,    90,
+      91,     0,     0,     0,   157,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,     0,    81,    82,    83,
+      84,    85,    86,    87,     0,    88,    89,    90,    91,     0,
+       0,     0,   169,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,     0,    81,    82,    83,    84,    85,
+      86,    87,     0,    88,    89,    90,    91,     0,     0,     0,
+     179,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,     0,    81,    82,    83,    84,    85,    86,    87,
+       0,    88,    89,    90,    91,     0,     0,     0,   180,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+       0,    81,    82,    83,    84,    85,    86,    87,     0,    88,
+      89,    90,    91,     0,     0,     0,   181,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,     0,    81,
+      82,    83,    84,    85,    86,    87,     0,    88,    89,    90,
+      91,     0,     0,     0,   182,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,     0,    81,    82,    83,
+      84,    85,    86,    87,     0,    88,    89,    90,    91,     0,
+       0,   162,   183,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,     0,    81,    82,    83,    84,    85,
+      86,    87,     0,    88,    89,    90,    91,   163,     0,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+       0,    81,    82,    83,    84,    85,    86,    87,     0,    88,
+      89,    90,    91,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,     0,    81,    82,    83,    84,    85,
+      86,    87,     0,    88,    89,    90,    91,   -75,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,     0,    81,
+      82,    83,    84,    85,    86,    87,     0,    88,    89,    90,
+      91
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    16,    36,    36,    36,    36,    60,    95,    12,    13,
-      47,    11,    49,    50,    51,    52,    53,    54,    55,    56,
-      60,    58,    59,    60,    61,    60,    66,    67,     0,    29,
-      60,    31,    65,    60,    68,    67,    67,    60,    38,    66,
-      60,    60,    65,    66,    44,    34,    60,    47,    48,    49,
+       0,    16,    36,    36,    36,    36,    61,    95,    61,    47,
+      48,    11,    50,    51,    52,    53,    54,    55,    56,    61,
+      58,    59,    60,    61,    66,    67,    12,    13,    34,    29,
+      34,    31,    65,    61,    68,    67,    67,    61,    38,    61,
+      61,    65,    66,    61,    44,    66,     0,    47,    48,    49,
       50,    66,   140,    53,     0,    55,    56,    57,    58,    59,
-      60,    61,    62,    60,    64,    58,    59,    60,    61,    60,
-      70,    71,    72,    73,    74,    60,    76,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    34,    89,
-      60,    60,    60,    60,    94,    60,    60,    60,    44,    34,
-      16,    12,    36,    65,    65,    51,    52,    66,    54,    75,
-      -1,    -1,    -1,    -1,    -1,   115,    -1,   117,    -1,    -1,
-      -1,    49,    50,    51,    52,    53,    54,    55,    56,    75,
-      58,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,   139,
-      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
-      60,    61,    -1,    -1,   154,    -1,    -1,    -1,    -1,   159,
-      -1,   161,    -1,   163,   164,    -1,     3,    -1,    -1,     6,
-       7,     8,     9,    10,    11,    12,    13,    -1,   178,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    -1,    35,    51,
+      60,    61,    62,    61,    64,    58,    59,    60,    61,    61,
+      70,    71,    72,    73,    74,    75,    76,    77,    61,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    34,    61,
+      61,    61,    61,    61,    94,    61,    61,    61,    44,    16,
+      12,    36,    65,    65,    78,    51,    52,    66,    54,    -1,
+      -1,    -1,    -1,    -1,    -1,   115,    48,   117,    50,    51,
       52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
-      -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    60,    -1,    62,    63,     3,    -1,    66,
-       6,     7,     8,     9,    10,    11,    12,    13,    -1,    -1,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    -1,    35,
-      53,    54,    55,    56,    -1,    58,    59,    60,    61,    -1,
-      -1,    -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    60,    -1,    62,    63,    -1,    -1,
-      66,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    -1,    49,    50,    51,    52,    53,    54,    55,    56,
-      -1,    58,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,
-      36,    68,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
-      56,    -1,    58,    59,    60,    61,    -1,    -1,    36,    65,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
-      58,    59,    60,    61,    -1,    -1,    -1,    65,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
+      -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,   139,
       50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
-      60,    61,    -1,    -1,    -1,    65,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    -1,    49,    50,    51,
-      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
-      -1,    -1,    -1,    65,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    -1,    49,    50,    51,    52,    53,
+      60,    61,    -1,   153,    -1,    -1,    -1,    -1,   158,    -1,
+     160,    -1,   162,   163,     3,    -1,    -1,     6,     7,     8,
+       9,    10,    11,    12,    13,    -1,   176,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    -1,    35,    51,    52,    53,
       54,    55,    56,    -1,    58,    59,    60,    61,    -1,    -1,
-      -1,    65,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
-      56,    -1,    58,    59,    60,    61,    -1,    -1,    -1,    65,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
-      58,    59,    60,    61,    -1,    -1,    -1,    65,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
-      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
-      60,    61,    -1,    -1,    -1,    65,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    -1,    49,    50,    51,
-      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
-      -1,    -1,    -1,    65,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    -1,    49,    50,    51,    52,    53,
-      54,    55,    56,    -1,    58,    59,    60,    61,    -1,    -1,
-      -1,    65,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
-      56,    -1,    58,    59,    60,    61,    -1,    -1,    -1,    65,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
-      58,    59,    60,    61,    -1,    -1,    -1,    65,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
-      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
-      60,    61,    -1,    -1,    -1,    65,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    -1,    49,    50,    51,
-      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
-      -1,    -1,    -1,    65,    38,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    -1,    49,    50,    51,    52,    53,
-      54,    55,    56,    -1,    58,    59,    60,    61,    -1,    -1,
-      -1,    65,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
-      56,    -1,    58,    59,    60,    61,    -1,    -1,    -1,    65,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
-      58,    59,    60,    61,    -1,    -1,    -1,    65,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
-      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
-      60,    61,    -1,    -1,    36,    65,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    -1,    49,    50,    51,
-      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
-      36,    -1,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    -1,    49,    50,    51,    52,    53,    54,    55,
-      56,    -1,    58,    59,    60,    61,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    -1,    49,    50,    51,
-      52,    53,    54,    55,    56,    -1,    58,    59,    60,    61,
-      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
-      58,    59,    60,    61
+      -1,    -1,    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    61,    62,    63,     3,    -1,    66,     6,     7,
+       8,     9,    10,    11,    12,    13,    -1,    -1,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    -1,    35,    53,    54,
+      55,    56,    -1,    58,    59,    60,    61,    -1,    -1,    -1,
+      -1,    -1,    -1,    51,    52,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    61,    62,    63,    -1,    36,    66,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      -1,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
+      59,    60,    61,    -1,    -1,    36,    65,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
+      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
+      61,    -1,    -1,    -1,    65,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    -1,    50,    51,    52,
+      53,    54,    55,    56,    -1,    58,    59,    60,    61,    -1,
+      -1,    -1,    65,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    -1,    50,    51,    52,    53,    54,
+      55,    56,    -1,    58,    59,    60,    61,    -1,    -1,    -1,
+      65,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    -1,    50,    51,    52,    53,    54,    55,    56,
+      -1,    58,    59,    60,    61,    -1,    -1,    -1,    65,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      -1,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
+      59,    60,    61,    -1,    -1,    -1,    65,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
+      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
+      61,    -1,    -1,    -1,    65,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    -1,    50,    51,    52,
+      53,    54,    55,    56,    -1,    58,    59,    60,    61,    -1,
+      -1,    -1,    65,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    -1,    50,    51,    52,    53,    54,
+      55,    56,    -1,    58,    59,    60,    61,    -1,    -1,    -1,
+      65,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    -1,    50,    51,    52,    53,    54,    55,    56,
+      -1,    58,    59,    60,    61,    -1,    -1,    -1,    65,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      -1,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
+      59,    60,    61,    -1,    -1,    -1,    65,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
+      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
+      61,    -1,    -1,    -1,    65,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    -1,    50,    51,    52,
+      53,    54,    55,    56,    -1,    58,    59,    60,    61,    -1,
+      -1,    -1,    65,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    -1,    50,    51,    52,    53,    54,
+      55,    56,    -1,    58,    59,    60,    61,    -1,    -1,    -1,
+      65,    38,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    -1,    50,    51,    52,    53,    54,    55,    56,
+      -1,    58,    59,    60,    61,    -1,    -1,    -1,    65,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      -1,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
+      59,    60,    61,    -1,    -1,    -1,    65,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
+      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
+      61,    -1,    -1,    -1,    65,    38,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    -1,    50,    51,    52,
+      53,    54,    55,    56,    -1,    58,    59,    60,    61,    -1,
+      -1,    36,    65,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    -1,    50,    51,    52,    53,    54,
+      55,    56,    -1,    58,    59,    60,    61,    36,    -1,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+      -1,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
+      59,    60,    61,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    -1,    50,    51,    52,    53,    54,
+      55,    56,    -1,    58,    59,    60,    61,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
+      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
+      61
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
+static const yytype_int8 yystos[] =
 {
        0,     3,     6,     7,     8,     9,    10,    11,    12,    13,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    35,    51,
-      52,    60,    62,    63,    66,    70,    71,    72,    74,    75,
-      80,    81,    82,    83,    60,    72,    83,    60,    60,    60,
-      60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
-      60,    60,    60,    72,    73,    72,    72,    78,    83,     0,
+      52,    61,    62,    63,    66,    70,    71,    72,    74,    75,
+      80,    81,    82,    83,    61,    72,    83,    61,    61,    61,
+      61,    61,    61,    61,    61,    61,    61,    61,    61,    61,
+      61,    61,    61,    72,    73,    72,    72,    78,    83,     0,
       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-      49,    50,    51,    52,    53,    54,    55,    56,    58,    59,
-      60,    61,    72,    34,    60,    66,    83,    72,    72,    72,
+      48,    50,    51,    52,    53,    54,    55,    56,    58,    59,
+      60,    61,    72,    34,    61,    66,    83,    72,    72,    72,
       72,    83,    83,    72,    83,    72,    72,    72,    72,    72,
       72,    72,    72,    72,    65,    36,    67,    67,    72,    72,
-      72,    72,    72,    66,    75,    83,    72,    72,    72,    72,
-      72,    72,    72,    72,    72,    72,    72,    72,    72,    76,
-      77,    12,    12,    13,    72,    78,    65,    65,    65,    65,
-      65,    65,    65,    65,    36,    65,    65,    65,    65,    36,
-      65,    36,    65,    36,    36,    72,    72,    68,    72,    79,
-      78,    65,    67,    72,    72,    72,    72,    72,    36,    68,
-      65,    65,    65,    65,    65,    65,    72
+      72,    72,    72,    72,    72,    72,    66,    75,    83,    72,
+      72,    72,    72,    72,    72,    72,    72,    72,    12,    76,
+      77,    12,    13,    72,    78,    65,    65,    65,    65,    65,
+      65,    65,    65,    36,    65,    65,    65,    65,    36,    65,
+      36,    65,    36,    36,    72,    72,    72,    79,    78,    65,
+      67,    72,    72,    72,    72,    72,    36,    68,    65,    65,
+      65,    65,    65,    65,    72
 };
 
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
-
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
-
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_int8 yyr1[] =
+{
+       0,    69,    70,    70,    71,    72,    73,    72,    72,    72,
+      74,    74,    72,    72,    72,    72,    72,    72,    72,    72,
+      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
+      72,    72,    72,    72,    75,    75,    76,    72,    77,    72,
+      78,    78,    78,    79,    79,    72,    72,    72,    72,    72,
+      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
+      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
+      72,    72,    72,    72,    80,    81,    81,    82,    82,    82,
+      82,    83
+};
 
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_int8 yyr2[] =
+{
+       0,     2,     1,     1,     1,     2,     0,     3,     2,     2,
+       1,     1,     4,     4,     4,     4,     4,     4,     4,     6,
+       4,     4,     4,     4,     2,     4,     6,     4,     6,     3,
+       1,     3,     6,     6,     3,     4,     0,     5,     0,     5,
+       0,     1,     3,     1,     3,     4,     4,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     1,     1,     1,     1,     1,
+       1,     1,     4,     1,     1,     1,     3,     1,     1,     3,
+       1,     1
+};
 
-#define YYFAIL		goto yyerrlab
 
-#define YYRECOVERING()  (!!yyerrstatus)
+enum { YYENOMEM = -2 };
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
-
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
 
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
 
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
 
+#define YYRECOVERING()  (!!yyerrstatus)
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
+
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -1058,80 +1163,65 @@ while (YYID (0))
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+# ifndef YY_LOCATION_PRINT
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+
+
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Kind, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
+
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
 static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yykind, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -1139,16 +1229,8 @@ yy_symbol_print (yyoutput, yytype, yyval
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
 static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1159,63 +1241,56 @@ yy_stack_print (yybottom, yytop)
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
 static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule)
 {
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
+      yy_symbol_print (stderr,
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)]);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1230,342 +1305,82 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
 
-#if YYERROR_VERBOSE
 
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
 
-  return yyd - 1;
-}
-#  endif
-# endif
 
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
-
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  switch (yytype)
-    {
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
 
 /* The lookahead symbol.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
-
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+
+/*----------.
+| yyparse.  |
+`----------*/
+
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
-
-
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to xreallocate them elsewhere.  */
 
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize;
+
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
-
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -1573,133 +1388,147 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
   yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
-	/* Give user a chance to xreallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        yy_state_t *yyss1 = yyss;
+        YYSTYPE *yyvs1 = yyvs;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
+                    &yystacksize);
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yy_state_t *yyss1 = yyss;
+        union yyalloc *yyptr =
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      YYDPRINTF ((stderr, "Reading a token\n"));
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -1714,8 +1543,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -1727,13 +1556,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -1748,14 +1577,14 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -1768,581 +1597,506 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 4:
-
-/* Line 1455 of yacc.c  */
+  case 4:
 #line 156 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, OP_TYPE);
-		  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].tval));
+                { write_exp_elt_opcode (pstate, OP_TYPE);
+		  write_exp_elt_type (pstate, (yyvsp[0].tval));
 		  write_exp_elt_opcode (pstate, OP_TYPE);
 		}
+#line 1608 "m2-exp.c.tmp"
     break;
 
   case 5:
-
-/* Line 1455 of yacc.c  */
 #line 165 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND); }
+                        { write_exp_elt_opcode (pstate, UNOP_IND); }
+#line 1614 "m2-exp.c.tmp"
     break;
 
   case 6:
-
-/* Line 1455 of yacc.c  */
 #line 169 "m2-exp.y"
-    { number_sign = -1; }
+                        { number_sign = -1; }
+#line 1620 "m2-exp.c.tmp"
     break;
 
   case 7:
-
-/* Line 1455 of yacc.c  */
 #line 171 "m2-exp.y"
-    { number_sign = 1;
+                        { number_sign = 1;
 			  write_exp_elt_opcode (pstate, UNOP_NEG); }
+#line 1627 "m2-exp.c.tmp"
     break;
 
   case 8:
-
-/* Line 1455 of yacc.c  */
 #line 176 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+                { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+#line 1633 "m2-exp.c.tmp"
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
 #line 180 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+                        { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+#line 1639 "m2-exp.c.tmp"
     break;
 
   case 12:
-
-/* Line 1455 of yacc.c  */
 #line 188 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CAP); }
+                        { write_exp_elt_opcode (pstate, UNOP_CAP); }
+#line 1645 "m2-exp.c.tmp"
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
 #line 192 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ORD); }
+                        { write_exp_elt_opcode (pstate, UNOP_ORD); }
+#line 1651 "m2-exp.c.tmp"
     break;
 
   case 14:
-
-/* Line 1455 of yacc.c  */
 #line 196 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ABS); }
+                        { write_exp_elt_opcode (pstate, UNOP_ABS); }
+#line 1657 "m2-exp.c.tmp"
     break;
 
   case 15:
-
-/* Line 1455 of yacc.c  */
 #line 200 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_HIGH); }
+                        { write_exp_elt_opcode (pstate, UNOP_HIGH); }
+#line 1663 "m2-exp.c.tmp"
     break;
 
   case 16:
-
-/* Line 1455 of yacc.c  */
 #line 204 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_MIN);
-			  write_exp_elt_type (pstate, (yyvsp[(3) - (4)].tval));
+                        { write_exp_elt_opcode (pstate, UNOP_MIN);
+			  write_exp_elt_type (pstate, (yyvsp[-1].tval));
 			  write_exp_elt_opcode (pstate, UNOP_MIN); }
+#line 1671 "m2-exp.c.tmp"
     break;
 
   case 17:
-
-/* Line 1455 of yacc.c  */
 #line 210 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_MAX);
-			  write_exp_elt_type (pstate, (yyvsp[(3) - (4)].tval));
+                        { write_exp_elt_opcode (pstate, UNOP_MAX);
+			  write_exp_elt_type (pstate, (yyvsp[-1].tval));
 			  write_exp_elt_opcode (pstate, UNOP_MAX); }
+#line 1679 "m2-exp.c.tmp"
     break;
 
   case 18:
-
-/* Line 1455 of yacc.c  */
 #line 216 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_FLOAT); }
+                        { write_exp_elt_opcode (pstate, UNOP_FLOAT); }
+#line 1685 "m2-exp.c.tmp"
     break;
 
   case 19:
-
-/* Line 1455 of yacc.c  */
 #line 220 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_VAL);
-			  write_exp_elt_type (pstate, (yyvsp[(3) - (6)].tval));
+                        { write_exp_elt_opcode (pstate, BINOP_VAL);
+			  write_exp_elt_type (pstate, (yyvsp[-3].tval));
 			  write_exp_elt_opcode (pstate, BINOP_VAL); }
+#line 1693 "m2-exp.c.tmp"
     break;
 
   case 20:
-
-/* Line 1455 of yacc.c  */
 #line 226 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CHR); }
+                        { write_exp_elt_opcode (pstate, UNOP_CHR); }
+#line 1699 "m2-exp.c.tmp"
     break;
 
   case 21:
-
-/* Line 1455 of yacc.c  */
 #line 230 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ODD); }
+                        { write_exp_elt_opcode (pstate, UNOP_ODD); }
+#line 1705 "m2-exp.c.tmp"
     break;
 
   case 22:
-
-/* Line 1455 of yacc.c  */
 #line 234 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_TRUNC); }
+                        { write_exp_elt_opcode (pstate, UNOP_TRUNC); }
+#line 1711 "m2-exp.c.tmp"
     break;
 
   case 23:
-
-/* Line 1455 of yacc.c  */
 #line 238 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+                        { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+#line 1717 "m2-exp.c.tmp"
     break;
 
   case 24:
-
-/* Line 1455 of yacc.c  */
 #line 242 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+                        { write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+#line 1723 "m2-exp.c.tmp"
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
 #line 247 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PREINCREMENT); }
+                        { write_exp_elt_opcode (pstate, UNOP_PREINCREMENT); }
+#line 1729 "m2-exp.c.tmp"
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
 #line 251 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
 			  write_exp_elt_opcode (pstate, BINOP_ADD);
 			  write_exp_elt_opcode (pstate,
 						BINOP_ASSIGN_MODIFY); }
+#line 1738 "m2-exp.c.tmp"
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
 #line 258 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PREDECREMENT);}
+                        { write_exp_elt_opcode (pstate, UNOP_PREDECREMENT);}
+#line 1744 "m2-exp.c.tmp"
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
 #line 262 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
 			  write_exp_elt_opcode (pstate, BINOP_SUB);
 			  write_exp_elt_opcode (pstate,
 						BINOP_ASSIGN_MODIFY); }
+#line 1753 "m2-exp.c.tmp"
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
 #line 269 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
+                        { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 1761 "m2-exp.c.tmp"
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
 #line 278 "m2-exp.y"
-    { error (_("Sets are not implemented."));}
+                        { error (_("Sets are not implemented."));}
+#line 1767 "m2-exp.c.tmp"
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
 #line 282 "m2-exp.y"
-    { error (_("Sets are not implemented."));}
+                        { error (_("Sets are not implemented."));}
+#line 1773 "m2-exp.c.tmp"
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
 #line 286 "m2-exp.y"
-    { error (_("Sets are not implemented."));}
+                        { error (_("Sets are not implemented."));}
+#line 1779 "m2-exp.c.tmp"
     break;
 
   case 34:
-
-/* Line 1455 of yacc.c  */
 #line 290 "m2-exp.y"
-    { error (_("Sets are not implemented."));}
+                        { error (_("Sets are not implemented."));}
+#line 1785 "m2-exp.c.tmp"
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
 #line 292 "m2-exp.y"
-    { error (_("Sets are not implemented."));}
+                        { error (_("Sets are not implemented."));}
+#line 1791 "m2-exp.c.tmp"
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
 #line 301 "m2-exp.y"
-    { pstate->start_arglist(); }
+                        { pstate->start_arglist(); }
+#line 1797 "m2-exp.c.tmp"
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
 #line 303 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT);
+                        {
+			  gdb_assert (pstate->arglist_len > 0);
+			  write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT);
 			  write_exp_elt_longcst (pstate,
 						 pstate->end_arglist());
-			  write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT); }
+			  write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT);
+			}
+#line 1809 "m2-exp.c.tmp"
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
-#line 310 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+#line 315 "m2-exp.y"
+                        { pstate->start_arglist (); }
+#line 1815 "m2-exp.c.tmp"
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
-#line 316 "m2-exp.y"
-    { pstate->start_arglist (); }
-    break;
-
-  case 40:
-
-/* Line 1455 of yacc.c  */
-#line 318 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FUNCALL);
+#line 317 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_FUNCALL);
 			  write_exp_elt_longcst (pstate,
 						 pstate->end_arglist ());
 			  write_exp_elt_opcode (pstate, OP_FUNCALL); }
+#line 1824 "m2-exp.c.tmp"
     break;
 
-  case 42:
+  case 41:
+#line 327 "m2-exp.y"
+                        { pstate->arglist_len = 1; }
+#line 1830 "m2-exp.c.tmp"
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 328 "m2-exp.y"
-    { pstate->arglist_len = 1; }
+  case 42:
+#line 331 "m2-exp.y"
+                        { pstate->arglist_len++; }
+#line 1836 "m2-exp.c.tmp"
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
-#line 332 "m2-exp.y"
-    { pstate->arglist_len++; }
+#line 336 "m2-exp.y"
+                        { pstate->arglist_len = 1; }
+#line 1842 "m2-exp.c.tmp"
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
-#line 337 "m2-exp.y"
-    { pstate->arglist_len = 1; }
+#line 341 "m2-exp.y"
+                        { pstate->arglist_len++; }
+#line 1848 "m2-exp.c.tmp"
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
-#line 342 "m2-exp.y"
-    { pstate->arglist_len++; }
+#line 346 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_MEMVAL);
+			  write_exp_elt_type (pstate, (yyvsp[-2].tval));
+			  write_exp_elt_opcode (pstate, UNOP_MEMVAL); }
+#line 1856 "m2-exp.c.tmp"
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
-#line 347 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_MEMVAL);
-			  write_exp_elt_type (pstate, (yyvsp[(2) - (4)].tval));
-			  write_exp_elt_opcode (pstate, UNOP_MEMVAL); }
+#line 352 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_CAST);
+			  write_exp_elt_type (pstate, (yyvsp[-3].tval));
+			  write_exp_elt_opcode (pstate, UNOP_CAST); }
+#line 1864 "m2-exp.c.tmp"
     break;
 
   case 47:
-
-/* Line 1455 of yacc.c  */
-#line 353 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CAST);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (4)].tval));
-			  write_exp_elt_opcode (pstate, UNOP_CAST); }
+#line 358 "m2-exp.y"
+                        { }
+#line 1870 "m2-exp.c.tmp"
     break;
 
   case 48:
-
-/* Line 1455 of yacc.c  */
-#line 359 "m2-exp.y"
-    { }
+#line 366 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+#line 1876 "m2-exp.c.tmp"
     break;
 
   case 49:
-
-/* Line 1455 of yacc.c  */
-#line 367 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+#line 370 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 1882 "m2-exp.c.tmp"
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
-#line 371 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 374 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_DIV); }
+#line 1888 "m2-exp.c.tmp"
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
-#line 375 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_DIV); }
+#line 378 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_INTDIV); }
+#line 1894 "m2-exp.c.tmp"
     break;
 
   case 52:
-
-/* Line 1455 of yacc.c  */
-#line 379 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_INTDIV); }
+#line 382 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 1900 "m2-exp.c.tmp"
     break;
 
   case 53:
-
-/* Line 1455 of yacc.c  */
-#line 383 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 386 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 1906 "m2-exp.c.tmp"
     break;
 
   case 54:
-
-/* Line 1455 of yacc.c  */
-#line 387 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 390 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 1912 "m2-exp.c.tmp"
     break;
 
   case 55:
-
-/* Line 1455 of yacc.c  */
-#line 391 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 394 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 1918 "m2-exp.c.tmp"
     break;
 
   case 56:
-
-/* Line 1455 of yacc.c  */
-#line 395 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 398 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 1924 "m2-exp.c.tmp"
     break;
 
   case 57:
-
-/* Line 1455 of yacc.c  */
-#line 399 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 400 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 1930 "m2-exp.c.tmp"
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
-#line 401 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 404 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+#line 1936 "m2-exp.c.tmp"
     break;
 
   case 59:
-
-/* Line 1455 of yacc.c  */
-#line 405 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+#line 408 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+#line 1942 "m2-exp.c.tmp"
     break;
 
   case 60:
-
-/* Line 1455 of yacc.c  */
-#line 409 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+#line 412 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LESS); }
+#line 1948 "m2-exp.c.tmp"
     break;
 
   case 61:
-
-/* Line 1455 of yacc.c  */
-#line 413 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LESS); }
+#line 416 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_GTR); }
+#line 1954 "m2-exp.c.tmp"
     break;
 
   case 62:
-
-/* Line 1455 of yacc.c  */
-#line 417 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GTR); }
+#line 420 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 1960 "m2-exp.c.tmp"
     break;
 
   case 63:
-
-/* Line 1455 of yacc.c  */
-#line 421 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 424 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 1966 "m2-exp.c.tmp"
     break;
 
   case 64:
-
-/* Line 1455 of yacc.c  */
-#line 425 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 428 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 1972 "m2-exp.c.tmp"
     break;
 
   case 65:
-
-/* Line 1455 of yacc.c  */
-#line 429 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 435 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_BOOL);
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].ulval));
+			  write_exp_elt_opcode (pstate, OP_BOOL); }
+#line 1980 "m2-exp.c.tmp"
     break;
 
   case 66:
-
-/* Line 1455 of yacc.c  */
-#line 436 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, OP_BOOL);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].ulval));
+#line 441 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_BOOL);
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].ulval));
 			  write_exp_elt_opcode (pstate, OP_BOOL); }
+#line 1988 "m2-exp.c.tmp"
     break;
 
   case 67:
-
-/* Line 1455 of yacc.c  */
-#line 442 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, OP_BOOL);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].ulval));
-			  write_exp_elt_opcode (pstate, OP_BOOL); }
-    break;
-
-  case 68:
-
-/* Line 1455 of yacc.c  */
-#line 448 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
+#line 447 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate,
 					parse_m2_type (pstate)->builtin_int);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].lval));
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].lval));
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 1998 "m2-exp.c.tmp"
     break;
 
-  case 69:
-
-/* Line 1455 of yacc.c  */
-#line 456 "m2-exp.y"
-    {
+  case 68:
+#line 455 "m2-exp.y"
+                        {
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate,
 					      parse_m2_type (pstate)
 					      ->builtin_card);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].ulval));
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].ulval));
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			}
+#line 2011 "m2-exp.c.tmp"
     break;
 
-  case 70:
-
-/* Line 1455 of yacc.c  */
-#line 467 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
+  case 69:
+#line 466 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate,
 					      parse_m2_type (pstate)
 					      ->builtin_char);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].ulval));
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].ulval));
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 2022 "m2-exp.c.tmp"
     break;
 
-  case 71:
-
-/* Line 1455 of yacc.c  */
-#line 477 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FLOAT);
+  case 70:
+#line 476 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_FLOAT);
 			  write_exp_elt_type (pstate,
 					      parse_m2_type (pstate)
 					      ->builtin_real);
-			  write_exp_elt_floatcst (pstate, (yyvsp[(1) - (1)].val));
+			  write_exp_elt_floatcst (pstate, (yyvsp[0].val));
 			  write_exp_elt_opcode (pstate, OP_FLOAT); }
+#line 2033 "m2-exp.c.tmp"
     break;
 
-  case 73:
-
-/* Line 1455 of yacc.c  */
-#line 489 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
+  case 72:
+#line 488 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate,
 					    parse_type (pstate)->builtin_int);
 			  write_exp_elt_longcst (pstate,
-						 (LONGEST) TYPE_LENGTH ((yyvsp[(3) - (4)].tval)));
+						 (LONGEST) TYPE_LENGTH ((yyvsp[-1].tval)));
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 2044 "m2-exp.c.tmp"
     break;
 
-  case 74:
-
-/* Line 1455 of yacc.c  */
-#line 498 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, OP_M2_STRING);
-			  write_exp_string (pstate, (yyvsp[(1) - (1)].sval));
+  case 73:
+#line 497 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_M2_STRING);
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, OP_M2_STRING); }
+#line 2052 "m2-exp.c.tmp"
     break;
 
-  case 75:
-
-/* Line 1455 of yacc.c  */
-#line 505 "m2-exp.y"
-    { (yyval.bval) = SYMBOL_BLOCK_VALUE((yyvsp[(1) - (1)].sym)); }
+  case 74:
+#line 504 "m2-exp.y"
+                        { (yyval.bval) = SYMBOL_BLOCK_VALUE((yyvsp[0].sym)); }
+#line 2058 "m2-exp.c.tmp"
     break;
 
-  case 76:
-
-/* Line 1455 of yacc.c  */
-#line 509 "m2-exp.y"
-    { struct symbol *sym
-			    = lookup_symbol (copy_name ((yyvsp[(1) - (1)].sval)).c_str (),
+  case 75:
+#line 508 "m2-exp.y"
+                        { struct symbol *sym
+			    = lookup_symbol (copy_name ((yyvsp[0].sval)).c_str (),
 					     pstate->expression_context_block,
 					     VAR_DOMAIN, 0).symbol;
 			  (yyval.sym) = sym;}
+#line 2068 "m2-exp.c.tmp"
     break;
 
-  case 77:
-
-/* Line 1455 of yacc.c  */
-#line 519 "m2-exp.y"
-    { struct symbol *tem
-			    = lookup_symbol (copy_name ((yyvsp[(3) - (3)].sval)).c_str (), (yyvsp[(1) - (3)].bval),
+  case 76:
+#line 518 "m2-exp.y"
+                        { struct symbol *tem
+			    = lookup_symbol (copy_name ((yyvsp[0].sval)).c_str (), (yyvsp[-2].bval),
 					     VAR_DOMAIN, 0).symbol;
 			  if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
 			    error (_("No function \"%s\" in specified context."),
-				   copy_name ((yyvsp[(3) - (3)].sval)).c_str ());
+				   copy_name ((yyvsp[0].sval)).c_str ());
 			  (yyval.sym) = tem;
 			}
+#line 2081 "m2-exp.c.tmp"
     break;
 
-  case 78:
-
-/* Line 1455 of yacc.c  */
-#line 531 "m2-exp.y"
-    { write_exp_elt_opcode (pstate, OP_VAR_VALUE);
+  case 77:
+#line 530 "m2-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_VAR_VALUE);
 			  write_exp_elt_block (pstate, NULL);
-			  write_exp_elt_sym (pstate, (yyvsp[(1) - (1)].sym));
+			  write_exp_elt_sym (pstate, (yyvsp[0].sym));
 			  write_exp_elt_opcode (pstate, OP_VAR_VALUE); }
+#line 2090 "m2-exp.c.tmp"
     break;
 
-  case 80:
-
-/* Line 1455 of yacc.c  */
-#line 543 "m2-exp.y"
-    { struct block_symbol sym
-			    = lookup_symbol (copy_name ((yyvsp[(3) - (3)].sval)).c_str (), (yyvsp[(1) - (3)].bval),
+  case 79:
+#line 542 "m2-exp.y"
+                        { struct block_symbol sym
+			    = lookup_symbol (copy_name ((yyvsp[0].sval)).c_str (), (yyvsp[-2].bval),
 					     VAR_DOMAIN, 0);
 
 			  if (sym.symbol == 0)
 			    error (_("No symbol \"%s\" in specified context."),
-				   copy_name ((yyvsp[(3) - (3)].sval)).c_str ());
+				   copy_name ((yyvsp[0].sval)).c_str ());
 			  if (symbol_read_needs_frame (sym.symbol))
 			    pstate->block_tracker->update (sym);
 
@@ -2350,17 +2104,16 @@ yyreduce:
 			  write_exp_elt_block (pstate, sym.block);
 			  write_exp_elt_sym (pstate, sym.symbol);
 			  write_exp_elt_opcode (pstate, OP_VAR_VALUE); }
+#line 2109 "m2-exp.c.tmp"
     break;
 
-  case 81:
-
-/* Line 1455 of yacc.c  */
-#line 561 "m2-exp.y"
-    { struct block_symbol sym;
+  case 80:
+#line 560 "m2-exp.y"
+                        { struct block_symbol sym;
 			  struct field_of_this_result is_a_field_of_this;
 
 			  sym
-			    = lookup_symbol (copy_name ((yyvsp[(1) - (1)].sval)).c_str (),
+			    = lookup_symbol (copy_name ((yyvsp[0].sval)).c_str (),
 					     pstate->expression_context_block,
 					     VAR_DOMAIN,
 					     &is_a_field_of_this);
@@ -2378,7 +2131,7 @@ yyreduce:
 			  else
 			    {
 			      struct bound_minimal_symbol msymbol;
-			      std::string arg = copy_name ((yyvsp[(1) - (1)].sval));
+			      std::string arg = copy_name ((yyvsp[0].sval));
 
 			      msymbol =
 				lookup_bound_minimal_symbol (arg.c_str ());
@@ -2391,113 +2144,88 @@ yyreduce:
 				       arg.c_str ());
 			    }
 			}
+#line 2149 "m2-exp.c.tmp"
     break;
 
-  case 82:
-
-/* Line 1455 of yacc.c  */
-#line 600 "m2-exp.y"
-    { (yyval.tval)
+  case 81:
+#line 599 "m2-exp.y"
+                        { (yyval.tval)
 			    = lookup_typename (pstate->language (),
-					       copy_name ((yyvsp[(1) - (1)].sval)).c_str (),
+					       copy_name ((yyvsp[0].sval)).c_str (),
 					       pstate->expression_context_block,
 					       0);
 			}
+#line 2160 "m2-exp.c.tmp"
     break;
 
 
+#line 2164 "m2-exp.c.tmp"
 
-/* Line 1455 of yacc.c  */
-#line 2413 "m2-exp.c.tmp"
       default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -2509,14 +2237,12 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -2529,39 +2255,42 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -2574,6 +2303,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -2581,7 +2311,8 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+
+#if !defined yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2591,36 +2322,38 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
 
+  return yyresult;
+}
 
-/* Line 1675 of yacc.c  */
-#line 609 "m2-exp.y"
+#line 608 "m2-exp.y"
 
 
 /* Take care of parsing a number (anything that starts with a digit).
@@ -3066,4 +2799,3 @@ yyerror (const char *msg)
 
   error (_("A %s in expression, near `%s'."), msg, pstate->lexptr);
 }
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-exp.y ./gdb/m2-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-exp.y	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m2-exp.y	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* YACC grammar for Modula-2 expressions, for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
    Generated from expread.y (now c-exp.y) and contributed by the Department
    of Computer Science at the State University of New York at Buffalo, 1991.
 
@@ -293,21 +293,20 @@ set	:	'{' arglist '}'
 	;
 
 
-/* Modula-2 array subscript notation [a,b,c...] */
+/* Modula-2 array subscript notation [a,b,c...].  */
 exp     :       exp '['
                         /* This function just saves the number of arguments
 			   that follow in the list.  It is *not* specific to
 			   function types */
                         { pstate->start_arglist(); }
                 non_empty_arglist ']'  %prec DOT
-                        { write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT);
+			{
+			  gdb_assert (pstate->arglist_len > 0);
+			  write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT);
 			  write_exp_elt_longcst (pstate,
 						 pstate->end_arglist());
-			  write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT); }
-        ;
-
-exp	:	exp '[' exp ']'
-			{ write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+			  write_exp_elt_opcode (pstate, MULTI_SUBSCRIPT);
+			}
 	;
 
 exp	:	exp '('
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-lang.c ./gdb/m2-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-lang.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m2-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Modula 2 language support routines for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -30,59 +30,6 @@
 #include "gdbarch.h"
 
 static void m2_printchar (int, struct type *, struct ui_file *);
-static void m2_emit_char (int, struct type *, struct ui_file *, int);
-
-/* Print the character C on STREAM as part of the contents of a literal
-   string whose delimiter is QUOTER.  Note that that format for printing
-   characters and strings is language specific.
-   FIXME:  This is a copy of the same function from c-exp.y.  It should
-   be replaced with a true Modula version.  */
-
-static void
-m2_emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
-{
-
-  c &= 0xFF;			/* Avoid sign bit follies.  */
-
-  if (PRINT_LITERAL_FORM (c))
-    {
-      if (c == '\\' || c == quoter)
-	{
-	  fputs_filtered ("\\", stream);
-	}
-      fprintf_filtered (stream, "%c", c);
-    }
-  else
-    {
-      switch (c)
-	{
-	case '\n':
-	  fputs_filtered ("\\n", stream);
-	  break;
-	case '\b':
-	  fputs_filtered ("\\b", stream);
-	  break;
-	case '\t':
-	  fputs_filtered ("\\t", stream);
-	  break;
-	case '\f':
-	  fputs_filtered ("\\f", stream);
-	  break;
-	case '\r':
-	  fputs_filtered ("\\r", stream);
-	  break;
-	case '\033':
-	  fputs_filtered ("\\e", stream);
-	  break;
-	case '\007':
-	  fputs_filtered ("\\a", stream);
-	  break;
-	default:
-	  fprintf_filtered (stream, "\\%.3o", (unsigned int) c);
-	  break;
-	}
-    }
-}
 
 /* FIXME:  This is a copy of the same function from c-exp.y.  It should
    be replaced with a true Modula version.  */
@@ -95,107 +42,6 @@ m2_printchar (int c, struct type *type,
   fputs_filtered ("'", stream);
 }
 
-/* Print the character string STRING, printing at most LENGTH characters.
-   Printing stops early if the number hits print_max; repeat counts
-   are printed as appropriate.  Print ellipses at the end if we
-   had to stop before printing LENGTH characters, or if FORCE_ELLIPSES.
-   FIXME:  This is a copy of the same function from c-exp.y.  It should
-   be replaced with a true Modula version.  */
-
-static void
-m2_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string,
-	     unsigned int length, const char *encoding, int force_ellipses,
-	     const struct value_print_options *options)
-{
-  unsigned int i;
-  unsigned int things_printed = 0;
-  int in_quotes = 0;
-  int need_comma = 0;
-
-  if (length == 0)
-    {
-      fputs_filtered ("\"\"", gdb_stdout);
-      return;
-    }
-
-  for (i = 0; i < length && things_printed < options->print_max; ++i)
-    {
-      /* Position of the character we are examining
-         to see whether it is repeated.  */
-      unsigned int rep1;
-      /* Number of repetitions we have detected so far.  */
-      unsigned int reps;
-
-      QUIT;
-
-      if (need_comma)
-	{
-	  fputs_filtered (", ", stream);
-	  need_comma = 0;
-	}
-
-      rep1 = i + 1;
-      reps = 1;
-      while (rep1 < length && string[rep1] == string[i])
-	{
-	  ++rep1;
-	  ++reps;
-	}
-
-      if (reps > options->repeat_count_threshold)
-	{
-	  if (in_quotes)
-	    {
-	      fputs_filtered ("\", ", stream);
-	      in_quotes = 0;
-	    }
-	  m2_printchar (string[i], type, stream);
-	  fprintf_filtered (stream, " <repeats %u times>", reps);
-	  i = rep1 - 1;
-	  things_printed += options->repeat_count_threshold;
-	  need_comma = 1;
-	}
-      else
-	{
-	  if (!in_quotes)
-	    {
-	      fputs_filtered ("\"", stream);
-	      in_quotes = 1;
-	    }
-	  LA_EMIT_CHAR (string[i], type, stream, '"');
-	  ++things_printed;
-	}
-    }
-
-  /* Terminate the quotes if necessary.  */
-  if (in_quotes)
-    fputs_filtered ("\"", stream);
-
-  if (force_ellipses || i < length)
-    fputs_filtered ("...", stream);
-}
-
-/* Return true if TYPE is a string.  */
-
-static bool
-m2_is_string_type_p (struct type *type)
-{
-  type = check_typedef (type);
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY
-      && TYPE_LENGTH (type) > 0
-      && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0)
-    {
-      struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type));
-
-      if (TYPE_LENGTH (elttype) == 1
-	  && (TYPE_CODE (elttype) == TYPE_CODE_INT
-	      || TYPE_CODE (elttype) == TYPE_CODE_CHAR))
-	return true;
-    }
-
-  return false;
-}
-
 static struct value *
 evaluate_subexp_modula2 (struct type *expect_type, struct expression *exp,
 			 int *pos, enum noside noside)
@@ -222,7 +68,7 @@ evaluate_subexp_modula2 (struct type *ex
 	    {
 	      struct value *temp = arg1;
 
-	      type = TYPE_FIELD_TYPE (type, 1);
+	      type = type->field (1).type ();
 	      /* i18n: Do not translate the "_m2_high" part!  */
 	      arg1 = value_struct_elt (&temp, NULL, "_m2_high", NULL,
 				       _("unbounded structure "
@@ -250,8 +96,8 @@ evaluate_subexp_modula2 (struct type *ex
       if (m2_is_unbounded_array (type))
 	{
 	  struct value *temp = arg1;
-	  type = TYPE_FIELD_TYPE (type, 0);
-	  if (type == NULL || (TYPE_CODE (type) != TYPE_CODE_PTR))
+	  type = type->field (0).type ();
+	  if (type == NULL || (type->code () != TYPE_CODE_PTR))
 	    {
 	      warning (_("internal error: unbounded "
 			 "array structure is unknown"));
@@ -269,11 +115,11 @@ evaluate_subexp_modula2 (struct type *ex
 	  return value_ind (value_ptradd (arg1, value_as_long (arg2)));
 	}
       else
-	if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
+	if (type->code () != TYPE_CODE_ARRAY)
 	  {
-	    if (TYPE_NAME (type))
+	    if (type->name ())
 	      error (_("cannot subscript something of type `%s'"),
-		     TYPE_NAME (type));
+		     type->name ());
 	    else
 	      error (_("cannot subscript requested type"));
 	  }
@@ -339,32 +185,6 @@ enum m2_primitive_types {
   nr_m2_primitive_types
 };
 
-static void
-m2_language_arch_info (struct gdbarch *gdbarch,
-		       struct language_arch_info *lai)
-{
-  const struct builtin_m2_type *builtin = builtin_m2_type (gdbarch);
-
-  lai->string_char_type = builtin->builtin_char;
-  lai->primitive_type_vector
-    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_m2_primitive_types + 1,
-                              struct type *);
-
-  lai->primitive_type_vector [m2_primitive_type_char]
-    = builtin->builtin_char;
-  lai->primitive_type_vector [m2_primitive_type_int]
-    = builtin->builtin_int;
-  lai->primitive_type_vector [m2_primitive_type_card]
-    = builtin->builtin_card;
-  lai->primitive_type_vector [m2_primitive_type_real]
-    = builtin->builtin_real;
-  lai->primitive_type_vector [m2_primitive_type_bool]
-    = builtin->builtin_bool;
-
-  lai->bool_type_symbol = "BOOLEAN";
-  lai->bool_type_default = builtin->builtin_bool;
-}
-
 const struct exp_descriptor exp_descriptor_modula2 = 
 {
   print_subexp_standard,
@@ -375,7 +195,9 @@ const struct exp_descriptor exp_descript
   evaluate_subexp_modula2
 };
 
-extern const struct language_defn m2_language_defn =
+/* Constant data describing the M2 language.  */
+
+extern const struct language_data m2_language_data =
 {
   "modula-2",
   "Modula-2",
@@ -386,44 +208,236 @@ extern const struct language_defn m2_lan
   macro_expansion_no,
   NULL,
   &exp_descriptor_modula2,
-  m2_parse,			/* parser */
-  null_post_parser,
-  m2_printchar,			/* Print character constant */
-  m2_printstr,			/* function to print string constant */
-  m2_emit_char,			/* Function to print a single character */
-  m2_print_type,		/* Print a type using appropriate syntax */
-  m2_print_typedef,		/* Print a typedef using appropriate syntax */
-  m2_val_print,			/* Print a value using appropriate syntax */
-  c_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  NULL,				/* Language specific skip_trampoline */
   NULL,		                /* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
-  basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  NULL,				/* Language specific symbol demangler */
-  NULL,
-  NULL,				/* Language specific
-				   class_name_from_physname */
   m2_op_print_tab,		/* expression operators for printing */
   0,				/* arrays are first-class (not c-style) */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  m2_language_arch_info,
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  m2_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
 
+/* Class representing the M2 language.  */
+
+class m2_language : public language_defn
+{
+public:
+  m2_language ()
+    : language_defn (language_m2, m2_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    const struct builtin_m2_type *builtin = builtin_m2_type (gdbarch);
+
+    lai->string_char_type = builtin->builtin_char;
+    lai->primitive_type_vector
+      = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_m2_primitive_types + 1,
+				struct type *);
+
+    lai->primitive_type_vector [m2_primitive_type_char]
+      = builtin->builtin_char;
+    lai->primitive_type_vector [m2_primitive_type_int]
+      = builtin->builtin_int;
+    lai->primitive_type_vector [m2_primitive_type_card]
+      = builtin->builtin_card;
+    lai->primitive_type_vector [m2_primitive_type_real]
+      = builtin->builtin_real;
+    lai->primitive_type_vector [m2_primitive_type_bool]
+      = builtin->builtin_bool;
+
+    lai->bool_type_symbol = "BOOLEAN";
+    lai->bool_type_default = builtin->builtin_bool;
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    m2_print_type (type, varstring, stream, show, level, flags);
+  }
+
+  /* See language.h.  */
+
+  void value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const override
+  {
+    return m2_value_print_inner (val, stream, recurse, options);
+  }
+
+  /* See language.h.  */
+
+  int parser (struct parser_state *ps) const override
+  {
+    return m2_parse (ps);
+  }
+
+  /* See language.h.  */
+
+  void emitchar (int ch, struct type *chtype,
+		 struct ui_file *stream, int quoter) const override
+  {
+    ch &= 0xFF;			/* Avoid sign bit follies.  */
+
+    if (PRINT_LITERAL_FORM (ch))
+      {
+	if (ch == '\\' || ch == quoter)
+	  fputs_filtered ("\\", stream);
+	fprintf_filtered (stream, "%c", ch);
+      }
+    else
+      {
+	switch (ch)
+	  {
+	  case '\n':
+	    fputs_filtered ("\\n", stream);
+	    break;
+	  case '\b':
+	    fputs_filtered ("\\b", stream);
+	    break;
+	  case '\t':
+	    fputs_filtered ("\\t", stream);
+	    break;
+	  case '\f':
+	    fputs_filtered ("\\f", stream);
+	    break;
+	  case '\r':
+	    fputs_filtered ("\\r", stream);
+	    break;
+	  case '\033':
+	    fputs_filtered ("\\e", stream);
+	    break;
+	  case '\007':
+	    fputs_filtered ("\\a", stream);
+	    break;
+	  default:
+	    fprintf_filtered (stream, "\\%.3o", (unsigned int) ch);
+	    break;
+	  }
+      }
+  }
+
+  /* See language.h.  */
+
+  void printchar (int ch, struct type *chtype,
+		  struct ui_file *stream) const override
+  {
+    m2_printchar (ch, chtype, stream);
+  }
+
+  /* See language.h.  */
+
+  void printstr (struct ui_file *stream, struct type *elttype,
+		 const gdb_byte *string, unsigned int length,
+		 const char *encoding, int force_ellipses,
+		 const struct value_print_options *options) const override
+  {
+    unsigned int i;
+    unsigned int things_printed = 0;
+    int in_quotes = 0;
+    int need_comma = 0;
+
+    if (length == 0)
+      {
+	fputs_filtered ("\"\"", gdb_stdout);
+	return;
+      }
+
+    for (i = 0; i < length && things_printed < options->print_max; ++i)
+      {
+	/* Position of the character we are examining
+	   to see whether it is repeated.  */
+	unsigned int rep1;
+	/* Number of repetitions we have detected so far.  */
+	unsigned int reps;
+
+	QUIT;
+
+	if (need_comma)
+	  {
+	    fputs_filtered (", ", stream);
+	    need_comma = 0;
+	  }
+
+	rep1 = i + 1;
+	reps = 1;
+	while (rep1 < length && string[rep1] == string[i])
+	  {
+	    ++rep1;
+	    ++reps;
+	  }
+
+	if (reps > options->repeat_count_threshold)
+	  {
+	    if (in_quotes)
+	      {
+		fputs_filtered ("\", ", stream);
+		in_quotes = 0;
+	      }
+	    m2_printchar (string[i], elttype, stream);
+	    fprintf_filtered (stream, " <repeats %u times>", reps);
+	    i = rep1 - 1;
+	    things_printed += options->repeat_count_threshold;
+	    need_comma = 1;
+	  }
+	else
+	  {
+	    if (!in_quotes)
+	      {
+		fputs_filtered ("\"", stream);
+		in_quotes = 1;
+	      }
+	    LA_EMIT_CHAR (string[i], elttype, stream, '"');
+	    ++things_printed;
+	  }
+      }
+
+    /* Terminate the quotes if necessary.  */
+    if (in_quotes)
+      fputs_filtered ("\"", stream);
+
+    if (force_ellipses || i < length)
+      fputs_filtered ("...", stream);
+  }
+
+  /* See language.h.  */
+
+  void print_typedef (struct type *type, struct symbol *new_symbol,
+		      struct ui_file *stream) const override
+  {
+    m2_print_typedef (type, new_symbol, stream);
+  }
+
+  /* See language.h.  */
+
+  bool is_string_type_p (struct type *type) const override
+  {
+    type = check_typedef (type);
+    if (type->code () == TYPE_CODE_ARRAY
+	&& TYPE_LENGTH (type) > 0
+	&& TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0)
+      {
+	struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type));
+
+	if (TYPE_LENGTH (elttype) == 1
+	    && (elttype->code () == TYPE_CODE_INT
+		|| elttype->code () == TYPE_CODE_CHAR))
+	  return true;
+      }
+
+    return false;
+  }
+};
+
+/* Single instance of the M2 language.  */
+
+static m2_language m2_language_defn;
+
 static void *
 build_m2_types (struct gdbarch *gdbarch)
 {
@@ -457,8 +471,9 @@ builtin_m2_type (struct gdbarch *gdbarch
 
 /* Initialization for Modula-2 */
 
+void _initialize_m2_language ();
 void
-_initialize_m2_language (void)
+_initialize_m2_language ()
 {
   m2_type_data = gdbarch_data_register_post_init (build_m2_types);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-lang.h ./gdb/m2-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-lang.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m2-lang.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Modula 2 language support definitions for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,10 +35,10 @@ extern void m2_print_typedef (struct typ
 extern int m2_is_long_set (struct type *type);
 extern int m2_is_unbounded_array (struct type *type);
 
-extern void m2_val_print (struct type *, int, CORE_ADDR,
-			  struct ui_file *, int,
-			  struct value *,
-			  const struct value_print_options *);
+/* Implement la_value_print_inner for Modula-2.  */
+
+extern void m2_value_print_inner (struct value *, struct ui_file *, int,
+				  const struct value_print_options *);
 
 extern int get_long_set_bounds (struct type *type, LONGEST *low,
 				LONGEST *high);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-typeprint.c ./gdb/m2-typeprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-typeprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m2-typeprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for printing Modula 2 types for GDB, the GNU debugger.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -86,7 +86,7 @@ m2_print_type (struct type *type, const
       return;
     }
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_SET:
       m2_short_set(type, stream, show, level);
@@ -163,8 +163,8 @@ m2_print_typedef (struct type *type, str
 {
   type = check_typedef (type);
   fprintf_filtered (stream, "TYPE ");
-  if (!TYPE_NAME (SYMBOL_TYPE (new_symbol))
-      || strcmp (TYPE_NAME ((SYMBOL_TYPE (new_symbol))),
+  if (!SYMBOL_TYPE (new_symbol)->name ()
+      || strcmp ((SYMBOL_TYPE (new_symbol))->name (),
 		 new_symbol->linkage_name ()) != 0)
     fprintf_filtered (stream, "%s = ", new_symbol->print_name ());
   else
@@ -178,8 +178,8 @@ m2_print_typedef (struct type *type, str
 void
 m2_type_name (struct type *type, struct ui_file *stream)
 {
-  if (TYPE_NAME (type) != NULL)
-    fputs_filtered (TYPE_NAME (type), stream);
+  if (type->name () != NULL)
+    fputs_filtered (type->name (), stream);
 }
 
 /* m2_range - displays a Modula-2 subrange type.  */
@@ -188,7 +188,7 @@ void
 m2_range (struct type *type, struct ui_file *stream, int show,
 	  int level, const struct type_print_options *flags)
 {
-  if (TYPE_HIGH_BOUND (type) == TYPE_LOW_BOUND (type))
+  if (type->bounds ()->high.const_val () == type->bounds ()->low.const_val ())
     {
       /* FIXME: TYPE_TARGET_TYPE used to be TYPE_DOMAIN_TYPE but that was
 	 wrong.  Not sure if TYPE_TARGET_TYPE is correct though.  */
@@ -200,9 +200,9 @@ m2_range (struct type *type, struct ui_f
       struct type *target = TYPE_TARGET_TYPE (type);
 
       fprintf_filtered (stream, "[");
-      print_type_scalar (target, TYPE_LOW_BOUND (type), stream);
+      print_type_scalar (target, type->bounds ()->low.const_val (), stream);
       fprintf_filtered (stream, "..");
-      print_type_scalar (target, TYPE_HIGH_BOUND (type), stream);
+      print_type_scalar (target, type->bounds ()->high.const_val (), stream);
       fprintf_filtered (stream, "]");
     }
 }
@@ -211,9 +211,9 @@ static void
 m2_typedef (struct type *type, struct ui_file *stream, int show,
 	    int level, const struct type_print_options *flags)
 {
-  if (TYPE_NAME (type) != NULL)
+  if (type->name () != NULL)
     {
-      fputs_filtered (TYPE_NAME (type), stream);
+      fputs_filtered (type->name (), stream);
       fputs_filtered (" = ", stream);
     }
   m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags);
@@ -226,13 +226,13 @@ static void m2_array (struct type *type,
 {
   fprintf_filtered (stream, "ARRAY [");
   if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0
-      && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
+      && type->bounds ()->high.kind () != PROP_UNDEFINED)
     {
-      if (TYPE_INDEX_TYPE (type) != 0)
+      if (type->index_type () != 0)
 	{
-	  m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 0);
+	  m2_print_bounds (type->index_type (), stream, show, -1, 0);
 	  fprintf_filtered (stream, "..");
-	  m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 1);
+	  m2_print_bounds (type->index_type (), stream, show, -1, 1);
 	}
       else
 	fputs_filtered (pulongest ((TYPE_LENGTH (type)
@@ -282,9 +282,9 @@ m2_procedure (struct type *type, struct
   fprintf_filtered (stream, "PROCEDURE ");
   m2_type_name (type, stream);
   if (TYPE_TARGET_TYPE (type) == NULL
-      || TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+      || TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
     {
-      int i, len = TYPE_NFIELDS (type);
+      int i, len = type->num_fields ();
 
       fprintf_filtered (stream, " (");
       for (i = 0; i < len; i++)
@@ -294,7 +294,7 @@ m2_procedure (struct type *type, struct
 	      fputs_filtered (", ", stream);
 	      wrap_here ("    ");
 	    }
-	  m2_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0, flags);
+	  m2_print_type (type->field (i).type (), "", stream, -1, 0, flags);
 	}
       fprintf_filtered (stream, ") : ");
       if (TYPE_TARGET_TYPE (type) != NULL)
@@ -311,24 +311,24 @@ m2_print_bounds (struct type *type,
 {
   struct type *target = TYPE_TARGET_TYPE (type);
 
-  if (TYPE_NFIELDS(type) == 0)
+  if (type->num_fields () == 0)
     return;
 
   if (print_high)
-    print_type_scalar (target, TYPE_HIGH_BOUND (type), stream);
+    print_type_scalar (target, type->bounds ()->high.const_val (), stream);
   else
-    print_type_scalar (target, TYPE_LOW_BOUND (type), stream);
+    print_type_scalar (target, type->bounds ()->low.const_val (), stream);
 }
 
 static void
 m2_short_set (struct type *type, struct ui_file *stream, int show, int level)
 {
   fprintf_filtered(stream, "SET [");
-  m2_print_bounds (TYPE_INDEX_TYPE (type), stream,
+  m2_print_bounds (type->index_type (), stream,
 		   show - 1, level, 0);
 
   fprintf_filtered(stream, "..");
-  m2_print_bounds (TYPE_INDEX_TYPE (type), stream,
+  m2_print_bounds (type->index_type (), stream,
 		   show - 1, level, 1);
   fprintf_filtered(stream, "]");
 }
@@ -341,26 +341,26 @@ m2_is_long_set (struct type *type)
   int len, i;
   struct type *range;
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     {
 
       /* check if all fields of the RECORD are consecutive sets.  */
 
-      len = TYPE_NFIELDS (type);
+      len = type->num_fields ();
       for (i = TYPE_N_BASECLASSES (type); i < len; i++)
 	{
-	  if (TYPE_FIELD_TYPE (type, i) == NULL)
+	  if (type->field (i).type () == NULL)
 	    return 0;
-	  if (TYPE_CODE (TYPE_FIELD_TYPE (type, i)) != TYPE_CODE_SET)
+	  if (type->field (i).type ()->code () != TYPE_CODE_SET)
 	    return 0;
 	  if (TYPE_FIELD_NAME (type, i) != NULL
 	      && (strcmp (TYPE_FIELD_NAME (type, i), "") != 0))
 	    return 0;
-	  range = TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, i));
+	  range = type->field (i).type ()->index_type ();
 	  if ((i > TYPE_N_BASECLASSES (type))
-	      && previous_high + 1 != TYPE_LOW_BOUND (range))
+	      && previous_high + 1 != range->bounds ()->low.const_val ())
 	    return 0;
-	  previous_high = TYPE_HIGH_BOUND (range);
+	  previous_high = range->bounds ()->high.const_val ();
 	}
       return len>0;
     }
@@ -372,11 +372,11 @@ m2_is_long_set (struct type *type)
                             This should be integrated into gdbtypes.c
                             inside get_discrete_bounds.  */
 
-static int
+static bool
 m2_get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp)
 {
   type = check_typedef (type);
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_CHAR:
       if (TYPE_LENGTH (type) < sizeof (LONGEST))
@@ -407,19 +407,19 @@ m2_is_long_set_of_type (struct type *typ
   LONGEST l1, l2;
   LONGEST h1, h2;
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     {
-      len = TYPE_NFIELDS (type);
+      len = type->num_fields ();
       i = TYPE_N_BASECLASSES (type);
       if (len == 0)
 	return 0;
-      range = TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, i));
+      range = type->field (i).type ()->index_type ();
       target = TYPE_TARGET_TYPE (range);
 
-      l1 = TYPE_LOW_BOUND (TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, i)));
-      h1 = TYPE_HIGH_BOUND (TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, len-1)));
+      l1 = type->field (i).type ()->bounds ()->low.const_val ();
+      h1 = type->field (len - 1).type ()->bounds ()->high.const_val ();
       *of_type = target;
-      if (m2_get_discrete_bounds (target, &l2, &h2) >= 0)
+      if (m2_get_discrete_bounds (target, &l2, &h2))
 	return (l1 == l2 && h1 == h2);
       error (_("long_set failed to find discrete bounds for its subtype"));
       return 0;
@@ -434,15 +434,15 @@ m2_long_set (struct type *type, struct u
 {
   struct type *of_type;
   int i;
-  int len = TYPE_NFIELDS (type);
+  int len = type->num_fields ();
   LONGEST low;
   LONGEST high;
 
   if (m2_is_long_set (type))
     {
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	  if (show == 0)
 	    return 1;
 	  fputs_filtered (" = ", stream);
@@ -457,12 +457,12 @@ m2_long_set (struct type *type, struct u
 	  else
 	    {
 	      fprintf_filtered(stream, "[");
-	      m2_print_bounds (TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, i)),
+	      m2_print_bounds (type->field (i).type ()->index_type (),
 			       stream, show - 1, level, 0);
 
 	      fprintf_filtered(stream, "..");
 
-	      m2_print_bounds (TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, len-1)),
+	      m2_print_bounds (type->field (len - 1).type ()->index_type (),
 			       stream, show - 1, level, 1);
 	      fprintf_filtered(stream, "]");
 	    }
@@ -482,7 +482,7 @@ m2_long_set (struct type *type, struct u
 int
 m2_is_unbounded_array (struct type *type)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     {
       /*
        *  check if we have a structure with exactly two fields named
@@ -490,13 +490,13 @@ m2_is_unbounded_array (struct type *type
        *  type of _m2_contents is a pointer.  The TYPE_TARGET_TYPE
        *  of the pointer determines the unbounded ARRAY OF type.
        */
-      if (TYPE_NFIELDS (type) != 2)
+      if (type->num_fields () != 2)
 	return 0;
       if (strcmp (TYPE_FIELD_NAME (type, 0), "_m2_contents") != 0)
 	return 0;
       if (strcmp (TYPE_FIELD_NAME (type, 1), "_m2_high") != 0)
 	return 0;
-      if (TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) != TYPE_CODE_PTR)
+      if (type->field (0).type ()->code () != TYPE_CODE_PTR)
 	return 0;
       return 1;
     }
@@ -517,7 +517,7 @@ m2_unbounded_array (struct type *type, s
       if (show > 0)
 	{
 	  fputs_filtered ("ARRAY OF ", stream);
-	  m2_print_type (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 0)),
+	  m2_print_type (TYPE_TARGET_TYPE (type->field (0).type ()),
 			 "", stream, 0, level, flags);
 	}
       return 1;
@@ -530,11 +530,11 @@ m2_record_fields (struct type *type, str
 		  int level, const struct type_print_options *flags)
 {
   /* Print the tag if it exists.  */
-  if (TYPE_NAME (type) != NULL)
+  if (type->name () != NULL)
     {
-      if (!startswith (TYPE_NAME (type), "$$"))
+      if (!startswith (type->name (), "$$"))
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	  if (show > 0)
 	    fprintf_filtered (stream, " = ");
 	}
@@ -542,19 +542,19 @@ m2_record_fields (struct type *type, str
   wrap_here ("    ");
   if (show < 0)
     {
-      if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+      if (type->code () == TYPE_CODE_STRUCT)
 	fprintf_filtered (stream, "RECORD ... END ");
-      else if (TYPE_CODE (type) == TYPE_CODE_UNION)
+      else if (type->code () == TYPE_CODE_UNION)
 	fprintf_filtered (stream, "CASE ... END ");
     }
   else if (show > 0)
     {
       int i;
-      int len = TYPE_NFIELDS (type);
+      int len = type->num_fields ();
 
-      if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+      if (type->code () == TYPE_CODE_STRUCT)
 	fprintf_filtered (stream, "RECORD\n");
-      else if (TYPE_CODE (type) == TYPE_CODE_UNION)
+      else if (type->code () == TYPE_CODE_UNION)
 	/* i18n: Do not translate "CASE" and "OF".  */
 	fprintf_filtered (stream, _("CASE <variant> OF\n"));
 
@@ -563,9 +563,10 @@ m2_record_fields (struct type *type, str
 	  QUIT;
 
 	  print_spaces_filtered (level + 4, stream);
-	  fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+	  fputs_styled (TYPE_FIELD_NAME (type, i),
+			variable_name_style.style (), stream);
 	  fputs_filtered (" : ", stream);
-	  m2_print_type (TYPE_FIELD_TYPE (type, i),
+	  m2_print_type (type->field (i).type (),
 			 "",
 			 stream, 0, level + 4, flags);
 	  if (TYPE_FIELD_PACKED (type, i))
@@ -594,13 +595,13 @@ m2_enum (struct type *type, struct ui_fi
   if (show < 0)
     {
       /* If we just printed a tag name, no need to print anything else.  */
-      if (TYPE_NAME (type) == NULL)
+      if (type->name () == NULL)
 	fprintf_filtered (stream, "(...)");
     }
-  else if (show > 0 || TYPE_NAME (type) == NULL)
+  else if (show > 0 || type->name () == NULL)
     {
       fprintf_filtered (stream, "(");
-      len = TYPE_NFIELDS (type);
+      len = type->num_fields ();
       lastval = 0;
       for (i = 0; i < len; i++)
 	{
@@ -608,7 +609,8 @@ m2_enum (struct type *type, struct ui_fi
 	  if (i > 0)
 	    fprintf_filtered (stream, ", ");
 	  wrap_here ("    ");
-	  fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+	  fputs_styled (TYPE_FIELD_NAME (type, i),
+			variable_name_style.style (), stream);
 	  if (lastval != TYPE_FIELD_ENUMVAL (type, i))
 	    {
 	      fprintf_filtered (stream, " = %s",
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-valprint.c ./gdb/m2-valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m2-valprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m2-valprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for printing Modula 2 values for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,10 +35,8 @@ static int print_unpacked_pointer (struc
 				   const struct value_print_options *options,
 				   struct ui_file *stream);
 static void
-m2_print_array_contents (struct type *type, const gdb_byte *valaddr,
-			 int embedded_offset, CORE_ADDR address,
+m2_print_array_contents (struct value *val,
 			 struct ui_file *stream, int recurse,
-			 struct value *val,
 			 const struct value_print_options *options,
 			 int len);
 
@@ -51,15 +49,14 @@ get_long_set_bounds (struct type *type,
 {
   int len, i;
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     {
-      len = TYPE_NFIELDS (type);
+      len = type->num_fields ();
       i = TYPE_N_BASECLASSES (type);
       if (len == 0)
 	return 0;
-      *low = TYPE_LOW_BOUND (TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, i)));
-      *high = TYPE_HIGH_BOUND (TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type,
-								 len-1)));
+      *low = type->field (i).type ()->bounds ()->low.const_val ();
+      *high = type->field (len - 1).type ()->bounds ()->high.const_val ();
       return 1;
     }
   error (_("expecting long_set"));
@@ -85,11 +82,11 @@ m2_print_long_set (struct type *type, co
   type = check_typedef (type);
 
   fprintf_filtered (stream, "{");
-  len = TYPE_NFIELDS (type);
+  len = type->num_fields ();
   if (get_long_set_bounds (type, &low_bound, &high_bound))
     {
       field = TYPE_N_BASECLASSES (type);
-      range = TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, field));
+      range = type->field (field).type ()->index_type ();
     }
   else
     {
@@ -100,11 +97,11 @@ m2_print_long_set (struct type *type, co
 
   target = TYPE_TARGET_TYPE (range);
 
-  if (get_discrete_bounds (range, &field_low, &field_high) >= 0)
+  if (get_discrete_bounds (range, &field_low, &field_high))
     {
       for (i = low_bound; i <= high_bound; i++)
 	{
-	  bitval = value_bit_index (TYPE_FIELD_TYPE (type, field),
+	  bitval = value_bit_index (type->field (field).type (),
 				    (TYPE_FIELD_BITPOS (type, field) / 8) +
 				    valaddr + embedded_offset, i);
 	  if (bitval < 0)
@@ -139,8 +136,8 @@ m2_print_long_set (struct type *type, co
 	      field++;
 	      if (field == len)
 		break;
-	      range = TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, field));
-	      if (get_discrete_bounds (range, &field_low, &field_high) < 0)
+	      range = type->field (field).type ()->index_type ();
+	      if (!get_discrete_bounds (range, &field_low, &field_high))
 		break;
 	      target = TYPE_TARGET_TYPE (range);
 	    }
@@ -159,8 +156,7 @@ m2_print_long_set (struct type *type, co
 }
 
 static void
-m2_print_unbounded_array (struct type *type, const gdb_byte *valaddr,
-			  int embedded_offset, CORE_ADDR address,
+m2_print_unbounded_array (struct value *value,
 			  struct ui_file *stream, int recurse,
 			  const struct value_print_options *options)
 {
@@ -168,21 +164,19 @@ m2_print_unbounded_array (struct type *t
   LONGEST len;
   struct value *val;
 
-  type = check_typedef (type);
+  struct type *type = check_typedef (value_type (value));
+  const gdb_byte *valaddr = value_contents_for_printing (value);
 
-  addr = unpack_pointer (TYPE_FIELD_TYPE (type, 0),
+  addr = unpack_pointer (type->field (0).type (),
 			 (TYPE_FIELD_BITPOS (type, 0) / 8) +
-			 valaddr + embedded_offset);
+			 valaddr);
 
-  val = value_at_lazy (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 0)),
+  val = value_at_lazy (TYPE_TARGET_TYPE (type->field (0).type ()),
 		       addr);
-  len = unpack_field_as_long (type, valaddr + embedded_offset, 1);
+  len = unpack_field_as_long (type, valaddr, 1);
 
   fprintf_filtered (stream, "{");  
-  m2_print_array_contents (value_type (val),
-			   value_contents_for_printing (val),
-			   value_embedded_offset (val), addr, stream,
-			   recurse, val, options, len);
+  m2_print_array_contents (val, stream, recurse, options, len);
   fprintf_filtered (stream, ", HIGH = %d}", (int) len);
 }
 
@@ -196,7 +190,7 @@ print_unpacked_pointer (struct type *typ
   struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type));
   int want_space = 0;
 
-  if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
+  if (elttype->code () == TYPE_CODE_FUNC)
     {
       /* Try to print what function it points to.  */
       print_function_pointer_address (options, gdbarch, addr, stream);
@@ -214,7 +208,7 @@ print_unpacked_pointer (struct type *typ
      pointed to, unless pointer is null.  */
 
   if (TYPE_LENGTH (elttype) == 1
-      && TYPE_CODE (elttype) == TYPE_CODE_INT
+      && elttype->code () == TYPE_CODE_INT
       && (options->format == 0 || options->format == 's')
       && addr != 0)
     {
@@ -242,7 +236,7 @@ print_variable_at_address (struct type *
   fputs_filtered (paddress (gdbarch, addr), stream);
   fprintf_filtered (stream, "] : ");
   
-  if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF)
+  if (elttype->code () != TYPE_CODE_UNDEF)
     {
       struct value *deref_val =
 	value_at (TYPE_TARGET_TYPE (type), unpack_pointer (type, valaddr));
@@ -261,32 +255,27 @@ print_variable_at_address (struct type *
                              separated values.  */
 
 static void
-m2_print_array_contents (struct type *type, const gdb_byte *valaddr,
-			 int embedded_offset, CORE_ADDR address,
+m2_print_array_contents (struct value *val,
 			 struct ui_file *stream, int recurse,
-			 struct value *val,
 			 const struct value_print_options *options,
 			 int len)
 {
-  type = check_typedef (type);
+  struct type *type = check_typedef (value_type (val));
 
   if (TYPE_LENGTH (type) > 0)
     {
-      if (options->prettyformat_arrays)
-	print_spaces_filtered (2 + 2 * recurse, stream);
       /* For an array of chars, print with string syntax.  */
       if (TYPE_LENGTH (type) == 1 &&
-	  ((TYPE_CODE (type) == TYPE_CODE_INT)
+	  ((type->code () == TYPE_CODE_INT)
 	   || ((current_language->la_language == language_m2)
-	       && (TYPE_CODE (type) == TYPE_CODE_CHAR)))
+	       && (type->code () == TYPE_CODE_CHAR)))
 	  && (options->format == 0 || options->format == 's'))
-	val_print_string (type, NULL, address, len+1, stream, options);
+	val_print_string (type, NULL, value_address (val), len+1, stream,
+			  options);
       else
 	{
 	  fprintf_filtered (stream, "{");
-	  val_print_array_elements (type, embedded_offset,
-				    address, stream, recurse, val,
-				    options, 0);
+	  value_print_array_elements (val, stream, recurse, options, 0);
 	  fprintf_filtered (stream, "}");
 	}
     }
@@ -306,35 +295,31 @@ static const struct generic_val_print_de
   "}"
 };
 
-/* See val_print for a description of the various parameters of this
-   function; they are identical.  */
+/* See m2-lang.h.  */
 
 void
-m2_val_print (struct type *type, int embedded_offset,
-	      CORE_ADDR address, struct ui_file *stream, int recurse,
-	      struct value *original_value,
-	      const struct value_print_options *options)
+m2_value_print_inner (struct value *val, struct ui_file *stream, int recurse,
+		      const struct value_print_options *options)
 {
   unsigned len;
   struct type *elttype;
   CORE_ADDR addr;
-  const gdb_byte *valaddr = value_contents_for_printing (original_value);
+  const gdb_byte *valaddr = value_contents_for_printing (val);
+  const CORE_ADDR address = value_address (val);
 
-  type = check_typedef (type);
-  switch (TYPE_CODE (type))
+  struct type *type = check_typedef (value_type (val));
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
       if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0)
 	{
 	  elttype = check_typedef (TYPE_TARGET_TYPE (type));
 	  len = TYPE_LENGTH (type) / TYPE_LENGTH (elttype);
-	  if (options->prettyformat_arrays)
-	    print_spaces_filtered (2 + 2 * recurse, stream);
 	  /* For an array of chars, print with string syntax.  */
 	  if (TYPE_LENGTH (elttype) == 1 &&
-	      ((TYPE_CODE (elttype) == TYPE_CODE_INT)
+	      ((elttype->code () == TYPE_CODE_INT)
 	       || ((current_language->la_language == language_m2)
-		   && (TYPE_CODE (elttype) == TYPE_CODE_CHAR)))
+		   && (elttype->code () == TYPE_CODE_CHAR)))
 	      && (options->format == 0 || options->format == 's'))
 	    {
 	      /* If requested, look for the first null char and only print
@@ -345,23 +330,20 @@ m2_val_print (struct type *type, int emb
 
 		  /* Look for a NULL char.  */
 		  for (temp_len = 0;
-		       (valaddr + embedded_offset)[temp_len]
-			 && temp_len < len && temp_len < options->print_max;
+		       (valaddr[temp_len]
+			&& temp_len < len && temp_len < options->print_max);
 		       temp_len++);
 		  len = temp_len;
 		}
 
 	      LA_PRINT_STRING (stream, TYPE_TARGET_TYPE (type),
-			       valaddr + embedded_offset, len, NULL,
-			       0, options);
+			       valaddr, len, NULL, 0, options);
 	    }
 	  else
 	    {
 	      fprintf_filtered (stream, "{");
-	      val_print_array_elements (type, embedded_offset,
-					address, stream,
-					recurse, original_value,
-					options, 0);
+	      value_print_array_elements (val, stream, recurse,
+					  options, 0);
 	      fprintf_filtered (stream, "}");
 	    }
 	  break;
@@ -372,14 +354,12 @@ m2_val_print (struct type *type, int emb
 
     case TYPE_CODE_PTR:
       if (TYPE_CONST (type))
-	print_variable_at_address (type, valaddr + embedded_offset,
-				   stream, recurse, options);
+	print_variable_at_address (type, valaddr, stream, recurse, options);
       else if (options->format && options->format != 's')
-	val_print_scalar_formatted (type, embedded_offset,
-				    original_value, options, 0, stream);
+	value_print_scalar_formatted (val, options, 0, stream);
       else
 	{
-	  addr = unpack_pointer (type, valaddr + embedded_offset);
+	  addr = unpack_pointer (type, valaddr);
 	  print_unpacked_pointer (type, addr, address, options, stream);
 	}
       break;
@@ -393,19 +373,15 @@ m2_val_print (struct type *type, int emb
       /* Fall through.  */
     case TYPE_CODE_STRUCT:
       if (m2_is_long_set (type))
-	m2_print_long_set (type, valaddr, embedded_offset, address,
-			   stream);
+	m2_print_long_set (type, valaddr, 0, address, stream);
       else if (m2_is_unbounded_array (type))
-	m2_print_unbounded_array (type, valaddr, embedded_offset,
-				  address, stream, recurse, options);
+	m2_print_unbounded_array (val, stream, recurse, options);
       else
-	cp_print_value_fields (type, type, embedded_offset,
-			       address, stream, recurse, original_value,
-			       options, NULL, 0);
+	cp_print_value_fields (val, stream, recurse, options, NULL, 0);
       break;
 
     case TYPE_CODE_SET:
-      elttype = TYPE_INDEX_TYPE (type);
+      elttype = type->index_type ();
       elttype = check_typedef (elttype);
       if (TYPE_STUB (elttype))
 	{
@@ -422,7 +398,7 @@ m2_val_print (struct type *type, int emb
 
 	  fputs_filtered ("{", stream);
 
-	  i = get_discrete_bounds (range, &low_bound, &high_bound);
+	  i = get_discrete_bounds (range, &low_bound, &high_bound) ? 0 : -1;
 	maybe_bad_bstring:
 	  if (i < 0)
 	    {
@@ -433,8 +409,7 @@ m2_val_print (struct type *type, int emb
 
 	  for (i = low_bound; i <= high_bound; i++)
 	    {
-	      int element = value_bit_index (type, valaddr + embedded_offset,
-					     i);
+	      int element = value_bit_index (type, valaddr, i);
 
 	      if (element < 0)
 		{
@@ -449,16 +424,13 @@ m2_val_print (struct type *type, int emb
 		  need_comma = 1;
 
 		  if (i + 1 <= high_bound
-		      && value_bit_index (type, valaddr + embedded_offset,
-					  ++i))
+		      && value_bit_index (type, valaddr, ++i))
 		    {
 		      int j = i;
 
 		      fputs_filtered ("..", stream);
 		      while (i + 1 <= high_bound
-			     && value_bit_index (type,
-						 valaddr + embedded_offset,
-						 ++i))
+			     && value_bit_index (type, valaddr, ++i))
 			j = i;
 		      print_type_scalar (range, j, stream);
 		    }
@@ -472,8 +444,8 @@ m2_val_print (struct type *type, int emb
     case TYPE_CODE_RANGE:
       if (TYPE_LENGTH (type) == TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
 	{
-	  m2_val_print (TYPE_TARGET_TYPE (type), embedded_offset,
-			address, stream, recurse, original_value, options);
+	  struct value *v = value_cast (TYPE_TARGET_TYPE (type), val);
+	  m2_value_print_inner (v, stream, recurse, options);
 	  break;
 	}
       /* FIXME: create_static_range_type does not set the unsigned bit in a
@@ -497,9 +469,7 @@ m2_val_print (struct type *type, int emb
     case TYPE_CODE_BOOL:
     case TYPE_CODE_CHAR:
     default:
-      generic_val_print (type, embedded_offset, address,
-			 stream, recurse, original_value, options,
-			 &m2_decorations);
+      generic_value_print (val, stream, recurse, options, &m2_decorations);
       break;
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m32c-tdep.c ./gdb/m32c-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m32c-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m32c-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Renesas M32C target-dependent code for GDB, the GNU debugger.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,8 +27,8 @@
 #include "arch-utils.h"
 #include "frame.h"
 #include "frame-unwind.h"
-#include "dwarf2-frame.h"
-#include "dwarf2expr.h"
+#include "dwarf2/frame.h"
+#include "dwarf2/expr.h"
 #include "symtab.h"
 #include "gdbcore.h"
 #include "value.h"
@@ -1986,7 +1986,7 @@ static const struct frame_unwind m32c_un
 static int
 m32c_reg_arg_type (struct type *type)
 {
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
 
   return (code == TYPE_CODE_INT
 	  || code == TYPE_CODE_ENUM
@@ -2021,11 +2021,11 @@ m32c_push_dummy_call (struct gdbarch *gd
     struct type *func_type = value_type (function);
 
     /* Dereference function pointer types.  */
-    if (TYPE_CODE (func_type) == TYPE_CODE_PTR)
+    if (func_type->code () == TYPE_CODE_PTR)
       func_type = TYPE_TARGET_TYPE (func_type);
 
-    gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC ||
-		TYPE_CODE (func_type) == TYPE_CODE_METHOD);
+    gdb_assert (func_type->code () == TYPE_CODE_FUNC ||
+		func_type->code () == TYPE_CODE_METHOD);
 
 #if 0
     /* The ABI description in gcc/config/m32c/m32c.abi says that
@@ -2033,7 +2033,7 @@ m32c_push_dummy_call (struct gdbarch *gd
        separately, but the code in GCC doesn't actually do so.  */
     if (TYPE_PROTOTYPED (func_type))
 #endif
-      num_prototyped_args = TYPE_NFIELDS (func_type);
+      num_prototyped_args = func_type->num_fields ();
   }
 
   /* First, if the function returns an aggregate by value, push a
@@ -2153,7 +2153,7 @@ m32c_push_dummy_call (struct gdbarch *gd
 static int
 m32c_return_by_passed_buf (struct type *type)
 {
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
 
   return (code == TYPE_CODE_STRUCT
 	  || code == TYPE_CODE_UNION);
@@ -2399,9 +2399,9 @@ m32c_m16c_address_to_pointer (struct gdb
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   enum type_code target_code;
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type));
+  gdb_assert (type->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type));
 
-  target_code = TYPE_CODE (TYPE_TARGET_TYPE (type));
+  target_code = TYPE_TARGET_TYPE (type)->code ();
 
   if (target_code == TYPE_CODE_FUNC || target_code == TYPE_CODE_METHOD)
     {
@@ -2478,11 +2478,11 @@ m32c_m16c_pointer_to_address (struct gdb
   CORE_ADDR ptr;
   enum type_code target_code;
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type));
+  gdb_assert (type->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type));
 
   ptr = extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order);
 
-  target_code = TYPE_CODE (TYPE_TARGET_TYPE (type));
+  target_code = TYPE_TARGET_TYPE (type)->code ();
 
   if (target_code == TYPE_CODE_FUNC || target_code == TYPE_CODE_METHOD)
     {
@@ -2644,8 +2644,9 @@ m32c_gdbarch_init (struct gdbarch_info i
   return gdbarch;
 }
 
+void _initialize_m32c_tdep ();
 void
-_initialize_m32c_tdep (void)
+_initialize_m32c_tdep ()
 {
   register_gdbarch_init (bfd_arch_m32c, m32c_gdbarch_init);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m32r-linux-nat.c ./gdb/m32r-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m32r-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m32r-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux m32r.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -237,8 +237,9 @@ m32r_linux_nat_target::store_registers (
 		  _("Got request to store bad register number %d."), regno);
 }
 
+void _initialize_m32r_linux_nat ();
 void
-_initialize_m32r_linux_nat (void)
+_initialize_m32r_linux_nat ()
 {
   /* Register the target.  */
   linux_target = &the_m32r_linux_nat_target;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m32r-linux-tdep.c ./gdb/m32r-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m32r-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m32r-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux m32r.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -471,8 +471,9 @@ m32r_linux_init_abi (struct gdbarch_info
                                              svr4_fetch_objfile_link_map);
 }
 
+void _initialize_m32r_linux_tdep ();
 void
-_initialize_m32r_linux_tdep (void)
+_initialize_m32r_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_m32r, 0, GDB_OSABI_LINUX,
 			  m32r_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m32r-tdep.c ./gdb/m32r-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m32r-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m32r-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Renesas M32R, for GDB.
 
-   Copyright (C) 1996-2020 Free Software Foundation, Inc.
+   Copyright (C) 1996-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -690,7 +690,7 @@ m32r_push_dummy_call (struct gdbarch *gd
   for (argnum = 0, stack_offset = 0; argnum < nargs; argnum++)
     {
       type = value_type (args[argnum]);
-      typecode = TYPE_CODE (type);
+      typecode = type->code ();
       len = TYPE_LENGTH (type);
 
       memset (valbuf, 0, sizeof (valbuf));
@@ -911,8 +911,9 @@ m32r_gdbarch_init (struct gdbarch_info i
   return gdbarch;
 }
 
+void _initialize_m32r_tdep ();
 void
-_initialize_m32r_tdep (void)
+_initialize_m32r_tdep ()
 {
   register_gdbarch_init (bfd_arch_m32r, m32r_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m32r-tdep.h ./gdb/m32r-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m32r-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m32r-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Renesas M32R, for GDB.
  
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68hc11-tdep.c ./gdb/m68hc11-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68hc11-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m68hc11-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Motorola 68HC11 & 68HC12
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Contributed by Stephane Carrez, stcarrez@nerim.fr
 
@@ -24,7 +24,7 @@
 #include "frame.h"
 #include "frame-unwind.h"
 #include "frame-base.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "trad-frame.h"
 #include "symtab.h"
 #include "gdbtypes.h"
@@ -1290,9 +1290,9 @@ m68hc11_return_value (struct gdbarch *gd
 		      struct type *valtype, struct regcache *regcache,
 		      gdb_byte *readbuf, const gdb_byte *writebuf)
 {
-  if (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-      || TYPE_CODE (valtype) == TYPE_CODE_UNION
-      || TYPE_CODE (valtype) == TYPE_CODE_ARRAY 
+  if (valtype->code () == TYPE_CODE_STRUCT
+      || valtype->code () == TYPE_CODE_UNION
+      || valtype->code () == TYPE_CODE_ARRAY
       || TYPE_LENGTH (valtype) > 4)
     return RETURN_VALUE_STRUCT_CONVENTION;
   else
@@ -1512,8 +1512,9 @@ m68hc11_gdbarch_init (struct gdbarch_inf
   return gdbarch;
 }
 
+void _initialize_m68hc11_tdep ();
 void
-_initialize_m68hc11_tdep (void)
+_initialize_m68hc11_tdep ()
 {
   register_gdbarch_init (bfd_arch_m68hc11, m68hc11_gdbarch_init);
   register_gdbarch_init (bfd_arch_m68hc12, m68hc11_gdbarch_init);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-bsd-nat.c ./gdb/m68k-bsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-bsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m68k-bsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for Motorola 68000 BSD's.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,6 +17,8 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+/* We define this to get types like register_t.  */
+#define _KERNTYPES
 #include "defs.h"
 #include "gdbcore.h"
 #include "inferior.h"
@@ -28,8 +30,9 @@
 
 #include "m68k-tdep.h"
 #include "inf-ptrace.h"
+#include "nbsd-nat.h"
 
-struct m68k_bsd_nat_target final : public inf_ptrace_target
+struct m68k_bsd_nat_target final : public nbsd_nat_target
 {
   void fetch_registers (struct regcache *, int) override;
   void store_registers (struct regcache *, int) override;
@@ -54,7 +57,7 @@ m68kbsd_fpregset_supplies_p (int regnum)
 static void
 m68kbsd_supply_gregset (struct regcache *regcache, const void *gregs)
 {
-  const char *regs = gregs;
+  const gdb_byte *regs = (const gdb_byte *) gregs;
   int regnum;
 
   for (regnum = M68K_D0_REGNUM; regnum <= M68K_PC_REGNUM; regnum++)
@@ -67,7 +70,7 @@ static void
 m68kbsd_supply_fpregset (struct regcache *regcache, const void *fpregs)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  const char *regs = fpregs;
+  const gdb_byte *regs = (const gdb_byte *) fpregs;
   int regnum;
 
   for (regnum = M68K_FP0_REGNUM; regnum <= M68K_FPI_REGNUM; regnum++)
@@ -82,7 +85,7 @@ static void
 m68kbsd_collect_gregset (const struct regcache *regcache,
 			 void *gregs, int regnum)
 {
-  char *regs = gregs;
+  gdb_byte *regs = (gdb_byte *) gregs;
   int i;
 
   for (i = M68K_D0_REGNUM; i <= M68K_PC_REGNUM; i++)
@@ -118,12 +121,13 @@ void
 m68k_bsd_nat_target::fetch_registers (struct regcache *regcache, int regnum)
 {
   pid_t pid = regcache->ptid ().pid ();
+  int lwp = regcache->ptid ().lwp ();
 
   if (regnum == -1 || m68kbsd_gregset_supplies_p (regnum))
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
 	perror_with_name (_("Couldn't get registers"));
 
       m68kbsd_supply_gregset (regcache, &regs);
@@ -133,7 +137,7 @@ m68k_bsd_nat_target::fetch_registers (st
     {
       struct fpreg fpregs;
 
-      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't get floating point status"));
 
       m68kbsd_supply_fpregset (regcache, &fpregs);
@@ -147,17 +151,18 @@ void
 m68k_bsd_nat_target::store_registers (struct regcache *regcache, int regnum)
 {
   pid_t pid = regcache->ptid ().pid ();
+  int lwp = regcache->ptid ().lwp ();
 
   if (regnum == -1 || m68kbsd_gregset_supplies_p (regnum))
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
         perror_with_name (_("Couldn't get registers"));
 
       m68kbsd_collect_gregset (regcache, &regs, regnum);
 
-      if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
         perror_with_name (_("Couldn't write registers"));
     }
 
@@ -165,12 +170,12 @@ m68k_bsd_nat_target::store_registers (st
     {
       struct fpreg fpregs;
 
-      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't get floating point status"));
 
       m68kbsd_collect_fpregset (regcache, &fpregs, regnum);
 
-      if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't write floating point status"));
     }
 }
@@ -215,14 +220,15 @@ m68kbsd_supply_pcb (struct regcache *reg
   tmp = pcb->pcb_ps & 0xffff;
   regcache->raw_supply (M68K_PS_REGNUM, &tmp);
 
-  read_memory (pcb->pcb_regs[PCB_REGS_FP] + 4, (char *) &tmp, sizeof tmp);
+  read_memory (pcb->pcb_regs[PCB_REGS_FP] + 4, (gdb_byte *) &tmp, sizeof tmp);
   regcache->raw_supply (M68K_PC_REGNUM, &tmp);
 
   return 1;
 }
 
+void _initialize_m68kbsd_nat ();
 void
-_initialize_m68kbsd_nat (void)
+_initialize_m68kbsd_nat ()
 {
   add_inf_child_target (&the_m68k_bsd_nat_target);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-bsd-tdep.c ./gdb/m68k-bsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-bsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m68k-bsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Motorola 68000 BSD's.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -152,8 +152,9 @@ m68kbsd_init_abi (struct gdbarch_info in
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
 }
 
+void _initialize_m68kbsd_tdep ();
 void
-_initialize_m68kbsd_tdep (void)
+_initialize_m68kbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_m68k, 0, GDB_OSABI_NETBSD,
 			  m68kbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-linux-nat.c ./gdb/m68k-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m68k-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Motorola m68k native support for GNU/Linux.
 
-   Copyright (C) 1996-2020 Free Software Foundation, Inc.
+   Copyright (C) 1996-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -511,8 +511,9 @@ ps_get_thread_area (struct ps_prochandle
   return PS_OK;
 }
 
+void _initialize_m68k_linux_nat ();
 void
-_initialize_m68k_linux_nat (void)
+_initialize_m68k_linux_nat ()
 {
   /* Register the target.  */
   linux_target = &the_m68k_linux_nat_target;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-linux-tdep.c ./gdb/m68k-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m68k-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Motorola m68k target-dependent support for GNU/Linux.
 
-   Copyright (C) 1996-2020 Free Software Foundation, Inc.
+   Copyright (C) 1996-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -423,8 +423,9 @@ m68k_linux_init_abi (struct gdbarch_info
                                              svr4_fetch_objfile_link_map);
 }
 
+void _initialize_m68k_linux_tdep ();
 void
-_initialize_m68k_linux_tdep (void)
+_initialize_m68k_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_m68k, 0, GDB_OSABI_LINUX,
 			  m68k_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-tdep.c ./gdb/m68k-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m68k-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Motorola 68000 series.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,7 +18,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
@@ -191,7 +191,7 @@ m68k_convert_register_p (struct gdbarch
     return 0;
   return (regnum >= M68K_FP0_REGNUM && regnum <= M68K_FP0_REGNUM + 7
 	  /* We only support floating-point values.  */
-	  && TYPE_CODE (type) == TYPE_CODE_FLT
+	  && type->code () == TYPE_CODE_FLT
 	  && type != register_type (gdbarch, M68K_FP0_REGNUM));
 }
 
@@ -207,7 +207,7 @@ m68k_register_to_value (struct frame_inf
   gdb_byte from[M68K_MAX_REGISTER_SIZE];
   struct type *fpreg_type = register_type (gdbarch, M68K_FP0_REGNUM);
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
+  gdb_assert (type->code () == TYPE_CODE_FLT);
 
   /* Convert to TYPE.  */
   if (!get_frame_register_bytes (frame, regnum, 0,
@@ -232,7 +232,7 @@ m68k_value_to_register (struct frame_inf
 					   M68K_FP0_REGNUM);
 
   /* We only support floating-point values.  */
-  if (TYPE_CODE (type) != TYPE_CODE_FLT)
+  if (type->code () != TYPE_CODE_FLT)
     {
       warning (_("Cannot convert non-floating-point type "
 	       "to floating-point register value."));
@@ -308,13 +308,13 @@ m68k_svr4_extract_return_value (struct t
   struct gdbarch *gdbarch = regcache->arch ();
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
-  if (tdep->float_return && TYPE_CODE (type) == TYPE_CODE_FLT)
+  if (tdep->float_return && type->code () == TYPE_CODE_FLT)
     {
       struct type *fpreg_type = register_type (gdbarch, M68K_FP0_REGNUM);
       regcache->raw_read (M68K_FP0_REGNUM, buf);
       target_float_convert (buf, fpreg_type, valbuf, type);
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_PTR && TYPE_LENGTH (type) == 4)
+  else if (type->code () == TYPE_CODE_PTR && TYPE_LENGTH (type) == 4)
     regcache->raw_read (M68K_A0_REGNUM, valbuf);
   else
     m68k_extract_return_value (type, regcache, valbuf);
@@ -347,14 +347,14 @@ m68k_svr4_store_return_value (struct typ
   struct gdbarch *gdbarch = regcache->arch ();
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
-  if (tdep->float_return && TYPE_CODE (type) == TYPE_CODE_FLT)
+  if (tdep->float_return && type->code () == TYPE_CODE_FLT)
     {
       struct type *fpreg_type = register_type (gdbarch, M68K_FP0_REGNUM);
       gdb_byte buf[M68K_MAX_REGISTER_SIZE];
       target_float_convert (valbuf, type, buf, fpreg_type);
       regcache->raw_write (M68K_FP0_REGNUM, buf);
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_PTR && TYPE_LENGTH (type) == 4)
+  else if (type->code () == TYPE_CODE_PTR && TYPE_LENGTH (type) == 4)
     {
       regcache->raw_write (M68K_A0_REGNUM, valbuf);
       regcache->raw_write (M68K_D0_REGNUM, valbuf);
@@ -371,7 +371,7 @@ static int
 m68k_reg_struct_return_p (struct gdbarch *gdbarch, struct type *type)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
   int len = TYPE_LENGTH (type);
 
   gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION
@@ -394,7 +394,7 @@ m68k_return_value (struct gdbarch *gdbar
 		   struct type *type, struct regcache *regcache,
 		   gdb_byte *readbuf, const gdb_byte *writebuf)
 {
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
 
   /* GCC returns a `long double' in memory too.  */
   if (((code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION
@@ -430,7 +430,7 @@ m68k_svr4_return_value (struct gdbarch *
 			struct type *type, struct regcache *regcache,
 			gdb_byte *readbuf, const gdb_byte *writebuf)
 {
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
 
   if ((code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION
        || code == TYPE_CODE_COMPLEX)
@@ -463,9 +463,9 @@ m68k_svr4_return_value (struct gdbarch *
      changing TYPE into the type of the first member of the structure.
      Since that should work for all structures that have only one
      member, we don't bother to check the member's type here.  */
-  if (code == TYPE_CODE_STRUCT && TYPE_NFIELDS (type) == 1)
+  if (code == TYPE_CODE_STRUCT && type->num_fields () == 1)
     {
-      type = check_typedef (TYPE_FIELD_TYPE (type, 0));
+      type = check_typedef (type->field (0).type ());
       return m68k_svr4_return_value (gdbarch, function, type, regcache,
 				     readbuf, writebuf);
     }
@@ -511,9 +511,9 @@ m68k_push_dummy_call (struct gdbarch *gd
 
       /* Non-scalars bigger than 4 bytes are left aligned, others are
 	 right aligned.  */
-      if ((TYPE_CODE (value_type) == TYPE_CODE_STRUCT
-	   || TYPE_CODE (value_type) == TYPE_CODE_UNION
-	   || TYPE_CODE (value_type) == TYPE_CODE_ARRAY)
+      if ((value_type->code () == TYPE_CODE_STRUCT
+	   || value_type->code () == TYPE_CODE_UNION
+	   || value_type->code () == TYPE_CODE_ARRAY)
 	  && len > 4)
 	offset = 0;
       else
@@ -1281,8 +1281,9 @@ m68k_dump_tdep (struct gdbarch *gdbarch,
     return;
 }
 
+void _initialize_m68k_tdep ();
 void
-_initialize_m68k_tdep (void)
+_initialize_m68k_tdep ()
 {
   gdbarch_register (bfd_arch_m68k, m68k_gdbarch_init, m68k_dump_tdep);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-tdep.h ./gdb/m68k-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/m68k-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/m68k-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Motorola 68000 series.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/machoread.c ./gdb/machoread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/machoread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/machoread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Darwin support for GDB, the GNU debugger.
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    Contributed by AdaCore.
 
@@ -28,7 +28,6 @@
 #include "gdbcore.h"
 #include "mach-o.h"
 #include "aout/stab_gnu.h"
-#include "psympriv.h"
 #include "complaints.h"
 #include "gdb_bfd.h"
 #include <string>
@@ -494,7 +493,7 @@ macho_add_oso_symfile (oso_el *oso, cons
             {
               if (mach_o_debug_level > 4)
                 {
-                  struct gdbarch *arch = get_objfile_arch (main_objfile);
+                  struct gdbarch *arch = main_objfile->arch ();
                   printf_unfiltered
                     (_("Adding symbol %s (addr: %s)\n"),
                      sym->name, paddress (arch, sym->value));
@@ -568,7 +567,7 @@ macho_add_oso_symfile (oso_el *oso, cons
 
                   if (mach_o_debug_level > 3)
                     {
-                      struct gdbarch *arch = get_objfile_arch (main_objfile);
+                      struct gdbarch *arch = main_objfile->arch ();
                       printf_unfiltered
                         (_("resolve sect %s with %s (set to %s)\n"),
                          sec->name, sym->name,
@@ -640,7 +639,7 @@ macho_symfile_read_all_oso (std::vector<
 
 	  /* Open the archive and check the format.  */
 	  gdb_bfd_ref_ptr archive_bfd (gdb_bfd_open (archive_name.c_str (),
-						     gnutarget, -1));
+						     gnutarget));
 	  if (archive_bfd == NULL)
 	    {
 	      warning (_("Could not open OSO archive file \"%s\""),
@@ -706,7 +705,7 @@ macho_symfile_read_all_oso (std::vector<
 	}
       else
 	{
-	  gdb_bfd_ref_ptr abfd (gdb_bfd_open (oso->name, gnutarget, -1));
+	  gdb_bfd_ref_ptr abfd (gdb_bfd_open (oso->name, gnutarget));
 	  if (abfd == NULL)
             warning (_("`%s': can't open to read symbols: %s."), oso->name,
                      bfd_errmsg (bfd_get_error ()));
@@ -907,12 +906,7 @@ macho_symfile_offsets (struct objfile *o
   struct obj_section *osect;
 
   /* Allocate section_offsets.  */
-  objfile->num_sections = bfd_count_sections (objfile->obfd);
-  objfile->section_offsets = (struct section_offsets *)
-    obstack_alloc (&objfile->objfile_obstack,
-                   SIZEOF_N_SECTION_OFFSETS (objfile->num_sections));
-  memset (objfile->section_offsets, 0,
-          SIZEOF_N_SECTION_OFFSETS (objfile->num_sections));
+  objfile->section_offsets.assign (bfd_count_sections (objfile->obfd), 0);
 
   /* This code is run when we first add the objfile with
      symfile_add_with_addrs_or_offsets, when "addrs" not "offsets" are
@@ -966,8 +960,9 @@ static const struct sym_fns macho_sym_fn
   &psym_functions
 };
 
+void _initialize_machoread ();
 void
-_initialize_machoread (void)
+_initialize_machoread ()
 {
   add_symtab_fns (bfd_target_mach_o_flavour, &macho_sym_fns);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macrocmd.c ./gdb/macrocmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macrocmd.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/macrocmd.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* C preprocessor macro expansion commands for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
    Contributed by Red Hat, Inc.
 
    This file is part of GDB.
@@ -33,15 +33,6 @@
 
 static struct cmd_list_element *macrolist;
 
-static void
-macro_command (const char *arg, int from_tty)
-{
-  printf_unfiltered
-    ("\"macro\" must be followed by the name of a macro command.\n");
-  help_list (macrolist, "macro ", all_commands, gdb_stdout);
-}
-
-
 
 /* Macro expansion commands.  */
 
@@ -56,9 +47,6 @@ macro_inform_no_debuginfo (void)
 static void
 macro_expand_command (const char *exp, int from_tty)
 {
-  gdb::unique_xmalloc_ptr<struct macro_scope> ms;
-  gdb::unique_xmalloc_ptr<char> expanded;
-
   /* You know, when the user doesn't specify any expression, it would be
      really cool if this defaulted to the last expression evaluated.
      Then it would be easy to ask, "Hey, what did I just evaluate?"  But
@@ -69,10 +57,12 @@ macro_expand_command (const char *exp, i
            " expression you\n"
            "want to expand."));
 
-  ms = default_macro_scope ();
-  if (ms)
+  gdb::unique_xmalloc_ptr<macro_scope> ms = default_macro_scope ();
+
+  if (ms != nullptr)
     {
-      expanded = macro_expand (exp, standard_macro_lookup, ms.get ());
+      gdb::unique_xmalloc_ptr<char> expanded = macro_expand (exp, *ms);
+
       fputs_filtered ("expands to: ", gdb_stdout);
       fputs_filtered (expanded.get (), gdb_stdout);
       fputs_filtered ("\n", gdb_stdout);
@@ -85,9 +75,6 @@ macro_expand_command (const char *exp, i
 static void
 macro_expand_once_command (const char *exp, int from_tty)
 {
-  gdb::unique_xmalloc_ptr<struct macro_scope> ms;
-  gdb::unique_xmalloc_ptr<char> expanded;
-
   /* You know, when the user doesn't specify any expression, it would be
      really cool if this defaulted to the last expression evaluated.
      And it should set the once-expanded text as the new `last
@@ -98,10 +85,12 @@ macro_expand_once_command (const char *e
            " the expression\n"
            "you want to expand."));
 
-  ms = default_macro_scope ();
-  if (ms)
+  gdb::unique_xmalloc_ptr<macro_scope> ms = default_macro_scope ();
+
+  if (ms != nullptr)
     {
-      expanded = macro_expand_once (exp, standard_macro_lookup, ms.get ());
+      gdb::unique_xmalloc_ptr<char> expanded = macro_expand_once (exp, *ms);
+
       fputs_filtered ("expands to: ", gdb_stdout);
       fputs_filtered (expanded.get (), gdb_stdout);
       fputs_filtered ("\n", gdb_stdout);
@@ -458,14 +447,15 @@ macro_list_command (const char *exp, int
 
 /* Initializing the `macrocmd' module.  */
 
+void _initialize_macrocmd ();
 void
-_initialize_macrocmd (void)
+_initialize_macrocmd ()
 {
   /* We introduce a new command prefix, `macro', under which we'll put
      the various commands for working with preprocessor macros.  */
-  add_prefix_cmd ("macro", class_info, macro_command,
-		  _("Prefix for commands dealing with C preprocessor macros."),
-		  &macrolist, "macro ", 0, &cmdlist);
+  add_basic_prefix_cmd ("macro", class_info,
+			_("Prefix for commands dealing with C preprocessor macros."),
+			&macrolist, "macro ", 0, &cmdlist);
 
   add_cmd ("expand", no_class, macro_expand_command, _("\
 Fully expand any C/C++ preprocessor macro invocations in EXPRESSION.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macroexp.c ./gdb/macroexp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macroexp.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/macroexp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* C preprocessor macro expansion for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
    Contributed by Red Hat, Inc.
 
    This file is part of GDB.
@@ -21,6 +21,7 @@
 #include "gdb_obstack.h"
 #include "macrotab.h"
 #include "macroexp.h"
+#include "macroscope.h"
 #include "c-lang.h"
 
 
@@ -127,15 +128,14 @@ struct macro_buffer
       xfree (text);
   }
 
-  /* Release the text of the buffer to the caller, which is now
-     responsible for freeing it.  */
-  ATTRIBUTE_UNUSED_RESULT char *release ()
+  /* Release the text of the buffer to the caller.  */
+  gdb::unique_xmalloc_ptr<char> release ()
   {
     gdb_assert (! shared);
     gdb_assert (size);
     char *result = text;
     text = NULL;
-    return result;
+    return gdb::unique_xmalloc_ptr<char> (result);
   }
 
   /* Resize the buffer to be at least N bytes long.  Raise an error if
@@ -698,7 +698,7 @@ stringify (struct macro_buffer *dest, co
 
 /* See macroexp.h.  */
 
-char *
+gdb::unique_xmalloc_ptr<char>
 macro_stringify (const char *str)
 {
   int len = strlen (str);
@@ -877,9 +877,7 @@ gather_arguments (const char *name, stru
 static void scan (struct macro_buffer *dest,
                   struct macro_buffer *src,
                   struct macro_name_list *no_loop,
-                  macro_lookup_ftype *lookup_func,
-                  void *lookup_baton);
-
+		  const macro_scope &scope);
 
 /* A helper function for substitute_args.
    
@@ -959,8 +957,7 @@ substitute_args (struct macro_buffer *de
 		 int is_varargs, const struct macro_buffer *va_arg_name,
 		 const std::vector<struct macro_buffer> &argv,
                  struct macro_name_list *no_loop,
-                 macro_lookup_ftype *lookup_func,
-                 void *lookup_baton)
+		 const macro_scope &scope)
 {
   /* The token we are currently considering.  */
   struct macro_buffer tok;
@@ -1194,7 +1191,7 @@ substitute_args (struct macro_buffer *de
 		 referring to the argument's text, not the argument
 		 itself.  */
 	      struct macro_buffer arg_src (argv[arg].text, argv[arg].len);
-	      scan (dest, &arg_src, no_loop, lookup_func, lookup_baton);
+	      scan (dest, &arg_src, no_loop, scope);
 	      substituted = 1;
 	    }
 
@@ -1224,8 +1221,7 @@ expand (const char *id,
         struct macro_buffer *dest,
         struct macro_buffer *src,
         struct macro_name_list *no_loop,
-        macro_lookup_ftype *lookup_func,
-        void *lookup_baton)
+	const macro_scope &scope)
 {
   struct macro_name_list new_no_loop;
 
@@ -1243,7 +1239,7 @@ expand (const char *id,
       struct macro_buffer replacement_list (def->replacement,
 					    strlen (def->replacement));
 
-      scan (dest, &replacement_list, &new_no_loop, lookup_func, lookup_baton);
+      scan (dest, &replacement_list, &new_no_loop, scope);
       return 1;
     }
   else if (def->kind == macro_function_like)
@@ -1310,7 +1306,7 @@ expand (const char *id,
          expand an argument until we see how it's being used.  */
       struct macro_buffer substituted (0);
       substitute_args (&substituted, def, is_varargs, &va_arg_name,
-		       argv, no_loop, lookup_func, lookup_baton);
+		       argv, no_loop, scope);
 
       /* Now `substituted' is the macro's replacement list, with all
          argument values substituted into it properly.  Re-scan it for
@@ -1323,7 +1319,7 @@ expand (const char *id,
          `substituted's original text buffer after scanning it so we
          can free it.  */
       struct macro_buffer substituted_src (substituted.text, substituted.len);
-      scan (dest, &substituted_src, &new_no_loop, lookup_func, lookup_baton);
+      scan (dest, &substituted_src, &new_no_loop, scope);
 
       return 1;
     }
@@ -1344,8 +1340,7 @@ maybe_expand (struct macro_buffer *dest,
               struct macro_buffer *src_first,
               struct macro_buffer *src_rest,
               struct macro_name_list *no_loop,
-              macro_lookup_ftype *lookup_func,
-              void *lookup_baton)
+	      const macro_scope &scope)
 {
   gdb_assert (src_first->shared);
   gdb_assert (src_rest->shared);
@@ -1363,11 +1358,9 @@ maybe_expand (struct macro_buffer *dest,
       if (! currently_rescanning (no_loop, id.c_str ()))
         {
           /* Does this identifier have a macro definition in scope?  */
-          struct macro_definition *def = lookup_func (id.c_str (),
-						      lookup_baton);
+          macro_definition *def = standard_macro_lookup (id.c_str (), scope);
 
-          if (def && expand (id.c_str (), def, dest, src_rest, no_loop,
-                             lookup_func, lookup_baton))
+          if (def && expand (id.c_str (), def, dest, src_rest, no_loop, scope))
 	    return 1;
         }
     }
@@ -1385,8 +1378,7 @@ static void
 scan (struct macro_buffer *dest,
       struct macro_buffer *src,
       struct macro_name_list *no_loop,
-      macro_lookup_ftype *lookup_func,
-      void *lookup_baton)
+      const macro_scope &scope)
 {
   gdb_assert (src->shared);
   gdb_assert (! dest->shared);
@@ -1408,7 +1400,7 @@ scan (struct macro_buffer *dest,
           dest->last_token = dest->len;
         }
 
-      if (! maybe_expand (dest, &tok, src, no_loop, lookup_func, lookup_baton))
+      if (! maybe_expand (dest, &tok, src, no_loop, scope))
         /* We didn't end up expanding tok as a macro reference, so
            simply append it to dest.  */
         append_tokens_without_splicing (dest, &tok);
@@ -1425,36 +1417,29 @@ scan (struct macro_buffer *dest,
 
 
 gdb::unique_xmalloc_ptr<char>
-macro_expand (const char *source,
-              macro_lookup_ftype *lookup_func,
-              void *lookup_func_baton)
+macro_expand (const char *source, const macro_scope &scope)
 {
   struct macro_buffer src (source, strlen (source));
 
   struct macro_buffer dest (0);
   dest.last_token = 0;
 
-  scan (&dest, &src, 0, lookup_func, lookup_func_baton);
+  scan (&dest, &src, 0, scope);
 
   dest.appendc ('\0');
 
-  return gdb::unique_xmalloc_ptr<char> (dest.release ());
+  return dest.release ();
 }
 
 
 gdb::unique_xmalloc_ptr<char>
-macro_expand_once (const char *source,
-                   macro_lookup_ftype *lookup_func,
-                   void *lookup_func_baton)
+macro_expand_once (const char *source, const macro_scope &scope)
 {
   error (_("Expand-once not implemented yet."));
 }
 
-
-char *
-macro_expand_next (const char **lexptr,
-                   macro_lookup_ftype *lookup_func,
-                   void *lookup_baton)
+gdb::unique_xmalloc_ptr<char>
+macro_expand_next (const char **lexptr, const macro_scope &scope)
 {
   struct macro_buffer tok;
 
@@ -1467,10 +1452,10 @@ macro_expand_next (const char **lexptr,
 
   /* Get the text's first preprocessing token.  */
   if (! get_token (&tok, &src))
-    return 0;
+    return nullptr;
 
   /* If it's a macro invocation, expand it.  */
-  if (maybe_expand (&dest, &tok, &src, 0, lookup_func, lookup_baton))
+  if (maybe_expand (&dest, &tok, &src, 0, scope))
     {
       /* It was a macro invocation!  Package up the expansion as a
          null-terminated string and return it.  Set *lexptr to the
@@ -1482,6 +1467,6 @@ macro_expand_next (const char **lexptr,
   else
     {
       /* It wasn't a macro invocation.  */
-      return 0;
+      return nullptr;
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macroexp.h ./gdb/macroexp.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macroexp.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/macroexp.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Interface to C preprocessor macro expansion for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
    Contributed by Red Hat, Inc.
 
    This file is part of GDB.
@@ -21,38 +21,26 @@
 #ifndef MACROEXP_H
 #define MACROEXP_H
 
-/* A function for looking up preprocessor macro definitions.  Return
-   the preprocessor definition of NAME in scope according to BATON, or
-   zero if NAME is not defined as a preprocessor macro.
-
-   The caller must not free or modify the definition returned.  It is
-   probably unwise for the caller to hold pointers to it for very
-   long; it probably lives in some objfile's obstacks.  */
-typedef struct macro_definition *(macro_lookup_ftype) (const char *name,
-                                                       void *baton);
-
-
-/* Expand any preprocessor macros in SOURCE, and return the expanded
-   text.  Use LOOKUP_FUNC and LOOKUP_FUNC_BATON to find identifiers'
-   preprocessor definitions.  SOURCE is a null-terminated string.  The
-   result is a null-terminated string, allocated using xmalloc; it is
-   the caller's responsibility to free it.  */
+struct macro_scope;
+
+/* Expand any preprocessor macros in SOURCE (a null-terminated string), and
+   return the expanded text.
+
+   Use SCOPE to find identifiers' preprocessor definitions.
+
+   The result is a null-terminated string.  */
 gdb::unique_xmalloc_ptr<char> macro_expand (const char *source,
-					    macro_lookup_ftype *lookup_func,
-					    void *lookup_func_baton);
+					    const macro_scope &scope);
 
+/* Expand all preprocessor macro references that appear explicitly in SOURCE
+   (a null-terminated string), but do not expand any new macro references
+   introduced by that first level of expansion.
 
-/* Expand all preprocessor macro references that appear explicitly in
-   SOURCE, but do not expand any new macro references introduced by
-   that first level of expansion.  Use LOOKUP_FUNC and
-   LOOKUP_FUNC_BATON to find identifiers' preprocessor definitions.
-   SOURCE is a null-terminated string.  The result is a
-   null-terminated string, allocated using xmalloc; it is the caller's
-   responsibility to free it.  */
-gdb::unique_xmalloc_ptr<char> macro_expand_once (const char *source,
-						 macro_lookup_ftype *lookup_func,
-						 void *lookup_func_baton);
+   Use SCOPE to find identifiers' preprocessor definitions.
 
+   The result is a null-terminated string.  */
+gdb::unique_xmalloc_ptr<char> macro_expand_once (const char *source,
+						 const macro_scope &scope);
 
 /* If the null-terminated string pointed to by *LEXPTR begins with a
    macro invocation, return the result of expanding that invocation as
@@ -61,9 +49,9 @@ gdb::unique_xmalloc_ptr<char> macro_expa
    contains no further macro invocations.
 
    Otherwise, if *LEXPTR does not start with a macro invocation,
-   return zero, and leave *LEXPTR unchanged.
+   return nullptr, and leave *LEXPTR unchanged.
 
-   Use LOOKUP_FUNC and LOOKUP_BATON to find macro definitions.
+   Use SCOPE to find macro definitions.
 
    If this function returns a string, the caller is responsible for
    freeing it, using xfree.
@@ -80,9 +68,8 @@ gdb::unique_xmalloc_ptr<char> macro_expa
    much have to do tokenization to find the end of the string that
    needs to be macro-expanded.  Our C/C++ tokenizer isn't really
    designed to be called by anything but the yacc parser engine.  */
-char *macro_expand_next (const char **lexptr,
-                         macro_lookup_ftype *lookup_func,
-                         void *lookup_baton);
+gdb::unique_xmalloc_ptr<char> macro_expand_next (const char **lexptr,
+						 const macro_scope &scope);
 
 /* Functions to classify characters according to cpp rules.  */
 
@@ -91,9 +78,7 @@ int macro_is_identifier_nondigit (int c)
 int macro_is_digit (int c);
 
 
-/* Stringify STR according to C rules and return an xmalloc'd pointer
-   to the result.  */
-
-char *macro_stringify (const char *str);
+/* Stringify STR according to C rules and return a null-terminated string.  */
+gdb::unique_xmalloc_ptr<char> macro_stringify (const char *str);
 
 #endif /* MACROEXP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macroscope.c ./gdb/macroscope.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macroscope.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/macroscope.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Functions for deciding which macros are currently in scope.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
    Contributed by Red Hat, Inc.
 
    This file is part of GDB.
@@ -140,20 +140,21 @@ default_macro_scope (void)
    location given by BATON, which must be a pointer to a `struct
    macro_scope' structure.  */
 struct macro_definition *
-standard_macro_lookup (const char *name, void *baton)
+standard_macro_lookup (const char *name, const macro_scope &ms)
 {
-  struct macro_scope *ms = (struct macro_scope *) baton;
-  struct macro_definition *result;
-
   /* Give user-defined macros priority over all others.  */
-  result = macro_lookup_definition (macro_main (macro_user_macros), -1, name);
-  if (! result)
-    result = macro_lookup_definition (ms->file, ms->line, name);
+  macro_definition *result
+    = macro_lookup_definition (macro_main (macro_user_macros), -1, name);
+
+  if (result == nullptr)
+    result = macro_lookup_definition (ms.file, ms.line, name);
+
   return result;
 }
 
+void _initialize_macroscope ();
 void
-_initialize_macroscope (void)
+_initialize_macroscope ()
 {
   macro_user_macros = new_macro_table (NULL, NULL, NULL);
   macro_set_main (macro_user_macros, "<user-defined>");
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macroscope.h ./gdb/macroscope.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macroscope.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/macroscope.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Interface to functions for deciding which macros are currently in scope.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
    Contributed by Red Hat, Inc.
 
    This file is part of GDB.
@@ -56,12 +56,9 @@ gdb::unique_xmalloc_ptr<struct macro_sco
    the user macro scope.  */
 gdb::unique_xmalloc_ptr<struct macro_scope> default_macro_scope (void);
 
-
 /* Look up the definition of the macro named NAME in scope at the source
-   location given by BATON, which must be a pointer to a `struct
-   macro_scope' structure.  This function is suitable for use as
-   a macro_lookup_ftype function.  */
-struct macro_definition *standard_macro_lookup (const char *name, void *baton);
-
+   location given by MS.  */
+macro_definition *standard_macro_lookup (const char *name,
+					 const macro_scope &ms);
 
 #endif /* MACROSCOPE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macrotab.c ./gdb/macrotab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macrotab.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/macrotab.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* C preprocessor macro tables for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
    Contributed by Red Hat, Inc.
 
    This file is part of GDB.
@@ -882,25 +882,19 @@ macro_undef (struct macro_source_file *s
 static struct macro_definition *
 fixup_definition (const char *filename, int line, struct macro_definition *def)
 {
-  static char *saved_expansion;
-
-  if (saved_expansion)
-    {
-      xfree (saved_expansion);
-      saved_expansion = NULL;
-    }
+  static gdb::unique_xmalloc_ptr<char> saved_expansion;
 
   if (def->kind == macro_object_like)
     {
       if (def->argc == macro_FILE)
 	{
 	  saved_expansion = macro_stringify (filename);
-	  def->replacement = saved_expansion;
+	  def->replacement = saved_expansion.get ();
 	}
       else if (def->argc == macro_LINE)
 	{
-	  saved_expansion = xstrprintf ("%d", line);
-	  def->replacement = saved_expansion;
+	  saved_expansion.reset (xstrprintf ("%d", line));
+	  def->replacement = saved_expansion.get ();
 	}
     }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macrotab.h ./gdb/macrotab.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/macrotab.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/macrotab.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Interface to C preprocessor macro tables for GDB.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
    Contributed by Red Hat, Inc.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/main.c ./gdb/main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/main.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/main.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Top level stuff for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -28,7 +28,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <ctype.h>
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "ui-out.h"
 
 #include "interps.h"
@@ -53,6 +53,7 @@
 #include "gdbtk/generic/gdbtk.h"
 #endif
 #include "gdbsupport/alt-stack.h"
+#include "observable.h"
 
 /* The selected interpreter.  This will be used as a set command
    variable, so it should always be malloc'ed - since
@@ -124,7 +125,8 @@ set_gdb_data_directory (const char *new_
       print_sys_errmsg (new_datadir, save_errno);
     }
   else if (!S_ISDIR (st.st_mode))
-    warning (_("%s is not a directory."), new_datadir);
+    warning (_("%ps is not a directory."),
+	     styled_string (file_name_style.style (), new_datadir));
 
   gdb_datadir = gdb_realpath (new_datadir).get ();
 
@@ -335,6 +337,61 @@ get_init_files (std::vector<std::string>
   *local_gdbinit = localinit;
 }
 
+/* Start up the event loop.  This is the entry point to the event loop
+   from the command loop.  */
+
+static void
+start_event_loop ()
+{
+  /* Loop until there is nothing to do.  This is the entry point to
+     the event loop engine.  gdb_do_one_event will process one event
+     for each invocation.  It blocks waiting for an event and then
+     processes it.  */
+  while (1)
+    {
+      int result = 0;
+
+      try
+	{
+	  result = gdb_do_one_event ();
+	}
+      catch (const gdb_exception &ex)
+	{
+	  exception_print (gdb_stderr, ex);
+
+	  /* If any exception escaped to here, we better enable
+	     stdin.  Otherwise, any command that calls async_disable_stdin,
+	     and then throws, will leave stdin inoperable.  */
+	  SWITCH_THRU_ALL_UIS ()
+	    {
+	      async_enable_stdin ();
+	    }
+	  /* If we long-jumped out of do_one_event, we probably didn't
+	     get around to resetting the prompt, which leaves readline
+	     in a messed-up state.  Reset it here.  */
+	  current_ui->prompt_state = PROMPT_NEEDED;
+	  gdb::observers::command_error.notify ();
+	  /* This call looks bizarre, but it is required.  If the user
+	     entered a command that caused an error,
+	     after_char_processing_hook won't be called from
+	     rl_callback_read_char_wrapper.  Using a cleanup there
+	     won't work, since we want this function to be called
+	     after a new prompt is printed.  */
+	  if (after_char_processing_hook)
+	    (*after_char_processing_hook) ();
+	  /* Maybe better to set a flag to be checked somewhere as to
+	     whether display the prompt or not.  */
+	}
+
+      if (result < 0)
+	break;
+    }
+
+  /* We are done with the event loop.  There are no more event sources
+     to listen to.  So we exit GDB.  */
+  return;
+}
+
 /* Call command_loop.  */
 
 /* Prevent inlining this function for the benefit of GDB's selftests
@@ -574,14 +631,9 @@ captured_main_1 (struct captured_main_ar
   gdb_datadir = relocate_gdb_directory (GDB_DATADIR,
 					GDB_DATADIR_RELOCATABLE);
 
-#ifdef WITH_PYTHON_PATH
-  {
-    /* For later use in helping Python find itself.  */
-    char *tmp = concat (WITH_PYTHON_PATH, SLASH_STRING, "lib", (char *) NULL);
-
-    python_libdir = relocate_gdb_directory (tmp, PYTHON_PATH_RELOCATABLE);
-    xfree (tmp);
-  }
+#ifdef WITH_PYTHON_LIBDIR
+  python_libdir = relocate_gdb_directory (WITH_PYTHON_LIBDIR,
+					  PYTHON_LIBDIR_RELOCATABLE);
 #endif
 
 #ifdef RELOC_SRCDIR
@@ -954,7 +1006,6 @@ captured_main_1 (struct captured_main_ar
   if (print_help)
     {
       print_gdb_help (gdb_stdout);
-      fputs_unfiltered ("\n", gdb_stdout);
       exit (0);
     }
 
@@ -1120,7 +1171,7 @@ captured_main_1 (struct captured_main_ar
     }
 
   if (ttyarg != NULL)
-    set_inferior_io_terminal (ttyarg);
+    current_inferior ()->set_tty (ttyarg);
 
   /* Error messages should no longer be distinguished with extra output.  */
   warning_pre_print = _("warning: ");
@@ -1340,7 +1391,11 @@ For more information, type \"help\" from
 GDB manual (available as on-line info or a printed manual).\n\
 "), stream);
   if (REPORT_BUGS_TO[0] && stream == gdb_stdout)
-    fprintf_unfiltered (stream, _("\
-Report bugs to \"%s\".\n\
+    fprintf_unfiltered (stream, _("\n\
+Report bugs to %s.\n\
 "), REPORT_BUGS_TO);
+  if (stream == gdb_stdout)
+    fprintf_unfiltered (stream, _("\n\
+You can ask GDB-related questions on the GDB users mailing list\n\
+(gdb@sourceware.org) or on GDB's IRC channel (#gdb on Freenode).\n"));
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/main.h ./gdb/main.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/main.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/main.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Main interface for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/MAINTAINERS ./gdb/MAINTAINERS
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/MAINTAINERS	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/MAINTAINERS	2021-05-21 01:57:24.000000000 +0000
@@ -156,6 +156,7 @@ Doug Evans			dje@google.com
 Simon Marchi			simon.marchi@polymtl.ca
 Yao Qi				qiyao@sourceware.org
 Tom Tromey			tom@tromey.com
+Tom de Vries			tdevries@suse.de
 Ulrich Weigand			Ulrich.Weigand@de.ibm.com
 Eli Zaretskii			eliz@gnu.org
 
@@ -241,11 +242,17 @@ the native maintainer when resolving ABI
 
 	alpha		--target=alpha-elf ,-Werror
 
+	arc		--target=arc-elf
+			Shahab Vahedi		shahab@synopsys.com
+
 	arm		--target=arm-elf ,-Werror
 			Alan Hayward		alan.hayward@arm.com
 
 	avr		--target=avr ,-Werror
 
+	bpf		--target=bpf-unknown-none
+			Jose E. Marchesi	jose.marchesi@oracle.com
+
 	cris		--target=cris-elf ,-Werror ,
 			(sim does not build with -Werror)
 
@@ -285,8 +292,7 @@ the native maintainer when resolving ABI
 	moxie		--target=moxie-elf ,-Werror
 			Anthony Green		green@moxielogic.com
 
-	ms1		--target=ms1-elf ,-Werror
-			Kevin Buettner		kevinb@redhat.com
+	ms1		Deleted
 
 	nios2		--target=nios2-elf ,-Werror
 			--target=nios2-linux-gnu ,-Werror
@@ -304,7 +310,7 @@ the native maintainer when resolving ABI
 	riscv		--target=riscv32-elf ,-Werror
 			--target=riscv64-elf ,-Werror
 			Andrew Burgess		andrew.burgess@embecosm.com
-			Palmer Dabbelt		palmer@sifive.com
+			Palmer Dabbelt		palmer@dabbelt.com
 
 	rl78		--target=rl78-elf ,-Werror
 
@@ -371,7 +377,7 @@ documentation		Eli Zaretskii		eliz@gnu.o
 testsuite
   gdbtk (gdb.gdbtk)     Keith Seitz             keiths@redhat.com
 
-SystemTap		Sergio Durigan Junior	sergiodj@redhat.com
+SystemTap		Sergio Durigan Junior	sergiodj@sergiodj.net
 
 
 
@@ -439,6 +445,7 @@ To get recommended for the Write After A
 FSF assignment and have submitted one good patch.
 
 Tankut Baris Aktemur				tankut.baris.aktemur@intel.com
+Mihails Strasuns				mihails.strasuns@intel.com
 Pedro Alves					pedro_alves@portugalmail.pt
 David Anderson					davea@sgi.com
 John David Anglin				dave.anglin@nrc-cnrc.gc.ca
@@ -488,10 +495,12 @@ Philippe De Muyter				phdm@macqel.be
 Dhananjay Deshpande				dhananjayd@kpitcummins.com
 Markus Deuling					deuling@de.ibm.com
 Klee Dienes					kdienes@apple.com
+Hannes Domani					ssbssa@yahoo.de
 Gabriel Dos Reis                                gdr@integrable-solutions.net
-Sergio Durigan Junior				sergiodj@redhat.com
+Sergio Durigan Junior				sergiodj@sergiodj.net
 Michael Eager					eager@eagercon.com
 Richard Earnshaw				rearnsha@arm.com
+Bernd Edlinger					bernd.edlinger@hotmail.de
 Steve Ellcey					sje@cup.hp.com
 Frank Ch. Eigler				fche@redhat.com
 Ben Elliston					bje@gnu.org
@@ -631,6 +640,7 @@ Thomas Schwinge					tschwinge@gnu.org
 Keith Seitz					keiths@redhat.com
 Carlos Eduardo Seo				cseo@linux.vnet.ibm.com
 Ozkan Sezer					sezeroz@gmail.com
+Alok Kumar Sharma				AlokKumar.Sharma@amd.com
 Marcus Shawcroft				marcus.shawcroft@arm.com
 Stan Shebs					stanshebs@google.com
 Joel Sherrill					joel.sherrill@oarcorp.com
@@ -658,10 +668,10 @@ Kai Tietz					ktietz@redhat.com
 Andreas Tobler					andreast@fgznet.ch
 Jon Turney					jon.turney@dronecode.org.uk
 David Ung					davidu@mips.com
+Shahab Vahedi					shahab@synopsys.com
 D Venkatasubramanian				dvenkat@noida.hcltech.com
 Corinna Vinschen				vinschen@redhat.com
 Jan Vrany					jan.vrany@fit.cvut.cz
-Tom de Vries					tdevries@suse.de
 Sami Wagiaalla					swagiaal@redhat.com
 Keith Walker					keith.walker@arm.com
 Ricard Wanderlof				ricardw@axis.com
@@ -672,7 +682,7 @@ Philippe Waroquiers				philippe.waroquie
 Ulrich Weigand					uweigand@de.ibm.com
 Ken Werner					ken.werner@de.ibm.com
 Tim Wiederhake					tim.wiederhake@intel.com
-Mark Wielaard					mjw@redhat.com
+Mark Wielaard					mark@klomp.org
 Nathan Williams					nathanw@wasabisystems.com
 Bob Wilson					bob.wilson@acm.org
 Jim Wilson					wilson@tuliptree.org
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/maint.c ./gdb/maint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/maint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/maint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for GDB maintenance commands.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    Written by Fred Fish at Cygnus Support.
 
@@ -52,16 +52,6 @@
 
 static void maintenance_do_deprecate (const char *, int);
 
-/* Access the maintenance subcommands.  */
-
-static void
-maintenance_command (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"maintenance\" must be followed by "
-		       "the name of a maintenance command.\n"));
-  help_list (maintenancelist, "maintenance ", all_commands, gdb_stdout);
-}
-
 #ifndef _WIN32
 static void
 maintenance_dump_me (const char *args, int from_tty)
@@ -139,32 +129,6 @@ maintenance_space_display (const char *a
     set_per_command_space (strtol (args, NULL, 10));
 }
 
-/* The "maintenance info" command is defined as a prefix, with
-   allow_unknown 0.  Therefore, its own definition is called only for
-   "maintenance info" with no args.  */
-
-static void
-maintenance_info_command (const char *arg, int from_tty)
-{
-  printf_unfiltered (_("\"maintenance info\" must be followed "
-		       "by the name of an info command.\n"));
-  help_list (maintenanceinfolist, "maintenance info ", all_commands,
-	     gdb_stdout);
-}
-
-/* The "maintenance check" command is defined as a prefix, with
-   allow_unknown 0.  Therefore, its own definition is called only for
-   "maintenance check" with no args.  */
-
-static void
-maintenance_check_command (const char *arg, int from_tty)
-{
-  printf_unfiltered (_("\"maintenance check\" must be followed "
-		       "by the name of a check command.\n"));
-  help_list (maintenancechecklist, "maintenance check ", all_commands,
-	     gdb_stdout);
-}
-
 /* Mini tokenizing lexer for 'maint info sections' command.  */
 
 static int
@@ -281,37 +245,16 @@ maint_print_section_info (const char *na
   printf_filtered ("\n");
 }
 
-/* Information passed between the "maintenance info sections" command, and
-   the worker function that prints each section.  */
-struct maint_print_section_data
-{
-  /* The GDB objfile we're printing this section for.  */
-  struct objfile *objfile;
-
-  /* The argument string passed by the user to the top level maintenance
-     info sections command.  Used for filtering which sections are
-     printed.  */
-  const char *arg;
-
-  /* The number of digits in the highest section index for all sections
-     from the bfd object associated with OBJFILE.  Used when pretty
-     printing the index number to ensure all of the indexes line up.  */
-  int index_digits;
-
-  /* Constructor.  */
-  maint_print_section_data (struct objfile *objfile, const char *arg,
-			    bfd *abfd)
-    : objfile (objfile),
-      arg(arg)
-  {
-    int section_count = gdb_bfd_count_sections (abfd);
-    index_digits = ((int) log10 ((float) section_count)) + 1;
-  }
-
-private:
-  maint_print_section_data () = delete;
-  maint_print_section_data (const maint_print_section_data &) = delete;
-};
+/* Return the number of digits required to display COUNT in decimal.
+
+   Used when pretty printing index numbers to ensure all of the indexes line
+   up.*/
+
+static int
+index_digits (int count)
+{
+  return ((int) log10 ((float) count)) + 1;
+}
 
 /* Helper function to pretty-print the section index of ASECT from ABFD.
    The INDEX_DIGITS is the number of digits in the largest index that will
@@ -328,21 +271,20 @@ print_section_index (bfd *abfd,
   printf_filtered ("%-*s", (index_digits + 4), result.c_str ());
 }
 
-/* Print information about ASECT from ABFD.  DATUM holds a pointer to a
-   maint_print_section_data object.  The section will be printed using the
-   VMA's from the bfd, which will not be the relocated addresses for bfds
-   that should be relocated.  The information must be printed with the
-   same layout as PRINT_OBJFILE_SECTION_INFO below.  */
+/* Print information about ASECT from ABFD.  The section will be printed using
+   the VMA's from the bfd, which will not be the relocated addresses for bfds
+   that should be relocated.  The information must be printed with the same
+   layout as PRINT_OBJFILE_SECTION_INFO below.
+
+   ARG is the argument string passed by the user to the top level maintenance
+   info sections command.  Used for filtering which sections are printed.  */
 
 static void
-print_bfd_section_info (bfd *abfd,
-			asection *asect,
-			void *datum)
+print_bfd_section_info (bfd *abfd, asection *asect, const char *arg,
+			int index_digits)
 {
   flagword flags = bfd_section_flags (asect);
   const char *name = bfd_section_name (asect);
-  maint_print_section_data *print_data = (maint_print_section_data *) datum;
-  const char *arg = print_data->arg;
 
   if (arg == NULL || *arg == '\0'
       || match_substring (arg, name)
@@ -354,7 +296,7 @@ print_bfd_section_info (bfd *abfd,
 
       addr = bfd_section_vma (asect);
       endaddr = addr + bfd_section_size (asect);
-      print_section_index (abfd, asect, print_data->index_digits);
+      print_section_index (abfd, asect, index_digits);
       maint_print_section_info (name, flags, addr, endaddr,
 				asect->filepos, addr_size);
     }
@@ -363,26 +305,26 @@ print_bfd_section_info (bfd *abfd,
 /* Print information about ASECT which is GDB's wrapper around a section
    from ABFD.  The information must be printed with the same layout as
    PRINT_BFD_SECTION_INFO above.  PRINT_DATA holds information used to
-   filter which sections are printed, and for formatting the output.  */
+   filter which sections are printed, and for formatting the output.
+
+   ARG is the argument string passed by the user to the top level maintenance
+   info sections command.  Used for filtering which sections are printed.  */
 
 static void
-print_objfile_section_info (bfd *abfd,
-			    struct obj_section *asect,
-			    maint_print_section_data *print_data)
+print_objfile_section_info (bfd *abfd, struct obj_section *asect,
+			    const char *arg, int index_digits)
 {
   flagword flags = bfd_section_flags (asect->the_bfd_section);
   const char *name = bfd_section_name (asect->the_bfd_section);
-  const char *string = print_data->arg;
 
-  if (string == NULL || *string == '\0'
-      || match_substring (string, name)
-      || match_bfd_flags (string, flags))
+  if (arg == NULL || *arg == '\0'
+      || match_substring (arg, name)
+      || match_bfd_flags (arg, flags))
     {
       struct gdbarch *gdbarch = gdbarch_from_bfd (abfd);
       int addr_size = gdbarch_addr_bit (gdbarch) / 8;
 
-      print_section_index (abfd, asect->the_bfd_section,
-			   print_data->index_digits);
+      print_section_index (abfd, asect->the_bfd_section, index_digits);
       maint_print_section_info (name, flags,
 				obj_section_addr (asect),
 				obj_section_endaddr (asect),
@@ -412,26 +354,25 @@ maint_obj_section_from_bfd_section (bfd
   return osect;
 }
 
-/* Print information about ASECT from ABFD.  DATUM holds a pointer to a
-   maint_print_section_data object.  Where possible the information for
-   ASECT will print the relocated addresses of the section.  */
+/* Print information about ASECT from ABFD.  Where possible the information for
+   ASECT will print the relocated addresses of the section.
+
+   ARG is the argument string passed by the user to the top level maintenance
+   info sections command.  Used for filtering which sections are printed.  */
 
 static void
-print_bfd_section_info_maybe_relocated (bfd *abfd,
-					asection *asect,
-					void *datum)
+print_bfd_section_info_maybe_relocated (bfd *abfd, asection *asect,
+					objfile *objfile, const char *arg,
+					int index_digits)
 {
-  maint_print_section_data *print_data = (maint_print_section_data *) datum;
-  objfile *objfile = print_data->objfile;
-
   gdb_assert (objfile->sections != NULL);
   obj_section *osect
     = maint_obj_section_from_bfd_section (abfd, asect, objfile);
 
   if (osect->the_bfd_section == NULL)
-    print_bfd_section_info (abfd, asect, datum);
+    print_bfd_section_info (abfd, asect, arg, index_digits);
   else
-    print_objfile_section_info (abfd, osect, print_data);
+    print_objfile_section_info (abfd, osect, arg, index_digits);
 }
 
 /* Implement the "maintenance info sections" command.  */
@@ -466,24 +407,26 @@ maintenance_info_sections (const char *a
 	  else if (ofile->obfd != exec_bfd)
 	    continue;
 
-	  maint_print_section_data print_data (ofile, arg, ofile->obfd);
+	  int section_count = gdb_bfd_count_sections (ofile->obfd);
 
-	  bfd_map_over_sections (ofile->obfd,
-				 print_bfd_section_info_maybe_relocated,
-				 (void *) &print_data);
+	  for (asection *sect : gdb_bfd_sections (ofile->obfd))
+	    print_bfd_section_info_maybe_relocated
+	      (ofile->obfd, sect, ofile, arg, index_digits (section_count));
 	}
     }
 
   if (core_bfd)
     {
-      maint_print_section_data print_data (nullptr, arg, core_bfd);
-
       printf_filtered (_("Core file:\n"));
       printf_filtered ("    `%s', ", bfd_get_filename (core_bfd));
       wrap_here ("        ");
       printf_filtered (_("file type %s.\n"), bfd_get_target (core_bfd));
-      bfd_map_over_sections (core_bfd, print_bfd_section_info,
-			     (void *) &print_data);
+
+      int section_count = gdb_bfd_count_sections (core_bfd);
+
+      for (asection *sect : gdb_bfd_sections (core_bfd))
+	print_bfd_section_info (core_bfd, sect, arg,
+				index_digits (section_count));
     }
 }
 
@@ -511,19 +454,6 @@ maintenance_print_architecture (const ch
     }
 }
 
-/* The "maintenance print" command is defined as a prefix, with
-   allow_unknown 0.  Therefore, its own definition is called only for
-   "maintenance print" with no args.  */
-
-static void
-maintenance_print_command (const char *arg, int from_tty)
-{
-  printf_unfiltered (_("\"maintenance print\" must be followed "
-		       "by the name of a print command.\n"));
-  help_list (maintenanceprintlist, "maintenance print ", all_commands,
-	     gdb_stdout);
-}
-
 /* The "maintenance translate-address" command converts a section and address
    to a symbol.  This can be called in two ways:
    maintenance translate-address <secname> <addr>
@@ -589,7 +519,7 @@ maintenance_translate_address (const cha
 	  gdb_assert (sect->objfile && objfile_name (sect->objfile));
 	  obj_name = objfile_name (sect->objfile);
 
-	  if (MULTI_OBJFILE_P ())
+	  if (current_program_space->multi_objfile_p ())
 	    printf_filtered (_("%s + %s in section %s of %s\n"),
 			     symbol_name, symbol_offset,
 			     section_name, obj_name);
@@ -739,21 +669,6 @@ maintenance_do_deprecate (const char *te
 struct cmd_list_element *maintenance_set_cmdlist;
 struct cmd_list_element *maintenance_show_cmdlist;
 
-static void
-maintenance_set_cmd (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"maintenance set\" must be followed "
-		       "by the name of a set command.\n"));
-  help_list (maintenance_set_cmdlist, "maintenance set ", all_commands,
-	     gdb_stdout);
-}
-
-static void
-maintenance_show_cmd (const char *args, int from_tty)
-{
-  cmd_show_list (maintenance_show_cmdlist, from_tty, "");
-}
-
 /* "maintenance with" command.  */
 
 static void
@@ -845,12 +760,7 @@ maintenance_set_profile_cmd (const char
 }
 #endif
 
-static int n_worker_threads = 0;
-
-bool worker_threads_disabled ()
-{
-  return n_worker_threads == 0;
-}
+static int n_worker_threads = -1;
 
 /* Update the thread pool for the desired number of threads.  */
 static void
@@ -1102,14 +1012,6 @@ set_per_command_cmd (const char *args, i
       }
 }
 
-/* Command "show per-command" displays summary of all the current
-   "show per-command " settings.  */
-
-static void
-show_per_command_cmd (const char *args, int from_tty)
-{
-  cmd_show_list (per_command_showlist, from_tty, "");
-}
 
 
 /* The "maintenance selftest" command.  */
@@ -1118,7 +1020,8 @@ static void
 maintenance_selftest (const char *args, int from_tty)
 {
 #if GDB_SELF_TEST
-  selftests::run_tests (args);
+  gdb_argv argv (args);
+  selftests::run_tests (argv.as_array_view ());
 #else
   printf_filtered (_("\
 Selftests have been disabled for this build.\n"));
@@ -1140,24 +1043,25 @@ Selftests have been disabled for this bu
 }
 
 
+void _initialize_maint_cmds ();
 void
-_initialize_maint_cmds (void)
+_initialize_maint_cmds ()
 {
   struct cmd_list_element *cmd;
 
-  add_prefix_cmd ("maintenance", class_maintenance, maintenance_command, _("\
+  add_basic_prefix_cmd ("maintenance", class_maintenance, _("\
 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."),
-		  &maintenancelist, "maintenance ", 0,
-		  &cmdlist);
+			&maintenancelist, "maintenance ", 0,
+			&cmdlist);
 
   add_com_alias ("mt", "maintenance", class_maintenance, 1);
 
-  add_prefix_cmd ("info", class_maintenance, maintenance_info_command, _("\
+  add_basic_prefix_cmd ("info", class_maintenance, _("\
 Commands for showing internal info about the program being debugged."),
-		  &maintenanceinfolist, "maintenance info ", 0,
-		  &maintenancelist);
+			&maintenanceinfolist, "maintenance info ", 0,
+			&maintenancelist);
   add_alias_cmd ("i", "info", class_maintenance, 1, &maintenancelist);
 
   add_cmd ("sections", class_maintenance, maintenance_info_sections, _("\
@@ -1172,24 +1076,24 @@ implies all sections).  In addition, the
 lists all sections from all object files, including shared libraries."),
 	   &maintenanceinfolist);
 
-  add_prefix_cmd ("print", class_maintenance, maintenance_print_command,
-		  _("Maintenance command for printing GDB internal state."),
-		  &maintenanceprintlist, "maintenance print ", 0,
-		  &maintenancelist);
+  add_basic_prefix_cmd ("print", class_maintenance,
+			_("Maintenance command for printing GDB internal state."),
+			&maintenanceprintlist, "maintenance print ", 0,
+			&maintenancelist);
 
-  add_prefix_cmd ("set", class_maintenance, maintenance_set_cmd, _("\
+  add_basic_prefix_cmd ("set", class_maintenance, _("\
 Set GDB internal variables used by the GDB maintainer.\n\
 Configure variables internal to GDB that aid in GDB's maintenance"),
-		  &maintenance_set_cmdlist, "maintenance set ",
-		  0/*allow-unknown*/,
-		  &maintenancelist);
+			&maintenance_set_cmdlist, "maintenance set ",
+			0/*allow-unknown*/,
+			&maintenancelist);
 
-  add_prefix_cmd ("show", class_maintenance, maintenance_show_cmd, _("\
+  add_show_prefix_cmd ("show", class_maintenance, _("\
 Show GDB internal variables used by the GDB maintainer.\n\
 Configure variables internal to GDB that aid in GDB's maintenance"),
-		  &maintenance_show_cmdlist, "maintenance show ",
-		  0/*allow-unknown*/,
-		  &maintenancelist);
+		       &maintenance_show_cmdlist, "maintenance show ",
+		       0/*allow-unknown*/,
+		       &maintenancelist);
 
   cmd = add_cmd ("with", class_maintenance, maintenance_with_cmd, _("\
 Like \"with\", but works with \"maintenance set\" variables.\n\
@@ -1236,10 +1140,10 @@ Per-command statistics settings."),
 		    &per_command_setlist, "maintenance set per-command ",
 		    1/*allow-unknown*/, &maintenance_set_cmdlist);
 
-  add_prefix_cmd ("per-command", class_maintenance, show_per_command_cmd, _("\
+  add_show_prefix_cmd ("per-command", class_maintenance, _("\
 Show per-command statistics settings."),
-		    &per_command_showlist, "maintenance show per-command ",
-		    0/*allow-unknown*/, &maintenance_show_cmdlist);
+		       &per_command_showlist, "maintenance show per-command ",
+		       0/*allow-unknown*/, &maintenance_show_cmdlist);
 
   add_setshow_boolean_cmd ("time", class_maintenance,
 			   &per_command_time, _("\
@@ -1303,10 +1207,10 @@ Print the internal architecture configur
 Takes an optional file parameter."),
 	   &maintenanceprintlist);
 
-  add_prefix_cmd ("check", class_maintenance, maintenance_check_command, _("\
+  add_basic_prefix_cmd ("check", class_maintenance, _("\
 Commands for checking internal gdb state."),
-		  &maintenancechecklist, "maintenance check ", 0,
-		  &maintenancelist);
+			&maintenancechecklist, "maintenance check ", 0,
+			&maintenancelist);
 
   add_cmd ("translate-address", class_maintenance,
 	   maintenance_translate_address,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/maint.h ./gdb/maint.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/maint.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/maint.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for GDB maintenance commands.
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -26,8 +26,6 @@ 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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/maint-test-options.c ./gdb/maint-test-options.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/maint-test-options.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/maint-test-options.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Maintenance commands for testing the options framework.
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -411,30 +411,19 @@ maintenance_test_options_unknown_is_oper
 /* Command list for maint test-options.  */
 struct cmd_list_element *maintenance_test_options_list;
 
-/* The "maintenance test-options" prefix command.  */
-
-static void
-maintenance_test_options_command (const char *arg, int from_tty)
-{
-  printf_unfiltered
-    (_("\"maintenance test-options\" must be followed "
-       "by the name of a subcommand.\n"));
-  help_list (maintenance_test_options_list, "maintenance test-options ",
-	     all_commands, gdb_stdout);
-}
-
 
+void _initialize_maint_test_options ();
 void
 _initialize_maint_test_options ()
 {
   cmd_list_element *cmd;
 
-  add_prefix_cmd ("test-options", no_class, maintenance_test_options_command,
-		  _("\
+  add_basic_prefix_cmd ("test-options", no_class,
+			_("\
 Generic command for testing the options infrastructure."),
-		  &maintenance_test_options_list,
-		  "maintenance test-options ", 0,
-		  &maintenancelist);
+			&maintenance_test_options_list,
+			"maintenance test-options ", 0,
+			&maintenancelist);
 
   const auto def_group = make_test_options_options_def_group (nullptr);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/maint-test-settings.c ./gdb/maint-test-settings.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/maint-test-settings.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/maint-test-settings.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Maintenance commands for testing the settings framework.
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,26 +27,6 @@ static cmd_list_element *maintenance_set
 /* Command list for "maint show test-settings".  */
 static cmd_list_element *maintenance_show_test_settings_list;
 
-/* The "maintenance set test-settings" prefix command.  */
-
-static void
-maintenance_set_test_settings_cmd (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"maintenance set test-settings\" must be followed "
-		       "by the name of a set command.\n"));
-  help_list (maintenance_set_test_settings_list,
-	     "maintenance set test-settings ",
-	     all_commands, gdb_stdout);
-}
-
-/* The "maintenance show test-settings" prefix command.  */
-
-static void
-maintenance_show_test_settings_cmd (const char *args, int from_tty)
-{
-  cmd_show_list (maintenance_show_test_settings_list, from_tty, "");
-}
-
 /* Control variables for all the "maintenance set/show test-settings
    xxx" commands.  */
 
@@ -99,26 +79,27 @@ maintenance_show_test_settings_value_cmd
 }
 
 
+void _initialize_maint_test_settings ();
 void
-_initialize_maint_test_settings (void)
+_initialize_maint_test_settings ()
 {
   maintenance_test_settings_filename = xstrdup ("/foo/bar");
 
-  add_prefix_cmd ("test-settings", class_maintenance,
-		  maintenance_set_test_settings_cmd, _("\
+  add_basic_prefix_cmd ("test-settings", class_maintenance,
+			_("\
 Set GDB internal variables used for set/show command infrastructure testing."),
-		  &maintenance_set_test_settings_list,
-		  "maintenance set test-settings ",
-		  0/*allow-unknown*/,
-		  &maintenance_set_cmdlist);
+			&maintenance_set_test_settings_list,
+			"maintenance set test-settings ",
+			0/*allow-unknown*/,
+			&maintenance_set_cmdlist);
 
-  add_prefix_cmd ("test-settings", class_maintenance,
-		  maintenance_show_test_settings_cmd, _("\
+  add_show_prefix_cmd ("test-settings", class_maintenance,
+		       _("\
 Show GDB internal variables used for set/show command infrastructure testing."),
-		  &maintenance_show_test_settings_list,
-		  "maintenance show test-settings ",
-		  0/*allow-unknown*/,
-		  &maintenance_show_cmdlist);
+		       &maintenance_show_test_settings_list,
+		       "maintenance show test-settings ",
+		       0/*allow-unknown*/,
+		       &maintenance_show_cmdlist);
 
   add_setshow_boolean_cmd ("boolean", class_maintenance,
 			   &maintenance_test_settings_boolean, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/Makefile.in ./gdb/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/Makefile.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/Makefile.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1989-2020 Free Software Foundation, Inc.
+# Copyright (C) 1989-2021 Free Software Foundation, Inc.
 
 # This file is part of GDB.
 
@@ -154,7 +154,8 @@ INCLUDE_CFLAGS = -I$(INCLUDE_DIR)
 LIBIBERTY = ../libiberty/libiberty.a
 
 # Where is the CTF library?  Typically in ../libctf.
-LIBCTF = ../libctf/.libs/libctf.a
+LIBCTF = @LIBCTF@
+CTF_DEPS = @CTF_DEPS@
 
 # Where is the BFD library?  Typically in ../bfd.
 BFD_DIR = ../bfd
@@ -213,6 +214,9 @@ GDB_WERROR_CFLAGS = $(WERROR_CFLAGS)
 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
 PTHREAD_LIBS = @PTHREAD_LIBS@
 
+DEBUGINFOD_CFLAGS = @DEBUGINFOD_CFLAGS@
+DEBUGINFOD_LIBS = @DEBUGINFOD_LIBS@
+
 RDYNAMIC = @RDYNAMIC@
 
 # Where is the INTL library?  Typically in ../intl.
@@ -238,6 +242,10 @@ GNULIB_BUILDDIR = ../gnulib
 LIBGNU = $(GNULIB_BUILDDIR)/import/libgnu.a
 INCGNU = -I$(srcdir)/../gnulib/import -I$(GNULIB_BUILDDIR)/import
 
+SUPPORT = ../gdbsupport
+LIBSUPPORT = $(SUPPORT)/libgdbsupport.a
+INCSUPPORT = -I$(srcdir)/.. -I..
+
 #
 # CLI sub directory definitons
 #
@@ -396,11 +404,13 @@ SUBDIR_PYTHON_SRCS = \
 	python/py-record.c \
 	python/py-record-btrace.c \
 	python/py-record-full.c \
+	python/py-registers.c \
 	python/py-signalevent.c \
 	python/py-stopevent.c \
 	python/py-symbol.c \
 	python/py-symtab.c \
 	python/py-threadevent.c \
+	python/py-tui.c \
 	python/py-type.c \
 	python/py-unwind.c \
 	python/py-utils.c \
@@ -415,17 +425,20 @@ SUBDIR_PYTHON_DEPS =
 SUBDIR_PYTHON_LDFLAGS =
 SUBDIR_PYTHON_CFLAGS =
 
-SUBDIR_UNITTESTS_SRCS = \
+SELFTESTS_SRCS = \
+	disasm-selftests.c \
+	gdbarch-selftests.c \
+	selftest-arch.c \
 	unittests/array-view-selftests.c \
 	unittests/child-path-selftests.c \
 	unittests/cli-utils-selftests.c \
+	unittests/command-def-selftests.c \
 	unittests/common-utils-selftests.c \
 	unittests/copy_bitwise-selftests.c \
 	unittests/environ-selftests.c \
 	unittests/filtered_iterator-selftests.c \
 	unittests/format_pieces-selftests.c \
 	unittests/function-view-selftests.c \
-	unittests/help-doc-selftests.c \
 	unittests/lookup_name_info-selftests.c \
 	unittests/memory-map-selftests.c \
 	unittests/memrange-selftests.c \
@@ -449,7 +462,7 @@ SUBDIR_UNITTESTS_SRCS = \
 	unittests/vec-utils-selftests.c \
 	unittests/xml-utils-selftests.c
 
-SUBDIR_UNITTESTS_OBS = $(patsubst %.c,%.o,$(SUBDIR_UNITTESTS_SRCS))
+SELFTESTS_OBS = $(patsubst %.c,%.o,$(SELFTESTS_SRCS))
 
 SUBDIR_TARGET_SRCS = target/waitstatus.c
 SUBDIR_TARGET_OBS = $(patsubst %.c,%.o,$(SUBDIR_TARGET_SRCS))
@@ -547,7 +560,7 @@ CONFIG_INSTALL = @CONFIG_INSTALL@
 CONFIG_UNINSTALL = @CONFIG_UNINSTALL@
 HAVE_NATIVE_GCORE_TARGET = @HAVE_NATIVE_GCORE_TARGET@
 
-CONFIG_SRC_SUBDIR = arch cli mi gdbsupport compile tui unittests guile python \
+CONFIG_SRC_SUBDIR = arch cli dwarf2 mi compile tui unittests guile python \
 	target nat
 CONFIG_DEP_SUBDIR = $(addsuffix /$(DEPDIR),$(CONFIG_SRC_SUBDIR))
 
@@ -579,15 +592,17 @@ CPPFLAGS = @CPPFLAGS@
 # are sometimes a little generic, we think that the risk of collision
 # with other header files is high.  If that happens, we try to mitigate
 # a bit the consequences by putting the Python includes last in the list.
-INTERNAL_CPPFLAGS = $(CPPFLAGS) @GUILE_CPPFLAGS@ @PYTHON_CPPFLAGS@
+INTERNAL_CPPFLAGS = $(CPPFLAGS) @GUILE_CPPFLAGS@ @PYTHON_CPPFLAGS@ \
+	@LARGEFILE_CPPFLAGS@
 
 # INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
 INTERNAL_CFLAGS_BASE = \
 	$(CXXFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
 	$(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) $(ZLIBINC) \
 	$(BFD_CFLAGS) $(INCLUDE_CFLAGS) $(LIBDECNUMBER_CFLAGS) \
-	$(INTL_CFLAGS) $(INCGNU) $(ENABLE_CFLAGS) $(INTERNAL_CPPFLAGS) \
-	$(SRCHIGH_CFLAGS) $(TOP_CFLAGS) $(PTHREAD_CFLAGS)
+	$(INTL_CFLAGS) $(INCGNU) $(INCSUPPORT) $(ENABLE_CFLAGS) \
+	$(INTERNAL_CPPFLAGS) $(SRCHIGH_CFLAGS) $(TOP_CFLAGS) $(PTHREAD_CFLAGS) \
+	$(DEBUGINFOD_CFLAGS)
 INTERNAL_WARN_CFLAGS = $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS)
 INTERNAL_CFLAGS = $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS)
 
@@ -606,15 +621,17 @@ INTERNAL_LDFLAGS = \
 # Libraries and corresponding dependencies for compiling gdb.
 # XM_CLIBS, defined in *config files, have host-dependent libs.
 # LIBIBERTY appears twice on purpose.
-CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(LIBCTF) $(ZLIB) \
-        $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
+CLIBS = $(SIM) $(READLINE) $(OPCODES) $(LIBCTF) $(BFD) $(ZLIB) \
+        $(LIBSUPPORT) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
 	$(XM_CLIBS) $(GDBTKLIBS) \
 	@LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \
 	$(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) $(LIBIPT) \
-	$(LIBIBERTY) $(WIN32LIBS) $(LIBGNU) $(LIBICONV) $(LIBMPFR) \
-	$(SRCHIGH_LIBS) $(LIBXXHASH) $(PTHREAD_LIBS)
-CDEPS = $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) $(LIBCTF) \
-	$(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU)
+	$(WIN32LIBS) $(LIBGNU) $(LIBICONV) \
+	$(LIBMPFR) $(SRCHIGH_LIBS) $(LIBXXHASH) $(PTHREAD_LIBS) \
+	$(DEBUGINFOD_LIBS)
+CDEPS = $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) $(CTF_DEPS) \
+	$(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU) \
+	$(LIBSUPPORT)
 
 DIST = gdb
 
@@ -685,8 +702,10 @@ ALL_64_TARGET_OBS = \
 # All other target-dependent objects files (used with --enable-targets=all).
 ALL_TARGET_OBS = \
 	aarch32-tdep.o \
+	arc-linux-tdep.o \
 	arc-tdep.o \
 	arch/aarch32.o \
+	arch/arc.o \
 	arch/arm.o \
 	arch/arm-get-next-pcs.o \
 	arch/arm-linux.o \
@@ -705,6 +724,7 @@ ALL_TARGET_OBS = \
 	avr-tdep.o \
 	bfin-linux-tdep.o \
 	bfin-tdep.o \
+	bpf-tdep.o \
 	bsd-uthread.o \
 	cris-linux-tdep.o \
 	cris-tdep.o \
@@ -723,7 +743,6 @@ ALL_TARGET_OBS = \
 	hppa-obsd-tdep.o \
 	hppa-tdep.o \
 	i386-bsd-tdep.o \
-	i386-cygwin-tdep.o \
 	i386-darwin-tdep.o \
 	i386-dicos-tdep.o \
 	i386-fbsd-tdep.o \
@@ -735,6 +754,7 @@ ALL_TARGET_OBS = \
 	i386-obsd-tdep.o \
 	i386-sol2-tdep.o \
 	i386-tdep.o \
+	i386-windows-tdep.o \
 	i387-tdep.o \
 	iq2000-tdep.o \
 	linux-record.o \
@@ -777,6 +797,7 @@ ALL_TARGET_OBS = \
 	ravenscar-thread.o \
 	riscv-fbsd-tdep.o \
 	riscv-linux-tdep.o \
+	riscv-ravenscar-thread.o \
 	riscv-tdep.o \
 	rl78-tdep.o \
 	rs6000-aix-tdep.o \
@@ -943,6 +964,7 @@ COMMON_SFILES = \
 	alloc.c \
 	annotate.c \
 	arch-utils.c \
+	async-event.c \
 	auto-load.c \
 	auxv.c \
 	ax-gdb.c \
@@ -967,38 +989,6 @@ COMMON_SFILES = \
 	cli-out.c \
 	coff-pe-read.c \
 	coffread.c \
-	gdbsupport/agent.c \
-	gdbsupport/btrace-common.c \
-	gdbsupport/buffer.c \
-	gdbsupport/cleanups.c \
-	gdbsupport/common-debug.c \
-	gdbsupport/common-exceptions.c \
-	gdbsupport/common-inferior.c \
-	gdbsupport/common-regcache.c \
-	gdbsupport/common-utils.c \
-	gdbsupport/errors.c \
-	gdbsupport/environ.c \
-	gdbsupport/fileio.c \
-	gdbsupport/filestuff.c \
-	gdbsupport/format.c \
-	gdbsupport/job-control.c \
-	gdbsupport/gdb-dlfcn.c \
-	gdbsupport/gdb_tilde_expand.c \
-	gdbsupport/gdb_vecs.c \
-	gdbsupport/netstuff.c \
-	gdbsupport/new-op.c \
-	gdbsupport/pathstuff.c \
-	gdbsupport/print-utils.c \
-	gdbsupport/ptid.c \
-	gdbsupport/rsp-low.c \
-	gdbsupport/run-time-clock.c \
-	gdbsupport/safe-strerror.c \
-	gdbsupport/scoped_mmap.c \
-	gdbsupport/signals.c \
-	gdbsupport/signals-state-save-restore.c \
-	gdbsupport/tdesc.c \
-	gdbsupport/thread-pool.c \
-	gdbsupport/xml-utils.c \
 	complaints.c \
 	completer.c \
 	continuations.c \
@@ -1016,20 +1006,28 @@ COMMON_SFILES = \
 	dbxread.c \
 	dcache.c \
 	debug.c \
+	debuginfod-support.c \
 	dictionary.c \
 	disasm.c \
-	disasm-selftests.c \
 	dummy-frame.c \
-	dwarf-index-cache.c \
-	dwarf-index-common.c \
-	dwarf-index-write.c \
-	dwarf2-frame.c \
-	dwarf2-frame-tailcall.c \
-	dwarf2expr.c \
-	dwarf2loc.c \
-	dwarf2read.c \
+	dwarf2/abbrev.c \
+	dwarf2/attribute.c \
+	dwarf2/comp-unit.c \
+	dwarf2/dwz.c \
+	dwarf2/expr.c \
+	dwarf2/frame-tailcall.c \
+	dwarf2/frame.c \
+	dwarf2/index-cache.c \
+	dwarf2/index-common.c \
+	dwarf2/index-write.c \
+	dwarf2/leb.c \
+	dwarf2/line-header.c \
+	dwarf2/loc.c \
+	dwarf2/macro.c \
+	dwarf2/read.c \
+	dwarf2/section.c \
+	dwarf2/stringify.c \
 	eval.c \
-	event-loop.c \
 	event-top.c \
 	exceptions.c \
 	exec.c \
@@ -1051,7 +1049,6 @@ COMMON_SFILES = \
 	gdb_obstack.c \
 	gdb_regex.c \
 	gdbarch.c \
-	gdbarch-selftests.c \
 	gdbtypes.c \
 	gnu-v2-abi.c \
 	gnu-v3-abi.c \
@@ -1138,6 +1135,7 @@ COMMON_SFILES = \
 	symmisc.c \
 	symtab.c \
 	target.c \
+	target-connection.c \
 	target-dcache.c \
 	target-descriptions.c \
 	target-memory.c \
@@ -1221,7 +1219,9 @@ HFILES_NO_SRCDIR = \
 	arc-tdep.h \
 	arch-utils.h \
 	arm-linux-tdep.h \
+	arm-nbsd-tdep.h \
 	arm-tdep.h \
+	async-event.h \
 	auto-load.h \
 	auxv.h \
 	ax.h \
@@ -1255,14 +1255,13 @@ HFILES_NO_SRCDIR = \
 	dictionary.h \
 	disasm.h \
 	dummy-frame.h \
-	dwarf-index-cache.h \
-	dwarf-index-common.h \
-	dwarf2-frame.h \
-	dwarf2-frame-tailcall.h \
-	dwarf2expr.h \
-	dwarf2loc.h \
-	dwarf2read.h \
-	event-loop.h \
+	dwarf2/frame-tailcall.h \
+	dwarf2/frame.h \
+	dwarf2/expr.h \
+	dwarf2/index-cache.h \
+	dwarf2/index-common.h \
+	dwarf2/loc.h \
+	dwarf2/read.h \
 	event-top.h \
 	exceptions.h \
 	exec.h \
@@ -1380,6 +1379,7 @@ HFILES_NO_SRCDIR = \
 	remote-fileio.h \
 	remote-notif.h \
 	riscv-fbsd-tdep.h \
+	riscv-ravenscar-thread.h \
 	riscv-tdep.h \
 	rs6000-aix-tdep.h \
 	rs6000-tdep.h \
@@ -1453,6 +1453,7 @@ HFILES_NO_SRCDIR = \
 	arch/aarch32.h \
 	arch/aarch64.h \
 	arch/aarch64-insn.h \
+	arch/arc.h \
 	arch/arm.h \
 	arch/i386.h \
 	arch/ppc-linux-common.h \
@@ -1464,49 +1465,6 @@ HFILES_NO_SRCDIR = \
 	cli/cli-setshow.h \
 	cli/cli-style.h \
 	cli/cli-utils.h \
-	gdbsupport/buffer.h \
-	gdbsupport/cleanups.h \
-	gdbsupport/common-debug.h \
-	gdbsupport/common-defs.h \
-	gdbsupport/common-exceptions.h \
-	gdbsupport/common-gdbthread.h \
-	gdbsupport/common-regcache.h \
-	gdbsupport/common-types.h \
-	gdbsupport/common-utils.h \
-	gdbsupport/job-control.h \
-	gdbsupport/errors.h \
-	gdbsupport/environ.h \
-	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 \
-	gdbsupport/gdb_locale.h \
-	gdbsupport/gdb_proc_service.h \
-	gdbsupport/gdb_setjmp.h \
-	gdbsupport/gdb_signals.h \
-	gdbsupport/gdb_sys_time.h \
-	gdbsupport/gdb_vecs.h \
-	gdbsupport/gdb_wait.h \
-	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 \
-	gdbsupport/queue.h \
-	gdbsupport/rsp-low.h \
-	gdbsupport/run-time-clock.h \
-	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 \
 	compile/compile.h \
 	compile/compile-c.h \
 	compile/compile-cplus.h \
@@ -1777,7 +1735,7 @@ install-only: $(CONFIG_INSTALL)
 		  true ; \
 		fi ; \
 		$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \
-		$(INSTALL_PROGRAM) gdb$(EXEEXT) \
+		$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) gdb$(EXEEXT) \
 			$(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \
 		$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(includedir)/gdb ; \
 		$(INSTALL_DATA) jit-reader.h $(DESTDIR)$(includedir)/gdb/jit-reader.h
@@ -1965,13 +1923,8 @@ clean mostlyclean: $(CONFIG_CLEAN)
 # I believe this is wrong; the makefile standards for distclean just
 # describe removing files; the only sort of "re-create a distribution"
 # functionality described is if the distributed files are unmodified.
-# NB: While GDBSERVER might be configured on native systems, it isn't
-# always included in SUBDIRS.  Remove the gdbserver files explicitly.
 distclean: clean
 	@$(MAKE) $(FLAGS_TO_PASS) DO=distclean "DODIRS=$(CLEANDIRS)" subdir_do
-	rm -f gdbserver/config.status gdbserver/config.log
-	rm -f gdbserver/tm.h gdbserver/xm.h gdbserver/nm.h
-	rm -f gdbserver/Makefile gdbserver/config.cache
 	rm -f nm.h config.status config.h stamp-h b jit-reader.h
 	rm -f gdb-gdb.py gdb-gdb.gdb
 	rm -f y.output yacc.acts yacc.tmp y.tab.h
@@ -2062,6 +2015,7 @@ aclocal_m4_deps = \
 	transform.m4 \
 	../bfd/bfd.m4 \
 	../config/acinclude.m4 \
+	../config/enable.m4 \
 	../config/plugins.m4 \
 	../config/lead-dot.m4 \
 	../config/override.m4 \
@@ -2127,8 +2081,8 @@ doc/gdb.info:
 version.c: stamp-version; @true
 # Note that the obvious names for the temp file are taken by
 # create-version.sh.
-stamp-version: Makefile version.in $(srcdir)/../bfd/version.h $(srcdir)/gdbsupport/create-version.sh
-	$(ECHO_GEN) $(SHELL) $(srcdir)/gdbsupport/create-version.sh $(srcdir) \
+stamp-version: Makefile version.in $(srcdir)/../bfd/version.h $(srcdir)/../gdbsupport/create-version.sh
+	$(ECHO_GEN) $(SHELL) $(srcdir)/../gdbsupport/create-version.sh $(srcdir) \
 	    $(host_alias) $(target_alias) version-t.t
 	@$(SHELL) $(srcdir)/../move-if-change version-t.t version.c
 	@echo stamp > stamp-version
@@ -2199,6 +2153,7 @@ ALLDEPFILES = \
 	avr-tdep.c \
 	bfin-linux-tdep.c \
 	bfin-tdep.c \
+	bpf-tdep.c \
 	bsd-kvm.c \
 	bsd-uthread.c \
 	csky-linux-tdep.c \
@@ -2222,7 +2177,6 @@ ALLDEPFILES = \
 	hppa-tdep.c \
 	i386-bsd-nat.c \
 	i386-bsd-tdep.c \
-	i386-cygwin-tdep.c \
 	i386-darwin-nat.c \
 	i386-darwin-tdep.c \
 	i386-dicos-tdep.c \
@@ -2239,6 +2193,7 @@ ALLDEPFILES = \
 	i386-sol2-nat.c \
 	i386-sol2-tdep.c \
 	i386-tdep.c \
+	i386-windows-tdep.c \
 	i387-tdep.c \
 	ia64-libunwind-tdep.c \
 	ia64-linux-nat.c \
@@ -2299,6 +2254,7 @@ ALLDEPFILES = \
 	riscv-fbsd-tdep.c \
 	riscv-linux-nat.c \
 	riscv-linux-tdep.c \
+	riscv-ravenscar-thread.c \
 	riscv-tdep.c \
 	rl78-tdep.c \
 	rs6000-lynx178-tdep.c \
@@ -2514,7 +2470,7 @@ install-gdbtk:
 	  true ; \
 	fi ; \
 	$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir); \
-	$(INSTALL_PROGRAM) insight$(EXEEXT) \
+	$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) insight$(EXEEXT) \
 		$(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \
 	$(SHELL) $(srcdir)/../mkinstalldirs \
 		$(DESTDIR)$(GDBTK_LIBRARY) ; \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/make-target-delegates ./gdb/make-target-delegates
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/make-target-delegates	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/make-target-delegates	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mdebugread.c ./gdb/mdebugread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mdebugread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mdebugread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Read a symbol table in ECOFF format (Third-Eye).
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    Original version contributed by Alessandro Forin (af@cs.cmu.edu) at
    CMU.  Major work by Per Bothner, John Gilmore and Ian Lance Taylor
@@ -251,10 +251,10 @@ static struct symbol *mylookup_symbol (c
 
 static void sort_blocks (struct symtab *);
 
-static struct partial_symtab *new_psymtab (const char *, struct objfile *);
+static legacy_psymtab *new_psymtab (const char *, struct objfile *);
 
-static void psymtab_to_symtab_1 (struct objfile *objfile,
-				 struct partial_symtab *, const char *);
+static void mdebug_expand_psymtab (legacy_psymtab *pst,
+				  struct objfile *objfile);
 
 static void add_block (struct block *, struct symtab *);
 
@@ -275,24 +275,15 @@ static const char *mdebug_next_symbol_te
    and reorders the symtab list at the end.  SELF is not NULL.  */
 
 static void
-mdebug_read_symtab (struct partial_symtab *self, struct objfile *objfile)
+mdebug_read_symtab (legacy_psymtab *self, struct objfile *objfile)
 {
-  if (info_verbose)
-    {
-      printf_filtered (_("Reading in symbols for %s..."), self->filename);
-      gdb_flush (gdb_stdout);
-    }
-
   next_symbol_text_func = mdebug_next_symbol_text;
 
-  psymtab_to_symtab_1 (objfile, self, self->filename);
+  self->expand_psymtab (objfile);
 
   /* Match with global symbols.  This only needs to be done once,
      after all of the symtabs and dependencies have been read in.  */
   scan_file_globals (objfile);
-
-  if (info_verbose)
-    printf_filtered (_("done.\n"));
 }
 
 /* File-level interface functions.  */
@@ -389,7 +380,7 @@ mdebug_build_psymtabs (minimal_symbol_re
 
 struct pst_map
 {
-  struct partial_symtab *pst;	/* the psymtab proper */
+  legacy_psymtab *pst;	/* the psymtab proper */
   long n_globals;		/* exported globals (external symbols) */
   long globals_offset;		/* cumulative */
 };
@@ -580,9 +571,9 @@ add_data_symbol (SYMR *sh, union aux_ext
 
 static int
 parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
-	      struct section_offsets *section_offsets, struct objfile *objfile)
+	      const section_offsets &section_offsets, struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   const bfd_size_type external_sym_size = debug_swap->external_sym_size;
   void (*const swap_sym_in) (bfd *, void *, SYMR *) = debug_swap->swap_sym_in;
   const char *name;
@@ -610,18 +601,18 @@ parse_symbol (SYMR *sh, union aux_ext *a
          The value of a stBlock symbol is the displacement from the
          procedure address.  */
       if (sh->st != stEnd && sh->st != stBlock)
-	sh->value += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
+	sh->value += section_offsets[SECT_OFF_TEXT (objfile)];
       break;
     case scData:
     case scSData:
     case scRData:
     case scPData:
     case scXData:
-      sh->value += ANOFFSET (section_offsets, SECT_OFF_DATA (objfile));
+      sh->value += section_offsets[SECT_OFF_DATA (objfile)];
       break;
     case scBss:
     case scSBss:
-      sh->value += ANOFFSET (section_offsets, SECT_OFF_BSS (objfile));
+      sh->value += section_offsets[SECT_OFF_BSS (objfile)];
       break;
     }
 
@@ -756,7 +747,7 @@ parse_symbol (SYMR *sh, union aux_ext *a
 	{
 	  t = parse_type (cur_fd, ax, sh->index + 1, 0, bigend, name);
 	  if (strcmp (name, "malloc") == 0
-	      && TYPE_CODE (t) == TYPE_CODE_VOID)
+	      && t->code () == TYPE_CODE_VOID)
 	    {
 	      /* I don't know why, but, at least under Alpha GNU/Linux,
 	         when linking against a malloc without debugging
@@ -794,11 +785,11 @@ parse_symbol (SYMR *sh, union aux_ext *a
 
       /* All functions in C++ have prototypes.  For C we don't have enough
          information in the debug info.  */
-      if (SYMBOL_LANGUAGE (s) == language_cplus)
+      if (s->language () == language_cplus)
 	TYPE_PROTOTYPED (SYMBOL_TYPE (s)) = 1;
 
       /* Create and enter a new lexical context.  */
-      b = new_block (FUNCTION_BLOCK, SYMBOL_LANGUAGE (s));
+      b = new_block (FUNCTION_BLOCK, s->language ());
       SYMBOL_BLOCK_VALUE (s) = b;
       BLOCK_FUNCTION (b) = s;
       BLOCK_START (b) = BLOCK_END (b) = sh->value;
@@ -1019,17 +1010,16 @@ parse_symbol (SYMR *sh, union aux_ext *a
 	   (.Fxx or .xxfake or empty) for unnamed struct/union/enums.
 	   Alpha cc puts out an sh->iss of zero for those.  */
 	if (sh->iss == 0 || name[0] == '.' || name[0] == '\0')
-	  TYPE_NAME (t) = NULL;
+	  t->set_name (NULL);
 	else
-	  TYPE_NAME (t) = obconcat (&mdebugread_objfile->objfile_obstack,
-				    name, (char *) NULL);
+	  t->set_name (obconcat (&mdebugread_objfile->objfile_obstack,
+				 name, (char *) NULL));
 
-	TYPE_CODE (t) = type_code;
+	t->set_code (type_code);
 	TYPE_LENGTH (t) = sh->value;
-	TYPE_NFIELDS (t) = nfields;
-	TYPE_FIELDS (t) = f = ((struct field *)
-			       TYPE_ALLOC (t,
-					   nfields * sizeof (struct field)));
+	t->set_num_fields (nfields);
+	f = ((struct field *) TYPE_ALLOC (t, nfields * sizeof (struct field)));
+	t->set_fields (f);
 
 	if (type_code == TYPE_CODE_ENUM)
 	  {
@@ -1045,7 +1035,7 @@ parse_symbol (SYMR *sh, union aux_ext *a
 	       are hopefully rare enough.
 	       Alpha cc -migrate has a sh.value field of zero, we adjust
 	       that too.  */
-	    if (TYPE_LENGTH (t) == TYPE_NFIELDS (t)
+	    if (TYPE_LENGTH (t) == t->num_fields ()
 		|| TYPE_LENGTH (t) == 0)
 	      TYPE_LENGTH (t) = gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT;
 	    for (ext_tsym = ext_sh + external_sym_size;
@@ -1061,11 +1051,11 @@ parse_symbol (SYMR *sh, union aux_ext *a
 		  break;
 
 		SET_FIELD_ENUMVAL (*f, tsym.value);
-		FIELD_TYPE (*f) = t;
+		f->set_type (t);
 		FIELD_NAME (*f) = debug_info->ss + cur_fdr->issBase + tsym.iss;
 		FIELD_BITSIZE (*f) = 0;
 
-		enum_sym = allocate_symbol (mdebugread_objfile);
+		enum_sym = new (&mdebugread_objfile->objfile_obstack) symbol;
 		enum_sym->set_linkage_name
 		  (obstack_strdup (&mdebugread_objfile->objfile_obstack,
 				   f->name));
@@ -1094,7 +1084,7 @@ parse_symbol (SYMR *sh, union aux_ext *a
 
 	/* gcc puts out an empty struct for an opaque struct definitions,
 	   do not create a symbol for it either.  */
-	if (TYPE_NFIELDS (t) == 0)
+	if (t->num_fields () == 0)
 	  {
 	    TYPE_STUB (t) = 1;
 	    break;
@@ -1183,7 +1173,7 @@ parse_symbol (SYMR *sh, union aux_ext *a
 		}
 	    }
 
-	  if (TYPE_NFIELDS (ftype) <= 0)
+	  if (ftype->num_fields () <= 0)
 	    {
 	      /* No parameter type information is recorded with the function's
 	         type.  Set that from the type of the parameter symbols.  */
@@ -1195,9 +1185,10 @@ parse_symbol (SYMR *sh, union aux_ext *a
 		{
 		  struct block_iterator iter;
 
-		  TYPE_NFIELDS (ftype) = nparams;
-		  TYPE_FIELDS (ftype) = (struct field *)
-		    TYPE_ALLOC (ftype, nparams * sizeof (struct field));
+		  ftype->set_num_fields (nparams);
+		  ftype->set_fields
+		    ((struct field *)
+		     TYPE_ALLOC (ftype, nparams * sizeof (struct field)));
 
 		  iparams = 0;
 		  ALL_BLOCK_SYMBOLS (cblock, iter, sym)
@@ -1207,7 +1198,7 @@ parse_symbol (SYMR *sh, union aux_ext *a
 
 		      if (SYMBOL_IS_ARGUMENT (sym))
 			{
-			  TYPE_FIELD_TYPE (ftype, iparams) = SYMBOL_TYPE (sym);
+			  ftype->field (iparams).set_type (SYMBOL_TYPE (sym));
 			  TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
 			  iparams++;
 			}
@@ -1242,13 +1233,13 @@ parse_symbol (SYMR *sh, union aux_ext *a
 
     case stMember:		/* member of struct or union */
       {
-	struct field *f
-	  = &TYPE_FIELDS (top_stack->cur_type)[top_stack->cur_field++];
+	struct field *f = &top_stack->cur_type->field (top_stack->cur_field);
+	top_stack->cur_field++;
 	FIELD_NAME (*f) = name;
 	SET_FIELD_BITPOS (*f, sh->value);
 	bitsize = 0;
-	FIELD_TYPE (*f) = parse_type (cur_fd, ax, sh->index,
-				      &bitsize, bigend, name);
+	f->set_type (parse_type (cur_fd, ax, sh->index, &bitsize, bigend,
+				 name));
 	FIELD_BITSIZE (*f) = bitsize;
       }
       break;
@@ -1305,13 +1296,13 @@ parse_symbol (SYMR *sh, union aux_ext *a
       add_symbol (s, top_stack->cur_st, top_stack->cur_block);
 
       /* Incomplete definitions of structs should not get a name.  */
-      if (TYPE_NAME (SYMBOL_TYPE (s)) == NULL
-	  && (TYPE_NFIELDS (SYMBOL_TYPE (s)) != 0
-	      || (TYPE_CODE (SYMBOL_TYPE (s)) != TYPE_CODE_STRUCT
-		  && TYPE_CODE (SYMBOL_TYPE (s)) != TYPE_CODE_UNION)))
+      if (SYMBOL_TYPE (s)->name () == NULL
+	  && (SYMBOL_TYPE (s)->num_fields () != 0
+	      || (SYMBOL_TYPE (s)->code () != TYPE_CODE_STRUCT
+		  && SYMBOL_TYPE (s)->code () != TYPE_CODE_UNION)))
 	{
-	  if (TYPE_CODE (SYMBOL_TYPE (s)) == TYPE_CODE_PTR
-	      || TYPE_CODE (SYMBOL_TYPE (s)) == TYPE_CODE_FUNC)
+	  if (SYMBOL_TYPE (s)->code () == TYPE_CODE_PTR
+	      || SYMBOL_TYPE (s)->code () == TYPE_CODE_FUNC)
 	    {
 	      /* If we are giving a name to a type such as "pointer to
 	         foo" or "function returning foo", we better not set
@@ -1333,7 +1324,7 @@ parse_symbol (SYMR *sh, union aux_ext *a
 	         for anything except pointers or functions.  */
 	    }
 	  else
-	    TYPE_NAME (SYMBOL_TYPE (s)) = s->linkage_name ();
+	    SYMBOL_TYPE (s)->set_name (s->linkage_name ());
 	}
       break;
 
@@ -1366,7 +1357,7 @@ static const struct objfile_key<struct t
 static struct type *
 basic_type (int bt, struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   struct type **map_bt = basic_type_data.get (objfile);
   struct type *tp;
 
@@ -1438,13 +1429,11 @@ basic_type (int bt, struct objfile *objf
       break;
 
     case btComplex:
-      tp = init_complex_type (objfile, "complex",
-			      basic_type (btFloat, objfile));
+      tp = init_complex_type ("complex", basic_type (btFloat, objfile));
       break;
 
     case btDComplex:
-      tp = init_complex_type (objfile, "double complex",
-			      basic_type (btFloat, objfile));
+      tp = init_complex_type ("double complex", basic_type (btFloat, objfile));
       break;
 
     case btFixedDec:
@@ -1650,16 +1639,16 @@ parse_type (int fd, union aux_ext *ax, u
 
       /* DEC c89 produces cross references to qualified aggregate types,
          dereference them.  */
-      while (TYPE_CODE (tp) == TYPE_CODE_PTR
-	     || TYPE_CODE (tp) == TYPE_CODE_ARRAY)
+      while (tp->code () == TYPE_CODE_PTR
+	     || tp->code () == TYPE_CODE_ARRAY)
 	tp = TYPE_TARGET_TYPE (tp);
 
       /* Make sure that TYPE_CODE(tp) has an expected type code.
          Any type may be returned from cross_ref if file indirect entries
          are corrupted.  */
-      if (TYPE_CODE (tp) != TYPE_CODE_STRUCT
-	  && TYPE_CODE (tp) != TYPE_CODE_UNION
-	  && TYPE_CODE (tp) != TYPE_CODE_ENUM)
+      if (tp->code () != TYPE_CODE_STRUCT
+	  && tp->code () != TYPE_CODE_UNION
+	  && tp->code () != TYPE_CODE_ENUM)
 	{
 	  unexpected_type_code_complaint (sym_name);
 	}
@@ -1669,27 +1658,27 @@ parse_type (int fd, union aux_ext *ax, u
 	     exception is if we guessed wrong re struct/union/enum.
 	     But for struct vs. union a wrong guess is harmless, so
 	     don't complain().  */
-	  if ((TYPE_CODE (tp) == TYPE_CODE_ENUM
+	  if ((tp->code () == TYPE_CODE_ENUM
 	       && type_code != TYPE_CODE_ENUM)
-	      || (TYPE_CODE (tp) != TYPE_CODE_ENUM
+	      || (tp->code () != TYPE_CODE_ENUM
 		  && type_code == TYPE_CODE_ENUM))
 	    {
 	      bad_tag_guess_complaint (sym_name);
 	    }
 
-	  if (TYPE_CODE (tp) != type_code)
+	  if (tp->code () != type_code)
 	    {
-	      TYPE_CODE (tp) = type_code;
+	      tp->set_code (type_code);
 	    }
 
 	  /* Do not set the tag name if it is a compiler generated tag name
 	     (.Fxx or .xxfake or empty) for unnamed struct/union/enums.  */
 	  if (name[0] == '.' || name[0] == '\0')
-	    TYPE_NAME (tp) = NULL;
-	  else if (TYPE_NAME (tp) == NULL
-		   || strcmp (TYPE_NAME (tp), name) != 0)
-	    TYPE_NAME (tp)
-	      = obstack_strdup (&mdebugread_objfile->objfile_obstack, name);
+	    tp->set_name (NULL);
+	  else if (tp->name () == NULL
+		   || strcmp (tp->name (), name) != 0)
+	    tp->set_name (obstack_strdup (&mdebugread_objfile->objfile_obstack,
+					  name));
 	}
     }
 
@@ -1709,7 +1698,7 @@ parse_type (int fd, union aux_ext *ax, u
       /* Make sure that TYPE_CODE(tp) has an expected type code.
          Any type may be returned from cross_ref if file indirect entries
          are corrupted.  */
-      if (TYPE_CODE (tp) != TYPE_CODE_RANGE)
+      if (tp->code () != TYPE_CODE_RANGE)
 	{
 	  unexpected_type_code_complaint (sym_name);
 	}
@@ -1717,15 +1706,15 @@ parse_type (int fd, union aux_ext *ax, u
 	{
 	  /* Usually, TYPE_CODE(tp) is already type_code.  The main
 	     exception is if we guessed wrong re struct/union/enum.  */
-	  if (TYPE_CODE (tp) != type_code)
+	  if (tp->code () != type_code)
 	    {
 	      bad_tag_guess_complaint (sym_name);
-	      TYPE_CODE (tp) = type_code;
+	      tp->set_code (type_code);
 	    }
-	  if (TYPE_NAME (tp) == NULL
-	      || strcmp (TYPE_NAME (tp), name) != 0)
-	    TYPE_NAME (tp)
-	      = obstack_strdup (&mdebugread_objfile->objfile_obstack, name);
+	  if (tp->name () == NULL
+	      || strcmp (tp->name (), name) != 0)
+	    tp->set_name (obstack_strdup (&mdebugread_objfile->objfile_obstack,
+					  name));
 	}
     }
   if (t->bt == btTypedef)
@@ -1744,12 +1733,12 @@ parse_type (int fd, union aux_ext *ax, u
   /* Deal with range types.  */
   if (t->bt == btRange)
     {
-      TYPE_NFIELDS (tp) = 0;
-      TYPE_RANGE_DATA (tp) = ((struct range_bounds *)
-			  TYPE_ZALLOC (tp, sizeof (struct range_bounds)));
-      TYPE_LOW_BOUND (tp) = AUX_GET_DNLOW (bigend, ax);
+      tp->set_num_fields (0);
+      tp->set_bounds (((struct range_bounds *)
+			TYPE_ZALLOC (tp, sizeof (struct range_bounds))));
+      tp->bounds ()->low.set_const_val (AUX_GET_DNLOW (bigend, ax));
       ax++;
-      TYPE_HIGH_BOUND (tp) = AUX_GET_DNHIGH (bigend, ax);
+      tp->bounds ()->high.set_const_val (AUX_GET_DNHIGH (bigend, ax));
       ax++;
     }
 
@@ -1842,7 +1831,7 @@ upgrade_type (int fd, struct type **tpp,
 
       /* The bounds type should be an integer type, but might be anything
          else due to corrupt aux entries.  */
-      if (TYPE_CODE (indx) != TYPE_CODE_INT)
+      if (indx->code () != TYPE_CODE_INT)
 	{
 	  complaint (_("illegal array index type for %s, assuming int"),
 		     sym_name);
@@ -1910,7 +1899,7 @@ upgrade_type (int fd, struct type **tpp,
 
 static void
 parse_procedure (PDR *pr, struct compunit_symtab *search_symtab,
-		 struct partial_symtab *pst)
+		 legacy_psymtab *pst)
 {
   struct symbol *s, *i;
   const struct block *b;
@@ -2023,8 +2012,7 @@ parse_procedure (PDR *pr, struct compuni
       /* GDB expects the absolute function start address for the
          procedure descriptor in e->pdr.adr.
          As the address in the procedure descriptor is usually relative,
-         we would have to relocate e->pdr.adr with cur_fdr->adr and
-         ANOFFSET (pst->section_offsets, SECT_OFF_TEXT (pst->objfile)).
+         we would have to relocate e->pdr.adr with cur_fdr->adr.
          Unfortunately cur_fdr->adr and e->pdr.adr are both absolute
          in shared libraries on some systems, and on other systems
          e->pdr.adr is sometimes offset by a bogus value.
@@ -2050,7 +2038,7 @@ parse_procedure (PDR *pr, struct compuni
 
   if (processing_gcc_compilation == 0
       && found_ecoff_debugging_info == 0
-      && TYPE_CODE (TYPE_TARGET_TYPE (SYMBOL_TYPE (s))) == TYPE_CODE_VOID)
+      && TYPE_TARGET_TYPE (SYMBOL_TYPE (s))->code () == TYPE_CODE_VOID)
     SYMBOL_TYPE (s) = objfile_type (mdebugread_objfile)->nodebug_text_symbol;
 }
 
@@ -2060,11 +2048,8 @@ parse_procedure (PDR *pr, struct compuni
 
    This routine clobbers top_stack->cur_block and ->cur_st.  */
 
-static void parse_external (EXTR *, int, struct section_offsets *,
-			    struct objfile *);
-
 static void
-parse_external (EXTR *es, int bigend, struct section_offsets *section_offsets,
+parse_external (EXTR *es, int bigend, const section_offsets &section_offsets,
 		struct objfile *objfile)
 {
   union aux_ext *ax;
@@ -2298,7 +2283,7 @@ static void
 parse_partial_symbols (minimal_symbol_reader &reader,
 		       struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   const bfd_size_type external_sym_size = debug_swap->external_sym_size;
   const bfd_size_type external_rfd_size = debug_swap->external_rfd_size;
   const bfd_size_type external_ext_size = debug_swap->external_ext_size;
@@ -2314,7 +2299,7 @@ parse_partial_symbols (minimal_symbol_re
   EXTR *ext_in;
   EXTR *ext_in_end;
   SYMR sh;
-  struct partial_symtab *pst;
+  legacy_psymtab *pst;
   int textlow_not_set = 1;
 
   /* List of current psymtab's include files.  */
@@ -2324,7 +2309,7 @@ parse_partial_symbols (minimal_symbol_re
   EXTR *extern_tab;
   struct pst_map *fdr_to_pst;
   /* Index within current psymtab dependency list.  */
-  struct partial_symtab **dependency_list;
+  legacy_psymtab **dependency_list;
   int dependencies_used, dependencies_allocated;
   char *name;
   enum language prev_language;
@@ -2353,8 +2338,8 @@ parse_partial_symbols (minimal_symbol_re
   dependencies_allocated = 30;
   dependencies_used = 0;
   dependency_list =
-    (struct partial_symtab **) alloca (dependencies_allocated *
-				       sizeof (struct partial_symtab *));
+    (legacy_psymtab **) alloca (dependencies_allocated *
+				sizeof (legacy_psymtab *));
 
   set_last_source_file (NULL);
 
@@ -2377,7 +2362,7 @@ parse_partial_symbols (minimal_symbol_re
   fdr_to_pst = fdr_to_pst_holder.data ();
   fdr_to_pst++;
   {
-    struct partial_symtab *new_pst = new_psymtab ("", objfile);
+    legacy_psymtab *new_pst = new_psymtab ("", objfile);
 
     fdr_to_pst[-1].pst = new_pst;
     FDR_IDX (new_pst) = -1;
@@ -2595,7 +2580,7 @@ parse_partial_symbols (minimal_symbol_re
   /* Pass 3 over files, over local syms: fill in static symbols.  */
   for (f_idx = 0; f_idx < hdr->ifdMax; f_idx++)
     {
-      struct partial_symtab *save_pst;
+      legacy_psymtab *save_pst;
       EXTR *ext_ptr;
       CORE_ADDR textlow;
 
@@ -2613,9 +2598,7 @@ parse_partial_symbols (minimal_symbol_re
 	textlow = fh->adr;
       else
 	textlow = 0;
-      pst = start_psymtab_common (objfile,
-				  fdr_name (fh),
-				  textlow);
+      pst = new legacy_psymtab (fdr_name (fh), objfile, textlow);
       pst->read_symtab_private = XOBNEW (&objfile->objfile_obstack, symloc);
       memset (pst->read_symtab_private, 0, sizeof (struct symloc));
 
@@ -2627,7 +2610,8 @@ parse_partial_symbols (minimal_symbol_re
       PENDING_LIST (pst) = pending_list;
 
       /* The way to turn this into a symtab is to call...  */
-      pst->read_symtab = mdebug_read_symtab;
+      pst->legacy_read_symtab = mdebug_read_symtab;
+      pst->legacy_expand_psymtab = mdebug_expand_psymtab;
 
       /* Set up language for the pst.
          The language from the FDR is used if it is unambigious (e.g. cfront
@@ -2901,7 +2885,7 @@ parse_partial_symbols (minimal_symbol_re
 			{		/* Here if prev stab wasn't N_SO.  */
 			  if (pst)
 			    {
-			      pst = (struct partial_symtab *) 0;
+			      pst = (legacy_psymtab *) 0;
 			      includes_used = 0;
 			      dependencies_used = 0;
 			    }
@@ -3045,10 +3029,6 @@ parse_partial_symbols (minimal_symbol_re
 		    switch (p[1])
 		      {
 		      case 'S':
-			if (gdbarch_static_transform_name_p (gdbarch))
-			  namestring = gdbarch_static_transform_name
-					 (gdbarch, namestring);
-
 			add_psymbol_to_list (gdb::string_view (namestring,
 							       p - namestring),
 					     true, VAR_DOMAIN, LOC_STATIC,
@@ -3291,7 +3271,7 @@ parse_partial_symbols (minimal_symbol_re
 		    if (pst
 			&& gdbarch_sofun_address_maybe_missing (gdbarch))
 		      {
-			pst = (struct partial_symtab *) 0;
+			pst = (legacy_psymtab *) 0;
 			includes_used = 0;
 			dependencies_used = 0;
 		      }
@@ -3592,9 +3572,8 @@ parse_partial_symbols (minimal_symbol_re
 	      CORE_ADDR svalue;
 	      short section;
 
-	      if (ext_ptr->ifd != f_idx)
-		internal_error (__FILE__, __LINE__,
-				_("failed internal consistency check"));
+	      gdb_assert (ext_ptr->ifd == f_idx);
+
 	      psh = &ext_ptr->asym;
 
 	      /* Do not add undefined symbols to the partial symbol table.  */
@@ -3746,12 +3725,12 @@ parse_partial_symbols (minimal_symbol_re
 
   /* Remove the dummy psymtab created for -O3 images above, if it is
      still empty, to enable the detection of stripped executables.  */
-  pst = objfile->partial_symtabs->psymtabs;
-  if (pst->next == NULL
-      && pst->number_of_dependencies == 0
-      && pst->n_global_syms == 0
-      && pst->n_static_syms == 0)
-    objfile->partial_symtabs->psymtabs = NULL;
+  partial_symtab *pst_del = objfile->partial_symtabs->psymtabs;
+  if (pst_del->next == NULL
+      && pst_del->number_of_dependencies == 0
+      && pst_del->n_global_syms == 0
+      && pst_del->n_static_syms == 0)
+    objfile->partial_symtabs->discard_psymtab (pst_del);
 }
 
 /* If the current psymbol has an enumerated type, we need to add
@@ -3849,8 +3828,7 @@ mdebug_next_symbol_text (struct objfile
    The flow of control and even the memory allocation differs.  FIXME.  */
 
 static void
-psymtab_to_symtab_1 (struct objfile *objfile,
-		     struct partial_symtab *pst, const char *filename)
+mdebug_expand_psymtab (legacy_psymtab *pst, struct objfile *objfile)
 {
   bfd_size_type external_sym_size;
   bfd_size_type external_pdr_size;
@@ -3862,35 +3840,16 @@ psymtab_to_symtab_1 (struct objfile *obj
   struct linetable *lines;
   CORE_ADDR lowest_pdr_addr = 0;
   int last_symtab_ended = 0;
-  struct section_offsets *section_offsets = objfile->section_offsets;
+  const section_offsets &section_offsets = objfile->section_offsets;
 
   if (pst->readin)
     return;
-  pst->readin = 1;
+  pst->readin = true;
 
   /* Read in all partial symtabs on which this one is dependent.
      NOTE that we do have circular dependencies, sigh.  We solved
      that by setting pst->readin before this point.  */
-
-  for (i = 0; i < pst->number_of_dependencies; i++)
-    if (!pst->dependencies[i]->readin)
-      {
-	/* Inform about additional files to be read in.  */
-	if (info_verbose)
-	  {
-	    fputs_filtered (" ", gdb_stdout);
-	    wrap_here ("");
-	    fputs_filtered ("and ", gdb_stdout);
-	    wrap_here ("");
-	    printf_filtered ("%s...",
-			     pst->dependencies[i]->filename);
-	    wrap_here ("");	/* Flush output */
-	    gdb_flush (gdb_stdout);
-	  }
-	/* We only pass the filename for debug purposes.  */
-	psymtab_to_symtab_1 (objfile, pst->dependencies[i],
-			     pst->dependencies[i]->filename);
-      }
+  pst->expand_dependencies (objfile);
 
   /* Do nothing if this is a dummy psymtab.  */
 
@@ -3936,7 +3895,7 @@ psymtab_to_symtab_1 (struct objfile *obj
 
   if (processing_gcc_compilation != 0)
     {
-      struct gdbarch *gdbarch = get_objfile_arch (objfile);
+      struct gdbarch *gdbarch = objfile->arch ();
 
       /* This symbol table contains stabs-in-ecoff entries.  */
 
@@ -3980,8 +3939,7 @@ psymtab_to_symtab_1 (struct objfile *obj
 		      && previous_stab_code != (unsigned char) N_SO
 		      && *name == '\000')
 		    {
-		      valu += ANOFFSET (section_offsets,
-					SECT_OFF_TEXT (objfile));
+		      valu += section_offsets[SECT_OFF_TEXT (objfile)];
 		      previous_stab_code = N_SO;
 		      cust = end_symtab (valu, SECT_OFF_TEXT (objfile));
 		      end_stabs ();
@@ -4028,8 +3986,7 @@ psymtab_to_symtab_1 (struct objfile *obj
 	      else
 		{
 		  /* Handle encoded stab line number.  */
-		  valu += ANOFFSET (section_offsets,
-				    SECT_OFF_TEXT (objfile));
+		  valu += section_offsets[SECT_OFF_TEXT (objfile)];
 		  record_line (get_current_subfile (), sh.index,
 			       gdbarch_addr_bits_remove (gdbarch, valu));
 		}
@@ -4663,12 +4620,12 @@ new_symtab (const char *name, int maxlin
 
 /* Allocate a new partial_symtab NAME.  */
 
-static struct partial_symtab *
+static legacy_psymtab *
 new_psymtab (const char *name, struct objfile *objfile)
 {
-  struct partial_symtab *psymtab;
+  legacy_psymtab *psymtab;
 
-  psymtab = allocate_psymtab (name, objfile);
+  psymtab = new legacy_psymtab (name, objfile);
 
   /* Keep a backpointer to the file's symbols.  */
 
@@ -4680,7 +4637,8 @@ new_psymtab (const char *name, struct ob
   PENDING_LIST (psymtab) = pending_list;
 
   /* The way to turn this into a symtab is to call...  */
-  psymtab->read_symtab = mdebug_read_symtab;
+  psymtab->legacy_read_symtab = mdebug_read_symtab;
+  psymtab->legacy_expand_psymtab = mdebug_expand_psymtab;
   return (psymtab);
 }
 
@@ -4759,11 +4717,10 @@ new_block (enum block_type type, enum la
 static struct symbol *
 new_symbol (const char *name)
 {
-  struct symbol *s = allocate_symbol (mdebugread_objfile);
+  struct symbol *s = new (&mdebugread_objfile->objfile_obstack) symbol;
 
-  SYMBOL_SET_LANGUAGE (s, psymtab_language,
-		       &mdebugread_objfile->objfile_obstack);
-  SYMBOL_SET_NAMES (s, name, true, mdebugread_objfile);
+  s->set_language (psymtab_language, &mdebugread_objfile->objfile_obstack);
+  s->compute_and_set_names (name, true, mdebugread_objfile->per_bfd);
   return s;
 }
 
@@ -4775,7 +4732,7 @@ new_type (char *name)
   struct type *t;
 
   t = alloc_type (mdebugread_objfile);
-  TYPE_NAME (t) = name;
+  t->set_name (name);
   INIT_CPLUS_SPECIFIC (t);
   return t;
 }
@@ -4809,8 +4766,9 @@ elfmdebug_build_psymtabs (struct objfile
   reader.install ();
 }
 
+void _initialize_mdebugread ();
 void
-_initialize_mdebugread (void)
+_initialize_mdebugread ()
 {
   mdebug_register_index
     = register_symbol_register_impl (LOC_REGISTER, &mdebug_register_funcs);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mdebugread.h ./gdb/mdebugread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mdebugread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mdebugread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Read a symbol table in ECOFF format (Third-Eye).
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memattr.c ./gdb/memattr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memattr.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/memattr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Memory attributes support, for GDB.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -586,16 +586,12 @@ delete_mem_command (const char *args, in
   dont_repeat ();
 }
 
-static void
-dummy_cmd (const char *args, int from_tty)
-{
-}
-
 static struct cmd_list_element *mem_set_cmdlist;
 static struct cmd_list_element *mem_show_cmdlist;
 
+void _initialize_mem ();
 void
-_initialize_mem (void)
+_initialize_mem ()
 {
   add_com ("mem", class_vars, mem_command, _("\
 Define attributes for memory region or reset memory region handling to "
@@ -627,14 +623,14 @@ Do \"info mem\" to see current list of I
   add_info ("mem", info_mem_command,
 	    _("Memory region attributes."));
 
-  add_prefix_cmd ("mem", class_vars, dummy_cmd, _("\
+  add_basic_prefix_cmd ("mem", class_vars, _("\
 Memory regions settings."),
-		  &mem_set_cmdlist, "set mem ",
-		  0/* allow-unknown */, &setlist);
-  add_prefix_cmd ("mem", class_vars, dummy_cmd, _("\
+			&mem_set_cmdlist, "set mem ",
+			0/* allow-unknown */, &setlist);
+  add_show_prefix_cmd ("mem", class_vars, _("\
 Memory regions settings."),
-		  &mem_show_cmdlist, "show mem  ",
-		  0/* allow-unknown */, &showlist);
+		       &mem_show_cmdlist, "show mem  ",
+		       0/* allow-unknown */, &showlist);
 
   add_setshow_boolean_cmd ("inaccessible-by-default", no_class,
 				  &inaccessible_by_default, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memattr.h ./gdb/memattr.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memattr.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/memattr.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Memory attributes support, for GDB.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mem-break.c ./gdb/mem-break.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mem-break.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mem-break.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Simulate breakpoints by patching locations in the target system, for GDB.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.  Written by John Gilmore.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memory-map.c ./gdb/memory-map.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memory-map.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/memory-map.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Routines for handling XML memory maps provided by target.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memory-map.h ./gdb/memory-map.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memory-map.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/memory-map.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Routines for handling XML memory maps provided by target.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memrange.c ./gdb/memrange.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memrange.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/memrange.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Memory ranges
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memrange.h ./gdb/memrange.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/memrange.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/memrange.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* The memory range data structure, and associated utilities.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mep-tdep.c ./gdb/mep-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mep-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mep-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Toshiba MeP for GDB, the GNU debugger.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat, Inc.
 
@@ -2448,8 +2448,9 @@ mep_gdbarch_init (struct gdbarch_info in
   return gdbarch;
 }
 
+void _initialize_mep_tdep ();
 void
-_initialize_mep_tdep (void)
+_initialize_mep_tdep ()
 {
   mep_csr_reggroup = reggroup_new ("csr", USER_REGGROUP);
   mep_cr_reggroup  = reggroup_new ("cr", USER_REGGROUP); 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-break.c ./gdb/mi/mi-cmd-break.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-break.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmd-break.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - breakpoint and watchpoint commands.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-break.h ./gdb/mi/mi-cmd-break.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-break.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmd-break.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - breakpoint and watchpoint commands.
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corporation.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-catch.c ./gdb/mi/mi-cmd-catch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-catch.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmd-catch.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - catch commands.
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corporation.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-disas.c ./gdb/mi/mi-cmd-disas.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-disas.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmd-disas.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - disassemble commands.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-env.c ./gdb/mi/mi-cmd-env.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-env.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmd-env.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - environment commands.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat Inc.
 
@@ -244,7 +244,7 @@ mi_cmd_env_dir (const char *command, cha
 void
 mi_cmd_inferior_tty_set (const char *command, char **argv, int argc)
 {
-  set_inferior_io_terminal (argv[0]);
+  current_inferior ()->set_tty (argv[0]);
 }
 
 /* Print the inferior terminal device name.  */
@@ -252,17 +252,17 @@ mi_cmd_inferior_tty_set (const char *com
 void
 mi_cmd_inferior_tty_show (const char *command, char **argv, int argc)
 {
-  const char *inferior_io_terminal = get_inferior_io_terminal ();
-  
   if ( !mi_valid_noargs ("-inferior-tty-show", argc, argv))
     error (_("-inferior-tty-show: Usage: No args"));
 
-  if (inferior_io_terminal)
-    current_uiout->field_string ("inferior_tty_terminal", inferior_io_terminal);
+  const char *inferior_tty = current_inferior ()->tty ();
+  if (inferior_tty != NULL)
+    current_uiout->field_string ("inferior_tty_terminal", inferior_tty);
 }
 
+void _initialize_mi_cmd_env ();
 void 
-_initialize_mi_cmd_env (void)
+_initialize_mi_cmd_env ()
 {
   const char *env;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-file.c ./gdb/mi/mi-cmd-file.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-file.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmd-file.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - file commands.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
@@ -121,7 +121,6 @@ mi_cmd_file_list_shared_libraries (const
 {
   struct ui_out *uiout = current_uiout;
   const char *pattern;
-  struct so_list *so = NULL;
 
   switch (argc)
     {
@@ -148,7 +147,7 @@ mi_cmd_file_list_shared_libraries (const
   /* Print the table header.  */
   ui_out_emit_list list_emitter (uiout, "shared-libraries");
 
-  ALL_SO_LIBS (so)
+  for (struct so_list *so : current_program_space->solibs ())
     {
       if (so->so_name[0] == '\0')
 	continue;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-info.c ./gdb/mi/mi-cmd-info.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-info.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmd-info.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - information commands.
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmds.c ./gdb/mi/mi-cmds.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmds.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmds.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set for GDB, the GNU debugger.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions (a Red Hat company).
 
@@ -295,8 +295,9 @@ build_table (struct mi_cmd *commands)
     }
 }
 
+void _initialize_mi_cmds ();
 void
-_initialize_mi_cmds (void)
+_initialize_mi_cmds ()
 {
   build_table (mi_cmds);
   memset (&stats, 0, sizeof (stats));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmds.h ./gdb/mi/mi-cmds.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmds.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmds.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* MI Command Set for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions (a Red Hat company).
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-stack.c ./gdb/mi/mi-cmd-stack.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-stack.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmd-stack.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - stack commands.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
@@ -543,7 +543,7 @@ list_arg_or_local (const struct frame_ar
 	      get_no_prettyformat_print_options (&opts);
 	      opts.deref_ref = 1;
 	      common_val_print (arg->val, &stb, 0, &opts,
-				language_def (SYMBOL_LANGUAGE (arg->sym)));
+				language_def (arg->sym->language ()));
 	    }
 	  catch (const gdb_exception_error &except)
 	    {
@@ -634,9 +634,8 @@ list_args_or_locals (const frame_print_o
 	      struct frame_arg arg, entryarg;
 
 	      if (SYMBOL_IS_ARGUMENT (sym))
-		sym2 = lookup_symbol (sym->linkage_name (),
-				      block, VAR_DOMAIN,
-				      NULL).symbol;
+		sym2 = lookup_symbol_search_name (sym->search_name (),
+						  block, VAR_DOMAIN).symbol;
 	      else
 		sym2 = sym;
 	      gdb_assert (sym2 != NULL);
@@ -650,9 +649,9 @@ list_args_or_locals (const frame_print_o
 		{
 		case PRINT_SIMPLE_VALUES:
 		  type = check_typedef (sym2->type);
-		  if (TYPE_CODE (type) != TYPE_CODE_ARRAY
-		      && TYPE_CODE (type) != TYPE_CODE_STRUCT
-		      && TYPE_CODE (type) != TYPE_CODE_UNION)
+		  if (type->code () != TYPE_CODE_ARRAY
+		      && type->code () != TYPE_CODE_STRUCT
+		      && type->code () != TYPE_CODE_UNION)
 		    {
 		case PRINT_ALL_VALUES:
 		  if (SYMBOL_IS_ARGUMENT (sym))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-target.c ./gdb/mi/mi-cmd-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-target.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmd-target.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - target commands.
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-var.c ./gdb/mi/mi-cmd-var.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-cmd-var.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-cmd-var.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - varobj commands.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions (a Red Hat company).
 
@@ -340,9 +340,9 @@ mi_print_value_p (struct varobj *var, en
 
       /* For PRINT_SIMPLE_VALUES, only print the value if it has a type
 	 and that type is not a compound type.  */
-      return (TYPE_CODE (type) != TYPE_CODE_ARRAY
-	      && TYPE_CODE (type) != TYPE_CODE_STRUCT
-	      && TYPE_CODE (type) != TYPE_CODE_UNION);
+      return (type->code () != TYPE_CODE_ARRAY
+	      && type->code () != TYPE_CODE_STRUCT
+	      && type->code () != TYPE_CODE_UNION);
     }
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-common.c ./gdb/mi/mi-common.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-common.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-common.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Interface for common GDB/MI data
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-common.h ./gdb/mi/mi-common.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-common.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-common.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Interface for common GDB/MI data
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-console.c ./gdb/mi/mi-console.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-console.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-console.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* MI Console code.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions (a Red Hat company).
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-console.h ./gdb/mi/mi-console.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-console.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-console.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - MI Console.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-getopt.c ./gdb/mi/mi-getopt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-getopt.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-getopt.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - MI Option Parser.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-getopt.h ./gdb/mi/mi-getopt.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-getopt.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-getopt.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Option Parser.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-interp.c ./gdb/mi/mi-interp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-interp.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-interp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* MI Interpreter Definitions and Commands for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -23,7 +23,7 @@
 
 #include "interps.h"
 #include "event-top.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "inferior.h"
 #include "infrun.h"
 #include "ui-out.h"
@@ -91,8 +91,6 @@ static void mi_memory_changed (struct in
 			       ssize_t len, const bfd_byte *myaddr);
 static void mi_on_sync_execution_done (void);
 
-static int report_initial_inferior (struct inferior *inf, void *closure);
-
 /* Display the MI prompt.  */
 
 static void
@@ -137,12 +135,27 @@ mi_interp::init (bool top_level)
 
   if (top_level)
     {
-      /* The initial inferior is created before this function is
-	 called, so we need to report it explicitly.  Use iteration in
-	 case future version of GDB creates more than one inferior
-	 up-front.  */
-      iterate_over_inferiors (report_initial_inferior, mi);
-    }
+      /* The initial inferior is created before this function is called, so we
+	 need to report it explicitly when initializing the top-level MI
+	 interpreter.
+
+	 This is also called when additional MI interpreters are added (using
+	 the new-ui command), when multiple inferiors possibly exist, so we need
+	 to use iteration to report all the inferiors.  mi_inferior_added can't
+	 be used, because it would print the event on all the other MI UIs.  */
+
+      for (inferior *inf : all_inferiors ())
+	{
+	  target_terminal::scoped_restore_terminal_state term_state;
+	  target_terminal::ours_for_output ();
+
+	  fprintf_unfiltered (mi->event_channel,
+			      "thread-group-added,id=\"i%d\"",
+			      inf->num);
+
+	  gdb_flush (mi->event_channel);
+	}
+  }
 }
 
 void
@@ -961,7 +974,8 @@ multiple_inferiors_p ()
 }
 
 static void
-mi_on_resume_1 (struct mi_interp *mi, ptid_t ptid)
+mi_on_resume_1 (struct mi_interp *mi,
+		process_stratum_target *targ, ptid_t ptid)
 {
   /* To cater for older frontends, emit ^running, but do it only once
      per each command.  We do it here, since at this point we know
@@ -984,7 +998,7 @@ mi_on_resume_1 (struct mi_interp *mi, pt
       && !multiple_inferiors_p ())
     fprintf_unfiltered (mi->raw_stdout, "*running,thread-id=\"all\"\n");
   else
-    for (thread_info *tp : all_non_exited_threads (ptid))
+    for (thread_info *tp : all_non_exited_threads (targ, ptid))
       mi_output_running (tp);
 
   if (!running_result_record_printed && mi_proceeded)
@@ -1004,10 +1018,11 @@ mi_on_resume (ptid_t ptid)
 {
   struct thread_info *tp = NULL;
 
+  process_stratum_target *target = current_inferior ()->process_target ();
   if (ptid == minus_one_ptid || ptid.is_pid ())
     tp = inferior_thread ();
   else
-    tp = find_thread_ptid (ptid);
+    tp = find_thread_ptid (target, ptid);
 
   /* Suppress output while calling an inferior function.  */
   if (tp->control.in_infcall)
@@ -1023,7 +1038,7 @@ mi_on_resume (ptid_t ptid)
       target_terminal::scoped_restore_terminal_state term_state;
       target_terminal::ours_for_output ();
 
-      mi_on_resume_1 (mi, ptid);
+      mi_on_resume_1 (mi, target, ptid);
     }
 }
 
@@ -1251,26 +1266,6 @@ mi_user_selected_context_changed (user_s
     }
 }
 
-static int
-report_initial_inferior (struct inferior *inf, void *closure)
-{
-  /* This function is called from mi_interpreter_init, and since
-     mi_inferior_added assumes that inferior is fully initialized
-     and top_level_interpreter_data is set, we cannot call
-     it here.  */
-  struct mi_interp *mi = (struct mi_interp *) closure;
-
-  target_terminal::scoped_restore_terminal_state term_state;
-  target_terminal::ours_for_output ();
-
-  fprintf_unfiltered (mi->event_channel,
-		      "thread-group-added,id=\"i%d\"",
-		      inf->num);
-  gdb_flush (mi->event_channel);
-
-  return 0;
-}
-
 ui_out *
 mi_interp::interp_ui_out ()
 {
@@ -1333,8 +1328,9 @@ mi_interp_factory (const char *name)
   return new mi_interp (name);
 }
 
+void _initialize_mi_interp ();
 void
-_initialize_mi_interp (void)
+_initialize_mi_interp ()
 {
   /* The various interpreter levels.  */
   interp_factory_register (INTERP_MI1, mi_interp_factory);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-interp.h ./gdb/mi/mi-interp.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-interp.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-interp.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* MI Interpreter Definitions and Commands for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-main.c ./gdb/mi/mi-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-main.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-main.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* MI Command Set.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions (a Red Hat company).
 
@@ -33,7 +33,7 @@
 #include "ui-out.h"
 #include "mi-out.h"
 #include "interps.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "event-top.h"
 #include "gdbcore.h"		/* For write_memory().  */
 #include "value.h"
@@ -390,17 +390,14 @@ mi_cmd_exec_interrupt (const char *comma
     }
 }
 
-/* Callback for iterate_over_inferiors which starts the execution
-   of the given inferior.
+/* Start the execution of the given inferior.
 
-   ARG is a pointer to an integer whose value, if non-zero, indicates
-   that the program should be stopped when reaching the main subprogram
-   (similar to what the CLI "start" command does).  */
+   START_P indicates whether the program should be stopped when reaching the
+   main subprogram (similar to what the CLI "start" command does).  */
 
-static int
-run_one_inferior (struct inferior *inf, void *arg)
+static void
+run_one_inferior (inferior *inf, bool start_p)
 {
-  int start_p = *(int *) arg;
   const char *run_cmd = start_p ? "start" : "run";
   struct target_ops *run_target = find_run_target ();
   int async_p = mi_async && run_target->can_async_p ();
@@ -414,14 +411,9 @@ run_one_inferior (struct inferior *inf,
       switch_to_thread (tp);
     }
   else
-    {
-      set_current_inferior (inf);
-      switch_to_no_thread ();
-      set_current_program_space (inf->pspace);
-    }
+    switch_to_inferior_no_thread (inf);
   mi_execute_cli_command (run_cmd, async_p,
 			  async_p ? "&" : NULL);
-  return 0;
 }
 
 void
@@ -466,7 +458,8 @@ mi_cmd_exec_run (const char *command, ch
     {
       scoped_restore_current_pspace_and_thread restore_pspace_thread;
 
-      iterate_over_inferiors (run_one_inferior, &start_p);
+      for (inferior *inf : all_inferiors ())
+	run_one_inferior (inf, start_p);
     }
   else
     {
@@ -637,16 +630,13 @@ struct print_one_inferior_data
   const std::set<int> *inferiors;
 };
 
-static int
-print_one_inferior (struct inferior *inferior, void *xdata)
+static void
+print_one_inferior (struct inferior *inferior, bool recurse,
+		    const std::set<int> &ids)
 {
-  struct print_one_inferior_data *top_data
-    = (struct print_one_inferior_data *) xdata;
   struct ui_out *uiout = current_uiout;
 
-  if (top_data->inferiors->empty ()
-      || (top_data->inferiors->find (inferior->pid)
-	  != top_data->inferiors->end ()))
+  if (ids.empty () || (ids.find (inferior->pid) != ids.end ()))
     {
       struct collect_cores_data data;
       ui_out_emit_tuple tuple_emitter (uiout, NULL);
@@ -679,11 +669,9 @@ print_one_inferior (struct inferior *inf
 	    uiout->field_signed (NULL, b);
 	}
 
-      if (top_data->recurse)
+      if (recurse)
 	print_thread_info (uiout, NULL, inferior->pid);
     }
-
-  return 0;
 }
 
 /* Output a field named 'cores' with a list as the value.  The
@@ -857,18 +845,14 @@ mi_cmd_list_thread_groups (const char *c
     }
   else
     {
-      struct print_one_inferior_data data;
-
-      data.recurse = recurse;
-      data.inferiors = &ids;
-
       /* Local thread groups.  Either no explicit ids -- and we
 	 print everything, or several explicit ids.  In both cases,
 	 we print more than one group, and have to use 'groups'
 	 as the top-level element.  */
       ui_out_emit_list list_emitter (uiout, "groups");
       update_thread_list ();
-      iterate_over_inferiors (print_one_inferior, &data);
+      for (inferior *inf : all_inferiors ())
+	print_one_inferior (inf, recurse, ids);
     }
 }
 
@@ -1136,9 +1120,7 @@ output_register (struct frame_info *fram
 
   get_formatted_print_options (&opts, format);
   opts.deref_ref = 1;
-  val_print (value_type (val),
-	     value_embedded_offset (val), 0,
-	     &stb, 0, val, &opts, current_language);
+  common_val_print (val, &stb, 0, &opts, current_language);
   uiout->field_stream ("value", stb);
 }
 
@@ -1723,23 +1705,11 @@ mi_cmd_add_inferior (const char *command
   current_uiout->field_fmt ("inferior", "i%d", inf->num);
 }
 
-/* Callback used to find the first inferior other than the current
-   one.  */
-
-static int
-get_other_inferior (struct inferior *inf, void *arg)
-{
-  if (inf == current_inferior ())
-    return 0;
-
-  return 1;
-}
-
 void
 mi_cmd_remove_inferior (const char *command, char **argv, int argc)
 {
   int id;
-  struct inferior *inf;
+  struct inferior *inf_to_remove;
 
   if (argc != 1)
     error (_("-remove-inferior should be passed a single argument"));
@@ -1747,18 +1717,23 @@ mi_cmd_remove_inferior (const char *comm
   if (sscanf (argv[0], "i%d", &id) != 1)
     error (_("the thread group id is syntactically invalid"));
 
-  inf = find_inferior_id (id);
-  if (!inf)
+  inf_to_remove = find_inferior_id (id);
+  if (inf_to_remove == NULL)
     error (_("the specified thread group does not exist"));
 
-  if (inf->pid != 0)
+  if (inf_to_remove->pid != 0)
     error (_("cannot remove an active inferior"));
 
-  if (inf == current_inferior ())
+  if (inf_to_remove == current_inferior ())
     {
       struct thread_info *tp = 0;
-      struct inferior *new_inferior
-	= iterate_over_inferiors (get_other_inferior, NULL);
+      struct inferior *new_inferior = NULL;
+
+      for (inferior *inf : all_inferiors ())
+	{
+	  if (inf != inf_to_remove)
+	    new_inferior = inf;
+	}
 
       if (new_inferior == NULL)
 	error (_("Cannot remove last inferior"));
@@ -1773,7 +1748,7 @@ mi_cmd_remove_inferior (const char *comm
       set_current_program_space (new_inferior->pspace);
     }
 
-  delete_inferior (inf);
+  delete_inferior (inf_to_remove);
 }
 
 
@@ -2483,9 +2458,9 @@ print_variable_or_computed (const char *
       type = check_typedef (value_type (val));
       type_print (value_type (val), "", &stb, -1);
       uiout->field_stream ("type", stb);
-      if (TYPE_CODE (type) != TYPE_CODE_ARRAY
-	  && TYPE_CODE (type) != TYPE_CODE_STRUCT
-	  && TYPE_CODE (type) != TYPE_CODE_UNION)
+      if (type->code () != TYPE_CODE_ARRAY
+	  && type->code () != TYPE_CODE_STRUCT
+	  && type->code () != TYPE_CODE_UNION)
 	{
 	  struct value_print_options opts;
 
@@ -2753,8 +2728,9 @@ mi_cmd_complete (const char *command, ch
 }
 
 
+void _initialize_mi_main ();
 void
-_initialize_mi_main (void)
+_initialize_mi_main ()
 {
   struct cmd_list_element *c;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-main.h ./gdb/mi/mi-main.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-main.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-main.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* MI Internal Functions for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-out.c ./gdb/mi/mi-out.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-out.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-out.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* MI Command Set - output generating routines.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions (a Red Hat company).
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-out.h ./gdb/mi/mi-out.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-out.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-out.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - MI output generating routines for GDB.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-parse.c ./gdb/mi/mi-parse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-parse.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-parse.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* MI Command Set - MI parser.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions (a Red Hat company).
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-parse.h ./gdb/mi/mi-parse.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-parse.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-parse.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - MI Command Parser.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-symbol-cmds.c ./gdb/mi/mi-symbol-cmds.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mi/mi-symbol-cmds.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mi/mi-symbol-cmds.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* MI Command Set - symbol commands.
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -50,7 +50,7 @@ mi_cmd_symbol_list_lines (const char *co
      already sorted by increasing values in the symbol table, so no
      need to perform any other sorting.  */
 
-  gdbarch = get_objfile_arch (SYMTAB_OBJFILE (s));
+  gdbarch = SYMTAB_OBJFILE (s)->arch ();
 
   ui_out_emit_list list_emitter (uiout, "lines");
   if (SYMTAB_LINETABLE (s) != NULL && SYMTAB_LINETABLE (s)->nitems > 0)
@@ -96,7 +96,7 @@ static void
 output_nondebug_symbol (ui_out *uiout,
 			const struct bound_minimal_symbol &msymbol)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (msymbol.objfile);
+  struct gdbarch *gdbarch = msymbol.objfile->arch ();
   ui_out_emit_tuple tuple_emitter (uiout, NULL);
 
   uiout->field_core_addr ("address", gdbarch,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/microblaze-linux-tdep.c ./gdb/microblaze-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/microblaze-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/microblaze-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Xilinx MicroBlaze.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -131,8 +131,9 @@ microblaze_linux_init_abi (struct gdbarc
 				&microblaze_linux_sighandler_tramp_frame);
 }
 
+void _initialize_microblaze_linux_tdep ();
 void
-_initialize_microblaze_linux_tdep (void)
+_initialize_microblaze_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_microblaze, 0, GDB_OSABI_LINUX, 
 			  microblaze_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/microblaze-tdep.c ./gdb/microblaze-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/microblaze-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/microblaze-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Xilinx MicroBlaze.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -31,7 +31,7 @@
 #include "target.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "osabi.h"
 #include "target-descriptions.h"
 #include "opcodes/microblaze-opcm.h"
@@ -753,8 +753,9 @@ microblaze_gdbarch_init (struct gdbarch_
   return gdbarch;
 }
 
+void _initialize_microblaze_tdep ();
 void
-_initialize_microblaze_tdep (void)
+_initialize_microblaze_tdep ()
 {
   register_gdbarch_init (bfd_arch_microblaze, microblaze_gdbarch_init);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/microblaze-tdep.h ./gdb/microblaze-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/microblaze-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/microblaze-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Xilinx MicroBlaze.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mingw-hdep.c ./gdb/mingw-hdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mingw-hdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mingw-hdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Host support routines for MinGW, for GDB, the GNU debugger.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -20,9 +20,9 @@
 #include "defs.h"
 #include "main.h"
 #include "serial.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 
-#include "gdb_select.h"
+#include "gdbsupport/gdb_select.h"
 
 #include <windows.h>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/minidebug.c ./gdb/minidebug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/minidebug.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/minidebug.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Read MiniDebugInfo data from an objfile.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -26,6 +26,10 @@
 
 #ifdef HAVE_LIBLZMA
 
+/* We stash a reference to the .gnu_debugdata BFD on the enclosing
+   BFD.  */
+static const bfd_key<gdb_bfd_ref_ptr> gnu_debug_key;
+
 #include <lzma.h>
 
 /* Allocator function for LZMA.  */
@@ -269,6 +273,10 @@ find_separate_debug_file_in_section (str
     return NULL;
 
 #ifdef HAVE_LIBLZMA
+  gdb_bfd_ref_ptr *shared = gnu_debug_key.get (objfile->obfd);
+  if (shared != nullptr)
+    return *shared;
+
   std::string filename = string_printf (_(".gnu_debugdata for %s"),
 					objfile_name (objfile));
 
@@ -282,6 +290,9 @@ find_separate_debug_file_in_section (str
       warning (_("Cannot parse .gnu_debugdata section; not a BFD object"));
       return NULL;
     }
+
+  gnu_debug_key.emplace (objfile->obfd, abfd);
+
 #else
   warning (_("Cannot parse .gnu_debugdata section; LZMA support was "
 	     "disabled at compile time"));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/minsyms.c ./gdb/minsyms.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/minsyms.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/minsyms.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* GDB routines for manipulating the minimal symbol tables.
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
    This file is part of GDB.
@@ -54,7 +54,6 @@
 #include <algorithm>
 #include "safe-ctype.h"
 #include "gdbsupport/parallel-for.h"
-#include "maint.h"
 
 #if CXX_STD_THREAD
 #include <mutex>
@@ -78,7 +77,7 @@ msymbol_is_function (struct objfile *obj
     case mst_file_bss:
     case mst_data_gnu_ifunc:
       {
-	struct gdbarch *gdbarch = get_objfile_arch (objfile);
+	struct gdbarch *gdbarch = objfile->arch ();
 	CORE_ADDR pc
 	  = gdbarch_convert_from_func_ptr_addr (gdbarch, msym_addr,
 						current_top_target ());
@@ -163,7 +162,7 @@ add_minsym_to_demangled_hash_table (stru
 {
   if (sym->demangled_hash_next == NULL)
     {
-      objfile->per_bfd->demangled_hash_languages.set (MSYMBOL_LANGUAGE (sym));
+      objfile->per_bfd->demangled_hash_languages.set (sym->language ());
 
       struct minimal_symbol **table
 	= objfile->per_bfd->msymbol_demangled_hash;
@@ -364,8 +363,8 @@ lookup_minimal_symbol (const char *name,
 		       % MINIMAL_SYMBOL_HASH_SIZE);
 
 		  symbol_name_matcher_ftype *match
-		    = get_symbol_name_matcher (language_def (lang),
-					       lookup_name);
+		    = language_def (lang)->get_symbol_name_matcher
+							(lookup_name);
 		  struct minimal_symbol **msymbol_demangled_hash
 		    = objfile->per_bfd->msymbol_demangled_hash;
 
@@ -468,7 +467,7 @@ linkage_name_str (const lookup_name_info
   if (current_language->la_language == language_ada)
     return lookup_name.ada ().lookup_name ().c_str ();
 
-  return lookup_name.name ().c_str ();
+  return lookup_name.c_str ();
 }
 
 /* See minsyms.h.  */
@@ -508,7 +507,7 @@ iterate_over_minimal_symbols
       enum language lang = (enum language) liter;
       const language_defn *lang_def = language_def (lang);
       symbol_name_matcher_ftype *name_match
-	= get_symbol_name_matcher (lang_def, lookup_name);
+	= lang_def->get_symbol_name_matcher (lookup_name);
 
       unsigned int hash
 	= lookup_name.search_name_hash (lang) % MINIMAL_SYMBOL_HASH_SIZE;
@@ -667,24 +666,18 @@ msym_prefer_to_msym_type (lookup_msym_pr
   gdb_assert_not_reached ("unhandled lookup_msym_prefer");
 }
 
-/* Search through the minimal symbol table for each objfile and find
-   the symbol whose address is the largest address that is still less
-   than or equal to PC, and matches SECTION (which is not NULL).
-   Returns a pointer to the minimal symbol if such a symbol is found,
-   or NULL if PC is not in a suitable range.
+/* See minsyms.h.
+
    Note that we need to look through ALL the minimal symbol tables
    before deciding on the symbol that comes closest to the specified PC.
    This is because objfiles can overlap, for example objfile A has .text
    at 0x100 and .data at 0x40000 and objfile B has .text at 0x234 and
-   .data at 0x40048.
-
-   If WANT_TRAMPOLINE is set, prefer mst_solib_trampoline symbols when
-   there are text and trampoline symbols at the same address.
-   Otherwise prefer mst_text symbols.  */
+   .data at 0x40048.  */
 
 bound_minimal_symbol
 lookup_minimal_symbol_by_pc_section (CORE_ADDR pc_in, struct obj_section *section,
-				     lookup_msym_prefer prefer)
+				     lookup_msym_prefer prefer,
+				     bound_minimal_symbol *previous)
 {
   int lo;
   int hi;
@@ -694,6 +687,12 @@ lookup_minimal_symbol_by_pc_section (COR
   struct objfile *best_objfile = NULL;
   struct bound_minimal_symbol result;
 
+  if (previous != nullptr)
+    {
+      previous->minsym = nullptr;
+      previous->objfile = nullptr;
+    }
+
   if (section == NULL)
     {
       section = find_pc_section (pc_in);
@@ -887,8 +886,23 @@ lookup_minimal_symbol_by_pc_section (COR
 		  if (best_zero_sized != -1)
 		    hi = best_zero_sized;
 		  else
-		    /* Go on to the next object file.  */
-		    continue;
+		    {
+		      /* If needed record this symbol as the closest
+			 previous symbol.  */
+		      if (previous != nullptr)
+			{
+			  if (previous->minsym == nullptr
+			      || (MSYMBOL_VALUE_RAW_ADDRESS (&msymbol[hi])
+				  > MSYMBOL_VALUE_RAW_ADDRESS
+					(previous->minsym)))
+			    {
+			      previous->minsym = &msymbol[hi];
+			      previous->objfile = objfile;
+			    }
+			}
+		      /* Go on to the next object file.  */
+		      continue;
+		    }
 		}
 
 	      /* The minimal symbol indexed by hi now is the best one in this
@@ -1129,23 +1143,14 @@ minimal_symbol_reader::record_full (gdb:
       m_msym_bunch = newobj;
     }
   msymbol = &m_msym_bunch->contents[m_msym_bunch_index];
-  symbol_set_language (msymbol, language_auto,
-		       &m_objfile->per_bfd->storage_obstack);
+  msymbol->set_language (language_auto,
+			 &m_objfile->per_bfd->storage_obstack);
 
   if (copy_name)
-    msymbol->name = obstack_strndup (&m_objfile->per_bfd->storage_obstack,
-				     name.data (), name.size ());
+    msymbol->m_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;
-    }
+    msymbol->m_name = name.data ();
 
   SET_MSYMBOL_VALUE_ADDRESS (msymbol, address);
   MSYMBOL_SECTION (msymbol) = section;
@@ -1407,22 +1412,22 @@ minimal_symbol_reader::install ()
 	   for (minimal_symbol *msym = start; msym < end; ++msym)
 	     {
 	       size_t idx = msym - msymbols;
-	       hash_values[idx].name_length = strlen (msym->name);
+	       hash_values[idx].name_length = strlen (msym->linkage_name ());
 	       if (!msym->name_set)
 		 {
-		   /* This will be freed later, by symbol_set_names.  */
+		   /* This will be freed later, by compute_and_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);
+		     = symbol_find_demangled_name (msym, msym->linkage_name ());
+		   msym->set_demangled_name
+		     (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
+		  the name_set check, or compute_and_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);
+		 = fast_hash (msym->linkage_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
@@ -1430,8 +1435,7 @@ minimal_symbol_reader::install ()
 		  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 ());
+		   = search_name_hash (msym->language (), msym->search_name ());
 	     }
 	   {
 	     /* To limit how long we hold the lock, we only acquire it here
@@ -1442,10 +1446,9 @@ minimal_symbol_reader::install ()
 	     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),
+		 msym->compute_and_set_names
+		   (gdb::string_view (msym->linkage_name (),
+				      hash_values[idx].name_length),
 		    false,
 		    m_objfile->per_bfd,
 		    hash_values[idx].mangled_name_hash);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/minsyms.h ./gdb/minsyms.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/minsyms.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/minsyms.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Minimal symbol table definitions for GDB.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -240,7 +240,9 @@ enum class lookup_msym_prefer
 
 /* Search through the minimal symbol table for each objfile and find
    the symbol whose address is the largest address that is still less
-   than or equal to PC, and which matches SECTION.
+   than or equal to PC_IN, and which matches SECTION.  A matching symbol
+   must either be zero sized and have address PC_IN, or PC_IN must fall
+   within the range of addresses covered by the matching symbol.
 
    If SECTION is NULL, this uses the result of find_pc_section
    instead.
@@ -249,12 +251,17 @@ enum class lookup_msym_prefer
    found, or NULL if PC is not in a suitable range.
 
    See definition of lookup_msym_prefer for description of PREFER.  By
-   default mst_text symbols are preferred.  */
+   default mst_text symbols are preferred.
+
+   If the PREVIOUS pointer is non-NULL, and no matching symbol is found,
+   then the contents will be set to reference the closest symbol before
+   PC_IN.  */
 
 struct bound_minimal_symbol lookup_minimal_symbol_by_pc_section
-  (CORE_ADDR,
-   struct obj_section *,
-   lookup_msym_prefer prefer = lookup_msym_prefer::TEXT);
+  (CORE_ADDR pc_in,
+   struct obj_section *section,
+   lookup_msym_prefer prefer = lookup_msym_prefer::TEXT,
+   bound_minimal_symbol *previous = nullptr);
 
 /* Backward compatibility: search through the minimal symbol table 
    for a matching PC (no section given).
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips64-obsd-nat.c ./gdb/mips64-obsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips64-obsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips64-obsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for OpenBSD/mips64.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -115,8 +115,9 @@ mips64_obsd_nat_target::store_registers
     perror_with_name (_("Couldn't write registers"));
 }
 
+void _initialize_mips64obsd_nat ();
 void
-_initialize_mips64obsd_nat (void)
+_initialize_mips64obsd_nat ()
 {
   add_inf_child_target (&the_mips64_obsd_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips64-obsd-tdep.c ./gdb/mips64-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips64-obsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips64-obsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/mips64.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -159,8 +159,9 @@ mips64obsd_init_abi (struct gdbarch_info
     (gdbarch, svr4_lp64_fetch_link_map_offsets);
 }
 
+void _initialize_mips64obsd_tdep ();
 void
-_initialize_mips64obsd_tdep (void)
+_initialize_mips64obsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_mips, 0, GDB_OSABI_OPENBSD,
 			  mips64obsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-fbsd-nat.c ./gdb/mips-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-fbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-fbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD/mips.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -126,8 +126,9 @@ mips_fbsd_nat_target::store_registers (s
     }
 }
 
+void _initialize_mips_fbsd_nat ();
 void
-_initialize_mips_fbsd_nat (void)
+_initialize_mips_fbsd_nat ()
 {
   add_inf_child_target (&the_mips_fbsd_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-fbsd-tdep.c ./gdb/mips-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-fbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-fbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD/mips.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -462,6 +462,20 @@ static const struct tramp_frame mips64_f
 
 /* Shared library support.  */
 
+/* FreeBSD/mips can use an alternate routine in the runtime linker to
+   resolve functions.  */
+
+static CORE_ADDR
+mips_fbsd_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
+{
+  struct bound_minimal_symbol msym
+    = lookup_bound_minimal_symbol ("_mips_rtld_bind");
+  if (msym.minsym != nullptr && BMSYMBOL_VALUE_ADDRESS (msym) == pc)
+    return frame_unwind_caller_pc (get_current_frame ());
+
+  return fbsd_skip_solib_resolver (gdbarch, pc);
+}
+
 /* FreeBSD/mips uses a slightly different `struct link_map' than the
    other FreeBSD platforms as it includes an additional `l_off'
    member.  */
@@ -546,6 +560,8 @@ mips_fbsd_init_abi (struct gdbarch_info
   set_gdbarch_iterate_over_regset_sections
     (gdbarch, mips_fbsd_iterate_over_regset_sections);
 
+  set_gdbarch_skip_solib_resolver (gdbarch, mips_fbsd_skip_solib_resolver);
+
   /* FreeBSD/mips has SVR4-style shared libraries.  */
   set_solib_svr4_fetch_link_map_offsets
     (gdbarch, (gdbarch_ptr_bit (gdbarch) == 32 ?
@@ -553,8 +569,9 @@ mips_fbsd_init_abi (struct gdbarch_info
 	       mips_fbsd_lp64_fetch_link_map_offsets));
 }
 
+void _initialize_mips_fbsd_tdep ();
 void
-_initialize_mips_fbsd_tdep (void)
+_initialize_mips_fbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_mips, 0, GDB_OSABI_FREEBSD,
 			  mips_fbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-fbsd-tdep.h ./gdb/mips-fbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-fbsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-fbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for GDB on MIPS systems running FreeBSD.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-linux-nat.c ./gdb/mips-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux on MIPS processors.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -783,8 +783,9 @@ mips_linux_nat_target::close ()
   linux_nat_trad_target::close ();
 }
 
+void _initialize_mips_linux_nat ();
 void
-_initialize_mips_linux_nat (void)
+_initialize_mips_linux_nat ()
 {
   add_setshow_boolean_cmd ("show-debug-regs", class_maintenance,
 			   &show_debug_regs, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-linux-tdep.c ./gdb/mips-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux on MIPS processors.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -633,16 +633,14 @@ mips_linux_in_dynsym_stub (CORE_ADDR pc)
   if (n64)
     {
       /* 'daddu t7,ra' or 'or t7, ra, zero'*/
-      if (insn != 0x03e0782d || insn != 0x03e07825)
+      if (insn != 0x03e0782d && insn != 0x03e07825)
 	return 0;
-
     }
   else
     {
       /* 'addu t7,ra'  or 'or t7, ra, zero'*/
-      if (insn != 0x03e07821 || insn != 0x03e07825)
+      if (insn != 0x03e07821 && insn != 0x03e07825)
 	return 0;
-
     }
 
   insn = extract_unsigned_integer (p + 8, 4, byte_order);
@@ -1642,8 +1640,9 @@ mips_linux_init_abi (struct gdbarch_info
     }
 }
 
+void _initialize_mips_linux_tdep ();
 void
-_initialize_mips_linux_tdep (void)
+_initialize_mips_linux_tdep ()
 {
   const struct bfd_arch_info *arch_info;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-linux-tdep.h ./gdb/mips-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-linux-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-linux-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux on MIPS processors.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-nbsd-nat.c ./gdb/mips-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-nbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-nbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for MIPS systems running NetBSD.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,6 +17,8 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+/* We define this to get types like register_t.  */
+#define _KERNTYPES
 #include "defs.h"
 #include "inferior.h"
 #include "regcache.h"
@@ -113,8 +115,9 @@ mips_nbsd_nat_target::store_registers (s
     }
 }
 
+void _initialize_mipsnbsd_nat ();
 void
-_initialize_mipsnbsd_nat (void)
+_initialize_mipsnbsd_nat ()
 {
   add_inf_child_target (&the_mips_nbsd_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-nbsd-tdep.c ./gdb/mips-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/mips.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Wasabi Systems, Inc.
 
@@ -354,6 +354,8 @@ static void
 mipsnbsd_init_abi (struct gdbarch_info info,
                    struct gdbarch *gdbarch)
 {
+  nbsd_init_abi (info, gdbarch);
+
   set_gdbarch_iterate_over_regset_sections
     (gdbarch, mipsnbsd_iterate_over_regset_sections);
 
@@ -371,8 +373,9 @@ mipsnbsd_init_abi (struct gdbarch_info i
 	       mipsnbsd_lp64_fetch_link_map_offsets));
 }
 
+void _initialize_mipsnbsd_tdep ();
 void
-_initialize_mipsnbsd_tdep (void)
+_initialize_mipsnbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_mips, 0, GDB_OSABI_NETBSD,
 			  mipsnbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-nbsd-tdep.h ./gdb/mips-nbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-nbsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-nbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code for GDB on MIPS systems running NetBSD.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mipsread.c ./gdb/mipsread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mipsread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mipsread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Read a symbol table in MIPS' format (Third-Eye).
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    Contributed by Alessandro Forin (af@cs.cmu.edu) at CMU.  Major work
    by Per Bothner, John Gilmore and Ian Lance Taylor at Cygnus Support.
@@ -43,7 +43,6 @@
 
 static void
 read_alphacoff_dynamic_symtab (minimal_symbol_reader &,
-			       struct section_offsets *,
 			       struct objfile *objfile);
 
 /* Initialize anything that needs initializing when a completely new
@@ -84,7 +83,7 @@ mipscoff_symfile_read (struct objfile *o
 
   /* Add alpha coff dynamic symbols.  */
 
-  read_alphacoff_dynamic_symtab (reader, objfile->section_offsets, objfile);
+  read_alphacoff_dynamic_symtab (reader, objfile);
 
   /* Install any minimal symbols that have been collected as the current
      minimal symbols for this objfile.  */
@@ -174,7 +173,6 @@ alphacoff_locate_sections (bfd *ignore_a
 
 static void
 read_alphacoff_dynamic_symtab (minimal_symbol_reader &reader,
-			       struct section_offsets *section_offsets,
 			       struct objfile *objfile)
 {
   bfd *abfd = objfile->obfd;
@@ -381,8 +379,9 @@ static const struct sym_fns ecoff_sym_fn
   &psym_functions
 };
 
+void _initialize_mipsread ();
 void
-_initialize_mipsread (void)
+_initialize_mipsread ()
 {
   add_symtab_fns (bfd_target_ecoff_flavour, &ecoff_sym_fns);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-sde-tdep.c ./gdb/mips-sde-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-sde-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-sde-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for SDE on MIPS processors.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -256,8 +256,9 @@ mips_sde_init_abi (struct gdbarch_info i
   frame_base_append_sniffer (gdbarch, mips_sde_frame_base_sniffer);
 }
 
+void _initialize_mips_sde_tdep ();
 void
-_initialize_mips_sde_tdep (void)
+_initialize_mips_sde_tdep ()
 {
   gdbarch_register_osabi_sniffer (bfd_arch_mips,
 				  bfd_target_elf_flavour,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-tdep.c ./gdb/mips-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the MIPS architecture, for GDB, the GNU Debugger.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    Contributed by Alessandro Forin(af@cs.cmu.edu) at CMU
    and by Per Bothner(bothner@cs.wisc.edu) at U.Wisconsin.
@@ -51,7 +51,7 @@
 #include "infcall.h"
 #include "remote.h"
 #include "target-descriptions.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "user-regs.h"
 #include "valprint.h"
 #include "ax.h"
@@ -687,7 +687,7 @@ mips_register_reggroup_p (struct gdbarch
   if (reggroup == all_reggroup)
     return pseudo;
   vector_p = TYPE_VECTOR (register_type (gdbarch, regnum));
-  float_p = TYPE_CODE (register_type (gdbarch, regnum)) == TYPE_CODE_FLT;
+  float_p = register_type (gdbarch, regnum)->code () == TYPE_CODE_FLT;
   /* FIXME: cagney/2003-04-13: Can't yet use gdbarch_num_regs
      (gdbarch), as not all architectures are multi-arch.  */
   raw_p = rawnum < gdbarch_num_regs (gdbarch);
@@ -889,7 +889,7 @@ mips_convert_register_float_case_p (stru
   return (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG
 	  && register_size (gdbarch, regnum) == 4
 	  && mips_float_register_p (gdbarch, regnum)
-	  && TYPE_CODE (type) == TYPE_CODE_FLT && TYPE_LENGTH (type) == 8);
+	  && type->code () == TYPE_CODE_FLT && TYPE_LENGTH (type) == 8);
 }
 
 /* This predicate tests for the case of a value of less than 8
@@ -4407,8 +4407,8 @@ fp_register_arg_p (struct gdbarch *gdbar
 	   || (MIPS_EABI (gdbarch)
 	       && (typecode == TYPE_CODE_STRUCT
 		   || typecode == TYPE_CODE_UNION)
-	       && TYPE_NFIELDS (arg_type) == 1
-	       && TYPE_CODE (check_typedef (TYPE_FIELD_TYPE (arg_type, 0))) 
+	       && arg_type->num_fields () == 1
+	       && check_typedef (arg_type->field (0).type ())->code ()
 	       == TYPE_CODE_FLT))
 	  && MIPS_FPU_TYPE(gdbarch) != MIPS_FPU_NONE);
 }
@@ -4419,23 +4419,23 @@ fp_register_arg_p (struct gdbarch *gdbar
 static int
 mips_type_needs_double_align (struct type *type)
 {
-  enum type_code typecode = TYPE_CODE (type);
+  enum type_code typecode = type->code ();
 
   if (typecode == TYPE_CODE_FLT && TYPE_LENGTH (type) == 8)
     return 1;
   else if (typecode == TYPE_CODE_STRUCT)
     {
-      if (TYPE_NFIELDS (type) < 1)
+      if (type->num_fields () < 1)
 	return 0;
-      return mips_type_needs_double_align (TYPE_FIELD_TYPE (type, 0));
+      return mips_type_needs_double_align (type->field (0).type ());
     }
   else if (typecode == TYPE_CODE_UNION)
     {
       int i, n;
 
-      n = TYPE_NFIELDS (type);
+      n = type->num_fields ();
       for (i = 0; i < n; i++)
-	if (mips_type_needs_double_align (TYPE_FIELD_TYPE (type, i)))
+	if (mips_type_needs_double_align (type->field (i).type ()))
 	  return 1;
       return 0;
     }
@@ -4562,7 +4562,7 @@ mips_eabi_push_dummy_call (struct gdbarc
       struct value *arg = args[argnum];
       struct type *arg_type = check_typedef (value_type (arg));
       int len = TYPE_LENGTH (arg_type);
-      enum type_code typecode = TYPE_CODE (arg_type);
+      enum type_code typecode = arg_type->code ();
 
       if (mips_debug)
 	fprintf_unfiltered (gdb_stdlog,
@@ -4782,17 +4782,17 @@ mips_eabi_return_value (struct gdbarch *
   /* Floating point type?  */
   if (tdep->mips_fpu_type != MIPS_FPU_NONE)
     {
-      if (TYPE_CODE (type) == TYPE_CODE_FLT)
+      if (type->code () == TYPE_CODE_FLT)
 	fp_return_type = 1;
       /* Structs with a single field of float type 
 	 are returned in a floating point register.  */
-      if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
-	   || TYPE_CODE (type) == TYPE_CODE_UNION)
-	  && TYPE_NFIELDS (type) == 1)
+      if ((type->code () == TYPE_CODE_STRUCT
+	   || type->code () == TYPE_CODE_UNION)
+	  && type->num_fields () == 1)
 	{
-	  struct type *fieldtype = TYPE_FIELD_TYPE (type, 0);
+	  struct type *fieldtype = type->field (0).type ();
 
-	  if (TYPE_CODE (check_typedef (fieldtype)) == TYPE_CODE_FLT)
+	  if (check_typedef (fieldtype)->code () == TYPE_CODE_FLT)
 	    fp_return_type = 1;
 	}
     }
@@ -4841,7 +4841,7 @@ mips_n32n64_fp_arg_chunk_p (struct gdbar
 {
   int i;
 
-  if (TYPE_CODE (arg_type) != TYPE_CODE_STRUCT)
+  if (arg_type->code () != TYPE_CODE_STRUCT)
     return 0;
 
   if (MIPS_FPU_TYPE (gdbarch) != MIPS_FPU_DOUBLE)
@@ -4850,13 +4850,13 @@ mips_n32n64_fp_arg_chunk_p (struct gdbar
   if (TYPE_LENGTH (arg_type) < offset + MIPS64_REGSIZE)
     return 0;
 
-  for (i = 0; i < TYPE_NFIELDS (arg_type); i++)
+  for (i = 0; i < arg_type->num_fields (); i++)
     {
       int pos;
       struct type *field_type;
 
       /* We're only looking at normal fields.  */
-      if (field_is_static (&TYPE_FIELD (arg_type, i))
+      if (field_is_static (&arg_type->field (i))
 	  || (TYPE_FIELD_BITPOS (arg_type, i) % 8) != 0)
 	continue;
 
@@ -4865,7 +4865,7 @@ mips_n32n64_fp_arg_chunk_p (struct gdbar
       if (pos > offset)
 	return 0;
 
-      field_type = check_typedef (TYPE_FIELD_TYPE (arg_type, i));
+      field_type = check_typedef (arg_type->field (i).type ());
 
       /* If this field is entirely before the requested offset, go
 	 on to the next one.  */
@@ -4873,7 +4873,7 @@ mips_n32n64_fp_arg_chunk_p (struct gdbar
 	continue;
 
       /* If this is our special aligned double, we can stop.  */
-      if (TYPE_CODE (field_type) == TYPE_CODE_FLT
+      if (field_type->code () == TYPE_CODE_FLT
 	  && TYPE_LENGTH (field_type) == MIPS64_REGSIZE)
 	return 1;
 
@@ -4952,7 +4952,7 @@ mips_n32n64_push_dummy_call (struct gdba
       struct value *arg = args[argnum];
       struct type *arg_type = check_typedef (value_type (arg));
       int len = TYPE_LENGTH (arg_type);
-      enum type_code typecode = TYPE_CODE (arg_type);
+      enum type_code typecode = arg_type->code ();
 
       if (mips_debug)
 	fprintf_unfiltered (gdb_stdlog,
@@ -5189,7 +5189,7 @@ mips_n32n64_return_value (struct gdbarch
 
   if (TYPE_LENGTH (type) > 2 * MIPS64_REGSIZE)
     return RETURN_VALUE_STRUCT_CONVENTION;
-  else if (TYPE_CODE (type) == TYPE_CODE_FLT
+  else if (type->code () == TYPE_CODE_FLT
 	   && TYPE_LENGTH (type) == 16
 	   && tdep->mips_fpu_type != MIPS_FPU_NONE)
     {
@@ -5211,7 +5211,7 @@ mips_n32n64_return_value (struct gdbarch
 			  writebuf ? writebuf + 8 : writebuf, 0);
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_FLT
+  else if (type->code () == TYPE_CODE_FLT
 	   && tdep->mips_fpu_type != MIPS_FPU_NONE)
     {
       /* A single or double floating-point value that fits in FP0.  */
@@ -5225,16 +5225,16 @@ mips_n32n64_return_value (struct gdbarch
 			  readbuf, writebuf, 0);
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	   && TYPE_NFIELDS (type) <= 2
-	   && TYPE_NFIELDS (type) >= 1
-	   && ((TYPE_NFIELDS (type) == 1
-		&& (TYPE_CODE (check_typedef (TYPE_FIELD_TYPE (type, 0)))
+  else if (type->code () == TYPE_CODE_STRUCT
+	   && type->num_fields () <= 2
+	   && type->num_fields () >= 1
+	   && ((type->num_fields () == 1
+		&& (check_typedef (type->field (0).type ())->code ()
 		    == TYPE_CODE_FLT))
-	       || (TYPE_NFIELDS (type) == 2
-		   && (TYPE_CODE (check_typedef (TYPE_FIELD_TYPE (type, 0)))
+	       || (type->num_fields () == 2
+		   && (check_typedef (type->field (0).type ())->code ()
 		       == TYPE_CODE_FLT)
-		   && (TYPE_CODE (check_typedef (TYPE_FIELD_TYPE (type, 1)))
+		   && (check_typedef (type->field (1).type ())->code ()
 		       == TYPE_CODE_FLT))))
     {
       /* A struct that contains one or two floats.  Each value is part
@@ -5245,14 +5245,14 @@ mips_n32n64_return_value (struct gdbarch
       for (field = 0, regnum = (tdep->mips_fpu_type != MIPS_FPU_NONE
 				? mips_regnum (gdbarch)->fp0
 				: MIPS_V0_REGNUM);
-	   field < TYPE_NFIELDS (type); field++, regnum += 2)
+	   field < type->num_fields (); field++, regnum += 2)
 	{
-	  int offset = (FIELD_BITPOS (TYPE_FIELDS (type)[field])
+	  int offset = (FIELD_BITPOS (type->field (field))
 			/ TARGET_CHAR_BIT);
 	  if (mips_debug)
 	    fprintf_unfiltered (gdb_stderr, "Return float struct+%d\n",
 				offset);
-	  if (TYPE_LENGTH (TYPE_FIELD_TYPE (type, field)) == 16)
+	  if (TYPE_LENGTH (type->field (field).type ()) == 16)
 	    {
 	      /* A 16-byte long double field goes in two consecutive
 		 registers.  */
@@ -5270,15 +5270,15 @@ mips_n32n64_return_value (struct gdbarch
 	  else
 	    mips_xfer_register (gdbarch, regcache,
 				gdbarch_num_regs (gdbarch) + regnum,
-				TYPE_LENGTH (TYPE_FIELD_TYPE (type, field)),
+				TYPE_LENGTH (type->field (field).type ()),
 				gdbarch_byte_order (gdbarch),
 				readbuf, writebuf, offset);
 	}
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	   || TYPE_CODE (type) == TYPE_CODE_UNION
-	   || TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  else if (type->code () == TYPE_CODE_STRUCT
+	   || type->code () == TYPE_CODE_UNION
+	   || type->code () == TYPE_CODE_ARRAY)
     {
       /* A composite type.  Extract the left justified value,
          regardless of the byte order.  I.e. DO NOT USE
@@ -5419,7 +5419,7 @@ mips_o32_push_dummy_call (struct gdbarch
       struct value *arg = args[argnum];
       struct type *arg_type = check_typedef (value_type (arg));
       int len = TYPE_LENGTH (arg_type);
-      enum type_code typecode = TYPE_CODE (arg_type);
+      enum type_code typecode = arg_type->code ();
 
       if (mips_debug)
 	fprintf_unfiltered (gdb_stdlog,
@@ -5663,11 +5663,11 @@ mips_o32_return_value (struct gdbarch *g
   enum mips_fval_reg fval_reg;
 
   fval_reg = readbuf ? mips16 ? mips_fval_gpr : mips_fval_fpr : mips_fval_both;
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION
-      || TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION
+      || type->code () == TYPE_CODE_ARRAY)
     return RETURN_VALUE_STRUCT_CONVENTION;
-  else if (TYPE_CODE (type) == TYPE_CODE_FLT
+  else if (type->code () == TYPE_CODE_FLT
 	   && TYPE_LENGTH (type) == 4 && tdep->mips_fpu_type != MIPS_FPU_NONE)
     {
       /* A single-precision floating-point value.  If reading in or copying,
@@ -5704,7 +5704,7 @@ mips_o32_return_value (struct gdbarch *g
 			    readbuf, writebuf, 0);
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_FLT
+  else if (type->code () == TYPE_CODE_FLT
 	   && TYPE_LENGTH (type) == 8 && tdep->mips_fpu_type != MIPS_FPU_NONE)
     {
       /* A double-precision floating-point value.  If reading in or copying,
@@ -5778,16 +5778,16 @@ mips_o32_return_value (struct gdbarch *g
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
 #if 0
-  else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	   && TYPE_NFIELDS (type) <= 2
-	   && TYPE_NFIELDS (type) >= 1
-	   && ((TYPE_NFIELDS (type) == 1
-		&& (TYPE_CODE (TYPE_FIELD_TYPE (type, 0))
+  else if (type->code () == TYPE_CODE_STRUCT
+	   && type->num_fields () <= 2
+	   && type->num_fields () >= 1
+	   && ((type->num_fields () == 1
+		&& (TYPE_CODE (type->field (0).type ())
 		    == TYPE_CODE_FLT))
-	       || (TYPE_NFIELDS (type) == 2
-		   && (TYPE_CODE (TYPE_FIELD_TYPE (type, 0))
+	       || (type->num_fields () == 2
+		   && (TYPE_CODE (type->field (0).type ())
 		       == TYPE_CODE_FLT)
-		   && (TYPE_CODE (TYPE_FIELD_TYPE (type, 1))
+		   && (TYPE_CODE (type->field (1).type ())
 		       == TYPE_CODE_FLT)))
 	   && tdep->mips_fpu_type != MIPS_FPU_NONE)
     {
@@ -5797,16 +5797,16 @@ mips_o32_return_value (struct gdbarch *g
       int regnum;
       int field;
       for (field = 0, regnum = mips_regnum (gdbarch)->fp0;
-	   field < TYPE_NFIELDS (type); field++, regnum += 2)
+	   field < type->num_fields (); field++, regnum += 2)
 	{
-	  int offset = (FIELD_BITPOS (TYPE_FIELDS (type)[field])
+	  int offset = (FIELD_BITPOS (type->fields ()[field])
 			/ TARGET_CHAR_BIT);
 	  if (mips_debug)
 	    fprintf_unfiltered (gdb_stderr, "Return float struct+%d\n",
 				offset);
 	  mips_xfer_register (gdbarch, regcache,
 			      gdbarch_num_regs (gdbarch) + regnum,
-			      TYPE_LENGTH (TYPE_FIELD_TYPE (type, field)),
+			      TYPE_LENGTH (type->field (field).type ()),
 			      gdbarch_byte_order (gdbarch),
 			      readbuf, writebuf, offset);
 	}
@@ -5814,8 +5814,8 @@ mips_o32_return_value (struct gdbarch *g
     }
 #endif
 #if 0
-  else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	   || TYPE_CODE (type) == TYPE_CODE_UNION)
+  else if (type->code () == TYPE_CODE_STRUCT
+	   || type->code () == TYPE_CODE_UNION)
     {
       /* A structure or union.  Extract the left justified value,
          regardless of the byte order.  I.e. DO NOT USE
@@ -5941,7 +5941,7 @@ mips_o64_push_dummy_call (struct gdbarch
       struct value *arg = args[argnum];
       struct type *arg_type = check_typedef (value_type (arg));
       int len = TYPE_LENGTH (arg_type);
-      enum type_code typecode = TYPE_CODE (arg_type);
+      enum type_code typecode = arg_type->code ();
 
       if (mips_debug)
 	fprintf_unfiltered (gdb_stdlog,
@@ -6109,11 +6109,11 @@ mips_o64_return_value (struct gdbarch *g
   enum mips_fval_reg fval_reg;
 
   fval_reg = readbuf ? mips16 ? mips_fval_gpr : mips_fval_fpr : mips_fval_both;
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION
-      || TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION
+      || type->code () == TYPE_CODE_ARRAY)
     return RETURN_VALUE_STRUCT_CONVENTION;
-  else if (fp_register_arg_p (gdbarch, TYPE_CODE (type), type))
+  else if (fp_register_arg_p (gdbarch, type->code (), type))
     {
       /* A floating-point value.  If reading in or copying, then we get it
          from/put it to FP0 for standard MIPS code or GPR2 for MIPS16 code.
@@ -6373,10 +6373,7 @@ mips_print_register (struct ui_file *fil
     fprintf_filtered (file, ": ");
 
   get_formatted_print_options (&opts, 'x');
-  val_print_scalar_formatted (value_type (val),
-			      value_embedded_offset (val),
-			      val,
-			      &opts, 0, file);
+  value_print_scalar_formatted (val, &opts, 0, file);
 }
 
 /* Print IEEE exception condition bits in FLAGS.  */
@@ -6880,23 +6877,6 @@ mips_stack_frame_destroyed_p (struct gdb
     return mips32_stack_frame_destroyed_p (gdbarch, pc);
 }
 
-/* Root of all "set mips "/"show mips " commands.  This will eventually be
-   used for all MIPS-specific commands.  */
-
-static void
-show_mips_command (const char *args, int from_tty)
-{
-  help_list (showmipscmdlist, "show mips ", all_commands, gdb_stdout);
-}
-
-static void
-set_mips_command (const char *args, int from_tty)
-{
-  printf_unfiltered
-    ("\"set mips\" must be followed by an appropriate subcommand.\n");
-  help_list (setmipscmdlist, "set mips ", all_commands, gdb_stdout);
-}
-
 /* Commands to show/set the MIPS FPU type.  */
 
 static void
@@ -6937,14 +6917,6 @@ show_mipsfpu_command (const char *args,
 
 
 static void
-set_mipsfpu_command (const char *args, int from_tty)
-{
-  printf_unfiltered ("\"set mipsfpu\" must be followed by \"double\", "
-		     "\"single\",\"none\" or \"auto\".\n");
-  show_mipsfpu_command (args, from_tty);
-}
-
-static void
 set_mipsfpu_single_command (const char *args, int from_tty)
 {
   struct gdbarch_info info;
@@ -8971,8 +8943,9 @@ mips_dump_tdep (struct gdbarch *gdbarch,
 		      mips_fpu_type_str (MIPS_FPU_TYPE (gdbarch)));
 }
 
+void _initialize_mips_tdep ();
 void
-_initialize_mips_tdep (void)
+_initialize_mips_tdep ()
 {
   static struct cmd_list_element *mipsfpulist = NULL;
 
@@ -8992,13 +8965,13 @@ _initialize_mips_tdep (void)
   set_tdesc_property (mips_tdesc_gp64, PROPERTY_GP64, "");
 
   /* Add root prefix command for all "set mips"/"show mips" commands.  */
-  add_prefix_cmd ("mips", no_class, set_mips_command,
-		  _("Various MIPS specific commands."),
-		  &setmipscmdlist, "set mips ", 0, &setlist);
-
-  add_prefix_cmd ("mips", no_class, show_mips_command,
-		  _("Various MIPS specific commands."),
-		  &showmipscmdlist, "show mips ", 0, &showlist);
+  add_basic_prefix_cmd ("mips", no_class,
+			_("Various MIPS specific commands."),
+			&setmipscmdlist, "set mips ", 0, &setlist);
+
+  add_show_prefix_cmd ("mips", no_class,
+		       _("Various MIPS specific commands."),
+		       &showmipscmdlist, "show mips ", 0, &showlist);
 
   /* Allow the user to override the ABI.  */
   add_setshow_enum_cmd ("abi", class_obscure, mips_abi_strings,
@@ -9037,9 +9010,9 @@ and is updated automatically from ELF fi
   /* Let the user turn off floating point and set the fence post for
      heuristic_proc_start.  */
 
-  add_prefix_cmd ("mipsfpu", class_support, set_mipsfpu_command,
-		  _("Set use of MIPS floating-point coprocessor."),
-		  &mipsfpulist, "set mipsfpu ", 0, &setlist);
+  add_basic_prefix_cmd ("mipsfpu", class_support,
+			_("Set use of MIPS floating-point coprocessor."),
+			&mipsfpulist, "set mipsfpu ", 0, &setlist);
   add_cmd ("single", class_support, set_mipsfpu_single_command,
 	   _("Select single-precision MIPS floating-point coprocessor."),
 	   &mipsfpulist);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-tdep.h ./gdb/mips-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mips-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mips-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent header for the MIPS architecture, for GDB, the GNU Debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -162,15 +162,15 @@ extern CORE_ADDR mips_unmake_compact_add
 
 /* Tell if the program counter value in MEMADDR is in a standard
    MIPS function.  */
-extern int mips_pc_is_mips (bfd_vma memaddr);
+extern int mips_pc_is_mips (CORE_ADDR memaddr);
 
 /* Tell if the program counter value in MEMADDR is in a MIPS16
    function.  */
-extern int mips_pc_is_mips16 (struct gdbarch *gdbarch, bfd_vma memaddr);
+extern int mips_pc_is_mips16 (struct gdbarch *gdbarch, CORE_ADDR memaddr);
 
 /* Tell if the program counter value in MEMADDR is in a microMIPS
    function.  */
-extern int mips_pc_is_micromips (struct gdbarch *gdbarch, bfd_vma memaddr);
+extern int mips_pc_is_micromips (struct gdbarch *gdbarch, CORE_ADDR memaddr);
 
 /* Return the currently configured (or set) saved register size.  */
 extern unsigned int mips_abi_regsize (struct gdbarch *gdbarch);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mn10300-linux-tdep.c ./gdb/mn10300-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mn10300-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mn10300-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Matsushita MN10300 for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -715,8 +715,9 @@ am33_linux_init_osabi (struct gdbarch_in
   tramp_frame_prepend_unwinder (gdbarch, &am33_linux_rt_sigframe);
 }
 
+void _initialize_mn10300_linux_tdep ();
 void
-_initialize_mn10300_linux_tdep (void)
+_initialize_mn10300_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_mn10300, 0,
 			  GDB_OSABI_LINUX, am33_linux_init_osabi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mn10300-tdep.c ./gdb/mn10300-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mn10300-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mn10300-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Matsushita MN10300 for GDB, the GNU debugger.
 
-   Copyright (C) 1996-2020 Free Software Foundation, Inc.
+   Copyright (C) 1996-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -28,7 +28,7 @@
 #include "frame-unwind.h"
 #include "frame-base.h"
 #include "symtab.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "osabi.h"
 #include "infcall.h"
 #include "prologue-value.h"
@@ -88,7 +88,7 @@ mn10300_type_align (struct type *type)
 {
   int i, align = 1;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_INT:
     case TYPE_CODE_ENUM:
@@ -107,9 +107,9 @@ mn10300_type_align (struct type *type)
 
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
-      for (i = 0; i < TYPE_NFIELDS (type); i++)
+      for (i = 0; i < type->num_fields (); i++)
 	{
-	  int falign = mn10300_type_align (TYPE_FIELD_TYPE (type, i));
+	  int falign = mn10300_type_align (type->field (i).type ());
 	  while (align < falign)
 	    align <<= 1;
 	}
@@ -137,14 +137,14 @@ mn10300_use_struct_convention (struct ty
   if (TYPE_LENGTH (type) > 8)
     return 1;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
       /* Structures with a single field are handled as the field
 	 itself.  */
-      if (TYPE_NFIELDS (type) == 1)
-	return mn10300_use_struct_convention (TYPE_FIELD_TYPE (type, 0));
+      if (type->num_fields () == 1)
+	return mn10300_use_struct_convention (type->field (0).type ());
 
       /* Structures with word or double-word size are passed in memory, as
 	 long as they require at least word alignment.  */
@@ -174,7 +174,7 @@ mn10300_store_return_value (struct gdbar
   int len = TYPE_LENGTH (type);
   int reg, regsz;
   
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  if (type->code () == TYPE_CODE_PTR)
     reg = 4;
   else
     reg = 0;
@@ -202,7 +202,7 @@ mn10300_extract_return_value (struct gdb
   int len = TYPE_LENGTH (type);
   int reg, regsz;
 
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  if (type->code () == TYPE_CODE_PTR)
     reg = 4;
   else
     reg = 0;
@@ -1208,7 +1208,7 @@ mn10300_push_dummy_call (struct gdbarch
   for (argnum = 0; argnum < nargs; argnum++)
     {
       /* FIXME what about structs?  Unions?  */
-      if (TYPE_CODE (value_type (*args)) == TYPE_CODE_STRUCT
+      if (value_type (*args)->code () == TYPE_CODE_STRUCT
 	  && TYPE_LENGTH (value_type (*args)) > 8)
 	{
 	  /* Change to pointer-to-type.  */
@@ -1417,8 +1417,9 @@ mn10300_dump_tdep (struct gdbarch *gdbar
 		      tdep->am33_mode);
 }
 
+void _initialize_mn10300_tdep ();
 void
-_initialize_mn10300_tdep (void)
+_initialize_mn10300_tdep ()
 {
   gdbarch_register (bfd_arch_mn10300, mn10300_gdbarch_init, mn10300_dump_tdep);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mn10300-tdep.h ./gdb/mn10300-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/mn10300-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/mn10300-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent interface for Matsushita MN10300 for GDB, the GNU debugger.
 
-   Copyright (C) 1996-2020 Free Software Foundation, Inc.
+   Copyright (C) 1996-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/moxie-tdep.c ./gdb/moxie-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/moxie-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/moxie-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Moxie.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -232,7 +232,7 @@ moxie_skip_prologue (struct gdbarch *gdb
 	  sym = lookup_symbol (func_name, NULL, VAR_DOMAIN, NULL).symbol;
 	  /* Don't use line number debug info for assembly source
 	     files.  */
-	  if (sym && SYMBOL_LANGUAGE (sym) != language_asm)
+	  if (sym && sym->language () != language_asm)
 	    {
 	      sal = find_pc_line (func_addr, 0);
 	      if (sal.end && sal.end < func_end)
@@ -1103,8 +1103,9 @@ moxie_gdbarch_init (struct gdbarch_info
 
 /* Register this machine's init routine.  */
 
+void _initialize_moxie_tdep ();
 void
-_initialize_moxie_tdep (void)
+_initialize_moxie_tdep ()
 {
   register_gdbarch_init (bfd_arch_moxie, moxie_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/moxie-tdep.h ./gdb/moxie-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/moxie-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/moxie-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Moxie
  
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/msp430-tdep.c ./gdb/msp430-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/msp430-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/msp430-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Target-dependent code for the Texas Instruments MSP430 for GDB, the
    GNU debugger.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat, Inc.
 
@@ -32,7 +32,7 @@
 #include "frame-base.h"
 #include "value.h"
 #include "gdbcore.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "reggroups.h"
 
 #include "elf/msp430.h"
@@ -570,8 +570,8 @@ msp430_return_value (struct gdbarch *gdb
   int code_model = gdbarch_tdep (gdbarch)->code_model;
 
   if (TYPE_LENGTH (valtype) > 8
-      || TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-      || TYPE_CODE (valtype) == TYPE_CODE_UNION)
+      || valtype->code () == TYPE_CODE_STRUCT
+      || valtype->code () == TYPE_CODE_UNION)
     return RETURN_VALUE_STRUCT_CONVENTION;
 
   if (readbuf)
@@ -585,7 +585,7 @@ msp430_return_value (struct gdbarch *gdb
 	  int size = 2;
 
 	  if (code_model == MSP_LARGE_CODE_MODEL
-	      && TYPE_CODE (valtype) == TYPE_CODE_PTR)
+	      && valtype->code () == TYPE_CODE_PTR)
 	    {
 	      size = 4;
 	    }
@@ -609,7 +609,7 @@ msp430_return_value (struct gdbarch *gdb
 	  int size = 2;
 
 	  if (code_model == MSP_LARGE_CODE_MODEL
-	      && TYPE_CODE (valtype) == TYPE_CODE_PTR)
+	      && valtype->code () == TYPE_CODE_PTR)
 	    {
 	      size = 4;
 	    }
@@ -652,12 +652,12 @@ msp430_push_dummy_call (struct gdbarch *
   struct type *func_type = value_type (function);
 
   /* Dereference function pointer types.  */
-  while (TYPE_CODE (func_type) == TYPE_CODE_PTR)
+  while (func_type->code () == TYPE_CODE_PTR)
     func_type = TYPE_TARGET_TYPE (func_type);
 
   /* The end result had better be a function or a method.  */
-  gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC
-	      || TYPE_CODE (func_type) == TYPE_CODE_METHOD);
+  gdb_assert (func_type->code () == TYPE_CODE_FUNC
+	      || func_type->code () == TYPE_CODE_METHOD);
 
   /* We make two passes; the first does the stack allocation,
      the second actually stores the arguments.  */
@@ -691,8 +691,8 @@ msp430_push_dummy_call (struct gdbarch *
 
 	  current_arg_on_stack = 0;
 
-	  if (TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (arg_type) == TYPE_CODE_UNION)
+	  if (arg_type->code () == TYPE_CODE_STRUCT
+	      || arg_type->code () == TYPE_CODE_UNION)
 	    {
 	      /* Aggregates of any size are passed by reference.  */
 	      store_unsigned_integer (struct_addr_buf, 4, byte_order,
@@ -723,10 +723,10 @@ msp430_push_dummy_call (struct gdbarch *
 		  int size = 2;
 
 		  if (code_model == MSP_LARGE_CODE_MODEL
-		      && (TYPE_CODE (arg_type) == TYPE_CODE_PTR
+		      && (arg_type->code () == TYPE_CODE_PTR
 		          || TYPE_IS_REFERENCE (arg_type)
-			  || TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
-			  || TYPE_CODE (arg_type) == TYPE_CODE_UNION))
+			  || arg_type->code () == TYPE_CODE_STRUCT
+			  || arg_type->code () == TYPE_CODE_UNION))
 		    {
 		      /* When using the large memory model, pointer,
 			 reference, struct, and union arguments are
@@ -986,8 +986,9 @@ msp430_gdbarch_init (struct gdbarch_info
 
 /* Register the initialization routine.  */
 
+void _initialize_msp430_tdep ();
 void
-_initialize_msp430_tdep (void)
+_initialize_msp430_tdep ()
 {
   register_gdbarch_init (bfd_arch_msp430, msp430_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/namespace.c ./gdb/namespace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/namespace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/namespace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Code dealing with "using" directives for GDB.
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/namespace.h ./gdb/namespace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/namespace.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/namespace.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Code dealing with "using" directives for GDB.
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-linux.c ./gdb/nat/aarch64-linux.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-linux.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/aarch64-linux.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-linux.h ./gdb/nat/aarch64-linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-linux.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/aarch64-linux.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-linux-hw-point.c ./gdb/nat/aarch64-linux-hw-point.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-linux-hw-point.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/aarch64-linux-hw-point.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -23,8 +23,8 @@
 #include "aarch64-linux-hw-point.h"
 
 #include <sys/uio.h>
-#include <asm/ptrace.h>
 #include <sys/ptrace.h>
+#include <asm/ptrace.h>
 #include <elf.h>
 
 /* Number of hardware breakpoints/watchpoints the target supports.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-linux-hw-point.h ./gdb/nat/aarch64-linux-hw-point.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-linux-hw-point.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/aarch64-linux-hw-point.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-sve-linux-ptrace.c ./gdb/nat/aarch64-sve-linux-ptrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-sve-linux-ptrace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/aarch64-sve-linux-ptrace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent for AArch64 systems.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -92,11 +92,26 @@ aarch64_sve_set_vq (int tid, uint64_t vq
 bool
 aarch64_sve_set_vq (int tid, struct reg_buffer_common *reg_buf)
 {
+  uint64_t reg_vg = 0;
+
+  /* The VG register may not be valid if we've not collected any value yet.
+     This can happen, for example,  if we're restoring the regcache after an
+     inferior function call, and the VG register comes after the Z
+     registers.  */
   if (reg_buf->get_register_status (AARCH64_SVE_VG_REGNUM) != REG_VALID)
-    return false;
+  {
+    /* If vg is not available yet, fetch it from ptrace.  The VG value from
+       ptrace is likely the correct one.  */
+    uint64_t vq = aarch64_sve_get_vq (tid);
 
-  uint64_t reg_vg = 0;
-  reg_buf->raw_collect (AARCH64_SVE_VG_REGNUM, &reg_vg);
+    /* If something went wrong, just bail out.  */
+    if (vq == 0)
+      return false;
+
+    reg_vg = sve_vg_from_vq (vq);
+  }
+  else
+    reg_buf->raw_collect (AARCH64_SVE_VG_REGNUM, &reg_vg);
 
   return aarch64_sve_set_vq (tid, sve_vq_from_vg (reg_vg));
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-sve-linux-ptrace.h ./gdb/nat/aarch64-sve-linux-ptrace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-sve-linux-ptrace.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/aarch64-sve-linux-ptrace.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent for AArch64 systems.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-sve-linux-sigcontext.h ./gdb/nat/aarch64-sve-linux-sigcontext.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/aarch64-sve-linux-sigcontext.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/aarch64-sve-linux-sigcontext.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2018-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2018-2021 Free Software Foundation, Inc.
    Contributed by Arm Ltd.
 
    This file is part of GDB.
@@ -166,7 +166,7 @@ struct user_sve_header {
 
 /* Offset from the start of struct user_sve_header to the register data */
 #define SVE_PT_REGS_OFFSET					\
-	((sizeof(struct sve_context) + (SVE_VQ_BYTES - 1))	\
+	((sizeof(struct user_sve_header) + (SVE_VQ_BYTES - 1))	\
 		/ SVE_VQ_BYTES * SVE_VQ_BYTES)
 
 /*
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/amd64-linux-siginfo.c ./gdb/nat/amd64-linux-siginfo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/amd64-linux-siginfo.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/amd64-linux-siginfo.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low-level siginfo manipulation for amd64.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,8 +17,8 @@
    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 <signal.h>
 #include "gdbsupport/common-defs.h"
+#include <signal.h>
 #include "amd64-linux-siginfo.h"
 
 #define GDB_SI_SIZE 128
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/amd64-linux-siginfo.h ./gdb/nat/amd64-linux-siginfo.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/amd64-linux-siginfo.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/amd64-linux-siginfo.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low-level siginfo manipulation for amd64.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/fork-inferior.c ./gdb/nat/fork-inferior.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/fork-inferior.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/fork-inferior.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Fork a Unix child process, and set up to debug it, for GDB and GDBserver.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -267,7 +267,8 @@ execv_argv::init_for_shell (const char *
 pid_t
 fork_inferior (const char *exec_file_arg, const std::string &allargs,
 	       char **env, void (*traceme_fun) (),
-	       void (*init_trace_fun) (int), void (*pre_trace_fun) (),
+	       gdb::function_view<void (int)> init_trace_fun,
+	       void (*pre_trace_fun) (),
 	       const char *shell_file_arg,
                void (*exec_fun)(const char *file, char * const *argv,
                                 char * const *env))
@@ -439,7 +440,7 @@ fork_inferior (const char *exec_file_arg
      initialize anything target-vector-specific that needs
      initializing.  */
   if (init_trace_fun)
-    (*init_trace_fun) (pid);
+    init_trace_fun (pid);
 
   /* We are now in the child process of interest, having exec'd the
      correct program, and are poised at the first instruction of the
@@ -450,7 +451,7 @@ fork_inferior (const char *exec_file_arg
 /* See nat/fork-inferior.h.  */
 
 ptid_t
-startup_inferior (pid_t pid, int ntraps,
+startup_inferior (process_stratum_target *proc_target, pid_t pid, int ntraps,
 		  struct target_waitstatus *last_waitstatus,
 		  ptid_t *last_ptid)
 {
@@ -502,7 +503,7 @@ startup_inferior (pid_t pid, int ntraps,
 	  case TARGET_WAITKIND_SYSCALL_ENTRY:
 	  case TARGET_WAITKIND_SYSCALL_RETURN:
 	    /* Ignore gracefully during startup of the inferior.  */
-	    switch_to_thread (event_ptid);
+	    switch_to_thread (proc_target, event_ptid);
 	    break;
 
 	  case TARGET_WAITKIND_SIGNALLED:
@@ -525,14 +526,17 @@ startup_inferior (pid_t pid, int ntraps,
 
 	  case TARGET_WAITKIND_EXECD:
 	    /* Handle EXEC signals as if they were SIGTRAP signals.  */
-	    xfree (ws.value.execd_pathname);
+	    /* Free the exec'ed pathname, but only if this isn't the
+	       waitstatus we are returning to the caller.  */
+	    if (pending_execs != 1)
+	      xfree (ws.value.execd_pathname);
 	    resume_signal = GDB_SIGNAL_TRAP;
-	    switch_to_thread (event_ptid);
+	    switch_to_thread (proc_target, event_ptid);
 	    break;
 
 	  case TARGET_WAITKIND_STOPPED:
 	    resume_signal = ws.value.sig;
-	    switch_to_thread (event_ptid);
+	    switch_to_thread (proc_target, event_ptid);
 	    break;
 	}
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/fork-inferior.h ./gdb/nat/fork-inferior.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/fork-inferior.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/fork-inferior.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Functions and data responsible for forking the inferior process.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,6 +21,9 @@
 #define NAT_FORK_INFERIOR_H
 
 #include <string>
+#include "gdbsupport/function-view.h"
+
+struct process_stratum_target;
 
 /* Number of traps that happen between exec'ing the shell to run an
    inferior and when we finally get to the inferior code, not counting
@@ -40,7 +43,7 @@
 extern pid_t fork_inferior (const char *exec_file_arg,
 			    const std::string &allargs,
 			    char **env, void (*traceme_fun) (),
-			    void (*init_trace_fun) (int),
+			    gdb::function_view<void (int)> init_trace_fun,
 			    void (*pre_trace_fun) (),
 			    const char *shell_file_arg,
 			    void (*exec_fun) (const char *file,
@@ -50,7 +53,8 @@ extern pid_t fork_inferior (const char *
 /* Accept NTRAPS traps from the inferior.
 
    Return the ptid of the inferior being started.  */
-extern ptid_t startup_inferior (pid_t pid, int ntraps,
+extern ptid_t startup_inferior (process_stratum_target *proc_target,
+				pid_t pid, int ntraps,
 				struct target_waitstatus *mystatus,
 				ptid_t *myptid);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/gdb_ptrace.h ./gdb/nat/gdb_ptrace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/gdb_ptrace.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/gdb_ptrace.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Portable <sys/ptrace.h>
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -121,14 +121,6 @@
 # endif
 #endif
 
-/* Some systems, in particular DEC OSF/1, Digital Unix, Compaq Tru64
-   or whatever it's called these days, don't provide a prototype for
-   ptrace.  Provide one to silence compiler warnings.  */
-
-#ifndef HAVE_DECL_PTRACE
-extern PTRACE_TYPE_RET ptrace();
-#endif
-
 /* Some systems, at least AIX and HP-UX have a ptrace with five
    arguments.  Since we never use the fifth argument, define a ptrace
    macro that calls the real ptrace with the last argument set to
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/gdb_thread_db.h ./gdb/nat/gdb_thread_db.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/gdb_thread_db.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/gdb_thread_db.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-btrace.c ./gdb/nat/linux-btrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-btrace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-btrace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Linux-dependent part of branch trace support for GDB, and GDBserver.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
@@ -90,6 +90,9 @@ btrace_this_cpu (void)
 		cpu.model += (cpuid >> 12) & 0xf0;
 	    }
 	}
+      else if (ebx == signature_AMD_ebx && ecx == signature_AMD_ecx
+	       && edx == signature_AMD_edx)
+	cpu.vendor = CV_AMD;
     }
 
   return cpu;
@@ -406,6 +409,9 @@ cpu_supports_bts (void)
 
     case CV_INTEL:
       return intel_supports_bts (&cpu);
+
+    case CV_AMD:
+      return 0;
     }
 }
 
@@ -889,7 +895,7 @@ linux_read_pt (struct btrace_data_pt *bt
       return BTRACE_ERR_NONE;
     }
 
-  internal_error (__FILE__, __LINE__, _("Unkown btrace read type."));
+  internal_error (__FILE__, __LINE__, _("Unknown btrace read type."));
 }
 
 /* See linux-btrace.h.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-btrace.h ./gdb/nat/linux-btrace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-btrace.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-btrace.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Linux-dependent part of branch trace support for GDB, and GDBserver.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-namespaces.c ./gdb/nat/linux-namespaces.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-namespaces.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-namespaces.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Linux namespaces(7) support.
 
-   Copyright (C) 2015-2020 Free Software Foundation, Inc.
+   Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-namespaces.h ./gdb/nat/linux-namespaces.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-namespaces.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-namespaces.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Linux namespaces(7) support.
 
-   Copyright (C) 2015-2020 Free Software Foundation, Inc.
+   Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-nat.h ./gdb/nat/linux-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code for native debugging support for GNU/Linux (LWP layer).
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-osdata.c ./gdb/nat/linux-osdata.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-osdata.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-osdata.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Linux-specific functions to retrieve OS data.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-osdata.h ./gdb/nat/linux-osdata.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-osdata.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-osdata.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Linux-specific functions to retrieve OS data.
    
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-personality.c ./gdb/nat/linux-personality.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-personality.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-personality.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Disable address space randomization based on inferior personality.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-personality.h ./gdb/nat/linux-personality.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-personality.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-personality.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Disable address space randomization based on inferior personality.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-procfs.c ./gdb/nat/linux-procfs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-procfs.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-procfs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Linux-specific PROCFS manipulation routines.
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-procfs.h ./gdb/nat/linux-procfs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-procfs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-procfs.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Linux-specific PROCFS manipulation routines.
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-ptrace.c ./gdb/nat/linux-ptrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-ptrace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-ptrace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Linux-specific ptrace manipulation routines.
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-ptrace.h ./gdb/nat/linux-ptrace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-ptrace.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-ptrace.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-waitpid.c ./gdb/nat/linux-waitpid.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-waitpid.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-waitpid.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Wrapper implementation for waitpid for GNU/Linux (LWP layer).
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-waitpid.h ./gdb/nat/linux-waitpid.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/linux-waitpid.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/linux-waitpid.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Wrapper for waitpid for GNU/Linux (LWP layer).
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/mips-linux-watch.c ./gdb/nat/mips-linux-watch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/mips-linux-watch.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/mips-linux-watch.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/mips-linux-watch.h ./gdb/nat/mips-linux-watch.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/mips-linux-watch.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/mips-linux-watch.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/netbsd-nat.c ./gdb/nat/netbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/netbsd-nat.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/nat/netbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,213 @@
+/* Internal interfaces for the NetBSD code.
+
+   Copyright (C) 2006-2021 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 "gdbsupport/common-defs.h"
+#include "nat/netbsd-nat.h"
+#include "gdbsupport/common-debug.h"
+
+#include <sys/types.h>
+#include <sys/ptrace.h>
+#include <sys/sysctl.h>
+
+#include <cstring>
+
+#include "gdbsupport/function-view.h"
+
+namespace netbsd_nat
+{
+
+/* See netbsd-nat.h.  */
+
+const char *
+pid_to_exec_file (pid_t pid)
+{
+  static char buf[PATH_MAX];
+  int mib[4] = {CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_PATHNAME};
+  size_t buflen = sizeof (buf);
+  if (::sysctl (mib, ARRAY_SIZE (mib), buf, &buflen, NULL, 0) != 0)
+    return NULL;
+  return buf;
+}
+
+/* Generic thread (LWP) lister within a specified PID.  The CALLBACK
+   parameters is a C++ function that is called for each detected thread.
+   When the CALLBACK function returns true, the iteration is interrupted.
+
+   This function assumes internally that the queried process is stopped
+   and the number of threads does not change between two sysctl () calls.  */
+
+static bool
+netbsd_thread_lister (const pid_t pid,
+		      gdb::function_view<bool (const struct kinfo_lwp *)>
+		      callback)
+{
+  int mib[5] = {CTL_KERN, KERN_LWP, pid, sizeof (struct kinfo_lwp), 0};
+  size_t size;
+
+  if (sysctl (mib, ARRAY_SIZE (mib), NULL, &size, NULL, 0) == -1 || size == 0)
+    perror_with_name (("sysctl"));
+
+  mib[4] = size / sizeof (size_t);
+
+  gdb::unique_xmalloc_ptr<struct kinfo_lwp[]> kl
+    ((struct kinfo_lwp *) xcalloc (size, 1));
+
+  if (sysctl (mib, ARRAY_SIZE (mib), kl.get (), &size, NULL, 0) == -1
+      || size == 0)
+    perror_with_name (("sysctl"));
+
+  for (size_t i = 0; i < size / sizeof (struct kinfo_lwp); i++)
+    {
+      struct kinfo_lwp *l = &kl[i];
+
+      /* Return true if the specified thread is alive.  */
+      auto lwp_alive
+	= [] (struct kinfo_lwp *lwp)
+	  {
+	    switch (lwp->l_stat)
+	      {
+	      case LSSLEEP:
+	      case LSRUN:
+	      case LSONPROC:
+	      case LSSTOP:
+	      case LSSUSPENDED:
+		return true;
+	      default:
+		return false;
+	      }
+	  };
+
+      /* Ignore embryonic or demised threads.  */
+      if (!lwp_alive (l))
+	continue;
+
+      if (callback (l))
+	return true;
+    }
+
+  return false;
+}
+
+/* See netbsd-nat.h.  */
+
+bool
+thread_alive (ptid_t ptid)
+{
+  pid_t pid = ptid.pid ();
+  lwpid_t lwp = ptid.lwp ();
+
+  auto fn
+    = [=] (const struct kinfo_lwp *kl)
+      {
+        return kl->l_lid == lwp;
+      };
+
+  return netbsd_thread_lister (pid, fn);
+}
+
+/* See netbsd-nat.h.  */
+
+const char *
+thread_name (ptid_t ptid)
+{
+  pid_t pid = ptid.pid ();
+  lwpid_t lwp = ptid.lwp ();
+
+  static char buf[KI_LNAMELEN] = {};
+
+  auto fn
+    = [=] (const struct kinfo_lwp *kl)
+      {
+	if (kl->l_lid == lwp)
+	  {
+	    xsnprintf (buf, sizeof buf, "%s", kl->l_name);
+	    return true;
+	  }
+	return false;
+      };
+
+  if (netbsd_thread_lister (pid, fn))
+    return buf;
+  else
+    return NULL;
+}
+
+/* See netbsd-nat.h.  */
+
+void
+for_each_thread (pid_t pid, gdb::function_view<void (ptid_t)> callback)
+{
+  auto fn
+    = [=, &callback] (const struct kinfo_lwp *kl)
+      {
+	ptid_t ptid = ptid_t (pid, kl->l_lid, 0);
+	callback (ptid);
+	return false;
+      };
+
+  netbsd_thread_lister (pid, fn);
+}
+
+/* See netbsd-nat.h.  */
+
+void
+enable_proc_events (pid_t pid)
+{
+  int events;
+
+  if (ptrace (PT_GET_EVENT_MASK, pid, &events, sizeof (events)) == -1)
+    perror_with_name (("ptrace"));
+
+  events |= PTRACE_LWP_CREATE;
+  events |= PTRACE_LWP_EXIT;
+
+  if (ptrace (PT_SET_EVENT_MASK, pid, &events, sizeof (events)) == -1)
+    perror_with_name (("ptrace"));
+}
+
+/* See netbsd-nat.h.  */
+
+int
+qxfer_siginfo (pid_t pid, const char *annex, unsigned char *readbuf,
+	       unsigned const char *writebuf, CORE_ADDR offset, int len)
+{
+  ptrace_siginfo_t psi;
+
+  if (offset > sizeof (siginfo_t))
+    return -1;
+
+  if (ptrace (PT_GET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
+    return -1;
+
+  if (offset + len > sizeof (siginfo_t))
+    len = sizeof (siginfo_t) - offset;
+
+  if (readbuf != NULL)
+    memcpy (readbuf, ((gdb_byte *) &psi.psi_siginfo) + offset, len);
+  else
+    {
+      memcpy (((gdb_byte *) &psi.psi_siginfo) + offset, writebuf, len);
+
+      if (ptrace (PT_SET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
+	return -1;
+    }
+  return len;
+}
+
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/netbsd-nat.h ./gdb/nat/netbsd-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/netbsd-nat.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/nat/netbsd-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,72 @@
+/* Internal interfaces for the NetBSD code.
+
+   Copyright (C) 2006-2021 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 NAT_NETBSD_NAT_H
+#define NAT_NETBSD_NAT_H
+
+#include "gdbsupport/function-view.h"
+
+#include <unistd.h>
+
+namespace netbsd_nat
+{
+
+/* Return the executable file name of a process specified by PID.  Returns the
+   string in a static buffer.  */
+
+extern const char *pid_to_exec_file (pid_t pid);
+
+/* Return true if PTID is still active in the inferior.  */
+
+extern bool thread_alive (ptid_t ptid);
+
+/* Return the name assigned to a thread by an application.  Returns
+   the string in a static buffer.
+
+   This function assumes internally that the queried process is stopped.  */
+
+extern const char *thread_name (ptid_t ptid);
+
+/* A generic thread lister within a specific PID.  The CALLBACK parameter
+   is a C++ function that is called for each detected thread.
+
+   This function assumes internally that the queried process is stopped.  */
+
+extern void for_each_thread (pid_t pid,
+			     gdb::function_view<void (ptid_t)> callback);
+
+/* Enable additional event reporting in a new process specified by PID.
+
+   This function assumes internally that the queried process is stopped and
+   traced.  */
+
+extern void enable_proc_events (pid_t pid);
+
+/* Implement reading and writing of inferior's siginfo_t specified by PID.
+   Returns -1 on failure and the number of bytes on a successful transfer.
+
+   This function assumes internally that the queried process is stopped and
+   traced.  */
+
+extern int qxfer_siginfo (pid_t pid, const char *annex, unsigned char *readbuf,
+			  unsigned const char *writebuf, CORE_ADDR offset,
+			  int len);
+}
+
+#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/ppc-linux.c ./gdb/nat/ppc-linux.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/ppc-linux.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/ppc-linux.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/*Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/*Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/ppc-linux.h ./gdb/nat/ppc-linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/ppc-linux.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/ppc-linux.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/riscv-linux-tdesc.c ./gdb/nat/riscv-linux-tdesc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/riscv-linux-tdesc.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/nat/riscv-linux-tdesc.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,83 @@
+/* GNU/Linux/RISC-V native target description support for GDB.
+   Copyright (C) 2020-2021 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 "gdbsupport/common-defs.h"
+
+#include "gdb_proc_service.h"
+#include "arch/riscv.h"
+#include "elf/common.h"
+#include "nat/gdb_ptrace.h"
+#include "nat/riscv-linux-tdesc.h"
+
+#include <sys/uio.h>
+
+/* Work around glibc header breakage causing ELF_NFPREG not to be usable.  */
+#ifndef NFPREG
+# define NFPREG 33
+#endif
+
+/* See nat/riscv-linux-tdesc.h.  */
+
+struct riscv_gdbarch_features
+riscv_linux_read_features (int tid)
+{
+  struct riscv_gdbarch_features features;
+  elf_fpregset_t regs;
+  int flen;
+
+  /* Figuring out xlen is easy.  */
+  features.xlen = sizeof (elf_greg_t);
+
+  /* Start with no f-registers.  */
+  features.flen = 0;
+
+  /* How much worth of f-registers can we fetch if any?  */
+  for (flen = sizeof (regs.__f.__f[0]); ; flen *= 2)
+    {
+      size_t regset_size;
+      struct iovec iov;
+
+      /* Regsets have a uniform slot size, so we count FSCR like
+	 an FP data register.  */
+      regset_size = ELF_NFPREG * flen;
+      if (regset_size > sizeof (regs))
+	break;
+
+      iov.iov_base = &regs;
+      iov.iov_len = regset_size;
+      if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET,
+		  (PTRACE_TYPE_ARG3) &iov) == -1)
+	{
+	  switch (errno)
+	    {
+	    case EINVAL:
+	      continue;
+	    case EIO:
+	      break;
+	    default:
+	      perror_with_name (_("Couldn't get registers"));
+	      break;
+	    }
+	}
+      else
+	features.flen = flen;
+      break;
+    }
+
+  return features;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/riscv-linux-tdesc.h ./gdb/nat/riscv-linux-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/riscv-linux-tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/nat/riscv-linux-tdesc.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,28 @@
+/* GNU/Linux/RISC-V native target description support for GDB.
+   Copyright (C) 2020-2021 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 NAT_RISCV_LINUX_TDESC_H
+#define NAT_RISCV_LINUX_TDESC_H
+
+#include "arch/riscv.h"
+
+/* Determine XLEN and FLEN for the LWP identified by TID, and return a
+   corresponding features object.  */
+struct riscv_gdbarch_features riscv_linux_read_features (int tid);
+
+#endif /* NAT_RISCV_LINUX_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/windows-nat.c ./gdb/nat/windows-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/windows-nat.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/nat/windows-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,402 @@
+/* Internal interfaces for the Windows code
+   Copyright (C) 1995-2021 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 "gdbsupport/common-defs.h"
+#include "nat/windows-nat.h"
+#include "gdbsupport/common-debug.h"
+
+namespace windows_nat
+{
+
+HANDLE current_process_handle;
+DWORD current_process_id;
+DWORD main_thread_id;
+enum gdb_signal last_sig = GDB_SIGNAL_0;
+DEBUG_EVENT current_event;
+
+/* The most recent event from WaitForDebugEvent.  Unlike
+   current_event, this is guaranteed never to come from a pending
+   stop.  This is important because only data from the most recent
+   event from WaitForDebugEvent can be used when calling
+   ContinueDebugEvent.  */
+static DEBUG_EVENT last_wait_event;
+
+DWORD desired_stop_thread_id = -1;
+std::vector<pending_stop> pending_stops;
+EXCEPTION_RECORD siginfo_er;
+
+#ifdef __x86_64__
+bool wow64_process = false;
+bool ignore_first_breakpoint = false;
+#endif
+
+/* Note that 'debug_events' must be locally defined in the relevant
+   functions.  */
+#define DEBUG_EVENTS(x)	if (debug_events) debug_printf x
+
+windows_thread_info::~windows_thread_info ()
+{
+}
+
+void
+windows_thread_info::suspend ()
+{
+  if (suspended != 0)
+    return;
+
+  if (SuspendThread (h) == (DWORD) -1)
+    {
+      DWORD err = GetLastError ();
+
+      /* We get Access Denied (5) when trying to suspend
+	 threads that Windows started on behalf of the
+	 debuggee, usually when those threads are just
+	 about to exit.
+	 We can get Invalid Handle (6) if the main thread
+	 has exited.  */
+      if (err != ERROR_INVALID_HANDLE && err != ERROR_ACCESS_DENIED)
+	warning (_("SuspendThread (tid=0x%x) failed. (winerr %u)"),
+		 (unsigned) tid, (unsigned) err);
+      suspended = -1;
+    }
+  else
+    suspended = 1;
+}
+
+void
+windows_thread_info::resume ()
+{
+  if (suspended > 0)
+    {
+      stopped_at_software_breakpoint = false;
+
+      if (ResumeThread (h) == (DWORD) -1)
+	{
+	  DWORD err = GetLastError ();
+	  warning (_("warning: ResumeThread (tid=0x%x) failed. (winerr %u)"),
+		   (unsigned) tid, (unsigned) err);
+	}
+    }
+  suspended = 0;
+}
+
+const char *
+get_image_name (HANDLE h, void *address, int unicode)
+{
+#ifdef __CYGWIN__
+  static char buf[MAX_PATH];
+#else
+  static char buf[(2 * MAX_PATH) + 1];
+#endif
+  DWORD size = unicode ? sizeof (WCHAR) : sizeof (char);
+  char *address_ptr;
+  int len = 0;
+  char b[2];
+  SIZE_T done;
+
+  /* Attempt to read the name of the dll that was detected.
+     This is documented to work only when actively debugging
+     a program.  It will not work for attached processes.  */
+  if (address == NULL)
+    return NULL;
+
+#ifdef _WIN32_WCE
+  /* Windows CE reports the address of the image name,
+     instead of an address of a pointer into the image name.  */
+  address_ptr = address;
+#else
+  /* See if we could read the address of a string, and that the
+     address isn't null.  */
+  if (!ReadProcessMemory (h, address,  &address_ptr,
+			  sizeof (address_ptr), &done)
+      || done != sizeof (address_ptr)
+      || !address_ptr)
+    return NULL;
+#endif
+
+  /* Find the length of the string.  */
+  while (ReadProcessMemory (h, address_ptr + len++ * size, &b, size, &done)
+	 && (b[0] != 0 || b[size - 1] != 0) && done == size)
+    continue;
+
+  if (!unicode)
+    ReadProcessMemory (h, address_ptr, buf, len, &done);
+  else
+    {
+      WCHAR *unicode_address = (WCHAR *) alloca (len * sizeof (WCHAR));
+      ReadProcessMemory (h, address_ptr, unicode_address, len * sizeof (WCHAR),
+			 &done);
+#ifdef __CYGWIN__
+      wcstombs (buf, unicode_address, MAX_PATH);
+#else
+      WideCharToMultiByte (CP_ACP, 0, unicode_address, len, buf, sizeof buf,
+			   0, 0);
+#endif
+    }
+
+  return buf;
+}
+
+/* The exception thrown by a program to tell the debugger the name of
+   a thread.  The exception record contains an ID of a thread and a
+   name to give it.  This exception has no documented name, but MSDN
+   dubs it "MS_VC_EXCEPTION" in one code example.  */
+#define MS_VC_EXCEPTION 0x406d1388
+
+handle_exception_result
+handle_exception (struct target_waitstatus *ourstatus, bool debug_exceptions)
+{
+#define DEBUG_EXCEPTION_SIMPLE(x)       if (debug_exceptions) \
+  debug_printf ("gdb: Target exception %s at %s\n", x, \
+    host_address_to_string (\
+      current_event.u.Exception.ExceptionRecord.ExceptionAddress))
+
+  EXCEPTION_RECORD *rec = &current_event.u.Exception.ExceptionRecord;
+  DWORD code = rec->ExceptionCode;
+  handle_exception_result result = HANDLE_EXCEPTION_HANDLED;
+
+  memcpy (&siginfo_er, rec, sizeof siginfo_er);
+
+  ourstatus->kind = TARGET_WAITKIND_STOPPED;
+
+  /* Record the context of the current thread.  */
+  thread_rec (ptid_t (current_event.dwProcessId, current_event.dwThreadId, 0),
+	      DONT_SUSPEND);
+
+  switch (code)
+    {
+    case EXCEPTION_ACCESS_VIOLATION:
+      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_ACCESS_VIOLATION");
+      ourstatus->value.sig = GDB_SIGNAL_SEGV;
+      if (handle_access_violation (rec))
+	return HANDLE_EXCEPTION_UNHANDLED;
+      break;
+    case STATUS_STACK_OVERFLOW:
+      DEBUG_EXCEPTION_SIMPLE ("STATUS_STACK_OVERFLOW");
+      ourstatus->value.sig = GDB_SIGNAL_SEGV;
+      break;
+    case STATUS_FLOAT_DENORMAL_OPERAND:
+      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_DENORMAL_OPERAND");
+      ourstatus->value.sig = GDB_SIGNAL_FPE;
+      break;
+    case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
+      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_ARRAY_BOUNDS_EXCEEDED");
+      ourstatus->value.sig = GDB_SIGNAL_FPE;
+      break;
+    case STATUS_FLOAT_INEXACT_RESULT:
+      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_INEXACT_RESULT");
+      ourstatus->value.sig = GDB_SIGNAL_FPE;
+      break;
+    case STATUS_FLOAT_INVALID_OPERATION:
+      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_INVALID_OPERATION");
+      ourstatus->value.sig = GDB_SIGNAL_FPE;
+      break;
+    case STATUS_FLOAT_OVERFLOW:
+      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_OVERFLOW");
+      ourstatus->value.sig = GDB_SIGNAL_FPE;
+      break;
+    case STATUS_FLOAT_STACK_CHECK:
+      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_STACK_CHECK");
+      ourstatus->value.sig = GDB_SIGNAL_FPE;
+      break;
+    case STATUS_FLOAT_UNDERFLOW:
+      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_UNDERFLOW");
+      ourstatus->value.sig = GDB_SIGNAL_FPE;
+      break;
+    case STATUS_FLOAT_DIVIDE_BY_ZERO:
+      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_DIVIDE_BY_ZERO");
+      ourstatus->value.sig = GDB_SIGNAL_FPE;
+      break;
+    case STATUS_INTEGER_DIVIDE_BY_ZERO:
+      DEBUG_EXCEPTION_SIMPLE ("STATUS_INTEGER_DIVIDE_BY_ZERO");
+      ourstatus->value.sig = GDB_SIGNAL_FPE;
+      break;
+    case STATUS_INTEGER_OVERFLOW:
+      DEBUG_EXCEPTION_SIMPLE ("STATUS_INTEGER_OVERFLOW");
+      ourstatus->value.sig = GDB_SIGNAL_FPE;
+      break;
+    case EXCEPTION_BREAKPOINT:
+#ifdef __x86_64__
+      if (ignore_first_breakpoint)
+	{
+	  /* For WOW64 processes, there are always 2 breakpoint exceptions
+	     on startup, first a BREAKPOINT for the 64bit ntdll.dll,
+	     then a WX86_BREAKPOINT for the 32bit ntdll.dll.
+	     Here we only care about the WX86_BREAKPOINT's.  */
+	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+	  ignore_first_breakpoint = false;
+	}
+      else if (wow64_process)
+	{
+	  /* This breakpoint exception is triggered for WOW64 processes when
+	     reaching an int3 instruction in 64bit code.
+	     gdb checks for int3 in case of SIGTRAP, this fails because
+	     Wow64GetThreadContext can only report the pc of 32bit code, and
+	     gdb lets the target process continue.
+	     So handle it as SIGINT instead, then the target is stopped
+	     unconditionally.  */
+	  DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_BREAKPOINT");
+	  rec->ExceptionCode = DBG_CONTROL_C;
+	  ourstatus->value.sig = GDB_SIGNAL_INT;
+	  break;
+	}
+#endif
+      /* FALLTHROUGH */
+    case STATUS_WX86_BREAKPOINT:
+      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_BREAKPOINT");
+      ourstatus->value.sig = GDB_SIGNAL_TRAP;
+#ifdef _WIN32_WCE
+      /* Remove the initial breakpoint.  */
+      check_breakpoints ((CORE_ADDR) (long) current_event
+			 .u.Exception.ExceptionRecord.ExceptionAddress);
+#endif
+      break;
+    case DBG_CONTROL_C:
+      DEBUG_EXCEPTION_SIMPLE ("DBG_CONTROL_C");
+      ourstatus->value.sig = GDB_SIGNAL_INT;
+      break;
+    case DBG_CONTROL_BREAK:
+      DEBUG_EXCEPTION_SIMPLE ("DBG_CONTROL_BREAK");
+      ourstatus->value.sig = GDB_SIGNAL_INT;
+      break;
+    case EXCEPTION_SINGLE_STEP:
+    case STATUS_WX86_SINGLE_STEP:
+      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_SINGLE_STEP");
+      ourstatus->value.sig = GDB_SIGNAL_TRAP;
+      break;
+    case EXCEPTION_ILLEGAL_INSTRUCTION:
+      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_ILLEGAL_INSTRUCTION");
+      ourstatus->value.sig = GDB_SIGNAL_ILL;
+      break;
+    case EXCEPTION_PRIV_INSTRUCTION:
+      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_PRIV_INSTRUCTION");
+      ourstatus->value.sig = GDB_SIGNAL_ILL;
+      break;
+    case EXCEPTION_NONCONTINUABLE_EXCEPTION:
+      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_NONCONTINUABLE_EXCEPTION");
+      ourstatus->value.sig = GDB_SIGNAL_ILL;
+      break;
+    case MS_VC_EXCEPTION:
+      DEBUG_EXCEPTION_SIMPLE ("MS_VC_EXCEPTION");
+      if (handle_ms_vc_exception (rec))
+	{
+	  ourstatus->value.sig = GDB_SIGNAL_TRAP;
+	  result = HANDLE_EXCEPTION_IGNORED;
+	  break;
+	}
+	/* treat improperly formed exception as unknown */
+	/* FALLTHROUGH */
+    default:
+      /* Treat unhandled first chance exceptions specially.  */
+      if (current_event.u.Exception.dwFirstChance)
+	return HANDLE_EXCEPTION_UNHANDLED;
+      debug_printf ("gdb: unknown target exception 0x%08x at %s\n",
+	(unsigned) current_event.u.Exception.ExceptionRecord.ExceptionCode,
+	host_address_to_string (
+	  current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+      ourstatus->value.sig = GDB_SIGNAL_UNKNOWN;
+      break;
+    }
+
+  last_sig = ourstatus->value.sig;
+  return result;
+
+#undef DEBUG_EXCEPTION_SIMPLE
+}
+
+/* See nat/windows-nat.h.  */
+
+bool
+matching_pending_stop (bool debug_events)
+{
+  /* If there are pending stops, and we might plausibly hit one of
+     them, we don't want to actually continue the inferior -- we just
+     want to report the stop.  In this case, we just pretend to
+     continue.  See the comment by the definition of "pending_stops"
+     for details on why this is needed.  */
+  for (const auto &item : pending_stops)
+    {
+      if (desired_stop_thread_id == -1
+	  || desired_stop_thread_id == item.thread_id)
+	{
+	  DEBUG_EVENTS (("windows_continue - pending stop anticipated, "
+			 "desired=0x%x, item=0x%x\n",
+			 desired_stop_thread_id, item.thread_id));
+	  return true;
+	}
+    }
+
+  return false;
+}
+
+/* See nat/windows-nat.h.  */
+
+gdb::optional<pending_stop>
+fetch_pending_stop (bool debug_events)
+{
+  gdb::optional<pending_stop> result;
+  for (auto iter = pending_stops.begin ();
+       iter != pending_stops.end ();
+       ++iter)
+    {
+      if (desired_stop_thread_id == -1
+	  || desired_stop_thread_id == iter->thread_id)
+	{
+	  result = *iter;
+	  current_event = iter->event;
+
+	  DEBUG_EVENTS (("get_windows_debug_event - "
+			 "pending stop found in 0x%x (desired=0x%x)\n",
+			 iter->thread_id, desired_stop_thread_id));
+
+	  pending_stops.erase (iter);
+	  break;
+	}
+    }
+
+  return result;
+}
+
+/* See nat/windows-nat.h.  */
+
+BOOL
+continue_last_debug_event (DWORD continue_status, bool debug_events)
+{
+  DEBUG_EVENTS (("ContinueDebugEvent (cpid=%d, ctid=0x%x, %s);\n",
+		  (unsigned) last_wait_event.dwProcessId,
+		  (unsigned) last_wait_event.dwThreadId,
+		  continue_status == DBG_CONTINUE ?
+		  "DBG_CONTINUE" : "DBG_EXCEPTION_NOT_HANDLED"));
+
+  return ContinueDebugEvent (last_wait_event.dwProcessId,
+			     last_wait_event.dwThreadId,
+			     continue_status);
+}
+
+/* See nat/windows-nat.h.  */
+
+BOOL
+wait_for_debug_event (DEBUG_EVENT *event, DWORD timeout)
+{
+  BOOL result = WaitForDebugEvent (event, timeout);
+  if (result)
+    last_wait_event = *event;
+  return result;
+}
+
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/windows-nat.h ./gdb/nat/windows-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/windows-nat.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/nat/windows-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,267 @@
+/* Internal interfaces for the Windows code
+   Copyright (C) 1995-2021 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 NAT_WINDOWS_NAT_H
+#define NAT_WINDOWS_NAT_H
+
+#include <windows.h>
+#include <vector>
+
+#include "gdbsupport/gdb_optional.h"
+#include "target/waitstatus.h"
+
+#define STATUS_WX86_BREAKPOINT 0x4000001F
+#define STATUS_WX86_SINGLE_STEP 0x4000001E
+
+namespace windows_nat
+{
+
+/* Thread information structure used to track extra information about
+   each thread.  */
+struct windows_thread_info
+{
+  windows_thread_info (DWORD tid_, HANDLE h_, CORE_ADDR tlb)
+    : tid (tid_),
+      h (h_),
+      thread_local_base (tlb)
+  {
+  }
+
+  ~windows_thread_info ();
+
+  DISABLE_COPY_AND_ASSIGN (windows_thread_info);
+
+  /* Ensure that this thread has been suspended.  */
+  void suspend ();
+
+  /* Resume the thread if it has been suspended.  */
+  void resume ();
+
+  /* The Win32 thread identifier.  */
+  DWORD tid;
+
+  /* The handle to the thread.  */
+  HANDLE h;
+
+  /* Thread Information Block address.  */
+  CORE_ADDR thread_local_base;
+
+  /* This keeps track of whether SuspendThread was called on this
+     thread.  -1 means there was a failure or that the thread was
+     explicitly not suspended, 1 means it was called, and 0 means it
+     was not.  */
+  int suspended = 0;
+
+#ifdef _WIN32_WCE
+  /* The context as retrieved right after suspending the thread. */
+  CONTEXT base_context {};
+#endif
+
+  /* The context of the thread, including any manipulations.  */
+  union
+  {
+    CONTEXT context {};
+#ifdef __x86_64__
+    WOW64_CONTEXT wow64_context;
+#endif
+  };
+
+  /* Whether debug registers changed since we last set CONTEXT back to
+     the thread.  */
+  bool debug_registers_changed = false;
+
+  /* Nonzero if CONTEXT is invalidated and must be re-read from the
+     inferior thread.  */
+  bool reload_context = false;
+
+  /* True if this thread is currently stopped at a software
+     breakpoint.  This is used to offset the PC when needed.  */
+  bool stopped_at_software_breakpoint = false;
+
+  /* True if we've adjusted the PC after hitting a software
+     breakpoint, false otherwise.  This lets us avoid multiple
+     adjustments if the registers are read multiple times.  */
+  bool pc_adjusted = false;
+
+  /* The name of the thread, allocated by xmalloc.  */
+  gdb::unique_xmalloc_ptr<char> name;
+};
+
+
+/* Possible values to pass to 'thread_rec'.  */
+enum thread_disposition_type
+{
+  /* Do not invalidate the thread's context, and do not suspend the
+     thread.  */
+  DONT_INVALIDATE_CONTEXT,
+  /* Invalidate the context, but do not suspend the thread.  */
+  DONT_SUSPEND,
+  /* Invalidate the context and suspend the thread.  */
+  INVALIDATE_CONTEXT
+};
+
+/* Find a thread record given a thread id.  THREAD_DISPOSITION
+   controls whether the thread is suspended, and whether the context
+   is invalidated.
+
+   This function must be supplied by the embedding application.  */
+extern windows_thread_info *thread_rec (ptid_t ptid,
+					thread_disposition_type disposition);
+
+
+/* Handle OUTPUT_DEBUG_STRING_EVENT from child process.  Updates
+   OURSTATUS and returns the thread id if this represents a thread
+   change (this is specific to Cygwin), otherwise 0.
+
+   Cygwin prepends its messages with a "cygwin:".  Interpret this as
+   a Cygwin signal.  Otherwise just print the string as a warning.
+
+   This function must be supplied by the embedding application.  */
+extern int handle_output_debug_string (struct target_waitstatus *ourstatus);
+
+/* Handle a DLL load event.
+
+   This function assumes that the current event did not occur during
+   inferior initialization.
+
+   This function must be supplied by the embedding application.  */
+
+extern void handle_load_dll ();
+
+/* Handle a DLL unload event.
+
+   This function assumes that this event did not occur during inferior
+   initialization.
+
+   This function must be supplied by the embedding application.  */
+
+extern void handle_unload_dll ();
+
+/* Handle MS_VC_EXCEPTION when processing a stop.  MS_VC_EXCEPTION is
+   somewhat undocumented but is used to tell the debugger the name of
+   a thread.
+
+   Return true if the exception was handled; return false otherwise.
+
+   This function must be supplied by the embedding application.  */
+
+extern bool handle_ms_vc_exception (const EXCEPTION_RECORD *rec);
+
+/* When EXCEPTION_ACCESS_VIOLATION is processed, we give the embedding
+   application a chance to change it to be considered "unhandled".
+   This function must be supplied by the embedding application.  If it
+   returns true, then the exception is "unhandled".  */
+
+extern bool handle_access_violation (const EXCEPTION_RECORD *rec);
+
+
+/* Currently executing process */
+extern HANDLE current_process_handle;
+extern DWORD current_process_id;
+extern DWORD main_thread_id;
+extern enum gdb_signal last_sig;
+
+/* The current debug event from WaitForDebugEvent or from a pending
+   stop.  */
+extern DEBUG_EVENT current_event;
+
+/* The ID of the thread for which we anticipate a stop event.
+   Normally this is -1, meaning we'll accept an event in any
+   thread.  */
+extern DWORD desired_stop_thread_id;
+
+/* A single pending stop.  See "pending_stops" for more
+   information.  */
+struct pending_stop
+{
+  /* The thread id.  */
+  DWORD thread_id;
+
+  /* The target waitstatus we computed.  */
+  target_waitstatus status;
+
+  /* The event.  A few fields of this can be referenced after a stop,
+     and it seemed simplest to store the entire event.  */
+  DEBUG_EVENT event;
+};
+
+/* A vector of pending stops.  Sometimes, Windows will report a stop
+   on a thread that has been ostensibly suspended.  We believe what
+   happens here is that two threads hit a breakpoint simultaneously,
+   and the Windows kernel queues the stop events.  However, this can
+   result in the strange effect of trying to single step thread A --
+   leaving all other threads suspended -- and then seeing a stop in
+   thread B.  To handle this scenario, we queue all such "pending"
+   stops here, and then process them once the step has completed.  See
+   PR gdb/22992.  */
+extern std::vector<pending_stop> pending_stops;
+
+/* Contents of $_siginfo */
+extern EXCEPTION_RECORD siginfo_er;
+
+#ifdef __x86_64__
+/* The target is a WOW64 process */
+extern bool wow64_process;
+/* Ignore first breakpoint exception of WOW64 process */
+extern bool ignore_first_breakpoint;
+#endif
+
+/* Return the name of the DLL referenced by H at ADDRESS.  UNICODE
+   determines what sort of string is read from the inferior.  Returns
+   the name of the DLL, or NULL on error.  If a name is returned, it
+   is stored in a static buffer which is valid until the next call to
+   get_image_name.  */
+extern const char *get_image_name (HANDLE h, void *address, int unicode);
+
+typedef enum
+{
+  HANDLE_EXCEPTION_UNHANDLED = 0,
+  HANDLE_EXCEPTION_HANDLED,
+  HANDLE_EXCEPTION_IGNORED
+} handle_exception_result;
+
+extern handle_exception_result handle_exception
+  (struct target_waitstatus *ourstatus, bool debug_exceptions);
+
+/* Return true if there is a pending stop matching
+   desired_stop_thread_id.  If DEBUG_EVENTS is true, logging will be
+   enabled.  */
+
+extern bool matching_pending_stop (bool debug_events);
+
+/* See if a pending stop matches DESIRED_STOP_THREAD_ID.  If so,
+   remove it from the list of pending stops, set 'current_event', and
+   return it.  Otherwise, return an empty optional.  */
+
+extern gdb::optional<pending_stop> fetch_pending_stop (bool debug_events);
+
+/* A simple wrapper for ContinueDebugEvent that continues the last
+   waited-for event.  If DEBUG_EVENTS is true, logging will be
+   enabled.  */
+
+extern BOOL continue_last_debug_event (DWORD continue_status,
+				       bool debug_events);
+
+/* A simple wrapper for WaitForDebugEvent that also sets the internal
+   'last_wait_event' on success.  */
+
+extern BOOL wait_for_debug_event (DEBUG_EVENT *event, DWORD timeout);
+
+}
+
+#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-cpuid.h ./gdb/nat/x86-cpuid.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-cpuid.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/x86-cpuid.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* C API for x86 cpuid insn.
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-dregs.c ./gdb/nat/x86-dregs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-dregs.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/x86-dregs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Debug register code for x86 (i386 and x86-64).
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-dregs.h ./gdb/nat/x86-dregs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-dregs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/x86-dregs.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Debug register code for x86 (i386 and x86-64).
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-gcc-cpuid.h ./gdb/nat/x86-gcc-cpuid.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-gcc-cpuid.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/x86-gcc-cpuid.h	2021-05-21 01:57:24.000000000 +0000
@@ -7,7 +7,7 @@
 #define NAT_X86_GCC_CPUID_H
 
 /*
- * Copyright (C) 2007-2020 Free Software Foundation, Inc.
+ * Copyright (C) 2007-2021 Free Software Foundation, Inc.
  *
  * This file is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-linux.c ./gdb/nat/x86-linux.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-linux.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/x86-linux.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux x86 (i386 and x86-64).
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-linux-dregs.c ./gdb/nat/x86-linux-dregs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-linux-dregs.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/x86-linux-dregs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low-level debug register code for GNU/Linux x86 (i386 and x86-64).
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-linux-dregs.h ./gdb/nat/x86-linux-dregs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-linux-dregs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/x86-linux-dregs.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low-level debug register code for GNU/Linux x86 (i386 and x86-64).
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-linux.h ./gdb/nat/x86-linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nat/x86-linux.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nat/x86-linux.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux x86 (i386 and x86-64).
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nbsd-nat.c ./gdb/nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for NetBSD.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -20,6 +20,16 @@
 #include "defs.h"
 
 #include "nbsd-nat.h"
+#include "nat/netbsd-nat.h"
+#include "gdbthread.h"
+#include "nbsd-tdep.h"
+#include "inferior.h"
+#include "gdbarch.h"
+
+#include <sys/types.h>
+#include <sys/ptrace.h>
+#include <sys/sysctl.h>
+#include <sys/wait.h>
 
 /* Return the name of a file that can be opened to get the symbols for
    the child process identified by PID.  */
@@ -27,17 +37,755 @@
 char *
 nbsd_nat_target::pid_to_exec_file (int pid)
 {
-  ssize_t len;
-  static char buf[PATH_MAX];
-  char name[PATH_MAX];
+  return const_cast<char *> (netbsd_nat::pid_to_exec_file (pid));
+}
+
+/* Return the current directory for the process identified by PID.  */
+
+static std::string
+nbsd_pid_to_cwd (int pid)
+{
+  char buf[PATH_MAX];
+  size_t buflen;
+  int mib[4] = {CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_CWD};
+  buflen = sizeof (buf);
+  if (sysctl (mib, ARRAY_SIZE (mib), buf, &buflen, NULL, 0))
+    return "";
+  return buf;
+}
+
+/* Return the kinfo_proc2 structure for the process identified by PID.  */
+
+static bool
+nbsd_pid_to_kinfo_proc2 (pid_t pid, struct kinfo_proc2 *kp)
+{
+  gdb_assert (kp != nullptr);
+
+  size_t size = sizeof (*kp);
+  int mib[6] = {CTL_KERN, KERN_PROC2, KERN_PROC_PID, pid,
+		static_cast<int> (size), 1};
+  return !sysctl (mib, ARRAY_SIZE (mib), kp, &size, NULL, 0);
+}
+
+/* Return the command line for the process identified by PID.  */
+
+static gdb::unique_xmalloc_ptr<char[]>
+nbsd_pid_to_cmdline (int pid)
+{
+  int mib[4] = {CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_ARGV};
+
+  size_t size = 0;
+  if (::sysctl (mib, ARRAY_SIZE (mib), NULL, &size, NULL, 0) == -1 || size == 0)
+    return nullptr;
+
+  gdb::unique_xmalloc_ptr<char[]> args (XNEWVAR (char, size));
+
+  if (::sysctl (mib, ARRAY_SIZE (mib), args.get (), &size, NULL, 0) == -1
+      || size == 0)
+    return nullptr;
+
+  /* Arguments are returned as a flattened string with NUL separators.
+     Join the arguments with spaces to form a single string.  */
+  for (size_t i = 0; i < size - 1; i++)
+    if (args[i] == '\0')
+      args[i] = ' ';
+  args[size - 1] = '\0';
+
+  return args;
+}
+
+/* Return true if PTID is still active in the inferior.  */
+
+bool
+nbsd_nat_target::thread_alive (ptid_t ptid)
+{
+  return netbsd_nat::thread_alive (ptid);
+}
+
+/* Return the name assigned to a thread by an application.  Returns
+   the string in a static buffer.  */
+
+const char *
+nbsd_nat_target::thread_name (struct thread_info *thr)
+{
+  ptid_t ptid = thr->ptid;
+  return netbsd_nat::thread_name (ptid);
+}
+
+/* Implement the "post_attach" target_ops method.  */
+
+static void
+nbsd_add_threads (nbsd_nat_target *target, pid_t pid)
+{
+  auto fn
+    = [&target] (ptid_t ptid)
+      {
+	if (!in_thread_list (target, ptid))
+	  {
+	    if (inferior_ptid.lwp () == 0)
+	      thread_change_ptid (target, inferior_ptid, ptid);
+	    else
+	      add_thread (target, ptid);
+	  }
+      };
+
+  netbsd_nat::for_each_thread (pid, fn);
+}
+
+/* Implement the "post_startup_inferior" target_ops method.  */
+
+void
+nbsd_nat_target::post_startup_inferior (ptid_t ptid)
+{
+  netbsd_nat::enable_proc_events (ptid.pid ());
+}
+
+/* Implement the "post_attach" target_ops method.  */
+
+void
+nbsd_nat_target::post_attach (int pid)
+{
+  netbsd_nat::enable_proc_events (pid);
+  nbsd_add_threads (this, pid);
+}
+
+/* Implement the "update_thread_list" target_ops method.  */
+
+void
+nbsd_nat_target::update_thread_list ()
+{
+  delete_exited_threads ();
+}
+
+/* Convert PTID to a string.  */
+
+std::string
+nbsd_nat_target::pid_to_str (ptid_t ptid)
+{
+  int lwp = ptid.lwp ();
+
+  if (lwp != 0)
+    {
+      pid_t pid = ptid.pid ();
+
+      return string_printf ("LWP %d of process %d", lwp, pid);
+    }
+
+  return normal_pid_to_str (ptid);
+}
+
+/* Retrieve all the memory regions in the specified process.  */
+
+static gdb::unique_xmalloc_ptr<struct kinfo_vmentry[]>
+nbsd_kinfo_get_vmmap (pid_t pid, size_t *size)
+{
+  int mib[5] = {CTL_VM, VM_PROC, VM_PROC_MAP, pid,
+		sizeof (struct kinfo_vmentry)};
+
+  size_t length = 0;
+  if (sysctl (mib, ARRAY_SIZE (mib), NULL, &length, NULL, 0))
+    {
+      *size = 0;
+      return NULL;
+    }
+
+  /* Prereserve more space.  The length argument is volatile and can change
+     between the sysctl(3) calls as this function can be called against a
+     running process.  */
+  length = length * 5 / 3;
+
+  gdb::unique_xmalloc_ptr<struct kinfo_vmentry[]> kiv
+    (XNEWVAR (kinfo_vmentry, length));
+
+  if (sysctl (mib, ARRAY_SIZE (mib), kiv.get (), &length, NULL, 0))
+    {
+      *size = 0;
+      return NULL;
+    }
+
+  *size = length / sizeof (struct kinfo_vmentry);
+  return kiv;
+}
+
+/* Iterate over all the memory regions in the current inferior,
+   calling FUNC for each memory region.  OBFD is passed as the last
+   argument to FUNC.  */
+
+int
+nbsd_nat_target::find_memory_regions (find_memory_region_ftype func,
+				      void *data)
+{
+  pid_t pid = inferior_ptid.pid ();
+
+  size_t nitems;
+  gdb::unique_xmalloc_ptr<struct kinfo_vmentry[]> vmentl
+    = nbsd_kinfo_get_vmmap (pid, &nitems);
+  if (vmentl == NULL)
+    perror_with_name (_("Couldn't fetch VM map entries."));
+
+  for (size_t i = 0; i < nitems; i++)
+    {
+      struct kinfo_vmentry *kve = &vmentl[i];
+
+      /* Skip unreadable segments and those where MAP_NOCORE has been set.  */
+      if (!(kve->kve_protection & KVME_PROT_READ)
+	  || kve->kve_flags & KVME_FLAG_NOCOREDUMP)
+	continue;
+
+      /* Skip segments with an invalid type.  */
+      switch (kve->kve_type)
+	{
+	case KVME_TYPE_VNODE:
+	case KVME_TYPE_ANON:
+	case KVME_TYPE_SUBMAP:
+	case KVME_TYPE_OBJECT:
+	  break;
+	default:
+	  continue;
+	}
+
+      size_t size = kve->kve_end - kve->kve_start;
+      if (info_verbose)
+	{
+	  fprintf_filtered (gdb_stdout,
+			    "Save segment, %ld bytes at %s (%c%c%c)\n",
+			    (long) size,
+			    paddress (target_gdbarch (), kve->kve_start),
+			    kve->kve_protection & KVME_PROT_READ ? 'r' : '-',
+			    kve->kve_protection & KVME_PROT_WRITE ? 'w' : '-',
+			    kve->kve_protection & KVME_PROT_EXEC ? 'x' : '-');
+	}
+
+      /* Invoke the callback function to create the corefile segment.
+	 Pass MODIFIED as true, we do not know the real modification state.  */
+      func (kve->kve_start, size, kve->kve_protection & KVME_PROT_READ,
+	    kve->kve_protection & KVME_PROT_WRITE,
+	    kve->kve_protection & KVME_PROT_EXEC, 1, data);
+    }
+  return 0;
+}
+
+/* Implement the "info_proc" target_ops method.  */
+
+bool
+nbsd_nat_target::info_proc (const char *args, enum info_proc_what what)
+{
+  pid_t pid;
+  bool do_cmdline = false;
+  bool do_cwd = false;
+  bool do_exe = false;
+  bool do_mappings = false;
+  bool do_status = false;
+
+  switch (what)
+    {
+    case IP_MINIMAL:
+      do_cmdline = true;
+      do_cwd = true;
+      do_exe = true;
+      break;
+    case IP_STAT:
+    case IP_STATUS:
+      do_status = true;
+      break;
+    case IP_MAPPINGS:
+      do_mappings = true;
+      break;
+    case IP_CMDLINE:
+      do_cmdline = true;
+      break;
+    case IP_EXE:
+      do_exe = true;
+      break;
+    case IP_CWD:
+      do_cwd = true;
+      break;
+    case IP_ALL:
+      do_cmdline = true;
+      do_cwd = true;
+      do_exe = true;
+      do_mappings = true;
+      do_status = true;
+      break;
+    default:
+      error (_("Not supported on this target."));
+    }
+
+  gdb_argv built_argv (args);
+  if (built_argv.count () == 0)
+    {
+      pid = inferior_ptid.pid ();
+      if (pid == 0)
+        error (_("No current process: you must name one."));
+    }
+  else if (built_argv.count () == 1 && isdigit (built_argv[0][0]))
+    pid = strtol (built_argv[0], NULL, 10);
+  else
+    error (_("Invalid arguments."));
+
+  printf_filtered (_("process %d\n"), pid);
+
+  if (do_cmdline)
+    {
+      gdb::unique_xmalloc_ptr<char[]> cmdline = nbsd_pid_to_cmdline (pid);
+      if (cmdline != nullptr)
+	printf_filtered ("cmdline = '%s'\n", cmdline.get ());
+      else
+	warning (_("unable to fetch command line"));
+    }
+  if (do_cwd)
+    {
+      std::string cwd = nbsd_pid_to_cwd (pid);
+      if (cwd != "")
+	printf_filtered ("cwd = '%s'\n", cwd.c_str ());
+      else
+	warning (_("unable to fetch current working directory"));
+    }
+  if (do_exe)
+    {
+      const char *exe = pid_to_exec_file (pid);
+      if (exe != nullptr)
+	printf_filtered ("exe = '%s'\n", exe);
+      else
+	warning (_("unable to fetch executable path name"));
+    }
+  if (do_mappings)
+    {
+      size_t nvment;
+      gdb::unique_xmalloc_ptr<struct kinfo_vmentry[]> vmentl
+	= nbsd_kinfo_get_vmmap (pid, &nvment);
+
+      if (vmentl != nullptr)
+	{
+	  int addr_bit = TARGET_CHAR_BIT * sizeof (void *);
+	  nbsd_info_proc_mappings_header (addr_bit);
+
+	  struct kinfo_vmentry *kve = vmentl.get ();
+	  for (int i = 0; i < nvment; i++, kve++)
+	    nbsd_info_proc_mappings_entry (addr_bit, kve->kve_start,
+					   kve->kve_end, kve->kve_offset,
+					   kve->kve_flags, kve->kve_protection,
+					   kve->kve_path);
+	}
+      else
+	warning (_("unable to fetch virtual memory map"));
+    }
+  if (do_status)
+    {
+      struct kinfo_proc2 kp;
+      if (!nbsd_pid_to_kinfo_proc2 (pid, &kp))
+	warning (_("Failed to fetch process information"));
+      else
+	{
+	  auto process_status
+	    = [] (int8_t stat)
+	      {
+		switch (stat)
+		  {
+		  case SIDL:
+		    return "IDL";
+		  case SACTIVE:
+		    return "ACTIVE";
+		  case SDYING:
+		    return "DYING";
+		  case SSTOP:
+		    return "STOP";
+		  case SZOMB:
+		    return "ZOMB";
+		  case SDEAD:
+		    return "DEAD";
+		  default:
+		    return "? (unknown)";
+		  }
+	      };
+
+	  printf_filtered ("Name: %s\n", kp.p_comm);
+	  printf_filtered ("State: %s\n", process_status(kp.p_realstat));
+	  printf_filtered ("Parent process: %" PRId32 "\n", kp.p_ppid);
+	  printf_filtered ("Process group: %" PRId32 "\n", kp.p__pgid);
+	  printf_filtered ("Session id: %" PRId32 "\n", kp.p_sid);
+	  printf_filtered ("TTY: %" PRId32 "\n", kp.p_tdev);
+	  printf_filtered ("TTY owner process group: %" PRId32 "\n", kp.p_tpgid);
+	  printf_filtered ("User IDs (real, effective, saved): "
+			   "%" PRIu32 " %" PRIu32 " %" PRIu32 "\n",
+			   kp.p_ruid, kp.p_uid, kp.p_svuid);
+	  printf_filtered ("Group IDs (real, effective, saved): "
+			   "%" PRIu32 " %" PRIu32 " %" PRIu32 "\n",
+			   kp.p_rgid, kp.p_gid, kp.p_svgid);
+
+	  printf_filtered ("Groups:");
+	  for (int i = 0; i < kp.p_ngroups; i++)
+	    printf_filtered (" %" PRIu32, kp.p_groups[i]);
+	  printf_filtered ("\n");
+	  printf_filtered ("Minor faults (no memory page): %" PRIu64 "\n",
+			   kp.p_uru_minflt);
+	  printf_filtered ("Major faults (memory page faults): %" PRIu64 "\n",
+			   kp.p_uru_majflt);
+	  printf_filtered ("utime: %" PRIu32 ".%06" PRIu32 "\n",
+			   kp.p_uutime_sec, kp.p_uutime_usec);
+	  printf_filtered ("stime: %" PRIu32 ".%06" PRIu32 "\n",
+			   kp.p_ustime_sec, kp.p_ustime_usec);
+	  printf_filtered ("utime+stime, children: %" PRIu32 ".%06" PRIu32 "\n",
+			   kp.p_uctime_sec, kp.p_uctime_usec);
+	  printf_filtered ("'nice' value: %" PRIu8 "\n", kp.p_nice);
+	  printf_filtered ("Start time: %" PRIu32 ".%06" PRIu32 "\n",
+			   kp.p_ustart_sec, kp.p_ustart_usec);
+	  int pgtok = getpagesize () / 1024;
+	  printf_filtered ("Data size: %" PRIuMAX " kB\n",
+			   (uintmax_t) kp.p_vm_dsize * pgtok);
+	  printf_filtered ("Stack size: %" PRIuMAX " kB\n",
+			   (uintmax_t) kp.p_vm_ssize * pgtok);
+	  printf_filtered ("Text size: %" PRIuMAX " kB\n",
+			   (uintmax_t) kp.p_vm_tsize * pgtok);
+	  printf_filtered ("Resident set size: %" PRIuMAX " kB\n",
+			   (uintmax_t) kp.p_vm_rssize * pgtok);
+	  printf_filtered ("Maximum RSS: %" PRIu64 " kB\n", kp.p_uru_maxrss);
+	  printf_filtered ("Pending Signals:");
+	  for (size_t i = 0; i < ARRAY_SIZE (kp.p_siglist.__bits); i++)
+	    printf_filtered (" %08" PRIx32, kp.p_siglist.__bits[i]);
+	  printf_filtered ("\n");
+	  printf_filtered ("Ignored Signals:");
+	  for (size_t i = 0; i < ARRAY_SIZE (kp.p_sigignore.__bits); i++)
+	    printf_filtered (" %08" PRIx32, kp.p_sigignore.__bits[i]);
+	  printf_filtered ("\n");
+	  printf_filtered ("Caught Signals:");
+	  for (size_t i = 0; i < ARRAY_SIZE (kp.p_sigcatch.__bits); i++)
+	    printf_filtered (" %08" PRIx32, kp.p_sigcatch.__bits[i]);
+	  printf_filtered ("\n");
+	}
+    }
+
+  return true;
+}
+
+/* Resume execution of a specified PTID, that points to a process or a thread
+   within a process.  If one thread is specified, all other threads are
+   suspended.  If STEP is nonzero, single-step it.  If SIGNAL is nonzero,
+   give it that signal.  */
+
+static void
+nbsd_resume(nbsd_nat_target *target, ptid_t ptid, int step,
+	    enum gdb_signal signal)
+{
+  int request;
+
+  gdb_assert (minus_one_ptid != ptid);
+
+  if (ptid.lwp_p ())
+    {
+      /* If ptid is a specific LWP, suspend all other LWPs in the process.  */
+      inferior *inf = find_inferior_ptid (target, ptid);
+
+      for (thread_info *tp : inf->non_exited_threads ())
+        {
+          if (tp->ptid.lwp () == ptid.lwp ())
+            request = PT_RESUME;
+          else
+            request = PT_SUSPEND;
+
+          if (ptrace (request, tp->ptid.pid (), NULL, tp->ptid.lwp ()) == -1)
+            perror_with_name (("ptrace"));
+        }
+    }
+  else
+    {
+      /* If ptid is a wildcard, resume all matching threads (they won't run
+         until the process is continued however).  */
+      for (thread_info *tp : all_non_exited_threads (target, ptid))
+        if (ptrace (PT_RESUME, tp->ptid.pid (), NULL, tp->ptid.lwp ()) == -1)
+          perror_with_name (("ptrace"));
+    }
+
+  if (step)
+    {
+      for (thread_info *tp : all_non_exited_threads (target, ptid))
+	if (ptrace (PT_SETSTEP, tp->ptid.pid (), NULL, tp->ptid.lwp ()) == -1)
+	  perror_with_name (("ptrace"));
+    }
+  else
+    {
+      for (thread_info *tp : all_non_exited_threads (target, ptid))
+	if (ptrace (PT_CLEARSTEP, tp->ptid.pid (), NULL, tp->ptid.lwp ()) == -1)
+	  perror_with_name (("ptrace"));
+    }
+
+  if (catch_syscall_enabled () > 0)
+    request = PT_SYSCALL;
+  else
+    request = PT_CONTINUE;
+
+  /* An address of (void *)1 tells ptrace to continue from
+     where it was.  If GDB wanted it to start some other way, we have
+     already written a new program counter value to the child.  */
+  if (ptrace (request, ptid.pid (), (void *)1, gdb_signal_to_host (signal)) == -1)
+    perror_with_name (("ptrace"));
+}
+
+/* Resume execution of thread PTID, or all threads of all inferiors
+   if PTID is -1.  If STEP is nonzero, single-step it.  If SIGNAL is nonzero,
+   give it that signal.  */
+
+void
+nbsd_nat_target::resume (ptid_t ptid, int step, enum gdb_signal signal)
+{
+  if (minus_one_ptid != ptid)
+    nbsd_resume (this, ptid, step, signal);
+  else
+    {
+      for (inferior *inf : all_non_exited_inferiors (this))
+	nbsd_resume (this, ptid_t (inf->pid, 0, 0), step, signal);
+    }
+}
+
+/* Implement a safe wrapper around waitpid().  */
+
+static pid_t
+nbsd_wait (ptid_t ptid, struct target_waitstatus *ourstatus, int options)
+{
+  pid_t pid;
+  int status;
 
-  xsnprintf (name, PATH_MAX, "/proc/%d/exe", pid);
-  len = readlink (name, buf, PATH_MAX - 1);
-  if (len != -1)
+  set_sigint_trap ();
+
+  do
+    {
+      /* The common code passes WNOHANG that leads to crashes, overwrite it.  */
+      pid = waitpid (ptid.pid (), &status, 0);
+    }
+  while (pid == -1 && errno == EINTR);
+
+  clear_sigint_trap ();
+
+  if (pid == -1)
+    perror_with_name (_("Child process unexpectedly missing"));
+
+  store_waitstatus (ourstatus, status);
+  return pid;
+}
+
+/* Wait for the child specified by PTID to do something.  Return the
+   process ID of the child, or MINUS_ONE_PTID in case of error; store
+   the status in *OURSTATUS.  */
+
+ptid_t
+nbsd_nat_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
+		       int target_options)
+{
+  pid_t pid = nbsd_wait (ptid, ourstatus, target_options);
+  ptid_t wptid = ptid_t (pid);
+
+  /* If the child stopped, keep investigating its status.  */
+  if (ourstatus->kind != TARGET_WAITKIND_STOPPED)
+    return wptid;
+
+  /* Extract the event and thread that received a signal.  */
+  ptrace_siginfo_t psi;
+  if (ptrace (PT_GET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
+    perror_with_name (("ptrace"));
+
+  /* Pick child's siginfo_t.  */
+  siginfo_t *si = &psi.psi_siginfo;
+
+  int lwp = psi.psi_lwpid;
+
+  int signo = si->si_signo;
+  const int code = si->si_code;
+
+  /* Construct PTID with a specified thread that received the event.
+     If a signal was targeted to the whole process, lwp is 0.  */
+  wptid = ptid_t (pid, lwp, 0);
+
+  /* Bail out on non-debugger oriented signals..  */
+  if (signo != SIGTRAP)
+    return wptid;
+
+  /* Stop examining non-debugger oriented SIGTRAP codes.  */
+  if (code <= SI_USER || code == SI_NOINFO)
+    return wptid;
+
+  /* Process state for threading events */
+  ptrace_state_t pst = {};
+  if (code == TRAP_LWP)
     {
-      buf[len] = '\0';
-      return buf;
+      if (ptrace (PT_GET_PROCESS_STATE, pid, &pst, sizeof (pst)) == -1)
+	perror_with_name (("ptrace"));
     }
 
-  return NULL;
+  if (code == TRAP_LWP && pst.pe_report_event == PTRACE_LWP_EXIT)
+    {
+      /* If GDB attaches to a multi-threaded process, exiting
+	 threads might be skipped during post_attach that
+	 have not yet reported their PTRACE_LWP_EXIT event.
+	 Ignore exited events for an unknown LWP.  */
+      thread_info *thr = find_thread_ptid (this, wptid);
+      if (thr == nullptr)
+	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+      else
+	{
+	  ourstatus->kind = TARGET_WAITKIND_THREAD_EXITED;
+	  /* NetBSD does not store an LWP exit status.  */
+	  ourstatus->value.integer = 0;
+
+	  if (print_thread_events)
+	    printf_unfiltered (_("[%s exited]\n"),
+			       target_pid_to_str (wptid).c_str ());
+	  delete_thread (thr);
+	}
+
+      /* The GDB core expects that the rest of the threads are running.  */
+      if (ptrace (PT_CONTINUE, pid, (void *) 1, 0) == -1)
+	perror_with_name (("ptrace"));
+
+      return wptid;
+    }
+
+  if (in_thread_list (this, ptid_t (pid)))
+      thread_change_ptid (this, ptid_t (pid), wptid);
+
+  if (code == TRAP_LWP && pst.pe_report_event == PTRACE_LWP_CREATE)
+    {
+      /* If GDB attaches to a multi-threaded process, newborn
+	 threads might be added by nbsd_add_threads that have
+	 not yet reported their PTRACE_LWP_CREATE event.  Ignore
+	 born events for an already-known LWP.  */
+      if (in_thread_list (this, wptid))
+	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+      else
+	{
+	  add_thread (this, wptid);
+	  ourstatus->kind = TARGET_WAITKIND_THREAD_CREATED;
+	}
+      return wptid;
+    }
+
+  if (code == TRAP_EXEC)
+    {
+      ourstatus->kind = TARGET_WAITKIND_EXECD;
+      ourstatus->value.execd_pathname = xstrdup (pid_to_exec_file (pid));
+      return wptid;
+    }
+
+  if (code == TRAP_TRACE)
+    {
+      /* Unhandled at this level.  */
+      return wptid;
+    }
+
+  if (code == TRAP_SCE || code == TRAP_SCX)
+    {
+      int sysnum = si->si_sysnum;
+
+      if (!catch_syscall_enabled () || !catching_syscall_number (sysnum))
+	{
+	  /* If the core isn't interested in this event, ignore it.  */
+	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+	  return wptid;
+	}
+
+      ourstatus->kind =
+	(code == TRAP_SCE) ? TARGET_WAITKIND_SYSCALL_ENTRY :
+	TARGET_WAITKIND_SYSCALL_RETURN;
+      ourstatus->value.syscall_number = sysnum;
+      return wptid;
+    }
+
+  if (code == TRAP_BRKPT)
+    {
+      /* Unhandled at this level.  */
+      return wptid;
+    }
+
+  /* Unclassified SIGTRAP event.  */
+  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+  return wptid;
+}
+
+/* Implement the "insert_exec_catchpoint" target_ops method.  */
+
+int
+nbsd_nat_target::insert_exec_catchpoint (int pid)
+{
+  /* Nothing to do.  */
+  return 0;
+}
+
+/* Implement the "remove_exec_catchpoint" target_ops method.  */
+
+int
+nbsd_nat_target::remove_exec_catchpoint (int pid)
+{
+  /* Nothing to do.  */
+  return 0;
+}
+
+/* Implement the "set_syscall_catchpoint" target_ops method.  */
+
+int
+nbsd_nat_target::set_syscall_catchpoint (int pid, bool needed,
+                                         int any_count,
+                                         gdb::array_view<const int> syscall_counts)
+{
+  /* Ignore the arguments.  inf-ptrace.c will use PT_SYSCALL which
+     will catch all system call entries and exits.  The system calls
+     are filtered by GDB rather than the kernel.  */
+  return 0;
+}
+
+/* Implement the "supports_multi_process" target_ops method. */
+
+bool
+nbsd_nat_target::supports_multi_process ()
+{
+  return true;
+}
+
+/* Implement the "xfer_partial" target_ops method.  */
+
+enum target_xfer_status
+nbsd_nat_target::xfer_partial (enum target_object object,
+			       const char *annex, gdb_byte *readbuf,
+			       const gdb_byte *writebuf,
+			       ULONGEST offset, ULONGEST len,
+			       ULONGEST *xfered_len)
+{
+  pid_t pid = inferior_ptid.pid ();
+
+  switch (object)
+    {
+    case TARGET_OBJECT_SIGNAL_INFO:
+      {
+	len = netbsd_nat::qxfer_siginfo(pid, annex, readbuf, writebuf, offset,
+					len);
+
+	if (len == -1)
+	  return TARGET_XFER_E_IO;
+
+	*xfered_len = len;
+	return TARGET_XFER_OK;
+      }
+    default:
+      return inf_ptrace_target::xfer_partial (object, annex,
+					      readbuf, writebuf, offset,
+					      len, xfered_len);
+    }
+}
+
+/* Implement the "supports_dumpcore" target_ops method.  */
+
+bool
+nbsd_nat_target::supports_dumpcore ()
+{
+  return true;
+}
+
+/* Implement the "dumpcore" target_ops method.  */
+
+void
+nbsd_nat_target::dumpcore (const char *filename)
+{
+  pid_t pid = inferior_ptid.pid ();
+
+  if (ptrace (PT_DUMPCORE, pid, const_cast<char *>(filename),
+	      strlen (filename)) == -1)
+    perror_with_name (("ptrace"));
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nbsd-nat.h ./gdb/nbsd-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nbsd-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nbsd-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for NetBSD.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,11 +22,41 @@
 
 #include "inf-ptrace.h"
 
+struct thread_info;
+
 /* A prototype NetBSD target.  */
 
 struct nbsd_nat_target : public inf_ptrace_target
 {
   char *pid_to_exec_file (int pid) override;
+
+  bool thread_alive (ptid_t ptid) override;
+  const char *thread_name (struct thread_info *thr) override;
+  void post_startup_inferior (ptid_t ptid) override;
+  void post_attach (int pid) override;
+  void update_thread_list () override;
+  std::string pid_to_str (ptid_t ptid) override;
+
+  int find_memory_regions (find_memory_region_ftype func, void *data) override;
+  bool info_proc (const char *, enum info_proc_what) override;
+
+  void resume (ptid_t, int, enum gdb_signal) override;
+  ptid_t wait (ptid_t, struct target_waitstatus *, int) override;
+  int insert_exec_catchpoint (int pid) override;
+  int remove_exec_catchpoint (int pid) override;
+  int set_syscall_catchpoint (int pid, bool needed, int any_count,
+			      gdb::array_view<const int> syscall_counts)
+    override;
+
+  bool supports_multi_process () override;
+  enum target_xfer_status xfer_partial (enum target_object object,
+					const char *annex,
+					gdb_byte *readbuf,
+					const gdb_byte *writebuf,
+					ULONGEST offset, ULONGEST len,
+					ULONGEST *xfered_len) override;
+  bool supports_dumpcore () override;
+  void dumpcore (const char *filename) override;
 };
 
 #endif /* nbsd-nat.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nbsd-tdep.c ./gdb/nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target-dependent code for NetBSD systems.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Wasabi Systems, Inc.
   
@@ -20,8 +20,29 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
+#include "auxv.h"
 #include "solib-svr4.h"
 #include "nbsd-tdep.h"
+#include "gdbarch.h"
+#include "objfiles.h"
+#include "xml-syscall.h"
+
+/* Flags in the 'kve_protection' field in struct kinfo_vmentry.  These
+   match the KVME_PROT_* constants in <sys/sysctl.h>.  */
+
+#define	KINFO_VME_PROT_READ	0x00000001
+#define	KINFO_VME_PROT_WRITE	0x00000002
+#define	KINFO_VME_PROT_EXEC	0x00000004
+
+/* Flags in the 'kve_flags' field in struct kinfo_vmentry.  These
+   match the KVME_FLAG_* constants in <sys/sysctl.h>.  */
+
+#define	KINFO_VME_FLAG_COW		0x00000001
+#define	KINFO_VME_FLAG_NEEDS_COPY	0x00000002
+#define	KINFO_VME_FLAG_NOCOREDUMP	0x00000004
+#define	KINFO_VME_FLAG_PAGEABLE		0x00000008
+#define	KINFO_VME_FLAG_GROWS_UP		0x00000010
+#define	KINFO_VME_FLAG_GROWS_DOWN	0x00000020
 
 /* FIXME: kettenis/20060115: We should really eliminate the next two
    functions completely.  */
@@ -47,3 +68,565 @@ nbsd_pc_in_sigtramp (CORE_ADDR pc, const
   return (func_name != NULL
 	  && startswith (func_name, "__sigtramp"));
 }
+
+/* This enum is derived from NETBSD's <sys/signal.h>.  */
+
+enum
+  {
+   NBSD_SIGHUP = 1,
+   NBSD_SIGINT = 2,
+   NBSD_SIGQUIT = 3,
+   NBSD_SIGILL = 4,
+   NBSD_SIGTRAP = 5,
+   NBSD_SIGABRT = 6,
+   NBSD_SIGEMT = 7,
+   NBSD_SIGFPE = 8,
+   NBSD_SIGKILL = 9,
+   NBSD_SIGBUS = 10,
+   NBSD_SIGSEGV = 11,
+   NBSD_SIGSYS = 12,
+   NBSD_SIGPIPE = 13,
+   NBSD_SIGALRM = 14,
+   NBSD_SIGTERM = 15,
+   NBSD_SIGURG = 16,
+   NBSD_SIGSTOP = 17,
+   NBSD_SIGTSTP = 18,
+   NBSD_SIGCONT = 19,
+   NBSD_SIGCHLD = 20,
+   NBSD_SIGTTIN = 21,
+   NBSD_SIGTTOU = 22,
+   NBSD_SIGIO = 23,
+   NBSD_SIGXCPU = 24,
+   NBSD_SIGXFSZ = 25,
+   NBSD_SIGVTALRM = 26,
+   NBSD_SIGPROF = 27,
+   NBSD_SIGWINCH = 28,
+   NBSD_SIGINFO = 29,
+   NBSD_SIGUSR1 = 30,
+   NBSD_SIGUSR2 = 31,
+   NBSD_SIGPWR = 32,
+   NBSD_SIGRTMIN = 33,
+   NBSD_SIGRTMAX = 63,
+  };
+
+/* Implement the "gdb_signal_from_target" gdbarch method.  */
+
+static enum gdb_signal
+nbsd_gdb_signal_from_target (struct gdbarch *gdbarch, int signal)
+{
+  switch (signal)
+    {
+    case 0:
+      return GDB_SIGNAL_0;
+
+    case NBSD_SIGHUP:
+      return GDB_SIGNAL_HUP;
+
+    case NBSD_SIGINT:
+      return GDB_SIGNAL_INT;
+
+    case NBSD_SIGQUIT:
+      return GDB_SIGNAL_QUIT;
+
+    case NBSD_SIGILL:
+      return GDB_SIGNAL_ILL;
+
+    case NBSD_SIGTRAP:
+      return GDB_SIGNAL_TRAP;
+
+    case NBSD_SIGABRT:
+      return GDB_SIGNAL_ABRT;
+
+    case NBSD_SIGEMT:
+      return GDB_SIGNAL_EMT;
+
+    case NBSD_SIGFPE:
+      return GDB_SIGNAL_FPE;
+
+    case NBSD_SIGKILL:
+      return GDB_SIGNAL_KILL;
+
+    case NBSD_SIGBUS:
+      return GDB_SIGNAL_BUS;
+
+    case NBSD_SIGSEGV:
+      return GDB_SIGNAL_SEGV;
+
+    case NBSD_SIGSYS:
+      return GDB_SIGNAL_SYS;
+
+    case NBSD_SIGPIPE:
+      return GDB_SIGNAL_PIPE;
+
+    case NBSD_SIGALRM:
+      return GDB_SIGNAL_ALRM;
+
+    case NBSD_SIGTERM:
+      return GDB_SIGNAL_TERM;
+
+    case NBSD_SIGURG:
+      return GDB_SIGNAL_URG;
+
+    case NBSD_SIGSTOP:
+      return GDB_SIGNAL_STOP;
+
+    case NBSD_SIGTSTP:
+      return GDB_SIGNAL_TSTP;
+
+    case NBSD_SIGCONT:
+      return GDB_SIGNAL_CONT;
+
+    case NBSD_SIGCHLD:
+      return GDB_SIGNAL_CHLD;
+
+    case NBSD_SIGTTIN:
+      return GDB_SIGNAL_TTIN;
+
+    case NBSD_SIGTTOU:
+      return GDB_SIGNAL_TTOU;
+
+    case NBSD_SIGIO:
+      return GDB_SIGNAL_IO;
+
+    case NBSD_SIGXCPU:
+      return GDB_SIGNAL_XCPU;
+
+    case NBSD_SIGXFSZ:
+      return GDB_SIGNAL_XFSZ;
+
+    case NBSD_SIGVTALRM:
+      return GDB_SIGNAL_VTALRM;
+
+    case NBSD_SIGPROF:
+      return GDB_SIGNAL_PROF;
+
+    case NBSD_SIGWINCH:
+      return GDB_SIGNAL_WINCH;
+
+    case NBSD_SIGINFO:
+      return GDB_SIGNAL_INFO;
+
+    case NBSD_SIGUSR1:
+      return GDB_SIGNAL_USR1;
+
+    case NBSD_SIGUSR2:
+      return GDB_SIGNAL_USR2;
+
+    case NBSD_SIGPWR:
+      return GDB_SIGNAL_PWR;
+
+    /* SIGRTMIN and SIGRTMAX are not continuous in <gdb/signals.def>,
+       therefore we have to handle them here.  */
+    case NBSD_SIGRTMIN:
+      return GDB_SIGNAL_REALTIME_33;
+
+    case NBSD_SIGRTMAX:
+      return GDB_SIGNAL_REALTIME_63;
+    }
+
+  if (signal >= NBSD_SIGRTMIN + 1 && signal <= NBSD_SIGRTMAX - 1)
+    {
+      int offset = signal - NBSD_SIGRTMIN + 1;
+
+      return (enum gdb_signal) ((int) GDB_SIGNAL_REALTIME_34 + offset);
+    }
+
+  return GDB_SIGNAL_UNKNOWN;
+}
+
+/* Implement the "gdb_signal_to_target" gdbarch method.  */
+
+static int
+nbsd_gdb_signal_to_target (struct gdbarch *gdbarch,
+                enum gdb_signal signal)
+{
+  switch (signal)
+    {
+    case GDB_SIGNAL_0:
+      return 0;
+
+    case GDB_SIGNAL_HUP:
+      return NBSD_SIGHUP;
+
+    case GDB_SIGNAL_INT:
+      return NBSD_SIGINT;
+
+    case GDB_SIGNAL_QUIT:
+      return NBSD_SIGQUIT;
+
+    case GDB_SIGNAL_ILL:
+      return NBSD_SIGILL;
+
+    case GDB_SIGNAL_TRAP:
+      return NBSD_SIGTRAP;
+
+    case GDB_SIGNAL_ABRT:
+      return NBSD_SIGABRT;
+
+    case GDB_SIGNAL_EMT:
+      return NBSD_SIGEMT;
+
+    case GDB_SIGNAL_FPE:
+      return NBSD_SIGFPE;
+
+    case GDB_SIGNAL_KILL:
+      return NBSD_SIGKILL;
+
+    case GDB_SIGNAL_BUS:
+      return NBSD_SIGBUS;
+
+    case GDB_SIGNAL_SEGV:
+      return NBSD_SIGSEGV;
+
+    case GDB_SIGNAL_SYS:
+      return NBSD_SIGSYS;
+
+    case GDB_SIGNAL_PIPE:
+      return NBSD_SIGPIPE;
+
+    case GDB_SIGNAL_ALRM:
+      return NBSD_SIGALRM;
+
+    case GDB_SIGNAL_TERM:
+      return NBSD_SIGTERM;
+
+    case GDB_SIGNAL_URG:
+      return NBSD_SIGSTOP;
+
+    case GDB_SIGNAL_TSTP:
+      return NBSD_SIGTSTP;
+
+    case GDB_SIGNAL_CONT:
+      return NBSD_SIGCONT;
+
+    case GDB_SIGNAL_CHLD:
+      return NBSD_SIGCHLD;
+
+    case GDB_SIGNAL_TTIN:
+      return NBSD_SIGTTIN;
+
+    case GDB_SIGNAL_TTOU:
+      return NBSD_SIGTTOU;
+
+    case GDB_SIGNAL_IO:
+      return NBSD_SIGIO;
+
+    case GDB_SIGNAL_XCPU:
+      return NBSD_SIGXCPU;
+
+    case GDB_SIGNAL_XFSZ:
+      return NBSD_SIGXFSZ;
+
+    case GDB_SIGNAL_VTALRM:
+      return NBSD_SIGVTALRM;
+
+    case GDB_SIGNAL_PROF:
+      return NBSD_SIGPROF;
+
+    case GDB_SIGNAL_WINCH:
+      return NBSD_SIGWINCH;
+
+    case GDB_SIGNAL_INFO:
+      return NBSD_SIGINFO;
+
+    case GDB_SIGNAL_USR1:
+      return NBSD_SIGUSR1;
+
+    case GDB_SIGNAL_USR2:
+      return NBSD_SIGUSR2;
+
+    case GDB_SIGNAL_PWR:
+      return NBSD_SIGPWR;
+
+    /* GDB_SIGNAL_REALTIME_33 is not continuous in <gdb/signals.def>,
+       therefore we have to handle it here.  */
+    case GDB_SIGNAL_REALTIME_33:
+      return NBSD_SIGRTMIN;
+
+    /* Same comment applies to _64.  */
+    case GDB_SIGNAL_REALTIME_63:
+      return NBSD_SIGRTMAX;
+    }
+
+  if (signal >= GDB_SIGNAL_REALTIME_34
+      && signal <= GDB_SIGNAL_REALTIME_62)
+    {
+      int offset = signal - GDB_SIGNAL_REALTIME_32;
+
+      return NBSD_SIGRTMIN + 1 + offset;
+    }
+
+  return -1;
+}
+
+/* Shared library resolver handling.  */
+
+static CORE_ADDR
+nbsd_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
+{
+  struct bound_minimal_symbol msym;
+
+  msym = lookup_minimal_symbol ("_rtld_bind_start", NULL, NULL);
+  if (msym.minsym && BMSYMBOL_VALUE_ADDRESS (msym) == pc)
+    return frame_unwind_caller_pc (get_current_frame ());
+  else
+    return find_solib_trampoline_target (get_current_frame (), pc);
+}
+
+static struct gdbarch_data *nbsd_gdbarch_data_handle;
+
+struct nbsd_gdbarch_data
+{
+  struct type *siginfo_type;
+};
+
+static void *
+init_nbsd_gdbarch_data (struct gdbarch *gdbarch)
+{
+  return GDBARCH_OBSTACK_ZALLOC (gdbarch, struct nbsd_gdbarch_data);
+}
+
+static struct nbsd_gdbarch_data *
+get_nbsd_gdbarch_data (struct gdbarch *gdbarch)
+{
+  return ((struct nbsd_gdbarch_data *)
+	  gdbarch_data (gdbarch, nbsd_gdbarch_data_handle));
+}
+
+/* Implement the "get_siginfo_type" gdbarch method.  */
+
+static struct type *
+nbsd_get_siginfo_type (struct gdbarch *gdbarch)
+{
+  nbsd_gdbarch_data *nbsd_gdbarch_data = get_nbsd_gdbarch_data (gdbarch);
+  if (nbsd_gdbarch_data->siginfo_type != NULL)
+    return nbsd_gdbarch_data->siginfo_type;
+
+  type *char_type = builtin_type (gdbarch)->builtin_char;
+  type *int_type = builtin_type (gdbarch)->builtin_int;
+  type *long_type = builtin_type (gdbarch)->builtin_long;
+
+  type *void_ptr_type
+    = lookup_pointer_type (builtin_type (gdbarch)->builtin_void);
+
+  type *int32_type = builtin_type (gdbarch)->builtin_int32;
+  type *uint32_type = builtin_type (gdbarch)->builtin_uint32;
+  type *uint64_type = builtin_type (gdbarch)->builtin_uint64;
+
+  bool lp64 = TYPE_LENGTH (void_ptr_type) == 8;
+  size_t char_bits = gdbarch_addressable_memory_unit_size (gdbarch) * 8;
+
+  /* pid_t */
+  type *pid_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
+			      TYPE_LENGTH (int32_type) * char_bits, "pid_t");
+  TYPE_TARGET_TYPE (pid_type) = int32_type;
+
+  /* uid_t */
+  type *uid_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
+			      TYPE_LENGTH (uint32_type) * char_bits, "uid_t");
+  TYPE_TARGET_TYPE (uid_type) = uint32_type;
+
+  /* clock_t */
+  type *clock_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
+				TYPE_LENGTH (int_type) * char_bits, "clock_t");
+  TYPE_TARGET_TYPE (clock_type) = int_type;
+
+  /* lwpid_t */
+  type *lwpid_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
+				TYPE_LENGTH (int32_type) * char_bits,
+				"lwpid_t");
+  TYPE_TARGET_TYPE (lwpid_type) = int32_type;
+
+  /* union sigval */
+  type *sigval_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
+  sigval_type->set_name (gdbarch_obstack_strdup (gdbarch, "sigval"));
+  append_composite_type_field (sigval_type, "sival_int", int_type);
+  append_composite_type_field (sigval_type, "sival_ptr", void_ptr_type);
+
+  /* union _option */
+  type *option_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
+  option_type->set_name (gdbarch_obstack_strdup (gdbarch, "_option"));
+  append_composite_type_field (option_type, "_pe_other_pid", pid_type);
+  append_composite_type_field (option_type, "_pe_lwp", lwpid_type);
+
+  /* union _reason */
+  type *reason_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
+
+  /* _rt */
+  type *t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+  append_composite_type_field (t, "_pid", pid_type);
+  append_composite_type_field (t, "_uid", uid_type);
+  append_composite_type_field (t, "_value", sigval_type);
+  append_composite_type_field (reason_type, "_rt", t);
+
+  /* _child */
+  t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+  append_composite_type_field (t, "_pid", pid_type);
+  append_composite_type_field (t, "_uid", uid_type);
+  append_composite_type_field (t, "_status", int_type);
+  append_composite_type_field (t, "_utime", clock_type);
+  append_composite_type_field (t, "_stime", clock_type);
+  append_composite_type_field (reason_type, "_child", t);
+
+  /* _fault */
+  t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+  append_composite_type_field (t, "_addr", void_ptr_type);
+  append_composite_type_field (t, "_trap", int_type);
+  append_composite_type_field (t, "_trap2", int_type);
+  append_composite_type_field (t, "_trap3", int_type);
+  append_composite_type_field (reason_type, "_fault", t);
+
+  /* _poll */
+  t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+  append_composite_type_field (t, "_band", long_type);
+  append_composite_type_field (t, "_fd", int_type);
+  append_composite_type_field (reason_type, "_poll", t);
+
+  /* _syscall */
+  t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+  append_composite_type_field (t, "_sysnum", int_type);
+  append_composite_type_field (t, "_retval",
+			       init_vector_type (int_type, 2));
+  append_composite_type_field (t, "_error", int_type);
+  append_composite_type_field (t, "_args",
+			       init_vector_type (uint64_type, 8));
+  append_composite_type_field (reason_type, "_syscall", t);
+
+  /* _ptrace_state */
+  t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+  append_composite_type_field (t, "_pe_report_event", int_type);
+  append_composite_type_field (t, "_option", option_type);
+  append_composite_type_field (reason_type, "_ptrace_state", t);
+
+  /* struct _ksiginfo */
+  type *ksiginfo_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+  ksiginfo_type->set_name (gdbarch_obstack_strdup (gdbarch, "_ksiginfo"));
+  append_composite_type_field (ksiginfo_type, "_signo", int_type);
+  append_composite_type_field (ksiginfo_type, "_code", int_type);
+  append_composite_type_field (ksiginfo_type, "_errno", int_type);
+  if (lp64)
+    append_composite_type_field (ksiginfo_type, "_pad", int_type);
+  append_composite_type_field (ksiginfo_type, "_reason", reason_type);
+
+  /* union siginfo */
+  type *siginfo_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
+  siginfo_type->set_name (gdbarch_obstack_strdup (gdbarch, "siginfo"));
+  append_composite_type_field (siginfo_type, "si_pad",
+			       init_vector_type (char_type, 128));
+  append_composite_type_field (siginfo_type, "_info", ksiginfo_type);
+
+  nbsd_gdbarch_data->siginfo_type = siginfo_type;
+
+  return siginfo_type;
+}
+
+/* See nbsd-tdep.h.  */
+
+void
+nbsd_info_proc_mappings_header (int addr_bit)
+{
+  printf_filtered (_("Mapped address spaces:\n\n"));
+  if (addr_bit == 64)
+    {
+      printf_filtered ("  %18s %18s %10s %10s %9s %s\n",
+		       "Start Addr",
+		       "  End Addr",
+		       "      Size", "    Offset", "Flags  ", "File");
+    }
+  else
+    {
+      printf_filtered ("\t%10s %10s %10s %10s %9s %s\n",
+		       "Start Addr",
+		       "  End Addr",
+		       "      Size", "    Offset", "Flags  ", "File");
+    }
+}
+
+/* Helper function to generate mappings flags for a single VM map
+   entry in 'info proc mappings'.  */
+
+static const char *
+nbsd_vm_map_entry_flags (int kve_flags, int kve_protection)
+{
+  static char vm_flags[9];
+
+  vm_flags[0] = (kve_protection & KINFO_VME_PROT_READ) ? 'r' : '-';
+  vm_flags[1] = (kve_protection & KINFO_VME_PROT_WRITE) ? 'w' : '-';
+  vm_flags[2] = (kve_protection & KINFO_VME_PROT_EXEC) ? 'x' : '-';
+  vm_flags[3] = ' ';
+  vm_flags[4] = (kve_flags & KINFO_VME_FLAG_COW) ? 'C' : '-';
+  vm_flags[5] = (kve_flags & KINFO_VME_FLAG_NEEDS_COPY) ? 'N' : '-';
+  vm_flags[6] = (kve_flags & KINFO_VME_FLAG_PAGEABLE) ? 'P' : '-';
+  vm_flags[7] = (kve_flags & KINFO_VME_FLAG_GROWS_UP) ? 'U'
+    : (kve_flags & KINFO_VME_FLAG_GROWS_DOWN) ? 'D' : '-';
+  vm_flags[8] = '\0';
+
+  return vm_flags;
+}
+
+void
+nbsd_info_proc_mappings_entry (int addr_bit, ULONGEST kve_start,
+			       ULONGEST kve_end, ULONGEST kve_offset,
+			       int kve_flags, int kve_protection,
+			       const char *kve_path)
+{
+  if (addr_bit == 64)
+    {
+      printf_filtered ("  %18s %18s %10s %10s %9s %s\n",
+		       hex_string (kve_start),
+		       hex_string (kve_end),
+		       hex_string (kve_end - kve_start),
+		       hex_string (kve_offset),
+		       nbsd_vm_map_entry_flags (kve_flags, kve_protection),
+		       kve_path);
+    }
+  else
+    {
+      printf_filtered ("\t%10s %10s %10s %10s %9s %s\n",
+		       hex_string (kve_start),
+		       hex_string (kve_end),
+		       hex_string (kve_end - kve_start),
+		       hex_string (kve_offset),
+		       nbsd_vm_map_entry_flags (kve_flags, kve_protection),
+		       kve_path);
+    }
+}
+
+/* Implement the "get_syscall_number" gdbarch method.  */
+
+static LONGEST
+nbsd_get_syscall_number (struct gdbarch *gdbarch, thread_info *thread)
+{
+
+  /* NetBSD doesn't use gdbarch_get_syscall_number since NetBSD
+     native targets fetch the system call number from the
+     'si_sysnum' member of siginfo_t in nbsd_nat_target::wait.
+     However, system call catching requires this function to be
+     set.  */
+
+  internal_error (__FILE__, __LINE__, _("nbsd_get_sycall_number called"));
+}
+
+/* See nbsd-tdep.h.  */
+
+void
+nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  set_gdbarch_gdb_signal_from_target (gdbarch, nbsd_gdb_signal_from_target);
+  set_gdbarch_gdb_signal_to_target (gdbarch, nbsd_gdb_signal_to_target);
+  set_gdbarch_skip_solib_resolver (gdbarch, nbsd_skip_solib_resolver);
+  set_gdbarch_auxv_parse (gdbarch, svr4_auxv_parse);
+  set_gdbarch_get_siginfo_type (gdbarch, nbsd_get_siginfo_type);
+
+  /* `catch syscall' */
+  set_xml_syscall_file_name (gdbarch, "syscalls/netbsd.xml");
+  set_gdbarch_get_syscall_number (gdbarch, nbsd_get_syscall_number);
+}
+
+void _initialize_nbsd_tdep ();
+void
+_initialize_nbsd_tdep ()
+{
+  nbsd_gdbarch_data_handle
+    = gdbarch_data_register_post_init (init_nbsd_gdbarch_data);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nbsd-tdep.h ./gdb/nbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nbsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Common target-dependent definitions for NetBSD systems.
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
    Contributed by Wasabi Systems, Inc.
 
    This file is part of GDB.
@@ -25,4 +25,26 @@ struct link_map_offsets *nbsd_lp64_solib
 
 int nbsd_pc_in_sigtramp (CORE_ADDR, const char *);
 
+/* NetBSD specific set of ABI-related routines.  */
+
+void nbsd_init_abi (struct gdbarch_info, struct gdbarch *);
+
+/* Output the header for "info proc mappings".  ADDR_BIT is the size
+   of a virtual address in bits.  */
+
+extern void nbsd_info_proc_mappings_header (int addr_bit);
+
+/* Output description of a single memory range for "info proc
+   mappings".  ADDR_BIT is the size of a virtual address in bits.  The
+   KVE_START, KVE_END, KVE_OFFSET, KVE_FLAGS, and KVE_PROTECTION
+   parameters should contain the value of the corresponding fields in
+   a 'struct kinfo_vmentry'.  The KVE_PATH parameter should contain a
+   pointer to the 'kve_path' field in a 'struct kinfo_vmentry'. */
+
+extern void nbsd_info_proc_mappings_entry (int addr_bit, ULONGEST kve_start,
+					   ULONGEST kve_end,
+					   ULONGEST kve_offset,
+					   int kve_flags, int kve_protection,
+					   const char *kve_path);
+
 #endif /* NBSD_TDEP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nds32-tdep.c ./gdb/nds32-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nds32-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nds32-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the NDS32 architecture, for GDB.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
    Contributed by Andes Technology Corporation.
 
    This file is part of GDB.
@@ -34,7 +34,7 @@
 #include "dis-asm.h"
 #include "user-regs.h"
 #include "elf-bfd.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "remote.h"
 #include "target-descriptions.h"
 
@@ -1402,13 +1402,13 @@ nds32_check_calling_use_fpr (struct type
   while (1)
     {
       t = check_typedef (t);
-      typecode = TYPE_CODE (t);
+      typecode = t->code ();
       if (typecode != TYPE_CODE_STRUCT)
 	break;
-      else if (TYPE_NFIELDS (t) != 1)
+      else if (t->num_fields () != 1)
 	return 0;
       else
-	t = TYPE_FIELD_TYPE (t, 0);
+	t = t->field (0).type ();
     }
 
   return typecode == TYPE_CODE_FLT;
@@ -1496,7 +1496,7 @@ nds32_push_dummy_call (struct gdbarch *g
 	 and pushes all unnamed arguments in stack.  */
 
       if (abi_use_fpr && TYPE_VARARGS (func_type)
-	  && i >= TYPE_NFIELDS (func_type))
+	  && i >= func_type->num_fields ())
 	goto use_stack;
 
       /* Try to use FPRs to pass arguments only when
@@ -2096,8 +2096,9 @@ nds32_gdbarch_init (struct gdbarch_info
   return gdbarch;
 }
 
+void _initialize_nds32_tdep ();
 void
-_initialize_nds32_tdep (void)
+_initialize_nds32_tdep ()
 {
   /* Initialize gdbarch.  */
   register_gdbarch_init (bfd_arch_nds32, nds32_gdbarch_init);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nds32-tdep.h ./gdb/nds32-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nds32-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nds32-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the NDS32 architecture, for GDB.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
    Contributed by Andes Technology Corporation.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/NEWS ./gdb/NEWS
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/NEWS	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/NEWS	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,172 @@
 		What has changed in GDB?
 	     (Organized release by release)
 
+*** Changes in GDB 10
+
+* There are new feature names for ARC targets: "org.gnu.gdb.arc.core"
+  and "org.gnu.gdb.arc.aux".  The old names are still supported but
+  must be considered obsolete.  They will be deprecated after some
+  grace period.
+
+* Help and apropos commands will now show the documentation of a
+  command only once, even if that command has one or more aliases.
+  These commands now show the command name, then all of its aliases,
+  and finally the description of the command.
+
+* 'help aliases' now shows only the user defined aliases.  GDB predefined
+  aliases are shown together with their aliased command.
+
+* GDB now supports debuginfod, an HTTP server for distributing ELF/DWARF
+  debugging information as well as source code.
+
+  When built with debuginfod, GDB can automatically query debuginfod
+  servers for the separate debug files and source code of the executable
+  being debugged.
+
+  To build GDB with debuginfod, pass --with-debuginfod to configure (this
+  requires libdebuginfod, the debuginfod client library).
+
+  debuginfod is distributed with elfutils, starting with version 0.178.
+
+  You can get the latest version from https://sourceware.org/elfutils.
+
+* Multi-target debugging support
+
+  GDB now supports debugging multiple target connections
+  simultaneously.  For example, you can now have each inferior
+  connected to different remote servers running in different machines,
+  or have one inferior debugging a local native process, an inferior
+  debugging a core dump, etc.
+
+  This support is experimental and comes with some limitations -- you
+  can only resume multiple targets simultaneously if all targets
+  support non-stop mode, and all remote stubs or servers must support
+  the same set of remote protocol features exactly.  See also "info
+  connections" and "add-inferior -no-connection" below, and "maint set
+  target-non-stop" in the user manual.
+
+* New features in the GDB remote stub, GDBserver
+
+  ** GDBserver is now supported on ARC GNU/Linux.
+
+  ** GDBserver is now supported on RISC-V GNU/Linux.
+
+  ** GDBserver no longer supports these host triplets:
+
+    i[34567]86-*-lynxos*
+    powerpc-*-lynxos*
+    i[34567]86-*-nto*
+    bfin-*-*linux*
+    crisv32-*-linux*
+    cris-*-linux*
+    m32r*-*-linux*
+    tilegx-*-linux*
+    arm*-*-mingw32ce*
+    i[34567]86-*-mingw32ce*
+
+* Debugging MS-Windows processes now sets $_exitsignal when the
+  inferior is terminated by a signal, instead of setting $_exitcode.
+
+* Multithreaded symbol loading has now been enabled by default on systems
+  that support it (see entry for GDB 9, below), providing faster
+  performance for programs with many symbols.
+
+* The $_siginfo convenience variable now also works on Windows targets,
+  and will display the EXCEPTION_RECORD of the last handled exception.
+
+* TUI windows can now be arranged horizontally.
+
+* The command history filename can now be set to the empty string
+  either using 'set history filename' or by setting 'GDBHISTFILE=' in
+  the environment.  The effect of setting this filename to the empty
+  string is that GDB will not try to load any previous command
+  history.
+
+* On Windows targets, it is now possible to debug 32-bit programs with a
+  64-bit GDB.
+
+* New commands
+
+set exec-file-mismatch -- Set exec-file-mismatch handling (ask|warn|off).
+show exec-file-mismatch -- Show exec-file-mismatch handling (ask|warn|off).
+  Set or show the option 'exec-file-mismatch'.  When GDB attaches to a
+  running process, this new option indicates whether to detect
+  a mismatch between the current executable file loaded by GDB and the
+  executable file used to start the process.  If 'ask', the default,
+  display a warning and ask the user whether to load the process
+  executable file; if 'warn', just display a warning; if 'off', don't
+  attempt to detect a mismatch.
+
+tui new-layout NAME WINDOW WEIGHT [WINDOW WEIGHT]...
+  Define a new TUI layout, specifying its name and the windows that
+  will be displayed.
+
+maintenance print xml-tdesc [FILE]
+  Prints the current target description as an XML document.  If the
+  optional FILE is provided (which is an XML target description) then
+  the target description is read from FILE into GDB, and then
+  reprinted.
+
+maintenance print core-file-backed-mappings
+  Prints file-backed mappings loaded from a core file's note section.
+  Output is expected to be similar to that of "info proc mappings".
+
+* Changed commands
+
+alias [-a] [--] ALIAS = COMMAND [DEFAULT-ARGS...]
+  The alias command can now specify default args for an alias.
+  GDB automatically prepends the alias default args to the argument list
+  provided explicitly by the user.
+  For example, to have a backtrace with full details, you can define
+  an alias 'bt_ALL' as
+  'alias bt_ALL = backtrace -entry-values both -frame-arg all
+     -past-main -past-entry -full'.
+  Alias default arguments can also use a set of nested 'with' commands,
+  e.g. 'alias pp10 = with print pretty -- with print elem 10 -- print'
+  defines the alias pp10 that will pretty print a maximum of 10 elements
+  of the given expression (if the expression is an array).
+
+* New targets
+
+GNU/Linux/RISC-V (gdbserver)	riscv*-*-linux*
+BPF				bpf-unknown-none
+
+* Python API
+
+  ** gdb.register_window_type can be used to implement new TUI windows
+     in Python.
+
+  ** Dynamic types can now be queried.  gdb.Type has a new attribute,
+     "dynamic", and gdb.Type.sizeof can be None for a dynamic type.  A
+     field of a dynamic type may have None for its "bitpos" attribute
+     as well.
+
+  ** Commands written in Python can be in the "TUI" help class by
+     registering with the new constant gdb.COMMAND_TUI.
+
+  ** New method gdb.PendingFrame.architecture () to retrieve the
+     architecture of the pending frame.
+
+  ** New gdb.Architecture.registers method that returns a
+     gdb.RegisterDescriptorIterator object, an iterator that returns
+     gdb.RegisterDescriptor objects.  The new RegisterDescriptor is a
+     way to query the registers available for an architecture.
+
+  ** New gdb.Architecture.register_groups method that returns a
+     gdb.RegisterGroupIterator object, an iterator that returns
+     gdb.RegisterGroup objects.  The new RegisterGroup is a way to
+     discover the available register groups.
+
+* Guile API
+
+  ** GDB can now be built with GNU Guile 3.0 and 2.2 in addition to 2.0.
+
+  ** Procedures 'memory-port-read-buffer-size',
+     'set-memory-port-read-buffer-size!', 'memory-port-write-buffer-size',
+     and 'set-memory-port-write-buffer-size!' are deprecated.  When
+     using Guile 2.2 and later, users who need to control the size of
+     a memory port's internal buffer can use the 'setvbuf' procedure.
+
 *** Changes in GDB 9
 
 * 'thread-exited' event is now available in the annotations interface.
@@ -234,6 +400,9 @@ show debug remote-packet-max-chars
   "set debug remote".
   The default is 512 bytes.
 
+info connections
+  Lists the target connections currently in use.
+
 * Changed commands
 
 help
@@ -278,6 +447,17 @@ show print raw-frame-arguments
   old commands are now deprecated and may be removed in a future
   release.
 
+add-inferior [-no-connection]
+  The add-inferior command now supports a "-no-connection" flag that
+  makes the new inferior start with no target connection associated.
+  By default, the new inferior inherits the target connection of the
+  current inferior.  See also "info connections".
+
+info inferior
+  This command's output now includes a new "Connection" column
+  indicating which target connection an inferior is bound to.  See
+  "info connections" above.
+
 maint test-options require-delimiter
 maint test-options unknown-is-error
 maint test-options unknown-is-operand
@@ -527,7 +707,7 @@ Solaris 10			i?86-*-solaris2.10, x86_64-
 set debug compile-cplus-types
 show debug compile-cplus-types
   Control the display of debug output about type conversion in the
-  C++ compile feature.  Commands have no effect while compiliong
+  C++ compile feature.  Commands have no effect while compiling
   for other languages.
 
 set debug skip
@@ -1270,7 +1450,7 @@ skip -rfunction regular-expression
   Additionally, a file spec and a function spec may now be combined.
 
 maint info line-table REGEXP
-  Display the contents of GDB's internal line table data struture.
+  Display the contents of GDB's internal line table data structure.
 
 maint selftest
   Run any GDB unit tests that were compiled in.
@@ -1442,7 +1622,7 @@ show remote thread-events
 set ada print-signatures on|off
 show ada print-signatures"
   Control whether parameter types and return types are displayed in overloads
-  selection menus.  It is activaled (@code{on}) by default.
+  selection menus.  It is activated (@code{on}) by default.
 
 set max-value-size
 show max-value-size
@@ -1774,7 +1954,7 @@ Qbtrace-conf:bts:size
   Set the requested ring buffer size for branch tracing in BTS format.
 
 Qbtrace:pt
-  Enable Intel Procesor Trace-based branch tracing for the current
+  Enable Intel Processor Trace-based branch tracing for the current
   process.  The remote stub reports support for this packet to GDB's
   qSupported query.
 
@@ -2323,7 +2503,7 @@ show code-cache
 * Newly installed $prefix/bin/gcore acts as a shell interface for the
   GDB command gcore.
 
-* GDB now implements the the C++ 'typeid' operator.
+* GDB now implements the C++ 'typeid' operator.
 
 * The new convenience variable $_exception holds the exception being
   thrown or caught at an exception-related catchpoint.
@@ -4127,7 +4307,7 @@ qXfer:siginfo:write
 * Removed remote protocol undocumented extension
 
   An undocumented extension to the remote protocol's `S' stop reply
-  packet that permited the stub to pass a process id was removed.
+  packet that permitted the stub to pass a process id was removed.
   Remote servers should use the `T' stop reply packet instead.
 
 * GDB now supports multiple function calling conventions according to the
@@ -4147,7 +4327,7 @@ with the --compress-debug-sections=zlib
 * Watchpoints can now be set on unreadable memory locations, e.g. addresses
 which will be allocated using malloc later in program execution.
 
-* The qXfer:libraries:read remote procotol packet now allows passing a
+* The qXfer:libraries:read remote protocol packet now allows passing a
 list of section offsets.
 
 * On GNU/Linux, GDB can now attach to stopped processes.  Several race
@@ -4521,7 +4701,7 @@ Xtensa GNU/Linux		xtensa*-*-linux*
 * New targets
 
 NetBSD/hppa			hppa*-*-netbsd*
-Xtensa GNU/Lunux		xtensa*-*-linux*
+Xtensa GNU/Linux		xtensa*-*-linux*
 
 * Change in command line behavior -- corefiles vs. process ids.
 
@@ -5107,7 +5287,7 @@ The new infrastructure making possible t
 features including 32x64 (e.g., 64-bit amd64 GDB debugging a 32-bit
 i386 application).
 
-GDB 6.3 will be the last release to include the the registers[]
+GDB 6.3 will be the last release to include the registers[]
 compatibility module that allowed out-of-date configurations to
 continue to work.  This change directly impacts the following
 configurations:
@@ -5177,7 +5357,7 @@ GDB to dump core).
 
 * New ``start'' command.
 
-This command runs the program until the begining of the main procedure.
+This command runs the program until the beginning of the main procedure.
 
 * New BSD Kernel Data Access Library (libkvm) interface
 
@@ -5374,7 +5554,7 @@ M32R with SDI protocol				m32r-*-elf*
 * "set prompt-escape-char" command deleted.
 
 The command "set prompt-escape-char" has been deleted.  This command,
-and its very obscure effet on GDB's prompt, was never documented,
+and its very obscure effect on GDB's prompt, was never documented,
 tested, nor mentioned in the NEWS file.
 
 * OBSOLETE configurations and files
@@ -6538,7 +6718,7 @@ Remote targets now use a data cache to s
 remote side.  The data cache could lead to incorrect results because
 it doesn't know about volatile variables, thus making it impossible to
 debug targets which use memory mapped I/O devices. `set remotecache
-off' turns the the data cache off.
+off' turns the data cache off.
 
 * Remote targets may have threads
 
@@ -7084,7 +7264,7 @@ Calling of methods and virtual functions
 
  * Major bug fixes
 
-The crash that occured when debugging Sun Ansi-C compiled binaries is
+The crash that occurred when debugging Sun Ansi-C compiled binaries is
 fixed.  This was due to mishandling of the extra N_SO stabs output
 by the compiler.
 
@@ -7185,7 +7365,7 @@ for the list of formats.
 Recent versions of gcc have a bug in how they emit debugging information for
 C++ methods (when using dbx-style stabs).  The file 'gcc.patch' (in this
 directory) can be applied to gcc to fix the problem.  Alternatively, if you
-can't fix gcc, you can #define GCC_MANGLE_BUG when compling gdb/symtab.c. The
+can't fix gcc, you can #define GCC_MANGLE_BUG when compiling gdb/symtab.c. The
 usual symptom is difficulty with setting breakpoints on methods.  GDB complains
 about the method being non-existent.  (We believe that version 2.2.2 of GCC has
 this problem.)
@@ -7271,7 +7451,7 @@ SGI Irix-4.x				mips-sgi-irix4	or iris4
  * New malloc package
 
 GDB now uses a new memory manager called mmalloc, based on gmalloc.
-Mmalloc is capable of handling mutiple heaps of memory.  It is also
+Mmalloc is capable of handling multiple heaps of memory.  It is also
 capable of saving a heap to a file, and then mapping it back in later.
 This can be used to greatly speedup the startup of GDB by using a
 pre-parsed symbol table which lives in a mmalloc managed heap.  For
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nios2-linux-tdep.c ./gdb/nios2-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nios2-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nios2-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-dependent code for GNU/Linux on Nios II.
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
    Contributed by Mentor Graphics, Inc.
 
    This file is part of GDB.
@@ -248,8 +248,9 @@ nios2_linux_init_abi (struct gdbarch_inf
   tdep->jb_pc = 10;
 }
 
+void _initialize_nios2_linux_tdep ();
 void
-_initialize_nios2_linux_tdep (void)
+_initialize_nios2_linux_tdep ()
 {
 
   const struct bfd_arch_info *arch_info;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nios2-tdep.c ./gdb/nios2-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nios2-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nios2-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-machine dependent code for Nios II, for GDB.
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
    Contributed by Peter Brookes (pbrookes@altera.com)
    and Andrew Draper (adraper@altera.com).
    Contributed by Mentor Graphics, Inc.
@@ -24,7 +24,7 @@
 #include "frame-unwind.h"
 #include "frame-base.h"
 #include "trad-frame.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "symtab.h"
 #include "inferior.h"
 #include "gdbtypes.h"
@@ -2236,7 +2236,7 @@ nios2_get_longjmp_target (struct frame_i
 static ULONGEST
 nios2_type_align (struct gdbarch *gdbarch, struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_FUNC:
@@ -2390,8 +2390,9 @@ nios2_gdbarch_init (struct gdbarch_info
   return gdbarch;
 }
 
+void _initialize_nios2_tdep ();
 void
-_initialize_nios2_tdep (void)
+_initialize_nios2_tdep ()
 {
   gdbarch_register (bfd_arch_nios2, nios2_gdbarch_init, NULL);
   initialize_tdesc_nios2 ();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nios2-tdep.h ./gdb/nios2-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nios2-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nios2-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-dependent header for the Nios II architecture, for GDB.
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
    Contributed by Mentor Graphics, Inc.
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nto-procfs.c ./gdb/nto-procfs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nto-procfs.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nto-procfs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Machine independent support for QNX Neutrino /proc (process file system)
    for GDB.  Written by Colin Burgess at QNX Software Systems Limited.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    Contributed by QNX Software Systems Ltd.
 
@@ -393,7 +393,7 @@ nto_procfs_target::update_thread_list ()
 
   prune_threads ();
 
-  pid = inferior_ptid.pid ();
+  pid = current_inferior ()->pid;
 
   status.tid = 1;
 
@@ -409,7 +409,7 @@ nto_procfs_target::update_thread_list ()
 	   (e.g. thread exited).  */
 	continue;
       ptid = ptid_t (pid, 0, tid);
-      new_thread = find_thread_ptid (ptid);
+      new_thread = find_thread_ptid (this, ptid);
       if (!new_thread)
 	new_thread = add_thread (ptid);
       update_thread_private_data (new_thread, tid, status.state, 0);
@@ -693,7 +693,6 @@ nto_procfs_target::pid_to_exec_file (con
 void
 nto_procfs_target::attach (const char *args, int from_tty)
 {
-  char *exec_file;
   int pid;
   struct inferior *inf;
 
@@ -704,7 +703,7 @@ nto_procfs_target::attach (const char *a
 
   if (from_tty)
     {
-      exec_file = (char *) get_exec_file (0);
+      const char *exec_file = get_exec_file (0);
 
       if (exec_file)
 	printf_unfiltered ("Attaching to program `%s', %s\n", exec_file,
@@ -713,7 +712,7 @@ nto_procfs_target::attach (const char *a
 	printf_unfiltered ("Attaching to %s\n",
 			   target_pid_to_str (ptid_t (pid)).c_str ());
     }
-  inferior_ptid = do_attach (ptid_t (pid));
+  ptid_t ptid = do_attach (ptid_t (pid));
   inf = current_inferior ();
   inferior_appeared (inf, pid);
   inf->attach_flag = 1;
@@ -721,7 +720,9 @@ nto_procfs_target::attach (const char *a
   if (!target_is_pushed (ops))
     push_target (ops);
 
-  procfs_update_thread_list (ops);
+  update_thread_list ();
+
+  switch_to_thread (find_thread_ptid (this, ptid));
 }
 
 void
@@ -1001,19 +1002,16 @@ nto_procfs_target::xfer_partial (enum ta
 void
 nto_procfs_target::detach (inferior *inf, int from_tty)
 {
-  int pid;
-
   target_announce_detach ();
 
   if (siggnal)
-    SignalKill (nto_node (), inferior_ptid.pid (), 0, 0, 0, 0);
+    SignalKill (nto_node (), inf->pid, 0, 0, 0, 0);
 
   close (ctl_fd);
   ctl_fd = -1;
 
-  pid = inferior_ptid.pid ();
-  inferior_ptid = null_ptid;
-  detach_inferior (pid);
+  switch_to_no_thread ();
+  detach_inferior (inf->pid);
   init_thread_list ();
   inf_child_maybe_unpush_target (ops);
 }
@@ -1133,7 +1131,7 @@ nto_procfs_target::mourn_inferior ()
       SignalKill (nto_node (), inferior_ptid.pid (), 0, SIGKILL, 0, 0);
       close (ctl_fd);
     }
-  inferior_ptid = null_ptid;
+  switch_to_no_thread ();
   init_thread_list ();
   inf_child_mourn_inferior (ops);
 }
@@ -1210,12 +1208,11 @@ nto_procfs_target::create_inferior (cons
   const char *in = "", *out = "", *err = "";
   int fd, fds[3];
   sigset_t set;
-  const char *inferior_io_terminal = get_inferior_io_terminal ();
   struct inferior *inf;
 
   argv = xmalloc ((allargs.size () / (unsigned) 2 + 2) *
 		  sizeof (*argv));
-  argv[0] = get_exec_file (1);
+  argv[0] = const_cast<char *> (get_exec_file (1));
   if (!argv[0])
     {
       if (exec_file)
@@ -1235,14 +1232,15 @@ nto_procfs_target::create_inferior (cons
 
   /* If the user specified I/O via gdb's --tty= arg, use it, but only
      if the i/o is not also being specified via redirection.  */
-  if (inferior_io_terminal)
+  const char *inferior_tty = current_inferior ()->tty ();
+  if (inferior_tty != nullptr)
     {
       if (!in[0])
-	in = inferior_io_terminal;
+	in = inferior_tty;
       if (!out[0])
-	out = inferior_io_terminal;
+	out = inferior_tty;
       if (!err[0])
-	err = inferior_io_terminal;
+	err = inferior_tty;
     }
 
   if (in[0])
@@ -1304,8 +1302,9 @@ nto_procfs_target::create_inferior (cons
   if (fds[2] != STDERR_FILENO)
     close (fds[2]);
 
-  inferior_ptid = do_attach (ptid_t (pid));
-  procfs_update_thread_list (ops);
+  ptid_t ptid = do_attach (ptid_t (pid));
+  update_thread_list ();
+  switch_to_thread (find_thread_ptid (this, ptid));
 
   inf = current_inferior ();
   inferior_appeared (inf, pid);
@@ -1506,8 +1505,9 @@ init_procfs_targets (void)
 
 #define OSTYPE_NTO 1
 
+void _initialize_procfs ();
 void
-_initialize_procfs (void)
+_initialize_procfs ()
 {
   sigset_t set;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nto-tdep.c ./gdb/nto-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nto-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nto-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* nto-tdep.c - general QNX Neutrino target functionality.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    Contributed by QNX Software Systems Ltd.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nto-tdep.h ./gdb/nto-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/nto-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/nto-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* nto-tdep.h - QNX Neutrino target header.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    Contributed by QNX Software Systems Ltd.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/objc-lang.c ./gdb/objc-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/objc-lang.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/objc-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Objective-C language support routines for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Apple Computer, Inc.
    Written by Michael Snyder.
@@ -95,7 +95,7 @@ lookup_struct_typedef (const char *name,
       else 
 	error (_("No struct type named %s."), name);
     }
-  if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
+  if (SYMBOL_TYPE (sym)->code () != TYPE_CODE_STRUCT)
     {
       if (noerr)
 	return 0;
@@ -281,46 +281,6 @@ objc_demangle (const char *mangled, int
     return NULL;	/* Not an objc mangled name.  */
 }
 
-/* la_sniff_from_mangled_name for ObjC.  */
-
-static int
-objc_sniff_from_mangled_name (const char *mangled, char **demangled)
-{
-  *demangled = objc_demangle (mangled, 0);
-  return *demangled != NULL;
-}
-
-/* Determine if we are currently in the Objective-C dispatch function.
-   If so, get the address of the method function that the dispatcher
-   would call and use that as the function to step into instead.  Also
-   skip over the trampoline for the function (if any).  This is better
-   for the user since they are only interested in stepping into the
-   method function anyway.  */
-static CORE_ADDR 
-objc_skip_trampoline (struct frame_info *frame, CORE_ADDR stop_pc)
-{
-  struct gdbarch *gdbarch = get_frame_arch (frame);
-  CORE_ADDR real_stop_pc;
-  CORE_ADDR method_stop_pc;
-  
-  real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc);
-
-  if (real_stop_pc != 0)
-    find_objc_msgcall (real_stop_pc, &method_stop_pc);
-  else
-    find_objc_msgcall (stop_pc, &method_stop_pc);
-
-  if (method_stop_pc)
-    {
-      real_stop_pc = gdbarch_skip_trampoline_code
-		       (gdbarch, frame, method_stop_pc);
-      if (real_stop_pc == 0)
-	real_stop_pc = method_stop_pc;
-    }
-
-  return real_stop_pc;
-}
-
 
 /* Table mapping opcodes into strings for printing operators
    and precedences of the operators.  */
@@ -364,7 +324,10 @@ static const char *objc_extensions[] =
   ".m", NULL
 };
 
-extern const struct language_defn objc_language_defn = {
+/* Constant data representing the Objective-C language.  */
+
+extern const struct language_data objc_language_data =
+{
   "objective-c",		/* Language name */
   "Objective-C",
   language_objc,
@@ -374,44 +337,94 @@ extern const struct language_defn objc_l
   macro_expansion_c,
   objc_extensions,
   &exp_descriptor_standard,
-  c_parse,
-  null_post_parser,
-  c_printchar,		       /* Print a character constant */
-  c_printstr,		       /* Function to print string constant */
-  c_emit_char,
-  c_print_type,			/* Print a type using appropriate syntax */
-  c_print_typedef,		/* Print a typedef using appropriate syntax */
-  c_val_print,			/* Print a value using appropriate syntax */
-  c_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  objc_skip_trampoline, 	/* Language specific skip_trampoline */
   "self",		        /* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
-  basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  objc_demangle,		/* Language specific symbol demangler */
-  objc_sniff_from_mangled_name,
-  NULL,				/* Language specific
-				   class_name_from_physname */
   objc_op_print_tab,		/* Expression operators for printing */
   1,				/* C-style arrays */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  c_language_arch_info,
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  c_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
 
+/* Class representing the Objective-C language.  */
+
+class objc_language : public language_defn
+{
+public:
+  objc_language ()
+    : language_defn (language_objc, objc_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    c_language_arch_info (gdbarch, lai);
+  }
+
+  /* See language.h.  */
+  bool sniff_from_mangled_name (const char *mangled,
+				char **demangled) const override
+  {
+    *demangled = objc_demangle (mangled, 0);
+    return *demangled != NULL;
+  }
+
+  /* See language.h.  */
+
+  char *demangle (const char *mangled, int options) const override
+  {
+    return objc_demangle (mangled, options);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    c_print_type (type, varstring, stream, show, level, flags);
+  }
+
+  /* See language.h.  */
+
+  CORE_ADDR skip_trampoline (struct frame_info *frame,
+			     CORE_ADDR stop_pc) const override
+  {
+    struct gdbarch *gdbarch = get_frame_arch (frame);
+    CORE_ADDR real_stop_pc;
+    CORE_ADDR method_stop_pc;
+
+    /* Determine if we are currently in the Objective-C dispatch function.
+       If so, get the address of the method function that the dispatcher
+       would call and use that as the function to step into instead.  Also
+       skip over the trampoline for the function (if any).  This is better
+       for the user since they are only interested in stepping into the
+       method function anyway.  */
+
+    real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc);
+
+    if (real_stop_pc != 0)
+      find_objc_msgcall (real_stop_pc, &method_stop_pc);
+    else
+      find_objc_msgcall (stop_pc, &method_stop_pc);
+
+    if (method_stop_pc)
+      {
+	real_stop_pc = gdbarch_skip_trampoline_code
+	  (gdbarch, frame, method_stop_pc);
+	if (real_stop_pc == 0)
+	  real_stop_pc = method_stop_pc;
+      }
+
+    return real_stop_pc;
+  }
+};
+
+/* Single instance of the class representing the Objective-C language.  */
+
+static objc_language objc_language_defn;
+
 /*
  * ObjC:
  * Following functions help construct Objective-C message calls.
@@ -1332,8 +1345,9 @@ find_objc_msgcall (CORE_ADDR pc, CORE_AD
   return 0;
 }
 
+void _initialize_objc_language ();
 void
-_initialize_objc_language (void)
+_initialize_objc_language ()
 {
   add_info ("selectors", info_selectors_command,
 	    _("All Objective-C selectors, or those matching REGEXP."));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/objc-lang.h ./gdb/objc-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/objc-lang.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/objc-lang.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Objective-C language support definitions for GDB, the GNU debugger.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    Contributed by Apple Computer, Inc.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/objfile-flags.h ./gdb/objfile-flags.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/objfile-flags.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/objfile-flags.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definition of objfile flags.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/objfiles.c ./gdb/objfiles.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/objfiles.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/objfiles.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB routines for manipulating objfiles.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
@@ -54,6 +54,7 @@
 #include "btrace.h"
 #include "gdbsupport/pathstuff.h"
 
+#include <algorithm>
 #include <vector>
 
 /* Keep a registry of per-objfile data-pointers required by other GDB
@@ -371,31 +372,6 @@ objfile::objfile (bfd *abfd, const char
     }
 
   per_bfd = get_objfile_bfd_data (this, abfd);
-
-  /* Add this file onto the tail of the linked list of other such files.  */
-
-  if (object_files == NULL)
-    object_files = this;
-  else
-    {
-      struct objfile *last_one;
-
-      for (last_one = object_files;
-	   last_one->next;
-	   last_one = last_one->next);
-      last_one->next = this;
-    }
-
-  /* Rebuild section map next time we need it.  */
-  get_objfile_pspace_data (pspace)->new_objfiles_available = 1;
-}
-
-/* Retrieve the gdbarch associated with OBJFILE.  */
-
-struct gdbarch *
-get_objfile_arch (const struct objfile *objfile)
-{
-  return objfile->per_bfd->gdbarch;
 }
 
 /* If there is a valid and known entry point, function fills *ENTRY_P with it
@@ -407,9 +383,9 @@ entry_point_address_query (CORE_ADDR *en
   if (symfile_objfile == NULL || !symfile_objfile->per_bfd->ei.entry_point_p)
     return 0;
 
+  int idx = symfile_objfile->per_bfd->ei.the_bfd_section_index;
   *entry_p = (symfile_objfile->per_bfd->ei.entry_point
-	      + ANOFFSET (symfile_objfile->section_offsets,
-			  symfile_objfile->per_bfd->ei.the_bfd_section_index));
+	      + symfile_objfile->section_offsets[idx]);
 
   return 1;
 }
@@ -473,54 +449,9 @@ separate_debug_iterator::operator++ ()
   return *this;
 }
 
-/* Unlink OBJFILE from the list of known objfiles.  */
-
-static void
-unlink_objfile (struct objfile *objfile)
-{
-  struct objfile **objpp;
-
-  for (objpp = &object_files; *objpp != NULL; objpp = &((*objpp)->next))
-    {
-      if (*objpp == objfile)
-	{
-	  *objpp = (*objpp)->next;
-	  objfile->next = NULL;
-	  return;
-	}
-    }
-
-  internal_error (__FILE__, __LINE__,
-		  _("unlink_objfile: objfile already unlinked"));
-}
-
-/* Put one object file before a specified on in the global list.
-   This can be used to make sure an object file is destroyed before
-   another when using objfiles_safe to free all objfiles.  */
-static void
-put_objfile_before (struct objfile *objfile, struct objfile *before_this)
-{
-  struct objfile **objp;
-
-  unlink_objfile (objfile);
-  
-  for (objp = &object_files; *objp != NULL; objp = &((*objp)->next))
-    {
-      if (*objp == before_this)
-	{
-	  objfile->next = *objp;
-	  *objp = objfile;
-	  return;
-	}
-    }
-  
-  internal_error (__FILE__, __LINE__,
-		  _("put_objfile_before: before objfile not in list"));
-}
-
 /* Add OBJFILE as a separate debug objfile of PARENT.  */
 
-void
+static void
 add_separate_debug_objfile (struct objfile *objfile, struct objfile *parent)
 {
   gdb_assert (objfile && parent);
@@ -535,10 +466,35 @@ add_separate_debug_objfile (struct objfi
   objfile->separate_debug_objfile_backlink = parent;
   objfile->separate_debug_objfile_link = parent->separate_debug_objfile;
   parent->separate_debug_objfile = objfile;
+}
 
-  /* Put the separate debug object before the normal one, this is so that
-     usage of objfiles_safe will stay safe.  */
-  put_objfile_before (objfile, parent);
+/* See objfiles.h.  */
+
+objfile *
+objfile::make (bfd *bfd_, const char *name_, objfile_flags flags_,
+	       objfile *parent)
+{
+  objfile *result = new objfile (bfd_, name_, flags_);
+  if (parent != nullptr)
+    add_separate_debug_objfile (result, parent);
+
+  /* Using std::make_shared might be a bit nicer here, but that would
+     require making the constructor public.  */
+  current_program_space->add_objfile (std::shared_ptr<objfile> (result),
+				      parent);
+
+  /* Rebuild section map next time we need it.  */
+  get_objfile_pspace_data (current_program_space)->new_objfiles_available = 1;
+
+  return result;
+}
+
+/* See objfiles.h.  */
+
+void
+objfile::unlink ()
+{
+  current_program_space->remove_objfile (this);
 }
 
 /* Free all separate debug objfile of OBJFILE, but don't free OBJFILE
@@ -552,7 +508,7 @@ free_objfile_separate_debug (struct objf
   for (child = objfile->separate_debug_objfile; child;)
     {
       struct objfile *next_child = child->separate_debug_objfile_link;
-      delete child;
+      child->unlink ();
       child = next_child;
     }
 }
@@ -628,13 +584,6 @@ objfile::~objfile ()
   else
     delete per_bfd;
 
-  /* Remove it from the chain of all objfiles.  */
-
-  unlink_objfile (this);
-
-  if (this == symfile_objfile)
-    symfile_objfile = NULL;
-
   /* Before the symbol table code was redone to make it easier to
      selectively load and remove information particular to a specific
      linkage unit, gdb used to do these things whenever the monolithic
@@ -663,28 +612,13 @@ objfile::~objfile ()
   get_objfile_pspace_data (pspace)->section_map_dirty = 1;
 }
 
-/* Free all the object files at once and clean up their users.  */
-
-void
-free_all_objfiles (void)
-{
-  struct so_list *so;
-
-  /* Any objfile reference would become stale.  */
-  for (so = master_so_list (); so; so = so->next)
-    gdb_assert (so->objfile == NULL);
-
-  for (objfile *objfile : current_program_space->objfiles_safe ())
-    delete objfile;
-  clear_symtab_users (0);
-}
 
 /* A helper function for objfile_relocate1 that relocates a single
    symbol.  */
 
 static void
 relocate_one_symbol (struct symbol *sym, struct objfile *objfile,
-		     struct section_offsets *delta)
+		     const section_offsets &delta)
 {
   fixup_symbol_section (sym, objfile);
 
@@ -698,7 +632,7 @@ relocate_one_symbol (struct symbol *sym,
     {
       SET_SYMBOL_VALUE_ADDRESS (sym,
 				SYMBOL_VALUE_ADDRESS (sym)
-				+ ANOFFSET (delta, SYMBOL_SECTION (sym)));
+				+ delta[SYMBOL_SECTION (sym)]);
     }
 }
 
@@ -708,19 +642,16 @@ relocate_one_symbol (struct symbol *sym,
 
 static int
 objfile_relocate1 (struct objfile *objfile, 
-		   const struct section_offsets *new_offsets)
+		   const section_offsets &new_offsets)
 {
-  struct section_offsets *delta =
-    ((struct section_offsets *) 
-     alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
+  section_offsets delta (objfile->section_offsets.size ());
 
   int something_changed = 0;
 
-  for (int i = 0; i < objfile->num_sections; ++i)
+  for (int i = 0; i < objfile->section_offsets.size (); ++i)
     {
-      delta->offsets[i] =
-	ANOFFSET (new_offsets, i) - ANOFFSET (objfile->section_offsets, i);
-      if (ANOFFSET (delta, i) != 0)
+      delta[i] = new_offsets[i] - objfile->section_offsets[i];
+      if (delta[i] != 0)
 	something_changed = 1;
     }
   if (!something_changed)
@@ -739,9 +670,7 @@ objfile_relocate1 (struct objfile *objfi
 	    if (l)
 	      {
 		for (int i = 0; i < l->nitems; ++i)
-		  l->item[i].pc += ANOFFSET (delta,
-					     COMPUNIT_BLOCK_LINE_SECTION
-					     (cust));
+		  l->item[i].pc += delta[COMPUNIT_BLOCK_LINE_SECTION (cust)];
 	      }
 	  }
       }
@@ -752,8 +681,7 @@ objfile_relocate1 (struct objfile *objfi
 	int block_line_section = COMPUNIT_BLOCK_LINE_SECTION (cust);
 
 	if (BLOCKVECTOR_MAP (bv))
-	  addrmap_relocate (BLOCKVECTOR_MAP (bv),
-			    ANOFFSET (delta, block_line_section));
+	  addrmap_relocate (BLOCKVECTOR_MAP (bv), delta[block_line_section]);
 
 	for (int i = 0; i < BLOCKVECTOR_NBLOCKS (bv); ++i)
 	  {
@@ -762,16 +690,14 @@ objfile_relocate1 (struct objfile *objfi
 	    struct mdict_iterator miter;
 
 	    b = BLOCKVECTOR_BLOCK (bv, i);
-	    BLOCK_START (b) += ANOFFSET (delta, block_line_section);
-	    BLOCK_END (b) += ANOFFSET (delta, block_line_section);
+	    BLOCK_START (b) += delta[block_line_section];
+	    BLOCK_END (b) += delta[block_line_section];
 
 	    if (BLOCK_RANGES (b) != nullptr)
 	      for (int j = 0; j < BLOCK_NRANGES (b); j++)
 		{
-		  BLOCK_RANGE_START (b, j)
-		    += ANOFFSET (delta, block_line_section);
-		  BLOCK_RANGE_END (b, j) += ANOFFSET (delta,
-						      block_line_section);
+		  BLOCK_RANGE_START (b, j) += delta[block_line_section];
+		  BLOCK_RANGE_END (b, j) += delta[block_line_section];
 		}
 
 	    /* We only want to iterate over the local symbols, not any
@@ -799,8 +725,8 @@ objfile_relocate1 (struct objfile *objfi
   {
     int i;
 
-    for (i = 0; i < objfile->num_sections; ++i)
-      (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i);
+    for (i = 0; i < objfile->section_offsets.size (); ++i)
+      objfile->section_offsets[i] = new_offsets[i];
   }
 
   /* Rebuild section map next time we need it.  */
@@ -831,7 +757,7 @@ objfile_relocate1 (struct objfile *objfi
 
 void
 objfile_relocate (struct objfile *objfile,
-		  const struct section_offsets *new_offsets)
+		  const section_offsets &new_offsets)
 {
   int changed = 0;
 
@@ -850,15 +776,13 @@ objfile_relocate (struct objfile *objfil
 
       addr_info_make_relative (&objfile_addrs, debug_objfile->obfd);
 
-      gdb_assert (debug_objfile->num_sections
+      gdb_assert (debug_objfile->section_offsets.size ()
 		  == gdb_bfd_count_sections (debug_objfile->obfd));
-      std::vector<struct section_offsets>
-	new_debug_offsets (SIZEOF_N_SECTION_OFFSETS (debug_objfile->num_sections));
-      relative_addr_info_to_section_offsets (new_debug_offsets.data (),
-					     debug_objfile->num_sections,
-					     objfile_addrs);
+      section_offsets new_debug_offsets
+	(debug_objfile->section_offsets.size ());
+      relative_addr_info_to_section_offsets (new_debug_offsets, objfile_addrs);
 
-      changed |= objfile_relocate1 (debug_objfile, new_debug_offsets.data ());
+      changed |= objfile_relocate1 (debug_objfile, new_debug_offsets);
     }
 
   /* Relocate breakpoints as necessary, after things are relocated.  */
@@ -873,14 +797,7 @@ objfile_relocate (struct objfile *objfil
 static int
 objfile_rebase1 (struct objfile *objfile, CORE_ADDR slide)
 {
-  struct section_offsets *new_offsets =
-    ((struct section_offsets *)
-     alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
-  int i;
-
-  for (i = 0; i < objfile->num_sections; ++i)
-    new_offsets->offsets[i] = slide;
-
+  section_offsets new_offsets (objfile->section_offsets.size (), slide);
   return objfile_relocate1 (objfile, new_offsets);
 }
 
@@ -984,7 +901,7 @@ objfile_purge_solibs (void)
 	 be soon.  */
 
       if (!(objf->flags & OBJF_USERLOADED) && (objf->flags & OBJF_SHARED))
-	delete objf;
+	objf->unlink ();
     }
 }
 
@@ -1207,7 +1124,7 @@ filter_overlapping_sections (struct obj_
 
 	      const CORE_ADDR sect2_endaddr = obj_section_endaddr (sect2);
 
-	      struct gdbarch *const gdbarch = get_objfile_arch (objf1);
+	      struct gdbarch *const gdbarch = objf1->arch ();
 
 	      complaint (_("unexpected overlap between:\n"
 			   " (A) section `%s' from `%s' [%s, %s)\n"
@@ -1386,16 +1303,15 @@ inhibit_section_map_updates (struct prog
     (&get_objfile_pspace_data (pspace)->inhibit_updates, 1);
 }
 
-/* Return 1 if ADDR maps into one of the sections of OBJFILE and 0
-   otherwise.  */
+/* See objfiles.h.  */
 
-int
+bool
 is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile)
 {
   struct obj_section *osect;
 
   if (objfile == NULL)
-    return 0;
+    return false;
 
   ALL_OBJFILE_OSECTIONS (objfile, osect)
     {
@@ -1404,12 +1320,14 @@ is_addr_in_objfile (CORE_ADDR addr, cons
 
       if (obj_section_addr (osect) <= addr
 	  && addr < obj_section_endaddr (osect))
-	return 1;
+	return true;
     }
-  return 0;
+  return false;
 }
 
-int
+/* See objfiles.h.  */
+
+bool
 shared_objfile_contains_address_p (struct program_space *pspace,
 				   CORE_ADDR address)
 {
@@ -1417,10 +1335,10 @@ shared_objfile_contains_address_p (struc
     {
       if ((objfile->flags & OBJF_SHARED) != 0
 	  && is_addr_in_objfile (address, objfile))
-	return 1;
+	return true;
     }
 
-  return 0;
+  return false;
 }
 
 /* The default implementation for the "iterate_over_objfiles_in_search_order"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/objfiles.h ./gdb/objfiles.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/objfiles.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/objfiles.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for symbol file management in GDB.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -28,12 +28,15 @@
 #include "registry.h"
 #include "gdb_bfd.h"
 #include "psymtab.h"
+#include <atomic>
 #include <bitset>
 #include <vector>
 #include "gdbsupport/next-iterator.h"
 #include "gdbsupport/safe-iterator.h"
 #include "bcache.h"
 #include "gdbarch.h"
+#include "gdbsupport/refcounted-object.h"
+#include "jit.h"
 
 struct htab;
 struct objfile_data;
@@ -139,7 +142,7 @@ struct obj_section
 
 /* Relocation offset applied to S.  */
 #define obj_section_offset(s)						\
-  (((s)->objfile->section_offsets)->offsets[gdb_bfd_section_index ((s)->objfile->obfd, (s)->the_bfd_section)])
+  (((s)->objfile->section_offsets)[gdb_bfd_section_index ((s)->objfile->obfd, (s)->the_bfd_section)])
 
 /* The memory address of section S (vma + offset).  */
 #define obj_section_addr(s)				      		\
@@ -153,6 +156,37 @@ struct obj_section
    + bfd_section_size ((s)->the_bfd_section)				\
    + obj_section_offset (s))
 
+#define ALL_OBJFILE_OSECTIONS(objfile, osect)	\
+  for (osect = objfile->sections; osect < objfile->sections_end; osect++) \
+    if (osect->the_bfd_section == NULL)					\
+      {									\
+	/* Nothing.  */							\
+      }									\
+    else
+
+#define SECT_OFF_DATA(objfile) \
+     ((objfile->sect_index_data == -1) \
+      ? (internal_error (__FILE__, __LINE__, \
+			 _("sect_index_data not initialized")), -1)	\
+      : objfile->sect_index_data)
+
+#define SECT_OFF_RODATA(objfile) \
+     ((objfile->sect_index_rodata == -1) \
+      ? (internal_error (__FILE__, __LINE__, \
+			 _("sect_index_rodata not initialized")), -1)	\
+      : objfile->sect_index_rodata)
+
+#define SECT_OFF_TEXT(objfile) \
+     ((objfile->sect_index_text == -1) \
+      ? (internal_error (__FILE__, __LINE__, \
+			 _("sect_index_text not initialized")), -1)	\
+      : objfile->sect_index_text)
+
+/* Sometimes the .bss section is missing from the objfile, so we don't
+   want to die here.  Let the users of SECT_OFF_BSS deal with an
+   uninitialized section index.  */
+#define SECT_OFF_BSS(objfile) (objfile)->sect_index_bss
+
 /* The "objstats" structure provides a place for gdb to record some
    interesting information about its internal state at runtime, on a
    per objfile basis, such as information about the number of symbols
@@ -242,13 +276,9 @@ struct objfile_per_bfd_storage
 
   auto_obstack storage_obstack;
 
-  /* Byte cache for file names.  */
+  /* String cache.  */
 
-  gdb::bcache filename_cache;
-
-  /* Byte cache for macros.  */
-
-  gdb::bcache macro_cache;
+  gdb::bcache string_cache;
 
   /* The gdbarch associated with the BFD.  Note that this gdbarch is
      determined solely from BFD information, without looking at target
@@ -394,9 +424,29 @@ private:
 
 struct objfile
 {
+private:
+
+  /* The only way to create an objfile is to call objfile::make.  */
   objfile (bfd *, const char *, objfile_flags);
+
+public:
+
+  /* Normally you should not call delete.  Instead, call 'unlink' to
+     remove it from the program space's list.  In some cases, you may
+     need to hold a reference to an objfile that is independent of its
+     existence on the program space's list; for this case, the
+     destructor must be public so that shared_ptr can reference
+     it.  */
   ~objfile ();
 
+  /* Create an objfile.  */
+  static objfile *make (bfd *bfd_, const char *name_, objfile_flags flags_,
+			objfile *parent = nullptr);
+
+  /* Remove an objfile from the current program space, and free
+     it.  */
+  void unlink ();
+
   DISABLE_COPY_AND_ASSIGN (objfile);
 
   /* A range adapter that makes it possible to iterate over all
@@ -470,12 +520,37 @@ struct objfile
     return separate_debug_range (this);
   }
 
+  CORE_ADDR text_section_offset () const
+  {
+    return section_offsets[SECT_OFF_TEXT (this)];
+  }
+
+  CORE_ADDR data_section_offset () const
+  {
+    return section_offsets[SECT_OFF_DATA (this)];
+  }
+
+  /* Intern STRING and return the unique copy.  The copy has the same
+     lifetime as the per-BFD object.  */
+  const char *intern (const char *str)
+  {
+    return (const char *) per_bfd->string_cache.insert (str, strlen (str) + 1);
+  }
+
+  /* Intern STRING and return the unique copy.  The copy has the same
+     lifetime as the per-BFD object.  */
+  const char *intern (const std::string &str)
+  {
+    return (const char *) per_bfd->string_cache.insert (str.c_str (),
+							str.size () + 1);
+  }
 
-  /* All struct objfile's are chained together by their next pointers.
-     The program space field "objfiles"  (frequently referenced via
-     the macro "object_files") points to the first link in this chain.  */
+  /* Retrieve the gdbarch associated with this objfile.  */
+  struct gdbarch *arch () const
+  {
+    return per_bfd->gdbarch;
+  }
 
-  struct objfile *next = nullptr;
 
   /* The object file's original name as specified by the user,
      made absolute, and tilde-expanded.  However, it is not canonicalized
@@ -544,14 +619,12 @@ struct objfile
   /* Set of relocation offsets to apply to each section.
      The table is indexed by the_bfd_section->index, thus it is generally
      as large as the number of sections in the binary.
-     The table is stored on the objfile_obstack.
 
      These offsets indicate that all symbols (including partial and
      minimal symbols) which have been read have been relocated by this
      much.  Symbols which are yet to be read need to be relocated by it.  */
 
-  struct section_offsets *section_offsets = nullptr;
-  int num_sections = 0;
+  ::section_offsets section_offsets;
 
   /* Indexes in the section_offsets array.  These are initialized by the
      *_symfile_offsets() family of functions (som_symfile_offsets,
@@ -625,11 +698,37 @@ struct objfile
      store these here rather than in struct block.  Static links must be
      allocated on the objfile's obstack.  */
   htab_up static_links;
+
+  /* JIT-related data for this objfile, if the objfile is a JITer;
+     that is, it produces JITed objfiles.  */
+  std::unique_ptr<jiter_objfile_data> jiter_data = nullptr;
+
+  /* JIT-related data for this objfile, if the objfile is JITed;
+     that is, it was produced by a JITer.  */
+  std::unique_ptr<jited_objfile_data> jited_data = nullptr;
+
+  /* A flag that is set to true if the JIT interface symbols are not
+     found in this objfile, so that we can skip the symbol lookup the
+     next time.  If an objfile does not have the symbols, it will
+     never have them.  */
+  bool skip_jit_symbol_lookup = false;
 };
 
-/* Declarations for functions defined in objfiles.c */
+/* A deleter for objfile.  */
 
-extern struct gdbarch *get_objfile_arch (const struct objfile *);
+struct objfile_deleter
+{
+  void operator() (objfile *ptr) const
+  {
+    ptr->unlink ();
+  }
+};
+
+/* A unique pointer that holds an objfile.  */
+
+typedef std::unique_ptr<objfile, objfile_deleter> objfile_up;
+
+/* Declarations for functions defined in objfiles.c */
 
 extern int entry_point_address_query (CORE_ADDR *entry_p);
 
@@ -637,13 +736,9 @@ extern CORE_ADDR entry_point_address (vo
 
 extern void build_objfile_section_table (struct objfile *);
 
-extern void add_separate_debug_objfile (struct objfile *, struct objfile *);
-
 extern void free_objfile_separate_debug (struct objfile *);
 
-extern void free_all_objfiles (void);
-
-extern void objfile_relocate (struct objfile *, const struct section_offsets *);
+extern void objfile_relocate (struct objfile *, const section_offsets &);
 extern void objfile_rebase (struct objfile *, CORE_ADDR);
 
 extern int objfile_has_partial_symbols (struct objfile *objfile);
@@ -661,13 +756,16 @@ extern void objfile_set_sym_fns (struct
 
 extern void objfiles_changed (void);
 
-extern int is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile);
+/* Return true if ADDR maps into one of the sections of OBJFILE and false
+   otherwise.  */
+
+extern bool is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile);
 
 /* Return true if ADDRESS maps into one of the sections of a
    OBJF_SHARED objfile of PSPACE and false otherwise.  */
 
-extern int shared_objfile_contains_address_p (struct program_space *pspace,
-					      CORE_ADDR address);
+extern bool shared_objfile_contains_address_p (struct program_space *pspace,
+                                               CORE_ADDR address);
 
 /* This operation deletes all objfile entries that represent solibs that
    weren't explicitly loaded by the user, via e.g., the add-symbol-file
@@ -713,42 +811,6 @@ extern void default_iterate_over_objfile
   (struct gdbarch *gdbarch,
    iterate_over_objfiles_in_search_order_cb_ftype *cb,
    void *cb_data, struct objfile *current_objfile);
-
-
-#define ALL_OBJFILE_OSECTIONS(objfile, osect)	\
-  for (osect = objfile->sections; osect < objfile->sections_end; osect++) \
-    if (osect->the_bfd_section == NULL)					\
-      {									\
-	/* Nothing.  */							\
-      }									\
-    else
-
-#define SECT_OFF_DATA(objfile) \
-     ((objfile->sect_index_data == -1) \
-      ? (internal_error (__FILE__, __LINE__, \
-			 _("sect_index_data not initialized")), -1)	\
-      : objfile->sect_index_data)
-
-#define SECT_OFF_RODATA(objfile) \
-     ((objfile->sect_index_rodata == -1) \
-      ? (internal_error (__FILE__, __LINE__, \
-			 _("sect_index_rodata not initialized")), -1)	\
-      : objfile->sect_index_rodata)
-
-#define SECT_OFF_TEXT(objfile) \
-     ((objfile->sect_index_text == -1) \
-      ? (internal_error (__FILE__, __LINE__, \
-			 _("sect_index_text not initialized")), -1)	\
-      : objfile->sect_index_text)
-
-/* Sometimes the .bss section is missing from the objfile, so we don't
-   want to die here.  Let the users of SECT_OFF_BSS deal with an
-   uninitialized section index.  */
-#define SECT_OFF_BSS(objfile) (objfile)->sect_index_bss
-
-/* Answer whether there is more than one object file loaded.  */
-
-#define MULTI_OBJFILE_P() (object_files && object_files->next)
 
 /* Reset the per-BFD storage area on OBJ.  */
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/obsd-nat.c ./gdb/obsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/obsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/obsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for OpenBSD.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -59,12 +59,12 @@ obsd_nat_target::update_thread_list ()
     {
       ptid_t ptid = ptid_t (pid, pts.pts_tid, 0);
 
-      if (!in_thread_list (ptid))
+      if (!in_thread_list (this, ptid))
 	{
 	  if (inferior_ptid.lwp () == 0)
-	    thread_change_ptid (inferior_ptid, ptid);
+	    thread_change_ptid (this, inferior_ptid, ptid);
 	  else
-	    add_thread (ptid);
+	    add_thread (this, ptid);
 	}
 
       if (ptrace (PT_GET_THREAD_NEXT, pid, (caddr_t)&pts, sizeof pts) == -1)
@@ -147,12 +147,12 @@ obsd_nat_target::wait (ptid_t ptid, stru
 	}
 
       ptid = ptid_t (pid, pe.pe_tid, 0);
-      if (!in_thread_list (ptid))
+      if (!in_thread_list (this, ptid))
 	{
 	  if (inferior_ptid.lwp () == 0)
-	    thread_change_ptid (inferior_ptid, ptid);
+	    thread_change_ptid (this, inferior_ptid, ptid);
 	  else
-	    add_thread (ptid);
+	    add_thread (this, ptid);
 	}
     }
 
@@ -161,3 +161,66 @@ obsd_nat_target::wait (ptid_t ptid, stru
 }
 
 #endif /* PT_GET_THREAD_FIRST */
+
+#ifdef PT_GET_PROCESS_STATE
+
+void
+obsd_nat_target::post_attach (int pid)
+{
+  ptrace_event_t pe;
+
+  /* Set the initial event mask.  */
+  memset (&pe, 0, sizeof pe);
+  pe.pe_set_event |= PTRACE_FORK;
+  if (ptrace (PT_SET_EVENT_MASK, pid,
+	      (PTRACE_TYPE_ARG3)&pe, sizeof pe) == -1)
+    perror_with_name (("ptrace"));
+}
+
+void
+obsd_nat_target::post_startup_inferior (ptid_t pid)
+{
+  ptrace_event_t pe;
+
+  /* Set the initial event mask.  */
+  memset (&pe, 0, sizeof pe);
+  pe.pe_set_event |= PTRACE_FORK;
+  if (ptrace (PT_SET_EVENT_MASK, pid.pid (),
+	      (PTRACE_TYPE_ARG3)&pe, sizeof pe) == -1)
+    perror_with_name (("ptrace"));
+}
+
+/* Target hook for follow_fork.  On entry and at return inferior_ptid is
+   the ptid of the followed inferior.  */
+
+bool
+obsd_nat_target::follow_fork (bool follow_child, bool detach_fork)
+{
+  if (!follow_child)
+    {
+      struct thread_info *tp = inferior_thread ();
+      pid_t child_pid = tp->pending_follow.value.related_pid.pid ();
+
+      /* Breakpoints have already been detached from the child by
+	 infrun.c.  */
+
+      if (ptrace (PT_DETACH, child_pid, (PTRACE_TYPE_ARG3)1, 0) == -1)
+	perror_with_name (("ptrace"));
+    }
+
+  return false;
+}
+
+int
+obsd_nat_target::insert_fork_catchpoint (int pid)
+{
+  return 0;
+}
+
+int
+obsd_nat_target::remove_fork_catchpoint (int pid)
+{
+  return 0;
+}
+
+#endif /* PT_GET_PROCESS_STATE */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/obsd-nat.h ./gdb/obsd-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/obsd-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/obsd-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for OpenBSD.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -28,6 +28,18 @@ class obsd_nat_target : public inf_ptrac
   std::string pid_to_str (ptid_t) override;
   void update_thread_list () override;
   ptid_t wait (ptid_t, struct target_waitstatus *, int) override;
+
+#ifdef PT_GET_PROCESS_STATE
+  bool follow_fork (bool, bool) override;
+
+  int insert_fork_catchpoint (int) override;
+
+  int remove_fork_catchpoint (int) override;
+
+  void post_startup_inferior (ptid_t) override;
+
+  void post_attach (int) override;
+#endif
 };
 
 #endif /* obsd-nat.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/obsd-tdep.c ./gdb/obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/obsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/obsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,6 +18,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
+#include "auxv.h"
 #include "frame.h"
 #include "symtab.h"
 #include "objfiles.h"
@@ -289,32 +290,6 @@ obsd_gdb_signal_to_target (struct gdbarc
   return -1;
 }
 
-static int
-obsd_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr,
-		 gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
-{
-  struct type *int_type = builtin_type (gdbarch)->builtin_int;
-  struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
-  const int sizeof_auxv_type = TYPE_LENGTH (int_type);
-  const int sizeof_auxv_val = TYPE_LENGTH (ptr_type);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  gdb_byte *ptr = *readptr;
-
-  if (endptr == ptr)
-    return 0;
-
-  if (endptr - ptr < 2 * sizeof_auxv_val)
-    return -1;
-
-  *typep = extract_unsigned_integer (ptr, sizeof_auxv_type, byte_order);
-  ptr += sizeof_auxv_val;	/* Alignment.  */
-  *valp = extract_unsigned_integer (ptr, sizeof_auxv_val, byte_order);
-  ptr += sizeof_auxv_val;
-
-  *readptr = ptr;
-  return 1;
-}
-
 void
 obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
@@ -323,6 +298,5 @@ obsd_init_abi (struct gdbarch_info info,
   set_gdbarch_gdb_signal_to_target (gdbarch,
 				    obsd_gdb_signal_to_target);
 
-  /* Unlike Linux, OpenBSD actually follows the ELF standard.  */
-  set_gdbarch_auxv_parse (gdbarch, obsd_auxv_parse);
+  set_gdbarch_auxv_parse (gdbarch, svr4_auxv_parse);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/obsd-tdep.h ./gdb/obsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/obsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/obsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/observable.c ./gdb/observable.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/observable.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/observable.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB Notifications to Observers.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -75,6 +75,7 @@ DEFINE_OBSERVABLE (inferior_call_post);
 DEFINE_OBSERVABLE (register_changed);
 DEFINE_OBSERVABLE (user_selected_context_changed);
 DEFINE_OBSERVABLE (source_styling_changed);
+DEFINE_OBSERVABLE (current_source_symtab_and_line_changed);
 
 } /* namespace observers */
 } /* namespace gdb */
@@ -86,8 +87,9 @@ show_observer_debug (struct ui_file *fil
   fprintf_filtered (file, _("Observer debugging is %s.\n"), value);
 }
 
+void _initialize_observer ();
 void
-_initialize_observer (void)
+_initialize_observer ()
 {
   add_setshow_zuinteger_cmd ("observer", class_maintenance,
 			     &gdb::observers::observer_debug, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/observable.h ./gdb/observable.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/observable.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/observable.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Observers
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,6 +27,7 @@ struct so_list;
 struct objfile;
 struct thread_info;
 struct inferior;
+struct process_stratum_target;
 struct trace_state_variable;
 
 namespace gdb
@@ -165,8 +166,9 @@ extern observable<struct gdbarch */* new
 
 /* The thread's ptid has changed.  The OLD_PTID parameter specifies
    the old value, and NEW_PTID specifies the new value.  */
-extern observable<ptid_t /* old_ptid */, ptid_t /* new_ptid */>
-    thread_ptid_changed;
+extern observable<process_stratum_target * /* target */,
+		  ptid_t /* old_ptid */, ptid_t /* new_ptid */>
+  thread_ptid_changed;
 
 /* The inferior INF has been added to the list of inferiors.  At
    this point, it might not be associated with any process.  */
@@ -241,6 +243,12 @@ extern observable<user_selected_what /*
    should be reconsulted.  */
 extern observable<> source_styling_changed;
 
+/* The CLI's notion of the current source has changed.  This differs
+   from user_selected_context_changed in that it is also set by the
+   "list" command.  */
+
+extern observable<> current_source_symtab_and_line_changed;
+
 } /* namespace observers */
 
 } /* namespace gdb */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/opencl-lang.c ./gdb/opencl-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/opencl-lang.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/opencl-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* OpenCL language support for GDB, the GNU debugger.
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    Contributed by Ken Werner <ken.werner@de.ibm.com>.
 
@@ -96,9 +96,9 @@ lookup_opencl_vector_type (struct gdbarc
     {
       LONGEST lowb, highb;
 
-      if (TYPE_CODE (types[i]) == TYPE_CODE_ARRAY && TYPE_VECTOR (types[i])
+      if (types[i]->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (types[i])
 	  && get_array_bounds (types[i], &lowb, &highb)
-	  && TYPE_CODE (TYPE_TARGET_TYPE (types[i])) == code
+	  && TYPE_TARGET_TYPE (types[i])->code () == code
 	  && TYPE_UNSIGNED (TYPE_TARGET_TYPE (types[i])) == flag_unsigned
 	  && TYPE_LENGTH (TYPE_TARGET_TYPE (types[i])) == el_length
 	  && TYPE_LENGTH (types[i]) == length
@@ -177,7 +177,7 @@ lval_func_read (struct value *v)
   LONGEST lowb = 0;
   LONGEST highb = 0;
 
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY
+  if (type->code () == TYPE_CODE_ARRAY
       && !get_array_bounds (type, &lowb, &highb))
     error (_("Could not determine the vector bounds"));
 
@@ -206,7 +206,7 @@ lval_func_write (struct value *v, struct
   LONGEST lowb = 0;
   LONGEST highb = 0;
 
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY
+  if (type->code () == TYPE_CODE_ARRAY
       && !get_array_bounds (type, &lowb, &highb))
     error (_("Could not determine the vector bounds"));
 
@@ -336,7 +336,7 @@ create_value (struct gdbarch *gdbarch, s
       /* Multiple components of the vector are requested which means the
 	 resulting type is a vector as well.  */
       struct type *dst_type =
-	lookup_opencl_vector_type (gdbarch, TYPE_CODE (elm_type),
+	lookup_opencl_vector_type (gdbarch, elm_type->code (),
 				   TYPE_LENGTH (elm_type),
 				   TYPE_UNSIGNED (elm_type), n);
 
@@ -497,7 +497,7 @@ opencl_logical_not (struct expression *e
   struct type *rettype;
   struct value *ret;
 
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
+  if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
     {
       struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type));
       LONGEST lowb, highb;
@@ -586,8 +586,8 @@ vector_relop (struct expression *exp, st
   type1 = check_typedef (value_type (val1));
   type2 = check_typedef (value_type (val2));
 
-  t1_is_vec = (TYPE_CODE (type1) == TYPE_CODE_ARRAY && TYPE_VECTOR (type1));
-  t2_is_vec = (TYPE_CODE (type2) == TYPE_CODE_ARRAY && TYPE_VECTOR (type2));
+  t1_is_vec = (type1->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type1));
+  t2_is_vec = (type2->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type2));
 
   if (!t1_is_vec || !t2_is_vec)
     error (_("Vector operations are not supported on scalar types"));
@@ -600,7 +600,7 @@ vector_relop (struct expression *exp, st
     error (_("Could not determine the vector bounds"));
 
   /* Check whether the vector types are compatible.  */
-  if (TYPE_CODE (eltype1) != TYPE_CODE (eltype2)
+  if (eltype1->code () != eltype2->code ()
       || TYPE_LENGTH (eltype1) != TYPE_LENGTH (eltype2)
       || TYPE_UNSIGNED (eltype1) != TYPE_UNSIGNED (eltype2)
       || lowb1 != lowb2 || highb1 != highb2)
@@ -647,11 +647,11 @@ opencl_value_cast (struct type *type, st
 
       to_type = check_typedef (type);
 
-      code1 = TYPE_CODE (to_type);
-      code2 = TYPE_CODE (check_typedef (value_type (arg)));
+      code1 = to_type->code ();
+      code2 = check_typedef (value_type (arg))->code ();
 
       if (code2 == TYPE_CODE_REF)
-	code2 = TYPE_CODE (check_typedef (value_type (coerce_ref (arg))));
+	code2 = check_typedef (value_type (coerce_ref(arg)))->code ();
 
       scalar = (code2 == TYPE_CODE_INT || code2 == TYPE_CODE_BOOL
 		|| code2 == TYPE_CODE_CHAR || code2 == TYPE_CODE_FLT
@@ -687,9 +687,9 @@ opencl_relop (struct expression *exp, st
   struct value *val;
   struct type *type1 = check_typedef (value_type (arg1));
   struct type *type2 = check_typedef (value_type (arg2));
-  int t1_is_vec = (TYPE_CODE (type1) == TYPE_CODE_ARRAY
+  int t1_is_vec = (type1->code () == TYPE_CODE_ARRAY
 		   && TYPE_VECTOR (type1));
-  int t2_is_vec = (TYPE_CODE (type2) == TYPE_CODE_ARRAY
+  int t2_is_vec = (type2->code () == TYPE_CODE_ARRAY
 		   && TYPE_VECTOR (type2));
 
   if (!t1_is_vec && !t2_is_vec)
@@ -710,7 +710,7 @@ opencl_relop (struct expression *exp, st
       struct value **v = t1_is_vec ? &arg2 : &arg1;
       struct type *t = t1_is_vec ? type2 : type1;
 
-      if (TYPE_CODE (t) != TYPE_CODE_FLT && !is_integral_type (t))
+      if (t->code () != TYPE_CODE_FLT && !is_integral_type (t))
 	error (_("Argument to operation not a number or boolean."));
 
       *v = opencl_value_cast (t1_is_vec ? type1 : type2, *v);
@@ -739,7 +739,7 @@ evaluate_subexp_opencl (struct type *exp
        scalar-to-vector widening.  */
     case BINOP_ASSIGN:
       (*pos)++;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       type1 = value_type (arg1);
       arg2 = evaluate_subexp (type1, exp, pos, noside);
 
@@ -784,7 +784,7 @@ evaluate_subexp_opencl (struct type *exp
     case BINOP_GEQ:
     case BINOP_LEQ:
       (*pos)++;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
 
       if (noside == EVAL_SKIP)
@@ -796,7 +796,7 @@ evaluate_subexp_opencl (struct type *exp
     /* Handle the logical unary operator not(!).  */
     case UNOP_LOGICAL_NOT:
       (*pos)++;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
 
       if (noside == EVAL_SKIP)
 	return value_from_longest (builtin_type (exp->gdbarch)->
@@ -808,11 +808,11 @@ evaluate_subexp_opencl (struct type *exp
     case BINOP_LOGICAL_AND:
     case BINOP_LOGICAL_OR:
       (*pos)++;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
 
       if (noside == EVAL_SKIP)
 	{
-	  evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	  evaluate_subexp (nullptr, exp, pos, noside);
 
 	  return value_from_longest (builtin_type (exp->gdbarch)->
 				     builtin_int, 1);
@@ -826,16 +826,15 @@ evaluate_subexp_opencl (struct type *exp
 	     Therefore we evaluate it once using EVAL_AVOID_SIDE_EFFECTS.  */
 	  int oldpos = *pos;
 
-	  arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
-				  EVAL_AVOID_SIDE_EFFECTS);
+	  arg2 = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
 	  *pos = oldpos;
 	  type1 = check_typedef (value_type (arg1));
 	  type2 = check_typedef (value_type (arg2));
 
-	  if ((TYPE_CODE (type1) == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
-	      || (TYPE_CODE (type2) == TYPE_CODE_ARRAY && TYPE_VECTOR (type2)))
+	  if ((type1->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
+	      || (type2->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type2)))
 	    {
-	      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
 
 	      return opencl_relop (exp, arg1, arg2, op);
 	    }
@@ -850,8 +849,8 @@ evaluate_subexp_opencl (struct type *exp
 	      if (op == BINOP_LOGICAL_OR)
 		tmp = !tmp;
 
-	      arg2 = evaluate_subexp (NULL_TYPE, exp, pos,
-				      tmp ? EVAL_SKIP : noside);
+	      arg2
+		= evaluate_subexp (nullptr, exp, pos, tmp ? EVAL_SKIP : noside);
 	      type1 = language_bool_type (exp->language_defn, exp->gdbarch);
 
 	      if (op == BINOP_LOGICAL_AND)
@@ -866,23 +865,23 @@ evaluate_subexp_opencl (struct type *exp
     /* Handle the ternary selection operator.  */
     case TERNOP_COND:
       (*pos)++;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+      arg1 = evaluate_subexp (nullptr, exp, pos, noside);
       type1 = check_typedef (value_type (arg1));
-      if (TYPE_CODE (type1) == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
+      if (type1->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
 	{
 	  struct value *arg3, *tmp, *ret;
 	  struct type *eltype2, *type3, *eltype3;
 	  int t2_is_vec, t3_is_vec, i;
 	  LONGEST lowb1, lowb2, lowb3, highb1, highb2, highb3;
 
-	  arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-	  arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	  arg2 = evaluate_subexp (nullptr, exp, pos, noside);
+	  arg3 = evaluate_subexp (nullptr, exp, pos, noside);
 	  type2 = check_typedef (value_type (arg2));
 	  type3 = check_typedef (value_type (arg3));
 	  t2_is_vec
-	    = TYPE_CODE (type2) == TYPE_CODE_ARRAY && TYPE_VECTOR (type2);
+	    = type2->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type2);
 	  t3_is_vec
-	    = TYPE_CODE (type3) == TYPE_CODE_ARRAY && TYPE_VECTOR (type3);
+	    = type3->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type3);
 
 	  /* Widen the scalar operand to a vector if necessary.  */
 	  if (t2_is_vec || !t3_is_vec)
@@ -911,7 +910,7 @@ Cannot perform conditional operation on
 	    error (_("Could not determine the vector bounds"));
 
 	  /* Throw an error if the types of arg2 or arg3 are incompatible.  */
-	  if (TYPE_CODE (eltype2) != TYPE_CODE (eltype3)
+	  if (eltype2->code () != eltype3->code ()
 	      || TYPE_LENGTH (eltype2) != TYPE_LENGTH (eltype3)
 	      || TYPE_UNSIGNED (eltype2) != TYPE_UNSIGNED (eltype3)
 	      || lowb2 != lowb3 || highb2 != highb3)
@@ -942,15 +941,15 @@ Cannot perform conditional operation on
 	  if (value_logical_not (arg1))
 	    {
 	      /* Skip the second operand.  */
-	      evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
+	      evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
 
-	      return evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	      return evaluate_subexp (nullptr, exp, pos, noside);
 	    }
 	  else
 	    {
 	      /* Skip the third operand.  */
-	      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-	      evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
+	      arg2 = evaluate_subexp (nullptr, exp, pos, noside);
+	      evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
 
 	      return arg2;
 	    }
@@ -963,7 +962,7 @@ Cannot perform conditional operation on
 	int tem = longest_to_int (exp->elts[pc + 1].longconst);
 
 	(*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
-	arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	arg1 = evaluate_subexp (nullptr, exp, pos, noside);
 	type1 = check_typedef (value_type (arg1));
 
 	if (noside == EVAL_SKIP)
@@ -971,7 +970,7 @@ Cannot perform conditional operation on
 	    return value_from_longest (builtin_type (exp->gdbarch)->
 				       builtin_int, 1);
 	  }
-	else if (TYPE_CODE (type1) == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
+	else if (type1->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
 	  {
 	    return opencl_component_ref (exp, arg1, &exp->elts[pc + 2].string,
 					 noside);
@@ -994,44 +993,6 @@ Cannot perform conditional operation on
   return evaluate_subexp_c (expect_type, exp, pos, noside);
 }
 
-/* Print OpenCL types.  */
-
-static void
-opencl_print_type (struct type *type, const char *varstring,
-		   struct ui_file *stream, int show, int level,
-		   const struct type_print_options *flags)
-{
-  /* We nearly always defer to C type printing, except that vector
-     types are considered primitive in OpenCL, and should always
-     be printed using their TYPE_NAME.  */
-  if (show > 0)
-    {
-      type = check_typedef (type);
-      if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
-	  && TYPE_NAME (type) != NULL)
-	show = 0;
-    }
-
-  c_print_type (type, varstring, stream, show, level, flags); 
-}
-
-static void
-opencl_language_arch_info (struct gdbarch *gdbarch,
-			   struct language_arch_info *lai)
-{
-  struct type **types = builtin_opencl_type (gdbarch);
-
-  /* Copy primitive types vector from gdbarch.  */
-  lai->primitive_type_vector = types;
-
-  /* Type of elements of strings.  */
-  lai->string_char_type = types [opencl_primitive_type_char];
-
-  /* Specifies the return type of logical and relational operations.  */
-  lai->bool_type_symbol = "int";
-  lai->bool_type_default = types [opencl_primitive_type_int];
-}
-
 const struct exp_descriptor exp_descriptor_opencl =
 {
   print_subexp_standard,
@@ -1042,7 +1003,8 @@ const struct exp_descriptor exp_descript
   evaluate_subexp_opencl
 };
 
-extern const struct language_defn opencl_language_defn =
+/* Constant data representing the OpenCL language.  */
+extern const struct language_data opencl_language_data =
 {
   "opencl",			/* Language name */
   "OpenCL C",
@@ -1053,44 +1015,66 @@ extern const struct language_defn opencl
   macro_expansion_c,
   NULL,
   &exp_descriptor_opencl,
-  c_parse,
-  null_post_parser,
-  c_printchar,			/* Print a character constant */
-  c_printstr,			/* Function to print string constant */
-  c_emit_char,			/* Print a single char */
-  opencl_print_type,		/* Print a type using appropriate syntax */
-  c_print_typedef,		/* Print a typedef using appropriate syntax */
-  c_val_print,			/* Print a value using appropriate syntax */
-  c_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  NULL,				/* Language specific skip_trampoline */
   NULL,                         /* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
-  basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  NULL,				/* Language specific symbol demangler */
-  NULL,
-  NULL,				/* Language specific
-				   class_name_from_physname */
   c_op_print_tab,		/* expression operators for printing */
   1,				/* c-style arrays */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  opencl_language_arch_info,
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  c_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
 
+/* Class representing the OpenCL language.  */
+
+class opencl_language : public language_defn
+{
+public:
+  opencl_language ()
+    : language_defn (language_opencl, opencl_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    struct type **types = builtin_opencl_type (gdbarch);
+
+    /* Copy primitive types vector from gdbarch.  */
+    lai->primitive_type_vector = types;
+
+    /* Type of elements of strings.  */
+    lai->string_char_type = types [opencl_primitive_type_char];
+
+    /* Specifies the return type of logical and relational operations.  */
+    lai->bool_type_symbol = "int";
+    lai->bool_type_default = types [opencl_primitive_type_int];
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    /* We nearly always defer to C type printing, except that vector types
+       are considered primitive in OpenCL, and should always be printed
+       using their TYPE_NAME.  */
+    if (show > 0)
+      {
+	type = check_typedef (type);
+	if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
+	    && type->name () != NULL)
+	  show = 0;
+      }
+
+    c_print_type (type, varstring, stream, show, level, flags);
+  }
+};
+
+/* Single instance of the OpenCL language class.  */
+
+static opencl_language opencl_language_defn;
+
 static void *
 build_opencl_types (struct gdbarch *gdbarch)
 {
@@ -1105,21 +1089,21 @@ build_opencl_types (struct gdbarch *gdba
 #define BUILD_OCL_VTYPES(TYPE)\
   types[opencl_primitive_type_##TYPE##2] \
     = init_vector_type (types[opencl_primitive_type_##TYPE], 2); \
-  TYPE_NAME (types[opencl_primitive_type_##TYPE##2]) = OCL_STRING(TYPE ## 2); \
+  types[opencl_primitive_type_##TYPE##2]->set_name (OCL_STRING(TYPE ## 2)); \
   types[opencl_primitive_type_##TYPE##3] \
     = init_vector_type (types[opencl_primitive_type_##TYPE], 3); \
-  TYPE_NAME (types[opencl_primitive_type_##TYPE##3]) = OCL_STRING(TYPE ## 3); \
+  types[opencl_primitive_type_##TYPE##3]->set_name (OCL_STRING(TYPE ## 3)); \
   TYPE_LENGTH (types[opencl_primitive_type_##TYPE##3]) \
     = 4 * TYPE_LENGTH (types[opencl_primitive_type_##TYPE]); \
   types[opencl_primitive_type_##TYPE##4] \
     = init_vector_type (types[opencl_primitive_type_##TYPE], 4); \
-  TYPE_NAME (types[opencl_primitive_type_##TYPE##4]) = OCL_STRING(TYPE ## 4); \
+  types[opencl_primitive_type_##TYPE##4]->set_name (OCL_STRING(TYPE ## 4)); \
   types[opencl_primitive_type_##TYPE##8] \
     = init_vector_type (types[opencl_primitive_type_##TYPE], 8); \
-  TYPE_NAME (types[opencl_primitive_type_##TYPE##8]) = OCL_STRING(TYPE ## 8); \
+  types[opencl_primitive_type_##TYPE##8]->set_name (OCL_STRING(TYPE ## 8)); \
   types[opencl_primitive_type_##TYPE##16] \
     = init_vector_type (types[opencl_primitive_type_##TYPE], 16); \
-  TYPE_NAME (types[opencl_primitive_type_##TYPE##16]) = OCL_STRING(TYPE ## 16)
+  types[opencl_primitive_type_##TYPE##16]->set_name (OCL_STRING(TYPE ## 16))
 
   types[opencl_primitive_type_char]
     = arch_integer_type (gdbarch, 8, 0, "char");
@@ -1178,8 +1162,9 @@ build_opencl_types (struct gdbarch *gdba
   return types;
 }
 
+void _initialize_opencl_language ();
 void
-_initialize_opencl_language (void)
+_initialize_opencl_language ()
 {
   opencl_type_data = gdbarch_data_register_post_init (build_opencl_types);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/or1k-linux-tdep.c ./gdb/or1k-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/or1k-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/or1k-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-dependent code for GNU/Linux on OpenRISC processors.
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -163,8 +163,9 @@ or1k_linux_init_abi (struct gdbarch_info
 
 /* Initialize OpenRISC Linux target support.  */
 
+void _initialize_or1k_linux_tdep ();
 void
-_initialize_or1k_linux_tdep (void)
+_initialize_or1k_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_or1k, 0, GDB_OSABI_LINUX,
 			  or1k_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/or1k-tdep.c ./gdb/or1k-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/or1k-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/or1k-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-dependent code for the 32-bit OpenRISC 1000, for the GDB.
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,7 +35,7 @@
 #include "arch-utils.h"
 #include "frame-unwind.h"
 #include "frame-base.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "trad-frame.h"
 #include "regset.h"
 #include "remote.h"
@@ -245,7 +245,7 @@ or1k_return_value (struct gdbarch *gdbar
 		   gdb_byte *readbuf, const gdb_byte *writebuf)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  enum type_code rv_type = TYPE_CODE (valtype);
+  enum type_code rv_type = valtype->code ();
   unsigned int rv_size = TYPE_LENGTH (valtype);
   int bpw = (gdbarch_tdep (gdbarch))->bytes_per_word;
 
@@ -633,9 +633,9 @@ or1k_push_dummy_call (struct gdbarch *gd
       struct value *arg = args[argnum];
       struct type *arg_type = check_typedef (value_type (arg));
       int len = TYPE_LENGTH (arg_type);
-      enum type_code typecode = TYPE_CODE (arg_type);
+      enum type_code typecode = arg_type->code ();
 
-      if (TYPE_VARARGS (func_type) && argnum >= TYPE_NFIELDS (func_type))
+      if (TYPE_VARARGS (func_type) && argnum >= func_type->num_fields ())
 	break; /* end or regular args, varargs go to stack.  */
 
       /* Extract the value, either a reference or the data.  */
@@ -723,7 +723,7 @@ or1k_push_dummy_call (struct gdbarch *gd
       struct value *arg = args[argnum];
       struct type *arg_type = check_typedef (value_type (arg));
       int len = TYPE_LENGTH (arg_type);
-      enum type_code typecode = TYPE_CODE (arg_type);
+      enum type_code typecode = arg_type->code ();
 
       if ((TYPE_CODE_STRUCT == typecode) || (TYPE_CODE_UNION == typecode)
 	  || (len > bpw * 2))
@@ -755,7 +755,7 @@ or1k_push_dummy_call (struct gdbarch *gd
       struct value *arg = args[argnum];
       struct type *arg_type = check_typedef (value_type (arg));
       int len = TYPE_LENGTH (arg_type);
-      enum type_code typecode = TYPE_CODE (arg_type);
+      enum type_code typecode = arg_type->code ();
       /* The EABI passes structures that do not fit in a register by
          reference.  In all other cases, pass the structure by value.  */
       if ((TYPE_CODE_STRUCT == typecode) || (TYPE_CODE_UNION == typecode)
@@ -1269,8 +1269,9 @@ or1k_dump_tdep (struct gdbarch *gdbarch,
 }
 
 
+void _initialize_or1k_tdep ();
 void
-_initialize_or1k_tdep (void)
+_initialize_or1k_tdep ()
 {
   /* Register this architecture.  */
   gdbarch_register (bfd_arch_or1k, or1k_gdbarch_init, or1k_dump_tdep);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/or1k-tdep.h ./gdb/or1k-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/or1k-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/or1k-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Definitions to target GDB to OpenRISC 1000 32-bit targets.
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/osabi.c ./gdb/osabi.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/osabi.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/osabi.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* OS ABI variant handling for GDB.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -72,6 +72,7 @@ static const struct osabi_names gdb_osab
   { "DJGPP", NULL },
   { "QNX-Neutrino", NULL },
   { "Cygwin", NULL },
+  { "Windows", NULL },
   { "AIX", NULL },
   { "DICOS", NULL },
   { "Darwin", NULL },
@@ -653,8 +654,9 @@ show_osabi (struct ui_file *file, int fr
 		      gdbarch_osabi_name (GDB_OSABI_DEFAULT));
 }
 
+void _initialize_gdb_osabi ();
 void
-_initialize_gdb_osabi (void)
+_initialize_gdb_osabi ()
 {
   if (strcmp (gdb_osabi_names[GDB_OSABI_INVALID].pretty, "<invalid>") != 0)
     internal_error
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/osabi.h ./gdb/osabi.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/osabi.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/osabi.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* OS ABI variant handling for GDB.
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
    
    This file is part of GDB.
 
@@ -19,6 +19,38 @@
 #ifndef OSABI_H
 #define OSABI_H
 
+/* * List of known OS ABIs.  If you change this, make sure to update the
+   table in osabi.c.  */
+enum gdb_osabi
+{
+  GDB_OSABI_UNKNOWN = 0,	/* keep this zero */
+  GDB_OSABI_NONE,
+
+  GDB_OSABI_SVR4,
+  GDB_OSABI_HURD,
+  GDB_OSABI_SOLARIS,
+  GDB_OSABI_LINUX,
+  GDB_OSABI_FREEBSD,
+  GDB_OSABI_NETBSD,
+  GDB_OSABI_OPENBSD,
+  GDB_OSABI_WINCE,
+  GDB_OSABI_GO32,
+  GDB_OSABI_QNXNTO,
+  GDB_OSABI_CYGWIN,
+  GDB_OSABI_WINDOWS,
+  GDB_OSABI_AIX,
+  GDB_OSABI_DICOS,
+  GDB_OSABI_DARWIN,
+  GDB_OSABI_SYMBIAN,
+  GDB_OSABI_OPENVMS,
+  GDB_OSABI_LYNXOS178,
+  GDB_OSABI_NEWLIB,
+  GDB_OSABI_SDE,
+  GDB_OSABI_PIKEOS,
+
+  GDB_OSABI_INVALID		/* keep this last */
+};
+
 /* Register an OS ABI sniffer.  Each arch/flavour may have more than
    one sniffer.  This is used to e.g. differentiate one OS's a.out from
    another.  The first sniffer to return something other than
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/osdata.c ./gdb/osdata.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/osdata.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/osdata.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Routines for handling XML generic OS data provided by target.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -289,8 +289,9 @@ info_osdata_command (const char *arg, in
   info_osdata (arg);
 }
 
+void _initialize_osdata ();
 void
-_initialize_osdata (void)
+_initialize_osdata ()
 {
   add_info ("os", info_osdata_command,
            _("Show OS data ARG."));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/osdata.h ./gdb/osdata.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/osdata.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/osdata.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Routines for handling XML generic OS data provided by target.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/parse.c ./gdb/parse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/parse.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/parse.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Parse expressions for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    Modified from expread.y by the Department of Computer Science at the
    State University of New York at Buffalo, 1991.
@@ -1098,7 +1098,7 @@ parse_exp_in_context (const char **strin
       struct symbol *func = block_linkage_function (block);
 
       if (func != NULL)
-        lang = language_def (SYMBOL_LANGUAGE (func));
+        lang = language_def (func->language ());
       if (lang == NULL || lang->la_language == language_unknown)
         lang = current_language;
     }
@@ -1119,7 +1119,7 @@ parse_exp_in_context (const char **strin
 
   try
     {
-      lang->la_parser (&ps);
+      lang->parser (&ps);
     }
   catch (const gdb_exception &except)
     {
@@ -1146,8 +1146,7 @@ parse_exp_in_context (const char **strin
   if (out_subexp)
     *out_subexp = subexp;
 
-  lang->la_post_parser (&result, void_context_p, ps.parse_completion,
-			tracker);
+  lang->post_parser (&result, void_context_p, ps.parse_completion, tracker);
 
   if (expressiondebug)
     dump_prefix_expression (result.get (), gdb_stdlog);
@@ -1241,14 +1240,6 @@ parse_expression_for_completion (const c
   return value_type (val);
 }
 
-/* A post-parser that does nothing.  */
-
-void
-null_post_parser (expression_up *exp, int void_context_p, int completin,
-		  innermost_block_tracker *tracker)
-{
-}
-
 /* Parse floating point value P of length LEN.
    Return false if invalid, true if valid.
    The successfully parsed number is stored in DATA in
@@ -1340,7 +1331,7 @@ operator_check_standard (struct expressi
 	  return 1;
 
 	/* Check objfile where is placed the code touching the variable.  */
-	objfile = lookup_objfile_from_block (block);
+	objfile = block_objfile (block);
 
 	type = SYMBOL_TYPE (symbol);
       }
@@ -1436,8 +1427,9 @@ increase_expout_size (struct expr_builde
     }
 }
 
+void _initialize_parse ();
 void
-_initialize_parse (void)
+_initialize_parse ()
 {
   add_setshow_zuinteger_cmd ("expression", class_maintenance,
 			     &expressiondebug,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/parser-defs.h ./gdb/parser-defs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/parser-defs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/parser-defs.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Parser definitions for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    Modified from expread.y by the Department of Computer Science at the
    State University of New York at Buffalo.
@@ -350,9 +350,6 @@ extern int operator_check_standard (stru
 
 extern const char *op_name_standard (enum exp_opcode);
 
-extern void null_post_parser (expression_up *, int, int,
-			      innermost_block_tracker *);
-
 extern bool parse_float (const char *p, int len,
 			 const struct type *type, gdb_byte *data);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-exp.c ./gdb/p-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-exp.c	2020-03-07 02:11:13.000000000 +0000
+++ ./gdb/p-exp.c	2021-05-21 02:00:06.000000000 +0000
@@ -1,21 +1,20 @@
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* Bison implementation for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   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/>.  */
 
@@ -28,13 +27,17 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -46,7 +49,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,14 +63,10 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
-
 
 
-/* Copy the first part of user declarations.  */
 
-/* Line 189 of yacc.c  */
+/* First part of user prologue.  */
 #line 44 "p-exp.y"
 
 
@@ -107,73 +106,89 @@ static void yyerror (const char *);
 
 static char *uptok (const char *, int);
 
+#line 110 "p-exp.c.tmp"
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTRPTR nullptr
+#   else
+#    define YY_NULLPTRPTR 0
+#   endif
+#  else
+#   define YY_NULLPTRPTR ((void*)0)
+#  endif
+# endif
 
-/* Line 189 of yacc.c  */
-#line 113 "p-exp.c.tmp"
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+#if YYDEBUG
+extern int yydebug;
 #endif
 
-
-/* Tokens.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     INT = 258,
-     FLOAT = 259,
-     STRING = 260,
-     FIELDNAME = 261,
-     COMPLETE = 262,
-     NAME = 263,
-     TYPENAME = 264,
-     NAME_OR_INT = 265,
-     STRUCT = 266,
-     CLASS = 267,
-     SIZEOF = 268,
-     COLONCOLON = 269,
-     ERROR = 270,
-     DOLLAR_VARIABLE = 271,
-     THIS = 272,
-     TRUEKEYWORD = 273,
-     FALSEKEYWORD = 274,
-     ABOVE_COMMA = 275,
-     ASSIGN = 276,
-     NOT = 277,
-     OR = 278,
-     XOR = 279,
-     ANDAND = 280,
-     NOTEQUAL = 281,
-     GEQ = 282,
-     LEQ = 283,
-     MOD = 284,
-     DIV = 285,
-     RSH = 286,
-     LSH = 287,
-     DECREMENT = 288,
-     INCREMENT = 289,
-     UNARY = 290,
-     ARROW = 291,
-     BLOCKNAME = 292
-   };
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    INT = 258,                     /* INT  */
+    FLOAT = 259,                   /* FLOAT  */
+    STRING = 260,                  /* STRING  */
+    FIELDNAME = 261,               /* FIELDNAME  */
+    COMPLETE = 262,                /* COMPLETE  */
+    NAME = 263,                    /* NAME  */
+    TYPENAME = 264,                /* TYPENAME  */
+    NAME_OR_INT = 265,             /* NAME_OR_INT  */
+    STRUCT = 266,                  /* STRUCT  */
+    CLASS = 267,                   /* CLASS  */
+    SIZEOF = 268,                  /* SIZEOF  */
+    COLONCOLON = 269,              /* COLONCOLON  */
+    ERROR = 270,                   /* ERROR  */
+    DOLLAR_VARIABLE = 271,         /* DOLLAR_VARIABLE  */
+    THIS = 272,                    /* THIS  */
+    TRUEKEYWORD = 273,             /* TRUEKEYWORD  */
+    FALSEKEYWORD = 274,            /* FALSEKEYWORD  */
+    ABOVE_COMMA = 275,             /* ABOVE_COMMA  */
+    ASSIGN = 276,                  /* ASSIGN  */
+    NOT = 277,                     /* NOT  */
+    OR = 278,                      /* OR  */
+    XOR = 279,                     /* XOR  */
+    ANDAND = 280,                  /* ANDAND  */
+    NOTEQUAL = 281,                /* NOTEQUAL  */
+    LEQ = 282,                     /* LEQ  */
+    GEQ = 283,                     /* GEQ  */
+    LSH = 284,                     /* LSH  */
+    RSH = 285,                     /* RSH  */
+    DIV = 286,                     /* DIV  */
+    MOD = 287,                     /* MOD  */
+    UNARY = 288,                   /* UNARY  */
+    INCREMENT = 289,               /* INCREMENT  */
+    DECREMENT = 290,               /* DECREMENT  */
+    ARROW = 291,                   /* ARROW  */
+    BLOCKNAME = 292                /* BLOCKNAME  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
 #endif
-/* Tokens.  */
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define INT 258
 #define FLOAT 259
 #define STRING 260
@@ -198,26 +213,22 @@ static char *uptok (const char *, int);
 #define XOR 279
 #define ANDAND 280
 #define NOTEQUAL 281
-#define GEQ 282
-#define LEQ 283
-#define MOD 284
-#define DIV 285
-#define RSH 286
-#define LSH 287
-#define DECREMENT 288
+#define LEQ 282
+#define GEQ 283
+#define LSH 284
+#define RSH 285
+#define DIV 286
+#define MOD 287
+#define UNARY 288
 #define INCREMENT 289
-#define UNARY 290
+#define DECREMENT 290
 #define ARROW 291
 #define BLOCKNAME 292
 
-
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
 #line 88 "p-exp.y"
 
     LONGEST lval;
@@ -243,19 +254,102 @@ typedef union YYSTYPE
     int *ivec;
   
 
+#line 258 "p-exp.c.tmp"
 
-/* Line 214 of yacc.c  */
-#line 249 "p-exp.c.tmp"
-} YYSTYPE;
+};
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
+extern YYSTYPE yylval;
 
-/* Line 264 of yacc.c  */
+int yyparse (void);
+
+
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_INT = 3,                        /* INT  */
+  YYSYMBOL_FLOAT = 4,                      /* FLOAT  */
+  YYSYMBOL_STRING = 5,                     /* STRING  */
+  YYSYMBOL_FIELDNAME = 6,                  /* FIELDNAME  */
+  YYSYMBOL_COMPLETE = 7,                   /* COMPLETE  */
+  YYSYMBOL_NAME = 8,                       /* NAME  */
+  YYSYMBOL_TYPENAME = 9,                   /* TYPENAME  */
+  YYSYMBOL_NAME_OR_INT = 10,               /* NAME_OR_INT  */
+  YYSYMBOL_STRUCT = 11,                    /* STRUCT  */
+  YYSYMBOL_CLASS = 12,                     /* CLASS  */
+  YYSYMBOL_SIZEOF = 13,                    /* SIZEOF  */
+  YYSYMBOL_COLONCOLON = 14,                /* COLONCOLON  */
+  YYSYMBOL_ERROR = 15,                     /* ERROR  */
+  YYSYMBOL_DOLLAR_VARIABLE = 16,           /* DOLLAR_VARIABLE  */
+  YYSYMBOL_THIS = 17,                      /* THIS  */
+  YYSYMBOL_TRUEKEYWORD = 18,               /* TRUEKEYWORD  */
+  YYSYMBOL_FALSEKEYWORD = 19,              /* FALSEKEYWORD  */
+  YYSYMBOL_20_ = 20,                       /* ','  */
+  YYSYMBOL_ABOVE_COMMA = 21,               /* ABOVE_COMMA  */
+  YYSYMBOL_ASSIGN = 22,                    /* ASSIGN  */
+  YYSYMBOL_NOT = 23,                       /* NOT  */
+  YYSYMBOL_OR = 24,                        /* OR  */
+  YYSYMBOL_XOR = 25,                       /* XOR  */
+  YYSYMBOL_ANDAND = 26,                    /* ANDAND  */
+  YYSYMBOL_27_ = 27,                       /* '='  */
+  YYSYMBOL_NOTEQUAL = 28,                  /* NOTEQUAL  */
+  YYSYMBOL_29_ = 29,                       /* '<'  */
+  YYSYMBOL_30_ = 30,                       /* '>'  */
+  YYSYMBOL_LEQ = 31,                       /* LEQ  */
+  YYSYMBOL_GEQ = 32,                       /* GEQ  */
+  YYSYMBOL_LSH = 33,                       /* LSH  */
+  YYSYMBOL_RSH = 34,                       /* RSH  */
+  YYSYMBOL_DIV = 35,                       /* DIV  */
+  YYSYMBOL_MOD = 36,                       /* MOD  */
+  YYSYMBOL_37_ = 37,                       /* '@'  */
+  YYSYMBOL_38_ = 38,                       /* '+'  */
+  YYSYMBOL_39_ = 39,                       /* '-'  */
+  YYSYMBOL_40_ = 40,                       /* '*'  */
+  YYSYMBOL_41_ = 41,                       /* '/'  */
+  YYSYMBOL_UNARY = 42,                     /* UNARY  */
+  YYSYMBOL_INCREMENT = 43,                 /* INCREMENT  */
+  YYSYMBOL_DECREMENT = 44,                 /* DECREMENT  */
+  YYSYMBOL_ARROW = 45,                     /* ARROW  */
+  YYSYMBOL_46_ = 46,                       /* '.'  */
+  YYSYMBOL_47_ = 47,                       /* '['  */
+  YYSYMBOL_48_ = 48,                       /* '('  */
+  YYSYMBOL_49_ = 49,                       /* '^'  */
+  YYSYMBOL_BLOCKNAME = 50,                 /* BLOCKNAME  */
+  YYSYMBOL_51_ = 51,                       /* ')'  */
+  YYSYMBOL_52_ = 52,                       /* ']'  */
+  YYSYMBOL_YYACCEPT = 53,                  /* $accept  */
+  YYSYMBOL_start = 54,                     /* start  */
+  YYSYMBOL_55_1 = 55,                      /* $@1  */
+  YYSYMBOL_normal_start = 56,              /* normal_start  */
+  YYSYMBOL_type_exp = 57,                  /* type_exp  */
+  YYSYMBOL_exp1 = 58,                      /* exp1  */
+  YYSYMBOL_exp = 59,                       /* exp  */
+  YYSYMBOL_field_exp = 60,                 /* field_exp  */
+  YYSYMBOL_61_2 = 61,                      /* $@2  */
+  YYSYMBOL_62_3 = 62,                      /* $@3  */
+  YYSYMBOL_arglist = 63,                   /* arglist  */
+  YYSYMBOL_64_4 = 64,                      /* $@4  */
+  YYSYMBOL_block = 65,                     /* block  */
+  YYSYMBOL_variable = 66,                  /* variable  */
+  YYSYMBOL_qualified_name = 67,            /* qualified_name  */
+  YYSYMBOL_ptype = 68,                     /* ptype  */
+  YYSYMBOL_type = 69,                      /* type  */
+  YYSYMBOL_typebase = 70,                  /* typebase  */
+  YYSYMBOL_name = 71,                      /* name  */
+  YYSYMBOL_name_not_typename = 72          /* name_not_typename  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
+
+/* Second part of user prologue.  */
 #line 112 "p-exp.y"
 
 /* YYSTYPE gets defined by %union */
@@ -269,39 +363,82 @@ static void push_current_type (void);
 static void pop_current_type (void);
 static int search_field;
 
+#line 367 "p-exp.c.tmp"
 
-/* Line 264 of yacc.c  */
-#line 275 "p-exp.c.tmp"
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef short int yytype_int16;
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -309,55 +446,100 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int8 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
 #else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
-#else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
 #endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if !defined yyoverflow
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
 
@@ -373,11 +555,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -385,8 +567,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -400,92 +582,93 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined xmalloc) \
-	     && (defined YYFREE || defined xfree)))
+             && (defined YYFREE || defined xfree)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC xmalloc
-#   if ! defined xmalloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xmalloc && ! defined EXIT_SUCCESS
 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE xfree
-#   if ! defined xfree && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xfree && ! defined EXIT_SUCCESS
 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYPTRDIFF_T yynewbytes;                                         \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
+      }                                                                 \
+    while (0)
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYPTRDIFF_T yyi;                      \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   383
+#define YYLAST   377
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  53
@@ -493,29 +676,33 @@ union yyalloc
 #define YYNNTS  20
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  77
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  126
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
 #define YYMAXUTOK   292
 
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex.  */
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      47,    51,    40,    38,    20,    39,    45,    41,     2,     2,
+      48,    51,    40,    38,    20,    39,    46,    41,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       29,    27,    30,     2,    37,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    46,     2,    52,    49,     2,     2,     2,     2,     2,
+       2,    47,     2,    52,    49,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -535,130 +722,103 @@ static const yytype_uint8 yytranslate[]
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    21,    22,    23,    24,    25,
       26,    28,    31,    32,    33,    34,    35,    36,    42,    43,
-      44,    48,    50
+      44,    45,    50
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint8 yyprhs[] =
-{
-       0,     0,     3,     4,     7,     9,    11,    13,    15,    19,
-      22,    25,    28,    31,    36,    41,    44,    47,    50,    54,
-      57,    58,    64,    65,    71,    72,    74,    78,    83,    87,
-      91,    92,    97,   101,   105,   109,   113,   117,   121,   125,
-     129,   133,   137,   141,   145,   149,   153,   157,   161,   163,
-     165,   167,   169,   171,   173,   175,   180,   185,   187,   189,
-     191,   195,   199,   203,   205,   208,   210,   212,   214,   217,
-     219,   222,   225,   227,   229,   231,   233,   235
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      54,     0,    -1,    -1,    55,    56,    -1,    58,    -1,    57,
-      -1,    69,    -1,    59,    -1,    58,    20,    59,    -1,    59,
-      49,    -1,    37,    59,    -1,    39,    59,    -1,    23,    59,
-      -1,    43,    47,    59,    51,    -1,    42,    47,    59,    51,
-      -1,    59,    45,    -1,    60,     6,    -1,    60,    71,    -1,
-      60,    71,     7,    -1,    60,     7,    -1,    -1,    59,    46,
-      61,    58,    52,    -1,    -1,    59,    47,    62,    63,    51,
-      -1,    -1,    59,    -1,    63,    20,    59,    -1,    69,    47,
-      59,    51,    -1,    47,    58,    51,    -1,    59,    40,    59,
-      -1,    -1,    59,    41,    64,    59,    -1,    59,    34,    59,
-      -1,    59,    33,    59,    -1,    59,    38,    59,    -1,    59,
-      39,    59,    -1,    59,    36,    59,    -1,    59,    35,    59,
-      -1,    59,    27,    59,    -1,    59,    28,    59,    -1,    59,
-      32,    59,    -1,    59,    31,    59,    -1,    59,    29,    59,
-      -1,    59,    30,    59,    -1,    59,    26,    59,    -1,    59,
-      25,    59,    -1,    59,    24,    59,    -1,    59,    22,    59,
-      -1,    18,    -1,    19,    -1,     3,    -1,    10,    -1,     4,
-      -1,    66,    -1,    16,    -1,    13,    47,    69,    51,    -1,
-      13,    47,    59,    51,    -1,     5,    -1,    17,    -1,    50,
-      -1,    65,    14,    71,    -1,    65,    14,    71,    -1,    70,
-      14,    71,    -1,    67,    -1,    14,    71,    -1,    72,    -1,
-      70,    -1,    68,    -1,    49,    70,    -1,     9,    -1,    11,
-      71,    -1,    12,    71,    -1,     8,    -1,    50,    -1,     9,
-      -1,    10,    -1,     8,    -1,    50,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+static const yytype_int16 yyrline[] =
 {
        0,   194,   194,   194,   203,   204,   207,   214,   215,   220,
      226,   232,   236,   240,   244,   249,   253,   271,   287,   293,
-     305,   303,   336,   333,   349,   350,   352,   356,   371,   377,
-     381,   381,   404,   408,   412,   416,   420,   424,   428,   434,
-     440,   446,   452,   458,   464,   468,   472,   476,   480,   487,
-     494,   502,   516,   524,   527,   542,   553,   557,   589,   617,
-     636,   649,   665,   681,   682,   715,   776,   787,   791,   793,
-     795,   800,   810,   811,   812,   813,   816,   817
+     305,   303,   337,   334,   350,   351,   353,   357,   372,   378,
+     382,   382,   405,   409,   413,   417,   421,   425,   429,   435,
+     441,   447,   453,   459,   465,   469,   473,   477,   481,   488,
+     495,   503,   517,   525,   528,   543,   554,   558,   590,   618,
+     637,   650,   666,   682,   683,   716,   777,   788,   792,   794,
+     796,   801,   811,   812,   813,   814,   817,   818
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "INT", "FLOAT", "STRING", "FIELDNAME",
-  "COMPLETE", "NAME", "TYPENAME", "NAME_OR_INT", "STRUCT", "CLASS",
-  "SIZEOF", "COLONCOLON", "ERROR", "DOLLAR_VARIABLE", "THIS",
-  "TRUEKEYWORD", "FALSEKEYWORD", "','", "ABOVE_COMMA", "ASSIGN", "NOT",
-  "OR", "XOR", "ANDAND", "'='", "NOTEQUAL", "'<'", "'>'", "GEQ", "LEQ",
-  "MOD", "DIV", "RSH", "LSH", "'@'", "'+'", "'-'", "'*'", "'/'",
-  "DECREMENT", "INCREMENT", "UNARY", "'.'", "'['", "'('", "ARROW", "'^'",
+  "\"end of file\"", "error", "\"invalid token\"", "INT", "FLOAT",
+  "STRING", "FIELDNAME", "COMPLETE", "NAME", "TYPENAME", "NAME_OR_INT",
+  "STRUCT", "CLASS", "SIZEOF", "COLONCOLON", "ERROR", "DOLLAR_VARIABLE",
+  "THIS", "TRUEKEYWORD", "FALSEKEYWORD", "','", "ABOVE_COMMA", "ASSIGN",
+  "NOT", "OR", "XOR", "ANDAND", "'='", "NOTEQUAL", "'<'", "'>'", "LEQ",
+  "GEQ", "LSH", "RSH", "DIV", "MOD", "'@'", "'+'", "'-'", "'*'", "'/'",
+  "UNARY", "INCREMENT", "DECREMENT", "ARROW", "'.'", "'['", "'('", "'^'",
   "BLOCKNAME", "')'", "']'", "$accept", "start", "$@1", "normal_start",
   "type_exp", "exp1", "exp", "field_exp", "$@2", "$@3", "arglist", "$@4",
   "block", "variable", "qualified_name", "ptype", "type", "typebase",
-  "name", "name_not_typename", 0
+  "name", "name_not_typename", YY_NULLPTRPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+#ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
       44,   275,   276,   277,   278,   279,   280,    61,   281,    60,
       62,   282,   283,   284,   285,   286,   287,    64,    43,    45,
-      42,    47,   288,   289,   290,    46,    91,    40,   291,    94,
+      42,    47,   288,   289,   290,   291,    46,    91,    40,    94,
      292,    41,    93
 };
-# endif
+#endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    53,    55,    54,    56,    56,    57,    58,    58,    59,
-      59,    59,    59,    59,    59,    60,    59,    59,    59,    59,
-      61,    59,    62,    59,    63,    63,    63,    59,    59,    59,
-      64,    59,    59,    59,    59,    59,    59,    59,    59,    59,
-      59,    59,    59,    59,    59,    59,    59,    59,    59,    59,
-      59,    59,    59,    59,    59,    59,    59,    59,    59,    65,
-      65,    66,    67,    66,    66,    66,    68,    69,    70,    70,
-      70,    70,    71,    71,    71,    71,    72,    72
-};
+#define YYPACT_NINF (-44)
+
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
+
+#define YYTABLE_NINF (-61)
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+#define yytable_value_is_error(Yyn) \
+  0
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
 {
-       0,     2,     0,     2,     1,     1,     1,     1,     3,     2,
-       2,     2,     2,     4,     4,     2,     2,     2,     3,     2,
-       0,     5,     0,     5,     0,     1,     3,     4,     3,     3,
-       0,     4,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     1,     1,
-       1,     1,     1,     1,     1,     4,     4,     1,     1,     1,
-       3,     3,     3,     1,     2,     1,     1,     1,     2,     1,
-       2,     2,     1,     1,     1,     1,     1,     1
+     -44,    20,    90,   -44,   -44,   -44,   -44,   -44,   -44,   -44,
+       7,     7,   -41,     7,   -44,   -44,   -44,   -44,    90,    90,
+      90,   -39,   -24,    90,    10,    13,   -44,   -44,     8,   231,
+       4,    21,   -44,   -44,   -44,   -14,    41,   -44,   -44,   -44,
+     -44,   -44,   -44,   -44,    90,   -44,    35,   -14,    35,    35,
+      90,    90,     5,   -44,    90,    90,    90,    90,    90,    90,
+      90,    90,    90,    90,    90,    90,    90,    90,    90,    90,
+      90,    90,   -44,   -44,   -44,   -44,   -44,   -44,   -44,    23,
+       7,    90,     7,   119,   -43,   147,   175,   -44,   231,   231,
+     256,   280,   303,   324,   324,    31,    31,    31,    31,    76,
+      76,    76,    76,   328,   328,    35,    90,    90,    90,   -44,
+      44,   203,   -44,   -44,   -44,   -44,   -44,    35,     9,   231,
+      11,   -44,   -44,    90,   -44,   231
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint8 yydefact[] =
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_int8 yydefact[] =
 {
        2,     0,     0,     1,    50,    52,    57,    76,    69,    51,
        0,     0,     0,     0,    54,    58,    48,    49,     0,     0,
@@ -669,245 +829,192 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    30,    15,    20,    22,     9,    16,    19,    17,
        0,     0,     0,     0,     0,     0,     0,    28,     8,    47,
-      46,    45,    44,    38,    39,    42,    43,    41,    40,    33,
-      32,    37,    36,    34,    35,    29,     0,     0,    24,    18,
-      61,     0,    62,    56,    55,    14,    13,    31,     0,    25,
+      46,    45,    44,    38,    39,    42,    43,    40,    41,    36,
+      37,    32,    33,    34,    35,    29,     0,     0,    24,    18,
+      61,     0,    62,    56,    55,    13,    14,    31,     0,    25,
        0,    27,    21,     0,    23,    26
 };
 
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int8 yydefgoto[] =
-{
-      -1,     1,     2,    26,    27,    28,    29,    30,   107,   108,
-     120,   106,    31,    32,    33,    34,    47,    36,    42,    37
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -43
-static const yytype_int16 yypact[] =
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int8 yypgoto[] =
 {
-     -43,     8,    90,   -43,   -43,   -43,   -43,   -43,   -43,   -43,
-       7,     7,   -40,     7,   -43,   -43,   -43,   -43,    90,    90,
-      90,   -27,   -23,    90,    10,    13,   -43,   -43,    14,   231,
-       4,    21,   -43,   -43,   -43,   -19,    41,   -43,   -43,   -43,
-     -43,   -43,   -43,   -43,    90,   -43,    36,   -19,    36,    36,
-      90,    90,     5,   -43,    90,    90,    90,    90,    90,    90,
-      90,    90,    90,    90,    90,    90,    90,    90,    90,    90,
-      90,    90,   -43,   -43,   -43,   -43,   -43,   -43,   -43,    23,
-       7,    90,     7,   119,   -42,   147,   175,   -43,   231,   231,
-     256,   280,   303,   324,   324,    31,    31,    31,    31,    76,
-      76,    76,    76,   334,   334,    36,    90,    90,    90,   -43,
-      44,   203,   -43,   -43,   -43,   -43,   -43,    36,     9,   231,
-      11,   -43,   -43,    90,   -43,   231
+     -44,   -44,   -44,   -44,   -44,   -20,   -18,   -44,   -44,   -44,
+     -44,   -44,   -44,   -44,   -44,   -44,    16,    50,    -7,   -44
 };
 
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int8 yypgoto[] =
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int8 yydefgoto[] =
 {
-     -43,   -43,   -43,   -43,   -43,   -20,   -18,   -43,   -43,   -43,
-     -43,   -43,   -43,   -43,   -43,   -43,    16,    50,    -7,   -43
+      -1,     1,     2,    26,    27,    28,    29,    30,   107,   108,
+     120,   106,    31,    32,    33,    34,    47,    36,    42,    37
 };
 
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -61
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int8 yytable[] =
 {
-      46,    48,    49,    52,    43,    81,    45,    44,     3,   114,
+      46,    48,    49,    52,    43,    81,    45,    44,   114,    50,
       77,    78,    38,    39,    40,    38,    39,    40,    35,     8,
-      50,    10,    11,    79,    51,    54,    83,   -59,    81,    54,
-     109,   123,    85,    86,    54,    80,    88,    89,    90,    91,
+       3,    10,    11,    79,    51,    54,    83,   -59,    54,    54,
+     109,   123,    85,    86,    81,    80,    88,    89,    90,    91,
       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
      102,   103,   104,   105,    41,    82,    87,    41,   -60,    24,
       84,   122,   124,   111,    65,    66,    67,    68,     0,    69,
-      70,    71,    72,   110,    53,   112,    73,    74,    75,     0,
-      76,    73,    74,    75,     0,    76,     0,   118,   117,     0,
+      70,    71,    72,   110,    53,   112,     0,    73,    74,    75,
+      76,    73,    74,    75,    76,     0,     0,   118,   117,     0,
      119,     0,     0,     4,     5,     6,     0,     0,     7,     8,
        9,    10,    11,    12,    13,   125,    14,    15,    16,    17,
        0,     0,     0,    18,    69,    70,    71,    72,     0,     0,
-       0,    73,    74,    75,     0,    76,     0,    19,     0,    20,
-       0,     0,    21,    22,     0,     0,     0,    23,     0,    24,
+       0,     0,    73,    74,    75,    76,     0,    19,     0,    20,
+       0,     0,     0,    21,    22,     0,     0,     0,    23,    24,
       25,    55,     0,    56,    57,    58,    59,    60,    61,    62,
       63,    64,    65,    66,    67,    68,     0,    69,    70,    71,
-      72,     0,     0,     0,    73,    74,    75,     0,    76,    55,
+      72,     0,     0,     0,     0,    73,    74,    75,    76,    55,
      113,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,     0,    69,    70,    71,    72,     0,
-       0,     0,    73,    74,    75,     0,    76,    55,   115,    56,
+       0,     0,     0,    73,    74,    75,    76,    55,   115,    56,
       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
       67,    68,     0,    69,    70,    71,    72,     0,     0,     0,
-      73,    74,    75,     0,    76,    55,   116,    56,    57,    58,
+       0,    73,    74,    75,    76,    55,   116,    56,    57,    58,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-       0,    69,    70,    71,    72,     0,     0,     0,    73,    74,
-      75,     0,    76,    55,   121,    56,    57,    58,    59,    60,
+       0,    69,    70,    71,    72,     0,     0,     0,     0,    73,
+      74,    75,    76,    55,   121,    56,    57,    58,    59,    60,
       61,    62,    63,    64,    65,    66,    67,    68,     0,    69,
-      70,    71,    72,     0,     0,     0,    73,    74,    75,     0,
+      70,    71,    72,     0,     0,     0,     0,    73,    74,    75,
       76,    57,    58,    59,    60,    61,    62,    63,    64,    65,
       66,    67,    68,     0,    69,    70,    71,    72,     0,     0,
-       0,    73,    74,    75,     0,    76,    58,    59,    60,    61,
+       0,     0,    73,    74,    75,    76,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,     0,    69,    70,
-      71,    72,     0,     0,     0,    73,    74,    75,     0,    76,
+      71,    72,     0,     0,     0,     0,    73,    74,    75,    76,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-       0,    69,    70,    71,    72,     0,     0,     0,    73,    74,
-      75,     0,    76,    61,    62,    63,    64,    65,    66,    67,
-      68,     0,    69,    70,    71,    72,     0,     0,     0,    73,
-      74,    75,     0,    76,    71,    72,     0,     0,     0,    73,
-      74,    75,     0,    76
+       0,    69,    70,    71,    72,     0,     0,     0,     0,    73,
+      74,    75,    76,    61,    62,    63,    64,    65,    66,    67,
+      68,     0,    69,    70,    71,    72,     0,     0,    71,    72,
+      73,    74,    75,    76,    73,    74,    75,    76
 };
 
 static const yytype_int8 yycheck[] =
 {
-      18,    19,    20,    23,    11,    47,    13,    47,     0,    51,
+      18,    19,    20,    23,    11,    48,    13,    48,    51,    48,
        6,     7,     8,     9,    10,     8,     9,    10,     2,     9,
-      47,    11,    12,    30,    47,    20,    44,    14,    47,    20,
-       7,    20,    50,    51,    20,    14,    54,    55,    56,    57,
+       0,    11,    12,    30,    48,    20,    44,    14,    20,    20,
+       7,    20,    50,    51,    48,    14,    54,    55,    56,    57,
       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
       68,    69,    70,    71,    50,    14,    51,    50,    14,    49,
       44,    52,    51,    81,    33,    34,    35,    36,    -1,    38,
-      39,    40,    41,    80,    24,    82,    45,    46,    47,    -1,
-      49,    45,    46,    47,    -1,    49,    -1,   107,   106,    -1,
+      39,    40,    41,    80,    24,    82,    -1,    46,    47,    48,
+      49,    46,    47,    48,    49,    -1,    -1,   107,   106,    -1,
      108,    -1,    -1,     3,     4,     5,    -1,    -1,     8,     9,
       10,    11,    12,    13,    14,   123,    16,    17,    18,    19,
       -1,    -1,    -1,    23,    38,    39,    40,    41,    -1,    -1,
-      -1,    45,    46,    47,    -1,    49,    -1,    37,    -1,    39,
-      -1,    -1,    42,    43,    -1,    -1,    -1,    47,    -1,    49,
+      -1,    -1,    46,    47,    48,    49,    -1,    37,    -1,    39,
+      -1,    -1,    -1,    43,    44,    -1,    -1,    -1,    48,    49,
       50,    22,    -1,    24,    25,    26,    27,    28,    29,    30,
       31,    32,    33,    34,    35,    36,    -1,    38,    39,    40,
-      41,    -1,    -1,    -1,    45,    46,    47,    -1,    49,    22,
+      41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,    22,
       51,    24,    25,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    -1,    38,    39,    40,    41,    -1,
-      -1,    -1,    45,    46,    47,    -1,    49,    22,    51,    24,
+      -1,    -1,    -1,    46,    47,    48,    49,    22,    51,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    -1,    38,    39,    40,    41,    -1,    -1,    -1,
-      45,    46,    47,    -1,    49,    22,    51,    24,    25,    26,
+      -1,    46,    47,    48,    49,    22,    51,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      -1,    38,    39,    40,    41,    -1,    -1,    -1,    45,    46,
-      47,    -1,    49,    22,    51,    24,    25,    26,    27,    28,
+      -1,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      47,    48,    49,    22,    51,    24,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    -1,    38,
-      39,    40,    41,    -1,    -1,    -1,    45,    46,    47,    -1,
+      39,    40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,
       49,    25,    26,    27,    28,    29,    30,    31,    32,    33,
       34,    35,    36,    -1,    38,    39,    40,    41,    -1,    -1,
-      -1,    45,    46,    47,    -1,    49,    26,    27,    28,    29,
+      -1,    -1,    46,    47,    48,    49,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    -1,    38,    39,
-      40,    41,    -1,    -1,    -1,    45,    46,    47,    -1,    49,
+      40,    41,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      -1,    38,    39,    40,    41,    -1,    -1,    -1,    45,    46,
-      47,    -1,    49,    29,    30,    31,    32,    33,    34,    35,
-      36,    -1,    38,    39,    40,    41,    -1,    -1,    -1,    45,
-      46,    47,    -1,    49,    40,    41,    -1,    -1,    -1,    45,
-      46,    47,    -1,    49
+      -1,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
+      47,    48,    49,    29,    30,    31,    32,    33,    34,    35,
+      36,    -1,    38,    39,    40,    41,    -1,    -1,    40,    41,
+      46,    47,    48,    49,    46,    47,    48,    49
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
+static const yytype_int8 yystos[] =
 {
        0,    54,    55,     0,     3,     4,     5,     8,     9,    10,
       11,    12,    13,    14,    16,    17,    18,    19,    23,    37,
-      39,    42,    43,    47,    49,    50,    56,    57,    58,    59,
+      39,    43,    44,    48,    49,    50,    56,    57,    58,    59,
       60,    65,    66,    67,    68,    69,    70,    72,     8,     9,
-      10,    50,    71,    71,    47,    71,    59,    69,    59,    59,
-      47,    47,    58,    70,    20,    22,    24,    25,    26,    27,
+      10,    50,    71,    71,    48,    71,    59,    69,    59,    59,
+      48,    48,    58,    70,    20,    22,    24,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    38,
-      39,    40,    41,    45,    46,    47,    49,     6,     7,    71,
-      14,    47,    14,    59,    69,    59,    59,    51,    59,    59,
+      39,    40,    41,    46,    47,    48,    49,     6,     7,    71,
+      14,    48,    14,    59,    69,    59,    59,    51,    59,    59,
       59,    59,    59,    59,    59,    59,    59,    59,    59,    59,
       59,    59,    59,    59,    59,    59,    64,    61,    62,     7,
       71,    59,    71,    51,    51,    51,    51,    59,    58,    59,
       63,    51,    52,    20,    51,    59
 };
 
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
-
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
-
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_int8 yyr1[] =
+{
+       0,    53,    55,    54,    56,    56,    57,    58,    58,    59,
+      59,    59,    59,    59,    59,    60,    59,    59,    59,    59,
+      61,    59,    62,    59,    63,    63,    63,    59,    59,    59,
+      64,    59,    59,    59,    59,    59,    59,    59,    59,    59,
+      59,    59,    59,    59,    59,    59,    59,    59,    59,    59,
+      59,    59,    59,    59,    59,    59,    59,    59,    59,    65,
+      65,    66,    67,    66,    66,    66,    68,    69,    70,    70,
+      70,    70,    71,    71,    71,    71,    72,    72
+};
 
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_int8 yyr2[] =
+{
+       0,     2,     0,     2,     1,     1,     1,     1,     3,     2,
+       2,     2,     2,     4,     4,     2,     2,     2,     3,     2,
+       0,     5,     0,     5,     0,     1,     3,     4,     3,     3,
+       0,     4,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     1,     1,
+       1,     1,     1,     1,     1,     4,     4,     1,     1,     1,
+       3,     3,     3,     1,     2,     1,     1,     1,     2,     1,
+       2,     2,     1,     1,     1,     1,     1,     1
+};
 
-#define YYFAIL		goto yyerrlab
 
-#define YYRECOVERING()  (!!yyerrstatus)
+enum { YYENOMEM = -2 };
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
-
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
 
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
 
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
 
+#define YYRECOVERING()  (!!yyerrstatus)
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
+
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -917,80 +1024,65 @@ while (YYID (0))
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+# ifndef YY_LOCATION_PRINT
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+
+
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Kind, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
+
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yykind, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -998,16 +1090,8 @@ yy_symbol_print (yyoutput, yytype, yyval
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
 static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1018,63 +1102,56 @@ yy_stack_print (yybottom, yytop)
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule)
 {
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
+      yy_symbol_print (stderr,
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)]);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1089,342 +1166,82 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
 
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
 
-  if (! yyres)
-    return yystrlen (yystr);
 
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
 
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
 static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  switch (yytype)
-    {
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
 
 /* The lookahead symbol.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
-
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+
+/*----------.
+| yyparse.  |
+`----------*/
+
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
-
-
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to xreallocate them elsewhere.  */
 
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize;
+
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
-
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -1432,133 +1249,147 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
   yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
-	/* Give user a chance to xreallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        yy_state_t *yyss1 = yyss;
+        YYSTYPE *yyvs1 = yyvs;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
+                    &yystacksize);
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yy_state_t *yyss1 = yyss;
+        union yyalloc *yyptr =
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      YYDPRINTF ((stderr, "Reading a token\n"));
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -1573,8 +1404,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -1586,13 +1417,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -1607,14 +1438,14 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -1627,162 +1458,145 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 2:
-
-/* Line 1455 of yacc.c  */
+  case 2:
 #line 194 "p-exp.y"
-    { current_type = NULL;
+                { current_type = NULL;
 		  intvar = NULL;
 		  search_field = 0;
 		  leftdiv_is_integer = 0;
 		}
+#line 1470 "p-exp.c.tmp"
     break;
 
   case 3:
-
-/* Line 1455 of yacc.c  */
 #line 199 "p-exp.y"
-    {}
+                             {}
+#line 1476 "p-exp.c.tmp"
     break;
 
   case 6:
-
-/* Line 1455 of yacc.c  */
 #line 208 "p-exp.y"
-    { write_exp_elt_opcode (pstate, OP_TYPE);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].tval));
+                        { write_exp_elt_opcode (pstate, OP_TYPE);
+			  write_exp_elt_type (pstate, (yyvsp[0].tval));
 			  write_exp_elt_opcode (pstate, OP_TYPE);
-			  current_type = (yyvsp[(1) - (1)].tval); }
+			  current_type = (yyvsp[0].tval); }
+#line 1485 "p-exp.c.tmp"
     break;
 
   case 8:
-
-/* Line 1455 of yacc.c  */
 #line 216 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+                        { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+#line 1491 "p-exp.c.tmp"
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
 #line 221 "p-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND);
+                        { write_exp_elt_opcode (pstate, UNOP_IND);
 			  if (current_type)
 			    current_type = TYPE_TARGET_TYPE (current_type); }
+#line 1499 "p-exp.c.tmp"
     break;
 
   case 10:
-
-/* Line 1455 of yacc.c  */
 #line 227 "p-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR);
+                        { write_exp_elt_opcode (pstate, UNOP_ADDR);
 			  if (current_type)
 			    current_type = TYPE_POINTER_TYPE (current_type); }
+#line 1507 "p-exp.c.tmp"
     break;
 
   case 11:
-
-/* Line 1455 of yacc.c  */
 #line 233 "p-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_NEG); }
+                        { write_exp_elt_opcode (pstate, UNOP_NEG); }
+#line 1513 "p-exp.c.tmp"
     break;
 
   case 12:
-
-/* Line 1455 of yacc.c  */
 #line 237 "p-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+                        { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+#line 1519 "p-exp.c.tmp"
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
 #line 241 "p-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PREINCREMENT); }
+                        { write_exp_elt_opcode (pstate, UNOP_PREINCREMENT); }
+#line 1525 "p-exp.c.tmp"
     break;
 
   case 14:
-
-/* Line 1455 of yacc.c  */
 #line 245 "p-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PREDECREMENT); }
+                        { write_exp_elt_opcode (pstate, UNOP_PREDECREMENT); }
+#line 1531 "p-exp.c.tmp"
     break;
 
   case 15:
-
-/* Line 1455 of yacc.c  */
 #line 250 "p-exp.y"
-    { search_field = 1; }
+                        { search_field = 1; }
+#line 1537 "p-exp.c.tmp"
     break;
 
   case 16:
-
-/* Line 1455 of yacc.c  */
 #line 254 "p-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, (yyvsp[(2) - (2)].sval));
+                        { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
 			  search_field = 0;
 			  if (current_type)
 			    {
-			      while (TYPE_CODE (current_type)
+			      while (current_type->code ()
 				     == TYPE_CODE_PTR)
 				current_type =
 				  TYPE_TARGET_TYPE (current_type);
 			      current_type = lookup_struct_elt_type (
-				current_type, (yyvsp[(2) - (2)].sval).ptr, 0);
+				current_type, (yyvsp[0].sval).ptr, 0);
 			    }
 			 }
+#line 1556 "p-exp.c.tmp"
     break;
 
   case 17:
-
-/* Line 1455 of yacc.c  */
 #line 272 "p-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, (yyvsp[(2) - (2)].sval));
+                        { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
 			  search_field = 0;
 			  if (current_type)
 			    {
-			      while (TYPE_CODE (current_type)
+			      while (current_type->code ()
 				     == TYPE_CODE_PTR)
 				current_type =
 				  TYPE_TARGET_TYPE (current_type);
 			      current_type = lookup_struct_elt_type (
-				current_type, (yyvsp[(2) - (2)].sval).ptr, 0);
+				current_type, (yyvsp[0].sval).ptr, 0);
 			    }
 			}
+#line 1575 "p-exp.c.tmp"
     break;
 
   case 18:
-
-/* Line 1455 of yacc.c  */
 #line 288 "p-exp.y"
-    { pstate->mark_struct_expression ();
+                        { pstate->mark_struct_expression ();
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, (yyvsp[(2) - (3)].sval));
+			  write_exp_string (pstate, (yyvsp[-1].sval));
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 1584 "p-exp.c.tmp"
     break;
 
   case 19:
-
-/* Line 1455 of yacc.c  */
 #line 294 "p-exp.y"
-    { struct stoken s;
+                        { struct stoken s;
 			  pstate->mark_struct_expression ();
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
 			  s.ptr = "";
 			  s.length = 0;
 			  write_exp_string (pstate, s);
 			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 1596 "p-exp.c.tmp"
     break;
 
   case 20:
-
-/* Line 1455 of yacc.c  */
 #line 305 "p-exp.y"
-    { const char *arrayname;
+                        { const char *arrayname;
 			  int arrayfieldindex;
 			  arrayfieldindex = is_pascal_string_type (
 				current_type, NULL, NULL,
@@ -1796,38 +1610,36 @@ yyreduce:
 			      stringsval.ptr = buf;
 			      stringsval.length = strlen (arrayname);
 			      strcpy (buf, arrayname);
-			      current_type = TYPE_FIELD_TYPE (current_type,
-				arrayfieldindex - 1);
+			      current_type
+				= (current_type
+				   ->field (arrayfieldindex - 1).type ());
 			      write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
 			      write_exp_string (pstate, stringsval);
 			      write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
 			    }
 			  push_current_type ();  }
+#line 1623 "p-exp.c.tmp"
     break;
 
   case 21:
-
-/* Line 1455 of yacc.c  */
-#line 327 "p-exp.y"
-    { pop_current_type ();
+#line 328 "p-exp.y"
+                        { pop_current_type ();
 			  write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT);
 			  if (current_type)
 			    current_type = TYPE_TARGET_TYPE (current_type); }
+#line 1632 "p-exp.c.tmp"
     break;
 
   case 22:
-
-/* Line 1455 of yacc.c  */
-#line 336 "p-exp.y"
-    { push_current_type ();
+#line 337 "p-exp.y"
+                        { push_current_type ();
 			  pstate->start_arglist (); }
+#line 1639 "p-exp.c.tmp"
     break;
 
   case 23:
-
-/* Line 1455 of yacc.c  */
-#line 339 "p-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FUNCALL);
+#line 340 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_FUNCALL);
 			  write_exp_elt_longcst (pstate,
 						 pstate->end_arglist ());
 			  write_exp_elt_opcode (pstate, OP_FUNCALL);
@@ -1835,69 +1647,62 @@ yyreduce:
 			  if (current_type)
  	  		    current_type = TYPE_TARGET_TYPE (current_type);
 			}
+#line 1652 "p-exp.c.tmp"
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
-#line 351 "p-exp.y"
-    { pstate->arglist_len = 1; }
+#line 352 "p-exp.y"
+                        { pstate->arglist_len = 1; }
+#line 1658 "p-exp.c.tmp"
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
-#line 353 "p-exp.y"
-    { pstate->arglist_len++; }
+#line 354 "p-exp.y"
+                        { pstate->arglist_len++; }
+#line 1664 "p-exp.c.tmp"
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
-#line 357 "p-exp.y"
-    { if (current_type)
+#line 358 "p-exp.y"
+                        { if (current_type)
 			    {
 			      /* Allow automatic dereference of classes.  */
-			      if ((TYPE_CODE (current_type) == TYPE_CODE_PTR)
-				  && (TYPE_CODE (TYPE_TARGET_TYPE (current_type)) == TYPE_CODE_STRUCT)
-				  && (TYPE_CODE ((yyvsp[(1) - (4)].tval)) == TYPE_CODE_STRUCT))
+			      if ((current_type->code () == TYPE_CODE_PTR)
+				  && (TYPE_TARGET_TYPE (current_type)->code () == TYPE_CODE_STRUCT)
+				  && (((yyvsp[-3].tval))->code () == TYPE_CODE_STRUCT))
 				write_exp_elt_opcode (pstate, UNOP_IND);
 			    }
 			  write_exp_elt_opcode (pstate, UNOP_CAST);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (4)].tval));
+			  write_exp_elt_type (pstate, (yyvsp[-3].tval));
 			  write_exp_elt_opcode (pstate, UNOP_CAST);
-			  current_type = (yyvsp[(1) - (4)].tval); }
+			  current_type = (yyvsp[-3].tval); }
+#line 1681 "p-exp.c.tmp"
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
-#line 372 "p-exp.y"
-    { }
+#line 373 "p-exp.y"
+                        { }
+#line 1687 "p-exp.c.tmp"
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
-#line 378 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 379 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 1693 "p-exp.c.tmp"
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
-#line 381 "p-exp.y"
-    {
+#line 382 "p-exp.y"
+                        {
 			  if (current_type && is_integral_type (current_type))
 			    leftdiv_is_integer = 1;
 			}
+#line 1702 "p-exp.c.tmp"
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
-#line 386 "p-exp.y"
-    {
+#line 387 "p-exp.y"
+                        {
 			  if (leftdiv_is_integer && current_type
 			      && is_integral_type (current_type))
 			    {
@@ -1913,170 +1718,150 @@ yyreduce:
 
 			  write_exp_elt_opcode (pstate, BINOP_DIV);
 			}
+#line 1723 "p-exp.c.tmp"
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
-#line 405 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_INTDIV); }
+#line 406 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_INTDIV); }
+#line 1729 "p-exp.c.tmp"
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
-#line 409 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 410 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 1735 "p-exp.c.tmp"
     break;
 
   case 34:
-
-/* Line 1455 of yacc.c  */
-#line 413 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 414 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 1741 "p-exp.c.tmp"
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
-#line 417 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 418 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 1747 "p-exp.c.tmp"
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
-#line 421 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LSH); }
+#line 422 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LSH); }
+#line 1753 "p-exp.c.tmp"
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
-#line 425 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_RSH); }
+#line 426 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_RSH); }
+#line 1759 "p-exp.c.tmp"
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
-#line 429 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EQUAL);
+#line 430 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_EQUAL);
 			  current_type = parse_type (pstate)->builtin_bool;
 			}
+#line 1767 "p-exp.c.tmp"
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
-#line 435 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL);
+#line 436 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL);
 			  current_type = parse_type (pstate)->builtin_bool;
 			}
+#line 1775 "p-exp.c.tmp"
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
-#line 441 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LEQ);
+#line 442 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LEQ);
 			  current_type = parse_type (pstate)->builtin_bool;
 			}
+#line 1783 "p-exp.c.tmp"
     break;
 
   case 41:
-
-/* Line 1455 of yacc.c  */
-#line 447 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GEQ);
+#line 448 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_GEQ);
 			  current_type = parse_type (pstate)->builtin_bool;
 			}
+#line 1791 "p-exp.c.tmp"
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
-#line 453 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LESS);
+#line 454 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_LESS);
 			  current_type = parse_type (pstate)->builtin_bool;
 			}
+#line 1799 "p-exp.c.tmp"
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
-#line 459 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GTR);
+#line 460 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_GTR);
 			  current_type = parse_type (pstate)->builtin_bool;
 			}
+#line 1807 "p-exp.c.tmp"
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
-#line 465 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 466 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 1813 "p-exp.c.tmp"
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
-#line 469 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 470 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 1819 "p-exp.c.tmp"
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
-#line 473 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 474 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 1825 "p-exp.c.tmp"
     break;
 
   case 47:
-
-/* Line 1455 of yacc.c  */
-#line 477 "p-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 478 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 1831 "p-exp.c.tmp"
     break;
 
   case 48:
-
-/* Line 1455 of yacc.c  */
-#line 481 "p-exp.y"
-    { write_exp_elt_opcode (pstate, OP_BOOL);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].lval));
+#line 482 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_BOOL);
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].lval));
 			  current_type = parse_type (pstate)->builtin_bool;
 			  write_exp_elt_opcode (pstate, OP_BOOL); }
+#line 1840 "p-exp.c.tmp"
     break;
 
   case 49:
-
-/* Line 1455 of yacc.c  */
-#line 488 "p-exp.y"
-    { write_exp_elt_opcode (pstate, OP_BOOL);
-			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[(1) - (1)].lval));
+#line 489 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_BOOL);
+			  write_exp_elt_longcst (pstate, (LONGEST) (yyvsp[0].lval));
 			  current_type = parse_type (pstate)->builtin_bool;
 			  write_exp_elt_opcode (pstate, OP_BOOL); }
+#line 1849 "p-exp.c.tmp"
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
-#line 495 "p-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val_int).type);
-			  current_type = (yyvsp[(1) - (1)].typed_val_int).type;
-			  write_exp_elt_longcst (pstate, (LONGEST)((yyvsp[(1) - (1)].typed_val_int).val));
+#line 496 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_LONG);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val_int).type);
+			  current_type = (yyvsp[0].typed_val_int).type;
+			  write_exp_elt_longcst (pstate, (LONGEST)((yyvsp[0].typed_val_int).val));
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 1859 "p-exp.c.tmp"
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
-#line 503 "p-exp.y"
-    { YYSTYPE val;
-			  parse_number (pstate, (yyvsp[(1) - (1)].ssym).stoken.ptr,
-					(yyvsp[(1) - (1)].ssym).stoken.length, 0, &val);
+#line 504 "p-exp.y"
+                        { YYSTYPE val;
+			  parse_number (pstate, (yyvsp[0].ssym).stoken.ptr,
+					(yyvsp[0].ssym).stoken.length, 0, &val);
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate, val.typed_val_int.type);
 			  current_type = val.typed_val_int.type;
@@ -2084,24 +1869,22 @@ yyreduce:
 						 val.typed_val_int.val);
 			  write_exp_elt_opcode (pstate, OP_LONG);
 			}
+#line 1874 "p-exp.c.tmp"
     break;
 
   case 52:
-
-/* Line 1455 of yacc.c  */
-#line 517 "p-exp.y"
-    { write_exp_elt_opcode (pstate, OP_FLOAT);
-			  write_exp_elt_type (pstate, (yyvsp[(1) - (1)].typed_val_float).type);
-			  current_type = (yyvsp[(1) - (1)].typed_val_float).type;
-			  write_exp_elt_floatcst (pstate, (yyvsp[(1) - (1)].typed_val_float).val);
+#line 518 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_FLOAT);
+			  write_exp_elt_type (pstate, (yyvsp[0].typed_val_float).type);
+			  current_type = (yyvsp[0].typed_val_float).type;
+			  write_exp_elt_floatcst (pstate, (yyvsp[0].typed_val_float).val);
 			  write_exp_elt_opcode (pstate, OP_FLOAT); }
+#line 1884 "p-exp.c.tmp"
     break;
 
   case 54:
-
-/* Line 1455 of yacc.c  */
-#line 530 "p-exp.y"
-    {  if (intvar) {
+#line 531 "p-exp.y"
+                        {  if (intvar) {
  			     struct value * val, * mark;
 
 			     mark = value_mark ();
@@ -2111,40 +1894,37 @@ yyreduce:
 			     value_release_to_mark (mark);
  			   }
  			}
+#line 1899 "p-exp.c.tmp"
     break;
 
   case 55:
-
-/* Line 1455 of yacc.c  */
-#line 543 "p-exp.y"
-    { write_exp_elt_opcode (pstate, OP_LONG);
+#line 544 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, OP_LONG);
 			  write_exp_elt_type (pstate,
 					    parse_type (pstate)->builtin_int);
 			  current_type = parse_type (pstate)->builtin_int;
-			  (yyvsp[(3) - (4)].tval) = check_typedef ((yyvsp[(3) - (4)].tval));
+			  (yyvsp[-1].tval) = check_typedef ((yyvsp[-1].tval));
 			  write_exp_elt_longcst (pstate,
-						 (LONGEST) TYPE_LENGTH ((yyvsp[(3) - (4)].tval)));
+						 (LONGEST) TYPE_LENGTH ((yyvsp[-1].tval)));
 			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 1912 "p-exp.c.tmp"
     break;
 
   case 56:
-
-/* Line 1455 of yacc.c  */
-#line 554 "p-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_SIZEOF);
+#line 555 "p-exp.y"
+                        { write_exp_elt_opcode (pstate, UNOP_SIZEOF);
 			  current_type = parse_type (pstate)->builtin_int; }
+#line 1919 "p-exp.c.tmp"
     break;
 
   case 57:
-
-/* Line 1455 of yacc.c  */
-#line 558 "p-exp.y"
-    { /* C strings are converted into array constants with
+#line 559 "p-exp.y"
+                        { /* C strings are converted into array constants with
 			     an explicit null byte added at the end.  Thus
 			     the array upper bound is the string length.
 			     There is no such thing in C as a completely empty
 			     string.  */
-			  const char *sp = (yyvsp[(1) - (1)].sval).ptr; int count = (yyvsp[(1) - (1)].sval).length;
+			  const char *sp = (yyvsp[0].sval).ptr; int count = (yyvsp[0].sval).length;
 
 			  while (count-- > 0)
 			    {
@@ -2165,15 +1945,14 @@ yyreduce:
 			  write_exp_elt_opcode (pstate, OP_ARRAY);
 			  write_exp_elt_longcst (pstate, (LONGEST) 0);
 			  write_exp_elt_longcst (pstate,
-						 (LONGEST) ((yyvsp[(1) - (1)].sval).length));
+						 (LONGEST) ((yyvsp[0].sval).length));
 			  write_exp_elt_opcode (pstate, OP_ARRAY); }
+#line 1952 "p-exp.c.tmp"
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
-#line 590 "p-exp.y"
-    {
+#line 591 "p-exp.y"
+                        {
 			  struct value * this_val;
 			  struct type * this_type;
 			  write_exp_elt_opcode (pstate, OP_THIS);
@@ -2187,7 +1966,7 @@ yyreduce:
 			    this_type = NULL;
 			  if (this_type)
 			    {
-			      if (TYPE_CODE (this_type) == TYPE_CODE_PTR)
+			      if (this_type->code () == TYPE_CODE_PTR)
 				{
 				  this_type = TYPE_TARGET_TYPE (this_type);
 				  write_exp_elt_opcode (pstate, UNOP_IND);
@@ -2196,18 +1975,17 @@ yyreduce:
 
 			  current_type = this_type;
 			}
+#line 1980 "p-exp.c.tmp"
     break;
 
   case 59:
-
-/* Line 1455 of yacc.c  */
-#line 618 "p-exp.y"
-    {
-			  if ((yyvsp[(1) - (1)].ssym).sym.symbol != 0)
-			      (yyval.bval) = SYMBOL_BLOCK_VALUE ((yyvsp[(1) - (1)].ssym).sym.symbol);
+#line 619 "p-exp.y"
+                        {
+			  if ((yyvsp[0].ssym).sym.symbol != 0)
+			      (yyval.bval) = SYMBOL_BLOCK_VALUE ((yyvsp[0].ssym).sym.symbol);
 			  else
 			    {
-			      std::string copy = copy_name ((yyvsp[(1) - (1)].ssym).stoken);
+			      std::string copy = copy_name ((yyvsp[0].ssym).stoken);
 			      struct symtab *tem =
 				  lookup_symtab (copy.c_str ());
 			      if (tem)
@@ -2218,32 +1996,30 @@ yyreduce:
 				       copy.c_str ());
 			    }
 			}
+#line 2001 "p-exp.c.tmp"
     break;
 
   case 60:
-
-/* Line 1455 of yacc.c  */
-#line 637 "p-exp.y"
-    {
-			  std::string copy = copy_name ((yyvsp[(3) - (3)].sval));
+#line 638 "p-exp.y"
+                        {
+			  std::string copy = copy_name ((yyvsp[0].sval));
 			  struct symbol *tem
-			    = lookup_symbol (copy.c_str (), (yyvsp[(1) - (3)].bval),
+			    = lookup_symbol (copy.c_str (), (yyvsp[-2].bval),
 					     VAR_DOMAIN, NULL).symbol;
 
 			  if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
 			    error (_("No function \"%s\" in specified context."),
 				   copy.c_str ());
 			  (yyval.bval) = SYMBOL_BLOCK_VALUE (tem); }
+#line 2016 "p-exp.c.tmp"
     break;
 
   case 61:
+#line 651 "p-exp.y"
+                        { struct block_symbol sym;
 
-/* Line 1455 of yacc.c  */
-#line 650 "p-exp.y"
-    { struct block_symbol sym;
-
-			  std::string copy = copy_name ((yyvsp[(3) - (3)].sval));
-			  sym = lookup_symbol (copy.c_str (), (yyvsp[(1) - (3)].bval),
+			  std::string copy = copy_name ((yyvsp[0].sval));
+			  sym = lookup_symbol (copy.c_str (), (yyvsp[-2].bval),
 					       VAR_DOMAIN, NULL);
 			  if (sym.symbol == 0)
 			    error (_("No symbol \"%s\" in specified context."),
@@ -2253,33 +2029,31 @@ yyreduce:
 			  write_exp_elt_block (pstate, sym.block);
 			  write_exp_elt_sym (pstate, sym.symbol);
 			  write_exp_elt_opcode (pstate, OP_VAR_VALUE); }
+#line 2034 "p-exp.c.tmp"
     break;
 
   case 62:
+#line 667 "p-exp.y"
+                        {
+			  struct type *type = (yyvsp[-2].tval);
 
-/* Line 1455 of yacc.c  */
-#line 666 "p-exp.y"
-    {
-			  struct type *type = (yyvsp[(1) - (3)].tval);
-
-			  if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-			      && TYPE_CODE (type) != TYPE_CODE_UNION)
+			  if (type->code () != TYPE_CODE_STRUCT
+			      && type->code () != TYPE_CODE_UNION)
 			    error (_("`%s' is not defined as an aggregate type."),
-				   TYPE_NAME (type));
+				   type->name ());
 
 			  write_exp_elt_opcode (pstate, OP_SCOPE);
 			  write_exp_elt_type (pstate, type);
-			  write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
+			  write_exp_string (pstate, (yyvsp[0].sval));
 			  write_exp_elt_opcode (pstate, OP_SCOPE);
 			}
+#line 2052 "p-exp.c.tmp"
     break;
 
   case 64:
-
-/* Line 1455 of yacc.c  */
-#line 683 "p-exp.y"
-    {
-			  std::string name = copy_name ((yyvsp[(2) - (2)].sval));
+#line 684 "p-exp.y"
+                        {
+			  std::string name = copy_name ((yyvsp[0].sval));
 			  struct symbol *sym;
 			  struct bound_minimal_symbol msymbol;
 
@@ -2308,13 +2082,12 @@ yyreduce:
 			    error (_("No symbol \"%s\" in current context."),
 				   name.c_str ());
 			}
+#line 2087 "p-exp.c.tmp"
     break;
 
   case 65:
-
-/* Line 1455 of yacc.c  */
-#line 716 "p-exp.y"
-    { struct block_symbol sym = (yyvsp[(1) - (1)].ssym).sym;
+#line 717 "p-exp.y"
+                        { struct block_symbol sym = (yyvsp[0].ssym).sym;
 
 			  if (sym.symbol)
 			    {
@@ -2326,7 +2099,7 @@ yyreduce:
 			      write_exp_elt_sym (pstate, sym.symbol);
 			      write_exp_elt_opcode (pstate, OP_VAR_VALUE);
 			      current_type = sym.symbol->type; }
-			  else if ((yyvsp[(1) - (1)].ssym).is_a_field_of_this)
+			  else if ((yyvsp[0].ssym).is_a_field_of_this)
 			    {
 			      struct value * this_val;
 			      struct type * this_type;
@@ -2337,7 +2110,7 @@ yyreduce:
 			      write_exp_elt_opcode (pstate, OP_THIS);
 			      write_exp_elt_opcode (pstate, OP_THIS);
 			      write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			      write_exp_string (pstate, (yyvsp[(1) - (1)].ssym).stoken);
+			      write_exp_string (pstate, (yyvsp[0].ssym).stoken);
 			      write_exp_elt_opcode (pstate, STRUCTOP_PTR);
 			      /* We need type of this.  */
 			      this_val
@@ -2349,14 +2122,14 @@ yyreduce:
 			      if (this_type)
 				current_type = lookup_struct_elt_type (
 				  this_type,
-				  copy_name ((yyvsp[(1) - (1)].ssym).stoken).c_str (), 0);
+				  copy_name ((yyvsp[0].ssym).stoken).c_str (), 0);
 			      else
 				current_type = NULL;
 			    }
 			  else
 			    {
 			      struct bound_minimal_symbol msymbol;
-			      std::string arg = copy_name ((yyvsp[(1) - (1)].ssym).stoken);
+			      std::string arg = copy_name ((yyvsp[0].ssym).stoken);
 
 			      msymbol =
 				lookup_bound_minimal_symbol (arg.c_str ());
@@ -2371,163 +2144,131 @@ yyreduce:
 				       arg.c_str ());
 			    }
 			}
+#line 2149 "p-exp.c.tmp"
     break;
 
   case 68:
-
-/* Line 1455 of yacc.c  */
-#line 792 "p-exp.y"
-    { (yyval.tval) = lookup_pointer_type ((yyvsp[(2) - (2)].tval)); }
+#line 793 "p-exp.y"
+                        { (yyval.tval) = lookup_pointer_type ((yyvsp[0].tval)); }
+#line 2155 "p-exp.c.tmp"
     break;
 
   case 69:
-
-/* Line 1455 of yacc.c  */
-#line 794 "p-exp.y"
-    { (yyval.tval) = (yyvsp[(1) - (1)].tsym).type; }
+#line 795 "p-exp.y"
+                        { (yyval.tval) = (yyvsp[0].tsym).type; }
+#line 2161 "p-exp.c.tmp"
     break;
 
   case 70:
-
-/* Line 1455 of yacc.c  */
-#line 796 "p-exp.y"
-    { (yyval.tval)
-			    = lookup_struct (copy_name ((yyvsp[(2) - (2)].sval)).c_str (),
+#line 797 "p-exp.y"
+                        { (yyval.tval)
+			    = lookup_struct (copy_name ((yyvsp[0].sval)).c_str (),
 					     pstate->expression_context_block);
 			}
+#line 2170 "p-exp.c.tmp"
     break;
 
   case 71:
-
-/* Line 1455 of yacc.c  */
-#line 801 "p-exp.y"
-    { (yyval.tval)
-			    = lookup_struct (copy_name ((yyvsp[(2) - (2)].sval)).c_str (),
+#line 802 "p-exp.y"
+                        { (yyval.tval)
+			    = lookup_struct (copy_name ((yyvsp[0].sval)).c_str (),
 					     pstate->expression_context_block);
 			}
+#line 2179 "p-exp.c.tmp"
     break;
 
   case 72:
-
-/* Line 1455 of yacc.c  */
-#line 810 "p-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+#line 811 "p-exp.y"
+                     { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 2185 "p-exp.c.tmp"
     break;
 
   case 73:
-
-/* Line 1455 of yacc.c  */
-#line 811 "p-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+#line 812 "p-exp.y"
+                          { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 2191 "p-exp.c.tmp"
     break;
 
   case 74:
-
-/* Line 1455 of yacc.c  */
-#line 812 "p-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].tsym).stoken; }
+#line 813 "p-exp.y"
+                         { (yyval.sval) = (yyvsp[0].tsym).stoken; }
+#line 2197 "p-exp.c.tmp"
     break;
 
   case 75:
-
-/* Line 1455 of yacc.c  */
-#line 813 "p-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+#line 814 "p-exp.y"
+                             { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 2203 "p-exp.c.tmp"
     break;
 
 
+#line 2207 "p-exp.c.tmp"
 
-/* Line 1455 of yacc.c  */
-#line 2443 "p-exp.c.tmp"
       default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -2539,14 +2280,12 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -2559,39 +2298,42 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -2604,6 +2346,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -2611,7 +2354,8 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+
+#if !defined yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2621,36 +2365,38 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
 
+  return yyresult;
+}
 
-/* Line 1675 of yacc.c  */
-#line 827 "p-exp.y"
+#line 828 "p-exp.y"
 
 
 /* Take care of parsing a number (anything that starts with a digit).
@@ -3575,4 +3321,3 @@ yyerror (const char *msg)
 
   error (_("A %s in expression, near `%s'."), msg, pstate->lexptr);
 }
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-exp.y ./gdb/p-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-exp.y	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/p-exp.y	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* YACC parser for Pascal expressions, for GDB.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -257,7 +257,7 @@ exp	:	field_exp FIELDNAME
 			  search_field = 0;
 			  if (current_type)
 			    {
-			      while (TYPE_CODE (current_type)
+			      while (current_type->code ()
 				     == TYPE_CODE_PTR)
 				current_type =
 				  TYPE_TARGET_TYPE (current_type);
@@ -275,7 +275,7 @@ exp	:	field_exp name
 			  search_field = 0;
 			  if (current_type)
 			    {
-			      while (TYPE_CODE (current_type)
+			      while (current_type->code ()
 				     == TYPE_CODE_PTR)
 				current_type =
 				  TYPE_TARGET_TYPE (current_type);
@@ -316,8 +316,9 @@ exp	:	exp '['
 			      stringsval.ptr = buf;
 			      stringsval.length = strlen (arrayname);
 			      strcpy (buf, arrayname);
-			      current_type = TYPE_FIELD_TYPE (current_type,
-				arrayfieldindex - 1);
+			      current_type
+				= (current_type
+				   ->field (arrayfieldindex - 1).type ());
 			      write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
 			      write_exp_string (pstate, stringsval);
 			      write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
@@ -357,9 +358,9 @@ exp	:	type '(' exp ')' %prec UNARY
 			{ if (current_type)
 			    {
 			      /* Allow automatic dereference of classes.  */
-			      if ((TYPE_CODE (current_type) == TYPE_CODE_PTR)
-				  && (TYPE_CODE (TYPE_TARGET_TYPE (current_type)) == TYPE_CODE_STRUCT)
-				  && (TYPE_CODE ($1) == TYPE_CODE_STRUCT))
+			      if ((current_type->code () == TYPE_CODE_PTR)
+				  && (TYPE_TARGET_TYPE (current_type)->code () == TYPE_CODE_STRUCT)
+				  && (($1)->code () == TYPE_CODE_STRUCT))
 				write_exp_elt_opcode (pstate, UNOP_IND);
 			    }
 			  write_exp_elt_opcode (pstate, UNOP_CAST);
@@ -601,7 +602,7 @@ exp	:	THIS
 			    this_type = NULL;
 			  if (this_type)
 			    {
-			      if (TYPE_CODE (this_type) == TYPE_CODE_PTR)
+			      if (this_type->code () == TYPE_CODE_PTR)
 				{
 				  this_type = TYPE_TARGET_TYPE (this_type);
 				  write_exp_elt_opcode (pstate, UNOP_IND);
@@ -666,10 +667,10 @@ qualified_name:	typebase COLONCOLON name
 			{
 			  struct type *type = $1;
 
-			  if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-			      && TYPE_CODE (type) != TYPE_CODE_UNION)
+			  if (type->code () != TYPE_CODE_STRUCT
+			      && type->code () != TYPE_CODE_UNION)
 			    error (_("`%s' is not defined as an aggregate type."),
-				   TYPE_NAME (type));
+				   type->name ());
 
 			  write_exp_elt_opcode (pstate, OP_SCOPE);
 			  write_exp_elt_type (pstate, type);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-lang.c ./gdb/p-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-lang.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/p-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Pascal language support routines for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -100,11 +100,11 @@ is_pascal_string_type (struct type *type
 		       struct type **char_type,
 		       const char **arrayname)
 {
-  if (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type != NULL && type->code () == TYPE_CODE_STRUCT)
     {
       /* Old Borland type pascal strings from Free Pascal Compiler.  */
       /* Two fields: length and st.  */
-      if (TYPE_NFIELDS (type) == 2
+      if (type->num_fields () == 2
 	  && TYPE_FIELD_NAME (type, 0)
 	  && strcmp (TYPE_FIELD_NAME (type, 0), "length") == 0
 	  && TYPE_FIELD_NAME (type, 1)
@@ -113,18 +113,18 @@ is_pascal_string_type (struct type *type
           if (length_pos)
 	    *length_pos = TYPE_FIELD_BITPOS (type, 0) / TARGET_CHAR_BIT;
           if (length_size)
-	    *length_size = TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
+	    *length_size = TYPE_LENGTH (type->field (0).type ());
           if (string_pos)
 	    *string_pos = TYPE_FIELD_BITPOS (type, 1) / TARGET_CHAR_BIT;
           if (char_type)
-	    *char_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 1));
+	    *char_type = TYPE_TARGET_TYPE (type->field (1).type ());
  	  if (arrayname)
 	    *arrayname = TYPE_FIELD_NAME (type, 1);
          return 2;
         };
       /* GNU pascal strings.  */
       /* Three fields: Capacity, length and schema$ or _p_schema.  */
-      if (TYPE_NFIELDS (type) == 3
+      if (type->num_fields () == 3
 	  && TYPE_FIELD_NAME (type, 0)
 	  && strcmp (TYPE_FIELD_NAME (type, 0), "Capacity") == 0
 	  && TYPE_FIELD_NAME (type, 1)
@@ -133,15 +133,15 @@ is_pascal_string_type (struct type *type
 	  if (length_pos)
 	    *length_pos = TYPE_FIELD_BITPOS (type, 1) / TARGET_CHAR_BIT;
 	  if (length_size)
-	    *length_size = TYPE_LENGTH (TYPE_FIELD_TYPE (type, 1));
+	    *length_size = TYPE_LENGTH (type->field (1).type ());
 	  if (string_pos)
 	    *string_pos = TYPE_FIELD_BITPOS (type, 2) / TARGET_CHAR_BIT;
           /* FIXME: how can I detect wide chars in GPC ??  */
           if (char_type)
 	    {
-	      *char_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 2));
+	      *char_type = TYPE_TARGET_TYPE (type->field (2).type ());
 
-	      if (TYPE_CODE (*char_type) == TYPE_CODE_ARRAY)
+	      if ((*char_type)->code () == TYPE_CODE_ARRAY)
 		*char_type = TYPE_TARGET_TYPE (*char_type);
 	    }
  	  if (arrayname)
@@ -152,16 +152,6 @@ is_pascal_string_type (struct type *type
   return 0;
 }
 
-/* This is a wrapper around IS_PASCAL_STRING_TYPE that returns true if TYPE
-   is a string.  */
-
-static bool
-pascal_is_string_type_p (struct type *type)
-{
-  return is_pascal_string_type (type, nullptr, nullptr, nullptr,
-				nullptr, nullptr) > 0;
-}
-
 static void pascal_one_char (int, struct ui_file *, int *);
 
 /* Print the character C on STREAM as part of the contents of a literal
@@ -192,23 +182,6 @@ pascal_one_char (int c, struct ui_file *
     }
 }
 
-static void pascal_emit_char (int c, struct type *type,
-			      struct ui_file *stream, int quoter);
-
-/* Print the character C on STREAM as part of the contents of a literal
-   string whose delimiter is QUOTER.  Note that that format for printing
-   characters and strings is language specific.  */
-
-static void
-pascal_emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
-{
-  int in_quotes = 0;
-
-  pascal_one_char (c, stream, &in_quotes);
-  if (in_quotes)
-    fputs_filtered ("'", stream);
-}
-
 void
 pascal_printchar (int c, struct type *type, struct ui_file *stream)
 {
@@ -219,106 +192,6 @@ pascal_printchar (int c, struct type *ty
     fputs_filtered ("'", stream);
 }
 
-/* Print the character string STRING, printing at most LENGTH characters.
-   Printing stops early if the number hits print_max; repeat counts
-   are printed as appropriate.  Print ellipses at the end if we
-   had to stop before printing LENGTH characters, or if FORCE_ELLIPSES.  */
-
-void
-pascal_printstr (struct ui_file *stream, struct type *type,
-		 const gdb_byte *string, unsigned int length,
-		 const char *encoding, int force_ellipses,
-		 const struct value_print_options *options)
-{
-  enum bfd_endian byte_order = type_byte_order (type);
-  unsigned int i;
-  unsigned int things_printed = 0;
-  int in_quotes = 0;
-  int need_comma = 0;
-  int width;
-
-  /* Preserve TYPE's original type, just set its LENGTH.  */
-  check_typedef (type);
-  width = TYPE_LENGTH (type);
-
-  /* If the string was not truncated due to `set print elements', and
-     the last byte of it is a null, we don't print that, in traditional C
-     style.  */
-  if ((!force_ellipses) && length > 0
-	&& extract_unsigned_integer (string + (length - 1) * width, width,
-				     byte_order) == 0)
-    length--;
-
-  if (length == 0)
-    {
-      fputs_filtered ("''", stream);
-      return;
-    }
-
-  for (i = 0; i < length && things_printed < options->print_max; ++i)
-    {
-      /* Position of the character we are examining
-         to see whether it is repeated.  */
-      unsigned int rep1;
-      /* Number of repetitions we have detected so far.  */
-      unsigned int reps;
-      unsigned long int current_char;
-
-      QUIT;
-
-      if (need_comma)
-	{
-	  fputs_filtered (", ", stream);
-	  need_comma = 0;
-	}
-
-      current_char = extract_unsigned_integer (string + i * width, width,
-					       byte_order);
-
-      rep1 = i + 1;
-      reps = 1;
-      while (rep1 < length
-	     && extract_unsigned_integer (string + rep1 * width, width,
-					  byte_order) == current_char)
-	{
-	  ++rep1;
-	  ++reps;
-	}
-
-      if (reps > options->repeat_count_threshold)
-	{
-	  if (in_quotes)
-	    {
-	      fputs_filtered ("', ", stream);
-	      in_quotes = 0;
-	    }
-	  pascal_printchar (current_char, type, stream);
-	  fprintf_filtered (stream, " %p[<repeats %u times>%p]",
-			    metadata_style.style ().ptr (),
-			    reps, nullptr);
-	  i = rep1 - 1;
-	  things_printed += options->repeat_count_threshold;
-	  need_comma = 1;
-	}
-      else
-	{
-	  if ((!in_quotes) && (PRINT_LITERAL_FORM (current_char)))
-	    {
-	      fputs_filtered ("'", stream);
-	      in_quotes = 1;
-	    }
-	  pascal_one_char (current_char, stream, &in_quotes);
-	  ++things_printed;
-	}
-    }
-
-  /* Terminate the quotes if necessary.  */
-  if (in_quotes)
-    fputs_filtered ("'", stream);
-
-  if (force_ellipses || i < length)
-    fputs_filtered ("...", stream);
-}
 
 
 /* Table mapping opcodes into strings for printing operators
@@ -375,61 +248,14 @@ enum pascal_primitive_types {
   nr_pascal_primitive_types
 };
 
-static void
-pascal_language_arch_info (struct gdbarch *gdbarch,
-			   struct language_arch_info *lai)
-{
-  const struct builtin_type *builtin = builtin_type (gdbarch);
-
-  lai->string_char_type = builtin->builtin_char;
-  lai->primitive_type_vector
-    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_pascal_primitive_types + 1,
-                              struct type *);
-  lai->primitive_type_vector [pascal_primitive_type_int]
-    = builtin->builtin_int;
-  lai->primitive_type_vector [pascal_primitive_type_long]
-    = builtin->builtin_long;
-  lai->primitive_type_vector [pascal_primitive_type_short]
-    = builtin->builtin_short;
-  lai->primitive_type_vector [pascal_primitive_type_char]
-    = builtin->builtin_char;
-  lai->primitive_type_vector [pascal_primitive_type_float]
-    = builtin->builtin_float;
-  lai->primitive_type_vector [pascal_primitive_type_double]
-    = builtin->builtin_double;
-  lai->primitive_type_vector [pascal_primitive_type_void]
-    = builtin->builtin_void;
-  lai->primitive_type_vector [pascal_primitive_type_long_long]
-    = builtin->builtin_long_long;
-  lai->primitive_type_vector [pascal_primitive_type_signed_char]
-    = builtin->builtin_signed_char;
-  lai->primitive_type_vector [pascal_primitive_type_unsigned_char]
-    = builtin->builtin_unsigned_char;
-  lai->primitive_type_vector [pascal_primitive_type_unsigned_short]
-    = builtin->builtin_unsigned_short;
-  lai->primitive_type_vector [pascal_primitive_type_unsigned_int]
-    = builtin->builtin_unsigned_int;
-  lai->primitive_type_vector [pascal_primitive_type_unsigned_long]
-    = builtin->builtin_unsigned_long;
-  lai->primitive_type_vector [pascal_primitive_type_unsigned_long_long]
-    = builtin->builtin_unsigned_long_long;
-  lai->primitive_type_vector [pascal_primitive_type_long_double]
-    = builtin->builtin_long_double;
-  lai->primitive_type_vector [pascal_primitive_type_complex]
-    = builtin->builtin_complex;
-  lai->primitive_type_vector [pascal_primitive_type_double_complex]
-    = builtin->builtin_double_complex;
-
-  lai->bool_type_symbol = "boolean";
-  lai->bool_type_default = builtin->builtin_bool;
-}
-
 static const char *p_extensions[] =
 {
   ".pas", ".p", ".pp", NULL
 };
 
-extern const struct language_defn pascal_language_defn =
+/* Constant data representing the Pascal language.  */
+
+extern const struct language_data pascal_language_data =
 {
   "pascal",			/* Language name */
   "Pascal",
@@ -440,39 +266,240 @@ extern const struct language_defn pascal
   macro_expansion_no,
   p_extensions,
   &exp_descriptor_standard,
-  pascal_parse,
-  null_post_parser,
-  pascal_printchar,		/* Print a character constant */
-  pascal_printstr,		/* Function to print string constant */
-  pascal_emit_char,		/* Print a single char */
-  pascal_print_type,		/* Print a type using appropriate syntax */
-  pascal_print_typedef,		/* Print a typedef using appropriate syntax */
-  pascal_val_print,		/* Print a value using appropriate syntax */
-  pascal_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  NULL,				/* Language specific skip_trampoline */
   "this",		        /* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
-  basic_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  NULL,				/* Language specific symbol demangler */
-  NULL,
-  NULL,				/* Language specific class_name_from_physname */
   pascal_op_print_tab,		/* expression operators for printing */
   1,				/* c-style arrays */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  pascal_language_arch_info,
-  default_print_array_index,
-  default_pass_by_reference,
-  c_watch_location_expression,
-  NULL,				/* la_compare_symbol_for_completion */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  pascal_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
+
+/* Class representing the Pascal language.  */
+
+class pascal_language : public language_defn
+{
+public:
+  pascal_language ()
+    : language_defn (language_pascal, pascal_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    const struct builtin_type *builtin = builtin_type (gdbarch);
+
+    lai->string_char_type = builtin->builtin_char;
+    lai->primitive_type_vector
+      = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_pascal_primitive_types + 1,
+                              struct type *);
+    lai->primitive_type_vector [pascal_primitive_type_int]
+      = builtin->builtin_int;
+    lai->primitive_type_vector [pascal_primitive_type_long]
+      = builtin->builtin_long;
+    lai->primitive_type_vector [pascal_primitive_type_short]
+      = builtin->builtin_short;
+    lai->primitive_type_vector [pascal_primitive_type_char]
+      = builtin->builtin_char;
+    lai->primitive_type_vector [pascal_primitive_type_float]
+      = builtin->builtin_float;
+    lai->primitive_type_vector [pascal_primitive_type_double]
+      = builtin->builtin_double;
+    lai->primitive_type_vector [pascal_primitive_type_void]
+      = builtin->builtin_void;
+    lai->primitive_type_vector [pascal_primitive_type_long_long]
+      = builtin->builtin_long_long;
+    lai->primitive_type_vector [pascal_primitive_type_signed_char]
+      = builtin->builtin_signed_char;
+    lai->primitive_type_vector [pascal_primitive_type_unsigned_char]
+      = builtin->builtin_unsigned_char;
+    lai->primitive_type_vector [pascal_primitive_type_unsigned_short]
+      = builtin->builtin_unsigned_short;
+    lai->primitive_type_vector [pascal_primitive_type_unsigned_int]
+      = builtin->builtin_unsigned_int;
+    lai->primitive_type_vector [pascal_primitive_type_unsigned_long]
+      = builtin->builtin_unsigned_long;
+    lai->primitive_type_vector [pascal_primitive_type_unsigned_long_long]
+      = builtin->builtin_unsigned_long_long;
+    lai->primitive_type_vector [pascal_primitive_type_long_double]
+      = builtin->builtin_long_double;
+    lai->primitive_type_vector [pascal_primitive_type_complex]
+      = builtin->builtin_complex;
+    lai->primitive_type_vector [pascal_primitive_type_double_complex]
+      = builtin->builtin_double_complex;
+
+    lai->bool_type_symbol = "boolean";
+    lai->bool_type_default = builtin->builtin_bool;
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    pascal_print_type (type, varstring, stream, show, level, flags);
+  }
+
+  /* See language.h.  */
+
+  void value_print (struct value *val, struct ui_file *stream,
+		    const struct value_print_options *options) const override
+  {
+    return pascal_value_print (val, stream, options);
+  }
+
+  /* See language.h.  */
+
+  void value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const override
+  {
+    return pascal_value_print_inner (val, stream, recurse, options);
+  }
+
+  /* See language.h.  */
+
+  int parser (struct parser_state *ps) const override
+  {
+    return pascal_parse (ps);
+  }
+
+  /* See language.h.  */
+
+  void emitchar (int ch, struct type *chtype,
+		 struct ui_file *stream, int quoter) const override
+  {
+    int in_quotes = 0;
+
+    pascal_one_char (ch, stream, &in_quotes);
+    if (in_quotes)
+      fputs_filtered ("'", stream);
+  }
+
+  /* See language.h.  */
+
+  void printchar (int ch, struct type *chtype,
+		  struct ui_file *stream) const override
+  {
+    pascal_printchar (ch, chtype, stream);
+  }
+
+  /* See language.h.  */
+
+  void printstr (struct ui_file *stream, struct type *elttype,
+		 const gdb_byte *string, unsigned int length,
+		 const char *encoding, int force_ellipses,
+		 const struct value_print_options *options) const override
+  {
+    enum bfd_endian byte_order = type_byte_order (elttype);
+    unsigned int i;
+    unsigned int things_printed = 0;
+    int in_quotes = 0;
+    int need_comma = 0;
+    int width;
+
+    /* Preserve ELTTYPE's original type, just set its LENGTH.  */
+    check_typedef (elttype);
+    width = TYPE_LENGTH (elttype);
+
+    /* If the string was not truncated due to `set print elements', and
+       the last byte of it is a null, we don't print that, in traditional C
+       style.  */
+    if ((!force_ellipses) && length > 0
+	&& extract_unsigned_integer (string + (length - 1) * width, width,
+				     byte_order) == 0)
+      length--;
+
+    if (length == 0)
+      {
+	fputs_filtered ("''", stream);
+	return;
+      }
+
+    for (i = 0; i < length && things_printed < options->print_max; ++i)
+      {
+	/* Position of the character we are examining
+	   to see whether it is repeated.  */
+	unsigned int rep1;
+	/* Number of repetitions we have detected so far.  */
+	unsigned int reps;
+	unsigned long int current_char;
+
+	QUIT;
+
+	if (need_comma)
+	  {
+	    fputs_filtered (", ", stream);
+	    need_comma = 0;
+	  }
+
+	current_char = extract_unsigned_integer (string + i * width, width,
+						 byte_order);
+
+	rep1 = i + 1;
+	reps = 1;
+	while (rep1 < length
+	       && extract_unsigned_integer (string + rep1 * width, width,
+					    byte_order) == current_char)
+	  {
+	    ++rep1;
+	    ++reps;
+	  }
+
+	if (reps > options->repeat_count_threshold)
+	  {
+	    if (in_quotes)
+	      {
+		fputs_filtered ("', ", stream);
+		in_quotes = 0;
+	      }
+	    pascal_printchar (current_char, elttype, stream);
+	    fprintf_filtered (stream, " %p[<repeats %u times>%p]",
+			      metadata_style.style ().ptr (),
+			      reps, nullptr);
+	    i = rep1 - 1;
+	    things_printed += options->repeat_count_threshold;
+	    need_comma = 1;
+	  }
+	else
+	  {
+	    if ((!in_quotes) && (PRINT_LITERAL_FORM (current_char)))
+	      {
+		fputs_filtered ("'", stream);
+		in_quotes = 1;
+	      }
+	    pascal_one_char (current_char, stream, &in_quotes);
+	    ++things_printed;
+	  }
+      }
+
+    /* Terminate the quotes if necessary.  */
+    if (in_quotes)
+      fputs_filtered ("'", stream);
+
+    if (force_ellipses || i < length)
+      fputs_filtered ("...", stream);
+  }
+
+  /* See language.h.  */
+
+  void print_typedef (struct type *type, struct symbol *new_symbol,
+		      struct ui_file *stream) const override
+  {
+    pascal_print_typedef (type, new_symbol, stream);
+  }
+
+  /* See language.h.  */
+
+  bool is_string_type_p (struct type *type) const override
+  {
+    return is_pascal_string_type (type, nullptr, nullptr, nullptr,
+				  nullptr, nullptr) > 0;
+  }
+};
+
+/* Single instance of the Pascal language class.  */
+
+static pascal_language pascal_language_defn;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-lang.h ./gdb/p-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-lang.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/p-lang.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Pascal language support definitions for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -37,10 +37,10 @@ extern void pascal_print_type (struct ty
 extern void pascal_print_typedef (struct type *, struct symbol *,
 				  struct ui_file *);
 
-extern void pascal_val_print (struct type *, int,
-			      CORE_ADDR, struct ui_file *, int,
-			      struct value *,
-			      const struct value_print_options *);
+/* Implement la_value_print_inner for Pascal.  */
+
+extern void pascal_value_print_inner (struct value *, struct ui_file *, int,
+				      const struct value_print_options *);
 
 extern void pascal_value_print (struct value *, struct ui_file *,
 				const struct value_print_options *);
@@ -56,10 +56,6 @@ extern int
 
 extern void pascal_printchar (int, struct type *, struct ui_file *);
 
-extern void pascal_printstr (struct ui_file *, struct type *, const gdb_byte *,
-			     unsigned int, const char *, int,
-			     const struct value_print_options *);
-
 extern struct type **const pascal_builtin_types[];
 
 /* These are in p-typeprint.c: */
@@ -72,14 +68,6 @@ extern void
   pascal_type_print_varspec_prefix (struct type *, struct ui_file *, int, int,
 				    const struct type_print_options *);
 
-extern void pascal_object_print_value_fields (struct type *, const gdb_byte *,
-					      LONGEST,
-					      CORE_ADDR, struct ui_file *,
-					      int,
-					      struct value *,
-					      const struct value_print_options *,
-					      struct type **, int);
-
 extern int pascal_object_is_vtbl_ptr_type (struct type *);
 
 extern int pascal_object_is_vtbl_member (struct type *);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/po/gdb.pot ./gdb/po/gdb.pot
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/po/gdb.pot	2020-03-07 02:11:15.000000000 +0000
+++ ./gdb/po/gdb.pot	2021-05-21 02:00:07.000000000 +0000
@@ -8,66 +8,67 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-03-07 02:11+0000\n"
+"POT-Creation-Date: 2021-05-21 02:00+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"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: aarch64-fbsd-nat.c:71 aarch64-fbsd-nat.c:103 alpha-bsd-nat.c:103
-#: alpha-bsd-nat.c:134 amd64-bsd-nat.c:55 amd64-bsd-nat.c:131
-#: amd64-fbsd-nat.c:172 amd64-linux-nat.c:225 amd64-linux-nat.c:309
-#: arm-fbsd-nat.c:74 arm-fbsd-nat.c:107 hppa-nbsd-nat.c:180
-#: hppa-nbsd-nat.c:209 hppa-obsd-nat.c:206 hppa-obsd-nat.c:233
-#: i386-bsd-nat.c:140 i386-bsd-nat.c:230 i386-linux-nat.c:223
-#: i386-linux-nat.c:238 m32r-linux-nat.c:121 m32r-linux-nat.c:170
-#: m68k-bsd-nat.c:127 m68k-bsd-nat.c:156 m68k-linux-nat.c:268
-#: m68k-linux-nat.c:283 mips64-obsd-nat.c:95 mips64-obsd-nat.c:110
-#: mips-fbsd-nat.c:74 mips-fbsd-nat.c:105 mips-linux-nat.c:286
-#: mips-linux-nat.c:367 mips-nbsd-nat.c:60 mips-nbsd-nat.c:90
-#: ppc-fbsd-nat.c:133 ppc-fbsd-nat.c:159 ppc-nbsd-nat.c:98 ppc-nbsd-nat.c:127
+#: aarch64-fbsd-nat.c:71 aarch64-fbsd-nat.c:103 alpha-bsd-nat.c:66
+#: alpha-bsd-nat.c:99 amd64-bsd-nat.c:71 amd64-bsd-nat.c:147
+#: amd64-fbsd-nat.c:172 amd64-linux-nat.c:225 amd64-linux-nat.c:285
+#: arm-fbsd-nat.c:74 arm-fbsd-nat.c:107 hppa-nbsd-nat.c:181 hppa-nbsd-nat.c:211
+#: hppa-obsd-nat.c:206 hppa-obsd-nat.c:233 i386-bsd-nat.c:155
+#: i386-bsd-nat.c:247 i386-linux-nat.c:223 i386-linux-nat.c:238
+#: m32r-linux-nat.c:121 m32r-linux-nat.c:170 m68k-bsd-nat.c:131
+#: m68k-bsd-nat.c:161 m68k-linux-nat.c:268 m68k-linux-nat.c:283
+#: mips64-obsd-nat.c:95 mips64-obsd-nat.c:110 mips-fbsd-nat.c:74
+#: mips-fbsd-nat.c:105 mips-linux-nat.c:286 mips-linux-nat.c:367
+#: mips-nbsd-nat.c:62 mips-nbsd-nat.c:92 nat/riscv-linux-tdesc.c:73
+#: ppc-fbsd-nat.c:133 ppc-fbsd-nat.c:159 ppc-nbsd-nat.c:102 ppc-nbsd-nat.c:132
 #: ppc-obsd-nat.c:88 ppc-obsd-nat.c:122 riscv-fbsd-nat.c:75
-#: riscv-fbsd-nat.c:107 riscv-linux-nat.c:217 riscv-linux-nat.c:235
-#: riscv-linux-nat.c:272 riscv-linux-nat.c:296 s390-linux-nat.c:281
-#: s390-linux-nat.c:298 sh-nbsd-nat.c:62 sh-nbsd-nat.c:84 sparc-nat.c:170
-#: sparc-nat.c:203 tilegx-linux-nat.c:143 tilegx-linux-nat.c:159
-#: vax-bsd-nat.c:80 vax-bsd-nat.c:95 xtensa-linux-nat.c:211
+#: riscv-fbsd-nat.c:107 riscv-linux-nat.c:230 riscv-linux-nat.c:250
+#: riscv-linux-nat.c:287 riscv-linux-nat.c:313 s390-linux-nat.c:281
+#: s390-linux-nat.c:298 sh-nbsd-nat.c:64 sh-nbsd-nat.c:87 sparc-nat.c:169
+#: sparc-nat.c:205 tilegx-linux-nat.c:143 tilegx-linux-nat.c:159
+#: vax-bsd-nat.c:84 vax-bsd-nat.c:100 xtensa-linux-nat.c:211
 #: xtensa-linux-nat.c:230
 msgid "Couldn't get registers"
 msgstr ""
 
-#: aarch64-fbsd-nat.c:82 aarch64-fbsd-nat.c:117 alpha-bsd-nat.c:117
-#: alpha-bsd-nat.c:153 amd64-bsd-nat.c:108 amd64-bsd-nat.c:196
-#: amd64-linux-nat.c:258 amd64-linux-nat.c:344 arm-fbsd-nat.c:86
-#: arm-fbsd-nat.c:122 hppa-nbsd-nat.c:190 hppa-nbsd-nat.c:222
-#: hppa-obsd-nat.c:216 hppa-obsd-nat.c:246 i386-bsd-nat.c:208
-#: i386-bsd-nat.c:310 i386-linux-nat.c:287 i386-linux-nat.c:301
-#: m68k-bsd-nat.c:137 m68k-bsd-nat.c:169 m68k-linux-nat.c:362
+#: aarch64-fbsd-nat.c:82 aarch64-fbsd-nat.c:117 alpha-bsd-nat.c:80
+#: alpha-bsd-nat.c:118 amd64-bsd-nat.c:124 amd64-bsd-nat.c:212
+#: amd64-linux-nat.c:258 amd64-linux-nat.c:320 arm-fbsd-nat.c:86
+#: arm-fbsd-nat.c:122 hppa-nbsd-nat.c:191 hppa-nbsd-nat.c:224
+#: hppa-obsd-nat.c:216 hppa-obsd-nat.c:246 i386-bsd-nat.c:225
+#: i386-bsd-nat.c:330 i386-linux-nat.c:287 i386-linux-nat.c:301
+#: m68k-bsd-nat.c:141 m68k-bsd-nat.c:174 m68k-linux-nat.c:362
 #: m68k-linux-nat.c:376 mips-fbsd-nat.c:84 mips-fbsd-nat.c:119
-#: mips-nbsd-nat.c:73 mips-nbsd-nat.c:107 ppc-obsd-nat.c:104
-#: ppc-obsd-nat.c:141 riscv-fbsd-nat.c:86 riscv-fbsd-nat.c:121
-#: s390-linux-nat.c:318 s390-linux-nat.c:335 sparc-nat.c:182
+#: mips-nbsd-nat.c:75 mips-nbsd-nat.c:109 ppc-obsd-nat.c:104 ppc-obsd-nat.c:141
+#: riscv-fbsd-nat.c:86 riscv-fbsd-nat.c:121 s390-linux-nat.c:318
+#: s390-linux-nat.c:335 sparc-nat.c:187
 msgid "Couldn't get floating point status"
 msgstr ""
 
-#: aarch64-fbsd-nat.c:109 alpha-bsd-nat.c:140 amd64-bsd-nat.c:136
-#: amd64-linux-nat.c:314 arm-fbsd-nat.c:113 hppa-nbsd-nat.c:214
-#: hppa-obsd-nat.c:238 i386-bsd-nat.c:235 i386-linux-nat.c:243
-#: m32r-linux-nat.c:175 m68k-bsd-nat.c:161 m68k-linux-nat.c:288
-#: mips64-obsd-nat.c:115 mips-fbsd-nat.c:111 mips-nbsd-nat.c:95
-#: ppc-fbsd-nat.c:164 ppc-nbsd-nat.c:133 ppc-obsd-nat.c:132
-#: riscv-fbsd-nat.c:113 s390-linux-nat.c:303 sparc-nat.c:208
-#: tilegx-linux-nat.c:164 vax-bsd-nat.c:100 xtensa-linux-nat.c:238
+#: aarch64-fbsd-nat.c:109 alpha-bsd-nat.c:105 amd64-bsd-nat.c:152
+#: amd64-linux-nat.c:290 arm-fbsd-nat.c:113 hppa-nbsd-nat.c:216
+#: hppa-obsd-nat.c:238 i386-bsd-nat.c:252 i386-linux-nat.c:243
+#: m32r-linux-nat.c:175 m68k-bsd-nat.c:166 m68k-linux-nat.c:288
+#: mips64-obsd-nat.c:115 mips-fbsd-nat.c:111 mips-nbsd-nat.c:97
+#: ppc-fbsd-nat.c:164 ppc-nbsd-nat.c:138 ppc-obsd-nat.c:132
+#: riscv-fbsd-nat.c:113 s390-linux-nat.c:303 sparc-nat.c:210
+#: tilegx-linux-nat.c:164 vax-bsd-nat.c:105 xtensa-linux-nat.c:238
 msgid "Couldn't write registers"
 msgstr ""
 
-#: aarch64-fbsd-nat.c:123 alpha-bsd-nat.c:159 amd64-bsd-nat.c:201
-#: amd64-linux-nat.c:349 arm-fbsd-nat.c:128 hppa-nbsd-nat.c:227
-#: hppa-obsd-nat.c:251 i386-bsd-nat.c:315 i386-linux-nat.c:306
-#: m68k-bsd-nat.c:174 m68k-linux-nat.c:381 mips-fbsd-nat.c:125
-#: mips-nbsd-nat.c:112 ppc-obsd-nat.c:147 riscv-fbsd-nat.c:127
+#: aarch64-fbsd-nat.c:123 alpha-bsd-nat.c:124 amd64-bsd-nat.c:217
+#: amd64-linux-nat.c:325 arm-fbsd-nat.c:128 hppa-nbsd-nat.c:229
+#: hppa-obsd-nat.c:251 i386-bsd-nat.c:336 i386-linux-nat.c:306
+#: m68k-bsd-nat.c:179 m68k-linux-nat.c:381 mips-fbsd-nat.c:125
+#: mips-nbsd-nat.c:114 ppc-obsd-nat.c:147 riscv-fbsd-nat.c:127
 #: s390-linux-nat.c:340
 msgid "Couldn't write floating point status"
 msgstr ""
@@ -121,7 +122,7 @@ msgstr ""
 msgid "Show whether to show variables that mirror the AArch64 debug registers."
 msgstr ""
 
-#: aarch64-linux-nat.c:988 mips-linux-nat.c:792 x86-nat.c:280
+#: aarch64-linux-nat.c:988 mips-linux-nat.c:793 x86-nat.c:280
 msgid ""
 "Use \"on\" to enable, \"off\" to disable.\n"
 "If enabled, the debug registers values are shown when GDB inserts\n"
@@ -153,14 +154,14 @@ msgstr ""
 msgid "SVE Vector length in core file is invalid. (VQ=%s"
 msgstr ""
 
-#: aarch64-linux-tdep.c:714 arm-linux-tdep.c:1204 i386-tdep.c:4133
-#: i386-tdep.c:4242 i386-tdep.c:4257 ppc-linux-tdep.c:1710 stap-probe.c:775
+#: aarch64-linux-tdep.c:714 arm-linux-tdep.c:1206 i386-tdep.c:4183
+#: i386-tdep.c:4292 i386-tdep.c:4307 ppc-linux-tdep.c:1710 stap-probe.c:775
 #, possible-c-format
 msgid "Invalid register name `%s' on expression `%s'."
 msgstr ""
 
-#: aarch64-linux-tdep.c:1394 amd64-linux-tdep.c:1498 arm-linux-tdep.c:1666
-#: i386-linux-tdep.c:468 s390-linux-tdep.c:817
+#: aarch64-linux-tdep.c:1394 amd64-linux-tdep.c:1498 arm-linux-tdep.c:1668
+#: i386-linux-tdep.c:469 s390-linux-tdep.c:817
 #, possible-c-format
 msgid "Process record and replay target doesn't support syscall number %s\n"
 msgstr ""
@@ -170,55 +171,55 @@ msgstr ""
 msgid "AArch64 debugging is %s.\n"
 msgstr ""
 
-#: aarch64-tdep.c:1120 arm-tdep.c:3077
+#: aarch64-tdep.c:1259 arm-tdep.c:3189
 #, possible-c-format
 msgid "Unexpected register %d"
 msgstr ""
 
-#: aarch64-tdep.c:2432
+#: aarch64-tdep.c:2604
 #, possible-c-format
 msgid "aarch64_pseudo_register_name: bad register number %d"
 msgstr ""
 
-#: aarch64-tdep.c:2468
+#: aarch64-tdep.c:2640
 #, possible-c-format
 msgid "aarch64_pseudo_register_type: bad register number %d"
 msgstr ""
 
-#: aarch64-tdep.c:3082 gdbserver/linux-aarch64-tdesc.c:35
+#: aarch64-tdep.c:3287
 #, possible-c-format
 msgid "VQ is %<PRIu64>, maximum supported value is %d"
 msgstr ""
 
-#: aarch64-tdep.c:3173
+#: aarch64-tdep.c:3378
 #, possible-c-format
 msgid "VQ out of bounds: %s (max %d)"
 msgstr ""
 
-#: aarch64-tdep.c:3216
+#: aarch64-tdep.c:3421
 msgid "Program contains both fpu and SVE features."
 msgstr ""
 
-#: aarch64-tdep.c:3398
+#: aarch64-tdep.c:3607
 #, possible-c-format
 msgid "aarch64_dump_tdep: Lowest pc = 0x%s"
 msgstr ""
 
 #. Debug this file's internals.
-#: aarch64-tdep.c:3416
+#: aarch64-tdep.c:3626
 msgid "Set AArch64 debugging."
 msgstr ""
 
-#: aarch64-tdep.c:3417
+#: aarch64-tdep.c:3627
 msgid "Show AArch64 debugging."
 msgstr ""
 
-#: aarch64-tdep.c:3418
+#: aarch64-tdep.c:3628
 msgid "When on, AArch64 specific debugging is enabled."
 msgstr ""
 
 #. We need to save SPSR value, which is not yet done.
-#: aarch64-tdep.c:4394 arm-tdep.c:11052 arm-tdep.c:12071
+#: aarch64-tdep.c:4604 arm-tdep.c:11167 arm-tdep.c:12186
 #, possible-c-format
 msgid "Process record does not support instruction 0x%0x at address %s.\n"
 msgstr ""
@@ -274,12 +275,12 @@ msgstr ""
 msgid "Internal error in encoding of renaming declaration"
 msgstr ""
 
-#: ada-exp.y:977 c-exp.y:961 p-exp.y:630
+#: ada-exp.y:977 c-exp.y:1001 p-exp.y:631
 #, possible-c-format
 msgid "No file or function \"%s\"."
 msgstr ""
 
-#: ada-exp.y:979 c-exp.y:978 m2-exp.y:523 p-exp.y:644
+#: ada-exp.y:979 c-exp.y:1018 m2-exp.y:522 p-exp.y:645
 #, possible-c-format
 msgid "No function \"%s\" in specified context."
 msgstr ""
@@ -303,9 +304,9 @@ msgstr ""
 msgid "No definition of \"%s\" found."
 msgstr ""
 
-#: ada-exp.y:1327 c-exp.y:1087 c-exp.y:1140 cli/cli-cmds.c:1165 d-exp.y:493
-#: f-exp.y:506 go-exp.y:579 linespec.c:1623 linespec.c:3824 p-exp.y:707
-#: p-exp.y:766 source.c:214 symtab.c:4305
+#: ada-exp.y:1327 c-exp.y:1127 c-exp.y:1180 cli/cli-cmds.c:1217 d-exp.y:493
+#: f-exp.y:506 go-exp.y:579 linespec.c:1621 linespec.c:3823 p-exp.y:708
+#: p-exp.y:767 source.c:243 symtab.c:4341
 msgid "No symbol table is loaded.  Use the \"file\" command."
 msgstr ""
 
@@ -328,458 +329,458 @@ msgstr ""
 msgid "Invalid use of type."
 msgstr ""
 
-#: ada-lang.c:599
+#: ada-lang.c:551
 #, possible-c-format
 msgid "Unable to find field %s in struct %s.  Aborting"
 msgstr ""
 
-#: ada-lang.c:720
+#: ada-lang.c:672
 msgid "object size is larger than varsize-limit"
 msgstr ""
 
-#: ada-lang.c:785
+#: ada-lang.c:751
 msgid "Unexpected type in ada_discrete_type_high_bound."
 msgstr ""
 
-#: ada-lang.c:806
+#: ada-lang.c:786
 msgid "Unexpected type in ada_discrete_type_low_bound."
 msgstr ""
 
-#: ada-lang.c:904
+#: ada-lang.c:881
 msgid "Invalid address for Ada main program name."
 msgstr ""
 
-#: ada-lang.c:986
+#: ada-lang.c:959
 #, possible-c-format
 msgid "invalid Ada operator name: %s"
 msgstr ""
 
-#: ada-lang.c:1647 ada-lang.c:1665 ada-lang.c:1679 ada-lang.c:1747
+#: ada-lang.c:1569 ada-lang.c:1587 ada-lang.c:1601 ada-lang.c:1669
 msgid "Bad GNAT array descriptor"
 msgstr ""
 
-#: ada-lang.c:1784
+#: ada-lang.c:1709
 msgid "Bad GNAT array descriptor bounds"
 msgstr ""
 
-#: ada-lang.c:2028
+#: ada-lang.c:1957
 msgid "Bounds unavailable for null array pointer."
 msgstr ""
 
-#: ada-lang.c:2117
+#: ada-lang.c:2046
 msgid "could not understand bit size information on packed array"
 msgstr ""
 
-#: ada-lang.c:2215
+#: ada-lang.c:2144
 msgid "could not find bounds information on packed array"
 msgstr ""
 
-#: ada-lang.c:2222
+#: ada-lang.c:2151
 msgid "could not understand bounds information on packed array"
 msgstr ""
 
-#: ada-lang.c:2256
+#: ada-lang.c:2185
 msgid "can't unpack array"
 msgstr ""
 
-#: ada-lang.c:2309
+#: ada-lang.c:2238
 msgid "attempt to do packed indexing of something other than a packed array"
 msgstr ""
 
-#: ada-lang.c:2319
+#: ada-lang.c:2248
 msgid "don't know bounds of array"
 msgstr ""
 
-#: ada-lang.c:2325
+#: ada-lang.c:2254
 #, possible-c-format
 msgid "packed array index %ld out of bounds"
 msgstr ""
 
-#: ada-lang.c:2397
+#: ada-lang.c:2326
 #, possible-c-format
 msgid "Cannot unpack %d bits into buffer of %d bytes"
 msgstr ""
 
-#: ada-lang.c:2626 ada-lang.c:9814 valops.c:990
+#: ada-lang.c:2555 ada-lang.c:9521 valops.c:990
 msgid "Left operand of assignment is not a modifiable lvalue."
 msgstr ""
 
-#: ada-lang.c:2748 ada-lang.c:2806
+#: ada-lang.c:2677 ada-lang.c:2734
 #, possible-c-format
 msgid "too many subscripts (%d expected)"
 msgstr ""
 
-#: ada-lang.c:2841 ada-lang.c:2869
+#: ada-lang.c:2770 ada-lang.c:2801
 msgid "unable to get positions in slice, use bounds instead"
 msgstr ""
 
-#: ada-lang.c:2964
+#: ada-lang.c:2896
 #, possible-c-format
 msgid "invalid dimension number to '%s"
 msgstr ""
 
-#: ada-lang.c:2983
+#: ada-lang.c:2915
 msgid "attempt to take bound of something that is not an array"
 msgstr ""
 
-#: ada-lang.c:3147
+#: ada-lang.c:3079
 msgid "Could not find operator name for opcode"
 msgstr ""
 
-#: ada-lang.c:3288 ada-lang.c:3301 linespec.c:1562
+#: ada-lang.c:3220 ada-lang.c:3233 linespec.c:1560
 msgid "one or more choice numbers"
 msgstr ""
 
-#: ada-lang.c:3308
+#: ada-lang.c:3240
 msgid "Argument must be choice number"
 msgstr ""
 
-#: ada-lang.c:3312
+#: ada-lang.c:3244
 msgid "cancelled"
 msgstr ""
 
-#: ada-lang.c:3339
+#: ada-lang.c:3271
 #, possible-c-format
 msgid "Select no more than %d of the above"
 msgstr ""
 
-#: ada-lang.c:3362
+#: ada-lang.c:3294
 msgid "Request to select 0 symbols!"
 msgstr ""
 
-#: ada-lang.c:3367 linespec.c:1541
+#: ada-lang.c:3299 linespec.c:1539
 msgid ""
 "canceled because the command is ambiguous\n"
 "See set/show multiple-symbol."
 msgstr ""
 
-#: ada-lang.c:3377
+#: ada-lang.c:3309
 msgid "[0] cancel\n"
 msgstr ""
 
-#: ada-lang.c:3379
+#: ada-lang.c:3311
 msgid "[1] all\n"
 msgstr ""
 
-#: ada-lang.c:3397
+#: ada-lang.c:3329
 #, possible-c-format
 msgid " at %p[<no source file available>%p]:%d\n"
 msgstr ""
 
-#: ada-lang.c:3401
+#: ada-lang.c:3333
 #, possible-c-format
 msgid " at %ps:%d\n"
 msgstr ""
 
-#: ada-lang.c:3423
+#: ada-lang.c:3355
 #, possible-c-format
 msgid " at %s:%d\n"
 msgstr ""
 
-#: ada-lang.c:3433
+#: ada-lang.c:3365
 #, possible-c-format
 msgid "'(%s) (enumeral)\n"
 msgstr ""
 
-#: ada-lang.c:3444
+#: ada-lang.c:3376
 #, possible-c-format
 msgid " in %s (enumeral)\n"
 msgstr ""
 
-#: ada-lang.c:3445
+#: ada-lang.c:3377
 #, possible-c-format
 msgid " at %s:?\n"
 msgstr ""
 
-#: ada-lang.c:3449
+#: ada-lang.c:3381
 msgid " (enumeral)\n"
 msgstr ""
 
-#: ada-lang.c:3450
+#: ada-lang.c:3382
 msgid " at ?\n"
 msgstr ""
 
-#: ada-lang.c:3655
+#: ada-lang.c:3565
 msgid "Unexpected operator during name resolution"
 msgstr ""
 
-#: ada-lang.c:3719
+#: ada-lang.c:3629
 #, possible-c-format
 msgid "No definition found for %s"
 msgstr ""
 
-#: ada-lang.c:3731 ada-lang.c:3781
+#: ada-lang.c:3641 ada-lang.c:3691
 #, possible-c-format
 msgid "Could not find a match for %s"
 msgstr ""
 
-#: ada-lang.c:3736 ada-lang.c:4025
+#: ada-lang.c:3646 ada-lang.c:3934
 #, possible-c-format
 msgid "Multiple matches for %s\n"
 msgstr ""
 
-#: ada-lang.c:4459 valops.c:2162
+#: ada-lang.c:4368 valops.c:2166
 #, possible-c-format
 msgid "There is no member named %s."
 msgstr ""
 
-#: ada-lang.c:4465
+#: ada-lang.c:4374
 msgid "Attempt to extract a component of a value that is not a record."
 msgstr ""
 
 #. PNH: Do we ever get here?  See ada_search_struct_field,
 #. find_struct_field.
-#: ada-lang.c:7491
+#: ada-lang.c:7208
 msgid "Cannot assign this kind of variant record"
 msgstr ""
 
-#: ada-lang.c:7560
+#: ada-lang.c:7276
 #, possible-c-format
 msgid "Type %s is not a structure or union type"
 msgstr ""
 
-#: ada-lang.c:7561
+#: ada-lang.c:7277
 msgid "(null)"
 msgstr ""
 
-#: ada-lang.c:7644 inferior.c:410
+#: ada-lang.c:7358 inferior.c:409
 msgid "<null>"
 msgstr ""
 
-#: ada-lang.c:7646
+#: ada-lang.c:7360
 #, possible-c-format
 msgid "Type %s has no component named %s"
 msgstr ""
 
-#: ada-lang.c:7930
+#: ada-lang.c:7630
 msgid "unexpected null name on descriptive type"
 msgstr ""
 
-#: ada-lang.c:8319
+#: ada-lang.c:8016
 #, possible-c-format
 msgid "Invalid type size for `%s' detected: %s."
 msgstr ""
 
-#: ada-lang.c:8322
+#: ada-lang.c:8019
 #, possible-c-format
 msgid "Invalid type size for <unnamed> detected: %s."
 msgstr ""
 
-#: ada-lang.c:8333
+#: ada-lang.c:8030
 msgid "record type with dynamic size is larger than varsize-limit"
 msgstr ""
 
-#: ada-lang.c:8773
+#: ada-lang.c:8474
 msgid "array type with dynamic size is larger than varsize-limit"
 msgstr ""
 
-#: ada-lang.c:8882
+#: ada-lang.c:8583
 #, possible-c-format
 msgid "unable to read value of %s (%s)"
 msgstr ""
 
-#: ada-lang.c:9171
+#: ada-lang.c:8871
 msgid "'POS only defined on discrete types"
 msgstr ""
 
-#: ada-lang.c:9174
+#: ada-lang.c:8875
 msgid "enumeration value is invalid: can't find 'POS"
 msgstr ""
 
-#: ada-lang.c:9191
-msgid "'VAL only defined on discrete types"
+#: ada-lang.c:8897
+msgid "argument to 'VAL out of range"
 msgstr ""
 
-#: ada-lang.c:9193
-msgid "'VAL requires integral argument"
+#: ada-lang.c:8907
+msgid "'VAL only defined on discrete types"
 msgstr ""
 
-#: ada-lang.c:9200
-msgid "argument to 'VAL out of range"
+#: ada-lang.c:8909
+msgid "'VAL requires integral argument"
 msgstr ""
 
-#: ada-lang.c:9526 ada-lang.c:9564
+#: ada-lang.c:9233 ada-lang.c:9271
 msgid "unable to determine array bounds"
 msgstr ""
 
-#: ada-lang.c:9605
+#: ada-lang.c:9312
 msgid "cannot assign arrays of different length"
 msgstr ""
 
-#: ada-lang.c:9619
+#: ada-lang.c:9326
 msgid "Incompatible types in assignment"
 msgstr ""
 
-#: ada-lang.c:9653
+#: ada-lang.c:9360
 #, possible-c-format
 msgid "second operand of %s must not be zero."
 msgstr ""
 
-#: ada-lang.c:9704
+#: ada-lang.c:9411
 msgid "Attempt to compare array with non-array"
 msgstr ""
 
-#: ada-lang.c:9830
+#: ada-lang.c:9537
 msgid "Left-hand side must be array or record."
 msgstr ""
 
-#: ada-lang.c:9855
+#: ada-lang.c:9562
 msgid "Misplaced 'others' clause"
 msgstr ""
 
-#: ada-lang.c:9860
+#: ada-lang.c:9567
 msgid "Internal error: bad aggregate clause"
 msgstr ""
 
-#: ada-lang.c:9882
+#: ada-lang.c:9589
 msgid "Extra components in aggregate ignored."
 msgstr ""
 
-#: ada-lang.c:9949
+#: ada-lang.c:9656
 msgid "Invalid record component association."
 msgstr ""
 
-#: ada-lang.c:9955
+#: ada-lang.c:9662
 #, possible-c-format
 msgid "Unknown component name: %s."
 msgstr ""
 
-#: ada-lang.c:9960
+#: ada-lang.c:9667
 msgid "Index in component association out of bounds."
 msgstr ""
 
-#: ada-lang.c:10036
+#: ada-lang.c:9743
 msgid "Internal error: miscounted aggregate components."
 msgstr ""
 
-#: ada-lang.c:10460
+#: ada-lang.c:10167
 msgid "Fixed-point values must be assigned to fixed-point variables"
 msgstr ""
 
-#: ada-lang.c:10481
+#: ada-lang.c:10188
 msgid "Operands of fixed-point addition must have the same type"
 msgstr ""
 
-#: ada-lang.c:10507
+#: ada-lang.c:10214
 msgid "Operands of fixed-point subtraction must have the same type"
 msgstr ""
 
 #. Only encountered when an unresolved symbol occurs in a
 #. context other than a function call, in which case, it is
 #. invalid.
-#: ada-lang.c:10610 ada-lang.c:10700
+#: ada-lang.c:10317 ada-lang.c:10407
 #, possible-c-format
 msgid "Unexpected unresolved symbol, %s, during evaluation"
 msgstr ""
 
-#: ada-lang.c:10756
+#: ada-lang.c:10463
 #, possible-c-format
 msgid "cannot subscript or call something of type `%s'"
 msgstr ""
 
-#: ada-lang.c:10792
+#: ada-lang.c:10499
 msgid "cannot subscript or call a record"
 msgstr ""
 
-#: ada-lang.c:10794
+#: ada-lang.c:10501
 #, possible-c-format
 msgid "wrong number of subscripts; expecting %d"
 msgstr ""
 
-#: ada-lang.c:10806 ada-lang.c:10820
+#: ada-lang.c:10513 ada-lang.c:10527
 msgid "element type of array unknown"
 msgstr ""
 
-#: ada-lang.c:10829
+#: ada-lang.c:10536
 msgid "Attempt to index or call something other than an array or function"
 msgstr ""
 
-#: ada-lang.c:10859
+#: ada-lang.c:10566
 msgid "cannot slice a packed array"
 msgstr ""
 
-#: ada-lang.c:10888 valops.c:3809
+#: ada-lang.c:10595 valops.c:3768
 msgid "cannot take slice of non-array"
 msgstr ""
 
-#: ada-lang.c:10927
+#: ada-lang.c:10634
 msgid "Membership test incompletely implemented; always returns true"
 msgstr ""
 
-#: ada-lang.c:11016
+#: ada-lang.c:10725
 #, possible-c-format
 msgid "Invalid operand to '%s"
 msgstr ""
 
 #. Should never happen.
-#: ada-lang.c:11035 ada-lang.c:11069 ada-lang.c:11094 ada-lang.c:11126
+#: ada-lang.c:10744 ada-lang.c:10778 ada-lang.c:10803 ada-lang.c:10835
 msgid "unexpected attribute encountered"
 msgstr ""
 
-#: ada-lang.c:11102
+#: ada-lang.c:10811
 msgid "the 'length attribute applies only to array types"
 msgstr ""
 
-#: ada-lang.c:11106
+#: ada-lang.c:10815
 msgid "unimplemented type attribute"
 msgstr ""
 
-#: ada-lang.c:11176
+#: ada-lang.c:10885
 msgid "'modulus must be applied to modular type"
 msgstr ""
 
-#: ada-lang.c:11273
+#: ada-lang.c:10982
 msgid "Attempt to dereference null array pointer."
 msgstr ""
 
-#: ada-lang.c:11317 eval.c:2689 eval.c:3178 valops.c:1578
+#: ada-lang.c:11026 eval.c:2701 eval.c:3188 valops.c:1582
 msgid "Attempt to take contents of a non-pointer value."
 msgstr ""
 
-#: ada-lang.c:11396 eval.c:2900
+#: ada-lang.c:11105 eval.c:2912
 msgid "Attempt to use a type name as an expression"
 msgstr ""
 
-#: ada-lang.c:11408
+#: ada-lang.c:11117
 #, possible-c-format
 msgid ""
-"Undefined name, ambiguous name, or renaming used in component association: %"
-"s."
+"Undefined name, ambiguous name, or renaming used in component association: "
+"%s."
 msgstr ""
 
-#: ada-lang.c:11411
+#: ada-lang.c:11120
 msgid "Aggregates only allowed on the right of an assignment"
 msgstr ""
 
-#: ada-lang.c:11414
+#: ada-lang.c:11123
 msgid "aggregate apparently mangled"
 msgstr ""
 
-#: ada-lang.c:11692
+#: ada-lang.c:11400
 msgid "Unknown lower bound, using 1."
 msgstr ""
 
-#: ada-lang.c:11708
+#: ada-lang.c:11416
 #, possible-c-format
 msgid "Unknown upper bound, using %ld."
 msgstr ""
 
-#: ada-lang.c:11912 ada-lang.c:11935
+#: ada-lang.c:11627 ada-lang.c:11650
 msgid ""
 "Your Ada runtime appears to be missing some debugging information.\n"
 "Cannot insert Ada exception catchpoint in this configuration."
 msgstr ""
 
-#: ada-lang.c:11923 ada-lang.c:11946
+#: ada-lang.c:11638 ada-lang.c:11661
 #, possible-c-format
 msgid "Symbol \"%s\" is not a function (class = %d)"
 msgstr ""
 
-#: ada-lang.c:11997
+#: ada-lang.c:11712
 msgid "Unable to insert catchpoint.  Is this an Ada main program?"
 msgstr ""
 
-#: ada-lang.c:12005
+#: ada-lang.c:11720
 msgid "Unable to insert catchpoint. Try to start the program first."
 msgstr ""
 
@@ -789,134 +790,130 @@ msgstr ""
 #. configurable run time mode, or that a-except as been optimized
 #. out by the linker...  In any case, at this point it is not worth
 #. supporting this feature.
-#: ada-lang.c:12014
+#: ada-lang.c:11729
 msgid "Cannot insert Ada exception catchpoints in this configuration."
 msgstr ""
 
-#: ada-lang.c:12184 ada-lang.c:12619 ada-lang.c:12672 ada-lang.c:12706
+#: ada-lang.c:11899 ada-lang.c:12335 ada-lang.c:12388 ada-lang.c:12422
 msgid "unexpected catchpoint type"
 msgstr ""
 
-#: ada-lang.c:12269
+#: ada-lang.c:11985
 #, possible-c-format
 msgid "failed to get exception name: %s"
 msgstr ""
 
-#: ada-lang.c:12368
+#: ada-lang.c:12084
 #, possible-c-format
 msgid "failed to reevaluate internal exception condition for catchpoint %d: %s"
 msgstr ""
 
-#: ada-lang.c:12463
+#: ada-lang.c:12179
 msgid "Error in testing exception condition:\n"
 msgstr ""
 
-#: ada-lang.c:12589 ada-lang.c:12643
+#: ada-lang.c:12305 ada-lang.c:12359
 #, possible-c-format
 msgid "`%s' Ada exception"
 msgstr ""
 
-#: ada-lang.c:12607 ada-lang.c:12659
+#: ada-lang.c:12323 ada-lang.c:12375
 #, possible-c-format
 msgid "`%s' Ada exception handlers"
 msgstr ""
 
-#: ada-lang.c:12633 break-catch-throw.c:315
+#: ada-lang.c:12349 break-catch-throw.c:317
 msgid "Temporary catchpoint "
 msgstr ""
 
-#: ada-lang.c:12634
+#: ada-lang.c:12350
 msgid "Catchpoint "
 msgstr ""
 
-#: ada-lang.c:12648
+#: ada-lang.c:12364
 msgid "all Ada exceptions"
 msgstr ""
 
-#: ada-lang.c:12652
+#: ada-lang.c:12368
 msgid "unhandled Ada exceptions"
 msgstr ""
 
-#: ada-lang.c:12664
+#: ada-lang.c:12380
 msgid "all Ada exceptions handlers"
 msgstr ""
 
-#: ada-lang.c:12668
+#: ada-lang.c:12384
 msgid "failed Ada assertions"
 msgstr ""
 
-#: ada-lang.c:12767
+#: ada-lang.c:12483
 msgid "Condition missing after `if' keyword"
 msgstr ""
 
-#: ada-lang.c:12777 breakpoint.c:876 breakpoint.c:890
+#: ada-lang.c:12493 breakpoint.c:867 breakpoint.c:888
 msgid "Junk at end of expression"
 msgstr ""
 
-#: ada-lang.c:12831 ada-lang.c:12857
+#: ada-lang.c:12547 ada-lang.c:12573
 #, possible-c-format
 msgid "unexpected catchpoint kind (%d)"
 msgstr ""
 
-#: ada-lang.c:12946
+#: ada-lang.c:12662
 #, possible-c-format
 msgid "Catchpoint symbol not found: %s"
 msgstr ""
 
-#: ada-lang.c:12949
+#: ada-lang.c:12665
 #, possible-c-format
 msgid "Unable to insert catchpoint. %s is not a function."
 msgstr ""
 
-#: ada-lang.c:13083
+#: ada-lang.c:12799
 msgid "condition missing after `if' keyword"
 msgstr ""
 
-#: ada-lang.c:13090 break-catch-throw.c:440 breakpoint.c:9131
-#: breakpoint.c:11025 breakpoint.c:11157 breakpoint.c:11201 breakpoint.c:14795
+#: ada-lang.c:12806 break-catch-throw.c:442 breakpoint.c:9185
+#: breakpoint.c:11071 breakpoint.c:11205 breakpoint.c:11249 breakpoint.c:14871
 msgid "Junk at end of arguments."
 msgstr ""
 
-#: ada-lang.c:13406
+#: ada-lang.c:13122
 msgid "invalid regular expression"
 msgstr ""
 
-#: ada-lang.c:13421
+#: ada-lang.c:13137
 #, possible-c-format
 msgid "All Ada exceptions matching regular expression \"%s\":\n"
 msgstr ""
 
-#: ada-lang.c:13423
+#: ada-lang.c:13139
 msgid "All defined Ada exceptions:\n"
 msgstr ""
 
 #. XXX: gdb_sprint_host_address, type_sprint
-#: ada-lang.c:13603
+#: ada-lang.c:13319
 msgid "Type @"
 msgstr ""
 
-#: ada-lang.c:14156
-msgid "\"set ada\" must be followed by the name of a setting.\n"
-msgstr ""
-
-#: ada-lang.c:14239
+#: ada-lang.c:14285
 msgid "Prefix command for changing Ada-specific settings."
 msgstr ""
 
-#: ada-lang.c:14243
+#: ada-lang.c:14289
 msgid "Generic command for showing Ada-specific settings."
 msgstr ""
 
-#: ada-lang.c:14247
+#: ada-lang.c:14293
 msgid "Enable or disable an optimization trusting PAD types over XVS types."
 msgstr ""
 
-#: ada-lang.c:14248
+#: ada-lang.c:14294
 msgid ""
 "Show whether an optimization trusting PAD types over XVS types is activated."
 msgstr ""
 
-#: ada-lang.c:14250
+#: ada-lang.c:14296
 msgid ""
 "This is related to the encoding used by the GNAT compiler.  The debugger\n"
 "should normally trust the contents of PAD types, but certain older versions\n"
@@ -928,19 +925,19 @@ msgid ""
 "this option to \"off\" unless necessary."
 msgstr ""
 
-#: ada-lang.c:14261
+#: ada-lang.c:14307
 msgid ""
 "Enable or disable the output of formal and return types for functions in the "
 "overloads selection menu."
 msgstr ""
 
-#: ada-lang.c:14263
+#: ada-lang.c:14309
 msgid ""
 "Show whether the output of formal and return types for functions in the "
 "overloads selection menu is activated."
 msgstr ""
 
-#: ada-lang.c:14268
+#: ada-lang.c:14314
 msgid ""
 "Catch Ada exceptions, when raised.\n"
 "Usage: catch exception [ARG] [if CONDITION]\n"
@@ -954,7 +951,7 @@ msgid ""
 "exception should cause a stop."
 msgstr ""
 
-#: ada-lang.c:14284
+#: ada-lang.c:14330
 msgid ""
 "Catch Ada exceptions, when handled.\n"
 "Usage: catch handlers [ARG] [if CONDITION]\n"
@@ -964,7 +961,7 @@ msgid ""
 "exception should cause a stop."
 msgstr ""
 
-#: ada-lang.c:14295
+#: ada-lang.c:14341
 msgid ""
 "Catch failed Ada assertions, when raised.\n"
 "Usage: catch assert [if CONDITION]\n"
@@ -972,21 +969,21 @@ msgid ""
 "exception should cause a stop."
 msgstr ""
 
-#: ada-lang.c:14307
+#: ada-lang.c:14353
 msgid "Set the maximum number of bytes allowed in a variable-size object."
 msgstr ""
 
-#: ada-lang.c:14308
+#: ada-lang.c:14354
 msgid "Show the maximum number of bytes allowed in a variable-size object."
 msgstr ""
 
-#: ada-lang.c:14309
+#: ada-lang.c:14355
 msgid ""
 "Attempts to access an object whose size is not a compile-time constant\n"
 "and exceeds this limit will cause an error."
 msgstr ""
 
-#: ada-lang.c:14315
+#: ada-lang.c:14361
 msgid ""
 "List all Ada exception names.\n"
 "Usage: info exceptions [REGEXP]\n"
@@ -994,61 +991,61 @@ msgid ""
 "the regular expression are listed."
 msgstr ""
 
-#: ada-lang.c:14322
+#: ada-lang.c:14368
 msgid "Set Ada maintenance-related variables."
 msgstr ""
 
-#: ada-lang.c:14327
+#: ada-lang.c:14373
 msgid "Show Ada maintenance-related variables."
 msgstr ""
 
-#: ada-lang.c:14334
+#: ada-lang.c:14380
 msgid "Set whether descriptive types generated by GNAT should be ignored."
 msgstr ""
 
-#: ada-lang.c:14335
+#: ada-lang.c:14381
 msgid "Show whether descriptive types generated by GNAT should be ignored."
 msgstr ""
 
-#: ada-lang.c:14336
+#: ada-lang.c:14382
 msgid ""
 "When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n"
 "DWARF attribute."
 msgstr ""
 
-#: ada-lex.l:143 ada-lex.l:147
+#: ada-lex.l:145 ada-lex.l:149
 msgid "Based real literals not implemented yet."
 msgstr ""
 
-#: ada-lex.l:170
+#: ada-lex.l:172
 msgid "ill-formed or non-terminated string literal"
 msgstr ""
 
-#: ada-lex.l:301
+#: ada-lex.l:303
 #, possible-c-format
 msgid "Invalid character '%s' in expression."
 msgstr ""
 
-#: ada-lex.l:355
+#: ada-lex.l:357
 #, possible-c-format
 msgid "Invalid base: %d."
 msgstr ""
 
-#: ada-lex.l:366 ada-lex.l:373
+#: ada-lex.l:368 ada-lex.l:375
 msgid "Integer literal out of range"
 msgstr ""
 
-#: ada-lex.l:368
+#: ada-lex.l:370
 #, possible-c-format
 msgid "Invalid digit `%c' in based literal"
 msgstr ""
 
-#: ada-lex.l:613
+#: ada-lex.l:615
 #, possible-c-format
 msgid "ambiguous attribute name: `%s'"
 msgstr ""
 
-#: ada-lex.l:616
+#: ada-lex.l:618
 #, possible-c-format
 msgid "unrecognized attribute: `%s'"
 msgstr ""
@@ -1154,29 +1151,29 @@ msgstr ""
 msgid "%s. Aborting"
 msgstr ""
 
-#: ada-tasks.c:1001
+#: ada-tasks.c:1003
 msgid "Cannot inspect Ada tasks when program is not running"
 msgstr ""
 
-#: ada-tasks.c:1027 ada-tasks.c:1196 ada-tasks.c:1372
+#: ada-tasks.c:1029 ada-tasks.c:1198 ada-tasks.c:1374
 msgid "Your application does not use any Ada tasks.\n"
 msgstr ""
 
-#: ada-tasks.c:1156
+#: ada-tasks.c:1158
 #, possible-c-format
 msgid "Accepting RV with %-4d"
 msgstr ""
 
-#: ada-tasks.c:1161
+#: ada-tasks.c:1163
 #, possible-c-format
 msgid "Waiting on RV with %-3d"
 msgstr ""
 
-#: ada-tasks.c:1177
+#: ada-tasks.c:1179
 msgid "<no name>"
 msgstr ""
 
-#: ada-tasks.c:1201 ada-tasks.c:1321
+#: ada-tasks.c:1203 ada-tasks.c:1323
 #, possible-c-format
 msgid ""
 "Task ID %d not known.  Use the \"info tasks\" command to\n"
@@ -1184,146 +1181,142 @@ msgid ""
 msgstr ""
 
 #. Print the Ada task ID.
-#: ada-tasks.c:1206
+#: ada-tasks.c:1208
 #, possible-c-format
 msgid "Ada Task: %s\n"
 msgstr ""
 
-#: ada-tasks.c:1211
+#: ada-tasks.c:1213
 #, possible-c-format
 msgid "Name: %s\n"
 msgstr ""
 
-#: ada-tasks.c:1213
+#: ada-tasks.c:1215
 msgid "<no name>\n"
 msgstr ""
 
 #. Print the TID and LWP.
-#: ada-tasks.c:1216
+#: ada-tasks.c:1218
 #, possible-c-format
 msgid "Thread: %#lx\n"
 msgstr ""
 
-#: ada-tasks.c:1217
+#: ada-tasks.c:1219
 #, possible-c-format
 msgid "LWP: %#lx\n"
 msgstr ""
 
-#: ada-tasks.c:1221
+#: ada-tasks.c:1223
 #, possible-c-format
 msgid "Base CPU: %d\n"
 msgstr ""
 
-#: ada-tasks.c:1230
+#: ada-tasks.c:1232
 #, possible-c-format
 msgid "Parent: %d"
 msgstr ""
 
-#: ada-tasks.c:1236
+#: ada-tasks.c:1238
 msgid "No parent\n"
 msgstr ""
 
 #. Print the base priority.
-#: ada-tasks.c:1239
+#: ada-tasks.c:1241
 #, possible-c-format
 msgid "Base Priority: %d\n"
 msgstr ""
 
-#: ada-tasks.c:1248
+#: ada-tasks.c:1250
 #, possible-c-format
 msgid "State: Accepting rendezvous with %d"
 msgstr ""
 
-#: ada-tasks.c:1254
+#: ada-tasks.c:1256
 #, possible-c-format
 msgid "State: Waiting on task %d's entry"
 msgstr ""
 
-#: ada-tasks.c:1258
+#: ada-tasks.c:1260
 #, possible-c-format
 msgid "State: %s"
 msgstr ""
 
-#: ada-tasks.c:1298
+#: ada-tasks.c:1300
 msgid "[Current task is unknown]\n"
 msgstr ""
 
-#: ada-tasks.c:1305
+#: ada-tasks.c:1307
 #, possible-c-format
 msgid "[Current task is %s]\n"
 msgstr ""
 
-#: ada-tasks.c:1326
+#: ada-tasks.c:1328
 #, possible-c-format
 msgid "Cannot switch to task %s: Task is no longer running"
 msgstr ""
 
-#: ada-tasks.c:1348
+#: ada-tasks.c:1350
 #, possible-c-format
 msgid ""
 "Unable to compute thread ID for task %s.\n"
 "Cannot switch to this task."
 msgstr ""
 
-#: ada-tasks.c:1354
+#: ada-tasks.c:1356
 #, possible-c-format
 msgid "[Switching to task %s]\n"
 msgstr ""
 
-#: ada-tasks.c:1467
+#: ada-tasks.c:1468
 msgid "Provide information about all known Ada tasks."
 msgstr ""
 
-#: ada-tasks.c:1469
+#: ada-tasks.c:1470
 msgid ""
 "Use this command to switch between Ada tasks.\n"
 "Without argument, this command simply prints the current task ID."
 msgstr ""
 
-#: ada-typeprint.c:388
+#: ada-typeprint.c:389
 msgid "<undecipherable array type>"
 msgstr ""
 
-#: ada-typeprint.c:719
+#: ada-typeprint.c:849
 msgid " <incomplete type> end record"
 msgstr ""
 
-#: ada-typeprint.c:893
+#: ada-typeprint.c:1023
 #, possible-c-format
 msgid "<%s-byte integer>"
 msgstr ""
 
-#: ada-typeprint.c:916
+#: ada-typeprint.c:1046
 #, possible-c-format
 msgid "<%s-byte float>"
 msgstr ""
 
-#: ada-typeprint.c:930
+#: ada-typeprint.c:1060
 msgid "array (?) of ? (<mal-formed descriptor>)"
 msgstr ""
 
-#: ada-valprint.c:165 valprint.c:2010
-msgid "unable to get positions in array, use bounds instead"
-msgstr ""
-
-#: ada-valprint.c:237 ada-valprint.c:528
+#: ada-valprint.c:214 ada-valprint.c:499
 #, possible-c-format
 msgid " %p[<repeats %u times>%p]"
 msgstr ""
 
-#: ada-valprint.c:460
+#: ada-valprint.c:431
 msgid "internal error: unhandled type in ada_print_scalar"
 msgstr ""
 
-#: ada-valprint.c:464 typeprint.c:677
+#: ada-valprint.c:435 typeprint.c:668
 msgid "Invalid type code in symbol table."
 msgstr ""
 
-#: ada-valprint.c:673
+#: ada-valprint.c:634
 msgid "<optimized out or zero length>"
 msgstr ""
 
-#: ada-valprint.c:1217 cp-valprint.c:314 guile/scm-pretty-print.c:631
+#: ada-valprint.c:1112 cp-valprint.c:311 guile/scm-pretty-print.c:631
 #: mi/mi-cmd-stack.c:536 mi/mi-cmd-stack.c:550 python/py-framefilter.c:401
 #: python/py-prettyprint.c:267 stack.c:456 stack.c:493
 #, possible-c-format
@@ -1331,7 +1324,7 @@ msgid "<error reading variable: %s>"
 msgstr ""
 
 #. Could not get the array bounds.  Pretend this is an empty array.
-#: ada-varobj.c:251 valprint.c:2027
+#: ada-varobj.c:253 valprint.c:1896
 msgid "unable to get bounds of array, assuming null array"
 msgstr ""
 
@@ -1352,15 +1345,15 @@ msgstr ""
 msgid "Debugger's willingness to use agent in inferior as a helper is %s.\n"
 msgstr ""
 
-#: agent.c:84
+#: agent.c:85
 msgid "Set debugger's willingness to use agent as a helper."
 msgstr ""
 
-#: agent.c:85
+#: agent.c:86
 msgid "Show debugger's willingness to use agent as a helper."
 msgstr ""
 
-#: agent.c:86
+#: agent.c:87
 msgid ""
 "If on, GDB will delegate some of the debugging operations to the\n"
 "agent, if the target supports it.  This will speed up those\n"
@@ -1404,73 +1397,73 @@ msgid "finished"
 msgstr ""
 
 #. i18n: Like "Thread-Id %d, [state] unknown"
-#: aix-thread.c:621 btrace.c:1884 source.c:668
+#: aix-thread.c:621 btrace.c:1886 source.c:694
 msgid "unknown"
 msgstr ""
 
-#: aix-thread.c:1048
+#: aix-thread.c:1054
 #, possible-c-format
 msgid "aix-thread resume: unknown pthread %ld"
 msgstr ""
 
-#: aix-thread.c:1055
+#: aix-thread.c:1061
 #, possible-c-format
 msgid "aix-thread resume: no tid for pthread %ld"
 msgstr ""
 
-#: aix-thread.c:1225
+#: aix-thread.c:1233
 #, possible-c-format
 msgid "aix-thread: fetch_registers: pthdb_pthread_context returned %s"
 msgstr ""
 
-#: aix-thread.c:1508
+#: aix-thread.c:1516
 #, possible-c-format
 msgid "aix-thread: store_registers: pthdb_pthread_context returned %s"
 msgstr ""
 
-#: aix-thread.c:1566
+#: aix-thread.c:1574
 #, possible-c-format
 msgid "aix-thread: store_registers: pthdb_pthread_setcontext returned %s"
 msgstr ""
 
-#: aix-thread.c:1755
+#: aix-thread.c:1765
 #, possible-c-format
 msgid "Thread %ld"
 msgstr ""
 
 #. i18n: Like "thread-identifier %d, [state] running, suspended"
-#: aix-thread.c:1784
+#: aix-thread.c:1794
 #, c-format
 msgid "tid %d"
 msgstr ""
 
 #. i18n: Like "Thread-Id %d, [state] running, suspended"
-#: aix-thread.c:1795
+#: aix-thread.c:1805
 #, c-format
 msgid ", suspended"
 msgstr ""
 
 #. i18n: Like "Thread-Id %d, [state] running, detached"
-#: aix-thread.c:1801
+#: aix-thread.c:1811
 #, c-format
 msgid ", detached"
 msgstr ""
 
 #. i18n: Like "Thread-Id %d, [state] running, cancel pending"
-#: aix-thread.c:1806
+#: aix-thread.c:1816
 #, c-format
 msgid ", cancel pending"
 msgstr ""
 
-#: aix-thread.c:1838
+#: aix-thread.c:1849
 msgid "Set debugging of AIX thread module."
 msgstr ""
 
-#: aix-thread.c:1839
+#: aix-thread.c:1850
 msgid "Show debugging of AIX thread module."
 msgstr ""
 
-#: aix-thread.c:1840
+#: aix-thread.c:1851
 msgid "Enables debugging output (used to debug GDB)."
 msgstr ""
 
@@ -1509,69 +1502,69 @@ msgid ""
 "(more likely) you have encountered a bug in GDB.\n"
 msgstr ""
 
-#: alpha-tdep.c:1838 mips-tdep.c:9068
+#: alpha-tdep.c:1839 mips-tdep.c:9041
 msgid "Set the distance searched for the start of a function."
 msgstr ""
 
-#: alpha-tdep.c:1839 mips-tdep.c:9069
+#: alpha-tdep.c:1840 mips-tdep.c:9042
 msgid "Show the distance searched for the start of a function."
 msgstr ""
 
-#: alpha-tdep.c:1840 mips-tdep.c:9070
+#: alpha-tdep.c:1841 mips-tdep.c:9043
 msgid ""
 "If you are debugging a stripped executable, GDB needs to search through the\n"
 "program for the start of a function.  This command sets the distance of the\n"
 "search.  The only need to set it is when debugging a stripped executable."
 msgstr ""
 
-#: amd64-bsd-nat.c:68 amd64-linux-nat.c:272 i386-bsd-nat.c:153
+#: amd64-bsd-nat.c:84 i386-bsd-nat.c:168
 msgid "Couldn't get segment register fs_base"
 msgstr ""
 
-#: amd64-bsd-nat.c:81 amd64-linux-nat.c:280 i386-bsd-nat.c:166
+#: amd64-bsd-nat.c:97 i386-bsd-nat.c:181
 msgid "Couldn't get segment register gs_base"
 msgstr ""
 
-#: amd64-bsd-nat.c:100 amd64-bsd-nat.c:184 amd64-linux-nat.c:251
-#: amd64-linux-nat.c:333 i386-bsd-nat.c:189 i386-bsd-nat.c:283
+#: amd64-bsd-nat.c:116 amd64-bsd-nat.c:200 amd64-linux-nat.c:251
+#: amd64-linux-nat.c:309 i386-bsd-nat.c:204 i386-bsd-nat.c:300
 msgid "Couldn't get extended state status"
 msgstr ""
 
-#: amd64-bsd-nat.c:152 amd64-linux-nat.c:364 i386-bsd-nat.c:249
+#: amd64-bsd-nat.c:168 i386-bsd-nat.c:266
 msgid "Couldn't write segment register fs_base"
 msgstr ""
 
-#: amd64-bsd-nat.c:167 amd64-linux-nat.c:371 i386-bsd-nat.c:262
+#: amd64-bsd-nat.c:183 i386-bsd-nat.c:279
 msgid "Couldn't write segment register gs_base"
 msgstr ""
 
-#: amd64-bsd-nat.c:190 amd64-linux-nat.c:339 i386-bsd-nat.c:289
+#: amd64-bsd-nat.c:206 amd64-linux-nat.c:315 i386-bsd-nat.c:306
 #: i386-linux-nat.c:372
 msgid "Couldn't write extended state status"
 msgstr ""
 
-#: amd64-fbsd-nat.c:247
+#: amd64-fbsd-nat.c:248
 #, possible-c-format
 msgid ""
 "offsetof (struct sigcontext, sc_rip) yields %d instead of %d.\n"
 "Please report this to <bug-gdb@gnu.org>."
 msgstr ""
 
-#: amd64-fbsd-nat.c:260
+#: amd64-fbsd-nat.c:261
 #, possible-c-format
 msgid ""
 "offsetof (struct sigcontext, sc_rsp) yields %d instead of %d.\n"
 "Please report this to <bug-gdb@gnu.org>."
 msgstr ""
 
-#: amd64-fbsd-nat.c:273
+#: amd64-fbsd-nat.c:274
 #, possible-c-format
 msgid ""
 "offsetof (struct sigcontext, sc_rbp) yields %d instead of %d.\n"
 "Please report this to <bug-gdb@gnu.org>."
 msgstr ""
 
-#: amd64-fbsd-tdep.c:221
+#: amd64-fbsd-tdep.c:223
 #, possible-c-format
 msgid "Unable to fetch %%fsbase"
 msgstr ""
@@ -1582,47 +1575,47 @@ msgid "unable to find free reg"
 msgstr ""
 
 #. multiply
-#: arch/arm.c:134 arch/arm-get-next-pcs.c:682 arch/arm-get-next-pcs.c:703
-#: arch/arm-get-next-pcs.c:819
+#: arch/arm-get-next-pcs.c:683 arch/arm-get-next-pcs.c:704
+#: arch/arm-get-next-pcs.c:820 arch/arm.c:123
 msgid "Invalid update to pc in instruction"
 msgstr ""
 
-#: arch/arm.c:205
+#: arch/arm-get-next-pcs.c:900
+msgid "Bad bit-field extraction"
+msgstr ""
+
+#: arch/arm.c:194
 msgid "bad value in switch"
 msgstr ""
 
-#: arch/arm.c:419
+#: arch/arm.c:408
 #, possible-c-format
 msgid "Invalid Arm FP type: %d"
 msgstr ""
 
-#: arch/arm.c:454
+#: arch/arm.c:443
 #, possible-c-format
 msgid "Invalid Arm M type: %d"
 msgstr ""
 
-#: arch/arm-get-next-pcs.c:899
-msgid "Bad bit-field extraction"
-msgstr ""
-
 #: arch-utils.c:220 m32c-tdep.c:2551 m32c-tdep.c:2572
 msgid "No virtual frame pointer available"
 msgstr ""
 
 #: arch-utils.c:319
-msgid "The target endianness is set automatically (currently big endian)\n"
+msgid "The target endianness is set automatically (currently big endian).\n"
 msgstr ""
 
 #: arch-utils.c:322
-msgid "The target endianness is set automatically (currently little endian)\n"
+msgid "The target endianness is set automatically (currently little endian).\n"
 msgstr ""
 
 #: arch-utils.c:327
-msgid "The target is assumed to be big endian\n"
+msgid "The target is set to big endian.\n"
 msgstr ""
 
 #: arch-utils.c:330
-msgid "The target is assumed to be little endian\n"
+msgid "The target is set to little endian.\n"
 msgstr ""
 
 #: arch-utils.c:345
@@ -1658,12 +1651,12 @@ msgstr ""
 
 #: arch-utils.c:479
 #, possible-c-format
-msgid "The target architecture is set automatically (currently %s)\n"
+msgid "The target architecture is set to \"auto\" (currently \"%s\").\n"
 msgstr ""
 
 #: arch-utils.c:483
 #, possible-c-format
-msgid "The target architecture is assumed to be %s\n"
+msgid "The target architecture is set to \"%s\".\n"
 msgstr ""
 
 #: arch-utils.c:504
@@ -1708,69 +1701,65 @@ msgstr ""
 msgid "This architecture has no method to collect a return address."
 msgstr ""
 
-#: arch-utils.c:894
+#: arch-utils.c:926
 msgid "This target does not support inferior memory allocation by mmap."
 msgstr ""
 
-#: arch-utils.c:1012
+#: arch-utils.c:1061
 msgid "Set endianness of target."
 msgstr ""
 
-#: arch-utils.c:1013
+#: arch-utils.c:1062
 msgid "Show endianness of target."
 msgstr ""
 
-#: arc-tdep.c:803
+#: arc-tdep.c:954
 #, possible-c-format
 msgid "arc: extract_return_value: type length %u too large"
 msgstr ""
 
-#: arc-tdep.c:857
+#: arc-tdep.c:1008
 msgid "arc_store_return_value: type length too large."
 msgstr ""
 
-#: arc-tdep.c:1804 arc-tdep.c:1820
-msgid "Error: ARC v2 target description supplied for non-ARCv2 target.\n"
-msgstr ""
-
-#: arc-tdep.c:1837
-msgid ""
-"Error: ARCompact target description supplied for non-ARCompact target.\n"
+#: arc-tdep.c:1882
+#, possible-c-format
+msgid "unknown machine id %lu"
 msgstr ""
 
-#: arc-tdep.c:1848
-msgid ""
-"Error: Couldn't find core register feature in supplied target description."
+#: arc-tdep.c:1908 riscv-tdep.c:3060
+#, possible-c-format
+msgid "unknown ELF header class %d"
 msgstr ""
 
-#: arc-tdep.c:1882 arc-tdep.c:1906
+#: arc-tdep.c:2032
 #, possible-c-format
-msgid "Error: Cannot find required register `%s' in feature `%s'.\n"
+msgid "Error: Cannot find required register(s) %s in feature '%s'.\n"
 msgstr ""
 
-#: arc-tdep.c:1894
+#: arc-tdep.c:2110 arc-tdep.c:2117
 #, possible-c-format
 msgid ""
-"Error: Cannot find required feature `%s' in supplied target description.\n"
+"Error: Cannot find required feature '%s' in supplied target description.\n"
 msgstr ""
 
-#: arc-tdep.c:2160
+#: arc-tdep.c:2385
 msgid "ARC-specific maintenance commands for printing GDB internal state."
 msgstr ""
 
-#: arc-tdep.c:2167
+#: arc-tdep.c:2392
 msgid "Dump arc_instruction structure for specified address."
 msgstr ""
 
-#: arc-tdep.c:2173
+#: arc-tdep.c:2398
 msgid "Set ARC specific debugging."
 msgstr ""
 
-#: arc-tdep.c:2174
+#: arc-tdep.c:2399
 msgid "Show ARC specific debugging."
 msgstr ""
 
-#: arc-tdep.c:2175
+#: arc-tdep.c:2400
 msgid "Non-zero enables ARC specific debugging."
 msgstr ""
 
@@ -1816,199 +1805,197 @@ msgstr ""
 msgid "Unexpected error setting watchpoint"
 msgstr ""
 
-#: arm-linux-tdep.c:1773
+#: arm-linux-tdep.c:1775
 msgid "arm_linux_init_abi: Floating point model not supported"
 msgstr ""
 
-#: arm-nbsd-nat.c:88
+#: arm-nbsd-nat.c:76
 msgid "unable to fetch general register"
 msgstr ""
 
-#: arm-nbsd-nat.c:137 arm-nbsd-nat.c:185 arm-nbsd-nat.c:222
-msgid "unable to fetch general registers"
+#: arm-nbsd-nat.c:96
+msgid "unable to fetch floating-point register"
 msgstr ""
 
-#: arm-nbsd-nat.c:155
-msgid "unable to fetch floating-point register"
+#: arm-nbsd-nat.c:110 arm-nbsd-nat.c:292
+msgid "Invalid register number."
 msgstr ""
 
-#: arm-nbsd-nat.c:279 arm-nbsd-nat.c:356
+#: arm-nbsd-nat.c:126 arm-nbsd-nat.c:164
+msgid "unable to fetch general registers"
+msgstr ""
+
+#: arm-nbsd-nat.c:221 arm-nbsd-nat.c:298
 #, possible-c-format
 msgid "unable to write register %d to inferior"
 msgstr ""
 
-#: arm-nbsd-nat.c:321
+#: arm-nbsd-nat.c:264
 msgid "unable to store general registers"
 msgstr ""
 
-#: arm-nbsd-nat.c:335
+#: arm-nbsd-nat.c:278
 msgid "unable to fetch floating-point registers"
 msgstr ""
 
-#: arm-nbsd-nat.c:378
+#: arm-nbsd-nat.c:321
 msgid "unable to store floating-point registers"
 msgstr ""
 
-#: arm-nbsd-nat.c:410
-msgid "wrong size of register set in core file"
+#: arm-nbsd-tdep.c:135 arm-tdep.c:9378
+msgid "arm_gdbarch_init: bad byte order for float format"
 msgstr ""
 
-#: arm-nbsd-nat.c:422
-msgid "wrong size of FPA register set in core file"
+#. Thread (process) stack could not be fetched,
+#. give warning and exit.
+#: arm-tdep.c:2979
+msgid "no PSP thread stack unwinding supported."
 msgstr ""
 
-#: arm-nbsd-tdep.c:63 arm-tdep.c:9278
-msgid "arm_gdbarch_init: bad byte order for float format"
-msgstr ""
-
-#: arm-tdep.c:3350 arm-tdep.c:3372
+#: arm-tdep.c:3462 arm-tdep.c:3484
 #, possible-c-format
 msgid "Invalid VFP CPRC type: %d."
 msgstr ""
 
-#: arm-tdep.c:3872
+#: arm-tdep.c:3984
 #, possible-c-format
 msgid "Hardware FPU type %d\n"
 msgstr ""
 
-#: arm-tdep.c:3874
+#: arm-tdep.c:3986
 #, possible-c-format
 msgid "Software FPU type %d\n"
 msgstr ""
 
 #. i18n: [floating point unit] mask
-#: arm-tdep.c:3876
+#: arm-tdep.c:3988
 msgid "mask: "
 msgstr ""
 
 #. i18n: [floating point unit] flags
-#: arm-tdep.c:3879
+#: arm-tdep.c:3991
 msgid "flags: "
 msgstr ""
 
-#: arm-tdep.c:4108
+#: arm-tdep.c:4220
 #, possible-c-format
 msgid "Bad REGNUM %d"
 msgstr ""
 
 #. Unpredictable behaviour.  Try to do something sensible (switch to ARM
 #. mode, align dest to 4 bytes).
-#: arm-tdep.c:4414
+#: arm-tdep.c:4526
 msgid "Single-stepping BX to non-word-aligned ARM instruction."
 msgstr ""
 
-#: arm-tdep.c:4476
+#: arm-tdep.c:4588
 msgid "Instruction wrote to PC in an unexpected way when single-stepping"
 msgstr ""
 
-#: arm-tdep.c:4482
+#: arm-tdep.c:4594
 msgid "Invalid argument to displaced_write_reg"
 msgstr ""
 
-#: arm-tdep.c:5442
+#: arm-tdep.c:5554
 msgid "copy_extra_ld_st: instruction decode error"
 msgstr ""
 
-#: arm-tdep.c:5756
+#: arm-tdep.c:5868
 msgid "Cannot single-step exception return"
 msgstr ""
 
-#: arm-tdep.c:5876
+#: arm-tdep.c:5989
 #, possible-c-format
 msgid "displaced: LDM: move loaded register r%d to r%d\n"
 msgstr ""
 
-#: arm-tdep.c:5881
+#: arm-tdep.c:5994
 #, possible-c-format
 msgid "displaced: LDM: register r%d already in the right place\n"
 msgstr ""
 
-#: arm-tdep.c:5901
+#: arm-tdep.c:6014
 #, possible-c-format
 msgid "displaced: LDM: restored clobbered register r%d\n"
 msgstr ""
 
-#: arm-tdep.c:5944 arm-tdep.c:6055
+#: arm-tdep.c:6057 arm-tdep.c:6168
 msgid "displaced: Unpredictable LDM or STM with base register r15"
 msgstr ""
 
-#: arm-tdep.c:6013 arm-tdep.c:6099
+#: arm-tdep.c:6126 arm-tdep.c:6212
 #, possible-c-format
 msgid ""
 "displaced: LDM r%d%s, {..., pc}: original reg list %.4x, modified list %.4x\n"
 msgstr ""
 
-#: arm-tdep.c:7115
+#: arm-tdep.c:7228
 #, possible-c-format
 msgid "displaced: POP {..., pc}: original reg list %.4x, modified list %.4x\n"
 msgstr ""
 
-#: arm-tdep.c:7232
+#: arm-tdep.c:7345
 msgid "thumb_process_displaced_16bit_insn: Instruction decode error"
 msgstr ""
 
-#: arm-tdep.c:7439
+#: arm-tdep.c:7552
 msgid "thumb_process_displaced_32bit_insn: Instruction decode error"
 msgstr ""
 
-#: arm-tdep.c:7523
+#: arm-tdep.c:7636
 msgid "arm_process_displaced_insn: Instruction decode error"
 msgstr ""
 
-#: arm-tdep.c:7836
+#: arm-tdep.c:7949
 msgid "arm_extract_return_value: Floating point model not supported"
 msgstr ""
 
-#: arm-tdep.c:8040
+#: arm-tdep.c:8152
 msgid "arm_store_return_value: Floating point model not supported"
 msgstr ""
 
-#: arm-tdep.c:8329
-msgid "\"set arm\" must be followed by an apporpriate subcommand.\n"
-msgstr ""
-
-#: arm-tdep.c:8353 rs6000-tdep.c:7199 rs6000-tdep.c:7226
+#: arm-tdep.c:8451 rs6000-tdep.c:7184 rs6000-tdep.c:7211
 msgid "could not update architecture"
 msgstr ""
 
-#: arm-tdep.c:8370
+#: arm-tdep.c:8468
 #, possible-c-format
 msgid "Invalid fp model accepted: %s."
 msgstr ""
 
-#: arm-tdep.c:8384
+#: arm-tdep.c:8482
 #, possible-c-format
 msgid "The current ARM floating point model is \"auto\" (currently \"%s\").\n"
 msgstr ""
 
-#: arm-tdep.c:8388
+#: arm-tdep.c:8486
 #, possible-c-format
 msgid "The current ARM floating point model is \"%s\".\n"
 msgstr ""
 
-#: arm-tdep.c:8407
+#: arm-tdep.c:8505
 #, possible-c-format
 msgid "Invalid ABI accepted: %s."
 msgstr ""
 
-#: arm-tdep.c:8421
+#: arm-tdep.c:8519
 #, possible-c-format
 msgid "The current ARM ABI is \"auto\" (currently \"%s\").\n"
 msgstr ""
 
-#: arm-tdep.c:8425
+#: arm-tdep.c:8523
 #, possible-c-format
 msgid "The current ARM ABI is \"%s\".\n"
 msgstr ""
 
-#: arm-tdep.c:8434
+#: arm-tdep.c:8532
 #, possible-c-format
 msgid ""
 "The current execution mode assumed (when symbols are unavailable) is \"%s"
 "\".\n"
 msgstr ""
 
-#: arm-tdep.c:8444
+#: arm-tdep.c:8542
 #, possible-c-format
 msgid ""
 "The current execution mode assumed (even when symbols are available) is \"%s"
@@ -2016,57 +2003,92 @@ msgid ""
 msgstr ""
 
 #. Leave it as "auto".
-#: arm-tdep.c:8970
+#: arm-tdep.c:9070
 #, possible-c-format
 msgid "unknown ARM EABI version 0x%x"
 msgstr ""
 
-#: arm-tdep.c:9471
+#: arm-tdep.c:9571
+#, possible-c-format
+msgid "arm_dump_tdep: fp_model = %i\n"
+msgstr ""
+
+#: arm-tdep.c:9573
+#, possible-c-format
+msgid "arm_dump_tdep: have_fpa_registers = %i\n"
+msgstr ""
+
+#: arm-tdep.c:9575
+#, possible-c-format
+msgid "arm_dump_tdep: have_wmmx_registers = %i\n"
+msgstr ""
+
+#: arm-tdep.c:9577
+#, possible-c-format
+msgid "arm_dump_tdep: vfp_register_count = %i\n"
+msgstr ""
+
+#: arm-tdep.c:9579
+#, possible-c-format
+msgid "arm_dump_tdep: have_vfp_pseudos = %i\n"
+msgstr ""
+
+#: arm-tdep.c:9581
+#, possible-c-format
+msgid "arm_dump_tdep: have_neon_pseudos = %i\n"
+msgstr ""
+
+#: arm-tdep.c:9583
 #, possible-c-format
-msgid "arm_dump_tdep: Lowest pc = 0x%lx"
+msgid "arm_dump_tdep: have_neon = %i\n"
 msgstr ""
 
-#: arm-tdep.c:9502 arm-tdep.c:9506
+#: arm-tdep.c:9585
+#, possible-c-format
+msgid "arm_dump_tdep: Lowest pc = 0x%lx\n"
+msgstr ""
+
+#: arm-tdep.c:9617 arm-tdep.c:9621
 msgid "Various ARM-specific commands."
 msgstr ""
 
-#: arm-tdep.c:9537
+#: arm-tdep.c:9652
 msgid "The valid values are:\n"
 msgstr ""
 
-#: arm-tdep.c:9539
+#: arm-tdep.c:9654
 msgid "The default is \"std\"."
 msgstr ""
 
-#: arm-tdep.c:9543
+#: arm-tdep.c:9658
 msgid "Set the disassembly style."
 msgstr ""
 
-#: arm-tdep.c:9544
+#: arm-tdep.c:9659
 msgid "Show the disassembly style."
 msgstr ""
 
-#: arm-tdep.c:9551
+#: arm-tdep.c:9666
 msgid "Set usage of ARM 32-bit mode."
 msgstr ""
 
-#: arm-tdep.c:9552
+#: arm-tdep.c:9667
 msgid "Show usage of ARM 32-bit mode."
 msgstr ""
 
-#: arm-tdep.c:9553
+#: arm-tdep.c:9668
 msgid "When off, a 26-bit PC will be used."
 msgstr ""
 
-#: arm-tdep.c:9561
+#: arm-tdep.c:9676
 msgid "Set the floating point type."
 msgstr ""
 
-#: arm-tdep.c:9562
+#: arm-tdep.c:9677
 msgid "Show the floating point type."
 msgstr ""
 
-#: arm-tdep.c:9563
+#: arm-tdep.c:9678
 msgid ""
 "auto - Determine the FP typefrom the OS-ABI.\n"
 "softfpa - Software FP, mixed-endian doubles on little-endian ARMs.\n"
@@ -2075,47 +2097,47 @@ msgid ""
 "vfp - VFP co-processor."
 msgstr ""
 
-#: arm-tdep.c:9573
+#: arm-tdep.c:9688
 msgid "Set the ABI."
 msgstr ""
 
-#: arm-tdep.c:9574
+#: arm-tdep.c:9689
 msgid "Show the ABI."
 msgstr ""
 
-#: arm-tdep.c:9582
+#: arm-tdep.c:9697
 msgid "Set the mode assumed when symbols are unavailable."
 msgstr ""
 
-#: arm-tdep.c:9583
+#: arm-tdep.c:9698
 msgid "Show the mode assumed when symbols are unavailable."
 msgstr ""
 
-#: arm-tdep.c:9588
+#: arm-tdep.c:9703
 msgid "Set the mode assumed even when symbols are available."
 msgstr ""
 
-#: arm-tdep.c:9589
+#: arm-tdep.c:9704
 msgid "Show the mode assumed even when symbols are available."
 msgstr ""
 
-#: arm-tdep.c:9595
+#: arm-tdep.c:9710
 msgid "Set ARM debugging."
 msgstr ""
 
-#: arm-tdep.c:9596
+#: arm-tdep.c:9711
 msgid "Show ARM debugging."
 msgstr ""
 
-#: arm-tdep.c:9597
+#: arm-tdep.c:9712
 msgid "When on, arm-specific debugging is enabled."
 msgstr ""
 
-#: arm-tdep.c:11639 arm-tdep.c:12162 rs6000-tdep.c:5850 s390-tdep.c:3108
+#: arm-tdep.c:11754 arm-tdep.c:12277 rs6000-tdep.c:5851 s390-tdep.c:3110
 msgid "no syscall record support\n"
 msgstr ""
 
-#: arm-tdep.c:13073 arm-tdep.c:13288
+#: arm-tdep.c:13188 arm-tdep.c:13403
 #, possible-c-format
 msgid "Process record: error reading memory at addr %s len = %d.\n"
 msgstr ""
@@ -2236,16 +2258,16 @@ msgid ""
 "\tinfo \"(gdb)Auto-loading safe path\"\n"
 msgstr ""
 
-#: auto-load.c:770 auto-load.c:795
+#: auto-load.c:770 auto-load.c:802
 #, possible-c-format
 msgid "auto-load: Attempted file \"%s\" %s.\n"
 msgstr ""
 
-#: auto-load.c:771 auto-load.c:798
+#: auto-load.c:771 auto-load.c:805
 msgid "exists"
 msgstr ""
 
-#: auto-load.c:771 auto-load.c:798
+#: auto-load.c:771 auto-load.c:805
 msgid "does not exist"
 msgstr ""
 
@@ -2254,70 +2276,70 @@ msgstr ""
 msgid "auto-load: Searching 'set auto-load scripts-directory' path \"%s\".\n"
 msgstr ""
 
-#: auto-load.c:811
+#: auto-load.c:818
 #, possible-c-format
 msgid "auto-load: Loading %s script \"%s\" by extension for objfile \"%s\".\n"
 msgstr ""
 
-#: auto-load.c:871
+#: auto-load.c:878
 #, possible-c-format
 msgid "auto-load: Stripped .exe suffix, retrying with \"%s\".\n"
 msgstr ""
 
-#: auto-load.c:918 auto-load.c:1021
+#: auto-load.c:925 auto-load.c:1028
 #, possible-c-format
 msgid ""
 "auto-load: Loading %s script \"%s\" from section \"%s\" of objfile \"%s\".\n"
 msgstr ""
 
 #. We don't throw an error, the program is still debuggable.
-#: auto-load.c:992
+#: auto-load.c:999
 #, possible-c-format
 msgid ""
 "Missing/bad script name in entry at offset %u in section %s\n"
 "of file %ps."
 msgstr ""
 
-#: auto-load.c:1073
+#: auto-load.c:1080
 #, possible-c-format
 msgid "Invalid entry in %s section"
 msgstr ""
 
-#: auto-load.c:1084
+#: auto-load.c:1091
 #, possible-c-format
 msgid "Non-nul-terminated entry in %s at offset %u"
 msgstr ""
 
-#: auto-load.c:1096
+#: auto-load.c:1103
 #, possible-c-format
 msgid "Empty entry in %s at offset %u"
 msgstr ""
 
-#: auto-load.c:1127
+#: auto-load.c:1134
 #, possible-c-format
 msgid "Couldn't read %s section of %ps"
 msgstr ""
 
-#: auto-load.c:1277 mi/mi-cmd-file.c:143 solib.c:966 solib.c:1045
+#: auto-load.c:1284 mi/mi-cmd-file.c:142 solib.c:955 solib.c:1033
 #, possible-c-format
 msgid "Invalid regexp: %s"
 msgstr ""
 
-#: auto-load.c:1356
+#: auto-load.c:1363
 msgid "Local .gdbinit file was not found.\n"
 msgstr ""
 
-#: auto-load.c:1358
+#: auto-load.c:1365
 #, possible-c-format
 msgid "Local .gdbinit file \"%ps\" has been loaded.\n"
 msgstr ""
 
-#: auto-load.c:1362
+#: auto-load.c:1369
 #, possible-c-format
 msgid "Local .gdbinit file \"%ps\" has not been loaded.\n"
 msgstr ""
 
-#: auto-load.c:1379
+#: auto-load.c:1386
 #, possible-c-format
 msgid ""
 "Unsupported auto-load script at offset %u in section %s\n"
@@ -2325,7 +2347,7 @@ msgid ""
 "Use `info auto-load %s-scripts [REGEXP]' to list them."
 msgstr ""
 
-#: auto-load.c:1403
+#: auto-load.c:1410
 #, possible-c-format
 msgid ""
 "Missing auto-load script at offset %u in section %s\n"
@@ -2333,65 +2355,65 @@ msgid ""
 "Use `info auto-load %s-scripts [REGEXP]' to list them."
 msgstr ""
 
-#: auto-load.c:1434
+#: auto-load.c:1441
 msgid ""
 "Valid is only global 'set auto-load no'; otherwise check the auto-load sub-"
 "commands."
 msgstr ""
 
-#: auto-load.c:1453
+#: auto-load.c:1460
 msgid ""
 "Auto-loading specific settings.\n"
 "Configure various auto-load-specific variables such as\n"
 "automatic loading of Python scripts."
 msgstr ""
 
-#: auto-load.c:1480
+#: auto-load.c:1478
 msgid ""
 "Show auto-loading specific settings.\n"
 "Show configuration of various auto-load-specific variables such as\n"
 "automatic loading of Python scripts."
 msgstr ""
 
-#: auto-load.c:1523
+#: auto-load.c:1521
 msgid ""
 "Print current status of auto-loaded files.\n"
 "Print whether various files like Python scripts or .gdbinit files have been\n"
 "found and/or loaded."
 msgstr ""
 
-#: auto-load.c:1544
+#: auto-load.c:1543
 msgid "Enable or disable auto-loading of canned sequences of commands scripts."
 msgstr ""
 
-#: auto-load.c:1545
+#: auto-load.c:1544
 msgid ""
 "Show whether auto-loading of canned sequences of commands scripts is enabled."
 msgstr ""
 
-#: auto-load.c:1547
+#: auto-load.c:1546
 msgid ""
 "If enabled, canned sequences of commands are loaded when the debugger reads\n"
 "an executable or shared library.\n"
 "This option has security implications for untrusted inferiors."
 msgstr ""
 
-#: auto-load.c:1556
+#: auto-load.c:1555
 msgid ""
 "Print the list of automatically loaded sequences of commands.\n"
 "Usage: info auto-load gdb-scripts [REGEXP]"
 msgstr ""
 
-#: auto-load.c:1561
+#: auto-load.c:1560
 msgid "Enable or disable auto-loading of .gdbinit script in current directory."
 msgstr ""
 
-#: auto-load.c:1562
+#: auto-load.c:1561
 msgid ""
 "Show whether auto-loading .gdbinit script in current directory is enabled."
 msgstr ""
 
-#: auto-load.c:1564
+#: auto-load.c:1563
 msgid ""
 "If enabled, canned sequences of commands are loaded when debugger starts\n"
 "from .gdbinit file in current directory.  Such files are deprecated,\n"
@@ -2399,28 +2421,28 @@ msgid ""
 "This option has security implications for untrusted inferiors."
 msgstr ""
 
-#: auto-load.c:1574
+#: auto-load.c:1573
 msgid ""
 "Print whether current directory .gdbinit file has been loaded.\n"
 "Usage: info auto-load local-gdbinit"
 msgstr ""
 
-#: auto-load.c:1582
+#: auto-load.c:1581
 #, possible-c-format
 msgid "GDB scripts:    OBJFILE%s\n"
 msgstr ""
 
-#: auto-load.c:1589
+#: auto-load.c:1588
 #, possible-c-format
 msgid "Python scripts: OBJFILE%s\n"
 msgstr ""
 
-#: auto-load.c:1597
+#: auto-load.c:1596
 #, possible-c-format
 msgid "Guile scripts:  OBJFILE%s\n"
 msgstr ""
 
-#: auto-load.c:1602
+#: auto-load.c:1601
 #, possible-c-format
 msgid ""
 "Automatically loaded scripts are located in one of the directories listed\n"
@@ -2435,23 +2457,23 @@ msgid ""
 "option."
 msgstr ""
 
-#: auto-load.c:1619
+#: auto-load.c:1618
 msgid "Set the list of directories from which to load auto-loaded scripts."
 msgstr ""
 
-#: auto-load.c:1620
+#: auto-load.c:1619
 msgid "Show the list of directories from which to load auto-loaded scripts."
 msgstr ""
 
-#: auto-load.c:1634
+#: auto-load.c:1633
 msgid "Set the list of files and directories that are safe for auto-loading."
 msgstr ""
 
-#: auto-load.c:1635
+#: auto-load.c:1634
 msgid "Show the list of files and directories that are safe for auto-loading."
 msgstr ""
 
-#: auto-load.c:1636
+#: auto-load.c:1635
 msgid ""
 "Various files loaded automatically for the 'set auto-load ...' options must\n"
 "be located in one of the directories listed by this option.  Warning will "
@@ -2467,7 +2489,7 @@ msgid ""
 "This option has security implications for untrusted inferiors."
 msgstr ""
 
-#: auto-load.c:1655
+#: auto-load.c:1654
 msgid ""
 "Add entries to the list of directories from which it is safe to auto-load "
 "files.\n"
@@ -2476,7 +2498,7 @@ msgid ""
 "access the current full list setting."
 msgstr ""
 
-#: auto-load.c:1664
+#: auto-load.c:1663
 msgid ""
 "Add entries to the list of directories from which to load auto-loaded "
 "scripts.\n"
@@ -2484,279 +2506,315 @@ msgid ""
 "'show auto-load scripts-directory' to access the current full list setting."
 msgstr ""
 
-#: auto-load.c:1672
+#: auto-load.c:1671
 msgid "Set auto-load verifications debugging."
 msgstr ""
 
-#: auto-load.c:1673
+#: auto-load.c:1672
 msgid "Show auto-load verifications debugging."
 msgstr ""
 
-#: auto-load.c:1674
+#: auto-load.c:1673
 msgid ""
 "When non-zero, debugging output for files of 'set auto-load ...'\n"
 "is displayed."
 msgstr ""
 
-#: auxv.c:426
+#: auxv.c:457
 msgid "End of vector"
 msgstr ""
 
-#: auxv.c:427 auxv.c:449
+#: auxv.c:458 auxv.c:480
 msgid "Entry should be ignored"
 msgstr ""
 
-#: auxv.c:428
+#: auxv.c:459
 msgid "File descriptor of program"
 msgstr ""
 
-#: auxv.c:429
+#: auxv.c:460
 msgid "Program headers for program"
 msgstr ""
 
-#: auxv.c:430
+#: auxv.c:461
 msgid "Size of program header entry"
 msgstr ""
 
-#: auxv.c:431
+#: auxv.c:462
 msgid "Number of program headers"
 msgstr ""
 
-#: auxv.c:432
+#: auxv.c:463
 msgid "System page size"
 msgstr ""
 
-#: auxv.c:433
+#: auxv.c:464
 msgid "Base address of interpreter"
 msgstr ""
 
-#: auxv.c:434
+#: auxv.c:465
 msgid "Flags"
 msgstr ""
 
-#: auxv.c:435
+#: auxv.c:466
 msgid "Entry point of program"
 msgstr ""
 
-#: auxv.c:436
+#: auxv.c:467
 msgid "Program is not ELF"
 msgstr ""
 
-#: auxv.c:437 auxv.c:465
+#: auxv.c:468 auxv.c:508
 msgid "Real user ID"
 msgstr ""
 
-#: auxv.c:438 auxv.c:464
+#: auxv.c:469 auxv.c:507
 msgid "Effective user ID"
 msgstr ""
 
-#: auxv.c:439 auxv.c:467
+#: auxv.c:470 auxv.c:510
 msgid "Real group ID"
 msgstr ""
 
-#: auxv.c:440 auxv.c:466
+#: auxv.c:471 auxv.c:509
 msgid "Effective group ID"
 msgstr ""
 
-#: auxv.c:441
+#: auxv.c:472
 msgid "Frequency of times()"
 msgstr ""
 
-#: auxv.c:442
+#: auxv.c:473
 msgid "String identifying platform"
 msgstr ""
 
-#: auxv.c:443 auxv.c:475 fbsd-tdep.c:1597
+#: auxv.c:474 auxv.c:518 fbsd-tdep.c:1599
 msgid "Machine-dependent CPU capability hints"
 msgstr ""
 
-#: auxv.c:445
+#: auxv.c:476
 msgid "Used FPU control word"
 msgstr ""
 
-#: auxv.c:446
+#: auxv.c:477
 msgid "Data cache block size"
 msgstr ""
 
-#: auxv.c:447
+#: auxv.c:478
 msgid "Instruction cache block size"
 msgstr ""
 
-#: auxv.c:448
+#: auxv.c:479
 msgid "Unified cache block size"
 msgstr ""
 
-#: auxv.c:450
+#: auxv.c:481
 msgid "String identifying base platform"
 msgstr ""
 
-#: auxv.c:452
+#: auxv.c:483
 msgid "Address of 16 random bytes"
 msgstr ""
 
-#: auxv.c:453 fbsd-tdep.c:1598
+#: auxv.c:484 fbsd-tdep.c:1600
 msgid "Extension of AT_HWCAP"
 msgstr ""
 
-#: auxv.c:454
+#: auxv.c:485
 msgid "File name of executable"
 msgstr ""
 
-#: auxv.c:455
+#: auxv.c:486
 msgid "Boolean, was exec setuid-like?"
 msgstr ""
 
-#: auxv.c:456
+#: auxv.c:487
 msgid "Special system info/entry points"
 msgstr ""
 
-#: auxv.c:457
+#: auxv.c:488
 msgid "System-supplied DSO's ELF header"
 msgstr ""
 
-#: auxv.c:459
+#: auxv.c:490
 msgid "L1 Instruction cache information"
 msgstr ""
 
-#: auxv.c:461
+#: auxv.c:492
+msgid "L1 Instruction cache size"
+msgstr ""
+
+#: auxv.c:493
+msgid "L1 Instruction cache geometry"
+msgstr ""
+
+#: auxv.c:495
 msgid "L1 Data cache information"
 msgstr ""
 
-#: auxv.c:462
+#: auxv.c:496
+msgid "L1 Data cache size"
+msgstr ""
+
+#: auxv.c:497
+msgid "L1 Data cache geometry"
+msgstr ""
+
+#: auxv.c:499
 msgid "L2 cache information"
 msgstr ""
 
-#: auxv.c:463
+#: auxv.c:500
+msgid "L2 cache size"
+msgstr ""
+
+#: auxv.c:501
+msgid "L2 cache geometry"
+msgstr ""
+
+#: auxv.c:502
 msgid "L3 cache information"
 msgstr ""
 
-#: auxv.c:468
+#: auxv.c:503
+msgid "L3 cache size"
+msgstr ""
+
+#: auxv.c:504
+msgid "L3 cache geometry"
+msgstr ""
+
+#: auxv.c:505
+msgid "Minimum stack size for signal delivery"
+msgstr ""
+
+#: auxv.c:511
 msgid "Dynamic linker's ELF header"
 msgstr ""
 
-#: auxv.c:469
+#: auxv.c:512
 msgid "Dynamic linker's section headers"
 msgstr ""
 
-#: auxv.c:471
+#: auxv.c:514
 msgid "String giving name of dynamic linker"
 msgstr ""
 
-#: auxv.c:473
+#: auxv.c:516
 msgid "Large pagesize"
 msgstr ""
 
-#: auxv.c:474
+#: auxv.c:517
 msgid "Platform name string"
 msgstr ""
 
-#: auxv.c:477
+#: auxv.c:520
 msgid "Should flush icache?"
 msgstr ""
 
-#: auxv.c:478
+#: auxv.c:521
 msgid "CPU name string"
 msgstr ""
 
-#: auxv.c:479
+#: auxv.c:522
 msgid "COFF entry point address"
 msgstr ""
 
-#: auxv.c:480
+#: auxv.c:523
 msgid "COFF executable file descriptor"
 msgstr ""
 
-#: auxv.c:483
+#: auxv.c:526
 msgid "Canonicalized file name given to execve"
 msgstr ""
 
-#: auxv.c:484
+#: auxv.c:527
 msgid "String for name of MMU module"
 msgstr ""
 
-#: auxv.c:485
+#: auxv.c:528
 msgid "Dynamic linker's data segment address"
 msgstr ""
 
-#: auxv.c:488
+#: auxv.c:531
 msgid "AF_SUN_ flags passed from the kernel"
 msgstr ""
 
-#: auxv.c:489
+#: auxv.c:532
 msgid "Name of emulation binary for runtime linker"
 msgstr ""
 
-#: auxv.c:491
+#: auxv.c:534
 msgid "Name of brand library"
 msgstr ""
 
-#: auxv.c:492
+#: auxv.c:535
 msgid "Aux vector for brand modules 1"
 msgstr ""
 
-#: auxv.c:494
+#: auxv.c:537
 msgid "Aux vector for brand modules 2"
 msgstr ""
 
-#: auxv.c:496
+#: auxv.c:539
 msgid "Aux vector for brand modules 3"
 msgstr ""
 
-#: auxv.c:498
+#: auxv.c:541
 msgid "Machine-dependent CPU capability hints 2"
 msgstr ""
 
-#: auxv.c:537
+#: auxv.c:580
 msgid "The program has no auxiliary information now."
 msgstr ""
 
-#: auxv.c:543
+#: auxv.c:586
 msgid "No auxiliary vector found, or failed reading it."
 msgstr ""
 
-#: auxv.c:545
+#: auxv.c:588
 msgid "Auxiliary vector is empty."
 msgstr ""
 
-#: auxv.c:553
+#: auxv.c:597
 msgid ""
 "Display the inferior's auxiliary vector.\n"
 "This is information provided by the operating system at program startup."
 msgstr ""
 
-#: avr-tdep.c:402 avr-tdep.c:420 i386-tdep.c:475 i386-tdep.c:3244
-#: i386-tdep.c:3445 i386-tdep.c:3582 i386-tdep.c:3664 s390-tdep.c:1288
-#: s390-tdep.c:1311 s390-tdep.c:1386 s390-tdep.c:1443 s390-tdep.c:1505
-#: s390-tdep.c:1551 sparc64-tdep.c:899
+#: avr-tdep.c:405 avr-tdep.c:423 i386-tdep.c:476 i386-tdep.c:3294
+#: i386-tdep.c:3495 i386-tdep.c:3632 i386-tdep.c:3714 s390-tdep.c:1290
+#: s390-tdep.c:1313 s390-tdep.c:1388 s390-tdep.c:1445 s390-tdep.c:1507
+#: s390-tdep.c:1553 sparc64-tdep.c:891
 msgid "invalid regnum"
 msgstr ""
 
-#: avr-tdep.c:663
+#: avr-tdep.c:666
 #, possible-c-format
 msgid "Num pushes too large: %d\n"
 msgstr ""
 
-#: avr-tdep.c:1564
+#: avr-tdep.c:1567
 msgid "ERR: info io_registers NOT supported by current target\n"
 msgstr ""
 
-#: avr-tdep.c:1574
+#: avr-tdep.c:1577
 msgid "Error fetching number of io registers\n"
 msgstr ""
 
-#: avr-tdep.c:1580
+#: avr-tdep.c:1583
 #, possible-c-format
 msgid ""
 "Target has %u io registers:\n"
 "\n"
 msgstr ""
 
-#: avr-tdep.c:1598
+#: avr-tdep.c:1601
 #, possible-c-format
 msgid "ERR: error reading avr.io_reg:%x,%x\n"
 msgstr ""
 
-#: avr-tdep.c:1632
+#: avr-tdep.c:1636
 msgid "Query remote AVR target for I/O space register values."
 msgstr ""
 
@@ -2786,7 +2844,7 @@ msgstr ""
 msgid "Couldn't resolve symbol `%s'."
 msgstr ""
 
-#: ax-gdb.c:720 findvar.c:359 findvar.c:741 printcmd.c:1519 tracepoint.c:2629
+#: ax-gdb.c:720 findvar.c:367 findvar.c:749 printcmd.c:1515 tracepoint.c:2629
 msgid "LOC_COMPUTED variable missing a method"
 msgstr ""
 
@@ -2873,17 +2931,17 @@ msgstr ""
 msgid "non-aggregate type to gen_struct_elt_for_reference"
 msgstr ""
 
-#: ax-gdb.c:1607 valops.c:3354
+#: ax-gdb.c:1607 valops.c:3313
 msgid "pointers to bitfield members not allowed"
 msgstr ""
 
 #. FIXME we need a way to do "want_address" equivalent
-#: ax-gdb.c:1611 valops.c:3405
+#: ax-gdb.c:1611 valops.c:3364
 #, possible-c-format
 msgid "Cannot reference non-static field \"%s\""
 msgstr ""
 
-#: ax-gdb.c:1631 eval.c:997 valops.c:3574
+#: ax-gdb.c:1631 eval.c:996 valops.c:3533
 #, possible-c-format
 msgid "No symbol \"%s\" in namespace \"%s\"."
 msgstr ""
@@ -2952,7 +3010,7 @@ msgstr ""
 msgid "no `%s' found"
 msgstr ""
 
-#: ax-gdb.c:2258 eval.c:1284 eval.c:3075
+#: ax-gdb.c:2258 eval.c:1296 eval.c:3085
 #, possible-c-format
 msgid "There is no field named %s"
 msgstr ""
@@ -2970,16 +3028,16 @@ msgstr ""
 msgid "cannot subscript requested type: cannot call user defined functions"
 msgstr ""
 
-#: ax-gdb.c:2358 eval.c:2317 eval.c:2358 eval.c:2382 m2-lang.c:275
+#: ax-gdb.c:2358 eval.c:2329 eval.c:2370 eval.c:2394 m2-lang.c:121
 #, possible-c-format
 msgid "cannot subscript something of type `%s'"
 msgstr ""
 
-#: ax-gdb.c:2361 eval.c:2320 eval.c:2385 m2-lang.c:278
+#: ax-gdb.c:2361 eval.c:2332 eval.c:2397 m2-lang.c:124
 msgid "cannot subscript requested type"
 msgstr ""
 
-#: ax-gdb.c:2366 valarith.c:934
+#: ax-gdb.c:2366 valarith.c:1098
 msgid "Argument to arithmetic operation not a number or boolean."
 msgstr ""
 
@@ -2999,15 +3057,15 @@ msgstr ""
 msgid "Must start with a format string."
 msgstr ""
 
-#: ax-gdb.c:2705 breakpoint.c:2228 printcmd.c:2550
+#: ax-gdb.c:2705 breakpoint.c:2249 printcmd.c:2495
 msgid "Bad format string, non-terminated '\"'."
 msgstr ""
 
-#: ax-gdb.c:2710 breakpoint.c:2233 printcmd.c:2555
+#: ax-gdb.c:2710 breakpoint.c:2254 printcmd.c:2500
 msgid "Invalid argument syntax"
 msgstr ""
 
-#: ax-gdb.c:2750
+#: ax-gdb.c:2751
 msgid ""
 "Translate an expression into remote agent bytecode for tracing.\n"
 "Usage: maint agent [-at LOCATION,] EXPRESSION\n"
@@ -3015,7 +3073,7 @@ msgid ""
 "If not, generate remote agent bytecode for current frame pc address."
 msgstr ""
 
-#: ax-gdb.c:2758
+#: ax-gdb.c:2759
 msgid ""
 "Translate an expression into remote agent bytecode for evaluation.\n"
 "Usage: maint agent-eval [-at LOCATION,] EXPRESSION\n"
@@ -3023,7 +3081,7 @@ msgid ""
 "If not, generate remote agent bytecode for current frame pc address."
 msgstr ""
 
-#: ax-gdb.c:2766
+#: ax-gdb.c:2767
 msgid ""
 "Translate an expression into remote agent bytecode for evaluation and "
 "display the bytecodes."
@@ -3097,7 +3155,7 @@ msgstr ""
 msgid " %02x"
 msgstr ""
 
-#: ax-general.c:372 darwin-nat.c:545 darwin-nat-info.c:292
+#: ax-general.c:372 darwin-nat.c:522 darwin-nat-info.c:292
 #: darwin-nat-info.c:585 darwin-nat-info.c:787
 msgid "\n"
 msgstr ""
@@ -3251,40 +3309,57 @@ msgstr ""
 msgid "DW_OP_entry_value resolving cannot find DW_TAG_call_site %s in %s"
 msgstr ""
 
-#: blockframe.c:411
+#: blockframe.c:415
 msgid "Entry block not found in find_function_entry_range_from_pc"
 msgstr ""
 
-#: break-catch-sig.c:196
+#: bpf-tdep.c:78
+#, possible-c-format
+msgid "Debugging of BPF is %s.\n"
+msgstr ""
+
+#: bpf-tdep.c:380
+msgid "Set BPF debugging."
+msgstr ""
+
+#: bpf-tdep.c:381
+msgid "Show BPF debugging."
+msgstr ""
+
+#: bpf-tdep.c:382
+msgid "Enables BPF specific debugging output."
+msgstr ""
+
+#: break-catch-sig.c:195
 #, possible-c-format
 msgid "Catchpoint %d (signal %s), "
 msgstr ""
 
-#: break-catch-sig.c:264
+#: break-catch-sig.c:263
 #, possible-c-format
 msgid "Catchpoint %d (signals"
 msgstr ""
 
-#: break-catch-sig.c:266
+#: break-catch-sig.c:265
 #, possible-c-format
 msgid "Catchpoint %d (signal"
 msgstr ""
 
-#: break-catch-sig.c:277
+#: break-catch-sig.c:276
 #, possible-c-format
 msgid "Catchpoint %d (any signal)"
 msgstr ""
 
-#: break-catch-sig.c:279
+#: break-catch-sig.c:278
 #, possible-c-format
 msgid "Catchpoint %d (standard signals)"
 msgstr ""
 
-#: break-catch-sig.c:357
+#: break-catch-sig.c:356
 msgid "'all' cannot be caught with other signals"
 msgstr ""
 
-#: break-catch-sig.c:373
+#: break-catch-sig.c:372
 #, possible-c-format
 msgid "Unknown signal name '%s'."
 msgstr ""
@@ -3300,22 +3375,22 @@ msgid ""
 "(if your system supports that), or signal numbers."
 msgstr ""
 
-#: break-catch-syscall.c:296
+#: break-catch-syscall.c:295
 #, possible-c-format
 msgid "Catchpoint %d (syscalls"
 msgstr ""
 
-#: break-catch-syscall.c:298
+#: break-catch-syscall.c:297
 #, possible-c-format
 msgid "Catchpoint %d (syscall"
 msgstr ""
 
-#: break-catch-syscall.c:313
+#: break-catch-syscall.c:312
 #, possible-c-format
 msgid "Catchpoint %d (any syscall)"
 msgstr ""
 
-#: break-catch-syscall.c:408
+#: break-catch-syscall.c:407
 #, possible-c-format
 msgid "Unknown syscall group '%s'."
 msgstr ""
@@ -3323,12 +3398,12 @@ msgstr ""
 #. Here we have to issue an error instead of a warning,
 #. because GDB cannot do anything useful if there's no
 #. syscall number to be caught.
-#: break-catch-syscall.c:418
+#: break-catch-syscall.c:417
 #, possible-c-format
 msgid "Unknown syscall name '%s'."
 msgstr ""
 
-#: break-catch-syscall.c:438
+#: break-catch-syscall.c:437
 msgid "The feature 'catch syscall' is not supported on this architecture yet."
 msgstr ""
 
@@ -3345,7 +3420,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:451 probe.c:808
+#: break-catch-throw.c:103 f-valprint.c:457 probe.c:806
 msgid "No frame selected"
 msgstr ""
 
@@ -3365,79 +3440,79 @@ msgstr ""
 msgid "error computing probe argument at c++ exception catchpoint"
 msgstr ""
 
-#: break-catch-throw.c:300
+#: break-catch-throw.c:302
 msgid "\tmatching: "
 msgstr ""
 
-#: break-catch-throw.c:315
+#: break-catch-throw.c:317
 msgid "Catchpoint"
 msgstr ""
 
-#: break-catch-throw.c:318
+#: break-catch-throw.c:320
 msgid "(throw)"
 msgstr ""
 
-#: break-catch-throw.c:319
+#: break-catch-throw.c:321
 msgid "(catch)"
 msgstr ""
 
-#: break-catch-throw.c:319
+#: break-catch-throw.c:321
 msgid "(rethrow)"
 msgstr ""
 
-#: break-catch-throw.c:368
+#: break-catch-throw.c:370
 msgid "invalid type-matching regexp"
 msgstr ""
 
-#: break-catch-throw.c:445
+#: break-catch-throw.c:447
 msgid "Unsupported or unknown exception event; cannot catch it"
 msgstr ""
 
 #. Add catch and tcatch sub-commands.
-#: break-catch-throw.c:541
+#: break-catch-throw.c:544
 msgid "Catch an exception, when caught."
 msgstr ""
 
-#: break-catch-throw.c:547
+#: break-catch-throw.c:550
 msgid "Catch an exception, when thrown."
 msgstr ""
 
-#: break-catch-throw.c:553
+#: break-catch-throw.c:556
 msgid "Catch an exception, when rethrown."
 msgstr ""
 
-#: breakpoint.c:327
+#: breakpoint.c:331
 #, possible-c-format
 msgid "Debugger's willingness to use watchpoint hardware is %s.\n"
 msgstr ""
 
-#: breakpoint.c:343
+#: breakpoint.c:347
 #, possible-c-format
 msgid "Debugger's behavior regarding pending breakpoints is %s.\n"
 msgstr ""
 
-#: breakpoint.c:359
+#: breakpoint.c:363
 #, possible-c-format
 msgid "Automatic usage of hardware breakpoints is %s.\n"
 msgstr ""
 
-#: breakpoint.c:376
+#: breakpoint.c:380
 #, possible-c-format
 msgid "Always inserted breakpoint mode is %s.\n"
 msgstr ""
 
-#: breakpoint.c:712
+#: breakpoint.c:718
 msgid ""
 "Target does not support breakpoint condition evaluation.\n"
 "Using host evaluation mode instead."
 msgstr ""
 
-#: breakpoint.c:768
+#: breakpoint.c:774
 #, possible-c-format
 msgid "Breakpoint condition evaluation mode is %s (currently %s).\n"
 msgstr ""
 
-#: breakpoint.c:773
+#: breakpoint.c:779
 #, possible-c-format
 msgid "Breakpoint condition evaluation mode is %s.\n"
 msgstr ""
@@ -3447,482 +3522,478 @@ msgstr ""
 msgid "Breakpoint %d now unconditional.\n"
 msgstr ""
 
-#: breakpoint.c:954
+#: breakpoint.c:967
 msgid "breakpoint number"
 msgstr ""
 
-#: breakpoint.c:959
+#: breakpoint.c:972
 #, possible-c-format
 msgid "Bad breakpoint argument: '%s'"
 msgstr ""
 
-#: breakpoint.c:972 guile/scm-breakpoint.c:947 python/py-breakpoint.c:1176
+#: breakpoint.c:985 guile/scm-breakpoint.c:947 python/py-breakpoint.c:1176
 #, possible-c-format
 msgid ""
 "Only one stop condition allowed.  There is currently a %s stop condition "
 "defined for this breakpoint."
 msgstr ""
 
-#: breakpoint.c:984 breakpoint.c:13862
+#: breakpoint.c:997 breakpoint.c:13948
 #, possible-c-format
 msgid "No breakpoint number %d."
 msgstr ""
 
-#: breakpoint.c:999
+#: breakpoint.c:1012
 msgid "The 'while-stepping' command can only be used for tracepoints"
 msgstr ""
 
-#: breakpoint.c:1009
+#: breakpoint.c:1022
 msgid "The 'collect' command can only be used for tracepoints"
 msgstr ""
 
-#: breakpoint.c:1012
+#: breakpoint.c:1025
 msgid "The 'teval' command can only be used for tracepoints"
 msgstr ""
 
-#: breakpoint.c:1097
+#: breakpoint.c:1110
 msgid "The 'while-stepping' command cannot be used for fast tracepoint"
 msgstr ""
 
-#: breakpoint.c:1100
+#: breakpoint.c:1113
 msgid "The 'while-stepping' command cannot be used for static tracepoint"
 msgstr ""
 
-#: breakpoint.c:1104
+#: breakpoint.c:1117
 msgid "The 'while-stepping' command can be used only once"
 msgstr ""
 
-#: breakpoint.c:1121
+#: breakpoint.c:1134
 msgid "The 'while-stepping' command cannot be nested"
 msgstr ""
 
-#: breakpoint.c:1238
+#: breakpoint.c:1261
 #, possible-c-format
 msgid "Type commands for breakpoint(s) %s, one per line."
 msgstr ""
 
-#: breakpoint.c:1476
+#: breakpoint.c:1499
 #, possible-c-format
 msgid "reading through apparently deleted breakpoint #%d?"
 msgstr ""
 
-#: breakpoint.c:1758 breakpoint.c:1939
+#: breakpoint.c:1781 breakpoint.c:1962
 msgid ""
 "Can't set read/access watchpoint when hardware watchpoints are disabled."
 msgstr ""
 
-#: breakpoint.c:1918
+#: breakpoint.c:1941
 msgid "Target does not support this type of hardware watchpoint."
 msgstr ""
 
-#: breakpoint.c:1921
+#: breakpoint.c:1944
 msgid "There are not enough available hardware resources for this watchpoint."
 msgstr ""
 
-#: breakpoint.c:1942
+#: breakpoint.c:1965
 msgid "Expression cannot be implemented with read/access watchpoint."
 msgstr ""
 
-#: breakpoint.c:1963
+#: breakpoint.c:1986
 #, possible-c-format
 msgid ""
 "Watchpoint %d deleted because the program has left the block\n"
 "in which its expression is valid.\n"
 msgstr ""
 
-#: breakpoint.c:2219
+#: breakpoint.c:2240
 msgid "No format string following the location"
 msgstr ""
 
-#: breakpoint.c:2497
-msgid ""
-"Note: automatically using hardware breakpoints for read-only addresses.\n"
-msgstr ""
-
-#: breakpoint.c:2508
+#: breakpoint.c:2493
 #, possible-c-format
 msgid ""
 "Cannot insert breakpoint %d.\n"
 "Cannot set software breakpoint at read-only address %s\n"
 msgstr ""
 
-#: breakpoint.c:2547
+#: breakpoint.c:2534
 #, possible-c-format
 msgid "hardware breakpoint %d not supported in overlay!"
 msgstr ""
 
-#: breakpoint.c:2751
+#: breakpoint.c:2738
 #, possible-c-format
 msgid ""
 "Error inserting catchpoint %d: Your system does not support this type\n"
 "of catchpoint."
 msgstr ""
 
-#: breakpoint.c:2755
+#: breakpoint.c:2742
 #, possible-c-format
 msgid "Error inserting catchpoint %d."
 msgstr ""
 
-#: breakpoint.c:3037
+#: breakpoint.c:3028
 #, possible-c-format
 msgid ""
 "Thread-specific breakpoint %d deleted - thread %s no longer in the thread "
 "list.\n"
 msgstr ""
 
-#: breakpoint.c:3602
+#: breakpoint.c:3624
 msgid "Cannot detach breakpoints of inferior_ptid"
 msgstr ""
 
-#: breakpoint.c:3759
+#: breakpoint.c:3781
 #, possible-c-format
 msgid "Could not remove hardware watchpoint %d."
 msgstr ""
 
-#: breakpoint.c:4459
+#: breakpoint.c:4481
 msgid "<unreadable>"
 msgstr ""
 
-#: breakpoint.c:4537
+#: breakpoint.c:4559
 msgid "print_bp_stop_message: unrecognized enum value"
 msgstr ""
 
-#: breakpoint.c:4553
+#: breakpoint.c:4575
 msgid "Stopped due to shared library event:\n"
 msgstr ""
 
-#: breakpoint.c:4555
+#: breakpoint.c:4577
 msgid "Stopped due to shared library event (no libraries added or removed)\n"
 msgstr ""
 
-#: breakpoint.c:4565
+#: breakpoint.c:4587
 msgid "  Inferior unloaded "
 msgstr ""
 
-#: breakpoint.c:4580
+#: breakpoint.c:4602
 msgid "  Inferior loaded "
 msgstr ""
 
-#: breakpoint.c:4997
+#: breakpoint.c:5019
 #, possible-c-format
 msgid "Watchpoint %d deleted.\n"
 msgstr ""
 
-#: breakpoint.c:5233
+#: breakpoint.c:5255
 msgid "Watchpoint condition cannot be tested in the current scope"
 msgstr ""
 
-#: breakpoint.c:5627
+#: breakpoint.c:5652
 msgid "bpstat_what: tracepoint encountered"
 msgstr ""
 
-#: breakpoint.c:5648
+#: breakpoint.c:5673
 #, possible-c-format
 msgid "bpstat_what: unhandled bptype %d"
 msgstr ""
 
-#: breakpoint.c:5925
+#: breakpoint.c:5950
 #, possible-c-format
 msgid "bptypes table does not describe type #%d."
 msgstr ""
 
-#: breakpoint.c:6640
+#: breakpoint.c:6665
 msgid "Note: breakpoint "
 msgstr ""
 
 #. if (others == ???)
-#: breakpoint.c:6642
+#: breakpoint.c:6667
 msgid "Note: breakpoints "
 msgstr ""
 
-#: breakpoint.c:6660
+#: breakpoint.c:6685
 #, possible-c-format
 msgid "also set at pc %ps.\n"
 msgstr ""
 
-#: breakpoint.c:6854
+#: breakpoint.c:6885
 #, possible-c-format
 msgid "Breakpoint %d address previously adjusted from %s to %s."
 msgstr ""
 
-#: breakpoint.c:6857
+#: breakpoint.c:6888
 #, possible-c-format
 msgid "Breakpoint address adjusted from %s to %s."
 msgstr ""
 
-#: breakpoint.c:6955
+#: breakpoint.c:6986
 msgid "unknown breakpoint type"
 msgstr ""
 
-#: breakpoint.c:7539
+#: breakpoint.c:7570
 #, possible-c-format
 msgid "Temporarily disabling breakpoints for unloaded shared library \"%s\""
 msgstr ""
 
-#: breakpoint.c:7734
+#: breakpoint.c:7765
 #, possible-c-format
 msgid "Catchpoint %d (fork)"
 msgstr ""
 
-#: breakpoint.c:7849
+#: breakpoint.c:7880
 #, possible-c-format
 msgid "Catchpoint %d (vfork)"
 msgstr ""
 
-#: breakpoint.c:8006
+#: breakpoint.c:8037
 #, possible-c-format
 msgid "load of library matching %s"
 msgstr ""
 
-#: breakpoint.c:8008
+#: breakpoint.c:8039
 msgid "load of library"
 msgstr ""
 
-#: breakpoint.c:8013
+#: breakpoint.c:8044
 #, possible-c-format
 msgid "unload of library matching %s"
 msgstr ""
 
-#: breakpoint.c:8015
+#: breakpoint.c:8046
 msgid "unload of library"
 msgstr ""
 
-#: breakpoint.c:8028
+#: breakpoint.c:8059
 #, possible-c-format
 msgid "Catchpoint %d (%s)"
 msgstr ""
 
-#: breakpoint.c:8068 stack.c:2385 symtab.c:4336 symtab.c:4728 symtab.c:4736
+#: breakpoint.c:8099 stack.c:2357 symtab.c:4372 symtab.c:4764 symtab.c:4772
 msgid "Invalid regexp"
 msgstr ""
 
-#: breakpoint.c:8264
+#: breakpoint.c:8295
 #, possible-c-format
 msgid "Catchpoint %d (exec)"
 msgstr ""
 
-#: breakpoint.c:8656 printcmd.c:2545
+#: breakpoint.c:8594
+msgid ""
+"Note: automatically using hardware breakpoints for read-only addresses.\n"
+msgstr ""
+
+#: breakpoint.c:8710 printcmd.c:2490
 msgid "Bad format string, missing '\"'."
 msgstr ""
 
-#: breakpoint.c:8663
+#: breakpoint.c:8717
 msgid "No function supplied for dprintf call"
 msgstr ""
 
-#: breakpoint.c:8681
+#: breakpoint.c:8735
 msgid "Target cannot run dprintf commands, falling back to GDB printf"
 msgstr ""
 
-#: breakpoint.c:8687
+#: breakpoint.c:8741
 msgid "Invalid dprintf style."
 msgstr ""
 
-#: breakpoint.c:8743 breakpoint.c:14243
+#: breakpoint.c:8797 breakpoint.c:14329
 msgid "No hardware breakpoint support in the target."
 msgstr ""
 
-#: breakpoint.c:8745 breakpoint.c:9790 breakpoint.c:14245
+#: breakpoint.c:8799 breakpoint.c:9844 breakpoint.c:14331
 msgid "Hardware breakpoints used exceeds limit."
 msgstr ""
 
-#: breakpoint.c:8798 breakpoint.c:8806
+#: breakpoint.c:8852 breakpoint.c:8860
 #, possible-c-format
 msgid "Probed static tracepoint marker \"%s\"\n"
 msgstr ""
 
-#: breakpoint.c:8811
+#: breakpoint.c:8865
 msgid "Couldn't determine the static tracepoint marker to probe"
 msgstr ""
 
-#: breakpoint.c:8831
+#: breakpoint.c:8885
 #, possible-c-format
 msgid "Garbage '%s' follows condition"
 msgstr ""
 
-#: breakpoint.c:8841 breakpoint.c:9570
+#: breakpoint.c:8895 breakpoint.c:9624
 msgid "Format string required"
 msgstr ""
 
-#: breakpoint.c:8844
+#: breakpoint.c:8898
 #, possible-c-format
 msgid "Garbage '%s' at end of command"
 msgstr ""
 
-#: breakpoint.c:8984
+#: breakpoint.c:9038
 msgid "No default breakpoint address now."
 msgstr ""
 
-#: breakpoint.c:9053
+#: breakpoint.c:9107
 #, possible-c-format
 msgid "May not have a fast tracepoint at %s%s"
 msgstr ""
 
-#: breakpoint.c:9109
+#: breakpoint.c:9163
 msgid "Junk after thread keyword."
 msgstr ""
 
-#: breakpoint.c:9120
+#: breakpoint.c:9174
 msgid "Junk after task keyword."
 msgstr ""
 
-#: breakpoint.c:9122
+#: breakpoint.c:9176
 #, possible-c-format
 msgid "Unknown task %d."
 msgstr ""
 
-#: breakpoint.c:9152
+#: breakpoint.c:9206
 #, possible-c-format
 msgid "No known static tracepoint marker named %s"
 msgstr ""
 
-#: breakpoint.c:9251
+#: breakpoint.c:9305
 #, possible-c-format
 msgid "Make %s pending on future shared library load? "
 msgstr ""
 
-#: breakpoint.c:9312 mi/mi-cmd-break.c:343
+#: breakpoint.c:9366 mi/mi-cmd-break.c:343
 #, possible-c-format
 msgid "Garbage '%s' at end of location"
 msgstr ""
 
-#: breakpoint.c:9361
+#: breakpoint.c:9415
 msgid ""
 "Multiple breakpoints were set.\n"
 "Use the \"delete\" command to delete unwanted breakpoints."
 msgstr ""
 
-#: breakpoint.c:9413 linespec.c:2204
+#: breakpoint.c:9467 linespec.c:2202
 #, possible-c-format
 msgid "No line %d in file \"%s\"."
 msgstr ""
 
-#: breakpoint.c:9485
+#: breakpoint.c:9539
 msgid ""
 "Specify the type of breakpoint to set.\n"
 "Usage: stop in <function | address>\n"
 "       stop at <line>\n"
 msgstr ""
 
-#: breakpoint.c:9518
+#: breakpoint.c:9572
 msgid "Usage: stop in <function | address>\n"
 msgstr ""
 
-#: breakpoint.c:9550
+#: breakpoint.c:9604
 msgid "Usage: stop at LINE\n"
 msgstr ""
 
-#: breakpoint.c:9594
+#: breakpoint.c:9648
 msgid "May only run agent-printf on the target"
 msgstr ""
 
-#: breakpoint.c:9719
+#: breakpoint.c:9773
 #, possible-c-format
 msgid "Hardware assisted ranged breakpoint %d from %s to %s."
 msgstr ""
 
-#: breakpoint.c:9761 breakpoint.c:9834
+#: breakpoint.c:9815 breakpoint.c:9888
 msgid "Could not find location of the end of the range."
 msgstr ""
 
-#: breakpoint.c:9783
+#: breakpoint.c:9837
 msgid "This target does not support hardware ranged breakpoints."
 msgstr ""
 
-#: breakpoint.c:9794
+#: breakpoint.c:9848
 msgid "No address range specified."
 msgstr ""
 
-#: breakpoint.c:9802
+#: breakpoint.c:9856
 msgid "Too few arguments."
 msgstr ""
 
-#: breakpoint.c:9804
+#: breakpoint.c:9858
 msgid "Could not find location of the beginning of the range."
 msgstr ""
 
-#: breakpoint.c:9810 breakpoint.c:9839
+#: breakpoint.c:9864 breakpoint.c:9893
 msgid "Cannot create a ranged breakpoint with multiple locations."
 msgstr ""
 
-#: breakpoint.c:9845
+#: breakpoint.c:9899
 msgid "Invalid address range, end precedes start."
 msgstr ""
 
 #. Length overflowed.
-#: breakpoint.c:9850
+#: breakpoint.c:9904
 msgid "Address range too large."
 msgstr ""
 
-#: breakpoint.c:10224 breakpoint.c:10361 breakpoint.c:10417 breakpoint.c:10448
+#: breakpoint.c:10278 breakpoint.c:10415 breakpoint.c:10471 breakpoint.c:10501
 msgid "Invalid hardware watchpoint type."
 msgstr ""
 
-#: breakpoint.c:10255
+#: breakpoint.c:10309
 msgid "Invalid watchpoint type."
 msgstr ""
 
-#: breakpoint.c:10365
+#: breakpoint.c:10419
 msgid ""
 "\n"
 "Check the underlying instruction at PC for the memory\n"
 "address and value which triggered this watchpoint.\n"
 msgstr ""
 
-#: breakpoint.c:10536
+#: breakpoint.c:10589
 msgid "You can specify only one thread."
 msgstr ""
 
-#: breakpoint.c:10555
+#: breakpoint.c:10608
 msgid "You can specify only one mask."
 msgstr ""
 
-#: breakpoint.c:10598
+#: breakpoint.c:10651
 #, possible-c-format
 msgid "Cannot watch constant value `%.*s'."
 msgstr ""
 
-#: breakpoint.c:10627
+#: breakpoint.c:10680
 msgid "This target does not support masked watchpoints."
 msgstr ""
 
-#: breakpoint.c:10629
+#: breakpoint.c:10682
 msgid "Invalid mask or memory region."
 msgstr ""
 
-#: breakpoint.c:10652
+#: breakpoint.c:10705
 msgid "Junk at end of command."
 msgstr ""
 
-#: breakpoint.c:11020
+#: breakpoint.c:11068
 msgid "Couldn't get information on specified line."
 msgstr ""
 
-#: breakpoint.c:11174
+#: breakpoint.c:11222
 msgid "unsupported or unknown fork kind; cannot catch it"
 msgstr ""
 
-#: breakpoint.c:11251 breakpoint.c:11258
-msgid "Catch requires an event name."
-msgstr ""
-
-#: breakpoint.c:11308
+#: breakpoint.c:11345
 msgid "No source file specified."
 msgstr ""
 
-#: breakpoint.c:11402
+#: breakpoint.c:11439
 #, possible-c-format
 msgid "No breakpoint at %s."
 msgstr ""
 
-#: breakpoint.c:11404
+#: breakpoint.c:11441
 msgid "No breakpoint at this line."
 msgstr ""
 
-#: breakpoint.c:11425
+#: breakpoint.c:11462
 msgid "Deleted breakpoint "
 msgstr ""
 
-#: breakpoint.c:11427
+#: breakpoint.c:11464
 msgid "Deleted breakpoints "
 msgstr ""
 
@@ -3934,237 +4005,237 @@ msgstr ""
 #. Note that at this point, old_loc->owner is still
 #. valid, as delete_breakpoint frees the breakpoint
 #. only after calling us.
-#: breakpoint.c:11848
+#: breakpoint.c:11914
 #, possible-c-format
 msgid "warning: Error removing breakpoint %d\n"
 msgstr ""
 
-#: breakpoint.c:12082
+#: breakpoint.c:12159
 #, possible-c-format
 msgid " (%s) pending."
 msgstr ""
 
-#: breakpoint.c:12087
+#: breakpoint.c:12164
 #, possible-c-format
 msgid " (%s,%s) pending."
 msgstr ""
 
-#: breakpoint.c:12093
+#: breakpoint.c:12170
 #, possible-c-format
 msgid " (%s %s) pending."
 msgstr ""
 
-#: breakpoint.c:12440
+#: breakpoint.c:12517
 msgid "Temporary breakpoint"
 msgstr ""
 
-#: breakpoint.c:12442
+#: breakpoint.c:12519
 msgid "Breakpoint"
 msgstr ""
 
-#: breakpoint.c:12443 breakpoint.c:12756 breakpoint.c:12760 breakpoint.c:12764
+#: breakpoint.c:12520 breakpoint.c:12833 breakpoint.c:12837 breakpoint.c:12841
 #, possible-c-format
 msgid " %d"
 msgstr ""
 
-#: breakpoint.c:12445
+#: breakpoint.c:12522
 msgid " at gnu-indirect-function resolver"
 msgstr ""
 
-#: breakpoint.c:12448
+#: breakpoint.c:12525
 #, possible-c-format
 msgid "Hardware assisted breakpoint %d"
 msgstr ""
 
-#: breakpoint.c:12451
+#: breakpoint.c:12528
 #, possible-c-format
 msgid "Dprintf %d"
 msgstr ""
 
-#: breakpoint.c:12472
+#: breakpoint.c:12549
 #, possible-c-format
 msgid "unhandled breakpoint type %d"
 msgstr ""
 
 #. Not sure how we will get here.
 #. GDB should not stop for these breakpoints.
-#: breakpoint.c:12585
+#: breakpoint.c:12662
 msgid "Thread Event Breakpoint: gdb should not stop!\n"
 msgstr ""
 
 #. By analogy with the thread event, GDB should not stop for these.
-#: breakpoint.c:12590
+#: breakpoint.c:12667
 msgid "Overlay Event Breakpoint: gdb should not stop!\n"
 msgstr ""
 
 #. These should never be enabled.
-#: breakpoint.c:12595
+#: breakpoint.c:12672
 msgid "Longjmp Master Breakpoint: gdb should not stop!\n"
 msgstr ""
 
 #. These should never be enabled.
-#: breakpoint.c:12600
+#: breakpoint.c:12677
 msgid "std::terminate Master Breakpoint: gdb should not stop!\n"
 msgstr ""
 
 #. These should never be enabled.
-#: breakpoint.c:12606
+#: breakpoint.c:12683
 msgid "Exception Master Breakpoint: gdb should not stop!\n"
 msgstr ""
 
-#: breakpoint.c:12709
+#: breakpoint.c:12786
 msgid "probe not found"
 msgstr ""
 
-#: breakpoint.c:12755
+#: breakpoint.c:12832
 msgid "Tracepoint"
 msgstr ""
 
-#: breakpoint.c:12759
+#: breakpoint.c:12836
 msgid "Fast tracepoint"
 msgstr ""
 
-#: breakpoint.c:12763
+#: breakpoint.c:12840
 msgid "Static tracepoint"
 msgstr ""
 
-#: breakpoint.c:12768 breakpoint.c:12787
+#: breakpoint.c:12845 breakpoint.c:12864
 #, possible-c-format
 msgid "unhandled tracepoint type %d"
 msgstr ""
 
-#: breakpoint.c:13016
+#: breakpoint.c:13093
 #, possible-c-format
 msgid "marker %s not found"
 msgstr ""
 
-#: breakpoint.c:13180
+#: breakpoint.c:13257
 msgid "Delete all breakpoints? "
 msgstr ""
 
-#: breakpoint.c:13296
+#: breakpoint.c:13373
 #, possible-c-format
 msgid "static tracepoint %d changed probed marker from %s to %s"
 msgstr ""
 
-#: breakpoint.c:13327
+#: breakpoint.c:13404
 #, possible-c-format
 msgid "marker for static tracepoint %d (%s) not found at previous line number"
 msgstr ""
 
-#: breakpoint.c:13457
+#: breakpoint.c:13534
 #, possible-c-format
 msgid "Could not reset ranged breakpoint %d: multiple locations found\n"
 msgstr ""
 
-#: breakpoint.c:13497
+#: breakpoint.c:13574
 #, possible-c-format
 msgid "failed to reevaluate condition for breakpoint %d: %s"
 msgstr ""
 
-#: breakpoint.c:13838
+#: breakpoint.c:13924
 #, possible-c-format
 msgid "Ignore count ignored for tracepoint %d."
 msgstr ""
 
-#: breakpoint.c:13847
+#: breakpoint.c:13933
 #, possible-c-format
 msgid "Will stop next time breakpoint %d is reached."
 msgstr ""
 
-#: breakpoint.c:13851
+#: breakpoint.c:13937
 #, possible-c-format
 msgid "Will ignore next crossing of breakpoint %d."
 msgstr ""
 
-#: breakpoint.c:13854
+#: breakpoint.c:13940
 #, possible-c-format
 msgid "Will ignore next %d crossings of breakpoint %d."
 msgstr ""
 
-#: breakpoint.c:13874
+#: breakpoint.c:13960
 msgid "a breakpoint number"
 msgstr ""
 
-#: breakpoint.c:13878
+#: breakpoint.c:13964
 #, possible-c-format
 msgid "bad breakpoint number: '%s'"
 msgstr ""
 
-#: breakpoint.c:13880
+#: breakpoint.c:13966
 msgid "Second argument (specified ignore-count) is missing."
 msgstr ""
 
-#: breakpoint.c:13899
+#: breakpoint.c:13985
 #, possible-c-format
 msgid "bad breakpoint number at or near '%d'"
 msgstr ""
 
-#: breakpoint.c:13918
+#: breakpoint.c:14004
 #, possible-c-format
 msgid "No breakpoint number %d.\n"
 msgstr ""
 
-#: breakpoint.c:13931
+#: breakpoint.c:14017
 msgid "one or more breakpoint numbers"
 msgstr ""
 
-#: breakpoint.c:13957
+#: breakpoint.c:14043
 #, possible-c-format
 msgid "Bad breakpoint number '%d'"
 msgstr ""
 
-#: breakpoint.c:13960 breakpoint.c:13967
+#: breakpoint.c:14046 breakpoint.c:14053
 #, possible-c-format
 msgid "Bad breakpoint location number '%d'"
 msgstr ""
 
-#: breakpoint.c:13994
+#: breakpoint.c:14080
 #, possible-c-format
 msgid "Negative breakpoint number '%.*s'"
 msgstr ""
 
-#: breakpoint.c:13995
+#: breakpoint.c:14081
 #, possible-c-format
 msgid "Negative breakpoint location number '%.*s'"
 msgstr ""
 
-#: breakpoint.c:13999
+#: breakpoint.c:14085
 #, possible-c-format
 msgid "Bad breakpoint number '%.*s'"
 msgstr ""
 
-#: breakpoint.c:14000
+#: breakpoint.c:14086
 #, possible-c-format
 msgid "Bad breakpoint location number '%.*s'"
 msgstr ""
 
-#: breakpoint.c:14026 breakpoint.c:14076
+#: breakpoint.c:14112 breakpoint.c:14162
 #, possible-c-format
 msgid "Bad breakpoint number at or near: '%s'"
 msgstr ""
 
-#: breakpoint.c:14027
+#: breakpoint.c:14113
 #, possible-c-format
 msgid "Bad breakpoint location number at or near: '%s'"
 msgstr ""
 
-#: breakpoint.c:14038
+#: breakpoint.c:14124
 #, possible-c-format
 msgid "Inverted breakpoint range at '%.*s'"
 msgstr ""
 
-#: breakpoint.c:14039
+#: breakpoint.c:14125
 #, possible-c-format
 msgid "Inverted breakpoint location range at '%.*s'"
 msgstr ""
 
-#: breakpoint.c:14264
+#: breakpoint.c:14350
 #, possible-c-format
 msgid "Cannot enable watchpoint %d: "
 msgstr ""
 
-#: breakpoint.c:14329
+#: breakpoint.c:14415
 msgid "hit count"
 msgstr ""
 
@@ -4172,72 +4243,68 @@ msgstr ""
 #. address.  Since there is no way to confirm that the address
 #. means the same thing as when the trace was started, warn the
 #. user.
-#: breakpoint.c:14610
+#: breakpoint.c:14686
 #, possible-c-format
 msgid "Uploaded tracepoint %d has no source location, using raw address"
 msgstr ""
 
-#: breakpoint.c:14619
+#: breakpoint.c:14695
 #, possible-c-format
 msgid "Uploaded tracepoint %d condition has no source form, ignoring it"
 msgstr ""
 
-#: breakpoint.c:14669
+#: breakpoint.c:14745
 #, possible-c-format
 msgid "Uploaded tracepoint %d actions have no source form, ignoring them"
 msgstr ""
 
-#: breakpoint.c:14743
+#: breakpoint.c:14819
 msgid "Delete all tracepoints? "
 msgstr ""
 
-#: breakpoint.c:14766
+#: breakpoint.c:14842
 #, possible-c-format
 msgid "Setting tracepoint %d's passcount to %d\n"
 msgstr ""
 
-#: breakpoint.c:14783
+#: breakpoint.c:14859
 msgid "passcount command requires an argument (count + optional TP num)"
 msgstr ""
 
-#: breakpoint.c:14879
+#: breakpoint.c:14955
 #, possible-c-format
 msgid "bad tracepoint number at or near '%s'\n"
 msgstr ""
 
-#: breakpoint.c:14882
+#: breakpoint.c:14958
 msgid "No previous tracepoint\n"
 msgstr ""
 
-#: breakpoint.c:14922
+#: breakpoint.c:14998
 msgid "Argument required (file name in which to save)"
 msgstr ""
 
-#: breakpoint.c:14948
+#: breakpoint.c:15024
 msgid "Nothing to save."
 msgstr ""
 
-#: breakpoint.c:14957
+#: breakpoint.c:15033
 #, possible-c-format
 msgid "Unable to open file '%s' for saving (%s)"
 msgstr ""
 
-#: breakpoint.c:15025
+#: breakpoint.c:15101
 #, possible-c-format
 msgid "Saved to file '%s'.\n"
 msgstr ""
 
-#: breakpoint.c:15144
-msgid "\"save\" must be followed by the name of a save subcommand.\n"
-msgstr ""
-
-#: breakpoint.c:15417
+#: breakpoint.c:15486
 msgid ""
 "Set ignore-count of breakpoint number N to COUNT.\n"
 "Usage is `ignore N COUNT'."
 msgstr ""
 
-#: breakpoint.c:15422
+#: breakpoint.c:15491
 msgid ""
 "Set commands to be executed when the given breakpoints are hit.\n"
 "Give a space-separated breakpoint list as argument after \"commands\".\n"
@@ -4250,14 +4317,14 @@ msgid ""
 "then no output is printed when it is hit, except what the commands print."
 msgstr ""
 
-#: breakpoint.c:15433
+#: breakpoint.c:15502
 msgid ""
 "Specify breakpoint number N to break only if COND is true.\n"
 "Usage is `condition N COND', where N is an integer and COND is an\n"
 "expression to be evaluated whenever breakpoint N is reached."
 msgstr ""
 
-#: breakpoint.c:15439
+#: breakpoint.c:15508
 msgid ""
 "Set a temporary breakpoint.\n"
 "Like \"break\" except the breakpoint is only temporary,\n"
@@ -4266,7 +4333,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: breakpoint.c:15448
+#: breakpoint.c:15517
 msgid ""
 "Set a hardware assisted breakpoint.\n"
 "Like \"break\" except the breakpoint requires hardware support,\n"
@@ -4274,7 +4341,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: breakpoint.c:15456
+#: breakpoint.c:15525
 msgid ""
 "Set a temporary hardware assisted breakpoint.\n"
 "Like \"hbreak\" except the breakpoint is only temporary,\n"
@@ -4282,7 +4349,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: breakpoint.c:15464
+#: breakpoint.c:15533
 msgid ""
 "Enable all or some breakpoints.\n"
 "Usage: enable [BREAKPOINTNUM]...\n"
@@ -4292,7 +4359,7 @@ msgid ""
 "With a subcommand you can enable temporarily."
 msgstr ""
 
-#: breakpoint.c:15475
+#: breakpoint.c:15544
 msgid ""
 "Enable all or some breakpoints.\n"
 "Usage: enable breakpoints [BREAKPOINTNUM]...\n"
@@ -4301,21 +4368,21 @@ msgid ""
 "May be abbreviated to simply \"enable\"."
 msgstr ""
 
-#: breakpoint.c:15483
+#: breakpoint.c:15552
 msgid ""
 "Enable some breakpoints for one hit.\n"
 "Usage: enable breakpoints once BREAKPOINTNUM...\n"
 "If a breakpoint is hit while enabled in this fashion, it becomes disabled."
 msgstr ""
 
-#: breakpoint.c:15489
+#: breakpoint.c:15558
 msgid ""
 "Enable some breakpoints and delete when hit.\n"
 "Usage: enable breakpoints delete BREAKPOINTNUM...\n"
 "If a breakpoint is hit while enabled in this fashion, it is deleted."
 msgstr ""
 
-#: breakpoint.c:15495
+#: breakpoint.c:15564
 msgid ""
 "Enable some breakpoints for COUNT hits.\n"
 "Usage: enable breakpoints count COUNT BREAKPOINTNUM...\n"
@@ -4323,21 +4390,21 @@ msgid ""
 "the count is decremented; when it reaches zero, the breakpoint is disabled."
 msgstr ""
 
-#: breakpoint.c:15502
+#: breakpoint.c:15571
 msgid ""
 "Enable some breakpoints and delete when hit.\n"
 "Usage: enable delete BREAKPOINTNUM...\n"
 "If a breakpoint is hit while enabled in this fashion, it is deleted."
 msgstr ""
 
-#: breakpoint.c:15508
+#: breakpoint.c:15577
 msgid ""
 "Enable some breakpoints for one hit.\n"
 "Usage: enable once BREAKPOINTNUM...\n"
 "If a breakpoint is hit while enabled in this fashion, it becomes disabled."
 msgstr ""
 
-#: breakpoint.c:15514
+#: breakpoint.c:15583
 msgid ""
 "Enable some breakpoints for COUNT hits.\n"
 "Usage: enable count COUNT BREAKPOINTNUM...\n"
@@ -4345,7 +4412,7 @@ msgid ""
 "the count is decremented; when it reaches zero, the breakpoint is disabled."
 msgstr ""
 
-#: breakpoint.c:15521
+#: breakpoint.c:15590
 msgid ""
 "Disable all or some breakpoints.\n"
 "Usage: disable [BREAKPOINTNUM]...\n"
@@ -4354,7 +4421,7 @@ msgid ""
 "A disabled breakpoint is not forgotten, but has no effect until re-enabled."
 msgstr ""
 
-#: breakpoint.c:15531
+#: breakpoint.c:15600
 msgid ""
 "Disable all or some breakpoints.\n"
 "Usage: disable breakpoints [BREAKPOINTNUM]...\n"
@@ -4364,7 +4431,7 @@ msgid ""
 "This command may be abbreviated \"disable\"."
 msgstr ""
 
-#: breakpoint.c:15540
+#: breakpoint.c:15609
 msgid ""
 "Delete all or some breakpoints.\n"
 "Usage: delete [BREAKPOINTNUM]...\n"
@@ -4374,7 +4441,7 @@ msgid ""
 "Also a prefix command for deletion of other GDB objects."
 msgstr ""
 
-#: breakpoint.c:15551
+#: breakpoint.c:15620
 msgid ""
 "Delete all or some breakpoints or auto-display expressions.\n"
 "Usage: delete breakpoints [BREAKPOINTNUM]...\n"
@@ -4383,7 +4450,7 @@ msgid ""
 "This command may be abbreviated \"delete\"."
 msgstr ""
 
-#: breakpoint.c:15559
+#: breakpoint.c:15628
 msgid ""
 "Clear breakpoint at specified location.\n"
 "Argument may be a linespec, explicit, or address location as described "
@@ -4395,23 +4462,23 @@ msgid ""
 "\n"
 msgstr ""
 
-#: breakpoint.c:15569
+#: breakpoint.c:15638
 msgid "Set breakpoint at specified location.\n"
 msgstr ""
 
-#: breakpoint.c:15581
+#: breakpoint.c:15650
 msgid "Break in function/address or break at a line in the current file."
 msgstr ""
 
-#: breakpoint.c:15585
+#: breakpoint.c:15654
 msgid "Break in function or address."
 msgstr ""
 
-#: breakpoint.c:15587
+#: breakpoint.c:15656
 msgid "Break at a line in the current file."
 msgstr ""
 
-#: breakpoint.c:15588
+#: breakpoint.c:15657
 msgid ""
 "Status of user-settable breakpoints, or breakpoint number NUMBER.\n"
 "The \"Type\" column indicates one of:\n"
@@ -4433,7 +4500,7 @@ msgid ""
 "breakpoint set."
 msgstr ""
 
-#: breakpoint.c:15605
+#: breakpoint.c:15674
 msgid ""
 "Status of specified breakpoints (all user-settable breakpoints if no "
 "argument).\n"
@@ -4456,7 +4523,7 @@ msgid ""
 "breakpoint set."
 msgstr ""
 
-#: breakpoint.c:15623
+#: breakpoint.c:15692
 msgid ""
 "Status of all breakpoints, or breakpoint number NUMBER.\n"
 "The \"Type\" column indicates one of:\n"
@@ -4482,43 +4549,43 @@ msgid ""
 "breakpoint set."
 msgstr ""
 
-#: breakpoint.c:15644
+#: breakpoint.c:15713
 msgid "Set catchpoints to catch events."
 msgstr ""
 
 #. allow-unknown
-#: breakpoint.c:15649
+#: breakpoint.c:15718
 msgid "Set temporary catchpoints to catch events."
 msgstr ""
 
 #. allow-unknown
-#: breakpoint.c:15654
+#: breakpoint.c:15723
 msgid "Catch calls to fork."
 msgstr ""
 
-#: breakpoint.c:15659
+#: breakpoint.c:15728
 msgid "Catch calls to vfork."
 msgstr ""
 
-#: breakpoint.c:15664
+#: breakpoint.c:15733
 msgid "Catch calls to exec."
 msgstr ""
 
-#: breakpoint.c:15669
+#: breakpoint.c:15738
 msgid ""
 "Catch loads of shared libraries.\n"
 "Usage: catch load [REGEX]\n"
 "If REGEX is given, only stop for libraries matching the regular expression."
 msgstr ""
 
-#: breakpoint.c:15676
+#: breakpoint.c:15745
 msgid ""
 "Catch unloads of shared libraries.\n"
 "Usage: catch unload [REGEX]\n"
 "If REGEX is given, only stop for libraries matching the regular expression."
 msgstr ""
 
-#: breakpoint.c:15684
+#: breakpoint.c:15753
 msgid ""
 "Set a watchpoint for an expression.\n"
 "Usage: watch [-l|-location] EXPRESSION\n"
@@ -4528,7 +4595,7 @@ msgid ""
 "the memory to which it refers."
 msgstr ""
 
-#: breakpoint.c:15693
+#: breakpoint.c:15762
 msgid ""
 "Set a read watchpoint for an expression.\n"
 "Usage: rwatch [-l|-location] EXPRESSION\n"
@@ -4538,7 +4605,7 @@ msgid ""
 "the memory to which it refers."
 msgstr ""
 
-#: breakpoint.c:15702
+#: breakpoint.c:15771
 msgid ""
 "Set a watchpoint for an expression.\n"
 "Usage: awatch [-l|-location] EXPRESSION\n"
@@ -4548,19 +4615,19 @@ msgid ""
 "the memory to which it refers."
 msgstr ""
 
-#: breakpoint.c:15711
+#: breakpoint.c:15780
 msgid "Status of specified watchpoints (all watchpoints if no argument)."
 msgstr ""
 
-#: breakpoint.c:15717
+#: breakpoint.c:15786
 msgid "Set debugger's willingness to use watchpoint hardware."
 msgstr ""
 
-#: breakpoint.c:15718
+#: breakpoint.c:15787
 msgid "Show debugger's willingness to use watchpoint hardware."
 msgstr ""
 
-#: breakpoint.c:15719
+#: breakpoint.c:15788
 msgid ""
 "If zero, gdb will not use hardware for new watchpoints, even if\n"
 "such is available.  (However, any hardware watchpoints that were\n"
@@ -4569,19 +4636,19 @@ msgid ""
 msgstr ""
 
 #. Tracepoint manipulation commands.
-#: breakpoint.c:15732
+#: breakpoint.c:15801
 msgid ""
 "Set a tracepoint at specified location.\n"
 "\n"
 msgstr ""
 
-#: breakpoint.c:15744
+#: breakpoint.c:15813
 msgid ""
 "Set a fast tracepoint at specified location.\n"
 "\n"
 msgstr ""
 
-#: breakpoint.c:15751
+#: breakpoint.c:15820
 msgid ""
 "Set a static tracepoint at location or marker.\n"
 "\n"
@@ -4601,35 +4668,35 @@ msgid ""
 "\n"
 msgstr ""
 
-#: breakpoint.c:15773
+#: breakpoint.c:15842
 msgid ""
 "Status of specified tracepoints (all tracepoints if no argument).\n"
 "Convenience variable \"$tpnum\" contains the number of the\n"
 "last tracepoint set."
 msgstr ""
 
-#: breakpoint.c:15780
+#: breakpoint.c:15849
 msgid ""
 "Delete specified tracepoints.\n"
 "Arguments are tracepoint numbers, separated by spaces.\n"
 "No argument means delete all tracepoints."
 msgstr ""
 
-#: breakpoint.c:15787
+#: breakpoint.c:15856
 msgid ""
 "Disable specified tracepoints.\n"
 "Arguments are tracepoint numbers, separated by spaces.\n"
 "No argument means disable all tracepoints."
 msgstr ""
 
-#: breakpoint.c:15794
+#: breakpoint.c:15863
 msgid ""
 "Enable specified tracepoints.\n"
 "Arguments are tracepoint numbers, separated by spaces.\n"
 "No argument means enable all tracepoints."
 msgstr ""
 
-#: breakpoint.c:15801
+#: breakpoint.c:15870
 msgid ""
 "Set the passcount for a tracepoint.\n"
 "The trace will end when the tracepoint has been passed 'count' times.\n"
@@ -4637,12 +4704,12 @@ msgid ""
 "if TPNUM is omitted, passcount refers to the last tracepoint defined."
 msgstr ""
 
-#: breakpoint.c:15808
+#: breakpoint.c:15877
 msgid "Save breakpoint definitions as a script."
 msgstr ""
 
 #. allow-unknown
-#: breakpoint.c:15812
+#: breakpoint.c:15881
 msgid ""
 "Save current breakpoint definitions as a script.\n"
 "This includes all types of breakpoints (breakpoints, watchpoints,\n"
@@ -4650,29 +4717,29 @@ msgid ""
 "session to restore them."
 msgstr ""
 
-#: breakpoint.c:15820
+#: breakpoint.c:15889
 msgid ""
 "Save current tracepoint definitions as a script.\n"
 "Use the 'source' command in another debug session to restore them."
 msgstr ""
 
 #. allow-unknown
-#: breakpoint.c:15829 breakpoint.c:15835
+#: breakpoint.c:15898 breakpoint.c:15904
 msgid ""
 "Breakpoint specific settings.\n"
 "Configure various breakpoint-specific variables such as\n"
 "pending breakpoint behavior."
 msgstr ""
 
-#: breakpoint.c:15843
+#: breakpoint.c:15912
 msgid "Set debugger's behavior regarding pending breakpoints."
 msgstr ""
 
-#: breakpoint.c:15844
+#: breakpoint.c:15913
 msgid "Show debugger's behavior regarding pending breakpoints."
 msgstr ""
 
-#: breakpoint.c:15845
+#: breakpoint.c:15914
 msgid ""
 "If on, an unrecognized breakpoint location will cause gdb to create a\n"
 "pending breakpoint.  If off, an unrecognized breakpoint location results in\n"
@@ -4680,15 +4747,15 @@ msgid ""
 "user-query to see if a pending breakpoint should be created."
 msgstr ""
 
-#: breakpoint.c:15858
+#: breakpoint.c:15927
 msgid "Set automatic usage of hardware breakpoints."
 msgstr ""
 
-#: breakpoint.c:15859
+#: breakpoint.c:15928
 msgid "Show automatic usage of hardware breakpoints."
 msgstr ""
 
-#: breakpoint.c:15860
+#: breakpoint.c:15929
 msgid ""
 "If set, the debugger will automatically use hardware breakpoints for\n"
 "breakpoints set with \"break\" but falling in read-only memory.  If not "
@@ -4696,15 +4763,15 @@ msgid ""
 "a warning will be emitted for such breakpoints."
 msgstr ""
 
-#: breakpoint.c:15870
+#: breakpoint.c:15939
 msgid "Set mode for inserting breakpoints."
 msgstr ""
 
-#: breakpoint.c:15871
+#: breakpoint.c:15940
 msgid "Show mode for inserting breakpoints."
 msgstr ""
 
-#: breakpoint.c:15872
+#: breakpoint.c:15941
 msgid ""
 "When this mode is on, breakpoints are inserted immediately as soon as\n"
 "they're created, kept inserted even when execution stops, and removed\n"
@@ -4713,15 +4780,15 @@ msgid ""
 "when execution stops."
 msgstr ""
 
-#: breakpoint.c:15885
+#: breakpoint.c:15954
 msgid "Set mode of breakpoint condition evaluation."
 msgstr ""
 
-#: breakpoint.c:15886
+#: breakpoint.c:15955
 msgid "Show mode of breakpoint condition evaluation."
 msgstr ""
 
-#: breakpoint.c:15887
+#: breakpoint.c:15956
 msgid ""
 "When this is set to \"host\", breakpoint conditions will be\n"
 "evaluated on the host's side by GDB.  When it is set to \"target\",\n"
@@ -4730,10 +4797,10 @@ msgid ""
 "side.\n"
 "If this is set to \"auto\" (default), this will be automatically set to\n"
 "\"target\" if it supports condition evaluation, otherwise it will\n"
-"be set to \"gdb\""
+"be set to \"host\"."
 msgstr ""
 
-#: breakpoint.c:15900
+#: breakpoint.c:15969
 msgid ""
 "Set a breakpoint for an address range.\n"
 "break-range START-LOCATION, END-LOCATION\n"
@@ -4751,7 +4818,7 @@ msgid ""
 "range (including START-LOCATION and END-LOCATION)."
 msgstr ""
 
-#: breakpoint.c:15916
+#: breakpoint.c:15985
 msgid ""
 "Set a dynamic printf at specified location.\n"
 "dprintf location,format string,arg1,arg2,...\n"
@@ -4759,15 +4826,15 @@ msgid ""
 "\n"
 msgstr ""
 
-#: breakpoint.c:15924
+#: breakpoint.c:15993
 msgid "Set the style of usage for dynamic printf."
 msgstr ""
 
-#: breakpoint.c:15925
+#: breakpoint.c:15994
 msgid "Show the style of usage for dynamic printf."
 msgstr ""
 
-#: breakpoint.c:15926
+#: breakpoint.c:15995
 msgid ""
 "This setting chooses how GDB will do a dynamic printf.\n"
 "If the value is \"gdb\", then the printing is done by GDB to its own\n"
@@ -4777,37 +4844,37 @@ msgid ""
 "output stream by setting dprintf-function and dprintf-channel."
 msgstr ""
 
-#: breakpoint.c:15938
+#: breakpoint.c:16007
 msgid "Set the function to use for dynamic printf."
 msgstr ""
 
-#: breakpoint.c:15939
+#: breakpoint.c:16008
 msgid "Show the function to use for dynamic printf."
 msgstr ""
 
-#: breakpoint.c:15946
+#: breakpoint.c:16015
 msgid "Set the channel to use for dynamic printf."
 msgstr ""
 
-#: breakpoint.c:15947
+#: breakpoint.c:16016
 msgid "Show the channel to use for dynamic printf."
 msgstr ""
 
-#: breakpoint.c:15953
+#: breakpoint.c:16022
 msgid "Set whether dprintf continues after GDB disconnects."
 msgstr ""
 
-#: breakpoint.c:15954
+#: breakpoint.c:16023
 msgid "Show whether dprintf continues after GDB disconnects."
 msgstr ""
 
-#: breakpoint.c:15955
+#: breakpoint.c:16024
 msgid ""
 "Use this to let dprintf commands continue to hit and produce output\n"
 "even if GDB disconnects or detaches from the target."
 msgstr ""
 
-#: breakpoint.c:15962
+#: breakpoint.c:16031
 #, possible-c-format
 msgid ""
 "Target agent only formatted printing, like the C \"printf\" function.\n"
@@ -4816,11 +4883,11 @@ msgid ""
 "This is useful for formatted output in user-defined commands."
 msgstr ""
 
-#: bsd-kvm.c:70
+#: bsd-kvm.c:71
 msgid "Kernel memory interface"
 msgstr ""
 
-#: bsd-kvm.c:71
+#: bsd-kvm.c:72
 msgid ""
 "Use a kernel virtual memory image as a target.\n"
 "Optionally specify the filename of a core dump."
@@ -4897,8 +4964,8 @@ msgstr ""
 #: btrace.c:1276
 #, possible-c-format
 msgid ""
-"Non-contiguous trace at instruction %u (offset = 0x%<PRIx64>, pc = 0x%"
-"<PRIx64>)."
+"Non-contiguous trace at instruction %u (offset = 0x%<PRIx64>, pc = 0x"
+"%<PRIx64>)."
 msgstr ""
 
 #: btrace.c:1293
@@ -4906,7 +4973,7 @@ msgstr ""
 msgid "Overflow at instruction %u (offset = 0x%<PRIx64>, pc = 0x%<PRIx64>)."
 msgstr ""
 
-#: btrace.c:1319 btrace.c:3003
+#: btrace.c:1319 btrace.c:3006
 #, possible-c-format
 msgid "Failed to synchronize onto the Intel Processor Trace stream: %s."
 msgstr ""
@@ -4914,16 +4981,16 @@ msgstr ""
 #: btrace.c:1354
 #, possible-c-format
 msgid ""
-"Decode error (%d) at instruction %u (offset = 0x%<PRIx64>, pc = 0x%"
-"<PRIx64>): %s."
+"Decode error (%d) at instruction %u (offset = 0x%<PRIx64>, pc = 0x"
+"%<PRIx64>): %s."
 msgstr ""
 
-#: btrace.c:1456 btrace.c:1474 btrace.c:3044
+#: btrace.c:1456 btrace.c:1474 btrace.c:3047
 #, possible-c-format
 msgid "Failed to configure the Intel Processor Trace decoder: %s."
 msgstr ""
 
-#: btrace.c:1462 btrace.c:3050
+#: btrace.c:1462 btrace.c:3053
 msgid "Failed to allocate the Intel Processor Trace decoder."
 msgstr ""
 
@@ -4935,192 +5002,205 @@ msgstr ""
 msgid "Unexpected branch trace format."
 msgstr ""
 
-#: btrace.c:1536 btrace.c:1794 gdbsupport/btrace-common.c:85
-#: gdbsupport/btrace-common.c:105 gdbsupport/btrace-common.c:189
-#: nat/linux-btrace.c:923 record-btrace.c:544
-msgid "Unkown branch trace format."
+#: btrace.c:1536 btrace.c:1796 nat/linux-btrace.c:703 record-btrace.c:551
+msgid "Unknown branch trace format."
+msgstr ""
+
+#: btrace.c:1595
+#, possible-c-format
+msgid "Recording already enabled on thread %s (%s)."
 msgstr ""
 
-#: btrace.c:1599 nat/linux-btrace.c:681
+#: btrace.c:1600 nat/linux-btrace.c:687
 msgid "Intel Processor Trace support was disabled at compile time."
 msgstr ""
 
-#: btrace.c:1735
+#: btrace.c:1609
+#, possible-c-format
+msgid "Failed to enable recording on thread %s (%s)."
+msgstr ""
+
+#: btrace.c:1655
+#, possible-c-format
+msgid "Recording not enabled on thread %s (%s)."
+msgstr ""
+
+#: btrace.c:1737
 msgid "Error while trying to read delta trace.  Falling back to a full read."
 msgstr ""
 
-#: btrace.c:1849
+#: btrace.c:1851
 msgid "instruction overflow"
 msgstr ""
 
-#: btrace.c:1852
+#: btrace.c:1854
 msgid "unknown instruction"
 msgstr ""
 
-#: btrace.c:1864
+#: btrace.c:1866
 msgid "trace decode cancelled"
 msgstr ""
 
-#: btrace.c:1867 dwarf-index-cache.c:275
+#: btrace.c:1869 dwarf2/index-cache.c:267
 msgid "disabled"
 msgstr ""
 
-#: btrace.c:1870
+#: btrace.c:1872
 msgid "overflow"
 msgstr ""
 
-#: btrace.c:1951
+#: btrace.c:1954
 msgid "Failed to read branch trace."
 msgstr ""
 
-#: btrace.c:2016
+#: btrace.c:2019
 #, possible-c-format
 msgid "Unsupported btrace version: \"%s\""
 msgstr ""
 
-#: btrace.c:2043
+#: btrace.c:2046
 msgid "Btrace format error."
 msgstr ""
 
-#: btrace.c:2062
+#: btrace.c:2065
 msgid "Bad raw data size."
 msgstr ""
 
-#: btrace.c:2078
+#: btrace.c:2081
 msgid "Bad hex encoding."
 msgstr ""
 
-#: btrace.c:2209
+#: btrace.c:2212
 msgid "btrace"
 msgstr ""
 
-#: btrace.c:2212
+#: btrace.c:2215
 msgid "Error parsing branch trace."
 msgstr ""
 
-#: btrace.c:2219
+#: btrace.c:2222
 msgid "Cannot process branch trace.  XML support was disabled at compile time."
 msgstr ""
 
-#: btrace.c:2306
+#: btrace.c:2309
 msgid "btrace-conf"
 msgstr ""
 
-#: btrace.c:2309
+#: btrace.c:2312
 msgid "Error parsing branch trace configuration."
 msgstr ""
 
-#: btrace.c:2313
+#: btrace.c:2316
 msgid ""
 "Cannot process the branch trace configuration.  XML support was disabled at "
 "compile time."
 msgstr ""
 
-#: btrace.c:2365 btrace.c:2382 btrace.c:2654 btrace.c:2667 record-btrace.c:260
-#: record-btrace.c:2044 record-btrace.c:2796
+#: btrace.c:2368 btrace.c:2385 btrace.c:2657 btrace.c:2670 record-btrace.c:262
+#: record-btrace.c:2067 record-btrace.c:2826
 msgid "No trace."
 msgstr ""
 
-#: btrace.c:2998
+#: btrace.c:3001
 #, possible-c-format
 msgid "Error at trace offset 0x%<PRIx64>: %s."
 msgstr ""
 
-#: btrace.c:3187 btrace.c:3206 record.c:439 record.c:459
+#: btrace.c:3190 btrace.c:3209 record.c:422 record.c:442
 #, possible-c-format
 msgid "Expected positive number, got: %s."
 msgstr ""
 
-#: btrace.c:3191
+#: btrace.c:3194
 msgid "Number too big."
 msgstr ""
 
-#: btrace.c:3220 record.c:409 record.c:421 record.c:472
+#: btrace.c:3223 record.c:392 record.c:404 record.c:455
 #, possible-c-format
 msgid "Junk after argument: %s."
 msgstr ""
 
-#: btrace.c:3233 btrace.c:3336 btrace.c:3355 btrace.c:3418 record-btrace.c:251
-#: record-btrace.c:561 record-btrace.c:1379
+#: btrace.c:3236 btrace.c:3339 btrace.c:3358 btrace.c:3376 record-btrace.c:253
+#: record-btrace.c:567 record-btrace.c:1397
 msgid "No thread."
 msgstr ""
 
-#: btrace.c:3241
+#: btrace.c:3244
 msgid "No trace.\n"
 msgstr ""
 
-#: btrace.c:3265
+#: btrace.c:3268
 #, possible-c-format
 msgid "'%u' is out of range."
 msgstr ""
 
-#: btrace.c:3333 btrace.c:3352 btrace.c:3415 record-btrace.c:2880
-#: record-btrace.c:2901 record-btrace.c:2922
+#: btrace.c:3336 btrace.c:3355 btrace.c:3373 record-btrace.c:2910
+#: record-btrace.c:2931 record-btrace.c:2952
 msgid "Invalid argument."
 msgstr ""
 
-#: btrace.c:3426
+#: btrace.c:3384
 msgid "No btrace configuration."
 msgstr ""
 
-#: btrace.c:3428
+#: btrace.c:3386
 #, possible-c-format
 msgid "Format: %s.\n"
 msgstr ""
 
-#: btrace.c:3437 btrace.c:3452
+#: btrace.c:3395 btrace.c:3410
 #, possible-c-format
 msgid "Number of packets: %zu.\n"
 msgstr ""
 
-#: btrace.c:3447
+#: btrace.c:3405
 #, possible-c-format
 msgid "Version: %u.%u.%u%s.\n"
 msgstr ""
 
-#: btrace.c:3468
+#: btrace.c:3426
 #, possible-c-format
 msgid "Skip PAD packets is %s.\n"
 msgstr ""
 
-#: btrace.c:3478
+#: btrace.c:3437
 msgid "Info about branch tracing data."
 msgstr ""
 
-#: btrace.c:3481
+#: btrace.c:3440
 msgid "Branch tracing maintenance commands."
 msgstr ""
 
-#: btrace.c:3485
+#: btrace.c:3444
 msgid "Set branch tracing specific variables."
 msgstr ""
 
-#: btrace.c:3490
+#: btrace.c:3449
 msgid "Set Intel Processor Trace specific variables."
 msgstr ""
 
-#: btrace.c:3495
+#: btrace.c:3455
 msgid "Show branch tracing specific variables."
 msgstr ""
 
-#: btrace.c:3500
+#: btrace.c:3460
 msgid "Show Intel Processor Trace specific variables."
 msgstr ""
 
-#: btrace.c:3506
+#: btrace.c:3467
 msgid "Set whether PAD packets should be skipped in the btrace packet history."
 msgstr ""
 
-#: btrace.c:3507
+#: btrace.c:3468
 msgid ""
 "Show whether PAD packets should be skipped in the btrace packet history."
 msgstr ""
 
-#: btrace.c:3508
+#: btrace.c:3469
 msgid "When enabled, PAD packets are ignored in the btrace packet history."
 msgstr ""
 
-#: btrace.c:3515
+#: btrace.c:3476
 msgid ""
 "Print the raw branch tracing data.\n"
 "With no argument, print ten more packets after the previous ten-line print.\n"
@@ -5132,13 +5212,13 @@ msgid ""
 "first."
 msgstr ""
 
-#: btrace.c:3527
+#: btrace.c:3488
 msgid ""
 "Clears the branch tracing packet history.\n"
 "Discards the raw branch tracing data but not the execution history data."
 msgstr ""
 
-#: btrace.c:3532
+#: btrace.c:3493
 msgid ""
 "Clears the branch tracing data.\n"
 "Discards the raw branch tracing data and the execution history data.\n"
@@ -5155,7 +5235,7 @@ msgstr ""
 msgid "File \"%s\" has a different build-id, file skipped"
 msgstr ""
 
-#: build-id.c:79 symfile.c:1288
+#: build-id.c:79 symfile.c:1276
 #, possible-c-format
 msgid "  Trying %s..."
 msgstr ""
@@ -5164,7 +5244,7 @@ msgstr ""
 msgid " no, unable to compute real path\n"
 msgstr ""
 
-#: build-id.c:102 symfile.c:1297
+#: build-id.c:102 symfile.c:1285
 msgid " no, unable to open.\n"
 msgstr ""
 
@@ -5172,7 +5252,7 @@ msgstr ""
 msgid " no, build-id does not match.\n"
 msgstr ""
 
-#: build-id.c:116 symfile.c:1371
+#: build-id.c:116 symfile.c:1359
 msgid " yes!\n"
 msgstr ""
 
@@ -5188,27 +5268,27 @@ msgstr ""
 msgid "\"%s\": separate debug info file has no debug info"
 msgstr ""
 
-#: buildsym.c:320
+#: buildsym.c:321
 #, possible-c-format
 msgid "block end address less than block start address in %s (patched it)"
 msgstr ""
 
-#: buildsym.c:326
+#: buildsym.c:327
 #, possible-c-format
 msgid "block end address %s less than block start address %s (patched it)"
 msgstr ""
 
-#: buildsym.c:358
+#: buildsym.c:359
 #, possible-c-format
 msgid "inner block not inside outer block in %s"
 msgstr ""
 
-#: buildsym.c:363
+#: buildsym.c:364
 #, possible-c-format
 msgid "inner block (%s-%s) not inside outer block (%s-%s)"
 msgstr ""
 
-#: buildsym.c:489
+#: buildsym.c:490
 #, possible-c-format
 msgid "block at %s out of order"
 msgstr ""
@@ -5218,116 +5298,116 @@ msgstr ""
 #. same.  FIXME: Find out why it is happening.  This is not
 #. believed to happen in most cases (even for coffread.c);
 #. it used to be an abort().
-#: buildsym.c:850
+#: buildsym.c:830
 msgid "Context stack not empty in end_symtab"
 msgstr ""
 
-#: buildsym.c:1191
+#: buildsym.c:1184
 msgid "Context stack not empty in augment_type_symtab"
 msgstr ""
 
-#: buildsym.c:1193
+#: buildsym.c:1186
 msgid "Blocks in a type symtab"
 msgstr ""
 
-#: buildsym.c:1195
+#: buildsym.c:1188
 msgid "Macro in a type symtab"
 msgstr ""
 
-#: buildsym.c:1197
+#: buildsym.c:1190
 msgid "Line numbers recorded in a type symtab"
 msgstr ""
 
-#: c-exp.y:481
+#: c-exp.y:484
 #, possible-c-format
 msgid "%s is not an ObjC Class"
 msgstr ""
 
-#: c-exp.y:912
+#: c-exp.y:952
 msgid "Undefined string concatenation."
 msgstr ""
 
-#: c-exp.y:988 go-exp.y:539
+#: c-exp.y:1028 go-exp.y:539
 #, possible-c-format
 msgid "@entry can be used only for function parameters, not for \"%s\""
 msgstr ""
 
-#: c-exp.y:1006 eval.c:1367 m2-exp.y:548 p-exp.y:656
+#: c-exp.y:1046 eval.c:1379 m2-exp.y:547 p-exp.y:657
 #, possible-c-format
 msgid "No symbol \"%s\" in specified context."
 msgstr ""
 
-#: c-exp.y:1022 c-exp.y:1038 d-exp.y:502 p-exp.y:671
+#: c-exp.y:1062 c-exp.y:1078 d-exp.y:502 p-exp.y:672
 #, possible-c-format
 msgid "`%s' is not defined as an aggregate type."
 msgstr ""
 
-#: c-exp.y:1057
+#: c-exp.y:1097
 #, possible-c-format
 msgid "No type \"%s\" within class or namespace \"%s\"."
 msgstr ""
 
-#: c-exp.y:1089 c-exp.y:1142 d-exp.y:455 d-exp.y:495 f-exp.y:508 go-exp.y:582
-#: m2-exp.y:592 p-exp.y:710 p-exp.y:769 printcmd.c:1472 valops.c:2700
+#: c-exp.y:1129 c-exp.y:1182 d-exp.y:455 d-exp.y:495 f-exp.y:508 go-exp.y:582
+#: m2-exp.y:591 p-exp.y:711 p-exp.y:770 printcmd.c:1468 valops.c:2660
 #, possible-c-format
 msgid "No symbol \"%s\" in current context."
 msgstr ""
 
-#: c-exp.y:1818
+#: c-exp.y:1882
 msgid "parameter types following 'void'"
 msgstr ""
 
-#: c-exp.y:1821
+#: c-exp.y:1885
 msgid "'void' invalid as parameter type"
 msgstr ""
 
-#: c-exp.y:1997 d-exp.y:819 go-exp.y:787 p-exp.y:970
+#: c-exp.y:2080 d-exp.y:819 go-exp.y:787 p-exp.y:971
 msgid "Numeric constant too large."
 msgstr ""
 
-#: c-exp.y:2099
+#: c-exp.y:2186
 msgid "\\x escape without a following hex digit"
 msgstr ""
 
-#: c-exp.y:2149
+#: c-exp.y:2236
 #, possible-c-format
 msgid "\\%c escape without a following hex digit"
 msgstr ""
 
-#: c-exp.y:2325 d-exp.y:930 go-exp.y:921 macroexp.c:410 p-exp.y:1373
+#: c-exp.y:2412 d-exp.y:930 go-exp.y:921 macroexp.c:410 p-exp.y:1374
 msgid "Unterminated string in expression."
 msgstr ""
 
-#: c-exp.y:2327 d-exp.y:932 go-exp.y:923 macroexp.c:353 p-exp.y:1204
+#: c-exp.y:2414 d-exp.y:932 go-exp.y:923 macroexp.c:353 p-exp.y:1205
 msgid "Unmatched single quote."
 msgstr ""
 
-#: c-exp.y:2696 d-exp.y:1176 f-exp.y:1215 go-exp.y:1148 m2-exp.y:918
-#: p-exp.y:1300
+#: c-exp.y:2795 d-exp.y:1176 f-exp.y:1215 go-exp.y:1148 m2-exp.y:917
+#: p-exp.y:1301
 #, possible-c-format
 msgid "Invalid number \"%s\"."
 msgstr ""
 
-#: c-exp.y:2769 d-exp.y:1228 go-exp.y:1200 p-exp.y:1191
+#: c-exp.y:2868 d-exp.y:1228 go-exp.y:1200 p-exp.y:1192
 msgid "Empty character constant."
 msgstr ""
 
-#: c-exp.y:2779 d-exp.y:1236 go-exp.y:1208 p-exp.y:1210
+#: c-exp.y:2878 d-exp.y:1236 go-exp.y:1208 p-exp.y:1211
 msgid "Invalid character constant."
 msgstr ""
 
 #. We must have come across a bad character (e.g. ';').
-#: c-exp.y:2787 f-exp.y:1249 go-exp.y:1217 m2-exp.y:927 p-exp.y:1385
+#: c-exp.y:2886 f-exp.y:1249 go-exp.y:1217 m2-exp.y:926 p-exp.y:1386
 #, possible-c-format
 msgid "Invalid character '%c' in expression."
 msgstr ""
 
-#: c-exp.y:3109
+#: c-exp.y:3212
 msgid "not reached"
 msgstr ""
 
-#: c-exp.y:3378 d-exp.y:1647 f-exp.y:1369 go-exp.y:1582 m2-exp.y:1052
-#: p-exp.y:1749
+#: c-exp.y:3481 d-exp.y:1647 f-exp.y:1369 go-exp.y:1582 m2-exp.y:1051
+#: p-exp.y:1750
 #, possible-c-format
 msgid "A %s in expression, near `%s'."
 msgstr ""
@@ -5381,19 +5461,19 @@ msgid "Internal error while converting c
 msgstr ""
 
 #. No valid charset found, generate error here.
-#: charset.c:992
-msgid "Unable to find a vaild charset for string conversions"
+#: charset.c:993
+msgid "Unable to find a valid charset for string conversions"
 msgstr ""
 
-#: charset.c:1035
+#: charset.c:1037
 msgid "Set the host and target character sets."
 msgstr ""
 
-#: charset.c:1036
+#: charset.c:1038
 msgid "Show the host and target character sets."
 msgstr ""
 
-#: charset.c:1037
+#: charset.c:1039
 msgid ""
 "The `host character set' is the one used by the system GDB is running on.\n"
 "The `target character set' is the one used by the program being debugged.\n"
@@ -5402,15 +5482,15 @@ msgid ""
 "To see a list of the character sets GDB supports, type `set charset <TAB>'."
 msgstr ""
 
-#: charset.c:1051
+#: charset.c:1053
 msgid "Set the host character set."
 msgstr ""
 
-#: charset.c:1052
+#: charset.c:1054
 msgid "Show the host character set."
 msgstr ""
 
-#: charset.c:1053
+#: charset.c:1055
 msgid ""
 "The `host character set' is the one used by the system GDB is running on.\n"
 "You may only use supersets of ASCII for your host character set; GDB does\n"
@@ -5419,15 +5499,15 @@ msgid ""
 "<TAB>'."
 msgstr ""
 
-#: charset.c:1063
+#: charset.c:1065
 msgid "Set the target character set."
 msgstr ""
 
-#: charset.c:1064
+#: charset.c:1066
 msgid "Show the target character set."
 msgstr ""
 
-#: charset.c:1065
+#: charset.c:1067
 msgid ""
 "The `target character set' is the one used by the program being debugged.\n"
 "GDB translates characters and strings between the host and target\n"
@@ -5436,15 +5516,15 @@ msgid ""
 "charset'<TAB>"
 msgstr ""
 
-#: charset.c:1076
+#: charset.c:1078
 msgid "Set the target wide character set."
 msgstr ""
 
-#: charset.c:1077
+#: charset.c:1079
 msgid "Show the target wide character set."
 msgstr ""
 
-#: charset.c:1078
+#: charset.c:1080
 msgid ""
 "The `target wide character set' is the one used by the program being "
 "debugged.\n"
@@ -5455,705 +5535,353 @@ msgid ""
 "`set target-wide-charset'<TAB>"
 msgstr ""
 
-#: c-lang.c:65 c-lang.c:623
+#: c-lang.c:67 c-lang.c:625
 msgid "unhandled c_string_type"
 msgstr ""
 
-#: c-lang.c:328 eval.c:3093 valops.c:1425 valops.c:1440 valops.c:1489
+#: c-lang.c:330 eval.c:3103 valops.c:1425 valops.c:1440 valops.c:1489
 msgid "Attempt to take address of value not located in memory."
 msgstr ""
 
-#: c-lang.c:382
+#: c-lang.c:384
 #, possible-c-format
 msgid "Trying to read string with inappropriate type `%s'."
 msgstr ""
 
-#: c-lang.c:386
+#: c-lang.c:388
 msgid "Trying to read string with inappropriate type."
 msgstr ""
 
-#: c-lang.c:487
+#: c-lang.c:489
 msgid "Malformed escape sequence"
 msgstr ""
 
-#: c-lang.c:514
+#: c-lang.c:516
 msgid "\\x used with no following hex digits."
 msgstr ""
 
-#: c-lang.c:536
+#: c-lang.c:538
 msgid "\\u used with no following hex digits"
 msgstr ""
 
-#: c-lang.c:681
+#: c-lang.c:683
 msgid "Could not convert character constant to target character set"
 msgstr ""
 
 #. To avoid memory corruption.
-#: c-lang.c:707 eval.c:1483
+#: c-lang.c:709 eval.c:1495
 msgid "Too many array elements"
 msgstr ""
 
-#: cli/cli-option.c:192 cli/cli-option.c:238
-#, possible-c-format
-msgid "Unrecognized option at: %s"
-msgstr ""
-
-#: cli/cli-option.c:222
-#, possible-c-format
-msgid "Ambiguous option at: -%s"
-msgstr ""
-
-#: cli/cli-option.c:316
-#, possible-c-format
-msgid "Value given for `-%s' is not a boolean: %.*s"
-msgstr ""
-
-#. Treat e.g., "maint test-options -string --" as if there
-#. was no argument after "-string".
-#: cli/cli-option.c:433 cli/cli-option.c:439
-#, possible-c-format
-msgid "-%s requires an argument"
-msgstr ""
-
-#. Not yet.
-#: cli/cli-option.c:448
-msgid "option type not supported"
-msgstr ""
-
-#: cli/cli-option.c:828
-msgid "option type not handled"
-msgstr ""
-
-#: cli/cli-dump.c:66
-msgid "Missing filename."
-msgstr ""
-
-#: cli/cli-dump.c:89 cli/cli-dump.c:107 nat/linux-btrace.c:568
-#, possible-c-format
-msgid "Failed to open %s: %s."
-msgstr ""
-
-#: cli/cli-dump.c:93
-#, possible-c-format
-msgid "'%s' is not a recognized file format."
-msgstr ""
-
-#: cli/cli-dump.c:110
-#, possible-c-format
-msgid "bfd_openw_or_error: %s."
-msgstr ""
-
-#. Append to existing file.
-#. FIXME -- doesn't work...
-#: cli/cli-dump.c:114
-msgid "bfd_openw does not work with append."
-msgstr ""
-
-#: cli/cli-dump.c:117
-#, possible-c-format
-msgid "bfd_openw_or_error: unknown mode %s."
-msgstr ""
-
-#: cli/cli-dump.c:134
-msgid ""
-"\"dump\" must be followed by a subcommand.\n"
-"\n"
-msgstr ""
-
-#: cli/cli-dump.c:141
-msgid ""
-"\"append\" must be followed by a subcommand.\n"
-"\n"
-msgstr ""
-
-#: cli/cli-dump.c:172
-#, possible-c-format
-msgid "writing dump file '%s' (%s)"
-msgstr ""
-
-#: cli/cli-dump.c:189
-msgid "Missing start address."
-msgstr ""
-
-#: cli/cli-dump.c:194
-msgid "Missing stop address."
-msgstr ""
-
-#: cli/cli-dump.c:200
-msgid "Invalid memory address range (start >= end)."
-msgstr ""
-
-#: cli/cli-dump.c:231
-#, possible-c-format
-msgid "No value to %s."
-msgstr ""
-
-#: cli/cli-dump.c:234
-msgid "Invalid expression."
-msgstr ""
-
-#: cli/cli-dump.c:251
-msgid "value is not an lval: address assumed to be zero"
-msgstr ""
-
-#. No, no useable data in this section.
-#: cli/cli-dump.c:420
-#, possible-c-format
-msgid "skipping section %s...\n"
-msgstr ""
-
-#: cli/cli-dump.c:438
-#, possible-c-format
-msgid "Failed to read bfd file %s: '%s'."
-msgstr ""
-
-#: cli/cli-dump.c:461 cli/cli-dump.c:513
-#, possible-c-format
-msgid "restore: memory write failed (%s)."
-msgstr ""
-
-#: cli/cli-dump.c:471
-#, possible-c-format
-msgid "Failed to open %s: %s"
-msgstr ""
-
-#: cli/cli-dump.c:484
-#, possible-c-format
-msgid "Start address is greater than length of binary file %s."
-msgstr ""
-
-#: cli/cli-dump.c:557
-msgid "Start must be less than end."
-msgstr ""
-
-#: cli/cli-dump.c:585
-msgid "\"dump srec\" must be followed by a subcommand.\n"
-msgstr ""
-
-#: cli/cli-dump.c:592
-msgid "\"dump ihex\" must be followed by a subcommand.\n"
-msgstr ""
-
-#: cli/cli-dump.c:599
-msgid "\"dump verilog\" must be followed by a subcommand.\n"
-msgstr ""
-
-#: cli/cli-dump.c:606
-msgid "\"dump tekhex\" must be followed by a subcommand.\n"
-msgstr ""
-
-#: cli/cli-dump.c:613
-msgid "\"dump binary\" must be followed by a subcommand.\n"
-msgstr ""
-
-#: cli/cli-dump.c:620
-msgid "\"append binary\" must be followed by a subcommand.\n"
-msgstr ""
-
-#: cli/cli-dump.c:631
-msgid "Dump target code/data to a local file."
-msgstr ""
-
-#: cli/cli-dump.c:636
-msgid "Append target code/data to a local file."
-msgstr ""
-
-#: cli/cli-dump.c:652
-msgid "Write target code/data to an srec file."
-msgstr ""
-
-#: cli/cli-dump.c:658
-msgid "Write target code/data to an intel hex file."
-msgstr ""
-
-#: cli/cli-dump.c:664
-msgid "Write target code/data to a verilog hex file."
-msgstr ""
-
-#: cli/cli-dump.c:670
-msgid "Write target code/data to a tekhex file."
-msgstr ""
-
-#: cli/cli-dump.c:676
-msgid "Write target code/data to a raw binary file."
-msgstr ""
-
-#: cli/cli-dump.c:682
-msgid "Append target code/data to a raw binary file."
-msgstr ""
-
-#: cli/cli-dump.c:687
-msgid ""
-"Write contents of memory to an srec file.\n"
-"Arguments are FILE START STOP.  Writes the contents of memory\n"
-"within the range [START .. STOP) to the specified FILE in srec format."
-msgstr ""
-
-#: cli/cli-dump.c:693
-msgid ""
-"Write the value of an expression to an srec file.\n"
-"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
-"to the specified FILE in srec format."
-msgstr ""
-
-#: cli/cli-dump.c:699
-msgid ""
-"Write contents of memory to an ihex file.\n"
-"Arguments are FILE START STOP.  Writes the contents of memory within\n"
-"the range [START .. STOP) to the specified FILE in intel hex format."
-msgstr ""
-
-#: cli/cli-dump.c:705
-msgid ""
-"Write the value of an expression to an ihex file.\n"
-"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
-"to the specified FILE in intel hex format."
-msgstr ""
-
-#: cli/cli-dump.c:711
-msgid ""
-"Write contents of memory to a verilog hex file.\n"
-"Arguments are FILE START STOP.  Writes the contents of memory within\n"
-"the range [START .. STOP) to the specified FILE in verilog hex format."
-msgstr ""
-
-#: cli/cli-dump.c:717
-msgid ""
-"Write the value of an expression to a verilog hex file.\n"
-"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
-"to the specified FILE in verilog hex format."
-msgstr ""
-
-#: cli/cli-dump.c:723
-msgid ""
-"Write contents of memory to a tekhex file.\n"
-"Arguments are FILE START STOP.  Writes the contents of memory\n"
-"within the range [START .. STOP) to the specified FILE in tekhex format."
-msgstr ""
-
-#: cli/cli-dump.c:729
-msgid ""
-"Write the value of an expression to a tekhex file.\n"
-"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
-"to the specified FILE in tekhex format."
-msgstr ""
-
-#: cli/cli-dump.c:735
-msgid ""
-"Write contents of memory to a raw binary file.\n"
-"Arguments are FILE START STOP.  Writes the contents of memory\n"
-"within the range [START .. STOP) to the specified FILE in binary format."
-msgstr ""
-
-#: cli/cli-dump.c:741
-msgid ""
-"Write the value of an expression to a raw binary file.\n"
-"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
-"to the specified FILE in raw target ordered bytes."
-msgstr ""
-
-#: cli/cli-dump.c:747
-msgid ""
-"Append contents of memory to a raw binary file.\n"
-"Arguments are FILE START STOP.  Writes the contents of memory within the\n"
-"range [START .. STOP) to the specified FILE in raw target ordered bytes."
-msgstr ""
-
-#: cli/cli-dump.c:753
-msgid ""
-"Append the value of an expression to a raw binary file.\n"
-"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
-"to the specified FILE in raw target ordered bytes."
-msgstr ""
-
-#: cli/cli-dump.c:759
-msgid ""
-"Restore the contents of FILE to target memory.\n"
-"Arguments are FILE OFFSET START END where all except FILE are optional.\n"
-"OFFSET will be added to the base address of the file (default zero).\n"
-"If START and END are given, only the file contents within that range\n"
-"(file relative) will be restored to target memory."
-msgstr ""
-
-#: cli/cli-setshow.c:74
-msgid "\"on\", \"off\" or \"auto\" expected."
-msgstr ""
-
-#: cli/cli-setshow.c:176
-#, possible-c-format
-msgid "Junk after \"%.*s\": %s"
-msgstr ""
-
-#: cli/cli-setshow.c:197 cli/cli-setshow.c:230 cli/cli-setshow.c:460
-msgid "integer to set it to, or \"unlimited\"."
-msgstr ""
-
-#: cli/cli-setshow.c:199 cli/cli-setshow.c:462
-msgid "integer to set it to."
-msgstr ""
-
-#: cli/cli-setshow.c:217 cli/cli-setshow.c:240 cli/cli-setshow.c:478
-#, possible-c-format
-msgid "integer %s out of range"
-msgstr ""
-
-#: cli/cli-setshow.c:242
-msgid "only -1 is allowed to set as unlimited"
-msgstr ""
-
-#: cli/cli-setshow.c:264
-#, possible-c-format
-msgid "Requires an argument. Valid arguments are %s."
-msgstr ""
-
-#: cli/cli-setshow.c:290
-#, possible-c-format
-msgid "Undefined item: \"%.*s\"."
-msgstr ""
-
-#: cli/cli-setshow.c:293
-#, possible-c-format
-msgid "Ambiguous item \"%.*s\"."
-msgstr ""
-
-#: cli/cli-setshow.c:379
-msgid "filename to set it to."
-msgstr ""
-
-#: cli/cli-setshow.c:418
-msgid "\"on\" or \"off\" expected."
-msgstr ""
-
-#: cli/cli-setshow.c:496
-#, possible-c-format
-msgid "Junk after item \"%.*s\": %s"
-msgstr ""
-
-#: cli/cli-setshow.c:518
-msgid "gdb internal error: bad var_type in do_setshow_command"
-msgstr ""
-
-#: cli/cli-decode.c:1559
-#, possible-c-format
-msgid "Undefined %scommand: \"%s\".  Try \"help%s%.*s\"."
-msgstr ""
-
-#: cli/cli-decode.c:1593
-#, possible-c-format
-msgid "Lack of needed %scommand"
-msgstr ""
-
-#: cli/cli-decode.c:1658
-#, possible-c-format
-msgid "Ambiguous %scommand \"%s\": %s."
-msgstr ""
-
-#: cli/cli-decode.c:1665
-msgid "Argument must be preceded by space."
-msgstr ""
-
-#: cli/cli-decode.c:1955
-msgid "Invalid command"
-msgstr ""
-
-#: cli/cli-cmds.c:191
+#: cli/cli-cmds.c:192
 #, possible-c-format
 msgid "Argument required (%s)."
 msgstr ""
 
-#: cli/cli-cmds.c:201
-msgid "\"info\" must be followed by the name of an info command.\n"
-msgstr ""
-
-#: cli/cli-cmds.c:221
+#: cli/cli-cmds.c:213
 msgid "Missing arguments."
 msgstr ""
 
-#: cli/cli-cmds.c:227
+#: cli/cli-cmds.c:219
 msgid "Missing setting before '--' delimiter"
 msgstr ""
 
-#: cli/cli-cmds.c:238
+#: cli/cli-cmds.c:231
 msgid "Cannot use this setting with the \"with\" command"
 msgstr ""
 
-#: cli/cli-cmds.c:269
+#: cli/cli-cmds.c:262
 #, possible-c-format
 msgid "Couldn't restore setting: %s"
 msgstr ""
 
-#: cli/cli-cmds.c:352
+#: cli/cli-cmds.c:334
+msgid "ALIAS missing."
+msgstr ""
+
+#: cli/cli-cmds.c:392
 msgid "max-completions is zero, completion is disabled.\n"
 msgstr ""
 
 #. ARG_PREFIX and WORD are included in the output so that emacs
 #. will include the message in the output.
-#: cli/cli-cmds.c:391
+#: cli/cli-cmds.c:431
 #, possible-c-format
 msgid "%s%s %s\n"
 msgstr ""
 
-#: 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
+#: cli/cli-cmds.c:474 cli/cli-script.c:1445 infcmd.c:1103 infcmd.c:1120
+#: infcmd.c:1220 infcmd.c:1835 infcmd.c:2370 symfile.c:1081 symfile.c:1237
+#: symfile.c:2338 symfile.c:2425 tracepoint.c:2064 tracepoint.c:2070
 msgid "Not confirmed."
 msgstr ""
 
-#: cli/cli-cmds.c:445
+#: cli/cli-cmds.c:485
 #, possible-c-format
 msgid "The \"pwd\" command does not take an argument: %s"
 msgstr ""
 
-#: cli/cli-cmds.c:450
+#: cli/cli-cmds.c:490
 #, possible-c-format
 msgid "Error finding name of working directory: %s"
 msgstr ""
 
-#: cli/cli-cmds.c:454
+#: cli/cli-cmds.c:494
 #, possible-c-format
 msgid ""
 "Working directory %ps\n"
 " (canonically %ps).\n"
 msgstr ""
 
-#: cli/cli-cmds.c:459
+#: cli/cli-cmds.c:499
 #, possible-c-format
 msgid "Working directory %ps.\n"
 msgstr ""
 
-#: cli/cli-cmds.c:575
+#: cli/cli-cmds.c:615
 #, possible-c-format
 msgid "Script filename extension recognition is \"%s\".\n"
 msgstr ""
 
-#: cli/cli-cmds.c:673
+#: cli/cli-cmds.c:713
 msgid "source command requires file name of file to source."
 msgstr ""
 
-#: cli/cli-cmds.c:806
+#: cli/cli-cmds.c:858
 #, possible-c-format
 msgid "unexpected shell command exit status %d"
 msgstr ""
 
-#: cli/cli-cmds.c:857
+#: cli/cli-cmds.c:909
 msgid "Fork failed"
 msgstr ""
 
-#: cli/cli-cmds.c:891
+#: cli/cli-cmds.c:943
 msgid "No default source file yet."
 msgstr ""
 
-#: cli/cli-cmds.c:915
+#: cli/cli-cmds.c:967
 msgid "Specified line is ambiguous:\n"
 msgstr ""
 
-#: cli/cli-cmds.c:922 cli/cli-cmds.c:1247
+#: cli/cli-cmds.c:974 cli/cli-cmds.c:1299
 msgid "Junk at end of line specification."
 msgstr ""
 
-#: cli/cli-cmds.c:933 cli/cli-cmds.c:1265
+#: cli/cli-cmds.c:985 cli/cli-cmds.c:1317
 #, possible-c-format
 msgid "No source file for address %s."
 msgstr ""
 
-#: cli/cli-cmds.c:955 cli/cli-cmds.c:1286
+#: cli/cli-cmds.c:1007 cli/cli-cmds.c:1338
 #, possible-c-format
 msgid "No line number known for %s."
 msgstr ""
 
-#: cli/cli-cmds.c:989
+#: cli/cli-cmds.c:1041
 msgid ""
 "Indicates to use the specified delimiter string to separate\n"
 "COMMAND from SHELL_COMMAND, in alternative to |.  This is useful in\n"
 "case COMMAND contains a | character."
 msgstr ""
 
-#: cli/cli-cmds.c:1022
+#: cli/cli-cmds.c:1074
 msgid "Missing COMMAND"
 msgstr ""
 
-#: cli/cli-cmds.c:1027
+#: cli/cli-cmds.c:1079
 msgid "Missing delimiter before SHELL_COMMAND"
 msgstr ""
 
-#: cli/cli-cmds.c:1038
+#: cli/cli-cmds.c:1090
 msgid "Missing SHELL_COMMAND"
 msgstr ""
 
-#: cli/cli-cmds.c:1043
+#: cli/cli-cmds.c:1095
 #, possible-c-format
 msgid "Error launching \"%s\""
 msgstr ""
 
-#: cli/cli-cmds.c:1060
+#: cli/cli-cmds.c:1112
 #, possible-c-format
 msgid "shell command \"%s\" failed: %s"
 msgstr ""
 
-#: cli/cli-cmds.c:1148
+#: cli/cli-cmds.c:1200
 #, possible-c-format
 msgid "Already at the start of %s."
 msgstr ""
 
-#: cli/cli-cmds.c:1207
+#: cli/cli-cmds.c:1259
 #, possible-c-format
 msgid "Specified first line '%.*s' is ambiguous:\n"
 msgstr ""
 
-#: cli/cli-cmds.c:1238
+#: cli/cli-cmds.c:1290
 #, possible-c-format
 msgid "Specified last line '%s' is ambiguous:\n"
 msgstr ""
 
-#: cli/cli-cmds.c:1251
+#: cli/cli-cmds.c:1303
 msgid "Specified first and last lines are in different files."
 msgstr ""
 
-#: cli/cli-cmds.c:1253
+#: cli/cli-cmds.c:1305
 msgid "Two empty args do not say what lines to list."
 msgstr ""
 
-#: cli/cli-cmds.c:1295 cli/cli-cmds.c:1303
+#: cli/cli-cmds.c:1347 cli/cli-cmds.c:1355
 msgid "No default source file yet.  Do \"help list\"."
 msgstr ""
 
-#: cli/cli-cmds.c:1362
+#: cli/cli-cmds.c:1416
 #, possible-c-format
 msgid "Address range %s to %s:\n"
 msgstr ""
 
-#: cli/cli-cmds.c:1391 dwarf2loc.c:574 dwarf2loc.c:2032 dwarf2loc.c:2068
-#: python/py-symbol.c:393 python/py-symbol.c:501 stack.c:2525 stack.c:2636
+#: cli/cli-cmds.c:1439 dwarf2/loc.c:645 dwarf2/loc.c:2127 dwarf2/loc.c:2163
+#: python/py-symbol.c:393 python/py-symbol.c:501 stack.c:2497 stack.c:2608
 #: valops.c:1291
 msgid "No frame selected."
 msgstr ""
 
-#: cli/cli-cmds.c:1395
+#: cli/cli-cmds.c:1443
 msgid "No function contains program counter for selected frame."
 msgstr ""
 
-#: cli/cli-cmds.c:1452 record.c:494 record.c:632
+#: cli/cli-cmds.c:1501 record.c:477 record.c:615
 msgid "Missing modifier."
 msgstr ""
 
-#: cli/cli-cmds.c:1468
+#: cli/cli-cmds.c:1517
 msgid "Invalid disassembly modifier."
 msgstr ""
 
-#: cli/cli-cmds.c:1477
+#: cli/cli-cmds.c:1526
 msgid "Cannot specify both /m and /s."
 msgstr ""
 
-#: cli/cli-cmds.c:1493
+#: cli/cli-cmds.c:1542
 msgid "No function contains specified address."
 msgstr ""
 
-#: cli/cli-cmds.c:1547
+#: cli/cli-cmds.c:1602
 msgid "Not a user command."
 msgstr ""
 
-#: cli/cli-cmds.c:1569
+#: cli/cli-cmds.c:1624
 msgid "REGEXP string is empty"
 msgstr ""
 
-#: cli/cli-cmds.c:1572
+#: cli/cli-cmds.c:1627
 msgid "Error in regular expression"
 msgstr ""
 
-#: cli/cli-cmds.c:1629
-msgid "Usage: alias [-a] [--] ALIAS = COMMAND"
+#: cli/cli-cmds.c:1645
+msgid ""
+"Specify that ALIAS is an abbreviation of COMMAND.\n"
+"Abbreviations are not used in command completion."
+msgstr ""
+
+#: cli/cli-cmds.c:1743
+#, possible-c-format
+msgid "Invalid command to alias to: %s"
+msgstr ""
+
+#: cli/cli-cmds.c:1746
+msgid "Cannot define an alias of an alias that has default args"
+msgstr ""
+
+#: cli/cli-cmds.c:1754
+msgid "Usage: alias [-a] [--] ALIAS = COMMAND [DEFAULT-ARGS...]"
 msgstr ""
 
-#: cli/cli-cmds.c:1677
+#: cli/cli-cmds.c:1801
 #, possible-c-format
 msgid "Invalid command name: %s"
 msgstr ""
 
-#: cli/cli-cmds.c:1679
+#: cli/cli-cmds.c:1803
 #, possible-c-format
 msgid "Invalid command element name: %s"
 msgstr ""
 
-#: cli/cli-cmds.c:1693
+#: cli/cli-cmds.c:1834
 #, possible-c-format
-msgid "Invalid command to alias to: %s"
+msgid "Alias already exists: %s"
 msgstr ""
 
-#: cli/cli-cmds.c:1699
+#: cli/cli-cmds.c:1840
 #, possible-c-format
-msgid "Alias already exists: %s"
+msgid "Alias %s is the name of an existing command"
 msgstr ""
 
-#: cli/cli-cmds.c:1722
+#: cli/cli-cmds.c:1868
 msgid "Mismatched command length between ALIAS and COMMAND."
 msgstr ""
 
-#: cli/cli-cmds.c:1741
+#: cli/cli-cmds.c:1887
 msgid "ALIAS and COMMAND prefixes do not match."
 msgstr ""
 
-#: cli/cli-cmds.c:1762
+#: cli/cli-cmds.c:1918
 #, possible-c-format
 msgid "file: \"%s\", line number: %d, symbol: \"%s\"\n"
 msgstr ""
 
-#: cli/cli-cmds.c:1850
-msgid "\"set debug\" must be followed by the name of a debug subcommand.\n"
-msgstr ""
-
-#: cli/cli-cmds.c:1874
+#: cli/cli-cmds.c:2016
 #, possible-c-format
 msgid "Verbose printing of informational messages is %s.\n"
 msgstr ""
 
-#: cli/cli-cmds.c:1877
+#: cli/cli-cmds.c:2019
 #, possible-c-format
 msgid "Verbosity is %s.\n"
 msgstr ""
 
-#: cli/cli-cmds.c:1884
+#: cli/cli-cmds.c:2026
 #, possible-c-format
 msgid "History expansion on command input is %s.\n"
 msgstr ""
 
-#: cli/cli-cmds.c:1892
+#: cli/cli-cmds.c:2034
 #, possible-c-format
 msgid "Debugging of remote protocol is %s.\n"
 msgstr ""
 
-#: cli/cli-cmds.c:1901
+#: cli/cli-cmds.c:2043
 #, possible-c-format
 msgid "Timeout limit to wait for target to respond is %s.\n"
 msgstr ""
 
-#: cli/cli-cmds.c:1910
+#: cli/cli-cmds.c:2052
 #, possible-c-format
 msgid "The max call depth for user-defined commands is %s.\n"
 msgstr ""
 
-#: cli/cli-cmds.c:1924
+#: cli/cli-cmds.c:2066
 #, possible-c-format
 msgid "You must provide an argument to %s"
 msgstr ""
 
-#: cli/cli-cmds.c:1926
+#: cli/cli-cmds.c:2068
 #, possible-c-format
 msgid "You can only provide one argument to %s"
 msgstr ""
 
-#: cli/cli-cmds.c:1932
+#: cli/cli-cmds.c:2074
 #, possible-c-format
 msgid "First argument of %s must be a string."
 msgstr ""
 
-#: cli/cli-cmds.c:1938
+#: cli/cli-cmds.c:2080
 #, possible-c-format
 msgid "First argument of %s must be a valid setting of the 'show' command."
 msgstr ""
 
 #. Define the classes of commands.
 #. They will appear in the help list in alphabetical order.
-#: cli/cli-cmds.c:2116
+#: cli/cli-cmds.c:2259
 msgid ""
 "Maintenance commands.\n"
 "Some gdb commands are provided just for use by gdb maintainers.\n"
@@ -6161,42 +5889,42 @@ msgid ""
 "well documented as user commands."
 msgstr ""
 
-#: cli/cli-cmds.c:2122
+#: cli/cli-cmds.c:2265
 msgid "Obscure features."
 msgstr ""
 
-#: cli/cli-cmds.c:2124
-msgid "Aliases of other commands."
+#: cli/cli-cmds.c:2267
+msgid "User-defined aliases of other commands."
 msgstr ""
 
-#: cli/cli-cmds.c:2125
+#: cli/cli-cmds.c:2268
 msgid ""
 "User-defined commands.\n"
 "The commands in this class are those defined by the user.\n"
 "Use the \"define\" command to define a command."
 msgstr ""
 
-#: cli/cli-cmds.c:2129
+#: cli/cli-cmds.c:2272
 msgid "Support facilities."
 msgstr ""
 
-#: cli/cli-cmds.c:2131
+#: cli/cli-cmds.c:2274
 msgid "Status inquiries."
 msgstr ""
 
-#: cli/cli-cmds.c:2132
+#: cli/cli-cmds.c:2275
 msgid "Specifying and examining files."
 msgstr ""
 
-#: cli/cli-cmds.c:2135
+#: cli/cli-cmds.c:2278
 msgid "Making program stop at certain points."
 msgstr ""
 
-#: cli/cli-cmds.c:2136
+#: cli/cli-cmds.c:2279
 msgid "Examining data."
 msgstr ""
 
-#: cli/cli-cmds.c:2137
+#: cli/cli-cmds.c:2280
 msgid ""
 "Examining the stack.\n"
 "The stack is made up of stack frames.  Gdb assigns numbers to stack frames\n"
@@ -6208,18 +5936,25 @@ msgid ""
 "The commands below can be used to select other frames by number or address."
 msgstr ""
 
-#: cli/cli-cmds.c:2146
+#: cli/cli-cmds.c:2291
+msgid ""
+"TUI is the GDB text based interface.\n"
+"In TUI mode, GDB can display several text windows showing\n"
+"the source file, the processor registers, the program disassembly, ..."
+msgstr ""
+
+#: cli/cli-cmds.c:2295
 msgid "Running the program."
 msgstr ""
 
 #. Define general commands.
-#: cli/cli-cmds.c:2150
+#: cli/cli-cmds.c:2299
 msgid ""
 "Print working directory.\n"
 "This is used for your program as well."
 msgstr ""
 
-#: cli/cli-cmds.c:2154
+#: cli/cli-cmds.c:2303
 msgid ""
 "Set working directory to DIR for debugger.\n"
 "The debugger's current working directory specifies where scripts and other\n"
@@ -6229,7 +5964,7 @@ msgid ""
 "way is to use the \"set cwd\" command."
 msgstr ""
 
-#: cli/cli-cmds.c:2162
+#: cli/cli-cmds.c:2311
 msgid ""
 "Print a constant string.  Give string as argument.\n"
 "C escape sequences may be used in the argument.\n"
@@ -6240,15 +5975,15 @@ msgid ""
 "to be printed or after trailing whitespace."
 msgstr ""
 
-#: cli/cli-cmds.c:2172
+#: cli/cli-cmds.c:2321
 msgid "Set mode for script filename extension recognition."
 msgstr ""
 
-#: cli/cli-cmds.c:2173
+#: cli/cli-cmds.c:2322
 msgid "Show mode for script filename extension recognition."
 msgstr ""
 
-#: cli/cli-cmds.c:2174
+#: cli/cli-cmds.c:2323
 msgid ""
 "off  == no filename extension recognition (all sourced files are GDB "
 "scripts)\n"
@@ -6258,7 +5993,7 @@ msgid ""
 "supported"
 msgstr ""
 
-#: cli/cli-cmds.c:2184
+#: cli/cli-cmds.c:2333
 msgid ""
 "Exit gdb.\n"
 "Usage: quit [EXPR]\n"
@@ -6266,56 +6001,51 @@ msgid ""
 "used as GDB's exit code.  The default is zero."
 msgstr ""
 
-#: cli/cli-cmds.c:2190
+#: cli/cli-cmds.c:2339
 msgid "Print list of commands."
 msgstr ""
 
-#: cli/cli-cmds.c:2195 top.c:1939
+#: cli/cli-cmds.c:2344 top.c:1996
 msgid "Set verbosity."
 msgstr ""
 
-#: cli/cli-cmds.c:2196 top.c:1940
+#: cli/cli-cmds.c:2345 top.c:1997
 msgid "Show verbosity."
 msgstr ""
 
-#: cli/cli-cmds.c:2203
+#: cli/cli-cmds.c:2351
 msgid "Generic command for setting command history parameters."
 msgstr ""
 
-#: cli/cli-cmds.c:2206
+#: cli/cli-cmds.c:2354
 msgid "Generic command for showing command history parameters."
 msgstr ""
 
-#: cli/cli-cmds.c:2209
+#: cli/cli-cmds.c:2358
 msgid "Set history expansion on command input."
 msgstr ""
 
-#: cli/cli-cmds.c:2210
+#: cli/cli-cmds.c:2359
 msgid "Show history expansion on command input."
 msgstr ""
 
-#: cli/cli-cmds.c:2211
+#: cli/cli-cmds.c:2360
 msgid "Without an argument, history expansion is enabled."
 msgstr ""
 
-#: cli/cli-cmds.c:2217
+#: cli/cli-cmds.c:2366
 msgid "Generic command for showing things about the program being debugged."
 msgstr ""
 
-#: cli/cli-cmds.c:2224
+#: cli/cli-cmds.c:2373
 msgid "List the completions for the rest of the line as a command."
 msgstr ""
 
-#: cli/cli-cmds.c:2226
+#: cli/cli-cmds.c:2375
 msgid "Generic command for showing things about the debugger."
 msgstr ""
 
-#. Another way to get at the same thing.
-#: cli/cli-cmds.c:2230
-msgid "Show all GDB settings."
-msgstr ""
-
-#: cli/cli-cmds.c:2232
+#: cli/cli-cmds.c:2381
 msgid ""
 "Temporarily set SETTING to VALUE, run COMMAND, and restore SETTING.\n"
 "Usage: with SETTING [VALUE] [-- COMMAND]\n"
@@ -6332,7 +6062,7 @@ msgid ""
 "  w la p -- w p el u -- p obj"
 msgstr ""
 
-#: cli/cli-cmds.c:2249
+#: cli/cli-cmds.c:2398
 msgid ""
 "$_gdb_setting_str - returns the value of a GDB setting as a string.\n"
 "Usage: $_gdb_setting_str (setting)\n"
@@ -6343,7 +6073,7 @@ msgid ""
 "as \"unlimited\"."
 msgstr ""
 
-#: cli/cli-cmds.c:2259
+#: cli/cli-cmds.c:2408
 msgid ""
 "$_gdb_setting - returns the value of a GDB setting.\n"
 "Usage: $_gdb_setting (setting)\n"
@@ -6353,7 +6083,7 @@ msgid ""
 "as 0 or -1 depending on the setting."
 msgstr ""
 
-#: cli/cli-cmds.c:2268
+#: cli/cli-cmds.c:2417
 msgid ""
 "$_gdb_maint_setting_str - returns the value of a GDB maintenance setting as "
 "a string.\n"
@@ -6365,7 +6095,7 @@ msgid ""
 "as \"unlimited\"."
 msgstr ""
 
-#: cli/cli-cmds.c:2278
+#: cli/cli-cmds.c:2427
 msgid ""
 "$_gdb_maint_setting - returns the value of a GDB maintenance setting.\n"
 "Usage: $_gdb_maint_setting (setting)\n"
@@ -6375,64 +6105,64 @@ msgid ""
 "as 0 or -1 depending on the setting."
 msgstr ""
 
-#: cli/cli-cmds.c:2287
+#: cli/cli-cmds.c:2436
 msgid ""
 "Show the history of commands you typed.\n"
 "You can supply a command number to start with, or a `+' to start after\n"
 "the previous command number shown."
 msgstr ""
 
-#: cli/cli-cmds.c:2294
+#: cli/cli-cmds.c:2443
 msgid "Show what version of GDB this is."
 msgstr ""
 
-#: cli/cli-cmds.c:2297
+#: cli/cli-cmds.c:2446
 msgid "Show how GDB was configured at build time."
 msgstr ""
 
-#: cli/cli-cmds.c:2299
+#: cli/cli-cmds.c:2448
 msgid "Set debugging of remote protocol."
 msgstr ""
 
-#: cli/cli-cmds.c:2300
+#: cli/cli-cmds.c:2449
 msgid "Show debugging of remote protocol."
 msgstr ""
 
-#: cli/cli-cmds.c:2301
+#: cli/cli-cmds.c:2450
 msgid ""
 "When enabled, each packet sent or received with the remote target\n"
 "is displayed."
 msgstr ""
 
-#: cli/cli-cmds.c:2309
+#: cli/cli-cmds.c:2458
 msgid "Set timeout limit to wait for target to respond."
 msgstr ""
 
-#: cli/cli-cmds.c:2310
+#: cli/cli-cmds.c:2459
 msgid "Show timeout limit to wait for target to respond."
 msgstr ""
 
-#: cli/cli-cmds.c:2311
+#: cli/cli-cmds.c:2460
 msgid ""
 "This value is used to set the time limit for gdb to wait for a response\n"
 "from the target."
 msgstr ""
 
-#: cli/cli-cmds.c:2319
+#: cli/cli-cmds.c:2468
 msgid "Generic command for setting gdb debugging flags."
 msgstr ""
 
-#: cli/cli-cmds.c:2323
+#: cli/cli-cmds.c:2472
 msgid "Generic command for showing gdb debugging flags."
 msgstr ""
 
-#: cli/cli-cmds.c:2326
+#: cli/cli-cmds.c:2475
 msgid ""
 "Execute the rest of the line as a shell command.\n"
 "With no arguments, run an inferior shell."
 msgstr ""
 
-#: cli/cli-cmds.c:2333
+#: cli/cli-cmds.c:2482
 msgid ""
 "Edit specified file or function.\n"
 "With no argument, edits file containing most recent line listed.\n"
@@ -6444,7 +6174,7 @@ msgid ""
 "Uses EDITOR environment variable contents as editor (or ex as default)."
 msgstr ""
 
-#: cli/cli-cmds.c:2345
+#: cli/cli-cmds.c:2494
 msgid ""
 "Send the output of a gdb command to a shell command.\n"
 "Usage: | [COMMAND] | SHELL_COMMAND\n"
@@ -6462,7 +6192,7 @@ msgid ""
 "and send its output to SHELL_COMMAND."
 msgstr ""
 
-#: cli/cli-cmds.c:2363
+#: cli/cli-cmds.c:2512
 msgid ""
 "List specified function or line.\n"
 "With no argument, lists ten more lines after or around previous listing.\n"
@@ -6483,11 +6213,16 @@ msgid ""
 "can be shown using \"show listsize\"."
 msgstr ""
 
-#: cli/cli-cmds.c:2387
+#: cli/cli-cmds.c:2536
 msgid ""
 "Disassemble a specified section of memory.\n"
+"Usage: disassemble[/m|/r|/s] START [, END]\n"
 "Default is the function surrounding the pc of the selected frame.\n"
 "\n"
+"With a /s modifier, source lines are included (if available).\n"
+"In this mode, the output is displayed in PC address order, and\n"
+"file names and contents for all relevant source files are displayed.\n"
+"\n"
 "With a /m modifier, source lines are included (if available).\n"
 "This view is \"source centric\": the output is in source line order,\n"
 "regardless of any optimization that is present.  Only the main source file\n"
@@ -6495,11 +6230,6 @@ msgid ""
 "This modifier hasn't proved useful in practice and is deprecated\n"
 "in favor of /s.\n"
 "\n"
-"With a /s modifier, source lines are included (if available).\n"
-"This differs from /m in two important respects:\n"
-"- the output is still in pc address order, and\n"
-"- file names and contents for all relevant source files are displayed.\n"
-"\n"
 "With a /r modifier, raw instructions in hex are included.\n"
 "\n"
 "With a single argument, the function surrounding that address is dumped.\n"
@@ -6513,18 +6243,18 @@ msgid ""
 "you must type \"disassemble 'foo.c'::bar\" and not \"disassemble foo.c:bar\"."
 msgstr ""
 
-#: cli/cli-cmds.c:2415
+#: cli/cli-cmds.c:2564
 msgid "Run the ``make'' program using the rest of the line as arguments."
 msgstr ""
 
-#: cli/cli-cmds.c:2418
+#: cli/cli-cmds.c:2567
 msgid ""
 "Show definitions of non-python/scheme user defined commands.\n"
 "Argument is the name of the user defined command.\n"
 "With no argument, show definitions of all user defined commands."
 msgstr ""
 
-#: cli/cli-cmds.c:2422
+#: cli/cli-cmds.c:2571
 msgid ""
 "Search for commands matching a REGEXP.\n"
 "Usage: apropos [-v] REGEXP\n"
@@ -6532,43 +6262,53 @@ msgid ""
 "of the matching commands."
 msgstr ""
 
-#: cli/cli-cmds.c:2429
+#: cli/cli-cmds.c:2578
 msgid "Set the max call depth for non-python/scheme user-defined commands."
 msgstr ""
 
-#: cli/cli-cmds.c:2430
+#: cli/cli-cmds.c:2579
 msgid "Show the max call depth for non-python/scheme user-defined commands."
 msgstr ""
 
-#: cli/cli-cmds.c:2436
+#: cli/cli-cmds.c:2585
 msgid "Set tracing of GDB CLI commands."
 msgstr ""
 
-#: cli/cli-cmds.c:2437
+#: cli/cli-cmds.c:2586
 msgid "Show state of GDB CLI command tracing."
 msgstr ""
 
-#: cli/cli-cmds.c:2438
+#: cli/cli-cmds.c:2587
 msgid "When 'on', each command is displayed as it is executed."
 msgstr ""
 
-#: cli/cli-cmds.c:2444
+#: cli/cli-cmds.c:2596
 msgid ""
 "Define a new command that is an alias of an existing command.\n"
-"Usage: alias [-a] [--] ALIAS = COMMAND\n"
+"Usage: alias [-a] [--] ALIAS = COMMAND [DEFAULT-ARGS...]\n"
 "ALIAS is the name of the alias command to create.\n"
 "COMMAND is the command being aliased to.\n"
-"If \"-a\" is specified, the command is an abbreviation,\n"
-"and will not appear in help command list output.\n"
+"\n"
+"Options:\n"
+"%OPTIONS%\n"
+"\n"
+"GDB will automatically prepend the provided DEFAULT-ARGS to the list\n"
+"of arguments explicitly provided when using ALIAS.\n"
+"Use \"help aliases\" to list all user defined aliases and their default "
+"args.\n"
 "\n"
 "Examples:\n"
 "Make \"spe\" an alias of \"set print elements\":\n"
-"  alias spe = set print elements\n"
+"  alias spe set print elements\n"
 "Make \"elms\" an alias of \"elements\" in the \"set print\" command:\n"
-"  alias -a set print elms = set print elements"
+"  alias -a set print elms set print elements\n"
+"Make \"btf\" an alias of \"backtrace -full -past-entry -past-main\" :\n"
+"  alias btf = backtrace -full -past-entry -past-main\n"
+"Make \"wLapPeu\" an alias of 2 nested \"with\":\n"
+"  alias wLapPeu = with language pascal -- with print elements unlimited --"
 msgstr ""
 
-#: cli/cli-cmds.c:2458
+#: cli/cli-cmds.c:2625
 #, possible-c-format
 msgid ""
 "Read commands from a file named FILE.\n"
@@ -6582,6 +6322,370 @@ msgid ""
 "when GDB is started."
 msgstr ""
 
+#: cli/cli-decode.c:1781
+#, possible-c-format
+msgid "Undefined %scommand: \"%s\".  Try \"help%s%.*s\"."
+msgstr ""
+
+#: cli/cli-decode.c:1821
+#, possible-c-format
+msgid "Lack of needed %scommand"
+msgstr ""
+
+#: cli/cli-decode.c:1886
+#, possible-c-format
+msgid "Ambiguous %scommand \"%s\": %s."
+msgstr ""
+
+#: cli/cli-decode.c:1893
+msgid "Argument must be preceded by space."
+msgstr ""
+
+#: cli/cli-decode.c:2184
+msgid "Invalid command"
+msgstr ""
+
+#: cli/cli-dump.c:66
+msgid "Missing filename."
+msgstr ""
+
+#: cli/cli-dump.c:89 cli/cli-dump.c:107 nat/linux-btrace.c:574
+#, possible-c-format
+msgid "Failed to open %s: %s."
+msgstr ""
+
+#: cli/cli-dump.c:93
+#, possible-c-format
+msgid "'%s' is not a recognized file format."
+msgstr ""
+
+#: cli/cli-dump.c:110
+#, possible-c-format
+msgid "bfd_openw_or_error: %s."
+msgstr ""
+
+#. Append to existing file.
+#. FIXME -- doesn't work...
+#: cli/cli-dump.c:114
+msgid "bfd_openw does not work with append."
+msgstr ""
+
+#: cli/cli-dump.c:117
+#, possible-c-format
+msgid "bfd_openw_or_error: unknown mode %s."
+msgstr ""
+
+#: cli/cli-dump.c:158
+#, possible-c-format
+msgid "writing dump file '%s' (%s)"
+msgstr ""
+
+#: cli/cli-dump.c:175
+msgid "Missing start address."
+msgstr ""
+
+#: cli/cli-dump.c:180
+msgid "Missing stop address."
+msgstr ""
+
+#: cli/cli-dump.c:186
+msgid "Invalid memory address range (start >= end)."
+msgstr ""
+
+#: cli/cli-dump.c:217
+#, possible-c-format
+msgid "No value to %s."
+msgstr ""
+
+#: cli/cli-dump.c:220
+msgid "Invalid expression."
+msgstr ""
+
+#: cli/cli-dump.c:237
+msgid "value is not an lval: address assumed to be zero"
+msgstr ""
+
+#. No, no useable data in this section.
+#: cli/cli-dump.c:406
+#, possible-c-format
+msgid "skipping section %s...\n"
+msgstr ""
+
+#: cli/cli-dump.c:424
+#, possible-c-format
+msgid "Failed to read bfd file %s: '%s'."
+msgstr ""
+
+#: cli/cli-dump.c:447 cli/cli-dump.c:499
+#, possible-c-format
+msgid "restore: memory write failed (%s)."
+msgstr ""
+
+#: cli/cli-dump.c:457
+#, possible-c-format
+msgid "Failed to open %s: %s"
+msgstr ""
+
+#: cli/cli-dump.c:470
+#, possible-c-format
+msgid "Start address is greater than length of binary file %s."
+msgstr ""
+
+#: cli/cli-dump.c:543
+msgid "Start must be less than end."
+msgstr ""
+
+#: cli/cli-dump.c:575
+msgid "Dump target code/data to a local file."
+msgstr ""
+
+#: cli/cli-dump.c:580
+msgid "Append target code/data to a local file."
+msgstr ""
+
+#: cli/cli-dump.c:596
+msgid "Write target code/data to an srec file."
+msgstr ""
+
+#: cli/cli-dump.c:602
+msgid "Write target code/data to an intel hex file."
+msgstr ""
+
+#: cli/cli-dump.c:608
+msgid "Write target code/data to a verilog hex file."
+msgstr ""
+
+#: cli/cli-dump.c:614
+msgid "Write target code/data to a tekhex file."
+msgstr ""
+
+#: cli/cli-dump.c:620
+msgid "Write target code/data to a raw binary file."
+msgstr ""
+
+#: cli/cli-dump.c:626
+msgid "Append target code/data to a raw binary file."
+msgstr ""
+
+#: cli/cli-dump.c:631
+msgid ""
+"Write contents of memory to an srec file.\n"
+"Arguments are FILE START STOP.  Writes the contents of memory\n"
+"within the range [START .. STOP) to the specified FILE in srec format."
+msgstr ""
+
+#: cli/cli-dump.c:637
+msgid ""
+"Write the value of an expression to an srec file.\n"
+"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
+"to the specified FILE in srec format."
+msgstr ""
+
+#: cli/cli-dump.c:643
+msgid ""
+"Write contents of memory to an ihex file.\n"
+"Arguments are FILE START STOP.  Writes the contents of memory within\n"
+"the range [START .. STOP) to the specified FILE in intel hex format."
+msgstr ""
+
+#: cli/cli-dump.c:649
+msgid ""
+"Write the value of an expression to an ihex file.\n"
+"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
+"to the specified FILE in intel hex format."
+msgstr ""
+
+#: cli/cli-dump.c:655
+msgid ""
+"Write contents of memory to a verilog hex file.\n"
+"Arguments are FILE START STOP.  Writes the contents of memory within\n"
+"the range [START .. STOP) to the specified FILE in verilog hex format."
+msgstr ""
+
+#: cli/cli-dump.c:661
+msgid ""
+"Write the value of an expression to a verilog hex file.\n"
+"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
+"to the specified FILE in verilog hex format."
+msgstr ""
+
+#: cli/cli-dump.c:667
+msgid ""
+"Write contents of memory to a tekhex file.\n"
+"Arguments are FILE START STOP.  Writes the contents of memory\n"
+"within the range [START .. STOP) to the specified FILE in tekhex format."
+msgstr ""
+
+#: cli/cli-dump.c:673
+msgid ""
+"Write the value of an expression to a tekhex file.\n"
+"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
+"to the specified FILE in tekhex format."
+msgstr ""
+
+#: cli/cli-dump.c:679
+msgid ""
+"Write contents of memory to a raw binary file.\n"
+"Arguments are FILE START STOP.  Writes the contents of memory\n"
+"within the range [START .. STOP) to the specified FILE in binary format."
+msgstr ""
+
+#: cli/cli-dump.c:685
+msgid ""
+"Write the value of an expression to a raw binary file.\n"
+"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
+"to the specified FILE in raw target ordered bytes."
+msgstr ""
+
+#: cli/cli-dump.c:691
+msgid ""
+"Append contents of memory to a raw binary file.\n"
+"Arguments are FILE START STOP.  Writes the contents of memory within the\n"
+"range [START .. STOP) to the specified FILE in raw target ordered bytes."
+msgstr ""
+
+#: cli/cli-dump.c:697
+msgid ""
+"Append the value of an expression to a raw binary file.\n"
+"Arguments are FILE EXPRESSION.  Writes the value of EXPRESSION\n"
+"to the specified FILE in raw target ordered bytes."
+msgstr ""
+
+#: cli/cli-dump.c:703
+msgid ""
+"Restore the contents of FILE to target memory.\n"
+"Arguments are FILE OFFSET START END where all except FILE are optional.\n"
+"OFFSET will be added to the base address of the file (default zero).\n"
+"If START and END are given, only the file contents within that range\n"
+"(file relative) will be restored to target memory."
+msgstr ""
+
+#: cli/cli-logging.c:33
+#, possible-c-format
+msgid "The current logfile is \"%ps\".\n"
+msgstr ""
+
+#: cli/cli-logging.c:43
+#, possible-c-format
+msgid ""
+"Currently logging to %s.  Turn the logging off and on to make the new "
+"setting effective."
+msgstr ""
+
+#: cli/cli-logging.c:59
+#, possible-c-format
+msgid "Whether logging overwrites or appends to the log file is %s.\n"
+msgstr ""
+
+#: cli/cli-logging.c:79
+#, possible-c-format
+msgid "The logging output mode is %s.\n"
+msgstr ""
+
+#: cli/cli-logging.c:106
+msgid "set logging"
+msgstr ""
+
+#: cli/cli-logging.c:175
+msgid "Set logging options."
+msgstr ""
+
+#: cli/cli-logging.c:178
+msgid "Show logging options."
+msgstr ""
+
+#: cli/cli-logging.c:180
+msgid "Set whether logging overwrites or appends to the log file."
+msgstr ""
+
+#: cli/cli-logging.c:181
+msgid "Show whether logging overwrites or appends to the log file."
+msgstr ""
+
+#: cli/cli-logging.c:182
+msgid "If set, logging overrides the log file."
+msgstr ""
+
+#: cli/cli-logging.c:187
+msgid "Set the logging output mode."
+msgstr ""
+
+#: cli/cli-logging.c:188
+msgid "Show the logging output mode."
+msgstr ""
+
+#: cli/cli-logging.c:189
+msgid ""
+"If redirect is off, output will go to both the screen and the log file.\n"
+"If redirect is on, output will go only to the log file."
+msgstr ""
+
+#: cli/cli-logging.c:196
+msgid "Set the logging debug output mode."
+msgstr ""
+
+#: cli/cli-logging.c:197
+msgid "Show the logging debug output mode."
+msgstr ""
+
+#: cli/cli-logging.c:198
+msgid ""
+"If debug redirect is off, debug will go to both the screen and the log "
+"file.\n"
+"If debug redirect is on, debug will go only to the log file."
+msgstr ""
+
+#: cli/cli-logging.c:204
+msgid "Set the current logfile."
+msgstr ""
+
+#: cli/cli-logging.c:205
+msgid "Show the current logfile."
+msgstr ""
+
+#: cli/cli-logging.c:206
+msgid "The logfile is used when directing GDB's output."
+msgstr ""
+
+#: cli/cli-logging.c:212
+msgid "Enable logging."
+msgstr ""
+
+#: cli/cli-logging.c:214
+msgid "Disable logging."
+msgstr ""
+
+#: cli/cli-option.c:192 cli/cli-option.c:238
+#, possible-c-format
+msgid "Unrecognized option at: %s"
+msgstr ""
+
+#: cli/cli-option.c:222
+#, possible-c-format
+msgid "Ambiguous option at: -%s"
+msgstr ""
+
+#: cli/cli-option.c:316
+#, possible-c-format
+msgid "Value given for `-%s' is not a boolean: %.*s"
+msgstr ""
+
+#. Treat e.g., "maint test-options -string --" as if there
+#. was no argument after "-string".
+#: cli/cli-option.c:433 cli/cli-option.c:439
+#, possible-c-format
+msgid "-%s requires an argument"
+msgstr ""
+
+#. Not yet.
+#: cli/cli-option.c:448
+msgid "option type not supported"
+msgstr ""
+
+#: cli/cli-option.c:828
+msgid "option type not handled"
+msgstr ""
+
 #: cli/cli-script.c:157
 msgid "if command requires an argument."
 msgstr ""
@@ -6598,88 +6702,86 @@ msgstr ""
 msgid "Error reading in canned sequence of commands."
 msgstr ""
 
-#: cli/cli-script.c:409
+#: cli/cli-script.c:405
 msgid "Error executing canned sequence of commands."
 msgstr ""
 
-#: cli/cli-script.c:465
+#: cli/cli-script.c:461
 msgid "Max user call depth exceeded -- command aborted."
 msgstr ""
 
-#: cli/cli-script.c:690
+#: cli/cli-script.c:691
 msgid "Invalid control type in canned commands structure."
 msgstr ""
 
-#: cli/cli-script.c:878
+#: cli/cli-script.c:879
 #, possible-c-format
 msgid "Missing argument %ld in user function."
 msgstr ""
 
-#: cli/cli-script.c:906
+#: cli/cli-script.c:907
 msgid "Control nesting too deep!"
 msgstr ""
 
-#: cli/cli-script.c:1089
+#: cli/cli-script.c:1090
 msgid "Recursed on a simple control type."
 msgstr ""
 
-#: cli/cli-script.c:1315
+#: cli/cli-script.c:1316
 msgid "name of command to define"
 msgstr ""
 
-#: cli/cli-script.c:1336
+#: cli/cli-script.c:1337
 #, possible-c-format
 msgid "\"%s\" is not a prefix command."
 msgstr ""
 
-#: cli/cli-script.c:1346
+#: cli/cli-script.c:1347
 #, possible-c-format
 msgid "Junk in argument list: \"%s\""
 msgstr ""
 
-#: cli/cli-script.c:1405
+#: cli/cli-script.c:1406
 #, possible-c-format
 msgid ""
 "Keeping subcommands of prefix command \"%s\".\n"
 "Redefine command \"%s\"? "
 msgstr ""
 
-#: cli/cli-script.c:1408
+#: cli/cli-script.c:1409
 #, possible-c-format
 msgid "Redefine command \"%s\"? "
 msgstr ""
 
-#: cli/cli-script.c:1411
+#: cli/cli-script.c:1412
 #, possible-c-format
 msgid "Really redefine built-in command \"%s\"? "
 msgstr ""
 
-#: cli/cli-script.c:1413
+#: cli/cli-script.c:1414
 #, possible-c-format
 msgid "Command \"%s\" not redefined."
 msgstr ""
 
-#: cli/cli-script.c:1440
+#: cli/cli-script.c:1441
 #, possible-c-format
 msgid "Your new `%s' command does not hook any existing command."
 msgstr ""
 
-#: cli/cli-script.c:1443
+#: cli/cli-script.c:1444
 msgid "Proceed? "
 msgstr ""
 
 #. Should never come here as hookc would be 0.
-#: 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
-#: mips-tdep.c:509 mips-tdep.c:2235 mips-tdep.c:5762 mips-tdep.c:6927
-#: mn10300-tdep.c:127 reggroups.c:274 remote.c:2116 remote.c:8663
-#: remote.c:9949 utils.c:380 utils.c:408
+#: cli/cli-script.c:1500 hppa-tdep.c:3127 hppa-tdep.c:3140 infcall.c:1012
+#: infcmd.c:1468 language.c:431 mi/mi-out.c:227 mi/mi-out.c:247 mips-tdep.c:305
+#: mips-tdep.c:509 mips-tdep.c:2235 mips-tdep.c:5762 mips-tdep.c:6907
+#: mn10300-tdep.c:127 reggroups.c:274 remote.c:2129 remote.c:8810
+#: remote.c:10073 utils.c:381 utils.c:409
 msgid "bad switch"
 msgstr ""
 
-#: cli/cli-script.c:1524 cli/cli-script.c:1575
+#: cli/cli-script.c:1525 cli/cli-script.c:1575
 #, possible-c-format
 msgid "Command \"%s\" is built-in."
 msgstr ""
@@ -6698,14 +6800,14 @@ msgstr ""
 #. "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
+#: cli/cli-script.c:1679
 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:1683
+#: cli/cli-script.c:1684
 msgid ""
 "Define a new command name.  Command name is argument.\n"
 "Definition appears on following lines, one command per line.\n"
@@ -6716,7 +6818,7 @@ msgid ""
 "been passed."
 msgstr ""
 
-#: cli/cli-script.c:1693
+#: cli/cli-script.c:1694
 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"
@@ -6724,7 +6826,7 @@ msgid ""
 "If the command already exists, it is changed to a prefix command."
 msgstr ""
 
-#: cli/cli-script.c:1700
+#: cli/cli-script.c:1701
 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"
@@ -6732,7 +6834,7 @@ msgid ""
 "and should be terminated by the word `end'."
 msgstr ""
 
-#: cli/cli-script.c:1706
+#: cli/cli-script.c:1707
 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"
@@ -6741,143 +6843,62 @@ msgid ""
 "is used, the same rules apply to its nested commands as to the first ones."
 msgstr ""
 
-#: cli/cli-logging.c:33
-#, possible-c-format
-msgid "The current logfile is \"%ps\".\n"
+#: cli/cli-setshow.c:74
+msgid "\"on\", \"off\" or \"auto\" expected."
 msgstr ""
 
-#: cli/cli-logging.c:43
+#: cli/cli-setshow.c:176
 #, possible-c-format
-msgid ""
-"Currently logging to %s.  Turn the logging off and on to make the new "
-"setting effective."
+msgid "Junk after \"%.*s\": %s"
 msgstr ""
 
-#: cli/cli-logging.c:59
-#, possible-c-format
-msgid "Whether logging overwrites or appends to the log file is %s.\n"
+#: cli/cli-setshow.c:197 cli/cli-setshow.c:230 cli/cli-setshow.c:460
+msgid "integer to set it to, or \"unlimited\"."
 msgstr ""
 
-#: cli/cli-logging.c:79
-#, possible-c-format
-msgid "The logging output mode is %s.\n"
+#: cli/cli-setshow.c:199 cli/cli-setshow.c:462
+msgid "integer to set it to."
 msgstr ""
 
-#: cli/cli-logging.c:106
-msgid "set logging"
+#: cli/cli-setshow.c:217 cli/cli-setshow.c:240 cli/cli-setshow.c:478
+#, possible-c-format
+msgid "integer %s out of range"
 msgstr ""
 
-#: cli/cli-logging.c:171
-msgid ""
-"\"set logging\" lets you log output to a file.\n"
-"Usage: set logging on [FILENAME]\n"
-"       set logging off\n"
-"       set logging file FILENAME\n"
-"       set logging overwrite [on|off]\n"
-"       set logging redirect [on|off]\n"
+#: cli/cli-setshow.c:242
+msgid "only -1 is allowed to set as unlimited"
 msgstr ""
 
-#: cli/cli-logging.c:183
+#: cli/cli-setshow.c:264
 #, possible-c-format
-msgid "Currently logging to \"%s\".\n"
+msgid "Requires an argument. Valid arguments are %s."
 msgstr ""
 
-#: cli/cli-logging.c:186
+#: cli/cli-setshow.c:290
 #, possible-c-format
-msgid "Future logs will be written to %s.\n"
-msgstr ""
-
-#: cli/cli-logging.c:190
-msgid "Logs will overwrite the log file.\n"
-msgstr ""
-
-#: cli/cli-logging.c:192
-msgid "Logs will be appended to the log file.\n"
-msgstr ""
-
-#: cli/cli-logging.c:195
-msgid "Output will be sent only to the log file.\n"
-msgstr ""
-
-#: cli/cli-logging.c:197
-msgid "Output will be logged and displayed.\n"
-msgstr ""
-
-#: cli/cli-logging.c:200
-msgid "Debug output will be sent only to the log file.\n"
-msgstr ""
-
-#: cli/cli-logging.c:202
-msgid "Debug output will be logged and displayed.\n"
-msgstr ""
-
-#: cli/cli-logging.c:211
-msgid "Set logging options."
-msgstr ""
-
-#: cli/cli-logging.c:214
-msgid "Show logging options."
-msgstr ""
-
-#: cli/cli-logging.c:216
-msgid "Set whether logging overwrites or appends to the log file."
-msgstr ""
-
-#: cli/cli-logging.c:217
-msgid "Show whether logging overwrites or appends to the log file."
-msgstr ""
-
-#: cli/cli-logging.c:218
-msgid "If set, logging overrides the log file."
-msgstr ""
-
-#: cli/cli-logging.c:223
-msgid "Set the logging output mode."
-msgstr ""
-
-#: cli/cli-logging.c:224
-msgid "Show the logging output mode."
-msgstr ""
-
-#: cli/cli-logging.c:225
-msgid ""
-"If redirect is off, output will go to both the screen and the log file.\n"
-"If redirect is on, output will go only to the log file."
-msgstr ""
-
-#: cli/cli-logging.c:232
-msgid "Set the logging debug output mode."
-msgstr ""
-
-#: cli/cli-logging.c:233
-msgid "Show the logging debug output mode."
-msgstr ""
-
-#: cli/cli-logging.c:234
-msgid ""
-"If debug redirect is off, debug will go to both the screen and the log "
-"file.\n"
-"If debug redirect is on, debug will go only to the log file."
+msgid "Undefined item: \"%.*s\"."
 msgstr ""
 
-#: cli/cli-logging.c:240
-msgid "Set the current logfile."
+#: cli/cli-setshow.c:293
+#, possible-c-format
+msgid "Ambiguous item \"%.*s\"."
 msgstr ""
 
-#: cli/cli-logging.c:241
-msgid "Show the current logfile."
+#: cli/cli-setshow.c:379
+msgid "filename to set it to."
 msgstr ""
 
-#: cli/cli-logging.c:242
-msgid "The logfile is used when directing GDB's output."
+#: cli/cli-setshow.c:418
+msgid "\"on\" or \"off\" expected."
 msgstr ""
 
-#: cli/cli-logging.c:248
-msgid "Enable logging."
+#: cli/cli-setshow.c:496
+#, possible-c-format
+msgid "Junk after item \"%.*s\": %s"
 msgstr ""
 
-#: cli/cli-logging.c:250
-msgid "Disable logging."
+#: cli/cli-setshow.c:518
+msgid "gdb internal error: bad var_type in do_setshow_command"
 msgstr ""
 
 #: cli/cli-style.c:177
@@ -6906,110 +6927,107 @@ msgstr ""
 msgid "display intensity"
 msgstr ""
 
-#: cli/cli-style.c:235
+#: cli/cli-style.c:231
 msgid "Set the foreground color for this property."
 msgstr ""
 
-#: cli/cli-style.c:236
+#: cli/cli-style.c:232
 msgid "Show the foreground color for this property."
 msgstr ""
 
-#: cli/cli-style.c:243
+#: cli/cli-style.c:239
 msgid "Set the background color for this property."
 msgstr ""
 
-#: cli/cli-style.c:244
+#: cli/cli-style.c:240
 msgid "Show the background color for this property."
 msgstr ""
 
-#: cli/cli-style.c:252
+#: cli/cli-style.c:248
 msgid "Set the display intensity for this property."
 msgstr ""
 
-#: cli/cli-style.c:253
+#: cli/cli-style.c:249
 msgid "Show the display intensity for this property."
 msgstr ""
 
-#: cli/cli-style.c:266
-msgid "\"set style\" must be followed by an appropriate subcommand.\n"
-msgstr ""
-
-#: cli/cli-style.c:289
+#: cli/cli-style.c:271
 msgid "CLI output styling is enabled.\n"
 msgstr ""
 
-#: cli/cli-style.c:291
+#: cli/cli-style.c:273
 msgid "CLI output styling is disabled.\n"
 msgstr ""
 
-#: cli/cli-style.c:299
+#: cli/cli-style.c:281
 msgid "Source code styling is enabled.\n"
 msgstr ""
 
-#: cli/cli-style.c:301
+#: cli/cli-style.c:283
 msgid "Source code styling is disabled.\n"
 msgstr ""
 
-#: cli/cli-style.c:319 cli/cli-style.c:323
+#: cli/cli-style.c:290 cli/cli-style.c:294
 msgid ""
 "Style-specific settings.\n"
 "Configure various style-related variables, such as colors"
 msgstr ""
 
-#: cli/cli-style.c:328
+#: cli/cli-style.c:299
 msgid "Set whether CLI styling is enabled."
 msgstr ""
 
-#: cli/cli-style.c:329
+#: cli/cli-style.c:300
 msgid "Show whether CLI is enabled."
 msgstr ""
 
-#: cli/cli-style.c:330
+#: cli/cli-style.c:301
 msgid "If enabled, output to the terminal is styled."
 msgstr ""
 
-#: cli/cli-style.c:335
+#: cli/cli-style.c:306
 msgid "Set whether source code styling is enabled."
 msgstr ""
 
-#: cli/cli-style.c:336
+#: cli/cli-style.c:307
 msgid "Show whether source code styling is enabled."
 msgstr ""
 
-#: cli/cli-style.c:337
+#: cli/cli-style.c:308
 msgid ""
 "If enabled, source code is styled.\n"
 "Note that source styling only works if styling in general is enabled,\n"
-"see \"show style enabled\".Source highlighting is disabled in this "
+"see \"show style enabled\".Source highlighting may be disabled in this "
 "installation of gdb, because\n"
-"it was not linked against GNU Source Highlight."
+"it was not linked against GNU Source Highlight.  However, it might still be\n"
+"available if the appropriate extension is available at runtime."
 msgstr ""
 
-#: cli/cli-style.c:370
+#: cli/cli-style.c:321
 msgid ""
 "Filename display styling.\n"
 "Configure filename colors and display intensity."
 msgstr ""
 
-#: cli/cli-style.c:375
+#: cli/cli-style.c:327
 msgid ""
 "Function name display styling.\n"
 "Configure function name colors and display intensity"
 msgstr ""
 
-#: cli/cli-style.c:380
+#: cli/cli-style.c:333
 msgid ""
 "Variable name display styling.\n"
 "Configure variable name colors and display intensity"
 msgstr ""
 
-#: cli/cli-style.c:385
+#: cli/cli-style.c:339
 msgid ""
 "Address display styling.\n"
 "Configure address colors and display intensity"
 msgstr ""
 
-#: cli/cli-style.c:390
+#: cli/cli-style.c:345
 msgid ""
 "Title display styling.\n"
 "Configure title colors and display intensity\n"
@@ -7018,7 +7036,7 @@ msgid ""
 "readability."
 msgstr ""
 
-#: cli/cli-style.c:397
+#: cli/cli-style.c:353
 msgid ""
 "Highlight display styling.\n"
 "Configure highlight colors and display intensity\n"
@@ -7026,7 +7044,7 @@ msgid ""
 "of their output."
 msgstr ""
 
-#: cli/cli-style.c:404
+#: cli/cli-style.c:361
 msgid ""
 "Metadata display styling.\n"
 "Configure metadata colors and display intensity\n"
@@ -7034,7 +7052,7 @@ msgid ""
 "your data, for example \"<unavailable>\""
 msgstr ""
 
-#: cli/cli-style.c:411
+#: cli/cli-style.c:369
 msgid ""
 "TUI border display styling.\n"
 "Configure TUI border colors\n"
@@ -7042,7 +7060,7 @@ msgid ""
 "TUI window that does not have the focus."
 msgstr ""
 
-#: cli/cli-style.c:418
+#: cli/cli-style.c:377
 msgid ""
 "TUI active border display styling.\n"
 "Configure TUI active border colors\n"
@@ -7153,35 +7171,35 @@ msgstr ""
 msgid "Wrong value of export RVA for dll \"%s\": 0x%lx instead of 0x%lx\n"
 msgstr ""
 
-#: coff-pe-read.c:529
+#: coff-pe-read.c:535
 #, possible-c-format
 msgid "DLL \"%s\" has %ld export entries, base=%ld\n"
 msgstr ""
 
-#: coff-pe-read.c:602
+#: coff-pe-read.c:608
 #, possible-c-format
 msgid "Export name \"%s\" ord. %lu, RVA 0x%lx in dll \"%s\" not handled\n"
 msgstr ""
 
-#: coff-pe-read.c:609
+#: coff-pe-read.c:615
 #, possible-c-format
 msgid "Finished reading \"%s\", exports %ld, forwards %ld, total %ld/%ld.\n"
 msgstr ""
 
-#: coff-pe-read.c:683
+#: coff-pe-read.c:689
 #, possible-c-format
 msgid "Coff PE read debugging is %s.\n"
 msgstr ""
 
-#: coff-pe-read.c:693
+#: coff-pe-read.c:700
 msgid "Set coff PE read debugging."
 msgstr ""
 
-#: coff-pe-read.c:694
+#: coff-pe-read.c:701
 msgid "Show coff PE read debugging."
 msgstr ""
 
-#: coff-pe-read.c:695
+#: coff-pe-read.c:702
 msgid ""
 "When set, debugging messages for coff reading of exported symbols are "
 "displayed."
@@ -7236,107 +7254,149 @@ msgid "`.ef' symbol %d has no aux entry"
 msgstr ""
 
 #. We attempted to pop an empty context stack.
-#: coffread.c:1134
+#: coffread.c:1132
 #, possible-c-format
 msgid ""
 "`.eb' symbol without matching `.bb' symbol ignored starting at symnum %d"
 msgstr ""
 
-#: coffread.c:1143 xcoffread.c:197
+#: coffread.c:1141 xcoffread.c:198
 #, possible-c-format
 msgid "Mismatched .eb symbol ignored starting at symnum %d"
 msgstr ""
 
-#: coffread.c:1209 coffread.c:1216 coffread.c:1226
+#: coffread.c:1205 coffread.c:1212 coffread.c:1222
 #, possible-c-format
 msgid "%s: error reading symbols"
 msgstr ""
 
-#: coffread.c:1240
+#: coffread.c:1236
 #, c-format
 msgid "thumb symbol %s, class 0x%x\n"
 msgstr ""
 
-#: coffread.c:1349
+#: coffread.c:1345
 msgid "coff file name too long"
 msgstr ""
 
-#: coffread.c:1417
+#: coffread.c:1413
 #, possible-c-format
 msgid "Line number pointer %ld lower than start of line numbers"
 msgstr ""
 
-#: coffread.c:1812
+#: coffread.c:1800
 #, possible-c-format
 msgid "Symbol table entry for %s has bad tagndx value"
 msgstr ""
 
-#: coffread.c:1969
+#: coffread.c:1957
 #, possible-c-format
 msgid "Unexpected type for symbol %s"
 msgstr ""
 
-#: compile/compile-loc2c.c:99
-msgid "inconsistent stack depths"
+#: compile/compile-c-support.c:56
+#, possible-c-format
+msgid "Invalid GCC mode size %d."
 msgstr ""
 
-#: compile/compile-loc2c.c:362 compile/compile-loc2c.c:1108
+#: compile/compile-c-support.c:87
 #, possible-c-format
-msgid "unhandled DWARF op: %s"
+msgid "could not find symbol %s in library %s"
+msgstr ""
+
+#: compile/compile-c-support.c:118
+msgid ""
+"The loaded version of GCC does not support the required version of the API."
+msgstr ""
+
+#: compile/compile-c-support.c:355 compile/compile-c-support.c:379
+#: compile/compile-c-support.c:480
+msgid "Unknown compiler scope reached."
 msgstr ""
 
-#: compile/compile-loc2c.c:623 compile/compile-c-symbols.c:153
-#: compile/compile-cplus-symbols.c:147
+#: compile/compile-c-symbols.c:114 compile/compile-cplus-symbols.c:108
 #, possible-c-format
-msgid "Symbol \"%s\" cannot be used because there is no selected frame"
+msgid "Unsupported LOC_CONST_BYTES for symbol \"%s\"."
+msgstr ""
+
+#: compile/compile-c-symbols.c:118 compile/compile-cplus-symbols.c:112
+#, possible-c-format
+msgid "LOC_UNDEF found for \"%s\"."
 msgstr ""
 
-#: compile/compile-loc2c.c:629 compile/compile-c-symbols.c:160
-#: compile/compile-cplus-symbols.c:154
+#: compile/compile-c-symbols.c:122 compile/compile-cplus-symbols.c:116
 #, possible-c-format
 msgid ""
-"Symbol \"%s\" cannot be used for compilation evaluation as its address has "
-"not been found."
+"Fortran common block is unsupported for compilation evaluaton of symbol \"%s"
+"\"."
+msgstr ""
+
+#: compile/compile-c-symbols.c:127 compile/compile-cplus-symbols.c:121
+#, possible-c-format
+msgid ""
+"Symbol \"%s\" cannot be used for compilation evaluation as it is optimized "
+"out."
 msgstr ""
 
 #. Probably TLS here.
-#: compile/compile-loc2c.c:633 compile/compile-c-symbols.c:135
-#: compile/compile-cplus-symbols.c:129
+#: compile/compile-c-symbols.c:135 compile/compile-cplus-symbols.c:129
+#: compile/compile-loc2c.c:635
 #, possible-c-format
 msgid ""
 "Symbol \"%s\" is thread-local and currently can only be referenced from the "
 "current thread in compiled code."
 msgstr ""
 
-#: compile/compile-loc2c.c:876 dwarf2loc.c:3126
-msgid "No block found for address"
+#: compile/compile-c-symbols.c:153 compile/compile-cplus-symbols.c:147
+#: compile/compile-loc2c.c:625
+#, possible-c-format
+msgid "Symbol \"%s\" cannot be used because there is no selected frame"
 msgstr ""
 
-#: compile/compile-loc2c.c:881 dwarf2loc.c:3131
-msgid "No function found for block"
+#: compile/compile-c-symbols.c:160 compile/compile-cplus-symbols.c:154
+#: compile/compile-loc2c.c:631
+#, possible-c-format
+msgid ""
+"Symbol \"%s\" cannot be used for compilation evaluation as its address has "
+"not been found."
 msgstr ""
 
-#: compile/compile-loc2c.c:958 dwarf2loc.c:3188
-#, possible-c-format
-msgid "Unsupported size %d in %s"
+#: compile/compile-c-symbols.c:587
+msgid "Local symbol unhandled when generating C code."
 msgstr ""
 
-#: compile/compile-cplus-types.c:182
-msgid "malformed TYPE_NAME during parsing"
+#: compile/compile-c-symbols.c:590
+msgid "LOC_COMPUTED variable missing a method."
 msgstr ""
 
-#: compile/compile-cplus-types.c:461 compile/compile-c-types.c:48
+#: compile/compile-c-types.c:48 compile/compile-cplus-types.c:461
 msgid "array type with non-constant lower bound is not supported"
 msgstr ""
 
-#: compile/compile-cplus-types.c:469 compile/compile-c-types.c:51
+#: compile/compile-c-types.c:51 compile/compile-cplus-types.c:469
 msgid "cannot convert array type with non-zero lower bound to C"
 msgstr ""
 
-#: compile/compile-cplus-types.c:480 compile/compile-c-types.c:60
+#: compile/compile-c-types.c:60 compile/compile-cplus-types.c:480
 msgid "variably-sized vector type is not supported"
 msgstr ""
 
+#: compile/compile-c-types.c:171 compile/compile-cplus-types.c:981
+msgid "function has unknown return type; assuming int"
+msgstr ""
+
+#: compile/compile-c-types.c:329
+msgid "variable has unknown type; assuming int"
+msgstr ""
+
+#: compile/compile-c-types.c:334
+msgid "cannot convert gdb type to gcc type"
+msgstr ""
+
+#: compile/compile-cplus-types.c:182
+msgid "malformed TYPE_NAME during parsing"
+msgstr ""
+
 #. This can happen if we have a DW_AT_declaration DIE
 #. for the method, but no "definition"-type DIE (with
 #. DW_AT_specification referencing the decl DIE), i.e.,
@@ -7352,255 +7412,59 @@ msgid ""
 "All references to this method will be undefined."
 msgstr ""
 
-#: compile/compile-cplus-types.c:981 compile/compile-c-types.c:171
-msgid "function has unknown return type; assuming int"
-msgstr ""
-
 #: compile/compile-cplus-types.c:1200
 #, possible-c-format
 msgid "unhandled TYPE_CODE %d"
 msgstr ""
 
-#: compile/compile-cplus-types.c:1411
+#: compile/compile-cplus-types.c:1412
 msgid "Set debugging of C++ compile type conversion."
 msgstr ""
 
-#: compile/compile-cplus-types.c:1412
+#: compile/compile-cplus-types.c:1413
 msgid "Show debugging of C++ compile type conversion."
 msgstr ""
 
-#: compile/compile-cplus-types.c:1413
+#: compile/compile-cplus-types.c:1414
 msgid ""
 "When enabled debugging messages are printed during C++ type conversion for\n"
 "the compile commands."
 msgstr ""
 
-#: compile/compile-cplus-types.c:1422
+#: compile/compile-cplus-types.c:1423
 msgid "Set debugging of C++ compile scopes."
 msgstr ""
 
-#: compile/compile-cplus-types.c:1423
+#: compile/compile-cplus-types.c:1424
 msgid "Show debugging of C++ compile scopes."
 msgstr ""
 
-#: compile/compile-cplus-types.c:1424
+#: compile/compile-cplus-types.c:1425
 msgid ""
 "When enabled debugging messages are printed about definition scopes during\n"
 "C++ type conversion for the compile commands."
 msgstr ""
 
-#: compile/compile.c:176
-msgid "Unexpected type id from GCC, check you use recent enough GCC."
-msgstr ""
-
-#: compile/compile.c:225 utils.c:622
-#, possible-c-format
-msgid "%s"
-msgstr ""
-
-#: compile/compile.c:234
-#, possible-c-format
-msgid "Compile debugging is %s.\n"
-msgstr ""
-
-#: compile/compile.c:255
-msgid "Suppress automatic 'void _gdb_expr () { CODE }' wrapping."
-msgstr ""
-
-#: compile/compile.c:295
-msgid "You must provide a filename for this command."
-msgstr ""
-
-#: compile/compile.c:428
-#, possible-c-format
-msgid "Could not remove temporary directory %s"
-msgstr ""
-
-#: compile/compile.c:450
-msgid "Could not make temporary directory"
-msgstr ""
-
-#: compile/compile.c:531
-#, possible-c-format
-msgid "Compile command command-line arguments are \"%s\".\n"
-msgstr ""
-
-#: compile/compile.c:560
-#, possible-c-format
-msgid "Compile command GCC driver filename is \"%s\".\n"
-msgstr ""
-
-#: compile/compile.c:687
-msgid "The program must be running for the compile command to work."
-msgstr ""
-
-#: compile/compile.c:695
-#, possible-c-format
-msgid "No compiler support for language %s."
-msgstr ""
-
-#: compile/compile.c:726
-msgid "Neither a simple expression, or a multi-line specified."
-msgstr ""
-
-#: compile/compile.c:739
-msgid ""
-"Command 'set compile-gcc' requires GCC version 6 or higher (libcc1 interface "
-"version 1 or higher)"
-msgstr ""
-
-#: compile/compile.c:782
-msgid "Could not open source file for writing"
-msgstr ""
-
-#: compile/compile.c:787
-msgid "Could not write to source file"
-msgstr ""
-
-#: compile/compile.c:798
-msgid "Compilation failed."
-msgstr ""
-
-#: compile/compile.c:867
-#, possible-c-format
-msgid "Invalid register name \"%s\"."
-msgstr ""
-
-#: compile/compile.c:874
-#, possible-c-format
-msgid "Cannot find gdbarch register \"%s\"."
-msgstr ""
-
-#: compile/compile.c:966
-msgid "Command to compile source code and inject it into the inferior."
-msgstr ""
-
-#: compile/compile.c:974
-msgid ""
-"Compile, inject, and execute code.\n"
-"\n"
-"Usage: compile code [OPTION]... [CODE]\n"
-"\n"
-"Options:\n"
-"%OPTIONS%\n"
-"\n"
-"The source code may be specified as a simple one line expression, e.g.:\n"
-"\n"
-"    compile code printf(\"Hello world\\n\");\n"
-"\n"
-"Alternatively, you can type a multiline expression by invoking\n"
-"this command with no argument.  GDB will then prompt for the\n"
-"expression interactively; type a line containing \"end\" to\n"
-"indicate the end of the expression."
-msgstr ""
-
-#: compile/compile.c:998
-msgid ""
-"Evaluate a file containing source code.\n"
-"\n"
-"Usage: compile file [OPTION].. [FILENAME]\n"
-"\n"
-"Options:\n"
-"%OPTIONS%"
-msgstr ""
-
-#: compile/compile.c:1015
-msgid ""
-"Evaluate EXPR by using the compiler and print result.\n"
-"\n"
-"Usage: compile print [[OPTION]... --] [/FMT] [EXPR]\n"
-"\n"
-"Options:\n"
-"%OPTIONS%\n"
-"\n"
-"Note: because this command accepts arbitrary expressions, if you\n"
-"specify any command option, you must use a double dash (\"--\")\n"
-"to mark the end of option processing.  E.g.: \"compile print -o -- myobj\".\n"
-"\n"
-"The expression may be specified on the same line as the command, e.g.:\n"
-"\n"
-"    compile print i\n"
-"\n"
-"Alternatively, you can type a multiline expression by invoking\n"
-"this command with no argument.  GDB will then prompt for the\n"
-"expression interactively; type a line containing \"end\" to\n"
-"indicate the end of the expression.\n"
-"\n"
-"EXPR may be preceded with /FMT, where FMT is a format letter\n"
-"but no count or size letter (see \"x\" command)."
-msgstr ""
-
-#: compile/compile.c:1045
-msgid "Set compile command debugging."
-msgstr ""
-
-#: compile/compile.c:1046
-msgid "Show compile command debugging."
-msgstr ""
-
-#: compile/compile.c:1047
-msgid "When on, compile command debugging is enabled."
-msgstr ""
-
-#: compile/compile.c:1054
-msgid "Set compile command GCC command-line arguments."
-msgstr ""
-
-#: compile/compile.c:1055
-msgid "Show compile command GCC command-line arguments."
-msgstr ""
-
-#: compile/compile.c:1056
-msgid ""
-"Use options like -I (include file directory) or ABI settings.\n"
-"String quoting is parsed like in shell, for example:\n"
-"  -mno-align-double \"-I/dir with a space/include\""
-msgstr ""
-
-#: compile/compile.c:1082
-msgid "Set compile command GCC driver filename."
-msgstr ""
-
-#: compile/compile.c:1084
-msgid "Show compile command GCC driver filename."
-msgstr ""
-
-#: compile/compile.c:1086
-msgid ""
-"It should be absolute filename of the gcc executable.\n"
-"If empty the default target triplet will be searched in $PATH."
+#: compile/compile-loc2c.c:100
+msgid "inconsistent stack depths"
 msgstr ""
 
-#: compile/compile-c-symbols.c:114 compile/compile-cplus-symbols.c:108
+#: compile/compile-loc2c.c:363 compile/compile-loc2c.c:1110
 #, possible-c-format
-msgid "Unsupported LOC_CONST_BYTES for symbol \"%s\"."
+msgid "unhandled DWARF op: %s"
 msgstr ""
 
-#: compile/compile-c-symbols.c:118 compile/compile-cplus-symbols.c:112
-#, possible-c-format
-msgid "LOC_UNDEF found for \"%s\"."
+#: compile/compile-loc2c.c:878 dwarf2/loc.c:3283
+msgid "No block found for address"
 msgstr ""
 
-#: compile/compile-c-symbols.c:122 compile/compile-cplus-symbols.c:116
-#, possible-c-format
-msgid ""
-"Fortran common block is unsupported for compilation evaluaton of symbol \"%s"
-"\"."
+#: compile/compile-loc2c.c:883 dwarf2/loc.c:3288
+msgid "No function found for block"
 msgstr ""
 
-#: compile/compile-c-symbols.c:127 compile/compile-cplus-symbols.c:121
+#: compile/compile-loc2c.c:960 dwarf2/loc.c:3346
 #, possible-c-format
-msgid ""
-"Symbol \"%s\" cannot be used for compilation evaluation as it is optimized "
-"out."
-msgstr ""
-
-#: compile/compile-c-symbols.c:587
-msgid "Local symbol unhandled when generating C code."
-msgstr ""
-
-#: compile/compile-c-symbols.c:590
-msgid "LOC_COMPUTED variable missing a method."
+msgid "Unsupported size %d in %s"
 msgstr ""
 
 #: compile/compile-object-load.c:146
@@ -7648,162 +7512,316 @@ msgstr ""
 #: compile/compile-object-load.c:371
 #, possible-c-format
 msgid ""
-"Cannot write compiled module \"%s\" section \"%s\" to inferior memory range %"
-"s-%s."
+"Cannot write compiled module \"%s\" section \"%s\" to inferior memory range "
+"%s-%s."
 msgstr ""
 
-#: compile/compile-object-load.c:442 compile/compile-object-load.c:451
+#: compile/compile-object-load.c:443 compile/compile-object-load.c:452
 #, possible-c-format
 msgid "No \"%s\" symbol found"
 msgstr ""
 
-#: compile/compile-object-load.c:455
+#: compile/compile-object-load.c:456
 #, possible-c-format
 msgid "Type of \"%s\" is not a pointer"
 msgstr ""
 
-#: compile/compile-object-load.c:461
+#: compile/compile-object-load.c:462
 #, possible-c-format
 msgid "Expected address scope in compiled module \"%s\"."
 msgstr ""
 
-#: compile/compile-object-load.c:467 compile/compile-object-load.c:481
+#: compile/compile-object-load.c:468 compile/compile-object-load.c:482
 #, possible-c-format
 msgid "Invalid type code %d of symbol \"%s\" in compiled module \"%s\"."
 msgstr ""
 
-#: compile/compile-object-load.c:488
+#: compile/compile-object-load.c:489
 #, possible-c-format
 msgid ""
 "Referenced types do not match for symbols \"%s\" and \"%s\" in compiled "
 "module \"%s\"."
 msgstr ""
 
-#: compile/compile-object-load.c:512
+#: compile/compile-object-load.c:513
 #, possible-c-format
 msgid ""
 "Invalid type code %d of first parameter of function \"%s\" in compiled "
 "module \"%s\"."
 msgstr ""
 
-#: compile/compile-object-load.c:519
+#: compile/compile-object-load.c:520
 #, possible-c-format
 msgid ""
 "Invalid type code %d of dereferenced first parameter of function \"%s\" in "
 "compiled module \"%s\"."
 msgstr ""
 
-#: compile/compile-object-load.c:553
+#: compile/compile-object-load.c:554
 #, possible-c-format
 msgid "Invalid register \"%s\" position %s bits or size %s bits"
 msgstr ""
 
-#: compile/compile-object-load.c:559
+#: compile/compile-object-load.c:560
 #, possible-c-format
 msgid "Invalid register \"%s\" type code %d"
 msgstr ""
 
-#: compile/compile-object-load.c:566
+#: compile/compile-object-load.c:567
 #, possible-c-format
 msgid "Register \"%s\" is optimized out."
 msgstr ""
 
-#: compile/compile-object-load.c:568
+#: compile/compile-object-load.c:569
 #, possible-c-format
 msgid "Register \"%s\" is not available."
 msgstr ""
 
-#: compile/compile-object-load.c:573
+#: compile/compile-object-load.c:574
 #, possible-c-format
 msgid "Cannot write register \"%s\" to inferior memory at %s."
 msgstr ""
 
-#: compile/compile-object-load.c:608
+#: compile/compile-object-load.c:609
 #, possible-c-format
 msgid "\"%s\": could not open as compiled module: %s"
 msgstr ""
 
-#: compile/compile-object-load.c:612
+#: compile/compile-object-load.c:613
 #, possible-c-format
 msgid "\"%s\": not in loadable format: %s"
 msgstr ""
 
-#: compile/compile-object-load.c:617
+#: compile/compile-object-load.c:618
 #, possible-c-format
 msgid "\"%s\": not in object format."
 msgstr ""
 
-#: compile/compile-object-load.c:630
+#: compile/compile-object-load.c:631
 #, possible-c-format
 msgid "Cannot read symbols of compiled module \"%s\": %s"
 msgstr ""
 
-#: compile/compile-object-load.c:645
+#: compile/compile-object-load.c:646
 #, possible-c-format
 msgid "Cannot find function \"%s\" in compiled module \"%s\"."
 msgstr ""
 
-#: compile/compile-object-load.c:649
+#: compile/compile-object-load.c:650
 #, possible-c-format
 msgid "Invalid type code %d of function \"%s\" in compiled module \"%s\"."
 msgstr ""
 
-#: compile/compile-object-load.c:670
+#: compile/compile-object-load.c:671
 #, possible-c-format
 msgid "invalid scope %d"
 msgstr ""
 
-#: compile/compile-object-load.c:673
+#: compile/compile-object-load.c:674
 #, possible-c-format
 msgid "Invalid %d parameters of function \"%s\" in compiled module \"%s\"."
 msgstr ""
 
-#: compile/compile-object-load.c:678
+#: compile/compile-object-load.c:679
 #, possible-c-format
 msgid "Invalid return type of function \"%s\" in compiled module \"%s\"."
 msgstr ""
 
-#: compile/compile-object-load.c:689
+#: compile/compile-object-load.c:690
 #, possible-c-format
 msgid "Cannot parse symbols of compiled module \"%s\": %s"
 msgstr ""
 
-#: compile/compile-object-load.c:739
+#: compile/compile-object-load.c:740
 #, possible-c-format
 msgid "Could not find symbol \"%s\" for compiled module \"%s\"."
 msgstr ""
 
-#: compile/compile-object-load.c:746
+#: compile/compile-object-load.c:747
 #, possible-c-format
 msgid "%ld symbols were missing, cannot continue."
 msgstr ""
 
-#: compile/compile-c-support.c:56
+#: compile/compile.c:176
+msgid "Unexpected type id from GCC, check you use recent enough GCC."
+msgstr ""
+
+#: compile/compile.c:225 utils.c:609
 #, possible-c-format
-msgid "Invalid GCC mode size %d."
+msgid "%s"
 msgstr ""
 
-#: compile/compile-c-support.c:87
+#: compile/compile.c:234
 #, possible-c-format
-msgid "could not find symbol %s in library %s"
+msgid "Compile debugging is %s.\n"
 msgstr ""
 
-#: compile/compile-c-support.c:118
+#: compile/compile.c:255
+msgid "Suppress automatic 'void _gdb_expr () { CODE }' wrapping."
+msgstr ""
+
+#: compile/compile.c:295
+msgid "You must provide a filename for this command."
+msgstr ""
+
+#: compile/compile.c:428
+#, possible-c-format
+msgid "Could not remove temporary directory %s"
+msgstr ""
+
+#: compile/compile.c:450
+msgid "Could not make temporary directory"
+msgstr ""
+
+#: compile/compile.c:531
+#, possible-c-format
+msgid "Compile command command-line arguments are \"%s\".\n"
+msgstr ""
+
+#: compile/compile.c:560
+#, possible-c-format
+msgid "Compile command GCC driver filename is \"%s\".\n"
+msgstr ""
+
+#: compile/compile.c:687
+msgid "The program must be running for the compile command to work."
+msgstr ""
+
+#: compile/compile.c:697
+#, possible-c-format
+msgid "No compiler support for language %s."
+msgstr ""
+
+#: compile/compile.c:724
+msgid "Neither a simple expression, or a multi-line specified."
+msgstr ""
+
+#: compile/compile.c:737
 msgid ""
-"The loaded version of GCC does not support the required version of the API."
+"Command 'set compile-gcc' requires GCC version 6 or higher (libcc1 interface "
+"version 1 or higher)"
 msgstr ""
 
-#: compile/compile-c-support.c:355 compile/compile-c-support.c:379
-#: compile/compile-c-support.c:480
-msgid "Unknown compiler scope reached."
+#: compile/compile.c:780
+msgid "Could not open source file for writing"
 msgstr ""
 
-#: compile/compile-c-types.c:329
-msgid "variable has unknown type; assuming int"
+#: compile/compile.c:785
+msgid "Could not write to source file"
 msgstr ""
 
-#: compile/compile-c-types.c:334
-msgid "cannot convert gdb type to gcc type"
+#: compile/compile.c:796
+msgid "Compilation failed."
+msgstr ""
+
+#: compile/compile.c:865
+#, possible-c-format
+msgid "Invalid register name \"%s\"."
+msgstr ""
+
+#: compile/compile.c:872
+#, possible-c-format
+msgid "Cannot find gdbarch register \"%s\"."
+msgstr ""
+
+#: compile/compile.c:965
+msgid "Command to compile source code and inject it into the inferior."
+msgstr ""
+
+#: compile/compile.c:973
+msgid ""
+"Compile, inject, and execute code.\n"
+"\n"
+"Usage: compile code [OPTION]... [CODE]\n"
+"\n"
+"Options:\n"
+"%OPTIONS%\n"
+"\n"
+"The source code may be specified as a simple one line expression, e.g.:\n"
+"\n"
+"    compile code printf(\"Hello world\\n\");\n"
+"\n"
+"Alternatively, you can type a multiline expression by invoking\n"
+"this command with no argument.  GDB will then prompt for the\n"
+"expression interactively; type a line containing \"end\" to\n"
+"indicate the end of the expression."
+msgstr ""
+
+#: compile/compile.c:997
+msgid ""
+"Evaluate a file containing source code.\n"
+"\n"
+"Usage: compile file [OPTION].. [FILENAME]\n"
+"\n"
+"Options:\n"
+"%OPTIONS%"
+msgstr ""
+
+#: compile/compile.c:1014
+msgid ""
+"Evaluate EXPR by using the compiler and print result.\n"
+"\n"
+"Usage: compile print [[OPTION]... --] [/FMT] [EXPR]\n"
+"\n"
+"Options:\n"
+"%OPTIONS%\n"
+"\n"
+"Note: because this command accepts arbitrary expressions, if you\n"
+"specify any command option, you must use a double dash (\"--\")\n"
+"to mark the end of option processing.  E.g.: \"compile print -o -- myobj\".\n"
+"\n"
+"The expression may be specified on the same line as the command, e.g.:\n"
+"\n"
+"    compile print i\n"
+"\n"
+"Alternatively, you can type a multiline expression by invoking\n"
+"this command with no argument.  GDB will then prompt for the\n"
+"expression interactively; type a line containing \"end\" to\n"
+"indicate the end of the expression.\n"
+"\n"
+"EXPR may be preceded with /FMT, where FMT is a format letter\n"
+"but no count or size letter (see \"x\" command)."
+msgstr ""
+
+#: compile/compile.c:1044
+msgid "Set compile command debugging."
+msgstr ""
+
+#: compile/compile.c:1045
+msgid "Show compile command debugging."
+msgstr ""
+
+#: compile/compile.c:1046
+msgid "When on, compile command debugging is enabled."
+msgstr ""
+
+#: compile/compile.c:1053
+msgid "Set compile command GCC command-line arguments."
+msgstr ""
+
+#: compile/compile.c:1054
+msgid "Show compile command GCC command-line arguments."
+msgstr ""
+
+#: compile/compile.c:1055
+msgid ""
+"Use options like -I (include file directory) or ABI settings.\n"
+"String quoting is parsed like in shell, for example:\n"
+"  -mno-align-double \"-I/dir with a space/include\""
+msgstr ""
+
+#: compile/compile.c:1081
+msgid "Set compile command GCC driver filename."
+msgstr ""
+
+#: compile/compile.c:1083
+msgid "Show compile command GCC driver filename."
+msgstr ""
+
+#: compile/compile.c:1085
+msgid ""
+"It should be absolute filename of the gcc executable.\n"
+"If empty the default target triplet will be searched in $PATH."
 msgstr ""
 
 #: complaints.c:52
@@ -7815,31 +7833,31 @@ msgstr ""
 msgid "Max number of complaints about incorrect symbols is %s.\n"
 msgstr ""
 
-#: complaints.c:81
+#: complaints.c:82
 msgid "Set max number of complaints about incorrect symbols."
 msgstr ""
 
-#: complaints.c:82
+#: complaints.c:83
 msgid "Show max number of complaints about incorrect symbols."
 msgstr ""
 
-#: completer.c:1593
+#: completer.c:1685
 msgid "Max completions reached."
 msgstr ""
 
-#: completer.c:2361
+#: completer.c:2520
 msgid "*** List may be truncated, max-completions reached. ***"
 msgstr ""
 
-#: completer.c:2942
+#: completer.c:3102
 msgid "Set maximum number of completion candidates."
 msgstr ""
 
-#: completer.c:2943
+#: completer.c:3103
 msgid "Show maximum number of completion candidates."
 msgstr ""
 
-#: completer.c:2944
+#: completer.c:3104
 msgid ""
 "Use this to limit the number of candidates considered\n"
 "during completion.  Specifying \"unlimited\" or -1\n"
@@ -7847,11 +7865,11 @@ msgid ""
 "a very large limit can make completion slow."
 msgstr ""
 
-#: copying.c:647 copying.c:655
+#: copying.c:648 copying.c:656
 msgid "Conditions for redistributing copies of GDB."
 msgstr ""
 
-#: copying.c:650 copying.c:657
+#: copying.c:651 copying.c:658
 msgid "Various kinds of warranty you do not have."
 msgstr ""
 
@@ -7871,22 +7889,22 @@ msgstr ""
 
 #. Actually, address between memaddr and memaddr + len was out of
 #. bounds.
-#: corefile.c:167
+#: corefile.c:166
 #, possible-c-format
 msgid "Cannot access memory at address %s"
 msgstr ""
 
-#: corefile.c:170
+#: corefile.c:169
 #, possible-c-format
 msgid "Memory at address %s unavailable."
 msgstr ""
 
-#: corefile.c:429
+#: corefile.c:401
 #, possible-c-format
 msgid "The current BFD target is \"%s\".\n"
 msgstr ""
 
-#: corefile.c:487
+#: corefile.c:459
 msgid ""
 "Use FILE as core dump for examining memory and registers.\n"
 "Usage: core-file FILE\n"
@@ -7894,52 +7912,72 @@ msgid ""
 "`target core' and `detach' commands."
 msgstr ""
 
-#: corefile.c:496
+#: corefile.c:468
 msgid "Set the current BFD target."
 msgstr ""
 
-#: corefile.c:497
+#: corefile.c:469
 msgid "Show the current BFD target."
 msgstr ""
 
-#: corefile.c:498
+#: corefile.c:470
 msgid "Use `set gnutarget auto' to specify automatic detection."
 msgstr ""
 
-#: corelow.c:59
+#: corelow.c:61
 msgid "Local core dump file"
 msgstr ""
 
-#: corelow.c:60
+#: corelow.c:62
 msgid ""
 "Use a core file as a target.\n"
 "Specify the filename of the core file."
 msgstr ""
 
-#: corelow.c:147 record-full.c:932
+#: corelow.c:161
+#, possible-c-format
+msgid "\"%s\": Core file format not supported"
+msgstr ""
+
+#: corelow.c:168 record-full.c:933
 #, possible-c-format
 msgid "\"%s\": Can't find sections: %s"
 msgstr ""
 
-#: corelow.c:220
+#: corelow.c:236
 #, possible-c-format
-msgid "\"%s\": ambiguous core format, %d handlers match"
+msgid "Can't open file %s during file-backed mapping note processing"
 msgstr ""
 
-#: corelow.c:224
+#. If we get here, there's a good chance that it's due to
+#. an internal error.  We issue a warning instead of an
+#. internal error because of the possibility that the
+#. file was removed in between checking for its
+#. existence during the expansion in exec_file_find()
+#. and the calls to bfd_openr() / bfd_check_format().
+#. Output both the path from the core file note along
+#. with its expansion to make debugging this problem
+#. easier.
+#: corelow.c:257
 #, possible-c-format
-msgid "\"%s\": no core file handler recognizes format"
+msgid ""
+"Can't open file %s which was expanded to %s during file-backed mapping note "
+"processing"
+msgstr ""
+
+#: corelow.c:274
+msgid "Can't make section"
 msgstr ""
 
-#: corelow.c:331
+#: corelow.c:371
 msgid "No core file now.\n"
 msgstr ""
 
-#: corelow.c:390
+#: corelow.c:430
 msgid "No core file specified.  (Use `detach' to stop debugging a core file.)"
 msgstr ""
 
-#: corelow.c:393
+#: corelow.c:433
 msgid "No core file specified."
 msgstr ""
 
@@ -7947,49 +7985,65 @@ msgstr ""
 #. FIXME: should be checking for errors from bfd_close (for one
 #. thing, on error it does not free all the storage associated
 #. with the bfd).
-#: corelow.c:423
+#: corelow.c:461
 #, possible-c-format
 msgid "\"%s\" is not a core dump: %s"
 msgstr ""
 
-#: corelow.c:502
+#: corelow.c:539
 #, possible-c-format
 msgid "Core was generated by `%s'.\n"
 msgstr ""
 
-#: corelow.c:524
+#: corelow.c:561
 #, possible-c-format
-msgid "Program terminated with signal %s, %s.\n"
+msgid "Program terminated with signal %s, %s"
 msgstr ""
 
-#: corelow.c:607
+#: corelow.c:565 tracepoint.c:1861
+msgid ".\n"
+msgstr ""
+
+#: corelow.c:645
 #, possible-c-format
 msgid "Couldn't find %s registers in core file."
 msgstr ""
 
-#: corelow.c:615
+#: corelow.c:653
 #, possible-c-format
 msgid "Section `%s' in core file too small."
 msgstr ""
 
-#: corelow.c:621
+#: corelow.c:659
 #, possible-c-format
 msgid "Unexpected size of section `%s' in core file."
 msgstr ""
 
-#: corelow.c:629
+#: corelow.c:667
 #, possible-c-format
 msgid "Couldn't read %s registers from `%s' section in core file."
 msgstr ""
 
-#: corelow.c:777
+#: corelow.c:884
 msgid "Couldn't read NT_AUXV note in core file."
 msgstr ""
 
-#: corelow.c:812
+#: corelow.c:919
 msgid "Couldn't read StackGhost cookie in core file."
 msgstr ""
 
+#. No output for summary mode.
+#: corelow.c:1121 fbsd-tdep.c:1133 linux-tdep.c:839 linux-tdep.c:1172
+#: nbsd-tdep.c:528 procfs.c:3287
+msgid ""
+"Mapped address spaces:\n"
+"\n"
+msgstr ""
+
+#: corelow.c:1190
+msgid "Print core file's file-backed mappings."
+msgstr ""
+
 #: cp-abi.c:39
 msgid "ABI doesn't define required function is_constructor_name"
 msgstr ""
@@ -8034,11 +8088,11 @@ msgstr ""
 msgid "GDB cannot find the type name from a std::type_info on this target"
 msgstr ""
 
-#: cp-abi.c:253
+#: cp-abi.c:255
 msgid "Too many C++ ABIs, please increase CP_ABI_MAX in cp-abi.c"
 msgstr ""
 
-#: cp-abi.c:271
+#: cp-abi.c:273
 #, possible-c-format
 msgid "Cannot find C++ ABI \"%s\" to set it as auto default."
 msgstr ""
@@ -8048,13 +8102,13 @@ msgstr ""
 msgid "Could not find \"%s\" in ABI list"
 msgstr ""
 
-#: cp-abi.c:400
+#: cp-abi.c:401
 msgid ""
 "Set the ABI used for inspecting C++ objects.\n"
 "\"set cp-abi\" with no arguments will list the available ABIs."
 msgstr ""
 
-#: cp-abi.c:407
+#: cp-abi.c:408
 msgid "Show the ABI used for inspecting C++ objects."
 msgstr ""
 
@@ -8088,21 +8142,21 @@ msgstr ""
 msgid "The `maint namespace' command was removed.\n"
 msgstr ""
 
-#: cp-namespace.c:1071
+#: cp-namespace.c:1072
 msgid "Deprecated placeholder for removed functionality."
 msgstr ""
 
-#: cp-support.c:576
+#: cp-support.c:645
 #, possible-c-format
 msgid "internal error: string \"%s\" failed to be canonicalized"
 msgstr ""
 
-#: cp-support.c:1442
+#: cp-support.c:1509
 #, possible-c-format
 msgid "RTTI symbol not found for class '%s'"
 msgstr ""
 
-#: cp-support.c:1448
+#: cp-support.c:1515
 #, possible-c-format
 msgid "RTTI symbol for class '%s' is not a type"
 msgstr ""
@@ -8111,48 +8165,44 @@ 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:1463
+#: cp-support.c:1530
 #, possible-c-format
 msgid "RTTI symbol for class '%s' is a namespace"
 msgstr ""
 
-#: cp-support.c:1466
+#: cp-support.c:1533
 #, possible-c-format
 msgid "RTTI symbol for class '%s' has bad type"
 msgstr ""
 
-#: cp-support.c:1515
+#: cp-support.c:1582
 #, possible-c-format
 msgid "unable to demangle '%s' (demangler failed with signal %d)"
 msgstr ""
 
-#: cp-support.c:1529
+#: cp-support.c:1596
 #, possible-c-format
 msgid ""
 "%s\n"
 "Attempting to dump core.\n"
 msgstr ""
 
-#: cp-support.c:2031
+#: cp-support.c:2088
 #, possible-c-format
 msgid ""
 "%s:%d: make-paramless self-test failed: (completion=%d) \"%s\" -> %s, "
 "expected %s"
 msgstr ""
 
-#: cp-support.c:2126
-msgid "\"maintenance cplus\" must be followed by the name of a command.\n"
-msgstr ""
-
-#: cp-support.c:2171
+#: cp-support.c:2216
 msgid "C++ maintenance commands."
 msgstr ""
 
-#: cp-support.c:2182
+#: cp-support.c:2227
 msgid "Print the first class/namespace component of NAME."
 msgstr ""
 
-#: cp-support.c:2186
+#: cp-support.c:2231
 msgid ""
 "Show the virtual function table for a C++ object.\n"
 "Usage: info vtbl EXPRESSION\n"
@@ -8160,98 +8210,98 @@ msgid ""
 "resulting object."
 msgstr ""
 
-#: cp-support.c:2193
+#: cp-support.c:2238
 msgid "Set whether to attempt to catch demangler crashes."
 msgstr ""
 
-#: cp-support.c:2194
+#: cp-support.c:2239
 msgid "Show whether to attempt to catch demangler crashes."
 msgstr ""
 
-#: cp-support.c:2195
+#: cp-support.c:2240
 msgid ""
 "If enabled GDB will attempt to catch demangler crashes and\n"
 "display the offending symbol."
 msgstr ""
 
-#: cp-valprint.c:281 p-valprint.c:634 valprint.c:351
+#: cp-valprint.c:277 p-valprint.c:617 valprint.c:353
 msgid "<synthetic pointer>"
 msgstr ""
 
-#: cp-valprint.c:641 cp-valprint.c:673 p-valprint.c:868
+#: cp-valprint.c:581 cp-valprint.c:609 p-valprint.c:842
 msgid "<same as static member of an already seen type>"
 msgstr ""
 
-#: cris-tdep.c:283 i386-linux-tdep.c:315
+#: cris-tdep.c:284 i386-gnu-tdep.c:123 i386-linux-tdep.c:316
 msgid "Couldn't recognize signal trampoline."
 msgstr ""
 
 #. Invalid (unimplemented) register.  Should not happen as there are
 #. no unimplemented CRISv32 registers.
-#: cris-tdep.c:1595
+#: cris-tdep.c:1596
 #, possible-c-format
 msgid "crisv32_register_type: unknown regno %d"
 msgstr ""
 
-#: cris-tdep.c:1629
+#: cris-tdep.c:1630
 msgid "cris_store_return_value: type length too large."
 msgstr ""
 
-#: cris-tdep.c:1797
+#: cris-tdep.c:1798
 msgid "cris_extract_return_value: type length too large"
 msgstr ""
 
 #. Could not find a target.  Things are likely to go downhill
 #. from here.
-#: cris-tdep.c:2040
+#: cris-tdep.c:2041
 msgid "CRIS software single step could not find a step target."
 msgstr ""
 
-#: cris-tdep.c:3807
+#: cris-tdep.c:3775
 msgid "wrong size gregset struct in core file"
 msgstr ""
 
-#: cris-tdep.c:3840
+#: cris-tdep.c:3826
 msgid "Set the current CRIS version."
 msgstr ""
 
-#: cris-tdep.c:3841
+#: cris-tdep.c:3827
 msgid "Show the current CRIS version."
 msgstr ""
 
-#: cris-tdep.c:3842
+#: cris-tdep.c:3828
 msgid ""
 "Set to 10 for CRISv10 or 32 for CRISv32 if autodetection fails.\n"
 "Defaults to 10. "
 msgstr ""
 
-#: cris-tdep.c:3852
+#: cris-tdep.c:3838
 msgid "Set the current CRIS mode."
 msgstr ""
 
-#: cris-tdep.c:3853
+#: cris-tdep.c:3839
 msgid "Show the current CRIS mode."
 msgstr ""
 
-#: cris-tdep.c:3854
+#: cris-tdep.c:3840
 msgid ""
 "Set to CRIS_MODE_GURU when debugging in guru mode.\n"
 "Makes GDB use the NRP register instead of the ERP register in certain cases."
 msgstr ""
 
-#: cris-tdep.c:3863
+#: cris-tdep.c:3849
 msgid "Set the usage of Dwarf-2 CFI for CRIS."
 msgstr ""
 
-#: cris-tdep.c:3864
+#: cris-tdep.c:3850
 msgid "Show the usage of Dwarf-2 CFI for CRIS."
 msgstr ""
 
-#: cris-tdep.c:3865
+#: cris-tdep.c:3851
 msgid "Set this to \"off\" if using gcc-cris < R59."
 msgstr ""
 
-#: cris-tdep.c:3903 cris-tdep.c:3929
+#: cris-tdep.c:3887 cris-tdep.c:3913
 msgid "cris_gdbarch_update: failed to update architecture."
 msgstr ""
 
@@ -8260,201 +8310,201 @@ msgstr ""
 msgid "Invalid breakpoint address 0x%x is an odd number."
 msgstr ""
 
-#: csky-tdep.c:2253
+#: csky-tdep.c:2254
 msgid "Set C-Sky debugging."
 msgstr ""
 
-#: csky-tdep.c:2254
+#: csky-tdep.c:2255
 msgid "Show C-Sky debugging."
 msgstr ""
 
-#: csky-tdep.c:2255
+#: csky-tdep.c:2256
 msgid "When on, C-Sky specific debugging is enabled."
 msgstr ""
 
-#: ctfread.c:208
+#: ctfread.c:242
 #, possible-c-format
 msgid "An internal GDB problem: ctf_ id_t %ld type already set"
 msgstr ""
 
-#: ctfread.c:342
+#: ctfread.c:376
 #, possible-c-format
 msgid "ctf_add_member_cb: %s has NO type (%ld)"
 msgstr ""
 
-#: ctfread.c:473
+#: ctfread.c:507
 #, possible-c-format
 msgid "ctf_type_encoding read_base_type failed - %s"
 msgstr ""
 
-#: ctfread.c:483
+#: ctfread.c:517
 #, possible-c-format
 msgid "ctf_type_aname read_base_type failed - %s"
 msgstr ""
 
-#: ctfread.c:530
+#: ctfread.c:564
 #, possible-c-format
 msgid "read_base_type: unsupported base kind (%d)"
 msgstr ""
 
-#: ctfread.c:594
+#: ctfread.c:628
 #, possible-c-format
 msgid "ctf_member_iter process_struct_members failed - %s"
 msgstr ""
 
-#: ctfread.c:675
+#: ctfread.c:709
 #, possible-c-format
 msgid "ctf_enum_iter process_enum_type failed - %s"
 msgstr ""
 
-#: ctfread.c:726
+#: ctfread.c:760
 #, possible-c-format
 msgid "ctf_array_info read_array_type failed - %s"
 msgstr ""
 
-#: ctfread.c:769
+#: ctfread.c:803
 #, possible-c-format
 msgid "read_const_type: NULL base type (%ld)"
 msgstr ""
 
-#: ctfread.c:793
+#: ctfread.c:827
 #, possible-c-format
 msgid "read_volatile_type: NULL base type (%ld)"
 msgstr ""
 
-#: ctfread.c:819
+#: ctfread.c:853
 #, possible-c-format
 msgid "read_restrict_type: NULL base type (%ld)"
 msgstr ""
 
-#: ctfread.c:864
+#: ctfread.c:898
 #, possible-c-format
 msgid "read_pointer_type: NULL target type (%ld)"
 msgstr ""
 
-#: ctfread.c:1040
+#: ctfread.c:1074
 #, possible-c-format
 msgid "ctf_add_var_cb: %s has NO type (%ld)"
 msgstr ""
 
-#: ctfread.c:1052
+#: ctfread.c:1086
 #, possible-c-format
 msgid "ctf_add_var_cb: kind unsupported (%d)"
 msgstr ""
 
-#: ctfread.c:1210
+#: ctfread.c:1233
 #, possible-c-format
 msgid "ctf_type_iter psymtab_to_symtab failed - %s"
 msgstr ""
 
-#: ctfread.c:1216
+#: ctfread.c:1239
 #, possible-c-format
 msgid "ctf_variable_iter psymtab_to_symtab failed - %s"
 msgstr ""
 
-#: ctfread.c:1246 dwarf2read.c:9513
+#: ctfread.c:1269
 #, possible-c-format
 msgid "bug: psymtab for %s is already read in."
 msgstr ""
 
-#: ctfread.c:1251
+#: ctfread.c:1274
 #, possible-c-format
 msgid "Reading in CTF data for %s..."
 msgstr ""
 
-#: ctfread.c:1270 dwarf2read.c:9544 mdebugread.c:295
+#: ctfread.c:1293
 msgid "done.\n"
 msgstr ""
 
-#: ctfread.c:1405
+#: ctfread.c:1416
 #, possible-c-format
 msgid "ctf_type_iter scan_partial_symbols failed - %s"
 msgstr ""
 
-#: ctfread.c:1409
+#: ctfread.c:1420
 #, possible-c-format
 msgid "ctf_variable_iter scan_partial_symbols failed - %s"
 msgstr ""
 
-#: ctfread.c:1469
+#: ctfread.c:1480
 #, possible-c-format
 msgid "ctf_bfdopen failed on %s - %s"
 msgstr ""
 
-#: ctfread.c:1474
+#: ctfread.c:1485
 #, possible-c-format
 msgid "ctf_arc_open_by_name failed on %s - %s"
 msgstr ""
 
-#: c-typeprint.c:470
+#: c-typeprint.c:472
 msgid "type not handled in c_type_print_varspec_prefix()"
 msgstr ""
 
-#: c-typeprint.c:846
+#: c-typeprint.c:851
 msgid "type not handled in c_type_print_varspec_suffix()"
 msgstr ""
 
-#: c-typeprint.c:883
+#: c-typeprint.c:888
 #, possible-c-format
 msgid "[with %s = "
 msgstr ""
 
-#: c-typeprint.c:897
+#: c-typeprint.c:902
 msgid "] "
 msgstr ""
 
-#: c-typeprint.c:1118 c-typeprint.c:1628
+#: c-typeprint.c:1123 c-typeprint.c:1634
 #, possible-c-format
 msgid "%p[<incomplete type>%p]\n"
 msgstr ""
 
-#: c-typeprint.c:1122 c-typeprint.c:1632
+#: c-typeprint.c:1127 c-typeprint.c:1638
 #, possible-c-format
 msgid "%p[<no data fields>%p]\n"
 msgstr ""
 
-#: c-typeprint.c:1281
+#: c-typeprint.c:1286
 #, possible-c-format
 msgid "%p[<undefined type>%p] %s;\n"
 msgstr ""
 
-#: c-typeprint.c:1331
+#: c-typeprint.c:1336
 #, possible-c-format
 msgid "<badly mangled name '%s'>"
 msgstr ""
 
-#: c-typeprint.c:1470 m2-typeprint.c:85
+#: c-typeprint.c:1475 m2-typeprint.c:85
 msgid "<type unknown>"
 msgstr ""
 
-#: c-typeprint.c:1517
+#: c-typeprint.c:1522
 msgid "<unnamed typedef>"
 msgstr ""
 
-#: c-typeprint.c:1667
+#: c-typeprint.c:1673
 msgid "struct <unknown>"
 msgstr ""
 
 #. This should not occur.
-#: c-typeprint.c:1676
+#: c-typeprint.c:1682
 msgid "<range type>"
 msgstr ""
 
-#: c-typeprint.c:1699
+#: c-typeprint.c:1705
 #, possible-c-format
 msgid "<invalid type code %d>"
 msgstr ""
 
-#: c-valprint.c:253 valprint.c:441
+#: c-valprint.c:251 valprint.c:442
 msgid "Could not determine the array high bound"
 msgstr ""
 
-#: c-valprint.c:321
+#: c-valprint.c:308
 #, possible-c-format
 msgid "%d vtable entries"
 msgstr ""
 
-#: c-valprint.c:672
+#: c-valprint.c:602
 msgid " [incomplete object]"
 msgstr ""
 
@@ -8467,214 +8517,214 @@ msgstr ""
 msgid "<anonymous union>"
 msgstr ""
 
-#: darwin-nat.c:176
+#: darwin-nat.c:172
 #, possible-c-format
 msgid "[%d inferior]: "
 msgstr ""
 
-#: darwin-nat.c:188
+#: darwin-nat.c:184
 msgid "[UNKNOWN]"
 msgstr ""
 
-#: darwin-nat.c:190
+#: darwin-nat.c:186
 #, possible-c-format
 msgid "Mach error at \"%s:%u\" in function \"%s\": %s (0x%lx)"
 msgstr ""
 
-#: darwin-nat.c:222
+#: darwin-nat.c:218
 #, c-format
 msgid "unknown (%d)"
 msgstr ""
 
-#: darwin-nat.c:247
+#: darwin-nat.c:243
 #, possible-c-format
 msgid "ptrace (%s, %d, 0x%lx, %d): %d (%s)\n"
 msgstr ""
 
-#: darwin-nat.c:249
+#: darwin-nat.c:245
 msgid "no error"
 msgstr ""
 
-#: darwin-nat.c:325
+#: darwin-nat.c:321
 #, possible-c-format
 msgid " new_ix:%d/%d, old_ix:%d/%d, new_id:0x%x old_id:0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:485
+#: darwin-nat.c:462
 msgid "message header:\n"
 msgstr ""
 
-#: darwin-nat.c:486
+#: darwin-nat.c:463
 #, possible-c-format
 msgid " bits: 0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:487
+#: darwin-nat.c:464
 #, possible-c-format
 msgid " size: 0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:488
+#: darwin-nat.c:465
 #, possible-c-format
 msgid " remote-port: 0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:489
+#: darwin-nat.c:466
 #, possible-c-format
 msgid " local-port: 0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:490
+#: darwin-nat.c:467
 #, possible-c-format
 msgid " reserved: 0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:491
+#: darwin-nat.c:468
 #, possible-c-format
 msgid " id: 0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:510
+#: darwin-nat.c:487
 #, possible-c-format
 msgid "body: descriptor_count=%u\n"
 msgstr ""
 
-#: darwin-nat.c:519
+#: darwin-nat.c:496
 #, possible-c-format
 msgid " descr %d: type=%u (port) name=0x%x, dispo=%d\n"
 msgstr ""
 
-#: darwin-nat.c:523
+#: darwin-nat.c:500
 #, possible-c-format
 msgid " descr %d: type=%u\n"
 msgstr ""
 
-#: darwin-nat.c:533
+#: darwin-nat.c:510
 #, possible-c-format
 msgid "NDR: mig=%02x if=%02x encod=%02x int=%02x char=%02x float=%02x\n"
 msgstr ""
 
-#: darwin-nat.c:541
+#: darwin-nat.c:518
 msgid "  data:"
 msgstr ""
 
-#: darwin-nat.c:694
+#: darwin-nat.c:671
 #, possible-c-format
 msgid "darwin_decode_exception_message: unknown task 0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:842
+#: darwin-nat.c:819
 #, possible-c-format
 msgid "darwin_resume_thread: state=%d, thread=0x%x, step=%d nsignal=%d\n"
 msgstr ""
 
-#: darwin-nat.c:855
+#: darwin-nat.c:832
 #, possible-c-format
 msgid "ptrace THUP: res=%d\n"
 msgstr ""
 
-#: darwin-nat.c:862
+#: darwin-nat.c:839
 #, possible-c-format
 msgid "darwin_resume_thread: kill 0x%x %d: %d\n"
 msgstr ""
 
 #. Set or reset single step.
-#: darwin-nat.c:868
+#: darwin-nat.c:845
 #, possible-c-format
 msgid "darwin_set_sstep (thread=0x%x, enable=%d)\n"
 msgstr ""
 
-#: darwin-nat.c:951
+#: darwin-nat.c:911
 #, possible-c-format
 msgid "darwin_resume: pid=%d, tid=0x%lx, step=%d, signal=%d\n"
 msgstr ""
 
-#: darwin-nat.c:1025
+#: darwin-nat.c:983
 #, possible-c-format
 msgid "darwin_wait: ill-formatted message (id=0x%x)\n"
 msgstr ""
 
-#: darwin-nat.c:1045
+#: darwin-nat.c:1003
 #, possible-c-format
 msgid "darwin_wait: thread=0x%x, got %s\n"
 msgstr ""
 
-#: darwin-nat.c:1068
+#: darwin-nat.c:1026
 #, possible-c-format
 msgid "  (signal %d: %s)\n"
 msgstr ""
 
-#: darwin-nat.c:1109
+#: darwin-nat.c:1067
 #, possible-c-format
 msgid "darwin_wait: ill-formatted message (id=0x%x, res=%d)\n"
 msgstr ""
 
-#: darwin-nat.c:1134
+#: darwin-nat.c:1092
 #, possible-c-format
 msgid "wait4: res=%d: %s\n"
 msgstr ""
 
-#: darwin-nat.c:1150
+#: darwin-nat.c:1108
 #, possible-c-format
 msgid "darwin_wait: pid=%d exit, status=0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:1161
+#: darwin-nat.c:1118
 #, possible-c-format
 msgid "darwin_wait: pid=%d\n"
 msgstr ""
 
 #. Unknown message.
-#: darwin-nat.c:1170
+#: darwin-nat.c:1127
 #, possible-c-format
 msgid "darwin: got unknown message, id: 0x%x"
 msgstr ""
 
-#: darwin-nat.c:1220
+#: darwin-nat.c:1176
 #, possible-c-format
 msgid "darwin_wait: waiting for a message pid=%d thread=%lx\n"
 msgstr ""
 
-#: darwin-nat.c:1256
+#: darwin-nat.c:1212
 #, possible-c-format
 msgid "mach_msg: ret=0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:1293
+#: darwin-nat.c:1254
 #, possible-c-format
 msgid "darwin_wait: mach_msg(pending) ret=0x%x\n"
 msgstr ""
 
-#: darwin-nat.c:1315
+#: darwin-nat.c:1277
 #, possible-c-format
 msgid "darwin_wait: thread 0x%x hit a non-gdb breakpoint\n"
 msgstr ""
 
-#: darwin-nat.c:1319
+#: darwin-nat.c:1281
 msgid "darwin_wait: unhandled pending message\n"
 msgstr ""
 
-#: darwin-nat.c:1437
+#: darwin-nat.c:1399
 #, possible-c-format
 msgid "cannot kill: %s"
 msgstr ""
 
-#: darwin-nat.c:1507
+#: darwin-nat.c:1469
 #, possible-c-format
 msgid "Unable to save exception ports, task_get_exception_portsreturned: %d"
 msgstr ""
 
-#: darwin-nat.c:1519
+#: darwin-nat.c:1481
 #, possible-c-format
 msgid "Unable to set exception ports, task_set_exception_portsreturned: %d"
 msgstr ""
 
-#: darwin-nat.c:1570
+#: darwin-nat.c:1532
 #, possible-c-format
 msgid "Failed to kill inferior: kill (%d, 9) returned [%s]"
 msgstr ""
 
-#: darwin-nat.c:1589
+#: darwin-nat.c:1551
 #, possible-c-format
 msgid ""
 "Termination notification request failed, mach_port_request_notification\n"
@@ -8684,95 +8734,95 @@ msgstr ""
 #. This is unexpected, as there should not be any previously
 #. registered notification request.  But this is not a fatal
 #. issue, so just emit a warning.
-#: darwin-nat.c:1598
+#: darwin-nat.c:1560
 msgid ""
 "A task termination request was registered before the debugger registered\n"
 "its own.  This is unexpected, but should otherwise not have any actual\n"
 "impact on the debugging session."
 msgstr ""
 
-#: darwin-nat.c:1627
+#: darwin-nat.c:1589
 #, possible-c-format
 msgid ""
 "Unable to find Mach task port for process-id %d: %s (0x%lx).\n"
 " (please check gdb is codesigned - see taskgated(8))"
 msgstr ""
 
-#: darwin-nat.c:1632
+#: darwin-nat.c:1594
 #, possible-c-format
 msgid "inferior task: 0x%x, pid: %d\n"
 msgstr ""
 
-#: darwin-nat.c:1641
+#: darwin-nat.c:1603
 #, possible-c-format
 msgid "Unable to create exception port, mach_port_allocate returned: %d"
 msgstr ""
 
-#: darwin-nat.c:1649
+#: darwin-nat.c:1611
 #, possible-c-format
 msgid "Unable to create exception port, mach_port_insert_right returned: %d"
 msgstr ""
 
-#: darwin-nat.c:1657
+#: darwin-nat.c:1619
 #, possible-c-format
 msgid "Unable to create port set, mach_port_allocate returned: %d"
 msgstr ""
 
-#: darwin-nat.c:1664
+#: darwin-nat.c:1626
 #, possible-c-format
 msgid ""
 "Unable to move exception port into new port set, mach_port_move_member\n"
 "returned: %d"
 msgstr ""
 
-#: darwin-nat.c:1674
+#: darwin-nat.c:1636
 #, possible-c-format
 msgid "Unable to create notification port, mach_port_allocate returned: %d"
 msgstr ""
 
-#: darwin-nat.c:1681
+#: darwin-nat.c:1643
 #, possible-c-format
 msgid ""
 "Unable to move notification port into new port set, mach_port_move_member\n"
 "returned: %d"
 msgstr ""
 
-#: darwin-nat.c:1753
+#: darwin-nat.c:1715
 #, possible-c-format
 msgid "unable to read from pipe, read returned: %d"
 msgstr ""
 
-#: darwin-nat.c:1779
+#: darwin-nat.c:1741
 #, possible-c-format
 msgid "unable to create a pipe: %s"
 msgstr ""
 
-#: darwin-nat.c:1867
+#: darwin-nat.c:1829
 #, possible-c-format
 msgid "Could not open shell (%s) for reading: %s"
 msgstr ""
 
-#: darwin-nat.c:1872
+#: darwin-nat.c:1834
 #, possible-c-format
 msgid "Could not make cache directory \"%s\": %s"
 msgstr ""
 
-#: darwin-nat.c:1880
+#: darwin-nat.c:1842
 #, possible-c-format
 msgid "Could not open temporary file \"%s\" for writing: %s"
 msgstr ""
 
-#: darwin-nat.c:1885
+#: darwin-nat.c:1847
 #, possible-c-format
 msgid "Could not copy shell to cache as \"%s\": %s"
 msgstr ""
 
-#: darwin-nat.c:1891
+#: darwin-nat.c:1853
 #, possible-c-format
 msgid "Could not rename shell cache file to \"%s\": %s"
 msgstr ""
 
-#: darwin-nat.c:1920
+#: darwin-nat.c:1882
 #, possible-c-format
 msgid ""
 "This version of macOS has System Integrity Protection.\n"
@@ -8780,7 +8830,7 @@ msgid ""
 "but because your shell (%s) is not an absolute path, this is being skipped."
 msgstr ""
 
-#: darwin-nat.c:1930
+#: darwin-nat.c:1892
 #, possible-c-format
 msgid ""
 "This version of macOS has System Integrity Protection.\n"
@@ -8789,7 +8839,7 @@ msgid ""
 "The error was: %s"
 msgstr ""
 
-#: darwin-nat.c:1956
+#: darwin-nat.c:1918
 #, possible-c-format
 msgid ""
 "This version of macOS has System Integrity Protection.\n"
@@ -8801,7 +8851,7 @@ msgid ""
 "    set startup-with-shell off"
 msgstr ""
 
-#: darwin-nat.c:1967
+#: darwin-nat.c:1929
 #, possible-c-format
 msgid ""
 "Note: this version of macOS has System Integrity Protection.\n"
@@ -8810,113 +8860,113 @@ msgid ""
 "    %s\n"
 msgstr ""
 
-#: darwin-nat.c:1994
+#: darwin-nat.c:1957
 msgid "startup-with-shell is now temporarily disabled"
 msgstr ""
 
 #. Trying to masturbate?
-#: darwin-nat.c:2044 gnu-nat.c:2205 inf-ptrace.c:200
+#: darwin-nat.c:2011 gnu-nat.c:2175 inf-ptrace.c:140
 msgid "I refuse to debug myself!"
 msgstr ""
 
-#: darwin-nat.c:2051 inf-ptrace.c:216 remote.c:5798
+#: darwin-nat.c:2018 inf-ptrace.c:156 remote.c:5877
 #, possible-c-format
 msgid "Attaching to program: %s, %s\n"
 msgstr ""
 
-#: darwin-nat.c:2054 inf-ptrace.c:219 procfs.c:1889 remote.c:5801
+#: darwin-nat.c:2021 inf-ptrace.c:159 procfs.c:1786 remote.c:5880
 #, possible-c-format
 msgid "Attaching to %s\n"
 msgstr ""
 
-#: darwin-nat.c:2059
+#: darwin-nat.c:2026
 #, possible-c-format
 msgid "Can't attach to process %d: %s (%d)"
 msgstr ""
 
-#: darwin-nat.c:2111
+#: darwin-nat.c:2077
 #, possible-c-format
 msgid "Unable to detach from process-id %d: %s (%d)"
 msgstr ""
 
-#: darwin-nat.c:2132
+#: darwin-nat.c:2098
 #, possible-c-format
 msgid "Thread 0x%lx of process %u"
 msgstr ""
 
-#: darwin-nat.c:2158
+#: darwin-nat.c:2124
 #, possible-c-format
 msgid "darwin_read_write_inferior(task=0x%x, %s, len=%s)\n"
 msgstr ""
 
-#: darwin-nat.c:2175
+#: darwin-nat.c:2141
 #, possible-c-format
 msgid "darwin_read_write_inferior: mach_vm_read failed at %s: %s"
 msgstr ""
 
-#: darwin-nat.c:2205
+#: darwin-nat.c:2171
 #, possible-c-format
 msgid "darwin_read_write_inferior: mach_vm_region_recurse failed at %s: %s\n"
 msgstr ""
 
-#: darwin-nat.c:2213
+#: darwin-nat.c:2179
 #, possible-c-format
 msgid ""
-"darwin_read_write_inferior: mach_vm_region_recurse addr=%s, start=%s, len=%"
-"s\n"
+"darwin_read_write_inferior: mach_vm_region_recurse addr=%s, start=%s, len="
+"%s\n"
 msgstr ""
 
-#: darwin-nat.c:2222
+#: darwin-nat.c:2188
 #, possible-c-format
 msgid "No memory at %s (vs %s+0x%x).  Nothing written"
 msgstr ""
 
-#: darwin-nat.c:2249
+#: darwin-nat.c:2215
 #, possible-c-format
 msgid ""
-"darwin_read_write_inferior: mach_vm_protect failed at %s (len=0x%lx, prot=0x%"
-"x): %s"
+"darwin_read_write_inferior: mach_vm_protect failed at %s (len=0x%lx, prot=0x"
+"%x): %s"
 msgstr ""
 
-#: darwin-nat.c:2268
+#: darwin-nat.c:2234
 #, possible-c-format
 msgid "darwin_read_write_inferior: mach_vm_write failed: %s"
 msgstr ""
 
-#: darwin-nat.c:2280
+#: darwin-nat.c:2246
 #, possible-c-format
 msgid ""
-"darwin_read_write_inferior: mach_vm_protect restore failed at %s (len=0x%"
-"lx): %s"
+"darwin_read_write_inferior: mach_vm_protect restore failed at %s (len=0x"
+"%lx): %s"
 msgstr ""
 
-#: darwin-nat.c:2340
+#: darwin-nat.c:2306
 #, possible-c-format
 msgid "darwin_xfer_partial(%s, %s, rbuf=%s, wbuf=%s) pid=%u\n"
 msgstr ""
 
-#: darwin-nat.c:2501
+#: darwin-nat.c:2468
 #, possible-c-format
 msgid "GDB task: 0x%lx, pid: %d\n"
 msgstr ""
 
-#: darwin-nat.c:2505
+#: darwin-nat.c:2472
 msgid "Set if printing inferior communication debugging statements."
 msgstr ""
 
-#: darwin-nat.c:2506
+#: darwin-nat.c:2473
 msgid "Show if printing inferior communication debugging statements."
 msgstr ""
 
-#: darwin-nat.c:2512
+#: darwin-nat.c:2479
 msgid "Set if mach exceptions are caught."
 msgstr ""
 
-#: darwin-nat.c:2513
+#: darwin-nat.c:2480
 msgid "Show if mach exceptions are caught."
 msgstr ""
 
-#: darwin-nat.c:2514
+#: darwin-nat.c:2481
 msgid ""
 "When this mode is on, all low level exceptions are reported before being\n"
 "reported by the kernel."
@@ -9349,49 +9399,49 @@ msgstr ""
 msgid "Parameter is saved, host or none"
 msgstr ""
 
-#: darwin-nat-info.c:845
+#: darwin-nat-info.c:846
 msgid "Get list of tasks in system."
 msgstr ""
 
-#: darwin-nat-info.c:847
+#: darwin-nat-info.c:848
 msgid "Get list of ports in a task."
 msgstr ""
 
-#: darwin-nat-info.c:849
+#: darwin-nat-info.c:850
 msgid "Get info on a specific port."
 msgstr ""
 
-#: darwin-nat-info.c:851
+#: darwin-nat-info.c:852
 msgid "Get info on a specific task."
 msgstr ""
 
-#: darwin-nat-info.c:853
+#: darwin-nat-info.c:854
 msgid "Get list of threads in a task."
 msgstr ""
 
-#: darwin-nat-info.c:855
+#: darwin-nat-info.c:856
 msgid "Get info on a specific thread."
 msgstr ""
 
-#: darwin-nat-info.c:858
+#: darwin-nat-info.c:859
 msgid "Get information on all mach region for the task."
 msgstr ""
 
-#: darwin-nat-info.c:860
+#: darwin-nat-info.c:861
 msgid "Get information on all mach sub region for the task."
 msgstr ""
 
-#: darwin-nat-info.c:862
+#: darwin-nat-info.c:863
 msgid "Get information on mach region at given address."
 msgstr ""
 
-#: darwin-nat-info.c:865
+#: darwin-nat-info.c:866
 msgid "Disp mach exceptions."
 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:3339
+#: dbxread.c:175 mdebugread.c:3319
 #, possible-c-format
 msgid "unknown symbol type %s"
 msgstr ""
@@ -9428,19 +9478,19 @@ msgstr ""
 msgid "bad string table offset in symbol %d"
 msgstr ""
 
-#: dbxread.c:943 mdebugread.c:2225 xcoffread.c:2161
+#: dbxread.c:943 mdebugread.c:2210 xcoffread.c:2107
 #, possible-c-format
 msgid "function `%s' appears to be defined outside of all compilation units"
 msgstr ""
 
-#: dbxread.c:1181
+#: dbxread.c:1179
 #, possible-c-format
 msgid "string table offset backs up at %d"
 msgstr ""
 
 #. FIXME: we should not get here without a PST to work on.
 #. Attempt to recover.
-#: dbxread.c:1326
+#: dbxread.c:1324
 #, possible-c-format
 msgid "N_BINCL %s not in entries for any file, at symtab pos %d"
 msgstr ""
@@ -9465,12 +9515,12 @@ 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:3275 xcoffread.c:2868
+#: dbxread.c:1747 mdebugread.c:3255 xcoffread.c:2809
 #, possible-c-format
 msgid "unknown symbol descriptor `%c'"
 msgstr ""
 
-#: dbxread.c:2245
+#: dbxread.c:2199
 msgid "First symbol in segment of executable not a source symbol"
 msgstr ""
 
@@ -9478,39 +9528,37 @@ msgstr ""
 #. 2000 would output N_LSYM entries after N_LBRAC
 #. entries.  As a consequence, these symbols are simply
 #. discarded.  Complain if this is the case.
-#: dbxread.c:2517
+#: dbxread.c:2471
 msgid ""
 "misplaced N_LBRAC entry; discarding local symbols which have no enclosing "
 "block"
 msgstr ""
 
-#: dbxread.c:2537
+#: dbxread.c:2491
 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:3597
-#: printcmd.c:1013 printcmd.c:2706 psymtab.c:695 psymtab.c:708 target.c:647
-#: ui-out.c:782 utils.c:1583 valprint.c:1367
+#: dbxread.c:2674 printcmd.c:1009 printcmd.c:2651 target.c:661 ui-out.c:782
+#: valprint.c:1264
 msgid "failed internal consistency check"
 msgstr ""
 
-#: dbxread.c:2810
+#: dbxread.c:2763
 #, possible-c-format
 msgid "unmatched N_LBRAC before symtab pos %d"
 msgstr ""
 
-#: dbxread.c:2956 dbxread.c:3049 dbxread.c:3143
+#: dbxread.c:2909 dbxread.c:3002 dbxread.c:3096
 #, possible-c-format
 msgid "ridiculous string table size: %d bytes"
 msgstr ""
 
-#: dbxread.c:3122
+#: dbxread.c:3075
 #, possible-c-format
 msgid "stabsect_build_psymtabs:  Found stabs (%s), but not string section (%s)"
 msgstr ""
 
-#: dbxread.c:3130
+#: dbxread.c:3083
 #, possible-c-format
 msgid "Can't find %s section in symbol file"
 msgstr ""
@@ -9561,15 +9609,15 @@ msgstr ""
 msgid "Invalid dcache line size: %u (must be power of 2)."
 msgstr ""
 
-#: dcache.c:691
+#: dcache.c:678
 msgid "Set cache use for remote targets."
 msgstr ""
 
-#: dcache.c:692
+#: dcache.c:679
 msgid "Show cache use for remote targets."
 msgstr ""
 
-#: dcache.c:693
+#: dcache.c:680
 msgid ""
 "This used to enable the data cache for remote targets.  The cache\n"
 "functionality is now controlled by the memory region system and the\n"
@@ -9577,7 +9625,7 @@ msgid ""
 "exists only for compatibility reasons."
 msgstr ""
 
-#: dcache.c:703
+#: dcache.c:690
 msgid ""
 "Print information on the dcache performance.\n"
 "Usage: info dcache [LINENUMBER]\n"
@@ -9586,31 +9634,40 @@ msgid ""
 "the contents of the given line."
 msgstr ""
 
-#: dcache.c:710
+#: dcache.c:697
 msgid "Use this command to set number of lines in dcache and line-size."
 msgstr ""
 
-#. allow_unknown
-#: dcache.c:713
+#: dcache.c:701
 msgid "Show dcachesettings."
 msgstr ""
 
-#: dcache.c:718
+#: dcache.c:707
 msgid "Set dcache line size in bytes (must be power of 2)."
 msgstr ""
 
-#: dcache.c:719
+#: dcache.c:708
 msgid "Show dcache line size."
 msgstr ""
 
-#: dcache.c:726
+#: dcache.c:715
 msgid "Set number of dcache lines."
 msgstr ""
 
-#: dcache.c:727
+#: dcache.c:716
 msgid "Show number of dcache lines."
 msgstr ""
 
+#: debuginfod-support.c:120
+#, possible-c-format
+msgid "Download failed: %s.  Continuing without source file %ps.\n"
+msgstr ""
+
+#: debuginfod-support.c:153
+#, possible-c-format
+msgid "Download failed: %s.  Continuing without debug info for %ps.\n"
+msgstr ""
+
 #: d-exp.y:453
 msgid "No symbol table is loaded.  Use the \"file\" command"
 msgstr ""
@@ -9640,33 +9697,33 @@ msgstr ""
 msgid "--- no source info for this pc ---\n"
 msgstr ""
 
-#: disasm.c:948
+#: disasm.c:955
 msgid "'set disassembler-options ...' is not supported on this architecture.\n"
 msgstr ""
 
-#: disasm.c:985
+#: disasm.c:992
 #, possible-c-format
 msgid "Invalid disassembler option value: '%s'.\n"
 msgstr ""
 
-#: disasm.c:1015
+#: disasm.c:1022
 #, possible-c-format
 msgid ""
 "The current disassembler options are '%s'\n"
 "\n"
 msgstr ""
 
-#: disasm.c:1022
+#: disasm.c:1029
 msgid "There are no disassembler options available for this architecture.\n"
 msgstr ""
 
-#: disasm.c:1030
+#: disasm.c:1037
 msgid ""
 "The following disassembler options are supported for use with the\n"
 "'set disassembler-options OPTION [,OPTION]...' command:\n"
 msgstr ""
 
-#: disasm.c:1091
+#: disasm.c:1098
 #, possible-c-format
 msgid ""
 "\n"
@@ -9674,7 +9731,7 @@ msgid ""
 "   "
 msgstr ""
 
-#: disasm.c:1138
+#: disasm.c:1146
 msgid ""
 "Set the disassembler options.\n"
 "Usage: set disassembler-options OPTION [,OPTION]...\n"
@@ -9682,7 +9739,7 @@ msgid ""
 "See: 'show disassembler-options' for valid option values."
 msgstr ""
 
-#: disasm.c:1141
+#: disasm.c:1149
 msgid "Show the disassembler options."
 msgstr ""
 
@@ -9699,21 +9756,21 @@ msgid ""
 "report this bug."
 msgstr ""
 
-#: dtrace-probe.c:780 dtrace-probe.c:804 linux-thread-db.c:1954
+#: dtrace-probe.c:779 dtrace-probe.c:803 linux-thread-db.c:1962
 msgid "No inferior running"
 msgstr ""
 
-#: dtrace-probe.c:813
+#: dtrace-probe.c:812
 #, possible-c-format
 msgid "Probe %s:%s cannot be disabled: no enablers."
 msgstr ""
 
-#: dtrace-probe.c:862
+#: dtrace-probe.c:861
 #, possible-c-format
 msgid "could not obtain the contents ofsection '%s' in objfile `%s'."
 msgstr ""
 
-#: dtrace-probe.c:887
+#: dtrace-probe.c:886
 msgid "Enabled"
 msgstr ""
 
@@ -9731,122 +9788,204 @@ msgstr ""
 msgid "maintenance print dummy-frames"
 msgstr ""
 
-#: dummy-frame.c:438
+#: dummy-frame.c:439
 msgid "Print the contents of the internal dummy-frame stack."
 msgstr ""
 
-#: dwarf2expr.c:77
+#: dwarf2/attribute.c:128
+#, possible-c-format
+msgid "unsupported die ref attribute form: '%s'"
+msgstr ""
+
+#. For DW_FORM_data16 see attribute::form_is_constant.
+#: dwarf2/attribute.c:148
+#, possible-c-format
+msgid "Attribute value is not a constant (%s)"
+msgstr ""
+
+#: dwarf2/comp-unit.c:80
+#, 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 ""
+
+#: dwarf2/comp-unit.c:95
+msgid "read_comp_unit_head: invalid section_kind"
+msgstr ""
+
+#: dwarf2/comp-unit.c:109
+#, possible-c-format
+msgid ""
+"Dwarf Error: wrong unit_type in compilation unit header (is %s, should be "
+"%s) [in module %s]"
+msgstr ""
+
+#: dwarf2/comp-unit.c:119
+#, 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 ""
+
+#: dwarf2/comp-unit.c:143
+msgid "read_comp_unit_head: dwarf from non elf file"
+msgstr ""
+
+#: dwarf2/comp-unit.c:163
+#, possible-c-format
+msgid ""
+"Dwarf Error: Too big type_offset in compilation unit header (is %s) [in "
+"module %s]"
+msgstr ""
+
+#: dwarf2/comp-unit.c:185
+#, possible-c-format
+msgid ""
+"Dwarf Error: bad offset (%s) in compilation unit header (offset %s + 6) [in "
+"module %s]"
+msgstr ""
+
+#: dwarf2/comp-unit.c:195
+#, possible-c-format
+msgid ""
+"Dwarf Error: bad length (0x%x) in compilation unit header (offset %s + 0) "
+"[in module %s]"
+msgstr ""
+
+#: dwarf2/comp-unit.c:245
+#, possible-c-format
+msgid "read_address: bad switch, signed [in module %s]"
+msgstr ""
+
+#: dwarf2/comp-unit.c:264
+#, possible-c-format
+msgid "read_address: bad switch, unsigned [in module %s]"
+msgstr ""
+
+#: dwarf2/dwz.c:29
+#, possible-c-format
+msgid "DW_FORM_GNU_strp_alt used without .debug_str section [in module %s]"
+msgstr ""
+
+#: dwarf2/dwz.c:33
+#, possible-c-format
+msgid ""
+"DW_FORM_GNU_strp_alt pointing outside of .debug_str section [in module %s]"
+msgstr ""
+
+#: dwarf2/expr.c:78
 #, possible-c-format
 msgid "Unsupported address size in DWARF expressions: %d bits"
 msgstr ""
 
-#: dwarf2expr.c:127
+#: dwarf2/expr.c:128
 msgid "dwarf expression stack underflow"
 msgstr ""
 
-#: dwarf2expr.c:138 dwarf2expr.c:238
+#: dwarf2/expr.c:139 dwarf2/expr.c:239
 #, possible-c-format
 msgid "Asked for position %d of stack, stack only has %zu elements on it."
 msgstr ""
 
-#: dwarf2expr.c:152
+#: dwarf2/expr.c:153
 msgid "integral type expected in DWARF expression"
 msgstr ""
 
-#: dwarf2expr.c:172
+#: dwarf2/expr.c:173
 msgid "no unsigned variant found for type, while evaluating DWARF expression"
 msgstr ""
 
-#: dwarf2expr.c:194
+#: dwarf2/expr.c:195
 msgid "no signed variant found for type, while evaluating DWARF expression"
 msgstr ""
 
-#: dwarf2expr.c:317
+#: dwarf2/expr.c:318
 msgid "DWARF expression error: ran off end of buffer reading uleb128 value"
 msgstr ""
 
-#: dwarf2expr.c:329
+#: dwarf2/expr.c:330
 msgid "DWARF expression error: ran off end of buffer reading sleb128 value"
 msgstr ""
 
-#: dwarf2expr.c:338
+#: dwarf2/expr.c:339
 msgid "DWARF expression error: ran off end of buffer reading leb128 value"
 msgstr ""
 
-#: dwarf2expr.c:353
+#: dwarf2/expr.c:354
 #, possible-c-format
 msgid ""
 "DWARF-2 expression error: `%s' operations must be used either alone or in "
 "conjunction with DW_OP_piece or DW_OP_bit_piece."
 msgstr ""
 
-#: dwarf2expr.c:564
+#: dwarf2/expr.c:565
 #, possible-c-format
 msgid "DWARF-2 expression error: Loop detected (%d)."
 msgstr ""
 
-#: dwarf2expr.c:758 dwarf2loc.c:3042
+#: dwarf2/expr.c:759 dwarf2/loc.c:3197
 msgid "DW_OP_implicit_value: too few bytes available."
 msgstr ""
 
-#: dwarf2expr.c:779
+#: dwarf2/expr.c:780
 msgid ""
 "DWARF-2 expression error: DW_OP_implicit_pointer is not allowed in frame "
 "context"
 msgstr ""
 
-#: dwarf2expr.c:870
+#: dwarf2/expr.c:871
 msgid "Not implemented: computing frame base using explicit value operator"
 msgstr ""
 
-#: dwarf2expr.c:901
+#: dwarf2/expr.c:902
 #, possible-c-format
 msgid "Not enough elements for DW_OP_swap.  Need 2, have %zu."
 msgstr ""
 
-#: dwarf2expr.c:919
+#: dwarf2/expr.c:920
 #, possible-c-format
 msgid "Not enough elements for DW_OP_rot.  Need 3, have %zu."
 msgstr ""
 
-#: dwarf2expr.c:1031
+#: dwarf2/expr.c:1032
 msgid "Incompatible types on DWARF stack"
 msgstr ""
 
-#: dwarf2expr.c:1154
+#: dwarf2/expr.c:1155
 msgid "Can't be reached."
 msgstr ""
 
-#: dwarf2expr.c:1241
+#: dwarf2/expr.c:1242
 msgid ""
 "DWARF-2 expression error: DW_OP_GNU_uninit must always be the very last op."
 msgstr ""
 
-#: dwarf2expr.c:1285
+#: dwarf2/expr.c:1287
 msgid "DW_OP_entry_value: too few bytes available."
 msgstr ""
 
-#: dwarf2expr.c:1310
+#: dwarf2/expr.c:1312
 msgid ""
 "DWARF-2 expression error: DW_OP_entry_value is supported only for single "
 "DW_OP_reg* or for DW_OP_breg*(0)+DW_OP_deref*"
 msgstr ""
 
-#: dwarf2expr.c:1387
+#: dwarf2/expr.c:1389
 msgid "DW_OP_reinterpret has wrong size"
 msgstr ""
 
-#: dwarf2expr.c:1402
+#: dwarf2/expr.c:1404
 #, possible-c-format
 msgid "Unhandled dwarf expression opcode 0x%x"
 msgstr ""
 
-#: dwarf2expr.h:212 dwarf2-frame.c:302
+#: dwarf2/expr.h:213 dwarf2/frame.c:312
 #, possible-c-format
 msgid "%s is invalid in this context"
 msgstr ""
 
-#: dwarf2-frame.c:224
+#: dwarf2/frame.c:230
 #, possible-c-format
 msgid ""
 "incomplete CFI data; DW_CFA_restore unspecified\n"
@@ -9856,227 +9995,386 @@ msgstr ""
 #. This is actually invalid DWARF, but if we ever do run across
 #. it somehow, we might as well support it.  So, instead, report
 #. it as unimplemented.
-#: dwarf2-frame.c:334
+#: dwarf2/frame.c:343
 msgid ""
 "Not implemented: computing unwound register using explicit value operator"
 msgstr ""
 
-#: dwarf2-frame.c:462
+#: dwarf2/frame.c:471
 #, possible-c-format
 msgid "bad CFI data; mismatched DW_CFA_restore_state at %s"
 msgstr ""
 
-#: dwarf2-frame.c:595
+#: dwarf2/frame.c:604
 #, possible-c-format
 msgid ""
 "Call Frame Instruction op %d in vendor extension space is not handled on "
 "this architecture."
 msgstr ""
 
-#: dwarf2-frame.c:601
+#: dwarf2/frame.c:610
 msgid "Unknown CFI encountered."
 msgstr ""
 
-#: dwarf2-frame.c:886
+#: dwarf2/frame.c:895
 msgid "Could not compute CFA; needed to translate this expression"
 msgstr ""
 
-#: dwarf2-frame.c:925 dwarf2-frame.c:1076
+#: dwarf2/frame.c:938 dwarf2/frame.c:1085
 msgid "Unknown CFA rule."
 msgstr ""
 
-#: dwarf2-frame.c:1128
+#: dwarf2/frame.c:1137
 #, possible-c-format
 msgid "incomplete CFI data; unspecified registers (e.g., %s) at %s"
 msgstr ""
 
-#: dwarf2-frame.c:1324
+#: dwarf2/frame.c:1329
 msgid "Unknown register rule."
 msgstr ""
 
-#: dwarf2-frame.c:1457
+#: dwarf2/frame.c:1458
 msgid "cfa not available for record btrace target"
 msgstr ""
 
-#: dwarf2-frame.c:1463
+#: dwarf2/frame.c:1464
 msgid ""
 "can't compute CFA for this frame: required registers or memory are "
 "unavailable"
 msgstr ""
 
-#: dwarf2-frame.c:1468
+#: dwarf2/frame.c:1469
 msgid "can't compute CFA for this frame: frame base not available"
 msgstr ""
 
-#: dwarf2-frame.c:1543
+#: dwarf2/frame.c:1513
 msgid "Unsupported address size"
 msgstr ""
 
-#: dwarf2-frame.c:1560
+#: dwarf2/frame.c:1530
 msgid "Unsupported encoding: DW_EH_PE_indirect"
 msgstr ""
 
-#: dwarf2-frame.c:1593 dwarf2-frame.c:1641
+#: dwarf2/frame.c:1563 dwarf2/frame.c:1611
 msgid "Invalid or unsupported encoding"
 msgstr ""
 
-#: dwarf2-frame.c:1806
+#: dwarf2/frame.c:1798
 msgid "Found a CIE when not expecting it."
 msgstr ""
 
-#: dwarf2-frame.c:1978
+#: dwarf2/frame.c:1970
 msgid "Found an FDE when not expecting it."
 msgstr ""
 
-#: dwarf2-frame.c:2119
+#: dwarf2/frame.c:2113
 #, possible-c-format
 msgid "Corrupt data in %s:%s; align 4 workaround apparently succeeded"
 msgstr ""
 
-#: dwarf2-frame.c:2126
+#: dwarf2/frame.c:2120
 #, possible-c-format
 msgid "Corrupt data in %s:%s; align 8 workaround apparently succeeded"
 msgstr ""
 
-#: dwarf2-frame.c:2133
+#: dwarf2/frame.c:2127
 #, possible-c-format
 msgid "Corrupt data in %s:%s"
 msgstr ""
 
-#: dwarf2-frame.c:2216
+#: dwarf2/frame.c:2204
 #, possible-c-format
 msgid "skipping .eh_frame info of %s: %s"
 msgstr ""
 
-#: dwarf2-frame.c:2250
+#: dwarf2/frame.c:2233
 #, possible-c-format
 msgid "skipping .debug_frame info of %s: %s"
 msgstr ""
 
-#: dwarf2-frame.c:2354
+#: dwarf2/frame.c:2298
 #, possible-c-format
 msgid "The DWARF stack unwinders are currently %s.\n"
 msgstr ""
 
-#: dwarf2-frame.c:2364
+#: dwarf2/frame.c:2309
 msgid "Set whether the DWARF stack frame unwinders are used."
 msgstr ""
 
-#: dwarf2-frame.c:2365
+#: dwarf2/frame.c:2310
 msgid "Show whether the DWARF stack frame unwinders are used."
 msgstr ""
 
-#: dwarf2-frame.c:2366
+#: dwarf2/frame.c:2311
 msgid ""
 "When enabled the DWARF stack frame unwinders can be used for architectures\n"
 "that support the DWARF unwinders.  Enabling the DWARF unwinders for an\n"
 "architecture that doesn't support them will have no effect."
 msgstr ""
 
-#: dwarf2loc.c:107
+#: dwarf2/index-cache.c:132
+msgid "The index cache directory name is empty, skipping store."
+msgstr ""
+
+#: dwarf2/index-cache.c:141
+#, possible-c-format
+msgid "index cache: could not make cache directory: %s"
+msgstr ""
+
+#: dwarf2/index-cache.c:190
+msgid "The index cache directory name is empty, skipping cache lookup."
+msgstr ""
+
+#: dwarf2/index-cache.c:266
+#, possible-c-format
+msgid "The index cache is currently %s.\n"
+msgstr ""
+
+#: dwarf2/index-cache.c:267
+msgid "enabled"
+msgstr ""
+
+#: dwarf2/index-cache.c:314
+#, possible-c-format
+msgid "%s  Cache hits (this session): %u\n"
+msgstr ""
+
+#: dwarf2/index-cache.c:316
+#, possible-c-format
+msgid "%sCache misses (this session): %u\n"
+msgstr ""
+
+#: dwarf2/index-cache.c:332
+msgid "Couldn't determine a path for the index cache directory."
+msgstr ""
+
+#: dwarf2/index-cache.c:336
+msgid "Set index-cache options."
+msgstr ""
+
+#: dwarf2/index-cache.c:342
+msgid "Show index-cache options."
+msgstr ""
+
+#: dwarf2/index-cache.c:347
+msgid "Enable the index cache."
+msgstr ""
+
+#: dwarf2/index-cache.c:351
+msgid "Disable the index cache."
+msgstr ""
+
+#: dwarf2/index-cache.c:355
+msgid "Set the directory of the index cache."
+msgstr ""
+
+#: dwarf2/index-cache.c:356
+msgid "Show the directory of the index cache."
+msgstr ""
+
+#: dwarf2/index-cache.c:364
+msgid "Show some stats about the index cache."
+msgstr ""
+
+#: dwarf2/index-cache.c:370
+msgid "Set display of index-cache debug messages."
+msgstr ""
+
+#: dwarf2/index-cache.c:371
+msgid "Show display of index-cache debug messages."
+msgstr ""
+
+#: dwarf2/index-cache.c:372
+msgid "When non-zero, debugging output for the index cache is displayed."
+msgstr ""
+
+#: dwarf2/index-write.c:80
+msgid "couldn't data write to file"
+msgstr ""
+
+#: dwarf2/index-write.c:1009
+#, possible-c-format
+msgid "Duplicate string \"%s\" in .debug_str section [in module %s]"
+msgstr ""
+
+#: dwarf2/index-write.c:1672
+#, possible-c-format
+msgid "Can't open `%s' for writing"
+msgstr ""
+
+#: dwarf2/index-write.c:1710
+msgid "Cannot use an index to create the index"
+msgstr ""
+
+#: dwarf2/index-write.c:1713
+msgid "Cannot make an index when the file has multiple .debug_types sections"
+msgstr ""
+
+#: dwarf2/index-write.c:1776
+msgid "usage: save gdb-index [-dwarf-5] DIRECTORY"
+msgstr ""
+
+#: dwarf2/index-write.c:1805
+#, possible-c-format
+msgid "Error while writing index for `%s': "
+msgstr ""
+
+#: dwarf2/index-write.c:1818
+msgid ""
+"Save a gdb-index file.\n"
+"Usage: save gdb-index [-dwarf-5] DIRECTORY\n"
+"\n"
+"No options create one file with .gdb-index extension for pre-DWARF-5\n"
+"compatible .gdb_index section.  With -dwarf-5 creates two files with\n"
+"extension .debug_names and .debug_str for DWARF-5 .debug_names section."
+msgstr ""
+
+#: dwarf2/leb.c:131
+#, possible-c-format
+msgid "read_offset_1: bad switch [in module %s]"
+msgstr ""
+
+#: dwarf2/line-header.c:92
+#, possible-c-format
+msgid "bad file number in macro information (%d)"
+msgstr ""
+
+#: dwarf2/line-header.c:121
+msgid "statement list doesn't fit in .debug_line section"
+msgstr ""
+
+#: dwarf2/line-header.c:145
+msgid "intermixed 32-bit and 64-bit DWARF sections"
+msgstr ""
+
+#: dwarf2/line-header.c:271
+#, possible-c-format
+msgid "Unknown format content type %s"
+msgstr ""
+
+#. This is a version we don't understand.  The format could have
+#. changed in ways we don't handle properly so just punt.
+#: dwarf2/line-header.c:332
+msgid "unsupported version in .debug_line section"
+msgstr ""
+
+#: dwarf2/line-header.c:347
+#, possible-c-format
+msgid "unsupported segment selector size %u in .debug_line section"
+msgstr ""
+
+#: dwarf2/line-header.c:369
+msgid "invalid maximum_ops_per_instruction in `.debug_line' section"
+msgstr ""
+
+#: dwarf2/line-header.c:442
+msgid "line number info header doesn't fit in `.debug_line' section"
+msgstr ""
+
+#: dwarf2/loc.c:112
 msgid "access outside bounds of object referenced via synthetic pointer"
 msgstr ""
 
-#: dwarf2loc.c:324
+#: dwarf2/loc.c:403
 msgid "dwarf2_find_location_expression: Corrupted DWARF expression."
 msgstr ""
 
-#: dwarf2loc.c:526
+#: dwarf2/loc.c:599
 #, possible-c-format
 msgid "Could not find the frame base for \"%s\"."
 msgstr ""
 
-#: dwarf2loc.c:565
+#: dwarf2/loc.c:636
 msgid "Bad DW_OP_GNU_variable_value DIE."
 msgstr ""
 
-#: dwarf2loc.c:571
+#: dwarf2/loc.c:642
 msgid "Type of DW_OP_GNU_variable_value DIE must be an integer or pointer."
 msgstr ""
 
-#: dwarf2loc.c:631
+#: dwarf2/loc.c:704
 msgid "Could not find type for DW_OP_const_type"
 msgstr ""
 
-#: dwarf2loc.c:633
+#: dwarf2/loc.c:706
 msgid "DW_OP_const_type has different sizes for type and data"
 msgstr ""
 
-#: dwarf2loc.c:651
+#: dwarf2/loc.c:724 dwarf2/loc.c:2465
 msgid "Location address is not set."
 msgstr ""
 
-#: dwarf2loc.c:683 dwarf2loc.c:1367
+#: dwarf2/loc.c:758 dwarf2/loc.c:1451
 msgid "Cannot resolve DW_AT_call_data_value"
 msgstr ""
 
-#: dwarf2loc.c:715
+#: dwarf2/loc.c:795
 msgid "frame address is not available."
 msgstr ""
 
-#: dwarf2loc.c:771
+#: dwarf2/loc.c:851
 #, possible-c-format
 msgid "Entry values and tail call frames debugging is %s.\n"
 msgstr ""
 
-#: dwarf2loc.c:800
+#: dwarf2/loc.c:880
 #, possible-c-format
 msgid "DW_AT_call_target is not specified at %s in %s"
 msgstr ""
 
-#: dwarf2loc.c:812
+#: dwarf2/loc.c:892
 #, possible-c-format
 msgid ""
 "DW_AT_call_target DWARF block resolving requires known frame which is "
 "currently not available at %s in %s"
 msgstr ""
 
-#: dwarf2loc.c:845
+#: dwarf2/loc.c:926
 #, possible-c-format
 msgid "Cannot find function \"%s\" for a call site target at %s in %s"
 msgstr ""
 
-#: dwarf2loc.c:859
+#: dwarf2/loc.c:940
 msgid "invalid call site target kind"
 msgstr ""
 
-#: dwarf2loc.c:875
+#: dwarf2/loc.c:956
 #, possible-c-format
 msgid "DW_TAG_call_site resolving failed to find function name for address %s"
 msgstr ""
 
-#: dwarf2loc.c:933
+#: dwarf2/loc.c:1014
 #, possible-c-format
 msgid ""
 "DW_OP_entry_value resolving has found function \"%s\" at %s can call itself "
 "via tail calls"
 msgstr ""
 
-#: dwarf2loc.c:1085
+#: dwarf2/loc.c:1165
 #, possible-c-format
 msgid "Unable to find function for PC %s"
 msgstr ""
 
-#: dwarf2loc.c:1172
+#: dwarf2/loc.c:1252
 #, possible-c-format
 msgid ""
 "There are no unambiguously determinable intermediate callers or callees "
 "between caller function \"%s\" at %s and callee function \"%s\" at %s"
 msgstr ""
 
-#: dwarf2loc.c:1274
+#: dwarf2/loc.c:1356
 #, possible-c-format
 msgid ""
 "DW_OP_entry_value resolving callee gdbarch %s (of %s (%s)) does not match "
 "caller gdbarch %s"
 msgstr ""
 
-#: dwarf2loc.c:1288
+#: dwarf2/loc.c:1370
 #, possible-c-format
 msgid "DW_OP_entry_value resolving requires caller of %s (%s)"
 msgstr ""
 
-#: dwarf2loc.c:1305
+#: dwarf2/loc.c:1387
 #, possible-c-format
 msgid ""
 "DW_OP_entry_value resolving expects callee %s at %s but the called frame is "
@@ -10085,360 +10383,456 @@ msgstr ""
 
 #. DW_TAG_call_site_parameter will be missing just if GCC could not
 #. determine its value.
-#: dwarf2loc.c:1331
+#: dwarf2/loc.c:1413
 #, possible-c-format
 msgid "Cannot find matching parameter at DW_TAG_call_site %s at %s"
 msgstr ""
 
-#: dwarf2loc.c:1510
+#: dwarf2/loc.c:1599
 msgid ""
 "DWARF-2 expression error: DW_OP_entry_value is supported only for single "
 "DW_OP_reg* or for DW_OP_fbreg(*)"
 msgstr ""
 
-#: dwarf2loc.c:1591
+#: dwarf2/loc.c:1686
 msgid "Should not be able to create a lazy value with an enclosing type"
 msgstr ""
 
-#: dwarf2loc.c:1685
+#: dwarf2/loc.c:1780
 msgid ""
 "Can't do read-modify-write to update bitfield; containing word has been "
 "optimized out"
 msgstr ""
 
-#: dwarf2loc.c:1690
+#: dwarf2/loc.c:1785
 msgid ""
 "Can't do read-modify-write to update bitfield; containing word is unavailable"
 msgstr ""
 
-#: dwarf2loc.c:1844 dwarf2loc.c:2330
+#: dwarf2/loc.c:1938 dwarf2/loc.c:2425
 msgid "invalid location type"
 msgstr ""
 
-#: dwarf2loc.c:2025
+#: dwarf2/loc.c:2120
 msgid "Invalid use of DW_OP_implicit_pointer"
 msgstr ""
 
-#: dwarf2loc.c:2221
+#: dwarf2/loc.c:2316
 msgid "cannot use offset on synthetic pointer to register"
 msgstr ""
 
-#: dwarf2loc.c:2524
+#: dwarf2/loc.c:2675
 msgid "cannot find reference address for offset property"
 msgstr ""
 
-#: dwarf2loc.c:2732
+#: dwarf2/loc.c:2887
 #, possible-c-format
 msgid "DWARF operator %s cannot be translated to an agent expression"
 msgstr ""
 
-#: dwarf2loc.c:2735
+#: dwarf2/loc.c:2890
 #, possible-c-format
 msgid ""
 "Unknown DWARF operator 0x%02x cannot be translated to an agent expression"
 msgstr ""
 
-#: dwarf2loc.c:2753
+#: dwarf2/loc.c:2908
 #, possible-c-format
 msgid "bad DWARF register number %d"
 msgstr ""
 
-#: dwarf2loc.c:2768
+#: dwarf2/loc.c:2923
 #, possible-c-format
 msgid "Unable to access DWARF register number %d"
 msgstr ""
 
-#: dwarf2loc.c:2769
+#: dwarf2/loc.c:2924
 #, possible-c-format
 msgid "Unable to access DWARF register number %s"
 msgstr ""
 
-#: dwarf2loc.c:3044
+#: dwarf2/loc.c:3199
 #, possible-c-format
 msgid "Cannot translate DW_OP_implicit_value of %d bytes"
 msgstr ""
 
-#: dwarf2loc.c:3407
+#: dwarf2/loc.c:3565
 msgid "Cannot translate empty pieces to agent expressions"
 msgstr ""
 
-#: dwarf2loc.c:3420
+#: dwarf2/loc.c:3578
 msgid "Expression pieces exceed word size"
 msgstr ""
 
-#: dwarf2loc.c:3509
+#: dwarf2/loc.c:3672
 msgid "invalid label"
 msgstr ""
 
 #. The text is output as "$bad_register_number".
 #. That is why we use the underscores.
-#: dwarf2loc.c:3583
+#: dwarf2/loc.c:3748
 msgid "bad_register_number"
 msgstr ""
 
-#: dwarf2loc.c:3606 dwarf2loc.c:3615
+#: dwarf2/loc.c:3772 dwarf2/loc.c:3781
 #, possible-c-format
 msgid "a variable in $%s"
 msgstr ""
 
-#: dwarf2loc.c:3636
+#: dwarf2/loc.c:3802
 #, possible-c-format
 msgid "No block found for address for symbol \"%s\"."
 msgstr ""
 
-#: dwarf2loc.c:3642
+#: dwarf2/loc.c:3808
 #, possible-c-format
 msgid "No function found for block for symbol \"%s\"."
 msgstr ""
 
-#: dwarf2loc.c:3655
+#: dwarf2/loc.c:3821
 #, possible-c-format
 msgid "Unexpected opcode after DW_OP_breg%u for symbol \"%s\"."
 msgstr ""
 
-#: dwarf2loc.c:3673
+#: dwarf2/loc.c:3839
 #, possible-c-format
 msgid "a variable at frame base reg $%s offset %s+%s"
 msgstr ""
 
-#: dwarf2loc.c:3685
+#: dwarf2/loc.c:3851
 #, possible-c-format
 msgid "a variable at offset %s from base reg $%s"
 msgstr ""
 
-#: dwarf2loc.c:3717 dwarf2loc.c:3741
+#: dwarf2/loc.c:3883 dwarf2/loc.c:3907
 #, possible-c-format
 msgid ""
 "a thread-local variable at offset 0x%s in the thread-local storage for `%s'"
 msgstr ""
 
-#: dwarf2loc.c:3752
+#: dwarf2/loc.c:3918
 #, possible-c-format
 msgid "the constant %d"
 msgstr ""
 
-#: dwarf2loc.c:3786
+#: dwarf2/loc.c:3953
 #, possible-c-format
 msgid "Unrecognized DWARF opcode 0x%02x at %ld"
 msgstr ""
 
-#: dwarf2loc.c:4161
+#: dwarf2/loc.c:4330
+#, possible-c-format
+msgid "Whether to always disassemble DWARF expressions is %s.\n"
+msgstr ""
+
+#: dwarf2/loc.c:4358
 msgid ", and "
 msgstr ""
 
-#: dwarf2loc.c:4177
+#: dwarf2/loc.c:4374
 msgid "a complex DWARF expression:\n"
 msgstr ""
 
-#: dwarf2loc.c:4199
+#: dwarf2/loc.c:4396
 #, possible-c-format
 msgid "an empty %s-byte piece"
 msgstr ""
 
-#: dwarf2loc.c:4202
+#: dwarf2/loc.c:4399
 #, possible-c-format
 msgid " [%s-byte piece]"
 msgstr ""
 
-#: dwarf2loc.c:4214
+#: dwarf2/loc.c:4411
 #, possible-c-format
 msgid "an empty %s-bit piece"
 msgstr ""
 
-#: dwarf2loc.c:4218
+#: dwarf2/loc.c:4415
 #, possible-c-format
 msgid " [%s-bit piece, offset %s bits]"
 msgstr ""
 
-#: dwarf2loc.c:4230
+#: dwarf2/loc.c:4427
 #, possible-c-format
 msgid "Corrupted DWARF2 expression for \"%s\"."
 msgstr ""
 
-#: dwarf2loc.c:4284 dwarf2loc.c:4497
+#: dwarf2/loc.c:4481 dwarf2/loc.c:4716
 #, possible-c-format
 msgid "symbol \"%s\" is optimized out"
 msgstr ""
 
-#: dwarf2loc.c:4394
+#: dwarf2/loc.c:4592
 msgid "multi-location:\n"
 msgstr ""
 
-#: dwarf2loc.c:4421
+#: dwarf2/loc.c:4627
 #, possible-c-format
 msgid "  Base address %s"
 msgstr ""
 
-#: dwarf2loc.c:4429
+#: dwarf2/loc.c:4638
 #, possible-c-format
 msgid "Corrupted DWARF expression for symbol \"%s\"."
 msgstr ""
 
 #. (It would improve readability to print only the minimum
 #. necessary digits of the second number of the range.)
-#: dwarf2loc.c:4447
+#: dwarf2/loc.c:4666
 #, possible-c-format
 msgid "  Range %s-%s: "
 msgstr ""
 
-#: dwarf2loc.c:4522
+#: dwarf2/loc.c:4743
 msgid "Set entry values and tail call frames debugging."
 msgstr ""
 
-#: dwarf2loc.c:4524
+#: dwarf2/loc.c:4745
 msgid "Show entry values and tail call frames debugging."
 msgstr ""
 
-#: dwarf2loc.c:4526
+#: dwarf2/loc.c:4747
 msgid ""
 "When non-zero, the process of determining parameter values from function "
 "entry point and tail call frames will be printed."
 msgstr ""
 
-#: dwarf2read.c:1439
+#: dwarf2/loc.c:4755
+msgid "Set whether `info address' always disassembles DWARF expressions."
+msgstr ""
+
+#: dwarf2/loc.c:4756
+msgid "Show whether `info address' always disassembles DWARF expressions."
+msgstr ""
+
+#: dwarf2/loc.c:4757
+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 ""
+
+#: dwarf2/macro.c:42
 #, possible-c-format
-msgid "The upper bound on the age of cached DWARF compilation units is %s.\n"
+msgid ""
+"macro debug info contains a malformed macro definition:\n"
+"`%s'"
 msgstr ""
 
-#: dwarf2read.c:2033
-msgid "statement list doesn't fit in .debug_line section"
+#: dwarf2/macro.c:78
+#, possible-c-format
+msgid ""
+"macro definition contains spaces in formal argument list:\n"
+"`%s'"
 msgstr ""
 
-#: dwarf2read.c:2039
-msgid ".debug_line section has line data without a file"
+#: dwarf2/macro.c:306
+#, possible-c-format
+msgid "invalid form 0x%x in `%s'"
 msgstr ""
 
-#: dwarf2read.c:2045
-msgid ".debug_line section has line program sequence without an end"
+#: dwarf2/macro.c:333
+#, possible-c-format
+msgid "unrecognized DW_MACFINO opcode 0x%x"
 msgstr ""
 
-#: dwarf2read.c:2052
-msgid "location expression too complex"
+#: dwarf2/macro.c:378
+#, possible-c-format
+msgid "unrecognized version `%d' in .debug_macro section"
 msgstr ""
 
-#: dwarf2read.c:2059
+#. DWARF violation as no main source is present.
+#: dwarf2/macro.c:525
 #, possible-c-format
-msgid "const value length mismatch for '%s', got %d, expected %d"
+msgid "debug info with no main source gives macro %s on line %d: %s"
+msgstr ""
+
+#: dwarf2/macro.c:527 dwarf2/macro.c:535 dwarf2/macro.c:549
+msgid "definition"
+msgstr ""
+
+#: dwarf2/macro.c:527 dwarf2/macro.c:535 dwarf2/macro.c:549
+msgid "undefinition"
 msgstr ""
 
-#: dwarf2read.c:2066
+#: dwarf2/macro.c:533
 #, possible-c-format
-msgid "debug info runs off end of %s section [in module %s]"
+msgid "debug info gives %s macro %s with %s line %d: %s"
+msgstr ""
+
+#: dwarf2/macro.c:534 dwarf2/macro.c:548 dwarf2/macro.c:578
+msgid "command-line"
+msgstr ""
+
+#: dwarf2/macro.c:534 dwarf2/macro.c:548
+msgid "in-file"
+msgstr ""
+
+#: dwarf2/macro.c:536 dwarf2/macro.c:579
+msgid "zero"
 msgstr ""
 
-#: dwarf2read.c:2075
+#: dwarf2/macro.c:536 dwarf2/macro.c:579
+msgid "non-zero"
+msgstr ""
+
+#. Fedora's rpm-build's "debugedit" binary
+#. corrupted .debug_macro sections.
+#.
+#. For more info, see
+#. https://bugzilla.redhat.com/show_bug.cgi?id=1708786
+#: dwarf2/macro.c:545
 #, possible-c-format
 msgid ""
-"macro debug info contains a malformed macro definition:\n"
-"`%s'"
+"debug info gives %s invalid macro %s without body (corrupted?) at line %d on "
+"file %s"
 msgstr ""
 
-#: dwarf2read.c:2083
+#: dwarf2/macro.c:576
 #, possible-c-format
-msgid "invalid attribute class or form for '%s' in '%s'"
+msgid "debug info gives source %d included from %s at %s line %d"
+msgstr ""
+
+#: dwarf2/macro.c:578 skip.c:333
+msgid "file"
+msgstr ""
+
+#: dwarf2/macro.c:595
+msgid "macro debug info has an unmatched `close_file' directive"
 msgstr ""
 
-#: dwarf2read.c:2370
+#: dwarf2/macro.c:622
+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.
+#: dwarf2/macro.c:663
+msgid "recursive DW_MACRO_import in .debug_macro section"
+msgstr ""
+
+#: dwarf2/read.c:1238
 #, possible-c-format
-msgid ""
-"Discarding section %s which has a section size (%s) larger than the file "
-"size [in module %s]"
+msgid "The upper bound on the age of cached DWARF compilation units is %s.\n"
+msgstr ""
+
+#: dwarf2/read.c:1734
+msgid ".debug_line section has line data without a file"
+msgstr ""
+
+#: dwarf2/read.c:1740
+msgid ".debug_line section has line program sequence without an end"
+msgstr ""
+
+#: dwarf2/read.c:1747
+msgid "location expression too complex"
 msgstr ""
 
-#: dwarf2read.c:2515
+#: dwarf2/read.c:1754
 #, possible-c-format
-msgid ""
-"Dwarf Error: DWP format V2 with relocations is not supported in section %s "
-"[in module %s]"
+msgid "const value length mismatch for '%s', got %d, expected %d"
 msgstr ""
 
-#: dwarf2read.c:2559
+#: dwarf2/read.c:1761
 #, possible-c-format
-msgid "Dwarf Error: Can't read DWARF data in section %s [in module %s]"
+msgid "invalid attribute class or form for '%s' in '%s'"
+msgstr ""
+
+#: dwarf2/read.c:1980
+#, possible-c-format
+msgid ""
+"Discarding section %s which has a section size (%s) larger than the file "
+"size [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:2688
+#: dwarf2/read.c:2198
 #, possible-c-format
 msgid "could not read '.gnu_debugaltlink' section: %s"
 msgstr ""
 
-#: dwarf2read.c:2721
+#: dwarf2/read.c:2246 elfread.c:1332
+#, possible-c-format
+msgid "File \"%s\" from debuginfod cannot be opened as bfd"
+msgstr ""
+
+#: dwarf2/read.c:2254
 #, possible-c-format
 msgid "could not find '.gnu_debugaltlink' file for %s"
 msgstr ""
 
-#: dwarf2read.c:3196
+#: dwarf2/read.c:2738
 #, possible-c-format
 msgid ".gdb_index address table has invalid range (%s - %s)"
 msgstr ""
 
-#: dwarf2read.c:3203
+#: dwarf2/read.c:2745
 #, possible-c-format
 msgid ".gdb_index address table has invalid CU number %u"
 msgstr ""
 
-#: dwarf2read.c:3244
+#: dwarf2/read.c:2785
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s has duplicate debug_info_offset %s, ignoring ."
 "debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3271
+#: dwarf2/read.c:2812
 #, 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:3286
+#: dwarf2/read.c:2827
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s entry at offset %s has unsupported version %d, "
 "ignoring .debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3300
+#: dwarf2/read.c:2841
 #, 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:3313
+#: dwarf2/read.c:2854
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s entry at offset %s address_size %u is invalid, "
 "ignoring .debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3323
+#: dwarf2/read.c:2864
 #, 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:3340
+#: dwarf2/read.c:2881
 #, possible-c-format
 msgid ""
 "Section .debug_aranges in %s entry at offset %s padding is not zero, "
 "ignoring .debug_aranges."
 msgstr ""
 
-#: dwarf2read.c:3351
+#: dwarf2/read.c:2892
 #, 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:3481
+#: dwarf2/read.c:3021
 #, possible-c-format
 msgid "Skipping obsolete .gdb_index section in %s."
 msgstr ""
 
-#: dwarf2read.c:3500
+#: dwarf2/read.c:3040
 #, possible-c-format
 msgid ""
 "Skipping deprecated .gdb_index section in %s.\n"
@@ -10446,395 +10840,340 @@ msgid ""
 "to use the section anyway."
 msgstr ""
 
-#: dwarf2read.c:3620
+#: dwarf2/read.c:3160
 #, possible-c-format
 msgid "could not read '.gdb_index' section from %s; skipping"
 msgstr ""
 
-#: dwarf2read.c:3996 dwarf2read.c:5087
+#: dwarf2/read.c:3573 dwarf2/read.c:4736
 #, possible-c-format
 msgid ".gdb_index entry has bad CU index [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:4123
+#: dwarf2/read.c:3702
 #, possible-c-format
 msgid "  Number of read CUs: %d\n"
 msgstr ""
 
-#: dwarf2read.c:4124
+#: dwarf2/read.c:3703
 #, possible-c-format
 msgid "  Number of unread CUs: %d\n"
 msgstr ""
 
-#: dwarf2read.c:4625
+#: dwarf2/read.c:4268
 #, possible-c-format
 msgid "%s:%d: match_type=%s, looking-for=\"%s\", expected=\"%s\", got=\"%s\"\n"
 msgstr ""
 
-#: dwarf2read.c:5257
+#: dwarf2/read.c:4914
 #, 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:5402
+#: dwarf2/read.c:5059
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s length %s does not match section length %s, "
 "ignoring .debug_names."
 msgstr ""
 
-#: dwarf2read.c:5414
+#: dwarf2/read.c:5071
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s has unsupported version %d, ignoring .debug_names."
 msgstr ""
 
-#: dwarf2read.c:5425
+#: dwarf2/read.c:5082
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s has unsupported padding %d, ignoring .debug_names."
 msgstr ""
 
-#: dwarf2read.c:5446
+#: dwarf2/read.c:5103
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s has unsupported %lu foreign TUs, ignoring ."
 "debug_names."
 msgstr ""
 
-#: dwarf2read.c:5509
+#: dwarf2/read.c:5166
 #, possible-c-format
 msgid ""
 "Section .debug_names in %s has duplicate index %s, ignoring .debug_names."
 msgstr ""
 
-#: dwarf2read.c:5538
+#: dwarf2/read.c:5195
 #, possible-c-format
 msgid ""
-"Section .debug_names in %s has abbreviation_table of size %s vs. written as %"
-"u, ignoring .debug_names."
+"Section .debug_names in %s has abbreviation_table of size %s vs. written as "
+"%u, ignoring .debug_names."
 msgstr ""
 
-#: dwarf2read.c:5636
+#: dwarf2/read.c:5310
 #, possible-c-format
 msgid "could not read '.debug_names' section from %s; skipping"
 msgstr ""
 
-#: dwarf2read.c:5772 dwarf2read.c:5824
+#: dwarf2/read.c:5458 dwarf2/read.c:5510
 #, possible-c-format
 msgid "Wrong .debug_names with name index %u but name_count=%u [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:5795
+#: dwarf2/read.c:5481
 #, possible-c-format
 msgid "Wrong .debug_names hash for string at index %u [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:5861
+#: dwarf2/read.c:5547
 #, possible-c-format
 msgid "Wrong .debug_names undefined abbrev code %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:5889
+#: dwarf2/read.c:5587
 #, possible-c-format
 msgid "Unsupported .debug_names form %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:5900
+#: dwarf2/read.c:5598
 #, possible-c-format
 msgid ".debug_names entry has bad CU index %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:5912
+#: dwarf2/read.c:5610
 #, possible-c-format
 msgid ".debug_names entry has bad TU index %s [in module %s]"
 msgstr ""
 
-#: 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:6478
-msgid "read_comp_unit_head: invalid section_kind"
-msgstr ""
-
-#: 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: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:6527
-msgid "read_comp_unit_head: dwarf from non elf file"
-msgstr ""
-
-#: 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:6586
-#, possible-c-format
-msgid ""
-"Dwarf Error: bad offset (%s) in compilation unit header (offset %s + 6) [in "
-"module %s]"
-msgstr ""
-
-#: 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:6887
+#: dwarf2/read.c:6500
 #, possible-c-format
 msgid ""
 "debug type entry at offset %s is duplicate to the entry at offset %s, "
 "signature %s"
 msgstr ""
 
-#: dwarf2read.c:7322
+#: dwarf2/read.c:6914
 #, possible-c-format
 msgid ""
 "Dwarf Error: signature mismatch %s vs %s while reading TU at offset %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:7457
+#: dwarf2/read.c:7034
 #, possible-c-format
 msgid "Dwarf Error: missing dwo_id for dwo_name %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:7718
+#: dwarf2/read.c:7265
 #, possible-c-format
 msgid ""
 "compilation unit with DW_AT_GNU_dwo_name has children (offset %s) [in module "
 "%s]"
 msgstr ""
 
-#: dwarf2read.c:8774 dwarf2read.c:10598
+#: dwarf2/read.c:8301 dwarf2/read.c:10142
 #, possible-c-format
 msgid ""
-"Dwarf Error: DW_TAG_imported_unit is not supported in type units [in module %"
-"s]"
+"Dwarf Error: DW_TAG_imported_unit is not supported in type units [in module "
+"%s]"
 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:8897
+#: dwarf2/read.c:8424
 #, possible-c-format
 msgid "unhandled containing DIE tag %s for DIE at %s"
 msgstr ""
 
-#: dwarf2read.c:9269 dwarf2read.c:18779
+#: dwarf2/read.c:8794 dwarf2/read.c:18904
 msgid "malformed enumerator DIE ignored"
 msgstr ""
 
-#: dwarf2read.c:9308
+#: dwarf2/read.c:8833
 #, possible-c-format
 msgid ""
-"Dwarf Error: Could not find abbrev number %d in %s at offset %s [in module %"
-"s]"
+"Dwarf Error: Could not find abbrev number %d in %s at offset %s [in module "
+"%s]"
 msgstr ""
 
-#: dwarf2read.c:9361 dwarf2read.c:18999
+#: dwarf2/read.c:8888 dwarf2/read.c:19139
 msgid "ignoring absolute DW_AT_sibling"
 msgstr ""
 
-#: dwarf2read.c:9368 dwarf2read.c:19007
+#: dwarf2/read.c:8895 dwarf2/read.c:19147
 msgid "DW_AT_sibling points backwards"
 msgstr ""
 
-#: dwarf2read.c:9465 dwarf2read.c:19610
+#: dwarf2/read.c:8994 dwarf2/read.c:20014
 #, possible-c-format
 msgid "Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:9520 mdebugread.c:282
-#, possible-c-format
-msgid "Reading in symbols for %s..."
-msgstr ""
-
-#: dwarf2read.c:9933
+#: dwarf2/read.c:9455
 #, possible-c-format
 msgid "Symtab %s has objects from two different Go packages: %s and %s"
 msgstr ""
 
-#: dwarf2read.c:10060
+#: dwarf2/read.c:9619
 #, possible-c-format
 msgid "Could not parse Rust enum encoding string \"%s\"[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:10742
+#: dwarf2/read.c:10295
 #, possible-c-format
 msgid "Tag '%s' has unexpected children"
 msgstr ""
 
-#: dwarf2read.c:10976
+#: dwarf2/read.c:10535
 msgid "template parameter missing DW_AT_type"
 msgstr ""
 
-#: dwarf2read.c:10992
+#: dwarf2/read.c:10551
 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:11184
+#: dwarf2/read.c:10737
 #, possible-c-format
 msgid ""
 "Computed physname <%s> does not match demangled <%s> (from linkage <%s>) - "
 "DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:11245
+#: dwarf2/read.c:10798
 #, possible-c-format
 msgid "DIE at %s has too many recursively imported declarations"
 msgstr ""
 
-#: dwarf2read.c:11308 dwarf2read.c:11398
+#: dwarf2/read.c:10861 dwarf2/read.c:10951
 #, possible-c-format
 msgid "Tag '%s' has no DW_AT_import"
 msgstr ""
 
-#: dwarf2read.c:11388
+#: dwarf2/read.c:10941
 #, possible-c-format
 msgid "child DW_TAG_imported_declaration expected - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:11409
+#: dwarf2/read.c:10962
 #, possible-c-format
 msgid ""
 "child DW_TAG_imported_declaration has unknown imported name - DIE at %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:11674
+#: dwarf2/read.c:11222
 msgid "CU refers to both DW_AT_macros and DW_AT_macro_info"
 msgstr ""
 
-#: dwarf2read.c:11976
+#: dwarf2/read.c:11511
 #, possible-c-format
 msgid ""
 "Dwarf Error: debug entry at offset %s is missing its dwo_id [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12056
+#: dwarf2/read.c:11592
 #, possible-c-format
 msgid ""
 "debug cu entry at offset %s is duplicate to the entry at offset %s, "
 "signature %s"
 msgstr ""
 
-#: dwarf2read.c:12239
+#: dwarf2/read.c:11794
 #, possible-c-format
 msgid "Dwarf Error: unsupported DWP file version (%s) [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12245
+#: dwarf2/read.c:11800
 #, 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:12266
+#: dwarf2/read.c:11823
 #, possible-c-format
 msgid "Empty DWP but nr_slots,nr_units,nr_columns not all zero [in modules %s]"
 msgstr ""
 
-#: dwarf2read.c:12291
+#: dwarf2/read.c:11848 dwarf2/read.c:11918
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, too few columns in section table [in module "
 "%s]"
 msgstr ""
 
-#: dwarf2read.c:12297
+#: dwarf2/read.c:11854 dwarf2/read.c:11924
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, too many columns in section table [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:12309
+#: dwarf2/read.c:11866 dwarf2/read.c:11936
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, bad section id %d in section table [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:12315
+#: dwarf2/read.c:11872 dwarf2/read.c:11942
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, duplicate section id %d in section table "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12327
+#: dwarf2/read.c:11884 dwarf2/read.c:11952
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, missing/duplicate DWO info/types section "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12334
+#: dwarf2/read.c:11891 dwarf2/read.c:11959
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, missing DWO abbrev section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12346
+#: dwarf2/read.c:11903 dwarf2/read.c:11971
 #, possible-c-format
 msgid "Dwarf Error: DWP index section is corrupt (too small) [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12495
+#: dwarf2/read.c:12119
 #, possible-c-format
 msgid ""
 "Dwarf Error: bad DWP hash table, section number too large [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12503
+#: dwarf2/read.c:12127
 #, possible-c-format
 msgid "Dwarf Error: bad DWP hash table, invalid section found [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12513
+#: dwarf2/read.c:12137
 #, possible-c-format
 msgid "Dwarf Error: bad DWP hash table, missing DWO sections [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12519
+#: dwarf2/read.c:12143
 #, possible-c-format
 msgid "Dwarf Error: bad DWP hash table, too many DWO sections [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:12624
+#: dwarf2/read.c:12246
 #, possible-c-format
 msgid ""
-"Dwarf Error: Bad DWP V2 section info, doesn't fit in section %s [in module %"
-"s]"
+"Dwarf Error: Bad DWP V2 or V5 section info, doesn't fit in section %s [in "
+"module %s]"
 msgstr ""
 
-#: dwarf2read.c:12870
+#: dwarf2/read.c:12680
 #, possible-c-format
 msgid "Dwarf Error: bad DWP hash table, lookup didn't terminate [in module %s]"
 msgstr ""
@@ -10842,265 +11181,312 @@ 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:13321
+#: dwarf2/read.c:13197
 #, possible-c-format
 msgid ""
 "Dwarf Error: DWP file CU version %s doesn't match TU version %s [in DWP file "
 "%s]"
 msgstr ""
 
-#: dwarf2read.c:13497
+#: dwarf2/read.c:13376
 #, possible-c-format
 msgid ""
 "Could not find DWO %s %s(%s)%s referenced by %s at offset %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:13615
+#: dwarf2/read.c:13495
 #, possible-c-format
 msgid "DIE %s and its abstract origin %s have different tags"
 msgstr ""
 
-#: dwarf2read.c:13661
+#: dwarf2/read.c:13541
 #, possible-c-format
 msgid "Child DIE %s and its abstract origin %s have different tags"
 msgstr ""
 
-#: dwarf2read.c:13666
+#: dwarf2/read.c:13546
 #, possible-c-format
 msgid "Child DIE %s and its abstract origin %s have different parents"
 msgstr ""
 
-#: dwarf2read.c:13678
+#: dwarf2/read.c:13558
 #, possible-c-format
 msgid "Multiple children of DIE %s refer to DIE %s as their abstract origin"
 msgstr ""
 
-#: dwarf2read.c:13747
+#: dwarf2/read.c:13627
 #, possible-c-format
 msgid "missing name for subprogram DIE at %s"
 msgstr ""
 
-#: dwarf2read.c:13758
+#: dwarf2/read.c:13638
 #, possible-c-format
 msgid "cannot get low and high bounds for subprogram DIE at %s"
 msgstr ""
 
-#: dwarf2read.c:14003
+#: dwarf2/read.c:13893
 #, possible-c-format
 msgid "missing DW_AT_call_return_pc for DW_TAG_call_site DIE %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14019
+#: dwarf2/read.c:13909
 #, possible-c-format
 msgid "Duplicate PC %s for DW_TAG_call_site DIE %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14035
+#: dwarf2/read.c:13925
 #, 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:14097
+#: dwarf2/read.c:13987
 #, possible-c-format
 msgid "Cannot find function owning DW_TAG_call_site DIE %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14143
+#: dwarf2/read.c:14034
 #, possible-c-format
 msgid ""
 "DW_AT_call_target target DIE has invalid physname, for referencing DIE %s "
 "[in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14156
+#: dwarf2/read.c:14047
 #, possible-c-format
 msgid ""
 "DW_AT_call_target target DIE has invalid low pc, for referencing DIE %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:14167
+#: dwarf2/read.c:14058
 #, possible-c-format
 msgid ""
-"DW_TAG_call_site DW_AT_call_target is neither block nor reference, for DIE %"
-"s [in module %s]"
+"DW_TAG_call_site DW_AT_call_target is neither block nor reference, for DIE "
+"%s [in module %s]"
 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:14213
+#: dwarf2/read.c:14104
 #, 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:14224
+#: dwarf2/read.c:14115
 #, 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:14241
+#: dwarf2/read.c:14132
 #, 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:14256
+#: dwarf2/read.c:14147
 #, 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:14276
+#: dwarf2/read.c:14167
 #, 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:14383 dwarf2read.c:14551
+#: dwarf2/read.c:14274 dwarf2/read.c:14475
 #, 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:14464 dwarf2read.c:14476
+#: dwarf2/read.c:14387
 msgid "Invalid .debug_rnglists data (no base address)"
 msgstr ""
 
 #. Inverted range entries are invalid.
-#: dwarf2read.c:14483
+#: dwarf2/read.c:14398
 msgid "Invalid .debug_rnglists data (inverted range)"
 msgstr ""
 
-#: dwarf2read.c:14499
+#. We have no valid base address for the DW_RLE_offset_pair.
+#: dwarf2/read.c:14412
+msgid "Invalid .debug_rnglists data (no base address for DW_RLE_offset_pair)"
+msgstr ""
+
+#: dwarf2/read.c:14426
 #, possible-c-format
 msgid ".debug_rnglists entry has start address of zero [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:14509
+#: dwarf2/read.c:14436
 #, 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:14590
+#: dwarf2/read.c:14513
 msgid "Invalid .debug_ranges data (no base address)"
 msgstr ""
 
 #. Inverted range entries are invalid.
-#: dwarf2read.c:14597
+#: dwarf2/read.c:14520
 msgid "Invalid .debug_ranges data (inverted range)"
 msgstr ""
 
-#: dwarf2read.c:14613
+#: dwarf2/read.c:14536
 #, possible-c-format
 msgid ".debug_ranges entry has start address of zero [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:15330
+#: dwarf2/read.c:15277
 #, possible-c-format
 msgid "Unhandled DW_AT_accessibility value (%x)"
 msgstr ""
 
-#: dwarf2read.c:15427
+#: dwarf2/read.c:15319
+#, possible-c-format
+msgid "invalid discriminant marker: %d"
+msgstr ""
+
+#: dwarf2/read.c:15330
+msgid "DW_AT_discr_list missing low value"
+msgstr ""
+
+#: dwarf2/read.c:15344
+msgid "DW_AT_discr_list missing high value"
+msgstr ""
+
+#: dwarf2/read.c:15554
 #, possible-c-format
 msgid "unsupported accessibility %d"
 msgstr ""
 
-#: dwarf2read.c:15439
+#: dwarf2/read.c:15566
 msgid "unexpected virtuality in component of Ada type"
 msgstr ""
 
-#: dwarf2read.c:15491
+#: dwarf2/read.c:15617
+#, possible-c-format
+msgid "unrecognized DW_AT_defaulted value (%s)"
+msgstr ""
+
+#: dwarf2/read.c:15637
 msgid "unexpected member function in Ada type"
 msgstr ""
 
-#: dwarf2read.c:15556
+#: dwarf2/read.c:15702
 #, possible-c-format
 msgid "member function type missing for '%s'"
 msgstr ""
 
-#: dwarf2read.c:15628
+#: dwarf2/read.c:15784
 #, 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:15655
+#: dwarf2/read.c:15811
 #, possible-c-format
 msgid ""
 "Member function \"%s\" (offset %s) is virtual but the vtable offset is not "
 "specified"
 msgstr ""
 
-#: dwarf2read.c:15671
+#: dwarf2/read.c:15827
 msgid "unexpected member functions in Ada type"
 msgstr ""
 
-#: dwarf2read.c:15768
+#: dwarf2/read.c:15924
 #, possible-c-format
 msgid "DW_AT_alignment must have constant form - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:15781
+#: dwarf2/read.c:15937
 #, possible-c-format
 msgid "DW_AT_alignment value must not be negative - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:15794
+#: dwarf2/read.c:15950
 #, possible-c-format
 msgid "DW_AT_alignment value must not be zero - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:15802
+#: dwarf2/read.c:15958
 #, possible-c-format
 msgid "DW_AT_alignment value must be a power of 2 - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:15820
+#: dwarf2/read.c:15976
 #, possible-c-format
 msgid "DW_AT_alignment value too large - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:16030
+#: dwarf2/read.c:15996
+#, possible-c-format
+msgid "unrecognized DW_AT_calling_convention value (%s) for a type"
+msgstr ""
+
+#: dwarf2/read.c:16022
+#, possible-c-format
+msgid "unrecognized DW_AT_calling_convention value (%s) for a subroutine"
+msgstr ""
+
+#: dwarf2/read.c:16188
 #, possible-c-format
-msgid "DW_AT_discr_list is not supported yet - DIE at %s [in module %s]"
+msgid "nested DW_TAG_variant_part seen - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:16084
+#: dwarf2/read.c:16220
 #, possible-c-format
 msgid "DW_AT_discr does not have DIE reference form - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:16162
+#: dwarf2/read.c:16243
+#, possible-c-format
+msgid ""
+"saw DW_TAG_variant outside DW_TAG_variant_part - DIE at %s [in module %s]"
+msgstr ""
+
+#: dwarf2/read.c:16251
+#, possible-c-format
+msgid "nested DW_TAG_variant seen - DIE at %s [in module %s]"
+msgstr ""
+
+#: dwarf2/read.c:16422
 #, possible-c-format
 msgid "virtual function table pointer not found when defining class '%s'"
 msgstr ""
 
-#: dwarf2read.c:16279
+#: dwarf2/read.c:16540
 #, possible-c-format
 msgid ""
 "could not find suitable symtab for template parameter - DIE at %s [in module "
 "%s]"
 msgstr ""
 
-#: dwarf2read.c:16571
+#: dwarf2/read.c:16818
 #, possible-c-format
 msgid "unable to read array DW_AT_byte_stride  - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:16655
+#: dwarf2/read.c:16864
+#, possible-c-format
+msgid "unable to find array range - DIE at %s [in module %s]"
+msgstr ""
+
+#: dwarf2/read.c:16912
 msgid "DW_AT_byte_size for array type smaller than the total size of elements"
 msgstr ""
 
@@ -11108,24 +11494,24 @@ 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:16881
+#: dwarf2/read.c:17138
 #, possible-c-format
 msgid ""
 "Variable in common block has DW_AT_data_member_location - DIE at %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:17115
+#: dwarf2/read.c:17371
 #, possible-c-format
 msgid "invalid pointer size %d"
 msgstr ""
 
-#: dwarf2read.c:17119
+#: dwarf2/read.c:17375
 #, possible-c-format
 msgid "Invalid DW_AT_alignment - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:17343
+#: dwarf2/read.c:17598
 msgid ""
 "DW_AT_bit_size and DW_AT_string_length_bit_size not currently supported on "
 "DW_TAG_string_type."
@@ -11133,223 +11519,204 @@ msgstr ""
 
 #. Self-referential typedefs are, it seems, not allowed by the DWARF
 #. spec and cause infinite loops in GDB.
-#: dwarf2read.c:17613
+#: dwarf2/read.c:17869
 #, possible-c-format
 msgid "Self-referential DW_TAG_typedef - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:17748
+#: dwarf2/read.c:18014
 msgid "DW_AT_name missing from DW_TAG_base_type"
 msgstr ""
 
-#: dwarf2read.c:17767
+#: dwarf2/read.c:18033
 #, possible-c-format
 msgid "DW_AT_endianity has unrecognized value %d"
 msgstr ""
 
-#: dwarf2read.c:17829
+#: dwarf2/read.c:18107
 #, possible-c-format
 msgid "unsupported DW_ATE_UTF bit size: '%d'"
 msgstr ""
 
-#: dwarf2read.c:17838
+#: dwarf2/read.c:18116
 #, possible-c-format
 msgid "unsupported DW_AT_encoding: '%s'"
 msgstr ""
 
-#: dwarf2read.c:18105
+#: dwarf2/read.c:18372
 #, possible-c-format
 msgid "Missing DW_AT_lower_bound - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:18126
+#: dwarf2/read.c:18393
 #, possible-c-format
 msgid "Unresolved DW_AT_upper_bound - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:18131
+#: dwarf2/read.c:18398
 #, possible-c-format
 msgid "Unresolved DW_AT_count - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:18177
+#: dwarf2/read.c:18443
 #, possible-c-format
 msgid "Found DW_AT_bit_stride and DW_AT_byte_stride - DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:18381
+#: dwarf2/read.c:18642
 #, possible-c-format
 msgid "Dwarf Error: could not find abbrev number %d [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:18764
+#: dwarf2/read.c:18889
 #, possible-c-format
 msgid ""
-"DW_TAG_typedef has childen - GCC PR debug/47510 bug - DIE at %s [in module %"
-"s]"
+"DW_TAG_typedef has childen - GCC PR debug/47510 bug - DIE at %s [in module "
+"%s]"
 msgstr ""
 
-#: dwarf2read.c:19108
+#: dwarf2/read.c:19254
 #, possible-c-format
 msgid "DW_AT_low_pc %s is zero for DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19120
+#: dwarf2/read.c:19266
 #, 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:19178
+#: dwarf2/read.c:19321
 #, possible-c-format
 msgid ""
 "Dwarf Error: Type Unit at offset %s contains external reference to offset %s "
 "[in module %s].\n"
 msgstr ""
 
-#: dwarf2read.c:19213
+#: dwarf2/read.c:19359
 #, possible-c-format
-msgid "could not find partial DIE %s in cache [from module %s]\n"
+msgid "Dwarf Error: Cannot not find DIE at %s [from module %s]\n"
 msgstr ""
 
-#. For now flag a hard error.
-#. 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:19557 dwarf2read.c:19574
+#: dwarf2/read.c:19613
 #, possible-c-format
-msgid "Dwarf Error: %s found in non-DWO CU [in module %s]"
+msgid "DW_FORM_loclistx used without .debug_loclists section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19630
+#: dwarf2/read.c:19619
 #, possible-c-format
-msgid "Suspicious DW_AT_byte_size value treated as zero instead of %s"
+msgid "DW_AT_loclists_base is smaller than header size [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19729
+#: dwarf2/read.c:19629
 #, possible-c-format
-msgid "read_address: bad switch, signed [in module %s]"
+msgid ""
+"DW_FORM_loclistx pointing outside of .debug_loclists offset array [in module "
+"%s]"
 msgstr ""
 
-#: dwarf2read.c:19748
+#: dwarf2/read.c:19634
 #, possible-c-format
-msgid "read_address: bad switch, unsigned [in module %s]"
+msgid ""
+"DW_FORM_loclistx pointing outside of .debug_loclists section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19841
-msgid "intermixed 32-bit and 64-bit DWARF sections"
+#: dwarf2/read.c:19640
+#, possible-c-format
+msgid ""
+"Reading DW_FORM_loclistx index beyond end of.debug_loclists section [in "
+"module %s]"
 msgstr ""
 
-#: dwarf2read.c:19878
+#: dwarf2/read.c:19677
 #, possible-c-format
-msgid "read_offset_1: bad switch [in module %s]"
+msgid "DW_FORM_rnglistx used without .debug_rnglists section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19924
+#: dwarf2/read.c:19684
 #, possible-c-format
-msgid "%s used without %s section [in module %s]"
+msgid "DW_AT_rnglists_base is smaller than header size [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19927
+#: dwarf2/read.c:19694
 #, possible-c-format
-msgid "%s pointing outside of %s section [in module %s]"
+msgid ""
+"DW_FORM_rnglistx index pointing outside of .debug_rnglists offset array [in "
+"module %s]"
 msgstr ""
 
-#: dwarf2read.c:19972
+#: dwarf2/read.c:19700
 #, possible-c-format
-msgid "DW_FORM_GNU_strp_alt used without .debug_str section [in module %s]"
+msgid ""
+"DW_FORM_rnglistx pointing outside of .debug_rnglists section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:19976
+#: dwarf2/read.c:19706
 #, possible-c-format
 msgid ""
-"DW_FORM_GNU_strp_alt pointing outside of .debug_str section [in module %s]"
+"Reading DW_FORM_rnglistx index beyond end of.debug_rnglists section [in "
+"module %s]"
 msgstr ""
 
-#: dwarf2read.c:20087
-#, possible-c-format
-msgid "DW_FORM_addr_index used without .debug_addr section [in module %s]"
+#: dwarf2/read.c:19760
+msgid "Unexpected DWARF form."
 msgstr ""
 
-#: dwarf2read.c:20090
+#: dwarf2/read.c:20034
 #, possible-c-format
-msgid ""
-"DW_FORM_addr_index pointing outside of .debug_addr section [in module %s]"
+msgid "Suspicious DW_AT_byte_size value treated as zero instead of %s"
 msgstr ""
 
-#: dwarf2read.c:20221
+#: dwarf2/read.c:20108
 #, possible-c-format
-msgid ""
-"%s used without .debug_str.dwo section in CU at offset %s [in module %s]"
+msgid "DW_FORM_addr_index used without .debug_addr section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:20225
+#: dwarf2/read.c:20112
 #, possible-c-format
 msgid ""
-"%s used without .debug_str_offsets.dwo section in CU at offset %s [in module "
-"%s]"
+"DW_FORM_addr_index pointing outside of .debug_addr section [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:20229
+#: dwarf2/read.c:20207 dwarf2/read.c:20212
 #, possible-c-format
-msgid ""
-"%s pointing outside of .debug_str_offsets.dwo section in CU at offset %s [in "
-"module %s]"
+msgid "%s used without %s section in CU at offset %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:20239
+#: dwarf2/read.c:20224
 #, 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:20391
+#: dwarf2/read.c:20254
 #, possible-c-format
-msgid "string type expected for attribute %s for DIE at %s in module %s"
+msgid "%s used in Fission stub without %s in CU at offset 0x%lx [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:20651
+#: dwarf2/read.c:20384
 #, possible-c-format
-msgid "Unknown format content type %s"
+msgid "string type expected for attribute %s for DIE at %s in module %s"
 msgstr ""
 
-#: dwarf2read.c:20689
+#: dwarf2/read.c:20506
 msgid "missing .debug_line.dwo section"
 msgstr ""
 
-#: dwarf2read.c:20691
+#: dwarf2/read.c:20508
 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:20734
-msgid "unsupported version in .debug_line section"
-msgstr ""
-
-#: dwarf2read.c:20749
-#, possible-c-format
-msgid "unsupported segment selector size %u in .debug_line section"
-msgstr ""
-
-#: dwarf2read.c:20771
-msgid "invalid maximum_ops_per_instruction in `.debug_line' section"
-msgstr ""
-
-#: dwarf2read.c:20844
-msgid "line number info header doesn't fit in `.debug_line' section"
-msgstr ""
-
-#: dwarf2read.c:21309
+#: dwarf2/read.c:21021
 #, possible-c-format
 msgid ".debug_line address at offset 0x%lx is 0 [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:21436 dwarf2read.c:21444
+#: dwarf2/read.c:21155 dwarf2/read.c:21163
 msgid "mangled .debug_line section"
 msgstr ""
 
-#: dwarf2read.c:21827
+#: dwarf2/read.c:21546
 msgid "file index out of range"
 msgstr ""
 
@@ -11357,59 +11724,48 @@ 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:22129
+#: dwarf2/read.c:21850
 #, possible-c-format
 msgid "unsupported tag: '%s'"
 msgstr ""
 
-#: dwarf2read.c:22289 dwarf2read.c:23797
+#: dwarf2/read.c:22012 dwarf2/read.c:23358
 #, possible-c-format
 msgid "unsupported const value attribute form: '%s'"
 msgstr ""
 
-#: dwarf2read.c:22403
+#: dwarf2/read.c:22126
 #, possible-c-format
 msgid ""
 "Dwarf Error: Problem turning containing type into gdb type [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:22420
+#: dwarf2/read.c:22142
 #, possible-c-format
 msgid "<unknown type in %s, CU %s, DIE %s>"
 msgstr ""
 
-#: dwarf2read.c:22472
+#: dwarf2/read.c:22192
 #, possible-c-format
 msgid "Dwarf Error: Bad type attribute %s in DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:22600
+#: dwarf2/read.c:22320
 #, possible-c-format
 msgid "unexpected tag in read_type_die: '%s'"
 msgstr ""
 
-#: dwarf2read.c:22814
+#: dwarf2/read.c:22531
 #, possible-c-format
 msgid "template param type '%s' defined within parent '%s'"
 msgstr ""
 
-#: dwarf2read.c:23397
-#, possible-c-format
-msgid "unsupported die ref attribute form: '%s'"
-msgstr ""
-
-#. For DW_FORM_data16 see attr_form_is_constant.
-#: dwarf2read.c:23419
-#, possible-c-format
-msgid "Attribute value is not a constant (%s)"
-msgstr ""
-
-#: dwarf2read.c:23442
+#: dwarf2/read.c:22995
 #, possible-c-format
 msgid "Dwarf Error: Expected reference attribute [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:23524
+#: dwarf2/read.c:23090
 #, possible-c-format
 msgid ""
 "Dwarf Error: Cannot find DIE at %s referenced from DIE at %s [in module %s]"
@@ -11417,291 +11773,173 @@ 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:23557 dwarf2read.c:23699
+#: dwarf2/read.c:23120 dwarf2/read.c:23260
 #, possible-c-format
 msgid "Dwarf Error: Dummy CU at %s referenced in module %s"
 msgstr ""
 
-#: dwarf2read.c:23563 dwarf2read.c:23705
+#: dwarf2/read.c:23126 dwarf2/read.c:23266
 #, possible-c-format
 msgid "Dwarf Error: Cannot find DIE at %s referenced in module %s"
 msgstr ""
 
-#: dwarf2read.c:23625
+#: dwarf2/read.c:23187
 #, 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:23911 dwarf2read.c:23949
+#: dwarf2/read.c:23476 dwarf2/read.c:23513
 #, possible-c-format
 msgid ""
 "Dwarf Error: Cannot find signatured DIE %s referenced from DIE at %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:23921 dwarf2read.c:23979
+#: dwarf2/read.c:23486 dwarf2/read.c:23544
 #, possible-c-format
 msgid ""
 "Dwarf Error: Problem reading signatured DIE %s referenced from DIE at %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:23970
+#: dwarf2/read.c:23535
 #, possible-c-format
 msgid ""
 "Dwarf Error: Cannot build signatured type %s referenced from DIE at %s [in "
 "module %s]"
 msgstr ""
 
-#: dwarf2read.c:24014
+#: dwarf2/read.c:23579
 #, possible-c-format
 msgid ""
 "Dwarf Error: DW_AT_signature has bad form %s in DIE at %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:24335
+#: dwarf2/read.c:23909
 #, possible-c-format
 msgid "unsupported stack op: '%s'"
 msgstr ""
 
-#: dwarf2read.c:24338
+#: dwarf2/read.c:23912
 #, possible-c-format
 msgid "unsupported stack op: '%02x'"
 msgstr ""
 
-#: dwarf2read.c:24349
+#: dwarf2/read.c:23924
 msgid "location description stack overflow"
 msgstr ""
 
-#: dwarf2read.c:24355
+#: dwarf2/read.c:23931
 msgid "location description stack underflow"
 msgstr ""
 
-#: dwarf2read.c:24418
-#, possible-c-format
-msgid "bad file number in macro information (%d)"
-msgstr ""
-
-#: dwarf2read.c:24481
-#, possible-c-format
-msgid ""
-"macro definition contains spaces in formal argument list:\n"
-"`%s'"
-msgstr ""
-
-#: dwarf2read.c:24712
-#, possible-c-format
-msgid "invalid form 0x%x in `%s'"
-msgstr ""
-
-#: dwarf2read.c:24739
-#, possible-c-format
-msgid "unrecognized DW_MACFINO opcode 0x%x"
-msgstr ""
-
-#: dwarf2read.c:24784
-#, possible-c-format
-msgid "unrecognized version `%d' in .debug_macro section"
-msgstr ""
-
-#. DWARF violation as no main source is present.
-#: dwarf2read.c:24933
-#, possible-c-format
-msgid "debug info with no main source gives macro %s on line %d: %s"
-msgstr ""
-
-#: dwarf2read.c:24935 dwarf2read.c:24943 dwarf2read.c:24957
-msgid "definition"
-msgstr ""
-
-#: dwarf2read.c:24935 dwarf2read.c:24943 dwarf2read.c:24957
-msgid "undefinition"
-msgstr ""
-
-#: dwarf2read.c:24941
+#: dwarf2/read.c:24011
 #, possible-c-format
-msgid "debug info gives %s macro %s with %s line %d: %s"
-msgstr ""
-
-#: dwarf2read.c:24942 dwarf2read.c:24956 dwarf2read.c:24986
-msgid "command-line"
-msgstr ""
-
-#: dwarf2read.c:24942 dwarf2read.c:24956
-msgid "in-file"
-msgstr ""
-
-#: dwarf2read.c:24944 dwarf2read.c:24987
-msgid "zero"
-msgstr ""
-
-#: dwarf2read.c:24944 dwarf2read.c:24987
-msgid "non-zero"
-msgstr ""
-
-#. Fedora's rpm-build's "debugedit" binary
-#. corrupted .debug_macro sections.
-#.
-#. For more info, see
-#. https://bugzilla.redhat.com/show_bug.cgi?id=1708786
-#: dwarf2read.c:24953
-#, possible-c-format
-msgid ""
-"debug info gives %s invalid macro %s without body (corrupted?) at line %d on "
-"file %s"
+msgid "missing %s section"
 msgstr ""
 
-#: dwarf2read.c:24984
+#: dwarf2/read.c:24044
 #, possible-c-format
-msgid "debug info gives source %d included from %s at %s line %d"
+msgid ".debug_rnglists section cannot be used in DWARF %d"
 msgstr ""
 
-#: dwarf2read.c:24986 skip.c:336
-msgid "file"
-msgstr ""
-
-#: dwarf2read.c:25003
-msgid "macro debug info has an unmatched `close_file' directive"
+#: dwarf2/read.c:24062
+msgid ".debug_rnglists section is missing from .dwo file."
 msgstr ""
 
-#: dwarf2read.c:25030
-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:25071
-msgid "recursive DW_MACRO_import in .debug_macro section"
-msgstr ""
-
-#: dwarf2read.c:25165
-#, possible-c-format
-msgid "missing %s section"
-msgstr ""
-
-#: dwarf2read.c:25462
+#: dwarf2/read.c:24114
 msgid "Location list used without specifying the CU base address."
 msgstr ""
 
-#: dwarf2read.c:25653
+#: dwarf2/read.c:24268
 #, possible-c-format
 msgid ""
 "Dwarf Error: could not find partial DIE containing offset %s [in module %s]"
 msgstr ""
 
-#: dwarf2read.c:25666
+#: dwarf2/read.c:24281
 #, possible-c-format
 msgid "invalid dwarf2 offset %s"
 msgstr ""
 
-#: dwarf2read.c:25887
-#, possible-c-format
-msgid "DW_AT_allocated has the wrong form (%s) at DIE %s"
-msgstr ""
-
-#: dwarf2read.c:25903
-#, possible-c-format
-msgid "DW_AT_associated has the wrong form (%s) at DIE %s"
-msgstr ""
-
-#: dwarf2read.c:25932
+#: dwarf2/read.c:24588
 #, possible-c-format
 msgid "A problem internal to GDB: DIE %s has type already set"
 msgstr ""
 
-#: dwarf2read.c:26091
-#, possible-c-format
-msgid "Whether to always disassemble DWARF expressions is %s.\n"
-msgstr ""
-
-#: dwarf2read.c:26101
+#: dwarf2/read.c:24727
 #, possible-c-format
 msgid "Whether to check \"physname\" is %s.\n"
 msgstr ""
 
-#: dwarf2read.c:26108
+#: dwarf2/read.c:24735
 msgid ""
 "Set DWARF specific variables.\n"
 "Configure DWARF variables such as the cache size."
 msgstr ""
 
 #. allow-unknown
-#: dwarf2read.c:26114
+#: dwarf2/read.c:24741
 msgid ""
 "Show DWARF specific variables.\n"
 "Show DWARF variables such as the cache size."
 msgstr ""
 
-#: dwarf2read.c:26121
+#: dwarf2/read.c:24748
 msgid "Set the upper bound on the age of cached DWARF compilation units."
 msgstr ""
 
-#: dwarf2read.c:26122
+#: dwarf2/read.c:24749
 msgid "Show the upper bound on the age of cached DWARF compilation units."
 msgstr ""
 
-#: dwarf2read.c:26123
+#: dwarf2/read.c:24750
 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:26133
-msgid "Set whether `info address' always disassembles DWARF expressions."
-msgstr ""
-
-#: dwarf2read.c:26134
-msgid "Show whether `info address' always disassembles DWARF expressions."
-msgstr ""
-
-#: dwarf2read.c:26135
-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:26144
+#: dwarf2/read.c:24759
 msgid "Set debugging of the DWARF reader."
 msgstr ""
 
-#: dwarf2read.c:26145
+#: dwarf2/read.c:24760
 msgid "Show debugging of the DWARF reader."
 msgstr ""
 
-#: dwarf2read.c:26146
+#: dwarf2/read.c:24761
 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:26154
+#: dwarf2/read.c:24769
 msgid "Set debugging of the DWARF DIE reader."
 msgstr ""
 
-#: dwarf2read.c:26155
+#: dwarf2/read.c:24770
 msgid "Show debugging of the DWARF DIE reader."
 msgstr ""
 
-#: dwarf2read.c:26156
+#: dwarf2/read.c:24771
 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:26163
+#: dwarf2/read.c:24778
 msgid "Set debugging of the dwarf line reader."
 msgstr ""
 
-#: dwarf2read.c:26164
+#: dwarf2/read.c:24779
 msgid "Show debugging of the dwarf line reader."
 msgstr ""
 
-#: dwarf2read.c:26165
+#: dwarf2/read.c:24780
 msgid ""
 "When enabled (non-zero), line number entries are dumped as they are read "
 "in.\n"
@@ -11709,29 +11947,29 @@ msgid ""
 "A value greater than 1 provides more verbose information."
 msgstr ""
 
-#: dwarf2read.c:26173
+#: dwarf2/read.c:24788
 msgid "Set cross-checking of \"physname\" code against demangler."
 msgstr ""
 
-#: dwarf2read.c:26174
+#: dwarf2/read.c:24789
 msgid "Show cross-checking of \"physname\" code against demangler."
 msgstr ""
 
-#: dwarf2read.c:26175
+#: dwarf2/read.c:24790
 msgid ""
 "When enabled, GDB's internal \"physname\" code is checked against\n"
 "the demangler."
 msgstr ""
 
-#: dwarf2read.c:26182
+#: dwarf2/read.c:24797
 msgid "Set whether to use deprecated gdb_index sections."
 msgstr ""
 
-#: dwarf2read.c:26183
+#: dwarf2/read.c:24798
 msgid "Show whether to use deprecated gdb_index sections."
 msgstr ""
 
-#: dwarf2read.c:26184
+#: dwarf2/read.c:24799
 msgid ""
 "When enabled, deprecated .gdb_index sections are used anyway.\n"
 "Normally they are ignored either because of a missing feature or\n"
@@ -11739,278 +11977,178 @@ msgid ""
 "Warning: This option must be enabled before gdb reads the file."
 msgstr ""
 
-#: dwarf-index-cache.c:131
-msgid "The index cache directory name is empty, skipping store."
-msgstr ""
-
-#: dwarf-index-cache.c:140
-#, possible-c-format
-msgid "index cache: could not make cache directory: %s"
-msgstr ""
-
-#: dwarf-index-cache.c:189
-msgid "The index cache directory name is empty, skipping cache lookup."
-msgstr ""
-
-#: dwarf-index-cache.c:253
-msgid "Missing arguments.  See \"help set index-cache\" for help.\n"
-msgstr ""
-
-#: dwarf-index-cache.c:274
-#, possible-c-format
-msgid "The index cache is currently %s.\n"
-msgstr ""
-
-#: dwarf-index-cache.c:275
-msgid "enabled"
-msgstr ""
-
-#: dwarf-index-cache.c:322
+#: dwarf2/section.c:36
 #, possible-c-format
-msgid "%s  Cache hits (this session): %u\n"
+msgid "debug info runs off end of %s section [in module %s]"
 msgstr ""
 
-#: dwarf-index-cache.c:324
+#: dwarf2/section.c:142
 #, possible-c-format
-msgid "%sCache misses (this session): %u\n"
-msgstr ""
-
-#: dwarf-index-cache.c:339
-msgid "Couldn't determine a path for the index cache directory."
-msgstr ""
-
-#: dwarf-index-cache.c:343
-msgid "Set index-cache options."
-msgstr ""
-
-#: dwarf-index-cache.c:348
-msgid "Show index-cache options."
-msgstr ""
-
-#: dwarf-index-cache.c:353
-msgid "Enable the index cache."
-msgstr ""
-
-#: dwarf-index-cache.c:357
-msgid "Disable the index cache."
-msgstr ""
-
-#: dwarf-index-cache.c:361
-msgid "Set the directory of the index cache."
-msgstr ""
-
-#: dwarf-index-cache.c:362
-msgid "Show the directory of the index cache."
-msgstr ""
-
-#: dwarf-index-cache.c:370
-msgid "Show some stats about the index cache."
-msgstr ""
-
-#: dwarf-index-cache.c:376
-msgid "Set display of index-cache debug messages."
-msgstr ""
-
-#: dwarf-index-cache.c:377
-msgid "Show display of index-cache debug messages."
-msgstr ""
-
-#: dwarf-index-cache.c:378
-msgid "When non-zero, debugging output for the index cache is displayed."
-msgstr ""
-
-#: dwarf-index-write.c:78
-msgid "couldn't data write to file"
-msgstr ""
-
-#: dwarf-index-write.c:547
 msgid ""
-"Ada is not currently supported by the index; use the DWARF 5 index instead"
+"Dwarf Error: DWP format V2 with relocations is not supported in section %s "
+"[in module %s]"
 msgstr ""
 
-#: dwarf-index-write.c:975
+#: dwarf2/section.c:185
 #, possible-c-format
-msgid "Duplicate string \"%s\" in .debug_str section [in module %s]"
+msgid "Dwarf Error: Can't read DWARF data in section %s [in module %s]"
 msgstr ""
 
-#: dwarf-index-write.c:1641
+#: dwarf2/section.c:197
 #, possible-c-format
-msgid "Can't open `%s' for writing"
-msgstr ""
-
-#: dwarf-index-write.c:1680
-msgid "Cannot use an index to create the index"
-msgstr ""
-
-#: dwarf-index-write.c:1683
-msgid "Cannot make an index when the file has multiple .debug_types sections"
-msgstr ""
-
-#: dwarf-index-write.c:1746
-msgid "usage: save gdb-index [-dwarf-5] DIRECTORY"
+msgid "%s used without %s section [in module %s]"
 msgstr ""
 
-#: dwarf-index-write.c:1776
+#: dwarf2/section.c:200
 #, possible-c-format
-msgid "Error while writing index for `%s': "
-msgstr ""
-
-#: dwarf-index-write.c:1788
-msgid ""
-"Save a gdb-index file.\n"
-"Usage: save gdb-index [-dwarf-5] DIRECTORY\n"
-"\n"
-"No options create one file with .gdb-index extension for pre-DWARF-5\n"
-"compatible .gdb_index section.  With -dwarf-5 creates two files with\n"
-"extension .debug_names and .debug_str for DWARF-5 .debug_names section."
+msgid "%s pointing outside of %s section [in module %s]"
 msgstr ""
 
-#: elfread.c:154
+#: elfread.c:152
 #, possible-c-format
 msgid "Loadable section \"%s\" outside of ELF segments"
 msgstr ""
 
 #. This case indicates buggy inferior program, the resolved address
 #. should never change.
-#: elfread.c:754
+#: elfread.c:753
 #, possible-c-format
 msgid ""
-"gnu-indirect-function \"%s\" has changed its resolved function_address from %"
-"s to %s"
+"gnu-indirect-function \"%s\" has changed its resolved function_address from "
+"%s to %s"
 msgstr ""
 
-#: elfread.c:1011
+#: elfread.c:1010
 #, possible-c-format
 msgid "handle_inferior_event: Invalid gnu-indirect-function breakpoint type %d"
 msgstr ""
 
-#: elfread.c:1084 elfread.c:1097 elfread.c:1123 machoread.c:808
-#: machoread.c:824
+#: elfread.c:1083 elfread.c:1096 elfread.c:1122 machoread.c:807 machoread.c:823
 #, possible-c-format
 msgid "Can't read symbols from %s: %s"
 msgstr ""
 
-#: eval.c:303
+#: eval.c:302
 msgid "too many initializers"
 msgstr ""
 
-#: eval.c:307
+#: eval.c:306
 msgid "don't know which variant you want to set"
 msgstr ""
 
-#: eval.c:368
+#: eval.c:367
 msgid "tuple index out of range"
 msgstr ""
 
-#: eval.c:766
+#: eval.c:765
 msgid "Cannot evaluate function -- may be inlined"
 msgstr ""
 
-#: eval.c:791 valarith.c:504 valarith.c:618
+#: eval.c:790 valarith.c:513 valarith.c:627
 msgid "Xmethod is missing return type."
 msgstr ""
 
-#: eval.c:817
+#: eval.c:816
 msgid ""
 "Expression of type other than \"Function returning ...\" used as function"
 msgstr ""
 
-#: eval.c:912
+#: eval.c:911
 msgid "Non-pointer-to-member value used in pointer-to-member construct"
 msgstr ""
 
 #. For the time being, we don't handle this.
-#: eval.c:1145
+#: eval.c:1143
 #, possible-c-format
 msgid "Call to overloaded function %s requires `this' pointer"
 msgstr ""
 
-#: eval.c:1344
+#: eval.c:1356
 #, possible-c-format
 msgid "Symbol \"%s\" does not have any specific entry value"
 msgstr ""
 
-#: eval.c:1387
+#: eval.c:1399
 #, possible-c-format
 msgid "Register $%s not available."
 msgstr ""
 
-#: eval.c:1400
+#: eval.c:1412
 #, possible-c-format
 msgid "Value of register %s not available."
 msgstr ""
 
-#: eval.c:1509
+#: eval.c:1521
 msgid "(power)set type with unknown size"
 msgstr ""
 
 #. different element modes.
-#: eval.c:1532
+#: eval.c:1544
 msgid "POWERSET tuple elements of different mode"
 msgstr ""
 
-#: eval.c:1536
+#: eval.c:1548
 msgid "incompatible POWERSET tuple elements"
 msgstr ""
 
-#: eval.c:1539
+#: eval.c:1551
 msgid "empty POWERSET tuple range"
 msgstr ""
 
-#: eval.c:1543
+#: eval.c:1555
 msgid "POWERSET tuple element out of range"
 msgstr ""
 
-#: eval.c:1708
+#: eval.c:1719
 msgid "no 'respondsTo:' or 'respondsToSelector:' method"
 msgstr ""
 
-#: eval.c:1717
+#: eval.c:1728
 msgid "no 'methodFor:' or 'methodForSelector:' method"
 msgstr ""
 
-#: eval.c:1736
+#: eval.c:1747
 msgid "Target does not respond to this message selector."
 msgstr ""
 
-#: eval.c:1821
+#: eval.c:1832
 msgid "method address has symbol information with non-function type; skipping"
 msgstr ""
 
-#: eval.c:1874
+#: eval.c:1885
 msgid "Expression of type other than \"method returning ...\" used as a method"
 msgstr ""
 
-#: eval.c:2007
+#: eval.c:2018
 msgid "Cannot perform substring on this type"
 msgstr ""
 
-#: eval.c:2123
+#: eval.c:2134
 msgid "non-pointer-to-member value used in pointer-to-member construct"
 msgstr ""
 
-#: eval.c:2398
+#: eval.c:2410
 #, possible-c-format
 msgid "Too many subscripts for F77 (%d Max)"
 msgstr ""
 
-#: eval.c:2403
+#: eval.c:2415
 msgid "Wrong number of subscripts"
 msgstr ""
 
-#: eval.c:2598
+#: eval.c:2610
 msgid "Non-integral right operand for \"@\" operator."
 msgstr ""
 
-#: eval.c:2668
+#: eval.c:2680
 msgid "Attempt to dereference pointer to member without an object"
 msgstr ""
 
-#: eval.c:2733
+#: eval.c:2745
 msgid "could not determine alignment of type"
 msgstr ""
 
-#: eval.c:2939
+#: eval.c:2950
 msgid "Attempt to use a type as an expression"
 msgstr ""
 
@@ -12022,153 +12160,156 @@ msgstr ""
 #. If there are any cases landing here which mean a user error,
 #. then they should be separate cases, with more descriptive
 #. error messages.
-#: eval.c:2968
+#: eval.c:2978
 msgid "GDB does not (yet) know how to evaluate that kind of expression"
 msgstr ""
 
-#: eval.c:3044
+#: eval.c:3054
 msgid "Attempt to take address of register or constant."
 msgstr ""
 
-#: eval.c:3343
+#: eval.c:3353
 msgid "Internal error in eval_type."
 msgstr ""
 
-#: eval.c:3354
+#: eval.c:3364
 msgid "Can't get dimensions for a non-array type"
 msgstr ""
 
-#: event-loop.c:431 event-loop.c:440 event-loop.c:504 event-loop.c:608
-#: event-loop.c:713 event-loop.c:778 event-loop.c:861 event-loop.c:1232
-msgid "use_poll without HAVE_POLL"
-msgstr ""
-
-#: event-loop.c:702
-#, possible-c-format
-msgid "Error detected on fd %d\n"
-msgstr ""
-
-#: event-loop.c:705
-#, possible-c-format
-msgid "Invalid or non-`poll'able fd %d\n"
-msgstr ""
-
-#: event-loop.c:720
-#, possible-c-format
-msgid "Exception condition detected on fd %d\n"
-msgstr ""
-
-#: event-top.c:374
+#: event-top.c:375
 msgid "double prompt"
 msgstr ""
 
 #. If stdin died, we may as well kill gdb.
-#: event-top.c:488
+#: event-top.c:489
 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:1203
+#: event-top.c:1216
 msgid "Erroneous arithmetic operation."
 msgstr ""
 
-#: exceptions.c:108
+#: exceptions.c:104
 msgid "Bad switch."
 msgstr ""
 
-#: exec.c:54
+#: exec.c:57
 msgid "Local exec file"
 msgstr ""
 
-#: exec.c:55
+#: exec.c:58
 msgid ""
 "Use an executable file as a target.\n"
 "Specify the filename of the executable file."
 msgstr ""
 
-#: exec.c:92
+#: exec.c:107
+#, possible-c-format
+msgid "exec-file-mismatch handling is currently \"%s\".\n"
+msgstr ""
+
+#: exec.c:127
+#, possible-c-format
+msgid "Unrecognized exec-file-mismatch setting: \"%s\""
+msgstr ""
+
+#: exec.c:139
 #, possible-c-format
 msgid "Writing into executable and core files is %s.\n"
 msgstr ""
 
-#: exec.c:208
+#: exec.c:308
+#, possible-c-format
+msgid ""
+"Build ID mismatch between current exec-file %ps\n"
+"and automatically determined exec-file %ps\n"
+"exec-file-mismatch handling is currently \"%s\""
+msgstr ""
+
+#: exec.c:329
+#, possible-c-format
+msgid "loading %ps %s"
+msgstr ""
+
+#: exec.c:354
 msgid ""
 "No executable has been specified and target does not support\n"
 "determining executable automatically.  Try using the \"file\" command."
 msgstr ""
 
-#: exec.c:261
+#: exec.c:407
 msgid "No executable file now.\n"
 msgstr ""
 
-#: exec.c:286
+#: exec.c:432
 #, possible-c-format
 msgid "writing into executable files is not supported for %s sysroots"
 msgstr ""
 
-#: exec.c:334
+#: exec.c:483
 #, possible-c-format
-msgid "\"%s\": could not open as an executable file: %s."
+msgid "\"%ps\": could not open as an executable file: %s."
 msgstr ""
 
-#: exec.c:351
+#: exec.c:501
 #, possible-c-format
-msgid "\"%s\": not in executable format: %s"
+msgid "\"%ps\": not in executable format: %s"
 msgstr ""
 
-#: exec.c:361
+#: exec.c:511
 #, possible-c-format
-msgid "\"%s\": can't find the file sections: %s"
+msgid "\"%ps\": can't find the file sections: %s"
 msgstr ""
 
-#: exec.c:398
+#: exec.c:549
 msgid ""
 "A program is being debugged already.\n"
 "Are you sure you want to change the file? "
 msgstr ""
 
-#: exec.c:400
+#: exec.c:551
 msgid "File not changed."
 msgstr ""
 
-#: exec.c:414
+#: exec.c:565
 msgid "No executable file name was specified"
 msgstr ""
 
-#: exec.c:884 maint.c:449 maint.c:484
+#: exec.c:1065 maint.c:390 maint.c:423
 #, possible-c-format
 msgid "file type %s.\n"
 msgstr ""
 
-#: exec.c:909
+#: exec.c:1090
 #, possible-c-format
-msgid "Cannot find section for the entry point of %s."
+msgid "Cannot find section for the entry point of %ps."
 msgstr ""
 
-#: exec.c:915
+#: exec.c:1097
 #, possible-c-format
 msgid "\tEntry point: %s\n"
 msgstr ""
 
-#: exec.c:948
+#: exec.c:1132
 msgid "\t<no file loaded>\n"
 msgstr ""
 
-#: exec.c:963
+#: exec.c:1147
 msgid "Must specify section name and its virtual address"
 msgstr ""
 
-#: exec.c:990
+#: exec.c:1174
 #, possible-c-format
 msgid "Section %s not found"
 msgstr ""
 
-#: exec.c:1026
+#: exec.c:1211
 msgid "Can't create a corefile"
 msgstr ""
 
-#: exec.c:1042
+#: exec.c:1228
 msgid ""
 "Use FILE as program to be debugged.\n"
 "It is read for its symbols, for getting the contents of pure memory,\n"
@@ -12178,7 +12319,7 @@ msgid ""
 "No arg means to have no executable file and no symbols."
 msgstr ""
 
-#: exec.c:1052
+#: exec.c:1238
 msgid ""
 "Use FILE as program for getting contents of pure memory.\n"
 "If FILE cannot be found as specified, your execution directory path\n"
@@ -12186,7 +12327,7 @@ msgid ""
 "No arg means have no executable file."
 msgstr ""
 
-#: exec.c:1059
+#: exec.c:1245
 msgid ""
 "Change the base address of section SECTION of the exec file to ADDR.\n"
 "This can be used if the exec file does not contain section addresses,\n"
@@ -12195,15 +12336,38 @@ msgid ""
 "``info files'' command lists all the sections and their addresses."
 msgstr ""
 
-#: exec.c:1066
+#: exec.c:1252
 msgid "Set writing into executable and core files."
 msgstr ""
 
-#: exec.c:1067
+#: exec.c:1253
 msgid "Show writing into executable and core files."
 msgstr ""
 
-#: expprint.c:253
+#: exec.c:1262
+msgid "Set exec-file-mismatch handling (ask|warn|off)."
+msgstr ""
+
+#: exec.c:1264
+msgid "Show exec-file-mismatch handling (ask|warn|off)."
+msgstr ""
+
+#: exec.c:1266
+msgid ""
+"Specifies how to handle a mismatch between the current exec-file\n"
+"loaded by GDB and the exec-file automatically determined when attaching\n"
+"to a process:\n"
+"\n"
+" ask  - warn the user and ask whether to load the determined exec-file.\n"
+" warn - warn the user, but do not change the exec-file.\n"
+" off  - do not check for mismatch.\n"
+"\n"
+"GDB detects a mismatch by comparing the build IDs of the files.\n"
+"If the user confirms loading the determined exec-file, then its symbols\n"
+"will be loaded as well."
+msgstr ""
+
+#: expprint.c:251
 msgid "bad selector"
 msgstr ""
 
@@ -12212,36 +12376,36 @@ msgstr ""
 #. Not found; don't try to keep going because we don't know how
 #. to interpret further elements.  For example, this happens
 #. if opcode is OP_TYPE.
-#: expprint.c:504 expprint.c:615
+#: expprint.c:500 expprint.c:611
 msgid "Invalid expression"
 msgstr ""
 
-#: expprint.c:515
+#: expprint.c:511
 #, possible-c-format
 msgid "<language %s has no 'this'>"
 msgstr ""
 
-#: extension.c:199
+#: extension.c:175
 #, possible-c-format
 msgid "Scripting in the \"%s\" language is not supported in this copy of GDB."
 msgstr ""
 
-#: extension.c:869
+#: extension.c:814
 #, possible-c-format
 msgid "Error while looking for matching xmethod workers defined in %s."
 msgstr ""
 
-#: extension.c:883
+#: extension.c:828
 #, possible-c-format
 msgid "Error while looking for arg types of a xmethod worker defined in %s."
 msgstr ""
 
-#: extension.c:899
+#: extension.c:844
 #, possible-c-format
 msgid "Error while fetching result type of an xmethod worker defined in %s."
 msgstr ""
 
-#: fbsd-nat.c:104
+#: fbsd-nat.c:104 nbsd-nat.c:224
 msgid "Couldn't fetch VM map entries."
 msgstr ""
 
@@ -12250,32 +12414,32 @@ msgstr ""
 msgid "Couldn't open %s."
 msgstr ""
 
-#: fbsd-nat.c:327 infcmd.c:3019 procfs.c:3552
+#: fbsd-nat.c:327 infcmd.c:2909 nbsd-nat.c:311 procfs.c:3330
 msgid "Not supported on this target."
 msgstr ""
 
-#: fbsd-nat.c:335 linux-tdep.c:763 procfs.c:3574
+#: fbsd-nat.c:335 linux-tdep.c:776 nbsd-nat.c:319 procfs.c:3352
 msgid "No current process: you must name one."
 msgstr ""
 
-#: fbsd-nat.c:340
+#: fbsd-nat.c:340 nbsd-nat.c:324
 msgid "Invalid arguments."
 msgstr ""
 
-#: fbsd-nat.c:342 fbsd-tdep.c:1516
+#: fbsd-nat.c:342 fbsd-tdep.c:1518 nbsd-nat.c:326
 #, possible-c-format
 msgid "process %d\n"
 msgstr ""
 
-#: fbsd-nat.c:354
+#: fbsd-nat.c:354 nbsd-nat.c:334
 msgid "unable to fetch command line"
 msgstr ""
 
-#: fbsd-nat.c:373
+#: fbsd-nat.c:373 nbsd-nat.c:342
 msgid "unable to fetch current working directory"
 msgstr ""
 
-#: fbsd-nat.c:394
+#: fbsd-nat.c:394 nbsd-nat.c:350
 msgid "unable to fetch executable path name"
 msgstr ""
 
@@ -12283,11 +12447,11 @@ msgstr ""
 msgid "unable to fetch list of open files"
 msgstr ""
 
-#: fbsd-nat.c:435
+#: fbsd-nat.c:435 nbsd-nat.c:371
 msgid "unable to fetch virtual memory map"
 msgstr ""
 
-#: fbsd-nat.c:441 fbsd-nat.c:936 fbsd-nat.c:1441
+#: fbsd-nat.c:441 fbsd-nat.c:936 fbsd-nat.c:1442 nbsd-nat.c:377
 msgid "Failed to fetch process information"
 msgstr ""
 
@@ -12301,170 +12465,186 @@ msgstr ""
 msgid "Debugging of FreeBSD native target is %s.\n"
 msgstr ""
 
-#: fbsd-nat.c:1351 linux-nat.c:1010 procfs.c:2287 procfs.c:2408
+#: fbsd-nat.c:1352 linux-nat.c:1026 nbsd-nat.c:630 procfs.c:2149 procfs.c:2256
 #, possible-c-format
 msgid "[%s exited]\n"
 msgstr ""
 
-#: fbsd-nat.c:1676
+#: fbsd-nat.c:1684
 msgid "Set debugging of FreeBSD lwp module."
 msgstr ""
 
-#: fbsd-nat.c:1677
+#: fbsd-nat.c:1685
 msgid "Show debugging of FreeBSD lwp module."
 msgstr ""
 
-#: fbsd-nat.c:1678 fbsd-nat.c:1686 linux-nat.c:4544 linux-nat.c:4553
+#: fbsd-nat.c:1686 fbsd-nat.c:1694 linux-nat.c:4384 linux-nat.c:4393
 msgid "Enables printf debugging output."
 msgstr ""
 
-#: fbsd-nat.c:1684
+#: fbsd-nat.c:1692
 msgid "Set debugging of FreeBSD native target."
 msgstr ""
 
-#: fbsd-nat.c:1685
+#: fbsd-nat.c:1693
 msgid "Show debugging of FreeBSD native target."
 msgstr ""
 
-#: fbsd-tdep.c:953
+#: fbsd-tdep.c:955
 msgid "Failed to format IPv4 address"
 msgstr ""
 
-#: fbsd-tdep.c:968
+#: fbsd-tdep.c:970
 msgid "Failed to format IPv6 address"
 msgstr ""
 
-#: fbsd-tdep.c:978
+#: fbsd-tdep.c:980
 msgid ""
 "Open files:\n"
 "\n"
 msgstr ""
 
-#: fbsd-tdep.c:1057
+#: fbsd-tdep.c:1059
 msgid "unable to find open files in core file"
 msgstr ""
 
-#: fbsd-tdep.c:1063 fbsd-tdep.c:1196 fbsd-tdep.c:1244 linux-tdep.c:1053
+#: fbsd-tdep.c:1065 fbsd-tdep.c:1198 fbsd-tdep.c:1246 linux-tdep.c:1095
 msgid "malformed core note - too short for header"
 msgstr ""
 
-#: fbsd-tdep.c:1068 fbsd-tdep.c:1201 fbsd-tdep.c:1249 fbsd-tdep.c:1355
-#: linux-tdep.c:1058
+#: fbsd-tdep.c:1070 fbsd-tdep.c:1203 fbsd-tdep.c:1251 fbsd-tdep.c:1357
+#: linux-tdep.c:1103
 msgid "could not get core note contents"
 msgstr ""
 
-#: fbsd-tdep.c:1082 fbsd-tdep.c:1263
+#: fbsd-tdep.c:1084 fbsd-tdep.c:1265
 msgid "malformed core note - file structure too small"
 msgstr ""
 
-#. No output for summary mode.
-#: fbsd-tdep.c:1131 linux-tdep.c:826 linux-tdep.c:1075 procfs.c:3509
-msgid ""
-"Mapped address spaces:\n"
-"\n"
-msgstr ""
-
-#: fbsd-tdep.c:1190 linux-tdep.c:1044
+#: fbsd-tdep.c:1192
 msgid "unable to find mappings in core file"
 msgstr ""
 
-#: fbsd-tdep.c:1214
+#: fbsd-tdep.c:1216
 msgid "malformed core note - vmmap entry too small"
 msgstr ""
 
-#: fbsd-tdep.c:1328
+#: fbsd-tdep.c:1330
 msgid "unable to find process info in core file"
 msgstr ""
 
-#: fbsd-tdep.c:1350
+#: fbsd-tdep.c:1352
 msgid "malformed core note - too short"
 msgstr ""
 
-#: fbsd-tdep.c:1365
+#: fbsd-tdep.c:1367
 msgid "unsupported process information in core file"
 msgstr ""
 
-#: fbsd-tdep.c:1526
+#: fbsd-tdep.c:1528
 msgid "Command line unavailable"
 msgstr ""
 
-#: fbsd-tdep.c:1535
+#: fbsd-tdep.c:1537
 msgid "unable to read current working directory"
 msgstr ""
 
-#: fbsd-tdep.c:1544
+#: fbsd-tdep.c:1546
 msgid "unable to read executable path name"
 msgstr ""
 
-#: fbsd-tdep.c:1587
+#: fbsd-tdep.c:1589
 msgid "Executable path"
 msgstr ""
 
-#: fbsd-tdep.c:1588
+#: fbsd-tdep.c:1590
 msgid "Canary for SSP"
 msgstr ""
 
-#: fbsd-tdep.c:1590
+#: fbsd-tdep.c:1592
 msgid "OSRELDATE"
 msgstr ""
 
-#: fbsd-tdep.c:1591
+#: fbsd-tdep.c:1593
 msgid "Number of CPUs"
 msgstr ""
 
-#: fbsd-tdep.c:1592
+#: fbsd-tdep.c:1594
 msgid "Pagesizes"
 msgstr ""
 
-#: fbsd-tdep.c:1593
+#: fbsd-tdep.c:1595
 msgid "Number of pagesizes"
 msgstr ""
 
-#: fbsd-tdep.c:1594
+#: fbsd-tdep.c:1596
 msgid "Pointer to timehands"
 msgstr ""
 
-#: fbsd-tdep.c:1595
+#: fbsd-tdep.c:1597
 msgid "Initial stack protection"
 msgstr ""
 
-#: fbsd-tdep.c:1596
+#: fbsd-tdep.c:1598
 msgid "ELF header e_flags"
 msgstr ""
 
+#: fbsd-tdep.c:1601
+msgid "ELF BSD flags"
+msgstr ""
+
+#: fbsd-tdep.c:1602
+msgid "Argument count"
+msgstr ""
+
+#: fbsd-tdep.c:1603
+msgid "Argument vector"
+msgstr ""
+
+#: fbsd-tdep.c:1604
+msgid "Environment count"
+msgstr ""
+
+#: fbsd-tdep.c:1605
+msgid "Environment vector"
+msgstr ""
+
+#: fbsd-tdep.c:1606
+msgid "Pointer to ps_strings"
+msgstr ""
+
 #. FreeBSD doesn't use gdbarch_get_syscall_number since FreeBSD
 #. native targets fetch the system call number from the
 #. 'pl_syscall_code' member of struct ptrace_lwpinfo in fbsd_wait.
 #. However, system call catching requires this function to be
 #. set.
-#: fbsd-tdep.c:1951
+#: fbsd-tdep.c:1959
 msgid "fbsd_get_sycall_number called"
 msgstr ""
 
-#: fbsd-tdep.c:1961
+#: fbsd-tdep.c:1969
 #, possible-c-format
 msgid "Unable to resolve symbol '%s'"
 msgstr ""
 
-#: fbsd-tdep.c:1965
+#: fbsd-tdep.c:1973
 #, possible-c-format
 msgid "Unable to read value of '%s'"
 msgstr ""
 
-#: fbsd-tdep.c:1983
+#: fbsd-tdep.c:1991
 msgid "Unable to find Struct_Obj_Entry symbol"
 msgstr ""
 
-#: fbsd-tdep.c:2027
+#: fbsd-tdep.c:2035
 msgid "Cannot fetch runtime linker structure offsets"
 msgstr ""
 
-#: fbsd-tdep.c:2036 fbsd-tdep.c:2052 fbsd-tdep.c:2061 target.c:687
-#: target.c:772
+#: fbsd-tdep.c:2044 fbsd-tdep.c:2060 fbsd-tdep.c:2069 target.c:702 target.c:787
 msgid "Cannot find thread-local variables on this target"
 msgstr ""
 
-#: f-exp.y:772 m2-exp.y:686
+#: f-exp.y:772 m2-exp.y:685
 msgid "Overflow on numeric constant."
 msgstr ""
 
@@ -12490,15 +12670,15 @@ msgid ""
 "The assumed file system kind for target reported file names is \"%s\".\n"
 msgstr ""
 
-#: filesystem.c:85
+#: filesystem.c:86
 msgid "Set assumed file system kind for target reported file names."
 msgstr ""
 
-#: filesystem.c:86
+#: filesystem.c:87
 msgid "Show assumed file system kind for target reported file names."
 msgstr ""
 
-#: filesystem.c:88
+#: filesystem.c:89
 msgid ""
 "If `unix', target file names (e.g., loaded shared library file names)\n"
 "starting the forward slash (`/') character are considered absolute,\n"
@@ -12522,8 +12702,8 @@ msgstr ""
 msgid "Empty search range.\n"
 msgstr ""
 
-#: findcmd.c:128 python/py-value.c:478 python/py-lazy-string.c:177
-#: python/py-lazy-string.c:210
+#: findcmd.c:128 python/py-lazy-string.c:177 python/py-lazy-string.c:210
+#: python/py-value.c:478
 msgid "Invalid length."
 msgstr ""
 
@@ -12547,7 +12727,7 @@ msgstr ""
 msgid "Search space too small to contain pattern."
 msgstr ""
 
-#: findcmd.c:286
+#: findcmd.c:287
 msgid ""
 "Search memory for a sequence of bytes.\n"
 "Usage:\n"
@@ -12580,213 +12760,212 @@ msgstr ""
 msgid "store_typed_address: type is not a pointer or reference"
 msgstr ""
 
-#: findvar.c:570
+#: findvar.c:578
 #, possible-c-format
 msgid "No frame is currently executing in block %s."
 msgstr ""
 
-#: findvar.c:573
+#: findvar.c:581
 msgid "No frame is currently executing in specified block"
 msgstr ""
 
-#: findvar.c:604
+#: findvar.c:612
 #, possible-c-format
 msgid "Cannot read `%s' without registers"
 msgstr ""
 
-#: findvar.c:670 findvar.c:682
+#: findvar.c:678 findvar.c:690
 #, possible-c-format
 msgid "Unknown argument list address for `%s'."
 msgstr ""
 
-#: findvar.c:696
+#: findvar.c:704
 #, possible-c-format
 msgid "Cannot look up value of a typedef `%s'."
 msgstr ""
 
-#: findvar.c:723 findvar.c:733
+#: findvar.c:731 findvar.c:741
 #, possible-c-format
 msgid "Value of register variable not available for `%s'."
 msgstr ""
 
-#: findvar.c:769
+#: findvar.c:777
 #, possible-c-format
 msgid "Missing %s symbol \"%s\"."
 msgstr ""
 
-#: findvar.c:795
+#: findvar.c:803
 #, possible-c-format
 msgid "Cannot look up value of a botched symbol `%s'."
 msgstr ""
 
-#: findvar.c:961
+#: findvar.c:968
 #, possible-c-format
 msgid "Invalid register #%d, expecting 0 <= # < %d"
 msgstr ""
 
-#: f-lang.c:69
+#: f-lang.c:65
 msgid "unrecognized character type"
 msgstr ""
 
-#: f-lang.c:287
+#: f-lang.c:159
 #, possible-c-format
 msgid "ABS of type %s not supported"
 msgstr ""
 
-#: f-lang.c:296
+#: f-lang.c:168
 msgid "non-matching types for parameters to MOD ()"
 msgstr ""
 
-#: f-lang.c:315
+#: f-lang.c:187
 msgid "calling MOD (N, 0) is undefined"
 msgstr ""
 
-#: f-lang.c:320
+#: f-lang.c:192
 #, possible-c-format
 msgid "MOD of type %s not supported"
 msgstr ""
 
-#: f-lang.c:329
+#: f-lang.c:201
 msgid "argument to CEILING must be of type float"
 msgstr ""
 
-#: f-lang.c:344
+#: f-lang.c:216
 msgid "argument to FLOOR must be of type float"
 msgstr ""
 
-#: f-lang.c:360
+#: f-lang.c:232
 msgid "non-matching types for parameters to MODULO ()"
 msgstr ""
 
-#: f-lang.c:387
+#: f-lang.c:259
 #, possible-c-format
 msgid "MODULO of type %s not supported"
 msgstr ""
 
-#: f-lang.c:408
+#: f-lang.c:280
 msgid "argument to kind must be an intrinsic type"
 msgstr ""
 
-#: fork-child.c:117 gdbserver/fork-child.c:83
+#: fork-child.c:112
 msgid "setpgrp failed in child"
 msgstr ""
 
-#: fork-child.c:153
+#: fork-child.c:151
 #, possible-c-format
 msgid "Use of shell to start subprocesses is %s.\n"
 msgstr ""
 
-#: fork-child.c:160
+#: fork-child.c:159
 msgid ""
 "Set a wrapper for running programs.\n"
 "The wrapper prepares the system and environment for the new program."
 msgstr ""
 
-#: fork-child.c:163
+#: fork-child.c:162
 msgid "Show the wrapper for running programs."
 msgstr ""
 
-#: fork-child.c:169
+#: fork-child.c:168
 msgid "Disable use of an execution wrapper."
 msgstr ""
 
-#: fork-child.c:173
+#: fork-child.c:172
 msgid "Set use of shell to start subprocesses.  The default is on."
 msgstr ""
 
-#: fork-child.c:174
+#: fork-child.c:173
 msgid "Show use of shell to start subprocesses."
 msgstr ""
 
-#: frame.c:308 infrun.c:8730 stack.c:2076 stack.c:2363
+#: frame.c:328 infrun.c:9053 stack.c:2097 stack.c:2335
 msgid "Unable to restore previously selected frame."
 msgstr ""
 
-#: frame.c:320
+#: frame.c:340
 #, possible-c-format
 msgid "Frame debugging is %s.\n"
 msgstr ""
 
-#: frame.c:330
+#: frame.c:350
 #, possible-c-format
 msgid "Whether backtraces should continue past \"main\" is %s.\n"
 msgstr ""
 
-#: frame.c:341
+#: frame.c:361
 #, possible-c-format
 msgid ""
 "Whether backtraces should continue past the entry point of a program is %s.\n"
 msgstr ""
 
-#: frame.c:353
+#: frame.c:373
 #, possible-c-format
 msgid "An upper bound on the number of backtrace levels is %s.\n"
 msgstr ""
 
-#: frame.c:973 frame.c:1045
+#: frame.c:1021 frame.c:1095
 msgid "PC not available"
 msgstr ""
 
-#: frame.c:975
+#: frame.c:1023
 msgid "PC not saved"
 msgstr ""
 
-#: frame.c:1084
+#: frame.c:1134
 msgid "Cannot pop the initial frame."
 msgstr ""
 
-#: frame.c:1091 infcmd.c:1957
+#: frame.c:1141 infcmd.c:1849
 msgid "Cannot find the caller frame."
 msgstr ""
 
-#: frame.c:1193 frame.c:1293 frame.c:1327
+#: frame.c:1243 frame.c:1343 frame.c:1377
 #, possible-c-format
 msgid "Register %d was not saved"
 msgstr ""
 
-#: frame.c:1196 frame.c:1298 frame.c:1332 gdbsupport/common-regcache.c:34
-#: regcache.c:567
+#: frame.c:1246 frame.c:1348 frame.c:1382 regcache.c:679
 #, possible-c-format
 msgid "Register %d is not available"
 msgstr ""
 
-#: frame.c:1382
+#: frame.c:1432
 msgid "Attempt to assign to a register that was not saved."
 msgstr ""
 
-#: frame.c:1394
+#: frame.c:1444
 msgid "Attempt to assign to an unmodifiable value."
 msgstr ""
 
-#: frame.c:1452
+#: frame.c:1502
 #, possible-c-format
 msgid ""
 "Bad debug information detected: Attempt to read %d bytes from registers."
 msgstr ""
 
-#: frame.c:1605 ia64-libunwind-tdep.c:346 ia64-tdep.c:1917 ia64-tdep.c:2288
+#: frame.c:1657 ia64-libunwind-tdep.c:339 ia64-tdep.c:1917 ia64-tdep.c:2288
 msgid "No registers."
 msgstr ""
 
-#: frame.c:1607 stack.c:1956 stack.c:1984 stack.c:3196 stack.c:3244
-#: stack.c:3259 thread.c:1863
+#: frame.c:1659 stack.c:1977 stack.c:2005 stack.c:3168 stack.c:3216
+#: stack.c:3231 thread.c:1893
 msgid "No stack."
 msgstr ""
 
-#: frame.c:1609
+#: frame.c:1661
 msgid "No memory."
 msgstr ""
 
 #. show_cmd_cb
-#: frame.c:2942
+#: frame.c:2992
 msgid "Set whether backtraces should continue past \"main\"."
 msgstr ""
 
-#: frame.c:2943
+#: frame.c:2993
 msgid "Show whether backtraces should continue past \"main\"."
 msgstr ""
 
-#: frame.c:2944
+#: frame.c:2994
 msgid ""
 "Normally the caller of \"main\" is not of interest, so GDB will terminate\n"
 "the backtrace at \"main\".  Set this if you need to see the rest\n"
@@ -12794,64 +12973,64 @@ msgid ""
 msgstr ""
 
 #. show_cmd_cb
-#: frame.c:2953
+#: frame.c:3003
 msgid ""
 "Set whether backtraces should continue past the entry point of a program."
 msgstr ""
 
-#: frame.c:2954
+#: frame.c:3004
 msgid ""
 "Show whether backtraces should continue past the entry point of a program."
 msgstr ""
 
-#: frame.c:2955
+#: frame.c:3005
 msgid ""
 "Normally there are no callers beyond the entry point of a program, so GDB\n"
 "will terminate the backtrace there.  Set this if you need to see\n"
 "the rest of the stack trace."
 msgstr ""
 
-#: frame.c:2970
+#: frame.c:3021
 msgid ""
 "Set backtrace specific variables.\n"
 "Configure backtrace variables such as the backtrace limit"
 msgstr ""
 
 #. allow-unknown
-#: frame.c:2975
+#: frame.c:3026
 msgid ""
 "Show backtrace specific variables.\n"
 "Show backtrace variables such as the backtrace limit."
 msgstr ""
 
-#: frame.c:2982
+#: frame.c:3033
 msgid "Set an upper bound on the number of backtrace levels."
 msgstr ""
 
-#: frame.c:2983
+#: frame.c:3034
 msgid "Show the upper bound on the number of backtrace levels."
 msgstr ""
 
-#: frame.c:2984
+#: frame.c:3035
 msgid ""
 "No more than the specified number of frames can be displayed or examined.\n"
 "Literal \"unlimited\" or zero means no limit."
 msgstr ""
 
 #. Debug this files internals.
-#: frame.c:2997
+#: frame.c:3048
 msgid "Set frame debugging."
 msgstr ""
 
-#: frame.c:2998
+#: frame.c:3049
 msgid "Show frame debugging."
 msgstr ""
 
-#: frame.c:2999
+#: frame.c:3050
 msgid "When non-zero, frame specific internal debugging is enabled."
 msgstr ""
 
-#: frame-unwind.c:168
+#: frame-unwind.c:196
 msgid "frame_unwind_find_by_frame failed"
 msgstr ""
 
@@ -12878,7 +13057,7 @@ msgstr ""
 msgid "Don't know how to return a %d-byte value."
 msgstr ""
 
-#: f-typeprint.c:461
+#: f-typeprint.c:466
 #, possible-c-format
 msgid "Invalid type code (%d) in symbol table."
 msgstr ""
@@ -12887,34 +13066,34 @@ msgstr ""
 msgid "Lower bound may not be '*' in F77"
 msgstr ""
 
-#: f-valprint.c:191
+#: f-valprint.c:188
 #, possible-c-format
 msgid "Type node corrupt! F77 arrays cannot have %d subscripts (%d Max)"
 msgstr ""
 
-#: f-valprint.c:405
+#: f-valprint.c:411
 #, possible-c-format
 msgid "Contents of F77 COMMON block '%s':\n"
 msgstr ""
 
-#: f-valprint.c:408
+#: f-valprint.c:414
 msgid "Contents of blank COMMON block:\n"
 msgstr ""
 
-#: f-valprint.c:459 stack.c:2598
+#: f-valprint.c:465 stack.c:2570
 msgid "No symbol table info available.\n"
 msgstr ""
 
-#: f-valprint.c:476
+#: f-valprint.c:482
 #, possible-c-format
 msgid "No common block '%s'.\n"
 msgstr ""
 
-#: f-valprint.c:478
+#: f-valprint.c:484
 msgid "No common blocks.\n"
 msgstr ""
 
-#: f-valprint.c:486
+#: f-valprint.c:493
 msgid "Print out the values contained in a Fortran COMMON block."
 msgstr ""
 
@@ -12941,37 +13120,37 @@ msgstr ""
 msgid "writing note section (%s)"
 msgstr ""
 
-#: gcore.c:175
+#: gcore.c:180
 msgid "Can't find default bfd machine type (need execfile)."
 msgstr ""
 
-#: gcore.c:189
+#: gcore.c:194
 msgid "Can't find bfd architecture for corefile (need execfile)."
 msgstr ""
 
-#: gcore.c:455
+#: gcore.c:460
 #, possible-c-format
 msgid "Couldn't make gcore segment: %s"
 msgstr ""
 
-#: gcore.c:553
+#: gcore.c:558
 #, possible-c-format
 msgid "Memory read failed for corefile section, %s bytes at %s."
 msgstr ""
 
-#: gcore.c:562
+#: gcore.c:567
 #, possible-c-format
 msgid "Failed to write corefile contents (%s)."
 msgstr ""
 
-#: gcore.c:596
+#: gcore.c:602
 msgid ""
 "Save a core file with the current state of the debugged process.\n"
 "Usage: generate-core-file [FILENAME]\n"
 "Argument is optional filename.  Default filename is 'core.PROCESS_ID'."
 msgstr ""
 
-#: gdbarch.c:68
+#: gdbarch.c:58
 #, possible-c-format
 msgid "Architecture debugging is %s.\n"
 msgstr ""
@@ -12981,89 +13160,91 @@ msgstr ""
 msgid "verify_gdbarch: the following are invalid ...%s"
 msgstr ""
 
-#: gdbarch.c:5322
+#: gdbarch.c:5309
+msgid ""
+"gdbarch post-init data field can only be used after gdbarch is fully "
+"initialised"
+msgstr ""
+
+#: gdbarch.c:5355
 msgid "gdbarch_architecture_names: multi-arch unknown"
 msgstr ""
 
-#: gdbarch.c:5348
+#: gdbarch.c:5381
 #, possible-c-format
 msgid "gdbarch: Attempt to register unknown architecture (%d)"
 msgstr ""
 
-#: gdbarch.c:5359
+#: gdbarch.c:5392
 #, possible-c-format
 msgid "gdbarch: Duplicate registration of architecture (%s)"
 msgstr ""
 
-#: gdbarch.c:5554
+#: gdbarch.c:5588
 msgid "Set architecture debugging."
 msgstr ""
 
-#: gdbarch.c:5555
+#: gdbarch.c:5589
 msgid "Show architecture debugging."
 msgstr ""
 
-#: gdbarch.c:5556
+#: gdbarch.c:5590
 msgid "When non-zero, architecture debugging is enabled."
 msgstr ""
 
-#: gdbarch-selftests.c:77 regcache.c:1526 regcache.c:1694
-msgid "target already pushed"
-msgstr ""
-
-#: gdb_bfd.c:144
+#: gdb_bfd.c:134
 #, possible-c-format
 msgid "BFD sharing is %s.\n"
 msgstr ""
 
-#: gdb_bfd.c:154
+#: gdb_bfd.c:144
 #, possible-c-format
 msgid "BFD cache debugging is %s.\n"
 msgstr ""
 
-#: gdb_bfd.c:513
+#: gdb_bfd.c:544
 #, possible-c-format
 msgid "cannot close \"%s\": %s"
 msgstr ""
 
-#: gdb_bfd.c:704
+#: gdb_bfd.c:726
 #, possible-c-format
 msgid "Can't read data for section '%s' in file '%s'"
 msgstr ""
 
-#: gdb_bfd.c:731 gdb_bfd.c:744
+#: gdb_bfd.c:753 gdb_bfd.c:766
 #, possible-c-format
 msgid "Problem reading \"%s\" for CRC: %s"
 msgstr ""
 
-#: gdb_bfd.c:971
+#: gdb_bfd.c:1006
 msgid "List the BFDs that are currently open."
 msgstr ""
 
-#: gdb_bfd.c:976
+#: gdb_bfd.c:1011
 msgid "Set whether gdb will share bfds that appear to be the same file."
 msgstr ""
 
-#: gdb_bfd.c:977
+#: gdb_bfd.c:1012
 msgid "Show whether gdb will share bfds that appear to be the same file."
 msgstr ""
 
-#: gdb_bfd.c:978
+#: gdb_bfd.c:1013
 msgid ""
 "When enabled gdb will reuse existing bfds rather than reopening the\n"
 "same file.  To decide if two files are the same then gdb compares the\n"
 "filename, file size, file modification time, and file inode."
 msgstr ""
 
-#: gdb_bfd.c:988
+#: gdb_bfd.c:1023
 msgid "Set bfd cache debugging."
 msgstr ""
 
-#: gdb_bfd.c:989
+#: gdb_bfd.c:1024
 msgid "Show bfd cache debugging."
 msgstr ""
 
-#: gdb_bfd.c:990
+#: gdb_bfd.c:1025
 msgid "When non-zero, bfd cache specific debugging is enabled."
 msgstr ""
 
@@ -13096,525 +13277,125 @@ msgstr ""
 msgid "Can't demangle \"%s\""
 msgstr ""
 
-#: gdb-demangle.c:239
+#: gdb-demangle.c:240
 msgid "Set demangling of encoded C++/ObjC names when displaying symbols."
 msgstr ""
 
-#: gdb-demangle.c:240
+#: gdb-demangle.c:241
 msgid "Show demangling of encoded C++/ObjC names when displaying symbols."
 msgstr ""
 
-#: gdb-demangle.c:246
+#: gdb-demangle.c:247
 msgid "Set demangling of C++/ObjC names in disassembly listings."
 msgstr ""
 
-#: gdb-demangle.c:247
+#: gdb-demangle.c:248
 msgid "Show demangling of C++/ObjC names in disassembly listings."
 msgstr ""
 
-#: gdb-demangle.c:255
+#: gdb-demangle.c:256
 msgid "Set the current C++ demangling style."
 msgstr ""
 
-#: gdb-demangle.c:256
+#: gdb-demangle.c:257
 msgid "Show the current C++ demangling style."
 msgstr ""
 
-#: gdb-demangle.c:257
+#: gdb-demangle.c:258
 msgid ""
 "Use `set demangle-style' without arguments for a list of demangling styles."
 msgstr ""
 
-#: gdb-demangle.c:263
+#: gdb-demangle.c:264
 msgid ""
 "Demangle a mangled name.\n"
 "Usage: demangle [-l LANGUAGE] [--] NAME\n"
 "If LANGUAGE is not specified, NAME is demangled in the current language."
 msgstr ""
 
-#: gdbserver/target.h:624 gdbserver/target.h:633 gdbserver/target.h:644
-#: gdbserver/target.h:654 remote.c:13763 remote.c:13812 remote.c:13853
-msgid "Target does not support branch tracing."
-msgstr ""
-
-#: gdbserver/win32-low.c:585
-msgid "Could not convert the expanded inferior cwd to wide-char."
-msgstr ""
-
-#: gdbserver/ax.c:837 printcmd.c:2587
-msgid "Wrong number of arguments for specified format-string"
-msgstr ""
-
-#: gdbserver/ax.c:889
-msgid "long long not supported in agent printf"
-msgstr ""
-
-#: gdbserver/ax.c:928
-#, possible-c-format
-msgid "Format directive in '%s' not supported in agent printf"
-msgstr ""
-
-#: gdbserver/ax.c:1334
-msgid "Unterminated format string in printf bytecode"
-msgstr ""
-
-#: gdbserver/regcache.c:439
-#, possible-c-format
-msgid "That operation is not available on integers of more than%d bytes."
-msgstr ""
-
-#: gdbserver/remote-utils.c:198
-#, c-format
-msgid "Could not obtain remote address: %s\n"
-msgstr ""
-
-#: gdbserver/remote-utils.c:201
-#, c-format
-msgid "Remote debugging from host %s, port %s\n"
-msgstr ""
-
-#: gdbserver/remote-utils.c:276
-#, possible-c-format
-msgid "%s: cannot resolve name: %s"
-msgstr ""
-
-#: gdbserver/remote-utils.c:309
-#, possible-c-format
-msgid "Invalid 'ai_family' %d\n"
-msgstr ""
-
-#: gdbserver/remote-utils.c:405
-#, c-format
-msgid "Can't obtain port where we are listening: %s"
-msgstr ""
-
-#: gdbserver/remote-utils.c:408
-#, c-format
-msgid "Listening on port %s\n"
-msgstr ""
-
-#: gdbserver/linux-x86-low.c:766 gdbserver/linux-tile-low.c:159
-msgid "Can't debug 64-bit process with 32-bit GDBserver"
-msgstr ""
-
-#: gdbserver/linux-x86-low.c:769
-msgid "Can't debug x86-64 process with 32-bit GDBserver"
-msgstr ""
-
-#: gdbserver/server.c:272 remote-sim.c:625
-msgid "No executable file specified."
-msgstr ""
-
-#: gdbserver/server.c:392 gdbserver/server.c:404
-msgid "Btrace already enabled."
-msgstr ""
-
-#: gdbserver/server.c:417
-msgid "Branch tracing not enabled."
-msgstr ""
-
-#: gdbserver/server.c:420 x86-linux-nat.c:241
-msgid "Could not disable branch tracing."
-msgstr ""
-
-#: gdbserver/server.c:462
-msgid "Bad Qbtrace operation.  Use bts, pt, or off."
-msgstr ""
-
-#: gdbserver/server.c:666
-#, possible-c-format
-msgid "[QEnvironmentHexEncoded received '%s']\n"
-msgstr ""
-
-#: gdbserver/server.c:667
-#, possible-c-format
-msgid "[Environment variable to be set: '%s']\n"
-msgstr ""
-
-#: gdbserver/server.c:675
-#, possible-c-format
-msgid "Unexpected format for environment variable: '%s'"
-msgstr ""
-
-#: gdbserver/server.c:697
-#, possible-c-format
-msgid "[QEnvironmentUnset received '%s']\n"
-msgstr ""
-
-#: gdbserver/server.c:698
-#, possible-c-format
-msgid "[Environment variable to be unset: '%s']\n"
-msgstr ""
-
-#: gdbserver/server.c:860
-#, possible-c-format
-msgid "[Inferior will %s started with shell]"
-msgstr ""
-
-#: gdbserver/server.c:878
-#, possible-c-format
-msgid "[Set the inferior's current directory to %s]\n"
-msgstr ""
-
-#: gdbserver/server.c:888
-msgid "[Unset the inferior's current directory; will use gdbserver's cwd]\n"
-msgstr ""
-
-#: gdbserver/server.c:3563
-#, possible-c-format
-msgid "Could not find current working directory: %s"
-msgstr ""
-
-#: gdbserver/server.c:3771 maint.c:1123 maint.c:1137
-#, c-format
-msgid "Selftests have been disabled for this build.\n"
-msgstr ""
-
-#: gdbserver/gdbreplay.c:175 ser-tcp.c:291
-#, possible-c-format
-msgid "Missing port on hostname '%s'"
-msgstr ""
-
-#: gdbserver/thread-db.c:666
-#, possible-c-format
-msgid "libthread-db-search-path component too long, ignored: %s."
-msgstr ""
-
-#: gdbserver/linux-low.c:745 linux-nat.c:2115
-#, possible-c-format
-msgid "unknown ptrace event %d"
-msgstr ""
-
-#: gdbserver/linux-low.c:1171 linux-nat.c:1138
-#, possible-c-format
-msgid "Cannot attach to lwp %d: %s"
-msgstr ""
-
-#: 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:1568 linux-nat.c:1428
-#, possible-c-format
-msgid "Reaping LWP %d while detaching returned unexpected status 0x%x"
-msgstr ""
-
-#: gdbserver/linux-low.c:1575 linux-nat.c:1435
-#, possible-c-format
-msgid "Can't detach %s: %s"
-msgstr ""
-
-#: gdbserver/linux-s390-low.c:482
-msgid "Couldn't determine word size, assuming 64-bit."
-msgstr ""
-
-#: gdbsupport/agent.c:117
-msgid "Error reading helper thread's id in lib"
-msgstr ""
-
-#: gdbsupport/agent.c:152
-#, possible-c-format
-msgid "error opening sync socket: %s"
-msgstr ""
-
-#: gdbsupport/agent.c:161
-msgid "string overflow allocating socket name"
-msgstr ""
-
-#: gdbsupport/agent.c:169
-#, possible-c-format
-msgid ""
-"error connecting sync socket (%s): %s. Make sure the directory exists and "
-"that it is writable."
-msgstr ""
-
-#: gdbsupport/agent.c:200
-msgid "unable to write"
-msgstr ""
-
-#: gdbsupport/agent.c:248
-msgid "Error reading command response"
-msgstr ""
-
-#: gdbsupport/agent.c:268
-msgid "Error reading capability of agent"
-msgstr ""
-
-#: gdbsupport/common-exceptions.c:77 gdbsupport/common-exceptions.c:122
-msgid "bad state"
-msgstr ""
-
-#: gdbsupport/btrace-common.c:32
-msgid "No or unknown format"
-msgstr ""
-
-#: gdbsupport/btrace-common.c:35
-msgid "Branch Trace Store"
-msgstr ""
-
-#: gdbsupport/btrace-common.c:38
-msgid "Intel Processor Trace"
-msgstr ""
-
-#: gdbsupport/btrace-common.c:41 gdbsupport/btrace-common.c:61
-msgid "Unknown branch trace format"
-msgstr ""
-
-#: gdbsupport/scoped_mmap.c:40
-msgid "file to mmap is empty"
-msgstr ""
-
-#: gdbsupport/signals.c:352
-msgid "GDB bug: target.c (gdb_signal_from_host): unrecognized real-time signal"
-msgstr ""
-
-#. The user might be trying to do "signal SIGSAK" where this system
-#. doesn't have SIGSAK.
-#: gdbsupport/signals.c:647
-#, possible-c-format
-msgid "Signal %s does not exist on this system."
-msgstr ""
-
-#: gdbsupport/tdesc.c:307 gdbsupport/tdesc.c:361
-#, possible-c-format
-msgid "xml output is not supported for type \"%s\"."
-msgstr ""
-
-#. Check that VALUE is true, and, if not, throw an exception.
-#: gdbsupport/selftest.h:70
-#, possible-c-format
-msgid "self-test failed at %s:%d"
-msgstr ""
-
-#: gdbsupport/filestuff.c:218
-msgid "fd not found in open_fds"
-msgstr ""
-
-#: gdbsupport/filestuff.c:381
-msgid "socketpair not available on this host"
-msgstr ""
-
-#: gdbsupport/filestuff.c:422
-msgid "pipe not available on this host"
-msgstr ""
-
-#: gdbsupport/gdb-dlfcn.c:73 gdbsupport/gdb-dlfcn.c:87
-#, possible-c-format
-msgid "Could not load %s: %s"
-msgstr ""
-
-#: gdbsupport/gdb_string_view.h:190
-#, possible-c-format
-msgid ""
-"basic_string_view::at: __pos (which is %zu) >= this->size() (which is %zu)"
-msgstr ""
-
-#: gdbsupport/gdb_string_view.h:260
-#, possible-c-format
-msgid ""
-"basic_string_view::copy: __pos (which is %zu) > this->size() (which is %zu)"
-msgstr ""
-
-#: gdbsupport/gdb_string_view.h:280
-#, possible-c-format
-msgid ""
-"basic_string_view::substr: __pos (which is %zu) > this->size() (which is %zu)"
-msgstr ""
-
-#: gdbsupport/common-utils.c:57
-msgid "vasprintf call failed"
-msgstr ""
-
-#: gdbsupport/gdb_assert.h:42
-#, possible-c-format
-msgid "%s: Assertion `%s' failed."
-msgstr ""
-
-#: gdbsupport/gdb_assert.h:46
-#, possible-c-format
-msgid "Assertion `%s' failed."
-msgstr ""
-
-#: gdbsupport/gdb_tilde_expand.c:39
-#, possible-c-format
-msgid "Could not find a match for '%s'."
-msgstr ""
-
-#: gdbsupport/gdb_tilde_expand.c:41
-#, possible-c-format
-msgid "glob could not process pattern '%s'."
-msgstr ""
-
-#: gdbsupport/pathstuff.c:258
-msgid "Couldn't find temp dir path, both TMP and TEMP are unset."
-msgstr ""
-
-#: gdbsupport/rsp-low.c:35
-#, possible-c-format
-msgid "Reply contains invalid hex digit %d"
-msgstr ""
-
-#: gdbsupport/rsp-low.c:289
-msgid "Received too much data from the target."
-msgstr ""
-
-#: gdbsupport/rsp-low.c:303
-msgid "Unmatched escape character in target response."
-msgstr ""
-
-#: gdbsupport/selftest.c:86
-#, possible-c-format
-msgid "Running selftest %s.\n"
-msgstr ""
-
-#: gdbsupport/selftest.c:99
-#, possible-c-format
-msgid "Ran %d unit tests, %d failed\n"
-msgstr ""
-
-#: gdbsupport/print-utils.c:241
-msgid "hex_string_custom: insufficient space to store result"
-msgstr ""
-
-#: gdbsupport/netstuff.c:68
-#, possible-c-format
-msgid "Missing close bracket in hostname '%s'"
-msgstr ""
-
-#: gdbsupport/netstuff.c:78
-#, possible-c-format
-msgid "Invalid cruft after close bracket in '%s'"
-msgstr ""
-
-#: gdbsupport/netstuff.c:86
-#, possible-c-format
-msgid "Missing open bracket in hostname '%s'"
-msgstr ""
-
-#. ??? TODO: handle other escape sequences.
-#: gdbsupport/format.c:90
-#, possible-c-format
-msgid "Unrecognized escape character \\%c in format string."
-msgstr ""
-
-#: gdbsupport/format.c:344
-msgid "`*' not supported for precision or width in printf"
-msgstr ""
-
-#: gdbsupport/format.c:347
-msgid "Format specifier `n' not supported in printf"
-msgstr ""
-
-#: gdbsupport/format.c:350
-msgid "Incomplete format specifier at end of format string"
-msgstr ""
-
-#: gdbsupport/format.c:353
-#, possible-c-format
-msgid "Unrecognized format specifier '%c' in printf"
-msgstr ""
-
-#: gdbsupport/format.c:357
-#, possible-c-format
-msgid "Inappropriate modifiers to format specifier '%c' in printf"
-msgstr ""
-
-#: 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:82
-#, c-format
-msgid ""
-"Some signal dispositions inherited from the environment (SIG_DFL/SIG_IGN)\n"
-"won't be propagated to spawned programs.\n"
-msgstr ""
-
-#: gdbtypes.c:137
+#: gdbtypes.c:142
 #, possible-c-format
 msgid ""
 "Resolution of opaque struct/class/union types (if set before loading "
 "symbols) is %s.\n"
 msgstr ""
 
-#: gdbtypes.c:148
+#: gdbtypes.c:153
 #, possible-c-format
 msgid "Debugging of C++ overloading is %s.\n"
 msgstr ""
 
-#: gdbtypes.c:158
+#: gdbtypes.c:163
 #, possible-c-format
 msgid "Strict type checking is %s.\n"
 msgstr ""
 
-#: gdbtypes.c:593
+#: gdbtypes.c:598
 #, possible-c-format
 msgid "Unknown address space specifier: \"%s\""
 msgstr ""
 
-#: gdbtypes.c:1548
+#: gdbtypes.c:1661
 #, possible-c-format
 msgid "Invalid anonymous type %s [in module %s], GCC PR debug/47510 bug?"
 msgstr ""
 
-#: gdbtypes.c:1571
+#: gdbtypes.c:1684
 #, possible-c-format
 msgid "No type named %s."
 msgstr ""
 
-#: gdbtypes.c:1612 objc-lang.c:96
+#: gdbtypes.c:1725 objc-lang.c:96
 #, possible-c-format
 msgid "No struct type named %s."
 msgstr ""
 
-#: gdbtypes.c:1616 gdbtypes.c:1691 objc-lang.c:103
+#: gdbtypes.c:1729 gdbtypes.c:1804 objc-lang.c:103
 #, possible-c-format
 msgid "This context has class, union or enum %s, not a struct."
 msgstr ""
 
-#: gdbtypes.c:1634
+#: gdbtypes.c:1747
 #, possible-c-format
 msgid "No union type named %s."
 msgstr ""
 
 #. If we get here, it's not a union.
-#: gdbtypes.c:1642
+#: gdbtypes.c:1755
 #, possible-c-format
 msgid "This context has class, struct or enum %s, not a union."
 msgstr ""
 
-#: gdbtypes.c:1657
+#: gdbtypes.c:1770
 #, possible-c-format
 msgid "No enum type named %s."
 msgstr ""
 
-#: gdbtypes.c:1661
+#: gdbtypes.c:1774
 #, possible-c-format
 msgid "This context has class, struct or union %s, not an enum."
 msgstr ""
 
-#: gdbtypes.c:1687
+#: gdbtypes.c:1800
 #, possible-c-format
 msgid "No template type named %s."
 msgstr ""
 
-#: gdbtypes.c:1717
+#: gdbtypes.c:1830
 #, possible-c-format
 msgid "Type %s is not a structure or union type."
 msgstr ""
 
-#: gdbtypes.c:1753
+#: gdbtypes.c:1866
 #, possible-c-format
 msgid "Type %s has no component named %s."
 msgstr ""
 
-#: gdbtypes.c:1918
+#: gdbtypes.c:2031
 msgid "stub type has NULL name"
 msgstr ""
 
-#: gdbtypes.c:2076
+#: gdbtypes.c:2201
 msgid ""
 "bit strides that are not a multiple of the byte size are currently not "
 "supported"
@@ -13623,295 +13404,295 @@ 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:2158
+#: gdbtypes.c:2277
 #, possible-c-format
 msgid "cannot determine array stride for type %s"
 msgstr ""
 
-#: gdbtypes.c:2248
+#: gdbtypes.c:2401 gdbtypes.c:2557
 msgid "Cannot determine struct field location (invalid location kind)"
 msgstr ""
 
-#: gdbtypes.c:2700
+#: gdbtypes.c:3028
 #, possible-c-format
 msgid "Internal: Cannot demangle mangled name `%s'."
 msgstr ""
 
-#: gdbtypes.c:3788
+#: gdbtypes.c:4137
 #, possible-c-format
 msgid "Unsupported field kind %d by check_types_equal"
 msgstr ""
 
-#: gdbtypes.c:4455
+#: gdbtypes.c:4804
 #, possible-c-format
 msgid ") length %d\n"
 msgstr ""
 
-#: gdbtypes.c:4604
+#: gdbtypes.c:4983
 msgid " <same as already seen type>\n"
 msgstr ""
 
-#: gdbtypes.c:5051
+#: gdbtypes.c:5427
 #, possible-c-format
 msgid "Unexpected type field location kind: %d"
 msgstr ""
 
-#: gdbtypes.c:5696
+#: gdbtypes.c:6062
 msgid "Set debugging of C++ overloading."
 msgstr ""
 
-#: gdbtypes.c:5697
+#: gdbtypes.c:6063
 msgid "Show debugging of C++ overloading."
 msgstr ""
 
-#: gdbtypes.c:5698
+#: gdbtypes.c:6064
 msgid "When enabled, ranking of the functions is displayed."
 msgstr ""
 
-#: gdbtypes.c:5707
+#: gdbtypes.c:6073
 msgid ""
 "Set resolution of opaque struct/class/union types (if set before loading "
 "symbols)."
 msgstr ""
 
-#: gdbtypes.c:5709
+#: gdbtypes.c:6075
 msgid ""
 "Show resolution of opaque struct/class/union types (if set before loading "
 "symbols)."
 msgstr ""
 
-#: gdbtypes.c:5718
+#: gdbtypes.c:6084
 msgid "Set strict type checking."
 msgstr ""
 
-#: gdbtypes.c:5719
+#: gdbtypes.c:6085
 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:1600
+#: gdbtypes.h:1825
 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:1606
+#: gdbtypes.h:1831
 msgid "<error type>"
 msgstr ""
 
-#: gnu-nat.c:345
+#: gnu-nat.c:320
 #, possible-c-format
 msgid "Stopped %s."
 msgstr ""
 
-#: gnu-nat.c:483 gnu-nat.c:513
+#: gnu-nat.c:458 gnu-nat.c:488
 #, possible-c-format
 msgid "Error setting exception port for %s: %s"
 msgstr ""
 
-#: gnu-nat.c:590
+#: gnu-nat.c:565
 #, possible-c-format
 msgid "Couldn't request notification for port %lu: %s"
 msgstr ""
 
-#: gnu-nat.c:740
+#: gnu-nat.c:715
 #, possible-c-format
 msgid "Error allocating event port: %s"
 msgstr ""
 
-#: gnu-nat.c:765
+#: gnu-nat.c:740
 #, possible-c-format
 msgid "Error getting task for pid %d: %s"
 msgstr ""
 
-#: gnu-nat.c:869
+#: gnu-nat.c:844
 #, possible-c-format
 msgid "Pid %d has an additional task suspend count of %d; clear it? "
 msgstr ""
 
-#: gnu-nat.c:872
+#: gnu-nat.c:847
 msgid "Additional task suspend count left untouched."
 msgstr ""
 
-#: gnu-nat.c:899 gnu-nat.c:904
+#: gnu-nat.c:874 gnu-nat.c:879
 #, possible-c-format
 msgid "Can't modify tracing state for pid %d: %s"
 msgstr ""
 
-#: gnu-nat.c:1376
+#: gnu-nat.c:1351
 #, possible-c-format
 msgid "Can't forward spontaneous exception (%s)."
 msgstr ""
 
 #. Can't do too much...
-#: gnu-nat.c:1416
+#: gnu-nat.c:1391
 #, possible-c-format
 msgid "Can't deliver signal %s: No signal thread."
 msgstr ""
 
-#: gnu-nat.c:1418
+#: gnu-nat.c:1393
 #, possible-c-format
 msgid "Delivering signal %s: %s"
 msgstr ""
 
-#: gnu-nat.c:1449
+#: gnu-nat.c:1424
 #, possible-c-format
 msgid "Can't continue process: %s"
 msgstr ""
 
-#: gnu-nat.c:1491
+#: gnu-nat.c:1460
 msgid "There are no threads; try again later."
 msgstr ""
 
-#: gnu-nat.c:1515
+#: gnu-nat.c:1484
 #, possible-c-format
 msgid "wait request failed: %s"
 msgstr ""
 
-#: gnu-nat.c:1551
+#: gnu-nat.c:1520
 #, possible-c-format
 msgid "Couldn't wait for an event: %s"
 msgstr ""
 
 #. Whatever it is, it's something strange.
-#: gnu-nat.c:1571
+#: gnu-nat.c:1540
 #, possible-c-format
 msgid "Got a strange event, msg id = %d."
 msgstr ""
 
-#: gnu-nat.c:1574
+#: gnu-nat.c:1543
 #, possible-c-format
 msgid "Handling event, msgid = %d: %s"
 msgstr ""
 
-#: gnu-nat.c:1749
+#: gnu-nat.c:1718
 #, possible-c-format
 msgid "Pid %d died with unknown exit status, using SIGKILL."
 msgstr ""
 
-#: gnu-nat.c:1802
+#: gnu-nat.c:1771
 #, possible-c-format
 msgid "illegal rpc: %s"
 msgstr ""
 
-#: gnu-nat.c:1847
+#: gnu-nat.c:1816
 #, possible-c-format
 msgid "Can't wait for pid %d: %s"
 msgstr ""
 
-#: gnu-nat.c:1953
+#: gnu-nat.c:1922
 #, possible-c-format
 msgid "Signal delivery failed: %s"
 msgstr ""
 
-#: gnu-nat.c:2025
+#: gnu-nat.c:1994
 #, possible-c-format
 msgid "Aborting %s with unforwarded exception %s."
 msgstr ""
 
-#: gnu-nat.c:2054
+#: gnu-nat.c:2023
 #, possible-c-format
 msgid "Can't run single thread id %s: no such thread!"
 msgstr ""
 
-#: gnu-nat.c:2065
+#: gnu-nat.c:2034
 #, possible-c-format
 msgid "Can't step thread id %s: no such thread."
 msgstr ""
 
-#: gnu-nat.c:2286
+#: gnu-nat.c:2254
 msgid "stop target function not implemented"
 msgstr ""
 
-#: gnu-nat.c:2320
+#: gnu-nat.c:2288
 #, possible-c-format
 msgid "Read from inferior faulted: %s"
 msgstr ""
 
-#: gnu-nat.c:2326
+#: gnu-nat.c:2294
 #, possible-c-format
 msgid "gnu_read_inferior vm_deallocate failed: %s"
 msgstr ""
 
-#: gnu-nat.c:2413
+#: gnu-nat.c:2381
 #, possible-c-format
 msgid "No memory at 0x%lx. Nothing written"
 msgstr ""
 
-#: gnu-nat.c:2422
+#: gnu-nat.c:2390
 #, possible-c-format
 msgid "Memory at address 0x%lx is unwritable. Nothing written"
 msgstr ""
 
-#: gnu-nat.c:2495
+#: gnu-nat.c:2463
 #, possible-c-format
 msgid "%s: %s"
 msgstr ""
 
-#: gnu-nat.c:2660
+#: gnu-nat.c:2626
 #, possible-c-format
 msgid "vm_region failed: %s"
 msgstr ""
 
-#: gnu-nat.c:2781
+#: gnu-nat.c:2747
 #, possible-c-format
 msgid "Illegal argument for \"%s\" command, should be an integer."
 msgstr ""
 
-#: gnu-nat.c:2794
+#: gnu-nat.c:2760
 #, possible-c-format
 msgid "Illegal argument for \"%s\" command, should be \"%s\" or \"%s\"."
 msgstr ""
 
-#: gnu-nat.c:2806
+#: gnu-nat.c:2772
 #, possible-c-format
 msgid "Garbage after \"%s\" command: `%s'"
 msgstr ""
 
-#: gnu-nat.c:2817
+#: gnu-nat.c:2783
 msgid "No current thread."
 msgstr ""
 
-#: gnu-nat.c:2828
+#: gnu-nat.c:2794
 msgid "No current process."
 msgstr ""
 
-#: gnu-nat.c:2948
+#: gnu-nat.c:2914
 msgid "No inferior task."
 msgstr ""
 
-#: gnu-nat.c:2954
+#: gnu-nat.c:2920
 #, possible-c-format
 msgid "Couldn't extract send right %lu from inferior: %s"
 msgstr ""
 
-#: gnu-nat.c:2970
+#: gnu-nat.c:2936
 #, possible-c-format
 msgid "Can't set exception port for %s: %s"
 msgstr ""
 
-#: gnu-nat.c:2981
+#: gnu-nat.c:2947
 msgid "No argument to \"set task exception-port\" command."
 msgstr ""
 
-#: gnu-nat.c:3007
+#: gnu-nat.c:2973
 msgid ""
 "Illegal argument to \"set signal-thread\" command.\n"
 "Should be a thread ID, or \"none\"."
 msgstr ""
 
-#: gnu-nat.c:3158
+#: gnu-nat.c:3124
 #, possible-c-format
 msgid "%ld: %s."
 msgstr ""
 
-#: gnu-nat.c:3168 utils.c:604
+#: gnu-nat.c:3134 utils.c:591
 #, possible-c-format
 msgid "%s."
 msgstr ""
 
-#: gnu-nat.c:3208
+#: gnu-nat.c:3174
 msgid ""
 "Set whether the new threads are suspended while gdb has control.\n"
 "This property normally has no effect because the whole task is\n"
@@ -13919,78 +13700,78 @@ msgid ""
 "The default value is \"off\"."
 msgstr ""
 
-#: gnu-nat.c:3214
+#: gnu-nat.c:3180
 msgid "Show whether new threads are suspended while gdb has control."
 msgstr ""
 
-#: gnu-nat.c:3218
+#: gnu-nat.c:3184
 msgid "Set whether new threads are allowed to run (once gdb has noticed them)."
 msgstr ""
 
-#: gnu-nat.c:3221
+#: gnu-nat.c:3187
 msgid ""
 "Show whether new threads are allowed to run (once gdb has noticed them)."
 msgstr ""
 
-#: gnu-nat.c:3226
+#: gnu-nat.c:3192
 msgid "Set the default detach-suspend-count value for new threads."
 msgstr ""
 
-#: gnu-nat.c:3229
+#: gnu-nat.c:3195
 msgid "Show the default detach-suspend-count value for new threads."
 msgstr ""
 
-#: gnu-nat.c:3232
+#: gnu-nat.c:3198
 msgid ""
 "Set whether the inferior process's signals will be intercepted.\n"
 "Mach exceptions (such as breakpoint traps) are not affected."
 msgstr ""
 
-#: gnu-nat.c:3237
+#: gnu-nat.c:3203
 msgid "Show whether the inferior process's signals will be intercepted."
 msgstr ""
 
-#: gnu-nat.c:3242
+#: gnu-nat.c:3208
 msgid ""
 "Set the thread that gdb thinks is the libc signal thread.\n"
 "This thread is run when delivering a signal to a non-stopped process."
 msgstr ""
 
-#: gnu-nat.c:3247
+#: gnu-nat.c:3213
 msgid "Set the thread that gdb thinks is the libc signal thread."
 msgstr ""
 
-#: gnu-nat.c:3252
+#: gnu-nat.c:3218
 msgid ""
 "Set whether gdb thinks the inferior process is stopped as with SIGSTOP.\n"
 "Stopped process will be continued by sending them a signal."
 msgstr ""
 
-#: gnu-nat.c:3256
+#: gnu-nat.c:3222
 msgid ""
 "Show whether gdb thinks the inferior process is stopped as with SIGSTOP."
 msgstr ""
 
-#: gnu-nat.c:3260
+#: gnu-nat.c:3226
 msgid ""
 "Set whether exceptions in the inferior process will be trapped.\n"
 "When exceptions are turned off, neither breakpoints nor single-stepping\n"
 "will work."
 msgstr ""
 
-#: gnu-nat.c:3267
+#: gnu-nat.c:3233
 msgid "Show whether exceptions in the inferior process will be trapped."
 msgstr ""
 
-#: gnu-nat.c:3272
+#: gnu-nat.c:3238
 msgid "Command prefix for setting task attributes."
 msgstr ""
 
-#: gnu-nat.c:3275
+#: gnu-nat.c:3241
 msgid "Command prefix for showing task attributes."
 msgstr ""
 
-#: gnu-nat.c:3278
+#: gnu-nat.c:3244
 msgid ""
 "Set whether the task is suspended while gdb has control.\n"
 "A value of \"on\" takes effect immediately, otherwise nothing happens\n"
@@ -13999,19 +13780,19 @@ msgid ""
 "used to pause individual threads by default instead."
 msgstr ""
 
-#: gnu-nat.c:3286
+#: gnu-nat.c:3252
 msgid "Show whether the task is suspended while gdb has control."
 msgstr ""
 
-#: gnu-nat.c:3290
+#: gnu-nat.c:3256
 msgid "Set the suspend count will leave on the thread when detaching."
 msgstr ""
 
-#: gnu-nat.c:3293
+#: gnu-nat.c:3259
 msgid "Show the suspend count will leave on the thread when detaching."
 msgstr ""
 
-#: gnu-nat.c:3297
+#: gnu-nat.c:3263
 msgid ""
 "Set the task exception port to which we forward exceptions.\n"
 "The argument should be the value of the send right in the task."
@@ -14019,54 +13800,54 @@ msgstr ""
 
 #. A convenient way of turning on all options require to noninvasively
 #. debug running tasks.
-#: gnu-nat.c:3307
+#: gnu-nat.c:3273
 msgid ""
 "Set task options so that we interfere as little as possible.\n"
 "This is the same as setting `task pause', `exceptions', and\n"
 "`signals' to the opposite value."
 msgstr ""
 
-#: gnu-nat.c:3315
+#: gnu-nat.c:3281
 msgid "Show information about the task's send rights."
 msgstr ""
 
-#: gnu-nat.c:3317
+#: gnu-nat.c:3283
 msgid "Show information about the task's receive rights."
 msgstr ""
 
-#: gnu-nat.c:3319
+#: gnu-nat.c:3285
 msgid "Show information about the task's port rights."
 msgstr ""
 
-#: gnu-nat.c:3321
+#: gnu-nat.c:3287
 msgid "Show information about the task's port sets."
 msgstr ""
 
-#: gnu-nat.c:3323
+#: gnu-nat.c:3289
 msgid "Show information about the task's dead names."
 msgstr ""
 
-#: gnu-nat.c:3400
+#: gnu-nat.c:3366
 msgid "No argument to \"set thread exception-port\" command."
 msgstr ""
 
-#: gnu-nat.c:3444
+#: gnu-nat.c:3410
 msgid "Command prefix for setting thread properties."
 msgstr ""
 
-#: gnu-nat.c:3447
+#: gnu-nat.c:3413
 msgid "Command prefix for setting default thread properties."
 msgstr ""
 
-#: gnu-nat.c:3451
+#: gnu-nat.c:3417
 msgid "Command prefix for showing thread properties."
 msgstr ""
 
-#: gnu-nat.c:3454
+#: gnu-nat.c:3420
 msgid "Command prefix for showing default thread properties."
 msgstr ""
 
-#: gnu-nat.c:3458
+#: gnu-nat.c:3424
 msgid ""
 "Set whether the current thread is suspended while gdb has control.\n"
 "A value of \"on\" takes effect immediately, otherwise nothing happens\n"
@@ -14076,55 +13857,55 @@ msgid ""
 "The default value is \"off\"."
 msgstr ""
 
-#: gnu-nat.c:3466
+#: gnu-nat.c:3432
 msgid "Show whether the current thread is suspended while gdb has control."
 msgstr ""
 
-#: gnu-nat.c:3471
+#: gnu-nat.c:3437
 msgid "Set whether the current thread is allowed to run."
 msgstr ""
 
-#: gnu-nat.c:3474
+#: gnu-nat.c:3440
 msgid "Show whether the current thread is allowed to run."
 msgstr ""
 
-#: gnu-nat.c:3477
+#: gnu-nat.c:3443
 msgid ""
 "Set the suspend count will leave on the thread when detaching.\n"
 "Note that this is relative to suspend count when gdb noticed the thread;\n"
 "use the `thread takeover-suspend-count' to force it to an absolute value."
 msgstr ""
 
-#: gnu-nat.c:3482
+#: gnu-nat.c:3448
 msgid ""
 "Show the suspend count will leave on the thread when detaching.\n"
 "Note that this is relative to suspend count when gdb noticed the thread;\n"
 "use the `thread takeover-suspend-count' to force it to an absolute value."
 msgstr ""
 
-#: gnu-nat.c:3488
+#: gnu-nat.c:3454
 msgid ""
 "Set the thread exception port to which we forward exceptions.\n"
 "This overrides the task exception port.\n"
 "The argument should be the value of the send right in the task."
 msgstr ""
 
-#: gnu-nat.c:3497
+#: gnu-nat.c:3463
 msgid ""
 "Force the threads absolute suspend-count to be gdb's.\n"
 "Prior to giving this command, gdb's thread suspend-counts are relative\n"
 "to the thread's initial suspend-count when gdb notices the threads."
 msgstr ""
 
-#: gnu-nat.c:3513
+#: gnu-nat.c:3480
 msgid "Set debugging output for the gnu backend."
 msgstr ""
 
-#: gnu-nat.c:3514
+#: gnu-nat.c:3481
 msgid "Show debugging output for the gnu backend."
 msgstr ""
 
-#: gnu-nat.c:3541
+#: gnu-nat.c:3508
 #, possible-c-format
 msgid "Error flushing inferior's cache : %s"
 msgstr ""
@@ -14141,62 +13922,62 @@ msgstr ""
 msgid "Baseclass offset not found"
 msgstr ""
 
-#: gnu-v3-abi.c:335
+#: gnu-v3-abi.c:337
 #, possible-c-format
 msgid "can't find linker symbol for virtual table for `%s' value"
 msgstr ""
 
-#: gnu-v3-abi.c:338
+#: gnu-v3-abi.c:340
 #, possible-c-format
 msgid "  found `%s' instead"
 msgstr ""
 
-#: gnu-v3-abi.c:420
+#: gnu-v3-abi.c:422
 msgid "Only classes can have virtual functions."
 msgstr ""
 
-#: gnu-v3-abi.c:470
+#: gnu-v3-abi.c:496
 msgid "Expected a negative vbase offset (old compiler?)"
 msgstr ""
 
-#: gnu-v3-abi.c:474
+#: gnu-v3-abi.c:500
 msgid "Misaligned vbase offset."
 msgstr ""
 
-#: gnu-v3-abi.c:888
+#: gnu-v3-abi.c:914
 #, possible-c-format
 msgid "vtable for '%s' @ %s (subobject @ %s):\n"
 msgstr ""
 
-#: gnu-v3-abi.c:917 printcmd.c:2042 stack.c:1581 value.c:2554
+#: gnu-v3-abi.c:943 printcmd.c:1992 stack.c:1602 value.c:2565
 #, possible-c-format
 msgid "<error: %s>"
 msgstr ""
 
-#: gnu-v3-abi.c:964
+#: gnu-v3-abi.c:990
 msgid "This object does not have a virtual function table\n"
 msgstr ""
 
-#: gnu-v3-abi.c:1087
+#: gnu-v3-abi.c:1114
 msgid "cannot find typeinfo for unnamed type"
 msgstr ""
 
-#: gnu-v3-abi.c:1110
+#: gnu-v3-abi.c:1138
 #, possible-c-format
 msgid "cannot find typeinfo for object of type '%s'"
 msgstr ""
 
-#: gnu-v3-abi.c:1123
+#: gnu-v3-abi.c:1151
 #, possible-c-format
 msgid "could not find typeinfo symbol for '%s'"
 msgstr ""
 
-#: gnu-v3-abi.c:1146
+#: gnu-v3-abi.c:1174
 #, possible-c-format
 msgid "could not find minimal symbol for typeinfo address %s"
 msgstr ""
 
-#: gnu-v3-abi.c:1154
+#: gnu-v3-abi.c:1182
 #, possible-c-format
 msgid "typeinfo symbol '%s' has unexpected name"
 msgstr ""
@@ -14207,133 +13988,133 @@ msgid ""
 "Use the `run' command to run DJGPP programs."
 msgstr ""
 
-#: go32-nat.c:551
+#: go32-nat.c:552
 #, possible-c-format
 msgid "Invalid register no. %d in fetch_register."
 msgstr ""
 
-#: go32-nat.c:581
+#: go32-nat.c:582
 #, possible-c-format
 msgid "Invalid register no. %d in store_register."
 msgstr ""
 
-#: go32-nat.c:707 go32-nat.c:2102
+#: go32-nat.c:708 go32-nat.c:2094
 msgid "Cannot allocate redirection storage: not enough memory.\n"
 msgstr ""
 
-#: go32-nat.c:716
+#: go32-nat.c:717
 msgid "Syntax error in command line."
 msgstr ""
 
-#: go32-nat.c:725
+#: go32-nat.c:726
 msgid "Command line too long."
 msgstr ""
 
-#: go32-nat.c:748
+#: go32-nat.c:749
 #, possible-c-format
 msgid "Load failed for image %s"
 msgstr ""
 
-#: go32-nat.c:811
+#: go32-nat.c:808
 #, possible-c-format
 msgid "Invalid register %d in go32_set_dr.\n"
 msgstr ""
 
-#: go32-nat.c:852
+#: go32-nat.c:849
 #, possible-c-format
 msgid "Invalid register %d in go32_get_dr.\n"
 msgstr ""
 
-#: go32-nat.c:944
+#: go32-nat.c:941
 #, possible-c-format
 msgid "Cannot redirect standard handles for program: %s."
 msgstr ""
 
-#: go32-nat.c:978
+#: go32-nat.c:975
 #, possible-c-format
 msgid "Cannot redirect standard handles for debugger: %s."
 msgstr ""
 
-#: go32-nat.c:1702
+#: go32-nat.c:1699
 #, possible-c-format
 msgid "Invalid LDT entry 0x%03lx."
 msgstr ""
 
-#: go32-nat.c:1740
+#: go32-nat.c:1737
 #, possible-c-format
 msgid "Invalid LDT entry %#lx: outside valid limits [0..%#x]"
 msgstr ""
 
-#: go32-nat.c:1770
+#: go32-nat.c:1767
 #, possible-c-format
 msgid "Invalid GDT entry 0x%03lx: not an integral multiple of 8."
 msgstr ""
 
-#: go32-nat.c:1782
+#: go32-nat.c:1779
 #, possible-c-format
 msgid "Invalid GDT entry %#lx: outside valid limits [0..%#x]"
 msgstr ""
 
-#: go32-nat.c:1811
+#: go32-nat.c:1808
 #, possible-c-format
 msgid "Invalid (negative) IDT entry %ld."
 msgstr ""
 
-#: go32-nat.c:1823
+#: go32-nat.c:1820
 #, possible-c-format
 msgid "Invalid IDT entry %#lx: outside valid limits [0..%#x]"
 msgstr ""
 
-#: go32-nat.c:1981 go32-nat.c:2031
+#: go32-nat.c:1978 go32-nat.c:2028
 #, possible-c-format
 msgid "Entry %ld is outside valid limits [0..1023]."
 msgstr ""
 
-#: go32-nat.c:2058
+#: go32-nat.c:2055
 msgid "linear address"
 msgstr ""
 
-#: go32-nat.c:2108
+#: go32-nat.c:2100
 msgid "Print information specific to DJGPP (aka MS-DOS) debugging."
 msgstr ""
 
-#: go32-nat.c:2112
+#: go32-nat.c:2104
 msgid ""
 "Display information about the target system, including CPU, OS, DPMI, etc."
 msgstr ""
 
-#: go32-nat.c:2115
+#: go32-nat.c:2107
 msgid ""
 "Display entries in the LDT (Local Descriptor Table).\n"
 "Entry number (an expression) as an argument means display only that entry."
 msgstr ""
 
-#: go32-nat.c:2119
+#: go32-nat.c:2111
 msgid ""
 "Display entries in the GDT (Global Descriptor Table).\n"
 "Entry number (an expression) as an argument means display only that entry."
 msgstr ""
 
-#: go32-nat.c:2123
+#: go32-nat.c:2115
 msgid ""
 "Display entries in the IDT (Interrupt Descriptor Table).\n"
 "Entry number (an expression) as an argument means display only that entry."
 msgstr ""
 
-#: go32-nat.c:2127
+#: go32-nat.c:2119
 msgid ""
 "Display entries in the Page Directory.\n"
 "Entry number (an expression) as an argument means display only that entry."
 msgstr ""
 
-#: go32-nat.c:2131
+#: go32-nat.c:2123
 msgid ""
 "Display entries in Page Tables.\n"
 "Entry number (an expression) as an argument means display only entries\n"
 "from the Page Table pointed to by the specified Page Directory entry."
 msgstr ""
 
-#: go32-nat.c:2136
+#: go32-nat.c:2128
 msgid ""
 "Display a Page Table entry for a linear address.\n"
 "The address argument must be a linear address, after adding to\n"
@@ -14363,236 +14144,279 @@ msgstr ""
 msgid "<invalid length: %ps>"
 msgstr ""
 
-#: guile/scm-symbol.c:275
-msgid "<gdb:symbol>"
+#: guile/guile.c:177 guile/guile.c:371
+msgid "guile-repl currently does not take any arguments."
 msgstr ""
 
-#: guile/scm-symbol.c:540
-msgid "cannot get the value of a typedef"
+#: guile/guile.c:254
+msgid "Invalid \"guile\" block structure."
 msgstr ""
 
-#: guile/scm-symbol.c:550
-msgid "Invalid frame"
+#: guile/guile.c:372 guile/guile.c:380
+msgid "Guile scripting is not supported in this copy of GDB."
 msgstr ""
 
-#: guile/scm-symbol.c:554
-msgid "Symbol requires a frame to compute its value"
+#: guile/guile.c:500
+msgid "Error in function ~s:~%"
 msgstr ""
 
-#: guile/scm-symbol.c:612 valops.c:3763
-msgid "no frame selected"
+#: guile/guile.c:524
+msgid "Throw to key `~a' with args `~s'.~%"
 msgstr ""
 
-#: 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."
+#: guile/guile.c:539
+#, possible-c-format
+msgid ""
+"Could not complete Guile gdb module initialization from:\n"
+"%s.\n"
+"Limited Guile support is available.\n"
+"Suggest passing --data-directory=/path/to/gdb/data-directory."
 msgstr ""
 
-#: guile/scm-param.c:289
-msgid "Error occurred setting parameter."
+#: guile/guile.c:686
+msgid ""
+"Start an interactive Guile prompt.\n"
+"\n"
+"To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n"
+"prompt) or ,quit."
 msgstr ""
 
-#: guile/scm-param.c:293
-#, possible-c-format
-msgid "Result of %s set-func is not a string."
+#: guile/guile.c:692
+msgid ""
+"Start a Guile interactive prompt.\n"
+"\n"
+"Guile scripting is not supported in this copy of GDB.\n"
+"This command is only a placeholder."
 msgstr ""
 
-#: guile/scm-param.c:300 guile/scm-param.c:344
-msgid "Error converting show text to host string."
+#: guile/guile.c:705
+msgid ""
+"Evaluate one or more Guile expressions.\n"
+"\n"
+"The expression(s) can be given as an argument, for instance:\n"
+"\n"
+"    guile (display 23)\n"
+"\n"
+"The result of evaluating the last expression is printed.\n"
+"\n"
+"If no argument is given, the following lines are read and passed\n"
+"to Guile for evaluation.  Type a line containing \"end\" to indicate\n"
+"the end of the set of expressions.\n"
+"\n"
+"The Guile GDB module must first be imported before it can be used.\n"
+"Do this with:\n"
+"(gdb) guile (use-modules (gdb))\n"
+"or if you want to import the (gdb) module with a prefix, use:\n"
+"(gdb) guile (use-modules ((gdb) #:renamer (symbol-prefix-proc 'gdb:)))\n"
+"\n"
+"The Guile interactive session, started with the \"guile-repl\"\n"
+"command, provides extensive help and apropos capabilities.\n"
+"Type \",help\" once in a Guile interactive session."
 msgstr ""
 
-#: guile/scm-param.c:325
-#, possible-c-format
-msgid "Error converting parameter value \"%s\" to Scheme string."
+#: guile/guile.c:728
+msgid ""
+"Evaluate a Guile expression.\n"
+"\n"
+"Guile scripting is not supported in this copy of GDB.\n"
+"This command is only a placeholder."
 msgstr ""
 
-#: guile/scm-param.c:336
-msgid "Error occurred showing parameter."
+#: guile/guile.c:738 guile/guile.c:744
+msgid "Prefix command for Guile preference settings."
 msgstr ""
 
-#: guile/scm-param.c:494 guile/scm-objfile.c:290 guile/scm-value.c:705
-#: guile/scm-pretty-print.c:255 guile/scm-progspace.c:330
-msgid "list"
+#: guile/guile.c:750
+msgid "Prefix command for Guile info displays."
 msgstr ""
 
-#: guile/scm-param.c:500
-msgid "enumeration list is empty"
+#: guile/guile.c:758
+msgid "Set mode for Guile exception printing on error."
 msgstr ""
 
-#: guile/scm-param.c:514 guile/scm-param.c:701 guile/scm-type.c:986
-#: guile/scm-type.c:1027 guile/scm-utils.c:205 guile/scm-value.c:618
-#: guile/scm-pretty-print.c:156
-msgid "string"
+#: guile/guile.c:759
+msgid "Show the mode of Guile exception printing on error."
 msgstr ""
 
-#: guile/scm-param.c:651
-msgid "program error: unhandled type"
+#: guile/guile.c:760 python/python.c:1873
+msgid ""
+"none  == no stack or message will be printed.\n"
+"full == a message and a stack will be printed.\n"
+"message == an error message without a stack will be printed."
 msgstr ""
 
-#: guile/scm-param.c:673
-msgid "string or #f for non-PARAM_FILENAME parameters"
+#: guile/scm-auto-load.c:41
+#, possible-c-format
+msgid "Auto-loading of Guile scripts is %s.\n"
 msgstr ""
 
-#: guile/scm-param.c:714
-msgid "not member of enumeration"
+#: guile/scm-auto-load.c:65
+msgid "Set the debugger's behaviour regarding auto-loaded Guile scripts."
 msgstr ""
 
-#: guile/scm-param.c:722 guile/scm-utils.c:215 guile/scm-breakpoint.c:589
-#: guile/scm-breakpoint.c:628
-msgid "boolean"
+#: guile/scm-auto-load.c:66
+msgid "Show the debugger's behaviour regarding auto-loaded Guile scripts."
 msgstr ""
 
-#: guile/scm-param.c:730
-msgid "boolean or #:auto"
+#: guile/scm-auto-load.c:67
+msgid ""
+"If enabled, auto-loaded Guile scripts are loaded when the debugger reads\n"
+"an executable or shared library.\n"
+"This options has security implications for untrusted inferiors."
 msgstr ""
 
-#: guile/scm-param.c:749
-msgid "integer or #:unlimited"
+#: guile/scm-auto-load.c:76
+msgid ""
+"Print the list of automatically loaded Guile scripts.\n"
+"Usage: info auto-load guile-scripts [REGEXP]"
 msgstr ""
 
-#: guile/scm-param.c:762 guile/scm-type.c:1109 guile/scm-ports.c:1179
-#: guile/scm-ports.c:1221 guile/scm-breakpoint.c:666
-#: guile/scm-breakpoint.c:707
-msgid "integer"
+#: guile/scm-block.c:279 guile/scm-block.c:305
+msgid "<gdb:block>"
 msgstr ""
 
-#: guile/scm-param.c:781
-msgid "must be >= -1"
+#: guile/scm-block.c:700
+msgid "cannot locate object file for block"
 msgstr ""
 
-#: guile/scm-param.c:894 guile/scm-cmd.c:709
-msgid "invalid command class argument"
+#: guile/scm-breakpoint.c:323
+msgid "<gdb:breakpoint>"
 msgstr ""
 
-#: guile/scm-param.c:900
-msgid "invalid parameter type argument"
+#: guile/scm-breakpoint.c:373
+msgid "access type with breakpoint is not allowed"
 msgstr ""
 
-#: guile/scm-param.c:905
-msgid "#:enum-values can only be provided with PARAM_ENUM"
+#: guile/scm-breakpoint.c:386
+msgid "invalid watchpoint class"
 msgstr ""
 
-#: guile/scm-param.c:910
-msgid "PARAM_ENUM requires an enum-values argument"
+#: guile/scm-breakpoint.c:392
+msgid "invalid breakpoint type"
 msgstr ""
 
-#: guile/scm-param.c:915 guile/scm-param.c:920 guile/scm-iterator.c:162
-#: guile/scm-cmd.c:702 guile/scm-pretty-print.c:158
-msgid "procedure"
+#: guile/scm-breakpoint.c:419
+msgid "not a Scheme breakpoint"
 msgstr ""
 
-#: guile/scm-param.c:991
-msgid "parameter is already registered"
+#: guile/scm-breakpoint.c:422
+msgid "breakpoint is already registered"
 msgstr ""
 
-#: guile/scm-param.c:1004
-msgid "parameter exists, \"set\" command is already defined"
+#: guile/scm-breakpoint.c:589 guile/scm-breakpoint.c:628 guile/scm-param.c:722
+#: guile/scm-utils.c:215
+msgid "boolean"
 msgstr ""
 
-#: guile/scm-param.c:1009
-msgid "parameter exists, \"show\" command is already defined"
+#: guile/scm-breakpoint.c:666 guile/scm-breakpoint.c:707 guile/scm-param.c:762
+#: guile/scm-ports.c:1444 guile/scm-ports.c:1494 guile/scm-type.c:1113
+msgid "integer"
 msgstr ""
 
-#: guile/scm-param.c:1048
-msgid "<gdb:parameter> or string"
+#: guile/scm-breakpoint.c:716
+msgid "hit-count must be zero"
 msgstr ""
 
-#: guile/scm-param.c:1085
-msgid "parameter not found"
+#: guile/scm-breakpoint.c:753
+msgid "invalid thread id"
 msgstr ""
 
-#: guile/scm-param.c:1090
-msgid "not a parameter"
+#: guile/scm-breakpoint.c:759 guile/scm-breakpoint.c:814
+msgid "integer or #f"
 msgstr ""
 
-#: guile/scm-auto-load.c:41
-#, possible-c-format
-msgid "Auto-loading of Guile scripts is %s.\n"
+#: guile/scm-breakpoint.c:808
+msgid "invalid task id"
 msgstr ""
 
-#: guile/scm-auto-load.c:65
-msgid "Set the debugger's behaviour regarding auto-loaded Guile scripts."
+#: guile/scm-breakpoint.c:899
+msgid "string or #f"
 msgstr ""
 
-#: guile/scm-auto-load.c:66
-msgid "Show the debugger's behaviour regarding auto-loaded Guile scripts."
+#: guile/scm-breakpoint.c:938
+msgid "procedure or #f"
 msgstr ""
 
-#: guile/scm-auto-load.c:67
-msgid ""
-"If enabled, auto-loaded Guile scripts are loaded when the debugger reads\n"
-"an executable or shared library.\n"
-"This options has security implications for untrusted inferiors."
+#: guile/scm-cmd.c:244
+msgid "<gdb:command>"
 msgstr ""
 
-#: guile/scm-auto-load.c:76
-msgid ""
-"Print the list of automatically loaded Guile scripts.\n"
-"Usage: info auto-load guile-scripts [REGEXP]"
+#: guile/scm-cmd.c:306
+msgid "Could not convert arguments to Scheme string."
 msgstr ""
 
-#: guile/scm-objfile.c:222
-msgid "<gdb:objfile>"
+#: guile/scm-cmd.c:327
+msgid "Error occurred in Scheme-implemented GDB command."
 msgstr ""
 
-#: guile/scm-frame.c:326
-msgid "inferior"
+#. Inform the user, but otherwise ignore the entire result.
+#: guile/scm-cmd.c:359
+msgid "Bad text from completer: "
 msgstr ""
 
-#: guile/scm-frame.c:329
-msgid "inferior has changed"
+#: guile/scm-cmd.c:396
+msgid "Could not convert \"text\" argument to Scheme string."
 msgstr ""
 
-#: guile/scm-frame.c:444 guile/scm-frame.c:483 guile/scm-frame.c:514
-#: guile/scm-frame.c:546 guile/scm-frame.c:582 guile/scm-frame.c:616
-#: guile/scm-frame.c:668 guile/scm-frame.c:706 guile/scm-frame.c:744
-#: guile/scm-frame.c:781 guile/scm-frame.c:829 guile/scm-frame.c:877
-#: guile/scm-frame.c:980
-msgid "<gdb:frame>"
+#: guile/scm-cmd.c:400
+msgid "Could not convert \"word\" argument to Scheme string."
 msgstr ""
 
-#: guile/scm-frame.c:626
-msgid "cannot find block for frame"
+#. Inform the user, but otherwise ignore.
+#: guile/scm-cmd.c:450
+msgid "Bad completer result: "
 msgstr ""
 
-#: guile/scm-frame.c:835
-msgid "unknown register"
+#: guile/scm-cmd.c:490 guile/scm-cmd.c:696
+msgid "no command name found"
 msgstr ""
 
-#: guile/scm-frame.c:931
-msgid "variable not found"
+#: guile/scm-cmd.c:518
+#, possible-c-format
+msgid "could not find command prefix '%s'"
 msgstr ""
 
-#: guile/scm-frame.c:937
-msgid "gdb:symbol or string"
+#: guile/scm-cmd.c:534
+#, possible-c-format
+msgid "'%s' is not a prefix command"
 msgstr ""
 
-#: guile/scm-frame.c:1019
-msgid "No frame is currently selected"
+#: guile/scm-cmd.c:682 guile/scm-param.c:244 python/py-cmd.c:535
+#: python/py-param.c:342
+msgid "This command is not documented."
 msgstr ""
 
-#: guile/scm-type.c:71
-msgid "type is not a structure, union, or enum type"
+#: guile/scm-cmd.c:702 guile/scm-iterator.c:162 guile/scm-param.c:915
+#: guile/scm-param.c:920 guile/scm-pretty-print.c:158
+msgid "procedure"
 msgstr ""
 
-#: guile/scm-type.c:730 python/py-type.c:517
-msgid "Array length must not be negative"
+#: guile/scm-cmd.c:709 guile/scm-param.c:894
+msgid "invalid command class argument"
 msgstr ""
 
-#: guile/scm-type.c:823
-msgid "ranged type"
+#: guile/scm-cmd.c:716
+msgid "integer or procedure"
 msgstr ""
 
-#: guile/scm-type.c:1013
-msgid "Unknown field"
+#: guile/scm-cmd.c:722
+msgid "invalid completion type argument"
 msgstr ""
 
-#: guile/scm-type.c:1167
-msgid "enum type"
+#: guile/scm-cmd.c:751
+msgid "command is already registered"
 msgstr ""
 
-#: guile/scm-type.c:1184
-msgid "non-enum type"
+#: guile/scm-disasm.c:209
+msgid "input port"
+msgstr ""
+
+#: guile/scm-disasm.c:219
+msgid "offset provided but port is missing"
+msgstr ""
+
+#: guile/scm-disasm.c:233 guile/scm-ports.c:1349
+msgid "start+size overflows"
 msgstr ""
 
 #: guile/scm-exception.c:244
@@ -14656,483 +14480,436 @@ msgstr ""
 msgid "Error in Scheme exception printing:\n"
 msgstr ""
 
-#. Set this now in case an exception is thrown.
-#: guile/scm-safe-call.c:180
-msgid "Error while executing Scheme code."
-msgstr ""
-
-#: guile/scm-gsmob.c:151
-msgid "any gdb smob"
+#: guile/scm-frame.c:326
+msgid "inferior"
 msgstr ""
 
-#: guile/scm-utils.c:224
-msgid "int"
+#: guile/scm-frame.c:329
+msgid "inferior has changed"
 msgstr ""
 
-#: guile/scm-utils.c:233
-msgid "unsigned int"
+#: guile/scm-frame.c:444 guile/scm-frame.c:483 guile/scm-frame.c:514
+#: guile/scm-frame.c:546 guile/scm-frame.c:582 guile/scm-frame.c:616
+#: guile/scm-frame.c:668 guile/scm-frame.c:706 guile/scm-frame.c:744
+#: guile/scm-frame.c:781 guile/scm-frame.c:829 guile/scm-frame.c:877
+#: guile/scm-frame.c:980
+msgid "<gdb:frame>"
 msgstr ""
 
-#: guile/scm-utils.c:242
-msgid "long"
+#: guile/scm-frame.c:626
+msgid "cannot find block for frame"
 msgstr ""
 
-#: guile/scm-utils.c:251
-msgid "unsigned long"
+#: guile/scm-frame.c:835
+msgid "unknown register"
 msgstr ""
 
-#: guile/scm-utils.c:260
-msgid "LONGEST"
+#: guile/scm-frame.c:931
+msgid "variable not found"
 msgstr ""
 
-#: guile/scm-utils.c:269
-msgid "ULONGEST"
+#: guile/scm-frame.c:937
+msgid "gdb:symbol or string"
 msgstr ""
 
-#: guile/scm-utils.c:389
-msgid "Unrecognized keyword: ~a"
+#: guile/scm-frame.c:1019
+msgid "No frame is currently selected"
 msgstr ""
 
-#: guile/scm-utils.c:397
-msgid "Missing value for keyword argument"
+#: guile/scm-gsmob.c:151
+msgid "any gdb smob"
 msgstr ""
 
-#: guile/scm-utils.c:442
-msgid "Too many arguments"
+#: guile/scm-lazy-string.c:162 guile/scm-value.c:1103
+msgid "invalid length"
 msgstr ""
 
-#: guile/guile.c:177 guile/guile.c:371
-msgid "guile-repl currently does not take any arguments."
+#: guile/scm-lazy-string.c:169
+msgid "cannot create a lazy string with address 0x0, and a non-zero length"
 msgstr ""
 
-#: guile/guile.c:254
-msgid "Invalid \"guile\" block structure."
+#: guile/scm-lazy-string.c:176
+msgid "a lazy string's type cannot be NULL"
 msgstr ""
 
-#: guile/guile.c:372 guile/guile.c:380
-msgid "Guile scripting is not supported in this copy of GDB."
+#: guile/scm-lazy-string.c:308
+msgid "cannot create a value from NULL"
 msgstr ""
 
-#: guile/guile.c:422
-msgid "\"info guile\" must be followed by the name of an info command.\n"
+#: guile/scm-math.c:540 guile/scm-math.c:555
+msgid "value out of range for type"
 msgstr ""
 
-#: guile/guile.c:527
-msgid "Error in function ~s:~%"
+#: guile/scm-math.c:645
+msgid "value not a number representable on the target"
 msgstr ""
 
-#: guile/guile.c:551
-msgid "Throw to key `~a' with args `~s'.~%"
+#: guile/scm-math.c:679
+msgid "size of type does not match size of bytevector"
 msgstr ""
 
-#: guile/guile.c:566
-#, possible-c-format
-msgid ""
-"Could not complete Guile gdb module initialization from:\n"
-"%s.\n"
-"Limited Guile support is available.\n"
-"Suggest passing --data-directory=/path/to/gdb/data-directory."
+#: guile/scm-math.c:734 guile/scm-math.c:785 guile/scm-math.c:810
+msgid "No type allowed"
 msgstr ""
 
-#: guile/guile.c:713
-msgid ""
-"Start an interactive Guile prompt.\n"
-"\n"
-"To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n"
-"prompt) or ,quit."
+#: guile/scm-objfile.c:222
+msgid "<gdb:objfile>"
 msgstr ""
 
-#: guile/guile.c:719
-msgid ""
-"Start a Guile interactive prompt.\n"
-"\n"
-"Guile scripting is not supported in this copy of GDB.\n"
-"This command is only a placeholder."
+#: guile/scm-objfile.c:290 guile/scm-param.c:494 guile/scm-pretty-print.c:255
+#: guile/scm-progspace.c:330 guile/scm-value.c:723
+msgid "list"
 msgstr ""
 
-#: guile/guile.c:732
-msgid ""
-"Evaluate one or more Guile expressions.\n"
-"\n"
-"The expression(s) can be given as an argument, for instance:\n"
-"\n"
-"    guile (display 23)\n"
-"\n"
-"The result of evaluating the last expression is printed.\n"
-"\n"
-"If no argument is given, the following lines are read and passed\n"
-"to Guile for evaluation.  Type a line containing \"end\" to indicate\n"
-"the end of the set of expressions.\n"
-"\n"
-"The Guile GDB module must first be imported before it can be used.\n"
-"Do this with:\n"
-"(gdb) guile (use-modules (gdb))\n"
-"or if you want to import the (gdb) module with a prefix, use:\n"
-"(gdb) guile (use-modules ((gdb) #:renamer (symbol-prefix-proc 'gdb:)))\n"
-"\n"
-"The Guile interactive session, started with the \"guile-repl\"\n"
-"command, provides extensive help and apropos capabilities.\n"
-"Type \",help\" once in a Guile interactive session."
+#: guile/scm-param.c:289
+msgid "Error occurred setting parameter."
 msgstr ""
 
-#: guile/guile.c:755
-msgid ""
-"Evaluate a Guile expression.\n"
-"\n"
-"Guile scripting is not supported in this copy of GDB.\n"
-"This command is only a placeholder."
+#: guile/scm-param.c:293
+#, possible-c-format
+msgid "Result of %s set-func is not a string."
 msgstr ""
 
-#: guile/guile.c:765 guile/guile.c:771
-msgid "Prefix command for Guile preference settings."
+#: guile/scm-param.c:300 guile/scm-param.c:344
+msgid "Error converting show text to host string."
 msgstr ""
 
-#: guile/guile.c:777
-msgid "Prefix command for Guile info displays."
+#: guile/scm-param.c:325
+#, possible-c-format
+msgid "Error converting parameter value \"%s\" to Scheme string."
 msgstr ""
 
-#: guile/guile.c:785
-msgid "Set mode for Guile exception printing on error."
+#: guile/scm-param.c:336
+msgid "Error occurred showing parameter."
 msgstr ""
 
-#: guile/guile.c:786
-msgid "Show the mode of Guile exception printing on error."
+#: guile/scm-param.c:500
+msgid "enumeration list is empty"
 msgstr ""
 
-#: 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"
-"message == an error message without a stack will be printed."
+#: guile/scm-param.c:514 guile/scm-param.c:701 guile/scm-pretty-print.c:156
+#: guile/scm-type.c:990 guile/scm-type.c:1031 guile/scm-utils.c:205
+#: guile/scm-value.c:636
+msgid "string"
 msgstr ""
 
-#: guile/scm-ports.c:464
-msgid "output port"
+#: guile/scm-param.c:651
+msgid "program error: unhandled type"
 msgstr ""
 
-#: guile/scm-ports.c:466
-msgid "thunk"
+#: guile/scm-param.c:673
+msgid "string or #f for non-PARAM_FILENAME parameters"
 msgstr ""
 
-#: guile/scm-ports.c:592
-msgid "error reading memory"
+#: guile/scm-param.c:714
+msgid "not member of enumeration"
 msgstr ""
 
-#: guile/scm-ports.c:615
-msgid "overflow in offset calculation"
+#: guile/scm-param.c:730
+msgid "boolean or #:auto"
 msgstr ""
 
-#: guile/scm-ports.c:627
-msgid "bad offset"
+#: guile/scm-param.c:749
+msgid "integer or #:unlimited"
 msgstr ""
 
-#: guile/scm-ports.c:652 guile/scm-ports.c:678
-msgid "writing beyond end of memory range"
+#: guile/scm-param.c:781
+msgid "must be >= -1"
 msgstr ""
 
-#: guile/scm-ports.c:657 guile/scm-ports.c:685 guile/scm-ports.c:717
-msgid "error writing memory"
+#: guile/scm-param.c:900
+msgid "invalid parameter type argument"
 msgstr ""
 
-#: guile/scm-ports.c:813
-msgid "bad seek"
+#: guile/scm-param.c:905
+msgid "#:enum-values can only be provided with PARAM_ENUM"
 msgstr ""
 
-#: guile/scm-ports.c:901 guile/scm-ports.c:914
-msgid "bad mode string"
+#: guile/scm-param.c:910
+msgid "PARAM_ENUM requires an enum-values argument"
 msgstr ""
 
-#: guile/scm-ports.c:1003
-msgid "port is unbuffered: ~a"
+#: guile/scm-param.c:991
+msgid "parameter is already registered"
 msgstr ""
 
-#: guile/scm-ports.c:1012
-msgid "read buffer not empty: ~a"
+#: guile/scm-param.c:1004
+msgid "parameter exists, \"set\" command is already defined"
 msgstr ""
 
-#: guile/scm-ports.c:1019
-msgid "write buffer not empty: ~a"
+#: guile/scm-param.c:1009
+msgid "parameter exists, \"show\" command is already defined"
 msgstr ""
 
-#: guile/scm-ports.c:1103 guile/scm-disasm.c:233
-msgid "start+size overflows"
+#: guile/scm-param.c:1048
+msgid "<gdb:parameter> or string"
 msgstr ""
 
-#: guile/scm-cmd.c:244
-msgid "<gdb:command>"
+#: guile/scm-param.c:1085
+msgid "parameter not found"
 msgstr ""
 
-#: guile/scm-cmd.c:306
-msgid "Could not convert arguments to Scheme string."
+#: guile/scm-param.c:1090
+msgid "not a parameter"
 msgstr ""
 
-#: guile/scm-cmd.c:327
-msgid "Error occurred in Scheme-implemented GDB command."
+#: guile/scm-ports.c:591
+msgid "output port"
 msgstr ""
 
-#. Inform the user, but otherwise ignore the entire result.
-#: guile/scm-cmd.c:359
-msgid "Bad text from completer: "
+#: guile/scm-ports.c:593
+msgid "thunk"
 msgstr ""
 
-#: guile/scm-cmd.c:396
-msgid "Could not convert \"text\" argument to Scheme string."
+#: guile/scm-ports.c:721 guile/scm-ports.c:1086
+msgid "error reading memory"
 msgstr ""
 
-#: guile/scm-cmd.c:400
-msgid "Could not convert \"word\" argument to Scheme string."
+#: guile/scm-ports.c:744
+msgid "overflow in offset calculation"
 msgstr ""
 
-#. Inform the user, but otherwise ignore.
-#: guile/scm-cmd.c:450
-msgid "Bad completer result: "
+#: guile/scm-ports.c:756
+msgid "bad offset"
 msgstr ""
 
-#: guile/scm-cmd.c:490 guile/scm-cmd.c:696
-msgid "no command name found"
+#: guile/scm-ports.c:781 guile/scm-ports.c:899 guile/scm-ports.c:1103
+msgid "writing beyond end of memory range"
 msgstr ""
 
-#: guile/scm-cmd.c:518
-#, possible-c-format
-msgid "could not find command prefix '%s'"
+#: guile/scm-ports.c:786 guile/scm-ports.c:906 guile/scm-ports.c:938
+#: guile/scm-ports.c:1107
+msgid "error writing memory"
 msgstr ""
 
-#: guile/scm-cmd.c:534
-#, possible-c-format
-msgid "'%s' is not a prefix command"
+#: guile/scm-ports.c:875 guile/scm-ports.c:1125
+msgid "bad seek"
 msgstr ""
 
-#: guile/scm-cmd.c:716
-msgid "integer or procedure"
+#: guile/scm-ports.c:1006
+msgid "port is unbuffered: ~a"
 msgstr ""
 
-#: guile/scm-cmd.c:722
-msgid "invalid completion type argument"
+#: guile/scm-ports.c:1015
+msgid "read buffer not empty: ~a"
 msgstr ""
 
-#: guile/scm-cmd.c:751
-msgid "command is already registered"
+#: guile/scm-ports.c:1022
+msgid "write buffer not empty: ~a"
 msgstr ""
 
-#: guile/scm-symtab.c:268
-msgid "<gdb:symtab>"
+#: guile/scm-ports.c:1199 guile/scm-ports.c:1212
+msgid "bad mode string"
 msgstr ""
 
-#: guile/scm-symtab.c:515
-msgid "<gdb:sal>"
+#: guile/scm-pretty-print.c:370 guile/scm-pretty-print.c:415
+msgid "pretty-printer list is not a list"
 msgstr ""
 
-#: guile/scm-math.c:540 guile/scm-math.c:555
-msgid "value out of range for type"
+#: guile/scm-pretty-print.c:382
+msgid "pretty-printer list contains non-pretty-printer object"
 msgstr ""
 
-#: guile/scm-math.c:645
-msgid "value not a number representable on the target"
+#: guile/scm-pretty-print.c:395
+msgid "invalid lookup object in pretty-printer matcher"
 msgstr ""
 
-#: guile/scm-math.c:679
-msgid "size of type does not match size of bytevector"
+#: guile/scm-pretty-print.c:408
+msgid "invalid result from pretty-printer lookup"
 msgstr ""
 
-#: guile/scm-math.c:734 guile/scm-math.c:785 guile/scm-math.c:810
-msgid "No type allowed"
+#: guile/scm-pretty-print.c:558
+msgid "invalid result from pretty-printer to-string"
 msgstr ""
 
-#: guile/scm-breakpoint.c:323
-msgid "<gdb:breakpoint>"
+#: guile/scm-pretty-print.c:620 python/py-prettyprint.c:264 valprint.c:987
+msgid "<error reading variable>"
 msgstr ""
 
-#: guile/scm-breakpoint.c:373
-msgid "access type with breakpoint is not allowed"
+#: guile/scm-pretty-print.c:741
+msgid "pretty-printer \"children\" object is not a procedure or #f"
 msgstr ""
 
-#: guile/scm-breakpoint.c:386
-msgid "invalid watchpoint class"
+#: guile/scm-pretty-print.c:764
+msgid ""
+"result of pretty-printer \"children\" procedure is not a <gdb:iterator> "
+"object"
 msgstr ""
 
-#: guile/scm-breakpoint.c:392
-msgid "invalid breakpoint type"
+#: guile/scm-pretty-print.c:804
+msgid ""
+"result of pretty-printer children iterator is not a pair or (end-of-"
+"iteration)"
 msgstr ""
 
-#: guile/scm-breakpoint.c:419
-msgid "not a Scheme breakpoint"
+#: guile/scm-pretty-print.c:814
+msgid "first element of pretty-printer children iterator is not a string"
 msgstr ""
 
-#: guile/scm-breakpoint.c:422
-msgid "breakpoint is already registered"
+#: guile/scm-progspace.c:233
+msgid "<gdb:progspace>"
 msgstr ""
 
-#: guile/scm-breakpoint.c:716
-msgid "hit-count must be zero"
+#. Set this now in case an exception is thrown.
+#: guile/scm-safe-call.c:180
+msgid "Error while executing Scheme code."
 msgstr ""
 
-#: guile/scm-breakpoint.c:753
-msgid "invalid thread id"
+#: guile/scm-symbol.c:275
+msgid "<gdb:symbol>"
 msgstr ""
 
-#: guile/scm-breakpoint.c:759 guile/scm-breakpoint.c:814
-msgid "integer or #f"
+#: guile/scm-symbol.c:540
+msgid "cannot get the value of a typedef"
 msgstr ""
 
-#: guile/scm-breakpoint.c:808
-msgid "invalid task id"
+#: guile/scm-symbol.c:550
+msgid "Invalid frame"
 msgstr ""
 
-#: guile/scm-breakpoint.c:899
-msgid "string or #f"
+#: guile/scm-symbol.c:554
+msgid "Symbol requires a frame to compute its value"
 msgstr ""
 
-#: guile/scm-breakpoint.c:938
-msgid "procedure or #f"
+#: guile/scm-symbol.c:612 valops.c:3722
+msgid "no frame selected"
 msgstr ""
 
-#: guile/scm-value.c:464
-msgid ""
-"Trying to get the referenced value from a value which is neither a pointer "
-"nor a reference"
+#: guile/scm-symtab.c:268
+msgid "<gdb:symtab>"
 msgstr ""
 
-#: guile/scm-value.c:669
-msgid "Cannot subscript requested type"
+#: guile/scm-symtab.c:515
+msgid "<gdb:sal>"
 msgstr ""
 
-#: guile/scm-value.c:702
-msgid "function (value of TYPE_CODE_FUNC)"
+#: guile/scm-type.c:71
+msgid "type is not a structure, union, or enum type"
 msgstr ""
 
-#: guile/scm-value.c:814 guile/scm-value.c:858
-msgid "integer-like gdb value"
+#: guile/scm-type.c:730 python/py-type.c:520
+msgid "Array length must not be negative"
 msgstr ""
 
-#: guile/scm-value.c:906
-msgid "number"
+#: guile/scm-type.c:823
+msgid "ranged type"
 msgstr ""
 
-#: guile/scm-value.c:935
-msgid "number can't be converted to a double"
+#: guile/scm-type.c:1017
+msgid "Unknown field"
 msgstr ""
 
-#: guile/scm-value.c:997
-msgid "invalid error kind"
+#: guile/scm-type.c:1171
+msgid "enum type"
 msgstr ""
 
-#: guile/scm-value.c:1085 guile/scm-lazy-string.c:162
-msgid "invalid length"
+#: guile/scm-type.c:1188
+msgid "non-enum type"
 msgstr ""
 
-#: guile/scm-value.c:1122
-msgid "length is larger than array size"
+#: guile/scm-utils.c:224
+msgid "int"
 msgstr ""
 
-#: guile/scm-pretty-print.c:370 guile/scm-pretty-print.c:415
-msgid "pretty-printer list is not a list"
+#: guile/scm-utils.c:233
+msgid "unsigned int"
 msgstr ""
 
-#: guile/scm-pretty-print.c:382
-msgid "pretty-printer list contains non-pretty-printer object"
+#: guile/scm-utils.c:242
+msgid "long"
 msgstr ""
 
-#: guile/scm-pretty-print.c:395
-msgid "invalid lookup object in pretty-printer matcher"
+#: guile/scm-utils.c:251
+msgid "unsigned long"
 msgstr ""
 
-#: guile/scm-pretty-print.c:408
-msgid "invalid result from pretty-printer lookup"
+#: guile/scm-utils.c:260
+msgid "LONGEST"
 msgstr ""
 
-#: guile/scm-pretty-print.c:558
-msgid "invalid result from pretty-printer to-string"
+#: guile/scm-utils.c:269
+msgid "ULONGEST"
 msgstr ""
 
-#: guile/scm-pretty-print.c:620 python/py-prettyprint.c:264 valprint.c:1090
-msgid "<error reading variable>"
+#: guile/scm-utils.c:389
+msgid "Unrecognized keyword: ~a"
 msgstr ""
 
-#: guile/scm-pretty-print.c:741
-msgid "pretty-printer \"children\" object is not a procedure or #f"
+#: guile/scm-utils.c:397
+msgid "Missing value for keyword argument"
 msgstr ""
 
-#: guile/scm-pretty-print.c:764
-msgid ""
-"result of pretty-printer \"children\" procedure is not a <gdb:iterator> "
-"object"
+#: guile/scm-utils.c:442
+msgid "Too many arguments"
 msgstr ""
 
-#: guile/scm-pretty-print.c:804
+#: guile/scm-value.c:482
 msgid ""
-"result of pretty-printer children iterator is not a pair or (end-of-"
-"iteration)"
-msgstr ""
-
-#: guile/scm-pretty-print.c:814
-msgid "first element of pretty-printer children iterator is not a string"
-msgstr ""
-
-#: guile/scm-disasm.c:209
-msgid "input port"
+"Trying to get the referenced value from a value which is neither a pointer "
+"nor a reference"
 msgstr ""
 
-#: guile/scm-disasm.c:219
-msgid "offset provided but port is missing"
+#: guile/scm-value.c:687
+msgid "Cannot subscript requested type"
 msgstr ""
 
-#: guile/scm-progspace.c:233
-msgid "<gdb:progspace>"
+#: guile/scm-value.c:720
+msgid "function (value of TYPE_CODE_FUNC)"
 msgstr ""
 
-#: guile/scm-block.c:279 guile/scm-block.c:305
-msgid "<gdb:block>"
+#: guile/scm-value.c:832 guile/scm-value.c:876
+msgid "integer-like gdb value"
 msgstr ""
 
-#: guile/scm-block.c:700
-msgid "cannot locate object file for block"
+#: guile/scm-value.c:924
+msgid "number"
 msgstr ""
 
-#: guile/scm-lazy-string.c:169
-msgid "cannot create a lazy string with address 0x0, and a non-zero length"
+#: guile/scm-value.c:953
+msgid "number can't be converted to a double"
 msgstr ""
 
-#: guile/scm-lazy-string.c:176
-msgid "a lazy string's type cannot be NULL"
+#: guile/scm-value.c:1015
+msgid "invalid error kind"
 msgstr ""
 
-#: guile/scm-lazy-string.c:308
-msgid "cannot create a value from NULL"
+#: guile/scm-value.c:1140
+msgid "length is larger than array size"
 msgstr ""
 
-#: h8300-tdep.c:751 h8300-tdep.c:783
+#: h8300-tdep.c:752 h8300-tdep.c:784
 msgid "I don't know how this 8 byte value is returned."
 msgstr ""
 
 #. long long, double and long double
 #. are all defined as 4 byte types so
 #. far so this shouldn't happen.
-#: h8300-tdep.c:846
+#: h8300-tdep.c:847
 msgid "I don't know how to return an 8 byte value."
 msgstr ""
 
-#: h8300-tdep.c:938
+#: h8300-tdep.c:939
 #, possible-c-format
 msgid "h8300_register_name_common: illegal register number %d"
 msgstr ""
 
-#: h8300-tdep.c:1125
+#: h8300-tdep.c:1126
 #, possible-c-format
 msgid "h8300_register_type: illegal register number %d"
 msgstr ""
 
-#: hppa-linux-nat.c:168 ia64-linux-nat.c:351
+#: hppa-linux-nat.c:168 ia64-linux-nat.c:354
 #, possible-c-format
 msgid "Invalid register number %d."
 msgstr ""
 
-#: hppa-linux-nat.c:242 i386-linux-nat.c:125 ia64-linux-nat.c:792
+#: hppa-linux-nat.c:242 i386-linux-nat.c:125 ia64-linux-nat.c:795
 #: linux-nat-trad.c:63 m68k-linux-nat.c:133
 #, possible-c-format
 msgid "Couldn't read register %s (#%d): %s."
 msgstr ""
 
-#: hppa-linux-nat.c:267 i386-linux-nat.c:151 ia64-linux-nat.c:847
+#: hppa-linux-nat.c:267 i386-linux-nat.c:151 ia64-linux-nat.c:850
 #: linux-nat-trad.c:124 m68k-linux-nat.c:186
 #, possible-c-format
 msgid "Couldn't write register %s (#%d): %s."
@@ -15161,46 +14938,46 @@ msgstr ""
 msgid "Unsupported address size: %d"
 msgstr ""
 
-#: hppa-tdep.c:3177
+#: hppa-tdep.c:3178
 msgid "Print unwind table entry at given address."
 msgstr ""
 
 #. Debug this files internals.
-#: hppa-tdep.c:3181
+#: hppa-tdep.c:3182
 msgid ""
 "Set whether hppa target specific debugging information should be displayed."
 msgstr ""
 
-#: hppa-tdep.c:3183
+#: hppa-tdep.c:3184
 msgid "Show whether hppa target specific debugging information is displayed."
 msgstr ""
 
-#: hppa-tdep.c:3184
+#: hppa-tdep.c:3185
 msgid ""
 "This flag controls whether hppa target specific debugging information is\n"
 "displayed.  This information is particularly useful for debugging frame\n"
 "unwinding problems."
 msgstr ""
 
-#: i386-bsd-nat.c:303
+#: i386-bsd-nat.c:322
 msgid "Couldn't write XMM registers"
 msgstr ""
 
-#: i386-bsd-nat.c:361
+#: i386-bsd-nat.c:383
 #, possible-c-format
 msgid ""
 "offsetof (struct sigcontext, sc_pc) yields %d instead of %d.\n"
 "Please report this to <bug-gdb@gnu.org>."
 msgstr ""
 
-#: i386-bsd-nat.c:374
+#: i386-bsd-nat.c:396
 #, possible-c-format
 msgid ""
 "offsetof (struct sigcontext, sc_sp) yields %d instead of %d.\n"
 "Please report this to <bug-gdb@gnu.org>."
 msgstr ""
 
-#: i386-bsd-nat.c:387
+#: i386-bsd-nat.c:409
 #, possible-c-format
 msgid ""
 "offsetof (struct sigcontext, sc_fp) yields %d instead of %d.\n"
@@ -15232,11 +15009,11 @@ msgstr ""
 msgid "darwin_set_sstep: unknown flavour: %d"
 msgstr ""
 
-#: i386-fbsd-tdep.c:249 i386-linux-tdep.c:662
+#: i386-fbsd-tdep.c:250 i386-linux-tdep.c:663
 msgid "Couldn't read `xcr0' bytes from `.reg-xstate' section in core file."
 msgstr ""
 
-#: i386-fbsd-tdep.c:333 i386-fbsd-tdep.c:341
+#: i386-fbsd-tdep.c:334 i386-fbsd-tdep.c:343
 #, possible-c-format
 msgid "Unable to fetch %%gsbase"
 msgstr ""
@@ -15312,53 +15089,53 @@ msgstr ""
 msgid "Got request to store bad register number %d."
 msgstr ""
 
-#: i386-linux-tdep.c:430
+#: i386-linux-tdep.c:431
 msgid "Upper bound violation"
 msgstr ""
 
-#: i386-linux-tdep.c:432
+#: i386-linux-tdep.c:433
 msgid "Lower bound violation"
 msgstr ""
 
-#: i386-linux-tdep.c:434 sparc64-linux-tdep.c:152 sparc64-linux-tdep.c:158
-#: sparc64-linux-tdep.c:164
+#: i386-linux-tdep.c:435 sparc64-linux-tdep.c:153 sparc64-linux-tdep.c:159
+#: sparc64-linux-tdep.c:165
 msgid " while accessing address "
 msgstr ""
 
-#: i386-linux-tdep.c:437
+#: i386-linux-tdep.c:438
 msgid ""
 "\n"
 "Bounds: [lower = "
 msgstr ""
 
-#: i386-linux-tdep.c:440
+#: i386-linux-tdep.c:441
 msgid ", upper = "
 msgstr ""
 
-#: i386-linux-tdep.c:443
+#: i386-linux-tdep.c:444
 msgid "]"
 msgstr ""
 
-#: i386-tdep.c:2795
+#: i386-tdep.c:2839
 msgid "Cannot find floating-point return value."
 msgstr ""
 
-#: i386-tdep.c:2826 m68k-tdep.c:300
+#: i386-tdep.c:2870 m68k-tdep.c:300
 #, possible-c-format
 msgid "Cannot extract return value of %d bytes long."
 msgstr ""
 
-#: i386-tdep.c:2848
+#: i386-tdep.c:2892
 msgid "Cannot set floating-point return value."
 msgstr ""
 
-#: i386-tdep.c:2891 m68k-tdep.c:340
+#: i386-tdep.c:2935 m68k-tdep.c:340
 #, possible-c-format
 msgid "Cannot store return value of %d bytes long."
 msgstr ""
 
-#: i386-tdep.c:4912 i386-tdep.c:5820 i386-tdep.c:6489 i386-tdep.c:7039
-#: i386-tdep.c:7091
+#: i386-tdep.c:4962 i386-tdep.c:5870 i386-tdep.c:6539 i386-tdep.c:7089
+#: i386-tdep.c:7141
 #, possible-c-format
 msgid ""
 "Process record ignores the memory change of instruction at address %s\n"
@@ -15368,150 +15145,150 @@ msgstr ""
 
 #. XXX
 #. int3
-#: i386-tdep.c:6828
+#: i386-tdep.c:6878
 msgid "Process record does not support instruction int3.\n"
 msgstr ""
 
-#: i386-tdep.c:6845
+#: i386-tdep.c:6895
 #, possible-c-format
 msgid "Process record does not support instruction int 0x%02x.\n"
 msgstr ""
 
 #. XXX
 #. into
-#: i386-tdep.c:6859
+#: i386-tdep.c:6909
 msgid "Process record does not support instruction into.\n"
 msgstr ""
 
 #. bound
-#: i386-tdep.c:6870
+#: i386-tdep.c:6920
 msgid "Process record does not support instruction bound.\n"
 msgstr ""
 
 #. wrmsr
-#: i386-tdep.c:6906
+#: i386-tdep.c:6956
 msgid "Process record does not support instruction wrmsr.\n"
 msgstr ""
 
 #. rdmsr
-#: i386-tdep.c:6913
+#: i386-tdep.c:6963
 msgid "Process record does not support instruction rdmsr.\n"
 msgstr ""
 
-#: i386-tdep.c:6934
+#: i386-tdep.c:6984
 msgid "Process record does not support instruction sysenter.\n"
 msgstr ""
 
 #. sysexit
-#: i386-tdep.c:6946
+#: i386-tdep.c:6996
 msgid "Process record does not support instruction sysexit.\n"
 msgstr ""
 
-#: i386-tdep.c:6957
+#: i386-tdep.c:7007
 msgid "Process record does not support instruction syscall.\n"
 msgstr ""
 
 #. sysret
-#: i386-tdep.c:6969
+#: i386-tdep.c:7019
 msgid "Process record does not support instruction sysret.\n"
 msgstr ""
 
 #. hlt
-#: i386-tdep.c:6983
+#: i386-tdep.c:7033
 msgid "Process record does not support instruction hlt.\n"
 msgstr ""
 
-#: i386-tdep.c:8102
+#: i386-tdep.c:8152
 #, possible-c-format
 msgid "Process record does not support instruction 0x%02x at address %s.\n"
 msgstr ""
 
-#: i386-tdep.c:8163
+#: i386-tdep.c:8213
 #, possible-c-format
 msgid ""
 "; instruction is only %d bytes long, need at least %d bytes for the jump"
 msgstr ""
 
-#: i386-tdep.c:8798
+#: i386-tdep.c:8853
 #, possible-c-format
 msgid "BNDCFGU register invalid, read status %d."
 msgstr ""
 
-#: i386-tdep.c:8844
+#: i386-tdep.c:8899
 msgid ""
 "bound table examination not supported for 64-bit process with 32-bit GDB"
 msgstr ""
 
-#: i386-tdep.c:8862
+#: i386-tdep.c:8917
 #, possible-c-format
 msgid "Invalid bounds directory entry at %s."
 msgstr ""
 
-#: i386-tdep.c:8938
+#: i386-tdep.c:8993
 msgid "Intel Memory Protection Extensions not supported on this target.\n"
 msgstr ""
 
-#: i386-tdep.c:8945
+#: i386-tdep.c:9000
 msgid "Address of pointer variable expected.\n"
 msgstr ""
 
-#: i386-tdep.c:8981
+#: i386-tdep.c:9036
 msgid "Intel Memory Protection Extensions not supported on this target."
 msgstr ""
 
-#: i386-tdep.c:8985
+#: i386-tdep.c:9040
 msgid "Pointer value expected."
 msgstr ""
 
-#: i386-tdep.c:8992
+#: i386-tdep.c:9047
 msgid "wrong number of arguments: missing lower and upper bound."
 msgstr ""
 
-#: i386-tdep.c:8998
+#: i386-tdep.c:9053
 msgid "Wrong number of arguments; Missing upper bound."
 msgstr ""
 
-#: i386-tdep.c:9042
+#: i386-tdep.c:9082
 msgid "Set the disassembly flavor."
 msgstr ""
 
-#: i386-tdep.c:9043
+#: i386-tdep.c:9083
 msgid "Show the disassembly flavor."
 msgstr ""
 
-#: i386-tdep.c:9044
+#: i386-tdep.c:9084
 msgid ""
 "The valid values are \"att\" and \"intel\", and the default value is \"att\"."
 msgstr ""
 
-#: i386-tdep.c:9053
+#: i386-tdep.c:9093
 msgid "Set the convention for returning small structs."
 msgstr ""
 
-#: i386-tdep.c:9054
+#: i386-tdep.c:9094
 msgid "Show the convention for returning small structs."
 msgstr ""
 
-#: i386-tdep.c:9055
+#: i386-tdep.c:9095
 msgid ""
 "Valid values are \"default\", \"pcc\" and \"reg\", and the default value\n"
 "is \"default\"."
 msgstr ""
 
 #. Add "mpx" prefix for the set commands.
-#: i386-tdep.c:9064
+#: i386-tdep.c:9104
 msgid "Set Intel Memory Protection Extensions specific variables."
 msgstr ""
 
 #. allow-unknown
 #. Add "mpx" prefix for the show commands.
-#: i386-tdep.c:9071
+#: i386-tdep.c:9111
 msgid "Show Intel Memory Protection Extensions specific variables."
 msgstr ""
 
 #: i387-tdep.c:111 i387-tdep.c:149 i387-tdep.c:297 i387-tdep.c:307
 #: i387-tdep.c:309 i387-tdep.c:311 i387-tdep.c:313 i387-tdep.c:315
-#: i387-tdep.c:319 tui/tui-stack.c:331 valprint.c:386
+#: i387-tdep.c:319 tui/tui-stack.c:326 valprint.c:388
 msgid "<unavailable>"
 msgstr ""
 
@@ -15534,11 +15311,11 @@ msgstr ""
 msgid "invalid i387 regclass"
 msgstr ""
 
-#: ia64-libunwind-tdep.c:236
+#: ia64-libunwind-tdep.c:229
 msgid "Can't get libunwind sp register."
 msgstr ""
 
-#: ia64-libunwind-tdep.c:523 ia64-libunwind-tdep.c:526
+#: ia64-libunwind-tdep.c:516 ia64-libunwind-tdep.c:519
 #, possible-c-format
 msgid "[GDB failed to load %s: %s]\n"
 msgstr ""
@@ -15575,63 +15352,90 @@ msgid ""
 "Cannot remove breakpoint at address %s, no break instruction at such address."
 msgstr ""
 
-#: infcall.c:65
+#: infcall.c:66
 #, possible-c-format
 msgid "Permission to call functions in the program is %s.\n"
 msgstr ""
 
-#: infcall.c:95
+#: infcall.c:96
 #, possible-c-format
 msgid "Coercion of floats to doubles when calling functions is %s.\n"
 msgstr ""
 
-#: infcall.c:113
+#: infcall.c:114
 #, possible-c-format
 msgid ""
 "Unwinding of stack if a signal is received while in a call dummy is %s.\n"
 msgstr ""
 
-#: infcall.c:139
+#: infcall.c:140
 #, possible-c-format
 msgid ""
 "Unwind stack if a C++ exception is unhandled while in a call dummy is %s.\n"
 msgstr ""
 
-#: infcall.c:335
+#: infcall.c:336
 msgid "Invalid data type for function to be called."
 msgstr ""
 
-#: infcall.c:369 infcall.c:794
+#: infcall.c:370 infcall.c:823
 #, possible-c-format
 msgid "'%s' has unknown return type; cast the call to its declared return type"
 msgstr ""
 
-#: infcall.c:373
+#: infcall.c:374
 msgid ""
 "function has unknown return type; cast the call to its declared return type"
 msgstr ""
 
-#: infcall.c:757
+#: infcall.c:786
 msgid "Cannot call functions in the program: may-call-functions is off."
 msgstr ""
 
-#: infcall.c:764
+#: infcall.c:793
 msgid "May not call functions while looking at trace frames."
 msgstr ""
 
-#: infcall.c:767
+#: infcall.c:796
 msgid "Cannot call functions in reverse mode."
 msgstr ""
 
-#: infcall.c:781
+#: infcall.c:810
 msgid "This target does not support function calls."
 msgstr ""
 
-#: infcall.c:802
+#: infcall.c:831
 msgid "Too few arguments in function call."
 msgstr ""
 
-#: infcall.c:1218
+#: infcall.c:1064
+#, possible-c-format
+msgid ""
+"expression cannot be evaluated because the type '%s' is not copy "
+"constructible"
+msgstr ""
+
+#: infcall.c:1068
+#, possible-c-format
+msgid ""
+"expression cannot be evaluated because the type '%s' is not destructible"
+msgstr ""
+
+#: infcall.c:1099
+#, possible-c-format
+msgid ""
+"expression cannot be evaluated because a copy constructor for the type '%s' "
+"could not be found (maybe inlined?)"
+msgstr ""
+
+#: infcall.c:1131
+#, possible-c-format
+msgid ""
+"expression cannot be evaluated because a destructor for the type '%s' could "
+"not be found (maybe inlined?)"
+msgstr ""
+
+#: infcall.c:1341
 #, possible-c-format
 msgid ""
 "%s\n"
@@ -15644,7 +15448,7 @@ msgstr ""
 #. We could discard the dummy frame here given that the program exited,
 #. but it will get garbage collected the next time the program is
 #. run anyway.
-#: infcall.c:1246
+#: infcall.c:1369
 #, possible-c-format
 msgid ""
 "The program being debugged exited while in a function called from GDB.\n"
@@ -15652,7 +15456,7 @@ msgid ""
 "(%s) will be abandoned."
 msgstr ""
 
-#: infcall.c:1266
+#: infcall.c:1389
 #, possible-c-format
 msgid ""
 "The program received a signal in another thread while\n"
@@ -15662,7 +15466,7 @@ msgid ""
 "When the function is done executing, GDB will silently stop."
 msgstr ""
 
-#: infcall.c:1274
+#: infcall.c:1397
 #, possible-c-format
 msgid ""
 "The program stopped in another thread while making a function call from "
@@ -15674,7 +15478,7 @@ msgstr ""
 
 #. FIXME: Insert a bunch of wrap_here; name can be very
 #. long if it's a C++ name with arguments and stuff.
-#: infcall.c:1307
+#: infcall.c:1430
 #, possible-c-format
 msgid ""
 "The program being debugged was signaled while in a function called from "
@@ -15687,7 +15491,7 @@ msgstr ""
 
 #. FIXME: Insert a bunch of wrap_here; name can be very
 #. long if it's a C++ name with arguments and stuff.
-#: infcall.c:1325
+#: infcall.c:1448
 #, possible-c-format
 msgid ""
 "The program being debugged was signaled while in a function called from "
@@ -15699,7 +15503,7 @@ msgid ""
 "When the function is done executing, GDB will silently stop."
 msgstr ""
 
-#: infcall.c:1346
+#: infcall.c:1469
 #, possible-c-format
 msgid ""
 "The program being debugged entered a std::terminate call, most likely\n"
@@ -15719,7 +15523,7 @@ msgstr ""
 #. someday this will be implemented (it would not be easy).
 #. FIXME: Insert a bunch of wrap_here; name can be very long if it's
 #. a C++ name with arguments and stuff.
-#: infcall.c:1373
+#: infcall.c:1496
 #, possible-c-format
 msgid ""
 "The program being debugged stopped while in a function called from GDB.\n"
@@ -15728,30 +15532,30 @@ msgid ""
 "When the function is done executing, GDB will silently stop."
 msgstr ""
 
-#: infcall.c:1391
+#: infcall.c:1515
 msgid "Set permission to call functions in the program."
 msgstr ""
 
-#: infcall.c:1392
+#: infcall.c:1516
 msgid "Show permission to call functions in the program."
 msgstr ""
 
-#: infcall.c:1393
+#: infcall.c:1517
 msgid ""
 "When this permission is on, GDB may call functions in the program.\n"
 "Otherwise, any sort of attempt to call a function in the program\n"
 "will result in an error."
 msgstr ""
 
-#: infcall.c:1402
+#: infcall.c:1526
 msgid "Set coercion of floats to doubles when calling functions."
 msgstr ""
 
-#: infcall.c:1403
+#: infcall.c:1527
 msgid "Show coercion of floats to doubles when calling functions."
 msgstr ""
 
-#: infcall.c:1404
+#: infcall.c:1528
 msgid ""
 "Variables of type float should generally be converted to doubles before\n"
 "calling an unprototyped function, and left alone when calling a prototyped\n"
@@ -15762,15 +15566,15 @@ msgid ""
 "The default is to perform the conversion."
 msgstr ""
 
-#: infcall.c:1417
+#: infcall.c:1541
 msgid "Set unwinding of stack if a signal is received while in a call dummy."
 msgstr ""
 
-#: infcall.c:1418
+#: infcall.c:1542
 msgid "Show unwinding of stack if a signal is received while in a call dummy."
 msgstr ""
 
-#: infcall.c:1419
+#: infcall.c:1543
 msgid ""
 "The unwindonsignal lets the user determine what gdb should do if a signal\n"
 "is received while in a function called from gdb (call dummy).  If set, gdb\n"
@@ -15779,16 +15583,16 @@ msgid ""
 "The default is to stop in the frame where the signal was received."
 msgstr ""
 
-#: infcall.c:1429
+#: infcall.c:1553
 msgid "Set unwinding of stack if std::terminate is called while in call dummy."
 msgstr ""
 
-#: infcall.c:1430
+#: infcall.c:1554
 msgid ""
 "Show unwinding of stack if std::terminate() is called while in a call dummy."
 msgstr ""
 
-#: infcall.c:1432
+#: infcall.c:1556
 msgid ""
 "The unwind on terminating exception flag lets the user determine\n"
 "what gdb should do if a std::terminate() call is made from the\n"
@@ -15810,136 +15614,132 @@ msgstr ""
 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:894
+#: infcmd.c:67 infcmd.c:2368 infcmd.c:2748 linux-fork.c:649 record-btrace.c:394
+#: remote-sim.c:880
 msgid "The program is not being run."
 msgstr ""
 
-#: infcmd.c:144
+#: infcmd.c:124
 #, possible-c-format
 msgid "Terminal for future runs of program being debugged is \"%s\".\n"
 msgstr ""
 
-#: infcmd.c:251
+#: infcmd.c:229
 msgid ""
 "You have not set the inferior's current working directory.\n"
 "The inferior will inherit GDB's cwd if native debugging, or the remote\n"
 "server's cwd if remote debugging.\n"
 msgstr ""
 
-#: infcmd.c:257
+#: infcmd.c:235
 #, possible-c-format
 msgid ""
-"Current working directory that will be used when starting the inferior is \"%"
-"s\".\n"
+"Current working directory that will be used when starting the inferior is "
+"\"%s\".\n"
 msgstr ""
 
-#: infcmd.c:362
-msgid "can't handle command-line argument containing whitespace"
-msgstr ""
-
-#: infcmd.c:468
+#: infcmd.c:328
 msgid ""
 "platform-specific solib_create_inferior_hook did not load initial shared "
 "libraries."
 msgstr ""
 
-#: infcmd.c:508
+#: infcmd.c:368
 msgid ""
 "The program being debugged has been started already.\n"
 "Start it from the beginning? "
 msgstr ""
 
-#: infcmd.c:510
+#: infcmd.c:370
 msgid "Program not restarted."
 msgstr ""
 
-#: infcmd.c:523
+#: infcmd.c:383
 msgid "Asynchronous execution not supported on this target."
 msgstr ""
 
-#: infcmd.c:592
+#: infcmd.c:452
 msgid "The target does not support running in non-stop mode."
 msgstr ""
 
-#: infcmd.c:690
+#: infcmd.c:559
 msgid "No symbol table loaded.  Use the \"file\" command."
 msgstr ""
 
-#: infcmd.c:731
+#: infcmd.c:603
 msgid "Cannot execute this command without a live selected thread."
 msgstr ""
 
-#: infcmd.c:742
+#: infcmd.c:614
 msgid "Cannot execute this command while looking at trace frames."
 msgstr ""
 
-#: infcmd.c:750
+#: infcmd.c:622
 msgid "Cannot execute this command while the selected thread is running."
 msgstr ""
 
-#: infcmd.c:833
+#: infcmd.c:705
 msgid "`-a' is meaningless in all-stop mode."
 msgstr ""
 
-#: infcmd.c:836
+#: infcmd.c:708
 msgid "Can't resume all threads and specify proceed count simultaneously."
 msgstr ""
 
-#: infcmd.c:893
+#: infcmd.c:765
 msgid "Continuing.\n"
 msgstr ""
 
-#: infcmd.c:1139 infcmd.c:1772
+#: infcmd.c:1027 infcmd.c:1664
 msgid "Cannot find bounds of current function"
 msgstr ""
 
-#: infcmd.c:1142
+#: infcmd.c:1030
 #, possible-c-format
 msgid ""
 "Single stepping until exit from function %s,\n"
 "which has no line number information.\n"
 msgstr ""
 
-#: infcmd.c:1193
+#: infcmd.c:1081
 msgid "starting address"
 msgstr ""
 
-#: infcmd.c:1198
+#: infcmd.c:1086
 msgid "Unreasonable jump request"
 msgstr ""
 
-#: infcmd.c:1203
+#: infcmd.c:1091
 msgid "No source file has been specified."
 msgstr ""
 
-#: infcmd.c:1212
+#: infcmd.c:1100
 #, possible-c-format
 msgid "Line %d is not in `%s'.  Jump anyway? "
 msgstr ""
 
-#: infcmd.c:1229
+#: infcmd.c:1117
 msgid "WARNING!!!  Destination is in unmapped overlay!  Jump anyway? "
 msgstr ""
 
-#: infcmd.c:1242
+#: infcmd.c:1130
 msgid "Continuing at "
 msgstr ""
 
-#: infcmd.c:1273 infcmd.c:1358
+#: infcmd.c:1161 infcmd.c:1250
 msgid "signal number"
 msgstr ""
 
-#: infcmd.c:1314
+#: infcmd.c:1206
 msgid "Note:\n"
 msgstr ""
 
-#: infcmd.c:1315
+#: infcmd.c:1207
 #, possible-c-format
 msgid "  Thread %s previously stopped with signal %s, %s.\n"
 msgstr ""
 
-#: infcmd.c:1324
+#: infcmd.c:1216
 #, possible-c-format
 msgid ""
 "Continuing thread %s (the current thread) with specified signal will\n"
@@ -15947,188 +15747,179 @@ msgid ""
 "Continue anyway? "
 msgstr ""
 
-#: infcmd.c:1334
+#: infcmd.c:1226
 msgid "Continuing with no signal.\n"
 msgstr ""
 
-#: infcmd.c:1336
+#: infcmd.c:1228
 #, possible-c-format
 msgid "Continuing with signal %s.\n"
 msgstr ""
 
-#: infcmd.c:1378
+#: infcmd.c:1270
 msgid "Signal handling set to not pass this signal to the program."
 msgstr ""
 
-#: infcmd.c:1469
+#: infcmd.c:1361
 msgid "Execution is not within a known function."
 msgstr ""
 
-#: infcmd.c:1530
+#: infcmd.c:1422
 msgid "a location"
 msgstr ""
 
-#: infcmd.c:1622
+#: infcmd.c:1514
 msgid "<not displayed>"
 msgstr ""
 
-#: infcmd.c:1706
+#: infcmd.c:1598
 msgid "finish_command: function has no target type"
 msgstr ""
 
-#: infcmd.c:1886
+#: infcmd.c:1778
 msgid "The \"finish\" command does not take any arguments."
 msgstr ""
 
 #. Finishing from an inline frame is completely different.  We don't
 #. try to show the "return value" - no way to locate it.
-#: infcmd.c:1888 infcmd.c:1902
+#: infcmd.c:1780 infcmd.c:1794
 msgid "No selected frame."
 msgstr ""
 
-#: infcmd.c:1890
+#: infcmd.c:1782
 msgid "\"finish\" not meaningful in the outermost frame."
 msgstr ""
 
-#: infcmd.c:1919 infcmd.c:1944
+#: infcmd.c:1811 infcmd.c:1836
 msgid "Run till exit from "
 msgstr ""
 
-#: infcmd.c:1936
+#: infcmd.c:1828
 msgid "Run back to call of "
 msgstr ""
 
-#: infcmd.c:1940
+#: infcmd.c:1832
 #, possible-c-format
 msgid ""
 "warning: Function %s does not return normally.\n"
 "Try to finish anyway? "
 msgstr ""
 
-#: infcmd.c:1973
+#: infcmd.c:1866
 msgid "The program being debugged is not being run.\n"
 msgstr ""
 
-#: infcmd.c:1987
+#: infcmd.c:1879
 msgid "No selected thread."
 msgstr ""
 
-#: infcmd.c:1992
+#: infcmd.c:1884
 msgid "Invalid selected thread."
 msgstr ""
 
-#: infcmd.c:1994 thread.c:921
+#: infcmd.c:1886 thread.c:922
 msgid "Selected thread is running."
 msgstr ""
 
-#: infcmd.c:2000
+#: infcmd.c:1892
 #, possible-c-format
 msgid "Program stopped at %s.\n"
 msgstr ""
 
-#: infcmd.c:2003
+#: infcmd.c:1895
 msgid "It stopped after being stepped.\n"
 msgstr ""
 
-#: infcmd.c:2012
+#: infcmd.c:1904
 msgid "It stopped at a breakpoint that has since been deleted.\n"
 msgstr ""
 
-#: infcmd.c:2016
+#: infcmd.c:1908
 #, possible-c-format
 msgid "It stopped at breakpoint %d.\n"
 msgstr ""
 
-#: infcmd.c:2022
+#: infcmd.c:1914
 #, possible-c-format
 msgid "It stopped with signal %s, %s.\n"
 msgstr ""
 
-#: infcmd.c:2029
+#: infcmd.c:1921
 msgid "Type \"info stack\" or \"info registers\" for more information.\n"
 msgstr ""
 
-#: infcmd.c:2074
+#: infcmd.c:1966
 msgid "environment variable and value"
 msgstr ""
 
-#: infcmd.c:2098
+#: infcmd.c:1990
 msgid "environment variable to set"
 msgstr ""
 
-#: infcmd.c:2120
+#: infcmd.c:2012
 #, possible-c-format
 msgid "Setting environment variable \"%s\" to null value.\n"
 msgstr ""
 
 #. If there is no argument, delete all environment variables.
 #. Ask for confirmation if reading from the terminal.
-#: infcmd.c:2136
+#: infcmd.c:2028
 msgid "Delete all environment variables? "
 msgstr ""
 
-#: infcmd.c:2326 infcmd.c:2467 infcmd.c:2993
+#: infcmd.c:2212 infcmd.c:2353 infcmd.c:2891
 msgid "The program has no registers now."
 msgstr ""
 
-#: infcmd.c:2350
+#: infcmd.c:2236
 msgid "Missing register name"
 msgstr ""
 
 #. Nothing matched.
-#: infcmd.c:2421
+#: infcmd.c:2307
 #, possible-c-format
 msgid "Invalid register `%.*s'"
 msgstr ""
 
-#: infcmd.c:2483
+#: infcmd.c:2369
 msgid "Kill the program being debugged? "
 msgstr ""
 
-#: infcmd.c:2495
+#: infcmd.c:2381
 #, possible-c-format
 msgid "[Inferior %d (%s) killed]\n"
 msgstr ""
 
-#: infcmd.c:2508
-#, possible-c-format
-msgid "In %s,\n"
-msgstr ""
-
-#: infcmd.c:2702 target.c:1989
+#: infcmd.c:2574 target.c:1928
 msgid "A program is being debugged already.  Kill it? "
 msgstr ""
 
-#: infcmd.c:2705
+#: infcmd.c:2577
 msgid "Not killed."
 msgstr ""
 
-#: infcmd.c:2720
+#: infcmd.c:2592
 msgid "Cannot attach to this target in non-stop mode"
 msgstr ""
 
-#: infcmd.c:2959
+#: infcmd.c:2857
 msgid "-a is meaningless in all-stop mode."
 msgstr ""
 
-#: infcmd.c:3002
-msgid "\"unset\" must be followed by the name of an unset subcommand.\n"
-msgstr ""
-
-#: infcmd.c:3102
+#: infcmd.c:2992
 #, possible-c-format
 msgid "Printing of return value after `finish' is %s.\n"
 msgstr ""
 
-#: infcmd.c:3133
+#: infcmd.c:3024
 msgid "Set terminal for future runs of program being debugged."
 msgstr ""
 
-#: infcmd.c:3134
+#: infcmd.c:3025
 msgid "Show terminal for future runs of program being debugged."
 msgstr ""
 
-#: infcmd.c:3135
+#: infcmd.c:3026
 msgid ""
 "Usage: set inferior-tty [TTY]\n"
 "\n"
@@ -16136,39 +15927,39 @@ msgid ""
 "is restored."
 msgstr ""
 
-#: infcmd.c:3149
+#: infcmd.c:3040
 msgid "Set argument list to give program being debugged when it is started."
 msgstr ""
 
-#: infcmd.c:3150
+#: infcmd.c:3041
 msgid "Show argument list to give program being debugged when it is started."
 msgstr ""
 
-#: infcmd.c:3151
+#: infcmd.c:3042
 msgid ""
 "Follow this command with any number of args, to be passed to the program."
 msgstr ""
 
-#: infcmd.c:3162
+#: infcmd.c:3053
 msgid ""
 "Set the current working directory to be used when the inferior is started.\n"
 "Changing this setting does not have any effect on inferiors that are\n"
 "already running."
 msgstr ""
 
-#: infcmd.c:3166
+#: infcmd.c:3057
 msgid ""
 "Show the current working directory that is used when the inferior is started."
 msgstr ""
 
-#: infcmd.c:3168
+#: infcmd.c:3059
 msgid ""
 "Use this command to change the current working directory that will be used\n"
 "when the inferior is started.  This setting does not affect GDB's current\n"
 "working directory."
 msgstr ""
 
-#: infcmd.c:3179
+#: infcmd.c:3070
 msgid ""
 "The environment to give the program, or one variable's value.\n"
 "With an argument VAR, prints the value of environment variable VAR to\n"
@@ -16176,17 +15967,17 @@ msgid ""
 "environment to be given to the program."
 msgstr ""
 
-#: infcmd.c:3187
+#: infcmd.c:3078
 msgid "Complement to certain \"set\" commands."
 msgstr ""
 
-#: infcmd.c:3190
+#: infcmd.c:3081
 msgid ""
 "Cancel environment variable VAR for the program.\n"
 "This does not affect the program until the next \"run\" command."
 msgstr ""
 
-#: infcmd.c:3196
+#: infcmd.c:3087
 msgid ""
 "Set environment variable value to give the program.\n"
 "Arguments are VAR VALUE where VAR is variable name and VALUE is value.\n"
@@ -16194,7 +15985,7 @@ msgid ""
 "This does not affect the program until the next \"run\" command."
 msgstr ""
 
-#: infcmd.c:3204
+#: infcmd.c:3095
 msgid ""
 "Add directory DIR(s) to beginning of search path for object files.\n"
 "$cwd in the path means the current working directory.\n"
@@ -16203,7 +15994,7 @@ msgid ""
 "fully linked executable files and separately compiled object files as needed."
 msgstr ""
 
-#: infcmd.c:3213
+#: infcmd.c:3104
 msgid ""
 "Current search path for finding object files.\n"
 "$cwd in the path means the current working directory.\n"
@@ -16212,11 +16003,11 @@ msgid ""
 "fully linked executable files and separately compiled object files as needed."
 msgstr ""
 
-#: infcmd.c:3224
+#: infcmd.c:3115
 msgid "Kill execution of program being debugged."
 msgstr ""
 
-#: infcmd.c:3227
+#: infcmd.c:3118
 msgid ""
 "Attach to a process or file outside of GDB.\n"
 "This command attaches to another target, of the same type as your last\n"
@@ -16231,21 +16022,21 @@ msgid ""
 "to specify the program, and to load its symbol table."
 msgstr ""
 
-#: infcmd.c:3240
+#: infcmd.c:3131
 msgid ""
 "Detach a process or file previously attached.\n"
 "If a process, it is no longer traced, and it continues its execution.  If\n"
 "you were debugging a file, the file is closed and gdb no longer accesses it."
 msgstr ""
 
-#: infcmd.c:3246
+#: infcmd.c:3137
 msgid ""
 "Disconnect from a target.\n"
 "The target will wait for another debugger to connect.  Not available for\n"
 "all targets."
 msgstr ""
 
-#: infcmd.c:3251
+#: infcmd.c:3142
 msgid ""
 "Continue program with the specified signal.\n"
 "Usage: signal SIGNAL\n"
@@ -16260,7 +16051,7 @@ msgid ""
 "the current thread only."
 msgstr ""
 
-#: infcmd.c:3264
+#: infcmd.c:3155
 msgid ""
 "Queue a signal to be delivered to the current thread when it is resumed.\n"
 "Usage: queue-signal SIGNAL\n"
@@ -16275,28 +16066,28 @@ msgid ""
 "the current thread only."
 msgstr ""
 
-#: infcmd.c:3278
+#: infcmd.c:3169
 msgid ""
 "Step one instruction exactly.\n"
 "Usage: stepi [N]\n"
 "Argument N means step N times (or till program stops for another reason)."
 msgstr ""
 
-#: infcmd.c:3285
+#: infcmd.c:3176
 msgid ""
 "Step one instruction, but proceed through subroutine calls.\n"
 "Usage: nexti [N]\n"
 "Argument N means step N times (or till program stops for another reason)."
 msgstr ""
 
-#: infcmd.c:3292
+#: infcmd.c:3183
 msgid ""
 "Execute until selected stack frame returns.\n"
 "Usage: finish\n"
 "Upon return, the value returned is printed and put in the value history."
 msgstr ""
 
-#: infcmd.c:3298
+#: infcmd.c:3189
 msgid ""
 "Step program, proceeding through subroutine calls.\n"
 "Usage: next [N]\n"
@@ -16305,14 +16096,14 @@ msgid ""
 "the call, in effect treating it as a single source line."
 msgstr ""
 
-#: infcmd.c:3306
+#: infcmd.c:3197
 msgid ""
 "Step program until it reaches a different source line.\n"
 "Usage: step [N]\n"
 "Argument N means step N times (or till program stops for another reason)."
 msgstr ""
 
-#: infcmd.c:3313
+#: infcmd.c:3204
 msgid ""
 "Execute until past the current line or past a LOCATION.\n"
 "Execute until the program reaches a source line greater than the current\n"
@@ -16320,14 +16111,14 @@ msgid ""
 "frame."
 msgstr ""
 
-#: infcmd.c:3321
+#: infcmd.c:3212
 msgid ""
 "Continue the program up to the given location (same form as args for break "
 "command).\n"
 "Execution will also stop upon exit from the current stack frame."
 msgstr ""
 
-#: infcmd.c:3327
+#: infcmd.c:3218
 msgid ""
 "Continue program being debugged at specified line or address.\n"
 "Usage: jump LOCATION\n"
@@ -16335,7 +16126,7 @@ msgid ""
 "for an address to start at."
 msgstr ""
 
-#: infcmd.c:3335
+#: infcmd.c:3226
 msgid ""
 "Continue program being debugged, after signal or breakpoint.\n"
 "Usage: continue [N]\n"
@@ -16349,20 +16140,20 @@ msgid ""
 "Specifying -a and an ignore count simultaneously is an error."
 msgstr ""
 
-#: infcmd.c:3349
+#: infcmd.c:3240
 msgid "Start debugged program.\n"
 msgstr ""
 
-#: infcmd.c:3355
+#: infcmd.c:3246
 msgid ""
 "Start the debugged program stopping at the beginning of the main procedure.\n"
 msgstr ""
 
-#: infcmd.c:3360
+#: infcmd.c:3251
 msgid "Start the debugged program stopping at the first instruction.\n"
 msgstr ""
 
-#: infcmd.c:3366
+#: infcmd.c:3257
 msgid ""
 "Interrupt the execution of the debugged program.\n"
 "If non-stop mode is enabled, interrupt only the current thread,\n"
@@ -16370,7 +16161,7 @@ msgid ""
 "interrupt all running threads in non-stop mode, use the -a option."
 msgstr ""
 
-#: infcmd.c:3371
+#: infcmd.c:3262
 msgid ""
 "List of integer registers and their contents, for selected stack frame.\n"
 "One or more register names as argument means describe the given registers.\n"
@@ -16378,7 +16169,7 @@ msgid ""
 "in the named register groups."
 msgstr ""
 
-#: infcmd.c:3379
+#: infcmd.c:3270
 msgid ""
 "List of all registers and their contents, for selected stack frame.\n"
 "One or more register names as argument means describe the given registers.\n"
@@ -16386,174 +16177,179 @@ msgid ""
 "in the named register groups."
 msgstr ""
 
-#: infcmd.c:3387
+#: infcmd.c:3278
 msgid "Execution status of the program."
 msgstr ""
 
-#: infcmd.c:3390
+#: infcmd.c:3281
 msgid "Print the status of the floating point unit."
 msgstr ""
 
-#: infcmd.c:3393
+#: infcmd.c:3284
 msgid "Print the status of the vector unit."
 msgstr ""
 
-#: infcmd.c:3396
+#: infcmd.c:3287
 msgid ""
 "Show additional information about a process.\n"
 "Specify any process id, or use the program being debugged by default."
 msgstr ""
 
 #. allow-unknown
-#: infcmd.c:3402
+#: infcmd.c:3293
 msgid "List memory regions mapped by the specified process."
 msgstr ""
 
-#: infcmd.c:3406
+#: infcmd.c:3297
 msgid "List process info from /proc/PID/stat."
 msgstr ""
 
-#: infcmd.c:3410
+#: infcmd.c:3301
 msgid "List process info from /proc/PID/status."
 msgstr ""
 
-#: infcmd.c:3414
+#: infcmd.c:3305
 msgid "List current working directory of the specified process."
 msgstr ""
 
-#: infcmd.c:3418
+#: infcmd.c:3309
 msgid "List command line arguments of the specified process."
 msgstr ""
 
-#: infcmd.c:3422
+#: infcmd.c:3313
 msgid "List absolute filename for executable of the specified process."
 msgstr ""
 
-#: infcmd.c:3426
+#: infcmd.c:3317
 msgid "List files opened by the specified process."
 msgstr ""
 
-#: infcmd.c:3430
+#: infcmd.c:3321
 msgid "List all available info about the specified process."
 msgstr ""
 
-#: infcmd.c:3435
+#: infcmd.c:3326
 msgid "Set whether `finish' prints the return value."
 msgstr ""
 
-#: infcmd.c:3436
+#: infcmd.c:3327
 msgid "Show whether `finish' prints the return value."
 msgstr ""
 
-#: inferior.c:127
+#: inferior.c:143
 #, possible-c-format
 msgid "[New inferior %d (%s)]\n"
 msgstr ""
 
-#: inferior.c:131
+#: inferior.c:147
 #, possible-c-format
 msgid "[New inferior %d]\n"
 msgstr ""
 
-#: inferior.c:240 remote.c:5681
+#: inferior.c:256 remote.c:5759
 #, possible-c-format
 msgid "[Inferior %d (%s) detached]\n"
 msgstr ""
 
-#: inferior.c:422
+#: inferior.c:421
 msgid "<noexec>"
 msgstr ""
 
-#: inferior.c:424
+#: inferior.c:423
 #, possible-c-format
 msgid "[Switching to inferior %d [%s] (%s)]\n"
 msgstr ""
 
-#: inferior.c:488
+#: inferior.c:531
 msgid ""
 "\n"
 "\tis vfork child of inferior "
 msgstr ""
 
-#: inferior.c:493
+#: inferior.c:536
 msgid ""
 "\n"
 "\tis vfork parent of inferior "
 msgstr ""
 
-#: inferior.c:505
+#: inferior.c:548
 msgid "Requires argument (inferior id(s) to detach)"
 msgstr ""
 
-#: inferior.c:515 inferior.c:552 inferior.c:587 inferior.c:640 inferior.c:790
+#: inferior.c:558 inferior.c:595 inferior.c:640 inferior.c:691 inferior.c:877
 #, possible-c-format
 msgid "Inferior ID %d not known."
 msgstr ""
 
-#: inferior.c:521 inferior.c:558
+#: inferior.c:564 inferior.c:601
 #, possible-c-format
 msgid "Inferior ID %d is not running."
 msgstr ""
 
-#: inferior.c:528 inferior.c:565
+#: inferior.c:571 inferior.c:608
 #, possible-c-format
 msgid "Inferior ID %d has no threads."
 msgstr ""
 
-#: inferior.c:542
+#: inferior.c:585
 msgid "Requires argument (inferior id(s) to kill)"
 msgstr ""
 
-#: inferior.c:595 mi/mi-main.c:412
+#: inferior.c:648 mi/mi-main.c:409
 msgid "Inferior has no threads."
 msgstr ""
 
-#: inferior.c:630
+#: inferior.c:681
 msgid "Requires an argument (inferior id(s) to remove)"
 msgstr ""
 
-#: inferior.c:646
+#: inferior.c:697
 #, possible-c-format
 msgid "Can not remove current inferior %d."
 msgstr ""
 
-#: inferior.c:652
+#: inferior.c:703
 #, possible-c-format
 msgid "Can not remove active inferior %d."
 msgstr ""
 
-#: inferior.c:712 inferior.c:771
-msgid "No argument to -copies"
-msgstr ""
-
-#: inferior.c:719
-msgid "No argument to -exec"
+#: inferior.c:758
+#, possible-c-format
+msgid "Added inferior %d on connection %d (%s %s)\n"
 msgstr ""
 
-#: inferior.c:724 inferior.c:794 mi/mi-main.c:1611
-msgid "Invalid argument"
+#: inferior.c:764
+#, possible-c-format
+msgid "Added inferior %d on connection %d (%s)\n"
 msgstr ""
 
-#: inferior.c:734
+#: inferior.c:770
 #, possible-c-format
 msgid "Added inferior %d\n"
 msgstr ""
 
-#: inferior.c:775
-msgid "Invalid copies number"
+#: inferior.c:798 inferior.c:856
+msgid "No argument to -copies"
 msgstr ""
 
-#: inferior.c:827
-#, possible-c-format
-msgid "Added inferior %d.\n"
+#: inferior.c:807
+msgid "No argument to -exec"
+msgstr ""
+
+#: inferior.c:812 inferior.c:881 mi/mi-main.c:1593
+msgid "Invalid argument"
+msgstr ""
+
+#: inferior.c:860
+msgid "Invalid copies number"
 msgstr ""
 
-#: inferior.c:840
+#: inferior.c:925
 #, possible-c-format
 msgid "Printing of inferior events is %s.\n"
 msgstr ""
 
-#: inferior.c:884
+#: inferior.c:969
 msgid ""
 "Print a list of inferiors being managed.\n"
 "Usage: info inferiors [ID]...\n"
@@ -16561,64 +16357,70 @@ msgid ""
 "By default all inferiors are displayed."
 msgstr ""
 
-#: inferior.c:889
+#: inferior.c:974
 msgid ""
 "Add a new inferior.\n"
-"Usage: add-inferior [-copies N] [-exec FILENAME]\n"
+"Usage: add-inferior [-copies N] [-exec FILENAME] [-no-connection]\n"
 "N is the optional number of inferiors to add, default is 1.\n"
 "FILENAME is the file name of the executable to use\n"
-"as main program."
+"as main program.\n"
+"By default, the new inferior inherits the current inferior's connection.\n"
+"If -no-connection is specified, the new inferior begins with\n"
+"no target connection yet."
 msgstr ""
 
-#: inferior.c:897
+#: inferior.c:985
 msgid ""
 "Remove inferior ID (or list of IDs).\n"
 "Usage: remove-inferiors ID..."
 msgstr ""
 
-#: inferior.c:901
+#: inferior.c:989
 msgid ""
 "Clone inferior ID.\n"
-"Usage: clone-inferior [-copies N] [ID]\n"
-"Add N copies of inferior ID.  The new inferior has the same\n"
+"Usage: clone-inferior [-copies N] [-no-connection] [ID]\n"
+"Add N copies of inferior ID.  The new inferiors have the same\n"
 "executable loaded as the copied inferior.  If -copies is not specified,\n"
 "adds 1 copy.  If ID is not specified, it is the current inferior\n"
-"that is cloned."
+"that is cloned.\n"
+"By default, the new inferiors inherit the copied inferior's connection.\n"
+"If -no-connection is specified, the new inferiors begin with\n"
+"no target connection yet."
 msgstr ""
 
-#: inferior.c:909
+#: inferior.c:1000
 msgid ""
 "Detach from inferior ID (or list of IDS).\n"
 "Usage; detach inferiors ID..."
 msgstr ""
 
-#: inferior.c:914
+#: inferior.c:1005
 msgid ""
 "Kill inferior ID (or list of IDs).\n"
 "Usage: kill inferiors ID..."
 msgstr ""
 
-#: inferior.c:919
+#: inferior.c:1010
 msgid ""
 "Use this command to switch between inferiors.\n"
 "Usage: inferior ID\n"
 "The new inferior ID must be currently known."
 msgstr ""
 
-#: inferior.c:926
+#: inferior.c:1017
 msgid "Set printing of inferior events (such as inferior start and exit)."
 msgstr ""
 
-#: inferior.c:927
+#: inferior.c:1018
 msgid "Show printing of inferior events (such as inferior start and exit)."
 msgstr ""
 
-#: inferior.h:81
+#: inferior.h:92
 #, possible-c-format
 msgid "Failed to restore inferior state: %s"
 msgstr ""
 
-#: inf-loop.c:90
+#: inf-loop.c:89
 msgid "Event type not recognized.\n"
 msgstr ""
 
@@ -16642,88 +16444,88 @@ msgstr ""
 msgid "Failed to create new terminal session: setsid: %s"
 msgstr ""
 
-#: inflow.c:960
+#: inflow.c:961
 msgid "Print inferior's saved terminal status."
 msgstr ""
 
-#: inf-ptrace.c:229
+#: inf-ptrace.c:169
 msgid "This system does not support attaching to a process"
 msgstr ""
 
-#: inf-ptrace.c:283
+#: inf-ptrace.c:207
 msgid "This system does not support detaching from a process"
 msgstr ""
 
-#: inf-ptrace.c:401 obsd-nat.c:98 rs6000-nat.c:519
+#: inf-ptrace.c:324 obsd-nat.c:98 rs6000-nat.c:519
 #, possible-c-format
 msgid "Child process unexpectedly missing: %s.\n"
 msgstr ""
 
-#: inf-ptrace.c:626
+#: inf-ptrace.c:511
 #, possible-c-format
 msgid "\tUsing the running image of %s %s.\n"
 msgstr ""
 
-#: infrun.c:138
+#: infrun.c:150
 #, possible-c-format
 msgid "Mode of the step operation is %s.\n"
 msgstr ""
 
-#: infrun.c:159
+#: infrun.c:171
 #, possible-c-format
 msgid "Displace stepping debugging is %s.\n"
 msgstr ""
 
-#: infrun.c:167
+#: infrun.c:179
 #, possible-c-format
 msgid "Inferior debugging is %s.\n"
 msgstr ""
 
-#: infrun.c:181
+#: infrun.c:193
 #, possible-c-format
 msgid "Disabling randomization of debuggee's virtual address space is %s.\n"
 msgstr ""
 
-#: infrun.c:185
+#: infrun.c:197
 msgid ""
 "Disabling randomization of debuggee's virtual address space is unsupported "
 "on\n"
 "this platform.\n"
 msgstr ""
 
-#: infrun.c:195
+#: infrun.c:207
 msgid ""
 "Disabling randomization of debuggee's virtual address space is unsupported "
 "on\n"
 "this platform."
 msgstr ""
 
-#: infrun.c:212 infrun.c:241 mi/mi-main.c:116 target.c:3851 target.c:3904
-#: target.c:3960
+#: infrun.c:224 infrun.c:253 mi/mi-main.c:116 target.c:3823 target.c:3896
+#: target.c:3952
 msgid "Cannot change this setting while the inferior is running."
 msgstr ""
 
-#: infrun.c:223
+#: infrun.c:235
 #, possible-c-format
 msgid "Controlling the inferior in non-stop mode is %s.\n"
 msgstr ""
 
-#: infrun.c:266 infrun.c:294
+#: infrun.c:278 infrun.c:306
 #, possible-c-format
 msgid "Observer mode is now %s.\n"
 msgstr ""
 
-#: infrun.c:274
+#: infrun.c:286
 #, possible-c-format
 msgid "Observer mode is %s.\n"
 msgstr ""
 
-#: infrun.c:367
+#: infrun.c:379
 #, possible-c-format
 msgid "Stopping for shared library events is %s.\n"
 msgstr ""
 
-#: infrun.c:398
+#: infrun.c:411
 #, possible-c-format
 msgid "Debugger response to a program call of fork or vfork is \"%s\".\n"
 msgstr ""
@@ -16733,24 +16535,24 @@ msgstr ""
 #. the parent stays blocked.  If we're telling the parent to run
 #. in the foreground, the user will not be able to ctrl-c to get
 #. back the terminal, effectively hanging the debug session.
-#: infrun.c:431
+#: infrun.c:444
 msgid ""
 "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"
 msgstr ""
 
-#: infrun.c:463
+#: infrun.c:476
 #, possible-c-format
 msgid "[Detaching after %s from child %s]\n"
 msgstr ""
 
-#: infrun.c:551
+#: infrun.c:577
 #, possible-c-format
 msgid "[Attaching after %s %s to child %s]\n"
 msgstr ""
 
-#: infrun.c:599
+#: infrun.c:633
 #, possible-c-format
 msgid "[Detaching after fork from parent %s]\n"
 msgstr ""
@@ -16761,191 +16563,192 @@ 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:789
+#: infrun.c:838
 msgid "Not resuming: switched threads before following fork child."
 msgstr ""
 
-#: infrun.c:969
+#: infrun.c:989
 #, possible-c-format
 msgid "[Detaching vfork parent %s after child exec]\n"
 msgstr ""
 
-#: infrun.c:975
+#: infrun.c:995
 #, possible-c-format
 msgid "[Detaching vfork parent %s after child exit]\n"
 msgstr ""
 
-#: infrun.c:1066
+#: infrun.c:1076
 #, possible-c-format
 msgid "Follow exec mode is \"%s\".\n"
 msgstr ""
 
-#: infrun.c:1148
+#: infrun.c:1158
 #, possible-c-format
 msgid "%s is executing new program: %s\n"
 msgstr ""
 
-#: infrun.c:1165
+#: infrun.c:1175
 #, possible-c-format
 msgid ""
 "Could not load symbols for executable %s.\n"
 "Do you need \"set sysroot\"?"
 msgstr ""
 
-#: infrun.c:1553
+#: infrun.c:1562
 #, possible-c-format
 msgid ""
 "Debugger's willingness to use displaced stepping to step over breakpoints is "
 "%s (currently %s).\n"
 msgstr ""
 
-#: infrun.c:1558
+#: infrun.c:1567
 #, possible-c-format
 msgid ""
 "Debugger's willingness to use displaced stepping to step over breakpoints is "
 "%s.\n"
 msgstr ""
 
-#: infrun.c:1713
+#: infrun.c:1749
 #, possible-c-format
 msgid ""
 "Error accessing memory address %s (%s) for displaced-stepping scratch space."
 msgstr ""
 
-#: infrun.c:1790
+#: infrun.c:1821
 #, possible-c-format
 msgid "disabling displaced stepping: %s"
 msgstr ""
 
-#: infrun.c:2004 infrun.c:3024 infrun.c:3034 utils.c:439
+#: infrun.c:2031 infrun.c:3130 infrun.c:3140 utils.c:440
 msgid "Command aborted."
 msgstr ""
 
-#: infrun.c:2065
+#: infrun.c:2094
 #, possible-c-format
 msgid "Mode for locking scheduler during execution is \"%s\".\n"
 msgstr ""
 
-#: infrun.c:2076
+#: infrun.c:2105
 #, possible-c-format
 msgid "Target '%s' cannot support this command."
 msgstr ""
 
-#: infrun.c:2259
+#: infrun.c:2295
 #, possible-c-format
 msgid "Couldn't deliver signal %s to %s."
 msgstr ""
 
-#: infrun.c:3499
+#: infrun.c:2905
+#, possible-c-format
+msgid "Connection %d (%s) does not support multi-target resumption."
+msgstr ""
+
+#: infrun.c:3693
 msgid "Program exited while detaching"
 msgstr ""
 
-#: infrun.c:3802
+#: infrun.c:4010
 msgid "completed.\n"
 msgstr ""
 
-#: infrun.c:4812
+#: infrun.c:5212
 #, possible-c-format
 msgid "unhandled stop_soon: %d"
 msgstr ""
 
-#: infrun.c:4879
-msgid "Cannot fill $_exitsignal with the correct signal number.\n"
-msgstr ""
-
-#: infrun.c:7786
+#: infrun.c:8104
 msgid "Unknown value."
 msgstr ""
 
-#: infrun.c:7841
+#: infrun.c:8158
 msgid ""
 "Cannot remove breakpoints because program is no longer writable.\n"
 "Further execution is probably impossible.\n"
 msgstr ""
 
-#: infrun.c:7994 linux-fork.c:354 linux-fork.c:387
+#: infrun.c:8317 linux-fork.c:352 linux-fork.c:385
 #, possible-c-format
 msgid "[Switching to %s]\n"
 msgstr ""
 
-#: infrun.c:8007
+#: infrun.c:8330
 msgid "No unwaited-for children left.\n"
 msgstr ""
 
-#: infrun.c:8191
+#: infrun.c:8514
 msgid "Signal        Stop\tPrint\tPass to program\tDescription\n"
 msgstr ""
 
-#: infrun.c:8224
+#: infrun.c:8547
 msgid "signal to handle"
 msgstr ""
 
 #. Not a number and not a recognized flag word => complain.
-#: infrun.c:8323
+#: infrun.c:8646
 #, possible-c-format
 msgid "Unrecognized or ambiguous flag word: \"%s\"."
 msgstr ""
 
-#: infrun.c:8338
+#: infrun.c:8661
 #, possible-c-format
 msgid ""
 "%s is used by the debugger.\n"
 "Are you sure you want to change it? "
 msgstr ""
 
-#: infrun.c:8345
+#: infrun.c:8668
 msgid "Not confirmed, unchanged.\n"
 msgstr ""
 
-#: infrun.c:8410
+#: infrun.c:8733
 msgid ""
 "Only signals 1-15 are valid as numeric signals.\n"
 "Use \"info signals\" for a list of symbolic signals."
 msgstr ""
 
-#: infrun.c:8453
+#: infrun.c:8776
 msgid ""
 "\n"
 "Use the \"handle\" command to change these tables.\n"
 msgstr ""
 
-#: infrun.c:8487
+#: infrun.c:8810
 msgid "Unable to read siginfo"
 msgstr ""
 
-#: infrun.c:8510
+#: infrun.c:8833
 msgid "Unable to write siginfo"
 msgstr ""
 
-#: infrun.c:8839
+#: infrun.c:9162
 msgid "Target does not support this operation."
 msgstr ""
 
-#: infrun.c:8849
+#: infrun.c:9172
 msgid "Forward.\n"
 msgstr ""
 
-#: infrun.c:8852
+#: infrun.c:9175
 msgid "Reverse.\n"
 msgstr ""
 
-#: infrun.c:8856
+#: infrun.c:9179
 #, possible-c-format
 msgid "bogus execution_direction value: %d"
 msgstr ""
 
-#: infrun.c:8865
+#: infrun.c:9188
 #, possible-c-format
 msgid "Resuming the execution of threads of all processes is %s.\n"
 msgstr ""
 
-#: infrun.c:8896
+#: infrun.c:9287
 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:8901
+#: infrun.c:9292
 msgid ""
 "Specify how to handle signals.\n"
 "Usage: handle SIGNAL [ACTIONS]\n"
@@ -16972,46 +16775,46 @@ msgid ""
 "all signals cumulatively specified."
 msgstr ""
 
-#: infrun.c:8929
+#: infrun.c:9320
 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:8934
+#: infrun.c:9325
 msgid "Set inferior debugging."
 msgstr ""
 
-#: infrun.c:8935
+#: infrun.c:9326
 msgid "Show inferior debugging."
 msgstr ""
 
-#: infrun.c:8936
+#: infrun.c:9327
 msgid "When non-zero, inferior specific debugging is enabled."
 msgstr ""
 
-#: infrun.c:8943
+#: infrun.c:9334
 msgid "Set displaced stepping debugging."
 msgstr ""
 
-#: infrun.c:8944
+#: infrun.c:9335
 msgid "Show displaced stepping debugging."
 msgstr ""
 
-#: infrun.c:8945
+#: infrun.c:9336
 msgid "When non-zero, displaced stepping specific debugging is enabled."
 msgstr ""
 
-#: infrun.c:8952
+#: infrun.c:9343
 msgid "Set whether gdb controls the inferior in non-stop mode."
 msgstr ""
 
-#: infrun.c:8953
+#: infrun.c:9344
 msgid "Show whether gdb controls the inferior in non-stop mode."
 msgstr ""
 
-#: infrun.c:8954
+#: infrun.c:9345
 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"
@@ -17026,30 +16829,30 @@ msgid ""
 "leave it stopped or free to run as needed."
 msgstr ""
 
-#: infrun.c:9032
+#: infrun.c:9423
 msgid "Set stopping for shared library events."
 msgstr ""
 
-#: infrun.c:9033
+#: infrun.c:9424
 msgid "Show stopping for shared library events."
 msgstr ""
 
-#: infrun.c:9034
+#: infrun.c:9425
 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:9044
+#: infrun.c:9435
 msgid "Set debugger response to a program call of fork or vfork."
 msgstr ""
 
-#: infrun.c:9045
+#: infrun.c:9436
 msgid "Show debugger response to a program call of fork or vfork."
 msgstr ""
 
-#: infrun.c:9046
+#: infrun.c:9437
 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"
@@ -17058,15 +16861,15 @@ msgid ""
 "By default, the debugger will follow the parent process."
 msgstr ""
 
-#: infrun.c:9058
+#: infrun.c:9449
 msgid "Set debugger response to a program call of exec."
 msgstr ""
 
-#: infrun.c:9059
+#: infrun.c:9450
 msgid "Show debugger response to a program call of exec."
 msgstr ""
 
-#: infrun.c:9060
+#: infrun.c:9451
 msgid ""
 "An exec call replaces the program image of a process.\n"
 "\n"
@@ -17085,15 +16888,15 @@ msgid ""
 "By default, the debugger will use the same inferior."
 msgstr ""
 
-#: infrun.c:9081
+#: infrun.c:9472
 msgid "Set mode for locking scheduler during execution."
 msgstr ""
 
-#: infrun.c:9082
+#: infrun.c:9473
 msgid "Show mode for locking scheduler during execution."
 msgstr ""
 
-#: infrun.c:9083
+#: infrun.c:9474
 msgid ""
 "off    == no locking (threads may preempt at any time)\n"
 "on     == full locking (no thread except the current thread may run)\n"
@@ -17106,15 +16909,15 @@ msgid ""
 "execution."
 msgstr ""
 
-#: infrun.c:9095
+#: infrun.c:9486
 msgid "Set mode for resuming threads of all processes."
 msgstr ""
 
-#: infrun.c:9096
+#: infrun.c:9487
 msgid "Show mode for resuming threads of all processes."
 msgstr ""
 
-#: infrun.c:9097
+#: infrun.c:9488
 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"
@@ -17123,30 +16926,30 @@ msgid ""
 "mode (see help set scheduler-locking)."
 msgstr ""
 
-#: infrun.c:9107
+#: infrun.c:9498
 msgid "Set mode of the step operation."
 msgstr ""
 
-#: infrun.c:9108
+#: infrun.c:9499
 msgid "Show mode of the step operation."
 msgstr ""
 
-#: infrun.c:9109
+#: infrun.c:9500
 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:9118
+#: infrun.c:9509
 msgid "Set debugger's willingness to use displaced stepping."
 msgstr ""
 
-#: infrun.c:9119
+#: infrun.c:9510
 msgid "Show debugger's willingness to use displaced stepping."
 msgstr ""
 
-#: infrun.c:9120
+#: infrun.c:9511
 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"
@@ -17158,57 +16961,57 @@ msgid ""
 "use it in all-stop mode (see help set non-stop)."
 msgstr ""
 
-#: infrun.c:9132
+#: infrun.c:9523
 msgid ""
 "Set direction of execution.\n"
 "Options are 'forward' or 'reverse'."
 msgstr ""
 
-#: infrun.c:9134
+#: infrun.c:9525
 msgid "Show direction of execution (forward/reverse)."
 msgstr ""
 
-#: infrun.c:9135
+#: infrun.c:9526
 msgid "Tells gdb whether to execute forward or backward."
 msgstr ""
 
 #. Set/show detach-on-fork: user-settable mode.
-#: infrun.c:9141
+#: infrun.c:9532
 msgid "Set whether gdb will detach the child of a fork."
 msgstr ""
 
-#: infrun.c:9142
+#: infrun.c:9533
 msgid "Show whether gdb will detach the child of a fork."
 msgstr ""
 
-#: infrun.c:9143
+#: infrun.c:9534
 msgid "Tells gdb whether to detach the child of a fork."
 msgstr ""
 
-#: infrun.c:9150
+#: infrun.c:9541
 msgid "Set disabling of debuggee's virtual address space randomization."
 msgstr ""
 
-#: infrun.c:9151
+#: infrun.c:9542
 msgid "Show disabling of debuggee's virtual address space randomization."
 msgstr ""
 
-#: infrun.c:9152
+#: infrun.c:9543
 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:9176
+#: infrun.c:9567
 msgid "Set whether gdb controls the inferior in observer mode."
 msgstr ""
 
-#: infrun.c:9177
+#: infrun.c:9568
 msgid "Show whether gdb controls the inferior in observer mode."
 msgstr ""
 
-#: infrun.c:9178
+#: infrun.c:9569
 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"
@@ -17244,7 +17047,7 @@ msgstr ""
 msgid "error in command: \"%s\"."
 msgstr ""
 
-#: interps.c:448
+#: interps.c:449
 msgid ""
 "Execute a command in an interpreter.\n"
 "Usage: interpreter-exec INTERPRETER COMMAND...\n"
@@ -17260,7 +17063,7 @@ msgstr ""
 msgid "breakpoint_from_pc: invalid breakpoint address 0x%lx"
 msgstr ""
 
-#: jit.c:70
+#: jit.c:69
 #, possible-c-format
 msgid "JIT debugging is %s.\n"
 msgstr ""
@@ -17295,69 +17098,69 @@ msgstr ""
 msgid "No JIT reader loaded."
 msgstr ""
 
-#: jit.c:369
+#: jit.c:309
 msgid "Unable to read JIT descriptor from remote memory\n"
 msgstr ""
 
-#: jit.c:414
+#: jit.c:354
 msgid "Unable to read JIT code entry from remote memory!"
 msgstr ""
 
-#: jit.c:888
+#: jit.c:781
 msgid "Error opening JITed symbol file, ignoring it.\n"
 msgstr ""
 
-#: jit.c:896
+#: jit.c:789
 msgid "JITed symbol file is not an object file, ignoring it.\n"
 msgstr ""
 
-#: jit.c:904
+#: jit.c:797
 #, possible-c-format
 msgid ""
 "JITed object file architecture %s is not compatible with target architecture "
 "%s."
 msgstr ""
 
-#: jit.c:1097
+#: jit.c:979
 #, possible-c-format
 msgid "Could not recognize DWARF regnum %d"
 msgstr ""
 
-#: jit.c:1190
+#: jit.c:1072
 msgid "Successfully unwound frame using JIT reader.\n"
 msgstr ""
 
-#: jit.c:1195
+#: jit.c:1077
 msgid "Could not unwind frame using JIT reader.\n"
 msgstr ""
 
-#: jit.c:1323
+#: jit.c:1207
 #, possible-c-format
 msgid "Unsupported JIT protocol version %ld in descriptor (expected 1)\n"
 msgstr ""
 
-#: jit.c:1415
+#: jit.c:1303
 #, possible-c-format
 msgid "Unable to find JITed code entry at address: %s\n"
 msgstr ""
 
-#: jit.c:1423
+#: jit.c:1313
 msgid "Unknown action_flag value in JIT descriptor!"
 msgstr ""
 
-#: jit.c:1472
+#: jit.c:1339
 msgid "Set JIT debugging."
 msgstr ""
 
-#: jit.c:1473
+#: jit.c:1340
 msgid "Show JIT debugging."
 msgstr ""
 
-#: jit.c:1474
+#: jit.c:1341
 msgid "When non-zero, JIT debugging is enabled."
 msgstr ""
 
-#: jit.c:1490
+#: jit.c:1355
 msgid ""
 "Load FILE as debug info reader and unwinder for JIT compiled code.\n"
 "Usage: jit-reader-load FILE\n"
@@ -17365,7 +17168,7 @@ msgid ""
 "JIT compiled code.  The file is loaded from "
 msgstr ""
 
-#: jit.c:1499
+#: jit.c:1364
 msgid ""
 "Unload the currently loaded JIT debug info reader.\n"
 "Usage: jit-reader-unload\n"
@@ -17373,69 +17176,69 @@ msgid ""
 "Do \"help jit-reader-load\" for info on loading debug info readers."
 msgstr ""
 
-#: language.c:117
+#: language.c:84
 msgid "Warning: the current language does not match this frame."
 msgstr ""
 
-#: language.c:132
+#: language.c:99
 #, possible-c-format
 msgid "The current source language is \"auto; currently %s\".\n"
 msgstr ""
 
-#: language.c:137
+#: language.c:104
 #, possible-c-format
 msgid "The current source language is \"%s\".\n"
 msgstr ""
 
-#: language.c:238
+#: language.c:205
 #, possible-c-format
 msgid "Range checking is \"auto; currently %s\".\n"
 msgstr ""
 
-#: language.c:242
+#: language.c:209
 #, possible-c-format
 msgid "Range checking is \"%s\".\n"
 msgstr ""
 
-#: language.c:246 language.c:282
+#: language.c:213 language.c:249
 msgid "the current range check setting does not match the language.\n"
 msgstr ""
 
-#: language.c:279
+#: language.c:246
 #, possible-c-format
 msgid "Unrecognized range check setting: \"%s\""
 msgstr ""
 
-#: language.c:310
+#: language.c:277
 #, possible-c-format
 msgid "Case sensitivity in name search is \"auto; currently %s\".\n"
 msgstr ""
 
-#: language.c:316
+#: language.c:283
 #, possible-c-format
 msgid "Case sensitivity in name search is \"%s\".\n"
 msgstr ""
 
-#: language.c:320 language.c:353
+#: language.c:287 language.c:320
 msgid "the current case sensitivity setting does not match the language.\n"
 msgstr ""
 
-#: language.c:396
+#: language.c:363
 #, possible-c-format
 msgid "Current language:  %s\n"
 msgstr ""
 
-#: language.c:401
+#: language.c:368
 #, possible-c-format
 msgid "Range checking:    %s\n"
 msgstr ""
 
-#: language.c:403
+#: language.c:370
 #, possible-c-format
 msgid "Case sensitivity:  %s\n"
 msgstr ""
 
-#: language.c:560
+#: language.c:516
 #, c-format
 msgid ""
 "Set the current source language.\n"
@@ -17444,59 +17247,91 @@ msgid ""
 "local or auto    Automatic setting based on source file"
 msgstr ""
 
-#: language.c:586
+#: language.c:542
 msgid "Show the current source language."
 msgstr ""
 
-#: language.c:762
-msgid "internal error - unimplemented function unk_lang_emit_char called."
+#: language.c:826
+msgid "unimplemented unknown_language::print_type called"
+msgstr ""
+
+#: language.c:842
+msgid "unimplemented unknown_language::value_print called"
+msgstr ""
+
+#: language.c:851
+msgid "unimplemented unknown_language::value_print_inner called"
+msgstr ""
+
+#: language.c:867
+msgid "unimplemented unknown_language::emitchar called"
+msgstr ""
+
+#: language.c:875
+msgid "unimplemented unknown_language::printchar called"
 msgstr ""
 
-#: language.c:769
-msgid "internal error - unimplemented function unk_lang_printchar called."
+#: language.c:885
+msgid "unimplemented unknown_language::printstr called"
 msgstr ""
 
-#: language.c:779
-msgid "internal error - unimplemented function unk_lang_printstr called."
+#: language.c:893
+msgid "unimplemented unknown_language::print_typedef called"
 msgstr ""
 
-#: language.c:788
-msgid "internal error - unimplemented function unk_lang_print_type called."
+#: language.c:952
+msgid "unimplemented auto_language::print_type called"
 msgstr ""
 
-#: language.c:799
-msgid "internal error - unimplemented function unk_lang_val_print called."
+#: language.c:968
+msgid "unimplemented auto_language::value_print called"
 msgstr ""
 
-#: language.c:807
-msgid "internal error - unimplemented function unk_lang_value_print called."
+#: language.c:977
+msgid "unimplemented auto_language::value_print_inner called"
 msgstr ""
 
-#: language.c:1152
+#: language.c:993
+msgid "unimplemented auto_language::emitchar called"
+msgstr ""
+
+#: language.c:1001
+msgid "unimplemented auto_language::printchar called"
+msgstr ""
+
+#: language.c:1011
+msgid "unimplemented auto_language::printstr called"
+msgstr ""
+
+#: language.c:1019
+msgid "unimplemented auto_language::print_typedef called"
+msgstr ""
+
+#: language.c:1246
 msgid "Set the status of the type/range checker."
 msgstr ""
 
-#: language.c:1158
+#: language.c:1252
 msgid "Show the status of the type/range checker."
 msgstr ""
 
-#: language.c:1165
+#: language.c:1259
 msgid "Set range checking (on/warn/off/auto)."
 msgstr ""
 
-#: language.c:1166
+#: language.c:1260
 msgid "Show range checking (on/warn/off/auto)."
 msgstr ""
 
-#: language.c:1172
+#: language.c:1266
 msgid "Set case sensitivity in name search (on/off/auto)."
 msgstr ""
 
-#: language.c:1173
+#: language.c:1267
 msgid "Show case sensitivity in name search (on/off/auto)."
 msgstr ""
 
-#: language.c:1174
+#: language.c:1268
 msgid "For Fortran the default is off; for other languages the default is on."
 msgstr ""
 
@@ -17504,100 +17339,105 @@ msgstr ""
 msgid "unmatched quote"
 msgstr ""
 
-#: linespec.c:1550
+#: linespec.c:1548
 msgid ""
 "[0] cancel\n"
 "[1] all\n"
 msgstr ""
 
-#: linespec.c:1570
+#: linespec.c:1568
 msgid "canceled"
 msgstr ""
 
-#: linespec.c:1585
+#: linespec.c:1583
 #, possible-c-format
 msgid "No choice number %d.\n"
 msgstr ""
 
-#: linespec.c:1597
+#: linespec.c:1595
 #, possible-c-format
 msgid "duplicate request for %d ignored.\n"
 msgstr ""
 
-#: linespec.c:1633
+#: linespec.c:1631
 #, possible-c-format
 msgid ""
 "Undefined convenience variable or function \"%s\" not defined in \"%s\"."
 msgstr ""
 
-#: linespec.c:1637
+#: linespec.c:1635
 #, possible-c-format
 msgid "Undefined convenience variable or function \"%s\" not defined."
 msgstr ""
 
-#: linespec.c:1644
+#: linespec.c:1642
 #, possible-c-format
 msgid "Function \"%s\" not defined in \"%s\"."
 msgstr ""
 
-#: linespec.c:1648
+#: linespec.c:1646
 #, possible-c-format
 msgid "Function \"%s\" not defined."
 msgstr ""
 
-#: linespec.c:1671
+#: linespec.c:1669
 #, possible-c-format
 msgid "malformed linespec error: unexpected %s, \"%s\""
 msgstr ""
 
-#: linespec.c:1676
+#: linespec.c:1674
 #, possible-c-format
 msgid "malformed linespec error: unexpected %s"
 msgstr ""
 
-#: linespec.c:1687
+#: linespec.c:1685
 #, possible-c-format
 msgid "No label \"%s\" defined in function \"%s\"."
 msgstr ""
 
-#: linespec.c:1691
+#: linespec.c:1689
 #, possible-c-format
 msgid "No label \"%s\" defined in current function."
 msgstr ""
 
-#: linespec.c:1700
+#: linespec.c:1698
 #, possible-c-format
 msgid "No source file named %s."
 msgstr ""
 
-#: linespec.c:1734
+#: linespec.c:1732
 #, possible-c-format
 msgid "malformed line offset: \"%s\""
 msgstr ""
 
-#: linespec.c:2207
+#: linespec.c:2205
 #, possible-c-format
 msgid "No line %d in the current file."
 msgstr ""
 
-#: linespec.c:3291 linespec.c:3314
+#: linespec.c:3234
+#, possible-c-format
+msgid "Location %s not available"
+msgstr ""
+
+#: linespec.c:3293 linespec.c:3316
 msgid "Empty line specification."
 msgstr ""
 
-#: linespec.c:3303 linespec.c:3326
+#: linespec.c:3305 linespec.c:3328
 #, possible-c-format
 msgid "Junk at end of line specification: %s"
 msgstr ""
 
 #. The error message doesn't really matter, because this case
 #. should only hit during breakpoint reset.
-#: linespec.c:3363
+#: linespec.c:3365
 msgid "cannot evaluate expressions while program space is in startup"
 msgstr ""
 
 #. Throw an NOT_FOUND_ERROR.  This will be caught by the caller
 #. and other attempts to locate the symbol will be made.
-#: linespec.c:3718
+#: linespec.c:3719
 msgid "see caller, this text doesn't matter"
 msgstr ""
 
@@ -17609,134 +17449,134 @@ msgstr ""
 msgid "Convenience variables used in line specs must have integer values."
 msgstr ""
 
-#: linux-fork.c:374 linux-fork.c:550
+#: linux-fork.c:372 linux-fork.c:548
 #, possible-c-format
 msgid "Unable to detach %s"
 msgstr ""
 
-#: linux-fork.c:438
+#: linux-fork.c:436
 #, possible-c-format
 msgid "Couldn't restore checkpoint state in %s: %s"
 msgstr ""
 
-#: linux-fork.c:497
+#: linux-fork.c:495
 msgid "Requires argument (checkpoint id to delete)"
 msgstr ""
 
-#: linux-fork.c:501 linux-fork.c:543
+#: linux-fork.c:499 linux-fork.c:541
 #, possible-c-format
 msgid "No such checkpoint id, %s"
 msgstr ""
 
-#: linux-fork.c:504
+#: linux-fork.c:502
 msgid "Please switch to another checkpoint before deleting the current one"
 msgstr ""
 
-#: linux-fork.c:508
+#: linux-fork.c:506
 #, possible-c-format
 msgid "Unable to kill pid %s"
 msgstr ""
 
-#: linux-fork.c:515
+#: linux-fork.c:513
 #, possible-c-format
 msgid "Killed %s\n"
 msgstr ""
 
-#: linux-fork.c:528
+#: linux-fork.c:526
 #, possible-c-format
 msgid "Unable to wait pid %s"
 msgstr ""
 
-#: linux-fork.c:539
+#: linux-fork.c:537
 msgid "Requires argument (checkpoint id to detach)"
 msgstr ""
 
-#: linux-fork.c:546
+#: linux-fork.c:544
 msgid "Please switch to another checkpoint before detaching the current one"
 msgstr ""
 
-#: linux-fork.c:553
+#: linux-fork.c:551
 #, possible-c-format
 msgid "Detached %s\n"
 msgstr ""
 
-#: linux-fork.c:584
+#: linux-fork.c:582
 msgid " (main process)"
 msgstr ""
 
-#: linux-fork.c:585
+#: linux-fork.c:583
 msgid " at "
 msgstr ""
 
-#: linux-fork.c:590
+#: linux-fork.c:588
 #, possible-c-format
 msgid ", file %s"
 msgstr ""
 
-#: linux-fork.c:593
+#: linux-fork.c:591
 #, possible-c-format
 msgid ", line %d"
 msgstr ""
 
-#: linux-fork.c:608
+#: linux-fork.c:606
 #, possible-c-format
 msgid "No checkpoint number %d.\n"
 msgstr ""
 
-#: linux-fork.c:610
+#: linux-fork.c:608
 msgid "No checkpoints.\n"
 msgstr ""
 
-#: linux-fork.c:656
+#: linux-fork.c:654
 msgid "checkpoint: can't checkpoint multiple threads."
 msgstr ""
 
-#: linux-fork.c:666
+#: linux-fork.c:664
 msgid "checkpoint: can't find fork function in inferior."
 msgstr ""
 
 #. Probably can't happen.
-#: linux-fork.c:680
+#: linux-fork.c:678
 msgid "checkpoint: call_function_by_hand returned null."
 msgstr ""
 
-#: linux-fork.c:691
+#: linux-fork.c:689
 #, possible-c-format
 msgid "checkpoint %d: fork returned pid %ld.\n"
 msgstr ""
 
-#: linux-fork.c:698
+#: linux-fork.c:696
 #, possible-c-format
 msgid "   gdb says parent = %ld.\n"
 msgstr ""
 
-#: linux-fork.c:704
+#: linux-fork.c:702
 msgid "Failed to find new fork"
 msgstr ""
 
-#: linux-fork.c:734
+#: linux-fork.c:732
 #, possible-c-format
 msgid "Switching to %s\n"
 msgstr ""
 
-#: linux-fork.c:747
+#: linux-fork.c:745
 msgid "Requires argument (checkpoint id to restart)"
 msgstr ""
 
-#: linux-fork.c:750
+#: linux-fork.c:748
 #, possible-c-format
 msgid "Not found: checkpoint id %s"
 msgstr ""
 
 #. Checkpoint command: create a fork of the inferior process
 #. and set it aside for later debugging.
-#: linux-fork.c:761
+#: linux-fork.c:760
 msgid "Fork a duplicate process (experimental)."
 msgstr ""
 
 #. Restart command: restore the context of a specified checkpoint
 #. process.
-#: linux-fork.c:767
+#: linux-fork.c:766
 msgid ""
 "Restore program context from a checkpoint.\n"
 "Usage: restart N\n"
@@ -17745,89 +17585,114 @@ msgstr ""
 
 #. Delete checkpoint command: kill the process and remove it from
 #. the fork list.
-#: linux-fork.c:775
+#: linux-fork.c:774
 msgid "Delete a checkpoint (experimental)."
 msgstr ""
 
 #. Detach checkpoint command: release the process to run independently,
 #. and remove it from the fork list.
-#: linux-fork.c:782
+#: linux-fork.c:781
 msgid "Detach from a checkpoint (experimental)."
 msgstr ""
 
-#: linux-fork.c:790
+#: linux-fork.c:789
 msgid "IDs of currently known checkpoints."
 msgstr ""
 
-#: linux-nat.c:197
+#: linux-nat.c:198
 #, possible-c-format
 msgid "Debugging of GNU/Linux lwp module is %s.\n"
 msgstr ""
 
-#: linux-nat.c:496
+#: linux-nat.c:514
 msgid "Couldn't do single step"
 msgstr ""
 
-#: linux-nat.c:498
+#: linux-nat.c:516
 msgid "Couldn't wait vfork process"
 msgstr ""
 
-#: linux-nat.c:1221
+#: linux-nat.c:1146
+#, possible-c-format
+msgid "Cannot attach to lwp %d: %s"
+msgstr ""
+
+#: linux-nat.c:1227
 msgid "Unable to attach: program exited normally."
 msgstr ""
 
-#: linux-nat.c:1223
+#: linux-nat.c:1229
 #, possible-c-format
 msgid "Unable to attach: program exited with code %d."
 msgstr ""
 
-#: linux-nat.c:1234
+#: linux-nat.c:1240
 #, possible-c-format
 msgid "Unable to attach: program terminated with signal %s, %s."
 msgstr ""
 
-#: linux-nat.c:1241
+#: linux-nat.c:1247
 #, possible-c-format
 msgid "unexpected status %d for PID %ld"
 msgstr ""
 
-#: linux-nat.c:1958
+#: linux-nat.c:1419
+#, possible-c-format
+msgid "Couldn't reap LWP %d while detaching: %s"
+msgstr ""
+
+#: linux-nat.c:1424
+#, possible-c-format
+msgid "Reaping LWP %d while detaching returned unexpected status 0x%x"
+msgstr ""
+
+#: linux-nat.c:1431
+#, possible-c-format
+msgid "Can't detach %s: %s"
+msgstr ""
+
+#: linux-nat.c:1918
 msgid "waiting for new child"
 msgstr ""
 
-#: linux-nat.c:1961
+#: linux-nat.c:1921
 #, possible-c-format
 msgid "wait returned unexpected PID %d"
 msgstr ""
 
-#: linux-nat.c:1964
+#: linux-nat.c:1924
 #, possible-c-format
 msgid "wait returned unexpected status 0x%x"
 msgstr ""
 
-#: linux-nat.c:4023 linux-nat.c:4036
+#: linux-nat.c:2066
+#, possible-c-format
+msgid "unknown ptrace event %d"
+msgstr ""
+
+#: linux-nat.c:3870 linux-nat.c:3883
 #, possible-c-format
 msgid "Could not parse signal set: %s"
 msgstr ""
 
-#: linux-nat.c:4068
+#: linux-nat.c:3915
 #, possible-c-format
 msgid "Could not open %s"
 msgstr ""
 
-#: linux-nat.c:4542
+#: linux-nat.c:4382
 msgid "Set debugging of GNU/Linux lwp module."
 msgstr ""
 
-#: linux-nat.c:4543
+#: linux-nat.c:4383
 msgid "Show debugging of GNU/Linux lwp module."
 msgstr ""
 
-#: linux-nat.c:4551
+#: linux-nat.c:4391
 msgid "Set debugging of GNU/Linux namespaces module."
 msgstr ""
 
-#: linux-nat.c:4552
+#: linux-nat.c:4392
 msgid "Show debugging of GNU/Linux namespaces module."
 msgstr ""
 
@@ -17897,265 +17762,269 @@ msgstr ""
 msgid "Could not compile regex to match '<file> (deleted)'"
 msgstr ""
 
-#: linux-tdep.c:765
+#: linux-tdep.c:778
 msgid "Can't determine the current process's PID: you must name one."
 msgstr ""
 
-#: linux-tdep.c:772
+#: linux-tdep.c:785
 #, possible-c-format
 msgid "Too many parameters: %s"
 msgstr ""
 
-#: linux-tdep.c:774
+#: linux-tdep.c:787
 #, possible-c-format
 msgid "process %ld\n"
 msgstr ""
 
-#: linux-tdep.c:795 linux-tdep.c:877 linux-tdep.c:887 linux-tdep.c:1023
-#: linux-tdep.c:2285 nat/linux-procfs.c:40 nat/linux-procfs.c:137
-#: sparc64-tdep.c:337
+#: linux-tdep.c:808 linux-tdep.c:890 linux-tdep.c:900 linux-tdep.c:1036
+#: linux-tdep.c:2387 nat/linux-procfs.c:40 nat/linux-procfs.c:137
+#: sparc64-tdep.c:329
 #, possible-c-format
 msgid "unable to open /proc file '%s'"
 msgstr ""
 
-#: linux-tdep.c:805 linux-tdep.c:815
+#: linux-tdep.c:818 linux-tdep.c:828
 #, possible-c-format
 msgid "unable to read link '%s'"
 msgstr ""
 
-#: linux-tdep.c:898
+#: linux-tdep.c:911
 #, possible-c-format
 msgid "Process: %s\n"
 msgstr ""
 
-#: linux-tdep.c:917
+#: linux-tdep.c:930
 #, possible-c-format
 msgid "State: %c\n"
 msgstr ""
 
-#: linux-tdep.c:920
+#: linux-tdep.c:933
 #, possible-c-format
 msgid "Parent process: %s\n"
 msgstr ""
 
-#: linux-tdep.c:923
+#: linux-tdep.c:936
 #, possible-c-format
 msgid "Process group: %s\n"
 msgstr ""
 
-#: linux-tdep.c:926
+#: linux-tdep.c:939
 #, possible-c-format
 msgid "Session id: %s\n"
 msgstr ""
 
-#: linux-tdep.c:929
+#: linux-tdep.c:942
 #, possible-c-format
 msgid "TTY: %s\n"
 msgstr ""
 
-#: linux-tdep.c:932
+#: linux-tdep.c:945
 #, possible-c-format
 msgid "TTY owner process group: %s\n"
 msgstr ""
 
-#: linux-tdep.c:936
+#: linux-tdep.c:949
 #, possible-c-format
 msgid "Flags: %s\n"
 msgstr ""
 
-#: linux-tdep.c:939
+#: linux-tdep.c:952
 #, possible-c-format
 msgid "Minor faults (no memory page): %s\n"
 msgstr ""
 
-#: linux-tdep.c:942
+#: linux-tdep.c:955
 #, possible-c-format
 msgid "Minor faults, children: %s\n"
 msgstr ""
 
-#: linux-tdep.c:945
+#: linux-tdep.c:958
 #, possible-c-format
 msgid "Major faults (memory page faults): %s\n"
 msgstr ""
 
-#: linux-tdep.c:948
+#: linux-tdep.c:961
 #, possible-c-format
 msgid "Major faults, children: %s\n"
 msgstr ""
 
-#: linux-tdep.c:951
+#: linux-tdep.c:964
 #, possible-c-format
 msgid "utime: %s\n"
 msgstr ""
 
-#: linux-tdep.c:954
+#: linux-tdep.c:967
 #, possible-c-format
 msgid "stime: %s\n"
 msgstr ""
 
-#: linux-tdep.c:957
+#: linux-tdep.c:970
 #, possible-c-format
 msgid "utime, children: %s\n"
 msgstr ""
 
-#: linux-tdep.c:960
+#: linux-tdep.c:973
 #, possible-c-format
 msgid "stime, children: %s\n"
 msgstr ""
 
-#: linux-tdep.c:963
+#: linux-tdep.c:976
 #, possible-c-format
 msgid "jiffies remaining in current time slice: %s\n"
 msgstr ""
 
-#: linux-tdep.c:967
+#: linux-tdep.c:980
 #, possible-c-format
 msgid "'nice' value: %s\n"
 msgstr ""
 
-#: linux-tdep.c:970
+#: linux-tdep.c:983
 #, possible-c-format
 msgid "jiffies until next timeout: %s\n"
 msgstr ""
 
-#: linux-tdep.c:973
+#: linux-tdep.c:986
 #, possible-c-format
 msgid "jiffies until next SIGALRM: %s\n"
 msgstr ""
 
-#: linux-tdep.c:976
+#: linux-tdep.c:989
 #, possible-c-format
 msgid "start time (jiffies since system boot): %s\n"
 msgstr ""
 
-#: linux-tdep.c:980
+#: linux-tdep.c:993
 #, possible-c-format
 msgid "Virtual memory size: %s\n"
 msgstr ""
 
-#: linux-tdep.c:983
+#: linux-tdep.c:996
 #, possible-c-format
 msgid "Resident set size: %s\n"
 msgstr ""
 
-#: linux-tdep.c:986
+#: linux-tdep.c:999
 #, possible-c-format
 msgid "rlim: %s\n"
 msgstr ""
 
-#: linux-tdep.c:989
+#: linux-tdep.c:1002
 #, possible-c-format
 msgid "Start of text: %s\n"
 msgstr ""
 
-#: linux-tdep.c:992
+#: linux-tdep.c:1005
 #, possible-c-format
 msgid "End of text: %s\n"
 msgstr ""
 
-#: linux-tdep.c:995
+#: linux-tdep.c:1008
 #, possible-c-format
 msgid "Start of stack: %s\n"
 msgstr ""
 
-#: linux-tdep.c:1000
+#: linux-tdep.c:1013
 #, possible-c-format
 msgid "Kernel stack pointer: %s\n"
 msgstr ""
 
-#: linux-tdep.c:1003
+#: linux-tdep.c:1016
 #, possible-c-format
 msgid "Kernel instr pointer: %s\n"
 msgstr ""
 
-#: linux-tdep.c:1006
+#: linux-tdep.c:1019
 #, possible-c-format
 msgid "Pending signals bitmap: %s\n"
 msgstr ""
 
-#: linux-tdep.c:1009
+#: linux-tdep.c:1022
 #, possible-c-format
 msgid "Blocked signals bitmap: %s\n"
 msgstr ""
 
-#: linux-tdep.c:1012
+#: linux-tdep.c:1025
 #, possible-c-format
 msgid "Ignored signals bitmap: %s\n"
 msgstr ""
 
-#: linux-tdep.c:1015
+#: linux-tdep.c:1028
 #, possible-c-format
 msgid "Catched signals bitmap: %s\n"
 msgstr ""
 
-#: linux-tdep.c:1018
+#: linux-tdep.c:1031
 #, possible-c-format
 msgid "wchan (system call): %s\n"
 msgstr ""
 
-#: linux-tdep.c:1064
+#: linux-tdep.c:1112
 msgid "malformed note - does not end with \\0"
 msgstr ""
 
-#: linux-tdep.c:1073
+#: linux-tdep.c:1124
 msgid "malformed note - too short for supplied file count"
 msgstr ""
 
-#: linux-tdep.c:1097
-msgid "malformed note - filenames end too early"
+#: linux-tdep.c:1137
+msgid "malformed note - filename area is too small"
 msgstr ""
 
 #: linux-tdep.c:1144
+msgid "malformed note - filename area is too big"
+msgstr ""
+
+#: linux-tdep.c:1225
 msgid "unable to find command name in core file"
 msgstr ""
 
-#: linux-tdep.c:1151
+#: linux-tdep.c:1232
 msgid "unable to handle request"
 msgstr ""
 
-#: linux-tdep.c:1287
+#: linux-tdep.c:1378
 #, possible-c-format
 msgid "Error parsing {s,}maps file '%s'"
 msgstr ""
 
-#: linux-tdep.c:1307
+#: linux-tdep.c:1398
 #, possible-c-format
 msgid "Error parsing {s,}maps file '%s' number"
 msgstr ""
 
-#: linux-tdep.c:2354
+#: linux-tdep.c:2456
 #, possible-c-format
 msgid "Failed inferior mmap call for %s bytes, errno is changed."
 msgstr ""
 
-#: linux-tdep.c:2383
+#: linux-tdep.c:2485
 #, possible-c-format
 msgid "Failed inferior munmap call at %s for %s bytes, errno is changed."
 msgstr ""
 
-#: linux-tdep.c:2404
+#: linux-tdep.c:2506
 msgid "Cannot find AT_ENTRY auxiliary vector entry."
 msgstr ""
 
-#: linux-tdep.c:2449
+#: linux-tdep.c:2551
 #, possible-c-format
 msgid "Use of /proc/PID/coredump_filter file to generate corefiles is %s.\n"
 msgstr ""
 
-#: linux-tdep.c:2460
+#: linux-tdep.c:2562
 #, possible-c-format
 msgid "Dumping of mappings marked with the VM_DONTDUMP flag is %s.\n"
 msgstr ""
 
-#: linux-tdep.c:2499
+#: linux-tdep.c:2603
 msgid "Set whether gcore should consider /proc/PID/coredump_filter."
 msgstr ""
 
-#: linux-tdep.c:2501
+#: linux-tdep.c:2605
 msgid "Show whether gcore should consider /proc/PID/coredump_filter."
 msgstr ""
 
-#: linux-tdep.c:2503
+#: linux-tdep.c:2607
 msgid ""
 "Use this command to set whether gcore should consider the contents\n"
 "of /proc/PID/coredump_filter when generating the corefile.  For more "
@@ -18163,23 +18032,23 @@ msgid ""
 "about this file, refer to the manpage of core(5)."
 msgstr ""
 
-#: linux-tdep.c:2511
+#: linux-tdep.c:2615
 msgid ""
 "Set whether gcore should dump mappings marked with the VM_DONTDUMP flag."
 msgstr ""
 
-#: linux-tdep.c:2513
+#: linux-tdep.c:2617
 msgid ""
 "Show whether gcore should dump mappings marked with the VM_DONTDUMP flag."
 msgstr ""
 
-#: linux-tdep.c:2515
+#: linux-tdep.c:2619
 msgid ""
 "Use this command to set whether gcore should dump mappings marked with the\n"
 "VM_DONTDUMP flag (\"dd\" in /proc/PID/smaps) when generating the corefile.  "
 "For\n"
-"more information about this file, refer to the manpage of proc(5) and core"
-"(5)."
+"more information about this file, refer to the manpage of proc(5) and "
+"core(5)."
 msgstr ""
 
 #: linux-thread-db.c:82
@@ -18200,213 +18069,213 @@ msgstr ""
 msgid "libthread-db debugging is %s.\n"
 msgstr ""
 
-#: linux-thread-db.c:286
+#: linux-thread-db.c:290
 #, possible-c-format
 msgid "Cannot deregister process %d from libthread_db: %s"
 msgstr ""
 
-#: linux-thread-db.c:416
+#: linux-thread-db.c:420
 #, possible-c-format
 msgid "Cannot find user-level thread for LWP %ld: %s"
 msgstr ""
 
-#: linux-thread-db.c:421
+#: linux-thread-db.c:425
 #, possible-c-format
 msgid "thread_get_info_callback: cannot get thread info: %s"
 msgstr ""
 
-#: linux-thread-db.c:457
+#: linux-thread-db.c:461
 #, possible-c-format
 msgid "Symbol \"%s\" not found in libthread_db: %s"
 msgstr ""
 
-#: linux-thread-db.c:532
+#: linux-thread-db.c:537
 msgid "Warning: couldn't activate thread debugging using libthread_db: "
 msgstr ""
 
-#: linux-thread-db.c:621
+#: linux-thread-db.c:626
 #, possible-c-format
 msgid "%s failed: %s"
 msgstr ""
 
 #. Some platforms require execution for td_ta_map_lwp2thr.
-#: linux-thread-db.c:659
+#: linux-thread-db.c:664
 msgid "; can't map_lwp2thr"
 msgstr ""
 
-#: linux-thread-db.c:731
+#: linux-thread-db.c:736
 msgid "Running libthread_db integrity checks:\n"
 msgstr ""
 
-#: linux-thread-db.c:772
+#: linux-thread-db.c:777
 #, possible-c-format
 msgid "td_ta_thr_iter failed: %s"
 msgstr ""
 
-#: linux-thread-db.c:775
+#: linux-thread-db.c:780
 msgid "no threads seen"
 msgstr ""
 
-#: linux-thread-db.c:783
+#: linux-thread-db.c:788
 msgid "libthread_db integrity checks failed: "
 msgstr ""
 
-#: linux-thread-db.c:789
+#: linux-thread-db.c:794
 msgid "libthread_db integrity checks passed.\n"
 msgstr ""
 
-#: linux-thread-db.c:830
+#: linux-thread-db.c:835
 #, possible-c-format
 msgid "Cannot initialize libthread_db: %s"
 msgstr ""
 
-#: linux-thread-db.c:845
+#: linux-thread-db.c:850
 #, possible-c-format
 msgid "td_ta_new failed: %s\n"
 msgstr ""
 
-#: linux-thread-db.c:859
+#: linux-thread-db.c:864
 #, possible-c-format
 msgid "td_ta_new failed: %s"
 msgstr ""
 
-#: linux-thread-db.c:921 sol-thread.c:647
+#: linux-thread-db.c:926 sol-thread.c:641
 msgid "[Thread debugging using libthread_db enabled]\n"
 msgstr ""
 
-#: linux-thread-db.c:938
+#: linux-thread-db.c:943
 #, possible-c-format
 msgid "Using host libthread_db library \"%ps\".\n"
 msgstr ""
 
-#: linux-thread-db.c:961
+#: linux-thread-db.c:964
 #, possible-c-format
 msgid "Trying host libthread_db library: %s.\n"
 msgstr ""
 
-#: linux-thread-db.c:971
+#: linux-thread-db.c:974
 #, possible-c-format
 msgid "open failed: %s.\n"
 msgstr ""
 
-#: linux-thread-db.c:976
+#: linux-thread-db.c:979
 #, possible-c-format
 msgid ""
 "auto-load: Loading libthread-db library \"%s\" from explicit directory.\n"
 msgstr ""
 
-#: linux-thread-db.c:987
+#: linux-thread-db.c:990
 #, possible-c-format
 msgid "dlopen failed: %s.\n"
 msgstr ""
 
-#: linux-thread-db.c:1001
+#: linux-thread-db.c:1004
 #, possible-c-format
 msgid "Host %s resolved to: %s.\n"
 msgstr ""
 
-#: linux-thread-db.c:1032
+#: linux-thread-db.c:1036
 #, possible-c-format
 msgid "Expected absolute pathname for libpthread in the inferior, but got %ps."
 msgstr ""
 
-#: linux-thread-db.c:1161
+#: linux-thread-db.c:1165
 #, possible-c-format
 msgid "thread_db_load_search returning %d\n"
 msgstr ""
 
-#: linux-thread-db.c:1206
+#: linux-thread-db.c:1211
 msgid ""
 "Unable to find libthread_db matching inferior's thread library, thread "
 "debugging will not be available."
 msgstr ""
 
-#: linux-thread-db.c:1296
+#: linux-thread-db.c:1301
 msgid ""
 "Target and debugger are in different PID namespaces; thread lists and other "
 "data are likely unreliable.  Connect to gdbserver inside the container."
 msgstr ""
 
-#: linux-thread-db.c:1446
+#: linux-thread-db.c:1453
 #, possible-c-format
 msgid "find_new_threads_callback: cannot get thread info: %s"
 msgstr ""
 
-#: linux-thread-db.c:1537
+#: linux-thread-db.c:1544
 #, possible-c-format
 msgid "Found %d new threads in iteration %d.\n"
 msgstr ""
 
-#: linux-thread-db.c:1580
+#: linux-thread-db.c:1588
 #, possible-c-format
 msgid "Cannot find new threads: %s"
 msgstr ""
 
-#: linux-thread-db.c:1690
+#: linux-thread-db.c:1696
 #, possible-c-format
 msgid "Thread handle size mismatch: %d vs %zu (from libthread_db)"
 msgstr ""
 
-#: linux-thread-db.c:1752
+#: linux-thread-db.c:1759
 msgid "No TLS library support"
 msgstr ""
 
-#: linux-thread-db.c:1767
+#: linux-thread-db.c:1774
 msgid "TLS load module not found"
 msgstr ""
 
-#: linux-thread-db.c:1786
+#: linux-thread-db.c:1793
 msgid "TLS not allocated yet"
 msgstr ""
 
-#: linux-thread-db.c:1864
+#: linux-thread-db.c:1872
 msgid "'info auto-load libthread-db' does not accept any parameters"
 msgstr ""
 
-#: linux-thread-db.c:1942
+#: linux-thread-db.c:1950
 msgid "No auto-loaded libthread-db.\n"
 msgstr ""
 
-#: linux-thread-db.c:1958
+#: linux-thread-db.c:1967
 msgid "No libthread_db loaded"
 msgstr ""
 
-#: linux-thread-db.c:1976
+#: linux-thread-db.c:1986
 msgid "Set search path for libthread_db."
 msgstr ""
 
-#: linux-thread-db.c:1977
+#: linux-thread-db.c:1987
 msgid "Show the current search path or libthread_db."
 msgstr ""
 
-#: linux-thread-db.c:1978
+#: linux-thread-db.c:1988
 msgid ""
 "This path is used to search for libthread_db to be loaded into gdb itself.\n"
 "Its value is a colon (':') separate list of directories to search.\n"
 "Setting the search path to an empty list resets it to its default value."
 msgstr ""
 
-#: linux-thread-db.c:1988
+#: linux-thread-db.c:1998
 msgid "Set libthread-db debugging."
 msgstr ""
 
-#: linux-thread-db.c:1989
+#: linux-thread-db.c:1999
 msgid "Show libthread-db debugging."
 msgstr ""
 
-#: linux-thread-db.c:1990
+#: linux-thread-db.c:2000
 msgid "When non-zero, libthread-db debugging is enabled."
 msgstr ""
 
-#: linux-thread-db.c:1997
+#: linux-thread-db.c:2007
 msgid "Enable or disable auto-loading of inferior specific libthread_db."
 msgstr ""
 
-#: linux-thread-db.c:1998
+#: linux-thread-db.c:2008
 msgid "Show whether auto-loading inferior specific libthread_db is enabled."
 msgstr ""
 
-#: linux-thread-db.c:1999
+#: linux-thread-db.c:2009
 msgid ""
 "If enabled, libthread_db will be searched in 'set libthread-db-search-path'\n"
 "locations to load libthread_db compatible with the inferior.\n"
@@ -18414,25 +18283,25 @@ msgid ""
 "This option has security implications for untrusted inferiors."
 msgstr ""
 
-#: linux-thread-db.c:2009
+#: linux-thread-db.c:2019
 msgid ""
 "Print the list of loaded inferior specific libthread_db.\n"
 "Usage: info auto-load libthread-db"
 msgstr ""
 
-#: linux-thread-db.c:2014
+#: linux-thread-db.c:2024
 msgid "Run integrity checks on the current inferior's libthread_db."
 msgstr ""
 
-#: linux-thread-db.c:2020
+#: linux-thread-db.c:2030
 msgid "Set whether to check libthread_db at load time."
 msgstr ""
 
-#: linux-thread-db.c:2021
+#: linux-thread-db.c:2031
 msgid "Show whether to check libthread_db at load time."
 msgstr ""
 
-#: linux-thread-db.c:2022
+#: linux-thread-db.c:2032
 msgid ""
 "If enabled GDB will run integrity checks on inferior specific libthread_db\n"
 "as they are loaded."
@@ -18465,53 +18334,53 @@ msgstr ""
 msgid "Sets are not implemented."
 msgstr ""
 
-#: m2-exp.y:590
+#: m2-exp.y:589
 msgid "No symbol table is loaded.  Use the \"symbol-file\" command."
 msgstr ""
 
-#: m2-exp.y:655
+#: m2-exp.y:654
 msgid "Floating point numbers must be base 10."
 msgstr ""
 
-#: m2-exp.y:657
+#: m2-exp.y:656
 #, possible-c-format
 msgid "Invalid digit '%c' in number."
 msgstr ""
 
-#: m2-exp.y:665
+#: m2-exp.y:664
 #, possible-c-format
 msgid "Invalid digit '%c' in octal number."
 msgstr ""
 
-#: m2-exp.y:706
+#: m2-exp.y:705
 msgid "Overflow on numeric constant -- number too large."
 msgstr ""
 
-#: m2-exp.y:871
+#: m2-exp.y:870
 msgid "Unterminated string or character constant."
 msgstr ""
 
-#: m2-exp.y:1003
+#: m2-exp.y:1002
 msgid "internal:  Undefined class in m2lex()"
 msgstr ""
 
-#: m2-exp.y:1007
+#: m2-exp.y:1006
 msgid "internal:  Unforseen case in m2lex()"
 msgstr ""
 
-#: m2-exp.y:1010
+#: m2-exp.y:1009
 msgid "unhandled token in m2lex()"
 msgstr ""
 
-#: m2-lang.c:228
+#: m2-lang.c:74
 msgid "unbounded structure missing _m2_high field"
 msgstr ""
 
-#: m2-lang.c:256
+#: m2-lang.c:102
 msgid "internal error: unbounded array structure is unknown"
 msgstr ""
 
-#: m2-lang.c:262
+#: m2-lang.c:108
 msgid "unbounded structure missing _m2_contents field"
 msgstr ""
 
@@ -18536,7 +18405,7 @@ msgstr ""
 msgid "long_set failed to find discrete bounds for its subtype"
 msgstr ""
 
-#: m2-typeprint.c:427 m2-valprint.c:65
+#: m2-typeprint.c:427 m2-valprint.c:62
 msgid "expecting long_set"
 msgstr ""
 
@@ -18550,22 +18419,22 @@ msgstr ""
 msgid "CASE <variant> OF\n"
 msgstr ""
 
-#: m2-valprint.c:97
+#: m2-valprint.c:94
 msgid "<unknown bounds of set>"
 msgstr ""
 
-#: m2-valprint.c:111
+#: m2-valprint.c:108
 msgid "bit test is out of range"
 msgstr ""
 
 #. This happens (without TYPE_STUB set) on systems which don't use
 #. dbx xrefs (NO_DBX_XREFS in gcc) if a file has a "struct foo *bar"
 #. and no complete type for struct foo in that file.
-#: m2-valprint.c:413 valprint.c:993 valprint.c:1052
+#: m2-valprint.c:389 valprint.c:910 valprint.c:952
 msgid "<incomplete type>"
 msgstr ""
 
-#: m2-valprint.c:429
+#: m2-valprint.c:405
 msgid "<error value>"
 msgstr ""
 
@@ -18622,209 +18491,209 @@ msgid "m68k_get_longjmp_target: not impl
 msgstr ""
 
 #. Unexpected empty N_SO.
-#: machoread.c:192
+#: machoread.c:191
 msgid "Unexpected empty N_SO stab"
 msgstr ""
 
 #. Debugging symbols are not expected here.
-#: machoread.c:209
+#: machoread.c:208
 #, possible-c-format
 msgid "%s: Unexpected debug stab outside SO markers"
 msgstr ""
 
 #. Unexpected empty N_SO.
-#: machoread.c:226
+#: machoread.c:225
 msgid "Empty SO section"
 msgstr ""
 
-#: machoread.c:236
+#: machoread.c:235
 msgid "Three SO in a raw"
 msgstr ""
 
-#: machoread.c:245
+#: machoread.c:244
 #, possible-c-format
 msgid "stabs debugging not supported for %s"
 msgstr ""
 
-#: machoread.c:257
+#: machoread.c:256
 msgid "Unexpected stab after SO"
 msgstr ""
 
-#: machoread.c:274
+#: machoread.c:273
 msgid "Missing nul SO"
 msgstr ""
 
-#: machoread.c:302
+#: machoread.c:301
 msgid "unhandled stab for dwarf OSO file"
 msgstr ""
 
-#: machoread.c:308
+#: machoread.c:307
 msgid "non-debugging symbol within SO"
 msgstr ""
 
-#: machoread.c:314
+#: machoread.c:313
 msgid "missing nul SO"
 msgstr ""
 
-#: machoread.c:399
+#: machoread.c:398
 #, possible-c-format
 msgid "can't find symbol '%s' in minsymtab"
 msgstr ""
 
-#: machoread.c:426
+#: machoread.c:425
 #, possible-c-format
 msgid "Loading debugging symbols from oso: %s\n"
 msgstr ""
 
-#: machoread.c:430 symfile.c:1761
+#: machoread.c:429 symfile.c:1745
 #, possible-c-format
 msgid "`%s': can't read symbols: %s."
 msgstr ""
 
-#: machoread.c:437
+#: machoread.c:436
 #, possible-c-format
 msgid "`%s': file time stamp mismatch."
 msgstr ""
 
-#: machoread.c:445
+#: machoread.c:444
 #, possible-c-format
 msgid "`%s': can't create hash table"
 msgstr ""
 
-#: machoread.c:492
+#: machoread.c:491
 #, possible-c-format
 msgid "Duplicated symbol %s in symbol table"
 msgstr ""
 
-#: machoread.c:499
+#: machoread.c:498
 #, possible-c-format
 msgid "Adding symbol %s (addr: %s)\n"
 msgstr ""
 
-#: machoread.c:573
+#: machoread.c:572
 #, possible-c-format
 msgid "resolve sect %s with %s (set to %s)\n"
 msgstr ""
 
-#: machoread.c:646
+#: machoread.c:645
 #, possible-c-format
 msgid "Could not open OSO archive file \"%s\""
 msgstr ""
 
-#: machoread.c:653
+#: machoread.c:652
 #, possible-c-format
 msgid "OSO archive file \"%s\" not an archive."
 msgstr ""
 
-#: machoread.c:664
+#: machoread.c:663
 #, possible-c-format
 msgid "Could not read archive members out of OSO archive \"%s\""
 msgstr ""
 
-#: machoread.c:702
+#: machoread.c:701
 #, possible-c-format
 msgid "Could not find specified archive member for OSO name \"%s\""
 msgstr ""
 
-#: machoread.c:711 symfile.c:1754
+#: machoread.c:710 symfile.c:1738
 #, possible-c-format
 msgid "`%s': can't open to read symbols: %s."
 msgstr ""
 
-#: machoread.c:755 machoread.c:774
+#: machoread.c:754 machoread.c:773
 #, possible-c-format
 msgid "can't find UUID in %s"
 msgstr ""
 
-#: machoread.c:761
+#: machoread.c:760
 #, possible-c-format
 msgid "can't open dsym file %s"
 msgstr ""
 
-#: machoread.c:767
+#: machoread.c:766
 #, possible-c-format
 msgid "bad dsym file format: %s"
 msgstr ""
 
-#: machoread.c:780
+#: machoread.c:779
 #, possible-c-format
 msgid "dsym file UUID doesn't match the one in %s"
 msgstr ""
 
-#: machoread.c:847
+#: machoread.c:846
 msgid "dsym file found\n"
 msgstr ""
 
-#: machoread.c:891
+#: machoread.c:890
 #, possible-c-format
 msgid "Relocate section '%s' of %s\n"
 msgstr ""
 
-#: machoread.c:976
+#: machoread.c:971
 msgid "Set if printing Mach-O symbols processing."
 msgstr ""
 
-#: machoread.c:977
+#: machoread.c:972
 msgid "Show if printing Mach-O symbols processing."
 msgstr ""
 
-#: macrocmd.c:68
+#: macrocmd.c:56
 msgid ""
 "You must follow the `macro expand' command with the expression you\n"
 "want to expand."
 msgstr ""
 
-#: macrocmd.c:97
+#: macrocmd.c:84
 msgid ""
 "You must follow the `macro expand-once' command with the expression\n"
 "you want to expand."
 msgstr ""
 
-#: macrocmd.c:131
+#: macrocmd.c:120
 msgid "  included at "
 msgstr ""
 
-#: macrocmd.c:211
+#: macrocmd.c:200
 msgid ""
 "You must follow the `info macro' command with the name of the macro\n"
 "whose definition you want to see."
 msgstr ""
 
-#: macrocmd.c:352
+#: macrocmd.c:341
 msgid "usage: macro define NAME[(ARGUMENT-LIST)] [REPLACEMENT-LIST]"
 msgstr ""
 
-#: macrocmd.c:357 macrocmd.c:429
+#: macrocmd.c:346 macrocmd.c:418
 msgid "Invalid macro name."
 msgstr ""
 
-#: macrocmd.c:385
+#: macrocmd.c:374
 msgid "Macro is missing an argument."
 msgstr ""
 
-#: macrocmd.c:391
+#: macrocmd.c:380
 msgid "Two macro arguments with identical names."
 msgstr ""
 
-#: macrocmd.c:401
+#: macrocmd.c:390
 msgid "',' or ')' expected at end of macro arguments."
 msgstr ""
 
-#: macrocmd.c:424
+#: macrocmd.c:413
 msgid "usage: macro undef NAME"
 msgstr ""
 
-#: macrocmd.c:467
+#: macrocmd.c:457
 msgid "Prefix for commands dealing with C preprocessor macros."
 msgstr ""
 
-#: macrocmd.c:470
+#: macrocmd.c:460
 msgid ""
 "Fully expand any C/C++ preprocessor macro invocations in EXPRESSION.\n"
 "Show the expanded expression."
 msgstr ""
 
-#: macrocmd.c:475
+#: macrocmd.c:465
 msgid ""
 "Expand C/C++ preprocessor macro invocations appearing directly in "
 "EXPRESSION.\n"
@@ -18839,7 +18708,7 @@ msgid ""
 "expression work together to yield a pre-processed expression."
 msgstr ""
 
-#: macrocmd.c:490
+#: macrocmd.c:480
 msgid ""
 "Show the definition of MACRO, and it's source location.\n"
 "Usage: info macro [-a|-all] [--] MACRO\n"
@@ -18849,14 +18718,14 @@ msgid ""
 "  --           Specify the end of arguments and the beginning of the MACRO."
 msgstr ""
 
-#: macrocmd.c:498
+#: macrocmd.c:488
 msgid ""
 "Show the definitions of all macros at LINESPEC, or the current source "
 "location.\n"
 "Usage: info macros [LINESPEC]"
 msgstr ""
 
-#: macrocmd.c:502
+#: macrocmd.c:492
 msgid ""
 "Define a new C/C++ preprocessor macro.\n"
 "The GDB command `macro define DEFINITION' is equivalent to placing a\n"
@@ -18867,12 +18736,12 @@ msgid ""
 "  (gdb) macro define MIN(x,y) ((x) < (y) ? (x) : (y))"
 msgstr ""
 
-#: macrocmd.c:512
+#: macrocmd.c:502
 msgid ""
 "Remove the definition of the C/C++ preprocessor macro with the given name."
 msgstr ""
 
-#: macrocmd.c:517
+#: macrocmd.c:507
 msgid "List all the macros defined using the `macro define' command."
 msgstr ""
 
@@ -18897,48 +18766,48 @@ msgstr ""
 msgid "Malformed argument list for macro `%s'."
 msgstr ""
 
-#: macroexp.c:1012
+#: macroexp.c:1009
 msgid "__VA_OPT__ cannot appear inside __VA_OPT__"
 msgstr ""
 
-#: macroexp.c:1021
+#: macroexp.c:1018
 msgid "__VA_OPT__ must be followed by an open parenthesis"
 msgstr ""
 
-#: macroexp.c:1042
+#: macroexp.c:1039
 msgid "__VA_OPT__ is only valid in a variadic macro"
 msgstr ""
 
-#: macroexp.c:1063
+#: macroexp.c:1060
 msgid "Stringification operator requires an argument."
 msgstr ""
 
-#: macroexp.c:1068
+#: macroexp.c:1065
 msgid "Argument to stringification operator must name a macro parameter."
 msgstr ""
 
-#: macroexp.c:1082
+#: macroexp.c:1079
 msgid "Stray splicing operator"
 msgstr ""
 
-#: macroexp.c:1114
+#: macroexp.c:1111
 msgid "Splicing operator at end of macro"
 msgstr ""
 
-#: macroexp.c:1208
+#: macroexp.c:1205
 msgid "Unterminated __VA_OPT__"
 msgstr ""
 
-#: macroexp.c:1300
+#: macroexp.c:1296
 #, possible-c-format
 msgid "Wrong number of arguments to macro `%s' (expected %d, got %d)."
 msgstr ""
 
-#: macroexp.c:1331
+#: macroexp.c:1327
 msgid "bad macro definition kind"
 msgstr ""
 
-#: macroexp.c:1450
+#: macroexp.c:1438
 msgid "Expand-once not implemented yet."
 msgstr ""
 
@@ -18969,80 +18838,80 @@ msgstr ""
 msgid "no definition for macro `%s' in scope to #undef at %s:%d"
 msgstr ""
 
-#: main.c:127 source.c:569
+#: main.c:128
 #, possible-c-format
-msgid "%s is not a directory."
+msgid "%ps is not a directory."
 msgstr ""
 
-#: main.c:433
+#: main.c:490
 #, possible-c-format
 msgid "%s: '--readnow' and '--readnever' cannot be specified simultaneously"
 msgstr ""
 
-#: main.c:540
+#: main.c:597
 msgid "fatal error: libbfd ABI mismatch"
 msgstr ""
 
-#: main.c:557
+#: main.c:614
 msgid "error finding working directory"
 msgstr ""
 
-#: main.c:732
+#: main.c:784
 #, possible-c-format
 msgid "%s: TUI mode is not supported"
 msgstr ""
 
-#: main.c:782
+#: main.c:834
 #, possible-c-format
 msgid "%s: empty path for `--data-directory'"
 msgstr ""
 
-#: main.c:791
+#: main.c:843
 #, possible-c-format
 msgid "%s: unable to load tclcommand file \"%s\""
 msgstr ""
 
-#: main.c:826
+#: main.c:878
 #, possible-c-format
 msgid "could not set baud rate to `%s'."
 msgstr ""
 
-#: main.c:839
+#: main.c:891
 #, possible-c-format
 msgid "could not set timeout limit to `%s'."
 msgstr ""
 
-#: main.c:861
+#: main.c:913
 #, possible-c-format
 msgid "Use `%s --help' for a complete list of options."
 msgstr ""
 
-#: main.c:892
+#: main.c:944
 #, possible-c-format
 msgid "%s: `--args' specified but no program specified"
 msgstr ""
 
-#: main.c:927
+#: main.c:979
 #, possible-c-format
 msgid "Excess command line arguments ignored. (%s%s)\n"
 msgstr ""
 
-#: main.c:1009
+#: main.c:1060
 msgid ""
 "\n"
 "warning: "
 msgstr ""
 
-#: main.c:1086
+#: main.c:1137
 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:1126
+#: main.c:1177
 msgid "warning: "
 msgstr ""
 
-#: main.c:1137
+#: main.c:1188
 #, possible-c-format
 msgid "auto-load: Loading .gdbinit file \"%s\".\n"
 msgstr ""
@@ -19050,7 +18919,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:1246
+#: main.c:1297
 msgid ""
 "This is the GNU debugger.  Usage:\n"
 "\n"
@@ -19059,7 +18928,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: main.c:1251
+#: main.c:1302
 msgid ""
 "Selection of debuggee and its files:\n"
 "\n"
@@ -19076,7 +18945,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: main.c:1264
+#: main.c:1315
 msgid ""
 "Initial commands and command files:\n"
 "\n"
@@ -19094,7 +18963,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: main.c:1278
+#: main.c:1329
 msgid ""
 "Output and user interface control:\n"
 "\n"
@@ -19107,11 +18976,11 @@ msgid ""
 "  --nw               Do not use the GUI interface.\n"
 msgstr ""
 
-#: main.c:1288
+#: main.c:1339
 msgid "  --tui              Use a terminal user interface.\n"
 msgstr ""
 
-#: main.c:1292
+#: main.c:1343
 msgid ""
 "  --dbx              DBX compatibility mode.\n"
 "  -q, --quiet, --silent\n"
@@ -19119,7 +18988,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: main.c:1297
+#: main.c:1348
 msgid ""
 "Operating modes:\n"
 "\n"
@@ -19143,206 +19012,196 @@ msgid ""
 "                     Set GDB's data-directory to DIR.\n"
 msgstr ""
 
-#: main.c:1314
+#: main.c:1365
 msgid ""
 "\n"
 "At startup, GDB reads the following init files and executes their commands:\n"
 msgstr ""
 
-#: main.c:1326
+#: main.c:1377
 #, possible-c-format
 msgid "   * system-wide init files: %s\n"
 msgstr ""
 
-#: main.c:1331
+#: main.c:1382
 #, possible-c-format
 msgid "   * user-specific init file: %s\n"
 msgstr ""
 
-#: main.c:1335
+#: main.c:1386
 #, possible-c-format
 msgid "   * local init file (see also 'set auto-load local-gdbinit'): ./%s\n"
 msgstr ""
 
-#: main.c:1338
+#: main.c:1389
 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:1343
+#: main.c:1394
 #, possible-c-format
-msgid "Report bugs to \"%s\".\n"
+msgid ""
+"\n"
+"Report bugs to %s.\n"
 msgstr ""
 
-#: maint.c:60
+#: main.c:1398
 msgid ""
-"\"maintenance\" must be followed by the name of a maintenance command.\n"
+"\n"
+"You can ask GDB-related questions on the GDB users mailing list\n"
+"(gdb@sourceware.org) or on GDB's IRC channel (#gdb on Freenode).\n"
 msgstr ""
 
-#: maint.c:69
+#: maint.c:59
 msgid "Should GDB dump core? "
 msgstr ""
 
-#: maint.c:121
+#: maint.c:111
 msgid "This command has been moved to \"demangle\".\n"
 msgstr ""
 
-#: maint.c:128
+#: maint.c:118
 msgid "\"maintenance time\" takes a numeric argument.\n"
 msgstr ""
 
-#: maint.c:149
-msgid "\"maintenance info\" must be followed by the name of an info command.\n"
-msgstr ""
-
-#: maint.c:162
-msgid ""
-"\"maintenance check\" must be followed by the name of a check command.\n"
-msgstr ""
-
-#: maint.c:446
+#: maint.c:387
 msgid "Exec file:\n"
 msgstr ""
 
-#: maint.c:464
+#: maint.c:405
 #, possible-c-format
 msgid "  Object file: %s\n"
 msgstr ""
 
-#: maint.c:481
+#: maint.c:420
 msgid "Core file:\n"
 msgstr ""
 
-#: maint.c:509 regcache-dump.c:231
+#: maint.c:452 regcache-dump.c:231
 msgid "maintenance print architecture"
 msgstr ""
 
-#: maint.c:521
-msgid ""
-"\"maintenance print\" must be followed by the name of a print command.\n"
-msgstr ""
-
-#: maint.c:541
+#: maint.c:471
 msgid "requires argument (address or section + address)"
 msgstr ""
 
 #. End of command?
-#: maint.c:551
+#: maint.c:481
 msgid "Need to specify section name and address"
 msgstr ""
 
-#: maint.c:563
+#: maint.c:493
 #, possible-c-format
 msgid "Unknown section %s."
 msgstr ""
 
-#: maint.c:593
+#: maint.c:523
 #, possible-c-format
 msgid "%s + %s in section %s of %s\n"
 msgstr ""
 
-#: maint.c:597
+#: maint.c:527
 #, possible-c-format
 msgid "%s + %s in section %s\n"
 msgstr ""
 
-#: maint.c:601
+#: maint.c:531
 #, possible-c-format
 msgid "%s + %s\n"
 msgstr ""
 
-#: maint.c:604
+#: maint.c:534
 #, possible-c-format
 msgid "no symbol at %s:%s\n"
 msgstr ""
 
-#: maint.c:607
+#: maint.c:537
 #, possible-c-format
 msgid "no symbol at %s\n"
 msgstr ""
 
-#: maint.c:622
+#: maint.c:552
 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:636
+#: maint.c:566
 msgid ""
 "\"maintenance undeprecate\" takes an argument, \n"
 "the command you want to undeprecate.\n"
 msgstr ""
 
-#: maint.c:667
+#: maint.c:597
 #, possible-c-format
 msgid "Can't find command '%s' to deprecate.\n"
 msgstr ""
 
-#: maint.c:745
-msgid "\"maintenance set\" must be followed by the name of a set command.\n"
-msgstr ""
-
-#: maint.c:782
+#: maint.c:697
 #, possible-c-format
 msgid "Internal profiling is %s.\n"
 msgstr ""
 
-#: maint.c:844
+#: maint.c:759
 msgid "Profiling support is not available on this system."
 msgstr ""
 
-#: maint.c:964
+#: maint.c:874
 msgid "command finished"
 msgstr ""
 
-#: maint.c:977
+#: maint.c:887
 #, possible-c-format
 msgid "Startup time: %.6f (cpu), %.6f (wall)\n"
 msgstr ""
 
-#: maint.c:978
+#: maint.c:888
 #, possible-c-format
 msgid "Command execution time: %.6f (cpu), %.6f (wall)\n"
 msgstr ""
 
-#: maint.c:992
+#: maint.c:902
 #, possible-c-format
 msgid "Space used: %ld (%s%ld during startup)\n"
 msgstr ""
 
-#: maint.c:993
+#: maint.c:903
 #, possible-c-format
 msgid "Space used: %ld (%s%ld for this command)\n"
 msgstr ""
 
-#: maint.c:1005
+#: maint.c:915
 #, possible-c-format
 msgid "#symtabs: %d (+%d), #compunits: %d (+%d), #blocks: %d (+%d)\n"
 msgstr ""
 
-#: maint.c:1041
+#: maint.c:951
 msgid "command started"
 msgstr ""
 
-#: maint.c:1095
+#: maint.c:1005
 msgid "Bad value for 'mt set per-command no'."
 msgstr ""
 
-#: maint.c:1148
+#: maint.c:1026 maint.c:1040
+msgid "Selftests have been disabled for this build.\n"
+msgstr ""
+
+#: maint.c:1052
 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:1157
+#: maint.c:1061
 msgid "Commands for showing internal info about the program being debugged."
 msgstr ""
 
-#: maint.c:1163
+#: maint.c:1067
 msgid ""
 "List the BFD sections of the exec and core files.\n"
 "Arguments may be any combination of:\n"
@@ -19355,23 +19214,23 @@ msgid ""
 "lists all sections from all object files, including shared libraries."
 msgstr ""
 
-#: maint.c:1176
+#: maint.c:1080
 msgid "Maintenance command for printing GDB internal state."
 msgstr ""
 
-#: maint.c:1180
+#: maint.c:1084
 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:1187
+#: maint.c:1091
 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:1194
+#: maint.c:1098
 msgid ""
 "Like \"with\", but works with \"maintenance set\" variables.\n"
 "Usage: maintenance with SETTING [VALUE] [-- COMMAND]\n"
@@ -19380,81 +19239,81 @@ msgid ""
 "subcommands."
 msgstr ""
 
-#: maint.c:1204
+#: maint.c:1108
 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:1212
+#: maint.c:1116
 msgid ""
 "Give GDB an internal error.\n"
 "Cause GDB to behave as if an internal error was detected."
 msgstr ""
 
-#: maint.c:1218
+#: maint.c:1122
 msgid ""
 "Give GDB an internal warning.\n"
 "Cause GDB to behave as if an internal warning was reported."
 msgstr ""
 
-#: maint.c:1224
+#: maint.c:1128
 msgid ""
 "Give GDB a demangler warning.\n"
 "Cause GDB to behave as if a demangler warning was reported."
 msgstr ""
 
-#: maint.c:1229
+#: maint.c:1133
 msgid "This command has been moved to \"demangle\"."
 msgstr ""
 
-#: maint.c:1234
+#: maint.c:1138
 msgid "Per-command statistics settings."
 msgstr ""
 
 #. allow-unknown
-#: maint.c:1239
+#: maint.c:1143
 msgid "Show per-command statistics settings."
 msgstr ""
 
-#: maint.c:1245
+#: maint.c:1149
 msgid "Set whether to display per-command execution time."
 msgstr ""
 
-#: maint.c:1246
+#: maint.c:1150
 msgid "Show whether to display per-command execution time."
 msgstr ""
 
-#: maint.c:1248
+#: maint.c:1152
 msgid ""
 "If enabled, the execution time for each command will be\n"
 "displayed following the command's output."
 msgstr ""
 
-#: maint.c:1255
+#: maint.c:1159
 msgid "Set whether to display per-command space usage."
 msgstr ""
 
-#: maint.c:1256
+#: maint.c:1160
 msgid "Show whether to display per-command space usage."
 msgstr ""
 
-#: maint.c:1258
+#: maint.c:1162
 msgid ""
 "If enabled, the space usage for each command will be\n"
 "displayed following the command's output."
 msgstr ""
 
-#: maint.c:1265
+#: maint.c:1169
 msgid "Set whether to display per-command symtab statistics."
 msgstr ""
 
-#: maint.c:1266
+#: maint.c:1170
 msgid "Show whether to display per-command symtab statistics."
 msgstr ""
 
-#: maint.c:1268
+#: maint.c:1172
 msgid ""
 "If enabled, the basic symtab statistics for each command will be\n"
 "displayed following the command's output."
@@ -19462,7 +19321,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:1276
+#: maint.c:1180
 msgid ""
 "Set the display of time usage.\n"
 "If nonzero, will cause the execution time for each command to be\n"
@@ -19471,39 +19330,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:1284
+#: maint.c:1188
 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:1290
+#: maint.c:1194
 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:1297
+#: maint.c:1201
 msgid "Print statistics about internal gdb state."
 msgstr ""
 
-#: maint.c:1301
+#: maint.c:1205
 msgid ""
 "Print the internal architecture configuration.\n"
 "Takes an optional file parameter."
 msgstr ""
 
-#: maint.c:1306
+#: maint.c:1210
 msgid "Commands for checking internal gdb state."
 msgstr ""
 
-#: maint.c:1313
+#: maint.c:1217
 msgid "Translate a section name and address to a symbol."
 msgstr ""
 
-#: maint.c:1316
+#: maint.c:1220
 msgid ""
 "Deprecate a command (for testing purposes).\n"
 "Usage: maintenance deprecate COMMANDNAME [\"REPLACEMENT\"]\n"
@@ -19512,7 +19371,7 @@ msgid ""
 "rather you should use the C function deprecate_cmd()."
 msgstr ""
 
-#: maint.c:1323
+#: maint.c:1227
 msgid ""
 "Undeprecate a command (for testing purposes).\n"
 "Usage: maintenance undeprecate COMMANDNAME\n"
@@ -19520,7 +19379,7 @@ msgid ""
 "You probably shouldn't use this."
 msgstr ""
 
-#: maint.c:1330
+#: maint.c:1234
 msgid ""
 "Run gdb's unit tests.\n"
 "Usage: maintenance selftest [FILTER]\n"
@@ -19528,31 +19387,31 @@ msgid ""
 "If a filter is given, only the tests with that value in their name will ran."
 msgstr ""
 
-#: maint.c:1338
+#: maint.c:1242
 msgid "List the registered selftests."
 msgstr ""
 
-#: maint.c:1341
+#: maint.c:1245
 msgid "Set internal profiling."
 msgstr ""
 
-#: maint.c:1342
+#: maint.c:1246
 msgid "Show internal profiling."
 msgstr ""
 
-#: maint.c:1343
+#: maint.c:1247
 msgid "When enabled GDB is profiled."
 msgstr ""
 
-#: maint.c:1352
+#: maint.c:1256
 msgid "Set the number of worker threads GDB can use."
 msgstr ""
 
-#: maint.c:1353
+#: maint.c:1257
 msgid "Show the number of worker threads GDB can use."
 msgstr ""
 
-#: maint.c:1354
+#: maint.c:1258
 msgid ""
 "GDB may use multiple threads to speed up certain CPU-intensive operations,\n"
 "such as demangling symbol names."
@@ -19561,8 +19420,8 @@ msgstr ""
 #: maint-test-options.c:152
 #, possible-c-format
 msgid ""
-"-flag %d -xx1 %d -xx2 %d -bool %d -enum %s -uint %s -zuint-unl %s -string '%"
-"s' -- %s\n"
+"-flag %d -xx1 %d -xx2 %d -bool %d -enum %s -uint %s -zuint-unl %s -string "
+"'%s' -- %s\n"
 msgstr ""
 
 #: maint-test-options.c:180 maint-test-options.c:188 maint-test-options.c:193
@@ -19601,16 +19460,11 @@ msgstr ""
 msgid "A string option."
 msgstr ""
 
-#: maint-test-options.c:420
-msgid ""
-"\"maintenance test-options\" must be followed by the name of a subcommand.\n"
-msgstr ""
-
-#: maint-test-options.c:433
+#: maint-test-options.c:422
 msgid "Generic command for testing the options infrastructure."
 msgstr ""
 
-#: maint-test-options.c:442
+#: maint-test-options.c:431
 msgid ""
 "Command used for testing options processing.\n"
 "Usage: maint test-options require-delimiter [[OPTION]... --] [OPERAND]...\n"
@@ -19622,7 +19476,7 @@ msgid ""
 "to mark the end of option processing."
 msgstr ""
 
-#: maint-test-options.c:454
+#: maint-test-options.c:443
 msgid ""
 "Command used for testing options processing.\n"
 "Usage: maint test-options unknown-is-error [OPTION]... [OPERAND]...\n"
@@ -19631,7 +19485,7 @@ msgid ""
 "%OPTIONS%"
 msgstr ""
 
-#: maint-test-options.c:463
+#: maint-test-options.c:452
 msgid ""
 "Command used for testing options processing.\n"
 "Usage: maint test-options unknown-is-operand [OPTION]... [OPERAND]...\n"
@@ -19640,7 +19494,7 @@ msgid ""
 "%OPTIONS%"
 msgstr ""
 
-#: maint-test-options.c:494
+#: maint-test-options.c:483
 msgid ""
 "Show maintenance test-options completion result.\n"
 "Shows the results of completing\n"
@@ -19649,34 +19503,28 @@ msgid ""
 "\"maint test-options unknown-is-operand\"."
 msgstr ""
 
-#: maint-test-settings.c:35
-msgid ""
-"\"maintenance set test-settings\" must be followed by the name of a set "
-"command.\n"
-msgstr ""
-
-#: maint-test-settings.c:108
+#: maint-test-settings.c:89
 msgid ""
 "Set GDB internal variables used for set/show command infrastructure testing."
 msgstr ""
 
-#: maint-test-settings.c:116
+#: maint-test-settings.c:97
 msgid ""
 "Show GDB internal variables used for set/show command infrastructure testing."
 msgstr ""
 
-#: maint-test-settings.c:124 maint-test-settings.c:125
-#: maint-test-settings.c:134 maint-test-settings.c:135
-#: maint-test-settings.c:144 maint-test-settings.c:145
-#: maint-test-settings.c:154 maint-test-settings.c:155
-#: maint-test-settings.c:164 maint-test-settings.c:165
-#: maint-test-settings.c:175 maint-test-settings.c:176
-#: maint-test-settings.c:186 maint-test-settings.c:187
-#: maint-test-settings.c:196 maint-test-settings.c:197
-#: maint-test-settings.c:206 maint-test-settings.c:207
-#: maint-test-settings.c:216 maint-test-settings.c:217
-#: maint-test-settings.c:227 maint-test-settings.c:228
-#: maint-test-settings.c:238 maint-test-settings.c:239
+#: maint-test-settings.c:105 maint-test-settings.c:106
+#: maint-test-settings.c:115 maint-test-settings.c:116
+#: maint-test-settings.c:125 maint-test-settings.c:126
+#: maint-test-settings.c:135 maint-test-settings.c:136
+#: maint-test-settings.c:145 maint-test-settings.c:146
+#: maint-test-settings.c:156 maint-test-settings.c:157
+#: maint-test-settings.c:167 maint-test-settings.c:168
+#: maint-test-settings.c:177 maint-test-settings.c:178
+#: maint-test-settings.c:187 maint-test-settings.c:188
+#: maint-test-settings.c:197 maint-test-settings.c:198
+#: maint-test-settings.c:208 maint-test-settings.c:209
+#: maint-test-settings.c:219 maint-test-settings.c:220
 msgid "command used for internal testing."
 msgstr ""
 
@@ -19710,149 +19558,149 @@ msgstr ""
 msgid "unexpected type code for %s"
 msgstr ""
 
-#: mdebugread.c:377
+#: mdebugread.c:368
 #, possible-c-format
 msgid ""
 "\n"
 "%s not compiled with -g, debugging support is limited.\n"
 msgstr ""
 
-#: mdebugread.c:380
+#: mdebugread.c:371
 msgid "You should compile with -g2 or -g3 for best debugging support.\n"
 msgstr ""
 
-#: mdebugread.c:523 stabsread.c:184
+#: mdebugread.c:514 stabsread.c:184
 #, possible-c-format
 msgid "bad register number %d (max %d) in symbol %s"
 msgstr ""
 
-#: mdebugread.c:743 mdebugread.c:1353
+#: mdebugread.c:734 mdebugread.c:1344
 #, possible-c-format
 msgid "unknown symbol type 0x%x"
 msgstr ""
 
-#: mdebugread.c:960
+#: mdebugread.c:951
 #, possible-c-format
 msgid "declaration block contains unhandled symbol type %d"
 msgstr ""
 
-#: mdebugread.c:1238
+#: mdebugread.c:1229
 #, possible-c-format
 msgid "stEnd with storage class %d not handled"
 msgstr ""
 
-#: mdebugread.c:1595
+#: mdebugread.c:1584
 #, possible-c-format
 msgid "can't handle TIR fBitfield for %s"
 msgstr ""
 
-#: mdebugread.c:1624
+#: mdebugread.c:1613
 #, possible-c-format
 msgid "unable to cross ref btIndirect for %s"
 msgstr ""
 
-#: mdebugread.c:1739
+#: mdebugread.c:1728
 #, possible-c-format
 msgid "unable to cross ref btTypedef for %s"
 msgstr ""
 
-#: mdebugread.c:1785
+#: mdebugread.c:1774
 #, possible-c-format
 msgid "illegal TIR continued for %s"
 msgstr ""
 
-#: mdebugread.c:1847
+#: mdebugread.c:1836
 #, possible-c-format
 msgid "illegal array index type for %s, assuming int"
 msgstr ""
 
-#: mdebugread.c:1894
+#: mdebugread.c:1883
 #, 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:1926
+#: mdebugread.c:1915
 #, possible-c-format
 msgid "can't handle PDR for static proc at 0x%lx"
 msgstr ""
 
-#: mdebugread.c:1989
+#: mdebugread.c:1978
 #, possible-c-format
 msgid "PDR for %s, but no symbol"
 msgstr ""
 
-#: mdebugread.c:2114
+#: mdebugread.c:2099
 #, possible-c-format
 msgid "Warning: %s `%s' is undefined (in %s)\n"
 msgstr ""
 
-#: mdebugread.c:2212
+#: mdebugread.c:2197
 #, possible-c-format
 msgid "guessed size of linetable for %s incorrectly"
 msgstr ""
 
-#: mdebugread.c:2466
+#: mdebugread.c:2451
 #, possible-c-format
 msgid "bad ifd for external symbol: %d (max %ld)"
 msgstr ""
 
-#: mdebugread.c:2472
+#: mdebugread.c:2457
 #, possible-c-format
 msgid "bad iss for external symbol: %ld (max %ld)"
 msgstr ""
 
 #. This should not happen either... FIXME.
-#: mdebugread.c:3435
+#: mdebugread.c:3415
 #, possible-c-format
 msgid "bad proc end in aux found from symbol %s"
 msgstr ""
 
 #. This happens with the Ultrix kernel.
-#: mdebugread.c:3547
+#: mdebugread.c:3527
 #, 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:3568
+#: mdebugread.c:3548
 #, possible-c-format
 msgid "unknown local symbol %s"
 msgstr ""
 
-#: mdebugread.c:3570
+#: mdebugread.c:3550
 #, possible-c-format
 msgid "with type %d"
 msgstr ""
 
-#: mdebugread.c:3731
+#: mdebugread.c:3710
 #, possible-c-format
 msgid "bad file number %ld"
 msgstr ""
 
-#: mdebugread.c:4042
+#: mdebugread.c:3999
 #, possible-c-format
 msgid "unknown stabs symbol %s"
 msgstr ""
 
-#: mdebugread.c:4225
+#: mdebugread.c:4182
 #, possible-c-format
 msgid "File %s contains %d unresolved references:"
 msgstr ""
 
-#: mdebugread.c:4401
+#: mdebugread.c:4358
 #, possible-c-format
 msgid "illegal tq0 in forward typedef for %s"
 msgstr ""
 
-#: mdebugread.c:4437
+#: mdebugread.c:4394
 #, possible-c-format
 msgid "illegal bt %d in forward typedef for %s"
 msgstr ""
 
-#: mdebugread.c:4804
+#: mdebugread.c:4761
 #, possible-c-format
 msgid "Error reading ECOFF debugging information: %s"
 msgstr ""
@@ -19929,7 +19777,7 @@ msgstr ""
 msgid "Delete all memory regions? "
 msgstr ""
 
-#: memattr.c:600
+#: memattr.c:596
 msgid ""
 "Define attributes for memory region or reset memory region handling to "
 "target-based.\n"
@@ -19940,7 +19788,7 @@ msgid ""
 "      CACHE may be cache or nocache"
 msgstr ""
 
-#: memattr.c:609
+#: memattr.c:605
 msgid ""
 "Enable memory region.\n"
 "Arguments are the IDs of the memory regions to enable.\n"
@@ -19948,7 +19796,7 @@ msgid ""
 "Do \"info mem\" to see current list of IDs."
 msgstr ""
 
-#: memattr.c:615
+#: memattr.c:611
 msgid ""
 "Disable memory region.\n"
 "Arguments are the IDs of the memory regions to disable.\n"
@@ -19956,7 +19804,7 @@ msgid ""
 "Do \"info mem\" to see current list of IDs."
 msgstr ""
 
-#: memattr.c:621
+#: memattr.c:617
 msgid ""
 "Delete memory region.\n"
 "Arguments are the IDs of the memory regions to delete.\n"
@@ -19964,24 +19812,24 @@ msgid ""
 "Do \"info mem\" to see current list of IDs."
 msgstr ""
 
-#: memattr.c:628
+#: memattr.c:624
 msgid "Memory region attributes."
 msgstr ""
 
 #. allow-unknown
-#: memattr.c:630 memattr.c:634
+#: memattr.c:626 memattr.c:630
 msgid "Memory regions settings."
 msgstr ""
 
-#: memattr.c:640
+#: memattr.c:636
 msgid "Set handling of unknown memory regions."
 msgstr ""
 
-#: memattr.c:641
+#: memattr.c:637
 msgid "Show handling of unknown memory regions."
 msgstr ""
 
-#: memattr.c:642
+#: memattr.c:638
 msgid ""
 "If on, and some memory map is defined, debugger will emit errors on\n"
 "accesses to memory not defined in the memory map. If off, accesses to all\n"
@@ -20029,49 +19877,6 @@ msgid ""
 "%s is %s-endian."
 msgstr ""
 
-#: mi/mi-getopt.c:37
-msgid "mi_getopt_long: oind out of bounds"
-msgstr ""
-
-#: mi/mi-getopt.c:63
-#, possible-c-format
-msgid "%s: Option %s requires an argument"
-msgstr ""
-
-#: mi/mi-getopt.c:77
-#, possible-c-format
-msgid "%s: Unknown option ``%s''"
-msgstr ""
-
-#: mi/mi-cmd-info.c:43
-msgid "Usage: -info-ada-exceptions [REGEXP]"
-msgstr ""
-
-#: mi/mi-cmd-info.c:75
-msgid "Usage: -info-gdb-mi-command MI_COMMAND_NAME"
-msgstr ""
-
-#: mi/mi-cmd-info.c:103
-msgid "Usage: -info-os [INFOTYPE]"
-msgstr ""
-
-#: mi/mi-cmd-env.c:66
-msgid "-environment-pwd: No arguments allowed"
-msgstr ""
-
-#: mi/mi-cmd-env.c:78
-#, possible-c-format
-msgid "-environment-pwd: error finding name of working directory: %s"
-msgstr ""
-
-#: mi/mi-cmd-env.c:90
-msgid "-environment-cd: Usage DIRECTORY"
-msgstr ""
-
-#: mi/mi-cmd-env.c:258
-msgid "-inferior-tty-show: Usage: No args"
-msgstr ""
-
 #: mi/mi-cmd-break.c:270
 #, possible-c-format
 msgid "-%s-insert: Missing <location>"
@@ -20139,47 +19944,89 @@ msgstr ""
 msgid "breakpoint %d not found."
 msgstr ""
 
-#: mi/mi-parse.c:278
+#: mi/mi-cmd-catch.c:79 mi/mi-cmd-catch.c:147 mi/mi-cmd-catch.c:215
+#: mi/mi-main.c:455 skip.c:296
 #, possible-c-format
-msgid "Undefined MI command: %s"
+msgid "Invalid argument: %s"
 msgstr ""
 
-#: mi/mi-parse.c:317
-msgid "Duplicate '--thread-group' option"
+#: mi/mi-cmd-catch.c:152
+msgid "\"-e\" and \"-u\" are mutually exclusive"
 msgstr ""
 
-#: mi/mi-parse.c:320
-msgid "Invalid thread group id"
+#: mi/mi-cmd-catch.c:266
+msgid "-catch-load/unload: Missing <library name>"
 msgstr ""
 
-#: mi/mi-parse.c:331
-msgid "Duplicate '--thread' option"
+#: mi/mi-cmd-catch.c:268
+msgid "-catch-load/unload: Garbage following the <library name>"
 msgstr ""
 
-#: mi/mi-parse.c:342
-msgid "Duplicate '--frame' option"
+#: mi/mi-cmd-disas.c:150
+msgid ""
+"-data-disassemble: Usage: ( [-f filename -l linenum [-n howmany]] | [-s "
+"startaddr -e endaddr] | [-a addr] ) [--] mode."
 msgstr ""
 
-#: mi/mi-parse.c:356
-#, possible-c-format
-msgid "Invalid --language argument: %s"
+#: mi/mi-cmd-disas.c:155
+msgid "-data-disassemble: Mode argument must be in the range 0-5."
 msgstr ""
 
-#: mi/mi-parse.c:362
-#, possible-c-format
-msgid "Invalid value for the '%s' option"
+#: mi/mi-cmd-disas.c:190
+msgid "-data-disassemble: Invalid filename."
 msgstr ""
 
-#: mi/mi-parse.c:372
-#, possible-c-format
-msgid "Problem parsing arguments: %s %s"
+#: mi/mi-cmd-disas.c:192
+msgid "-data-disassemble: Invalid line number"
 msgstr ""
 
-#: mi/mi-parse.c:399
+#: mi/mi-cmd-disas.c:194 mi/mi-cmd-disas.c:200
+msgid "-data-disassemble: No function contains specified address"
+msgstr ""
+
+#: mi/mi-cmd-env.c:66
+msgid "-environment-pwd: No arguments allowed"
+msgstr ""
+
+#: mi/mi-cmd-env.c:78
 #, possible-c-format
-msgid ""
-"Unknown value for PRINT_VALUES: must be: 0 or \"%s\", 1 or \"%s\", 2 or \"%s"
-"\""
+msgid "-environment-pwd: error finding name of working directory: %s"
+msgstr ""
+
+#: mi/mi-cmd-env.c:90
+msgid "-environment-cd: Usage DIRECTORY"
+msgstr ""
+
+#: mi/mi-cmd-env.c:256
+msgid "-inferior-tty-show: Usage: No args"
+msgstr ""
+
+#: mi/mi-cmd-file.c:43
+msgid "-file-list-exec-source-file: Usage: No args"
+msgstr ""
+
+#: mi/mi-cmd-file.c:53
+msgid "-file-list-exec-source-file: No symtab"
+msgstr ""
+
+#: mi/mi-cmd-file.c:89
+msgid "-file-list-exec-source-files: Usage: No args"
+msgstr ""
+
+#: mi/mi-cmd-file.c:134
+msgid "Usage: -file-list-shared-libraries [REGEXP]"
+msgstr ""
+
+#: mi/mi-cmd-info.c:43
+msgid "Usage: -info-ada-exceptions [REGEXP]"
+msgstr ""
+
+#: mi/mi-cmd-info.c:75
+msgid "Usage: -info-gdb-mi-command MI_COMMAND_NAME"
+msgstr ""
+
+#: mi/mi-cmd-info.c:103
+msgid "Usage: -info-os [INFOTYPE]"
 msgstr ""
 
 #: mi/mi-cmd-stack.c:55
@@ -20220,75 +20067,14 @@ msgid ""
 "PRINT_VALUES"
 msgstr ""
 
-#: mi/mi-cmd-stack.c:758
+#: mi/mi-cmd-stack.c:757
 msgid "-stack-select-frame: Usage: FRAME_SPEC"
 msgstr ""
 
-#: mi/mi-cmd-stack.c:767
+#: mi/mi-cmd-stack.c:766
 msgid "-stack-info-frame: No arguments allowed"
 msgstr ""
 
-#: mi/mi-cmd-catch.c:79 mi/mi-cmd-catch.c:147 mi/mi-cmd-catch.c:215
-#: mi/mi-main.c:463 skip.c:299
-#, possible-c-format
-msgid "Invalid argument: %s"
-msgstr ""
-
-#: mi/mi-cmd-catch.c:152
-msgid "\"-e\" and \"-u\" are mutually exclusive"
-msgstr ""
-
-#: mi/mi-cmd-catch.c:266
-msgid "-catch-load/unload: Missing <library name>"
-msgstr ""
-
-#: mi/mi-cmd-catch.c:268
-msgid "-catch-load/unload: Garbage following the <library name>"
-msgstr ""
-
-#: mi/mi-cmd-disas.c:150
-msgid ""
-"-data-disassemble: Usage: ( [-f filename -l linenum [-n howmany]] | [-s "
-"startaddr -e endaddr] | [-a addr] ) [--] mode."
-msgstr ""
-
-#: mi/mi-cmd-disas.c:155
-msgid "-data-disassemble: Mode argument must be in the range 0-5."
-msgstr ""
-
-#: mi/mi-cmd-disas.c:190
-msgid "-data-disassemble: Invalid filename."
-msgstr ""
-
-#: mi/mi-cmd-disas.c:192
-msgid "-data-disassemble: Invalid line number"
-msgstr ""
-
-#: mi/mi-cmd-disas.c:194 mi/mi-cmd-disas.c:200
-msgid "-data-disassemble: No function contains specified address"
-msgstr ""
-
-#: mi/mi-interp.c:197
-msgid "-interpreter-exec: Usage: -interpreter-exec interp command"
-msgstr ""
-
-#: mi/mi-interp.c:202
-#, possible-c-format
-msgid "-interpreter-exec: could not find interpreter \"%s\""
-msgstr ""
-
-#: mi/mi-symbol-cmds.c:41
-msgid "-symbol-list-lines: Usage: SOURCE_FILENAME"
-msgstr ""
-
-#: mi/mi-symbol-cmds.c:47
-msgid "-symbol-list-lines: Unknown source file name."
-msgstr ""
-
-#: mi/mi-symbol-cmds.c:180
-msgid "invalid value for --max-results argument"
-msgstr ""
-
 #: mi/mi-cmd-target.c:40
 msgid "-target-file-get: Usage: REMOTE_FILE LOCAL_FILE"
 msgstr ""
@@ -20424,6 +20210,29 @@ msgstr ""
 msgid "command `%s' appears to be duplicated"
 msgstr ""
 
+#: mi/mi-getopt.c:37
+msgid "mi_getopt_long: oind out of bounds"
+msgstr ""
+
+#: mi/mi-getopt.c:63
+#, possible-c-format
+msgid "%s: Option %s requires an argument"
+msgstr ""
+
+#: mi/mi-getopt.c:77
+#, possible-c-format
+msgid "%s: Unknown option ``%s''"
+msgstr ""
+
+#: mi/mi-interp.c:210
+msgid "-interpreter-exec: Usage: -interpreter-exec interp command"
+msgstr ""
+
+#: mi/mi-interp.c:215
+#, possible-c-format
+msgid "-interpreter-exec: could not find interpreter \"%s\""
+msgstr ""
+
 #: mi/mi-main.c:128
 #, possible-c-format
 msgid "Whether MI is in asynchronous mode is %s.\n"
@@ -20438,343 +20247,382 @@ msgstr ""
 msgid "Target %s does not support this command."
 msgstr ""
 
-#: mi/mi-main.c:498
+#: mi/mi-main.c:491
 msgid "Usage: -target-detach [pid | thread-group]"
 msgstr ""
 
-#: mi/mi-main.c:513
+#: mi/mi-main.c:506
 #, possible-c-format
 msgid "Invalid syntax of thread-group id '%s'"
 msgstr ""
 
-#: mi/mi-main.c:517
+#: mi/mi-main.c:510
 #, possible-c-format
 msgid "Non-existent thread-group id '%d'"
 msgstr ""
 
-#: mi/mi-main.c:527
+#: mi/mi-main.c:520
 #, possible-c-format
 msgid "Invalid identifier '%s'"
 msgstr ""
 
-#: mi/mi-main.c:534
+#: mi/mi-main.c:527
 msgid "Thread group is empty"
 msgstr ""
 
-#: mi/mi-main.c:552
+#: mi/mi-main.c:545
 msgid "-thread-select: USAGE: threadnum."
 msgstr ""
 
-#: mi/mi-main.c:557
+#: mi/mi-main.c:550
 #, possible-c-format
 msgid "Thread ID %d not known."
 msgstr ""
 
-#: mi/mi-main.c:578
+#: mi/mi-main.c:571
 msgid "-thread-list-ids: No arguments required."
 msgstr ""
 
-#: mi/mi-main.c:607 mi/mi-main.c:2452
+#: mi/mi-main.c:600 mi/mi-main.c:2427
 msgid "Invalid MI command"
 msgstr ""
 
-#: mi/mi-main.c:822
+#: mi/mi-main.c:810
 msgid "only '0' and '1' are valid values for the '--recurse' option"
 msgstr ""
 
-#: mi/mi-main.c:834 mi/mi-main.c:839
+#: mi/mi-main.c:822 mi/mi-main.c:827
 #, possible-c-format
 msgid "invalid syntax of group id '%s'"
 msgstr ""
 
-#: mi/mi-main.c:854
+#: mi/mi-main.c:842
 #, possible-c-format
 msgid "Non-existent thread group id '%d'"
 msgstr ""
 
-#: mi/mi-main.c:914 mi/mi-main.c:986 mi/mi-main.c:1107 mi/mi-main.c:1198
+#: mi/mi-main.c:898 mi/mi-main.c:970 mi/mi-main.c:1091 mi/mi-main.c:1180
 msgid "bad register number"
 msgstr ""
 
-#: mi/mi-main.c:1069
+#: mi/mi-main.c:1053
 msgid ""
 "-data-list-register-values: Usage: -data-list-register-values [--skip-"
 "unavailable] <format> [<regnum1>...<regnumN>]"
 msgstr ""
 
-#: mi/mi-main.c:1168
+#: mi/mi-main.c:1150
 msgid ""
 "-data-write-register-values: Usage: -data-write-register-values <format> "
 "[<regnum1> <value1>...<regnumN> <valueN>]"
 msgstr ""
 
-#: mi/mi-main.c:1172
+#: mi/mi-main.c:1154
 msgid "-data-write-register-values: No registers."
 msgstr ""
 
-#: mi/mi-main.c:1175
+#: mi/mi-main.c:1157
 msgid "-data-write-register-values: No regs and values specified."
 msgstr ""
 
-#: mi/mi-main.c:1178
+#: mi/mi-main.c:1160
 msgid "-data-write-register-values: Regs and vals are not in pairs."
 msgstr ""
 
-#: mi/mi-main.c:1214
+#: mi/mi-main.c:1196
 msgid "-data-evaluate-expression: Usage: -data-evaluate-expression expression"
 msgstr ""
 
-#: mi/mi-main.c:1294
+#: mi/mi-main.c:1276
 msgid ""
 "-data-read-memory: Usage: ADDR WORD-FORMAT WORD-SIZE NR-ROWS NR-COLS "
 "[ASCHAR]."
 msgstr ""
 
-#: mi/mi-main.c:1331
+#: mi/mi-main.c:1313
 msgid "-data-read-memory: invalid number of rows."
 msgstr ""
 
-#: mi/mi-main.c:1336
+#: mi/mi-main.c:1318
 msgid "-data-read-memory: invalid number of columns."
 msgstr ""
 
-#: mi/mi-main.c:1352 mi/mi-main.c:1472
+#: mi/mi-main.c:1334 mi/mi-main.c:1454
 msgid "Unable to read memory."
 msgstr ""
 
-#: mi/mi-main.c:1463
+#: mi/mi-main.c:1445
 msgid "Usage: [ -o OFFSET ] ADDR LENGTH."
 msgstr ""
 
-#: mi/mi-main.c:1548
+#: mi/mi-main.c:1530
 msgid ""
 "-data-write-memory: Usage: [-o COLUMN_OFFSET] ADDR FORMAT WORD-SIZE VALUE."
 msgstr ""
 
-#: mi/mi-main.c:1585
+#: mi/mi-main.c:1567
 msgid "Usage: ADDR DATA [COUNT]."
 msgstr ""
 
-#: mi/mi-main.c:1593
+#: mi/mi-main.c:1575
 #, possible-c-format
 msgid ""
 "Hex-encoded '%s' must represent an integral number of addressable memory "
 "units."
 msgstr ""
 
-#: mi/mi-main.c:1663
+#: mi/mi-main.c:1645
 #, possible-c-format
 msgid "-enable-timings: Usage: %s {yes|no}"
 msgstr ""
 
-#: mi/mi-main.c:1692
+#: mi/mi-main.c:1674
 msgid "-list-features should be passed no arguments"
 msgstr ""
 
-#: mi/mi-main.c:1710
+#: mi/mi-main.c:1692
 msgid "-list-target-features should be passed no arguments"
 msgstr ""
 
-#: mi/mi-main.c:1719
+#: mi/mi-main.c:1701
 msgid "-add-inferior should be passed no arguments"
 msgstr ""
 
-#: mi/mi-main.c:1745
+#: mi/mi-main.c:1715
 msgid "-remove-inferior should be passed a single argument"
 msgstr ""
 
-#: mi/mi-main.c:1748
+#: mi/mi-main.c:1718
 msgid "the thread group id is syntactically invalid"
 msgstr ""
 
-#: mi/mi-main.c:1752
+#: mi/mi-main.c:1722
 msgid "the specified thread group does not exist"
 msgstr ""
 
-#: mi/mi-main.c:1755
+#: mi/mi-main.c:1725
 msgid "cannot remove an active inferior"
 msgstr ""
 
-#: mi/mi-main.c:1764
+#: mi/mi-main.c:1739
 msgid "Cannot remove last inferior"
 msgstr ""
 
-#: mi/mi-main.c:2029
+#: mi/mi-main.c:2004
 msgid "Cannot specify --thread-group together with --all"
 msgstr ""
 
-#: mi/mi-main.c:2032
+#: mi/mi-main.c:2007
 msgid "Cannot specify --thread together with --all"
 msgstr ""
 
-#: mi/mi-main.c:2035
+#: mi/mi-main.c:2010
 msgid "Cannot specify --thread together with --thread-group"
 msgstr ""
 
-#: mi/mi-main.c:2038
+#: mi/mi-main.c:2013
 msgid "Cannot specify --frame without --thread"
 msgstr ""
 
-#: mi/mi-main.c:2046
+#: mi/mi-main.c:2021
 msgid "Invalid thread group for the --thread-group option"
 msgstr ""
 
-#: mi/mi-main.c:2068
+#: mi/mi-main.c:2043
 #, possible-c-format
 msgid "Invalid thread id: %d"
 msgstr ""
 
-#: mi/mi-main.c:2071
+#: mi/mi-main.c:2046
 #, possible-c-format
 msgid "Thread id: %d has terminated"
 msgstr ""
 
-#: mi/mi-main.c:2086
+#: mi/mi-main.c:2061
 #, possible-c-format
 msgid "Invalid frame id: %d"
 msgstr ""
 
-#: mi/mi-main.c:2274
+#: mi/mi-main.c:2249
 msgid "Usage: -trace-define-variable VARIABLE [VALUE]"
 msgstr ""
 
-#: mi/mi-main.c:2278 tracepoint.c:343
+#: mi/mi-main.c:2253 tracepoint.c:343
 msgid "Name of trace variable should start with '$'"
 msgstr ""
 
-#: mi/mi-main.c:2296
+#: mi/mi-main.c:2271
 msgid "-trace-list-variables: no arguments allowed"
 msgstr ""
 
-#: mi/mi-main.c:2307
+#: mi/mi-main.c:2282
 msgid "trace selection mode is required"
 msgstr ""
 
-#: mi/mi-main.c:2322
+#: mi/mi-main.c:2297
 msgid "frame number is required"
 msgstr ""
 
-#: mi/mi-main.c:2328
+#: mi/mi-main.c:2303
 msgid "tracepoint number is required"
 msgstr ""
 
-#: mi/mi-main.c:2334
+#: mi/mi-main.c:2309
 msgid "PC is required"
 msgstr ""
 
-#: mi/mi-main.c:2340 mi/mi-main.c:2347
+#: mi/mi-main.c:2315 mi/mi-main.c:2322
 msgid "Start and end PC are required"
 msgstr ""
 
-#: mi/mi-main.c:2354
+#: mi/mi-main.c:2329
 msgid "Line is required"
 msgstr ""
 
-#: mi/mi-main.c:2362 mi/mi-main.c:2368
+#: mi/mi-main.c:2337 mi/mi-main.c:2343
 msgid "Could not find the specified line"
 msgstr ""
 
-#: mi/mi-main.c:2371
+#: mi/mi-main.c:2346
 #, possible-c-format
 msgid "Invalid mode '%s'"
 msgstr ""
 
-#: mi/mi-main.c:2416
+#: mi/mi-main.c:2391
 msgid "Exactly one argument required (file in which to save trace data)"
 msgstr ""
 
-#: mi/mi-main.c:2568
+#: mi/mi-main.c:2543
 msgid ""
 "Usage: -trace-frame-collected [--var-print-values PRINT_VALUES] [--comp-"
 "print-values PRINT_VALUES] [--registers-format FORMAT][--memory-contents]"
 msgstr ""
 
-#: mi/mi-main.c:2717
+#: mi/mi-main.c:2692
 msgid "Usage: -complete COMMAND"
 msgstr ""
 
-#: mi/mi-main.c:2720
+#: mi/mi-main.c:2695
 msgid "max-completions is zero, completion is disabled."
 msgstr ""
 
-#: mi/mi-main.c:2762
+#: mi/mi-main.c:2738
 msgid "Set whether MI asynchronous mode is enabled."
 msgstr ""
 
-#: mi/mi-main.c:2763
+#: mi/mi-main.c:2739
 msgid "Show whether MI asynchronous mode is enabled."
 msgstr ""
 
-#: mi/mi-main.c:2764
+#: mi/mi-main.c:2740
 msgid "Tells GDB whether MI should be in asynchronous mode."
 msgstr ""
 
-#: mi/mi-cmd-file.c:43
-msgid "-file-list-exec-source-file: Usage: No args"
+#: mi/mi-parse.c:278
+#, possible-c-format
+msgid "Undefined MI command: %s"
 msgstr ""
 
-#: mi/mi-cmd-file.c:53
-msgid "-file-list-exec-source-file: No symtab"
+#: mi/mi-parse.c:317
+msgid "Duplicate '--thread-group' option"
 msgstr ""
 
-#: mi/mi-cmd-file.c:89
-msgid "-file-list-exec-source-files: Usage: No args"
+#: mi/mi-parse.c:320
+msgid "Invalid thread group id"
 msgstr ""
 
-#: mi/mi-cmd-file.c:135
-msgid "Usage: -file-list-shared-libraries [REGEXP]"
+#: mi/mi-parse.c:331
+msgid "Duplicate '--thread' option"
+msgstr ""
+
+#: mi/mi-parse.c:342
+msgid "Duplicate '--frame' option"
+msgstr ""
+
+#: mi/mi-parse.c:356
+#, possible-c-format
+msgid "Invalid --language argument: %s"
+msgstr ""
+
+#: mi/mi-parse.c:362
+#, possible-c-format
+msgid "Invalid value for the '%s' option"
+msgstr ""
+
+#: mi/mi-parse.c:372
+#, possible-c-format
+msgid "Problem parsing arguments: %s %s"
+msgstr ""
+
+#: mi/mi-parse.c:399
+#, possible-c-format
+msgid ""
+"Unknown value for PRINT_VALUES: must be: 0 or \"%s\", 1 or \"%s\", 2 or \"%s"
+"\""
+msgstr ""
+
+#: mi/mi-symbol-cmds.c:41
+msgid "-symbol-list-lines: Usage: SOURCE_FILENAME"
+msgstr ""
+
+#: mi/mi-symbol-cmds.c:47
+msgid "-symbol-list-lines: Unknown source file name."
+msgstr ""
+
+#: mi/mi-symbol-cmds.c:180
+msgid "invalid value for --max-results argument"
 msgstr ""
 
 #: microblaze-tdep.c:548
 msgid "Unsupported return value size requested"
 msgstr ""
 
-#: microblaze-tdep.c:765
+#: microblaze-tdep.c:766
 msgid "Set microblaze debugging."
 msgstr ""
 
-#: microblaze-tdep.c:766
+#: microblaze-tdep.c:767
 msgid "Show microblaze debugging."
 msgstr ""
 
-#: microblaze-tdep.c:767
+#: microblaze-tdep.c:768
 msgid "When non-zero, microblaze specific debugging is enabled."
 msgstr ""
 
-#: minidebug.c:272
+#: minidebug.c:280
 #, possible-c-format
 msgid ".gnu_debugdata for %s"
 msgstr ""
 
-#: minidebug.c:282
+#: minidebug.c:290
 msgid "Cannot parse .gnu_debugdata section; not a BFD object"
 msgstr ""
 
-#: minidebug.c:286
+#: minidebug.c:297
 msgid ""
 "Cannot parse .gnu_debugdata section; LZMA support was disabled at compile "
 "time"
 msgstr ""
 
-#: minsyms.c:939
+#: minsyms.c:953
 #, possible-c-format
 msgid ""
 "GDB cannot resolve STT_GNU_IFUNC symbol at address %s without the ELF "
 "support compiled in."
 msgstr ""
 
-#: minsyms.c:950
+#: minsyms.c:964
 #, possible-c-format
 msgid ""
 "GDB cannot resolve STT_GNU_IFUNC symbol \"%s\" without the ELF support "
 "compiled in."
 msgstr ""
 
-#: minsyms.c:961
+#: minsyms.c:975
 msgid "elf_gnu_ifunc_resolver_stop cannot be reached."
 msgstr ""
 
-#: minsyms.c:970
+#: minsyms.c:984
 msgid "elf_gnu_ifunc_resolver_return_stop cannot be reached."
 msgstr ""
 
@@ -20784,16 +20632,16 @@ msgid "Bogon register number %d."
 msgstr ""
 
 #: mips-linux-nat.c:305 mips-linux-nat.c:381 ppc-fbsd-nat.c:143
-#: ppc-fbsd-nat.c:171 ppc-nbsd-nat.c:109 ppc-nbsd-nat.c:141
+#: ppc-fbsd-nat.c:171 ppc-nbsd-nat.c:113 ppc-nbsd-nat.c:146
 msgid "Couldn't get FP registers"
 msgstr ""
 
-#: mips-linux-nat.c:372 riscv-linux-nat.c:279 riscv-linux-nat.c:303
-#: sh-nbsd-nat.c:92
+#: mips-linux-nat.c:372 riscv-linux-nat.c:294 riscv-linux-nat.c:320
+#: sh-nbsd-nat.c:95
 msgid "Couldn't set registers"
 msgstr ""
 
-#: mips-linux-nat.c:387 ppc-fbsd-nat.c:176 ppc-nbsd-nat.c:147
+#: mips-linux-nat.c:387 ppc-fbsd-nat.c:176 ppc-nbsd-nat.c:152
 msgid "Couldn't set FP registers"
 msgstr ""
 
@@ -20805,15 +20653,15 @@ msgstr ""
 msgid "Couldn't write debug register"
 msgstr ""
 
-#: mips-linux-nat.c:790
+#: mips-linux-nat.c:791
 msgid "Set whether to show variables that mirror the mips debug registers."
 msgstr ""
 
-#: mips-linux-nat.c:791
+#: mips-linux-nat.c:792
 msgid "Show whether to show variables that mirror the mips debug registers."
 msgstr ""
 
-#: mipsread.c:80
+#: mipsread.c:79
 #, possible-c-format
 msgid "Error reading symbol table: %s"
 msgstr ""
@@ -20873,57 +20721,57 @@ msgstr ""
 msgid "mips_read_fp_register_double: bad access to odd-numbered FP register"
 msgstr ""
 
-#: mips-tdep.c:6596 riscv-tdep.c:959
+#: mips-tdep.c:6593 riscv-tdep.c:1062
 msgid "Not a valid register for the current processor type"
 msgstr ""
 
-#: mips-tdep.c:6958 mips-tdep.c:6972 mips-tdep.c:6986
+#: mips-tdep.c:6930 mips-tdep.c:6944 mips-tdep.c:6958
 msgid "set mipsfpu failed"
 msgstr ""
 
-#: mips-tdep.c:7999
+#: mips-tdep.c:7971
 #, possible-c-format
 msgid "unsupported ABI %s."
 msgstr ""
 
-#: mips-tdep.c:8013
+#: mips-tdep.c:7985
 msgid "unrecognized .gcc_compiled_longXX"
 msgstr ""
 
-#: mips-tdep.c:8025
+#: mips-tdep.c:7997
 msgid "unknown ABI string"
 msgstr ""
 
-#: mips-tdep.c:8042
+#: mips-tdep.c:8014
 msgid "unknown compressed ISA string"
 msgstr ""
 
-#: mips-tdep.c:8606 mips-tdep.c:8655
+#: mips-tdep.c:8578 mips-tdep.c:8627
 msgid "unknown ABI in switch"
 msgstr ""
 
-#: mips-tdep.c:8893
+#: mips-tdep.c:8865
 #, possible-c-format
 msgid "The compressed ISA encoding used is %s.\n"
 msgstr ""
 
-#: mips-tdep.c:8982
+#: mips-tdep.c:8955
 msgid "mips_abi_strings out of sync"
 msgstr ""
 
-#: mips-tdep.c:8996 mips-tdep.c:9000
+#: mips-tdep.c:8969 mips-tdep.c:8973
 msgid "Various MIPS specific commands."
 msgstr ""
 
-#: mips-tdep.c:9005
+#: mips-tdep.c:8978
 msgid "Set the MIPS ABI used by this program."
 msgstr ""
 
-#: mips-tdep.c:9006
+#: mips-tdep.c:8979
 msgid "Show the MIPS ABI used by this program."
 msgstr ""
 
-#: mips-tdep.c:9007
+#: mips-tdep.c:8980
 msgid ""
 "This option can be set to one of:\n"
 "  auto  - the default ABI associated with the current binary\n"
@@ -20935,15 +20783,15 @@ msgid ""
 "  eabi64"
 msgstr ""
 
-#: mips-tdep.c:9025
+#: mips-tdep.c:8998
 msgid "Set the compressed ISA encoding used by MIPS code."
 msgstr ""
 
-#: mips-tdep.c:9026
+#: mips-tdep.c:8999
 msgid "Show the compressed ISA encoding used by MIPS code."
 msgstr ""
 
-#: mips-tdep.c:9027
+#: mips-tdep.c:9000
 msgid ""
 "Select the compressed ISA encoding used in functions that have no symbol\n"
 "information available.  The encoding can be set to either of:\n"
@@ -20952,70 +20800,70 @@ msgid ""
 "and is updated automatically from ELF file flags if available."
 msgstr ""
 
-#: mips-tdep.c:9041
+#: mips-tdep.c:9014
 msgid "Set use of MIPS floating-point coprocessor."
 msgstr ""
 
-#: mips-tdep.c:9044
+#: mips-tdep.c:9017
 msgid "Select single-precision MIPS floating-point coprocessor."
 msgstr ""
 
-#: mips-tdep.c:9047
+#: mips-tdep.c:9020
 msgid "Select double-precision MIPS floating-point coprocessor."
 msgstr ""
 
-#: mips-tdep.c:9053
+#: mips-tdep.c:9026
 msgid "Select no MIPS floating-point coprocessor."
 msgstr ""
 
-#: mips-tdep.c:9058
+#: mips-tdep.c:9031
 msgid "Select MIPS floating-point coprocessor automatically."
 msgstr ""
 
-#: mips-tdep.c:9061
+#: mips-tdep.c:9034
 msgid "Show current use of MIPS floating-point coprocessor target."
 msgstr ""
 
-#: mips-tdep.c:9082
+#: mips-tdep.c:9055
 msgid "Set zeroing of upper 32 bits of 64-bit addresses."
 msgstr ""
 
-#: mips-tdep.c:9083
+#: mips-tdep.c:9056
 msgid "Show zeroing of upper 32 bits of 64-bit addresses."
 msgstr ""
 
-#: mips-tdep.c:9084
+#: mips-tdep.c:9057
 msgid ""
 "Use \"on\" to enable the masking, \"off\" to disable it and \"auto\" to\n"
 "allow GDB to determine the correct value."
 msgstr ""
 
-#: mips-tdep.c:9093
+#: mips-tdep.c:9066
 msgid ""
 "Set compatibility with 64-bit MIPS target that transfers 32-bit quantities."
 msgstr ""
 
-#: mips-tdep.c:9095
+#: mips-tdep.c:9068
 msgid ""
 "Show compatibility with 64-bit MIPS target that transfers 32-bit quantities."
 msgstr ""
 
-#: mips-tdep.c:9097
+#: mips-tdep.c:9070
 msgid ""
 "Use \"on\" to enable backward compatibility with older MIPS 64 GDB+target\n"
 "that would transfer 32 bits for some registers (e.g. SR, FSR) and\n"
 "64 bits for others.  Use \"off\" to disable compatibility mode"
 msgstr ""
 
-#: mips-tdep.c:9109
+#: mips-tdep.c:9082
 msgid "Set mips debugging."
 msgstr ""
 
-#: mips-tdep.c:9110
+#: mips-tdep.c:9083
 msgid "Show mips debugging."
 msgstr ""
 
-#: mips-tdep.c:9111
+#: mips-tdep.c:9084
 msgid "When non-zero, mips specific debugging is enabled."
 msgstr ""
 
@@ -21062,8 +20910,8 @@ msgstr ""
 #: nat/aarch64-linux-hw-point.c:786
 #, possible-c-format
 msgid ""
-"Unexpected number of hardware watchpoint registers reported by ptrace, got %"
-"d, expected %d."
+"Unexpected number of hardware watchpoint registers reported by ptrace, got "
+"%d, expected %d."
 msgstr ""
 
 #: nat/aarch64-linux-hw-point.c:794
@@ -21073,14 +20921,143 @@ msgstr ""
 #: nat/aarch64-linux-hw-point.c:808
 #, possible-c-format
 msgid ""
-"Unexpected number of hardware breakpoint registers reported by ptrace, got %"
-"d, expected %d."
+"Unexpected number of hardware breakpoint registers reported by ptrace, got "
+"%d, expected %d."
 msgstr ""
 
 #: nat/aarch64-linux-hw-point.c:816
 msgid "Unable to determine the number of hardware breakpoints available."
 msgstr ""
 
+#: nat/aarch64-sve-linux-ptrace.c:55
+msgid "Invalid SVE state from kernel; SVE disabled."
+msgstr ""
+
+#: nat/aarch64-sve-linux-ptrace.c:128
+msgid "Unable to fetch SVE register header"
+msgstr ""
+
+#: nat/aarch64-sve-linux-ptrace.c:140
+msgid "Unable to fetch SVE registers"
+msgstr ""
+
+#: nat/aarch64-sve-linux-ptrace.c:160 nat/aarch64-sve-linux-ptrace.c:231
+msgid "Invalid SVE header from kernel."
+msgstr ""
+
+#: nat/fork-inferior.c:512
+#, possible-c-format
+msgid "During startup program terminated with signal %s, %s."
+msgstr ""
+
+#: nat/fork-inferior.c:521
+#, possible-c-format
+msgid "During startup program exited with code %d."
+msgstr ""
+
+#: nat/fork-inferior.c:524
+msgid "During startup program exited normally."
+msgstr ""
+
+#: nat/linux-btrace.c:339
+msgid "Branch trace may be incomplete."
+msgstr ""
+
+#: nat/linux-btrace.c:436
+#, possible-c-format
+msgid ""
+"You do not have permission to record the process.  Try setting %s to 2 or "
+"less."
+msgstr ""
+
+#: nat/linux-btrace.c:443
+#, possible-c-format
+msgid "Failed to start recording: %s"
+msgstr ""
+
+#: nat/linux-btrace.c:457
+msgid "BTS support has been disabled for the target cpu."
+msgstr ""
+
+#: nat/linux-btrace.c:529 nat/linux-btrace.c:669
+#, possible-c-format
+msgid "Failed to map trace buffer: %s."
+msgstr ""
+
+#: nat/linux-btrace.c:547
+msgid "Failed to determine trace buffer size."
+msgstr ""
+
+#: nat/linux-btrace.c:578
+#, possible-c-format
+msgid "Failed to read the PT event type from %s."
+msgstr ""
+
+#: nat/linux-btrace.c:619
+#, possible-c-format
+msgid "Failed to map trace user page: %s."
+msgstr ""
+
+#: nat/linux-btrace.c:700
+msgid "Bad branch trace format."
+msgstr ""
+
+#: nat/linux-btrace.c:898
+msgid "Unknown btrace read type."
+msgstr ""
+
+#: nat/linux-btrace.c:929
+msgid "Unkown branch trace format."
+msgstr ""
+
+#: nat/linux-namespaces.c:740
+msgid "mount namespace helper vanished?"
+msgstr ""
+
+#: nat/linux-namespaces.c:743
+#, possible-c-format
+msgid "unhandled error %d"
+msgstr ""
+
+#: nat/linux-namespaces.c:748
+#, possible-c-format
+msgid "mount namespace helper exited with status %d"
+msgstr ""
+
+#: nat/linux-namespaces.c:751
+#, possible-c-format
+msgid "mount namespace helper killed by signal %d"
+msgstr ""
+
+#: nat/linux-namespaces.c:755
+#, possible-c-format
+msgid "unhandled status %d"
+msgstr ""
+
+#: nat/linux-namespaces.c:759
+#, possible-c-format
+msgid "unknown pid %d"
+msgstr ""
+
+#: nat/linux-personality.c:49
+#, possible-c-format
+msgid "Error disabling address space randomization: %s"
+msgstr ""
+
+#: nat/linux-personality.c:65
+#, possible-c-format
+msgid "Error restoring address space randomization: %s"
+msgstr ""
+
+#: nat/linux-procfs.c:290
+#, possible-c-format
+msgid "Could not open /proc/%ld/task."
+msgstr ""
+
+#: nat/linux-procfs.c:375
+msgid "/proc is not accessible."
+msgstr ""
+
 #: nat/linux-ptrace.c:44
 #, possible-c-format
 msgid "process %d is already traced by process %d"
@@ -21186,39 +21163,6 @@ msgid ""
 "linux_test_for_tracefork: unexpected result from waitpid (%d, status 0x%x)"
 msgstr ""
 
-#: nat/linux-namespaces.c:740
-msgid "mount namespace helper vanished?"
-msgstr ""
-
-#: nat/linux-namespaces.c:743
-#, possible-c-format
-msgid "unhandled error %d"
-msgstr ""
-
-#: nat/linux-namespaces.c:748
-#, possible-c-format
-msgid "mount namespace helper exited with status %d"
-msgstr ""
-
-#: nat/linux-namespaces.c:751
-#, possible-c-format
-msgid "mount namespace helper killed by signal %d"
-msgstr ""
-
-#: nat/linux-namespaces.c:755
-#, possible-c-format
-msgid "unhandled status %d"
-msgstr ""
-
-#: nat/linux-namespaces.c:759
-#, possible-c-format
-msgid "unknown pid %d"
-msgstr ""
-
-#: nat/x86-linux-dregs.c:52
-msgid "Couldn't read debug register"
-msgstr ""
-
 #: nat/mips-linux-watch.c:36 nat/mips-linux-watch.c:54
 #: nat/mips-linux-watch.c:71 nat/mips-linux-watch.c:89
 #: nat/mips-linux-watch.c:112 nat/mips-linux-watch.c:130
@@ -21226,80 +21170,14 @@ msgstr ""
 msgid "Unrecognized watch register style"
 msgstr ""
 
-#: nat/linux-btrace.c:336
-msgid "Branch trace may be incomplete."
-msgstr ""
-
-#: nat/linux-btrace.c:430
-#, possible-c-format
-msgid ""
-"You do not have permission to record the process.  Try setting %s to 2 or "
-"less."
-msgstr ""
-
-#: nat/linux-btrace.c:437
-#, possible-c-format
-msgid "Failed to start recording: %s"
-msgstr ""
-
-#: nat/linux-btrace.c:451
-msgid "BTS support has been disabled for the target cpu."
-msgstr ""
-
-#: nat/linux-btrace.c:523 nat/linux-btrace.c:663
-#, possible-c-format
-msgid "Failed to map trace buffer: %s."
-msgstr ""
-
-#: nat/linux-btrace.c:541
-msgid "Failed to determine trace buffer size."
-msgstr ""
-
-#: nat/linux-btrace.c:572
+#: nat/windows-nat.c:73
 #, possible-c-format
-msgid "Failed to read the PT event type from %s."
-msgstr ""
-
-#: nat/linux-btrace.c:613
-#, possible-c-format
-msgid "Failed to map trace user page: %s."
-msgstr ""
-
-#: nat/linux-btrace.c:694
-msgid "Bad branch trace format."
-msgstr ""
-
-#: nat/linux-btrace.c:697
-msgid "Unknown branch trace format."
-msgstr ""
-
-#: nat/linux-btrace.c:892
-msgid "Unkown btrace read type."
+msgid "SuspendThread (tid=0x%x) failed. (winerr %u)"
 msgstr ""
 
-#: nat/linux-procfs.c:290
+#: nat/windows-nat.c:91
 #, possible-c-format
-msgid "Could not open /proc/%ld/task."
-msgstr ""
-
-#: nat/linux-procfs.c:375
-msgid "/proc is not accessible."
-msgstr ""
-
-#: nat/aarch64-sve-linux-ptrace.c:55
-msgid "Invalid SVE state from kernel; SVE disabled."
-msgstr ""
-
-#: nat/aarch64-sve-linux-ptrace.c:113
-msgid "Unable to fetch SVE register header"
-msgstr ""
-
-#: nat/aarch64-sve-linux-ptrace.c:125
-msgid "Unable to fetch SVE registers"
-msgstr ""
-
-#: nat/aarch64-sve-linux-ptrace.c:145 nat/aarch64-sve-linux-ptrace.c:216
-msgid "Invalid SVE header from kernel."
+msgid "warning: ResumeThread (tid=0x%x) failed. (winerr %u)"
 msgstr ""
 
 #: nat/x86-dregs.c:228
@@ -21321,28 +21199,21 @@ msgstr ""
 msgid "Invalid value %d of operation in x86_handle_nonaligned_watchpoint.\n"
 msgstr ""
 
-#: nat/fork-inferior.c:511
-#, possible-c-format
-msgid "During startup program terminated with signal %s, %s."
-msgstr ""
-
-#: nat/fork-inferior.c:520
-#, possible-c-format
-msgid "During startup program exited with code %d."
+#: nat/x86-linux-dregs.c:52
+msgid "Couldn't read debug register"
 msgstr ""
 
-#: nat/fork-inferior.c:523
-msgid "During startup program exited normally."
+#: nbsd-nat.c:560
+msgid "Child process unexpectedly missing"
 msgstr ""
 
-#: nat/linux-personality.c:49
-#, possible-c-format
-msgid "Error disabling address space randomization: %s"
-msgstr ""
-
-#: nat/linux-personality.c:65
-#, possible-c-format
-msgid "Error restoring address space randomization: %s"
+#. NetBSD doesn't use gdbarch_get_syscall_number since NetBSD
+#. native targets fetch the system call number from the
+#. 'si_sysnum' member of siginfo_t in nbsd_nat_target::wait.
+#. However, system call catching requires this function to be
+#. set.
+#: nbsd-tdep.c:607
+msgid "nbsd_get_sycall_number called"
 msgstr ""
 
 #: nds32-tdep.c:417 nds32-tdep.c:432
@@ -21366,15 +21237,15 @@ msgstr ""
 msgid "Cannot store return value of %d bytes long floating-point."
 msgstr ""
 
-#: nios2-tdep.c:2401
+#: nios2-tdep.c:2402
 msgid "Set Nios II debugging."
 msgstr ""
 
-#: nios2-tdep.c:2402
+#: nios2-tdep.c:2403
 msgid "Show Nios II debugging."
 msgstr ""
 
-#: nios2-tdep.c:2403
+#: nios2-tdep.c:2404
 msgid "When on, Nios II specific debugging is enabled."
 msgstr ""
 
@@ -21414,30 +21285,30 @@ msgstr ""
 msgid "Invalid target CPU."
 msgstr ""
 
-#: nto-procfs.c:703 procfs.c:1879
+#: nto-procfs.c:702 procfs.c:1768
 msgid "Attaching GDB to itself is not a good idea..."
 msgstr ""
 
-#: nto-procfs.c:745
+#: nto-procfs.c:746
 #, possible-c-format
 msgid "Couldn't open proc file %s, error %d (%s)"
 msgstr ""
 
-#: nto-procfs.c:748
+#: nto-procfs.c:749
 msgid "Couldn't stop process"
 msgstr ""
 
-#: nto-procfs.c:769
+#: nto-procfs.c:770
 msgid ""
 "Interrupted while waiting for the program.\n"
 "Give up (and stop debugging it)? "
 msgstr ""
 
-#: nto-procfs.c:1123
+#: nto-procfs.c:1121
 msgid "run error!\n"
 msgstr ""
 
-#: nto-procfs.c:1297
+#: nto-procfs.c:1295
 #, possible-c-format
 msgid "Error spawning %s: %d (%s)"
 msgstr ""
@@ -21466,99 +21337,91 @@ msgstr ""
 msgid "NSString: internal error -- no way to create new NSString"
 msgstr ""
 
-#: objc-lang.c:496
+#: objc-lang.c:509
 #, possible-c-format
 msgid "Can't find selector \"%s\""
 msgstr ""
 
-#: objc-lang.c:543
+#: objc-lang.c:556
 msgid "internal: compare_selectors(1)"
 msgstr ""
 
-#: objc-lang.c:548
+#: objc-lang.c:561
 msgid "internal: compare_selectors(2)"
 msgstr ""
 
-#: objc-lang.c:591 objc-lang.c:745
+#: objc-lang.c:604 objc-lang.c:758
 #, possible-c-format
 msgid "Regexp is too long: %s"
 msgstr ""
 
-#: objc-lang.c:604 objc-lang.c:758 thread.c:1917
+#: objc-lang.c:617 objc-lang.c:771 thread.c:1947
 #, possible-c-format
 msgid "Invalid regexp (%s): %s"
 msgstr ""
 
-#: objc-lang.c:625
+#: objc-lang.c:638
 #, possible-c-format
 msgid "Bad method name '%s'"
 msgstr ""
 
-#: objc-lang.c:643
+#: objc-lang.c:656
 #, possible-c-format
 msgid ""
 "Selectors matching \"%s\":\n"
 "\n"
 msgstr ""
 
-#: objc-lang.c:693
+#: objc-lang.c:706
 #, possible-c-format
 msgid "No selectors matching \"%s\"\n"
 msgstr ""
 
-#: objc-lang.c:712
+#: objc-lang.c:725
 msgid "internal: compare_classes(1)"
 msgstr ""
 
-#: objc-lang.c:785
+#: objc-lang.c:798
 #, possible-c-format
 msgid ""
 "Classes matching \"%s\":\n"
 "\n"
 msgstr ""
 
-#: objc-lang.c:827
+#: objc-lang.c:840
 #, possible-c-format
 msgid "No classes matching \"%s\"\n"
 msgstr ""
 
-#: objc-lang.c:1190
+#: objc-lang.c:1203
 msgid "Unable to locate _NSPrintForDebugger in child process"
 msgstr ""
 
-#: objc-lang.c:1196
+#: objc-lang.c:1209
 msgid "object returns null description"
 msgstr ""
 
-#: objc-lang.c:1207
+#: objc-lang.c:1220
 msgid "<object returns empty description>"
 msgstr ""
 
-#: objc-lang.c:1339
+#: objc-lang.c:1353
 msgid "All Objective-C selectors, or those matching REGEXP."
 msgstr ""
 
-#: objc-lang.c:1341
+#: objc-lang.c:1355
 msgid "All Objective-C classes, or those matching REGEXP."
 msgstr ""
 
-#: objc-lang.c:1343
+#: objc-lang.c:1357
 msgid "Ask an Objective-C object to print itself."
 msgstr ""
 
-#: objfiles.c:425
+#: objfiles.c:401
 msgid "Entry point address is not known."
 msgstr ""
 
-#: objfiles.c:494
-msgid "unlink_objfile: objfile already unlinked"
-msgstr ""
-
-#: objfiles.c:518
-msgid "put_objfile_before: before objfile not in list"
-msgstr ""
-
-#: objfiles.c:1212
+#: objfiles.c:1129
 #, possible-c-format
 msgid ""
 "unexpected overlap between:\n"
@@ -21568,32 +21431,32 @@ msgid ""
 msgstr ""
 
 #. Nothing.
-#: objfiles.h:729
+#: objfiles.h:170
 msgid "sect_index_data not initialized"
 msgstr ""
 
-#: objfiles.h:735
+#: objfiles.h:176
 msgid "sect_index_rodata not initialized"
 msgstr ""
 
-#: objfiles.h:741
+#: objfiles.h:182
 msgid "sect_index_text not initialized"
 msgstr ""
 
-#: observable.c:86
+#: observable.c:87
 #, possible-c-format
 msgid "Observer debugging is %s.\n"
 msgstr ""
 
-#: observable.c:93
+#: observable.c:95
 msgid "Set observer debugging."
 msgstr ""
 
-#: observable.c:94
+#: observable.c:96
 msgid "Show observer debugging."
 msgstr ""
 
-#: observable.c:95
+#: observable.c:97
 msgid "When non-zero, observer debugging is enabled."
 msgstr ""
 
@@ -21603,8 +21466,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:1308 valarith.c:1354
-#: valarith.c:1656 valarith.c:1689 valops.c:865
+#: opencl-lang.c:600 opencl-lang.c:910 valarith.c:1454 valarith.c:1500
+#: valarith.c:1803 valarith.c:1845 valops.c:865
 msgid "Could not determine the vector bounds"
 msgstr ""
 
@@ -21626,20 +21489,20 @@ msgstr ""
 msgid "Vector operations are not supported on scalar types"
 msgstr ""
 
-#: opencl-lang.c:607 opencl-lang.c:918 valarith.c:1364
+#: opencl-lang.c:607 opencl-lang.c:917 valarith.c:1510
 msgid "Cannot perform operation on vectors with different types"
 msgstr ""
 
-#: opencl-lang.c:714 valarith.c:1407
+#: opencl-lang.c:714 valarith.c:1553
 msgid "Argument to operation not a number or boolean."
 msgstr ""
 
 #. Throw an error if arg2 or arg3 aren't vectors.
-#: opencl-lang.c:901
+#: opencl-lang.c:900
 msgid "Cannot perform conditional operation on incompatible types"
 msgstr ""
 
-#: opencl-lang.c:924
+#: opencl-lang.c:923
 msgid "Cannot perform conditional operation on vectors with different sizes"
 msgstr ""
 
@@ -21668,84 +21531,84 @@ msgstr ""
 msgid "end addr %s is less than start addr %s"
 msgstr ""
 
-#: or1k-tdep.c:1282
+#: or1k-tdep.c:1283
 msgid "Set OpenRISC debugging."
 msgstr ""
 
-#: or1k-tdep.c:1283
+#: or1k-tdep.c:1284
 msgid "Show OpenRISC debugging."
 msgstr ""
 
-#: or1k-tdep.c:1284
+#: or1k-tdep.c:1285
 msgid "When on, OpenRISC specific debugging is enabled."
 msgstr ""
 
-#: osabi.c:159
+#: osabi.c:160
 #, possible-c-format
 msgid ""
 "gdbarch_register_osabi: An attempt to register a handler for OS ABI \"%s\" "
 "for architecture %s was made.  The handler will not be registered"
 msgstr ""
 
-#: osabi.c:177
+#: osabi.c:178
 #, possible-c-format
 msgid ""
 "gdbarch_register_osabi: A handler for OS ABI \"%s\" has already been "
 "registered for architecture %s"
 msgstr ""
 
-#: osabi.c:269
+#: osabi.c:270
 #, possible-c-format
 msgid ""
 "gdbarch_lookup_osabi: invalid OS ABI (%d) from sniffer for architecture %s "
 "flavour %d"
 msgstr ""
 
-#: osabi.c:288
+#: osabi.c:289
 #, possible-c-format
 msgid ""
 "gdbarch_lookup_osabi: multiple %sspecific OS ABI match for architecture %s "
 "flavour %d: first match \"%s\", second match \"%s\""
 msgstr ""
 
-#: osabi.c:493
+#: osabi.c:494
 #, possible-c-format
 msgid "GNU ABI tag value %u unrecognized."
 msgstr ""
 
-#: osabi.c:627
+#: osabi.c:628
 #, possible-c-format
 msgid "Invalid OS ABI \"%s\" passed to command handler."
 msgstr ""
 
-#: osabi.c:635
+#: osabi.c:636
 msgid "Updating OS ABI failed."
 msgstr ""
 
-#: osabi.c:644
+#: osabi.c:645
 #, possible-c-format
 msgid "The current OS ABI is \"auto\" (currently \"%s\").\n"
 msgstr ""
 
-#: osabi.c:648
+#: osabi.c:649
 #, possible-c-format
 msgid "The current OS ABI is \"%s\".\n"
 msgstr ""
 
-#: osabi.c:652
+#: osabi.c:653
 #, possible-c-format
 msgid "The default OS ABI is \"%s\".\n"
 msgstr ""
 
-#: osabi.c:662
+#: osabi.c:664
 msgid "_initialize_gdb_osabi: gdb_osabi_names[] is inconsistent"
 msgstr ""
 
-#: osabi.c:672
+#: osabi.c:674
 msgid "Set OS ABI of target."
 msgstr ""
 
-#: osabi.c:673
+#: osabi.c:675
 msgid "Show OS ABI of target."
 msgstr ""
 
@@ -21777,7 +21640,7 @@ msgstr ""
 msgid "Available types of OS data not reported."
 msgstr ""
 
-#: osdata.c:296
+#: osdata.c:297
 msgid "Show OS data ARG."
 msgstr ""
 
@@ -21799,104 +21662,118 @@ msgstr ""
 msgid "expression to compute"
 msgstr ""
 
-#: parse.c:1169
+#: parse.c:1168
 msgid "Junk after end of expression."
 msgstr ""
 
-#: parse.c:1444
+#: parse.c:1436
 msgid "Set expression debugging."
 msgstr ""
 
-#: parse.c:1445
+#: parse.c:1437
 msgid "Show expression debugging."
 msgstr ""
 
-#: parse.c:1446
+#: parse.c:1438
 msgid ""
 "When non-zero, the internal representation of expressions will be printed."
 msgstr ""
 
-#: parse.c:1453
+#: parse.c:1445
 msgid "Set parser debugging."
 msgstr ""
 
-#: parse.c:1454
+#: parse.c:1446
 msgid "Show parser debugging."
 msgstr ""
 
-#: parse.c:1455
+#: parse.c:1447
 msgid "When non-zero, expression parser tracing will be enabled."
 msgstr ""
 
-#: ppc-fbsd-tdep.c:308
+#: ppc-fbsd-tdep.c:310
 msgid "Unable to fetch tcb pointer"
 msgstr ""
 
-#: ppc-linux-nat.c:429 ppc-linux-nat.c:1049 ppc-linux-nat.c:2632
+#: ppc-linux-nat.c:436
+msgid ""
+"Error when detecting the debug register interface. Debug registers will be "
+"unavailable."
+msgstr ""
+
+#: ppc-linux-nat.c:727 ppc-linux-nat.c:1347 ppc-linux-nat.c:1978
 msgid "Unable to fetch VSX registers"
 msgstr ""
 
-#: ppc-linux-nat.c:456 ppc-linux-nat.c:1077 ppc-linux-nat.c:2646
+#: ppc-linux-nat.c:754 ppc-linux-nat.c:1375 ppc-linux-nat.c:1992
 msgid "Unable to fetch AltiVec registers"
 msgstr ""
 
 #. Anything else needs to be reported.
-#: ppc-linux-nat.c:486 ppc-linux-nat.c:2611
+#: ppc-linux-nat.c:784 ppc-linux-nat.c:1957
 msgid "Unable to fetch SPE registers"
 msgstr ""
 
-#: ppc-linux-nat.c:555 ppc-linux-nat.c:579 s390-linux-nat.c:362
+#: ppc-linux-nat.c:853 ppc-linux-nat.c:877 s390-linux-nat.c:362
 #: s390-linux-nat.c:382
 msgid "Couldn't get register set"
 msgstr ""
 
-#: ppc-linux-nat.c:584 s390-linux-nat.c:387
+#: ppc-linux-nat.c:882 s390-linux-nat.c:387
 msgid "Couldn't set register set"
 msgstr ""
 
-#: ppc-linux-nat.c:813
+#: ppc-linux-nat.c:1111
 #, possible-c-format
 msgid "fetch_register: unexpected byte order: %d"
 msgstr ""
 
-#: ppc-linux-nat.c:837 ppc-linux-nat.c:1389
+#: ppc-linux-nat.c:1135 ppc-linux-nat.c:1687
 msgid "Couldn't get general-purpose registers."
 msgstr ""
 
-#: ppc-linux-nat.c:889 ppc-linux-nat.c:1451
+#: ppc-linux-nat.c:1187 ppc-linux-nat.c:1749
 msgid "Couldn't get floating-point registers."
 msgstr ""
 
-#: ppc-linux-nat.c:1057
+#: ppc-linux-nat.c:1355
 msgid "Unable to store VSX registers"
 msgstr ""
 
-#: ppc-linux-nat.c:1085
+#: ppc-linux-nat.c:1383
 msgid "Unable to store AltiVec registers"
 msgstr ""
 
 #. Anything else needs to be reported.
-#: ppc-linux-nat.c:1112
+#: ppc-linux-nat.c:1410
 msgid "Unable to set SPE registers"
 msgstr ""
 
-#: ppc-linux-nat.c:1401
+#: ppc-linux-nat.c:1699
 msgid "Couldn't set general-purpose registers."
 msgstr ""
 
-#: ppc-linux-nat.c:1463
+#: ppc-linux-nat.c:1761
 msgid "Couldn't set floating-point registers."
 msgstr ""
 
-#: ppc-linux-nat.c:1796
-msgid "Unexpected error setting breakpoint or watchpoint"
+#: ppc-linux-nat.c:2872
+msgid "Error deleting hardware breakpoint or watchpoint"
+msgstr ""
+
+#: ppc-linux-nat.c:2899
+msgid "Error setting hardware breakpoint or watchpoint"
 msgstr ""
 
-#: ppc-linux-nat.c:1843
-msgid "Unexpected error deleting breakpoint or watchpoint"
+#: ppc-linux-nat.c:2918
+msgid "Error clearing hardware watchpoint"
 msgstr ""
 
-#: ppc-linux-nat.c:2501
+#: ppc-linux-nat.c:2927
+msgid "Error setting hardware watchpoint"
+msgstr ""
+
+#: ppc-linux-nat.c:3028
 msgid "The given mask covers kernel address space and cannot be used.\n"
 msgstr ""
 
@@ -21919,12 +21796,12 @@ msgstr ""
 msgid "Printing of source filename and line number with <symbol> is %s.\n"
 msgstr ""
 
-#: printcmd.c:399
+#: printcmd.c:396
 #, possible-c-format
 msgid "Undefined output size \"%c\"."
 msgstr ""
 
-#: printcmd.c:503
+#: printcmd.c:499
 #, possible-c-format
 msgid "Undefined output format \"%c\"."
 msgstr ""
@@ -21932,246 +21809,250 @@ msgstr ""
 #. We reach here when line info is not available.  In this case,
 #. we print a message and just exit the loop.  The return value
 #. is calculated after the loop.
-#: printcmd.c:803
+#: printcmd.c:799
 msgid "No line number information available for address "
 msgstr ""
 
 #. The read was unsuccessful, so exit the loop.
-#: printcmd.c:889
+#: printcmd.c:885
 #, possible-c-format
 msgid "Cannot access memory at address %s\n"
 msgstr ""
 
-#: printcmd.c:1040
+#: printcmd.c:1036
 #, possible-c-format
 msgid "Unable to display strings with size '%c', using 'b' instead."
 msgstr ""
 
-#: printcmd.c:1137
+#: printcmd.c:1133
 #, possible-c-format
 msgid "Size letters are meaningless in \"%s\" command."
 msgstr ""
 
-#: printcmd.c:1139
+#: printcmd.c:1135
 #, possible-c-format
 msgid "Item count other than 1 is meaningless in \"%s\" command."
 msgstr ""
 
-#: printcmd.c:1142
+#: printcmd.c:1138
 #, possible-c-format
 msgid "Format letter \"%c\" is meaningless in \"%s\" command."
 msgstr ""
 
-#: printcmd.c:1312
+#: printcmd.c:1308
 msgid "Expression is not an assignment (and might have no effect)"
 msgstr ""
 
-#: printcmd.c:1328
+#: printcmd.c:1324
 msgid "address"
 msgstr ""
 
-#: printcmd.c:1352
+#: printcmd.c:1348
 msgid "mapped"
 msgstr ""
 
-#: printcmd.c:1352
+#: printcmd.c:1348
 msgid "unmapped"
 msgstr ""
 
-#: printcmd.c:1373
+#: printcmd.c:1369
 #, possible-c-format
 msgid "%s in load address range of %s overlay section %s of %s\n"
 msgstr ""
 
-#: printcmd.c:1377
+#: printcmd.c:1373
 #, possible-c-format
 msgid "%s in load address range of section %s of %s\n"
 msgstr ""
 
-#: printcmd.c:1382
+#: printcmd.c:1378
 #, possible-c-format
 msgid "%s in %s overlay section %s of %s\n"
 msgstr ""
 
-#: printcmd.c:1385
+#: printcmd.c:1381
 #, possible-c-format
 msgid "%s in section %s of %s\n"
 msgstr ""
 
-#: printcmd.c:1390
+#: printcmd.c:1386
 #, possible-c-format
 msgid "%s in load address range of %s overlay section %s\n"
 msgstr ""
 
-#: printcmd.c:1395
+#: printcmd.c:1391
 #, possible-c-format
 msgid "%s in load address range of section %s\n"
 msgstr ""
 
-#: printcmd.c:1399
+#: printcmd.c:1395
 #, possible-c-format
 msgid "%s in %s overlay section %s\n"
 msgstr ""
 
-#: printcmd.c:1402
+#: printcmd.c:1398
 #, possible-c-format
 msgid "%s in section %s\n"
 msgstr ""
 
-#: printcmd.c:1407
+#: printcmd.c:1403
 #, possible-c-format
 msgid "No symbol matches %s.\n"
 msgstr ""
 
-#: printcmd.c:1423
+#: printcmd.c:1419
 msgid "Argument required."
 msgstr ""
 
-#: printcmd.c:1531
+#: printcmd.c:1527
 #, possible-c-format
 msgid "an argument in register %s"
 msgstr ""
 
-#: printcmd.c:1534
+#: printcmd.c:1530
 #, possible-c-format
 msgid "a variable in register %s"
 msgstr ""
 
-#: printcmd.c:1539 printcmd.c:1616
+#: printcmd.c:1535 printcmd.c:1612
 msgid "static storage at address "
 msgstr ""
 
-#: printcmd.c:1546 printcmd.c:1585 printcmd.c:1622
+#: printcmd.c:1542 printcmd.c:1581 printcmd.c:1618
 msgid ""
 ",\n"
 " -- loaded at "
 msgstr ""
 
-#: printcmd.c:1549 printcmd.c:1588 printcmd.c:1626
+#: printcmd.c:1545 printcmd.c:1584 printcmd.c:1622
 #, possible-c-format
 msgid " in overlay section %s"
 msgstr ""
 
-#: printcmd.c:1557
+#: printcmd.c:1553
 #, possible-c-format
 msgid "address of an argument in register %s"
 msgstr ""
 
-#: printcmd.c:1562
+#: printcmd.c:1558
 #, possible-c-format
 msgid "an argument at offset %ld"
 msgstr ""
 
-#: printcmd.c:1566
+#: printcmd.c:1562
 #, possible-c-format
 msgid "a local variable at frame offset %ld"
 msgstr ""
 
-#: printcmd.c:1570
+#: printcmd.c:1566
 #, possible-c-format
 msgid "a reference argument at offset %ld"
 msgstr ""
 
-#: printcmd.c:1574
+#: printcmd.c:1570
 msgid "a typedef"
 msgstr ""
 
-#: printcmd.c:1578
+#: printcmd.c:1574
 msgid "a function at address "
 msgstr ""
 
-#: printcmd.c:1608
+#: printcmd.c:1604
 #, possible-c-format
 msgid ""
 "a thread-local variable at offset %s in the thread-local storage for `%s'"
 msgstr ""
 
-#: printcmd.c:1635
+#: printcmd.c:1631
 msgid "optimized out"
 msgstr ""
 
-#: printcmd.c:1639
+#: printcmd.c:1635
 msgid "of unknown (botched) type"
 msgstr ""
 
-#: printcmd.c:1698
+#: printcmd.c:1693
 msgid "starting display address"
 msgstr ""
 
-#: printcmd.c:1853
+#: printcmd.c:1810
 msgid "one or more display numbers"
 msgstr ""
 
-#: printcmd.c:1863
+#: printcmd.c:1820
 #, possible-c-format
 msgid "bad display number at or near '%s'"
 msgstr ""
 
-#: printcmd.c:1872 printcmd.c:2079
+#: printcmd.c:1830 printcmd.c:2025
 #, possible-c-format
 msgid "No display number %d.\n"
 msgstr ""
 
-#: printcmd.c:1894
+#: printcmd.c:1844
 msgid "Delete all auto-display expressions? "
 msgstr ""
 
-#: printcmd.c:1942
+#: printcmd.c:1892
 #, possible-c-format
 msgid "Unable to display \"%s\": %s"
 msgstr ""
 
-#: printcmd.c:2006
+#: printcmd.c:1956
 #, possible-c-format
 msgid "%p[<error: %s>%p]\n"
 msgstr ""
 
-#: printcmd.c:2089
+#: printcmd.c:2035
 #, possible-c-format
 msgid "Disabling display %d to avoid infinite recursion.\n"
 msgstr ""
 
-#: printcmd.c:2102
+#: printcmd.c:2046
 msgid "There are no auto-display expressions now.\n"
 msgstr ""
 
-#: printcmd.c:2104
+#: printcmd.c:2048
 msgid ""
 "Auto-display expressions now in effect:\n"
 "Num Enb Expression\n"
 msgstr ""
 
-#: printcmd.c:2117
+#: printcmd.c:2061
 msgid " (cannot be evaluated in the current context)"
 msgstr ""
 
-#: printcmd.c:2539
+#: printcmd.c:2484
 msgid "format-control string and values to print"
 msgstr ""
 
-#: printcmd.c:2614
+#: printcmd.c:2532
+msgid "Wrong number of arguments for specified format-string"
+msgstr ""
+
+#: printcmd.c:2559
 #, possible-c-format
 msgid "expected wchar_t argument for %%lc"
 msgstr ""
 
-#: printcmd.c:2646
+#: printcmd.c:2591
 msgid "long long not supported in printf"
 msgstr ""
 
-#: printcmd.c:2750
+#: printcmd.c:2696
 msgid ""
 "Describe where symbol SYM is stored.\n"
 "Usage: info address SYM"
 msgstr ""
 
-#: printcmd.c:2753
+#: printcmd.c:2699
 msgid ""
 "Describe what symbol is at location ADDR.\n"
 "Usage: info symbol ADDR\n"
 "Only for symbols with fixed locations (global or static scope)."
 msgstr ""
 
-#: printcmd.c:2758
+#: printcmd.c:2704
 msgid ""
 "Examine memory: x/FMT ADDRESS.\n"
 "ADDRESS is an expression for the memory address to examine.\n"
@@ -22189,13 +22070,13 @@ msgid ""
 "with this command or \"print\"."
 msgstr ""
 
-#: printcmd.c:2773
+#: printcmd.c:2719
 msgid ""
 "Expressions to display when program stops, with code numbers.\n"
 "Usage: info display"
 msgstr ""
 
-#: printcmd.c:2777
+#: printcmd.c:2723
 msgid ""
 "Cancel some expressions to be displayed when program stops.\n"
 "Usage: undisplay [NUM]...\n"
@@ -22205,7 +22086,7 @@ msgid ""
 "Do \"info display\" to see current list of code numbers."
 msgstr ""
 
-#: printcmd.c:2786
+#: printcmd.c:2732
 msgid ""
 "Print value of expression EXP each time the program stops.\n"
 "Usage: display[/FMT] EXP\n"
@@ -22218,7 +22099,7 @@ msgid ""
 "Use \"undisplay\" to cancel display requests previously made."
 msgstr ""
 
-#: printcmd.c:2796
+#: printcmd.c:2742
 msgid ""
 "Enable some expressions to be displayed when program stops.\n"
 "Usage: enable display [NUM]...\n"
@@ -22227,7 +22108,7 @@ msgid ""
 "Do \"info display\" to see current list of code numbers."
 msgstr ""
 
-#: printcmd.c:2803
+#: printcmd.c:2749
 msgid ""
 "Disable some expressions to be displayed when program stops.\n"
 "Usage: disable display [NUM]...\n"
@@ -22236,7 +22117,7 @@ msgid ""
 "Do \"info display\" to see current list of code numbers."
 msgstr ""
 
-#: printcmd.c:2810
+#: printcmd.c:2756
 msgid ""
 "Cancel some expressions to be displayed when program stops.\n"
 "Usage: delete display [NUM]...\n"
@@ -22245,7 +22126,7 @@ msgid ""
 "Do \"info display\" to see current list of code numbers."
 msgstr ""
 
-#: printcmd.c:2817
+#: printcmd.c:2763
 #, possible-c-format
 msgid ""
 "Formatted printing, like the C \"printf\" function.\n"
@@ -22253,14 +22134,14 @@ msgid ""
 "This supports most C printf format specifications, like %s, %d, etc."
 msgstr ""
 
-#: printcmd.c:2822
+#: printcmd.c:2768
 msgid ""
 "Like \"print\" but don't put in value history and don't print newline.\n"
 "Usage: output EXP\n"
 "This is useful in user-defined commands."
 msgstr ""
 
-#: printcmd.c:2827
+#: printcmd.c:2773
 msgid ""
 "Evaluate expression EXP and assign result to variable VAR.\n"
 "Usage: set VAR = EXP\n"
@@ -22275,7 +22156,7 @@ msgid ""
 "You can see these environment settings with the \"show\" command."
 msgstr ""
 
-#: printcmd.c:2841
+#: printcmd.c:2787
 msgid ""
 "Evaluate expression EXP and assign result to variable VAR.\n"
 "Usage: assign VAR = EXP\n"
@@ -22291,7 +22172,7 @@ msgid ""
 msgstr ""
 
 #. "call" is the same as "set", but handy for dbx users to call fns.
-#: printcmd.c:2854
+#: printcmd.c:2800
 msgid ""
 "Call a function in the program.\n"
 "Usage: call EXP\n"
@@ -22300,7 +22181,7 @@ msgid ""
 "history, if it is not void."
 msgstr ""
 
-#: printcmd.c:2862
+#: printcmd.c:2808
 msgid ""
 "Evaluate expression EXP and assign result to variable VAR.\n"
 "Usage: set variable VAR = EXP\n"
@@ -22312,7 +22193,7 @@ msgid ""
 "This may usually be abbreviated to simply \"set\"."
 msgstr ""
 
-#: printcmd.c:2876
+#: printcmd.c:2822
 msgid ""
 "Print value of expression EXP.\n"
 "Usage: print [[OPTION]... --] [/FMT] [EXP]\n"
@@ -22347,15 +22228,15 @@ msgid ""
 "but no count or size letter (see \"x\" command)."
 msgstr ""
 
-#: printcmd.c:2915
+#: printcmd.c:2861
 msgid "Set the largest offset that will be printed in <SYMBOL+1234> form."
 msgstr ""
 
-#: printcmd.c:2916
+#: printcmd.c:2862
 msgid "Show the largest offset that will be printed in <SYMBOL+1234> form."
 msgstr ""
 
-#: printcmd.c:2917
+#: printcmd.c:2863
 msgid ""
 "Tell GDB to only display the symbolic form of an address if the\n"
 "offset between the closest earlier symbol and the address is less than\n"
@@ -22365,15 +22246,15 @@ msgid ""
 "it.  Zero is equivalent to \"unlimited\"."
 msgstr ""
 
-#: printcmd.c:2927
+#: printcmd.c:2873
 msgid "Set printing of source filename and line number with <SYMBOL>."
 msgstr ""
 
-#: printcmd.c:2928
+#: printcmd.c:2874
 msgid "Show printing of source filename and line number with <SYMBOL>."
 msgstr ""
 
-#: printcmd.c:2934
+#: printcmd.c:2880
 msgid ""
 "Construct a GDB command and then evaluate it.\n"
 "Usage: eval \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n"
@@ -22403,76 +22284,76 @@ msgstr ""
 msgid "invalid objfile name"
 msgstr ""
 
-#: probe.c:198
+#: probe.c:196
 #, possible-c-format
 msgid "No probe matching objfile=`%s', provider=`%s', name=`%s'"
 msgstr ""
 
-#: probe.c:199 probe.c:200
+#: probe.c:197 probe.c:198
 msgid "<any>"
 msgstr ""
 
-#: probe.c:289
+#: probe.c:287
 msgid "Invalid provider regexp"
 msgstr ""
 
-#: probe.c:292
+#: probe.c:290
 msgid "Invalid probe regexp"
 msgstr ""
 
-#: probe.c:295
+#: probe.c:293
 msgid "Invalid object file regexp"
 msgstr ""
 
-#: probe.c:410
+#: probe.c:408
 msgid "n/a"
 msgstr ""
 
-#: probe.c:548
+#: probe.c:546
 msgid "Type"
 msgstr ""
 
-#: probe.c:550
+#: probe.c:548
 msgid "Provider"
 msgstr ""
 
-#: probe.c:551
+#: probe.c:549
 msgid "Name"
 msgstr ""
 
-#: probe.c:552
+#: probe.c:550
 msgid "Where"
 msgstr ""
 
-#: probe.c:566
+#: probe.c:564
 msgid "Object"
 msgstr ""
 
-#: probe.c:605 probe.c:629 probe.c:664
+#: probe.c:603 probe.c:627 probe.c:662
 msgid "No probes matched.\n"
 msgstr ""
 
-#: probe.c:640
+#: probe.c:638
 #, possible-c-format
 msgid "Probe %s:%s enabled.\n"
 msgstr ""
 
-#: probe.c:645
+#: probe.c:643
 #, possible-c-format
 msgid "Probe %s:%s cannot be enabled.\n"
 msgstr ""
 
-#: probe.c:675
+#: probe.c:673
 #, possible-c-format
 msgid "Probe %s:%s disabled.\n"
 msgstr ""
 
-#: probe.c:680
+#: probe.c:678
 #, possible-c-format
 msgid "Probe %s:%s cannot be disabled.\n"
 msgstr ""
 
-#: probe.c:784
+#: probe.c:782
 msgid ""
 "Show available static probes.\n"
 "Usage: info probes [all|TYPE [ARGS]]\n"
@@ -22484,26 +22365,26 @@ msgid ""
 "will show information about all types of probes."
 msgstr ""
 
-#: probe.c:819 probe.c:849
+#: probe.c:817 probe.c:847
 #, possible-c-format
 msgid "No probe at PC %s"
 msgstr ""
 
-#: probe.c:826
+#: probe.c:824
 #, possible-c-format
 msgid "Invalid probe argument %d -- probe has %u arguments available"
 msgstr ""
 
-#: probe.c:863
+#: probe.c:861
 #, possible-c-format
 msgid "Invalid probe argument %d -- probe has %d arguments available"
 msgstr ""
 
-#: probe.c:912
+#: probe.c:911
 msgid "Show information about all type of probes."
 msgstr ""
 
-#: probe.c:916
+#: probe.c:915
 msgid ""
 "Enable probes.\n"
 "Usage: enable probes [PROVIDER [NAME [OBJECT]]]\n"
@@ -22515,7 +22396,7 @@ msgid ""
 "all defined probes."
 msgstr ""
 
-#: probe.c:927
+#: probe.c:926
 msgid ""
 "Disable probes.\n"
 "Usage: disable probes [PROVIDER [NAME [OBJECT]]]\n"
@@ -22527,19 +22408,19 @@ msgid ""
 "all defined probes."
 msgstr ""
 
-#: proc-api.c:422
+#: proc-api.c:421
 msgid "Set tracing for /proc api calls."
 msgstr ""
 
-#: proc-api.c:423
+#: proc-api.c:422
 msgid "Show tracing for /proc api calls."
 msgstr ""
 
-#: proc-api.c:430
+#: proc-api.c:429
 msgid "Set filename for /proc tracefile."
 msgstr ""
 
-#: proc-api.c:431
+#: proc-api.c:430
 msgid "Show filename for /proc tracefile."
 msgstr ""
 
@@ -22548,155 +22429,145 @@ msgstr ""
 msgid "Can't determine the current address space of thread %s\n"
 msgstr ""
 
-#: procfs.c:330
+#: procfs.c:317
 #, possible-c-format
 msgid "procfs: couldn't find pid %d (kernel thread %d) in procinfo list."
 msgstr ""
 
-#: procfs.c:334
+#: procfs.c:321
 #, possible-c-format
 msgid "procfs: couldn't find pid %d in procinfo list."
 msgstr ""
 
-#: procfs.c:809
+#: procfs.c:794
 #, possible-c-format
 msgid "procfs: modify_flag failed to turn %s %s"
 msgstr ""
 
-#: procfs.c:1003
+#: procfs.c:984
 msgid "procfs: set_traced_signals failed"
 msgstr ""
 
-#: procfs.c:1626
-#, possible-c-format
-msgid "procfs_find_LDT_entry: could not find procinfo for %d:%ld."
-msgstr ""
-
-#: procfs.c:1634
-#, possible-c-format
-msgid "procfs_find_LDT_entry: could not read gregs for %d:%ld."
-msgstr ""
-
-#: procfs.c:1886
+#: procfs.c:1783
 #, possible-c-format
 msgid "Attaching to program `%s', %s\n"
 msgstr ""
 
-#: procfs.c:1912 target.c:3175
+#: procfs.c:1811 target.c:3113
 #, possible-c-format
 msgid "Detaching from program: %s, %s\n"
 msgstr ""
 
-#: procfs.c:1933
+#: procfs.c:1832
 msgid "procfs: out of memory in 'attach'"
 msgstr ""
 
-#: procfs.c:2022
+#: procfs.c:1920
 msgid "Was stopped when attached, make it runnable again? "
 msgstr ""
 
-#: procfs.c:2065
+#: procfs.c:1959
 #, possible-c-format
 msgid "procfs: fetch_registers failed to find procinfo for %s"
 msgstr ""
 
-#: procfs.c:2114
+#: procfs.c:2008
 #, possible-c-format
 msgid "procfs: store_registers: failed to find procinfo for %s"
 msgstr ""
 
-#: procfs.c:2233
+#: procfs.c:2095
 #, possible-c-format
 msgid "procfs: couldn't stop process %d: wait returned %d."
 msgstr ""
 
-#: procfs.c:2339
+#: procfs.c:2198
 msgid "procfs: trapped on entry to "
 msgstr ""
 
-#: procfs.c:2350 procfs.c:2436
+#: procfs.c:2209 procfs.c:2275
 #, possible-c-format
 msgid "%ld syscall arguments:\n"
 msgstr ""
 
-#: procfs.c:2425
+#: procfs.c:2264
 msgid "procfs: trapped on exit from "
 msgstr ""
 
-#: procfs.c:2454
+#: procfs.c:2293
 #, possible-c-format
 msgid "Retry #%d:\n"
 msgstr ""
 
-#: procfs.c:2487
+#: procfs.c:2326
 msgid "child stopped for unknown reason:\n"
 msgstr ""
 
-#: procfs.c:2489
+#: procfs.c:2328
 msgid "... giving up..."
 msgstr ""
 
-#: procfs.c:2514
+#: procfs.c:2352
 msgid "procfs: ...giving up..."
 msgstr ""
 
-#: procfs.c:2741
+#: procfs.c:2529
 msgid ""
 "resume: target already running.  Pretend to resume, and hope for the best!"
 msgstr ""
 
-#: procfs.c:2777
+#: procfs.c:2565
 #, possible-c-format
 msgid "\tUsing the running image of %s %s via /proc.\n"
 msgstr ""
 
-#: procfs.c:2868
+#: procfs.c:2651
 msgid "procfs: out of memory in 'init_inferior'"
 msgstr ""
 
-#: procfs.c:2951
+#: procfs.c:2731
 msgid "procfs: create_procinfo failed in child."
 msgstr ""
 
 #. Not found.  This must be an error rather than merely passing
 #. the file to execlp(), because execlp() would try all the
 #. exec()s, causing GDB to get confused.
-#: procfs.c:3081
+#: procfs.c:2859
 #, possible-c-format
 msgid "procfs:%d -- Can't find shell %s in PATH"
 msgstr ""
 
-#: procfs.c:3595
+#: procfs.c:3373
 #, possible-c-format
 msgid "process %d flags:\n"
 msgstr ""
 
-#: procfs.c:3605
+#: procfs.c:3383
 #, possible-c-format
 msgid "thread %d flags:\n"
 msgstr ""
 
-#: procfs.c:3663
+#: procfs.c:3441
 msgid "you must be debugging a process to use this command."
 msgstr ""
 
-#: procfs.c:3666
+#: procfs.c:3444
 msgid "system call to trace"
 msgstr ""
 
-#: procfs.c:3707
+#: procfs.c:3486
 msgid "Give a trace of entries into the syscall."
 msgstr ""
 
-#: procfs.c:3709
+#: procfs.c:3488
 msgid "Give a trace of exits from the syscall."
 msgstr ""
 
-#: procfs.c:3711
+#: procfs.c:3490
 msgid "Cancel a trace of entries into the syscall."
 msgstr ""
 
-#: procfs.c:3713
+#: procfs.c:3492
 msgid "Cancel a trace of exits from the syscall."
 msgstr ""
 
@@ -22705,21 +22576,21 @@ msgstr ""
 msgid "Could not recognize version of Intel Compiler in: \"%s\""
 msgstr ""
 
-#: progspace.c:335
+#: progspace.c:382
 #, possible-c-format
 msgid "program space ID %d not known."
 msgstr ""
 
-#: progspace.c:415
+#: progspace.c:447
 msgid "Info about currently known program spaces."
 msgstr ""
 
-#: psymtab.c:106
+#: psymtab.c:100
 #, possible-c-format
 msgid "Reading symbols from %s...\n"
 msgstr ""
 
-#: psymtab.c:116
+#: psymtab.c:110
 #, possible-c-format
 msgid "(No debugging symbols found in %s)\n"
 msgstr ""
@@ -22727,57 +22598,62 @@ msgstr ""
 #. Might want to error() here (in case symtab is corrupt and
 #. will cause a core dump), but maybe we can successfully
 #. continue, so let's not.
-#: psymtab.c:400
+#: psymtab.c:392
 #, possible-c-format
 msgid "(Internal error: pc %s in read in psymtab, but not in symtab.)\n"
 msgstr ""
 
-#: psymtab.c:798
+#: psymtab.c:762
+#, possible-c-format
+msgid "Reading in symbols for %s...\n"
+msgstr ""
+
+#: psymtab.c:796
 msgid "select_source_symtab: readin pst found and no symtabs."
 msgstr ""
 
-#: psymtab.c:1015
+#: psymtab.c:1011
 #, possible-c-format
 msgid "  Number of psym tables (not yet expanded): %d\n"
 msgstr ""
 
-#: psymtab.c:1812 symmisc.c:413
+#: psymtab.c:1853 symmisc.c:433
 msgid "Missing pc value"
 msgstr ""
 
-#: psymtab.c:1818 symmisc.c:419
+#: psymtab.c:1859 symmisc.c:439
 msgid "Missing source file"
 msgstr ""
 
-#: psymtab.c:1824 symmisc.c:425 symmisc.c:698
+#: psymtab.c:1865 symmisc.c:445 symmisc.c:718
 msgid "Missing objfile name"
 msgstr ""
 
 #. Future proofing: Don't allow OUTFILE to begin with "-".
-#: psymtab.c:1836 symmisc.c:437 symmisc.c:710
+#: psymtab.c:1877 symmisc.c:457 symmisc.c:730
 #, possible-c-format
 msgid "Unknown option: %s"
 msgstr ""
 
-#: psymtab.c:1844 symmisc.c:445
+#: psymtab.c:1885 symmisc.c:465
 msgid "Must specify at most one of -pc and -source"
 msgstr ""
 
-#: psymtab.c:1851 symmisc.c:452 symmisc.c:722
+#: psymtab.c:1892 symmisc.c:472 symmisc.c:742
 msgid "Junk at end of command"
 msgstr ""
 
-#: psymtab.c:1943
+#: psymtab.c:1984
 #, possible-c-format
 msgid "No partial symtab for address: %s"
 msgstr ""
 
-#: psymtab.c:1945
+#: psymtab.c:1986
 #, possible-c-format
 msgid "No partial symtab for source file: %s"
 msgstr ""
 
-#: psymtab.c:2163
+#: psymtab.c:2210
 msgid ""
 "Print dump of current partial symbol definitions.\n"
 "Usage: mt print psymbols [-objfile OBJFILE] [-pc ADDRESS] [--] [OUTFILE]\n"
@@ -22789,14 +22665,14 @@ msgid ""
 "If OBJFILE is provided, dump only that file's minimal symbols."
 msgstr ""
 
-#: psymtab.c:2174
+#: psymtab.c:2221
 msgid ""
 "List the partial symbol tables for all object files.\n"
 "This does not include information about individual partial symbols,\n"
 "just the symbol table structures themselves."
 msgstr ""
 
-#: psymtab.c:2181
+#: psymtab.c:2228
 msgid "Check consistency of currently expanded psymtabs versus symtabs."
 msgstr ""
 
@@ -22808,599 +22684,521 @@ msgstr ""
 msgid "type not handled in pascal_type_print_varspec_suffix()"
 msgstr ""
 
-#: p-valprint.c:416
+#: p-valprint.c:398
 #, possible-c-format
 msgid "Invalid pascal type code %d in symbol table."
 msgstr ""
 
-#: p-valprint.c:463
+#: p-valprint.c:446
 #, possible-c-format
 msgid "Printing of pascal static members is %s.\n"
 msgstr ""
 
-#: p-valprint.c:898
+#: p-valprint.c:869
 msgid "Set printing of pascal static members."
 msgstr ""
 
-#: p-valprint.c:899
+#: p-valprint.c:870
 msgid "Show printing of pascal static members."
 msgstr ""
 
-#: python/py-cmd.c:116 python/py-cmd.c:183
-msgid "Invalid invocation of Python command object."
-msgstr ""
-
-#: python/py-cmd.c:124
-msgid "Python command object missing 'invoke' method."
-msgstr ""
-
-#: python/py-cmd.c:134
-msgid "Could not convert arguments to Python string."
+#. Require a valid Architecture.
+#: python/py-arch.c:40
+msgid "Architecture is invalid."
 msgstr ""
 
-#: python/py-cmd.c:193 python/py-cmd.c:206
-msgid "Could not convert argument to Python string."
+#: python/py-arch.c:151
+msgid "Argument 'end_pc' should be a (long) integer."
 msgstr ""
 
-#: python/py-cmd.c:369
-msgid "No command name found."
+#: python/py-arch.c:159
+msgid ""
+"Argument 'end_pc' should be greater than or equal to the argument 'start_pc'."
 msgstr ""
 
-#: python/py-cmd.c:396
-#, possible-c-format
-msgid "Could not find command prefix %s."
+#: python/py-arch.c:171
+msgid "Argument 'count' should be an non-negative integer."
 msgstr ""
 
-#: python/py-cmd.c:408
+#: python/py-auto-load.c:40
 #, possible-c-format
-msgid "'%s' is not a prefix command."
-msgstr ""
-
-#: python/py-cmd.c:454
-msgid "Command object already initialized."
-msgstr ""
-
-#: python/py-cmd.c:470 python/py-param.c:682
-msgid "Invalid command class argument."
-msgstr ""
-
-#: python/py-cmd.c:477
-msgid "Invalid completion type argument."
-msgstr ""
-
-#. Require that INFERIOR be a valid inferior ID.
-#: python/py-infthread.c:34 python/py-infthread.c:91
-msgid "Thread no longer exists."
-msgstr ""
-
-#: python/py-infthread.c:98
-msgid "Cannot delete `name' attribute."
+msgid "Auto-loading of Python scripts is %s.\n"
 msgstr ""
 
-#: python/py-infthread.c:108
-msgid "The value of `name' must be a string."
+#: python/py-auto-load.c:67
+msgid "Set the debugger's behaviour regarding auto-loaded Python scripts."
 msgstr ""
 
-#: python/py-infthread.c:280
-msgid "Thread handle not found."
+#: python/py-auto-load.c:68
+msgid "Show the debugger's behaviour regarding auto-loaded Python scripts."
 msgstr ""
 
-#. Require that BREAKPOINT be a valid breakpoint ID; throw a Python
-#. exception if it is invalid.
-#. Require that BREAKPOINT be a valid breakpoint ID; throw a Python
-#. exception if it is invalid.  This macro is for use in setter functions.
-#: python/python-internal.h:348 python/python-internal.h:358
-#, possible-c-format
-msgid "Breakpoint %d is invalid."
+#: python/py-auto-load.c:69
+msgid ""
+"If enabled, auto-loaded Python scripts are loaded when the debugger reads\n"
+"an executable or shared library.\n"
+"This options has security implications for untrusted inferiors."
 msgstr ""
 
-#: python/py-xmethods.c:362
+#: python/py-auto-load.c:78
 msgid ""
-"Arg type returned by the get_arg_types method of a debug method worker "
-"object is not a gdb.Type object."
+"Set the debugger's behaviour regarding auto-loaded Python scripts, "
+"deprecated."
 msgstr ""
 
-#: python/py-xmethods.c:381
+#: python/py-auto-load.c:81
 msgid ""
-"Arg type returned by the get_arg_types method of an xmethod worker object is "
-"not a gdb.Type object."
+"Show the debugger's behaviour regarding auto-loaded Python scripts, "
+"deprecated."
 msgstr ""
 
-#: python/py-xmethods.c:490
+#: python/py-auto-load.c:96
 msgid ""
-"Type returned by the get_result_type method of an xmethod worker object is "
-"not a gdb.Type object."
+"Print the list of automatically loaded Python scripts.\n"
+"Usage: info auto-load python-scripts [REGEXP]"
 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: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."
+#: python/py-auto-load.c:100
+msgid "Print the list of automatically loaded Python scripts, deprecated."
 msgstr ""
 
-#. Require that OBJF be a valid objfile.
-#: python/py-objfile.c:66
-msgid "Objfile no longer exists."
+#. Require a valid block.  All access to block_object->block should be
+#. gated by this call.
+#: python/py-block.c:63
+msgid "Block is invalid."
 msgstr ""
 
-#: python/py-objfile.c:245
-msgid "Cannot delete the pretty_printers attribute."
+#. Require a valid block.  This macro is called during block iterator
+#. creation, and at each next call.
+#: python/py-block.c:75
+msgid "Source block for iterator is invalid."
 msgstr ""
 
-#: python/py-objfile.c:252
-msgid "The pretty_printers attribute must be a list."
+#: python/py-block.c:361
+msgid "Symbol is null."
 msgstr ""
 
-#: python/py-objfile.c:284
-msgid "Cannot delete the frame filters attribute."
+#: python/py-breakpoint.c:126
+msgid "Cannot delete `enabled' attribute."
 msgstr ""
 
-#: python/py-objfile.c:291
-msgid "The frame_filters attribute must be a dictionary."
+#: python/py-breakpoint.c:133
+msgid "The value of `enabled' must be a boolean."
 msgstr ""
 
-#: python/py-objfile.c:324
-msgid "Cannot delete the frame unwinders attribute."
+#: python/py-breakpoint.c:168
+msgid "Cannot delete `silent' attribute."
 msgstr ""
 
-#: python/py-objfile.c:331
-msgid "The frame_unwinders attribute must be a list."
+#: python/py-breakpoint.c:174
+msgid "The value of `silent' must be a boolean."
 msgstr ""
 
-#: python/py-objfile.c:375
-msgid "Cannot delete the type_printers attribute."
+#: python/py-breakpoint.c:199
+msgid "Cannot delete `thread' attribute."
 msgstr ""
 
-#: python/py-objfile.c:382
-msgid "The type_printers attribute must be a list."
+#: python/py-breakpoint.c:210
+msgid "Invalid thread ID."
 msgstr ""
 
-#: python/py-objfile.c:642
-msgid "Not a valid build id."
+#: python/py-breakpoint.c:219
+msgid "The value of `thread' must be an integer or None."
 msgstr ""
 
-#: python/py-objfile.c:653
-msgid "Objfile not found."
+#: python/py-breakpoint.c:241
+msgid "Cannot delete `task' attribute."
 msgstr ""
 
-#. Require a valid frame.  This must be called inside a TRY_CATCH, or
-#. another context in which a gdb exception is allowed.
-#: python/py-frame.c:54
-msgid "Frame is invalid."
+#: python/py-breakpoint.c:261
+msgid "Invalid task ID."
 msgstr ""
 
-#: python/py-frame.c:265
-msgid "Unknown register."
+#: python/py-breakpoint.c:270
+msgid "The value of `task' must be an integer or None."
 msgstr ""
 
-#: python/py-frame.c:302
-msgid "Cannot locate block for frame."
+#: python/py-breakpoint.c:316
+msgid "Cannot delete `ignore_count' attribute."
 msgstr ""
 
-#: python/py-frame.c:508 python/py-type.c:929
-msgid "Second argument must be block."
+#: python/py-breakpoint.c:322
+msgid "The value of `ignore_count' must be an integer."
 msgstr ""
 
-#: python/py-frame.c:533
-#, possible-c-format
-msgid "Variable '%s' not found."
+#: python/py-breakpoint.c:355
+msgid "Cannot delete `hit_count' attribute."
 msgstr ""
 
-#: python/py-frame.c:541
-msgid "Argument must be a symbol or string."
+#: python/py-breakpoint.c:368
+msgid "The value of `hit_count' must be zero."
 msgstr ""
 
-#: python/py-frame.c:635
-msgid "Invalid frame stop reason."
+#: python/py-breakpoint.c:449
+msgid "Cannot delete `condition' attribute."
 msgstr ""
 
-#: python/py-value.c:131
-msgid "Object must support the python buffer protocol."
+#: python/py-breakpoint.c:684
+msgid ""
+"Breakpoints specified with spec cannot have source, function, label or line "
+"defined."
 msgstr ""
 
-#: python/py-value.c:138
-msgid "Size of type is larger than that of buffer object."
+#: python/py-breakpoint.c:696
+msgid "Watchpoints cannot be set by explicit location parameters."
 msgstr ""
 
-#: python/py-value.c:166
-msgid "type argument must be a gdb.Type."
+#: python/py-breakpoint.c:707
+msgid "Neither spec nor explicit location set."
 msgstr ""
 
-#: python/py-value.c:174
-msgid "Could not allocate memory to create Value object."
+#: python/py-breakpoint.c:716
+msgid "Specifying a source must also include a line, label or function."
 msgstr ""
 
-#: python/py-value.c:264
-msgid ""
-"Trying to get the referenced value from a value which is neither a pointer "
-"nor a reference."
+#: python/py-breakpoint.c:764
+msgid "Line keyword should be an integer or a string. "
 msgstr ""
 
-#: python/py-value.c:515
-msgid "Length is larger than array size."
+#: python/py-breakpoint.c:857
+msgid "Cannot understand watchpoint access type."
 msgstr ""
 
-#: python/py-value.c:759
-msgid "Argument must be a type."
+#: python/py-breakpoint.c:861
+msgid "Do not understand breakpoint type to set."
 msgstr ""
 
-#: python/py-value.c:818 python/py-value.c:1615 python/py-value.c:1646
-msgid "Invalid operation on gdb.Value."
+#: python/py-breakpoint.c:1039
+msgid "Error while creating breakpoint from GDB."
 msgstr ""
 
-#: python/py-value.c:840
-msgid "'parent_type' attribute of gdb.Field object is not agdb.Type object."
+#: python/py-cmd.c:116 python/py-cmd.c:183
+msgid "Invalid invocation of Python command object."
 msgstr ""
 
-#: python/py-value.c:896
-msgid "'type' attribute of gdb.Field object is not a gdb.Type object."
+#: python/py-cmd.c:124
+msgid "Python command object missing 'invoke' method."
 msgstr ""
 
-#: python/py-value.c:932
-msgid "Invalid lookup for a field not contained in the value."
+#: python/py-cmd.c:134
+msgid "Could not convert arguments to Python string."
 msgstr ""
 
-#: python/py-value.c:965
-msgid "gdb.Field object has no name and no 'bitpos' attribute."
+#: python/py-cmd.c:193 python/py-cmd.c:206
+msgid "Could not convert argument to Python string."
 msgstr ""
 
-#: python/py-value.c:1028
-msgid "Cannot subscript requested type."
+#: python/py-cmd.c:369
+msgid "No command name found."
 msgstr ""
 
-#: python/py-value.c:1051
-msgid "Setting of struct elements is not currently supported."
+#: python/py-cmd.c:396
+#, possible-c-format
+msgid "Could not find command prefix %s."
 msgstr ""
 
-#: python/py-value.c:1078
-msgid "Value is not callable (not TYPE_CODE_FUNC)."
+#: python/py-cmd.c:408
+#, possible-c-format
+msgid "'%s' is not a prefix command."
 msgstr ""
 
-#: python/py-value.c:1085
-msgid "Inferior arguments must be provided in a tuple."
+#: python/py-cmd.c:454
+msgid "Command object already initialized."
 msgstr ""
 
-#: python/py-value.c:1688
-msgid "Cannot convert value to int."
+#: python/py-cmd.c:471 python/py-param.c:682
+msgid "Invalid command class argument."
 msgstr ""
 
-#: python/py-value.c:1724
-msgid "Cannot convert value to long."
+#: python/py-cmd.c:478
+msgid "Invalid completion type argument."
 msgstr ""
 
-#: python/py-value.c:1761
-msgid "Cannot convert value to float."
+#: python/py-finishbreakpoint.c:185 python/py-finishbreakpoint.c:208
+msgid "Invalid ID for the `frame' object."
 msgstr ""
 
-#: python/py-value.c:1899
-#, possible-c-format
-msgid "Could not convert Python object: %S."
+#: python/py-finishbreakpoint.c:193
+msgid "\"FinishBreakpoint\" not meaningful in the outermost frame."
 msgstr ""
 
-#: python/py-value.c:1902
-#, possible-c-format
-msgid "Could not convert Python object: %s."
+#: python/py-finishbreakpoint.c:200
+msgid "\"FinishBreakpoint\" cannot be set on a dummy frame."
 msgstr ""
 
-#: python/py-unwind.c:182
-#, possible-c-format
-msgid "The value of the '%s' attribute is not a pointer."
+#: python/py-finishbreakpoint.c:224
+msgid "No thread currently selected."
 msgstr ""
 
-#: python/py-unwind.c:422
-msgid "frame_id should have 'sp' attribute."
+#: python/py-finishbreakpoint.c:236
+msgid "The value of `internal' must be a boolean."
 msgstr ""
 
-#: python/py-unwind.c:542
-msgid "A Unwinder should return gdb.UnwindInfo instance."
+#. Require a valid frame.  This must be called inside a TRY_CATCH, or
+#. another context in which a gdb exception is allowed.
+#: python/py-frame.c:53
+msgid "Frame is invalid."
 msgstr ""
 
-#: python/py-unwind.c:641
-msgid "Set Python unwinder debugging."
+#: python/py-frame.c:267
+msgid "Can't read register."
 msgstr ""
 
-#: python/py-unwind.c:642
-msgid "Show Python unwinder debugging."
+#: python/py-frame.c:304
+msgid "Cannot locate block for frame."
 msgstr ""
 
-#: python/py-unwind.c:643
-msgid "When non-zero, Python unwinder debugging is enabled."
+#: python/py-frame.c:510 python/py-type.c:962
+msgid "Second argument must be block."
 msgstr ""
 
-#: python/py-type.c:501
-msgid "Array bound must be an integer"
+#: python/py-frame.c:535
+#, possible-c-format
+msgid "Variable '%s' not found."
 msgstr ""
 
-#: python/py-type.c:584
-msgid "This type does not have a range."
+#: python/py-frame.c:543
+msgid "Argument must be a symbol or string."
 msgstr ""
 
-#: python/py-type.c:646
-msgid "Type does not have a target."
+#: python/py-frame.c:637
+msgid "Invalid frame stop reason."
 msgstr ""
 
-#: python/py-type.c:851
-msgid "Null type name."
+#: python/py-framefilter.c:99
+msgid "Unexpected value.  Expecting a gdb.Symbol or a Python string."
 msgstr ""
 
-#: python/py-type.c:879
-msgid "Type is not a template."
+#: python/py-framefilter.c:483
+msgid "No symbol or value provided."
 msgstr ""
 
-#: python/py-type.c:891 python/py-type.c:953
-#, possible-c-format
-msgid "No argument %d in template."
+#: python/py-framefilter.c:942
+msgid "FrameDecorator.function: expecting a String, integer or None."
 msgstr ""
 
-#: python/py-type.c:919
-msgid "Template argument number must be non-negative"
+#. We've printed all the frames we were asked to
+#. print, but more frames existed.
+#: python/py-framefilter.c:1229 stack.c:2108
+msgid "(More stack frames follow...)\n"
 msgstr ""
 
-#: python/py-type.c:964
-msgid "Template argument is optimized out"
+#: python/py-function.c:82
+msgid "No method named 'invoke' in object."
 msgstr ""
 
-#: python/py-type.c:1385
-msgid "'block' argument must be a Block."
+#: python/py-function.c:94 python/py-prettyprint.c:519 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:341 python/python.c:424
+#: python/python.c:440
+msgid "Error while executing Python code."
 msgstr ""
 
-#: python/py-utils.c:55
-msgid "Expected a string or unicode object."
+#: python/py-function.c:128
+msgid "This function is not documented."
 msgstr ""
 
-#: python/py-utils.c:281
-msgid "Overflow converting to address."
+#. Require that INFERIOR be a valid inferior ID.
+#: python/py-inferior.c:82
+msgid "Inferior no longer exists."
 msgstr ""
 
-#. An error occurred computing the string representation of the
-#. error message.  This is rare, but we should inform the user.
-#: python/py-utils.c:399
-msgid ""
-"An error occurred in Python and then another occurred computing the error "
-"message.\n"
+#: python/py-inferior.c:313
+msgid "could not find gdb thread object"
 msgstr ""
 
-#: python/py-utils.c:420
+#: python/py-inferior.c:601
 #, possible-c-format
-msgid "Error occurred in Python: %s"
+msgid "Memory buffer for address %s, which is %s bytes long."
 msgstr ""
 
-#: python/py-utils.c:422
-msgid "Error occurred in Python."
+#: python/py-inferior.c:636
+msgid "The memory buffer supports only one segment."
 msgstr ""
 
-#: python/py-linetable.c:75
-msgid "Symbol Table in line table is invalid."
+#: python/py-inferior.c:713
+msgid "Search range is empty."
 msgstr ""
 
-#: python/py-linetable.c:198 python/py-linetable.c:229
-msgid "Linetable information not found in symbol table"
+#: python/py-inferior.c:721
+msgid "The search range is too large."
 msgstr ""
 
-#: python/python.c:205
-msgid "Python not initialized"
+#: python/py-inferior.c:794
+msgid "Argument 'handle' must be a thread handle object."
 msgstr ""
 
-#: python/python.c:225 python/python.c:1890
-msgid "internal error: Unhandled Python exception"
+#. Require that INFERIOR be a valid inferior ID.
+#: python/py-infthread.c:34 python/py-infthread.c:91
+msgid "Thread no longer exists."
 msgstr ""
 
-#: python/python.c:343
-msgid "Installation error: gdb._execute_file function is missing"
+#: python/py-infthread.c:98
+msgid "Cannot delete `name' attribute."
 msgstr ""
 
-#: python/python.c:385
-msgid "Invalid \"python\" block structure."
+#: python/py-infthread.c:108
+msgid "The value of `name' must be a string."
 msgstr ""
 
-#: python/python.c:486
-msgid "Programmer error: unhandled type."
+#: python/py-infthread.c:280
+msgid "Thread handle not found."
 msgstr ""
 
-#: python/python.c:515
-#, possible-c-format
-msgid "Could not find parameter `%s'."
+#: python/py-instruction.c:40 python/py-record.c:80 python/py-record.c:96
+#: python/py-record.c:109 python/py-record.c:122 python/py-record.c:135
+#: python/py-record.c:148 python/py-record.c:161 python/py-record.c:174
+#: python/py-record.c:205 python/py-record.c:218 python/py-record.c:231
+#: python/py-record.c:244 python/py-record.c:257 python/py-record.c:270
+#: python/py-record.c:301 python/py-record.c:314 python/py-record.c:327
+#: python/py-record.c:340 python/py-record.c:353 python/py-record.c:366
+msgid "Not implemented."
 msgstr ""
 
-#: python/python.c:519
-#, possible-c-format
-msgid "`%s' is not a parameter."
+#: python/py-lazy-string.c:112
+msgid "Cannot create a value from NULL."
 msgstr ""
 
-#: python/python.c:750
-msgid "Number of breakpoints exceeds throttled maximum."
+#: python/py-lazy-string.c:184
+msgid "Cannot create a lazy string with address 0x0, and a non-zero length."
 msgstr ""
 
-#: python/python.c:1009
-msgid "Posted event is not callable"
+#: python/py-lazy-string.c:192
+msgid "A lazy string's type cannot be NULL."
 msgstr ""
 
-#: python/python.c:1072
-msgid "Return from prompt_hook must be either a Python string, or None"
+#: python/py-linetable.c:75
+msgid "Symbol Table in line table is invalid."
 msgstr ""
 
-#: python/python.c:1231
-msgid "Error occurred computing Python errormessage.\n"
+#: python/py-linetable.c:198 python/py-linetable.c:229
+msgid "Linetable information not found in symbol table"
 msgstr ""
 
-#: python/python.c:1482
-msgid "Python scripting is not supported in this copy of GDB."
+#. Require that OBJF be a valid objfile.
+#: python/py-objfile.c:66
+msgid "Objfile no longer exists."
 msgstr ""
 
-#: python/python.c:1739
-msgid ""
-"Start an interactive Python prompt.\n"
-"\n"
-"To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n"
-"prompt).\n"
-"\n"
-"Alternatively, a single-line Python command can be given as an\n"
-"argument, and if the command is an expression, the result will be\n"
-"printed.  For example:\n"
-"\n"
-"    (gdb) python-interactive 2 + 3\n"
-"    5"
+#: python/py-objfile.c:245
+msgid "Cannot delete the pretty_printers attribute."
 msgstr ""
 
-#: python/python.c:1752
-msgid ""
-"Start a Python interactive prompt.\n"
-"\n"
-"Python scripting is not supported in this copy of GDB.\n"
-"This command is only a placeholder."
+#: python/py-objfile.c:252
+msgid "The pretty_printers attribute must be a list."
 msgstr ""
 
-#: python/python.c:1763
-msgid ""
-"Evaluate a Python command.\n"
-"\n"
-"The command can be given as an argument, for instance:\n"
-"\n"
-"    python print (23)\n"
-"\n"
-"If no argument is given, the following lines are read and used\n"
-"as the Python commands.  Type a line containing \"end\" to indicate\n"
-"the end of the command."
+#: python/py-objfile.c:284
+msgid "Cannot delete the frame filters attribute."
 msgstr ""
 
-#: python/python.c:1774
-msgid ""
-"Evaluate a Python command.\n"
-"\n"
-"Python scripting is not supported in this copy of GDB.\n"
-"This command is only a placeholder."
+#: python/py-objfile.c:291
+msgid "The frame_filters attribute must be a dictionary."
 msgstr ""
 
-#: python/python.c:1785 python/python.c:1790
-msgid "Prefix command for python preference settings."
+#: python/py-objfile.c:324
+msgid "Cannot delete the frame unwinders attribute."
 msgstr ""
 
-#: python/python.c:1795
-msgid "Set mode for Python stack dump on error."
+#: python/py-objfile.c:331
+msgid "The frame_unwinders attribute must be a list."
 msgstr ""
 
-#: python/python.c:1796
-msgid "Show the mode of Python stack printing on error."
+#: python/py-objfile.c:375
+msgid "Cannot delete the type_printers attribute."
 msgstr ""
 
-#. This is passed in one call to warning so that blank lines aren't
-#. inserted between each line of text.
-#: python/python.c:1863
-#, possible-c-format
-msgid ""
-"\n"
-"Could not load the Python gdb module from `%s'.\n"
-"Limited Python support is available from the _gdb module.\n"
-"Suggest passing --data-directory=/path/to/gdb/data-directory."
+#: python/py-objfile.c:382
+msgid "The type_printers attribute must be a list."
 msgstr ""
 
-#. Require that INFERIOR be a valid inferior ID.
-#: python/py-inferior.c:82
-msgid "Inferior no longer exists."
+#: python/py-objfile.c:642
+msgid "Not a valid build id."
 msgstr ""
 
-#: python/py-inferior.c:313
-msgid "could not find gdb thread object"
+#: python/py-objfile.c:653
+msgid "Objfile not found."
 msgstr ""
 
-#: python/py-inferior.c:605
-#, possible-c-format
-msgid "Memory buffer for address %s, which is %s bytes long."
+#: python/py-param.c:142
+msgid "String required for filename."
 msgstr ""
 
-#: python/py-inferior.c:640
-msgid "The memory buffer supports only one segment."
+#: python/py-param.c:173
+msgid "ENUM arguments must be a string."
 msgstr ""
 
-#: python/py-inferior.c:717
-msgid "Search range is empty."
+#: python/py-param.c:187
+msgid "The value must be member of an enumeration."
 msgstr ""
 
-#: python/py-inferior.c:725
-msgid "The search range is too large."
+#: python/py-param.c:198
+msgid "A boolean argument is required."
 msgstr ""
 
-#: python/py-inferior.c:798
-msgid "Argument 'handle' must be a thread handle object."
+#: python/py-param.c:211
+msgid "A boolean or None is required"
 msgstr ""
 
-#. Require a valid symbol.  All access to symbol_object->symbol should be
-#. gated by this call.
-#: python/py-symbol.c:48
-msgid "Symbol is invalid."
+#: python/py-param.c:241
+msgid "The value must be integer."
 msgstr ""
 
-#: python/py-symbol.c:275
-msgid "invalid frame"
+#: python/py-param.c:279
+msgid "Range exceeded."
 msgstr ""
 
-#: python/py-symbol.c:279
-msgid "symbol requires a frame to compute its value"
+#: python/py-param.c:292
+msgid "Unhandled type in parameter value."
 msgstr ""
 
-#. Require a valid block.  All access to block_object->block should be
-#. gated by this call.
-#: python/py-block.c:63
-msgid "Block is invalid."
+#: python/py-param.c:313
+msgid "Cannot delete a parameter's value."
 msgstr ""
 
-#. Require a valid block.  This macro is called during block iterator
-#. creation, and at each next call.
-#: python/py-block.c:75
-msgid "Source block for iterator is invalid."
+#: python/py-param.c:368
+msgid "Parameter must return a string value."
 msgstr ""
 
-#: python/py-block.c:361
-msgid "Symbol is null."
+#: python/py-param.c:592
+msgid "An enumeration is required for PARAM_ENUM."
 msgstr ""
 
-#: python/py-function.c:82
-msgid "No method named 'invoke' in object."
+#: python/py-param.c:599
+msgid "The enumeration is not a sequence."
 msgstr ""
 
-#: python/py-function.c:128
-msgid "This function is not documented."
+#: python/py-param.c:609
+msgid "The enumeration is empty."
 msgstr ""
 
-#: python/py-framefilter.c:99
-msgid "Unexpected value.  Expecting a gdb.Symbol or a Python string."
+#: python/py-param.c:625
+msgid "The enumeration item not a string."
 msgstr ""
 
-#: python/py-framefilter.c:483
-msgid "No symbol or value provided."
+#: python/py-param.c:695
+msgid "Invalid parameter class argument."
 msgstr ""
 
-#: python/py-framefilter.c:942
-msgid "FrameDecorator.function: expecting a String, integer or None."
+#: python/py-param.c:702
+msgid "Only PARAM_ENUM accepts a fourth argument."
 msgstr ""
 
-#. We've printed all the frames we were asked to
-#. print, but more frames existed.
-#: python/py-framefilter.c:1229 stack.c:2087
-msgid "(More stack frames follow...)\n"
+#: python/py-prettyprint.c:418
+msgid "Result of children iterator not a tuple of two elements."
 msgstr ""
 
-#: python/py-record.c:80 python/py-record.c:96 python/py-record.c:109
-#: python/py-record.c:122 python/py-record.c:135 python/py-record.c:148
-#: python/py-record.c:161 python/py-record.c:174 python/py-record.c:205
-#: python/py-record.c:218 python/py-record.c:231 python/py-record.c:244
-#: python/py-record.c:257 python/py-record.c:270 python/py-record.c:301
-#: python/py-record.c:314 python/py-record.c:327 python/py-record.c:340
-#: python/py-record.c:353 python/py-record.c:366 python/py-instruction.c:40
-msgid "Not implemented."
+#: python/py-prettyprint.c:429
+msgid "Bad result from children iterator.\n"
 msgstr ""
 
-#. Require a valid symbol table.  All access to symtab_object->symtab
-#. should be gated by this call.
-#: python/py-symtab.c:52
-msgid "Symbol Table is invalid."
+#: python/py-prettyprint.c:681
+msgid "Argument must be a gdb.Value."
 msgstr ""
 
-#. Require a valid symbol table and line object.  All access to
-#. sal_object->sal should be gated by this call.
-#: python/py-symtab.c:83
-msgid "Symbol Table and Line is invalid."
+#. Require that PSPACE_OBJ be a valid program space ID.
+#: python/py-progspace.c:68
+msgid "Program space no longer exists."
 msgstr ""
 
 #: python/py-record-btrace.c:81
@@ -23408,7 +23206,7 @@ msgid "Must be gdb.RecordInstruction"
 msgstr ""
 
 #: python/py-record-btrace.c:90 python/py-record-btrace.c:96
-#: record-btrace.c:2836
+#: record-btrace.c:2866
 msgid "No such instruction."
 msgstr ""
 
@@ -23449,162 +23247,230 @@ msgstr ""
 msgid "Argument must be instruction."
 msgstr ""
 
-#: python/py-breakpoint.c:126
-msgid "Cannot delete `enabled' attribute."
+#: python/py-registers.c:233
+msgid "No more groups"
 msgstr ""
 
-#: python/py-breakpoint.c:133
-msgid "The value of `enabled' must be a boolean."
+#: python/py-registers.c:283
+msgid "Unknown register group name."
 msgstr ""
 
-#: python/py-breakpoint.c:168
-msgid "Cannot delete `silent' attribute."
+#: python/py-registers.c:324
+msgid "No more registers"
 msgstr ""
 
-#: python/py-breakpoint.c:174
-msgid "The value of `silent' must be a boolean."
+#: python/py-registers.c:419
+msgid "Invalid Architecture in RegisterDescriptor"
 msgstr ""
 
-#: python/py-breakpoint.c:199
-msgid "Cannot delete `thread' attribute."
+#. Require a valid symbol.  All access to symbol_object->symbol should be
+#. gated by this call.
+#: python/py-symbol.c:48
+msgid "Symbol is invalid."
 msgstr ""
 
-#: python/py-breakpoint.c:210
-msgid "Invalid thread ID."
+#: python/py-symbol.c:275
+msgid "invalid frame"
 msgstr ""
 
-#: python/py-breakpoint.c:219
-msgid "The value of `thread' must be an integer or None."
+#: python/py-symbol.c:279
+msgid "symbol requires a frame to compute its value"
 msgstr ""
 
-#: python/py-breakpoint.c:241
-msgid "Cannot delete `task' attribute."
+#. Require a valid symbol table.  All access to symtab_object->symtab
+#. should be gated by this call.
+#: python/py-symtab.c:52
+msgid "Symbol Table is invalid."
 msgstr ""
 
-#: python/py-breakpoint.c:261
-msgid "Invalid task ID."
+#. Require a valid symbol table and line object.  All access to
+#. sal_object->sal should be gated by this call.
+#: python/py-symtab.c:83
+msgid "Symbol Table and Line is invalid."
 msgstr ""
 
-#: python/py-breakpoint.c:270
-msgid "The value of `task' must be an integer or None."
+#. Require that "Window" be a valid window.
+#: python/py-tui.c:344 python/py-tui.c:424
+msgid "TUI window is invalid."
 msgstr ""
 
-#: python/py-breakpoint.c:316
-msgid "Cannot delete `ignore_count' attribute."
+#: python/py-tui.c:430
+msgid "Cannot delete \"title\" attribute."
 msgstr ""
 
-#: python/py-breakpoint.c:322
-msgid "The value of `ignore_count' must be an integer."
+#: python/py-type.c:504
+msgid "Array bound must be an integer"
 msgstr ""
 
-#: python/py-breakpoint.c:355
-msgid "Cannot delete `hit_count' attribute."
+#: python/py-type.c:587
+msgid "This type does not have a range."
 msgstr ""
 
-#: python/py-breakpoint.c:368
-msgid "The value of `hit_count' must be zero."
+#: python/py-type.c:653
+msgid "Type does not have a target."
 msgstr ""
 
-#: python/py-breakpoint.c:449
-msgid "Cannot delete `condition' attribute."
+#: python/py-type.c:884
+msgid "Null type name."
 msgstr ""
 
-#: python/py-breakpoint.c:684
+#: python/py-type.c:912
+msgid "Type is not a template."
+msgstr ""
+
+#: python/py-type.c:924 python/py-type.c:986
+#, possible-c-format
+msgid "No argument %d in template."
+msgstr ""
+
+#: python/py-type.c:952
+msgid "Template argument number must be non-negative"
+msgstr ""
+
+#: python/py-type.c:997
+msgid "Template argument is optimized out"
+msgstr ""
+
+#: python/py-type.c:1418
+msgid "'block' argument must be a Block."
+msgstr ""
+
+#: python/py-unwind.c:150
+#, possible-c-format
+msgid "The value of the '%s' attribute is not a pointer."
+msgstr ""
+
+#: python/py-unwind.c:390
+msgid "frame_id should have 'sp' attribute."
+msgstr ""
+
+#: python/py-unwind.c:526
+msgid "A Unwinder should return gdb.UnwindInfo instance."
+msgstr ""
+
+#: python/py-unwind.c:625
+msgid "Set Python unwinder debugging."
+msgstr ""
+
+#: python/py-unwind.c:626
+msgid "Show Python unwinder debugging."
+msgstr ""
+
+#: python/py-unwind.c:627
+msgid "When non-zero, Python unwinder debugging is enabled."
+msgstr ""
+
+#: python/py-utils.c:55
+msgid "Expected a string or unicode object."
+msgstr ""
+
+#: python/py-utils.c:281
+msgid "Overflow converting to address."
+msgstr ""
+
+#. An error occurred computing the string representation of the
+#. error message.  This is rare, but we should inform the user.
+#: python/py-utils.c:399
 msgid ""
-"Breakpoints specified with spec cannot have source, function, label or line "
-"defined."
+"An error occurred in Python and then another occurred computing the error "
+"message.\n"
 msgstr ""
 
-#: python/py-breakpoint.c:696
-msgid "Watchpoints cannot be set by explicit location parameters."
+#: python/py-utils.c:420
+#, possible-c-format
+msgid "Error occurred in Python: %s"
 msgstr ""
 
-#: python/py-breakpoint.c:707
-msgid "Neither spec nor explicit location set."
+#: python/py-utils.c:422
+msgid "Error occurred in Python."
 msgstr ""
 
-#: python/py-breakpoint.c:716
-msgid "Specifying a source must also include a line, label or function."
+#: python/py-value.c:131
+msgid "Object must support the python buffer protocol."
 msgstr ""
 
-#: python/py-breakpoint.c:764
-msgid "Line keyword should be an integer or a string. "
+#: python/py-value.c:138
+msgid "Size of type is larger than that of buffer object."
 msgstr ""
 
-#: python/py-breakpoint.c:857
-msgid "Cannot understand watchpoint access type."
+#: python/py-value.c:166
+msgid "type argument must be a gdb.Type."
 msgstr ""
 
-#: python/py-breakpoint.c:861
-msgid "Do not understand breakpoint type to set."
+#: python/py-value.c:174
+msgid "Could not allocate memory to create Value object."
 msgstr ""
 
-#: python/py-breakpoint.c:1039
-msgid "Error while creating breakpoint from GDB."
+#: python/py-value.c:264
+msgid ""
+"Trying to get the referenced value from a value which is neither a pointer "
+"nor a reference."
 msgstr ""
 
-#: python/py-param.c:142
-msgid "String required for filename."
+#: python/py-value.c:515
+msgid "Length is larger than array size."
 msgstr ""
 
-#: python/py-param.c:173
-msgid "ENUM arguments must be a string."
+#: python/py-value.c:759
+msgid "Argument must be a type."
 msgstr ""
 
-#: python/py-param.c:187
-msgid "The value must be member of an enumeration."
+#: python/py-value.c:818 python/py-value.c:1615 python/py-value.c:1646
+msgid "Invalid operation on gdb.Value."
 msgstr ""
 
-#: python/py-param.c:198
-msgid "A boolean argument is required."
+#: python/py-value.c:840
+msgid "'parent_type' attribute of gdb.Field object is not agdb.Type object."
 msgstr ""
 
-#: python/py-param.c:211
-msgid "A boolean or None is required"
+#: python/py-value.c:896
+msgid "'type' attribute of gdb.Field object is not a gdb.Type object."
 msgstr ""
 
-#: python/py-param.c:241
-msgid "The value must be integer."
+#: python/py-value.c:932
+msgid "Invalid lookup for a field not contained in the value."
 msgstr ""
 
-#: python/py-param.c:279
-msgid "Range exceeded."
+#: python/py-value.c:965
+msgid "gdb.Field object has no name and no 'bitpos' attribute."
 msgstr ""
 
-#: python/py-param.c:292
-msgid "Unhandled type in parameter value."
+#: python/py-value.c:1028
+msgid "Cannot subscript requested type."
 msgstr ""
 
-#: python/py-param.c:313
-msgid "Cannot delete a parameter's value."
+#: python/py-value.c:1051
+msgid "Setting of struct elements is not currently supported."
 msgstr ""
 
-#: python/py-param.c:368
-msgid "Parameter must return a string value."
+#: python/py-value.c:1078
+msgid "Value is not callable (not TYPE_CODE_FUNC)."
 msgstr ""
 
-#: python/py-param.c:592
-msgid "An enumeration is required for PARAM_ENUM."
+#: python/py-value.c:1085
+msgid "Inferior arguments must be provided in a tuple."
 msgstr ""
 
-#: python/py-param.c:599
-msgid "The enumeration is not a sequence."
+#: python/py-value.c:1688
+msgid "Cannot convert value to int."
 msgstr ""
 
-#: python/py-param.c:609
-msgid "The enumeration is empty."
+#: python/py-value.c:1724
+msgid "Cannot convert value to long."
 msgstr ""
 
-#: python/py-param.c:625
-msgid "The enumeration item not a string."
+#: python/py-value.c:1761
+msgid "Cannot convert value to float."
 msgstr ""
 
-#: python/py-param.c:695
-msgid "Invalid parameter class argument."
+#: python/py-value.c:1920
+#, possible-c-format
+msgid "Could not convert Python object: %S."
 msgstr ""
 
-#: python/py-param.c:702
-msgid "Only PARAM_ENUM accepts a fourth argument."
+#: python/py-value.c:1923
+#, possible-c-format
+msgid "Could not convert Python object: %s."
 msgstr ""
 
 #: python/py-varobj.c:101
@@ -23619,342 +23485,359 @@ msgstr ""
 msgid "Could not get children iterator"
 msgstr ""
 
-#: python/py-lazy-string.c:112
-msgid "Cannot create a value from NULL."
+#: python/py-xmethods.c:362
+msgid ""
+"Arg type returned by the get_arg_types method of a debug method worker "
+"object is not a gdb.Type object."
 msgstr ""
 
-#: python/py-lazy-string.c:184
-msgid "Cannot create a lazy string with address 0x0, and a non-zero length."
+#: python/py-xmethods.c:381
+msgid ""
+"Arg type returned by the get_arg_types method of an xmethod worker object is "
+"not a gdb.Type object."
 msgstr ""
 
-#: python/py-lazy-string.c:192
-msgid "A lazy string's type cannot be NULL."
+#: python/py-xmethods.c:490
+msgid ""
+"Type returned by the get_result_type method of an xmethod worker object is "
+"not a gdb.Type object."
 msgstr ""
 
-#. Require that PSPACE_OBJ be a valid program space ID.
-#: python/py-progspace.c:68
-msgid "Program space no longer exists."
+#. Require that BREAKPOINT be a valid breakpoint ID; throw a Python
+#. exception if it is invalid.
+#. Require that BREAKPOINT be a valid breakpoint ID; throw a Python
+#. exception if it is invalid.  This macro is for use in setter functions.
+#: python/python-internal.h:348 python/python-internal.h:358
+#, possible-c-format
+msgid "Breakpoint %d is invalid."
 msgstr ""
 
-#. Require a valid Architecture.
-#: python/py-arch.c:40
-msgid "Architecture is invalid."
+#: python/python.c:209
+msgid "Python not initialized"
 msgstr ""
 
-#: python/py-arch.c:151
-msgid "Argument 'end_pc' should be a (long) integer."
+#: python/python.c:229 python/python.c:1966
+msgid "internal error: Unhandled Python exception"
 msgstr ""
 
-#: python/py-arch.c:159
-msgid ""
-"Argument 'end_pc' should be greater than or equal to the argument 'start_pc'."
+#: python/python.c:375
+msgid "Installation error: gdb._execute_file function is missing"
 msgstr ""
 
-#: python/py-arch.c:171
-msgid "Argument 'count' should be an non-negative integer."
+#: python/python.c:417
+msgid "Invalid \"python\" block structure."
 msgstr ""
 
-#: python/py-auto-load.c:40
-#, possible-c-format
-msgid "Auto-loading of Python scripts is %s.\n"
+#: python/python.c:518
+msgid "Programmer error: unhandled type."
 msgstr ""
 
-#: python/py-auto-load.c:67
-msgid "Set the debugger's behaviour regarding auto-loaded Python scripts."
+#: python/python.c:547
+#, possible-c-format
+msgid "Could not find parameter `%s'."
 msgstr ""
 
-#: python/py-auto-load.c:68
-msgid "Show the debugger's behaviour regarding auto-loaded Python scripts."
+#: python/python.c:551
+#, possible-c-format
+msgid "`%s' is not a parameter."
 msgstr ""
 
-#: python/py-auto-load.c:69
-msgid ""
-"If enabled, auto-loaded Python scripts are loaded when the debugger reads\n"
-"an executable or shared library.\n"
-"This options has security implications for untrusted inferiors."
+#: python/python.c:788
+msgid "Number of breakpoints exceeds throttled maximum."
 msgstr ""
 
-#: python/py-auto-load.c:78
-msgid ""
-"Set the debugger's behaviour regarding auto-loaded Python scripts, "
-"deprecated."
+#: python/python.c:1032
+msgid "Posted event is not callable"
 msgstr ""
 
-#: python/py-auto-load.c:81
-msgid ""
-"Show the debugger's behaviour regarding auto-loaded Python scripts, "
-"deprecated."
+#: python/python.c:1095
+msgid "Return from prompt_hook must be either a Python string, or None"
 msgstr ""
 
-#: python/py-auto-load.c:96
-msgid ""
-"Print the list of automatically loaded Python scripts.\n"
-"Usage: info auto-load python-scripts [REGEXP]"
+#: python/python.c:1322
+msgid "Error occurred computing Python errormessage.\n"
 msgstr ""
 
-#: python/py-auto-load.c:100
-msgid "Print the list of automatically loaded Python scripts, deprecated."
+#: python/python.c:1571
+msgid "Python scripting is not supported in this copy of GDB."
 msgstr ""
 
-#: python/py-finishbreakpoint.c:185 python/py-finishbreakpoint.c:208
-msgid "Invalid ID for the `frame' object."
+#: python/python.c:1815
+msgid ""
+"Start an interactive Python prompt.\n"
+"\n"
+"To return to GDB, type the EOF character (e.g., Ctrl-D on an empty\n"
+"prompt).\n"
+"\n"
+"Alternatively, a single-line Python command can be given as an\n"
+"argument, and if the command is an expression, the result will be\n"
+"printed.  For example:\n"
+"\n"
+"    (gdb) python-interactive 2 + 3\n"
+"    5"
 msgstr ""
 
-#: python/py-finishbreakpoint.c:193
-msgid "\"FinishBreakpoint\" not meaningful in the outermost frame."
+#: python/python.c:1828
+msgid ""
+"Start a Python interactive prompt.\n"
+"\n"
+"Python scripting is not supported in this copy of GDB.\n"
+"This command is only a placeholder."
 msgstr ""
 
-#: python/py-finishbreakpoint.c:200
-msgid "\"FinishBreakpoint\" cannot be set on a dummy frame."
+#: python/python.c:1839
+msgid ""
+"Evaluate a Python command.\n"
+"\n"
+"The command can be given as an argument, for instance:\n"
+"\n"
+"    python print (23)\n"
+"\n"
+"If no argument is given, the following lines are read and used\n"
+"as the Python commands.  Type a line containing \"end\" to indicate\n"
+"the end of the command."
 msgstr ""
 
-#: python/py-finishbreakpoint.c:224
-msgid "No thread currently selected."
+#: python/python.c:1850
+msgid ""
+"Evaluate a Python command.\n"
+"\n"
+"Python scripting is not supported in this copy of GDB.\n"
+"This command is only a placeholder."
 msgstr ""
 
-#: python/py-finishbreakpoint.c:236
-msgid "The value of `internal' must be a boolean."
+#: python/python.c:1861 python/python.c:1866
+msgid "Prefix command for python preference settings."
 msgstr ""
 
-#: python/py-prettyprint.c:418
-msgid "Result of children iterator not a tuple of two elements."
+#: python/python.c:1871
+msgid "Set mode for Python stack dump on error."
 msgstr ""
 
-#: python/py-prettyprint.c:429
-msgid "Bad result from children iterator.\n"
+#: python/python.c:1872
+msgid "Show the mode of Python stack printing on error."
 msgstr ""
 
-#: python/py-prettyprint.c:686
-msgid "Argument must be a gdb.Value."
+#. This is passed in one call to warning so that blank lines aren't
+#. inserted between each line of text.
+#: python/python.c:1939
+#, possible-c-format
+msgid ""
+"\n"
+"Could not load the Python gdb module from `%s'.\n"
+"Limited Python support is available from the _gdb module.\n"
+"Suggest passing --data-directory=/path/to/gdb/data-directory."
 msgstr ""
 
-#: ravenscar-thread.c:73
+#: ravenscar-thread.c:74
 msgid "Ravenscar tasks."
 msgstr ""
 
-#: ravenscar-thread.c:74
+#: ravenscar-thread.c:75
 msgid "Ravenscar tasks support."
 msgstr ""
 
-#: ravenscar-thread.c:542
+#: ravenscar-thread.c:672
 #, possible-c-format
 msgid "%s. Task/thread support disabled."
 msgstr ""
 
-#: ravenscar-thread.c:565
-msgid "\"set ravenscar\" must be followed by the name of a setting.\n"
-msgstr ""
-
-#: ravenscar-thread.c:586
+#: ravenscar-thread.c:701
 msgid "Support for Ravenscar task/thread switching is enabled\n"
 msgstr ""
 
-#: ravenscar-thread.c:589
+#: ravenscar-thread.c:704
 msgid "Support for Ravenscar task/thread switching is disabled\n"
 msgstr ""
 
-#: ravenscar-thread.c:604
+#: ravenscar-thread.c:720
 msgid "Prefix command for changing Ravenscar-specific settings."
 msgstr ""
 
-#: ravenscar-thread.c:608
+#: ravenscar-thread.c:724
 msgid "Prefix command for showing Ravenscar-specific settings."
 msgstr ""
 
-#: ravenscar-thread.c:612
+#: ravenscar-thread.c:728
 msgid "Enable or disable support for GNAT Ravenscar tasks."
 msgstr ""
 
-#: ravenscar-thread.c:613
+#: ravenscar-thread.c:729
 msgid "Show whether support for GNAT Ravenscar tasks is enabled."
 msgstr ""
 
-#: ravenscar-thread.c:615
+#: ravenscar-thread.c:731
 msgid ""
 "Enable or disable support for task/thread switching with the GNAT\n"
 "Ravenscar run-time library for bareboard configuration."
 msgstr ""
 
-#: record-btrace.c:48
+#: record-btrace.c:50
 msgid "Branch tracing target"
 msgstr ""
 
-#: record-btrace.c:49
+#: record-btrace.c:51
 msgid "Collect control-flow trace and provide the execution history."
 msgstr ""
 
-#: record-btrace.c:236
+#: record-btrace.c:238
 msgid "Internal error: bad record btrace cpu state."
 msgstr ""
 
-#: record-btrace.c:502 record-btrace.c:518
+#: record-btrace.c:509 record-btrace.c:525
 #, possible-c-format
 msgid "Buffer size: %u%s.\n"
 msgstr ""
 
-#: record-btrace.c:527
+#: record-btrace.c:534
 #, possible-c-format
 msgid "Recording format: %s.\n"
 msgstr ""
 
-#: record-btrace.c:597
+#: record-btrace.c:605
 #, possible-c-format
 msgid ""
 "Recorded %u instructions in %u functions (%u gaps) for thread %s (%s).\n"
 msgstr ""
 
-#: record-btrace.c:603
+#: record-btrace.c:611
 #, possible-c-format
 msgid "Replay in progress.  At instruction %u.\n"
 msgstr ""
 
-#: record-btrace.c:615
+#: record-btrace.c:623
 msgid "["
 msgstr ""
 
-#: record-btrace.c:619
+#: record-btrace.c:627
 msgid "decode error ("
 msgstr ""
 
-#: record-btrace.c:621
+#: record-btrace.c:629
 msgid "): "
 msgstr ""
 
-#: record-btrace.c:624
+#: record-btrace.c:632
 msgid "]\n"
 msgstr ""
 
-#: record-btrace.c:864 record-btrace.c:990
+#: record-btrace.c:881 record-btrace.c:1007
 msgid "Bad record instruction-history-size."
 msgstr ""
 
-#: record-btrace.c:924 record-btrace.c:1281
+#: record-btrace.c:941 record-btrace.c:1298
 msgid "At the start of the branch trace record.\n"
 msgstr ""
 
-#: record-btrace.c:926 record-btrace.c:1283
+#: record-btrace.c:943 record-btrace.c:1300
 msgid "At the end of the branch trace record.\n"
 msgstr ""
 
-#: record-btrace.c:953 record-btrace.c:956 record-btrace.c:1310
-#: record-btrace.c:1313
+#: record-btrace.c:970 record-btrace.c:973 record-btrace.c:1327
+#: record-btrace.c:1330
 msgid "Bad range."
 msgstr ""
 
-#: record-btrace.c:962 record-btrace.c:1319
+#: record-btrace.c:979 record-btrace.c:1336
 msgid "Range out of bounds."
 msgstr ""
 
-#: record-btrace.c:1189
+#: record-btrace.c:1206
 msgid "\tinst "
 msgstr ""
 
-#: record-btrace.c:1195
+#: record-btrace.c:1212
 msgid "\tat "
 msgstr ""
 
-#: record-btrace.c:1218 record-btrace.c:1347
+#: record-btrace.c:1235 record-btrace.c:1364
 msgid "Bad record function-call-history-size."
 msgstr ""
 
-#: record-btrace.c:1560
+#: record-btrace.c:1581
 msgid "Cannot write registers while replaying."
 msgstr ""
 
-#: record-btrace.c:1725
+#: record-btrace.c:1746
 msgid "Registers are not available in btrace record history"
 msgstr ""
 
-#: record-btrace.c:1733
+#: record-btrace.c:1754
 msgid "No caller in btrace record history"
 msgstr ""
 
-#: record-btrace.c:2444
+#: record-btrace.c:2470
 msgid "invalid stepping type."
 msgstr ""
 
-#: record-btrace.c:2828
+#: record-btrace.c:2858
 msgid "Instruction number out of range."
 msgstr ""
 
-#: record-btrace.c:2951
-msgid "\"set record btrace\" must be followed by an appropriate subcommand.\n"
-msgstr ""
-
-#: record-btrace.c:2971
+#: record-btrace.c:2982
 #, possible-c-format
 msgid "Replay memory access is %s.\n"
 msgstr ""
 
-#: record-btrace.c:2981 record-btrace.c:2992 record-btrace.c:3012
-#: record-btrace.c:3017 record-btrace.c:3047
+#: record-btrace.c:2992 record-btrace.c:3003 record-btrace.c:3023
+#: record-btrace.c:3028 record-btrace.c:3058
 #, possible-c-format
 msgid "Trailing junk: '%s'."
 msgstr ""
 
-#: record-btrace.c:3022
+#: record-btrace.c:3033
 msgid "Bad format.  See \"help set record btrace cpu\"."
 msgstr ""
 
-#: record-btrace.c:3025
+#: record-btrace.c:3036
 msgid "Cpu family too big."
 msgstr ""
 
-#: record-btrace.c:3028
+#: record-btrace.c:3039
 msgid "Cpu model too big."
 msgstr ""
 
-#: record-btrace.c:3031
+#: record-btrace.c:3042
 msgid "Cpu stepping too big."
 msgstr ""
 
-#: record-btrace.c:3052
+#: record-btrace.c:3063
 msgid "btrace cpu is 'auto'.\n"
 msgstr ""
 
-#: record-btrace.c:3056
+#: record-btrace.c:3067
 msgid "btrace cpu is 'none'.\n"
 msgstr ""
 
-#: record-btrace.c:3064
+#: record-btrace.c:3075
 #, possible-c-format
 msgid "btrace cpu is 'intel: %u/%u'.\n"
 msgstr ""
 
-#: record-btrace.c:3068
+#: record-btrace.c:3079
 #, possible-c-format
 msgid "btrace cpu is 'intel: %u/%u/%u'.\n"
 msgstr ""
 
-#: record-btrace.c:3076
+#: record-btrace.c:3087
 msgid "Internal error: bad cpu state."
 msgstr ""
 
-#: record-btrace.c:3084
-msgid ""
-"\"set record btrace bts\" must be followed by an appropriate subcommand.\n"
-msgstr ""
-
-#: record-btrace.c:3103
-msgid ""
-"\"set record btrace pt\" must be followed by an appropriate subcommand.\n"
-msgstr ""
-
-#: record-btrace.c:3124
+#: record-btrace.c:3097
 #, possible-c-format
 msgid "The record/replay bts buffer size is %s.\n"
 msgstr ""
 
-#: record-btrace.c:3135
+#: record-btrace.c:3108
 #, possible-c-format
 msgid "The record/replay pt buffer size is %s.\n"
 msgstr ""
 
-#: record-btrace.c:3145
+#: record-btrace.c:3119
 msgid "Start branch trace recording."
 msgstr ""
 
-#: record-btrace.c:3150
+#: record-btrace.c:3124
 msgid ""
 "Start branch trace recording in Branch Trace Store (BTS) format.\n"
 "\n"
@@ -23962,30 +23845,30 @@ msgid ""
 "This format may not be available on all processors."
 msgstr ""
 
-#: record-btrace.c:3158
+#: record-btrace.c:3132
 msgid ""
 "Start branch trace recording in Intel Processor Trace format.\n"
 "\n"
 "This format may not be available on all processors."
 msgstr ""
 
-#: record-btrace.c:3165 record.c:811 record-full.c:2834
+#: record-btrace.c:3139 record.c:795 record-full.c:2829
 msgid "Set record options."
 msgstr ""
 
-#: record-btrace.c:3169 record.c:815 record-full.c:2838
+#: record-btrace.c:3143 record.c:799 record-full.c:2833
 msgid "Show record options."
 msgstr ""
 
-#: record-btrace.c:3173
+#: record-btrace.c:3147
 msgid "Set what memory accesses are allowed during replay."
 msgstr ""
 
-#: record-btrace.c:3174
+#: record-btrace.c:3148
 msgid "Show what memory accesses are allowed during replay."
 msgstr ""
 
-#: record-btrace.c:3176
+#: record-btrace.c:3150
 msgid ""
 "Default is READ-ONLY.\n"
 "\n"
@@ -23998,7 +23881,7 @@ msgid ""
 "replay."
 msgstr ""
 
-#: record-btrace.c:3188
+#: record-btrace.c:3162
 msgid ""
 "Set the cpu to be used for trace decode.\n"
 "\n"
@@ -24015,35 +23898,35 @@ msgid ""
 "When set to \"none\", errata workarounds are disabled."
 msgstr ""
 
-#: record-btrace.c:3201
+#: record-btrace.c:3175
 msgid "Automatically determine the cpu to be used for trace decode."
 msgstr ""
 
-#: record-btrace.c:3205
+#: record-btrace.c:3179
 msgid "Do not enable errata workarounds for trace decode."
 msgstr ""
 
-#: record-btrace.c:3209
+#: record-btrace.c:3183
 msgid "Show the cpu to be used for trace decode."
 msgstr ""
 
-#: record-btrace.c:3214
+#: record-btrace.c:3188
 msgid "Set record btrace bts options."
 msgstr ""
 
-#: record-btrace.c:3219
+#: record-btrace.c:3194
 msgid "Show record btrace bts options."
 msgstr ""
 
-#: record-btrace.c:3225
+#: record-btrace.c:3201
 msgid "Set the record/replay bts buffer size."
 msgstr ""
 
-#: record-btrace.c:3226
+#: record-btrace.c:3202
 msgid "Show the record/replay bts buffer size."
 msgstr ""
 
-#: record-btrace.c:3226
+#: record-btrace.c:3202
 msgid ""
 "When starting recording request a trace buffer of this size.  The actual "
 "buffer size may differ from the requested size.  Use \"info record\" to see "
@@ -24055,23 +23938,23 @@ msgid ""
 "The trace buffer size may not be changed while recording."
 msgstr ""
 
-#: record-btrace.c:3238
+#: record-btrace.c:3214
 msgid "Set record btrace pt options."
 msgstr ""
 
-#: record-btrace.c:3243
+#: record-btrace.c:3220
 msgid "Show record btrace pt options."
 msgstr ""
 
-#: record-btrace.c:3249
+#: record-btrace.c:3227
 msgid "Set the record/replay pt buffer size."
 msgstr ""
 
-#: record-btrace.c:3250
+#: record-btrace.c:3228
 msgid "Show the record/replay pt buffer size."
 msgstr ""
 
-#: record-btrace.c:3250
+#: record-btrace.c:3228
 msgid ""
 "Bigger buffers allow longer recording but also take more time to process the "
 "recorded execution.\n"
@@ -24122,108 +24005,104 @@ msgstr ""
 msgid "Process record is stopped and all execution logs are deleted.\n"
 msgstr ""
 
-#: record.c:322
-msgid "\"set record\" must be followed by an appropriate subcommand.\n"
-msgstr ""
-
-#: record.c:345
+#: record.c:328
 msgid "No record target is currently active.\n"
 msgstr ""
 
-#: record.c:349
+#: record.c:332
 #, possible-c-format
 msgid "Active record target: %s\n"
 msgstr ""
 
-#: record.c:384
+#: record.c:367
 msgid "Command requires an argument (insn number to go to)."
 msgstr ""
 
-#: record.c:521 record.c:654
+#: record.c:504 record.c:637
 #, possible-c-format
 msgid "Invalid modifier: %c."
 msgstr ""
 
-#: record.c:744
+#: record.c:727
 #, possible-c-format
 msgid "integer %u out of range"
 msgstr ""
 
-#: record.c:781
+#: record.c:765
 msgid "Set debugging of record/replay feature."
 msgstr ""
 
-#: record.c:782
+#: record.c:766
 msgid "Show debugging of record/replay feature."
 msgstr ""
 
-#: record.c:783
+#: record.c:767
 msgid "When enabled, debugging output for record/replay feature is displayed."
 msgstr ""
 
-#: record.c:789
+#: record.c:773
 msgid "Set number of instructions to print in \"record instruction-history\"."
 msgstr ""
 
-#: record.c:790
+#: record.c:774
 msgid "Show number of instructions to print in \"record instruction-history\"."
 msgstr ""
 
-#: record.c:791
+#: record.c:775
 msgid ""
 "A size of \"unlimited\" means unlimited instructions.  The default is 10."
 msgstr ""
 
-#: record.c:797
+#: record.c:781
 msgid "Set number of function to print in \"record function-call-history\"."
 msgstr ""
 
-#: record.c:798
+#: record.c:782
 msgid "Show number of functions to print in \"record function-call-history\"."
 msgstr ""
 
-#: record.c:799
+#: record.c:783
 msgid "A size of \"unlimited\" means unlimited lines.  The default is 10."
 msgstr ""
 
-#: record.c:805
+#: record.c:789
 msgid "Start recording."
 msgstr ""
 
-#: record.c:819
+#: record.c:803
 msgid "Info record options."
 msgstr ""
 
-#: record.c:824
+#: record.c:808
 msgid ""
 "Save the execution log to a file.\n"
 "Usage: record save [FILENAME]\n"
 "Default filename is 'gdb_record.PROCESS_ID'."
 msgstr ""
 
-#: record.c:831
+#: record.c:815
 msgid "Delete the rest of execution log and start recording it anew."
 msgstr ""
 
-#: record.c:837
+#: record.c:821
 msgid "Stop the record/replay target."
 msgstr ""
 
-#: record.c:841
+#: record.c:825
 msgid ""
 "Restore the program to its state at instruction number N.\n"
 "Argument is instruction number, as shown by 'info record'."
 msgstr ""
 
-#: record.c:847
+#: record.c:831
 msgid "Go to the beginning of the execution log."
 msgstr ""
 
-#: record.c:852
+#: record.c:836
 msgid "Go to the end of the execution log."
 msgstr ""
 
-#: record.c:855
+#: record.c:839
 msgid ""
 "Print disassembled instructions stored in the execution log.\n"
 "With a /m or /s modifier, source lines are included (if available).\n"
@@ -24244,7 +24123,7 @@ msgid ""
 "instruction-history-size\"."
 msgstr ""
 
-#: record.c:875
+#: record.c:859
 msgid ""
 "Prints the execution history at function granularity.\n"
 "It prints one line for each sequence of instructions that belong to the same "
@@ -24266,209 +24145,205 @@ msgid ""
 "call-history-size\"."
 msgstr ""
 
-#: record-full.c:211
+#: record-full.c:212
 msgid "Process record and replay target"
 msgstr ""
 
-#: record-full.c:213
+#: record-full.c:214
 msgid "Log program while executing and replay execution from log."
 msgstr ""
 
-#: record-full.c:690
+#: record-full.c:691
 msgid ""
 "Do you want to auto delete previous execution log entries when record/replay "
 "buffer becomes full (record full stop-at-limit)?"
 msgstr ""
 
-#: record-full.c:693
+#: record-full.c:694
 msgid "Process record: stopped by user."
 msgstr ""
 
-#: record-full.c:760
+#: record-full.c:761
 msgid "Process record: inferior program stopped."
 msgstr ""
 
-#: record-full.c:762 record-full.c:1545 record-full.c:1554 record-full.c:1560
+#: record-full.c:763 record-full.c:1558 record-full.c:1567 record-full.c:1573
 msgid "Process record: failed to record execution log."
 msgstr ""
 
-#: record-full.c:867
+#: record-full.c:868
 #, possible-c-format
 msgid "Process record: error writing memory at addr = %s len = %d."
 msgstr ""
 
-#: record-full.c:950
+#: record-full.c:951
 msgid "Process record: the program is not being run."
 msgstr ""
 
-#: record-full.c:952
+#: record-full.c:953
 msgid "Process record target can't debug inferior in non-stop mode (non-stop)."
 msgstr ""
 
-#: record-full.c:956
+#: record-full.c:957
 msgid ""
 "Process record: the current architecture doesn't support record function."
 msgstr ""
 
-#: record-full.c:1586
+#: record-full.c:1599
 msgid ""
 "Because GDB is in replay mode, changing the value of a register will make "
 "the execution log unusable from this point onward.  Change all registers?"
 msgstr ""
 
-#: record-full.c:1592
+#: record-full.c:1605
 #, possible-c-format
 msgid ""
 "Because GDB is in replay mode, changing the value of a register will make "
 "the execution log unusable from this point onward.  Change register %s?"
 msgstr ""
 
-#: record-full.c:1614 record-full.c:1648
+#: record-full.c:1627 record-full.c:1661
 msgid "Process record canceled the operation."
 msgstr ""
 
 #. Let user choose if he wants to write memory or not.
-#: record-full.c:1644
+#: record-full.c:1657
 #, possible-c-format
 msgid ""
 "Because GDB is in replay mode, writing to memory will make the execution log "
 "unusable from this point onward.  Write memory at address %s?"
 msgstr ""
 
-#: record-full.c:1879 reverse.c:255
+#: record-full.c:1892 reverse.c:255
 #, possible-c-format
 msgid "Unbalanced quotes: %s"
 msgstr ""
 
-#: record-full.c:1908
+#: record-full.c:1921
 msgid "Replay mode:\n"
 msgstr ""
 
-#: record-full.c:1910
+#: record-full.c:1923
 msgid "Record mode:\n"
 msgstr ""
 
 #. Display instruction number for first instruction in the log.
-#: record-full.c:1922
+#: record-full.c:1935
 #, possible-c-format
 msgid "Lowest recorded instruction number is %s.\n"
 msgstr ""
 
-#: record-full.c:1927
+#: record-full.c:1940
 #, possible-c-format
 msgid "Current instruction number is %s.\n"
 msgstr ""
 
 #. Display instruction number for last instruction in the log.
-#: record-full.c:1931
+#: record-full.c:1944
 #, possible-c-format
 msgid "Highest recorded instruction number is %s.\n"
 msgstr ""
 
 #. Display log count.
-#: record-full.c:1935
+#: record-full.c:1948
 #, possible-c-format
 msgid "Log contains %u instructions.\n"
 msgstr ""
 
-#: record-full.c:1939
+#: record-full.c:1952
 msgid "No instructions have been logged.\n"
 msgstr ""
 
 #. Display max log size.
-#: record-full.c:1942
+#: record-full.c:1955
 #, possible-c-format
 msgid "Max logged instructions is %u.\n"
 msgstr ""
 
-#: record-full.c:1986
+#: record-full.c:1999
 msgid "Target insn not found."
 msgstr ""
 
-#: record-full.c:1988
+#: record-full.c:2001
 msgid "Already at target insn."
 msgstr ""
 
-#: record-full.c:1991
+#: record-full.c:2004
 #, possible-c-format
 msgid "Go forward to insn number %s\n"
 msgstr ""
 
-#: record-full.c:1997
+#: record-full.c:2010
 #, possible-c-format
 msgid "Go backward to insn number %s\n"
 msgstr ""
 
-#: record-full.c:2122 record-full.c:2212 target.c:523
+#: record-full.c:2135 record-full.c:2225 target.c:514
 msgid "You can't do that without a process to debug."
 msgstr ""
 
-#: record-full.c:2299
+#: record-full.c:2312
 #, possible-c-format
 msgid "Failed to read %d bytes from core file %s ('%s')."
 msgstr ""
 
-#: record-full.c:2360
+#: record-full.c:2373
 #, possible-c-format
 msgid "Version mis-match or file format error in core file %s."
 msgstr ""
 
-#: record-full.c:2467
+#: record-full.c:2480
 #, possible-c-format
 msgid "Bad entry type in core file %s."
 msgstr ""
 
-#: record-full.c:2492
+#: record-full.c:2505
 #, possible-c-format
 msgid "Auto increase record/replay buffer limit to %u."
 msgstr ""
 
 #. Succeeded.
-#: record-full.c:2497
+#: record-full.c:2510
 #, possible-c-format
 msgid "Restored records from core file %s.\n"
 msgstr ""
 
-#: record-full.c:2513
+#: record-full.c:2526
 #, possible-c-format
 msgid "Failed to write %d bytes to core file %s ('%s')."
 msgstr ""
 
-#: record-full.c:2599
+#: record-full.c:2612
 #, possible-c-format
 msgid "Failed to create 'precord' section for corefile %s: %s"
 msgstr ""
 
 #. Succeeded.
-#: record-full.c:2728
+#: record-full.c:2741
 #, possible-c-format
 msgid "Saved core file %s with execution log.\n"
 msgstr ""
 
-#: record-full.c:2789
-msgid "\"set record full\" must be followed by an appropriate subcommand.\n"
-msgstr ""
-
-#: record-full.c:2818
+#: record-full.c:2813
 msgid "Start full execution recording."
 msgstr ""
 
-#: record-full.c:2822
+#: record-full.c:2817
 msgid ""
 "Restore the execution log from a file.\n"
 "Argument is filename.  File must be created with 'record save'."
 msgstr ""
 
-#: record-full.c:2843
+#: record-full.c:2838
 msgid "Set whether record/replay stops when record/replay buffer becomes full."
 msgstr ""
 
-#: record-full.c:2844
+#: record-full.c:2839
 msgid ""
 "Show whether record/replay stops when record/replay buffer becomes full."
 msgstr ""
 
-#: record-full.c:2846
+#: record-full.c:2841
 msgid ""
 "Default is ON.\n"
 "When ON, if the record/replay buffer becomes full, ask user what to do.\n"
@@ -24476,82 +24351,86 @@ msgid ""
 "delete the oldest recorded instruction to make room for each new one."
 msgstr ""
 
-#: record-full.c:2863
+#: record-full.c:2858
 msgid "Set record/replay buffer limit."
 msgstr ""
 
-#: record-full.c:2864
+#: record-full.c:2859
 msgid "Show record/replay buffer limit."
 msgstr ""
 
-#: record-full.c:2864
+#: record-full.c:2859
 msgid ""
 "Set the maximum number of instructions to be stored in the\n"
 "record/replay buffer.  A value of either \"unlimited\" or zero means no\n"
 "limit.  Default is 200000."
 msgstr ""
 
-#: record-full.c:2881
+#: record-full.c:2876
 msgid ""
 "Set whether query if PREC cannot record memory change of next instruction."
 msgstr ""
 
-#: record-full.c:2883
+#: record-full.c:2878
 msgid ""
 "Show whether query if PREC cannot record memory change of next instruction."
 msgstr ""
 
-#: record-full.c:2885
+#: record-full.c:2880
 msgid ""
 "Default is OFF.\n"
 "When ON, query if PREC cannot record memory change of next instruction."
 msgstr ""
 
-#: regcache.c:1185
+#: regcache.c:1297
 msgid "PC register is not available"
 msgstr ""
 
-#: regcache.c:1191
+#: regcache.c:1303
 msgid "regcache_read_pc: Unable to find PC"
 msgstr ""
 
-#: regcache.c:1207
+#: regcache.c:1337
 msgid "regcache_write_pc: Unable to update PC"
 msgstr ""
 
-#: regcache.c:1261
+#: regcache.c:1391
 msgid "Register cache flushed.\n"
 msgstr ""
 
-#: regcache.c:1810
+#: regcache.c:1917
+msgid "target already pushed"
+msgstr ""
+
+#: regcache.c:2086
 msgid "Force gdb to flush its register cache (maintainer command)."
 msgstr ""
 
-#: regcache-dump.c:312
+#: regcache-dump.c:313
 msgid ""
 "Print the internal register configuration.\n"
 "Takes an optional file parameter."
 msgstr ""
 
-#: regcache-dump.c:316
+#: regcache-dump.c:317
 msgid ""
 "Print the internal register configuration including raw values.\n"
 "Takes an optional file parameter."
 msgstr ""
 
-#: regcache-dump.c:321
+#: regcache-dump.c:322
 msgid ""
 "Print the internal register configuration including cooked values.\n"
 "Takes an optional file parameter."
 msgstr ""
 
-#: regcache-dump.c:326
+#: regcache-dump.c:327
 msgid ""
 "Print the internal register configuration including each register's group.\n"
 "Takes an optional file parameter."
 msgstr ""
 
-#: regcache-dump.c:331
+#: regcache-dump.c:332
 msgid ""
 "Print the internal register configuration including remote register number "
 "and g/G packets offset.\n"
@@ -24562,164 +24441,164 @@ msgstr ""
 msgid "maintenance print reggroups"
 msgstr ""
 
-#: reggroups.c:339
+#: reggroups.c:340
 msgid ""
 "Print the internal register group names.\n"
 "Takes an optional file parameter."
 msgstr ""
 
 #. The remote target.
-#: remote.c:83
+#: remote.c:84
 msgid ""
 "Use a remote computer via a serial line, using a gdb-specific protocol.\n"
 "Specify the serial device it is connected to\n"
 "(e.g. /dev/ttyS0, /dev/ttya, COM1, etc.)."
 msgstr ""
 
-#: remote.c:393
+#: remote.c:397
 msgid "Remote serial target in gdb-specific protocol"
 msgstr ""
 
-#: remote.c:943
+#: remote.c:951
 msgid "Extended remote serial target in gdb-specific protocol"
 msgstr ""
 
 #. malformed packet error
 #. general case:
-#: remote.c:1104
+#: remote.c:1112
 msgid "remote.c: error in outgoing packet."
 msgstr ""
 
-#: remote.c:1106
+#: remote.c:1114
 #, possible-c-format
 msgid "remote.c: error in outgoing packet at field #%ld."
 msgstr ""
 
-#: remote.c:1109
+#: remote.c:1117
 #, possible-c-format
 msgid "Target returns error code '%s'."
 msgstr ""
 
-#: remote.c:1140
+#: remote.c:1148
 #, possible-c-format
 msgid "invalid qRelocInsn packet: %s"
 msgstr ""
 
-#: remote.c:1169
+#: remote.c:1177
 msgid "warning: relocating instruction: "
 msgstr ""
 
-#: remote.c:1454
+#: remote.c:1462
 msgid ""
 "Send the ASCII ETX character (Ctrl-c) to the remote target to interrupt the "
 "execution of the program.\n"
 msgstr ""
 
-#: remote.c:1459
+#: remote.c:1467
 msgid ""
 "send a break signal to the remote target to interrupt the execution of the "
 "program.\n"
 msgstr ""
 
-#: remote.c:1463
+#: remote.c:1471
 msgid ""
 "Send a break signal and 'g' a.k.a. Magic SysRq g to the remote target to "
 "interrupt the execution of Linux kernel.\n"
 msgstr ""
 
-#: remote.c:1468 remote.c:4219
+#: remote.c:1476 remote.c:4269
 #, possible-c-format
 msgid "Invalid value for interrupt_sequence_mode: %s."
 msgstr ""
 
-#: remote.c:1599
+#: remote.c:1607
 msgid "Argument required (integer, `fixed' or `limited')."
 msgstr ""
 
-#: remote.c:1612
+#: remote.c:1620
 #, possible-c-format
 msgid "Invalid %s (bad syntax)."
 msgstr ""
 
-#: remote.c:1627
+#: remote.c:1635
 #, possible-c-format
 msgid ""
 "The target may not be able to correctly handle a %s\n"
 "of %ld bytes. Change the packet size? "
 msgstr ""
 
-#: remote.c:1630
+#: remote.c:1638
 msgid "Packet size not changed."
 msgstr ""
 
-#: remote.c:1641
+#: remote.c:1649
 #, possible-c-format
 msgid "The %s is 0 (default). "
 msgstr ""
 
-#: remote.c:1643
+#: remote.c:1651
 #, possible-c-format
 msgid "The %s is %ld. "
 msgstr ""
 
-#: remote.c:1645
+#: remote.c:1653
 #, possible-c-format
 msgid "Packets are fixed at %ld bytes.\n"
 msgstr ""
 
-#: remote.c:1652
+#: remote.c:1660
 #, possible-c-format
 msgid "Packets are limited to %ld bytes.\n"
 msgstr ""
 
-#: remote.c:1684
+#: remote.c:1693
 #, possible-c-format
 msgid "The maximum number of target hardware watchpoints is %s.\n"
 msgstr ""
 
-#: remote.c:1695
+#: remote.c:1704
 #, possible-c-format
 msgid "The maximum length (in bytes) of a target hardware watchpoint is %s.\n"
 msgstr ""
 
-#: remote.c:1706
+#: remote.c:1715
 #, possible-c-format
 msgid "The maximum number of target hardware breakpoints is %s.\n"
 msgstr ""
 
-#: remote.c:1723
+#: remote.c:1732
 #, possible-c-format
 msgid "Number of remote packet characters to display is %s.\n"
 msgstr ""
 
-#: remote.c:1804
+#: remote.c:1814
 #, possible-c-format
 msgid "Support for the `%s' packet is auto-detected, currently %s.\n"
 msgstr ""
 
-#: remote.c:1810
+#: remote.c:1820
 #, possible-c-format
 msgid "Support for the `%s' packet is currently %s.\n"
 msgstr ""
 
-#: remote.c:1895
+#: remote.c:1905
 msgid "packet_ok: attempt to use a disabled packet"
 msgstr ""
 
 #. If the stub previously indicated that the packet was
 #. supported then there is a protocol error.
-#: remote.c:1919
+#: remote.c:1929
 #, possible-c-format
 msgid "Protocol error: %s (%s) conflicting enabled responses."
 msgstr ""
 
 #. The user set it wrong.
-#: remote.c:1925
+#: remote.c:1935
 #, possible-c-format
 msgid "Enabled packet %s (%s) not recognized by stub"
 msgstr ""
 
-#: remote.c:2148
+#: remote.c:2161
 #, possible-c-format
 msgid "Could not find config for %s"
 msgstr ""
@@ -24728,39 +24607,39 @@ msgstr ""
 #. We're out of sync with the target now.  Did it continue
 #. or not?  We can't tell which thread it was in non-stop,
 #. so just ignore this.
-#: remote.c:2320 remote.c:3930 remote.c:3955 remote.c:4067 remote.c:5279
-#: remote.c:7666 remote.c:7764 remote.c:10530 remote.c:14110
+#: remote.c:2333 remote.c:3993 remote.c:4018 remote.c:4121 remote.c:5348
+#: remote.c:7794 remote.c:7903 remote.c:10654 remote.c:14249
 #, possible-c-format
 msgid "Remote failure reply: %s"
 msgstr ""
 
-#: remote.c:2960
+#: remote.c:3000
 #, possible-c-format
 msgid "invalid remote ptid: %s"
 msgstr ""
 
-#: remote.c:3243
+#: remote.c:3283
 msgid "Incomplete response to threadinfo request."
 msgstr ""
 
 #. This is an answer to a different request.
-#: remote.c:3246
+#: remote.c:3286
 msgid "ERROR RMT Thread info mismatch."
 msgstr ""
 
-#: remote.c:3260
+#: remote.c:3300
 msgid "ERROR RMT: threadinfo tag mismatch."
 msgstr ""
 
-#: remote.c:3268
+#: remote.c:3308
 msgid "ERROR RMT: length of threadid is not 16."
 msgstr ""
 
-#: remote.c:3283
+#: remote.c:3323
 msgid "ERROR RMT: 'exists' length too long."
 msgstr ""
 
-#: remote.c:3307
+#: remote.c:3347
 msgid "ERROR RMT: unknown thread info tag."
 msgstr ""
 
@@ -24772,907 +24651,918 @@ msgstr ""
 #. exit
 #. wait for packet, then exit
 #.
-#: remote.c:3419
+#: remote.c:3459
 msgid "HMM: threadlist did not echo arg thread, dropping it."
 msgstr ""
 
-#: remote.c:3426
+#: remote.c:3466
 msgid "RMT ERROR : failed to get remote thread list."
 msgstr ""
 
-#: remote.c:3434
+#: remote.c:3474
 msgid "RMT ERROR: threadlist response longer than requested."
 msgstr ""
 
-#: remote.c:3462
+#: remote.c:3502
 msgid "Remote fetch threadlist -infinite loop-."
 msgstr ""
 
-#: remote.c:3697
+#: remote.c:3737
 msgid "threads"
 msgstr ""
 
-#: remote.c:3846
+#: remote.c:3909
 msgid "remote_threads_extra_info"
 msgstr ""
 
-#: remote.c:4102 remote.c:4129
+#: remote.c:4156 remote.c:4183
 #, possible-c-format
 msgid "Target reported unsupported offsets: %s"
 msgstr ""
 
-#: remote.c:4127
+#: remote.c:4181
 #, possible-c-format
 msgid "Malformed response to offset query, %s"
 msgstr ""
 
-#: remote.c:4175
+#: remote.c:4228
 msgid "Can not handle qOffsets TextSeg response with this symbol file"
 msgstr ""
 
-#: remote.c:4554
+#: remote.c:4605
 #, possible-c-format
 msgid "Remote replied unexpectedly to '%s': %s"
 msgstr ""
 
-#: remote.c:4607
+#: remote.c:4658
 msgid "Non-stop mode requested, but remote does not support non-stop"
 msgstr ""
 
-#: remote.c:4614
+#: remote.c:4665
 #, possible-c-format
 msgid "Remote refused setting non-stop mode with: %s"
 msgstr ""
 
-#: remote.c:4631
+#: remote.c:4682
 #, possible-c-format
 msgid "Remote refused setting all-stop mode with: %s"
 msgstr ""
 
-#: remote.c:4655 remote.c:4764
+#: remote.c:4706 remote.c:4822
 msgid "The target is not running (try extended-remote?)"
 msgstr ""
 
-#: remote.c:4801
+#: remote.c:4859
 msgid "Trace is already running on the target.\n"
 msgstr ""
 
-#: remote.c:4944
+#: remote.c:5013
 msgid ""
 "The remote protocol may be unreliable over UDP.\n"
 "Some events may be lost, rendering further debugging impossible."
 msgstr ""
 
-#: remote.c:4980
+#: remote.c:5049
 #, possible-c-format
 msgid "Remote refused setting permissions with: %s"
 msgstr ""
 
-#: remote.c:5019
+#: remote.c:5088
 #, possible-c-format
 msgid "Remote qSupported response supplied an unexpected value for \"%s\"."
 msgstr ""
 
-#: remote.c:5041
+#: remote.c:5110
 #, possible-c-format
 msgid "Remote target reported \"%s\" without a size."
 msgstr ""
 
-#: remote.c:5050
+#: remote.c:5119
 #, possible-c-format
 msgid "Remote target reported \"%s\" with a bad size: \"%s\"."
 msgstr ""
 
-#: remote.c:5309
+#: remote.c:5378
 msgid "empty item in \"qSupported\" response"
 msgstr ""
 
-#: remote.c:5340
+#: remote.c:5409
 #, possible-c-format
 msgid "unrecognized item \"%s\" in \"qSupported\" response"
 msgstr ""
 
-#: remote.c:5413
+#: remote.c:5482
 msgid ""
 "The target is not responding to GDB commands.\n"
 "Stop debugging it? "
 msgstr ""
 
-#: remote.c:5452 remote.c:6744
+#: remote.c:5531 remote.c:6827
 msgid "Disconnected from target."
 msgstr ""
 
-#: remote.c:5461
+#: remote.c:5540
 msgid ""
 "To open a remote debug connection, you need to specify what\n"
 "serial device is attached to the remote system\n"
 "(e.g. /dev/ttyS0, /dev/ttya, COM1, etc.)."
 msgstr ""
 
-#: remote.c:5471
+#: remote.c:5550
 msgid "Already connected to a remote target.  Disconnect? "
 msgstr ""
 
-#: remote.c:5472
+#: remote.c:5551
 msgid "Still connected."
 msgstr ""
 
-#: remote.c:5634
+#: remote.c:5712
 msgid "Remote doesn't know how to detach"
 msgstr ""
 
-#: remote.c:5636
+#: remote.c:5714
 msgid "Can't detach process."
 msgstr ""
 
-#: remote.c:5653
+#: remote.c:5731
 msgid "No process to detach from."
 msgstr ""
 
-#: remote.c:5662
+#: remote.c:5740
 msgid "Ending remote debugging.\n"
 msgstr ""
 
-#: remote.c:5763
+#: remote.c:5842
 msgid "Argument given to \"disconnect\" when remotely debugging."
 msgstr ""
 
-#: remote.c:5791 remote.c:5825
+#: remote.c:5870 remote.c:5904
 msgid "This target does not support attaching to a process"
 msgstr ""
 
-#: remote.c:5820
+#: remote.c:5899
 #, possible-c-format
 msgid "Attaching to %s failed with: %s"
 msgstr ""
 
-#: remote.c:5827
+#: remote.c:5906
 #, possible-c-format
 msgid "Attaching to %s failed"
 msgstr ""
 
-#: remote.c:6106
+#: remote.c:6186
 #, possible-c-format
 msgid " - Can't pass signal %d to target in reverse: ignored."
 msgstr ""
 
-#: remote.c:6110
+#: remote.c:6190
 msgid "Remote reverse-step not supported."
 msgstr ""
 
-#: remote.c:6112
+#: remote.c:6192
 msgid "Remote reverse-continue not supported."
 msgstr ""
 
-#: remote.c:6209 remote.c:6362
+#: remote.c:6289 remote.c:6442
 #, possible-c-format
 msgid "Unexpected vCont reply in non-stop mode: %s"
 msgstr ""
 
-#: remote.c:6590
+#: remote.c:6673
 msgid "Remote server does not support stopping threads"
 msgstr ""
 
-#: remote.c:6623
+#: remote.c:6706
 #, possible-c-format
 msgid "Stopping %s failed: %s"
 msgstr ""
 
-#: remote.c:6672
+#: remote.c:6755
 msgid "No support for interrupting the remote target."
 msgstr ""
 
-#: remote.c:6674
+#: remote.c:6757
 #, possible-c-format
 msgid "Interrupting target failed: %s"
 msgstr ""
 
-#: remote.c:6740
+#: remote.c:6823
 msgid ""
 "The target is not responding to interrupt requests.\n"
 "Stop debugging it? "
 msgstr ""
 
-#: remote.c:6749
+#: remote.c:6832
 msgid ""
 "Interrupted while waiting for the program.\n"
 "Give up waiting? "
 msgstr ""
 
 #. We got an unknown stop reply.
-#: remote.c:6850
+#: remote.c:6933
 msgid "Unknown stop reply"
 msgstr ""
 
-#: remote.c:7187
+#: remote.c:7270
 #, possible-c-format
 msgid ""
 "Malformed packet(a) (missing colon): %s\n"
 "Packet: '%s'\n"
 msgstr ""
 
-#: remote.c:7191
+#: remote.c:7274
 #, possible-c-format
 msgid ""
 "Malformed packet(a) (missing register number): %s\n"
 "Packet: '%s'\n"
 msgstr ""
 
-#: remote.c:7235
+#: remote.c:7318
 msgid "Unexpected swbreak stop reason"
 msgstr ""
 
-#: remote.c:7249
+#: remote.c:7332
 msgid "Unexpected hwbreak stop reason"
 msgstr ""
 
-#: remote.c:7386
+#: remote.c:7466
 #, possible-c-format
 msgid ""
 "Remote sent bad register number %s: %s\n"
 "Packet: '%s'\n"
 msgstr ""
 
-#: remote.c:7399
+#: remote.c:7479
 #, possible-c-format
 msgid "Remote reply is too short: %s"
 msgstr ""
 
-#: remote.c:7412
+#: remote.c:7492
 #, possible-c-format
 msgid ""
 "Remote register badly formatted: %s\n"
 "here: %s"
 msgstr ""
 
-#: remote.c:7441
+#: remote.c:7521
 #, possible-c-format
 msgid "stop reply packet badly formatted: %s"
 msgstr ""
 
-#: remote.c:7491 remote.c:7494
+#: remote.c:7571 remote.c:7574
 #, possible-c-format
 msgid "unknown stop reply packet: %s"
 msgstr ""
 
-#: remote.c:7505
-#, possible-c-format
-msgid "No process or thread specified in stop reply: %s"
+#: remote.c:7717
+msgid ""
+"multi-inferior target stopped without sending a process-id, using first non-"
+"exited inferior"
+msgstr ""
+
+#: remote.c:7721
+msgid ""
+"multi-threaded target stopped without sending a thread-id, using first non-"
+"exited thread"
 msgstr ""
 
-#: remote.c:7672 remote.c:7814
+#: remote.c:7800 remote.c:7953
 #, possible-c-format
 msgid "Invalid remote reply: %s"
 msgstr ""
 
-#: remote.c:7904
+#: remote.c:8051
 #, possible-c-format
 msgid "Could not fetch register \"%s\"; remote failure reply '%s'"
 msgstr ""
 
-#: remote.c:7923
+#: remote.c:8070
 msgid "fetch_register_using_p: early buf termination"
 msgstr ""
 
-#: remote.c:7944
+#: remote.c:8091
 #, possible-c-format
 msgid "Could not read registers; remote failure reply '%s'"
 msgstr ""
 
-#: remote.c:7965
+#: remote.c:8112
 #, possible-c-format
 msgid "Remote 'g' packet reply is of odd length: %s"
 msgstr ""
 
-#: remote.c:7984
+#: remote.c:8131
 #, possible-c-format
 msgid ""
 "Remote 'g' packet reply is too long (expected %ld bytes, got %d bytes): %s"
 msgstr ""
 
-#: remote.c:8014
+#: remote.c:8161
 #, possible-c-format
 msgid "Truncated register %d in remote 'g' packet"
 msgstr ""
 
-#: remote.c:8043 remote.c:8062
+#: remote.c:8190 remote.c:8209
 msgid "unexpected end of 'g' packet reply"
 msgstr ""
 
-#: remote.c:8103
+#: remote.c:8250
 msgid "could not set remote traceframe"
 msgstr ""
 
-#: remote.c:8212
+#: remote.c:8359
 #, possible-c-format
 msgid "Could not write register \"%s\"; remote failure reply '%s'"
 msgstr ""
 
-#: remote.c:8217 remote.c:9765
+#: remote.c:8364 remote.c:9912
 msgid "Bad result from packet_ok"
 msgstr ""
 
-#: remote.c:8256
+#: remote.c:8403
 #, possible-c-format
 msgid "Could not write registers; remote failure reply '%s'"
 msgstr ""
 
-#: remote.c:8495
+#: remote.c:8642
 msgid "remote_write_bytes_aux: bad packet format"
 msgstr ""
 
-#: remote.c:8545
+#: remote.c:8692
 msgid "minimum packet size too small to write data"
 msgstr ""
 
-#: remote.c:8661
+#: remote.c:8808
 msgid "remote_write_bytes: bad internal state"
 msgstr ""
 
-#: remote.c:8864
+#: remote.c:9011
 msgid "Too long remote packet."
 msgstr ""
 
-#: remote.c:8867 remote.c:11158
+#: remote.c:9014 remote.c:11282
 msgid "Communication problem with target."
 msgstr ""
 
-#: remote.c:8894
+#: remote.c:9041
 msgid "Remote target does not support flash erase"
 msgstr ""
 
-#: remote.c:8896
+#: remote.c:9043
 msgid "Error erasing flash with vFlashErase packet"
 msgstr ""
 
-#: remote.c:8926
+#: remote.c:9073
 msgid "Remote target does not support vFlashDone"
 msgstr ""
 
-#: remote.c:8928
+#: remote.c:9075
 msgid "Error finishing flash operation"
 msgstr ""
 
-#: remote.c:8991
+#: remote.c:9138
 msgid "Remote connection closed"
 msgstr ""
 
-#: remote.c:8994 remote.c:9023
+#: remote.c:9141 remote.c:9170
 msgid "Remote communication error.  Target disconnected."
 msgstr ""
 
-#: remote.c:9099
+#: remote.c:9246
 msgid ""
 "Cannot execute this command while the target is running.\n"
 "Use the \"interrupt\" command to stop the target\n"
 "and then try again."
 msgstr ""
 
-#: remote.c:9431
+#: remote.c:9578
 #, possible-c-format
 msgid "Invalid run length encoding: %s\n"
 msgstr ""
 
-#: remote.c:9460
+#: remote.c:9607
 #, possible-c-format
 msgid "Watchdog timer is %s.\n"
 msgstr ""
 
-#: remote.c:9549
+#: remote.c:9696
 msgid "Watchdog timeout has expired.  Target detached."
 msgstr ""
 
 #. We have tried hard enough, and just can't receive the
 #. packet/notification.  Give up.
-#: remote.c:9571
+#: remote.c:9718
 msgid "Ignoring packet error, continuing...\n"
 msgstr ""
 
-#: remote.c:9675 remote.c:9690
+#: remote.c:9822 remote.c:9837
 #, possible-c-format
 msgid "Can't kill fork child process %d"
 msgstr ""
 
-#: remote.c:9737
+#: remote.c:9884
 msgid "Can't kill process"
 msgstr ""
 
-#: remote.c:9889
+#: remote.c:10013
 msgid "Target does not support QDisableRandomization."
 msgstr ""
 
-#: remote.c:9891
+#: remote.c:10015
 #, possible-c-format
 msgid "Bogus QDisableRandomization reply from target: %s"
 msgstr ""
 
-#: remote.c:9910
+#: remote.c:10034
 msgid "Remote file name too long for run packet"
 msgstr ""
 
-#: remote.c:9922
+#: remote.c:10046
 msgid "Argument list too long for run packet"
 msgstr ""
 
-#: remote.c:9943
+#: remote.c:10067
 msgid ""
 "Running the default executable on the remote target failed; try \"set remote "
 "exec-file\"?"
 msgstr ""
 
-#: remote.c:9946
+#: remote.c:10070
 #, possible-c-format
 msgid "Running \"%s\" on the remote target failed"
 msgstr ""
 
-#: remote.c:9976
+#: remote.c:10100
 #, possible-c-format
 msgid "Unable to %s environment variable '%s' on remote."
 msgstr ""
 
-#: remote.c:9992
+#: remote.c:10116
 msgid "Unable to reset environment on remote."
 msgstr ""
 
-#: remote.c:10039
+#: remote.c:10163
 #, possible-c-format
 msgid ""
 "Remote replied unexpectedly while setting the inferior's working\n"
 "directory: %s"
 msgstr ""
 
-#: remote.c:10081
+#: remote.c:10205
 #, possible-c-format
 msgid "Remote replied unexpectedly while setting startup-with-shell: %s"
 msgstr ""
 
-#: remote.c:10097
+#: remote.c:10221
 msgid "Remote target does not support \"set remote exec-file\""
 msgstr ""
 
-#: remote.c:10099
+#: remote.c:10223
 msgid "Remote target does not support \"set args\" or run ARGS"
 msgstr ""
 
-#: remote.c:10225
+#: remote.c:10349
 msgid "Target doesn't support breakpoints that have target side commands."
 msgstr ""
 
-#: remote.c:10282
+#: remote.c:10406
 #, possible-c-format
 msgid "hw_bp_to_z: bad watchpoint type %d"
 msgstr ""
 
-#: remote.c:10322
+#: remote.c:10446
 msgid "remote_insert_watchpoint: reached end of function"
 msgstr ""
 
-#: remote.c:10369
+#: remote.c:10493
 msgid "remote_remove_watchpoint: reached end of function"
 msgstr ""
 
-#: remote.c:10539
+#: remote.c:10663
 msgid "remote_insert_hw_breakpoint: reached end of function"
 msgstr ""
 
-#: remote.c:10580
+#: remote.c:10704
 msgid "remote_remove_hw_breakpoint: reached end of function"
 msgstr ""
 
-#: remote.c:10647
+#: remote.c:10771
 msgid "command cannot be used without an exec file"
 msgstr ""
 
-#: remote.c:10680
+#: remote.c:10804
 #, possible-c-format
 msgid "target memory fault, section %s, range %s -- %s"
 msgstr ""
 
-#: remote.c:10696
+#: remote.c:10820
 msgid ""
 "One or more sections of the target image does not match\n"
 "the loaded file\n"
 msgstr ""
 
-#: remote.c:10699
+#: remote.c:10823
 #, possible-c-format
 msgid "No loaded section named '%s'.\n"
 msgstr ""
 
-#: remote.c:10802
+#: remote.c:10926
 #, possible-c-format
 msgid "Unknown remote qXfer reply: %s"
 msgstr ""
 
-#: remote.c:10808
+#: remote.c:10932
 msgid "Remote qXfer reply contained no data."
 msgstr ""
 
-#: remote.c:10997
+#: remote.c:11121
 msgid "remote query is only available after target open"
 msgstr ""
 
-#: remote.c:11101
+#: remote.c:11225
 msgid "Pattern is too large to transmit to remote target."
 msgstr ""
 
-#: remote.c:11123 remote.c:11128
+#: remote.c:11247 remote.c:11252
 #, possible-c-format
 msgid "Unknown qSearch:memory reply: %s"
 msgstr ""
 
-#: remote.c:11140
+#: remote.c:11264
 msgid "remote rcmd is only available after target open"
 msgstr ""
 
-#: remote.c:11152
+#: remote.c:11276
 #, possible-c-format
 msgid "\"monitor\" command ``%s'' is too long."
 msgstr ""
 
-#: remote.c:11179 remote.c:12691 remote.c:13010 remote.c:13107 remote.c:13217
-#: remote.c:13267 remote.c:13345 remote.c:13408 remote.c:13438
+#: remote.c:11303 remote.c:12809 remote.c:13128 remote.c:13223 remote.c:13333
+#: remote.c:13383 remote.c:13461 remote.c:13524 remote.c:13554
 msgid "Target does not support this command."
 msgstr ""
 
-#: remote.c:11190
+#: remote.c:11314
 msgid "Protocol error with Rcmd"
 msgstr ""
 
-#: remote.c:11221 remote.c:12389 remote.c:12481 remote.c:12540
+#: remote.c:11345 remote.c:12513 remote.c:12605 remote.c:12664
 msgid "command can only be used with remote target"
 msgstr ""
 
-#: remote.c:11230
+#: remote.c:11354
 msgid "remote-packet command requires packet text as argument"
 msgstr ""
 
-#: remote.c:11273
+#: remote.c:11397
 msgid "Remote threadset test\n"
 msgstr ""
 
-#: remote.c:11379
+#: remote.c:11503
 msgid "Fetch and print the remote list of thread identifiers, one pkt only."
 msgstr ""
 
-#: remote.c:11382
+#: remote.c:11506
 msgid "Fetch and display info about one thread."
 msgstr ""
 
-#: remote.c:11384
+#: remote.c:11508
 msgid "Test setting to a different thread."
 msgstr ""
 
-#: remote.c:11386
+#: remote.c:11510
 msgid "Iterate through updating all remote thread info."
 msgstr ""
 
-#: remote.c:11388
+#: remote.c:11512
 msgid "Remote thread alive test."
 msgstr ""
 
-#: remote.c:11471
+#: remote.c:11595
 msgid "Remote target doesn't support qGetTLSAddr packet"
 msgstr ""
 
-#: remote.c:11474
+#: remote.c:11598
 msgid "Remote target failed to process qGetTLSAddr request"
 msgstr ""
 
-#: remote.c:11478
+#: remote.c:11602
 msgid "TLS not supported or disabled on this target"
 msgstr ""
 
-#: remote.c:11514
+#: remote.c:11638
 msgid "Remote target doesn't support qGetTIBAddr packet"
 msgstr ""
 
-#: remote.c:11516
+#: remote.c:11640
 msgid "Remote target failed to process qGetTIBAddr request"
 msgstr ""
 
-#: remote.c:11519
+#: remote.c:11643
 msgid "qGetTIBAddr not supported or disabled on this target"
 msgstr ""
 
-#: remote.c:11568
+#: remote.c:11692
 #, possible-c-format
 msgid "Duplicate g packet description added for size %d"
 msgstr ""
 
-#: remote.c:11628 remote.c:11649 remote.c:11671
+#: remote.c:11752 remote.c:11773 remote.c:11795
 msgid "Packet too long for target."
 msgstr ""
 
-#: remote.c:11882
+#: remote.c:12006
 #, possible-c-format
 msgid "Reading %s from remote target...\n"
 msgstr ""
 
-#: remote.c:11887
+#: remote.c:12011
 msgid ""
 "File transfers from remote targets can be slow. Use \"set sysroot\" to "
 "access files locally instead."
 msgstr ""
 
-#: remote.c:11991
+#: remote.c:12115
 #, possible-c-format
 msgid "Read returned %d, but %d bytes."
 msgstr ""
 
-#: remote.c:12155
+#: remote.c:12279
 #, possible-c-format
 msgid "Readlink returned %d, but %d bytes."
 msgstr ""
 
-#: remote.c:12207
+#: remote.c:12331
 #, possible-c-format
 msgid "vFile:fstat returned %d, but %d bytes."
 msgstr ""
 
-#: remote.c:12210
+#: remote.c:12334
 #, possible-c-format
 msgid "vFile:fstat returned %d bytes, but expecting %d."
 msgstr ""
 
-#: remote.c:12256
+#: remote.c:12380
 msgid ""
 "remote target does not support file transfer, attempting to access files "
 "from local filesystem."
 msgstr ""
 
-#: remote.c:12326
+#: remote.c:12450
 #, possible-c-format
 msgid "Unknown remote I/O error %d"
 msgstr ""
 
-#: remote.c:12328
+#: remote.c:12452
 #, possible-c-format
 msgid "Remote I/O error: %s"
 msgstr ""
 
-#: remote.c:12433
+#: remote.c:12557
 #, possible-c-format
 msgid "Error reading %s."
 msgstr ""
 
-#: remote.c:12456
+#: remote.c:12580
 #, possible-c-format
 msgid "Remote write of %d bytes returned 0!"
 msgstr ""
 
-#: remote.c:12472
+#: remote.c:12596
 #, possible-c-format
 msgid "Successfully sent file \"%s\".\n"
 msgstr ""
 
-#: remote.c:12531
+#: remote.c:12655
 #, possible-c-format
 msgid "Successfully fetched file \"%s\".\n"
 msgstr ""
 
-#: remote.c:12555
+#: remote.c:12679
 #, possible-c-format
 msgid "Successfully deleted file \"%s\".\n"
 msgstr ""
 
-#: remote.c:12562
+#: remote.c:12686
 msgid "file to put"
 msgstr ""
 
-#: remote.c:12566
+#: remote.c:12690
 msgid "Invalid parameters to remote put"
 msgstr ""
 
-#: remote.c:12575
+#: remote.c:12699
 msgid "file to get"
 msgstr ""
 
-#: remote.c:12579
+#: remote.c:12703
 msgid "Invalid parameters to remote get"
 msgstr ""
 
-#: remote.c:12588
+#: remote.c:12712
 msgid "file to delete"
 msgstr ""
 
-#: remote.c:12592
+#: remote.c:12716
 msgid "Invalid parameters to remote delete"
 msgstr ""
 
-#: remote.c:12714 remote.c:12729 remote.c:12941 remote.c:12957
+#: remote.c:12832 remote.c:12847 remote.c:13059 remote.c:13075
 msgid "Target does not support source download."
 msgstr ""
 
-#: remote.c:12746
+#: remote.c:12864
 msgid "Tracepoint packet too large for target."
 msgstr ""
 
-#: remote.c:12790
+#: remote.c:12908
 msgid "Fast tracepoint not valid during download"
 msgstr ""
 
 #. Fast tracepoints are functionally identical to regular
 #. tracepoints, so don't take lack of support as a reason to
 #. give up on the trace run.
-#: remote.c:12797
+#: remote.c:12915
 #, possible-c-format
 msgid ""
 "Target does not support fast tracepoints, downloading %d as regular "
 "tracepoint"
 msgstr ""
 
-#: remote.c:12818
+#: remote.c:12936
 msgid "Static tracepoint not valid during download"
 msgstr ""
 
 #. Fast tracepoints are functionally identical to regular
 #. tracepoints, so don't take lack of support as a reason
 #. to give up on the trace run.
-#: remote.c:12824
+#: remote.c:12942
 msgid "Target does not support static tracepoints"
 msgstr ""
 
-#: remote.c:12859
+#: remote.c:12977
 #, possible-c-format
 msgid "Target does not support conditional tracepoints, ignoring tp %d cond"
 msgstr ""
 
-#: remote.c:12877
+#: remote.c:12995
 msgid "Target does not support tracepoints."
 msgstr ""
 
-#: remote.c:12899 remote.c:12922
+#: remote.c:13017 remote.c:13040
 msgid "Error on target while setting tracepoints."
 msgstr ""
 
-#: remote.c:13004
+#: remote.c:13122
 msgid "Trace state variable name too long for tsv definition packet"
 msgstr ""
 
-#: remote.c:13012
+#: remote.c:13130
 msgid "Error on target while downloading trace state variable."
 msgstr ""
 
-#: remote.c:13027
+#: remote.c:13144
 msgid ""
 "Target does not support enabling tracepoints while a trace run is ongoing."
 msgstr ""
 
-#: remote.c:13029
+#: remote.c:13146
 msgid "Error on target while enabling tracepoint."
 msgstr ""
 
-#: remote.c:13044
+#: remote.c:13160
 msgid ""
 "Target does not support disabling tracepoints while a trace run is ongoing."
 msgstr ""
 
-#: remote.c:13046
+#: remote.c:13162
 msgid "Error on target while disabling tracepoint."
 msgstr ""
 
-#: remote.c:13084
+#: remote.c:13200
 msgid "Too many sections for read-only sections definition packet."
 msgstr ""
 
-#: remote.c:13109 remote.c:13219 remote.c:13292 remote.c:13295 remote.c:13347
-#: remote.c:13410 remote.c:13440 remote.c:13516 remote.c:13561
+#: remote.c:13225 remote.c:13335 remote.c:13408 remote.c:13411 remote.c:13463
+#: remote.c:13526 remote.c:13556 remote.c:13632 remote.c:13677
 #, possible-c-format
 msgid "Bogus reply from target: %s"
 msgstr ""
 
-#: remote.c:13153
+#: remote.c:13269
 #, possible-c-format
 msgid "Bogus trace status reply from target: %s"
 msgstr ""
 
-#: remote.c:13261
+#: remote.c:13377
 #, possible-c-format
 msgid "Unknown trace find type %d"
 msgstr ""
 
-#: remote.c:13276
+#: remote.c:13392
 msgid "Unable to parse trace frame number"
 msgstr ""
 
-#: remote.c:13286
+#: remote.c:13402
 msgid "Unable to parse tracepoint number"
 msgstr ""
 
-#: remote.c:13339
+#: remote.c:13455
 msgid "Remote file name too long for trace save packet"
 msgstr ""
 
-#: remote.c:13413
+#: remote.c:13529
 msgid "Target does not support disconnected tracing."
 msgstr ""
 
-#: remote.c:13638
+#: remote.c:13754
 #, possible-c-format
 msgid "Failed to configure the BTS buffer size: %s"
 msgstr ""
 
-#: remote.c:13640
+#: remote.c:13756
 msgid "Failed to configure the BTS buffer size."
 msgstr ""
 
-#: remote.c:13660
+#: remote.c:13776
 #, possible-c-format
 msgid "Failed to configure the trace buffer size: %s"
 msgstr ""
 
-#: remote.c:13662
+#: remote.c:13778
 msgid "Failed to configure the trace buffer size."
 msgstr ""
 
-#: remote.c:13715
+#: remote.c:13831
 msgid ""
 "Target is recording using Intel Processor Trace but support was disabled at "
 "compile time."
 msgstr ""
 
-#: remote.c:13730
+#: remote.c:13846
 #, possible-c-format
 msgid "Target is recording using %s.\n"
 msgstr ""
 
-#: remote.c:13776 x86-linux-nat.c:226
+#: remote.c:13879 remote.c:13928 remote.c:13969
+msgid "Target does not support branch tracing."
+msgstr ""
+
+#: remote.c:13892 x86-linux-nat.c:226
 #, possible-c-format
 msgid "Could not enable branch tracing for %s: %s"
 msgstr ""
 
-#: remote.c:13779
+#: remote.c:13895
 #, possible-c-format
 msgid "Could not enable branch tracing for %s."
 msgstr ""
 
-#: remote.c:13823
+#: remote.c:13939
 #, possible-c-format
 msgid "Could not disable branch tracing for %s: %s"
 msgstr ""
 
-#: remote.c:13826
+#: remote.c:13942
 #, possible-c-format
 msgid "Could not disable branch tracing for %s."
 msgstr ""
 
-#: remote.c:13856
+#: remote.c:13972
 msgid "Cannot process branch tracing result. XML parsing not supported."
 msgstr ""
 
-#: remote.c:13872
+#: remote.c:13988
 #, possible-c-format
 msgid "Bad branch tracing read type: %u."
 msgstr ""
 
-#: remote.c:13924
+#: remote.c:14039
 #, possible-c-format
 msgid "not currently attached to process %d"
 msgstr ""
 
-#: remote.c:13989
+#: remote.c:14104
 #, possible-c-format
 msgid "Thread handle size mismatch: %d vs %zu (from remote)"
 msgstr ""
 
-#: remote.c:14107
+#: remote.c:14246
 #, possible-c-format
 msgid "Remote refused setting thread events: %s"
 msgstr ""
 
-#: remote.c:14218
+#: remote.c:14351
 #, possible-c-format
 msgid "Debugger's willingness to use range stepping is %s.\n"
 msgstr ""
 
-#: remote.c:14248
+#: remote.c:14381
 msgid "Range stepping is not supported by the current target"
 msgstr ""
 
 #. set/show remote ...
 #. allow-unknown
-#: remote.c:14274 remote.c:14280
+#: remote.c:14408 remote.c:14414
 msgid ""
 "Remote protocol specific variables.\n"
 "Configure various remote-protocol specific variables such as\n"
@@ -25680,14 +25570,14 @@ msgid ""
 msgstr ""
 
 #. allow-unknown
-#: remote.c:14287
+#: remote.c:14421
 msgid ""
 "Compare section data on target to the exec file.\n"
 "Argument is a single section name (default: all loaded sections).\n"
 "To compare only read-only loaded sections, specify the -r option."
 msgstr ""
 
-#: remote.c:14293
+#: remote.c:14427
 msgid ""
 "Send an arbitrary packet to a remote target.\n"
 "   maintenance packet TEXT\n"
@@ -25697,57 +25587,57 @@ msgid ""
 "terminating `#' character and checksum."
 msgstr ""
 
-#: remote.c:14302
+#: remote.c:14436
 msgid "Set whether to send break if interrupted."
 msgstr ""
 
-#: remote.c:14303
+#: remote.c:14437
 msgid "Show whether to send break if interrupted."
 msgstr ""
 
-#: remote.c:14304
+#: remote.c:14438
 msgid "If set, a break, instead of a cntrl-c, is sent to the remote target."
 msgstr ""
 
-#: remote.c:14317
+#: remote.c:14451
 msgid "Set interrupt sequence to remote target."
 msgstr ""
 
-#: remote.c:14318
+#: remote.c:14452
 msgid "Show interrupt sequence to remote target."
 msgstr ""
 
-#: remote.c:14319
+#: remote.c:14453
 msgid ""
 "Valid value is \"Ctrl-C\", \"BREAK\" or \"BREAK-g\". The default is \"Ctrl-C"
 "\"."
 msgstr ""
 
-#: remote.c:14326
+#: remote.c:14460
 msgid ""
 "Set whether interrupt-sequence is sent to remote target when gdb connects to."
 msgstr ""
 
-#: remote.c:14327
+#: remote.c:14461
 msgid ""
 "Show whether interrupt-sequence is sent to remote target when gdb connects "
 "to."
 msgstr ""
 
-#: remote.c:14328
+#: remote.c:14462
 msgid "If set, interrupt sequence is sent to remote target."
 msgstr ""
 
 #. Install commands for configuring memory read/write packets.
-#: remote.c:14335
+#: remote.c:14469
 msgid "Set the maximum number of bytes per memory write packet (deprecated)."
 msgstr ""
 
-#: remote.c:14338
+#: remote.c:14472
 msgid "Show the maximum number of bytes per memory write packet (deprecated)."
 msgstr ""
 
-#: remote.c:14342
+#: remote.c:14476
 msgid ""
 "Set the maximum number of bytes per memory-write packet.\n"
 "Specify the number of bytes in a packet or 0 (zero) for the\n"
@@ -25756,7 +25646,7 @@ msgid ""
 "further restriction and ``limit'' to enable that restriction."
 msgstr ""
 
-#: remote.c:14350
+#: remote.c:14484
 msgid ""
 "Set the maximum number of bytes per memory-read packet.\n"
 "Specify the number of bytes in a packet or 0 (zero) for the\n"
@@ -25765,107 +25655,107 @@ msgid ""
 "further restriction and ``limit'' to enable that restriction."
 msgstr ""
 
-#: remote.c:14359
+#: remote.c:14493
 msgid "Show the maximum number of bytes per memory-write packet."
 msgstr ""
 
-#: remote.c:14363
+#: remote.c:14497
 msgid "Show the maximum number of bytes per memory-read packet."
 msgstr ""
 
-#: remote.c:14367
+#: remote.c:14501
 msgid "Set the maximum number of target hardware watchpoints."
 msgstr ""
 
-#: remote.c:14368
+#: remote.c:14502
 msgid "Show the maximum number of target hardware watchpoints."
 msgstr ""
 
-#: remote.c:14369
+#: remote.c:14503
 msgid "Specify \"unlimited\" for unlimited hardware watchpoints."
 msgstr ""
 
-#: remote.c:14376
+#: remote.c:14510
 msgid "Set the maximum length (in bytes) of a target hardware watchpoint."
 msgstr ""
 
-#: remote.c:14377
+#: remote.c:14511
 msgid "Show the maximum length (in bytes) of a target hardware watchpoint."
 msgstr ""
 
-#: remote.c:14378
+#: remote.c:14512
 msgid "Specify \"unlimited\" to allow watchpoints of unlimited size."
 msgstr ""
 
-#: remote.c:14383
+#: remote.c:14517
 msgid "Set the maximum number of target hardware breakpoints."
 msgstr ""
 
-#: remote.c:14384
+#: remote.c:14518
 msgid "Show the maximum number of target hardware breakpoints."
 msgstr ""
 
-#: remote.c:14385
+#: remote.c:14519
 msgid "Specify \"unlimited\" for unlimited hardware breakpoints."
 msgstr ""
 
-#: remote.c:14391
+#: remote.c:14525
 msgid "Set the maximum size of the address (in bits) in a memory packet."
 msgstr ""
 
-#: remote.c:14392
+#: remote.c:14526
 msgid "Show the maximum size of the address (in bits) in a memory packet."
 msgstr ""
 
-#: remote.c:14689
+#: remote.c:14823
 msgid "Set use of remote protocol `Z' packets."
 msgstr ""
 
-#: remote.c:14690
+#: remote.c:14824
 msgid "Show use of remote protocol `Z' packets."
 msgstr ""
 
-#: remote.c:14691
+#: remote.c:14825
 msgid ""
 "When set, GDB will attempt to use the remote breakpoint and watchpoint\n"
 "packets."
 msgstr ""
 
-#: remote.c:14700
+#: remote.c:14834
 msgid ""
 "Manipulate files on the remote system.\n"
 "Transfer files to and from the remote target system."
 msgstr ""
 
-#: remote.c:14707
+#: remote.c:14841
 msgid "Copy a local file to the remote system."
 msgstr ""
 
-#: remote.c:14711
+#: remote.c:14845
 msgid "Copy a remote file to the local system."
 msgstr ""
 
-#: remote.c:14715
+#: remote.c:14849
 msgid "Delete a remote file."
 msgstr ""
 
-#: remote.c:14719
+#: remote.c:14853
 msgid "Set the remote pathname for \"run\"."
 msgstr ""
 
-#: remote.c:14720
+#: remote.c:14854
 msgid "Show the remote pathname for \"run\"."
 msgstr ""
 
-#: remote.c:14728
+#: remote.c:14862
 msgid "Enable or disable range stepping."
 msgstr ""
 
-#: remote.c:14729
+#: remote.c:14863
 msgid "Show whether target-assisted range stepping is enabled."
 msgstr ""
 
-#: remote.c:14730
+#: remote.c:14864
 msgid ""
 "If on, and the target supports it, when stepping a source line, GDB\n"
 "tells the target to step the corresponding range of addresses itself "
@@ -25875,115 +25765,119 @@ msgid ""
 "stepping is supported by the target.  The default is on."
 msgstr ""
 
-#: remote.c:14741
+#: remote.c:14875
 msgid "Set watchdog timer."
 msgstr ""
 
-#: remote.c:14742
+#: remote.c:14876
 msgid "Show watchdog timer."
 msgstr ""
 
-#: remote.c:14743
+#: remote.c:14877
 msgid ""
 "When non-zero, this timeout is used instead of waiting forever for a target\n"
 "to finish a low-level step or continue operation.  If the specified amount\n"
 "of time passes without a response from the target, an error occurs."
 msgstr ""
 
-#: remote.c:14752
+#: remote.c:14886
 msgid "Set the maximum number of characters to display for each remote packet."
 msgstr ""
 
-#: remote.c:14753
+#: remote.c:14887
 msgid ""
 "Show the maximum number of characters to display for each remote packet."
 msgstr ""
 
-#: remote.c:14754
+#: remote.c:14888
 msgid "Specify \"unlimited\" to display all the characters."
 msgstr ""
 
-#: remote-fileio.c:1282
+#: remote-fileio.c:1284
 msgid "Illegal argument for \"set remote system-call-allowed\" command"
 msgstr ""
 
-#: remote-fileio.c:1289
+#: remote-fileio.c:1291
 #, possible-c-format
 msgid "Garbage after \"show remote system-call-allowed\" command: `%s'"
 msgstr ""
 
-#: remote-fileio.c:1301
+#: remote-fileio.c:1303
 msgid "Set if the host system(3) call is allowed for the target."
 msgstr ""
 
-#: remote-fileio.c:1305
+#: remote-fileio.c:1307
 msgid "Show if the host system(3) call is allowed for the target."
 msgstr ""
 
-#: remote-notif.c:244
+#: remote-notif.c:246
 msgid "Set debugging of async remote notification."
 msgstr ""
 
-#: remote-notif.c:245
+#: remote-notif.c:247
 msgid "Show debugging of async remote notification."
 msgstr ""
 
-#: remote-notif.c:246
+#: remote-notif.c:248
 msgid ""
 "When non-zero, debugging output about async remote notifications is enabled."
 msgstr ""
 
-#: remote-sim.c:79
+#: remote-sim.c:117
 msgid "simulator"
 msgstr ""
 
-#: remote-sim.c:80
+#: remote-sim.c:118
 msgid "Use the compiled-in simulator."
 msgstr ""
 
-#: remote-sim.c:225
+#: remote-sim.c:216
 #, possible-c-format
 msgid "Unable to create simulator instance for inferior %d."
 msgstr ""
 
-#: remote-sim.c:240
+#: remote-sim.c:237
 #, 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:537
+#: remote-sim.c:536
 msgid "Register size different to expected"
 msgstr ""
 
-#: remote-sim.c:540
+#: remote-sim.c:539
 #, possible-c-format
 msgid "Register %d not updated"
 msgstr ""
 
-#: remote-sim.c:542
+#: remote-sim.c:541
 #, possible-c-format
 msgid "Register %s not updated"
 msgstr ""
 
-#: remote-sim.c:580
+#: remote-sim.c:579
 msgid "program to load"
 msgstr ""
 
-#: remote-sim.c:587
+#: remote-sim.c:586
 msgid "GDB sim does not yet support a load offset."
 msgstr ""
 
-#: remote-sim.c:596
+#: remote-sim.c:595
 msgid "unable to load program"
 msgstr ""
 
-#: remote-sim.c:627 remote-sim.c:1066
+#: remote-sim.c:624
+msgid "No executable file specified."
+msgstr ""
+
+#: remote-sim.c:626 remote-sim.c:1038
 msgid "No program loaded."
 msgstr ""
 
-#: remote-sim.c:655
+#: remote-sim.c:654
 msgid "Unable to create sim inferior."
 msgstr ""
 
@@ -25991,12 +25885,12 @@ msgstr ""
 msgid "unable to create simulator instance"
 msgstr ""
 
-#: remote-sim.c:862
+#: remote-sim.c:854
 #, possible-c-format
 msgid "gdbsim_resume: pid %d, step %d, signal %d\n"
 msgstr ""
 
-#: remote-sim.c:974
+#: remote-sim.c:947
 #, possible-c-format
 msgid "Unable to wait for pid %d.  Inferior not found."
 msgstr ""
@@ -26009,11 +25903,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:1192
+#: remote-sim.c:1164
 msgid "Not connected to the simulator target"
 msgstr ""
 
-#: remote-sim.c:1305
+#: remote-sim.c:1278
 msgid "Send a command to the simulator."
 msgstr ""
 
@@ -26045,7 +25939,7 @@ msgstr ""
 msgid "No bookmark #%d."
 msgstr ""
 
-#: reverse.c:240 thread.c:1913
+#: reverse.c:240 thread.c:1943
 msgid "Command requires an argument."
 msgstr ""
 
@@ -26064,14 +25958,14 @@ msgstr ""
 msgid "No bookmarks.\n"
 msgstr ""
 
-#: reverse.c:328
+#: reverse.c:329
 msgid ""
 "Step program backward until it reaches the beginning of another source "
 "line.\n"
 "Argument N means do this N times (or till program stops for another reason)."
 msgstr ""
 
-#: reverse.c:334
+#: reverse.c:335
 msgid ""
 "Step program backward, proceeding through subroutine calls.\n"
 "Like the \"reverse-step\" command as long as subroutine calls do not "
@@ -26080,19 +25974,19 @@ msgid ""
 "Argument N means do this N times (or till program stops for another reason)."
 msgstr ""
 
-#: reverse.c:342
+#: reverse.c:343
 msgid ""
 "Step backward exactly one instruction.\n"
 "Argument N means do this N times (or till program stops for another reason)."
 msgstr ""
 
-#: reverse.c:348
+#: reverse.c:349
 msgid ""
 "Step backward one instruction, but proceed through called subroutines.\n"
 "Argument N means do this N times (or till program stops for another reason)."
 msgstr ""
 
-#: reverse.c:354
+#: reverse.c:355
 msgid ""
 "Continue program being debugged but run it in reverse.\n"
 "If proceeding from breakpoint, a number N may be used as an argument,\n"
@@ -26100,18 +25994,18 @@ msgid ""
 "the breakpoint won't break until the Nth time it is reached)."
 msgstr ""
 
-#: reverse.c:361
+#: reverse.c:362
 msgid "Execute backward until just before selected stack frame is called."
 msgstr ""
 
-#: reverse.c:364
+#: reverse.c:365
 msgid ""
 "Set a bookmark in the program's execution history.\n"
 "A bookmark represents a point in the execution history \n"
 "that can be returned to at a later point in the debug session."
 msgstr ""
 
-#: reverse.c:368
+#: reverse.c:369
 msgid ""
 "Status of user-settable bookmarks.\n"
 "Bookmarks are user-settable markers representing a point in the \n"
@@ -26119,14 +26013,14 @@ msgid ""
 "session."
 msgstr ""
 
-#: reverse.c:373
+#: reverse.c:374
 msgid ""
 "Delete a bookmark from the bookmark list.\n"
 "Argument is a bookmark number or numbers,\n"
 " or no argument to delete all bookmarks."
 msgstr ""
 
-#: reverse.c:378
+#: reverse.c:379
 msgid ""
 "Go to an earlier-bookmarked point in the program's execution history.\n"
 "Argument is the bookmark number of a bookmark saved earlier by using \n"
@@ -26135,138 +26029,125 @@ msgid ""
 "  end   (end of recording)"
 msgstr ""
 
-#: riscv-fbsd-tdep.c:192
+#: riscv-fbsd-tdep.c:194
 #, possible-c-format
 msgid "Unable to fetch %%tp"
 msgstr ""
 
-#: riscv-tdep.c:277
+#: riscv-tdep.c:406
 #, possible-c-format
 msgid "Debugger's use of compressed breakpoints is set to %s.\n"
 msgstr ""
 
-#: riscv-tdep.c:300
-msgid "\"set riscv\" must be followed by an appropriate subcommand.\n"
-msgstr ""
-
-#: riscv-tdep.c:323
-msgid "\"set debug riscv\" must be followed by an appropriate subcommand.\n"
-msgstr ""
-
-#: riscv-tdep.c:335
+#: riscv-tdep.c:428
 #, possible-c-format
 msgid "RiscV debug variable `%s' is set to: %s\n"
 msgstr ""
 
-#: riscv-tdep.c:485
+#: riscv-tdep.c:578
 msgid "unhandled breakpoint kind"
 msgstr ""
 
-#: riscv-tdep.c:2210 riscv-tdep.c:2220 riscv-tdep.c:2235 riscv-tdep.c:2242
-#: riscv-tdep.c:2262 riscv-tdep.c:2268
+#: riscv-tdep.c:2314 riscv-tdep.c:2324 riscv-tdep.c:2339 riscv-tdep.c:2346
+#: riscv-tdep.c:2366 riscv-tdep.c:2372
 msgid "failed during argument setup"
 msgstr ""
 
 #. The second location should never be a reference, any
 #. argument being passed by reference just places its address
 #. in the first location and is done.
-#: riscv-tdep.c:2384 riscv-tdep.c:2607 riscv-tdep.c:2748 riscv-tdep.c:2771
-#: riscv-tdep.c:2794
+#: riscv-tdep.c:2488 riscv-tdep.c:2720 riscv-tdep.c:2862 riscv-tdep.c:2885
+#: riscv-tdep.c:2908
 msgid "invalid argument location"
 msgstr ""
 
-#: riscv-tdep.c:2421 riscv-tdep.c:2568
+#: riscv-tdep.c:2525 riscv-tdep.c:2687
 msgid "unknown argument location type"
 msgstr ""
 
-#: riscv-tdep.c:2946
-#, possible-c-format
-msgid "unknown ELF header class %d"
-msgstr ""
-
-#: riscv-tdep.c:3229
+#: riscv-tdep.c:3412
 #, possible-c-format
 msgid "bfd requires xlen %d, but target has xlen %d"
 msgstr ""
 
-#: riscv-tdep.c:3235
+#: riscv-tdep.c:3418
 #, possible-c-format
 msgid "bfd requires flen %d, but target has flen %d"
 msgstr ""
 
-#: riscv-tdep.c:3522 riscv-tdep.c:3527
+#: riscv-tdep.c:3708 riscv-tdep.c:3713
 msgid "RISC-V specific debug commands."
 msgstr ""
 
-#: riscv-tdep.c:3532
+#: riscv-tdep.c:3718
 msgid "Set riscv breakpoint debugging."
 msgstr ""
 
-#: riscv-tdep.c:3533
+#: riscv-tdep.c:3719
 msgid "Show riscv breakpoint debugging."
 msgstr ""
 
-#: riscv-tdep.c:3534
+#: riscv-tdep.c:3720
 msgid ""
 "When non-zero, print debugging information for the riscv specific parts\n"
 "of the breakpoint mechanism."
 msgstr ""
 
-#: riscv-tdep.c:3542
+#: riscv-tdep.c:3728
 msgid "Set riscv inferior call debugging."
 msgstr ""
 
-#: riscv-tdep.c:3543
+#: riscv-tdep.c:3729
 msgid "Show riscv inferior call debugging."
 msgstr ""
 
-#: riscv-tdep.c:3544
+#: riscv-tdep.c:3730
 msgid ""
 "When non-zero, print debugging information for the riscv specific parts\n"
 "of the inferior call mechanism."
 msgstr ""
 
-#: riscv-tdep.c:3552
+#: riscv-tdep.c:3738
 msgid "Set riscv stack unwinding debugging."
 msgstr ""
 
-#: riscv-tdep.c:3553
+#: riscv-tdep.c:3739
 msgid "Show riscv stack unwinding debugging."
 msgstr ""
 
-#: riscv-tdep.c:3554
+#: riscv-tdep.c:3740
 msgid ""
 "When non-zero, print debugging information for the riscv specific parts\n"
 "of the stack unwinding mechanism."
 msgstr ""
 
-#: riscv-tdep.c:3562
+#: riscv-tdep.c:3748
 msgid "Set riscv gdbarch initialisation debugging."
 msgstr ""
 
-#: riscv-tdep.c:3563
+#: riscv-tdep.c:3749
 msgid "Show riscv gdbarch initialisation debugging."
 msgstr ""
 
-#: riscv-tdep.c:3564
+#: riscv-tdep.c:3750
 msgid ""
 "When non-zero, print debugging information for the riscv gdbarch\n"
 "initialisation process."
 msgstr ""
 
-#: riscv-tdep.c:3573 riscv-tdep.c:3577
+#: riscv-tdep.c:3759 riscv-tdep.c:3763
 msgid "RISC-V specific commands."
 msgstr ""
 
-#: riscv-tdep.c:3584
+#: riscv-tdep.c:3770
 msgid "Set debugger's use of compressed breakpoints."
 msgstr ""
 
-#: riscv-tdep.c:3585
+#: riscv-tdep.c:3771
 msgid "\tShow debugger's use of compressed breakpoints."
 msgstr ""
 
-#: riscv-tdep.c:3586
+#: riscv-tdep.c:3772
 msgid ""
 "Debugging compressed code requires compressed breakpoints to be used. If\n"
 "left to 'auto' then gdb will use them if the existing instruction is a\n"
@@ -26306,75 +26187,71 @@ msgstr ""
 msgid "ptrace ldinfo"
 msgstr ""
 
-#: rs6000-tdep.c:2498
+#: rs6000-tdep.c:2499
 #, possible-c-format
 msgid "rs6000_pseudo_register_type: called on unexpected register '%s' (%d)"
 msgstr ""
 
-#: rs6000-tdep.c:2937
+#: rs6000-tdep.c:2938
 msgid ""
 "Cannot write to the checkpointed EFP register, the corresponding vector "
 "register is unavailable."
 msgstr ""
 
-#: rs6000-tdep.c:2972
+#: rs6000-tdep.c:2973
 #, possible-c-format
 msgid "rs6000_pseudo_register_read: called on unexpected register '%s' (%d)"
 msgstr ""
 
-#: rs6000-tdep.c:3002
+#: rs6000-tdep.c:3003
 #, possible-c-format
 msgid "rs6000_pseudo_register_write: called on unexpected register '%s' (%d)"
 msgstr ""
 
-#: rs6000-tdep.c:3144
+#: rs6000-tdep.c:3145
 #, possible-c-format
 msgid "rs6000_pseudo_register_collect: called on unexpected register '%s' (%d)"
 msgstr ""
 
-#: rs6000-tdep.c:7179
-msgid "\"set powerpc\" must be followed by an appropriate subcommand.\n"
-msgstr ""
-
-#: rs6000-tdep.c:7220
+#: rs6000-tdep.c:7205
 #, possible-c-format
 msgid "Invalid vector ABI accepted: %s."
 msgstr ""
 
-#: rs6000-tdep.c:7236
+#: rs6000-tdep.c:7221
 #, possible-c-format
 msgid "Use of exact watchpoints is %s.\n"
 msgstr ""
 
-#: rs6000-tdep.c:7340 rs6000-tdep.c:7344
+#: rs6000-tdep.c:7326 rs6000-tdep.c:7330
 msgid "Various PowerPC-specific commands."
 msgstr ""
 
-#: rs6000-tdep.c:7350
+#: rs6000-tdep.c:7336
 msgid "Set whether to use a soft-float ABI."
 msgstr ""
 
-#: rs6000-tdep.c:7351
+#: rs6000-tdep.c:7337
 msgid "Show whether to use a soft-float ABI."
 msgstr ""
 
-#: rs6000-tdep.c:7358
+#: rs6000-tdep.c:7344
 msgid "Set the vector ABI."
 msgstr ""
 
-#: rs6000-tdep.c:7359
+#: rs6000-tdep.c:7345
 msgid "Show the vector ABI."
 msgstr ""
 
-#: rs6000-tdep.c:7365
+#: rs6000-tdep.c:7351
 msgid "Set whether to use just one debug register for watchpoints on scalars."
 msgstr ""
 
-#: rs6000-tdep.c:7367
+#: rs6000-tdep.c:7353
 msgid "Show whether to use just one debug register for watchpoints on scalars."
 msgstr ""
 
-#: rs6000-tdep.c:7369
+#: rs6000-tdep.c:7355
 msgid ""
 "If true, GDB will use only one debug register when watching a variable of\n"
 "scalar type, thus assuming that the variable is accessed through the "
@@ -26488,128 +26365,135 @@ msgstr ""
 msgid "%s in expression, near `%s'."
 msgstr ""
 
+#. Perhaps we could get here by trying to print an Ada variant
+#. record in Rust mode.  Unlikely, but an error is safer than an
+#. assert.
+#: rust-lang.c:101
+msgid "Could not find active enum variant"
+msgstr ""
+
 #. Print the enum type name here to be more clear.
-#: rust-lang.c:477
+#: rust-lang.c:425
 #, possible-c-format
 msgid "%s {%p[<No data fields>%p]}"
 msgstr ""
 
-#: rust-lang.c:615
+#: rust-lang.c:558
 msgid "Could not determine the array bounds"
 msgstr ""
 
-#: rust-lang.c:1180
+#: rust-lang.c:1038
 msgid "Method calls only supported on struct or enum types"
 msgstr ""
 
-#: rust-lang.c:1182
+#: rust-lang.c:1040
 msgid "Method call on nameless type"
 msgstr ""
 
-#: rust-lang.c:1189
+#: rust-lang.c:1047
 #, possible-c-format
 msgid "Could not find function named '%s'"
 msgstr ""
 
-#: rust-lang.c:1193
+#: rust-lang.c:1051
 #, possible-c-format
 msgid "Function '%s' takes no arguments"
 msgstr ""
 
-#: rust-lang.c:1262
+#: rust-lang.c:1120
 msgid "Range expression with different types"
 msgstr ""
 
-#: rust-lang.c:1371
+#: rust-lang.c:1229
 msgid "Can't take slice of array without '&'"
 msgstr ""
 
-#: rust-lang.c:1395
+#: rust-lang.c:1253
 msgid "Could not find 'data_ptr' in slice type"
 msgstr ""
 
-#: rust-lang.c:1400 rust-lang.c:1451
+#: rust-lang.c:1258 rust-lang.c:1309
 msgid "Cannot subscript non-array type"
 msgstr ""
 
-#: rust-lang.c:1430
+#: rust-lang.c:1288
 msgid "Can't compute array bounds"
 msgstr ""
 
-#: rust-lang.c:1432
+#: rust-lang.c:1290
 msgid "Found array with non-zero lower bound"
 msgstr ""
 
-#: rust-lang.c:1457
+#: rust-lang.c:1315
 msgid "Index less than zero"
 msgstr ""
 
-#: rust-lang.c:1459
+#: rust-lang.c:1317
 msgid "Index greater than length"
 msgstr ""
 
-#: rust-lang.c:1475
+#: rust-lang.c:1333
 msgid "High index less than zero"
 msgstr ""
 
-#: rust-lang.c:1477
+#: rust-lang.c:1335
 msgid "Low index greater than high index"
 msgstr ""
 
-#: rust-lang.c:1479
+#: rust-lang.c:1337
 msgid "High index greater than length"
 msgstr ""
 
-#: rust-lang.c:1642
+#: rust-lang.c:1500
 msgid "Array with negative number of elements"
 msgstr ""
 
-#: rust-lang.c:1683
+#: rust-lang.c:1545
 #, possible-c-format
 msgid "Cannot access field %d of empty enum %s"
 msgstr ""
 
-#: rust-lang.c:1706
+#: rust-lang.c:1560
 #, possible-c-format
 msgid "Cannot access field %d of variant %s::%s, there are only %d fields"
 msgstr ""
 
-#: rust-lang.c:1712
+#: rust-lang.c:1566
 #, possible-c-format
 msgid "Cannot access field %d of %s, there are only %d fields"
 msgstr ""
 
-#: rust-lang.c:1721
+#: rust-lang.c:1575
 #, possible-c-format
 msgid "Variant %s::%s is not a tuple variant"
 msgstr ""
 
-#: rust-lang.c:1725
+#: rust-lang.c:1579
 #, possible-c-format
 msgid ""
 "Attempting to access anonymous field %d of %s, which is not a tuple, tuple "
 "struct, or tuple-like variant"
 msgstr ""
 
-#: rust-lang.c:1734
+#: rust-lang.c:1588
 msgid ""
 "Anonymous field access is only allowed on tuples, tuple structs, and tuple-"
 "like enum variants"
 msgstr ""
 
-#: rust-lang.c:1755
+#: rust-lang.c:1613
 #, possible-c-format
 msgid "Cannot access field %s of empty enum %s"
 msgstr ""
 
-#: rust-lang.c:1772
+#: rust-lang.c:1622
 #, possible-c-format
 msgid ""
 "Attempting to access named field %s of tuple variant %s::%s, which has only "
 "anonymous fields"
 msgstr ""
 
-#: rust-lang.c:1784
+#: rust-lang.c:1634
 #, possible-c-format
 msgid "Could not find field %s of struct variant %s::%s"
 msgstr ""
@@ -26644,34 +26528,34 @@ msgstr ""
 msgid "Couldn't modify watchpoint status"
 msgstr ""
 
-#: s390-linux-nat.c:1057
+#: s390-linux-nat.c:1058
 msgid "Set whether to show the PER (debug) hardware state."
 msgstr ""
 
-#: s390-linux-nat.c:1058
+#: s390-linux-nat.c:1059
 msgid "Show whether to show the PER (debug) hardware state."
 msgstr ""
 
-#: s390-linux-nat.c:1059
+#: s390-linux-nat.c:1060
 msgid ""
 "Use \"on\" to enable, \"off\" to disable.\n"
 "If enabled, the PER state is shown after it is changed by GDB,\n"
 "and when the inferior triggers a breakpoint or watchpoint."
 msgstr ""
 
-#: s390-tdep.c:1953
+#: s390-tdep.c:1955
 msgid "Stack overflow"
 msgstr ""
 
-#: s390-tdep.c:2071
+#: s390-tdep.c:2073
 msgid "invalid return type"
 msgstr ""
 
-#: s390-tdep.c:2109
+#: s390-tdep.c:2111
 msgid "Cannot set function return value."
 msgstr ""
 
-#: s390-tdep.c:2111
+#: s390-tdep.c:2113
 msgid "Function return value unknown."
 msgstr ""
 
@@ -26701,152 +26585,152 @@ msgstr ""
 #. timer tick
 #. keyboard
 #. slave icu
-#: ser-go32.c:931
+#: ser-go32.c:932
 msgid "Set COM1 base i/o port address."
 msgstr ""
 
-#: ser-go32.c:932
+#: ser-go32.c:933
 msgid "Show COM1 base i/o port address."
 msgstr ""
 
-#: ser-go32.c:938
+#: ser-go32.c:939
 msgid "Set COM1 interrupt request."
 msgstr ""
 
-#: ser-go32.c:939
+#: ser-go32.c:940
 msgid "Show COM1 interrupt request."
 msgstr ""
 
-#: ser-go32.c:945
+#: ser-go32.c:946
 msgid "Set COM2 base i/o port address."
 msgstr ""
 
-#: ser-go32.c:946
+#: ser-go32.c:947
 msgid "Show COM2 base i/o port address."
 msgstr ""
 
-#: ser-go32.c:952
+#: ser-go32.c:953
 msgid "Set COM2 interrupt request."
 msgstr ""
 
-#: ser-go32.c:953
+#: ser-go32.c:954
 msgid "Show COM2 interrupt request."
 msgstr ""
 
-#: ser-go32.c:959
+#: ser-go32.c:960
 msgid "Set COM3 base i/o port address."
 msgstr ""
 
-#: ser-go32.c:960
+#: ser-go32.c:961
 msgid "Show COM3 base i/o port address."
 msgstr ""
 
-#: ser-go32.c:966
+#: ser-go32.c:967
 msgid "Set COM3 interrupt request."
 msgstr ""
 
-#: ser-go32.c:967
+#: ser-go32.c:968
 msgid "Show COM3 interrupt request."
 msgstr ""
 
-#: ser-go32.c:973
+#: ser-go32.c:974
 msgid "Set COM4 base i/o port address."
 msgstr ""
 
-#: ser-go32.c:974
+#: ser-go32.c:975
 msgid "Show COM4 base i/o port address."
 msgstr ""
 
-#: ser-go32.c:980
+#: ser-go32.c:981
 msgid "Set COM4 interrupt request."
 msgstr ""
 
-#: ser-go32.c:981
+#: ser-go32.c:982
 msgid "Show COM4 interrupt request."
 msgstr ""
 
-#: ser-go32.c:988
+#: ser-go32.c:989
 msgid "Print DOS serial port status."
 msgstr ""
 
-#: serial.c:392
+#: serial.c:396
 msgid "serial_readchar: blocking read in async mode"
 msgstr ""
 
-#: serial.c:647
+#: serial.c:637
 #, possible-c-format
 msgid "Baud rate for remote serial I/O is %s.\n"
 msgstr ""
 
-#: serial.c:679
+#: serial.c:670
 msgid ""
 "Connect the terminal directly up to the command monitor.\n"
 "Use <CR>~. or <CR>~^D to break out."
 msgstr ""
 
-#: serial.c:684
+#: serial.c:675
 msgid "Set default serial/parallel port configuration."
 msgstr ""
 
-#: serial.c:690
+#: serial.c:681
 msgid "Show default serial/parallel port configuration."
 msgstr ""
 
 #. If target is open when baud changes, it doesn't take effect until
 #. the next open (I think, not sure).
-#: serial.c:698
+#: serial.c:689
 msgid "Set baud rate for remote serial I/O."
 msgstr ""
 
-#: serial.c:699
+#: serial.c:690
 msgid "Show baud rate for remote serial I/O."
 msgstr ""
 
-#: serial.c:700
+#: serial.c:691
 msgid ""
 "This value is used to set the speed of the serial port when debugging\n"
 "using remote targets."
 msgstr ""
 
-#: serial.c:708
+#: serial.c:699
 msgid "Set parity for remote serial I/O."
 msgstr ""
 
-#: serial.c:709
+#: serial.c:700
 msgid "Show parity for remote serial I/O."
 msgstr ""
 
-#: serial.c:715
+#: serial.c:706
 msgid "Set filename for remote session recording."
 msgstr ""
 
-#: serial.c:716
+#: serial.c:707
 msgid "Show filename for remote session recording."
 msgstr ""
 
-#: serial.c:717
+#: serial.c:708
 msgid ""
 "This file is used to record the remote session for future playback\n"
 "by gdbserver."
 msgstr ""
 
-#: serial.c:725
+#: serial.c:716
 msgid "Set numerical base for remote session logging."
 msgstr ""
 
-#: serial.c:726
+#: serial.c:717
 msgid "Show numerical base for remote session logging."
 msgstr ""
 
-#: serial.c:733
+#: serial.c:724
 msgid "Set serial debugging."
 msgstr ""
 
-#: serial.c:734
+#: serial.c:725
 msgid "Show serial debugging."
 msgstr ""
 
-#: serial.c:735
+#: serial.c:726
 msgid "When non-zero, serial port debugging is enabled."
 msgstr ""
 
@@ -26880,35 +26764,40 @@ msgstr ""
 msgid "error starting child process '%s': %s"
 msgstr ""
 
+#: ser-tcp.c:291
+#, possible-c-format
+msgid "Missing port on hostname '%s'"
+msgstr ""
+
 #: ser-tcp.c:299
 #, possible-c-format
 msgid "%s: cannot resolve name: %s\n"
 msgstr ""
 
 #. allow-unknown
-#: ser-tcp.c:482 ser-tcp.c:487
+#: ser-tcp.c:469 ser-tcp.c:474
 msgid ""
 "TCP protocol specific variables.\n"
 "Configure variables specific to remote TCP connections."
 msgstr ""
 
-#: ser-tcp.c:494
+#: ser-tcp.c:481
 msgid "Set auto-retry on socket connect."
 msgstr ""
 
-#: ser-tcp.c:495
+#: ser-tcp.c:482
 msgid "Show auto-retry on socket connect."
 msgstr ""
 
-#: ser-tcp.c:501
+#: ser-tcp.c:488
 msgid "Set timeout limit in seconds for socket connection."
 msgstr ""
 
-#: ser-tcp.c:502
+#: ser-tcp.c:489
 msgid "Show timeout limit in seconds for socket connection."
 msgstr ""
 
-#: ser-tcp.c:503
+#: ser-tcp.c:490
 msgid ""
 "If set to \"unlimited\", GDB will keep attempting to establish a\n"
 "connection forever, unless interrupted with Ctrl-c.\n"
@@ -26941,15 +26830,15 @@ msgstr ""
 msgid "Invalid baud rate %d.  Maximum value is %d."
 msgstr ""
 
-#: ser-unix.c:508
+#: ser-unix.c:509
 msgid "Set use of hardware flow control for remote serial I/O."
 msgstr ""
 
-#: ser-unix.c:509
+#: ser-unix.c:510
 msgid "Show use of hardware flow control for remote serial I/O."
 msgstr ""
 
-#: ser-unix.c:510
+#: ser-unix.c:511
 msgid ""
 "Enable or disable hardware flow control (RTS/CTS) on the serial port\n"
 "when debugging using remote targets."
@@ -26959,15 +26848,15 @@ msgstr ""
 msgid "sh_register_convert_to_raw called with non DR register number"
 msgstr ""
 
-#: sh-tdep.c:2437
+#: sh-tdep.c:2424
 msgid "Set calling convention used when calling target functions from GDB."
 msgstr ""
 
-#: sh-tdep.c:2439
+#: sh-tdep.c:2426
 msgid "Show calling convention used when calling target functions from GDB."
 msgstr ""
 
-#: sh-tdep.c:2441
+#: sh-tdep.c:2428
 msgid ""
 "gcc       - Use GCC calling convention (default).\n"
 "renesas   - Enforce Renesas calling convention."
@@ -26991,78 +26880,78 @@ msgstr ""
 msgid "Function %s will be skipped when stepping.\n"
 msgstr ""
 
-#: skip.c:216
+#: skip.c:212
 msgid "No default function now."
 msgstr ""
 
-#: skip.c:221
+#: skip.c:219
 #, possible-c-format
 msgid "No function found containing current program point %s."
 msgstr ""
 
-#: skip.c:259 skip.c:267 skip.c:275 skip.c:283
+#: skip.c:256 skip.c:264 skip.c:272 skip.c:280
 #, possible-c-format
 msgid "Missing value for %s option."
 msgstr ""
 
-#: skip.c:288
+#: skip.c:285
 #, possible-c-format
 msgid "Invalid skip option: %s"
 msgstr ""
 
-#: skip.c:303
+#: skip.c:300
 msgid "Cannot specify both -file and -gfile."
 msgstr ""
 
-#: skip.c:306
+#: skip.c:303
 msgid "Cannot specify both -function and -rfunction."
 msgstr ""
 
-#: skip.c:335
+#: skip.c:332
 msgid "File(s)"
 msgstr ""
 
-#: skip.c:335
+#: skip.c:332
 msgid "File"
 msgstr ""
 
-#: skip.c:336
+#: skip.c:333
 msgid "file(s)"
 msgstr ""
 
-#: skip.c:338
+#: skip.c:335
 msgid "Function(s)"
 msgstr ""
 
-#: skip.c:338
+#: skip.c:335
 msgid "Function"
 msgstr ""
 
-#: skip.c:342 skip.c:347
+#: skip.c:339 skip.c:344
 #, possible-c-format
 msgid "%s %s will be skipped when stepping.\n"
 msgstr ""
 
-#: skip.c:352
+#: skip.c:349
 #, possible-c-format
 msgid "%s %s in %s %s will be skipped when stepping.\n"
 msgstr ""
 
-#: skip.c:377
+#: skip.c:374
 msgid "Not skipping any files or functions.\n"
 msgstr ""
 
-#: skip.c:380
+#: skip.c:377
 #, possible-c-format
 msgid "No skiplist entries found with number %s.\n"
 msgstr ""
 
-#: skip.c:450 skip.c:466 skip.c:490
+#: skip.c:447 skip.c:463 skip.c:487
 #, possible-c-format
 msgid "No skiplist entries found with number %s."
 msgstr ""
 
-#: skip.c:674
+#: skip.c:672
 msgid ""
 "Ignore a function while stepping.\n"
 "\n"
@@ -27078,21 +26967,21 @@ msgid ""
 "       -rfu|-rfunction FUNCTION-NAME-REGULAR-EXPRESSION"
 msgstr ""
 
-#: skip.c:689
+#: skip.c:687
 msgid ""
 "Ignore a file while stepping.\n"
 "Usage: skip file [FILE-NAME]\n"
 "If no filename is given, ignore the current file."
 msgstr ""
 
-#: skip.c:696
+#: skip.c:694
 msgid ""
 "Ignore a function while stepping.\n"
 "Usage: skip function [FUNCTION-NAME]\n"
 "If no function name is given, skip the current function."
 msgstr ""
 
-#: skip.c:703
+#: skip.c:701
 msgid ""
 "Enable skip entries.\n"
 "Usage: skip enable [NUMBER | RANGE]...\n"
@@ -27102,18 +26991,18 @@ msgid ""
 "If you don't specify any numbers or ranges, we'll enable all skip entries."
 msgstr ""
 
-#: skip.c:712
+#: skip.c:710
 msgid ""
 "Disable skip entries.\n"
 "Usage: skip disable [NUMBER | RANGE]...\n"
 "You can specify numbers (e.g. \"skip disable 1 3\"),\n"
-"ranges (e.g. \"skip disable 4-8\"), or both (e.g. \"skip disable 1 3 4-8"
-"\").\n"
+"ranges (e.g. \"skip disable 4-8\"), or both (e.g. \"skip disable 1 3 "
+"4-8\").\n"
 "\n"
 "If you don't specify any numbers or ranges, we'll disable all skip entries."
 msgstr ""
 
-#: skip.c:721
+#: skip.c:719
 msgid ""
 "Delete skip entries.\n"
 "Usage: skip delete [NUMBER | RANGES]...\n"
@@ -27123,7 +27012,7 @@ msgid ""
 "If you don't specify any numbers or ranges, we'll delete all skip entries."
 msgstr ""
 
-#: skip.c:730
+#: skip.c:728
 msgid ""
 "Display the status of skips.\n"
 "Usage: info skip [NUMBER | RANGES]...\n"
@@ -27133,17 +27022,17 @@ msgid ""
 "If you don't specify any numbers or ranges, we'll show all skips."
 msgstr ""
 
-#: skip.c:739
+#: skip.c:737
 msgid ""
 "Set whether to print the debug output about skipping files and functions."
 msgstr ""
 
-#: skip.c:741
+#: skip.c:739
 msgid ""
 "Show whether the debug output about skipping files and functions is printed."
 msgstr ""
 
-#: skip.c:743
+#: skip.c:741
 msgid ""
 "When non-zero, debug output about skipping files and functions is displayed."
 msgstr ""
@@ -27172,63 +27061,63 @@ msgstr ""
 msgid "%s (missing XML support?)"
 msgstr ""
 
-#: solib-aix.c:464
+#: solib-aix.c:460
 msgid "unable to relocate main executable (no info from loader)"
 msgstr ""
 
 #. Should never happen, but recover as best as we can (trying
 #. to open pathname without decoding, possibly leading to
 #. a failure), rather than triggering an assert failure).
-#: solib-aix.c:579
+#: solib-aix.c:575
 #, possible-c-format
 msgid "missing '(' in shared object pathname: %s"
 msgstr ""
 
 #. Arrange to free PATHNAME when the error is thrown.
-#: solib-aix.c:599 solib.c:472
+#: solib-aix.c:595 solib.c:472
 #, possible-c-format
 msgid "Could not open `%s' as an executable file: %s"
 msgstr ""
 
-#: solib-aix.c:609
+#: solib-aix.c:605
 #, possible-c-format
 msgid "\"%s\": not in executable format: %s."
 msgstr ""
 
-#: solib-aix.c:627
+#: solib-aix.c:623
 #, possible-c-format
 msgid "\"%s\": member \"%s\" missing."
 msgstr ""
 
-#: solib-aix.c:634
+#: solib-aix.c:630
 #, possible-c-format
 msgid "%s(%s): not in object format: %s."
 msgstr ""
 
-#: solib-aix.c:679
+#: solib-aix.c:675
 #, possible-c-format
 msgid "unable to find TOC entry for pc %s (no section contains this PC)"
 msgstr ""
 
-#: solib-aix.c:685
+#: solib-aix.c:681
 #, possible-c-format
 msgid "unable to find TOC entry for pc %s (%s has no data section)"
 msgstr ""
 
-#: solib-aix.c:720
+#: solib-aix.c:716
 #, possible-c-format
 msgid "solib-aix debugging is %s.\n"
 msgstr ""
 
-#: solib-aix.c:746
+#: solib-aix.c:743
 msgid "Control the debugging traces for the solib-aix module."
 msgstr ""
 
-#: solib-aix.c:747
+#: solib-aix.c:744
 msgid "Show whether solib-aix debugging traces are enabled."
 msgstr ""
 
-#: solib-aix.c:748
+#: solib-aix.c:745
 msgid "When on, solib-aix debugging traces are enabled."
 msgstr ""
 
@@ -27259,23 +27148,23 @@ msgstr ""
 msgid "Can't find the file sections in `%s': %s"
 msgstr ""
 
-#: solib.c:705
+#: solib.c:698
 #, possible-c-format
 msgid "Error while reading shared library symbols for %s:\n"
 msgstr ""
 
-#: solib.c:883 solib.c:1336
+#: solib.c:874 solib.c:1323
 msgid "Error while mapping shared library sections:\n"
 msgstr ""
 
-#: solib.c:900
+#: solib.c:891
 #, possible-c-format
 msgid ""
 "Could not load shared library symbols for %s.\n"
 "Do you need \"set solib-search-path\" or \"set sysroot\"?"
 msgstr ""
 
-#: solib.c:905
+#: solib.c:896
 #, possible-c-format
 msgid ""
 "Could not load shared library symbols for %d libraries, e.g. %s.\n"
@@ -27283,68 +27172,68 @@ msgid ""
 "Do you need \"set solib-search-path\" or \"set sysroot\"?"
 msgstr ""
 
-#: solib.c:952
+#: solib.c:941
 #, possible-c-format
 msgid "Loading symbols for shared libraries: %s\n"
 msgstr ""
 
-#: solib.c:956 solib.c:1290
+#: solib.c:945 solib.c:1277
 msgid "Loading symbols for shared libraries.\n"
 msgstr ""
 
-#: solib.c:1001
+#: solib.c:990
 #, possible-c-format
 msgid "Symbols already loaded for %s\n"
 msgstr ""
 
-#: solib.c:1116
+#: solib.c:1105
 msgid "No shared libraries matched.\n"
 msgstr ""
 
-#: solib.c:1118
+#: solib.c:1107
 msgid "No shared libraries loaded at this time.\n"
 msgstr ""
 
-#: solib.c:1123
+#: solib.c:1112
 msgid "(*): Shared library is missing debugging information.\n"
 msgstr ""
 
-#: solib.c:1419
+#: solib.c:1406
 #, possible-c-format
 msgid "\"%s\" is deprecated, use \"%s\" instead."
 msgstr ""
 
-#: solib.c:1421
+#: solib.c:1408
 #, possible-c-format
 msgid "sysroot set to \"%s\"."
 msgstr ""
 
-#: solib.c:1434
+#: solib.c:1421
 #, possible-c-format
 msgid "Autoloading of shared library symbols is %s.\n"
 msgstr ""
 
-#: solib.c:1580
+#: solib.c:1567
 msgid "Load shared object library symbols for files matching REGEXP."
 msgstr ""
 
-#: solib.c:1582
+#: solib.c:1569
 msgid "Status of loaded shared object libraries."
 msgstr ""
 
-#: solib.c:1585
+#: solib.c:1572
 msgid "Unload all shared object library symbols."
 msgstr ""
 
-#: solib.c:1588
+#: solib.c:1575
 msgid "Set autoloading of shared library symbols."
 msgstr ""
 
-#: solib.c:1589
+#: solib.c:1576
 msgid "Show autoloading of shared library symbols."
 msgstr ""
 
-#: solib.c:1590
+#: solib.c:1577
 msgid ""
 "If \"on\", symbols from all shared object libraries will be loaded\n"
 "automatically when the inferior begins execution, when the dynamic linker\n"
@@ -27352,43 +27241,43 @@ msgid ""
 "inferior.  Otherwise, symbols must be loaded manually, using `sharedlibrary'."
 msgstr ""
 
-#: solib.c:1601
+#: solib.c:1588
 msgid "Set an alternate system root."
 msgstr ""
 
-#: solib.c:1602
+#: solib.c:1589
 msgid "Show the current system root."
 msgstr ""
 
-#: solib.c:1603
+#: solib.c:1590
 msgid ""
 "The system root is used to load absolute shared library symbol files.\n"
 "For other (relative) files, you can add directories using\n"
 "`set solib-search-path'."
 msgstr ""
 
-#: solib.c:1617
+#: solib.c:1604
 msgid ""
 "Set the search path for loading non-absolute shared library symbol files."
 msgstr ""
 
-#: solib.c:1619
+#: solib.c:1606
 msgid ""
 "Show the search path for loading non-absolute shared library symbol files."
 msgstr ""
 
-#: solib.c:1621
+#: solib.c:1608
 msgid ""
 "This takes precedence over the environment variables PATH and "
 "LD_LIBRARY_PATH."
 msgstr ""
 
-#: solib-darwin.c:524
+#: solib-darwin.c:522
 #, possible-c-format
 msgid "unhandled dyld version (%d)"
 msgstr ""
 
-#: solib-darwin.c:659
+#: solib-darwin.c:657
 #, possible-c-format
 msgid "`%s': not a shared-library: %s"
 msgstr ""
@@ -27418,42 +27307,41 @@ msgid ""
 "incomplete."
 msgstr ""
 
-#: solib-dsbt.c:693
+#: solib-dsbt.c:691
 msgid ""
 "dsbt_current_sos: Unable to fetch load map.  Shared object chain may be "
 "incomplete."
 msgstr ""
 
-#: solib-dsbt.c:710 solib-frv.c:415
-#, possible-c-format
-msgid "Can't read pathname for link map entry: %s."
+#: solib-dsbt.c:708 solib-frv.c:413
+msgid "Can't read pathname for link map entry."
 msgstr ""
 
-#: solib-dsbt.c:757 solib-frv.c:486 solib-svr4.c:2444
+#: solib-dsbt.c:754 solib-frv.c:483 solib-svr4.c:2454
 msgid ""
 "Unable to find dynamic linker breakpoint function.\n"
 "GDB will be unable to debug shared library initializers\n"
 "and track explicitly loaded dynamic code."
 msgstr ""
 
-#: solib-dsbt.c:971 solib-frv.c:845
+#: solib-dsbt.c:967 solib-frv.c:841
 msgid "shared library handler failed to enable breakpoint"
 msgstr ""
 
-#: solib-dsbt.c:1021
+#: solib-dsbt.c:1017
 #, possible-c-format
 msgid "solib-dsbt debugging is %s.\n"
 msgstr ""
 
-#: solib-dsbt.c:1040
+#: solib-dsbt.c:1037
 msgid "Set internal debugging of shared library code for DSBT ELF."
 msgstr ""
 
-#: solib-dsbt.c:1041
+#: solib-dsbt.c:1038
 msgid "Show internal debugging of shared library code for DSBT ELF."
 msgstr ""
 
-#: solib-dsbt.c:1042
+#: solib-dsbt.c:1039
 msgid "When non-zero, DSBT solib specific internal debugging is enabled."
 msgstr ""
 
@@ -27463,58 +27351,58 @@ msgid ""
 "incomplete."
 msgstr ""
 
-#: solib-frv.c:392
+#: solib-frv.c:390
 msgid ""
 "frv_current_sos: Unable to fetch load map.  Shared object chain may be "
 "incomplete."
 msgstr ""
 
-#: solib-frv.c:582
+#: solib-frv.c:579
 msgid "Unable to determine dynamic linker loadmap address."
 msgstr ""
 
-#: solib-frv.c:595
+#: solib-frv.c:592
 #, possible-c-format
 msgid "Unable to load dynamic linker loadmap at address %s."
 msgstr ""
 
-#: solib-frv.c:626
+#: solib-frv.c:623
 msgid "Could not find symbol _dl_debug_addr in dynamic linker"
 msgstr ""
 
-#: solib-frv.c:649
+#: solib-frv.c:646
 #, possible-c-format
 msgid ""
 "Unable to fetch contents of _dl_debug_addr (at address %s) from dynamic "
 "linker"
 msgstr ""
 
-#: solib-frv.c:675
+#: solib-frv.c:672
 #, possible-c-format
 msgid ""
 "Unable to fetch _dl_debug_addr->r_brk (at address %s) from dynamic linker"
 msgstr ""
 
-#: solib-frv.c:686
+#: solib-frv.c:683
 #, possible-c-format
 msgid ""
 "Unable to fetch _dl_debug_addr->.r_brk entry point (at address %s) from "
 "dynamic linker"
 msgstr ""
 
-#: solib-frv.c:782
+#: solib-frv.c:779
 msgid "Unable to load the executable's loadmap."
 msgstr ""
 
-#: solib-frv.c:1160
+#: solib-frv.c:1145
 msgid "Set internal debugging of shared library code for FR-V."
 msgstr ""
 
-#: solib-frv.c:1161
+#: solib-frv.c:1146
 msgid "Show internal debugging of shared library code for FR-V."
 msgstr ""
 
-#: solib-frv.c:1162
+#: solib-frv.c:1147
 msgid "When non-zero, FR-V solib specific internal debugging is enabled."
 msgstr ""
 
@@ -27544,41 +27432,39 @@ msgid ""
 "version mismatch?)"
 msgstr ""
 
-#: solib-svr4.c:973
+#: solib-svr4.c:971
 msgid "Attempt to reload symbols from process? "
 msgstr ""
 
-#: solib-svr4.c:1000
-#, possible-c-format
-msgid "failed to read exec filename from attached file: %s"
+#: solib-svr4.c:999
+msgid "failed to read exec filename from attached file"
 msgstr ""
 
-#: solib-svr4.c:1150
+#: solib-svr4.c:1148
 #, possible-c-format
 msgid "SVR4 Library list has unsupported version \"%s\""
 msgstr ""
 
-#: solib-svr4.c:1209 solib-target.c:217
+#: solib-svr4.c:1207 solib-target.c:217
 msgid "target library list"
 msgstr ""
 
-#: solib-svr4.c:1314
+#: solib-svr4.c:1309
 #, possible-c-format
 msgid "Corrupted shared library list: %s != %s"
 msgstr ""
 
-#: solib-svr4.c:1342
-#, possible-c-format
-msgid "Can't read pathname for load map: %s."
+#: solib-svr4.c:1337
+msgid "Can't read pathname for load map."
 msgstr ""
 
-#: solib-svr4.c:1864
+#: solib-svr4.c:1857
 msgid ""
 "Probes-based dynamic linker interface failed.\n"
 "Reverting to original interface."
 msgstr ""
 
-#: solib-svr4.c:2121
+#: solib-svr4.c:2134
 msgid ""
 "Initializing probes-based dynamic linker interface failed.\n"
 "Reverting to original interface."
@@ -27587,7 +27473,7 @@ msgstr ""
 #. It can be printed repeatedly as there is no easy way to check
 #. the executable symbols/file has been already relocated to
 #. displacement.
-#: solib-svr4.c:2904
+#: solib-svr4.c:2914
 #, possible-c-format
 msgid ""
 "Using PIE (Position Independent Executable) displacement %s for \"%s\".\n"
@@ -27601,18 +27487,18 @@ msgstr ""
 msgid "No segment or section bases defined"
 msgstr ""
 
-#: solib-target.c:329
+#: solib-target.c:327
 #, possible-c-format
 msgid ""
 "Could not relocate shared library \"%s\": wrong number of ALLOC sections"
 msgstr ""
 
-#: solib-target.c:373
+#: solib-target.c:371
 #, possible-c-format
 msgid "Could not relocate shared library \"%s\": no segments"
 msgstr ""
 
-#: solib-target.c:383
+#: solib-target.c:382
 #, possible-c-format
 msgid "Could not relocate shared library \"%s\": bad offsets"
 msgstr ""
@@ -27656,207 +27542,212 @@ msgid "lwp_to_thread: td_thr_get_info: %
 msgstr ""
 
 #. Inactive thread.
-#: sol-thread.c:414 sol-thread.c:446
+#: sol-thread.c:414 sol-thread.c:436
 msgid "This version of Solaris can't start inactive threads."
 msgstr ""
 
-#: sol-thread.c:416 sol-thread.c:448
+#: sol-thread.c:416 sol-thread.c:438
 #, possible-c-format
 msgid "Specified thread %ld seems to have terminated"
 msgstr ""
 
-#: sol-thread.c:499
+#: sol-thread.c:493
 msgid "sol_thread_fetch_registers: thread == 0"
 msgstr ""
 
-#: sol-thread.c:503
+#: sol-thread.c:497
 #, possible-c-format
 msgid "sol_thread_fetch_registers: td_ta_map_id2thr: %s"
 msgstr ""
 
-#: sol-thread.c:510
+#: sol-thread.c:504
 #, possible-c-format
 msgid "sol_thread_fetch_registers: td_thr_getgregs %s"
 msgstr ""
 
-#: sol-thread.c:520
+#: sol-thread.c:514
 #, possible-c-format
 msgid "sol_thread_fetch_registers: td_thr_getfpregs %s"
 msgstr ""
 
-#: sol-thread.c:553
+#: sol-thread.c:547
 #, possible-c-format
 msgid "sol_thread_store_registers: td_ta_map_id2thr %s"
 msgstr ""
 
-#: sol-thread.c:560
+#: sol-thread.c:554
 #, possible-c-format
 msgid "sol_thread_store_registers: td_thr_getgregs %s"
 msgstr ""
 
-#: sol-thread.c:564
+#: sol-thread.c:558
 #, possible-c-format
 msgid "sol_thread_store_registers: td_thr_getfpregs %s"
 msgstr ""
 
-#: sol-thread.c:573
+#: sol-thread.c:567
 #, possible-c-format
 msgid "sol_thread_store_registers: td_thr_setgregs %s"
 msgstr ""
 
-#: sol-thread.c:577
+#: sol-thread.c:571
 #, possible-c-format
 msgid "sol_thread_store_registers: td_thr_setfpregs %s"
 msgstr ""
 
-#: sol-thread.c:634
+#: sol-thread.c:628
 #, possible-c-format
 msgid "sol_thread_new_objfile: td_init: %s"
 msgstr ""
 
-#: sol-thread.c:662
+#: sol-thread.c:656
 #, possible-c-format
 msgid "Cannot initialize thread debugging library: %s"
 msgstr ""
 
-#: sol-thread.c:1131
+#: sol-thread.c:1101
 msgid "info sol-thread: failed to get info for thread."
 msgstr ""
 
-#: sol-thread.c:1219
+#: sol-thread.c:1190
 msgid "Show info on Solaris user threads."
 msgstr ""
 
-#: source.c:97
+#: source.c:126
 #, possible-c-format
 msgid "Number of source lines gdb will list by default is %s.\n"
 msgstr ""
 
-#: source.c:120
+#: source.c:149
 #, possible-c-format
 msgid "Filenames are displayed as \"%s\".\n"
 msgstr ""
 
-#: source.c:322
+#: source.c:351
 msgid "Can't find a default source file"
 msgstr ""
 
-#: source.c:426
+#: source.c:453
 msgid "Reinitialize source path to empty? "
 msgstr ""
 
-#: source.c:650
+#: source.c:595
+#, possible-c-format
+msgid "%s is not a directory."
+msgstr ""
+
+#: source.c:676
 msgid "No current source file.\n"
 msgstr ""
 
-#: source.c:655
+#: source.c:681
 #, possible-c-format
 msgid "Current source file is %s\n"
 msgstr ""
 
-#: source.c:657
+#: source.c:683
 #, possible-c-format
 msgid "Compilation directory is %s\n"
 msgstr ""
 
-#: source.c:659
+#: source.c:685
 #, possible-c-format
 msgid "Located in %s\n"
 msgstr ""
 
-#: source.c:662
+#: source.c:688
 #, possible-c-format
 msgid "Contains %d line%s.\n"
 msgstr ""
 
-#: source.c:665
+#: source.c:691
 #, possible-c-format
 msgid "Source language is %s.\n"
 msgstr ""
 
-#: source.c:666
+#: source.c:692
 #, possible-c-format
 msgid "Producer is %s.\n"
 msgstr ""
 
-#: source.c:669
+#: source.c:695
 #, possible-c-format
 msgid "Compiled with %s debugging format.\n"
 msgstr ""
 
-#: source.c:671
+#: source.c:697
 #, possible-c-format
 msgid "%s preprocessor macro info.\n"
 msgstr ""
 
-#: source.c:1182
+#: source.c:1236
 msgid "invalid filename_display_string"
 msgstr ""
 
-#: source.c:1287
+#: source.c:1341
 #, possible-c-format
 msgid "Line number %d out of range; %s has %d lines."
 msgstr ""
 
-#: source.c:1426
+#: source.c:1483
 msgid "No line number information available"
 msgstr ""
 
 #. Is there any case in which we get here, and have an address
 #. which the user would want to see?  If we have debugging symbols
 #. and no line numbers?
-#: source.c:1486
+#: source.c:1542
 #, possible-c-format
 msgid "Line number %d is out of range for \"%s\".\n"
 msgstr ""
 
-#: source.c:1521
+#: source.c:1577
 msgid "Expression not found"
 msgstr ""
 
-#: source.c:1581
+#: source.c:1637
 msgid "Expression not found\n"
 msgstr ""
 
-#: source.c:1698
+#: source.c:1754
 msgid "Too many arguments in command"
 msgstr ""
 
-#: source.c:1707
+#: source.c:1763
 #, possible-c-format
 msgid "Source path substitution rule matching `%s':\n"
 msgstr ""
 
-#: source.c:1709
+#: source.c:1765
 msgid "List of all source path substitution rules:\n"
 msgstr ""
 
-#: source.c:1732 source.c:1783
+#: source.c:1788 source.c:1839
 msgid "Incorrect usage, too many arguments in command"
 msgstr ""
 
-#: source.c:1742
+#: source.c:1798
 msgid "Delete all source path substitution rules? "
 msgstr ""
 
-#: source.c:1743
+#: source.c:1799
 msgid "Canceled"
 msgstr ""
 
-#: source.c:1765
+#: source.c:1821
 #, possible-c-format
 msgid "No substitution rule defined for `%s'"
 msgstr ""
 
-#: source.c:1780
+#: source.c:1836
 msgid "Incorrect usage, too few arguments in command"
 msgstr ""
 
-#: source.c:1786
+#: source.c:1842
 msgid "First argument must be at least one character long"
 msgstr ""
 
-#: source.c:1847
+#: source.c:1904
 msgid ""
 "Add directory DIR to beginning of search path for source files.\n"
 "Forget cached info on source file locations and line positions.\n"
@@ -27865,15 +27756,15 @@ msgid ""
 "With no argument, reset the search path to $cdir:$cwd, the default."
 msgstr ""
 
-#: source.c:1863
+#: source.c:1920
 msgid "Set the search path for finding source files."
 msgstr ""
 
-#: source.c:1865
+#: source.c:1922
 msgid "Show the search path for finding source files."
 msgstr ""
 
-#: source.c:1867
+#: source.c:1924
 msgid ""
 "$cwd in the path means the current working directory.\n"
 "$cdir in the path means the compilation directory of the source file.\n"
@@ -27882,11 +27773,11 @@ msgid ""
 "Setting the value to an empty string sets it to $cdir:$cwd, the default."
 msgstr ""
 
-#: source.c:1878
+#: source.c:1935
 msgid "Information about the current source file."
 msgstr ""
 
-#: source.c:1880
+#: source.c:1937
 msgid ""
 "Core addresses of the code for a source line.\n"
 "Line can be specified as\n"
@@ -27901,35 +27792,35 @@ msgid ""
 "The address is also stored as the value of \"$_\"."
 msgstr ""
 
-#: source.c:1892
+#: source.c:1949
 msgid ""
 "Search for regular expression (see regex(3)) from last line listed.\n"
 "The matching line number is also stored as the value of \"$_\"."
 msgstr ""
 
-#: source.c:1898
+#: source.c:1955
 msgid ""
 "Search backward for regular expression (see regex(3)) from last line "
 "listed.\n"
 "The matching line number is also stored as the value of \"$_\"."
 msgstr ""
 
-#: source.c:1903
+#: source.c:1960
 msgid "Set number of source lines gdb will list by default."
 msgstr ""
 
-#: source.c:1904
+#: source.c:1961
 msgid "Show number of source lines gdb will list by default."
 msgstr ""
 
-#: source.c:1905
+#: source.c:1962
 msgid ""
 "Use this to choose how many source lines the \"list\" displays (unless\n"
 "the \"list\" argument explicitly specifies some other number).\n"
 "A value of \"unlimited\", or zero, means there's no limit."
 msgstr ""
 
-#: source.c:1914
+#: source.c:1971
 msgid ""
 "Add a substitution rule to rewrite the source directories.\n"
 "Usage: set substitute-path FROM TO\n"
@@ -27939,7 +27830,7 @@ msgid ""
 "is replaced by the new one."
 msgstr ""
 
-#: source.c:1924
+#: source.c:1981
 msgid ""
 "Delete one or all substitution rules rewriting the source directories.\n"
 "Usage: unset substitute-path [FROM]\n"
@@ -27948,7 +27839,7 @@ msgid ""
 "If the debugger cannot find a rule for FROM, it will display a warning."
 msgstr ""
 
-#: source.c:1933
+#: source.c:1990
 msgid ""
 "Show one or all substitution rules rewriting the source directories.\n"
 "Usage: show substitute-path [FROM]\n"
@@ -27956,15 +27847,15 @@ msgid ""
 "is not specified, print all substitution rules."
 msgstr ""
 
-#: source.c:1942
+#: source.c:1999
 msgid "Set how to display filenames."
 msgstr ""
 
-#: source.c:1943
+#: source.c:2000
 msgid "Show how to display filenames."
 msgstr ""
 
-#: source.c:1944
+#: source.c:2001
 msgid ""
 "filename-display can be:\n"
 "  basename - display only basename of a filename\n"
@@ -27977,80 +27868,80 @@ msgstr ""
 msgid "Source file is more recent than executable."
 msgstr ""
 
-#: sparc64-linux-tdep.c:151
+#: sparc64-linux-tdep.c:152
 msgid "ADI disabled"
 msgstr ""
 
-#: sparc64-linux-tdep.c:157
+#: sparc64-linux-tdep.c:158
 msgid "ADI deferred mismatch"
 msgstr ""
 
-#: sparc64-linux-tdep.c:163
+#: sparc64-linux-tdep.c:164
 msgid "ADI precise mismatch"
 msgstr ""
 
-#: sparc64-tdep.c:355 sparc64-tdep.c:376
+#: sparc64-tdep.c:347 sparc64-tdep.c:368
 #, possible-c-format
 msgid "Address at %s is not in ADI maps"
 msgstr ""
 
-#: sparc64-tdep.c:425 sparc64-tdep.c:443 sparc64-tdep.c:463 sparc64-tdep.c:499
+#: sparc64-tdep.c:417 sparc64-tdep.c:435 sparc64-tdep.c:455 sparc64-tdep.c:491
 msgid "No ADI information"
 msgstr ""
 
-#: sparc64-tdep.c:427 sparc64-tdep.c:445
+#: sparc64-tdep.c:419 sparc64-tdep.c:437
 #, possible-c-format
 msgid "No ADI information at %s"
 msgstr ""
 
-#: sparc64-tdep.c:460 sparc64-tdep.c:496
+#: sparc64-tdep.c:452 sparc64-tdep.c:488
 msgid "ADI command requires a live process/thread"
 msgstr ""
 
-#: sparc64-tdep.c:477
+#: sparc64-tdep.c:469
 msgid "Usage: adi examine|x[/COUNT] [ADDR]"
 msgstr ""
 
-#: sparc64-tdep.c:492
+#: sparc64-tdep.c:484
 msgid "Usage: adi assign|a[/COUNT] ADDR = VERSION"
 msgstr ""
 
-#: sparc64-tdep.c:531
+#: sparc64-tdep.c:523
 #, possible-c-format
 msgid "Invalid ADI version tag %d"
 msgstr ""
 
-#: sparc64-tdep.c:542
+#: sparc64-tdep.c:534
 msgid "ADI version related commands."
 msgstr ""
 
-#: sparc64-tdep.c:545
+#: sparc64-tdep.c:537
 msgid "Examine ADI versions."
 msgstr ""
 
-#: sparc64-tdep.c:548
+#: sparc64-tdep.c:540
 msgid "Assign ADI versions."
 msgstr ""
 
-#: sparc64-tdep.c:818
+#: sparc64-tdep.c:810
 #, possible-c-format
 msgid "sparc64_pseudo_register_name: bad register number %d"
 msgstr ""
 
-#: sparc64-tdep.c:858
+#: sparc64-tdep.c:850
 #, possible-c-format
 msgid "sparc64_pseudo_register_type: bad register number %d"
 msgstr ""
 
-#: sparc-nat.c:229
+#: sparc-nat.c:238
 msgid "Couldn't get floating-point registers"
 msgstr ""
 
-#: sparc-nat.c:242
+#: sparc-nat.c:251
 msgid "Couldn't write floating-point registers"
 msgstr ""
 
-#: sparc-nat.c:288
+#: sparc-nat.c:297
 msgid "Couldn't get StackGhost cookie"
 msgstr ""
 
@@ -28083,93 +27974,93 @@ msgstr ""
 msgid "Bad stabs string '%s'"
 msgstr ""
 
-#: stabsread.c:733
+#: stabsread.c:727
 #, possible-c-format
 msgid "Unknown C++ symbol name `%s'"
 msgstr ""
 
-#: stabsread.c:1488
+#: stabsread.c:1444
 msgid "couldn't parse type; debugger out of date?"
 msgstr ""
 
 #. Complain and keep going, so compilers can invent new
 #. cross-reference types.
-#: stabsread.c:1608
+#: stabsread.c:1564
 #, possible-c-format
 msgid "Unrecognized cross-reference type `%c'"
 msgstr ""
 
-#: stabsread.c:1833
+#: stabsread.c:1789
 #, possible-c-format
 msgid ""
 "Prototyped function type didn't end arguments with `#':\n"
 "%s"
 msgstr ""
 
-#: stabsread.c:1945
+#: stabsread.c:1901
 #, possible-c-format
 msgid "invalid (minimal) member type data format at symtab pos %d."
 msgstr ""
 
-#: stabsread.c:2049
+#: stabsread.c:2005
 msgid "GDB internal error, type is NULL in stabsread.c."
 msgstr ""
 
-#: stabsread.c:2078
+#: stabsread.c:2034
 #, possible-c-format
 msgid "Unknown builtin type %d"
 msgstr ""
 
-#: stabsread.c:2244
+#: stabsread.c:2200
 #, possible-c-format
 msgid "Method has bad physname %s\n"
 msgstr ""
 
-#: stabsread.c:2433
+#: stabsread.c:2389
 #, possible-c-format
 msgid "const/volatile indicator missing, got '%c'"
 msgstr ""
 
 #. error
-#: stabsread.c:2516
+#: stabsread.c:2472
 #, possible-c-format
 msgid "member function type missing, got '%c'"
 msgstr ""
 
-#: stabsread.c:2770
+#: stabsread.c:2726
 #, possible-c-format
 msgid "C++ abbreviated type name unknown at symtab pos %d"
 msgstr ""
 
-#: stabsread.c:3130
+#: stabsread.c:3086
 #, possible-c-format
 msgid "Unknown virtual character `%c' for baseclass"
 msgstr ""
 
-#: stabsread.c:3147
+#: stabsread.c:3103
 #, possible-c-format
 msgid "Unknown visibility `%c' for baseclass"
 msgstr ""
 
 #. Virtual function table field not found.
-#: stabsread.c:3255
+#: stabsread.c:3211
 #, possible-c-format
 msgid "virtual function table pointer not found when defining class `%s'"
 msgstr ""
 
-#: stabsread.c:3367
+#: stabsread.c:3324
 #, possible-c-format
 msgid "Unknown visibility `%c' for field"
 msgstr ""
 
-#: stabsread.c:3403
+#: stabsread.c:3360
 #, 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:4194
+#: stabsread.c:4152
 #, possible-c-format
 msgid "base type %d of range type is not defined"
 msgstr ""
@@ -28178,33 +28069,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:4235
+#: stabsread.c:4193
 msgid "Invalid (empty) method arguments"
 msgstr ""
 
-#: stabsread.c:4277
+#: stabsread.c:4235
 msgid "Invalid symbol data: common block within common block"
 msgstr ""
 
-#: stabsread.c:4302
+#: stabsread.c:4260
 msgid "ECOMM symbol unmatched by BCOMM"
 msgstr ""
 
-#: stabsread.c:4506
+#: stabsread.c:4464
 msgid "need a type name"
 msgstr ""
 
-#: stabsread.c:4531
+#: stabsread.c:4489
 #, possible-c-format
 msgid "forward-referenced types left unresolved, type code %d."
 msgstr ""
 
-#: stabsread.c:4679
+#: stabsread.c:4637
 #, possible-c-format
 msgid "%s: common block `%s' from global_sym_chain unresolved"
 msgstr ""
 
-#: stabsread.c:4761 stabsread.c:4766
+#: stabsread.c:4719 stabsread.c:4724
 #, possible-c-format
 msgid "invalid symbol name \"%s\""
 msgstr ""
@@ -28236,15 +28127,15 @@ msgid "Show printing of non-scalar frame
 msgstr ""
 
 #. show_cmd_cb
-#: stack.c:165 stack.c:3615
+#: stack.c:165 stack.c:3579
 msgid "Set whether to print frame arguments in raw form."
 msgstr ""
 
-#: stack.c:166 stack.c:3616
+#: stack.c:166 stack.c:3580
 msgid "Show whether to print frame arguments in raw form."
 msgstr ""
 
-#: stack.c:167 stack.c:3617
+#: stack.c:167 stack.c:3581
 msgid ""
 "If set, frame arguments are printed in raw form, bypassing any\n"
 "pretty-printers for that value."
@@ -28271,78 +28162,78 @@ msgstr ""
 msgid "Causes Python frame filter elided frames to not be printed."
 msgstr ""
 
-#: stack.c:949
+#: stack.c:955
 #, possible-c-format
 msgid "Debugger's willingness to use disassemble-next-line is %s.\n"
 msgstr ""
 
-#: stack.c:1527
+#: stack.c:1548
 #, possible-c-format
 msgid "Stack level %d, frame at "
 msgstr ""
 
-#: stack.c:1532
+#: stack.c:1553
 msgid "Stack frame at "
 msgstr ""
 
-#: stack.c:1598
+#: stack.c:1619
 #, possible-c-format
 msgid " Outermost frame: %s\n"
 msgstr ""
 
-#: stack.c:1882
+#: stack.c:1903
 #, possible-c-format
 msgid "No frame at level %s."
 msgstr ""
 
-#: stack.c:1896
+#: stack.c:1917
 #, possible-c-format
 msgid "No frame at address %s."
 msgstr ""
 
-#: stack.c:1910
+#: stack.c:1931
 msgid "Missing address argument to view a frame"
 msgstr ""
 
-#: stack.c:1938
+#: stack.c:1959
 msgid "Missing function name argument"
 msgstr ""
 
-#: stack.c:1941
+#: stack.c:1962
 #, possible-c-format
 msgid "No frame for function \"%s\"."
 msgstr ""
 
-#: stack.c:2097
+#: stack.c:2118
 #, possible-c-format
 msgid "Backtrace stopped: %s\n"
 msgstr ""
 
-#: stack.c:2416
+#: stack.c:2388
 msgid "PC unavailable, cannot determine locals.\n"
 msgstr ""
 
-#: stack.c:2448
+#: stack.c:2420
 msgid "No locals.\n"
 msgstr ""
 
-#: stack.c:2450
+#: stack.c:2422
 msgid "No matching locals.\n"
 msgstr ""
 
-#: stack.c:2590
+#: stack.c:2562
 msgid "PC unavailable, cannot determine args.\n"
 msgstr ""
 
-#: stack.c:2618
+#: stack.c:2590
 msgid "No arguments.\n"
 msgstr ""
 
-#: stack.c:2620
+#: stack.c:2592
 msgid "No matching arguments.\n"
 msgstr ""
 
-#: stack.c:2708
+#: stack.c:2680
 msgid "Initial frame selected; you cannot go up."
 msgstr ""
 
@@ -28350,80 +28241,80 @@ msgstr ""
 #. "down" means to really go down (and let me know if that is
 #. impossible), but "down 9999" can be used to mean go all the
 #. way down without getting an error.
-#: stack.c:2745
+#: stack.c:2717
 msgid "Bottom (innermost) frame selected; you cannot go down."
 msgstr ""
 
-#: stack.c:2781
+#: stack.c:2753
 msgid "Can not force return from an inlined function."
 msgstr ""
 
-#: stack.c:2804
+#: stack.c:2776
 msgid ""
 "Return value type not available for selected stack frame.\n"
 "Please use an explicit cast of the value to return."
 msgstr ""
 
-#: stack.c:2851
+#: stack.c:2823
 #, possible-c-format
 msgid "%sMake selected stack frame return now? "
 msgstr ""
 
-#: stack.c:2856
+#: stack.c:2828
 msgid "Function does not return normally to caller."
 msgstr ""
 
-#: stack.c:2857
+#: stack.c:2829
 #, possible-c-format
 msgid "%sMake %s return now? "
 msgstr ""
 
-#: stack.c:2861
+#: stack.c:2833
 msgid "Not confirmed"
 msgstr ""
 
-#: stack.c:2954
+#: stack.c:2926
 #, possible-c-format
 msgid "'%s' not within current stack frame."
 msgstr ""
 
-#: stack.c:2971
+#: stack.c:2943
 msgid "Disables printing the frame location information."
 msgstr ""
 
-#: stack.c:2976 thread.c:1564
+#: stack.c:2948 thread.c:1594
 msgid "Print any error raised by COMMAND and continue."
 msgstr ""
 
-#: stack.c:2981 thread.c:1569
+#: stack.c:2953 thread.c:1599
 msgid "Silently ignore any errors or empty output produced by COMMAND."
 msgstr ""
 
-#: stack.c:3036
+#: stack.c:3008
 msgid "Please specify a command to apply on the selected frames"
 msgstr ""
 
-#: stack.c:3066 stack.c:3077
+#: stack.c:3038 stack.c:3049
 msgid "frame apply unable to get selected frame."
 msgstr ""
 
-#: stack.c:3214
+#: stack.c:3186
 msgid "Missing or invalid LEVEL... argument"
 msgstr ""
 
-#: stack.c:3262
+#: stack.c:3234
 msgid "Missing COUNT argument."
 msgstr ""
 
-#: stack.c:3265
+#: stack.c:3237
 msgid "Invalid COUNT argument."
 msgstr ""
 
-#: stack.c:3285
+#: stack.c:3257
 msgid "Please specify a command to apply on all frames"
 msgstr ""
 
-#: stack.c:3347
+#: stack.c:3320
 msgid ""
 "Make selected stack frame return to its caller.\n"
 "Control remains in the debugger, but when you continue\n"
@@ -28431,31 +28322,31 @@ msgid ""
 "If an argument is given, it is an expression for the value to return."
 msgstr ""
 
-#: stack.c:3353
+#: stack.c:3326
 msgid ""
 "Select and print stack frame that called this one.\n"
 "An argument says how many frames up to go."
 msgstr ""
 
-#: stack.c:3356
+#: stack.c:3329
 msgid ""
 "Same as the `up' command, but does not print anything.\n"
 "This is useful in command scripts."
 msgstr ""
 
-#: stack.c:3360
+#: stack.c:3333
 msgid ""
 "Select and print stack frame called by this one.\n"
 "An argument says how many frames down to go."
 msgstr ""
 
-#: stack.c:3365
+#: stack.c:3338
 msgid ""
 "Same as the `down' command, but does not print anything.\n"
 "This is useful in command scripts."
 msgstr ""
 
-#: stack.c:3370 stack.c:3436
+#: stack.c:3343
 msgid ""
 "Select and print a stack frame.\n"
 "With no argument, print the selected stack frame.  (See also \"info frame"
@@ -28463,7 +28354,7 @@ msgid ""
 "A single numerical argument specifies the frame to select."
 msgstr ""
 
-#: stack.c:3390
+#: stack.c:3362
 msgid ""
 "Apply a command to a number of frames.\n"
 "Usage: frame apply COUNT [OPTION]... COMMAND\n"
@@ -28471,14 +28362,14 @@ msgid ""
 "frames.\n"
 msgstr ""
 
-#: stack.c:3403
+#: stack.c:3375
 msgid ""
 "Apply a command to all frames.\n"
 "\n"
 "Usage: frame apply all [OPTION]... COMMAND\n"
 msgstr ""
 
-#: stack.c:3415
+#: stack.c:3387
 msgid ""
 "Apply a command to a list of frames.\n"
 "\n"
@@ -28486,7 +28377,7 @@ msgid ""
 "LEVEL is a space-separated list of levels of frames to apply COMMAND on.\n"
 msgstr ""
 
-#: stack.c:3428
+#: stack.c:3400
 msgid ""
 "Apply a command to all frames (ignoring errors and empty output).\n"
 "Usage: faas [OPTION]... COMMAND\n"
@@ -28494,14 +28385,14 @@ msgid ""
 "See \"help frame apply all\" for available options."
 msgstr ""
 
-#: stack.c:3444
+#: stack.c:3408
 msgid ""
 "Select and print a stack frame by stack address.\n"
 "\n"
 "Usage: frame address STACK-ADDRESS"
 msgstr ""
 
-#: stack.c:3451
+#: stack.c:3415
 msgid ""
 "View a stack frame that might be outside the current backtrace.\n"
 "\n"
@@ -28509,7 +28400,7 @@ msgid ""
 "       frame view STACK-ADDRESS PC-ADDRESS"
 msgstr ""
 
-#: stack.c:3459
+#: stack.c:3423
 msgid ""
 "Select and print a stack frame by function name.\n"
 "\n"
@@ -28518,27 +28409,27 @@ msgid ""
 "The innermost frame that visited function NAME is selected."
 msgstr ""
 
-#: stack.c:3470
+#: stack.c:3434
 msgid ""
 "Select and print a stack frame by level.\n"
 "\n"
 "Usage: frame level LEVEL"
 msgstr ""
 
-#: stack.c:3477
+#: stack.c:3441
 msgid ""
 "Select a stack frame without printing anything.\n"
 "A single numerical argument specifies the frame to select."
 msgstr ""
 
-#: stack.c:3484
+#: stack.c:3448
 msgid ""
 "Select a stack frame by stack address.\n"
 "\n"
 "Usage: select-frame address STACK-ADDRESS"
 msgstr ""
 
-#: stack.c:3493
+#: stack.c:3457
 msgid ""
 "Select a stack frame that might be outside the current backtrace.\n"
 "\n"
@@ -28546,21 +28437,21 @@ msgid ""
 "       select-frame view STACK-ADDRESS PC-ADDRESS"
 msgstr ""
 
-#: stack.c:3502
+#: stack.c:3466
 msgid ""
 "Select a stack frame by function name.\n"
 "\n"
 "Usage: select-frame function NAME"
 msgstr ""
 
-#: stack.c:3511
+#: stack.c:3475
 msgid ""
 "Select a stack frame by level.\n"
 "\n"
 "Usage: select-frame level LEVEL"
 msgstr ""
 
-#: stack.c:3522
+#: stack.c:3486
 msgid ""
 "Print backtrace of all stack frames, or innermost COUNT frames.\n"
 "Usage: backtrace [OPTION]... [QUALIFIER]... [COUNT | -COUNT]\n"
@@ -28577,11 +28468,11 @@ msgid ""
 "With a negative COUNT, print outermost -COUNT frames."
 msgstr ""
 
-#: stack.c:3547
+#: stack.c:3511
 msgid "Backtrace of the stack, or innermost COUNT frames."
 msgstr ""
 
-#: stack.c:3551
+#: stack.c:3515
 msgid ""
 "All about the selected stack frame.\n"
 "With no arguments, displays information about the currently selected stack\n"
@@ -28589,14 +28480,14 @@ msgid ""
 "the information is then printed about the specified frame."
 msgstr ""
 
-#: stack.c:3559
+#: stack.c:3523
 msgid ""
 "Print information about a stack frame selected by stack address.\n"
 "\n"
 "Usage: info frame address STACK-ADDRESS"
 msgstr ""
 
-#: stack.c:3566
+#: stack.c:3530
 msgid ""
 "Print information about a stack frame outside the current backtrace.\n"
 "\n"
@@ -28604,59 +28495,59 @@ msgid ""
 "       info frame view STACK-ADDRESS PC-ADDRESS"
 msgstr ""
 
-#: stack.c:3574
+#: stack.c:3538
 msgid ""
 "Print information about a stack frame selected by function name.\n"
 "\n"
 "Usage: info frame function NAME"
 msgstr ""
 
-#: stack.c:3582
+#: stack.c:3546
 msgid ""
 "Print information about a stack frame selected by level.\n"
 "\n"
 "Usage: info frame level LEVEL"
 msgstr ""
 
-#: stack.c:3589
+#: stack.c:3553
 msgid ""
 "All local variables of current stack frame or those matching REGEXPs.\n"
 "Usage: info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n"
 "Prints the local variables of the current stack frame.\n"
 msgstr ""
 
-#: stack.c:3593
+#: stack.c:3557
 msgid "local variables"
 msgstr ""
 
-#: stack.c:3597
+#: stack.c:3561
 msgid ""
 "All argument variables of current stack frame or those matching REGEXPs.\n"
 "Usage: info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n"
 "Prints the argument variables of the current stack frame.\n"
 msgstr ""
 
-#: stack.c:3601
+#: stack.c:3565
 msgid "argument variables"
 msgstr ""
 
-#: stack.c:3606
+#: stack.c:3570
 msgid ""
 "Select the stack frame that contains NAME.\n"
 "Usage: func NAME"
 msgstr ""
 
-#: stack.c:3625
+#: stack.c:3589
 msgid ""
 "Set whether to disassemble next source line or insn when execution stops."
 msgstr ""
 
-#: stack.c:3627
+#: stack.c:3591
 msgid ""
 "Show whether to disassemble next source line or insn when execution stops."
 msgstr ""
 
-#: stack.c:3629
+#: stack.c:3593
 msgid ""
 "If ON, GDB will display disassembly of the next source line, in addition\n"
 "to displaying the source line itself.  If the next source line cannot\n"
@@ -28754,18 +28645,18 @@ msgstr ""
 msgid "unrecognized bitness %s%c' for probe `%s'"
 msgstr ""
 
-#: stap-probe.c:1322
+#: stap-probe.c:1321
 msgid ""
 "The SystemTap SDT probe support is not fully implemented on this target;\n"
 "you will not be able to inspect the arguments of the probes.\n"
 "Please report a bug against GDB requesting a port to this target."
 msgstr ""
 
-#: stap-probe.c:1440
+#: stap-probe.c:1436
 msgid "Could not read the value of a SystemTap semaphore."
 msgstr ""
 
-#: stap-probe.c:1456
+#: stap-probe.c:1452
 msgid "Could not write the value of a SystemTap semaphore."
 msgstr ""
 
@@ -28794,21 +28685,21 @@ msgstr ""
 msgid "Semaphore"
 msgstr ""
 
-#: stap-probe.c:1719
+#: stap-probe.c:1720
 msgid "Set SystemTap expression debugging."
 msgstr ""
 
-#: stap-probe.c:1720
+#: stap-probe.c:1721
 msgid "Show SystemTap expression debugging."
 msgstr ""
 
-#: stap-probe.c:1721
+#: stap-probe.c:1722
 msgid ""
 "When non-zero, the internal representation of SystemTap expressions will be "
 "printed."
 msgstr ""
 
-#: stap-probe.c:1728
+#: stap-probe.c:1729
 msgid ""
 "Show information about SystemTap static probes.\n"
 "Usage: info probes stap [PROVIDER [NAME [OBJECT]]]\n"
@@ -28826,151 +28717,151 @@ msgstr ""
 msgid "Standard register ``$ps'' is not available for this target"
 msgstr ""
 
-#: symfile.c:507
+#: symfile.c:506
 #, possible-c-format
 msgid "no loadable sections found in added symbol-file %s"
 msgstr ""
 
-#: symfile.c:620
+#: symfile.c:619
 #, possible-c-format
 msgid "section %s not found in %s"
 msgstr ""
 
-#: symfile.c:1091
+#: symfile.c:1080
 #, possible-c-format
 msgid "Load new symbol table from \"%s\"? "
 msgstr ""
 
-#: symfile.c:1109
+#: symfile.c:1095
 #, possible-c-format
 msgid "Reading symbols from %ps...\n"
 msgstr ""
 
-#: symfile.c:1122
+#: symfile.c:1108
 #, possible-c-format
 msgid "Expanding full symbols from %ps...\n"
 msgstr ""
 
-#: symfile.c:1135
+#: symfile.c:1121
 #, possible-c-format
 msgid "(No debugging symbols found in %ps)\n"
 msgstr ""
 
-#: symfile.c:1248
+#: symfile.c:1234
 #, possible-c-format
 msgid "Discard symbol table from `%s'? "
 msgstr ""
 
-#: symfile.c:1250
+#: symfile.c:1236
 msgid "Discard symbol table? "
 msgstr ""
 
-#: symfile.c:1261
+#: symfile.c:1249
 msgid "No symbol file now.\n"
 msgstr ""
 
-#: symfile.c:1321
+#: symfile.c:1309
 msgid " no, same file as the objfile.\n"
 msgstr ""
 
-#: symfile.c:1335 symfile.c:1353
+#: symfile.c:1323 symfile.c:1341
 msgid " no, error computing CRC.\n"
 msgstr ""
 
-#: symfile.c:1360
+#: symfile.c:1348
 #, possible-c-format
 msgid ""
 "the debug information found in \"%s\" does not match \"%s\" (CRC mismatch).\n"
 msgstr ""
 
-#: symfile.c:1365
+#: symfile.c:1353
 msgid " no, CRC doesn't match.\n"
 msgstr ""
 
-#: symfile.c:1382
+#: symfile.c:1370
 #, possible-c-format
 msgid ""
 "The directory where separate debug symbols are searched for is \"%s\".\n"
 msgstr ""
 
-#: symfile.c:1406
+#: symfile.c:1394
 #, possible-c-format
 msgid ""
 "\n"
 "Looking for separate debug info (debug link) for %s\n"
 msgstr ""
 
-#: symfile.c:1593
+#: symfile.c:1581
 msgid "-readnow and -readnever cannot be used simultaneously"
 msgstr ""
 
-#: symfile.c:1640 symfile.c:1657 symfile.c:2269 symfile.c:2299
+#: symfile.c:1628 symfile.c:1645 symfile.c:2252 symfile.c:2282
 #, possible-c-format
 msgid "Unrecognized argument \"%s\""
 msgstr ""
 
-#: symfile.c:1650 symfile.c:2291
+#: symfile.c:1638 symfile.c:2274
 msgid "Missing argument to -o"
 msgstr ""
 
-#: symfile.c:1661
+#: symfile.c:1649
 msgid "no symbol file name was specified"
 msgstr ""
 
-#: symfile.c:1812
+#: symfile.c:1796
 #, possible-c-format
 msgid "I'm sorry, Dave, I can't do that.  Symbol format `%s' unknown."
 msgstr ""
 
-#: symfile.c:1971
+#: symfile.c:1955
 #, possible-c-format
 msgid "Download verify read failed at %s"
 msgstr ""
 
-#: symfile.c:1974
+#: symfile.c:1958
 #, possible-c-format
 msgid "Download verify compare failed at %s"
 msgstr ""
 
-#: symfile.c:1986
+#: symfile.c:1970
 msgid "Canceled the download"
 msgstr ""
 
-#: symfile.c:2038
+#: symfile.c:2022
 msgid "file to load"
 msgstr ""
 
-#: symfile.c:2053
+#: symfile.c:2037
 #, possible-c-format
 msgid "Invalid download offset:%s."
 msgstr ""
 
-#: symfile.c:2056
+#: symfile.c:2040
 msgid "Too many parameters."
 msgstr ""
 
-#: symfile.c:2066
+#: symfile.c:2050
 #, possible-c-format
 msgid "\"%s\" is not an object file: %s"
 msgstr ""
 
-#: symfile.c:2081
+#: symfile.c:2065
 msgid "Load failed"
 msgstr ""
 
-#: symfile.c:2246
+#: symfile.c:2229
 msgid "add-symbol-file takes a file name and an address"
 msgstr ""
 
-#: symfile.c:2278
+#: symfile.c:2261
 msgid "Missing section name after \"-s\""
 msgstr ""
 
-#: symfile.c:2280
+#: symfile.c:2263
 msgid "Missing section address after \"-s\""
 msgstr ""
 
-#: symfile.c:2303
+#: symfile.c:2286
 msgid "You must provide a filename to be loaded."
 msgstr ""
 
@@ -28979,157 +28870,157 @@ msgstr ""
 #. functions.  We have to split this up into separate print
 #. statements because hex_string returns a local static
 #. string.
-#: symfile.c:2313
+#: symfile.c:2296
 #, possible-c-format
 msgid "add symbol table from file \"%s\""
 msgstr ""
 
-#: symfile.c:2326
+#: symfile.c:2309
 msgid " at\n"
 msgstr ""
 
-#: symfile.c:2346
+#: symfile.c:2329
 #, possible-c-format
 msgid "%s offset by %s\n"
 msgstr ""
 
-#: symfile.c:2348
+#: symfile.c:2331
 msgid " with all sections"
 msgstr ""
 
-#: symfile.c:2349
+#: symfile.c:2332
 msgid "with other sections"
 msgstr ""
 
-#: symfile.c:2360
+#: symfile.c:2343
 #, possible-c-format
 msgid "newly-added symbol file \"%s\" does not provide any symbols"
 msgstr ""
 
-#: symfile.c:2385
+#: symfile.c:2368
 msgid "remove-symbol-file: no symbol file provided"
 msgstr ""
 
-#: symfile.c:2395
+#: symfile.c:2378
 msgid "Missing address argument"
 msgstr ""
 
-#: symfile.c:2398 symfile.c:2419
+#: symfile.c:2381 symfile.c:2402
 #, possible-c-format
 msgid "Junk after %s"
 msgstr ""
 
-#: symfile.c:2437
+#: symfile.c:2420
 msgid "No symbol file found"
 msgstr ""
 
-#: symfile.c:2440
+#: symfile.c:2423
 #, possible-c-format
 msgid "Remove symbol table from file \"%s\"? "
 msgstr ""
 
 #. FIXME, should use print_sys_errmsg but it's not filtered.
-#: symfile.c:2478
+#: symfile.c:2461
 #, possible-c-format
 msgid "`%s' has disappeared; keeping its symbols.\n"
 msgstr ""
 
-#: symfile.c:2488
+#: symfile.c:2468
 #, possible-c-format
 msgid "`%s' has changed; re-reading symbols.\n"
 msgstr ""
 
-#: symfile.c:2552
+#: symfile.c:2532
 #, possible-c-format
 msgid "Can't open %s to read symbols."
 msgstr ""
 
-#: symfile.c:2559
+#: symfile.c:2539
 #, possible-c-format
 msgid "Can't read symbols from %s: %s."
 msgstr ""
 
-#: symfile.c:2644
+#: symfile.c:2615
 msgid "(no debugging symbols found)\n"
 msgstr ""
 
-#: symfile.c:2713
+#: symfile.c:2684
 #, possible-c-format
 msgid "Mapping between filename extension and source language is \"%s\".\n"
 msgstr ""
 
-#: symfile.c:2727
+#: symfile.c:2698
 #, possible-c-format
 msgid "'%s': Filename extension must begin with '.'"
 msgstr ""
 
-#: symfile.c:2734 symfile.c:2745
+#: symfile.c:2705 symfile.c:2716
 #, possible-c-format
 msgid "'%s': two arguments required -- filename extension and language"
 msgstr ""
 
-#: symfile.c:2780
+#: symfile.c:2751
 msgid "Filename extensions and the languages they represent:"
 msgstr ""
 
-#: symfile.c:3262
+#: symfile.c:3231
 msgid "No sections are mapped.\n"
 msgstr ""
 
-#: symfile.c:3274 symfile.c:3320
+#: symfile.c:3243 symfile.c:3289
 msgid ""
 "Overlay debugging not enabled.  Use either the 'overlay auto' or\n"
 "the 'overlay manual' command."
 msgstr ""
 
-#: symfile.c:3279 symfile.c:3325
+#: symfile.c:3248 symfile.c:3294
 msgid "Argument required: name of an overlay section"
 msgstr ""
 
-#: symfile.c:3301
+#: symfile.c:3270
 #, possible-c-format
 msgid "Note: section %s unmapped by overlap\n"
 msgstr ""
 
-#: symfile.c:3307 symfile.c:3337
+#: symfile.c:3276 symfile.c:3306
 #, possible-c-format
 msgid "No overlay section called %s"
 msgstr ""
 
-#: symfile.c:3333
+#: symfile.c:3302
 #, possible-c-format
 msgid "Section %s is not mapped"
 msgstr ""
 
-#: symfile.c:3350
+#: symfile.c:3319
 msgid "Automatic overlay debugging enabled."
 msgstr ""
 
-#: symfile.c:3363
+#: symfile.c:3332
 msgid "Overlay debugging enabled."
 msgstr ""
 
-#: symfile.c:3376
+#: symfile.c:3345
 msgid "Overlay debugging disabled."
 msgstr ""
 
-#: symfile.c:3387
+#: symfile.c:3356
 msgid "This target does not know how to read its overlay state."
 msgstr ""
 
-#: symfile.c:3490
+#: symfile.c:3447
 msgid ""
 "Error reading inferior's overlay table: couldn't find `_novlys' variable\n"
 "in inferior.  Use `overlay manual' mode."
 msgstr ""
 
-#: symfile.c:3499 symfile.c:3579
+#: symfile.c:3456 symfile.c:3536
 msgid ""
 "Error reading inferior's overlay table: couldn't find `_ovly_table' array\n"
 "in inferior.  Use `overlay manual' mode."
 msgstr ""
 
-#: symfile.c:3914
+#: symfile.c:3857
 msgid ""
 "Load symbol table from executable file FILE.\n"
 "Usage: symbol-file [-readnow | -readnever] [-o OFF] FILE\n"
@@ -29138,7 +29029,7 @@ msgid ""
 "to execute.\n"
 msgstr ""
 
-#: symfile.c:3922
+#: symfile.c:3865
 msgid ""
 "Load symbols from FILE, assuming FILE has been dynamically loaded.\n"
 "Usage: add-symbol-file FILE [-readnow | -readnever] [-o OFF] [ADDR] [-s SECT-"
@@ -29151,7 +29042,7 @@ msgid ""
 "of all sections for which no other address was specified.\n"
 msgstr ""
 
-#: symfile.c:3937
+#: symfile.c:3880
 msgid ""
 "Remove a symbol file added via the add-symbol-file command.\n"
 "Usage: remove-symbol-file FILENAME\n"
@@ -29160,7 +29051,7 @@ msgid ""
 "that lies within the boundaries of this symbol file in memory."
 msgstr ""
 
-#: symfile.c:3945
+#: symfile.c:3888
 msgid ""
 "Dynamically load FILE into the running program.\n"
 "FILE symbols are recorded for access from GDB.\n"
@@ -29170,77 +29061,77 @@ msgid ""
 "on its own."
 msgstr ""
 
-#: symfile.c:3955
+#: symfile.c:3898
 msgid "Commands for debugging overlays."
 msgstr ""
 
-#: symfile.c:3962
+#: symfile.c:3905
 msgid "Assert that an overlay section is mapped."
 msgstr ""
 
-#: symfile.c:3965
+#: symfile.c:3908
 msgid "Assert that an overlay section is unmapped."
 msgstr ""
 
-#: symfile.c:3968
+#: symfile.c:3911
 msgid "List mappings of overlay sections."
 msgstr ""
 
-#: symfile.c:3971
+#: symfile.c:3914
 msgid "Enable overlay debugging."
 msgstr ""
 
-#: symfile.c:3973
+#: symfile.c:3916
 msgid "Disable overlay debugging."
 msgstr ""
 
-#: symfile.c:3975
+#: symfile.c:3918
 msgid "Enable automatic overlay debugging."
 msgstr ""
 
-#: symfile.c:3977
+#: symfile.c:3920
 msgid "Read the overlay mapping state from the target."
 msgstr ""
 
-#: symfile.c:3981
+#: symfile.c:3924
 msgid "Set mapping between filename extension and source language."
 msgstr ""
 
-#: symfile.c:3982
+#: symfile.c:3925
 msgid "Show mapping between filename extension and source language."
 msgstr ""
 
-#: symfile.c:3983
+#: symfile.c:3926
 msgid "Usage: set extension-language .foo bar"
 msgstr ""
 
-#: symfile.c:3990
+#: symfile.c:3933
 msgid "All filename extensions associated with a source language."
 msgstr ""
 
-#: symfile.c:3993
+#: symfile.c:3936
 msgid "Set the directories where separate debug symbols are searched for."
 msgstr ""
 
-#: symfile.c:3994
+#: symfile.c:3937
 msgid "Show the directories where separate debug symbols are searched for."
 msgstr ""
 
-#: symfile.c:3995
+#: symfile.c:3938
 msgid ""
 "Separate debug symbols are first searched for in the same\n"
 "directory as the binary, then in the `"
 msgstr ""
 
-#: symfile.c:4006
+#: symfile.c:3949
 msgid "Set printing of symbol loading messages."
 msgstr ""
 
-#: symfile.c:4007
+#: symfile.c:3950
 msgid "Show printing of symbol loading messages."
 msgstr ""
 
-#: symfile.c:4008
+#: symfile.c:3951
 msgid ""
 "off   == turn all messages off\n"
 "brief == print messages for the executable,\n"
@@ -29249,21 +29140,21 @@ msgid ""
 "         and messages for each shared library."
 msgstr ""
 
-#: symfile.c:4019
+#: symfile.c:3962
 msgid "Set printing of separate debug info file search debug."
 msgstr ""
 
-#: symfile.c:4020
+#: symfile.c:3963
 msgid "Show printing of separate debug info file search debug."
 msgstr ""
 
-#: symfile.c:4021
+#: symfile.c:3964
 msgid ""
 "When on, GDB prints the searched locations while looking for separate debug "
 "info files."
 msgstr ""
 
-#: symfile-debug.c:645
+#: symfile-debug.c:644
 #, possible-c-format
 msgid "Symfile debugging is %s.\n"
 msgstr ""
@@ -29280,189 +29171,180 @@ msgstr ""
 msgid "When enabled, all calls to the symfile functions are logged."
 msgstr ""
 
-#: symfile-mem.c:94
+#: symfile-mem.c:93
 msgid "add-symbol-file-from-memory not supported for this target"
 msgstr ""
 
-#: symfile-mem.c:99
+#: symfile-mem.c:98
 msgid "Failed to read a valid object file image from memory."
 msgstr ""
 
-#: symfile-mem.c:109
+#: symfile-mem.c:108
 #, possible-c-format
 msgid "Got object file from memory but can't read symbols: %s."
 msgstr ""
 
-#: symfile-mem.c:141
+#: symfile-mem.c:140
 msgid "add-symbol-file-from-memory requires an expression argument"
 msgstr ""
 
-#: symfile-mem.c:151
+#: symfile-mem.c:150
 msgid "Must use symbol-file or exec-file before add-symbol-file-from-memory."
 msgstr ""
 
-#: symfile-mem.c:181
+#: symfile-mem.c:180
 msgid "Could not load vsyscall page because no executable was specified"
 msgstr ""
 
-#: symfile-mem.c:211
+#: symfile-mem.c:212
 msgid ""
 "Load the symbols out of memory from a dynamically loaded object file.\n"
 "Give an expression for the address of the file's shared object file header."
 msgstr ""
 
-#: symmisc.c:70
+#: symmisc.c:68
 #, possible-c-format
 msgid "Byte cache statistics for '%s':\n"
 msgstr ""
 
-#: symmisc.c:90
+#: symmisc.c:85
 #, possible-c-format
 msgid "Statistics for '%s':\n"
 msgstr ""
 
-#: symmisc.c:92
+#: symmisc.c:87
 #, possible-c-format
 msgid "  Number of \"stab\" symbols read: %d\n"
 msgstr ""
 
-#: symmisc.c:95
+#: symmisc.c:90
 #, possible-c-format
 msgid "  Number of \"minimal\" symbols read: %d\n"
 msgstr ""
 
-#: symmisc.c:98
+#: symmisc.c:93
 #, possible-c-format
 msgid "  Number of \"partial\" symbols read: %d\n"
 msgstr ""
 
-#: symmisc.c:101
+#: symmisc.c:96
 #, possible-c-format
 msgid "  Number of \"full\" symbols read: %d\n"
 msgstr ""
 
-#: symmisc.c:104
+#: symmisc.c:99
 #, possible-c-format
 msgid "  Number of \"types\" defined: %d\n"
 msgstr ""
 
-#: symmisc.c:120
+#: symmisc.c:115
 #, possible-c-format
 msgid "  Number of symbol tables: %d\n"
 msgstr ""
 
-#: symmisc.c:121
+#: symmisc.c:116
 #, possible-c-format
 msgid "  Number of symbol tables with line tables: %d\n"
 msgstr ""
 
-#: symmisc.c:123
+#: symmisc.c:118
 #, possible-c-format
 msgid "  Number of symbol tables with blockvectors: %d\n"
 msgstr ""
 
-#: symmisc.c:127
+#: symmisc.c:122
 #, possible-c-format
 msgid "  Space used by string tables: %d\n"
 msgstr ""
 
-#: symmisc.c:129
+#: symmisc.c:124
 #, possible-c-format
 msgid "  Total memory used for objfile obstack: %s\n"
 msgstr ""
 
-#: symmisc.c:132
+#: symmisc.c:127
 #, possible-c-format
 msgid "  Total memory used for BFD obstack: %s\n"
 msgstr ""
 
-#: symmisc.c:136
+#: symmisc.c:131
 #, possible-c-format
 msgid "  Total memory used for psymbol cache: %d\n"
 msgstr ""
 
-#: symmisc.c:138
+#: symmisc.c:133
 #, possible-c-format
-msgid "  Total memory used for macro cache: %d\n"
+msgid "  Total memory used for string cache: %d\n"
 msgstr ""
 
-#: symmisc.c:140
-#, possible-c-format
-msgid "  Total memory used for file name cache: %d\n"
-msgstr ""
-
-#: symmisc.c:267
+#: symmisc.c:259
 #, possible-c-format
 msgid "internal error:  minimal symbol count %d != %d"
 msgstr ""
 
-#: symmisc.c:466
+#: symmisc.c:486
 #, possible-c-format
 msgid "No symtab for address: %s"
 msgstr ""
 
-#: symmisc.c:506
+#: symmisc.c:526
 #, possible-c-format
 msgid "No symtab for source file: %s"
 msgstr ""
 
-#: symmisc.c:915
+#: symmisc.c:950
 msgid "Extra arguments after regexp."
 msgstr ""
 
-#: symmisc.c:973
+#: symmisc.c:1004
 #, possible-c-format
 msgid "objfile: %s ((struct objfile *) %s)\n"
 msgstr ""
 
-#: symmisc.c:976
+#: symmisc.c:1007
 #, possible-c-format
 msgid "compunit_symtab: ((struct compunit_symtab *) %s)\n"
 msgstr ""
 
-#: symmisc.c:978
+#: symmisc.c:1009
 #, possible-c-format
 msgid "symtab: %s ((struct symtab *) %s)\n"
 msgstr ""
 
-#: symmisc.c:982
+#: symmisc.c:1013
 #, possible-c-format
 msgid "linetable: ((struct linetable *) %s):\n"
 msgstr ""
 
-#: symmisc.c:986
+#: symmisc.c:1017
 msgid "No line table.\n"
 msgstr ""
 
-#: symmisc.c:988
+#: symmisc.c:1019
 msgid "Line table has no lines.\n"
 msgstr ""
 
-#. Leave space for 6 digits of index and line number.  After that the
-#. tables will just not format as well.
-#: symmisc.c:995
-#, possible-c-format
-msgid "%-6s %6s %s\n"
-msgstr ""
-
-#: symmisc.c:996
+#: symmisc.c:1026
 msgid "INDEX"
 msgstr ""
 
-#: symmisc.c:996
+#: symmisc.c:1027
 msgid "LINE"
 msgstr ""
 
-#: symmisc.c:996
+#: symmisc.c:1028
 msgid "ADDRESS"
 msgstr ""
 
-#: symmisc.c:1003
-#, possible-c-format
-msgid "%-6d %6d %s\n"
+#: symmisc.c:1029
+msgid "IS-STMT"
+msgstr ""
+
+#: symmisc.c:1042
+msgid "END"
 msgstr ""
 
-#: symmisc.c:1051
+#: symmisc.c:1092
 msgid ""
 "Print dump of current symbol definitions.\n"
 "Usage: mt print symbols [-pc ADDRESS] [--] [OUTFILE]\n"
@@ -29474,7 +29356,7 @@ msgid ""
 "If OBJFILE is provided, dump only that file's minimal symbols."
 msgstr ""
 
-#: symmisc.c:1062
+#: symmisc.c:1103
 msgid ""
 "Print dump of current minimal symbol definitions.\n"
 "Usage: mt print msymbols [-objfile OBJFILE] [--] [OUTFILE]\n"
@@ -29483,13 +29365,13 @@ msgid ""
 "If OBJFILE is provided, dump only that file's minimal symbols."
 msgstr ""
 
-#: symmisc.c:1071
+#: symmisc.c:1112
 msgid ""
 "Print dump of current object file definitions.\n"
 "With an argument REGEXP, list the object files with matching names."
 msgstr ""
 
-#: symmisc.c:1075
+#: symmisc.c:1116
 msgid ""
 "List the full symbol tables for all object files.\n"
 "This does not include information about individual symbols, blocks, or\n"
@@ -29497,48 +29379,48 @@ msgid ""
 "With an argument REGEXP, list the symbol tables with matching names."
 msgstr ""
 
-#: symmisc.c:1082
+#: symmisc.c:1123
 msgid ""
 "List the contents of all line tables, from all symbol tables.\n"
 "With an argument REGEXP, list just the line tables for the symbol\n"
 "tables with matching names."
 msgstr ""
 
-#: symmisc.c:1089
+#: symmisc.c:1130
 msgid "Check consistency of currently expanded symtabs."
 msgstr ""
 
-#: symmisc.c:1094
+#: symmisc.c:1135
 msgid ""
 "Expand symbol tables.\n"
 "With an argument REGEXP, only expand the symbol tables with matching names."
 msgstr ""
 
-#: symtab.c:1327
+#: symtab.c:1301
 #, possible-c-format
 msgid "Symbol cache size is too large, max is %u."
 msgstr ""
 
-#: symtab.c:1559
+#: symtab.c:1531
 #, possible-c-format
 msgid ""
 "Symbol cache for pspace %d\n"
 "%s:\n"
 msgstr ""
 
-#: symtab.c:1630
+#: symtab.c:1598
 #, possible-c-format
 msgid ""
 "Symbol cache statistics for pspace %d\n"
 "%s:\n"
 msgstr ""
 
-#: symtab.c:2102
+#: symtab.c:2071
 #, possible-c-format
 msgid "Internal error: `%s' is not an aggregate"
 msgstr ""
 
-#: symtab.c:2373
+#: symtab.c:2337
 #, possible-c-format
 msgid ""
 "Internal: %s symbol `%s' found in %s psymtab but not in symtab.\n"
@@ -29546,193 +29428,198 @@ msgid ""
 "\t (if a template, try specifying an instantiation: %s<type>)."
 msgstr ""
 
-#: symtab.c:4050
+#: symtab.c:3179
+msgid ""
+"Infinite recursion detected in find_pc_sect_line;please file a bug report"
+msgstr ""
+
+#: symtab.c:4086
 msgid "mismatched quoting on brackets, try 'operator\\[\\]'"
 msgstr ""
 
-#: symtab.c:4058
+#: symtab.c:4094
 msgid "nothing is allowed between '[' and ']'"
 msgstr ""
 
-#: symtab.c:4114
+#: symtab.c:4150
 msgid "`operator ()' must be specified without whitespace in `()'"
 msgstr ""
 
-#: symtab.c:4120
+#: symtab.c:4156
 msgid "`operator ?:' must be specified without whitespace in `?:'"
 msgstr ""
 
-#: symtab.c:4126
+#: symtab.c:4162
 msgid "`operator []' must be specified without whitespace in `[]'"
 msgstr ""
 
-#: symtab.c:4131
+#: symtab.c:4167
 #, possible-c-format
 msgid "`operator %s' not supported"
 msgstr ""
 
-#: symtab.c:4240
+#: symtab.c:4276
 msgid "Show only the files having a dirname matching REGEXP."
 msgstr ""
 
-#: symtab.c:4246
+#: symtab.c:4282
 msgid "Show only the files having a basename matching REGEXP."
 msgstr ""
 
-#: symtab.c:4273
+#: symtab.c:4309
 #, possible-c-format
 msgid "(dirname matching regular expression \"%s\")"
 msgstr ""
 
-#: symtab.c:4276
+#: symtab.c:4312
 #, possible-c-format
 msgid "(basename matching regular expression \"%s\")"
 msgstr ""
 
-#: symtab.c:4279
+#: symtab.c:4315
 #, possible-c-format
 msgid "(filename matching regular expression \"%s\")"
 msgstr ""
 
-#: symtab.c:4322
+#: symtab.c:4358
 msgid "You cannot give both -basename and -dirname to 'info sources'."
 msgstr ""
 
-#: symtab.c:4325
+#: symtab.c:4361
 msgid "Missing REGEXP for 'info sources'."
 msgstr ""
 
-#: symtab.c:4340
+#: symtab.c:4376
 msgid "Source files for which symbols have been read in:\n"
 msgstr ""
 
-#: symtab.c:4357
+#: symtab.c:4393
 msgid "Source files for which symbols will be read in on demand:\n"
 msgstr ""
 
-#: symtab.c:4854
+#: symtab.c:4890
 #, possible-c-format
 msgid ""
 "\n"
 "File %ps:\n"
 msgstr ""
 
-#: symtab.c:4890
+#: symtab.c:4926
 #, possible-c-format
 msgid "%ps  %ps\n"
 msgstr ""
 
-#: symtab.c:4926
+#: symtab.c:4962
 #, possible-c-format
 msgid ""
 "All %ss matching regular expression \"%s\" with type matching regular "
 "expression \"%s\":\n"
 msgstr ""
 
-#: symtab.c:4930
+#: symtab.c:4966
 #, possible-c-format
 msgid "All %ss matching regular expression \"%s\":\n"
 msgstr ""
 
-#: symtab.c:4937
+#: symtab.c:4973
 #, possible-c-format
 msgid "All defined %ss with type matching regular expression \"%s\" :\n"
 msgstr ""
 
-#: symtab.c:4941
+#: symtab.c:4977
 #, possible-c-format
 msgid "All defined %ss:\n"
 msgstr ""
 
-#: symtab.c:4954
+#: symtab.c:4990
 msgid ""
 "\n"
 "Non-debugging symbols:\n"
 msgstr ""
 
-#: symtab.c:6466
+#: symtab.c:6488
 msgid "All variables in all modules:"
 msgstr ""
 
-#: symtab.c:6467
+#: symtab.c:6489
 msgid "All functions in all modules:"
 msgstr ""
 
-#: symtab.c:6471
+#: symtab.c:6493
 #, possible-c-format
 msgid "All variables matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6473
+#: symtab.c:6495
 #, possible-c-format
 msgid "All functions matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6482
+#: symtab.c:6504
 #, possible-c-format
 msgid ""
 "All variables with type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6484
+#: symtab.c:6506
 #, possible-c-format
 msgid ""
 "All functions with type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6490
+#: symtab.c:6512
 #, possible-c-format
 msgid ""
 "All variables matching regular expression \"%s\",\n"
 "\twith type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6493
+#: symtab.c:6515
 #, possible-c-format
 msgid ""
 "All functions matching regular expression \"%s\",\n"
 "\twith type matching regular expression \"%s\" in all modules:"
 msgstr ""
 
-#: symtab.c:6506
+#: symtab.c:6528
 #, possible-c-format
 msgid "All variables in all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6508
+#: symtab.c:6530
 #, possible-c-format
 msgid "All functions in all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6514
+#: symtab.c:6536
 #, possible-c-format
 msgid ""
 "All variables matching regular expression \"%s\",\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6517
+#: symtab.c:6539
 #, possible-c-format
 msgid ""
 "All functions matching regular expression \"%s\",\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6527
+#: symtab.c:6549
 #, possible-c-format
 msgid ""
 "All variables with type matching regular expression \"%s\"\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6530
+#: symtab.c:6552
 #, possible-c-format
 msgid ""
 "All functions with type matching regular expression \"%s\"\n"
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6537
+#: symtab.c:6559
 #, possible-c-format
 msgid ""
 "All variables matching regular expression \"%s\",\n"
@@ -29740,7 +29627,7 @@ msgid ""
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6541
+#: symtab.c:6563
 #, possible-c-format
 msgid ""
 "All functions matching regular expression \"%s\",\n"
@@ -29748,41 +29635,41 @@ msgid ""
 "\tin all modules matching regular expression \"%s\":"
 msgstr ""
 
-#: symtab.c:6580
+#: symtab.c:6602
 #, possible-c-format
 msgid "Module \"%s\":\n"
 msgstr ""
 
-#: symtab.c:6702
+#: symtab.c:6725
 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:6706 symtab.c:6716
+#: symtab.c:6729 symtab.c:6739
 msgid "global and static variables"
 msgstr ""
 
-#: symtab.c:6712
+#: symtab.c:6735
 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:6722
+#: symtab.c:6745
 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:6726
+#: symtab.c:6749
 msgid "functions"
 msgstr ""
 
-#: symtab.c:6730
+#: symtab.c:6753
 msgid ""
 "All type names, or those matching REGEXP.\n"
 "Usage: info types [-q] [REGEXP]\n"
@@ -29790,7 +29677,7 @@ msgid ""
 "REGEXP is given.  The optional flag -q disables printing of headers."
 msgstr ""
 
-#: symtab.c:6740
+#: symtab.c:6763
 msgid ""
 "All source files in the program or those matching REGEXP.\n"
 "Usage: info sources [OPTION]... [REGEXP]\n"
@@ -29800,15 +29687,15 @@ msgid ""
 "%OPTIONS%"
 msgstr ""
 
-#: symtab.c:6753
+#: symtab.c:6776
 msgid "All module names, or those matching REGEXP."
 msgstr ""
 
-#: symtab.c:6756
+#: symtab.c:6779
 msgid "Print information about modules."
 msgstr ""
 
-#: symtab.c:6761
+#: symtab.c:6784
 msgid ""
 "Display functions arranged by modules.\n"
 "Usage: info module functions [-q] [-m MODREGEXP] [-t TYPEREGEXP] [REGEXP]\n"
@@ -29824,7 +29711,7 @@ msgid ""
 "The -q flag suppresses printing some header information."
 msgstr ""
 
-#: symtab.c:6778
+#: symtab.c:6801
 msgid ""
 "Display variables arranged by modules.\n"
 "Usage: info module variables [-q] [-m MODREGEXP] [-t TYPEREGEXP] [REGEXP]\n"
@@ -29840,32 +29727,32 @@ msgid ""
 "The -q flag suppresses printing some header information."
 msgstr ""
 
-#: symtab.c:6796
+#: symtab.c:6819
 msgid "Set a breakpoint for all functions matching REGEXP."
 msgstr ""
 
-#: symtab.c:6800
+#: symtab.c:6823
 msgid "Set how the debugger handles ambiguities in expressions."
 msgstr ""
 
-#: symtab.c:6801
+#: symtab.c:6824
 msgid "Show how the debugger handles ambiguities in expressions."
 msgstr ""
 
-#: symtab.c:6802
+#: symtab.c:6825
 msgid ""
 "Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."
 msgstr ""
 
-#: symtab.c:6807
+#: symtab.c:6830
 msgid "Set whether a source file may have multiple base names."
 msgstr ""
 
-#: symtab.c:6808
+#: symtab.c:6831
 msgid "Show whether a source file may have multiple base names."
 msgstr ""
 
-#: symtab.c:6809
+#: symtab.c:6832
 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"
@@ -29876,74 +29763,70 @@ msgid ""
 "one base name, and gdb will do file name comparisons more efficiently."
 msgstr ""
 
-#: symtab.c:6821
+#: symtab.c:6844
 msgid "Set debugging of symbol table creation."
 msgstr ""
 
-#: symtab.c:6822
+#: symtab.c:6845
 msgid "Show debugging of symbol table creation."
 msgstr ""
 
-#: symtab.c:6822
+#: symtab.c:6845
 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:6831
+#: symtab.c:6854
 msgid "Set debugging of symbol lookup."
 msgstr ""
 
-#: symtab.c:6832
+#: symtab.c:6855
 msgid "Show debugging of symbol lookup."
 msgstr ""
 
-#: symtab.c:6833
+#: symtab.c:6856
 msgid "When enabled (non-zero), symbol lookups are logged."
 msgstr ""
 
-#: symtab.c:6840
+#: symtab.c:6863
 msgid "Set the size of the symbol cache."
 msgstr ""
 
-#: symtab.c:6841
+#: symtab.c:6864
 msgid "Show the size of the symbol cache."
 msgstr ""
 
-#: symtab.c:6841
+#: symtab.c:6864
 msgid ""
 "The size of the symbol cache.\n"
 "If zero then the symbol cache is disabled."
 msgstr ""
 
-#: symtab.c:6849
+#: symtab.c:6872
 msgid "Dump the symbol cache for each program space."
 msgstr ""
 
-#: symtab.c:6854
+#: symtab.c:6877
 msgid "Print symbol cache statistics for each program space."
 msgstr ""
 
-#: symtab.c:6859
+#: symtab.c:6882
 msgid "Flush the symbol cache for each program space."
 msgstr ""
 
-#: symtab.h:1336
-msgid "Section index is uninitialized"
-msgstr ""
-
-#: target.c:174
+#: target.c:169
 #, possible-c-format
 msgid "Target debugging is %s.\n"
 msgstr ""
 
-#: target.c:272
+#: target.c:260
 #, possible-c-format
 msgid "target already added (\"%s\")."
 msgstr ""
 
-#: target.c:276
+#: target.c:264
 msgid ""
 "Connect to a target machine or process.\n"
 "The first argument is the type or protocol of the target machine.\n"
@@ -29952,34 +29835,34 @@ msgid ""
 "`help target ' followed by the protocol name."
 msgstr ""
 
-#: target.c:516
+#: target.c:507
 #, possible-c-format
 msgid "You can't do that when your target is `%s'"
 msgstr ""
 
-#: target.c:529
+#: target.c:520
 msgid "No saved terminal information.\n"
 msgstr ""
 
-#: target.c:610
+#: target.c:621
 msgid "Attempt to unpush the dummy target"
 msgstr ""
 
-#: target.c:726
+#: target.c:741
 msgid "Cannot find thread-local variables in this thread library."
 msgstr ""
 
-#: target.c:731
+#: target.c:746
 #, possible-c-format
 msgid "Cannot find shared library `%s' in dynamic linker's load module list"
 msgstr ""
 
-#: target.c:734
+#: target.c:749
 #, possible-c-format
 msgid "Cannot find executable file `%s' in dynamic linker's load module list"
 msgstr ""
 
-#: target.c:739
+#: target.c:754
 #, possible-c-format
 msgid ""
 "The inferior has not yet allocated storage for thread-local variables in\n"
@@ -29987,7 +29870,7 @@ msgid ""
 "for %s"
 msgstr ""
 
-#: target.c:746
+#: target.c:761
 #, possible-c-format
 msgid ""
 "The inferior has not yet allocated storage for thread-local variables in\n"
@@ -29995,78 +29878,78 @@ msgid ""
 "for %s"
 msgstr ""
 
-#: target.c:755
+#: target.c:770
 #, possible-c-format
 msgid ""
 "Cannot find thread-local storage for %s, shared library %s:\n"
 "%s"
 msgstr ""
 
-#: target.c:760
+#: target.c:775
 #, possible-c-format
 msgid ""
 "Cannot find thread-local storage for %s, executable file %s:\n"
 "%s"
 msgstr ""
 
-#: target.c:931
+#: target.c:889
 msgid "Writing to flash memory forbidden in this context"
 msgstr ""
 
-#: target.c:1165
+#: target.c:1131
 #, possible-c-format
 msgid "Writing to memory is not allowed (addr %s, len %s)"
 msgstr ""
 
-#: target.c:1381
+#: target.c:1347
 msgid "Overlapping regions in memory map: ignoring"
 msgstr ""
 
-#: target.c:1408
+#: target.c:1374
 #, possible-c-format
 msgid "Mode for reading from readonly sections is %s.\n"
 msgstr ""
 
-#: target.c:1808
+#: target.c:1774
 #, possible-c-format
 msgid "target object %d, annex %s, contained unexpected null characters"
 msgstr ""
 
-#: target.c:1851
+#: target.c:1817
 msgid "May not insert breakpoints"
 msgstr ""
 
-#: target.c:1871
+#: target.c:1837
 msgid "May not remove breakpoints"
 msgstr ""
 
-#: target.c:1884
+#: target.c:1850
 #, possible-c-format
 msgid "Symbols from \"%s\".\n"
 msgstr ""
 
-#: target.c:1895
+#: target.c:1861
 msgid "\tWhile running this, GDB does not access memory from...\n"
 msgstr ""
 
-#: target.c:1992
+#: target.c:1938
 msgid "Program not killed."
 msgstr ""
 
-#: target.c:2157
+#: target.c:2119
 msgid "could not find a target to follow fork"
 msgstr ""
 
-#: target.c:2181
+#: target.c:2143
 msgid "could not find a target to follow mourn inferior"
 msgstr ""
 
-#: target.c:2235 target.c:2290
+#: target.c:2197 target.c:2252
 #, possible-c-format
 msgid "Unable to access %s bytes of target memory at %s, halting search."
 msgstr ""
 
-#: target.c:2358
+#: target.c:2320
 #, possible-c-format
 msgid ""
 "The \"%s\" target does not support \"run\".  Try \"help target\" or "
@@ -30076,241 +29959,251 @@ msgstr ""
 #. This function is only called if the target is running.  In that
 #. case there should have been a process_stratum target and it
 #. should either know how to create inferiors, or not...
-#: target.c:2366
+#: target.c:2328
 msgid "No targets found"
 msgstr ""
 
-#: target.c:2378
+#: target.c:2340
 #, possible-c-format
 msgid "Whether GDB may automatically connect to the native target is %s.\n"
 msgstr ""
 
-#: target.c:2395
+#: target.c:2357
 #, possible-c-format
 msgid "native target already set (\"%s\")."
 msgstr ""
 
-#: target.c:2423
+#: target.c:2385
 #, possible-c-format
 msgid "Don't know how to %s.  Try \"help target\"."
 msgstr ""
 
-#: target.c:3111
+#: target.c:3049
 #, possible-c-format
 msgid "target file %s contained unexpected null characters"
 msgstr ""
 
-#: target.c:3230 target.c:3239
+#: target.c:3168 target.c:3177
 msgid "Command not implemented for this target."
 msgstr ""
 
-#: target.c:3252
+#: target.c:3198
 msgid "None"
 msgstr ""
 
-#: target.c:3312 target.c:3324
+#: target.c:3258 target.c:3270
 msgid "May not interrupt or stop the target, ignoring attempt"
 msgstr ""
 
-#: target.c:3436
+#: target.c:3408
 #, possible-c-format
 msgid "Writing to registers is not allowed (regno %d)"
 msgstr ""
 
-#: target.c:3757
+#: target.c:3729
 msgid "\"monitor\" command not supported by this target."
 msgstr ""
 
-#: target.c:3789
+#: target.c:3761
 msgid "Erasing flash memory region at address "
 msgstr ""
 
-#: target.c:3801
+#: target.c:3773
 msgid "No flash memory regions found.\n"
 msgstr ""
 
-#: target.c:3809
+#: target.c:3781
 msgid "The current target stack is:\n"
 msgstr ""
 
-#: target.c:3863
+#: target.c:3835
 #, possible-c-format
 msgid "Controlling the inferior in asynchronous mode is %s.\n"
 msgstr ""
 
-#: target.c:3919
+#: target.c:3911
 #, possible-c-format
 msgid "Whether the target is always in non-stop mode is %s (currently %s).\n"
 msgstr ""
 
-#: target.c:3924
+#: target.c:3916
 #, possible-c-format
 msgid "Whether the target is always in non-stop mode is %s.\n"
 msgstr ""
 
-#: target.c:3993
+#: target.c:3985
 msgid "Set target debugging."
 msgstr ""
 
-#: target.c:3994
+#: target.c:3986
 msgid "Show target debugging."
 msgstr ""
 
-#: target.c:3995
+#: target.c:3987
 msgid ""
 "When non-zero, target debugging is enabled.  Higher numbers are more\n"
 "verbose."
 msgstr ""
 
-#: target.c:4003
+#: target.c:3995
 msgid "Set mode for reading from readonly sections."
 msgstr ""
 
-#: target.c:4004
+#: target.c:3996
 msgid "Show mode for reading from readonly sections."
 msgstr ""
 
-#: target.c:4005
+#: target.c:3997
 msgid ""
 "When this mode is on, memory reads from readonly sections (such as .text)\n"
 "will be read from the object file instead of from the target.  This will\n"
 "result in significant performance improvement for remote targets."
 msgstr ""
 
-#: target.c:4014
+#: target.c:4006
 msgid "Send a command to the remote monitor (remote targets only)."
 msgstr ""
 
-#: target.c:4017
+#: target.c:4009
 msgid "Print the name of each layer of the internal target stack."
 msgstr ""
 
-#: target.c:4021
+#: target.c:4013
 msgid "Set whether gdb controls the inferior in asynchronous mode."
 msgstr ""
 
-#: target.c:4022
+#: target.c:4014
 msgid "Show whether gdb controls the inferior in asynchronous mode."
 msgstr ""
 
-#: target.c:4023
+#: target.c:4015
 msgid "Tells gdb whether to control the inferior in asynchronous mode."
 msgstr ""
 
-#: target.c:4031
+#: target.c:4023
 msgid "Set whether gdb always controls the inferior in non-stop mode."
 msgstr ""
 
-#: target.c:4032
+#: target.c:4024
 msgid "Show whether gdb always controls the inferior in non-stop mode."
 msgstr ""
 
-#: target.c:4033
+#: target.c:4025
 msgid "Tells gdb whether to control the inferior in non-stop mode."
 msgstr ""
 
-#: target.c:4041
+#: target.c:4033
 msgid "Set permission to write into registers."
 msgstr ""
 
-#: target.c:4042
+#: target.c:4034
 msgid "Show permission to write into registers."
 msgstr ""
 
-#: target.c:4043
+#: target.c:4035
 msgid ""
 "When this permission is on, GDB may write into the target's registers.\n"
 "Otherwise, any sort of write attempt will result in an error."
 msgstr ""
 
-#: target.c:4050
+#: target.c:4042
 msgid "Set permission to write into target memory."
 msgstr ""
 
-#: target.c:4051
+#: target.c:4043
 msgid "Show permission to write into target memory."
 msgstr ""
 
-#: target.c:4052
+#: target.c:4044
 msgid ""
 "When this permission is on, GDB may write into the target's memory.\n"
 "Otherwise, any sort of write attempt will result in an error."
 msgstr ""
 
-#: target.c:4059
+#: target.c:4051
 msgid "Set permission to insert breakpoints in the target."
 msgstr ""
 
-#: target.c:4060
+#: target.c:4052
 msgid "Show permission to insert breakpoints in the target."
 msgstr ""
 
-#: target.c:4061
+#: target.c:4053
 msgid ""
 "When this permission is on, GDB may insert breakpoints in the program.\n"
 "Otherwise, any sort of insertion attempt will result in an error."
 msgstr ""
 
-#: target.c:4068
+#: target.c:4060
 msgid "Set permission to insert tracepoints in the target."
 msgstr ""
 
-#: target.c:4069
+#: target.c:4061
 msgid "Show permission to insert tracepoints in the target."
 msgstr ""
 
-#: target.c:4070
+#: target.c:4062
 msgid ""
 "When this permission is on, GDB may insert tracepoints in the program.\n"
 "Otherwise, any sort of insertion attempt will result in an error."
 msgstr ""
 
-#: target.c:4077
+#: target.c:4069
 msgid "Set permission to insert fast tracepoints in the target."
 msgstr ""
 
-#: target.c:4078
+#: target.c:4070
 msgid "Show permission to insert fast tracepoints in the target."
 msgstr ""
 
-#: target.c:4079
+#: target.c:4071
 msgid ""
 "When this permission is on, GDB may insert fast tracepoints.\n"
 "Otherwise, any sort of insertion attempt will result in an error."
 msgstr ""
 
-#: target.c:4086
+#: target.c:4078
 msgid "Set permission to interrupt or signal the target."
 msgstr ""
 
-#: target.c:4087
+#: target.c:4079
 msgid "Show permission to interrupt or signal the target."
 msgstr ""
 
-#: target.c:4088
+#: target.c:4080
 msgid ""
 "When this permission is on, GDB may interrupt/stop the target's execution.\n"
 "Otherwise, any attempt to interrupt or stop will be ignored."
 msgstr ""
 
-#: target.c:4095
+#: target.c:4087
 msgid "Erase all flash memory regions."
 msgstr ""
 
-#: target.c:4098
+#: target.c:4090
 msgid "Set whether GDB may automatically connect to the native target."
 msgstr ""
 
-#: target.c:4099
+#: target.c:4091
 msgid "Show whether GDB may automatically connect to the native target."
 msgstr ""
 
-#: target.c:4100
+#: target.c:4092
 msgid ""
 "When on, and GDB is not connected to a target yet, GDB\n"
 "attempts \"run\" and other commands with the native target."
 msgstr ""
 
+#: target-connection.c:100
+msgid "No connections.\n"
+msgstr ""
+
+#: target-connection.c:158
+msgid ""
+"Target connections in use.\n"
+"Shows the list of target connections currently in use."
+msgstr ""
+
 #: target-dcache.c:104
 #, possible-c-format
 msgid "Cache use for stack accesses is %s.\n"
@@ -30321,15 +30214,15 @@ msgstr ""
 msgid "Cache use for code accesses is %s.\n"
 msgstr ""
 
-#: target-dcache.c:159
+#: target-dcache.c:160
 msgid "Set cache use for stack access."
 msgstr ""
 
-#: target-dcache.c:160
+#: target-dcache.c:161
 msgid "Show cache use for stack access."
 msgstr ""
 
-#: target-dcache.c:161
+#: target-dcache.c:162
 msgid ""
 "When on, use the target memory cache for all stack access, regardless of "
 "any\n"
@@ -30337,15 +30230,15 @@ msgid ""
 "By default, caching for stack access is on."
 msgstr ""
 
-#: target-dcache.c:170
+#: target-dcache.c:171
 msgid "Set cache use for code segment access."
 msgstr ""
 
-#: target-dcache.c:171
+#: target-dcache.c:172
 msgid "Show cache use for code segment access."
 msgstr ""
 
-#: target-dcache.c:172
+#: target-dcache.c:173
 msgid ""
 "When on, use the target memory cache for all code segment accesses,\n"
 "regardless of any configured memory regions.  This improves remote\n"
@@ -30353,128 +30246,128 @@ msgid ""
 "access is on."
 msgstr ""
 
-#: target-descriptions.c:542
+#: target-descriptions.c:570
 msgid "Architecture rejected target-supplied description"
 msgstr ""
 
-#: target-descriptions.c:551
+#: target-descriptions.c:579
 msgid "Target-supplied registers are not supported by the current architecture"
 msgstr ""
 
-#: target-descriptions.c:578
+#: target-descriptions.c:606
 msgid "Could not remove target-supplied description"
 msgstr ""
 
-#: target-descriptions.c:915 target-descriptions.c:937
+#: target-descriptions.c:961 target-descriptions.c:983
 #, possible-c-format
 msgid "Register \"%s\" has an unsupported size (%d bits)"
 msgstr ""
 
-#: target-descriptions.c:1164
+#: target-descriptions.c:1243
 #, possible-c-format
 msgid "Attempted to add duplicate compatible architecture \"%s\""
 msgstr ""
 
-#: target-descriptions.c:1179
+#: target-descriptions.c:1260
 #, possible-c-format
 msgid "Attempted to add duplicate property \"%s\""
 msgstr ""
 
-#: target-descriptions.c:1257
+#: target-descriptions.c:1320
 #, possible-c-format
 msgid "The target description will be read from \"%s\".\n"
 msgstr ""
 
-#: target-descriptions.c:1260
+#: target-descriptions.c:1323
 msgid "The target description will be read from the target.\n"
 msgstr ""
 
-#: target-descriptions.c:1371 target-descriptions.c:1492
+#: target-descriptions.c:1436 target-descriptions.c:1557
 #, possible-c-format
 msgid "C output is not supported type \"%s\"."
 msgstr ""
 
-#: target-descriptions.c:1634
+#: target-descriptions.c:1699
 #, possible-c-format
 msgid "\"regnum\" attribute %ld is not the largest number (%d)."
 msgstr ""
 
-#: target-descriptions.c:1698
+#: target-descriptions.c:1763 target-descriptions.c:1820
 msgid "There is no target description to print."
 msgstr ""
 
-#: target-descriptions.c:1701
-msgid "The current target description did not come from an XML file."
-msgstr ""
-
-#: target-descriptions.c:1771
+#: target-descriptions.c:1867
 #, possible-c-format
 msgid "Could not convert description for %s to xml.\n"
 msgstr ""
 
-#: target-descriptions.c:1780
+#: target-descriptions.c:1876
 #, possible-c-format
 msgid "Could not convert description for %s from xml.\n"
 msgstr ""
 
-#: target-descriptions.c:1786
+#: target-descriptions.c:1882
 #, possible-c-format
 msgid "Converted description for %s does not match.\n"
 msgstr ""
 
-#: target-descriptions.c:1802
+#: target-descriptions.c:1898
 msgid "Missing dir name"
 msgstr ""
 
-#: target-descriptions.c:1816
+#: target-descriptions.c:1912
 #, possible-c-format
 msgid "Descriptions for %s do not match.\n"
 msgstr ""
 
-#: target-descriptions.c:1823
+#: target-descriptions.c:1919
 #, possible-c-format
 msgid "Tested %lu XML files, %d failed\n"
 msgstr ""
 
-#: target-descriptions.c:1832
+#: target-descriptions.c:1931
 msgid "Set target description specific variables."
 msgstr ""
 
 #. allow-unknown
-#: target-descriptions.c:1836
+#: target-descriptions.c:1935
 msgid "Show target description specific variables."
 msgstr ""
 
 #. allow-unknown
-#: target-descriptions.c:1840
+#: target-descriptions.c:1939
 msgid "Unset target description specific variables."
 msgstr ""
 
-#: target-descriptions.c:1847
+#: target-descriptions.c:1946
 msgid "Set the file to read for an XML target description."
 msgstr ""
 
-#: target-descriptions.c:1848
+#: target-descriptions.c:1947
 msgid "Show the file to read for an XML target description."
 msgstr ""
 
-#: target-descriptions.c:1849
+#: target-descriptions.c:1948
 msgid ""
 "When set, GDB will read the target description from a local\n"
 "file instead of querying the remote target."
 msgstr ""
 
-#: target-descriptions.c:1856
+#: target-descriptions.c:1955
 msgid ""
 "Unset the file to read for an XML target description.\n"
 "When unset, GDB will read the description from the target."
 msgstr ""
 
-#: target-descriptions.c:1861
+#: target-descriptions.c:1960
 msgid "Print the current target description as a C source file."
 msgstr ""
 
-#: target-descriptions.c:1868
+#: target-descriptions.c:1965
+msgid "Print the current target description as an XML file."
+msgstr ""
+
+#: target-descriptions.c:1971
 msgid ""
 "Check equality of GDB target descriptions and XML created descriptions.\n"
 "Check the target descriptions created in GDB equal the descriptions\n"
@@ -30523,150 +30416,150 @@ msgstr ""
 msgid "unit tests target"
 msgstr ""
 
-#: thread.c:324
+#: thread.c:297
 #, possible-c-format
 msgid "[New %s]\n"
 msgstr ""
 
-#: thread.c:907
+#: thread.c:908
 msgid "No thread selected."
 msgstr ""
 
-#: thread.c:913
+#: thread.c:914
 msgid "The current thread has terminated"
 msgstr ""
 
-#: thread.c:981
+#: thread.c:982
 msgid "Requested thread not found in requested process"
 msgstr ""
 
-#: thread.c:1068
+#: thread.c:1076
 msgid "No threads.\n"
 msgstr ""
 
-#: thread.c:1070
+#: thread.c:1078
 #, possible-c-format
 msgid "No threads match '%s'.\n"
 msgstr ""
 
-#: thread.c:1215
+#: thread.c:1222
 msgid "Show global thread IDs."
 msgstr ""
 
-#: thread.c:1368
+#: thread.c:1377
 #, possible-c-format
 msgid ""
 "Couldn't restore frame #%d in current thread.  Bottom (innermost) frame "
 "selected:"
 msgstr ""
 
-#: thread.c:1519 thread.c:1530
+#: thread.c:1543
 #, possible-c-format
 msgid ""
 "\n"
 "Thread %s (%s):\n"
 msgstr ""
 
-#: thread.c:1545
+#: thread.c:1575
 msgid ""
 "Call COMMAND for all threads in ascending order.\n"
 "The default is descending order."
 msgstr ""
 
-#: thread.c:1559
+#: thread.c:1589
 msgid "Disables printing the thread information."
 msgstr ""
 
-#: thread.c:1617
+#: thread.c:1647
 msgid "Please specify a command at the end of 'thread apply all'"
 msgstr ""
 
-#: thread.c:1738
+#: thread.c:1768
 msgid "Please specify a thread ID list"
 msgstr ""
 
-#: thread.c:1758
+#: thread.c:1788
 msgid "Please specify a command following the thread ID list"
 msgstr ""
 
-#: thread.c:1781
+#: thread.c:1811
 #, possible-c-format
 msgid "Unknown inferior %d"
 msgstr ""
 
-#: thread.c:1799
+#: thread.c:1829
 #, possible-c-format
 msgid "Unknown thread %d.%d"
 msgstr ""
 
-#: thread.c:1801
+#: thread.c:1831
 #, possible-c-format
 msgid "Unknown thread %d"
 msgstr ""
 
-#: thread.c:1807
+#: thread.c:1837
 #, possible-c-format
 msgid "Thread %s has terminated."
 msgstr ""
 
-#: thread.c:1822
+#: thread.c:1852
 msgid "Please specify a command to apply on all threads"
 msgstr ""
 
-#: thread.c:1833
+#: thread.c:1863
 msgid "Please specify a command to apply on all frames of all threads"
 msgstr ""
 
-#: thread.c:1847 thread.c:1895
+#: thread.c:1877 thread.c:1925
 msgid "No thread selected"
 msgstr ""
 
-#: thread.c:1854
+#: thread.c:1884
 #, possible-c-format
 msgid "[Current thread is %s (%s) (exited)]\n"
 msgstr ""
 
-#: thread.c:1858
+#: thread.c:1888
 #, possible-c-format
 msgid "[Current thread is %s (%s)]\n"
 msgstr ""
 
-#: thread.c:1924
+#: thread.c:1960
 #, possible-c-format
 msgid "Thread %s has name '%s'\n"
 msgstr ""
 
-#: thread.c:1932
+#: thread.c:1968
 #, possible-c-format
 msgid "Thread %s has target name '%s'\n"
 msgstr ""
 
-#: thread.c:1940
+#: thread.c:1976
 #, possible-c-format
 msgid "Thread %s has target id '%s'\n"
 msgstr ""
 
-#: thread.c:1948
+#: thread.c:1984
 #, possible-c-format
 msgid "Thread %s has extra info '%s'\n"
 msgstr ""
 
-#: thread.c:1954
+#: thread.c:1990
 #, possible-c-format
 msgid "No threads match '%s'\n"
 msgstr ""
 
-#: thread.c:1964
+#: thread.c:2000
 #, possible-c-format
 msgid "Printing of thread events is %s.\n"
 msgstr ""
 
-#: thread.c:1974
+#: thread.c:2010
 #, possible-c-format
 msgid "Thread ID %s has terminated."
 msgstr ""
 
-#: thread.c:2127
+#: thread.c:2183
 msgid ""
 "Display currently known threads.\n"
 "Usage: info threads [OPTION]... [ID]...\n"
@@ -30677,27 +30570,27 @@ msgid ""
 "Otherwise, all threads are displayed."
 msgstr ""
 
-#: thread.c:2140
+#: thread.c:2196
 msgid ""
 "Use this command to switch between threads.\n"
 "The new thread ID must be currently known."
 msgstr ""
 
-#: thread.c:2157
+#: thread.c:2213
 msgid ""
 "Apply a command to a list of threads.\n"
 "Usage: thread apply ID... [OPTION]... COMMAND\n"
 "ID is a space-separated list of IDs of threads to apply COMMAND on.\n"
 msgstr ""
 
-#: thread.c:2173
+#: thread.c:2229
 msgid ""
 "Apply a command to all threads.\n"
 "\n"
 "Usage: thread apply all [OPTION]... COMMAND\n"
 msgstr ""
 
-#: thread.c:2185
+#: thread.c:2241
 msgid ""
 "Apply a command to all threads (ignoring errors and empty output).\n"
 "Usage: taas [OPTION]... COMMAND\n"
@@ -30705,7 +30598,7 @@ msgid ""
 "See \"help thread apply all\" for available options."
 msgstr ""
 
-#: thread.c:2192
+#: thread.c:2248
 msgid ""
 "Apply a command to all frames of all threads (ignoring errors and empty "
 "output).\n"
@@ -30715,25 +30608,25 @@ msgid ""
 "See \"help frame apply all\" for available options."
 msgstr ""
 
-#: thread.c:2200
+#: thread.c:2256
 msgid ""
 "Set the current thread's name.\n"
 "Usage: thread name [NAME]\n"
 "If NAME is not given, then any existing name is removed."
 msgstr ""
 
-#: thread.c:2204
+#: thread.c:2260
 msgid ""
 "Find threads that match a regular expression.\n"
 "Usage: thread find REGEXP\n"
 "Will display thread ids whose name, target ID, or extra info matches REGEXP."
 msgstr ""
 
-#: thread.c:2213
+#: thread.c:2269
 msgid "Set printing of thread events (such as thread start and exit)."
 msgstr ""
 
-#: thread.c:2214
+#: thread.c:2270
 msgid "Show printing of thread events (such as thread start and exit)."
 msgstr ""
 
@@ -30785,296 +30678,322 @@ msgstr ""
 msgid "unhandled state"
 msgstr ""
 
-#: top.c:136
+#: top.c:140
 #, possible-c-format
 msgid "Whether to confirm potentially dangerous operations is %s.\n"
 msgstr ""
 
-#: top.c:342
+#: top.c:346
 msgid "opening terminal failed"
 msgstr ""
 
-#: top.c:362
+#: top.c:366
 msgid "Usage: new-ui INTERPRETER TTY"
 msgstr ""
 
-#: top.c:647
+#: top.c:664
 msgid "That is not a command, just a help topic."
 msgstr ""
 
-#: top.c:763
+#: top.c:780
 msgid "No previous command to relaunch"
 msgstr ""
 
-#: top.c:890
+#: top.c:913
 #, possible-c-format
 msgid "Saving of the history record on exit is %s.\n"
 msgstr ""
 
-#: top.c:902
+#: top.c:916
+msgid ""
+"Saving of the history is disabled due to the value of 'history filename'.\n"
+msgstr ""
+
+#: top.c:928
 #, possible-c-format
 msgid "The size of the command history is %s.\n"
 msgstr ""
 
-#: top.c:915
+#: top.c:941
 #, possible-c-format
 msgid "The number of history entries to look back at for duplicates is %s.\n"
 msgstr ""
 
-#: top.c:925
+#: top.c:964
 #, possible-c-format
-msgid "The filename in which to record the command history is \"%s\".\n"
+msgid "The filename in which to record the command history is \"%ps\".\n"
 msgstr ""
 
-#: top.c:1194 top.c:1224
+#: top.c:968
+msgid ""
+"There is no filename currently set for recording the command history in.\n"
+msgstr ""
+
+#: top.c:1236
+#, possible-c-format
+msgid "Could not rename %ps to %ps: %s"
+msgstr ""
+
+#: top.c:1268
 #, possible-c-format
 msgid "Could not rename %s to %s: %s"
 msgstr ""
 
-#: top.c:1400
+#: top.c:1444
 msgid "Type \"show configuration\" for configuration details.\n"
 msgstr ""
 
-#: top.c:1406
+#: top.c:1450
 msgid "For bug reporting instructions, please see:\n"
 msgstr ""
 
-#: top.c:1410
+#: top.c:1454
 msgid ""
 "Find the GDB manual and other documentation resources online at:\n"
 "    <http://www.gnu.org/software/gdb/documentation/>."
 msgstr ""
 
-#: top.c:1413
+#: top.c:1457
 msgid "For help, type \"help\".\n"
 msgstr ""
 
-#: top.c:1415
+#: top.c:1459
 msgid "Type \"apropos word\" to search for commands related to \"word\"."
 msgstr ""
 
-#: top.c:1423
+#: top.c:1467
 #, possible-c-format
 msgid ""
 "This GDB was configured as follows:\n"
 "   configure --host=%s --target=%s\n"
 msgstr ""
 
-#: top.c:1427
+#: top.c:1472
 #, possible-c-format
 msgid ""
 "             --with-auto-load-dir=%s\n"
 "             --with-auto-load-safe-path=%s\n"
 msgstr ""
 
-#: top.c:1432
+#: top.c:1478
 msgid "             --with-expat\n"
 msgstr ""
 
-#: top.c:1436
+#: top.c:1482
 msgid "             --without-expat\n"
 msgstr ""
 
-#: top.c:1441
+#: top.c:1488
 #, possible-c-format
 msgid "             --with-gdb-datadir=%s%s\n"
 msgstr ""
 
-#: top.c:1445
+#: top.c:1493
 #, possible-c-format
 msgid "             --with-iconv-bin=%s%s\n"
 msgstr ""
 
-#: top.c:1450
+#: top.c:1499
 #, possible-c-format
 msgid "             --with-jit-reader-dir=%s%s\n"
 msgstr ""
 
-#: top.c:1454
+#: top.c:1504
 msgid "             --with-libunwind-ia64\n"
 msgstr ""
 
-#: top.c:1458
+#: top.c:1508
 msgid "             --without-libunwind-ia64\n"
 msgstr ""
 
-#: top.c:1463
+#: top.c:1514
 msgid "             --with-lzma\n"
 msgstr ""
 
-#: top.c:1467
+#: top.c:1518
 msgid "             --without-lzma\n"
 msgstr ""
 
-#: top.c:1472
+#: top.c:1524
 msgid "             --with-babeltrace\n"
 msgstr ""
 
-#: top.c:1476
-msgid ""
-"             --without-babeltrace\n"
-"\t\t"
+#: top.c:1528
+msgid "             --without-babeltrace\n"
 msgstr ""
 
-#: top.c:1481
+#: top.c:1534
 msgid "             --with-intel-pt\n"
 msgstr ""
 
-#: top.c:1485
+#: top.c:1538
 msgid "             --without-intel-pt\n"
 msgstr ""
 
-#: top.c:1490
+#: top.c:1544
 msgid "             --with-mpfr\n"
 msgstr ""
 
-#: top.c:1494
+#: top.c:1548
 msgid "             --without-mpfr\n"
 msgstr ""
 
-#: top.c:1499
+#: top.c:1553
 msgid "             --with-xxhash\n"
 msgstr ""
 
-#: top.c:1503
+#: top.c:1557
 msgid "             --without-xxhash\n"
 msgstr ""
 
-#: top.c:1508
+#: top.c:1562
 #, possible-c-format
 msgid "             --with-python=%s%s\n"
 msgstr ""
 
-#: top.c:1512
+#: top.c:1566
 msgid "             --without-python\n"
 msgstr ""
 
-#: top.c:1517
+#: top.c:1571
+#, possible-c-format
+msgid "             --with-python-libdir=%s%s\n"
+msgstr ""
+
+#: top.c:1575
+msgid "             --without-python-libdir\n"
+msgstr ""
+
+#: top.c:1581
+msgid "             --with-debuginfod\n"
+msgstr ""
+
+#: top.c:1585
+msgid "             --without-debuginfod\n"
+msgstr ""
+
+#: top.c:1591
 msgid "             --with-guile\n"
 msgstr ""
 
-#: top.c:1521
+#: top.c:1595
 msgid "             --without-guile\n"
 msgstr ""
 
-#: top.c:1526
+#: top.c:1601
 msgid "             --enable-source-highlight\n"
 msgstr ""
 
-#: top.c:1530
+#: top.c:1605
 msgid "             --disable-source-highlight\n"
 msgstr ""
 
-#: top.c:1535
+#: top.c:1611
 #, possible-c-format
 msgid "             --with-relocated-sources=%s\n"
 msgstr ""
 
-#: top.c:1540
+#: top.c:1617
 #, possible-c-format
 msgid "             --with-separate-debug-dir=%s%s\n"
 msgstr ""
 
-#: top.c:1544
+#: top.c:1622
 #, possible-c-format
 msgid "             --with-sysroot=%s%s\n"
 msgstr ""
 
-#: top.c:1548
+#: top.c:1627
 #, possible-c-format
 msgid "             --with-system-gdbinit=%s%s\n"
 msgstr ""
 
-#: top.c:1552
+#: top.c:1632
 #, 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:1557
+#: top.c:1638
 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:1636
+#: top.c:1705
 #, possible-c-format
 msgid "\tInferior %d [%s] will be detached.\n"
 msgstr ""
 
-#: top.c:1640
+#: top.c:1709
 #, possible-c-format
 msgid "\tInferior %d [%s] will be killed.\n"
 msgstr ""
 
-#: top.c:1659
+#: top.c:1726
 msgid ""
 "A debugging session is active.\n"
 "\n"
 msgstr ""
 
-#: top.c:1661
+#: top.c:1731
 msgid ""
 "\n"
 "Quit anyway? "
 msgstr ""
 
-#: top.c:1905
-msgid "\"set history\" must be followed by the name of a history subcommand.\n"
-msgstr ""
-
-#: top.c:1934
+#: top.c:1991
 msgid "Set verbose printing of informational messages."
 msgstr ""
 
-#: top.c:1935
+#: top.c:1992
 msgid "Show verbose printing of informational messages."
 msgstr ""
 
-#: top.c:2020
+#: top.c:2080
 #, possible-c-format
 msgid "Gdb's prompt is \"%s\".\n"
 msgstr ""
 
-#: top.c:2038
+#: top.c:2098
 #, possible-c-format
 msgid "Editing of command lines as they are typed is %s.\n"
 msgstr ""
 
-#: top.c:2040
+#: top.c:2100
 msgid "on"
 msgstr ""
 
-#: top.c:2040
+#: top.c:2100
 msgid "off"
 msgstr ""
 
-#: top.c:2047
+#: top.c:2107
 #, possible-c-format
 msgid "Annotation_level is %s.\n"
 msgstr ""
 
-#: top.c:2054
+#: top.c:2114
 #, possible-c-format
 msgid "Notification of completion for asynchronous execution commands is %s.\n"
 msgstr ""
 
-#: top.c:2077
+#: top.c:2137
 #, possible-c-format
-msgid "GDB's data directory is \"%s\".\n"
+msgid "GDB's data directory is \"%ps\".\n"
 msgstr ""
 
-#: top.c:2133
+#: top.c:2200
 msgid "Set gdb's prompt."
 msgstr ""
 
-#: top.c:2134
+#: top.c:2201
 msgid "Show gdb's prompt."
 msgstr ""
 
-#: top.c:2139
+#: top.c:2206
 msgid ""
 "Don't repeat this command.\n"
 "Primarily used inside of user-defined commands that should not be repeated "
@@ -31082,44 +31001,44 @@ msgid ""
 "hitting return."
 msgstr ""
 
-#: top.c:2145
+#: top.c:2212
 msgid "Set editing of command lines as they are typed."
 msgstr ""
 
-#: top.c:2146
+#: top.c:2213
 msgid "Show editing of command lines as they are typed."
 msgstr ""
 
-#: top.c:2147
+#: top.c:2214
 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:2155
+#: top.c:2222
 msgid "Set saving of the history record on exit."
 msgstr ""
 
-#: top.c:2156
+#: top.c:2223
 msgid "Show saving of the history record on exit."
 msgstr ""
 
-#: top.c:2157
+#: top.c:2224
 msgid ""
 "Use \"on\" to enable the saving, and \"off\" to disable it.\n"
 "Without an argument, saving is enabled."
 msgstr ""
 
-#: top.c:2165
+#: top.c:2232
 msgid "Set the size of the command history."
 msgstr ""
 
-#: top.c:2166
+#: top.c:2233
 msgid "Show the size of the command history."
 msgstr ""
 
-#: top.c:2167
+#: top.c:2234
 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"
@@ -31127,15 +31046,15 @@ msgid ""
 "variable \"GDBHISTSIZE\", or to 256 if this variable is not set."
 msgstr ""
 
-#: top.c:2177
+#: top.c:2244
 msgid "Set how far back in history to look for and remove duplicate entries."
 msgstr ""
 
-#: top.c:2178
+#: top.c:2245
 msgid "Show how far back in history to look for and remove duplicate entries."
 msgstr ""
 
-#: top.c:2179
+#: top.c:2246
 msgid ""
 "If set to a nonzero value N, GDB will look back at the last N history "
 "entries\n"
@@ -31147,73 +31066,73 @@ msgid ""
 "By default this option is set to 0."
 msgstr ""
 
-#: top.c:2191
+#: top.c:2258
 msgid "Set the filename in which to record the command history."
 msgstr ""
 
-#: top.c:2192
+#: top.c:2259
 msgid "Show the filename in which to record the command history."
 msgstr ""
 
-#: top.c:2193
+#: top.c:2260
 msgid "(the list of previous commands of which a record is kept)."
 msgstr ""
 
-#: top.c:2199
+#: top.c:2266
 msgid "Set whether to confirm potentially dangerous operations."
 msgstr ""
 
-#: top.c:2200
+#: top.c:2267
 msgid "Show whether to confirm potentially dangerous operations."
 msgstr ""
 
-#: top.c:2206
+#: top.c:2273
 msgid "Set annotation_level."
 msgstr ""
 
-#: top.c:2207
+#: top.c:2274
 msgid "Show annotation_level."
 msgstr ""
 
-#: top.c:2208
+#: top.c:2275
 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:2216
+#: top.c:2283
 msgid "Set notification of completion for asynchronous execution commands."
 msgstr ""
 
-#: top.c:2217
+#: top.c:2284
 msgid "Show notification of completion for asynchronous execution commands."
 msgstr ""
 
-#: top.c:2218
+#: top.c:2285
 msgid "Use \"on\" to enable the notification, and \"off\" to disable it."
 msgstr ""
 
-#: top.c:2225
+#: top.c:2292
 msgid "Set GDB's data directory."
 msgstr ""
 
-#: top.c:2226
+#: top.c:2293
 msgid "Show GDB's data directory."
 msgstr ""
 
-#: top.c:2227
+#: top.c:2294
 msgid "When set, GDB uses the specified path to search for data files."
 msgstr ""
 
-#: top.c:2234
+#: top.c:2301
 msgid "Set whether GDB's standard input is a terminal."
 msgstr ""
 
-#: top.c:2235
+#: top.c:2302
 msgid "Show whether GDB's standard input is a terminal."
 msgstr ""
 
-#: top.c:2236
+#: top.c:2303
 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"
@@ -31223,7 +31142,7 @@ msgid ""
 "input settings."
 msgstr ""
 
-#: top.c:2247
+#: top.c:2314
 msgid ""
 "Create a new UI.\n"
 "Usage: new-ui INTERPRETER TTY\n"
@@ -31261,7 +31180,7 @@ msgstr ""
 msgid "Unable to open directory '%s' for saving trace data (%s)"
 msgstr ""
 
-#: tracectf.c:362 tracectf.c:371 tracefile-tfile.c:127
+#: tracectf.c:362 tracectf.c:371 tracefile-tfile.c:128
 #, possible-c-format
 msgid "Unable to open file '%s' for saving trace data (%s)"
 msgstr ""
@@ -31295,15 +31214,15 @@ msgstr ""
 msgid "Wrong event id of the first event of the second packet"
 msgstr ""
 
-#: tracectf.c:1306
+#: tracectf.c:1307
 msgid "ctf_xfer_partial: trace file is read-only"
 msgstr ""
 
-#: tracectf.c:1624 tracefile-tfile.c:755
+#: tracectf.c:1625 tracefile-tfile.c:755
 msgid "unknown tfind type"
 msgstr ""
 
-#: tracectf.c:1704
+#: tracectf.c:1705
 #, possible-c-format
 msgid "Unhandled trace block type (%s) while building trace frame info."
 msgstr ""
@@ -31347,7 +31266,7 @@ msgstr ""
 msgid "Tracepoint %d does while-stepping, cannot infer $pc"
 msgstr ""
 
-#: tracefile.c:477
+#: tracefile.c:478
 msgid ""
 "Save the trace data to a file.\n"
 "Use the '-ctf' option to save the data to CTF format.\n"
@@ -31355,21 +31274,21 @@ msgid ""
 "using its own filesystem."
 msgstr ""
 
-#: tracefile-tfile.c:45
+#: tracefile-tfile.c:46
 msgid "Local trace dump file"
 msgstr ""
 
-#: tracefile-tfile.c:46
+#: tracefile-tfile.c:47
 msgid ""
 "Use a trace file as a target.\n"
 "Specify the filename of the trace file."
 msgstr ""
 
-#: tracefile-tfile.c:449
+#: tracefile-tfile.c:450
 msgid "Premature end of file while reading trace file"
 msgstr ""
 
-#: tracefile-tfile.c:469
+#: tracefile-tfile.c:470
 msgid "No trace file specified."
 msgstr ""
 
@@ -31385,11 +31304,11 @@ msgstr ""
 msgid "No register block size recorded in trace file"
 msgstr ""
 
-#: tracefile-tfile.c:563
+#: tracefile-tfile.c:564
 msgid "No traceframes present in this file."
 msgstr ""
 
-#: tracefile-tfile.c:611
+#: tracefile-tfile.c:612
 #, possible-c-format
 msgid "Ignoring trace file definition \"%s\""
 msgstr ""
@@ -31665,10 +31584,6 @@ msgstr ""
 msgid " (%d%% full)"
 msgstr ""
 
-#: tracepoint.c:1861
-msgid ".\n"
-msgstr ""
-
 #: tracepoint.c:1864
 #, possible-c-format
 msgid "Trace buffer has %d bytes free.\n"
@@ -31884,19 +31799,19 @@ msgstr ""
 msgid "trace frame info"
 msgstr ""
 
-#: tracepoint.c:3998
+#: tracepoint.c:3999
 msgid "List the variables local to a scope."
 msgstr ""
 
-#: tracepoint.c:4001
+#: tracepoint.c:4002
 msgid "Tracing of program execution without stopping the program."
 msgstr ""
 
-#: tracepoint.c:4005
+#: tracepoint.c:4006
 msgid "Print everything collected at the current tracepoint."
 msgstr ""
 
-#: tracepoint.c:4007
+#: tracepoint.c:4008
 msgid ""
 "Define a trace state variable.\n"
 "Argument is a $-prefixed name, optionally followed\n"
@@ -31904,7 +31819,7 @@ msgid ""
 "at the start of tracing."
 msgstr ""
 
-#: tracepoint.c:4014
+#: tracepoint.c:4015
 msgid ""
 "Delete one or more trace state variables.\n"
 "Arguments are the names of the variables to delete.\n"
@@ -31912,33 +31827,33 @@ msgid ""
 msgstr ""
 
 #. FIXME add a trace variable completer.
-#: tracepoint.c:4020
+#: tracepoint.c:4021
 msgid "Status of trace state variables and their values."
 msgstr ""
 
-#: tracepoint.c:4024
+#: tracepoint.c:4025
 msgid "List target static tracepoints markers."
 msgstr ""
 
-#: tracepoint.c:4027
+#: tracepoint.c:4028
 msgid ""
 "Select a trace frame.\n"
 "No argument means forward by one frame; '-' means backward by one frame."
 msgstr ""
 
-#: tracepoint.c:4032
+#: tracepoint.c:4033
 msgid ""
 "Select a trace frame whose PC is outside the given range (exclusive).\n"
 "Usage: tfind outside ADDR1, ADDR2"
 msgstr ""
 
-#: tracepoint.c:4037
+#: tracepoint.c:4038
 msgid ""
 "Select a trace frame whose PC is in the given range (inclusive).\n"
 "Usage: tfind range ADDR1, ADDR2"
 msgstr ""
 
-#: tracepoint.c:4042
+#: tracepoint.c:4043
 msgid ""
 "Select a trace frame by source line.\n"
 "Argument can be a line number (with optional source file),\n"
@@ -31946,31 +31861,31 @@ msgid ""
 "Default argument is 'the next source line that was traced'."
 msgstr ""
 
-#: tracepoint.c:4049
+#: tracepoint.c:4050
 msgid ""
 "Select a trace frame by tracepoint number.\n"
 "Default is the tracepoint for the current trace frame."
 msgstr ""
 
-#: tracepoint.c:4054
+#: tracepoint.c:4055
 msgid ""
 "Select a trace frame by PC.\n"
 "Default is the current PC, or the PC of the current trace frame."
 msgstr ""
 
-#: tracepoint.c:4059
+#: tracepoint.c:4060
 msgid "De-select any trace frame and resume 'live' debugging."
 msgstr ""
 
-#: tracepoint.c:4066
+#: tracepoint.c:4067
 msgid "Select the first trace frame in the trace buffer."
 msgstr ""
 
-#: tracepoint.c:4070
+#: tracepoint.c:4071
 msgid "Display the status of the current trace data collection."
 msgstr ""
 
-#: tracepoint.c:4072
+#: tracepoint.c:4073
 msgid ""
 "Stop trace data collection.\n"
 "Usage: tstop [NOTES]...\n"
@@ -31978,7 +31893,7 @@ msgid ""
 "reported by tstatus (if the target supports trace notes)."
 msgstr ""
 
-#: tracepoint.c:4078
+#: tracepoint.c:4079
 msgid ""
 "Start trace data collection.\n"
 "Usage: tstart [NOTES]...\n"
@@ -31986,7 +31901,7 @@ msgid ""
 "reported by tstatus (if the target supports trace notes)."
 msgstr ""
 
-#: tracepoint.c:4084
+#: tracepoint.c:4085
 msgid ""
 "Ends a list of commands or actions.\n"
 "Several GDB commands allow you to enter a list of commands or actions.\n"
@@ -31996,7 +31911,7 @@ msgid ""
 "Note: the \"end\" command cannot be used at the gdb prompt."
 msgstr ""
 
-#: tracepoint.c:4092
+#: tracepoint.c:4093
 msgid ""
 "Specify single-stepping behavior at a tracepoint.\n"
 "Argument is number of instructions to trace in single-step mode\n"
@@ -32007,7 +31922,7 @@ msgid ""
 "Note: this command can only be used in a tracepoint \"actions\" list."
 msgstr ""
 
-#: tracepoint.c:4103
+#: tracepoint.c:4104
 msgid ""
 "Specify one or more data items to be collected at a tracepoint.\n"
 "Accepts a comma-separated list of (one or more) expressions.  GDB will\n"
@@ -32020,7 +31935,7 @@ msgid ""
 "Note: this command can only be used in a tracepoint \"actions\" list."
 msgstr ""
 
-#: tracepoint.c:4114
+#: tracepoint.c:4115
 msgid ""
 "Specify one or more expressions to be evaluated at a tracepoint.\n"
 "Accepts a comma-separated list of (one or more) expressions.\n"
@@ -32028,7 +31943,7 @@ msgid ""
 "Note: this command can only be used in a tracepoint \"actions\" list."
 msgstr ""
 
-#: tracepoint.c:4120
+#: tracepoint.c:4121
 msgid ""
 "Specify the actions to be taken at a tracepoint.\n"
 "Tracepoint actions may include collecting of specified data,\n"
@@ -32036,340 +31951,401 @@ msgid ""
 "depending on target's capabilities."
 msgstr ""
 
-#: tracepoint.c:4128
+#: tracepoint.c:4129
 msgid "Set the list of expressions to collect by default."
 msgstr ""
 
-#: tracepoint.c:4129
+#: tracepoint.c:4130
 msgid "Show the list of expressions to collect by default."
 msgstr ""
 
-#: tracepoint.c:4135
+#: tracepoint.c:4136
 msgid "Set whether tracing continues after GDB disconnects."
 msgstr ""
 
-#: tracepoint.c:4136
+#: tracepoint.c:4137
 msgid "Show whether tracing continues after GDB disconnects."
 msgstr ""
 
-#: tracepoint.c:4137
+#: tracepoint.c:4138
 msgid ""
 "Use this to continue a tracing run even if GDB disconnects\n"
 "or detaches from the target.  You can reconnect later and look at\n"
 "trace data collected in the meantime."
 msgstr ""
 
-#: tracepoint.c:4147
+#: tracepoint.c:4148
 msgid "Set target's use of circular trace buffer."
 msgstr ""
 
-#: tracepoint.c:4148
+#: tracepoint.c:4149
 msgid "Show target's use of circular trace buffer."
 msgstr ""
 
-#: tracepoint.c:4149
+#: tracepoint.c:4150
 msgid ""
 "Use this to make the trace buffer into a circular buffer,\n"
 "which will discard traceframes (oldest first) instead of filling\n"
 "up and stopping the trace run."
 msgstr ""
 
-#: tracepoint.c:4159
+#: tracepoint.c:4160
 msgid "Set requested size of trace buffer."
 msgstr ""
 
-#: tracepoint.c:4160
+#: tracepoint.c:4161
 msgid "Show requested size of trace buffer."
 msgstr ""
 
-#: tracepoint.c:4161
+#: tracepoint.c:4162
 msgid ""
 "Use this to choose a size for the trace buffer.  Some targets\n"
 "may have fixed or limited buffer sizes.  Specifying \"unlimited\" or -1\n"
 "disables any attempt to set the buffer size and lets the target choose."
 msgstr ""
 
-#: tracepoint.c:4169
+#: tracepoint.c:4170
 msgid "Set the user name to use for current and future trace runs."
 msgstr ""
 
-#: tracepoint.c:4170
+#: tracepoint.c:4171
 msgid "Show the user name to use for current and future trace runs."
 msgstr ""
 
-#: tracepoint.c:4176
+#: tracepoint.c:4177
 msgid "Set notes string to use for current and future trace runs."
 msgstr ""
 
-#: tracepoint.c:4177
+#: tracepoint.c:4178
 msgid "Show the notes string to use for current and future trace runs."
 msgstr ""
 
-#: tracepoint.c:4183
+#: tracepoint.c:4184
 msgid "Set notes string to use for future tstop commands."
 msgstr ""
 
-#: tracepoint.c:4184
+#: tracepoint.c:4185
 msgid "Show the notes string to use for future tstop commands."
 msgstr ""
 
-#: tui/tui-disasm.h:53
+#: tui/tui-disasm.h:48
 msgid "[ No Assembly Available ]"
 msgstr ""
 
-#: tui/tui.c:426
-#, possible-c-format
-msgid "Cannot enable the TUI when the interpreter is '%s'"
+#: tui/tui-interp.c:297
+msgid "tui_exec called"
 msgstr ""
 
-#: tui/tui.c:431
-msgid "Cannot enable the TUI when output is not a terminal"
+#: tui/tui-io.c:858
+msgid "Cannot create pipe for readline"
+msgstr ""
+
+#: tui/tui-io.c:862
+msgid "Cannot redirect readline output"
 msgstr ""
 
-#: tui/tui.c:442
+#: tui/tui-layout.c:170
+msgid "layout not found!?"
+msgstr ""
+
+#: tui/tui-layout.c:363
 #, possible-c-format
-msgid "Cannot enable the TUI: error opening terminal [TERM=%s]"
+msgid "Unknown window type \"%s\""
 msgstr ""
 
-#: tui/tui.c:464
+#: tui/tui-layout.c:367
 #, possible-c-format
-msgid ""
-"Cannot enable the TUI: terminal doesn't support cursor addressing [TERM=%s]"
+msgid "Could not create window \"%s\""
 msgstr ""
 
-#: tui/tui.c:682
-msgid "Enable TUI display mode."
+#: tui/tui-layout.c:401
+#, possible-c-format
+msgid "Window type \"%s\" is built-in"
 msgstr ""
 
-#: tui/tui.c:685
-msgid "Disable TUI display mode."
+#: tui/tui-layout.c:649 tui/tui-win.c:906
+msgid "Invalid window height specified"
 msgstr ""
 
-#: tui/tui-stack.c:386
+#: tui/tui-layout.c:867
+#, possible-c-format
 msgid ""
-"Update the source window and locator to display the current execution point."
+"Apply the \"%s\" layout.\n"
+"This layout was created using:\n"
+"  tui new-layout %s %s"
 msgstr ""
 
-#: tui/tui-io.c:877
-msgid "Cannot create pipe for readline"
+#: tui/tui-layout.c:946
+msgid "No layout name specified"
 msgstr ""
 
-#: tui/tui-io.c:881
-msgid "Cannot redirect readline output"
+#: tui/tui-layout.c:948
+msgid "Layout name cannot start with '-'"
 msgstr ""
 
-#: tui/tui-layout.c:260
-msgid "Usage: layout prev | next | LAYOUT-NAME"
+#: tui/tui-layout.c:981
+msgid "Extra '}' in layout specification"
 msgstr ""
 
-#: tui/tui-layout.c:264
-msgid "Ambiguous command input."
+#: tui/tui-layout.c:989
+#, possible-c-format
+msgid "Unknown window \"%s\""
 msgstr ""
 
-#: tui/tui-layout.c:285
+#: tui/tui-layout.c:991
 #, possible-c-format
-msgid "Unrecognized layout: %s"
+msgid "Window \"%s\" seen twice in layout"
 msgstr ""
 
-#: tui/tui-layout.c:554
+#: tui/tui-layout.c:996
+#, possible-c-format
+msgid "Weight out of range: %s"
+msgstr ""
+
+#: tui/tui-layout.c:1011
+msgid "Missing '}' in layout specification"
+msgstr ""
+
+#: tui/tui-layout.c:1013
+msgid "New layout does not contain any windows"
+msgstr ""
+
+#: tui/tui-layout.c:1015
+msgid "New layout does not contain the \""
+msgstr ""
+
+#: tui/tui-layout.c:1034
 msgid ""
 "Change the layout of windows.\n"
-"Usage: layout prev | next | LAYOUT-NAME\n"
-"Layout names are:\n"
-"   src   : Displays source and command windows.\n"
-"   asm   : Displays disassembly and command windows.\n"
-"   split : Displays source, disassembly and command windows.\n"
-"   regs  : Displays register window. If existing layout\n"
-"           is source/command or assembly/command, the \n"
-"           register window is displayed. If the\n"
-"           source/assembly/command (split) is displayed, \n"
-"           the register window is displayed with \n"
-"           the window that has current logical focus."
+"Usage: layout prev | next | LAYOUT-NAME"
 msgstr ""
 
-#: tui/tui-interp.c:297
-msgid "tui_exec called"
+#: tui/tui-layout.c:1040
+msgid "Apply the next TUI layout."
 msgstr ""
 
-#: tui/tui-source.h:58
-msgid "[ No Source Available ]"
+#: tui/tui-layout.c:1043
+msgid "Apply the previous TUI layout."
+msgstr ""
+
+#: tui/tui-layout.c:1046
+msgid "Apply the TUI register layout."
+msgstr ""
+
+#: tui/tui-layout.c:1050
+msgid ""
+"Create a new TUI layout.\n"
+"Usage: tui new-layout [-horizontal] NAME WINDOW WEIGHT [WINDOW WEIGHT]...\n"
+"Create a new TUI layout.  The new layout will be named NAME,\n"
+"and can be accessed using \"layout NAME\".\n"
+"The windows will be displayed in the specified order.\n"
+"A WINDOW can also be of the form:\n"
+"  { [-horizontal] NAME WEIGHT [NAME WEIGHT]... }\n"
+"This form indicates a sub-frame.\n"
+"Each WEIGHT is an integer, which holds the relative size\n"
+"to be allocated to the window."
 msgstr ""
 
-#: tui/tui-regs.c:394
+#: tui/tui-regs.c:417
 msgid "[ Register Values Unavailable ]"
 msgstr ""
 
-#: tui/tui-regs.c:600
+#: tui/tui-regs.c:581
 #, possible-c-format
 msgid "ambiguous register group name '%s'"
 msgstr ""
 
-#: tui/tui-regs.c:606
+#: tui/tui-regs.c:587
 #, possible-c-format
 msgid "unknown register group '%s'"
 msgstr ""
 
-#: tui/tui-regs.c:615
+#: tui/tui-regs.c:596
 msgid ""
 "\"tui reg\" must be followed by the name of either a register group,\n"
 "or one of 'next' or 'prev'.  Known register groups are:\n"
 msgstr ""
 
-#: tui/tui-regs.c:661
-msgid "TUI command to control the register window."
+#: tui/tui-regs.c:636
+msgid ""
+"TUI command to control the register window.\n"
+"Usage: tui reg NAME\n"
+"NAME is the name of the register group to display"
 msgstr ""
 
-#: tui/tui-win.c:198
+#: tui/tui-source.h:53
+msgid "[ No Source Available ]"
+msgstr ""
+
+#: tui/tui-stack.c:381
+msgid ""
+"Update the source window and locator to display the current execution "
+"point.\n"
+"Usage: update"
+msgstr ""
+
+#: tui/tui-win.c:193
 #, possible-c-format
 msgid "The attribute mode to use for the active TUI window border is \"%s\".\n"
 msgstr ""
 
-#: tui/tui-win.c:210
+#: tui/tui-win.c:205
 #, possible-c-format
 msgid "The attribute mode to use for the TUI window borders is \"%s\".\n"
 msgstr ""
 
-#: tui/tui-win.c:222
+#: tui/tui-win.c:217
 #, possible-c-format
 msgid "The kind of border for TUI windows is \"%s\".\n"
 msgstr ""
 
-#: tui/tui-win.c:321
-msgid "\"tui\" must be followed by the name of a tui command.\n"
-msgstr ""
-
-#: tui/tui-win.c:331
+#: tui/tui-win.c:308
 msgid "Text User Interface commands."
 msgstr ""
 
-#: tui/tui-win.c:358
+#: tui/tui-win.c:335
 #, possible-c-format
 msgid "TUI resize messaging is %s.\n"
 msgstr ""
 
-#: tui/tui-win.c:834 tui/tui-win.c:1005
+#: tui/tui-win.c:672
 #, possible-c-format
-msgid "Unrecognized window name \"%s\""
+msgid "Window name \"%*s\" is ambiguous"
 msgstr ""
 
-#: tui/tui-win.c:836 tui/tui-win.c:1007
+#: tui/tui-win.c:688
+msgid "name of window to focus"
+msgstr ""
+
+#: tui/tui-win.c:700 tui/tui-win.c:870
 #, possible-c-format
-msgid "Window \"%s\" is not visible"
+msgid "Unrecognized window name \"%s\""
 msgstr ""
 
-#: tui/tui-win.c:840
+#: tui/tui-win.c:702 tui/tui-win.c:872
 #, possible-c-format
-msgid "Focus set to %s window.\n"
+msgid "Window \"%s\" is not visible"
 msgstr ""
 
-#: tui/tui-win.c:844
+#: tui/tui-win.c:706
 #, possible-c-format
-msgid ""
-"Incorrect Number of Arguments.\n"
-"%s"
+msgid "Focus set to %s window.\n"
 msgstr ""
 
-#: tui/tui-win.c:852
+#: tui/tui-win.c:715
 msgid "The TUI is not active.\n"
 msgstr ""
 
-#: tui/tui-win.c:873
+#: tui/tui-win.c:736
 msgid "(has focus)"
 msgstr ""
 
-#: tui/tui-win.c:920
+#: tui/tui-win.c:785
 msgid "Tab width must not be 0"
 msgstr ""
 
-#: tui/tui-win.c:933
+#: tui/tui-win.c:798
 #, possible-c-format
 msgid "TUI tab width is %s spaces.\n"
 msgstr ""
 
-#: tui/tui-win.c:957
+#: tui/tui-win.c:822
 #, possible-c-format
 msgid "TUI source window compactness is %s.\n"
 msgstr ""
 
-#: tui/tui-win.c:972
+#: tui/tui-win.c:837
 msgid "Tab widths greater than 0 must be specified."
 msgstr ""
 
-#: tui/tui-win.c:1039 tui/tui-win.c:1045
-#, possible-c-format
-msgid ""
-"Invalid window height specified.\n"
-"%s"
+#: tui/tui-win.c:856
+msgid "name of window"
 msgstr ""
 
-#: tui/tui-win.c:1392
+#: tui/tui-win.c:973
 #, possible-c-format
 msgid "Unrecognized window `%s'"
 msgstr ""
 
-#: tui/tui-win.c:1394
+#: tui/tui-win.c:975
 msgid "Window is not visible"
 msgstr ""
 
-#: tui/tui-win.c:1415 tui/tui-win.c:1419
+#: tui/tui-win.c:997 tui/tui-win.c:1001
 msgid "TUI configuration variables."
 msgstr ""
 
-#: tui/tui-win.c:1424
+#: tui/tui-win.c:1006
 msgid "Refresh the terminal display."
 msgstr ""
 
-#: tui/tui-win.c:1426
+#: tui/tui-win.c:1008
 msgid ""
 "Set the width (in characters) of tab stops.\n"
 "Usage: tabset N"
 msgstr ""
 
-#: tui/tui-win.c:1431
-msgid "Set or modify the height of a specified window.\n"
+#: tui/tui-win.c:1013
+msgid ""
+"Set or modify the height of a specified window.\n"
+"Usage: winheight WINDOW-NAME [+ | -] NUM-LINES\n"
+"Use \"info win\" to see the names of the windows currently being displayed."
 msgstr ""
 
-#: tui/tui-win.c:1442
-msgid "List of all displayed windows."
+#: tui/tui-win.c:1020
+msgid ""
+"List of all displayed windows.\n"
+"Usage: info win"
 msgstr ""
 
-#: tui/tui-win.c:1443
-msgid "Set focus to named window or next/prev window.\n"
+#: tui/tui-win.c:1022
+msgid ""
+"Set focus to named window or next/prev window.\n"
+"Usage: focus [WINDOW-NAME | next | prev]\n"
+"Use \"info win\" to see the names of the windows currently being displayed."
 msgstr ""
 
-#: tui/tui-win.c:1453
+#: tui/tui-win.c:1028
 msgid ""
 "Scroll window forward.\n"
-"Usage: + [WIN] [N]"
+"Usage: + [N] [WIN]\n"
+"Scroll window WIN N lines forwards.  Both WIN and N are optional, N\n"
+"defaults to 1, and WIN defaults to the currently focused window."
 msgstr ""
 
-#: tui/tui-win.c:1456
+#: tui/tui-win.c:1033
 msgid ""
 "Scroll window backward.\n"
-"Usage: - [WIN] [N]"
+"Usage: - [N] [WIN]\n"
+"Scroll window WIN N lines backwards.  Both WIN and N are optional, N\n"
+"defaults to 1, and WIN defaults to the currently focused window."
 msgstr ""
 
-#: tui/tui-win.c:1459
+#: tui/tui-win.c:1038
 msgid ""
 "Scroll window text to the left.\n"
-"Usage: < [WIN] [N]"
+"Usage: < [N] [WIN]\n"
+"Scroll window WIN N characters left.  Both WIN and N are optional, N\n"
+"defaults to 1, and WIN defaults to the currently focused window."
 msgstr ""
 
-#: tui/tui-win.c:1462
+#: tui/tui-win.c:1043
 msgid ""
 "Scroll window text to the right.\n"
-"Usage: > [WIN] [N]"
+"Usage: > [N] [WIN]\n"
+"Scroll window WIN N characters right.  Both WIN and N are optional, N\n"
+"defaults to 1, and WIN defaults to the currently focused window."
 msgstr ""
 
-#: tui/tui-win.c:1468
+#: tui/tui-win.c:1051
 msgid "Set the kind of border for TUI windows."
 msgstr ""
 
-#: tui/tui-win.c:1469
+#: tui/tui-win.c:1052
 msgid "Show the kind of border for TUI windows."
 msgstr ""
 
-#: tui/tui-win.c:1470
+#: tui/tui-win.c:1053
 msgid ""
 "This variable controls the border of TUI windows:\n"
 "   space           use a white space\n"
@@ -32377,15 +32353,15 @@ msgid ""
 "   acs             use the Alternate Character Set"
 msgstr ""
 
-#: tui/tui-win.c:1480
+#: tui/tui-win.c:1063
 msgid "Set the attribute mode to use for the TUI window borders."
 msgstr ""
 
-#: tui/tui-win.c:1481
+#: tui/tui-win.c:1064
 msgid "Show the attribute mode to use for the TUI window borders."
 msgstr ""
 
-#: tui/tui-win.c:1482
+#: tui/tui-win.c:1065
 msgid ""
 "This variable controls the attributes to use for the window borders:\n"
 "   normal          normal display\n"
@@ -32397,15 +32373,15 @@ msgid ""
 "   bold-standout   use extra bright or bold with standout mode"
 msgstr ""
 
-#: tui/tui-win.c:1496
+#: tui/tui-win.c:1079
 msgid "Set the attribute mode to use for the active TUI window border."
 msgstr ""
 
-#: tui/tui-win.c:1497
+#: tui/tui-win.c:1080
 msgid "Show the attribute mode to use for the active TUI window border."
 msgstr ""
 
-#: tui/tui-win.c:1498
+#: tui/tui-win.c:1081
 msgid ""
 "This variable controls the attributes to use for the active window border:\n"
 "   normal          normal display\n"
@@ -32417,96 +32393,124 @@ msgid ""
 "   bold-standout   use extra bright or bold with standout mode"
 msgstr ""
 
-#: tui/tui-win.c:1512
+#: tui/tui-win.c:1095
 msgid "Set the tab width, in characters, for the TUI."
 msgstr ""
 
-#: tui/tui-win.c:1513
+#: tui/tui-win.c:1096
 msgid "Show the tab witdh, in characters, for the TUI."
 msgstr ""
 
-#: tui/tui-win.c:1514
+#: tui/tui-win.c:1097
 msgid ""
 "This variable controls how many spaces are used to display a tab character."
 msgstr ""
 
-#: tui/tui-win.c:1520
+#: tui/tui-win.c:1103
 msgid "Set TUI resize messaging."
 msgstr ""
 
-#: tui/tui-win.c:1521
+#: tui/tui-win.c:1104
 msgid "Show TUI resize messaging."
 msgstr ""
 
-#: tui/tui-win.c:1522
+#: tui/tui-win.c:1105
 msgid "When enabled GDB will print a message when the terminal is resized."
 msgstr ""
 
-#: tui/tui-win.c:1530
+#: tui/tui-win.c:1113
 msgid "Set whether the TUI source window is compact."
 msgstr ""
 
-#: tui/tui-win.c:1531
+#: tui/tui-win.c:1114
 msgid "Show whether the TUI source window is compact."
 msgstr ""
 
-#: tui/tui-win.c:1532
+#: tui/tui-win.c:1115
 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."
+#: tui/tui.c:379
+#, possible-c-format
+msgid "Cannot enable the TUI when the interpreter is '%s'"
+msgstr ""
+
+#: tui/tui.c:384
+msgid "Cannot enable the TUI when output is not a terminal"
+msgstr ""
+
+#: tui/tui.c:395
+#, possible-c-format
+msgid "Cannot enable the TUI: error opening terminal [TERM=%s]"
+msgstr ""
+
+#: tui/tui.c:417
+#, possible-c-format
+msgid ""
+"Cannot enable the TUI: terminal doesn't support cursor addressing [TERM=%s]"
+msgstr ""
+
+#: tui/tui.c:574
+msgid ""
+"Enable TUI display mode.\n"
+"Usage: tui enable"
 msgstr ""
 
-#: typeprint.c:420
+#: tui/tui.c:578
+msgid ""
+"Disable TUI display mode.\n"
+"Usage: tui disable"
+msgstr ""
+
+#: typeprint.c:411
 msgid "<unknown return type>"
 msgstr ""
 
-#: typeprint.c:428
+#: typeprint.c:419
 #, possible-c-format
 msgid "'%s' has unknown type; cast it to its declared type"
 msgstr ""
 
-#: typeprint.c:488
+#: typeprint.c:479
 #, possible-c-format
 msgid "unrecognized flag '%c'"
 msgstr ""
 
-#: typeprint.c:494
+#: typeprint.c:485
 msgid "flag expected"
 msgstr ""
 
-#: typeprint.c:496
+#: typeprint.c:487
 msgid "expected space after format"
 msgstr ""
 
-#: typeprint.c:673
+#: typeprint.c:664
 msgid "internal error: unhandled type in print_type_scalar"
 msgstr ""
 
-#: typeprint.c:745
+#: typeprint.c:722
 #, possible-c-format
 msgid "Printing of methods defined in a class in %s\n"
 msgstr ""
 
-#: typeprint.c:762
+#: typeprint.c:739
 #, possible-c-format
 msgid "Printing of typedefs defined in a class in %s\n"
 msgstr ""
 
-#: typeprint.c:791
+#: typeprint.c:768
 msgid "Will not print nested types defined in a class\n"
 msgstr ""
 
-#: typeprint.c:796
+#: typeprint.c:773
 #, possible-c-format
 msgid "Will print %s nested types defined in a class\n"
 msgstr ""
 
-#: typeprint.c:806
+#: typeprint.c:784
 msgid ""
 "Print definition of type TYPE.\n"
 "Usage: ptype[/FLAGS] TYPE | EXPRESSION\n"
@@ -32525,51 +32529,51 @@ msgid ""
 "  /o    print offsets and sizes of fields in a struct (like pahole)"
 msgstr ""
 
-#: typeprint.c:825
+#: typeprint.c:803
 msgid ""
 "Print data type of expression EXP.\n"
 "Only one level of typedefs is unrolled.  See also \"ptype\"."
 msgstr ""
 
-#: typeprint.c:830
+#: typeprint.c:808
 msgid "Generic command for showing type-printing settings."
 msgstr ""
 
-#: typeprint.c:833
+#: typeprint.c:812
 msgid "Generic command for setting how types print."
 msgstr ""
 
-#: typeprint.c:837
+#: typeprint.c:817
 msgid "Set printing of methods defined in classes."
 msgstr ""
 
-#: typeprint.c:838
+#: typeprint.c:818
 msgid "Show printing of methods defined in classes."
 msgstr ""
 
-#: typeprint.c:844
+#: typeprint.c:824
 msgid "Set printing of typedefs defined in classes."
 msgstr ""
 
-#: typeprint.c:845
+#: typeprint.c:825
 msgid "Show printing of typedefs defined in classes."
 msgstr ""
 
-#: typeprint.c:853
+#: typeprint.c:833
 msgid ""
 "Set the number of recursive nested type definitions to print (\"unlimited\" "
 "or -1 to show all)."
 msgstr ""
 
-#: typeprint.c:855
+#: typeprint.c:835
 msgid "Show the number of recursive nested type definitions to print."
 msgstr ""
 
-#: typeprint.c:867
+#: typeprint.c:847
 msgid "<not allocated>"
 msgstr ""
 
-#: typeprint.c:875
+#: typeprint.c:855
 msgid "<not associated>"
 msgstr ""
 
@@ -32641,19 +32645,15 @@ msgstr ""
 msgid "ui-out internal error in handling headers."
 msgstr ""
 
-#: unittests/environ-selftests.c:273
-msgid "Could not set environment variable for testing."
-msgstr ""
-
-#: unittests/vec-utils-selftests.c:53
-msgid "detected self move assign"
-msgstr ""
-
 #: unittests/copy_bitwise-selftests.c:87
 #, possible-c-format
 msgid "copy_bitwise %s != %s (%u+%u -> %u)"
 msgstr ""
 
+#: unittests/environ-selftests.c:273
+msgid "Could not set environment variable for testing."
+msgstr ""
+
 #: unittests/lookup_name_info-selftests.c:44
 #, possible-c-format
 msgid ""
@@ -32661,21 +32661,25 @@ msgid ""
 "\"%s\", expected \"%s\""
 msgstr ""
 
-#: user-regs.c:243
+#: unittests/vec-utils-selftests.c:53
+msgid "detected self move assign"
+msgstr ""
+
+#: user-regs.c:239
 msgid "List the names of the current user registers."
 msgstr ""
 
-#: utils.c:114
+#: utils.c:115
 #, possible-c-format
 msgid "Printing of 8-bit characters in strings as \\nnn is %s.\n"
 msgstr ""
 
-#: utils.c:128
+#: utils.c:129
 #, possible-c-format
 msgid "State of pagination is %s.\n"
 msgstr ""
 
-#: utils.c:243
+#: utils.c:244
 #, possible-c-format
 msgid ""
 "%s\n"
@@ -32683,20 +32687,20 @@ msgid ""
 "time.\n"
 msgstr ""
 
-#: utils.c:372
+#: utils.c:373
 #, possible-c-format
 msgid ""
 "%s\n"
 "Quit this debugging session? "
 msgstr ""
 
-#: utils.c:382
+#: utils.c:383
 msgid ""
 "\n"
 "This is a bug, please report it."
 msgstr ""
 
-#: utils.c:384
+#: utils.c:385
 #, possible-c-format
 msgid ""
 "  For instructions, see:\n"
@@ -32706,69 +32710,69 @@ msgstr ""
 #. Default (yes/batch case) is to dump core.  This leaves a GDB
 #. `dropping' so that it is easier to see that something went
 #. wrong in GDB.
-#: utils.c:399
+#: utils.c:400
 #, possible-c-format
 msgid ""
 "%s\n"
 "Create a core file of GDB? "
 msgstr ""
 
-#: utils.c:512
+#: utils.c:501
 #, possible-c-format
 msgid "Configure what GDB does when %s is detected."
 msgstr ""
 
-#: utils.c:515
+#: utils.c:504
 #, possible-c-format
 msgid "Show what GDB does when %s is detected."
 msgstr ""
 
-#: utils.c:534
+#: utils.c:521
 #, possible-c-format
 msgid "Set whether GDB should quit when an %s is detected."
 msgstr ""
 
-#: utils.c:537
+#: utils.c:524
 #, possible-c-format
 msgid "Show whether GDB will quit when an %s is detected."
 msgstr ""
 
-#: utils.c:557
+#: utils.c:544
 #, possible-c-format
 msgid "Set whether GDB should create a core file of GDB when %s is detected."
 msgstr ""
 
-#: utils.c:560
+#: utils.c:547
 #, possible-c-format
 msgid "Show whether GDB will create a core file of GDB when %s is detected."
 msgstr ""
 
-#: utils.c:685
+#: utils.c:672
 #, possible-c-format
 msgid "virtual memory exhausted: can't allocate %ld bytes."
 msgstr ""
 
-#: utils.c:690
+#: utils.c:677
 msgid "virtual memory exhausted."
 msgstr ""
 
-#: utils.c:834
+#: utils.c:830
 #, possible-c-format
 msgid "(%s or %s) [answered %c; input not from terminal]\n"
 msgstr ""
 
-#: utils.c:850
+#: utils.c:846
 #, possible-c-format
 msgid "%s%s(%s or %s) %s"
 msgstr ""
 
 #. Invalid entries are not defaulted and require another selection.
-#: utils.c:898
+#: utils.c:894
 #, possible-c-format
 msgid "Please answer %s or %s.\n"
 msgstr ""
 
-#: utils.c:1074
+#: utils.c:1070
 #, possible-c-format
 msgid ""
 "The escape sequence `\\%c' is equivalent to plain `%c', which has no "
@@ -32776,101 +32780,101 @@ msgid ""
 "in the `%s' character set."
 msgstr ""
 
-#: utils.c:1185
+#: utils.c:1181
 #, possible-c-format
 msgid "Number of lines gdb thinks are in a page is %s.\n"
 msgstr ""
 
-#: utils.c:1196
+#: utils.c:1192
 #, possible-c-format
 msgid "Number of characters gdb thinks are in a line is %s.\n"
 msgstr ""
 
-#: utils.c:2834
+#: utils.c:2836
 #, possible-c-format
 msgid "Timestamping debugging messages is %s.\n"
 msgstr ""
 
-#: utils.c:2938
+#: utils.c:2940
 #, possible-c-format
 msgid "invalid hex \"%s\""
 msgstr ""
 
-#: utils.c:2951
+#: utils.c:2953
 #, possible-c-format
 msgid "invalid decimal \"%s\""
 msgstr ""
 
-#: utils.c:3095
+#: utils.c:3119
 msgid "process-id to attach"
 msgstr ""
 
-#: utils.c:3101
+#: utils.c:3125
 #, possible-c-format
 msgid "Illegal process-id: %s."
 msgstr ""
 
-#: utils.c:3439
+#: utils.c:3464
 msgid "Set number of characters where GDB should wrap lines of its output."
 msgstr ""
 
-#: utils.c:3440
+#: utils.c:3465
 msgid "Show number of characters where GDB should wrap lines of its output."
 msgstr ""
 
-#: utils.c:3441
+#: utils.c:3466
 msgid ""
 "This affects where GDB wraps its output to fit the screen width.\n"
 "Setting this to \"unlimited\" or zero prevents GDB from wrapping its output."
 msgstr ""
 
-#: utils.c:3448
+#: utils.c:3473
 msgid "Set number of lines in a page for GDB output pagination."
 msgstr ""
 
-#: utils.c:3449
+#: utils.c:3474
 msgid "Show number of lines in a page for GDB output pagination."
 msgstr ""
 
-#: utils.c:3450
+#: utils.c:3475
 msgid ""
 "This affects the number of lines after which GDB will pause\n"
 "its output and ask you whether to continue.\n"
 "Setting this to \"unlimited\" or zero causes GDB never pause during output."
 msgstr ""
 
-#: utils.c:3459
+#: utils.c:3484
 msgid "Set state of GDB output pagination."
 msgstr ""
 
-#: utils.c:3460
+#: utils.c:3485
 msgid "Show state of GDB output pagination."
 msgstr ""
 
-#: utils.c:3461
+#: utils.c:3486
 msgid ""
 "When pagination is ON, GDB pauses at end of each screenful of\n"
 "its output and asks you whether to continue.\n"
 "Turning pagination off is an alternative to \"set height unlimited\"."
 msgstr ""
 
-#: utils.c:3470
+#: utils.c:3495
 msgid "Set printing of 8-bit characters in strings as \\nnn."
 msgstr ""
 
-#: utils.c:3471
+#: utils.c:3496
 msgid "Show printing of 8-bit characters in strings as \\nnn."
 msgstr ""
 
-#: utils.c:3478
+#: utils.c:3503
 msgid "Set timestamping of debugging messages."
 msgstr ""
 
-#: utils.c:3479
+#: utils.c:3504
 msgid "Show timestamping of debugging messages."
 msgstr ""
 
-#: utils.c:3480
+#: utils.c:3505
 msgid ""
 "When set, debugging messages will be marked with seconds and microseconds."
 msgstr ""
@@ -32898,142 +32902,142 @@ msgstr ""
 msgid "Type size unknown, assuming 1. Try casting to a known type, or void *."
 msgstr ""
 
-#: valarith.c:166
+#: valarith.c:174
 msgid "array or string index out of range"
 msgstr ""
 
-#: valarith.c:178
+#: valarith.c:186
 msgid "not an array or string"
 msgstr ""
 
-#: valarith.c:211
+#: valarith.c:220
 msgid "no such vector element (vector not associated)"
 msgstr ""
 
-#: valarith.c:213
+#: valarith.c:222
 msgid "no such vector element (vector not allocated)"
 msgstr ""
 
-#: valarith.c:215
+#: valarith.c:224
 msgid "no such vector element"
 msgstr ""
 
-#: valarith.c:320
+#: valarith.c:329
 #, possible-c-format
 msgid "Could not find %s."
 msgstr ""
 
-#: valarith.c:368
+#: valarith.c:377
 msgid "Can't do that binary op on that type"
 msgstr ""
 
-#: valarith.c:455 valarith.c:481
+#: valarith.c:464 valarith.c:490
 msgid "Invalid binary operation specified."
 msgstr ""
 
-#: valarith.c:521 valarith.c:635
+#: valarith.c:530 valarith.c:644
 #, possible-c-format
 msgid "member function %s not found"
 msgstr ""
 
-#: valarith.c:544
+#: valarith.c:553
 msgid "Can't do that unary op on that type"
 msgstr ""
 
-#: valarith.c:595
+#: valarith.c:604
 msgid "Invalid unary operation specified."
 msgstr ""
 
-#: valarith.c:730
+#: valarith.c:739
 msgid "unimplemented support for boolean repeats"
 msgstr ""
 
-#: valarith.c:734
+#: valarith.c:743
 msgid "can't repeat values of that type"
 msgstr ""
 
-#: valarith.c:744
+#: valarith.c:753
 msgid "Strings can only be concatenated with other strings."
 msgstr ""
 
-#: valarith.c:777
+#: valarith.c:786
 msgid "Booleans can only be concatenated with other bitstrings or booleans."
 msgstr ""
 
-#: valarith.c:780
+#: valarith.c:789
 msgid "unimplemented support for boolean concatenation."
 msgstr ""
 
 #. We don't know how to concatenate these operands.
-#: valarith.c:785
+#: valarith.c:794
 msgid "illegal operands for concatenation."
 msgstr ""
 
-#: valarith.c:799 valarith.c:830
+#: valarith.c:808 valarith.c:839
 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:872
+#: valarith.c:881
 msgid "Mixing decimal floating types with other floating types is not allowed."
 msgstr ""
 
-#: valarith.c:891 valarith.c:910
+#: valarith.c:900 valarith.c:919
 #, possible-c-format
 msgid "Don't know how to convert from %s to %s."
 msgstr ""
 
-#: valarith.c:994
-msgid "Invalid operation on booleans."
+#: valarith.c:1068 valarith.c:1290 valarith.c:1419
+msgid "Invalid binary operation on numbers."
 msgstr ""
 
-#: valarith.c:1054 valarith.c:1065 valarith.c:1179 valarith.c:1190
-msgid "Division by zero"
+#: valarith.c:1148
+msgid "Invalid operation on booleans."
 msgstr ""
 
-#: valarith.c:1144 valarith.c:1273
-msgid "Invalid binary operation on numbers."
+#: valarith.c:1200 valarith.c:1211 valarith.c:1325 valarith.c:1336
+msgid "Division by zero"
 msgstr ""
 
-#: valarith.c:1319
+#: valarith.c:1465
 msgid "conversion of scalar to vector involves truncation"
 msgstr ""
 
-#: valarith.c:1350
+#: valarith.c:1496
 msgid "Vector operations are only supported among vectors"
 msgstr ""
 
-#: valarith.c:1543
+#: valarith.c:1689
 msgid "Invalid type combination in equality test."
 msgstr ""
 
-#: valarith.c:1616
+#: valarith.c:1762
 msgid "Invalid type combination in ordering comparison."
 msgstr ""
 
-#: valarith.c:1635
+#: valarith.c:1782
 msgid "Argument to positive operation not a number."
 msgstr ""
 
-#: valarith.c:1667
+#: valarith.c:1823
 msgid "Argument to negate operation not a number."
 msgstr ""
 
-#: valarith.c:1700
+#: valarith.c:1866
 msgid "Argument to complement operation not an integer, boolean."
 msgstr ""
 
-#: valarith.c:1741
+#: valarith.c:1907
 msgid "Second argument of 'IN' has wrong type"
 msgstr ""
 
-#: valarith.c:1746
+#: valarith.c:1912
 msgid "First argument of 'IN' has wrong type"
 msgstr ""
 
-#: valarith.c:1750
+#: valarith.c:1916
 msgid "First argument of 'IN' not in range"
 msgstr ""
 
@@ -33169,74 +33173,69 @@ msgstr ""
 msgid "Can't take address of \"%s\" which isn't an lvalue."
 msgstr ""
 
-#: valops.c:1606
+#: valops.c:1610
 #, possible-c-format
 msgid "bad array bounds (%d, %d)"
 msgstr ""
 
-#: valops.c:1614
+#: valops.c:1618
 msgid "array elements must all be the same size"
 msgstr ""
 
-#: valops.c:1702
+#: valops.c:1706
 msgid "typecmp: no argument list"
 msgstr ""
 
-#: valops.c:1780
+#: valops.c:1784
 #, possible-c-format
 msgid "base class '%s' is ambiguous in type '%s'"
 msgstr ""
 
-#: valops.c:1911 valops.c:2052
+#: valops.c:1915 valops.c:2056
 msgid "virtual baseclass botch"
 msgstr ""
 
-#: valops.c:1997
+#: valops.c:2001
 #, possible-c-format
 msgid "cannot resolve overloaded method `%s': no arguments supplied"
 msgstr ""
 
-#: valops.c:2133 valops.c:2219
+#: valops.c:2137 valops.c:2223
 #, possible-c-format
 msgid "Attempt to extract a component of a value that is not a %s."
 msgstr ""
 
-#: valops.c:2156
+#: valops.c:2160
 #, possible-c-format
 msgid "Cannot take address of method %s."
 msgstr ""
 
-#: valops.c:2160
+#: valops.c:2164
 #, possible-c-format
 msgid "There is no member or method named %s."
 msgstr ""
 
-#: valops.c:2172
+#: valops.c:2176
 #, possible-c-format
 msgid ""
 "One of the arguments you tried to pass to %s could not be converted to what "
 "the function wants."
 msgstr ""
 
-#: valops.c:2189
+#: valops.c:2193
 #, possible-c-format
 msgid "Structure has no component named %s."
 msgstr ""
 
-#: valops.c:2230
+#: valops.c:2234
 msgid "No field with matching bitpos and type."
 msgstr ""
 
-#: valops.c:2275
-#, possible-c-format
-msgid "Could not find variant corresponding to discriminant %s"
-msgstr ""
-
-#: valops.c:2417
+#: valops.c:2377
 msgid "Attempt to extract a component of a value that is not a struct or union"
 msgstr ""
 
-#: valops.c:2547
+#: valops.c:2507
 #, possible-c-format
 msgid "Couldn't find method %s%s%s"
 msgstr ""
@@ -33245,335 +33244,335 @@ msgstr ""
 #. FIXME: GDB does not support the general ambiguous case.
 #. All candidates should be collected and presented the
 #. user.
-#: valops.c:2714
+#: valops.c:2674
 msgid "Ambiguous overload resolution"
 msgstr ""
 
 #. Incomparable top contenders.
 #. This is an error incompatible candidates
 #. should not have been proposed.
-#: valops.c:2719
+#: valops.c:2679
 msgid "Internal error: incompatible overload candidates proposed"
 msgstr ""
 
-#: valops.c:2731
+#: valops.c:2691
 msgid "Internal error: unexpected overload comparison result"
 msgstr ""
 
-#: valops.c:2747
+#: valops.c:2707
 #, possible-c-format
 msgid "Cannot resolve method %s%s%s to any overloaded instance"
 msgstr ""
 
-#: valops.c:2752
+#: valops.c:2712
 #, possible-c-format
 msgid "Cannot resolve function %s to any overloaded instance"
 msgstr ""
 
-#: valops.c:2758
+#: valops.c:2718
 #, possible-c-format
 msgid ""
 "Using non-standard conversion to match method %s%s%s to supplied arguments"
 msgstr ""
 
-#: valops.c:2764
+#: valops.c:2724
 #, possible-c-format
 msgid ""
 "Using non-standard conversion to match function %s to supplied arguments"
 msgstr ""
 
-#: valops.c:3148
+#: valops.c:3107
 msgid "name of destructor must equal name of class"
 msgstr ""
 
-#: valops.c:3187
+#: valops.c:3146
 #, possible-c-format
 msgid "no constant named \"%s\" in enum \"%s\""
 msgstr ""
 
-#: valops.c:3218
+#: valops.c:3177
 msgid "non-aggregate type in value_aggregate_elt"
 msgstr ""
 
-#: valops.c:3337
+#: valops.c:3296
 msgid "Internal error: non-aggregate type to value_struct_elt_for_reference"
 msgstr ""
 
-#: valops.c:3445
+#: valops.c:3404
 msgid "no member function matches that type instantiation"
 msgstr ""
 
-#: valops.c:3471
+#: valops.c:3430
 #, possible-c-format
 msgid "non-unique member `%s' requires type instantiation"
 msgstr ""
 
-#: valops.c:3478
+#: valops.c:3437
 msgid "no matching member function"
 msgstr ""
 
-#: valops.c:3509
+#: valops.c:3468
 #, possible-c-format
 msgid "Cannot reference virtual member function \"%s\""
 msgstr ""
 
-#: valops.c:3663
+#: valops.c:3622
 msgid "Unexpected value type."
 msgstr ""
 
-#: valops.c:3729
+#: valops.c:3688
 #, possible-c-format
 msgid ""
-"Couldn't retrieve complete object of RTTI type %s; object may be in register"
-"(s)."
+"Couldn't retrieve complete object of RTTI type %s; object may be in "
+"register(s)."
 msgstr ""
 
-#: valops.c:3761
+#: valops.c:3720
 msgid "no `this' in current language"
 msgstr ""
 
-#: valops.c:3769
+#: valops.c:3728
 #, possible-c-format
 msgid "current stack frame does not contain a variable named `%s'"
 msgstr ""
 
-#: valops.c:3812
+#: valops.c:3771
 msgid "array not allocated"
 msgstr ""
 
-#: valops.c:3814
+#: valops.c:3773
 msgid "array not associated"
 msgstr ""
 
-#: valops.c:3818
+#: valops.c:3777
 msgid "slice from bad array or bitstring"
 msgstr ""
 
-#: valops.c:3822
+#: valops.c:3781
 msgid "slice out of range"
 msgstr ""
 
-#: valops.c:3909
+#: valops.c:3889
 msgid "cannot cast non-number to complex"
 msgstr ""
 
-#: valops.c:3916
+#: valops.c:3897
 msgid "Set overload resolution in evaluating C++ functions."
 msgstr ""
 
-#: valops.c:3917
+#: valops.c:3898
 msgid "Show overload resolution in evaluating C++ functions."
 msgstr ""
 
-#: valprint.c:152
+#: valprint.c:154
 #, possible-c-format
 msgid "Limit on string chars or array elements to print is %s.\n"
 msgstr ""
 
-#: valprint.c:166
+#: valprint.c:168
 #, possible-c-format
 msgid "Default input radix for entering numbers is %s.\n"
 msgstr ""
 
-#: valprint.c:176
+#: valprint.c:178
 #, possible-c-format
 msgid "Default output radix for printing of values is %s.\n"
 msgstr ""
 
-#: valprint.c:187
+#: valprint.c:189
 #, possible-c-format
 msgid "Printing of array indexes is %s.\n"
 msgstr ""
 
-#: valprint.c:198
+#: valprint.c:200
 #, possible-c-format
 msgid "Threshold for repeated print elements is %s.\n"
 msgstr ""
 
-#: valprint.c:209
+#: valprint.c:211
 #, possible-c-format
 msgid "Printing of char arrays to stop at first null char is %s.\n"
 msgstr ""
 
-#: valprint.c:220
+#: valprint.c:222
 #, possible-c-format
 msgid "Pretty formatting of structures is %s.\n"
 msgstr ""
 
-#: valprint.c:229
+#: valprint.c:231
 #, possible-c-format
 msgid "Pretty formatting of arrays is %s.\n"
 msgstr ""
 
-#: valprint.c:240
+#: valprint.c:242
 #, possible-c-format
 msgid "Printing of unions interior to structures is %s.\n"
 msgstr ""
 
-#: valprint.c:250
+#: valprint.c:252
 #, possible-c-format
 msgid "Printing of addresses is %s.\n"
 msgstr ""
 
-#: valprint.c:258
+#: valprint.c:260
 #, possible-c-format
 msgid "Printing of symbols when printing pointers is %s.\n"
 msgstr ""
 
-#: valprint.c:374
+#: valprint.c:376
 msgid "<optimized out>"
 msgstr ""
 
-#: valprint.c:380
+#: valprint.c:382
 msgid "<not saved>"
 msgstr ""
 
-#: valprint.c:392
+#: valprint.c:394
 msgid "<invalid address>"
 msgstr ""
 
-#: valprint.c:1005
+#: valprint.c:921
 #, possible-c-format
 msgid "Unhandled type code %d in symbol table."
 msgstr ""
 
-#: valprint.c:1122
+#: valprint.c:1019
 msgid "<address of value unknown>"
 msgstr ""
 
-#: valprint.c:1147
+#: valprint.c:1044
 #, possible-c-format
 msgid "<internal function %s>"
 msgstr ""
 
-#: valprint.c:1389
+#: valprint.c:1286
 msgid "Value out of range."
 msgstr ""
 
-#: valprint.c:1577 valprint.c:1627
+#: valprint.c:1474 valprint.c:1524
 msgid "Internal error in octal conversion;"
 msgstr ""
 
-#: valprint.c:2640
+#: valprint.c:2506
 #, possible-c-format
 msgid " <repeats %u times>"
 msgstr ""
 
-#: valprint.c:2900
+#: valprint.c:2766
 #, possible-c-format
 msgid "<error: %ps>"
 msgstr ""
 
-#: valprint.c:2914
+#: valprint.c:2780
 #, possible-c-format
 msgid "Maximum print depth is %s.\n"
 msgstr ""
 
-#: valprint.c:2947
+#: valprint.c:2813
 #, possible-c-format
 msgid "Nonsense input radix ``decimal %u''; input radix unchanged."
 msgstr ""
 
-#: valprint.c:2953
+#: valprint.c:2819
 #, possible-c-format
 msgid "Input radix now set to decimal %u, hex %x, octal %o.\n"
 msgstr ""
 
-#: valprint.c:2989
+#: valprint.c:2855
 #, possible-c-format
 msgid "Unsupported output radix ``decimal %u''; output radix unchanged."
 msgstr ""
 
-#: valprint.c:2996
+#: valprint.c:2862
 #, possible-c-format
 msgid "Output radix now set to decimal %u, hex %x, octal %o.\n"
 msgstr ""
 
-#: valprint.c:3020
+#: valprint.c:2886
 #, possible-c-format
 msgid "Input and output radices now set to decimal %u, hex %x, octal %o.\n"
 msgstr ""
 
-#: valprint.c:3035
+#: valprint.c:2901
 #, possible-c-format
 msgid "Input and output radices set to decimal %u, hex %x, octal %o.\n"
 msgstr ""
 
-#: valprint.c:3041
+#: valprint.c:2907
 #, possible-c-format
 msgid "Input radix set to decimal %u, hex %x, octal %o.\n"
 msgstr ""
 
-#: valprint.c:3044
+#: valprint.c:2910
 #, possible-c-format
 msgid "Output radix set to decimal %u, hex %x, octal %o.\n"
 msgstr ""
 
-#: valprint.c:3085
+#: valprint.c:2923
 #, possible-c-format
 msgid "Printing of C++ virtual function tables is %s.\n"
 msgstr ""
 
-#: valprint.c:3097
+#: valprint.c:2935
 #, possible-c-format
 msgid "Printing of object's derived type based on vtable info is %s.\n"
 msgstr ""
 
-#: valprint.c:3108
+#: valprint.c:2946
 #, possible-c-format
 msgid "Printing of C++ static members is %s.\n"
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3131
+#: valprint.c:2969
 msgid "Set printing of addresses."
 msgstr ""
 
-#: valprint.c:3132
+#: valprint.c:2970
 msgid "Show printing of addresses."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3140
+#: valprint.c:2978
 msgid "Set pretty formatting of arrays."
 msgstr ""
 
-#: valprint.c:3141
+#: valprint.c:2979
 msgid "Show pretty formatting of arrays."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3149
+#: valprint.c:2987
 msgid "Set printing of array indexes."
 msgstr ""
 
-#: valprint.c:3150
+#: valprint.c:2988
 msgid "Show printing of array indexes."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3158
+#: valprint.c:2996
 msgid "Set limit on string chars or array elements to print."
 msgstr ""
 
-#: valprint.c:3159
+#: valprint.c:2997
 msgid "Show limit on string chars or array elements to print."
 msgstr ""
 
-#: valprint.c:3160
+#: valprint.c:2998
 msgid "\"unlimited\" causes there to be no limit."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3167
+#: valprint.c:3005
 msgid "Set maximum print depth for nested structures, unions and arrays."
 msgstr ""
 
-#: valprint.c:3168
+#: valprint.c:3006
 msgid "Show maximum print depth for nested structures, unions, and arrays."
 msgstr ""
 
-#: valprint.c:3169
+#: valprint.c:3007
 msgid ""
 "When structures, unions, or arrays are nested beyond this depth then they\n"
 "will be replaced with either '{...}' or '(...)' depending on the language.\n"
@@ -33581,116 +33580,116 @@ msgid ""
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3178
+#: valprint.c:3016
 msgid "Set printing of char arrays to stop at first null char."
 msgstr ""
 
-#: valprint.c:3179
+#: valprint.c:3017
 msgid "Show printing of char arrays to stop at first null char."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3187 valprint.c:3251
+#: valprint.c:3025 valprint.c:3089
 msgid "Set printing of C++ virtual function tables."
 msgstr ""
 
-#: valprint.c:3188 valprint.c:3252
+#: valprint.c:3026 valprint.c:3090
 msgid "Show printing of C++ virtual function tables."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3196
+#: valprint.c:3034
 msgid "Set pretty formatting of structures."
 msgstr ""
 
-#: valprint.c:3197
+#: valprint.c:3035
 msgid "Show pretty formatting of structures."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3205
+#: valprint.c:3043
 msgid "Set whether to print values in raw form."
 msgstr ""
 
-#: valprint.c:3206
+#: valprint.c:3044
 msgid "Show whether to print values in raw form."
 msgstr ""
 
-#: valprint.c:3207
+#: valprint.c:3045
 msgid ""
 "If set, values are printed in raw form, bypassing any\n"
 "pretty-printers for that value."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3215
+#: valprint.c:3053
 msgid "Set threshold for repeated print elements."
 msgstr ""
 
-#: valprint.c:3216
+#: valprint.c:3054
 msgid "Show threshold for repeated print elements."
 msgstr ""
 
-#: valprint.c:3217
+#: valprint.c:3055
 msgid "\"unlimited\" causes all elements to be individually printed."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3224
+#: valprint.c:3062
 msgid "Set printing of C++ static members."
 msgstr ""
 
-#: valprint.c:3225
+#: valprint.c:3063
 msgid "Show printing of C++ static members."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3233
+#: valprint.c:3071
 msgid "Set printing of symbol names when printing pointers."
 msgstr ""
 
-#: valprint.c:3234
+#: valprint.c:3072
 msgid "Show printing of symbol names when printing pointers."
 msgstr ""
 
 #. show_cmd_cb
-#: valprint.c:3242
+#: valprint.c:3080
 msgid "Set printing of unions interior to structures."
 msgstr ""
 
-#: valprint.c:3243
+#: valprint.c:3081
 msgid "Show printing of unions interior to structures."
 msgstr ""
 
-#: valprint.c:3271
+#: valprint.c:3110
 msgid "Generic command for setting how things print."
 msgstr ""
 
-#: valprint.c:3278
+#: valprint.c:3117
 msgid "Generic command for showing print settings."
 msgstr ""
 
-#: valprint.c:3284
+#: valprint.c:3123
 msgid "Generic command for setting what things to print in \"raw\" mode."
 msgstr ""
 
-#: valprint.c:3291
+#: valprint.c:3130
 msgid "Generic command for showing \"print raw\" settings."
 msgstr ""
 
-#: valprint.c:3301
+#: valprint.c:3140
 msgid "Set default input radix for entering numbers."
 msgstr ""
 
-#: valprint.c:3302
+#: valprint.c:3141
 msgid "Show default input radix for entering numbers."
 msgstr ""
 
-#: valprint.c:3309
+#: valprint.c:3148
 msgid "Set default output radix for printing of values."
 msgstr ""
 
-#: valprint.c:3310
+#: valprint.c:3149
 msgid "Show default output radix for printing of values."
 msgstr ""
 
@@ -33701,14 +33700,14 @@ msgstr ""
 #. add_show_from_set() commands aren't really appropriate.
 #. FIXME: i18n: With the new add_setshow_integer command, that is no
 #. longer true - show can display anything.
-#: valprint.c:3323
+#: valprint.c:3162
 msgid ""
 "Set default input and output number radices.\n"
 "Use 'set input-radix' or 'set output-radix' to independently set each.\n"
 "Without an argument, sets both radices back to the default value of 10."
 msgstr ""
 
-#: valprint.c:3328
+#: valprint.c:3167
 msgid ""
 "Show the default input and output number radices.\n"
 "Use 'show input-radix' or 'show output-radix' to independently show each."
@@ -33730,54 +33729,54 @@ msgstr ""
 
 #: value.c:1005
 #, possible-c-format
-msgid "value of type `%s' requires %u bytes, which is more than max-value-size"
+msgid "value of type `%s' requires %s bytes, which is more than max-value-size"
 msgstr ""
 
 #: value.c:1008
 #, possible-c-format
-msgid "value requires %u bytes, which is more than max-value-size"
+msgid "value requires %s bytes, which is more than max-value-size"
 msgstr ""
 
 #: value.c:1218
 msgid "register has not been saved in frame"
 msgstr ""
 
-#: value.c:1818
+#: value.c:1829
 msgid "The history is empty."
 msgstr ""
 
-#: value.c:1820
+#: value.c:1831
 msgid "There is only one value in the history."
 msgstr ""
 
-#: value.c:1822
+#: value.c:1833
 #, possible-c-format
 msgid "History does not go back to $$%d."
 msgstr ""
 
-#: value.c:1825
+#: value.c:1836
 #, possible-c-format
 msgid "History has not yet reached $%d."
 msgstr ""
 
-#: value.c:1971
+#: value.c:1982
 msgid "Init-if-undefined requires an assignment expression."
 msgstr ""
 
-#: value.c:1976
+#: value.c:1987
 msgid "The first parameter to init-if-undefined should be a GDB variable."
 msgstr ""
 
-#: value.c:2149
+#: value.c:2160
 msgid "bad kind"
 msgstr ""
 
 #. We can never get a component of any other kind.
-#: value.c:2243
+#: value.c:2254
 msgid "set_internalvar_component"
 msgstr ""
 
-#: value.c:2254
+#: value.c:2265
 #, possible-c-format
 msgid "Cannot overwrite convenience function %s"
 msgstr ""
@@ -33786,67 +33785,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:2565
+#: value.c:2576
 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:2789
+#: value.c:2800
 msgid "Value can't be converted to integer."
 msgstr ""
 
-#: value.c:2822
+#: value.c:2833
 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:3301
+#: value.c:3298
 #, possible-c-format
 msgid "Value does not fit in %s bits."
 msgstr ""
 
-#: value.c:3360
+#: value.c:3357
 #, possible-c-format
 msgid "Unexpected type (%d) encountered for integer constant."
 msgstr ""
 
-#: value.c:3402
+#: value.c:3399
 #, possible-c-format
 msgid "Unexpected type (%d) encountered for unsigned integer constant."
 msgstr ""
 
-#: value.c:3702
+#: value.c:3711
 msgid "Function return type unknown."
 msgstr ""
 
-#: value.c:3833
+#: value.c:3842
 msgid "infinite loop while fetching a register"
 msgstr ""
 
-#: value.c:3928
+#: value.c:3937
 msgid "Unexpected lazy value type."
 msgstr ""
 
-#: value.c:3943
+#: value.c:3952
 msgid "You must provide one argument for $_isvoid."
 msgstr ""
 
-#: value.c:3959
+#: value.c:3968
 msgid "You must provide one argument for $_creal."
 msgstr ""
 
-#: value.c:3964 value.c:3983
+#: value.c:3973 value.c:3992
 msgid "expected a complex number"
 msgstr ""
 
-#: value.c:3978
+#: value.c:3987
 msgid "You must provide one argument for $_cimag."
 msgstr ""
 
-#: value.c:4133
+#: value.c:4142
 msgid ""
 "Debugger convenience (\"$foo\") variables and functions.\n"
 "Convenience variables are created when you assign them values;\n"
@@ -33859,11 +33858,11 @@ msgid ""
 "Convenience functions are defined via the Python API."
 msgstr ""
 
-#: value.c:4148
+#: value.c:4157
 msgid "Elements of value history around item number IDX (or last ten)."
 msgstr ""
 
-#: value.c:4152
+#: value.c:4161
 msgid ""
 "Initialize a convenience variable if necessary.\n"
 "init-if-undefined VARIABLE = EXPRESSION\n"
@@ -33872,18 +33871,18 @@ msgid ""
 "VARIABLE is already initialized."
 msgstr ""
 
-#: value.c:4159
+#: value.c:4168
 msgid "Placeholder command for showing help on convenience functions."
 msgstr ""
 
-#: value.c:4163
+#: value.c:4172
 msgid ""
 "Check whether an expression is void.\n"
 "Usage: $_isvoid (expression)\n"
 "Return 1 if the expression is void, zero otherwise."
 msgstr ""
 
-#: value.c:4169
+#: value.c:4178
 msgid ""
 "Extract the real part of a complex number.\n"
 "Usage: $_creal (expression)\n"
@@ -33891,7 +33890,7 @@ msgid ""
 "type of a complex number."
 msgstr ""
 
-#: value.c:4176
+#: value.c:4185
 msgid ""
 "Extract the imaginary part of a complex number.\n"
 "Usage: $_cimag (expression)\n"
@@ -33899,15 +33898,15 @@ msgid ""
 "type of a complex number."
 msgstr ""
 
-#: value.c:4184
+#: value.c:4193
 msgid "Set maximum sized value gdb will load from the inferior."
 msgstr ""
 
-#: value.c:4185
+#: value.c:4194
 msgid "Show maximum sized value gdb will load from the inferior."
 msgstr ""
 
-#: value.c:4186
+#: value.c:4195
 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"
@@ -33955,30 +33954,26 @@ msgstr ""
 msgid "Assertion failed: Could not find varobj \"%s\" in root list"
 msgstr ""
 
-#: varobj.c:2530
+#: varobj.c:2531
 msgid "Set varobj debugging."
 msgstr ""
 
-#: varobj.c:2531
+#: varobj.c:2532
 msgid "Show varobj debugging."
 msgstr ""
 
-#: varobj.c:2532
+#: varobj.c:2533
 msgid "When non-zero, varobj debugging is enabled."
 msgstr ""
 
-#: windows-nat.c:408
-#, possible-c-format
-msgid "SuspendThread (tid=0x%x) failed. (winerr %u)"
-msgstr ""
-
-#: windows-nat.c:527
+#: windows-nat.c:537
 #, possible-c-format
 msgid "[%s exited with code %u]\n"
 msgstr ""
 
-#: windows-nat.c:758
-msgid "dll path too long"
+#: windows-nat.c:828
+#, possible-c-format
+msgid "dll path for \"%s\" too long or inaccessible"
 msgstr ""
 
 #. We did not find any DLL that was previously loaded at this address,
@@ -33988,95 +33983,95 @@ msgstr ""
 #. 4 mysterious UNLOAD_DLL_DEBUG_EVENTs during the startup phase (these
 #. events are apparently caused by the WOW layer, the interface between
 #. 32bit and 64bit worlds).
-#: windows-nat.c:919
+#: windows-nat.c:930
 #, possible-c-format
 msgid "dll starting at %s not found."
 msgstr ""
 
-#: windows-nat.c:954
+#: windows-nat.c:972
 msgid "signal-event requires an argument (integer event id)"
 msgstr ""
 
-#: windows-nat.c:960
+#: windows-nat.c:978
 #, possible-c-format
 msgid "Failed to convert `%s' to event id"
 msgstr ""
 
-#: windows-nat.c:1369
+#: windows-nat.c:1352
 #, possible-c-format
 msgid ""
 "Failed to resume program execution (ContinueDebugEvent failed, error %u)"
 msgstr ""
 
-#: windows-nat.c:1388
+#: windows-nat.c:1371
 #, possible-c-format
 msgid "OpenProcess call failed, GetLastError = %u"
 msgstr ""
 
-#: windows-nat.c:1510
+#: windows-nat.c:1523
 msgid "Could not interrupt program.  Press Ctrl-c in the program console."
 msgstr ""
 
-#: windows-nat.c:1615
+#: windows-nat.c:1639
 #, possible-c-format
 msgid "During startup program exited with code 0x%x."
 msgstr ""
 
-#: windows-nat.c:1986
+#: windows-nat.c:2145
 #, possible-c-format
 msgid "Can't attach to process %u (error %u)"
 msgstr ""
 
-#: windows-nat.c:2017
+#: windows-nat.c:2187
 #, possible-c-format
 msgid "Can't detach process %u (error %u)"
 msgstr ""
 
-#: windows-nat.c:2074 windows-nat.c:2084
+#: windows-nat.c:2256 windows-nat.c:2266
 #, possible-c-format
 msgid "Error getting executable filename: %u."
 msgstr ""
 
-#: windows-nat.c:2078
+#: windows-nat.c:2260
 #, possible-c-format
 msgid "Error converting executable filename to POSIX: %d."
 msgstr ""
 
-#: windows-nat.c:2551
+#: windows-nat.c:2733
 msgid "No executable specified, use `target exec'."
 msgstr ""
 
-#: windows-nat.c:2579 windows-nat.c:2584
+#: windows-nat.c:2761 windows-nat.c:2766
 #, possible-c-format
 msgid "Error starting executable: %d"
 msgstr ""
 
-#: windows-nat.c:2595
+#: windows-nat.c:2777
 #, possible-c-format
 msgid "Error starting executable via shell: %d"
 msgstr ""
 
-#: windows-nat.c:2614
+#: windows-nat.c:2796
 #, possible-c-format
 msgid "Error converting inferior cwd: %d"
 msgstr ""
 
-#: windows-nat.c:2713
+#: windows-nat.c:2895
 #, possible-c-format
 msgid "Error in redirection: %s."
 msgstr ""
 
-#: windows-nat.c:2730
+#: windows-nat.c:2912
 #, possible-c-format
 msgid "Warning: Failed to open TTY %s, error %#x."
 msgstr ""
 
-#: windows-nat.c:2814
+#: windows-nat.c:2996
 #, possible-c-format
 msgid "Error creating process %s, (error %u)."
 msgstr ""
 
-#: windows-nat.c:3053
+#: windows-nat.c:3292
 msgid ""
 "Signal a crashed process with event ID, to allow its debugging.\n"
 "This command is needed in support of setting up GDB as JIT debugger on MS-"
@@ -34085,163 +34080,181 @@ msgid ""
 "process will be supplied by the Windows JIT debugging mechanism."
 msgstr ""
 
-#: windows-nat.c:3061
+#: windows-nat.c:3300
 msgid "Set use of shell to start subprocess."
 msgstr ""
 
-#: windows-nat.c:3062
+#: windows-nat.c:3301
 msgid "Show use of shell to start subprocess."
 msgstr ""
 
-#: windows-nat.c:3069
+#: windows-nat.c:3308
 msgid "Break when an exception is detected in the Cygwin DLL itself."
 msgstr ""
 
-#: windows-nat.c:3070
+#: windows-nat.c:3309
 msgid "Show whether gdb breaks on exceptions in the Cygwin DLL itself."
 msgstr ""
 
-#: windows-nat.c:3077
+#: windows-nat.c:3316
 msgid "Set creation of new console when creating child process."
 msgstr ""
 
-#: windows-nat.c:3078
+#: windows-nat.c:3317
 msgid "Show creation of new console when creating child process."
 msgstr ""
 
-#: windows-nat.c:3084
+#: windows-nat.c:3323
 msgid "Set creation of new group when creating child process."
 msgstr ""
 
-#: windows-nat.c:3085
+#: windows-nat.c:3324
 msgid "Show creation of new group when creating child process."
 msgstr ""
 
-#: windows-nat.c:3091
+#: windows-nat.c:3330
 msgid "Set whether to display execution in child process."
 msgstr ""
 
-#: windows-nat.c:3092
+#: windows-nat.c:3331
 msgid "Show whether to display execution in child process."
 msgstr ""
 
-#: windows-nat.c:3098
+#: windows-nat.c:3337
 msgid "Set whether to display kernel events in child process."
 msgstr ""
 
-#: windows-nat.c:3099
+#: windows-nat.c:3338
 msgid "Show whether to display kernel events in child process."
 msgstr ""
 
-#: windows-nat.c:3105
+#: windows-nat.c:3344
 msgid "Set whether to display memory accesses in child process."
 msgstr ""
 
-#: windows-nat.c:3106
+#: windows-nat.c:3345
 msgid "Show whether to display memory accesses in child process."
 msgstr ""
 
-#: windows-nat.c:3113
+#: windows-nat.c:3352
 msgid "Set whether to display kernel exceptions in child process."
 msgstr ""
 
-#: windows-nat.c:3114
+#: windows-nat.c:3353
 msgid "Show whether to display kernel exceptions in child process."
 msgstr ""
 
-#: windows-nat.c:3123
+#: windows-nat.c:3362
 msgid "Display selectors infos."
 msgstr ""
 
-#: windows-nat.c:3137
+#: windows-nat.c:3376
 #, possible-c-format
 msgid "Invalid register %d in cygwin_set_dr.\n"
 msgstr ""
 
-#: windows-nat.c:3221
+#: windows-nat.c:3459
 #, possible-c-format
 msgid "obsolete '%s' found. Rename to '%s'."
 msgstr ""
 
 #. This will probably fail on Windows 9x/Me.  Let the user know
 #. that we're missing some functionality.
-#: windows-nat.c:3346
+#: windows-nat.c:3594
 msgid ""
 "cannot automatically find executable file or library to read symbols.\n"
 "Use \"file\" or \"dll\" command to load executable/libraries directly."
 msgstr ""
 
-#: windows-tdep.c:255
+#: windows-tdep.c:407
 msgid "Unable to read tlb"
 msgstr ""
 
-#: windows-tdep.c:265
+#: windows-tdep.c:417
 msgid "Impossible to change the Thread Local Base"
 msgstr ""
 
-#: windows-tdep.c:329
+#: windows-tdep.c:481
 #, possible-c-format
 msgid "Unable to get thread local base for %s\n"
 msgstr ""
 
-#: windows-tdep.c:337
+#: windows-tdep.c:489
 #, possible-c-format
 msgid "Unable to read thread information block for %s at address %s\n"
 msgstr ""
 
-#: windows-tdep.c:344
+#: windows-tdep.c:496
 #, possible-c-format
 msgid "Thread Information Block %s at %s\n"
 msgstr ""
 
-#: windows-tdep.c:356
+#: windows-tdep.c:508
 #, possible-c-format
 msgid "%s is 0x%s\n"
 msgstr ""
 
-#: windows-tdep.c:358
+#: windows-tdep.c:510
 #, possible-c-format
 msgid "TIB[0x%s] is 0x%s\n"
 msgstr ""
 
-#: windows-tdep.c:441
+#: windows-tdep.c:601
 #, possible-c-format
 msgid "Show all non-zero elements of Thread Information Block is %s.\n"
 msgstr ""
 
-#: windows-tdep.c:458
+#: windows-tdep.c:614
 msgid "Print information specific to Win32 debugging."
 msgstr ""
 
-#: windows-tdep.c:497
+#: windows-tdep.c:1016
+msgid "%s: import table's virtual address (0x%"
+msgstr ""
+
+#: windows-tdep.c:1031
+#, possible-c-format
+msgid "%s: failed to get contents of .idata section."
+msgstr ""
+
+#: windows-tdep.c:1048
+#, possible-c-format
+msgid "%s: unexpected end of .idata section."
+msgstr ""
+
+#: windows-tdep.c:1066
+msgid "%s: name's virtual address (0x%"
+msgstr ""
+
+#: windows-tdep.c:1100
 msgid "Display thread information block."
 msgstr ""
 
-#: windows-tdep.c:503
+#: windows-tdep.c:1106
 msgid "Set whether to display all non-zero fields of thread information block."
 msgstr ""
 
-#: windows-tdep.c:504
+#: windows-tdep.c:1107
 msgid ""
 "Show whether to display all non-zero fields of thread information block."
 msgstr ""
 
-#: windows-tdep.c:505
+#: windows-tdep.c:1108
 msgid ""
 "Use \"on\" to enable, \"off\" to disable.\n"
 "If enabled, all non-zero fields of thread information block are displayed,\n"
 "even if their meaning is unknown."
 msgstr ""
 
-#: x86-bsd-nat.c:62
+#: x86-bsd-nat.c:74
 msgid "Couldn't read debug registers"
 msgstr ""
 
-#: x86-bsd-nat.c:74
+#: x86-bsd-nat.c:85
 msgid "Couldn't get debug registers"
 msgstr ""
 
-#: x86-bsd-nat.c:87
+#: x86-bsd-nat.c:98
 msgid "Couldn't write debug registers"
 msgstr ""
 
@@ -34257,6 +34270,10 @@ msgstr ""
 msgid "Can't debug 64-bit process with 32-bit GDB"
 msgstr ""
 
+#: x86-linux-nat.c:241
+msgid "Could not disable branch tracing."
+msgstr ""
+
 #: x86-nat.c:278
 msgid "Set whether to show variables that mirror the x86 debug registers."
 msgstr ""
@@ -34265,11 +34282,11 @@ msgstr ""
 msgid "Show whether to show variables that mirror the x86 debug registers."
 msgstr ""
 
-#: xcoffread.c:185
+#: xcoffread.c:186
 msgid "line numbers off, `.bf' symbol not found"
 msgstr ""
 
-#: xcoffread.c:191
+#: xcoffread.c:192
 #, possible-c-format
 msgid "Mismatched .ef symbol ignored starting at symnum %d"
 msgstr ""
@@ -34279,70 +34296,70 @@ msgstr ""
 #. This can happen with old versions of GCC.
 #. GCC 2.3.3-930426 does not exhibit this on a test case which
 #. a user said produced the message for him.
-#: xcoffread.c:545
+#: xcoffread.c:550
 msgid "Nested C_BINCL symbols"
 msgstr ""
 
-#: xcoffread.c:562
+#: xcoffread.c:567
 msgid "Mismatched C_BINCL/C_EINCL pair"
 msgstr ""
 
-#: xcoffread.c:845
+#: xcoffread.c:850
 msgid "Bad line table offset in C_EINCL directive"
 msgstr ""
 
-#: xcoffread.c:966 xcoffread.c:980
+#: xcoffread.c:971 xcoffread.c:985
 msgid "Unexpected symbol continuation"
 msgstr ""
 
-#: xcoffread.c:1435
+#: xcoffread.c:1437
 #, possible-c-format
 msgid "Unrecognized storage class %d."
 msgstr ""
 
-#: xcoffread.c:1619
+#: xcoffread.c:1612
 #, possible-c-format
 msgid "Unexpected storage class: %d"
 msgstr ""
 
-#: xcoffread.c:1706
+#: xcoffread.c:1698
 msgid "Invalid symbol offset"
 msgstr ""
 
-#: xcoffread.c:1963
+#: xcoffread.c:1911
 #, possible-c-format
 msgid "cannot seek to string table in %s: %s"
 msgstr ""
 
-#: xcoffread.c:1990
+#: xcoffread.c:1938
 #, possible-c-format
 msgid "cannot read string table from %s: %s"
 msgstr ""
 
-#: xcoffread.c:1993
+#: xcoffread.c:1941
 msgid "bad symbol file: string table does not end with null character"
 msgstr ""
 
-#: xcoffread.c:2340
+#: xcoffread.c:2285
 msgid "More than one XMC_TC0 symbol found."
 msgstr ""
 
-#: xcoffread.c:2489
+#: xcoffread.c:2434
 #, possible-c-format
 msgid "Storage class %d not recognized during scan"
 msgstr ""
 
-#: xcoffread.c:2962
+#: xcoffread.c:2903
 #, possible-c-format
 msgid "Error reading .debug section of `%s': %s"
 msgstr ""
 
-#: xcoffread.c:2975
+#: xcoffread.c:2916
 #, possible-c-format
 msgid "Error reading symbols from %s: %s"
 msgstr ""
 
-#: xcoffread.c:2983
+#: xcoffread.c:2924
 msgid "reading symbol table"
 msgstr ""
 
@@ -34462,11 +34479,11 @@ msgstr ""
 msgid "XML debugging is %s.\n"
 msgstr ""
 
-#: xml-support.c:996
+#: xml-support.c:994
 msgid "seek to end of file"
 msgstr ""
 
-#: xml-support.c:1005
+#: xml-support.c:1003
 #, possible-c-format
 msgid "Read error from \"%s\""
 msgstr ""
@@ -34779,15 +34796,15 @@ msgstr ""
 msgid "xtensa_dump_tdep(): not implemented"
 msgstr ""
 
-#: xtensa-tdep.c:3265
+#: xtensa-tdep.c:3266
 msgid "Set Xtensa debugging."
 msgstr ""
 
-#: xtensa-tdep.c:3266
+#: xtensa-tdep.c:3267
 msgid "Show Xtensa debugging."
 msgstr ""
 
-#: xtensa-tdep.c:3266
+#: xtensa-tdep.c:3267
 msgid ""
 "When non-zero, Xtensa-specific debugging is enabled. Can be 1, 2, 3, or 4 "
 "indicating the level of debugging."
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/posix-hdep.c ./gdb/posix-hdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/posix-hdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/posix-hdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Host support routines for MinGW, for GDB, the GNU debugger.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,9 +18,9 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 
-#include "gdb_select.h"
+#include "gdbsupport/gdb_select.h"
 
 /* Wrapper for select.  Nothing special needed on POSIX platforms.  */
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc64-tdep.c ./gdb/ppc64-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc64-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc64-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target-dependent code for ppc64 GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc64-tdep.h ./gdb/ppc64-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc64-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc64-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target-dependent code for ppc64.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-fbsd-nat.c ./gdb/ppc-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-fbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-fbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for PowerPC's running FreeBSD, for GDB.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -201,8 +201,9 @@ ppcfbsd_supply_pcb (struct regcache *reg
   return 1;
 }
 
+void _initialize_ppcfbsd_nat ();
 void
-_initialize_ppcfbsd_nat (void)
+_initialize_ppcfbsd_nat ()
 {
   add_inf_child_target (&the_ppc_fbsd_nat_target);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-fbsd-tdep.c ./gdb/ppc-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-fbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-fbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for PowerPC systems running FreeBSD.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,6 +35,7 @@
 #include "ppc-fbsd-tdep.h"
 #include "fbsd-tdep.h"
 #include "solib-svr4.h"
+#include "inferior.h"
 
 
 /* 32-bit regset descriptions.  */
@@ -289,7 +290,8 @@ ppcfbsd_get_thread_local_address (struct
   struct regcache *regcache;
   int tp_offset, tp_regnum;
 
-  regcache = get_thread_arch_regcache (ptid, gdbarch);
+  regcache = get_thread_arch_regcache (current_inferior ()->process_target (),
+				       ptid, gdbarch);
 
   if (tdep->wordsize == 4)
     {
@@ -359,8 +361,9 @@ ppcfbsd_init_abi (struct gdbarch_info in
 					ppcfbsd_get_thread_local_address);
 }
 
+void _initialize_ppcfbsd_tdep ();
 void
-_initialize_ppcfbsd_tdep (void)
+_initialize_ppcfbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_powerpc, bfd_mach_ppc, GDB_OSABI_FREEBSD,
 			  ppcfbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-fbsd-tdep.h ./gdb/ppc-fbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-fbsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-fbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GDB on PowerPC systems running FreeBSD.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-linux-nat.c ./gdb/ppc-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* PPC GNU/Linux native support.
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,7 +18,6 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
-#include "observable.h"
 #include "frame.h"
 #include "inferior.h"
 #include "gdbthread.h"
@@ -38,6 +37,9 @@
 #include "nat/gdb_ptrace.h"
 #include "nat/linux-ptrace.h"
 #include "inf-ptrace.h"
+#include <algorithm>
+#include <unordered_map>
+#include <list>
 
 /* Prototypes for supply_gregset etc.  */
 #include "gregset.h"
@@ -136,6 +138,10 @@ struct ppc_hw_breakpoint
 #define PPC_DEBUG_FEATURE_DATA_BP_DAWR	0x10
 #endif /* PPC_DEBUG_FEATURE_DATA_BP_DAWR */
 
+/* The version of the PowerPC HWDEBUG kernel interface that we will use, if
+   available.  */
+#define PPC_DEBUG_CURRENT_VERSION 1
+
 /* Similarly for the general-purpose (gp0 -- gp31)
    and floating-point registers (fp0 -- fp31).  */
 #ifndef PTRACE_GETREGS
@@ -270,6 +276,214 @@ int have_ptrace_getsetregs = 1;
    them and gotten an error.  */
 int have_ptrace_getsetfpregs = 1;
 
+/* Private arch info associated with each thread lwp_info object, used
+   for debug register handling.  */
+
+struct arch_lwp_info
+{
+  /* When true, indicates that the debug registers installed in the
+     thread no longer correspond to the watchpoints and breakpoints
+     requested by GDB.  */
+  bool debug_regs_stale;
+
+  /* We need a back-reference to the PTID of the thread so that we can
+     cleanup the debug register state of the thread in
+     low_delete_thread.  */
+  ptid_t lwp_ptid;
+};
+
+/* Class used to detect which set of ptrace requests that
+   ppc_linux_nat_target will use to install and remove hardware
+   breakpoints and watchpoints.
+
+   The interface is only detected once, testing the ptrace calls.  The
+   result can indicate that no interface is available.
+
+   The Linux kernel provides two different sets of ptrace requests to
+   handle hardware watchpoints and breakpoints for Power:
+
+   - PPC_PTRACE_GETHWDBGINFO, PPC_PTRACE_SETHWDEBUG, and
+     PPC_PTRACE_DELHWDEBUG.
+
+   Or
+
+   - PTRACE_SET_DEBUGREG and PTRACE_GET_DEBUGREG
+
+   The first set is the more flexible one and allows setting watchpoints
+   with a variable watched region length and, for BookE processors,
+   multiple types of debug registers (e.g. hardware breakpoints and
+   hardware-assisted conditions for watchpoints).  The second one only
+   allows setting one debug register, a watchpoint, so we only use it if
+   the first one is not available.  */
+
+class ppc_linux_dreg_interface
+{
+public:
+
+  ppc_linux_dreg_interface ()
+    : m_interface (), m_hwdebug_info ()
+  {
+  };
+
+  DISABLE_COPY_AND_ASSIGN (ppc_linux_dreg_interface);
+
+  /* One and only one of these three functions returns true, indicating
+     whether the corresponding interface is the one we detected.  The
+     interface must already have been detected as a precontidion.  */
+
+  bool hwdebug_p ()
+  {
+    gdb_assert (detected_p ());
+    return *m_interface == HWDEBUG;
+  }
+
+  bool debugreg_p ()
+  {
+    gdb_assert (detected_p ());
+    return *m_interface == DEBUGREG;
+  }
+
+  bool unavailable_p ()
+  {
+    gdb_assert (detected_p ());
+    return *m_interface == UNAVAILABLE;
+  }
+
+  /* Returns the debug register capabilities of the target.  Should only
+     be called if the interface is HWDEBUG.  */
+  const struct ppc_debug_info &hwdebug_info ()
+  {
+    gdb_assert (hwdebug_p ());
+
+    return m_hwdebug_info;
+  }
+
+  /* Returns true if the interface has already been detected.  This is
+     useful for cases when we know there is no work to be done if the
+     interface hasn't been detected yet.  */
+  bool detected_p ()
+  {
+    return m_interface.has_value ();
+  }
+
+  /* Detect the available interface, if any, if it hasn't been detected
+     before, using PTID for the necessary ptrace calls.  */
+
+  void detect (const ptid_t &ptid)
+  {
+    if (m_interface.has_value ())
+      return;
+
+    gdb_assert (ptid.lwp_p ());
+
+    bool no_features = false;
+
+    if (ptrace (PPC_PTRACE_GETHWDBGINFO, ptid.lwp (), 0, &m_hwdebug_info)
+	>= 0)
+      {
+	/* If there are no advertised features, we don't use the
+	   HWDEBUG interface and try the DEBUGREG interface instead.
+	   It shouldn't be necessary to do this, however, when the
+	   kernel is configured without CONFIG_HW_BREAKPOINTS (selected
+	   by CONFIG_PERF_EVENTS), there is a bug that causes
+	   watchpoints installed with the HWDEBUG interface not to
+	   trigger.  When this is the case, features will be zero,
+	   which we use as an indicator to fall back to the DEBUGREG
+	   interface.  */
+	if (m_hwdebug_info.features != 0)
+	  {
+	    m_interface.emplace (HWDEBUG);
+	    return;
+	  }
+	else
+	  no_features = true;
+      }
+
+    /* EIO indicates that the request is invalid, so we try DEBUGREG
+       next.  Technically, it can also indicate other failures, but we
+       can't differentiate those.
+
+       Other errors could happen for various reasons.  We could get an
+       ESRCH if the traced thread was killed by a signal.  Trying to
+       detect the interface with another thread in the future would be
+       complicated, as callers would have to handle an "unknown
+       interface" case.  It's also unclear if raising an exception
+       here would be safe.
+
+       Other errors, such as ENODEV, could be more permanent and cause
+       a failure for any thread.
+
+       For simplicity, with all errors other than EIO, we set the
+       interface to UNAVAILABLE and don't try DEBUGREG.  If DEBUGREG
+       fails too, we'll also set the interface to UNAVAILABLE.  It's
+       unlikely that trying the DEBUGREG interface with this same thread
+       would work, for errors other than EIO.  This means that these
+       errors will cause hardware watchpoints and breakpoints to become
+       unavailable throughout a GDB session.  */
+
+    if (no_features || errno == EIO)
+      {
+	unsigned long wp;
+
+	if (ptrace (PTRACE_GET_DEBUGREG, ptid.lwp (), 0, &wp) >= 0)
+	  {
+	    m_interface.emplace (DEBUGREG);
+	    return;
+	  }
+      }
+
+    if (errno != EIO)
+      warning (_("Error when detecting the debug register interface. "
+		 "Debug registers will be unavailable."));
+
+    m_interface.emplace (UNAVAILABLE);
+    return;
+  }
+
+private:
+
+  /* HWDEBUG represents the set of calls PPC_PTRACE_GETHWDBGINFO,
+     PPC_PTRACE_SETHWDEBUG and PPC_PTRACE_DELHWDEBUG.
+
+     DEBUGREG represents the set of calls PTRACE_SET_DEBUGREG and
+     PTRACE_GET_DEBUGREG.
+
+     UNAVAILABLE can indicate that the kernel doesn't support any of the
+     two sets of requests or that there was an error when we tried to
+     detect wich interface is available.  */
+
+  enum debug_reg_interface
+    {
+     UNAVAILABLE,
+     HWDEBUG,
+     DEBUGREG
+    };
+
+  /* The interface option.  Initialized if has_value () returns true.  */
+  gdb::optional<enum debug_reg_interface> m_interface;
+
+  /* The info returned by the kernel with PPC_PTRACE_GETHWDBGINFO.  Only
+     valid if we determined that the interface is HWDEBUG.  */
+  struct ppc_debug_info m_hwdebug_info;
+};
+
+/* Per-process information.  This includes the hardware watchpoints and
+   breakpoints that GDB requested to this target.  */
+
+struct ppc_linux_process_info
+{
+  /* The list of hardware watchpoints and breakpoints that GDB requested
+     for this process.
+
+     Only used when the interface is HWDEBUG.  */
+  std::list<struct ppc_hw_breakpoint> requested_hw_bps;
+
+  /* The watchpoint value that GDB requested for this process.
+
+     Only used when the interface is DEBUGREG.  */
+  gdb::optional<long> requested_wp_val;
+};
+
 struct ppc_linux_nat_target final : public linux_nat_target
 {
   /* Add our register access methods.  */
@@ -299,10 +513,6 @@ struct ppc_linux_nat_target final : publ
   int remove_mask_watchpoint (CORE_ADDR, CORE_ADDR, enum target_hw_bp_type)
     override;
 
-  bool stopped_by_watchpoint () override;
-
-  bool stopped_data_address (CORE_ADDR *) override;
-
   bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, int) override;
 
   bool can_accel_watchpoint_condition (CORE_ADDR, int, int, struct expression *)
@@ -319,7 +529,95 @@ struct ppc_linux_nat_target final : publ
     override;
 
   /* Override linux_nat_target low methods.  */
+  bool low_stopped_by_watchpoint () override;
+
+  bool low_stopped_data_address (CORE_ADDR *) override;
+
   void low_new_thread (struct lwp_info *lp) override;
+
+  void low_delete_thread (arch_lwp_info *) override;
+
+  void low_new_fork (struct lwp_info *, pid_t) override;
+
+  void low_new_clone (struct lwp_info *, pid_t) override;
+
+  void low_forget_process (pid_t pid) override;
+
+  void low_prepare_to_resume (struct lwp_info *) override;
+
+private:
+
+  void copy_thread_dreg_state (const ptid_t &parent_ptid,
+			       const ptid_t &child_ptid);
+
+  void mark_thread_stale (struct lwp_info *lp);
+
+  void mark_debug_registers_changed (pid_t pid);
+
+  void register_hw_breakpoint (pid_t pid,
+			       const struct ppc_hw_breakpoint &bp);
+
+  void clear_hw_breakpoint (pid_t pid,
+			    const struct ppc_hw_breakpoint &a);
+
+  void register_wp (pid_t pid, long wp_value);
+
+  void clear_wp (pid_t pid);
+
+  bool can_use_watchpoint_cond_accel (void);
+
+  void calculate_dvc (CORE_ADDR addr, int len,
+		      CORE_ADDR data_value,
+		      uint32_t *condition_mode,
+		      uint64_t *condition_value);
+
+  int check_condition (CORE_ADDR watch_addr,
+		       struct expression *cond,
+		       CORE_ADDR *data_value, int *len);
+
+  int num_memory_accesses (const std::vector<value_ref_ptr> &chain);
+
+  int get_trigger_type (enum target_hw_bp_type type);
+
+  void create_watchpoint_request (struct ppc_hw_breakpoint *p,
+				  CORE_ADDR addr,
+				  int len,
+				  enum target_hw_bp_type type,
+				  struct expression *cond,
+				  int insert);
+
+  bool hwdebug_point_cmp (const struct ppc_hw_breakpoint &a,
+			  const struct ppc_hw_breakpoint &b);
+
+  void init_arch_lwp_info (struct lwp_info *lp);
+
+  arch_lwp_info *get_arch_lwp_info (struct lwp_info *lp);
+
+  /* The ptrace interface we'll use to install hardware watchpoints and
+     breakpoints (debug registers).  */
+  ppc_linux_dreg_interface m_dreg_interface;
+
+  /* A map from pids to structs containing info specific to each
+     process.  */
+  std::unordered_map<pid_t, ppc_linux_process_info> m_process_info;
+
+  /* Callable object to hash ptids by their lwp number.  */
+  struct ptid_hash
+  {
+    std::size_t operator() (const ptid_t &ptid) const
+    {
+      return std::hash<long>{} (ptid.lwp ());
+    }
+  };
+
+  /* A map from ptid_t objects to a list of pairs of slots and hardware
+     breakpoint objects.  This keeps track of which hardware breakpoints
+     and watchpoints were last installed in each slot of each thread.
+
+     Only used when the interface is HWDEBUG.  */
+  std::unordered_map <ptid_t,
+		      std::list<std::pair<long, ppc_hw_breakpoint>>,
+		      ptid_hash> m_installed_hw_bps;
 };
 
 static ppc_linux_nat_target the_ppc_linux_nat_target;
@@ -1555,101 +1853,214 @@ store_ppc_registers (const struct regcac
      function to fail most of the time, so we ignore them.  */
 }
 
-/* The cached DABR value, to install in new threads.
-   This variable is used when the PowerPC HWDEBUG ptrace
-   interface is not available.  */
-static long saved_dabr_value;
-
-/* Global structure that will store information about the available
-   features provided by the PowerPC HWDEBUG ptrace interface.  */
-static struct ppc_debug_info hwdebug_info;
-
-/* Global variable that holds the maximum number of slots that the
-   kernel will use.  This is only used when PowerPC HWDEBUG ptrace interface
-   is available.  */
-static size_t max_slots_number = 0;
+void
+ppc_linux_nat_target::store_registers (struct regcache *regcache, int regno)
+{
+  pid_t tid = get_ptrace_pid (regcache->ptid ());
+
+  if (regno >= 0)
+    store_register (regcache, tid, regno);
+  else
+    store_ppc_registers (regcache, tid);
+}
+
+/* Functions for transferring registers between a gregset_t or fpregset_t
+   (see sys/ucontext.h) and gdb's regcache.  The word size is that used
+   by the ptrace interface, not the current program's ABI.  Eg. if a
+   powerpc64-linux gdb is being used to debug a powerpc32-linux app, we
+   read or write 64-bit gregsets.  This is to suit the host libthread_db.  */
+
+void
+supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregsetp)
+{
+  const struct regset *regset = ppc_linux_gregset (sizeof (long));
+
+  ppc_supply_gregset (regset, regcache, -1, gregsetp, sizeof (*gregsetp));
+}
 
-struct hw_break_tuple
+void
+fill_gregset (const struct regcache *regcache,
+	      gdb_gregset_t *gregsetp, int regno)
 {
-  long slot;
-  struct ppc_hw_breakpoint *hw_break;
-};
+  const struct regset *regset = ppc_linux_gregset (sizeof (long));
 
-/* This is an internal vector created to store information about *points
-   inserted for each thread.  This is used when PowerPC HWDEBUG ptrace
-   interface is available.  */
-struct thread_points
-  {
-    /* The TID to which this *point relates.  */
-    int tid;
-    /* Information about the *point, such as its address, type, etc.
-
-       Each element inside this vector corresponds to a hardware
-       breakpoint or watchpoint in the thread represented by TID.  The maximum
-       size of these vector is MAX_SLOTS_NUMBER.  If the hw_break element of
-       the tuple is NULL, then the position in the vector is free.  */
-    struct hw_break_tuple *hw_breaks;
-  };
+  if (regno == -1)
+    memset (gregsetp, 0, sizeof (*gregsetp));
+  ppc_collect_gregset (regset, regcache, regno, gregsetp, sizeof (*gregsetp));
+}
 
-static std::vector<thread_points *> ppc_threads;
+void
+supply_fpregset (struct regcache *regcache, const gdb_fpregset_t * fpregsetp)
+{
+  const struct regset *regset = ppc_linux_fpregset ();
 
-/* The version of the PowerPC HWDEBUG kernel interface that we will use, if
-   available.  */
-#define PPC_DEBUG_CURRENT_VERSION 1
+  ppc_supply_fpregset (regset, regcache, -1,
+		       fpregsetp, sizeof (*fpregsetp));
+}
 
-/* Returns non-zero if we support the PowerPC HWDEBUG ptrace interface.  */
-static int
-have_ptrace_hwdebug_interface (void)
+void
+fill_fpregset (const struct regcache *regcache,
+	       gdb_fpregset_t *fpregsetp, int regno)
 {
-  static int have_ptrace_hwdebug_interface = -1;
+  const struct regset *regset = ppc_linux_fpregset ();
+
+  ppc_collect_fpregset (regset, regcache, regno,
+			fpregsetp, sizeof (*fpregsetp));
+}
 
-  if (have_ptrace_hwdebug_interface == -1)
+int
+ppc_linux_nat_target::auxv_parse (gdb_byte **readptr,
+				  gdb_byte *endptr, CORE_ADDR *typep,
+				  CORE_ADDR *valp)
+{
+  int tid = inferior_ptid.lwp ();
+  if (tid == 0)
+    tid = inferior_ptid.pid ();
+
+  int sizeof_auxv_field = ppc_linux_target_wordsize (tid);
+
+  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
+  gdb_byte *ptr = *readptr;
+
+  if (endptr == ptr)
+    return 0;
+
+  if (endptr - ptr < sizeof_auxv_field * 2)
+    return -1;
+
+  *typep = extract_unsigned_integer (ptr, sizeof_auxv_field, byte_order);
+  ptr += sizeof_auxv_field;
+  *valp = extract_unsigned_integer (ptr, sizeof_auxv_field, byte_order);
+  ptr += sizeof_auxv_field;
+
+  *readptr = ptr;
+  return 1;
+}
+
+const struct target_desc *
+ppc_linux_nat_target::read_description ()
+{
+  int tid = inferior_ptid.lwp ();
+  if (tid == 0)
+    tid = inferior_ptid.pid ();
+
+  if (have_ptrace_getsetevrregs)
+    {
+      struct gdb_evrregset_t evrregset;
+
+      if (ptrace (PTRACE_GETEVRREGS, tid, 0, &evrregset) >= 0)
+        return tdesc_powerpc_e500l;
+
+      /* EIO means that the PTRACE_GETEVRREGS request isn't supported.
+	 Anything else needs to be reported.  */
+      else if (errno != EIO)
+	perror_with_name (_("Unable to fetch SPE registers"));
+    }
+
+  struct ppc_linux_features features = ppc_linux_no_features;
+
+  features.wordsize = ppc_linux_target_wordsize (tid);
+
+  CORE_ADDR hwcap = linux_get_hwcap (current_top_target ());
+  CORE_ADDR hwcap2 = linux_get_hwcap2 (current_top_target ());
+
+  if (have_ptrace_getsetvsxregs
+      && (hwcap & PPC_FEATURE_HAS_VSX))
     {
-      int tid;
+      gdb_vsxregset_t vsxregset;
 
-      tid = inferior_ptid.lwp ();
-      if (tid == 0)
-	tid = inferior_ptid.pid ();
+      if (ptrace (PTRACE_GETVSXREGS, tid, 0, &vsxregset) >= 0)
+	features.vsx = true;
+
+      /* EIO means that the PTRACE_GETVSXREGS request isn't supported.
+	 Anything else needs to be reported.  */
+      else if (errno != EIO)
+	perror_with_name (_("Unable to fetch VSX registers"));
+    }
 
-      /* Check for kernel support for PowerPC HWDEBUG ptrace interface.  */
-      if (ptrace (PPC_PTRACE_GETHWDBGINFO, tid, 0, &hwdebug_info) >= 0)
+  if (have_ptrace_getvrregs
+      && (hwcap & PPC_FEATURE_HAS_ALTIVEC))
+    {
+      gdb_vrregset_t vrregset;
+
+      if (ptrace (PTRACE_GETVRREGS, tid, 0, &vrregset) >= 0)
+        features.altivec = true;
+
+      /* EIO means that the PTRACE_GETVRREGS request isn't supported.
+	 Anything else needs to be reported.  */
+      else if (errno != EIO)
+	perror_with_name (_("Unable to fetch AltiVec registers"));
+    }
+
+  features.isa205 = ppc_linux_has_isa205 (hwcap);
+
+  if ((hwcap2 & PPC_FEATURE2_DSCR)
+      && check_regset (tid, NT_PPC_PPR, PPC_LINUX_SIZEOF_PPRREGSET)
+      && check_regset (tid, NT_PPC_DSCR, PPC_LINUX_SIZEOF_DSCRREGSET))
+    {
+      features.ppr_dscr = true;
+      if ((hwcap2 & PPC_FEATURE2_ARCH_2_07)
+	  && (hwcap2 & PPC_FEATURE2_TAR)
+	  && (hwcap2 & PPC_FEATURE2_EBB)
+	  && check_regset (tid, NT_PPC_TAR, PPC_LINUX_SIZEOF_TARREGSET)
+	  && check_regset (tid, NT_PPC_EBB, PPC_LINUX_SIZEOF_EBBREGSET)
+	  && check_regset (tid, NT_PPC_PMU, PPC_LINUX_SIZEOF_PMUREGSET))
 	{
-	  /* Check whether PowerPC HWDEBUG ptrace interface is functional and
-	     provides any supported feature.  */
-	  if (hwdebug_info.features != 0)
-	    {
-	      have_ptrace_hwdebug_interface = 1;
-	      max_slots_number = hwdebug_info.num_instruction_bps
-	        + hwdebug_info.num_data_bps
-	        + hwdebug_info.num_condition_regs;
-	      return have_ptrace_hwdebug_interface;
-	    }
+	  features.isa207 = true;
+	  if ((hwcap2 & PPC_FEATURE2_HTM)
+	      && check_regset (tid, NT_PPC_TM_SPR,
+			       PPC_LINUX_SIZEOF_TM_SPRREGSET))
+	    features.htm = true;
 	}
-      /* Old school interface and no PowerPC HWDEBUG ptrace support.  */
-      have_ptrace_hwdebug_interface = 0;
-      memset (&hwdebug_info, 0, sizeof (struct ppc_debug_info));
     }
 
-  return have_ptrace_hwdebug_interface;
+  return ppc_linux_match_description (features);
 }
 
+/* Routines for installing hardware watchpoints and breakpoints.  When
+   GDB requests a hardware watchpoint or breakpoint to be installed, we
+   register the request for the pid of inferior_ptid in a map with one
+   entry per process.  We then issue a stop request to all the threads of
+   this process, and mark a per-thread flag indicating that their debug
+   registers should be updated.  Right before they are next resumed, we
+   remove all previously installed debug registers and install all the
+   ones GDB requested.  We then update a map with one entry per thread
+   that keeps track of what debug registers were last installed in each
+   thread.
+
+   We use this second map to remove installed registers before installing
+   the ones requested by GDB, and to copy the debug register state after
+   a thread clones or forks, since depending on the kernel configuration,
+   debug registers can be inherited.  */
+
+/* Check if we support and have enough resources to install a hardware
+   watchpoint or breakpoint.  See the description in target.h.  */
+
 int
-ppc_linux_nat_target::can_use_hw_breakpoint (enum bptype type, int cnt, int ot)
+ppc_linux_nat_target::can_use_hw_breakpoint (enum bptype type, int cnt,
+					     int ot)
 {
   int total_hw_wp, total_hw_bp;
 
-  if (have_ptrace_hwdebug_interface ())
+  m_dreg_interface.detect (inferior_ptid);
+
+  if (m_dreg_interface.unavailable_p ())
+    return 0;
+
+  if (m_dreg_interface.hwdebug_p ())
     {
       /* When PowerPC HWDEBUG ptrace interface is available, the number of
 	 available hardware watchpoints and breakpoints is stored at the
 	 hwdebug_info struct.  */
-      total_hw_bp = hwdebug_info.num_instruction_bps;
-      total_hw_wp = hwdebug_info.num_data_bps;
+      total_hw_bp = m_dreg_interface.hwdebug_info ().num_instruction_bps;
+      total_hw_wp = m_dreg_interface.hwdebug_info ().num_data_bps;
     }
   else
     {
-      /* When we do not have PowerPC HWDEBUG ptrace interface, we should
-	 consider having 1 hardware watchpoint and no hardware breakpoints.  */
+      gdb_assert (m_dreg_interface.debugreg_p ());
+
+      /* With the DEBUGREG ptrace interface, we should consider having 1
+	 hardware watchpoint and no hardware breakpoints.  */
       total_hw_bp = 0;
       total_hw_wp = 1;
     }
@@ -1657,39 +2068,28 @@ ppc_linux_nat_target::can_use_hw_breakpo
   if (type == bp_hardware_watchpoint || type == bp_read_watchpoint
       || type == bp_access_watchpoint || type == bp_watchpoint)
     {
-      if (cnt + ot > total_hw_wp)
+      if (total_hw_wp == 0)
+	return 0;
+      else if (cnt + ot > total_hw_wp)
 	return -1;
+      else
+	return 1;
     }
   else if (type == bp_hardware_breakpoint)
     {
       if (total_hw_bp == 0)
-	{
-	  /* No hardware breakpoint support. */
-	  return 0;
-	}
-      if (cnt > total_hw_bp)
-	return -1;
-    }
-
-  if (!have_ptrace_hwdebug_interface ())
-    {
-      int tid;
-      ptid_t ptid = inferior_ptid;
-
-      /* We need to know whether ptrace supports PTRACE_SET_DEBUGREG
-	 and whether the target has DABR.  If either answer is no, the
-	 ptrace call will return -1.  Fail in that case.  */
-      tid = ptid.lwp ();
-      if (tid == 0)
-	tid = ptid.pid ();
-
-      if (ptrace (PTRACE_SET_DEBUGREG, tid, 0, 0) == -1)
 	return 0;
+      else if (cnt > total_hw_bp)
+	return -1;
+      else
+	return 1;
     }
 
-  return 1;
+  return 0;
 }
 
+/* Returns 1 if we can watch LEN bytes at address ADDR, 0 otherwise.  */
+
 int
 ppc_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
 {
@@ -1697,13 +2097,21 @@ ppc_linux_nat_target::region_ok_for_hw_w
   if (len <= 0)
     return 0;
 
+  m_dreg_interface.detect (inferior_ptid);
+
+  if (m_dreg_interface.unavailable_p ())
+    return 0;
+
   /* The PowerPC HWDEBUG ptrace interface tells if there are alignment
      restrictions for watchpoints in the processors.  In that case, we use that
      information to determine the hardcoded watchable region for
      watchpoints.  */
-  if (have_ptrace_hwdebug_interface ())
+  if (m_dreg_interface.hwdebug_p ())
     {
       int region_size;
+      const struct ppc_debug_info &hwdebug_info = (m_dreg_interface
+						   .hwdebug_info ());
+
       /* Embedded DAC-based processors, like the PowerPC 440 have ranged
 	 watchpoints and can watch any access within an arbitrary memory
 	 region. This is useful to watch arrays and structs, for instance.  It
@@ -1730,121 +2138,32 @@ ppc_linux_nat_target::region_ok_for_hw_w
      ptrace interface, DAC-based processors (i.e., embedded processors) will
      use addresses aligned to 4-bytes due to the way the read/write flags are
      passed in the old ptrace interface.  */
-  else if (((linux_get_hwcap (current_top_target ()) & PPC_FEATURE_BOOKE)
-	   && (addr + len) > (addr & ~3) + 4)
-	   || (addr + len) > (addr & ~7) + 8)
-    return 0;
-
-  return 1;
-}
-
-/* This function compares two ppc_hw_breakpoint structs field-by-field.  */
-static int
-hwdebug_point_cmp (struct ppc_hw_breakpoint *a, struct ppc_hw_breakpoint *b)
-{
-  return (a->trigger_type == b->trigger_type
-	  && a->addr_mode == b->addr_mode
-	  && a->condition_mode == b->condition_mode
-	  && a->addr == b->addr
-	  && a->addr2 == b->addr2
-	  && a->condition_value == b->condition_value);
-}
-
-/* This function can be used to retrieve a thread_points by the TID of the
-   related process/thread.  If nothing has been found, and ALLOC_NEW is 0,
-   it returns NULL.  If ALLOC_NEW is non-zero, a new thread_points for the
-   provided TID will be created and returned.  */
-static struct thread_points *
-hwdebug_find_thread_points_by_tid (int tid, int alloc_new)
-{
-  for (thread_points *t : ppc_threads)
+  else
     {
-      if (t->tid == tid)
-	return t;
-    }
-
-  struct thread_points *t = NULL;
+      gdb_assert (m_dreg_interface.debugreg_p ());
 
-  /* Do we need to allocate a new point_item
-     if the wanted one does not exist?  */
-  if (alloc_new)
-    {
-      t = XNEW (struct thread_points);
-      t->hw_breaks = XCNEWVEC (struct hw_break_tuple, max_slots_number);
-      t->tid = tid;
-      ppc_threads.push_back (t);
+      if (((linux_get_hwcap (current_top_target ()) & PPC_FEATURE_BOOKE)
+	   && (addr + len) > (addr & ~3) + 4)
+	  || (addr + len) > (addr & ~7) + 8)
+	return 0;
     }
 
-  return t;
+  return 1;
 }
 
-/* This function is a generic wrapper that is responsible for inserting a
-   *point (i.e., calling `ptrace' in order to issue the request to the
-   kernel) and registering it internally in GDB.  */
-static void
-hwdebug_insert_point (struct ppc_hw_breakpoint *b, int tid)
-{
-  int i;
-  long slot;
-  gdb::unique_xmalloc_ptr<ppc_hw_breakpoint> p (XDUP (ppc_hw_breakpoint, b));
-  struct hw_break_tuple *hw_breaks;
-  struct thread_points *t;
-
-  errno = 0;
-  slot = ptrace (PPC_PTRACE_SETHWDEBUG, tid, 0, p.get ());
-  if (slot < 0)
-    perror_with_name (_("Unexpected error setting breakpoint or watchpoint"));
-
-  /* Everything went fine, so we have to register this *point.  */
-  t = hwdebug_find_thread_points_by_tid (tid, 1);
-  gdb_assert (t != NULL);
-  hw_breaks = t->hw_breaks;
+/* This function compares two ppc_hw_breakpoint structs
+   field-by-field.  */
 
-  /* Find a free element in the hw_breaks vector.  */
-  for (i = 0; i < max_slots_number; i++)
-    {
-      if (hw_breaks[i].hw_break == NULL)
-	{
-	  hw_breaks[i].slot = slot;
-	  hw_breaks[i].hw_break = p.release ();
-	  break;
-	}
-    }
-
-  gdb_assert (i != max_slots_number);
-}
-
-/* This function is a generic wrapper that is responsible for removing a
-   *point (i.e., calling `ptrace' in order to issue the request to the
-   kernel), and unregistering it internally at GDB.  */
-static void
-hwdebug_remove_point (struct ppc_hw_breakpoint *b, int tid)
+bool
+ppc_linux_nat_target::hwdebug_point_cmp (const struct ppc_hw_breakpoint &a,
+					 const struct ppc_hw_breakpoint &b)
 {
-  int i;
-  struct hw_break_tuple *hw_breaks;
-  struct thread_points *t;
-
-  t = hwdebug_find_thread_points_by_tid (tid, 0);
-  gdb_assert (t != NULL);
-  hw_breaks = t->hw_breaks;
-
-  for (i = 0; i < max_slots_number; i++)
-    if (hw_breaks[i].hw_break && hwdebug_point_cmp (hw_breaks[i].hw_break, b))
-      break;
-
-  gdb_assert (i != max_slots_number);
-
-  /* We have to ignore ENOENT errors because the kernel implements hardware
-     breakpoints/watchpoints as "one-shot", that is, they are automatically
-     deleted when hit.  */
-  errno = 0;
-  if (ptrace (PPC_PTRACE_DELHWDEBUG, tid, 0, hw_breaks[i].slot) < 0)
-    if (errno != ENOENT)
-      perror_with_name (_("Unexpected error deleting "
-			  "breakpoint or watchpoint"));
-
-  xfree (hw_breaks[i].hw_break);
-  hw_breaks[i].hw_break = NULL;
+  return (a.trigger_type == b.trigger_type
+	  && a.addr_mode == b.addr_mode
+	  && a.condition_mode == b.condition_mode
+	  && a.addr == b.addr
+	  && a.addr2 == b.addr2
+	  && a.condition_value == b.condition_value);
 }
 
 /* Return the number of registers needed for a ranged breakpoint.  */
@@ -1852,22 +2171,28 @@ hwdebug_remove_point (struct ppc_hw_brea
 int
 ppc_linux_nat_target::ranged_break_num_registers ()
 {
-  return ((have_ptrace_hwdebug_interface ()
-	   && hwdebug_info.features & PPC_DEBUG_FEATURE_INSN_BP_RANGE)?
+  m_dreg_interface.detect (inferior_ptid);
+
+  return ((m_dreg_interface.hwdebug_p ()
+	   && (m_dreg_interface.hwdebug_info ().features
+	       & PPC_DEBUG_FEATURE_INSN_BP_RANGE))?
 	  2 : -1);
 }
 
-/* Insert the hardware breakpoint described by BP_TGT.  Returns 0 for
-   success, 1 if hardware breakpoints are not supported or -1 for failure.  */
+/* Register the hardware breakpoint described by BP_TGT, to be inserted
+   when the threads of inferior_ptid are resumed.  Returns 0 for success,
+   or -1 if the HWDEBUG interface that we need for hardware breakpoints
+   is not available.  */
 
 int
 ppc_linux_nat_target::insert_hw_breakpoint (struct gdbarch *gdbarch,
 					    struct bp_target_info *bp_tgt)
 {
-  struct lwp_info *lp;
   struct ppc_hw_breakpoint p;
 
-  if (!have_ptrace_hwdebug_interface ())
+  m_dreg_interface.detect (inferior_ptid);
+
+  if (!m_dreg_interface.hwdebug_p ())
     return -1;
 
   p.version = PPC_DEBUG_CURRENT_VERSION;
@@ -1890,20 +2215,25 @@ ppc_linux_nat_target::insert_hw_breakpoi
       p.addr2 = 0;
     }
 
-  ALL_LWPS (lp)
-    hwdebug_insert_point (&p, lp->ptid.lwp ());
+  register_hw_breakpoint (inferior_ptid.pid (), p);
 
   return 0;
 }
 
+/* Clear a registration for the hardware breakpoint given by type BP_TGT.
+   It will be removed from the threads of inferior_ptid when they are
+   next resumed.  Returns 0 for success, or -1 if the HWDEBUG interface
+   that we need for hardware breakpoints is not available.  */
+
 int
 ppc_linux_nat_target::remove_hw_breakpoint (struct gdbarch *gdbarch,
 					    struct bp_target_info *bp_tgt)
 {
-  struct lwp_info *lp;
   struct ppc_hw_breakpoint p;
 
-  if (!have_ptrace_hwdebug_interface ())
+  m_dreg_interface.detect (inferior_ptid);
+
+  if (!m_dreg_interface.hwdebug_p ())
     return -1;
 
   p.version = PPC_DEBUG_CURRENT_VERSION;
@@ -1926,14 +2256,16 @@ ppc_linux_nat_target::remove_hw_breakpoi
       p.addr2 = 0;
     }
 
-  ALL_LWPS (lp)
-    hwdebug_remove_point (&p, lp->ptid.lwp ());
+  clear_hw_breakpoint (inferior_ptid.pid (), p);
 
   return 0;
 }
 
-static int
-get_trigger_type (enum target_hw_bp_type type)
+/* Return the trigger value to set in a ppc_hw_breakpoint object for a
+   given hardware watchpoint TYPE.  We assume type is not hw_execute.  */
+
+int
+ppc_linux_nat_target::get_trigger_type (enum target_hw_bp_type type)
 {
   int t;
 
@@ -1947,19 +2279,18 @@ get_trigger_type (enum target_hw_bp_type
   return t;
 }
 
-/* Insert a new masked watchpoint at ADDR using the mask MASK.
-   RW may be hw_read for a read watchpoint, hw_write for a write watchpoint
-   or hw_access for an access watchpoint.  Returns 0 on success and throws
-   an error on failure.  */
+/* Register a new masked watchpoint at ADDR using the mask MASK, to be
+   inserted when the threads of inferior_ptid are resumed.  RW may be
+   hw_read for a read watchpoint, hw_write for a write watchpoint or
+   hw_access for an access watchpoint.  */
 
 int
 ppc_linux_nat_target::insert_mask_watchpoint (CORE_ADDR addr,  CORE_ADDR mask,
 					      target_hw_bp_type rw)
 {
-  struct lwp_info *lp;
   struct ppc_hw_breakpoint p;
 
-  gdb_assert (have_ptrace_hwdebug_interface ());
+  gdb_assert (m_dreg_interface.hwdebug_p ());
 
   p.version = PPC_DEBUG_CURRENT_VERSION;
   p.trigger_type = get_trigger_type (rw);
@@ -1969,25 +2300,23 @@ ppc_linux_nat_target::insert_mask_watchp
   p.addr2 = mask;
   p.condition_value = 0;
 
-  ALL_LWPS (lp)
-    hwdebug_insert_point (&p, lp->ptid.lwp ());
+  register_hw_breakpoint (inferior_ptid.pid (), p);
 
   return 0;
 }
 
-/* Remove a masked watchpoint at ADDR with the mask MASK.
-   RW may be hw_read for a read watchpoint, hw_write for a write watchpoint
-   or hw_access for an access watchpoint.  Returns 0 on success and throws
-   an error on failure.  */
+/* Clear a registration for a masked watchpoint at ADDR with the mask
+   MASK.  It will be removed from the threads of inferior_ptid when they
+   are next resumed.  RW may be hw_read for a read watchpoint, hw_write
+   for a write watchpoint or hw_access for an access watchpoint.  */
 
 int
 ppc_linux_nat_target::remove_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask,
 					      target_hw_bp_type rw)
 {
-  struct lwp_info *lp;
   struct ppc_hw_breakpoint p;
 
-  gdb_assert (have_ptrace_hwdebug_interface ());
+  gdb_assert (m_dreg_interface.hwdebug_p ());
 
   p.version = PPC_DEBUG_CURRENT_VERSION;
   p.trigger_type = get_trigger_type (rw);
@@ -1997,39 +2326,42 @@ ppc_linux_nat_target::remove_mask_watchp
   p.addr2 = mask;
   p.condition_value = 0;
 
-  ALL_LWPS (lp)
-    hwdebug_remove_point (&p, lp->ptid.lwp ());
+  clear_hw_breakpoint (inferior_ptid.pid (), p);
 
   return 0;
 }
 
-/* Check whether we have at least one free DVC register.  */
-static int
-can_use_watchpoint_cond_accel (void)
+/* Check whether we have at least one free DVC register for the threads
+   of the pid of inferior_ptid.  */
+
+bool
+ppc_linux_nat_target::can_use_watchpoint_cond_accel (void)
 {
-  struct thread_points *p;
-  int tid = inferior_ptid.lwp ();
-  int cnt = hwdebug_info.num_condition_regs, i;
+  m_dreg_interface.detect (inferior_ptid);
 
-  if (!have_ptrace_hwdebug_interface () || cnt == 0)
-    return 0;
+  if (!m_dreg_interface.hwdebug_p ())
+    return false;
 
-  p = hwdebug_find_thread_points_by_tid (tid, 0);
+  int cnt = m_dreg_interface.hwdebug_info ().num_condition_regs;
 
-  if (p)
-    {
-      for (i = 0; i < max_slots_number; i++)
-	if (p->hw_breaks[i].hw_break != NULL
-	    && (p->hw_breaks[i].hw_break->condition_mode
-		!= PPC_BREAKPOINT_CONDITION_NONE))
-	  cnt--;
+  if (cnt == 0)
+    return false;
 
-      /* There are no available slots now.  */
-      if (cnt <= 0)
-	return 0;
-    }
+  auto process_it = m_process_info.find (inferior_ptid.pid ());
 
-  return 1;
+  /* No breakpoints or watchpoints have been requested for this process,
+     we have at least one free DVC register.  */
+  if (process_it == m_process_info.end ())
+    return true;
+
+  for (const ppc_hw_breakpoint &bp : process_it->second.requested_hw_bps)
+    if (bp.condition_mode != PPC_BREAKPOINT_CONDITION_NONE)
+      cnt--;
+
+  if (cnt <= 0)
+    return false;
+
+  return true;
 }
 
 /* Calculate the enable bits and the contents of the Data Value Compare
@@ -2040,10 +2372,16 @@ can_use_watchpoint_cond_accel (void)
    On exit, CONDITION_MODE will hold the enable bits for the DVC, and
    CONDITION_VALUE will hold the value which should be put in the
    DVC register.  */
-static void
-calculate_dvc (CORE_ADDR addr, int len, CORE_ADDR data_value,
-	       uint32_t *condition_mode, uint64_t *condition_value)
+
+void
+ppc_linux_nat_target::calculate_dvc (CORE_ADDR addr, int len,
+				     CORE_ADDR data_value,
+				     uint32_t *condition_mode,
+				     uint64_t *condition_value)
 {
+  const struct ppc_debug_info &hwdebug_info = (m_dreg_interface.
+					       hwdebug_info ());
+
   int i, num_byte_enable, align_offset, num_bytes_off_dvc,
       rightmost_enabled_byte;
   CORE_ADDR addr_end_data, addr_end_dvc;
@@ -2082,8 +2420,10 @@ calculate_dvc (CORE_ADDR addr, int len,
    Returns -1 if there's any register access involved, or if there are
    other kinds of values which are not acceptable in a condition
    expression (e.g., lval_computed or lval_internalvar).  */
-static int
-num_memory_accesses (const std::vector<value_ref_ptr> &chain)
+
+int
+ppc_linux_nat_target::num_memory_accesses (const std::vector<value_ref_ptr>
+					   &chain)
 {
   int found_memory_cnt = 0;
 
@@ -2131,9 +2471,11 @@ num_memory_accesses (const std::vector<v
    If the function returns 1, DATA_VALUE will contain the constant against
    which the watch value should be compared and LEN will contain the size
    of the constant.  */
-static int
-check_condition (CORE_ADDR watch_addr, struct expression *cond,
-		 CORE_ADDR *data_value, int *len)
+
+int
+ppc_linux_nat_target::check_condition (CORE_ADDR watch_addr,
+				       struct expression *cond,
+				       CORE_ADDR *data_value, int *len)
 {
   int pc = 1, num_accesses_left, num_accesses_right;
   struct value *left_val, *right_val;
@@ -2180,18 +2522,21 @@ check_condition (CORE_ADDR watch_addr, s
   return 1;
 }
 
-/* Return non-zero if the target is capable of using hardware to evaluate
-   the condition expression, thus only triggering the watchpoint when it is
+/* Return true if the target is capable of using hardware to evaluate the
+   condition expression, thus only triggering the watchpoint when it is
    true.  */
+
 bool
-ppc_linux_nat_target::can_accel_watchpoint_condition (CORE_ADDR addr, int len,
-						      int rw,
+ppc_linux_nat_target::can_accel_watchpoint_condition (CORE_ADDR addr,
+						      int len, int rw,
 						      struct expression *cond)
 {
   CORE_ADDR data_value;
 
-  return (have_ptrace_hwdebug_interface ()
-	  && hwdebug_info.num_condition_regs > 0
+  m_dreg_interface.detect (inferior_ptid);
+
+  return (m_dreg_interface.hwdebug_p ()
+	  && (m_dreg_interface.hwdebug_info ().num_condition_regs > 0)
 	  && check_condition (addr, cond, &data_value, &len));
 }
 
@@ -2200,11 +2545,16 @@ ppc_linux_nat_target::can_accel_watchpoi
    evaluated by hardware.  INSERT tells if we are creating a request for
    inserting or removing the watchpoint.  */
 
-static void
-create_watchpoint_request (struct ppc_hw_breakpoint *p, CORE_ADDR addr,
-			   int len, enum target_hw_bp_type type,
-			   struct expression *cond, int insert)
+void
+ppc_linux_nat_target::create_watchpoint_request (struct ppc_hw_breakpoint *p,
+						 CORE_ADDR addr, int len,
+						 enum target_hw_bp_type type,
+						 struct expression *cond,
+						 int insert)
 {
+  const struct ppc_debug_info &hwdebug_info = (m_dreg_interface
+					       .hwdebug_info ());
+
   if (len == 1
       || !(hwdebug_info.features & PPC_DEBUG_FEATURE_DATA_BP_RANGE))
     {
@@ -2246,28 +2596,33 @@ create_watchpoint_request (struct ppc_hw
   p->addr = (uint64_t) addr;
 }
 
+/* Register a watchpoint, to be inserted when the threads of the group of
+   inferior_ptid are next resumed.  Returns 0 on success, and -1 if there
+   is no ptrace interface available to install the watchpoint.  */
+
 int
 ppc_linux_nat_target::insert_watchpoint (CORE_ADDR addr, int len,
 					 enum target_hw_bp_type type,
 					 struct expression *cond)
 {
-  struct lwp_info *lp;
-  int ret = -1;
+  m_dreg_interface.detect (inferior_ptid);
+
+  if (m_dreg_interface.unavailable_p ())
+    return -1;
 
-  if (have_ptrace_hwdebug_interface ())
+  if (m_dreg_interface.hwdebug_p ())
     {
       struct ppc_hw_breakpoint p;
 
       create_watchpoint_request (&p, addr, len, type, cond, 1);
 
-      ALL_LWPS (lp)
-	hwdebug_insert_point (&p, lp->ptid.lwp ());
-
-      ret = 0;
+      register_hw_breakpoint (inferior_ptid.pid (), p);
     }
   else
     {
-      long dabr_value;
+      gdb_assert (m_dreg_interface.debugreg_p ());
+
+      long wp_value;
       long read_mode, write_mode;
 
       if (linux_get_hwcap (current_top_target ()) & PPC_FEATURE_BOOKE)
@@ -2285,144 +2640,303 @@ ppc_linux_nat_target::insert_watchpoint
 	  write_mode = 6;
 	}
 
-      dabr_value = addr & ~(read_mode | write_mode);
+      wp_value = addr & ~(read_mode | write_mode);
       switch (type)
 	{
 	  case hw_read:
 	    /* Set read and translate bits.  */
-	    dabr_value |= read_mode;
+	    wp_value |= read_mode;
 	    break;
 	  case hw_write:
 	    /* Set write and translate bits.  */
-	    dabr_value |= write_mode;
+	    wp_value |= write_mode;
 	    break;
 	  case hw_access:
 	    /* Set read, write and translate bits.  */
-	    dabr_value |= read_mode | write_mode;
+	    wp_value |= read_mode | write_mode;
 	    break;
 	}
 
-      saved_dabr_value = dabr_value;
-
-      ALL_LWPS (lp)
-	if (ptrace (PTRACE_SET_DEBUGREG, lp->ptid.lwp (), 0,
-		    saved_dabr_value) < 0)
-	  return -1;
-
-      ret = 0;
+      register_wp (inferior_ptid.pid (), wp_value);
     }
 
-  return ret;
+  return 0;
 }
 
+/* Clear a registration for a hardware watchpoint.  It will be removed
+   from the threads of the group of inferior_ptid when they are next
+   resumed.  */
+
 int
 ppc_linux_nat_target::remove_watchpoint (CORE_ADDR addr, int len,
 					 enum target_hw_bp_type type,
 					 struct expression *cond)
 {
-  struct lwp_info *lp;
-  int ret = -1;
+  gdb_assert (!m_dreg_interface.unavailable_p ());
 
-  if (have_ptrace_hwdebug_interface ())
+  if (m_dreg_interface.hwdebug_p ())
     {
       struct ppc_hw_breakpoint p;
 
       create_watchpoint_request (&p, addr, len, type, cond, 0);
 
-      ALL_LWPS (lp)
-	hwdebug_remove_point (&p, lp->ptid.lwp ());
-
-      ret = 0;
+      clear_hw_breakpoint (inferior_ptid.pid (), p);
     }
   else
     {
-      saved_dabr_value = 0;
-      ALL_LWPS (lp)
-	if (ptrace (PTRACE_SET_DEBUGREG, lp->ptid.lwp (), 0,
-		    saved_dabr_value) < 0)
-	  return -1;
+      gdb_assert (m_dreg_interface.debugreg_p ());
 
-      ret = 0;
+      clear_wp (inferior_ptid.pid ());
     }
 
-  return ret;
+  return 0;
 }
 
+/* Clean up the per-process info associated with PID.  When using the
+   HWDEBUG interface, we also erase the per-thread state of installed
+   debug registers for all the threads that belong to the group of PID.
+
+   Usually the thread state is cleaned up by low_delete_thread.  We also
+   do it here because low_new_thread is not called for the initial LWP,
+   so low_delete_thread won't be able to clean up this state.  */
+
 void
-ppc_linux_nat_target::low_new_thread (struct lwp_info *lp)
+ppc_linux_nat_target::low_forget_process (pid_t pid)
 {
-  int tid = lp->ptid.lwp ();
+  if ((!m_dreg_interface.detected_p ())
+      || (m_dreg_interface.unavailable_p ()))
+    return;
+
+  ptid_t pid_ptid (pid, 0, 0);
 
-  if (have_ptrace_hwdebug_interface ())
+  m_process_info.erase (pid);
+
+  if (m_dreg_interface.hwdebug_p ())
     {
-      int i;
-      struct thread_points *p;
-      struct hw_break_tuple *hw_breaks;
+      for (auto it = m_installed_hw_bps.begin ();
+	   it != m_installed_hw_bps.end ();)
+	{
+	  if (it->first.matches (pid_ptid))
+	    it = m_installed_hw_bps.erase (it);
+	  else
+	    it++;
+	}
+    }
+}
 
-      if (ppc_threads.empty ())
-	return;
+/* Copy the per-process state associated with the pid of PARENT to the
+   sate of CHILD_PID.  GDB expects that a forked process will have the
+   same hardware breakpoints and watchpoints as the parent.
+
+   If we're using the HWDEBUG interface, also copy the thread debug
+   register state for the ptid of PARENT to the state for CHILD_PID.
+
+   Like for clone events, we assume the kernel will copy the debug
+   registers from the parent thread to the child. The
+   low_prepare_to_resume function is made to work even if it doesn't.
+
+   We copy the thread state here and not in low_new_thread since we don't
+   have the pid of the parent in low_new_thread.  Even if we did,
+   low_new_thread might not be called immediately after the fork event is
+   detected.  For instance, with the checkpointing system (see
+   linux-fork.c), the thread won't be added until GDB decides to switch
+   to a new checkpointed process.  At that point, the debug register
+   state of the parent thread is unlikely to correspond to the state it
+   had at the point when it forked.  */
 
-      /* Get a list of breakpoints from any thread.  */
-      p = ppc_threads.back ();
-      hw_breaks = p->hw_breaks;
-
-      /* Copy that thread's breakpoints and watchpoints to the new thread.  */
-      for (i = 0; i < max_slots_number; i++)
-	if (hw_breaks[i].hw_break)
-	  {
-	    /* Older kernels did not make new threads inherit their parent
-	       thread's debug state, so we always clear the slot and replicate
-	       the debug state ourselves, ensuring compatibility with all
-	       kernels.  */
-
-	    /* The ppc debug resource accounting is done through "slots".
-	       Ask the kernel the deallocate this specific *point's slot.  */
-	    ptrace (PPC_PTRACE_DELHWDEBUG, tid, 0, hw_breaks[i].slot);
+void
+ppc_linux_nat_target::low_new_fork (struct lwp_info *parent,
+				    pid_t child_pid)
+{
+  if ((!m_dreg_interface.detected_p ())
+      || (m_dreg_interface.unavailable_p ()))
+    return;
 
-	    hwdebug_insert_point (hw_breaks[i].hw_break, tid);
-	  }
+  auto process_it = m_process_info.find (parent->ptid.pid ());
+
+  if (process_it != m_process_info.end ())
+    m_process_info[child_pid] = m_process_info[parent->ptid.pid ()];
+
+  if (m_dreg_interface.hwdebug_p ())
+    {
+      ptid_t child_ptid (child_pid, child_pid, 0);
+
+      copy_thread_dreg_state (parent->ptid, child_ptid);
     }
-  else
-    ptrace (PTRACE_SET_DEBUGREG, tid, 0, saved_dabr_value);
 }
 
-static void
-ppc_linux_thread_exit (struct thread_info *tp, int silent)
+/* Copy the thread debug register state from the PARENT thread to the the
+   state for CHILD_LWP, if we're using the HWDEBUG interface.  We assume
+   the kernel copies the debug registers from one thread to another after
+   a clone event.  The low_prepare_to_resume function is made to work
+   even if it doesn't.  */
+
+void
+ppc_linux_nat_target::low_new_clone (struct lwp_info *parent,
+				     pid_t child_lwp)
 {
-  int i;
-  int tid = tp->ptid.lwp ();
-  struct hw_break_tuple *hw_breaks;
-  struct thread_points *t = NULL;
+  if ((!m_dreg_interface.detected_p ())
+      || (m_dreg_interface.unavailable_p ()))
+    return;
+
+  if (m_dreg_interface.hwdebug_p ())
+    {
+      ptid_t child_ptid (parent->ptid.pid (), child_lwp, 0);
+
+      copy_thread_dreg_state (parent->ptid, child_ptid);
+    }
+}
+
+/* Initialize the arch-specific thread state for LP so that it contains
+   the ptid for lp, so that we can use it in low_delete_thread.  Mark the
+   new thread LP as stale so that we update its debug registers before
+   resuming it.  This is not called for the initial thread.  */
+
+void
+ppc_linux_nat_target::low_new_thread (struct lwp_info *lp)
+{
+  init_arch_lwp_info (lp);
+
+  mark_thread_stale (lp);
+}
 
-  if (!have_ptrace_hwdebug_interface ())
+/* Delete the per-thread debug register stale flag.  */
+
+void
+ppc_linux_nat_target::low_delete_thread (struct arch_lwp_info
+					 *lp_arch_info)
+{
+  if (lp_arch_info != NULL)
+    {
+      if (m_dreg_interface.detected_p ()
+	  && m_dreg_interface.hwdebug_p ())
+	m_installed_hw_bps.erase (lp_arch_info->lwp_ptid);
+
+      xfree (lp_arch_info);
+    }
+}
+
+/* Install or delete debug registers in thread LP so that it matches what
+   GDB requested before it is resumed.  */
+
+void
+ppc_linux_nat_target::low_prepare_to_resume (struct lwp_info *lp)
+{
+  if ((!m_dreg_interface.detected_p ())
+      || (m_dreg_interface.unavailable_p ()))
     return;
 
-  for (i = 0; i < ppc_threads.size (); i++)
+  /* We have to re-install or clear the debug registers if we set the
+     stale flag.
+
+     In addition, some kernels configurations can disable a hardware
+     watchpoint after it is hit.  Usually, GDB will remove and re-install
+     a hardware watchpoint when the thread stops if "breakpoint
+     always-inserted" is off, or to single-step a watchpoint.  But so
+     that we don't rely on this behavior, if we stop due to a hardware
+     breakpoint or watchpoint, we also refresh our debug registers.  */
+
+  arch_lwp_info *lp_arch_info = get_arch_lwp_info (lp);
+
+  bool stale_dregs = (lp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT
+		      || lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT
+		      || lp_arch_info->debug_regs_stale);
+
+  if (!stale_dregs)
+    return;
+
+  gdb_assert (lp->ptid.lwp_p ());
+
+  auto process_it = m_process_info.find (lp->ptid.pid ());
+
+  if (m_dreg_interface.hwdebug_p ())
     {
-      if (ppc_threads[i]->tid == tid)
+      /* First, delete any hardware watchpoint or breakpoint installed in
+	 the inferior and update the thread state.  */
+      auto installed_it = m_installed_hw_bps.find (lp->ptid);
+
+      if (installed_it != m_installed_hw_bps.end ())
 	{
-	  t = ppc_threads[i];
-	  break;
+	  auto &bp_list = installed_it->second;
+
+	  for (auto bp_it = bp_list.begin (); bp_it != bp_list.end ();)
+	    {
+	      /* We ignore ENOENT to account for various possible kernel
+		 behaviors, e.g. the kernel might or might not copy debug
+		 registers across forks and clones, and we always copy
+		 the debug register state when fork and clone events are
+		 detected.  */
+	      if (ptrace (PPC_PTRACE_DELHWDEBUG, lp->ptid.lwp (), 0,
+			  bp_it->first) < 0)
+		if (errno != ENOENT)
+		  perror_with_name (_("Error deleting hardware "
+				      "breakpoint or watchpoint"));
+
+	      /* We erase the entries one at a time after successfuly
+		 removing the corresponding slot form the thread so that
+		 if we throw an exception above in a future iteration the
+		 map remains consistent.  */
+	      bp_it = bp_list.erase (bp_it);
+	    }
+
+	  gdb_assert (bp_list.empty ());
 	}
-    }
 
-  if (t == NULL)
-    return;
+      /* Now we install all the requested hardware breakpoints and
+	 watchpoints and update the thread state.  */
+
+      if (process_it != m_process_info.end ())
+	{
+	  auto &bp_list = m_installed_hw_bps[lp->ptid];
+
+	  for (ppc_hw_breakpoint bp
+		 : process_it->second.requested_hw_bps)
+	    {
+	      long slot = ptrace (PPC_PTRACE_SETHWDEBUG, lp->ptid.lwp (),
+				  0, &bp);
 
-  unordered_remove (ppc_threads, i);
+	      if (slot < 0)
+		perror_with_name (_("Error setting hardware "
+				    "breakpoint or watchpoint"));
+
+	      /* Keep track of which slots we installed in this
+		 thread.  */
+	      bp_list.emplace (bp_list.begin (), slot, bp);
+	    }
+	}
+    }
+  else
+    {
+      gdb_assert (m_dreg_interface.debugreg_p ());
 
-  hw_breaks = t->hw_breaks;
+      /* Passing 0 to PTRACE_SET_DEBUGREG will clear the watchpoint.  We
+	 always clear the watchpoint instead of just overwriting it, in
+	 case there is a request for a new watchpoint, because on some
+	 older kernel versions and configurations simply overwriting the
+	 watchpoint after it was hit would not re-enable it.  */
+      if (ptrace (PTRACE_SET_DEBUGREG, lp->ptid.lwp (), 0, 0) < 0)
+	perror_with_name (_("Error clearing hardware watchpoint"));
+
+      /* GDB requested a watchpoint to be installed.  */
+      if (process_it != m_process_info.end ()
+	  && process_it->second.requested_wp_val.has_value ())
+	{
+	  long wp = *(process_it->second.requested_wp_val);
 
-  for (i = 0; i < max_slots_number; i++)
-    if (hw_breaks[i].hw_break)
-      xfree (hw_breaks[i].hw_break);
+	  if (ptrace (PTRACE_SET_DEBUGREG, lp->ptid.lwp (), 0, wp) < 0)
+	    perror_with_name (_("Error setting hardware watchpoint"));
+	}
+    }
 
-  xfree (t->hw_breaks);
-  xfree (t);
+  lp_arch_info->debug_regs_stale = false;
 }
 
+/* Return true if INFERIOR_PTID is known to have been stopped by a
+   hardware watchpoint, false otherwise.  If true is returned, write the
+   address that the kernel reported as causing the SIGTRAP in ADDR_P.  */
+
 bool
-ppc_linux_nat_target::stopped_data_address (CORE_ADDR *addr_p)
+ppc_linux_nat_target::low_stopped_data_address (CORE_ADDR *addr_p)
 {
   siginfo_t siginfo;
 
@@ -2433,38 +2947,45 @@ ppc_linux_nat_target::stopped_data_addre
       || (siginfo.si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
     return false;
 
-  if (have_ptrace_hwdebug_interface ())
-    {
-      int i;
-      struct thread_points *t;
-      struct hw_break_tuple *hw_breaks;
-      /* The index (or slot) of the *point is passed in the si_errno field.  */
+  gdb_assert (!m_dreg_interface.unavailable_p ());
+
+  /* Check if this signal corresponds to a hardware breakpoint.  We only
+     need to check this if we're using the HWDEBUG interface, since the
+     DEBUGREG interface only allows setting one hardware watchpoint.  */
+  if (m_dreg_interface.hwdebug_p ())
+    {
+      /* The index (or slot) of the *point is passed in the si_errno
+	 field.  Currently, this is only the case if the kernel was
+	 configured with CONFIG_PPC_ADV_DEBUG_REGS.  If not, we assume
+	 the kernel will set si_errno to a value that doesn't correspond
+	 to any real slot.  */
       int slot = siginfo.si_errno;
 
-      t = hwdebug_find_thread_points_by_tid (inferior_ptid.lwp (), 0);
+      auto installed_it = m_installed_hw_bps.find (inferior_ptid);
 
-      /* Find out if this *point is a hardware breakpoint.
-	 If so, we should return 0.  */
-      if (t)
-	{
-	  hw_breaks = t->hw_breaks;
-	  for (i = 0; i < max_slots_number; i++)
-	   if (hw_breaks[i].hw_break && hw_breaks[i].slot == slot
-	       && hw_breaks[i].hw_break->trigger_type
-		    == PPC_BREAKPOINT_TRIGGER_EXECUTE)
-	     return false;
-	}
+      /* We must have installed slots for the thread if it got a
+	 TRAP_HWBKPT signal.  */
+      gdb_assert (installed_it != m_installed_hw_bps.end ());
+
+      for (const auto & slot_bp_pair : installed_it->second)
+	if (slot_bp_pair.first == slot
+	    && (slot_bp_pair.second.trigger_type
+		== PPC_BREAKPOINT_TRIGGER_EXECUTE))
+	  return false;
     }
 
   *addr_p = (CORE_ADDR) (uintptr_t) siginfo.si_addr;
   return true;
 }
 
+/* Return true if INFERIOR_PTID is known to have been stopped by a
+   hardware watchpoint, false otherwise.  */
+
 bool
-ppc_linux_nat_target::stopped_by_watchpoint ()
+ppc_linux_nat_target::low_stopped_by_watchpoint ()
 {
   CORE_ADDR addr;
-  return stopped_data_address (&addr);
+  return low_stopped_data_address (&addr);
 }
 
 bool
@@ -2472,9 +2993,11 @@ ppc_linux_nat_target::watchpoint_addr_wi
 						    CORE_ADDR start,
 						    int length)
 {
+  gdb_assert (!m_dreg_interface.unavailable_p ());
+
   int mask;
 
-  if (have_ptrace_hwdebug_interface ()
+  if (m_dreg_interface.hwdebug_p ()
       && linux_get_hwcap (current_top_target ()) & PPC_FEATURE_BOOKE)
     return start <= addr && start + length >= addr;
   else if (linux_get_hwcap (current_top_target ()) & PPC_FEATURE_BOOKE)
@@ -2491,10 +3014,14 @@ ppc_linux_nat_target::watchpoint_addr_wi
 /* Return the number of registers needed for a masked hardware watchpoint.  */
 
 int
-ppc_linux_nat_target::masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask)
+ppc_linux_nat_target::masked_watch_num_registers (CORE_ADDR addr,
+						  CORE_ADDR mask)
 {
-  if (!have_ptrace_hwdebug_interface ()
-	   || (hwdebug_info.features & PPC_DEBUG_FEATURE_DATA_BP_MASK) == 0)
+  m_dreg_interface.detect (inferior_ptid);
+
+  if (!m_dreg_interface.hwdebug_p ()
+      || (m_dreg_interface.hwdebug_info ().features
+	  & PPC_DEBUG_FEATURE_DATA_BP_MASK) == 0)
     return -1;
   else if ((mask & 0xC0000000) != 0xC0000000)
     {
@@ -2507,177 +3034,182 @@ ppc_linux_nat_target::masked_watch_num_r
     return 2;
 }
 
+/* Copy the per-thread debug register state, if any, from thread
+   PARENT_PTID to thread CHILD_PTID, if the debug register being used is
+   HWDEBUG.  */
+
 void
-ppc_linux_nat_target::store_registers (struct regcache *regcache, int regno)
+ppc_linux_nat_target::copy_thread_dreg_state (const ptid_t &parent_ptid,
+					      const ptid_t &child_ptid)
 {
-  pid_t tid = get_ptrace_pid (regcache->ptid ());
+  gdb_assert (m_dreg_interface.hwdebug_p ());
 
-  if (regno >= 0)
-    store_register (regcache, tid, regno);
-  else
-    store_ppc_registers (regcache, tid);
+  auto installed_it = m_installed_hw_bps.find (parent_ptid);
+
+  if (installed_it != m_installed_hw_bps.end ())
+    m_installed_hw_bps[child_ptid] = m_installed_hw_bps[parent_ptid];
 }
 
-/* Functions for transferring registers between a gregset_t or fpregset_t
-   (see sys/ucontext.h) and gdb's regcache.  The word size is that used
-   by the ptrace interface, not the current program's ABI.  Eg. if a
-   powerpc64-linux gdb is being used to debug a powerpc32-linux app, we
-   read or write 64-bit gregsets.  This is to suit the host libthread_db.  */
+/* Mark the debug register stale flag for the new thread, if we have
+   already detected which debug register interface we use.  */
 
 void
-supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregsetp)
+ppc_linux_nat_target::mark_thread_stale (struct lwp_info *lp)
 {
-  const struct regset *regset = ppc_linux_gregset (sizeof (long));
-
-  ppc_supply_gregset (regset, regcache, -1, gregsetp, sizeof (*gregsetp));
-}
+  if ((!m_dreg_interface.detected_p ())
+      || (m_dreg_interface.unavailable_p ()))
+    return;
 
-void
-fill_gregset (const struct regcache *regcache,
-	      gdb_gregset_t *gregsetp, int regno)
-{
-  const struct regset *regset = ppc_linux_gregset (sizeof (long));
+  arch_lwp_info *lp_arch_info = get_arch_lwp_info (lp);
 
-  if (regno == -1)
-    memset (gregsetp, 0, sizeof (*gregsetp));
-  ppc_collect_gregset (regset, regcache, regno, gregsetp, sizeof (*gregsetp));
+  lp_arch_info->debug_regs_stale = true;
 }
 
+/* Mark all the threads of the group of PID as stale with respect to
+   debug registers and issue a stop request to each such thread that
+   isn't already stopped.  */
+
 void
-supply_fpregset (struct regcache *regcache, const gdb_fpregset_t * fpregsetp)
+ppc_linux_nat_target::mark_debug_registers_changed (pid_t pid)
 {
-  const struct regset *regset = ppc_linux_fpregset ();
+  /* We do this in two passes to make sure all threads are marked even if
+     we get an exception when stopping one of them.  */
 
-  ppc_supply_fpregset (regset, regcache, -1,
-		       fpregsetp, sizeof (*fpregsetp));
-}
+  iterate_over_lwps (ptid_t (pid),
+		     [this] (struct lwp_info *lp) -> int {
+		       this->mark_thread_stale (lp);
+		       return 0;
+		     });
+
+  iterate_over_lwps (ptid_t (pid),
+		     [] (struct lwp_info *lp) -> int {
+		       if (!lwp_is_stopped (lp))
+			 linux_stop_lwp (lp);
+		       return 0;
+		     });
+}
+
+/* Register a hardware breakpoint or watchpoint BP for the pid PID, then
+   mark the stale flag for all threads of the group of PID, and issue a
+   stop request for them.  The breakpoint or watchpoint will be installed
+   the next time each thread is resumed.  Should only be used if the
+   debug register interface is HWDEBUG.  */
 
 void
-fill_fpregset (const struct regcache *regcache,
-	       gdb_fpregset_t *fpregsetp, int regno)
+ppc_linux_nat_target::register_hw_breakpoint (pid_t pid,
+					      const struct
+					      ppc_hw_breakpoint &bp)
 {
-  const struct regset *regset = ppc_linux_fpregset ();
+  gdb_assert (m_dreg_interface.hwdebug_p ());
 
-  ppc_collect_fpregset (regset, regcache, regno,
-			fpregsetp, sizeof (*fpregsetp));
+  m_process_info[pid].requested_hw_bps.push_back (bp);
+
+  mark_debug_registers_changed (pid);
 }
 
-int
-ppc_linux_nat_target::auxv_parse (gdb_byte **readptr,
-				  gdb_byte *endptr, CORE_ADDR *typep,
-				  CORE_ADDR *valp)
+/* Clear a registration for a hardware breakpoint or watchpoint BP for
+   the pid PID, then mark the stale flag for all threads of the group of
+   PID, and issue a stop request for them.  The breakpoint or watchpoint
+   will be removed the next time each thread is resumed.  Should only be
+   used if the debug register interface is HWDEBUG.  */
+
+void
+ppc_linux_nat_target::clear_hw_breakpoint (pid_t pid,
+					   const struct ppc_hw_breakpoint &bp)
 {
-  int tid = inferior_ptid.lwp ();
-  if (tid == 0)
-    tid = inferior_ptid.pid ();
+  gdb_assert (m_dreg_interface.hwdebug_p ());
 
-  int sizeof_auxv_field = ppc_linux_target_wordsize (tid);
+  auto process_it = m_process_info.find (pid);
 
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  gdb_byte *ptr = *readptr;
+  gdb_assert (process_it != m_process_info.end ());
 
-  if (endptr == ptr)
-    return 0;
+  auto bp_it = std::find_if (process_it->second.requested_hw_bps.begin (),
+			     process_it->second.requested_hw_bps.end (),
+			     [&bp, this]
+			     (const struct ppc_hw_breakpoint &curr)
+			     { return hwdebug_point_cmp (bp, curr); }
+			     );
 
-  if (endptr - ptr < sizeof_auxv_field * 2)
-    return -1;
+  /* If GDB is removing a watchpoint, it must have been inserted.  */
+  gdb_assert (bp_it != process_it->second.requested_hw_bps.end ());
 
-  *typep = extract_unsigned_integer (ptr, sizeof_auxv_field, byte_order);
-  ptr += sizeof_auxv_field;
-  *valp = extract_unsigned_integer (ptr, sizeof_auxv_field, byte_order);
-  ptr += sizeof_auxv_field;
+  process_it->second.requested_hw_bps.erase (bp_it);
 
-  *readptr = ptr;
-  return 1;
+  mark_debug_registers_changed (pid);
 }
 
-const struct target_desc *
-ppc_linux_nat_target::read_description ()
-{
-  int tid = inferior_ptid.lwp ();
-  if (tid == 0)
-    tid = inferior_ptid.pid ();
+/* Register the hardware watchpoint value WP_VALUE for the pid PID,
+   then mark the stale flag for all threads of the group of PID, and
+   issue a stop request for them.  The breakpoint or watchpoint will be
+   installed the next time each thread is resumed.  Should only be used
+   if the debug register interface is DEBUGREG.  */
 
-  if (have_ptrace_getsetevrregs)
-    {
-      struct gdb_evrregset_t evrregset;
+void
+ppc_linux_nat_target::register_wp (pid_t pid, long wp_value)
+{
+  gdb_assert (m_dreg_interface.debugreg_p ());
 
-      if (ptrace (PTRACE_GETEVRREGS, tid, 0, &evrregset) >= 0)
-        return tdesc_powerpc_e500l;
+  /* Our other functions should have told GDB that we only have one
+     hardware watchpoint with this interface.  */
+  gdb_assert (!m_process_info[pid].requested_wp_val.has_value ());
 
-      /* EIO means that the PTRACE_GETEVRREGS request isn't supported.
-	 Anything else needs to be reported.  */
-      else if (errno != EIO)
-	perror_with_name (_("Unable to fetch SPE registers"));
-    }
+  m_process_info[pid].requested_wp_val.emplace (wp_value);
 
-  struct ppc_linux_features features = ppc_linux_no_features;
+  mark_debug_registers_changed (pid);
+}
 
-  features.wordsize = ppc_linux_target_wordsize (tid);
+/* Clear the hardware watchpoint registration for the pid PID, then mark
+   the stale flag for all threads of the group of PID, and issue a stop
+   request for them.  The breakpoint or watchpoint will be installed the
+   next time each thread is resumed.  Should only be used if the debug
+   register interface is DEBUGREG.  */
 
-  CORE_ADDR hwcap = linux_get_hwcap (current_top_target ());
-  CORE_ADDR hwcap2 = linux_get_hwcap2 (current_top_target ());
+void
+ppc_linux_nat_target::clear_wp (pid_t pid)
+{
+  gdb_assert (m_dreg_interface.debugreg_p ());
 
-  if (have_ptrace_getsetvsxregs
-      && (hwcap & PPC_FEATURE_HAS_VSX))
-    {
-      gdb_vsxregset_t vsxregset;
+  auto process_it = m_process_info.find (pid);
 
-      if (ptrace (PTRACE_GETVSXREGS, tid, 0, &vsxregset) >= 0)
-	features.vsx = true;
+  gdb_assert (process_it != m_process_info.end ());
+  gdb_assert (process_it->second.requested_wp_val.has_value ());
 
-      /* EIO means that the PTRACE_GETVSXREGS request isn't supported.
-	 Anything else needs to be reported.  */
-      else if (errno != EIO)
-	perror_with_name (_("Unable to fetch VSX registers"));
-    }
+  process_it->second.requested_wp_val.reset ();
 
-  if (have_ptrace_getvrregs
-      && (hwcap & PPC_FEATURE_HAS_ALTIVEC))
-    {
-      gdb_vrregset_t vrregset;
+  mark_debug_registers_changed (pid);
+}
 
-      if (ptrace (PTRACE_GETVRREGS, tid, 0, &vrregset) >= 0)
-        features.altivec = true;
+/* Initialize the arch-specific thread state for LWP, if it not already
+   created.  */
 
-      /* EIO means that the PTRACE_GETVRREGS request isn't supported.
-	 Anything else needs to be reported.  */
-      else if (errno != EIO)
-	perror_with_name (_("Unable to fetch AltiVec registers"));
+void
+ppc_linux_nat_target::init_arch_lwp_info (struct lwp_info *lp)
+{
+  if (lwp_arch_private_info (lp) == NULL)
+    {
+      lwp_set_arch_private_info (lp, XCNEW (struct arch_lwp_info));
+      lwp_arch_private_info (lp)->debug_regs_stale = false;
+      lwp_arch_private_info (lp)->lwp_ptid = lp->ptid;
     }
+}
 
-  features.isa205 = ppc_linux_has_isa205 (hwcap);
+/* Get the arch-specific thread state for LWP, creating it if
+   necessary.  */
 
-  if ((hwcap2 & PPC_FEATURE2_DSCR)
-      && check_regset (tid, NT_PPC_PPR, PPC_LINUX_SIZEOF_PPRREGSET)
-      && check_regset (tid, NT_PPC_DSCR, PPC_LINUX_SIZEOF_DSCRREGSET))
-    {
-      features.ppr_dscr = true;
-      if ((hwcap2 & PPC_FEATURE2_ARCH_2_07)
-	  && (hwcap2 & PPC_FEATURE2_TAR)
-	  && (hwcap2 & PPC_FEATURE2_EBB)
-	  && check_regset (tid, NT_PPC_TAR, PPC_LINUX_SIZEOF_TARREGSET)
-	  && check_regset (tid, NT_PPC_EBB, PPC_LINUX_SIZEOF_EBBREGSET)
-	  && check_regset (tid, NT_PPC_PMU, PPC_LINUX_SIZEOF_PMUREGSET))
-	{
-	  features.isa207 = true;
-	  if ((hwcap2 & PPC_FEATURE2_HTM)
-	      && check_regset (tid, NT_PPC_TM_SPR,
-			       PPC_LINUX_SIZEOF_TM_SPRREGSET))
-	    features.htm = true;
-	}
-    }
+arch_lwp_info *
+ppc_linux_nat_target::get_arch_lwp_info (struct lwp_info *lp)
+{
+  init_arch_lwp_info (lp);
 
-  return ppc_linux_match_description (features);
+  return lwp_arch_private_info (lp);
 }
 
+void _initialize_ppc_linux_nat ();
 void
-_initialize_ppc_linux_nat (void)
+_initialize_ppc_linux_nat ()
 {
   linux_target = &the_ppc_linux_nat_target;
 
-  gdb::observers::thread_exit.attach (ppc_linux_thread_exit);
-
   /* Register the target.  */
   add_inf_child_target (linux_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-linux-tdep.c ./gdb/ppc-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -250,8 +250,8 @@ ppc_linux_return_value (struct gdbarch *
 			struct type *valtype, struct regcache *regcache,
 			gdb_byte *readbuf, const gdb_byte *writebuf)
 {  
-  if ((TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-       || TYPE_CODE (valtype) == TYPE_CODE_UNION)
+  if ((valtype->code () == TYPE_CODE_STRUCT
+       || valtype->code () == TYPE_CODE_UNION)
       && !((TYPE_LENGTH (valtype) == 16 || TYPE_LENGTH (valtype) == 8)
 	   && TYPE_VECTOR (valtype)))
     return RETURN_VALUE_STRUCT_CONVENTION;
@@ -2155,8 +2155,9 @@ ppc_linux_init_abi (struct gdbarch_info
   ppc_init_linux_record_tdep (&ppc64_linux_record_tdep, 8);
 }
 
+void _initialize_ppc_linux_tdep ();
 void
-_initialize_ppc_linux_tdep (void)
+_initialize_ppc_linux_tdep ()
 {
   /* Register for all sub-families of the POWER/PowerPC: 32-bit and
      64-bit PowerPC, and the older rs6k.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-linux-tdep.h ./gdb/ppc-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-linux-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-linux-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GDB, the GNU debugger.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-nbsd-nat.c ./gdb/ppc-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-nbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-nbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for NetBSD/powerpc.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Wasabi Systems, Inc.
 
@@ -19,6 +19,8 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+/* We define this to get types like register_t.  */
+#define _KERNTYPES
 #include "defs.h"
 
 #include <sys/types.h>
@@ -35,8 +37,9 @@
 #include "ppc-nbsd-tdep.h"
 #include "bsd-kvm.h"
 #include "inf-ptrace.h"
+#include "nbsd-nat.h"
 
-struct ppc_nbsd_nat_target final : public inf_ptrace_target
+struct ppc_nbsd_nat_target final : public nbsd_nat_target
 {
   void fetch_registers (struct regcache *, int) override;
   void store_registers (struct regcache *, int) override;
@@ -89,12 +92,13 @@ ppc_nbsd_nat_target::fetch_registers (st
 {
   struct gdbarch *gdbarch = regcache->arch ();
   pid_t pid = regcache->ptid ().pid ();
+  int lwp = regcache->ptid ().lwp ();
 
   if (regnum == -1 || getregs_supplies (gdbarch, regnum))
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
         perror_with_name (_("Couldn't get registers"));
 
       ppc_supply_gregset (&ppcnbsd_gregset, regcache,
@@ -105,7 +109,7 @@ ppc_nbsd_nat_target::fetch_registers (st
     {
       struct fpreg fpregs;
 
-      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't get FP registers"));
 
       ppc_supply_fpregset (&ppcnbsd_fpregset, regcache,
@@ -118,18 +122,19 @@ ppc_nbsd_nat_target::store_registers (st
 {
   struct gdbarch *gdbarch = regcache->arch ();
   pid_t pid = regcache->ptid ().pid ();
+  int lwp = regcache->ptid ().lwp ();
 
   if (regnum == -1 || getregs_supplies (gdbarch, regnum))
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
 	perror_with_name (_("Couldn't get registers"));
 
       ppc_collect_gregset (&ppcnbsd_gregset, regcache,
 			   regnum, &regs, sizeof regs);
 
-      if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
 	perror_with_name (_("Couldn't write registers"));
     }
 
@@ -137,13 +142,13 @@ ppc_nbsd_nat_target::store_registers (st
     {
       struct fpreg fpregs;
 
-      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't get FP registers"));
 
       ppc_collect_fpregset (&ppcnbsd_fpregset, regcache,
 			    regnum, &fpregs, sizeof fpregs);
 
-      if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, lwp) == -1)
 	perror_with_name (_("Couldn't set FP registers"));
     }
 }
@@ -179,8 +184,9 @@ ppcnbsd_supply_pcb (struct regcache *reg
   return 1;
 }
 
+void _initialize_ppcnbsd_nat ();
 void
-_initialize_ppcnbsd_nat (void)
+_initialize_ppcnbsd_nat ()
 {
   /* Support debugging kernel virtual memory images.  */
   bsd_kvm_add_target (ppcnbsd_supply_pcb);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-nbsd-tdep.c ./gdb/ppc-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/powerpc.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Wasabi Systems, Inc.
 
@@ -28,7 +28,8 @@
 #include "tramp-frame.h"
 
 #include "ppc-tdep.h"
-#include "ppc-nbsd-tdep.h"
+#include "nbsd-tdep.h"
+#include "ppc-tdep.h"
 #include "solib-svr4.h"
 
 /* Register offsets from <machine/reg.h>.  */
@@ -74,8 +75,8 @@ ppcnbsd_return_value (struct gdbarch *gd
 		      gdb_byte *readbuf, const gdb_byte *writebuf)
 {
 #if 0
-  if ((TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-       || TYPE_CODE (valtype) == TYPE_CODE_UNION)
+  if ((valtype->code () == TYPE_CODE_STRUCT
+       || valtype->code () == TYPE_CODE_UNION)
       && !((TYPE_LENGTH (valtype) == 16 || TYPE_LENGTH (valtype) == 8)
 	    && TYPE_VECTOR (valtype))
       && !(TYPE_LENGTH (valtype) == 1
@@ -173,6 +174,8 @@ static void
 ppcnbsd_init_abi (struct gdbarch_info info,
                   struct gdbarch *gdbarch)
 {
+  nbsd_init_abi (info, gdbarch);
+
   /* For NetBSD, this is an on again, off again thing.  Some systems
      do use the broken struct convention, and some don't.  */
   set_gdbarch_return_value (gdbarch, ppcnbsd_return_value);
@@ -188,8 +191,9 @@ ppcnbsd_init_abi (struct gdbarch_info in
   tramp_frame_prepend_unwinder (gdbarch, &ppcnbsd2_sigtramp);
 }
 
+void _initialize_ppcnbsd_tdep ();
 void
-_initialize_ppcnbsd_tdep (void)
+_initialize_ppcnbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_powerpc, 0, GDB_OSABI_NETBSD,
 			  ppcnbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-nbsd-tdep.h ./gdb/ppc-nbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-nbsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-nbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/powerpc.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -29,4 +29,4 @@ extern struct ppc_reg_offsets ppcnbsd_re
 extern const struct regset ppcnbsd_gregset;
 extern const struct regset ppcnbsd_fpregset;
 
-#endif /* ppc-nbsd-tdep.h */
+#endif /* PPC_NBSD_TDEP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-obsd-nat.c ./gdb/ppc-obsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-obsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-obsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for OpenBSD/powerpc.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -187,8 +187,9 @@ ppcobsd_supply_pcb (struct regcache *reg
   return 1;
 }
 
+void _initialize_ppcobsd_nat ();
 void
-_initialize_ppcobsd_nat (void)
+_initialize_ppcobsd_nat ()
 {
   add_inf_child_target (&the_ppc_obsd_nat_target);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-obsd-tdep.c ./gdb/ppc-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-obsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-obsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/powerpc.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -261,8 +261,9 @@ ppcobsd_init_abi (struct gdbarch_info in
   frame_unwind_append_unwinder (gdbarch, &ppcobsd_sigtramp_frame_unwind);
 }
 
+void _initialize_ppcobsd_tdep ();
 void
-_initialize_ppcobsd_tdep (void)
+_initialize_ppcobsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_rs6000, 0, GDB_OSABI_OPENBSD,
 			  ppcobsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-obsd-tdep.h ./gdb/ppc-obsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-obsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-obsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/powerpc.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-ravenscar-thread.c ./gdb/ppc-ravenscar-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-ravenscar-thread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-ravenscar-thread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ravenscar PowerPC target support.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-ravenscar-thread.h ./gdb/ppc-ravenscar-thread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-ravenscar-thread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-ravenscar-thread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ravenscar PowerPC target support.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-sysv-tdep.c ./gdb/ppc-sysv-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-sysv-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-sysv-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Target-dependent code for PowerPC systems using the SVR4 ABI
    for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -40,10 +40,10 @@ ppc_sysv_use_opencl_abi (struct type *ft
 {
   ftype = check_typedef (ftype);
 
-  if (TYPE_CODE (ftype) == TYPE_CODE_PTR)
+  if (ftype->code () == TYPE_CODE_PTR)
     ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
 
-  return (TYPE_CODE (ftype) == TYPE_CODE_FUNC
+  return (ftype->code () == TYPE_CODE_FUNC
 	  && TYPE_CALLING_CONVENTION (ftype) == DW_CC_GDB_IBM_OpenCL);
 }
 
@@ -124,7 +124,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 	  int len = TYPE_LENGTH (type);
 	  const bfd_byte *val = value_contents (arg);
 
-	  if (TYPE_CODE (type) == TYPE_CODE_FLT && len <= 8
+	  if (type->code () == TYPE_CODE_FLT && len <= 8
 	      && !tdep->soft_float)
 	    {
 	      /* Floating point value converted to "double" then
@@ -164,7 +164,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 		  argoffset += len;
 		}
 	    }
-	  else if (TYPE_CODE (type) == TYPE_CODE_FLT
+	  else if (type->code () == TYPE_CODE_FLT
 		   && len == 16
 		   && !tdep->soft_float
 		   && (gdbarch_long_double_format (gdbarch)
@@ -191,9 +191,9 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 		}
 	    }
 	  else if (len == 8
-		   && (TYPE_CODE (type) == TYPE_CODE_INT	/* long long */
-		       || TYPE_CODE (type) == TYPE_CODE_FLT	/* double */
-		       || (TYPE_CODE (type) == TYPE_CODE_DECFLOAT
+		   && (type->code () == TYPE_CODE_INT	/* long long */
+		       || type->code () == TYPE_CODE_FLT	/* double */
+		       || (type->code () == TYPE_CODE_DECFLOAT
 			   && tdep->soft_float)))
 	    {
 	      /* "long long" or soft-float "double" or "_Decimal64"
@@ -227,10 +227,10 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 		}
 	    }
 	  else if (len == 16
-		   && ((TYPE_CODE (type) == TYPE_CODE_FLT
+		   && ((type->code () == TYPE_CODE_FLT
 			&& (gdbarch_long_double_format (gdbarch)
 			    == floatformats_ibm_long_double))
-		       || (TYPE_CODE (type) == TYPE_CODE_DECFLOAT
+		       || (type->code () == TYPE_CODE_DECFLOAT
 			   && tdep->soft_float)))
 	    {
 	      /* Soft-float IBM long double or _Decimal128 passed in
@@ -260,7 +260,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 		  greg += 4;
 		}
 	    }
-	  else if (TYPE_CODE (type) == TYPE_CODE_DECFLOAT && len <= 8
+	  else if (type->code () == TYPE_CODE_DECFLOAT && len <= 8
 		   && !tdep->soft_float)
 	    {
 	      /* 32-bit and 64-bit decimal floats go in f1 .. f8.  They can
@@ -299,7 +299,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 		  argoffset += len;
 		}
 	    }
-	  else if (TYPE_CODE (type) == TYPE_CODE_DECFLOAT && len == 16
+	  else if (type->code () == TYPE_CODE_DECFLOAT && len == 16
 		   && !tdep->soft_float)
 	    {
 	      /* 128-bit decimal floats go in f2 .. f7, always in even/odd
@@ -334,7 +334,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 	      freg += 2;
 	    }
 	  else if (len < 16
-		   && TYPE_CODE (type) == TYPE_CODE_ARRAY
+		   && type->code () == TYPE_CODE_ARRAY
 		   && TYPE_VECTOR (type)
 		   && opencl_abi)
 	    {
@@ -347,7 +347,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 		{
 		  const gdb_byte *elval = val + i * TYPE_LENGTH (eltype);
 
-		  if (TYPE_CODE (eltype) == TYPE_CODE_FLT && !tdep->soft_float)
+		  if (eltype->code () == TYPE_CODE_FLT && !tdep->soft_float)
 		    {
 		      if (freg <= 8)
 			{
@@ -421,7 +421,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 		}
 	    }
 	  else if (len >= 16
-		   && TYPE_CODE (type) == TYPE_CODE_ARRAY
+		   && type->code () == TYPE_CODE_ARRAY
 		   && TYPE_VECTOR (type)
 		   && opencl_abi)
 	    {
@@ -450,7 +450,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 		}
 	    }
 	  else if (len == 16
-		   && TYPE_CODE (type) == TYPE_CODE_ARRAY
+		   && type->code () == TYPE_CODE_ARRAY
 		   && TYPE_VECTOR (type)
 		   && tdep->vector_abi == POWERPC_VEC_ALTIVEC)
 	    {
@@ -471,7 +471,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 		}
 	    }
 	  else if (len == 8
-		   && TYPE_CODE (type) == TYPE_CODE_ARRAY
+		   && type->code () == TYPE_CODE_ARRAY
 		   && TYPE_VECTOR (type)
 		   && tdep->vector_abi == POWERPC_VEC_SPE)
 	    {
@@ -503,12 +503,12 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 	      gdb_byte word[PPC_MAX_REGISTER_SIZE];
 	      memset (word, 0, PPC_MAX_REGISTER_SIZE);
 	      if (len > tdep->wordsize
-		  || TYPE_CODE (type) == TYPE_CODE_STRUCT
-		  || TYPE_CODE (type) == TYPE_CODE_UNION)
+		  || type->code () == TYPE_CODE_STRUCT
+		  || type->code () == TYPE_CODE_UNION)
 		{
 		  /* Structs and large values are put in an
 		     aligned stack slot ...  */
-		  if (TYPE_CODE (type) == TYPE_CODE_ARRAY
+		  if (type->code () == TYPE_CODE_ARRAY
 		      && TYPE_VECTOR (type)
 		      && len >= 16)
 		    structoffset = align_up (structoffset, 16);
@@ -523,7 +523,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
 					  sp + structoffset);
 		  structoffset += len;
 		}
-	      else if (TYPE_CODE (type) == TYPE_CODE_INT)
+	      else if (type->code () == TYPE_CODE_INT)
 		/* Sign or zero extend the "int" into a "word".  */
 		store_unsigned_integer (word, tdep->wordsize, byte_order,
 					unpack_long (type, val));
@@ -599,7 +599,7 @@ get_decimal_float_return_value (struct g
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
-  gdb_assert (TYPE_CODE (valtype) == TYPE_CODE_DECFLOAT);
+  gdb_assert (valtype->code () == TYPE_CODE_DECFLOAT);
 
   /* 32-bit and 64-bit decimal floats in f1.  */
   if (TYPE_LENGTH (valtype) <= 8)
@@ -681,7 +681,7 @@ do_ppc_sysv_return_value (struct gdbarch
 
   gdb_assert (tdep->wordsize == 4);
 
-  if (TYPE_CODE (type) == TYPE_CODE_FLT
+  if (type->code () == TYPE_CODE_FLT
       && TYPE_LENGTH (type) <= 8
       && !tdep->soft_float)
     {
@@ -706,7 +706,7 @@ do_ppc_sysv_return_value (struct gdbarch
 	}
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
-  if (TYPE_CODE (type) == TYPE_CODE_FLT
+  if (type->code () == TYPE_CODE_FLT
       && TYPE_LENGTH (type) == 16
       && !tdep->soft_float
       && (gdbarch_long_double_format (gdbarch)
@@ -726,10 +726,10 @@ do_ppc_sysv_return_value (struct gdbarch
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
   if (TYPE_LENGTH (type) == 16
-      && ((TYPE_CODE (type) == TYPE_CODE_FLT
+      && ((type->code () == TYPE_CODE_FLT
 	   && (gdbarch_long_double_format (gdbarch)
 	       == floatformats_ibm_long_double))
-	  || (TYPE_CODE (type) == TYPE_CODE_DECFLOAT && tdep->soft_float)))
+	  || (type->code () == TYPE_CODE_DECFLOAT && tdep->soft_float)))
     {
       /* Soft-float IBM long double or _Decimal128 stored in r3, r4,
 	 r5, r6.  */
@@ -749,9 +749,9 @@ do_ppc_sysv_return_value (struct gdbarch
 	}
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
-  if ((TYPE_CODE (type) == TYPE_CODE_INT && TYPE_LENGTH (type) == 8)
-      || (TYPE_CODE (type) == TYPE_CODE_FLT && TYPE_LENGTH (type) == 8)
-      || (TYPE_CODE (type) == TYPE_CODE_DECFLOAT && TYPE_LENGTH (type) == 8
+  if ((type->code () == TYPE_CODE_INT && TYPE_LENGTH (type) == 8)
+      || (type->code () == TYPE_CODE_FLT && TYPE_LENGTH (type) == 8)
+      || (type->code () == TYPE_CODE_DECFLOAT && TYPE_LENGTH (type) == 8
 	  && tdep->soft_float))
     {
       if (readbuf)
@@ -770,15 +770,15 @@ do_ppc_sysv_return_value (struct gdbarch
 	}
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
-  if (TYPE_CODE (type) == TYPE_CODE_DECFLOAT && !tdep->soft_float)
+  if (type->code () == TYPE_CODE_DECFLOAT && !tdep->soft_float)
     return get_decimal_float_return_value (gdbarch, type, regcache, readbuf,
 					   writebuf);
-  else if ((TYPE_CODE (type) == TYPE_CODE_INT
-	    || TYPE_CODE (type) == TYPE_CODE_CHAR
-	    || TYPE_CODE (type) == TYPE_CODE_BOOL
-	    || TYPE_CODE (type) == TYPE_CODE_PTR
+  else if ((type->code () == TYPE_CODE_INT
+	    || type->code () == TYPE_CODE_CHAR
+	    || type->code () == TYPE_CODE_BOOL
+	    || type->code () == TYPE_CODE_PTR
 	    || TYPE_IS_REFERENCE (type)
-	    || TYPE_CODE (type) == TYPE_CODE_ENUM)
+	    || type->code () == TYPE_CODE_ENUM)
 	   && TYPE_LENGTH (type) <= tdep->wordsize)
     {
       if (readbuf)
@@ -803,7 +803,7 @@ do_ppc_sysv_return_value (struct gdbarch
     }
   /* OpenCL vectors < 16 bytes are returned as distinct
      scalars in f1..f2 or r3..r10.  */
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY
+  if (type->code () == TYPE_CODE_ARRAY
       && TYPE_VECTOR (type)
       && TYPE_LENGTH (type) < 16
       && opencl_abi)
@@ -815,7 +815,7 @@ do_ppc_sysv_return_value (struct gdbarch
 	{
 	  int offset = i * TYPE_LENGTH (eltype);
 
-	  if (TYPE_CODE (eltype) == TYPE_CODE_FLT)
+	  if (eltype->code () == TYPE_CODE_FLT)
 	    {
 	      int regnum = tdep->ppc_fp0_regnum + 1 + i;
 	      gdb_byte regval[PPC_MAX_REGISTER_SIZE];
@@ -857,7 +857,7 @@ do_ppc_sysv_return_value (struct gdbarch
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
   /* OpenCL vectors >= 16 bytes are returned in v2..v9.  */
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY
+  if (type->code () == TYPE_CODE_ARRAY
       && TYPE_VECTOR (type)
       && TYPE_LENGTH (type) >= 16
       && opencl_abi)
@@ -879,7 +879,7 @@ do_ppc_sysv_return_value (struct gdbarch
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
   if (TYPE_LENGTH (type) == 16
-      && TYPE_CODE (type) == TYPE_CODE_ARRAY
+      && type->code () == TYPE_CODE_ARRAY
       && TYPE_VECTOR (type)
       && tdep->vector_abi == POWERPC_VEC_ALTIVEC)
     {
@@ -896,7 +896,7 @@ do_ppc_sysv_return_value (struct gdbarch
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
   if (TYPE_LENGTH (type) == 16
-      && TYPE_CODE (type) == TYPE_CODE_ARRAY
+      && type->code () == TYPE_CODE_ARRAY
       && TYPE_VECTOR (type)
       && tdep->vector_abi == POWERPC_VEC_GENERIC)
     {
@@ -920,7 +920,7 @@ do_ppc_sysv_return_value (struct gdbarch
       return RETURN_VALUE_REGISTER_CONVENTION;
     }
   if (TYPE_LENGTH (type) == 8
-      && TYPE_CODE (type) == TYPE_CODE_ARRAY
+      && type->code () == TYPE_CODE_ARRAY
       && TYPE_VECTOR (type)
       && tdep->vector_abi == POWERPC_VEC_SPE)
     {
@@ -1076,25 +1076,25 @@ ppc64_aggregate_candidate (struct type *
 {
   type = check_typedef (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_FLT:
     case TYPE_CODE_DECFLOAT:
       if (!*field_type)
 	*field_type = type;
-      if (TYPE_CODE (*field_type) == TYPE_CODE (type)
+      if ((*field_type)->code () == type->code ()
 	  && TYPE_LENGTH (*field_type) == TYPE_LENGTH (type))
 	return 1;
       break;
 
     case TYPE_CODE_COMPLEX:
       type = TYPE_TARGET_TYPE (type);
-      if (TYPE_CODE (type) == TYPE_CODE_FLT
-	  || TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
+      if (type->code () == TYPE_CODE_FLT
+	  || type->code () == TYPE_CODE_DECFLOAT)
 	{
 	  if (!*field_type)
 	    *field_type = type;
-	  if (TYPE_CODE (*field_type) == TYPE_CODE (type)
+	  if ((*field_type)->code () == type->code ()
 	      && TYPE_LENGTH (*field_type) == TYPE_LENGTH (type))
 	    return 2;
 	}
@@ -1105,7 +1105,7 @@ ppc64_aggregate_candidate (struct type *
 	{
 	  if (!*field_type)
 	    *field_type = type;
-	  if (TYPE_CODE (*field_type) == TYPE_CODE (type)
+	  if ((*field_type)->code () == type->code ()
 	      && TYPE_LENGTH (*field_type) == TYPE_LENGTH (type))
 	    return 1;
 	}
@@ -1138,19 +1138,19 @@ ppc64_aggregate_candidate (struct type *
 	  LONGEST count = 0;
 	  int i;
 
-	  for (i = 0; i < TYPE_NFIELDS (type); i++)
+	  for (i = 0; i < type->num_fields (); i++)
 	    {
 	      LONGEST sub_count;
 
-	      if (field_is_static (&TYPE_FIELD (type, i)))
+	      if (field_is_static (&type->field (i)))
 		continue;
 
 	      sub_count = ppc64_aggregate_candidate
-			   (TYPE_FIELD_TYPE (type, i), field_type);
+			   (type->field (i).type (), field_type);
 	      if (sub_count == -1)
 		return -1;
 
-	      if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+	      if (type->code () == TYPE_CODE_STRUCT)
 		count += sub_count;
 	      else
 		count = std::max (count, sub_count);
@@ -1184,17 +1184,17 @@ ppc64_elfv2_abi_homogeneous_aggregate (s
 {
   /* Complex types at the top level are treated separately.  However,
      complex types can be elements of homogeneous aggregates.  */
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION
-      || (TYPE_CODE (type) == TYPE_CODE_ARRAY && !TYPE_VECTOR (type)))
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION
+      || (type->code () == TYPE_CODE_ARRAY && !TYPE_VECTOR (type)))
     {
       struct type *field_type = NULL;
       LONGEST field_count = ppc64_aggregate_candidate (type, &field_type);
 
       if (field_count > 0)
 	{
-	  int n_regs = ((TYPE_CODE (field_type) == TYPE_CODE_FLT
-			 || TYPE_CODE (field_type) == TYPE_CODE_DECFLOAT)?
+	  int n_regs = ((field_type->code () == TYPE_CODE_FLT
+			 || field_type->code () == TYPE_CODE_DECFLOAT)?
 			(TYPE_LENGTH (field_type) + 7) >> 3 : 1);
 
 	  /* The ELFv2 ABI allows homogeneous aggregates to occupy
@@ -1323,7 +1323,7 @@ ppc64_sysv_abi_push_freg (struct gdbarch
     return;
 
   if (TYPE_LENGTH (type) <= 8
-      && TYPE_CODE (type) == TYPE_CODE_FLT)
+      && type->code () == TYPE_CODE_FLT)
     {
       /* Floats and doubles go in f1 .. f13.  32-bit floats are converted
  	 to double first.  */
@@ -1340,7 +1340,7 @@ ppc64_sysv_abi_push_freg (struct gdbarch
       argpos->freg++;
     }
   else if (TYPE_LENGTH (type) <= 8
-	   && TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
+	   && type->code () == TYPE_CODE_DECFLOAT)
     {
       /* Floats and doubles go in f1 .. f13.  32-bit decimal floats are
 	 placed in the least significant word.  */
@@ -1359,7 +1359,7 @@ ppc64_sysv_abi_push_freg (struct gdbarch
       argpos->freg++;
     }
   else if (TYPE_LENGTH (type) == 16
-	   && TYPE_CODE (type) == TYPE_CODE_FLT
+	   && type->code () == TYPE_CODE_FLT
 	   && (gdbarch_long_double_format (gdbarch)
 	       == floatformats_ibm_long_double))
     {
@@ -1376,7 +1376,7 @@ ppc64_sysv_abi_push_freg (struct gdbarch
       argpos->freg += 2;
     }
   else if (TYPE_LENGTH (type) == 16
-	   && TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
+	   && type->code () == TYPE_CODE_DECFLOAT)
     {
       /* 128-bit decimal floating-point values are stored in and even/odd
 	 pair of FPRs, with the even FPR holding the most significant half.  */
@@ -1421,14 +1421,14 @@ ppc64_sysv_abi_push_param (struct gdbarc
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
-  if (TYPE_CODE (type) == TYPE_CODE_FLT
-      || TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
+  if (type->code () == TYPE_CODE_FLT
+      || type->code () == TYPE_CODE_DECFLOAT)
     {
       /* Floating-point scalars are passed in floating-point registers.  */
       ppc64_sysv_abi_push_val (gdbarch, val, TYPE_LENGTH (type), 0, argpos);
       ppc64_sysv_abi_push_freg (gdbarch, type, val, argpos);
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
+  else if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
 	   && tdep->vector_abi == POWERPC_VEC_ALTIVEC
 	   && TYPE_LENGTH (type) == 16)
     {
@@ -1436,7 +1436,7 @@ ppc64_sysv_abi_push_param (struct gdbarc
       ppc64_sysv_abi_push_val (gdbarch, val, TYPE_LENGTH (type), 16, argpos);
       ppc64_sysv_abi_push_vreg (gdbarch, val, argpos);
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
+  else if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
 	   && TYPE_LENGTH (type) >= 16)
     {
       /* Non-Altivec vectors are passed by reference.  */
@@ -1450,11 +1450,11 @@ ppc64_sysv_abi_push_param (struct gdbarc
       /* ... and pass a pointer to the copy as parameter.  */
       ppc64_sysv_abi_push_integer (gdbarch, addr, argpos);
     }
-  else if ((TYPE_CODE (type) == TYPE_CODE_INT
-	    || TYPE_CODE (type) == TYPE_CODE_ENUM
-	    || TYPE_CODE (type) == TYPE_CODE_BOOL
-	    || TYPE_CODE (type) == TYPE_CODE_CHAR
-	    || TYPE_CODE (type) == TYPE_CODE_PTR
+  else if ((type->code () == TYPE_CODE_INT
+	    || type->code () == TYPE_CODE_ENUM
+	    || type->code () == TYPE_CODE_BOOL
+	    || type->code () == TYPE_CODE_CHAR
+	    || type->code () == TYPE_CODE_PTR
 	    || TYPE_IS_REFERENCE (type))
 	   && TYPE_LENGTH (type) <= tdep->wordsize)
     {
@@ -1467,14 +1467,14 @@ ppc64_sysv_abi_push_param (struct gdbarc
 
 	  /* Convert any function code addresses into descriptors.  */
 	  if (tdep->elf_abi == POWERPC_ELF_V1
-	      && (TYPE_CODE (type) == TYPE_CODE_PTR
-		  || TYPE_CODE (type) == TYPE_CODE_REF))
+	      && (type->code () == TYPE_CODE_PTR
+		  || type->code () == TYPE_CODE_REF))
 	    {
 	      struct type *target_type
 		= check_typedef (TYPE_TARGET_TYPE (type));
 
-	      if (TYPE_CODE (target_type) == TYPE_CODE_FUNC
-		  || TYPE_CODE (target_type) == TYPE_CODE_METHOD)
+	      if (target_type->code () == TYPE_CODE_FUNC
+		  || target_type->code () == TYPE_CODE_METHOD)
 		{
 		  CORE_ADDR desc = word;
 
@@ -1493,14 +1493,14 @@ ppc64_sysv_abi_push_param (struct gdbarc
       /* The ABI (version 1.9) specifies that structs containing a
 	 single floating-point value, at any level of nesting of
 	 single-member structs, are passed in floating-point registers.  */
-      if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	  && TYPE_NFIELDS (type) == 1)
+      if (type->code () == TYPE_CODE_STRUCT
+	  && type->num_fields () == 1)
 	{
-	  while (TYPE_CODE (type) == TYPE_CODE_STRUCT
-		 && TYPE_NFIELDS (type) == 1)
-	    type = check_typedef (TYPE_FIELD_TYPE (type, 0));
+	  while (type->code () == TYPE_CODE_STRUCT
+		 && type->num_fields () == 1)
+	    type = check_typedef (type->field (0).type ());
 
-	  if (TYPE_CODE (type) == TYPE_CODE_FLT)
+	  if (type->code () == TYPE_CODE_FLT)
 	    ppc64_sysv_abi_push_freg (gdbarch, type, val, argpos);
 	}
 
@@ -1516,10 +1516,10 @@ ppc64_sysv_abi_push_param (struct gdbarc
 	      {
 		const gdb_byte *elval = val + i * TYPE_LENGTH (eltype);
 
-		if (TYPE_CODE (eltype) == TYPE_CODE_FLT
-		    || TYPE_CODE (eltype) == TYPE_CODE_DECFLOAT)
+		if (eltype->code () == TYPE_CODE_FLT
+		    || eltype->code () == TYPE_CODE_DECFLOAT)
 		  ppc64_sysv_abi_push_freg (gdbarch, eltype, elval, argpos);
-		else if (TYPE_CODE (eltype) == TYPE_CODE_ARRAY
+		else if (eltype->code () == TYPE_CODE_ARRAY
 			 && TYPE_VECTOR (eltype)
 			 && tdep->vector_abi == POWERPC_VEC_ALTIVEC
 			 && TYPE_LENGTH (eltype) == 16)
@@ -1635,7 +1635,7 @@ ppc64_sysv_abi_push_dummy_call (struct g
 	  struct type *type = check_typedef (value_type (arg));
 	  const bfd_byte *val = value_contents (arg);
 
-	  if (TYPE_CODE (type) == TYPE_CODE_COMPLEX)
+	  if (type->code () == TYPE_CODE_COMPLEX)
 	    {
 	      /* Complex types are passed as if two independent scalars.  */
 	      struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type));
@@ -1644,7 +1644,7 @@ ppc64_sysv_abi_push_dummy_call (struct g
 	      ppc64_sysv_abi_push_param (gdbarch, eltype,
 				 	 val + TYPE_LENGTH (eltype), &argpos);
 	    }
-	  else if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
+	  else if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
 		   && opencl_abi)
 	    {
 	      /* OpenCL vectors shorter than 16 bytes are passed as if
@@ -1704,7 +1704,7 @@ ppc64_sysv_abi_push_dummy_call (struct g
       struct type *ftype = check_typedef (value_type (function));
       CORE_ADDR desc_addr = value_as_address (function);
 
-      if (TYPE_CODE (ftype) == TYPE_CODE_PTR
+      if (ftype->code () == TYPE_CODE_PTR
 	  || convert_code_addr_to_desc_addr (func_addr, &desc_addr))
 	{
 	  /* The TOC is the second double word in the descriptor.  */
@@ -1742,10 +1742,10 @@ ppc64_sysv_abi_return_value_base (struct
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
   /* Integers live in GPRs starting at r3.  */
-  if ((TYPE_CODE (valtype) == TYPE_CODE_INT
-       || TYPE_CODE (valtype) == TYPE_CODE_ENUM
-       || TYPE_CODE (valtype) == TYPE_CODE_CHAR
-       || TYPE_CODE (valtype) == TYPE_CODE_BOOL)
+  if ((valtype->code () == TYPE_CODE_INT
+       || valtype->code () == TYPE_CODE_ENUM
+       || valtype->code () == TYPE_CODE_CHAR
+       || valtype->code () == TYPE_CODE_BOOL)
       && TYPE_LENGTH (valtype) <= 8)
     {
       int regnum = tdep->ppc_gp0_regnum + 3 + index;
@@ -1772,7 +1772,7 @@ ppc64_sysv_abi_return_value_base (struct
   /* Floats and doubles go in f1 .. f13.  32-bit floats are converted
      to double first.  */
   if (TYPE_LENGTH (valtype) <= 8
-      && TYPE_CODE (valtype) == TYPE_CODE_FLT)
+      && valtype->code () == TYPE_CODE_FLT)
     {
       int regnum = tdep->ppc_fp0_regnum + 1 + index;
       struct type *regtype = register_type (gdbarch, regnum);
@@ -1794,7 +1794,7 @@ ppc64_sysv_abi_return_value_base (struct
   /* Floats and doubles go in f1 .. f13.  32-bit decimal floats are
      placed in the least significant word.  */
   if (TYPE_LENGTH (valtype) <= 8
-      && TYPE_CODE (valtype) == TYPE_CODE_DECFLOAT)
+      && valtype->code () == TYPE_CODE_DECFLOAT)
     {
       int regnum = tdep->ppc_fp0_regnum + 1 + index;
       int offset = 0;
@@ -1813,7 +1813,7 @@ ppc64_sysv_abi_return_value_base (struct
 
   /* IBM long double stored in two consecutive FPRs.  */
   if (TYPE_LENGTH (valtype) == 16
-      && TYPE_CODE (valtype) == TYPE_CODE_FLT
+      && valtype->code () == TYPE_CODE_FLT
       && (gdbarch_long_double_format (gdbarch)
 	  == floatformats_ibm_long_double))
     {
@@ -1835,7 +1835,7 @@ ppc64_sysv_abi_return_value_base (struct
   /* 128-bit decimal floating-point values are stored in an even/odd
      pair of FPRs, with the even FPR holding the most significant half.  */
   if (TYPE_LENGTH (valtype) == 16
-      && TYPE_CODE (valtype) == TYPE_CODE_DECFLOAT)
+      && valtype->code () == TYPE_CODE_DECFLOAT)
     {
       int regnum = tdep->ppc_fp0_regnum + 2 + 2 * index;
       int lopart = gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG ? 8 : 0;
@@ -1856,7 +1856,7 @@ ppc64_sysv_abi_return_value_base (struct
 
   /* AltiVec vectors are returned in VRs starting at v2.  */
   if (TYPE_LENGTH (valtype) == 16
-      && TYPE_CODE (valtype) == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype)
+      && valtype->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype)
       && tdep->vector_abi == POWERPC_VEC_ALTIVEC)
     {
       int regnum = tdep->ppc_vr0_regnum + 2 + index;
@@ -1870,7 +1870,7 @@ ppc64_sysv_abi_return_value_base (struct
 
   /* Short vectors are returned in GPRs starting at r3.  */
   if (TYPE_LENGTH (valtype) <= 8
-      && TYPE_CODE (valtype) == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype))
+      && valtype->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype))
     {
       int regnum = tdep->ppc_gp0_regnum + 3 + index;
       int offset = 0;
@@ -1917,7 +1917,7 @@ ppc64_sysv_abi_return_value (struct gdba
   gdb_assert (ppc_floating_point_unit_p (gdbarch));
 
   /* Complex types are returned as if two independent scalars.  */
-  if (TYPE_CODE (valtype) == TYPE_CODE_COMPLEX)
+  if (valtype->code () == TYPE_CODE_COMPLEX)
     {
       eltype = check_typedef (TYPE_TARGET_TYPE (valtype));
 
@@ -1938,7 +1938,7 @@ ppc64_sysv_abi_return_value (struct gdba
   /* OpenCL vectors shorter than 16 bytes are returned as if
      a series of independent scalars; OpenCL vectors 16 bytes
      or longer are returned as if a series of AltiVec vectors.  */
-  if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype)
+  if (valtype->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype)
       && opencl_abi)
     {
       if (TYPE_LENGTH (valtype) < 16)
@@ -1962,7 +1962,7 @@ ppc64_sysv_abi_return_value (struct gdba
     }
 
   /* All pointers live in r3.  */
-  if (TYPE_CODE (valtype) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (valtype))
+  if (valtype->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (valtype))
     {
       int regnum = tdep->ppc_gp0_regnum + 3;
 
@@ -1974,10 +1974,10 @@ ppc64_sysv_abi_return_value (struct gdba
     }
 
   /* Small character arrays are returned, right justified, in r3.  */
-  if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY
+  if (valtype->code () == TYPE_CODE_ARRAY
       && !TYPE_VECTOR (valtype)
       && TYPE_LENGTH (valtype) <= 8
-      && TYPE_CODE (TYPE_TARGET_TYPE (valtype)) == TYPE_CODE_INT
+      && TYPE_TARGET_TYPE (valtype)->code () == TYPE_CODE_INT
       && TYPE_LENGTH (TYPE_TARGET_TYPE (valtype)) == 1)
     {
       int regnum = tdep->ppc_gp0_regnum + 3;
@@ -1996,9 +1996,9 @@ ppc64_sysv_abi_return_value (struct gdba
      aggregates are returned in registers.  */
   if (tdep->elf_abi == POWERPC_ELF_V2
       && ppc64_elfv2_abi_homogeneous_aggregate (valtype, &eltype, &nelt)
-      && (TYPE_CODE (eltype) == TYPE_CODE_FLT
-	  || TYPE_CODE (eltype) == TYPE_CODE_DECFLOAT
-	  || (TYPE_CODE (eltype) == TYPE_CODE_ARRAY
+      && (eltype->code () == TYPE_CODE_FLT
+	  || eltype->code () == TYPE_CODE_DECFLOAT
+	  || (eltype->code () == TYPE_CODE_ARRAY
 	      && TYPE_VECTOR (eltype)
 	      && tdep->vector_abi == POWERPC_VEC_ALTIVEC
 	      && TYPE_LENGTH (eltype) == 16)))
@@ -2022,9 +2022,9 @@ ppc64_sysv_abi_return_value (struct gdba
      returned in registers r3:r4.  */
   if (tdep->elf_abi == POWERPC_ELF_V2
       && TYPE_LENGTH (valtype) <= 16
-      && (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-	  || TYPE_CODE (valtype) == TYPE_CODE_UNION
-	  || (TYPE_CODE (valtype) == TYPE_CODE_ARRAY
+      && (valtype->code () == TYPE_CODE_STRUCT
+	  || valtype->code () == TYPE_CODE_UNION
+	  || (valtype->code () == TYPE_CODE_ARRAY
 	      && !TYPE_VECTOR (valtype))))
     {
       int n_regs = ((TYPE_LENGTH (valtype) + tdep->wordsize - 1)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-tdep.h ./gdb/ppc-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ppc-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ppc-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/printcmd.c ./gdb/printcmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/printcmd.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/printcmd.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Print values for GNU debugger GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -116,13 +116,27 @@ show_print_symbol_filename (struct ui_fi
 
 static int current_display_number;
 
+/* Last allocated display number.  */
+
+static int display_number;
+
 struct display
   {
-    /* Chain link to next auto-display item.  */
-    struct display *next;
+    display (const char *exp_string_, expression_up &&exp_,
+	     const struct format_data &format_, struct program_space *pspace_,
+	     const struct block *block_)
+      : exp_string (exp_string_),
+	exp (std::move (exp_)),
+	number (++display_number),
+	format (format_),
+	pspace (pspace_),
+	block (block_),
+	enabled_p (true)
+    {
+    }
 
     /* The expression as the user typed it.  */
-    char *exp_string;
+    std::string exp_string;
 
     /* Expression to be evaluated and displayed.  */
     expression_up exp;
@@ -140,27 +154,13 @@ struct display
     const struct block *block;
 
     /* Status of this display (enabled or disabled).  */
-    int enabled_p;
+    bool enabled_p;
   };
 
-/* Chain of expressions whose values should be displayed
-   automatically each time the program stops.  */
-
-static struct display *display_chain;
+/* Expressions whose values should be displayed automatically each
+   time the program stops.  */
 
-static int display_number;
-
-/* Walk the following statement or block through all displays.
-   ALL_DISPLAYS_SAFE does so even if the statement deletes the current
-   display.  */
-
-#define ALL_DISPLAYS(B)				\
-  for (B = display_chain; B; B = B->next)
-
-#define ALL_DISPLAYS_SAFE(B,TMP)		\
-  for (B = display_chain;			\
-       B ? (TMP = B->next, 1): 0;		\
-       B = TMP)
+static std::vector<std::unique_ptr<struct display>> all_displays;
 
 /* Prototypes for local functions.  */
 
@@ -311,20 +311,17 @@ print_formatted (struct value *val, int
     }
 
   if (options->format == 0 || options->format == 's'
-      || TYPE_CODE (type) == TYPE_CODE_REF
-      || TYPE_CODE (type) == TYPE_CODE_ARRAY
-      || TYPE_CODE (type) == TYPE_CODE_STRING
-      || TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION
-      || TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
+      || type->code () == TYPE_CODE_REF
+      || type->code () == TYPE_CODE_ARRAY
+      || type->code () == TYPE_CODE_STRING
+      || type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION
+      || type->code () == TYPE_CODE_NAMESPACE)
     value_print (val, stream, options);
   else
     /* User specified format, so don't look to the type to tell us
        what to do.  */
-    val_print_scalar_formatted (type,
-				value_embedded_offset (val),
-				val,
-				options, size, stream);
+    value_print_scalar_formatted (val, options, size, stream);
 }
 
 /* Return builtin floating point type of same length as TYPE.
@@ -364,7 +361,7 @@ print_scalar_formatted (const gdb_byte *
   /* If the value is a pointer, and pointers and addresses are not the
      same, then at this point, the value's length (in target bytes) is
      gdbarch_addr_bit/TARGET_CHAR_BIT, not TYPE_LENGTH (type).  */
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  if (type->code () == TYPE_CODE_PTR)
     len = gdbarch_addr_bit (gdbarch) / TARGET_CHAR_BIT;
 
   /* If we are printing it as unsigned, truncate it in case it is actually
@@ -414,15 +411,14 @@ print_scalar_formatted (const gdb_byte *
      range case, we want to avoid this, so we store the unpacked value
      here for possible use later.  */
   gdb::optional<LONGEST> val_long;
-  if ((TYPE_CODE (type) == TYPE_CODE_FLT
+  if ((type->code () == TYPE_CODE_FLT
        && (options->format == 'o'
 	   || options->format == 'x'
 	   || options->format == 't'
 	   || options->format == 'z'
 	   || options->format == 'd'
 	   || options->format == 'u'))
-      || (TYPE_CODE (type) == TYPE_CODE_RANGE
-	  && TYPE_RANGE_DATA (type)->bias != 0))
+      || (type->code () == TYPE_CODE_RANGE && type->bounds ()->bias != 0))
     {
       val_long.emplace (unpack_long (type, valaddr));
       converted_bytes.resize (TYPE_LENGTH (type));
@@ -435,10 +431,10 @@ print_scalar_formatted (const gdb_byte *
      of a floating-point type of the same length, if that exists.  Otherwise,
      the data is printed as integer.  */
   char format = options->format;
-  if (format == 'f' && TYPE_CODE (type) != TYPE_CODE_FLT)
+  if (format == 'f' && type->code () != TYPE_CODE_FLT)
     {
       type = float_type_from_length (type);
-      if (TYPE_CODE (type) != TYPE_CODE_FLT)
+      if (type->code () != TYPE_CODE_FLT)
         format = 0;
     }
 
@@ -454,7 +450,7 @@ print_scalar_formatted (const gdb_byte *
       print_decimal_chars (stream, valaddr, len, false, byte_order);
       break;
     case 0:
-      if (TYPE_CODE (type) != TYPE_CODE_FLT)
+      if (type->code () != TYPE_CODE_FLT)
 	{
 	  print_decimal_chars (stream, valaddr, len, !TYPE_UNSIGNED (type),
 			       byte_order);
@@ -1221,7 +1217,7 @@ print_command_1 (const char *args, int v
     val = access_value_history (0);
 
   if (voidprint || (val && value_type (val) &&
-		    TYPE_CODE (value_type (val)) != TYPE_CODE_VOID))
+		    value_type (val)->code () != TYPE_CODE_VOID))
     print_value (val, print_opts);
 }
 
@@ -1367,7 +1363,7 @@ info_symbol_command (const char *arg, in
 	    gdb_assert (osect->objfile && objfile_name (osect->objfile));
 	    obj_name = objfile_name (osect->objfile);
 
-	    if (MULTI_OBJFILE_P ())
+	    if (current_program_space->multi_objfile_p ())
 	      if (pc_in_unmapped_range (addr, osect))
 		if (section_is_overlay (osect))
 		  printf_filtered (_("%s in load address range of "
@@ -1445,7 +1441,7 @@ info_address_command (const char *exp, i
 	{
 	  struct objfile *objfile = msymbol.objfile;
 
-	  gdbarch = get_objfile_arch (objfile);
+	  gdbarch = objfile->arch ();
 	  load_addr = BMSYMBOL_VALUE_ADDRESS (msymbol);
 
 	  printf_filtered ("Symbol \"");
@@ -1684,8 +1680,7 @@ x_command (const char *exp, int from_tty
 	val = coerce_ref (val);
       /* In rvalue contexts, such as this, functions are coerced into
          pointers to functions.  This makes "x/i main" work.  */
-      if (/* last_format == 'i'  && */ 
-	  TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
+      if (value_type (val)->code () == TYPE_CODE_FUNC
 	   && VALUE_LVAL (val) == lval_memory)
 	next_address = value_address (val);
       else
@@ -1766,27 +1761,9 @@ display_command (const char *arg, int fr
   innermost_block_tracker tracker;
   expression_up expr = parse_expression (exp, &tracker);
 
-  newobj = new display ();
-
-  newobj->exp_string = xstrdup (exp);
-  newobj->exp = std::move (expr);
-  newobj->block = tracker.block ();
-  newobj->pspace = current_program_space;
-  newobj->number = ++display_number;
-  newobj->format = fmt;
-  newobj->enabled_p = 1;
-  newobj->next = NULL;
-
-  if (display_chain == NULL)
-    display_chain = newobj;
-  else
-    {
-      struct display *last;
-
-      for (last = display_chain; last->next != NULL; last = last->next)
-	;
-      last->next = newobj;
-    }
+  newobj = new display (exp, std::move (expr), fmt,
+			current_program_space, tracker.block ());
+  all_displays.emplace_back (newobj);
 
   if (from_tty)
     do_one_display (newobj);
@@ -1794,26 +1771,13 @@ display_command (const char *arg, int fr
   dont_repeat ();
 }
 
-static void
-free_display (struct display *d)
-{
-  xfree (d->exp_string);
-  delete d;
-}
-
 /* Clear out the display_chain.  Done when new symtabs are loaded,
    since this invalidates the types stored in many expressions.  */
 
 void
-clear_displays (void)
+clear_displays ()
 {
-  struct display *d;
-
-  while ((d = display_chain) != NULL)
-    {
-      display_chain = d->next;
-      free_display (d);
-    }
+  all_displays.clear ();
 }
 
 /* Delete the auto-display DISPLAY.  */
@@ -1821,21 +1785,16 @@ clear_displays (void)
 static void
 delete_display (struct display *display)
 {
-  struct display *d;
-
   gdb_assert (display != NULL);
 
-  if (display_chain == display)
-    display_chain = display->next;
-
-  ALL_DISPLAYS (d)
-    if (d->next == display)
-      {
-	d->next = display->next;
-	break;
-      }
-
-  free_display (display);
+  auto iter = std::find_if (all_displays.begin (),
+			    all_displays.end (),
+			    [=] (const std::unique_ptr<struct display> &item)
+			    {
+			      return item.get () == display;
+			    });
+  gdb_assert (iter != all_displays.end ());
+  all_displays.erase (iter);
 }
 
 /* Call FUNCTION on each of the displays whose numbers are given in
@@ -1843,9 +1802,7 @@ delete_display (struct display *display)
 
 static void
 map_display_numbers (const char *args,
-		     void (*function) (struct display *,
-				       void *),
-		     void *data)
+		     gdb::function_view<void (struct display *)> function)
 {
   int num;
 
@@ -1863,27 +1820,20 @@ map_display_numbers (const char *args,
 	warning (_("bad display number at or near '%s'"), p);
       else
 	{
-	  struct display *d, *tmp;
-
-	  ALL_DISPLAYS_SAFE (d, tmp)
-	    if (d->number == num)
-	      break;
-	  if (d == NULL)
+	  auto iter = std::find_if (all_displays.begin (),
+				    all_displays.end (),
+				    [=] (const std::unique_ptr<display> &item)
+				    {
+				      return item->number == num;
+				    });
+	  if (iter == all_displays.end ())
 	    printf_unfiltered (_("No display number %d.\n"), num);
 	  else
-	    function (d, data);
+	    function (iter->get ());
 	}
     }
 }
 
-/* Callback for map_display_numbers, that deletes a display.  */
-
-static void
-do_delete_display (struct display *d, void *data)
-{
-  delete_display (d);
-}
-
 /* "undisplay" command.  */
 
 static void
@@ -1897,7 +1847,7 @@ undisplay_command (const char *args, int
       return;
     }
 
-  map_display_numbers (args, do_delete_display, NULL);
+  map_display_numbers (args, delete_display);
   dont_repeat ();
 }
 
@@ -1910,7 +1860,7 @@ do_one_display (struct display *d)
 {
   int within_current_scope;
 
-  if (d->enabled_p == 0)
+  if (!d->enabled_p)
     return;
 
   /* The expression carries the architecture that was used at parse time.
@@ -1932,15 +1882,15 @@ do_one_display (struct display *d)
       try
 	{
 	  innermost_block_tracker tracker;
-	  d->exp = parse_expression (d->exp_string, &tracker);
+	  d->exp = parse_expression (d->exp_string.c_str (), &tracker);
 	  d->block = tracker.block ();
 	}
       catch (const gdb_exception &ex)
 	{
 	  /* Can't re-parse the expression.  Disable this display item.  */
-	  d->enabled_p = 0;
+	  d->enabled_p = false;
 	  warning (_("Unable to display \"%s\": %s"),
-		   d->exp_string, ex.what ());
+		   d->exp_string.c_str (), ex.what ());
 	  return;
 	}
     }
@@ -1980,7 +1930,7 @@ do_one_display (struct display *d)
 
       annotate_display_expression ();
 
-      puts_filtered (d->exp_string);
+      puts_filtered (d->exp_string.c_str ());
       annotate_display_expression_end ();
 
       if (d->format.count != 1 || d->format.format == 'i')
@@ -2019,7 +1969,7 @@ do_one_display (struct display *d)
 
       annotate_display_expression ();
 
-      puts_filtered (d->exp_string);
+      puts_filtered (d->exp_string.c_str ());
       annotate_display_expression_end ();
 
       printf_filtered (" = ");
@@ -2056,10 +2006,8 @@ do_one_display (struct display *d)
 void
 do_displays (void)
 {
-  struct display *d;
-
-  for (d = display_chain; d; d = d->next)
-    do_one_display (d);
+  for (auto &d : all_displays)
+    do_one_display (d.get ());
 }
 
 /* Delete the auto-display which we were in the process of displaying.
@@ -2068,12 +2016,10 @@ do_displays (void)
 void
 disable_display (int num)
 {
-  struct display *d;
-
-  for (d = display_chain; d; d = d->next)
+  for (auto &d : all_displays)
     if (d->number == num)
       {
-	d->enabled_p = 0;
+	d->enabled_p = false;
 	return;
       }
   printf_unfiltered (_("No display number %d.\n"), num);
@@ -2096,15 +2042,13 @@ disable_current_display (void)
 static void
 info_display_command (const char *ignore, int from_tty)
 {
-  struct display *d;
-
-  if (!display_chain)
+  if (all_displays.empty ())
     printf_unfiltered (_("There are no auto-display expressions now.\n"));
   else
     printf_filtered (_("Auto-display expressions now in effect:\n\
 Num Enb Expression\n"));
 
-  for (d = display_chain; d; d = d->next)
+  for (auto &d : all_displays)
     {
       printf_filtered ("%d:   %c  ", d->number, "ny"[(int) d->enabled_p]);
       if (d->format.size)
@@ -2112,38 +2056,31 @@ Num Enb Expression\n"));
 			 d->format.format);
       else if (d->format.format)
 	printf_filtered ("/%c ", d->format.format);
-      puts_filtered (d->exp_string);
+      puts_filtered (d->exp_string.c_str ());
       if (d->block && !contained_in (get_selected_block (0), d->block, true))
 	printf_filtered (_(" (cannot be evaluated in the current context)"));
       printf_filtered ("\n");
     }
 }
 
-/* Callback fo map_display_numbers, that enables or disables the
-   passed in display D.  */
-
-static void
-do_enable_disable_display (struct display *d, void *data)
-{
-  d->enabled_p = *(int *) data;
-}
-
 /* Implementation of both the "disable display" and "enable display"
    commands.  ENABLE decides what to do.  */
 
 static void
-enable_disable_display_command (const char *args, int from_tty, int enable)
+enable_disable_display_command (const char *args, int from_tty, bool enable)
 {
   if (args == NULL)
     {
-      struct display *d;
-
-      ALL_DISPLAYS (d)
+      for (auto &d : all_displays)
 	d->enabled_p = enable;
       return;
     }
 
-  map_display_numbers (args, do_enable_disable_display, &enable);
+  map_display_numbers (args,
+		       [=] (struct display *d)
+		       {
+			 d->enabled_p = enable;
+		       });
 }
 
 /* The "enable display" command.  */
@@ -2151,7 +2088,7 @@ enable_disable_display_command (const ch
 static void
 enable_display_command (const char *args, int from_tty)
 {
-  enable_disable_display_command (args, from_tty, 1);
+  enable_disable_display_command (args, from_tty, true);
 }
 
 /* The "disable display" command.  */
@@ -2159,7 +2096,7 @@ enable_display_command (const char *args
 static void
 disable_display_command (const char *args, int from_tty)
 {
-  enable_disable_display_command (args, from_tty, 0);
+  enable_disable_display_command (args, from_tty, false);
 }
 
 /* display_chain items point to blocks and expressions.  Some expressions in
@@ -2173,7 +2110,6 @@ disable_display_command (const char *arg
 static void
 clear_dangling_display_expressions (struct objfile *objfile)
 {
-  struct display *d;
   struct program_space *pspace;
 
   /* With no symbol file we cannot have a block or expression from it.  */
@@ -2186,17 +2122,25 @@ clear_dangling_display_expressions (stru
       gdb_assert (objfile->pspace == pspace);
     }
 
-  for (d = display_chain; d != NULL; d = d->next)
+  for (auto &d : all_displays)
     {
       if (d->pspace != pspace)
 	continue;
 
-      if (lookup_objfile_from_block (d->block) == objfile
+      struct objfile *bl_objf = nullptr;
+      if (d->block != nullptr)
+	{
+	  bl_objf = block_objfile (d->block);
+	  if (bl_objf->separate_debug_objfile_backlink != nullptr)
+	    bl_objf = bl_objf->separate_debug_objfile_backlink;
+	}
+
+      if (bl_objf == objfile
 	  || (d->exp != NULL && exp_uses_objfile (d->exp.get (), objfile)))
-      {
-	d->exp.reset ();
-	d->block = NULL;
-      }
+	{
+	  d->exp.reset ();
+	  d->block = NULL;
+	}
     }
 }
 
@@ -2260,7 +2204,8 @@ printf_c_string (struct ui_file *stream,
 {
   const gdb_byte *str;
 
-  if (VALUE_LVAL (value) == lval_internalvar
+  if (value_type (value)->code () != TYPE_CODE_PTR
+      && VALUE_LVAL (value) == lval_internalvar
       && c_is_string_type_p (value_type (value)))
     {
       size_t len = TYPE_LENGTH (value_type (value));
@@ -2440,7 +2385,7 @@ printf_floating (struct ui_file *stream,
      In either case, the result of the conversion is a byte buffer
      formatted in the target format for the target type.  */
 
-  if (TYPE_CODE (fmt_type) == TYPE_CODE_FLT)
+  if (fmt_type->code () == TYPE_CODE_FLT)
     {
       param_type = float_type_from_length (param_type);
       if (param_type != value_type (value))
@@ -2610,7 +2555,7 @@ ui_printf (const char *arg, struct ui_fi
 
 	      valtype = value_type (val_args[i]);
 	      if (TYPE_LENGTH (valtype) != TYPE_LENGTH (wctype)
-		  || TYPE_CODE (valtype) != TYPE_CODE_INT)
+		  || valtype->code () != TYPE_CODE_INT)
 		error (_("expected wchar_t argument for %%lc"));
 
 	      bytes = value_contents (val_args[i]);
@@ -2720,7 +2665,7 @@ printf_command (const char *arg, int fro
   ui_printf (arg, gdb_stdout);
   reset_terminal_style (gdb_stdout);
   wrap_here ("");
-  ui_file_flush (gdb_stdout);
+  gdb_stdout->flush ();
 }
 
 /* Implement the "eval" command.  */
@@ -2737,8 +2682,9 @@ eval_command (const char *arg, int from_
   execute_command (expanded.c_str (), from_tty);
 }
 
+void _initialize_printcmd ();
 void
-_initialize_printcmd (void)
+_initialize_printcmd ()
 {
   struct cmd_list_element *c;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/probe.c ./gdb/probe.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/probe.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/probe.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic static probe support for GDB.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -185,9 +185,7 @@ parse_probes (const struct event_locatio
     }
   else
     {
-      struct program_space *pspace;
-
-      ALL_PSPACES (pspace)
+      for (struct program_space *pspace : program_spaces)
 	parse_probes_in_pspace (spops, pspace, objfile_namestr,
 				provider, name, &result);
     }
@@ -876,8 +874,9 @@ static const struct internalvar_funcs pr
 
 std::vector<const static_probe_ops *> all_static_probe_ops;
 
+void _initialize_probe ();
 void
-_initialize_probe (void)
+_initialize_probe ()
 {
   all_static_probe_ops.push_back (&any_static_probe_ops);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/probe.h ./gdb/probe.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/probe.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/probe.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic SDT probe support for GDB.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-api.c ./gdb/proc-api.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-api.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/proc-api.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Machine independent support for Solaris /proc (process file system) for GDB.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Written by Michael Snyder at Cygnus Solutions.
    Based on work by Fred Fish, Stu Grossman, Geoff Noer, and others.
@@ -28,8 +28,6 @@
 #include "gdbcmd.h"
 #include "completer.h"
 
-#define _STRUCTURED_PROC 1
-
 #include <sys/types.h>
 #include <sys/procfs.h>
 #include <sys/proc.h>	/* for struct proc */
@@ -416,8 +414,9 @@ proc_prettyfprint_status (long flags, in
     }
 }
 
+void _initialize_proc_api ();
 void
-_initialize_proc_api (void)
+_initialize_proc_api ()
 {
   add_setshow_boolean_cmd ("procfs-trace", no_class, &procfs_trace, _("\
 Set tracing for /proc api calls."), _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/process-stratum-target.c ./gdb/process-stratum-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/process-stratum-target.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/process-stratum-target.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Abstract base class inherited by all process_stratum targets
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -29,7 +29,7 @@ struct address_space *
 process_stratum_target::thread_address_space (ptid_t ptid)
 {
   /* Fall-back to the "main" address space of the inferior.  */
-  inferior *inf = find_inferior_ptid (ptid);
+  inferior *inf = find_inferior_ptid (this, ptid);
 
   if (inf == NULL || inf->aspace == NULL)
     internal_error (__FILE__, __LINE__,
@@ -43,7 +43,7 @@ process_stratum_target::thread_address_s
 struct gdbarch *
 process_stratum_target::thread_architecture (ptid_t ptid)
 {
-  inferior *inf = find_inferior_ptid (ptid);
+  inferior *inf = find_inferior_ptid (this, ptid);
   gdb_assert (inf != NULL);
   return inf->gdbarch;
 }
@@ -77,9 +77,34 @@ process_stratum_target::has_registers ()
 }
 
 bool
-process_stratum_target::has_execution (ptid_t the_ptid)
+process_stratum_target::has_execution (inferior *inf)
 {
-  /* If there's no thread selected, then we can't make it run through
-     hoops.  */
-  return the_ptid != null_ptid;
+  /* If there's a process running already, we can't make it run
+     through hoops.  */
+  return inf->pid != 0;
+}
+
+/* See process-stratum-target.h.  */
+
+std::set<process_stratum_target *>
+all_non_exited_process_targets ()
+{
+  /* Inferiors may share targets.  To eliminate duplicates, use a set.  */
+  std::set<process_stratum_target *> targets;
+  for (inferior *inf : all_non_exited_inferiors ())
+    targets.insert (inf->process_target ());
+
+  return targets;
+}
+
+/* See process-stratum-target.h.  */
+
+void
+switch_to_target_no_thread (process_stratum_target *target)
+{
+  for (inferior *inf : all_inferiors (target))
+    {
+      switch_to_inferior_no_thread (inf);
+      break;
+    }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/process-stratum-target.h ./gdb/process-stratum-target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/process-stratum-target.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/process-stratum-target.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Abstract base class inherited by all process_stratum targets
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,6 +21,7 @@
 #define PROCESS_STRATUM_TARGET_H
 
 #include "target.h"
+#include <set>
 
 /* Abstract base class inherited by all process_stratum targets.  */
 
@@ -31,6 +32,16 @@ public:
 
   strata stratum () const final override { return process_stratum; }
 
+  /* Return a string representation of this target's open connection.
+     This string is used to distinguish different instances of a given
+     target type.  For example, when remote debugging, the target is
+     called "remote", but since we may have more than one remote
+     target open, connection_string() returns the connection serial
+     connection name, e.g., "localhost:10001", "192.168.0.1:20000",
+     etc.  This string is shown in several places, e.g., in "info
+     connections" and "info inferiors".  */
+  virtual const char *connection_string () { return nullptr; }
+
   /* We must default these because they must be implemented by any
      target that can run.  */
   bool can_async_p () override { return false; }
@@ -50,7 +61,35 @@ public:
   bool has_memory () override;
   bool has_stack () override;
   bool has_registers () override;
-  bool has_execution (ptid_t the_ptid) override;
+  bool has_execution (inferior *inf) override;
+
+  /* True if any thread is, or may be executing.  We need to track
+     this separately because until we fully sync the thread list, we
+     won't know whether the target is fully stopped, even if we see
+     stop events for all known threads, because any of those threads
+     may have spawned new threads we haven't heard of yet.  */
+  bool threads_executing = false;
+
+  /* The connection number.  Visible in "info connections".  */
+  int connection_number = 0;
 };
 
+/* Downcast TARGET to process_stratum_target.  */
+
+static inline process_stratum_target *
+as_process_stratum_target (target_ops *target)
+{
+  gdb_assert (target->stratum () == process_stratum);
+  return static_cast<process_stratum_target *> (target);
+}
+
+/* Return a collection of targets that have non-exited inferiors.  */
+
+extern std::set<process_stratum_target *> all_non_exited_process_targets ();
+
+/* Switch to the first inferior (and program space) of TARGET, and
+   switch to no thread selected.  */
+
+extern void switch_to_target_no_thread (process_stratum_target *target);
+
 #endif /* !defined (PROCESS_STRATUM_TARGET_H) */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-events.c ./gdb/proc-events.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-events.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/proc-events.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Machine-independent support for Solaris /proc (process file system)
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Written by Michael Snyder at Cygnus Solutions.
    Based on work by Fred Fish, Stu Grossman, Geoff Noer, and others.
@@ -30,8 +30,6 @@
 
 #include "defs.h"
 
-#define _STRUCTURED_PROC 1
-
 #include <sys/types.h>
 #include <sys/procfs.h>
 #include <sys/syscall.h>
@@ -762,8 +760,9 @@ proc_prettyprint_actionset (struct sigac
 {
 }
 
+void _initialize_proc_events ();
 void
-_initialize_proc_events (void)
+_initialize_proc_events ()
 {
   init_syscall_table ();
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-flags.c ./gdb/proc-flags.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-flags.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/proc-flags.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Machine independent support for Solaris /proc (process file system) for GDB.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
    Written by Michael Snyder at Cygnus Solutions.
    Based on work by Fred Fish, Stu Grossman, Geoff Noer, and others.
 
@@ -27,8 +27,6 @@
 
 #include "defs.h"
 
-#define _STRUCTURED_PROC 1
-
 #include <sys/types.h>
 #include <sys/procfs.h>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/procfs.c ./gdb/procfs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/procfs.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/procfs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Machine independent support for Solaris /proc (process file system) for GDB.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Written by Michael Snyder at Cygnus Solutions.
    Based on work by Fred Fish, Stu Grossman, Geoff Noer, and others.
@@ -33,8 +33,6 @@
 #include "nat/fork-inferior.h"
 #include "gdbarch.h"
 
-#define _STRUCTURED_PROC 1	/* Should be done by configure script.  */
-
 #include <sys/procfs.h>
 #include <sys/fault.h>
 #include <sys/syscall.h>
@@ -160,6 +158,8 @@ public:
 
   int can_use_hw_breakpoint (enum bptype, int, int) override;
   bool stopped_data_address (CORE_ADDR *) override;
+
+  void procfs_init_inferior (int pid);
 };
 
 static procfs_target the_procfs_target;
@@ -195,18 +195,6 @@ procfs_target::auxv_parse (gdb_byte **re
 
 /* =================== END, TARGET_OPS "MODULE" =================== */
 
-/* World Unification:
-
-   Put any typedefs, defines etc. here that are required for the
-   unification of code that handles different versions of /proc.  */
-
-enum { READ_WATCHFLAG  = WA_READ,
-       WRITE_WATCHFLAG = WA_WRITE,
-       EXEC_WATCHFLAG  = WA_EXEC,
-       AFTER_WATCHFLAG = WA_TRAPAFTER
-};
-
-
 /* =================== STRUCT PROCINFO "MODULE" =================== */
 
      /* FIXME: this comment will soon be out of date W.R.T. threads.  */
@@ -229,7 +217,6 @@ enum { READ_WATCHFLAG  = WA_READ,
    inferior's procinfo information.  */
 
 /* format strings for /proc paths */
-#define MAIN_PROC_NAME_FMT   "/proc/%d"
 #define CTL_PROC_NAME_FMT    "/proc/%d/ctl"
 #define AS_PROC_NAME_FMT     "/proc/%d/as"
 #define MAP_PROC_NAME_FMT    "/proc/%d/map"
@@ -385,14 +372,14 @@ open_procinfo_files (procinfo *pi, int w
      several.  Here is some rationale:
 
      There are several file descriptors that may need to be open
-       for any given process or LWP.  The ones we're interested in are:
+     for any given process or LWP.  The ones we're interested in are:
 	 - control	 (ctl)	  write-only	change the state
 	 - status	 (status) read-only	query the state
 	 - address space (as)	  read/write	access memory
 	 - map		 (map)	  read-only	virtual addr map
-       Most of these are opened lazily as they are needed.
-       The pathnames for the 'files' for an LWP look slightly
-       different from those of a first-class process:
+     Most of these are opened lazily as they are needed.
+     The pathnames for the 'files' for an LWP look slightly
+     different from those of a first-class process:
 	 Pathnames for a process (<proc-id>):
 	   /proc/<proc-id>/ctl
 	   /proc/<proc-id>/status
@@ -401,8 +388,8 @@ open_procinfo_files (procinfo *pi, int w
 	 Pathnames for an LWP (lwp-id):
 	   /proc/<proc-id>/lwp/<lwp-id>/lwpctl
 	   /proc/<proc-id>/lwp/<lwp-id>/lwpstatus
-       An LWP has no map or address space file descriptor, since
-       the memory map and address space are shared by all LWPs.  */
+     An LWP has no map or address space file descriptor, since
+     the memory map and address space are shared by all LWPs.  */
 
   /* In this case, there are several different file descriptors that
      we might be asked to open.  The control file descriptor will be
@@ -477,7 +464,7 @@ create_procinfo (int pid, int tid)
   /* Chain into list.  */
   if (tid == 0)
     {
-      xsnprintf (pi->pathname, sizeof (pi->pathname), MAIN_PROC_NAME_FMT, pid);
+      xsnprintf (pi->pathname, sizeof (pi->pathname), "/proc/%d", pid);
       pi->next = procinfo_list;
       procinfo_list = pi;
     }
@@ -590,7 +577,7 @@ dead_procinfo (procinfo *pi, const char
 
 /* =================== END, STRUCT PROCINFO "MODULE" =================== */
 
-/* ===================  /proc  "MODULE" =================== */
+/* ===================  /proc "MODULE" =================== */
 
 /* This "module" is the interface layer between the /proc system API
    and the gdb target vector functions.  This layer consists of access
@@ -598,9 +585,7 @@ dead_procinfo (procinfo *pi, const char
    need to use from the /proc API.
 
    The main motivation for this layer is to hide the fact that there
-   are two very different implementations of the /proc API.  Rather
-   than have a bunch of #ifdefs all thru the gdb target vector
-   functions, we do our best to hide them all in here.  */
+   were two very different implementations of the /proc API.  */
 
 static long proc_flags (procinfo *pi);
 static int proc_why (procinfo *pi);
@@ -929,10 +914,6 @@ proc_wait_for_stop (procinfo *pi)
      - clear current signal
      - abort the current system call
      - stop as soon as finished with system call
-     - (ioctl): set traced signal set
-     - (ioctl): set held   signal set
-     - (ioctl): set traced fault  set
-     - (ioctl): set start pc (vaddr)
 
    Always clears the current fault.  PI is the process or LWP to
    operate on.  If STEP is true, set the process or LWP to trap after
@@ -1315,6 +1296,7 @@ proc_set_current_signal (procinfo *pi, i
     char sinfo[sizeof (siginfo_t)];
   } arg;
   siginfo_t mysinfo;
+  process_stratum_target *wait_target;
   ptid_t wait_ptid;
   struct target_waitstatus wait_status;
 
@@ -1327,8 +1309,9 @@ proc_set_current_signal (procinfo *pi, i
     pi = find_procinfo_or_die (pi->pid, 0);
 
   /* The pointer is just a type alias.  */
-  get_last_target_status (&wait_ptid, &wait_status);
-  if (wait_ptid == inferior_ptid
+  get_last_target_status (&wait_target, &wait_ptid, &wait_status);
+  if (wait_target == &the_procfs_target
+      && wait_ptid == inferior_ptid
       && wait_status.kind == TARGET_WAITKIND_STOPPED
       && wait_status.value.sig == gdb_signal_from_host (signo)
       && proc_get_status (pi)
@@ -1565,92 +1548,10 @@ proc_set_watchpoint (procinfo *pi, CORE_
   return (write (pi->ctl_fd, &arg, sizeof (arg)) == sizeof (arg));
 }
 
-#if (defined(__i386__) || defined(__x86_64__)) && defined (sun)
-
-#include <sys/sysi86.h>
-
-/* The KEY is actually the value of the lower 16 bits of the GS
-   register for the LWP that we're interested in.  Returns the
-   matching ssh struct (LDT entry).  */
-
-static struct ssd *
-proc_get_LDT_entry (procinfo *pi, int key)	/* ARI: editCase function */
-{
-  static struct ssd *ldt_entry = NULL;
-  char pathname[MAX_PROC_NAME_SIZE];
-
-  /* Allocate space for one LDT entry.
-     This alloc must persist, because we return a pointer to it.  */
-  if (ldt_entry == NULL)
-    ldt_entry = XNEW (struct ssd);
-
-  /* Open the file descriptor for the LDT table.  */
-  xsnprintf (pathname, sizeof (pathname), "/proc/%d/ldt", pi->pid);
-  scoped_fd fd (open_with_retry (pathname, O_RDONLY));
-  if (fd.get () < 0)
-    {
-      proc_warn (pi, "proc_get_LDT_entry (open)", __LINE__);
-      return NULL;
-    }
-
-  /* Now 'read' thru the table, find a match and return it.  */
-  while (read (fd.get (), ldt_entry, sizeof (struct ssd))
-	 == sizeof (struct ssd))
-    {
-      if (ldt_entry->sel == 0
-	  && ldt_entry->bo  == 0
-	  && ldt_entry->acc1 == 0
-	  && ldt_entry->acc2 == 0)
-	break;	/* end of table */
-      /* If key matches, return this entry.  */
-      if (ldt_entry->sel == key)
-	return ldt_entry;
-    }
-  /* Loop ended, match not found.  */
-  return NULL;
-}
-
-/* Returns the pointer to the LDT entry of PTID.  */
-
-struct ssd *
-procfs_find_LDT_entry (ptid_t ptid)	/* ARI: editCase function */
-{
-  gdb_gregset_t *gregs;
-  int            key;
-  procinfo      *pi;
-
-  /* Find procinfo for the lwp.  */
-  pi = find_procinfo (ptid.pid (), ptid.lwp ());
-  if (pi == NULL)
-    {
-      warning (_("procfs_find_LDT_entry: could not find procinfo for %d:%ld."),
-	       ptid.pid (), ptid.lwp ());
-      return NULL;
-    }
-  /* get its general registers.  */
-  gregs = proc_get_gregs (pi);
-  if (gregs == NULL)
-    {
-      warning (_("procfs_find_LDT_entry: could not read gregs for %d:%ld."),
-	       ptid.pid (), ptid.lwp ());
-      return NULL;
-    }
-  /* Now extract the GS register's lower 16 bits.  */
-  key = (*gregs)[GS] & 0xffff;
-
-  /* Find the matching entry and return it.  */
-  return proc_get_LDT_entry (pi, key);
-}
-
-#endif
-
 /* =============== END, non-thread part of /proc  "MODULE" =============== */
 
 /* =================== Thread "MODULE" =================== */
 
-/* NOTE: you'll see more ifdefs and duplication of functions here,
-   since there is a different way to do threads on every OS.  */
-
 /* Returns the number of threads for the process.  */
 
 static int
@@ -1667,9 +1568,7 @@ proc_get_nthreads (procinfo *pi)
   return pi->prstatus.pr_nlwp;
 }
 
-/* LWP version.
-
-   Return the ID of the thread that had an event of interest.
+/* Return the ID of the thread that had an event of interest.
    (ie. the one that hit a breakpoint or other traced event).  All
    other things being equal, this should be the ID of a thread that is
    currently executing.  */
@@ -1693,8 +1592,7 @@ proc_get_current_thread (procinfo *pi)
 }
 
 /* Discover the IDs of all the threads within the process, and create
-   a procinfo for each of them (chained to the parent).  This
-   unfortunately requires a different method on every OS.  Returns
+   a procinfo for each of them (chained to the parent).  Returns
    non-zero for success, zero for failure.  */
 
 static int
@@ -1801,7 +1699,7 @@ proc_iterate_over_threads (procinfo *pi,
 /* Here are all of the gdb target vector functions and their
    friends.  */
 
-static ptid_t do_attach (ptid_t ptid);
+static void do_attach (ptid_t ptid);
 static void do_detach ();
 static void proc_trace_syscalls_1 (procinfo *pi, int syscallnum,
 				   int entry_or_exit, int mode, int from_tty);
@@ -1845,16 +1743,8 @@ procfs_debug_inferior (procinfo *pi)
     return __LINE__;
 
   /* Method for tracing exec syscalls.  */
-  /* GW: Rationale...
-     Not all systems with /proc have all the exec* syscalls with the same
-     names.  On the SGI, for example, there is no SYS_exec, but there
-     *is* a SYS_execv.  So, we try to account for that.  */
-
   traced_syscall_exits = XNEW (sysset_t);
   premptyset (traced_syscall_exits);
-#ifdef SYS_exec
-  praddset (traced_syscall_exits, SYS_exec);
-#endif
   praddset (traced_syscall_exits, SYS_execve);
   praddset (traced_syscall_exits, SYS_lwp_create);
   praddset (traced_syscall_exits, SYS_lwp_exit);
@@ -1870,7 +1760,6 @@ procfs_debug_inferior (procinfo *pi)
 void
 procfs_target::attach (const char *args, int from_tty)
 {
-  char *exec_file;
   int   pid;
 
   pid = parse_pid_to_attach (args);
@@ -1878,9 +1767,17 @@ procfs_target::attach (const char *args,
   if (pid == getpid ())
     error (_("Attaching GDB to itself is not a good idea..."));
 
+  /* Push the target if needed, ensure it gets un-pushed it if attach fails.  */
+  target_unpush_up unpusher;
+  if (!target_is_pushed (this))
+    {
+      push_target (this);
+      unpusher.reset (this);
+    }
+
   if (from_tty)
     {
-      exec_file = get_exec_file (0);
+      const char *exec_file = get_exec_file (0);
 
       if (exec_file)
 	printf_filtered (_("Attaching to program `%s', %s\n"),
@@ -1891,9 +1788,11 @@ procfs_target::attach (const char *args,
 
       fflush (stdout);
     }
-  inferior_ptid = do_attach (ptid_t (pid));
-  if (!target_is_pushed (this))
-    push_target (this);
+
+  do_attach (ptid_t (pid));
+
+  /* Everything went fine, keep the target pushed.  */
+  unpusher.release ();
 }
 
 void
@@ -1915,12 +1814,12 @@ procfs_target::detach (inferior *inf, in
 
   do_detach ();
 
-  inferior_ptid = null_ptid;
+  switch_to_no_thread ();
   detach_inferior (inf);
   maybe_unpush_target ();
 }
 
-static ptid_t
+static void
 do_attach (ptid_t ptid)
 {
   procinfo *pi;
@@ -1988,9 +1887,8 @@ do_attach (ptid_t ptid)
 
   /* Add it to gdb's thread list.  */
   ptid = ptid_t (pi->pid, lwpid, 0);
-  add_thread (ptid);
-
-  return ptid;
+  thread_info *thr = add_thread (&the_procfs_target, ptid);
+  switch_to_thread (thr);
 }
 
 static void
@@ -2038,10 +1936,6 @@ do_detach ()
 /* Fetch register REGNUM from the inferior.  If REGNUM is -1, do this
    for all registers.
 
-   ??? Is the following note still relevant?  We can't get individual
-   registers with the PT_GETREGS ptrace(2) request either, yet we
-   don't bother with caching at all in that case.
-
    NOTE: Since the /proc interface cannot give us individual
    registers, we pay no attention to REGNUM, and just fetch them all.
    This results in the possibility that we will do unnecessarily many
@@ -2141,42 +2035,6 @@ procfs_target::store_registers (struct r
     }
 }
 
-static int
-syscall_is_lwp_exit (procinfo *pi, int scall)
-{
-  if (scall == SYS_lwp_exit)
-    return 1;
-  return 0;
-}
-
-static int
-syscall_is_exit (procinfo *pi, int scall)
-{
-  if (scall == SYS_exit)
-    return 1;
-  return 0;
-}
-
-static int
-syscall_is_exec (procinfo *pi, int scall)
-{
-#ifdef SYS_exec
-  if (scall == SYS_exec)
-    return 1;
-#endif
-  if (scall == SYS_execve)
-    return 1;
-  return 0;
-}
-
-static int
-syscall_is_lwp_create (procinfo *pi, int scall)
-{
-  if (scall == SYS_lwp_create)
-    return 1;
-  return 0;
-}
-
 /* Retrieve the next stop event from the child process.  If child has
    not stopped yet, wait for it to stop.  Translate /proc eventcodes
    (or possibly wait eventcodes) into gdb internal event codes.
@@ -2202,7 +2060,11 @@ wait_again:
   retval   = ptid_t (-1);
 
   /* Find procinfo for main process.  */
-  pi = find_procinfo_or_die (inferior_ptid.pid (), 0);
+
+  /* procfs_target currently only supports one inferior.  */
+  inferior *inf = current_inferior ();
+
+  pi = find_procinfo_or_die (inf->pid, 0);
   if (pi)
     {
       /* We must assume that the status is stale now...  */
@@ -2229,10 +2091,10 @@ wait_again:
 	      wait_retval = ::wait (&wstat); /* "wait" for the child's exit.  */
 
 	      /* Wrong child?  */
-	      if (wait_retval != inferior_ptid.pid ())
+	      if (wait_retval != inf->pid)
 		error (_("procfs: couldn't stop "
 			 "process %d: wait returned %d."),
-		       inferior_ptid.pid (), wait_retval);
+		       inf->pid, wait_retval);
 	      /* FIXME: might I not just use waitpid?
 		 Or try find_procinfo to see if I know about this child?  */
 	      retval = ptid_t (wait_retval);
@@ -2281,19 +2143,17 @@ wait_again:
 		wstat = (what << 8) | 0177;
 		break;
 	      case PR_SYSENTRY:
-		if (syscall_is_lwp_exit (pi, what))
+		if (what == SYS_lwp_exit)
 		  {
 		    if (print_thread_events)
 		      printf_unfiltered (_("[%s exited]\n"),
 					 target_pid_to_str (retval).c_str ());
-		    delete_thread (find_thread_ptid (retval));
-		    status->kind = TARGET_WAITKIND_SPURIOUS;
-		    return retval;
+		    delete_thread (find_thread_ptid (this, retval));
+		    target_continue_no_signal (ptid);
+		    goto wait_again;
 		  }
-		else if (syscall_is_exit (pi, what))
+		else if (what == SYS_exit)
 		  {
-		    struct inferior *inf;
-
 		    /* Handle SYS_exit call only.  */
 		    /* Stopped at entry to SYS_exit.
 		       Make it runnable, resume it, then use
@@ -2308,14 +2168,13 @@ wait_again:
 		    if (!proc_run_process (pi, 0, 0))
 		      proc_error (pi, "target_wait, run_process", __LINE__);
 
-		    inf = find_inferior_pid (pi->pid);
 		    if (inf->attach_flag)
 		      {
 			/* Don't call wait: simulate waiting for exit,
 			   return a "success" exit code.  Bogus: what if
 			   it returns something else?  */
 			wstat = 0;
-			retval = inferior_ptid;  /* ? ? ? */
+			retval = ptid_t (inf->pid);  /* ? ? ? */
 		      }
 		    else
 		      {
@@ -2354,23 +2213,13 @@ wait_again:
 					   i, sysargs[i]);
 		      }
 
-		    if (status)
-		      {
-			/* How to exit gracefully, returning "unknown
-			   event".  */
-			status->kind = TARGET_WAITKIND_SPURIOUS;
-			return inferior_ptid;
-		      }
-		    else
-		      {
-			/* How to keep going without returning to wfi: */
-			target_continue_no_signal (ptid);
-			goto wait_again;
-		      }
+		    /* How to keep going without returning to wfi: */
+		    target_continue_no_signal (ptid);
+		    goto wait_again;
 		  }
 		break;
 	      case PR_SYSEXIT:
-		if (syscall_is_exec (pi, what))
+		if (what == SYS_execve)
 		  {
 		    /* Hopefully this is our own "fork-child" execing
 		       the real child.  Hoax this event into a trap, and
@@ -2378,7 +2227,7 @@ wait_again:
 		       address.  */
 		    wstat = (SIGTRAP << 8) | 0177;
 		  }
-		else if (syscall_is_lwp_create (pi, what))
+		else if (what == SYS_lwp_create)
 		  {
 		    /* This syscall is somewhat like fork/exec.  We
 		       will get the event twice: once for the parent
@@ -2395,31 +2244,21 @@ wait_again:
 
 		    temp_ptid = ptid_t (pi->pid, temp_tid, 0);
 		    /* If not in GDB's thread list, add it.  */
-		    if (!in_thread_list (temp_ptid))
-		      add_thread (temp_ptid);
+		    if (!in_thread_list (this, temp_ptid))
+		      add_thread (this, temp_ptid);
 
-		    /* Return to WFI, but tell it to immediately resume.  */
-		    status->kind = TARGET_WAITKIND_SPURIOUS;
-		    return inferior_ptid;
+		    target_continue_no_signal (ptid);
+		    goto wait_again;
 		  }
-		else if (syscall_is_lwp_exit (pi, what))
+		else if (what == SYS_lwp_exit)
 		  {
 		    if (print_thread_events)
 		      printf_unfiltered (_("[%s exited]\n"),
 					 target_pid_to_str (retval).c_str ());
-		    delete_thread (find_thread_ptid (retval));
+		    delete_thread (find_thread_ptid (this, retval));
 		    status->kind = TARGET_WAITKIND_SPURIOUS;
 		    return retval;
 		  }
-		else if (0)
-		  {
-		    /* FIXME:  Do we need to handle SYS_sproc,
-		       SYS_fork, or SYS_vfork here?  The old procfs
-		       seemed to use this event to handle threads on
-		       older (non-LWP) systems, where I'm assuming
-		       that threads were actually separate processes.
-		       Irix, maybe?  Anyway, low priority for now.  */
-		  }
 		else
 		  {
 		    printf_filtered (_("procfs: trapped on exit from "));
@@ -2440,8 +2279,8 @@ wait_again:
 					   i, sysargs[i]);
 		      }
 
-		    status->kind = TARGET_WAITKIND_SPURIOUS;
-		    return inferior_ptid;
+		    target_continue_no_signal (ptid);
+		    goto wait_again;
 		  }
 		break;
 	      case PR_REQUESTED:
@@ -2464,8 +2303,8 @@ wait_again:
 
 		    /* If not in GDB's thread list, add it.  */
 		    temp_ptid = ptid_t (pi->pid, temp_tid, 0);
-		    if (!in_thread_list (temp_ptid))
-		      add_thread (temp_ptid);
+		    if (!in_thread_list (this, temp_ptid))
+		      add_thread (this, temp_ptid);
 
 		    status->kind = TARGET_WAITKIND_STOPPED;
 		    status->value.sig = GDB_SIGNAL_0;
@@ -2492,13 +2331,12 @@ wait_again:
 	      /* Got this far without error: If retval isn't in the
 		 threads database, add it.  */
 	      if (retval.pid () > 0
-		  && retval != inferior_ptid
-		  && !in_thread_list (retval))
+		  && !in_thread_list (this, retval))
 		{
 		  /* We have a new thread.  We need to add it both to
 		     GDB's list and to our own.  If we don't create a
 		     procinfo, resume may be unhappy later.  */
-		  add_thread (retval);
+		  add_thread (this, retval);
 		  if (find_procinfo (retval.pid (),
 				     retval.lwp ()) == NULL)
 		    create_procinfo (retval.pid (),
@@ -2605,20 +2443,6 @@ invalidate_cache (procinfo *parent, proc
   /* About to run the child; invalidate caches and do any other
      cleanup.  */
 
-#if 0
-  if (pi->gregs_dirty)
-    if (parent == NULL || proc_get_current_thread (parent) != pi->tid)
-      if (!proc_set_gregs (pi))	/* flush gregs cache */
-	proc_warn (pi, "target_resume, set_gregs",
-		   __LINE__);
-  if (gdbarch_fp0_regnum (target_gdbarch ()) >= 0)
-    if (pi->fpregs_dirty)
-      if (parent == NULL || proc_get_current_thread (parent) != pi->tid)
-	if (!proc_set_fpregs (pi))	/* flush fpregs cache */
-	  proc_warn (pi, "target_resume, set_fpregs",
-		     __LINE__);
-#endif
-
   if (parent != NULL)
     {
       /* The presence of a parent indicates that this is an LWP.
@@ -2629,36 +2453,12 @@ invalidate_cache (procinfo *parent, proc
     }
   pi->gregs_valid   = 0;
   pi->fpregs_valid  = 0;
-#if 0
-  pi->gregs_dirty   = 0;
-  pi->fpregs_dirty  = 0;
-#endif
   pi->status_valid  = 0;
   pi->threads_valid = 0;
 
   return 0;
 }
 
-#if 0
-/* A callback function for iterate_over_threads.  Find the
-   asynchronous signal thread, and make it runnable.  See if that
-   helps matters any.  */
-
-static int
-make_signal_thread_runnable (procinfo *process, procinfo *pi, void *ptr)
-{
-#ifdef PR_ASLWP
-  if (proc_flags (pi) & PR_ASLWP)
-    {
-      if (!proc_run_process (pi, 0, -1))
-	proc_error (pi, "make_signal_thread_runnable", __LINE__);
-      return 1;
-    }
-#endif
-  return 0;
-}
-#endif
-
 /* Make the child process runnable.  Normally we will then call
    procfs_wait and wait for it to stop again (unless gdb is async).
 
@@ -2675,21 +2475,14 @@ procfs_target::resume (ptid_t ptid, int
   procinfo *pi, *thread;
   int native_signo;
 
-  /* 2.1:
-     prrun.prflags |= PRSVADDR;
-     prrun.pr_vaddr = $PC;	   set resume address
-     prrun.prflags |= PRSTRACE;    trace signals in pr_trace (all)
-     prrun.prflags |= PRSFAULT;    trace faults in pr_fault (all but PAGE)
-     prrun.prflags |= PRCFAULT;    clear current fault.
-
-     PRSTRACE and PRSFAULT can be done by other means
-	(proc_trace_signals, proc_trace_faults)
-     PRSVADDR is unnecessary.
-     PRCFAULT may be replaced by a PIOCCFAULT call (proc_clear_current_fault)
+  /* FIXME: Check/reword.  */
+
+  /* prrun.prflags |= PRCFAULT;    clear current fault.
+     PRCFAULT may be replaced by a PCCFAULT call (proc_clear_current_fault)
      This basically leaves PRSTEP and PRCSIG.
-     PRCSIG is like PIOCSSIG (proc_clear_current_signal).
+     PRCSIG is like PCSSIG (proc_clear_current_signal).
      So basically PR_STEP is the sole argument that must be passed
-     to proc_run_process (for use in the prrun struct by ioctl).  */
+     to proc_run_process.  */
 
   /* Find procinfo for main process.  */
   pi = find_procinfo_or_die (inferior_ptid.pid (), 0);
@@ -2724,11 +2517,6 @@ procfs_target::resume (ptid_t ptid, int
 		 others.  Set the child process's PR_ASYNC flag.  */
 	      if (!proc_set_async (pi))
 		proc_error (pi, "target_resume, set_async", __LINE__);
-#if 0
-	      proc_iterate_over_threads (pi,
-					 make_signal_thread_runnable,
-					 NULL);
-#endif
 	      pi = thread;	/* Substitute the thread's procinfo
 				   for run.  */
 	    }
@@ -2851,18 +2639,13 @@ procfs_target::mourn_inferior ()
    whatever is necessary to make the child ready to be debugged, and
    then wait for the child to synchronize.  */
 
-static void
-procfs_init_inferior (struct target_ops *ops, int pid)
+void
+procfs_target::procfs_init_inferior (int pid)
 {
   procinfo *pi;
   int fail;
   int lwpid;
 
-  /* This routine called on the parent side (GDB side)
-     after GDB forks the inferior.  */
-  if (!target_is_pushed (ops))
-    push_target (ops);
-
   pi = create_procinfo (pid, 0);
   if (pi == NULL)
     perror (_("procfs: out of memory in 'init_inferior'"));
@@ -2878,8 +2661,6 @@ procfs_init_inferior (struct target_ops
     procfs_notice_signals
     prfillset (fault)
     prdelset (FLTPAGE)
-    PIOCWSTOP
-    PIOCSFAULT
     */
 
   /* If not stopped yet, wait for it to stop.  */
@@ -2922,8 +2703,7 @@ procfs_init_inferior (struct target_ops
   /* We already have a main thread registered in the thread table at
      this point, but it didn't have any lwp info yet.  Notify the core
      about it.  This changes inferior_ptid as well.  */
-  thread_change_ptid (ptid_t (pid),
-		      ptid_t (pid, lwpid, 0));
+  thread_change_ptid (this, ptid_t (pid), ptid_t (pid, lwpid, 0));
 
   gdb_startup_inferior (pid, START_INFERIOR_TRAPS_EXPECTED);
 }
@@ -2959,17 +2739,8 @@ procfs_set_exec_trap (void)
       _exit (127);
     }
 
-  /* Method for tracing exec syscalls.  */
-  /* GW: Rationale...
-     Not all systems with /proc have all the exec* syscalls with the same
-     names.  On the SGI, for example, there is no SYS_exec, but there
-     *is* a SYS_execv.  So, we try to account for that.  */
-
   exitset = XNEW (sysset_t);
   premptyset (exitset);
-#ifdef SYS_exec
-  praddset (exitset, SYS_exec);
-#endif
   praddset (exitset, SYS_execve);
 
   if (!proc_set_traced_sysexit (pi, exitset))
@@ -2996,6 +2767,13 @@ procfs_set_exec_trap (void)
   /*destroy_procinfo (pi);*/
 }
 
+/* Dummy function to be sure fork_inferior uses fork(2) and not vfork(2).
+   This avoids a possible deadlock gdb and its vfork'ed child.  */
+static void
+procfs_pre_trace (void)
+{
+}
+
 /* This function is called BEFORE gdb forks the inferior process.  Its
    only real responsibility is to set things up for the fork, and tell
    GDB which two functions to call after the fork (one for the parent,
@@ -3084,15 +2862,19 @@ procfs_target::create_inferior (const ch
       shell_file = tryname;
     }
 
+  if (!target_is_pushed (this))
+    push_target (this);
+
   pid = fork_inferior (exec_file, allargs, env, procfs_set_exec_trap,
-		       NULL, NULL, shell_file, NULL);
+		       NULL, procfs_pre_trace, shell_file, NULL);
 
   /* We have something that executes now.  We'll be running through
      the shell at this point (if startup-with-shell is true), but the
      pid shouldn't change.  */
-  add_thread_silent (ptid_t (pid));
+  thread_info *thr = add_thread_silent (this, ptid_t (pid));
+  switch_to_thread (thr);
 
-  procfs_init_inferior (this, pid);
+  procfs_init_inferior (pid);
 }
 
 /* An observer for the "inferior_created" event.  */
@@ -3109,9 +2891,9 @@ procfs_notice_thread (procinfo *pi, proc
 {
   ptid_t gdb_threadid = ptid_t (pi->pid, thread->tid, 0);
 
-  thread_info *thr = find_thread_ptid (gdb_threadid);
+  thread_info *thr = find_thread_ptid (&the_procfs_target, gdb_threadid);
   if (thr == NULL || thr->state == THREAD_EXITED)
-    add_thread (gdb_threadid);
+    add_thread (&the_procfs_target, gdb_threadid);
 
   return 0;
 }
@@ -3219,22 +3001,22 @@ procfs_set_watchpoint (ptid_t ptid, CORE
     {
       switch (rwflag) {		/* FIXME: need an enum!  */
       case hw_write:		/* default watchpoint (write) */
-	pflags = WRITE_WATCHFLAG;
+	pflags = WA_WRITE;
 	break;
       case hw_read:		/* read watchpoint */
-	pflags = READ_WATCHFLAG;
+	pflags = WA_READ;
 	break;
       case hw_access:		/* access watchpoint */
-	pflags = READ_WATCHFLAG | WRITE_WATCHFLAG;
+	pflags = WA_READ | WA_WRITE;
 	break;
       case hw_execute:		/* execution HW breakpoint */
-	pflags = EXEC_WATCHFLAG;
+	pflags = WA_EXEC;
 	break;
       default:			/* Something weird.  Return error.  */
 	return -1;
       }
       if (after)		/* Stop after r/w access is completed.  */
-	pflags |= AFTER_WATCHFLAG;
+	pflags |= WA_TRAPAFTER;
     }
 
   if (!proc_set_watchpoint (pi, addr, len, pflags))
@@ -3253,11 +3035,7 @@ procfs_set_watchpoint (ptid_t ptid, CORE
 /* Return non-zero if we can set a hardware watchpoint of type TYPE.  TYPE
    is one of bp_hardware_watchpoint, bp_read_watchpoint, bp_write_watchpoint,
    or bp_hardware_watchpoint.  CNT is the number of watchpoints used so
-   far.
-
-   Note:  procfs_can_use_hw_breakpoint() is not yet used by all
-   procfs.c targets due to the fact that some of them still define
-   target_can_use_hardware_watchpoint.  */
+   far.  */
 
 int
 procfs_target::can_use_hw_breakpoint (enum bptype type, int cnt, int othertype)
@@ -3698,8 +3476,9 @@ proc_untrace_sysexit_cmd (const char *ar
   proc_trace_syscalls (args, from_tty, PR_SYSEXIT, FLAG_RESET);
 }
 
+void _initialize_procfs ();
 void
-_initialize_procfs (void)
+_initialize_procfs ()
 {
   gdb::observers::inferior_created.attach (procfs_inferior_created);
 
@@ -3740,7 +3519,7 @@ procfs_do_thread_registers (bfd *obfd, p
 			    char *note_data, int *note_size,
 			    enum gdb_signal stop_signal)
 {
-  struct regcache *regcache = get_thread_regcache (ptid);
+  struct regcache *regcache = get_thread_regcache (&the_procfs_target, ptid);
   gdb_gregset_t gregs;
   gdb_fpregset_t fpregs;
   unsigned long merged_pid;
@@ -3752,8 +3531,6 @@ procfs_do_thread_registers (bfd *obfd, p
      once it is implemented in this platform:
      gdbarch_iterate_over_regset_sections().  */
 
-  scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
-  inferior_ptid = ptid;
   target_fetch_registers (regcache, -1);
 
   fill_gregset (regcache, &gregs, -1);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/procfs.h ./gdb/procfs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/procfs.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/procfs.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native debugging support for procfs targets.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,10 +25,4 @@
 
 extern ptid_t procfs_first_available (void);
 
-#if (defined (__i386__) || defined (__x86_64__)) && defined (sun)
-struct ssd;
-
-extern struct ssd *procfs_find_LDT_entry (ptid_t);
-#endif
-
 #endif /* PROCFS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-service.c ./gdb/proc-service.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-service.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/proc-service.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* <proc_service.h> implementation.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -70,17 +70,22 @@ static ps_err_e
 ps_xfer_memory (const struct ps_prochandle *ph, psaddr_t addr,
 		gdb_byte *buf, size_t len, int write)
 {
-  scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
-  int ret;
-  CORE_ADDR core_addr = ps_addr_to_core_addr (addr);
+  scoped_restore_current_inferior restore_inferior;
+  set_current_inferior (ph->thread->inf);
 
+  scoped_restore_current_program_space restore_current_progspace;
+  set_current_program_space (ph->thread->inf->pspace);
+
+  scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
   inferior_ptid = ph->thread->ptid;
 
+  CORE_ADDR core_addr = ps_addr_to_core_addr (addr);
+
+  int ret;
   if (write)
     ret = target_write_memory (core_addr, buf, len);
   else
     ret = target_read_memory (core_addr, buf, len);
-
   return (ret == 0 ? PS_OK : PS_ERR);
 }
 
@@ -129,16 +134,15 @@ ps_pdwrite (struct ps_prochandle *ph, ps
 /* Get a regcache for LWPID using its inferior's "main" architecture,
    which is the register set libthread_db expects to be using.  In
    multi-arch debugging scenarios, the thread's architecture may
-   differ from the inferior's "main" architecture.  E.g., in the Cell
-   combined debugger, if GDB happens to interrupt SPU code, the
-   thread's architecture is SPU, and the main architecture is
-   PowerPC.  */
+   differ from the inferior's "main" architecture.  */
 
 static struct regcache *
 get_ps_regcache (struct ps_prochandle *ph, lwpid_t lwpid)
 {
   inferior *inf = ph->thread->inf;
-  return get_thread_arch_regcache (ptid_t (inf->pid, lwpid), inf->gdbarch);
+  return get_thread_arch_regcache (inf->process_target (),
+				   ptid_t (inf->pid, lwpid),
+				   inf->gdbarch);
 }
 
 /* Get the general registers of LWP LWPID within the target process PH
@@ -208,8 +212,9 @@ ps_getpid (struct ps_prochandle *ph)
   return ph->thread->ptid.pid ();
 }
 
+void _initialize_proc_service ();
 void
-_initialize_proc_service (void)
+_initialize_proc_service ()
 {
   /* This function solely exists to make sure this module is linked
      into the final binary.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-service.list ./gdb/proc-service.list
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-service.list	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/proc-service.list	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* -Wl,--dynamic-list symbols exported for libthread_db.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-utils.h ./gdb/proc-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-utils.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/proc-utils.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Machine independent support for SVR4 /proc (process file system) for GDB.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-why.c ./gdb/proc-why.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/proc-why.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/proc-why.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Machine-independent support for Solaris /proc (process file system)
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Written by Michael Snyder at Cygnus Solutions.
    Based on work by Fred Fish, Stu Grossman, Geoff Noer, and others.
@@ -20,8 +20,6 @@
 
 #include "defs.h"
 
-#define _STRUCTURED_PROC 1
-
 #include <sys/types.h>
 #include <sys/procfs.h>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/producer.c ./gdb/producer.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/producer.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/producer.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Producer string parsers for GDB.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -125,6 +125,15 @@ producer_is_icc (const char *producer, i
   return false;
 }
 
+/* See producer.h.  */
+
+bool
+producer_is_llvm (const char *producer)
+{
+  return ((producer != NULL) && (startswith (producer, "clang ")
+                                 || startswith (producer, " F90 Flang ")));
+}
+
 #if defined GDB_SELF_TEST
 namespace selftests {
 namespace producer {
@@ -203,11 +212,28 @@ Version 18.0 Beta";
     SELF_CHECK (producer_is_gcc (gnu_exp, &major, &minor)
 		&& major == 5 && minor == 0);
   }
+
+  {
+    static const char clang_llvm_exp[] = "clang version 12.0.0 (CLANG: bld#8)";
+    int major = 0, minor = 0;
+    SELF_CHECK (!producer_is_icc (clang_llvm_exp, NULL, NULL));
+    SELF_CHECK (!producer_is_gcc (clang_llvm_exp, &major, &minor));
+    SELF_CHECK (producer_is_llvm (clang_llvm_exp));
+  }
+
+  {
+    static const char flang_llvm_exp[] = " F90 Flang - 1.5 2017-05-01";
+    int major = 0, minor = 0;
+    SELF_CHECK (!producer_is_icc (flang_llvm_exp, NULL, NULL));
+    SELF_CHECK (!producer_is_gcc (flang_llvm_exp, &major, &minor));
+    SELF_CHECK (producer_is_llvm (flang_llvm_exp));
+  }
 }
 }
 }
 #endif
 
+void _initialize_producer ();
 void
 _initialize_producer ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/producer.h ./gdb/producer.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/producer.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/producer.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Producer string parsers for GDB.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -52,4 +52,8 @@ extern int producer_is_gcc (const char *
        running on Intel(R) 64, Version 18.0 Beta ....".  */
 extern bool producer_is_icc (const char *producer, int *major, int *minor);
 
+/* Returns true if the given PRODUCER string is LLVM (clang/flang) or
+   false otherwise.*/
+extern bool producer_is_llvm (const char *producer);
+
 #endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/progspace-and-thread.c ./gdb/progspace-and-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/progspace-and-thread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/progspace-and-thread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,8 +25,9 @@ void
 switch_to_program_space_and_thread (program_space *pspace)
 {
   inferior *inf = find_inferior_for_program_space (pspace);
+  gdb_assert (inf != nullptr);
 
-  if (inf != NULL && inf->pid != 0)
+  if (inf->pid != 0)
     {
       thread_info *tp = any_live_thread_of_inferior (inf);
 
@@ -39,6 +40,5 @@ switch_to_program_space_and_thread (prog
 	}
     }
 
-  switch_to_no_thread ();
-  set_current_program_space (pspace);
+  switch_to_inferior_no_thread (inf);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/progspace-and-thread.h ./gdb/progspace-and-thread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/progspace-and-thread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/progspace-and-thread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/progspace.c ./gdb/progspace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/progspace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/progspace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Program and address space management, for GDB, the GNU debugger.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -23,14 +23,16 @@
 #include "arch-utils.h"
 #include "gdbcore.h"
 #include "solib.h"
+#include "solist.h"
 #include "gdbthread.h"
 #include "inferior.h"
+#include <algorithm>
 
 /* The last program space number assigned.  */
 int last_program_space_num = 0;
 
 /* The head of the program spaces list.  */
-struct program_space *program_spaces;
+std::vector<struct program_space *> program_spaces;
 
 /* Pointer to the current program space.  */
 struct program_space *current_program_space;
@@ -78,7 +80,7 @@ maybe_new_address_space (void)
   if (shared_aspace)
     {
       /* Just return the first in the list.  */
-      return program_spaces->aspace;
+      return program_spaces[0]->aspace;
     }
 
   return new_address_space ();
@@ -107,36 +109,38 @@ init_address_spaces (void)
 
 
 
-/* Adds a new empty program space to the program space list, and binds
-   it to ASPACE.  Returns the pointer to the new object.  */
+/* Remove a program space from the program spaces list.  */
+
+static void
+remove_program_space (program_space *pspace)
+{
+  gdb_assert (pspace != NULL);
+
+  auto iter = std::find (program_spaces.begin (), program_spaces.end (),
+			 pspace);
+  gdb_assert (iter != program_spaces.end ());
+  program_spaces.erase (iter);
+}
+
+/* See progspace.h.  */
 
 program_space::program_space (address_space *aspace_)
-: num (++last_program_space_num), aspace (aspace_)
+  : num (++last_program_space_num),
+    aspace (aspace_)
 {
   program_space_alloc_data (this);
 
-  if (program_spaces == NULL)
-    program_spaces = this;
-  else
-    {
-      struct program_space *last;
-
-      for (last = program_spaces; last->next != NULL; last = last->next)
-	;
-      last->next = this;
-    }
+  program_spaces.push_back (this);
 }
 
-/* Releases program space PSPACE, and all its contents (shared
-   libraries, objfiles, and any other references to the PSPACE in
-   other modules).  It is an internal error to call this when PSPACE
-   is the current program space, since there should always be a
-   program space.  */
+/* See progspace.h.  */
 
 program_space::~program_space ()
 {
   gdb_assert (this != current_program_space);
 
+  remove_program_space (this);
+
   scoped_restore_current_program_space restore_pspace;
 
   set_current_program_space (this);
@@ -145,6 +149,9 @@ program_space::~program_space ()
   no_shared_libraries (NULL, 0);
   exec_close ();
   free_all_objfiles ();
+  /* Defer breakpoint re-set because we don't want to create new
+     locations for this pspace which we're tearing down.  */
+  clear_symtab_users (SYMFILE_DEFER_BP_RESET);
   if (!gdbarch_has_shared_address_space (target_gdbarch ()))
     free_address_space (this->aspace);
   clear_section_table (&this->target_sections);
@@ -153,6 +160,70 @@ program_space::~program_space ()
   program_space_free_data (this);
 }
 
+/* See progspace.h.  */
+
+void
+program_space::free_all_objfiles ()
+{
+  /* Any objfile reference would become stale.  */
+  for (struct so_list *so : current_program_space->solibs ())
+    gdb_assert (so->objfile == NULL);
+
+  while (!objfiles_list.empty ())
+    objfiles_list.front ()->unlink ();
+}
+
+/* See progspace.h.  */
+
+void
+program_space::add_objfile (std::shared_ptr<objfile> &&objfile,
+			    struct objfile *before)
+{
+  if (before == nullptr)
+    objfiles_list.push_back (std::move (objfile));
+  else
+    {
+      auto iter = std::find_if (objfiles_list.begin (), objfiles_list.end (),
+				[=] (const std::shared_ptr<::objfile> &objf)
+				{
+				  return objf.get () == before;
+				});
+      gdb_assert (iter != objfiles_list.end ());
+      objfiles_list.insert (iter, std::move (objfile));
+    }
+}
+
+/* See progspace.h.  */
+
+void
+program_space::remove_objfile (struct objfile *objfile)
+{
+  /* Removing an objfile from the objfile list invalidates any frame
+     that was built using frame info found in the objfile.  Reinit the
+     frame cache to get rid of any frame that might otherwise
+     reference stale info.  */
+  reinit_frame_cache ();
+
+  auto iter = std::find_if (objfiles_list.begin (), objfiles_list.end (),
+			    [=] (const std::shared_ptr<::objfile> &objf)
+			    {
+			      return objf.get () == objfile;
+			    });
+  gdb_assert (iter != objfiles_list.end ());
+  objfiles_list.erase (iter);
+
+  if (objfile == symfile_object_file)
+    symfile_object_file = NULL;
+}
+
+/* See progspace.h.  */
+
+next_adapter<struct so_list>
+program_space::solibs () const
+{
+  return next_adapter<struct so_list> (this->so_list);
+}
+
 /* Copies program space SRC to DEST.  Copies the main executable file,
    and the main symbol file.  Returns DEST.  */
 
@@ -202,33 +273,6 @@ program_space_empty_p (struct program_sp
   return 1;
 }
 
-/* Remove a program space from the program spaces list and release it.  It is
-   an error to call this function while PSPACE is the current program space. */
-
-void
-delete_program_space (struct program_space *pspace)
-{
-  struct program_space *ss, **ss_link;
-  gdb_assert (pspace != NULL);
-  gdb_assert (pspace != current_program_space);
-
-  ss = program_spaces;
-  ss_link = &program_spaces;
-  while (ss != NULL)
-    {
-      if (ss == pspace)
-	{
-	  *ss_link = ss->next;
-	  break;
-	}
-
-      ss_link = &ss->next;
-      ss = *ss_link;
-    }
-
-  delete pspace;
-}
-
 /* Prints the list of program spaces and their details on UIOUT.  If
    REQUESTED is not -1, it's the ID of the pspace that should be
    printed.  Otherwise, all spaces are printed.  */
@@ -236,11 +280,10 @@ delete_program_space (struct program_spa
 static void
 print_program_space (struct ui_out *uiout, int requested)
 {
-  struct program_space *pspace;
   int count = 0;
 
   /* Compute number of pspaces we will print.  */
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     {
       if (requested != -1 && pspace->num != requested)
 	continue;
@@ -257,9 +300,8 @@ print_program_space (struct ui_out *uiou
   uiout->table_header (17, ui_left, "exec", "Executable");
   uiout->table_body ();
 
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     {
-      struct inferior *inf;
       int printed_header;
 
       if (requested != -1 && requested != pspace->num)
@@ -285,9 +327,16 @@ print_program_space (struct ui_out *uiou
 	 e.g., both parent/child inferiors in a vfork, or, on targets
 	 that share pspaces between inferiors.  */
       printed_header = 0;
-      for (inf = inferior_list; inf; inf = inf->next)
+
+      /* We're going to switch inferiors.  */
+      scoped_restore_current_thread restore_thread;
+
+      for (inferior *inf : all_inferiors ())
 	if (inf->pspace == pspace)
 	  {
+	    /* Switch to inferior in order to call target methods.  */
+	    switch_to_inferior_no_thread (inf);
+
 	    if (!printed_header)
 	      {
 		printed_header = 1;
@@ -310,9 +359,7 @@ print_program_space (struct ui_out *uiou
 static int
 valid_program_space_id (int num)
 {
-  struct program_space *pspace;
-
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     if (pspace->num == num)
       return 1;
 
@@ -338,20 +385,6 @@ maintenance_info_program_spaces_command
   print_program_space (current_uiout, requested);
 }
 
-/* Simply returns the count of program spaces.  */
-
-int
-number_of_program_spaces (void)
-{
-  struct program_space *pspace;
-  int count = 0;
-
-  ALL_PSPACES (pspace)
-    count++;
-
-  return count;
-}
-
 /* Update all program spaces matching to address spaces.  The user may
    have created several program spaces, and loaded executables into
    them before connecting to the target interface that will create the
@@ -367,7 +400,6 @@ void
 update_address_spaces (void)
 {
   int shared_aspace = gdbarch_has_shared_address_space (target_gdbarch ());
-  struct program_space *pspace;
   struct inferior *inf;
 
   init_address_spaces ();
@@ -377,11 +409,11 @@ update_address_spaces (void)
       struct address_space *aspace = new_address_space ();
 
       free_address_space (current_program_space->aspace);
-      ALL_PSPACES (pspace)
+      for (struct program_space *pspace : program_spaces)
 	pspace->aspace = aspace;
     }
   else
-    ALL_PSPACES (pspace)
+    for (struct program_space *pspace : program_spaces)
       {
 	free_address_space (pspace->aspace);
 	pspace->aspace = new_address_space ();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/progspace.h ./gdb/progspace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/progspace.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/progspace.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Program and address space management, for GDB, the GNU debugger.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,6 +27,8 @@
 #include "registry.h"
 #include "gdbsupport/next-iterator.h"
 #include "gdbsupport/safe-iterator.h"
+#include <list>
+#include <vector>
 
 struct target_ops;
 struct bfd;
@@ -36,6 +38,80 @@ struct exec;
 struct address_space;
 struct program_space_data;
 struct address_space_data;
+struct so_list;
+
+typedef std::list<std::shared_ptr<objfile>> objfile_list;
+
+/* An iterator that wraps an iterator over std::shared_ptr<objfile>,
+   and dereferences the returned object.  This is useful for iterating
+   over a list of shared pointers and returning raw pointers -- which
+   helped avoid touching a lot of code when changing how objfiles are
+   managed.  */
+
+class unwrapping_objfile_iterator
+{
+public:
+
+  typedef unwrapping_objfile_iterator self_type;
+  typedef typename ::objfile *value_type;
+  typedef typename ::objfile &reference;
+  typedef typename ::objfile **pointer;
+  typedef typename objfile_list::iterator::iterator_category iterator_category;
+  typedef typename objfile_list::iterator::difference_type difference_type;
+
+  unwrapping_objfile_iterator (const objfile_list::iterator &iter)
+    : m_iter (iter)
+  {
+  }
+
+  objfile *operator* () const
+  {
+    return m_iter->get ();
+  }
+
+  unwrapping_objfile_iterator operator++ ()
+  {
+    ++m_iter;
+    return *this;
+  }
+
+  bool operator!= (const unwrapping_objfile_iterator &other) const
+  {
+    return m_iter != other.m_iter;
+  }
+
+private:
+
+  /* The underlying iterator.  */
+  objfile_list::iterator m_iter;
+};
+
+
+/* A range that returns unwrapping_objfile_iterators.  */
+
+struct unwrapping_objfile_range
+{
+  typedef unwrapping_objfile_iterator iterator;
+
+  unwrapping_objfile_range (objfile_list &ol)
+    : m_list (ol)
+  {
+  }
+
+  iterator begin () const
+  {
+    return iterator (m_list.begin ());
+  }
+
+  iterator end () const
+  {
+    return iterator (m_list.end ());
+  }
+
+private:
+
+  objfile_list &m_list;
+};
 
 /* A program space represents a symbolic view of an address space.
    Roughly speaking, it holds all the data associated with a
@@ -135,10 +211,18 @@ struct address_space_data;
 
 struct program_space
 {
-  program_space (address_space *aspace_);
+  /* Constructs a new empty program space, binds it to ASPACE, and
+     adds it to the program space list.  */
+  explicit program_space (address_space *aspace);
+
+  /* Releases a program space, and all its contents (shared libraries,
+     objfiles, and any other references to the program space in other
+     modules).  It is an internal error to call this when the program
+     space is the current program space, since there should always be
+     a program space.  */
   ~program_space ();
 
-  typedef next_adapter<struct objfile> objfiles_range;
+  typedef unwrapping_objfile_range objfiles_range;
 
   /* Return an iterable object that can be used to iterate over all
      objfiles.  The basic use is in a foreach, like:
@@ -146,12 +230,10 @@ struct program_space
      for (objfile *objf : pspace->objfiles ()) { ... }  */
   objfiles_range objfiles ()
   {
-    return objfiles_range (objfiles_head);
+    return unwrapping_objfile_range (objfiles_list);
   }
 
-  typedef next_adapter<struct objfile,
-		       basic_safe_iterator<next_iterator<objfile>>>
-    objfiles_safe_range;
+  typedef basic_safe_range<objfiles_range> objfiles_safe_range;
 
   /* An iterable object that can be used to iterate over all objfiles.
      The basic use is in a foreach, like:
@@ -162,11 +244,34 @@ struct program_space
      deleted during iteration.  */
   objfiles_safe_range objfiles_safe ()
   {
-    return objfiles_safe_range (objfiles_head);
+    return objfiles_safe_range (objfiles_list);
+  }
+
+  /* Add OBJFILE to the list of objfiles, putting it just before
+     BEFORE.  If BEFORE is nullptr, it will go at the end of the
+     list.  */
+  void add_objfile (std::shared_ptr<objfile> &&objfile,
+		    struct objfile *before);
+
+  /* Remove OBJFILE from the list of objfiles.  */
+  void remove_objfile (struct objfile *objfile);
+
+  /* Return true if there is more than one object file loaded; false
+     otherwise.  */
+  bool multi_objfile_p () const
+  {
+    return objfiles_list.size () > 1;
   }
 
-  /* Pointer to next in linked list.  */
-  struct program_space *next = NULL;
+  /* Free all the objfiles associated with this program space.  */
+  void free_all_objfiles ();
+
+  /* Return a range adapter for iterating over all the solibs in this
+     program space.  Use it like:
+
+     for (so_list *so : pspace->solibs ()) { ... }  */
+  next_adapter<struct so_list> solibs () const;
+
 
   /* Unique ID number.  */
   int num = 0;
@@ -215,9 +320,8 @@ struct program_space
      (e.g. the argument to the "symbol-file" or "file" command).  */
   struct objfile *symfile_object_file = NULL;
 
-  /* All known objfiles are kept in a linked list.  This points to
-     the head of this list.  */
-  struct objfile *objfiles_head = NULL;
+  /* All known objfiles are kept in a linked list.  */
+  std::list<std::shared_ptr<objfile>> objfiles_list;
 
   /* The set of target sections matching the sections mapped into
      this program space.  Managed by both exec_ops and solib.c.  */
@@ -258,30 +362,16 @@ struct address_space
 
 #define symfile_objfile current_program_space->symfile_object_file
 
-/* All known objfiles are kept in a linked list.  This points to the
-   root of this list.  */
-#define object_files current_program_space->objfiles_head
-
 /* The set of target sections matching the sections mapped into the
    current program space.  */
 #define current_target_sections (&current_program_space->target_sections)
 
 /* The list of all program spaces.  There's always at least one.  */
-extern struct program_space *program_spaces;
+extern std::vector<struct program_space *>program_spaces;
 
 /* The current program space.  This is always non-null.  */
 extern struct program_space *current_program_space;
 
-#define ALL_PSPACES(pspace) \
-  for ((pspace) = program_spaces; (pspace) != NULL; (pspace) = (pspace)->next)
-
-/* Remove a program space from the program spaces list and release it.  It is
-   an error to call this function while PSPACE is the current program space. */
-extern void delete_program_space (struct program_space *pspace);
-
-/* Returns the number of program spaces listed.  */
-extern int number_of_program_spaces (void);
-
 /* Returns true iff there's no inferior bound to PSPACE.  */
 extern int program_space_empty_p (struct program_space *pspace);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/prologue-value.c ./gdb/prologue-value.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/prologue-value.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/prologue-value.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Prologue value handling for GDB.
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/prologue-value.h ./gdb/prologue-value.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/prologue-value.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/prologue-value.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Interface to prologue value handling for GDB.
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/psympriv.h ./gdb/psympriv.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/psympriv.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/psympriv.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Private partial symbol table definitions.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -55,8 +55,7 @@ struct partial_symbol
      the offsets provided in OBJFILE.  */
   CORE_ADDR address (const struct objfile *objfile) const
   {
-    return (ginfo.value.address
-	    + ANOFFSET (objfile->section_offsets, ginfo.section));
+    return ginfo.value.address + objfile->section_offsets[ginfo.section];
   }
 
   /* Set the address of this partial symbol.  The address must be
@@ -100,11 +99,65 @@ enum psymtab_search_status
    They are all chained on partial symtab lists.
 
    Even after the source file has been read into a symtab, the
-   partial_symtab remains around.  They are allocated on an obstack,
-   objfile_obstack.  */
+   partial_symtab remains around.  */
 
 struct partial_symtab
 {
+  /* Allocate a new partial symbol table associated with OBJFILE.
+     FILENAME (which must be non-NULL) is the filename of this partial
+     symbol table; it is copied into the appropriate storage.  The
+     partial symtab will also be installed using
+     psymtab_storage::install.  */
+
+  partial_symtab (const char *filename, struct objfile *objfile)
+    ATTRIBUTE_NONNULL (2) ATTRIBUTE_NONNULL (3);
+
+  /* Like the above, but also sets the initial text low and text high
+     from the ADDR argument, and sets the global- and
+     static-offsets.  */
+
+  partial_symtab (const char *filename, struct objfile *objfile,
+		  CORE_ADDR addr)
+    ATTRIBUTE_NONNULL (2) ATTRIBUTE_NONNULL (3);
+
+  virtual ~partial_symtab ()
+  {
+  }
+
+  /* Psymtab expansion is done in two steps:
+     - a call to read_symtab
+     - while that call is in progress, calls to expand_psymtab can be made,
+       both for this psymtab, and its dependencies.
+     This makes a distinction between a toplevel psymtab (for which both
+     read_symtab and expand_psymtab will be called) and a non-toplevel
+     psymtab (for which only expand_psymtab will be called). The
+     distinction can be used f.i. to do things before and after all
+     dependencies of a top-level psymtab have been expanded.
+
+     Read the full symbol table corresponding to this partial symbol
+     table.  Typically calls expand_psymtab.  */
+  virtual void read_symtab (struct objfile *) = 0;
+
+  /* Expand the full symbol table for this partial symbol table.  Typically
+     calls expand_dependencies.  */
+  virtual void expand_psymtab (struct objfile *) = 0;
+
+  /* Ensure that all the dependencies are read in.  Calls
+     expand_psymtab for each non-shared dependency.  */
+  void expand_dependencies (struct objfile *);
+
+  /* Return true if the symtab corresponding to this psymtab has been
+     read in in the context of this objfile.  */
+  virtual bool readin_p (struct objfile *) const = 0;
+
+  /* Return a pointer to the compunit allocated for this source file
+     in the context of this objfile.
+
+     Return nullptr if the compunit was not read in or if there was no
+     symtab.  */
+  virtual struct compunit_symtab *get_compunit_symtab
+    (struct objfile *) const = 0;
+
   /* Return the raw low text address of this partial_symtab.  */
   CORE_ADDR raw_text_low () const
   {
@@ -120,15 +173,13 @@ struct partial_symtab
   /* Return the relocated low text address of this partial_symtab.  */
   CORE_ADDR text_low (struct objfile *objfile) const
   {
-    return m_text_low + ANOFFSET (objfile->section_offsets,
-				  SECT_OFF_TEXT (objfile));
+    return m_text_low + objfile->text_section_offset ();
   }
 
   /* Return the relocated high text address of this partial_symtab.  */
   CORE_ADDR text_high (struct objfile *objfile) const
   {
-    return m_text_high + ANOFFSET (objfile->section_offsets,
-				   SECT_OFF_TEXT (objfile));
+    return m_text_high + objfile->text_section_offset ();
   }
 
   /* Set the low text address of this partial_symtab.  */
@@ -148,21 +199,21 @@ struct partial_symtab
 
   /* Chain of all existing partial symtabs.  */
 
-  struct partial_symtab *next;
+  struct partial_symtab *next = nullptr;
 
   /* Name of the source file which this partial_symtab defines,
      or if the psymtab is anonymous then a descriptive name for
      debugging purposes, or "".  It must not be NULL.  */
 
-  const char *filename;
+  const char *filename = nullptr;
 
   /* Full path of the source file.  NULL if not known.  */
 
-  char *fullname;
+  char *fullname = nullptr;
 
   /* Directory in which it was compiled, or NULL if we don't know.  */
 
-  const char *dirname;
+  const char *dirname = nullptr;
 
   /* Range of text addresses covered by this file; texthigh is the
      beginning of the next section.  Do not use if PSYMTABS_ADDRMAP_SUPPORTED
@@ -171,8 +222,8 @@ struct partial_symtab
      text_low_valid and text_high_valid fields; these are located later
      in this structure for better packing.  */
 
-  CORE_ADDR m_text_low;
-  CORE_ADDR m_text_high;
+  CORE_ADDR m_text_low = 0;
+  CORE_ADDR m_text_high = 0;
 
   /* If NULL, this is an ordinary partial symbol table.
 
@@ -201,7 +252,7 @@ struct partial_symtab
      The choice of which one should be canonical is left to the
      debuginfo reader; it can be arbitrary.  */
 
-  struct partial_symtab *user;
+  struct partial_symtab *user = nullptr;
 
   /* Array of pointers to all of the partial_symtab's which this one
      depends on.  Since this array can only be set to previous or
@@ -212,17 +263,17 @@ struct partial_symtab
      in foo.h may use type numbers defined in foo.c.  For other debugging
      formats there may be no need to use dependencies.  */
 
-  struct partial_symtab **dependencies;
+  struct partial_symtab **dependencies = nullptr;
 
-  int number_of_dependencies;
+  int number_of_dependencies = 0;
 
   /* Global symbol list.  This list will be sorted after readin to
      improve access.  Binary search will be the usual method of
      finding a symbol within it.  globals_offset is an integer offset
      within global_psymbols[].  */
 
-  int globals_offset;
-  int n_global_syms;
+  int globals_offset = 0;
+  int n_global_syms = 0;
 
   /* Static symbol list.  This list will *not* be sorted after readin;
      to find a symbol in it, exhaustive search must be used.  This is
@@ -232,24 +283,18 @@ struct partial_symtab
      how long errors take).  This is an offset and size within
      static_psymbols[].  */
 
-  int statics_offset;
-  int n_static_syms;
-
-  /* Non-zero if the symtab corresponding to this psymtab has been
-     readin.  This is located here so that this structure packs better
-     on 64-bit systems.  */
-
-  unsigned char readin;
+  int statics_offset = 0;
+  int n_static_syms = 0;
 
   /* True iff objfile->psymtabs_addrmap is properly populated for this
      partial_symtab.  For discontiguous overlapping psymtabs is the only usable
      info in PSYMTABS_ADDRMAP.  */
 
-  unsigned char psymtabs_addrmap_supported;
+  bool psymtabs_addrmap_supported = false;
 
   /* True if the name of this partial symtab is not a source file name.  */
 
-  unsigned char anonymous;
+  bool anonymous = false;
 
   /* A flag that is temporarily used when searching psymtabs.  */
 
@@ -259,23 +304,89 @@ struct partial_symtab
 
   unsigned int text_low_valid : 1;
   unsigned int text_high_valid : 1;
+};
+
+/* A partial symtab that tracks the "readin" and "compunit_symtab"
+   information in the ordinary way -- by storing it directly in this
+   object.  */
+struct standard_psymtab : public partial_symtab
+{
+  standard_psymtab (const char *filename, struct objfile *objfile)
+    : partial_symtab (filename, objfile)
+  {
+  }
+
+  standard_psymtab (const char *filename, struct objfile *objfile,
+		    CORE_ADDR addr)
+    : partial_symtab (filename, objfile, addr)
+  {
+  }
+
+  bool readin_p (struct objfile *) const override
+  {
+    return readin;
+  }
+
+  struct compunit_symtab *get_compunit_symtab (struct objfile *) const override
+  {
+    return compunit_symtab;
+  }
+
+  /* True if the symtab corresponding to this psymtab has been
+     readin.  */
+
+  bool readin = false;
 
   /* Pointer to compunit eventually allocated for this source file, 0 if
      !readin or if we haven't looked for the symtab after it was readin.  */
 
-  struct compunit_symtab *compunit_symtab;
+  struct compunit_symtab *compunit_symtab = nullptr;
+};
+
+/* A partial_symtab that works in the historical db way.  This should
+   not be used in new code, but exists to transition the somewhat
+   unmaintained "legacy" debug formats.  */
+
+struct legacy_psymtab : public standard_psymtab
+{
+  legacy_psymtab (const char *filename, struct objfile *objfile)
+    : standard_psymtab (filename, objfile)
+  {
+  }
+
+  legacy_psymtab (const char *filename, struct objfile *objfile,
+		  CORE_ADDR addr)
+    : standard_psymtab (filename, objfile, addr)
+  {
+  }
+
+  void read_symtab (struct objfile *objf) override
+  {
+    if (legacy_read_symtab)
+      (*legacy_read_symtab) (this, objf);
+  }
+
+  void expand_psymtab (struct objfile *objf) override
+  {
+    (*legacy_expand_psymtab) (this, objf);
+  }
 
   /* Pointer to function which will read in the symtab corresponding to
      this psymtab.  */
 
-  void (*read_symtab) (struct partial_symtab *, struct objfile *);
+  void (*legacy_read_symtab) (legacy_psymtab *, struct objfile *) = nullptr;
+
+  /* Pointer to function which will actually expand this psymtab into
+     a full symtab.  */
+
+  void (*legacy_expand_psymtab) (legacy_psymtab *, struct objfile *) = nullptr;
 
   /* Information that lets read_symtab() locate the part of the symbol table
      that this psymtab corresponds to.  This information is private to the
      format-dependent symbol reading routines.  For further detail examine
      the various symbol reading modules.  */
 
-  void *read_symtab_private;
+  void *read_symtab_private = nullptr;
 };
 
 /* Specify whether a partial psymbol should be allocated on the global
@@ -314,33 +425,22 @@ extern void add_psymbol_to_list (gdb::st
 				 enum language language,
 				 struct objfile *objfile);
 
+/* Add a symbol to the partial symbol table of OBJFILE.  The psymbol
+   must be fully constructed, and the names must be set and intern'd
+   as appropriate.  */
+
+extern void add_psymbol_to_list (const partial_symbol &psym,
+				 psymbol_placement where,
+				 struct objfile *objfile);
+
 /* Initialize storage for partial symbols.  If partial symbol storage
    has already been initialized, this does nothing.  TOTAL_SYMBOLS is
    an estimate of how many symbols there will be.  */
 
 extern void init_psymbol_list (struct objfile *objfile, int total_symbols);
 
-extern struct partial_symtab *start_psymtab_common (struct objfile *,
-						    const char *, CORE_ADDR);
-
 extern void end_psymtab_common (struct objfile *, struct partial_symtab *);
 
-/* Allocate a new partial symbol table associated with OBJFILE.
-   FILENAME (which must be non-NULL) is the filename of this partial
-   symbol table; it is copied into the appropriate storage.  A new
-   partial symbol table is returned; aside from "next" and "filename",
-   its fields are initialized to zero.  */
-
-extern struct partial_symtab *allocate_psymtab (const char *filename,
-						struct objfile *objfile)
-  ATTRIBUTE_NONNULL (1);
-
-static inline void
-discard_psymtab (struct objfile *objfile, struct partial_symtab *pst)
-{
-  objfile->partial_symtabs->discard_psymtab (pst);
-}
-
 /* Used when recording partial symbol tables.  On destruction,
    discards any partial symbol tables that have been built.  However,
    the tables can be kept by calling the "keep" method.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/psymtab.c ./gdb/psymtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/psymtab.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/psymtab.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Partial symbol tables.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -39,7 +39,8 @@
 
 static struct partial_symbol *lookup_partial_symbol (struct objfile *,
 						     struct partial_symtab *,
-						     const char *, int,
+						     const lookup_name_info &,
+						     int,
 						     domain_enum);
 
 static const char *psymtab_to_fullname (struct partial_symtab *ps);
@@ -64,29 +65,22 @@ psymtab_storage::psymtab_storage ()
 
 psymtab_storage::~psymtab_storage ()
 {
+  partial_symtab *iter = psymtabs;
+  while (iter != nullptr)
+    {
+      partial_symtab *next = iter->next;
+      delete iter;
+      iter = next;
+    }
 }
 
 /* See psymtab.h.  */
 
-struct partial_symtab *
-psymtab_storage::allocate_psymtab ()
+void
+psymtab_storage::install_psymtab (partial_symtab *pst)
 {
-  struct partial_symtab *psymtab;
-
-  if (free_psymtabs != nullptr)
-    {
-      psymtab = free_psymtabs;
-      free_psymtabs = psymtab->next;
-    }
-  else
-    psymtab = XOBNEW (obstack (), struct partial_symtab);
-
-  memset (psymtab, 0, sizeof (struct partial_symtab));
-
-  psymtab->next = psymtabs;
-  psymtabs = psymtab;
-
-  return psymtab;
+  pst->next = psymtabs;
+  psymtabs = pst;
 }
 
 
@@ -133,12 +127,13 @@ partial_map_expand_apply (struct objfile
 {
   struct compunit_symtab *last_made = objfile->compunit_symtabs;
 
-  /* Shared psymtabs should never be seen here.  Instead they should
-     be handled properly by the caller.  */
-  gdb_assert (pst->user == NULL);
+  /* We may see a shared psymtab here, but we want to expand the
+     outermost symtab.  */
+  while (pst->user != nullptr)
+    pst = pst->user;
 
   /* Don't visit already-expanded psymtabs.  */
-  if (pst->readin)
+  if (pst->readin_p (objfile))
     return 0;
 
   /* This may expand more than one symtab, and we want to iterate over
@@ -163,17 +158,15 @@ psym_map_symtabs_matching_filename
 
   for (partial_symtab *pst : require_partial_symbols (objfile, true))
     {
-      /* We can skip shared psymtabs here, because any file name will be
-	 attached to the unshared psymtab.  */
-      if (pst->user != NULL)
-	continue;
-
       /* Anonymous psymtabs don't have a file name.  */
       if (pst->anonymous)
 	continue;
 
       if (compare_filenames_for_search (pst->filename, name))
 	{
+	  while (pst->user)
+	    pst = pst->user;
+
 	  if (partial_map_expand_apply (objfile, name, real_path,
 					pst, callback))
 	    return true;
@@ -316,8 +309,7 @@ find_pc_sect_psymtab (struct objfile *ob
   if (objfile->partial_symtabs->psymtabs != NULL
       && objfile->partial_symtabs->psymtabs_addrmap != NULL)
     {
-      CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
-				     SECT_OFF_TEXT (objfile));
+      CORE_ADDR baseaddr = objfile->text_section_offset ();
 
       struct partial_symtab *pst
 	= ((struct partial_symtab *)
@@ -393,15 +385,15 @@ psym_find_pc_sect_compunit_symtab (struc
 						    msymbol);
   if (ps != NULL)
     {
-      if (warn_if_readin && ps->readin)
+      if (warn_if_readin && ps->readin_p (objfile))
 	/* Might want to error() here (in case symtab is corrupt and
 	   will cause a core dump), but maybe we can successfully
 	   continue, so let's not.  */
 	warning (_("\
 (Internal error: pc %s in read in psymtab, but not in symtab.)\n"),
-		 paddress (get_objfile_arch (objfile), pc));
+		 paddress (objfile->arch (), pc));
       psymtab_to_symtab (objfile, ps);
-      return ps->compunit_symtab;
+      return ps->get_compunit_symtab (objfile);
     }
   return NULL;
 }
@@ -490,10 +482,13 @@ psym_lookup_symbol (struct objfile *objf
 
   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
 
+  lookup_name_info psym_lookup_name = lookup_name.make_ignore_params ();
+
   for (partial_symtab *ps : require_partial_symbols (objfile, true))
     {
-      if (!ps->readin && lookup_partial_symbol (objfile, ps, name,
-						psymtab_index, domain))
+      if (!ps->readin_p (objfile)
+	  && lookup_partial_symbol (objfile, ps, psym_lookup_name,
+				    psymtab_index, domain))
 	{
 	  struct symbol *sym, *with_opaque = NULL;
 	  struct compunit_symtab *stab = psymtab_to_symtab (objfile, ps);
@@ -525,15 +520,45 @@ psym_lookup_symbol (struct objfile *objf
   return stab_best;
 }
 
+/* Psymtab version of lookup_global_symbol_language.  See its definition in
+   the definition of quick_symbol_functions in symfile.h.  */
+
+static enum language
+psym_lookup_global_symbol_language (struct objfile *objfile, const char *name,
+				    domain_enum domain, bool *symbol_found_p)
+{
+  *symbol_found_p = false;
+  if (objfile->sf == NULL)
+    return language_unknown;
+
+  lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
+
+  for (partial_symtab *ps : require_partial_symbols (objfile, true))
+    {
+      struct partial_symbol *psym;
+      if (ps->readin_p (objfile))
+	continue;
+
+      psym = lookup_partial_symbol (objfile, ps, lookup_name, 1, domain);
+      if (psym)
+	{
+	  *symbol_found_p = true;
+	  return psym->ginfo.language ();
+	}
+    }
+
+  return language_unknown;
+}
+
 /* Returns true if PSYM matches LOOKUP_NAME.  */
 
 static bool
 psymbol_name_matches (partial_symbol *psym,
 		      const lookup_name_info &lookup_name)
 {
-  const language_defn *lang = language_def (psym->ginfo.language);
+  const language_defn *lang = language_def (psym->ginfo.language ());
   symbol_name_matcher_ftype *name_match
-    = get_symbol_name_matcher (lang, lookup_name);
+    = lang->get_symbol_name_matcher (lookup_name);
   return name_match (psym->ginfo.search_name (), lookup_name, NULL);
 }
 
@@ -581,9 +606,8 @@ match_partial_symbol (struct objfile *ob
 	  center = bottom + (top - bottom) / 2;
 	  gdb_assert (center < top);
 
-	  enum language lang = (*center)->ginfo.language;
-	  const char *lang_ln
-	    = name.language_lookup_name (lang).c_str ();
+	  enum language lang = (*center)->ginfo.language ();
+	  const char *lang_ln = name.language_lookup_name (lang);
 
 	  if (ordered_compare ((*center)->ginfo.search_name (),
 			       lang_ln) >= 0)
@@ -596,7 +620,7 @@ match_partial_symbol (struct objfile *ob
       while (top <= real_top
 	     && psymbol_name_matches (*top, name))
 	{
-	  if (symbol_matches_domain ((*top)->ginfo.language,
+	  if (symbol_matches_domain ((*top)->ginfo.language (),
 				     (*top)->domain, domain))
 	    return *top;
 	  top++;
@@ -610,7 +634,7 @@ match_partial_symbol (struct objfile *ob
     {
       for (psym = start; psym < start + length; psym++)
 	{
-	  if (symbol_matches_domain ((*psym)->ginfo.language,
+	  if (symbol_matches_domain ((*psym)->ginfo.language (),
 				     (*psym)->domain, domain)
 	      && psymbol_name_matches (*psym, name))
 	    return *psym;
@@ -620,42 +644,14 @@ match_partial_symbol (struct objfile *ob
   return NULL;
 }
 
-/* Returns the name used to search psymtabs.  Unlike symtabs, psymtabs do
-   not contain any method/function instance information (since this would
-   force reading type information while reading psymtabs).  Therefore,
-   if NAME contains overload information, it must be stripped before searching
-   psymtabs.  */
-
-static gdb::unique_xmalloc_ptr<char>
-psymtab_search_name (const char *name)
-{
-  switch (current_language->la_language)
-    {
-    case language_cplus:
-      {
-	if (strchr (name, '('))
-	  {
-	    gdb::unique_xmalloc_ptr<char> ret = cp_remove_params (name);
-
-	    if (ret)
-	      return ret;
-	  }
-      }
-      break;
-
-    default:
-      break;
-    }
-
-  return make_unique_xstrdup (name);
-}
-
-/* Look, in partial_symtab PST, for symbol whose natural name is NAME.
-   Check the global symbols if GLOBAL, the static symbols if not.  */
+/* Look, in partial_symtab PST, for symbol whose natural name is
+   LOOKUP_NAME.  Check the global symbols if GLOBAL, the static
+   symbols if not.  */
 
 static struct partial_symbol *
 lookup_partial_symbol (struct objfile *objfile,
-		       struct partial_symtab *pst, const char *name,
+		       struct partial_symtab *pst,
+		       const lookup_name_info &lookup_name,
 		       int global, domain_enum domain)
 {
   struct partial_symbol **start, **psym;
@@ -666,10 +662,6 @@ lookup_partial_symbol (struct objfile *o
   if (length == 0)
     return NULL;
 
-  gdb::unique_xmalloc_ptr<char> search_name = psymtab_search_name (name);
-
-  lookup_name_info lookup_name (search_name.get (), symbol_name_match_type::FULL);
-
   start = (global ?
 	   &objfile->partial_symtabs->global_psymbols[pst->globals_offset] :
 	   &objfile->partial_symtabs->static_psymbols[pst->statics_offset]);
@@ -690,11 +682,11 @@ lookup_partial_symbol (struct objfile *o
       while (top > bottom)
 	{
 	  center = bottom + (top - bottom) / 2;
-	  if (!(center < top))
-	    internal_error (__FILE__, __LINE__,
-			    _("failed internal consistency check"));
+
+	  gdb_assert (center < top);
+
 	  if (strcmp_iw_ordered ((*center)->ginfo.search_name (),
-				 search_name.get ()) >= 0)
+				 lookup_name.c_str ()) >= 0)
 	    {
 	      top = center;
 	    }
@@ -703,9 +695,8 @@ lookup_partial_symbol (struct objfile *o
 	      bottom = center + 1;
 	    }
 	}
-      if (!(top == bottom))
-	internal_error (__FILE__, __LINE__,
-			_("failed internal consistency check"));
+
+      gdb_assert (top == bottom);
 
       /* For `case_sensitivity == case_sensitive_off' strcmp_iw_ordered will
 	 search more exactly than what matches SYMBOL_MATCHES_SEARCH_NAME.  */
@@ -719,7 +710,7 @@ lookup_partial_symbol (struct objfile *o
       while (top <= real_top && symbol_matches_search_name (&(*top)->ginfo,
 							    lookup_name))
 	{
-	  if (symbol_matches_domain ((*top)->ginfo.language,
+	  if (symbol_matches_domain ((*top)->ginfo.language (),
 				     (*top)->domain, domain))
 	    return *top;
 	  top++;
@@ -733,7 +724,7 @@ lookup_partial_symbol (struct objfile *o
     {
       for (psym = start; psym < start + length; psym++)
 	{
-	  if (symbol_matches_domain ((*psym)->ginfo.language,
+	  if (symbol_matches_domain ((*psym)->ginfo.language (),
 				     (*psym)->domain, domain)
 	      && symbol_matches_search_name (&(*psym)->ginfo, lookup_name))
 	    return *psym;
@@ -758,18 +749,25 @@ psymtab_to_symtab (struct objfile *objfi
     pst = pst->user;
 
   /* If it's been looked up before, return it.  */
-  if (pst->compunit_symtab)
-    return pst->compunit_symtab;
+  if (pst->get_compunit_symtab (objfile))
+    return pst->get_compunit_symtab (objfile);
 
   /* If it has not yet been read in, read it.  */
-  if (!pst->readin)
+  if (!pst->readin_p (objfile))
     {
       scoped_restore decrementer = increment_reading_symtab ();
 
-      (*pst->read_symtab) (pst, objfile);
+      if (info_verbose)
+	{
+	  printf_filtered (_("Reading in symbols for %s...\n"),
+			   pst->filename);
+	  gdb_flush (gdb_stdout);
+	}
+
+      pst->read_symtab (objfile);
     }
 
-  return pst->compunit_symtab;
+  return pst->get_compunit_symtab (objfile);
 }
 
 /* Psymtab version of find_last_source_symtab.  See its definition in
@@ -792,7 +790,7 @@ psym_find_last_source_symtab (struct obj
 
   if (cs_pst)
     {
-      if (cs_pst->readin)
+      if (cs_pst->readin_p (ofp))
 	{
 	  internal_error (__FILE__, __LINE__,
 			  _("select_source_symtab: "
@@ -835,7 +833,7 @@ print_partial_symbols (struct gdbarch *g
   while (count-- > 0)
     {
       QUIT;
-      fprintf_filtered (outfile, "    `%s'", (*p)->ginfo.name);
+      fprintf_filtered (outfile, "    `%s'", (*p)->ginfo.linkage_name ());
       if ((*p)->ginfo.demangled_name () != NULL)
 	{
 	  fprintf_filtered (outfile, "  `%s'",
@@ -928,7 +926,7 @@ static void
 dump_psymtab (struct objfile *objfile, struct partial_symtab *psymtab,
 	      struct ui_file *outfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   int i;
 
   if (psymtab->anonymous)
@@ -949,13 +947,11 @@ dump_psymtab (struct objfile *objfile, s
   gdb_print_host_address (objfile, outfile);
   fprintf_filtered (outfile, ")\n");
 
-  if (psymtab->readin)
+  if (psymtab->readin_p (objfile))
     {
       fprintf_filtered (outfile,
 			"  Full symtab was read (at ");
-      gdb_print_host_address (psymtab->compunit_symtab, outfile);
-      fprintf_filtered (outfile, " by function at ");
-      gdb_print_host_address (psymtab->read_symtab, outfile);
+      gdb_print_host_address (psymtab->get_compunit_symtab (objfile), outfile);
       fprintf_filtered (outfile, ")\n");
     }
 
@@ -1009,7 +1005,7 @@ psym_print_stats (struct objfile *objfil
   i = 0;
   for (partial_symtab *ps : require_partial_symbols (objfile, true))
     {
-      if (ps->readin == 0)
+      if (!ps->readin_p (objfile))
 	i++;
     }
   printf_filtered (_("  Number of psym tables (not yet expanded): %d\n"), i);
@@ -1047,14 +1043,17 @@ static void
 psym_expand_symtabs_for_function (struct objfile *objfile,
 				  const char *func_name)
 {
+  lookup_name_info base_lookup (func_name, symbol_name_match_type::FULL);
+  lookup_name_info lookup_name = base_lookup.make_ignore_params ();
+
   for (partial_symtab *ps : require_partial_symbols (objfile, true))
     {
-      if (ps->readin)
+      if (ps->readin_p (objfile))
 	continue;
 
-      if ((lookup_partial_symbol (objfile, ps, func_name, 1, VAR_DOMAIN)
+      if ((lookup_partial_symbol (objfile, ps, lookup_name, 1, VAR_DOMAIN)
 	   != NULL)
-	  || (lookup_partial_symbol (objfile, ps, func_name, 0, VAR_DOMAIN)
+	  || (lookup_partial_symbol (objfile, ps, lookup_name, 0, VAR_DOMAIN)
 	      != NULL))
 	psymtab_to_symtab (objfile, ps);
     }
@@ -1104,7 +1103,7 @@ psym_map_symbol_filenames (struct objfil
     {
       const char *fullname;
 
-      if (ps->readin)
+      if (ps->readin_p (objfile))
 	continue;
 
       /* We can skip shared psymtabs here, because any file name will be
@@ -1184,7 +1183,7 @@ psym_map_matching_symbols
   for (partial_symtab *ps : require_partial_symbols (objfile, true))
     {
       QUIT;
-      if (ps->readin
+      if (ps->readin_p (objfile)
 	  || match_partial_symbol (objfile, ps, global, name, domain,
 				   ordered_compare))
 	{
@@ -1304,13 +1303,11 @@ static void
 psym_expand_symtabs_matching
   (struct objfile *objfile,
    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
-   const lookup_name_info &lookup_name_in,
+   const lookup_name_info *lookup_name,
    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
    enum search_domain domain)
 {
-  lookup_name_info lookup_name = lookup_name_in.make_ignore_params ();
-
   /* Clear the search flags.  */
   for (partial_symtab *ps : require_partial_symbols (objfile, true))
     ps->searched_flag = PST_NOT_SEARCHED;
@@ -1319,7 +1316,7 @@ psym_expand_symtabs_matching
     {
       QUIT;
 
-      if (ps->readin)
+      if (ps->readin_p (objfile))
 	continue;
 
       /* We skip shared psymtabs because file-matching doesn't apply
@@ -1347,8 +1344,10 @@ psym_expand_symtabs_matching
 	    continue;
 	}
 
-      if (recursively_search_psymtabs (ps, objfile, domain,
-				       lookup_name, symbol_matcher))
+      if ((symbol_matcher == NULL && lookup_name == NULL)
+	  || recursively_search_psymtabs (ps, objfile, domain,
+					  lookup_name->make_ignore_params (),
+					  symbol_matcher))
 	{
 	  struct compunit_symtab *symtab =
 	    psymtab_to_symtab (objfile, ps);
@@ -1451,6 +1450,7 @@ const struct quick_symbol_functions psym
   psym_forget_cached_source_info,
   psym_map_symtabs_matching_filename,
   psym_lookup_symbol,
+  psym_lookup_global_symbol_language,
   psym_print_stats,
   psym_dump,
   psym_expand_symtabs_for_function,
@@ -1483,24 +1483,30 @@ sort_pst_symbols (struct objfile *objfil
     });
 }
 
-/* Allocate and partially fill a partial symtab.  It will be
-   completely filled at the end of the symbol list.
+/* Partially fill a partial symtab.  It will be completely filled at
+   the end of the symbol list.  */
 
-   FILENAME is the name of the symbol-file we are reading from.  */
-
-struct partial_symtab *
-start_psymtab_common (struct objfile *objfile,
-		      const char *filename,
-		      CORE_ADDR textlow)
+partial_symtab::partial_symtab (const char *filename,
+				struct objfile *objfile,
+				CORE_ADDR textlow)
+  : partial_symtab (filename, objfile)
 {
-  struct partial_symtab *psymtab;
+  set_text_low (textlow);
+  set_text_high (raw_text_low ()); /* default */
+
+  auto *v1 = new std::vector<partial_symbol *>;
+  objfile->partial_symtabs->current_global_psymbols.push_back (v1);
+  auto *v2 = new std::vector<partial_symbol *>;
+  objfile->partial_symtabs->current_static_psymbols.push_back (v2);
+}
+
+/* Concat vectors V1 and V2.  */
 
-  psymtab = allocate_psymtab (filename, objfile);
-  psymtab->set_text_low (textlow);
-  psymtab->set_text_high (psymtab->raw_text_low ()); /* default */
-  psymtab->globals_offset = objfile->partial_symtabs->global_psymbols.size ();
-  psymtab->statics_offset = objfile->partial_symtabs->static_psymbols.size ();
-  return psymtab;
+static void
+concat (std::vector<partial_symbol *> *v1, std::vector<partial_symbol *> *v2)
+{
+  v1->insert (v1->end (), v2->begin (), v2->end ());
+  v2->clear ();
 }
 
 /* Perform "finishing up" operations of a partial symtab.  */
@@ -1508,10 +1514,26 @@ start_psymtab_common (struct objfile *ob
 void
 end_psymtab_common (struct objfile *objfile, struct partial_symtab *pst)
 {
-  pst->n_global_syms = (objfile->partial_symtabs->global_psymbols.size ()
-			- pst->globals_offset);
-  pst->n_static_syms = (objfile->partial_symtabs->static_psymbols.size ()
-			- pst->statics_offset);
+  pst->globals_offset = objfile->partial_symtabs->global_psymbols.size ();
+  pst->statics_offset = objfile->partial_symtabs->static_psymbols.size ();
+
+  auto *current_global_psymbols
+    = objfile->partial_symtabs->current_global_psymbols.back ();
+  auto *current_static_psymbols
+    = objfile->partial_symtabs->current_static_psymbols.back ();
+  objfile->partial_symtabs->current_global_psymbols.pop_back ();
+  objfile->partial_symtabs->current_static_psymbols.pop_back ();
+
+  pst->n_global_syms
+    = current_global_psymbols->size ();
+  pst->n_static_syms
+    = current_static_psymbols->size ();
+
+  concat (&objfile->partial_symtabs->global_psymbols, current_global_psymbols);
+  concat (&objfile->partial_symtabs->static_psymbols, current_static_psymbols);
+
+  delete current_global_psymbols;
+  delete current_static_psymbols;
 
   sort_pst_symbols (objfile, pst);
 }
@@ -1526,7 +1548,7 @@ psymbol_hash (const void *addr, int leng
 {
   unsigned long h = 0;
   struct partial_symbol *psymbol = (struct partial_symbol *) addr;
-  unsigned int lang = psymbol->ginfo.language;
+  unsigned int lang = psymbol->ginfo.language ();
   unsigned int domain = psymbol->domain;
   unsigned int theclass = psymbol->aclass;
 
@@ -1534,9 +1556,9 @@ psymbol_hash (const void *addr, int leng
   h = fast_hash (&lang, sizeof (unsigned int), h);
   h = fast_hash (&domain, sizeof (unsigned int), h);
   h = fast_hash (&theclass, sizeof (unsigned int), h);
-  /* Note that psymbol names are interned via symbol_set_names, so
+  /* Note that psymbol names are interned via compute_and_set_names, so
      there's no need to hash the contents of the name here.  */
-  h = fast_hash (&psymbol->ginfo.name, sizeof (psymbol->ginfo.name), h);
+  h = fast_hash (&psymbol->ginfo.m_name, sizeof (psymbol->ginfo.m_name), h);
 
   return h;
 }
@@ -1553,13 +1575,13 @@ psymbol_compare (const void *addr1, cons
 
   return (memcmp (&sym1->ginfo.value, &sym2->ginfo.value,
                   sizeof (sym1->ginfo.value)) == 0
-	  && sym1->ginfo.language == sym2->ginfo.language
+	  && sym1->ginfo.language () == sym2->ginfo.language ()
           && sym1->domain == sym2->domain
           && sym1->aclass == sym2->aclass
 	  /* Note that psymbol names are interned via
-	     symbol_set_names, so there's no need to compare the
+	     compute_and_set_names, so there's no need to compare the
 	     contents of the name here.  */
-          && sym1->ginfo.name == sym2->ginfo.name);
+          && sym1->ginfo.linkage_name () == sym2->ginfo.linkage_name ());
 }
 
 /* Helper function, initialises partial symbol structure and stashes
@@ -1569,26 +1591,9 @@ psymbol_compare (const void *addr1, cons
    different domain (or address) is possible and correct.  */
 
 static struct partial_symbol *
-add_psymbol_to_bcache (gdb::string_view name, bool copy_name,
-		       domain_enum domain,
-		       enum address_class theclass,
-		       short section,
-		       CORE_ADDR coreaddr,
-		       enum language language, struct objfile *objfile,
-		       int *added)
+add_psymbol_to_bcache (const partial_symbol &psymbol, struct objfile *objfile,
+		       bool *added)
 {
-  struct partial_symbol psymbol;
-  memset (&psymbol, 0, sizeof (psymbol));
-
-  psymbol.set_unrelocated_address (coreaddr);
-  psymbol.ginfo.section = section;
-  psymbol.domain = domain;
-  psymbol.aclass = theclass;
-  symbol_set_language (&psymbol.ginfo, language,
-		       objfile->partial_symtabs->obstack ());
-  symbol_set_names (&psymbol.ginfo, name, copy_name,
-		    objfile->per_bfd);
-
   /* Stash the partial symbol away in the cache.  */
   return ((struct partial_symbol *)
 	  objfile->partial_symtabs->psymbol_cache.insert
@@ -1609,21 +1614,14 @@ append_psymbol_to_list (std::vector<part
 /* See psympriv.h.  */
 
 void
-add_psymbol_to_list (gdb::string_view name, bool copy_name,
-		     domain_enum domain,
-		     enum address_class theclass,
-		     short section,
+add_psymbol_to_list (const partial_symbol &psymbol,
 		     psymbol_placement where,
-		     CORE_ADDR coreaddr,
-		     enum language language, struct objfile *objfile)
+		     struct objfile *objfile)
 {
-  struct partial_symbol *psym;
-
-  int added;
+  bool added;
 
   /* Stash the partial symbol away in the cache.  */
-  psym = add_psymbol_to_bcache (name, copy_name, domain, theclass,
-				section, coreaddr, language, objfile, &added);
+  partial_symbol *psym = add_psymbol_to_bcache (psymbol, objfile, &added);
 
   /* Do not duplicate global partial symbols.  */
   if (where == psymbol_placement::GLOBAL && !added)
@@ -1632,14 +1630,38 @@ add_psymbol_to_list (gdb::string_view na
   /* Save pointer to partial symbol in psymtab, growing symtab if needed.  */
   std::vector<partial_symbol *> *list
     = (where == psymbol_placement::STATIC
-       ? &objfile->partial_symtabs->static_psymbols
-       : &objfile->partial_symtabs->global_psymbols);
+       ? objfile->partial_symtabs->current_static_psymbols.back ()
+       : objfile->partial_symtabs->current_global_psymbols.back ());
   append_psymbol_to_list (list, psym, objfile);
 }
 
 /* See psympriv.h.  */
 
 void
+add_psymbol_to_list (gdb::string_view name, bool copy_name,
+		     domain_enum domain,
+		     enum address_class theclass,
+		     short section,
+		     psymbol_placement where,
+		     CORE_ADDR coreaddr,
+		     enum language language, struct objfile *objfile)
+{
+  struct partial_symbol psymbol;
+  memset (&psymbol, 0, sizeof (psymbol));
+
+  psymbol.set_unrelocated_address (coreaddr);
+  psymbol.ginfo.section = section;
+  psymbol.domain = domain;
+  psymbol.aclass = theclass;
+  psymbol.ginfo.set_language (language, objfile->partial_symtabs->obstack ());
+  psymbol.ginfo.compute_and_set_names (name, copy_name, objfile->per_bfd);
+
+  add_psymbol_to_list (psymbol, where, objfile);
+}
+
+/* See psympriv.h.  */
+
+void
 init_psymbol_list (struct objfile *objfile, int total_symbols)
 {
   if (objfile->partial_symtabs->global_psymbols.capacity () == 0
@@ -1656,16 +1678,14 @@ init_psymbol_list (struct objfile *objfi
 
 /* See psympriv.h.  */
 
-struct partial_symtab *
-allocate_psymtab (const char *filename, struct objfile *objfile)
+partial_symtab::partial_symtab (const char *filename_, struct objfile *objfile)
+  : searched_flag (PST_NOT_SEARCHED),
+    text_low_valid (0),
+    text_high_valid (0)
 {
-  struct partial_symtab *psymtab
-    = objfile->partial_symtabs->allocate_psymtab ();
+  objfile->partial_symtabs->install_psymtab (this);
 
-  psymtab->filename
-    = ((const char *) objfile->per_bfd->filename_cache.insert
-       (filename, strlen (filename) + 1));
-  psymtab->compunit_symtab = NULL;
+  filename = objfile->intern (filename_);
 
   if (symtab_create_debug)
     {
@@ -1684,12 +1704,37 @@ allocate_psymtab (const char *filename,
 	}
       fprintf_filtered (gdb_stdlog,
 			"Created psymtab %s for module %s.\n",
-			host_address_to_string (psymtab), filename);
+			host_address_to_string (this), filename);
     }
+}
+
+/* See psympriv.h.  */
 
-  return psymtab;
+void
+partial_symtab::expand_dependencies (struct objfile *objfile)
+{
+  for (int i = 0; i < number_of_dependencies; ++i)
+    {
+      if (!dependencies[i]->readin_p (objfile)
+	  && dependencies[i]->user == NULL)
+	{
+	  /* Inform about additional files to be read in.  */
+	  if (info_verbose)
+	    {
+	      fputs_filtered (" ", gdb_stdout);
+	      wrap_here ("");
+	      fputs_filtered ("and ", gdb_stdout);
+	      wrap_here ("");
+	      printf_filtered ("%s...", dependencies[i]->filename);
+	      wrap_here ("");	/* Flush output */
+	      gdb_flush (gdb_stdout);
+	    }
+	  dependencies[i]->expand_psymtab (objfile);
+	}
+    }
 }
 
+
 void
 psymtab_storage::discard_psymtab (struct partial_symtab *pst)
 {
@@ -1708,11 +1753,7 @@ psymtab_storage::discard_psymtab (struct
   while ((*prev_pst) != pst)
     prev_pst = &((*prev_pst)->next);
   (*prev_pst) = pst->next;
-
-  /* Next, put it on a free list for recycling.  */
-
-  pst->next = free_psymtabs;
-  free_psymtabs = pst;
+  delete pst;
 }
 
 
@@ -1739,7 +1780,7 @@ dump_psymtab_addrmap_1 (void *datap, COR
 {
   struct dump_psymtab_addrmap_data *data
     = (struct dump_psymtab_addrmap_data *) datap;
-  struct gdbarch *gdbarch = get_objfile_arch (data->objfile);
+  struct gdbarch *gdbarch = data->objfile->arch ();
   struct partial_symtab *addrmap_psymtab = (struct partial_symtab *) obj;
   const char *psymtab_address_or_end = NULL;
 
@@ -1951,15 +1992,13 @@ maintenance_print_psymbols (const char *
 static void
 maintenance_info_psymtabs (const char *regexp, int from_tty)
 {
-  struct program_space *pspace;
-
   if (regexp)
     re_comp (regexp);
 
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     for (objfile *objfile : pspace->objfiles ())
       {
-	struct gdbarch *gdbarch = get_objfile_arch (objfile);
+	struct gdbarch *gdbarch = objfile->arch ();
 
 	/* We don't want to print anything for this objfile until we
 	   actually find a symtab whose name matches.  */
@@ -1987,7 +2026,7 @@ maintenance_info_psymtabs (const char *r
 				 host_address_to_string (psymtab));
 
 		printf_filtered ("    readin %s\n",
-				 psymtab->readin ? "yes" : "no");
+				 psymtab->readin_p (objfile) ? "yes" : "no");
 		printf_filtered ("    fullname %s\n",
 				 psymtab->fullname
 				 ? psymtab->fullname : "(null)");
@@ -2029,6 +2068,11 @@ maintenance_info_psymtabs (const char *r
 		  }
 		else
 		  printf_filtered ("(none)\n");
+		if (psymtab->user)
+		  printf_filtered ("    user %s "
+				   "((struct partial_symtab *) %s)\n",
+				   psymtab->user->filename,
+				   host_address_to_string (psymtab->user));
 		printf_filtered ("    dependencies ");
 		if (psymtab->number_of_dependencies)
 		  {
@@ -2068,17 +2112,17 @@ maintenance_check_psymtabs (const char *
   struct compunit_symtab *cust = NULL;
   const struct blockvector *bv;
   const struct block *b;
-  int length;
+  int i;
 
   for (objfile *objfile : current_program_space->objfiles ())
     for (partial_symtab *ps : require_partial_symbols (objfile, true))
       {
-	struct gdbarch *gdbarch = get_objfile_arch (objfile);
+	struct gdbarch *gdbarch = objfile->arch ();
 
 	/* We don't call psymtab_to_symtab here because that may cause symtab
 	   expansion.  When debugging a problem it helps if checkers leave
 	   things unchanged.  */
-	cust = ps->compunit_symtab;
+	cust = ps->get_compunit_symtab (objfile);
 
 	/* First do some checks that don't require the associated symtab.  */
 	if (ps->text_high (objfile) < ps->text_low (objfile))
@@ -2102,26 +2146,29 @@ maintenance_check_psymtabs (const char *
 	b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
 	partial_symbol **psym
 	  = &objfile->partial_symtabs->static_psymbols[ps->statics_offset];
-	length = ps->n_static_syms;
-	while (length--)
+	for (i = 0; i < ps->n_static_syms; psym++, i++)
 	  {
+	    /* Skip symbols for inlined functions without address.  These may
+	       or may not have a match in the full symtab.  */
+	    if ((*psym)->aclass == LOC_BLOCK
+		&& (*psym)->ginfo.value.address == 0)
+	      continue;
+
 	    sym = block_lookup_symbol (b, (*psym)->ginfo.search_name (),
 				       symbol_name_match_type::SEARCH_NAME,
 				       (*psym)->domain);
 	    if (!sym)
 	      {
 		printf_filtered ("Static symbol `");
-		puts_filtered ((*psym)->ginfo.name);
+		puts_filtered ((*psym)->ginfo.linkage_name ());
 		printf_filtered ("' only found in ");
 		puts_filtered (ps->filename);
 		printf_filtered (" psymtab\n");
 	      }
-	    psym++;
 	  }
 	b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
 	psym = &objfile->partial_symtabs->global_psymbols[ps->globals_offset];
-	length = ps->n_global_syms;
-	while (length--)
+	for (i = 0; i < ps->n_global_syms; psym++, i++)
 	  {
 	    sym = block_lookup_symbol (b, (*psym)->ginfo.search_name (),
 				       symbol_name_match_type::SEARCH_NAME,
@@ -2129,12 +2176,11 @@ maintenance_check_psymtabs (const char *
 	    if (!sym)
 	      {
 		printf_filtered ("Global symbol `");
-		puts_filtered ((*psym)->ginfo.name);
+		puts_filtered ((*psym)->ginfo.linkage_name ());
 		printf_filtered ("' only found in ");
 		puts_filtered (ps->filename);
 		printf_filtered (" psymtab\n");
 	      }
-	    psym++;
 	  }
 	if (ps->raw_text_high () != 0
 	    && (ps->text_low (objfile) < BLOCK_START (b)
@@ -2157,8 +2203,9 @@ maintenance_check_psymtabs (const char *
       }
 }
 
+void _initialize_psymtab ();
 void
-_initialize_psymtab (void)
+_initialize_psymtab ()
 {
   add_cmd ("psymbols", class_maintenance, maintenance_print_psymbols, _("\
 Print dump of current partial symbol definitions.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/psymtab.h ./gdb/psymtab.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/psymtab.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/psymtab.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Public partial symbol table definitions.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -36,7 +36,9 @@ struct partial_symbol;
    other memory managed by this class), or on the per-BFD object.  The
    only link from the psymtab storage object back to the objfile (or
    objfile_obstack) that is made by the core psymtab code is the
-   compunit_symtab member in the psymtab.
+   compunit_symtab member in the standard_psymtab -- and a given
+   symbol reader can avoid this by implementing its own subclasses of
+   partial_symtab.
 
    However, it is up to each symbol reader to maintain this invariant
    in other ways, if it wants to reuse psymtabs across multiple
@@ -83,11 +85,10 @@ public:
     return OBSTACK_CALLOC (obstack (), number, struct partial_symtab *);
   }
 
-  /* Allocate a new psymtab on the psymtab obstack.  The new psymtab
-     will be linked in to the "psymtabs" list, but otherwise all other
-     fields will be zero.  */
+  /* Install a psymtab on the psymtab list.  This transfers ownership
+     of PST to this object.  */
 
-  struct partial_symtab *allocate_psymtab ();
+  void install_psymtab (partial_symtab *pst);
 
   typedef next_adapter<struct partial_symtab> partial_symtab_range;
 
@@ -128,11 +129,13 @@ public:
   std::vector<partial_symbol *> global_psymbols;
   std::vector<partial_symbol *> static_psymbols;
 
-private:
+  /* Stack of vectors of partial symbols, using during psymtab
+     initialization.  */
 
-  /* List of freed partial symtabs, available for re-use.  */
+  std::vector<std::vector<partial_symbol *>*> current_global_psymbols;
+  std::vector<std::vector<partial_symbol *>*> current_static_psymbols;
 
-  struct partial_symtab *free_psymtabs = nullptr;
+private:
 
   /* The obstack where allocations are made.  This is lazily allocated
      so that we don't waste memory when there are no psymtabs.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ptrace.m4 ./gdb/ptrace.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ptrace.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ptrace.m4	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2012-2020 Free Software Foundation, Inc.
+dnl Copyright (C) 2012-2021 Free Software Foundation, Inc.
 dnl
 dnl This file is part of GDB.
 dnl
@@ -31,11 +31,7 @@ gdb_ptrace_headers='
 # include <unistd.h>
 #endif
 '
-# There is no point in checking if we don't have a prototype.
-AC_CHECK_DECLS(ptrace, [], [
-  : ${gdb_cv_func_ptrace_ret='int'}
-  : ${gdb_cv_func_ptrace_args='int,int,long,long'}
-], $gdb_ptrace_headers)
+
 # Check return type.  Varargs (used on GNU/Linux) conflict with the
 # empty argument list, so check for that explicitly.
 AC_CACHE_CHECK([return type of ptrace], gdb_cv_func_ptrace_ret,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-typeprint.c ./gdb/p-typeprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-typeprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/p-typeprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for printing Pascal types for GDB, the GNU debugger.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -53,7 +53,7 @@ pascal_print_type (struct type *type, co
   enum type_code code;
   int demangled_args;
 
-  code = TYPE_CODE (type);
+  code = type->code ();
 
   if (show > 0)
     type = check_typedef (type);
@@ -140,7 +140,7 @@ pascal_type_print_derivation_info (struc
       fprintf_filtered (stream, "%s%s ",
 			BASETYPE_VIA_PUBLIC (type, i) ? "public" : "private",
 			BASETYPE_VIA_VIRTUAL (type, i) ? " virtual" : "");
-      name = TYPE_NAME (TYPE_BASECLASS (type, i));
+      name = TYPE_BASECLASS (type, i)->name ();
       fprintf_filtered (stream, "%s", name ? name : "(null)");
     }
   if (i > 0)
@@ -211,12 +211,12 @@ pascal_type_print_varspec_prefix (struct
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
       fprintf_filtered (stream, "^");
@@ -229,7 +229,7 @@ pascal_type_print_varspec_prefix (struct
       if (passed_a_ptr)
 	fprintf_filtered (stream, "(");
       if (TYPE_TARGET_TYPE (type) != NULL
-	  && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+	  && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
 	{
 	  fprintf_filtered (stream, "function  ");
 	}
@@ -258,7 +258,7 @@ pascal_type_print_varspec_prefix (struct
 	fprintf_filtered (stream, "(");
 
       if (TYPE_TARGET_TYPE (type) != NULL
-	  && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+	  && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
 	{
 	  fprintf_filtered (stream, "function  ");
 	}
@@ -274,10 +274,10 @@ pascal_type_print_varspec_prefix (struct
 	fprintf_filtered (stream, "(");
       fprintf_filtered (stream, "array ");
       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0
-	&& !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
+	  && type->bounds ()->high.kind () != PROP_UNDEFINED)
 	fprintf_filtered (stream, "[%s..%s] ",
-			  plongest (TYPE_ARRAY_LOWER_BOUND_VALUE (type)),
-			  plongest (TYPE_ARRAY_UPPER_BOUND_VALUE (type)));
+			  plongest (type->bounds ()->low.const_val ()),
+			  plongest (type->bounds ()->high.const_val ()));
       fprintf_filtered (stream, "of ");
       break;
 
@@ -309,7 +309,7 @@ static void
 pascal_print_func_args (struct type *type, struct ui_file *stream,
 			const struct type_print_options *flags)
 {
-  int i, len = TYPE_NFIELDS (type);
+  int i, len = type->num_fields ();
 
   if (len)
     {
@@ -327,7 +327,7 @@ pascal_print_func_args (struct type *typ
          {
          fprintf_filtered (stream, "var ");
          } */
-      pascal_print_type (TYPE_FIELD_TYPE (type, i), ""	/* TYPE_FIELD_NAME
+      pascal_print_type (type->field (i).type (), ""	/* TYPE_FIELD_NAME
 							   seems invalid!  */
 			 ,stream, -1, 0, flags);
     }
@@ -347,7 +347,7 @@ pascal_type_print_func_varspec_suffix  (
 					const struct type_print_options *flags)
 {
   if (TYPE_TARGET_TYPE (type) == NULL
-      || TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+      || TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
     {
       fprintf_filtered (stream, " : ");
       pascal_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
@@ -377,12 +377,12 @@ pascal_type_print_varspec_suffix (struct
   if (type == 0)
     return;
 
-  if (TYPE_NAME (type) && show <= 0)
+  if (type->name () && show <= 0)
     return;
 
   QUIT;
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
       if (passed_a_ptr)
@@ -476,10 +476,10 @@ pascal_type_print_base (struct type *typ
     }
 
   /* void pointer */
-  if ((TYPE_CODE (type) == TYPE_CODE_PTR)
-      && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID))
+  if ((type->code () == TYPE_CODE_PTR)
+      && (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_VOID))
     {
-      fputs_filtered (TYPE_NAME (type) ? TYPE_NAME (type) : "pointer",
+      fputs_filtered (type->name () ? type->name () : "pointer",
 		      stream);
       return;
     }
@@ -487,15 +487,15 @@ pascal_type_print_base (struct type *typ
      just print the type name directly from the type.  */
 
   if (show <= 0
-      && TYPE_NAME (type) != NULL)
+      && type->name () != NULL)
     {
-      fputs_filtered (TYPE_NAME (type), stream);
+      fputs_filtered (type->name (), stream);
       return;
     }
 
   type = check_typedef (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_TYPEDEF:
     case TYPE_CODE_PTR:
@@ -523,9 +523,9 @@ pascal_type_print_base (struct type *typ
          only after args !!  */
       break;
     case TYPE_CODE_STRUCT:
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	  fputs_filtered (" = ", stream);
 	}
       if (HAVE_CPLUS_STRUCT (type))
@@ -539,9 +539,9 @@ pascal_type_print_base (struct type *typ
       goto struct_union;
 
     case TYPE_CODE_UNION:
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	  fputs_filtered (" = ", stream);
 	}
       fprintf_filtered (stream, "case <?> of ");
@@ -551,15 +551,15 @@ pascal_type_print_base (struct type *typ
       if (show < 0)
 	{
 	  /* If we just printed a tag name, no need to print anything else.  */
-	  if (TYPE_NAME (type) == NULL)
+	  if (type->name () == NULL)
 	    fprintf_filtered (stream, "{...}");
 	}
-      else if (show > 0 || TYPE_NAME (type) == NULL)
+      else if (show > 0 || type->name () == NULL)
 	{
 	  pascal_type_print_derivation_info (stream, type);
 
 	  fprintf_filtered (stream, "\n");
-	  if ((TYPE_NFIELDS (type) == 0) && (TYPE_NFN_FIELDS (type) == 0))
+	  if ((type->num_fields () == 0) && (TYPE_NFN_FIELDS (type) == 0))
 	    {
 	      if (TYPE_STUB (type))
 		fprintfi_filtered (level + 4, stream, "<incomplete type>\n");
@@ -576,7 +576,7 @@ pascal_type_print_base (struct type *typ
 	  /* If there is a base class for this type,
 	     do not print the field that it occupies.  */
 
-	  len = TYPE_NFIELDS (type);
+	  len = type->num_fields ();
 	  for (i = TYPE_N_BASECLASSES (type); i < len; i++)
 	    {
 	      QUIT;
@@ -618,12 +618,12 @@ pascal_type_print_base (struct type *typ
 		}
 
 	      print_spaces_filtered (level + 4, stream);
-	      if (field_is_static (&TYPE_FIELD (type, i)))
+	      if (field_is_static (&type->field (i)))
 		fprintf_filtered (stream, "static ");
-	      pascal_print_type (TYPE_FIELD_TYPE (type, i),
+	      pascal_print_type (type->field (i).type (),
 				 TYPE_FIELD_NAME (type, i),
 				 stream, show - 1, level + 4, flags);
-	      if (!field_is_static (&TYPE_FIELD (type, i))
+	      if (!field_is_static (&type->field (i))
 		  && TYPE_FIELD_PACKED (type, i))
 		{
 		  /* It is a bitfield.  This code does not attempt
@@ -707,8 +707,7 @@ pascal_type_print_base (struct type *typ
 		      fprintf_filtered (stream, "destructor  ");
 		    }
 		  else if (TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE (f, j)) != 0
-			   && TYPE_CODE (TYPE_TARGET_TYPE (
-				TYPE_FN_FIELD_TYPE (f, j))) != TYPE_CODE_VOID)
+			   && TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE(f, j))->code () != TYPE_CODE_VOID)
 		    {
 		      fprintf_filtered (stream, "function  ");
 		    }
@@ -723,8 +722,7 @@ pascal_type_print_base (struct type *typ
 						 stream);
 
 		  if (TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE (f, j)) != 0
-		      && TYPE_CODE (TYPE_TARGET_TYPE (
-			   TYPE_FN_FIELD_TYPE (f, j))) != TYPE_CODE_VOID)
+		      && TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE(f, j))->code () != TYPE_CODE_VOID)
 		    {
 		      fputs_filtered (" : ", stream);
 		      type_print (TYPE_TARGET_TYPE (TYPE_FN_FIELD_TYPE (f, j)),
@@ -741,9 +739,9 @@ pascal_type_print_base (struct type *typ
       break;
 
     case TYPE_CODE_ENUM:
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	  if (show > 0)
 	    fputs_filtered (" ", stream);
 	}
@@ -754,13 +752,13 @@ pascal_type_print_base (struct type *typ
       if (show < 0)
 	{
 	  /* If we just printed a tag name, no need to print anything else.  */
-	  if (TYPE_NAME (type) == NULL)
+	  if (type->name () == NULL)
 	    fprintf_filtered (stream, "(...)");
 	}
-      else if (show > 0 || TYPE_NAME (type) == NULL)
+      else if (show > 0 || type->name () == NULL)
 	{
 	  fprintf_filtered (stream, "(");
-	  len = TYPE_NFIELDS (type);
+	  len = type->num_fields ();
 	  lastval = 0;
 	  for (i = 0; i < len; i++)
 	    {
@@ -799,15 +797,15 @@ pascal_type_print_base (struct type *typ
       {
 	struct type *target = TYPE_TARGET_TYPE (type);
 
-	print_type_scalar (target, TYPE_LOW_BOUND (type), stream);
+	print_type_scalar (target, type->bounds ()->low.const_val (), stream);
 	fputs_filtered ("..", stream);
-	print_type_scalar (target, TYPE_HIGH_BOUND (type), stream);
+	print_type_scalar (target, type->bounds ()->high.const_val (), stream);
       }
       break;
 
     case TYPE_CODE_SET:
       fputs_filtered ("set of ", stream);
-      pascal_print_type (TYPE_INDEX_TYPE (type), "", stream,
+      pascal_print_type (type->index_type (), "", stream,
 			 show - 1, level, flags);
       break;
 
@@ -820,9 +818,9 @@ pascal_type_print_base (struct type *typ
          such as fundamental types.  For these, just print whatever
          the type name is, as recorded in the type itself.  If there
          is no type name, then complain.  */
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
 	{
-	  fputs_filtered (TYPE_NAME (type), stream);
+	  fputs_filtered (type->name (), stream);
 	}
       else
 	{
@@ -830,7 +828,7 @@ pascal_type_print_base (struct type *typ
 	     an error ().  */
 	  fprintf_styled (stream, metadata_style.style (),
 			  "<invalid unnamed pascal type code %d>",
-			  TYPE_CODE (type));
+			  type->code ());
 	}
       break;
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-valprint.c ./gdb/p-valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/p-valprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/p-valprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for printing Pascal values for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -42,6 +42,11 @@
 #include "cli/cli-style.h"
 
 
+static void pascal_object_print_value_fields (struct value *, struct ui_file *,
+					      int,
+					      const struct value_print_options *,
+					      struct type **, int);
+
 /* Decorations for Pascal.  */
 
 static const struct generic_val_print_decorations p_decorations =
@@ -56,16 +61,15 @@ static const struct generic_val_print_de
   "}"
 };
 
-/* See val_print for a description of the various parameters of this
-   function; they are identical.  */
+/* See p-lang.h.  */
 
 void
-pascal_val_print (struct type *type,
-		  int embedded_offset, CORE_ADDR address,
-		  struct ui_file *stream, int recurse,
-		  struct value *original_value,
-		  const struct value_print_options *options)
+pascal_value_print_inner (struct value *val, struct ui_file *stream,
+			  int recurse,
+			  const struct value_print_options *options)
+
 {
+  struct type *type = check_typedef (value_type (val));
   struct gdbarch *gdbarch = get_type_arch (type);
   enum bfd_endian byte_order = type_byte_order (type);
   unsigned int i = 0;	/* Number of characters printed */
@@ -76,10 +80,9 @@ pascal_val_print (struct type *type,
   struct type *char_type;
   CORE_ADDR addr;
   int want_space = 0;
-  const gdb_byte *valaddr = value_contents_for_printing (original_value);
+  const gdb_byte *valaddr = value_contents_for_printing (val);
 
-  type = check_typedef (type);
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
       {
@@ -90,16 +93,12 @@ pascal_val_print (struct type *type,
 	    len = high_bound - low_bound + 1;
 	    elttype = check_typedef (TYPE_TARGET_TYPE (type));
 	    eltlen = TYPE_LENGTH (elttype);
-	    if (options->prettyformat_arrays)
-	      {
-		print_spaces_filtered (2 + 2 * recurse, stream);
-	      }
 	    /* If 's' format is used, try to print out as string.
 	       If no format is given, print as string if element type
 	       is of TYPE_CODE_CHAR and element size is 1,2 or 4.  */
 	    if (options->format == 's'
 		|| ((eltlen == 1 || eltlen == 2 || eltlen == 4)
-		    && TYPE_CODE (elttype) == TYPE_CODE_CHAR
+		    && elttype->code () == TYPE_CODE_CHAR
 		    && options->format == 0))
 	      {
 		/* If requested, look for the first null char and only print
@@ -110,17 +109,15 @@ pascal_val_print (struct type *type,
 
 		    /* Look for a NULL char.  */
 		    for (temp_len = 0;
-			 extract_unsigned_integer (valaddr + embedded_offset +
-						   temp_len * eltlen, eltlen,
-						   byte_order)
+			 extract_unsigned_integer (valaddr + temp_len * eltlen,
+						   eltlen, byte_order)
 			   && temp_len < len && temp_len < options->print_max;
 			 temp_len++);
 		    len = temp_len;
 		  }
 
 		LA_PRINT_STRING (stream, TYPE_TARGET_TYPE (type),
-				 valaddr + embedded_offset, len, NULL, 0,
-				 options);
+				 valaddr, len, NULL, 0, options);
 		i = len;
 	      }
 	    else
@@ -137,23 +134,20 @@ pascal_val_print (struct type *type,
 		  {
 		    i = 0;
 		  }
-		val_print_array_elements (type, embedded_offset,
-					  address, stream, recurse,
-					  original_value, options, i);
+		value_print_array_elements (val, stream, recurse, options, i);
 		fprintf_filtered (stream, "}");
 	      }
 	    break;
 	  }
 	/* Array of unspecified length: treat like pointer to first elt.  */
-	addr = address + embedded_offset;
+	addr = value_address (val);
       }
       goto print_unpacked_pointer;
 
     case TYPE_CODE_PTR:
       if (options->format && options->format != 's')
 	{
-	  val_print_scalar_formatted (type, embedded_offset,
-				      original_value, options, 0, stream);
+	  value_print_scalar_formatted (val, options, 0, stream);
 	  break;
 	}
       if (options->vtblprint && pascal_object_is_vtbl_ptr_type (type))
@@ -162,18 +156,18 @@ pascal_val_print (struct type *type,
 	  /* Print vtable entry - we only get here if we ARE using
 	     -fvtable_thunks.  (Otherwise, look under TYPE_CODE_STRUCT.)  */
 	  /* Extract the address, assume that it is unsigned.  */
-	  addr = extract_unsigned_integer (valaddr + embedded_offset,
+	  addr = extract_unsigned_integer (valaddr,
 					   TYPE_LENGTH (type), byte_order);
 	  print_address_demangle (options, gdbarch, addr, stream, demangle);
 	  break;
 	}
       check_typedef (TYPE_TARGET_TYPE (type));
 
-      addr = unpack_pointer (type, valaddr + embedded_offset);
+      addr = unpack_pointer (type, valaddr);
     print_unpacked_pointer:
       elttype = check_typedef (TYPE_TARGET_TYPE (type));
 
-      if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
+      if (elttype->code () == TYPE_CODE_FUNC)
 	{
 	  /* Try to print what function it points to.  */
 	  print_address_demangle (options, gdbarch, addr, stream, demangle);
@@ -189,10 +183,10 @@ pascal_val_print (struct type *type,
       /* For a pointer to char or unsigned char, also print the string
 	 pointed to, unless pointer is null.  */
       if (((TYPE_LENGTH (elttype) == 1
-	   && (TYPE_CODE (elttype) == TYPE_CODE_INT
-	      || TYPE_CODE (elttype) == TYPE_CODE_CHAR))
-	  || ((TYPE_LENGTH (elttype) == 2 || TYPE_LENGTH (elttype) == 4)
-	      && TYPE_CODE (elttype) == TYPE_CODE_CHAR))
+	   && (elttype->code () == TYPE_CODE_INT
+               || elttype->code () == TYPE_CODE_CHAR))
+           || ((TYPE_LENGTH (elttype) == 2 || TYPE_LENGTH (elttype) == 4)
+               && elttype->code () == TYPE_CODE_CHAR))
 	  && (options->format == 0 || options->format == 's')
 	  && addr != 0)
 	{
@@ -227,8 +221,7 @@ pascal_val_print (struct type *type,
       else if (pascal_object_is_vtbl_member (type))
 	{
 	  /* Print vtbl's nicely.  */
-	  CORE_ADDR vt_address = unpack_pointer (type,
-						 valaddr + embedded_offset);
+	  CORE_ADDR vt_address = unpack_pointer (type, valaddr);
 	  struct bound_minimal_symbol msymbol =
 	    lookup_minimal_symbol_by_pc (vt_address);
 
@@ -293,9 +286,7 @@ pascal_val_print (struct type *type,
     case TYPE_CODE_UNDEF:
     case TYPE_CODE_BOOL:
     case TYPE_CODE_CHAR:
-      generic_val_print (type, embedded_offset, address,
-			 stream, recurse, original_value, options,
-			 &p_decorations);
+      generic_value_print (val, stream, recurse, options, &p_decorations);
       break;
 
     case TYPE_CODE_UNION:
@@ -314,12 +305,10 @@ pascal_val_print (struct type *type,
 	  /* Extract the address, assume that it is unsigned.  */
 	  print_address_demangle
 	    (options, gdbarch,
-	     extract_unsigned_integer (valaddr + embedded_offset
-				       + TYPE_FIELD_BITPOS (type,
-							    VTBL_FNADDR_OFFSET) / 8,
-				       TYPE_LENGTH (TYPE_FIELD_TYPE (type,
-								     VTBL_FNADDR_OFFSET)),
-				       byte_order),
+	     extract_unsigned_integer
+	       (valaddr + TYPE_FIELD_BITPOS (type, VTBL_FNADDR_OFFSET) / 8,
+		TYPE_LENGTH (type->field (VTBL_FNADDR_OFFSET).type ()),
+		byte_order),
 	     stream, demangle);
 	}
       else
@@ -327,23 +316,19 @@ pascal_val_print (struct type *type,
           if (is_pascal_string_type (type, &length_pos, &length_size,
                                      &string_pos, &char_type, NULL))
 	    {
-	      len = extract_unsigned_integer (valaddr + embedded_offset
-					      + length_pos, length_size,
-					      byte_order);
-	      LA_PRINT_STRING (stream, char_type,
-			       valaddr + embedded_offset + string_pos,
+	      len = extract_unsigned_integer (valaddr + length_pos,
+					      length_size, byte_order);
+	      LA_PRINT_STRING (stream, char_type, valaddr + string_pos,
 			       len, NULL, 0, options);
 	    }
 	  else
-	    pascal_object_print_value_fields (type, valaddr, embedded_offset,
-					      address, stream, recurse,
-					      original_value, options,
-					      NULL, 0);
+	    pascal_object_print_value_fields (val, stream, recurse,
+					      options, NULL, 0);
 	}
       break;
 
     case TYPE_CODE_SET:
-      elttype = TYPE_INDEX_TYPE (type);
+      elttype = type->index_type ();
       elttype = check_typedef (elttype);
       if (TYPE_STUB (elttype))
 	{
@@ -358,14 +343,15 @@ pascal_val_print (struct type *type,
 
 	  fputs_filtered ("[", stream);
 
-	  int bound_info = get_discrete_bounds (range, &low_bound, &high_bound);
+	  int bound_info = (get_discrete_bounds (range, &low_bound, &high_bound)
+			    ? 0 : -1);
 	  if (low_bound == 0 && high_bound == -1 && TYPE_LENGTH (type) > 0)
 	    {
 	      /* If we know the size of the set type, we can figure out the
 	      maximum value.  */
 	      bound_info = 0;
 	      high_bound = TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1;
-	      TYPE_HIGH_BOUND (range) = high_bound;
+	      range->bounds ()->high.set_const_val (high_bound);
 	    }
 	maybe_bad_bstring:
 	  if (bound_info < 0)
@@ -376,8 +362,7 @@ pascal_val_print (struct type *type,
 
 	  for (i = low_bound; i <= high_bound; i++)
 	    {
-	      int element = value_bit_index (type,
-					     valaddr + embedded_offset, i);
+	      int element = value_bit_index (type, valaddr, i);
 
 	      if (element < 0)
 		{
@@ -392,16 +377,13 @@ pascal_val_print (struct type *type,
 		  need_comma = 1;
 
 		  if (i + 1 <= high_bound
-		      && value_bit_index (type,
-					  valaddr + embedded_offset, ++i))
+		      && value_bit_index (type, valaddr, ++i))
 		    {
 		      int j = i;
 
 		      fputs_filtered ("..", stream);
 		      while (i + 1 <= high_bound
-			     && value_bit_index (type,
-						 valaddr + embedded_offset,
-						 ++i))
+			     && value_bit_index (type, valaddr, ++i))
 			j = i;
 		      print_type_scalar (range, j, stream);
 		    }
@@ -414,9 +396,10 @@ pascal_val_print (struct type *type,
 
     default:
       error (_("Invalid pascal type code %d in symbol table."),
-	     TYPE_CODE (type));
+	     type->code ());
     }
 }
+
 
 void
 pascal_value_print (struct value *val, struct ui_file *stream,
@@ -433,15 +416,15 @@ pascal_value_print (struct value *val, s
 
      Object pascal: if it is a member pointer, we will take care
      of that when we print it.  */
-  if (TYPE_CODE (type) == TYPE_CODE_PTR
-      || TYPE_CODE (type) == TYPE_CODE_REF)
+  if (type->code () == TYPE_CODE_PTR
+      || type->code () == TYPE_CODE_REF)
     {
       /* Hack:  remove (char *) for char strings.  Their
          type is indicated by the quoted string anyway.  */
-      if (TYPE_CODE (type) == TYPE_CODE_PTR
-	  && TYPE_NAME (type) == NULL
-	  && TYPE_NAME (TYPE_TARGET_TYPE (type)) != NULL
-	  && strcmp (TYPE_NAME (TYPE_TARGET_TYPE (type)), "char") == 0)
+      if (type->code () == TYPE_CODE_PTR
+	  && type->name () == NULL
+	  && TYPE_TARGET_TYPE (type)->name () != NULL
+	  && strcmp (TYPE_TARGET_TYPE (type)->name (), "char") == 0)
 	{
 	  /* Print nothing.  */
 	}
@@ -471,10 +454,7 @@ static void pascal_object_print_static_f
 					      struct ui_file *, int,
 					      const struct value_print_options *);
 
-static void pascal_object_print_value (struct type *, const gdb_byte *,
-				       LONGEST,
-				       CORE_ADDR, struct ui_file *, int,
-				       struct value *,
+static void pascal_object_print_value (struct value *, struct ui_file *, int,
 				       const struct value_print_options *,
 				       struct type **);
 
@@ -488,7 +468,7 @@ const char pascal_vtbl_ptr_name[] =
 int
 pascal_object_is_vtbl_ptr_type (struct type *type)
 {
-  const char *type_name = TYPE_NAME (type);
+  const char *type_name = type->name ();
 
   return (type_name != NULL
 	  && strcmp (type_name, pascal_vtbl_ptr_name) == 0);
@@ -500,15 +480,15 @@ pascal_object_is_vtbl_ptr_type (struct t
 int
 pascal_object_is_vtbl_member (struct type *type)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  if (type->code () == TYPE_CODE_PTR)
     {
       type = TYPE_TARGET_TYPE (type);
-      if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+      if (type->code () == TYPE_CODE_ARRAY)
 	{
 	  type = TYPE_TARGET_TYPE (type);
-	  if (TYPE_CODE (type) == TYPE_CODE_STRUCT	/* If not using
+	  if (type->code () == TYPE_CODE_STRUCT	/* If not using
 							   thunks.  */
-	      || TYPE_CODE (type) == TYPE_CODE_PTR)	/* If using thunks.  */
+	      || type->code () == TYPE_CODE_PTR)	/* If using thunks.  */
 	    {
 	      /* Virtual functions tables are full of pointers
 	         to virtual functions.  */
@@ -520,21 +500,18 @@ pascal_object_is_vtbl_member (struct typ
 }
 
 /* Mutually recursive subroutines of pascal_object_print_value and
-   c_val_print to print out a structure's fields:
+   pascal_value_print to print out a structure's fields:
    pascal_object_print_value_fields and pascal_object_print_value.
 
-   TYPE, VALADDR, ADDRESS, STREAM, RECURSE, and OPTIONS have the
-   same meanings as in pascal_object_print_value and c_val_print.
+   VAL, STREAM, RECURSE, and OPTIONS have the same meanings as in
+   pascal_object_print_value and c_value_print.
 
    DONT_PRINT is an array of baseclass types that we
    should not print, or zero if called from top level.  */
 
-void
-pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
-				  LONGEST offset,
-				  CORE_ADDR address, struct ui_file *stream,
+static void
+pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
 				  int recurse,
-				  struct value *val,
 				  const struct value_print_options *options,
 				  struct type **dont_print_vb,
 				  int dont_print_statmem)
@@ -543,17 +520,16 @@ pascal_object_print_value_fields (struct
   char *last_dont_print
     = (char *) obstack_next_free (&dont_print_statmem_obstack);
 
-  type = check_typedef (type);
+  struct type *type = check_typedef (value_type (val));
 
   fprintf_filtered (stream, "{");
-  len = TYPE_NFIELDS (type);
+  len = type->num_fields ();
   n_baseclasses = TYPE_N_BASECLASSES (type);
 
   /* Print out baseclasses such that we don't print
      duplicates of virtual baseclasses.  */
   if (n_baseclasses > 0)
-    pascal_object_print_value (type, valaddr, offset, address,
-			       stream, recurse + 1, val,
+    pascal_object_print_value (val, stream, recurse + 1,
 			       options, dont_print_vb);
 
   if (!len && n_baseclasses == 1)
@@ -562,6 +538,7 @@ pascal_object_print_value_fields (struct
     {
       struct obstack tmp_obstack = dont_print_statmem_obstack;
       int fields_seen = 0;
+      const gdb_byte *valaddr = value_contents_for_printing (val);
 
       if (dont_print_statmem == 0)
 	{
@@ -575,7 +552,7 @@ pascal_object_print_value_fields (struct
 	{
 	  /* If requested, skip printing of static fields.  */
 	  if (!options->pascal_static_field_print
-	      && field_is_static (&TYPE_FIELD (type, i)))
+	      && field_is_static (&type->field (i)))
 	    continue;
 	  if (fields_seen)
 	    fprintf_filtered (stream, ", ");
@@ -586,7 +563,7 @@ pascal_object_print_value_fields (struct
 		  fprintf_filtered (stream, "\n");
 		  print_spaces_filtered (2 + 2 * recurse, stream);
 		  fputs_filtered ("members of ", stream);
-		  fputs_filtered (TYPE_NAME (type), stream);
+		  fputs_filtered (type->name (), stream);
 		  fputs_filtered (": ", stream);
 		}
 	    }
@@ -602,18 +579,24 @@ pascal_object_print_value_fields (struct
 	      wrap_here (n_spaces (2 + 2 * recurse));
 	    }
 
-	  annotate_field_begin (TYPE_FIELD_TYPE (type, i));
+	  annotate_field_begin (type->field (i).type ());
 
-	  if (field_is_static (&TYPE_FIELD (type, i)))
-	    fputs_filtered ("static ", stream);
-	  fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
-				   language_cplus,
-				   DMGL_PARAMS | DMGL_ANSI);
+	  if (field_is_static (&type->field (i)))
+	    {
+	      fputs_filtered ("static ", stream);
+	      fprintf_symbol_filtered (stream,
+				       TYPE_FIELD_NAME (type, i),
+				       current_language->la_language,
+				       DMGL_PARAMS | DMGL_ANSI);
+	    }
+	  else
+	    fputs_styled (TYPE_FIELD_NAME (type, i),
+			  variable_name_style.style (), stream);
 	  annotate_field_name_end ();
 	  fputs_filtered (" = ", stream);
 	  annotate_field_value ();
 
-	  if (!field_is_static (&TYPE_FIELD (type, i))
+	  if (!field_is_static (&type->field (i))
 	      && TYPE_FIELD_PACKED (type, i))
 	    {
 	      struct value *v;
@@ -638,7 +621,7 @@ pascal_object_print_value_fields (struct
 		{
 		  struct value_print_options opts = *options;
 
-		  v = value_field_bitfield (type, i, valaddr, offset, val);
+		  v = value_field_bitfield (type, i, valaddr, 0, val);
 
 		  opts.deref_ref = 0;
 		  common_val_print (v, stream, recurse + 1, &opts,
@@ -652,13 +635,13 @@ pascal_object_print_value_fields (struct
 		  fputs_styled ("<optimized out or zero length>",
 				metadata_style.style (), stream);
 		}
-	      else if (field_is_static (&TYPE_FIELD (type, i)))
+	      else if (field_is_static (&type->field (i)))
 		{
 		  /* struct value *v = value_static_field (type, i);
 		     v4.17 specific.  */
 		  struct value *v;
 
-		  v = value_field_bitfield (type, i, valaddr, offset, val);
+		  v = value_field_bitfield (type, i, valaddr, 0, val);
 
 		  if (v == NULL)
 		    val_print_optimized_out (NULL, stream);
@@ -671,14 +654,11 @@ pascal_object_print_value_fields (struct
 		  struct value_print_options opts = *options;
 
 		  opts.deref_ref = 0;
-		  /* val_print (TYPE_FIELD_TYPE (type, i),
-		     valaddr + TYPE_FIELD_BITPOS (type, i) / 8,
-		     address + TYPE_FIELD_BITPOS (type, i) / 8, 0,
-		     stream, format, 0, recurse + 1, pretty); */
-		  val_print (TYPE_FIELD_TYPE (type, i),
-			     offset + TYPE_FIELD_BITPOS (type, i) / 8,
-			     address, stream, recurse + 1, val, &opts,
-			     current_language);
+
+		  struct value *v = value_primitive_field (val, 0, i,
+							   value_type (val));
+		  common_val_print (v, stream, recurse + 1, &opts,
+				    current_language);
 		}
 	    }
 	  annotate_field_end ();
@@ -705,17 +685,15 @@ pascal_object_print_value_fields (struct
    baseclasses.  */
 
 static void
-pascal_object_print_value (struct type *type, const gdb_byte *valaddr,
-			   LONGEST offset,
-			   CORE_ADDR address, struct ui_file *stream,
+pascal_object_print_value (struct value *val, struct ui_file *stream,
 			   int recurse,
-			   struct value *val,
 			   const struct value_print_options *options,
 			   struct type **dont_print_vb)
 {
   struct type **last_dont_print
     = (struct type **) obstack_next_free (&dont_print_vb_obstack);
   struct obstack tmp_obstack = dont_print_vb_obstack;
+  struct type *type = check_typedef (value_type (val));
   int i, n_baseclasses = TYPE_N_BASECLASSES (type);
 
   if (dont_print_vb == 0)
@@ -731,11 +709,8 @@ pascal_object_print_value (struct type *
     {
       LONGEST boffset = 0;
       struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
-      const char *basename = TYPE_NAME (baseclass);
-      const gdb_byte *base_valaddr = NULL;
-      LONGEST thisoffset;
+      const char *basename = baseclass->name ();
       int skip = 0;
-      gdb::byte_vector buf;
 
       if (BASETYPE_VIA_VIRTUAL (type, i))
 	{
@@ -752,14 +727,14 @@ pascal_object_print_value (struct type *
 	  obstack_ptr_grow (&dont_print_vb_obstack, baseclass);
 	}
 
-      thisoffset = offset;
-
+      struct value *base_value;
       try
 	{
-	  boffset = baseclass_offset (type, i, valaddr, offset, address, val);
+	  base_value = value_primitive_field (val, 0, i, type);
 	}
       catch (const gdb_exception_error &ex)
 	{
+	  base_value = nullptr;
 	  if (ex.error == NOT_AVAILABLE_ERROR)
 	    skip = -1;
 	  else
@@ -774,18 +749,18 @@ pascal_object_print_value (struct type *
 
 	  if (boffset < 0 || boffset >= TYPE_LENGTH (type))
 	    {
-	      buf.resize (TYPE_LENGTH (baseclass));
+	      CORE_ADDR address= value_address (val);
+	      gdb::byte_vector buf (TYPE_LENGTH (baseclass));
 
-	      base_valaddr = buf.data ();
 	      if (target_read_memory (address + boffset, buf.data (),
 				      TYPE_LENGTH (baseclass)) != 0)
 		skip = 1;
-	      address = address + boffset;
-	      thisoffset = 0;
+	      base_value = value_from_contents_and_address (baseclass,
+							    buf.data (),
+							    address + boffset);
+	      baseclass = value_type (base_value);
 	      boffset = 0;
 	    }
-	  else
-	    base_valaddr = valaddr;
 	}
 
       if (options->prettyformat)
@@ -805,11 +780,10 @@ pascal_object_print_value (struct type *
       else if (skip > 0)
 	val_print_invalid_address (stream);
       else
-	pascal_object_print_value_fields (baseclass, base_valaddr,
-					  thisoffset + boffset, address,
-					  stream, recurse, val, options,
-		     (struct type **) obstack_base (&dont_print_vb_obstack),
-					  0);
+	pascal_object_print_value_fields
+	  (base_value, stream, recurse, options,
+	   (struct type **) obstack_base (&dont_print_vb_obstack),
+	   0);
       fputs_filtered (", ", stream);
 
     flush_it:
@@ -851,7 +825,7 @@ pascal_object_print_static_field (struct
       return;
     }
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     {
       CORE_ADDR *first_dont_print, addr;
       int i;
@@ -877,12 +851,8 @@ pascal_object_print_static_field (struct
 		    sizeof (CORE_ADDR));
 
       type = check_typedef (type);
-      pascal_object_print_value_fields (type,
-					value_contents_for_printing (val),
-					value_embedded_offset (val),
-					addr,
-					stream, recurse,
-					val, options, NULL, 1);
+      pascal_object_print_value_fields (val, stream, recurse,
+					options, NULL, 1);
       return;
     }
 
@@ -891,8 +861,9 @@ pascal_object_print_static_field (struct
   common_val_print (val, stream, recurse, &opts, current_language);
 }
 
+void _initialize_pascal_valprint ();
 void
-_initialize_pascal_valprint (void)
+_initialize_pascal_valprint ()
 {
   add_setshow_boolean_cmd ("pascal_static-members", class_support,
 			   &user_print_options.pascal_static_field_print, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/explore.py ./gdb/python/lib/gdb/command/explore.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/explore.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/command/explore.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # GDB 'explore' command.
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/frame_filters.py ./gdb/python/lib/gdb/command/frame_filters.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/frame_filters.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/command/frame_filters.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Frame-filter commands.
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/__init__.py ./gdb/python/lib/gdb/command/__init__.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/__init__.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/command/__init__.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/pretty_printers.py ./gdb/python/lib/gdb/command/pretty_printers.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/pretty_printers.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/command/pretty_printers.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Pretty-printer commands.
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/prompt.py ./gdb/python/lib/gdb/command/prompt.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/prompt.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/command/prompt.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Extended prompt.
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/type_printers.py ./gdb/python/lib/gdb/command/type_printers.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/type_printers.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/command/type_printers.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Type printer commands.
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/unwinders.py ./gdb/python/lib/gdb/command/unwinders.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/unwinders.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/command/unwinders.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Unwinder commands.
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/xmethods.py ./gdb/python/lib/gdb/command/xmethods.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/command/xmethods.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/command/xmethods.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Xmethod commands.
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/FrameDecorator.py ./gdb/python/lib/gdb/FrameDecorator.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/FrameDecorator.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/FrameDecorator.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/FrameIterator.py ./gdb/python/lib/gdb/FrameIterator.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/FrameIterator.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/FrameIterator.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/frames.py ./gdb/python/lib/gdb/frames.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/frames.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/frames.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Frame-filter commands.
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/function/as_string.py ./gdb/python/lib/gdb/function/as_string.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/function/as_string.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/function/as_string.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/function/caller_is.py ./gdb/python/lib/gdb/function/caller_is.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/function/caller_is.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/function/caller_is.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Caller-is functions.
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/function/__init__.py ./gdb/python/lib/gdb/function/__init__.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/function/__init__.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/function/__init__.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/function/strfns.py ./gdb/python/lib/gdb/function/strfns.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/function/strfns.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/function/strfns.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Useful gdb string convenience functions.
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/__init__.py ./gdb/python/lib/gdb/__init__.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/__init__.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/__init__.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -210,3 +210,17 @@ def find_pc_line(pc):
     """find_pc_line (pc) -> Symtab_and_line.
 Return the gdb.Symtab_and_line object corresponding to the pc value."""
     return current_progspace().find_pc_line(pc)
+
+try:
+    from pygments import formatters, lexers, highlight
+    def colorize(filename, contents):
+        # Don't want any errors.
+        try:
+            lexer = lexers.get_lexer_for_filename(filename, stripnl=False)
+            formatter = formatters.TerminalFormatter()
+            return highlight(contents, lexer, formatter)
+        except:
+            return None
+except:
+    def colorize(filename, contents):
+        return None
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/printer/bound_registers.py ./gdb/python/lib/gdb/printer/bound_registers.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/printer/bound_registers.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/printer/bound_registers.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Pretty-printers for bounds registers.
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/printer/__init__.py ./gdb/python/lib/gdb/printer/__init__.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/printer/__init__.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/printer/__init__.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/printing.py ./gdb/python/lib/gdb/printing.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/printing.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/printing.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Pretty-printer utilities.
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/prompt.py ./gdb/python/lib/gdb/prompt.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/prompt.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/prompt.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Extended prompt utilities.
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/types.py ./gdb/python/lib/gdb/types.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/types.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/types.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Type utilities.
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/unwinder.py ./gdb/python/lib/gdb/unwinder.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/unwinder.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/unwinder.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/xmethod.py ./gdb/python/lib/gdb/xmethod.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/lib/gdb/xmethod.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/lib/gdb/xmethod.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Python side of the support for xmethods.
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-all-events.def ./gdb/python/py-all-events.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-all-events.def	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-all-events.def	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python event definitions -*- c++ -*-
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-arch.c ./gdb/python/py-arch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-arch.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-arch.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to architecture
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -226,6 +226,42 @@ archpy_disassemble (PyObject *self, PyOb
   return result_list.release ();
 }
 
+/* Implementation of gdb.Architecture.registers (self, reggroup) -> Iterator.
+   Returns an iterator over register descriptors for registers in GROUP
+   within the architecture SELF.  */
+
+static PyObject *
+archpy_registers (PyObject *self, PyObject *args, PyObject *kw)
+{
+  static const char *keywords[] = { "reggroup", NULL };
+  struct gdbarch *gdbarch = NULL;
+  const char *group_name = NULL;
+
+  /* Parse method arguments.  */
+  if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "|s", keywords,
+					&group_name))
+    return NULL;
+
+  /* Extract the gdbarch from the self object.  */
+  ARCHPY_REQUIRE_VALID (self, gdbarch);
+
+  return gdbpy_new_register_descriptor_iterator (gdbarch, group_name);
+}
+
+/* Implementation of gdb.Architecture.register_groups (self) -> Iterator.
+   Returns an iterator that will give up all valid register groups in the
+   architecture SELF.  */
+
+static PyObject *
+archpy_register_groups (PyObject *self, PyObject *args)
+{
+  struct gdbarch *gdbarch = NULL;
+
+  /* Extract the gdbarch from the self object.  */
+  ARCHPY_REQUIRE_VALID (self, gdbarch);
+  return gdbpy_new_reggroup_iterator (gdbarch);
+}
+
 /* Initializes the Architecture class in the gdb module.  */
 
 int
@@ -249,6 +285,15 @@ Return the name of the architecture as a
     "disassemble (start_pc [, end_pc [, count]]) -> List.\n\
 Return a list of at most COUNT disassembled instructions from START_PC to\n\
 END_PC." },
+  { "registers", (PyCFunction) archpy_registers,
+    METH_VARARGS | METH_KEYWORDS,
+    "registers ([ group-name ]) -> Iterator.\n\
+Return an iterator of register descriptors for the registers in register\n\
+group GROUP-NAME." },
+  { "register_groups", archpy_register_groups,
+    METH_NOARGS,
+    "register_groups () -> Iterator.\n\
+Return an iterator over all of the register groups in this architecture." },
   {NULL}  /* Sentinel */
 };
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-auto-load.c ./gdb/python/py-auto-load.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-auto-load.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-auto-load.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB routines for supporting auto-loaded scripts.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -84,12 +84,12 @@ Show the debugger's behaviour regarding
 			   NULL, NULL, show_auto_load_python_scripts,
 			   &setlist, &showlist);
   cmd_name = "auto-load-scripts";
-  cmd = lookup_cmd (&cmd_name, setlist, "", -1, 1);
+  cmd = lookup_cmd (&cmd_name, setlist, "", NULL, -1, 1);
   deprecate_cmd (cmd, "set auto-load python-scripts");
 
   /* It is needed because lookup_cmd updates the CMD_NAME pointer.  */
   cmd_name = "auto-load-scripts";
-  cmd = lookup_cmd (&cmd_name, showlist, "", -1, 1);
+  cmd = lookup_cmd (&cmd_name, showlist, "", NULL, -1, 1);
   deprecate_cmd (cmd, "show auto-load python-scripts");
 
   add_cmd ("python-scripts", class_info, info_auto_load_python_scripts,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-block.c ./gdb/python/py-block.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-block.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-block.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to blocks.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-bpevent.c ./gdb/python/py-bpevent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-bpevent.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-bpevent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior breakpoint stop events.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-breakpoint.c ./gdb/python/py-breakpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-breakpoint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-breakpoint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to breakpoints
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-cmd.c ./gdb/python/py-cmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-cmd.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-cmd.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* gdb commands implemented in Python
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -390,7 +390,7 @@ gdbpy_parse_command_name (const char *na
   std::string prefix_text (name, i + 1);
 
   prefix_text2 = prefix_text.c_str ();
-  elt = lookup_cmd_1 (&prefix_text2, *start_list, NULL, 1);
+  elt = lookup_cmd_1 (&prefix_text2, *start_list, NULL, NULL, 1);
   if (elt == NULL || elt == CMD_LIST_AMBIGUOUS)
     {
       PyErr_Format (PyExc_RuntimeError, _("Could not find command prefix %s."),
@@ -465,7 +465,8 @@ cmdpy_init (PyObject *self, PyObject *ar
       && cmdtype != class_files && cmdtype != class_support
       && cmdtype != class_info && cmdtype != class_breakpoint
       && cmdtype != class_trace && cmdtype != class_obscure
-      && cmdtype != class_maintenance && cmdtype != class_user)
+      && cmdtype != class_maintenance && cmdtype != class_user
+      && cmdtype != class_tui)
     {
       PyErr_Format (PyExc_RuntimeError, _("Invalid command class argument."));
       return -1;
@@ -593,8 +594,7 @@ gdbpy_initialize_commands (void)
   if (PyType_Ready (&cmdpy_object_type) < 0)
     return -1;
 
-  /* Note: alias and user are special; pseudo appears to be unused,
-     and there is no reason to expose tui, I think.  */
+  /* Note: alias and user are special.  */
   if (PyModule_AddIntConstant (gdb_module, "COMMAND_NONE", no_class) < 0
       || PyModule_AddIntConstant (gdb_module, "COMMAND_RUNNING", class_run) < 0
       || PyModule_AddIntConstant (gdb_module, "COMMAND_DATA", class_vars) < 0
@@ -611,7 +611,8 @@ gdbpy_initialize_commands (void)
 				  class_obscure) < 0
       || PyModule_AddIntConstant (gdb_module, "COMMAND_MAINTENANCE",
 				  class_maintenance) < 0
-      || PyModule_AddIntConstant (gdb_module, "COMMAND_USER", class_user) < 0)
+      || PyModule_AddIntConstant (gdb_module, "COMMAND_USER", class_user) < 0
+      || PyModule_AddIntConstant (gdb_module, "COMMAND_TUI", class_tui) < 0)
     return -1;
 
   for (i = 0; i < N_COMPLETERS; ++i)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-continueevent.c ./gdb/python/py-continueevent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-continueevent.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-continueevent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior continue events.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-event.c ./gdb/python/py-event.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-event.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-event.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior events.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-event.h ./gdb/python/py-event.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-event.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-event.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior events.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-events.h ./gdb/python/py-events.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-events.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-events.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior events.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-event-types.def ./gdb/python/py-event-types.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-event-types.def	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-event-types.def	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python event definitions -*- c++ -*-
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-evtregistry.c ./gdb/python/py-evtregistry.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-evtregistry.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-evtregistry.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior thread event registries.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-evts.c ./gdb/python/py-evts.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-evts.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-evts.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior events.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-exitedevent.c ./gdb/python/py-exitedevent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-exitedevent.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-exitedevent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior exit events.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-finishbreakpoint.c ./gdb/python/py-finishbreakpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-finishbreakpoint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-finishbreakpoint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to finish breakpoints
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -253,7 +253,7 @@ bpfinishpy_init (PyObject *self, PyObjec
 		check_typedef (TYPE_TARGET_TYPE (SYMBOL_TYPE (function)));
 
               /* Remember only non-void return types.  */
-              if (TYPE_CODE (ret_type) != TYPE_CODE_VOID)
+              if (ret_type->code () != TYPE_CODE_VOID)
                 {
                   struct value *func_value;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-frame.c ./gdb/python/py-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-frame.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-frame.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to stack frames
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,7 +27,6 @@
 #include "python-internal.h"
 #include "symfile.h"
 #include "objfiles.h"
-#include "user-regs.h"
 
 typedef struct {
   PyObject_HEAD
@@ -242,12 +241,11 @@ frapy_pc (PyObject *self, PyObject *args
 static PyObject *
 frapy_read_register (PyObject *self, PyObject *args)
 {
-  const char *regnum_str;
+  PyObject *pyo_reg_id;
   struct value *val = NULL;
 
-  if (!PyArg_ParseTuple (args, "s", &regnum_str))
+  if (!PyArg_UnpackTuple (args, "read_register", 1, 1, &pyo_reg_id))
     return NULL;
-
   try
     {
       struct frame_info *frame;
@@ -255,14 +253,18 @@ frapy_read_register (PyObject *self, PyO
 
       FRAPY_REQUIRE_VALID (self, frame);
 
-      regnum = user_reg_map_name_to_regnum (get_frame_arch (frame),
-                                            regnum_str,
-                                            strlen (regnum_str));
-      if (regnum >= 0)
-        val = value_of_register (regnum, frame);
+      if (!gdbpy_parse_register_id (get_frame_arch (frame), pyo_reg_id,
+				    &regnum))
+	{
+	  PyErr_SetString (PyExc_ValueError, "Bad register");
+	  return NULL;
+	}
+
+      gdb_assert (regnum >= 0);
+      val = value_of_register (regnum, frame);
 
       if (val == NULL)
-        PyErr_SetString (PyExc_ValueError, _("Unknown register."));
+        PyErr_SetString (PyExc_ValueError, _("Can't read register."));
     }
   catch (const gdb_exception &except)
     {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-framefilter.c ./gdb/python/py-framefilter.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-framefilter.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-framefilter.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python frame filters
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -109,7 +109,7 @@ extract_sym (PyObject *obj, gdb::unique_
 	 from the symbol.  If mode is not "auto", then the language
 	 has been explicitly set, use that.  */
       if (language_mode == language_mode_auto)
-	*language = language_def (SYMBOL_LANGUAGE (*sym));
+	*language = language_def ((*sym)->language ());
       else
 	*language = current_language;
     }
@@ -240,9 +240,9 @@ py_print_value (struct ui_out *out, stru
       if (args_type == MI_PRINT_ALL_VALUES)
 	should_print = 1;
       else if (args_type == MI_PRINT_SIMPLE_VALUES
-	       && TYPE_CODE (type) != TYPE_CODE_ARRAY
-	       && TYPE_CODE (type) != TYPE_CODE_STRUCT
-	       && TYPE_CODE (type) != TYPE_CODE_UNION)
+	       && type->code () != TYPE_CODE_ARRAY
+	       && type->code () != TYPE_CODE_STRUCT
+	       && type->code () != TYPE_CODE_UNION)
 	should_print = 1;
     }
   else if (args_type != NO_VALUES)
@@ -320,7 +320,7 @@ py_print_single_arg (struct ui_out *out,
     {
       if (fa->val == NULL && fa->error == NULL)
 	return;
-      language = language_def (SYMBOL_LANGUAGE (fa->sym));
+      language = language_def (fa->sym->language ());
       val = fa->val;
     }
   else
@@ -349,14 +349,14 @@ py_print_single_arg (struct ui_out *out,
       string_file stb;
 
       fprintf_symbol_filtered (&stb, fa->sym->print_name (),
-			       SYMBOL_LANGUAGE (fa->sym),
+			       fa->sym->language (),
 			       DMGL_PARAMS | DMGL_ANSI);
       if (fa->entry_kind == print_entry_values_compact)
 	{
 	  stb.puts ("=");
 
 	  fprintf_symbol_filtered (&stb, fa->sym->print_name (),
-				   SYMBOL_LANGUAGE (fa->sym),
+				   fa->sym->language (),
 				   DMGL_PARAMS | DMGL_ANSI);
 	}
       if (fa->entry_kind == print_entry_values_only
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-function.c ./gdb/python/py-function.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-function.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-function.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convenience functions implemented in Python.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-gdb-readline.c ./gdb/python/py-gdb-readline.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-gdb-readline.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-gdb-readline.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Readline support for Python.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-inferior.c ./gdb/python/py-inferior.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-inferior.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-inferior.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferiors.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -193,7 +193,7 @@ python_new_objfile (struct objfile *objf
     return;
 
   gdbpy_enter enter_py (objfile != NULL
-			? get_objfile_arch (objfile)
+			? objfile->arch ()
 			: target_gdbarch (),
 			current_language);
 
@@ -462,18 +462,6 @@ infpy_get_progspace (PyObject *self, voi
   return pspace_to_pspace_object (pspace).release ();
 }
 
-static int
-build_inferior_list (struct inferior *inf, void *arg)
-{
-  PyObject *list = (PyObject *) arg;
-  gdbpy_ref<inferior_object> inferior = inferior_to_inferior_object (inf);
-
-  if (inferior == NULL)
-    return 0;
-
-  return PyList_Append (list, (PyObject *) inferior.get ()) ? 1 : 0;
-}
-
 /* Implementation of gdb.inferiors () -> (gdb.Inferior, ...).
    Returns a tuple of all inferiors.  */
 PyObject *
@@ -483,8 +471,16 @@ gdbpy_inferiors (PyObject *unused, PyObj
   if (list == NULL)
     return NULL;
 
-  if (iterate_over_inferiors (build_inferior_list, list.get ()))
-    return NULL;
+  for (inferior *inf : all_inferiors ())
+    {
+      gdbpy_ref<inferior_object> inferior = inferior_to_inferior_object (inf);
+
+      if (inferior == NULL)
+	continue;
+
+      if (PyList_Append (list.get (), (PyObject *) inferior.get ()) != 0)
+	return NULL;
+    }
 
   return PyList_AsTuple (list.get ());
 }
@@ -740,7 +736,7 @@ infpy_search_memory (PyObject *self, PyO
   GDB_PY_HANDLE_EXCEPTION (except);
 
   if (found)
-    return PyLong_FromLong (found_addr);
+    return gdb_py_object_from_ulongest (found_addr).release ();
   else
     Py_RETURN_NONE;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-infevents.c ./gdb/python/py-infevents.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-infevents.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-infevents.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior function events.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -48,7 +48,7 @@ create_inferior_call_event_object (infer
   if (evpy_add_attribute (event.get (), "ptid", ptid_obj.get ()) < 0)
     return NULL;
 
-  gdbpy_ref<> addr_obj (PyLong_FromLongLong (addr));
+  gdbpy_ref<> addr_obj = gdb_py_object_from_ulongest (addr);
   if (addr_obj == NULL)
     return NULL;
 
@@ -97,7 +97,7 @@ create_memory_changed_event_object (CORE
   if (event == NULL)
     return NULL;
 
-  gdbpy_ref<> addr_obj (PyLong_FromLongLong (addr));
+  gdbpy_ref<> addr_obj = gdb_py_object_from_ulongest (addr);
   if (addr_obj == NULL)
     return NULL;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-infthread.c ./gdb/python/py-infthread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-infthread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-infthread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior threads.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-instruction.c ./gdb/python/py-instruction.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-instruction.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-instruction.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to instruction objects.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-instruction.h ./gdb/python/py-instruction.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-instruction.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-instruction.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to instruction objects.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-lazy-string.c ./gdb/python/py-lazy-string.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-lazy-string.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-lazy-string.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to lazy strings.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -120,7 +120,7 @@ stpy_convert_to_value (PyObject *self, P
 
       gdb_assert (type != NULL);
       realtype = check_typedef (type);
-      switch (TYPE_CODE (realtype))
+      switch (realtype->code ())
 	{
 	case TYPE_CODE_PTR:
 	  /* If a length is specified we need to convert this to an array
@@ -194,7 +194,7 @@ gdbpy_create_lazy_string_object (CORE_AD
     }
 
   realtype = check_typedef (type);
-  switch (TYPE_CODE (realtype))
+  switch (realtype->code ())
     {
     case TYPE_CODE_ARRAY:
       {
@@ -258,7 +258,7 @@ stpy_lazy_string_elt_type (lazy_string_o
   gdb_assert (type != NULL);
   realtype = check_typedef (type);
 
-  switch (TYPE_CODE (realtype))
+  switch (realtype->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_ARRAY:
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-linetable.c ./gdb/python/py-linetable.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-linetable.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-linetable.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to line tables.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -336,7 +336,7 @@ ltpy_entry_get_pc (PyObject *self, void
 {
   linetable_entry_object *obj = (linetable_entry_object *) self;
 
-  return  gdb_py_object_from_longest (obj->pc).release ();
+  return gdb_py_object_from_ulongest (obj->pc).release ();
 }
 
 /* LineTable iterator functions.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-newobjfileevent.c ./gdb/python/py-newobjfileevent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-newobjfileevent.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-newobjfileevent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to new object file loading events.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-objfile.c ./gdb/python/py-objfile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-objfile.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-objfile.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to objfiles.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -661,7 +661,7 @@ gdbpy_lookup_objfile (PyObject *self, Py
 static void
 py_free_objfile (struct objfile *objfile, void *datum)
 {
-  gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
+  gdbpy_enter enter_py (objfile->arch (), current_language);
   gdbpy_ref<objfile_object> object ((objfile_object *) datum);
   object->objfile = NULL;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-param.c ./gdb/python/py-param.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-param.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-param.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB parameters implemented in Python
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -569,12 +569,12 @@ add_setshow_generic (int parmclass, enum
   /* Lookup created parameter, and register Python object against the
      parameter context.  Perform this task against both lists.  */
   tmp_name = cmd_name;
-  param = lookup_cmd (&tmp_name, *show_list, "", 0, 1);
+  param = lookup_cmd (&tmp_name, *show_list, "", NULL, 0, 1);
   if (param)
     set_cmd_context (param, self);
 
   tmp_name = cmd_name;
-  param = lookup_cmd (&tmp_name, *set_list, "", 0, 1);
+  param = lookup_cmd (&tmp_name, *set_list, "", NULL, 0, 1);
   if (param)
     set_cmd_context (param, self);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-prettyprint.c ./gdb/python/py-prettyprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-prettyprint.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-prettyprint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python pretty-printing
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -558,22 +558,20 @@ print_children (PyObject *printer, const
 
 enum ext_lang_rc
 gdbpy_apply_val_pretty_printer (const struct extension_language_defn *extlang,
-				struct type *type,
-				LONGEST embedded_offset, CORE_ADDR address,
+				struct value *value,
 				struct ui_file *stream, int recurse,
-				struct value *val,
 				const struct value_print_options *options,
 				const struct language_defn *language)
 {
+  struct type *type = value_type (value);
   struct gdbarch *gdbarch = get_type_arch (type);
-  struct value *value;
   enum string_repr_result print_result;
 
-  if (value_lazy (val))
-    value_fetch_lazy (val);
+  if (value_lazy (value))
+    value_fetch_lazy (value);
 
   /* No pretty-printer support for unavailable values.  */
-  if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
+  if (!value_bytes_available (value, 0, TYPE_LENGTH (type)))
     return EXT_LANG_RC_NOP;
 
   if (!gdb_python_initialized)
@@ -581,10 +579,7 @@ gdbpy_apply_val_pretty_printer (const st
 
   gdbpy_enter enter_py (gdbarch, language);
 
-  /* Instantiate the printer.  */
-  value = value_from_component (val, type, embedded_offset);
-
-  gdbpy_ref<> val_obj (value_to_value_object (value));
+  gdbpy_ref<> val_obj (value_to_value_object_no_release (value));
   if (val_obj == NULL)
     {
       print_stack_unless_memory_error (stream);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-progspace.c ./gdb/python/py-progspace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-progspace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-progspace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to program spaces.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record-btrace.c ./gdb/python/py-record-btrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record-btrace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-record-btrace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to btrace instruction history.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -808,7 +808,7 @@ recpy_bt_goto (PyObject *self, PyObject
 
 struct PyMethodDef btpy_list_methods[] =
 {
-  { "count", btpy_list_count, METH_O, "count number of occurences"},
+  { "count", btpy_list_count, METH_O, "count number of occurrences"},
   { "index", btpy_list_index, METH_O, "index of entry"},
   {NULL}
 };
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record-btrace.h ./gdb/python/py-record-btrace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record-btrace.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-record-btrace.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to btrace record targets.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record.c ./gdb/python/py-record.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-record.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to record targets.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record-full.c ./gdb/python/py-record-full.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record-full.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-record-full.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to btrace instruction history.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record-full.h ./gdb/python/py-record-full.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record-full.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-record-full.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to full record targets.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record.h ./gdb/python/py-record.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-record.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-record.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to record targets.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-ref.h ./gdb/python/py-ref.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-ref.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-ref.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python reference-holding class
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-registers.c ./gdb/python/py-registers.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-registers.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/python/py-registers.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,613 @@
+/* Python interface to register, and register group information.
+
+   Copyright (C) 2020-2021 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 "gdbarch.h"
+#include "arch-utils.h"
+#include "disasm.h"
+#include "reggroups.h"
+#include "python-internal.h"
+#include "user-regs.h"
+#include <unordered_map>
+
+/* Token to access per-gdbarch data related to register descriptors.  */
+static struct gdbarch_data *gdbpy_register_object_data = NULL;
+
+/* Structure for iterator over register descriptors.  */
+typedef struct {
+  PyObject_HEAD
+
+  /* The register group that the user is iterating over.  This will never
+     be NULL.  */
+  struct reggroup *reggroup;
+
+  /* The next register number to lookup.  Starts at 0 and counts up.  */
+  int regnum;
+
+  /* Pointer back to the architecture we're finding registers for.  */
+  struct gdbarch *gdbarch;
+} register_descriptor_iterator_object;
+
+extern PyTypeObject register_descriptor_iterator_object_type
+    CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("register_descriptor_iterator_object");
+
+/* A register descriptor.  */
+typedef struct {
+  PyObject_HEAD
+
+  /* The register this is a descriptor for.  */
+  int regnum;
+
+  /* The architecture this is a register for.  */
+  struct gdbarch *gdbarch;
+} register_descriptor_object;
+
+extern PyTypeObject register_descriptor_object_type
+    CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("register_descriptor_object");
+
+/* Structure for iterator over register groups.  */
+typedef struct {
+  PyObject_HEAD
+
+  /* The last register group returned.  Initially this will be NULL.  */
+  struct reggroup *reggroup;
+
+  /* Pointer back to the architecture we're finding registers for.  */
+  struct gdbarch *gdbarch;
+} reggroup_iterator_object;
+
+extern PyTypeObject reggroup_iterator_object_type
+    CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("reggroup_iterator_object");
+
+/* A register group object.  */
+typedef struct {
+  PyObject_HEAD
+
+  /* The register group being described.  */
+  struct reggroup *reggroup;
+} reggroup_object;
+
+extern PyTypeObject reggroup_object_type
+    CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("reggroup_object");
+
+/* Associates a vector of gdb.RegisterDescriptor objects with GDBARCH as
+   gdbarch_data via the gdbarch post init registration mechanism
+   (gdbarch_data_register_post_init).  */
+
+static void *
+gdbpy_register_object_data_init (struct gdbarch *gdbarch)
+{
+  return new std::vector<gdbpy_ref<>>;
+}
+
+/* Return a gdb.RegisterGroup object wrapping REGGROUP.  The register
+   group objects are cached, and the same Python object will always be
+   returned for the same REGGROUP pointer.  */
+
+static gdbpy_ref<>
+gdbpy_get_reggroup (struct reggroup *reggroup)
+{
+  /* Map from GDB's internal reggroup objects to the Python representation.
+     GDB's reggroups are global, and are never deleted, so using a map like
+     this is safe.  */
+  static std::unordered_map<struct reggroup *,gdbpy_ref<>>
+    gdbpy_reggroup_object_map;
+
+  /* If there is not already a suitable Python object in the map then
+     create a new one, and add it to the map.  */
+  if (gdbpy_reggroup_object_map[reggroup] == nullptr)
+    {
+      /* Create a new object and fill in its details.  */
+      gdbpy_ref<reggroup_object> group
+	(PyObject_New (reggroup_object, &reggroup_object_type));
+      if (group == NULL)
+	return NULL;
+      group->reggroup = reggroup;
+      gdbpy_reggroup_object_map[reggroup]
+	= gdbpy_ref<> ((PyObject *) group.release ());
+    }
+
+  /* Fetch the Python object wrapping REGGROUP from the map, increasing
+     the reference count is handled by the gdbpy_ref class.  */
+  return gdbpy_reggroup_object_map[reggroup];
+}
+
+/* Convert a gdb.RegisterGroup to a string, it just returns the name of
+   the register group.  */
+
+static PyObject *
+gdbpy_reggroup_to_string (PyObject *self)
+{
+  reggroup_object *group = (reggroup_object *) self;
+  struct reggroup *reggroup = group->reggroup;
+
+  const char *name = reggroup_name (reggroup);
+  return PyString_FromString (name);
+}
+
+/* Implement gdb.RegisterGroup.name (self) -> String.
+   Return a string that is the name of this register group.  */
+
+static PyObject *
+gdbpy_reggroup_name (PyObject *self, void *closure)
+{
+  return gdbpy_reggroup_to_string (self);
+}
+
+/* Return a gdb.RegisterDescriptor object for REGNUM from GDBARCH.  For
+   each REGNUM (in GDBARCH) only one descriptor is ever created, which is
+   then cached on the GDBARCH.  */
+
+static gdbpy_ref<>
+gdbpy_get_register_descriptor (struct gdbarch *gdbarch,
+			       int regnum)
+{
+  auto &vec
+    = *(std::vector<gdbpy_ref<>> *) gdbarch_data (gdbarch,
+						  gdbpy_register_object_data);
+
+  /* Ensure that we have enough entries in the vector.  */
+  if (vec.size () <= regnum)
+    vec.resize ((regnum + 1), nullptr);
+
+  /* If we don't already have a descriptor for REGNUM in GDBARCH then
+     create one now.  */
+  if (vec[regnum] == nullptr)
+    {
+      gdbpy_ref <register_descriptor_object> reg
+	(PyObject_New (register_descriptor_object,
+		       &register_descriptor_object_type));
+      if (reg == NULL)
+	return NULL;
+      reg->regnum = regnum;
+      reg->gdbarch = gdbarch;
+      vec[regnum] = gdbpy_ref<> ((PyObject *) reg.release ());
+    }
+
+  /* Grab the register descriptor from the vector, the reference count is
+     automatically incremented thanks to gdbpy_ref.  */
+  return vec[regnum];
+}
+
+/* Convert the register descriptor to a string.  */
+
+static PyObject *
+gdbpy_register_descriptor_to_string (PyObject *self)
+{
+  register_descriptor_object *reg
+    = (register_descriptor_object *) self;
+  struct gdbarch *gdbarch = reg->gdbarch;
+  int regnum = reg->regnum;
+
+  const char *name = gdbarch_register_name (gdbarch, regnum);
+  return PyString_FromString (name);
+}
+
+/* Implement gdb.RegisterDescriptor.name attribute get function.  Return a
+   string that is the name of this register.  Due to checking when register
+   descriptors are created the name will never by the empty string.  */
+
+static PyObject *
+gdbpy_register_descriptor_name (PyObject *self, void *closure)
+{
+  return gdbpy_register_descriptor_to_string (self);
+}
+
+/* Return a reference to the gdb.RegisterGroupsIterator object.  */
+
+static PyObject *
+gdbpy_reggroup_iter (PyObject *self)
+{
+  Py_INCREF (self);
+  return self;
+}
+
+/* Return the next gdb.RegisterGroup object from the iterator.  */
+
+static PyObject *
+gdbpy_reggroup_iter_next (PyObject *self)
+{
+  reggroup_iterator_object *iter_obj
+    = (reggroup_iterator_object *) self;
+  struct gdbarch *gdbarch = iter_obj->gdbarch;
+
+  struct reggroup *next_group = reggroup_next (gdbarch, iter_obj->reggroup);
+  if (next_group == NULL)
+    {
+      PyErr_SetString (PyExc_StopIteration, _("No more groups"));
+      return NULL;
+    }
+
+  iter_obj->reggroup = next_group;
+  return gdbpy_get_reggroup (iter_obj->reggroup).release ();
+}
+
+/* Return a new gdb.RegisterGroupsIterator over all the register groups in
+   GDBARCH.  */
+
+PyObject *
+gdbpy_new_reggroup_iterator (struct gdbarch *gdbarch)
+{
+  gdb_assert (gdbarch != nullptr);
+
+  /* Create a new object and fill in its internal state.  */
+  reggroup_iterator_object *iter
+    = PyObject_New (reggroup_iterator_object,
+		    &reggroup_iterator_object_type);
+  if (iter == NULL)
+    return NULL;
+  iter->reggroup = NULL;
+  iter->gdbarch = gdbarch;
+  return (PyObject *) iter;
+}
+
+/* Create and return a new gdb.RegisterDescriptorIterator object which
+   will iterate over all registers in GROUP_NAME for GDBARCH.  If
+   GROUP_NAME is either NULL or the empty string then the ALL_REGGROUP is
+   used, otherwise lookup the register group matching GROUP_NAME and use
+   that.
+
+   This function can return NULL if GROUP_NAME isn't found.  */
+
+PyObject *
+gdbpy_new_register_descriptor_iterator (struct gdbarch *gdbarch,
+					const char *group_name)
+{
+  struct reggroup *grp = NULL;
+
+  /* Lookup the requested register group, or find the default.  */
+  if (group_name == NULL || *group_name == '\0')
+    grp = all_reggroup;
+  else
+    {
+      grp = reggroup_find (gdbarch, group_name);
+      if (grp == NULL)
+	{
+	  PyErr_SetString (PyExc_ValueError,
+			   _("Unknown register group name."));
+	  return NULL;
+	}
+    }
+  /* Create a new iterator object initialised for this architecture and
+     fill in all of the details.  */
+  register_descriptor_iterator_object *iter
+    = PyObject_New (register_descriptor_iterator_object,
+		    &register_descriptor_iterator_object_type);
+  if (iter == NULL)
+    return NULL;
+  iter->regnum = 0;
+  iter->gdbarch = gdbarch;
+  gdb_assert (grp != NULL);
+  iter->reggroup = grp;
+
+  return (PyObject *) iter;
+}
+
+/* Return a reference to the gdb.RegisterDescriptorIterator object.  */
+
+static PyObject *
+gdbpy_register_descriptor_iter (PyObject *self)
+{
+  Py_INCREF (self);
+  return self;
+}
+
+/* Return the next register name.  */
+
+static PyObject *
+gdbpy_register_descriptor_iter_next (PyObject *self)
+{
+  register_descriptor_iterator_object *iter_obj
+    = (register_descriptor_iterator_object *) self;
+  struct gdbarch *gdbarch = iter_obj->gdbarch;
+
+  do
+    {
+      if (iter_obj->regnum >= gdbarch_num_cooked_regs (gdbarch))
+	{
+	  PyErr_SetString (PyExc_StopIteration, _("No more registers"));
+	  return NULL;
+	}
+
+      const char *name = nullptr;
+      int regnum = iter_obj->regnum;
+      if (gdbarch_register_reggroup_p (gdbarch, regnum,
+				       iter_obj->reggroup))
+	name = gdbarch_register_name (gdbarch, regnum);
+      iter_obj->regnum++;
+
+      if (name != nullptr && *name != '\0')
+	return gdbpy_get_register_descriptor (gdbarch, regnum).release ();
+    }
+  while (true);
+}
+
+/* Implement:
+
+   gdb.RegisterDescriptorIterator.find (self, name) -> gdb.RegisterDescriptor
+
+   Look up a descriptor for register with NAME.  If no matching register is
+   found then return None.  */
+
+static PyObject *
+register_descriptor_iter_find (PyObject *self, PyObject *args, PyObject *kw)
+{
+  static const char *keywords[] = { "name", NULL };
+  const char *register_name = NULL;
+
+  register_descriptor_iterator_object *iter_obj
+    = (register_descriptor_iterator_object *) self;
+  struct gdbarch *gdbarch = iter_obj->gdbarch;
+
+  if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s", keywords,
+					&register_name))
+    return NULL;
+
+  if (register_name != NULL && *register_name != '\0')
+    {
+      int regnum = user_reg_map_name_to_regnum (gdbarch, register_name,
+						strlen (register_name));
+      if (regnum >= 0)
+	return gdbpy_get_register_descriptor (gdbarch, regnum).release ();
+    }
+
+  Py_RETURN_NONE;
+}
+
+/* See python-internal.h.  */
+
+bool
+gdbpy_parse_register_id (struct gdbarch *gdbarch, PyObject *pyo_reg_id,
+			 int *reg_num)
+{
+  gdb_assert (pyo_reg_id != NULL);
+
+  /* The register could be a string, its name.  */
+  if (gdbpy_is_string (pyo_reg_id))
+    {
+      gdb::unique_xmalloc_ptr<char> reg_name (gdbpy_obj_to_string (pyo_reg_id));
+
+      if (reg_name != NULL)
+	{
+	  *reg_num = user_reg_map_name_to_regnum (gdbarch, reg_name.get (),
+						  strlen (reg_name.get ()));
+	  return *reg_num >= 0;
+	}
+    }
+  /* The register could be its internal GDB register number.  */
+  else if (PyInt_Check (pyo_reg_id))
+    {
+      long value;
+      if (gdb_py_int_as_long (pyo_reg_id, &value) && (int) value == value)
+        {
+	  if (user_reg_map_regnum_to_name (gdbarch, value) != NULL)
+	    {
+	      *reg_num = (int) value;
+	      return true;
+	    }
+        }
+    }
+  /* The register could be a gdb.RegisterDescriptor object.  */
+  else if (PyObject_IsInstance (pyo_reg_id,
+			   (PyObject *) &register_descriptor_object_type))
+    {
+      register_descriptor_object *reg
+	= (register_descriptor_object *) pyo_reg_id;
+      if (reg->gdbarch == gdbarch)
+	{
+	  *reg_num = reg->regnum;
+	  return true;
+	}
+      else
+	PyErr_SetString (PyExc_ValueError,
+			 _("Invalid Architecture in RegisterDescriptor"));
+    }
+
+  gdb_assert (PyErr_Occurred ());
+  return false;
+}
+
+/* Initializes the new Python classes from this file in the gdb module.  */
+
+int
+gdbpy_initialize_registers ()
+{
+  gdbpy_register_object_data
+    = gdbarch_data_register_post_init (gdbpy_register_object_data_init);
+
+  register_descriptor_object_type.tp_new = PyType_GenericNew;
+  if (PyType_Ready (&register_descriptor_object_type) < 0)
+    return -1;
+  if (gdb_pymodule_addobject
+      (gdb_module, "RegisterDescriptor",
+       (PyObject *) &register_descriptor_object_type) < 0)
+    return -1;
+
+  reggroup_iterator_object_type.tp_new = PyType_GenericNew;
+  if (PyType_Ready (&reggroup_iterator_object_type) < 0)
+    return -1;
+  if (gdb_pymodule_addobject
+      (gdb_module, "RegisterGroupsIterator",
+       (PyObject *) &reggroup_iterator_object_type) < 0)
+    return -1;
+
+  reggroup_object_type.tp_new = PyType_GenericNew;
+  if (PyType_Ready (&reggroup_object_type) < 0)
+    return -1;
+  if (gdb_pymodule_addobject
+      (gdb_module, "RegisterGroup",
+       (PyObject *) &reggroup_object_type) < 0)
+    return -1;
+
+  register_descriptor_iterator_object_type.tp_new = PyType_GenericNew;
+  if (PyType_Ready (&register_descriptor_iterator_object_type) < 0)
+    return -1;
+  return (gdb_pymodule_addobject
+	  (gdb_module, "RegisterDescriptorIterator",
+	   (PyObject *) &register_descriptor_iterator_object_type));
+}
+
+static PyMethodDef register_descriptor_iterator_object_methods [] = {
+  { "find", (PyCFunction) register_descriptor_iter_find,
+    METH_VARARGS | METH_KEYWORDS,
+    "registers (name) -> gdb.RegisterDescriptor.\n\
+Return a register descriptor for the register NAME, or None if no register\n\
+with that name exists in this iterator." },
+  {NULL}  /* Sentinel */
+};
+
+PyTypeObject register_descriptor_iterator_object_type = {
+  PyVarObject_HEAD_INIT (NULL, 0)
+  "gdb.RegisterDescriptorIterator",	  	/*tp_name*/
+  sizeof (register_descriptor_iterator_object),	/*tp_basicsize*/
+  0,				  /*tp_itemsize*/
+  0,				  /*tp_dealloc*/
+  0,				  /*tp_print*/
+  0,				  /*tp_getattr*/
+  0,				  /*tp_setattr*/
+  0,				  /*tp_compare*/
+  0,				  /*tp_repr*/
+  0,				  /*tp_as_number*/
+  0,				  /*tp_as_sequence*/
+  0,				  /*tp_as_mapping*/
+  0,				  /*tp_hash */
+  0,				  /*tp_call*/
+  0,				  /*tp_str*/
+  0,				  /*tp_getattro*/
+  0,				  /*tp_setattro*/
+  0,				  /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER,			/*tp_flags*/
+  "GDB architecture register descriptor iterator object",	/*tp_doc */
+  0,				  /*tp_traverse */
+  0,				  /*tp_clear */
+  0,				  /*tp_richcompare */
+  0,				  /*tp_weaklistoffset */
+  gdbpy_register_descriptor_iter,	  /*tp_iter */
+  gdbpy_register_descriptor_iter_next,  /*tp_iternext */
+  register_descriptor_iterator_object_methods		/*tp_methods */
+};
+
+static gdb_PyGetSetDef gdbpy_register_descriptor_getset[] = {
+  { "name", gdbpy_register_descriptor_name, NULL,
+    "The name of this register.", NULL },
+  { NULL }  /* Sentinel */
+};
+
+PyTypeObject register_descriptor_object_type = {
+  PyVarObject_HEAD_INIT (NULL, 0)
+  "gdb.RegisterDescriptor",	  /*tp_name*/
+  sizeof (register_descriptor_object),	/*tp_basicsize*/
+  0,				  /*tp_itemsize*/
+  0,				  /*tp_dealloc*/
+  0,				  /*tp_print*/
+  0,				  /*tp_getattr*/
+  0,				  /*tp_setattr*/
+  0,				  /*tp_compare*/
+  0,				  /*tp_repr*/
+  0,				  /*tp_as_number*/
+  0,				  /*tp_as_sequence*/
+  0,				  /*tp_as_mapping*/
+  0,				  /*tp_hash */
+  0,				  /*tp_call*/
+  gdbpy_register_descriptor_to_string,			/*tp_str*/
+  0,				  /*tp_getattro*/
+  0,				  /*tp_setattro*/
+  0,				  /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT,		  /*tp_flags*/
+  "GDB architecture register descriptor object",	/*tp_doc */
+  0,				  /*tp_traverse */
+  0,				  /*tp_clear */
+  0,				  /*tp_richcompare */
+  0,				  /*tp_weaklistoffset */
+  0,				  /*tp_iter */
+  0,				  /*tp_iternext */
+  0,				  /*tp_methods */
+  0,				  /*tp_members */
+  gdbpy_register_descriptor_getset			/*tp_getset */
+};
+
+PyTypeObject reggroup_iterator_object_type = {
+  PyVarObject_HEAD_INIT (NULL, 0)
+  "gdb.RegisterGroupsIterator",	  /*tp_name*/
+  sizeof (reggroup_iterator_object),		/*tp_basicsize*/
+  0,				  /*tp_itemsize*/
+  0,				  /*tp_dealloc*/
+  0,				  /*tp_print*/
+  0,				  /*tp_getattr*/
+  0,				  /*tp_setattr*/
+  0,				  /*tp_compare*/
+  0,				  /*tp_repr*/
+  0,				  /*tp_as_number*/
+  0,				  /*tp_as_sequence*/
+  0,				  /*tp_as_mapping*/
+  0,				  /*tp_hash */
+  0,				  /*tp_call*/
+  0,				  /*tp_str*/
+  0,				  /*tp_getattro*/
+  0,				  /*tp_setattro*/
+  0,				  /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER,	/*tp_flags*/
+  "GDB register groups iterator object",	/*tp_doc */
+  0,				  /*tp_traverse */
+  0,				  /*tp_clear */
+  0,				  /*tp_richcompare */
+  0,				  /*tp_weaklistoffset */
+  gdbpy_reggroup_iter,		  /*tp_iter */
+  gdbpy_reggroup_iter_next,	  /*tp_iternext */
+  0				  /*tp_methods */
+};
+
+static gdb_PyGetSetDef gdbpy_reggroup_getset[] = {
+  { "name", gdbpy_reggroup_name, NULL,
+    "The name of this register group.", NULL },
+  { NULL }  /* Sentinel */
+};
+
+PyTypeObject reggroup_object_type = {
+  PyVarObject_HEAD_INIT (NULL, 0)
+  "gdb.RegisterGroup",		  /*tp_name*/
+  sizeof (reggroup_object),	  /*tp_basicsize*/
+  0,				  /*tp_itemsize*/
+  0,				  /*tp_dealloc*/
+  0,				  /*tp_print*/
+  0,				  /*tp_getattr*/
+  0,				  /*tp_setattr*/
+  0,				  /*tp_compare*/
+  0,				  /*tp_repr*/
+  0,				  /*tp_as_number*/
+  0,				  /*tp_as_sequence*/
+  0,				  /*tp_as_mapping*/
+  0,				  /*tp_hash */
+  0,				  /*tp_call*/
+  gdbpy_reggroup_to_string,	  /*tp_str*/
+  0,				  /*tp_getattro*/
+  0,				  /*tp_setattro*/
+  0,				  /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT,		  /*tp_flags*/
+  "GDB register group object",	  /*tp_doc */
+  0,				  /*tp_traverse */
+  0,				  /*tp_clear */
+  0,				  /*tp_richcompare */
+  0,				  /*tp_weaklistoffset */
+  0,				  /*tp_iter */
+  0,				  /*tp_iternext */
+  0,				  /*tp_methods */
+  0,				  /*tp_members */
+  gdbpy_reggroup_getset		  /*tp_getset */
+};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-signalevent.c ./gdb/python/py-signalevent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-signalevent.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-signalevent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior signal stop events.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-stopevent.c ./gdb/python/py-stopevent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-stopevent.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-stopevent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior stop events.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-stopevent.h ./gdb/python/py-stopevent.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-stopevent.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-stopevent.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to inferior events.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-symbol.c ./gdb/python/py-symbol.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-symbol.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-symbol.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to symbols.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-symtab.c ./gdb/python/py-symtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-symtab.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-symtab.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to symbol tables.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/python.c ./gdb/python/python.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/python.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/python.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* General python/gdb code
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,7 +27,7 @@
 #include "objfiles.h"
 #include "value.h"
 #include "language.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "readline/tilde.h"
 #include "python.h"
 #include "extension-priv.h"
@@ -149,6 +149,8 @@ static void gdbpy_set_quit_flag (const s
 static int gdbpy_check_quit_flag (const struct extension_language_defn *);
 static enum ext_lang_rc gdbpy_before_prompt_hook
   (const struct extension_language_defn *, const char *current_gdb_prompt);
+static gdb::optional<std::string> gdbpy_colorize
+  (const std::string &filename, const std::string &contents);
 
 /* The interface between gdb proper and loading of python scripts.  */
 
@@ -188,6 +190,8 @@ const struct extension_language_ops pyth
   gdbpy_before_prompt_hook,
 
   gdbpy_get_matching_xmethod_workers,
+
+  gdbpy_colorize,
 };
 
 /* Architecture and language to be used in callbacks from
@@ -234,6 +238,30 @@ gdbpy_enter::~gdbpy_enter ()
   PyGILState_Release (m_state);
 }
 
+/* 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;
+};
+
 /* Set the quit flag.  */
 
 static void
@@ -247,6 +275,10 @@ gdbpy_set_quit_flag (const struct extens
 static int
 gdbpy_check_quit_flag (const struct extension_language_defn *extlang)
 {
+  if (!gdb_python_initialized)
+    return 0;
+
+  gdbpy_gil gil;
   return PyOS_InterruptOccurred ();
 }
 
@@ -620,6 +652,12 @@ execute_gdb_command (PyObject *self, PyO
     }
   catch (const gdb_exception &except)
     {
+      /* If an exception occurred then we won't hit normal_stop (), or have
+	 an exception reach the top level of the event loop, which are the
+	 two usual places in which stdin would be re-enabled. So, before we
+	 convert the exception and continue back in Python, we should
+	 re-enable stdin here.  */
+      async_enable_stdin ();
       GDB_PY_HANDLE_EXCEPTION (except);
     }
 
@@ -810,6 +848,15 @@ gdbpy_decode_line (PyObject *self, PyObj
   if (! PyArg_ParseTuple (args, "|s", &arg))
     return NULL;
 
+  /* Treat a string consisting of just whitespace the same as
+     NULL.  */
+  if (arg != NULL)
+    {
+      arg = skip_spaces (arg);
+      if (*arg == '\0')
+	arg = NULL;
+    }
+
   if (arg != NULL)
     location = string_to_event_location_basic (&arg, python_language,
 					       symbol_name_match_type::WILD);
@@ -924,30 +971,6 @@ 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
 {
@@ -956,7 +979,7 @@ struct gdbpy_event
   {
   }
 
-  gdbpy_event (gdbpy_event &&other)
+  gdbpy_event (gdbpy_event &&other) noexcept
     : m_func (other.m_func)
   {
     other.m_func = nullptr;
@@ -1095,6 +1118,74 @@ gdbpy_before_prompt_hook (const struct e
   return EXT_LANG_RC_NOP;
 }
 
+/* This is the extension_language_ops.colorize "method".  */
+
+static gdb::optional<std::string>
+gdbpy_colorize (const std::string &filename, const std::string &contents)
+{
+  if (!gdb_python_initialized)
+    return {};
+
+  gdbpy_enter enter_py (get_current_arch (), current_language);
+
+  if (gdb_python_module == nullptr
+      || !PyObject_HasAttrString (gdb_python_module, "colorize"))
+    return {};
+
+  gdbpy_ref<> hook (PyObject_GetAttrString (gdb_python_module, "colorize"));
+  if (hook == nullptr)
+    {
+      gdbpy_print_stack ();
+      return {};
+    }
+
+  if (!PyCallable_Check (hook.get ()))
+    return {};
+
+  gdbpy_ref<> fname_arg (PyString_FromString (filename.c_str ()));
+  if (fname_arg == nullptr)
+    {
+      gdbpy_print_stack ();
+      return {};
+    }
+  gdbpy_ref<> contents_arg (PyString_FromString (contents.c_str ()));
+  if (contents_arg == nullptr)
+    {
+      gdbpy_print_stack ();
+      return {};
+    }
+
+  gdbpy_ref<> result (PyObject_CallFunctionObjArgs (hook.get (),
+						    fname_arg.get (),
+						    contents_arg.get (),
+						    nullptr));
+  if (result == nullptr)
+    {
+      gdbpy_print_stack ();
+      return {};
+    }
+
+  if (!gdbpy_is_string (result.get ()))
+    return {};
+
+  gdbpy_ref<> unic = python_string_to_unicode (result.get ());
+  if (unic == nullptr)
+    {
+      gdbpy_print_stack ();
+      return {};
+    }
+  gdbpy_ref<> host_str (PyUnicode_AsEncodedString (unic.get (),
+						   host_charset (),
+						   nullptr));
+  if (host_str == nullptr)
+    {
+      gdbpy_print_stack ();
+      return {};
+    }
+
+  return std::string (PyBytes_AsString (host_str.get ()));
+}
+
 
 
 /* Printing.  */
@@ -1263,19 +1354,17 @@ gdbpy_print_stack_or_quit ()
 static PyObject *
 gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
 {
-  struct program_space *ps;
-
   gdbpy_ref<> list (PyList_New (0));
   if (list == NULL)
     return NULL;
 
-  ALL_PSPACES (ps)
-  {
-    gdbpy_ref<> item = pspace_to_pspace_object (ps);
+  for (struct program_space *ps : program_spaces)
+    {
+      gdbpy_ref<> item = pspace_to_pspace_object (ps);
 
-    if (item == NULL || PyList_Append (list.get (), item.get ()) == -1)
-      return NULL;
-  }
+      if (item == NULL || PyList_Append (list.get (), item.get ()) == -1)
+	return NULL;
+    }
 
   return list.release ();
 }
@@ -1302,7 +1391,7 @@ gdbpy_source_objfile_script (const struc
   if (!gdb_python_initialized)
     return;
 
-  gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
+  gdbpy_enter enter_py (objfile->arch (), current_language);
   gdbpy_current_objfile = objfile;
 
   python_run_simple_file (file, filename);
@@ -1324,7 +1413,7 @@ gdbpy_execute_objfile_script (const stru
   if (!gdb_python_initialized)
     return;
 
-  gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
+  gdbpy_enter enter_py (objfile->arch (), current_language);
   gdbpy_current_objfile = objfile;
 
   PyRun_SimpleString (script);
@@ -1503,23 +1592,6 @@ python_command (const char *arg, int fro
 static struct cmd_list_element *user_set_python_list;
 static struct cmd_list_element *user_show_python_list;
 
-/* Function for use by 'set python' prefix command.  */
-
-static void
-user_set_python (const char *args, int from_tty)
-{
-  help_list (user_set_python_list, "set python ", all_commands,
-	     gdb_stdout);
-}
-
-/* Function for use by 'show python' prefix command.  */
-
-static void
-user_show_python (const char *args, int from_tty)
-{
-  cmd_show_list (user_show_python_list, from_tty, "");
-}
-
 /* Initialize the Python code.  */
 
 #ifdef HAVE_PYTHON
@@ -1548,6 +1620,7 @@ finalize_python (void *ignore)
 
   Py_Finalize ();
 
+  gdb_python_initialized = false;
   restore_active_ext_lang (previous_active);
 }
 
@@ -1555,6 +1628,7 @@ finalize_python (void *ignore)
 /* This is called via the PyImport_AppendInittab mechanism called
    during initialization, to make the built-in _gdb module known to
    Python.  */
+PyMODINIT_FUNC init__gdb_module (void);
 PyMODINIT_FUNC
 init__gdb_module (void)
 {
@@ -1591,12 +1665,7 @@ do_start_initialization ()
   std::string oldloc = setlocale (LC_ALL, NULL);
   setlocale (LC_ALL, "");
   progsize = strlen (progname.get ());
-  progname_copy = (wchar_t *) xmalloc ((progsize + 1) * sizeof (wchar_t));
-  if (!progname_copy)
-    {
-      fprintf (stderr, "out of memory\n");
-      return false;
-    }
+  progname_copy = XNEWVEC (wchar_t, progsize + 1);
   count = mbstowcs (progname_copy, progname.get (), progsize + 1);
   if (count == (size_t) -1)
     {
@@ -1618,7 +1687,12 @@ do_start_initialization ()
 #endif
 
   Py_Initialize ();
+#if PY_VERSION_HEX < 0x03090000
+  /* PyEval_InitThreads became deprecated in Python 3.9 and will
+     be removed in Python 3.11.  Prior to Python 3.7, this call was
+     required to initialize the GIL.  */
   PyEval_InitThreads ();
+#endif
 
 #ifdef IS_PY3K
   gdb_module = PyImport_ImportModule ("_gdb");
@@ -1685,8 +1759,10 @@ do_start_initialization ()
       || gdbpy_initialize_py_events () < 0
       || gdbpy_initialize_event () < 0
       || gdbpy_initialize_arch () < 0
+      || gdbpy_initialize_registers () < 0
       || gdbpy_initialize_xmethods () < 0
-      || gdbpy_initialize_unwind () < 0)
+      || gdbpy_initialize_unwind () < 0
+      || gdbpy_initialize_tui () < 0)
     return false;
 
 #define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base)	\
@@ -1715,8 +1791,7 @@ do_start_initialization ()
     return false;
 
   /* Release the GIL while gdb runs.  */
-  PyThreadState_Swap (NULL);
-  PyEval_ReleaseLock ();
+  PyEval_SaveThread ();
 
   make_final_cleanup (finalize_python, NULL);
 
@@ -1730,8 +1805,9 @@ do_start_initialization ()
 /* See python.h.  */
 cmd_list_element *python_cmd_element = nullptr;
 
+void _initialize_python ();
 void
-_initialize_python (void)
+_initialize_python ()
 {
   add_com ("python-interactive", class_obscure,
 	   python_interactive_command,
@@ -1781,15 +1857,15 @@ This command is only a placeholder.")
   add_com_alias ("py", "python", class_obscure, 1);
 
   /* Add set/show python print-stack.  */
-  add_prefix_cmd ("python", no_class, user_show_python,
-		  _("Prefix command for python preference settings."),
-		  &user_show_python_list, "show python ", 0,
-		  &showlist);
-
-  add_prefix_cmd ("python", no_class, user_set_python,
-		  _("Prefix command for python preference settings."),
-		  &user_set_python_list, "set python ", 0,
-		  &setlist);
+  add_basic_prefix_cmd ("python", no_class,
+			_("Prefix command for python preference settings."),
+			&user_show_python_list, "show python ", 0,
+			&showlist);
+
+  add_show_prefix_cmd ("python", no_class,
+		       _("Prefix command for python preference settings."),
+		       &user_set_python_list, "set python ", 0,
+		       &setlist);
 
   add_setshow_enum_cmd ("print-stack", no_class, python_excp_enums,
 			&gdbpy_should_print_stack, _("\
@@ -2038,6 +2114,13 @@ or None if not set." },
     "convenience_variable (NAME, VALUE) -> None.\n\
 Set the value of the convenience variable $NAME." },
 
+#ifdef TUI
+  { "register_window_type", (PyCFunction) gdbpy_register_tui_window,
+    METH_VARARGS | METH_KEYWORDS,
+    "register_window_type (NAME, CONSTRUCSTOR) -> None\n\
+Register a TUI window constructor." },
+#endif	/* TUI */
+
   {NULL, NULL, 0, NULL}
 };
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/python.h ./gdb/python/python.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/python.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/python.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python/gdb header for generic use in gdb
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/python-internal.h ./gdb/python/python-internal.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/python-internal.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/python-internal.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Gdb/Python header for private use by Python module.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -391,10 +391,8 @@ extern int gdbpy_auto_load_enabled (cons
 
 extern enum ext_lang_rc gdbpy_apply_val_pretty_printer
   (const struct extension_language_defn *,
-   struct type *type,
-   LONGEST embedded_offset, CORE_ADDR address,
+   struct value *value,
    struct ui_file *stream, int recurse,
-   struct value *val,
    const struct value_print_options *options,
    const struct language_defn *language);
 extern enum ext_lang_bt_status gdbpy_apply_frame_filter
@@ -447,6 +445,8 @@ PyObject *gdbpy_parameter_value (enum va
 char *gdbpy_parse_command_name (const char *name,
 				struct cmd_list_element ***base_list,
 				struct cmd_list_element **start_list);
+PyObject *gdbpy_register_tui_window (PyObject *self, PyObject *args,
+				     PyObject *kw);
 
 PyObject *symtab_and_line_to_sal_object (struct symtab_and_line sal);
 PyObject *symtab_to_symtab_object (struct symtab *symtab);
@@ -454,6 +454,7 @@ PyObject *symbol_to_symbol_object (struc
 PyObject *block_to_block_object (const struct block *block,
 				 struct objfile *objfile);
 PyObject *value_to_value_object (struct value *v);
+PyObject *value_to_value_object_no_release (struct value *v);
 PyObject *type_to_type_object (struct type *);
 PyObject *frame_info_to_frame_object (struct frame_info *frame);
 PyObject *symtab_to_linetable_object (PyObject *symtab);
@@ -472,6 +473,10 @@ PyObject *gdbpy_lookup_objfile (PyObject
 
 PyObject *gdbarch_to_arch_object (struct gdbarch *gdbarch);
 
+PyObject *gdbpy_new_register_descriptor_iterator (struct gdbarch *gdbarch,
+						  const char *group_name);
+PyObject *gdbpy_new_reggroup_iterator (struct gdbarch *gdbarch);
+
 gdbpy_ref<thread_object> create_thread_object (struct thread_info *tp);
 gdbpy_ref<> thread_to_thread_object (thread_info *thr);;
 gdbpy_ref<inferior_object> inferior_to_inferior_object (inferior *inf);
@@ -539,10 +544,14 @@ int gdbpy_initialize_py_events (void)
   CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
 int gdbpy_initialize_arch (void)
   CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
+int gdbpy_initialize_registers ()
+  CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
 int gdbpy_initialize_xmethods (void)
   CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
 int gdbpy_initialize_unwind (void)
   CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
+int gdbpy_initialize_tui ()
+  CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
 
 /* A wrapper for PyErr_Fetch that handles reference counting for the
    caller.  */
@@ -767,4 +776,23 @@ struct Py_buffer_deleter
 /* A unique_ptr specialization for Py_buffer.  */
 typedef std::unique_ptr<Py_buffer, Py_buffer_deleter> Py_buffer_up;
 
+/* Parse a register number from PYO_REG_ID and place the register number
+   into *REG_NUM.  The register is a register for GDBARCH.
+
+   If a register is parsed successfully then *REG_NUM will have been
+   updated, and true is returned.  Otherwise the contents of *REG_NUM are
+   undefined, and false is returned.
+
+   The PYO_REG_ID object can be a string, the name of the register.  This
+   is the slowest approach as GDB has to map the name to a number for each
+   call.  Alternatively PYO_REG_ID can be an internal GDB register
+   number.  This is quick but should not be encouraged as this means
+   Python scripts are now dependent on GDB's internal register numbering.
+   Final PYO_REG_ID can be a gdb.RegisterDescriptor object, these objects
+   can be looked up by name once, and then cache the register number so
+   should be as quick as using a register number.  */
+
+extern bool gdbpy_parse_register_id (struct gdbarch *gdbarch,
+				     PyObject *pyo_reg_id, int *reg_num);
+
 #endif /* PYTHON_PYTHON_INTERNAL_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-threadevent.c ./gdb/python/py-threadevent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-threadevent.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-threadevent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,7 +27,9 @@ py_get_event_thread (ptid_t ptid)
 {
   if (non_stop)
     {
-      thread_info *thread = find_thread_ptid (ptid);
+      thread_info *thread
+	= find_thread_ptid (current_inferior ()->process_target (),
+			    ptid);
       if (thread != nullptr)
 	return thread_to_thread_object (thread);
       PyErr_SetString (PyExc_RuntimeError, "Could not find event thread");
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-tui.c ./gdb/python/py-tui.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-tui.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/python/py-tui.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,519 @@
+/* TUI windows implemented in Python
+
+   Copyright (C) 2020-2021 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 "arch-utils.h"
+#include "python-internal.h"
+
+#ifdef TUI
+
+/* Note that Python's public headers may define HAVE_NCURSES_H, so if
+   we unconditionally include this (outside the #ifdef above), then we
+   can get a compile error when ncurses is not in fact installed.  See
+   PR tui/25597; or the upstream Python bug
+   https://bugs.python.org/issue20768.  */
+#include "gdb_curses.h"
+
+#include "tui/tui-data.h"
+#include "tui/tui-io.h"
+#include "tui/tui-layout.h"
+#include "tui/tui-wingeneral.h"
+#include "tui/tui-winsource.h"
+
+class tui_py_window;
+
+/* A PyObject representing a TUI window.  */
+
+struct gdbpy_tui_window
+{
+  PyObject_HEAD
+
+  /* The TUI window, or nullptr if the window has been deleted.  */
+  tui_py_window *window;
+};
+
+extern PyTypeObject gdbpy_tui_window_object_type
+    CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("gdbpy_tui_window");
+
+/* A TUI window written in Python.  */
+
+class tui_py_window : public tui_win_info
+{
+public:
+
+  tui_py_window (const char *name, gdbpy_ref<gdbpy_tui_window> wrapper)
+    : m_name (name),
+      m_wrapper (std::move (wrapper))
+  {
+    m_wrapper->window = this;
+  }
+
+  ~tui_py_window ();
+
+  DISABLE_COPY_AND_ASSIGN (tui_py_window);
+
+  /* Set the "user window" to the indicated reference.  The user
+     window is the object returned the by user-defined window
+     constructor.  */
+  void set_user_window (gdbpy_ref<> &&user_window)
+  {
+    m_window = std::move (user_window);
+  }
+
+  const char *name () const override
+  {
+    return m_name.c_str ();
+  }
+
+  void rerender () override;
+  void do_scroll_vertical (int num_to_scroll) override;
+  void do_scroll_horizontal (int num_to_scroll) override;
+
+  /* Erase and re-box the window.  */
+  void erase ()
+  {
+    if (is_visible ())
+      {
+	werase (handle.get ());
+	check_and_display_highlight_if_needed ();
+	cursor_x = 0;
+	cursor_y = 0;
+      }
+  }
+
+  /* Write STR to the window.  */
+  void output (const char *str);
+
+  /* A helper function to compute the viewport width.  */
+  int viewport_width () const
+  {
+    return std::max (0, width - 2);
+  }
+
+  /* A helper function to compute the viewport height.  */
+  int viewport_height () const
+  {
+    return std::max (0, height - 2);
+  }
+
+private:
+
+  /* Location of the cursor.  */
+  int cursor_x = 0;
+  int cursor_y = 0;
+
+  /* The name of this window.  */
+  std::string m_name;
+
+  /* The underlying Python window object.  */
+  gdbpy_ref<> m_window;
+
+  /* The Python wrapper for this object.  */
+  gdbpy_ref<gdbpy_tui_window> m_wrapper;
+};
+
+tui_py_window::~tui_py_window ()
+{
+  gdbpy_enter enter_py (get_current_arch (), current_language);
+
+  /* This can be null if the user-provided Python construction
+     function failed.  */
+  if (m_window != nullptr
+      && PyObject_HasAttrString (m_window.get (), "close"))
+    {
+      gdbpy_ref<> result (PyObject_CallMethod (m_window.get (), "close",
+					       nullptr));
+      if (result == nullptr)
+	gdbpy_print_stack ();
+    }
+
+  /* Unlink.  */
+  m_wrapper->window = nullptr;
+  /* Explicitly free the Python references.  We have to do this
+     manually because we need to hold the GIL while doing so.  */
+  m_wrapper.reset (nullptr);
+  m_window.reset (nullptr);
+}
+
+void
+tui_py_window::rerender ()
+{
+  gdbpy_enter enter_py (get_current_arch (), current_language);
+
+  if (PyObject_HasAttrString (m_window.get (), "render"))
+    {
+      gdbpy_ref<> result (PyObject_CallMethod (m_window.get (), "render",
+					       nullptr));
+      if (result == nullptr)
+	gdbpy_print_stack ();
+    }
+}
+
+void
+tui_py_window::do_scroll_horizontal (int num_to_scroll)
+{
+  gdbpy_enter enter_py (get_current_arch (), current_language);
+
+  if (PyObject_HasAttrString (m_window.get (), "hscroll"))
+    {
+      gdbpy_ref<> result (PyObject_CallMethod (m_window.get(), "hscroll",
+					       "i", num_to_scroll, nullptr));
+      if (result == nullptr)
+	gdbpy_print_stack ();
+    }
+}
+
+void
+tui_py_window::do_scroll_vertical (int num_to_scroll)
+{
+  gdbpy_enter enter_py (get_current_arch (), current_language);
+
+  if (PyObject_HasAttrString (m_window.get (), "vscroll"))
+    {
+      gdbpy_ref<> result (PyObject_CallMethod (m_window.get (), "vscroll",
+					       "i", num_to_scroll, nullptr));
+      if (result == nullptr)
+	gdbpy_print_stack ();
+    }
+}
+
+void
+tui_py_window::output (const char *text)
+{
+  int vwidth = viewport_width ();
+
+  while (cursor_y < viewport_height () && *text != '\0')
+    {
+      wmove (handle.get (), cursor_y + 1, cursor_x + 1);
+
+      std::string line = tui_copy_source_line (&text, 0, 0,
+					       vwidth - cursor_x, 0);
+      tui_puts (line.c_str (), handle.get ());
+
+      if (*text == '\n')
+	{
+	  ++text;
+	  ++cursor_y;
+	  cursor_x = 0;
+	}
+      else
+	cursor_x = getcurx (handle.get ()) - 1;
+    }
+
+  wrefresh (handle.get ());
+}
+
+
+
+/* A callable that is used to create a TUI window.  It wraps the
+   user-supplied window constructor.  */
+
+class gdbpy_tui_window_maker
+{
+public:
+
+  explicit gdbpy_tui_window_maker (gdbpy_ref<> &&constr)
+    : m_constr (std::move (constr))
+  {
+  }
+
+  ~gdbpy_tui_window_maker ();
+
+  gdbpy_tui_window_maker (gdbpy_tui_window_maker &&other) noexcept
+    : m_constr (std::move (other.m_constr))
+  {
+  }
+
+  gdbpy_tui_window_maker (const gdbpy_tui_window_maker &other)
+  {
+    gdbpy_enter enter_py (get_current_arch (), current_language);
+    m_constr = other.m_constr;
+  }
+
+  gdbpy_tui_window_maker &operator= (gdbpy_tui_window_maker &&other)
+  {
+    m_constr = std::move (other.m_constr);
+    return *this;
+  }
+
+  gdbpy_tui_window_maker &operator= (const gdbpy_tui_window_maker &other)
+  {
+    gdbpy_enter enter_py (get_current_arch (), current_language);
+    m_constr = other.m_constr;
+    return *this;
+  }
+
+  tui_win_info *operator() (const char *name);
+
+private:
+
+  /* A constructor that is called to make a TUI window.  */
+  gdbpy_ref<> m_constr;
+};
+
+gdbpy_tui_window_maker::~gdbpy_tui_window_maker ()
+{
+  gdbpy_enter enter_py (get_current_arch (), current_language);
+  m_constr.reset (nullptr);
+}
+
+tui_win_info *
+gdbpy_tui_window_maker::operator() (const char *win_name)
+{
+  gdbpy_enter enter_py (get_current_arch (), current_language);
+
+  gdbpy_ref<gdbpy_tui_window> wrapper
+    (PyObject_New (gdbpy_tui_window, &gdbpy_tui_window_object_type));
+  if (wrapper == nullptr)
+    {
+      gdbpy_print_stack ();
+      return nullptr;
+    }
+
+  std::unique_ptr<tui_py_window> window
+    (new tui_py_window (win_name, wrapper));
+
+  gdbpy_ref<> user_window
+    (PyObject_CallFunctionObjArgs (m_constr.get (),
+				   (PyObject *) wrapper.get (),
+				   nullptr));
+  if (user_window == nullptr)
+    {
+      gdbpy_print_stack ();
+      return nullptr;
+    }
+
+  window->set_user_window (std::move (user_window));
+  /* Window is now owned by the TUI.  */
+  return window.release ();
+}
+
+/* Implement "gdb.register_window_type".  */
+
+PyObject *
+gdbpy_register_tui_window (PyObject *self, PyObject *args, PyObject *kw)
+{
+  static const char *keywords[] = { "name", "constructor", nullptr };
+
+  const char *name;
+  PyObject *cons_obj;
+
+  if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "sO", keywords,
+					&name, &cons_obj))
+    return nullptr;
+
+  try
+    {
+      gdbpy_tui_window_maker constr (gdbpy_ref<>::new_reference (cons_obj));
+      tui_register_window (name, constr);
+    }
+  catch (const gdb_exception &except)
+    {
+      gdbpy_convert_exception (except);
+      return nullptr;
+    }
+
+  Py_RETURN_NONE;
+}
+
+
+
+/* Require that "Window" be a valid window.  */
+
+#define REQUIRE_WINDOW(Window)					\
+    do {							\
+      if ((Window)->window == nullptr)				\
+        return PyErr_Format (PyExc_RuntimeError,		\
+                             _("TUI window is invalid."));	\
+    } while (0)
+
+/* Python function which checks the validity of a TUI window
+   object.  */
+static PyObject *
+gdbpy_tui_is_valid (PyObject *self, PyObject *args)
+{
+  gdbpy_tui_window *win = (gdbpy_tui_window *) self;
+
+  if (win->window != nullptr)
+    Py_RETURN_TRUE;
+  Py_RETURN_FALSE;
+}
+
+/* Python function that erases the TUI window.  */
+static PyObject *
+gdbpy_tui_erase (PyObject *self, PyObject *args)
+{
+  gdbpy_tui_window *win = (gdbpy_tui_window *) self;
+
+  REQUIRE_WINDOW (win);
+
+  win->window->erase ();
+
+  Py_RETURN_NONE;
+}
+
+/* Python function that writes some text to a TUI window.  */
+static PyObject *
+gdbpy_tui_write (PyObject *self, PyObject *args)
+{
+  gdbpy_tui_window *win = (gdbpy_tui_window *) self;
+  const char *text;
+
+  if (!PyArg_ParseTuple (args, "s", &text))
+    return nullptr;
+
+  REQUIRE_WINDOW (win);
+
+  win->window->output (text);
+
+  Py_RETURN_NONE;
+}
+
+/* Return the width of the TUI window.  */
+static PyObject *
+gdbpy_tui_width (PyObject *self, void *closure)
+{
+  gdbpy_tui_window *win = (gdbpy_tui_window *) self;
+  REQUIRE_WINDOW (win);
+  return PyLong_FromLong (win->window->viewport_width ());
+}
+
+/* Return the height of the TUI window.  */
+static PyObject *
+gdbpy_tui_height (PyObject *self, void *closure)
+{
+  gdbpy_tui_window *win = (gdbpy_tui_window *) self;
+  REQUIRE_WINDOW (win);
+  return PyLong_FromLong (win->window->viewport_height ());
+}
+
+/* Return the title of the TUI window.  */
+static PyObject *
+gdbpy_tui_title (PyObject *self, void *closure)
+{
+  gdbpy_tui_window *win = (gdbpy_tui_window *) self;
+  REQUIRE_WINDOW (win);
+  return host_string_to_python_string (win->window->title.c_str ()).release ();
+}
+
+/* Set the title of the TUI window.  */
+static int
+gdbpy_tui_set_title (PyObject *self, PyObject *newvalue, void *closure)
+{
+  gdbpy_tui_window *win = (gdbpy_tui_window *) self;
+
+  if (win->window == nullptr)
+    {
+      PyErr_Format (PyExc_RuntimeError, _("TUI window is invalid."));
+      return -1;
+    }
+
+  if (win->window == nullptr)
+    {
+      PyErr_Format (PyExc_TypeError, _("Cannot delete \"title\" attribute."));
+      return -1;
+    }
+
+  gdb::unique_xmalloc_ptr<char> value
+    = python_string_to_host_string (newvalue);
+  if (value == nullptr)
+    return -1;
+
+  win->window->title = value.get ();
+  return 0;
+}
+
+static gdb_PyGetSetDef tui_object_getset[] =
+{
+  { "width", gdbpy_tui_width, NULL, "Width of the window.", NULL },
+  { "height", gdbpy_tui_height, NULL, "Height of the window.", NULL },
+  { "title", gdbpy_tui_title, gdbpy_tui_set_title, "Title of the window.",
+    NULL },
+  { NULL }  /* Sentinel */
+};
+
+static PyMethodDef tui_object_methods[] =
+{
+  { "is_valid", gdbpy_tui_is_valid, METH_NOARGS,
+    "is_valid () -> Boolean\n\
+Return true if this TUI window is valid, false if not." },
+  { "erase", gdbpy_tui_erase, METH_NOARGS,
+    "Erase the TUI window." },
+  { "write", (PyCFunction) gdbpy_tui_write, METH_VARARGS,
+    "Append a string to the TUI window." },
+  { NULL } /* Sentinel.  */
+};
+
+PyTypeObject gdbpy_tui_window_object_type =
+{
+  PyVarObject_HEAD_INIT (NULL, 0)
+  "gdb.TuiWindow",		  /*tp_name*/
+  sizeof (gdbpy_tui_window),	  /*tp_basicsize*/
+  0,				  /*tp_itemsize*/
+  0,				  /*tp_dealloc*/
+  0,				  /*tp_print*/
+  0,				  /*tp_getattr*/
+  0,				  /*tp_setattr*/
+  0,				  /*tp_compare*/
+  0,				  /*tp_repr*/
+  0,				  /*tp_as_number*/
+  0,				  /*tp_as_sequence*/
+  0,				  /*tp_as_mapping*/
+  0,				  /*tp_hash */
+  0,				  /*tp_call*/
+  0,				  /*tp_str*/
+  0,				  /*tp_getattro*/
+  0,				  /*tp_setattro */
+  0,				  /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,  /*tp_flags*/
+  "GDB TUI window object",	  /* tp_doc */
+  0,				  /* tp_traverse */
+  0,				  /* tp_clear */
+  0,				  /* tp_richcompare */
+  0,				  /* tp_weaklistoffset */
+  0,				  /* tp_iter */
+  0,				  /* tp_iternext */
+  tui_object_methods,		  /* tp_methods */
+  0,				  /* tp_members */
+  tui_object_getset,		  /* tp_getset */
+  0,				  /* tp_base */
+  0,				  /* tp_dict */
+  0,				  /* tp_descr_get */
+  0,				  /* tp_descr_set */
+  0,				  /* tp_dictoffset */
+  0,				  /* tp_init */
+  0,				  /* tp_alloc */
+};
+
+#endif /* TUI */
+
+/* Initialize this module.  */
+
+int
+gdbpy_initialize_tui ()
+{
+#ifdef TUI
+  gdbpy_tui_window_object_type.tp_new = PyType_GenericNew;
+  if (PyType_Ready (&gdbpy_tui_window_object_type) < 0)
+    return -1;
+#endif	/* TUI */
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-type.c ./gdb/python/py-type.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-type.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-type.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to types.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -157,7 +157,7 @@ typy_get_code (PyObject *self, void *clo
 {
   struct type *type = ((type_object *) self)->type;
 
-  return PyInt_FromLong (TYPE_CODE (type));
+  return PyInt_FromLong (type->code ());
 }
 
 /* Helper function for typy_fields which converts a single field to a
@@ -177,11 +177,11 @@ convert_field (struct type *type, int fi
   if (PyObject_SetAttrString (result.get (), "parent_type", arg.get ()) < 0)
     return NULL;
 
-  if (!field_is_static (&TYPE_FIELD (type, field)))
+  if (!field_is_static (&type->field (field)))
     {
       const char *attrstring;
 
-      if (TYPE_CODE (type) == TYPE_CODE_ENUM)
+      if (type->code () == TYPE_CODE_ENUM)
 	{
 	  arg.reset (gdb_py_long_from_longest (TYPE_FIELD_ENUMVAL (type,
 								   field)));
@@ -189,8 +189,11 @@ convert_field (struct type *type, int fi
 	}
       else
 	{
-	  arg.reset (gdb_py_long_from_longest (TYPE_FIELD_BITPOS (type,
-								  field)));
+	  if (TYPE_FIELD_LOC_KIND (type, field) == FIELD_LOC_KIND_DWARF_BLOCK)
+	    arg = gdbpy_ref<>::new_reference (Py_None);
+	  else
+	    arg.reset (gdb_py_long_from_longest (TYPE_FIELD_BITPOS (type,
+								    field)));
 	  attrstring = "bitpos";
 	}
 
@@ -224,7 +227,7 @@ convert_field (struct type *type, int fi
   if (PyObject_SetAttrString (result.get (), "artificial", arg.get ()) < 0)
     return NULL;
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  if (type->code () == TYPE_CODE_STRUCT)
     arg = gdbpy_ref<>::new_reference (field < TYPE_N_BASECLASSES (type)
 				      ? Py_True : Py_False);
   else
@@ -239,10 +242,10 @@ convert_field (struct type *type, int fi
     return NULL;
 
   /* A field can have a NULL type in some situations.  */
-  if (TYPE_FIELD_TYPE (type, field) == NULL)
+  if (type->field (field).type () == NULL)
     arg = gdbpy_ref<>::new_reference (Py_None);
   else
-    arg.reset (type_to_type_object (TYPE_FIELD_TYPE (type, field)));
+    arg.reset (type_to_type_object (type->field (field).type ()));
   if (arg == NULL)
     return NULL;
   if (PyObject_SetAttrString (result.get (), "type", arg.get ()) < 0)
@@ -353,7 +356,7 @@ typy_fields (PyObject *self, PyObject *a
 {
   struct type *type = ((type_object *) self)->type;
 
-  if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
+  if (type->code () != TYPE_CODE_ARRAY)
     return typy_fields_items (self, iter_values);
 
   /* Array type.  Handle this as a special case because the common
@@ -390,9 +393,9 @@ typy_get_name (PyObject *self, void *clo
 {
   struct type *type = ((type_object *) self)->type;
 
-  if (TYPE_NAME (type) == NULL)
+  if (type->name () == NULL)
     Py_RETURN_NONE;
-  return PyString_FromString (TYPE_NAME (type));
+  return PyString_FromString (type->name ());
 }
 
 /* Return the type's tag, or None.  */
@@ -402,10 +405,10 @@ typy_get_tag (PyObject *self, void *clos
   struct type *type = ((type_object *) self)->type;
   const char *tagname = nullptr;
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION
-      || TYPE_CODE (type) == TYPE_CODE_ENUM)
-    tagname = TYPE_NAME (type);
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION
+      || type->code () == TYPE_CODE_ENUM)
+    tagname = type->name ();
 
   if (tagname == nullptr)
     Py_RETURN_NONE;
@@ -460,17 +463,17 @@ typy_get_composite (struct type *type)
 	  GDB_PY_HANDLE_EXCEPTION (except);
 	}
 
-      if (TYPE_CODE (type) != TYPE_CODE_PTR && !TYPE_IS_REFERENCE (type))
+      if (type->code () != TYPE_CODE_PTR && !TYPE_IS_REFERENCE (type))
 	break;
       type = TYPE_TARGET_TYPE (type);
     }
 
   /* If this is not a struct, union, or enum type, raise TypeError
      exception.  */
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-      && TYPE_CODE (type) != TYPE_CODE_UNION
-      && TYPE_CODE (type) != TYPE_CODE_ENUM
-      && TYPE_CODE (type) != TYPE_CODE_FUNC)
+  if (type->code () != TYPE_CODE_STRUCT
+      && type->code () != TYPE_CODE_UNION
+      && type->code () != TYPE_CODE_ENUM
+      && type->code () != TYPE_CODE_FUNC)
     {
       PyErr_SetString (PyExc_TypeError,
 		       "Type is not a structure, union, enum, or function type.");
@@ -576,25 +579,29 @@ typy_range (PyObject *self, PyObject *ar
   /* Initialize these to appease GCC warnings.  */
   LONGEST low = 0, high = 0;
 
-  if (TYPE_CODE (type) != TYPE_CODE_ARRAY
-      && TYPE_CODE (type) != TYPE_CODE_STRING
-      && TYPE_CODE (type) != TYPE_CODE_RANGE)
+  if (type->code () != TYPE_CODE_ARRAY
+      && type->code () != TYPE_CODE_STRING
+      && type->code () != TYPE_CODE_RANGE)
     {
       PyErr_SetString (PyExc_RuntimeError,
 		       _("This type does not have a range."));
       return NULL;
     }
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
     case TYPE_CODE_STRING:
-      low = TYPE_LOW_BOUND (TYPE_INDEX_TYPE (type));
-      high = TYPE_HIGH_BOUND (TYPE_INDEX_TYPE (type));
-      break;
     case TYPE_CODE_RANGE:
-      low = TYPE_LOW_BOUND (type);
-      high = TYPE_HIGH_BOUND (type);
+      if (type->bounds ()->low.kind () == PROP_CONST)
+	low = type->bounds ()->low.const_val ();
+      else
+	low = 0;
+
+      if (type->bounds ()->high.kind () == PROP_CONST)
+	high = type->bounds ()->high.const_val ();
+      else
+	high = 0;
       break;
     }
 
@@ -710,9 +717,12 @@ typy_get_sizeof (PyObject *self, void *c
 {
   struct type *type = ((type_object *) self)->type;
 
+  bool size_varies = false;
   try
     {
       check_typedef (type);
+
+      size_varies = TYPE_HAS_DYNAMIC_LENGTH (type);
     }
   catch (const gdb_exception &except)
     {
@@ -720,6 +730,8 @@ typy_get_sizeof (PyObject *self, void *c
 
   /* Ignore exceptions.  */
 
+  if (size_varies)
+    Py_RETURN_NONE;
   return gdb_py_long_from_longest (TYPE_LENGTH (type));
 }
 
@@ -744,6 +756,27 @@ typy_get_alignof (PyObject *self, void *
   return gdb_py_object_from_ulongest (align).release ();
 }
 
+/* Return whether or not the type is dynamic.  */
+static PyObject *
+typy_get_dynamic (PyObject *self, void *closure)
+{
+  struct type *type = ((type_object *) self)->type;
+
+  bool result = false;
+  try
+    {
+      result = is_dynamic_type (type);
+    }
+  catch (const gdb_exception &except)
+    {
+      /* Ignore exceptions.  */
+    }
+
+  if (result)
+    Py_RETURN_TRUE;
+  Py_RETURN_FALSE;
+}
+
 static struct type *
 typy_lookup_typename (const char *type_name, const struct block *block)
 {
@@ -846,7 +879,7 @@ typy_legacy_template_argument (struct ty
   std::string err;
   struct type *argtype;
 
-  if (TYPE_NAME (type) == NULL)
+  if (type->name () == NULL)
     {
       PyErr_SetString (PyExc_RuntimeError, _("Null type name."));
       return NULL;
@@ -855,7 +888,7 @@ typy_legacy_template_argument (struct ty
   try
     {
       /* Note -- this is not thread-safe.  */
-      info = cp_demangled_name_to_comp (TYPE_NAME (type), &err);
+      info = cp_demangled_name_to_comp (type->name (), &err);
     }
   catch (const gdb_exception &except)
     {
@@ -1049,7 +1082,7 @@ save_objfile_types (struct objfile *objf
 
   /* This prevents another thread from freeing the objects we're
      operating on.  */
-  gdbpy_enter enter_py (get_objfile_arch (objfile), current_language);
+  gdbpy_enter enter_py (objfile->arch (), current_language);
 
   copied_types = create_copied_types_hash (objfile);
 
@@ -1121,7 +1154,7 @@ typy_length (PyObject *self)
   if (type == NULL)
     return -1;
 
-  return TYPE_NFIELDS (type);
+  return type->num_fields ();
 }
 
 /* Implements boolean evaluation of gdb.Type.  Handle this like other
@@ -1164,7 +1197,7 @@ typy_getitem (PyObject *self, PyObject *
   if (type == NULL)
     return NULL;
 
-  for (i = 0; i < TYPE_NFIELDS (type); i++)
+  for (i = 0; i < type->num_fields (); i++)
     {
       const char *t_field_name = TYPE_FIELD_NAME (type, i);
 
@@ -1222,7 +1255,7 @@ typy_has_key (PyObject *self, PyObject *
   if (type == NULL)
     return NULL;
 
-  for (i = 0; i < TYPE_NFIELDS (type); i++)
+  for (i = 0; i < type->num_fields (); i++)
     {
       const char *t_field_name = TYPE_FIELD_NAME (type, i);
 
@@ -1307,7 +1340,7 @@ typy_iterator_iternext (PyObject *self)
   typy_iterator_object *iter_obj = (typy_iterator_object *) self;
   struct type *type = iter_obj->source->type;
 
-  if (iter_obj->field < TYPE_NFIELDS (type))
+  if (iter_obj->field < type->num_fields ())
     {
       gdbpy_ref<> result = make_fielditem (type, iter_obj->field,
 					   iter_obj->kind);
@@ -1436,6 +1469,8 @@ static gdb_PyGetSetDef type_object_getse
     "The alignment of this type, in bytes.", NULL },
   { "code", typy_get_code, NULL,
     "The code for this type.", NULL },
+  { "dynamic", typy_get_dynamic, NULL,
+    "Whether this type is dynamic.", NULL },
   { "name", typy_get_name, NULL,
     "The name for this type, or None.", NULL },
   { "sizeof", typy_get_sizeof, NULL,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-unwind.c ./gdb/python/py-unwind.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-unwind.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-unwind.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python frame unwinder interface.
 
-   Copyright (C) 2015-2020 Free Software Foundation, Inc.
+   Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,7 +27,6 @@
 #include "python-internal.h"
 #include "regcache.h"
 #include "valprint.h"
-#include "user-regs.h"
 
 #define TRACE_PY_UNWIND(level, args...) if (pyuw_debug >= level)  \
   { fprintf_unfiltered (gdb_stdlog, args); }
@@ -101,37 +100,6 @@ static unsigned int pyuw_debug = 0;
 
 static struct gdbarch_data *pyuw_gdbarch_data;
 
-/* Parses register id, which can be either a number or a name.
-   Returns 1 on success, 0 otherwise.  */
-
-static int
-pyuw_parse_register_id (struct gdbarch *gdbarch, PyObject *pyo_reg_id,
-                        int *reg_num)
-{
-  if (pyo_reg_id == NULL)
-    return 0;
-  if (gdbpy_is_string (pyo_reg_id))
-    {
-      gdb::unique_xmalloc_ptr<char> reg_name (gdbpy_obj_to_string (pyo_reg_id));
-
-      if (reg_name == NULL)
-        return 0;
-      *reg_num = user_reg_map_name_to_regnum (gdbarch, reg_name.get (),
-                                              strlen (reg_name.get ()));
-      return *reg_num >= 0;
-    }
-  else if (PyInt_Check (pyo_reg_id))
-    {
-      long value;
-      if (gdb_py_int_as_long (pyo_reg_id, &value) && (int) value == value)
-        {
-          *reg_num = (int) value;
-          return user_reg_map_regnum_to_name (gdbarch, *reg_num) != NULL;
-        }
-    }
-  return 0;
-}
-
 /* Convert gdb.Value instance to inferior's pointer.  Return 1 on success,
    0 on failure.  */
 
@@ -275,7 +243,7 @@ unwind_infopy_add_saved_register (PyObje
   if (!PyArg_UnpackTuple (args, "previous_frame_register", 2, 2,
                           &pyo_reg_id, &pyo_reg_value))
     return NULL;
-  if (!pyuw_parse_register_id (pending_frame->gdbarch, pyo_reg_id, &regnum))
+  if (!gdbpy_parse_register_id (pending_frame->gdbarch, pyo_reg_id, &regnum))
     {
       PyErr_SetString (PyExc_ValueError, "Bad register");
       return NULL;
@@ -376,7 +344,7 @@ pending_framepy_read_register (PyObject
     }
   if (!PyArg_UnpackTuple (args, "read_register", 1, 1, &pyo_reg_id))
     return NULL;
-  if (!pyuw_parse_register_id (pending_frame->gdbarch, pyo_reg_id, &regnum))
+  if (!gdbpy_parse_register_id (pending_frame->gdbarch, pyo_reg_id, &regnum))
     {
       PyErr_SetString (PyExc_ValueError, "Bad register");
       return NULL;
@@ -441,6 +409,22 @@ pending_framepy_create_unwind_info (PyOb
                                     frame_id_build_special (sp, pc, special));
 }
 
+/* Implementation of PendingFrame.architecture (self) -> gdb.Architecture.  */
+
+static PyObject *
+pending_framepy_architecture (PyObject *self, PyObject *args)
+{
+  pending_frame_object *pending_frame = (pending_frame_object *) self;
+
+  if (pending_frame->frame_info == NULL)
+    {
+      PyErr_SetString (PyExc_ValueError,
+                       "Attempting to read register from stale PendingFrame");
+      return NULL;
+    }
+  return gdbarch_to_arch_object (pending_frame->gdbarch);
+}
+
 /* frame_unwind.this_id method.  */
 
 static void
@@ -671,6 +655,10 @@ static PyMethodDef pending_frame_object_
     "create_unwind_info (FRAME_ID) -> gdb.UnwindInfo\n"
     "Construct UnwindInfo for this PendingFrame, using FRAME_ID\n"
     "to identify it." },
+  { "architecture",
+    pending_framepy_architecture, METH_NOARGS,
+    "architecture () -> gdb.Architecture\n"
+    "The architecture for this PendingFrame." },
   {NULL}  /* Sentinel */
 };
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-utils.c ./gdb/python/py-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-utils.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-utils.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* General utility routines for GDB/Python.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-value.c ./gdb/python/py-value.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-value.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-value.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Python interface to values.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -251,7 +251,7 @@ valpy_referenced_value (PyObject *self,
       scoped_value_mark free_values;
 
       self_val = ((value_object *) self)->value;
-      switch (TYPE_CODE (check_typedef (value_type (self_val))))
+      switch (check_typedef (value_type (self_val))->code ())
         {
         case TYPE_CODE_PTR:
           res_val = value_ind (self_val);
@@ -400,11 +400,11 @@ valpy_get_dynamic_type (PyObject *self,
       type = value_type (val);
       type = check_typedef (type);
 
-      if (((TYPE_CODE (type) == TYPE_CODE_PTR) || TYPE_IS_REFERENCE (type))
-	  && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT))
+      if (((type->code () == TYPE_CODE_PTR) || TYPE_IS_REFERENCE (type))
+	  && (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_STRUCT))
 	{
 	  struct value *target;
-	  int was_pointer = TYPE_CODE (type) == TYPE_CODE_PTR;
+	  int was_pointer = type->code () == TYPE_CODE_PTR;
 
 	  if (was_pointer)
 	    target = value_ind (val);
@@ -420,7 +420,7 @@ valpy_get_dynamic_type (PyObject *self,
 		type = lookup_lvalue_reference_type (type);
 	    }
 	}
-      else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+      else if (type->code () == TYPE_CODE_STRUCT)
 	type = value_rtti_type (val, NULL, NULL, NULL);
       else
 	{
@@ -488,7 +488,7 @@ valpy_lazy_string (PyObject *self, PyObj
       type = value_type (value);
       realtype = check_typedef (type);
 
-      switch (TYPE_CODE (realtype))
+      switch (realtype->code ())
 	{
 	case TYPE_CODE_ARRAY:
 	  {
@@ -846,10 +846,10 @@ value_has_field (struct value *v, PyObje
     {
       val_type = value_type (v);
       val_type = check_typedef (val_type);
-      if (TYPE_IS_REFERENCE (val_type) || TYPE_CODE (val_type) == TYPE_CODE_PTR)
+      if (TYPE_IS_REFERENCE (val_type) || val_type->code () == TYPE_CODE_PTR)
 	val_type = check_typedef (TYPE_TARGET_TYPE (val_type));
 
-      type_code = TYPE_CODE (val_type);
+      type_code = val_type->code ();
       if ((type_code == TYPE_CODE_STRUCT || type_code == TYPE_CODE_UNION)
 	  && types_equal (val_type, parent_type))
 	has_field = 1;
@@ -997,12 +997,12 @@ valpy_getitem (PyObject *self, PyObject
 	  struct type *val_type;
 
 	  val_type = check_typedef (value_type (tmp));
-	  if (TYPE_CODE (val_type) == TYPE_CODE_PTR)
+	  if (val_type->code () == TYPE_CODE_PTR)
 	    res_val = value_cast (lookup_pointer_type (base_class_type), tmp);
-	  else if (TYPE_CODE (val_type) == TYPE_CODE_REF)
+	  else if (val_type->code () == TYPE_CODE_REF)
 	    res_val = value_cast (lookup_lvalue_reference_type (base_class_type),
 	                          tmp);
-	  else if (TYPE_CODE (val_type) == TYPE_CODE_RVALUE_REF)
+	  else if (val_type->code () == TYPE_CODE_RVALUE_REF)
 	    res_val = value_cast (lookup_rvalue_reference_type (base_class_type),
 	                          tmp);
 	  else
@@ -1023,8 +1023,8 @@ valpy_getitem (PyObject *self, PyObject
 
 	      tmp = coerce_ref (tmp);
 	      type = check_typedef (value_type (tmp));
-	      if (TYPE_CODE (type) != TYPE_CODE_ARRAY
-		  && TYPE_CODE (type) != TYPE_CODE_PTR)
+	      if (type->code () != TYPE_CODE_ARRAY
+		  && type->code () != TYPE_CODE_PTR)
 		  error (_("Cannot subscript requested type."));
 	      else
 		res_val = value_subscript (tmp, value_as_long (idx));
@@ -1072,7 +1072,7 @@ valpy_call (PyObject *self, PyObject *ar
       GDB_PY_HANDLE_EXCEPTION (except);
     }
 
-  if (TYPE_CODE (ftype) != TYPE_CODE_FUNC)
+  if (ftype->code () != TYPE_CODE_FUNC)
     {
       PyErr_SetString (PyExc_RuntimeError,
 		       _("Value is not callable (not TYPE_CODE_FUNC)."));
@@ -1279,10 +1279,10 @@ valpy_binop_throw (enum valpy_opcode opc
 	rtype = STRIP_REFERENCE (rtype);
 
 	handled = 1;
-	if (TYPE_CODE (ltype) == TYPE_CODE_PTR
+	if (ltype->code () == TYPE_CODE_PTR
 	    && is_integral_type (rtype))
 	  res_val = value_ptradd (arg1, value_as_long (arg2));
-	else if (TYPE_CODE (rtype) == TYPE_CODE_PTR
+	else if (rtype->code () == TYPE_CODE_PTR
 		 && is_integral_type (ltype))
 	  res_val = value_ptradd (arg2, value_as_long (arg1));
 	else
@@ -1303,12 +1303,12 @@ valpy_binop_throw (enum valpy_opcode opc
 	rtype = STRIP_REFERENCE (rtype);
 
 	handled = 1;
-	if (TYPE_CODE (ltype) == TYPE_CODE_PTR
-	    && TYPE_CODE (rtype) == TYPE_CODE_PTR)
+	if (ltype->code () == TYPE_CODE_PTR
+	    && rtype->code () == TYPE_CODE_PTR)
 	  /* A ptrdiff_t for the target would be preferable here.  */
 	  res_val = value_from_longest (builtin_type_pyint,
 					value_ptrdiff (arg1, arg2));
-	else if (TYPE_CODE (ltype) == TYPE_CODE_PTR
+	else if (ltype->code () == TYPE_CODE_PTR
 		 && is_integral_type (rtype))
 	  res_val = value_ptradd (arg1, - value_as_long (arg2));
 	else
@@ -1492,7 +1492,7 @@ valpy_nonzero (PyObject *self)
     {
       type = check_typedef (value_type (self_value->value));
 
-      if (is_integral_type (type) || TYPE_CODE (type) == TYPE_CODE_PTR)
+      if (is_integral_type (type) || type->code () == TYPE_CODE_PTR)
 	nonzero = !!value_as_long (self_value->value);
       else if (is_floating_value (self_value->value))
 	nonzero = !target_float_is_zero (value_contents (self_value->value),
@@ -1684,7 +1684,7 @@ valpy_int (PyObject *self)
 	}
 
       if (!is_integral_type (type)
-	  && TYPE_CODE (type) != TYPE_CODE_PTR)
+	  && type->code () != TYPE_CODE_PTR)
 	error (_("Cannot convert value to int."));
 
       l = value_as_long (value);
@@ -1720,7 +1720,7 @@ valpy_long (PyObject *self)
       type = check_typedef (type);
 
       if (!is_integral_type (type)
-	  && TYPE_CODE (type) != TYPE_CODE_PTR)
+	  && type->code () != TYPE_CODE_PTR)
 	error (_("Cannot convert value to long."));
 
       l = value_as_long (value);
@@ -1748,9 +1748,9 @@ valpy_float (PyObject *self)
     {
       type = check_typedef (type);
 
-      if (TYPE_CODE (type) == TYPE_CODE_FLT && is_floating_value (value))
+      if (type->code () == TYPE_CODE_FLT && is_floating_value (value))
 	d = target_float_to_host_double (value_contents (value), type);
-      else if (TYPE_CODE (type) == TYPE_CODE_INT)
+      else if (type->code () == TYPE_CODE_INT)
 	{
 	  /* Note that valpy_long accepts TYPE_CODE_PTR and some
 	     others here here -- but casting a pointer or bool to a
@@ -1788,6 +1788,27 @@ value_to_value_object (struct value *val
   return (PyObject *) val_obj;
 }
 
+/* Returns an object for a value, but without releasing it from the
+   all_values chain.  */
+PyObject *
+value_to_value_object_no_release (struct value *val)
+{
+  value_object *val_obj;
+
+  val_obj = PyObject_New (value_object, &value_object_type);
+  if (val_obj != NULL)
+    {
+      value_incref (val);
+      val_obj->value = val;
+      val_obj->address = NULL;
+      val_obj->type = NULL;
+      val_obj->dynamic_type = NULL;
+      note_value (val_obj);
+    }
+
+  return (PyObject *) val_obj;
+}
+
 /* Returns a borrowed reference to the struct value corresponding to
    the given value object.  */
 struct value *
@@ -1951,7 +1972,7 @@ gdbpy_convenience_variable (PyObject *se
       if (var != NULL)
 	{
 	  res_val = value_of_internalvar (python_gdbarch, var);
-	  if (TYPE_CODE (value_type (res_val)) == TYPE_CODE_VOID)
+	  if (value_type (res_val)->code () == TYPE_CODE_VOID)
 	    res_val = NULL;
 	}
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-varobj.c ./gdb/python/py-varobj.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-varobj.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-varobj.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-xmethods.c ./gdb/python/py-xmethods.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/python/py-xmethods.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/python/py-xmethods.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support for debug methods in Python.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -425,7 +425,7 @@ python_xmethod_worker::do_get_result_typ
 
   obj_type = check_typedef (value_type (obj));
   this_type = check_typedef (type_object_to_type (m_this_type));
-  if (TYPE_CODE (obj_type) == TYPE_CODE_PTR)
+  if (obj_type->code () == TYPE_CODE_PTR)
     {
       struct type *this_ptr = lookup_pointer_type (this_type);
 
@@ -435,7 +435,7 @@ python_xmethod_worker::do_get_result_typ
   else if (TYPE_IS_REFERENCE (obj_type))
     {
       struct type *this_ref
-        = lookup_reference_type (this_type, TYPE_CODE (obj_type));
+        = lookup_reference_type (this_type, obj_type->code ());
 
       if (!types_equal (obj_type, this_ref))
 	obj = value_cast (this_ref, obj);
@@ -510,7 +510,7 @@ python_xmethod_worker::invoke (struct va
 
   obj_type = check_typedef (value_type (obj));
   this_type = check_typedef (type_object_to_type (m_this_type));
-  if (TYPE_CODE (obj_type) == TYPE_CODE_PTR)
+  if (obj_type->code () == TYPE_CODE_PTR)
     {
       struct type *this_ptr = lookup_pointer_type (this_type);
 
@@ -520,7 +520,7 @@ python_xmethod_worker::invoke (struct va
   else if (TYPE_IS_REFERENCE (obj_type))
     {
       struct type *this_ref
-	= lookup_reference_type (this_type, TYPE_CODE (obj_type));
+	= lookup_reference_type (this_type, obj_type->code ());
 
       if (!types_equal (obj_type, this_ref))
 	obj = value_cast (this_ref, obj);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ravenscar-thread.c ./gdb/ravenscar-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ravenscar-thread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ravenscar-thread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ada Ravenscar thread support.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -30,6 +30,7 @@
 #include "top.h"
 #include "regcache.h"
 #include "objfiles.h"
+#include <unordered_map>
 
 /* This module provides support for "Ravenscar" tasks (Ada) when
    debugging on bare-metal targets.
@@ -77,8 +78,8 @@ static const target_info ravenscar_targe
 struct ravenscar_thread_target final : public target_ops
 {
   ravenscar_thread_target ()
+    : m_base_ptid (inferior_ptid)
   {
-    update_inferior_ptid ();
   }
 
   const target_info &info () const override
@@ -102,18 +103,31 @@ struct ravenscar_thread_target final : p
 
   bool stopped_data_address (CORE_ADDR *) override;
 
+  enum target_xfer_status xfer_partial (enum target_object object,
+					const char *annex,
+					gdb_byte *readbuf,
+					const gdb_byte *writebuf,
+					ULONGEST offset, ULONGEST len,
+					ULONGEST *xfered_len) override;
+
   bool thread_alive (ptid_t ptid) override;
 
   int core_of_thread (ptid_t ptid) override;
 
   void update_thread_list () override;
 
-  const char *extra_thread_info (struct thread_info *) override;
-
   std::string pid_to_str (ptid_t) override;
 
   ptid_t get_ada_task_ptid (long lwp, long thread) override;
 
+  struct btrace_target_info *enable_btrace (ptid_t ptid,
+					    const struct btrace_config *conf)
+    override
+  {
+    ptid = get_base_thread_from_ravenscar_task (ptid);
+    return beneath ()->enable_btrace (ptid, conf);
+  }
+
   void mourn_inferior () override;
 
   void close () override
@@ -121,17 +135,36 @@ struct ravenscar_thread_target final : p
     delete this;
   }
 
+  thread_info *add_active_thread ();
+
 private:
 
   /* PTID of the last thread that received an event.
      This can be useful to determine the associated task that received
      the event, to make it the current task.  */
-  ptid_t m_base_ptid = null_ptid;
+  ptid_t m_base_ptid;
 
-  void update_inferior_ptid ();
   ptid_t active_task (int cpu);
   bool task_is_currently_active (ptid_t ptid);
   bool runtime_initialized ();
+  int get_thread_base_cpu (ptid_t ptid);
+  ptid_t get_base_thread_from_ravenscar_task (ptid_t ptid);
+  void add_thread (struct ada_task_info *task);
+
+  /* Like switch_to_thread, but uses the base ptid for the thread.  */
+  void set_base_thread_from_ravenscar_task (ptid_t ptid)
+  {
+    process_stratum_target *proc_target
+      = as_process_stratum_target (this->beneath ());
+    ptid_t underlying = get_base_thread_from_ravenscar_task (ptid);
+    switch_to_thread (find_thread_ptid (proc_target, underlying));
+  }
+
+  /* This maps a TID to the CPU on which it was running.  This is
+     needed because sometimes the runtime will report an active task
+     that hasn't yet been put on the list of tasks that is read by
+     ada-tasks.c.  */
+  std::unordered_map<long, int> m_cpu_map;
 };
 
 /* Return true iff PTID corresponds to a ravenscar task.  */
@@ -155,17 +188,26 @@ is_ravenscar_task (ptid_t ptid)
    This assume that PTID is a valid ptid_t.  Otherwise, a gdb_assert
    will be triggered.  */
 
-static int
-ravenscar_get_thread_base_cpu (ptid_t ptid)
+int
+ravenscar_thread_target::get_thread_base_cpu (ptid_t ptid)
 {
   int base_cpu;
 
   if (is_ravenscar_task (ptid))
     {
-      struct ada_task_info *task_info = ada_get_task_info_from_ptid (ptid);
-
-      gdb_assert (task_info != NULL);
-      base_cpu = task_info->base_cpu;
+      /* Prefer to not read inferior memory if possible, to avoid
+	 reentrancy problems with xfer_partial.  */
+      auto iter = m_cpu_map.find (ptid.tid ());
+
+      if (iter != m_cpu_map.end ())
+	base_cpu = iter->second;
+      else
+	{
+	  struct ada_task_info *task_info = ada_get_task_info_from_ptid (ptid);
+
+	  gdb_assert (task_info != NULL);
+	  base_cpu = task_info->base_cpu;
+	}
     }
   else
     {
@@ -189,8 +231,7 @@ ravenscar_get_thread_base_cpu (ptid_t pt
 bool
 ravenscar_thread_target::task_is_currently_active (ptid_t ptid)
 {
-  ptid_t active_task_ptid
-    = active_task (ravenscar_get_thread_base_cpu (ptid));
+  ptid_t active_task_ptid = active_task (get_thread_base_cpu (ptid));
 
   return ptid == active_task_ptid;
 }
@@ -201,46 +242,51 @@ ravenscar_thread_target::task_is_current
    This is the thread that corresponds to the CPU on which the task
    is running.  */
 
-static ptid_t
-get_base_thread_from_ravenscar_task (ptid_t ptid)
+ptid_t
+ravenscar_thread_target::get_base_thread_from_ravenscar_task (ptid_t ptid)
 {
   int base_cpu;
 
   if (!is_ravenscar_task (ptid))
     return ptid;
 
-  base_cpu = ravenscar_get_thread_base_cpu (ptid);
+  base_cpu = get_thread_base_cpu (ptid);
   return ptid_t (ptid.pid (), base_cpu, 0);
 }
 
-/* Fetch the ravenscar running thread from target memory and
-   update inferior_ptid accordingly.  */
+/* Fetch the ravenscar running thread from target memory, make sure
+   there's a corresponding thread in the thread list, and return it.
+   If the runtime is not initialized, return NULL.  */
 
-void
-ravenscar_thread_target::update_inferior_ptid ()
+thread_info *
+ravenscar_thread_target::add_active_thread ()
 {
-  int base_cpu;
+  process_stratum_target *proc_target
+    = as_process_stratum_target (this->beneath ());
 
-  m_base_ptid = inferior_ptid;
+  int base_cpu;
 
-  gdb_assert (!is_ravenscar_task (inferior_ptid));
-  base_cpu = ravenscar_get_thread_base_cpu (m_base_ptid);
+  gdb_assert (!is_ravenscar_task (m_base_ptid));
+  base_cpu = get_thread_base_cpu (m_base_ptid);
 
-  /* If the runtime has not been initialized yet, the inferior_ptid is
-     the only ptid that there is.  */
   if (!runtime_initialized ())
-    return;
+    return nullptr;
 
   /* Make sure we set m_base_ptid before calling active_task
      as the latter relies on it.  */
-  inferior_ptid = active_task (base_cpu);
-  gdb_assert (inferior_ptid != null_ptid);
+  ptid_t active_ptid = active_task (base_cpu);
+  gdb_assert (active_ptid != null_ptid);
 
   /* The running thread may not have been added to
      system.tasking.debug's list yet; so ravenscar_update_thread_list
      may not always add it to the thread list.  Add it here.  */
-  if (!find_thread_ptid (inferior_ptid))
-    add_thread (inferior_ptid);
+  thread_info *active_thr = find_thread_ptid (proc_target, active_ptid);
+  if (active_thr == nullptr)
+    {
+      active_thr = ::add_thread (proc_target, active_ptid);
+      m_cpu_map[active_ptid.tid ()] = base_cpu;
+    }
+  return active_thr;
 }
 
 /* The Ravenscar Runtime exports a symbol which contains the ID of
@@ -326,7 +372,12 @@ ravenscar_thread_target::resume (ptid_t
   /* If we see a wildcard resume, we simply pass that on.  Otherwise,
      arrange to resume the base ptid.  */
   inferior_ptid = m_base_ptid;
-  if (ptid != minus_one_ptid)
+  if (ptid.is_pid ())
+    {
+      /* We only have one process, so resume all threads of it.  */
+      ptid = minus_one_ptid;
+    }
+  else if (ptid != minus_one_ptid)
     ptid = m_base_ptid;
   beneath ()->resume (ptid, step, siggnal);
 }
@@ -336,50 +387,62 @@ ravenscar_thread_target::wait (ptid_t pt
 			       struct target_waitstatus *status,
 			       int options)
 {
+  process_stratum_target *beneath
+    = as_process_stratum_target (this->beneath ());
   ptid_t event_ptid;
 
-  inferior_ptid = m_base_ptid;
   if (ptid != minus_one_ptid)
     ptid = m_base_ptid;
-  event_ptid = beneath ()->wait (ptid, status, 0);
-  /* Find any new threads that might have been created, and update
-     inferior_ptid to the active thread.
+  event_ptid = beneath->wait (ptid, status, 0);
+  /* Find any new threads that might have been created, and return the
+     active thread.
 
      Only do it if the program is still alive, though.  Otherwise,
      this causes problems when debugging through the remote protocol,
      because we might try switching threads (and thus sending packets)
      after the remote has disconnected.  */
   if (status->kind != TARGET_WAITKIND_EXITED
-      && status->kind != TARGET_WAITKIND_SIGNALLED)
+      && status->kind != TARGET_WAITKIND_SIGNALLED
+      && runtime_initialized ())
     {
-      inferior_ptid = event_ptid;
+      m_base_ptid = event_ptid;
       this->update_thread_list ();
-      this->update_inferior_ptid ();
+      return this->add_active_thread ()->ptid;
     }
-  else
-    inferior_ptid = m_base_ptid;
-  return inferior_ptid;
+  return event_ptid;
 }
 
 /* Add the thread associated to the given TASK to the thread list
    (if the thread has already been added, this is a no-op).  */
 
-static void
-ravenscar_add_thread (struct ada_task_info *task)
+void
+ravenscar_thread_target::add_thread (struct ada_task_info *task)
 {
-  if (find_thread_ptid (task->ptid) == NULL)
-    add_thread (task->ptid);
+  if (find_thread_ptid (current_inferior (), task->ptid) == NULL)
+    {
+      ::add_thread (current_inferior ()->process_target (), task->ptid);
+      m_cpu_map[task->ptid.tid ()] = task->base_cpu;
+    }
 }
 
 void
 ravenscar_thread_target::update_thread_list ()
 {
+  /* iterate_over_live_ada_tasks requires that inferior_ptid be set,
+     but this isn't always the case in target methods.  So, we ensure
+     it here.  */
+  scoped_restore save_ptid = make_scoped_restore (&inferior_ptid,
+						  m_base_ptid);
+
   /* Do not clear the thread list before adding the Ada task, to keep
      the thread that the process stratum has included into it
      (m_base_ptid) and the running thread, that may not have been included
      to system.tasking.debug's list yet.  */
 
-  iterate_over_live_ada_tasks (ravenscar_add_thread);
+  iterate_over_live_ada_tasks ([=] (struct ada_task_info *task)
+			       {
+				 this->add_thread (task);
+			       });
 }
 
 ptid_t
@@ -393,12 +456,6 @@ ravenscar_thread_target::active_task (in
     return ptid_t (m_base_ptid.pid (), 0, tid);
 }
 
-const char *
-ravenscar_thread_target::extra_thread_info (thread_info *tp)
-{
-  return "Ravenscar task";
-}
-
 bool
 ravenscar_thread_target::thread_alive (ptid_t ptid)
 {
@@ -409,23 +466,61 @@ ravenscar_thread_target::thread_alive (p
 std::string
 ravenscar_thread_target::pid_to_str (ptid_t ptid)
 {
-  return string_printf ("Thread %#x", (int) ptid.tid ());
+  if (!is_ravenscar_task (ptid))
+    return beneath ()->pid_to_str (ptid);
+
+  return string_printf ("Ravenscar Thread %#x", (int) ptid.tid ());
 }
 
+/* Temporarily set the ptid of a regcache to some other value.  When
+   this object is destroyed, the regcache's original ptid is
+   restored.  */
+
+class temporarily_change_regcache_ptid
+{
+public:
+
+  temporarily_change_regcache_ptid (struct regcache *regcache, ptid_t new_ptid)
+    : m_regcache (regcache),
+      m_save_ptid (regcache->ptid ())
+  {
+    m_regcache->set_ptid (new_ptid);
+  }
+
+  ~temporarily_change_regcache_ptid ()
+  {
+    m_regcache->set_ptid (m_save_ptid);
+  }
+
+private:
+
+  /* The regcache.  */
+  struct regcache *m_regcache;
+  /* The saved ptid.  */
+  ptid_t m_save_ptid;
+};
+
 void
 ravenscar_thread_target::fetch_registers (struct regcache *regcache, int regnum)
 {
   ptid_t ptid = regcache->ptid ();
 
-  if (runtime_initialized ()
-      && is_ravenscar_task (ptid)
-      && !task_is_currently_active (ptid))
+  if (runtime_initialized () && is_ravenscar_task (ptid))
     {
-      struct gdbarch *gdbarch = regcache->arch ();
-      struct ravenscar_arch_ops *arch_ops
-	= gdbarch_ravenscar_ops (gdbarch);
+      if (task_is_currently_active (ptid))
+	{
+	  ptid_t base = get_base_thread_from_ravenscar_task (ptid);
+	  temporarily_change_regcache_ptid changer (regcache, base);
+	  beneath ()->fetch_registers (regcache, regnum);
+	}
+      else
+	{
+	  struct gdbarch *gdbarch = regcache->arch ();
+	  struct ravenscar_arch_ops *arch_ops
+	    = gdbarch_ravenscar_ops (gdbarch);
 
-      arch_ops->fetch_registers (regcache, regnum);
+	  arch_ops->fetch_registers (regcache, regnum);
+	}
     }
   else
     beneath ()->fetch_registers (regcache, regnum);
@@ -437,15 +532,22 @@ ravenscar_thread_target::store_registers
 {
   ptid_t ptid = regcache->ptid ();
 
-  if (runtime_initialized ()
-      && is_ravenscar_task (ptid)
-      && !task_is_currently_active (ptid))
+  if (runtime_initialized () && is_ravenscar_task (ptid))
     {
-      struct gdbarch *gdbarch = regcache->arch ();
-      struct ravenscar_arch_ops *arch_ops
-	= gdbarch_ravenscar_ops (gdbarch);
+      if (task_is_currently_active (ptid))
+	{
+	  ptid_t base = get_base_thread_from_ravenscar_task (ptid);
+	  temporarily_change_regcache_ptid changer (regcache, base);
+	  beneath ()->store_registers (regcache, regnum);
+	}
+      else
+	{
+	  struct gdbarch *gdbarch = regcache->arch ();
+	  struct ravenscar_arch_ops *arch_ops
+	    = gdbarch_ravenscar_ops (gdbarch);
 
-      arch_ops->store_registers (regcache, regnum);
+	  arch_ops->store_registers (regcache, regnum);
+	}
     }
   else
     beneath ()->store_registers (regcache, regnum);
@@ -456,11 +558,18 @@ ravenscar_thread_target::prepare_to_stor
 {
   ptid_t ptid = regcache->ptid ();
 
-  if (runtime_initialized ()
-      && is_ravenscar_task (ptid)
-      && !task_is_currently_active (ptid))
+  if (runtime_initialized () && is_ravenscar_task (ptid))
     {
-      /* Nothing.  */
+      if (task_is_currently_active (ptid))
+	{
+	  ptid_t base = get_base_thread_from_ravenscar_task (ptid);
+	  temporarily_change_regcache_ptid changer (regcache, base);
+	  beneath ()->prepare_to_store (regcache);
+	}
+      else
+	{
+	  /* Nothing.  */
+	}
     }
   else
     beneath ()->prepare_to_store (regcache);
@@ -471,8 +580,8 @@ ravenscar_thread_target::prepare_to_stor
 bool
 ravenscar_thread_target::stopped_by_sw_breakpoint ()
 {
-  scoped_restore save_ptid = make_scoped_restore (&inferior_ptid);
-  inferior_ptid = get_base_thread_from_ravenscar_task (inferior_ptid);
+  scoped_restore_current_thread saver;
+  set_base_thread_from_ravenscar_task (inferior_ptid);
   return beneath ()->stopped_by_sw_breakpoint ();
 }
 
@@ -481,8 +590,8 @@ ravenscar_thread_target::stopped_by_sw_b
 bool
 ravenscar_thread_target::stopped_by_hw_breakpoint ()
 {
-  scoped_restore save_ptid = make_scoped_restore (&inferior_ptid);
-  inferior_ptid = get_base_thread_from_ravenscar_task (inferior_ptid);
+  scoped_restore_current_thread saver;
+  set_base_thread_from_ravenscar_task (inferior_ptid);
   return beneath ()->stopped_by_hw_breakpoint ();
 }
 
@@ -491,8 +600,8 @@ ravenscar_thread_target::stopped_by_hw_b
 bool
 ravenscar_thread_target::stopped_by_watchpoint ()
 {
-  scoped_restore save_ptid = make_scoped_restore (&inferior_ptid);
-  inferior_ptid = get_base_thread_from_ravenscar_task (inferior_ptid);
+  scoped_restore_current_thread saver;
+  set_base_thread_from_ravenscar_task (inferior_ptid);
   return beneath ()->stopped_by_watchpoint ();
 }
 
@@ -501,8 +610,8 @@ ravenscar_thread_target::stopped_by_watc
 bool
 ravenscar_thread_target::stopped_data_address (CORE_ADDR *addr_p)
 {
-  scoped_restore save_ptid = make_scoped_restore (&inferior_ptid);
-  inferior_ptid = get_base_thread_from_ravenscar_task (inferior_ptid);
+  scoped_restore_current_thread saver;
+  set_base_thread_from_ravenscar_task (inferior_ptid);
   return beneath ()->stopped_data_address (addr_p);
 }
 
@@ -510,8 +619,9 @@ void
 ravenscar_thread_target::mourn_inferior ()
 {
   m_base_ptid = null_ptid;
-  beneath ()->mourn_inferior ();
+  target_ops *beneath = this->beneath ();
   unpush_target (this);
+  beneath->mourn_inferior ();
 }
 
 /* Implement the to_core_of_thread target_ops "method".  */
@@ -519,9 +629,29 @@ ravenscar_thread_target::mourn_inferior
 int
 ravenscar_thread_target::core_of_thread (ptid_t ptid)
 {
+  scoped_restore_current_thread saver;
+  set_base_thread_from_ravenscar_task (inferior_ptid);
+  return beneath ()->core_of_thread (inferior_ptid);
+}
+
+/* Implement the target xfer_partial method.  */
+
+enum target_xfer_status
+ravenscar_thread_target::xfer_partial (enum target_object object,
+				       const char *annex,
+				       gdb_byte *readbuf,
+				       const gdb_byte *writebuf,
+				       ULONGEST offset, ULONGEST len,
+				       ULONGEST *xfered_len)
+{
   scoped_restore save_ptid = make_scoped_restore (&inferior_ptid);
+  /* Calling get_base_thread_from_ravenscar_task can read memory from
+     the inferior.  However, that function is written to prefer our
+     internal map, so it should not result in recursive calls in
+     practice.  */
   inferior_ptid = get_base_thread_from_ravenscar_task (inferior_ptid);
-  return beneath ()->core_of_thread (inferior_ptid);
+  return beneath ()->xfer_partial (object, annex, readbuf, writebuf,
+				   offset, len, xfered_len);
 }
 
 /* Observer on inferior_created: push ravenscar thread stratum if needed.  */
@@ -543,8 +673,11 @@ ravenscar_inferior_created (struct targe
       return;
     }
 
-  target_ops_up target_holder (new ravenscar_thread_target ());
-  push_target (std::move (target_holder));
+  ravenscar_thread_target *rtarget = new ravenscar_thread_target ();
+  push_target (target_ops_up (rtarget));
+  thread_info *thr = rtarget->add_active_thread ();
+  if (thr != nullptr)
+    switch_to_thread (thr);
 }
 
 ptid_t
@@ -557,24 +690,6 @@ ravenscar_thread_target::get_ada_task_pt
 static struct cmd_list_element *set_ravenscar_list;
 static struct cmd_list_element *show_ravenscar_list;
 
-/* Implement the "set ravenscar" prefix command.  */
-
-static void
-set_ravenscar_command (const char *arg, int from_tty)
-{
-  printf_unfiltered (_(\
-"\"set ravenscar\" must be followed by the name of a setting.\n"));
-  help_list (set_ravenscar_list, "set ravenscar ", all_commands, gdb_stdout);
-}
-
-/* Implement the "show ravenscar" prefix command.  */
-
-static void
-show_ravenscar_command (const char *args, int from_tty)
-{
-  cmd_show_list (show_ravenscar_list, from_tty, "");
-}
-
 /* Implement the "show ravenscar task-switching" command.  */
 
 static void
@@ -593,6 +708,7 @@ Support for Ravenscar task/thread switch
 /* Module startup initialization function, automagically called by
    init.c.  */
 
+void _initialize_ravenscar ();
 void
 _initialize_ravenscar ()
 {
@@ -600,13 +716,13 @@ _initialize_ravenscar ()
      ravenscar ops if needed.  */
   gdb::observers::inferior_created.attach (ravenscar_inferior_created);
 
-  add_prefix_cmd ("ravenscar", no_class, set_ravenscar_command,
-                  _("Prefix command for changing Ravenscar-specific settings."),
-                  &set_ravenscar_list, "set ravenscar ", 0, &setlist);
-
-  add_prefix_cmd ("ravenscar", no_class, show_ravenscar_command,
-                  _("Prefix command for showing Ravenscar-specific settings."),
-                  &show_ravenscar_list, "show ravenscar ", 0, &showlist);
+  add_basic_prefix_cmd ("ravenscar", no_class,
+			_("Prefix command for changing Ravenscar-specific settings."),
+			&set_ravenscar_list, "set ravenscar ", 0, &setlist);
+
+  add_show_prefix_cmd ("ravenscar", no_class,
+		       _("Prefix command for showing Ravenscar-specific settings."),
+		       &show_ravenscar_list, "show ravenscar ", 0, &showlist);
 
   add_setshow_boolean_cmd ("task-switching", class_obscure,
                            &ravenscar_task_support, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ravenscar-thread.h ./gdb/ravenscar-thread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ravenscar-thread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ravenscar-thread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ada Ravenscar thread support.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/README ./gdb/README
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/README	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/README	2021-05-21 01:57:24.000000000 +0000
@@ -432,6 +432,15 @@ more obscure GDB `configure' options are
      Use the curses library instead of the termcap library, for
      text-mode terminal operations.
 
+`--with-debuginfod'
+     Build GDB with libdebuginfod, the debuginfod client library.  Used
+     to automatically fetch source files and separate debug files from
+     debuginfod servers using the associated executable's build ID.
+     Enabled by default if libdebuginfod is installed and found at
+     configure time.  debuginfod is packaged with elfutils, starting
+     with version 0.178.  You can get the latest version from
+     'https://sourceware.org/elfutils/'.
+
 `--with-libunwind-ia64'
      Use the libunwind library for unwinding function call stack on ia64
      target platforms.
@@ -583,12 +592,11 @@ of remote stubs to be used with remote.c
 standalone on an m68k, i386, or SPARC cpu and communicate properly
 with the remote.c stub over a serial line.
 
-   The directory gdb/gdbserver/ contains `gdbserver', a program that
+   The directory gdbserver/ contains `gdbserver', a program that
 allows remote debugging for Unix applications.  GDBserver is only
-supported for some native configurations, including Sun 3, Sun 4, and
-Linux.
+supported for some native configurations.
 
-   The file gdb/gdbserver/README includes further notes on GDBserver; in
+   The file gdbserver/README includes further notes on GDBserver; in
 particular, it explains how to build GDBserver for cross-debugging
 (where GDBserver runs on the target machine, which is of a different
 architecture than the host machine running GDB).
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record-btrace.c ./gdb/record-btrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record-btrace.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/record-btrace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Branch trace support for GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
@@ -36,12 +36,14 @@
 #include "frame-unwind.h"
 #include "hashtab.h"
 #include "infrun.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "inf-loop.h"
 #include "inferior.h"
 #include <algorithm>
 #include "gdbarch.h"
 #include "cli/cli-style.h"
+#include "async-event.h"
+#include <forward_list>
 
 static const target_info record_btrace_target_info = {
   "record-btrace",
@@ -283,6 +285,11 @@ require_btrace (void)
 static void
 record_btrace_enable_warn (struct thread_info *tp)
 {
+  /* Ignore this thread if its inferior is not recorded by us.  */
+  target_ops *rec = tp->inf->target_at (record_stratum);
+  if (rec != &record_btrace_ops)
+    return;
+
   try
     {
       btrace_enable (tp, &record_btrace_conf);
@@ -319,7 +326,7 @@ record_btrace_auto_disable (void)
 static void
 record_btrace_handle_async_inferior_event (gdb_client_data data)
 {
-  inferior_event_handler (INF_REG_EVENT, NULL);
+  inferior_event_handler (INF_REG_EVENT);
 }
 
 /* See record-btrace.h.  */
@@ -386,7 +393,7 @@ record_btrace_target_open (const char *a
   if (!target_has_execution)
     error (_("The program is not being run."));
 
-  for (thread_info *tp : all_non_exited_threads ())
+  for (thread_info *tp : current_inferior ()->non_exited_threads ())
     if (args == NULL || *args == 0 || number_is_in_list (args, tp->global_num))
       {
 	btrace_enable (tp, &record_btrace_conf);
@@ -408,7 +415,7 @@ record_btrace_target::stop_recording ()
 
   record_btrace_auto_disable ();
 
-  for (thread_info *tp : all_non_exited_threads ())
+  for (thread_info *tp : current_inferior ()->non_exited_threads ())
     if (tp->btrace.target != NULL)
       btrace_disable (tp);
 }
@@ -442,7 +449,7 @@ record_btrace_target::close ()
 
   /* We should have already stopped recording.
      Tear down btrace in case we have not.  */
-  for (thread_info *tp : all_non_exited_threads ())
+  for (thread_info *tp : current_inferior ()->non_exited_threads ())
     btrace_teardown (tp);
 }
 
@@ -541,7 +548,7 @@ record_btrace_print_conf (const struct b
       return;
     }
 
-  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
+  internal_error (__FILE__, __LINE__, _("Unknown branch trace format."));
 }
 
 /* The info_record method of target record-btrace.  */
@@ -556,10 +563,11 @@ record_btrace_target::info_record ()
 
   DEBUG ("info");
 
-  tp = find_thread_ptid (inferior_ptid);
-  if (tp == NULL)
+  if (inferior_ptid == null_ptid)
     error (_("No thread."));
 
+  tp = inferior_thread ();
+
   validate_registers_access ();
 
   btinfo = &tp->btrace;
@@ -717,7 +725,16 @@ btrace_find_line_range (CORE_ADDR pc)
   range = btrace_mk_line_range (symtab, 0, 0);
   for (i = 0; i < nlines - 1; i++)
     {
-      if ((lines[i].pc == pc) && (lines[i].line != 0))
+      /* The test of is_stmt here was added when the is_stmt field was
+	 introduced to the 'struct linetable_entry' structure.  This
+	 ensured that this loop maintained the same behaviour as before we
+	 introduced is_stmt.  That said, it might be that we would be
+	 better off not checking is_stmt here, this would lead to us
+	 possibly adding more line numbers to the range.  At the time this
+	 change was made I was unsure how to test this so chose to go with
+	 maintaining the existing experience.  */
+      if ((lines[i].pc == pc) && (lines[i].line != 0)
+	  && (lines[i].is_stmt == 1))
 	range = btrace_line_range_add (range, lines[i].line);
     }
 
@@ -1373,7 +1390,8 @@ record_btrace_target::call_history_from
 enum record_method
 record_btrace_target::record_method (ptid_t ptid)
 {
-  struct thread_info * const tp = find_thread_ptid (ptid);
+  process_stratum_target *proc_target = current_inferior ()->process_target ();
+  thread_info *const tp = find_thread_ptid (proc_target, ptid);
 
   if (tp == NULL)
     error (_("No thread."));
@@ -1389,7 +1407,8 @@ record_btrace_target::record_method (pti
 bool
 record_btrace_target::record_is_replaying (ptid_t ptid)
 {
-  for (thread_info *tp : all_non_exited_threads (ptid))
+  process_stratum_target *proc_target = current_inferior ()->process_target ();
+  for (thread_info *tp : all_non_exited_threads (proc_target, ptid))
     if (btrace_is_replaying (tp))
       return true;
 
@@ -1519,14 +1538,16 @@ record_btrace_target::remove_breakpoint
 void
 record_btrace_target::fetch_registers (struct regcache *regcache, int regno)
 {
-  struct btrace_insn_iterator *replay;
-  struct thread_info *tp;
+  btrace_insn_iterator *replay = nullptr;
 
-  tp = find_thread_ptid (regcache->ptid ());
-  gdb_assert (tp != NULL);
+  /* Thread-db may ask for a thread's registers before GDB knows about the
+     thread.  We forward the request to the target beneath in this
+     case.  */
+  thread_info *tp = find_thread_ptid (regcache->target (), regcache->ptid ());
+  if (tp != nullptr)
+    replay =  tp->btrace.replay;
 
-  replay = tp->btrace.replay;
-  if (replay != NULL && !record_btrace_generating_corefile)
+  if (replay != nullptr && !record_btrace_generating_corefile)
     {
       const struct btrace_insn *insn;
       struct gdbarch *gdbarch;
@@ -1958,7 +1979,7 @@ static struct frame_id
 get_thread_current_frame_id (struct thread_info *tp)
 {
   struct frame_id id;
-  int executing;
+  bool executing;
 
   /* Set current thread, which is implicitly used by
      get_current_frame.  */
@@ -1966,6 +1987,8 @@ get_thread_current_frame_id (struct thre
 
   switch_to_thread (tp);
 
+  process_stratum_target *proc_target = tp->inf->process_target ();
+
   /* Clear the executing flag to allow changes to the current frame.
      We are not actually running, yet.  We just started a reverse execution
      command or a record goto command.
@@ -1974,7 +1997,7 @@ get_thread_current_frame_id (struct thre
      move the thread.  Since we need to recompute the stack, we temporarily
      set EXECUTING to false.  */
   executing = tp->executing;
-  set_executing (inferior_ptid, false);
+  set_executing (proc_target, inferior_ptid, false);
 
   id = null_frame_id;
   try
@@ -1984,13 +2007,13 @@ get_thread_current_frame_id (struct thre
   catch (const gdb_exception &except)
     {
       /* Restore the previous execution state.  */
-      set_executing (inferior_ptid, executing);
+      set_executing (proc_target, inferior_ptid, executing);
 
       throw;
     }
 
   /* Restore the previous execution state.  */
-  set_executing (inferior_ptid, executing);
+  set_executing (proc_target, inferior_ptid, executing);
 
   return id;
 }
@@ -2154,11 +2177,14 @@ record_btrace_target::resume (ptid_t pti
      record_btrace_wait below.
 
      For all-stop targets, we only step INFERIOR_PTID and continue others.  */
+
+  process_stratum_target *proc_target = current_inferior ()->process_target ();
+
   if (!target_is_non_stop_p ())
     {
       gdb_assert (inferior_ptid.matches (ptid));
 
-      for (thread_info *tp : all_non_exited_threads (ptid))
+      for (thread_info *tp : all_non_exited_threads (proc_target, ptid))
 	{
 	  if (tp->ptid.matches (inferior_ptid))
 	    record_btrace_resume_thread (tp, flag);
@@ -2168,7 +2194,7 @@ record_btrace_target::resume (ptid_t pti
     }
   else
     {
-      for (thread_info *tp : all_non_exited_threads (ptid))
+      for (thread_info *tp : all_non_exited_threads (proc_target, ptid))
 	record_btrace_resume_thread (tp, flag);
     }
 
@@ -2526,7 +2552,8 @@ record_btrace_target::wait (ptid_t ptid,
     }
 
   /* Keep a work list of moving threads.  */
-  for (thread_info *tp : all_non_exited_threads (ptid))
+  process_stratum_target *proc_target = current_inferior ()->process_target ();
+  for (thread_info *tp : all_non_exited_threads (proc_target, ptid))
     if ((tp->btrace.flags & (BTHR_MOVE | BTHR_STOP)) != 0)
       moving.push_back (tp);
 
@@ -2609,7 +2636,7 @@ record_btrace_target::wait (ptid_t ptid,
   /* Stop all other threads. */
   if (!target_is_non_stop_p ())
     {
-      for (thread_info *tp : all_non_exited_threads ())
+      for (thread_info *tp : current_inferior ()->non_exited_threads ())
 	record_btrace_cancel_resume (tp);
     }
 
@@ -2646,7 +2673,10 @@ record_btrace_target::stop (ptid_t ptid)
     }
   else
     {
-      for (thread_info *tp : all_non_exited_threads (ptid))
+      process_stratum_target *proc_target
+	= current_inferior ()->process_target ();
+
+      for (thread_info *tp : all_non_exited_threads (proc_target, ptid))
 	{
 	  tp->btrace.flags &= ~BTHR_MOVE;
 	  tp->btrace.flags |= BTHR_STOP;
@@ -2843,7 +2873,7 @@ record_btrace_target::goto_record (ULONG
 void
 record_btrace_target::record_stop_replaying ()
 {
-  for (thread_info *tp : all_non_exited_threads ())
+  for (thread_info *tp : current_inferior ()->non_exited_threads ())
     record_btrace_stop_replaying (tp);
 }
 
@@ -2943,25 +2973,6 @@ cmd_record_btrace_start (const char *arg
     }
 }
 
-/* The "set record btrace" command.  */
-
-static void
-cmd_set_record_btrace (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"set record btrace\" must be followed "
-		       "by an appropriate subcommand.\n"));
-  help_list (set_record_btrace_cmdlist, "set record btrace ",
-	     all_commands, gdb_stdout);
-}
-
-/* The "show record btrace" command.  */
-
-static void
-cmd_show_record_btrace (const char *args, int from_tty)
-{
-  cmd_show_list (show_record_btrace_cmdlist, from_tty, "");
-}
-
 /* The "show record btrace replay-memory-access" command.  */
 
 static void
@@ -3076,44 +3087,6 @@ cmd_show_record_btrace_cpu (const char *
   error (_("Internal error: bad cpu state."));
 }
 
-/* The "s record btrace bts" command.  */
-
-static void
-cmd_set_record_btrace_bts (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"set record btrace bts\" must be followed "
-		       "by an appropriate subcommand.\n"));
-  help_list (set_record_btrace_bts_cmdlist, "set record btrace bts ",
-	     all_commands, gdb_stdout);
-}
-
-/* The "show record btrace bts" command.  */
-
-static void
-cmd_show_record_btrace_bts (const char *args, int from_tty)
-{
-  cmd_show_list (show_record_btrace_bts_cmdlist, from_tty, "");
-}
-
-/* The "set record btrace pt" command.  */
-
-static void
-cmd_set_record_btrace_pt (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"set record btrace pt\" must be followed "
-		       "by an appropriate subcommand.\n"));
-  help_list (set_record_btrace_pt_cmdlist, "set record btrace pt ",
-	     all_commands, gdb_stdout);
-}
-
-/* The "show record btrace pt" command.  */
-
-static void
-cmd_show_record_btrace_pt (const char *args, int from_tty)
-{
-  cmd_show_list (show_record_btrace_pt_cmdlist, from_tty, "");
-}
-
 /* The "record bts buffer-size" show value function.  */
 
 static void
@@ -3138,8 +3111,9 @@ show_record_pt_buffer_size_value (struct
 
 /* Initialize btrace commands.  */
 
+void _initialize_record_btrace ();
 void
-_initialize_record_btrace (void)
+_initialize_record_btrace ()
 {
   add_prefix_cmd ("btrace", class_obscure, cmd_record_btrace_start,
 		  _("Start branch trace recording."), &record_btrace_cmdlist,
@@ -3161,13 +3135,13 @@ This format may not be available on all
 	   &record_btrace_cmdlist);
   add_alias_cmd ("pt", "btrace pt", class_obscure, 1, &record_cmdlist);
 
-  add_prefix_cmd ("btrace", class_support, cmd_set_record_btrace,
-		  _("Set record options."), &set_record_btrace_cmdlist,
-		  "set record btrace ", 0, &set_record_cmdlist);
-
-  add_prefix_cmd ("btrace", class_support, cmd_show_record_btrace,
-		  _("Show record options."), &show_record_btrace_cmdlist,
-		  "show record btrace ", 0, &show_record_cmdlist);
+  add_basic_prefix_cmd ("btrace", class_support,
+			_("Set record options."), &set_record_btrace_cmdlist,
+			"set record btrace ", 0, &set_record_cmdlist);
+
+  add_show_prefix_cmd ("btrace", class_support,
+		       _("Show record options."), &show_record_btrace_cmdlist,
+		       "show record btrace ", 0, &show_record_cmdlist);
 
   add_setshow_enum_cmd ("replay-memory-access", no_class,
 			replay_memory_access_types, &replay_memory_access, _("\
@@ -3210,15 +3184,17 @@ Do not enable errata workarounds for tra
 Show the cpu to be used for trace decode."),
 	   &show_record_btrace_cmdlist);
 
-  add_prefix_cmd ("bts", class_support, cmd_set_record_btrace_bts,
-		  _("Set record btrace bts options."),
-		  &set_record_btrace_bts_cmdlist,
-		  "set record btrace bts ", 0, &set_record_btrace_cmdlist);
-
-  add_prefix_cmd ("bts", class_support, cmd_show_record_btrace_bts,
-		  _("Show record btrace bts options."),
-		  &show_record_btrace_bts_cmdlist,
-		  "show record btrace bts ", 0, &show_record_btrace_cmdlist);
+  add_basic_prefix_cmd ("bts", class_support,
+			_("Set record btrace bts options."),
+			&set_record_btrace_bts_cmdlist,
+			"set record btrace bts ", 0,
+			&set_record_btrace_cmdlist);
+
+  add_show_prefix_cmd ("bts", class_support,
+		       _("Show record btrace bts options."),
+		       &show_record_btrace_bts_cmdlist,
+		       "show record btrace bts ", 0,
+		       &show_record_btrace_cmdlist);
 
   add_setshow_uinteger_cmd ("buffer-size", no_class,
 			    &record_btrace_conf.bts.size,
@@ -3234,15 +3210,17 @@ The trace buffer size may not be changed
 			    &set_record_btrace_bts_cmdlist,
 			    &show_record_btrace_bts_cmdlist);
 
-  add_prefix_cmd ("pt", class_support, cmd_set_record_btrace_pt,
-		  _("Set record btrace pt options."),
-		  &set_record_btrace_pt_cmdlist,
-		  "set record btrace pt ", 0, &set_record_btrace_cmdlist);
-
-  add_prefix_cmd ("pt", class_support, cmd_show_record_btrace_pt,
-		  _("Show record btrace pt options."),
-		  &show_record_btrace_pt_cmdlist,
-		  "show record btrace pt ", 0, &show_record_btrace_cmdlist);
+  add_basic_prefix_cmd ("pt", class_support,
+			_("Set record btrace pt options."),
+			&set_record_btrace_pt_cmdlist,
+			"set record btrace pt ", 0,
+			&set_record_btrace_cmdlist);
+
+  add_show_prefix_cmd ("pt", class_support,
+		       _("Show record btrace pt options."),
+		       &show_record_btrace_pt_cmdlist,
+		       "show record btrace pt ", 0,
+		       &show_record_btrace_cmdlist);
 
   add_setshow_uinteger_cmd ("buffer-size", no_class,
 			    &record_btrace_conf.pt.size,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record-btrace.h ./gdb/record-btrace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record-btrace.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/record-btrace.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Branch trace support for GDB, the GNU debugger.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <tim.wiederhake@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record.c ./gdb/record.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/record.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Process record and replay target for GDB, the GNU debugger.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -314,23 +314,6 @@ cmd_record_stop (const char *args, int f
   gdb::observers::record_changed.notify (current_inferior (), 0, NULL, NULL);
 }
 
-/* The "set record" command.  */
-
-static void
-set_record_command (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"set record\" must be followed "
-		       "by an appropriate subcommand.\n"));
-  help_list (set_record_cmdlist, "set record ", all_commands, gdb_stdout);
-}
-
-/* The "show record" command.  */
-
-static void
-show_record_command (const char *args, int from_tty)
-{
-  cmd_show_list (show_record_cmdlist, from_tty, "");
-}
 
 /* The "info record" command.  */
 
@@ -772,8 +755,9 @@ set_record_call_history_size (const char
 			 &record_call_history_size);
 }
 
+void _initialize_record ();
 void
-_initialize_record (void)
+_initialize_record ()
 {
   struct cmd_list_element *c;
 
@@ -807,13 +791,13 @@ A size of \"unlimited\" means unlimited
   set_cmd_completer (c, filename_completer);
 
   add_com_alias ("rec", "record", class_obscure, 1);
-  add_prefix_cmd ("record", class_support, set_record_command,
-		  _("Set record options."), &set_record_cmdlist,
-		  "set record ", 0, &setlist);
+  add_basic_prefix_cmd ("record", class_support,
+			_("Set record options."), &set_record_cmdlist,
+			"set record ", 0, &setlist);
   add_alias_cmd ("rec", "record", class_obscure, 1, &setlist);
-  add_prefix_cmd ("record", class_support, show_record_command,
-		  _("Show record options."), &show_record_cmdlist,
-		  "show record ", 0, &showlist);
+  add_show_prefix_cmd ("record", class_support,
+		       _("Show record options."), &show_record_cmdlist,
+		       "show record ", 0, &showlist);
   add_alias_cmd ("rec", "record", class_obscure, 1, &showlist);
   add_prefix_cmd ("record", class_support, info_record_command,
 		  _("Info record options."), &info_record_cmdlist,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record-full.c ./gdb/record-full.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record-full.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/record-full.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Process record and replay target for GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -31,13 +31,14 @@
 #include "record-full.h"
 #include "elf-bfd.h"
 #include "gcore.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "inf-loop.h"
 #include "gdb_bfd.h"
 #include "observable.h"
 #include "infrun.h"
 #include "gdbsupport/gdb_unlinker.h"
 #include "gdbsupport/byte-vector.h"
+#include "async-event.h"
 
 #include <signal.h>
 
@@ -319,7 +320,7 @@ public:
 			 struct bp_target_info *,
 			 enum remove_bp_reason) override;
 
-  bool has_execution (ptid_t) override;
+  bool has_execution (inferior *inf) override;
 };
 
 static record_full_target record_full_ops;
@@ -904,7 +905,7 @@ static struct async_event_handler *recor
 static void
 record_full_async_inferior_event_handler (gdb_client_data data)
 {
-  inferior_event_handler (INF_REG_EVENT, NULL);
+  inferior_event_handler (INF_REG_EVENT);
 }
 
 /* Open the process record target for 'core' files.  */
@@ -1036,6 +1037,9 @@ record_full_base_target::async (int enab
   beneath ()->async (enable);
 }
 
+/* The PTID and STEP arguments last passed to
+   record_full_target::resume.  */
+static ptid_t record_full_resume_ptid = null_ptid;
 static int record_full_resume_step = 0;
 
 /* True if we've been resumed, and so each record_full_wait call should
@@ -1064,6 +1068,7 @@ static enum exec_direction_kind record_f
 void
 record_full_target::resume (ptid_t ptid, int step, enum gdb_signal signal)
 {
+  record_full_resume_ptid = inferior_ptid;
   record_full_resume_step = step;
   record_full_resumed = 1;
   record_full_execution_dir = ::execution_direction;
@@ -1190,7 +1195,8 @@ record_full_wait_1 (struct target_ops *o
 	  /* This is not a single step.  */
 	  ptid_t ret;
 	  CORE_ADDR tmp_pc;
-	  struct gdbarch *gdbarch = target_thread_architecture (inferior_ptid);
+	  struct gdbarch *gdbarch
+	    = target_thread_architecture (record_full_resume_ptid);
 
 	  while (1)
 	    {
@@ -1223,6 +1229,8 @@ record_full_wait_1 (struct target_ops *o
 		     interested in the event.  */
 
 		  registers_changed ();
+		  switch_to_thread (current_inferior ()->process_target (),
+				    ret);
 		  regcache = get_current_regcache ();
 		  tmp_pc = regcache_read_pc (regcache);
 		  const struct address_space *aspace = regcache->aspace ();
@@ -1255,14 +1263,17 @@ record_full_wait_1 (struct target_ops *o
 
                       if (gdbarch_software_single_step_p (gdbarch))
 			{
+			  process_stratum_target *proc_target
+			    = current_inferior ()->process_target ();
+
 			  /* Try to insert the software single step breakpoint.
 			     If insert success, set step to 0.  */
-			  set_executing (inferior_ptid, 0);
+			  set_executing (proc_target, inferior_ptid, false);
 			  reinit_frame_cache ();
 
 			  step = !insert_single_step_breakpoints (gdbarch);
 
-			  set_executing (inferior_ptid, 1);
+			  set_executing (proc_target, inferior_ptid, true);
 			}
 
 		      if (record_debug)
@@ -1285,6 +1296,8 @@ record_full_wait_1 (struct target_ops *o
     }
   else
     {
+      switch_to_thread (current_inferior ()->process_target (),
+			record_full_resume_ptid);
       struct regcache *regcache = get_current_regcache ();
       struct gdbarch *gdbarch = regcache->arch ();
       const struct address_space *aspace = regcache->aspace ();
@@ -2239,7 +2252,7 @@ record_full_core_target::remove_breakpoi
 /* "has_execution" method for prec over corefile.  */
 
 bool
-record_full_core_target::has_execution (ptid_t the_ptid)
+record_full_core_target::has_execution (inferior *inf)
 {
   return true;
 }
@@ -2781,27 +2794,9 @@ set_record_full_insn_max_num (const char
     }
 }
 
-/* The "set record full" command.  */
-
-static void
-set_record_full_command (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"set record full\" must be followed "
-		       "by an appropriate subcommand.\n"));
-  help_list (set_record_full_cmdlist, "set record full ", all_commands,
-	     gdb_stdout);
-}
-
-/* The "show record full" command.  */
-
-static void
-show_record_full_command (const char *args, int from_tty)
-{
-  cmd_show_list (show_record_full_cmdlist, from_tty, "");
-}
-
+void _initialize_record_full ();
 void
-_initialize_record_full (void)
+_initialize_record_full ()
 {
   struct cmd_list_element *c;
 
@@ -2830,13 +2825,13 @@ Argument is filename.  File must be crea
   set_cmd_completer (c, filename_completer);
   deprecate_cmd (c, "record full restore");
 
-  add_prefix_cmd ("full", class_support, set_record_full_command,
-		  _("Set record options."), &set_record_full_cmdlist,
-		  "set record full ", 0, &set_record_cmdlist);
-
-  add_prefix_cmd ("full", class_support, show_record_full_command,
-		  _("Show record options."), &show_record_full_cmdlist,
-		  "show record full ", 0, &show_record_cmdlist);
+  add_basic_prefix_cmd ("full", class_support,
+			_("Set record options."), &set_record_full_cmdlist,
+			"set record full ", 0, &set_record_cmdlist);
+
+  add_show_prefix_cmd ("full", class_support,
+		       _("Show record options."), &show_record_full_cmdlist,
+		       "show record full ", 0, &show_record_cmdlist);
 
   /* Record instructions number limit command.  */
   add_setshow_boolean_cmd ("stop-at-limit", no_class,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record-full.h ./gdb/record-full.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record-full.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/record-full.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Process record and replay target for GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record.h ./gdb/record.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/record.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/record.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Process record and replay target for GDB, the GNU debugger.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regcache.c ./gdb/regcache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regcache.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regcache.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Cache and manage the values of registers for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,13 +22,14 @@
 #include "gdbthread.h"
 #include "target.h"
 #include "test-target.h"
+#include "scoped-mock-context.h"
 #include "gdbarch.h"
 #include "gdbcmd.h"
 #include "regcache.h"
 #include "reggroups.h"
 #include "observable.h"
 #include "regset.h"
-#include <forward_list>
+#include <unordered_map>
 
 /*
  * DATA STRUCTURE
@@ -101,7 +102,7 @@ init_regcache_descr (struct gdbarch *gdb
 
   /* Lay out the register cache.
 
-     NOTE: cagney/2002-05-22: Only register_type() is used when
+     NOTE: cagney/2002-05-22: Only register_type () is used when
      constructing the register cache.  It is assumed that the
      register's raw size, virtual size and type length are all the
      same.  */
@@ -196,10 +197,11 @@ reg_buffer::reg_buffer (gdbarch *gdbarch
     }
 }
 
-regcache::regcache (gdbarch *gdbarch, const address_space *aspace_)
+regcache::regcache (process_stratum_target *target, gdbarch *gdbarch,
+		    const address_space *aspace_)
 /* The register buffers.  A read/write register cache can only hold
    [0 .. gdbarch_num_regs).  */
-  : detached_regcache (gdbarch, false), m_aspace (aspace_)
+  : detached_regcache (gdbarch, false), m_aspace (aspace_), m_target (target)
 {
   m_ptid = minus_one_ptid;
 }
@@ -311,51 +313,93 @@ reg_buffer::assert_regnum (int regnum) c
     gdb_assert (regnum < gdbarch_num_regs (arch ()));
 }
 
-/* Global structure containing the current regcache.  */
+/* Type to map a ptid to a list of regcaches (one thread may have multiple
+   regcaches, associated to different gdbarches).  */
+
+using ptid_regcache_map
+  = std::unordered_multimap<ptid_t, regcache_up, hash_ptid>;
+
+/* Type holding regcaches for a given pid.  */
+
+using pid_ptid_regcache_map = std::unordered_map<int, ptid_regcache_map>;
+
+/* Type holding regcaches for a given target.  */
+
+using target_pid_ptid_regcache_map
+  = std::unordered_map<process_stratum_target *, pid_ptid_regcache_map>;
+
+/* Global structure containing the existing regcaches.  */
 
 /* NOTE: this is a write-through cache.  There is no "dirty" bit for
    recording if the register values have been changed (eg. by the
    user).  Therefore all registers must be written back to the
    target when appropriate.  */
-std::forward_list<regcache *> regcache::current_regcache;
+static target_pid_ptid_regcache_map regcaches;
 
 struct regcache *
-get_thread_arch_aspace_regcache (ptid_t ptid, struct gdbarch *gdbarch,
+get_thread_arch_aspace_regcache (process_stratum_target *target,
+				 ptid_t ptid, gdbarch *arch,
 				 struct address_space *aspace)
 {
-  for (const auto &regcache : regcache::current_regcache)
-    if (regcache->ptid () == ptid && regcache->arch () == gdbarch)
-      return regcache;
+  gdb_assert (target != nullptr);
+
+  /* Find the map for this target.  */
+  pid_ptid_regcache_map &pid_ptid_regc_map = regcaches[target];
+
+  /* Find the map for this pid.  */
+  ptid_regcache_map &ptid_regc_map = pid_ptid_regc_map[ptid.pid ()];
 
-  regcache *new_regcache = new regcache (gdbarch, aspace);
+  /* Check first if a regcache for this arch already exists.  */
+  auto range = ptid_regc_map.equal_range (ptid);
+  for (auto it = range.first; it != range.second; ++it)
+    {
+      if (it->second->arch () == arch)
+	return it->second.get ();
+    }
 
-  regcache::current_regcache.push_front (new_regcache);
+  /* It does not exist, create it.  */
+  regcache *new_regcache = new regcache (target, arch, aspace);
   new_regcache->set_ptid (ptid);
+  /* Work around a problem with g++ 4.8 (PR96537): Call the regcache_up
+     constructor explictly instead of implicitly.  */
+  ptid_regc_map.insert (std::make_pair (ptid, regcache_up (new_regcache)));
 
   return new_regcache;
 }
 
 struct regcache *
-get_thread_arch_regcache (ptid_t ptid, struct gdbarch *gdbarch)
+get_thread_arch_regcache (process_stratum_target *target, ptid_t ptid,
+			  struct gdbarch *gdbarch)
 {
+  scoped_restore_current_inferior restore_current_inferior;
+  set_current_inferior (find_inferior_ptid (target, ptid));
   address_space *aspace = target_thread_address_space (ptid);
 
-  return get_thread_arch_aspace_regcache  (ptid, gdbarch, aspace);
+  return get_thread_arch_aspace_regcache (target, ptid, gdbarch, aspace);
 }
 
+static process_stratum_target *current_thread_target;
 static ptid_t current_thread_ptid;
 static struct gdbarch *current_thread_arch;
 
 struct regcache *
-get_thread_regcache (ptid_t ptid)
+get_thread_regcache (process_stratum_target *target, ptid_t ptid)
 {
-  if (!current_thread_arch || current_thread_ptid != ptid)
+  if (!current_thread_arch
+      || target != current_thread_target
+      || current_thread_ptid != ptid)
     {
+      gdb_assert (ptid != null_ptid);
+
       current_thread_ptid = ptid;
+      current_thread_target = target;
+
+      scoped_restore_current_inferior restore_current_inferior;
+      set_current_inferior (find_inferior_ptid (target, ptid));
       current_thread_arch = target_thread_architecture (ptid);
     }
 
-  return get_thread_arch_regcache (ptid, current_thread_arch);
+  return get_thread_arch_regcache (target, ptid, current_thread_arch);
 }
 
 /* See regcache.h.  */
@@ -363,7 +407,8 @@ get_thread_regcache (ptid_t ptid)
 struct regcache *
 get_thread_regcache (thread_info *thread)
 {
-  return get_thread_regcache (thread->ptid);
+  return get_thread_regcache (thread->inf->process_target (),
+			      thread->ptid);
 }
 
 struct regcache *
@@ -377,7 +422,11 @@ get_current_regcache (void)
 struct regcache *
 get_thread_regcache_for_ptid (ptid_t ptid)
 {
-  return get_thread_regcache (ptid);
+  /* This function doesn't take a process_stratum_target parameter
+     because it's a gdbsupport/ routine implemented by both gdb and
+     gdbserver.  It always refers to a ptid of the current target.  */
+  process_stratum_target *proc_target = current_inferior ()->process_target ();
+  return get_thread_regcache (proc_target, ptid);
 }
 
 /* Observer for the target_changed event.  */
@@ -388,15 +437,34 @@ regcache_observer_target_changed (struct
   registers_changed ();
 }
 
-/* Update global variables old ptids to hold NEW_PTID if they were
-   holding OLD_PTID.  */
-void
-regcache::regcache_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid)
+/* Update regcaches related to OLD_PTID to now use NEW_PTID.  */
+static void
+regcache_thread_ptid_changed (process_stratum_target *target,
+			      ptid_t old_ptid, ptid_t new_ptid)
 {
-  for (auto &regcache : regcache::current_regcache)
-    {
-      if (regcache->ptid () == old_ptid)
-	regcache->set_ptid (new_ptid);
+  /* Look up map for target.  */
+  auto pid_ptid_regc_map_it = regcaches.find (target);
+  if (pid_ptid_regc_map_it == regcaches.end ())
+    return;
+
+ /* Look up map for pid.  */
+  pid_ptid_regcache_map &pid_ptid_regc_map = pid_ptid_regc_map_it->second;
+  auto ptid_regc_map_it = pid_ptid_regc_map.find (old_ptid.pid ());
+  if (ptid_regc_map_it == pid_ptid_regc_map.end ())
+    return;
+
+  /* Update all regcaches belonging to old_ptid.  */
+  ptid_regcache_map &ptid_regc_map = ptid_regc_map_it->second;
+  auto range = ptid_regc_map.equal_range (old_ptid);
+  for (auto it = range.first; it != range.second;)
+    {
+      regcache_up rc = std::move (it->second);
+      rc->set_ptid (new_ptid);
+
+      /* Remove old before inserting new, to avoid rehashing,
+	 which would invalidate iterators.  */
+      it = ptid_regc_map.erase (it);
+      ptid_regc_map.insert (std::make_pair (new_ptid, std::move (rc)));
     }
 }
 
@@ -412,29 +480,73 @@ regcache::regcache_thread_ptid_changed (
    Indicate that registers may have changed, so invalidate the cache.  */
 
 void
-registers_changed_ptid (ptid_t ptid)
+registers_changed_ptid (process_stratum_target *target, ptid_t ptid)
 {
-  for (auto oit = regcache::current_regcache.before_begin (),
-	 it = std::next (oit);
-       it != regcache::current_regcache.end ();
-       )
+  if (target == nullptr)
     {
-      if ((*it)->ptid ().matches (ptid))
+      /* Since there can be ptid clashes between targets, it's not valid to
+	 pass a ptid without saying to which target it belongs.  */
+      gdb_assert (ptid == minus_one_ptid);
+
+      /* Delete all the regcaches of all targets.  */
+      regcaches.clear ();
+    }
+  else if (ptid.is_pid ())
+    {
+      /* Non-NULL target and pid ptid, delete all regcaches belonging
+	 to this (TARGET, PID).  */
+
+      /* Look up map for target.  */
+      auto pid_ptid_regc_map_it = regcaches.find (target);
+      if (pid_ptid_regc_map_it != regcaches.end ())
 	{
-	  delete *it;
-	  it = regcache::current_regcache.erase_after (oit);
+	  pid_ptid_regcache_map &pid_ptid_regc_map
+	    = pid_ptid_regc_map_it->second;
+
+	  pid_ptid_regc_map.erase (ptid.pid ());
 	}
-      else
-	oit = it++;
     }
+  else if (ptid != minus_one_ptid)
+    {
+      /* Non-NULL target and non-minus_one_ptid, delete all regcaches belonging
+	 to this (TARGET, PTID).  */
 
-  if (current_thread_ptid.matches (ptid))
+      /* Look up map for target.  */
+      auto pid_ptid_regc_map_it = regcaches.find (target);
+      if (pid_ptid_regc_map_it != regcaches.end ())
+	{
+	  pid_ptid_regcache_map &pid_ptid_regc_map
+	    = pid_ptid_regc_map_it->second;
+
+	  /* Look up map for pid.  */
+	  auto ptid_regc_map_it
+	    = pid_ptid_regc_map.find (ptid.pid ());
+	  if (ptid_regc_map_it != pid_ptid_regc_map.end ())
+	    {
+	      ptid_regcache_map &ptid_regc_map
+		= ptid_regc_map_it->second;
+
+	      ptid_regc_map.erase (ptid);
+	    }
+	}
+    }
+  else
     {
+       /* Non-NULL target and minus_one_ptid, delete all regcaches
+	  associated to this target.  */
+      regcaches.erase (target);
+    }
+
+  if ((target == nullptr || current_thread_target == target)
+      && current_thread_ptid.matches (ptid))
+    {
+      current_thread_target = NULL;
       current_thread_ptid = null_ptid;
       current_thread_arch = NULL;
     }
 
-  if (inferior_ptid.matches (ptid))
+  if ((target == nullptr || current_inferior ()->process_target () == target)
+      && inferior_ptid.matches (ptid))
     {
       /* We just deleted the regcache of the current thread.  Need to
 	 forget about any frames we have cached, too.  */
@@ -447,13 +559,13 @@ registers_changed_ptid (ptid_t ptid)
 void
 registers_changed_thread (thread_info *thread)
 {
-  registers_changed_ptid (thread->ptid);
+  registers_changed_ptid (thread->inf->process_target (), thread->ptid);
 }
 
 void
 registers_changed (void)
 {
-  registers_changed_ptid (minus_one_ptid);
+  registers_changed_ptid (nullptr, minus_one_ptid);
 }
 
 void
@@ -1192,6 +1304,24 @@ regcache_read_pc (struct regcache *regca
   return pc_val;
 }
 
+/* See gdbsupport/common-regcache.h.  */
+
+CORE_ADDR
+regcache_read_pc_protected (regcache *regcache)
+{
+  CORE_ADDR pc;
+  try
+    {
+      pc = regcache_read_pc (regcache);
+    }
+  catch (const gdb_exception_error &ex)
+    {
+      pc = 0;
+    }
+
+  return pc;
+}
+
 void
 regcache_write_pc (struct regcache *regcache, CORE_ADDR pc)
 {
@@ -1346,7 +1476,7 @@ register_dump::dump (ui_file *file)
 	  {
 	    static const char blt[] = "builtin_type";
 
-	    t = TYPE_NAME (register_type (m_gdbarch, regnum));
+	    t = register_type (m_gdbarch, regnum)->name ();
 	    if (t == NULL)
 	      {
 		if (!footnote_register_type_name_null)
@@ -1386,69 +1516,203 @@ register_dump::dump (ui_file *file)
 
 namespace selftests {
 
-class regcache_access : public regcache
+static size_t
+regcaches_size ()
 {
-public:
+  size_t size = 0;
+
+  for (auto pid_ptid_regc_map_it = regcaches.cbegin ();
+       pid_ptid_regc_map_it != regcaches.cend ();
+       ++pid_ptid_regc_map_it)
+    {
+      const pid_ptid_regcache_map &pid_ptid_regc_map
+	= pid_ptid_regc_map_it->second;
+
+      for (auto ptid_regc_map_it = pid_ptid_regc_map.cbegin ();
+	   ptid_regc_map_it != pid_ptid_regc_map.cend ();
+	   ++ptid_regc_map_it)
+	{
+	  const ptid_regcache_map &ptid_regc_map
+	    = ptid_regc_map_it->second;
+
+	  size += ptid_regc_map.size ();
+	}
+    }
+
+  return size;
+}
+
+/* Return the count of regcaches for (TARGET, PTID) in REGCACHES.  */
+
+static int
+regcache_count (process_stratum_target *target, ptid_t ptid)
+{
+  /* Look up map for target.  */
+  auto pid_ptid_regc_map_it = regcaches.find (target);
+  if (pid_ptid_regc_map_it != regcaches.end ())
+    {
+      pid_ptid_regcache_map &pid_ptid_regc_map = pid_ptid_regc_map_it->second;
+
+      /* Look map for pid.  */
+      auto ptid_regc_map_it = pid_ptid_regc_map.find (ptid.pid ());
+      if (ptid_regc_map_it != pid_ptid_regc_map.end ())
+	{
+	  ptid_regcache_map &ptid_regc_map = ptid_regc_map_it->second;
+	  auto range = ptid_regc_map.equal_range (ptid);
+
+	  return std::distance (range.first, range.second);
+	}
+    }
+
+  return 0;
+};
+
+/* Wrapper around get_thread_arch_aspace_regcache that does some self checks.  */
+
+static void
+get_thread_arch_aspace_regcache_and_check (process_stratum_target *target,
+					   ptid_t ptid)
+{
+  /* We currently only test with a single gdbarch.  Any gdbarch will do, so use
+     the current inferior's gdbarch.  Also use the current inferior's address
+     space.  */
+  gdbarch *arch = current_inferior ()->gdbarch;
+  address_space *aspace = current_inferior ()->aspace;
+  regcache *regcache
+    = get_thread_arch_aspace_regcache (target, ptid, arch, aspace);
+
+  SELF_CHECK (regcache != NULL);
+  SELF_CHECK (regcache->target () == target);
+  SELF_CHECK (regcache->ptid () == ptid);
+  SELF_CHECK (regcache->arch () == arch);
+  SELF_CHECK (regcache->aspace () == aspace);
+}
+
+/* The data that the regcaches selftests must hold onto for the duration of the
+   test.  */
 
-  /* Return the number of elements in current_regcache.  */
+struct regcache_test_data
+{
+  regcache_test_data ()
+  {
+    /* Ensure the regcaches container is empty at the start.  */
+    registers_changed ();
+  }
 
-  static size_t
-  current_regcache_size ()
+  ~regcache_test_data ()
   {
-    return std::distance (regcache::current_regcache.begin (),
-			  regcache::current_regcache.end ());
+    /* Make sure to leave the global regcaches container empty.  */
+    registers_changed ();
   }
+
+  test_target_ops test_target1;
+  test_target_ops test_target2;
 };
 
+using regcache_test_data_up = std::unique_ptr<regcache_test_data>;
+
+/* Set up a few regcaches from two different targets, for use in
+   regcache-management tests.
+
+   Return a pointer, because the `regcache_test_data` type is not moveable.  */
+
+static regcache_test_data_up
+populate_regcaches_for_test ()
+{
+  regcache_test_data_up data (new regcache_test_data);
+  size_t expected_regcache_size = 0;
+
+  SELF_CHECK (regcaches_size () == 0);
+
+  /* Populate the regcache container with a few regcaches for the two test
+     targets. */
+  for (int pid : { 1, 2 })
+    {
+      for (long lwp : { 1, 2, 3 })
+	{
+	  get_thread_arch_aspace_regcache_and_check
+	    (&data->test_target1, ptid_t (pid, lwp));
+	  expected_regcache_size++;
+	  SELF_CHECK (regcaches_size () == expected_regcache_size);
+
+	  get_thread_arch_aspace_regcache_and_check
+	    (&data->test_target2, ptid_t (pid, lwp));
+	  expected_regcache_size++;
+	  SELF_CHECK (regcaches_size () == expected_regcache_size);
+	}
+    }
+
+  return data;
+}
+
 static void
-current_regcache_test (void)
+get_thread_arch_aspace_regcache_test ()
 {
-  /* It is empty at the start.  */
-  SELF_CHECK (regcache_access::current_regcache_size () == 0);
+  /* populate_regcaches_for_test already tests most of the
+     get_thread_arch_aspace_regcache functionality.  */
+  regcache_test_data_up data = populate_regcaches_for_test ();
+  size_t regcaches_size_before = regcaches_size ();
 
-  ptid_t ptid1 (1), ptid2 (2), ptid3 (3);
+  /* Test that getting an existing regcache doesn't create a new one.  */
+  get_thread_arch_aspace_regcache_and_check (&data->test_target1, ptid_t (2, 2));
+  SELF_CHECK (regcaches_size () == regcaches_size_before);
+}
 
-  /* Get regcache from ptid1, a new regcache is added to
-     current_regcache.  */
-  regcache *regcache = get_thread_arch_aspace_regcache (ptid1,
-							target_gdbarch (),
-							NULL);
+  /* Test marking all regcaches of all targets as changed.  */
 
-  SELF_CHECK (regcache != NULL);
-  SELF_CHECK (regcache->ptid () == ptid1);
-  SELF_CHECK (regcache_access::current_regcache_size () == 1);
+static void
+registers_changed_ptid_all_test ()
+{
+  regcache_test_data_up data = populate_regcaches_for_test ();
 
-  /* Get regcache from ptid2, a new regcache is added to
-     current_regcache.  */
-  regcache = get_thread_arch_aspace_regcache (ptid2,
-					      target_gdbarch (),
-					      NULL);
-  SELF_CHECK (regcache != NULL);
-  SELF_CHECK (regcache->ptid () == ptid2);
-  SELF_CHECK (regcache_access::current_regcache_size () == 2);
+  registers_changed_ptid (nullptr, minus_one_ptid);
+  SELF_CHECK (regcaches_size () == 0);
+}
 
-  /* Get regcache from ptid3, a new regcache is added to
-     current_regcache.  */
-  regcache = get_thread_arch_aspace_regcache (ptid3,
-					      target_gdbarch (),
-					      NULL);
-  SELF_CHECK (regcache != NULL);
-  SELF_CHECK (regcache->ptid () == ptid3);
-  SELF_CHECK (regcache_access::current_regcache_size () == 3);
+/* Test marking regcaches of a specific target as changed.  */
 
-  /* Get regcache from ptid2 again, nothing is added to
-     current_regcache.  */
-  regcache = get_thread_arch_aspace_regcache (ptid2,
-					      target_gdbarch (),
-					      NULL);
-  SELF_CHECK (regcache != NULL);
-  SELF_CHECK (regcache->ptid () == ptid2);
-  SELF_CHECK (regcache_access::current_regcache_size () == 3);
+static void
+registers_changed_ptid_target_test ()
+{
+  regcache_test_data_up data = populate_regcaches_for_test ();
+
+  registers_changed_ptid (&data->test_target1, minus_one_ptid);
+  SELF_CHECK (regcaches_size () == 6);
 
-  /* Mark ptid2 is changed, so regcache of ptid2 should be removed from
-     current_regcache.  */
-  registers_changed_ptid (ptid2);
-  SELF_CHECK (regcache_access::current_regcache_size () == 2);
+  /* Check that we deleted the regcache for the right target.  */
+  SELF_CHECK (regcache_count (&data->test_target1, ptid_t (2, 2)) == 0);
+  SELF_CHECK (regcache_count (&data->test_target2, ptid_t (2, 2)) == 1);
+}
+
+/* Test marking regcaches of a specific (target, pid) as changed.  */
+
+static void
+registers_changed_ptid_target_pid_test ()
+{
+  regcache_test_data_up data = populate_regcaches_for_test ();
+
+  registers_changed_ptid (&data->test_target1, ptid_t (2));
+  SELF_CHECK (regcaches_size () == 9);
+
+  /* Regcaches from target1 should not exist, while regcaches from target2
+     should exist.  */
+  SELF_CHECK (regcache_count (&data->test_target1, ptid_t (2, 2)) == 0);
+  SELF_CHECK (regcache_count (&data->test_target2, ptid_t (2, 2)) == 1);
+}
+
+/* Test marking regcaches of a specific (target, ptid) as changed.  */
+
+static void
+registers_changed_ptid_target_ptid_test ()
+{
+  regcache_test_data_up data = populate_regcaches_for_test ();
+
+  registers_changed_ptid (&data->test_target1, ptid_t (2, 2));
+  SELF_CHECK (regcaches_size () == 11);
+
+  /* Check that we deleted the regcache for the right target.  */
+  SELF_CHECK (regcache_count (&data->test_target1, ptid_t (2, 2)) == 0);
+  SELF_CHECK (regcache_count (&data->test_target2, ptid_t (2, 2)) == 1);
 }
 
 class target_ops_no_register : public test_target_ops
@@ -1509,8 +1773,9 @@ target_ops_no_register::xfer_partial (en
 class readwrite_regcache : public regcache
 {
 public:
-  readwrite_regcache (struct gdbarch *gdbarch)
-    : regcache (gdbarch, nullptr)
+  readwrite_regcache (process_stratum_target *target,
+		      struct gdbarch *gdbarch)
+    : regcache (target, gdbarch, nullptr)
   {}
 };
 
@@ -1520,49 +1785,7 @@ public:
 static void
 cooked_read_test (struct gdbarch *gdbarch)
 {
-  /* Error out if debugging something, because we're going to push the
-     test target, which would pop any existing target.  */
-  if (current_top_target ()->stratum () >= process_stratum)
-    error (_("target already pushed"));
-
-  /* Create a mock environment.  An inferior with a thread, with a
-     process_stratum target pushed.  */
-
-  target_ops_no_register mock_target;
-  ptid_t mock_ptid (1, 1);
-  inferior mock_inferior (mock_ptid.pid ());
-  address_space mock_aspace {};
-  mock_inferior.gdbarch = gdbarch;
-  mock_inferior.aspace = &mock_aspace;
-  thread_info mock_thread (&mock_inferior, mock_ptid);
-  mock_inferior.thread_list = &mock_thread;
-
-  /* Add the mock inferior to the inferior list so that look ups by
-     target+ptid can find it.  */
-  scoped_restore restore_inferior_list
-    = make_scoped_restore (&inferior_list);
-  inferior_list = &mock_inferior;
-
-  /* Switch to the mock inferior.  */
-  scoped_restore_current_inferior restore_current_inferior;
-  set_current_inferior (&mock_inferior);
-
-  /* Push the process_stratum target so we can mock accessing
-     registers.  */
-  push_target (&mock_target);
-
-  /* Pop it again on exit (return/exception).  */
-  struct on_exit
-  {
-    ~on_exit ()
-    {
-      pop_all_targets_at_and_above (process_stratum);
-    }
-  } pop_targets;
-
-  /* Switch to the mock thread.  */
-  scoped_restore restore_inferior_ptid
-    = make_scoped_restore (&inferior_ptid, mock_ptid);
+  scoped_mock_context<target_ops_no_register> mockctx (gdbarch);
 
   /* Test that read one raw register from regcache_no_target will go
      to the target layer.  */
@@ -1577,21 +1800,21 @@ cooked_read_test (struct gdbarch *gdbarc
 	break;
     }
 
-  readwrite_regcache readwrite (gdbarch);
+  readwrite_regcache readwrite (&mockctx.mock_target, gdbarch);
   gdb::def_vector<gdb_byte> buf (register_size (gdbarch, nonzero_regnum));
 
   readwrite.raw_read (nonzero_regnum, buf.data ());
 
   /* raw_read calls target_fetch_registers.  */
-  SELF_CHECK (mock_target.fetch_registers_called > 0);
-  mock_target.reset ();
+  SELF_CHECK (mockctx.mock_target.fetch_registers_called > 0);
+  mockctx.mock_target.reset ();
 
   /* Mark all raw registers valid, so the following raw registers
      accesses won't go to target.  */
   for (auto i = 0; i < gdbarch_num_regs (gdbarch); i++)
     readwrite.raw_update (i);
 
-  mock_target.reset ();
+  mockctx.mock_target.reset ();
   /* Then, read all raw and pseudo registers, and don't expect calling
      to_{fetch,store}_registers.  */
   for (int regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
@@ -1604,18 +1827,18 @@ cooked_read_test (struct gdbarch *gdbarc
       SELF_CHECK (REG_VALID == readwrite.cooked_read (regnum,
 						      inner_buf.data ()));
 
-      SELF_CHECK (mock_target.fetch_registers_called == 0);
-      SELF_CHECK (mock_target.store_registers_called == 0);
-      SELF_CHECK (mock_target.xfer_partial_called == 0);
+      SELF_CHECK (mockctx.mock_target.fetch_registers_called == 0);
+      SELF_CHECK (mockctx.mock_target.store_registers_called == 0);
+      SELF_CHECK (mockctx.mock_target.xfer_partial_called == 0);
 
-      mock_target.reset ();
+      mockctx.mock_target.reset ();
     }
 
   readonly_detached_regcache readonly (readwrite);
 
   /* GDB may go to target layer to fetch all registers and memory for
      readonly regcache.  */
-  mock_target.reset ();
+  mockctx.mock_target.reset ();
 
   for (int regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
     {
@@ -1673,11 +1896,11 @@ cooked_read_test (struct gdbarch *gdbarc
 	    }
 	}
 
-      SELF_CHECK (mock_target.fetch_registers_called == 0);
-      SELF_CHECK (mock_target.store_registers_called == 0);
-      SELF_CHECK (mock_target.xfer_partial_called == 0);
+      SELF_CHECK (mockctx.mock_target.fetch_registers_called == 0);
+      SELF_CHECK (mockctx.mock_target.store_registers_called == 0);
+      SELF_CHECK (mockctx.mock_target.xfer_partial_called == 0);
 
-      mock_target.reset ();
+      mockctx.mock_target.reset ();
     }
 }
 
@@ -1710,7 +1933,7 @@ cooked_write_test (struct gdbarch *gdbar
     }
   } pop_targets;
 
-  readwrite_regcache readwrite (gdbarch);
+  readwrite_regcache readwrite (&mock_target, gdbarch);
 
   const int num_regs = gdbarch_num_cooked_regs (gdbarch);
 
@@ -1734,17 +1957,17 @@ cooked_write_test (struct gdbarch *gdbar
       std::vector<gdb_byte> buf (register_size (gdbarch, regnum), 0);
       const auto type = register_type (gdbarch, regnum);
 
-      if (TYPE_CODE (type) == TYPE_CODE_FLT
-	  || TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
+      if (type->code () == TYPE_CODE_FLT
+	  || type->code () == TYPE_CODE_DECFLOAT)
 	{
 	  /* Generate valid float format.  */
 	  target_float_from_string (expected.data (), type, "1.25");
 	}
-      else if (TYPE_CODE (type) == TYPE_CODE_INT
-	       || TYPE_CODE (type) == TYPE_CODE_ARRAY
-	       || TYPE_CODE (type) == TYPE_CODE_PTR
-	       || TYPE_CODE (type) == TYPE_CODE_UNION
-	       || TYPE_CODE (type) == TYPE_CODE_STRUCT)
+      else if (type->code () == TYPE_CODE_INT
+	       || type->code () == TYPE_CODE_ARRAY
+	       || type->code () == TYPE_CODE_PTR
+	       || type->code () == TYPE_CODE_UNION
+	       || type->code () == TYPE_CODE_STRUCT)
 	{
 	  if (bfd_arch == bfd_arch_ia64
 	      || (regnum >= gdbarch_num_regs (gdbarch)
@@ -1774,7 +1997,7 @@ cooked_write_test (struct gdbarch *gdbar
 		expected[j] = j;
 	    }
 	}
-      else if (TYPE_CODE (type) == TYPE_CODE_FLAGS)
+      else if (type->code () == TYPE_CODE_FLAGS)
 	{
 	  /* No idea how to test flags.  */
 	  continue;
@@ -1793,28 +2016,92 @@ cooked_write_test (struct gdbarch *gdbar
     }
 }
 
+/* Verify that when two threads with the same ptid exist (from two different
+   targets) and one of them changes ptid, we only update the appropriate
+   regcaches.  */
+
+static void
+regcache_thread_ptid_changed ()
+{
+  /* This test relies on the global regcache list to initially be empty.  */
+  registers_changed ();
+
+  /* Any arch will do.  */
+  gdbarch *arch = current_inferior ()->gdbarch;
+
+  /* Prepare two targets with one thread each, with the same ptid.  */
+  scoped_mock_context<test_target_ops> target1 (arch);
+  scoped_mock_context<test_target_ops> target2 (arch);
+  target2.mock_inferior.next = &target1.mock_inferior;
+
+  ptid_t old_ptid (111, 222);
+  ptid_t new_ptid (111, 333);
+
+  target1.mock_inferior.pid = old_ptid.pid ();
+  target1.mock_thread.ptid = old_ptid;
+  target2.mock_inferior.pid = old_ptid.pid ();
+  target2.mock_thread.ptid = old_ptid;
+
+  gdb_assert (regcaches.empty ());
+
+  /* Populate the regcaches container.  */
+  get_thread_arch_aspace_regcache (&target1.mock_target, old_ptid, arch,
+				   nullptr);
+  get_thread_arch_aspace_regcache (&target2.mock_target, old_ptid, arch,
+				   nullptr);
+
+  gdb_assert (regcaches.size () == 2);
+  gdb_assert (regcache_count (&target1.mock_target, old_ptid) == 1);
+  gdb_assert (regcache_count (&target1.mock_target, new_ptid) == 0);
+  gdb_assert (regcache_count (&target2.mock_target, old_ptid) == 1);
+  gdb_assert (regcache_count (&target2.mock_target, new_ptid) == 0);
+
+  thread_change_ptid (&target1.mock_target, old_ptid, new_ptid);
+
+  gdb_assert (regcaches.size () == 2);
+  gdb_assert (regcache_count (&target1.mock_target, old_ptid) == 0);
+  gdb_assert (regcache_count (&target1.mock_target, new_ptid) == 1);
+  gdb_assert (regcache_count (&target2.mock_target, old_ptid) == 1);
+  gdb_assert (regcache_count (&target2.mock_target, new_ptid) == 0);
+
+  /* Leave the regcache list empty.  */
+  registers_changed ();
+  gdb_assert (regcaches.empty ());
+}
+
 } // namespace selftests
 #endif /* GDB_SELF_TEST */
 
+void _initialize_regcache ();
 void
-_initialize_regcache (void)
+_initialize_regcache ()
 {
   regcache_descr_handle
     = gdbarch_data_register_post_init (init_regcache_descr);
 
   gdb::observers::target_changed.attach (regcache_observer_target_changed);
-  gdb::observers::thread_ptid_changed.attach
-    (regcache::regcache_thread_ptid_changed);
+  gdb::observers::thread_ptid_changed.attach (regcache_thread_ptid_changed);
 
   add_com ("flushregs", class_maintenance, reg_flush_command,
 	   _("Force gdb to flush its register cache (maintainer command)."));
 
 #if GDB_SELF_TEST
-  selftests::register_test ("current_regcache", selftests::current_regcache_test);
+  selftests::register_test ("get_thread_arch_aspace_regcache",
+  			    selftests::get_thread_arch_aspace_regcache_test);
+  selftests::register_test ("registers_changed_ptid_all",
+			    selftests::registers_changed_ptid_all_test);
+  selftests::register_test ("registers_changed_ptid_target",
+  			    selftests::registers_changed_ptid_target_test);
+  selftests::register_test ("registers_changed_ptid_target_pid",
+  			    selftests::registers_changed_ptid_target_pid_test);
+  selftests::register_test ("registers_changed_ptid_target_ptid",
+			    selftests::registers_changed_ptid_target_ptid_test);
 
   selftests::register_test_foreach_arch ("regcache::cooked_read_test",
 					 selftests::cooked_read_test);
   selftests::register_test_foreach_arch ("regcache::cooked_write_test",
 					 selftests::cooked_write_test);
+  selftests::register_test ("regcache_thread_ptid_changed",
+			    selftests::regcache_thread_ptid_changed);
 #endif
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regcache-dump.c ./gdb/regcache-dump.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regcache-dump.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regcache-dump.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1986-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -305,8 +305,9 @@ maintenance_print_remote_registers (cons
   regcache_print (args, regcache_dump_remote);
 }
 
+void _initialize_regcache_dump ();
 void
-_initialize_regcache_dump (void)
+_initialize_regcache_dump ()
 {
   add_cmd ("registers", class_maintenance, maintenance_print_registers,
 	   _("Print the internal register configuration.\n"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regcache.h ./gdb/regcache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regcache.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regcache.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Cache and manage the values of registers for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,24 +22,26 @@
 
 #include "gdbsupport/common-regcache.h"
 #include "gdbsupport/function-view.h"
-#include <forward_list>
 
 struct regcache;
 struct regset;
 struct gdbarch;
 struct address_space;
 class thread_info;
+struct process_stratum_target;
 
 extern struct regcache *get_current_regcache (void);
-extern struct regcache *get_thread_regcache (ptid_t ptid);
+extern struct regcache *get_thread_regcache (process_stratum_target *target,
+					     ptid_t ptid);
 
 /* Get the regcache of THREAD.  */
 extern struct regcache *get_thread_regcache (thread_info *thread);
 
-extern struct regcache *get_thread_arch_regcache (ptid_t, struct gdbarch *);
-extern struct regcache *get_thread_arch_aspace_regcache (ptid_t,
-							 struct gdbarch *,
-							 struct address_space *);
+extern struct regcache *get_thread_arch_regcache
+  (process_stratum_target *targ, ptid_t, struct gdbarch *);
+extern struct regcache *get_thread_arch_aspace_regcache
+  (process_stratum_target *target, ptid_t,
+   struct gdbarch *, struct address_space *);
 
 extern enum register_status
   regcache_raw_read_signed (struct regcache *regcache,
@@ -385,15 +387,18 @@ public:
     this->m_ptid = ptid;
   }
 
+  process_stratum_target *target () const
+  {
+    return m_target;
+  }
+
 /* Dump the contents of a register from the register cache to the target
    debug.  */
   void debug_print_register (const char *func, int regno);
 
-  static void regcache_thread_ptid_changed (ptid_t old_ptid, ptid_t new_ptid);
 protected:
-  regcache (gdbarch *gdbarch, const address_space *aspace_);
-
-  static std::forward_list<regcache *> current_regcache;
+  regcache (process_stratum_target *target, gdbarch *gdbarch,
+	    const address_space *aspace);
 
 private:
 
@@ -421,16 +426,17 @@ private:
 
   /* If this is a read-write cache, which thread's registers is
      it connected to?  */
+  process_stratum_target *m_target;
   ptid_t m_ptid;
 
   friend struct regcache *
-  get_thread_arch_aspace_regcache (ptid_t ptid, struct gdbarch *gdbarch,
+  get_thread_arch_aspace_regcache (process_stratum_target *target, ptid_t ptid,
+				   struct gdbarch *gdbarch,
 				   struct address_space *aspace);
-
-  friend void
-  registers_changed_ptid (ptid_t ptid);
 };
 
+using regcache_up = std::unique_ptr<regcache>;
+
 class readonly_detached_regcache : public readable_regcache
 {
 public:
@@ -451,7 +457,8 @@ public:
 };
 
 extern void registers_changed (void);
-extern void registers_changed_ptid (ptid_t);
+extern void registers_changed_ptid (process_stratum_target *target,
+				    ptid_t ptid);
 
 /* Indicate that registers of THREAD may have changed, so invalidate
    the cache.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/arm/arm-with-iwmmxt.dat ./gdb/regformats/arm/arm-with-iwmmxt.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/arm/arm-with-iwmmxt.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/arm/arm-with-iwmmxt.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,53 +0,0 @@
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: arm/arm-with-iwmmxt.xml
-name:arm_with_iwmmxt
-xmltarget:arm-with-iwmmxt.xml
-expedite:r11,sp,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:sp
-32:lr
-32:pc
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-32:cpsr
-64:wR0
-64:wR1
-64:wR2
-64:wR3
-64:wR4
-64:wR5
-64:wR6
-64:wR7
-64:wR8
-64:wR9
-64:wR10
-64:wR11
-64:wR12
-64:wR13
-64:wR14
-64:wR15
-32:wCSSF
-32:wCASF
-32:wCGR0
-32:wCGR1
-32:wCGR2
-32:wCGR3
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/arm/arm-with-neon.dat ./gdb/regformats/arm/arm-with-neon.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/arm/arm-with-neon.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/arm/arm-with-neon.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,64 +0,0 @@
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: arm/arm-with-neon.xml
-name:arm_with_neon
-xmltarget:arm-with-neon.xml
-expedite:r11,sp,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:sp
-32:lr
-32:pc
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-32:cpsr
-64:d0
-64:d1
-64:d2
-64:d3
-64:d4
-64:d5
-64:d6
-64:d7
-64:d8
-64:d9
-64:d10
-64:d11
-64:d12
-64:d13
-64:d14
-64:d15
-64:d16
-64:d17
-64:d18
-64:d19
-64:d20
-64:d21
-64:d22
-64:d23
-64:d24
-64:d25
-64:d26
-64:d27
-64:d28
-64:d29
-64:d30
-64:d31
-32:fpscr
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/arm/arm-with-vfpv2.dat ./gdb/regformats/arm/arm-with-vfpv2.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/arm/arm-with-vfpv2.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/arm/arm-with-vfpv2.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,48 +0,0 @@
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: arm/arm-with-vfpv2.xml
-name:arm_with_vfpv2
-xmltarget:arm-with-vfpv2.xml
-expedite:r11,sp,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:sp
-32:lr
-32:pc
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-32:cpsr
-64:d0
-64:d1
-64:d2
-64:d3
-64:d4
-64:d5
-64:d6
-64:d7
-64:d8
-64:d9
-64:d10
-64:d11
-64:d12
-64:d13
-64:d14
-64:d15
-32:fpscr
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/arm/arm-with-vfpv3.dat ./gdb/regformats/arm/arm-with-vfpv3.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/arm/arm-with-vfpv3.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/arm/arm-with-vfpv3.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,64 +0,0 @@
-# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: arm/arm-with-vfpv3.xml
-name:arm_with_vfpv3
-xmltarget:arm-with-vfpv3.xml
-expedite:r11,sp,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:sp
-32:lr
-32:pc
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-0:
-32:cpsr
-64:d0
-64:d1
-64:d2
-64:d3
-64:d4
-64:d5
-64:d6
-64:d7
-64:d8
-64:d9
-64:d10
-64:d11
-64:d12
-64:d13
-64:d14
-64:d15
-64:d16
-64:d17
-64:d18
-64:d19
-64:d20
-64:d21
-64:d22
-64:d23
-64:d24
-64:d25
-64:d26
-64:d27
-64:d28
-64:d29
-64:d30
-64:d31
-32:fpscr
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-arm.dat ./gdb/regformats/reg-arm.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-arm.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/reg-arm.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,29 +0,0 @@
-name:arm
-xmlarch:arm
-expedite:r11,sp,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:sp
-32:lr
-32:pc
-96:f0
-96:f1
-96:f2
-96:f3
-96:f4
-96:f5
-96:f6
-96:f7
-32:fps
-32:cpsr
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-bfin.dat ./gdb/regformats/reg-bfin.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-bfin.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/reg-bfin.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,56 +0,0 @@
-name:bfin
-expedite:pc,sp,fp
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:p0
-32:p1
-32:p2
-32:p3
-32:p4
-32:p5
-32:sp
-32:fp
-32:i0
-32:i1
-32:i2
-32:i3
-32:m0
-32:m1
-32:m2
-32:m3
-32:b0
-32:b1
-32:b2
-32:b3
-32:l0
-32:l1
-32:l2
-32:l3
-32:a0x
-32:a0w
-32:a1x
-32:a1w
-32:astat
-32:rets
-32:lc0
-32:lt0
-32:lb0
-32:lc1
-32:lt1
-32:lb1
-32:cycles
-32:cycles2
-32:usp
-32:seqstat
-32:syscfg
-32:reti
-32:retx
-32:retn
-32:rete
-32:pc
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-cris.dat ./gdb/regformats/reg-cris.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-cris.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/reg-cris.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,35 +0,0 @@
-name:cris
-expedite:r8,sp,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:sp
-32:pc
-
-8:p0
-8:vr
-0:p2
-0:p3
-16:p4
-16:ccr
-0:p6
-32:mof
-32:p8
-32:ibr
-32:irp
-32:srp
-32:bar
-32:dccr
-32:brp
-32:usp
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-crisv32.dat ./gdb/regformats/reg-crisv32.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-crisv32.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/reg-crisv32.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,54 +0,0 @@
-name:crisv32
-expedite:r8,sp,pc
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:r13
-32:sp
-32:acr
-
-8:bz
-8:vr
-32:pid
-8:srs
-16:wz
-32:exs
-32:eda
-32:mof
-32:dz
-32:ebp
-32:erp
-32:srp
-32:nrp
-32:ccs
-32:usp
-32:spc
-
-32:pc
-
-32:s0
-32:s1
-32:s2
-32:s3
-32:s4
-32:s5
-32:s6
-32:s7
-32:s8
-32:s9
-32:s10
-32:s11
-32:s12
-32:s13
-32:s14
-32:s15
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/regdat.sh ./gdb/regformats/regdat.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/regdat.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/regdat.sh	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 #!/bin/sh -u
 
 # Register protocol definitions for GDB, the GNU debugger.
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
@@ -127,6 +127,10 @@ do
 
     echo "const struct target_desc *tdesc_${name};"
     echo ""
+
+    # This is necessary for -Wmissing-declarations.
+    echo "void init_registers_${name} (void);"
+
     echo "void"
     echo "init_registers_${name} (void)"
     echo "{"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/regdef.h ./gdb/regformats/regdef.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/regdef.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/regdef.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Register protocol definition structures for the GNU Debugger
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -19,6 +19,8 @@
 #ifndef REGFORMATS_REGDEF_H
 #define REGFORMATS_REGDEF_H
 
+namespace gdb {
+
 struct reg
 {
   reg (int _offset)
@@ -60,4 +62,6 @@ struct reg
   }
 };
 
+} /* namespace gdb */
+
 #endif /* REGFORMATS_REGDEF_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-m32r.dat ./gdb/regformats/reg-m32r.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-m32r.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/reg-m32r.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,27 +0,0 @@
-name:m32r
-expedite:pc,lr,sp
-32:r0
-32:r1
-32:r2
-32:r3
-32:r4
-32:r5
-32:r6
-32:r7
-32:r8
-32:r9
-32:r10
-32:r11
-32:r12
-32:fp
-32:lr
-32:sp
-32:psw
-32:cbr
-32:spi
-32:spu
-32:bpc
-32:pc
-32:accl
-32:acch
-32:evb
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-tilegx32.dat ./gdb/regformats/reg-tilegx32.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-tilegx32.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/reg-tilegx32.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,67 +0,0 @@
-name:tilegx32
-expedite:sp,lr,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:r32
-64:r33
-64:r34
-64:r35
-64:r36
-64:r37
-64:r38
-64:r39
-64:r40
-64:r41
-64:r42
-64:r43
-64:r44
-64:r45
-64:r46
-64:r47
-64:r48
-64:r49
-64:r50
-64:r51
-64:r52
-64:tp
-64:sp
-64:lr
-64:sn
-64:io0
-64:io1
-64:us0
-64:us1
-64:us2
-64:us3
-64:zero
-32:pc
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-tilegx.dat ./gdb/regformats/reg-tilegx.dat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regformats/reg-tilegx.dat	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regformats/reg-tilegx.dat	1970-01-01 00:00:00.000000000 +0000
@@ -1,67 +0,0 @@
-name:tilegx
-expedite:sp,lr,pc
-64:r0
-64:r1
-64:r2
-64:r3
-64:r4
-64:r5
-64:r6
-64:r7
-64:r8
-64:r9
-64:r10
-64:r11
-64:r12
-64:r13
-64:r14
-64:r15
-64:r16
-64:r17
-64:r18
-64:r19
-64:r20
-64:r21
-64:r22
-64:r23
-64:r24
-64:r25
-64:r26
-64:r27
-64:r28
-64:r29
-64:r30
-64:r31
-64:r32
-64:r33
-64:r34
-64:r35
-64:r36
-64:r37
-64:r38
-64:r39
-64:r40
-64:r41
-64:r42
-64:r43
-64:r44
-64:r45
-64:r46
-64:r47
-64:r48
-64:r49
-64:r50
-64:r51
-64:r52
-64:tp
-64:sp
-64:lr
-64:sn
-64:io0
-64:io1
-64:us0
-64:us1
-64:us2
-64:us3
-64:zero
-64:pc
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/reggroups.c ./gdb/reggroups.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/reggroups.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/reggroups.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Register groupings for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 
@@ -202,8 +202,8 @@ default_register_reggroup_p (struct gdba
   if (group == all_reggroup)
     return 1;
   vector_p = TYPE_VECTOR (register_type (gdbarch, regnum));
-  float_p = (TYPE_CODE (register_type (gdbarch, regnum)) == TYPE_CODE_FLT
-	     || (TYPE_CODE (register_type (gdbarch, regnum))
+  float_p = (register_type (gdbarch, regnum)->code () == TYPE_CODE_FLT
+	     || (register_type (gdbarch, regnum)->code ()
 		 == TYPE_CODE_DECFLOAT));
   raw_p = regnum < gdbarch_num_regs (gdbarch);
   if (group == float_reggroup)
@@ -321,8 +321,9 @@ struct reggroup *const all_reggroup = &a
 struct reggroup *const save_reggroup = &save_group;
 struct reggroup *const restore_reggroup = &restore_group;
 
+void _initialize_reggroup ();
 void
-_initialize_reggroup (void)
+_initialize_reggroup ()
 {
   reggroups_data = gdbarch_data_register_pre_init (reggroups_init);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/reggroups.h ./gdb/reggroups.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/reggroups.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/reggroups.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Register groupings for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/registry.c ./gdb/registry.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/registry.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/registry.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support functions for general registry objects.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/registry.h ./gdb/registry.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/registry.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/registry.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Macros for general registry objects.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regset.h ./gdb/regset.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/regset.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/regset.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Manage register sets.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote.c ./gdb/remote.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/remote.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Remote target communications for serial-line targets in custom GDB protocol
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -49,7 +49,7 @@
 
 #include "gdbsupport/gdb_sys_time.h"
 
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "event-top.h"
 #include "inf-loop.h"
 
@@ -77,6 +77,7 @@
 #include "gdbsupport/byte-vector.h"
 #include <algorithm>
 #include <unordered_map>
+#include "async-event.h"
 
 /* The remote target.  */
 
@@ -278,6 +279,9 @@ public: /* data */
 
   /* The status of the stub support for the various vCont actions.  */
   vCont_action_support supports_vCont;
+  /* Whether vCont support was probed already.  This is a workaround
+     until packet_support is per-connection.  */
+  bool supports_vCont_probed;
 
   /* True if the user has pressed Ctrl-C, but the target hasn't
      responded to that.  */
@@ -403,6 +407,8 @@ public:
   const target_info &info () const override
   { return remote_target_info; }
 
+  const char *connection_string () override;
+
   thread_control_capabilities get_thread_control_capabilities () override
   { return tc_schedlock; }
 
@@ -537,6 +543,8 @@ public:
 
   void async (int) override;
 
+  int async_wait_fd () override;
+
   void thread_events (int) override;
 
   int can_do_single_step () override;
@@ -667,7 +675,7 @@ public:
 
   const struct btrace_config *btrace_conf (const struct btrace_target_info *) override;
   bool augmented_libraries_svr4_read () override;
-  int follow_fork (int, int) override;
+  bool follow_fork (bool, bool) override;
   void follow_exec (struct inferior *, const char *) override;
   int insert_fork_catchpoint (int) override;
   int remove_fork_catchpoint (int) override;
@@ -1026,7 +1034,7 @@ static void remote_console_output (const
 
 static void remote_btrace_reset (remote_state *rs);
 
-static void remote_unpush_and_throw (void);
+static void remote_unpush_and_throw (remote_target *target);
 
 /* For "remote".  */
 
@@ -1268,7 +1276,7 @@ static void
 show_remote_exec_file (struct ui_file *file, int from_tty,
 		       struct cmd_list_element *cmd, const char *value)
 {
-  fprintf_filtered (file, "%s\n", remote_exec_file_var);
+  fprintf_filtered (file, "%s\n", get_remote_exec_file ());
 }
 
 static int
@@ -1376,7 +1384,7 @@ remote_arch_state::remote_arch_state (st
 static remote_target *
 get_current_remote_target ()
 {
-  target_ops *proc_target = find_target_at (process_stratum);
+  target_ops *proc_target = current_inferior ()->process_target ();
   return dynamic_cast<remote_target *> (proc_target);
 }
 
@@ -1657,6 +1665,7 @@ show_memory_packet_size (struct memory_p
     }
 }
 
+/* FIXME: needs to be per-remote-target.  */
 static struct memory_packet_config memory_write_packet_config =
 {
   "memory-write-packet-size",
@@ -1730,6 +1739,7 @@ remote_target::get_memory_write_packet_s
   return get_memory_packet_size (&memory_write_packet_config);
 }
 
+/* FIXME: needs to be per-remote-target.  */
 static struct memory_packet_config memory_read_packet_config =
 {
   "memory-read-packet-size",
@@ -2086,6 +2096,9 @@ enum {
   PACKET_MAX
 };
 
+/* FIXME: needs to be per-remote-target.  Ignoring this for now,
+   assuming all remote targets are the same server (thus all support
+   the same packets).  */
 static struct packet_config remote_protocol_packets[PACKET_MAX];
 
 /* Returns the packet's corresponding "set remote foo-packet" command
@@ -2367,6 +2380,27 @@ remote_target::remote_add_inferior (bool
 	 between program/address spaces.  We simply bind the inferior
 	 to the program space's address space.  */
       inf = current_inferior ();
+
+      /* However, if the current inferior is already bound to a
+	 process, find some other empty inferior.  */
+      if (inf->pid != 0)
+	{
+	  inf = nullptr;
+	  for (inferior *it : all_inferiors ())
+	    if (it->pid == 0)
+	      {
+		inf = it;
+		break;
+	      }
+	}
+      if (inf == nullptr)
+	{
+	  /* Since all inferiors were already bound to a process, add
+	     a new inferior.  */
+	  inf = add_inferior_with_spaces ();
+	}
+      switch_to_inferior_no_thread (inf);
+      push_target (this);
       inferior_appeared (inf, pid);
     }
 
@@ -2378,11 +2412,15 @@ remote_target::remote_add_inferior (bool
   if (try_open_exec && get_exec_file (0) == NULL)
     exec_file_locate_attach (pid, 0, 1);
 
+  /* Check for exec file mismatch, and let the user solve it.  */
+  validate_exec_file (1);
+
   return inf;
 }
 
 static remote_thread_info *get_remote_thread_info (thread_info *thread);
-static remote_thread_info *get_remote_thread_info (ptid_t ptid);
+static remote_thread_info *get_remote_thread_info (remote_target *target,
+						   ptid_t ptid);
 
 /* Add thread PTID to GDB's thread list.  Tag it as executing/running
    according to RUNNING.  */
@@ -2400,13 +2438,13 @@ remote_target::remote_add_thread (ptid_t
      might be confusing to the user.  Be silent then, preserving the
      age old behavior.  */
   if (rs->starting_up)
-    thread = add_thread_silent (ptid);
+    thread = add_thread_silent (this, ptid);
   else
-    thread = add_thread (ptid);
+    thread = add_thread (this, ptid);
 
   get_remote_thread_info (thread)->vcont_resumed = executing;
-  set_executing (ptid, executing);
-  set_running (ptid, running);
+  set_executing (this, ptid, executing);
+  set_running (this, ptid, running);
 
   return thread;
 }
@@ -2429,7 +2467,7 @@ remote_target::remote_notice_new_inferio
   /* If this is a new thread, add it to GDB's thread list.
      If we leave it up to WFI to do this, bad things will happen.  */
 
-  thread_info *tp = find_thread_ptid (currthread);
+  thread_info *tp = find_thread_ptid (this, currthread);
   if (tp != NULL && tp->state == THREAD_EXITED)
     {
       /* We're seeing an event on a thread id we knew had exited.
@@ -2438,7 +2476,7 @@ remote_target::remote_notice_new_inferio
       return;
     }
 
-  if (!in_thread_list (currthread))
+  if (!in_thread_list (this, currthread))
     {
       struct inferior *inf = NULL;
       int pid = currthread.pid ();
@@ -2451,12 +2489,13 @@ remote_target::remote_notice_new_inferio
 	     stub doesn't support qC.  This is the first stop reported
 	     after an attach, so this is the main thread.  Update the
 	     ptid in the thread list.  */
-	  if (in_thread_list (ptid_t (pid)))
-	    thread_change_ptid (inferior_ptid, currthread);
+	  if (in_thread_list (this, ptid_t (pid)))
+	    thread_change_ptid (this, inferior_ptid, currthread);
 	  else
 	    {
-	      remote_add_thread (currthread, running, executing);
-	      inferior_ptid = currthread;
+	      thread_info *thr
+		= remote_add_thread (currthread, running, executing);
+	      switch_to_thread (thr);
 	    }
 	  return;
 	}
@@ -2468,7 +2507,7 @@ remote_target::remote_notice_new_inferio
 	     doesn't support qC.  This is the first stop reported
 	     after an attach, so this is the main thread.  Update the
 	     ptid in the thread list.  */
-	  thread_change_ptid (inferior_ptid, currthread);
+	  thread_change_ptid (this, inferior_ptid, currthread);
 	  return;
 	}
 
@@ -2476,7 +2515,7 @@ remote_target::remote_notice_new_inferio
 	 extended-remote which already was debugging an inferior, we
 	 may not know about it yet.  Add it before adding its child
 	 thread, so notifications are emitted in a sensible order.  */
-      if (find_inferior_pid (currthread.pid ()) == NULL)
+      if (find_inferior_pid (this, currthread.pid ()) == NULL)
 	{
 	  struct remote_state *rs = get_remote_state ();
 	  bool fake_pid_p = !remote_multi_process_p (rs);
@@ -2516,10 +2555,12 @@ get_remote_thread_info (thread_info *thr
   return static_cast<remote_thread_info *> (thread->priv.get ());
 }
 
+/* Return PTID's private thread data, creating it if necessary.  */
+
 static remote_thread_info *
-get_remote_thread_info (ptid_t ptid)
+get_remote_thread_info (remote_target *target, ptid_t ptid)
 {
-  thread_info *thr = find_thread_ptid (ptid);
+  thread_info *thr = find_thread_ptid (target, ptid);
   return get_remote_thread_info (thr);
 }
 
@@ -2575,8 +2616,7 @@ remote_target::pass_signals (gdb::array_
 	  putpkt (pass_packet);
 	  getpkt (&rs->buf, 0);
 	  packet_ok (rs->buf, &remote_protocol_packets[PACKET_QPassSignals]);
-	  if (rs->last_pass_packet)
-	    xfree (rs->last_pass_packet);
+	  xfree (rs->last_pass_packet);
 	  rs->last_pass_packet = pass_packet;
 	}
       else
@@ -3745,6 +3785,18 @@ remote_target::remote_get_threads_with_q
   return 0;
 }
 
+/* Return true if INF only has one non-exited thread.  */
+
+static bool
+has_single_non_exited_thread (inferior *inf)
+{
+  int count = 0;
+  for (thread_info *tp ATTRIBUTE_UNUSED : inf->non_exited_threads ())
+    if (++count > 1)
+      break;
+  return count == 1;
+}
+
 /* Implement the to_update_thread_list function for the remote
    targets.  */
 
@@ -3779,8 +3831,19 @@ remote_target::update_thread_list ()
 	 target.  */
       for (thread_info *tp : all_threads_safe ())
 	{
+	  if (tp->inf->process_target () != this)
+	    continue;
+
 	  if (!context.contains_thread (tp->ptid))
 	    {
+	      /* Do not remove the thread if it is the last thread in
+		 the inferior.  This situation happens when we have a
+		 pending exit process status to process.  Otherwise we
+		 may end up with a seemingly live inferior (i.e.  pid
+		 != 0) that has no threads.  */
+	      if (has_single_non_exited_thread (tp->inf))
+		continue;
+
 	      /* Not found.  */
 	      delete_thread (tp);
 	    }
@@ -3804,7 +3867,7 @@ remote_target::update_thread_list ()
 
 	      remote_notice_new_inferior (item.ptid, executing);
 
-	      thread_info *tp = find_thread_ptid (item.ptid);
+	      thread_info *tp = find_thread_ptid (this, item.ptid);
 	      remote_thread_info *info = get_remote_thread_info (tp);
 	      info->core = item.core;
 	      info->extra = std::move (item.extra);
@@ -4006,13 +4069,6 @@ remote_target::close ()
   /* Make sure we leave stdin registered in the event loop.  */
   terminal_ours ();
 
-  /* We don't have a connection to the remote stub anymore.  Get rid
-     of all the inferiors and their threads we were controlling.
-     Reset inferior_ptid to null_ptid first, as otherwise has_stack_frame
-     will be unable to find the thread corresponding to (pid, 0, 0).  */
-  inferior_ptid = null_ptid;
-  discard_all_inferiors ();
-
   trace_reset_local_state ();
 
   delete this;
@@ -4049,8 +4105,6 @@ remote_target::get_offsets ()
   char *ptr;
   int lose, num_segments = 0, do_sections, do_segments;
   CORE_ADDR text_addr, data_addr, bss_addr, segments[2];
-  struct section_offsets *offs;
-  struct symfile_segment_data *data;
 
   if (symfile_objfile == NULL)
     return;
@@ -4128,12 +4182,10 @@ remote_target::get_offsets ()
   else if (*ptr != '\0')
     warning (_("Target reported unsupported offsets: %s"), buf);
 
-  offs = ((struct section_offsets *)
-	  alloca (SIZEOF_N_SECTION_OFFSETS (symfile_objfile->num_sections)));
-  memcpy (offs, symfile_objfile->section_offsets,
-	  SIZEOF_N_SECTION_OFFSETS (symfile_objfile->num_sections));
+  section_offsets offs = symfile_objfile->section_offsets;
 
-  data = get_symfile_segment_data (symfile_objfile->obfd);
+  symfile_segment_data_up data
+    = get_symfile_segment_data (symfile_objfile->obfd);
   do_segments = (data != NULL);
   do_sections = num_segments == 0;
 
@@ -4146,10 +4198,10 @@ remote_target::get_offsets ()
      by assuming that the .text and .data offsets apply to the whole
      text and data segments.  Convert the offsets given in the packet
      to base addresses for symfile_map_offsets_to_segments.  */
-  else if (data && data->num_segments == 2)
+  else if (data != nullptr && data->segments.size () == 2)
     {
-      segments[0] = data->segment_bases[0] + text_addr;
-      segments[1] = data->segment_bases[1] + data_addr;
+      segments[0] = data->segments[0].base + text_addr;
+      segments[1] = data->segments[1].base + data_addr;
       num_segments = 2;
     }
   /* If the object file has only one segment, assume that it is text
@@ -4157,9 +4209,9 @@ remote_target::get_offsets ()
      but programs with no code are useless.  Of course the code might
      have ended up in the data segment... to detect that we would need
      the permissions here.  */
-  else if (data && data->num_segments == 1)
+  else if (data && data->segments.size () == 1)
     {
-      segments[0] = data->segment_bases[0] + text_addr;
+      segments[0] = data->segments[0].base + text_addr;
       num_segments = 1;
     }
   /* There's no way to relocate by segment.  */
@@ -4168,8 +4220,9 @@ remote_target::get_offsets ()
 
   if (do_segments)
     {
-      int ret = symfile_map_offsets_to_segments (symfile_objfile->obfd, data,
-						 offs, num_segments, segments);
+      int ret = symfile_map_offsets_to_segments (symfile_objfile->obfd,
+						 data.get (), offs,
+						 num_segments, segments);
 
       if (ret == 0 && !do_sections)
 	error (_("Can not handle qOffsets TextSeg "
@@ -4179,20 +4232,17 @@ remote_target::get_offsets ()
 	do_sections = 0;
     }
 
-  if (data)
-    free_symfile_segment_data (data);
-
   if (do_sections)
     {
-      offs->offsets[SECT_OFF_TEXT (symfile_objfile)] = text_addr;
+      offs[SECT_OFF_TEXT (symfile_objfile)] = text_addr;
 
       /* This is a temporary kludge to force data and bss to use the
 	 same offsets because that's what nlmconv does now.  The real
 	 solution requires changes to the stub and remote.c that I
 	 don't have time to do right now.  */
 
-      offs->offsets[SECT_OFF_DATA (symfile_objfile)] = data_addr;
-      offs->offsets[SECT_OFF_BSS (symfile_objfile)] = data_addr;
+      offs[SECT_OFF_DATA (symfile_objfile)] = data_addr;
+      offs[SECT_OFF_BSS (symfile_objfile)] = data_addr;
     }
 
   objfile_relocate (symfile_objfile, offs);
@@ -4297,9 +4347,10 @@ remote_target::add_current_inferior_and_
   struct remote_state *rs = get_remote_state ();
   bool fake_pid_p = false;
 
-  inferior_ptid = null_ptid;
+  switch_to_no_thread ();
 
-  /* Now, if we have thread information, update inferior_ptid.  */
+  /* Now, if we have thread information, update the current thread's
+     ptid.  */
   ptid_t curr_ptid = get_current_thread (wait_status);
 
   if (curr_ptid != null_ptid)
@@ -4322,7 +4373,7 @@ remote_target::add_current_inferior_and_
   /* Add the main thread and switch to it.  Don't try reading
      registers yet, since we haven't fetched the target description
      yet.  */
-  thread_info *tp = add_thread_silent (curr_ptid);
+  thread_info *tp = add_thread_silent (this, curr_ptid);
   switch_to_thread_no_regs (tp);
 }
 
@@ -4398,7 +4449,7 @@ remote_target::process_initial_stop_repl
       if (ignore_event)
 	continue;
 
-      struct thread_info *evthread = find_thread_ptid (event_ptid);
+      thread_info *evthread = find_thread_ptid (this, event_ptid);
 
       if (ws.kind == TARGET_WAITKIND_STOPPED)
 	{
@@ -4418,14 +4469,14 @@ remote_target::process_initial_stop_repl
 	  || ws.value.sig != GDB_SIGNAL_0)
 	evthread->suspend.waitstatus_pending_p = 1;
 
-      set_executing (event_ptid, 0);
-      set_running (event_ptid, 0);
+      set_executing (this, event_ptid, false);
+      set_running (this, event_ptid, false);
       get_remote_thread_info (evthread)->vcont_resumed = 0;
     }
 
   /* "Notice" the new inferiors before anything related to
      registers/memory.  */
-  for (inferior *inf : all_non_exited_inferiors ())
+  for (inferior *inf : all_non_exited_inferiors (this))
     {
       inf->needs_setup = 1;
 
@@ -4446,7 +4497,7 @@ remote_target::process_initial_stop_repl
 
       /* If all threads of an inferior were already stopped, we
 	 haven't setup the inferior yet.  */
-      for (inferior *inf : all_non_exited_inferiors ())
+      for (inferior *inf : all_non_exited_inferiors (this))
 	{
 	  if (inf->needs_setup)
 	    {
@@ -4460,7 +4511,7 @@ remote_target::process_initial_stop_repl
   /* Now go over all threads that are stopped, and print their current
      frame.  If all-stop, then if there's a signalled thread, pick
      that as current.  */
-  for (thread_info *thread : all_non_exited_threads ())
+  for (thread_info *thread : all_non_exited_threads (this))
     {
       if (first == NULL)
 	first = thread;
@@ -4499,7 +4550,7 @@ remote_target::process_initial_stop_repl
   /* For "info program".  */
   thread_info *thread = inferior_thread ();
   if (thread->state == THREAD_STOPPED)
-    set_last_target_status (inferior_ptid, thread->suspend.waitstatus);
+    set_last_target_status (this, inferior_ptid, thread->suspend.waitstatus);
 }
 
 /* Start the remote connection and sync state.  */
@@ -4672,7 +4723,7 @@ remote_target::start_remote (int from_tt
       /* Let the stub know that we want it to return the thread.  */
       set_continue_thread (minus_one_ptid);
 
-      if (thread_count () == 0)
+      if (thread_count (this) == 0)
 	{
 	  /* Target has no concept of threads at all.  GDB treats
 	     non-threaded target as single-threaded; add a main
@@ -4685,8 +4736,8 @@ remote_target::start_remote (int from_tt
 	     says should be current.  If we're reconnecting to a
 	     multi-threaded program, this will ideally be the thread
 	     that last reported an event before GDB disconnected.  */
-	  inferior_ptid = get_current_thread (wait_status);
-	  if (inferior_ptid == null_ptid)
+	  ptid_t curr_thread = get_current_thread (wait_status);
+	  if (curr_thread == null_ptid)
 	    {
 	      /* Odd... The target was able to list threads, but not
 		 tell us which thread was current (no "thread"
@@ -4698,8 +4749,15 @@ remote_target::start_remote (int from_tt
 		                    "warning: couldn't determine remote "
 				    "current thread; picking first in list.\n");
 
-	      inferior_ptid = inferior_list->thread_list->ptid;
+	      for (thread_info *tp : all_non_exited_threads (this,
+							     minus_one_ptid))
+		{
+		  switch_to_thread (tp);
+		  break;
+		}
 	    }
+	  else
+	    switch_to_thread (find_thread_ptid (this, curr_thread));
 	}
 
       /* init_wait_for_inferior should be called before get_offsets in order
@@ -4758,7 +4816,7 @@ remote_target::start_remote (int from_tt
 	  remote_notif_get_pending_events (notif);
 	}
 
-      if (thread_count () == 0)
+      if (thread_count (this) == 0)
 	{
 	  if (!extended_p)
 	    error (_("The target is not running (try extended-remote?)"));
@@ -4820,6 +4878,17 @@ remote_target::start_remote (int from_tt
     insert_breakpoints ();
 }
 
+const char *
+remote_target::connection_string ()
+{
+  remote_state *rs = get_remote_state ();
+
+  if (rs->remote_desc->name != NULL)
+    return rs->remote_desc->name;
+  else
+    return NULL;
+}
+
 /* Open a connection to a remote debugger.
    NAME is the filename used for communication.  */
 
@@ -5412,7 +5481,7 @@ remote_target::remote_serial_quit_handle
 	{
 	  if (query (_("The target is not responding to GDB commands.\n"
 		       "Stop debugging it? ")))
-	    remote_unpush_and_throw ();
+	    remote_unpush_and_throw (this);
 	}
       /* If ^C has already been sent once, offer to disconnect.  */
       else if (!target_terminal::is_ours () && rs->ctrlc_pending_p)
@@ -5436,19 +5505,29 @@ remote_serial_quit_handler ()
   curr_quit_handler_target->remote_serial_quit_handler ();
 }
 
-/* Remove any of the remote.c targets from target stack.  Upper targets depend
-   on it so remove them first.  */
+/* Remove the remote target from the target stack of each inferior
+   that is using it.  Upper targets depend on it so remove them
+   first.  */
 
 static void
-remote_unpush_target (void)
+remote_unpush_target (remote_target *target)
 {
-  pop_all_targets_at_and_above (process_stratum);
+  /* We have to unpush the target from all inferiors, even those that
+     aren't running.  */
+  scoped_restore_current_inferior restore_current_inferior;
+
+  for (inferior *inf : all_inferiors (target))
+    {
+      switch_to_inferior_no_thread (inf);
+      pop_all_targets_at_and_above (process_stratum);
+      generic_mourn_inferior ();
+    }
 }
 
 static void
-remote_unpush_and_throw (void)
+remote_unpush_and_throw (remote_target *target)
 {
-  remote_unpush_target ();
+  remote_unpush_target (target);
   throw_error (TARGET_CLOSE_ERROR, _("Disconnected from target."));
 }
 
@@ -5465,7 +5544,7 @@ remote_target::open_1 (const char *name,
   /* If we're connected to a running target, target_preopen will kill it.
      Ask this question first, before target_preopen has a chance to kill
      anything.  */
-  if (curr_remote != NULL && !have_inferiors ())
+  if (curr_remote != NULL && !target_has_execution)
     {
       if (from_tty
 	  && !query (_("Already connected to a remote target.  Disconnect? ")))
@@ -5526,8 +5605,7 @@ remote_target::open_1 (const char *name,
 
   /* Register extra event sources in the event loop.  */
   rs->remote_async_inferior_event_token
-    = create_async_event_handler (remote_async_inferior_event_handler,
-				  remote);
+    = create_async_event_handler (remote_async_inferior_event_handler, remote);
   rs->notif_state = remote_notif_state_allocate (remote);
 
   /* Reset the target state; these things will be queried either by
@@ -5594,7 +5672,7 @@ remote_target::open_1 (const char *name,
 	/* Pop the partially set up target - unless something else did
 	   already before throwing the exception.  */
 	if (ex.error != TARGET_CLOSE_ERROR)
-	  remote_unpush_target ();
+	  remote_unpush_target (remote);
 	throw;
       }
   }
@@ -5658,10 +5736,10 @@ remote_target::remote_detach_1 (inferior
   remote_detach_pid (pid);
 
   /* Exit only if this is the only active inferior.  */
-  if (from_tty && !rs->extended && number_of_live_inferiors () == 1)
+  if (from_tty && !rs->extended && number_of_live_inferiors (this) == 1)
     puts_filtered (_("Ending remote debugging.\n"));
 
-  struct thread_info *tp = find_thread_ptid (inferior_ptid);
+  thread_info *tp = find_thread_ptid (this, inferior_ptid);
 
   /* Check to see if we are detaching a fork parent.  Note that if we
      are detaching a fork child, tp == NULL.  */
@@ -5683,7 +5761,7 @@ remote_target::remote_detach_1 (inferior
     }
   else
     {
-      inferior_ptid = null_ptid;
+      switch_to_no_thread ();
       detach_inferior (current_inferior ());
     }
 }
@@ -5707,8 +5785,8 @@ extended_remote_target::detach (inferior
    it is named remote_follow_fork in anticipation of using it for the
    remote target as well.  */
 
-int
-remote_target::follow_fork (int follow_child, int detach_fork)
+bool
+remote_target::follow_fork (bool follow_child, bool detach_fork)
 {
   struct remote_state *rs = get_remote_state ();
   enum target_waitkind kind = inferior_thread ()->pending_follow.kind;
@@ -5734,7 +5812,8 @@ remote_target::follow_fork (int follow_c
 	  remote_detach_pid (child_pid);
 	}
     }
-  return 0;
+
+  return false;
 }
 
 /* Target follow-exec function for remote targets.  Save EXECD_PATHNAME
@@ -5763,10 +5842,10 @@ remote_target::disconnect (const char *a
     error (_("Argument given to \"disconnect\" when remotely debugging."));
 
   /* Make sure we unpush even the extended remote targets.  Calling
-     target_mourn_inferior won't unpush, and remote_mourn won't
-     unpush if there is more than one inferior left.  */
-  unpush_target (this);
-  generic_mourn_inferior ();
+     target_mourn_inferior won't unpush, and
+     remote_target::mourn_inferior won't unpush if there is more than
+     one inferior left.  */
+  remote_unpush_target (this);
 
   if (from_tty)
     puts_filtered ("Ending remote debugging.\n");
@@ -5792,7 +5871,7 @@ extended_remote_target::attach (const ch
 
   if (from_tty)
     {
-      char *exec_file = get_exec_file (0);
+      const char *exec_file = get_exec_file (0);
 
       if (exec_file)
 	printf_unfiltered (_("Attaching to program: %s, %s\n"), exec_file,
@@ -5828,36 +5907,36 @@ extended_remote_target::attach (const ch
 	     target_pid_to_str (ptid_t (pid)).c_str ());
     }
 
-  set_current_inferior (remote_add_inferior (false, pid, 1, 0));
+  switch_to_inferior_no_thread (remote_add_inferior (false, pid, 1, 0));
 
   inferior_ptid = ptid_t (pid);
 
   if (target_is_non_stop_p ())
     {
-      struct thread_info *thread;
-
       /* Get list of threads.  */
       update_thread_list ();
 
-      thread = first_thread_of_inferior (current_inferior ());
-      if (thread)
-	inferior_ptid = thread->ptid;
-      else
-	inferior_ptid = ptid_t (pid);
+      thread_info *thread = first_thread_of_inferior (current_inferior ());
+      if (thread != nullptr)
+	switch_to_thread (thread);
 
       /* Invalidate our notion of the remote current thread.  */
       record_currthread (rs, minus_one_ptid);
     }
   else
     {
-      /* Now, if we have thread information, update inferior_ptid.  */
-      inferior_ptid = remote_current_thread (inferior_ptid);
+      /* Now, if we have thread information, update the main thread's
+	 ptid.  */
+      ptid_t curr_ptid = remote_current_thread (ptid_t (pid));
 
       /* Add the main thread to the thread list.  */
-      thread_info *thr = add_thread_silent (inferior_ptid);
+      thread_info *thr = add_thread_silent (this, curr_ptid);
+
+      switch_to_thread (thr);
+
       /* Don't consider the thread stopped until we've processed the
 	 saved stop reply.  */
-      set_executing (thr->ptid, true);
+      set_executing (this, thr->ptid, true);
     }
 
   /* Next, if the target can specify a description, read it.  We do
@@ -5959,6 +6038,7 @@ remote_target::remote_vcont_probe ()
     }
 
   packet_ok (rs->buf, &remote_protocol_packets[PACKET_vCont]);
+  rs->supports_vCont_probed = true;
 }
 
 /* Helper function for building "vCont" resumptions.  Write a
@@ -5996,10 +6076,10 @@ remote_target::append_resumption (char *
 	{
 	  /* If we don't know about the target thread's tid, then
 	     we're resuming magic_null_ptid (see caller).  */
-	  tp = find_thread_ptid (magic_null_ptid);
+	  tp = find_thread_ptid (this, magic_null_ptid);
 	}
       else
-	tp = find_thread_ptid (ptid);
+	tp = find_thread_ptid (this, ptid);
       gdb_assert (tp != NULL);
 
       if (tp->control.may_range_step)
@@ -6062,7 +6142,7 @@ char *
 remote_target::append_pending_thread_resumptions (char *p, char *endp,
 						  ptid_t ptid)
 {
-  for (thread_info *thread : all_non_exited_threads (ptid))
+  for (thread_info *thread : all_non_exited_threads (this, ptid))
     if (inferior_ptid != thread->ptid
 	&& thread->suspend.stop_signal != GDB_SIGNAL_0)
       {
@@ -6095,7 +6175,7 @@ remote_target::remote_resume_with_hc (pt
   else
     set_continue_thread (ptid);
 
-  for (thread_info *thread : all_non_exited_threads ())
+  for (thread_info *thread : all_non_exited_threads (this))
     resume_clear_thread_private_info (thread);
 
   buf = rs->buf.data ();
@@ -6232,9 +6312,9 @@ remote_target::resume (ptid_t ptid, int
       remote_thread_info *remote_thr;
 
       if (minus_one_ptid == ptid || ptid.is_pid ())
-	remote_thr = get_remote_thread_info (inferior_ptid);
+	remote_thr = get_remote_thread_info (this, inferior_ptid);
       else
-	remote_thr = get_remote_thread_info (ptid);
+	remote_thr = get_remote_thread_info (this, ptid);
 
       remote_thr->last_resume_step = step;
       remote_thr->last_resume_sig = siggnal;
@@ -6466,7 +6546,7 @@ remote_target::commit_resume ()
   may_global_wildcard_vcont = 1;
 
   /* And assume every process is individually wildcard-able too.  */
-  for (inferior *inf : all_non_exited_inferiors ())
+  for (inferior *inf : all_non_exited_inferiors (this))
     {
       remote_inferior *priv = get_remote_inferior (inf);
 
@@ -6477,7 +6557,7 @@ remote_target::commit_resume ()
      disable process and global wildcard resumes appropriately.  */
   check_pending_events_prevent_wildcard_vcont (&may_global_wildcard_vcont);
 
-  for (thread_info *tp : all_non_exited_threads ())
+  for (thread_info *tp : all_non_exited_threads (this))
     {
       /* If a thread of a process is not meant to be resumed, then we
 	 can't wildcard that process.  */
@@ -6506,7 +6586,7 @@ remote_target::commit_resume ()
   struct vcont_builder vcont_builder (this);
 
   /* Threads first.  */
-  for (thread_info *tp : all_non_exited_threads ())
+  for (thread_info *tp : all_non_exited_threads (this))
     {
       remote_thread_info *remote_thr = get_remote_thread_info (tp);
 
@@ -6535,7 +6615,7 @@ remote_target::commit_resume ()
      supposed to be resumed.  */
   any_process_wildcard = 0;
 
-  for (inferior *inf : all_non_exited_inferiors ())
+  for (inferior *inf : all_non_exited_inferiors (this))
     {
       if (get_remote_inferior (inf)->may_wildcard_vcont)
 	{
@@ -6556,7 +6636,7 @@ remote_target::commit_resume ()
 	}
       else
 	{
-	  for (inferior *inf : all_non_exited_inferiors ())
+	  for (inferior *inf : all_non_exited_inferiors (this))
 	    {
 	      if (get_remote_inferior (inf)->may_wildcard_vcont)
 		{
@@ -6583,7 +6663,10 @@ remote_target::remote_stop_ns (ptid_t pt
   char *p = rs->buf.data ();
   char *endp = p + get_remote_packet_size ();
 
-  if (packet_support (PACKET_vCont) == PACKET_SUPPORT_UNKNOWN)
+  /* FIXME: This supports_vCont_probed check is a workaround until
+     packet_support is per-connection.  */
+  if (packet_support (PACKET_vCont) == PACKET_SUPPORT_UNKNOWN
+      || !rs->supports_vCont_probed)
     remote_vcont_probe ();
 
   if (!rs->supports_vCont.t)
@@ -6740,7 +6823,7 @@ remote_target::interrupt_query ()
       if (query (_("The target is not responding to interrupt requests.\n"
 		   "Stop debugging it? ")))
 	{
-	  remote_unpush_target ();
+	  remote_unpush_target (this);
 	  throw_error (TARGET_CLOSE_ERROR, _("Disconnected from target."));
 	}
     }
@@ -6782,9 +6865,9 @@ remote_console_output (const char *msg)
 
       tb[0] = c;
       tb[1] = 0;
-      ui_file_puts (gdb_stdtarg, tb);
+      gdb_stdtarg->puts (tb);
     }
-  ui_file_flush (gdb_stdtarg);
+  gdb_stdtarg->flush ();
 }
 
 struct stop_reply : public notif_event
@@ -6947,7 +7030,7 @@ remote_target::remove_new_fork_children
 
   /* For any threads stopped at a fork event, remove the corresponding
      fork child threads from the CONTEXT list.  */
-  for (thread_info *thread : all_non_exited_threads ())
+  for (thread_info *thread : all_non_exited_threads (this))
     {
       struct target_waitstatus *ws = thread_pending_fork_status (thread);
 
@@ -6989,7 +7072,7 @@ remote_target::check_pending_events_prev
 	  || event->ws.kind == TARGET_WAITKIND_VFORKED)
 	*may_global_wildcard = 0;
 
-      struct inferior *inf = find_inferior_ptid (event->ptid);
+      struct inferior *inf = find_inferior_ptid (this, event->ptid);
 
       /* This may be the first time we heard about this process.
 	 Regardless, we must not do a global wildcard resume, otherwise
@@ -7339,25 +7422,22 @@ Packet: '%s'\n"),
 		     reported expedited registers.  */
 		  if (event->ptid == null_ptid)
 		    {
+		      /* If there is no thread-id information then leave
+			 the event->ptid as null_ptid.  Later in
+			 process_stop_reply we will pick a suitable
+			 thread.  */
 		      const char *thr = strstr (p1 + 1, ";thread:");
 		      if (thr != NULL)
 			event->ptid = read_ptid (thr + strlen (";thread:"),
 						 NULL);
-		      else
-			{
-			  /* Either the current thread hasn't changed,
-			     or the inferior is not multi-threaded.
-			     The event must be for the thread we last
-			     set as (or learned as being) current.  */
-			  event->ptid = event->rs->general_thread;
-			}
 		    }
 
 		  if (rsa == NULL)
 		    {
-		      inferior *inf = (event->ptid == null_ptid
-				       ? NULL
-				       : find_inferior_ptid (event->ptid));
+		      inferior *inf
+			= (event->ptid == null_ptid
+			   ? NULL
+			   : find_inferior_ptid (this, event->ptid));
 		      /* If this is the first time we learn anything
 			 about this process, skip the registers
 			 included in this packet, since we don't yet
@@ -7445,7 +7525,6 @@ Packet: '%s'\n"),
     case 'W':		/* Target exited.  */
     case 'X':
       {
-	int pid;
 	ULONGEST value;
 
 	/* GDB used to accept only 2 hex chars here.  Stubs should
@@ -7469,8 +7548,9 @@ Packet: '%s'\n"),
 	      event->ws.value.sig = GDB_SIGNAL_UNKNOWN;
 	  }
 
-	/* If no process is specified, assume inferior_ptid.  */
-	pid = inferior_ptid.pid ();
+	/* If no process is specified, return null_ptid, and let the
+	   caller figure out the right process to use.  */
+	int pid = 0;
 	if (*p == '\0')
 	  ;
 	else if (*p == ';')
@@ -7500,9 +7580,6 @@ Packet: '%s'\n"),
       event->ptid = minus_one_ptid;
       break;
     }
-
-  if (target_is_non_stop_p () && event->ptid == null_ptid)
-    error (_("No process or thread specified in stop reply: %s"), buf);
 }
 
 /* When the stub wants to tell GDB about a new notification reply, it
@@ -7604,10 +7681,61 @@ remote_target::process_stop_reply (struc
   *status = stop_reply->ws;
   ptid = stop_reply->ptid;
 
-  /* If no thread/process was reported by the stub, assume the current
-     inferior.  */
+  /* If no thread/process was reported by the stub then use the first
+     non-exited thread in the current target.  */
   if (ptid == null_ptid)
-    ptid = inferior_ptid;
+    {
+      /* Some stop events apply to all threads in an inferior, while others
+	 only apply to a single thread.  */
+      bool is_stop_for_all_threads
+	= (status->kind == TARGET_WAITKIND_EXITED
+	   || status->kind == TARGET_WAITKIND_SIGNALLED);
+
+      for (thread_info *thr : all_non_exited_threads (this))
+	{
+	  if (ptid != null_ptid
+	      && (!is_stop_for_all_threads
+		  || ptid.pid () != thr->ptid.pid ()))
+	    {
+	      static bool warned = false;
+
+	      if (!warned)
+		{
+		  /* If you are seeing this warning then the remote target
+		     has stopped without specifying a thread-id, but the
+		     target does have multiple threads (or inferiors), and
+		     so GDB is having to guess which thread stopped.
+
+		     Examples of what might cause this are the target
+		     sending and 'S' stop packet, or a 'T' stop packet and
+		     not including a thread-id.
+
+		     Additionally, the target might send a 'W' or 'X
+		     packet without including a process-id, when the target
+		     has multiple running inferiors.  */
+		  if (is_stop_for_all_threads)
+		    warning (_("multi-inferior target stopped without "
+			       "sending a process-id, using first "
+			       "non-exited inferior"));
+		  else
+		    warning (_("multi-threaded target stopped without "
+			       "sending a thread-id, using first "
+			       "non-exited thread"));
+		  warned = true;
+		}
+	      break;
+	    }
+
+	  /* If this is a stop for all threads then don't use a particular
+	     threads ptid, instead create a new ptid where only the pid
+	     field is set.  */
+	  if (is_stop_for_all_threads)
+	    ptid = ptid_t (thr->ptid.pid ());
+	  else
+	    ptid = thr->ptid;
+	}
+      gdb_assert (ptid != null_ptid);
+    }
 
   if (status->kind != TARGET_WAITKIND_EXITED
       && status->kind != TARGET_WAITKIND_SIGNALLED
@@ -7617,7 +7745,7 @@ remote_target::process_stop_reply (struc
       if (!stop_reply->regcache.empty ())
 	{
 	  struct regcache *regcache
-	    = get_thread_arch_regcache (ptid, stop_reply->arch);
+	    = get_thread_arch_regcache (this, ptid, stop_reply->arch);
 
 	  for (cached_reg_t &reg : stop_reply->regcache)
 	    {
@@ -7629,7 +7757,7 @@ remote_target::process_stop_reply (struc
 	}
 
       remote_notice_new_inferior (ptid, 0);
-      remote_thread_info *remote_thr = get_remote_thread_info (ptid);
+      remote_thread_info *remote_thr = get_remote_thread_info (this, ptid);
       remote_thr->core = stop_reply->core;
       remote_thr->stop_reason = stop_reply->stop_reason;
       remote_thr->watch_data_address = stop_reply->watch_data_address;
@@ -7696,6 +7824,17 @@ remote_target::wait_ns (ptid_t ptid, str
     }
 }
 
+/* Return the first resumed thread.  */
+
+static ptid_t
+first_remote_resumed_thread (remote_target *target)
+{
+  for (thread_info *tp : all_non_exited_threads (target, minus_one_ptid))
+    if (tp->resumed)
+      return tp->ptid;
+  return null_ptid;
+}
+
 /* Wait until the remote machine stops, then return, storing status in
    STATUS just as `wait' would.  */
 
@@ -7832,11 +7971,19 @@ remote_target::wait_as (ptid_t ptid, tar
       if (event_ptid != null_ptid)
 	record_currthread (rs, event_ptid);
       else
-	event_ptid = inferior_ptid;
+	event_ptid = first_remote_resumed_thread (this);
     }
   else
-    /* A process exit.  Invalidate our notion of current thread.  */
-    record_currthread (rs, minus_one_ptid);
+    {
+      /* A process exit.  Invalidate our notion of current thread.  */
+      record_currthread (rs, minus_one_ptid);
+      /* It's possible that the packet did not include a pid.  */
+      if (event_ptid == null_ptid)
+	event_ptid = first_remote_resumed_thread (this);
+      /* EVENT_PTID could still be NULL_PTID.  Double-check.  */
+      if (event_ptid == null_ptid)
+	event_ptid = magic_null_ptid;
+    }
 
   return event_ptid;
 }
@@ -8947,11 +9094,11 @@ remote_target::files_info ()
    for output compatibility with throw_perror_with_name.  */
 
 static void
-unpush_and_perror (const char *string)
+unpush_and_perror (remote_target *target, const char *string)
 {
   int saved_errno = errno;
 
-  remote_unpush_target ();
+  remote_unpush_target (target);
   throw_error (TARGET_CLOSE_ERROR, "%s: %s.", string,
 	       safe_strerror (saved_errno));
 }
@@ -8987,12 +9134,12 @@ remote_target::readchar (int timeout)
   switch ((enum serial_rc) ch)
     {
     case SERIAL_EOF:
-      remote_unpush_target ();
+      remote_unpush_target (this);
       throw_error (TARGET_CLOSE_ERROR, _("Remote connection closed"));
       /* no return */
     case SERIAL_ERROR:
-      unpush_and_perror (_("Remote communication error.  "
-			   "Target disconnected."));
+      unpush_and_perror (this, _("Remote communication error.  "
+				 "Target disconnected."));
       /* no return */
     case SERIAL_TIMEOUT:
       break;
@@ -9020,8 +9167,8 @@ remote_target::remote_serial_write (cons
 
   if (serial_write (rs->remote_desc, str, len))
     {
-      unpush_and_perror (_("Remote communication error.  "
-			   "Target disconnected."));
+      unpush_and_perror (this, _("Remote communication error.  "
+				 "Target disconnected."));
     }
 
   if (rs->got_ctrlc_during_io)
@@ -9544,7 +9691,7 @@ remote_target::getpkt_or_notif_sane_1 (g
 
 	      if (forever)	/* Watchdog went off?  Kill the target.  */
 		{
-		  remote_unpush_target ();
+		  remote_unpush_target (this);
 		  throw_error (TARGET_CLOSE_ERROR,
 			       _("Watchdog timeout has expired.  "
 				 "Target detached."));
@@ -9661,7 +9808,7 @@ remote_target::kill_new_fork_children (i
 
   /* Kill the fork child threads of any threads in process PID
      that are stopped at a fork event.  */
-  for (thread_info *thread : all_non_exited_threads ())
+  for (thread_info *thread : all_non_exited_threads (this))
     {
       struct target_waitstatus *ws = &thread->pending_follow;
 
@@ -9721,7 +9868,7 @@ remote_target::kill ()
      inferior, then we will tell gdbserver to exit and unpush the
      target.  */
   if (res == -1 && !remote_multi_process_p (rs)
-      && number_of_live_inferiors () == 1)
+      && number_of_live_inferiors (this) == 1)
     {
       remote_kill_k ();
 
@@ -9807,12 +9954,9 @@ remote_target::mourn_inferior ()
   discard_pending_stop_replies (current_inferior ());
 
   /* In 'target remote' mode with one inferior, we close the connection.  */
-  if (!rs->extended && number_of_live_inferiors () <= 1)
+  if (!rs->extended && number_of_live_inferiors (this) <= 1)
     {
-      unpush_target (this);
-
-      /* remote_close takes care of doing most of the clean up.  */
-      generic_mourn_inferior ();
+      remote_unpush_target (this);
       return;
     }
 
@@ -9847,26 +9991,6 @@ remote_target::mourn_inferior ()
 
   /* Call common code to mark the inferior as not running.  */
   generic_mourn_inferior ();
-
-  if (!have_inferiors ())
-    {
-      if (!remote_multi_process_p (rs))
-	{
-	  /* Check whether the target is running now - some remote stubs
-	     automatically restart after kill.	*/
-	  putpkt ("?");
-	  getpkt (&rs->buf, 0);
-
-	  if (rs->buf[0] == 'S' || rs->buf[0] == 'T')
-	    {
-	      /* Assume that the target has been restarted.  Set
-		 inferior_ptid so that bits of core GDB realizes
-		 there's something here, e.g., so that the user can
-		 say "kill" again.  */
-	      inferior_ptid = magic_null_ptid;
-	    }
-	}
-    }
 }
 
 bool
@@ -12594,12 +12718,6 @@ remote_delete_command (const char *args,
   remote_file_delete (argv[0], from_tty);
 }
 
-static void
-remote_command (const char *args, int from_tty)
-{
-  help_list (remote_cmdlist, "remote ", all_commands, gdb_stdout);
-}
-
 bool
 remote_target::can_execute_reverse ()
 {
@@ -12754,7 +12872,7 @@ remote_target::download_tracepoint (stru
   encode_actions_rsp (loc, &tdp_actions, &stepping_actions);
 
   tpaddr = loc->address;
-  sprintf_vma (addrbuf, tpaddr);
+  strcpy (addrbuf, phex (tpaddr, sizeof (CORE_ADDR)));
   ret = snprintf (buf.data (), buf.size (), "QTDP:%x:%s:%c:%lx:%x",
 		  b->number, addrbuf, /* address */
 		  (b->enable_state == bp_enabled ? 'E' : 'D'),
@@ -13016,11 +13134,10 @@ void
 remote_target::enable_tracepoint (struct bp_location *location)
 {
   struct remote_state *rs = get_remote_state ();
-  char addr_buf[40];
 
-  sprintf_vma (addr_buf, location->address);
   xsnprintf (rs->buf.data (), get_remote_packet_size (), "QTEnable:%x:%s",
-	     location->owner->number, addr_buf);
+	     location->owner->number,
+	     phex (location->address, sizeof (CORE_ADDR)));
   putpkt (rs->buf);
   remote_get_noisy_reply ();
   if (rs->buf[0] == '\0')
@@ -13033,11 +13150,10 @@ void
 remote_target::disable_tracepoint (struct bp_location *location)
 {
   struct remote_state *rs = get_remote_state ();
-  char addr_buf[40];
 
-  sprintf_vma (addr_buf, location->address);
   xsnprintf (rs->buf.data (), get_remote_packet_size (), "QTDisable:%x:%s",
-	     location->owner->number, addr_buf);
+	     location->owner->number,
+	     phex (location->address, sizeof (CORE_ADDR)));
   putpkt (rs->buf);
   remote_get_noisy_reply ();
   if (rs->buf[0] == '\0')
@@ -13416,7 +13532,7 @@ remote_target::set_disconnected_tracing
 int
 remote_target::core_of_thread (ptid_t ptid)
 {
-  struct thread_info *info = find_thread_ptid (ptid);
+  thread_info *info = find_thread_ptid (this, ptid);
 
   if (info != NULL && info->priv != NULL)
     return get_remote_thread_info (info)->core;
@@ -13696,7 +13812,7 @@ remote_target::remote_btrace_maybe_reope
 
   scoped_restore_current_thread restore_thread;
 
-  for (thread_info *tp : all_non_exited_threads ())
+  for (thread_info *tp : all_non_exited_threads (this))
     {
       set_general_thread (tp->ptid);
 
@@ -13912,13 +14028,12 @@ char *
 remote_target::pid_to_exec_file (int pid)
 {
   static gdb::optional<gdb::char_vector> filename;
-  struct inferior *inf;
   char *annex = NULL;
 
   if (packet_support (PACKET_qXfer_exec_file) != PACKET_ENABLE)
     return NULL;
 
-  inf = find_inferior_pid (pid);
+  inferior *inf = find_inferior_pid (this, pid);
   if (inf == NULL)
     internal_error (__FILE__, __LINE__,
 		    _("not currently attached to process %d"), pid);
@@ -13979,7 +14094,7 @@ remote_target::thread_handle_to_thread_i
 					     int handle_len,
 					     inferior *inf)
 {
-  for (thread_info *tp : all_non_exited_threads ())
+  for (thread_info *tp : all_non_exited_threads (this))
     {
       remote_thread_info *priv = get_remote_thread_info (tp);
 
@@ -14042,13 +14157,37 @@ remote_async_serial_handler (struct seri
 {
   /* Don't propogate error information up to the client.  Instead let
      the client find out about the error by querying the target.  */
-  inferior_event_handler (INF_REG_EVENT, NULL);
+  inferior_event_handler (INF_REG_EVENT);
 }
 
 static void
 remote_async_inferior_event_handler (gdb_client_data data)
 {
-  inferior_event_handler (INF_REG_EVENT, data);
+  remote_target *remote = (remote_target *) data;
+  /* Hold a strong reference to the remote target while handling an
+     event, since that could result in closing the connection.  */
+  auto remote_ref = target_ops_ref::new_reference (remote);
+
+  inferior_event_handler (INF_REG_EVENT);
+
+  remote_state *rs = remote->get_remote_state ();
+
+  /* inferior_event_handler may have consumed an event pending on the
+     infrun side without calling target_wait on the REMOTE target, or
+     may have pulled an event out of a different target.  Keep trying
+     for this remote target as long it still has either pending events
+     or unacknowledged notifications.  */
+
+  if (rs->notif_state->pending_event[notif_client_stop.id] != NULL
+      || !rs->stop_reply_queue.empty ())
+    mark_async_event_handler (rs->remote_async_inferior_event_token);
+}
+
+int
+remote_target::async_wait_fd ()
+{
+  struct remote_state *rs = get_remote_state ();
+  return rs->remote_desc->fd;
 }
 
 void
@@ -14115,12 +14254,6 @@ remote_target::thread_events (int enable
 }
 
 static void
-set_remote_cmd (const char *args, int from_tty)
-{
-  help_list (remote_set_cmdlist, "set remote ", all_commands, gdb_stdout);
-}
-
-static void
 show_remote_cmd (const char *args, int from_tty)
 {
   /* We can't just use cmd_show_list here, because we want to skip
@@ -14249,8 +14382,9 @@ set_range_stepping (const char *ignore_a
     }
 }
 
+void _initialize_remote ();
 void
-_initialize_remote (void)
+_initialize_remote ()
 {
   struct cmd_list_element *cmd;
   const char *cmd_name;
@@ -14271,12 +14405,12 @@ _initialize_remote (void)
 
   /* set/show remote ...  */
 
-  add_prefix_cmd ("remote", class_maintenance, set_remote_cmd, _("\
+  add_basic_prefix_cmd ("remote", class_maintenance, _("\
 Remote protocol specific variables.\n\
 Configure various remote-protocol specific variables such as\n\
 the packets being used."),
-		  &remote_set_cmdlist, "set remote ",
-		  0 /* allow-unknown */, &setlist);
+			&remote_set_cmdlist, "set remote ",
+			0 /* allow-unknown */, &setlist);
   add_prefix_cmd ("remote", class_maintenance, show_remote_cmd, _("\
 Remote protocol specific variables.\n\
 Configure various remote-protocol specific variables such as\n\
@@ -14306,10 +14440,10 @@ If set, a break, instead of a cntrl-c, i
 			   set_remotebreak, show_remotebreak,
 			   &setlist, &showlist);
   cmd_name = "remotebreak";
-  cmd = lookup_cmd (&cmd_name, setlist, "", -1, 1);
+  cmd = lookup_cmd (&cmd_name, setlist, "", NULL, -1, 1);
   deprecate_cmd (cmd, "set remote interrupt-sequence");
   cmd_name = "remotebreak"; /* needed because lookup_cmd updates the pointer */
-  cmd = lookup_cmd (&cmd_name, showlist, "", -1, 1);
+  cmd = lookup_cmd (&cmd_name, showlist, "", NULL, -1, 1);
   deprecate_cmd (cmd, "show remote interrupt-sequence");
 
   add_setshow_enum_cmd ("interrupt-sequence", class_support,
@@ -14697,11 +14831,11 @@ packets."),
 				   `Z' packets is %s.  */
 				&remote_set_cmdlist, &remote_show_cmdlist);
 
-  add_prefix_cmd ("remote", class_files, remote_command, _("\
+  add_basic_prefix_cmd ("remote", class_files, _("\
 Manipulate files on the remote system.\n\
 Transfer files to and from the remote target system."),
-		  &remote_cmdlist, "remote ",
-		  0 /* allow-unknown */, &cmdlist);
+			&remote_cmdlist, "remote ",
+			0 /* allow-unknown */, &cmdlist);
 
   add_cmd ("put", class_files, remote_put_command,
 	   _("Copy a local file to the remote system."),
@@ -14757,5 +14891,5 @@ Specify \"unlimited\" to display all the
 				       &setdebuglist, &showdebuglist);
 
   /* Eventually initialize fileio.  See fileio.c */
-  initialize_remote_fileio (remote_set_cmdlist, remote_show_cmdlist);
+  initialize_remote_fileio (&remote_set_cmdlist, &remote_show_cmdlist);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote-fileio.c ./gdb/remote-fileio.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote-fileio.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/remote-fileio.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Remote File-I/O communications
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,7 +25,7 @@
 #include "gdbsupport/gdb_wait.h"
 #include <sys/stat.h>
 #include "remote-fileio.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "target.h"
 #include "filenames.h"
 #include "gdbsupport/filestuff.h"
@@ -541,7 +541,7 @@ remote_fileio_func_read (remote_target *
 		 limit this read to something smaller than that - by a
 		 safe margin, in case the limit depends on system
 		 resources or version.  */
-	      ret = ui_file_read (gdb_stdtargin, (char *) buffer, 16383);
+	      ret = gdb_stdtargin->read ((char *) buffer, 16383);
 	      if (ret > 0 && (size_t)ret > length)
 		{
 		  remaining_buf = (char *) xmalloc (ret - length);
@@ -639,10 +639,12 @@ remote_fileio_func_write (remote_target
 	xfree (buffer);
 	return;
       case FIO_FD_CONSOLE_OUT:
-	ui_file_write (target_fd == 1 ? gdb_stdtarg : gdb_stdtargerr,
-		       (char *) buffer, length);
-	ui_file_flush (target_fd == 1 ? gdb_stdtarg : gdb_stdtargerr);
-	ret = length;
+	{
+	  ui_file *file = target_fd == 1 ? gdb_stdtarg : gdb_stdtargerr;
+	  file->write ((char *) buffer, length);
+	  file->flush ();
+	  ret = length;
+	}
 	break;
       default:
 	ret = write (fd, buffer, length);
@@ -1293,15 +1295,15 @@ show_system_call_allowed (const char *ar
 }
 
 void
-initialize_remote_fileio (struct cmd_list_element *remote_set_cmdlist,
-			  struct cmd_list_element *remote_show_cmdlist)
+initialize_remote_fileio (struct cmd_list_element **remote_set_cmdlist,
+			  struct cmd_list_element **remote_show_cmdlist)
 {
   add_cmd ("system-call-allowed", no_class,
 	   set_system_call_allowed,
 	   _("Set if the host system(3) call is allowed for the target."),
-	   &remote_set_cmdlist);
+	   remote_set_cmdlist);
   add_cmd ("system-call-allowed", no_class,
 	   show_system_call_allowed,
 	   _("Show if the host system(3) call is allowed for the target."),
-	   &remote_show_cmdlist);
+	   remote_show_cmdlist);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote-fileio.h ./gdb/remote-fileio.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote-fileio.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/remote-fileio.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Remote File-I/O communications
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -37,8 +37,8 @@ extern void remote_fileio_reset (void);
 
 /* Called from _initialize_remote ().  */
 extern void initialize_remote_fileio (
-  struct cmd_list_element *remote_set_cmdlist,
-  struct cmd_list_element *remote_show_cmdlist);
+  struct cmd_list_element **remote_set_cmdlist,
+  struct cmd_list_element **remote_show_cmdlist);
 
 /* Unpack a struct fio_stat.  */
 extern void remote_fileio_to_host_stat (struct fio_stat *fst,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote.h ./gdb/remote.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/remote.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Remote target communications for serial-line targets in custom GDB protocol
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote-notif.c ./gdb/remote-notif.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote-notif.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/remote-notif.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Remote notification in GDB protocol
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,11 +35,12 @@
 #include "remote.h"
 #include "remote-notif.h"
 #include "observable.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "target.h"
 #include "inferior.h"
 #include "infrun.h"
 #include "gdbcmd.h"
+#include "async-event.h"
 
 bool notif_debug = false;
 
@@ -237,8 +238,9 @@ remote_notif_state::~remote_notif_state
     delete pending_event[i];
 }
 
+void _initialize_notif ();
 void
-_initialize_notif (void)
+_initialize_notif ()
 {
   add_setshow_boolean_cmd ("notification", no_class, &notif_debug,
 			   _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote-notif.h ./gdb/remote-notif.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote-notif.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/remote-notif.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Remote notification in GDB protocol
 
-   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+   Copyright (C) 1988-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote-sim.c ./gdb/remote-sim.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/remote-sim.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/remote-sim.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic remote debugging interface for simulators.
 
-   Copyright (C) 1993-2020 Free Software Foundation, Inc.
+   Copyright (C) 1993-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
    Steve Chamberlain (sac@cygnus.com).
@@ -74,6 +74,44 @@ static void gdb_os_error (host_callback
    sim_* are the interface to the simulator (see remote-sim.h).
    gdbsim_* are stuff which is internal to gdb.  */
 
+/* Value of the next pid to allocate for an inferior.  As indicated
+   elsewhere, its initial value is somewhat arbitrary; it's critical
+   though that it's not zero or negative.  */
+static int next_pid;
+#define INITIAL_PID 42000
+
+/* Simulator-specific, per-inferior state.  */
+struct sim_inferior_data {
+  explicit sim_inferior_data (SIM_DESC desc)
+    : gdbsim_desc (desc),
+      remote_sim_ptid (next_pid, 0, next_pid)
+  {
+    gdb_assert (remote_sim_ptid != null_ptid);
+    ++next_pid;
+  }
+
+  ~sim_inferior_data ();
+
+  /* Flag which indicates whether or not the program has been loaded.  */
+  int program_loaded = 0;
+
+  /* Simulator descriptor for this inferior.  */
+  SIM_DESC gdbsim_desc;
+
+  /* This is the ptid we use for this particular simulator instance.  Its
+     value is somewhat arbitrary, as the simulator target don't have a
+     notion of tasks or threads, but we need something non-null to place
+     in inferior_ptid.  For simulators which permit multiple instances,
+     we also need a unique identifier to use for each inferior.  */
+  ptid_t remote_sim_ptid;
+
+  /* Signal with which to resume.  */
+  enum gdb_signal resume_siggnal = GDB_SIGNAL_0;
+
+  /* Flag which indicates whether resume should step or not.  */
+  int resume_step = 0;
+};
+
 static const target_info gdbsim_target_info = {
   "sim",
   N_("simulator"),
@@ -126,47 +164,16 @@ struct gdbsim_target final
 
   bool has_all_memory ()  override;
   bool has_memory ()  override;
+
+private:
+  sim_inferior_data *get_inferior_data_by_ptid (ptid_t ptid,
+						int sim_instance_needed);
+  void resume_one_inferior (inferior *inf, bool step, gdb_signal siggnal);
+  void close_one_inferior (inferior *inf);
 };
 
 static struct gdbsim_target gdbsim_ops;
 
-/* Value of the next pid to allocate for an inferior.  As indicated
-   elsewhere, its initial value is somewhat arbitrary; it's critical
-   though that it's not zero or negative.  */
-static int next_pid;
-#define INITIAL_PID 42000
-
-/* Simulator-specific, per-inferior state.  */
-struct sim_inferior_data {
-  explicit sim_inferior_data (SIM_DESC desc)
-    : gdbsim_desc (desc),
-      remote_sim_ptid (next_pid, 0, next_pid)
-  {
-    ++next_pid;
-  }
-
-  ~sim_inferior_data ();
-
-  /* Flag which indicates whether or not the program has been loaded.  */
-  int program_loaded = 0;
-
-  /* Simulator descriptor for this inferior.  */
-  SIM_DESC gdbsim_desc;
-
-  /* This is the ptid we use for this particular simulator instance.  Its
-     value is somewhat arbitrary, as the simulator target don't have a
-     notion of tasks or threads, but we need something non-null to place
-     in inferior_ptid.  For simulators which permit multiple instances,
-     we also need a unique identifier to use for each inferior.  */
-  ptid_t remote_sim_ptid;
-
-  /* Signal with which to resume.  */
-  enum gdb_signal resume_siggnal = GDB_SIGNAL_0;
-
-  /* Flag which indicates whether resume should step or not.  */
-  int resume_step = 0;
-};
-
 static inferior_key<sim_inferior_data> sim_inferior_data_key;
 
 /* Flag indicating the "open" status of this module.  It's set to 1
@@ -183,21 +190,6 @@ static char **sim_argv = NULL;
 static host_callback gdb_callback;
 static int callbacks_initialized = 0;
 
-/* Callback for iterate_over_inferiors.  It checks to see if the sim
-   descriptor passed via ARG is the same as that for the inferior
-   designated by INF.  Return true if so; false otherwise.  */
-
-static int
-check_for_duplicate_sim_descriptor (struct inferior *inf, void *arg)
-{
-  struct sim_inferior_data *sim_data;
-  SIM_DESC new_sim_desc = (SIM_DESC) arg;
-
-  sim_data = sim_inferior_data_key.get (inf);
-
-  return (sim_data != NULL && sim_data->gdbsim_desc == new_sim_desc);
-}
-
 /* Flags indicating whether or not a sim instance is needed.  One of these
    flags should be passed to get_sim_inferior_data().  */
 
@@ -219,27 +211,33 @@ get_sim_inferior_data (struct inferior *
   if (sim_instance_needed == SIM_INSTANCE_NEEDED
       && (sim_data == NULL || sim_data->gdbsim_desc == NULL))
     {
-      struct inferior *idup;
       sim_desc = sim_open (SIM_OPEN_DEBUG, &gdb_callback, exec_bfd, sim_argv);
       if (sim_desc == NULL)
 	error (_("Unable to create simulator instance for inferior %d."),
 	       inf->num);
 
-      idup = iterate_over_inferiors (check_for_duplicate_sim_descriptor,
-				     sim_desc);
-      if (idup != NULL)
+      /* Check if the sim descriptor is the same as that of another
+	 inferior.  */
+      for (inferior *other_inf : all_inferiors ())
 	{
-	  /* We don't close the descriptor due to the fact that it's
-	     shared with some other inferior.  If we were to close it,
-	     that might needlessly muck up the other inferior.  Of
-	     course, it's possible that the damage has already been
-	     done...  Note that it *will* ultimately be closed during
-	     cleanup of the other inferior.  */
-	  sim_desc = NULL;
-	  error (
- _("Inferior %d and inferior %d would have identical simulator state.\n"
-   "(This simulator does not support the running of more than one inferior.)"),
-		 inf->num, idup->num);
+	  sim_inferior_data *other_sim_data
+	    = sim_inferior_data_key.get (other_inf);
+
+	  if (other_sim_data != NULL
+	      && other_sim_data->gdbsim_desc == sim_desc)
+	    {
+	      /* We don't close the descriptor due to the fact that it's
+		 shared with some other inferior.  If we were to close it,
+		 that might needlessly muck up the other inferior.  Of
+		 course, it's possible that the damage has already been
+		 done...  Note that it *will* ultimately be closed during
+		 cleanup of the other inferior.  */
+	      sim_desc = NULL;
+	      error (
+_("Inferior %d and inferior %d would have identical simulator state.\n"
+ "(This simulator does not support the running of more than one inferior.)"),
+		     inf->num, other_inf->num);
+	    }
 	}
     }
 
@@ -262,8 +260,9 @@ get_sim_inferior_data (struct inferior *
    inferior in question.  Return NULL when no inferior is found or
    when ptid has a zero or negative pid component.  */
 
-static struct sim_inferior_data *
-get_sim_inferior_data_by_ptid (ptid_t ptid, int sim_instance_needed)
+sim_inferior_data *
+gdbsim_target::get_inferior_data_by_ptid (ptid_t ptid,
+					  int sim_instance_needed)
 {
   struct inferior *inf;
   int pid = ptid.pid ();
@@ -271,7 +270,7 @@ get_sim_inferior_data_by_ptid (ptid_t pt
   if (pid <= 0)
     return NULL;
 
-  inf = find_inferior_pid (pid);
+  inf = find_inferior_pid (this, pid);
 
   if (inf)
     return get_sim_inferior_data (inf, sim_instance_needed);
@@ -352,7 +351,7 @@ end_callbacks (void)
 static int
 gdb_os_write_stdout (host_callback *p, const char *buf, int len)
 {
-  ui_file_write (gdb_stdtarg, buf, len);
+  gdb_stdtarg->write (buf, len);
   return len;
 }
 
@@ -361,7 +360,7 @@ gdb_os_write_stdout (host_callback *p, c
 static void
 gdb_os_flush_stdout (host_callback *p)
 {
-  ui_file_flush (gdb_stdtarg);
+  gdb_stdtarg->flush ();
 }
 
 /* GDB version of os_write_stderr callback.  */
@@ -376,7 +375,7 @@ gdb_os_write_stderr (host_callback *p, c
     {
       b[0] = buf[i];
       b[1] = 0;
-      ui_file_puts (gdb_stdtargerr, b);
+      gdb_stdtargerr->puts (b);
     }
   return len;
 }
@@ -386,7 +385,7 @@ gdb_os_write_stderr (host_callback *p, c
 static void
 gdb_os_flush_stderr (host_callback *p)
 {
-  ui_file_flush (gdb_stdtargerr);
+  gdb_stdtargerr->flush ();
 }
 
 /* GDB version of printf_filtered callback.  */
@@ -441,7 +440,7 @@ void
 gdbsim_target::fetch_registers (struct regcache *regcache, int regno)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct inferior *inf = find_inferior_ptid (regcache->ptid ());
+  struct inferior *inf = find_inferior_ptid (this, regcache->ptid ());
   struct sim_inferior_data *sim_data
     = get_sim_inferior_data (inf, SIM_INSTANCE_NEEDED);
 
@@ -510,7 +509,7 @@ void
 gdbsim_target::store_registers (struct regcache *regcache, int regno)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct inferior *inf = find_inferior_ptid (regcache->ptid ());
+  struct inferior *inf = find_inferior_ptid (this, regcache->ptid ());
   struct sim_inferior_data *sim_data
     = get_sim_inferior_data (inf, SIM_INSTANCE_NEEDED);
 
@@ -654,9 +653,10 @@ gdbsim_target::create_inferior (const ch
       != SIM_RC_OK)
     error (_("Unable to create sim inferior."));
 
-  inferior_ptid = sim_data->remote_sim_ptid;
-  inferior_appeared (current_inferior (), inferior_ptid.pid ());
-  add_thread_silent (inferior_ptid);
+  inferior_appeared (current_inferior (),
+		     sim_data->remote_sim_ptid.pid ());
+  thread_info *thr = add_thread_silent (this, sim_data->remote_sim_ptid);
+  switch_to_thread (thr);
 
   insert_breakpoints ();	/* Needed to get correct instruction
 				   in cache.  */
@@ -762,16 +762,15 @@ gdbsim_target_open (const char *args, in
 
   /* There's nothing running after "target sim" or "load"; not until
      "run".  */
-  inferior_ptid = null_ptid;
+  switch_to_no_thread ();
 
   gdbsim_is_open = 1;
 }
 
-/* Callback for iterate_over_inferiors.  Called (indirectly) by
-   gdbsim_close().  */
+/* Helper for gdbsim_target::close.  */
 
-static int
-gdbsim_close_inferior (struct inferior *inf, void *arg)
+void
+gdbsim_target::close_one_inferior (inferior *inf)
 {
   struct sim_inferior_data *sim_data = sim_inferior_data_key.get (inf);
   if (sim_data != NULL)
@@ -785,14 +784,12 @@ gdbsim_close_inferior (struct inferior *
 	 Thus we need to verify the existence of an inferior using the
 	 pid in question before setting inferior_ptid via
 	 switch_to_thread() or mourning the inferior.  */
-      if (find_inferior_ptid (ptid) != NULL)
+      if (find_inferior_ptid (this, ptid) != NULL)
 	{
-	  switch_to_thread (ptid);
+	  switch_to_thread (this, ptid);
 	  generic_mourn_inferior ();
 	}
     }
-
-  return 0;
 }
 
 /* Close out all files and local state before this target loses control.  */
@@ -803,7 +800,8 @@ gdbsim_target::close ()
   if (remote_debug)
     fprintf_unfiltered (gdb_stdlog, "gdbsim_close\n");
 
-  iterate_over_inferiors (gdbsim_close_inferior, NULL);
+  for (inferior *inf : all_inferiors (this))
+    close_one_inferior (inf);
 
   if (sim_argv != NULL)
     {
@@ -839,45 +837,30 @@ gdbsim_target::detach (inferior *inf, in
    or to run free; SIGGNAL is the signal value (e.g. SIGINT) to be given
    to the target, or zero for no signal.  */
 
-struct resume_data
-{
-  enum gdb_signal siggnal;
-  int step;
-};
-
-static int
-gdbsim_resume_inferior (struct inferior *inf, void *arg)
+void
+gdbsim_target::resume_one_inferior (inferior *inf, bool step,
+				    gdb_signal siggnal)
 {
   struct sim_inferior_data *sim_data
     = get_sim_inferior_data (inf, SIM_INSTANCE_NOT_NEEDED);
-  struct resume_data *rd = (struct resume_data *) arg;
 
   if (sim_data)
     {
-      sim_data->resume_siggnal = rd->siggnal;
-      sim_data->resume_step = rd->step;
+      sim_data->resume_siggnal = siggnal;
+      sim_data->resume_step = step;
 
       if (remote_debug)
 	fprintf_unfiltered (gdb_stdlog,
 			    _("gdbsim_resume: pid %d, step %d, signal %d\n"),
-			    inf->pid, rd->step, rd->siggnal);
+			    inf->pid, step, siggnal);
     }
-
-  /* When called from iterate_over_inferiors, a zero return causes the
-     iteration process to proceed until there are no more inferiors to
-     consider.  */
-  return 0;
 }
 
 void
 gdbsim_target::resume (ptid_t ptid, int step, enum gdb_signal siggnal)
 {
-  struct resume_data rd;
   struct sim_inferior_data *sim_data
-    = get_sim_inferior_data_by_ptid (ptid, SIM_INSTANCE_NOT_NEEDED);
-
-  rd.siggnal = siggnal;
-  rd.step = step;
+    = get_inferior_data_by_ptid (ptid, SIM_INSTANCE_NOT_NEEDED);
 
   /* We don't access any sim_data members within this function.
      What's of interest is whether or not the call to
@@ -887,9 +870,12 @@ gdbsim_target::resume (ptid_t ptid, int
      either have multiple inferiors to resume or an error condition.  */
 
   if (sim_data)
-    gdbsim_resume_inferior (find_inferior_ptid (ptid), &rd);
+    resume_one_inferior (find_inferior_ptid (this, ptid), step, siggnal);
   else if (ptid == minus_one_ptid)
-    iterate_over_inferiors (gdbsim_resume_inferior, &rd);
+    {
+      for (inferior *inf : all_inferiors (this))
+	resume_one_inferior (inf, step, siggnal);
+    }
   else
     error (_("The program is not being run."));
 }
@@ -903,30 +889,17 @@ gdbsim_target::resume (ptid_t ptid, int
 
    For simulators that do not support this operation, just abort.  */
 
-static int
-gdbsim_interrupt_inferior (struct inferior *inf, void *arg)
+void
+gdbsim_target::interrupt ()
 {
-  struct sim_inferior_data *sim_data
-    = get_sim_inferior_data (inf, SIM_INSTANCE_NEEDED);
-
-  if (sim_data)
+  for (inferior *inf : all_inferiors ())
     {
-      if (!sim_stop (sim_data->gdbsim_desc))
-	{
+      sim_inferior_data *sim_data
+	= get_sim_inferior_data (inf, SIM_INSTANCE_NEEDED);
+
+      if (sim_data != nullptr && !sim_stop (sim_data->gdbsim_desc))
 	  quit ();
-	}
     }
-
-  /* When called from iterate_over_inferiors, a zero return causes the
-     iteration process to proceed until there are no more inferiors to
-     consider.  */
-  return 0;
-}
-
-void
-gdbsim_target::interrupt ()
-{
-  iterate_over_inferiors (gdbsim_interrupt_inferior, NULL);
 }
 
 /* GDB version of os_poll_quit callback.
@@ -969,11 +942,10 @@ gdbsim_target::wait (ptid_t ptid, struct
 				      SIM_INSTANCE_NEEDED);
   else
     {
-      sim_data = get_sim_inferior_data_by_ptid (ptid, SIM_INSTANCE_NEEDED);
+      sim_data = get_inferior_data_by_ptid (ptid, SIM_INSTANCE_NEEDED);
       if (sim_data == NULL)
 	error (_("Unable to wait for pid %d.  Inferior not found."),
 	       ptid.pid ());
-      inferior_ptid = ptid;
     }
 
   if (remote_debug)
@@ -1029,7 +1001,7 @@ gdbsim_target::wait (ptid_t ptid, struct
       break;
     }
 
-  return inferior_ptid;
+  return sim_data->remote_sim_ptid;
 }
 
 /* Get ready to modify the registers array.  On machines which store
@@ -1248,7 +1220,7 @@ bool
 gdbsim_target::thread_alive (ptid_t ptid)
 {
   struct sim_inferior_data *sim_data
-    = get_sim_inferior_data_by_ptid (ptid, SIM_INSTANCE_NOT_NEEDED);
+    = get_inferior_data_by_ptid (ptid, SIM_INSTANCE_NOT_NEEDED);
 
   if (sim_data == NULL)
     return false;
@@ -1294,8 +1266,9 @@ gdbsim_target::has_memory ()
   return true;
 }
 
+void _initialize_remote_sim ();
 void
-_initialize_remote_sim (void)
+_initialize_remote_sim ()
 {
   struct cmd_list_element *c;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/reply_mig_hack.awk ./gdb/reply_mig_hack.awk
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/reply_mig_hack.awk	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/reply_mig_hack.awk	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # Reply server mig-output massager
 #
-#   Copyright (C) 1995-2020 Free Software Foundation, Inc.
+#   Copyright (C) 1995-2021 Free Software Foundation, Inc.
 #
 #   Written by Miles Bader <miles@gnu.ai.mit.edu>
 #
@@ -130,7 +130,8 @@ parse_phase == 5 && /^#if[ \t]TypeCheck/
   # two arguments.
   # This is possibly bogus, but easier than supplying bogus values for all
   # the other args (we can't just pass 0 for them, as they might not be scalar).
-  print "\t    OutP->RetCode = (*(kern_return_t (*)(mach_port_t, kern_return_t)) " user_function_name ") (In0P->Head.msgh_request_port, In0P->" arg_name[0] ");";
+  print "\t    void * __error_call = " user_function_name ";";
+  print "\t    OutP->RetCode = (*(kern_return_t (*)(mach_port_t, kern_return_t)) __error_call) (In0P->Head.msgh_request_port, In0P->" arg_name[0] ");";
   print "\t    return;";
   print "\t  }";
   print "";
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/reverse.c ./gdb/reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/reverse.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/reverse.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Reverse execution and reverse debugging.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -322,14 +322,15 @@ info_bookmarks_command (const char *args
     }
 }
 
+void _initialize_reverse ();
 void
-_initialize_reverse (void)
+_initialize_reverse ()
 {
   add_com ("reverse-step", class_run, reverse_step, _("\
 Step program backward until it reaches the beginning of another source line.\n\
 Argument N means do this N times (or till program stops for another reason).")
 	   );
-  add_com_alias ("rs", "reverse-step", class_alias, 1);
+  add_com_alias ("rs", "reverse-step", class_run, 1);
 
   add_com ("reverse-next", class_run, reverse_next, _("\
 Step program backward, proceeding through subroutine calls.\n\
@@ -337,26 +338,26 @@ Like the \"reverse-step\" command as lon
 when they do, the call is treated as one instruction.\n\
 Argument N means do this N times (or till program stops for another reason).")
 	   );
-  add_com_alias ("rn", "reverse-next", class_alias, 1);
+  add_com_alias ("rn", "reverse-next", class_run, 1);
 
   add_com ("reverse-stepi", class_run, reverse_stepi, _("\
 Step backward exactly one instruction.\n\
 Argument N means do this N times (or till program stops for another reason).")
 	   );
-  add_com_alias ("rsi", "reverse-stepi", class_alias, 0);
+  add_com_alias ("rsi", "reverse-stepi", class_run, 0);
 
   add_com ("reverse-nexti", class_run, reverse_nexti, _("\
 Step backward one instruction, but proceed through called subroutines.\n\
 Argument N means do this N times (or till program stops for another reason).")
 	   );
-  add_com_alias ("rni", "reverse-nexti", class_alias, 0);
+  add_com_alias ("rni", "reverse-nexti", class_run, 0);
 
   add_com ("reverse-continue", class_run, reverse_continue, _("\
 Continue program being debugged but run it in reverse.\n\
 If proceeding from breakpoint, a number N may be used as an argument,\n\
 which means to set the ignore count of that breakpoint to N - 1 (so that\n\
 the breakpoint won't break until the Nth time it is reached)."));
-  add_com_alias ("rc", "reverse-continue", class_alias, 0);
+  add_com_alias ("rc", "reverse-continue", class_run, 0);
 
   add_com ("reverse-finish", class_run, reverse_finish, _("\
 Execute backward until just before selected stack frame is called."));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-fbsd-nat.c ./gdb/riscv-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-fbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/riscv-fbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD/riscv.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -128,8 +128,9 @@ riscv_fbsd_nat_target::store_registers (
     }
 }
 
+void _initialize_riscv_fbsd_nat ();
 void
-_initialize_riscv_fbsd_nat (void)
+_initialize_riscv_fbsd_nat ()
 {
   add_inf_child_target (&the_riscv_fbsd_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-fbsd-tdep.c ./gdb/riscv-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-fbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/riscv-fbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-dependent code for FreeBSD on RISC-V processors.
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -26,6 +26,7 @@
 #include "trad-frame.h"
 #include "tramp-frame.h"
 #include "gdbarch.h"
+#include "inferior.h"
 
 /* Register maps.  */
 
@@ -80,7 +81,7 @@ const struct regset riscv_fbsd_fpregset
     regcache_supply_regset, regcache_collect_regset
   };
 
-/* Implement the "regset_from_core_section" gdbarch method.  */
+/* Implement the "iterate_over_regset_sections" gdbarch method.  */
 
 static void
 riscv_fbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
@@ -183,7 +184,8 @@ riscv_fbsd_get_thread_local_address (str
 {
   struct regcache *regcache;
 
-  regcache = get_thread_arch_regcache (ptid, gdbarch);
+  regcache = get_thread_arch_regcache (current_inferior ()->process_target (),
+				       ptid, gdbarch);
 
   target_fetch_registers (regcache, RISCV_TP_REGNUM);
 
@@ -223,8 +225,9 @@ riscv_fbsd_init_abi (struct gdbarch_info
 					riscv_fbsd_get_thread_local_address);
 }
 
+void _initialize_riscv_fbsd_tdep ();
 void
-_initialize_riscv_fbsd_tdep (void)
+_initialize_riscv_fbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_riscv, 0, GDB_OSABI_FREEBSD,
 			  riscv_fbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-fbsd-tdep.h ./gdb/riscv-fbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-fbsd-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/riscv-fbsd-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* FreeBSD/riscv target support, prototypes.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-linux-nat.c ./gdb/riscv-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/riscv-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Native-dependent code for GNU/Linux RISC-V.
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,12 +22,18 @@
 #include "linux-nat.h"
 #include "riscv-tdep.h"
 #include "inferior.h"
-#include "target-descriptions.h"
 
 #include "elf/common.h"
 
+#include "nat/riscv-linux-tdesc.h"
+
 #include <sys/ptrace.h>
 
+/* Work around glibc header breakage causing ELF_NFPREG not to be usable.  */
+#ifndef NFPREG
+# define NFPREG 33
+#endif
+
 /* RISC-V Linux native additions to the default linux support.  */
 
 class riscv_linux_nat_target final : public linux_nat_target
@@ -88,21 +94,35 @@ static void
 supply_fpregset_regnum (struct regcache *regcache, const prfpregset_t *fpregs,
 			int regnum)
 {
+  int flen = register_size (regcache->arch (), RISCV_FIRST_FP_REGNUM);
+  union
+    {
+      const prfpregset_t *fpregs;
+      const gdb_byte *buf;
+    }
+  fpbuf = { .fpregs = fpregs };
   int i;
 
   if (regnum == -1)
     {
       /* We only support the FP registers and FCSR here.  */
-      for (i = RISCV_FIRST_FP_REGNUM; i <= RISCV_LAST_FP_REGNUM; i++)
-	regcache->raw_supply (i, &fpregs->__d.__f[i - RISCV_FIRST_FP_REGNUM]);
+      for (i = RISCV_FIRST_FP_REGNUM;
+	   i <= RISCV_LAST_FP_REGNUM;
+	   i++, fpbuf.buf += flen)
+	regcache->raw_supply (i, fpbuf.buf);
 
-      regcache->raw_supply (RISCV_CSR_FCSR_REGNUM, &fpregs->__d.__fcsr);
+      regcache->raw_supply (RISCV_CSR_FCSR_REGNUM, fpbuf.buf);
     }
   else if (regnum >= RISCV_FIRST_FP_REGNUM && regnum <= RISCV_LAST_FP_REGNUM)
-    regcache->raw_supply (regnum,
-			  &fpregs->__d.__f[regnum - RISCV_FIRST_FP_REGNUM]);
+    {
+      fpbuf.buf += flen * (regnum - RISCV_FIRST_FP_REGNUM);
+      regcache->raw_supply (regnum, fpbuf.buf);
+    }
   else if (regnum == RISCV_CSR_FCSR_REGNUM)
-    regcache->raw_supply (RISCV_CSR_FCSR_REGNUM, &fpregs->__d.__fcsr);
+    {
+      fpbuf.buf += flen * (RISCV_LAST_FP_REGNUM - RISCV_FIRST_FP_REGNUM + 1);
+      regcache->raw_supply (RISCV_CSR_FCSR_REGNUM, fpbuf.buf);
+    }
 }
 
 /* Copy all floating point registers from regset FPREGS into REGCACHE.  */
@@ -145,19 +165,35 @@ void
 fill_fpregset (const struct regcache *regcache, prfpregset_t *fpregs,
 	       int regnum)
 {
+  int flen = register_size (regcache->arch (), RISCV_FIRST_FP_REGNUM);
+  union
+    {
+      prfpregset_t *fpregs;
+      gdb_byte *buf;
+    }
+  fpbuf = { .fpregs = fpregs };
+  int i;
+
   if (regnum == -1)
     {
       /* We only support the FP registers and FCSR here.  */
-      for (int i = RISCV_FIRST_FP_REGNUM; i <= RISCV_LAST_FP_REGNUM; i++)
-	regcache->raw_collect (i, &fpregs->__d.__f[i - RISCV_FIRST_FP_REGNUM]);
+      for (i = RISCV_FIRST_FP_REGNUM;
+	   i <= RISCV_LAST_FP_REGNUM;
+	   i++, fpbuf.buf += flen)
+	regcache->raw_collect (i, fpbuf.buf);
 
-      regcache->raw_collect (RISCV_CSR_FCSR_REGNUM, &fpregs->__d.__fcsr);
+      regcache->raw_collect (RISCV_CSR_FCSR_REGNUM, fpbuf.buf);
     }
   else if (regnum >= RISCV_FIRST_FP_REGNUM && regnum <= RISCV_LAST_FP_REGNUM)
-    regcache->raw_collect (regnum,
-			   &fpregs->__d.__f[regnum - RISCV_FIRST_FP_REGNUM]);
+    {
+      fpbuf.buf += flen * (regnum - RISCV_FIRST_FP_REGNUM);
+      regcache->raw_collect (regnum, fpbuf.buf);
+    }
   else if (regnum == RISCV_CSR_FCSR_REGNUM)
-    regcache->raw_collect (RISCV_CSR_FCSR_REGNUM, &fpregs->__d.__fcsr);
+    {
+      fpbuf.buf += flen * (RISCV_LAST_FP_REGNUM - RISCV_FIRST_FP_REGNUM + 1);
+      regcache->raw_collect (RISCV_CSR_FCSR_REGNUM, fpbuf.buf);
+    }
 }
 
 /* Return a target description for the current target.  */
@@ -165,32 +201,9 @@ fill_fpregset (const struct regcache *re
 const struct target_desc *
 riscv_linux_nat_target::read_description ()
 {
-  struct riscv_gdbarch_features features;
-  struct iovec iov;
-  elf_fpregset_t regs;
-  int tid;
-
-  /* Figuring out xlen is easy.  */
-  features.xlen = sizeof (elf_greg_t);
-
-  tid = inferior_ptid.lwp ();
-
-  iov.iov_base = &regs;
-  iov.iov_len = sizeof (regs);
-
-  /* Can we fetch the f-registers?  */
-  if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET,
-	      (PTRACE_TYPE_ARG3) &iov) == -1)
-    features.flen = 0;		/* No f-registers.  */
-  else
-    {
-      /* TODO: We need a way to figure out the actual length of the
-	 f-registers.  We could have 64-bit x-registers, with 32-bit
-	 f-registers.  For now, just assumed xlen and flen match.  */
-      features.flen = features.xlen;
-    }
-
-  return riscv_create_target_description (features);
+  const struct riscv_gdbarch_features features
+    = riscv_linux_read_features (inferior_ptid.lwp ());
+  return riscv_lookup_target_description (features);
 }
 
 /* Fetch REGNUM (or all registers if REGNUM == -1) from the target
@@ -228,7 +241,9 @@ riscv_linux_nat_target::fetch_registers
       elf_fpregset_t regs;
 
       iov.iov_base = &regs;
-      iov.iov_len = sizeof (regs);
+      iov.iov_len = ELF_NFPREG * register_size (regcache->arch (),
+						RISCV_FIRST_FP_REGNUM);
+      gdb_assert (iov.iov_len <= sizeof (regs));
 
       if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET,
 		  (PTRACE_TYPE_ARG3) &iov) == -1)
@@ -289,7 +304,9 @@ riscv_linux_nat_target::store_registers
       elf_fpregset_t regs;
 
       iov.iov_base = &regs;
-      iov.iov_len = sizeof (regs);
+      iov.iov_len = ELF_NFPREG * register_size (regcache->arch (),
+						RISCV_FIRST_FP_REGNUM);
+      gdb_assert (iov.iov_len <= sizeof (regs));
 
       if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET,
 		  (PTRACE_TYPE_ARG3) &iov) == -1)
@@ -310,8 +327,9 @@ riscv_linux_nat_target::store_registers
 
 /* Initialize RISC-V Linux native support.  */
 
+void _initialize_riscv_linux_nat ();
 void
-_initialize_riscv_linux_nat (void)
+_initialize_riscv_linux_nat ()
 {
   /* Register the target.  */
   linux_target = &the_riscv_linux_nat_target;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-linux-tdep.c ./gdb/riscv-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/riscv-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-dependent code for GNU/Linux on RISC-V processors.
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -186,8 +186,9 @@ riscv_linux_init_abi (struct gdbarch_inf
 
 /* Initialize RISC-V Linux target support.  */
 
+void _initialize_riscv_linux_tdep ();
 void
-_initialize_riscv_linux_tdep (void)
+_initialize_riscv_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_riscv, 0, GDB_OSABI_LINUX,
 			  riscv_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-ravenscar-thread.c ./gdb/riscv-ravenscar-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-ravenscar-thread.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/riscv-ravenscar-thread.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,140 @@
+/* Ravenscar RISC-V target support.
+
+   Copyright (C) 2019-2021 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 "gdbarch.h"
+#include "gdbcore.h"
+#include "regcache.h"
+#include "riscv-tdep.h"
+#include "inferior.h"
+#include "ravenscar-thread.h"
+#include "riscv-ravenscar-thread.h"
+
+struct riscv_ravenscar_ops : public ravenscar_arch_ops
+{
+  void fetch_registers (struct regcache *regcache, int regnum) override;
+  void store_registers (struct regcache *regcache, int regnum) override;
+
+private:
+
+  /* Return the offset of the register in the context buffer.  */
+  int register_offset (struct gdbarch *arch, int regnum);
+};
+
+int
+riscv_ravenscar_ops::register_offset (struct gdbarch *arch, int regnum)
+{
+  int offset;
+  if (regnum == RISCV_RA_REGNUM || regnum == RISCV_PC_REGNUM)
+    offset = 0;
+  else if (regnum == RISCV_SP_REGNUM)
+    offset = 1;
+  else if (regnum == RISCV_ZERO_REGNUM + 8) /* S0 */
+    offset = 2;
+  else if (regnum == RISCV_ZERO_REGNUM + 9) /* S1 */
+    offset = 3;
+  else if (regnum >= RISCV_ZERO_REGNUM + 19
+	   && regnum <= RISCV_ZERO_REGNUM + 27) /* S2..S11 */
+    offset = regnum - (RISCV_ZERO_REGNUM + 19) + 4;
+  else if (regnum >= RISCV_FIRST_FP_REGNUM
+	   && regnum <= RISCV_FIRST_FP_REGNUM + 11)
+    offset = regnum - RISCV_FIRST_FP_REGNUM + 14; /* FS0..FS11 */
+  else
+    {
+      /* Not saved.  */
+      return -1;
+    }
+
+  int size = register_size (arch, regnum);
+  return offset * size;
+}
+
+/* Supply register REGNUM, which has been saved on REGISTER_ADDR, to the
+   regcache.  */
+
+static void
+supply_register_at_address (struct regcache *regcache, int regnum,
+                            CORE_ADDR register_addr)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  int buf_size = register_size (gdbarch, regnum);
+  gdb_byte *buf;
+
+  buf = (gdb_byte *) alloca (buf_size);
+  read_memory (register_addr, buf, buf_size);
+  regcache->raw_supply (regnum, buf);
+}
+
+void
+riscv_ravenscar_ops::fetch_registers (struct regcache *regcache, int regnum)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  const int num_regs = gdbarch_num_regs (gdbarch);
+  int current_regnum;
+  CORE_ADDR current_address;
+  CORE_ADDR thread_descriptor_address;
+
+  /* The tid is the thread_id field, which is a pointer to the thread.  */
+  thread_descriptor_address = (CORE_ADDR) inferior_ptid.tid ();
+
+  /* Read registers.  */
+  for (current_regnum = 0; current_regnum < num_regs; current_regnum++)
+    {
+      int offset = register_offset (gdbarch, current_regnum);
+
+      if (offset != -1)
+        {
+          current_address = thread_descriptor_address + offset;
+          supply_register_at_address (regcache, current_regnum,
+                                      current_address);
+        }
+    }
+}
+
+void
+riscv_ravenscar_ops::store_registers (struct regcache *regcache, int regnum)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  int buf_size = register_size (gdbarch, regnum);
+  gdb_byte buf[buf_size];
+  CORE_ADDR register_address;
+
+  int offset = register_offset (gdbarch, regnum);
+  if (offset != -1)
+    {
+      register_address = inferior_ptid.tid () + offset;
+
+      regcache->raw_collect (regnum, buf);
+      write_memory (register_address,
+		    buf,
+		    buf_size);
+    }
+}
+
+/* The ravenscar_arch_ops vector for most RISC-V targets.  */
+
+static struct riscv_ravenscar_ops riscv_ravenscar_ops;
+
+/* Register riscv_ravenscar_ops in GDBARCH.  */
+
+void
+register_riscv_ravenscar_ops (struct gdbarch *gdbarch)
+{
+  set_gdbarch_ravenscar_ops (gdbarch, &riscv_ravenscar_ops);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-ravenscar-thread.h ./gdb/riscv-ravenscar-thread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-ravenscar-thread.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/riscv-ravenscar-thread.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,27 @@
+/* Ravenscar RISC-V target support.
+
+   Copyright (C) 2019-2021 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 RISCV_RAVENSCAR_THREAD_H
+#define RISCV_RAVENSCAR_THREAD_H
+
+struct gdbarch;
+
+extern void register_riscv_ravenscar_ops (struct gdbarch *gdbarch);
+
+#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-tdep.c ./gdb/riscv-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/riscv-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the RISC-V architecture, for GDB.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -47,7 +47,7 @@
 #include "floatformat.h"
 #include "remote.h"
 #include "target-descriptions.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "user-regs.h"
 #include "valprint.h"
 #include "gdbsupport/common-defs.h"
@@ -56,6 +56,7 @@
 #include "observable.h"
 #include "prologue-value.h"
 #include "arch/riscv.h"
+#include "riscv-ravenscar-thread.h"
 
 /* The stack must be 16-byte aligned.  */
 #define SP_ALIGNMENT 16
@@ -100,6 +101,66 @@ struct riscv_unwind_cache
 
 static reggroup *csr_reggroup = NULL;
 
+/* Callback function for user_reg_add.  */
+
+static struct value *
+value_of_riscv_user_reg (struct frame_info *frame, const void *baton)
+{
+  const int *reg_p = (const int *) baton;
+  return value_of_register (*reg_p, frame);
+}
+
+/* Information about a register alias that needs to be set up for this
+   target.  These are collected when the target's XML description is
+   analysed, and then processed later, once the gdbarch has been created.  */
+
+class riscv_pending_register_alias
+{
+public:
+  /* Constructor.  */
+
+  riscv_pending_register_alias (const char *name, const void *baton)
+    : m_name (name),
+      m_baton (baton)
+  { /* Nothing.  */ }
+
+  /* Convert this into a user register for GDBARCH.  */
+
+  void create (struct gdbarch *gdbarch) const
+  {
+    user_reg_add (gdbarch, m_name, value_of_riscv_user_reg, m_baton);
+  }
+
+private:
+  /* The name for this alias.  */
+  const char *m_name;
+
+  /* The baton value for passing to user_reg_add.  This must point to some
+     data that will live for at least as long as the gdbarch object to
+     which the user register is attached.  */
+  const void *m_baton;
+};
+
+/* Registers in the RISCV_REGISTER_FEATURE lists below are either optional,
+   or required.  For example the $pc register is always going to be a
+   required register, you can't do much debugging without that.  In
+   contrast, most of the CSRs are optional, GDB doesn't require them in
+   order to have a useful debug session.  This enum models the difference
+   between these register types.  */
+
+enum riscv_register_required_status
+{
+  /* This register is optional within this feature.  */
+  RISCV_REG_OPTIONAL,
+
+  /* This register is required within this feature.  */
+  RISCV_REG_REQUIRED,
+
+  /* This register is required, the register must either be in this
+     feature, or it could appear within the CSR feature.  */
+  RISCV_REG_REQUIRED_MAYBE_CSR
+};
+
 /* A set of registers that we expect to find in a tdesc_feature.  These
    are use in RISCV_GDBARCH_INIT when processing the target description.  */
 
@@ -114,60 +175,118 @@ struct riscv_register_feature
     /* List of names for this register.  The first name in this list is the
        preferred name, the name GDB should use when describing this
        register.  */
-    std::vector <const char *> names;
+    std::vector<const char *> names;
 
-    /* When true this register is required in this feature set.  */
-    bool required_p;
+    /* Is this register required within this feature?  In some cases the
+       register could be required, but might also be in the CSR feature.  */
+    riscv_register_required_status required;
+
+    /* Look in FEATURE for a register with a name from this classes names
+       list.  If the register is found then register its number with
+       TDESC_DATA and add all its aliases to the ALIASES list.  REG_SET is
+       used to help create the aliases.  */
+    bool check (struct tdesc_arch_data *tdesc_data,
+		const struct tdesc_feature *feature,
+		const struct riscv_register_feature *reg_set,
+		std::vector<riscv_pending_register_alias> *aliases) const;
   };
 
   /* The name for this feature.  This is the name used to find this feature
      within the target description.  */
   const char *name;
 
+  /* For x-regs and f-regs we always force GDB to use the first name from
+     the REGISTERS.NAMES vector, it is therefore important that we create
+     user-register aliases for all of the remaining names at indexes 1+ in
+     the names vector.
+
+     For CSRs we take a different approach, we prefer whatever name the
+     target description uses, in this case we want to create user-register
+     aliases for any other names that aren't the target description
+     provided name.
+
+     When this flag is true we are dealing with the first case, and when
+     this is false we are dealing with the latter.  */
+  bool prefer_first_name;
+
   /* List of all the registers that we expect that we might find in this
      register set.  */
-  std::vector <struct register_info> registers;
+  std::vector<struct register_info> registers;
 };
 
+/* See description in the class declaration above.  */
+
+bool
+riscv_register_feature::register_info::check
+	(struct tdesc_arch_data *tdesc_data,
+	 const struct tdesc_feature *feature,
+	 const struct riscv_register_feature *reg_set,
+	 std::vector<riscv_pending_register_alias> *aliases) const
+{
+  for (const char *name : this->names)
+    {
+      bool found = tdesc_numbered_register (feature, tdesc_data,
+					    this->regnum, name);
+      if (found)
+	{
+	  /* We know that the target description mentions this
+	     register.  In RISCV_REGISTER_NAME we ensure that GDB
+	     always uses the first name for each register, so here we
+	     add aliases for all of the remaining names.  */
+	  bool prefer_first_name = reg_set->prefer_first_name;
+	  int start_index = prefer_first_name ? 1 : 0;
+	  for (int i = start_index; i < this->names.size (); ++i)
+	    {
+	      const char *alias = this->names[i];
+	      if (alias == name && !prefer_first_name)
+		continue;
+	      aliases->emplace_back (alias, (void *) &this->regnum);
+	    }
+	  return true;
+	}
+    }
+  return false;
+}
+
 /* The general x-registers feature set.  */
 
 static const struct riscv_register_feature riscv_xreg_feature =
 {
- "org.gnu.gdb.riscv.cpu",
+ "org.gnu.gdb.riscv.cpu", true,
  {
-   { RISCV_ZERO_REGNUM + 0, { "zero", "x0" }, true },
-   { RISCV_ZERO_REGNUM + 1, { "ra", "x1" }, true },
-   { RISCV_ZERO_REGNUM + 2, { "sp", "x2" }, true },
-   { RISCV_ZERO_REGNUM + 3, { "gp", "x3" }, true },
-   { RISCV_ZERO_REGNUM + 4, { "tp", "x4" }, true },
-   { RISCV_ZERO_REGNUM + 5, { "t0", "x5" }, true },
-   { RISCV_ZERO_REGNUM + 6, { "t1", "x6" }, true },
-   { RISCV_ZERO_REGNUM + 7, { "t2", "x7" }, true },
-   { RISCV_ZERO_REGNUM + 8, { "fp", "x8", "s0" }, true },
-   { RISCV_ZERO_REGNUM + 9, { "s1", "x9" }, true },
-   { RISCV_ZERO_REGNUM + 10, { "a0", "x10" }, true },
-   { RISCV_ZERO_REGNUM + 11, { "a1", "x11" }, true },
-   { RISCV_ZERO_REGNUM + 12, { "a2", "x12" }, true },
-   { RISCV_ZERO_REGNUM + 13, { "a3", "x13" }, true },
-   { RISCV_ZERO_REGNUM + 14, { "a4", "x14" }, true },
-   { RISCV_ZERO_REGNUM + 15, { "a5", "x15" }, true },
-   { RISCV_ZERO_REGNUM + 16, { "a6", "x16" }, true },
-   { RISCV_ZERO_REGNUM + 17, { "a7", "x17" }, true },
-   { RISCV_ZERO_REGNUM + 18, { "s2", "x18" }, true },
-   { RISCV_ZERO_REGNUM + 19, { "s3", "x19" }, true },
-   { RISCV_ZERO_REGNUM + 20, { "s4", "x20" }, true },
-   { RISCV_ZERO_REGNUM + 21, { "s5", "x21" }, true },
-   { RISCV_ZERO_REGNUM + 22, { "s6", "x22" }, true },
-   { RISCV_ZERO_REGNUM + 23, { "s7", "x23" }, true },
-   { RISCV_ZERO_REGNUM + 24, { "s8", "x24" }, true },
-   { RISCV_ZERO_REGNUM + 25, { "s9", "x25" }, true },
-   { RISCV_ZERO_REGNUM + 26, { "s10", "x26" }, true },
-   { RISCV_ZERO_REGNUM + 27, { "s11", "x27" }, true },
-   { RISCV_ZERO_REGNUM + 28, { "t3", "x28" }, true },
-   { RISCV_ZERO_REGNUM + 29, { "t4", "x29" }, true },
-   { RISCV_ZERO_REGNUM + 30, { "t5", "x30" }, true },
-   { RISCV_ZERO_REGNUM + 31, { "t6", "x31" }, true },
-   { RISCV_ZERO_REGNUM + 32, { "pc" }, true }
+   { RISCV_ZERO_REGNUM + 0, { "zero", "x0" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 1, { "ra", "x1" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 2, { "sp", "x2" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 3, { "gp", "x3" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 4, { "tp", "x4" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 5, { "t0", "x5" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 6, { "t1", "x6" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 7, { "t2", "x7" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 8, { "fp", "x8", "s0" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 9, { "s1", "x9" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 10, { "a0", "x10" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 11, { "a1", "x11" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 12, { "a2", "x12" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 13, { "a3", "x13" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 14, { "a4", "x14" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 15, { "a5", "x15" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 16, { "a6", "x16" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 17, { "a7", "x17" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 18, { "s2", "x18" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 19, { "s3", "x19" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 20, { "s4", "x20" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 21, { "s5", "x21" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 22, { "s6", "x22" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 23, { "s7", "x23" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 24, { "s8", "x24" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 25, { "s9", "x25" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 26, { "s10", "x26" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 27, { "s11", "x27" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 28, { "t3", "x28" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 29, { "t4", "x29" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 30, { "t5", "x30" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 31, { "t6", "x31" }, RISCV_REG_REQUIRED },
+   { RISCV_ZERO_REGNUM + 32, { "pc" }, RISCV_REG_REQUIRED }
  }
 };
 
@@ -175,44 +294,44 @@ static const struct riscv_register_featu
 
 static const struct riscv_register_feature riscv_freg_feature =
 {
- "org.gnu.gdb.riscv.fpu",
+ "org.gnu.gdb.riscv.fpu", true,
  {
-   { RISCV_FIRST_FP_REGNUM + 0, { "ft0", "f0" }, true },
-   { RISCV_FIRST_FP_REGNUM + 1, { "ft1", "f1" }, true },
-   { RISCV_FIRST_FP_REGNUM + 2, { "ft2", "f2" }, true },
-   { RISCV_FIRST_FP_REGNUM + 3, { "ft3", "f3" }, true },
-   { RISCV_FIRST_FP_REGNUM + 4, { "ft4", "f4" }, true },
-   { RISCV_FIRST_FP_REGNUM + 5, { "ft5", "f5" }, true },
-   { RISCV_FIRST_FP_REGNUM + 6, { "ft6", "f6" }, true },
-   { RISCV_FIRST_FP_REGNUM + 7, { "ft7", "f7" }, true },
-   { RISCV_FIRST_FP_REGNUM + 8, { "fs0", "f8" }, true },
-   { RISCV_FIRST_FP_REGNUM + 9, { "fs1", "f9" }, true },
-   { RISCV_FIRST_FP_REGNUM + 10, { "fa0", "f10" }, true },
-   { RISCV_FIRST_FP_REGNUM + 11, { "fa1", "f11" }, true },
-   { RISCV_FIRST_FP_REGNUM + 12, { "fa2", "f12" }, true },
-   { RISCV_FIRST_FP_REGNUM + 13, { "fa3", "f13" }, true },
-   { RISCV_FIRST_FP_REGNUM + 14, { "fa4", "f14" }, true },
-   { RISCV_FIRST_FP_REGNUM + 15, { "fa5", "f15" }, true },
-   { RISCV_FIRST_FP_REGNUM + 16, { "fa6", "f16" }, true },
-   { RISCV_FIRST_FP_REGNUM + 17, { "fa7", "f17" }, true },
-   { RISCV_FIRST_FP_REGNUM + 18, { "fs2", "f18" }, true },
-   { RISCV_FIRST_FP_REGNUM + 19, { "fs3", "f19" }, true },
-   { RISCV_FIRST_FP_REGNUM + 20, { "fs4", "f20" }, true },
-   { RISCV_FIRST_FP_REGNUM + 21, { "fs5", "f21" }, true },
-   { RISCV_FIRST_FP_REGNUM + 22, { "fs6", "f22" }, true },
-   { RISCV_FIRST_FP_REGNUM + 23, { "fs7", "f23" }, true },
-   { RISCV_FIRST_FP_REGNUM + 24, { "fs8", "f24" }, true },
-   { RISCV_FIRST_FP_REGNUM + 25, { "fs9", "f25" }, true },
-   { RISCV_FIRST_FP_REGNUM + 26, { "fs10", "f26" }, true },
-   { RISCV_FIRST_FP_REGNUM + 27, { "fs11", "f27" }, true },
-   { RISCV_FIRST_FP_REGNUM + 28, { "ft8", "f28" }, true },
-   { RISCV_FIRST_FP_REGNUM + 29, { "ft9", "f29" }, true },
-   { RISCV_FIRST_FP_REGNUM + 30, { "ft10", "f30" }, true },
-   { RISCV_FIRST_FP_REGNUM + 31, { "ft11", "f31" }, true },
-
-   { RISCV_CSR_FFLAGS_REGNUM, { "fflags" }, true },
-   { RISCV_CSR_FRM_REGNUM, { "frm" }, true },
-   { RISCV_CSR_FCSR_REGNUM, { "fcsr" }, true },
+   { RISCV_FIRST_FP_REGNUM + 0, { "ft0", "f0" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 1, { "ft1", "f1" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 2, { "ft2", "f2" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 3, { "ft3", "f3" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 4, { "ft4", "f4" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 5, { "ft5", "f5" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 6, { "ft6", "f6" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 7, { "ft7", "f7" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 8, { "fs0", "f8" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 9, { "fs1", "f9" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 10, { "fa0", "f10" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 11, { "fa1", "f11" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 12, { "fa2", "f12" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 13, { "fa3", "f13" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 14, { "fa4", "f14" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 15, { "fa5", "f15" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 16, { "fa6", "f16" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 17, { "fa7", "f17" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 18, { "fs2", "f18" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 19, { "fs3", "f19" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 20, { "fs4", "f20" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 21, { "fs5", "f21" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 22, { "fs6", "f22" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 23, { "fs7", "f23" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 24, { "fs8", "f24" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 25, { "fs9", "f25" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 26, { "fs10", "f26" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 27, { "fs11", "f27" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 28, { "ft8", "f28" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 29, { "ft9", "f29" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 30, { "ft10", "f30" }, RISCV_REG_REQUIRED },
+   { RISCV_FIRST_FP_REGNUM + 31, { "ft11", "f31" }, RISCV_REG_REQUIRED },
+
+   { RISCV_CSR_FFLAGS_REGNUM, { "fflags", "csr1" }, RISCV_REG_REQUIRED_MAYBE_CSR },
+   { RISCV_CSR_FRM_REGNUM, { "frm", "csr2" }, RISCV_REG_REQUIRED_MAYBE_CSR },
+   { RISCV_CSR_FCSR_REGNUM, { "fcsr", "csr3" }, RISCV_REG_REQUIRED_MAYBE_CSR },
 
  }
 };
@@ -225,9 +344,9 @@ static const struct riscv_register_featu
 
 static const struct riscv_register_feature riscv_virtual_feature =
 {
- "org.gnu.gdb.riscv.virtual",
+ "org.gnu.gdb.riscv.virtual", false,
  {
-   { RISCV_PRIV_REGNUM, { "priv" }, false }
+   { RISCV_PRIV_REGNUM, { "priv" }, RISCV_REG_OPTIONAL }
  }
 };
 
@@ -237,10 +356,10 @@ static const struct riscv_register_featu
 
 static struct riscv_register_feature riscv_csr_feature =
 {
- "org.gnu.gdb.riscv.csr",
+ "org.gnu.gdb.riscv.csr", false,
  {
-#define DECLARE_CSR(NAME,VALUE) \
-  { RISCV_ ## VALUE ## _REGNUM, { # NAME }, false },
+#define DECLARE_CSR(NAME,VALUE,CLASS,DEFINE_VER,ABORT_VER) \
+  { RISCV_ ## VALUE ## _REGNUM, { # NAME }, RISCV_REG_OPTIONAL },
 #include "opcode/riscv-opc.h"
 #undef DECLARE_CSR
  }
@@ -257,6 +376,16 @@ riscv_create_csr_aliases ()
       int csr_num = reg.regnum - RISCV_FIRST_CSR_REGNUM;
       const char *alias = xstrprintf ("csr%d", csr_num);
       reg.names.push_back (alias);
+
+      /* Setup the other csr aliases.  We don't use a switch table here in
+         case there are multiple aliases with the same value.  Also filter
+         based on ABRT_VER in order to avoid a very old alias for misa that
+         duplicates the name "misa" but at a different CSR address.  */
+#define DECLARE_CSR_ALIAS(NAME,VALUE,CLASS,DEF_VER,ABRT_VER)	 \
+      if (csr_num == VALUE && ABRT_VER >= PRIV_SPEC_CLASS_1P11)  \
+        reg.names.push_back ( # NAME );
+#include "opcode/riscv-opc.h"
+#undef DECLARE_CSR_ALIAS
     }
 }
 
@@ -283,47 +412,11 @@ show_use_compressed_breakpoints (struct
 static struct cmd_list_element *setriscvcmdlist = NULL;
 static struct cmd_list_element *showriscvcmdlist = NULL;
 
-/* The show callback for the 'show riscv' prefix command.  */
-
-static void
-show_riscv_command (const char *args, int from_tty)
-{
-  help_list (showriscvcmdlist, "show riscv ", all_commands, gdb_stdout);
-}
-
-/* The set callback for the 'set riscv' prefix command.  */
-
-static void
-set_riscv_command (const char *args, int from_tty)
-{
-  printf_unfiltered
-    (_("\"set riscv\" must be followed by an appropriate subcommand.\n"));
-  help_list (setriscvcmdlist, "set riscv ", all_commands, gdb_stdout);
-}
-
 /* The set and show lists for 'set riscv' and 'show riscv' prefixes.  */
 
 static struct cmd_list_element *setdebugriscvcmdlist = NULL;
 static struct cmd_list_element *showdebugriscvcmdlist = NULL;
 
-/* The show callback for the 'show debug riscv' prefix command.  */
-
-static void
-show_debug_riscv_command (const char *args, int from_tty)
-{
-  help_list (showdebugriscvcmdlist, "show debug riscv ", all_commands, gdb_stdout);
-}
-
-/* The set callback for the 'set debug riscv' prefix command.  */
-
-static void
-set_debug_riscv_command (const char *args, int from_tty)
-{
-  printf_unfiltered
-    (_("\"set debug riscv\" must be followed by an appropriate subcommand.\n"));
-  help_list (setdebugriscvcmdlist, "set debug riscv ", all_commands, gdb_stdout);
-}
-
 /* The show callback for all 'show debug riscv VARNAME' variables.  */
 
 static void
@@ -486,18 +579,9 @@ riscv_sw_breakpoint_from_kind (struct gd
     }
 }
 
-/* Callback function for user_reg_add.  */
-
-static struct value *
-value_of_riscv_user_reg (struct frame_info *frame, const void *baton)
-{
-  const int *reg_p = (const int *) baton;
-  return value_of_register (*reg_p, frame);
-}
-
 /* Implement the register_name gdbarch method.  This is used instead of
    the function supplied by calling TDESC_USE_REGISTERS so that we can
-   ensure the preferred names are offered.  */
+   ensure the preferred names are offered for x-regs and f-regs.  */
 
 static const char *
 riscv_register_name (struct gdbarch *gdbarch, int regnum)
@@ -509,12 +593,18 @@ riscv_register_name (struct gdbarch *gdb
   if (name == NULL || name[0] == '\0')
     return NULL;
 
+  /* We want GDB to use the ABI names for registers even if the target
+     gives us a target description with the architectural name.  For
+     example we want to see 'ra' instead of 'x1' whatever the target
+     description called it.  */
   if (regnum >= RISCV_ZERO_REGNUM && regnum < RISCV_FIRST_FP_REGNUM)
     {
       gdb_assert (regnum < riscv_xreg_feature.registers.size ());
       return riscv_xreg_feature.registers[regnum].names[0];
     }
 
+  /* Like with the x-regs we prefer the abi names for the floating point
+     registers.  */
   if (regnum >= RISCV_FIRST_FP_REGNUM && regnum <= RISCV_LAST_FP_REGNUM)
     {
       if (riscv_has_fp_regs (gdbarch))
@@ -527,28 +617,34 @@ riscv_register_name (struct gdbarch *gdb
         return NULL;
     }
 
-  /* Check that there's no gap between the set of registers handled above,
-     and the set of registers handled next.  */
-  gdb_assert ((RISCV_LAST_FP_REGNUM + 1) == RISCV_FIRST_CSR_REGNUM);
-
-  if (regnum >= RISCV_FIRST_CSR_REGNUM && regnum <= RISCV_LAST_CSR_REGNUM)
-    {
-#define DECLARE_CSR(NAME,VALUE) \
-      case RISCV_ ## VALUE ## _REGNUM: return # NAME;
-
-      switch (regnum)
-	{
-#include "opcode/riscv-opc.h"
-	}
-#undef DECLARE_CSR
-    }
+  /* Some targets (QEMU) are reporting these three registers twice, once
+     in the FPU feature, and once in the CSR feature.  Both of these read
+     the same underlying state inside the target, but naming the register
+     twice in the target description results in GDB having two registers
+     with the same name, only one of which can ever be accessed, but both
+     will show up in 'info register all'.  Unless, we identify the
+     duplicate copies of these registers (in riscv_tdesc_unknown_reg) and
+     then hide the registers here by giving them no name.  */
+  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  if (tdep->duplicate_fflags_regnum == regnum)
+    return NULL;
+  if (tdep->duplicate_frm_regnum == regnum)
+    return NULL;
+  if (tdep->duplicate_fcsr_regnum == regnum)
+    return NULL;
 
-  if (regnum == RISCV_PRIV_REGNUM)
-    return "priv";
+  /* The remaining registers are different.  For all other registers on the
+     machine we prefer to see the names that the target description
+     provides.  This is particularly important for CSRs which might be
+     renamed over time.  If GDB keeps track of the "latest" name, but a
+     particular target provides an older name then we don't want to force
+     users to see the newer name in register output.
+
+     The other case that reaches here are any registers that the target
+     provided that GDB is completely unaware of.  For these we have no
+     choice but to accept the target description name.
 
-  /* It is possible that that the target provides some registers that GDB
-     is unaware of, in that case just return the NAME from the target
-     description.  */
+     Just accept whatever name TDESC_REGISTER_NAME returned.  */
   return name;
 }
 
@@ -579,7 +675,7 @@ riscv_fpreg_d_type (struct gdbarch *gdba
       append_composite_type_field (t, "float", bt->builtin_float);
       append_composite_type_field (t, "double", bt->builtin_double);
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "builtin_type_fpreg_d";
+      t->set_name ("builtin_type_fpreg_d");
       tdep->riscv_fpreg_d_type = t;
     }
 
@@ -609,10 +705,10 @@ riscv_register_type (struct gdbarch *gdb
          present the registers using a union type.  */
       int flen = riscv_isa_flen (gdbarch);
       if (flen == 8
-          && TYPE_CODE (type) == TYPE_CODE_FLT
+          && type->code () == TYPE_CODE_FLT
           && TYPE_LENGTH (type) == flen
-          && (strcmp (TYPE_NAME (type), "builtin_type_ieee_double") == 0
-              || strcmp (TYPE_NAME (type), "double") == 0))
+          && (strcmp (type->name (), "builtin_type_ieee_double") == 0
+              || strcmp (type->name (), "double") == 0))
         type = riscv_fpreg_d_type (gdbarch);
     }
 
@@ -622,7 +718,7 @@ riscv_register_type (struct gdbarch *gdb
        || regnum == RISCV_SP_REGNUM
        || regnum == RISCV_GP_REGNUM
        || regnum == RISCV_TP_REGNUM)
-      && TYPE_CODE (type) == TYPE_CODE_INT
+      && type->code () == TYPE_CODE_INT
       && TYPE_LENGTH (type) == xlen)
     {
       /* This spots the case where some interesting registers are defined
@@ -675,16 +771,16 @@ riscv_print_one_register_info (struct gd
   print_raw_format = (value_entirely_available (val)
 		      && !value_optimized_out (val));
 
-  if (TYPE_CODE (regtype) == TYPE_CODE_FLT
-      || (TYPE_CODE (regtype) == TYPE_CODE_UNION
-	  && TYPE_NFIELDS (regtype) == 2
-	  && TYPE_CODE (TYPE_FIELD_TYPE (regtype, 0)) == TYPE_CODE_FLT
-	  && TYPE_CODE (TYPE_FIELD_TYPE (regtype, 1)) == TYPE_CODE_FLT)
-      || (TYPE_CODE (regtype) == TYPE_CODE_UNION
-	  && TYPE_NFIELDS (regtype) == 3
-	  && TYPE_CODE (TYPE_FIELD_TYPE (regtype, 0)) == TYPE_CODE_FLT
-	  && TYPE_CODE (TYPE_FIELD_TYPE (regtype, 1)) == TYPE_CODE_FLT
-	  && TYPE_CODE (TYPE_FIELD_TYPE (regtype, 2)) == TYPE_CODE_FLT))
+  if (regtype->code () == TYPE_CODE_FLT
+      || (regtype->code () == TYPE_CODE_UNION
+	  && regtype->num_fields () == 2
+	  && regtype->field (0).type ()->code () == TYPE_CODE_FLT
+	  && regtype->field (1).type ()->code () == TYPE_CODE_FLT)
+      || (regtype->code () == TYPE_CODE_UNION
+	  && regtype->num_fields () == 3
+	  && regtype->field (0).type ()->code () == TYPE_CODE_FLT
+	  && regtype->field (1).type ()->code () == TYPE_CODE_FLT
+	  && regtype->field (2).type ()->code () == TYPE_CODE_FLT))
     {
       struct value_print_options opts;
       const gdb_byte *valaddr = value_contents_for_printing (val);
@@ -693,9 +789,7 @@ riscv_print_one_register_info (struct gd
       get_user_print_options (&opts);
       opts.deref_ref = 1;
 
-      val_print (regtype,
-		 value_embedded_offset (val), 0,
-		 file, 0, val, &opts, current_language);
+      common_val_print (val, file, 0, &opts, current_language);
 
       if (print_raw_format)
 	{
@@ -712,9 +806,7 @@ riscv_print_one_register_info (struct gd
       /* Print the register in hex.  */
       get_formatted_print_options (&opts, 'x');
       opts.deref_ref = 1;
-      val_print (regtype,
-		 value_embedded_offset (val), 0,
-		 file, 0, val, &opts, current_language);
+      common_val_print (val, file, 0, &opts, current_language);
 
       if (print_raw_format)
 	{
@@ -848,9 +940,7 @@ riscv_print_one_register_info (struct gd
 		  get_user_print_options (&opts);
 		  opts.deref_ref = 1;
 		  fprintf_filtered (file, "\t");
-		  val_print (regtype,
-			     value_embedded_offset (val), 0,
-			     file, 0, val, &opts, current_language);
+		  common_val_print (val, file, 0, &opts, current_language);
 		}
 	    }
 	}
@@ -869,7 +959,7 @@ riscv_is_regnum_a_named_csr (int regnum)
 
   switch (regnum)
     {
-#define DECLARE_CSR(name, num) case RISCV_ ## num ## _REGNUM:
+#define DECLARE_CSR(name, num, class, define_ver, abort_ver) case RISCV_ ## num ## _REGNUM:
 #include "opcode/riscv-opc.h"
 #undef DECLARE_CSR
       return true;
@@ -894,6 +984,19 @@ riscv_register_reggroup_p (struct gdbarc
 
   if (regnum > RISCV_LAST_REGNUM)
     {
+      /* Any extra registers from the CSR tdesc_feature (identified in
+	 riscv_tdesc_unknown_reg) are removed from the save/restore groups
+	 as some targets (QEMU) report CSRs which then can't be read.  */
+      struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+      if ((reggroup == restore_reggroup || reggroup == save_reggroup)
+	  && regnum >= tdep->unknown_csrs_first_regnum
+	  && regnum < (tdep->unknown_csrs_first_regnum
+		       + tdep->unknown_csrs_count))
+	return 0;
+
+      /* This is some other unknown register from the target description.
+	 In this case we trust whatever the target description says about
+	 which groups this register should be in.  */
       int ret = tdesc_register_in_reggroup_p (gdbarch, regnum, reggroup);
       if (ret != -1)
         return ret;
@@ -968,7 +1071,7 @@ riscv_print_registers_info (struct gdbar
       else
 	reggroup = general_reggroup;
 
-      for (regnum = 0; regnum <= RISCV_LAST_REGNUM; ++regnum)
+      for (regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); ++regnum)
 	{
 	  /* Zero never changes, so might as well hide by default.  */
 	  if (regnum == RISCV_ZERO_REGNUM && !print_all)
@@ -1669,7 +1772,7 @@ static ULONGEST
 riscv_type_align (gdbarch *gdbarch, type *type)
 {
   type = check_typedef (type);
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
+  if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
     return std::min (TYPE_LENGTH (type), (ULONGEST) BIGGEST_ALIGNMENT);
 
   /* Anything else will be aligned by the generic code.  */
@@ -1732,8 +1835,9 @@ struct riscv_arg_info
        will go.  */
     int c_length;
 
-    /* The offset within CONTENTS for this part of the argument.  Will
-       always be 0 for the first part.  For the second part of the
+    /* The offset within CONTENTS for this part of the argument.  This can
+       be non-zero even for the first part (the first field of a struct can
+       have a non-zero offset due to padding).  For the second part of the
        argument, this might be the C_LENGTH value of the first part,
        however, if we are passing a structure in two registers, and there's
        is padding between the first and second field, then this offset
@@ -2084,7 +2188,7 @@ private:
 void
 riscv_struct_info::analyse_inner (struct type *type, int offset)
 {
-  unsigned int count = TYPE_NFIELDS (type);
+  unsigned int count = type->num_fields ();
   unsigned int i;
 
   for (i = 0; i < count; ++i)
@@ -2092,12 +2196,12 @@ riscv_struct_info::analyse_inner (struct
       if (TYPE_FIELD_LOC_KIND (type, i) != FIELD_LOC_KIND_BITPOS)
 	continue;
 
-      struct type *field_type = TYPE_FIELD_TYPE (type, i);
+      struct type *field_type = type->field (i).type ();
       field_type = check_typedef (field_type);
       int field_offset
 	= offset + TYPE_FIELD_BITPOS (type, i) / TARGET_CHAR_BIT;
 
-      switch (TYPE_CODE (field_type))
+      switch (field_type->code ())
 	{
 	case TYPE_CODE_STRUCT:
 	  analyse_inner (field_type, field_offset);
@@ -2144,7 +2248,7 @@ riscv_call_arg_struct (struct riscv_arg_
 
       sinfo.analyse (ainfo->type);
       if (sinfo.number_of_fields () == 1
-	  && TYPE_CODE (sinfo.field_type (0)) == TYPE_CODE_COMPLEX)
+	  && sinfo.field_type(0)->code () == TYPE_CODE_COMPLEX)
 	{
 	  /* The following is similar to RISCV_CALL_ARG_COMPLEX_FLOAT,
 	     except we use the type of the complex field instead of the
@@ -2174,7 +2278,7 @@ riscv_call_arg_struct (struct riscv_arg_
 	}
 
       if (sinfo.number_of_fields () == 1
-	  && TYPE_CODE (sinfo.field_type (0)) == TYPE_CODE_FLT)
+	  && sinfo.field_type(0)->code () == TYPE_CODE_FLT)
 	{
 	  /* The following is similar to RISCV_CALL_ARG_SCALAR_FLOAT,
 	     except we use the type of the first scalar field instead of
@@ -2197,9 +2301,9 @@ riscv_call_arg_struct (struct riscv_arg_
 	}
 
       if (sinfo.number_of_fields () == 2
-	  && TYPE_CODE (sinfo.field_type (0)) == TYPE_CODE_FLT
+	  && sinfo.field_type(0)->code () == TYPE_CODE_FLT
 	  && TYPE_LENGTH (sinfo.field_type (0)) <= cinfo->flen
-	  && TYPE_CODE (sinfo.field_type (1)) == TYPE_CODE_FLT
+	  && sinfo.field_type(1)->code () == TYPE_CODE_FLT
 	  && TYPE_LENGTH (sinfo.field_type (1)) <= cinfo->flen
 	  && riscv_arg_regs_available (&cinfo->float_regs) >= 2)
 	{
@@ -2223,7 +2327,7 @@ riscv_call_arg_struct (struct riscv_arg_
 
       if (sinfo.number_of_fields () == 2
 	  && riscv_arg_regs_available (&cinfo->int_regs) >= 1
-	  && (TYPE_CODE (sinfo.field_type (0)) == TYPE_CODE_FLT
+	  && (sinfo.field_type(0)->code () == TYPE_CODE_FLT
 	      && TYPE_LENGTH (sinfo.field_type (0)) <= cinfo->flen
 	      && is_integral_type (sinfo.field_type (1))
 	      && TYPE_LENGTH (sinfo.field_type (1)) <= cinfo->xlen))
@@ -2247,7 +2351,7 @@ riscv_call_arg_struct (struct riscv_arg_
 	  && riscv_arg_regs_available (&cinfo->int_regs) >= 1
 	  && (is_integral_type (sinfo.field_type (0))
 	      && TYPE_LENGTH (sinfo.field_type (0)) <= cinfo->xlen
-	      && TYPE_CODE (sinfo.field_type (1)) == TYPE_CODE_FLT
+	      && sinfo.field_type(1)->code () == TYPE_CODE_FLT
 	      && TYPE_LENGTH (sinfo.field_type (1)) <= cinfo->flen))
 	{
 	  int len0 = TYPE_LENGTH (sinfo.field_type (0));
@@ -2300,7 +2404,7 @@ riscv_arg_location (struct gdbarch *gdba
   ainfo->argloc[0].c_length = 0;
   ainfo->argloc[1].c_length = 0;
 
-  switch (TYPE_CODE (ainfo->type))
+  switch (ainfo->type->code ())
     {
     case TYPE_CODE_INT:
     case TYPE_CODE_BOOL:
@@ -2422,6 +2526,26 @@ riscv_print_arg_location (ui_file *strea
     }
 }
 
+/* Wrapper around REGCACHE->cooked_write.  Places the LEN bytes of DATA
+   into a buffer that is at least as big as the register REGNUM, padding
+   out the DATA with either 0x00, or 0xff.  For floating point registers
+   0xff is used, for everyone else 0x00 is used.  */
+
+static void
+riscv_regcache_cooked_write (int regnum, const gdb_byte *data, int len,
+			     struct regcache *regcache, int flen)
+{
+  gdb_byte tmp [sizeof (ULONGEST)];
+
+  /* FP values in FP registers must be NaN-boxed.  */
+  if (riscv_is_fp_regno_p (regnum) && len < flen)
+    memset (tmp, -1, sizeof (tmp));
+  else
+    memset (tmp, 0, sizeof (tmp));
+  memcpy (tmp, data, len);
+  regcache->cooked_write (regnum, tmp);
+}
+
 /* Implement the push dummy call gdbarch callback.  */
 
 static CORE_ADDR
@@ -2448,7 +2572,7 @@ riscv_push_dummy_call (struct gdbarch *g
 
   struct type *ftype = check_typedef (value_type (function));
 
-  if (TYPE_CODE (ftype) == TYPE_CODE_PTR)
+  if (ftype->code () == TYPE_CODE_PTR)
     ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
 
   /* We'll use register $a0 if we're returning a struct.  */
@@ -2465,7 +2589,7 @@ riscv_push_dummy_call (struct gdbarch *g
       arg_type = check_typedef (value_type (arg_value));
 
       riscv_arg_location (gdbarch, info, &call_info, arg_type,
-			  TYPE_VARARGS (ftype) && i >= TYPE_NFIELDS (ftype));
+			  TYPE_VARARGS (ftype) && i >= ftype->num_fields ());
 
       if (info->type != arg_type)
 	arg_value = value_cast (info->type, arg_value);
@@ -2531,18 +2655,13 @@ riscv_push_dummy_call (struct gdbarch *g
 	{
 	case riscv_arg_info::location::in_reg:
 	  {
-	    gdb_byte tmp [sizeof (ULONGEST)];
-
 	    gdb_assert (info->argloc[0].c_length <= info->length);
-	    /* FP values in FP registers must be NaN-boxed.  */
-	    if (riscv_is_fp_regno_p (info->argloc[0].loc_data.regno)
-		&& info->argloc[0].c_length < call_info.flen)
-	      memset (tmp, -1, sizeof (tmp));
-	    else
-	      memset (tmp, 0, sizeof (tmp));
-	    memcpy (tmp, (info->contents + info->argloc[0].c_offset),
-		    info->argloc[0].c_length);
-	    regcache->cooked_write (info->argloc[0].loc_data.regno, tmp);
+
+	    riscv_regcache_cooked_write (info->argloc[0].loc_data.regno,
+					 (info->contents
+					  + info->argloc[0].c_offset),
+					 info->argloc[0].c_length,
+					 regcache, call_info.flen);
 	    second_arg_length =
 	      (((info->argloc[0].c_length + info->argloc[0].c_offset) < info->length)
 	       ? info->argloc[1].c_length : 0);
@@ -2574,19 +2693,13 @@ riscv_push_dummy_call (struct gdbarch *g
 	    {
 	    case riscv_arg_info::location::in_reg:
 	      {
-		gdb_byte tmp [sizeof (ULONGEST)];
-
 		gdb_assert ((riscv_is_fp_regno_p (info->argloc[1].loc_data.regno)
 			     && second_arg_length <= call_info.flen)
 			    || second_arg_length <= call_info.xlen);
-		/* FP values in FP registers must be NaN-boxed.  */
-		if (riscv_is_fp_regno_p (info->argloc[1].loc_data.regno)
-		    && second_arg_length < call_info.flen)
-		  memset (tmp, -1, sizeof (tmp));
-		else
-		  memset (tmp, 0, sizeof (tmp));
-		memcpy (tmp, second_arg_data, second_arg_length);
-		regcache->cooked_write (info->argloc[1].loc_data.regno, tmp);
+		riscv_regcache_cooked_write (info->argloc[1].loc_data.regno,
+					     second_arg_data,
+					     second_arg_length,
+					     regcache, call_info.flen);
 	      }
 	      break;
 
@@ -2706,9 +2819,9 @@ riscv_return_value (struct gdbarch  *gdb
 	      if (writebuf)
 		{
 		  const gdb_byte *ptr = writebuf + info.argloc[0].c_offset;
-		  regcache->cooked_write_part (regnum, 0,
+		  riscv_regcache_cooked_write (regnum, ptr,
 					       info.argloc[0].c_length,
-					       ptr);
+					       regcache, call_info.flen);
 		}
 
 	      /* A return value in register can have a second part in a
@@ -2735,10 +2848,11 @@ riscv_return_value (struct gdbarch  *gdb
 
 		      if (writebuf)
 			{
-			  writebuf += info.argloc[1].c_offset;
-			  regcache->cooked_write_part (regnum, 0,
-						       info.argloc[1].c_length,
-						       writebuf);
+			  const gdb_byte *ptr
+			    = writebuf + info.argloc[1].c_offset;
+			  riscv_regcache_cooked_write
+			    (regnum, ptr, info.argloc[1].c_length,
+			     regcache, call_info.flen);
 			}
 		      break;
 
@@ -2972,7 +3086,7 @@ riscv_find_default_target_description (c
     features.xlen = 8;
 
   /* Now build a target description based on the feature set.  */
-  return riscv_create_target_description (features);
+  return riscv_lookup_target_description (features);
 }
 
 /* All of the registers in REG_SET are checked for in FEATURE, TDESC_DATA
@@ -2982,24 +3096,26 @@ riscv_find_default_target_description (c
 
 static bool
 riscv_check_tdesc_feature (struct tdesc_arch_data *tdesc_data,
-                           const struct tdesc_feature *feature,
-                           const struct riscv_register_feature *reg_set)
+                           const struct tdesc_feature *main_feature,
+                           const struct tdesc_feature *csr_feature,
+                           const struct riscv_register_feature *reg_set,
+                           std::vector<riscv_pending_register_alias> *aliases)
 {
   for (const auto &reg : reg_set->registers)
     {
-      bool found = false;
+      bool found = reg.check (tdesc_data, main_feature, reg_set, aliases);
 
-      for (const char *name : reg.names)
+      if (!found && reg.required != RISCV_REG_OPTIONAL)
 	{
-	  found =
-	    tdesc_numbered_register (feature, tdesc_data, reg.regnum, name);
-
-	  if (found)
-	    break;
+	  if (reg.required == RISCV_REG_REQUIRED_MAYBE_CSR
+	      && csr_feature != nullptr)
+	    {
+	      gdb_assert (main_feature != csr_feature);
+	      found = reg.check (tdesc_data, csr_feature,  reg_set, aliases);
+	    }
+	  if (!found)
+	    return false;
 	}
-
-      if (!found && reg.required_p)
-	return false;
     }
 
   return true;
@@ -3023,24 +3139,6 @@ riscv_add_reggroups (struct gdbarch *gdb
   reggroup_add (gdbarch, csr_reggroup);
 }
 
-/* Create register aliases for all the alternative names that exist for
-   registers in REG_SET.  */
-
-static void
-riscv_setup_register_aliases (struct gdbarch *gdbarch,
-                              const struct riscv_register_feature *reg_set)
-{
-  for (auto &reg : reg_set->registers)
-    {
-      /* The first item in the names list is the preferred name for the
-         register, this is what RISCV_REGISTER_NAME returns, and so we
-         don't need to create an alias with that name here.  */
-      for (int i = 1; i < reg.names.size (); ++i)
-        user_reg_add (gdbarch, reg.names[i], value_of_riscv_user_reg,
-                      &reg.regnum);
-    }
-}
-
 /* Implement the "dwarf2_reg_to_regnum" gdbarch method.  */
 
 static int
@@ -3097,6 +3195,85 @@ riscv_gcc_target_options (struct gdbarch
   return target_options;
 }
 
+/* Call back from tdesc_use_registers, called for each unknown register
+   found in the target description.
+
+   See target-description.h (typedef tdesc_unknown_register_ftype) for a
+   discussion of the arguments and return values.  */
+
+static int
+riscv_tdesc_unknown_reg (struct gdbarch *gdbarch, tdesc_feature *feature,
+			 const char *reg_name, int possible_regnum)
+{
+  /* At one point in time GDB had an incorrect default target description
+     that duplicated the fflags, frm, and fcsr registers in both the FPU
+     and CSR register sets.
+
+     Some targets (QEMU) copied these target descriptions into their source
+     tree, and so we're currently stuck working with some targets that
+     declare the same registers twice.
+
+     There's not much we can do about this any more.  Assuming the target
+     will direct a request for either register number to the correct
+     underlying hardware register then it doesn't matter which one GDB
+     uses, so long as we (GDB) are consistent (so that we don't end up with
+     invalid cache misses).
+
+     As we always scan the FPU registers first, then the CSRs, if the
+     target has included the offending registers in both sets then we will
+     always see the FPU copies here, as the CSR versions will replace them
+     in the register list.
+
+     To prevent these duplicates showing up in any of the register list,
+     record their register numbers here.  */
+  if (strcmp (tdesc_feature_name (feature), riscv_freg_feature.name) == 0)
+    {
+      struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+      int *regnum_ptr = nullptr;
+
+      if (strcmp (reg_name, "fflags") == 0)
+	regnum_ptr = &tdep->duplicate_fflags_regnum;
+      else if (strcmp (reg_name, "frm") == 0)
+	regnum_ptr = &tdep->duplicate_frm_regnum;
+      else if (strcmp (reg_name, "fcsr") == 0)
+	regnum_ptr = &tdep->duplicate_fcsr_regnum;
+
+      if (regnum_ptr != nullptr)
+	{
+	  /* This means the register appears more than twice in the target
+	     description.  Just let GDB add this as another register.
+	     We'll have duplicates in the register name list, but there's
+	     not much more we can do.  */
+	  if (*regnum_ptr != -1)
+	    return -1;
+
+	  /* Record the number assigned to this register, then return the
+	     number (so it actually gets assigned to this register).  */
+	  *regnum_ptr = possible_regnum;
+	  return possible_regnum;
+	}
+    }
+
+  /* Any unknown registers in the CSR feature are recorded within a single
+     block so we can easily identify these registers when making choices
+     about register groups in riscv_register_reggroup_p.  */
+  if (strcmp (tdesc_feature_name (feature), riscv_csr_feature.name) == 0)
+    {
+      struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+      if (tdep->unknown_csrs_first_regnum == -1)
+	tdep->unknown_csrs_first_regnum = possible_regnum;
+      gdb_assert (tdep->unknown_csrs_first_regnum
+		  + tdep->unknown_csrs_count == possible_regnum);
+      tdep->unknown_csrs_count++;
+      return possible_regnum;
+    }
+
+  /* Some other unknown register.  Don't assign this a number now, it will
+     be assigned a number automatically later by the target description
+     handling code.  */
+  return -1;
+}
+
 /* Implement the gnu_triplet_regexp method.  A single compiler supports both
    32-bit and 64-bit code, and may be named riscv32 or riscv64 or (not
    recommended) riscv.  */
@@ -3144,10 +3321,12 @@ riscv_gdbarch_init (struct gdbarch_info
     return NULL;
 
   struct tdesc_arch_data *tdesc_data = tdesc_data_alloc ();
+  std::vector<riscv_pending_register_alias> pending_aliases;
 
   bool valid_p = riscv_check_tdesc_feature (tdesc_data,
-                                            feature_cpu,
-                                            &riscv_xreg_feature);
+                                            feature_cpu, feature_csr,
+                                            &riscv_xreg_feature,
+                                            &pending_aliases);
   if (valid_p)
     {
       /* Check that all of the core cpu registers have the same bitsize.  */
@@ -3167,7 +3346,9 @@ riscv_gdbarch_init (struct gdbarch_info
   if (feature_fpu != NULL)
     {
       valid_p &= riscv_check_tdesc_feature (tdesc_data, feature_fpu,
-                                            &riscv_freg_feature);
+					    feature_csr,
+                                            &riscv_freg_feature,
+                                            &pending_aliases);
 
       /* Search for the first floating point register (by any alias), to
          determine the bitsize.  */
@@ -3202,12 +3383,14 @@ riscv_gdbarch_init (struct gdbarch_info
     }
 
   if (feature_virtual)
-    riscv_check_tdesc_feature (tdesc_data, feature_virtual,
-                               &riscv_virtual_feature);
+    riscv_check_tdesc_feature (tdesc_data, feature_virtual, feature_csr,
+                               &riscv_virtual_feature,
+                               &pending_aliases);
 
   if (feature_csr)
-    riscv_check_tdesc_feature (tdesc_data, feature_csr,
-                               &riscv_csr_feature);
+    riscv_check_tdesc_feature (tdesc_data, feature_csr, nullptr,
+                               &riscv_csr_feature,
+                               &pending_aliases);
 
   if (!valid_p)
     {
@@ -3328,7 +3511,7 @@ riscv_gdbarch_init (struct gdbarch_info
   set_gdbarch_print_registers_info (gdbarch, riscv_print_registers_info);
 
   /* Finalise the target description registers.  */
-  tdesc_use_registers (gdbarch, tdesc, tdesc_data);
+  tdesc_use_registers (gdbarch, tdesc, tdesc_data, riscv_tdesc_unknown_reg);
 
   /* Override the register type callback setup by the target description
      mechanism.  This allows us to provide special type for floating point
@@ -3345,11 +3528,11 @@ riscv_gdbarch_init (struct gdbarch_info
      want, ignoring what the target tells us.  */
   set_gdbarch_register_reggroup_p (gdbarch, riscv_register_reggroup_p);
 
-  /* Create register aliases for alternative register names.  */
-  riscv_setup_register_aliases (gdbarch, &riscv_xreg_feature);
-  if (riscv_has_fp_regs (gdbarch))
-    riscv_setup_register_aliases (gdbarch, &riscv_freg_feature);
-  riscv_setup_register_aliases (gdbarch, &riscv_csr_feature);
+  /* Create register aliases for alternative register names.  We only
+     create aliases for registers which were mentioned in the target
+     description.  */
+  for (const auto &alias : pending_aliases)
+    alias.create (gdbarch);
 
   /* Compile command hooks.  */
   set_gdbarch_gcc_target_options (gdbarch, riscv_gcc_target_options);
@@ -3358,6 +3541,8 @@ riscv_gdbarch_init (struct gdbarch_info
   /* Hook in OS ABI-specific overrides, if they have been registered.  */
   gdbarch_init_osabi (info, gdbarch);
 
+  register_riscv_ravenscar_ops (gdbarch);
+
   return gdbarch;
 }
 
@@ -3508,8 +3693,9 @@ riscv_init_reggroups ()
   csr_reggroup = reggroup_new ("csr", USER_REGGROUP);
 }
 
+void _initialize_riscv_tdep ();
 void
-_initialize_riscv_tdep (void)
+_initialize_riscv_tdep ()
 {
   riscv_create_csr_aliases ();
   riscv_init_reggroups ();
@@ -3518,15 +3704,15 @@ _initialize_riscv_tdep (void)
 
   /* Add root prefix command for all "set debug riscv" and "show debug
      riscv" commands.  */
-  add_prefix_cmd ("riscv", no_class, set_debug_riscv_command,
-		  _("RISC-V specific debug commands."),
-		  &setdebugriscvcmdlist, "set debug riscv ", 0,
-		  &setdebuglist);
-
-  add_prefix_cmd ("riscv", no_class, show_debug_riscv_command,
-		  _("RISC-V specific debug commands."),
-		  &showdebugriscvcmdlist, "show debug riscv ", 0,
-		  &showdebuglist);
+  add_basic_prefix_cmd ("riscv", no_class,
+			_("RISC-V specific debug commands."),
+			&setdebugriscvcmdlist, "set debug riscv ", 0,
+			&setdebuglist);
+
+  add_show_prefix_cmd ("riscv", no_class,
+		       _("RISC-V specific debug commands."),
+		       &showdebugriscvcmdlist, "show debug riscv ", 0,
+		       &showdebuglist);
 
   add_setshow_zuinteger_cmd ("breakpoints", class_maintenance,
 			     &riscv_debug_breakpoints,  _("\
@@ -3569,13 +3755,13 @@ initialisation process."),
 			     &setdebugriscvcmdlist, &showdebugriscvcmdlist);
 
   /* Add root prefix command for all "set riscv" and "show riscv" commands.  */
-  add_prefix_cmd ("riscv", no_class, set_riscv_command,
-		  _("RISC-V specific commands."),
-		  &setriscvcmdlist, "set riscv ", 0, &setlist);
-
-  add_prefix_cmd ("riscv", no_class, show_riscv_command,
-		  _("RISC-V specific commands."),
-		  &showriscvcmdlist, "show riscv ", 0, &showlist);
+  add_basic_prefix_cmd ("riscv", no_class,
+			_("RISC-V specific commands."),
+			&setriscvcmdlist, "set riscv ", 0, &setlist);
+
+  add_show_prefix_cmd ("riscv", no_class,
+		       _("RISC-V specific commands."),
+		       &showriscvcmdlist, "show riscv ", 0, &showlist);
 
 
   use_compressed_breakpoints = AUTO_BOOLEAN_AUTO;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-tdep.h ./gdb/riscv-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/riscv-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/riscv-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Target-dependent header for the RISC-V architecture, for GDB, the
    GNU Debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -44,7 +44,7 @@ enum
   RISCV_LAST_FP_REGNUM = 64,	/* Last Floating Point Register */
 
   RISCV_FIRST_CSR_REGNUM = 65,  /* First CSR */
-#define DECLARE_CSR(name, num) \
+#define DECLARE_CSR(name, num, class, define_version, abort_version) \
   RISCV_ ## num ## _REGNUM = RISCV_FIRST_CSR_REGNUM + num,
 #include "opcode/riscv-opc.h"
 #undef DECLARE_CSR
@@ -79,6 +79,21 @@ struct gdbarch_tdep
 
   /* ISA-specific data types.  */
   struct type *riscv_fpreg_d_type = nullptr;
+
+  /* Use for tracking unknown CSRs in the target description.
+     UNKNOWN_CSRS_FIRST_REGNUM is the number assigned to the first unknown
+     CSR.  All other unknown CSRs will be assigned sequential numbers after
+     this, with UNKNOWN_CSRS_COUNT being the total number of unknown CSRs.  */
+  int unknown_csrs_first_regnum = -1;
+  int unknown_csrs_count = 0;
+
+  /* Some targets (QEMU) are reporting three registers twice in the target
+     description they send.  These three register numbers, when not set to
+     -1, are for the duplicate copies of these registers.  */
+  int duplicate_fflags_regnum = -1;
+  int duplicate_frm_regnum = -1;
+  int duplicate_fcsr_regnum = -1;
+
 };
 
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rl78-tdep.c ./gdb/rl78-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rl78-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rl78-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Renesas RL78 for GDB, the GNU debugger.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat, Inc.
 
@@ -32,7 +32,7 @@
 #include "frame-base.h"
 #include "value.h"
 #include "gdbcore.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "reggroups.h"
 
 #include "elf/rl78.h"
@@ -1048,8 +1048,8 @@ rl78_pointer_to_address (struct gdbarch
     = extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order);
 
   /* Is it a code address?  */
-  if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC
-      || TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_METHOD
+  if (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_FUNC
+      || TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_METHOD
       || TYPE_CODE_SPACE (TYPE_TARGET_TYPE (type))
       || TYPE_LENGTH (type) == 4)
     return rl78_make_instruction_address (addr);
@@ -1480,8 +1480,9 @@ rl78_gdbarch_init (struct gdbarch_info i
 
 /* Register the above initialization routine.  */
 
+void _initialize_rl78_tdep ();
 void
-_initialize_rl78_tdep (void)
+_initialize_rl78_tdep ()
 {
   register_gdbarch_init (bfd_arch_rl78, rl78_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-aix-tdep.c ./gdb/rs6000-aix-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-aix-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rs6000-aix-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native support code for PPC AIX, for GDB the GNU debugger.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    Free Software Foundation, Inc.
 
@@ -349,7 +349,7 @@ rs6000_push_dummy_call (struct gdbarch *
       type = check_typedef (value_type (arg));
       len = TYPE_LENGTH (type);
 
-      if (TYPE_CODE (type) == TYPE_CODE_FLT)
+      if (type->code () == TYPE_CODE_FLT)
 	{
 	  /* Floating point arguments are passed in fpr's, as well as gpr's.
 	     There are 13 fpr's reserved for passing parameters.  At this point
@@ -473,7 +473,7 @@ ran_out_of_registers_for_arguments:
 
 	  /* Float types should be passed in fpr's, as well as in the
              stack.  */
-	  if (TYPE_CODE (type) == TYPE_CODE_FLT && f_argno < 13)
+	  if (type->code () == TYPE_CODE_FLT && f_argno < 13)
 	    {
 
 	      gdb_assert (len <= 8);
@@ -527,7 +527,7 @@ rs6000_return_value (struct gdbarch *gdb
 
   /* AltiVec extension: Functions that declare a vector data type as a
      return value place that return value in VR2.  */
-  if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype)
+  if (valtype->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype)
       && TYPE_LENGTH (valtype) == 16)
     {
       if (readbuf)
@@ -543,16 +543,16 @@ rs6000_return_value (struct gdbarch *gdb
      allocated buffer into which the callee is assumed to store its
      return value.  All explicit parameters are appropriately
      relabeled.  */
-  if (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-      || TYPE_CODE (valtype) == TYPE_CODE_UNION
-      || TYPE_CODE (valtype) == TYPE_CODE_ARRAY)
+  if (valtype->code () == TYPE_CODE_STRUCT
+      || valtype->code () == TYPE_CODE_UNION
+      || valtype->code () == TYPE_CODE_ARRAY)
     return RETURN_VALUE_STRUCT_CONVENTION;
 
   /* Scalar floating-point values are returned in FPR1 for float or
      double, and in FPR1:FPR2 for quadword precision.  Fortran
      complex*8 and complex*16 are returned in FPR1:FPR2, and
      complex*32 is returned in FPR1:FPR4.  */
-  if (TYPE_CODE (valtype) == TYPE_CODE_FLT
+  if (valtype->code () == TYPE_CODE_FLT
       && (TYPE_LENGTH (valtype) == 4 || TYPE_LENGTH (valtype) == 8))
     {
       struct type *regtype = register_type (gdbarch, tdep->ppc_fp0_regnum);
@@ -608,7 +608,7 @@ rs6000_return_value (struct gdbarch *gdb
 
   if (TYPE_LENGTH (valtype) == 8)
     {
-      gdb_assert (TYPE_CODE (valtype) != TYPE_CODE_FLT);
+      gdb_assert (valtype->code () != TYPE_CODE_FLT);
       gdb_assert (tdep->wordsize == 4);
 
       if (readbuf)
@@ -1177,8 +1177,9 @@ rs6000_aix_init_osabi (struct gdbarch_in
   frame_unwind_append_unwinder (gdbarch, &aix_sighandle_frame_unwind);
 }
 
+void _initialize_rs6000_aix_tdep ();
 void
-_initialize_rs6000_aix_tdep (void)
+_initialize_rs6000_aix_tdep ()
 {
   gdbarch_register_osabi_sniffer (bfd_arch_rs6000,
                                   bfd_target_xcoff_flavour,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-aix-tdep.h ./gdb/rs6000-aix-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-aix-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rs6000-aix-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-lynx178-tdep.c ./gdb/rs6000-lynx178-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-lynx178-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rs6000-lynx178-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -96,7 +96,7 @@ rs6000_lynx178_push_dummy_call (struct g
       type = check_typedef (value_type (arg));
       len = TYPE_LENGTH (type);
 
-      if (TYPE_CODE (type) == TYPE_CODE_FLT)
+      if (type->code () == TYPE_CODE_FLT)
 	{
 
 	  /* Floating point arguments are passed in fpr's, as well as gpr's.
@@ -222,7 +222,7 @@ ran_out_of_registers_for_arguments:
 
 	  /* Float types should be passed in fpr's, as well as in the
              stack.  */
-	  if (TYPE_CODE (type) == TYPE_CODE_FLT && f_argno < 13)
+	  if (type->code () == TYPE_CODE_FLT && f_argno < 13)
 	    {
 
 	      gdb_assert (len <= 8);
@@ -274,7 +274,7 @@ rs6000_lynx178_return_value (struct gdba
 
   /* AltiVec extension: Functions that declare a vector data type as a
      return value place that return value in VR2.  */
-  if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype)
+  if (valtype->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype)
       && TYPE_LENGTH (valtype) == 16)
     {
       if (readbuf)
@@ -290,16 +290,16 @@ rs6000_lynx178_return_value (struct gdba
      allocated buffer into which the callee is assumed to store its
      return value.  All explicit parameters are appropriately
      relabeled.  */
-  if (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-      || TYPE_CODE (valtype) == TYPE_CODE_UNION
-      || TYPE_CODE (valtype) == TYPE_CODE_ARRAY)
+  if (valtype->code () == TYPE_CODE_STRUCT
+      || valtype->code () == TYPE_CODE_UNION
+      || valtype->code () == TYPE_CODE_ARRAY)
     return RETURN_VALUE_STRUCT_CONVENTION;
 
   /* Scalar floating-point values are returned in FPR1 for float or
      double, and in FPR1:FPR2 for quadword precision.  Fortran
      complex*8 and complex*16 are returned in FPR1:FPR2, and
      complex*32 is returned in FPR1:FPR4.  */
-  if (TYPE_CODE (valtype) == TYPE_CODE_FLT
+  if (valtype->code () == TYPE_CODE_FLT
       && (TYPE_LENGTH (valtype) == 4 || TYPE_LENGTH (valtype) == 8))
     {
       struct type *regtype = register_type (gdbarch, tdep->ppc_fp0_regnum);
@@ -355,7 +355,7 @@ rs6000_lynx178_return_value (struct gdba
 
   if (TYPE_LENGTH (valtype) == 8)
     {
-      gdb_assert (TYPE_CODE (valtype) != TYPE_CODE_FLT);
+      gdb_assert (valtype->code () != TYPE_CODE_FLT);
       gdb_assert (tdep->wordsize == 4);
 
       if (readbuf)
@@ -406,8 +406,9 @@ rs6000_lynx178_init_osabi (struct gdbarc
   set_gdbarch_long_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
 }
 
+void _initialize_rs6000_lynx178_tdep ();
 void
-_initialize_rs6000_lynx178_tdep (void)
+_initialize_rs6000_lynx178_tdep ()
 {
   gdbarch_register_osabi_sniffer (bfd_arch_rs6000,
                                   bfd_target_xcoff_flavour,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-nat.c ./gdb/rs6000-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rs6000-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* IBM RS/6000 native-dependent code for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -668,8 +668,9 @@ rs6000_nat_target::xfer_shared_libraries
     }
 }
 
+void _initialize_rs6000_nat ();
 void
-_initialize_rs6000_nat (void)
+_initialize_rs6000_nat ()
 {
   add_inf_child_target (&the_rs6000_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-tdep.c ./gdb/rs6000-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rs6000-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -37,7 +37,7 @@
 #include "sim-regno.h"
 #include "gdb/sim-ppc.h"
 #include "reggroups.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "target-descriptions.h"
 #include "user-regs.h"
 #include "record-full.h"
@@ -855,7 +855,7 @@ typedef buf_displaced_step_closure ppc_d
 
 /* We can't displaced step atomic sequences.  */
 
-static struct displaced_step_closure *
+static displaced_step_closure_up
 ppc_displaced_step_copy_insn (struct gdbarch *gdbarch,
 			      CORE_ADDR from, CORE_ADDR to,
 			      struct regcache *regs)
@@ -894,7 +894,8 @@ ppc_displaced_step_copy_insn (struct gdb
       displaced_step_dump_bytes (gdb_stdlog, buf, len);
     }
 
-  return closure.release ();
+  /* This is a work around for a problem with g++ 4.8.  */
+  return displaced_step_closure_up (closure.release ());
 }
 
 /* Fix up the state of registers and memory after having single-stepped
@@ -2273,7 +2274,7 @@ rs6000_builtin_type_vec64 (struct gdbarc
 				   init_vector_type (bt->builtin_int8, 8));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "ppc_builtin_type_vec64";
+      t->set_name ("ppc_builtin_type_vec64");
       tdep->ppc_builtin_type_vec64 = t;
     }
 
@@ -2320,7 +2321,7 @@ rs6000_builtin_type_vec128 (struct gdbar
 				   init_vector_type (bt->builtin_int8, 16));
 
       TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "ppc_builtin_type_vec128";
+      t->set_name ("ppc_builtin_type_vec128");
       tdep->ppc_builtin_type_vec128 = t;
     }
 
@@ -2530,7 +2531,7 @@ rs6000_convert_register_p (struct gdbarc
   return (tdep->ppc_fp0_regnum >= 0
 	  && regnum >= tdep->ppc_fp0_regnum
 	  && regnum < tdep->ppc_fp0_regnum + ppc_num_fprs
-	  && TYPE_CODE (type) == TYPE_CODE_FLT
+	  && type->code () == TYPE_CODE_FLT
 	  && TYPE_LENGTH (type)
 	     != TYPE_LENGTH (builtin_type (gdbarch)->builtin_double));
 }
@@ -2545,7 +2546,7 @@ rs6000_register_to_value (struct frame_i
   struct gdbarch *gdbarch = get_frame_arch (frame);
   gdb_byte from[PPC_MAX_REGISTER_SIZE];
   
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
+  gdb_assert (type->code () == TYPE_CODE_FLT);
 
   if (!get_frame_register_bytes (frame, regnum, 0,
 				 register_size (gdbarch, regnum),
@@ -2567,7 +2568,7 @@ rs6000_value_to_register (struct frame_i
   struct gdbarch *gdbarch = get_frame_arch (frame);
   gdb_byte to[PPC_MAX_REGISTER_SIZE];
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
+  gdb_assert (type->code () == TYPE_CODE_FLT);
 
   target_float_convert (from, type,
 			to, builtin_type (gdbarch)->builtin_double);
@@ -3314,7 +3315,7 @@ rs6000_adjust_frame_regnum (struct gdbar
 
 /* Information about a particular processor variant.  */
 
-struct variant
+struct ppc_variant
   {
     /* Name of this variant.  */
     const char *name;
@@ -3332,7 +3333,7 @@ struct variant
     struct target_desc **tdesc;
   };
 
-static struct variant variants[] =
+static struct ppc_variant variants[] =
 {
   {"powerpc", "PowerPC user-level", bfd_arch_powerpc,
    bfd_mach_ppc, &tdesc_powerpc_altivec32},
@@ -3391,10 +3392,10 @@ static struct variant variants[] =
 /* Return the variant corresponding to architecture ARCH and machine number
    MACH.  If no such variant exists, return null.  */
 
-static const struct variant *
+static const struct ppc_variant *
 find_variant_by_arch (enum bfd_architecture arch, unsigned long mach)
 {
-  const struct variant *v;
+  const struct ppc_variant *v;
 
   for (v = variants; v->name; v++)
     if (arch == v->arch && mach == v->mach)
@@ -6198,7 +6199,7 @@ rs6000_gdbarch_init (struct gdbarch_info
      layout, if we do not already have one.  */
   if (! tdesc_has_registers (tdesc))
     {
-      const struct variant *v;
+      const struct ppc_variant *v;
 
       /* Choose variant.  */
       v = find_variant_by_arch (arch, mach);
@@ -7171,22 +7172,6 @@ rs6000_dump_tdep (struct gdbarch *gdbarc
   /* FIXME: Dump gdbarch_tdep.  */
 }
 
-/* PowerPC-specific commands.  */
-
-static void
-set_powerpc_command (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\
-\"set powerpc\" must be followed by an appropriate subcommand.\n"));
-  help_list (setpowerpccmdlist, "set powerpc ", all_commands, gdb_stdout);
-}
-
-static void
-show_powerpc_command (const char *args, int from_tty)
-{
-  cmd_show_list (showpowerpccmdlist, from_tty, "");
-}
-
 static void
 powerpc_set_soft_float (const char *args, int from_tty,
 			struct cmd_list_element *c)
@@ -7307,8 +7292,9 @@ ppc_insn_ds_field (unsigned int insn)
 
 /* Initialization code.  */
 
+void _initialize_rs6000_tdep ();
 void
-_initialize_rs6000_tdep (void)
+_initialize_rs6000_tdep ()
 {
   gdbarch_register (bfd_arch_rs6000, rs6000_gdbarch_init, rs6000_dump_tdep);
   gdbarch_register (bfd_arch_powerpc, rs6000_gdbarch_init, rs6000_dump_tdep);
@@ -7336,13 +7322,13 @@ _initialize_rs6000_tdep (void)
 
   /* Add root prefix command for all "set powerpc"/"show powerpc"
      commands.  */
-  add_prefix_cmd ("powerpc", no_class, set_powerpc_command,
-		  _("Various PowerPC-specific commands."),
-		  &setpowerpccmdlist, "set powerpc ", 0, &setlist);
-
-  add_prefix_cmd ("powerpc", no_class, show_powerpc_command,
-		  _("Various PowerPC-specific commands."),
-		  &showpowerpccmdlist, "show powerpc ", 0, &showlist);
+  add_basic_prefix_cmd ("powerpc", no_class,
+			_("Various PowerPC-specific commands."),
+			&setpowerpccmdlist, "set powerpc ", 0, &setlist);
+
+  add_show_prefix_cmd ("powerpc", no_class,
+		       _("Various PowerPC-specific commands."),
+		       &showpowerpccmdlist, "show powerpc ", 0, &showlist);
 
   /* Add a command to allow the user to force the ABI.  */
   add_setshow_auto_boolean_cmd ("soft-float", class_support,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-tdep.h ./gdb/rs6000-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rs6000-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rs6000-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/run-on-main-thread.c ./gdb/run-on-main-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/run-on-main-thread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/run-on-main-thread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Run a function on the main thread
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,7 +22,7 @@
 #if CXX_STD_THREAD
 #include <mutex>
 #endif
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 
 /* The serial event used when posting runnables.  */
 
@@ -89,6 +89,7 @@ run_on_main_thread (std::function<void (
   serial_event_set (runnable_event);
 }
 
+void _initialize_run_on_main_thread ();
 void
 _initialize_run_on_main_thread ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/run-on-main-thread.h ./gdb/run-on-main-thread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/run-on-main-thread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/run-on-main-thread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Run a function on the main thread
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rust-exp.c ./gdb/rust-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rust-exp.c	2020-03-07 02:11:13.000000000 +0000
+++ ./gdb/rust-exp.c	2021-05-21 02:00:06.000000000 +0000
@@ -1,21 +1,20 @@
+/* A Bison parser, made by GNU Bison 3.6.4.  */
 
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* Bison implementation for Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   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/>.  */
 
@@ -28,13 +27,17 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
 
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+   especially those whose name start with YY_ or yy_.  They are
+   private implementation details that can be changed or removed.  */
+
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -46,7 +49,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.6.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,14 +63,10 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 
 
-/* Copy the first part of user declarations.  */
-
-/* Line 189 of yacc.c  */
+/* First part of user prologue.  */
 #line 30 "rust-exp.y"
 
 
@@ -120,71 +119,87 @@ struct set_field
 typedef std::vector<set_field> rust_set_vector;
 
 
+#line 123 "rust-exp.c.tmp"
+
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTRPTR nullptr
+#   else
+#    define YY_NULLPTRPTR 0
+#   endif
+#  else
+#   define YY_NULLPTRPTR ((void*)0)
+#  endif
+# endif
 
-/* Line 189 of yacc.c  */
-#line 126 "rust-exp.c.tmp"
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+#if YYDEBUG
+extern int yydebug;
 #endif
 
-
-/* Tokens.  */
+/* Token kinds.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     GDBVAR = 258,
-     IDENT = 259,
-     COMPLETE = 260,
-     INTEGER = 261,
-     DECIMAL_INTEGER = 262,
-     STRING = 263,
-     BYTESTRING = 264,
-     FLOAT = 265,
-     COMPOUND_ASSIGN = 266,
-     KW_AS = 267,
-     KW_IF = 268,
-     KW_TRUE = 269,
-     KW_FALSE = 270,
-     KW_SUPER = 271,
-     KW_SELF = 272,
-     KW_MUT = 273,
-     KW_EXTERN = 274,
-     KW_CONST = 275,
-     KW_FN = 276,
-     KW_SIZEOF = 277,
-     DOTDOT = 278,
-     DOTDOTEQ = 279,
-     OROR = 280,
-     ANDAND = 281,
-     EQEQ = 282,
-     NOTEQ = 283,
-     LTEQ = 284,
-     GTEQ = 285,
-     LSH = 286,
-     RSH = 287,
-     COLONCOLON = 288,
-     ARROW = 289,
-     UNARY = 290
-   };
-#endif
-/* Tokens.  */
+  enum yytokentype
+  {
+    YYEMPTY = -2,
+    YYEOF = 0,                     /* "end of file"  */
+    YYerror = 256,                 /* error  */
+    YYUNDEF = 257,                 /* "invalid token"  */
+    GDBVAR = 258,                  /* GDBVAR  */
+    IDENT = 259,                   /* IDENT  */
+    COMPLETE = 260,                /* COMPLETE  */
+    INTEGER = 261,                 /* INTEGER  */
+    DECIMAL_INTEGER = 262,         /* DECIMAL_INTEGER  */
+    STRING = 263,                  /* STRING  */
+    BYTESTRING = 264,              /* BYTESTRING  */
+    FLOAT = 265,                   /* FLOAT  */
+    COMPOUND_ASSIGN = 266,         /* COMPOUND_ASSIGN  */
+    KW_AS = 267,                   /* KW_AS  */
+    KW_IF = 268,                   /* KW_IF  */
+    KW_TRUE = 269,                 /* KW_TRUE  */
+    KW_FALSE = 270,                /* KW_FALSE  */
+    KW_SUPER = 271,                /* KW_SUPER  */
+    KW_SELF = 272,                 /* KW_SELF  */
+    KW_MUT = 273,                  /* KW_MUT  */
+    KW_EXTERN = 274,               /* KW_EXTERN  */
+    KW_CONST = 275,                /* KW_CONST  */
+    KW_FN = 276,                   /* KW_FN  */
+    KW_SIZEOF = 277,               /* KW_SIZEOF  */
+    DOTDOT = 278,                  /* DOTDOT  */
+    DOTDOTEQ = 279,                /* DOTDOTEQ  */
+    OROR = 280,                    /* OROR  */
+    ANDAND = 281,                  /* ANDAND  */
+    EQEQ = 282,                    /* EQEQ  */
+    NOTEQ = 283,                   /* NOTEQ  */
+    LTEQ = 284,                    /* LTEQ  */
+    GTEQ = 285,                    /* GTEQ  */
+    LSH = 286,                     /* LSH  */
+    RSH = 287,                     /* RSH  */
+    COLONCOLON = 288,              /* COLONCOLON  */
+    ARROW = 289,                   /* ARROW  */
+    UNARY = 290                    /* UNARY  */
+  };
+  typedef enum yytokentype yytoken_kind_t;
+#endif
+/* Token kinds.  */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
 #define GDBVAR 258
 #define IDENT 259
 #define COMPLETE 260
@@ -219,14 +234,10 @@ typedef std::vector<set_field> rust_set_
 #define ARROW 289
 #define UNARY 290
 
-
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
 #line 83 "rust-exp.y"
 
   /* A typed integer constant.  */
@@ -258,20 +269,122 @@ typedef union YYSTYPE
      "super::" prefixes on a path.  */
   unsigned int depth;
 
+#line 273 "rust-exp.c.tmp"
 
-
-/* Line 214 of yacc.c  */
-#line 265 "rust-exp.c.tmp"
-} YYSTYPE;
+};
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
 
-/* Line 264 of yacc.c  */
+int yyparse (struct rust_parser *parser);
+
+
+/* Symbol kind.  */
+enum yysymbol_kind_t
+{
+  YYSYMBOL_YYEMPTY = -2,
+  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
+  YYSYMBOL_YYerror = 1,                    /* error  */
+  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
+  YYSYMBOL_GDBVAR = 3,                     /* GDBVAR  */
+  YYSYMBOL_IDENT = 4,                      /* IDENT  */
+  YYSYMBOL_COMPLETE = 5,                   /* COMPLETE  */
+  YYSYMBOL_INTEGER = 6,                    /* INTEGER  */
+  YYSYMBOL_DECIMAL_INTEGER = 7,            /* DECIMAL_INTEGER  */
+  YYSYMBOL_STRING = 8,                     /* STRING  */
+  YYSYMBOL_BYTESTRING = 9,                 /* BYTESTRING  */
+  YYSYMBOL_FLOAT = 10,                     /* FLOAT  */
+  YYSYMBOL_COMPOUND_ASSIGN = 11,           /* COMPOUND_ASSIGN  */
+  YYSYMBOL_KW_AS = 12,                     /* KW_AS  */
+  YYSYMBOL_KW_IF = 13,                     /* KW_IF  */
+  YYSYMBOL_KW_TRUE = 14,                   /* KW_TRUE  */
+  YYSYMBOL_KW_FALSE = 15,                  /* KW_FALSE  */
+  YYSYMBOL_KW_SUPER = 16,                  /* KW_SUPER  */
+  YYSYMBOL_KW_SELF = 17,                   /* KW_SELF  */
+  YYSYMBOL_KW_MUT = 18,                    /* KW_MUT  */
+  YYSYMBOL_KW_EXTERN = 19,                 /* KW_EXTERN  */
+  YYSYMBOL_KW_CONST = 20,                  /* KW_CONST  */
+  YYSYMBOL_KW_FN = 21,                     /* KW_FN  */
+  YYSYMBOL_KW_SIZEOF = 22,                 /* KW_SIZEOF  */
+  YYSYMBOL_DOTDOT = 23,                    /* DOTDOT  */
+  YYSYMBOL_DOTDOTEQ = 24,                  /* DOTDOTEQ  */
+  YYSYMBOL_OROR = 25,                      /* OROR  */
+  YYSYMBOL_ANDAND = 26,                    /* ANDAND  */
+  YYSYMBOL_EQEQ = 27,                      /* EQEQ  */
+  YYSYMBOL_NOTEQ = 28,                     /* NOTEQ  */
+  YYSYMBOL_LTEQ = 29,                      /* LTEQ  */
+  YYSYMBOL_GTEQ = 30,                      /* GTEQ  */
+  YYSYMBOL_LSH = 31,                       /* LSH  */
+  YYSYMBOL_RSH = 32,                       /* RSH  */
+  YYSYMBOL_COLONCOLON = 33,                /* COLONCOLON  */
+  YYSYMBOL_ARROW = 34,                     /* ARROW  */
+  YYSYMBOL_35_ = 35,                       /* '='  */
+  YYSYMBOL_36_ = 36,                       /* '<'  */
+  YYSYMBOL_37_ = 37,                       /* '>'  */
+  YYSYMBOL_38_ = 38,                       /* '|'  */
+  YYSYMBOL_39_ = 39,                       /* '^'  */
+  YYSYMBOL_40_ = 40,                       /* '&'  */
+  YYSYMBOL_41_ = 41,                       /* '@'  */
+  YYSYMBOL_42_ = 42,                       /* '+'  */
+  YYSYMBOL_43_ = 43,                       /* '-'  */
+  YYSYMBOL_44_ = 44,                       /* '*'  */
+  YYSYMBOL_45_ = 45,                       /* '/'  */
+  YYSYMBOL_46_ = 46,                       /* '%'  */
+  YYSYMBOL_UNARY = 47,                     /* UNARY  */
+  YYSYMBOL_48_ = 48,                       /* '['  */
+  YYSYMBOL_49_ = 49,                       /* '.'  */
+  YYSYMBOL_50_ = 50,                       /* '('  */
+  YYSYMBOL_51_ = 51,                       /* ','  */
+  YYSYMBOL_52_ = 52,                       /* ')'  */
+  YYSYMBOL_53_ = 53,                       /* '{'  */
+  YYSYMBOL_54_ = 54,                       /* '}'  */
+  YYSYMBOL_55_ = 55,                       /* ':'  */
+  YYSYMBOL_56_ = 56,                       /* ']'  */
+  YYSYMBOL_57_ = 57,                       /* ';'  */
+  YYSYMBOL_58_ = 58,                       /* '!'  */
+  YYSYMBOL_YYACCEPT = 59,                  /* $accept  */
+  YYSYMBOL_start = 60,                     /* start  */
+  YYSYMBOL_expr = 61,                      /* expr  */
+  YYSYMBOL_tuple_expr = 62,                /* tuple_expr  */
+  YYSYMBOL_unit_expr = 63,                 /* unit_expr  */
+  YYSYMBOL_struct_expr = 64,               /* struct_expr  */
+  YYSYMBOL_struct_expr_tail = 65,          /* struct_expr_tail  */
+  YYSYMBOL_struct_expr_list = 66,          /* struct_expr_list  */
+  YYSYMBOL_array_expr = 67,                /* array_expr  */
+  YYSYMBOL_range_expr = 68,                /* range_expr  */
+  YYSYMBOL_literal = 69,                   /* literal  */
+  YYSYMBOL_field_expr = 70,                /* field_expr  */
+  YYSYMBOL_idx_expr = 71,                  /* idx_expr  */
+  YYSYMBOL_unop_expr = 72,                 /* unop_expr  */
+  YYSYMBOL_binop_expr = 73,                /* binop_expr  */
+  YYSYMBOL_binop_expr_expr = 74,           /* binop_expr_expr  */
+  YYSYMBOL_type_cast_expr = 75,            /* type_cast_expr  */
+  YYSYMBOL_assignment_expr = 76,           /* assignment_expr  */
+  YYSYMBOL_compound_assignment_expr = 77,  /* compound_assignment_expr  */
+  YYSYMBOL_paren_expr = 78,                /* paren_expr  */
+  YYSYMBOL_expr_list = 79,                 /* expr_list  */
+  YYSYMBOL_maybe_expr_list = 80,           /* maybe_expr_list  */
+  YYSYMBOL_paren_expr_list = 81,           /* paren_expr_list  */
+  YYSYMBOL_call_expr = 82,                 /* call_expr  */
+  YYSYMBOL_maybe_self_path = 83,           /* maybe_self_path  */
+  YYSYMBOL_super_path = 84,                /* super_path  */
+  YYSYMBOL_path_expr = 85,                 /* path_expr  */
+  YYSYMBOL_path_for_expr = 86,             /* path_for_expr  */
+  YYSYMBOL_identifier_path_for_expr = 87,  /* identifier_path_for_expr  */
+  YYSYMBOL_path_for_type = 88,             /* path_for_type  */
+  YYSYMBOL_just_identifiers_for_type = 89, /* just_identifiers_for_type  */
+  YYSYMBOL_identifier_path_for_type = 90,  /* identifier_path_for_type  */
+  YYSYMBOL_type = 91,                      /* type  */
+  YYSYMBOL_maybe_type_list = 92,           /* maybe_type_list  */
+  YYSYMBOL_type_list = 93                  /* type_list  */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
+
+/* Second part of user prologue.  */
 #line 114 "rust-exp.y"
 
 
@@ -501,39 +614,82 @@ struct rust_op
 };
 
 
+#line 618 "rust-exp.c.tmp"
 
-/* Line 264 of yacc.c  */
-#line 507 "rust-exp.c.tmp"
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
+#else
 typedef signed char yytype_int8;
+#endif
+
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
 #else
-typedef short int yytype_int8;
+typedef short yytype_int16;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef unsigned short int yytype_uint16;
+typedef short yytype_uint8;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
 #else
-typedef short int yytype_int16;
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -541,55 +697,100 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_uint8 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
+    _Pragma ("GCC diagnostic pop")
 #else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
 #endif
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if !defined yyoverflow
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
 
@@ -605,11 +806,11 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -617,8 +818,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -632,88 +833,89 @@ YYID (yyi)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined xmalloc) \
-	     && (defined YYFREE || defined xfree)))
+             && (defined YYFREE || defined xfree)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC xmalloc
-#   if ! defined xmalloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xmalloc && ! defined EXIT_SUCCESS
 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE xfree
-#   if ! defined xfree && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined xfree && ! defined EXIT_SUCCESS
 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYPTRDIFF_T yynewbytes;                                         \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
+      }                                                                 \
+    while (0)
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYPTRDIFF_T yyi;                      \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  62
 /* YYLAST -- Last index in YYTABLE.  */
@@ -725,18 +927,22 @@ union yyalloc
 #define YYNNTS  35
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  125
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  219
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
 #define YYMAXUTOK   290
 
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
+#define YYTRANSLATE(YYX)                                \
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
+   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
+   : YYSYMBOL_YYUNDEF)
+
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex.  */
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -771,74 +977,8 @@ static const yytype_uint8 yytranslate[]
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
-      19,    21,    23,    25,    27,    29,    31,    37,    40,    45,
-      48,    52,    54,    55,    57,    63,    67,    72,    76,    83,
-      89,    92,    96,   100,   103,   106,   108,   110,   112,   114,
-     116,   118,   120,   122,   126,   130,   134,   139,   142,   145,
-     148,   151,   154,   158,   163,   165,   167,   169,   171,   175,
-     179,   183,   187,   191,   195,   199,   203,   207,   211,   215,
-     219,   223,   227,   231,   235,   239,   243,   247,   251,   255,
-     259,   263,   265,   269,   270,   272,   276,   279,   280,   283,
-     286,   290,   292,   294,   296,   298,   302,   306,   309,   312,
-     314,   318,   324,   330,   332,   336,   340,   343,   346,   348,
-     352,   354,   359,   364,   366,   372,   378,   383,   386,   390,
-     394,   401,   405,   406,   408,   410
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      60,     0,    -1,    61,    -1,    69,    -1,    85,    -1,    62,
-      -1,    63,    -1,    64,    -1,    70,    -1,    67,    -1,    71,
-      -1,    68,    -1,    72,    -1,    73,    -1,    78,    -1,    82,
-      -1,    50,    61,    51,    80,    52,    -1,    50,    52,    -1,
-      86,    53,    66,    54,    -1,    23,    61,    -1,     4,    55,
-      61,    -1,     4,    -1,    -1,    65,    -1,     4,    55,    61,
-      51,    66,    -1,     4,    51,    66,    -1,    48,    18,    79,
-      56,    -1,    48,    79,    56,    -1,    48,    18,    61,    57,
-      61,    56,    -1,    48,    61,    57,    61,    56,    -1,    61,
-      23,    -1,    61,    23,    61,    -1,    61,    24,    61,    -1,
-      23,    61,    -1,    24,    61,    -1,    23,    -1,     6,    -1,
-       7,    -1,    10,    -1,     8,    -1,     9,    -1,    14,    -1,
-      15,    -1,    61,    49,     4,    -1,    61,    49,     5,    -1,
-      61,    49,     7,    -1,    61,    48,    61,    56,    -1,    42,
-      61,    -1,    43,    61,    -1,    58,    61,    -1,    44,    61,
-      -1,    40,    61,    -1,    40,    18,    61,    -1,    22,    50,
-      61,    52,    -1,    74,    -1,    75,    -1,    76,    -1,    77,
-      -1,    61,    44,    61,    -1,    61,    41,    61,    -1,    61,
-      45,    61,    -1,    61,    46,    61,    -1,    61,    36,    61,
-      -1,    61,    37,    61,    -1,    61,    40,    61,    -1,    61,
-      38,    61,    -1,    61,    39,    61,    -1,    61,    42,    61,
-      -1,    61,    43,    61,    -1,    61,    25,    61,    -1,    61,
-      26,    61,    -1,    61,    27,    61,    -1,    61,    28,    61,
-      -1,    61,    29,    61,    -1,    61,    30,    61,    -1,    61,
-      31,    61,    -1,    61,    32,    61,    -1,    61,    12,    91,
-      -1,    61,    35,    61,    -1,    61,    11,    61,    -1,    50,
-      61,    52,    -1,    61,    -1,    79,    51,    61,    -1,    -1,
-      79,    -1,    50,    80,    52,    -1,    61,    81,    -1,    -1,
-      17,    33,    -1,    16,    33,    -1,    84,    16,    33,    -1,
-      86,    -1,     3,    -1,    17,    -1,    87,    -1,    17,    33,
-      87,    -1,    83,    84,    87,    -1,    33,    87,    -1,    19,
-      87,    -1,     4,    -1,    87,    33,     4,    -1,    87,    33,
-      36,    93,    37,    -1,    87,    33,    36,    93,    32,    -1,
-      90,    -1,    17,    33,    90,    -1,    83,    84,    90,    -1,
-      33,    90,    -1,    19,    90,    -1,     4,    -1,    89,    33,
-       4,    -1,    89,    -1,    89,    36,    93,    37,    -1,    89,
-      36,    93,    32,    -1,    88,    -1,    48,    91,    57,     6,
-      56,    -1,    48,    91,    57,     7,    56,    -1,    40,    48,
-      91,    56,    -1,    40,    91,    -1,    44,    18,    91,    -1,
-      44,    20,    91,    -1,    21,    50,    92,    52,    34,    91,
-      -1,    50,    92,    52,    -1,    -1,    93,    -1,    91,    -1,
-      93,    51,    91,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+static const yytype_int16 yyrline[] =
 {
        0,   439,   439,   452,   453,   454,   455,   456,   457,   458,
      459,   460,   461,   463,   464,   465,   469,   477,   494,   499,
@@ -856,35 +996,48 @@ static const yytype_uint16 yyrline[] =
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/** Accessing symbol of state STATE.  */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+   YYSYMBOL.  No bounds checking.  */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "GDBVAR", "IDENT", "COMPLETE", "INTEGER",
-  "DECIMAL_INTEGER", "STRING", "BYTESTRING", "FLOAT", "COMPOUND_ASSIGN",
-  "KW_AS", "KW_IF", "KW_TRUE", "KW_FALSE", "KW_SUPER", "KW_SELF", "KW_MUT",
-  "KW_EXTERN", "KW_CONST", "KW_FN", "KW_SIZEOF", "DOTDOT", "DOTDOTEQ",
-  "OROR", "ANDAND", "EQEQ", "NOTEQ", "LTEQ", "GTEQ", "LSH", "RSH",
-  "COLONCOLON", "ARROW", "'='", "'<'", "'>'", "'|'", "'^'", "'&'", "'@'",
-  "'+'", "'-'", "'*'", "'/'", "'%'", "UNARY", "'['", "'.'", "'('", "','",
-  "')'", "'{'", "'}'", "':'", "']'", "';'", "'!'", "$accept", "start",
-  "expr", "tuple_expr", "unit_expr", "struct_expr", "struct_expr_tail",
-  "struct_expr_list", "array_expr", "range_expr", "literal", "field_expr",
-  "idx_expr", "unop_expr", "binop_expr", "binop_expr_expr",
-  "type_cast_expr", "assignment_expr", "compound_assignment_expr",
-  "paren_expr", "expr_list", "maybe_expr_list", "paren_expr_list",
-  "call_expr", "maybe_self_path", "super_path", "path_expr",
-  "path_for_expr", "identifier_path_for_expr", "path_for_type",
-  "just_identifiers_for_type", "identifier_path_for_type", "type",
-  "maybe_type_list", "type_list", 0
+  "\"end of file\"", "error", "\"invalid token\"", "GDBVAR", "IDENT",
+  "COMPLETE", "INTEGER", "DECIMAL_INTEGER", "STRING", "BYTESTRING",
+  "FLOAT", "COMPOUND_ASSIGN", "KW_AS", "KW_IF", "KW_TRUE", "KW_FALSE",
+  "KW_SUPER", "KW_SELF", "KW_MUT", "KW_EXTERN", "KW_CONST", "KW_FN",
+  "KW_SIZEOF", "DOTDOT", "DOTDOTEQ", "OROR", "ANDAND", "EQEQ", "NOTEQ",
+  "LTEQ", "GTEQ", "LSH", "RSH", "COLONCOLON", "ARROW", "'='", "'<'", "'>'",
+  "'|'", "'^'", "'&'", "'@'", "'+'", "'-'", "'*'", "'/'", "'%'", "UNARY",
+  "'['", "'.'", "'('", "','", "')'", "'{'", "'}'", "':'", "']'", "';'",
+  "'!'", "$accept", "start", "expr", "tuple_expr", "unit_expr",
+  "struct_expr", "struct_expr_tail", "struct_expr_list", "array_expr",
+  "range_expr", "literal", "field_expr", "idx_expr", "unop_expr",
+  "binop_expr", "binop_expr_expr", "type_cast_expr", "assignment_expr",
+  "compound_assignment_expr", "paren_expr", "expr_list", "maybe_expr_list",
+  "paren_expr_list", "call_expr", "maybe_self_path", "super_path",
+  "path_expr", "path_for_expr", "identifier_path_for_expr",
+  "path_for_type", "just_identifiers_for_type", "identifier_path_for_type",
+  "type", "maybe_type_list", "type_list", YY_NULLPTRPTR
 };
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+  return yytname[yysymbol];
+}
 #endif
 
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+#ifdef YYPRINT
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
@@ -893,85 +1046,20 @@ static const yytype_uint16 yytoknum[] =
       38,    64,    43,    45,    42,    47,    37,   290,    91,    46,
       40,    44,    41,   123,   125,    58,    93,    59,    33
 };
-# endif
+#endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    59,    60,    61,    61,    61,    61,    61,    61,    61,
-      61,    61,    61,    61,    61,    61,    62,    63,    64,    65,
-      65,    65,    66,    66,    66,    66,    67,    67,    67,    67,
-      68,    68,    68,    68,    68,    68,    69,    69,    69,    69,
-      69,    69,    69,    70,    70,    70,    71,    72,    72,    72,
-      72,    72,    72,    72,    73,    73,    73,    73,    74,    74,
-      74,    74,    74,    74,    74,    74,    74,    74,    74,    74,
-      74,    74,    74,    74,    74,    74,    74,    75,    76,    77,
-      78,    79,    79,    80,    80,    81,    82,    83,    83,    84,
-      84,    85,    85,    85,    86,    86,    86,    86,    86,    87,
-      87,    87,    87,    88,    88,    88,    88,    88,    89,    89,
-      90,    90,    90,    91,    91,    91,    91,    91,    91,    91,
-      91,    91,    92,    92,    93,    93
-};
+#define YYPACT_NINF (-181)
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     5,     2,     4,     2,
-       3,     1,     0,     1,     5,     3,     4,     3,     6,     5,
-       2,     3,     3,     2,     2,     1,     1,     1,     1,     1,
-       1,     1,     1,     3,     3,     3,     4,     2,     2,     2,
-       2,     2,     3,     4,     1,     1,     1,     1,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     1,     3,     0,     1,     3,     2,     0,     2,     2,
-       3,     1,     1,     1,     1,     3,     3,     2,     2,     1,
-       3,     5,     5,     1,     3,     3,     2,     2,     1,     3,
-       1,     4,     4,     1,     5,     5,     4,     2,     3,     3,
-       6,     3,     0,     1,     1,     3
-};
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint8 yydefact[] =
-{
-      87,    92,    99,    36,    37,    39,    40,    38,    41,    42,
-      93,     0,     0,    35,    87,     0,    87,    87,    87,    87,
-      87,    87,    87,     0,     2,     5,     6,     7,     9,    11,
-       3,     8,    10,    12,    13,    54,    55,    56,    57,    14,
-      15,     0,     4,    91,    94,    88,    98,    87,    33,    34,
-      97,    87,    51,    47,    48,    50,    87,    81,     0,    17,
-       0,    49,     1,    87,    87,    30,    87,    87,    87,    87,
-      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
-      87,    87,    87,    87,    87,    87,    87,    87,     0,    83,
-      86,     0,     0,    22,     0,    95,     0,    52,    81,     0,
-      87,    87,    27,    83,    80,    79,   108,     0,     0,     0,
-       0,    87,     0,    87,    87,     0,   113,   110,   103,    77,
-      31,    32,    69,    70,    71,    72,    73,    74,    75,    76,
-      78,    62,    63,    65,    66,    64,    59,    67,    68,    58,
-      60,    61,     0,    43,    44,    45,    81,    84,     0,    89,
-       0,    96,    21,    87,    23,     0,   100,    87,    53,    87,
-      26,     0,    82,     0,    88,   107,    87,   106,    87,   117,
-      87,    87,     0,   124,     0,   123,     0,     0,    87,    46,
-      85,    90,    22,    87,    19,    18,     0,     0,    29,    16,
-     104,     0,     0,   118,   119,     0,   121,    87,   105,   109,
-       0,    25,    20,   102,   101,    28,     0,   116,     0,     0,
-     125,   112,   111,    22,    87,   114,   115,    24,   120
-};
+#define YYTABLE_NINF (-123)
 
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,    23,   146,    25,    26,    27,   154,   155,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-     147,   148,    90,    40,    41,    92,    42,    43,    44,   116,
-     117,   118,   173,   174,   175
-};
+#define yytable_value_is_error(Yyn) \
+  ((Yyn) == YYTABLE_NINF)
 
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -181
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
      423,  -181,  -181,  -181,  -181,  -181,  -181,  -181,  -181,  -181,
@@ -998,7 +1086,36 @@ static const yytype_int16 yypact[] =
     -181,  -181,  -181,     5,   546,  -181,  -181,  -181,  -181
 };
 
-/* YYPGOTO[NTERM-NUM].  */
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_int8 yydefact[] =
+{
+      87,    92,    99,    36,    37,    39,    40,    38,    41,    42,
+      93,     0,     0,    35,    87,     0,    87,    87,    87,    87,
+      87,    87,    87,     0,     2,     5,     6,     7,     9,    11,
+       3,     8,    10,    12,    13,    54,    55,    56,    57,    14,
+      15,     0,     4,    91,    94,    88,    98,    87,    33,    34,
+      97,    87,    51,    47,    48,    50,    87,    81,     0,    17,
+       0,    49,     1,    87,    87,    30,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
+      87,    87,    87,    87,    87,    87,    87,    87,     0,    83,
+      86,     0,     0,    22,     0,    95,     0,    52,    81,     0,
+      87,    87,    27,    83,    80,    79,   108,     0,     0,     0,
+       0,    87,     0,    87,    87,     0,   113,   110,   103,    77,
+      31,    32,    69,    70,    71,    72,    73,    74,    75,    76,
+      78,    62,    63,    65,    66,    64,    59,    67,    68,    58,
+      60,    61,     0,    43,    44,    45,    81,    84,     0,    89,
+       0,    96,    21,    87,    23,     0,   100,    87,    53,    87,
+      26,     0,    82,     0,    88,   107,    87,   106,    87,   117,
+      87,    87,     0,   124,     0,   123,     0,     0,    87,    46,
+      85,    90,    22,    87,    19,    18,     0,     0,    29,    16,
+     104,     0,     0,   118,   119,     0,   121,    87,   105,   109,
+       0,    25,    20,   102,   101,    28,     0,   116,     0,     0,
+     125,   112,   111,    22,    87,   114,   115,    24,   120
+};
+
+  /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
     -181,  -181,     0,  -181,  -181,  -181,  -181,  -180,  -181,  -181,
@@ -1007,11 +1124,18 @@ static const yytype_int16 yypgoto[] =
     -181,   -74,   -54,    18,  -153
 };
 
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -123
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+      -1,    23,   146,    25,    26,    27,   154,   155,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+     147,   148,    90,    40,    41,    92,    42,    43,    44,   116,
+     117,   118,   173,   174,   175
+};
+
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
       24,    58,   201,   156,   186,   115,    64,    46,   182,   152,
@@ -1246,9 +1370,9 @@ static const yytype_int16 yycheck[] =
       46,    -1,    48,    49,    50
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
+static const yytype_int8 yystos[] =
 {
        0,     3,     4,     6,     7,     8,     9,    10,    14,    15,
       17,    19,    22,    23,    24,    33,    40,    42,    43,    44,
@@ -1274,95 +1398,76 @@ static const yytype_uint8 yystos[] =
       91,    32,    37,    51,    34,    56,    56,    66,    91
 };
 
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
-
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
-
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_int8 yyr1[] =
+{
+       0,    59,    60,    61,    61,    61,    61,    61,    61,    61,
+      61,    61,    61,    61,    61,    61,    62,    63,    64,    65,
+      65,    65,    66,    66,    66,    66,    67,    67,    67,    67,
+      68,    68,    68,    68,    68,    68,    69,    69,    69,    69,
+      69,    69,    69,    70,    70,    70,    71,    72,    72,    72,
+      72,    72,    72,    72,    73,    73,    73,    73,    74,    74,
+      74,    74,    74,    74,    74,    74,    74,    74,    74,    74,
+      74,    74,    74,    74,    74,    74,    74,    75,    76,    77,
+      78,    79,    79,    80,    80,    81,    82,    83,    83,    84,
+      84,    85,    85,    85,    86,    86,    86,    86,    86,    87,
+      87,    87,    87,    88,    88,    88,    88,    88,    89,    89,
+      90,    90,    90,    91,    91,    91,    91,    91,    91,    91,
+      91,    91,    92,    92,    93,    93
+};
 
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_int8 yyr2[] =
+{
+       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     5,     2,     4,     2,
+       3,     1,     0,     1,     5,     3,     4,     3,     6,     5,
+       2,     3,     3,     2,     2,     1,     1,     1,     1,     1,
+       1,     1,     1,     3,     3,     3,     4,     2,     2,     2,
+       2,     2,     3,     4,     1,     1,     1,     1,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     1,     3,     0,     1,     3,     2,     0,     2,     2,
+       3,     1,     1,     1,     1,     3,     3,     2,     2,     1,
+       3,     5,     5,     1,     3,     3,     2,     2,     1,     3,
+       1,     4,     4,     1,     5,     5,     4,     2,     3,     3,
+       6,     3,     0,     1,     1,     3
+};
 
-#define YYFAIL		goto yyerrlab
 
-#define YYRECOVERING()  (!!yyerrstatus)
+enum { YYENOMEM = -2 };
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
-      yyerror (parser, YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
-
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
 
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
 
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
 
+#define YYRECOVERING()  (!!yyerrstatus)
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (parser, YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
+
+/* Backward compatibility with an undocumented macro.
+   Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
 
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, YYLEX_PARAM)
-#else
-# define YYLEX yylex (&yylval, parser)
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -1372,83 +1477,66 @@ while (YYID (0))
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value, parser); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct rust_parser *parser)
-#else
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+# ifndef YY_LOCATION_PRINT
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+
+
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Kind, Value, parser); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
+
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep, parser)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-    struct rust_parser *parser;
-#endif
+yy_symbol_value_print (FILE *yyo,
+                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct rust_parser *parser)
 {
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
+  YYUSE (parser);
   if (!yyvaluep)
     return;
-  YYUSE (parser);
 # ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
+  if (yykind < YYNTOKENS)
+    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct rust_parser *parser)
-#else
 static void
-yy_symbol_print (yyoutput, yytype, yyvaluep, parser)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-    struct rust_parser *parser;
-#endif
+yy_symbol_print (FILE *yyo,
+                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct rust_parser *parser)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyo, "%s %s (",
+             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep, parser);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yykind, yyvaluep, parser);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -1456,16 +1544,8 @@ yy_symbol_print (yyoutput, yytype, yyval
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
 static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1476,64 +1556,56 @@ yy_stack_print (yybottom, yytop)
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule, struct rust_parser *parser)
-#else
 static void
-yy_reduce_print (yyvsp, yyrule, parser)
-    YYSTYPE *yyvsp;
-    int yyrule;
-    struct rust_parser *parser;
-#endif
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+                 int yyrule, struct rust_parser *parser)
 {
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       , parser);
+      yy_symbol_print (stderr,
+                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+                       &yyvsp[(yyi + 1) - (yynrhs)], parser);
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule, parser); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule, parser); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1548,343 +1620,89 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
 
-#if YYERROR_VERBOSE
 
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
-
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
 
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
 
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct rust_parser *parser)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep, parser)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-    struct rust_parser *parser;
-#endif
+yydestruct (const char *yymsg,
+            yysymbol_kind_t yykind, YYSTYPE *yyvaluep, struct rust_parser *parser)
 {
   YYUSE (yyvaluep);
   YYUSE (parser);
-
   if (!yymsg)
     yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
-  switch (yytype)
-    {
-
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yykind);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (struct rust_parser *parser);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
 
 
 
 
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
+/*----------.
+| yyparse.  |
+`----------*/
 
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 int
 yyparse (struct rust_parser *parser)
-#else
-int
-yyparse (parser)
-    struct rust_parser *parser;
-#endif
-#endif
 {
 /* The lookahead symbol.  */
 int yychar;
 
+
 /* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval;
+/* Default value used for initialization, for pacifying older GCCs
+   or non-GCC compilers.  */
+YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
+YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
 
     /* Number of syntax errors so far.  */
     int yynerrs;
 
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to xreallocate them elsewhere.  */
 
+    /* Their size.  */
+    YYPTRDIFF_T yystacksize;
+
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
-
   int yyn;
+  /* The return value of yyparse.  */
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
@@ -1892,133 +1710,147 @@ YYSTYPE yylval;
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yynerrs = 0;
+  yystate = 0;
+  yyerrstatus = 0;
+
   yystacksize = YYINITDEPTH;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
+  YY_STACK_PRINT (yyss, yyssp);
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
-	/* Give user a chance to xreallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        yy_state_t *yyss1 = yyss;
+        YYSTYPE *yyvs1 = yyvs;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
+                    &yystacksize);
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yy_state_t *yyss1 = yyss;
+        union yyalloc *yyptr =
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   if (yychar == YYEMPTY)
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      YYDPRINTF ((stderr, "Reading a token\n"));
+      yychar = yylex (&yylval, parser);
     }
 
   if (yychar <= YYEOF)
     {
-      yychar = yytoken = YYEOF;
+      yychar = YYEOF;
+      yytoken = YYSYMBOL_YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
+  else if (yychar == YYerror)
+    {
+      /* The scanner already issued an error message, process directly
+         to error recovery.  But do not keep the error token as
+         lookahead, it is too special and may lead us to an endless
+         loop in error recovery. */
+      yychar = YYUNDEF;
+      yytoken = YYSYMBOL_YYerror;
+      goto yyerrlab1;
+    }
   else
     {
       yytoken = YYTRANSLATE (yychar);
@@ -2033,8 +1865,8 @@ yybackup:
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -2046,13 +1878,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -2067,14 +1899,14 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -2087,33 +1919,29 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 2:
-
-/* Line 1455 of yacc.c  */
+  case 2:
 #line 440 "rust-exp.y"
-    {
+                {
 		  /* If we are completing and see a valid parse,
 		     rust_ast will already have been set.  */
 		  if (parser->rust_ast == NULL)
-		    parser->rust_ast = (yyvsp[(1) - (1)].op);
+		    parser->rust_ast = (yyvsp[0].op);
 		}
+#line 1932 "rust-exp.c.tmp"
     break;
 
   case 16:
-
-/* Line 1455 of yacc.c  */
 #line 470 "rust-exp.y"
-    {
-		  (yyvsp[(4) - (5)].params)->push_back ((yyvsp[(2) - (5)].op));
+                {
+		  (yyvsp[-1].params)->push_back ((yyvsp[-3].op));
 		  error (_("Tuple expressions not supported yet"));
 		}
+#line 1941 "rust-exp.c.tmp"
     break;
 
   case 17:
-
-/* Line 1455 of yacc.c  */
 #line 478 "rust-exp.y"
-    {
+                {
 		  struct typed_val_int val;
 
 		  val.type
@@ -2123,200 +1951,178 @@ yyreduce:
 		  val.val = 0;
 		  (yyval.op) = parser->ast_literal (val);
 		}
+#line 1956 "rust-exp.c.tmp"
     break;
 
   case 18:
-
-/* Line 1455 of yacc.c  */
 #line 495 "rust-exp.y"
-    { (yyval.op) = parser->ast_struct ((yyvsp[(1) - (4)].op), (yyvsp[(3) - (4)].field_inits)); }
+                { (yyval.op) = parser->ast_struct ((yyvsp[-3].op), (yyvsp[-1].field_inits)); }
+#line 1962 "rust-exp.c.tmp"
     break;
 
   case 19:
-
-/* Line 1455 of yacc.c  */
 #line 500 "rust-exp.y"
-    {
+                {
 		  struct set_field sf;
 
 		  sf.name.ptr = NULL;
 		  sf.name.length = 0;
-		  sf.init = (yyvsp[(2) - (2)].op);
+		  sf.init = (yyvsp[0].op);
 
 		  (yyval.one_field_init) = sf;
 		}
+#line 1976 "rust-exp.c.tmp"
     break;
 
   case 20:
-
-/* Line 1455 of yacc.c  */
 #line 510 "rust-exp.y"
-    {
+                {
 		  struct set_field sf;
 
-		  sf.name = (yyvsp[(1) - (3)].sval);
-		  sf.init = (yyvsp[(3) - (3)].op);
+		  sf.name = (yyvsp[-2].sval);
+		  sf.init = (yyvsp[0].op);
 		  (yyval.one_field_init) = sf;
 		}
+#line 1988 "rust-exp.c.tmp"
     break;
 
   case 21:
-
-/* Line 1455 of yacc.c  */
 #line 518 "rust-exp.y"
-    {
+                {
 		  struct set_field sf;
 
-		  sf.name = (yyvsp[(1) - (1)].sval);
-		  sf.init = parser->ast_path ((yyvsp[(1) - (1)].sval), NULL);
+		  sf.name = (yyvsp[0].sval);
+		  sf.init = parser->ast_path ((yyvsp[0].sval), NULL);
 		  (yyval.one_field_init) = sf;
 		}
+#line 2000 "rust-exp.c.tmp"
     break;
 
   case 22:
-
-/* Line 1455 of yacc.c  */
 #line 529 "rust-exp.y"
-    {
+                {
 		  (yyval.field_inits) = parser->new_set_vector ();
 		}
+#line 2008 "rust-exp.c.tmp"
     break;
 
   case 23:
-
-/* Line 1455 of yacc.c  */
 #line 533 "rust-exp.y"
-    {
+                {
 		  rust_set_vector *result = parser->new_set_vector ();
-		  result->push_back ((yyvsp[(1) - (1)].one_field_init));
+		  result->push_back ((yyvsp[0].one_field_init));
 		  (yyval.field_inits) = result;
 		}
+#line 2018 "rust-exp.c.tmp"
     break;
 
   case 24:
-
-/* Line 1455 of yacc.c  */
 #line 539 "rust-exp.y"
-    {
+                {
 		  struct set_field sf;
 
-		  sf.name = (yyvsp[(1) - (5)].sval);
-		  sf.init = (yyvsp[(3) - (5)].op);
-		  (yyvsp[(5) - (5)].field_inits)->push_back (sf);
-		  (yyval.field_inits) = (yyvsp[(5) - (5)].field_inits);
+		  sf.name = (yyvsp[-4].sval);
+		  sf.init = (yyvsp[-2].op);
+		  (yyvsp[0].field_inits)->push_back (sf);
+		  (yyval.field_inits) = (yyvsp[0].field_inits);
 		}
+#line 2031 "rust-exp.c.tmp"
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
 #line 548 "rust-exp.y"
-    {
+                {
 		  struct set_field sf;
 
-		  sf.name = (yyvsp[(1) - (3)].sval);
-		  sf.init = parser->ast_path ((yyvsp[(1) - (3)].sval), NULL);
-		  (yyvsp[(3) - (3)].field_inits)->push_back (sf);
-		  (yyval.field_inits) = (yyvsp[(3) - (3)].field_inits);
+		  sf.name = (yyvsp[-2].sval);
+		  sf.init = parser->ast_path ((yyvsp[-2].sval), NULL);
+		  (yyvsp[0].field_inits)->push_back (sf);
+		  (yyval.field_inits) = (yyvsp[0].field_inits);
 		}
+#line 2044 "rust-exp.c.tmp"
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
 #line 560 "rust-exp.y"
-    { (yyval.op) = parser->ast_call_ish (OP_ARRAY, NULL, (yyvsp[(3) - (4)].params)); }
+                { (yyval.op) = parser->ast_call_ish (OP_ARRAY, NULL, (yyvsp[-1].params)); }
+#line 2050 "rust-exp.c.tmp"
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
 #line 562 "rust-exp.y"
-    { (yyval.op) = parser->ast_call_ish (OP_ARRAY, NULL, (yyvsp[(2) - (3)].params)); }
+                { (yyval.op) = parser->ast_call_ish (OP_ARRAY, NULL, (yyvsp[-1].params)); }
+#line 2056 "rust-exp.c.tmp"
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
 #line 564 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (OP_RUST_ARRAY, (yyvsp[(3) - (6)].op), (yyvsp[(5) - (6)].op)); }
+                { (yyval.op) = parser->ast_operation (OP_RUST_ARRAY, (yyvsp[-3].op), (yyvsp[-1].op)); }
+#line 2062 "rust-exp.c.tmp"
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
 #line 566 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (OP_RUST_ARRAY, (yyvsp[(2) - (5)].op), (yyvsp[(4) - (5)].op)); }
+                { (yyval.op) = parser->ast_operation (OP_RUST_ARRAY, (yyvsp[-3].op), (yyvsp[-1].op)); }
+#line 2068 "rust-exp.c.tmp"
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
 #line 571 "rust-exp.y"
-    { (yyval.op) = parser->ast_range ((yyvsp[(1) - (2)].op), NULL, false); }
+                { (yyval.op) = parser->ast_range ((yyvsp[-1].op), NULL, false); }
+#line 2074 "rust-exp.c.tmp"
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
 #line 573 "rust-exp.y"
-    { (yyval.op) = parser->ast_range ((yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op), false); }
+                { (yyval.op) = parser->ast_range ((yyvsp[-2].op), (yyvsp[0].op), false); }
+#line 2080 "rust-exp.c.tmp"
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
 #line 575 "rust-exp.y"
-    { (yyval.op) = parser->ast_range ((yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op), true); }
+                { (yyval.op) = parser->ast_range ((yyvsp[-2].op), (yyvsp[0].op), true); }
+#line 2086 "rust-exp.c.tmp"
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
 #line 577 "rust-exp.y"
-    { (yyval.op) = parser->ast_range (NULL, (yyvsp[(2) - (2)].op), false); }
+                { (yyval.op) = parser->ast_range (NULL, (yyvsp[0].op), false); }
+#line 2092 "rust-exp.c.tmp"
     break;
 
   case 34:
-
-/* Line 1455 of yacc.c  */
 #line 579 "rust-exp.y"
-    { (yyval.op) = parser->ast_range (NULL, (yyvsp[(2) - (2)].op), true); }
+                { (yyval.op) = parser->ast_range (NULL, (yyvsp[0].op), true); }
+#line 2098 "rust-exp.c.tmp"
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
 #line 581 "rust-exp.y"
-    { (yyval.op) = parser->ast_range (NULL, NULL, false); }
+                { (yyval.op) = parser->ast_range (NULL, NULL, false); }
+#line 2104 "rust-exp.c.tmp"
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
 #line 586 "rust-exp.y"
-    { (yyval.op) = parser->ast_literal ((yyvsp[(1) - (1)].typed_val_int)); }
+                { (yyval.op) = parser->ast_literal ((yyvsp[0].typed_val_int)); }
+#line 2110 "rust-exp.c.tmp"
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
 #line 588 "rust-exp.y"
-    { (yyval.op) = parser->ast_literal ((yyvsp[(1) - (1)].typed_val_int)); }
+                { (yyval.op) = parser->ast_literal ((yyvsp[0].typed_val_int)); }
+#line 2116 "rust-exp.c.tmp"
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
 #line 590 "rust-exp.y"
-    { (yyval.op) = parser->ast_dliteral ((yyvsp[(1) - (1)].typed_val_float)); }
+                { (yyval.op) = parser->ast_dliteral ((yyvsp[0].typed_val_float)); }
+#line 2122 "rust-exp.c.tmp"
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
 #line 592 "rust-exp.y"
-    {
+                {
 		  struct set_field field;
 		  struct typed_val_int val;
 		  struct stoken token;
@@ -2327,11 +2133,11 @@ yyreduce:
 		  field.name.ptr = "data_ptr";
 		  field.name.length = strlen (field.name.ptr);
 		  field.init = parser->ast_unary (UNOP_ADDR,
-						  parser->ast_string ((yyvsp[(1) - (1)].sval)));
+						  parser->ast_string ((yyvsp[0].sval)));
 		  fields->push_back (field);
 
 		  val.type = parser->get_type ("usize");
-		  val.val = (yyvsp[(1) - (1)].sval).length;
+		  val.val = (yyvsp[0].sval).length;
 
 		  field.name.ptr = "length";
 		  field.name.length = strlen (field.name.ptr);
@@ -2343,20 +2149,18 @@ yyreduce:
 		  (yyval.op) = parser->ast_struct (parser->ast_path (token, NULL),
 					   fields);
 		}
+#line 2154 "rust-exp.c.tmp"
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
 #line 620 "rust-exp.y"
-    { (yyval.op) = parser->ast_string ((yyvsp[(1) - (1)].sval)); }
+                { (yyval.op) = parser->ast_string ((yyvsp[0].sval)); }
+#line 2160 "rust-exp.c.tmp"
     break;
 
   case 41:
-
-/* Line 1455 of yacc.c  */
 #line 622 "rust-exp.y"
-    {
+                {
 		  struct typed_val_int val;
 
 		  val.type = language_bool_type (parser->language (),
@@ -2364,13 +2168,12 @@ yyreduce:
 		  val.val = 1;
 		  (yyval.op) = parser->ast_literal (val);
 		}
+#line 2173 "rust-exp.c.tmp"
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
 #line 631 "rust-exp.y"
-    {
+                {
 		  struct typed_val_int val;
 
 		  val.type = language_bool_type (parser->language (),
@@ -2378,669 +2181,572 @@ yyreduce:
 		  val.val = 0;
 		  (yyval.op) = parser->ast_literal (val);
 		}
+#line 2186 "rust-exp.c.tmp"
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
 #line 643 "rust-exp.y"
-    { (yyval.op) = parser->ast_structop ((yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].sval).ptr, 0); }
+                { (yyval.op) = parser->ast_structop ((yyvsp[-2].op), (yyvsp[0].sval).ptr, 0); }
+#line 2192 "rust-exp.c.tmp"
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
 #line 645 "rust-exp.y"
-    {
-		  (yyval.op) = parser->ast_structop ((yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].sval).ptr, 1);
+                {
+		  (yyval.op) = parser->ast_structop ((yyvsp[-2].op), (yyvsp[0].sval).ptr, 1);
 		  parser->rust_ast = (yyval.op);
 		}
+#line 2201 "rust-exp.c.tmp"
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
 #line 650 "rust-exp.y"
-    { (yyval.op) = parser->ast_structop_anonymous ((yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].typed_val_int)); }
+                { (yyval.op) = parser->ast_structop_anonymous ((yyvsp[-2].op), (yyvsp[0].typed_val_int)); }
+#line 2207 "rust-exp.c.tmp"
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
 #line 655 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_SUBSCRIPT, (yyvsp[(1) - (4)].op), (yyvsp[(3) - (4)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_SUBSCRIPT, (yyvsp[-3].op), (yyvsp[-1].op)); }
+#line 2213 "rust-exp.c.tmp"
     break;
 
   case 47:
-
-/* Line 1455 of yacc.c  */
 #line 660 "rust-exp.y"
-    { (yyval.op) = parser->ast_unary (UNOP_PLUS, (yyvsp[(2) - (2)].op)); }
+                { (yyval.op) = parser->ast_unary (UNOP_PLUS, (yyvsp[0].op)); }
+#line 2219 "rust-exp.c.tmp"
     break;
 
   case 48:
-
-/* Line 1455 of yacc.c  */
 #line 663 "rust-exp.y"
-    { (yyval.op) = parser->ast_unary (UNOP_NEG, (yyvsp[(2) - (2)].op)); }
+                { (yyval.op) = parser->ast_unary (UNOP_NEG, (yyvsp[0].op)); }
+#line 2225 "rust-exp.c.tmp"
     break;
 
   case 49:
-
-/* Line 1455 of yacc.c  */
 #line 666 "rust-exp.y"
-    {
+                {
 		  /* Note that we provide a Rust-specific evaluator
 		     override for UNOP_COMPLEMENT, so it can do the
 		     right thing for both bool and integral
 		     values.  */
-		  (yyval.op) = parser->ast_unary (UNOP_COMPLEMENT, (yyvsp[(2) - (2)].op));
+		  (yyval.op) = parser->ast_unary (UNOP_COMPLEMENT, (yyvsp[0].op));
 		}
+#line 2237 "rust-exp.c.tmp"
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
 #line 675 "rust-exp.y"
-    { (yyval.op) = parser->ast_unary (UNOP_IND, (yyvsp[(2) - (2)].op)); }
+                { (yyval.op) = parser->ast_unary (UNOP_IND, (yyvsp[0].op)); }
+#line 2243 "rust-exp.c.tmp"
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
 #line 678 "rust-exp.y"
-    { (yyval.op) = parser->ast_unary (UNOP_ADDR, (yyvsp[(2) - (2)].op)); }
+                { (yyval.op) = parser->ast_unary (UNOP_ADDR, (yyvsp[0].op)); }
+#line 2249 "rust-exp.c.tmp"
     break;
 
   case 52:
-
-/* Line 1455 of yacc.c  */
 #line 681 "rust-exp.y"
-    { (yyval.op) = parser->ast_unary (UNOP_ADDR, (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_unary (UNOP_ADDR, (yyvsp[0].op)); }
+#line 2255 "rust-exp.c.tmp"
     break;
 
   case 53:
-
-/* Line 1455 of yacc.c  */
 #line 683 "rust-exp.y"
-    { (yyval.op) = parser->ast_unary (UNOP_SIZEOF, (yyvsp[(3) - (4)].op)); }
+                { (yyval.op) = parser->ast_unary (UNOP_SIZEOF, (yyvsp[-1].op)); }
+#line 2261 "rust-exp.c.tmp"
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
 #line 695 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_MUL, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_MUL, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2267 "rust-exp.c.tmp"
     break;
 
   case 59:
-
-/* Line 1455 of yacc.c  */
 #line 698 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_REPEAT, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_REPEAT, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2273 "rust-exp.c.tmp"
     break;
 
   case 60:
-
-/* Line 1455 of yacc.c  */
 #line 701 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_DIV, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_DIV, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2279 "rust-exp.c.tmp"
     break;
 
   case 61:
-
-/* Line 1455 of yacc.c  */
 #line 704 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_REM, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_REM, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2285 "rust-exp.c.tmp"
     break;
 
   case 62:
-
-/* Line 1455 of yacc.c  */
 #line 707 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_LESS, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_LESS, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2291 "rust-exp.c.tmp"
     break;
 
   case 63:
-
-/* Line 1455 of yacc.c  */
 #line 710 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_GTR, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_GTR, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2297 "rust-exp.c.tmp"
     break;
 
   case 64:
-
-/* Line 1455 of yacc.c  */
 #line 713 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_BITWISE_AND, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_BITWISE_AND, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2303 "rust-exp.c.tmp"
     break;
 
   case 65:
-
-/* Line 1455 of yacc.c  */
 #line 716 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_BITWISE_IOR, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_BITWISE_IOR, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2309 "rust-exp.c.tmp"
     break;
 
   case 66:
-
-/* Line 1455 of yacc.c  */
 #line 719 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_BITWISE_XOR, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_BITWISE_XOR, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2315 "rust-exp.c.tmp"
     break;
 
   case 67:
-
-/* Line 1455 of yacc.c  */
 #line 722 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_ADD, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_ADD, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2321 "rust-exp.c.tmp"
     break;
 
   case 68:
-
-/* Line 1455 of yacc.c  */
 #line 725 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_SUB, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_SUB, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2327 "rust-exp.c.tmp"
     break;
 
   case 69:
-
-/* Line 1455 of yacc.c  */
 #line 728 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_LOGICAL_OR, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_LOGICAL_OR, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2333 "rust-exp.c.tmp"
     break;
 
   case 70:
-
-/* Line 1455 of yacc.c  */
 #line 731 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_LOGICAL_AND, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_LOGICAL_AND, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2339 "rust-exp.c.tmp"
     break;
 
   case 71:
-
-/* Line 1455 of yacc.c  */
 #line 734 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_EQUAL, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_EQUAL, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2345 "rust-exp.c.tmp"
     break;
 
   case 72:
-
-/* Line 1455 of yacc.c  */
 #line 737 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_NOTEQUAL, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_NOTEQUAL, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2351 "rust-exp.c.tmp"
     break;
 
   case 73:
-
-/* Line 1455 of yacc.c  */
 #line 740 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_LEQ, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_LEQ, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2357 "rust-exp.c.tmp"
     break;
 
   case 74:
-
-/* Line 1455 of yacc.c  */
 #line 743 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_GEQ, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_GEQ, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2363 "rust-exp.c.tmp"
     break;
 
   case 75:
-
-/* Line 1455 of yacc.c  */
 #line 746 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_LSH, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_LSH, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2369 "rust-exp.c.tmp"
     break;
 
   case 76:
-
-/* Line 1455 of yacc.c  */
 #line 749 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_RSH, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_RSH, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2375 "rust-exp.c.tmp"
     break;
 
   case 77:
-
-/* Line 1455 of yacc.c  */
 #line 754 "rust-exp.y"
-    { (yyval.op) = parser->ast_cast ((yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_cast ((yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2381 "rust-exp.c.tmp"
     break;
 
   case 78:
-
-/* Line 1455 of yacc.c  */
 #line 759 "rust-exp.y"
-    { (yyval.op) = parser->ast_operation (BINOP_ASSIGN, (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_operation (BINOP_ASSIGN, (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2387 "rust-exp.c.tmp"
     break;
 
   case 79:
-
-/* Line 1455 of yacc.c  */
 #line 764 "rust-exp.y"
-    { (yyval.op) = parser->ast_compound_assignment ((yyvsp[(2) - (3)].opcode), (yyvsp[(1) - (3)].op), (yyvsp[(3) - (3)].op)); }
+                { (yyval.op) = parser->ast_compound_assignment ((yyvsp[-1].opcode), (yyvsp[-2].op), (yyvsp[0].op)); }
+#line 2393 "rust-exp.c.tmp"
     break;
 
   case 80:
-
-/* Line 1455 of yacc.c  */
 #line 770 "rust-exp.y"
-    { (yyval.op) = (yyvsp[(2) - (3)].op); }
+                { (yyval.op) = (yyvsp[-1].op); }
+#line 2399 "rust-exp.c.tmp"
     break;
 
   case 81:
-
-/* Line 1455 of yacc.c  */
 #line 775 "rust-exp.y"
-    {
+                {
 		  (yyval.params) = parser->new_op_vector ();
-		  (yyval.params)->push_back ((yyvsp[(1) - (1)].op));
+		  (yyval.params)->push_back ((yyvsp[0].op));
 		}
+#line 2408 "rust-exp.c.tmp"
     break;
 
   case 82:
-
-/* Line 1455 of yacc.c  */
 #line 780 "rust-exp.y"
-    {
-		  (yyvsp[(1) - (3)].params)->push_back ((yyvsp[(3) - (3)].op));
-		  (yyval.params) = (yyvsp[(1) - (3)].params);
+                {
+		  (yyvsp[-2].params)->push_back ((yyvsp[0].op));
+		  (yyval.params) = (yyvsp[-2].params);
 		}
+#line 2417 "rust-exp.c.tmp"
     break;
 
   case 83:
-
-/* Line 1455 of yacc.c  */
 #line 788 "rust-exp.y"
-    {
+                {
 		  /* The result can't be NULL.  */
 		  (yyval.params) = parser->new_op_vector ();
 		}
+#line 2426 "rust-exp.c.tmp"
     break;
 
   case 84:
-
-/* Line 1455 of yacc.c  */
 #line 793 "rust-exp.y"
-    { (yyval.params) = (yyvsp[(1) - (1)].params); }
+                { (yyval.params) = (yyvsp[0].params); }
+#line 2432 "rust-exp.c.tmp"
     break;
 
   case 85:
-
-/* Line 1455 of yacc.c  */
 #line 798 "rust-exp.y"
-    { (yyval.params) = (yyvsp[(2) - (3)].params); }
+                { (yyval.params) = (yyvsp[-1].params); }
+#line 2438 "rust-exp.c.tmp"
     break;
 
   case 86:
-
-/* Line 1455 of yacc.c  */
 #line 803 "rust-exp.y"
-    { (yyval.op) = parser->ast_call_ish (OP_FUNCALL, (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].params)); }
+                { (yyval.op) = parser->ast_call_ish (OP_FUNCALL, (yyvsp[-1].op), (yyvsp[0].params)); }
+#line 2444 "rust-exp.c.tmp"
     break;
 
   case 89:
-
-/* Line 1455 of yacc.c  */
 #line 813 "rust-exp.y"
-    { (yyval.depth) = 1; }
+                { (yyval.depth) = 1; }
+#line 2450 "rust-exp.c.tmp"
     break;
 
   case 90:
-
-/* Line 1455 of yacc.c  */
 #line 815 "rust-exp.y"
-    { (yyval.depth) = (yyvsp[(1) - (3)].depth) + 1; }
+                { (yyval.depth) = (yyvsp[-2].depth) + 1; }
+#line 2456 "rust-exp.c.tmp"
     break;
 
   case 91:
-
-/* Line 1455 of yacc.c  */
 #line 820 "rust-exp.y"
-    { (yyval.op) = (yyvsp[(1) - (1)].op); }
+                { (yyval.op) = (yyvsp[0].op); }
+#line 2462 "rust-exp.c.tmp"
     break;
 
   case 92:
-
-/* Line 1455 of yacc.c  */
 #line 822 "rust-exp.y"
-    { (yyval.op) = parser->ast_path ((yyvsp[(1) - (1)].sval), NULL); }
+                { (yyval.op) = parser->ast_path ((yyvsp[0].sval), NULL); }
+#line 2468 "rust-exp.c.tmp"
     break;
 
   case 93:
-
-/* Line 1455 of yacc.c  */
 #line 824 "rust-exp.y"
-    { (yyval.op) = parser->ast_path (make_stoken ("self"), NULL); }
+                { (yyval.op) = parser->ast_path (make_stoken ("self"), NULL); }
+#line 2474 "rust-exp.c.tmp"
     break;
 
   case 95:
-
-/* Line 1455 of yacc.c  */
 #line 830 "rust-exp.y"
-    { (yyval.op) = parser->super_name ((yyvsp[(3) - (3)].op), 0); }
+                { (yyval.op) = parser->super_name ((yyvsp[0].op), 0); }
+#line 2480 "rust-exp.c.tmp"
     break;
 
   case 96:
-
-/* Line 1455 of yacc.c  */
 #line 832 "rust-exp.y"
-    { (yyval.op) = parser->super_name ((yyvsp[(3) - (3)].op), (yyvsp[(2) - (3)].depth)); }
+                { (yyval.op) = parser->super_name ((yyvsp[0].op), (yyvsp[-1].depth)); }
+#line 2486 "rust-exp.c.tmp"
     break;
 
   case 97:
-
-/* Line 1455 of yacc.c  */
 #line 834 "rust-exp.y"
-    { (yyval.op) = parser->crate_name ((yyvsp[(2) - (2)].op)); }
+                { (yyval.op) = parser->crate_name ((yyvsp[0].op)); }
+#line 2492 "rust-exp.c.tmp"
     break;
 
   case 98:
-
-/* Line 1455 of yacc.c  */
 #line 836 "rust-exp.y"
-    {
+                {
 		  /* This is a gdb extension to make it possible to
 		     refer to items in other crates.  It just bypasses
 		     adding the current crate to the front of the
 		     name.  */
 		  (yyval.op) = parser->ast_path (parser->concat3 ("::",
-							  (yyvsp[(2) - (2)].op)->left.sval.ptr,
+							  (yyvsp[0].op)->left.sval.ptr,
 							  NULL),
-					 (yyvsp[(2) - (2)].op)->right.params);
+					 (yyvsp[0].op)->right.params);
 		}
+#line 2507 "rust-exp.c.tmp"
     break;
 
   case 99:
-
-/* Line 1455 of yacc.c  */
 #line 850 "rust-exp.y"
-    { (yyval.op) = parser->ast_path ((yyvsp[(1) - (1)].sval), NULL); }
+                { (yyval.op) = parser->ast_path ((yyvsp[0].sval), NULL); }
+#line 2513 "rust-exp.c.tmp"
     break;
 
   case 100:
-
-/* Line 1455 of yacc.c  */
 #line 852 "rust-exp.y"
-    {
-		  (yyval.op) = parser->ast_path (parser->concat3 ((yyvsp[(1) - (3)].op)->left.sval.ptr,
-							  "::", (yyvsp[(3) - (3)].sval).ptr),
+                {
+		  (yyval.op) = parser->ast_path (parser->concat3 ((yyvsp[-2].op)->left.sval.ptr,
+							  "::", (yyvsp[0].sval).ptr),
 					 NULL);
 		}
+#line 2523 "rust-exp.c.tmp"
     break;
 
   case 101:
-
-/* Line 1455 of yacc.c  */
 #line 858 "rust-exp.y"
-    { (yyval.op) = parser->ast_path ((yyvsp[(1) - (5)].op)->left.sval, (yyvsp[(4) - (5)].params)); }
+                { (yyval.op) = parser->ast_path ((yyvsp[-4].op)->left.sval, (yyvsp[-1].params)); }
+#line 2529 "rust-exp.c.tmp"
     break;
 
   case 102:
-
-/* Line 1455 of yacc.c  */
 #line 860 "rust-exp.y"
-    {
-		  (yyval.op) = parser->ast_path ((yyvsp[(1) - (5)].op)->left.sval, (yyvsp[(4) - (5)].params));
+                {
+		  (yyval.op) = parser->ast_path ((yyvsp[-4].op)->left.sval, (yyvsp[-1].params));
 		  parser->push_back ('>');
 		}
+#line 2538 "rust-exp.c.tmp"
     break;
 
   case 104:
-
-/* Line 1455 of yacc.c  */
 #line 869 "rust-exp.y"
-    { (yyval.op) = parser->super_name ((yyvsp[(3) - (3)].op), 0); }
+                { (yyval.op) = parser->super_name ((yyvsp[0].op), 0); }
+#line 2544 "rust-exp.c.tmp"
     break;
 
   case 105:
-
-/* Line 1455 of yacc.c  */
 #line 871 "rust-exp.y"
-    { (yyval.op) = parser->super_name ((yyvsp[(3) - (3)].op), (yyvsp[(2) - (3)].depth)); }
+                { (yyval.op) = parser->super_name ((yyvsp[0].op), (yyvsp[-1].depth)); }
+#line 2550 "rust-exp.c.tmp"
     break;
 
   case 106:
-
-/* Line 1455 of yacc.c  */
 #line 873 "rust-exp.y"
-    { (yyval.op) = parser->crate_name ((yyvsp[(2) - (2)].op)); }
+                { (yyval.op) = parser->crate_name ((yyvsp[0].op)); }
+#line 2556 "rust-exp.c.tmp"
     break;
 
   case 107:
-
-/* Line 1455 of yacc.c  */
 #line 875 "rust-exp.y"
-    {
+                {
 		  /* This is a gdb extension to make it possible to
 		     refer to items in other crates.  It just bypasses
 		     adding the current crate to the front of the
 		     name.  */
 		  (yyval.op) = parser->ast_path (parser->concat3 ("::",
-							  (yyvsp[(2) - (2)].op)->left.sval.ptr,
+							  (yyvsp[0].op)->left.sval.ptr,
 							  NULL),
-					 (yyvsp[(2) - (2)].op)->right.params);
+					 (yyvsp[0].op)->right.params);
 		}
+#line 2571 "rust-exp.c.tmp"
     break;
 
   case 108:
-
-/* Line 1455 of yacc.c  */
 #line 889 "rust-exp.y"
-    { (yyval.op) = parser->ast_path ((yyvsp[(1) - (1)].sval), NULL); }
+                { (yyval.op) = parser->ast_path ((yyvsp[0].sval), NULL); }
+#line 2577 "rust-exp.c.tmp"
     break;
 
   case 109:
-
-/* Line 1455 of yacc.c  */
 #line 891 "rust-exp.y"
-    {
-		  (yyval.op) = parser->ast_path (parser->concat3 ((yyvsp[(1) - (3)].op)->left.sval.ptr,
-							  "::", (yyvsp[(3) - (3)].sval).ptr),
+                {
+		  (yyval.op) = parser->ast_path (parser->concat3 ((yyvsp[-2].op)->left.sval.ptr,
+							  "::", (yyvsp[0].sval).ptr),
 					 NULL);
 		}
+#line 2587 "rust-exp.c.tmp"
     break;
 
   case 111:
-
-/* Line 1455 of yacc.c  */
 #line 901 "rust-exp.y"
-    { (yyval.op) = parser->ast_path ((yyvsp[(1) - (4)].op)->left.sval, (yyvsp[(3) - (4)].params)); }
+                { (yyval.op) = parser->ast_path ((yyvsp[-3].op)->left.sval, (yyvsp[-1].params)); }
+#line 2593 "rust-exp.c.tmp"
     break;
 
   case 112:
-
-/* Line 1455 of yacc.c  */
 #line 903 "rust-exp.y"
-    {
-		  (yyval.op) = parser->ast_path ((yyvsp[(1) - (4)].op)->left.sval, (yyvsp[(3) - (4)].params));
+                {
+		  (yyval.op) = parser->ast_path ((yyvsp[-3].op)->left.sval, (yyvsp[-1].params));
 		  parser->push_back ('>');
 		}
+#line 2602 "rust-exp.c.tmp"
     break;
 
   case 114:
-
-/* Line 1455 of yacc.c  */
 #line 912 "rust-exp.y"
-    { (yyval.op) = parser->ast_array_type ((yyvsp[(2) - (5)].op), (yyvsp[(4) - (5)].typed_val_int)); }
+                { (yyval.op) = parser->ast_array_type ((yyvsp[-3].op), (yyvsp[-1].typed_val_int)); }
+#line 2608 "rust-exp.c.tmp"
     break;
 
   case 115:
-
-/* Line 1455 of yacc.c  */
 #line 914 "rust-exp.y"
-    { (yyval.op) = parser->ast_array_type ((yyvsp[(2) - (5)].op), (yyvsp[(4) - (5)].typed_val_int)); }
+                { (yyval.op) = parser->ast_array_type ((yyvsp[-3].op), (yyvsp[-1].typed_val_int)); }
+#line 2614 "rust-exp.c.tmp"
     break;
 
   case 116:
-
-/* Line 1455 of yacc.c  */
 #line 916 "rust-exp.y"
-    { (yyval.op) = parser->ast_slice_type ((yyvsp[(3) - (4)].op)); }
+                { (yyval.op) = parser->ast_slice_type ((yyvsp[-1].op)); }
+#line 2620 "rust-exp.c.tmp"
     break;
 
   case 117:
-
-/* Line 1455 of yacc.c  */
 #line 918 "rust-exp.y"
-    { (yyval.op) = parser->ast_reference_type ((yyvsp[(2) - (2)].op)); }
+                { (yyval.op) = parser->ast_reference_type ((yyvsp[0].op)); }
+#line 2626 "rust-exp.c.tmp"
     break;
 
   case 118:
-
-/* Line 1455 of yacc.c  */
 #line 920 "rust-exp.y"
-    { (yyval.op) = parser->ast_pointer_type ((yyvsp[(3) - (3)].op), 1); }
+                { (yyval.op) = parser->ast_pointer_type ((yyvsp[0].op), 1); }
+#line 2632 "rust-exp.c.tmp"
     break;
 
   case 119:
-
-/* Line 1455 of yacc.c  */
 #line 922 "rust-exp.y"
-    { (yyval.op) = parser->ast_pointer_type ((yyvsp[(3) - (3)].op), 0); }
+                { (yyval.op) = parser->ast_pointer_type ((yyvsp[0].op), 0); }
+#line 2638 "rust-exp.c.tmp"
     break;
 
   case 120:
-
-/* Line 1455 of yacc.c  */
 #line 924 "rust-exp.y"
-    { (yyval.op) = parser->ast_function_type ((yyvsp[(6) - (6)].op), (yyvsp[(3) - (6)].params)); }
+                { (yyval.op) = parser->ast_function_type ((yyvsp[0].op), (yyvsp[-3].params)); }
+#line 2644 "rust-exp.c.tmp"
     break;
 
   case 121:
-
-/* Line 1455 of yacc.c  */
 #line 926 "rust-exp.y"
-    { (yyval.op) = parser->ast_tuple_type ((yyvsp[(2) - (3)].params)); }
+                { (yyval.op) = parser->ast_tuple_type ((yyvsp[-1].params)); }
+#line 2650 "rust-exp.c.tmp"
     break;
 
   case 122:
-
-/* Line 1455 of yacc.c  */
 #line 931 "rust-exp.y"
-    { (yyval.params) = NULL; }
+                { (yyval.params) = NULL; }
+#line 2656 "rust-exp.c.tmp"
     break;
 
   case 123:
-
-/* Line 1455 of yacc.c  */
 #line 933 "rust-exp.y"
-    { (yyval.params) = (yyvsp[(1) - (1)].params); }
+                { (yyval.params) = (yyvsp[0].params); }
+#line 2662 "rust-exp.c.tmp"
     break;
 
   case 124:
-
-/* Line 1455 of yacc.c  */
 #line 938 "rust-exp.y"
-    {
+                {
 		  rust_op_vector *result = parser->new_op_vector ();
-		  result->push_back ((yyvsp[(1) - (1)].op));
+		  result->push_back ((yyvsp[0].op));
 		  (yyval.params) = result;
 		}
+#line 2672 "rust-exp.c.tmp"
     break;
 
   case 125:
-
-/* Line 1455 of yacc.c  */
 #line 944 "rust-exp.y"
-    {
-		  (yyvsp[(1) - (3)].params)->push_back ((yyvsp[(3) - (3)].op));
-		  (yyval.params) = (yyvsp[(1) - (3)].params);
+                {
+		  (yyvsp[-2].params)->push_back ((yyvsp[0].op));
+		  (yyval.params) = (yyvsp[-2].params);
 		}
+#line 2681 "rust-exp.c.tmp"
     break;
 
 
+#line 2685 "rust-exp.c.tmp"
 
-/* Line 1455 of yacc.c  */
-#line 2956 "rust-exp.c.tmp"
       default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
   yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
       yyerror (parser, YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (parser, yymsg);
-	  }
-	else
-	  {
-	    yyerror (parser, YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
-#endif
     }
 
-
-
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval, parser);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval, parser);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -3052,14 +2758,12 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -3072,39 +2776,42 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYSYMBOL_YYerror;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp, parser);
+                  YY_ACCESSING_SYMBOL (yystate), yyvsp, parser);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -3117,6 +2824,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -3124,7 +2832,8 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+
+#if !defined yyoverflow
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -3134,35 +2843,37 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval, parser);
-  /* Do not reclaim the symbols of the rule which action triggered
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval, parser);
+    }
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp, parser);
+                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, parser);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
-}
-
 
+  return yyresult;
+}
 
-/* Line 1675 of yacc.c  */
 #line 950 "rust-exp.y"
 
 
@@ -4551,7 +4262,7 @@ rust_parser::convert_ast_to_expression (
 		   call expression.  */
 		rust_op_vector *params = operation->right.params;
 
-		if (TYPE_CODE (type) != TYPE_CODE_NAMESPACE)
+		if (type->code () != TYPE_CODE_NAMESPACE)
 		  {
 		    if (!rust_tuple_struct_type_p (type))
 		      error (_("Type %s is not a tuple struct"), varname);
@@ -4630,8 +4341,8 @@ rust_parser::convert_ast_to_expression (
 	      error (_("No symbol '%s' in current context"), varname);
 
 	    if (!want_type
-		&& TYPE_CODE (type) == TYPE_CODE_STRUCT
-		&& TYPE_NFIELDS (type) == 0)
+		&& type->code () == TYPE_CODE_STRUCT
+		&& type->num_fields () == 0)
 	      {
 		/* A unit-like struct.  */
 		write_exp_elt_opcode (pstate, OP_AGGREGATE);
@@ -4687,7 +4398,7 @@ rust_parser::convert_ast_to_expression (
 	if (type == NULL)
 	  error (_("Could not find type '%s'"), operation->left.sval.ptr);
 
-	if (TYPE_CODE (type) != TYPE_CODE_STRUCT
+	if (type->code () != TYPE_CODE_STRUCT
 	    || rust_tuple_type_p (type)
 	    || rust_tuple_struct_type_p (type))
 	  error (_("Struct expression applied to non-struct type"));
@@ -4942,8 +4653,8 @@ rust_lex_tests (void)
 {
   int i;
 
-  // Set up dummy "parser", so that rust_type works.
-  struct parser_state ps (&rust_language_defn, target_gdbarch (),
+  /* Set up dummy "parser", so that rust_type works.  */
+  struct parser_state ps (language_def (language_rust), target_gdbarch (),
 			  nullptr, 0, 0, nullptr, 0, nullptr);
   rust_parser parser (&ps);
 
@@ -5043,8 +4754,9 @@ rust_lex_tests (void)
 
 #endif /* GDB_SELF_TEST */
 
+void _initialize_rust_exp ();
 void
-_initialize_rust_exp (void)
+_initialize_rust_exp ()
 {
   int code = regcomp (&number_regex, number_regex_text, REG_EXTENDED);
   /* If the regular expression was incorrect, it was a programming
@@ -5055,4 +4767,3 @@ _initialize_rust_exp (void)
   selftests::register_test ("rust-lex", rust_lex_tests);
 #endif
 }
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rust-exp.y ./gdb/rust-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rust-exp.y	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rust-exp.y	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Bison parser for Rust expressions, for GDB.
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -2334,7 +2334,7 @@ rust_parser::convert_ast_to_expression (
 		   call expression.  */
 		rust_op_vector *params = operation->right.params;
 
-		if (TYPE_CODE (type) != TYPE_CODE_NAMESPACE)
+		if (type->code () != TYPE_CODE_NAMESPACE)
 		  {
 		    if (!rust_tuple_struct_type_p (type))
 		      error (_("Type %s is not a tuple struct"), varname);
@@ -2413,8 +2413,8 @@ rust_parser::convert_ast_to_expression (
 	      error (_("No symbol '%s' in current context"), varname);
 
 	    if (!want_type
-		&& TYPE_CODE (type) == TYPE_CODE_STRUCT
-		&& TYPE_NFIELDS (type) == 0)
+		&& type->code () == TYPE_CODE_STRUCT
+		&& type->num_fields () == 0)
 	      {
 		/* A unit-like struct.  */
 		write_exp_elt_opcode (pstate, OP_AGGREGATE);
@@ -2470,7 +2470,7 @@ rust_parser::convert_ast_to_expression (
 	if (type == NULL)
 	  error (_("Could not find type '%s'"), operation->left.sval.ptr);
 
-	if (TYPE_CODE (type) != TYPE_CODE_STRUCT
+	if (type->code () != TYPE_CODE_STRUCT
 	    || rust_tuple_type_p (type)
 	    || rust_tuple_struct_type_p (type))
 	  error (_("Struct expression applied to non-struct type"));
@@ -2725,8 +2725,8 @@ rust_lex_tests (void)
 {
   int i;
 
-  // Set up dummy "parser", so that rust_type works.
-  struct parser_state ps (&rust_language_defn, target_gdbarch (),
+  /* Set up dummy "parser", so that rust_type works.  */
+  struct parser_state ps (language_def (language_rust), target_gdbarch (),
 			  nullptr, 0, 0, nullptr, 0, nullptr);
   rust_parser parser (&ps);
 
@@ -2826,8 +2826,9 @@ rust_lex_tests (void)
 
 #endif /* GDB_SELF_TEST */
 
+void _initialize_rust_exp ();
 void
-_initialize_rust_exp (void)
+_initialize_rust_exp ()
 {
   int code = regcomp (&number_regex, number_regex_text, REG_EXTENDED);
   /* If the regular expression was incorrect, it was a programming
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rust-lang.c ./gdb/rust-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rust-lang.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rust-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Rust language support routines for GDB, the GNU debugger.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -68,38 +68,37 @@ rust_crate_for_block (const struct block
    enum.  */
 
 static bool
-rust_enum_p (const struct type *type)
+rust_enum_p (struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	  && TYPE_NFIELDS (type) == 1
-	  && TYPE_FLAG_DISCRIMINATED_UNION (TYPE_FIELD_TYPE (type, 0)));
+  /* is_dynamic_type will return true if any field has a dynamic
+     attribute -- but we only want to check the top level.  */
+  return TYPE_HAS_VARIANT_PARTS (type);
 }
 
-/* Return true if TYPE, which must be an enum type, has no
-   variants.  */
+/* Return true if TYPE, which must be an already-resolved enum type,
+   has no variants.  */
 
 static bool
 rust_empty_enum_p (const struct type *type)
 {
-  gdb_assert (rust_enum_p (type));
-  /* In Rust the enum always fills the containing structure.  */
-  gdb_assert (TYPE_FIELD_BITPOS (type, 0) == 0);
-
-  return TYPE_NFIELDS (TYPE_FIELD_TYPE (type, 0)) == 0;
+  return type->num_fields () == 0;
 }
 
-/* Given an enum type and contents, find which variant is active.  */
+/* Given an already-resolved enum type and contents, find which
+   variant is active.  */
 
-static struct field *
-rust_enum_variant (struct type *type, const gdb_byte *contents)
+static int
+rust_enum_variant (struct type *type)
 {
-  /* In Rust the enum always fills the containing structure.  */
-  gdb_assert (TYPE_FIELD_BITPOS (type, 0) == 0);
-
-  struct type *union_type = TYPE_FIELD_TYPE (type, 0);
-
-  int fieldno = value_union_variant (union_type, contents);
-  return &TYPE_FIELD (union_type, fieldno);
+  /* The active variant is simply the first non-artificial field.  */
+  for (int i = 0; i < type->num_fields (); ++i)
+    if (!TYPE_FIELD_ARTIFICIAL (type, i))
+      return i;
+
+  /* Perhaps we could get here by trying to print an Ada variant
+     record in Rust mode.  Unlikely, but an error is safer than an
+     assert.  */
+  error (_("Could not find active enum variant"));
 }
 
 /* See rust-lang.h.  */
@@ -110,9 +109,9 @@ rust_tuple_type_p (struct type *type)
   /* The current implementation is a bit of a hack, but there's
      nothing else in the debuginfo to distinguish a tuple from a
      struct.  */
-  return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	  && TYPE_NAME (type) != NULL
-	  && TYPE_NAME (type)[0] == '(');
+  return (type->code () == TYPE_CODE_STRUCT
+	  && type->name () != NULL
+	  && type->name ()[0] == '(');
 }
 
 /* Return true if all non-static fields of a structlike type are in a
@@ -125,11 +124,11 @@ rust_underscore_fields (struct type *typ
 
   field_number = 0;
 
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT)
+  if (type->code () != TYPE_CODE_STRUCT)
     return false;
-  for (i = 0; i < TYPE_NFIELDS (type); ++i)
+  for (i = 0; i < type->num_fields (); ++i)
     {
-      if (!field_is_static (&TYPE_FIELD (type, i)))
+      if (!field_is_static (&type->field (i)))
 	{
 	  char buf[20];
 
@@ -150,7 +149,7 @@ rust_tuple_struct_type_p (struct type *t
   /* This is just an approximation until DWARF can represent Rust more
      precisely.  We exclude zero-length structs because they may not
      be tuple structs, and there's no way to tell.  */
-  return TYPE_NFIELDS (type) > 0 && rust_underscore_fields (type);
+  return type->num_fields () > 0 && rust_underscore_fields (type);
 }
 
 /* Return true if TYPE is a slice type, otherwise false.  */
@@ -158,10 +157,10 @@ rust_tuple_struct_type_p (struct type *t
 static bool
 rust_slice_type_p (struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	  && TYPE_NAME (type) != NULL
-	  && (strncmp (TYPE_NAME (type), "&[", 2) == 0
-	      || strcmp (TYPE_NAME (type), "&str") == 0));
+  return (type->code () == TYPE_CODE_STRUCT
+	  && type->name () != NULL
+	  && (strncmp (type->name (), "&[", 2) == 0
+	      || strcmp (type->name (), "&str") == 0));
 }
 
 /* Return true if TYPE is a range type, otherwise false.  */
@@ -171,23 +170,23 @@ rust_range_type_p (struct type *type)
 {
   int i;
 
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT
-      || TYPE_NFIELDS (type) > 2
-      || TYPE_NAME (type) == NULL
-      || strstr (TYPE_NAME (type), "::Range") == NULL)
+  if (type->code () != TYPE_CODE_STRUCT
+      || type->num_fields () > 2
+      || type->name () == NULL
+      || strstr (type->name (), "::Range") == NULL)
     return false;
 
-  if (TYPE_NFIELDS (type) == 0)
+  if (type->num_fields () == 0)
     return true;
 
   i = 0;
   if (strcmp (TYPE_FIELD_NAME (type, 0), "start") == 0)
     {
-      if (TYPE_NFIELDS (type) == 1)
+      if (type->num_fields () == 1)
 	return true;
       i = 1;
     }
-  else if (TYPE_NFIELDS (type) == 2)
+  else if (type->num_fields () == 2)
     {
       /* First field had to be "start".  */
       return false;
@@ -203,8 +202,8 @@ rust_range_type_p (struct type *type)
 static bool
 rust_inclusive_range_type_p (struct type *type)
 {
-  return (strstr (TYPE_NAME (type), "::RangeInclusive") != NULL
-	  || strstr (TYPE_NAME (type), "::RangeToInclusive") != NULL);
+  return (strstr (type->name (), "::RangeInclusive") != NULL
+	  || strstr (type->name (), "::RangeToInclusive") != NULL);
 }
 
 /* Return true if TYPE seems to be the type "u8", otherwise false.  */
@@ -212,7 +211,7 @@ rust_inclusive_range_type_p (struct type
 static bool
 rust_u8_type_p (struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_INT
+  return (type->code () == TYPE_CODE_INT
 	  && TYPE_UNSIGNED (type)
 	  && TYPE_LENGTH (type) == 1);
 }
@@ -222,31 +221,11 @@ rust_u8_type_p (struct type *type)
 static bool
 rust_chartype_p (struct type *type)
 {
-  return (TYPE_CODE (type) == TYPE_CODE_CHAR
+  return (type->code () == TYPE_CODE_CHAR
 	  && TYPE_LENGTH (type) == 4
 	  && TYPE_UNSIGNED (type));
 }
 
-/* Return true if TYPE is a string type.  */
-
-static bool
-rust_is_string_type_p (struct type *type)
-{
-  LONGEST low_bound, high_bound;
-
-  type = check_typedef (type);
-  return ((TYPE_CODE (type) == TYPE_CODE_STRING)
-	  || (TYPE_CODE (type) == TYPE_CODE_PTR
-	      && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY
-		  && rust_u8_type_p (TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (type)))
-		  && get_array_bounds (TYPE_TARGET_TYPE (type), &low_bound,
-				       &high_bound)))
-	  || (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	      && !rust_enum_p (type)
-	      && rust_slice_type_p (type)
-	      && strcmp (TYPE_NAME (type), "&str") == 0));
-}
-
 /* If VALUE represents a trait object pointer, return the underlying
    pointer with the correct (i.e., runtime) type.  Otherwise, return
    NULL.  */
@@ -256,7 +235,7 @@ rust_get_trait_object_pointer (struct va
 {
   struct type *type = check_typedef (value_type (value));
 
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
+  if (type->code () != TYPE_CODE_STRUCT || type->num_fields () != 2)
     return NULL;
 
   /* Try to be a bit resilient if the ABI changes.  */
@@ -282,43 +261,7 @@ rust_get_trait_object_pointer (struct va
 
 
 
-/* la_emitchar implementation for Rust.  */
-
-static void
-rust_emitchar (int c, struct type *type, struct ui_file *stream, int quoter)
-{
-  if (!rust_chartype_p (type))
-    generic_emit_char (c, type, stream, quoter,
-		       target_charset (get_type_arch (type)));
-  else if (c == '\\' || c == quoter)
-    fprintf_filtered (stream, "\\%c", c);
-  else if (c == '\n')
-    fputs_filtered ("\\n", stream);
-  else if (c == '\r')
-    fputs_filtered ("\\r", stream);
-  else if (c == '\t')
-    fputs_filtered ("\\t", stream);
-  else if (c == '\0')
-    fputs_filtered ("\\0", stream);
-  else if (c >= 32 && c <= 127 && isprint (c))
-    fputc_filtered (c, stream);
-  else if (c <= 255)
-    fprintf_filtered (stream, "\\x%02x", c);
-  else
-    fprintf_filtered (stream, "\\u{%06x}", c);
-}
-
-/* la_printchar implementation for Rust.  */
-
-static void
-rust_printchar (int c, struct type *type, struct ui_file *stream)
-{
-  fputs_filtered ("'", stream);
-  LA_EMIT_CHAR (c, type, stream, '\'');
-  fputs_filtered ("'", stream);
-}
-
-/* la_printstr implementation for Rust.  */
+/* language_defn::printstr implementation for Rust.  */
 
 static void
 rust_printstr (struct ui_file *stream, struct type *type,
@@ -351,6 +294,10 @@ rust_printstr (struct ui_file *stream, s
 
 
 
+static void rust_value_print_inner (struct value *val, struct ui_file *stream,
+				    int recurse,
+				    const struct value_print_options *options);
+
 /* Helper function to print a string slice.  */
 
 static void
@@ -369,15 +316,14 @@ rust_val_print_str (struct ui_file *stre
 /* rust_val_print helper for structs and untagged unions.  */
 
 static void
-val_print_struct (struct type *type, int embedded_offset,
-		  CORE_ADDR address, struct ui_file *stream,
-		  int recurse, struct value *val,
+val_print_struct (struct value *val, struct ui_file *stream, int recurse,
 		  const struct value_print_options *options)
 {
   int i;
   int first_field;
+  struct type *type = check_typedef (value_type (val));
 
-  if (rust_slice_type_p (type) && strcmp (TYPE_NAME (type), "&str") == 0)
+  if (rust_slice_type_p (type) && strcmp (type->name (), "&str") == 0)
     {
       /* If what we are printing here is actually a string within a
 	 structure then VAL will be the original parent value, while TYPE
@@ -386,7 +332,7 @@ val_print_struct (struct type *type, int
 	 However, RUST_VAL_PRINT_STR looks up the fields of the string
 	 inside VAL, assuming that VAL is the string.
 	 So, recreate VAL as a value representing just the string.  */
-      val = value_at_lazy (type, value_address (val) + embedded_offset);
+      val = value_at_lazy (type, value_address (val));
       rust_val_print_str (stream, val, options);
       return;
     }
@@ -397,13 +343,13 @@ val_print_struct (struct type *type, int
 
   if (!is_tuple)
     {
-      if (TYPE_NAME (type) != NULL)
-        fprintf_filtered (stream, "%s", TYPE_NAME (type));
+      if (type->name () != NULL)
+        fprintf_filtered (stream, "%s", type->name ());
 
-      if (TYPE_NFIELDS (type) == 0)
+      if (type->num_fields () == 0)
         return;
 
-      if (TYPE_NAME (type) != NULL)
+      if (type->name () != NULL)
         fputs_filtered (" ", stream);
     }
 
@@ -416,9 +362,9 @@ val_print_struct (struct type *type, int
   opts.deref_ref = 0;
 
   first_field = 1;
-  for (i = 0; i < TYPE_NFIELDS (type); ++i)
+  for (i = 0; i < type->num_fields (); ++i)
     {
-      if (field_is_static (&TYPE_FIELD (type, i)))
+      if (field_is_static (&type->field (i)))
         continue;
 
       if (!first_field)
@@ -436,15 +382,13 @@ val_print_struct (struct type *type, int
 
       if (!is_tuple && !is_tuple_struct)
         {
-	  fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+	  fputs_styled (TYPE_FIELD_NAME (type, i),
+			variable_name_style.style (), stream);
 	  fputs_filtered (": ", stream);
         }
 
-      val_print (TYPE_FIELD_TYPE (type, i),
-		 embedded_offset + TYPE_FIELD_BITPOS (type, i) / 8,
-		 address,
-		 stream, recurse + 1, val, &opts,
-		 current_language);
+      rust_value_print_inner (value_field (val, i), stream, recurse + 1,
+			      &opts);
     }
 
   if (options->prettyformat)
@@ -462,34 +406,37 @@ val_print_struct (struct type *type, int
 /* rust_val_print helper for discriminated unions (Rust enums).  */
 
 static void
-rust_print_enum (struct type *type, int embedded_offset,
-		 CORE_ADDR address, struct ui_file *stream,
-		 int recurse, struct value *val,
+rust_print_enum (struct value *val, struct ui_file *stream, int recurse,
 		 const struct value_print_options *options)
 {
   struct value_print_options opts = *options;
+  struct type *type = check_typedef (value_type (val));
 
   opts.deref_ref = 0;
 
+  gdb_assert (rust_enum_p (type));
+  gdb::array_view<const gdb_byte> view (value_contents_for_printing (val),
+					TYPE_LENGTH (value_type (val)));
+  type = resolve_dynamic_type (type, view, value_address (val));
+
   if (rust_empty_enum_p (type))
     {
       /* Print the enum type name here to be more clear.  */
       fprintf_filtered (stream, _("%s {%p[<No data fields>%p]}"),
-			TYPE_NAME (type),
+			type->name (),
 			metadata_style.style ().ptr (), nullptr);
       return;
     }
 
-  const gdb_byte *valaddr = value_contents_for_printing (val);
-  struct field *variant_field = rust_enum_variant (type, valaddr);
-  embedded_offset += FIELD_BITPOS (*variant_field) / 8;
-  struct type *variant_type = FIELD_TYPE (*variant_field);
+  int variant_fieldno = rust_enum_variant (type);
+  val = value_field (val, variant_fieldno);
+  struct type *variant_type = type->field (variant_fieldno).type ();
 
-  int nfields = TYPE_NFIELDS (variant_type);
+  int nfields = variant_type->num_fields ();
 
   bool is_tuple = rust_tuple_struct_type_p (variant_type);
 
-  fprintf_filtered (stream, "%s", TYPE_NAME (variant_type));
+  fprintf_filtered (stream, "%s", variant_type->name ());
   if (nfields == 0)
     {
       /* In case of a nullary variant like 'None', just output
@@ -507,22 +454,19 @@ rust_print_enum (struct type *type, int
     }
 
   bool first_field = true;
-  for (int j = 0; j < TYPE_NFIELDS (variant_type); j++)
+  for (int j = 0; j < variant_type->num_fields (); j++)
     {
       if (!first_field)
 	fputs_filtered (", ", stream);
       first_field = false;
 
       if (!is_tuple)
-	fprintf_filtered (stream, "%s: ",
-			  TYPE_FIELD_NAME (variant_type, j));
+	fprintf_filtered (stream, "%ps: ",
+			  styled_string (variable_name_style.style (),
+					 TYPE_FIELD_NAME (variant_type, j)));
 
-      val_print (TYPE_FIELD_TYPE (variant_type, j),
-		 (embedded_offset
-		  + TYPE_FIELD_BITPOS (variant_type, j) / 8),
-		 address,
-		 stream, recurse + 1, val, &opts,
-		 current_language);
+      rust_value_print_inner (value_field (val, j), stream, recurse + 1,
+			      &opts);
     }
 
   if (is_tuple)
@@ -545,60 +489,61 @@ static const struct generic_val_print_de
   "]"
 };
 
-/* la_val_print implementation for Rust.  */
-
+/* la_value_print_inner implementation for Rust.  */
 static void
-rust_val_print (struct type *type, int embedded_offset,
-		CORE_ADDR address, struct ui_file *stream, int recurse,
-		struct value *val,
-		const struct value_print_options *options)
+rust_value_print_inner (struct value *val, struct ui_file *stream,
+			int recurse,
+			const struct value_print_options *options)
 {
-  const gdb_byte *valaddr = value_contents_for_printing (val);
+  struct value_print_options opts = *options;
+  opts.deref_ref = 1;
 
-  type = check_typedef (type);
-  switch (TYPE_CODE (type))
+  if (opts.prettyformat == Val_prettyformat_default)
+    opts.prettyformat = (opts.prettyformat_structs
+			 ? Val_prettyformat : Val_no_prettyformat);
+
+  struct type *type = check_typedef (value_type (val));
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
       {
 	LONGEST low_bound, high_bound;
 	
-	if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY
+	if (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_ARRAY
 	    && rust_u8_type_p (TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (type)))
 	    && get_array_bounds (TYPE_TARGET_TYPE (type), &low_bound,
-				 &high_bound)) {
-	  /* We have a pointer to a byte string, so just print
-	     that.  */
-	  struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type));
-	  CORE_ADDR addr;
-	  struct gdbarch *arch = get_type_arch (type);
-	  int unit_size = gdbarch_addressable_memory_unit_size (arch);
+				 &high_bound))
+	  {
+	    /* We have a pointer to a byte string, so just print
+	       that.  */
+	    struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type));
+	    CORE_ADDR addr = value_as_address (val);
+	    struct gdbarch *arch = get_type_arch (type);
 
-	  addr = unpack_pointer (type, valaddr + embedded_offset * unit_size);
-	  if (options->addressprint)
-	    {
-	      fputs_filtered (paddress (arch, addr), stream);
-	      fputs_filtered (" ", stream);
-	    }
+	    if (opts.addressprint)
+	      {
+		fputs_filtered (paddress (arch, addr), stream);
+		fputs_filtered (" ", stream);
+	      }
 
-	  fputs_filtered ("b", stream);
-	  val_print_string (TYPE_TARGET_TYPE (elttype), "ASCII", addr,
-			    high_bound - low_bound + 1, stream,
-			    options);
-	  break;
-	}
+	    fputs_filtered ("b", stream);
+	    val_print_string (TYPE_TARGET_TYPE (elttype), "ASCII", addr,
+			      high_bound - low_bound + 1, stream,
+			      &opts);
+	    break;
+	  }
       }
-      /* Fall through.  */
+      goto generic_print;
 
     case TYPE_CODE_METHODPTR:
     case TYPE_CODE_MEMBERPTR:
-      c_val_print (type, embedded_offset, address, stream,
-		   recurse, val, options);
+      c_value_print_inner (val, stream, recurse, &opts);
       break;
 
     case TYPE_CODE_INT:
       /* Recognize the unit type.  */
       if (TYPE_UNSIGNED (type) && TYPE_LENGTH (type) == 0
-	  && TYPE_NAME (type) != NULL && strcmp (TYPE_NAME (type), "()") == 0)
+	  && type->name () != NULL && strcmp (type->name (), "()") == 0)
 	{
 	  fputs_filtered ("()", stream);
 	  break;
@@ -607,8 +552,6 @@ rust_val_print (struct type *type, int e
 
     case TYPE_CODE_STRING:
       {
-	struct gdbarch *arch = get_type_arch (type);
-	int unit_size = gdbarch_addressable_memory_unit_size (arch);
 	LONGEST low_bound, high_bound;
 
 	if (!get_array_bounds (type, &low_bound, &high_bound))
@@ -619,8 +562,8 @@ rust_val_print (struct type *type, int e
 	   encoding.  */
 	fputs_filtered ("b", stream);
 	rust_printstr (stream, TYPE_TARGET_TYPE (type),
-		       valaddr + embedded_offset * unit_size,
-		       high_bound - low_bound + 1, "ASCII", 0, options);
+		       value_contents_for_printing (val),
+		       high_bound - low_bound + 1, "ASCII", 0, &opts);
       }
       break;
 
@@ -642,24 +585,20 @@ rust_val_print (struct type *type, int e
 	 for printing a union is same as that for a struct, the only
 	 difference is that the input type will have overlapping
 	 fields.  */
-      val_print_struct (type, embedded_offset, address, stream,
-			recurse, val, options);
+      val_print_struct (val, stream, recurse, &opts);
       break;
 
     case TYPE_CODE_STRUCT:
       if (rust_enum_p (type))
-	rust_print_enum (type, embedded_offset, address, stream,
-			 recurse, val, options);
+	rust_print_enum (val, stream, recurse, &opts);
       else
-	val_print_struct (type, embedded_offset, address, stream,
-			  recurse, val, options);
+	val_print_struct (val, stream, recurse, &opts);
       break;
 
     default:
     generic_print:
       /* Nothing special yet.  */
-      generic_val_print (type, embedded_offset, address, stream,
-			 recurse, val, options, &rust_decorations);
+      generic_value_print (val, stream, recurse, &opts, &rust_decorations);
     }
 }
 
@@ -681,7 +620,7 @@ rust_print_struct_def (struct type *type
   /* Print a tuple type simply.  */
   if (rust_tuple_type_p (type))
     {
-      fputs_filtered (TYPE_NAME (type), stream);
+      fputs_filtered (type->name (), stream);
       return;
     }
 
@@ -698,13 +637,11 @@ rust_print_struct_def (struct type *type
 
   /* Compute properties of TYPE here because, in the enum case, the
      rest of the code ends up looking only at the variant part.  */
-  const char *tagname = TYPE_NAME (type);
+  const char *tagname = type->name ();
   bool is_tuple_struct = rust_tuple_struct_type_p (type);
   bool is_tuple = rust_tuple_type_p (type);
   bool is_enum = rust_enum_p (type);
 
-  int enum_discriminant_index = -1;
-
   if (for_rust_enum)
     {
       /* Already printing an outer enum, so nothing to print here.  */
@@ -715,27 +652,11 @@ rust_print_struct_def (struct type *type
       if (is_enum)
 	{
 	  fputs_filtered ("enum ", stream);
-
-	  if (rust_empty_enum_p (type))
-	    {
-	      if (tagname != NULL)
-		{
-		  fputs_filtered (tagname, stream);
-		  fputs_filtered (" ", stream);
-		}
-	      fputs_filtered ("{}", stream);
-	      return;
-	    }
-
-	  type = TYPE_FIELD_TYPE (type, 0);
-
-	  struct dynamic_prop *discriminant_prop
-	    = get_dyn_prop (DYN_PROP_DISCRIMINATED, type);
-	  struct discriminant_info *info
-	    = (struct discriminant_info *) discriminant_prop->data.baton;
-	  enum_discriminant_index = info->discriminant_index;
+	  dynamic_prop *prop = type->dyn_prop (DYN_PROP_VARIANT_PARTS);
+	  if (prop != nullptr && prop->kind () == PROP_TYPE)
+	    type = prop->original_type ();
 	}
-      else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+      else if (type->code () == TYPE_CODE_STRUCT)
 	fputs_filtered ("struct ", stream);
       else
 	fputs_filtered ("union ", stream);
@@ -744,7 +665,7 @@ rust_print_struct_def (struct type *type
 	fputs_filtered (tagname, stream);
     }
 
-  if (TYPE_NFIELDS (type) == 0 && !is_tuple)
+  if (type->num_fields () == 0 && !is_tuple)
     return;
   if (for_rust_enum && !flags->print_offsets)
     fputs_filtered (is_tuple_struct ? "(" : "{", stream);
@@ -756,11 +677,11 @@ rust_print_struct_def (struct type *type
      field indices here because it simplifies calls to
      print_offset_data::update below.  */
   std::vector<int> fields;
-  for (int i = 0; i < TYPE_NFIELDS (type); ++i)
+  for (int i = 0; i < type->num_fields (); ++i)
     {
-      if (field_is_static (&TYPE_FIELD (type, i)))
+      if (field_is_static (&type->field (i)))
 	continue;
-      if (is_enum && i == enum_discriminant_index)
+      if (is_enum && TYPE_FIELD_ARTIFICIAL (type, i))
 	continue;
       fields.push_back (i);
     }
@@ -776,8 +697,8 @@ rust_print_struct_def (struct type *type
     {
       QUIT;
 
-      gdb_assert (!field_is_static (&TYPE_FIELD (type, i)));
-      gdb_assert (! (is_enum && i == enum_discriminant_index));
+      gdb_assert (!field_is_static (&type->field (i)));
+      gdb_assert (! (is_enum && TYPE_FIELD_ARTIFICIAL (type, i)));
 
       if (flags->print_offsets)
 	podata->update (type, i, stream);
@@ -791,11 +712,14 @@ rust_print_struct_def (struct type *type
       if (!for_rust_enum || flags->print_offsets)
 	print_spaces_filtered (level + 2, stream);
       if (is_enum)
-	fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+	fputs_styled (TYPE_FIELD_NAME (type, i), variable_name_style.style (),
+		      stream);
       else if (!is_tuple_struct)
-	fprintf_filtered (stream, "%s: ", TYPE_FIELD_NAME (type, i));
+	fprintf_filtered (stream, "%ps: ",
+			  styled_string (variable_name_style.style (),
+					 TYPE_FIELD_NAME (type, i)));
 
-      rust_internal_print_type (TYPE_FIELD_TYPE (type, i), NULL,
+      rust_internal_print_type (type->field (i).type (), NULL,
 				stream, (is_enum ? show : show - 1),
 				level + 2, flags, is_enum, podata);
       if (!for_rust_enum || flags->print_offsets)
@@ -803,7 +727,7 @@ rust_print_struct_def (struct type *type
       /* Note that this check of "I" is ok because we only sorted the
 	 fields by offset when print_offsets was set, so we won't take
 	 this branch in that case.  */
-      else if (i + 1 < TYPE_NFIELDS (type))
+      else if (i + 1 < type->num_fields ())
 	fputs_filtered (", ", stream);
     }
 
@@ -821,19 +745,6 @@ rust_print_struct_def (struct type *type
   fputs_filtered (is_tuple_struct ? ")" : "}", stream);
 }
 
-/* la_print_typedef implementation for Rust.  */
-
-static void
-rust_print_typedef (struct type *type,
-		    struct symbol *new_symbol,
-		    struct ui_file *stream)
-{
-  type = check_typedef (type);
-  fprintf_filtered (stream, "type %s = ", new_symbol->print_name ());
-  type_print (type, "", stream, 0);
-  fprintf_filtered (stream, ";");
-}
-
 /* la_print_type implementation for Rust.  */
 
 static void
@@ -844,19 +755,19 @@ rust_internal_print_type (struct type *t
 {
   QUIT;
   if (show <= 0
-      && TYPE_NAME (type) != NULL)
+      && type->name () != NULL)
     {
       /* Rust calls the unit type "void" in its debuginfo,
          but we don't want to print it as that.  */
-      if (TYPE_CODE (type) == TYPE_CODE_VOID)
+      if (type->code () == TYPE_CODE_VOID)
         fputs_filtered ("()", stream);
       else
-        fputs_filtered (TYPE_NAME (type), stream);
+        fputs_filtered (type->name (), stream);
       return;
     }
 
   type = check_typedef (type);
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_VOID:
       /* If we have an enum, we've already printed the type's
@@ -875,17 +786,17 @@ rust_internal_print_type (struct type *t
       if (varstring != NULL)
 	fputs_filtered (varstring, stream);
       fputs_filtered ("(", stream);
-      for (int i = 0; i < TYPE_NFIELDS (type); ++i)
+      for (int i = 0; i < type->num_fields (); ++i)
 	{
 	  QUIT;
 	  if (i > 0)
 	    fputs_filtered (", ", stream);
-	  rust_internal_print_type (TYPE_FIELD_TYPE (type, i), "", stream,
+	  rust_internal_print_type (type->field (i).type (), "", stream,
 				    -1, 0, flags, false, podata);
 	}
       fputs_filtered (")", stream);
       /* If it returns unit, we can omit the return type.  */
-      if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+      if (TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
         {
           fputs_filtered (" -> ", stream);
           rust_internal_print_type (TYPE_TARGET_TYPE (type), "", stream,
@@ -902,8 +813,8 @@ rust_internal_print_type (struct type *t
 				  stream, show - 1, level, flags, false,
 				  podata);
 
-	if (TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (type)) == PROP_LOCEXPR
-	    || TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (type)) == PROP_LOCLIST)
+	if (type->bounds ()->high.kind () == PROP_LOCEXPR
+	    || type->bounds ()->high.kind () == PROP_LOCLIST)
 	  fprintf_filtered (stream, "; variable length");
 	else if (get_array_bounds (type, &low_bound, &high_bound))
 	  fprintf_filtered (stream, "; %s",
@@ -923,26 +834,28 @@ rust_internal_print_type (struct type *t
 	int len = 0;
 
 	fputs_filtered ("enum ", stream);
-	if (TYPE_NAME (type) != NULL)
+	if (type->name () != NULL)
 	  {
-	    fputs_filtered (TYPE_NAME (type), stream);
+	    fputs_filtered (type->name (), stream);
 	    fputs_filtered (" ", stream);
-	    len = strlen (TYPE_NAME (type));
+	    len = strlen (type->name ());
 	  }
 	fputs_filtered ("{\n", stream);
 
-	for (int i = 0; i < TYPE_NFIELDS (type); ++i)
+	for (int i = 0; i < type->num_fields (); ++i)
 	  {
 	    const char *name = TYPE_FIELD_NAME (type, i);
 
 	    QUIT;
 
 	    if (len > 0
-		&& strncmp (name, TYPE_NAME (type), len) == 0
+		&& strncmp (name, type->name (), len) == 0
 		&& name[len] == ':'
 		&& name[len + 1] == ':')
 	      name += len + 2;
-	    fprintfi_filtered (level + 2, stream, "%s,\n", name);
+	    fprintfi_filtered (level + 2, stream, "%ps,\n",
+			       styled_string (variable_name_style.style (),
+					      name));
 	  }
 
 	fputs_filtered ("}", stream);
@@ -951,8 +864,8 @@ rust_internal_print_type (struct type *t
 
     case TYPE_CODE_PTR:
       {
-	if (TYPE_NAME (type) != nullptr)
-	  fputs_filtered (TYPE_NAME (type), stream);
+	if (type->name () != nullptr)
+	  fputs_filtered (type->name (), stream);
 	else
 	  {
 	    /* We currently can't distinguish between pointers and
@@ -969,16 +882,6 @@ rust_internal_print_type (struct type *t
     }
 }
 
-static void
-rust_print_type (struct type *type, const char *varstring,
-		 struct ui_file *stream, int show, int level,
-		 const struct type_print_options *flags)
-{
-  print_offset_data podata;
-  rust_internal_print_type (type, varstring, stream, show, level,
-			    flags, false, &podata);
-}
-
 
 
 /* Like arch_composite_type, but uses TYPE to decide how to allocate
@@ -999,29 +902,29 @@ rust_composite_type (struct type *origin
   if (field2 != NULL)
     ++nfields;
 
-  TYPE_CODE (result) = TYPE_CODE_STRUCT;
-  TYPE_NAME (result) = name;
+  result->set_code (TYPE_CODE_STRUCT);
+  result->set_name (name);
 
-  TYPE_NFIELDS (result) = nfields;
-  TYPE_FIELDS (result)
-    = (struct field *) TYPE_ZALLOC (result, nfields * sizeof (struct field));
+  result->set_num_fields (nfields);
+  result->set_fields
+    ((struct field *) TYPE_ZALLOC (result, nfields * sizeof (struct field)));
 
   i = 0;
   bitpos = 0;
   if (field1 != NULL)
     {
-      struct field *field = &TYPE_FIELD (result, i);
+      struct field *field = &result->field (i);
 
       SET_FIELD_BITPOS (*field, bitpos);
       bitpos += TYPE_LENGTH (type1) * TARGET_CHAR_BIT;
 
       FIELD_NAME (*field) = field1;
-      FIELD_TYPE (*field) = type1;
+      field->set_type (type1);
       ++i;
     }
   if (field2 != NULL)
     {
-      struct field *field = &TYPE_FIELD (result, i);
+      struct field *field = &result->field (i);
       unsigned align = type_align (type2);
 
       if (align != 0)
@@ -1036,14 +939,14 @@ rust_composite_type (struct type *origin
       SET_FIELD_BITPOS (*field, bitpos);
 
       FIELD_NAME (*field) = field2;
-      FIELD_TYPE (*field) = type2;
+      field->set_type (type2);
       ++i;
     }
 
   if (i > 0)
     TYPE_LENGTH (result)
       = (TYPE_FIELD_BITPOS (result, i - 1) / TARGET_CHAR_BIT +
-	 TYPE_LENGTH (TYPE_FIELD_TYPE (result, i - 1)));
+	 TYPE_LENGTH (result->field (i - 1).type ()));
   return result;
 }
 
@@ -1084,51 +987,6 @@ enum rust_primitive_types
   nr_rust_primitive_types
 };
 
-/* la_language_arch_info implementation for Rust.  */
-
-static void
-rust_language_arch_info (struct gdbarch *gdbarch,
-			 struct language_arch_info *lai)
-{
-  const struct builtin_type *builtin = builtin_type (gdbarch);
-  struct type *tem;
-  struct type **types;
-  unsigned int length;
-
-  types = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_rust_primitive_types + 1,
-				  struct type *);
-
-  types[rust_primitive_bool] = arch_boolean_type (gdbarch, 8, 1, "bool");
-  types[rust_primitive_char] = arch_character_type (gdbarch, 32, 1, "char");
-  types[rust_primitive_i8] = arch_integer_type (gdbarch, 8, 0, "i8");
-  types[rust_primitive_u8] = arch_integer_type (gdbarch, 8, 1, "u8");
-  types[rust_primitive_i16] = arch_integer_type (gdbarch, 16, 0, "i16");
-  types[rust_primitive_u16] = arch_integer_type (gdbarch, 16, 1, "u16");
-  types[rust_primitive_i32] = arch_integer_type (gdbarch, 32, 0, "i32");
-  types[rust_primitive_u32] = arch_integer_type (gdbarch, 32, 1, "u32");
-  types[rust_primitive_i64] = arch_integer_type (gdbarch, 64, 0, "i64");
-  types[rust_primitive_u64] = arch_integer_type (gdbarch, 64, 1, "u64");
-
-  length = 8 * TYPE_LENGTH (builtin->builtin_data_ptr);
-  types[rust_primitive_isize] = arch_integer_type (gdbarch, length, 0, "isize");
-  types[rust_primitive_usize] = arch_integer_type (gdbarch, length, 1, "usize");
-
-  types[rust_primitive_f32] = arch_float_type (gdbarch, 32, "f32",
-					       floatformats_ieee_single);
-  types[rust_primitive_f64] = arch_float_type (gdbarch, 64, "f64",
-					       floatformats_ieee_double);
-
-  types[rust_primitive_unit] = arch_integer_type (gdbarch, 0, 1, "()");
-
-  tem = make_cv_type (1, 0, types[rust_primitive_u8], NULL);
-  types[rust_primitive_str] = rust_slice_type ("&str", tem,
-					       types[rust_primitive_usize]);
-
-  lai->primitive_type_vector = types;
-  lai->bool_type_default = types[rust_primitive_bool];
-  lai->string_char_type = types[rust_primitive_u8];
-}
-
 
 
 /* A helper for rust_evaluate_subexp that handles OP_FUNCALL.  */
@@ -1156,12 +1014,12 @@ rust_evaluate_funcall (struct expression
 
   /* Evaluate the argument to STRUCTOP_STRUCT, then find its
      type in order to look up the method.  */
-  arg0 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+  arg0 = evaluate_subexp (nullptr, exp, pos, noside);
 
   if (noside == EVAL_SKIP)
     {
       for (i = 0; i < num_args; ++i)
-	evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	evaluate_subexp (nullptr, exp, pos, noside);
       return arg0;
     }
 
@@ -1169,19 +1027,19 @@ rust_evaluate_funcall (struct expression
   args[0] = arg0;
 
   /* We don't yet implement real Deref semantics.  */
-  while (TYPE_CODE (value_type (args[0])) == TYPE_CODE_PTR)
+  while (value_type (args[0])->code () == TYPE_CODE_PTR)
     args[0] = value_ind (args[0]);
 
   type = value_type (args[0]);
-  if ((TYPE_CODE (type) != TYPE_CODE_STRUCT
-       && TYPE_CODE (type) != TYPE_CODE_UNION
-       && TYPE_CODE (type) != TYPE_CODE_ENUM)
+  if ((type->code () != TYPE_CODE_STRUCT
+       && type->code () != TYPE_CODE_UNION
+       && type->code () != TYPE_CODE_ENUM)
       || rust_tuple_type_p (type))
     error (_("Method calls only supported on struct or enum types"));
-  if (TYPE_NAME (type) == NULL)
+  if (type->name () == NULL)
     error (_("Method call on nameless type"));
 
-  std::string name = std::string (TYPE_NAME (type)) + "::" + method;
+  std::string name = std::string (type->name ()) + "::" + method;
 
   block = get_selected_block (0);
   sym = lookup_symbol (name.c_str (), block, VAR_DOMAIN, NULL);
@@ -1189,16 +1047,16 @@ rust_evaluate_funcall (struct expression
     error (_("Could not find function named '%s'"), name.c_str ());
 
   fn_type = SYMBOL_TYPE (sym.symbol);
-  if (TYPE_NFIELDS (fn_type) == 0)
+  if (fn_type->num_fields () == 0)
     error (_("Function '%s' takes no arguments"), name.c_str ());
 
-  if (TYPE_CODE (TYPE_FIELD_TYPE (fn_type, 0)) == TYPE_CODE_PTR)
+  if (fn_type->field (0).type ()->code () == TYPE_CODE_PTR)
     args[0] = value_addr (args[0]);
 
   function = address_of_variable (sym.symbol, block);
 
   for (i = 0; i < num_args; ++i)
-    args[i + 1] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+    args[i + 1] = evaluate_subexp (nullptr, exp, pos, noside);
 
   if (noside == EVAL_AVOID_SIDE_EFFECTS)
     result = value_zero (TYPE_TARGET_TYPE (fn_type), not_lval);
@@ -1226,10 +1084,10 @@ rust_range (struct expression *exp, int
 
   if (kind == HIGH_BOUND_DEFAULT || kind == NONE_BOUND_DEFAULT
       || kind == NONE_BOUND_DEFAULT_EXCLUSIVE)
-    low = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+    low = evaluate_subexp (nullptr, exp, pos, noside);
   if (kind == LOW_BOUND_DEFAULT || kind == LOW_BOUND_DEFAULT_EXCLUSIVE
       || kind == NONE_BOUND_DEFAULT || kind == NONE_BOUND_DEFAULT_EXCLUSIVE)
-    high = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+    high = evaluate_subexp (nullptr, exp, pos, noside);
   bool inclusive = (kind == NONE_BOUND_DEFAULT || kind == LOW_BOUND_DEFAULT);
 
   if (noside == EVAL_SKIP)
@@ -1321,7 +1179,7 @@ rust_compute_range (struct type *type, s
   *high = 0;
   *kind = BOTH_BOUND_DEFAULT;
 
-  if (TYPE_NFIELDS (type) == 0)
+  if (type->num_fields () == 0)
     return;
 
   i = 0;
@@ -1331,7 +1189,7 @@ rust_compute_range (struct type *type, s
       *low = value_as_long (value_field (range, 0));
       ++i;
     }
-  if (TYPE_NFIELDS (type) > i
+  if (type->num_fields () > i
       && strcmp (TYPE_FIELD_NAME (type, i), "end") == 0)
     {
       *kind = (*kind == BOTH_BOUND_DEFAULT
@@ -1358,8 +1216,8 @@ rust_subscript (struct expression *exp,
   int want_slice = 0;
 
   ++*pos;
-  lhs = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-  rhs = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+  lhs = evaluate_subexp (nullptr, exp, pos, noside);
+  rhs = evaluate_subexp (nullptr, exp, pos, noside);
 
   if (noside == EVAL_SKIP)
     return lhs;
@@ -1379,22 +1237,22 @@ rust_subscript (struct expression *exp,
   if (noside == EVAL_AVOID_SIDE_EFFECTS)
     {
       struct type *base_type = nullptr;
-      if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+      if (type->code () == TYPE_CODE_ARRAY)
 	base_type = TYPE_TARGET_TYPE (type);
       else if (rust_slice_type_p (type))
 	{
-	  for (int i = 0; i < TYPE_NFIELDS (type); ++i)
+	  for (int i = 0; i < type->num_fields (); ++i)
 	    {
 	      if (strcmp (TYPE_FIELD_NAME (type, i), "data_ptr") == 0)
 		{
-		  base_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, i));
+		  base_type = TYPE_TARGET_TYPE (type->field (i).type ());
 		  break;
 		}
 	    }
 	  if (base_type == nullptr)
 	    error (_("Could not find 'data_ptr' in slice type"));
 	}
-      else if (TYPE_CODE (type) == TYPE_CODE_PTR)
+      else if (type->code () == TYPE_CODE_PTR)
 	base_type = TYPE_TARGET_TYPE (type);
       else
 	error (_("Cannot subscript non-array type"));
@@ -1423,7 +1281,7 @@ rust_subscript (struct expression *exp,
       LONGEST low_bound;
       struct value *base;
 
-      if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+      if (type->code () == TYPE_CODE_ARRAY)
 	{
 	  base = lhs;
 	  if (!get_array_bounds (type, &low_bound, &high_bound))
@@ -1441,7 +1299,7 @@ rust_subscript (struct expression *exp,
 	  low_bound = 0;
 	  high_bound = value_as_long (len);
 	}
-      else if (TYPE_CODE (type) == TYPE_CODE_PTR)
+      else if (type->code () == TYPE_CODE_PTR)
 	{
 	  base = lhs;
 	  low_bound = 0;
@@ -1483,7 +1341,7 @@ rust_subscript (struct expression *exp,
 						  "usize");
 	  const char *new_name = ((type != nullptr
 				   && rust_slice_type_p (type))
-				  ? TYPE_NAME (type) : "&[*gdb*]");
+				  ? type->name () : "&[*gdb*]");
 
 	  slice = rust_slice_type (new_name, value_type (result), usize);
 
@@ -1538,13 +1396,13 @@ rust_evaluate_subexp (struct type *expec
 	struct value *value;
 
 	++*pos;
-	value = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	value = evaluate_subexp (nullptr, exp, pos, noside);
 	if (noside == EVAL_SKIP)
 	  {
 	    /* Preserving the type is enough.  */
 	    return value;
 	  }
-	if (TYPE_CODE (value_type (value)) == TYPE_CODE_BOOL)
+	if (value_type (value)->code () == TYPE_CODE_BOOL)
 	  result = value_from_longest (value_type (value),
 				       value_logical_not (value));
 	else
@@ -1669,49 +1527,45 @@ rust_evaluate_subexp (struct type *expec
         pc = (*pos)++;
         field_number = longest_to_int (exp->elts[pc + 1].longconst);
         (*pos) += 2;
-        lhs = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	lhs = evaluate_subexp (nullptr, exp, pos, noside);
 
-        type = value_type (lhs);
+	type = value_type (lhs);
 
-	if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+	if (type->code () == TYPE_CODE_STRUCT)
 	  {
 	    struct type *outer_type = NULL;
 
 	    if (rust_enum_p (type))
 	      {
+		gdb::array_view<const gdb_byte> view (value_contents (lhs),
+						      TYPE_LENGTH (type));
+		type = resolve_dynamic_type (type, view, value_address (lhs));
+
 		if (rust_empty_enum_p (type))
 		  error (_("Cannot access field %d of empty enum %s"),
-			 field_number, TYPE_NAME (type));
-
-		const gdb_byte *valaddr = value_contents (lhs);
-		struct field *variant_field = rust_enum_variant (type, valaddr);
-
-		struct value *union_value = value_primitive_field (lhs, 0, 0,
-								   type);
+			 field_number, type->name ());
 
-		int fieldno = (variant_field
-			       - &TYPE_FIELD (value_type (union_value), 0));
-		lhs = value_primitive_field (union_value, 0, fieldno,
-					     value_type (union_value));
+		int fieldno = rust_enum_variant (type);
+		lhs = value_primitive_field (lhs, 0, fieldno, type);
 		outer_type = type;
 		type = value_type (lhs);
 	      }
 
 	    /* Tuples and tuple structs */
-	    nfields = TYPE_NFIELDS (type);
+	    nfields = type->num_fields ();
 
 	    if (field_number >= nfields || field_number < 0)
 	      {
 		if (outer_type != NULL)
 		  error(_("Cannot access field %d of variant %s::%s, "
 			  "there are only %d fields"),
-			field_number, TYPE_NAME (outer_type),
-			rust_last_path_segment (TYPE_NAME (type)),
+			field_number, outer_type->name (),
+			rust_last_path_segment (type->name ()),
 			nfields);
 		else
 		  error(_("Cannot access field %d of %s, "
 			  "there are only %d fields"),
-			field_number, TYPE_NAME (type), nfields);
+			field_number, type->name (), nfields);
 	      }
 
 	    /* Tuples are tuple structs too.  */
@@ -1719,13 +1573,13 @@ rust_evaluate_subexp (struct type *expec
 	      {
 		if (outer_type != NULL)
 		  error(_("Variant %s::%s is not a tuple variant"),
-			TYPE_NAME (outer_type),
-			rust_last_path_segment (TYPE_NAME (type)));
+			outer_type->name (),
+			rust_last_path_segment (type->name ()));
 		else
 		  error(_("Attempting to access anonymous field %d "
 			  "of %s, which is not a tuple, tuple struct, or "
 			  "tuple-like variant"),
-		      field_number, TYPE_NAME (type));
+		      field_number, type->name ());
 	      }
 
 	    result = value_primitive_field (lhs, 0, field_number, type);
@@ -1745,34 +1599,30 @@ tuple structs, and tuple-like enum varia
         pc = (*pos)++;
         tem = longest_to_int (exp->elts[pc + 1].longconst);
         (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
-        lhs = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+	lhs = evaluate_subexp (nullptr, exp, pos, noside);
 
 	const char *field_name = &exp->elts[pc + 2].string;
         type = value_type (lhs);
-        if (TYPE_CODE (type) == TYPE_CODE_STRUCT && rust_enum_p (type))
+        if (type->code () == TYPE_CODE_STRUCT && rust_enum_p (type))
 	  {
+	    gdb::array_view<const gdb_byte> view (value_contents (lhs),
+						  TYPE_LENGTH (type));
+	    type = resolve_dynamic_type (type, view, value_address (lhs));
+
 	    if (rust_empty_enum_p (type))
 	      error (_("Cannot access field %s of empty enum %s"),
-		     field_name, TYPE_NAME (type));
-
-	    const gdb_byte *valaddr = value_contents (lhs);
-	    struct field *variant_field = rust_enum_variant (type, valaddr);
+		     field_name, type->name ());
 
-	    struct value *union_value = value_primitive_field (lhs, 0, 0,
-							       type);
-
-	    int fieldno = (variant_field
-			   - &TYPE_FIELD (value_type (union_value), 0));
-	    lhs = value_primitive_field (union_value, 0, fieldno,
-					 value_type (union_value));
+	    int fieldno = rust_enum_variant (type);
+	    lhs = value_primitive_field (lhs, 0, fieldno, type);
 
 	    struct type *outer_type = type;
 	    type = value_type (lhs);
 	    if (rust_tuple_type_p (type) || rust_tuple_struct_type_p (type))
 		error (_("Attempting to access named field %s of tuple "
 			 "variant %s::%s, which has only anonymous fields"),
-		       field_name, TYPE_NAME (outer_type),
-		       rust_last_path_segment (TYPE_NAME (type)));
+		       field_name, outer_type->name (),
+		       rust_last_path_segment (type->name ()));
 
 	    try
 	      {
@@ -1782,8 +1632,8 @@ tuple structs, and tuple-like enum varia
 	    catch (const gdb_exception_error &except)
 	      {
 		error (_("Could not find field %s of struct variant %s::%s"),
-		       field_name, TYPE_NAME (outer_type),
-		       rust_last_path_segment (TYPE_NAME (type)));
+		       field_name, outer_type->name (),
+		       rust_last_path_segment (type->name ()));
 	      }
 	  }
 	else
@@ -2042,76 +1892,6 @@ rust_operator_check (struct expression *
 
 
 
-/* Implementation of la_lookup_symbol_nonlocal for Rust.  */
-
-static struct block_symbol
-rust_lookup_symbol_nonlocal (const struct language_defn *langdef,
-			     const char *name,
-			     const struct block *block,
-			     const domain_enum domain)
-{
-  struct block_symbol result = {};
-
-  if (symbol_lookup_debug)
-    {
-      fprintf_unfiltered (gdb_stdlog,
-			  "rust_lookup_symbol_non_local"
-			  " (%s, %s (scope %s), %s)\n",
-			  name, host_address_to_string (block),
-			  block_scope (block), domain_name (domain));
-    }
-
-  /* Look up bare names in the block's scope.  */
-  std::string scopedname;
-  if (name[cp_find_first_component (name)] == '\0')
-    {
-      const char *scope = block_scope (block);
-
-      if (scope[0] != '\0')
-	{
-	  scopedname = std::string (scope) + "::" + name;
-	  name = scopedname.c_str ();
-	}
-      else
-	name = NULL;
-    }
-
-  if (name != NULL)
-    {
-      result = lookup_symbol_in_static_block (name, block, domain);
-      if (result.symbol == NULL)
-	result = lookup_global_symbol (name, block, domain);
-    }
-  return result;
-}
-
-
-
-/* la_sniff_from_mangled_name for Rust.  */
-
-static int
-rust_sniff_from_mangled_name (const char *mangled, char **demangled)
-{
-  *demangled = gdb_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
-  return *demangled != NULL;
-}
-
-
-
-/* la_watch_location_expression for Rust.  */
-
-static gdb::unique_xmalloc_ptr<char>
-rust_watch_location_expression (struct type *type, CORE_ADDR addr)
-{
-  type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
-  std::string name = type_to_string (type);
-  return gdb::unique_xmalloc_ptr<char>
-    (xstrprintf ("*(%s as *mut %s)", core_addr_to_string (addr),
-		 name.c_str ()));
-}
-
-
-
 static const struct exp_descriptor exp_descriptor_rust = 
 {
   rust_print_subexp,
@@ -2127,7 +1907,9 @@ static const char *rust_extensions[] =
   ".rs", NULL
 };
 
-extern const struct language_defn rust_language_defn =
+/* Constant data representing the Rust language.  */
+
+extern const struct language_data rust_language_data =
 {
   "rust",
   "Rust",
@@ -2138,40 +1920,238 @@ extern const struct language_defn rust_l
   macro_expansion_no,
   rust_extensions,
   &exp_descriptor_rust,
-  rust_parse,
-  null_post_parser,
-  rust_printchar,		/* Print a character constant */
-  rust_printstr,		/* Function to print string constant */
-  rust_emitchar,		/* Print a single char */
-  rust_print_type,		/* Print a type using appropriate syntax */
-  rust_print_typedef,		/* Print a typedef using appropriate syntax */
-  rust_val_print,		/* Print a value using appropriate syntax */
-  c_value_print,		/* Print a top-level value */
-  default_read_var_value,	/* la_read_var_value */
-  NULL,				/* Language specific skip_trampoline */
   NULL,				/* name_of_this */
   false,			/* la_store_sym_names_in_linkage_form_p */
-  rust_lookup_symbol_nonlocal,	/* lookup_symbol_nonlocal */
-  basic_lookup_transparent_type,/* lookup_transparent_type */
-  gdb_demangle,			/* Language specific symbol demangler */
-  rust_sniff_from_mangled_name,
-  NULL,				/* Language specific
-				   class_name_from_physname */
   c_op_print_tab,		/* expression operators for printing */
   1,				/* c-style arrays */
   0,				/* String lower bound */
-  default_word_break_characters,
-  default_collect_symbol_completion_matches,
-  rust_language_arch_info,
-  default_print_array_index,
-  default_pass_by_reference,
-  rust_watch_location_expression,
-  NULL,				/* la_get_symbol_name_matcher */
-  iterate_over_symbols,
-  default_search_name_hash,
   &default_varobj_ops,
-  NULL,
-  NULL,
-  rust_is_string_type_p,
   "{...}"			/* la_struct_too_deep_ellipsis */
 };
+
+/* Class representing the Rust language.  */
+
+class rust_language : public language_defn
+{
+public:
+  rust_language ()
+    : language_defn (language_rust, rust_language_data)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+  void language_arch_info (struct gdbarch *gdbarch,
+			   struct language_arch_info *lai) const override
+  {
+    const struct builtin_type *builtin = builtin_type (gdbarch);
+
+    struct type **types
+      = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_rust_primitive_types + 1,
+				struct type *);
+
+    types[rust_primitive_bool] = arch_boolean_type (gdbarch, 8, 1, "bool");
+    types[rust_primitive_char] = arch_character_type (gdbarch, 32, 1, "char");
+    types[rust_primitive_i8] = arch_integer_type (gdbarch, 8, 0, "i8");
+    types[rust_primitive_u8] = arch_integer_type (gdbarch, 8, 1, "u8");
+    types[rust_primitive_i16] = arch_integer_type (gdbarch, 16, 0, "i16");
+    types[rust_primitive_u16] = arch_integer_type (gdbarch, 16, 1, "u16");
+    types[rust_primitive_i32] = arch_integer_type (gdbarch, 32, 0, "i32");
+    types[rust_primitive_u32] = arch_integer_type (gdbarch, 32, 1, "u32");
+    types[rust_primitive_i64] = arch_integer_type (gdbarch, 64, 0, "i64");
+    types[rust_primitive_u64] = arch_integer_type (gdbarch, 64, 1, "u64");
+
+    unsigned int length = 8 * TYPE_LENGTH (builtin->builtin_data_ptr);
+    types[rust_primitive_isize] = arch_integer_type (gdbarch, length, 0, "isize");
+    types[rust_primitive_usize] = arch_integer_type (gdbarch, length, 1, "usize");
+
+    types[rust_primitive_f32] = arch_float_type (gdbarch, 32, "f32",
+						 floatformats_ieee_single);
+    types[rust_primitive_f64] = arch_float_type (gdbarch, 64, "f64",
+						 floatformats_ieee_double);
+
+    types[rust_primitive_unit] = arch_integer_type (gdbarch, 0, 1, "()");
+
+    struct type *tem = make_cv_type (1, 0, types[rust_primitive_u8], NULL);
+    types[rust_primitive_str] = rust_slice_type ("&str", tem,
+						 types[rust_primitive_usize]);
+
+    lai->primitive_type_vector = types;
+    lai->bool_type_default = types[rust_primitive_bool];
+    lai->string_char_type = types[rust_primitive_u8];
+  }
+
+  /* See language.h.  */
+  bool sniff_from_mangled_name (const char *mangled,
+				char **demangled) const override
+  {
+    *demangled = gdb_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
+    return *demangled != NULL;
+  }
+
+  /* See language.h.  */
+
+  char *demangle (const char *mangled, int options) const override
+  {
+    return gdb_demangle (mangled, options);
+  }
+
+  /* See language.h.  */
+
+  void print_type (struct type *type, const char *varstring,
+		   struct ui_file *stream, int show, int level,
+		   const struct type_print_options *flags) const override
+  {
+    print_offset_data podata;
+    rust_internal_print_type (type, varstring, stream, show, level,
+			      flags, false, &podata);
+  }
+
+  /* See language.h.  */
+
+  gdb::unique_xmalloc_ptr<char> watch_location_expression
+	(struct type *type, CORE_ADDR addr) const override
+  {
+    type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
+    std::string name = type_to_string (type);
+    return gdb::unique_xmalloc_ptr<char>
+      (xstrprintf ("*(%s as *mut %s)", core_addr_to_string (addr),
+		   name.c_str ()));
+  }
+
+  /* See language.h.  */
+
+  void value_print_inner
+	(struct value *val, struct ui_file *stream, int recurse,
+	 const struct value_print_options *options) const override
+  {
+    return rust_value_print_inner (val, stream, recurse, options);
+  }
+
+  /* See language.h.  */
+
+  struct block_symbol lookup_symbol_nonlocal
+	(const char *name, const struct block *block,
+	 const domain_enum domain) const override
+  {
+    struct block_symbol result = {};
+
+    if (symbol_lookup_debug)
+      {
+	fprintf_unfiltered (gdb_stdlog,
+			    "rust_lookup_symbol_non_local"
+			    " (%s, %s (scope %s), %s)\n",
+			    name, host_address_to_string (block),
+			    block_scope (block), domain_name (domain));
+      }
+
+    /* Look up bare names in the block's scope.  */
+    std::string scopedname;
+    if (name[cp_find_first_component (name)] == '\0')
+      {
+	const char *scope = block_scope (block);
+
+	if (scope[0] != '\0')
+	  {
+	    scopedname = std::string (scope) + "::" + name;
+	    name = scopedname.c_str ();
+	  }
+	else
+	  name = NULL;
+      }
+
+    if (name != NULL)
+      {
+	result = lookup_symbol_in_static_block (name, block, domain);
+	if (result.symbol == NULL)
+	  result = lookup_global_symbol (name, block, domain);
+      }
+    return result;
+  }
+
+  /* See language.h.  */
+
+  int parser (struct parser_state *ps) const override
+  {
+    return rust_parse (ps);
+  }
+
+  /* See language.h.  */
+
+  void emitchar (int ch, struct type *chtype,
+		 struct ui_file *stream, int quoter) const override
+  {
+    if (!rust_chartype_p (chtype))
+      generic_emit_char (ch, chtype, stream, quoter,
+			 target_charset (get_type_arch (chtype)));
+    else if (ch == '\\' || ch == quoter)
+      fprintf_filtered (stream, "\\%c", ch);
+    else if (ch == '\n')
+      fputs_filtered ("\\n", stream);
+    else if (ch == '\r')
+      fputs_filtered ("\\r", stream);
+    else if (ch == '\t')
+      fputs_filtered ("\\t", stream);
+    else if (ch == '\0')
+      fputs_filtered ("\\0", stream);
+    else if (ch >= 32 && ch <= 127 && isprint (ch))
+      fputc_filtered (ch, stream);
+    else if (ch <= 255)
+      fprintf_filtered (stream, "\\x%02x", ch);
+    else
+      fprintf_filtered (stream, "\\u{%06x}", ch);
+  }
+
+  /* See language.h.  */
+
+  void printchar (int ch, struct type *chtype,
+		  struct ui_file *stream) const override
+  {
+    fputs_filtered ("'", stream);
+    LA_EMIT_CHAR (ch, chtype, stream, '\'');
+    fputs_filtered ("'", stream);
+  }
+
+  /* See language.h.  */
+
+  void printstr (struct ui_file *stream, struct type *elttype,
+		 const gdb_byte *string, unsigned int length,
+		 const char *encoding, int force_ellipses,
+		 const struct value_print_options *options) const override
+  {
+    rust_printstr (stream, elttype, string, length, encoding,
+		   force_ellipses, options);
+  }
+
+  /* See language.h.  */
+
+  void print_typedef (struct type *type, struct symbol *new_symbol,
+		      struct ui_file *stream) const override
+  {
+    type = check_typedef (type);
+    fprintf_filtered (stream, "type %s = ", new_symbol->print_name ());
+    type_print (type, "", stream, 0);
+    fprintf_filtered (stream, ";");
+  }
+
+  /* See language.h.  */
+
+  bool is_string_type_p (struct type *type) const override
+  {
+    LONGEST low_bound, high_bound;
+
+    type = check_typedef (type);
+    return ((type->code () == TYPE_CODE_STRING)
+	    || (type->code () == TYPE_CODE_PTR
+		&& (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_ARRAY
+		    && rust_u8_type_p (TYPE_TARGET_TYPE (TYPE_TARGET_TYPE (type)))
+		    && get_array_bounds (TYPE_TARGET_TYPE (type), &low_bound,
+					 &high_bound)))
+	    || (type->code () == TYPE_CODE_STRUCT
+		&& !rust_enum_p (type)
+		&& rust_slice_type_p (type)
+		&& strcmp (type->name (), "&str") == 0));
+  }
+};
+
+/* Single instance of the Rust language class.  */
+
+static rust_language rust_language_defn;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rust-lang.h ./gdb/rust-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rust-lang.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rust-lang.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Rust language support definitions for GDB, the GNU debugger.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rx-tdep.c ./gdb/rx-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/rx-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/rx-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Renesas RX for GDB, the GNU debugger.
 
-   Copyright (C) 2008-2020 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat, Inc.
 
@@ -32,7 +32,7 @@
 #include "frame-base.h"
 #include "value.h"
 #include "gdbcore.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "remote.h"
 #include "target-descriptions.h"
 
@@ -668,12 +668,12 @@ rx_push_dummy_call (struct gdbarch *gdba
   struct type *func_type = value_type (function);
 
   /* Dereference function pointer types.  */
-  while (TYPE_CODE (func_type) == TYPE_CODE_PTR)
+  while (func_type->code () == TYPE_CODE_PTR)
     func_type = TYPE_TARGET_TYPE (func_type);
 
   /* The end result had better be a function or a method.  */
-  gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC
-	      || TYPE_CODE (func_type) == TYPE_CODE_METHOD);
+  gdb_assert (func_type->code () == TYPE_CODE_FUNC
+	      || func_type->code () == TYPE_CODE_METHOD);
 
   /* Functions with a variable number of arguments have all of their
      variable arguments and the last non-variable argument passed
@@ -687,7 +687,7 @@ rx_push_dummy_call (struct gdbarch *gdba
      of the ``arg_reg'' variable to get these other details correct.  */
 
   if (TYPE_VARARGS (func_type))
-    num_register_candidate_args = TYPE_NFIELDS (func_type) - 1;
+    num_register_candidate_args = func_type->num_fields () - 1;
   else
     num_register_candidate_args = 4;
 
@@ -706,8 +706,8 @@ rx_push_dummy_call (struct gdbarch *gdba
 	{
 	  struct type *return_type = TYPE_TARGET_TYPE (func_type);
 
-	  gdb_assert (TYPE_CODE (return_type) == TYPE_CODE_STRUCT
-		      || TYPE_CODE (func_type) == TYPE_CODE_UNION);
+	  gdb_assert (return_type->code () == TYPE_CODE_STRUCT
+		      || func_type->code () == TYPE_CODE_UNION);
 
 	  if (TYPE_LENGTH (return_type) > 16
 	      || TYPE_LENGTH (return_type) % 4 != 0)
@@ -728,7 +728,7 @@ rx_push_dummy_call (struct gdbarch *gdba
 
 	  if (i == 0 && struct_addr != 0
 	      && return_method != return_method_struct
-	      && TYPE_CODE (arg_type) == TYPE_CODE_PTR
+	      && arg_type->code () == TYPE_CODE_PTR
 	      && extract_unsigned_integer (arg_bits, 4,
 					   byte_order) == struct_addr)
 	    {
@@ -739,8 +739,8 @@ rx_push_dummy_call (struct gdbarch *gdba
 		regcache_cooked_write_unsigned (regcache, RX_R15_REGNUM,
 						struct_addr);
 	    }
-	  else if (TYPE_CODE (arg_type) != TYPE_CODE_STRUCT
-		   && TYPE_CODE (arg_type) != TYPE_CODE_UNION
+	  else if (arg_type->code () != TYPE_CODE_STRUCT
+		   && arg_type->code () != TYPE_CODE_UNION
 		   && arg_size <= 8)
 	    {
 	      /* Argument is a scalar.  */
@@ -796,10 +796,10 @@ rx_push_dummy_call (struct gdbarch *gdba
 		      int p_arg_size = 4;
 
 		      if (TYPE_PROTOTYPED (func_type)
-			  && i < TYPE_NFIELDS (func_type))
+			  && i < func_type->num_fields ())
 			{
 			  struct type *p_arg_type =
-			    TYPE_FIELD_TYPE (func_type, i);
+			    func_type->field (i).type ();
 			  p_arg_size = TYPE_LENGTH (p_arg_type);
 			}
 
@@ -874,8 +874,8 @@ rx_return_value (struct gdbarch *gdbarch
   ULONGEST valtype_len = TYPE_LENGTH (valtype);
 
   if (TYPE_LENGTH (valtype) > 16
-      || ((TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-	   || TYPE_CODE (valtype) == TYPE_CODE_UNION)
+      || ((valtype->code () == TYPE_CODE_STRUCT
+	   || valtype->code () == TYPE_CODE_UNION)
 	  && TYPE_LENGTH (valtype) % 4 != 0))
     return RETURN_VALUE_STRUCT_CONVENTION;
 
@@ -1057,8 +1057,9 @@ rx_gdbarch_init (struct gdbarch_info inf
 
 /* Register the above initialization routine.  */
 
+void _initialize_rx_tdep ();
 void
-_initialize_rx_tdep (void)
+_initialize_rx_tdep ()
 {
   register_gdbarch_init (bfd_arch_rx, rx_gdbarch_init);
   initialize_tdesc_rx ();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s12z-tdep.c ./gdb/s12z-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s12z-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/s12z-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-dependent code for the S12Z, for the GDB.
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,7 @@
 #include "defs.h"
 
 #include "arch-utils.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "gdbsupport/errors.h"
 #include "frame-unwind.h"
 #include "gdbcore.h"
@@ -614,9 +614,9 @@ s12z_return_value (struct gdbarch *gdbar
                    struct type *type, struct regcache *regcache,
                    gdb_byte *readbuf, const gdb_byte *writebuf)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION
-      || TYPE_CODE (type) == TYPE_CODE_ARRAY
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION
+      || type->code () == TYPE_CODE_ARRAY
       || TYPE_LENGTH (type) > 4)
     return RETURN_VALUE_STRUCT_CONVENTION;
 
@@ -685,8 +685,9 @@ s12z_gdbarch_init (struct gdbarch_info i
   return gdbarch;
 }
 
+void _initialize_s12z_tdep ();
 void
-_initialize_s12z_tdep (void)
+_initialize_s12z_tdep ()
 {
   gdbarch_register (bfd_arch_s12z, s12z_gdbarch_init, NULL);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s390-linux-nat.c ./gdb/s390-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s390-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/s390-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* S390 native-dependent code for GDB, the GNU debugger.
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    Contributed by D.J. Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
    for IBM Deutschland Entwicklung GmbH, IBM Corporation.
@@ -1045,8 +1045,9 @@ s390_linux_nat_target::read_description
 	  tdesc_s390_linux32);
 }
 
+void _initialize_s390_nat ();
 void
-_initialize_s390_nat (void)
+_initialize_s390_nat ()
 {
   /* Register the target.  */
   linux_target = &the_s390_linux_nat_target;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s390-linux-tdep.c ./gdb/s390-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s390-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/s390-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux on s390.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    Contributed by D.J. Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
    for IBM Deutschland Entwicklung GmbH, IBM Corporation.
@@ -1177,8 +1177,9 @@ s390_linux_init_abi_64 (struct gdbarch_i
   set_xml_syscall_file_name (gdbarch, XML_SYSCALL_FILENAME_S390X);
 }
 
+void _initialize_s390_linux_tdep ();
 void
-_initialize_s390_linux_tdep (void)
+_initialize_s390_linux_tdep ()
 {
   /* Hook us into the OSABI mechanism.  */
   gdbarch_register_osabi (bfd_arch_s390, bfd_mach_s390_31, GDB_OSABI_LINUX,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s390-linux-tdep.h ./gdb/s390-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s390-linux-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/s390-linux-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux on s390.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s390-tdep.c ./gdb/s390-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s390-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/s390-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for s390.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,7 @@
 
 #include "arch-utils.h"
 #include "ax-gdb.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "elf/s390.h"
 #include "elf-bfd.h"
 #include "frame-base.h"
@@ -63,7 +63,7 @@ s390_type_align (gdbarch *gdbarch, struc
 
   if (TYPE_LENGTH (t) > 8)
     {
-      switch (TYPE_CODE (t))
+      switch (t->code ())
 	{
 	case TYPE_CODE_INT:
 	case TYPE_CODE_RANGE:
@@ -425,7 +425,7 @@ typedef buf_displaced_step_closure s390_
 
 /* Implementation of gdbarch_displaced_step_copy_insn.  */
 
-static struct displaced_step_closure *
+static displaced_step_closure_up
 s390_displaced_step_copy_insn (struct gdbarch *gdbarch,
 			       CORE_ADDR from, CORE_ADDR to,
 			       struct regcache *regs)
@@ -477,7 +477,8 @@ s390_displaced_step_copy_insn (struct gd
       displaced_step_dump_bytes (gdb_stdlog, buf, len);
     }
 
-  return closure.release ();
+  /* This is a work around for a problem with g++ 4.8.  */
+  return displaced_step_closure_up (closure.release ());
 }
 
 /* Fix up the state of registers and memory after having single-stepped
@@ -517,14 +518,15 @@ s390_displaced_step_fixup (struct gdbarc
 			paddress (gdbarch, pc), insnlen, (int) amode);
 
   /* Handle absolute branch and save instructions.  */
-  if (is_rr (insn, op_basr, &r1, &r2)
+  int op_basr_p = is_rr (insn, op_basr, &r1, &r2);
+  if (op_basr_p
       || is_rx (insn, op_bas, &r1, &d2, &x2, &b2))
     {
       /* Recompute saved return address in R1.  */
       regcache_cooked_write_unsigned (regs, S390_R0_REGNUM + r1,
 				      amode | (from + insnlen));
       /* Update PC iff the instruction doesn't actually branch.  */
-      if (insn[0] == op_basr && r2 == 0)
+      if (op_basr_p && r2 == 0)
 	regcache_write_pc (regs, from + insnlen);
     }
 
@@ -1637,21 +1639,21 @@ s390_address_class_name_to_type_flags (s
 static struct type *
 s390_effective_inner_type (struct type *type, unsigned int min_size)
 {
-  while (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+  while (type->code () == TYPE_CODE_STRUCT)
     {
       struct type *inner = NULL;
 
       /* Find a non-static field, if any.  Unless there's exactly one,
 	 abort the unwrapping.  */
-      for (int i = 0; i < TYPE_NFIELDS (type); i++)
+      for (int i = 0; i < type->num_fields (); i++)
 	{
-	  struct field f = TYPE_FIELD (type, i);
+	  struct field f = type->field (i);
 
 	  if (field_is_static (&f))
 	    continue;
 	  if (inner != NULL)
 	    return type;
-	  inner = FIELD_TYPE (f);
+	  inner = f.type ();
 	}
 
       if (inner == NULL)
@@ -1680,8 +1682,8 @@ s390_function_arg_float (struct type *ty
      or double.  */
   type = s390_effective_inner_type (type, 0);
 
-  return (TYPE_CODE (type) == TYPE_CODE_FLT
-	  || TYPE_CODE (type) == TYPE_CODE_DECFLOAT);
+  return (type->code () == TYPE_CODE_FLT
+	  || type->code () == TYPE_CODE_DECFLOAT);
 }
 
 /* Return non-zero if TYPE should be passed like a vector.  */
@@ -1695,7 +1697,7 @@ s390_function_arg_vector (struct type *t
   /* Structs containing just a vector are passed like a vector.  */
   type = s390_effective_inner_type (type, TYPE_LENGTH (type));
 
-  return TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type);
+  return type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type);
 }
 
 /* Determine whether N is a power of two.  */
@@ -1713,7 +1715,7 @@ is_power_of_two (unsigned int n)
 static int
 s390_function_arg_integer (struct type *type)
 {
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
 
   if (TYPE_LENGTH (type) > 8)
     return 0;
@@ -1920,7 +1922,7 @@ s390_push_dummy_call (struct gdbarch *gd
   CORE_ADDR param_area_start, new_sp;
   struct type *ftype = check_typedef (value_type (function));
 
-  if (TYPE_CODE (ftype) == TYPE_CODE_PTR)
+  if (ftype->code () == TYPE_CODE_PTR)
     ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
 
   arg_prep.copy = sp;
@@ -1937,7 +1939,7 @@ s390_push_dummy_call (struct gdbarch *gd
      and arg_state.argp with the size of the parameter area.  */
   for (i = 0; i < nargs; i++)
     s390_handle_arg (&arg_state, args[i], tdep, word_size, byte_order,
-		     TYPE_VARARGS (ftype) && i >= TYPE_NFIELDS (ftype));
+		     TYPE_VARARGS (ftype) && i >= ftype->num_fields ());
 
   param_area_start = align_down (arg_state.copy - arg_state.argp, 8);
 
@@ -1964,7 +1966,7 @@ s390_push_dummy_call (struct gdbarch *gd
   /* Write all parameters.  */
   for (i = 0; i < nargs; i++)
     s390_handle_arg (&arg_state, args[i], tdep, word_size, byte_order,
-		     TYPE_VARARGS (ftype) && i >= TYPE_NFIELDS (ftype));
+		     TYPE_VARARGS (ftype) && i >= ftype->num_fields ());
 
   /* Store return PSWA.  In 31-bit mode, keep addressing mode bit.  */
   if (word_size == 4)
@@ -2020,7 +2022,7 @@ s390_register_return_value (struct gdbar
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   int word_size = gdbarch_ptr_bit (gdbarch) / 8;
   int length = TYPE_LENGTH (type);
-  int code = TYPE_CODE (type);
+  int code = type->code ();
 
   if (code == TYPE_CODE_FLT || code == TYPE_CODE_DECFLOAT)
     {
@@ -2082,7 +2084,7 @@ s390_return_value (struct gdbarch *gdbar
 
   type = check_typedef (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
@@ -7215,8 +7217,9 @@ s390_gdbarch_init (struct gdbarch_info i
   return gdbarch;
 }
 
+void _initialize_s390_tdep ();
 void
-_initialize_s390_tdep (void)
+_initialize_s390_tdep ()
 {
   /* Hook us into the gdbarch mechanism.  */
   register_gdbarch_init (bfd_arch_s390, s390_gdbarch_init);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s390-tdep.h ./gdb/s390-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/s390-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/s390-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for s390.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -117,7 +117,7 @@ enum
   op_basr  = 0x0d,
   op_bas   = 0x4d,
   op_bcr   = 0x07,
-  op_bc    = 0x0d,
+  op_bc    = 0x47,
   op_bctr  = 0x06,
   op_bctgr = 0xb946,
   op_bct   = 0x46,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sanitize.m4 ./gdb/sanitize.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sanitize.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sanitize.m4	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 dnl Sanitization-related configure macro for GDB
-dnl Copyright (C) 2018-2020 Free Software Foundation, Inc.
+dnl Copyright (C) 2018-2021 Free Software Foundation, Inc.
 dnl
 dnl This file is part of GDB.
 dnl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/scoped-mock-context.h ./gdb/scoped-mock-context.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/scoped-mock-context.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/scoped-mock-context.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,82 @@
+/* RAII type to create a temporary mock context.
+
+   Copyright (C) 2020-2021 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 SCOPED_MOCK_CONTEXT_H
+#define SCOPED_MOCK_CONTEXT_H
+
+#include "inferior.h"
+#include "gdbthread.h"
+#include "progspace.h"
+#include "progspace-and-thread.h"
+
+#if GDB_SELF_TEST
+namespace selftests {
+
+/* RAII type to create (and switch to) a temporary mock context.  An
+   inferior with a thread, with a process_stratum target pushed.  */
+
+template<typename Target>
+struct scoped_mock_context
+{
+  /* Order here is important.  */
+
+  Target mock_target;
+  ptid_t mock_ptid {1, 1};
+  program_space mock_pspace {new_address_space ()};
+  inferior mock_inferior {mock_ptid.pid ()};
+  thread_info mock_thread {&mock_inferior, mock_ptid};
+
+  scoped_restore_current_pspace_and_thread restore_pspace_thread;
+
+  scoped_restore_tmpl<thread_info *> restore_thread_list
+    {&mock_inferior.thread_list, &mock_thread};
+
+  /* Add the mock inferior to the inferior list so that look ups by
+     target+ptid can find it.  */
+  scoped_restore_tmpl<inferior *> restore_inferior_list
+    {&inferior_list, &mock_inferior};
+
+  explicit scoped_mock_context (gdbarch *gdbarch)
+  {
+    mock_inferior.gdbarch = gdbarch;
+    mock_inferior.aspace = mock_pspace.aspace;
+    mock_inferior.pspace = &mock_pspace;
+
+    /* Switch to the mock inferior.  */
+    switch_to_inferior_no_thread (&mock_inferior);
+
+    /* Push the process_stratum target so we can mock accessing
+       registers.  */
+    gdb_assert (mock_target.stratum () == process_stratum);
+    push_target (&mock_target);
+
+    /* Switch to the mock thread.  */
+    switch_to_thread (&mock_thread);
+  }
+
+  ~scoped_mock_context ()
+  {
+    pop_all_targets_at_and_above (process_stratum);
+  }
+};
+
+} // namespace selftests
+#endif /* GDB_SELF_TEST */
+
+#endif /* !defined (SCOPED_MOCK_CONTEXT_H) */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/score-tdep.c ./gdb/score-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/score-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/score-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Target-dependent code for the S+core architecture, for GDB,
    the GNU Debugger.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    Contributed by Qinwei (qinwei@sunnorth.com.cn)
    Contributed by Ching-Peng Lin (cplin@sunplus.com)
@@ -34,7 +34,7 @@
 #include "frame-unwind.h"
 #include "frame-base.h"
 #include "trad-frame.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "score-tdep.h"
 
 #define G_FLD(_i,_ms,_ls) \
@@ -442,9 +442,9 @@ score_return_value (struct gdbarch *gdba
                     struct type *type, struct regcache *regcache,
                     gdb_byte * readbuf, const gdb_byte * writebuf)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION
-      || TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION
+      || type->code () == TYPE_CODE_ARRAY)
     return RETURN_VALUE_STRUCT_CONVENTION;
   else
     {
@@ -469,7 +469,7 @@ score_return_value (struct gdbarch *gdba
 static int
 score_type_needs_double_align (struct type *type)
 {
-  enum type_code typecode = TYPE_CODE (type);
+  enum type_code typecode = type->code ();
 
   if ((typecode == TYPE_CODE_INT && TYPE_LENGTH (type) == 8)
       || (typecode == TYPE_CODE_FLT && TYPE_LENGTH (type) == 8))
@@ -478,9 +478,9 @@ score_type_needs_double_align (struct ty
     {
       int i, n;
 
-      n = TYPE_NFIELDS (type);
+      n = type->num_fields ();
       for (i = 0; i < n; i++)
-        if (score_type_needs_double_align (TYPE_FIELD_TYPE (type, i)))
+        if (score_type_needs_double_align (type->field (i).type ()))
           return 1;
       return 0;
     }
@@ -529,7 +529,7 @@ score_push_dummy_call (struct gdbarch *g
     {
       struct value *arg = args[argnum];
       struct type *arg_type = check_typedef (value_type (arg));
-      enum type_code typecode = TYPE_CODE (arg_type);
+      enum type_code typecode = arg_type->code ();
       const gdb_byte *val = value_contents (arg);
       int downward_offset = 0;
       int arg_last_part_p = 0;
@@ -918,13 +918,15 @@ score7_analyze_prologue (CORE_ADDR start
                    && G_FLD (inst->v, 2, 0) == 0x0)
             {
               /* subei! r0, n */
-              sp_offset += (int) pow (2, G_FLD (inst->v, 6, 3));
+              sp_offset += (int) pow (2.0, G_FLD (inst->v, 6, 3));
             }
           else if (G_FLD (inst->v, 14, 7) == 0xc0
                    && G_FLD (inst->v, 2, 0) == 0x0)
             {
               /* addei! r0, n */
-              sp_offset -= (int) pow (2, G_FLD (inst->v, 6, 3));
+	      /* Solaris 11+gcc 5.5 has ambiguous overloads of pow, so we
+		 pass 2.0 instead of 2 to get the right one.  */
+              sp_offset -= (int) pow (2.0, G_FLD (inst->v, 6, 3));
             }
         }
       else
@@ -1508,8 +1510,9 @@ score_gdbarch_init (struct gdbarch_info
   return gdbarch;
 }
 
+void _initialize_score_tdep ();
 void
-_initialize_score_tdep (void)
+_initialize_score_tdep ()
 {
   gdbarch_register (bfd_arch_score, score_gdbarch_init, NULL);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/score-tdep.h ./gdb/score-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/score-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/score-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Target-dependent code for the S+core architecture, for GDB,
    the GNU Debugger.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    Contributed by Qinwei (qinwei@sunnorth.com.cn)
    Contributed by Ching-Peng Lin (cplin@sunplus.com)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/selftest-arch.c ./gdb/selftest-arch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/selftest-arch.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/selftest-arch.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* GDB self-test for each gdbarch.
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/selftest-arch.h ./gdb/selftest-arch.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/selftest-arch.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/selftest-arch.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* GDB self-test for each gdbarch.
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/selftest.m4 ./gdb/selftest.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/selftest.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/selftest.m4	1970-01-01 00:00:00.000000000 +0000
@@ -1,45 +0,0 @@
-dnl Copyright (C) 2018-2020 Free Software Foundation, Inc.
-dnl
-dnl This file is part of GDB.
-dnl
-dnl This program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 3 of the License, or
-dnl (at your option) any later version.
-dnl
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-dnl GNU General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-dnl GDB_AC_SELFTEST(ACTION-IF-ENABLED)
-dnl
-dnl Enable the unit/self tests if needed.  If they are enabled, AC_DEFINE
-dnl the GDB_SELF_TEST macro, and execute ACTION-IF-ENABLED.
-
-AC_DEFUN([GDB_AC_SELFTEST],[
-# Check whether we will enable the inclusion of unit tests when
-# compiling GDB.
-#
-# The default value of this option changes depending whether we're on
-# development mode (in which case it's "true") or not (in which case
-# it's "false").
-AC_ARG_ENABLE(unit-tests,
-AS_HELP_STRING([--enable-unit-tests],
-[Enable the inclusion of unit tests when compiling GDB]),
-[case "${enableval}" in
-  yes)  enable_unittests=true  ;;
-  no)   enable_unittests=false ;;
-  *)    AC_MSG_ERROR(
-[bad value ${enableval} for --{enable,disable}-unit-tests option]) ;;
-esac], [enable_unittests=$development])
-
-if $enable_unittests; then
-  AC_DEFINE(GDB_SELF_TEST, 1,
-            [Define if self-testing features should be enabled])
-  $1
-fi
-])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sentinel-frame.c ./gdb/sentinel-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sentinel-frame.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sentinel-frame.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code dealing with register stack frames, for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sentinel-frame.h ./gdb/sentinel-frame.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sentinel-frame.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sentinel-frame.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code dealing with register stack frames, for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-base.c ./gdb/ser-base.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-base.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-base.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic serial interface functions.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -20,9 +20,9 @@
 #include "defs.h"
 #include "serial.h"
 #include "ser-base.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 
-#include "gdb_select.h"
+#include "gdbsupport/gdb_select.h"
 #include "gdbsupport/gdb_sys_time.h"
 #ifdef USE_WIN32API
 #include <winsock2.h>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-base.h ./gdb/ser-base.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-base.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-base.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic serial interface functions.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-event.c ./gdb/ser-event.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-event.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-event.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Serial interface for a selectable event.
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-event.h ./gdb/ser-event.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-event.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-event.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Serial interface for a selectable event.
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-go32.c ./gdb/ser-go32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-go32.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-go32.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Remote serial interface for local (hardwired) serial ports for GO32.
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    Contributed by Nigel Stephens, Algorithmics Ltd. (nigel@algor.co.uk).
 
@@ -915,8 +915,9 @@ info_serial_command (const char *arg, in
 #endif
 }
 
+void _initialize_ser_dos ();
 void
-_initialize_ser_dos (void)
+_initialize_ser_dos ()
 {
   serial_add_interface (&dos_ops);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/serial.c ./gdb/serial.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/serial.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/serial.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic serial interface routines
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -247,6 +247,7 @@ serial_open_ops_1 (const struct serial_o
       return NULL;
     }
 
+  scb->name = open_name != NULL ? xstrdup (open_name) : NULL;
   scb->next = scb_base;
   scb_base = scb;
 
@@ -291,6 +292,7 @@ serial_fdopen_ops (const int fd, const s
 
   scb = new_serial (ops);
 
+  scb->name = NULL;
   scb->next = scb_base;
   scb_base = scb;
 
@@ -330,6 +332,8 @@ do_serial_close (struct serial *scb, int
   if (really_close)
     scb->ops->close (scb);
 
+  xfree (scb->name);
+
   /* For serial_is_open.  */
   scb->bufp = NULL;
 
@@ -619,20 +623,6 @@ serial_pipe (struct serial *scbs[2])
 static struct cmd_list_element *serial_set_cmdlist;
 static struct cmd_list_element *serial_show_cmdlist;
 
-static void
-serial_set_cmd (const char *args, int from_tty)
-{
-  printf_unfiltered ("\"set serial\" must be followed "
-		     "by the name of a command.\n");
-  help_list (serial_set_cmdlist, "set serial ", all_commands, gdb_stdout);
-}
-
-static void
-serial_show_cmd (const char *args, int from_tty)
-{
-  cmd_show_list (serial_show_cmdlist, from_tty, "");
-}
-
 /* Baud rate specified for talking to serial target systems.  Default
    is left as -1, so targets can choose their own defaults.  */
 /* FIXME: This means that "show serial baud" and gr_files_info can
@@ -672,8 +662,9 @@ set_parity (const char *ignore_args, int
     serial_parity = GDBPARITY_NONE;
 }
 
+void _initialize_serial ();
 void
-_initialize_serial (void)
+_initialize_serial ()
 {
 #if 0
   add_com ("connect", class_obscure, connect_command, _("\
@@ -681,17 +672,17 @@ Connect the terminal directly up to the
 Use <CR>~. or <CR>~^D to break out."));
 #endif /* 0 */
 
-  add_prefix_cmd ("serial", class_maintenance, serial_set_cmd, _("\
+  add_basic_prefix_cmd ("serial", class_maintenance, _("\
 Set default serial/parallel port configuration."),
-		  &serial_set_cmdlist, "set serial ",
-		  0/*allow-unknown*/,
-		  &setlist);
+			&serial_set_cmdlist, "set serial ",
+			0/*allow-unknown*/,
+			&setlist);
 
-  add_prefix_cmd ("serial", class_maintenance, serial_show_cmd, _("\
+  add_show_prefix_cmd ("serial", class_maintenance, _("\
 Show default serial/parallel port configuration."),
-		  &serial_show_cmdlist, "show serial ",
-		  0/*allow-unknown*/,
-		  &showlist);
+		       &serial_show_cmdlist, "show serial ",
+		       0/*allow-unknown*/,
+		       &showlist);
 
   /* If target is open when baud changes, it doesn't take effect until
      the next open (I think, not sure).  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/serial.h ./gdb/serial.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/serial.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/serial.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Remote serial support interface definitions for GDB, the GNU Debugger.
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -240,6 +240,7 @@ struct serial
 				   buffer.  -ve for sticky errors.  */
     unsigned char *bufp;	/* Current byte */
     unsigned char buf[BUFSIZ];	/* Da buffer itself */
+    char *name;			/* The name of the device or host */
     struct serial *next;	/* Pointer to the next `struct serial *' */
     int debug_p;		/* Trace this serial devices operation.  */
     int async_state;		/* Async internal state.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-mingw.c ./gdb/ser-mingw.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-mingw.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-mingw.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Serial interface for local (hardwired) serial ports on Windows systems
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1338,8 +1338,9 @@ static const struct serial_ops tcp_ops =
   net_windows_done_wait_handle
 };
 
+void _initialize_ser_windows ();
 void
-_initialize_ser_windows (void)
+_initialize_ser_windows ()
 {
   WSADATA wsa_data;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-pipe.c ./gdb/ser-pipe.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-pipe.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-pipe.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Serial interface for a pipe to a separate program
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions.
 
@@ -228,8 +228,9 @@ static const struct serial_ops pipe_ops
   ser_unix_write_prim
 };
 
+void _initialize_ser_pipe ();
 void
-_initialize_ser_pipe (void)
+_initialize_ser_pipe ()
 {
   serial_add_interface (&pipe_ops);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-tcp.c ./gdb/ser-tcp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-tcp.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-tcp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Serial interface for raw TCP connections on Un*x like systems.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -58,7 +58,7 @@
 #endif
 
 #include <signal.h>
-#include "gdb_select.h"
+#include "gdbsupport/gdb_select.h"
 #include <algorithm>
 
 #ifndef HAVE_SOCKLEN_T
@@ -424,20 +424,6 @@ ser_tcp_send_break (struct serial *scb)
   return (serial_write (scb, "\377\363", 2));
 }
 
-/* Support for "set tcp" and "show tcp" commands.  */
-
-static void
-set_tcp_cmd (const char *args, int from_tty)
-{
-  help_list (tcp_set_cmdlist, "set tcp ", all_commands, gdb_stdout);
-}
-
-static void
-show_tcp_cmd (const char *args, int from_tty)
-{
-  help_list (tcp_show_cmdlist, "show tcp ", all_commands, gdb_stdout);
-}
-
 #ifndef USE_WIN32API
 
 /* The TCP ops.  */
@@ -469,8 +455,9 @@ static const struct serial_ops tcp_ops =
 
 #endif /* USE_WIN32API */
 
+void _initialize_ser_tcp ();
 void
-_initialize_ser_tcp (void)
+_initialize_ser_tcp ()
 {
 #ifdef USE_WIN32API
   /* Do nothing; the TCP serial operations will be initialized in
@@ -479,16 +466,16 @@ _initialize_ser_tcp (void)
   serial_add_interface (&tcp_ops);
 #endif /* USE_WIN32API */
 
-  add_prefix_cmd ("tcp", class_maintenance, set_tcp_cmd, _("\
+  add_basic_prefix_cmd ("tcp", class_maintenance, _("\
 TCP protocol specific variables.\n\
 Configure variables specific to remote TCP connections."),
-		  &tcp_set_cmdlist, "set tcp ",
-		  0 /* allow-unknown */, &setlist);
-  add_prefix_cmd ("tcp", class_maintenance, show_tcp_cmd, _("\
+			&tcp_set_cmdlist, "set tcp ",
+			0 /* allow-unknown */, &setlist);
+  add_show_prefix_cmd ("tcp", class_maintenance, _("\
 TCP protocol specific variables.\n\
 Configure variables specific to remote TCP connections."),
-		  &tcp_show_cmdlist, "show tcp ",
-		  0 /* allow-unknown */, &showlist);
+		       &tcp_show_cmdlist, "show tcp ",
+		       0 /* allow-unknown */, &showlist);
 
   add_setshow_boolean_cmd ("auto-retry", class_obscure,
 			   &tcp_auto_retry, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-tcp.h ./gdb/ser-tcp.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-tcp.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-tcp.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Serial interface for raw TCP connections on Un*x like systems.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-uds.c ./gdb/ser-uds.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-uds.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-uds.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Serial interface for local domain connections on Un*x like systems.
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -111,8 +111,9 @@ static const struct serial_ops uds_ops =
   uds_write_prim
 };
 
+void _initialize_ser_socket ();
 void
-_initialize_ser_socket (void)
+_initialize_ser_socket ()
 {
   serial_add_interface (&uds_ops);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-unix.c ./gdb/ser-unix.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-unix.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-unix.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Serial interface for local (hardwired) serial ports on Un*x like systems
 
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -28,7 +28,7 @@
 #include <sys/socket.h>
 #include "gdbsupport/gdb_sys_time.h"
 
-#include "gdb_select.h"
+#include "gdbsupport/gdb_select.h"
 #include "gdbcmd.h"
 #include "gdbsupport/filestuff.h"
 #include <termios.h>
@@ -498,8 +498,9 @@ static const struct serial_ops hardwire_
   ser_unix_write_prim
 };
 
+void _initialize_ser_hardwire ();
 void
-_initialize_ser_hardwire (void)
+_initialize_ser_hardwire ()
 {
   serial_add_interface (&hardwire_ops);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-unix.h ./gdb/ser-unix.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ser-unix.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/ser-unix.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Serial interface for UN*X file-descriptor based connection.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sh-linux-tdep.c ./gdb/sh-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sh-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sh-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux Super-H.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -208,8 +208,9 @@ sh_linux_init_abi (struct gdbarch_info i
   tramp_frame_prepend_unwinder (gdbarch, &sh_linux_rt_sigreturn_tramp_frame);
 }
 
+void _initialize_sh_linux_tdep ();
 void
-_initialize_sh_linux_tdep (void)
+_initialize_sh_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sh, 0, GDB_OSABI_LINUX, sh_linux_init_abi);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sh-nbsd-nat.c ./gdb/sh-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sh-nbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sh-nbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for NetBSD/sh.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Wasabi Systems, Inc.
 
@@ -28,9 +28,10 @@
 
 #include "sh-tdep.h"
 #include "inf-ptrace.h"
+#include "nbsd-nat.h"
 #include "regcache.h"
 
-struct sh_nbsd_nat_target final : public inf_ptrace_target
+struct sh_nbsd_nat_target final : public nbsd_nat_target
 {
   void fetch_registers (struct regcache *, int) override;
   void store_registers (struct regcache *, int) override;
@@ -52,13 +53,14 @@ void
 sh_nbsd_nat_target::fetch_registers (struct regcache *regcache, int regno)
 {
   pid_t pid = regcache->ptid ().pid ();
+  int lwp = regcache->ptid ().lwp ();
 
   if (regno == -1 || GETREGS_SUPPLIES (regcache->arch (), regno))
     {
       struct reg inferior_registers;
 
       if (ptrace (PT_GETREGS, pid,
-		  (PTRACE_TYPE_ARG3) &inferior_registers, 0) == -1)
+		  (PTRACE_TYPE_ARG3) &inferior_registers, lwp) == -1)
 	perror_with_name (_("Couldn't get registers"));
 
       sh_corefile_supply_regset (&sh_corefile_gregset, regcache, regno,
@@ -74,13 +76,14 @@ void
 sh_nbsd_nat_target::store_registers (struct regcache *regcache, int regno)
 {
   pid_t pid = regcache->ptid ().pid ();
+  int lwp = regcache->ptid ().lwp ();
 
   if (regno == -1 || GETREGS_SUPPLIES (regcache->arch (), regno))
     {
       struct reg inferior_registers;
 
       if (ptrace (PT_GETREGS, pid,
-		  (PTRACE_TYPE_ARG3) &inferior_registers, 0) == -1)
+		  (PTRACE_TYPE_ARG3) &inferior_registers, lwp) == -1)
 	perror_with_name (_("Couldn't get registers"));
 
       sh_corefile_collect_regset (&sh_corefile_gregset, regcache, regno,
@@ -88,7 +91,7 @@ sh_nbsd_nat_target::store_registers (str
 				  SHNBSD_SIZEOF_GREGS);
 
       if (ptrace (PT_SETREGS, pid,
-		  (PTRACE_TYPE_ARG3) &inferior_registers, 0) == -1)
+		  (PTRACE_TYPE_ARG3) &inferior_registers, lwp) == -1)
 	perror_with_name (_("Couldn't set registers"));
 
       if (regno != -1)
@@ -96,8 +99,9 @@ sh_nbsd_nat_target::store_registers (str
     }
 }
 
+void _initialize_shnbsd_nat ();
 void
-_initialize_shnbsd_nat (void)
+_initialize_shnbsd_nat ()
 {
   add_inf_child_target (&the_sh_nbsd_nat_target);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sh-nbsd-tdep.c ./gdb/sh-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sh-nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sh-nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/sh.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Wasabi Systems, Inc.
 
@@ -26,6 +26,7 @@
 #include "osabi.h"
 
 #include "sh-tdep.h"
+#include "nbsd-tdep.h"
 #include "solib-svr4.h"
 #include "gdbarch.h"
 
@@ -63,6 +64,7 @@ shnbsd_init_abi (struct gdbarch_info inf
                   struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  nbsd_init_abi (info, gdbarch);
 
   tdep->core_gregmap = (struct sh_corefile_regmap *)regmap;
   tdep->sizeof_gregset = 84;
@@ -71,8 +73,9 @@ shnbsd_init_abi (struct gdbarch_info inf
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
 }
 
+void _initialize_shnbsd_tdep ();
 void
-_initialize_shnbsd_tdep (void)
+_initialize_shnbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sh, 0, GDB_OSABI_NETBSD,
 			  shnbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sh-tdep.c ./gdb/sh-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sh-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sh-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Renesas Super-H, for GDB.
 
-   Copyright (C) 1993-2020 Free Software Foundation, Inc.
+   Copyright (C) 1993-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -24,7 +24,7 @@
 #include "frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "symtab.h"
 #include "gdbtypes.h"
 #include "gdbcmd.h"
@@ -92,10 +92,10 @@ sh_is_renesas_calling_convention (struct
     {
       func_type = check_typedef (func_type);
 
-      if (TYPE_CODE (func_type) == TYPE_CODE_PTR)
+      if (func_type->code () == TYPE_CODE_PTR)
         func_type = check_typedef (TYPE_TARGET_TYPE (func_type));
 
-      if (TYPE_CODE (func_type) == TYPE_CODE_FUNC
+      if (func_type->code () == TYPE_CODE_FUNC
           && TYPE_CALLING_CONVENTION (func_type) == DW_CC_GNU_renesas_sh)
         val = 1;
     }
@@ -813,11 +813,11 @@ static int
 sh_use_struct_convention (int renesas_abi, struct type *type)
 {
   int len = TYPE_LENGTH (type);
-  int nelem = TYPE_NFIELDS (type);
+  int nelem = type->num_fields ();
 
   /* The Renesas ABI returns aggregate types always on stack.  */
-  if (renesas_abi && (TYPE_CODE (type) == TYPE_CODE_STRUCT
-		      || TYPE_CODE (type) == TYPE_CODE_UNION))
+  if (renesas_abi && (type->code () == TYPE_CODE_STRUCT
+		      || type->code () == TYPE_CODE_UNION))
     return 1;
 
   /* Non-power of 2 length types and types bigger than 8 bytes (which don't
@@ -832,13 +832,13 @@ sh_use_struct_convention (int renesas_ab
 
   /* If the first field in the aggregate has the same length as the entire
      aggregate type, the type is returned in registers.  */
-  if (TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0)) == len)
+  if (TYPE_LENGTH (type->field (0).type ()) == len)
     return 0;
 
   /* If the size of the aggregate is 8 bytes and the first field is
      of size 4 bytes its alignment is equal to long long's alignment,
      so it's returned in registers.  */
-  if (len == 8 && TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0)) == 4)
+  if (len == 8 && TYPE_LENGTH (type->field (0).type ()) == 4)
     return 0;
 
   /* Otherwise use struct convention.  */
@@ -849,7 +849,7 @@ static int
 sh_use_struct_convention_nofpu (int renesas_abi, struct type *type)
 {
   /* The Renesas ABI returns long longs/doubles etc. always on stack.  */
-  if (renesas_abi && TYPE_NFIELDS (type) == 0 && TYPE_LENGTH (type) >= 8)
+  if (renesas_abi && type->num_fields () == 0 && TYPE_LENGTH (type) >= 8)
     return 1;
   return sh_use_struct_convention (renesas_abi, type);
 }
@@ -1040,17 +1040,17 @@ static int
 sh_treat_as_flt_p (struct type *type)
 {
   /* Ordinary float types are obviously treated as float.  */
-  if (TYPE_CODE (type) == TYPE_CODE_FLT)
+  if (type->code () == TYPE_CODE_FLT)
     return 1;
   /* Otherwise non-struct types are not treated as float.  */
-  if (TYPE_CODE (type) != TYPE_CODE_STRUCT)
+  if (type->code () != TYPE_CODE_STRUCT)
     return 0;
   /* Otherwise structs with more than one member are not treated as float.  */
-  if (TYPE_NFIELDS (type) != 1)
+  if (type->num_fields () != 1)
     return 0;
   /* Otherwise if the type of that member is float, the whole type is
      treated as float.  */
-  if (TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_FLT)
+  if (type->field (0).type ()->code () == TYPE_CODE_FLT)
     return 1;
   /* Otherwise it's not treated as float.  */
   return 0;
@@ -1084,7 +1084,7 @@ sh_push_dummy_call_fpu (struct gdbarch *
      registers have been used so far.  */
   if (sh_is_renesas_calling_convention (func_type)
       && TYPE_VARARGS (func_type))
-    last_reg_arg = TYPE_NFIELDS (func_type) - 2;
+    last_reg_arg = func_type->num_fields () - 2;
 
   /* First force sp to a 4-byte alignment.  */
   sp = sh_frame_align (gdbarch, sp);
@@ -1115,9 +1115,9 @@ sh_push_dummy_call_fpu (struct gdbarch *
       /* In Renesas ABI, long longs and aggregate types are always passed
 	 on stack.  */
       else if (sh_is_renesas_calling_convention (func_type)
-	       && ((TYPE_CODE (type) == TYPE_CODE_INT && len == 8)
-		   || TYPE_CODE (type) == TYPE_CODE_STRUCT
-		   || TYPE_CODE (type) == TYPE_CODE_UNION))
+	       && ((type->code () == TYPE_CODE_INT && len == 8)
+		   || type->code () == TYPE_CODE_STRUCT
+		   || type->code () == TYPE_CODE_UNION))
 	pass_on_stack = 1;
       /* In contrast to non-FPU CPUs, arguments are never split between
 	 registers and stack.  If an argument doesn't fit in the remaining
@@ -1225,7 +1225,7 @@ sh_push_dummy_call_nofpu (struct gdbarch
      registers have been used so far.  */
   if (sh_is_renesas_calling_convention (func_type)
       && TYPE_VARARGS (func_type))
-    last_reg_arg = TYPE_NFIELDS (func_type) - 2;
+    last_reg_arg = func_type->num_fields () - 2;
 
   /* First force sp to a 4-byte alignment.  */
   sp = sh_frame_align (gdbarch, sp);
@@ -1248,10 +1248,10 @@ sh_push_dummy_call_nofpu (struct gdbarch
       /* Renesas ABI pushes doubles and long longs entirely on stack.
 	 Same goes for aggregate types.  */
       if (sh_is_renesas_calling_convention (func_type)
-	  && ((TYPE_CODE (type) == TYPE_CODE_INT && len >= 8)
-	      || (TYPE_CODE (type) == TYPE_CODE_FLT && len >= 8)
-	      || TYPE_CODE (type) == TYPE_CODE_STRUCT
-	      || TYPE_CODE (type) == TYPE_CODE_UNION))
+	  && ((type->code () == TYPE_CODE_INT && len >= 8)
+	      || (type->code () == TYPE_CODE_FLT && len >= 8)
+	      || type->code () == TYPE_CODE_STRUCT
+	      || type->code () == TYPE_CODE_UNION))
 	pass_on_stack = 1;
       while (len > 0)
 	{
@@ -2408,29 +2408,16 @@ sh_gdbarch_init (struct gdbarch_info inf
   return gdbarch;
 }
 
-static void
-show_sh_command (const char *args, int from_tty)
-{
-  help_list (showshcmdlist, "show sh ", all_commands, gdb_stdout);
-}
-
-static void
-set_sh_command (const char *args, int from_tty)
-{
-  printf_unfiltered
-    ("\"set sh\" must be followed by an appropriate subcommand.\n");
-  help_list (setshcmdlist, "set sh ", all_commands, gdb_stdout);
-}
-
+void _initialize_sh_tdep ();
 void
-_initialize_sh_tdep (void)
+_initialize_sh_tdep ()
 {
   gdbarch_register (bfd_arch_sh, sh_gdbarch_init, NULL);
 
-  add_prefix_cmd ("sh", no_class, set_sh_command, "SH specific commands.",
-                  &setshcmdlist, "set sh ", 0, &setlist);
-  add_prefix_cmd ("sh", no_class, show_sh_command, "SH specific commands.",
-                  &showshcmdlist, "show sh ", 0, &showlist);
+  add_basic_prefix_cmd ("sh", no_class, "SH specific commands.",
+			&setshcmdlist, "set sh ", 0, &setlist);
+  add_show_prefix_cmd ("sh", no_class, "SH specific commands.",
+		       &showshcmdlist, "show sh ", 0, &showlist);
   
   add_setshow_enum_cmd ("calling-convention", class_vars, sh_cc_enum,
 			&sh_active_calling_convention,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sh-tdep.h ./gdb/sh-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sh-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sh-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target-specific definition for a Renesas Super-H.
-   Copyright (C) 1993-2020 Free Software Foundation, Inc.
+   Copyright (C) 1993-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sim-regno.h ./gdb/sim-regno.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sim-regno.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sim-regno.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic remote debugging interface for simulators.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat, Inc.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/skip.c ./gdb/skip.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/skip.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/skip.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Skipping uninteresting files and functions while stepping.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 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
@@ -209,18 +209,15 @@ skip_function_command (const char *arg,
   /* Default to the current function if no argument is given.  */
   if (arg == NULL)
     {
+      frame_info *fi = get_selected_frame (_("No default function now."));
+      struct symbol *sym = get_frame_function (fi);
       const char *name = NULL;
-      CORE_ADDR pc;
 
-      if (!last_displayed_sal_is_valid ())
-	error (_("No default function now."));
-
-      pc = get_last_displayed_addr ();
-      if (!find_pc_partial_function (pc, &name, NULL, NULL))
-	{
-	  error (_("No function found containing current program point %s."),
-		  paddress (get_current_arch (), pc));
-	}
+      if (sym != NULL)
+	name = sym->print_name ();
+      else
+	error (_("No function found containing current program point %s."),
+	       paddress (get_current_arch (), get_frame_pc (fi)));
       skip_function (name);
       return;
     }
@@ -665,8 +662,9 @@ complete_skip_number (cmd_list_element *
     }
 }
 
+void _initialize_step_skip ();
 void
-_initialize_step_skip (void)
+_initialize_step_skip ()
 {
   static struct cmd_list_element *skiplist = NULL;
   struct cmd_list_element *c;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/skip.h ./gdb/skip.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/skip.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/skip.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Header for skipping over uninteresting files and functions when debugging.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sol2-tdep.c ./gdb/sol2-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sol2-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sol2-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Solaris.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,7 +25,43 @@
 
 #include "sol2-tdep.h"
 
-CORE_ADDR
+/* The Solaris signal trampolines reside in libc.  For normal signals,
+   the function `sigacthandler' is used.  This signal trampoline will
+   call the signal handler using the System V calling convention,
+   where the third argument is a pointer to an instance of
+   `ucontext_t', which has a member `uc_mcontext' that contains the
+   saved registers.  Incidentally, the kernel passes the `ucontext_t'
+   pointer as the third argument of the signal trampoline too, and
+   `sigacthandler' simply passes it on.  However, if you link your
+   program with "-L/usr/ucblib -R/usr/ucblib -lucb", the function
+   `ucbsigvechandler' will be used, which invokes the using the BSD
+   convention, where the third argument is a pointer to an instance of
+   `struct sigcontext'.  It is the `ucbsigvechandler' function that
+   converts the `ucontext_t' to a `sigcontext', and back.  Unless the
+   signal handler modifies the `struct sigcontext' we can safely
+   ignore this.  */
+
+static int
+sol2_pc_in_sigtramp (CORE_ADDR pc, const char *name)
+{
+  return (name && (strcmp (name, "sigacthandler") == 0
+		   || strcmp (name, "ucbsigvechandler") == 0
+		   || strcmp (name, "__sighndlr") == 0));
+}
+
+/* Return whether THIS_FRAME corresponds to a Solaris sigtramp routine.  */
+
+int
+sol2_sigtramp_p (struct frame_info *this_frame)
+{
+  CORE_ADDR pc = get_frame_pc (this_frame);
+  const char *name;
+
+  find_pc_partial_function (pc, &name, NULL, NULL);
+  return sol2_pc_in_sigtramp (pc, name);
+}
+
+static CORE_ADDR
 sol2_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
   struct bound_minimal_symbol msym;
@@ -37,17 +73,15 @@ sol2_skip_solib_resolver (struct gdbarch
   return 0;
 }
 
-/* This is how we want PTIDs from Solaris core files to be
-   printed.  */
+/* This is how we want PTIDs from Solaris core files to be printed.  */
 
-std::string
+static std::string
 sol2_core_pid_to_str (struct gdbarch *gdbarch, ptid_t ptid)
 {
   struct inferior *inf;
   int pid;
 
-  /* Check whether we're printing an LWP (gdb thread) or a
-     process.  */
+  /* Check whether we're printing an LWP (gdb thread) or a process.  */
   pid = ptid.lwp ();
   if (pid != 0)
     {
@@ -56,12 +90,28 @@ sol2_core_pid_to_str (struct gdbarch *gd
     }
 
   /* GDB didn't use to put a NT_PSTATUS note in Solaris cores.  If
-     that's missing, then we're dealing with a fake PID corelow.c made
-     up.  */
-  inf = find_inferior_ptid (ptid);
+     that's missing, then we're dealing with a fake PID corelow.c made up.  */
+  inf = find_inferior_ptid (current_inferior ()->process_target (), ptid);
   if (inf == NULL || inf->fake_pid_p)
     return "<core>";
 
   /* Not fake; print as usual.  */
   return normal_pid_to_str (ptid);
 }
+
+/* To be called from GDB_OSABI_SOLARIS handlers.  */
+
+void
+sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  /* The Sun compilers (Sun ONE Studio, Forte Developer, Sun WorkShop, SunPRO)
+     compiler puts out 0 instead of the address in N_SO stabs.  Starting with
+     SunPRO 3.0, the compiler does this for N_FUN stabs too.  */
+  set_gdbarch_sofun_address_maybe_missing (gdbarch, 1);
+
+  /* Solaris uses SVR4-style shared libraries.  */
+  set_gdbarch_skip_solib_resolver (gdbarch, sol2_skip_solib_resolver);
+
+  /* How to print LWP PTIDs from core files.  */
+  set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sol2-tdep.h ./gdb/sol2-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sol2-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sol2-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Solaris.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,8 +22,8 @@
 
 struct gdbarch;
 
-CORE_ADDR sol2_skip_solib_resolver (struct gdbarch *, CORE_ADDR);
+int sol2_sigtramp_p (struct frame_info *this_frame);
 
-std::string sol2_core_pid_to_str (struct gdbarch *gdbarch, ptid_t ptid);
+void sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch);
 
 #endif /* sol2-tdep.h */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-aix.c ./gdb/solib-aix.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-aix.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib-aix.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -390,19 +390,15 @@ solib_aix_clear_solib (void)
 }
 
 /* Compute and return the OBJFILE's section_offset array, using
-   the associated loader info (INFO).
+   the associated loader info (INFO).  */
 
-   The resulting array is computed on the heap and must be
-   deallocated after use.  */
-
-static gdb::unique_xmalloc_ptr<struct section_offsets>
+static section_offsets
 solib_aix_get_section_offsets (struct objfile *objfile,
 			       lm_info_aix *info)
 {
   bfd *abfd = objfile->obfd;
 
-  gdb::unique_xmalloc_ptr<struct section_offsets> offsets
-    (XCNEWVEC (struct section_offsets, objfile->num_sections));
+  section_offsets offsets (objfile->section_offsets.size ());
 
   /* .text */
 
@@ -411,7 +407,7 @@ solib_aix_get_section_offsets (struct ob
       struct bfd_section *sect
 	= objfile->sections[objfile->sect_index_text].the_bfd_section;
 
-      offsets->offsets[objfile->sect_index_text]
+      offsets[objfile->sect_index_text]
 	= info->text_addr + sect->filepos - bfd_section_vma (sect);
     }
 
@@ -422,7 +418,7 @@ solib_aix_get_section_offsets (struct ob
       struct bfd_section *sect
 	= objfile->sections[objfile->sect_index_data].the_bfd_section;
 
-      offsets->offsets[objfile->sect_index_data]
+      offsets[objfile->sect_index_data]
 	= info->data_addr - bfd_section_vma (sect);
     }
 
@@ -435,8 +431,8 @@ solib_aix_get_section_offsets (struct ob
   if (objfile->sect_index_bss != -1
       && objfile->sect_index_data != -1)
     {
-      offsets->offsets[objfile->sect_index_bss]
-	= (offsets->offsets[objfile->sect_index_data]
+      offsets[objfile->sect_index_bss]
+	= (offsets[objfile->sect_index_data]
 	   + solib_aix_bss_data_overlap (abfd));
     }
 
@@ -468,10 +464,10 @@ solib_aix_solib_create_inferior_hook (in
   lm_info_aix &exec_info = (*library_list)[0];
   if (symfile_objfile != NULL)
     {
-      gdb::unique_xmalloc_ptr<struct section_offsets> offsets
+      section_offsets offsets
 	= solib_aix_get_section_offsets (symfile_objfile, &exec_info);
 
-      objfile_relocate (symfile_objfile, offsets.get ());
+      objfile_relocate (symfile_objfile, offsets);
     }
 }
 
@@ -615,7 +611,7 @@ solib_aix_bfd_open (const char *pathname
     (gdb_bfd_openr_next_archived_file (archive_bfd.get (), NULL));
   while (object_bfd != NULL)
     {
-      if (member_name == object_bfd->filename)
+      if (member_name == bfd_get_filename (object_bfd.get ()))
 	break;
 
       object_bfd = gdb_bfd_openr_next_archived_file (archive_bfd.get (),
@@ -641,10 +637,10 @@ solib_aix_bfd_open (const char *pathname
      along with appended parenthesized member name in order to allow commands
      listing all shared libraries to display.  Otherwise, we would only be
      displaying the name of the archive member object.  */
-  bfd_set_filename (object_bfd.get (),
-		    xstrprintf ("%s%s",
-				bfd_get_filename (archive_bfd.get ()),
-				sep));
+  std::string fname = string_printf ("%s%s",
+				     bfd_get_filename (archive_bfd.get ()),
+				     sep);
+  bfd_set_filename (object_bfd.get (), fname.c_str ());
 
   return object_bfd;
 }
@@ -723,8 +719,9 @@ show_solib_aix_debug (struct ui_file *fi
 /* The target_so_ops for AIX targets.  */
 struct target_so_ops solib_aix_so_ops;
 
+void _initialize_solib_aix ();
 void
-_initialize_solib_aix (void)
+_initialize_solib_aix ()
 {
   solib_aix_so_ops.relocate_section_addresses
     = solib_aix_relocate_section_addresses;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-aix.h ./gdb/solib-aix.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-aix.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib-aix.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib.c ./gdb/solib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle shared libraries for GDB, the GNU Debugger.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -647,13 +647,6 @@ free_so (struct so_list *so)
 }
 
 
-/* Return address of first so_list entry in master shared object list.  */
-struct so_list *
-master_so_list (void)
-{
-  return so_list_head;
-}
-
 /* Read in symbols for shared object SO.  If SYMFILE_VERBOSE is set in FLAGS,
    be chatty about it.  Return true if any symbols were actually loaded.  */
 
@@ -713,15 +706,13 @@ solib_read_symbols (struct so_list *so,
   return false;
 }
 
-/* Return true if KNOWN->objfile is used by any other so_list object in the
-   SO_LIST_HEAD list.  Return false otherwise.  */
+/* Return true if KNOWN->objfile is used by any other so_list object
+   in the list of shared libraries.  Return false otherwise.  */
 
 static bool
 solib_used (const struct so_list *const known)
 {
-  const struct so_list *pivot;
-
-  for (pivot = so_list_head; pivot != NULL; pivot = pivot->next)
+  for (const struct so_list *pivot : current_program_space->solibs ())
     if (pivot != known && pivot->objfile == known->objfile)
       return true;
   return false;
@@ -784,8 +775,8 @@ update_solib_list (int from_tty)
      the time we're done walking GDB's list, the inferior's list
      contains only the new shared objects, which we then add.  */
 
-  gdb = so_list_head;
-  gdb_link = &so_list_head;
+  gdb = current_program_space->so_list;
+  gdb_link = &current_program_space->so_list;
   while (gdb)
     {
       struct so_list *i = inferior;
@@ -835,7 +826,7 @@ update_solib_list (int from_tty)
 	  /* Unless the user loaded it explicitly, free SO's objfile.  */
 	  if (gdb->objfile && ! (gdb->objfile->flags & OBJF_USERLOADED)
 	      && !solib_used (gdb))
-	    delete gdb->objfile;
+	    gdb->objfile->unlink ();
 
 	  /* Some targets' section tables might be referring to
 	     sections from so->abfd; remove them.  */
@@ -943,8 +934,6 @@ libpthread_solib_p (struct so_list *so)
 void
 solib_add (const char *pattern, int from_tty, int readsyms)
 {
-  struct so_list *gdb;
-
   if (print_symbol_loading_p (from_tty, 0, 0))
     {
       if (pattern != NULL)
@@ -979,7 +968,7 @@ solib_add (const char *pattern, int from
     if (from_tty)
         add_flags |= SYMFILE_VERBOSE;
 
-    for (gdb = so_list_head; gdb; gdb = gdb->next)
+    for (struct so_list *gdb : current_program_space->solibs ())
       if (! pattern || re_exec (gdb->so_name))
 	{
           /* Normally, we would read the symbols from that library
@@ -1030,7 +1019,6 @@ solib_add (const char *pattern, int from
 static void
 info_sharedlibrary_command (const char *pattern, int from_tty)
 {
-  struct so_list *so = NULL;	/* link map state variable */
   bool so_missing_debug_info = false;
   int addr_width;
   int nr_libs;
@@ -1053,7 +1041,8 @@ info_sharedlibrary_command (const char *
   /* ui_out_emit_table table_emitter needs to know the number of rows,
      so we need to make two passes over the libs.  */
 
-  for (nr_libs = 0, so = so_list_head; so; so = so->next)
+  nr_libs = 0;
+  for (struct so_list *so : current_program_space->solibs ())
     {
       if (so->so_name[0])
 	{
@@ -1074,7 +1063,7 @@ info_sharedlibrary_command (const char *
 
     uiout->table_body ();
 
-    ALL_SO_LIBS (so)
+    for (struct so_list *so : current_program_space->solibs ())
       {
 	if (! so->so_name[0])
 	  continue;
@@ -1185,11 +1174,11 @@ clear_solib (void)
 
   disable_breakpoints_in_shlibs ();
 
-  while (so_list_head)
+  while (current_program_space->so_list)
     {
-      struct so_list *so = so_list_head;
+      struct so_list *so = current_program_space->so_list;
 
-      so_list_head = so->next;
+      current_program_space->so_list = so->next;
       gdb::observers::solib_unloaded.notify (so);
       remove_target_sections (so);
       free_so (so);
@@ -1284,12 +1273,10 @@ handle_solib_event (void)
 static void
 reload_shared_libraries_1 (int from_tty)
 {
-  struct so_list *so;
-
   if (print_symbol_loading_p (from_tty, 0, 0))
     printf_unfiltered (_("Loading symbols for shared libraries.\n"));
 
-  for (so = so_list_head; so != NULL; so = so->next)
+  for (struct so_list *so : current_program_space->solibs ())
     {
       const char *found_pathname = NULL;
       bool was_loaded = so->symbols_loaded != 0;
@@ -1312,7 +1299,7 @@ reload_shared_libraries_1 (int from_tty)
 	{
 	  if (so->objfile && ! (so->objfile->flags & OBJF_USERLOADED)
 	      && !solib_used (so))
-	    delete so->objfile;
+	    so->objfile->unlink ();
 	  remove_target_sections (so);
 	  clear_so (so);
 	}
@@ -1552,25 +1539,25 @@ gdb_bfd_lookup_symbol (bfd *abfd,
   return symaddr;
 }
 
-/* SO_LIST_HEAD may contain user-loaded object files that can be removed
-   out-of-band by the user.  So upon notification of free_objfile remove
-   all references to any user-loaded file that is about to be freed.  */
+/* The shared library list may contain user-loaded object files that
+   can be removed out-of-band by the user.  So upon notification of
+   free_objfile remove all references to any user-loaded file that is
+   about to be freed.  */
 
 static void
 remove_user_added_objfile (struct objfile *objfile)
 {
-  struct so_list *so;
-
   if (objfile != 0 && objfile->flags & OBJF_USERLOADED)
     {
-      for (so = so_list_head; so != NULL; so = so->next)
+      for (struct so_list *so : current_program_space->solibs ())
 	if (so->objfile == objfile)
 	  so->objfile = NULL;
     }
 }
 
+void _initialize_solib ();
 void
-_initialize_solib (void)
+_initialize_solib ()
 {
   solib_data = gdbarch_data_register_pre_init (solib_init);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-darwin.c ./gdb/solib-darwin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-darwin.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib-darwin.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle Darwin shared libraries for GDB, the GNU Debugger.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -251,8 +251,6 @@ darwin_current_sos (void)
       CORE_ADDR path_addr;
       struct mach_o_header_external hdr;
       unsigned long hdr_val;
-      gdb::unique_xmalloc_ptr<char> file_path;
-      int errcode;
 
       /* Read image info from inferior.  */
       if (target_read_memory (iinfo, buf, image_info_size))
@@ -275,9 +273,9 @@ darwin_current_sos (void)
       if (hdr_val == BFD_MACH_O_MH_EXECUTE)
         continue;
 
-      target_read_string (path_addr, &file_path,
-			  SO_NAME_MAX_PATH_SIZE - 1, &errcode);
-      if (errcode)
+      gdb::unique_xmalloc_ptr<char> file_path
+	= target_read_string (path_addr, SO_NAME_MAX_PATH_SIZE - 1);
+      if (file_path == nullptr)
 	break;
 
       /* Create and fill the new so_list element.  */
@@ -436,7 +434,7 @@ darwin_get_dyld_bfd ()
     return NULL;
 
   /* Create a bfd for the interpreter.  */
-  gdb_bfd_ref_ptr dyld_bfd (gdb_bfd_open (interp_name, gnutarget, -1));
+  gdb_bfd_ref_ptr dyld_bfd (gdb_bfd_open (interp_name, gnutarget));
   if (dyld_bfd != NULL)
     {
       gdb_bfd_ref_ptr sub
@@ -662,15 +660,16 @@ darwin_bfd_open (const char *pathname)
   /* The current filename for fat-binary BFDs is a name generated
      by BFD, usually a string containing the name of the architecture.
      Reset its value to the actual filename.  */
-  bfd_set_filename (res.get (), xstrdup (pathname));
+  bfd_set_filename (res.get (), pathname);
 
   return res;
 }
 
 struct target_so_ops darwin_so_ops;
 
+void _initialize_darwin_solib ();
 void
-_initialize_darwin_solib (void)
+_initialize_darwin_solib ()
 {
   darwin_so_ops.relocate_section_addresses = darwin_relocate_section_addresses;
   darwin_so_ops.free_so = darwin_free_so;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-darwin.h ./gdb/solib-darwin.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-darwin.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib-darwin.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle shared libraries for GDB, the GNU Debugger.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-dsbt.c ./gdb/solib-dsbt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-dsbt.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib-dsbt.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Handle TIC6X (DSBT) shared libraries for GDB, the GNU Debugger.
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -681,8 +681,6 @@ dsbt_current_sos (void)
 	 this in the list of shared objects.  */
       if (dsbt_index != 0)
 	{
-	  int errcode;
-	  gdb::unique_xmalloc_ptr<char> name_buf;
 	  struct int_elf32_dsbt_loadmap *loadmap;
 	  struct so_list *sop;
 	  CORE_ADDR addr;
@@ -703,12 +701,11 @@ dsbt_current_sos (void)
 	  addr = extract_unsigned_integer (lm_buf.l_name,
 					   sizeof (lm_buf.l_name),
 					   byte_order);
-	  target_read_string (addr, &name_buf, SO_NAME_MAX_PATH_SIZE - 1,
-			      &errcode);
+	  gdb::unique_xmalloc_ptr<char> name_buf
+	    = target_read_string (addr, SO_NAME_MAX_PATH_SIZE - 1);
 
-	  if (errcode != 0)
-	    warning (_("Can't read pathname for link map entry: %s."),
-		     safe_strerror (errcode));
+	  if (name_buf == nullptr)
+	    warning (_("Can't read pathname for link map entry."));
 	  else
 	    {
 	      if (solib_dsbt_debug)
@@ -911,8 +908,7 @@ dsbt_relocate_main_executable (void)
   info->main_executable_lm_info = new lm_info_dsbt;
   info->main_executable_lm_info->map = ldm;
 
-  gdb::unique_xmalloc_ptr<struct section_offsets> new_offsets
-    (XCNEWVEC (struct section_offsets, symfile_objfile->num_sections));
+  section_offsets new_offsets (symfile_objfile->section_offsets.size ());
   changed = 0;
 
   ALL_OBJFILE_OSECTIONS (symfile_objfile, osect)
@@ -926,7 +922,7 @@ dsbt_relocate_main_executable (void)
       /* Current address of section.  */
       addr = obj_section_addr (osect);
       /* Offset from where this section started.  */
-      offset = ANOFFSET (symfile_objfile->section_offsets, osect_idx);
+      offset = symfile_objfile->section_offsets[osect_idx];
       /* Original address prior to any past relocations.  */
       orig_addr = addr - offset;
 
@@ -935,10 +931,10 @@ dsbt_relocate_main_executable (void)
 	  if (ldm->segs[seg].p_vaddr <= orig_addr
 	      && orig_addr < ldm->segs[seg].p_vaddr + ldm->segs[seg].p_memsz)
 	    {
-	      new_offsets->offsets[osect_idx]
+	      new_offsets[osect_idx]
 		= ldm->segs[seg].addr - ldm->segs[seg].p_vaddr;
 
-	      if (new_offsets->offsets[osect_idx] != offset)
+	      if (new_offsets[osect_idx] != offset)
 		changed = 1;
 	      break;
 	    }
@@ -946,7 +942,7 @@ dsbt_relocate_main_executable (void)
     }
 
   if (changed)
-    objfile_relocate (symfile_objfile, new_offsets.get ());
+    objfile_relocate (symfile_objfile, new_offsets);
 
   /* Now that symfile_objfile has been relocated, we can compute the
      GOT value and stash it away.  */
@@ -1023,8 +1019,9 @@ show_dsbt_debug (struct ui_file *file, i
 
 struct target_so_ops dsbt_so_ops;
 
+void _initialize_dsbt_solib ();
 void
-_initialize_dsbt_solib (void)
+_initialize_dsbt_solib ()
 {
   dsbt_so_ops.relocate_section_addresses = dsbt_relocate_section_addresses;
   dsbt_so_ops.free_so = dsbt_free_so;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-frv.c ./gdb/solib-frv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-frv.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib-frv.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Handle FR-V (FDPIC) shared libraries for GDB, the GNU Debugger.
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -376,8 +376,6 @@ frv_current_sos (void)
 	 this in the list of shared objects.  */
       if (got_addr != mgot)
 	{
-	  int errcode;
-	  gdb::unique_xmalloc_ptr<char> name_buf;
 	  struct int_elf32_fdpic_loadmap *loadmap;
 	  struct so_list *sop;
 	  CORE_ADDR addr;
@@ -404,16 +402,15 @@ frv_current_sos (void)
 	  addr = extract_unsigned_integer (lm_buf.l_name,
 					   sizeof (lm_buf.l_name),
 					   byte_order);
-	  target_read_string (addr, &name_buf, SO_NAME_MAX_PATH_SIZE - 1,
-			      &errcode);
+	  gdb::unique_xmalloc_ptr<char> name_buf
+	    = target_read_string (addr, SO_NAME_MAX_PATH_SIZE - 1);
 
 	  if (solib_frv_debug)
 	    fprintf_unfiltered (gdb_stdlog, "current_sos: name = %s\n",
 	                        name_buf.get ());
 	  
-	  if (errcode != 0)
-	    warning (_("Can't read pathname for link map entry: %s."),
-		     safe_strerror (errcode));
+	  if (name_buf == nullptr)
+	    warning (_("Can't read pathname for link map entry."));
 	  else
 	    {
 	      strncpy (sop->so_name, name_buf.get (),
@@ -785,8 +782,7 @@ frv_relocate_main_executable (void)
   main_executable_lm_info = new lm_info_frv;
   main_executable_lm_info->map = ldm;
 
-  gdb::unique_xmalloc_ptr<struct section_offsets> new_offsets
-    (XCNEWVEC (struct section_offsets, symfile_objfile->num_sections));
+  section_offsets new_offsets (symfile_objfile->section_offsets.size ());
   changed = 0;
 
   ALL_OBJFILE_OSECTIONS (symfile_objfile, osect)
@@ -800,7 +796,7 @@ frv_relocate_main_executable (void)
       /* Current address of section.  */
       addr = obj_section_addr (osect);
       /* Offset from where this section started.  */
-      offset = ANOFFSET (symfile_objfile->section_offsets, osect_idx);
+      offset = symfile_objfile->section_offsets[osect_idx];
       /* Original address prior to any past relocations.  */
       orig_addr = addr - offset;
 
@@ -809,10 +805,10 @@ frv_relocate_main_executable (void)
 	  if (ldm->segs[seg].p_vaddr <= orig_addr
 	      && orig_addr < ldm->segs[seg].p_vaddr + ldm->segs[seg].p_memsz)
 	    {
-	      new_offsets->offsets[osect_idx]
+	      new_offsets[osect_idx]
 		= ldm->segs[seg].addr - ldm->segs[seg].p_vaddr;
 
-	      if (new_offsets->offsets[osect_idx] != offset)
+	      if (new_offsets[osect_idx] != offset)
 		changed = 1;
 	      break;
 	    }
@@ -820,7 +816,7 @@ frv_relocate_main_executable (void)
     }
 
   if (changed)
-    objfile_relocate (symfile_objfile, new_offsets.get ());
+    objfile_relocate (symfile_objfile, new_offsets);
 
   /* Now that symfile_objfile has been relocated, we can compute the
      GOT value and stash it away.  */
@@ -909,10 +905,7 @@ main_got (void)
 CORE_ADDR
 frv_fdpic_find_global_pointer (CORE_ADDR addr)
 {
-  struct so_list *so;
-
-  so = master_so_list ();
-  while (so)
+  for (struct so_list *so : current_program_space->solibs ())
     {
       int seg;
       lm_info_frv *li = (lm_info_frv *) so->lm_info;
@@ -924,8 +917,6 @@ frv_fdpic_find_global_pointer (CORE_ADDR
 	      && addr < map->segs[seg].addr + map->segs[seg].p_memsz)
 	    return li->got_value;
 	}
-
-      so = so->next;
     }
 
   /* Didn't find it in any of the shared objects.  So assume it's in the
@@ -970,10 +961,7 @@ frv_fdpic_find_canonical_descriptor (COR
      in list of shared objects.  */
   if (addr == 0)
     {
-      struct so_list *so;
-
-      so = master_so_list ();
-      while (so)
+      for (struct so_list *so : current_program_space->solibs ())
 	{
 	  lm_info_frv *li = (lm_info_frv *) so->lm_info;
 
@@ -982,8 +970,6 @@ frv_fdpic_find_canonical_descriptor (COR
 
 	  if (addr != 0)
 	    break;
-
-	  so = so->next;
 	}
     }
 
@@ -1117,8 +1103,6 @@ find_canonical_descriptor_in_load_object
 CORE_ADDR
 frv_fetch_objfile_link_map (struct objfile *objfile)
 {
-  struct so_list *so;
-
   /* Cause frv_current_sos() to be run if it hasn't been already.  */
   if (main_lm_addr == 0)
     solib_add (0, 0, 1);
@@ -1129,7 +1113,7 @@ frv_fetch_objfile_link_map (struct objfi
 
   /* The other link map addresses may be found by examining the list
      of shared libraries.  */
-  for (so = master_so_list (); so; so = so->next)
+  for (struct so_list *so : current_program_space->solibs ())
     {
       lm_info_frv *li = (lm_info_frv *) so->lm_info;
 
@@ -1143,8 +1127,9 @@ frv_fetch_objfile_link_map (struct objfi
 
 struct target_so_ops frv_so_ops;
 
+void _initialize_frv_solib ();
 void
-_initialize_frv_solib (void)
+_initialize_frv_solib ()
 {
   frv_so_ops.relocate_section_addresses = frv_relocate_section_addresses;
   frv_so_ops.free_so = frv_free_so;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib.h ./gdb/solib.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Shared library declarations for GDB, the GNU Debugger.
    
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -28,9 +28,6 @@ struct program_space;
 
 #include "symfile-add-flags.h"
 
-/* List of known shared objects */
-#define so_list_head current_program_space->so_list
-
 /* Called when we free all symtabs, to free the shared library information
    as well.  */
 
@@ -81,9 +78,9 @@ extern void set_solib_ops (struct gdbarc
 /* Synchronize GDB's shared object list with inferior's.
 
    Extract the list of currently loaded shared objects from the
-   inferior, and compare it with the list of shared objects currently
-   in GDB's so_list_head list.  Edit so_list_head to bring it in sync
-   with the inferior's new list.
+   inferior, and compare it with the list of shared objects in the
+   current program space's list of shared libraries.  Edit
+   so_list_head to bring it in sync with the inferior's new list.
 
    If we notice that the inferior has unloaded some shared objects,
    free any symbolic info GDB had read about those shared objects.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-svr4.c ./gdb/solib-svr4.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-svr4.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib-svr4.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle SVR4 shared libraries for GDB, the GNU Debugger.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -957,8 +957,6 @@ static int
 open_symbol_file_object (int from_tty)
 {
   CORE_ADDR lm, l_name;
-  gdb::unique_xmalloc_ptr<char> filename;
-  int errcode;
   struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
   struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
   int l_name_size = TYPE_LENGTH (ptr_type);
@@ -993,12 +991,12 @@ open_symbol_file_object (int from_tty)
     return 0;		/* No filename.  */
 
   /* Now fetch the filename from target memory.  */
-  target_read_string (l_name, &filename, SO_NAME_MAX_PATH_SIZE - 1, &errcode);
+  gdb::unique_xmalloc_ptr<char> filename
+    = target_read_string (l_name, SO_NAME_MAX_PATH_SIZE - 1);
 
-  if (errcode)
+  if (filename == nullptr)
     {
-      warning (_("failed to read exec filename from attached file: %s"),
-	       safe_strerror (errcode));
+      warning (_("failed to read exec filename from attached file"));
       return 0;
     }
 
@@ -1297,9 +1295,6 @@ svr4_read_so_list (svr4_info *info, CORE
 
   for (; lm != 0; prev_lm = lm, lm = next_lm)
     {
-      int errcode;
-      gdb::unique_xmalloc_ptr<char> buffer;
-
       so_list_up newobj (XCNEW (struct so_list));
 
       lm_info_svr4 *li = lm_info_read (lm).release ();
@@ -1330,17 +1325,16 @@ svr4_read_so_list (svr4_info *info, CORE
 	}
 
       /* Extract this shared object's name.  */
-      target_read_string (li->l_name, &buffer, SO_NAME_MAX_PATH_SIZE - 1,
-			  &errcode);
-      if (errcode != 0)
+      gdb::unique_xmalloc_ptr<char> buffer
+	= target_read_string (li->l_name, SO_NAME_MAX_PATH_SIZE - 1);
+      if (buffer == nullptr)
 	{
 	  /* If this entry's l_name address matches that of the
 	     inferior executable, then this is not a normal shared
 	     object, but (most likely) a vDSO.  In this case, silently
 	     skip it; otherwise emit a warning. */
 	  if (first_l_name == 0 || li->l_name != first_l_name)
-	    warning (_("Can't read pathname for load map: %s."),
-		     safe_strerror (errcode));
+	    warning (_("Can't read pathname for load map."));
 	  continue;
 	}
 
@@ -1537,7 +1531,6 @@ svr4_current_sos (void)
 CORE_ADDR
 svr4_fetch_objfile_link_map (struct objfile *objfile)
 {
-  struct so_list *so;
   struct svr4_info *info = get_svr4_info (objfile->pspace);
 
   /* Cause svr4_current_sos() to be run if it hasn't been already.  */
@@ -1555,7 +1548,7 @@ svr4_fetch_objfile_link_map (struct objf
 
   /* The other link map addresses may be found by examining the list
      of shared libraries.  */
-  for (so = master_so_list (); so; so = so->next)
+  for (struct so_list *so : current_program_space->solibs ())
     if (so->objfile == objfile)
       {
 	lm_info_svr4 *li = (lm_info_svr4 *) so->lm_info;
@@ -1942,7 +1935,27 @@ svr4_handle_solib_event (void)
     /* Always locate the debug struct, in case it moved.  */
     info->debug_base = 0;
     if (locate_base (info) == 0)
-      return;
+      {
+	/* It's possible for the reloc_complete probe to be triggered before
+	   the linker has set the DT_DEBUG pointer (for example, when the
+	   linker has finished relocating an LD_AUDIT library or its
+	   dependencies).  Since we can't yet handle libraries from other link
+	   namespaces, we don't lose anything by ignoring them here.  */
+	struct value *link_map_id_val;
+	try
+	  {
+	    link_map_id_val = pa->prob->evaluate_argument (0, frame);
+	  }
+	catch (const gdb_exception_error)
+	  {
+	    link_map_id_val = NULL;
+	  }
+	/* glibc and illumos' libc both define LM_ID_BASE as zero.  */
+	if (link_map_id_val != NULL && value_as_long (link_map_id_val) != 0)
+	  action = DO_NOTHING;
+	else
+	  return;
+      }
 
     /* GDB does not currently support libraries loaded via dlmopen
        into namespaces other than the initial one.  We must ignore
@@ -2253,8 +2266,7 @@ enable_break (struct svr4_info *info, in
 	  CORE_ADDR load_addr;
 
 	  tmp_bfd = os->objfile->obfd;
-	  load_addr = ANOFFSET (os->objfile->section_offsets,
-				SECT_OFF_TEXT (os->objfile));
+	  load_addr = os->objfile->text_section_offset ();
 
 	  interp_sect = bfd_get_section_by_name (tmp_bfd, ".text");
 	  if (interp_sect)
@@ -2288,7 +2300,6 @@ enable_break (struct svr4_info *info, in
       CORE_ADDR load_addr = 0;
       int load_addr_found = 0;
       int loader_found_in_list = 0;
-      struct so_list *so;
       struct target_ops *tmp_bfd_target;
 
       sym_addr = 0;
@@ -2321,8 +2332,7 @@ enable_break (struct svr4_info *info, in
 
       /* On a running target, we can get the dynamic linker's base
          address from the shared library table.  */
-      so = master_so_list ();
-      while (so)
+      for (struct so_list *so : current_program_space->solibs ())
 	{
 	  if (svr4_same_1 (interp_name, so->so_original_name))
 	    {
@@ -2331,7 +2341,6 @@ enable_break (struct svr4_info *info, in
 	      load_addr = lm_addr_check (so, tmp_bfd.get ());
 	      break;
 	    }
-	  so = so->next;
 	}
 
       /* If we were not able to find the base address of the loader
@@ -2375,7 +2384,8 @@ enable_break (struct svr4_info *info, in
       if (!load_addr_found)
 	{
 	  struct regcache *regcache
-	    = get_thread_arch_regcache (inferior_ptid, target_gdbarch ());
+	    = get_thread_arch_regcache (current_inferior ()->process_target (),
+					inferior_ptid, target_gdbarch ());
 
 	  load_addr = (regcache_read_pc (regcache)
 		       - exec_entry_point (tmp_bfd.get (), tmp_bfd_target));
@@ -2955,15 +2965,8 @@ svr4_relocate_main_executable (void)
 
   if (symfile_objfile)
     {
-      struct section_offsets *new_offsets;
-      int i;
-
-      new_offsets = XALLOCAVEC (struct section_offsets,
-				symfile_objfile->num_sections);
-
-      for (i = 0; i < symfile_objfile->num_sections; i++)
-	new_offsets->offsets[i] = displacement;
-
+      section_offsets new_offsets (symfile_objfile->section_offsets.size (),
+				   displacement);
       objfile_relocate (symfile_objfile, new_offsets);
     }
   else if (exec_bfd)
@@ -3247,8 +3250,9 @@ svr4_iterate_over_objfiles_in_search_ord
     }
 }
 
+void _initialize_svr4_solib ();
 void
-_initialize_svr4_solib (void)
+_initialize_svr4_solib ()
 {
   solib_svr4_data = gdbarch_data_register_pre_init (solib_svr4_init);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-svr4.h ./gdb/solib-svr4.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-svr4.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib-svr4.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle shared libraries for GDB, the GNU Debugger.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-target.c ./gdb/solib-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-target.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib-target.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for targets which report shared library events.
 
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -46,7 +46,7 @@ struct lm_info_target : public lm_info_b
 
   /* The cached offsets for each section of this shared library,
      determined from SEGMENT_BASES, or SECTION_BASES.  */
-  section_offsets *offsets = NULL;
+  section_offsets offsets;
 };
 
 typedef std::vector<std::unique_ptr<lm_info_target>> lm_info_vector;
@@ -305,13 +305,11 @@ solib_target_relocate_section_addresses
 
   /* Build the offset table only once per object file.  We can not do
      it any earlier, since we need to open the file first.  */
-  if (li->offsets == NULL)
+  if (li->offsets.empty ())
     {
       int num_sections = gdb_bfd_count_sections (so->abfd);
 
-      li->offsets
-	= ((struct section_offsets *)
-	   xzalloc (SIZEOF_N_SECTION_OFFSETS (num_sections)));
+      li->offsets.assign (num_sections, 0);
 
       if (!li->section_bases.empty ())
 	{
@@ -356,7 +354,7 @@ Could not relocate shared library \"%s\"
 		      gdb_assert (so->addr_low <= so->addr_high);
 		      found_range = 1;
 		    }
-		  li->offsets->offsets[i] = li->section_bases[bases_index];
+		  li->offsets[i] = li->section_bases[bases_index];
 		  bases_index++;
 		}
 	      if (!found_range)
@@ -366,9 +364,9 @@ Could not relocate shared library \"%s\"
 	}
       else if (!li->segment_bases.empty ())
 	{
-	  struct symfile_segment_data *data;
+	  symfile_segment_data_up data
+	    = get_symfile_segment_data (so->abfd);
 
-	  data = get_symfile_segment_data (so->abfd);
 	  if (data == NULL)
 	    warning (_("\
 Could not relocate shared library \"%s\": no segments"), so->so_name);
@@ -377,7 +375,8 @@ Could not relocate shared library \"%s\"
 	      ULONGEST orig_delta;
 	      int i;
 
-	      if (!symfile_map_offsets_to_segments (so->abfd, data, li->offsets,
+	      if (!symfile_map_offsets_to_segments (so->abfd, data.get (),
+						    li->offsets,
 						    li->segment_bases.size (),
 						    li->segment_bases.data ()))
 		warning (_("\
@@ -387,9 +386,9 @@ Could not relocate shared library \"%s\"
 		 "info sharedlibrary".  Report any consecutive segments
 		 which were relocated as a single unit.  */
 	      gdb_assert (li->segment_bases.size () > 0);
-	      orig_delta = li->segment_bases[0] - data->segment_bases[0];
+	      orig_delta = li->segment_bases[0] - data->segments[0].base;
 
-	      for (i = 1; i < data->num_segments; i++)
+	      for (i = 1; i < data->segments.size (); i++)
 		{
 		  /* If we have run out of offsets, assume all
 		     remaining segments have the same offset.  */
@@ -398,25 +397,22 @@ Could not relocate shared library \"%s\"
 
 		  /* If this segment does not have the same offset, do
 		     not include it in the library's range.  */
-		  if (li->segment_bases[i] - data->segment_bases[i]
+		  if (li->segment_bases[i] - data->segments[i].base
 		      != orig_delta)
 		    break;
 		}
 
 	      so->addr_low = li->segment_bases[0];
-	      so->addr_high = (data->segment_bases[i - 1]
-			       + data->segment_sizes[i - 1]
+	      so->addr_high = (data->segments[i - 1].base
+			       + data->segments[i - 1].size
 			       + orig_delta);
 	      gdb_assert (so->addr_low <= so->addr_high);
-
-	      free_symfile_segment_data (data);
 	    }
 	}
     }
 
-  offset = li->offsets->offsets[gdb_bfd_section_index
-			        (sec->the_bfd_section->owner,
-				 sec->the_bfd_section)];
+  offset = li->offsets[gdb_bfd_section_index (sec->the_bfd_section->owner,
+					      sec->the_bfd_section)];
   sec->addr += offset;
   sec->endaddr += offset;
 }
@@ -440,8 +436,9 @@ solib_target_in_dynsym_resolve_code (COR
 
 struct target_so_ops solib_target_so_ops;
 
+void _initialize_solib_target ();
 void
-_initialize_solib_target (void)
+_initialize_solib_target ()
 {
   solib_target_so_ops.relocate_section_addresses
     = solib_target_relocate_section_addresses;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-target.h ./gdb/solib-target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solib-target.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solib-target.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle shared libraries for GDB, the GNU Debugger.
 
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solist.h ./gdb/solist.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/solist.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/solist.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Shared library declarations for GDB, the GNU Debugger.
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -24,11 +24,6 @@
 #include "symtab.h"
 #include "gdb_bfd.h"
 
-#define ALL_SO_LIBS(so) \
-    for (so = so_list_head; \
-	 so != NULL; \
-	 so = so->next)
-
 /* Base class for target-specific link map information.  */
 
 struct lm_info_base
@@ -183,9 +178,6 @@ struct so_deleter
 /* A unique pointer to a so_list.  */
 typedef std::unique_ptr<so_list, so_deleter> so_list_up;
 
-/* Return address of first so_list entry in master shared object list.  */
-struct so_list *master_so_list (void);
-
 /* Find main executable binary file.  */
 extern gdb::unique_xmalloc_ptr<char> exec_file_find (const char *in_pathname,
 						     int *fd);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sol-thread.c ./gdb/sol-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sol-thread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sol-thread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Solaris threads debugging interface.
 
-   Copyright (C) 1996-2020 Free Software Foundation, Inc.
+   Copyright (C) 1996-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -427,16 +427,6 @@ ptid_t
 sol_thread_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
 			 int options)
 {
-  ptid_t rtnval;
-  ptid_t save_ptid;
-
-  save_ptid = inferior_ptid;
-  scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
-
-  inferior_ptid = thread_to_lwp (inferior_ptid, main_ph.ptid.pid ());
-  if (inferior_ptid.pid () == -1)
-    inferior_ptid = procfs_first_available ();
-
   if (ptid.pid () != -1)
     {
       ptid_t ptid_for_warning = ptid;
@@ -449,21 +439,25 @@ sol_thread_target::wait (ptid_t ptid, st
 		 ptid_for_warning.tid ());
     }
 
-  rtnval = beneath ()->wait (ptid, ourstatus, options);
+  ptid_t rtnval = beneath ()->wait (ptid, ourstatus, options);
 
   if (ourstatus->kind != TARGET_WAITKIND_EXITED)
     {
       /* Map the LWP of interest back to the appropriate thread ID.  */
-      rtnval = lwp_to_thread (rtnval);
-      if (rtnval.pid () == -1)
-	rtnval = save_ptid;
+      ptid_t thr_ptid = lwp_to_thread (rtnval);
+      if (thr_ptid.pid () != -1)
+	rtnval = thr_ptid;
 
       /* See if we have a new thread.  */
-      if (rtnval.tid_p () && rtnval != save_ptid)
+      if (rtnval.tid_p ())
 	{
-	  thread_info *thr = find_thread_ptid (rtnval);
+	  thread_info *thr = find_thread_ptid (current_inferior (), rtnval);
 	  if (thr == NULL || thr->state == THREAD_EXITED)
-	    add_thread (rtnval);
+	    {
+	      process_stratum_target *proc_target
+		= current_inferior ()->process_target ();
+	      add_thread (proc_target, rtnval);
+	    }
 	}
     }
 
@@ -851,9 +845,10 @@ ps_ptwrite (struct ps_prochandle *ph, ps
 ps_err_e
 ps_lgetregs (struct ps_prochandle *ph, lwpid_t lwpid, prgregset_t gregset)
 {
-  ptid_t ptid = ptid_t (inferior_ptid.pid (), lwpid, 0);
+  ptid_t ptid = ptid_t (current_inferior ()->pid, lwpid, 0);
   struct regcache *regcache
-    = get_thread_arch_regcache (ptid, target_gdbarch ());
+    = get_thread_arch_regcache (current_inferior ()->process_target (),
+				ptid, target_gdbarch ());
 
   target_fetch_registers (regcache, -1);
   fill_gregset (regcache, (gdb_gregset_t *) gregset, -1);
@@ -867,9 +862,10 @@ ps_err_e
 ps_lsetregs (struct ps_prochandle *ph, lwpid_t lwpid,
 	     const prgregset_t gregset)
 {
-  ptid_t ptid = ptid_t (inferior_ptid.pid (), lwpid, 0);
+  ptid_t ptid = ptid_t (current_inferior ()->pid, lwpid, 0);
   struct regcache *regcache
-    = get_thread_arch_regcache (ptid, target_gdbarch ());
+    = get_thread_arch_regcache (current_inferior ()->process_target (),
+				ptid, target_gdbarch ());
 
   supply_gregset (regcache, (const gdb_gregset_t *) gregset);
   target_store_registers (regcache, -1);
@@ -919,9 +915,10 @@ ps_err_e
 ps_lgetfpregs (struct ps_prochandle *ph, lwpid_t lwpid,
 	       prfpregset_t *fpregset)
 {
-  ptid_t ptid = ptid_t (inferior_ptid.pid (), lwpid, 0);
+  ptid_t ptid = ptid_t (current_inferior ()->pid, lwpid, 0);
   struct regcache *regcache
-    = get_thread_arch_regcache (ptid, target_gdbarch ());
+    = get_thread_arch_regcache (current_inferior ()->process_target (),
+				ptid, target_gdbarch ());
 
   target_fetch_registers (regcache, -1);
   fill_fpregset (regcache, (gdb_fpregset_t *) fpregset, -1);
@@ -935,9 +932,10 @@ ps_err_e
 ps_lsetfpregs (struct ps_prochandle *ph, lwpid_t lwpid,
 	       const prfpregset_t * fpregset)
 {
-  ptid_t ptid = ptid_t (inferior_ptid.pid (), lwpid, 0);
+  ptid_t ptid = ptid_t (current_inferior ()->pid, lwpid, 0);
   struct regcache *regcache
-    = get_thread_arch_regcache (ptid, target_gdbarch ());
+    = get_thread_arch_regcache (current_inferior ()->process_target (),
+				ptid, target_gdbarch ());
 
   supply_fpregset (regcache, (const gdb_fpregset_t *) fpregset);
   target_store_registers (regcache, -1);
@@ -961,38 +959,6 @@ ps_pdmodel (struct ps_prochandle *ph, in
 
   return PS_OK;
 }
-
-#if (defined(__i386__) || defined(__x86_64__)) && defined (sun)
-
-/* Reads the local descriptor table of a LWP.
-
-   This function is necessary on x86-solaris only.  Without it, the loading
-   of libthread_db would fail because of ps_lgetLDT being undefined.  */
-
-ps_err_e
-ps_lgetLDT (struct ps_prochandle *ph, lwpid_t lwpid, struct ssd *pldt)	/* ARI: editCase function */
-{
-  /* NOTE: only used on Solaris, therefore OK to refer to procfs.c.  */
-  struct ssd *ret;
-
-  /* FIXME: can't I get the process ID from the prochandle or
-     something?  */
-
-  if (inferior_ptid.pid () <= 0 || lwpid <= 0)
-    return PS_BADLID;
-
-  ret = procfs_find_LDT_entry (ptid_t (inferior_ptid.pid (),
-			       lwpid, 0));
-  if (ret)
-    {
-      memcpy (pldt, ret, sizeof (struct ssd));
-      return PS_OK;
-    }
-  else
-    /* LDT not found.  */
-    return PS_ERR;
-}
-#endif
 
 
 /* Convert PTID to printable form.  */
@@ -1036,10 +1002,14 @@ sol_update_thread_list_callback (const t
   if (retval != TD_OK)
     return -1;
 
-  ptid_t ptid = ptid_t (inferior_ptid.pid (), 0, ti.ti_tid);
-  thread_info *thr = find_thread_ptid (ptid);
+  ptid_t ptid = ptid_t (current_inferior ()->pid, 0, ti.ti_tid);
+  thread_info *thr = find_thread_ptid (current_inferior (), ptid);
   if (thr == NULL || thr->state == THREAD_EXITED)
-    add_thread (ptid);
+    {
+      process_stratum_target *proc_target
+	= current_inferior ()->process_target ();
+      add_thread (proc_target, ptid);
+    }
 
   return 0;
 }
@@ -1178,8 +1148,9 @@ sol_thread_target::get_ada_task_ptid (lo
   return (thread_info->ptid);
 }
 
+void _initialize_sol_thread ();
 void
-_initialize_sol_thread (void)
+_initialize_sol_thread ()
 {
   void *dlhandle;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/source.c ./gdb/source.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/source.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/source.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* List lines of source files for GDB, the GNU debugger.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -47,6 +47,9 @@
 #include "gdbsupport/pathstuff.h"
 #include "source-cache.h"
 #include "cli/cli-style.h"
+#include "observable.h"
+#include "build-id.h"
+#include "debuginfod-support.h"
 
 #define OPEN_MODE (O_RDONLY | O_BINARY)
 #define FDOPEN_MODE FOPEN_RB
@@ -71,13 +74,39 @@ static struct substitute_path_rule *subs
 
 struct current_source_location
 {
+public:
+
+  current_source_location () = default;
+
+  /* Set the value.  */
+  void set (struct symtab *s, int l)
+  {
+    m_symtab = s;
+    m_line = l;
+    gdb::observers::current_source_symtab_and_line_changed.notify ();
+  }
+
+  /* Get the symtab.  */
+  struct symtab *symtab () const
+  {
+    return m_symtab;
+  }
+
+  /* Get the line number.  */
+  int line () const
+  {
+    return m_line;
+  }
+
+private:
+
   /* Symtab of default file for listing lines of.  */
 
-  struct symtab *symtab = nullptr;
+  struct symtab *m_symtab = nullptr;
 
   /* Default next line to list.  */
 
-  int line = 0;
+  int m_line = 0;
 };
 
 static program_space_key<current_source_location> current_source_key;
@@ -191,8 +220,8 @@ get_current_source_symtab_and_line (void
   current_source_location *loc = get_source_location (current_program_space);
 
   cursal.pspace = current_program_space;
-  cursal.symtab = loc->symtab;
-  cursal.line = loc->line;
+  cursal.symtab = loc->symtab ();
+  cursal.line = loc->line ();
   cursal.pc = 0;
   cursal.end = 0;
   
@@ -215,7 +244,7 @@ set_default_source_symtab_and_line (void
 
   /* Pull in a current source symtab if necessary.  */
   current_source_location *loc = get_source_location (current_program_space);
-  if (loc->symtab == nullptr)
+  if (loc->symtab () == nullptr)
     select_source_symtab (0);
 }
 
@@ -232,13 +261,12 @@ set_current_source_symtab_and_line (cons
   current_source_location *loc = get_source_location (sal.pspace);
 
   cursal.pspace = sal.pspace;
-  cursal.symtab = loc->symtab;
-  cursal.line = loc->line;
+  cursal.symtab = loc->symtab ();
+  cursal.line = loc->line ();
   cursal.pc = 0;
   cursal.end = 0;
 
-  loc->symtab = sal.symtab;
-  loc->line = sal.line;
+  loc->set (sal.symtab, sal.line);
 
   /* Force the next "list" to center around the current line.  */
   clear_lines_listed_range ();
@@ -252,8 +280,7 @@ void
 clear_current_source_symtab_and_line (void)
 {
   current_source_location *loc = get_source_location (current_program_space);
-  loc->symtab = nullptr;
-  loc->line = 0;
+  loc->set (nullptr, 0);
 }
 
 /* See source.h.  */
@@ -265,13 +292,12 @@ select_source_symtab (struct symtab *s)
     {
       current_source_location *loc
 	= get_source_location (SYMTAB_PSPACE (s));
-      loc->symtab = s;
-      loc->line = 1;
+      loc->set (s, 1);
       return;
     }
 
   current_source_location *loc = get_source_location (current_program_space);
-  if (loc->symtab != nullptr)
+  if (loc->symtab () != nullptr)
     return;
 
   /* Make the default place to list be the function `main'
@@ -280,15 +306,14 @@ select_source_symtab (struct symtab *s)
   if (bsym.symbol != nullptr && SYMBOL_CLASS (bsym.symbol) == LOC_BLOCK)
     {
       symtab_and_line sal = find_function_start_sal (bsym.symbol, true);
-      loc->symtab = sal.symtab;
-      loc->line = std::max (sal.line - (lines_to_list - 1), 1);
+      loc->set (sal.symtab, std::max (sal.line - (lines_to_list - 1), 1));
       return;
     }
 
   /* Alright; find the last file in the symtab list (ignoring .h's
      and namespace symtabs).  */
 
-  loc->line = 1;
+  struct symtab *new_symtab = nullptr;
 
   for (objfile *ofp : current_program_space->objfiles ())
     {
@@ -301,12 +326,13 @@ select_source_symtab (struct symtab *s)
 
 	      if (!(len > 2 && (strcmp (&name[len - 2], ".h") == 0
 				|| strcmp (name, "<<C++-namespaces>>") == 0)))
-		loc->symtab = symtab;
+		new_symtab = symtab;
 	    }
 	}
     }
 
-  if (loc->symtab != nullptr)
+  loc->set (new_symtab, 1);
+  if (new_symtab != nullptr)
     return;
 
   for (objfile *objfile : current_program_space->objfiles ())
@@ -314,10 +340,13 @@ select_source_symtab (struct symtab *s)
       if (objfile->sf)
 	s = objfile->sf->qf->find_last_source_symtab (objfile);
       if (s)
-	loc->symtab = s;
+	new_symtab = s;
+    }
+  if (new_symtab != nullptr)
+    {
+      loc->set (new_symtab,1);
+      return;
     }
-  if (loc->symtab != nullptr)
-    return;
 
   error (_("Can't find a default source file"));
 }
@@ -392,9 +421,7 @@ forget_cached_source_info_for_objfile (s
 void
 forget_cached_source_info (void)
 {
-  struct program_space *pspace;
-
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     for (objfile *objfile : pspace->objfiles ())
       {
 	forget_cached_source_info_for_objfile (objfile);
@@ -540,8 +567,7 @@ add_path (const char *dirname, char **wh
 	new_name_holder.reset (concat (name, ".", (char *) NULL));
 #endif
       else if (!IS_ABSOLUTE_PATH (name) && name[0] != '$')
-	new_name_holder.reset (concat (current_directory, SLASH_STRING, name,
-				       (char *) NULL));
+	new_name_holder = gdb_abspath (name);
       else
 	new_name_holder.reset (savestring (name, p - name));
       name = new_name_holder.get ();
@@ -642,7 +668,7 @@ info_source_command (const char *ignore,
 {
   current_source_location *loc
     = get_source_location (current_program_space);
-  struct symtab *s = loc->symtab;
+  struct symtab *s = loc->symtab ();
   struct compunit_symtab *cust;
 
   if (!s)
@@ -1122,6 +1148,34 @@ open_source_file (struct symtab *s)
   s->fullname = NULL;
   scoped_fd fd = find_and_open_source (s->filename, SYMTAB_DIRNAME (s),
 				       &fullname);
+
+  if (fd.get () < 0)
+    {
+      if (SYMTAB_COMPUNIT (s) != nullptr)
+	{
+	  const objfile *ofp = COMPUNIT_OBJFILE (SYMTAB_COMPUNIT (s));
+
+	  std::string srcpath;
+	  if (IS_ABSOLUTE_PATH (s->filename))
+	    srcpath = s->filename;
+	  else if (SYMTAB_DIRNAME (s) != nullptr)
+	    {
+	      srcpath = SYMTAB_DIRNAME (s);
+	      srcpath += SLASH_STRING;
+	      srcpath += s->filename;
+	    }
+
+	  const struct bfd_build_id *build_id = build_id_bfd_get (ofp->obfd);
+
+	  /* Query debuginfod for the source file.  */
+	  if (build_id != nullptr && !srcpath.empty ())
+	    fd = debuginfod_source_query (build_id->data,
+					  build_id->size,
+					  srcpath.c_str (),
+					  &fullname);
+	}
+    }
+
   s->fullname = fullname.release ();
   return fd;
 }
@@ -1199,9 +1253,9 @@ print_source_lines_base (struct symtab *
   current_source_location *loc
     = get_source_location (current_program_space);
 
-  loc->symtab = s;
-  loc->line = line;
+  loc->set (s, line);
   first_line_listed = line;
+  last_line_listed = line;
 
   /* If printing of source lines is disabled, just print file and line
      number.  */
@@ -1290,17 +1344,18 @@ print_source_lines_base (struct symtab *
     }
 
   const char *iter = lines.c_str ();
+  int new_lineno = loc->line ();
   while (nlines-- > 0 && *iter != '\0')
     {
       char buf[20];
 
-      last_line_listed = loc->line;
+      last_line_listed = loc->line ();
       if (flags & PRINT_SOURCE_LINES_FILENAME)
         {
           uiout->text (symtab_to_filename_for_display (s));
           uiout->text (":");
         }
-      xsnprintf (buf, sizeof (buf), "%d\t", loc->line++);
+      xsnprintf (buf, sizeof (buf), "%d\t", new_lineno++);
       uiout->text (buf);
 
       while (*iter != '\0')
@@ -1355,6 +1410,8 @@ print_source_lines_base (struct symtab *
 	}
       uiout->text ("\n");
     }
+
+  loc->set (loc->symtab (), new_lineno);
 }
 
 
@@ -1394,12 +1451,12 @@ info_line_command (const char *arg, int
     {
       current_source_location *loc
 	= get_source_location (current_program_space);
-      curr_sal.symtab = loc->symtab;
+      curr_sal.symtab = loc->symtab ();
       curr_sal.pspace = current_program_space;
       if (last_line_listed != 0)
 	curr_sal.line = last_line_listed;
       else
-	curr_sal.line = loc->line;
+	curr_sal.line = loc->line ();
 
       sals = curr_sal;
     }
@@ -1440,8 +1497,7 @@ info_line_command (const char *arg, int
       else if (sal.line > 0
 	       && find_line_pc_range (sal, &start_pc, &end_pc))
 	{
-	  struct gdbarch *gdbarch
-	    = get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+	  struct gdbarch *gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
 
 	  if (start_pc == end_pc)
 	    {
@@ -1476,7 +1532,7 @@ info_line_command (const char *arg, int
 
 	  /* If this is the only line, show the source code.  If it could
 	     not find the file, don't do anything special.  */
-	  if (sals.size () == 1)
+	  if (annotation_level > 0 && sals.size () == 1)
 	    annotate_source_line (sal.symtab, sal.line, 0, start_pc);
 	}
       else
@@ -1503,12 +1559,12 @@ search_command_helper (const char *regex
 
   current_source_location *loc
     = get_source_location (current_program_space);
-  if (loc->symtab == nullptr)
+  if (loc->symtab () == nullptr)
     select_source_symtab (0);
 
-  scoped_fd desc (open_source_file (loc->symtab));
+  scoped_fd desc (open_source_file (loc->symtab ()));
   if (desc.get () < 0)
-    perror_with_name (symtab_to_filename_for_display (loc->symtab));
+    perror_with_name (symtab_to_filename_for_display (loc->symtab ()));
 
   int line = (forward
 	      ? last_line_listed + 1
@@ -1516,12 +1572,12 @@ search_command_helper (const char *regex
 
   const std::vector<off_t> *offsets;
   if (line < 1
-      || !g_source_cache.get_line_charpos (loc->symtab, &offsets)
+      || !g_source_cache.get_line_charpos (loc->symtab (), &offsets)
       || line > offsets->size ())
     error (_("Expression not found"));
 
   if (lseek (desc.get (), (*offsets)[line - 1], 0) < 0)
-    perror_with_name (symtab_to_filename_for_display (loc->symtab));
+    perror_with_name (symtab_to_filename_for_display (loc->symtab ()));
 
   gdb_file_up stream = desc.to_file (FDOPEN_MODE);
   clearerr (stream.get ());
@@ -1556,9 +1612,9 @@ search_command_helper (const char *regex
       if (re_exec (buf.data ()) > 0)
 	{
 	  /* Match!  */
-	  print_source_lines (loc->symtab, line, line + 1, 0);
+	  print_source_lines (loc->symtab (), line, line + 1, 0);
 	  set_internalvar_integer (lookup_internalvar ("_"), line);
-	  loc->line = std::max (line - lines_to_list / 2, 1);
+	  loc->set (loc->symtab (), std::max (line - lines_to_list / 2, 1));
 	  return;
 	}
 
@@ -1572,7 +1628,7 @@ search_command_helper (const char *regex
 	  if (fseek (stream.get (), (*offsets)[line - 1], 0) < 0)
 	    {
 	      const char *filename
-		= symtab_to_filename_for_display (loc->symtab);
+		= symtab_to_filename_for_display (loc->symtab ());
 	      perror_with_name (filename);
 	    }
 	}
@@ -1831,8 +1887,9 @@ source_lines_range::source_lines_range (
 }
 
 
+void _initialize_source ();
 void
-_initialize_source (void)
+_initialize_source ()
 {
   struct cmd_list_element *c;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/source-cache.c ./gdb/source-cache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/source-cache.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/source-cache.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Cache of styled source file text
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -176,11 +176,21 @@ source_cache::ensure (struct symtab *s)
 	}
     }
 
-  std::string contents = get_plain_source_lines (s, fullname);
+  std::string contents;
+  try
+    {
+      contents = get_plain_source_lines (s, fullname);
+    }
+  catch (const gdb_exception_error &e)
+    {
+      /* If 's' is not found, an exception is thrown.  */
+      return false;
+    }
 
-#ifdef HAVE_SOURCE_HIGHLIGHT
   if (source_styling && gdb_stdout->can_emit_style_escape ())
     {
+#ifdef HAVE_SOURCE_HIGHLIGHT
+      bool already_styled = false;
       const char *lang_name = get_language_name (SYMTAB_LANGUAGE (s));
       if (lang_name != nullptr)
 	{
@@ -202,6 +212,7 @@ source_cache::ensure (struct symtab *s)
 	      std::ostringstream output;
 	      highlighter->highlight (input, output, lang_name, fullname);
 	      contents = output.str ();
+	      already_styled = true;
 	    }
 	  catch (...)
 	    {
@@ -213,8 +224,16 @@ source_cache::ensure (struct symtab *s)
 		 un-highlighted text. */
 	    }
 	}
-    }
+
+      if (!already_styled)
 #endif /* HAVE_SOURCE_HIGHLIGHT */
+	{
+	  gdb::optional<std::string> ext_contents;
+	  ext_contents = ext_lang_colorize (fullname, contents);
+	  if (ext_contents.has_value ())
+	    contents = std::move (*ext_contents);
+	}
+    }
 
   source_text result = { std::move (fullname), std::move (contents) };
   m_source_map.push_back (std::move (result));
@@ -231,26 +250,20 @@ bool
 source_cache::get_line_charpos (struct symtab *s,
 				const std::vector<off_t> **offsets)
 {
-  try
-    {
-      std::string fullname = symtab_to_fullname (s);
-
-      auto iter = m_offset_cache.find (fullname);
-      if (iter == m_offset_cache.end ())
-	{
-	  ensure (s);
-	  iter = m_offset_cache.find (fullname);
-	  /* cache_source_text ensured this was entered.  */
-	  gdb_assert (iter != m_offset_cache.end ());
-	}
+  std::string fullname = symtab_to_fullname (s);
 
-      *offsets = &iter->second;
-      return true;
-    }
-  catch (const gdb_exception_error &e)
+  auto iter = m_offset_cache.find (fullname);
+  if (iter == m_offset_cache.end ())
     {
-      return false;
+      if (!ensure (s))
+	return false;
+      iter = m_offset_cache.find (fullname);
+      /* cache_source_text ensured this was entered.  */
+      gdb_assert (iter != m_offset_cache.end ());
     }
+
+  *offsets = &iter->second;
+  return true;
 }
 
 /* A helper function that extracts the desired source lines from TEXT,
@@ -329,6 +342,7 @@ static void extract_lines_test ()
 }
 #endif
 
+void _initialize_source_cache ();
 void
 _initialize_source_cache ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/source-cache.h ./gdb/source-cache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/source-cache.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/source-cache.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Cache of styled source file text
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/source.h ./gdb/source.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/source.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/source.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* List lines of source files for GDB, the GNU debugger.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-fbsd-nat.c ./gdb/sparc64-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-fbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-fbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD/sparc64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -62,8 +62,9 @@ sparc64fbsd_kvm_supply_pcb (struct regca
 /* Add some extra features to the generic SPARC target.  */
 static sparc_target<fbsd_nat_target> the_sparc64_fbsd_nat_target;
 
+void _initialize_sparc64fbsd_nat ();
 void
-_initialize_sparc64fbsd_nat (void)
+_initialize_sparc64fbsd_nat ()
 {
   add_inf_child_target (&the_sparc64_fbsd_nat_target);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-fbsd-tdep.c ./gdb/sparc64-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-fbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-fbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD/sparc64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -242,8 +242,9 @@ sparc64fbsd_init_abi (struct gdbarch_inf
     (gdbarch, svr4_lp64_fetch_link_map_offsets);
 }
 
+void _initialize_sparc64fbsd_tdep ();
 void
-_initialize_sparc64fbsd_tdep (void)
+_initialize_sparc64fbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9,
 			  GDB_OSABI_FREEBSD, sparc64fbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-linux-nat.c ./gdb/sparc64-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux UltraSPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,10 +35,10 @@ class sparc64_linux_nat_target final : p
 public:
   /* Add our register access methods.  */
   void fetch_registers (struct regcache *regcache, int regnum) override
-  { sparc_fetch_inferior_registers (regcache, regnum); }
+  { sparc_fetch_inferior_registers (this, regcache, regnum); }
 
   void store_registers (struct regcache *regcache, int regnum) override
-  { sparc_store_inferior_registers (regcache, regnum); }
+  { sparc_store_inferior_registers (this, regcache, regnum); }
 
   /* Override linux_nat_target low methods.  */
 
@@ -88,8 +88,9 @@ fill_fpregset (const struct regcache *re
   sparc64_collect_fpregset (&sparc64_bsd_fpregmap, regcache, regnum, fpregs);
 }
 
+void _initialize_sparc64_linux_nat ();
 void
-_initialize_sparc64_linux_nat (void)
+_initialize_sparc64_linux_nat ()
 {
   sparc_fpregmap = &sparc64_bsd_fpregmap;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-linux-tdep.c ./gdb/sparc64-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux UltraSPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -20,7 +20,7 @@
 #include "defs.h"
 #include "frame.h"
 #include "frame-unwind.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "regset.h"
 #include "regcache.h"
 #include "gdbarch.h"
@@ -116,15 +116,16 @@ sparc64_linux_sigframe_init (const struc
   trad_frame_set_id (this_cache, frame_id_build (base, func));
 }
 
-/* sparc64 GNU/Linux implementation of the handle_segmentation_fault
+/* sparc64 GNU/Linux implementation of the report_signal_info
    gdbarch hook.
    Displays information related to ADI memory corruptions.  */
 
 static void
-sparc64_linux_handle_segmentation_fault (struct gdbarch *gdbarch,
-				      struct ui_out *uiout)
+sparc64_linux_report_signal_info (struct gdbarch *gdbarch, struct ui_out *uiout,
+				  enum gdb_signal siggnal)
 {
-  if (gdbarch_bfd_arch_info (gdbarch)->bits_per_word != 64)
+  if (gdbarch_bfd_arch_info (gdbarch)->bits_per_word != 64
+      || siggnal != GDB_SIGNAL_SEGV)
     return;
 
   CORE_ADDR addr = 0;
@@ -404,12 +405,12 @@ sparc64_linux_init_abi (struct gdbarch_i
   set_xml_syscall_file_name (gdbarch, XML_SYSCALL_FILENAME_SPARC64);
   set_gdbarch_get_syscall_number (gdbarch,
                                   sparc64_linux_get_syscall_number);
-  set_gdbarch_handle_segmentation_fault (gdbarch,
-					 sparc64_linux_handle_segmentation_fault);
+  set_gdbarch_report_signal_info (gdbarch, sparc64_linux_report_signal_info);
 }
 
+void _initialize_sparc64_linux_tdep ();
 void
-_initialize_sparc64_linux_tdep (void)
+_initialize_sparc64_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9,
 			  GDB_OSABI_LINUX, sparc64_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-nat.c ./gdb/sparc64-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux UltraSPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -69,8 +69,9 @@ sparc64_fpregset_supplies_p (struct gdba
   return 0;
 }
 
+void _initialize_sparc64_nat ();
 void
-_initialize_sparc64_nat (void)
+_initialize_sparc64_nat ()
 {
   sparc_supply_gregset = sparc64_supply_gregset;
   sparc_collect_gregset = sparc64_collect_gregset;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-nbsd-nat.c ./gdb/sparc64-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-nbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-nbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for NetBSD/sparc64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -170,8 +170,9 @@ sparc64nbsd_supply_pcb (struct regcache
 /* We've got nothing to add to the generic SPARC target.  */
 static sparc_target<inf_ptrace_target> the_sparc64_nbsd_nat_target;
 
+void _initialize_sparc64nbsd_nat ();
 void
-_initialize_sparc64nbsd_nat (void)
+_initialize_sparc64nbsd_nat ()
 {
   sparc_supply_gregset = sparc64nbsd_supply_gregset;
   sparc_collect_gregset = sparc64nbsd_collect_gregset;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-nbsd-tdep.c ./gdb/sparc64-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/sparc64.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
    Based on code contributed by Wasabi Systems, Inc.
 
    This file is part of GDB.
@@ -249,6 +249,8 @@ sparc64nbsd_init_abi (struct gdbarch_inf
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
+  nbsd_init_abi (info, gdbarch);
+
   tdep->gregset = &sparc64nbsd_gregset;
   tdep->sizeof_gregset = 160;
 
@@ -268,8 +270,9 @@ sparc64nbsd_init_abi (struct gdbarch_inf
     (gdbarch, svr4_lp64_fetch_link_map_offsets);
 }
 
+void _initialize_sparc64nbsd_tdep ();
 void
-_initialize_sparc64nbsd_tdep (void)
+_initialize_sparc64nbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9,
 			  GDB_OSABI_NETBSD, sparc64nbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-obsd-nat.c ./gdb/sparc64-obsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-obsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-obsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for OpenBSD/sparc64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -109,8 +109,9 @@ sparc64obsd_supply_pcb (struct regcache
 /* Add some extra features to the generic SPARC target.  */
 static sparc_target<obsd_nat_target> the_sparc64_obsd_nat_target;
 
+void _initialize_sparc64obsd_nat ();
 void
-_initialize_sparc64obsd_nat (void)
+_initialize_sparc64obsd_nat ()
 {
   sparc_supply_gregset = sparc64_supply_gregset;
   sparc_collect_gregset = sparc64_collect_gregset;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-obsd-tdep.c ./gdb/sparc64-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-obsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-obsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/sparc64.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,6 +27,7 @@
 #include "symtab.h"
 #include "objfiles.h"
 #include "trad-frame.h"
+#include "inferior.h"
 
 #include "obsd-tdep.h"
 #include "sparc64-tdep.h"
@@ -328,6 +329,9 @@ sparc64obsd_supply_uthread (struct regca
   CORE_ADDR fp, fp_addr = addr + SPARC64OBSD_UTHREAD_FP_OFFSET;
   gdb_byte buf[8];
 
+  /* This function calls functions that depend on the global current thread.  */
+  gdb_assert (regcache->ptid () == inferior_ptid);
+
   gdb_assert (regnum >= -1);
 
   fp = read_memory_unsigned_integer (fp_addr, 8, byte_order);
@@ -373,6 +377,9 @@ sparc64obsd_collect_uthread(const struct
   CORE_ADDR sp;
   gdb_byte buf[8];
 
+  /* This function calls functions that depend on the global current thread.  */
+  gdb_assert (regcache->ptid () == inferior_ptid);
+
   gdb_assert (regnum >= -1);
 
   if (regnum == SPARC_SP_REGNUM || regnum == -1)
@@ -440,8 +447,9 @@ sparc64obsd_init_abi (struct gdbarch_inf
   bsd_uthread_set_collect_uthread (gdbarch, sparc64obsd_collect_uthread);
 }
 
+void _initialize_sparc64obsd_tdep ();
 void
-_initialize_sparc64obsd_tdep (void)
+_initialize_sparc64obsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9,
 			  GDB_OSABI_OPENBSD, sparc64obsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-sol2-tdep.c ./gdb/sparc64-sol2-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-sol2-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-sol2-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Solaris UltraSPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -180,15 +180,9 @@ sparc64_sol2_sigtramp_frame_sniffer (con
 				     struct frame_info *this_frame,
 				     void **this_cache)
 {
-  CORE_ADDR pc = get_frame_pc (this_frame);
-  const char *name;
-
-  find_pc_partial_function (pc, &name, NULL, NULL);
-  if (sparc_sol2_pc_in_sigtramp (pc, name))
-    return 1;
-
-  return 0;
+  return sol2_sigtramp_p (this_frame);
 }
+
 static const struct frame_unwind sparc64_sol2_sigtramp_frame_unwind =
 {
   SIGTRAMP_FRAME,
@@ -201,7 +195,7 @@ static const struct frame_unwind sparc64
 
 
 
-void
+static void
 sparc64_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
@@ -216,19 +210,10 @@ sparc64_sol2_init_abi (struct gdbarch_in
 
   sparc64_init_abi (info, gdbarch);
 
-  /* The Sun compilers (Sun ONE Studio, Forte Developer, Sun WorkShop, SunPRO)
-     compiler puts out 0 instead of the address in N_SO stabs.  Starting with
-     SunPRO 3.0, the compiler does this for N_FUN stabs too.  */
-  set_gdbarch_sofun_address_maybe_missing (gdbarch, 1);
-
-  /* The Sun compilers also do "globalization"; see the comment in
-     sparc_sol2_static_transform_name for more information.  */
-  set_gdbarch_static_transform_name
-    (gdbarch, sparc_sol2_static_transform_name);
+  sol2_init_abi (info, gdbarch);
 
   /* Solaris has SVR4-style shared libraries...  */
   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
-  set_gdbarch_skip_solib_resolver (gdbarch, sol2_skip_solib_resolver);
   set_solib_svr4_fetch_link_map_offsets
     (gdbarch, svr4_lp64_fetch_link_map_offsets);
 
@@ -238,13 +223,11 @@ sparc64_sol2_init_abi (struct gdbarch_in
 
   /* Solaris has kernel-assisted single-stepping support.  */
   set_gdbarch_software_single_step (gdbarch, NULL);
-
-  /* How to print LWP PTIDs from core files.  */
-  set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str);
 }
 
+void _initialize_sparc64_sol2_tdep ();
 void
-_initialize_sparc64_sol2_tdep (void)
+_initialize_sparc64_sol2_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9,
 			  GDB_OSABI_SOLARIS, sparc64_sol2_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-tdep.c ./gdb/sparc64-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for UltraSPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -19,7 +19,7 @@
 
 #include "defs.h"
 #include "arch-utils.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
@@ -33,8 +33,8 @@
 #include "target-descriptions.h"
 #include "target.h"
 #include "value.h"
-
 #include "sparc64-tdep.h"
+#include <forward_list>
 
 /* This file implements the SPARC 64-bit ABI as defined by the
    section "Low-Level System Information" of the SPARC Compliance
@@ -86,7 +86,7 @@
 static struct cmd_list_element *sparc64adilist = NULL;
 
 /* ADI stat settings.  */
-typedef struct
+struct adi_stat_t
 {
   /* The ADI block size.  */
   unsigned long blksize;
@@ -108,11 +108,11 @@ typedef struct
   /* ADI is available.  */
   bool is_avail = false;
 
-} adi_stat_t;
+};
 
 /* Per-process ADI stat info.  */
 
-typedef struct sparc64_adi_info
+struct sparc64_adi_info
 {
   sparc64_adi_info (pid_t pid_)
     : pid (pid_)
@@ -124,7 +124,7 @@ typedef struct sparc64_adi_info
   /* The ADI stat.  */
   adi_stat_t stat = {};
 
-} sparc64_adi_info;
+};
 
 static std::forward_list<sparc64_adi_info> adi_proc_list;
 
@@ -186,14 +186,6 @@ sparc64_forget_process (pid_t pid)
 
 }
 
-static void
-info_adi_command (const char *args, int from_tty)
-{
-  printf_unfiltered ("\"adi\" must be followed by \"examine\" "
-                     "or \"assign\".\n");
-  help_list (sparc64adilist, "adi ", all_commands, gdb_stdout);
-}
-
 /* Read attributes of a maps entry in /proc/[pid]/adi/maps.  */
 
 static void
@@ -295,7 +287,7 @@ adi_tag_fd (void)
   snprintf (cl_name, sizeof(cl_name), "/proc/%ld/adi/tags", (long) pid);
   int target_errno;
   proc->stat.tag_fd = target_fileio_open (NULL, cl_name, O_RDWR|O_EXCL, 
-                                          0, &target_errno);
+                                          false, 0, &target_errno);
   return proc->stat.tag_fd;
 }
 
@@ -534,13 +526,13 @@ adi_assign_command (const char *args, in
   do_assign (next_address, cnt, version);
 }
 
+void _initialize_sparc64_adi_tdep ();
 void
-_initialize_sparc64_adi_tdep (void)
+_initialize_sparc64_adi_tdep ()
 {
-
-  add_prefix_cmd ("adi", class_support, info_adi_command,
-                  _("ADI version related commands."),
-                  &sparc64adilist, "adi ", 0, &cmdlist);
+  add_basic_prefix_cmd ("adi", class_support,
+			_("ADI version related commands."),
+			&sparc64adilist, "adi ", 0, &cmdlist);
   add_cmd ("examine", class_support, adi_examine_command,
            _("Examine ADI versions."), &sparc64adilist);
   add_alias_cmd ("x", "examine", no_class, 1, &sparc64adilist);
@@ -558,7 +550,7 @@ _initialize_sparc64_adi_tdep (void)
 static int
 sparc64_integral_or_pointer_p (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_INT:
     case TYPE_CODE_BOOL:
@@ -590,7 +582,7 @@ sparc64_integral_or_pointer_p (const str
 static int
 sparc64_floating_p (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_FLT:
       {
@@ -610,7 +602,7 @@ sparc64_floating_p (const struct type *t
 static int
 sparc64_complex_floating_p (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_COMPLEX:
       {
@@ -634,7 +626,7 @@ sparc64_complex_floating_p (const struct
 static int
 sparc64_structure_or_union_p (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
@@ -1173,7 +1165,7 @@ static const struct frame_base sparc64_f
 static int
 sparc64_16_byte_align_p (struct type *type)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type->code () == TYPE_CODE_ARRAY)
     {
       struct type *t = check_typedef (TYPE_TARGET_TYPE (type));
 
@@ -1187,9 +1179,9 @@ sparc64_16_byte_align_p (struct type *ty
     {
       int i;
 
-      for (i = 0; i < TYPE_NFIELDS (type); i++)
+      for (i = 0; i < type->num_fields (); i++)
 	{
-	  struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i));
+	  struct type *subtype = check_typedef (type->field (i).type ());
 
 	  if (sparc64_16_byte_align_p (subtype))
 	    return 1;
@@ -1214,7 +1206,7 @@ sparc64_store_floating_fields (struct re
 
   gdb_assert (element < 16);
 
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type->code () == TYPE_CODE_ARRAY)
     {
       gdb_byte buf[8];
       int regnum = SPARC_F0_REGNUM + element * 2 + bitpos / 32;
@@ -1264,9 +1256,9 @@ sparc64_store_floating_fields (struct re
     {
       int i;
 
-      for (i = 0; i < TYPE_NFIELDS (type); i++)
+      for (i = 0; i < type->num_fields (); i++)
 	{
-	  struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i));
+	  struct type *subtype = check_typedef (type->field (i).type ());
 	  int subpos = bitpos + TYPE_FIELD_BITPOS (type, i);
 
 	  sparc64_store_floating_fields (regcache, subtype, valbuf,
@@ -1282,9 +1274,9 @@ sparc64_store_floating_fields (struct re
          probably in older releases to.  To appease GCC, if a
          structure has only a single `float' member, we store its
          value in %f1 too (we already have stored in %f0).  */
-      if (TYPE_NFIELDS (type) == 1)
+      if (type->num_fields () == 1)
 	{
-	  struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, 0));
+	  struct type *subtype = check_typedef (type->field (0).type ());
 
 	  if (sparc64_floating_p (subtype) && TYPE_LENGTH (subtype) == 4)
 	    regcache->cooked_write (SPARC_F1_REGNUM, valbuf);
@@ -1303,7 +1295,7 @@ sparc64_extract_floating_fields (struct
 {
   struct gdbarch *gdbarch = regcache->arch ();
 
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type->code () == TYPE_CODE_ARRAY)
     {
       int len = TYPE_LENGTH (type);
       int regnum =  SPARC_F0_REGNUM + bitpos / 32;
@@ -1352,9 +1344,9 @@ sparc64_extract_floating_fields (struct
     {
       int i;
 
-      for (i = 0; i < TYPE_NFIELDS (type); i++)
+      for (i = 0; i < type->num_fields (); i++)
 	{
-	  struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i));
+	  struct type *subtype = check_typedef (type->field (i).type ());
 	  int subpos = bitpos + TYPE_FIELD_BITPOS (type, i);
 
 	  sparc64_extract_floating_fields (regcache, subtype, valbuf, subpos);
@@ -1664,7 +1656,7 @@ sparc64_extract_return_value (struct typ
 
       for (i = 0; i < ((len + 7) / 8); i++)
 	regcache->cooked_read (SPARC_O0_REGNUM + i, buf + i * 8);
-      if (TYPE_CODE (type) != TYPE_CODE_UNION)
+      if (type->code () != TYPE_CODE_UNION)
 	sparc64_extract_floating_fields (regcache, type, buf, 0);
       memcpy (valbuf, buf, len);
     }
@@ -1675,7 +1667,7 @@ sparc64_extract_return_value (struct typ
 	regcache->cooked_read (SPARC_F0_REGNUM + i, buf + i * 4);
       memcpy (valbuf, buf, len);
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  else if (type->code () == TYPE_CODE_ARRAY)
     {
       /* Small arrays are returned the same way as small structures.  */
       gdb_assert (len <= 32);
@@ -1719,7 +1711,7 @@ sparc64_store_return_value (struct type
       memcpy (buf, valbuf, len);
       for (i = 0; i < ((len + 7) / 8); i++)
 	regcache->cooked_write (SPARC_O0_REGNUM + i, buf + i * 8);
-      if (TYPE_CODE (type) != TYPE_CODE_UNION)
+      if (type->code () != TYPE_CODE_UNION)
 	sparc64_store_floating_fields (regcache, type, buf, 0, 0);
     }
   else if (sparc64_floating_p (type) || sparc64_complex_floating_p (type))
@@ -1729,7 +1721,7 @@ sparc64_store_return_value (struct type
       for (i = 0; i < len / 4; i++)
 	regcache->cooked_write (SPARC_F0_REGNUM + i, buf + i * 4);
     }
-  else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  else if (type->code () == TYPE_CODE_ARRAY)
     {
       /* Small arrays are returned the same way as small structures.  */
       gdb_assert (len <= 32);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-tdep.h ./gdb/sparc64-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc64-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc64-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for UltraSPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -119,9 +119,6 @@ extern void sparc64_collect_fpregset (co
 extern const struct sparc_gregmap sparc64_sol2_gregmap;
 extern const struct sparc_fpregmap sparc64_sol2_fpregmap;
 
-extern void sparc64_sol2_init_abi (struct gdbarch_info info,
-				   struct gdbarch *gdbarch);
-
 /* Variables exported from sparc64-fbsd-tdep.c.  */
 
 /* Register offsets for FreeBSD/sparc64.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-linux-nat.c ./gdb/sparc-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-linux-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-linux-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Native-dependent code for GNU/Linux SPARC.
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -66,8 +66,9 @@ fill_fpregset (const struct regcache *re
   sparc32_collect_fpregset (sparc_fpregmap, regcache, regnum, fpregs);
 }
 
+void _initialize_sparc_linux_nat ();
 void
-_initialize_sparc_linux_nat (void)
+_initialize_sparc_linux_nat ()
 {
   sparc_fpregmap = &sparc32_bsd_fpregmap;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-linux-tdep.c ./gdb/sparc-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-linux-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-linux-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux SPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,7 +18,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "frame.h"
 #include "frame-unwind.h"
 #include "gdbtypes.h"
@@ -465,8 +465,9 @@ sparc32_linux_init_abi (struct gdbarch_i
 				    sparc32_linux_gdb_signal_to_target);
 }
 
+void _initialize_sparc_linux_tdep ();
 void
-_initialize_sparc_linux_tdep (void)
+_initialize_sparc_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_LINUX,
 			  sparc32_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-nat.c ./gdb/sparc-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for SPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -78,6 +78,19 @@ typedef struct fp_status fpregset_t;
 #define PTRACE_SETFPREGS PT_SETFPREGS
 #endif
 
+static PTRACE_TYPE_RET
+gdb_ptrace (PTRACE_TYPE_ARG1 request, ptid_t ptid, PTRACE_TYPE_ARG3 addr)
+{
+#ifdef __NetBSD__
+  /* Support for NetBSD threads: unlike other ptrace implementations in this
+     file, NetBSD requires that we pass both the pid and lwp.  */
+  return ptrace (request, ptid.pid (), addr, ptid.lwp ());
+#else
+  pid_t pid = get_ptrace_pid (ptid);
+  return ptrace (request, pid, addr, 0);
+#endif
+}
+
 /* Register set description.  */
 const struct sparc_gregmap *sparc_gregmap;
 const struct sparc_fpregmap *sparc_fpregmap;
@@ -134,25 +147,11 @@ sparc32_fpregset_supplies_p (struct gdba
    for all registers (including the floating-point registers).  */
 
 void
-sparc_fetch_inferior_registers (struct regcache *regcache, int regnum)
+sparc_fetch_inferior_registers (process_stratum_target *proc_target,
+				regcache *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  pid_t pid;
-
-  /* NOTE: cagney/2002-12-03: This code assumes that the currently
-     selected light weight processes' registers can be written
-     directly into the selected thread's register cache.  This works
-     fine when given an 1:1 LWP:thread model (such as found on
-     GNU/Linux) but will, likely, have problems when used on an N:1
-     (userland threads) or N:M (userland multiple LWP) model.  In the
-     case of the latter two, the LWP's registers do not necessarily
-     belong to the selected thread (the LWP could be in the middle of
-     executing the thread switch code).
-
-     These functions should instead be parameterized with an explicit
-     object (struct regcache, struct thread_info?) into which the LWPs
-     registers can be written.  */
-  pid = get_ptrace_pid (regcache->ptid ());
+  ptid_t ptid = regcache->ptid ();
 
   if (regnum == SPARC_G0_REGNUM)
     {
@@ -166,9 +165,15 @@ sparc_fetch_inferior_registers (struct r
     {
       gregset_t regs;
 
-      if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PTRACE_GETREGS, ptid, (PTRACE_TYPE_ARG3) &regs) == -1)
 	perror_with_name (_("Couldn't get registers"));
 
+      /* Deep down, sparc_supply_rwindow reads memory, so needs the global
+	 thread context to be set.  */
+      thread_info *thread = find_thread_ptid (proc_target, ptid);
+      scoped_restore_current_thread restore_thread;
+      switch_to_thread (thread);
+
       sparc_supply_gregset (sparc_gregmap, regcache, -1, &regs);
       if (regnum != -1)
 	return;
@@ -178,7 +183,7 @@ sparc_fetch_inferior_registers (struct r
     {
       fpregset_t fpregs;
 
-      if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (gdb_ptrace (PTRACE_GETFPREGS, ptid, (PTRACE_TYPE_ARG3) &fpregs) == -1)
 	perror_with_name (_("Couldn't get floating point status"));
 
       sparc_supply_fpregset (sparc_fpregmap, regcache, -1, &fpregs);
@@ -186,25 +191,22 @@ sparc_fetch_inferior_registers (struct r
 }
 
 void
-sparc_store_inferior_registers (struct regcache *regcache, int regnum)
+sparc_store_inferior_registers (process_stratum_target *proc_target,
+				regcache *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  pid_t pid;
-
-  /* NOTE: cagney/2002-12-02: See comment in fetch_inferior_registers
-     about threaded assumptions.  */
-  pid = get_ptrace_pid (regcache->ptid ());
+  ptid_t ptid = regcache->ptid ();
 
   if (regnum == -1 || sparc_gregset_supplies_p (gdbarch, regnum))
     {
       gregset_t regs;
 
-      if (ptrace (PTRACE_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PTRACE_GETREGS, ptid, (PTRACE_TYPE_ARG3) &regs) == -1)
 	perror_with_name (_("Couldn't get registers"));
 
       sparc_collect_gregset (sparc_gregmap, regcache, regnum, &regs);
 
-      if (ptrace (PTRACE_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+      if (gdb_ptrace (PTRACE_SETREGS, ptid, (PTRACE_TYPE_ARG3) &regs) == -1)
 	perror_with_name (_("Couldn't write registers"));
 
       /* Deal with the stack regs.  */
@@ -214,6 +216,13 @@ sparc_store_inferior_registers (struct r
 	  ULONGEST sp;
 
 	  regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp);
+
+	  /* Deep down, sparc_collect_rwindow writes memory, so needs the global
+	     thread context to be set.  */
+	  thread_info *thread = find_thread_ptid (proc_target, ptid);
+	  scoped_restore_current_thread restore_thread;
+	  switch_to_thread (thread);
+
 	  sparc_collect_rwindow (regcache, sp, regnum);
 	}
 
@@ -225,7 +234,7 @@ sparc_store_inferior_registers (struct r
     {
       fpregset_t fpregs, saved_fpregs;
 
-      if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+      if (gdb_ptrace (PTRACE_GETFPREGS, ptid, (PTRACE_TYPE_ARG3) &fpregs) == -1)
 	perror_with_name (_("Couldn't get floating-point registers"));
 
       memcpy (&saved_fpregs, &fpregs, sizeof (fpregs));
@@ -237,8 +246,8 @@ sparc_store_inferior_registers (struct r
 	 to write the registers if nothing changed.  */
       if (memcmp (&saved_fpregs, &fpregs, sizeof (fpregs)) != 0)
 	{
-	  if (ptrace (PTRACE_SETFPREGS, pid,
-		      (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+	  if (gdb_ptrace (PTRACE_SETFPREGS, ptid,
+			  (PTRACE_TYPE_ARG3) &fpregs) == -1)
 	    perror_with_name (_("Couldn't write floating-point registers"));
 	}
 
@@ -305,8 +314,9 @@ sparc_xfer_wcookie (enum target_object o
 }
 
 
+void _initialize_sparc_nat ();
 void
-_initialize_sparc_nat (void)
+_initialize_sparc_nat ()
 {
   /* Default to using SunOS 4 register sets.  */
   if (sparc_gregmap == NULL)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-nat.h ./gdb/sparc-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-nat.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-nat.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for SPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -41,8 +41,10 @@ extern int (*sparc_fpregset_supplies_p)
 extern int sparc32_gregset_supplies_p (struct gdbarch *gdbarch, int regnum);
 extern int sparc32_fpregset_supplies_p (struct gdbarch *gdbarch, int regnum);
 
-extern void sparc_fetch_inferior_registers (struct regcache *, int);
-extern void sparc_store_inferior_registers (struct regcache *, int);
+extern void sparc_fetch_inferior_registers (process_stratum_target *proc_target,
+					    regcache *, int);
+extern void sparc_store_inferior_registers (process_stratum_target *proc_target,
+					    regcache *, int);
 
 extern target_xfer_status sparc_xfer_wcookie (enum target_object object,
 					      const char *annex,
@@ -59,10 +61,10 @@ template<typename BaseTarget>
 struct sparc_target : public BaseTarget
 {
   void fetch_registers (struct regcache *regcache, int regnum) override
-  { sparc_fetch_inferior_registers (regcache, regnum); }
+  { sparc_fetch_inferior_registers (this, regcache, regnum); }
 
   void store_registers (struct regcache *regcache, int regnum) override
-  { sparc_store_inferior_registers (regcache, regnum); }
+  { sparc_store_inferior_registers (this, regcache, regnum); }
 
   enum target_xfer_status xfer_partial (enum target_object object,
 					const char *annex,
@@ -75,8 +77,8 @@ struct sparc_target : public BaseTarget
       return sparc_xfer_wcookie (object, annex, readbuf, writebuf,
 				 offset, len, xfered_len);
 
-    return BaseTarget (object, annex, readbuf, writebuf,
-		       offset, len, xfered_len);
+    return BaseTarget::xfer_partial (object, annex, readbuf, writebuf,
+				     offset, len, xfered_len);
   }
 };
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-nbsd-nat.c ./gdb/sparc-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-nbsd-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-nbsd-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for NetBSD/sparc.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -57,8 +57,9 @@ sparc32nbsd_supply_pcb (struct regcache
 
 static sparc_target<inf_ptrace_target> the_sparc_nbsd_nat_target;
 
+void _initialize_sparcnbsd_nat ();
 void
-_initialize_sparcnbsd_nat (void)
+_initialize_sparcnbsd_nat ()
 {
   sparc_gregmap = &sparc32nbsd_gregmap;
   sparc_fpregmap = &sparc32_bsd_fpregmap;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-nbsd-tdep.c ./gdb/sparc-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-nbsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-nbsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/sparc.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
    Contributed by Wasabi Systems, Inc.
 
    This file is part of GDB.
@@ -296,6 +296,8 @@ sparc32nbsd_init_abi (struct gdbarch_inf
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
+  nbsd_init_abi (info, gdbarch);
+
   /* NetBSD doesn't support the 128-bit `long double' from the psABI.  */
   set_gdbarch_long_double_bit (gdbarch, 64);
   set_gdbarch_long_double_format (gdbarch, floatformats_ieee_double);
@@ -315,8 +317,9 @@ sparc32nbsd_init_abi (struct gdbarch_inf
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
 }
 
+void _initialize_sparcnbsd_tdep ();
 void
-_initialize_sparcnbsd_tdep (void)
+_initialize_sparcnbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_NETBSD,
 			  sparc32nbsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-obsd-tdep.c ./gdb/sparc-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-obsd-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-obsd-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/sparc.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,6 +25,7 @@
 #include "regcache.h"
 #include "symtab.h"
 #include "trad-frame.h"
+#include "inferior.h"
 
 #include "obsd-tdep.h"
 #include "sparc-tdep.h"
@@ -158,6 +159,9 @@ sparc32obsd_supply_uthread (struct regca
   CORE_ADDR fp, fp_addr = addr + SPARC32OBSD_UTHREAD_FP_OFFSET;
   gdb_byte buf[4];
 
+  /* This function calls functions that depend on the global current thread.  */
+  gdb_assert (regcache->ptid () == inferior_ptid);
+
   gdb_assert (regnum >= -1);
 
   fp = read_memory_unsigned_integer (fp_addr, 4, byte_order);
@@ -203,6 +207,9 @@ sparc32obsd_collect_uthread(const struct
   CORE_ADDR sp;
   gdb_byte buf[4];
 
+  /* This function calls functions that depend on the global current thread.  */
+  gdb_assert (regcache->ptid () == inferior_ptid);
+
   gdb_assert (regnum >= -1);
 
   if (regnum == SPARC_SP_REGNUM || regnum == -1)
@@ -246,8 +253,9 @@ sparc32obsd_init_abi (struct gdbarch_inf
   bsd_uthread_set_collect_uthread (gdbarch, sparc32obsd_collect_uthread);
 }
 
+void _initialize_sparc32obsd_tdep ();
 void
-_initialize_sparc32obsd_tdep (void)
+_initialize_sparc32obsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_OPENBSD,
 			  sparc32obsd_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-ravenscar-thread.c ./gdb/sparc-ravenscar-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-ravenscar-thread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-ravenscar-thread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ravenscar SPARC target support.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-ravenscar-thread.h ./gdb/sparc-ravenscar-thread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-ravenscar-thread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-ravenscar-thread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ravenscar SPARC target support.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-sol2-nat.c ./gdb/sparc-sol2-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-sol2-nat.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-sol2-nat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for Solaris SPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-sol2-tdep.c ./gdb/sparc-sol2-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-sol2-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-sol2-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Solaris SPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -99,30 +99,6 @@ static const struct regset sparc32_sol2_
   };
 
 
-/* The Solaris signal trampolines reside in libc.  For normal signals,
-   the function `sigacthandler' is used.  This signal trampoline will
-   call the signal handler using the System V calling convention,
-   where the third argument is a pointer to an instance of
-   `ucontext_t', which has a member `uc_mcontext' that contains the
-   saved registers.  Incidentally, the kernel passes the `ucontext_t'
-   pointer as the third argument of the signal trampoline too, and
-   `sigacthandler' simply passes it on.  However, if you link your
-   program with "-L/usr/ucblib -R/usr/ucblib -lucb", the function
-   `ucbsigvechandler' will be used, which invokes the using the BSD
-   convention, where the third argument is a pointer to an instance of
-   `struct sigcontext'.  It is the `ucbsigvechandler' function that
-   converts the `ucontext_t' to a `sigcontext', and back.  Unless the
-   signal handler modifies the `struct sigcontext' we can safely
-   ignore this.  */
-
-int
-sparc_sol2_pc_in_sigtramp (CORE_ADDR pc, const char *name)
-{
-  return (name && (strcmp (name, "sigacthandler") == 0
-		   || strcmp (name, "ucbsigvechandler") == 0
-		   || strcmp (name, "__sighndlr") == 0));
-}
-
 static struct sparc_frame_cache *
 sparc32_sol2_sigtramp_frame_cache (struct frame_info *this_frame,
 				   void **this_cache)
@@ -201,14 +177,7 @@ sparc32_sol2_sigtramp_frame_sniffer (con
 				     struct frame_info *this_frame,
 				     void **this_cache)
 {
-  CORE_ADDR pc = get_frame_pc (this_frame);
-  const char *name;
-
-  find_pc_partial_function (pc, &name, NULL, NULL);
-  if (sparc_sol2_pc_in_sigtramp (pc, name))
-    return 1;
-
-  return 0;
+  return sol2_sigtramp_p (this_frame);
 }
 
 static const struct frame_unwind sparc32_sol2_sigtramp_frame_unwind =
@@ -221,39 +190,9 @@ static const struct frame_unwind sparc32
   sparc32_sol2_sigtramp_frame_sniffer
 };
 
-/* Unglobalize NAME.  */
-
-const char *
-sparc_sol2_static_transform_name (const char *name)
-{
-  /* The Sun compilers (Sun ONE Studio, Forte Developer, Sun WorkShop,
-     SunPRO) convert file static variables into global values, a
-     process known as globalization.  In order to do this, the
-     compiler will create a unique prefix and prepend it to each file
-     static variable.  For static variables within a function, this
-     globalization prefix is followed by the function name (nested
-     static variables within a function are supposed to generate a
-     warning message, and are left alone).  The procedure is
-     documented in the Stabs Interface Manual, which is distributed
-     with the compilers, although version 4.0 of the manual seems to
-     be incorrect in some places, at least for SPARC.  The
-     globalization prefix is encoded into an N_OPT stab, with the form
-     "G=<prefix>".  The globalization prefix always seems to start
-     with a dollar sign '$'; a dot '.' is used as a separator.  So we
-     simply strip everything up until the last dot.  */
-
-  if (name[0] == '$')
-    {
-      const char *p = strrchr (name, '.');
-      if (p)
-        return p + 1;
-    }
-
-  return name;
-}
 
 
-void
+static void
 sparc32_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
@@ -264,19 +203,10 @@ sparc32_sol2_init_abi (struct gdbarch_in
   tdep->fpregset = &sparc32_sol2_fpregset;
   tdep->sizeof_fpregset = 400;
 
-  /* The Sun compilers (Sun ONE Studio, Forte Developer, Sun WorkShop, SunPRO)
-     compiler puts out 0 instead of the address in N_SO stabs.  Starting with
-     SunPRO 3.0, the compiler does this for N_FUN stabs too.  */
-  set_gdbarch_sofun_address_maybe_missing (gdbarch, 1);
-
-  /* The Sun compilers also do "globalization"; see the comment in
-     sparc_sol2_static_transform_name for more information.  */
-  set_gdbarch_static_transform_name
-    (gdbarch, sparc_sol2_static_transform_name);
+  sol2_init_abi (info, gdbarch);
 
   /* Solaris has SVR4-style shared libraries...  */
   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
-  set_gdbarch_skip_solib_resolver (gdbarch, sol2_skip_solib_resolver);
   set_solib_svr4_fetch_link_map_offsets
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
 
@@ -288,13 +218,11 @@ sparc32_sol2_init_abi (struct gdbarch_in
   set_gdbarch_software_single_step (gdbarch, NULL);
 
   frame_unwind_append_unwinder (gdbarch, &sparc32_sol2_sigtramp_frame_unwind);
-
-  /* How to print LWP PTIDs from core files.  */
-  set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str);
 }
 
+void _initialize_sparc_sol2_tdep ();
 void
-_initialize_sparc_sol2_tdep (void)
+_initialize_sparc_sol2_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_sparc, 0,
 			  GDB_OSABI_SOLARIS, sparc32_sol2_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-tdep.c ./gdb/sparc-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-tdep.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-tdep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for SPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,7 @@
 #include "arch-utils.h"
 #include "dis-asm.h"
 #include "dwarf2.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
@@ -214,7 +214,7 @@ sparc_integral_or_pointer_p (const struc
 {
   int len = TYPE_LENGTH (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_INT:
     case TYPE_CODE_BOOL:
@@ -242,7 +242,7 @@ sparc_integral_or_pointer_p (const struc
 static int
 sparc_floating_p (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_FLT:
       {
@@ -261,7 +261,7 @@ sparc_floating_p (const struct type *typ
 static int
 sparc_complex_floating_p (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_COMPLEX:
       {
@@ -284,7 +284,7 @@ sparc_complex_floating_p (const struct t
 static int
 sparc_structure_or_union_p (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
@@ -303,7 +303,7 @@ sparc_structure_or_union_p (const struct
 static bool
 sparc_structure_return_p (const struct type *type)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
+  if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
     {
       /* Float vectors are always returned by memory.  */
       if (sparc_floating_p (check_typedef (TYPE_TARGET_TYPE (type))))
@@ -331,7 +331,7 @@ sparc_structure_return_p (const struct t
 static bool
 sparc_arg_by_memory_p (const struct type *type)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
+  if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
     {
       /* Float vectors are always passed by memory.  */
       if (sparc_floating_p (check_typedef (TYPE_TARGET_TYPE (type))))
@@ -1228,7 +1228,7 @@ static int
 sparc32_struct_return_from_sym (struct symbol *sym)
 {
   struct type *type = check_typedef (SYMBOL_TYPE (sym));
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
 
   if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
     {
@@ -1402,7 +1402,7 @@ sparc32_extract_return_value (struct typ
   gdb_assert (!sparc_structure_return_p (type));
 
   if (sparc_floating_p (type) || sparc_complex_floating_p (type)
-      || TYPE_CODE (type) == TYPE_CODE_ARRAY)
+      || type->code () == TYPE_CODE_ARRAY)
     {
       /* Floating return values.  */
       regcache->cooked_read (SPARC_F0_REGNUM, buf);
@@ -1944,6 +1944,9 @@ sparc_supply_rwindow (struct regcache *r
   gdb_byte buf[8];
   int i;
 
+  /* This function calls functions that depend on the global current thread.  */
+  gdb_assert (regcache->ptid () == inferior_ptid);
+
   if (sp & 1)
     {
       /* Registers are 64-bit.  */
@@ -2018,6 +2021,9 @@ sparc_collect_rwindow (const struct regc
   gdb_byte buf[8];
   int i;
 
+  /* This function calls functions that depend on the global current thread.  */
+  gdb_assert (regcache->ptid () == inferior_ptid);
+
   if (sp & 1)
     {
       /* Registers are 64-bit.  */
@@ -2258,8 +2264,9 @@ const struct sparc_fpregmap sparc32_bsd_
   32 * 4,			/* %fsr */
 };
 
+void _initialize_sparc_tdep ();
 void
-_initialize_sparc_tdep (void)
+_initialize_sparc_tdep ()
 {
   register_gdbarch_init (bfd_arch_sparc, sparc32_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-tdep.h ./gdb/sparc-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/sparc-tdep.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/sparc-tdep.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for SPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -245,13 +245,6 @@ extern int sparc_is_annulled_branch_insn
 extern const struct sparc_gregmap sparc32_sol2_gregmap;
 extern const struct sparc_fpregmap sparc32_sol2_fpregmap;
 
-extern int sparc_sol2_pc_in_sigtramp (CORE_ADDR pc, const char *name);
-
-extern const char *sparc_sol2_static_transform_name (const char *name);
-
-extern void sparc32_sol2_init_abi (struct gdbarch_info info,
-				   struct gdbarch *gdbarch);
-
 /* Functions and variables exported from sparcnbsd-tdep.c.  */
 
 /* Register offsets for NetBSD.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stabsread.c ./gdb/stabsread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stabsread.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/stabsread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Support routines for decoding "stabs" debugging information format.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -369,7 +369,7 @@ dbx_alloc_type (int typenums[2], struct
 static struct type *
 dbx_init_float_type (struct objfile *objfile, int bits)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   const struct floatformat **format;
   struct type *type;
 
@@ -423,7 +423,7 @@ patch_block_stabs (struct pending *symbo
 	      /* On xcoff, if a global is defined and never referenced,
 	         ld will remove it from the executable.  There is then
 	         a N_GSYM stab for it, but no regular (C_EXT) symbol.  */
-	      sym = allocate_symbol (objfile);
+	      sym = new (&objfile->objfile_obstack) symbol;
 	      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
 	      SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
 	      sym->set_linkage_name
@@ -649,7 +649,7 @@ struct symbol *
 define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
 	       struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   struct symbol *sym;
   const char *p = find_name_end (string);
   int deftype;
@@ -687,7 +687,7 @@ define_symbol (CORE_ADDR valu, const cha
      e.g. ":t10=*2" or a nameless enum like " :T16=ered:0,green:1,blue:2,;" */
   nameless = (p == string || ((string[0] == ' ') && (string[1] == ':')));
 
-  current_symbol = sym = allocate_symbol (objfile);
+  current_symbol = sym = new (&objfile->objfile_obstack) symbol;
 
   if (processing_gcc_compilation)
     {
@@ -700,8 +700,8 @@ define_symbol (CORE_ADDR valu, const cha
       SYMBOL_LINE (sym) = 0;	/* unknown */
     }
 
-  SYMBOL_SET_LANGUAGE (sym, get_current_subfile ()->language,
-		       &objfile->objfile_obstack);
+  sym->set_language (get_current_subfile ()->language,
+		     &objfile->objfile_obstack);
 
   if (is_cplus_marker (string[0]))
     {
@@ -723,12 +723,6 @@ define_symbol (CORE_ADDR valu, const cha
 	  /* This was an anonymous type that was never fixed up.  */
 	  goto normal;
 
-	case 'X':
-	  /* SunPRO (3.0 at least) static variable encoding.  */
-	  if (gdbarch_static_transform_name_p (gdbarch))
-	    goto normal;
-	  /* fall through */
-
 	default:
 	  complaint (_("Unknown C++ symbol name `%s'"),
 		     string);
@@ -738,9 +732,9 @@ define_symbol (CORE_ADDR valu, const cha
   else
     {
     normal:
-      std::string new_name;
+      gdb::unique_xmalloc_ptr<char> new_name;
 
-      if (SYMBOL_LANGUAGE (sym) == language_cplus)
+      if (sym->language () == language_cplus)
 	{
 	  char *name = (char *) alloca (p - string + 1);
 
@@ -748,17 +742,13 @@ define_symbol (CORE_ADDR valu, const cha
 	  name[p - string] = '\0';
 	  new_name = cp_canonicalize_string (name);
 	}
-      if (!new_name.empty ())
-	{
-	  SYMBOL_SET_NAMES (sym,
-			    new_name,
-			    1, objfile);
-	}
+      if (new_name != nullptr)
+	sym->compute_and_set_names (new_name.get (), true, objfile->per_bfd);
       else
-	SYMBOL_SET_NAMES (sym, gdb::string_view (string, p - string), true,
-			  objfile);
+	sym->compute_and_set_names (gdb::string_view (string, p - string), true,
+				    objfile->per_bfd);
 
-      if (SYMBOL_LANGUAGE (sym) == language_cplus)
+      if (sym->language () == language_cplus)
 	cp_scan_for_anonymous_namespaces (get_buildsym_compunit (), sym,
 					  objfile);
 
@@ -959,7 +949,7 @@ define_symbol (CORE_ADDR valu, const cha
       /* Function result types are described as the result type in stabs.
          We need to convert this to the function-returning-type-X type
          in GDB.  E.g. "int" is converted to "function returning int".  */
-      if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_FUNC)
+      if (SYMBOL_TYPE (sym)->code () != TYPE_CODE_FUNC)
 	SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
 
       /* All functions in C++ have prototypes.  Stabs does not offer an
@@ -990,8 +980,9 @@ define_symbol (CORE_ADDR valu, const cha
 	    }
 
 	  /* Allocate parameter information fields and fill them in.  */
-	  TYPE_FIELDS (ftype) = (struct field *)
-	    TYPE_ALLOC (ftype, nsemi * sizeof (struct field));
+	  ftype->set_fields
+	    ((struct field *)
+	     TYPE_ALLOC (ftype, nsemi * sizeof (struct field)));
 	  while (*p++ == ';')
 	    {
 	      struct type *ptype;
@@ -1008,12 +999,12 @@ define_symbol (CORE_ADDR valu, const cha
 	         a TYPE_CODE_VOID type by read_type, and we have to turn
 	         it back into builtin_int here.
 	         FIXME: Do we need a new builtin_promoted_int_arg ?  */
-	      if (TYPE_CODE (ptype) == TYPE_CODE_VOID)
+	      if (ptype->code () == TYPE_CODE_VOID)
 		ptype = objfile_type (objfile)->builtin_int;
-	      TYPE_FIELD_TYPE (ftype, nparams) = ptype;
+	      ftype->field (nparams).set_type (ptype);
 	      TYPE_FIELD_ARTIFICIAL (ftype, nparams++) = 0;
 	    }
-	  TYPE_NFIELDS (ftype) = nparams;
+	  ftype->set_num_fields (nparams);
 	  TYPE_PROTOTYPED (ftype) = 1;
 	}
       break;
@@ -1097,7 +1088,7 @@ define_symbol (CORE_ADDR valu, const cha
 	     really an int.  */
 	  if (TYPE_LENGTH (SYMBOL_TYPE (sym))
 	      < gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT
-	      && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT)
+	      && SYMBOL_TYPE (sym)->code () == TYPE_CODE_INT)
 	    {
 	      SYMBOL_TYPE (sym) =
 		TYPE_UNSIGNED (SYMBOL_TYPE (sym))
@@ -1189,23 +1180,6 @@ define_symbol (CORE_ADDR valu, const cha
       SYMBOL_TYPE (sym) = read_type (&p, objfile);
       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
       SET_SYMBOL_VALUE_ADDRESS (sym, valu);
-      if (gdbarch_static_transform_name_p (gdbarch)
-	  && gdbarch_static_transform_name (gdbarch, sym->linkage_name ())
-	     != sym->linkage_name ())
-	{
-	  struct bound_minimal_symbol msym;
-
-	  msym = lookup_minimal_symbol (sym->linkage_name (), NULL, objfile);
-	  if (msym.minsym != NULL)
-	    {
-	      const char *new_name = gdbarch_static_transform_name
-		(gdbarch, sym->linkage_name ());
-
-	      sym->set_linkage_name (new_name);
-	      SET_SYMBOL_VALUE_ADDRESS (sym,
-					BMSYMBOL_VALUE_ADDRESS (msym));
-	    }
-	}
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
       add_symbol_to_list (sym, get_file_symbols ());
       break;
@@ -1225,7 +1199,7 @@ define_symbol (CORE_ADDR valu, const cha
          This is important to do, because of forward references:
          The cleanup of undefined types stored in undef_types only uses
          STRUCT_DOMAIN symbols to perform the replacement.  */
-      synonym = (SYMBOL_LANGUAGE (sym) == language_ada && p[-2] != 'T');
+      synonym = (sym->language () == language_ada && p[-2] != 'T');
 
       /* Typedef */
       SYMBOL_TYPE (sym) = read_type (&p, objfile);
@@ -1242,9 +1216,9 @@ define_symbol (CORE_ADDR valu, const cha
          a base type which did not have its name defined when the
          derived class was output.  We fill in the derived class's
          base part member's name here in that case.  */
-      if (TYPE_NAME (SYMBOL_TYPE (sym)) != NULL)
-	if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
-	     || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)
+      if (SYMBOL_TYPE (sym)->name () != NULL)
+	if ((SYMBOL_TYPE (sym)->code () == TYPE_CODE_STRUCT
+	     || SYMBOL_TYPE (sym)->code () == TYPE_CODE_UNION)
 	    && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)))
 	  {
 	    int j;
@@ -1252,14 +1226,14 @@ define_symbol (CORE_ADDR valu, const cha
 	    for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--)
 	      if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0)
 		TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) =
-		  TYPE_NAME (TYPE_BASECLASS (SYMBOL_TYPE (sym), j));
+		  TYPE_BASECLASS (SYMBOL_TYPE (sym), j)->name ();
 	  }
 
-      if (TYPE_NAME (SYMBOL_TYPE (sym)) == NULL)
+      if (SYMBOL_TYPE (sym)->name () == NULL)
 	{
-	  if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR
+	  if ((SYMBOL_TYPE (sym)->code () == TYPE_CODE_PTR
 	       && strcmp (sym->linkage_name (), vtbl_ptr_name))
-	      || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_FUNC)
+	      || SYMBOL_TYPE (sym)->code () == TYPE_CODE_FUNC)
 	    {
 	      /* If we are giving a name to a type such as "pointer to
 	         foo" or "function returning foo", we better not set
@@ -1298,12 +1272,10 @@ define_symbol (CORE_ADDR valu, const cha
 
 	      /* Pascal accepts names for pointer types.  */
 	      if (get_current_subfile ()->language == language_pascal)
-		{
-		  TYPE_NAME (SYMBOL_TYPE (sym)) = sym->linkage_name ();
-          	}
+		SYMBOL_TYPE (sym)->set_name (sym->linkage_name ());
 	    }
 	  else
-	    TYPE_NAME (SYMBOL_TYPE (sym)) = sym->linkage_name ();
+	    SYMBOL_TYPE (sym)->set_name (sym->linkage_name ());
 	}
 
       add_symbol_to_list (sym, get_file_symbols ());
@@ -1311,19 +1283,19 @@ define_symbol (CORE_ADDR valu, const cha
       if (synonym)
         {
           /* Create the STRUCT_DOMAIN clone.  */
-          struct symbol *struct_sym = allocate_symbol (objfile);
+          struct symbol *struct_sym = new (&objfile->objfile_obstack) symbol;
 
           *struct_sym = *sym;
           SYMBOL_ACLASS_INDEX (struct_sym) = LOC_TYPEDEF;
           SYMBOL_VALUE (struct_sym) = valu;
           SYMBOL_DOMAIN (struct_sym) = STRUCT_DOMAIN;
-          if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-            TYPE_NAME (SYMBOL_TYPE (sym))
-	      = obconcat (&objfile->objfile_obstack, sym->linkage_name (),
-			  (char *) NULL);
+          if (SYMBOL_TYPE (sym)->name () == 0)
+	    SYMBOL_TYPE (sym)->set_name
+	      (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
+			 (char *) NULL));
           add_symbol_to_list (struct_sym, get_file_symbols ());
         }
-      
+
       break;
 
     case 'T':
@@ -1344,25 +1316,25 @@ define_symbol (CORE_ADDR valu, const cha
       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
       SYMBOL_VALUE (sym) = valu;
       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
-      if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-	TYPE_NAME (SYMBOL_TYPE (sym))
-	  = obconcat (&objfile->objfile_obstack, sym->linkage_name (),
-		      (char *) NULL);
+      if (SYMBOL_TYPE (sym)->name () == 0)
+	SYMBOL_TYPE (sym)->set_name
+	  (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
+		     (char *) NULL));
       add_symbol_to_list (sym, get_file_symbols ());
 
       if (synonym)
 	{
 	  /* Clone the sym and then modify it.  */
-	  struct symbol *typedef_sym = allocate_symbol (objfile);
+	  struct symbol *typedef_sym = new (&objfile->objfile_obstack) symbol;
 
 	  *typedef_sym = *sym;
 	  SYMBOL_ACLASS_INDEX (typedef_sym) = LOC_TYPEDEF;
 	  SYMBOL_VALUE (typedef_sym) = valu;
 	  SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN;
-	  if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
-	    TYPE_NAME (SYMBOL_TYPE (sym))
-	      = obconcat (&objfile->objfile_obstack, sym->linkage_name (),
-			  (char *) NULL);
+	  if (SYMBOL_TYPE (sym)->name () == 0)
+	    SYMBOL_TYPE (sym)->set_name
+	      (obconcat (&objfile->objfile_obstack, sym->linkage_name (),
+			 (char *) NULL));
 	  add_symbol_to_list (typedef_sym, get_file_symbols ());
 	}
       break;
@@ -1372,24 +1344,8 @@ define_symbol (CORE_ADDR valu, const cha
       SYMBOL_TYPE (sym) = read_type (&p, objfile);
       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
       SET_SYMBOL_VALUE_ADDRESS (sym, valu);
-      if (gdbarch_static_transform_name_p (gdbarch)
-	  && gdbarch_static_transform_name (gdbarch, sym->linkage_name ())
-	     != sym->linkage_name ())
-	{
-	  struct bound_minimal_symbol msym;
-
-	  msym = lookup_minimal_symbol (sym->linkage_name (), NULL, objfile);
-	  if (msym.minsym != NULL)
-	    {
-	      const char *new_name = gdbarch_static_transform_name
-		(gdbarch, sym->linkage_name ());
-
-	      sym->set_linkage_name (new_name);
-	      SET_SYMBOL_VALUE_ADDRESS (sym, BMSYMBOL_VALUE_ADDRESS (msym));
-	    }
-	}
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-	add_symbol_to_list (sym, get_local_symbols ());
+      add_symbol_to_list (sym, get_local_symbols ());
       break;
 
     case 'v':
@@ -1552,7 +1508,7 @@ read_type (const char **pp, struct objfi
           /* If this is a forward reference, arrange to complain if it
              doesn't get patched up by the time we're done
              reading.  */
-          if (TYPE_CODE (type) == TYPE_CODE_UNDEF)
+          if (type->code () == TYPE_CODE_UNDEF)
             add_undefined_type (type, typenums);
 
           return type;
@@ -1641,10 +1597,10 @@ again:
 	      memcpy (name, *pp, p - *pp);
 	      name[p - *pp] = '\0';
 
-	      std::string new_name = cp_canonicalize_string (name);
-	      if (!new_name.empty ())
+	      gdb::unique_xmalloc_ptr<char> new_name = cp_canonicalize_string (name);
+	      if (new_name != nullptr)
 		type_name = obstack_strdup (&objfile->objfile_obstack,
-					    new_name);
+					    new_name.get ());
 	    }
 	  if (type_name == NULL)
 	    {
@@ -1674,7 +1630,7 @@ again:
 
 	      if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
 		  && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
-		  && (TYPE_CODE (SYMBOL_TYPE (sym)) == code)
+		  && (SYMBOL_TYPE (sym)->code () == code)
 		  && strcmp (sym->linkage_name (), type_name) == 0)
 		{
 		  obstack_free (&objfile->objfile_obstack, type_name);
@@ -1691,8 +1647,8 @@ again:
 	   fill in the rest of the fields when we get the full
 	   type.  */
 	type = dbx_alloc_type (typenums, objfile);
-	TYPE_CODE (type) = code;
-	TYPE_NAME (type) = type_name;
+	type->set_code (code);
+	type->set_name (type_name);
 	INIT_CPLUS_SPECIFIC (type);
 	TYPE_STUB (type) = 1;
 
@@ -1720,14 +1676,14 @@ again:
       /* Allocate and enter the typedef type first.
          This handles recursive types.  */
       type = dbx_alloc_type (typenums, objfile);
-      TYPE_CODE (type) = TYPE_CODE_TYPEDEF;
+      type->set_code (TYPE_CODE_TYPEDEF);
       {
 	struct type *xtype = read_type (pp, objfile);
 
 	if (type == xtype)
 	  {
 	    /* It's being defined as itself.  That means it is "void".  */
-	    TYPE_CODE (type) = TYPE_CODE_VOID;
+	    type->set_code (TYPE_CODE_VOID);
 	    TYPE_LENGTH (type) = 1;
 	  }
 	else if (type_size >= 0 || is_string)
@@ -1756,7 +1712,7 @@ again:
                "complete_this_type" function, but never create unnecessary
                copies of a type otherwise.  */
 	    replace_type (type, xtype);
-	    TYPE_NAME (type) = NULL;
+	    type->set_name (NULL);
 	  }
 	else
 	  {
@@ -1839,13 +1795,13 @@ again:
            that's just an empty argument list.  */
         if (arg_types
             && ! arg_types->next
-            && TYPE_CODE (arg_types->type) == TYPE_CODE_VOID)
+            && arg_types->type->code () == TYPE_CODE_VOID)
           num_args = 0;
 
-        TYPE_FIELDS (func_type)
-          = (struct field *) TYPE_ALLOC (func_type,
-                                         num_args * sizeof (struct field));
-        memset (TYPE_FIELDS (func_type), 0, num_args * sizeof (struct field));
+	func_type->set_fields
+	  ((struct field *) TYPE_ALLOC (func_type,
+					num_args * sizeof (struct field)));
+        memset (func_type->fields (), 0, num_args * sizeof (struct field));
         {
           int i;
           struct type_list *t;
@@ -1854,9 +1810,9 @@ again:
              when we read it, so the list is reversed.  Build the
              fields array right-to-left.  */
           for (t = arg_types, i = num_args - 1; t; t = t->next, i--)
-            TYPE_FIELD_TYPE (func_type, i) = t->type;
+            func_type->field (i).set_type (t->type);
         }
-        TYPE_NFIELDS (func_type) = num_args;
+        func_type->set_num_fields (num_args);
         TYPE_PROTOTYPED (func_type) = 1;
 
         type = func_type;
@@ -2026,7 +1982,7 @@ again:
       type = dbx_alloc_type (typenums, objfile);
       type = read_array_type (pp, type, objfile);
       if (is_string)
-	TYPE_CODE (type) = TYPE_CODE_STRING;
+	type->set_code (TYPE_CODE_STRING);
       if (is_vector)
 	make_vector_type (type);
       break;
@@ -2190,12 +2146,12 @@ rs6000_builtin_type (int typenum, struct
       break;
     case 25:
       /* Complex type consisting of two IEEE single precision values.  */
-      rettype = init_complex_type (objfile, "complex",
+      rettype = init_complex_type ("complex",
 				   rs6000_builtin_type (12, objfile));
       break;
     case 26:
       /* Complex type consisting of two IEEE double precision values.  */
-      rettype = init_complex_type (objfile, "double complex",
+      rettype = init_complex_type ("double complex",
 				   rs6000_builtin_type (13, objfile));
       break;
     case 27:
@@ -2373,10 +2329,10 @@ read_member_functions (struct stab_field
 	    }
 
 	  /* These are methods, not functions.  */
-	  if (TYPE_CODE (new_sublist->fn_field.type) == TYPE_CODE_FUNC)
-	    TYPE_CODE (new_sublist->fn_field.type) = TYPE_CODE_METHOD;
+	  if (new_sublist->fn_field.type->code () == TYPE_CODE_FUNC)
+	    new_sublist->fn_field.type->set_code (TYPE_CODE_METHOD);
 	  else
-	    gdb_assert (TYPE_CODE (new_sublist->fn_field.type)
+	    gdb_assert (new_sublist->fn_field.type->code ()
 			== TYPE_CODE_METHOD);
 
 	  /* If this is just a stub, then we don't have the real name here.  */
@@ -2754,7 +2710,7 @@ read_cpp_abbrev (struct stab_field_info
       switch (cpp_abbrev)
 	{
 	case 'f':		/* $vf -- a virtual function table pointer */
-	  name = TYPE_NAME (context);
+	  name = context->name ();
 	  if (name == NULL)
 	    {
 	      name = "";
@@ -2764,7 +2720,7 @@ read_cpp_abbrev (struct stab_field_info
 	  break;
 
 	case 'b':		/* $vb -- a virtual bsomethingorother */
-	  name = TYPE_NAME (context);
+	  name = context->name ();
 	  if (name == NULL)
 	    {
 	      complaint (_("C++ abbreviated type name "
@@ -2793,7 +2749,7 @@ read_cpp_abbrev (struct stab_field_info
 	  invalid_cpp_abbrev_complaint (*pp);
 	  return 0;
 	}
-      fip->list->field.type = read_type (pp, objfile);
+      fip->list->field.set_type (read_type (pp, objfile));
       if (**pp == ',')
 	(*pp)++;		/* Skip the comma.  */
       else
@@ -2827,7 +2783,7 @@ read_one_struct_field (struct stab_field
 		       const char *p, struct type *type,
 		       struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
 
   fip->list->field.name
     = obstack_strndup (&objfile->objfile_obstack, *pp, p - *pp);
@@ -2845,7 +2801,7 @@ read_one_struct_field (struct stab_field
       fip->list->visibility = VISIBILITY_PUBLIC;
     }
 
-  fip->list->field.type = read_type (pp, objfile);
+  fip->list->field.set_type (read_type (pp, objfile));
   if (**pp == ':')
     {
       p = ++(*pp);
@@ -2922,18 +2878,18 @@ read_one_struct_field (struct stab_field
          Note that forward refs cannot be packed,
          and treat enums as if they had the width of ints.  */
 
-      struct type *field_type = check_typedef (FIELD_TYPE (fip->list->field));
+      struct type *field_type = check_typedef (fip->list->field.type ());
 
-      if (TYPE_CODE (field_type) != TYPE_CODE_INT
-	  && TYPE_CODE (field_type) != TYPE_CODE_RANGE
-	  && TYPE_CODE (field_type) != TYPE_CODE_BOOL
-	  && TYPE_CODE (field_type) != TYPE_CODE_ENUM)
+      if (field_type->code () != TYPE_CODE_INT
+	  && field_type->code () != TYPE_CODE_RANGE
+	  && field_type->code () != TYPE_CODE_BOOL
+	  && field_type->code () != TYPE_CODE_ENUM)
 	{
 	  FIELD_BITSIZE (fip->list->field) = 0;
 	}
       if ((FIELD_BITSIZE (fip->list->field)
 	   == TARGET_CHAR_BIT * TYPE_LENGTH (field_type)
-	   || (TYPE_CODE (field_type) == TYPE_CODE_ENUM
+	   || (field_type->code () == TYPE_CODE_ENUM
 	       && FIELD_BITSIZE (fip->list->field)
 		  == gdbarch_int_bit (gdbarch))
 	  )
@@ -3166,8 +3122,8 @@ read_baseclasses (struct stab_field_info
          base class.  Read it, and remember it's type name as this
          field's name.  */
 
-      newobj->field.type = read_type (pp, objfile);
-      newobj->field.name = TYPE_NAME (newobj->field.type);
+      newobj->field.set_type (read_type (pp, objfile));
+      newobj->field.name = newobj->field.type ()->name ();
 
       /* Skip trailing ';' and bump count of number of fields seen.  */
       if (**pp == ';')
@@ -3238,7 +3194,7 @@ read_tilde_fields (struct stab_field_inf
 	  set_type_vptr_basetype (type, t);
 	  if (type == t)	/* Our own class provides vtbl ptr.  */
 	    {
-	      for (i = TYPE_NFIELDS (t) - 1;
+	      for (i = t->num_fields () - 1;
 		   i >= TYPE_N_BASECLASSES (t);
 		   --i)
 		{
@@ -3254,7 +3210,7 @@ read_tilde_fields (struct stab_field_inf
 	      /* Virtual function table field not found.  */
 	      complaint (_("virtual function table pointer "
 			   "not found when defining class `%s'"),
-			 TYPE_NAME (type));
+			 type->name ());
 	      return 0;
 	    }
 	  else
@@ -3314,10 +3270,11 @@ attach_fields_to_type (struct stab_field
      non-public fields.  Record the field count, allocate space for the
      array of fields, and create blank visibility bitfields if necessary.  */
 
-  TYPE_NFIELDS (type) = nfields;
-  TYPE_FIELDS (type) = (struct field *)
-    TYPE_ALLOC (type, sizeof (struct field) * nfields);
-  memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
+  type->set_num_fields (nfields);
+  type->set_fields
+    ((struct field *)
+     TYPE_ALLOC (type, sizeof (struct field) * nfields));
+  memset (type->fields (), 0, sizeof (struct field) * nfields);
 
   if (non_public_fields)
     {
@@ -3343,7 +3300,7 @@ attach_fields_to_type (struct stab_field
 
   while (nfields-- > 0)
     {
-      TYPE_FIELD (type, nfields) = fip->list->field;
+      type->field (nfields) = fip->list->field;
       switch (fip->list->visibility)
 	{
 	case VISIBILITY_PRIVATE:
@@ -3383,10 +3340,10 @@ complain_about_struct_wipeout (struct ty
   const char *name = "";
   const char *kind = "";
 
-  if (TYPE_NAME (type))
+  if (type->name ())
     {
-      name = TYPE_NAME (type);
-      switch (TYPE_CODE (type))
+      name = type->name ();
+      switch (type->code ())
         {
         case TYPE_CODE_STRUCT: kind = "struct "; break;
         case TYPE_CODE_UNION:  kind = "union ";  break;
@@ -3471,7 +3428,7 @@ read_struct_type (const char **pp, struc
      Obviously, GDB can't fix this by itself, but it can at least avoid
      scribbling on existing structure type objects when new definitions
      appear.  */
-  if (! (TYPE_CODE (type) == TYPE_CODE_UNDEF
+  if (! (type->code () == TYPE_CODE_UNDEF
          || TYPE_STUB (type)))
     {
       complain_about_struct_wipeout (type);
@@ -3481,7 +3438,7 @@ read_struct_type (const char **pp, struc
     }
 
   INIT_CPLUS_SPECIFIC (type);
-  TYPE_CODE (type) = type_code;
+  type->set_code (type_code);
   TYPE_STUB (type) = 0;
 
   /* First comes the total size in bytes.  */
@@ -3585,7 +3542,7 @@ static struct type *
 read_enum_type (const char **pp, struct type *type,
 		struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   const char *p;
   char *name;
   long n;
@@ -3636,10 +3593,10 @@ read_enum_type (const char **pp, struct
       if (nbits != 0)
 	return error_type (pp, objfile);
 
-      sym = allocate_symbol (objfile);
+      sym = new (&objfile->objfile_obstack) symbol;
       sym->set_linkage_name (name);
-      SYMBOL_SET_LANGUAGE (sym, get_current_subfile ()->language,
-			   &objfile->objfile_obstack);
+      sym->set_language (get_current_subfile ()->language,
+			 &objfile->objfile_obstack);
       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
       SYMBOL_VALUE (sym) = n;
@@ -3656,14 +3613,15 @@ read_enum_type (const char **pp, struct
 
   TYPE_LENGTH (type) = gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT;
   set_length_in_type_chain (type);
-  TYPE_CODE (type) = TYPE_CODE_ENUM;
+  type->set_code (TYPE_CODE_ENUM);
   TYPE_STUB (type) = 0;
   if (unsigned_enum)
     TYPE_UNSIGNED (type) = 1;
-  TYPE_NFIELDS (type) = nsyms;
-  TYPE_FIELDS (type) = (struct field *)
-    TYPE_ALLOC (type, sizeof (struct field) * nsyms);
-  memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nsyms);
+  type->set_num_fields (nsyms);
+  type->set_fields
+    ((struct field *)
+     TYPE_ALLOC (type, sizeof (struct field) * nsyms));
+  memset (type->fields (), 0, sizeof (struct field) * nsyms);
 
   /* Find the symbols for the values and put them into the type.
      The symbols can be found in the symlist that we put them on
@@ -3684,7 +3642,7 @@ read_enum_type (const char **pp, struct
 
 	  SYMBOL_TYPE (xsym) = type;
 	  TYPE_FIELD_NAME (type, n) = xsym->linkage_name ();
-	  SET_FIELD_ENUMVAL (TYPE_FIELD (type, n), SYMBOL_VALUE (xsym));
+	  SET_FIELD_ENUMVAL (type->field (n), SYMBOL_VALUE (xsym));
 	  TYPE_FIELD_BITSIZE (type, n) = 0;
 	}
       if (syms == osyms)
@@ -3809,7 +3767,7 @@ read_sun_floating_type (const char **pp,
       || details == NF_COMPLEX32)
     {
       rettype = dbx_init_float_type (objfile, nbits / 2);
-      return init_complex_type (objfile, NULL, rettype);
+      return init_complex_type (NULL, rettype);
     }
 
   return dbx_init_float_type (objfile, nbits);
@@ -4001,7 +3959,7 @@ static struct type *
 read_range_type (const char **pp, int typenums[2], int type_size,
                  struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   const char *orig_pp = *pp;
   int rangenums[2];
   long n2, n3;
@@ -4103,7 +4061,7 @@ read_range_type (const char **pp, int ty
 	= dbx_init_float_type (objfile, n2 * TARGET_CHAR_BIT);
 
       if (self_subrange)
-	return init_complex_type (objfile, NULL, float_type);
+	return init_complex_type (NULL, float_type);
       else
 	return float_type;
     }
@@ -4235,7 +4193,7 @@ read_args (const char **pp, int end, str
       complaint (_("Invalid (empty) method arguments"));
       *varargsp = 0;
     }
-  else if (TYPE_CODE (types[n - 1]) != TYPE_CODE_VOID)
+  else if (types[n - 1]->code () != TYPE_CODE_VOID)
     *varargsp = 1;
   else
     {
@@ -4245,7 +4203,7 @@ read_args (const char **pp, int end, str
 
   rval = XCNEWVEC (struct field, n);
   for (i = 0; i < n; i++)
-    rval[i].type = types[i];
+    rval[i].set_type (types[i]);
   *nargsp = n;
   return rval;
 }
@@ -4303,7 +4261,7 @@ common_block_end (struct objfile *objfil
       return;
     }
 
-  sym = allocate_symbol (objfile);
+  sym = new (&objfile->objfile_obstack) symbol;
   /* Note: common_block_name already saved on objfile_obstack.  */
   sym->set_linkage_name (common_block_name);
   SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
@@ -4414,7 +4372,7 @@ add_undefined_type_1 (struct type *type)
 static void
 add_undefined_type (struct type *type, int typenums[2])
 {
-  if (TYPE_NAME (type) == NULL)
+  if (type->name () == NULL)
     add_undefined_type_noname (type, typenums);
   else
     add_undefined_type_1 (type);
@@ -4433,7 +4391,7 @@ cleanup_undefined_types_noname (struct o
       struct type **type;
 
       type = dbx_lookup_type (nat.typenums, objfile);
-      if (nat.type != *type && TYPE_CODE (*type) != TYPE_CODE_UNDEF)
+      if (nat.type != *type && (*type)->code () != TYPE_CODE_UNDEF)
         {
           /* The instance flags of the undefined type are still unset,
              and needs to be copied over from the reference type.
@@ -4483,7 +4441,7 @@ cleanup_undefined_types_1 (void)
 
   for (type = undef_types; type < undef_types + undef_types_length; type++)
     {
-      switch (TYPE_CODE (*type))
+      switch ((*type)->code ())
 	{
 
 	case TYPE_CODE_STRUCT:
@@ -4499,7 +4457,7 @@ cleanup_undefined_types_1 (void)
 		struct pending *ppt;
 		int i;
 		/* Name of the type, without "struct" or "union".  */
-		const char *type_name = TYPE_NAME (*type);
+		const char *type_name = (*type)->name ();
 
 		if (type_name == NULL)
 		  {
@@ -4514,8 +4472,8 @@ cleanup_undefined_types_1 (void)
 
 			if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
 			    && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
-			    && (TYPE_CODE (SYMBOL_TYPE (sym)) ==
-				TYPE_CODE (*type))
+			    && (SYMBOL_TYPE (sym)->code () ==
+				(*type)->code ())
 			    && (TYPE_INSTANCE_FLAGS (*type) ==
 				TYPE_INSTANCE_FLAGS (SYMBOL_TYPE (sym)))
 			    && strcmp (sym->linkage_name (), type_name) == 0)
@@ -4530,7 +4488,7 @@ cleanup_undefined_types_1 (void)
 	  {
 	    complaint (_("forward-referenced types left unresolved, "
                        "type code %d."),
-		       TYPE_CODE (*type));
+		       (*type)->code ());
 	  }
 	  break;
 	}
@@ -4783,8 +4741,9 @@ hashname (const char *name)
 
 /* Initializer for this module.  */
 
+void _initialize_stabsread ();
 void
-_initialize_stabsread (void)
+_initialize_stabsread ()
 {
   undef_types_allocated = 20;
   undef_types_length = 0;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stabsread.h ./gdb/stabsread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stabsread.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/stabsread.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Include file for stabs debugging format support functions.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -20,6 +20,7 @@
 #define STABSREAD_H
 
 struct objfile;
+struct legacy_psymtab;
 enum language;
 
 /* Definitions, prototypes, etc for stabs debugging format support
@@ -170,15 +171,15 @@ extern void finish_global_stabs (struct
 /* Functions exported by dbxread.c.  These are not in stabsread.c because
    they are only used by some stabs readers.  */
 
-extern struct partial_symtab *dbx_end_psymtab
-  (struct objfile *objfile, struct partial_symtab *pst,
+extern legacy_psymtab *dbx_end_psymtab
+  (struct objfile *objfile, legacy_psymtab *pst,
    const char **include_list, int num_includes,
    int capping_symbol_offset, CORE_ADDR capping_text,
-   struct partial_symtab **dependency_list, int number_dependencies,
+   legacy_psymtab **dependency_list, int number_dependencies,
    int textlow_not_set);
 
 extern void process_one_symbol (int, int, CORE_ADDR, const char *,
-				const struct section_offsets *,
+				const section_offsets &,
 				struct objfile *, enum language);
 
 extern void elfstab_build_psymtabs (struct objfile *objfile,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stack.c ./gdb/stack.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stack.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/stack.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Print and select stack frames for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -330,7 +330,7 @@ frame_show_address (struct frame_info *f
       return false;
     }
 
-  return get_frame_pc (frame) != sal.pc;
+  return get_frame_pc (frame) != sal.pc || !sal.is_stmt;
 }
 
 /* See frame.h.  */
@@ -428,7 +428,7 @@ print_frame_arg (const frame_print_optio
   annotate_arg_emitter arg_emitter;
   ui_out_emit_tuple tuple_emitter (uiout, NULL);
   fprintf_symbol_filtered (&stb, arg->sym->print_name (),
-			   SYMBOL_LANGUAGE (arg->sym), DMGL_PARAMS | DMGL_ANSI);
+			   arg->sym->language (), DMGL_PARAMS | DMGL_ANSI);
   if (arg->entry_kind == print_entry_values_compact)
     {
       /* It is OK to provide invalid MI-like stream as with
@@ -436,7 +436,7 @@ print_frame_arg (const frame_print_optio
       stb.puts ("=");
 
       fprintf_symbol_filtered (&stb, arg->sym->print_name (),
-			       SYMBOL_LANGUAGE (arg->sym),
+			       arg->sym->language (),
 			       DMGL_PARAMS | DMGL_ANSI);
     }
   if (arg->entry_kind == print_entry_values_only
@@ -474,7 +474,7 @@ print_frame_arg (const frame_print_optio
 	      /* Use the appropriate language to display our symbol, unless the
 		 user forced the language to a specific language.  */
 	      if (language_mode == language_mode_auto)
-		language = language_def (SYMBOL_LANGUAGE (arg->sym));
+		language = language_def (arg->sym->language ());
 	      else
 		language = current_language;
 
@@ -486,7 +486,7 @@ print_frame_arg (const frame_print_optio
 	      vp_opts.summary
 		= fp_opts.print_frame_arguments == print_frame_arguments_scalars;
 
-	      common_val_print (arg->val, &stb, 2, &vp_opts, language);
+	      common_val_print_checked (arg->val, &stb, 2, &vp_opts, language);
 	    }
 	  catch (const gdb_exception_error &except)
 	    {
@@ -744,6 +744,12 @@ print_frame_args (const frame_print_opti
     = (print_names
        && fp_opts.print_frame_arguments != print_frame_arguments_none);
 
+  /* Temporarily change the selected frame to the given FRAME.
+     This allows routines that rely on the selected frame instead
+     of being given a frame as parameter to use the correct frame.  */
+  scoped_restore_selected_frame restore_selected_frame;
+  select_frame (frame);
+
   if (func)
     {
       const struct block *b = SYMBOL_BLOCK_VALUE (func);
@@ -1126,10 +1132,25 @@ print_frame_info (const frame_print_opti
     {
       int mid_statement = ((print_what == SRC_LINE)
 			   && frame_show_address (frame, sal));
-      annotate_source_line (sal.symtab, sal.line, mid_statement,
-			    get_frame_pc (frame));
-
-      if (deprecated_print_frame_info_listing_hook)
+      if (annotation_level > 0
+	  && annotate_source_line (sal.symtab, sal.line, mid_statement,
+				   get_frame_pc (frame)))
+	{
+	  /* The call to ANNOTATE_SOURCE_LINE already printed the
+	     annotation for this source line, so we avoid the two cases
+	     below and do not print the actual source line.  The
+	     documentation for annotations makes it clear that the source
+	     line annotation is printed __instead__ of printing the source
+	     line, not as well as.
+
+	     However, if we fail to print the source line, which usually
+	     means either the source file is missing, or the requested
+	     line is out of range of the file, then we don't print the
+	     source annotation, and will pass through the "normal" print
+	     source line code below, the expectation is that this code
+	     will print an appropriate error.  */
+	}
+      else if (deprecated_print_frame_info_listing_hook)
 	deprecated_print_frame_info_listing_hook (sal.symtab, sal.line,
 						  sal.line + 1, 0);
       else
@@ -1261,7 +1282,7 @@ find_frame_funname (struct frame_info *f
     {
       const char *print_name = func->print_name ();
 
-      *funlang = SYMBOL_LANGUAGE (func);
+      *funlang = func->language ();
       if (funcp)
 	*funcp = func;
       if (*funlang == language_cplus)
@@ -1291,7 +1312,7 @@ find_frame_funname (struct frame_info *f
       if (msymbol.minsym != NULL)
 	{
 	  funname.reset (xstrdup (msymbol.minsym->print_name ()));
-	  *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
+	  *funlang = msymbol.minsym->language ();
 	}
     }
 
@@ -1495,7 +1516,7 @@ info_frame_command_core (struct frame_in
   if (func)
     {
       funname = func->print_name ();
-      funlang = SYMBOL_LANGUAGE (func);
+      funlang = func->language ();
       if (funlang == language_cplus)
 	{
 	  /* It seems appropriate to use print_name() here,
@@ -1517,7 +1538,7 @@ info_frame_command_core (struct frame_in
       if (msymbol.minsym != NULL)
 	{
 	  funname = msymbol.minsym->print_name ();
-	  funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
+	  funlang = msymbol.minsym->language ();
 	}
     }
   calling_frame_info = get_prev_frame (fi);
@@ -2237,6 +2258,7 @@ iterate_over_block_locals (const struct
     {
       switch (SYMBOL_CLASS (sym))
 	{
+	case LOC_CONST:
 	case LOC_LOCAL:
 	case LOC_REGISTER:
 	case LOC_STATIC:
@@ -2256,56 +2278,6 @@ iterate_over_block_locals (const struct
     }
 }
 
-
-/* Same, but print labels.  */
-
-#if 0
-/* Commented out, as the code using this function has also been
-   commented out.  FIXME:brobecker/2009-01-13: Find out why the code
-   was commented out in the first place.  The discussion introducing
-   this change (2007-12-04: Support lexical blocks and function bodies
-   that occupy non-contiguous address ranges) did not explain why
-   this change was made.  */
-static int
-print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
-			  int *have_default, struct ui_file *stream)
-{
-  struct block_iterator iter;
-  struct symbol *sym;
-  int values_printed = 0;
-
-  ALL_BLOCK_SYMBOLS (b, iter, sym)
-    {
-      if (strcmp (sym->linkage_name (), "default") == 0)
-	{
-	  if (*have_default)
-	    continue;
-	  *have_default = 1;
-	}
-      if (SYMBOL_CLASS (sym) == LOC_LABEL)
-	{
-	  struct symtab_and_line sal;
-	  struct value_print_options opts;
-
-	  sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
-	  values_printed = 1;
-	  fputs_filtered (sym->print_name (), stream);
-	  get_user_print_options (&opts);
-	  if (opts.addressprint)
-	    {
-	      fprintf_filtered (stream, " ");
-	      fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
-			      stream);
-	    }
-	  fprintf_filtered (stream, " in file %s, line %d\n",
-			    sal.symtab->filename, sal.line);
-	}
-    }
-
-  return values_printed;
-}
-#endif
-
 /* Iterate over all the local variables in block B, including all its
    superblocks, stopping when the top-level block is reached.  */
 
@@ -2818,7 +2790,7 @@ return_command (const char *retval_exp,
 	function = read_var_value (thisfun, NULL, thisframe);
 
       rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
-      if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
+      if (return_type->code () == TYPE_CODE_VOID)
 	/* If the return-type is "void", don't try to find the
            return-value's location.  However, do still evaluate the
            return expression so that, even when the expression result
@@ -3339,8 +3311,9 @@ static struct cmd_list_element *select_f
 /* Commands with a prefix of `info frame'.  */
 static struct cmd_list_element *info_frame_cmd_list = NULL;
 
+void _initialize_stack ();
 void
-_initialize_stack (void)
+_initialize_stack ()
 {
   struct cmd_list_element *cmd;
 
@@ -3372,7 +3345,6 @@ Select and print a stack frame.\n\
 With no argument, print the selected stack frame.  (See also \"info frame\").\n\
 A single numerical argument specifies the frame to select."),
                   &frame_cmd_list, "frame ", 1, &cmdlist);
-
   add_com_alias ("f", "frame", class_stack, 1);
 
 #define FRAME_APPLY_OPTION_HELP "\
@@ -3432,14 +3404,6 @@ shortcut for 'frame apply all -s [OPTION
 See \"help frame apply all\" for available options."));
   set_cmd_completer_handle_brkchars (cmd, frame_apply_all_cmd_completer);
 
-  add_prefix_cmd ("frame", class_stack,
-		  &frame_cmd.base_command, _("\
-Select and print a stack frame.\n\
-With no argument, print the selected stack frame.  (See also \"info frame\").\n\
-A single numerical argument specifies the frame to select."),
-		  &frame_cmd_list, "frame ", 1, &cmdlist);
-  add_com_alias ("f", "frame", class_stack, 1);
-
   add_cmd ("address", class_stack, &frame_cmd.address,
 	   _("\
 Select and print a stack frame by stack address.\n\
@@ -3542,7 +3506,7 @@ With a negative COUNT, print outermost -
 
   add_com_alias ("bt", "backtrace", class_stack, 0);
 
-  add_com_alias ("where", "backtrace", class_alias, 0);
+  add_com_alias ("where", "backtrace", class_stack, 0);
   add_info ("stack", backtrace_command,
 	    _("Backtrace of the stack, or innermost COUNT frames."));
   add_info_alias ("s", "stack", 1);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stack.h ./gdb/stack.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stack.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/stack.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Stack manipulation commands, for GDB the GNU Debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stap-probe.c ./gdb/stap-probe.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stap-probe.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/stap-probe.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* SystemTap probe support for GDB.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -1290,8 +1290,7 @@ stap_probe::parse_arguments (struct gdba
 static CORE_ADDR
 relocate_address (CORE_ADDR address, struct objfile *objfile)
 {
-  return address + ANOFFSET (objfile->section_offsets,
-			     SECT_OFF_DATA (objfile));
+  return address + objfile->data_section_offset ();
 }
 
 /* Implementation of the get_relocated_address method.  */
@@ -1431,9 +1430,6 @@ stap_modify_semaphore (CORE_ADDR address
   struct type *type = builtin_type (gdbarch)->builtin_unsigned_short;
   ULONGEST value;
 
-  if (address == 0)
-    return;
-
   /* Swallow errors.  */
   if (target_read_memory (address, bytes, TYPE_LENGTH (type)) != 0)
     {
@@ -1467,6 +1463,8 @@ stap_modify_semaphore (CORE_ADDR address
 void
 stap_probe::set_semaphore (struct objfile *objfile, struct gdbarch *gdbarch)
 {
+  if (m_sem_addr == 0)
+    return;
   stap_modify_semaphore (relocate_address (m_sem_addr, objfile), 1, gdbarch);
 }
 
@@ -1475,6 +1473,8 @@ stap_probe::set_semaphore (struct objfil
 void
 stap_probe::clear_semaphore (struct objfile *objfile, struct gdbarch *gdbarch)
 {
+  if (m_sem_addr == 0)
+    return;
   stap_modify_semaphore (relocate_address (m_sem_addr, objfile), 0, gdbarch);
 }
 
@@ -1517,7 +1517,7 @@ handle_stap_probe (struct objfile *objfi
 {
   bfd *abfd = objfile->obfd;
   int size = bfd_get_arch_size (abfd) / 8;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
 
   /* Provider and the name of the probe.  */
@@ -1606,7 +1606,7 @@ get_stap_base_address (bfd *obfd, bfd_vm
     {
       complaint (_("could not obtain base address for "
 					"SystemTap section on objfile `%s'."),
-		 obfd->filename);
+		 bfd_get_filename (obfd));
       return 0;
     }
 
@@ -1709,8 +1709,9 @@ info_probes_stap_command (const char *ar
   info_probes_for_spops (arg, from_tty, &stap_static_probe_ops);
 }
 
+void _initialize_stap_probe ();
 void
-_initialize_stap_probe (void)
+_initialize_stap_probe ()
 {
   all_static_probe_ops.push_back (&stap_static_probe_ops);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stap-probe.h ./gdb/stap-probe.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stap-probe.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/stap-probe.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* SystemTap probe support for GDB.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/std-operator.def ./gdb/std-operator.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/std-operator.def	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/std-operator.def	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Standard language operator definitions for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/std-regs.c ./gdb/std-regs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/std-regs.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/std-regs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Builtin frame register, for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 
@@ -91,8 +91,9 @@ value_of_builtin_frame_ps_reg (struct fr
   error (_("Standard register ``$ps'' is not available for this target"));
 }
 
+void _initialize_frame_reg ();
 void
-_initialize_frame_reg (void)
+_initialize_frame_reg ()
 {
   /* Frame based $fp, $pc, $sp and $ps.  These only come into play
      when the target does not define its own version of these
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stubs/buildvms.com ./gdb/stubs/buildvms.com
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stubs/buildvms.com	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/stubs/buildvms.com	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 $! Command to build the gdb stub
 
-$! Copyright (C) 2012-2020 Free Software Foundation, Inc.
+$! Copyright (C) 2012-2021 Free Software Foundation, Inc.
 $!
 $! This file is part of GDB.
 $!
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stubs/ChangeLog ./gdb/stubs/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stubs/ChangeLog	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/stubs/ChangeLog	2021-05-21 01:57:24.000000000 +0000
@@ -1,3 +1,7 @@
+2020-04-28  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* ia64vms-stub.c: Fix typo in comment (thead -> thread).
+
 2019-10-26  Tom de Vries  <tdevries@suse.de>
 
 	* ia64vms-stub.c: Fix typos in comments.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stubs/ia64vms-stub.c ./gdb/stubs/ia64vms-stub.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stubs/ia64vms-stub.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/stubs/ia64vms-stub.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* GDB stub for Itanium OpenVMS
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    Contributed by Tristan Gingold, AdaCore.
 
@@ -776,7 +776,7 @@ set_thread_scheduling (int val)
   return blk.dbgext$l_stop_value;
 }
 
-/* Get next thead (after THR).  Start with 0.  */
+/* Get next thread (after THR).  Start with 0.  */
 
 static unsigned int
 thread_next (unsigned int thr)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stub-termcap.c ./gdb/stub-termcap.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/stub-termcap.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/stub-termcap.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* A very minimal do-nothing termcap emulation stub.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
    Contributed by CodeSourcery, LLC.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symfile-add-flags.h ./gdb/symfile-add-flags.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symfile-add-flags.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/symfile-add-flags.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definition of symfile add flags.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -44,6 +44,12 @@ enum symfile_add_flag : unsigned
 
     /* The new objfile should be marked OBJF_NOT_FILENAME.  */
     SYMFILE_NOT_FILENAME = 1 << 5,
+
+    /* If SYMFILE_VERBOSE (interpreted as from_tty) and SYMFILE_ALWAYS_CONFIRM,
+       always ask user to confirm loading the symbol file.
+       Without this flag, symbol_file_add_with_addrs asks a confirmation only
+       for a main symbol file replacing a file having symbols.  */
+    SYMFILE_ALWAYS_CONFIRM = 1 << 6,
  };
 
 DEF_ENUM_FLAGS_TYPE (enum symfile_add_flag, symfile_add_flags);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symfile.c ./gdb/symfile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symfile.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/symfile.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Generic symbol file reading for the GNU debugger, GDB.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
@@ -269,7 +269,7 @@ build_section_addr_info_from_objfile (co
     {
       int sectindex = sap[i].sectindex;
 
-      sap[i].addr += objfile->section_offsets->offsets[sectindex];
+      sap[i].addr += objfile->section_offsets[sectindex];
     }
   return sap;
 }
@@ -315,14 +315,14 @@ init_objfile_sect_indices (struct objfil
      later, e.g. by the remote qOffsets packet, and then this will
      be wrong!  That's why we try segments first.  */
 
-  for (i = 0; i < objfile->num_sections; i++)
+  for (i = 0; i < objfile->section_offsets.size (); i++)
     {
-      if (ANOFFSET (objfile->section_offsets, i) != 0)
+      if (objfile->section_offsets[i] != 0)
 	{
 	  break;
 	}
     }
-  if (i == objfile->num_sections)
+  if (i == objfile->section_offsets.size ())
     {
       if (objfile->sect_index_text == -1)
 	objfile->sect_index_text = 0;
@@ -339,7 +339,7 @@ init_objfile_sect_indices (struct objfil
 
 struct place_section_arg
 {
-  struct section_offsets *offsets;
+  section_offsets *offsets;
   CORE_ADDR lowest;
 };
 
@@ -350,7 +350,8 @@ static void
 place_section (bfd *abfd, asection *sect, void *obj)
 {
   struct place_section_arg *arg = (struct place_section_arg *) obj;
-  CORE_ADDR *offsets = arg->offsets->offsets, start_addr;
+  section_offsets &offsets = *arg->offsets;
+  CORE_ADDR start_addr;
   int done;
   ULONGEST align = ((ULONGEST) 1) << bfd_section_alignment (sect);
 
@@ -408,17 +409,15 @@ place_section (bfd *abfd, asection *sect
 }
 
 /* Store section_addr_info as prepared (made relative and with SECTINDEX
-   filled-in) by addr_info_make_relative into SECTION_OFFSETS of NUM_SECTIONS
-   entries.  */
+   filled-in) by addr_info_make_relative into SECTION_OFFSETS.  */
 
 void
-relative_addr_info_to_section_offsets (struct section_offsets *section_offsets,
-				       int num_sections,
+relative_addr_info_to_section_offsets (section_offsets &section_offsets,
 				       const section_addr_info &addrs)
 {
   int i;
 
-  memset (section_offsets, 0, SIZEOF_N_SECTION_OFFSETS (num_sections));
+  section_offsets.assign (section_offsets.size (), 0);
 
   /* Now calculate offsets for section that were specified by the caller.  */
   for (i = 0; i < addrs.size (); i++)
@@ -432,7 +431,7 @@ relative_addr_info_to_section_offsets (s
       /* Record all sections in offsets.  */
       /* The section_offsets in the objfile are here filled in using
          the BFD index.  */
-      section_offsets->offsets[osp->sectindex] = osp->addr;
+      section_offsets[osp->sectindex] = osp->addr;
     }
 }
 
@@ -636,12 +635,8 @@ void
 default_symfile_offsets (struct objfile *objfile,
 			 const section_addr_info &addrs)
 {
-  objfile->num_sections = gdb_bfd_count_sections (objfile->obfd);
-  objfile->section_offsets = (struct section_offsets *)
-    obstack_alloc (&objfile->objfile_obstack,
-		   SIZEOF_N_SECTION_OFFSETS (objfile->num_sections));
-  relative_addr_info_to_section_offsets (objfile->section_offsets,
-					 objfile->num_sections, addrs);
+  objfile->section_offsets.resize (gdb_bfd_count_sections (objfile->obfd));
+  relative_addr_info_to_section_offsets (objfile->section_offsets, addrs);
 
   /* For relocatable files, all loadable sections will start at zero.
      The zero is meaningless, so try to pick arbitrary addresses such
@@ -662,11 +657,11 @@ default_symfile_offsets (struct objfile
 
       if (cur_sec == NULL)
 	{
-	  CORE_ADDR *offsets = objfile->section_offsets->offsets;
+	  section_offsets &offsets = objfile->section_offsets;
 
 	  /* Pick non-overlapping offsets for sections the user did not
 	     place explicitly.  */
-	  arg.offsets = objfile->section_offsets;
+	  arg.offsets = &objfile->section_offsets;
 	  arg.lowest = 0;
 	  bfd_map_over_sections (objfile->obfd, place_section, &arg);
 
@@ -722,12 +717,11 @@ default_symfile_offsets (struct objfile
    It assumes that object files do not have segments, and fully linked
    files have a single segment.  */
 
-struct symfile_segment_data *
+symfile_segment_data_up
 default_symfile_segments (bfd *abfd)
 {
   int num_sections, i;
   asection *sect;
-  struct symfile_segment_data *data;
   CORE_ADDR low, high;
 
   /* Relocatable files contain enough information to position each
@@ -750,13 +744,12 @@ default_symfile_segments (bfd *abfd)
   low = bfd_section_vma (sect);
   high = low + bfd_section_size (sect);
 
-  data = XCNEW (struct symfile_segment_data);
-  data->num_segments = 1;
-  data->segment_bases = XCNEW (CORE_ADDR);
-  data->segment_sizes = XCNEW (CORE_ADDR);
+  symfile_segment_data_up data (new symfile_segment_data);
 
   num_sections = bfd_count_sections (abfd);
-  data->segment_info = XCNEWVEC (int, num_sections);
+
+  /* All elements are initialized to 0 (map to no segment).  */
+  data->segment_info.resize (num_sections);
 
   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
     {
@@ -774,8 +767,7 @@ default_symfile_segments (bfd *abfd)
       data->segment_info[i] = 1;
     }
 
-  data->segment_bases[0] = low;
-  data->segment_sizes[0] = high - low;
+  data->segments.emplace_back (low, high - low);
 
   return data;
 }
@@ -857,14 +849,14 @@ init_entry_point_info (struct objfile *o
       /* Make certain that the address points at real code, and not a
 	 function descriptor.  */
       entry_point
-	= gdbarch_convert_from_func_ptr_addr (get_objfile_arch (objfile),
+	= gdbarch_convert_from_func_ptr_addr (objfile->arch (),
 					      entry_point,
 					      current_top_target ());
 
       /* Remove any ISA markers, so that this matches entries in the
 	 symbol table.  */
       ei->entry_point
-	= gdbarch_addr_bits_remove (get_objfile_arch (objfile), entry_point);
+	= gdbarch_addr_bits_remove (objfile->arch (), entry_point);
 
       found = 0;
       ALL_OBJFILE_OSECTIONS (objfile, osect)
@@ -902,7 +894,7 @@ init_entry_point_info (struct objfile *o
    (as gleaned by GDB's shared library code).  We convert each address
    into an offset from the section VMA's as it appears in the object
    file, and then call the file's sym_offsets function to convert this
-   into a format-specific offset table --- a `struct section_offsets'.
+   into a format-specific offset table --- a `section_offsets'.
    The sectindex field is used to control the ordering of sections
    with the same name.  Upon return, it is updated to contain the
    corresponding BFD section index, or -1 if the section was not found.
@@ -926,13 +918,8 @@ syms_from_objfile_1 (struct objfile *obj
       /* No symbols to load, but we still need to make sure
 	 that the section_offsets table is allocated.  */
       int num_sections = gdb_bfd_count_sections (objfile->obfd);
-      size_t size = SIZEOF_N_SECTION_OFFSETS (num_sections);
 
-      objfile->num_sections = num_sections;
-      objfile->section_offsets
-	= (struct section_offsets *) obstack_alloc (&objfile->objfile_obstack,
-						    size);
-      memset (objfile->section_offsets, 0, size);
+      objfile->section_offsets.assign (num_sections, 0);
       return;
     }
 
@@ -940,7 +927,7 @@ syms_from_objfile_1 (struct objfile *obj
      if an error occurs during symbol reading.  */
   gdb::optional<clear_symtab_users_cleanup> defer_clear_users;
 
-  std::unique_ptr<struct objfile> objfile_holder (objfile);
+  objfile_up objfile_holder (objfile);
 
   /* If ADDRS is NULL, put together a dummy address list.
      We now establish the convention that an addr of zero means
@@ -958,7 +945,7 @@ syms_from_objfile_1 (struct objfile *obj
 
       if (symfile_objfile != NULL)
 	{
-	  delete symfile_objfile;
+	  symfile_objfile->unlink ();
 	  gdb_assert (symfile_objfile == NULL);
 	}
 
@@ -1064,6 +1051,7 @@ symbol_file_add_with_addrs (bfd *abfd, c
   struct objfile *objfile;
   const int from_tty = add_flags & SYMFILE_VERBOSE;
   const int mainline = add_flags & SYMFILE_MAINLINE;
+  const int always_confirm = add_flags & SYMFILE_ALWAYS_CONFIRM;
   const int should_print = (print_symbol_loading_p (from_tty, mainline, 1)
 			    && (readnow_symbol_files
 				|| (add_flags & SYMFILE_NO_READ) == 0));
@@ -1082,21 +1070,19 @@ symbol_file_add_with_addrs (bfd *abfd, c
   if ((add_flags & SYMFILE_NOT_FILENAME) != 0)
     flags |= OBJF_NOT_FILENAME;
 
-  /* Give user a chance to burp if we'd be
+  /* Give user a chance to burp if ALWAYS_CONFIRM or we'd be
      interactively wiping out any existing symbols.  */
 
-  if ((have_full_symbols () || have_partial_symbols ())
-      && mainline
-      && from_tty
+  if (from_tty
+      && (always_confirm
+	  || ((have_full_symbols () || have_partial_symbols ())
+	      && mainline))
       && !query (_("Load new symbol table from \"%s\"? "), name))
     error (_("Not confirmed."));
 
   if (mainline)
     flags |= OBJF_MAINLINE;
-  objfile = new struct objfile (abfd, name, flags);
-
-  if (parent)
-    add_separate_debug_objfile (objfile, parent);
+  objfile = objfile::make (abfd, name, flags, parent);
 
   /* We either created a new mapped symbol table, mapped an existing
      symbol table file which has not had initial symbol reading
@@ -1176,7 +1162,7 @@ symbol_file_add_separate (bfd *bfd, cons
   symbol_file_add_with_addrs
     (bfd, name, symfile_flags, &sap,
      objfile->flags & (OBJF_REORDERED | OBJF_SHARED | OBJF_READNOW
-		       | OBJF_USERLOADED),
+		       | OBJF_USERLOADED | OBJF_MAINLINE),
      objfile);
 }
 
@@ -1254,7 +1240,9 @@ symbol_file_clear (int from_tty)
      objfiles get stale by free_all_objfiles.  */
   no_shared_libraries (NULL, from_tty);
 
-  free_all_objfiles ();
+  current_program_space->free_all_objfiles ();
+
+  clear_symtab_users (0);
 
   gdb_assert (symfile_objfile == NULL);
   if (from_tty)
@@ -1289,7 +1277,7 @@ separate_debug_file_exists (const std::s
       gdb_flush (gdb_stdout);
     }
 
-  gdb_bfd_ref_ptr abfd (gdb_bfd_open (name.c_str (), gnutarget, -1));
+  gdb_bfd_ref_ptr abfd (gdb_bfd_open (name.c_str (), gnutarget));
 
   if (abfd == NULL)
     {
@@ -1678,35 +1666,31 @@ symbol_file_command (const char *args, i
     }
 }
 
-/* Set the initial language.
-
-   FIXME: A better solution would be to record the language in the
-   psymtab when reading partial symbols, and then use it (if known) to
-   set the language.  This would be a win for formats that encode the
-   language in an easily discoverable place, such as DWARF.  For
-   stabs, we can jump through hoops looking for specially named
-   symbols or try to intuit the language from the specific type of
-   stabs we find, but we can't do that until later when we read in
-   full symbols.  */
+/* Set the initial language.  */
 
 void
 set_initial_language (void)
 {
+  if (language_mode == language_mode_manual)
+    return;
   enum language lang = main_language ();
+  /* Make C the default language.  */
+  enum language default_lang = language_c;
 
   if (lang == language_unknown)
     {
       const char *name = main_name ();
-      struct symbol *sym = lookup_symbol (name, NULL, VAR_DOMAIN, NULL).symbol;
+      struct symbol *sym
+	= lookup_symbol_in_language (name, NULL, VAR_DOMAIN, default_lang,
+				     NULL).symbol;
 
       if (sym != NULL)
-	lang = SYMBOL_LANGUAGE (sym);
+	lang = sym->language ();
     }
 
   if (lang == language_unknown)
     {
-      /* Make C the default language */
-      lang = language_c;
+      lang = default_lang;
     }
 
   set_language (lang);
@@ -2057,7 +2041,7 @@ generic_load (const char *args, int from
     }
 
   /* Open the file for loading.  */
-  gdb_bfd_ref_ptr loadfile_bfd (gdb_bfd_open (filename.get (), gnutarget, -1));
+  gdb_bfd_ref_ptr loadfile_bfd (gdb_bfd_open (filename.get (), gnutarget));
   if (loadfile_bfd == NULL)
     perror_with_name (filename.get ());
 
@@ -2167,8 +2151,7 @@ set_objfile_default_section_offset (stru
 				    CORE_ADDR offset)
 {
   /* Add OFFSET to all sections by default.  */
-  std::vector<struct section_offsets> offsets (objf->num_sections,
-					       { { offset } });
+  section_offsets offsets (objf->section_offsets.size (), offset);
 
   /* Create sorted lists of all sections in ADDRS as well as all
      sections in OBJF.  */
@@ -2206,11 +2189,11 @@ set_objfile_default_section_offset (stru
 	}
 
       if (cmp == 0)
-	offsets[objf_sect->sectindex].offsets[0] = 0;
+	offsets[objf_sect->sectindex] = 0;
     }
 
   /* Apply the new section offsets.  */
-  objfile_relocate (objf, offsets.data ());
+  objfile_relocate (objf, offsets);
 }
 
 /* This function allows the addition of incrementally linked object files.
@@ -2441,7 +2424,7 @@ remove_symbol_file_command (const char *
 		 objfile_name (objf)))
     error (_("Not confirmed."));
 
-  delete objf;
+  objf->unlink ();
   clear_symtab_users (0);
 }
 
@@ -2469,7 +2452,7 @@ reread_symbols (void)
 	 a `shared library' on AIX is also an archive), then you should
 	 stat on the archive name, not member name.  */
       if (objfile->obfd->my_archive)
-	res = stat (objfile->obfd->my_archive->filename, &new_statbuf);
+	res = stat (bfd_get_filename (objfile->obfd->my_archive), &new_statbuf);
       else
 	res = stat (objfile_name (objfile), &new_statbuf);
       if (res != 0)
@@ -2482,9 +2465,6 @@ reread_symbols (void)
       new_modtime = new_statbuf.st_mtime;
       if (new_modtime != objfile->mtime)
 	{
-	  struct section_offsets *offsets;
-	  int num_offsets;
-
 	  printf_filtered (_("`%s' has changed; re-reading symbols.\n"),
 			   objfile_name (objfile));
 
@@ -2498,7 +2478,7 @@ reread_symbols (void)
 	  /* If we get an error, blow away this objfile (not sure if
 	     that is the correct response for things like shared
 	     libraries).  */
-	  std::unique_ptr<struct objfile> objfile_holder (objfile);
+	  objfile_up objfile_holder (objfile);
 
 	  /* We need to do this whenever any symbols go away.  */
 	  clear_symtab_users_cleanup defer_clear_users (0);
@@ -2546,7 +2526,7 @@ reread_symbols (void)
 	    obfd_filename = bfd_get_filename (objfile->obfd);
 	    /* Open the new BFD before freeing the old one, so that
 	       the filename remains live.  */
-	    gdb_bfd_ref_ptr temp (gdb_bfd_open (obfd_filename, gnutarget, -1));
+	    gdb_bfd_ref_ptr temp (gdb_bfd_open (obfd_filename, gnutarget));
 	    objfile->obfd = temp.release ();
 	    if (objfile->obfd == NULL)
 	      error (_("Can't open %s to read symbols."), obfd_filename);
@@ -2559,20 +2539,17 @@ reread_symbols (void)
 	    error (_("Can't read symbols from %s: %s."), objfile_name (objfile),
 		   bfd_errmsg (bfd_get_error ()));
 
-	  /* Save the offsets, we will nuke them with the rest of the
-	     objfile_obstack.  */
-	  num_offsets = objfile->num_sections;
-	  offsets = ((struct section_offsets *)
-		     alloca (SIZEOF_N_SECTION_OFFSETS (num_offsets)));
-	  memcpy (offsets, objfile->section_offsets,
-		  SIZEOF_N_SECTION_OFFSETS (num_offsets));
-
 	  objfile->reset_psymtabs ();
 
 	  /* NB: after this call to obstack_free, objfiles_changed
 	     will need to be called (see discussion below).  */
 	  obstack_free (&objfile->objfile_obstack, 0);
 	  objfile->sections = NULL;
+	  objfile->section_offsets.clear ();
+	  objfile->sect_index_bss = -1;
+	  objfile->sect_index_data = -1;
+	  objfile->sect_index_rodata = -1;
+	  objfile->sect_index_text = -1;
 	  objfile->compunit_symtabs = NULL;
 	  objfile->template_symbols = NULL;
 	  objfile->static_links.reset (nullptr);
@@ -2598,15 +2575,6 @@ reread_symbols (void)
 
 	  build_objfile_section_table (objfile);
 
-	  /* We use the same section offsets as from last time.  I'm not
-	     sure whether that is always correct for shared libraries.  */
-	  objfile->section_offsets = (struct section_offsets *)
-	    obstack_alloc (&objfile->objfile_obstack,
-			   SIZEOF_N_SECTION_OFFSETS (num_offsets));
-	  memcpy (objfile->section_offsets, offsets,
-		  SIZEOF_N_SECTION_OFFSETS (num_offsets));
-	  objfile->num_sections = num_offsets;
-
 	  /* What the hell is sym_new_init for, anyway?  The concept of
 	     distinguishing between the main file and additional files
 	     in this way seems rather dubious.  */
@@ -2636,6 +2604,9 @@ reread_symbols (void)
 
 	  objfiles_changed ();
 
+	  /* Recompute section offsets and section indices.  */
+	  objfile->sf->sym_offsets (objfile, {});
+
 	  read_symbols (objfile, 0);
 
 	  if (!objfile_has_symbols (objfile))
@@ -2810,9 +2781,7 @@ allocate_symtab (struct compunit_symtab
   struct symtab *symtab
     = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symtab);
 
-  symtab->filename
-    = ((const char *) objfile->per_bfd->filename_cache.insert
-       (filename, strlen (filename) + 1));
+  symtab->filename = objfile->intern (filename);
   symtab->fullname = NULL;
   symtab->language = deduce_language_from_filename (filename);
 
@@ -3036,7 +3005,7 @@ section_is_mapped (struct obj_section *o
     case ovly_auto:		/* overlay debugging automatic */
       /* Unles there is a gdbarch_overlay_update function,
          there's really nothing useful to do here (can't really go auto).  */
-      gdbarch = get_objfile_arch (osect->objfile);
+      gdbarch = osect->objfile->arch ();
       if (gdbarch_overlay_update_p (gdbarch))
 	{
 	  if (overlay_cache_invalid)
@@ -3235,7 +3204,7 @@ list_overlays_command (const char *args,
 	ALL_OBJFILE_OSECTIONS (objfile, osect)
 	  if (section_is_mapped (osect))
 	    {
-	      struct gdbarch *gdbarch = get_objfile_arch (objfile);
+	      struct gdbarch *gdbarch = objfile->arch ();
 	      const char *name;
 	      bfd_vma lma, vma;
 	      int size;
@@ -3387,20 +3356,9 @@ overlay_load_command (const char *args,
     error (_("This target does not know how to read its overlay state."));
 }
 
-/* Function: overlay_command
-   A place-holder for a mis-typed command.  */
-
 /* Command list chain containing all defined "overlay" subcommands.  */
 static struct cmd_list_element *overlaylist;
 
-static void
-overlay_command (const char *args, int from_tty)
-{
-  printf_unfiltered
-    ("\"overlay\" must be followed by the name of an overlay command.\n");
-  help_list (overlaylist, "overlay ", all_commands, gdb_stdout);
-}
-
 /* Target Overlays for the "Simplest" overlay manager:
 
    This is GDB's default target overlay layer.  It works with the
@@ -3448,8 +3406,7 @@ enum ovly_index
 static void
 simple_free_overlay_table (void)
 {
-  if (cache_ovly_table)
-    xfree (cache_ovly_table);
+  xfree (cache_ovly_table);
   cache_novlys = 0;
   cache_ovly_table = NULL;
   cache_ovly_table_base = 0;
@@ -3502,7 +3459,7 @@ simple_read_overlay_table (void)
       return 0;
     }
 
-  gdbarch = get_objfile_arch (ovly_table_msym.objfile);
+  gdbarch = ovly_table_msym.objfile->arch ();
   word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
   byte_order = gdbarch_byte_order (gdbarch);
 
@@ -3531,7 +3488,7 @@ simple_overlay_update_1 (struct obj_sect
 {
   int i;
   asection *bsect = osect->the_bfd_section;
-  struct gdbarch *gdbarch = get_objfile_arch (osect->objfile);
+  struct gdbarch *gdbarch = osect->objfile->arch ();
   int word_size = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
 
@@ -3670,7 +3627,7 @@ symfile_relocate_debug_section (struct o
   return (*objfile->sf->sym_relocate) (objfile, sectp, buf);
 }
 
-struct symfile_segment_data *
+symfile_segment_data_up
 get_symfile_segment_data (bfd *abfd)
 {
   const struct sym_fns *sf = find_sym_fns (abfd);
@@ -3681,15 +3638,6 @@ get_symfile_segment_data (bfd *abfd)
   return sf->sym_segments (abfd);
 }
 
-void
-free_symfile_segment_data (struct symfile_segment_data *data)
-{
-  xfree (data->segment_bases);
-  xfree (data->segment_sizes);
-  xfree (data->segment_info);
-  xfree (data);
-}
-
 /* Given:
    - DATA, containing segment addresses from the object file ABFD, and
      the mapping from ABFD's sections onto the segments that own them,
@@ -3708,7 +3656,7 @@ free_symfile_segment_data (struct symfil
 int
 symfile_map_offsets_to_segments (bfd *abfd,
 				 const struct symfile_segment_data *data,
-				 struct section_offsets *offsets,
+				 section_offsets &offsets,
 				 int num_segment_bases,
 				 const CORE_ADDR *segment_bases)
 {
@@ -3722,13 +3670,13 @@ symfile_map_offsets_to_segments (bfd *ab
   /* If we do not have segment mappings for the object file, we
      can not relocate it by segments.  */
   gdb_assert (data != NULL);
-  gdb_assert (data->num_segments > 0);
+  gdb_assert (data->segments.size () > 0);
 
   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
     {
       int which = data->segment_info[i];
 
-      gdb_assert (0 <= which && which <= data->num_segments);
+      gdb_assert (0 <= which && which <= data->segments.size ());
 
       /* Don't bother computing offsets for sections that aren't
          loaded as part of any segment.  */
@@ -3740,8 +3688,7 @@ symfile_map_offsets_to_segments (bfd *ab
       if (which > num_segment_bases)
         which = num_segment_bases;
 
-      offsets->offsets[i] = (segment_bases[which - 1]
-                             - data->segment_bases[which - 1]);
+      offsets[i] = segment_bases[which - 1] - data->segments[which - 1].base;
     }
 
   return 1;
@@ -3753,17 +3700,14 @@ symfile_find_segment_sections (struct ob
   bfd *abfd = objfile->obfd;
   int i;
   asection *sect;
-  struct symfile_segment_data *data;
 
-  data = get_symfile_segment_data (objfile->obfd);
+  symfile_segment_data_up data
+    = get_symfile_segment_data (objfile->obfd);
   if (data == NULL)
     return;
 
-  if (data->num_segments != 1 && data->num_segments != 2)
-    {
-      free_symfile_segment_data (data);
-      return;
-    }
+  if (data->segments.size () != 1 && data->segments.size () != 2)
+    return;
 
   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
     {
@@ -3786,8 +3730,6 @@ symfile_find_segment_sections (struct ob
 	    objfile->sect_index_bss = sect->index;
 	}
     }
-
-  free_symfile_segment_data (data);
 }
 
 /* Listen for free_objfile events.  */
@@ -3816,7 +3758,7 @@ expand_symtabs_matching
     {
       if (objfile->sf)
 	objfile->sf->qf->expand_symtabs_matching (objfile, file_matcher,
-						  lookup_name,
+						  &lookup_name,
 						  symbol_matcher,
 						  expansion_notify, kind);
     }
@@ -3897,8 +3839,9 @@ test_set_ext_lang_command ()
 
 #endif /* GDB_SELF_TEST */
 
+void _initialize_symfile ();
 void
-_initialize_symfile (void)
+_initialize_symfile ()
 {
   struct cmd_list_element *c;
 
@@ -3951,12 +3894,12 @@ When OFFSET is provided, FILE must also
 on its own."), &cmdlist);
   set_cmd_completer (c, filename_completer);
 
-  add_prefix_cmd ("overlay", class_support, overlay_command,
-		  _("Commands for debugging overlays."), &overlaylist,
-		  "overlay ", 0, &cmdlist);
+  add_basic_prefix_cmd ("overlay", class_support,
+			_("Commands for debugging overlays."), &overlaylist,
+			"overlay ", 0, &cmdlist);
 
-  add_com_alias ("ovly", "overlay", class_alias, 1);
-  add_com_alias ("ov", "overlay", class_alias, 1);
+  add_com_alias ("ovly", "overlay", class_support, 1);
+  add_com_alias ("ov", "overlay", class_support, 1);
 
   add_cmd ("map-overlay", class_support, map_overlay_command,
 	   _("Assert that an overlay section is mapped."), &overlaylist);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symfile-debug.c ./gdb/symfile-debug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symfile-debug.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/symfile-debug.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Debug logging for the symbol file functions for the GNU debugger, GDB.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support, using pieces from other GDB modules.
 
@@ -254,7 +254,7 @@ static void
 debug_qf_expand_symtabs_matching
   (struct objfile *objfile,
    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
-   const lookup_name_info &lookup_name,
+   const lookup_name_info *lookup_name,
    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
    enum search_domain kind)
@@ -362,6 +362,7 @@ static const struct quick_symbol_functio
   debug_qf_forget_cached_source_info,
   debug_qf_map_symtabs_matching_filename,
   debug_qf_lookup_symbol,
+  NULL,
   debug_qf_print_stats,
   debug_qf_dump,
   debug_qf_expand_symtabs_for_function,
@@ -474,7 +475,7 @@ debug_sym_offsets (struct objfile *objfi
   debug_data->real_sf->sym_offsets (objfile, info);
 }
 
-static struct symfile_segment_data *
+static symfile_segment_data_up
 debug_sym_segments (bfd *abfd)
 {
   /* This API function is annoying, it doesn't take a "this" pointer.
@@ -620,9 +621,7 @@ objfile_set_sym_fns (struct objfile *obj
 static void
 set_debug_symfile (const char *args, int from_tty, struct cmd_list_element *c)
 {
-  struct program_space *pspace;
-
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     for (objfile *objfile : pspace->objfiles ())
       {
 	if (debug_symfile)
@@ -645,8 +644,9 @@ show_debug_symfile (struct ui_file *file
   fprintf_filtered (file, _("Symfile debugging is %s.\n"), value);
 }
 
+void _initialize_symfile_debug ();
 void
-_initialize_symfile_debug (void)
+_initialize_symfile_debug ()
 {
   add_setshow_boolean_cmd ("symfile", no_class, &debug_symfile, _("\
 Set debugging of the symfile functions."), _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symfile.h ./gdb/symfile.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symfile.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/symfile.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for reading symbol files into GDB.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -80,26 +80,32 @@ typedef std::vector<other_sections> sect
    each BFD section belongs to.  */
 struct symfile_segment_data
 {
-  /* How many segments are present in this file.  If there are
+  struct segment
+  {
+    segment (CORE_ADDR base, CORE_ADDR size)
+      : base (base), size (size)
+    {}
+
+    /* The original base address the segment.  */
+    CORE_ADDR base;
+
+    /* The memory size of the segment.  */
+    CORE_ADDR size;
+  };
+
+  /* The segments present in this file.  If there are
      two, the text segment is the first one and the data segment
      is the second one.  */
-  int num_segments;
+  std::vector<segment> segments;
 
-  /* If NUM_SEGMENTS is greater than zero, the original base address
-     of each segment.  */
-  CORE_ADDR *segment_bases;
-
-  /* If NUM_SEGMENTS is greater than zero, the memory size of each
-     segment.  */
-  CORE_ADDR *segment_sizes;
-
-  /* If NUM_SEGMENTS is greater than zero, this is an array of entries
-     recording which segment contains each BFD section.
-     SEGMENT_INFO[I] is S+1 if the I'th BFD section belongs to segment
+  /* This is an array of entries recording which segment contains each BFD
+     section.  SEGMENT_INFO[I] is S+1 if the I'th BFD section belongs to segment
      S, or zero if it is not in any segment.  */
-  int *segment_info;
+  std::vector<int> segment_info;
 };
 
+using symfile_segment_data_up = std::unique_ptr<symfile_segment_data>;
+
 /* Callback for quick_symbol_functions->map_symbol_filenames.  */
 
 typedef void (symbol_filename_ftype) (const char *filename,
@@ -183,6 +189,17 @@ struct quick_symbol_functions
 					    const char *name,
 					    domain_enum domain);
 
+  /* Check to see if the global symbol is defined in a "partial" symbol table
+     of OBJFILE. NAME is the name of the symbol to look for.  DOMAIN
+     indicates what sort of symbol to search for.
+
+     If found, sets *symbol_found_p to true and returns the symbol language.
+     defined, or NULL if no such symbol table exists.  */
+  enum language (*lookup_global_symbol_language) (struct objfile *objfile,
+						  const char *name,
+						  domain_enum domain,
+						  bool *symbol_found_p);
+
   /* Print statistics about any indices loaded for OBJFILE.  The
      statistics should be printed to gdb_stdout.  This is used for
      "maint print statistics".  */
@@ -242,11 +259,14 @@ struct quick_symbol_functions
      names (the passed file name is already only the lbasename'd
      part).
 
-     Otherwise, if KIND does not match, this symbol is skipped.
+     If the file is not skipped, and SYMBOL_MATCHER and LOOKUP_NAME are NULL,
+     the symbol table is expanded.
+
+     Otherwise, individual symbols are considered.
+
+     If KIND does not match, the symbol is skipped.
 
-     If even KIND matches, SYMBOL_MATCHER is called for each symbol
-     defined in the file.  The symbol "search" name is passed to
-     SYMBOL_MATCHER.
+     If the symbol name does not match LOOKUP_NAME, the symbol is skipped.
 
      If SYMBOL_MATCHER returns false, then the symbol is skipped.
 
@@ -254,7 +274,7 @@ struct quick_symbol_functions
   void (*expand_symtabs_matching)
     (struct objfile *objfile,
      gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
-     const lookup_name_info &lookup_name,
+     const lookup_name_info *lookup_name,
      gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
      gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
      enum search_domain kind);
@@ -346,7 +366,7 @@ struct sym_fns
      the segments of ABFD.  Each segment is a unit of the file
      which may be relocated independently.  */
 
-  struct symfile_segment_data *(*sym_segments) (bfd *abfd);
+  symfile_segment_data_up (*sym_segments) (bfd *abfd);
 
   /* This function should read the linetable from the objfile when
      the line table cannot be read while processing the debugging
@@ -373,8 +393,7 @@ extern section_addr_info
   build_section_addr_info_from_objfile (const struct objfile *objfile);
 
 extern void relative_addr_info_to_section_offsets
-  (struct section_offsets *section_offsets, int num_sections,
-   const section_addr_info &addrs);
+  (section_offsets &section_offsets, const section_addr_info &addrs);
 
 extern void addr_info_make_relative (section_addr_info *addrs,
 				     bfd *abfd);
@@ -388,7 +407,7 @@ extern void default_symfile_offsets (str
 /* The default version of sym_fns.sym_segments for readers that don't
    do anything special.  */
 
-extern struct symfile_segment_data *default_symfile_segments (bfd *abfd);
+extern symfile_segment_data_up default_symfile_segments (bfd *abfd);
 
 /* The default version of sym_fns.sym_relocate for readers that don't
    do anything special.  */
@@ -515,10 +534,9 @@ extern bfd_byte *symfile_relocate_debug_
 
 extern int symfile_map_offsets_to_segments (bfd *,
 					    const struct symfile_segment_data *,
-					    struct section_offsets *,
+					    section_offsets &,
 					    int, const CORE_ADDR *);
-struct symfile_segment_data *get_symfile_segment_data (bfd *abfd);
-void free_symfile_segment_data (struct symfile_segment_data *data);
+symfile_segment_data_up get_symfile_segment_data (bfd *abfd);
 
 extern scoped_restore_tmpl<int> increment_reading_symtab (void);
 
@@ -569,6 +587,7 @@ struct dwarf2_debug_sections {
   struct dwarf2_section_names macinfo;
   struct dwarf2_section_names macro;
   struct dwarf2_section_names str;
+  struct dwarf2_section_names str_offsets;
   struct dwarf2_section_names line_str;
   struct dwarf2_section_names ranges;
   struct dwarf2_section_names rnglists;
@@ -618,8 +637,6 @@ extern bool dwarf2_initialize_objfile (s
 extern void dwarf2_build_psymtabs (struct objfile *);
 extern void dwarf2_build_frame_info (struct objfile *);
 
-void dwarf2_free_objfile (struct objfile *);
-
 /* From minidebug.c.  */
 
 extern gdb_bfd_ref_ptr find_separate_debug_file_in_section (struct objfile *);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symfile-mem.c ./gdb/symfile-mem.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symfile-mem.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/symfile-mem.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Reading symbol files from memory.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -57,7 +57,7 @@
 /* Verify parameters of target_read_memory_bfd and target_read_memory are
    compatible.  */
 
-gdb_static_assert (sizeof (CORE_ADDR) == sizeof (bfd_vma));
+gdb_static_assert (sizeof (CORE_ADDR) >= sizeof (bfd_vma));
 gdb_static_assert (sizeof (gdb_byte) == sizeof (bfd_byte));
 gdb_static_assert (sizeof (ssize_t) <= sizeof (bfd_size_type));
 
@@ -78,11 +78,10 @@ target_read_memory_bfd (bfd_vma memaddr,
    and read its in-core symbols out of inferior memory.  SIZE, if
    non-zero, is the known size of the object.  TEMPL is a bfd
    representing the target's format.  NAME is the name to use for this
-   symbol file in messages; it can be NULL or a malloc-allocated string
-   which will be attached to the BFD.  */
+   symbol file in messages; it can be NULL.  */
 static struct objfile *
 symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr,
-			     size_t size, char *name, int from_tty)
+			     size_t size, const char *name, int from_tty)
 {
   struct objfile *objf;
   struct bfd *nbfd;
@@ -102,7 +101,7 @@ symbol_file_add_from_memory (struct bfd
   gdb_bfd_ref_ptr nbfd_holder = gdb_bfd_ref_ptr::new_reference (nbfd);
 
   if (name == NULL)
-    name = xstrdup ("shared object read from target memory");
+    name = "shared object read from target memory";
   bfd_set_filename (nbfd, name);
 
   if (!bfd_check_format (nbfd, bfd_object))
@@ -183,8 +182,9 @@ add_vsyscall_page (struct target_ops *ta
 	  return;
 	}
 
-      char *name = xstrprintf ("system-supplied DSO at %s",
-			       paddress (target_gdbarch (), vsyscall_range.start));
+      std::string name = string_printf ("system-supplied DSO at %s",
+					paddress (target_gdbarch (),
+						  vsyscall_range.start));
       try
 	{
 	  /* Pass zero for FROM_TTY, because the action of loading the
@@ -193,7 +193,7 @@ add_vsyscall_page (struct target_ops *ta
 	  symbol_file_add_from_memory (bfd,
 				       vsyscall_range.start,
 				       vsyscall_range.length,
-				       name,
+				       name.c_str (),
 				       0 /* from_tty */);
 	}
       catch (const gdb_exception &ex)
@@ -203,8 +203,9 @@ add_vsyscall_page (struct target_ops *ta
     }
 }
 
+void _initialize_symfile_mem ();
 void
-_initialize_symfile_mem (void)
+_initialize_symfile_mem ()
 {
   add_cmd ("add-symbol-file-from-memory", class_files,
            add_symbol_file_from_memory_command,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symmisc.c ./gdb/symmisc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symmisc.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/symmisc.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Do various things to symbol tables (other than lookup), for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -61,9 +61,7 @@ static void print_symbol (struct gdbarch
 void
 print_symbol_bcache_statistics (void)
 {
-  struct program_space *pspace;
-
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     for (objfile *objfile : pspace->objfiles ())
       {
 	QUIT;
@@ -71,75 +69,70 @@ print_symbol_bcache_statistics (void)
 			 objfile_name (objfile));
 	objfile->partial_symtabs->psymbol_cache.print_statistics
 	  ("partial symbol cache");
-	objfile->per_bfd->macro_cache.print_statistics
-	  ("preprocessor macro cache");
-	objfile->per_bfd->filename_cache.print_statistics ("file name cache");
+	objfile->per_bfd->string_cache.print_statistics ("string cache");
       }
 }
 
 void
 print_objfile_statistics (void)
 {
-  struct program_space *pspace;
   int i, linetables, blockvectors;
 
-  ALL_PSPACES (pspace)
-  for (objfile *objfile : pspace->objfiles ())
-    {
-      QUIT;
-      printf_filtered (_("Statistics for '%s':\n"), objfile_name (objfile));
-      if (OBJSTAT (objfile, n_stabs) > 0)
-	printf_filtered (_("  Number of \"stab\" symbols read: %d\n"),
-			 OBJSTAT (objfile, n_stabs));
-      if (objfile->per_bfd->n_minsyms > 0)
-	printf_filtered (_("  Number of \"minimal\" symbols read: %d\n"),
-			 objfile->per_bfd->n_minsyms);
-      if (OBJSTAT (objfile, n_psyms) > 0)
-	printf_filtered (_("  Number of \"partial\" symbols read: %d\n"),
-			 OBJSTAT (objfile, n_psyms));
-      if (OBJSTAT (objfile, n_syms) > 0)
-	printf_filtered (_("  Number of \"full\" symbols read: %d\n"),
-			 OBJSTAT (objfile, n_syms));
-      if (OBJSTAT (objfile, n_types) > 0)
-	printf_filtered (_("  Number of \"types\" defined: %d\n"),
-			 OBJSTAT (objfile, n_types));
-      if (objfile->sf)
-	objfile->sf->qf->print_stats (objfile);
-      i = linetables = 0;
-      for (compunit_symtab *cu : objfile->compunits ())
-	{
-	  for (symtab *s : compunit_filetabs (cu))
-	    {
-	      i++;
-	      if (SYMTAB_LINETABLE (s) != NULL)
-		linetables++;
-	    }
-	}
-      blockvectors = std::distance (objfile->compunits ().begin (),
-				    objfile->compunits ().end ());
-      printf_filtered (_("  Number of symbol tables: %d\n"), i);
-      printf_filtered (_("  Number of symbol tables with line tables: %d\n"),
-		       linetables);
-      printf_filtered (_("  Number of symbol tables with blockvectors: %d\n"),
-		       blockvectors);
-
-      if (OBJSTAT (objfile, sz_strtab) > 0)
-	printf_filtered (_("  Space used by string tables: %d\n"),
-			 OBJSTAT (objfile, sz_strtab));
-      printf_filtered (_("  Total memory used for objfile obstack: %s\n"),
-		       pulongest (obstack_memory_used (&objfile
-						       ->objfile_obstack)));
-      printf_filtered (_("  Total memory used for BFD obstack: %s\n"),
-		       pulongest (obstack_memory_used (&objfile->per_bfd
-						       ->storage_obstack)));
-      printf_filtered
-	(_("  Total memory used for psymbol cache: %d\n"),
-	 objfile->partial_symtabs->psymbol_cache.memory_used ());
-      printf_filtered (_("  Total memory used for macro cache: %d\n"),
-		       objfile->per_bfd->macro_cache.memory_used ());
-      printf_filtered (_("  Total memory used for file name cache: %d\n"),
-		       objfile->per_bfd->filename_cache.memory_used ());
-    }
+  for (struct program_space *pspace : program_spaces)
+    for (objfile *objfile : pspace->objfiles ())
+      {
+	QUIT;
+	printf_filtered (_("Statistics for '%s':\n"), objfile_name (objfile));
+	if (OBJSTAT (objfile, n_stabs) > 0)
+	  printf_filtered (_("  Number of \"stab\" symbols read: %d\n"),
+			   OBJSTAT (objfile, n_stabs));
+	if (objfile->per_bfd->n_minsyms > 0)
+	  printf_filtered (_("  Number of \"minimal\" symbols read: %d\n"),
+			   objfile->per_bfd->n_minsyms);
+	if (OBJSTAT (objfile, n_psyms) > 0)
+	  printf_filtered (_("  Number of \"partial\" symbols read: %d\n"),
+			   OBJSTAT (objfile, n_psyms));
+	if (OBJSTAT (objfile, n_syms) > 0)
+	  printf_filtered (_("  Number of \"full\" symbols read: %d\n"),
+			   OBJSTAT (objfile, n_syms));
+	if (OBJSTAT (objfile, n_types) > 0)
+	  printf_filtered (_("  Number of \"types\" defined: %d\n"),
+			   OBJSTAT (objfile, n_types));
+	if (objfile->sf)
+	  objfile->sf->qf->print_stats (objfile);
+	i = linetables = 0;
+	for (compunit_symtab *cu : objfile->compunits ())
+	  {
+	    for (symtab *s : compunit_filetabs (cu))
+	      {
+		i++;
+		if (SYMTAB_LINETABLE (s) != NULL)
+		  linetables++;
+	      }
+	  }
+	blockvectors = std::distance (objfile->compunits ().begin (),
+				      objfile->compunits ().end ());
+	printf_filtered (_("  Number of symbol tables: %d\n"), i);
+	printf_filtered (_("  Number of symbol tables with line tables: %d\n"),
+			 linetables);
+	printf_filtered (_("  Number of symbol tables with blockvectors: %d\n"),
+			 blockvectors);
+
+	if (OBJSTAT (objfile, sz_strtab) > 0)
+	  printf_filtered (_("  Space used by string tables: %d\n"),
+			   OBJSTAT (objfile, sz_strtab));
+	printf_filtered (_("  Total memory used for objfile obstack: %s\n"),
+			 pulongest (obstack_memory_used (&objfile
+							 ->objfile_obstack)));
+	printf_filtered (_("  Total memory used for BFD obstack: %s\n"),
+			 pulongest (obstack_memory_used (&objfile->per_bfd
+							 ->storage_obstack)));
+	printf_filtered
+	  (_("  Total memory used for psymbol cache: %d\n"),
+	   objfile->partial_symtabs->psymbol_cache.memory_used ());
+	printf_filtered (_("  Total memory used for string cache: %d\n"),
+			 objfile->per_bfd->string_cache.memory_used ());
+      }
 }
 
 static void
@@ -183,7 +176,7 @@ dump_objfile (struct objfile *objfile)
 static void
 dump_msymbols (struct objfile *objfile, struct ui_file *outfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   int index;
   char ms_type;
 
@@ -240,8 +233,7 @@ dump_msymbols (struct objfile *objfile,
       /* Use the relocated address as shown in the symbol here -- do
 	 not try to respect copy relocations.  */
       CORE_ADDR addr = (msymbol->value.address
-			+ ANOFFSET (objfile->section_offsets,
-				    msymbol->section));
+			+ objfile->section_offsets[msymbol->section]);
       fputs_filtered (paddress (gdbarch, addr), outfile);
       fprintf_filtered (outfile, " %s", msymbol->linkage_name ());
       if (section)
@@ -274,7 +266,7 @@ static void
 dump_symtab_1 (struct symtab *symtab, struct ui_file *outfile)
 {
   struct objfile *objfile = SYMTAB_OBJFILE (symtab);
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   int i;
   struct mdict_iterator miter;
   int len;
@@ -284,8 +276,10 @@ dump_symtab_1 (struct symtab *symtab, st
   const struct block *b;
   int depth;
 
-  fprintf_filtered (outfile, "\nSymtab for file %s\n",
-		    symtab_to_filename_for_display (symtab));
+  fprintf_filtered (outfile, "\nSymtab for file %s at %s\n",
+		    symtab_to_filename_for_display (symtab),
+		    host_address_to_string (symtab));
+
   if (SYMTAB_DIRNAME (symtab) != NULL)
     fprintf_filtered (outfile, "Compilation directory is %s\n",
 		      SYMTAB_DIRNAME (symtab));
@@ -306,12 +300,14 @@ dump_symtab_1 (struct symtab *symtab, st
 	{
 	  fprintf_filtered (outfile, " line %d at ", l->item[i].line);
 	  fputs_filtered (paddress (gdbarch, l->item[i].pc), outfile);
+	  if (l->item[i].is_stmt)
+	    fprintf_filtered (outfile, "\t(stmt)");
 	  fprintf_filtered (outfile, "\n");
 	}
     }
   /* Now print the block info, but only for compunit symtabs since we will
      print lots of duplicate info otherwise.  */
-  if (symtab == COMPUNIT_FILETABS (SYMTAB_COMPUNIT (symtab)))
+  if (is_main_symtab_of_compunit_symtab (symtab))
     {
       fprintf_filtered (outfile, "\nBlockvector:\n\n");
       bv = SYMTAB_BLOCKVECTOR (symtab);
@@ -374,6 +370,30 @@ dump_symtab_1 (struct symtab *symtab, st
 			"\nBlockvector same as owning compunit: %s\n\n",
 			compunit_filename);
     }
+
+  /* Print info about the user of this compunit_symtab, and the
+     compunit_symtabs included by this one. */
+  if (is_main_symtab_of_compunit_symtab (symtab))
+    {
+      struct compunit_symtab *cust = SYMTAB_COMPUNIT (symtab);
+
+      if (cust->user != nullptr)
+	{
+	  const char *addr
+	    = host_address_to_string (COMPUNIT_FILETABS (cust->user));
+	  fprintf_filtered (outfile, "Compunit user: %s\n", addr);
+	}
+      if (cust->includes != nullptr)
+	for (i = 0; ; ++i)
+	  {
+	    struct compunit_symtab *include = cust->includes[i];
+	    if (include == nullptr)
+	      break;
+	    const char *addr
+	      = host_address_to_string (COMPUNIT_FILETABS (include));
+	    fprintf_filtered (outfile, "Compunit include: %s\n", addr);
+	  }
+    }
 }
 
 static void
@@ -536,7 +556,7 @@ print_symbol (struct gdbarch *gdbarch, s
 
   if (SYMBOL_DOMAIN (symbol) == STRUCT_DOMAIN)
     {
-      if (TYPE_NAME (SYMBOL_TYPE (symbol)))
+      if (SYMBOL_TYPE (symbol)->name ())
 	{
 	  LA_PRINT_TYPE (SYMBOL_TYPE (symbol), "", outfile, 1, depth,
 			 &type_print_raw_options);
@@ -544,9 +564,9 @@ print_symbol (struct gdbarch *gdbarch, s
       else
 	{
 	  fprintf_filtered (outfile, "%s %s = ",
-			 (TYPE_CODE (SYMBOL_TYPE (symbol)) == TYPE_CODE_ENUM
+			 (SYMBOL_TYPE (symbol)->code () == TYPE_CODE_ENUM
 			  ? "enum"
-		     : (TYPE_CODE (SYMBOL_TYPE (symbol)) == TYPE_CODE_STRUCT
+		     : (SYMBOL_TYPE (symbol)->code () == TYPE_CODE_STRUCT
 			? "struct" : "union")),
 			    symbol->linkage_name ());
 	  LA_PRINT_TYPE (SYMBOL_TYPE (symbol), "", outfile, 1, depth,
@@ -563,7 +583,7 @@ print_symbol (struct gdbarch *gdbarch, s
 	  /* Print details of types, except for enums where it's clutter.  */
 	  LA_PRINT_TYPE (SYMBOL_TYPE (symbol), symbol->print_name (),
 			 outfile,
-			 TYPE_CODE (SYMBOL_TYPE (symbol)) != TYPE_CODE_ENUM,
+			 SYMBOL_TYPE (symbol)->code () != TYPE_CODE_ENUM,
 			 depth,
 			 &type_print_raw_options);
 	  fprintf_filtered (outfile, "; ");
@@ -739,14 +759,12 @@ maintenance_print_msymbols (const char *
 static void
 maintenance_print_objfiles (const char *regexp, int from_tty)
 {
-  struct program_space *pspace;
-
   dont_repeat ();
 
   if (regexp)
     re_comp (regexp);
 
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     for (objfile *objfile : pspace->objfiles ())
       {
 	QUIT;
@@ -761,14 +779,12 @@ maintenance_print_objfiles (const char *
 static void
 maintenance_info_symtabs (const char *regexp, int from_tty)
 {
-  struct program_space *pspace;
-
   dont_repeat ();
 
   if (regexp)
     re_comp (regexp);
 
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     for (objfile *objfile : pspace->objfiles ())
       {
 	/* We don't want to print anything for this objfile until we
@@ -812,6 +828,28 @@ maintenance_info_symtabs (const char *re
 					 " ((struct blockvector *) %s)\n",
 					 host_address_to_string
 				         (COMPUNIT_BLOCKVECTOR (cust)));
+			printf_filtered ("    user"
+					 " ((struct compunit_symtab *) %s)\n",
+					 cust->user != nullptr
+					 ? host_address_to_string (cust->user)
+					 : "(null)");
+			if (cust->includes != nullptr)
+			  {
+			    printf_filtered ("    ( includes\n");
+			    for (int i = 0; ; ++i)
+			      {
+				struct compunit_symtab *include
+				  = cust->includes[i];
+				if (include == nullptr)
+				  break;
+				const char *addr
+				  = host_address_to_string (include);
+				printf_filtered ("      (%s %s)\n",
+						 "(struct compunit_symtab *)",
+						 addr);
+			      }
+			    printf_filtered ("    )\n");
+			  }
 			printed_compunit_symtab_start = 1;
 		      }
 
@@ -851,9 +889,7 @@ maintenance_info_symtabs (const char *re
 static void
 maintenance_check_symtabs (const char *ignore, int from_tty)
 {
-  struct program_space *pspace;
-
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     for (objfile *objfile : pspace->objfiles ())
       {
 	/* We don't want to print anything for this objfile until we
@@ -899,7 +935,6 @@ maintenance_check_symtabs (const char *i
 static void
 maintenance_expand_symtabs (const char *args, int from_tty)
 {
-  struct program_space *pspace;
   char *regexp = NULL;
 
   /* We use buildargv here so that we handle spaces in the regexp
@@ -919,7 +954,7 @@ maintenance_expand_symtabs (const char *
   if (regexp)
     re_comp (regexp);
 
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     for (objfile *objfile : pspace->objfiles ())
       {
 	if (objfile->sf)
@@ -932,12 +967,8 @@ maintenance_expand_symtabs (const char *
 		 return (!basenames
 			 && (regexp == NULL || re_exec (filename)));
 	       },
-	       lookup_name_info::match_any (),
-	       [] (const char *symname)
-	       {
-		 /* Since we're not searching on symbols, just return true.  */
-		 return true;
-	       },
+	       NULL,
+	       NULL,
 	       NULL,
 	       ALL_DOMAIN);
 	  }
@@ -988,20 +1019,31 @@ maintenance_print_one_line_table (struct
     printf_filtered (_("Line table has no lines.\n"));
   else
     {
-      int i;
-
       /* Leave space for 6 digits of index and line number.  After that the
 	 tables will just not format as well.  */
-      printf_filtered (_("%-6s %6s %s\n"),
-		       _("INDEX"), _("LINE"), _("ADDRESS"));
+      struct ui_out *uiout = current_uiout;
+      ui_out_emit_table table_emitter (uiout, 4, -1, "line-table");
+      uiout->table_header (6, ui_left, "index", _("INDEX"));
+      uiout->table_header (6, ui_left, "line", _("LINE"));
+      uiout->table_header (18, ui_left, "address", _("ADDRESS"));
+      uiout->table_header (1, ui_left, "is-stmt", _("IS-STMT"));
+      uiout->table_body ();
 
-      for (i = 0; i < linetable->nitems; ++i)
+      for (int i = 0; i < linetable->nitems; ++i)
 	{
 	  struct linetable_entry *item;
 
 	  item = &linetable->item [i];
-	  printf_filtered (_("%-6d %6d %s\n"), i, item->line,
-			   core_addr_to_string (item->pc));
+	  ui_out_emit_tuple tuple_emitter (uiout, nullptr);
+	  uiout->field_signed ("index", i);
+	  if (item->line > 0)
+	    uiout->field_signed ("line", item->line);
+	  else
+	    uiout->field_string ("line", _("END"));
+	  uiout->field_core_addr ("address", objfile->arch (),
+				  item->pc);
+	  uiout->field_string ("is-stmt", item->is_stmt ? "Y" : "");
+	  uiout->text ("\n");
 	}
     }
 
@@ -1013,14 +1055,12 @@ maintenance_print_one_line_table (struct
 static void
 maintenance_info_line_tables (const char *regexp, int from_tty)
 {
-  struct program_space *pspace;
-
   dont_repeat ();
 
   if (regexp != NULL)
     re_comp (regexp);
 
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     for (objfile *objfile : pspace->objfiles ())
       {
 	for (compunit_symtab *cust : objfile->compunits ())
@@ -1041,8 +1081,9 @@ maintenance_info_line_tables (const char
 
 /* Do early runtime initializations.  */
 
+void _initialize_symmisc ();
 void
-_initialize_symmisc (void)
+_initialize_symmisc ()
 {
   std_in = stdin;
   std_out = stdout;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symtab.c ./gdb/symtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symtab.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/symtab.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Symbol table lookup for the GNU debugger, GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -595,7 +595,7 @@ gdb_mangle_name (struct type *type, int
   struct fn_field *method = &f[signature_id];
   const char *field_name = TYPE_FN_FIELDLIST_NAME (type, method_id);
   const char *physname = TYPE_FN_FIELD_PHYSNAME (f, signature_id);
-  const char *newname = TYPE_NAME (type);
+  const char *newname = type->name ();
 
   /* Does the form of physname indicate that it is the full mangled name
      of a constructor (not just the args)?  */
@@ -667,44 +667,27 @@ gdb_mangle_name (struct type *type, int
   return (mangled_name);
 }
 
-/* Set the demangled name of GSYMBOL to NAME.  NAME must be already
-   correctly allocated.  */
+/* See symtab.h.  */
 
 void
-symbol_set_demangled_name (struct general_symbol_info *gsymbol,
-                           const char *name,
-                           struct obstack *obstack)
+general_symbol_info::set_demangled_name (const char *name,
+					 struct obstack *obstack)
 {
-  if (gsymbol->language == language_ada)
+  if (language () == language_ada)
     {
       if (name == NULL)
 	{
-	  gsymbol->ada_mangled = 0;
-	  gsymbol->language_specific.obstack = obstack;
+	  ada_mangled = 0;
+	  language_specific.obstack = obstack;
 	}
       else
 	{
-	  gsymbol->ada_mangled = 1;
-	  gsymbol->language_specific.demangled_name = name;
+	  ada_mangled = 1;
+	  language_specific.demangled_name = name;
 	}
     }
   else
-    gsymbol->language_specific.demangled_name = name;
-}
-
-/* Return the demangled name of GSYMBOL.  */
-
-const char *
-symbol_get_demangled_name (const struct general_symbol_info *gsymbol)
-{
-  if (gsymbol->language == language_ada)
-    {
-      if (!gsymbol->ada_mangled)
-	return NULL;
-      /* Fall through.  */
-    }
-
-  return gsymbol->language_specific.demangled_name;
+    language_specific.demangled_name = name;
 }
 
 
@@ -712,28 +695,26 @@ symbol_get_demangled_name (const struct
    depending upon the language for the symbol.  */
 
 void
-symbol_set_language (struct general_symbol_info *gsymbol,
-                     enum language language,
-		     struct obstack *obstack)
-{
-  gsymbol->language = language;
-  if (gsymbol->language == language_cplus
-      || gsymbol->language == language_d
-      || gsymbol->language == language_go
-      || gsymbol->language == language_objc
-      || gsymbol->language == language_fortran)
+general_symbol_info::set_language (enum language language,
+				   struct obstack *obstack)
+{
+  m_language = language;
+  if (language == language_cplus
+      || language == language_d
+      || language == language_go
+      || language == language_objc
+      || language == language_fortran)
     {
-      symbol_set_demangled_name (gsymbol, NULL, obstack);
+      set_demangled_name (NULL, obstack);
     }
-  else if (gsymbol->language == language_ada)
+  else if (language == language_ada)
     {
-      gdb_assert (gsymbol->ada_mangled == 0);
-      gsymbol->language_specific.obstack = obstack;
+      gdb_assert (ada_mangled == 0);
+      language_specific.obstack = obstack;
     }
   else
     {
-      memset (&gsymbol->language_specific, 0,
-	      sizeof (gsymbol->language_specific));
+      memset (&language_specific, 0, sizeof (language_specific));
     }
 }
 
@@ -819,14 +800,14 @@ symbol_find_demangled_name (struct gener
   char *demangled = NULL;
   int i;
 
-  if (gsymbol->language == language_unknown)
-    gsymbol->language = language_auto;
+  if (gsymbol->language () == language_unknown)
+    gsymbol->m_language = language_auto;
 
-  if (gsymbol->language != language_auto)
+  if (gsymbol->language () != language_auto)
     {
-      const struct language_defn *lang = language_def (gsymbol->language);
+      const struct language_defn *lang = language_def (gsymbol->language ());
 
-      language_sniff_from_mangled_name (lang, mangled, &demangled);
+      lang->sniff_from_mangled_name (mangled, &demangled);
       return demangled;
     }
 
@@ -835,9 +816,9 @@ symbol_find_demangled_name (struct gener
       enum language l = (enum language) i;
       const struct language_defn *lang = language_def (l);
 
-      if (language_sniff_from_mangled_name (lang, mangled, &demangled))
+      if (lang->sniff_from_mangled_name (mangled, &demangled))
 	{
-	  gsymbol->language = l;
+	  gsymbol->m_language = l;
 	  return demangled;
 	}
     }
@@ -857,29 +838,24 @@ symbol_find_demangled_name (struct gener
    so the pointer can be discarded after calling this function.  */
 
 void
-symbol_set_names (struct general_symbol_info *gsymbol,
-		  gdb::string_view linkage_name, bool copy_name,
-		  struct objfile_per_bfd_storage *per_bfd,
-		  gdb::optional<hashval_t> hash)
+general_symbol_info::compute_and_set_names (gdb::string_view linkage_name,
+					    bool copy_name,
+					    objfile_per_bfd_storage *per_bfd,
+					    gdb::optional<hashval_t> hash)
 {
   struct demangled_name_entry **slot;
 
-  if (gsymbol->language == language_ada)
+  if (language () == language_ada)
     {
       /* In Ada, we do the symbol lookups using the mangled name, so
          we can save some space by not storing the demangled name.  */
       if (!copy_name)
-	gsymbol->name = linkage_name.data ();
+	m_name = linkage_name.data ();
       else
-	{
-	  char *name = (char *) obstack_alloc (&per_bfd->storage_obstack,
-					       linkage_name.length () + 1);
-
-	  memcpy (name, linkage_name.data (), linkage_name.length ());
-	  name[linkage_name.length ()] = '\0';
-	  gsymbol->name = name;
-	}
-      symbol_set_demangled_name (gsymbol, NULL, &per_bfd->storage_obstack);
+	m_name = obstack_strndup (&per_bfd->storage_obstack,
+				  linkage_name.data (),
+				  linkage_name.length ());
+      set_demangled_name (NULL, &per_bfd->storage_obstack);
 
       return;
     }
@@ -894,11 +870,21 @@ symbol_set_names (struct general_symbol_
           htab_find_slot_with_hash (per_bfd->demangled_names_hash.get (),
 				    &entry, *hash, INSERT));
 
+  /* 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.  If this is
+     nullptr, we call symbol_find_demangled_name below, but we put
+     this smart pointer here to be sure that we don't leak this name.  */
+  gdb::unique_xmalloc_ptr<char> demangled_name
+    (const_cast<char *> (language_specific.demangled_name));
+
   /* If this name is not in the hash table, add it.  */
   if (*slot == NULL
       /* A C version of the symbol may have already snuck into the table.
 	 This happens to, e.g., main.init (__go_init_main).  Cope.  */
-      || (gsymbol->language == language_go && (*slot)->demangled == nullptr))
+      || (language () == language_go && (*slot)->demangled == nullptr))
     {
       /* A 0-terminated copy of the linkage name.  Callers must set COPY_NAME
          to true if the string might not be nullterminated.  We have to make
@@ -916,15 +902,9 @@ symbol_set_names (struct general_symbol_
       else
 	linkage_name_copy = linkage_name;
 
-      /* 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 ()));
+      if (demangled_name.get () == nullptr)
+	 demangled_name.reset
+	   (symbol_find_demangled_name (this, 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
@@ -959,18 +939,13 @@ symbol_set_names (struct general_symbol_
 	    (gdb::string_view (mangled_ptr, linkage_name.length ()));
 	}
       (*slot)->demangled = std::move (demangled_name);
-      (*slot)->language = gsymbol->language;
+      (*slot)->language = language ();
     }
-  else if (gsymbol->language == language_unknown
-	   || gsymbol->language == language_auto)
-    gsymbol->language = (*slot)->language;
-
-  gsymbol->name = (*slot)->mangled.data ();
-  if ((*slot)->demangled != nullptr)
-    symbol_set_demangled_name (gsymbol, (*slot)->demangled.get (),
-			       &per_bfd->storage_obstack);
-  else
-    symbol_set_demangled_name (gsymbol, NULL, &per_bfd->storage_obstack);
+  else if (language () == language_unknown || language () == language_auto)
+    m_language = (*slot)->language;
+
+  m_name = (*slot)->mangled.data ();
+  set_demangled_name ((*slot)->demangled.get (), &per_bfd->storage_obstack);
 }
 
 /* See symtab.h.  */
@@ -978,22 +953,23 @@ symbol_set_names (struct general_symbol_
 const char *
 general_symbol_info::natural_name () const
 {
-  switch (language)
+  switch (language ())
     {
     case language_cplus:
     case language_d:
     case language_go:
     case language_objc:
     case language_fortran:
-      if (symbol_get_demangled_name (this) != NULL)
-	return symbol_get_demangled_name (this);
+    case language_rust:
+      if (language_specific.demangled_name != nullptr)
+	return language_specific.demangled_name;
       break;
     case language_ada:
       return ada_decode_symbol (this);
     default:
       break;
     }
-  return name;
+  return linkage_name ();
 }
 
 /* See symtab.h.  */
@@ -1003,14 +979,15 @@ general_symbol_info::demangled_name () c
 {
   const char *dem_name = NULL;
 
-  switch (language)
+  switch (language ())
     {
     case language_cplus:
     case language_d:
     case language_go:
     case language_objc:
     case language_fortran:
-      dem_name = symbol_get_demangled_name (this);
+    case language_rust:
+      dem_name = language_specific.demangled_name;
       break;
     case language_ada:
       dem_name = ada_decode_symbol (this);
@@ -1026,8 +1003,8 @@ general_symbol_info::demangled_name () c
 const char *
 general_symbol_info::search_name () const
 {
-  if (language == language_ada)
-    return name;
+  if (language () == language_ada)
+    return linkage_name ();
   else
     return natural_name ();
 }
@@ -1039,7 +1016,7 @@ symbol_matches_search_name (const struct
 			    const lookup_name_info &name)
 {
   symbol_name_matcher_ftype *name_match
-    = get_symbol_name_matcher (language_def (gsymbol->language), name);
+    = language_def (gsymbol->language ())->get_symbol_name_matcher (name);
   return name_match (gsymbol->search_name (), name, NULL);
 }
 
@@ -1219,8 +1196,7 @@ eq_symbol_entry (const struct symbol_cac
 	  if (!SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
 	    return 0;
 
-	  if (!symbol_matches_domain (SYMBOL_LANGUAGE (sym),
-				      slot_domain, domain))
+	  if (!symbol_matches_domain (sym->language (), slot_domain, domain))
 	    return 0;
 	}
     }
@@ -1300,9 +1276,7 @@ get_symbol_cache (struct program_space *
 static void
 set_symbol_cache_size (unsigned int new_size)
 {
-  struct program_space *pspace;
-
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     {
       struct symbol_cache *cache = symbol_cache_key.get (pspace);
 
@@ -1550,9 +1524,7 @@ symbol_cache_dump (const struct symbol_c
 static void
 maintenance_print_symbol_cache (const char *args, int from_tty)
 {
-  struct program_space *pspace;
-
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     {
       struct symbol_cache *cache;
 
@@ -1576,9 +1548,7 @@ maintenance_print_symbol_cache (const ch
 static void
 maintenance_flush_symbol_cache (const char *args, int from_tty)
 {
-  struct program_space *pspace;
-
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     {
       symbol_cache_flush (pspace);
     }
@@ -1621,9 +1591,7 @@ symbol_cache_stats (struct symbol_cache
 static void
 maintenance_print_symbol_cache_statistics (const char *args, int from_tty)
 {
-  struct program_space *pspace;
-
-  ALL_PSPACES (pspace)
+  for (struct program_space *pspace : program_spaces)
     {
       struct symbol_cache *cache;
 
@@ -1673,7 +1641,8 @@ fixup_section (struct general_symbol_inf
      e.g. on PowerPC64, where the minimal symbol for a function will
      point to the function descriptor, while the debug symbol will
      point to the actual function code.  */
-  msym = lookup_minimal_symbol_by_pc_name (addr, ginfo->name, objfile);
+  msym = lookup_minimal_symbol_by_pc_name (addr, ginfo->linkage_name (),
+					   objfile);
   if (msym)
     ginfo->section = MSYMBOL_SECTION (msym);
   else
@@ -1690,11 +1659,10 @@ fixup_section (struct general_symbol_inf
 
 	 So, instead, search the section table when lookup by name has
 	 failed.  The ``addr'' and ``endaddr'' fields may have already
-	 been relocated.  If so, the relocation offset (i.e. the
-	 ANOFFSET value) needs to be subtracted from these values when
-	 performing the comparison.  We unconditionally subtract it,
-	 because, when no relocation has been performed, the ANOFFSET
-	 value will simply be zero.
+	 been relocated.  If so, the relocation offset needs to be
+	 subtracted from these values when performing the comparison.
+	 We unconditionally subtract it, because, when no relocation
+	 has been performed, the value will simply be zero.
 
 	 The address of the symbol whose section we're fixing up HAS
 	 NOT BEEN adjusted (relocated) yet.  It can't have been since
@@ -1720,7 +1688,7 @@ fixup_section (struct general_symbol_inf
       ALL_OBJFILE_OSECTIONS (objfile, s)
 	{
 	  int idx = s - objfile->sections;
-	  CORE_ADDR offset = ANOFFSET (objfile->section_offsets, idx);
+	  CORE_ADDR offset = objfile->section_offsets[idx];
 
 	  if (fallback == -1)
 	    fallback = idx;
@@ -1798,7 +1766,7 @@ demangle_for_lookup_info::demangle_for_l
   if (lookup_name.ignore_parameters () && lang == language_cplus)
     {
       gdb::unique_xmalloc_ptr<char> without_params
-	= cp_remove_params_if_any (lookup_name.name ().c_str (),
+	= cp_remove_params_if_any (lookup_name.c_str (),
 				   lookup_name.completion_mode ());
 
       if (without_params != NULL)
@@ -1811,9 +1779,9 @@ demangle_for_lookup_info::demangle_for_l
     }
 
   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
-    m_demangled_name = lookup_name.name ();
+    m_demangled_name = lookup_name.c_str ();
   else
-    m_demangled_name = demangle_for_lookup (lookup_name.name ().c_str (),
+    m_demangled_name = demangle_for_lookup (lookup_name.c_str (),
 					    lang, storage);
 }
 
@@ -1824,7 +1792,7 @@ lookup_name_info::match_any ()
 {
   /* Lookup any symbol that "" would complete.  I.e., this matches all
      symbol names.  */
-  static const lookup_name_info lookup_name ({}, symbol_name_match_type::FULL,
+  static const lookup_name_info lookup_name ("", symbol_name_match_type::FULL,
 					     true);
 
   return lookup_name;
@@ -1862,9 +1830,9 @@ demangle_for_lookup (const char *name, e
 
       /* If we were given a non-mangled name, canonicalize it
 	 according to the language (so far only for C++).  */
-      std::string canon = cp_canonicalize_string (name);
-      if (!canon.empty ())
-	return storage.swap_string (canon);
+      gdb::unique_xmalloc_ptr<char> canon = cp_canonicalize_string (name);
+      if (canon != nullptr)
+	return storage.set_malloc_ptr (std::move (canon));
     }
   else if (lang == language_d)
     {
@@ -1887,7 +1855,7 @@ demangle_for_lookup (const char *name, e
 unsigned int
 search_name_hash (enum language language, const char *search_name)
 {
-  return language_def (language)->la_search_name_hash (search_name);
+  return language_def (language)->search_name_hash (search_name);
 }
 
 /* See symtab.h.
@@ -1949,7 +1917,7 @@ lookup_language_this (const struct langu
 
   if (symbol_lookup_debug > 1)
     {
-      struct objfile *objfile = lookup_objfile_from_block (block);
+      struct objfile *objfile = block_objfile (block);
 
       fprintf_unfiltered (gdb_stdlog,
 			  "lookup_language_this (%s, %s (objfile %s))",
@@ -1998,14 +1966,14 @@ check_field (struct type *type, const ch
   /* The type may be a stub.  */
   type = check_typedef (type);
 
-  for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
+  for (i = type->num_fields () - 1; i >= TYPE_N_BASECLASSES (type); i--)
     {
       const char *t_field_name = TYPE_FIELD_NAME (type, i);
 
       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
 	{
 	  is_a_field_of_this->type = type;
-	  is_a_field_of_this->field = &TYPE_FIELD (type, i);
+	  is_a_field_of_this->field = &type->field (i);
 	  return 1;
 	}
     }
@@ -2044,7 +2012,8 @@ lookup_symbol_aux (const char *name, sym
 
   if (symbol_lookup_debug)
     {
-      struct objfile *objfile = lookup_objfile_from_block (block);
+      struct objfile *objfile = (block == nullptr
+				 ? nullptr : block_objfile (block));
 
       fprintf_unfiltered (gdb_stdlog,
 			  "lookup_symbol_aux (%s, %s (objfile %s), %s, %s)\n",
@@ -2094,11 +2063,11 @@ lookup_symbol_aux (const char *name, sym
 	  /* I'm not really sure that type of this can ever
 	     be typedefed; just be safe.  */
 	  t = check_typedef (t);
-	  if (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
+	  if (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
 	    t = TYPE_TARGET_TYPE (t);
 
-	  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
-	      && TYPE_CODE (t) != TYPE_CODE_UNION)
+	  if (t->code () != TYPE_CODE_STRUCT
+	      && t->code () != TYPE_CODE_UNION)
 	    error (_("Internal error: `%s' is not an aggregate"),
 		   langdef->la_name_of_this);
 
@@ -2117,7 +2086,7 @@ lookup_symbol_aux (const char *name, sym
   /* Now do whatever is appropriate for LANGUAGE to look
      up static and global variables.  */
 
-  result = langdef->la_lookup_symbol_nonlocal (langdef, name, block, domain);
+  result = langdef->lookup_symbol_nonlocal (name, block, domain);
   if (result.symbol != NULL)
     {
       if (symbol_lookup_debug)
@@ -2189,32 +2158,6 @@ lookup_local_symbol (const char *name,
 
 /* See symtab.h.  */
 
-struct objfile *
-lookup_objfile_from_block (const struct block *block)
-{
-  if (block == NULL)
-    return NULL;
-
-  block = block_global_block (block);
-  /* Look through all blockvectors.  */
-  for (objfile *obj : current_program_space->objfiles ())
-    {
-      for (compunit_symtab *cust : obj->compunits ())
-	if (block == BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust),
-					GLOBAL_BLOCK))
-	  {
-	    if (obj->separate_debug_objfile_backlink)
-	      obj = obj->separate_debug_objfile_backlink;
-
-	    return obj;
-	  }
-    }
-
-  return NULL;
-}
-
-/* See symtab.h.  */
-
 struct symbol *
 lookup_symbol_in_block (const char *name, symbol_name_match_type match_type,
 			const struct block *block,
@@ -2224,7 +2167,8 @@ lookup_symbol_in_block (const char *name
 
   if (symbol_lookup_debug > 1)
     {
-      struct objfile *objfile = lookup_objfile_from_block (block);
+      struct objfile *objfile = (block == nullptr
+				 ? nullptr : block_objfile (block));
 
       fprintf_unfiltered (gdb_stdlog,
 			  "lookup_symbol_in_block (%s, %s (objfile %s), %s)",
@@ -2293,6 +2237,8 @@ lookup_symbol_in_objfile_symtabs (struct
 			  name, domain_name (domain));
     }
 
+  struct block_symbol other;
+  other.symbol = NULL;
   for (compunit_symtab *cust : objfile->compunits ())
     {
       const struct blockvector *bv;
@@ -2303,18 +2249,36 @@ lookup_symbol_in_objfile_symtabs (struct
       block = BLOCKVECTOR_BLOCK (bv, block_index);
       result.symbol = block_lookup_symbol_primary (block, name, domain);
       result.block = block;
-      if (result.symbol != NULL)
+      if (result.symbol == NULL)
+	continue;
+      if (best_symbol (result.symbol, domain))
 	{
-	  if (symbol_lookup_debug > 1)
+	  other = result;
+	  break;
+	}
+      if (symbol_matches_domain (result.symbol->language (),
+				 SYMBOL_DOMAIN (result.symbol), domain))
+	{
+	  struct symbol *better
+	    = better_symbol (other.symbol, result.symbol, domain);
+	  if (better != other.symbol)
 	    {
-	      fprintf_unfiltered (gdb_stdlog, " = %s (block %s)\n",
-				  host_address_to_string (result.symbol),
-				  host_address_to_string (block));
+	      other.symbol = better;
+	      other.block = block;
 	    }
-	  result.symbol = fixup_symbol_section (result.symbol, objfile);
-	  return result;
+	}
+    }
 
+  if (other.symbol != NULL)
+    {
+      if (symbol_lookup_debug > 1)
+	{
+	  fprintf_unfiltered (gdb_stdlog, " = %s (block %s)\n",
+			      host_address_to_string (other.symbol),
+			      host_address_to_string (other.block));
 	}
+      other.symbol = fixup_symbol_section (other.symbol, objfile);
+      return other;
     }
 
   if (symbol_lookup_debug > 1)
@@ -2437,13 +2401,12 @@ lookup_symbol_via_quick_fns (struct objf
   return result;
 }
 
-/* See symtab.h.  */
+/* See language.h.  */
 
 struct block_symbol
-basic_lookup_symbol_nonlocal (const struct language_defn *langdef,
-			      const char *name,
-			      const struct block *block,
-			      const domain_enum domain)
+language_defn::lookup_symbol_nonlocal (const char *name,
+				       const struct block *block,
+				       const domain_enum domain) const
 {
   struct block_symbol result;
 
@@ -2469,7 +2432,7 @@ basic_lookup_symbol_nonlocal (const stru
 	gdbarch = target_gdbarch ();
       else
 	gdbarch = block_gdbarch (block);
-      result.symbol = language_lookup_primitive_type_as_symbol (langdef,
+      result.symbol = language_lookup_primitive_type_as_symbol (this,
 								gdbarch, name);
       result.block = NULL;
       if (result.symbol != NULL)
@@ -2494,7 +2457,8 @@ lookup_symbol_in_static_block (const cha
 
   if (symbol_lookup_debug)
     {
-      struct objfile *objfile = lookup_objfile_from_block (static_block);
+      struct objfile *objfile = (block == nullptr
+				 ? nullptr : block_objfile (block));
 
       fprintf_unfiltered (gdb_stdlog,
 			  "lookup_symbol_in_static_block (%s, %s (objfile %s),"
@@ -2568,6 +2532,33 @@ lookup_symbol_in_objfile (struct objfile
   return result;
 }
 
+/* Find the language for partial symbol with NAME.  */
+
+static enum language
+find_quick_global_symbol_language (const char *name, const domain_enum domain)
+{
+  for (objfile *objfile : current_program_space->objfiles ())
+    {
+      if (objfile->sf && objfile->sf->qf
+	  && objfile->sf->qf->lookup_global_symbol_language)
+	continue;
+      return language_unknown;
+    }
+
+  for (objfile *objfile : current_program_space->objfiles ())
+    {
+      bool symbol_found_p;
+      enum language lang
+	= objfile->sf->qf->lookup_global_symbol_language (objfile, name, domain,
+							  &symbol_found_p);
+      if (!symbol_found_p)
+	continue;
+      return lang;
+    }
+
+  return language_unknown;
+}
+
 /* Private data to be used with lookup_symbol_global_iterator_cb.  */
 
 struct global_or_static_sym_lookup_data
@@ -2647,7 +2638,7 @@ lookup_global_or_static_symbol (const ch
       lookup_data.block_index = block_index;
       lookup_data.domain = domain;
       gdbarch_iterate_over_objfiles_in_search_order
-	(objfile != NULL ? get_objfile_arch (objfile) : target_gdbarch (),
+	(objfile != NULL ? objfile->arch () : target_gdbarch (),
 	 lookup_symbol_global_or_static_iterator_cb, &lookup_data, objfile);
       result = lookup_data.result;
     }
@@ -2679,17 +2670,30 @@ lookup_global_symbol (const char *name,
      global block first.  This yields "more expected" behavior, and is
      needed to support 'FILENAME'::VARIABLE lookups.  */
   const struct block *global_block = block_global_block (block);
+  symbol *sym = NULL;
   if (global_block != nullptr)
     {
-      symbol *sym = lookup_symbol_in_block (name,
-					    symbol_name_match_type::FULL,
-					    global_block, domain);
-      if (sym != nullptr)
+      sym = lookup_symbol_in_block (name,
+				    symbol_name_match_type::FULL,
+				    global_block, domain);
+      if (sym != NULL && best_symbol (sym, domain))
 	return { sym, global_block };
     }
 
-  struct objfile *objfile = lookup_objfile_from_block (block);
-  return lookup_global_or_static_symbol (name, GLOBAL_BLOCK, objfile, domain);
+  struct objfile *objfile = nullptr;
+  if (block != nullptr)
+    {
+      objfile = block_objfile (block);
+      if (objfile->separate_debug_objfile_backlink != nullptr)
+	objfile = objfile->separate_debug_objfile_backlink;
+    }
+
+  block_symbol bs
+    = lookup_global_or_static_symbol (name, GLOBAL_BLOCK, objfile, domain);
+  if (better_symbol (sym, bs.symbol, domain) == sym)
+    return { sym, global_block };
+  else
+    return bs;
 }
 
 bool
@@ -2717,7 +2721,7 @@ symbol_matches_domain (enum language sym
 struct type *
 lookup_transparent_type (const char *name)
 {
-  return current_language->la_lookup_transparent_type (name);
+  return current_language->lookup_transparent_type (name);
 }
 
 /* A helper for basic_lookup_transparent_type that interfaces with the
@@ -2846,8 +2850,7 @@ iterate_over_symbols (const struct block
 
   ALL_BLOCK_SYMBOLS_WITH_NAME (block, name, iter, sym)
     {
-      if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
-				 SYMBOL_DOMAIN (sym), domain))
+      if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
 	{
 	  struct block_symbol block_sym = {sym, block};
 
@@ -3167,7 +3170,17 @@ find_pc_sect_line (CORE_ADDR pc, struct
 	  ;
 	/* fall through */
 	else
-	  return find_pc_line (BMSYMBOL_VALUE_ADDRESS (mfunsym), 0);
+	  {
+	    /* Detect an obvious case of infinite recursion.  If this
+	       should occur, we'd like to know about it, so error out,
+	       fatally.  */
+	    if (BMSYMBOL_VALUE_ADDRESS (mfunsym) == pc)
+	      internal_error (__FILE__, __LINE__,
+	        _("Infinite recursion detected in find_pc_sect_line;"
+		  "please file a bug report"));
+
+	    return find_pc_line (BMSYMBOL_VALUE_ADDRESS (mfunsym), 0);
+	  }
       }
 
   symtab_and_line val;
@@ -3240,6 +3253,23 @@ find_pc_sect_line (CORE_ADDR pc, struct
 	  best = prev;
 	  best_symtab = iter_s;
 
+	  /* If during the binary search we land on a non-statement entry,
+	     scan backward through entries at the same address to see if
+	     there is an entry marked as is-statement.  In theory this
+	     duplication should have been removed from the line table
+	     during construction, this is just a double check.  If the line
+	     table has had the duplication removed then this should be
+	     pretty cheap.  */
+	  if (!best->is_stmt)
+	    {
+	      struct linetable_entry *tmp = best;
+	      while (tmp > first && (tmp - 1)->pc == tmp->pc
+		     && (tmp - 1)->line != 0 && !tmp->is_stmt)
+		--tmp;
+	      if (tmp->is_stmt)
+		best = tmp;
+	    }
+
 	  /* Discard BEST_END if it's before the PC of the current BEST.  */
 	  if (best_end <= best->pc)
 	    best_end = 0;
@@ -3270,6 +3300,7 @@ find_pc_sect_line (CORE_ADDR pc, struct
     }
   else
     {
+      val.is_stmt = best->is_stmt;
       val.symtab = best_symtab;
       val.line = best->line;
       val.pc = best->pc;
@@ -3438,7 +3469,8 @@ find_pcs_for_symtab_line (struct symtab
 	{
 	  struct linetable_entry *item = &SYMTAB_LINETABLE (symtab)->item[idx];
 
-	  if (*best_item == NULL || item->line < (*best_item)->line)
+	  if (*best_item == NULL
+	      || (item->line < (*best_item)->line && item->is_stmt))
 	    *best_item = item;
 
 	  break;
@@ -3549,6 +3581,10 @@ find_line_common (struct linetable *l, i
     {
       struct linetable_entry *item = &(l->item[i]);
 
+      /* Ignore non-statements.  */
+      if (!item->is_stmt)
+	continue;
+
       if (item->line == lineno)
 	{
 	  /* Return the first (lowest address) entry which matches.  */
@@ -3591,7 +3627,7 @@ find_function_start_sal_1 (CORE_ADDR fun
       && (COMPUNIT_LOCATIONS_VALID (SYMTAB_COMPUNIT (sal.symtab))
 	  || SYMTAB_LANGUAGE (sal.symtab) == language_asm))
     {
-      struct gdbarch *gdbarch = get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
+      struct gdbarch *gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
 
       sal.pc = func_addr;
       if (gdbarch_skip_entrypoint_p (gdbarch))
@@ -3750,7 +3786,7 @@ skip_prologue_sal (struct symtab_and_lin
       name = msymbol.minsym->linkage_name ();
     }
 
-  gdbarch = get_objfile_arch (objfile);
+  gdbarch = objfile->arch ();
 
   /* Process the prologue in two passes.  In the first pass try to skip the
      prologue (SKIP is true) and verify there is a real need for it (indicated
@@ -4484,7 +4520,7 @@ global_symbol_searcher::expand_symtabs
        {
 	 return file_matches (filename, filenames, basenames);
        },
-       lookup_name_info::match_any (),
+       &lookup_name_info::match_any (),
        [&] (const char *symname)
        {
 	 return (!preg.has_value ()
@@ -4594,7 +4630,7 @@ global_symbol_searcher::add_matching_sym
 			      members.  We only want to skip enums
 			      here.  */
 			   && !(SYMBOL_CLASS (sym) == LOC_CONST
-				&& (TYPE_CODE (SYMBOL_TYPE (sym))
+				&& (SYMBOL_TYPE (sym)->code ()
 				    == TYPE_CODE_ENUM))
 			   && (!treg.has_value ()
 			       || treg_matches_sym_type_name (*treg, sym)))
@@ -4800,7 +4836,7 @@ symbol_to_info_string (struct symbol *sy
 	 For the struct printing case below, things are worse, we force
 	 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)
+      if (SYMBOL_TYPE (sym)->code () == TYPE_CODE_TYPEDEF)
 	typedef_print (SYMBOL_TYPE (sym), sym, &tmp_stream);
       else
 	type_print (SYMBOL_TYPE (sym), "", &tmp_stream, -1);
@@ -4872,7 +4908,7 @@ print_symbol_info (enum search_domain ki
 static void
 print_msymbol_info (struct bound_minimal_symbol msymbol)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (msymbol.objfile);
+  struct gdbarch *gdbarch = msymbol.objfile->arch ();
   char *tmp;
 
   if (gdbarch_addr_bit (gdbarch) <= 32)
@@ -4972,13 +5008,13 @@ symtab_symbol_info (bool quiet, bool exc
    and 'info functions' commands.  These correspond to the -q, -t, and -n
    options.  */
 
-struct info_print_options
+struct info_vars_funcs_options
 {
   bool quiet = false;
   bool exclude_minsyms = false;
   char *type_regexp = nullptr;
 
-  ~info_print_options ()
+  ~info_vars_funcs_options ()
   {
     xfree (type_regexp);
   }
@@ -4987,24 +5023,25 @@ struct info_print_options
 /* The options used by the 'info variables' and 'info functions'
    commands.  */
 
-static const gdb::option::option_def info_print_options_defs[] = {
-  gdb::option::boolean_option_def<info_print_options> {
+static const gdb::option::option_def info_vars_funcs_options_defs[] = {
+  gdb::option::boolean_option_def<info_vars_funcs_options> {
     "q",
-    [] (info_print_options *opt) { return &opt->quiet; },
+    [] (info_vars_funcs_options *opt) { return &opt->quiet; },
     nullptr, /* show_cmd_cb */
     nullptr /* set_doc */
   },
 
-  gdb::option::boolean_option_def<info_print_options> {
+  gdb::option::boolean_option_def<info_vars_funcs_options> {
     "n",
-    [] (info_print_options *opt) { return &opt->exclude_minsyms; },
+    [] (info_vars_funcs_options *opt) { return &opt->exclude_minsyms; },
     nullptr, /* show_cmd_cb */
     nullptr /* set_doc */
   },
 
-  gdb::option::string_option_def<info_print_options> {
+  gdb::option::string_option_def<info_vars_funcs_options> {
     "t",
-    [] (info_print_options *opt) { return &opt->type_regexp; },
+    [] (info_vars_funcs_options *opt) { return &opt->type_regexp;
+  },
     nullptr, /* show_cmd_cb */
     nullptr /* set_doc */
   }
@@ -5014,20 +5051,20 @@ static const gdb::option::option_def inf
    functions'.  */
 
 static gdb::option::option_def_group
-make_info_print_options_def_group (info_print_options *opts)
+make_info_vars_funcs_options_def_group (info_vars_funcs_options *opts)
 {
-  return {{info_print_options_defs}, opts};
+  return {{info_vars_funcs_options_defs}, opts};
 }
 
 /* Command completer for 'info variables' and 'info functions'.  */
 
 static void
-info_print_command_completer (struct cmd_list_element *ignore,
-			      completion_tracker &tracker,
-			      const char *text, const char * /* word */)
+info_vars_funcs_command_completer (struct cmd_list_element *ignore,
+				   completion_tracker &tracker,
+				   const char *text, const char * /* word */)
 {
   const auto group
-    = make_info_print_options_def_group (nullptr);
+    = make_info_vars_funcs_options_def_group (nullptr);
   if (gdb::option::complete_options
       (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
     return;
@@ -5041,8 +5078,8 @@ info_print_command_completer (struct cmd
 static void
 info_variables_command (const char *args, int from_tty)
 {
-  info_print_options opts;
-  auto grp = make_info_print_options_def_group (&opts);
+  info_vars_funcs_options opts;
+  auto grp = make_info_vars_funcs_options_def_group (&opts);
   gdb::option::process_options
     (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
   if (args != nullptr && *args == '\0')
@@ -5057,8 +5094,9 @@ info_variables_command (const char *args
 static void
 info_functions_command (const char *args, int from_tty)
 {
-  info_print_options opts;
-  auto grp = make_info_print_options_def_group (&opts);
+  info_vars_funcs_options opts;
+
+  auto grp = make_info_vars_funcs_options_def_group (&opts);
   gdb::option::process_options
     (&args, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
   if (args != nullptr && *args == '\0')
@@ -5152,6 +5190,11 @@ rbreak_command (const char *regexp, int
     {
       const char *colon = strchr (regexp, ':');
 
+      /* Ignore the colon if it is part of a Windows drive.  */
+      if (HAS_DRIVE_SPEC (regexp)
+	  && (regexp[2] == '/' || regexp[2] == '\\'))
+	colon = strchr (STRIP_DRIVE_SPEC (regexp), ':');
+
       if (colon && *(colon + 1) != ':')
 	{
 	  int colon_index;
@@ -5209,14 +5252,14 @@ compare_symbol_name (const char *symbol_
   const language_defn *lang = language_def (symbol_language);
 
   symbol_name_matcher_ftype *name_match
-    = get_symbol_name_matcher (lang, lookup_name);
+    = lang->get_symbol_name_matcher (lookup_name);
 
   return name_match (symbol_name, lookup_name, &match_res);
 }
 
 /*  See symtab.h.  */
 
-void
+bool
 completion_list_add_name (completion_tracker &tracker,
 			  language symbol_language,
 			  const char *symname,
@@ -5228,7 +5271,7 @@ completion_list_add_name (completion_tra
 
   /* Clip symbols that cannot match.  */
   if (!compare_symbol_name (symname, symbol_language, lookup_name, match_res))
-    return;
+    return false;
 
   /* Refresh SYMNAME from the match string.  It's potentially
      different depending on language.  (E.g., on Ada, the match may be
@@ -5252,6 +5295,8 @@ completion_list_add_name (completion_tra
     tracker.add_completion (std::move (completion),
 			    &match_res.match_for_lcd, text, word);
   }
+
+  return true;
 }
 
 /* completion_list_add_name wrapper for struct symbol.  */
@@ -5262,9 +5307,31 @@ completion_list_add_symbol (completion_t
 			    const lookup_name_info &lookup_name,
 			    const char *text, const char *word)
 {
-  completion_list_add_name (tracker, SYMBOL_LANGUAGE (sym),
-			    sym->natural_name (),
-			    lookup_name, text, word);
+  if (!completion_list_add_name (tracker, sym->language (),
+				 sym->natural_name (),
+				 lookup_name, text, word))
+    return;
+
+  /* C++ function symbols include the parameters within both the msymbol
+     name and the symbol name.  The problem is that the msymbol name will
+     describe the parameters in the most basic way, with typedefs stripped
+     out, while the symbol name will represent the types as they appear in
+     the program.  This means we will see duplicate entries in the
+     completion tracker.  The following converts the symbol name back to
+     the msymbol name and removes the msymbol name from the completion
+     tracker.  */
+  if (sym->language () == language_cplus
+      && SYMBOL_DOMAIN (sym) == VAR_DOMAIN
+      && SYMBOL_CLASS (sym) == LOC_BLOCK)
+    {
+      /* The call to canonicalize returns the empty string if the input
+	 string is already in canonical form, thanks to this we don't
+	 remove the symbol we just added above.  */
+      gdb::unique_xmalloc_ptr<char> str
+	= cp_canonicalize_string_no_typedefs (sym->natural_name ());
+      if (str != nullptr)
+	tracker.remove_completion (str.get ());
+    }
 }
 
 /* completion_list_add_name wrapper for struct minimal_symbol.  */
@@ -5275,7 +5342,7 @@ completion_list_add_msymbol (completion_
 			     const lookup_name_info &lookup_name,
 			     const char *text, const char *word)
 {
-  completion_list_add_name (tracker, MSYMBOL_LANGUAGE (sym),
+  completion_list_add_name (tracker, sym->language (),
 			    sym->natural_name (),
 			    lookup_name, text, word);
 }
@@ -5403,13 +5470,13 @@ completion_list_add_fields (completion_t
   if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
     {
       struct type *t = SYMBOL_TYPE (sym);
-      enum type_code c = TYPE_CODE (t);
+      enum type_code c = t->code ();
       int j;
 
       if (c == TYPE_CODE_UNION || c == TYPE_CODE_STRUCT)
-	for (j = TYPE_N_BASECLASSES (t); j < TYPE_NFIELDS (t); j++)
+	for (j = TYPE_N_BASECLASSES (t); j < t->num_fields (); j++)
 	  if (TYPE_FIELD_NAME (t, j))
-	    completion_list_add_name (tracker, SYMBOL_LANGUAGE (sym),
+	    completion_list_add_name (tracker, sym->language (),
 				      TYPE_FIELD_NAME (t, j),
 				      lookup_name, text, word);
     }
@@ -5420,7 +5487,7 @@ completion_list_add_fields (completion_t
 bool
 symbol_is_function_or_method (symbol *sym)
 {
-  switch (TYPE_CODE (SYMBOL_TYPE (sym)))
+  switch (SYMBOL_TYPE (sym)->code ())
     {
     case TYPE_CODE_FUNC:
     case TYPE_CODE_METHOD:
@@ -5471,7 +5538,7 @@ find_gnu_ifunc (const symbol *sym)
 	  CORE_ADDR msym_addr = MSYMBOL_VALUE_ADDRESS (objfile, minsym);
 	  if (MSYMBOL_TYPE (minsym) == mst_data_gnu_ifunc)
 	    {
-	      struct gdbarch *gdbarch = get_objfile_arch (objfile);
+	      struct gdbarch *gdbarch = objfile->arch ();
 	      msym_addr
 		= gdbarch_convert_from_func_ptr_addr (gdbarch,
 						      msym_addr,
@@ -5520,7 +5587,7 @@ add_symtab_completions (struct compunit_
 
 	  if (code == TYPE_CODE_UNDEF
 	      || (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
-		  && TYPE_CODE (SYMBOL_TYPE (sym)) == code))
+		  && SYMBOL_TYPE (sym)->code () == code))
 	    completion_list_add_symbol (tracker, sym,
 					lookup_name,
 					text, word);
@@ -5671,7 +5738,7 @@ default_collect_symbol_completion_matche
 					    sym_text, word);
 	      }
 	    else if (SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
-		     && TYPE_CODE (SYMBOL_TYPE (sym)) == code)
+		     && SYMBOL_TYPE (sym)->code () == code)
 	      completion_list_add_symbol (tracker, sym, lookup_name,
 					  sym_text, word);
 	  }
@@ -5733,19 +5800,6 @@ default_collect_symbol_completion_matche
     }
 }
 
-void
-default_collect_symbol_completion_matches (completion_tracker &tracker,
-					   complete_symbol_mode mode,
-					   symbol_name_match_type name_match_type,
-					   const char *text, const char *word,
-					   enum type_code code)
-{
-  return default_collect_symbol_completion_matches_break_on (tracker, mode,
-							     name_match_type,
-							     text, word, "",
-							     code);
-}
-
 /* Collect all symbols (regardless of class) which begin by matching
    TEXT.  */
 
@@ -5755,10 +5809,10 @@ collect_symbol_completion_matches (compl
 				   symbol_name_match_type name_match_type,
 				   const char *text, const char *word)
 {
-  current_language->la_collect_symbol_completion_matches (tracker, mode,
-							  name_match_type,
-							  text, word,
-							  TYPE_CODE_UNDEF);
+  current_language->collect_symbol_completion_matches (tracker, mode,
+						       name_match_type,
+						       text, word,
+						       TYPE_CODE_UNDEF);
 }
 
 /* Like collect_symbol_completion_matches, but only collect
@@ -5775,9 +5829,9 @@ collect_symbol_completion_matches_type (
   gdb_assert (code == TYPE_CODE_UNION
 	      || code == TYPE_CODE_STRUCT
 	      || code == TYPE_CODE_ENUM);
-  current_language->la_collect_symbol_completion_matches (tracker, mode,
-							  name_match_type,
-							  text, word, code);
+  current_language->collect_symbol_completion_matches (tracker, mode,
+						       name_match_type,
+						       text, word, code);
 }
 
 /* Like collect_symbol_completion_matches, but collects a list of
@@ -6092,6 +6146,16 @@ find_main_name (void)
 
   /* The languages above didn't identify the name of the main procedure.
      Fallback to "main".  */
+
+  /* Try to find language for main in psymtabs.  */
+  enum language lang
+    = find_quick_global_symbol_language ("main", VAR_DOMAIN);
+  if (lang != language_unknown)
+    {
+      set_main_name ("main", lang);
+      return;
+    }
+
   set_main_name ("main", language_unknown);
 }
 
@@ -6264,42 +6328,6 @@ initialize_ordinary_address_classes (voi
 
 
 
-/* Initialize the symbol SYM, and mark it as being owned by an objfile.  */
-
-void
-initialize_objfile_symbol (struct symbol *sym)
-{
-  SYMBOL_OBJFILE_OWNED (sym) = 1;
-  SYMBOL_SECTION (sym) = -1;
-}
-
-/* Allocate and initialize a new 'struct symbol' on OBJFILE's
-   obstack.  */
-
-struct symbol *
-allocate_symbol (struct objfile *objfile)
-{
-  struct symbol *result = new (&objfile->objfile_obstack) symbol ();
-
-  initialize_objfile_symbol (result);
-
-  return result;
-}
-
-/* Allocate and initialize a new 'struct template_symbol' on OBJFILE's
-   obstack.  */
-
-struct template_symbol *
-allocate_template_symbol (struct objfile *objfile)
-{
-  struct template_symbol *result;
-
-  result = new (&objfile->objfile_obstack) template_symbol ();
-  initialize_objfile_symbol (result);
-
-  return result;
-}
-
 /* See symtab.h.  */
 
 struct objfile *
@@ -6316,7 +6344,7 @@ symbol_arch (const struct symbol *symbol
 {
   if (!SYMBOL_OBJFILE_OWNED (symbol))
     return symbol->owner.arch;
-  return get_objfile_arch (SYMTAB_OBJFILE (symbol->owner.symtab));
+  return SYMTAB_OBJFILE (symbol->owner.symtab)->arch ();
 }
 
 /* See symtab.h.  */
@@ -6349,6 +6377,9 @@ get_symbol_address (const struct symbol
 
   for (objfile *objfile : current_program_space->objfiles ())
     {
+      if (objfile->separate_debug_objfile_backlink != nullptr)
+	continue;
+
       bound_minimal_symbol minsym
 	= lookup_minimal_symbol_linkage (linkage_name, objfile);
       if (minsym.minsym != nullptr)
@@ -6369,7 +6400,8 @@ get_msymbol_address (struct objfile *obj
 
   for (objfile *objfile : current_program_space->objfiles ())
     {
-      if ((objfile->flags & OBJF_MAINLINE) != 0)
+      if (objfile->separate_debug_objfile_backlink == nullptr
+	  && (objfile->flags & OBJF_MAINLINE) != 0)
 	{
 	  bound_minimal_symbol found
 	    = lookup_minimal_symbol_linkage (linkage_name, objfile);
@@ -6377,8 +6409,7 @@ get_msymbol_address (struct objfile *obj
 	    return BMSYMBOL_VALUE_ADDRESS (found);
 	}
     }
-  return (minsym->value.address
-	  + ANOFFSET (objf->section_offsets, minsym->section));
+  return minsym->value.address + objf->section_offsets[minsym->section];
 }
 
 
@@ -6387,15 +6418,6 @@ get_msymbol_address (struct objfile *obj
 
 static struct cmd_list_element *info_module_cmdlist = NULL;
 
-/* Implement the 'info module' command, just displays some help text for
-   the available sub-commands.  */
-
-static void
-info_module_command (const char *args, int from_tty)
-{
-  help_list (info_module_cmdlist, "info module ", class_info, gdb_stdout);
-}
-
 /* See symtab.h.  */
 
 std::vector<module_symbol_search>
@@ -6691,8 +6713,9 @@ info_module_var_func_command_completer (
 
 
 
+void _initialize_symtab ();
 void
-_initialize_symtab (void)
+_initialize_symtab ()
 {
   cmd_list_element *c;
 
@@ -6705,7 +6728,7 @@ Usage: info variables [-q] [-n] [-t TYPE
 Prints the global and static variables.\n"),
 				      _("global and static variables"),
 				      true));
-  set_cmd_completer_handle_brkchars (c, info_print_command_completer);
+  set_cmd_completer_handle_brkchars (c, info_vars_funcs_command_completer);
   if (dbx_commands)
     {
       c = add_com ("whereis", class_info, info_variables_command,
@@ -6715,7 +6738,7 @@ Usage: whereis [-q] [-n] [-t TYPEREGEXP]
 Prints the global and static variables.\n"),
 					 _("global and static variables"),
 					 true));
-      set_cmd_completer_handle_brkchars (c, info_print_command_completer);
+      set_cmd_completer_handle_brkchars (c, info_vars_funcs_command_completer);
     }
 
   c = add_info ("functions", info_functions_command,
@@ -6725,7 +6748,7 @@ Usage: info functions [-q] [-n] [-t TYPE
 Prints the functions.\n"),
 				      _("functions"),
 				      true));
-  set_cmd_completer_handle_brkchars (c, info_print_command_completer);
+  set_cmd_completer_handle_brkchars (c, info_vars_funcs_command_completer);
 
   c = add_info ("types", info_types_command, _("\
 All type names, or those matching REGEXP.\n\
@@ -6753,10 +6776,10 @@ Options:\n\
 		_("All module names, or those matching REGEXP."));
   set_cmd_completer_handle_brkchars (c, info_types_command_completer);
 
-  add_prefix_cmd ("module", class_info, info_module_command, _("\
+  add_basic_prefix_cmd ("module", class_info, _("\
 Print information about modules."),
-		  &info_module_cmdlist, "info module ",
-		  0, &infolist);
+			&info_module_cmdlist, "info module ",
+			0, &infolist);
 
   c = add_cmd ("functions", class_info, info_module_functions_command, _("\
 Display functions arranged by modules.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symtab.h ./gdb/symtab.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/symtab.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/symtab.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Symbol table definitions for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -185,29 +185,58 @@ private:
 class lookup_name_info final
 {
  public:
-  /* Create a new object.  */
-  lookup_name_info (std::string name,
+  /* We delete this overload so that the callers are required to
+     explicitly handle the lifetime of the name.  */
+  lookup_name_info (std::string &&name,
+		    symbol_name_match_type match_type,
+		    bool completion_mode = false,
+		    bool ignore_parameters = false) = delete;
+
+  /* This overload requires that NAME have a lifetime at least as long
+     as the lifetime of this object.  */
+  lookup_name_info (const std::string &name,
 		    symbol_name_match_type match_type,
 		    bool completion_mode = false,
 		    bool ignore_parameters = false)
     : m_match_type (match_type),
       m_completion_mode (completion_mode),
       m_ignore_parameters (ignore_parameters),
-      m_name (std::move (name))
+      m_name (name)
+  {}
+
+  /* This overload requires that NAME have a lifetime at least as long
+     as the lifetime of this object.  */
+  lookup_name_info (const char *name,
+		    symbol_name_match_type match_type,
+		    bool completion_mode = false,
+		    bool ignore_parameters = false)
+    : m_match_type (match_type),
+      m_completion_mode (completion_mode),
+      m_ignore_parameters (ignore_parameters),
+      m_name (name)
   {}
 
   /* Getters.  See description of each corresponding field.  */
   symbol_name_match_type match_type () const { return m_match_type; }
   bool completion_mode () const { return m_completion_mode; }
-  const std::string &name () const { return m_name; }
+  gdb::string_view name () const { return m_name; }
   const bool ignore_parameters () const { return m_ignore_parameters; }
 
+  /* Like the "name" method but guarantees that the returned string is
+     \0-terminated.  */
+  const char *c_str () const
+  {
+    /* Actually this is always guaranteed due to how the class is
+       constructed.  */
+    return m_name.data ();
+  }
+
   /* Return a version of this lookup name that is usable with
      comparisons against symbols have no parameter info, such as
      psymbols and GDB index symbols.  */
   lookup_name_info make_ignore_params () const
   {
-    return lookup_name_info (m_name, m_match_type, m_completion_mode,
+    return lookup_name_info (c_str (), m_match_type, m_completion_mode,
 			     true /* ignore params */);
   }
 
@@ -218,27 +247,27 @@ class lookup_name_info final
     if (!m_demangled_hashes_p[lang])
       {
 	m_demangled_hashes[lang]
-	  = ::search_name_hash (lang, language_lookup_name (lang).c_str ());
+	  = ::search_name_hash (lang, language_lookup_name (lang));
 	m_demangled_hashes_p[lang] = true;
       }
     return m_demangled_hashes[lang];
   }
 
   /* Get the search name for searches in language LANG.  */
-  const std::string &language_lookup_name (language lang) const
+  const char *language_lookup_name (language lang) const
   {
     switch (lang)
       {
       case language_ada:
-	return ada ().lookup_name ();
+	return ada ().lookup_name ().c_str ();
       case language_cplus:
-	return cplus ().lookup_name ();
+	return cplus ().lookup_name ().c_str ();
       case language_d:
-	return d ().lookup_name ();
+	return d ().lookup_name ().c_str ();
       case language_go:
-	return go ().lookup_name ();
+	return go ().lookup_name ().c_str ();
       default:
-	return m_name;
+	return m_name.data ();
       }
   }
 
@@ -287,7 +316,7 @@ private:
   symbol_name_match_type m_match_type;
   bool m_completion_mode;
   bool m_ignore_parameters;
-  std::string m_name;
+  gdb::string_view m_name;
 
   /* Language-specific info.  These fields are filled lazily the first
      time a lookup is done in the corresponding language.  They're
@@ -389,7 +418,7 @@ struct general_symbol_info
      and linkage_name () are different.  */
 
   const char *linkage_name () const
-  { return name; }
+  { return m_name; }
 
   /* Return SYMBOL's "natural" name, i.e. the name that it was called in
      the original source code.  In languages like C++ where symbols may
@@ -419,11 +448,31 @@ struct general_symbol_info
 
   /* 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
+     e.g. struct tags.  Unlike compute_and_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; }
+  { m_name = linkage_name; }
+
+  /* Set the demangled name of this symbol to NAME.  NAME must be
+     already correctly allocated.  If the symbol's language is Ada,
+     then the name is ignored and the obstack is set.  */
+  void set_demangled_name (const char *name, struct obstack *obstack);
+
+  enum language language () const
+  { return m_language; }
+
+  /* Initializes the language dependent portion of a symbol
+     depending upon the language for the symbol.  */
+  void set_language (enum language language, struct obstack *obstack);
+
+  /* Set the linkage and natural names of a symbol, by demangling
+     the linkage name.  If linkage_name may not be nullterminated,
+     copy_name must be set to true.  */
+  void compute_and_set_names (gdb::string_view linkage_name, bool copy_name,
+			      struct objfile_per_bfd_storage *per_bfd,
+			      gdb::optional<hashval_t> hash
+			        = gdb::optional<hashval_t> ());
 
   /* Name of the symbol.  This is a required field.  Storage for the
      name is allocated on the objfile_obstack for the associated
@@ -431,7 +480,7 @@ struct general_symbol_info
      the mangled name and demangled name, this is the mangled
      name.  */
 
-  const char *name;
+  const char *m_name;
 
   /* Value of the symbol.  Which member of this union to use, and what
      it means, depends on what kind of symbol this is and its
@@ -479,7 +528,7 @@ struct general_symbol_info
      This is used to select one of the fields from the language specific
      union above.  */
 
-  ENUM_BITFIELD(language) language : LANGUAGE_BITS;
+  ENUM_BITFIELD(language) m_language : LANGUAGE_BITS;
 
   /* This is only used by Ada.  If set, then the 'demangled_name' field
      of language_specific is valid.  Otherwise, the 'obstack' field is
@@ -493,13 +542,6 @@ struct general_symbol_info
   short section;
 };
 
-extern void symbol_set_demangled_name (struct general_symbol_info *,
-				       const char *,
-                                       struct obstack *);
-
-extern const char *symbol_get_demangled_name
-  (const struct general_symbol_info *);
-
 extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, struct obj_section *);
 
 /* Return the address of SYM.  The MAYBE_COPIED flag must be set on
@@ -522,21 +564,12 @@ extern CORE_ADDR get_symbol_address (con
 #define SYMBOL_VALUE_COMMON_BLOCK(symbol) (symbol)->value.common_block
 #define SYMBOL_BLOCK_VALUE(symbol)	(symbol)->value.block
 #define SYMBOL_VALUE_CHAIN(symbol)	(symbol)->value.chain
-#define SYMBOL_LANGUAGE(symbol)		(symbol)->language
 #define SYMBOL_SECTION(symbol)		(symbol)->section
 #define SYMBOL_OBJ_SECTION(objfile, symbol)			\
   (((symbol)->section >= 0)				\
    ? (&(((objfile)->sections)[(symbol)->section]))	\
    : NULL)
 
-/* Initializes the language dependent portion of a symbol
-   depending upon the language for the symbol.  */
-#define SYMBOL_SET_LANGUAGE(symbol,language,obstack)	\
-  (symbol_set_language ((symbol), (language), (obstack)))
-extern void symbol_set_language (struct general_symbol_info *symbol,
-                                 enum language language,
-				 struct obstack *obstack);
-
 /* 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
@@ -546,18 +579,6 @@ extern void symbol_set_language (struct
 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,
-   copy_name must be set to true.  */
-#define SYMBOL_SET_NAMES(symbol,linkage_name,copy_name,objfile)	\
-  symbol_set_names ((symbol), linkage_name, copy_name, \
-		    (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,
-			      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.  */
 #define SYMBOL_MATCHES_SEARCH_NAME(symbol, name)                       \
@@ -732,7 +753,7 @@ extern CORE_ADDR get_msymbol_address (st
 #define MSYMBOL_VALUE_ADDRESS(objfile, symbol)				\
   (((symbol)->maybe_copied) ? get_msymbol_address (objfile, symbol)	\
    : ((symbol)->value.address						\
-      + ANOFFSET ((objfile)->section_offsets, ((symbol)->section))))
+      + (objfile)->section_offsets[(symbol)->section]))
 /* For a bound minsym, we can easily compute the address directly.  */
 #define BMSYMBOL_VALUE_ADDRESS(symbol) \
   MSYMBOL_VALUE_ADDRESS ((symbol).objfile, (symbol).minsym)
@@ -741,7 +762,6 @@ extern CORE_ADDR get_msymbol_address (st
 #define MSYMBOL_VALUE_BYTES(symbol)	(symbol)->value.bytes
 #define MSYMBOL_BLOCK_VALUE(symbol)	(symbol)->value.block
 #define MSYMBOL_VALUE_CHAIN(symbol)	(symbol)->value.chain
-#define MSYMBOL_LANGUAGE(symbol)	(symbol)->language
 #define MSYMBOL_SECTION(symbol)		(symbol)->section
 #define MSYMBOL_OBJ_SECTION(objfile, symbol)			\
   (((symbol)->section >= 0)				\
@@ -1087,7 +1107,7 @@ struct symbol : public general_symbol_in
     /* Class-initialization of bitfields is only allowed in C++20.  */
     : domain (UNDEF_DOMAIN),
       aclass_index (0),
-      is_objfile_owned (0),
+      is_objfile_owned (1),
       is_argument (0),
       is_inlined (0),
       maybe_copied (0),
@@ -1095,17 +1115,19 @@ struct symbol : public general_symbol_in
     {
       /* We can't use an initializer list for members of a base class, and
          general_symbol_info needs to stay a POD type.  */
-      name = nullptr;
+      m_name = nullptr;
       value.ivalue = 0;
       language_specific.obstack = nullptr;
-      language = language_unknown;
+      m_language = language_unknown;
       ada_mangled = 0;
-      section = 0;
+      section = -1;
       /* GCC 4.8.5 (on CentOS 7) does not correctly compile class-
          initialization of unions, so we initialize it manually here.  */
       owner.symtab = nullptr;
     }
 
+  symbol (const symbol &) = default;
+
   /* Data type of value */
 
   struct type *type = nullptr;
@@ -1284,7 +1306,13 @@ struct rust_vtable_symbol : public symbo
 
 struct linetable_entry
 {
+  /* The line number for this entry.  */
   int line;
+
+  /* True if this PC is a good location to place a breakpoint for LINE.  */
+  unsigned is_stmt : 1;
+
+  /* The address for this entry.  */
   CORE_ADDR pc;
 };
 
@@ -1316,30 +1344,11 @@ struct linetable
 };
 
 /* How to relocate the symbols from each section in a symbol file.
-   Each struct contains an array of offsets.
    The ordering and meaning of the offsets is file-type-dependent;
    typically it is indexed by section numbers or symbol types or
-   something like that.
-
-   To give us flexibility in changing the internal representation
-   of these offsets, the ANOFFSET macro must be used to insert and
-   extract offset values in the struct.  */
-
-struct section_offsets
-{
-  CORE_ADDR offsets[1];		/* As many as needed.  */
-};
+   something like that.  */
 
-#define	ANOFFSET(secoff, whichone) \
-  ((whichone == -1)			  \
-   ? (internal_error (__FILE__, __LINE__, \
-		      _("Section index is uninitialized")), -1) \
-   : secoff->offsets[whichone])
-
-/* The size of a section_offsets table for N sections.  */
-#define SIZEOF_N_SECTION_OFFSETS(n) \
-  (sizeof (struct section_offsets) \
-   + sizeof (((struct section_offsets *) 0)->offsets) * ((n)-1))
+typedef std::vector<CORE_ADDR> section_offsets;
 
 /* Each source file or header is represented by a struct symtab.
    The name "symtab" is historical, another name for it is "filetab".
@@ -1533,6 +1542,13 @@ extern struct symtab *
 
 extern enum language compunit_language (const struct compunit_symtab *cust);
 
+/* Return true if this symtab is the "main" symtab of its compunit_symtab.  */
+
+static inline bool
+is_main_symtab_of_compunit_symtab (struct symtab *symtab)
+{
+  return symtab == COMPUNIT_FILETABS (SYMTAB_COMPUNIT (symtab));
+}
 
 
 /* The virtual function table is now an array of structures which have the
@@ -1628,16 +1644,6 @@ extern struct block_symbol lookup_symbol
 						      const struct block *block,
 						      domain_enum domain);
 
-/* A default version of lookup_symbol_nonlocal for use by languages
-   that can't think of anything better to do.
-   This implements the C lookup rules.  */
-
-extern struct block_symbol
-  basic_lookup_symbol_nonlocal (const struct language_defn *langdef,
-				const char *,
-				const struct block *,
-				const domain_enum);
-
 /* Some helper functions for languages that need to write their own
    lookup_symbol_nonlocal functions.  */
 
@@ -1763,6 +1769,14 @@ extern bool find_pc_partial_function (CO
 				      CORE_ADDR *address, CORE_ADDR *endaddr,
 				      const struct block **block = nullptr);
 
+/* Like find_pc_partial_function, above, but returns the underlying
+   general_symbol_info (rather than the name) as an out parameter.  */
+
+extern bool find_pc_partial_function_sym
+  (CORE_ADDR pc, const general_symbol_info **sym,
+   CORE_ADDR *address, CORE_ADDR *endaddr,
+   const struct block **block = nullptr);
+
 /* Like find_pc_partial_function, above, but *ADDRESS and *ENDADDR are
    set to start and end addresses of the range containing the entry pc.
 
@@ -1879,6 +1893,10 @@ struct symtab_and_line
   bool explicit_pc = false;
   bool explicit_line = false;
 
+  /* If the line number information is valid, then this indicates if this
+     line table entry had the is-stmt flag set or not.  */
+  bool is_stmt = false;
+
   /* The probe associated with this symtab_and_line.  */
   probe *prob = NULL;
   /* If PROBE is not NULL, then this is the objfile in which the probe
@@ -1932,13 +1950,6 @@ extern void default_collect_symbol_compl
    symbol_name_match_type name_match_type,
    const char *text, const char *word, const char *break_on,
    enum type_code code);
-extern void default_collect_symbol_completion_matches
-  (completion_tracker &tracker,
-   complete_symbol_mode,
-   symbol_name_match_type name_match_type,
-   const char *,
-   const char *,
-   enum type_code);
 extern void collect_symbol_completion_matches
   (completion_tracker &tracker,
    complete_symbol_mode mode,
@@ -2218,10 +2229,6 @@ bool producer_is_realview (const char *p
 void fixup_section (struct general_symbol_info *ginfo,
 		    CORE_ADDR addr, struct objfile *objfile);
 
-/* Look up objfile containing BLOCK.  */
-
-struct objfile *lookup_objfile_from_block (const struct block *block);
-
 extern unsigned int symtab_create_debug;
 
 extern unsigned int symbol_lookup_debug;
@@ -2281,20 +2288,18 @@ bool iterate_over_symbols_terminated
 /* Storage type used by demangle_for_lookup.  demangle_for_lookup
    either returns a const char * pointer that points to either of the
    fields of this type, or a pointer to the input NAME.  This is done
-   this way because the underlying functions that demangle_for_lookup
-   calls either return a std::string (e.g., cp_canonicalize_string) or
-   a malloc'ed buffer (libiberty's demangled), and we want to avoid
-   unnecessary reallocation/string copying.  */
+   this way to avoid depending on the precise details of the storage
+   for the string.  */
 class demangle_result_storage
 {
 public:
 
-  /* Swap the std::string storage with STR, and return a pointer to
-     the beginning of the new string.  */
-  const char *swap_string (std::string &str)
+  /* Swap the malloc storage to STR, and return a pointer to the
+     beginning of the new string.  */
+  const char *set_malloc_ptr (gdb::unique_xmalloc_ptr<char> &&str)
   {
-    std::swap (m_string, str);
-    return m_string.c_str ();
+    m_malloc = std::move (str);
+    return m_malloc.get ();
   }
 
   /* Set the malloc storage to now point at PTR.  Any previous malloc
@@ -2308,7 +2313,6 @@ public:
 private:
 
   /* The storage.  */
-  std::string m_string;
   gdb::unique_xmalloc_ptr<char> m_malloc;
 };
 
@@ -2316,17 +2320,12 @@ const char *
   demangle_for_lookup (const char *name, enum language lang,
 		       demangle_result_storage &storage);
 
-struct symbol *allocate_symbol (struct objfile *);
-
-void initialize_objfile_symbol (struct symbol *);
-
-struct template_symbol *allocate_template_symbol (struct objfile *);
-
 /* Test to see if the symbol of language SYMBOL_LANGUAGE specified by
    SYMNAME (which is already demangled for C++ symbols) matches
    SYM_TEXT in the first SYM_TEXT_LEN characters.  If so, add it to
-   the current completion list.  */
-void completion_list_add_name (completion_tracker &tracker,
+   the current completion list and return true.  Otherwise, return
+   false.  */
+bool completion_list_add_name (completion_tracker &tracker,
 			       language symbol_language,
 			       const char *symname,
 			       const lookup_name_info &lookup_name,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/aarch64-linux.xml ./gdb/syscalls/aarch64-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/aarch64-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/aarch64-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/aarch64-linux.xml.in ./gdb/syscalls/aarch64-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/aarch64-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/aarch64-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2015-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/amd64-linux.xml ./gdb/syscalls/amd64-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/amd64-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/amd64-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/amd64-linux.xml.in ./gdb/syscalls/amd64-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/amd64-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/amd64-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/apply-defaults.xsl ./gdb/syscalls/apply-defaults.xsl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/apply-defaults.xsl	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/apply-defaults.xsl	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <!-- Generate syscall XML files based on defaults template.
-     Copyright (C) 2016-2020 Free Software Foundation, Inc.
+     Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
      This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/arm-linux.py ./gdb/syscalls/arm-linux.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/arm-linux.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/arm-linux.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
 # Copying and distribution of this file, with or without modification,
 # are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/arm-linux.xml ./gdb/syscalls/arm-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/arm-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/arm-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/arm-linux.xml.in ./gdb/syscalls/arm-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/arm-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/arm-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/bfin-linux.xml.in ./gdb/syscalls/bfin-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/bfin-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/bfin-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/freebsd.xml ./gdb/syscalls/freebsd.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/freebsd.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/freebsd.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?> <!-- THIS FILE IS GENERATED -*- buffer-read-only: t -*-  -->
 <!-- vi:set ro: -->
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
@@ -390,7 +390,7 @@
   <syscall name="truncate" number="479"/>
   <syscall name="ftruncate" number="480"/>
   <syscall name="thr_kill2" number="481"/>
-  <syscall name="shm_open" number="482"/>
+  <syscall name="freebsd12_shm_open" number="482" alias="shm_open"/>
   <syscall name="shm_unlink" number="483"/>
   <syscall name="cpuset" number="484"/>
   <syscall name="cpuset_setid" number="485"/>
@@ -417,7 +417,7 @@
   <syscall name="jail_get" number="506"/>
   <syscall name="jail_set" number="507"/>
   <syscall name="jail_remove" number="508"/>
-  <syscall name="closefrom" number="509"/>
+  <syscall name="freebsd12_closefrom" number="509" alias="closefrom"/>
   <syscall name="__semctl" number="510"/>
   <syscall name="msgctl" number="511"/>
   <syscall name="shmctl" number="512"/>
@@ -471,4 +471,17 @@
   <syscall name="cpuset_getdomain" number="561"/>
   <syscall name="cpuset_setdomain" number="562"/>
   <syscall name="getrandom" number="563"/>
+  <syscall name="getfhat" number="564"/>
+  <syscall name="fhlink" number="565"/>
+  <syscall name="fhlinkat" number="566"/>
+  <syscall name="fhreadlink" number="567"/>
+  <syscall name="funlinkat" number="568"/>
+  <syscall name="copy_file_range" number="569"/>
+  <syscall name="__sysctlbyname" number="570"/>
+  <syscall name="shm_open2" number="571"/>
+  <syscall name="shm_rename" number="572"/>
+  <syscall name="sigfastblock" number="573"/>
+  <syscall name="__realpathat" number="574"/>
+  <syscall name="close_range" number="575"/>
+  <syscall name="rpctls_syscall" number="576"/>
 </syscalls_info>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/gdb-syscalls.dtd ./gdb/syscalls/gdb-syscalls.dtd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/gdb-syscalls.dtd	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/gdb-syscalls.dtd	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/i386-linux.xml ./gdb/syscalls/i386-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/i386-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/i386-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/i386-linux.xml.in ./gdb/syscalls/i386-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/i386-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/i386-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/linux-defaults.xml.in ./gdb/syscalls/linux-defaults.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/linux-defaults.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/linux-defaults.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-n32-linux.xml ./gdb/syscalls/mips-n32-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-n32-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/mips-n32-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2011-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-n32-linux.xml.in ./gdb/syscalls/mips-n32-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-n32-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/mips-n32-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2011-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-n64-linux.xml ./gdb/syscalls/mips-n64-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-n64-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/mips-n64-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2011-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-n64-linux.xml.in ./gdb/syscalls/mips-n64-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-n64-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/mips-n64-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2011-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-o32-linux.xml ./gdb/syscalls/mips-o32-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-o32-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/mips-o32-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2011-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-o32-linux.xml.in ./gdb/syscalls/mips-o32-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/mips-o32-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/mips-o32-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2011-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/netbsd.xml ./gdb/syscalls/netbsd.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/netbsd.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/syscalls/netbsd.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,461 @@
+<?xml version="1.0"?> <!-- THIS FILE IS GENERATED -*- buffer-read-only: t -*-  -->
+<!-- vi:set ro: -->
+<!-- Copyright (C) 2020-2021 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd">
+
+<!-- This file was generated using the following file:
+
+     /usr/src/sys/sys/syscall.h
+
+     The file mentioned above belongs to the NetBSD Kernel.  -->
+
+<syscalls_info>
+  <syscall name="exit" number="1"/>
+  <syscall name="fork" number="2"/>
+  <syscall name="read" number="3"/>
+  <syscall name="write" number="4"/>
+  <syscall name="open" number="5"/>
+  <syscall name="close" number="6"/>
+  <syscall name="compat_50_wait4" number="7"/>
+  <syscall name="compat_43_ocreat" number="8"/>
+  <syscall name="link" number="9"/>
+  <syscall name="unlink" number="10"/>
+  <syscall name="execv" number="11"/>
+  <syscall name="chdir" number="12"/>
+  <syscall name="fchdir" number="13"/>
+  <syscall name="compat_50_mknod" number="14"/>
+  <syscall name="chmod" number="15"/>
+  <syscall name="chown" number="16"/>
+  <syscall name="break" number="17"/>
+  <syscall name="compat_20_getfsstat" number="18"/>
+  <syscall name="compat_43_olseek" number="19"/>
+  <syscall name="getpid" number="20"/>
+  <syscall name="compat_40_mount" number="21"/>
+  <syscall name="unmount" number="22"/>
+  <syscall name="setuid" number="23"/>
+  <syscall name="getuid" number="24"/>
+  <syscall name="geteuid" number="25"/>
+  <syscall name="ptrace" number="26"/>
+  <syscall name="recvmsg" number="27"/>
+  <syscall name="sendmsg" number="28"/>
+  <syscall name="recvfrom" number="29"/>
+  <syscall name="accept" number="30"/>
+  <syscall name="getpeername" number="31"/>
+  <syscall name="getsockname" number="32"/>
+  <syscall name="access" number="33"/>
+  <syscall name="chflags" number="34"/>
+  <syscall name="fchflags" number="35"/>
+  <syscall name="sync" number="36"/>
+  <syscall name="kill" number="37"/>
+  <syscall name="compat_43_stat43" number="38"/>
+  <syscall name="getppid" number="39"/>
+  <syscall name="compat_43_lstat43" number="40"/>
+  <syscall name="dup" number="41"/>
+  <syscall name="pipe" number="42"/>
+  <syscall name="getegid" number="43"/>
+  <syscall name="profil" number="44"/>
+  <syscall name="ktrace" number="45"/>
+  <syscall name="compat_13_sigaction13" number="46"/>
+  <syscall name="getgid" number="47"/>
+  <syscall name="compat_13_sigprocmask13" number="48"/>
+  <syscall name="__getlogin" number="49"/>
+  <syscall name="__setlogin" number="50"/>
+  <syscall name="acct" number="51"/>
+  <syscall name="compat_13_sigpending13" number="52"/>
+  <syscall name="compat_13_sigaltstack13" number="53"/>
+  <syscall name="ioctl" number="54"/>
+  <syscall name="compat_12_oreboot" number="55"/>
+  <syscall name="revoke" number="56"/>
+  <syscall name="symlink" number="57"/>
+  <syscall name="readlink" number="58"/>
+  <syscall name="execve" number="59"/>
+  <syscall name="umask" number="60"/>
+  <syscall name="chroot" number="61"/>
+  <syscall name="compat_43_fstat43" number="62"/>
+  <syscall name="compat_43_ogetkerninfo" number="63"/>
+  <syscall name="compat_43_ogetpagesize" number="64"/>
+  <syscall name="compat_12_msync" number="65"/>
+  <syscall name="vfork" number="66"/>
+  <syscall name="vread" number="67"/>
+  <syscall name="vwrite" number="68"/>
+  <syscall name="sbrk" number="69"/>
+  <syscall name="sstk" number="70"/>
+  <syscall name="compat_43_ommap" number="71"/>
+  <syscall name="vadvise" number="72"/>
+  <syscall name="munmap" number="73"/>
+  <syscall name="mprotect" number="74"/>
+  <syscall name="madvise" number="75"/>
+  <syscall name="vhangup" number="76"/>
+  <syscall name="vlimit" number="77"/>
+  <syscall name="mincore" number="78"/>
+  <syscall name="getgroups" number="79"/>
+  <syscall name="setgroups" number="80"/>
+  <syscall name="getpgrp" number="81"/>
+  <syscall name="setpgid" number="82"/>
+  <syscall name="compat_50_setitimer" number="83"/>
+  <syscall name="compat_43_owait" number="84"/>
+  <syscall name="compat_12_oswapon" number="85"/>
+  <syscall name="compat_50_getitimer" number="86"/>
+  <syscall name="compat_43_ogethostname" number="87"/>
+  <syscall name="compat_43_osethostname" number="88"/>
+  <syscall name="compat_43_ogetdtablesize" number="89"/>
+  <syscall name="dup2" number="90"/>
+  <syscall name="fcntl" number="92"/>
+  <syscall name="compat_50_select" number="93"/>
+  <syscall name="fsync" number="95"/>
+  <syscall name="setpriority" number="96"/>
+  <syscall name="compat_30_socket" number="97"/>
+  <syscall name="connect" number="98"/>
+  <syscall name="compat_43_oaccept" number="99"/>
+  <syscall name="getpriority" number="100"/>
+  <syscall name="compat_43_osend" number="101"/>
+  <syscall name="compat_43_orecv" number="102"/>
+  <syscall name="compat_13_sigreturn13" number="103"/>
+  <syscall name="bind" number="104"/>
+  <syscall name="setsockopt" number="105"/>
+  <syscall name="listen" number="106"/>
+  <syscall name="vtimes" number="107"/>
+  <syscall name="compat_43_osigvec" number="108"/>
+  <syscall name="compat_43_osigblock" number="109"/>
+  <syscall name="compat_43_osigsetmask" number="110"/>
+  <syscall name="compat_13_sigsuspend13" number="111"/>
+  <syscall name="compat_43_osigstack" number="112"/>
+  <syscall name="compat_43_orecvmsg" number="113"/>
+  <syscall name="compat_43_osendmsg" number="114"/>
+  <syscall name="vtrace" number="115"/>
+  <syscall name="compat_50_gettimeofday" number="116"/>
+  <syscall name="compat_50_getrusage" number="117"/>
+  <syscall name="getsockopt" number="118"/>
+  <syscall name="resuba" number="119"/>
+  <syscall name="readv" number="120"/>
+  <syscall name="writev" number="121"/>
+  <syscall name="compat_50_settimeofday" number="122"/>
+  <syscall name="fchown" number="123"/>
+  <syscall name="fchmod" number="124"/>
+  <syscall name="compat_43_orecvfrom" number="125"/>
+  <syscall name="setreuid" number="126"/>
+  <syscall name="setregid" number="127"/>
+  <syscall name="rename" number="128"/>
+  <syscall name="compat_43_otruncate" number="129"/>
+  <syscall name="compat_43_oftruncate" number="130"/>
+  <syscall name="flock" number="131"/>
+  <syscall name="mkfifo" number="132"/>
+  <syscall name="sendto" number="133"/>
+  <syscall name="shutdown" number="134"/>
+  <syscall name="socketpair" number="135"/>
+  <syscall name="mkdir" number="136"/>
+  <syscall name="rmdir" number="137"/>
+  <syscall name="compat_50_utimes" number="138"/>
+  <syscall name="compat_50_adjtime" number="140"/>
+  <syscall name="compat_43_ogetpeername" number="141"/>
+  <syscall name="compat_43_ogethostid" number="142"/>
+  <syscall name="compat_43_osethostid" number="143"/>
+  <syscall name="compat_43_ogetrlimit" number="144"/>
+  <syscall name="compat_43_osetrlimit" number="145"/>
+  <syscall name="compat_43_okillpg" number="146"/>
+  <syscall name="setsid" number="147"/>
+  <syscall name="compat_50_quotactl" number="148"/>
+  <syscall name="compat_43_oquota" number="149"/>
+  <syscall name="compat_43_ogetsockname" number="150"/>
+  <syscall name="nfssvc" number="155"/>
+  <syscall name="compat_43_ogetdirentries" number="156"/>
+  <syscall name="compat_20_statfs" number="157"/>
+  <syscall name="compat_20_fstatfs" number="158"/>
+  <syscall name="compat_30_getfh" number="161"/>
+  <syscall name="compat_09_ogetdomainname" number="162"/>
+  <syscall name="compat_09_osetdomainname" number="163"/>
+  <syscall name="compat_09_ouname" number="164"/>
+  <syscall name="sysarch" number="165"/>
+  <syscall name="compat_10_osemsys" number="169"/>
+  <syscall name="compat_10_omsgsys" number="170"/>
+  <syscall name="compat_10_oshmsys" number="171"/>
+  <syscall name="pread" number="173"/>
+  <syscall name="pwrite" number="174"/>
+  <syscall name="compat_30_ntp_gettime" number="175"/>
+  <syscall name="ntp_adjtime" number="176"/>
+  <syscall name="setgid" number="181"/>
+  <syscall name="setegid" number="182"/>
+  <syscall name="seteuid" number="183"/>
+  <syscall name="lfs_bmapv" number="184"/>
+  <syscall name="lfs_markv" number="185"/>
+  <syscall name="lfs_segclean" number="186"/>
+  <syscall name="compat_50_lfs_segwait" number="187"/>
+  <syscall name="compat_12_stat12" number="188"/>
+  <syscall name="compat_12_fstat12" number="189"/>
+  <syscall name="compat_12_lstat12" number="190"/>
+  <syscall name="pathconf" number="191"/>
+  <syscall name="fpathconf" number="192"/>
+  <syscall name="getsockopt2" number="193"/>
+  <syscall name="getrlimit" number="194"/>
+  <syscall name="setrlimit" number="195"/>
+  <syscall name="compat_12_getdirentries" number="196"/>
+  <syscall name="mmap" number="197"/>
+  <syscall name="lseek" number="199"/>
+  <syscall name="truncate" number="200"/>
+  <syscall name="ftruncate" number="201"/>
+  <syscall name="__sysctl" number="202"/>
+  <syscall name="mlock" number="203"/>
+  <syscall name="munlock" number="204"/>
+  <syscall name="undelete" number="205"/>
+  <syscall name="compat_50_futimes" number="206"/>
+  <syscall name="getpgid" number="207"/>
+  <syscall name="reboot" number="208"/>
+  <syscall name="poll" number="209"/>
+  <syscall name="afssys" number="210"/>
+  <syscall name="compat_14___semctl" number="220"/>
+  <syscall name="semget" number="221"/>
+  <syscall name="semop" number="222"/>
+  <syscall name="semconfig" number="223"/>
+  <syscall name="compat_14_msgctl" number="224"/>
+  <syscall name="msgget" number="225"/>
+  <syscall name="msgsnd" number="226"/>
+  <syscall name="msgrcv" number="227"/>
+  <syscall name="shmat" number="228"/>
+  <syscall name="compat_14_shmctl" number="229"/>
+  <syscall name="shmdt" number="230"/>
+  <syscall name="shmget" number="231"/>
+  <syscall name="compat_50_clock_gettime" number="232"/>
+  <syscall name="compat_50_clock_settime" number="233"/>
+  <syscall name="compat_50_clock_getres" number="234"/>
+  <syscall name="timer_create" number="235"/>
+  <syscall name="timer_delete" number="236"/>
+  <syscall name="compat_50_timer_settime" number="237"/>
+  <syscall name="compat_50_timer_gettime" number="238"/>
+  <syscall name="timer_getoverrun" number="239"/>
+  <syscall name="compat_50_nanosleep" number="240"/>
+  <syscall name="fdatasync" number="241"/>
+  <syscall name="mlockall" number="242"/>
+  <syscall name="munlockall" number="243"/>
+  <syscall name="compat_50___sigtimedwait" number="244"/>
+  <syscall name="sigqueueinfo" number="245"/>
+  <syscall name="modctl" number="246"/>
+  <syscall name="_ksem_init" number="247"/>
+  <syscall name="_ksem_open" number="248"/>
+  <syscall name="_ksem_unlink" number="249"/>
+  <syscall name="_ksem_close" number="250"/>
+  <syscall name="_ksem_post" number="251"/>
+  <syscall name="_ksem_wait" number="252"/>
+  <syscall name="_ksem_trywait" number="253"/>
+  <syscall name="_ksem_getvalue" number="254"/>
+  <syscall name="_ksem_destroy" number="255"/>
+  <syscall name="_ksem_timedwait" number="256"/>
+  <syscall name="mq_open" number="257"/>
+  <syscall name="mq_close" number="258"/>
+  <syscall name="mq_unlink" number="259"/>
+  <syscall name="mq_getattr" number="260"/>
+  <syscall name="mq_setattr" number="261"/>
+  <syscall name="mq_notify" number="262"/>
+  <syscall name="mq_send" number="263"/>
+  <syscall name="mq_receive" number="264"/>
+  <syscall name="compat_50_mq_timedsend" number="265"/>
+  <syscall name="compat_50_mq_timedreceive" number="266"/>
+  <syscall name="__posix_rename" number="270"/>
+  <syscall name="swapctl" number="271"/>
+  <syscall name="compat_30_getdents" number="272"/>
+  <syscall name="minherit" number="273"/>
+  <syscall name="lchmod" number="274"/>
+  <syscall name="lchown" number="275"/>
+  <syscall name="compat_50_lutimes" number="276"/>
+  <syscall name="__msync13" number="277"/>
+  <syscall name="compat_30___stat13" number="278"/>
+  <syscall name="compat_30___fstat13" number="279"/>
+  <syscall name="compat_30___lstat13" number="280"/>
+  <syscall name="__sigaltstack14" number="281"/>
+  <syscall name="__vfork14" number="282"/>
+  <syscall name="__posix_chown" number="283"/>
+  <syscall name="__posix_fchown" number="284"/>
+  <syscall name="__posix_lchown" number="285"/>
+  <syscall name="getsid" number="286"/>
+  <syscall name="__clone" number="287"/>
+  <syscall name="fktrace" number="288"/>
+  <syscall name="preadv" number="289"/>
+  <syscall name="pwritev" number="290"/>
+  <syscall name="compat_16___sigaction14" number="291"/>
+  <syscall name="__sigpending14" number="292"/>
+  <syscall name="__sigprocmask14" number="293"/>
+  <syscall name="__sigsuspend14" number="294"/>
+  <syscall name="compat_16___sigreturn14" number="295"/>
+  <syscall name="__getcwd" number="296"/>
+  <syscall name="fchroot" number="297"/>
+  <syscall name="compat_30_fhopen" number="298"/>
+  <syscall name="compat_30_fhstat" number="299"/>
+  <syscall name="compat_20_fhstatfs" number="300"/>
+  <syscall name="compat_50_____semctl13" number="301"/>
+  <syscall name="compat_50___msgctl13" number="302"/>
+  <syscall name="compat_50___shmctl13" number="303"/>
+  <syscall name="lchflags" number="304"/>
+  <syscall name="issetugid" number="305"/>
+  <syscall name="utrace" number="306"/>
+  <syscall name="getcontext" number="307"/>
+  <syscall name="setcontext" number="308"/>
+  <syscall name="_lwp_create" number="309"/>
+  <syscall name="_lwp_exit" number="310"/>
+  <syscall name="_lwp_self" number="311"/>
+  <syscall name="_lwp_wait" number="312"/>
+  <syscall name="_lwp_suspend" number="313"/>
+  <syscall name="_lwp_continue" number="314"/>
+  <syscall name="_lwp_wakeup" number="315"/>
+  <syscall name="_lwp_getprivate" number="316"/>
+  <syscall name="_lwp_setprivate" number="317"/>
+  <syscall name="_lwp_kill" number="318"/>
+  <syscall name="_lwp_detach" number="319"/>
+  <syscall name="compat_50__lwp_park" number="320"/>
+  <syscall name="_lwp_unpark" number="321"/>
+  <syscall name="_lwp_unpark_all" number="322"/>
+  <syscall name="_lwp_setname" number="323"/>
+  <syscall name="_lwp_getname" number="324"/>
+  <syscall name="_lwp_ctl" number="325"/>
+  <syscall name="_lwp_gettid" number="326"/>
+  <syscall name="compat_60_sa_register" number="330"/>
+  <syscall name="compat_60_sa_stacks" number="331"/>
+  <syscall name="compat_60_sa_enable" number="332"/>
+  <syscall name="compat_60_sa_setconcurrency" number="333"/>
+  <syscall name="compat_60_sa_yield" number="334"/>
+  <syscall name="compat_60_sa_preempt" number="335"/>
+  <syscall name="sys_sa_unblockyield" number="336"/>
+  <syscall name="__sigaction_sigtramp" number="340"/>
+  <syscall name="sys_pmc_get_info" number="341"/>
+  <syscall name="sys_pmc_control" number="342"/>
+  <syscall name="rasctl" number="343"/>
+  <syscall name="kqueue" number="344"/>
+  <syscall name="compat_50_kevent" number="345"/>
+  <syscall name="_sched_setparam" number="346"/>
+  <syscall name="_sched_getparam" number="347"/>
+  <syscall name="_sched_setaffinity" number="348"/>
+  <syscall name="_sched_getaffinity" number="349"/>
+  <syscall name="sched_yield" number="350"/>
+  <syscall name="_sched_protect" number="351"/>
+  <syscall name="fsync_range" number="354"/>
+  <syscall name="uuidgen" number="355"/>
+  <syscall name="compat_90_getvfsstat" number="356"/>
+  <syscall name="compat_90_statvfs1" number="357"/>
+  <syscall name="compat_90_fstatvfs1" number="358"/>
+  <syscall name="compat_30_fhstatvfs1" number="359"/>
+  <syscall name="extattrctl" number="360"/>
+  <syscall name="extattr_set_file" number="361"/>
+  <syscall name="extattr_get_file" number="362"/>
+  <syscall name="extattr_delete_file" number="363"/>
+  <syscall name="extattr_set_fd" number="364"/>
+  <syscall name="extattr_get_fd" number="365"/>
+  <syscall name="extattr_delete_fd" number="366"/>
+  <syscall name="extattr_set_link" number="367"/>
+  <syscall name="extattr_get_link" number="368"/>
+  <syscall name="extattr_delete_link" number="369"/>
+  <syscall name="extattr_list_fd" number="370"/>
+  <syscall name="extattr_list_file" number="371"/>
+  <syscall name="extattr_list_link" number="372"/>
+  <syscall name="compat_50_pselect" number="373"/>
+  <syscall name="compat_50_pollts" number="374"/>
+  <syscall name="setxattr" number="375"/>
+  <syscall name="lsetxattr" number="376"/>
+  <syscall name="fsetxattr" number="377"/>
+  <syscall name="getxattr" number="378"/>
+  <syscall name="lgetxattr" number="379"/>
+  <syscall name="fgetxattr" number="380"/>
+  <syscall name="listxattr" number="381"/>
+  <syscall name="llistxattr" number="382"/>
+  <syscall name="flistxattr" number="383"/>
+  <syscall name="removexattr" number="384"/>
+  <syscall name="lremovexattr" number="385"/>
+  <syscall name="fremovexattr" number="386"/>
+  <syscall name="compat_50___stat30" number="387"/>
+  <syscall name="compat_50___fstat30" number="388"/>
+  <syscall name="compat_50___lstat30" number="389"/>
+  <syscall name="__getdents30" number="390"/>
+  <syscall name="compat_30___fhstat30" number="392"/>
+  <syscall name="compat_50___ntp_gettime30" number="393"/>
+  <syscall name="__socket30" number="394"/>
+  <syscall name="__getfh30" number="395"/>
+  <syscall name="__fhopen40" number="396"/>
+  <syscall name="compat_90_fhstatvfs1" number="397"/>
+  <syscall name="compat_50___fhstat40" number="398"/>
+  <syscall name="aio_cancel" number="399"/>
+  <syscall name="aio_error" number="400"/>
+  <syscall name="aio_fsync" number="401"/>
+  <syscall name="aio_read" number="402"/>
+  <syscall name="aio_return" number="403"/>
+  <syscall name="compat_50_aio_suspend" number="404"/>
+  <syscall name="aio_write" number="405"/>
+  <syscall name="lio_listio" number="406"/>
+  <syscall name="__mount50" number="410"/>
+  <syscall name="mremap" number="411"/>
+  <syscall name="pset_create" number="412"/>
+  <syscall name="pset_destroy" number="413"/>
+  <syscall name="pset_assign" number="414"/>
+  <syscall name="_pset_bind" number="415"/>
+  <syscall name="__posix_fadvise50" number="416"/>
+  <syscall name="__select50" number="417"/>
+  <syscall name="__gettimeofday50" number="418"/>
+  <syscall name="__settimeofday50" number="419"/>
+  <syscall name="__utimes50" number="420"/>
+  <syscall name="__adjtime50" number="421"/>
+  <syscall name="__lfs_segwait50" number="422"/>
+  <syscall name="__futimes50" number="423"/>
+  <syscall name="__lutimes50" number="424"/>
+  <syscall name="__setitimer50" number="425"/>
+  <syscall name="__getitimer50" number="426"/>
+  <syscall name="__clock_gettime50" number="427"/>
+  <syscall name="__clock_settime50" number="428"/>
+  <syscall name="__clock_getres50" number="429"/>
+  <syscall name="__nanosleep50" number="430"/>
+  <syscall name="____sigtimedwait50" number="431"/>
+  <syscall name="__mq_timedsend50" number="432"/>
+  <syscall name="__mq_timedreceive50" number="433"/>
+  <syscall name="compat_60__lwp_park" number="434"/>
+  <syscall name="__kevent50" number="435"/>
+  <syscall name="__pselect50" number="436"/>
+  <syscall name="__pollts50" number="437"/>
+  <syscall name="__aio_suspend50" number="438"/>
+  <syscall name="__stat50" number="439"/>
+  <syscall name="__fstat50" number="440"/>
+  <syscall name="__lstat50" number="441"/>
+  <syscall name="____semctl50" number="442"/>
+  <syscall name="__shmctl50" number="443"/>
+  <syscall name="__msgctl50" number="444"/>
+  <syscall name="__getrusage50" number="445"/>
+  <syscall name="__timer_settime50" number="446"/>
+  <syscall name="__timer_gettime50" number="447"/>
+  <syscall name="__ntp_gettime50" number="448"/>
+  <syscall name="__wait450" number="449"/>
+  <syscall name="__mknod50" number="450"/>
+  <syscall name="__fhstat50" number="451"/>
+  <syscall name="pipe2" number="453"/>
+  <syscall name="dup3" number="454"/>
+  <syscall name="kqueue1" number="455"/>
+  <syscall name="paccept" number="456"/>
+  <syscall name="linkat" number="457"/>
+  <syscall name="renameat" number="458"/>
+  <syscall name="mkfifoat" number="459"/>
+  <syscall name="mknodat" number="460"/>
+  <syscall name="mkdirat" number="461"/>
+  <syscall name="faccessat" number="462"/>
+  <syscall name="fchmodat" number="463"/>
+  <syscall name="fchownat" number="464"/>
+  <syscall name="fexecve" number="465"/>
+  <syscall name="fstatat" number="466"/>
+  <syscall name="utimensat" number="467"/>
+  <syscall name="openat" number="468"/>
+  <syscall name="readlinkat" number="469"/>
+  <syscall name="symlinkat" number="470"/>
+  <syscall name="unlinkat" number="471"/>
+  <syscall name="futimens" number="472"/>
+  <syscall name="__quotactl" number="473"/>
+  <syscall name="posix_spawn" number="474"/>
+  <syscall name="recvmmsg" number="475"/>
+  <syscall name="sendmmsg" number="476"/>
+  <syscall name="clock_nanosleep" number="477"/>
+  <syscall name="___lwp_park60" number="478"/>
+  <syscall name="posix_fallocate" number="479"/>
+  <syscall name="fdiscard" number="480"/>
+  <syscall name="wait6" number="481"/>
+  <syscall name="clock_getcpuclockid2" number="482"/>
+  <syscall name="__getvfsstat90" number="483"/>
+  <syscall name="__statvfs190" number="484"/>
+  <syscall name="__fstatvfs190" number="485"/>
+  <syscall name="__fhstatvfs190" number="486"/>
+</syscalls_info>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/ppc64-linux.xml ./gdb/syscalls/ppc64-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/ppc64-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/ppc64-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/ppc64-linux.xml.in ./gdb/syscalls/ppc64-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/ppc64-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/ppc64-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/ppc-linux.xml ./gdb/syscalls/ppc-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/ppc-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/ppc-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/ppc-linux.xml.in ./gdb/syscalls/ppc-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/ppc-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/ppc-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/s390-linux.xml ./gdb/syscalls/s390-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/s390-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/s390-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/s390-linux.xml.in ./gdb/syscalls/s390-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/s390-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/s390-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/s390x-linux.xml ./gdb/syscalls/s390x-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/s390x-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/s390x-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/s390x-linux.xml.in ./gdb/syscalls/s390x-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/s390x-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/s390x-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/sparc64-linux.xml ./gdb/syscalls/sparc64-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/sparc64-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/sparc64-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/sparc64-linux.xml.in ./gdb/syscalls/sparc64-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/sparc64-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/sparc64-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/sparc-linux.xml ./gdb/syscalls/sparc-linux.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/sparc-linux.xml	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/sparc-linux.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/sparc-linux.xml.in ./gdb/syscalls/sparc-linux.xml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/sparc-linux.xml.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/sparc-linux.xml.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/update-freebsd.sh ./gdb/syscalls/update-freebsd.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/update-freebsd.sh	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/syscalls/update-freebsd.sh	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
@@ -29,14 +29,14 @@
 
 if [ $# -ne 1 ]; then
    echo "Error: Path to syscall.h missing. Aborting."
-   echo "Usage: update-gnulib.sh <path-to-syscall.h>"
+   echo "Usage: update-freebsd.sh <path-to-syscall.h>"
    exit 1
 fi
 
 cat > freebsd.xml.tmp <<EOF
 <?xml version="1.0"?> <!-- THIS FILE IS GENERATED -*- buffer-read-only: t -*-  -->
 <!-- vi:set ro: -->
-<!-- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2020 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
@@ -69,7 +69,7 @@ awk '
 }
 /\/\* [0-9]* is freebsd[0-9]* [a-z_]* \*\// {
     printf "  <syscall name=\"%s_%s\" number=\"%s\" alias=\"%s\"/>\n", $4, $5, $2, $5
-}' $1 >> freebsd.xml.tmp
+}' "$1" >> freebsd.xml.tmp
 
 cat >> freebsd.xml.tmp <<EOF
 </syscalls_info>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/update-netbsd.sh ./gdb/syscalls/update-netbsd.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/syscalls/update-netbsd.sh	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/syscalls/update-netbsd.sh	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,78 @@
+#! /bin/sh
+
+# Copyright (C) 2020-2021 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/>.
+
+# Usage: update-netbsd.sh <path-to-syscall.h>
+# Update the netbsd.xml file.
+#
+# NetBSD uses the same list of system calls on all architectures.
+# The list is defined in the sys/kern/syscalls.master file in the
+# NetBSD source tree.  This file is used as an input to generate
+# several files that are also stored in NetBSD's source tree.  This
+# script parses one of those generated files (sys/sys/syscall.h)
+# rather than syscalls.master as syscall.h is easier to parse.
+
+if [ $# -ne 1 ]; then
+   echo "Error: Path to syscall.h missing. Aborting."
+   echo "Usage: update-gnulib.sh <path-to-syscall.h>"
+   exit 1
+fi
+
+cat > netbsd.xml.tmp <<EOF
+<?xml version="1.0"?> <!-- THIS FILE IS GENERATED -*- buffer-read-only: t -*-  -->
+<!-- vi:set ro: -->
+<!-- Copyright (C) 2020 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd">
+
+<!-- This file was generated using the following file:
+
+     /usr/src/sys/sys/syscall.h
+
+     The file mentioned above belongs to the NetBSD Kernel.  -->
+
+<syscalls_info>
+EOF
+
+awk '
+/MAXSYSCALL/ || /_SYS_SYSCALL_H_/ || /MAXSYSARGS/ || /syscall/ || /NSYSENT/ {
+    next
+}
+/^#define/ {
+    sub(/^SYS_/,"",$2);
+    printf "  <syscall name=\"%s\" number=\"%s\"", $2, $3
+    if (sub(/^netbsd[0-9]*_/,"",$2) != 0)
+        printf " alias=\"%s\"", $2
+    printf "/>\n"
+}
+/\/\* [0-9]* is obsolete [a-z_]* \*\// {
+    printf "  <syscall name=\"%s\" number=\"%s\"/>\n", $5, $2
+}
+/\/\* [0-9]* is netbsd[0-9]* [a-z_]* \*\// {
+    printf "  <syscall name=\"%s_%s\" number=\"%s\" alias=\"%s\"/>\n", $4, $5, $2, $5
+}' "$1" >> netbsd.xml.tmp
+
+cat >> netbsd.xml.tmp <<EOF
+</syscalls_info>
+EOF
+
+../../move-if-change netbsd.xml.tmp netbsd.xml
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/system-gdbinit/elinos.py ./gdb/system-gdbinit/elinos.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/system-gdbinit/elinos.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/system-gdbinit/elinos.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/system-gdbinit/wrs-linux.py ./gdb/system-gdbinit/wrs-linux.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/system-gdbinit/wrs-linux.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/system-gdbinit/wrs-linux.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target/resume.h ./gdb/target/resume.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target/resume.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target/resume.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target resumption definitions and prototypes.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target/target.h ./gdb/target/target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target/target.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target/target.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Declarations for common target functions.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target/wait.h ./gdb/target/wait.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target/wait.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target/wait.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target wait definitions and prototypes.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target/waitstatus.c ./gdb/target/waitstatus.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target/waitstatus.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target/waitstatus.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target waitstatus implementations.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target/waitstatus.h ./gdb/target/waitstatus.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target/waitstatus.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target/waitstatus.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target waitstatus definitions and prototypes.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target.c ./gdb/target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Select target systems and architectures at runtime for GDB.
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
 
@@ -49,6 +49,8 @@
 #include "gdbsupport/byte-vector.h"
 #include "terminal.h"
 #include <unordered_map>
+#include "target-connection.h"
+#include "valprint.h"
 
 static void generic_tls_error (void) ATTRIBUTE_NORETURN;
 
@@ -65,9 +67,6 @@ static void default_rcmd (struct target_
 static ptid_t default_get_ada_task_ptid (struct target_ops *self,
 					 long lwp, long tid);
 
-static int default_follow_fork (struct target_ops *self, int follow_child,
-				int detach_fork);
-
 static void default_mourn_inferior (struct target_ops *self);
 
 static int default_search_memory (struct target_ops *ops,
@@ -110,10 +109,6 @@ static std::unordered_map<const target_i
 
 static struct target_ops *the_debug_target;
 
-/* The target stack.  */
-
-static target_stack g_target_stack;
-
 /* Top of target stack.  */
 /* The target structure we are currently using to talk to a process
    or file or whatever "inferior" we have.  */
@@ -121,7 +116,7 @@ static target_stack g_target_stack;
 target_ops *
 current_top_target ()
 {
-  return g_target_stack.top ();
+  return current_inferior ()->top_target ();
 }
 
 /* Command list for target.  */
@@ -174,15 +169,6 @@ show_targetdebug (struct ui_file *file,
   fprintf_filtered (file, _("Target debugging is %s.\n"), value);
 }
 
-/* The user just typed 'target' without the name of a target.  */
-
-static void
-target_command (const char *arg, int from_tty)
-{
-  fputs_filtered ("Argument required (target name).  Try `help target'\n",
-		  gdb_stdout);
-}
-
 int
 target_has_all_memory_1 (void)
 {
@@ -223,20 +209,22 @@ target_has_registers_1 (void)
   return 0;
 }
 
-int
-target_has_execution_1 (ptid_t the_ptid)
+bool
+target_has_execution_1 (inferior *inf)
 {
-  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
-    if (t->has_execution (the_ptid))
-      return 1;
+  for (target_ops *t = inf->top_target ();
+       t != nullptr;
+       t = inf->find_target_beneath (t))
+    if (t->has_execution (inf))
+      return true;
 
-  return 0;
+  return false;
 }
 
 int
 target_has_execution_current (void)
 {
-  return target_has_execution_1 (inferior_ptid);
+  return target_has_execution_1 (current_inferior ());
 }
 
 /* This is used to implement the various target commands.  */
@@ -273,13 +261,13 @@ add_target (const target_info &t, target
   func_slot = func;
 
   if (targetlist == NULL)
-    add_prefix_cmd ("target", class_run, target_command, _("\
+    add_basic_prefix_cmd ("target", class_run, _("\
 Connect to a target machine or process.\n\
 The first argument is the type or protocol of the target machine.\n\
 Remaining arguments are interpreted by the target protocol.  For more\n\
 information on the arguments for a particular protocol, type\n\
 `help target ' followed by the protocol name."),
-		    &targetlist, "target ", 0, &cmdlist);
+			  &targetlist, "target ", 0, &cmdlist);
   c = add_cmd (t.shortname, no_class, t.doc, &targetlist);
   set_cmd_context (c, (void *) &t);
   set_cmd_sfunc (c, open_target);
@@ -501,13 +489,16 @@ target_terminal::info (const char *arg,
 bool
 target_supports_terminal_ours (void)
 {
-  /* This can be called before there is any target, so we must check
-     for nullptr here.  */
-  target_ops *top = current_top_target ();
+  /* The current top target is the target at the top of the target
+     stack of the current inferior.  While normally there's always an
+     inferior, we must check for nullptr here because we can get here
+     very early during startup, before the initial inferior is first
+     created.  */
+  inferior *inf = current_inferior ();
 
-  if (top == nullptr)
+  if (inf == nullptr)
     return false;
-  return top->supports_terminal_ours ();
+  return inf->top_target ()->supports_terminal_ours ();
 }
 
 static void
@@ -556,11 +547,31 @@ to_execution_direction must be implement
 /* See target.h.  */
 
 void
+decref_target (target_ops *t)
+{
+  t->decref ();
+  if (t->refcount () == 0)
+    {
+      if (t->stratum () == process_stratum)
+	connection_list_remove (as_process_stratum_target (t));
+      target_close (t);
+    }
+}
+
+/* See target.h.  */
+
+void
 target_stack::push (target_ops *t)
 {
-  /* If there's already a target at this stratum, remove it.  */
+  t->incref ();
+
   strata stratum = t->stratum ();
 
+  if (stratum == process_stratum)
+    connection_list_add (as_process_stratum_target (t));
+
+  /* If there's already a target at this stratum, remove it.  */
+
   if (m_stack[stratum] != NULL)
     unpush (m_stack[stratum]);
 
@@ -576,15 +587,15 @@ target_stack::push (target_ops *t)
 void
 push_target (struct target_ops *t)
 {
-  g_target_stack.push (t);
+  current_inferior ()->push_target (t);
 }
 
-/* See target.h  */
+/* See target.h.  */
 
 void
 push_target (target_ops_up &&t)
 {
-  g_target_stack.push (t.get ());
+  current_inferior ()->push_target (t.get ());
   t.release ();
 }
 
@@ -593,7 +604,7 @@ push_target (target_ops_up &&t)
 int
 unpush_target (struct target_ops *t)
 {
-  return g_target_stack.unpush (t);
+  return current_inferior ()->unpush_target (t);
 }
 
 /* See target.h.  */
@@ -625,10 +636,13 @@ target_stack::unpush (target_ops *t)
   if (m_top == stratum)
     m_top = t->beneath ()->stratum ();
 
-  /* Finally close the target.  Note we do this after unchaining, so
-     any target method calls from within the target_close
-     implementation don't end up in T anymore.  */
-  target_close (t);
+  /* Finally close the target, if there are no inferiors
+     referencing this target still.  Note we do this after unchaining,
+     so any target method calls from within the target_close
+     implementation don't end up in T anymore.  Do leave the target
+     open if we have are other inferiors referencing this target
+     still.  */
+  decref_target (t);
 
   return true;
 }
@@ -670,12 +684,13 @@ pop_all_targets (void)
   pop_all_targets_above (dummy_stratum);
 }
 
-/* Return 1 if T is now pushed in the target stack.  Return 0 otherwise.  */
+/* Return true if T is now pushed in the current inferior's target
+   stack.  Return false otherwise.  */
 
-int
-target_is_pushed (struct target_ops *t)
+bool
+target_is_pushed (target_ops *t)
 {
-  return g_target_stack.is_pushed (t);
+  return current_inferior ()->target_is_pushed (t);
 }
 
 /* Default implementation of to_get_thread_local_address.  */
@@ -789,81 +804,24 @@ target_xfer_status_to_string (enum targe
 };
 
 
-#undef	MIN
-#define MIN(A, B) (((A) <= (B)) ? (A) : (B))
-
-/* target_read_string -- read a null terminated string, up to LEN bytes,
-   from MEMADDR in target.  Set *ERRNOP to the errno code, or 0 if successful.
-   Set *STRING to a pointer to malloc'd memory containing the data; the caller
-   is responsible for freeing it.  Return the number of bytes successfully
-   read.  */
+/* See target.h.  */
 
-int
-target_read_string (CORE_ADDR memaddr, gdb::unique_xmalloc_ptr<char> *string,
-		    int len, int *errnop)
+gdb::unique_xmalloc_ptr<char>
+target_read_string (CORE_ADDR memaddr, int len, int *bytes_read)
 {
-  int tlen, offset, i;
-  gdb_byte buf[4];
-  int errcode = 0;
-  char *buffer;
-  int buffer_allocated;
-  char *bufptr;
-  unsigned int nbytes_read = 0;
-
-  gdb_assert (string);
-
-  /* Small for testing.  */
-  buffer_allocated = 4;
-  buffer = (char *) xmalloc (buffer_allocated);
-  bufptr = buffer;
+  gdb::unique_xmalloc_ptr<gdb_byte> buffer;
 
-  while (len > 0)
-    {
-      tlen = MIN (len, 4 - (memaddr & 3));
-      offset = memaddr & 3;
-
-      errcode = target_read_memory (memaddr & ~3, buf, sizeof buf);
-      if (errcode != 0)
-	{
-	  /* The transfer request might have crossed the boundary to an
-	     unallocated region of memory.  Retry the transfer, requesting
-	     a single byte.  */
-	  tlen = 1;
-	  offset = 0;
-	  errcode = target_read_memory (memaddr, buf, 1);
-	  if (errcode != 0)
-	    goto done;
-	}
-
-      if (bufptr - buffer + tlen > buffer_allocated)
-	{
-	  unsigned int bytes;
-
-	  bytes = bufptr - buffer;
-	  buffer_allocated *= 2;
-	  buffer = (char *) xrealloc (buffer, buffer_allocated);
-	  bufptr = buffer + bytes;
-	}
-
-      for (i = 0; i < tlen; i++)
-	{
-	  *bufptr++ = buf[i + offset];
-	  if (buf[i + offset] == '\000')
-	    {
-	      nbytes_read += i + 1;
-	      goto done;
-	    }
-	}
+  int ignore;
+  if (bytes_read == nullptr)
+    bytes_read = &ignore;
+
+  /* Note that the endian-ness does not matter here.  */
+  int errcode = read_string (memaddr, -1, 1, len, BFD_ENDIAN_LITTLE,
+			     &buffer, bytes_read);
+  if (errcode != 0)
+    return {};
 
-      memaddr += tlen;
-      len -= tlen;
-      nbytes_read += tlen;
-    }
-done:
-  string->reset (buffer);
-  if (errnop != NULL)
-    *errnop = errcode;
-  return nbytes_read;
+  return gdb::unique_xmalloc_ptr<char> ((char *) buffer.release ());
 }
 
 struct target_section_table *
@@ -967,8 +925,11 @@ raw_memory_xfer_partial (struct target_o
       if (res == TARGET_XFER_UNAVAILABLE)
 	break;
 
-      /* We want to continue past core files to executables, but not
-	 past a running target's memory.  */
+      /* Don't continue past targets which have all the memory.
+         At one time, this code was necessary to read data from
+	 executables / shared libraries when data for the requested
+	 addresses weren't available in the core file.  But now the
+	 core target handles this case itself.  */
       if (ops->has_all_memory ())
 	break;
 
@@ -1022,11 +983,17 @@ memory_xfer_partial_1 (struct target_ops
 	  const char *section_name = section->the_bfd_section->name;
 
 	  memaddr = overlay_mapped_address (memaddr, section);
+
+	  auto match_cb = [=] (const struct target_section *s)
+	    {
+	      return (strcmp (section_name, s->the_bfd_section->name) == 0);
+	    };
+
 	  return section_table_xfer_memory_partial (readbuf, writebuf,
 						    memaddr, len, xfered_len,
 						    table->sections,
 						    table->sections_end,
-						    section_name);
+						    match_cb);
 	}
     }
 
@@ -1044,8 +1011,7 @@ memory_xfer_partial_1 (struct target_ops
 	  return section_table_xfer_memory_partial (readbuf, writebuf,
 						    memaddr, len, xfered_len,
 						    table->sections,
-						    table->sections_end,
-						    NULL);
+						    table->sections_end);
 	}
     }
 
@@ -1947,33 +1913,6 @@ target_pre_inferior (int from_tty)
   agent_capability_invalidate ();
 }
 
-/* Callback for iterate_over_inferiors.  Gets rid of the given
-   inferior.  */
-
-static int
-dispose_inferior (struct inferior *inf, void *args)
-{
-  /* Not all killed inferiors can, or will ever be, removed from the
-     inferior list.  Killed inferiors clearly don't need to be killed
-     again, so, we're done.  */
-  if (inf->pid == 0)
-    return 0;
-
-  thread_info *thread = any_thread_of_inferior (inf);
-  if (thread != NULL)
-    {
-      switch_to_thread (thread);
-
-      /* Core inferiors actually should be detached, not killed.  */
-      if (target_has_execution)
-	target_kill ();
-      else
-	target_detach (inf, 0);
-    }
-
-  return 0;
-}
-
 /* This is to be called by the open routine before it does
    anything.  */
 
@@ -1982,12 +1921,19 @@ target_preopen (int from_tty)
 {
   dont_repeat ();
 
-  if (have_inferiors ())
+  if (current_inferior ()->pid != 0)
     {
       if (!from_tty
-	  || !have_live_inferiors ()
+	  || !target_has_execution
 	  || query (_("A program is being debugged already.  Kill it? ")))
-	iterate_over_inferiors (dispose_inferior, NULL);
+	{
+	  /* Core inferiors actually should be detached, not
+	     killed.  */
+	  if (target_has_execution)
+	    target_kill ();
+	  else
+	    target_detach (current_inferior (), 0);
+	}
       else
 	error (_("Program not killed."));
     }
@@ -2029,9 +1975,16 @@ target_detach (inferior *inf, int from_t
 
   prepare_for_detach ();
 
+  /* Hold a strong reference because detaching may unpush the
+     target.  */
+  auto proc_target_ref = target_ops_ref::new_reference (inf->process_target ());
+
   current_top_target ()->detach (inf, from_tty);
 
-  registers_changed_ptid (save_pid_ptid);
+  process_stratum_target *proc_target
+    = as_process_stratum_target (proc_target_ref.get ());
+
+  registers_changed_ptid (proc_target, save_pid_ptid);
 
   /* We have to ensure we have no frame cache left.  Normally,
      registers_changed_ptid (save_pid_ptid) calls reinit_frame_cache when
@@ -2056,7 +2009,12 @@ target_disconnect (const char *args, int
 ptid_t
 target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
 {
-  return current_top_target ()->wait (ptid, status, options);
+  target_ops *target = current_top_target ();
+
+  if (!target->can_async_p ())
+    gdb_assert ((options & TARGET_WNOHANG) == 0);
+
+  return target->wait (ptid, status, options);
 }
 
 /* See target.h.  */
@@ -2079,6 +2037,8 @@ target_pid_to_str (ptid_t ptid)
 const char *
 target_thread_name (struct thread_info *info)
 {
+  gdb_assert (info->inf == current_inferior ());
+
   return current_top_target ()->thread_name (info);
 }
 
@@ -2102,16 +2062,18 @@ target_thread_info_to_thread_handle (str
 void
 target_resume (ptid_t ptid, int step, enum gdb_signal signal)
 {
+  process_stratum_target *curr_target = current_inferior ()->process_target ();
+
   target_dcache_invalidate ();
 
   current_top_target ()->resume (ptid, step, signal);
 
-  registers_changed_ptid (ptid);
+  registers_changed_ptid (curr_target, ptid);
   /* We only set the internal executing state here.  The user/frontend
      running state is set at a higher level.  This also clears the
      thread's stop_pc as side effect.  */
-  set_executing (ptid, 1);
-  clear_inline_frame_state (ptid);
+  set_executing (curr_target, ptid, true);
+  clear_inline_frame_state (curr_target, ptid);
 }
 
 /* If true, target_commit_resume is a nop.  */
@@ -2148,9 +2110,9 @@ target_program_signals (gdb::array_view<
   current_top_target ()->program_signals (program_signals);
 }
 
-static int
-default_follow_fork (struct target_ops *self, int follow_child,
-		     int detach_fork)
+static bool
+default_follow_fork (struct target_ops *self, bool follow_child,
+		     bool detach_fork)
 {
   /* Some target returned a fork event, but did not know how to follow it.  */
   internal_error (__FILE__, __LINE__,
@@ -2160,8 +2122,8 @@ default_follow_fork (struct target_ops *
 /* Look through the list of possible targets for a target that can
    follow forks.  */
 
-int
-target_follow_fork (int follow_child, int detach_fork)
+bool
+target_follow_fork (bool follow_child, bool detach_fork)
 {
   return current_top_target ()->follow_fork (follow_child, detach_fork);
 }
@@ -2184,7 +2146,7 @@ default_mourn_inferior (struct target_op
 void
 target_mourn_inferior (ptid_t ptid)
 {
-  gdb_assert (ptid == inferior_ptid);
+  gdb_assert (ptid.pid () == inferior_ptid.pid ());
   current_top_target ()->mourn_inferior ();
 
   /* We no longer need to keep handles on any of the object files.
@@ -2536,7 +2498,6 @@ target_get_osdata (const char *type)
   return target_read_stralloc (t, TARGET_OBJECT_OSDATA, type);
 }
 
-
 /* Determine the current address space of thread PTID.  */
 
 struct address_space *
@@ -2555,7 +2516,7 @@ target_thread_address_space (ptid_t ptid
 target_ops *
 target_ops::beneath () const
 {
-  return g_target_stack.find_beneath (this);
+  return current_inferior ()->find_target_beneath (this);
 }
 
 void
@@ -2771,13 +2732,11 @@ target_ops::fileio_readlink (struct infe
   return {};
 }
 
-/* Helper for target_fileio_open and
-   target_fileio_open_warn_if_slow.  */
+/* See target.h.  */
 
-static int
-target_fileio_open_1 (struct inferior *inf, const char *filename,
-		      int flags, int mode, int warn_if_slow,
-		      int *target_errno)
+int
+target_fileio_open (struct inferior *inf, const char *filename,
+		    int flags, int mode, bool warn_if_slow, int *target_errno)
 {
   for (target_ops *t = default_fileio_target (); t != NULL; t = t->beneath ())
     {
@@ -2810,27 +2769,6 @@ target_fileio_open_1 (struct inferior *i
 /* See target.h.  */
 
 int
-target_fileio_open (struct inferior *inf, const char *filename,
-		    int flags, int mode, int *target_errno)
-{
-  return target_fileio_open_1 (inf, filename, flags, mode, 0,
-			       target_errno);
-}
-
-/* See target.h.  */
-
-int
-target_fileio_open_warn_if_slow (struct inferior *inf,
-				 const char *filename,
-				 int flags, int mode, int *target_errno)
-{
-  return target_fileio_open_1 (inf, filename, flags, mode, 1,
-			       target_errno);
-}
-
-/* See target.h.  */
-
-int
 target_fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
 		      ULONGEST offset, int *target_errno)
 {
@@ -3032,7 +2970,7 @@ target_fileio_read_alloc_1 (struct infer
   int target_errno;
 
   scoped_target_fd fd (target_fileio_open (inf, filename, FILEIO_O_RDONLY,
-					   0700, &target_errno));
+					   0700, false, &target_errno));
   if (fd.get () == -1)
     return -1;
 
@@ -3151,7 +3089,7 @@ target_stack::find_beneath (const target
 struct target_ops *
 find_target_at (enum strata stratum)
 {
-  return g_target_stack.at (stratum);
+  return current_inferior ()->target_at (stratum);
 }
 
 
@@ -3183,7 +3121,7 @@ generic_mourn_inferior (void)
 {
   inferior *inf = current_inferior ();
 
-  inferior_ptid = null_ptid;
+  switch_to_no_thread ();
 
   /* Mark breakpoints uninserted in case something tries to delete a
      breakpoint while we delete the inferior's threads (which would
@@ -3247,6 +3185,14 @@ dummy_make_corefile_notes (struct target
 
 static dummy_target the_dummy_target;
 
+/* See target.h.  */
+
+target_ops *
+get_dummy_target ()
+{
+  return &the_dummy_target;
+}
+
 static const target_info dummy_target_info = {
   "None",
   N_("None"),
@@ -3333,7 +3279,33 @@ target_interrupt ()
 void
 target_pass_ctrlc (void)
 {
-  current_top_target ()->pass_ctrlc ();
+  /* Pass the Ctrl-C to the first target that has a thread
+     running.  */
+  for (inferior *inf : all_inferiors ())
+    {
+      target_ops *proc_target = inf->process_target ();
+      if (proc_target == NULL)
+	continue;
+
+      for (thread_info *thr : inf->non_exited_threads ())
+	{
+	  /* A thread can be THREAD_STOPPED and executing, while
+	     running an infcall.  */
+	  if (thr->state == THREAD_RUNNING || thr->executing)
+	    {
+	      /* We can get here quite deep in target layers.  Avoid
+		 switching thread context or anything that would
+		 communicate with the target (e.g., to fetch
+		 registers), or flushing e.g., the frame cache.  We
+		 just switch inferior in order to be able to call
+		 through the target_stack.  */
+	      scoped_restore_current_inferior restore_inferior;
+	      set_current_inferior (inf);
+	      current_top_target ()->pass_ctrlc ();
+	      return;
+	    }
+	}
+    }
 }
 
 /* See target.h.  */
@@ -3884,6 +3856,26 @@ target_is_non_stop_p (void)
 	      && target_always_non_stop_p ()));
 }
 
+/* See target.h.  */
+
+bool
+exists_non_stop_target ()
+{
+  if (target_is_non_stop_p ())
+    return true;
+
+  scoped_restore_current_thread restore_thread;
+
+  for (inferior *inf : all_inferiors ())
+    {
+      switch_to_inferior_no_thread (inf);
+      if (target_is_non_stop_p ())
+	return true;
+    }
+
+  return false;
+}
+
 /* Controls if targets can report that they always run in non-stop
    mode.  This is just for maintainers to use when debugging gdb.  */
 enum auto_boolean target_non_stop_enabled = AUTO_BOOLEAN_AUTO;
@@ -3980,11 +3972,11 @@ set_write_memory_permission (const char
   update_observer_mode ();
 }
 
+void _initialize_target ();
+
 void
-initialize_targets (void)
+_initialize_target ()
 {
-  push_target (&the_dummy_target);
-
   the_debug_target = new debug_target ();
 
   add_info ("target", info_target_command, targ_desc);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-connection.c ./gdb/target-connection.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-connection.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/target-connection.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,161 @@
+/* List of target connections for GDB.
+
+   Copyright (C) 2017-2021 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 "target-connection.h"
+
+#include <map>
+
+#include "inferior.h"
+#include "target.h"
+
+/* A map between connection number and representative process_stratum
+   target.  */
+static std::map<int, process_stratum_target *> process_targets;
+
+/* The highest connection number ever given to a target.  */
+static int highest_target_connection_num;
+
+/* See target-connection.h.  */
+
+void
+connection_list_add (process_stratum_target *t)
+{
+  if (t->connection_number == 0)
+    {
+      t->connection_number = ++highest_target_connection_num;
+      process_targets[t->connection_number] = t;
+    }
+}
+
+/* See target-connection.h.  */
+
+void
+connection_list_remove (process_stratum_target *t)
+{
+  process_targets.erase (t->connection_number);
+  t->connection_number = 0;
+}
+
+/* See target-connection.h.  */
+
+std::string
+make_target_connection_string (process_stratum_target *t)
+{
+  if (t->connection_string () != NULL)
+    return string_printf ("%s %s", t->shortname (),
+			  t->connection_string ());
+  else
+    return t->shortname ();
+}
+
+/* Prints the list of target connections and their details on UIOUT.
+
+   If REQUESTED_CONNECTIONS is not NULL, it's a list of GDB ids of the
+   target connections that should be printed.  Otherwise, all target
+   connections are printed.  */
+
+static void
+print_connection (struct ui_out *uiout, const char *requested_connections)
+{
+  int count = 0;
+  size_t what_len = 0;
+
+  /* Compute number of lines we will print.  */
+  for (const auto &it : process_targets)
+    {
+      if (!number_is_in_list (requested_connections, it.first))
+	continue;
+
+      ++count;
+
+      process_stratum_target *t = it.second;
+
+      size_t l = strlen (t->shortname ());
+      if (t->connection_string () != NULL)
+	l += 1 + strlen (t->connection_string ());
+
+      if (l > what_len)
+	what_len = l;
+    }
+
+  if (count == 0)
+    {
+      uiout->message (_("No connections.\n"));
+      return;
+    }
+
+  ui_out_emit_table table_emitter (uiout, 4, process_targets.size (),
+				   "connections");
+
+  uiout->table_header (1, ui_left, "current", "");
+  uiout->table_header (4, ui_left, "number", "Num");
+  /* The text in the "what" column may include spaces.  Add one extra
+     space to visually separate the What and Description columns a
+     little better.  Compare:
+      "* 1    remote :9999 Remote serial target in gdb-specific protocol"
+      "* 1    remote :9999  Remote serial target in gdb-specific protocol"
+  */
+  uiout->table_header (what_len + 1, ui_left, "what", "What");
+  uiout->table_header (17, ui_left, "description", "Description");
+
+  uiout->table_body ();
+
+  for (const auto &it : process_targets)
+    {
+      process_stratum_target *t = it.second;
+
+      if (!number_is_in_list (requested_connections, t->connection_number))
+	continue;
+
+      ui_out_emit_tuple tuple_emitter (uiout, NULL);
+
+      if (current_inferior ()->process_target () == t)
+	uiout->field_string ("current", "*");
+      else
+	uiout->field_skip ("current");
+
+      uiout->field_signed ("number", t->connection_number);
+
+      uiout->field_string ("what", make_target_connection_string (t).c_str ());
+
+      uiout->field_string ("description", t->longname ());
+
+      uiout->text ("\n");
+    }
+}
+
+/* The "info connections" command.  */
+
+static void
+info_connections_command (const char *args, int from_tty)
+{
+  print_connection (current_uiout, args);
+}
+
+void _initialize_target_connection ();
+
+void
+_initialize_target_connection ()
+{
+  add_info ("connections", info_connections_command,
+	    _("\
+Target connections in use.\n\
+Shows the list of target connections currently in use."));
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-connection.h ./gdb/target-connection.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-connection.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/target-connection.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,40 @@
+/* List of target connections for GDB.
+
+   Copyright (C) 2017-2021 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 TARGET_CONNECTION_H
+#define TARGET_CONNECTION_H
+
+#include <string>
+
+struct process_stratum_target;
+
+/* Add a process target to the connection list, if not already
+   added.  */
+void connection_list_add (process_stratum_target *t);
+
+/* Remove a process target from the connection list.  */
+void connection_list_remove (process_stratum_target *t);
+
+/* Make a target connection string for T.  This is usually T's
+   shortname, but it includes the result of
+   process_stratum_target::connection_string() too if T supports
+   it.  */
+std::string make_target_connection_string (process_stratum_target *t);
+
+#endif /* TARGET_CONNECTION_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-dcache.c ./gdb/target-dcache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-dcache.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target-dcache.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -152,8 +152,9 @@ code_cache_enabled_p (void)
   return code_cache_enabled;
 }
 
+void _initialize_target_dcache ();
 void
-_initialize_target_dcache (void)
+_initialize_target_dcache ()
 {
   add_setshow_boolean_cmd ("stack-cache", class_support,
 			   &stack_cache_enabled_1, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-dcache.h ./gdb/target-dcache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-dcache.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target-dcache.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-debug.h ./gdb/target-debug.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-debug.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target-debug.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB target debugging macros
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-delegates.c ./gdb/target-delegates.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-delegates.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target-delegates.c	2021-05-21 01:57:24.000000000 +0000
@@ -56,7 +56,7 @@ struct dummy_target : public target_ops
   int remove_fork_catchpoint (int arg0) override;
   int insert_vfork_catchpoint (int arg0) override;
   int remove_vfork_catchpoint (int arg0) override;
-  int follow_fork (int arg0, int arg1) override;
+  bool follow_fork (bool arg0, bool arg1) override;
   int insert_exec_catchpoint (int arg0) override;
   int remove_exec_catchpoint (int arg0) override;
   void follow_exec (struct inferior *arg0, const char *arg1) override;
@@ -83,6 +83,7 @@ struct dummy_target : public target_ops
   bool can_async_p () override;
   bool is_async_p () override;
   void async (int arg0) override;
+  int async_wait_fd () override;
   void thread_events (int arg0) override;
   bool supports_non_stop () override;
   bool always_non_stop_p () override;
@@ -107,6 +108,8 @@ struct dummy_target : public target_ops
   bool supports_disable_randomization () override;
   bool supports_string_tracing () override;
   bool supports_evaluation_of_breakpoint_conditions () override;
+  bool supports_dumpcore () override;
+  void dumpcore (const char *arg0) override;
   bool can_run_breakpoint_commands () override;
   struct gdbarch *thread_architecture (ptid_t arg0) override;
   struct address_space *thread_address_space (ptid_t arg0) override;
@@ -224,7 +227,7 @@ struct debug_target : public target_ops
   int remove_fork_catchpoint (int arg0) override;
   int insert_vfork_catchpoint (int arg0) override;
   int remove_vfork_catchpoint (int arg0) override;
-  int follow_fork (int arg0, int arg1) override;
+  bool follow_fork (bool arg0, bool arg1) override;
   int insert_exec_catchpoint (int arg0) override;
   int remove_exec_catchpoint (int arg0) override;
   void follow_exec (struct inferior *arg0, const char *arg1) override;
@@ -251,6 +254,7 @@ struct debug_target : public target_ops
   bool can_async_p () override;
   bool is_async_p () override;
   void async (int arg0) override;
+  int async_wait_fd () override;
   void thread_events (int arg0) override;
   bool supports_non_stop () override;
   bool always_non_stop_p () override;
@@ -275,6 +279,8 @@ struct debug_target : public target_ops
   bool supports_disable_randomization () override;
   bool supports_string_tracing () override;
   bool supports_evaluation_of_breakpoint_conditions () override;
+  bool supports_dumpcore () override;
+  void dumpcore (const char *arg0) override;
   bool can_run_breakpoint_commands () override;
   struct gdbarch *thread_architecture (ptid_t arg0) override;
   struct address_space *thread_address_space (ptid_t arg0) override;
@@ -1504,30 +1510,30 @@ debug_target::remove_vfork_catchpoint (i
   return result;
 }
 
-int
-target_ops::follow_fork (int arg0, int arg1)
+bool
+target_ops::follow_fork (bool arg0, bool arg1)
 {
   return this->beneath ()->follow_fork (arg0, arg1);
 }
 
-int
-dummy_target::follow_fork (int arg0, int arg1)
+bool
+dummy_target::follow_fork (bool arg0, bool arg1)
 {
   return default_follow_fork (this, arg0, arg1);
 }
 
-int
-debug_target::follow_fork (int arg0, int arg1)
+bool
+debug_target::follow_fork (bool arg0, bool arg1)
 {
-  int result;
+  bool result;
   fprintf_unfiltered (gdb_stdlog, "-> %s->follow_fork (...)\n", this->beneath ()->shortname ());
   result = this->beneath ()->follow_fork (arg0, arg1);
   fprintf_unfiltered (gdb_stdlog, "<- %s->follow_fork (", this->beneath ()->shortname ());
-  target_debug_print_int (arg0);
+  target_debug_print_bool (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
-  target_debug_print_int (arg1);
+  target_debug_print_bool (arg1);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -2162,6 +2168,31 @@ debug_target::async (int arg0)
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
+int
+target_ops::async_wait_fd ()
+{
+  return this->beneath ()->async_wait_fd ();
+}
+
+int
+dummy_target::async_wait_fd ()
+{
+  noprocess ();
+}
+
+int
+debug_target::async_wait_fd ()
+{
+  int result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->async_wait_fd (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->async_wait_fd ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->async_wait_fd (", this->beneath ()->shortname ());
+  fputs_unfiltered (") = ", gdb_stdlog);
+  target_debug_print_int (result);
+  fputs_unfiltered ("\n", gdb_stdlog);
+  return result;
+}
+
 void
 target_ops::thread_events (int arg0)
 {
@@ -2799,6 +2830,52 @@ debug_target::supports_evaluation_of_bre
 }
 
 bool
+target_ops::supports_dumpcore ()
+{
+  return this->beneath ()->supports_dumpcore ();
+}
+
+bool
+dummy_target::supports_dumpcore ()
+{
+  return false;
+}
+
+bool
+debug_target::supports_dumpcore ()
+{
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_dumpcore (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_dumpcore ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_dumpcore (", this->beneath ()->shortname ());
+  fputs_unfiltered (") = ", gdb_stdlog);
+  target_debug_print_bool (result);
+  fputs_unfiltered ("\n", gdb_stdlog);
+  return result;
+}
+
+void
+target_ops::dumpcore (const char *arg0)
+{
+  this->beneath ()->dumpcore (arg0);
+}
+
+void
+dummy_target::dumpcore (const char *arg0)
+{
+}
+
+void
+debug_target::dumpcore (const char *arg0)
+{
+  fprintf_unfiltered (gdb_stdlog, "-> %s->dumpcore (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->dumpcore (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->dumpcore (", this->beneath ()->shortname ());
+  target_debug_print_const_char_p (arg0);
+  fputs_unfiltered (")\n", gdb_stdlog);
+}
+
+bool
 target_ops::can_run_breakpoint_commands ()
 {
   return this->beneath ()->can_run_breakpoint_commands ();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-descriptions.c ./gdb/target-descriptions.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-descriptions.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target-descriptions.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target description support for GDB.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    Contributed by CodeSourcery.
 
@@ -141,6 +141,11 @@ make_gdb_type (struct gdbarch *gdbarch,
 	  m_type = arch_float_type (m_gdbarch, -1, "builtin_type_i387_ext",
 				    floatformats_i387_ext);
 	  return;
+
+	case TDESC_TYPE_BFLOAT16:
+	  m_type = arch_float_type (m_gdbarch, -1, "builtin_type_bfloat16",
+				    floatformats_bfloat16);
+	  return;
 	}
 
       internal_error (__FILE__, __LINE__,
@@ -156,7 +161,7 @@ make_gdb_type (struct gdbarch *gdbarch,
 
       type *element_gdb_type = make_gdb_type (m_gdbarch, e->element_type);
       m_type = init_vector_type (element_gdb_type, e->count);
-      TYPE_NAME (m_type) = xstrdup (e->name.c_str ());
+      m_type->set_name (xstrdup (e->name.c_str ()));
       return;
     }
 
@@ -192,7 +197,7 @@ make_gdb_type (struct gdbarch *gdbarch,
     void make_gdb_type_struct (const tdesc_type_with_fields *e)
     {
       m_type = arch_composite_type (m_gdbarch, NULL, TYPE_CODE_STRUCT);
-      TYPE_NAME (m_type) = xstrdup (e->name.c_str ());
+      m_type->set_name (xstrdup (e->name.c_str ()));
 
       for (const tdesc_type_field &f : e->fields)
 	{
@@ -247,7 +252,7 @@ make_gdb_type (struct gdbarch *gdbarch,
     void make_gdb_type_union (const tdesc_type_with_fields *e)
     {
       m_type = arch_composite_type (m_gdbarch, NULL, TYPE_CODE_UNION);
-      TYPE_NAME (m_type) = xstrdup (e->name.c_str ());
+      m_type->set_name (xstrdup (e->name.c_str ()));
 
       for (const tdesc_type_field &f : e->fields)
 	{
@@ -308,6 +313,29 @@ make_gdb_type (struct gdbarch *gdbarch,
   return gdb_type.get_type ();
 }
 
+/* Wrapper around bfd_arch_info_type.  A class with this name is used in
+   the API that is shared between gdb and gdbserver code, but gdbserver
+   doesn't use compatibility information, so its version of this class is
+   empty.  */
+
+class tdesc_compatible_info
+{
+public:
+  /* Constructor.  */
+  explicit tdesc_compatible_info (const bfd_arch_info_type *arch)
+    : m_arch (arch)
+  { /* Nothing.  */ }
+
+  /* Access the contained pointer.  */
+  const bfd_arch_info_type *arch () const
+  { return m_arch; }
+
+private:
+  /* Architecture information looked up from the <compatible> entity within
+     a target description.  */
+  const bfd_arch_info_type *m_arch;
+};
+
 /* A target description.  */
 
 struct target_desc : tdesc_element
@@ -328,7 +356,7 @@ struct target_desc : tdesc_element
   enum gdb_osabi osabi = GDB_OSABI_UNKNOWN;
 
   /* The list of compatible architectures reported by the target.  */
-  std::vector<const bfd_arch_info *> compatible;
+  std::vector<tdesc_compatible_info_up> compatible;
 
   /* Any architecture-specific properties specified by the target.  */
   std::vector<property> properties;
@@ -598,11 +626,11 @@ int
 tdesc_compatible_p (const struct target_desc *target_desc,
 		    const struct bfd_arch_info *arch)
 {
-  for (const bfd_arch_info *compat : target_desc->compatible)
+  for (const tdesc_compatible_info_up &compat : target_desc->compatible)
     {
-      if (compat == arch
-	  || arch->compatible (arch, compat)
-	  || compat->compatible (compat, arch))
+      if (compat->arch () == arch
+	  || arch->compatible (arch, compat->arch ())
+	  || compat->arch ()->compatible (compat->arch (), arch))
 	return 1;
     }
 
@@ -639,7 +667,25 @@ tdesc_architecture (const struct target_
 const char *
 tdesc_architecture_name (const struct target_desc *target_desc)
 {
-  return target_desc->arch->printable_name;
+  if (target_desc->arch != NULL)
+    return target_desc->arch->printable_name;
+  return NULL;
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+const std::vector<tdesc_compatible_info_up> &
+tdesc_compatible_info_list (const target_desc *target_desc)
+{
+  return target_desc->compatible;
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+const char *
+tdesc_compatible_info_arch_name (const tdesc_compatible_info_up &compatible)
+{
+  return compatible->arch ()->printable_name;
 }
 
 /* Return the OSABI associated with this target description, or
@@ -1056,7 +1102,8 @@ set_tdesc_pseudo_register_reggroup_p
 void
 tdesc_use_registers (struct gdbarch *gdbarch,
 		     const struct target_desc *target_desc,
-		     struct tdesc_arch_data *early_data)
+		     struct tdesc_arch_data *early_data,
+		     tdesc_unknown_register_ftype unk_reg_cb)
 {
   int num_regs = gdbarch_num_regs (gdbarch);
   struct tdesc_arch_data *data;
@@ -1105,6 +1152,34 @@ tdesc_use_registers (struct gdbarch *gdb
   while (data->arch_regs.size () < num_regs)
     data->arch_regs.emplace_back (nullptr, nullptr);
 
+  /* First we give the target a chance to number previously unknown
+     registers.  This allows targets to record the numbers assigned based
+     on which feature the register was from.  */
+  if (unk_reg_cb != NULL)
+    {
+      for (const tdesc_feature_up &feature : target_desc->features)
+	for (const tdesc_reg_up &reg : feature->registers)
+	  if (htab_find (reg_hash, reg.get ()) != NULL)
+	    {
+	      int regno = unk_reg_cb (gdbarch, feature.get (),
+				      reg->name.c_str (), num_regs);
+	      gdb_assert (regno == -1 || regno >= num_regs);
+	      if (regno != -1)
+		{
+		  while (regno >= data->arch_regs.size ())
+		    data->arch_regs.emplace_back (nullptr, nullptr);
+		  data->arch_regs[regno] = tdesc_arch_reg (reg.get (), NULL);
+		  num_regs = regno + 1;
+		  htab_remove_elt (reg_hash, reg.get ());
+		}
+	    }
+    }
+
+  /* Ensure the array was sized correctly above.  */
+  gdb_assert (data->arch_regs.size () == num_regs);
+
+  /* Now in a final pass we assign register numbers to any remaining
+     unnumbered registers.  */
   for (const tdesc_feature_up &feature : target_desc->features)
     for (const tdesc_reg_up &reg : feature->registers)
       if (htab_find (reg_hash, reg.get ()) != NULL)
@@ -1136,12 +1211,16 @@ tdesc_create_feature (struct target_desc
   return new_feature;
 }
 
+/* See gdbsupport/tdesc.h.  */
+
 struct target_desc *
 allocate_target_description (void)
 {
   return new target_desc ();
 }
 
+/* See gdbsupport/tdesc.h.  */
+
 void
 target_desc_deleter::operator() (struct target_desc *target_desc) const
 {
@@ -1158,14 +1237,16 @@ tdesc_add_compatible (struct target_desc
   if (compatible == NULL)
     return;
 
-  for (const bfd_arch_info *compat : target_desc->compatible)
-    if (compat == compatible)
+  for (const tdesc_compatible_info_up &compat : target_desc->compatible)
+    if (compat->arch () == compatible)
       internal_error (__FILE__, __LINE__,
 		      _("Attempted to add duplicate "
 			"compatible architecture \"%s\""),
 		      compatible->printable_name);
 
-  target_desc->compatible.push_back (compatible);
+  target_desc->compatible.push_back
+    (std::unique_ptr<tdesc_compatible_info>
+     (new tdesc_compatible_info (compatible)));
 }
 
 void
@@ -1218,24 +1299,6 @@ static struct cmd_list_element *tdesc_un
 /* Helper functions for the CLI commands.  */
 
 static void
-set_tdesc_cmd (const char *args, int from_tty)
-{
-  help_list (tdesc_set_cmdlist, "set tdesc ", all_commands, gdb_stdout);
-}
-
-static void
-show_tdesc_cmd (const char *args, int from_tty)
-{
-  cmd_show_list (tdesc_show_cmdlist, from_tty, "");
-}
-
-static void
-unset_tdesc_cmd (const char *args, int from_tty)
-{
-  help_list (tdesc_unset_cmdlist, "unset tdesc ", all_commands, gdb_stdout);
-}
-
-static void
 set_tdesc_filename_cmd (const char *args, int from_tty,
 			struct cmd_list_element *c)
 {
@@ -1288,6 +1351,8 @@ public:
 	break;
       else if (*inp == '-')
 	*outp++ = '_';
+      else if (*inp == ' ')
+	*outp++ = '_';
       else
 	*outp++ = *inp;
     *outp = '\0';
@@ -1336,10 +1401,10 @@ public:
 	printf_unfiltered ("\n");
       }
 
-    for (const bfd_arch_info_type *compatible : e->compatible)
+    for (const tdesc_compatible_info_up &compatible : e->compatible)
       printf_unfiltered
 	("  tdesc_add_compatible (result, bfd_scan_arch (\"%s\"));\n",
-	 compatible->printable_name);
+	 compatible->arch ()->printable_name);
 
     if (!e->compatible.empty ())
       printf_unfiltered ("\n");
@@ -1698,7 +1763,7 @@ maint_print_c_tdesc_cmd (const char *arg
     error (_("There is no target description to print."));
 
   if (filename == NULL)
-    error (_("The current target description did not come from an XML file."));
+    filename = "fetched from target";
 
   std::string filename_after_features (filename);
   auto loc = filename_after_features.rfind ("/features/");
@@ -1715,7 +1780,8 @@ maint_print_c_tdesc_cmd (const char *arg
       || startswith (filename_after_features.c_str (), "riscv/")
       || startswith (filename_after_features.c_str (), "tic6x-")
       || startswith (filename_after_features.c_str (), "aarch64")
-      || startswith (filename_after_features.c_str (), "arm/"))
+      || startswith (filename_after_features.c_str (), "arm/")
+      || startswith (filename_after_features.c_str (), "arc/"))
     {
       print_c_feature v (filename_after_features);
 
@@ -1729,6 +1795,36 @@ maint_print_c_tdesc_cmd (const char *arg
     }
 }
 
+/* Implement the maintenance print xml-tdesc command.  */
+
+static void
+maint_print_xml_tdesc_cmd (const char *args, int from_tty)
+{
+  const struct target_desc *tdesc;
+
+  if (args == NULL)
+    {
+      /* Use the global target-supplied description, not the current
+	 architecture's.  This lets a GDB for one architecture generate XML
+	 for another architecture's description, even though the gdbarch
+	 initialization code will reject the new description.  */
+      tdesc = current_target_desc;
+    }
+  else
+    {
+      /* Use the target description from the XML file.  */
+      tdesc = file_read_description_xml (args);
+    }
+
+  if (tdesc == NULL)
+    error (_("There is no target description to print."));
+
+  std::string buf;
+  print_xml_feature v (&buf);
+  tdesc->accept (v);
+  puts_unfiltered (buf.c_str ());
+}
+
 namespace selftests {
 
 /* A reference target description, used for testing (see record_xml_tdesc).  */
@@ -1824,23 +1920,26 @@ maintenance_check_xml_descriptions (cons
 		   (long) selftests::xml_tdesc.size (), failed);
 }
 
+void _initialize_target_descriptions ();
 void
-_initialize_target_descriptions (void)
+_initialize_target_descriptions ()
 {
+  cmd_list_element *cmd;
+
   tdesc_data = gdbarch_data_register_pre_init (tdesc_data_init);
 
-  add_prefix_cmd ("tdesc", class_maintenance, set_tdesc_cmd, _("\
+  add_basic_prefix_cmd ("tdesc", class_maintenance, _("\
 Set target description specific variables."),
-		  &tdesc_set_cmdlist, "set tdesc ",
-		  0 /* allow-unknown */, &setlist);
-  add_prefix_cmd ("tdesc", class_maintenance, show_tdesc_cmd, _("\
+			&tdesc_set_cmdlist, "set tdesc ",
+			0 /* allow-unknown */, &setlist);
+  add_show_prefix_cmd ("tdesc", class_maintenance, _("\
 Show target description specific variables."),
-		  &tdesc_show_cmdlist, "show tdesc ",
-		  0 /* allow-unknown */, &showlist);
-  add_prefix_cmd ("tdesc", class_maintenance, unset_tdesc_cmd, _("\
+		       &tdesc_show_cmdlist, "show tdesc ",
+		       0 /* allow-unknown */, &showlist);
+  add_basic_prefix_cmd ("tdesc", class_maintenance, _("\
 Unset target description specific variables."),
-		  &tdesc_unset_cmdlist, "unset tdesc ",
-		  0 /* allow-unknown */, &unsetlist);
+			&tdesc_unset_cmdlist, "unset tdesc ",
+			0 /* allow-unknown */, &unsetlist);
 
   add_setshow_filename_cmd ("filename", class_obscure,
 			    &tdesc_filename_cmd_string,
@@ -1858,11 +1957,15 @@ Unset the file to read for an XML target
 When unset, GDB will read the description from the target."),
 	   &tdesc_unset_cmdlist);
 
-  add_cmd ("c-tdesc", class_maintenance, maint_print_c_tdesc_cmd, _("\
+  cmd = add_cmd ("c-tdesc", class_maintenance, maint_print_c_tdesc_cmd, _("\
 Print the current target description as a C source file."),
 	   &maintenanceprintlist);
+  set_cmd_completer (cmd, filename_completer);
 
-  cmd_list_element *cmd;
+  cmd = add_cmd ("xml-tdesc", class_maintenance, maint_print_xml_tdesc_cmd, _("\
+Print the current target description as an XML file."),
+		 &maintenanceprintlist);
+  set_cmd_completer (cmd, filename_completer);
 
   cmd = add_cmd ("xml-descriptions", class_maintenance,
 		 maintenance_check_xml_descriptions, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-descriptions.h ./gdb/target-descriptions.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-descriptions.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target-descriptions.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target description support for GDB.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    Contributed by CodeSourcery.
 
@@ -80,6 +80,30 @@ void set_tdesc_pseudo_register_reggroup_
   (struct gdbarch *gdbarch,
    gdbarch_register_reggroup_p_ftype *pseudo_reggroup_p);
 
+/* Pointer to a function that should be called for each unknown register in
+   a target description, used by TDESC_USE_REGISTERS.
+
+   GDBARCH is the architecture the target description is for, FEATURE is
+   the feature the unknown register is in, and REG_NAME is the name of the
+   register from the target description.  The POSSIBLE_REGNUM is a proposed
+   (GDB internal) number for this register.
+
+   The callback function can return, (-1) to indicate that the register
+   should not be assigned POSSIBLE_REGNUM now (though it might be later),
+   GDB will number the register automatically later on.  Return
+   POSSIBLE_REGNUM (or greater) to have this register assigned that number.
+   Returning a value less that POSSIBLE_REGNUM is also acceptable, but take
+   care not to clash with a register number that has already been
+   assigned.
+
+   The callback will always be called on the registers in the order they
+   appear in the target description.  This means all unknown registers
+   within a single feature will be called one after another.  */
+
+typedef int (*tdesc_unknown_register_ftype)
+	(struct gdbarch *gdbarch, tdesc_feature *feature,
+	 const char *reg_name, int possible_regnum);
+
 /* Update GDBARCH to use the TARGET_DESC for registers.  TARGET_DESC
    may be GDBARCH's target description or (if GDBARCH does not have
    one which describes registers) another target description
@@ -95,7 +119,8 @@ void set_tdesc_pseudo_register_reggroup_
 
 void tdesc_use_registers (struct gdbarch *gdbarch,
 			  const struct target_desc *target_desc,
-			  struct tdesc_arch_data *early_data);
+			  struct tdesc_arch_data *early_data,
+			  tdesc_unknown_register_ftype unk_reg_cb = NULL);
 
 /* Allocate initial data for validation of a target description during
    gdbarch initialization.  */
@@ -200,18 +225,6 @@ struct type *tdesc_find_type (struct gdb
 int tdesc_register_in_reggroup_p (struct gdbarch *gdbarch, int regno,
 				  struct reggroup *reggroup);
 
-
-/* A deleter adapter for a target desc.  */
-
-struct target_desc_deleter
-{
-  void operator() (struct target_desc *desc) const;
-};
-
-/* A unique pointer specialization that holds a target_desc.  */
-
-typedef std::unique_ptr<target_desc, target_desc_deleter> target_desc_up;
-
 /* Methods for constructing a target description.  */
 
 void set_tdesc_architecture (struct target_desc *,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-float.c ./gdb/target-float.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-float.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target-float.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Floating point routines for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -647,8 +647,8 @@ host_float_ops<T>::from_target (const st
     {
       double dto;
 
-      floatformat_to_double (fmt->split_half ? fmt->split_half : fmt,
-			     from, &dto);
+      floatformat_to_double	/* ARI: floatformat_to_double */
+	(fmt->split_half ? fmt->split_half : fmt, from, &dto);
       *to = (T) dto;
       return;
     }
@@ -1742,7 +1742,7 @@ mpfr_float_ops::compare (const gdb_byte
 static void
 match_endianness (const gdb_byte *from, const struct type *type, gdb_byte *to)
 {
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_DECFLOAT);
+  gdb_assert (type->code () == TYPE_CODE_DECFLOAT);
 
   int len = TYPE_LENGTH (type);
   int i;
@@ -1768,7 +1768,7 @@ match_endianness (const gdb_byte *from,
 static void
 set_decnumber_context (decContext *ctx, const struct type *type)
 {
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_DECFLOAT);
+  gdb_assert (type->code () == TYPE_CODE_DECFLOAT);
 
   switch (TYPE_LENGTH (type))
     {
@@ -2142,7 +2142,7 @@ static bool
 target_float_same_category_p (const struct type *type1,
 			      const struct type *type2)
 {
-  return TYPE_CODE (type1) == TYPE_CODE (type2);
+  return type1->code () == type2->code ();
 }
 
 /* Return whether TYPE1 and TYPE2 use the same floating-point format.  */
@@ -2153,7 +2153,7 @@ target_float_same_format_p (const struct
   if (!target_float_same_category_p (type1, type2))
     return false;
 
-  switch (TYPE_CODE (type1))
+  switch (type1->code ())
     {
       case TYPE_CODE_FLT:
 	return floatformat_from_type (type1) == floatformat_from_type (type2);
@@ -2173,7 +2173,7 @@ target_float_same_format_p (const struct
 static int
 target_float_format_length (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
       case TYPE_CODE_FLT:
 	return floatformat_totalsize_bytes (floatformat_from_type (type));
@@ -2205,7 +2205,7 @@ enum target_float_ops_kind
 static enum target_float_ops_kind
 get_target_float_ops_kind (const struct type *type)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
       case TYPE_CODE_FLT:
         {
@@ -2300,7 +2300,7 @@ get_target_float_ops (const struct type
 static const target_float_ops *
 get_target_float_ops (const struct type *type1, const struct type *type2)
 {
-  gdb_assert (TYPE_CODE (type1) == TYPE_CODE (type2));
+  gdb_assert (type1->code () == type2->code ());
 
   enum target_float_ops_kind kind1 = get_target_float_ops_kind (type1);
   enum target_float_ops_kind kind2 = get_target_float_ops_kind (type2);
@@ -2315,10 +2315,10 @@ get_target_float_ops (const struct type
 bool
 target_float_is_valid (const gdb_byte *addr, const struct type *type)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_FLT)
+  if (type->code () == TYPE_CODE_FLT)
     return floatformat_is_valid (floatformat_from_type (type), addr);
 
-  if (TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
+  if (type->code () == TYPE_CODE_DECFLOAT)
     return true;
 
   gdb_assert_not_reached ("unexpected type code");
@@ -2329,11 +2329,11 @@ target_float_is_valid (const gdb_byte *a
 bool
 target_float_is_zero (const gdb_byte *addr, const struct type *type)
 {
-  if (TYPE_CODE (type) == TYPE_CODE_FLT)
+  if (type->code () == TYPE_CODE_FLT)
     return (floatformat_classify (floatformat_from_type (type), addr)
 	    == float_zero);
 
-  if (TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
+  if (type->code () == TYPE_CODE_DECFLOAT)
     return decimal_is_zero (addr, type);
 
   gdb_assert_not_reached ("unexpected type code");
@@ -2347,7 +2347,7 @@ target_float_to_string (const gdb_byte *
 {
   /* Unless we need to adhere to a specific format, provide special
      output for special cases of binary floating-point numbers.  */
-  if (format == nullptr && TYPE_CODE (type) == TYPE_CODE_FLT)
+  if (format == nullptr && type->code () == TYPE_CODE_FLT)
     {
       const struct floatformat *fmt = floatformat_from_type (type);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-float.h ./gdb/target-float.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-float.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target-float.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Floating point definitions for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target.h ./gdb/target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Interface between GDB and target environments, including files and processes
 
-   Copyright (C) 1990-2020 Free Software Foundation, Inc.
+   Copyright (C) 1990-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.  Written by John Gilmore.
 
@@ -43,6 +43,7 @@ struct inferior;
 #include "infrun.h" /* For enum exec_direction_kind.  */
 #include "breakpoint.h" /* For enum bptype.  */
 #include "gdbsupport/scoped_restore.h"
+#include "gdbsupport/refcounted-object.h"
 
 /* This include file defines the interface between the main part
    of the debugger, and the part which is target-specific, or
@@ -427,6 +428,7 @@ struct target_info
 };
 
 struct target_ops
+  : public refcounted_object
   {
     /* Return this target's stratum.  */
     virtual strata stratum () const = 0;
@@ -445,10 +447,10 @@ struct target_ops
     virtual const target_info &info () const = 0;
 
     /* Name this target type.  */
-    const char *shortname ()
+    const char *shortname () const
     { return info ().shortname; }
 
-    const char *longname ()
+    const char *longname () const
     { return info ().longname; }
 
     /* Close the target.  This is where the target can handle
@@ -478,6 +480,13 @@ struct target_ops
       TARGET_DEFAULT_NORETURN (noprocess ());
     virtual void commit_resume ()
       TARGET_DEFAULT_IGNORE ();
+    /* See target_wait's description.  Note that implementations of
+       this method must not assume that inferior_ptid on entry is
+       pointing at the thread or inferior that ends up reporting an
+       event.  The reported event could be for some other thread in
+       the current inferior or even for a different process of the
+       current target.  inferior_ptid may also be null_ptid on
+       entry.  */
     virtual ptid_t wait (ptid_t, struct target_waitstatus *,
 			 int TARGET_DEBUG_PRINTER (target_debug_print_options))
       TARGET_DEFAULT_FUNC (default_target_wait);
@@ -613,7 +622,7 @@ struct target_ops
       TARGET_DEFAULT_RETURN (1);
     virtual int remove_vfork_catchpoint (int)
       TARGET_DEFAULT_RETURN (1);
-    virtual int follow_fork (int, int)
+    virtual bool follow_fork (bool, bool)
       TARGET_DEFAULT_FUNC (default_follow_fork);
     virtual int insert_exec_catchpoint (int)
       TARGET_DEFAULT_RETURN (1);
@@ -679,7 +688,7 @@ struct target_ops
     virtual bool has_memory () { return false; }
     virtual bool has_stack () { return false; }
     virtual bool has_registers () { return false; }
-    virtual bool has_execution (ptid_t) { return false; }
+    virtual bool has_execution (inferior *inf) { return false; }
 
     /* Control thread execution.  */
     virtual thread_control_capabilities get_thread_control_capabilities ()
@@ -694,6 +703,8 @@ struct target_ops
       TARGET_DEFAULT_RETURN (false);
     virtual void async (int)
       TARGET_DEFAULT_NORETURN (tcomplain ());
+    virtual int async_wait_fd ()
+      TARGET_DEFAULT_NORETURN (noprocess ());
     virtual void thread_events (int)
       TARGET_DEFAULT_IGNORE ();
     /* This method must be implemented in some situations.  See the
@@ -870,6 +881,14 @@ struct target_ops
     virtual bool supports_evaluation_of_breakpoint_conditions ()
       TARGET_DEFAULT_RETURN (false);
 
+    /* Does this target support native dumpcore API?  */
+    virtual bool supports_dumpcore ()
+      TARGET_DEFAULT_RETURN (false);
+
+    /* Generate the core file with native target API.  */
+    virtual void dumpcore (const char *filename)
+      TARGET_DEFAULT_IGNORE ();
+
     /* Does this target support evaluation of breakpoint commands on its
        end?  */
     virtual bool can_run_breakpoint_commands ()
@@ -878,11 +897,10 @@ struct target_ops
     /* Determine current architecture of thread PTID.
 
        The target is supposed to determine the architecture of the code where
-       the target is currently stopped at (on Cell, if a target is in spu_run,
-       to_thread_architecture would return SPU, otherwise PPC32 or PPC64).
-       This is architecture used to perform decr_pc_after_break adjustment,
-       and also determines the frame architecture of the innermost frame.
-       ptrace operations need to operate according to target_gdbarch ().  */
+       the target is currently stopped at.  The architecture information is
+       used to perform decr_pc_after_break adjustment, and also to determine
+       the frame architecture of the innermost frame.  ptrace operations need to
+       operate according to target_gdbarch ().  */
     virtual struct gdbarch *thread_architecture (ptid_t)
       TARGET_DEFAULT_RETURN (NULL);
 
@@ -1258,6 +1276,27 @@ struct target_ops_deleter
 /* A unique pointer for target_ops.  */
 typedef std::unique_ptr<target_ops, target_ops_deleter> target_ops_up;
 
+/* Decref a target and close if, if there are no references left.  */
+extern void decref_target (target_ops *t);
+
+/* A policy class to interface gdb::ref_ptr with target_ops.  */
+
+struct target_ops_ref_policy
+{
+  static void incref (target_ops *t)
+  {
+    t->incref ();
+  }
+
+  static void decref (target_ops *t)
+  {
+    decref_target (t);
+  }
+};
+
+/* A gdb::ref_ptr pointer to a target_ops.  */
+typedef gdb::ref_ptr<target_ops, target_ops_ref_policy> target_ops_ref;
+
 /* Native target backends call this once at initialization time to
    inform the core about which is the target that can respond to "run"
    or "attach".  Note: native targets are always singletons.  */
@@ -1312,6 +1351,9 @@ private:
 
 extern target_ops *current_top_target ();
 
+/* Return the dummy target.  */
+extern target_ops *get_dummy_target ();
+
 /* Define easy words for doing these operations on our current target.  */
 
 #define	target_shortname	(current_top_target ()->shortname ())
@@ -1465,14 +1507,29 @@ int target_supports_disable_randomizatio
 #define target_supports_evaluation_of_breakpoint_conditions() \
   (current_top_target ()->supports_evaluation_of_breakpoint_conditions) ()
 
+/* Does this target support dumpcore API?  */
+
+#define target_supports_dumpcore() \
+  (current_top_target ()->supports_dumpcore) ()
+
+/* Generate the core file with target API.  */
+
+#define target_dumpcore(x) \
+  (current_top_target ()->dumpcore (x))
+
 /* Returns true if this target can handle breakpoint commands
    on its end.  */
 
 #define target_can_run_breakpoint_commands() \
   (current_top_target ()->can_run_breakpoint_commands) ()
 
-extern int target_read_string (CORE_ADDR, gdb::unique_xmalloc_ptr<char> *,
-			       int, int *);
+/* Read a string from target memory at address MEMADDR.  The string
+   will be at most LEN bytes long (note that excess bytes may be read
+   in some cases -- but these will not be returned).  Returns nullptr
+   on error.  */
+
+extern gdb::unique_xmalloc_ptr<char> target_read_string
+  (CORE_ADDR memaddr, int len, int *bytes_read = nullptr);
 
 /* For target_read_memory see target/target.h.  */
 
@@ -1626,10 +1683,10 @@ extern void target_load (const char *arg
    necessary to continue debugging either the parent or child, as
    requested, and releasing the other.  Information about the fork
    or vfork event is available via get_last_target_status ().
-   This function returns 1 if the inferior should not be resumed
+   This function returns true if the inferior should not be resumed
    (i.e. there is another event pending).  */
 
-int target_follow_fork (int follow_child, int detach_fork);
+bool target_follow_fork (bool follow_child, bool detach_fork);
 
 /* Handle the target-specific bookkeeping required when the inferior
    makes an exec call.  INF is the exec'd inferior.  */
@@ -1784,9 +1841,10 @@ extern int target_has_registers_1 (void)
    case this will become true after to_create_inferior or
    to_attach.  */
 
-extern int target_has_execution_1 (ptid_t);
+extern bool target_has_execution_1 (inferior *inf);
 
-/* Like target_has_execution_1, but always passes inferior_ptid.  */
+/* Like target_has_execution_1, but always passes
+   current_inferior().  */
 
 extern int target_has_execution_current (void);
 
@@ -1822,6 +1880,9 @@ extern enum auto_boolean target_non_stop
    non-stop" is on.  */
 extern int target_is_non_stop_p (void);
 
+/* Return true if at least one inferior has a non-stop target.  */
+extern bool exists_non_stop_target ();
+
 #define target_execution_direction() \
   (current_top_target ()->execution_direction ())
 
@@ -2097,21 +2158,15 @@ extern int target_search_memory (CORE_AD
   current_top_target ()->filesystem_is_local ()
 
 /* Open FILENAME on the target, in the filesystem as seen by INF,
-   using FLAGS and MODE.  If INF is NULL, use the filesystem seen
-   by the debugger (GDB or, for remote targets, the remote stub).
-   Return a target file descriptor, or -1 if an error occurs (and
-   set *TARGET_ERRNO).  */
+   using FLAGS and MODE.  If INF is NULL, use the filesystem seen by
+   the debugger (GDB or, for remote targets, the remote stub).  Return
+   a target file descriptor, or -1 if an error occurs (and set
+   *TARGET_ERRNO).  If WARN_IF_SLOW is true, print a warning message
+   if the file is being accessed over a link that may be slow.  */
 extern int target_fileio_open (struct inferior *inf,
 			       const char *filename, int flags,
-			       int mode, int *target_errno);
-
-/* Like target_fileio_open, but print a warning message if the
-   file is being accessed over a link that may be slow.  */
-extern int target_fileio_open_warn_if_slow (struct inferior *inf,
-					    const char *filename,
-					    int flags,
-					    int mode,
-					    int *target_errno);
+			       int mode, bool warn_if_slow,
+			       int *target_errno);
 
 /* Write up to LEN bytes from WRITE_BUF to FD on the target.
    Return the number of bytes written, or -1 if an error occurs
@@ -2344,6 +2399,20 @@ extern void push_target (target_ops_up &
 
 extern int unpush_target (struct target_ops *);
 
+/* A unique_ptr helper to unpush a target.  */
+
+struct target_unpusher
+{
+  void operator() (struct target_ops *ops) const
+  {
+    unpush_target (ops);
+  }
+};
+
+/* A unique_ptr that unpushes a target on destruction.  */
+
+typedef std::unique_ptr<struct target_ops, target_unpusher> target_unpush_up;
+
 extern void target_pre_inferior (int);
 
 extern void target_preopen (int);
@@ -2359,7 +2428,7 @@ extern void pop_all_targets_at_and_above
    strictly above ABOVE_STRATUM.  */
 extern void pop_all_targets_above (enum strata above_stratum);
 
-extern int target_is_pushed (struct target_ops *t);
+extern bool target_is_pushed (target_ops *t);
 
 extern CORE_ADDR target_translate_tls_address (struct objfile *objfile,
 					       CORE_ADDR offset);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-memory.c ./gdb/target-memory.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/target-memory.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/target-memory.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Parts of target interface that deal with accessing memory and memory-like
    objects.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/terminal.h ./gdb/terminal.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/terminal.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/terminal.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Terminal interface definitions for GDB, the GNU Debugger.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/aclocal.m4 ./gdb/testsuite/aclocal.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/aclocal.m4	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/aclocal.m4	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,6 @@
 m4_include(../../config/acx.m4)
 m4_include(../../config/override.m4)
+m4_include(../../config/enable.m4)
 m4_include(../transform.m4)
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/analyze-racy-logs.py ./gdb/testsuite/analyze-racy-logs.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/analyze-racy-logs.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/analyze-racy-logs.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/cc-with-debug-names.exp ./gdb/testsuite/boards/cc-with-debug-names.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/cc-with-debug-names.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/cc-with-debug-names.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/cc-with-dwz.exp ./gdb/testsuite/boards/cc-with-dwz.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/cc-with-dwz.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/cc-with-dwz.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/cc-with-dwz-m.exp ./gdb/testsuite/boards/cc-with-dwz-m.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/cc-with-dwz-m.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/cc-with-dwz-m.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/cc-with-gdb-index.exp ./gdb/testsuite/boards/cc-with-gdb-index.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/cc-with-gdb-index.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/cc-with-gdb-index.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/cc-with-tweaks.exp ./gdb/testsuite/boards/cc-with-tweaks.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/cc-with-tweaks.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/cc-with-tweaks.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -69,7 +69,5 @@ if ![info exists F77_FOR_TARGET] {
 }
 set F77_FOR_TARGET "$contrib_dir/cc-with-tweaks.sh $CC_WITH_TWEAKS_FLAGS $F77_FOR_TARGET"
 
-set pwd [exec pwd -P]
-exec echo $GDB $INTERNAL_GDBFLAGS $GDBFLAGS \"\$@\" > $pwd/gdb.sh
-exec chmod +x gdb.sh
-set env(GDB) $pwd/gdb.sh
+set env(GDB) \
+    [cached_file gdb.sh "$GDB $INTERNAL_GDBFLAGS $GDBFLAGS \"\$@\"" 1]
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/debug-types.exp ./gdb/testsuite/boards/debug-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/debug-types.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/boards/debug-types.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,41 @@
+# Copyright 2020-2021 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 file is a dejagnu "board file" and is used to run the testsuite
+# with -fdebug-types-section.
+#
+# Example usage:
+# bash$ make check RUNTESTFLAGS='--target_board=debug-types'
+
+load_board_description "local-board"
+
+# This is based on baseboards/unix.exp.
+# At the moment we only support systems that unix.exp supports.
+load_generic_config "unix"
+process_multilib_options ""
+set found_gcc [find_gcc]
+set found_gxx [find_g++]
+set found_gnatmake [find_gnatmake]
+set found_f90 [find_gfortran]
+set found_f77 [find_g77]
+set_board_info compiler "$found_gcc"
+
+# The -fdebug-types-section switch only has an effect with DWARF version 4.
+# For now, we don't enforce DWARF-4.  This lets test-cases that enforce a
+# different version alone.  And since DWARF-4 is the default for gcc-4.8
+# - gcc-10 anyway, we don't lose much test coverage that way.
+#set_board_info debug_flags "-gdwarf-4 -fdebug-types-section"
+
+set_board_info debug_flags "-g -fdebug-types-section"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/dwarf4-gdb-index.exp ./gdb/testsuite/boards/dwarf4-gdb-index.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/dwarf4-gdb-index.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/dwarf4-gdb-index.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/fission-dwp.exp ./gdb/testsuite/boards/fission-dwp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/fission-dwp.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/fission-dwp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/fission.exp ./gdb/testsuite/boards/fission.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/fission.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/fission.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/gdbserver-base.exp ./gdb/testsuite/boards/gdbserver-base.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/gdbserver-base.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/gdbserver-base.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -22,7 +22,7 @@ process_multilib_options ""
 set_board_info compiler "[find_gcc]"
 
 # Test the copy of gdbserver in the build directory.
-set_board_info gdb_server_prog "[pwd]/../gdbserver/gdbserver"
+set_board_info gdb_server_prog "[pwd]/../../gdbserver/gdbserver"
 
 # gdbserver does not intercept target file operations and perform them
 # on the host.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/gold.exp ./gdb/testsuite/boards/gold.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/gold.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/boards/gold.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,32 @@
+# Copyright 2020-2021 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 file is a dejagnu "board file" and is used to run the testsuite
+# with the gold linker.
+#
+# Example usage:
+# bash$ make check RUNTESTFLAGS='--target_board=gold'
+
+# This is copied from baseboards/unix.exp.
+# At the moment this only supports things that unix.exp supports.
+load_generic_config "unix"
+process_multilib_options ""
+set_board_info compiler "[find_gcc]"
+
+set_board_info debug_flags \
+    [join { "-g" "-fuse-ld=gold" }]
+
+# This is needed otherwise dejagnu tries to rsh to host "gold".
+load_board_description "local-board"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/gold-gdb-index.exp ./gdb/testsuite/boards/gold-gdb-index.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/gold-gdb-index.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/boards/gold-gdb-index.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,45 @@
+# Copyright 2020-2021 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 file is a dejagnu "board file" and is used to run the testsuite
+# with gold --gdb-index.
+#
+# Example usage:
+# bash$ make check RUNTESTFLAGS='--target_board=gold-gdb-index'
+
+load_board_description "local-board"
+
+# This is based on baseboards/unix.exp.
+# At the moment we only support systems that unix.exp supports.
+load_generic_config "unix"
+process_multilib_options ""
+set found_gcc [find_gcc]
+set found_gxx [find_g++]
+set found_gnatmake [find_gnatmake]
+set found_f90 [find_gfortran]
+set found_f77 [find_g77]
+set_board_info compiler "$found_gcc"
+
+set opts [list]
+lappend opts \
+    "-g" \
+    "-Wl,--gdb-index" \
+    "-fuse-ld=gold"
+
+# Note: Gold also produces an index when -ggnu-pubnames is not used.  Comment
+# out this line to exercise this scenario.
+lappend opts -ggnu-pubnames
+
+set_board_info debug_flags [join $opts]
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/local-board.exp ./gdb/testsuite/boards/local-board.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/local-board.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/local-board.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/local-remote-host.exp ./gdb/testsuite/boards/local-remote-host.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/local-remote-host.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/local-remote-host.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/local-remote-host-native.exp ./gdb/testsuite/boards/local-remote-host-native.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/local-remote-host-native.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/local-remote-host-native.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/local-remote-host-notty.exp ./gdb/testsuite/boards/local-remote-host-notty.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/local-remote-host-notty.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/local-remote-host-notty.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/native-extended-gdbserver.exp ./gdb/testsuite/boards/native-extended-gdbserver.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/native-extended-gdbserver.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/native-extended-gdbserver.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -102,7 +102,7 @@ proc gdb_file_cmd { arg } {
     return [extended_gdbserver_load_last_file]
 }
 
-proc gdb_reload { } {
+proc gdb_reload { {inferior_args {}} } {
     return [extended_gdbserver_load_last_file]
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/native-gdbserver.exp ./gdb/testsuite/boards/native-gdbserver.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/native-gdbserver.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/native-gdbserver.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -27,9 +27,6 @@ load_board_description "local-board"
 # This gdbserver can only run a process once per session.
 set_board_info gdb,do_reload_on_run 1
 
-# There's no support for argument-passing (yet).
-set_board_info noargs 1
-
 set_board_info use_gdb_stub 1
 set_board_info exit_is_reliable 1
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/native-stdio-gdbserver.exp ./gdb/testsuite/boards/native-stdio-gdbserver.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/native-stdio-gdbserver.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/native-stdio-gdbserver.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/readnow.exp ./gdb/testsuite/boards/readnow.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/readnow.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/readnow.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/remote-gdbserver-on-localhost.exp ./gdb/testsuite/boards/remote-gdbserver-on-localhost.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/remote-gdbserver-on-localhost.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/remote-gdbserver-on-localhost.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/remote-stdio-gdbserver.exp ./gdb/testsuite/boards/remote-stdio-gdbserver.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/remote-stdio-gdbserver.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/remote-stdio-gdbserver.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/simavr.exp ./gdb/testsuite/boards/simavr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/simavr.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/boards/simavr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,124 @@
+# Copyright 2020-2021 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/>.
+
+# Let the user override the path to the simavr binary with the SIMAVR_PATH
+# environment variable.
+
+if { [info exists ::env(SIMAVR_PATH)] } {
+    set simavr_path $::env(SIMAVR_PATH)
+} else {
+    set simavr_path simavr
+}
+
+# Let the user override the simulated AVR chip with the SIMAVR_PATH environment
+# variable.
+#
+# The value passed here must be supported by avr-gcc (see the -mmcu flag in the
+# `AVR Options` section of the gcc(1) man page) and by simavr (see output of
+# `simavr --list-cores`).
+
+if { [info exists ::env(SIMAVR_MCU)] } {
+    set simavr_mcu $::env(SIMAVR_MCU)
+} else {
+    set simavr_mcu atmega2560
+}
+
+set simavr_last_load_file ""
+set simavr_spawn_id ""
+
+set_board_info compiler avr-gcc
+set_board_info c++compiler avr-g++
+
+set_board_info cflags "-mmcu=${simavr_mcu}"
+set_board_info ldflags "-mmcu=${simavr_mcu}"
+
+set_board_info use_gdb_stub 1
+set_board_info gdb_protocol "remote"
+set_board_info gdb,do_reload_on_run 1
+set_board_info noargs 1
+set_board_info gdb,noinferiorio 1
+set_board_info gdb,nofileio 1
+set_board_info gdb,noresults 1
+set_board_info gdb,nosignals 1
+
+proc gdb_load { file } {
+    global simavr_last_load_file
+    global simavr_spawn_id
+    global simavr_mcu
+    global simavr_path
+    global gdb_prompt
+
+    if { $file == "" } {
+	set file $simavr_last_load_file
+    } else {
+	set simavr_last_load_file $file
+    }
+
+    gdb_file_cmd $file
+
+    # Close any previous simavr instance.
+    if { $simavr_spawn_id != "" } {
+	verbose -log "simavr: closing previous spawn id $simavr_spawn_id"
+	if [catch { close -i $simavr_spawn_id } != 0] {
+	    warning "simavr: failed to close connection to previous simavr instance"
+	}
+
+	wait -i $simavr_spawn_id
+	set simavr_spawn_id ""
+    }
+
+    # Run simavr.
+    set cmd "spawn -noecho ${simavr_path} --mcu ${simavr_mcu} -g $file"
+    verbose -log "Spawning simavr: $cmd"
+    eval $cmd
+    set simavr_spawn_id $spawn_id
+
+    verbose -log "simavr: simavr spawned with spawn id $simavr_spawn_id, pid [exp_pid $simavr_spawn_id]"
+
+    # Wait for "listening on port" message of simavr.
+    expect {
+	-i $simavr_spawn_id -re ".*avr_gdb_init listening on port 1234" {}
+	timeout {
+	    verbose -log "simavr: timeout, closing simavr spawn id"
+	    close -i $simavr_spawn_id
+	    verbose -log "simavr: timeout, waiting for simavr process exit"
+	    wait -i $simavr_spawn_id
+	    set simavr_spawn_id ""
+	    error "unable to start simavr: timeout"
+	}
+	eof {
+	    verbose -log "simavr: eof, waiting for simavr process exit"
+	    wait -i $simavr_spawn_id
+	    set simavr_spawn_id ""
+	    error "unable to start simavr: eof"
+	}
+    }
+
+    # Connect to simavr.
+    send_gdb "target remote :1234\n"
+    gdb_expect {
+	-re ".*Remote debugging using :1234.*\[\r\n\]+$gdb_prompt $" {}
+	timeout {
+	    verbose -log "simavr: unable to connect to simavr, closing simavr spawn id"
+	    close -i $simavr_spawn_id
+	    verbose -log "simavr: unable to connect to simavr, waiting for simavr process exit"
+	    wait -i $simavr_spawn_id
+	    set simavr_spawn_id ""
+	    error "unable to connect to simavr stub"
+	}
+    }
+
+    return 0
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/stabs.exp ./gdb/testsuite/boards/stabs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/stabs.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/stabs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/stdio-gdbserver-base.exp ./gdb/testsuite/boards/stdio-gdbserver-base.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/boards/stdio-gdbserver-base.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/boards/stdio-gdbserver-base.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -45,7 +45,7 @@ proc make_gdbserver_stdio_port {} {
     return "| [get_target_remote_pipe_cmd]"
 }
 
-proc gdb_reload { } {
+proc gdb_reload { {inferior_args {}} } {
     return [gdb_target_cmd "remote" [make_gdbserver_stdio_port]]
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/ChangeLog ./gdb/testsuite/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/ChangeLog	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/ChangeLog	2021-05-21 01:57:24.000000000 +0000
@@ -1,13 +1,3449 @@
+2021-04-23  Tom Tromey  <tromey@adacore.com>
+
+	PR gdb/27743:
+	* gdb.dwarf2/imported-unit-bp.exp: New file.
+	* gdb.dwarf2/imported-unit-bp-main.c: New file.
+	* gdb.dwarf2/imported-unit-bp-alt.c: New file.
+
+2021-04-25  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdb.base/default.exp: Change $_gdb_minor to 3.
+
+2021-04-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdb.python/flexible-array-member.exp: Add check for Python
+	support.
+
+2021-04-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/27757
+	* gdb.python/flexible-array-member.c: New test.
+	* gdb.python/flexible-array-member.exp: New test.
+	* gdb.guile/scm-type.exp (test_range): Add test for flexible
+	array member.
+	* gdb.guile/scm-type.c (struct flex_member): New.
+	(main): Use it.
+
+2021-04-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/27757
+	* gdb.python/flexible-array-member.c: New test.
+	* gdb.python/flexible-array-member.exp: New test.
+	* gdb.guile/scm-type.exp (test_range): Add test for flexible
+	array member.
+	* gdb.guile/scm-type.c (struct flex_member): New.
+	(main): Use it.
+
+2021-03-30  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/27541
+	* gdb.base/index-cache-load-twice.exp: Remove.
+	* gdb.base/index-cache-load-twice.c: Remove.
+	* gdb.dwarf2/per-bfd-sharing.exp: New.
+	* gdb.dwarf2/per-bfd-sharing.c: New.
+
+2021-03-07  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/27341
+	* lib/gdb.exp (with_complaints): New proc, factored out of ...
+	(gdb_load_no_complaints): ... here.
+	* gdb.fortran/function-calls.exp: Add test-case.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* lib/dwarf.exp (rnglists): Add -no-offset-array option to
+	table proc.
+	* gdb.dwarf2/rnglists-sec-offset.exp: Add test for
+	.debug_rnglists table without offset array.
+	* gdb.dwarf2/loclists-sec-offset.exp: Add test for
+	.debug_loclists table without offset array.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	PR gdb/26813
+	* lib/dwarf.exp (_handle_DW_FORM): Handle DW_FORM_loclistx.
+	(loclists): New proc.
+	* gdb.dwarf2/loclists-multiple-cus.c: New.
+	* gdb.dwarf2/loclists-multiple-cus.exp: New.
+	* gdb.dwarf2/loclists-sec-offset.c: New.
+	* gdb.dwarf2/loclists-sec-offset.exp: New.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* lib/dwarf.exp (_location): Add parameters.
+	(_handle_DW_FORM): Adjust.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	PR gdb/26813
+	* lib/dwarf.exp (_handle_DW_FORM): Handle DW_FORM_rnglistx.
+	(cu): Generate header for DWARF 5.
+	(rnglists): New proc.
+	* gdb.dwarf2/rnglists-multiple-cus.exp: New.
+	* gdb.dwarf2/rnglists-sec-offset.exp: New.
+
+2020-12-09  Simon Marchi  <simon.marchi@efficios.com>
+
+	PR 26875, PR 26901
+	* gdb.base/flexible-array-member.c: New test.
+	* gdb.base/flexible-array-member.exp: New test.
+
+2020-10-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdb.base/default.exp: Change $_gdb_minor to 2.
+
+2020-10-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/26693
+	* gdb.dwarf2/template-specification-full-name.exp: New test.
+
+2020-10-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/26642
+	* gdb.base/maint-target-async-off.c: New test.
+	* gdb.base/maint-target-async-off.exp: New test.
+
+2020-09-28  Gareth Rees <grees@undo.io>  (tiny change)
+
+	PR python/26586
+	* gdb.python/python.exp: add test cases for the from_tty
+	argument to gdb.execute.
+
+2020-09-25  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.base/bp-cmds-sourced-script.c: New file.
+	* gdb.base/bp-cmds-sourced-script.exp: New test.
+	* gdb.base/bp-cmds-sourced-script.gdb: New file.
+
+2020-09-24  Tom Tromey  <tromey@adacore.com>
+
+	PR tui/26638:
+	* gdb.tui/list.exp: Check output of "focus next".
+
+2020-09-18  Victor Collod  <vcollod@nvidia.com>
+
+	PR gdb/26635
+	* gdb.arch/amd64-prologue-skip-cf-protection.exp: Make the test
+	compatible with i386, and move it to...
+	* gdb.arch/i386-prologue-skip-cf-protection.exp: ... here.
+	* gdb.arch/amd64-prologue-skip-cf-protection.c: Move to...
+	* gdb.arch/i386-prologue-skip-cf-protection.c: ... here.
+
+2020-09-18  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/26631
+	* gdb.multi/multi-target-thread-find.exp: New file.
+
+2020-09-18  Pedro Alves  <pedro@palves.net>
+
+	* gdb.multi/multi-target-continue.exp: New file, factored out from
+	multi-target.exp.
+	* gdb.multi/multi-target-info-inferiors.exp: New file, factored out from
+	multi-target.exp.
+	* gdb.multi/multi-target-interrupt.exp: New file, factored out from
+	multi-target.exp.
+	* gdb.multi/multi-target-no-resumed.exp: New file, factored out from
+	multi-target.exp.
+	* gdb.multi/multi-target-ping-pong-next.exp: New file, factored out from
+	multi-target.exp.
+	* gdb.multi/multi-target.exp.tcl: New file, factored out from
+	multi-target.exp.
+	* gdb.multi/multi-target.exp: Delete.
+
+2020-09-16  Tom Tromey  <tromey@adacore.com>
+
+	PR gdb/26598:
+	* gdb.base/skipcxx.exp: New file.
+	* gdb.base/skipcxx.cc: New file.
+
+2020-09-15  Tom Tromey  <tromey@adacore.com>
+
+	PR rust/26197:
+	* lib/rust-support.exp (rust_llvm_version): New proc.
+	* gdb.rust/simple.exp: Check rust_llvm_version.
+
+2020-09-11  Moritz Riesterer  <moritz.riesterer@intel.com>
+	    Felix Willgerodt  <Felix.Willgerodt@intel.com>
+
+	* x86-avx512bf16.c: New file.
+	* x86-avx512bf16.exp: Likewise.
+	* lib/gdb.exp (skip_avx512bf16_tests): New function.
+
+2020-09-11  Tom de Vries  <tdevries@suse.de>
+
+	PR exp/26602
+	* gdb.cp/ambiguous.exp: Add KFAILs for PR26602.
+
+2020-09-11  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.base/bp-cmds-execution-x-script.exp: Remove a stale comment.
+
+2020-09-10  Alan Modra  <amodra@gmail.com>
+
+	PR 26597
+	* gdb.dlang/demangle.exp: Update tests as per gcc commit 387d0773f3.
+
+2020-09-08  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/frame-inlined-in-outer-frame.exp: Consume gdb prompt
+	after gdb_starti_cmd.
+
+2020-09-03  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
+
+	* lib/fortran.exp (fortran_complex8): New proc.
+	(fortran_complex16): New proc.
+	* gdb.fortran/complex.exp: Use routines from fortran.exp
+	* gdb.fortran/pointer-to-pointer.exp: Likewise.
+	* gdb.fortran/vla-ptr-info.exp: Likewise.
+
+2020-09-03  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoint/26546
+	* gdb.base/label-without-address.exp: Runto main first.
+
+2020-09-02  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/mi_var_access.exp: Test children of access variable.
+	* gdb.ada/mi_var_access/mi_access.adb: Add new stop markers.
+	* gdb.ada/mi_var_array.exp: Update.
+
+2020-08-31  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.base/corefile.exp (warning-free): XFAIL test when running
+	on docker w/ AUFS storage driver.
+
+2020-08-31  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.base/corefile2.exp (renamed binfile): New tests.
+
+2020-08-31  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.dwarf2/dw2-reg-undefined.exp: Remove spurious #.
+
+2020-08-31  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.dwarf2/frame-inlined-in-outer-frame.exp: New file.
+	* gdb.dwarf2/frame-inlined-in-outer-frame.S: New file.
+
+2020-08-31  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.dwarf2/dw2-reg-undefined.exp: Test "set debug frame 1"
+	output, printing a "not saved" value from history and printing a
+	convenience variable created from a "not saved" value.
+
+2020-08-31  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/eh_return.exp: Use nopie.
+
+2020-08-28  Pedro Alves  <pedro@palves.net>
+
+	* gdb.base/advance-until-multiple-locations.exp
+	(advance_overload, until_overload): Adjust to match the
+	frame/function header instead of the source line text.
+
+2020-08-28  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/label-without-address.c: New test.
+	* gdb.base/label-without-address.exp: New file.
+
+2020-08-27  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/26523
+	PR gdb/26524
+	* gdb.base/advance-until-multiple-locations.cc: New.
+	* gdb.base/advance-until-multiple-locations.exp: New.
+
+2020-08-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	*  gdb.dwarf2/dw2-reg-undefined.exp: Use multi_line.
+
+2020-08-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.arch/amd64-byte.exp: Make test names unique, use
+	gdb_breakpoint, and fix typo 'forth' -> 'fourth'.
+	* gdb.arch/amd64-dword.exp: Likewise.
+	* gdb.arch/amd64-pseudo.c: Fix typo 'forth' -> 'fourth'.
+	* gdb.arch/amd64-stap-special-operands.exp: Make test names
+	unique.
+	* gdb.arch/amd64-tailcall-ret.exp: Likewise.
+	* gdb.arch/amd64-word.exp: Make test names unique, use
+	gdb_breakpoint, and fix typo 'forth' -> 'fourth'.
+	* gdb.arch/i386-byte.exp: Make test names unique, use
+	gdb_breakpoint.
+	* gdb.arch/i386-word.exp: Likewise.
+
+2020-08-25  Shahab Vahedi  <shahab@synopsys.com>
+
+	* gdb.arch/arc-tdesc-cpu.xml: Use new feature names.
+
+2020-08-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/26532
+	* gdb.threads/stepi-random-signal.exp: Update pattern.
+
+2020-08-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	PR gdb/26532
+	* gdb.base/ui-redirect.exp: Update pattern.
+
+2020-08-25  Gary Benson <gbenson@redhat.com>
+
+	* gdb.dwarf2/dw2-dir-file-name.exp: Use system assembler
+	when compiling with clang.
+	* gdb.dwarf2/dw2-restore.exp: Likewise.
+
+2020-08-25  Gary Benson <gbenson@redhat.com>
+
+	* gdb.cp/ambiguous.exp: Enable test when compiling with GCC.
+	Add additional_flags=-Wno-inaccessible-base when compiling
+	with GCC >= 10.1 or clang.  Add additional_flags=-w when
+	compiling with GCC < 10.
+
+2020-08-25  Gaius Mulley  <gaiusmod2@gmail.com>
+
+	PR m2/26372
+	* gdb.modula2/multidim.c: New file.
+	* gdb.modula2/multidim.exp: New file.
+
+2020-08-24  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* lib/gdb.exp (runto): Always emit fail on internal error.
+
+2020-08-24  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.base/gdb-sigterm.exp (do_test): Update expected regexp.
+	* gdb.threads/signal-while-stepping-over-bp-other-thread.exp:
+	Likewise.
+	* gdb.threads/stepi-random-signal.exp: Likewise.
+
+2020-08-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.base/print-file-var.exp: Fix typo "breapoint".
+	* gdb.trace/strace.exp: Ditto.
+
+2020-08-19  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
+
+	* gdb.fortran/vla-type.exp: Skip commands not required for
+	the Flang compiled binaries after prologue fix.
+
+2020-08-17  Tom de Vries  <tdevries@suse.de>
+	    Tom Tromey  <tromey@adacore.com>
+
+	PR rust/26197:
+	* gdb.rust/simple.exp (xfail_pattern): Update for new failure.
+
+2020-08-17  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/mi_var_access.exp: New file.
+	* gdb.ada/mi_var_access/mi_access.adb: New file.
+	* gdb.ada/mi_var_access/pck.adb: New file.
+	* gdb.ada/mi_var_access/pck.ads: New file.
+
+2020-08-16  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25350
+	* gdb.base/eh_return.c: New test.
+	* gdb.base/eh_return.exp: New file.
+
+2020-08-15  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.fortran/mixed-lang-stack.c (fortran_charlen_t): New type.
+	(mixed_func_1d_): Use fortran_charlen_t in decl.
+
+2020-08-15  Tom de Vries  <tdevries@suse.de>
+
+	PR backtrace/26390
+	* gdb.fortran/mixed-lang-stack.exp: Call bt with -frame-arguments all.
+	Update expected pattern.
+
+2020-08-13  Pedro Alves  <pedro@palves.net>
+
+	* gdb.fortran/complex.exp: Check skip_fortran_tests.
+	* gdb.fortran/library-module.exp: Likewise.
+	* gdb.fortran/logical.exp: Likewise.
+	* gdb.fortran/module.exp: Likewise.
+	* gdb.fortran/print_type.exp: Likewise.
+	* gdb.fortran/vla-alloc-assoc.exp: Likewise.
+	* gdb.fortran/vla-datatypes.exp: Likewise.
+	* gdb.fortran/vla-history.exp: Likewise.
+	* gdb.fortran/vla-ptr-info.exp: Likewise.
+	* gdb.fortran/vla-ptype-sub.exp: Likewise.
+	* gdb.fortran/vla-ptype.exp: Likewise.
+	* gdb.fortran/vla-sizeof.exp: Likewise.
+	* gdb.fortran/vla-type.exp: Likewise.
+	* gdb.fortran/vla-value-sub-arbitrary.exp: Likewise.
+	* gdb.fortran/vla-value-sub-finish.exp: Likewise.
+	* gdb.fortran/vla-value-sub.exp: Likewise.
+	* gdb.fortran/vla-value.exp: Likewise.
+
+2020-08-13  Pedro Alves  <pedro@palves.net>
+
+	* gdb.ada/access_tagged_param.exp: Check skip_ada_tests.
+	* gdb.ada/access_to_packed_array.exp: Likewise.
+	* gdb.ada/access_to_unbounded_array.exp: Likewise.
+	* gdb.ada/addr_arith.exp: Likewise.
+	* gdb.ada/arr_acc_idx_w_gap.exp: Likewise.
+	* gdb.ada/arr_arr.exp: Likewise.
+	* gdb.ada/arr_enum_idx_w_gap.exp: Likewise.
+	* gdb.ada/array_bounds.exp: Likewise.
+	* gdb.ada/array_of_variable_length.exp: Likewise.
+	* gdb.ada/array_ptr_renaming.exp: Likewise.
+	* gdb.ada/array_subscript_addr.exp: Likewise.
+	* gdb.ada/arraydim.exp: Likewise.
+	* gdb.ada/arrayparam.exp: Likewise.
+	* gdb.ada/arrayptr.exp: Likewise.
+	* gdb.ada/assign_1.exp: Likewise.
+	* gdb.ada/assign_arr.exp: Likewise.
+	* gdb.ada/atomic_enum.exp: Likewise.
+	* gdb.ada/attr_ref_and_charlit.exp: Likewise.
+	* gdb.ada/bad-task-bp-keyword.exp: Likewise.
+	* gdb.ada/bias.exp: Likewise.
+	* gdb.ada/boolean_expr.exp: Likewise.
+	* gdb.ada/bp_c_mixed_case.exp: Likewise.
+	* gdb.ada/bp_enum_homonym.exp: Likewise.
+	* gdb.ada/bp_inlined_func.exp: Likewise.
+	* gdb.ada/bp_on_var.exp: Likewise.
+	* gdb.ada/bp_range_type.exp: Likewise.
+	* gdb.ada/bp_reset.exp: Likewise.
+	* gdb.ada/call_pn.exp: Likewise.
+	* gdb.ada/catch_assert_if.exp: Likewise.
+	* gdb.ada/catch_ex.exp: Likewise.
+	* gdb.ada/catch_ex_std.exp: Likewise.
+	* gdb.ada/char_enum.exp: Likewise.
+	* gdb.ada/char_param.exp: Likewise.
+	* gdb.ada/complete.exp: Likewise.
+	* gdb.ada/cond_lang.exp: Likewise.
+	* gdb.ada/convvar_comp.exp: Likewise.
+	* gdb.ada/dgopt.exp: Likewise.
+	* gdb.ada/disc_arr_bound.exp: Likewise.
+	* gdb.ada/display_nested.exp: Likewise.
+	* gdb.ada/dot_all.exp: Likewise.
+	* gdb.ada/dyn_loc.exp: Likewise.
+	* gdb.ada/dyn_stride.exp: Likewise.
+	* gdb.ada/excep_handle.exp: Likewise.
+	* gdb.ada/expr_delims.exp: Likewise.
+	* gdb.ada/expr_with_funcall.exp: Likewise.
+	* gdb.ada/exprs.exp: Likewise.
+	* gdb.ada/fin_fun_out.exp: Likewise.
+	* gdb.ada/fixed_cmp.exp: Likewise.
+	* gdb.ada/formatted_ref.exp: Likewise.
+	* gdb.ada/frame_arg_lang.exp: Likewise.
+	* gdb.ada/frame_args.exp: Likewise.
+	* gdb.ada/fullname_bp.exp: Likewise.
+	* gdb.ada/fun_addr.exp: Likewise.
+	* gdb.ada/fun_in_declare.exp: Likewise.
+	* gdb.ada/fun_overload_menu.exp: Likewise.
+	* gdb.ada/fun_renaming.exp: Likewise.
+	* gdb.ada/funcall_char.exp: Likewise.
+	* gdb.ada/funcall_param.exp: Likewise.
+	* gdb.ada/funcall_ptr.exp: Likewise.
+	* gdb.ada/funcall_ref.exp: Likewise.
+	* gdb.ada/homonym.exp: Likewise.
+	* gdb.ada/info_addr_mixed_case.exp: Likewise.
+	* gdb.ada/info_auto_lang.exp: Likewise.
+	* gdb.ada/info_exc.exp: Likewise.
+	* gdb.ada/info_types.exp: Likewise.
+	* gdb.ada/int_deref.exp: Likewise.
+	* gdb.ada/interface.exp: Likewise.
+	* gdb.ada/iwide.exp: Likewise.
+	* gdb.ada/lang_switch.exp: Likewise.
+	* gdb.ada/length_cond.exp: Likewise.
+	* gdb.ada/maint_with_ada.exp: Likewise.
+	* gdb.ada/mi_catch_assert.exp: Likewise.
+	* gdb.ada/mi_catch_ex.exp: Likewise.
+	* gdb.ada/mi_catch_ex_hand.exp: Likewise.
+	* gdb.ada/mi_dyn_arr.exp: Likewise.
+	* gdb.ada/mi_ex_cond.exp: Likewise.
+	* gdb.ada/mi_exc_info.exp: Likewise.
+	* gdb.ada/mi_interface.exp: Likewise.
+	* gdb.ada/mi_prot.exp: Likewise.
+	* gdb.ada/mi_ref_changeable.exp: Likewise.
+	* gdb.ada/mi_string_access.exp: Likewise.
+	* gdb.ada/mi_task_arg.exp: Likewise.
+	* gdb.ada/mi_task_info.exp: Likewise.
+	* gdb.ada/mi_var_array.exp: Likewise.
+	* gdb.ada/mi_var_union.exp: Likewise.
+	* gdb.ada/mi_variant.exp: Likewise.
+	* gdb.ada/minsyms.exp: Likewise.
+	* gdb.ada/mod_from_name.exp: Likewise.
+	* gdb.ada/nested.exp: Likewise.
+	* gdb.ada/null_array.exp: Likewise.
+	* gdb.ada/optim_drec.exp: Likewise.
+	* gdb.ada/out_of_line_in_inlined.exp: Likewise.
+	* gdb.ada/packed_array_assign.exp: Likewise.
+	* gdb.ada/packed_tagged.exp: Likewise.
+	* gdb.ada/pp-rec-component.exp: Likewise.
+	* gdb.ada/print_chars.exp: Likewise.
+	* gdb.ada/print_pc.exp: Likewise.
+	* gdb.ada/ptr_typedef.exp: Likewise.
+	* gdb.ada/ptype_arith_binop.exp: Likewise.
+	* gdb.ada/ptype_array.exp: Likewise.
+	* gdb.ada/ptype_field.exp: Likewise.
+	* gdb.ada/ptype_tagged_param.exp: Likewise.
+	* gdb.ada/ptype_union.exp: Likewise.
+	* gdb.ada/py_range.exp: Likewise.
+	* gdb.ada/py_taft.exp: Likewise.
+	* gdb.ada/rdv_wait.exp: Likewise.
+	* gdb.ada/rec_comp.exp: Likewise.
+	* gdb.ada/rec_return.exp: Likewise.
+	* gdb.ada/ref_param.exp: Likewise.
+	* gdb.ada/ref_tick_size.exp: Likewise.
+	* gdb.ada/rename_subscript_param.exp: Likewise.
+	* gdb.ada/repeat_dyn.exp: Likewise.
+	* gdb.ada/same_component_name.exp: Likewise.
+	* gdb.ada/same_enum.exp: Likewise.
+	* gdb.ada/scalar_storage.exp: Likewise.
+	* gdb.ada/set_wstr.exp: Likewise.
+	* gdb.ada/small_reg_param.exp: Likewise.
+	* gdb.ada/str_binop_equal.exp: Likewise.
+	* gdb.ada/str_ref_cmp.exp: Likewise.
+	* gdb.ada/str_uninit.exp: Likewise.
+	* gdb.ada/sub_variant.exp: Likewise.
+	* gdb.ada/sym_print_name.exp: Likewise.
+	* gdb.ada/taft_type.exp: Likewise.
+	* gdb.ada/tagged.exp: Likewise.
+	* gdb.ada/tagged_access.exp: Likewise.
+	* gdb.ada/task_bp.exp: Likewise.
+	* gdb.ada/task_switch_in_core.exp: Likewise.
+	* gdb.ada/tasks.exp: Likewise.
+	* gdb.ada/tick_last_segv.exp: Likewise.
+	* gdb.ada/tick_length_array_enum_idx.exp: Likewise.
+	* gdb.ada/type_coercion.exp: Likewise.
+	* gdb.ada/unc_arr_ptr_in_var_rec.exp: Likewise.
+	* gdb.ada/unchecked_union.exp: Likewise.
+	* gdb.ada/uninitialized_vars.exp: Likewise.
+	* gdb.ada/var_arr_attrs.exp: Likewise.
+	* gdb.ada/var_arr_typedef.exp: Likewise.
+	* gdb.ada/var_rec_arr.exp: Likewise.
+	* gdb.ada/variant-record.exp: Likewise.
+	* gdb.ada/variant.exp: Likewise.
+	* gdb.ada/variant_record_packed_array.exp: Likewise.
+	* gdb.ada/varsize_limit.exp: Likewise.
+	* gdb.ada/whatis_array_val.exp: Likewise.
+	* gdb.ada/widewide.exp: Likewise.
+	* gdb.ada/win_fu_syms.exp: Likewise.
+
+2020-08-12  Gary Benson  <gbenson@redhat.com>
+
+	* gdb.dwarf2/dw2-op-out-param.S (.Ltext5): Fix duplicate label.
+
+2020-08-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/check-test-names.exp (do_reset_vars): Use 'array unset' to
+	unset the array variable.
+
+2020-08-03  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26333
+	* lib/dwarf.exp (DW_LNE_user): New proc.
+	* gdb.dwarf2/dw2-vendor-extended-opcode.c: New test.
+	* gdb.dwarf2/dw2-vendor-extended-opcode.exp: New file.
+
+2020-07-31  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.base/coremaker2.c: Change all uses of 'unsigned long long'
+	to 'uintptr_t'
+	(inttypes.h): Include.
+
+2020-07-31  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.base/coremaker2.c (buf_rw): Increase size to 256 KiB.
+	(C5_24k): Delete.
+	(C5_8k, C5_64k, C5_256k): New macros.
+	(buf_ro): Allocate 256 KiB of initialized data.
+
+2020-07-30  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.base/condbreak-bad.exp: Extend the test with scenarios
+	that attempt to overwrite an existing condition with a condition
+	that fails parsing and also with a condition that parses fine
+	but contains junk at the end.
+
+2020-07-30  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.base/condbreak-bad.c: New test.
+	* gdb.base/condbreak-bad.exp: New file.
+
+2020-07-30  Tom de Vries  <tdevries@suse.de>
+
+	* lib/sym-info-cmds.exp (GDBInfoModuleSymbols::check_entry_1): Factor
+	out of ...
+	(GDBInfoModuleSymbols::check_entry): ... here.
+	(GDBInfoModuleSymbols::check_optional_entry): New proc.
+	* gdb.fortran/info-modules.exp: Use check_optional_entry for entries
+	related to __def_init_mod1_M1t1 / __vtype_mod1_M1t1 / __copy_mod1_M1t1.
+
+2020-07-30  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.fortran/ptype-on-functions.exp: Make "_t" suffix on
+	"__class_some_module_Number_t" optional.
+
+2020-07-29  Tom de Vries  <tdevries@suse.de>
+
+	* lib/selftest-support.exp (selftest_setup): Allow breakpoint at
+	multiple locations.
+
+2020-07-29  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/dw2-line-number-zero.exp: Set breakpoints on lines
+	rather than function name.
+
+2020-07-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR symtab/26270:
+	* gdb.cp/disasm-func-name.cc: New file.
+	* gdb.cp/disasm-func-name.exp: New file.
+
+2020-07-28  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.dwarf2/varval.exp (setup_exec): Add 'or' instruction to
+	'varval' location.
+
+2020-07-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.python/py-unwind.py: Update to make use of a register
+	descriptor.
+
+2020-07-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.python/py-arch-reg-names.exp: Add additional tests.
+
+2020-07-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR fortran/23051
+	PR fortran/26139
+	* gdb.fortran/class-allocatable-array.exp: New file.
+	* gdb.fortran/class-allocatable-array.f90: New file.
+	* gdb.fortran/pointer-to-pointer.exp: New file.
+	* gdb.fortran/pointer-to-pointer.f90: New file.
+
+2020-07-25  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26243
+	* gdb.dwarf2/dw2-line-number-zero.c: New test.
+	* gdb.dwarf2/dw2-line-number-zero.exp: New file.
+
+2020-07-24  Tom de Vries  <tdevries@suse.de>
+
+	PR testsuite/26293
+	* gdb.ada/mi_prot.exp: Require gnatmake-8.
+
+2020-07-23  Pedro Alves  <pedro@palves.net>
+
+	* gdb.server/server-kill.exp (prepare): New, factored out from the
+	top level.
+	(kill_server): New.
+	(test_tstatus, test_unwind_nosyms, test_unwind_syms): New.
+	(top level) : Call test_tstatus, test_unwind_nosyms, test_unwind_syms.
+
+2020-07-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.dwarf2/dw2-disasm-over-non-stmt.exp: New file.
+
+2020-07-22  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* lib/gdb.exp (gdb_wrapper_file, gdb_wrapper_flags):
+	Initialize to empty string at top level.
+	(gdb_wrapper_init): Revert check for file existence on build.
+	Build the wrapper in its default place, not a build-specific
+	location.  When host == build, make the pathname absolute.
+	(gdb_compile): Delete leftover declaration of
+	gdb_wrapper_initialized.  Check gdb_wrapper_file being an empty
+	string instead of uninitialized.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.base/corefile2.exp: New file.
+	* gdb.base/coremaker2.exp: New file.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.base/coredump-filter.exp: Add second
+	non-Private-Shared-Anon-File test.
+	(test_disasm): Rename binfile for test which is expected
+	to fail.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.base/corefile.exp: Add test "accessing read-only mmapped
+	data in core file".
+	* gdb.base/coremaker.c (buf2ro): New global.
+	(mmapdata): Add a read-only mmap mapping.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	PR corefiles/25631
+	* gdb.base/corefile.exp (accessing anonymous, unwritten-to mmap data):
+	New test.
+	* gdb.base/coremaker.c (buf3): New global.
+	(mmapdata): Add mmap call which uses MAP_ANONYMOUS and MAP_PRIVATE
+	flags.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* gdb.base/coremaker.c (filler_ro): New global constant.
+
+2020-07-22  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/mi_prot.exp: New file.
+	* gdb.ada/mi_prot/pkg.adb: New file.
+	* gdb.ada/mi_prot/pkg.ads: New file.
+	* gdb.ada/mi_prot/prot.adb: New file.
+
+2020-07-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.base/jit-reader-simple.exp: Add a scenario for a binary that
+	loads two JITers.
+
+2020-07-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.python/py-arch-reg-groups.exp: Additional tests.
+
+2020-07-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.python/py-arch-reg-names.exp: Additional tests.
+
+2020-07-21  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.reverse/solib-precsave.exp: Handle additional "recommended
+	breakpoint locations".
+	* gdb.reverse/solib-reverse.exp: Same.
+
+2020-07-21  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.reverse/step-reverse.c (callee): Merge statements.
+
+2020-07-21  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.fortran/info-modules.exp (info module variables): Allow missing
+	line numbers for some variables.
+
+2020-07-21  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.opt/inline-locals.c (init_array): New func.
+	(func1): Use init_array.
+	* gdb.opt/inline-locals.exp: Update pattern.
+
+2020-07-21  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.debuginfod/fetch_src_and_symbols.exp: Use save_vars for env
+	vars.  Fix PATH and DUPLICATE errors.  Cleanup whitespace.
+
+2020-07-20  Ludovic CourtÃ¨s  <ludo@gnu.org>
+
+	* gdb.guile/source2.scm: Add #f first argument to 'format'.
+	* gdb.guile/types-module.exp: Remove "ERROR:" from
+	regexps since Guile 3.0 no longer prints that.
+
+2020-07-20  Ludovic CourtÃ¨s  <ludo@gnu.org>
+
+	* gdb.guile/scm-error.exp ("source $remote_guile_file_1"): Relax
+	error regexp to match on Guile 2.2.
+
+2020-07-20  Gary Benson <gbenson@redhat.com>
+
+	* gdb.cp/align.exp: Fix "alignof (void)" tests when compiling
+	with clang.
+
+2020-07-20  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.threads/omp-par-scope.c (lock, lock2): New variable.
+	(omp_set_lock_in_order): New function.
+	(single_scope, multi_scope, nested_func, nested_parallel): Use
+	omp_set_lock_in_order and omp_unset_lock.
+	(main): Init and destroy lock and lock2.
+
+2020-07-20  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/valgrind-infcall-2.exp: Handle printf unknown return type.
+
+2020-07-20  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.threads/attach-slow-waitpid.exp: Bail out if gdb_start fails.
+
+2020-07-17  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/valgrind-infcall-2.c: New test.
+	* gdb.base/valgrind-infcall-2.exp: New file.
+	* lib/valgrind.exp (vgdb_start): Add and handle active_at_startup.
+
+2020-07-17  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dlang/circular.c (found): Use found_label as label name.
+	* gdb.dwarf2/arr-subrange.c (main): Use main_label as label name.
+	* gdb.dwarf2/comp-unit-lang.c (func): Use func_label as label name.
+	* gdb.dlang/circular.exp: Use MACRO_AT_func and MACRO_AT_range.
+	* gdb.dwarf2/ada-linkage-name.exp: Same.
+	* gdb.dwarf2/arr-subrange.exp: Same.
+	* gdb.dwarf2/atomic-type.exp: Same.
+	* gdb.dwarf2/comp-unit-lang.exp: Same.
+	* gdb.dwarf2/cpp-linkage-name.exp: Same.
+	* gdb.dwarf2/dw2-bad-mips-linkage-name.exp: Same.
+	* gdb.dwarf2/dw2-lexical-block-bare.exp: Same.
+	* gdb.dwarf2/dw2-regno-invalid.exp: Same.
+	* gdb.dwarf2/implptr-64bit.exp: Same.
+	* gdb.dwarf2/imported-unit-abstract-const-value.exp: Same.
+	* gdb.dwarf2/imported-unit-runto-main.exp: Same.
+	* gdb.dwarf2/imported-unit.exp: Same.
+	* gdb.dwarf2/main-subprogram.exp: Same.
+	* gdb.dwarf2/missing-type-name.exp: Same.
+	* gdb.dwarf2/nonvar-access.exp: Same.
+	* gdb.dwarf2/struct-with-sig.exp: Same.
+	* gdb.dwarf2/typedef-void-finish.exp: Same.
+	* gdb.dwarf2/void-type.exp: Same.
+
+2020-07-17  Tom de Vries  <tdevries@suse.de>
+
+	* lib/dwarf.exp (Dwarf::MACRO_AT_func, Dwarf::MACRO_AT_range): Drop
+	src parameter.
+	* gdb.dlang/watch-loc.exp: Update MACRO_AT_{func,range} calls.
+	* gdb.dwarf2/bitfield-parent-optimized-out.exp: Same.
+	* gdb.dwarf2/dw2-ifort-parameter.exp: Same.
+	* gdb.dwarf2/dw2-opt-structptr.exp: Same.
+	* gdb.dwarf2/dwz.exp: Same.
+	* gdb.dwarf2/implptr-optimized-out.exp: Same.
+	* gdb.dwarf2/implref-array.exp: Same.
+	* gdb.dwarf2/implref-const.exp: Same.
+	* gdb.dwarf2/implref-global.exp: Same.
+	* gdb.dwarf2/implref-struct.exp: Same.
+	* gdb.dwarf2/info-locals-optimized-out.exp: Same.
+	* gdb.dwarf2/opaque-type-lookup.exp: Same.
+	* gdb.dwarf2/var-access.exp: Same.
+	* gdb.dwarf2/varval.exp: Same.
+	* gdb.trace/entry-values.exp: Same.
+
+2020-07-17  Tom de Vries  <tdevries@suse.de>
+
+	* lib/dwarf.exp (Dwarf::extern): Remove.
+	* gdb.compile/compile-ops.exp: Remove use of Dwarf::extern.
+	* gdb.dlang/circular.exp: Same.
+	* gdb.dwarf2/comp-unit-lang.exp: Same.
+	* gdb.dwarf2/dw2-ifort-parameter.exp: Same.
+	* gdb.dwarf2/dw2-symtab-includes.exp: Same.
+	* gdb.dwarf2/dwz.exp: Same.
+	* gdb.dwarf2/imported-unit-abstract-const-value.exp: Same.
+	* gdb.dwarf2/imported-unit-runto-main.exp: Same.
+	* gdb.dwarf2/imported-unit.exp: Same.
+	* gdb.dwarf2/opaque-type-lookup.exp: Same.
+
+2020-07-16  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* gdb.base/shell.exp: Skip pipe tests dependent on sh on Windows host.
+	Use double quotes instead of single quotes.
+
+2020-07-16  Caroline Tice  <cmtice@google.com>
+
+	* gdb.dwarf2/dw5-rnglist-test.cc: New file.
+	* gdb.dwarf2/dw5-rnglist-test.exp: New file.
+
+2020-07-16  Tom de Vries  <tdevries@suse.de>
+
+	* lib/dwarf.exp (program): Initialize _line.
+	(DW_LNE_end_sequence): Reinitialize _line.
+	(DW_LNS_advance_line): Update _line.
+	(line): New proc.
+	* gdb.dwarf2/dw2-inline-many-frames.exp: Use line.
+	* gdb.dwarf2/dw2-inline-small-func.exp: Same.
+	* gdb.dwarf2/dw2-inline-stepping.exp: Same.
+	* gdb.dwarf2/dw2-is-stmt-2.exp: Same.
+	* gdb.dwarf2/dw2-is-stmt.exp: Same.
+	* gdb.dwarf2/dw2-ranges-func.exp: Same.
+
+2020-07-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/ptype-on-functions.exp: Make the result pattern more
+	generic.
+
+2020-07-15  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.trace/entry-values.exp: Expect "call" instead of "callq" if
+	is_amd64_regs_target.
+
+2020-07-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/ptype-on-functions.exp: Add more tests.
+	* gdb.fortran/ptype-on-functions.f90: Likewise.
+
+2020-07-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* lib/dwarf.exp (Dwarf::cu, Dwarf::tu, Dwarf::lines): Change valid
+	values in documentation for addr_size to 4 and 8.
+
+2020-07-14  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.arch/amd64-osabi.exp: Update.
+	* gdb.arch/arm-disassembler-options.exp: Update.
+	* gdb.arch/powerpc-disassembler-options.exp: Update.
+	* gdb.arch/ppc64-symtab-cordic.exp: Update.
+	* gdb.arch/s390-disassembler-options.exp: Update.
+	* gdb.base/all-architectures.exp.tcl: Update.
+	* gdb.base/attach-pie-noexec.exp: Update.
+	* gdb.base/catch-syscall.exp: Update.
+	* gdb.xml/tdesc-arch.exp: Update.
+
+2020-07-14  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.threads/clone-new-thread-event.c (gettid): Rename to ...
+	(local_gettid): ... this.
+	(fn): Update.
+
+2020-07-13  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* gdb.base/info_sources.exp: Skip directory match tests on
+	remote hosts.
+
+2020-07-13  Gary Benson <gbenson@redhat.com>
+
+	* gdb.base/savedregs.exp (caller): Use parentheses to
+	make expected expression evaluation ordering explicit.
+
+2020-07-13  Gary Benson <gbenson@redhat.com>
+
+	* gdb.arch/i386-sse.c (have_sse) <edx>: Make unsigned.
+
+2020-07-13  Gary Benson <gbenson@redhat.com>
+
+	* gdb.base/bigcore.c (main): Use a volatile pointer when
+	attempting to trigger a SIGSEGV.
+	* gdb.base/gcore-relro-pie.c (break_here): Likewise.
+	* gdb.base/gcore-tls-pie.c (break_here): Likewise.
+	* gdb.base/savedregs.c (thrower): Likewise.
+	* gdb.mi/mi-syn-frame.c (bar): Likewise.
+
+2020-07-13  Gary Benson <gbenson@redhat.com>
+
+	* gdb.base/vla-datatypes.c (vla_factory): Factor out sections
+	defining and using VLA structure fields into...
+	* gdb.base/vla-struct-fields.c: New file.
+	* gdb.base/vla-datatypes.exp: Factor out VLA structure field
+	tests into...
+	* gdb.base/vla-struct-fields.exp: New file.
+
+2020-07-13  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (have_fuse_ld_gold): New caching proc.
+	* gdb.base/gcore-tls-pie.exp: Use have_fuse_ld_gold.
+	* gdb.base/gold-gdb-index.exp: Same.
+	* gdb.base/morestack.exp: Same.
+
+2020-07-11  Daniel Xu  <dxu@dxuuu.xyz>
+
+	PR rust/26121
+	* gdb.rust/modules.rs: Prevent linker from discarding test
+	symbol.
+
+2020-07-10  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/26199
+	* gdb.multi/multi-target.c (exit_thread): New.
+	(thread_start): Break loop if EXIT_THREAD.
+	* gdb.multi/multi-target.exp (test_no_unwaited_for): New proc.
+	(top level) Call test_no_resumed.
+
+2020-07-08  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/catch_ex/foo.adb: Pass string to raise.
+	* gdb.ada/catch_ex.exp: Examine catchpoint text.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR python/22748
+	* gdb.opt/inline-frame-tailcall.c: New file.
+	* gdb.opt/inline-frame-tailcall.exp: New file.
+	* gdb.python/py-unwind-inline.c: New file.
+	* gdb.python/py-unwind-inline.exp: New file.
+	* gdb.python/py-unwind-inline.py: New file.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.python/py-arch-reg-groups.exp: New file.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.python/py-arch-reg-names.exp: New file.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.python/py-unwind.py (TestUnwinder::__call__): Add test for
+	gdb.PendingFrame.architecture method.
+
+2020-07-06  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/dw2-ranges-base.exp: Test line-table order.
+
+2020-07-03  Pedro Alves  <palves@redhat.com>
+
+	* gdb.base/structs2.c (main): Adjust second parem_reg call to
+	explicitly write negative numbers.
+	* gdb.base/structs2.exp: Adjust expected output.
+
+2020-07-03  Pedro Alves  <palves@redhat.com>
+
+	* gdb.base/charset.c (init_string): Change all char parameters to
+	unsigned char parameters.
+
+2020-07-03  Pedro Alves  <palves@redhat.com>
+
+	* gdb.base/call-sc.exp (start_scalars_test): Use
+	prepare_for_testing and don't try compiling with -DNO_PROTOTYPES.
+	* gdb.base/overlays.c: Remove references to PARAMS.
+	* gdb.base/ovlymgr.h (PARAMS): Delete, and remove all references.
+	* gdb.base/reread.exp: Don't set 'prototypes' global.
+	* gdb.base/structs.exp (start_structs_test): Use
+	prepare_for_testing and don't try compiling with -DNO_PROTOTYPES.
+	* gdb.base/structs2.exp: Don't set 'prototypes' global.  Use
+	prepare_for_testing and don't try compiling with -DNO_PROTOTYPES.
+	Don't issue "set width 0".  Remove gdb_stop_suppressing_tests
+	call.
+	* gdb.base/varargs.exp: Don't set 'prototypes' global.
+
+2020-07-03  Pedro Alves  <palves@redhat.com>
+
+	* gdb.base/m32rovly.c: Delete.
+	* gdb.base/ovlymgr.c: Remove all code guarded by __D10V__.
+
+2020-06-30  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.python/py-breakpoint.exp: use gdb_test_multiline instead
+	of gdb_py_test_multiple.
+	* gdb.python/py-cmd.exp: Likewise.
+	* gdb.python/py-events.exp: Likewise.
+	* gdb.python/py-function.exp: Likewise.
+	* gdb.python/py-inferior.exp: Likewise.
+	* gdb.python/py-infthread.exp: Likewise.
+	* gdb.python/py-linetable.exp: Likewise.
+	* gdb.python/py-parameter.exp: Likewise.
+	* gdb.python/py-value.exp: Likewise.
+
+2020-06-30  Tom de Vries  <tdevries@suse.de>
+
+	PR testsuite/26175
+	* lib/future.exp (gdb_default_target_compile): Detect and handle
+	early_flags.
+
+2020-06-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* boards/simavr.exp (gdb_load): Catch errors when closing
+	previous connection.  Close connection, wait for process and
+	unset simavr_spawn_id on failure.
+
+2020-06-29  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (unknown): Make test-case unresolved.
+
+2020-06-29  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25475
+	* gdb.server/solib-list.exp: Verify that the symbol reload
+	confirmation question is asked.
+
+2020-06-26  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* lib/gdb.exp (gdb_test_multiline): New, moved from gdb-guile.exp,
+	have a input seq nr in each pass message.
+	* lib/gdb-guile.exp (gdb_test_multiline): Move to gdb.exp.
+	* lib/gdb-python.exp (gdb_py_test_multiple): Remove.
+	* gdb.python/python.exp: Make test names unique,
+	use gdb_test_multiline instead of gdb_py_test_multiple,
+	use $gdb_test_name.
+	* gdb.guile/guile.exp: Make test names unique, use $gdb_test_name
+
+2020-06-26  Nick Alcock  <nick.alcock@oracle.com>
+
+	* configure.ac: Add --enable-libctf.
+	* aclocal.m4: sinclude ../config/enable.m4.
+	* Makefile.in (site.exp): Add enable_libctf to site.exp.
+	* lib/gdb.exp (skip_ctf_tests): Use it.
+	* gdb.base/ctf-constvars.exp: Error message tweak.
+	* gdb.base/ctf-ptype.exp: Likewise.
+	* configure: Regenerate.
+
+2020-06-26  Gary Benson <gbenson@redhat.com>
+
+	* gdb.cp/try_catch.cc: Include string.h.
+	(main): Replace comparison against string literal with
+	strcmp, avoiding build failure with -Wstring-compare.
+	Add "marker test-complete".
+	* gdb.cp/try_catch.exp: Run the test to the above marker,
+	then verify that the value of "test" is still true.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.arch/riscv-tdesc-regs.exp: New test cases.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.arch/riscv-tdesc-regs.exp: Extend test case.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.arch/riscv-tdesc-loading-01.xml: New file.
+	* gdb.arch/riscv-tdesc-loading-02.xml: New file.
+	* gdb.arch/riscv-tdesc-loading-03.xml: New file.
+	* gdb.arch/riscv-tdesc-loading-04.xml: New file.
+	* gdb.arch/riscv-tdesc-loading.exp: New file.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.arch/riscv-tdesc-regs.exp: Extend test case.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.arch/riscv-tdesc-regs-32.xml: New file.
+	* gdb.arch/riscv-tdesc-regs-64.xml: New file.
+	* gdb.arch/riscv-tdesc-regs.c: New file.
+	* gdb.arch/riscv-tdesc-regs.exp: New file.
+
+2020-06-24  Pedro Alves  <palves@redhat.com>
+
+	* gdb.arch/amd64-entry-value-paramref.exp: Use
+	prepare_for_testing_full and don't pass "c++" for the .S file
+	build spec.
+	* gdb.compile/compile-cplus.exp: Don't compile $srcfile3 with
+	$options, since it's an assembly file.  Remove -Wno-deprecated.
+	* lib/gdb.exp (gdb_compile): Pass "-x c++" explicitly when
+	compiling C++ programs.
+
+2020-06-24  Pedro Alves  <palves@redhat.com>
+
+	* lib/gdb.exp (gdb_compile): Update intro comment.  If C/C++ with
+	Clang, add "-Wno-unknown-warning-option" to the options.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.xml/tdesc-reload.c: New file.
+	* gdb.xml/tdesc-reload.exp: New file.
+	* gdb.xml/maint-xml-dump-01.xml: New file.
+	* gdb.xml/maint-xml-dump-02.xml: New file.
+	* gdb.xml/maint-xml-dump.exp: New file.
+
+2020-06-23  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* lib/completion-support.exp (test_gdb_completion_offers_commands):
+	Adjust for omitted commands when TUI is disabled.
+
+2020-06-23  Gary Benson <gbenson@redhat.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* gdb.cp/namespace.cc: Improve -Wunused-value fix.
+	* gdb.cp/nsimport.cc: Likewise.
+	* gdb.cp/nsnested.cc: Likewise.
+	* gdb.cp/nsnoimports.cc: Likewise.
+	* gdb.cp/nsusing.cc: Likewise.
+	* gdb.cp/smartp.cc: Likewise.
+	* gdb.python/py-pp-integral.c: Likewise.
+	* gdb.python/py-pp-re-notag.c: Likewise.
+
+2020-06-23  Gary Benson <gbenson@redhat.com>
+
+	* gdb.cp/namespace.cc: Avoid build failure with -Wunused-value.
+	* gdb.cp/nsimport.cc: Likewise.
+	* gdb.cp/nsnested.cc: Likewise.
+	* gdb.cp/nsnoimports.cc: Likewise.
+	* gdb.cp/nsusing.cc: Likewise.
+	* gdb.cp/smartp.cc: Likewise.
+	* gdb.python/py-pp-integral.c: Likewise.
+	* gdb.python/py-pp-re-notag.c: Likewise.
+
+2020-06-22  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/default-args.exp: New test.
+	* gdb.base/default-args.c: New file.
+	* gdb.base/alias.exp: Update expected error msg for alias foo=bar.
+	* gdb.base/default.exp: Update to new help text.
+	* gdb.base/help.exp: Likewise.
+	* gdb.base/page.exp: Likewise.
+	* gdb.base/style.exp: Likewise.
+	* gdb.guile/guile.exp: Likewise.
+	* gdb.python/python.exp: Likewise.
+
+2020-06-22  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* gdb.base/source-dir.exp (test_truncated_comp_dir): Skip on
+	remote host.  Fix search path syntax on Windows host.
+
+2020-06-21  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/attach.exp: Test priority of 'exec-file' changed
+	over 'exec-file-mismatch'.
+	* gdb.base/attach.c: Mark should_exit volatile.
+	* gdb.base/attach2.c: Likewise.  Add a comment explaining
+	why the sleep cannot be big.
+	* gdb.base/attach3.c: New file.
+
+2020-06-20  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* gdb.mi/mi-sym-info.exp: Adjust filename patterns to make directory
+	prefix optional.
+
+2020-06-20  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* gdb.base/list-missing-source.exp: Correct $srcfile manipulation
+	for remote host.
+
+2020-06-19  Sandra Loosemore  <sandra@codesourcery.com>
+	    Hafiz Abid Qadeer  <abidh@codesourcery.com>
+
+	* gdb.xml/tdesc-regs.exp (load_description): Correct pathname of
+	file sent to remote host.
+	(top level): Allow int32_t as type of 32-bit register.
+
+2020-06-19  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_note): New proc.
+	* lib/future.exp (gdb_default_target_compile_1): Factor out of ...
+	(gdb_default_target_compile): ... here.  Only call
+	gdb_default_target_compile_1 if use_gdb_compile(<lang>) is set.
+	(use_gdb_compile): Change to array.
+	(toplevel): Update sets of use_gdb_compile to specify language.
+	Warn about default_target_compile override.  Store dejagnu's version
+	of default_target_compile in dejagnu_default_target_compile.
+
+2020-06-18  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_init): Move all but call to default_gdb_init to ...
+	(default_gdb_init): ... here.
+
+2020-06-17 Sandra Loosemore <sandra@codesourcery.com>
+
+	Fix TUI support checks in gdb.tui tests.
+
+	* gdb.tui/basic.exp: Skip test when TUI is unsupported, don't
+	just say UNSUPPORTED.
+	* gdb.tui/corefile-run.exp: Likewise.
+	* gdb.tui/empty.exp: Likewise.
+	* gdb.tui/list-before.exp: Likewise.
+	* gdb.tui/list.exp: Likewise.
+	* gdb.tui/main.exp: Likewise.
+	* gdb.tui/regs.exp: Likewise.
+	* gdb.tui/resize.exp: Likewise.
+	* gdb.tui/tui-layout-asm-short-prog.exp: Likewise.
+	* gdb.tui/tui-layout-asm.exp: Likewise.
+	* gdb.tui/tui-missing-src.exp: Likewise.
+	* gdb.tui/winheight.exp: Likewise.
+	* gdb.tui/new-layout.exp: Likewise.  Also move check earlier.
+
+2020-06-17 Sandra Loosemore <sandra@codesourcery.com>
+
+	Fix TCL error in gdb.python/py-format-string.exp.
+
+	* gdb.python/py-format-string.exp: Move test for python support
+	earlier, out of function body.
+
+2020-06-15  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.base/index-cache-load-twice.c: New.
+	* gdb.base/index-cache-load-twice.exp: New.
+
+2020-06-17  Keith Seitz  <keiths@redhat.com>
+
+	* gdb.debuginfod/fetch_src_and_symbols.exp: Pass INTERNAL_GDBFLAGS
+	when executing "gdb --configuration".
+
+2020-06-17  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_tcl_unknown): New proc.
+	(gdb_init): Use gdb_tcl_unknown for ::unknown override.  Make override
+	conditional on presence of gdb_tcl_unknown.
+	(gdb_finish): Make override undo conditional on presence of
+	gdb_tcl_unknown.
+
+2020-06-16  Tom Tromey  <tom@tromey.com>
+
+	* gdb.python/tui-window.py (failwin): New function.  Register it
+	as a TUI window type.
+	* gdb.python/tui-window.exp: Create new "fail" layout.  Test it.
+
+2020-06-16  Gary Benson <gbenson@redhat.com>
+
+	* gdb.python/py-nested-maps.c (create_map): Add missing return
+	value.
+	(create_map_map): Likewise.
+
+2020-06-15  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.base/jit-elf-so.exp: Refer to the global main_loader_basename
+	variable.
+	* gdb.base/jit-reader-simple.exp: Fix typo ("Built" -> "Build"),
+	and use the already-defined 'options' variable.
+
+2020-06-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_known_globals, gdb_persistent_globals): New global.
+	(gdb_persistent_global, gdb_persistent_global_no_decl): New proc.
+	(gdb_setup_known_globals): New proc.
+	(gdb_cleanup_globals): New proc.
+	* lib/gdb.exp (load_lib): New override proc.
+	(gdb_stdin_log_init): Set var in_file as persistent global.
+	* lib/pascal.exp (gdb_stdin_log_init): Set vars
+	pascal_compiler_is_gpc, pascal_compiler_is_fpc, gpc_compiler and
+	fpc_compiler as persistent global.
+
+2020-06-12  Tom de Vries  <tdevries@suse.de>
+
+	* lib/tuiterm.exp (spawn): Rename to ...
+	(tui_spawn): ... this.
+	(toplevel): Move rename of spawn ...
+	(gdb_init_tuiterm): ... here.  New proc.
+	(gdb_finish_tuiterm): New proc.
+	* lib/gdb.exp (gdb_finish_hooks): New global var.
+	(gdb_finish): Handle gdb_finish_hooks.
+	(tuiterm_env): New proc.
+	* gdb.python/tui-window.exp: Replace load_lib tuiterm.exp with
+	tuiterm_env.
+	* gdb.tui/basic.exp: Same.
+	* gdb.tui/corefile-run.exp: Same.
+	* gdb.tui/empty.exp: Same.
+	* gdb.tui/list-before.exp: Same.
+	* gdb.tui/list.exp: Same.
+	* gdb.tui/main.exp: Same.
+	* gdb.tui/new-layout.exp: Same.
+	* gdb.tui/regs.exp: Same.
+	* gdb.tui/resize.exp: Same.
+	* gdb.tui/tui-layout-asm-short-prog.exp: Same.
+	* gdb.tui/tui-layout-asm.exp: Same.
+	* gdb.tui/tui-missing-src.exp: Same.
+	* gdb.tui/winheight.exp: Same.
+
+2020-06-12  Tom de Vries  <tdevries@suse.de>
+
+	PR testsuite/26110
+	* lib/gdb.exp (gdb_init): Revert dejagnu's override of ::unknown.
+	(gdb_finish): Reinstall dejagnu's override of ::unknown.
+
+2020-06-11  Tom Tromey  <tom@tromey.com>
+
+	PR gdb/18318:
+	* gdb.base/printcmds.exp (test_float_accepted): Add more hex
+	floating point tests.
+
+2020-06-11  Keith Seitz  <keiths@redhat.com>
+
+	PR gdb/21356
+	* gdb.base/vla-datatypes.c (vla_factory): Add typedef for struct
+	vla_struct.
+	Add new struct vla_typedef and union vla_typedef_union and
+	corresponding instantiation objects.
+	Initialize new objects.
+	* gdb.base/vla-datatypes.exp: Add tests for vla_typedef_struct_object
+	and vla_typedef_union_object.
+	Fixup type for vla_struct_object.
+
+2020-06-11  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (with_override): New proc, factored out of ...
+	* gdb.base/dbx.exp: ... here.  Use with_override and save_vars.
+
+2020-06-10  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.ada/ptype_union.exp: Remove PR24713 workaround.
+
+2020-06-09  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdb.base/index-cache.exp (test_cache_disabled): Add test_prefix
+	parameter, update callers.
+
+2020-06-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.dwarf2/share-psymtabs-bt.exp: New file.
+	* gdb.dwarf2/share-psymtabs-bt.c: New file.
+	* gdb.dwarf2/share-psymtabs-bt-2.c: New file.
+
+2020-06-04  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_file_cmd): Avoid path names in error messages.
+
+2020-06-04  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_file_cmd): Replace incomplete gdb_expect by
+	exp_continue.
+
+2020-06-04  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_file_cmd): Use perror instead of fail.
+
+2020-06-03  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26046
+	* gdb.cp/breakpoint-locs-2.cc: New test.
+	* gdb.cp/breakpoint-locs.cc: New test.
+	* gdb.cp/breakpoint-locs.exp: New file.
+	* gdb.cp/breakpoint-locs.h: New test.
+
+2020-06-03  Tom de Vries  <tdevries@suse.de>
+
+	PR testsuite/25609
+	* gdb.base/jit-elf-so.exp: Don't modify testing behaviour based on
+	value of global verbose.
+	* gdb.base/jit-elf.exp: Same.
+	* gdb.base/jit-reader.exp: Same.
+
+2020-06-02  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/multidictionary.exp: Don't use
+	gdb_spawn_with_cmdline_opts.
+
+2020-06-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.cp/step-and-next-inline.exp (do_test): Skip all tests in the
+	use_header case.
+	* gdb.dwarf2/dw2-inline-header-1.exp: New file.
+	* gdb.dwarf2/dw2-inline-header-2.exp: New file.
+	* gdb.dwarf2/dw2-inline-header-3.exp: New file.
+	* gdb.dwarf2/dw2-inline-header-lbls.c: New file.
+	* gdb.dwarf2/dw2-inline-header.c: New file.
+	* gdb.dwarf2/dw2-inline-header.h: New file.
+
+2020-05-30  Pedro Alves  <palves@redhat.com>
+
+	* gdb.linespec/cp-replace-typedefs-ns-template.cc: New.
+	* gdb.linespec/cp-replace-typedefs-ns-template.exp: New.
+
+2020-05-29  Gary Benson <gbenson@redhat.com>
+
+	* gdb.compile/compile-cplus.exp (additional_flags): Also
+	set when building with clang.
+	(additional_flags, srcfilesoptions): Pass -Wno-deprecated
+	when building with clang.
+
+2020-05-29  Gary Benson <gbenson@redhat.com>
+
+	* gdb.arch/i386-avx.exp (additional_flags): Also set when
+	building with clang.
+	* gdb.arch/i386-sse.exp (additional_flags): Likewise.
+
+2020-05-29  Gary Benson <gbenson@redhat.com>
+
+	* gdb.cp/koenig.exp (prepare_for_testing): Add
+	additional_flags=-Wno-unused-comparison.
+	* gdb.cp/operator.exp (prepare_for_testing): Likewise.
+
+2020-05-28  Gary Benson <gbenson@redhat.com>
+
+	* gdb.base/sigaltstack.c (catcher): Add default case to switch
+	statement.
+
+2020-05-28  Gary Benson <gbenson@redhat.com>
+
+	* gdb.cp/classes.exp (prepare_for_testing): Add
+	additional_flags=-Wno-deprecated-register.
+	* gdb.cp/inherit.exp (prepare_for_testing): Likewise.
+	* gdb.cp/misc.exp: Likewise.
+
+2020-05-28  Gary Benson <gbenson@redhat.com>
+
+	* gdb.linespec/cpls-ops.cc (dummy): New static global.
+	(test_op_new::operator new): Add return statement.
+	(test_op_new_array::operator new[]): Likewise.
+
+2020-05-27  Pedro Alves  <palves@redhat.com>
+
+	* gdb.linespec/cp-completion-aliases.exp: Remove readline_is_used
+	check.  Use test_gdb_complete_unique instead of
+	test_gdb_complete_tab_unique + test_gdb_complete_cmd_unique.  Use
+	test_gdb_complete_multiple instead of
+	test_gdb_complete_tab_multiple + test_gdb_complete_cmd_multiple.
+
+2020-05-27  Luis Machado  <luis.machado@linaro.org>
+
+	* gdb.arch/aarch64-sighandler-regs.exp: Fix duplicated test names.
+	* gdb.arch/aarch64-tagged-pointer.exp: Likewise.
+	* gdb.arch/arm-disassembler-options.exp: Likewise.
+	* gdb.arch/arm-disp-step.exp: Likewise.
+	* gdb.arch/thumb-prologue.exp: Likewise.
+	* gdb.base/async.exp: Likewise.
+	* gdb.base/auxv.exp: Likewise.
+	* gdb.base/complex-parts.exp: Likewise.
+	* gdb.base/ena-dis-br.exp: Likewise.
+	* gdb.base/foll-exec.exp: Likewise.
+	* gdb.base/permissions.exp: Likewise.
+	* gdb.base/relocate.exp: Likewise.
+	* gdb.base/return2.exp: Likewise.
+	* gdb.base/sigbpt.exp: Likewise.
+	* gdb.base/siginfo-obj.exp: Likewise.
+	* gdb.cp/converts.exp: Likewise.
+	* gdb.cp/exceptprint.exp: Likewise.
+	* gdb.cp/inherit.exp: Likewise.
+	* gdb.cp/nsnoimports.exp: Likewise.
+	* gdb.cp/virtbase2.exp: Likewise.
+	* gdb.mi/mi-var-cmd.exp: Likewise.
+	* gdb.mi/var-cmd.c: Likewise.
+
+2020-05-26  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/arr_acc_idx_w_gap.exp: Add tests.
+
+2020-05-26  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/arr_acc_idx_w_gap.exp: Add enum subrange tests.
+	* gdb.ada/arr_acc_idx_w_gap/enum_with_gap.ads (Enum_Subrange): New
+	type.
+	* gdb.ada/arr_acc_idx_w_gap/enum_with_gap_main.adb (V): New
+	variable.
+
+2020-05-26  Christian Biesinger  <cbiesinger@google.com>
+
+	* Makefile.in: Use = instead of == for the test command
+	for portability.
+
+2020-05-26  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/gold-gdb-index-2.c: New test.
+	* gdb.base/gold-gdb-index.c: New test.
+	* gdb.base/gold-gdb-index.exp: New file.
+	* gdb.base/gold-gdb-index.h: New test.
+
+2020-05-25  Tom de Vries  <tdevries@suse.de>
+
+	* boards/gold-gdb-index.exp: New file.
+
+2020-05-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	* boards/simavr.exp: New file.
+
+2020-05-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	* lib/gdb.exp (gdb_run_cmd): Return success or failure.
+	* gdb.base/inferior-args.exp: New file.
+	* gdb.base/inferior-args.c: New file.
+
+2020-05-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	* lib/gdb.exp (gdb_run_cmd): Change argument from args to
+	inferior_args.  Pass it to gdb_reload.
+	(gdb_start_cmd, gdb_starti_cmd): Change argument from args to
+	inferior_args.
+	(gdb_reload): Add inferior_args argument.
+	* config/gdbserver.exp (gdb_reload): Add inferior_args argument,
+	pass it to gdbserver_run.
+	* boards/native-gdbserver.exp: Do not set noargs.
+	* boards/native-extended-gdbserver.exp (gdb_reload): Add
+	inferior_args argument.
+	* boards/stdio-gdbserver-base.exp (gdb_reload): Likewise.
+	* gdb.base/a2-run.exp: Check for use_gdb_stub.
+	* gdb.base/args.exp: Likewise.
+
+2020-05-25  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (exec_is_pie): Add comment.
+
+2020-05-25  Tom de Vries  <tdevries@suse.de>
+
+	* lib/jit-elf-helpers.exp (compile_and_download_n_jit_so): Use $f
+	instead of $binfile in the untested message.
+
+2020-05-25  Tom de Vries  <tdevries@suse.de>
+
+	PR testsuite/26031
+	* lib/gdb.exp (exec_is_pie): Test readelf -h output.
+
+2020-05-25  Tom de Vries  <tdevries@suse.de>
+
+	* boards/gold.exp: New file.
+
+2020-05-23  Tom Tromey  <tom@tromey.com>
+
+	* gdb.base/style.exp: Remove completion styling test.
+	* lib/gdb-utils.exp (style): Remove completion styles.
+
+2020-05-23  Tom Tromey  <tom@tromey.com>
+
+	* gdb.base/style.exp: Add completion styling test.
+	* lib/gdb-utils.exp (style): Add completion styles.
+
+2020-05-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/annota1.exp: Update expected results.
+	* gdb.cp/annota2.exp: Update expected results, remove duplicate
+	test name.
+	* gdb.cp/annota3.exp: Update expected results.
+
+2020-05-20  Simon Marchi  <simon.marchi@efficios.com>
+
+	PR gdb/26016
+	* gdb.base/coredump-filter.c (do_mmap): Check mmap ret val
+	against MAP_FAILED.
+	* gdb.base/coremaker.c (mmapdata): Likewise.
+	* gdb.base/jit-reader-host.c (main): Likewise.
+	* gdb.base/sym-file-loader.c (load): Likewise.
+	(load_shlib): Likewise.
+
+2020-05-20  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/array_char_idx.exp: Recognize initialized array.
+
+2020-05-20  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25833
+	* gdb.base/with-mf-inc.c: New test.
+	* gdb.base/with-mf-main.c: New test.
+	* gdb.base/with-mf.exp: New file.
+
+2020-05-19  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.rust/simple.exp: Restore missing test result.
+
+2020-05-19  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/gdb-caching-proc.exp: Fix typo.
+
+2020-05-19  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.rust/simple.exp: Add some test descriptions.
+	(test_one_slice): Use with_test_prefix.
+
+2020-05-18  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/gdb-caching-proc.exp: Use with_test_prefix.
+
+2020-05-17  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/25741
+	* gdb.base/hw-sw-break-same-address.exp: New file.
+
+2020-05-16  Pedro Alves  <palves@redhat.com>
+
+	* gdb.multi/multi-re-run.exp (test_re_run): Switch
+	LAST_LOADED_FILE accordingly.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/alias.exp: Verify 'help aliases' shows user defined aliases.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/help.exp: Test apropos and help for commands
+	having aliases.  Fixed comments not starting with an
+	upper-case letter or not finishing with a dot.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/alias.exp: Update help output check.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/default.exp: Update output following fixes.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/alias.exp: Test aliases starting with a prefix of
+	another alias.
+
+2020-05-15  Gary Benson <gbenson@redhat.com>
+
+	* gdb.base/info-os.c (main): Add return statement.
+	* gdb.base/info_minsym.c (minsym_fun): Likewise.
+	* gdb.base/large-frame-2.c (func): Likewise.
+	* gdb.base/pr10179-a.c (foo1, bar1): Likewise.
+	* gdb.base/pr10179-b.c (foo2): Likewise.
+	* gdb.base/valgrind-disp-step.c (foo): Likewise.
+	* gdb.base/watch-cond.c (func): Likewise.
+	* gdb.multi/goodbye.c (verylongfun): Likewise.
+	* gdb.multi/hello.c (commonfun): Likewise.
+	* gdb.python/py-finish-breakpoint.c (call_longjmp): Likewise.
+	* gdb.threads/fork-plus-threads.c (thread_func): Likewise.
+	* gdb.threads/forking-threads-plus-breakpoint.c (thread_forks):
+	Likewise.
+	* gdb.threads/hand-call-new-thread.c (foo): Likewise.
+	* gdb.threads/interrupt-while-step-over.c (child_function):
+	Likewise.
+	* gdb.trace/actions-changed.c (end): Likewise.
+
+2020-05-15  Gary Benson <gbenson@redhat.com>
+
+	* gdb.opencl/callfuncs.exp: Report when test skipped.
+	* gdb.opencl/convs_casts.exp: Likewise.
+	* gdb.opencl/datatypes.exp: Likewise.
+	* gdb.opencl/operators.exp: Likewise.
+	* gdb.opencl/vec_comps.exp: Likewise.
+
+2020-05-15  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/align.exp.in: Rename to ...
+	* gdb.base/align.exp.tcl: ... this.
+	* gdb.base/align-c++.exp: Update.
+	* gdb.base/align-c.exp: Update.
+	* gdb.base/all-architectures.exp.in: Rename to ...
+	* gdb.base/all-architectures.exp: ... this.
+	* gdb.base/all-architectures-0.exp: Update.
+	* gdb.base/all-architectures-1.exp: Update.
+	* gdb.base/all-architectures-2.exp: Update.
+	* gdb.base/all-architectures-3.exp: Update.
+	* gdb.base/all-architectures-4.exp: Update.
+	* gdb.base/all-architectures-5.exp: Update.
+	* gdb.base/all-architectures-6.exp: Update.
+	* gdb.base/all-architectures-7.exp: Update.
+	* gdb.base/infcall-nested-structs.exp.in: Rename to ...
+	* gdb.base/infcall-nested-structs.exp.tcl: ... this.
+	* gdb.base/infcall-nested-structs-c++.exp: Update.
+	* gdb.base/infcall-nested-structs-c.exp: Update.
+	* gdb.base/info-types.exp.in: Rename to ...
+	* gdb.base/info-types.exp.tcl: ... this.
+	* gdb.base/info-types-c++.exp: Update.
+	* gdb.base/info-types-c.exp: Update.
+	* gdb.base/max-depth.exp.in: Rename to ...
+	* gdb.base/max-depth.exp.tcl: ... this.
+	* gdb.base/max-depth-c++.exp: Update.
+	* gdb.base/max-depth-c.exp: Update.
+	* gdb.cp/cpexprs.exp.in: Rename to ...
+	* gdb.cp/cpexprs.exp.tcl: ... this.
+	* gdb.cp/cpexprs-debug-types.exp: Update.
+	* gdb.cp/cpexprs.exp: Update.
+	* gdb.cp/infcall-nodebug.exp.in: Rename to ...
+	* gdb.cp/infcall-nodebug.exp.tcl: ... this.
+	* gdb.cp/infcall-nodebug-c++-d0.exp: Update.
+	* gdb.cp/infcall-nodebug-c++-d1.exp: Update.
+	* gdb.cp/infcall-nodebug-c-d0.exp: Update.
+	* gdb.cp/infcall-nodebug-c-d1.exp: Update.
+	* gdb.dwarf2/clang-debug-names.exp.in: Rename to ...
+	* gdb.dwarf2/clang-debug-names.exp.tcl: ... this.
+	* gdb.dwarf2/clang-debug-names-2.exp: Update.
+	* gdb.dwarf2/clang-debug-names.exp: Update.
+
+2020-05-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/check-test-names.exp: Remove code that prevents this file
+	loading when tests are run in parallel.
+
+2020-05-15  Pedro Alves  <palves@redhat.com>
+
+	* gdb.multi/multi-kill.exp (start_inferior): Remove
+	'testpid' parameter.  Refer to namespace variable directly.
+	(testpid): Declare as namespace variable.
+
+2020-05-15  Pedro Alves  <palves@redhat.com>
+
+	* gdb.multi/multi-kill.exp: Wrap in namespace.
+	(start_inferior): Add TESTPID parameter.  Use it instead of the
+	testpid global.
+	(top level): Define empty TESTPID array, and pass it down to
+	start_inferior.
+
+2020-05-14  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.fortran/nested-funcs-2.exp: Use gdb_test_stdio to test inferior
+	output.
+
+2020-05-14  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/align.exp: Split into ...
+	* gdb.base/align.exp.in: ...
+	* gdb.base/align-c++.exp: ...
+	* gdb.base/align-c.exp: ... these.
+	* gdb.base/infcall-nested-structs.exp: Split into ...
+	* gdb.base/infcall-nested-structs.exp.in: ...
+	* gdb.base/infcall-nested-structs-c++.exp: ...
+	* gdb.base/infcall-nested-structs-c.exp: ... these.
+	* gdb.base/info-types.exp: Split into ...
+	* gdb.base/info-types.exp.in: ...
+	* gdb.base/info-types-c++.exp: ...
+	* gdb.base/info-types-c.exp: ... these.
+	* gdb.base/max-depth.exp: Split into ...
+	* gdb.base/max-depth.exp.in: ...
+	* gdb.base/max-depth-c++.exp: ...
+	* gdb.base/max-depth-c.exp: ... these.
+	* gdb.cp/infcall-nodebug.exp: Split into ...
+	* gdb.cp/infcall-nodebug.exp.in: ...
+	* gdb.cp/infcall-nodebug-c++-d0.exp: ...
+	* gdb.cp/infcall-nodebug-c++-d1.exp: ...
+	* gdb.cp/infcall-nodebug-c-d0.exp: ...
+	* gdb.cp/infcall-nodebug-c-d1.exp: ... these.
+
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* gdb.multi/multi-exit.c: New file.
+	* gdb.multi/multi-exit.exp: New file.
+	* gdb.multi/multi-kill.c: New file.
+	* gdb.multi/multi-kill.exp: New file.
+
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.base/annota1.exp: Update the expected output.
+	* gdb.cp/annota2.exp: Ditto.
+
+2020-05-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/check-test-names.exp: Disable when testing is being run in
+	parallel.
+
+2020-05-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/jit-elf.exp: Fix string concat.
+
+2020-05-12  Tom de Vries  <tdevries@suse.de>
+
+	* lib/jit-elf-helpers.exp: Don't use undefined variables in untested
+	messages.
+
+2020-05-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.multi/multi-term-settings.exp: Use with_test_prefix.
+
+2020-05-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.ada/catch_ex.exp: Use with_test_prefix.
+	* gdb.ada/mi_catch_ex.exp: Same.
+	* gdb.ada/mi_catch_ex_hand.exp: Same.
+
+2020-05-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.fortran/complex.exp: Use with_test_prefix.
+
+2020-05-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.trace/passcount.exp: Fix test-names.
+
+2020-05-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.pascal/gdb11492.exp: Use with_test_prefix.
+
+2020-05-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.gdb/complaints.exp: Use with_test_prefix.
+	* gdb.xml/tdesc-regs.exp: Same.
+	* gdb.opt/inline-locals.exp: Fix test name.
+
+2020-05-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/comp-unit-lang.exp: Use with_test_prefix.
+	* gdb.dwarf2/dw2-bad-parameter-type.exp: Same.
+	* gdb.dwarf2/implref-struct.exp: Same.
+	* gdb.dwarf2/varval.exp: Ensure get_sizeof is called once per type.
+	* gdb.dwarf2/data-loc.exp: Same.  Remove duplicate test.
+
+2020-05-11  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdb.base/jit-so.exp (one_jit_test): Change test name.
+
+2020-05-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/check-test-names.exp (all_test_names): New module variable.
+	(counts): Add 'duplicates' field.
+	(_check_duplicates): New procedure.
+	(check): Also check for duplicates.
+	(do_log_summary): Print duplicates count.
+	(do_reset_vars): Reset counter for duplicate test names, and
+	discard all know test names.
+
+2020-05-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/gdb.exp: Include check-test-names.exp library.
+	* lib/check-test-names.exp: New file.
+
+2020-05-11  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.ada/packed_tagged.exp: Change kfail into xfail.
+
+2020-05-11  Keith Seitz  <keiths@redhat.com>
+
+	* gdb.ada/attr_ref_and_charlit.exp: Fix typo.
+
+2020-05-11  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.cp/cpexprs.exp: Move everything except flags setting ...
+	* gdb.cp/cpexprs.exp.in: .. here.
+	* gdb.cp/cpexprs-debug-types.exp: Include cpexprs.exp.in instead of
+	cpexprs.exp.
+
+2020-05-11  Keith Seitz  <keiths@redhat.com>
+
+	* gdb.ada/arrayparam.exp: Resolve duplicate and tail parentheses
+	test names.
+	* gdb.ada/arrayptr.exp: Likewise.
+	* gdb.ada/assign_arr.exp: Likewise.
+	* gdb.ada/attr_ref_and_charlit.exp: Likewise.
+	* gdb.ada/bp_on_var.exp: Likewise.
+	* gdb.ada/call_pn.exp: Likewise.
+	* gdb.ada/complete.exp: Likewise.
+	* gdb.ada/fun_overload_menu.exp: Likewise.
+	* gdb.ada/funcall_param.exp: Likewise.
+	* gdb.ada/funcall_ref.exp: Likewise.
+	* gdb.ada/packed_array_assign.exp: Likewise.
+	* gdb.ada/same_component_name.exp: Likewise.
+	* gdb.ada/type_coercion.exp: Likewise.
+	* gdb.ada/unc_arr_ptr_in_var_rec.exp: Likewise.
+	* gdb.ada/variant_record_packed_array.exp: Likewise.
+
+2020-05-11  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25941
+	* gdb.dwarf2/clang-debug-names.exp.in: New include exp file, factored
+	out of ...
+	* gdb.dwarf2/clang-debug-names.exp: ... here.
+	* gdb.dwarf2/clang-debug-names-2.exp: New file.  Include
+	clang-debug-names.exp.in.
+	* gdb.dwarf2/clang-debug-names-2-foo.c: New test.
+	* gdb.dwarf2/clang-debug-names-2.c: New test.
+
+2020-05-10  Alok Kumar Sharma  <alokkumar.sharma@amd.com>
+
+	* lib/fortran.exp (fortran_main): New Proc, handle flang MAIN_,
+	(fortran_runto_main): New Proc, fortran version of runto_main.
+	* gdb.fortran/array-bounds-high.exp: Handle flang MAIN_
+	* gdb.fortran/array-bounds.exp: Likewise.
+	* gdb.fortran/array-slices.exp: Likewise.
+	* gdb.fortran/block-data.exp: Likewise.
+	* gdb.fortran/charset.exp: Likewise.
+	* gdb.fortran/common-block.exp: Likewise.
+	* gdb.fortran/complex.exp: Likewise.
+	* gdb.fortran/derived-type-function.exp: Likewise.
+	* gdb.fortran/derived-type.exp: Likewise.
+	* gdb.fortran/info-modules.exp: Likewise.
+	* gdb.fortran/info-types.exp: Likewise.
+	* gdb.fortran/intrinsics.exp: Likewise.
+	* gdb.fortran/library-module.exp: Likewise.
+	* gdb.fortran/logical.exp: Likewise.
+	* gdb.fortran/max-depth.exp: Likewise.
+	* gdb.fortran/module.exp: Likewise.
+	* gdb.fortran/multi-dim.exp: Likewise.
+	* gdb.fortran/nested-funcs.exp: Likewise.
+	* gdb.fortran/print-formatted.exp: Likewise.
+	* gdb.fortran/print_type.exp: Likewise.
+	* gdb.fortran/printing-types.exp: Likewise.
+	* gdb.fortran/ptr-indentation.exp: Likewise.
+	* gdb.fortran/ptype-on-functions.exp: Likewise.
+	* gdb.fortran/subarray.exp: Likewise.
+	* gdb.fortran/vla-alloc-assoc.exp: Likewise.
+	* gdb.fortran/vla-datatypes.exp: Likewise.
+	* gdb.fortran/vla-history.exp: Likewise.
+	* gdb.fortran/vla-ptr-info.exp: Likewise.
+	* gdb.fortran/vla-ptype-sub.exp: Likewise.
+	* gdb.fortran/vla-ptype.exp: Likewise.
+	* gdb.fortran/vla-sizeof.exp: Likewise.
+	* gdb.fortran/vla-type.exp: Likewise.
+	* gdb.fortran/vla-value-sub-arbitrary.exp: Likewise.
+	* gdb.fortran/vla-value-sub-finish.exp: Likewise.
+	* gdb.fortran/vla-value-sub.exp: Likewise.
+	* gdb.fortran/vla-value.exp: Likewise.
+	* gdb.fortran/whatis_type.exp: Likewise.
+	* gdb.mi/mi-var-child-f.exp: Likewise.
+
+2020-05-09  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/clang-debug-names.exp: Remove PR25952 kfail.
+
+2020-05-08  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/clang-debug-names.c: New test.
+	* gdb.dwarf2/clang-debug-names.exp: New file.
+
+2020-05-06  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.arch/amd64-prologue-skip-cf-protection.exp: New file.
+	* gdb.arch/amd64-prologue-skip-cf-protection.c: New file.
+
+2020-05-06  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.reverse/consecutive-precsave.exp: Handle if instruction after
+	breakpoint is at a "recommended breakpoint location".
+	* gdb.reverse/consecutive-reverse.exp: Same.
+
+2020-05-06  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/watchpoint-reuse-slot.exp (stepi): Print $pc to get current
+	address.
+
+2020-05-06  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/watchpoint-reuse-slot.exp: Fix incorrect assignment.
+
+2020-05-06  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/store.exp (check_set, up_set): Allowing missing location
+	info for r.
+
+2020-05-06  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/shlib-call.exp: Add extra step to reach shmain.c:42, if
+	necessary.
+
+2020-05-06  Tom de Vries  <tdevries@suse.de>
+
+	* lib/unbuffer_output.c (gdb_unbuffer_output): Change return type to
+	void.
+
+2020-05-06  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (is_stmt_addresses, hex_in_list): New proc, factored out
+	of ...
+	* gdb.base/async.exp: ... here.
+	* gdb.base/consecutive.exp: Handle if 2nd breakpoint is at a
+	"recommended breakpoint location".
+
+2020-05-06  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.compile/compile-ifunc.exp: Use -Wno-attribute-alias.
+
+2020-05-04  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/async.exp: Check whether instruction addresses are a
+	"recommended breakpoint location".
+
+2020-05-03  Tom Tromey  <tom@tromey.com>
+
+	* gdb.base/sepdebug.exp: Remove "catch" test.
+	* gdb.base/break.exp: Remove "catch" test.
+	* gdb.base/default.exp: Update expected output.
+
+2020-05-02  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (supports_mpx_check_pointer_bounds): New proc.
+	* gdb.arch/i386-mpx-call.exp: Use supports_mpx_check_pointer_bounds.
+	* gdb.arch/i386-mpx-map.exp: Same.
+	* gdb.arch/i386-mpx-sigsegv.exp: Same.
+	* gdb.arch/i386-mpx-simple_segv.exp: Same.
+	* gdb.arch/i386-mpx.exp: Same.
+
+2020-05-02  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/psym-external-decl.c (main): Add use of variable aaa.
+
+2020-05-01  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.ada/operator_bp.exp: Allow more than required amount of
+	breakpoint.
+
+2020-05-01  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.reverse/until-reverse.c (main): Fix Wunused-result warning.
+
+2020-04-30  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR gdb/18706
+	* gdb.cp/stub-array-size.cc: New test.
+	* gdb.cp/stub-array-size.exp: New file.
+	* gdb.cp/stub-array-size.h: New test.
+	* gdb.cp/stub-array-size2.cc: New test.
+
+2020-04-30  Hannes Domani  <ssbssa@yahoo.de>
+
+	* gdb.python/py-format-string.exp: Adjust pretty_arrays expected
+	output to the new format.
+
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.base/break.exp: Use with_test_prefix.
+
+2020-04-29  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (debug_types): New proc.
+	* gdb.guile/scm-symtab.exp: Add xfail for PR gcc/90232.
+	* gdb.python/py-symtab.exp: Same.
+
+2020-04-29  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR gdb/17320
+	* gdb.base/pretty-array.c: New test.
+	* gdb.base/pretty-array.exp: New file.
+
+2020-04-29  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25889
+	* gdb.cp/cpexprs.exp: Adapt for inclusion.
+	* gdb.cp/cpexprs-debug-types.exp: New file.  Set -fdebug-types-section
+	and include cpexprs.exp.
+
+2020-04-28 Mark Williams <mark@myosotissp.com>
+
+	PR gdb/24480
+	* dw4-toplevel-types.exp: Test for top level types.
+	* dw4-toplevel-types.cc: Test for top level types.
+
+2020-04-28  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.threads/stop-with-handle.exp: Fix typo in comment
+	(theads -> threads).
+
+2020-04-28  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.opt/inline-cmds.exp: Set KFAIL PR.
+
+2020-04-28  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/info-macros.exp: Remove KFAIL.  Add missing trailing ".*".
+
+2020-04-28  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.ada/array_ptr_renaming.exp: Add PR number in KFAIL.
+
+2020-04-28  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/main-foo.c: New test.
+	* gdb.dwarf2/struct-with-sig.exp: New file.
+
+2020-04-25  Tom de Vries  <tdevries@suse.de>
+
+	* boards/debug-types.exp: New file.
+
+2020-04-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.btrace/multi-inferior.exp: Avoid paths in test names.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	PR symtab/12707:
+	* gdb.python/py-symbol.exp: Update expected results for
+	linkage_name test.
+	* gdb.cp/print-demangle.exp: New file.
+	* gdb.base/c-linkage-name.exp: Fix test.
+	* gdb.guile/scm-symbol.exp: Update expected results for
+	linkage_name test.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	* gdb.dwarf2/dw2-namespaceless-anonymous.S: Remove.
+	* gdb.dwarf2/dw2-namespaceless-anonymous.c: New file.
+	* gdb.dwarf2/dw2-namespaceless-anonymous.exp: Use DWARF
+	assembler.
+
+2020-04-24  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/dw2-bad-mips-linkage-name.exp: Set language of CU to
+	C++.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/frame_arg_lang.exp: Run with multiple -fgnat-encodings
+	values.
+	* gdb.ada/funcall_ref.exp: Run with multiple -fgnat-encodings
+	values.  Update test for minimal encodings.
+	* gdb.ada/lang_switch.exp: Update test for minimal encodings.
+	* gdb.ada/var_rec_arr.exp: Run with multiple -fgnat-encodings
+	values.  Update test for minimal encodings.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	PR python/23662:
+	* gdb.ada/variant.exp: Add Python checks.
+	* gdb.rust/simple.exp: Add dynamic type checks.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/mi_var_array.exp: Try all -fgnat-encodings settings.
+	Make array type matching more lax.
+	* gdb.ada/mi_var_union.exp: Try all -fgnat-encodings settings.
+	* gdb.ada/mi_variant.exp: New file.
+	* gdb.ada/mi_variant/pck.ads: New file.
+	* gdb.ada/mi_variant/pkg.adb: New file.
+	* gdb.ada/packed_tagged.exp: Try all -fgnat-encodings settings.
+	* gdb.ada/unchecked_union.exp: Try all -fgnat-encodings settings.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/variant.exp: Add dynamic field offset tests.
+	* gdb.ada/variant/pck.ads (Nested_And_Variable): New type.
+	* gdb.ada/variant/pkg.adb: Add new variables.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/variant.exp: New file
+	* gdb.ada/variant/pkg.adb: New file
+	* gdb.ada/variant/pck.adb: New file
+
+2020-04-24  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (clean_restart): Reset errcnt and warncnt.
+
+2020-04-24  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/dwzbuildid.exp: Add quiet to dwzbuildid-mismatch compile
+	flags.
+
+2020-04-24  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/dw2-error.exp: Add quiet to compile flags.
+
+2020-04-24  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (default_gdb_start): Handle eof.
+	(clean_restart): Detect and handle gdb_start failure.  Return -1 upon
+	failure.
+	* gdb.base/readnever.exp: Handle clean_restart failure.
+
+2020-04-23  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/decl-before-def.exp: Run to main and print a again.
+
+2020-04-23  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/decl-before-def-decl.c: New test.
+	* gdb.base/decl-before-def-def.c: New test.
+	* gdb.base/decl-before-def.exp: New file.
+
+2020-04-23  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/readnever.exp: Skip if GDBFLAGS contain -readnow/--readnow.
+
+2020-04-22  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.mi/dw2-ref-missing-frame-func.c (.debug_aranges): Fix
+	debug_info_offset.
+	* gdb.mi/dw2-ref-missing-frame.exp: Make sure $objfuncfile comes
+	before $objsfile in the line line.
+
+2020-04-22  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dlang/watch-loc.c (.debug_aranges): Fix _Dmain length.
+
+2020-02-18  Mihails Strasuns  <mihails.strasuns@intel.com>
+
+	* gdb.base/jit-attach-pie.c: Use jit-protocol.h.
+	* gdb.base/jit-elf-main.c: Use jit-protocol.h.
+	* gdb.base/jit-reader-host.c: Use jit-protocol.h.
+	* gdb.base/jit-reader-simple-jit.c: Use jit-protocol.h.
+	* gdb.base/jit-protocol.h: Update definitions to match all usage
+	  contexts.
+
+2020-02-18  Mihails Strasuns  <mihails.strasuns@intel.com>
+
+	* gdb.base: Rename all jit related test and source files.
+
+2020-02-18  Mihails Strasuns  <mihails.strasuns@intel.com>
+
+	* gdb.base/jit-reader.exp: Relax register output check.
+
+2020-04-22  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25764
+	* gdb.base/psym-external-decl-2.c: New test.
+	* gdb.base/psym-external-decl.c: New test.
+	* gdb.base/psym-external-decl.exp: New file.
+	* gdb.threads/tls.exp: Add PR25807 kfail.
+
+2020-04-22  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25801
+	* gdb.dwarf2/imported-unit.exp: Test that we can get imported_unit.c
+	in "info source" output.
+
+2020-04-22  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25700
+	* gdb.dwarf2/imported-unit.exp: Verify that there's only one partial
+	symtab for imported_unit.c.
+
+2020-04-21  Gary Benson <gbenson@redhat.com>
+
+	* gdb.base/advance.c (func): New argument, to match call site.
+	(func2, func3): Add return statements.
+
+2020-04-21  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.multi/run-only-second-inf.c: New file.
+	* gdb.multi/run-only-second-inf.exp: New file.
+
+2020-04-21  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* gdb.btrace/multi-inferior.c: New test.
+	* gdb.btrace/multi-inferior.exp: New file.
+
+2020-04-21  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* gdb.btrace/enable-new-thread.c: New test.
+	* gdb.btrace/enable-new-thread.exp: New file.
+
+2020-04-21  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25471
+	* gdb.threads/killed-outside.c: New test.
+	* gdb.threads/killed-outside.exp: New file.
+
+2020-04-20  Gary Benson <gbenson@redhat.com>
+
+	* gdb.base/nested-subp1.exp: Use support_nested_function_tests.
+	* gdb.base/nested-subp2.exp: Likewise.
+	* gdb.base/nested-subp3.exp: Likewise.
+
+2020-04-20  Gary Benson <gbenson@redhat.com>
+
+	* gdb.base/nested-subp1.exp: Disable test when using clang.
+	* gdb.base/nested-subp2.exp: Likewise.
+	* gdb.base/nested-subp3.exp: Likewise.
+
+2020-04-20  Gary Benson <gbenson@redhat.com>
+
+	* gdb.cp/exception.cc: Fix compilation error with clang.
+
+2020-04-20  Gary Benson <gbenson@redhat.com>
+
+	* gdb.trace/tspeed.c: Fix compilation error with clang.
+
+2020-04-20  Gary Benson <gbenson@redhat.com>
+
+	* gdb.base/jit-main.c: Fix compilation error with clang.
+
+2020-04-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* gdb.base/attach-twice.c: Include "sys/types.h".
+	(PTRACE_ATTACH): Add fallback definition.
+	(main): Pass `0' to the 4th argument of `ptrace'.
+
+2020-04-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* gdb.base/fork-running-state.c: Include "signal.h".
+
+2020-04-17  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.cp/maint.exp (test_help): Simplify multiple_help_body.
+	Update tests.
+	* gdb.btrace/cpu.exp: Update tests.
+	* gdb.base/maint.exp: Update tests.
+	* gdb.base/default.exp: Update tests.
+	* gdb.base/completion.exp: Update tests.
+
+2020-04-16  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25791
+	* gdb.dwarf2/gdb-add-index.exp (add_gdb_index): Move ...
+	(ensure_gdb_index): and factor out and move ...
+	* lib/gdb.exp (add_gdb_index, ensure_gdb_index): ... here.
+	* gdb.dwarf2/imported-unit-runto-main.exp: New file.
+
+2020-04-16  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/maint-expand-symbols-header-file.exp: Set language before
+	loading exec.
+
+2020-04-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/many-completions.exp: New file.
+
+2020-04-14  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25718
+	* gdb.dwarf2/dw2-symtab-includes.exp: New file.
+
+2020-04-14  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25720
+	* gdb.base/maint-expand-symbols-header-file.c: New test.
+	* gdb.base/maint-expand-symbols-header-file.exp: New file.
+	* gdb.base/maint-expand-symbols-header-file.h: New test.
+
+2020-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.dwarf2/dw2-inline-many-frames.exp (get_func_info): Delete.
+	* gdb.dwarf2/dw2-inline-small-func.exp: Pass options to
+	get_func_info.
+	(get_func_info): Delete.
+	* gdb.dwarf2/dw2-is-stmt-2.exp (get_func_info): Delete.
+	* gdb.dwarf2/dw2-is-stmt.exp (get_func_info): Delete.
+	* lib/dwarf.exp (get_func_info): New function.
+
+2020-04-13  Tom de Vries  <tdevries@suse.de>
+
+	* lib/ada.exp (find_ada_tool): Pass --GCC and -B to gnatlink, similar
+	to what find_gnatmake does.
+
+2020-04-10  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/style.exp: Expect "Expanding full symbols" message for
+	-readnow.
+
+2020-04-10  Tom de Vries  <tdevries@suse.de>
+
+	PR cli/25808
+	* gdb.base/style.c: Add leading newlines.
+	* gdb.base/style.exp: Use gdb_get_line_number to get specific lines.
+	Check listing of main's one-line body.
+
+2020-04-08  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (psymtabs_p): New proc.
+	* gdb.dwarf2/imported-unit.exp: Mark "no static partial symbols in
+	importing unit" unsupported if there are no partial symbols.
+
+2020-04-08  Tom de Vries  <tdevries@suse.de>
+
+	PR testsuite/25760
+	* gdb.ada/call_pn.exp: Call "maint expand-symtabs".  Add xfails.
+
+2020-04-07  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25796
+	* gdb.dwarf2/imported-unit-abstract-const-value.exp: New file.
+
+2020-04-07  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/check-psymtab.c: New test.
+	* gdb.base/check-psymtab.exp: New file.
+
+2020-04-06  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/variant-record/proc.adb: New file.
+	* gdb.ada/variant-record/value.adb: New file.
+	* gdb.ada/variant-record/value.s: New file.
+	* gdb.ada/variant-record.exp: New file.
+
+2020-04-03  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR gdb/25325
+	* gdb.cp/typed-enum.cc: New test.
+	* gdb.cp/typed-enum.exp: New file.
+
+2020-04-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.dwarf2/dw2-inline-small-func-lbls.c: New file.
+	* gdb.dwarf2/dw2-inline-small-func.c: New file.
+	* gdb.dwarf2/dw2-inline-small-func.exp: New file.
+	* gdb.dwarf2/dw2-inline-small-func.h: New file.
+	* gdb.opt/inline-small-func.c: New file.
+	* gdb.opt/inline-small-func.exp: New file.
+	* gdb.opt/inline-small-func.h: New file.
+
+2020-04-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/dwarf.exp (Dwarf::lines::program::DW_LNS_set_file): New
+	function.
+
+2020-04-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/dwarf.exp (function_range): Allow compiler options to be
+	specified.
+
+2020-04-02  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/break-inline-psymtab-2.c (bar): Add
+	__attribute__((always_inline)).
+	* gdb.dwarf2/break-inline-psymtab.exp: Don't use -O2.
+
+2020-04-02  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdbserver-support.exp (gdbserver_exit): Factor out of ...
+	(gdbserver_gdb_exit): ... here.  Add timeout warning.
+	* gdb.multi/multi-target.exp (server_spawn_ids): New global var.
+	(connect_target_extended_remote): Append new server_spawn_id to
+	server_spawn_ids.
+	(cleanup): New proc.
+	(setup, <toplevel>): Call cleanup.
+
+2020-04-02  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/main-psymtab.exp: New file.
+
+2020-04-02  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.fortran/mixed-lang-stack.exp: Accept new complex printing style.
+
+2020-04-01  Tom Tromey  <tom@tromey.com>
+
+	* gdb.base/complex-parts.exp: Add type tests.
+
+2020-04-01  Tom Tromey  <tom@tromey.com>
+
+	* gdb.base/complex-parts.exp: Add arithmetic tests.
+
+2020-04-01  Tom Tromey  <tom@tromey.com>
+
+	* gdb.compile/compile.exp: Update.
+	* gdb.compile/compile-cplus.exp: Update.
+	* gdb.base/varargs.exp: Update.
+	* gdb.base/floatn.exp: Update.
+	* gdb.base/endianity.exp: Update.
+	* gdb.base/callfuncs.exp (do_function_calls): Update.
+	* gdb.base/funcargs.exp (complex_args, complex_integral_args)
+	(complex_float_integral_args): Update.
+	* gdb.base/complex.exp: Update.
+	* gdb.base/complex-parts.exp: Update.
+
+2020-04-01  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.rust/union.rs: New file.
+	* gdb.rust/union.exp: New file.
+	* gdb.rust/simple.rs (Union, Union2): Move to union.rs.
+	(main): Update.
+	* gdb.rust/simple.exp: Move union tests to union.exp.
+
+2020-04-01  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.rust/simple.rs (main): Remove "y0".
+
+2020-04-01  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.multi/stop-all-on-exit.c: New test.
+	* gdb.multi/stop-all-on-exit.exp: New file.
+
+2020-04-01  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR gdb/24789
+	* gdb.cp/misc.cc: Add integer reference variable.
+	* gdb.cp/misc.exp: Add test.
+
+2020-04-01  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.server/stop-reply-no-thread.exp: Enhance the test
+	scenario to cover execution until the end and also the case
+
+2020-03-31  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/c-linkage-name.exp: Fix test-case comment.  Set language to
+	c.  Use "maint info symtabs" to check symtab expansion.
+
+2020-03-30  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/c-linkage-name.exp: Use readnow call to mark a test
+	unsupported.
+	(verify_psymtab_expanded): Move ...
+	* lib/gdb.exp (verify_psymtab_expanded): ... here.  Add unsupported
+	test.
+	(readnow): New proc.
+
+2020-03-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/mixed-lang-stack.exp: Replace two hard coded address
+	with $hex.
+
+2020-03-20  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.dwarf2/dw2-ranges-base.exp: Update regular expressions.
+
+2020-03-20  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.ada/sub_variant/subv.adb: New file.
+	* gdb.ada/sub_variant.exp: New file.
+
+2020-03-20  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.threads/step-over-lands-on-breakpoint.exp (do_test): Bail out if
+	first break fails.
+	* gdb.threads/step-over-trips-on-watchpoint.exp: (do_test): Same.
+
+2020-03-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.server/exit-multiple-threads.c: New file.
+	* gdb.server/exit-multiple-threads.exp: New file.
+
+2020-03-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/mixed-lang-stack.c: New file.
+	* gdb.fortran/mixed-lang-stack.cpp: New file.
+	* gdb.fortran/mixed-lang-stack.exp: New file.
+	* gdb.fortran/mixed-lang-stack.f90: New file.
+
+2020-03-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.linespec/cp-completion-aliases.cc: New file.
+	* gdb.linespec/cp-completion-aliases.exp: New file.
+
+2020-03-19  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.opt/inline-locals.exp: Add kfail PR number.  Make kfail matching
+	more precise.
+
+2020-03-18  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/break-inline-psymtab-2.c: New test.
+	* gdb.dwarf2/break-inline-psymtab.c: New test.
+	* gdb.dwarf2/break-inline-psymtab.exp: New file.
+
+2020-03-16  Tom de Vries  <tdevries@suse.de>
+
+	* lib/cache.exp (gdb_do_cache): Add and handle local variables
+	cache_verify and cache_verify_proc.
+
+2020-03-15  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.server/solib-list.exp: Handle
+	'Load new symbol table from "/lib64/ld-2.26.so"? (y or n)'.
+
+2020-03-15  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/maint.exp: Use exp_continue in long lines for "maint print
+	objfiles".
+
+2020-03-14  Tom Tromey  <tom@tromey.com>
+
+	* gdb.base/cvexpr.exp: Add test for _Atomic and restrict.
+
+2020-03-14  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.mi/mi-fortran-modules.exp: Use exp_continue.
+
+2020-03-14  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.threads/attach-many-short-lived-threads.exp: Read "info threads"
+	result in line-by-line fashion.
+
+2020-03-14  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (supports_statement_frontiers): New proc.
+	* gdb.cp/step-and-next-inline.exp: Use supports_statement_frontiers.
+
+2020-03-14  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/printcmds.exp: Add missing quoting for "print
+	teststring2".
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* gdb.base/printcmds.exp (test_print_strings): Add regression
+	test.
+	* gdb.base/printcmds.c (charptr): New typedef.
+	(teststring2): New global.
+
+2020-03-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/break-interp.exp: Use the tail of the filename, not the
+	full path in the test name.
+	(test_ld): Add some with_test_prefix blocks to make test names
+	unique.
+
+2020-03-13  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.mi/mi-sym-info.exp: Fix buffer full errors, and timeouts.
+
+2020-03-13  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.mi/mi-sym-info.exp: Make matching more precise.
+
+2020-03-13  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25646
+	* gdb.dwarf2/imported-unit.exp: Add test.
+
+2020-03-13  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.mi/mi-sym-info-2.c (another_char_t, another_short_t): New typedef.
+	(var1, var2): New variable.
+	* gdb.mi/mi-sym-info.exp: Add --name to various commands to restrict
+	matching symbols.
+
+2020-03-13  Tom de Vries  <tdevries@suse.de>
+
+	* lib/tuiterm.exp (Term::command_no_prompt_prefix): New proc.
+	(Term::command): Use prompt prefix.
+	(Term::enter_tui): Use command_no_prompt_prefix instead of prefix.
+	* gdb.tui/tui-layout-asm-short-prog.exp: Use
+	command_no_prompt_prefix instead of prefix.
+	* gdb.tui/tui-layout-asm.exp: Same.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.base/break-interp.exp: Use foreach_with_prefix.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.arch/amd64-disp-step-avx.S: Add nops after _start.
+	* gdb.arch/amd64-disp-step-avx.exp: Enable "set debug displaced
+	on" while stepping over the test instruction, match printed
+	message.
+
+2020-03-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/info-types.exp: Use exp_continue during matching of output
+	of "info types".
+
+2020-03-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.threads/execl.exp: Delete breakpoint after hitting it.
+
+2020-03-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.fortran/module.exp: Use exp_continue during matching of output
+	of "info variable -n".
+
+2020-03-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.dwarf2/dw2-ranges-base.exp: Limit "maint info line-table" to
+	gdb.dwarf2/dw2-ranges-base.c.
+
+2020-03-12  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.linespec/explicit.exp: Fix "complete non-unique file name" test
+	in presence of GLIBC debuginfo.
+
+2020-03-12  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_core_cmd): Use string_to_regexp for regexp-matching
+	$core.
+
+2020-03-12  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_core_cmd): Make "No such file or directory" regexp
+	more precise.
+
+2020-03-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* lib/gdb.exp (standard_output_file): Use `pwd -W` to convert
+	from Unix to Windows path.
+
+2020-03-11  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.ada/minsyms.exp: Set language to ada.
+
+2020-03-11  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.server/sysroot.exp: Allow GLIBC's printf alias __printf.
+
+2020-03-11  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.btrace/reconnect.exp: Allow source line pattern after stepi.
+
+2020-03-11  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.dwarf2/variant.exp: Mark discriminants as artificial.
+
+2020-03-11  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/foll-fork.exp: Allow "Reading in symbols" messages.
+
+2020-03-11  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/break-interp.exp: Limit verbose scope.
+
+2020-03-11  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.fortran/logical.f90: Define variable with character type.
+	* gdb.fortran/logical.exp: Use character type instead of uint8_t.
+
+2020-03-11  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/list-ambiguous.exp: Set EDITOR to true.
+
+2020-03-11  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.ada/access_to_packed_array.exp: Test printing of expanded
+	symtabs.
+
+2020-03-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* gdb.cp/step-and-next-inline.cc: New file.
+	* gdb.cp/step-and-next-inline.exp: New file.
+	* gdb.cp/step-and-next-inline.h: New file.
+	* gdb.dwarf2/dw2-is-stmt.c: New file.
+	* gdb.dwarf2/dw2-is-stmt.exp: New file.
+	* gdb.dwarf2/dw2-is-stmt-2.c: New file.
+	* gdb.dwarf2/dw2-is-stmt-2.exp: New file.
+	* gdb.dwarf2/dw2-ranges-base.exp: Update line table pattern.
+
+2020-03-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/dwarf.exp (Dwarf::lines) Add support for modifying the
+	is-stmt flag in the line table.
+
+2020-03-09  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (cached_file): Create cache dir.
+
+2020-03-07  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.cp/ref-params.exp: Compare build_executable result with -1.
+	* gdb.cp/rvalue-ref-params.exp: Same.
+
+2020-03-06  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (tentative_rename, cached_file): New proc.
+	* boards/cc-with-tweaks.exp: Use cached_file to create gdb.sh.
+
+2020-03-06  Tom de Vries  <tdevries@suse.de>
+
+	* README: Fix "the the".
+	* gdb.base/dprintf.exp: Same.
+
+2020-03-05  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/maint.exp: Update "main print statistics" expected output.
+
+2020-03-04  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
+
+	* lib/fortran.exp (fortran_int4): Handle flang kind printing.
+	(fortran_int8): Likewise.
+	(fortran_real4): Likewise.
+	(fortran_real8): Likewise.
+	(fortran_complex4): Likewise.
+	(fortran_logical4): Likewise.
+	(fortran_character1): Likewise.
+
+2020-03-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/logical.exp: Add tests that any non-zero value is
+	printed as true.
+
+2020-03-03  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* gdb.base/printcmds.exp: Add test to verify printf of a
+	variable holding an address.
+
+2020-03-03  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.mi/gdb2549.exp: Fix "register values t" check-read1 timeout.
+
+2020-03-03  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.mi/list-thread-groups-available.exp: Use -prompt syntax for
+	gdb_test_multiple call.
+
+2020-03-03  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.mi/mi-sym-info.exp: Add missing -prompt "$mi_gdb_prompt$" to
+	gdb_test_multiple calls.
+
+2020-03-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/default.exp: Remove test of 'set history filename'.
+	* gdb.base/gdbinit-history.exp: Add tests for setting the history
+	filename to the empty string.
+	* lib/gdb.exp (gdb_init): Unset environment variables GDBHISTFILE
+	and GDBHISTSIZE.
+
+2020-03-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.server/stop-reply-no-thread.exp: Add test where T packet is
+	disabled.
+
+2020-03-02  Pedro Alves  <palves@redhat.com>
+	    Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_test_multiple): Handle prompt_regexp option using
+	-prompt prefix, before user_code argument.  Add -lbl option likewise.
+	(skip_python_tests_prompt, skip_libstdcxx_probe_tests_prompt)
+	(gdb_is_target_1): Add -prompt prefix and move to before user_code
+	argument.
+	* gdb.base/corefile-buildid.exp: Use -lbl option.  Rewrite regexps to
+	have "\r\n" at start-of-line, instead of at end-of-line.
+
+2020-02-28  Simon Marchi  <simon.marchi@efficios.com>
+
+	* lib/trace-support.exp (get_in_proc_agent): Adjust path to
+	libinproctrace.so.
+
+2020-02-28  Luis Machado  <luis.machado@linaro.org>
+
+	* gdb.arch/aarch64-fp.exp: Switch from "info registers" command
+	to "p/x".
+
+2020-02-28  Luis Machado  <luis.machado@linaro.org>
+
+	* gdb.arch/aarch64-dbreg-contents.c: Include stdlib.h, unistd.h,
+	asm/ptrace.h and error.h.
+
+2020-02-28  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/c-linkage-name.c (main): Call do_something_other_cu.
+	(struct wrapper, do_something, mundane/symada__cS): Move ...
+	* gdb.base/c-linkage-name-2.c: ... here.  New source file.
+	* gdb.base/c-linkage-name.exp: Add verification of psymtab expansion.
+	Update "print symada__cS before partial symtab expansion" regexp.
+	Update breakpoint location.  Flush symbol cache after expansion.
+
+2020-02-28  Luis Machado  <luis.machado@linaro.org>
+
+	* gdb.arch/aarch64-pauth.exp: Recognize optional PAC output.
+
+2020-02-27  Tom de Vries  <tdevries@suse.de>
+
+	* config/sid.exp: Remove unused globals.
+	* gdb.base/attach.exp: Same.
+	* gdb.base/catch-load.exp: Same.
+	* gdb.base/dbx.exp: Same.
+	* lib/gdb.exp: Same.
+	* lib/mi-support.exp: Same.
+	* lib/prompt.exp: Same.
+
+2020-02-27  Tom de Vries  <tdevries@suse.de>
+
+	* lib/tuiterm.exp (spawn): Handle case that spawn_out(slave,name) is
+	not set.
+
+2020-02-26  Aaron Merey  <amerey@redhat.com>
+
+	* gdb.debuginfod: New directory for debuginfod tests.
+	* gdb.debuginfod/main.c: New test file.
+	* gdb.debuginfod/fetch_src_and_symbols.exp: New tests.
+
+2020-02-26  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25603
+	* gdb.base/persistent-lang.cc: New test.
+	* gdb.base/persistent-lang.exp: New file.
+
+2020-02-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.fortran/derived-type-striding.exp: Add a new test.
+	* gdb.fortran/derived-type-striding.f90: Add pointer variable for
+	new test.
+
+2020-02-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/cached-source-file.exp: Avoid source file paths in test
+	names.
+
+2020-02-25  Tom de Vries  <tdevries@suse.de>
+
+	PR go/18926
+	* gdb.go/methods.exp: Remove gcc/93866 xfail.
+
+2020-02-24  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25592
+	* gdb.base/info-locals-unused-static-var.c: New test.
+	* gdb.base/info-locals-unused-static-var.exp: New file.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* gdb.python/tui-window.exp: New file.
+	* gdb.python/tui-window.py: New file.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	PR tui/17850:
+	* gdb.tui/new-layout.exp: Add horizontal layout and winheight
+	tests.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* gdb.tui/new-layout.exp: Add sub-layout tests.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* gdb.tui/new-layout.exp: New file.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* gdb.rust/rust-style.rs: New file.
+	* gdb.rust/rust-style.exp: New file.
+	* gdb.base/style.exp: Test structure printing.
+	* gdb.base/style.c (struct some_struct): New type.
+	(enum etype): New type.
+	(struct_value): New global.
+
+2020-02-21  Tom de Vries  <tdevries@suse.de>
+
+	PR go/18926
+	* lib/gdb.exp (bp_location2/bp_location2_regexp): Fix.
+	Remove blanket xfails.  Use message argument for gdb_breakpoint.
+	Make continuing to breakpoint test conditional on setting breakpoint.
+	Fix continuing to breakpoint regexp.  Add xfails for gccgo-6/7
+	DW_AT_name attribute.  Add xfail for GCC PR93866.
+
+2020-02-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.dwarf2/cpp-linkage-name.c: New file.
+	* gdb.dwarf2/cpp-linkage-name.exp: New file.
+
+2020-02-21  Shahab Vahedi  <shahab@synopsys.com>
+
+	* lib/gdb.exp (gdb_wrapper_init): Reset
+	"gdb_wrapper_initialized" to 0 if "wrapper_file" does
+	not exist.
+
+2020-02-20  Tom de Vries  <tdevries@suse.de>
+
+	PR go/17018
+	* gdb.go/hello.exp: Copy ...
+	* gdb.go/global-local-var-shadow.exp: ... here.  New file.  Expect
+	print of st to print value of global definition. Add xfail for GCC
+	PR93844.
+	* gdb.go/hello.exp: Remove printing of st before definition.
+	* gdb.go/hello.go: Copy ...
+	* gdb.go/global-local-var-shadow.go: ... here. New test.  Rename myst
+	to st.
+	* gdb.go/hello.go: Remove myst.  Remove comment about shadowing.
+
+2020-02-20  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (support_go_compile): New gdb_caching_proc.
+	(gdb_simple_compile): Handle compile_flags go by using .go extension
+	for source file.
+	* gdb.go/chan.exp: Use support_go_compile.
+	* gdb.go/handcall.exp: Same.
+	* gdb.go/hello.exp: Same.
+	* gdb.go/integers.exp: Same.
+	* gdb.go/max-depth.exp: Same.
+	* gdb.go/methods.exp: Same.
+	* gdb.go/package.exp: Same.
+	* gdb.go/strings.exp: Same.
+	* gdb.go/types.exp: Same.
+	* gdb.go/unsafe.exp: Same.
+
+2020-02-19  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.python/lib-types.exp: Make xfail more strict.
+
+2020-02-19  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.ada/funcall_ref.exp: Replace xfail setup by unsupported check.
+
+2020-02-19  Doug Evans  <dje@google.com>
+
+	PR rust/25535
+	* gdb.rust/simple.exp: Add test.
+	* gdb.rust/simple.rs: Add test.
+
+2020-02-19  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/corefile-buildid.exp (check_exec_file): Match info files
+	output line-by-line.
+
+2020-02-19  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.cp/cpexprs.exp: Remove c++/14186 kfail.
+
+2020-02-19  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/solib-overlap.exp: Use exec instead of system to execute
+	prelink.
+
+2020-02-19  Tom de Vries  <tdevries@suse.de>
+
+	* lib/cache.exp (ignore_pass, gdb_do_cache_wrap): New proc.
+	(gdb_do_cache): Use gdb_do_cache_wrap.
+	* gdb.base/gdb-caching-proc.exp (test_proc): Use gdb_do_cache_wrap.
+
+2020-02-19  Tom de Vries  <tdevries@suse.de>
+
+	* lib/dtrace.exp (dtrace_build_usdt_test_program): Use quiet as
+	gdb_compile option.
+
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.base/printcmds.exp (test_print_enums): Update expected
+	output.
+
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.base/printcmds.exp (test_print_enums): Expect hex values
+	for "unknown".
+
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.base/printcmds.c (enum flag_enum): Add FE_TWO_LEGACY
+	enumerator.
+
+2020-02-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.base/printcmds.c (enum flag_enum): Prefix enumerators with
+	FE_, add FE_NONE.
+	(three): Update.
+	(enum flag_enum_without_zero): New enum.
+	(flag_enum_without_zero): New variable.
+	(enum not_flag_enum): New enum.
+	(three_not_flag): New variable.
+	* gdb.base/printcmds.exp (test_artificial_arrays): Update.
+	(test_print_enums): Add more tests for printing flag enums.
+
+2020-02-18  Tom de Vries  <tdevries@suse.de>
+
+	* lib/ada.exp (gdb_compile_ada_1): Factor out of ...
+	(gdb_compile_ada): ... here.
+	(gnat_runtime_has_debug_info): Remove fail call for gdb_compile_ada
+	failure.  Use gdb_compile_ada_1 instead of gdb_compile_ada.
+
+2020-02-14  Tom Tromey  <tom@tromey.com>
+
+	* lib/gdbserver-support.exp (find_gdbserver): Find gdbserver in
+	build directory.
+	* boards/gdbserver-base.exp: Update path to gdbserver.
+
+2020-02-13  Tom de Vries  <tdevries@suse.de>
+
+	* lib/ada.exp (gdb_compile_ada): Delete stale exec before compilation.
+
+2020-02-13  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.ada/catch_ex_std.exp: Indicate unsupported if gnatbind/gnatlink
+	are missing.
+
+2020-02-13  Tom de Vries  <tdevries@suse.de>
+
+	* lib/ada.exp (gnatmake_version_at_least): Wrap exec call in a catch
+	call.
+
+2020-02-11  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	PR tui/25126
+	https://bugzilla.redhat.com/show_bug.cgi?id=1784210
+	* gdb.base/cached-source-file.c: New file.
+	* gdb.base/cached-source-file.exp: New file.
+
+2020-02-11  Tom de Vries  <tdevries@suse.de>
+
+	PR testsuite/25488
+	* lib/gdb.exp (gdb_init): Unset $file_last_loaded.
+
+2020-02-10  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.multi/multi-target.exp: Skip if skip_gdbserver_tests.
+
+2020-02-10  Maciej W. Rozycki  <macro@wdc.com>
+
+	* gdb.base/step-over-no-symbols.exp: Verify that $before_addr
+	and $after_addr are both integers before making a comparison.
+
+2020-02-09  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.base/many-headers.exp: Echo gdb command to gdb.log.  Capture gdb
+	command output and paste it into gdb.log.  If any, paste catch message
+	to gdb.log.
+
 2020-02-07  Tom Tromey  <tromey@adacore.com>
 
 	PR breakpoints/24915:
 	* gdb.base/annotate-symlink.exp: Use setup_xfail.
 
+2020-02-06  Shahab Vahedi  <shahab@synopsys.com>
+
+	* gdb.tui/tui-missing-src.exp: Add the "missing source
+	file" test for the TUI.
+
+2020-02-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.server/multi-ui-errors.exp: Give a test a real name to avoid
+	including a port number in the output.
+
+2020-02-04  Alok Kumar Sharma  <alokkumar.sharma@amd.com>
+
+	* lib/fortran.exp (fortran_int4): Handle clang.
+	(fortran_int8): Likewise.
+	(fortran_real4): Likewise.
+	(fortran_real8): Likewise.
+	(fortran_complex4): Likewise.
+	(fortran_logical4): Likewise.
+	(fortran_character1): Likewise.
+
+2020-02-04  Tom de Vries  <tdevries@suse.de>
+
+	* README (Race detection): Add note.
+
+2020-02-04  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (inferior_exited_re): Use "\[^\n\r\]*" instead of ".*".
+
+2020-02-04  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (inferior_exited_re): Use non-capturing parentheses.
+
+2020-02-03  Rogerio A. Cardoso  <rcardoso@linux.ibm.com>
+
+	* gdb.arch/powerpc-power8.exp: Delete trailing whitespace of
+	tbegin., tend. instructions. Replace bctar-, bctar+, bctarl-,
+	bctarl+ extended mnemonics when avaliable by bgttar, bnstarl,
+	blttar, bnetarl.
+	* gdb.arch/powerpc-power8.s: Fix comments. Fix instructions
+	binary for blttar, bnetarl.
+	* gdb.arch/powerpc-power9.exp: Delete trailing whitespace of
+	wait instruction. Delete ldmx test.
+	* gdb.arch/powerpc-power9.s: Delete ldmx instruction.
+
+2020-02-03  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
+
+	* gdb.fortran/array-bounds-high.exp: New file.
+	* gdb.fortran/array-bounds-high.f90: New file.
+
+2020-02-03  Lukas Durfina  <ldurfina@tachyum.com>  (tiny change)
+
+	* gdb.base/fileio.c: Remove #include of <sys/errno.h>.
+	Replace #include of <sys/fcntl.h> by <fcntl.h>.
+
+2020-02-01  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.server/server-kill-python.exp: Fix $gdb_tst_name typo.
+
+2020-01-31  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR tui/9765
+	* gdb.tui/tui-layout-asm-short-prog.S: New file.
+	* gdb.tui/tui-layout-asm-short-prog.exp: New file.
+
+2020-01-29  Luis Machado  <luis.machado@linaro.org>
+
+	* gdb.arch/aarch64-brk-patterns.c: New source file.
+	* gdb.arch/aarch64-brk-patterns.exp: New test.
+
+2020-01-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.cp/pass-by-ref-2.exp: Mark some tests as XFAIL based on the
+	GCC/Clang version.
+	* gdb.cp/pass-by-ref.exp: Ditto.
+
+2020-01-29  Tom de Vries  <tdevries@suse.de>
+
+	* gdb.threads/watchpoint-fork-child.c: Guard prints with #if DEBUG.
+	* gdb.threads/watchpoint-fork-mt.c: Same.
+	* gdb.threads/watchpoint-fork-parent.c: Same.
+	* gdb.threads/watchpoint-fork-st.c: Same.
+	* gdb.threads/watchpoint-fork.exp: Compile with DEBUG=0.
+
+2020-01-27  Luis Machado  <luis.machado@linaro.org>
+
+	* gdb.base/step-over-syscall.exp (setup): Check if we're already
+	sitting at a syscall instruction when we hit the syscall function's
+	breakpoint.
+	Check PC against one obtained with the x command.
+	Validate syscall number.
+	(step_over_syscall): Don't continue to the syscall instruction if
+	we're already there.
+
+2020-01-25  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/attach.exp: Test 'set exec-file-mismatch'.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.dwarf2/dw2-inline-many-frames.c: New file.
+	* gdb.dwarf2/dw2-inline-many-frames.exp: New file.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.dwarf2/dw2-inline-stepping.c: New file.
+	* gdb.dwarf2/dw2-inline-stepping.exp: New file.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/maint.exp: Update line table parsing test.
+	* gdb.dwarf2/dw2-ranges-base.exp: Add new line table parsing test.
+
+2020-01-24  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/25410
+	* gdb.multi/multi-re-run-1.c: New.
+	* gdb.multi/multi-re-run-2.c: New.
+	* gdb.multi/multi-re-run.exp: New.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR gdb/23718
+	* gdb.server/server-kill-python.exp: New file.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.server/multi-ui-errors.c: New file.
+	* gdb.server/multi-ui-errors.exp: New file.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR tui/9765
+	* gdb.tui/tui-layout-asm.exp: Add scrolling test for asm window.
+
+2020-01-19  Tom Tromey  <tom@tromey.com>
+
+	* gdb.tui/main.exp: Add check for plain "file".
+
+2020-01-16  Christian Biesinger  <cbiesinger@google.com>
+
+	* lib/gdb.exp: Fix spelling error (seperatelly).
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	PR symtab/12535:
+	* gdb.python/python.exp: Test decode_line with empty string
+	argument.
+
+2020-01-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* gdb.base/skip-inline.exp: Extend test.
+
+2020-01-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.dwarf2/dw2-bad-elf-other.S: New file.
+	* gdb.dwarf2/dw2-bad-elf.c: New file.
+	* gdb.dwarf2/dw2-bad-elf.exp: New file.
+
+2020-01-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/dwarf.exp (Dwarf::lines): Reset _line_saw_program and
+	_line_saw_file.
+
+2020-01-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/tuiterm.exp (Term::_check_box): Check some parts of the top
+	border.
+
+2020-01-10  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.multi/multi-target.exp (setup): Factor out "info
+	connections" and "info inferiors" tests to ...
+	(test_info_inferiors): ... this new procedure.
+	(top level): Run new "info-inferiors" tests.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* gdb.server/bkpt-other-inferior.exp: New file.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* gdb.base/kill-detach-inferiors-cmd.exp: Adjust expected output
+	of "add-inferior".
+	* gdb.base/quit-live.exp: Likewise.
+	* gdb.base/remote-exec-file.exp: Likewise.
+	* gdb.guile/scm-progspace.exp: Likewise.
+	* gdb.linespec/linespec.exp: Likewise.
+	* gdb.mi/new-ui-mi-sync.exp: Likewise.
+	* gdb.mi/user-selected-context-sync.exp: Likewise.
+	* gdb.multi/multi-target.exp (setup): Add "info connection" and
+	"info inferiors" tests.
+	* gdb.multi/remove-inferiors.exp: Adjust expected output of
+	"add-inferior".
+	* gdb.multi/watchpoint-multi.exp: Likewise.
+	* gdb.python/py-inferior.exp: Likewise.
+	* gdb.server/extended-remote-restart.exp: Likewise.
+	* gdb.threads/fork-plus-threads.exp: Adjust expected output of
+	"info inferiors".
+	* gdb.threads/forking-threads-plus-breakpoint.exp: Likewise.
+	* gdb.trace/report.exp: Likewise.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* gdb.multi/multi-target.c: New file.
+	* gdb.multi/multi-target.exp: New file.
+	* lib/gdbserver-support.exp (gdb_target_cmd): Handle "Non-stop
+	mode requested, but remote does not support non-stop".
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* gdb.server/extended-remote-restart.exp (test_reload): Explicitly
+	disconnect before reconnecting.
+
+2020-01-10  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	    Pedro Alves	 <palves@redhat.com>
+
+	* gdb.server/connect-without-multi-process.exp: Also test
+	continuing to end.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* gdb.base/remote-exec-file.exp: New file.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* gdb.base/fork-running-state.exp (do_test): Adjust expected
+	output.
+	* gdb.threads/async.c: New.
+	* gdb.threads/async.exp: New.
+	* gdb.multi/tids-gid-reset.c: New.
+	* gdb.multi/tids-gid-reset.exp: New.
+
+2020-01-10  George Barrett  <bob@bob131.so>
+
+	* gdb.base/stap-probe.c (relocation_marker): Add dummy variable
+	to help in finding the image relocation offset.
+	* gdb.base/stap-probe.exp (stap_test): Accept arbitrary compile
+	options in arguments.
+	(stap_test_no_debuginfo): Likewise.
+	(stap-probe-nosem-noopt-pie, stap-probe-nosem-noopt-nopie): Add
+	test variants.
+	(stap_test): Add null semaphore relocation test.
+
+2020-01-10  George Barrett  <bob@bob131.so>
+
+	* gdb.base/stap-probe.c: Rename USE_PROBES to USE_SEMAPHORES.
+	* gdb.base/stap-probe.exp: Likewise.
+	(stap_test): Pass argument as an additional flag.
+	(stap_test_no_debuginfo): Likewise.
+	(stap_test): Check `info probes stap' output for semaphore
+	addresses if the test binary is supposed to have them.
+
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.tui/basic.exp: Add more scrolling tests.
+
+2020-01-09  Tom Tromey  <tom@tromey.com>
+
+	PR tui/18932:
+	* lib/tuiterm.exp (Term::wait_for): Rename from _accept.  Return a
+	meangingful value.
+	(Term::command, Term::resize): Update.
+	* gdb.tui/basic.exp: Add scrolling test.
+
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.tui/tui-layout-asm.exp: New file.
+
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/tuiterm.exp (Term::check_box_contents): New proc.
+
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/tuiterm.exp (Term::prepare_for_tui): New proc.
+	(Term::enter_tui): Use Term::prepare_for_tui.
+
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* lib/tuiterm.exp (Term::dump_screen): Always dump the screen when
+	called.
+
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.base/skip.exp: Fix race condition in test.
+
 2020-01-06  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* gdb.base/backtrace.c: New file.
 	* gdb.base/backtrace.exp: New file.
 
+2020-01-05  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.tui/list.exp: Test 'focus next' after 'list main'.
+
+2020-01-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb.base/style.exp: Test that warnings are styled.
+
+2019-12-29  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* gdb.base/line65535.exp: New file.
+	* gdb.base/line65535.c: New file.
+
+2019-12-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* lib/ada.exp (gnat_runtime_has_debug_info): New proc.
+	* lib/gnat_debug_info_test.adb: New file.
+	* gdb.ada/ptype_tagged_param.exp: Use
+	gnat_runtime_has_debug_info, expect a different output if
+	runtime does not have debug info.
+
+2019-12-20  Simon Marchi  <simon.marchi@efficios.com>
+
+	* lib/sym-info-cmds.exp (GDBInfoSymbols::check_no_entry): Add
+	(another) quote in test name.
+
+2019-12-20  Simon Marchi  <simon.marchi@efficios.com>
+
+	* lib/sym-info-cmds.exp (GDBInfoModuleSymbols::check_no_entry):
+	Add quote in test name.
+
+2019-12-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb.cp/pass-by-ref.cc: Delete.  Generated in the output
+	directory instead.
+	* gdb.cp/pass-by-ref.exp: Extend with more cases.
+	* gdb.cp/pass-by-ref-2.cc: New file.
+	* gdb.cp/pass-by-ref-2.exp: New file.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* gdb.tui/list-before.exp: New file.
+
+2019-12-20  Tom Tromey  <tom@tromey.com>
+
+	* gdb.tui/list.exp: Check for source on initial listing.
+
+2019-12-11  Tom Tromey  <tromey@adacore.com>
+
+	* gdb.xml/tdesc-arch.exp (set_arch): Add "trans_mode" parameter.
+	Add crlf test.
+
+2019-12-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb.base/default.exp: Update value of $_gdb_major.
+
+2019-12-17  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* gdb.base/skip.exp: Fix test failure observed with gcc-9.2.0.
+
+2019-12-17  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* gdb.base/skip.exp: Whitespace fix.
+
+2019-12-16  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* gdb.base/skip-inline.c: New file.
+	* gdb.base/skip-inline.exp: New file.
+
 2019-12-16  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* gdb.base/jit-reader.exp (jit_reader_test): Rename
@@ -30,6 +3466,24 @@
 	function.
 	(read_sp, unwind_frame, get_frame_id): Adjust to other changes.
 
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* gdb.tui/resize.exp: Fix regexp.
+	* gdb.tui/regs.exp: Fix regexps.
+	* gdb.tui/main.exp: Fix regexp.
+
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* gdb.tui/resize.exp: Update.
+	* gdb.tui/empty.exp (layouts): Update.
+
+2019-12-11  Tom Tromey  <tom@tromey.com>
+
+	* gdb.tui/regs.exp: Update.
+	* gdb.tui/empty.exp (layouts): Update.
+	* gdb.tui/basic.exp: Update.
+	* lib/tuiterm.exp (_check_box): Don't check bottom border.
+
 2019-12-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
 	* gdb.base/options.exp: Add -raw-values in the print completion list.
@@ -763,7 +4217,7 @@
 
 2019-09-29  Tom de Vries  <tdevries@suse.de>
 
-        * gdb.dwarf2/gdb-index.exp: Handle new location of .dwz file.
+	* gdb.dwarf2/gdb-index.exp: Handle new location of .dwz file.
 
 2019-09-29  Tom de Vries  <tdevries@suse.de>
 
@@ -1258,7 +4712,7 @@
 2019-07-29  Tom de Vries  <tdevries@suse.de>
 
 	* gdb.base/maint.exp: Use "\r\n" instead of "\[\r\n\]+" in "maint
-          print registers" regexps.
+	print registers" regexps.
 
 2019-07-29  Tom de Vries  <tdevries@suse.de>
 
@@ -2223,6 +5677,10 @@
 	* gdb.cp/meth-typedefs.exp: Add new tests for `test_incomplete'
 	functions.
 
+2019-04-25  Ali Tamur  <tamur@google.com>
+
+	* lib/dwarf.exp (_handle_DW_FORM): Add DW_FORM_strx.
+
 2019-04-25  Sergio Durigan Junior  <sergiodj@redhat.com>
 
 	PR corefiles/11608
@@ -4247,6 +7705,13 @@
 	PR gdb/23104
 	* gdb.base/info-shared.exp: Replace libs=-ldl with shlib_load.
 
+2018-04-22  Rajendra SY  <rajendra.sy@gmail.com>
+
+	PR gdb/23095
+	* gdb.base/break-probes.exp: Pass shlib_load to
+	prepare_for_testing.  Set normal_bp to r_debug_state if target is
+	bsd.
+
 2018-04-19  Richard Bunt  <richard.bunt@arm.com>
 
 	* gdb.threads/multiple-successive-infcall.c: New test.
@@ -17957,6 +21422,6 @@ For older changes see ChangeLog-1993-201
 ;; version-control: never
 ;; End:
 
-    Copyright 2014-2020 Free Software Foundation, Inc.
+    Copyright 2014-2021 Free Software Foundation, Inc.
   Copying and distribution of this file, with or without modification,
   are permitted provided the copyright notice and this notice are preserved.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/ChangeLog-1993-2013 ./gdb/testsuite/ChangeLog-1993-2013
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/ChangeLog-1993-2013	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/ChangeLog-1993-2013	2021-05-21 01:57:24.000000000 +0000
@@ -24429,6 +24429,12 @@
 	* lib/mi-support.exp (mi_gdb_test): Add global declaration for
 	expect_out so that callers can get at it.
 
+2002-08-26  Joel Brobecker  <brobecker@gnat.com>
+
+	* gdb.base/commands.exp: New tests for commands
+	attached to a temporary breakpoint, and for commands that
+	delete the breakpoint they are attached to.
+
 2002-08-23  Daniel Jacobowitz  <drow@mvista.com>
 
 	* gdb.threads/print-threads.c: New file.
@@ -26039,6 +26045,13 @@ Wed Dec 19 14:10:57 2001  Jeffrey A Law
 	generated by GDB when it doesn't understand how to debug threads
 	on the target system.
 
+2001-04-17  Michael Snyder  <msnyder@redhat.com>
+
+	* gdb.trace/deltrace.exp: Allow for 64-bit addresses.
+	* gdb.trace/infotrace.exp: Ditto.
+	* gdb.trace/passcount.exp: Ditto.
+	* gdb.trace/while-stepping.exp: Ditto.
+
 2001-03-19  Andrew Cagney  <ac131313@redhat.com>
 
 	* gdb.mi/mi-console.exp: Document ``Hello'' as a known bug.
@@ -26625,7 +26638,12 @@ Mon May  1 15:37:58 2000  Andrew Cagney
 
 	* gdb.base/funcargs.exp: Relax patterns matching pointers to char.
 
-Thu Mar 30 13:26:19 2000  Philippe De Muyter  <phdm@macqel.be>
+2000-04-06  Michael Snyder  <msnyder@cygnus.com>
+
+	* gdb.threads/pthreads.exp (all_threads_running): Allow
+	for more than 15 thread increments.
+
+2000-03-30  Philippe De Muyter  <phdm@macqel.be>
 
 	* gdb.base/call-ar-st.c (init_small_structs, main): Use floating-point
 	values that can be represented exactly.
@@ -26763,6 +26781,11 @@ Mon Feb 21 13:05:36 2000  Andrew Cagney
 	* gdb.base/display.exp: Some yacc parsers like to say
 	"A syntax error" rather than "A parse error".  Accept both.
 
+2000-01-07  Michael Snyder  <msnyder@cygnus.com>
+
+	* gdb.threads/pthreads.exp: Try to link with -lthread if -lpthread
+	and -lpthreads fail.
+
 2000-01-06  Fernando Nasser  <fnasser@totem.to.cygnus.com>
 
 	* gdb.base/default.exp: Remove OS dependent string from "target
@@ -26782,6 +26805,22 @@ Mon Feb 21 13:05:36 2000  Andrew Cagney
 	* gdb.base/ptype.c (FALSE, TRUE): #undef these to avoid clash on
 	AIX, which defines them in <sys/types.h>.
 
+1999-12-20  Michael Snyder  <msnyder@cleaver.cygnus.com>
+
+	* gdb.base/callfuncs.exp: Make "next" test match the next source
+	line, in case the "next" runs away.
+
+1999-02-18  Jason Molenda  (jsm@bugshack.cygnus.com)
+
+	* testsuite/gdb.chill/tests1.ch, testsuite/gdb.chill/tests2.ch,
+	testsuite/gdb.chill/tests2.exp: Update FSF address in copyright
+	notices.
+
+1999-12-16  Michael Snyder  <msnyder@cleaver.cygnus.com>
+
+	* gdb.threads/linux-dp.exp: Make test for "New Thread" message
+	more forgiving.  Ditto test for "info threads".
+
 1999-12-16  Stan Shebs  <shebs@andros.cygnus.com>
 
 	* gdb.base/default.exp: Match arm* etc instead of arm in "info
@@ -30891,6 +30930,11 @@ Fri Mar 24 06:11:05 1995  Jim Kingdon  (
 	* gdb.base/a1-selftest.exp (test_with_self): Remove comment which
 	apparently went with a (very) old xfail.
 
+Fri Mar 24 15:45:42 1995  Stu Grossman  (grossman@cygnus.com)
+
+	* gdb.base/break.exp: Lots of cleanups.  Use gdb_test more
+	thoroughly.
+
 Fri Mar 24 13:41:09 1995  Kung Hsu  <kung@mexican.cygnus.com>
 
 	* gdb.base/callfuncs.exp: call runto_main instead of runto main.
@@ -33331,6 +33375,12 @@ Fri Apr 23 18:13:28 1993  K. Richard Pix
 	* configure.in: switch subdirs assignment to configdirs.
 	* gdb.t*/configure.in: new files.
 
+Fri Apr 23 10:34:02 1993  Stu Grossman  (grossman@cygnus.com)
+
+	* gdb.t16/gdbme.c, testsuite/gdb.t17/gdbme.c:  Add calls
+	to malloc() so that we can test GDB eval of dynamically created
+	arrays (like char strings in `print "foo"').
+
 Thu Apr 22 08:27:53 1993  Ian Lance Taylor  (ian@cygnus.com)
 
 	* gdb.t07/watchpoint.exp: Removed a29k expected failure which now
@@ -33649,6 +33699,6 @@ Sun Feb 21 10:55:55 1993  Mike Werner  (
 ;; version-control: never
 ;; End:
 
-    Copyright 1993-2020 Free Software Foundation, Inc.
+    Copyright 1993-2021 Free Software Foundation, Inc.
   Copying and distribution of this file, with or without modification,
   are permitted provided the copyright notice and this notice are preserved.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/cfdbug.exp ./gdb/testsuite/config/cfdbug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/cfdbug.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/cfdbug.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/d10v.exp ./gdb/testsuite/config/d10v.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/d10v.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/d10v.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+#   Copyright (C) 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/default.exp ./gdb/testsuite/config/default.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/default.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/default.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/dve.exp ./gdb/testsuite/config/dve.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/dve.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/dve.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/extended-gdbserver.exp ./gdb/testsuite/config/extended-gdbserver.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/extended-gdbserver.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/extended-gdbserver.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2000-2020 Free Software Foundation, Inc.
+# Copyright 2000-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/gdbserver.exp ./gdb/testsuite/config/gdbserver.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/gdbserver.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/gdbserver.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2000-2020 Free Software Foundation, Inc.
+# Copyright 2000-2021 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
@@ -36,12 +36,8 @@
 #	Unles you have a gdbserver that can handle multiple sessions.
 #
 #   set_board_info noargs 1
-#	At present there is no provision in the remote protocol
-#	for passing arguments.  This test framework does not
-#	address the issue, so it's best to set this variable
-#	in your baseboard configuration file.  
-#	FIXME: there's no reason why the test harness couldn't
-#	pass commandline args when it spawns gdbserver.
+#	Set this if the board does not support passing arguments to the
+#	inferior process.
 #
 #   set_board_info gdb,noinferiorio 1
 #	Neither the traditional gdbserver nor the one in libremote
@@ -77,8 +73,8 @@ proc gdbserver_gdb_load { } {
     return [gdbserver_spawn ""]
 }
 
-proc gdb_reload { } {
-    return [gdbserver_run ""]
+proc gdb_reload { {inferior_args {}} } {
+    return [gdbserver_run $inferior_args]
 }
 
 proc gdb_reconnect { } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/i960.exp ./gdb/testsuite/config/i960.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/i960.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/i960.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/m32r.exp ./gdb/testsuite/config/m32r.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/m32r.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/m32r.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/mips.exp ./gdb/testsuite/config/mips.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/mips.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/mips.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 1993-2020 Free Software Foundation, Inc.
+#   Copyright (C) 1993-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/mips-idt.exp ./gdb/testsuite/config/mips-idt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/mips-idt.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/mips-idt.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 1993-2020 Free Software Foundation, Inc.
+#   Copyright (C) 1993-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/mn10300-eval.exp ./gdb/testsuite/config/mn10300-eval.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/mn10300-eval.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/mn10300-eval.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/monitor.exp ./gdb/testsuite/config/monitor.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/monitor.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/monitor.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Test Framework Driver for GDB driving a ROM monitor (via monitor.c).
-#   Copyright 1995-2020 Free Software Foundation, Inc.
+#   Copyright 1995-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/proelf.exp ./gdb/testsuite/config/proelf.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/proelf.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/proelf.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/rom68k.exp ./gdb/testsuite/config/rom68k.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/rom68k.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/rom68k.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/sh.exp ./gdb/testsuite/config/sh.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/sh.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/sh.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/sid.exp ./gdb/testsuite/config/sid.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/sid.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/sid.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Test Framework Driver for GDB driving an external simulator
-#   Copyright 1999-2020 Free Software Foundation, Inc.
+#   Copyright 1999-2021 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
@@ -15,8 +15,6 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 proc sid_start {} {
-    global verbose
-
     set port [lindex [split [target_info netport] ":"] 1]
 
     # Set a default endianness
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/sim.exp ./gdb/testsuite/config/sim.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/sim.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/sim.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Test Framework Driver for GDB driving a builtin simulator
-#   Copyright 1994-2020 Free Software Foundation, Inc.
+#   Copyright 1994-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/slite.exp ./gdb/testsuite/config/slite.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/slite.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/slite.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1993-2020 Free Software Foundation, Inc.
+#   Copyright 1993-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/unix.exp ./gdb/testsuite/config/unix.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/unix.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/unix.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+#   Copyright (C) 1988-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/vr4300.exp ./gdb/testsuite/config/vr4300.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/vr4300.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/vr4300.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/vr5000.exp ./gdb/testsuite/config/vr5000.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/config/vr5000.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/config/vr5000.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/configure ./gdb/testsuite/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/configure	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/configure	2021-05-21 01:57:24.000000000 +0000
@@ -638,6 +638,7 @@ LDFLAGS
 CFLAGS
 CC
 RPATH_ENVVAR
+enable_libctf
 subdirs
 target_noncanonical
 target_os
@@ -694,6 +695,7 @@ ac_subst_files=''
 ac_user_opts='
 enable_option_checking
 enable_gdbtk
+enable_libctf
 enable_shared
 '
       ac_precious_vars='build_alias
@@ -1323,6 +1325,7 @@ Optional Features:
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-gtk            enable gdbtk graphical user interface (GUI)
+  --enable-libctf         Handle .ctf type-info sections [default=yes]
   --enable-shared         build shared libraries deault=yes
 
 Some influential environment variables:
@@ -2189,6 +2192,21 @@ subdirs="$subdirs gdb.gdbtk"
 
 fi
 
+ # Check whether --enable-libctf was given.
+if test "${enable_libctf+set}" = set; then :
+  enableval=$enable_libctf;
+      case "$enableval" in
+       yes|no) ;;
+       *) as_fn_error $? "Argument to enable/disable libctf must be yes or no" "$LINENO" 5 ;;
+      esac
+
+else
+  enable_libctf=yes
+fi
+
+
+
+
 # Enable shared libraries.
 # Check whether --enable-shared was given.
 if test "${enable_shared+set}" = set; then :
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/configure.ac ./gdb/testsuite/configure.ac
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/configure.ac	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/configure.ac	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 #                                                       -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
 
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
@@ -43,6 +43,9 @@ if test $enable_gdbtk = yes; then
    AC_CONFIG_SUBDIRS(gdb.gdbtk)
 fi
 
+GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections])
+AC_SUBST(enable_libctf)
+
 # Enable shared libraries.
 AC_ARG_ENABLE(shared,
 [  --enable-shared         build shared libraries [deault=yes]],,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_tagged_param/foo.adb ./gdb/testsuite/gdb.ada/access_tagged_param/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_tagged_param/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_tagged_param/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_tagged_param/pck.adb ./gdb/testsuite/gdb.ada/access_tagged_param/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_tagged_param/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_tagged_param/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_tagged_param/pck.ads ./gdb/testsuite/gdb.ada/access_tagged_param/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_tagged_param/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_tagged_param/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_tagged_param.exp ./gdb/testsuite/gdb.ada/access_tagged_param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_tagged_param.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_tagged_param.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -18,6 +18,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_packed_array/foo.adb ./gdb/testsuite/gdb.ada/access_to_packed_array/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_packed_array/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_to_packed_array/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_packed_array/pack.adb ./gdb/testsuite/gdb.ada/access_to_packed_array/pack.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_packed_array/pack.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_to_packed_array/pack.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_packed_array/pack.ads ./gdb/testsuite/gdb.ada/access_to_packed_array/pack.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_packed_array/pack.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_to_packed_array/pack.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_packed_array.exp ./gdb/testsuite/gdb.ada/access_to_packed_array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_packed_array.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_to_packed_array.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
@@ -23,6 +25,16 @@ if {[gdb_compile_ada "${srcfile}" "${bin
 
 clean_restart ${testfile}
 
+# Test that printing symbols does not cause segv.
+gdb_test_no_output "maint expand-symtabs"
+set file [standard_output_file gdb.txt]
+gdb_test_no_output "set logging file $file" "set logging file"
+gdb_test_no_output "set logging redirect on"
+gdb_test "set logging on"
+gdb_test_no_output "maint print symbols"
+gdb_test "set logging off"
+file delete $file
+
 set bp_location [gdb_get_line_number "BREAK" ${testdir}/foo.adb]
 runto "foo.adb:$bp_location"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_unbounded_array/foo.adb ./gdb/testsuite/gdb.ada/access_to_unbounded_array/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_unbounded_array/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_to_unbounded_array/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_unbounded_array/pack.adb ./gdb/testsuite/gdb.ada/access_to_unbounded_array/pack.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_unbounded_array/pack.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_to_unbounded_array/pack.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_unbounded_array/pack.ads ./gdb/testsuite/gdb.ada/access_to_unbounded_array/pack.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_unbounded_array/pack.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_to_unbounded_array/pack.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_unbounded_array.exp ./gdb/testsuite/gdb.ada/access_to_unbounded_array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/access_to_unbounded_array.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/access_to_unbounded_array.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/addr_arith/foo_na07_019.adb ./gdb/testsuite/gdb.ada/addr_arith/foo_na07_019.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/addr_arith/foo_na07_019.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/addr_arith/foo_na07_019.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/addr_arith/pck.adb ./gdb/testsuite/gdb.ada/addr_arith/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/addr_arith/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/addr_arith/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/addr_arith/pck.ads ./gdb/testsuite/gdb.ada/addr_arith/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/addr_arith/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/addr_arith/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/addr_arith.exp ./gdb/testsuite/gdb.ada/addr_arith.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/addr_arith.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/addr_arith.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_na07_019
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/aliased_array/foo.adb ./gdb/testsuite/gdb.ada/aliased_array/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/aliased_array/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/aliased_array/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/aliased_array/pck.adb ./gdb/testsuite/gdb.ada/aliased_array/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/aliased_array/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/aliased_array/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/aliased_array/pck.ads ./gdb/testsuite/gdb.ada/aliased_array/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/aliased_array/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/aliased_array/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/aliased_array.exp ./gdb/testsuite/gdb.ada/aliased_array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/aliased_array.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/aliased_array.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap.adb ./gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap.ads ./gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
@@ -34,14 +34,16 @@ package Enum_With_Gap is
      );
    for Enum_With_Gaps'size use 16;
 
+   type Enum_Subrange is new Enum_With_Gaps range Lit1 .. Lit3;
+
    type MyWord is range 0 .. 16#FFFF# ;
    for MyWord'Size use 16;
 
    type AR is array (Enum_With_Gaps range <>) of MyWord;
    type AR_Access is access AR;
-   
+
    type String_Access is access String;
-   
+
    procedure Do_Nothing (E : AR_Access);
    procedure Do_Nothing (E : String_Access);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap_main.adb ./gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap_main.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap_main.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arr_acc_idx_w_gap/enum_with_gap_main.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
@@ -19,6 +19,7 @@ procedure Enum_With_Gap_Main is
    Indexed_By_Enum : AR_Access :=
      new AR'(LIT1 => 1,  LIT2 => 43, LIT3 => 42, LIT4 => 41);
    S : String_Access := new String'("Hello!");
+   V : Enum_Subrange := LIT3;
 begin
    Do_Nothing (Indexed_By_Enum); --  BREAK
    Do_Nothing (S);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_acc_idx_w_gap.exp ./gdb/testsuite/gdb.ada/arr_acc_idx_w_gap.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_acc_idx_w_gap.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arr_acc_idx_w_gap.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile enum_with_gap_main
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
@@ -53,3 +55,10 @@ gdb_test "print indexed_by_enum(lit2..li
          " = \\(lit2 => 43, 42, 41\\)"
 gdb_test "print s(2..4)" \
          " = \"ell\""
+
+gdb_test "print v" " = lit3"
+gdb_test "print enum_subrange'pos(v)" " = 3"
+gdb_test "print enum_subrange'val(3)" " = lit3"
+
+gdb_test "print indexed_by_enum(lit2)" "43"
+gdb_test "print s(2)" "101 'e'"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_arr/foo.adb ./gdb/testsuite/gdb.ada/arr_arr/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_arr/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arr_arr/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_arr/pck.adb ./gdb/testsuite/gdb.ada/arr_arr/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_arr/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arr_arr/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_arr/pck.ads ./gdb/testsuite/gdb.ada/arr_arr/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_arr/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arr_arr/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_arr.exp ./gdb/testsuite/gdb.ada/arr_arr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_arr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arr_arr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_bounds/bar.adb ./gdb/testsuite/gdb.ada/array_bounds/bar.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_bounds/bar.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_bounds/bar.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_bounds.exp ./gdb/testsuite/gdb.ada/array_bounds.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_bounds.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_bounds.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile bar
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_char_idx/foo.adb ./gdb/testsuite/gdb.ada/array_char_idx/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_char_idx/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_char_idx/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_char_idx/pck.adb ./gdb/testsuite/gdb.ada/array_char_idx/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_char_idx/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_char_idx/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_char_idx/pck.ads ./gdb/testsuite/gdb.ada/array_char_idx/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_char_idx/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_char_idx/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_char_idx.exp ./gdb/testsuite/gdb.ada/array_char_idx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_char_idx.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_char_idx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -31,5 +31,7 @@ gdb_test "ptype char_table" \
 gdb_test "ptype global_char_table" \
          "= array \\(character\\) of natural"
 
-gdb_test "print my_table" "= \\(0 <repeats 256 times>\\)" \
+# Some more recent versions of gcc can statically initialize this
+# array, so we allow either 0 or 4874.
+gdb_test "print my_table" "= \\((0|4874) <repeats 256 times>\\)" \
          "Display my_table"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arraydim/foo.adb ./gdb/testsuite/gdb.ada/arraydim/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arraydim/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arraydim/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arraydim/inc.c ./gdb/testsuite/gdb.ada/arraydim/inc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arraydim/inc.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arraydim/inc.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arraydim/pck.adb ./gdb/testsuite/gdb.ada/arraydim/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arraydim/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arraydim/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arraydim/pck.ads ./gdb/testsuite/gdb.ada/arraydim/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arraydim/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arraydim/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arraydim.exp ./gdb/testsuite/gdb.ada/arraydim.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arraydim.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arraydim.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 set cfile "inc"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayidx/p.adb ./gdb/testsuite/gdb.ada/arrayidx/p.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayidx/p.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arrayidx/p.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2005-2020 Free Software Foundation, Inc.
+--  Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayidx.exp ./gdb/testsuite/gdb.ada/arrayidx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayidx.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arrayidx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_of_variable_length/foo.adb ./gdb/testsuite/gdb.ada/array_of_variable_length/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_of_variable_length/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_of_variable_length/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_of_variable_length/pck.adb ./gdb/testsuite/gdb.ada/array_of_variable_length/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_of_variable_length/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_of_variable_length/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_of_variable_length/pck.ads ./gdb/testsuite/gdb.ada/array_of_variable_length/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_of_variable_length/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_of_variable_length/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_of_variable_length.exp ./gdb/testsuite/gdb.ada/array_of_variable_length.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_of_variable_length.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_of_variable_length.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayparam/foo.adb ./gdb/testsuite/gdb.ada/arrayparam/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayparam/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arrayparam/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayparam/pck.adb ./gdb/testsuite/gdb.ada/arrayparam/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayparam/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arrayparam/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayparam/pck.ads ./gdb/testsuite/gdb.ada/arrayparam/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayparam/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arrayparam/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayparam.exp ./gdb/testsuite/gdb.ada/arrayparam.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayparam.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arrayparam.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
@@ -29,7 +31,7 @@ runto "foo.adb:$bp_location"
 # Verify that a call to a function that takes an array as a parameter
 # works without problem.
 
-gdb_test "print call_me (\"bonjour\")" \
+gdb_test "print call_me(\"bonjour\")" \
          "= void"
 
 # Verify that the array was passed properly by checking the global
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayptr/foo.adb ./gdb/testsuite/gdb.ada/arrayptr/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayptr/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arrayptr/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayptr/pck.adb ./gdb/testsuite/gdb.ada/arrayptr/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayptr/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arrayptr/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayptr/pck.ads ./gdb/testsuite/gdb.ada/arrayptr/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayptr/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arrayptr/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayptr.exp ./gdb/testsuite/gdb.ada/arrayptr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arrayptr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arrayptr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
@@ -32,15 +34,15 @@ if ![runto "foo.adb:$bp_location" ] then
 gdb_test "print string_p" \
          "= \\(foo\\.string_access\\) 0x\[0-9a-zA-Z\]+"
 
-gdb_test "print string_p (3..4)" "= \"ll\""
+gdb_test "print string_p(3..4)" "= \"ll\""
 
 gdb_test "print null_string" "= \\(foo\\.string_access\\) 0x0"
 
 gdb_test "print arr_ptr" "= \\(access foo\\.little_array\\) 0x\[0-9a-zA-Z\]+"
 
-gdb_test "print arr_ptr (2)" "= 22"
+gdb_test "print arr_ptr(2)" "= 22"
 
-gdb_test "print arr_ptr (3..4)" "= \\(3 => 23, 24\\)"
+gdb_test "print arr_ptr(3..4)" "= \\(3 => 23, 24\\)"
 
 gdb_test "ptype string_access" "= access array \\(<>\\) of character"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_ptr_renaming/foo.adb ./gdb/testsuite/gdb.ada/array_ptr_renaming/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_ptr_renaming/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_ptr_renaming/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_ptr_renaming/pack.ads ./gdb/testsuite/gdb.ada/array_ptr_renaming/pack.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_ptr_renaming/pack.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_ptr_renaming/pack.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_ptr_renaming.exp ./gdb/testsuite/gdb.ada/array_ptr_renaming.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_ptr_renaming.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_ptr_renaming.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
@@ -33,7 +35,7 @@ gdb_test "print nt(1)" " = 10"
 # representation with GNAT (fat pointers).  In this case, GDB "forgets" that
 # it's dealing with an access and prints directly the array contents.  This
 # should be fixed some day.
-setup_kfail "gdb/NNNN" *-*-*
+setup_kfail "gdb/25883" *-*-*
 gdb_test "print ntp"     " = \\(access pack\\.table_type\\) $hex.*"
 gdb_test "print ntp.all" " = \\(3 => 30, 40\\)"
 gdb_test "print ntp(3)"  " = 30"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_return/p.adb ./gdb/testsuite/gdb.ada/array_return/p.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_return/p.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_return/p.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2006-2020 Free Software Foundation, Inc.
+--  Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_return/pck.adb ./gdb/testsuite/gdb.ada/array_return/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_return/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_return/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2006-2020 Free Software Foundation, Inc.
+--  Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_return/pck.ads ./gdb/testsuite/gdb.ada/array_return/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_return/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_return/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2006-2020 Free Software Foundation, Inc.
+--  Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_return.exp ./gdb/testsuite/gdb.ada/array_return.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_return.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_return.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_subscript_addr/p.adb ./gdb/testsuite/gdb.ada/array_subscript_addr/p.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_subscript_addr/p.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_subscript_addr/p.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_subscript_addr.exp ./gdb/testsuite/gdb.ada/array_subscript_addr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/array_subscript_addr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/array_subscript_addr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile p
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_enum_idx_w_gap/foo_q418_043.adb ./gdb/testsuite/gdb.ada/arr_enum_idx_w_gap/foo_q418_043.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_enum_idx_w_gap/foo_q418_043.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arr_enum_idx_w_gap/foo_q418_043.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_enum_idx_w_gap.exp ./gdb/testsuite/gdb.ada/arr_enum_idx_w_gap.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/arr_enum_idx_w_gap.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/arr_enum_idx_w_gap.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_q418_043
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/assign_1.exp ./gdb/testsuite/gdb.ada/assign_1.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/assign_1.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/assign_1.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 gdb_exit
 gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/assign_arr/main_p324_051.adb ./gdb/testsuite/gdb.ada/assign_arr/main_p324_051.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/assign_arr/main_p324_051.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/assign_arr/main_p324_051.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/assign_arr/target_wrapper.ads ./gdb/testsuite/gdb.ada/assign_arr/target_wrapper.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/assign_arr/target_wrapper.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/assign_arr/target_wrapper.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/assign_arr.exp ./gdb/testsuite/gdb.ada/assign_arr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/assign_arr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/assign_arr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile main_p324_051
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
@@ -26,5 +28,5 @@ clean_restart ${testfile}
 set bp_location [gdb_get_line_number "STOP" ${testdir}/main_p324_051.adb]
 runto "main_p324_051.adb:$bp_location"
 
-gdb_test "print assign_arr_input.u2 := (0.25,0.5,0.75)" \
+gdb_test "print assign_arr_input.u2 :=(0.25,0.5,0.75)" \
          " = \\(0\\.25, 0\\.5, 0\\.75\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/atomic_enum/foo.adb ./gdb/testsuite/gdb.ada/atomic_enum/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/atomic_enum/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/atomic_enum/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/atomic_enum/pck.adb ./gdb/testsuite/gdb.ada/atomic_enum/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/atomic_enum/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/atomic_enum/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/atomic_enum/pck.ads ./gdb/testsuite/gdb.ada/atomic_enum/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/atomic_enum/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/atomic_enum/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/atomic_enum.exp ./gdb/testsuite/gdb.ada/atomic_enum.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/atomic_enum.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/atomic_enum.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnat05 ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/attr_ref_and_charlit/foo.adb ./gdb/testsuite/gdb.ada/attr_ref_and_charlit/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/attr_ref_and_charlit/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/attr_ref_and_charlit/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/attr_ref_and_charlit.exp ./gdb/testsuite/gdb.ada/attr_ref_and_charlit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/attr_ref_and_charlit.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/attr_ref_and_charlit.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile "foo"
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
@@ -29,14 +31,19 @@ set bp_location [gdb_get_line_number "BR
 # work as expected. They used to yield syntax error.
 
 runto "foo.adb:$bp_location"
-gdb_test "print s'first" " = 2"
-gdb_test "print s'last"  " = 3"
-gdb_test "print s(s'first) = 'a'" " = true"
-gdb_test "print s(s'last) /= 'b'" " = false"
+with_test_prefix "run" {
+    gdb_test "print s'first" " = 2"
+    gdb_test "print s'last"  " = 3"
+    gdb_test "print s(s'first) = 'a'" " = true"
+    gdb_test "print s(s'last) /= 'b'" " = false"
+}
 
 gdb_test "continue" \
-         ".*Breakpoint \[0-9\]+, foo\\.p \\(s=.*\\) at .*foo.adb:\[0-9\]+.*" \
-gdb_test "print s'first" " = 4"
-gdb_test "print s'last"  " = 5"
-gdb_test "print s(s'first) = 'c'" " = true"
-gdb_test "print s(s'last) /= 'd'" " = false"
+         ".*Breakpoint \[0-9\]+, foo\\.p \\(s=.*\\) at .*foo.adb:\[0-9\]+.*"
+
+with_test_prefix "cont" {
+    gdb_test "print s'first" " = 4"
+    gdb_test "print s'last"  " = 5"
+    gdb_test "print s(s'first) = 'c'" " = true"
+    gdb_test "print s(s'last) /= 'd'" " = false"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bad-task-bp-keyword/foo.adb ./gdb/testsuite/gdb.ada/bad-task-bp-keyword/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bad-task-bp-keyword/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bad-task-bp-keyword/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2009-2020 Free Software Foundation, Inc.
+--  Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bad-task-bp-keyword.exp ./gdb/testsuite/gdb.ada/bad-task-bp-keyword.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bad-task-bp-keyword.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bad-task-bp-keyword.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bias/bias.adb ./gdb/testsuite/gdb.ada/bias/bias.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bias/bias.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bias/bias.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bias/pck.adb ./gdb/testsuite/gdb.ada/bias/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bias/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bias/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bias/pck.ads ./gdb/testsuite/gdb.ada/bias/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bias/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bias/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bias.exp ./gdb/testsuite/gdb.ada/bias.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bias.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bias.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile bias
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/big_packed_array/foo_ra24_010.adb ./gdb/testsuite/gdb.ada/big_packed_array/foo_ra24_010.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/big_packed_array/foo_ra24_010.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/big_packed_array/foo_ra24_010.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/big_packed_array/pck.adb ./gdb/testsuite/gdb.ada/big_packed_array/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/big_packed_array/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/big_packed_array/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/big_packed_array/pck.ads ./gdb/testsuite/gdb.ada/big_packed_array/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/big_packed_array/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/big_packed_array/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/big_packed_array.exp ./gdb/testsuite/gdb.ada/big_packed_array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/big_packed_array.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/big_packed_array.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/boolean_expr.exp ./gdb/testsuite/gdb.ada/boolean_expr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/boolean_expr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/boolean_expr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 gdb_exit
 gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_c_mixed_case/bar.c ./gdb/testsuite/gdb.ada/bp_c_mixed_case/bar.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_c_mixed_case/bar.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_c_mixed_case/bar.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb ./gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_c_mixed_case/foo_h731_021.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_c_mixed_case/qux.c ./gdb/testsuite/gdb.ada/bp_c_mixed_case/qux.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_c_mixed_case/qux.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_c_mixed_case/qux.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_c_mixed_case.exp ./gdb/testsuite/gdb.ada/bp_c_mixed_case.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_c_mixed_case.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_c_mixed_case.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -20,6 +20,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_h731_021
 
 set cfile "bar"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_enum_homonym/p.adb ./gdb/testsuite/gdb.ada/bp_enum_homonym/p.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_enum_homonym/p.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_enum_homonym/p.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_enum_homonym/pck.adb ./gdb/testsuite/gdb.ada/bp_enum_homonym/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_enum_homonym/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_enum_homonym/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_enum_homonym/pck.ads ./gdb/testsuite/gdb.ada/bp_enum_homonym/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_enum_homonym/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_enum_homonym/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_enum_homonym.exp ./gdb/testsuite/gdb.ada/bp_enum_homonym.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_enum_homonym.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_enum_homonym.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile p
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_fun_addr/bp_fun_addr.adb ./gdb/testsuite/gdb.ada/bp_fun_addr/bp_fun_addr.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_fun_addr/bp_fun_addr.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_fun_addr/bp_fun_addr.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_fun_addr.exp ./gdb/testsuite/gdb.ada/bp_fun_addr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_fun_addr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_fun_addr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func/b.adb ./gdb/testsuite/gdb.ada/bp_inlined_func/b.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func/b.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_inlined_func/b.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func/b.ads ./gdb/testsuite/gdb.ada/bp_inlined_func/b.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func/b.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_inlined_func/b.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func/c.adb ./gdb/testsuite/gdb.ada/bp_inlined_func/c.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func/c.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_inlined_func/c.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func/c.ads ./gdb/testsuite/gdb.ada/bp_inlined_func/c.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func/c.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_inlined_func/c.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func/foo.adb ./gdb/testsuite/gdb.ada/bp_inlined_func/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_inlined_func/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func.exp ./gdb/testsuite/gdb.ada/bp_inlined_func.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_inlined_func.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_inlined_func.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_on_var/foo.adb ./gdb/testsuite/gdb.ada/bp_on_var/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_on_var/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_on_var/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_on_var/pck.adb ./gdb/testsuite/gdb.ada/bp_on_var/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_on_var/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_on_var/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_on_var/pck.ads ./gdb/testsuite/gdb.ada/bp_on_var/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_on_var/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_on_var/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_on_var.exp ./gdb/testsuite/gdb.ada/bp_on_var.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_on_var.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_on_var.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
@@ -28,7 +30,7 @@ clean_restart ${testfile}
 # We are going to insert breakpoints using locations that are invalid.
 # Set "breakpoint pending" to "off" in order to avoid having to deal
 # with GDB asking whether to insert a pending breakpoint or not.
-gdb_test_no_output "set breakpoint pending off"
+gdb_test_no_output "set breakpoint pending off" "disable pending breakpoints"
 
 gdb_test "break pck.my_global_variable" \
          "Function \"pck\\.my_global_variable\" not defined\\."
@@ -38,7 +40,8 @@ gdb_test "break pck.my_global_variable"
 
 clean_restart ${testfile}
 
-gdb_test_no_output "set breakpoint pending off"
+gdb_test_no_output "set breakpoint pending off" \
+    "disable pending breakpoints after restart"
 
 gdb_test "break pck.my_hidden_variable" \
          "Function \"pck\\.my_hidden_variable\" not defined\\."
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_range_type/foo.adb ./gdb/testsuite/gdb.ada/bp_range_type/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_range_type/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_range_type/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_range_type/pck.adb ./gdb/testsuite/gdb.ada/bp_range_type/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_range_type/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_range_type/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_range_type/pck.ads ./gdb/testsuite/gdb.ada/bp_range_type/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_range_type/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_range_type/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_range_type.exp ./gdb/testsuite/gdb.ada/bp_range_type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_range_type.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_range_type.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset/foo.adb ./gdb/testsuite/gdb.ada/bp_reset/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_reset/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset/io.adb ./gdb/testsuite/gdb.ada/bp_reset/io.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset/io.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_reset/io.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset/io.ads ./gdb/testsuite/gdb.ada/bp_reset/io.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset/io.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_reset/io.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset/pck.adb ./gdb/testsuite/gdb.ada/bp_reset/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_reset/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset/pck.ads ./gdb/testsuite/gdb.ada/bp_reset/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_reset/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset.exp ./gdb/testsuite/gdb.ada/bp_reset.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/bp_reset.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/bp_reset.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/byte_packed_arr/array_list_g.ads ./gdb/testsuite/gdb.ada/byte_packed_arr/array_list_g.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/byte_packed_arr/array_list_g.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/byte_packed_arr/array_list_g.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/byte_packed_arr/reprod.adb ./gdb/testsuite/gdb.ada/byte_packed_arr/reprod.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/byte_packed_arr/reprod.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/byte_packed_arr/reprod.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/byte_packed_arr/reprod.ads ./gdb/testsuite/gdb.ada/byte_packed_arr/reprod.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/byte_packed_arr/reprod.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/byte_packed_arr/reprod.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/byte_packed_arr/reprod_main.adb ./gdb/testsuite/gdb.ada/byte_packed_arr/reprod_main.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/byte_packed_arr/reprod_main.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/byte_packed_arr/reprod_main.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/byte_packed_arr.exp ./gdb/testsuite/gdb.ada/byte_packed_arr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/byte_packed_arr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/byte_packed_arr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/call_pn/foo.adb ./gdb/testsuite/gdb.ada/call_pn/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/call_pn/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/call_pn/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/call_pn/pck.adb ./gdb/testsuite/gdb.ada/call_pn/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/call_pn/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/call_pn/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/call_pn/pck.ads ./gdb/testsuite/gdb.ada/call_pn/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/call_pn/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/call_pn/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/call_pn.exp ./gdb/testsuite/gdb.ada/call_pn.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/call_pn.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/call_pn.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
@@ -29,14 +31,58 @@ if ![runto "foo.adb:$bp_location" ] then
   return
 }
 
+# The xfail mentioned below triggers for the "after" print, but may not
+# trigger for the "before" print, though it will for -readnow.  This is
+# related to PR25764 - "LOC_UNRESOLVED symbol missing from partial symtab".
+# Stabilize test results by ensuring that the xfail triggers for the "before"
+# print.
+gdb_test_no_output "maint expand-symtabs"
+
+# The xfail is for PR gcc/94469, which occurs with target board
+# unix/-flto/-O0/-flto-partition=none/-ffat-lto-objects and gcc-8 and later.
+# Note: We don't check for the filename in xfail_re because it might be
+# wrong, filed as gdb PR25771.
+set xfail_re \
+    [multi_line \
+	 "Multiple matches for last_node_id" \
+	 "\\\[0\\\] cancel" \
+	 "\\\[1\\\] pck\.last_node_id at .*.adb:17" \
+	 "\\\[2\\\] pck\.last_node_id at .*.adb:17" \
+	 "> $"]
+
 # Make sure that last_node_id is set to zero...
-gdb_test "print last_node_id" "= 0" "print last_node_id before calling pn"
+gdb_test_multiple "print last_node_id" "print last_node_id before calling pn" {
+    -re $xfail_re {
+	xfail $gdb_test_name
+	# One of the choices will print the correct value, the other one
+	# <optimized out>.  Since we don't known which one to choose to get
+	# the correct value, cancel.
+	gdb_test_multiple "0" "cancel after xfail 1" {
+	    -re -wrap "cancelled" {
+	    }
+	}
+    }
+    -re -wrap "= 0" {
+	pass $gdb_test_name
+    }
+}
 
 # Now, call procedure Pn, which should set Last_Node_Id to the value
 # of the parameter used in the function call.  Verify that we can print
 # the returned value correctly, while we're at it.
-gdb_test "print pn (4321)" "= 4321"
+gdb_test "print pn(4321)" "= 4321"
 
 # Make sure that last_node_id now has the correct value...
-gdb_test "print last_node_id" "= 4321" "print last_node_id after calling pn"
-
+gdb_test_multiple "print last_node_id" "print last_node_id after calling pn" {
+    -re $xfail_re {
+	xfail $gdb_test_name
+	# Cancel
+	gdb_test_multiple "0" "cancel after xfail 2" {
+	    -re -wrap "cancelled" {
+	    }
+	}
+    }
+    -re -wrap "= 4321" {
+	pass $gdb_test_name
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_assert_if/bla.adb ./gdb/testsuite/gdb.ada/catch_assert_if/bla.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_assert_if/bla.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/catch_assert_if/bla.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_assert_if/pck.ads ./gdb/testsuite/gdb.ada/catch_assert_if/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_assert_if/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/catch_assert_if/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_assert_if.exp ./gdb/testsuite/gdb.ada/catch_assert_if.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_assert_if.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/catch_assert_if.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile bla
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex/foo.adb ./gdb/testsuite/gdb.ada/catch_ex/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/catch_ex/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
@@ -17,7 +17,7 @@ procedure Foo is
 begin
 
    begin
-      raise Constraint_Error;  -- SPOT1
+      raise Constraint_Error with "ignore C_E";  -- SPOT1
    exception
       when others =>
          null;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex.exp ./gdb/testsuite/gdb.ada/catch_ex.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/catch_ex.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
@@ -62,7 +64,7 @@ gdb_test "info break" \
          "info break, catch all Ada exceptions"
 
 set catchpoint_msg \
-  "Catchpoint $any_nb, CONSTRAINT_ERROR (\\\(foo\\.adb:$decimal explicit raise\\\) )?at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
+  "Catchpoint $any_nb, CONSTRAINT_ERROR (\\\(ignore C_E\\\) )?at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
 gdb_test "continue" \
          "Continuing\.$eol$catchpoint_msg$eol.*SPOT1" \
          "continuing to first exception"
@@ -162,9 +164,10 @@ gdb_test "continue" \
          "Continuing\.$eol$temp_catchpoint_msg$eol.*SPOT1" \
          "continuing to temporary catchpoint"
 
-gdb_test "continue" \
-         "Continuing\..*$inferior_exited_re.*" \
-         "continuing to program completion"
-
+with_test_prefix "temporary catchpoint" {
+    gdb_test "continue" \
+	"Continuing\..*$inferior_exited_re.*" \
+	"continuing to program completion"
+}
 
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex_std/foo.adb ./gdb/testsuite/gdb.ada/catch_ex_std/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex_std/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/catch_ex_std/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex_std/some_package.adb ./gdb/testsuite/gdb.ada/catch_ex_std/some_package.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex_std/some_package.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/catch_ex_std/some_package.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex_std/some_package.ads ./gdb/testsuite/gdb.ada/catch_ex_std/some_package.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex_std/some_package.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/catch_ex_std/some_package.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex_std.exp ./gdb/testsuite/gdb.ada/catch_ex_std.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/catch_ex_std.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/catch_ex_std.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -19,6 +19,8 @@ if {[skip_shlib_tests]} {
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 set ofile ${binfile}.o
@@ -59,6 +61,12 @@ set gnatbind [find_ada_tool gnatbind]
 set gnatlink [find_ada_tool gnatlink]
 
 with_cwd $outdir {
+    # Test if gnatbind is supported
+    set status [remote_exec host "$gnatbind --version"]
+    if {[lindex $status 0] == -1} {
+	unsupported "gnatbind foo"
+	return -1
+    }
     # Bind.
     set status [remote_exec host "$gnatbind -shared foo"]
     if {[lindex $status 0] == 0} {
@@ -68,6 +76,12 @@ with_cwd $outdir {
 	return -1
     }
 
+    # Test if gnatlink is supported
+    set status [remote_exec host "$gnatlink --version"]
+    if {[lindex $status 0] == -1} {
+	unsupported "gnatlink foo"
+	return -1
+    }
     # Finally, link.
     if {[istarget "*-*-mingw*"]
 	|| [istarget *-*-cygwin*]
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_enum/foo.adb ./gdb/testsuite/gdb.ada/char_enum/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_enum/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/char_enum/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_enum/pck.adb ./gdb/testsuite/gdb.ada/char_enum/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_enum/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/char_enum/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_enum/pck.ads ./gdb/testsuite/gdb.ada/char_enum/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_enum/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/char_enum/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_enum.exp ./gdb/testsuite/gdb.ada/char_enum.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_enum.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/char_enum.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_param/foo.adb ./gdb/testsuite/gdb.ada/char_param/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_param/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/char_param/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_param/pck.adb ./gdb/testsuite/gdb.ada/char_param/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_param/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/char_param/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_param/pck.ads ./gdb/testsuite/gdb.ada/char_param/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_param/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/char_param/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_param.exp ./gdb/testsuite/gdb.ada/char_param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/char_param.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/char_param.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete/aux_pck.adb ./gdb/testsuite/gdb.ada/complete/aux_pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete/aux_pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/complete/aux_pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete/aux_pck.ads ./gdb/testsuite/gdb.ada/complete/aux_pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete/aux_pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/complete/aux_pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete/foo.adb ./gdb/testsuite/gdb.ada/complete/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/complete/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete/pck.adb ./gdb/testsuite/gdb.ada/complete/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/complete/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete/pck.ads ./gdb/testsuite/gdb.ada/complete/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/complete/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete.exp ./gdb/testsuite/gdb.ada/complete.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/complete.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/complete.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
@@ -31,9 +33,13 @@ set eol "\[\r\n\]*"
 # A convenience function that verifies that the "complete EXPR" command
 # returns the EXPECTED_OUTPUT.
 
-proc test_gdb_complete { expr expected_output } {
+proc test_gdb_complete { expr expected_output {msg ""} } {
+    set cmd "complete p $expr"
+    if {$msg == ""} {
+	set msg $cmd
+    }
     gdb_test "complete p $expr" \
-             "$expected_output"
+             "$expected_output" $msg
 }
 
 # A convenience function that verifies that the "complete EXPR" command
@@ -60,7 +66,8 @@ test_gdb_no_completion "inner.insi"
 
 # An incomplete nested package name, were lies a single symbol:
 test_gdb_complete "pck.inne" \
-                  "p pck.inner.inside_variable"
+                  "p pck.inner.inside_variable" \
+                  "complete nested package name"
 
 # A fully qualified symbol name, mangled...
 test_gdb_complete "pck__inner__ins" \
@@ -118,7 +125,8 @@ test_gdb_complete "pck.my" \
 
 # A fully qualified package name
 test_gdb_complete "pck.inne" \
-                  "p pck.inner.inside_variable"
+    "p pck.inner.inside_variable" \
+    "complete fully qualified package name"
 
 # A fully qualified package name, with a dot at the end
 test_gdb_complete "pck.inner." \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/a.adb ./gdb/testsuite/gdb.ada/cond_lang/a.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/a.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/cond_lang/a.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/foo.c ./gdb/testsuite/gdb.ada/cond_lang/foo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/foo.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/cond_lang/foo.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/mixed.adb ./gdb/testsuite/gdb.ada/cond_lang/mixed.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/mixed.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/cond_lang/mixed.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/mixed.ads ./gdb/testsuite/gdb.ada/cond_lang/mixed.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/mixed.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/cond_lang/mixed.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/pck.adb ./gdb/testsuite/gdb.ada/cond_lang/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/cond_lang/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/pck.ads ./gdb/testsuite/gdb.ada/cond_lang/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/cond_lang/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang.exp ./gdb/testsuite/gdb.ada/cond_lang.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/cond_lang.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/cond_lang.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile a
 
 set cfile "foo"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/convvar_comp/pb16_063.adb ./gdb/testsuite/gdb.ada/convvar_comp/pb16_063.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/convvar_comp/pb16_063.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/convvar_comp/pb16_063.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/convvar_comp/pck.adb ./gdb/testsuite/gdb.ada/convvar_comp/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/convvar_comp/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/convvar_comp/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/convvar_comp/pck.ads ./gdb/testsuite/gdb.ada/convvar_comp/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/convvar_comp/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/convvar_comp/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/convvar_comp.exp ./gdb/testsuite/gdb.ada/convvar_comp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/convvar_comp.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/convvar_comp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile pb16_063
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dgopt/x.adb ./gdb/testsuite/gdb.ada/dgopt/x.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dgopt/x.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dgopt/x.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dgopt.exp ./gdb/testsuite/gdb.ada/dgopt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dgopt.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dgopt.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -17,6 +17,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile x
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/disc_arr_bound/foo_n612_026.adb ./gdb/testsuite/gdb.ada/disc_arr_bound/foo_n612_026.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/disc_arr_bound/foo_n612_026.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/disc_arr_bound/foo_n612_026.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/disc_arr_bound/pck.adb ./gdb/testsuite/gdb.ada/disc_arr_bound/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/disc_arr_bound/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/disc_arr_bound/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/disc_arr_bound/pck.ads ./gdb/testsuite/gdb.ada/disc_arr_bound/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/disc_arr_bound/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/disc_arr_bound/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/disc_arr_bound.exp ./gdb/testsuite/gdb.ada/disc_arr_bound.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/disc_arr_bound.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/disc_arr_bound.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_n612_026
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/display_nested/foo.adb ./gdb/testsuite/gdb.ada/display_nested/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/display_nested/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/display_nested/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/display_nested/pack.adb ./gdb/testsuite/gdb.ada/display_nested/pack.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/display_nested/pack.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/display_nested/pack.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/display_nested/pack.ads ./gdb/testsuite/gdb.ada/display_nested/pack.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/display_nested/pack.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/display_nested/pack.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/display_nested.exp ./gdb/testsuite/gdb.ada/display_nested.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/display_nested.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/display_nested.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable debug] != ""} {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dot_all/foo.adb ./gdb/testsuite/gdb.ada/dot_all/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dot_all/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dot_all/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dot_all/pck.adb ./gdb/testsuite/gdb.ada/dot_all/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dot_all/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dot_all/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dot_all/pck.ads ./gdb/testsuite/gdb.ada/dot_all/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dot_all/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dot_all/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dot_all.exp ./gdb/testsuite/gdb.ada/dot_all.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dot_all.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dot_all.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_arrayidx/foo.adb ./gdb/testsuite/gdb.ada/dyn_arrayidx/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_arrayidx/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dyn_arrayidx/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_arrayidx.exp ./gdb/testsuite/gdb.ada/dyn_arrayidx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_arrayidx.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dyn_arrayidx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_loc/pack.adb ./gdb/testsuite/gdb.ada/dyn_loc/pack.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_loc/pack.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dyn_loc/pack.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_loc/pack.ads ./gdb/testsuite/gdb.ada/dyn_loc/pack.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_loc/pack.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dyn_loc/pack.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_loc/p.adb ./gdb/testsuite/gdb.ada/dyn_loc/p.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_loc/p.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dyn_loc/p.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_loc.exp ./gdb/testsuite/gdb.ada/dyn_loc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_loc.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dyn_loc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile p
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_stride/foo.adb ./gdb/testsuite/gdb.ada/dyn_stride/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_stride/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dyn_stride/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_stride.exp ./gdb/testsuite/gdb.ada/dyn_stride.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/dyn_stride.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/dyn_stride.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/enum_idx_packed/foo.adb ./gdb/testsuite/gdb.ada/enum_idx_packed/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/enum_idx_packed/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/enum_idx_packed/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/enum_idx_packed/pck.adb ./gdb/testsuite/gdb.ada/enum_idx_packed/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/enum_idx_packed/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/enum_idx_packed/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/enum_idx_packed/pck.ads ./gdb/testsuite/gdb.ada/enum_idx_packed/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/enum_idx_packed/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/enum_idx_packed/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/enum_idx_packed.exp ./gdb/testsuite/gdb.ada/enum_idx_packed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/enum_idx_packed.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/enum_idx_packed.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/excep_handle/foo.adb ./gdb/testsuite/gdb.ada/excep_handle/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/excep_handle/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/excep_handle/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/excep_handle/pck.ads ./gdb/testsuite/gdb.ada/excep_handle/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/excep_handle/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/excep_handle/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/excep_handle.exp ./gdb/testsuite/gdb.ada/excep_handle.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/excep_handle.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/excep_handle.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/exec_changed/first.adb ./gdb/testsuite/gdb.ada/exec_changed/first.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/exec_changed/first.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/exec_changed/first.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2005-2020 Free Software Foundation, Inc.
+--  Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/exec_changed/second.adb ./gdb/testsuite/gdb.ada/exec_changed/second.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/exec_changed/second.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/exec_changed/second.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2005-2020 Free Software Foundation, Inc.
+--  Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/exec_changed.exp ./gdb/testsuite/gdb.ada/exec_changed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/exec_changed.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/exec_changed.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_delims/foo.adb ./gdb/testsuite/gdb.ada/expr_delims/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_delims/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/expr_delims/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_delims/pck.adb ./gdb/testsuite/gdb.ada/expr_delims/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_delims/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/expr_delims/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_delims/pck.ads ./gdb/testsuite/gdb.ada/expr_delims/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_delims/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/expr_delims/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_delims.exp ./gdb/testsuite/gdb.ada/expr_delims.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_delims.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/expr_delims.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/exprs/p.adb ./gdb/testsuite/gdb.ada/exprs/p.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/exprs/p.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/exprs/p.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/exprs.exp ./gdb/testsuite/gdb.ada/exprs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/exprs.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/exprs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile p
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_with_funcall/expr_r821_013.adb ./gdb/testsuite/gdb.ada/expr_with_funcall/expr_r821_013.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_with_funcall/expr_r821_013.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/expr_with_funcall/expr_r821_013.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_with_funcall/pck.adb ./gdb/testsuite/gdb.ada/expr_with_funcall/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_with_funcall/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/expr_with_funcall/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_with_funcall/pck.ads ./gdb/testsuite/gdb.ada/expr_with_funcall/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_with_funcall/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/expr_with_funcall/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_with_funcall.exp ./gdb/testsuite/gdb.ada/expr_with_funcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/expr_with_funcall.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/expr_with_funcall.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile expr_r821_013
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fin_fun_out/bar.adb ./gdb/testsuite/gdb.ada/fin_fun_out/bar.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fin_fun_out/bar.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fin_fun_out/bar.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fin_fun_out/bar.ads ./gdb/testsuite/gdb.ada/fin_fun_out/bar.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fin_fun_out/bar.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fin_fun_out/bar.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fin_fun_out/foo_o525_013.adb ./gdb/testsuite/gdb.ada/fin_fun_out/foo_o525_013.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fin_fun_out/foo_o525_013.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fin_fun_out/foo_o525_013.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fin_fun_out.exp ./gdb/testsuite/gdb.ada/fin_fun_out.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fin_fun_out.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fin_fun_out.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_o525_013
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_cmp/fixed.adb ./gdb/testsuite/gdb.ada/fixed_cmp/fixed.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_cmp/fixed.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fixed_cmp/fixed.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_cmp/pck.adb ./gdb/testsuite/gdb.ada/fixed_cmp/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_cmp/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fixed_cmp/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_cmp/pck.ads ./gdb/testsuite/gdb.ada/fixed_cmp/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_cmp/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fixed_cmp/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_cmp.exp ./gdb/testsuite/gdb.ada/fixed_cmp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_cmp.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fixed_cmp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile fixed
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_points/fixed_points.adb ./gdb/testsuite/gdb.ada/fixed_points/fixed_points.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_points/fixed_points.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fixed_points/fixed_points.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2004-2020 Free Software Foundation, Inc.
+--  Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_points.exp ./gdb/testsuite/gdb.ada/fixed_points.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fixed_points.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fixed_points.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/float_param/foo.adb ./gdb/testsuite/gdb.ada/float_param/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/float_param/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/float_param/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/float_param/pck.adb ./gdb/testsuite/gdb.ada/float_param/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/float_param/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/float_param/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/float_param/pck.ads ./gdb/testsuite/gdb.ada/float_param/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/float_param/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/float_param/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/float_param.exp ./gdb/testsuite/gdb.ada/float_param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/float_param.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/float_param.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/formatted_ref/defs.adb ./gdb/testsuite/gdb.ada/formatted_ref/defs.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/formatted_ref/defs.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/formatted_ref/defs.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/formatted_ref/defs.ads ./gdb/testsuite/gdb.ada/formatted_ref/defs.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/formatted_ref/defs.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/formatted_ref/defs.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/formatted_ref/formatted_ref.adb ./gdb/testsuite/gdb.ada/formatted_ref/formatted_ref.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/formatted_ref/formatted_ref.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/formatted_ref/formatted_ref.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/formatted_ref.exp ./gdb/testsuite/gdb.ada/formatted_ref.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/formatted_ref.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/formatted_ref.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -26,6 +26,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile formatted_ref
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_arg_lang/bla.adb ./gdb/testsuite/gdb.ada/frame_arg_lang/bla.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_arg_lang/bla.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/frame_arg_lang/bla.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_arg_lang/foo.c ./gdb/testsuite/gdb.ada/frame_arg_lang/foo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_arg_lang/foo.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/frame_arg_lang/foo.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_arg_lang/pck.adb ./gdb/testsuite/gdb.ada/frame_arg_lang/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_arg_lang/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/frame_arg_lang/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_arg_lang/pck.ads ./gdb/testsuite/gdb.ada/frame_arg_lang/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_arg_lang/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/frame_arg_lang/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_arg_lang.exp ./gdb/testsuite/gdb.ada/frame_arg_lang.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_arg_lang.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/frame_arg_lang.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,59 +15,78 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile bla
 set cfile "foo"
 set csrcfile ${srcdir}/${subdir}/${testdir}/${cfile}.c
 set cobject [standard_output_file ${cfile}.o]
 
 gdb_compile "${csrcfile}" "${cobject}" object [list debug]
-if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-largs additional_flags=${cobject} additional_flags=-margs]] != "" } {
-  return -1
-}
-
-clean_restart ${testfile}
 
-set bp_location [gdb_get_line_number "STOP" ${testdir}/foo.c]
-runto "foo.c:$bp_location"
-
-gdb_test_no_output "set print frame-arguments all"
-
-# Here is the scenario:
-#  - Once stopped in a C function, with language_mode set to auto, print
-#    backtrace, we should see the Ada frame arguments printed using Ada
-#    syntax.
-#  - Set language to C, then check that printing backtrace shows the Ada
-#    frame arguments using C syntax.
-#  - Set language back to auto, check language mode value, then print
-#    backtrace, we should see Ada frame arguments printed using Ada C
-#    syntax.
-
-gdb_test "show lang" \
-         "The current source language is \"auto; currently c\"." \
-         "show language when set to 'auto; c'"
-
-gdb_test "bt" \
-         "#1  $hex in pck\\.call_me \\(s=\"test\"\\).*" \
-         "backtrace with auto: c"
-
-gdb_test_no_output "set language c" \
-                   "Set current source language to \"manual; currently c\"."
-
-gdb_test "show lang" \
-         "The current source language is \"c\"." \
-         "show language when set to 'c'"
-
-gdb_test "bt" \
-         "#1  $hex in pck\\.call_me \\(s={P_ARRAY = $hex, P_BOUNDS = $hex}\\).*" \
-         "backtrace with language forced to 'c'"
-
-gdb_test_no_output "set language auto" \
-                   "Set current source language to \"auto; currently c\"."
-
-gdb_test "show lang" \
-         "The current source language is \"auto; currently c\"." \
-         "show language when set back to 'auto; c'"
-
-gdb_test "bt" \
-         "#1  $hex in pck\\.call_me \\(s=\"test\"\\).*" \
-         "backtrace with language back to 'auto; c'"
+# Note we don't test the "none" (no -fgnat-encodings option) scenario
+# here, because "all" and "minimal" cover the cases, and this way we
+# don't have to update the test when gnat changes its default.
+foreach_with_prefix scenario {all minimal} {
+    set flags [list debug additional_flags=-largs \
+		   additional_flags=${cobject} \
+		   additional_flags=-margs \
+		   additional_flags=-fgnat-encodings=$scenario]
+
+    if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != ""} {
+	return -1
+    }
+
+    clean_restart ${testfile}
+
+    set bp_location [gdb_get_line_number "STOP" ${testdir}/foo.c]
+    runto "foo.c:$bp_location"
+
+    gdb_test_no_output "set print frame-arguments all"
+
+    # Here is the scenario:
+    #  - Once stopped in a C function, with language_mode set to auto, print
+    #    backtrace, we should see the Ada frame arguments printed using Ada
+    #    syntax.
+    #  - Set language to C, then check that printing backtrace shows the Ada
+    #    frame arguments using C syntax.
+    #  - Set language back to auto, check language mode value, then print
+    #    backtrace, we should see Ada frame arguments printed using Ada C
+    #    syntax.
+
+    gdb_test "show lang" \
+	"The current source language is \"auto; currently c\"." \
+	"show language when set to 'auto; c'"
+
+    gdb_test "bt" \
+	"#1  $hex in pck\\.call_me \\(s=\"test\"\\).*" \
+	"backtrace with auto: c"
+
+    gdb_test_no_output "set language c" \
+	"Set current source language to \"manual; currently c\"."
+
+    gdb_test "show lang" \
+	"The current source language is \"c\"." \
+	"show language when set to 'c'"
+
+    # With -fgnat-encodings=minimal, this works properly in C as well.
+    if {$scenario == "minimal"} {
+	set expected "\"test\""
+    } else {
+	set expected "{P_ARRAY = $hex, P_BOUNDS = $hex}"
+    }
+    gdb_test "bt" \
+	"#1  $hex in pck\\.call_me \\(s=$expected\\).*" \
+	"backtrace with language forced to 'c'"
+
+    gdb_test_no_output "set language auto" \
+	"Set current source language to \"auto; currently c\"."
+
+    gdb_test "show lang" \
+	"The current source language is \"auto; currently c\"." \
+	"show language when set back to 'auto; c'"
+
+    gdb_test "bt" \
+	"#1  $hex in pck\\.call_me \\(s=\"test\"\\).*" \
+	"backtrace with language back to 'auto; c'"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_args/foo.adb ./gdb/testsuite/gdb.ada/frame_args/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_args/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/frame_args/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_args/pck.adb ./gdb/testsuite/gdb.ada/frame_args/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_args/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/frame_args/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_args/pck.ads ./gdb/testsuite/gdb.ada/frame_args/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_args/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/frame_args/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_args.exp ./gdb/testsuite/gdb.ada/frame_args.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/frame_args.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/frame_args.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp/dn.adb ./gdb/testsuite/gdb.ada/fullname_bp/dn.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp/dn.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fullname_bp/dn.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp/dn.ads ./gdb/testsuite/gdb.ada/fullname_bp/dn.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp/dn.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fullname_bp/dn.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp/foo.adb ./gdb/testsuite/gdb.ada/fullname_bp/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fullname_bp/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp/pck.adb ./gdb/testsuite/gdb.ada/fullname_bp/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fullname_bp/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp/pck.ads ./gdb/testsuite/gdb.ada/fullname_bp/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fullname_bp/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp.exp ./gdb/testsuite/gdb.ada/fullname_bp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fullname_bp.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fullname_bp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_addr/foo.adb ./gdb/testsuite/gdb.ada/fun_addr/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_addr/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_addr/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_addr.exp ./gdb/testsuite/gdb.ada/fun_addr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_addr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_addr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_char/foo.adb ./gdb/testsuite/gdb.ada/funcall_char/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_char/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_char/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_char.exp ./gdb/testsuite/gdb.ada/funcall_char.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_char.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_char.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_param/foo.adb ./gdb/testsuite/gdb.ada/funcall_param/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_param/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_param/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_param/pck.adb ./gdb/testsuite/gdb.ada/funcall_param/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_param/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_param/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_param/pck.ads ./gdb/testsuite/gdb.ada/funcall_param/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_param/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_param/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_param.exp ./gdb/testsuite/gdb.ada/funcall_param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_param.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_param.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
@@ -30,4 +32,4 @@ runto "foo.adb:$bp_location"
 # class-wide.
 
 gdb_test "p ident (ident (my_parameter))" \
-         "= \\(one => 1, two => 2, three => 3\\)"
+         "= \\(one => 1, two => 2, three => 3\\)" "value of ident"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ptr/foo.adb ./gdb/testsuite/gdb.ada/funcall_ptr/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ptr/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_ptr/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ptr/pck.adb ./gdb/testsuite/gdb.ada/funcall_ptr/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ptr/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_ptr/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ptr/pck.ads ./gdb/testsuite/gdb.ada/funcall_ptr/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ptr/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_ptr/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ptr.exp ./gdb/testsuite/gdb.ada/funcall_ptr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ptr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_ptr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "$srcfile" "$binfile" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ref/foo.adb ./gdb/testsuite/gdb.ada/funcall_ref/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ref/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_ref/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ref.exp ./gdb/testsuite/gdb.ada/funcall_ref.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/funcall_ref.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/funcall_ref.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,30 +15,75 @@
 
 load_lib "ada.exp"
 
-standard_ada_testfile foo
-
-if {[gdb_compile_ada "${srcfile}" "${binfile}" executable \
-                     [list debug]] != "" } {
-  return -1
-}
+if { [skip_ada_tests] } { return -1 }
 
-clean_restart ${testfile}
-
-set bp_location [gdb_get_line_number "STOP" ${testdir}/foo.adb]
-runto "foo.adb:$bp_location"
+standard_ada_testfile foo
 
-# Test printing and type-printing of a discriminated record that a function
-# returns by reference.
+# Note we don't test the "none" (no -fgnat-encodings option) scenario
+# here, because "all" and "minimal" cover the cases, and this way we
+# don't have to update the test when gnat changes its default.
+foreach_with_prefix scenario {all minimal} {
+    set flags [list debug additional_flags=-fgnat-encodings=$scenario]
+
+    if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != ""} {
+	return -1
+    }
+
+    clean_restart ${testfile}
+
+    set bp_location [gdb_get_line_number "STOP" ${testdir}/foo.adb]
+    runto "foo.adb:$bp_location"
+
+    # Test printing and type-printing of a discriminated record that a function
+    # returns by reference.
+
+    # Currently, GCC describes such functions as returning pointers (instead of
+    # references).
+    set pass_re [multi_line "type = <ref> record" \
+		     "    n: natural;" \
+		     "    s: access array \\(1 \\.\\. n\\) of character;" \
+		     "end record"]
+    # With DWARF we get debuginfo that could in theory show "1..n" for
+    # the range:
+    #     <3><1230>: Abbrev Number: 15 (DW_TAG_member)
+    #     <1231>   DW_AT_name        : n
+    # ...
+    #  <4><1257>: Abbrev Number: 18 (DW_TAG_subrange_type)
+    #     <1258>   DW_AT_type        : <0x126e>
+    #     <125c>   DW_AT_upper_bound : <0x1230>
+    # However, we don't currently record the needed information in the
+    # location batons.  In the meantime, we accept and kfail the
+    # compromise output.
+    set dwarf_kfail_re [multi_line "type = <ref> record" \
+			    "    n: natural;" \
+			    "    s: array \\(<>\\) of character;" \
+			    "end record"]
+    set unsupported_re [multi_line "type = access record" \
+			    "    n: natural;" \
+			    "    s: access array \\(1 \\.\\. n\\) of character;" \
+			    "end record"]
+    set supported 1
+    gdb_test_multiple "ptype get(\"Hello world!\")" "" {
+	-re -wrap $pass_re {
+	    pass $gdb_test_name
+	}
+	-re -wrap $dwarf_kfail_re {
+	    if {$scenario == "minimal"} {
+		setup_kfail "symbolic names in location batons" *-*-*
+	    }
+	    fail $gdb_test_name
+	    set supported 0
+	}
+	-re -wrap $unsupported_re {
+	    unsupported $gdb_test_name
+	    set supported 0
+	}
+    }
+
+    if { $supported == 0 } {
+	return 0
+    }
 
-# Currently, GCC describes such functions as returning pointers (instead of
-# references).
-setup_xfail *-*-*
-gdb_test "p get (\"Hello world!\")" \
-         "= \\(n => 12, s => \"Hello world!\"\\)" \
-
-setup_xfail *-*-*
-gdb_test "ptype get (\"Hello world!\")" \
-         [multi_line "type = <ref> record" \
-                     "    n: natural;" \
-                     "    s: access array \\(1 \\.\\. n\\) of character;" \
-                     "end record"] \
+    gdb_test "p get(\"Hello world!\")" \
+	"= \\(n => 12, s => \"Hello world!\"\\)"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_in_declare/foo.adb ./gdb/testsuite/gdb.ada/fun_in_declare/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_in_declare/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_in_declare/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_in_declare/pck.adb ./gdb/testsuite/gdb.ada/fun_in_declare/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_in_declare/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_in_declare/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_in_declare/pck.ads ./gdb/testsuite/gdb.ada/fun_in_declare/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_in_declare/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_in_declare/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_in_declare.exp ./gdb/testsuite/gdb.ada/fun_in_declare.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_in_declare.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_in_declare.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_overload_menu/foo.adb ./gdb/testsuite/gdb.ada/fun_overload_menu/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_overload_menu/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_overload_menu/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_overload_menu.exp ./gdb/testsuite/gdb.ada/fun_overload_menu.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_overload_menu.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_overload_menu.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "$srcfile" "$binfile" executable [list debug]] != "" } {
@@ -32,7 +34,7 @@ proc test_menu {expr function menu_entri
                          "\\\[0\\\] cancel" \
                          "$menu_entries" \
                          "> $"]
-    set test_name "multiple matches for $function ($expr)"
+    set test_name "multiple matches for $function {$expr}"
     gdb_test_multiple "print $expr" "$test_name" \
     {
         -re "$menu" {
@@ -49,23 +51,29 @@ proc test_menu {expr function menu_entri
 # Check that function signatures in overload menus are displayed as expected.
 
 # 1. Test with overloaded functions
-test_menu "f (1, null)" "f" \
-          [multi_line \
-           "\\\[1\\\] foo\.f \\(integer; foo\.integer_access\\) return boolean at .*foo.adb:.*" \
-           "\\\[2\\\] foo\.f \\(foo\.new_integer; foo\.integer_access\\) return boolean at .*foo.adb:.*"] \
-          "1" "= true"
+with_test_prefix "func" {
+    test_menu "f (1, null)" "f" \
+	[multi_line \
+	     "\\\[1\\\] foo\.f \\(integer; foo\.integer_access\\) return boolean at .*foo.adb:.*" \
+	     "\\\[2\\\] foo\.f \\(foo\.new_integer; foo\.integer_access\\) return boolean at .*foo.adb:.*"] \
+	"1" "= true"
+}
 
 # 2. Test with overloaded procedures
-test_menu "p (1, null)" "p" \
-          [multi_line \
-           "\\\[1\\\] foo\.p \\(integer; foo\.integer_access\\) at .*foo.adb:.*" \
-           "\\\[2\\\] foo\.p \\(foo\.new_integer; foo\.integer_access\\) at .*foo.adb:.*" ] \
-          "1" "= (void)"
+with_test_prefix "proc" {
+    test_menu "p (1, null)" "p" \
+	[multi_line \
+	     "\\\[1\\\] foo\.p \\(integer; foo\.integer_access\\) at .*foo.adb:.*" \
+	     "\\\[2\\\] foo\.p \\(foo\.new_integer; foo\.integer_access\\) at .*foo.adb:.*" ] \
+	"1" "= (void)"
+}
 
 # 3. Test with signatures disabled
 gdb_test "set ada print-signatures off" ""
-test_menu "f (1, null)" "f" \
-          [multi_line \
-           "\\\[1\\\] foo\.f at .*foo.adb:.*" \
-           "\\\[2\\\] foo\.f at .*foo.adb:.*"] \
-          "1" "= true"
+with_test_prefix "signatures disabled" {
+    test_menu "f (1, null)" "f" \
+	[multi_line \
+	     "\\\[1\\\] foo\.f at .*foo.adb:.*" \
+	     "\\\[2\\\] foo\.f at .*foo.adb:.*"] \
+	"1" "= true"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_renaming/fun_renaming.adb ./gdb/testsuite/gdb.ada/fun_renaming/fun_renaming.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_renaming/fun_renaming.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_renaming/fun_renaming.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_renaming/pack.adb ./gdb/testsuite/gdb.ada/fun_renaming/pack.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_renaming/pack.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_renaming/pack.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_renaming/pack.ads ./gdb/testsuite/gdb.ada/fun_renaming/pack.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_renaming/pack.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_renaming/pack.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_renaming.exp ./gdb/testsuite/gdb.ada/fun_renaming.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/fun_renaming.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/fun_renaming.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile fun_renaming
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym/homonym.adb ./gdb/testsuite/gdb.ada/homonym/homonym.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym/homonym.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/homonym/homonym.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym/homonym.ads ./gdb/testsuite/gdb.ada/homonym/homonym.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym/homonym.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/homonym/homonym.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym/homonym_main.adb ./gdb/testsuite/gdb.ada/homonym/homonym_main.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym/homonym_main.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/homonym/homonym_main.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym/pck.adb ./gdb/testsuite/gdb.ada/homonym/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/homonym/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym/pck.ads ./gdb/testsuite/gdb.ada/homonym/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/homonym/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym.exp ./gdb/testsuite/gdb.ada/homonym.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/homonym.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/homonym.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile homonym_main
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_addr_mixed_case/foo.adb ./gdb/testsuite/gdb.ada/info_addr_mixed_case/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_addr_mixed_case/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_addr_mixed_case/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_addr_mixed_case/pck.adb ./gdb/testsuite/gdb.ada/info_addr_mixed_case/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_addr_mixed_case/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_addr_mixed_case/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_addr_mixed_case/pck.ads ./gdb/testsuite/gdb.ada/info_addr_mixed_case/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_addr_mixed_case/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_addr_mixed_case/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_addr_mixed_case.exp ./gdb/testsuite/gdb.ada/info_addr_mixed_case.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_addr_mixed_case.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_addr_mixed_case.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_auto_lang/global_pack.ads ./gdb/testsuite/gdb.ada/info_auto_lang/global_pack.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_auto_lang/global_pack.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_auto_lang/global_pack.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb ./gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_auto_lang/proc_in_ada.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c ./gdb/testsuite/gdb.ada/info_auto_lang/some_c.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_auto_lang/some_c.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_auto_lang/some_c.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_auto_lang.exp ./gdb/testsuite/gdb.ada/info_auto_lang.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_auto_lang.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_auto_lang.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 # This test verifies that the commands
 #   info [functions|variables|types]
 # respect the 'set language auto|ada|c' setting, whatever the language
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_exc/const.ads ./gdb/testsuite/gdb.ada/info_exc/const.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_exc/const.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_exc/const.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_exc/foo.adb ./gdb/testsuite/gdb.ada/info_exc/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_exc/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_exc/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_exc.exp ./gdb/testsuite/gdb.ada/info_exc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_exc.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_exc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_locals_renaming/foo.adb ./gdb/testsuite/gdb.ada/info_locals_renaming/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_locals_renaming/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_locals_renaming/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_locals_renaming/pck.adb ./gdb/testsuite/gdb.ada/info_locals_renaming/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_locals_renaming/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_locals_renaming/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_locals_renaming/pck.ads ./gdb/testsuite/gdb.ada/info_locals_renaming/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_locals_renaming/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_locals_renaming/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_locals_renaming.exp ./gdb/testsuite/gdb.ada/info_locals_renaming.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_locals_renaming.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_locals_renaming.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_types.c ./gdb/testsuite/gdb.ada/info_types.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_types.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_types.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_types.exp ./gdb/testsuite/gdb.ada/info_types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/info_types.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/info_types.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -13,6 +13,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_testfile .c
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/int_deref/foo.adb ./gdb/testsuite/gdb.ada/int_deref/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/int_deref/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/int_deref/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/int_deref/pck.ads ./gdb/testsuite/gdb.ada/int_deref/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/int_deref/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/int_deref/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/int_deref.exp ./gdb/testsuite/gdb.ada/int_deref.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/int_deref.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/int_deref.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/interface/foo.adb ./gdb/testsuite/gdb.ada/interface/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/interface/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/interface/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/interface/types.adb ./gdb/testsuite/gdb.ada/interface/types.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/interface/types.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/interface/types.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/interface/types.ads ./gdb/testsuite/gdb.ada/interface/types.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/interface/types.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/interface/types.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/interface.exp ./gdb/testsuite/gdb.ada/interface.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/interface.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/interface.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnat05 ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/iwide/classes.adb ./gdb/testsuite/gdb.ada/iwide/classes.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/iwide/classes.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/iwide/classes.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/iwide/classes.ads ./gdb/testsuite/gdb.ada/iwide/classes.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/iwide/classes.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/iwide/classes.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/iwide/p.adb ./gdb/testsuite/gdb.ada/iwide/p.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/iwide/p.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/iwide/p.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/iwide.exp ./gdb/testsuite/gdb.ada/iwide.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/iwide.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/iwide.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile p
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnat05 ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/lang_switch/foo.c ./gdb/testsuite/gdb.ada/lang_switch/foo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/lang_switch/foo.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/lang_switch/foo.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2008-2020 Free Software Foundation, Inc.
+/* Copyright 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/lang_switch/lang_switch.adb ./gdb/testsuite/gdb.ada/lang_switch/lang_switch.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/lang_switch/lang_switch.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/lang_switch/lang_switch.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/lang_switch.exp ./gdb/testsuite/gdb.ada/lang_switch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/lang_switch.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/lang_switch.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile lang_switch
 set cfile "foo"
 set csrcfile ${srcdir}/${subdir}/${testdir}/${cfile}.c
@@ -41,6 +43,9 @@ gdb_test "bt" \
 # Now, make sure that the language doesn't get automatically switched
 # if the current language is not "auto".
 gdb_test "set lang c"
+# This gives different output with -fgnat-encodings=minimal and
+# -fgnat-encodings=all, but since we don't care so much about the
+# precise details here, we just accept anything.
 gdb_test "bt" \
-         ".*#1.*lang_switch\\.ada_procedure\\s*\\(msg=(@$hex: +)?{.*\\).*" \
+         ".*#1.*lang_switch\\.ada_procedure\\s*\\(msg=(@$hex: +)?.*\\).*" \
          "backtrace with lang set to C"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/length_cond/length_cond.adb ./gdb/testsuite/gdb.ada/length_cond/length_cond.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/length_cond/length_cond.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/length_cond/length_cond.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/length_cond/pck.adb ./gdb/testsuite/gdb.ada/length_cond/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/length_cond/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/length_cond/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/length_cond/pck.ads ./gdb/testsuite/gdb.ada/length_cond/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/length_cond/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/length_cond/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/length_cond.exp ./gdb/testsuite/gdb.ada/length_cond.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/length_cond.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/length_cond.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -18,6 +18,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile length_cond
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable debug] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/maint_with_ada/pack.adb ./gdb/testsuite/gdb.ada/maint_with_ada/pack.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/maint_with_ada/pack.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/maint_with_ada/pack.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/maint_with_ada/pack.ads ./gdb/testsuite/gdb.ada/maint_with_ada/pack.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/maint_with_ada/pack.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/maint_with_ada/pack.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/maint_with_ada/var_arr_typedef.adb ./gdb/testsuite/gdb.ada/maint_with_ada/var_arr_typedef.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/maint_with_ada/var_arr_typedef.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/maint_with_ada/var_arr_typedef.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/maint_with_ada.exp ./gdb/testsuite/gdb.ada/maint_with_ada.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/maint_with_ada.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/maint_with_ada.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile var_arr_typedef
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_assert/bla.adb ./gdb/testsuite/gdb.ada/mi_catch_assert/bla.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_assert/bla.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_catch_assert/bla.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_assert/pck.ads ./gdb/testsuite/gdb.ada/mi_catch_assert/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_assert/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_catch_assert/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_assert.exp ./gdb/testsuite/gdb.ada/mi_catch_assert.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_assert.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_catch_assert.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile bla
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_ex/foo.adb ./gdb/testsuite/gdb.ada/mi_catch_ex/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_ex/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_catch_ex/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_ex.exp ./gdb/testsuite/gdb.ada/mi_catch_ex.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_ex.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_catch_ex.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
@@ -69,9 +71,11 @@ mi_gdb_load ${binfile}
 # 1. Try catching all exceptions.  #
 ####################################
 
-if ![mi_run_to_main] then {
-   fail "cannot run to main, testcase aborted"
-   return 0
+with_test_prefix "scenario 1" {
+    if ![mi_run_to_main] then {
+	fail "cannot run to main, testcase aborted"
+	return 0
+    }
 }
 
 mi_gdb_test "-catch-exception" \
@@ -125,9 +129,11 @@ continue_to_exception \
 #  - continue, we should see the unhandled Constrait_Error exception
 #  - continue, the program exits.
 
-if ![mi_run_to_main] then {
-   fail "cannot run to main, testcase aborted"
-   return 0
+with_test_prefix "scenario 2" {
+    if ![mi_run_to_main] then {
+	fail "cannot run to main, testcase aborted"
+	return 0
+    }
 }
 
 mi_gdb_test "-catch-exception -e Program_Error" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_ex_hand/foo.adb ./gdb/testsuite/gdb.ada/mi_catch_ex_hand/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_ex_hand/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_catch_ex_hand/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_ex_hand.exp ./gdb/testsuite/gdb.ada/mi_catch_ex_hand.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_catch_ex_hand.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_catch_ex_hand.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
@@ -64,9 +66,11 @@ if [mi_gdb_start] {
 # 1. Try catching all exceptions handlers.  #
 #############################################
 
-if ![mi_run_to_main] then {
-   fail "cannot run to main, testcase aborted"
-   return 0
+with_test_prefix "scenario 1" {
+    if ![mi_run_to_main] then {
+	fail "cannot run to main, testcase aborted"
+	return 0
+    }
 }
 
 mi_gdb_test "-catch-handlers" \
@@ -114,9 +118,11 @@ continue_to_exception_handler \
 #  - continue, we should not stop at the Program_Error exception handler
 #    but exit instead.
 
-if ![mi_run_to_main] then {
-   fail "cannot run to main, testcase aborted"
-   return 0
+with_test_prefix "scenario 2" {
+    if ![mi_run_to_main] then {
+	fail "cannot run to main, testcase aborted"
+	return 0
+    }
 }
 
 mi_gdb_test "-catch-handlers -e Constraint_Error" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_dyn_arr/foo.adb ./gdb/testsuite/gdb.ada/mi_dyn_arr/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_dyn_arr/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_dyn_arr/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_dyn_arr/pck.adb ./gdb/testsuite/gdb.ada/mi_dyn_arr/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_dyn_arr/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_dyn_arr/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_dyn_arr/pck.ads ./gdb/testsuite/gdb.ada/mi_dyn_arr/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_dyn_arr/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_dyn_arr/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_dyn_arr.exp ./gdb/testsuite/gdb.ada/mi_dyn_arr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_dyn_arr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_dyn_arr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_exc_info/const.ads ./gdb/testsuite/gdb.ada/mi_exc_info/const.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_exc_info/const.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_exc_info/const.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_exc_info/foo.adb ./gdb/testsuite/gdb.ada/mi_exc_info/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_exc_info/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_exc_info/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_exc_info.exp ./gdb/testsuite/gdb.ada/mi_exc_info.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_exc_info.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_exc_info.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ex_cond/foo.adb ./gdb/testsuite/gdb.ada/mi_ex_cond/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ex_cond/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_ex_cond/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ex_cond/pck.ads ./gdb/testsuite/gdb.ada/mi_ex_cond/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ex_cond/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_ex_cond/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ex_cond.exp ./gdb/testsuite/gdb.ada/mi_ex_cond.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ex_cond.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_ex_cond.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-bargs additional_flags=-static additional_flags=-margs ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_interface/foo.adb ./gdb/testsuite/gdb.ada/mi_interface/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_interface/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_interface/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_interface/pck.adb ./gdb/testsuite/gdb.ada/mi_interface/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_interface/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_interface/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_interface/pck.ads ./gdb/testsuite/gdb.ada/mi_interface/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_interface/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_interface/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_interface.exp ./gdb/testsuite/gdb.ada/mi_interface.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_interface.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_interface.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnat12 ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/minsyms/foo_qb07_057.adb ./gdb/testsuite/gdb.ada/minsyms/foo_qb07_057.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/minsyms/foo_qb07_057.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/minsyms/foo_qb07_057.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/minsyms/pck.adb ./gdb/testsuite/gdb.ada/minsyms/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/minsyms/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/minsyms/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/minsyms/pck.ads ./gdb/testsuite/gdb.ada/minsyms/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/minsyms/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/minsyms/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/minsyms.exp ./gdb/testsuite/gdb.ada/minsyms.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/minsyms.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/minsyms.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_qb07_057
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable ""] != "" } {
@@ -28,6 +30,8 @@ if ![runto "_ada_foo_qb07_057" ] then {
   return
 }
 
+gdb_test_no_output "set language ada"
+
 gdb_test "print some_minsym" \
          "'some_minsym' has unknown type; cast it to its declared type"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_prot/pkg.adb ./gdb/testsuite/gdb.ada/mi_prot/pkg.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_prot/pkg.adb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_prot/pkg.adb	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,21 @@
+--  Copyright 2020-2021 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/>.
+
+package body Pkg is
+   procedure Do_Nothing (A : System.Address) is
+   begin
+      null;
+   end Do_Nothing;
+end Pkg;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_prot/pkg.ads ./gdb/testsuite/gdb.ada/mi_prot/pkg.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_prot/pkg.ads	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_prot/pkg.ads	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,19 @@
+--  Copyright 2020-2021 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/>.
+
+with System;
+package Pkg is
+   procedure Do_Nothing (A : System.Address);
+end Pkg;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_prot/prot.adb ./gdb/testsuite/gdb.ada/mi_prot/prot.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_prot/prot.adb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_prot/prot.adb	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,47 @@
+--  Copyright 2020-2021 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/>.
+
+with Pkg; use Pkg;
+with System;
+
+procedure Prot is
+
+   protected type Obj_Type
+     (Ceiling_Priority: System.Priority := System.Priority'Last)
+   with Priority => Ceiling_Priority
+   is
+      procedure Set (V : Integer);
+      function Get return Integer;
+   private
+      Local : Integer := 0;
+   end Obj_Type;
+
+   protected body Obj_Type is
+      procedure Set (V : Integer) is
+      begin
+         Local := V;  -- STOP
+      end Set;
+
+      function Get return Integer is
+      begin
+         return Local;
+      end Get;
+   end Obj_Type;
+
+   Obj : Obj_Type;
+begin
+   Obj.Set (5);
+   Pkg.Do_Nothing(Obj'Address);
+end Prot;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_prot.exp ./gdb/testsuite/gdb.ada/mi_prot.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_prot.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_prot.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,52 @@
+# Copyright 2020-2021 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/>.
+
+load_lib "ada.exp"
+
+if { [skip_ada_tests] } { return -1 }
+
+if { ![gnatmake_version_at_least 8] } {
+    return -1
+}
+standard_ada_testfile prot
+
+if {[gdb_compile_ada "${srcfile}" "${binfile}" executable \
+	 {debug additional_flags=-gnata}] != ""} {
+    return -1
+}
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+gdb_exit
+if {[mi_gdb_start]} {
+    continue
+}
+
+if {![mi_run_to_main]} then {
+   fail "cannot run to main, testcase aborted"
+   return 0
+}
+
+mi_delete_breakpoints
+mi_gdb_reinitialize_dir $srcdir/$subdir
+mi_gdb_load ${binfile}
+
+set line [gdb_get_line_number "STOP" ${testdir}/prot.adb]
+mi_continue_to_line $line "continue to protected method"
+
+# The bug was that this crashed.
+mi_gdb_test "-stack-list-arguments --no-frame-filters 1" \
+    "\\^done,stack=.*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ref_changeable/foo_rb20_056.adb ./gdb/testsuite/gdb.ada/mi_ref_changeable/foo_rb20_056.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ref_changeable/foo_rb20_056.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_ref_changeable/foo_rb20_056.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ref_changeable/pck.adb ./gdb/testsuite/gdb.ada/mi_ref_changeable/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ref_changeable/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_ref_changeable/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ref_changeable/pck.ads ./gdb/testsuite/gdb.ada/mi_ref_changeable/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ref_changeable/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_ref_changeable/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ref_changeable.exp ./gdb/testsuite/gdb.ada/mi_ref_changeable.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_ref_changeable.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_ref_changeable.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_rb20_056
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_string_access/bar.adb ./gdb/testsuite/gdb.ada/mi_string_access/bar.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_string_access/bar.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_string_access/bar.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_string_access/pck.adb ./gdb/testsuite/gdb.ada/mi_string_access/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_string_access/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_string_access/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_string_access/pck.ads ./gdb/testsuite/gdb.ada/mi_string_access/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_string_access/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_string_access/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_string_access.exp ./gdb/testsuite/gdb.ada/mi_string_access.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_string_access.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_string_access.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile bar
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_task_arg/task_switch.adb ./gdb/testsuite/gdb.ada/mi_task_arg/task_switch.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_task_arg/task_switch.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_task_arg/task_switch.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_task_arg.exp ./gdb/testsuite/gdb.ada/mi_task_arg.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_task_arg.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_task_arg.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile task_switch
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_task_info/task_switch.adb ./gdb/testsuite/gdb.ada/mi_task_info/task_switch.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_task_info/task_switch.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_task_info/task_switch.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_task_info.exp ./gdb/testsuite/gdb.ada/mi_task_info.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_task_info.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_task_info.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile task_switch
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_access/mi_access.adb ./gdb/testsuite/gdb.ada/mi_var_access/mi_access.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_access/mi_access.adb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_access/mi_access.adb	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,37 @@
+--  Copyright 2020-2021 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/>.
+
+with Pck; use Pck;
+
+procedure Mi_Access is
+   A_String : String (3 .. 5) := "345"; -- STOP
+   A_String_Access : String_Access;
+   A_Pointer : Pointer;
+begin
+   Do_Nothing (A_String'Address);
+   A_String (4) := '6';
+   A_String_Access := Copy (A_String);
+   A_Pointer.P := A_String_Access;
+   Do_Nothing (A_String_Access'Address); -- STOP2
+   A_String_Access (4) := 'a';
+   Do_Nothing (A_Pointer'Address);
+   A_String_Access := Copy("Hi");
+   A_Pointer.P := A_String_Access;
+   Do_Nothing (A_String_Access'Address);
+   A_String_Access := null;
+   A_Pointer.P := null;
+   Do_Nothing (A_Pointer'Address); -- STOP3
+   Do_Nothing (A_String'Address);
+end Mi_Access;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_access/pck.adb ./gdb/testsuite/gdb.ada/mi_var_access/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_access/pck.adb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_access/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,26 @@
+--  Copyright 2020-2021 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/>.
+
+package body Pck is
+   function Copy (S : String) return String_Access is
+   begin
+      return new String'(S);
+   end Copy;
+
+   procedure Do_Nothing (A : System.Address) is
+   begin
+      null;
+   end Do_Nothing;
+end Pck;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_access/pck.ads ./gdb/testsuite/gdb.ada/mi_var_access/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_access/pck.ads	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_access/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,23 @@
+--  Copyright 2020-2021 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/>.
+
+with System;
+package Pck is
+   type String_Access is access all String;
+   type Pointer is record P : String_Access; end record;
+
+   function Copy (S : String) return String_Access;
+   procedure Do_Nothing (A : System.Address);
+end Pck;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_access.exp ./gdb/testsuite/gdb.ada/mi_var_access.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_access.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_access.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,74 @@
+# Copyright 2020-2021 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/>.
+
+load_lib "ada.exp"
+
+if {[skip_ada_tests]} {
+    return -1
+}
+
+standard_ada_testfile mi_access
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+if {[gdb_compile_ada "${srcfile}" "${binfile}" executable debug] != "" } {
+    return -1
+}
+
+if {[mi_gdb_start]} {
+    continue
+}
+
+mi_delete_breakpoints
+mi_gdb_reinitialize_dir $srcdir/$subdir
+mi_gdb_load ${binfile}
+
+if ![mi_run_to_main] then {
+    fail "cannot run to main, testcase aborted"
+    return 0
+}
+
+set bp_location [gdb_get_line_number "STOP" ${testdir}/mi_access.adb]
+mi_continue_to_line \
+    "mi_access.adb:$bp_location" \
+    "stop at start of mi_access"
+
+# The bug was that creating a varobj for A_String_Access would crash.
+mi_gdb_test "-var-create A_String_Access * A_String_Access" \
+    "\\^done,name=\"A_String_Access\",numchild=\"1\",.*" \
+    "Create varobj"
+
+set bp_location [gdb_get_line_number "STOP2" ${testdir}/mi_access.adb]
+mi_continue_to_line \
+    "mi_access.adb:$bp_location" \
+    "stop at stop 2"
+
+mi_gdb_test "-var-update A_String_Access" \
+    [string_to_regexp {^done,changelist=[{name="A_String_Access",in_scope="true",type_changed="false",has_more="0"}]}] \
+    "update at stop 2"
+
+mi_gdb_test "-var-list-children A_String_Access" \
+    [string_to_regexp {^done,numchild="1",children=[child={name="A_String_Access.A_String_Access.all",exp="A_String_Access.all",numchild="3",type="array (3 .. 5) of character",thread-id="1"}],has_more="0"}] \
+    "list children at stop 2"
+
+set bp_location [gdb_get_line_number "STOP3" ${testdir}/mi_access.adb]
+mi_continue_to_line \
+    "mi_access.adb:$bp_location" \
+    "stop at stop 3"
+
+mi_gdb_test "-var-update A_String_Access" \
+    [string_to_regexp {^done,changelist=[{name="A_String_Access",in_scope="true",type_changed="true",new_type="pck.string_access",new_num_children="0",has_more="0"}]}] \
+    "update at stop 3"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_array/bar.adb ./gdb/testsuite/gdb.ada/mi_var_array/bar.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_array/bar.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_array/bar.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_array/pck.adb ./gdb/testsuite/gdb.ada/mi_var_array/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_array/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_array/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_array/pck.ads ./gdb/testsuite/gdb.ada/mi_var_array/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_array/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_array/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_array.exp ./gdb/testsuite/gdb.ada/mi_var_array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_array.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_array.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,38 +15,43 @@
 
 load_lib "ada.exp"
 
-standard_ada_testfile bar
+if { [skip_ada_tests] } { return -1 }
 
-if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
-  return -1
-}
+standard_ada_testfile bar
 
 load_lib mi-support.exp
 set MIFLAGS "-i=mi"
 
-gdb_exit
-if [mi_gdb_start] {
-    continue
+foreach_with_prefix scenario {none all minimal} {
+    set flags {debug}
+    if {$scenario != "none"} {
+	lappend flags additional_flags=-fgnat-encodings=$scenario
+    }
+
+    if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != "" } {
+	return -1
+    }
+
+    gdb_exit
+    if [mi_gdb_start] {
+	continue
+    }
+
+    mi_delete_breakpoints
+    mi_gdb_reinitialize_dir $srcdir/$subdir
+    mi_gdb_load ${binfile}
+
+    if ![mi_run_to_main] then {
+	fail "cannot run to main, testcase aborted"
+	return 0
+    }
+
+    set bp_location [gdb_get_line_number "STOP" ${testdir}/bar.adb]
+    mi_continue_to_line \
+	"bar.adb:$bp_location" \
+	"stop at start of main Ada procedure"
+
+    mi_gdb_test "-var-create vta * vta" \
+	"\\^done,name=\"vta\",numchild=\"0\",.*" \
+	"create bt varobj"
 }
-
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-if ![mi_run_to_main] then {
-   fail "cannot run to main, testcase aborted"
-   return 0
-}
-
-set bp_location [gdb_get_line_number "STOP" ${testdir}/bar.adb]
-mi_continue_to_line \
-    "bar.adb:$bp_location" \
-    "stop at start of main Ada procedure"
-
-mi_gdb_test "-var-create vta * vta" \
-    "\\^done,name=\"vta\",numchild=\"2\",.*" \
-    "create bt varobj"
-
-mi_gdb_test "-var-list-children vta" \
-    "\\^done,numchild=\"2\",children=\\\[child={name=\"vta.n\",exp=\"n\",numchild=\"0\",type=\"bar\\.int\",thread-id=\"$decimal\"},child={name=\"vta.f\",exp=\"f\",numchild=\"0\",type=\"array \\(1 .. n\\) of character\",thread-id=\"$decimal\"}\\\],.*" \
-    "list vta's children"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_variant/pck.ads ./gdb/testsuite/gdb.ada/mi_variant/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_variant/pck.ads	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_variant/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,54 @@
+--  Copyright 2020-2021 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/>.
+
+package Pck is
+
+   type Rec_Type (C : Character := 'd') is record
+      case C is
+         when Character'First     => X_First : Integer;
+         when Character'Val (127) => X_127   : Integer;
+         when Character'Val (128) => X_128   : Integer;
+         when Character'Last      => X_Last  : Integer;
+         when others              => null;
+      end case;
+   end record;
+
+   type Second_Type (I : Integer) is record
+      One: Integer;
+      case I is
+         when -5 .. 5 =>
+	   X : Integer;
+         when others =>
+	   Y : Integer;
+      end case;
+   end record;
+
+   type Nested_And_Variable (One, Two: Integer) is record
+       Str : String (1 .. One);
+       case One is
+          when 0 =>
+	     null;
+          when others =>
+	     OneValue : Integer;
+             Str2 : String (1 .. Two);
+             case Two is
+	        when 0 =>
+		   null;
+		when others =>
+		   TwoValue : Integer;
+             end case;
+       end case;
+   end record;
+end Pck;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_variant/pkg.adb ./gdb/testsuite/gdb.ada/mi_variant/pkg.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_variant/pkg.adb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_variant/pkg.adb	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,28 @@
+--  Copyright 2020-2021 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/>.
+
+with Pck; use Pck;
+
+procedure Pkg is
+
+   R : Rec_Type;
+
+begin
+   R := (C => 'd');
+   null; -- STOP
+
+   R := (C => Character'First, X_First => 27);
+   null; -- STOP2
+end Pkg;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_variant.exp ./gdb/testsuite/gdb.ada/mi_variant.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_variant.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_variant.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,67 @@
+# Copyright 2020-2021 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/>.
+
+load_lib "ada.exp"
+load_lib "gdb-python.exp"
+
+if { [skip_ada_tests] } { return -1 }
+
+standard_ada_testfile pkg
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+foreach_with_prefix scenario {none all minimal} {
+    set flags {debug}
+    if {$scenario != "none"} {
+	lappend flags additional_flags=-fgnat-encodings=$scenario
+    }
+
+    if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != ""} {
+	return -1
+    }
+
+    gdb_exit
+    if [mi_gdb_start] {
+	continue
+    }
+
+    mi_delete_breakpoints
+    mi_gdb_reinitialize_dir $srcdir/$subdir
+    mi_gdb_load ${binfile}
+
+    if ![mi_run_to_main] then {
+	fail "cannot run to main, testcase aborted"
+	return 0
+    }
+
+    set bp_location [gdb_get_line_number "STOP" ${testdir}/pkg.adb]
+    mi_continue_to_line \
+	"pkg.adb:$bp_location" \
+	"stop at start of main Ada procedure"
+
+    mi_gdb_test "-var-create r * r" \
+	"\\^done,name=\"r\",numchild=\"1\",.*" \
+	"create r varobj"
+
+    set bp_location [gdb_get_line_number "STOP2" ${testdir}/pkg.adb]
+    mi_continue_to_line \
+	"pkg.adb:$bp_location" \
+	"stop at second breakpoint"
+
+    mi_gdb_test "-var-update 1 r" \
+	"\\^done.*name=\"r\",.*new_num_children=\"2\",.*" \
+	"update r varobj"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_union/bar.adb ./gdb/testsuite/gdb.ada/mi_var_union/bar.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_union/bar.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_union/bar.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_union/pck.adb ./gdb/testsuite/gdb.ada/mi_var_union/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_union/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_union/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_union/pck.ads ./gdb/testsuite/gdb.ada/mi_var_union/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_union/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_union/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_union.exp ./gdb/testsuite/gdb.ada/mi_var_union.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mi_var_union.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mi_var_union.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,40 +15,49 @@
 
 load_lib "ada.exp"
 
-standard_ada_testfile bar
+if { [skip_ada_tests] } { return -1 }
 
-if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
-  return -1
-}
+standard_ada_testfile bar
 
 load_lib mi-support.exp
 set MIFLAGS "-i=mi"
 
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
 set float "\\-?((\[0-9\]+(\\.\[0-9\]+)?(e\[-+\]\[0-9\]+)?)|(nan\\($hex\\)))"
 
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
-if ![mi_run_to_main] then {
-   fail "cannot run to main, testcase aborted"
-   return 0
+foreach_with_prefix scenario {none all minimal} {
+    set flags {debug}
+    if {$scenario != "none"} {
+	lappend flags additional_flags=-fgnat-encodings=$scenario
+    }
+
+    if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != "" } {
+	return -1
+    }
+
+    gdb_exit
+    if [mi_gdb_start] {
+	continue
+    }
+
+    mi_delete_breakpoints
+    mi_gdb_reinitialize_dir $srcdir/$subdir
+    mi_gdb_load ${binfile}
+
+    if ![mi_run_to_main] then {
+	fail "cannot run to main, testcase aborted"
+	return 0
+    }
+
+    set bp_location [gdb_get_line_number "STOP" ${testdir}/bar.adb]
+    mi_continue_to_line \
+	"bar.adb:$bp_location" \
+	"stop at start of main Ada procedure"
+
+    mi_gdb_test "-var-create var1 * Ut" \
+	"\\^done,name=\"var1\",numchild=\"2\",.*" \
+	"Create var1 varobj"
+
+    mi_gdb_test "-var-list-children 1 var1" \
+	"\\^done,numchild=\"2\",children=\\\[child={name=\"var1.b\",exp=\"b\",numchild=\"0\",value=\"3\",type=\"integer\",thread-id=\"$decimal\"},child={name=\"var1.c\",exp=\"c\",numchild=\"0\",value=\"$float\",type=\"float\",thread-id=\"$decimal\"}\\\],has_more=\"0\"" \
+	"list var1's children"
 }
-
-set bp_location [gdb_get_line_number "STOP" ${testdir}/bar.adb]
-mi_continue_to_line \
-    "bar.adb:$bp_location" \
-    "stop at start of main Ada procedure"
-
-mi_gdb_test "-var-create var1 * Ut" \
-    "\\^done,name=\"var1\",numchild=\"2\",.*" \
-    "Create var1 varobj"
-
-mi_gdb_test "-var-list-children 1 var1" \
-    "\\^done,numchild=\"2\",children=\\\[child={name=\"var1.b\",exp=\"b\",numchild=\"0\",value=\"3\",type=\"integer\",thread-id=\"$decimal\"},child={name=\"var1.c\",exp=\"c\",numchild=\"0\",value=\"$float\",type=\"float\",thread-id=\"$decimal\"}\\\],has_more=\"0\"" \
-    "list var1's children"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mod_from_name/foo.adb ./gdb/testsuite/gdb.ada/mod_from_name/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mod_from_name/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mod_from_name/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2009-2020 Free Software Foundation, Inc.
+--  Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mod_from_name.exp ./gdb/testsuite/gdb.ada/mod_from_name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/mod_from_name.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/mod_from_name.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/n_arr_bound/foo.adb ./gdb/testsuite/gdb.ada/n_arr_bound/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/n_arr_bound/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/n_arr_bound/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/n_arr_bound/pck.adb ./gdb/testsuite/gdb.ada/n_arr_bound/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/n_arr_bound/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/n_arr_bound/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/n_arr_bound/pck.ads ./gdb/testsuite/gdb.ada/n_arr_bound/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/n_arr_bound/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/n_arr_bound/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/n_arr_bound.exp ./gdb/testsuite/gdb.ada/n_arr_bound.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/n_arr_bound.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/n_arr_bound.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/nested/hello.adb ./gdb/testsuite/gdb.ada/nested/hello.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/nested/hello.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/nested/hello.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/nested.exp ./gdb/testsuite/gdb.ada/nested.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/nested.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/nested.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile hello
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/notcplusplus/foo.adb ./gdb/testsuite/gdb.ada/notcplusplus/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/notcplusplus/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/notcplusplus/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/notcplusplus/pck.adb ./gdb/testsuite/gdb.ada/notcplusplus/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/notcplusplus/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/notcplusplus/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/notcplusplus/pck.ads ./gdb/testsuite/gdb.ada/notcplusplus/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/notcplusplus/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/notcplusplus/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/notcplusplus/ver.ads ./gdb/testsuite/gdb.ada/notcplusplus/ver.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/notcplusplus/ver.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/notcplusplus/ver.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/notcplusplus.exp ./gdb/testsuite/gdb.ada/notcplusplus.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/notcplusplus.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/notcplusplus.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_array/foo.adb ./gdb/testsuite/gdb.ada/null_array/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_array/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/null_array/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_array/pck.adb ./gdb/testsuite/gdb.ada/null_array/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_array/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/null_array/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_array/pck.ads ./gdb/testsuite/gdb.ada/null_array/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_array/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/null_array/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_array.exp ./gdb/testsuite/gdb.ada/null_array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_array.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/null_array.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_record/bar.adb ./gdb/testsuite/gdb.ada/null_record/bar.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_record/bar.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/null_record/bar.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2004-2020 Free Software Foundation, Inc.
+--  Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_record/bar.ads ./gdb/testsuite/gdb.ada/null_record/bar.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_record/bar.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/null_record/bar.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2004-2020 Free Software Foundation, Inc.
+--  Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_record/null_record.adb ./gdb/testsuite/gdb.ada/null_record/null_record.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_record/null_record.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/null_record/null_record.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2004-2020 Free Software Foundation, Inc.
+--  Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_record.exp ./gdb/testsuite/gdb.ada/null_record.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/null_record.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/null_record.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/callee.adb ./gdb/testsuite/gdb.ada/O2_float_param/callee.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/callee.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/O2_float_param/callee.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/callee.ads ./gdb/testsuite/gdb.ada/O2_float_param/callee.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/callee.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/O2_float_param/callee.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/caller.adb ./gdb/testsuite/gdb.ada/O2_float_param/caller.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/caller.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/O2_float_param/caller.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/caller.ads ./gdb/testsuite/gdb.ada/O2_float_param/caller.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/caller.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/O2_float_param/caller.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/foo.adb ./gdb/testsuite/gdb.ada/O2_float_param/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/O2_float_param/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/io.adb ./gdb/testsuite/gdb.ada/O2_float_param/io.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/io.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/O2_float_param/io.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/io.ads ./gdb/testsuite/gdb.ada/O2_float_param/io.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param/io.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/O2_float_param/io.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param.exp ./gdb/testsuite/gdb.ada/O2_float_param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/O2_float_param.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/O2_float_param.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/operator_bp/ops.adb ./gdb/testsuite/gdb.ada/operator_bp/ops.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/operator_bp/ops.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/operator_bp/ops.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/operator_bp/ops.ads ./gdb/testsuite/gdb.ada/operator_bp/ops.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/operator_bp/ops.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/operator_bp/ops.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/operator_bp/ops_test.adb ./gdb/testsuite/gdb.ada/operator_bp/ops_test.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/operator_bp/ops_test.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/operator_bp/ops_test.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/operator_bp.exp ./gdb/testsuite/gdb.ada/operator_bp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/operator_bp.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/operator_bp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -33,16 +33,22 @@ runto "ops_test.adb:$bp_location"
 
 # Set breakpoints for all operators, using just the operator name in quotes.
 
+set bp_re "Breakpoint $decimal at $hex"
 foreach op { "+" "-" } {
     set op_re [string_to_regexp $op]
-    gdb_test "break \"$op\"" \
-             "Breakpoint $decimal at $hex: \"$op_re\"\. \\(2 locations\\)"
+    gdb_test "break \"$op\"" "$bp_re: \"$op_re\"\. \\($decimal locations\\).*"
 }
 
 foreach op { "*" "/" "mod" "rem" "**" "<" "<=" ">" ">=" "=" "and" "or" "xor" "&" "abs" "not"} {
     set op_re [string_to_regexp $op]
-    gdb_test "break \"$op\"" \
-             "Breakpoint $decimal at $hex: file .*ops.adb, line $decimal."
+    gdb_test_multiple "break \"$op\"" "" {
+	-re -wrap "$bp_re: file .*ops.adb, line $decimal." {
+	    pass $gdb_test_name
+	}
+	-re -wrap "$bp_re: \"$op_re\"\. \\($decimal locations\\).*" {
+	    pass $gdb_test_name
+	}
+    }
 }
 
 # Make sure we stop correctly in each operator function.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/optim_drec/foo.adb ./gdb/testsuite/gdb.ada/optim_drec/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/optim_drec/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/optim_drec/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/optim_drec.exp ./gdb/testsuite/gdb.ada/optim_drec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/optim_drec.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/optim_drec.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/out_of_line_in_inlined/bar.adb ./gdb/testsuite/gdb.ada/out_of_line_in_inlined/bar.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/out_of_line_in_inlined/bar.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/out_of_line_in_inlined/bar.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/out_of_line_in_inlined/bar.ads ./gdb/testsuite/gdb.ada/out_of_line_in_inlined/bar.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/out_of_line_in_inlined/bar.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/out_of_line_in_inlined/bar.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/out_of_line_in_inlined/foo_o224_021.adb ./gdb/testsuite/gdb.ada/out_of_line_in_inlined/foo_o224_021.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/out_of_line_in_inlined/foo_o224_021.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/out_of_line_in_inlined/foo_o224_021.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp ./gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_o224_021
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable {debug optimize=-O2}] != ""} {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array/pa.adb ./gdb/testsuite/gdb.ada/packed_array/pa.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array/pa.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_array/pa.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2005-2020 Free Software Foundation, Inc.
+--  Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array/pck.adb ./gdb/testsuite/gdb.ada/packed_array/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_array/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright (C) 2011-2020 Free Software Foundation, Inc.
+--  Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array/pck.ads ./gdb/testsuite/gdb.ada/packed_array/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_array/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright (C) 2011-2020 Free Software Foundation, Inc.
+--  Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign/aggregates.adb ./gdb/testsuite/gdb.ada/packed_array_assign/aggregates.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign/aggregates.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_array_assign/aggregates.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign/aggregates.ads ./gdb/testsuite/gdb.ada/packed_array_assign/aggregates.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign/aggregates.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_array_assign/aggregates.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign/pck.adb ./gdb/testsuite/gdb.ada/packed_array_assign/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_array_assign/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign/pck.ads ./gdb/testsuite/gdb.ada/packed_array_assign/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_array_assign/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign/tester.adb ./gdb/testsuite/gdb.ada/packed_array_assign/tester.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign/tester.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_array_assign/tester.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign.exp ./gdb/testsuite/gdb.ada/packed_array_assign.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array_assign.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_array_assign.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile tester
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
@@ -27,7 +29,8 @@ runto "aggregates.run_test"
 
 gdb_test \
     "print pra := ((packed_array_assign_x => 2, packed_array_assign_y => 0, packed_array_assign_w => 17), pr, (packed_array_assign_x => 7, packed_array_assign_y => 1, packed_array_assign_w => 23))" \
-    " = \\(\\(packed_array_assign_w => 17, packed_array_assign_x => 2, packed_array_assign_y => 0\\), \\(packed_array_assign_w => 104, packed_array_assign_x => 2, packed_array_assign_y => 3\\), \\(packed_array_assign_w => 23, packed_array_assign_x => 7, packed_array_assign_y => 1\\)\\)"
+    " = \\(\\(packed_array_assign_w => 17, packed_array_assign_x => 2, packed_array_assign_y => 0\\), \\(packed_array_assign_w => 104, packed_array_assign_x => 2, packed_array_assign_y => 3\\), \\(packed_array_assign_w => 23, packed_array_assign_x => 7, packed_array_assign_y => 1\\)\\)" \
+    "value of pra"
 
 gdb_test "print pra(1) := pr" \
     " = \\(packed_array_assign_w => 104, packed_array_assign_x => 2, packed_array_assign_y => 3\\)"
@@ -35,4 +38,5 @@ gdb_test "print pra(1)" \
     " = \\(packed_array_assign_w => 104, packed_array_assign_x => 2, packed_array_assign_y => 3\\)"
 
 gdb_test "print npr := (q000 => 3, r000 => (packed_array_assign_x => 6, packed_array_assign_y => 1, packed_array_assign_w => 117))" \
-    " = \\(q000 => 3, r000 => \\(packed_array_assign_w => 117, packed_array_assign_x => 6, packed_array_assign_y => 1\\)\\)"
+    " = \\(q000 => 3, r000 => \\(packed_array_assign_w => 117, packed_array_assign_x => 6, packed_array_assign_y => 1\\)\\)" \
+    "value of npr"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array.exp ./gdb/testsuite/gdb.ada/packed_array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_array.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_array.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_tagged/comp_bug.adb ./gdb/testsuite/gdb.ada/packed_tagged/comp_bug.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_tagged/comp_bug.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_tagged/comp_bug.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_tagged.exp ./gdb/testsuite/gdb.ada/packed_tagged.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/packed_tagged.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/packed_tagged.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,26 +15,75 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile comp_bug
 
-if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
-  return -1
+# Note we don't test the "none" (no -fgnat-encodings option) scenario
+# here, because "all" and "minimal" cover the cases, and this way we
+# don't have to update the test when gnat changes its default.
+foreach_with_prefix scenario {all minimal} {
+    set flags {debug}
+    if {$scenario != "none"} {
+	lappend flags additional_flags=-fgnat-encodings=$scenario
+    }
+
+    if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != ""} {
+	return -1
+    }
+
+    clean_restart ${testfile}
+
+    set bp_location [gdb_get_line_number "STOP" ${testdir}/comp_bug.adb]
+    runto "comp_bug.adb:$bp_location"
+
+    set pass_re \
+	"= \\(exists => true, value => 10\\)"
+    # There is a compiler bug that causes this output.
+    set kfail_re \
+	"= \\(exists => true\\)"
+
+    gdb_test_multiple "print x" "" {
+	-re -wrap $pass_re {
+	    pass $gdb_test_name
+	}
+	-re -wrap $kfail_re {
+	    if {$scenario == "minimal"} {
+		setup_xfail "gnat compiler bug" *-*-*
+	    }
+	    fail $gdb_test_name
+	}
+    }
+
+    set pass_re \
+	[multi_line "type = record" \
+	     "    exists: (boolean|range false \\.\\. true);" \
+	     "    case exists is" \
+	     "        when true =>" \
+	     "            value: range 0 \\.\\. 255;" \
+	     "        when others => null;" \
+	     "    end case;" \
+	     "end record" ]
+    # There is a compiler bug that causes this output.
+    set kfail_re \
+	[multi_line "type = record" \
+	     "    exists: (boolean|range false \\.\\. true);" \
+	     "    case \\? is" \
+	     "        when others =>" \
+	     "            value: range 0 \\.\\. 255;" \
+	     "        when others => null;" \
+	     "    end case;" \
+	     "end record" ]
+
+    gdb_test_multiple "ptype x" "" {
+	-re -wrap $pass_re {
+	    pass $gdb_test_name
+	}
+	-re -wrap $kfail_re {
+	    if {$scenario == "minimal"} {
+		setup_xfail "gnat compiler bug" *-*-*
+	    }
+	    fail $gdb_test_name
+	}
+    }
 }
-
-clean_restart ${testfile}
-
-set bp_location [gdb_get_line_number "STOP" ${testdir}/comp_bug.adb]
-runto "comp_bug.adb:$bp_location"
-
-gdb_test "print x" \
-         "= \\(exists => true, value => 10\\)"
-
-gdb_test "ptype x" \
-         [multi_line "type = record" \
-                     "    exists: (boolean|range false \\.\\. true);" \
-                     "    case exists is" \
-                     "        when true =>" \
-                     "            value: range 0 \\.\\. 255;" \
-                     "        when others => null;" \
-                     "    end case;" \
-                     "end record" ]
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_arr_ren/foo.adb ./gdb/testsuite/gdb.ada/pckd_arr_ren/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_arr_ren/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pckd_arr_ren/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_arr_ren/pck.adb ./gdb/testsuite/gdb.ada/pckd_arr_ren/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_arr_ren/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pckd_arr_ren/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_arr_ren/pck.ads ./gdb/testsuite/gdb.ada/pckd_arr_ren/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_arr_ren/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pckd_arr_ren/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_arr_ren.exp ./gdb/testsuite/gdb.ada/pckd_arr_ren.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_arr_ren.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pckd_arr_ren.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_neg/foo_o508_021.adb ./gdb/testsuite/gdb.ada/pckd_neg/foo_o508_021.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_neg/foo_o508_021.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pckd_neg/foo_o508_021.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright (C) 2015-2020 Free Software Foundation, Inc.
+--  Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_neg/pck.adb ./gdb/testsuite/gdb.ada/pckd_neg/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_neg/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pckd_neg/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright (C) 2015-2020 Free Software Foundation, Inc.
+--  Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_neg/pck.ads ./gdb/testsuite/gdb.ada/pckd_neg/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_neg/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pckd_neg/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright (C) 2015-2020 Free Software Foundation, Inc.
+--  Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_neg.exp ./gdb/testsuite/gdb.ada/pckd_neg.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pckd_neg.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pckd_neg.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pkd_arr_elem/failure.adb ./gdb/testsuite/gdb.ada/pkd_arr_elem/failure.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pkd_arr_elem/failure.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pkd_arr_elem/failure.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pkd_arr_elem/pck.adb ./gdb/testsuite/gdb.ada/pkd_arr_elem/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pkd_arr_elem/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pkd_arr_elem/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pkd_arr_elem/pck.ads ./gdb/testsuite/gdb.ada/pkd_arr_elem/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pkd_arr_elem/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pkd_arr_elem/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pkd_arr_elem.exp ./gdb/testsuite/gdb.ada/pkd_arr_elem.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pkd_arr_elem.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pkd_arr_elem.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pp-rec-component/foo.adb ./gdb/testsuite/gdb.ada/pp-rec-component/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pp-rec-component/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pp-rec-component/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pp-rec-component/pck.adb ./gdb/testsuite/gdb.ada/pp-rec-component/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pp-rec-component/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pp-rec-component/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pp-rec-component/pck.ads ./gdb/testsuite/gdb.ada/pp-rec-component/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pp-rec-component/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pp-rec-component/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pp-rec-component.exp ./gdb/testsuite/gdb.ada/pp-rec-component.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pp-rec-component.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pp-rec-component.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pp-rec-component.py ./gdb/testsuite/gdb.ada/pp-rec-component.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/pp-rec-component.py	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/pp-rec-component.py	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/print_chars/foo.adb ./gdb/testsuite/gdb.ada/print_chars/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/print_chars/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/print_chars/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/print_chars/pck.adb ./gdb/testsuite/gdb.ada/print_chars/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/print_chars/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/print_chars/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/print_chars/pck.ads ./gdb/testsuite/gdb.ada/print_chars/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/print_chars/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/print_chars/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/print_chars.exp ./gdb/testsuite/gdb.ada/print_chars.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/print_chars.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/print_chars.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnat05 ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/print_pc.exp ./gdb/testsuite/gdb.ada/print_pc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/print_pc.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/print_pc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile dummy start
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptr_typedef/foo.adb ./gdb/testsuite/gdb.ada/ptr_typedef/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptr_typedef/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptr_typedef/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptr_typedef/pck.adb ./gdb/testsuite/gdb.ada/ptr_typedef/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptr_typedef/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptr_typedef/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptr_typedef/pck.ads ./gdb/testsuite/gdb.ada/ptr_typedef/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptr_typedef/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptr_typedef/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptr_typedef.exp ./gdb/testsuite/gdb.ada/ptr_typedef.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptr_typedef.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptr_typedef.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_arith_binop.exp ./gdb/testsuite/gdb.ada/ptype_arith_binop.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_arith_binop.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_arith_binop.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -13,6 +13,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+if { [skip_ada_tests] } { return -1 }
+
 gdb_exit
 gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_array/foo.adb ./gdb/testsuite/gdb.ada/ptype_array/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_array/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_array/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_array/pck.adb ./gdb/testsuite/gdb.ada/ptype_array/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_array/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_array/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_array/pck.ads ./gdb/testsuite/gdb.ada/ptype_array/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_array/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_array/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_array.exp ./gdb/testsuite/gdb.ada/ptype_array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_array.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_array.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnat05 ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_field/foo.adb ./gdb/testsuite/gdb.ada/ptype_field/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_field/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_field/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_field/pck.adb ./gdb/testsuite/gdb.ada/ptype_field/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_field/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_field/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_field/pck.ads ./gdb/testsuite/gdb.ada/ptype_field/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_field/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_field/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_field.exp ./gdb/testsuite/gdb.ada/ptype_field.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_field.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_field.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnat05 ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_tagged_param/foo.adb ./gdb/testsuite/gdb.ada/ptype_tagged_param/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_tagged_param/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_tagged_param/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_tagged_param/pck.adb ./gdb/testsuite/gdb.ada/ptype_tagged_param/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_tagged_param/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_tagged_param/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_tagged_param/pck.ads ./gdb/testsuite/gdb.ada/ptype_tagged_param/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_tagged_param/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_tagged_param/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_tagged_param.exp ./gdb/testsuite/gdb.ada/ptype_tagged_param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_tagged_param.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_tagged_param.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -15,20 +15,39 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
   return -1
 }
 
+set has_runtime_debug_info [gnat_runtime_has_debug_info]
+
 clean_restart ${testfile}
 
 if ![runto "position_x" ] then {
   return -1
 }
 
-set eol "\[\r\n\]+"
-set sp "\[ \t\]*"
+# Identifying the runtime type of S can only be done when we have the debug
+# info for the GNAT runtime.
+
+if { $has_runtime_debug_info } {
+    gdb_test "ptype s" \
+	[multi_line \
+	    "type = <ref> new pck.shape with record" \
+	    "    r: integer;" \
+	    "end record"] \
+	"ptype s, with debug info"
+} else {
+    gdb_test "ptype s" \
+	[multi_line \
+	    "type = <ref> tagged record" \
+	    "    x: integer;" \
+	    "    y: integer;" \
+	    "end record" ] \
+	"ptype s, without debug info"
+}
 
-gdb_test "ptype s" \
-         "type = <ref> new pck.shape with record${eol}${sp}r: integer;${eol}end record"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_union.c ./gdb/testsuite/gdb.ada/ptype_union.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_union.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_union.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_union.exp ./gdb/testsuite/gdb.ada/ptype_union.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ptype_union.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ptype_union.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -13,17 +13,14 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_testfile .c
 
 if {[prepare_for_testing "failed to prepare" ${testfile} ${srcfile}]} {
     return -1
 }
 
-if {[exec_has_index_section $binfile]} {
-    unsupported "Ada is not currently supported by the index (PR 24713)"
-    return -1
-}
-
 # The test case is written in C, because it was easy to make the
 # required type there; but the bug itself only happens in Ada.
 gdb_test "set lang ada" ""
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_range/foo.adb ./gdb/testsuite/gdb.ada/py_range/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_range/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/py_range/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_range/pck.adb ./gdb/testsuite/gdb.ada/py_range/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_range/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/py_range/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_range/pck.ads ./gdb/testsuite/gdb.ada/py_range/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_range/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/py_range/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_range.exp ./gdb/testsuite/gdb.ada/py_range.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_range.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/py_range.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -16,6 +16,8 @@
 load_lib "ada.exp"
 load_lib gdb-python.exp
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_taft/main.adb ./gdb/testsuite/gdb.ada/py_taft/main.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_taft/main.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/py_taft/main.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_taft/pkg.adb ./gdb/testsuite/gdb.ada/py_taft/pkg.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_taft/pkg.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/py_taft/pkg.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_taft/pkg.ads ./gdb/testsuite/gdb.ada/py_taft/pkg.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_taft/pkg.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/py_taft/pkg.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_taft.exp ./gdb/testsuite/gdb.ada/py_taft.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/py_taft.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/py_taft.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -16,6 +16,8 @@
 load_lib "ada.exp"
 load_lib gdb-python.exp
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile main
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable debug] != ""} {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rdv_wait/foo.adb ./gdb/testsuite/gdb.ada/rdv_wait/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rdv_wait/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rdv_wait/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rdv_wait/pck.adb ./gdb/testsuite/gdb.ada/rdv_wait/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rdv_wait/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rdv_wait/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rdv_wait/pck.ads ./gdb/testsuite/gdb.ada/rdv_wait/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rdv_wait/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rdv_wait/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rdv_wait.exp ./gdb/testsuite/gdb.ada/rdv_wait.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rdv_wait.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rdv_wait.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_comp/bar_o203_012.adb ./gdb/testsuite/gdb.ada/rec_comp/bar_o203_012.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_comp/bar_o203_012.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rec_comp/bar_o203_012.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_comp/pck.adb ./gdb/testsuite/gdb.ada/rec_comp/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_comp/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rec_comp/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_comp/pck.ads ./gdb/testsuite/gdb.ada/rec_comp/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_comp/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rec_comp/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_comp.exp ./gdb/testsuite/gdb.ada/rec_comp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_comp.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rec_comp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile bar_o203_012
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_return/foo.adb ./gdb/testsuite/gdb.ada/rec_return/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_return/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rec_return/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_return/pck.adb ./gdb/testsuite/gdb.ada/rec_return/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_return/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rec_return/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_return/pck.ads ./gdb/testsuite/gdb.ada/rec_return/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_return/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rec_return/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_return.exp ./gdb/testsuite/gdb.ada/rec_return.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rec_return.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rec_return.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_param/foo.adb ./gdb/testsuite/gdb.ada/ref_param/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_param/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ref_param/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_param/pck.adb ./gdb/testsuite/gdb.ada/ref_param/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_param/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ref_param/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_param/pck.ads ./gdb/testsuite/gdb.ada/ref_param/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_param/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ref_param/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_param.exp ./gdb/testsuite/gdb.ada/ref_param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_param.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ref_param.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_tick_size/p.adb ./gdb/testsuite/gdb.ada/ref_tick_size/p.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_tick_size/p.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ref_tick_size/p.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_tick_size/pck.adb ./gdb/testsuite/gdb.ada/ref_tick_size/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_tick_size/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ref_tick_size/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_tick_size/pck.ads ./gdb/testsuite/gdb.ada/ref_tick_size/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_tick_size/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ref_tick_size/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_tick_size.exp ./gdb/testsuite/gdb.ada/ref_tick_size.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/ref_tick_size.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/ref_tick_size.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile p
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param/pb30_012.adb ./gdb/testsuite/gdb.ada/rename_subscript_param/pb30_012.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param/pb30_012.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rename_subscript_param/pb30_012.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param/pck.adb ./gdb/testsuite/gdb.ada/rename_subscript_param/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rename_subscript_param/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param/pck.ads ./gdb/testsuite/gdb.ada/rename_subscript_param/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rename_subscript_param/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param/pkg.adb ./gdb/testsuite/gdb.ada/rename_subscript_param/pkg.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param/pkg.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rename_subscript_param/pkg.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param/pkg.ads ./gdb/testsuite/gdb.ada/rename_subscript_param/pkg.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param/pkg.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rename_subscript_param/pkg.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param.exp ./gdb/testsuite/gdb.ada/rename_subscript_param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/rename_subscript_param.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/rename_subscript_param.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 if { ![gnatmake_version_at_least 8] } {
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/repeat_dyn/foo_oc22_002.adb ./gdb/testsuite/gdb.ada/repeat_dyn/foo_oc22_002.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/repeat_dyn/foo_oc22_002.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/repeat_dyn/foo_oc22_002.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/repeat_dyn/pck.adb ./gdb/testsuite/gdb.ada/repeat_dyn/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/repeat_dyn/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/repeat_dyn/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/repeat_dyn/pck.ads ./gdb/testsuite/gdb.ada/repeat_dyn/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/repeat_dyn/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/repeat_dyn/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2016-2020 Free Software Foundation, Inc.
+--  Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/repeat_dyn.exp ./gdb/testsuite/gdb.ada/repeat_dyn.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/repeat_dyn.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/repeat_dyn.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_oc22_002
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_component_name/foo.adb ./gdb/testsuite/gdb.ada/same_component_name/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_component_name/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/same_component_name/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_component_name/pck.adb ./gdb/testsuite/gdb.ada/same_component_name/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_component_name/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/same_component_name/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2010-2020 Free Software Foundation, Inc.
+--  Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_component_name/pck.ads ./gdb/testsuite/gdb.ada/same_component_name/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_component_name/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/same_component_name/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_component_name.exp ./gdb/testsuite/gdb.ada/same_component_name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_component_name.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/same_component_name.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
@@ -56,7 +58,7 @@ gdb_test "print obj.a" " = 48" \
 
 gdb_test "continue" \
          ".*Breakpoint $decimal, pck.assign \\(.*\\).*" \
-         "continue to bottom assign breakpoint (2nd time)"
+         "continue to bottom assign breakpoint, 2nd time"
 
 gdb_test "print obj.x" " = 6" \
          "Print field existing only in bottom component"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_enum/a.adb ./gdb/testsuite/gdb.ada/same_enum/a.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_enum/a.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/same_enum/a.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_enum/pck.adb ./gdb/testsuite/gdb.ada/same_enum/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_enum/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/same_enum/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_enum/pck.ads ./gdb/testsuite/gdb.ada/same_enum/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_enum/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/same_enum/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_enum.exp ./gdb/testsuite/gdb.ada/same_enum.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/same_enum.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/same_enum.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile a
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scalar_storage/pck.adb ./gdb/testsuite/gdb.ada/scalar_storage/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scalar_storage/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/scalar_storage/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scalar_storage/pck.ads ./gdb/testsuite/gdb.ada/scalar_storage/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scalar_storage/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/scalar_storage/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scalar_storage/storage.adb ./gdb/testsuite/gdb.ada/scalar_storage/storage.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scalar_storage/storage.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/scalar_storage/storage.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scalar_storage.exp ./gdb/testsuite/gdb.ada/scalar_storage.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scalar_storage.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/scalar_storage.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -18,6 +18,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile storage
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scoped_watch/foo_p708_025.adb ./gdb/testsuite/gdb.ada/scoped_watch/foo_p708_025.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scoped_watch/foo_p708_025.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/scoped_watch/foo_p708_025.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scoped_watch/pck.adb ./gdb/testsuite/gdb.ada/scoped_watch/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scoped_watch/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/scoped_watch/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scoped_watch/pck.ads ./gdb/testsuite/gdb.ada/scoped_watch/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scoped_watch/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/scoped_watch/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scoped_watch.exp ./gdb/testsuite/gdb.ada/scoped_watch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/scoped_watch.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/scoped_watch.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_pckd_arr_elt/foo.adb ./gdb/testsuite/gdb.ada/set_pckd_arr_elt/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_pckd_arr_elt/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/set_pckd_arr_elt/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_pckd_arr_elt/pck.adb ./gdb/testsuite/gdb.ada/set_pckd_arr_elt/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_pckd_arr_elt/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/set_pckd_arr_elt/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_pckd_arr_elt/pck.ads ./gdb/testsuite/gdb.ada/set_pckd_arr_elt/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_pckd_arr_elt/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/set_pckd_arr_elt/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_pckd_arr_elt.exp ./gdb/testsuite/gdb.ada/set_pckd_arr_elt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_pckd_arr_elt.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/set_pckd_arr_elt.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_wstr/a.adb ./gdb/testsuite/gdb.ada/set_wstr/a.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_wstr/a.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/set_wstr/a.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_wstr/pck.adb ./gdb/testsuite/gdb.ada/set_wstr/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_wstr/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/set_wstr/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_wstr/pck.ads ./gdb/testsuite/gdb.ada/set_wstr/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_wstr/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/set_wstr/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_wstr.exp ./gdb/testsuite/gdb.ada/set_wstr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/set_wstr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/set_wstr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile a
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/small_reg_param/foo.adb ./gdb/testsuite/gdb.ada/small_reg_param/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/small_reg_param/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/small_reg_param/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/small_reg_param/pck.adb ./gdb/testsuite/gdb.ada/small_reg_param/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/small_reg_param/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/small_reg_param/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/small_reg_param/pck.ads ./gdb/testsuite/gdb.ada/small_reg_param/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/small_reg_param/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/small_reg_param/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/small_reg_param.exp ./gdb/testsuite/gdb.ada/small_reg_param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/small_reg_param.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/small_reg_param.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug optimize=-O1]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/start/dummy.adb ./gdb/testsuite/gdb.ada/start/dummy.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/start/dummy.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/start/dummy.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2005-2020 Free Software Foundation, Inc.
+--  Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/start.exp ./gdb/testsuite/gdb.ada/start.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/start.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/start.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_binop_equal/foo_p211_061.adb ./gdb/testsuite/gdb.ada/str_binop_equal/foo_p211_061.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_binop_equal/foo_p211_061.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_binop_equal/foo_p211_061.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_binop_equal/pck.adb ./gdb/testsuite/gdb.ada/str_binop_equal/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_binop_equal/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_binop_equal/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_binop_equal/pck.ads ./gdb/testsuite/gdb.ada/str_binop_equal/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_binop_equal/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_binop_equal/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_binop_equal.exp ./gdb/testsuite/gdb.ada/str_binop_equal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_binop_equal.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_binop_equal.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_p211_061
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_ref_cmp/foo.adb ./gdb/testsuite/gdb.ada/str_ref_cmp/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_ref_cmp/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_ref_cmp/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_ref_cmp/pck.ads ./gdb/testsuite/gdb.ada/str_ref_cmp/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_ref_cmp/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_ref_cmp/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_ref_cmp.exp ./gdb/testsuite/gdb.ada/str_ref_cmp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_ref_cmp.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_ref_cmp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_uninit/parse.adb ./gdb/testsuite/gdb.ada/str_uninit/parse.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_uninit/parse.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_uninit/parse.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_uninit/pck.adb ./gdb/testsuite/gdb.ada/str_uninit/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_uninit/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_uninit/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_uninit/pck.ads ./gdb/testsuite/gdb.ada/str_uninit/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_uninit/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_uninit/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_uninit.exp ./gdb/testsuite/gdb.ada/str_uninit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/str_uninit.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/str_uninit.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile parse
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sub_variant/subv.adb ./gdb/testsuite/gdb.ada/sub_variant/subv.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sub_variant/subv.adb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/sub_variant/subv.adb	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,45 @@
+--  Copyright 2020-2021 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/>.
+
+procedure Subv is
+  type Indicator_T is (First, Last);
+
+  type T1 (Indicator : Indicator_T := First) is
+    record
+      case Indicator is
+        when First =>
+          Value : Natural;
+        when Last =>
+          null;
+      end case;
+    end record;
+
+  type T2 (Indicator : Indicator_T := First) is
+    record
+      Associated : T1;
+      case Indicator is
+        when First =>
+          Value : Natural;
+        when Last =>
+          null;
+      end case;
+    end record;
+
+  Q : T2  := ( First, (First, 42), 51 );
+  R : T2  := ( First, (Indicator => Last), 51 );
+  S : T2  := ( Last, (First, 42));
+begin
+  null;  -- STOP
+end;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sub_variant.exp ./gdb/testsuite/gdb.ada/sub_variant.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sub_variant.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/sub_variant.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,36 @@
+# Copyright 2020-2021 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/>.
+
+load_lib "ada.exp"
+
+if { [skip_ada_tests] } { return -1 }
+
+standard_ada_testfile subv
+
+if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
+  return -1
+}
+
+clean_restart ${testfile}
+
+set bp_location [gdb_get_line_number "STOP" ${testdir}/subv.adb]
+runto "subv.adb:$bp_location"
+
+gdb_test "print q" \
+    "\\(indicator => first, associated => \\(indicator => first, value => 42\\), value => 51\\)"
+gdb_test "print r" \
+    "\\(indicator => first, associated => \\(indicator => last\\), value => 51\\)"
+gdb_test "print s" \
+    "\\(indicator => last, associated => \\(indicator => first, value => 42\\)\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sym_print_name/foo.adb ./gdb/testsuite/gdb.ada/sym_print_name/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sym_print_name/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/sym_print_name/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sym_print_name/pck.adb ./gdb/testsuite/gdb.ada/sym_print_name/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sym_print_name/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/sym_print_name/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sym_print_name/pck.ads ./gdb/testsuite/gdb.ada/sym_print_name/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sym_print_name/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/sym_print_name/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sym_print_name.exp ./gdb/testsuite/gdb.ada/sym_print_name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/sym_print_name.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/sym_print_name.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/taft_type/p.adb ./gdb/testsuite/gdb.ada/taft_type/p.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/taft_type/p.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/taft_type/p.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/taft_type/pck.adb ./gdb/testsuite/gdb.ada/taft_type/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/taft_type/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/taft_type/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/taft_type/pck.ads ./gdb/testsuite/gdb.ada/taft_type/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/taft_type/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/taft_type/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/taft_type.exp ./gdb/testsuite/gdb.ada/taft_type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/taft_type.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/taft_type.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile p
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged/foo.adb ./gdb/testsuite/gdb.ada/tagged/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged/pck.adb ./gdb/testsuite/gdb.ada/tagged/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged/pck.ads ./gdb/testsuite/gdb.ada/tagged/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_access/pack.adb ./gdb/testsuite/gdb.ada/tagged_access/pack.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_access/pack.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged_access/pack.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_access/pack.ads ./gdb/testsuite/gdb.ada/tagged_access/pack.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_access/pack.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged_access/pack.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_access/p.adb ./gdb/testsuite/gdb.ada/tagged_access/p.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_access/p.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged_access/p.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_access.exp ./gdb/testsuite/gdb.ada/tagged_access.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_access.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged_access.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile p
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged.exp ./gdb/testsuite/gdb.ada/tagged.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_not_init/foo.adb ./gdb/testsuite/gdb.ada/tagged_not_init/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_not_init/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged_not_init/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_not_init/pck.adb ./gdb/testsuite/gdb.ada/tagged_not_init/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_not_init/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged_not_init/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_not_init/pck.ads ./gdb/testsuite/gdb.ada/tagged_not_init/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_not_init/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged_not_init/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_not_init.exp ./gdb/testsuite/gdb.ada/tagged_not_init.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tagged_not_init.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tagged_not_init.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_bp/foo.adb ./gdb/testsuite/gdb.ada/task_bp/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_bp/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/task_bp/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_bp/pck.adb ./gdb/testsuite/gdb.ada/task_bp/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_bp/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/task_bp/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_bp/pck.ads ./gdb/testsuite/gdb.ada/task_bp/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_bp/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/task_bp/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_bp.exp ./gdb/testsuite/gdb.ada/task_bp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_bp.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/task_bp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tasks/foo.adb ./gdb/testsuite/gdb.ada/tasks/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tasks/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tasks/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2009-2020 Free Software Foundation, Inc.
+--  Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tasks.exp ./gdb/testsuite/gdb.ada/tasks.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tasks.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tasks.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_switch_in_core/crash.adb ./gdb/testsuite/gdb.ada/task_switch_in_core/crash.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_switch_in_core/crash.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/task_switch_in_core/crash.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2017-2020 Free Software Foundation, Inc.
+--  Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_switch_in_core.exp ./gdb/testsuite/gdb.ada/task_switch_in_core.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/task_switch_in_core.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/task_switch_in_core.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile crash
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_last_segv/foo.adb ./gdb/testsuite/gdb.ada/tick_last_segv/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_last_segv/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tick_last_segv/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2009-2020 Free Software Foundation, Inc.
+--  Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_last_segv.exp ./gdb/testsuite/gdb.ada/tick_last_segv.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_last_segv.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tick_last_segv.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_length_array_enum_idx/foo_n207_004.adb ./gdb/testsuite/gdb.ada/tick_length_array_enum_idx/foo_n207_004.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_length_array_enum_idx/foo_n207_004.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tick_length_array_enum_idx/foo_n207_004.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_length_array_enum_idx/pck.adb ./gdb/testsuite/gdb.ada/tick_length_array_enum_idx/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_length_array_enum_idx/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tick_length_array_enum_idx/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_length_array_enum_idx/pck.ads ./gdb/testsuite/gdb.ada/tick_length_array_enum_idx/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_length_array_enum_idx/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tick_length_array_enum_idx/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2014-2020 Free Software Foundation, Inc.
+--  Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_length_array_enum_idx.exp ./gdb/testsuite/gdb.ada/tick_length_array_enum_idx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/tick_length_array_enum_idx.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/tick_length_array_enum_idx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_n207_004
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/type_coercion/assign.adb ./gdb/testsuite/gdb.ada/type_coercion/assign.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/type_coercion/assign.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/type_coercion/assign.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/type_coercion/ident.adb ./gdb/testsuite/gdb.ada/type_coercion/ident.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/type_coercion/ident.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/type_coercion/ident.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2008-2020 Free Software Foundation, Inc.
+--  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/type_coercion.exp ./gdb/testsuite/gdb.ada/type_coercion.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/type_coercion.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/type_coercion.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile assign
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
@@ -27,7 +29,7 @@ set bp_location [gdb_get_line_number "ST
 runto "assign.adb:$bp_location"
 
 gdb_test "p q" \
-         "= \\(2, 3, 5, 7, 11\\)"
+         "= \\(2, 3, 5, 7, 11\\)" "initial value of q"
 
 gdb_test_no_output "set \$addr := q'address" \
          "save q'address in convenience variable"
@@ -42,4 +44,4 @@ gdb_test_no_output "set {Integer} \$addr
          "set {Integer} \$addr := 19"
 
 gdb_test "p q" \
-         "= \\(19, 3, 5, 7, 11\\)"
+         "= \\(19, 3, 5, 7, 11\\)" "modified value of q"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/foo.adb ./gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/pck.adb ./gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/pck.ads ./gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec.exp ./gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/unc_arr_ptr_in_var_rec.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
@@ -64,7 +66,7 @@ gdb_test "print my_object" \
 
 gdb_test "print my_object.ptr" \
          "\\(foo.table_access\\) $hex" \
-         "print My_P_Object.Ptr when no longer null"
+         "print my_object.ptr when no longer null"
 
 gdb_test "print my_object.ptr.all" \
          "= \\(13, 21, 34\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unchecked_union/pck.adb ./gdb/testsuite/gdb.ada/unchecked_union/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unchecked_union/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/unchecked_union/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unchecked_union/pck.ads ./gdb/testsuite/gdb.ada/unchecked_union/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unchecked_union/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/unchecked_union/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unchecked_union/unchecked_union.adb ./gdb/testsuite/gdb.ada/unchecked_union/unchecked_union.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unchecked_union/unchecked_union.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/unchecked_union/unchecked_union.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unchecked_union.exp ./gdb/testsuite/gdb.ada/unchecked_union.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/unchecked_union.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/unchecked_union.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -17,16 +17,9 @@
 
 load_lib "ada.exp"
 
-standard_ada_testfile unchecked_union
-
-if {[gdb_compile_ada "${srcfile}" "${binfile}" executable {debug}] != ""} {
-  return -1
-}
+if { [skip_ada_tests] } { return -1 }
 
-clean_restart ${testfile}
-
-set bp_location [gdb_get_line_number "BREAK" ${testdir}/unchecked_union.adb]
-runto "unchecked_union.adb:$bp_location"
+standard_ada_testfile unchecked_union
 
 proc multi_line_string {str} {
     set result {}
@@ -54,5 +47,21 @@ set pair_string {    case ? is
 }
 set pair_full "type = record\n${inner_string}${pair_string}end record"
 
-gdb_test "ptype Pair" [multi_line_string $pair_full]
-gdb_test "ptype Inner" [multi_line_string $inner_full]
+foreach_with_prefix scenario {none all minimal} {
+    set flags {debug}
+    if {$scenario != "none"} {
+	lappend flags additional_flags=-fgnat-encodings=$scenario
+    }
+
+    if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != ""} {
+	return -1
+    }
+
+    clean_restart ${testfile}
+
+    set bp_location [gdb_get_line_number "BREAK" ${testdir}/unchecked_union.adb]
+    runto "unchecked_union.adb:$bp_location"
+
+    gdb_test "ptype Pair" [multi_line_string $pair_full]
+    gdb_test "ptype Inner" [multi_line_string $inner_full]
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/uninitialized_vars/parse.adb ./gdb/testsuite/gdb.ada/uninitialized_vars/parse.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/uninitialized_vars/parse.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/uninitialized_vars/parse.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2009-2020 Free Software Foundation, Inc.
+--  Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/uninitialized_vars/parse_controlled.ads ./gdb/testsuite/gdb.ada/uninitialized_vars/parse_controlled.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/uninitialized_vars/parse_controlled.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/uninitialized_vars/parse_controlled.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2009-2020 Free Software Foundation, Inc.
+--  Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/uninitialized_vars.exp ./gdb/testsuite/gdb.ada/uninitialized_vars.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/uninitialized_vars.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/uninitialized_vars.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -18,6 +18,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile parse
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_attrs/foo_o115_002.adb ./gdb/testsuite/gdb.ada/var_arr_attrs/foo_o115_002.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_attrs/foo_o115_002.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_arr_attrs/foo_o115_002.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_attrs/pck.adb ./gdb/testsuite/gdb.ada/var_arr_attrs/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_attrs/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_arr_attrs/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_attrs/pck.ads ./gdb/testsuite/gdb.ada/var_arr_attrs/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_attrs/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_arr_attrs/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_attrs.exp ./gdb/testsuite/gdb.ada/var_arr_attrs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_attrs.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_arr_attrs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo_o115_002
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_typedef/pack.adb ./gdb/testsuite/gdb.ada/var_arr_typedef/pack.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_typedef/pack.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_arr_typedef/pack.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_typedef/pack.ads ./gdb/testsuite/gdb.ada/var_arr_typedef/pack.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_typedef/pack.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_arr_typedef/pack.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_typedef/var_arr_typedef.adb ./gdb/testsuite/gdb.ada/var_arr_typedef/var_arr_typedef.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_typedef/var_arr_typedef.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_arr_typedef/var_arr_typedef.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_typedef.exp ./gdb/testsuite/gdb.ada/var_arr_typedef.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_arr_typedef.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_arr_typedef.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile var_arr_typedef
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant/pck.ads ./gdb/testsuite/gdb.ada/variant/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant/pck.ads	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,54 @@
+--  Copyright 2020-2021 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/>.
+
+package Pck is
+
+   type Rec_Type (C : Character := 'd') is record
+      case C is
+         when Character'First     => X_First : Integer;
+         when Character'Val (127) => X_127   : Integer;
+         when Character'Val (128) => X_128   : Integer;
+         when Character'Last      => X_Last  : Integer;
+         when others              => null;
+      end case;
+   end record;
+
+   type Second_Type (I : Integer) is record
+      One: Integer;
+      case I is
+         when -5 .. 5 =>
+	   X : Integer;
+         when others =>
+	   Y : Integer;
+      end case;
+   end record;
+
+   type Nested_And_Variable (One, Two: Integer) is record
+       Str : String (1 .. One);
+       case One is
+          when 0 =>
+	     null;
+          when others =>
+	     OneValue : Integer;
+             Str2 : String (1 .. Two);
+             case Two is
+	        when 0 =>
+		   null;
+		when others =>
+		   TwoValue : Integer;
+             end case;
+       end case;
+   end record;
+end Pck;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant/pkg.adb ./gdb/testsuite/gdb.ada/variant/pkg.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant/pkg.adb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant/pkg.adb	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,41 @@
+--  Copyright 2020-2021 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/>.
+
+with Pck; use Pck;
+
+procedure Pkg is
+
+   R, Q : Rec_Type;
+
+   ST1 : constant Second_Type := (I => -4, One => 1, X => 2);
+   ST2 : constant Second_Type := (I => 99, One => 1, Y => 77);
+
+   NAV1 : constant Nested_And_Variable := (One => 0, Two => 93,
+                                           Str => (others => 'z'));
+   NAV2 : constant Nested_And_Variable := (One => 3, OneValue => 33,
+                                           Str => (others => 'z'),
+                                           Str2 => (others => 'q'),
+                                           Two => 0);
+   NAV3 : constant Nested_And_Variable := (One => 3, OneValue => 33,
+                                           Str => (others => 'z'),
+                                           Str2 => (others => 'q'),
+                                           Two => 7, TwoValue => 88);
+
+begin
+   R := (C => 'd');
+   Q := (C => Character'First, X_First => 27);
+
+   null; -- STOP
+end Pkg;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant.exp ./gdb/testsuite/gdb.ada/variant.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,58 @@
+# Copyright 2020-2021 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/>.
+
+load_lib "ada.exp"
+load_lib "gdb-python.exp"
+
+if { [skip_ada_tests] } { return -1 }
+
+standard_ada_testfile pkg
+
+foreach_with_prefix scenario {none all minimal} {
+    set flags {debug}
+    if {$scenario != "none"} {
+	lappend flags additional_flags=-fgnat-encodings=$scenario
+    }
+
+    if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != ""} {
+	return -1
+    }
+
+    clean_restart ${testfile}
+
+    set bp_location [gdb_get_line_number "STOP" ${testdir}/pkg.adb]
+    runto "pkg.adb:$bp_location"
+
+    gdb_test "print r" "= \\(c => 100 'd'\\)"
+    gdb_test "print q" " = \\(c => 0 '\\\[\"00\"\\\]', x_first => 27\\)"
+
+    gdb_test "print st1" " = \\(i => -4, one => 1, x => 2\\)"
+    gdb_test "print st2" " = \\(i => 99, one => 1, y => 77\\)"
+
+    gdb_test "print nav1" " = \\(one => 0, two => 93, str => \"\"\\)"
+    gdb_test "print nav2" \
+	" = \\(one => 3, two => 0, str => \"zzz\", onevalue => 33, str2 => \"\"\\)"
+    gdb_test "print nav3" \
+	" = \\(one => 3, two => 7, str => \"zzz\", onevalue => 33, str2 => \"qqqqqqq\", twovalue => 88\\)"
+
+    # This is only supported for the DWARF encoding.
+    if {$scenario == "minimal" && ![skip_python_tests]} {
+	gdb_test_no_output \
+	    "python t = gdb.lookup_type('nested_and_variable')" \
+	    "fetch type for python"
+	gdb_test "python print(t.dynamic)" "True"
+	gdb_test "python print(t\['onevalue'\].bitpos)" "None"
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant-record/proc.adb ./gdb/testsuite/gdb.ada/variant-record/proc.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant-record/proc.adb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant-record/proc.adb	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,21 @@
+--  Copyright 2020-2021 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/>.
+
+with Value;
+procedure Proc is
+  My_Value : Value.T := Value.Create;
+begin
+  null; -- STOP
+end;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant-record/value.adb ./gdb/testsuite/gdb.ada/variant-record/value.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant-record/value.adb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant-record/value.adb	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,30 @@
+--  Copyright 2020-2021 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/>.
+
+package body Value is
+  function Create return T is
+  begin
+    return (One => (Well => Value_Name.No,
+                    Unique_Name => (X1 => 1, X2 => 2)),
+            Two => (Well => Value_Name.Yes,
+                    Name => "abcdefgh"));
+  end Create;
+
+  function Name (Of_Value : T) return Value_Name.T is
+  begin
+    return Of_Value.Two;
+  end Name;
+
+end Value;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant-record/value.ads ./gdb/testsuite/gdb.ada/variant-record/value.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant-record/value.ads	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant-record/value.ads	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,48 @@
+--  Copyright 2020-2021 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/>.
+
+package Value is
+  package Value_Name is
+    Length : constant Positive := 8;
+    subtype Name_T is String (1 .. Length);
+
+    type A_Record_T is
+      record
+        X1 : Natural;
+        X2 : Natural;
+      end record;
+
+    type Yes_No_T is (Yes, No);
+    type T (Well : Yes_No_T := Yes) is
+      record
+        case Well is
+          when Yes =>
+            Name : Name_T;
+          when No =>
+            Unique_Name : A_Record_T;
+        end case;
+      end record;
+  end;
+
+  type T is private;
+  function Create return T;
+  function Name (Of_Value : T) return Value_Name.T;
+private
+  type T is
+    record
+      One : Value_Name.T (Well => Value_Name.No);
+      Two : Value_Name.T (Well => Value_Name.Yes);
+    end record;
+end;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant-record.exp ./gdb/testsuite/gdb.ada/variant-record.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant-record.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant-record.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,32 @@
+# Copyright 2020-2021 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/>.
+
+load_lib "ada.exp"
+
+if { [skip_ada_tests] } { return -1 }
+
+standard_ada_testfile proc
+
+if {[gdb_compile_ada "${srcfile}" "${binfile}" executable debug] != ""} {
+  return -1
+}
+
+clean_restart ${testfile}
+
+set bp_location [gdb_get_line_number "STOP" ${testdir}/proc.adb]
+runto "proc.adb:$bp_location"
+
+gdb_test "print Value.Name(My_Value)" \
+    "= \\(well => yes, name => \"abcdefgh\"\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant_record_packed_array/foo.adb ./gdb/testsuite/gdb.ada/variant_record_packed_array/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant_record_packed_array/foo.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant_record_packed_array/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2009-2020 Free Software Foundation, Inc.
+--  Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant_record_packed_array/pck.adb ./gdb/testsuite/gdb.ada/variant_record_packed_array/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant_record_packed_array/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant_record_packed_array/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2009-2020 Free Software Foundation, Inc.
+--  Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant_record_packed_array/pck.ads ./gdb/testsuite/gdb.ada/variant_record_packed_array/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant_record_packed_array/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant_record_packed_array/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2009-2020 Free Software Foundation, Inc.
+--  Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant_record_packed_array.exp ./gdb/testsuite/gdb.ada/variant_record_packed_array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/variant_record_packed_array.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/variant_record_packed_array.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
@@ -40,7 +42,7 @@ gdb_test "print my_buffer'Address" \
     "= \\(system\\.address\\) $hex" \
     "print address"
 
-set test "print {foo.octal_buffer} ($)"
+set test "print {foo.octal_buffer}($)"
 gdb_test_multiple "$test" $test {
     -re "= \\(size => 8, buffer => \\(1, 2, 3, 4, 5, 6, 7, 0\\), length => 8\\)\[\r\n\]+$gdb_prompt $" {
         pass $test
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_rec_arr/foo_na09_042.adb ./gdb/testsuite/gdb.ada/var_rec_arr/foo_na09_042.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_rec_arr/foo_na09_042.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_rec_arr/foo_na09_042.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_rec_arr/pck.adb ./gdb/testsuite/gdb.ada/var_rec_arr/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_rec_arr/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_rec_arr/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_rec_arr/pck.ads ./gdb/testsuite/gdb.ada/var_rec_arr/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_rec_arr/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_rec_arr/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2015-2020 Free Software Foundation, Inc.
+--  Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_rec_arr.exp ./gdb/testsuite/gdb.ada/var_rec_arr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/var_rec_arr.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/var_rec_arr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -15,43 +15,64 @@
 
 load_lib "ada.exp"
 
-standard_ada_testfile foo_na09_042
-
-if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } {
-  return -1
-}
-
-clean_restart ${testfile}
-
-set bp_location [gdb_get_line_number "STOP" ${testdir}/foo_na09_042.adb]
-runto "foo_na09_042.adb:$bp_location"
-
-gdb_test "print a1" \
-         " = \\(\\(i => 0, s => \"\"\\), \\(i => 1, s => \"A\"\\), \\(i => 2, s => \"AB\"\\)\\)"
-
-gdb_test "print a1(1)" \
-         " = \\(i => 0, s => \"\"\\)"
+if { [skip_ada_tests] } { return -1 }
 
-gdb_test "print a1(2)" \
-         " = \\(i => 1, s => \"A\"\\)"
-
-gdb_test "print a1(3)" \
-         " = \\(i => 2, s => \"AB\"\\)"
-
-gdb_test "print a2" \
-         " = \\(\\(i => 2, s => \"AB\"\\), \\(i => 1, s => \"A\"\\), \\(i => 0, s => \"\"\\)\\)"
-
-gdb_test "print a2(1)" \
-         " = \\(i => 2, s => \"AB\"\\)"
-
-gdb_test "print a2(2)" \
-         " = \\(i => 1, s => \"A\"\\)"
+standard_ada_testfile foo_na09_042
 
-gdb_test "print a2(3)" \
-         " = \\(i => 0, s => \"\"\\)"
+# Note we don't test the "none" (no -fgnat-encodings option) scenario
+# here, because "all" and "minimal" cover the cases, and this way we
+# don't have to update the test when gnat changes its default.
+foreach_with_prefix scenario {all minimal} {
+    set flags [list debug additional_flags=-fgnat-encodings=$scenario]
+
+    if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $flags] != ""} {
+	return -1
+    }
+
+    clean_restart ${testfile}
+
+    set bp_location [gdb_get_line_number "STOP" ${testdir}/foo_na09_042.adb]
+    runto "foo_na09_042.adb:$bp_location"
+
+    gdb_test "print a1" \
+	" = \\(\\(i => 0, s => \"\"\\), \\(i => 1, s => \"A\"\\), \\(i => 2, s => \"AB\"\\)\\)"
+
+    gdb_test "print a1(1)" \
+	" = \\(i => 0, s => \"\"\\)"
+
+    gdb_test "print a1(2)" \
+	" = \\(i => 1, s => \"A\"\\)"
+
+    gdb_test "print a1(3)" \
+	" = \\(i => 2, s => \"AB\"\\)"
+
+    gdb_test "print a2" \
+	" = \\(\\(i => 2, s => \"AB\"\\), \\(i => 1, s => \"A\"\\), \\(i => 0, s => \"\"\\)\\)"
+
+    gdb_test "print a2(1)" \
+	" = \\(i => 2, s => \"AB\"\\)"
+
+    gdb_test "print a2(2)" \
+	" = \\(i => 1, s => \"A\"\\)"
+
+    gdb_test "print a2(3)" \
+	" = \\(i => 0, s => \"\"\\)"
+
+    # Note that the "access" is only printed when the gnat encodings
+    # are used.  This is due to how the encodings work -- the type
+    # doesn't actually have the "access", and so here the DWARF
+    # encoding is more correct.
+    if {$scenario == "all"} {
+	set ex [multi_line "type = record" \
+		    "    i: pck\\.small_type;" \
+		    "    s: access array \\((<>|1 \\.\\. i)\\) of character;" \
+		    "end record"]
+    } else {
+	set ex [multi_line "type = record" \
+		    "    i: pck\\.small_type;" \
+		    "    s: array \\((<>|1 \\.\\. i)\\) of character;" \
+		    "end record"]
+    }
 
-gdb_test "ptype a1(1)" \
-         [multi_line "type = record" \
-                     "    i: pck\\.small_type;" \
-                     "    s: access array \\((<>|1 \\.\\. i)\\) of character;" \
-                     "end record"]
+    gdb_test "ptype a1(1)" $ex
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/varsize_limit/pck.adb ./gdb/testsuite/gdb.ada/varsize_limit/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/varsize_limit/pck.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/varsize_limit/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/varsize_limit/pck.ads ./gdb/testsuite/gdb.ada/varsize_limit/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/varsize_limit/pck.ads	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/varsize_limit/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/varsize_limit/vsizelim.adb ./gdb/testsuite/gdb.ada/varsize_limit/vsizelim.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/varsize_limit/vsizelim.adb	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/varsize_limit/vsizelim.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/varsize_limit.exp ./gdb/testsuite/gdb.ada/varsize_limit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/varsize_limit.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/varsize_limit.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile vsizelim
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/vla/vla.adb ./gdb/testsuite/gdb.ada/vla/vla.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/vla/vla.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/vla/vla.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2019-2020 Free Software Foundation, Inc.
+--  Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/vla.exp ./gdb/testsuite/gdb.ada/vla.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/vla.exp	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/vla.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_arg/pck.adb ./gdb/testsuite/gdb.ada/watch_arg/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_arg/pck.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/watch_arg/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_arg/pck.ads ./gdb/testsuite/gdb.ada/watch_arg/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_arg/pck.ads	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/watch_arg/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_arg/watch.adb ./gdb/testsuite/gdb.ada/watch_arg/watch.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_arg/watch.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/watch_arg/watch.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2006-2020 Free Software Foundation, Inc.
+--  Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_arg.exp ./gdb/testsuite/gdb.ada/watch_arg.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_arg.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/watch_arg.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_minus_l/foo_ra10_006.adb ./gdb/testsuite/gdb.ada/watch_minus_l/foo_ra10_006.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_minus_l/foo_ra10_006.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/watch_minus_l/foo_ra10_006.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_minus_l/pck.adb ./gdb/testsuite/gdb.ada/watch_minus_l/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_minus_l/pck.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/watch_minus_l/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_minus_l/pck.ads ./gdb/testsuite/gdb.ada/watch_minus_l/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_minus_l/pck.ads	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/watch_minus_l/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2018-2020 Free Software Foundation, Inc.
+--  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_minus_l.exp ./gdb/testsuite/gdb.ada/watch_minus_l.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/watch_minus_l.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/watch_minus_l.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/whatis_array_val/foo.adb ./gdb/testsuite/gdb.ada/whatis_array_val/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/whatis_array_val/foo.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/whatis_array_val/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2012-2020 Free Software Foundation, Inc.
+--  Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/whatis_array_val/pck.adb ./gdb/testsuite/gdb.ada/whatis_array_val/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/whatis_array_val/pck.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/whatis_array_val/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/whatis_array_val/pck.ads ./gdb/testsuite/gdb.ada/whatis_array_val/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/whatis_array_val/pck.ads	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/whatis_array_val/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/whatis_array_val.exp ./gdb/testsuite/gdb.ada/whatis_array_val.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/whatis_array_val.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/whatis_array_val.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/widewide/foo.adb ./gdb/testsuite/gdb.ada/widewide/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/widewide/foo.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/widewide/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/widewide/pck.adb ./gdb/testsuite/gdb.ada/widewide/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/widewide/pck.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/widewide/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/widewide/pck.ads ./gdb/testsuite/gdb.ada/widewide/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/widewide/pck.ads	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/widewide/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2011-2020 Free Software Foundation, Inc.
+--  Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/widewide.exp ./gdb/testsuite/gdb.ada/widewide.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/widewide.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/widewide.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/win_fu_syms/foo.adb ./gdb/testsuite/gdb.ada/win_fu_syms/foo.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/win_fu_syms/foo.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/win_fu_syms/foo.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2013-2020 Free Software Foundation, Inc.
+--  Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/win_fu_syms/pck.adb ./gdb/testsuite/gdb.ada/win_fu_syms/pck.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/win_fu_syms/pck.adb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/win_fu_syms/pck.adb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/win_fu_syms/pck.ads ./gdb/testsuite/gdb.ada/win_fu_syms/pck.ads
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/win_fu_syms/pck.ads	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/win_fu_syms/pck.ads	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
---  Copyright 2007-2020 Free Software Foundation, Inc.
+--  Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/win_fu_syms.exp ./gdb/testsuite/gdb.ada/win_fu_syms.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.ada/win_fu_syms.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.ada/win_fu_syms.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "ada.exp"
 
+if { [skip_ada_tests] } { return -1 }
+
 standard_ada_testfile foo
 
 if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-bargs additional_flags=-shared additional_flags=-margs]] != "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-atomic-inst.c ./gdb/testsuite/gdb.arch/aarch64-atomic-inst.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-atomic-inst.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-atomic-inst.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-atomic-inst.exp ./gdb/testsuite/gdb.arch/aarch64-atomic-inst.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-atomic-inst.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-atomic-inst.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-brk-patterns.c ./gdb/testsuite/gdb.arch/aarch64-brk-patterns.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-brk-patterns.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-brk-patterns.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,31 @@
+/* This file is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main (void)
+{
+  /* Dummy instruction just so GDB doesn't stop at the first breakpoint
+     instruction.  */
+  __asm __volatile ("nop\n\t");
+
+  /* Multiple BRK instruction patterns.  */
+  __asm __volatile ("brk %0\n\t" ::"n"(0x0));
+  __asm __volatile ("brk %0\n\t" ::"n"(0x900 + 0xf));
+  __asm __volatile ("brk %0\n\t" ::"n"(0xf000));
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-brk-patterns.exp ./gdb/testsuite/gdb.arch/aarch64-brk-patterns.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-brk-patterns.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-brk-patterns.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,69 @@
+# Copyright 2020-2021 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 file is part of the gdb testsuite.
+
+# Test if GDB stops at various BRK instruction patterns inserted into
+# the code.
+
+if {![is_aarch64_target]} {
+    verbose "Skipping ${gdb_test_file_name}."
+    return
+}
+
+standard_testfile
+if {[prepare_for_testing "failed to prepare" ${testfile} ${srcfile}]} {
+    return -1
+}
+
+if {![runto_main]} {
+    untested "could not run to main"
+    return -1
+}
+
+# Number of expected SIGTRAP's to get.  This needs to be kept in sync
+# with the source file.
+set expected_traps 3
+set keep_going 1
+set count 0
+
+# Make sure we have a lower timeout in case GDB doesn't support a particular
+# instruction.  Such instruction will cause GDB to loop infinitely.
+while {$keep_going} {
+    # Continue to next program breakpoint instruction.
+    gdb_test_multiple "continue" "brk instruction $count causes SIGTRAP" {
+	-re "Program received signal SIGTRAP, Trace/breakpoint trap.*$gdb_prompt $" {
+	    pass $gdb_test_name
+
+	    # Insert a breakpoint at the program breakpoint instruction so
+	    # GDB can step over it.
+	    gdb_test "break" \
+		"Breakpoint $decimal at $hex: file .*$srcfile, line $decimal.*" \
+		"insert breakpoint at brk instruction $count"
+	    incr count
+	}
+	# We've reached the end of the test.
+	-re "exited normally.*$gdb_prompt $" {
+	    set keep_going 0
+	}
+	timeout {
+	    fail $gdb_test_name
+	    set keep_going 0
+	}
+    }
+}
+
+# Verify we stopped at the expected number of SIGTRAP's.
+gdb_assert {$count == $expected_traps} "all brk instructions triggered"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-dbreg-contents.c ./gdb/testsuite/gdb.arch/aarch64-dbreg-contents.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-dbreg-contents.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-dbreg-contents.c	2021-05-21 01:57:24.000000000 +0000
@@ -9,13 +9,17 @@
   freely.  */
 
 #define _GNU_SOURCE 1
+#include <stdlib.h>
+#include <unistd.h>
 #include <sys/ptrace.h>
+#include <asm/ptrace.h>
 #include <assert.h>
 #include <sys/wait.h>
 #include <stddef.h>
 #include <errno.h>
 #include <sys/uio.h>
 #include <elf.h>
+#include <error.h>
 
 static pid_t child;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-dbreg-contents.exp ./gdb/testsuite/gdb.arch/aarch64-dbreg-contents.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-dbreg-contents.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-dbreg-contents.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-fp.c ./gdb/testsuite/gdb.arch/aarch64-fp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-fp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-fp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-fp.exp ./gdb/testsuite/gdb.arch/aarch64-fp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-fp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-fp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -51,27 +51,27 @@ if {$endianness == "little"} {
     set reg_value1 "0x202122232425262728292a2b2c2d2e2f"
 }
 
-gdb_test "info registers q0" \
+gdb_test "p/x \$q0" \
     "q0.*{u = $reg_value0, s = $reg_value0.*" \
     "check register q0 value"
 
-gdb_test "info registers q1" \
+gdb_test "p/x \$q1" \
     "q1.*{u = $reg_value1, s = $reg_value1.*" \
     "check register q1 value"
 
-gdb_test "info registers v0" \
+gdb_test "p/x \$v0" \
     "v0.*$reg_value0}}}" \
     "check register v0 value"
 
-gdb_test "info registers v1" \
+gdb_test "p/x \$v1" \
     "v1.*$reg_value1}}}" \
     "check register v1 value"
 
-gdb_test "info registers fpsr" \
+gdb_test "p/x \$fpsr" \
     "fpsr.*0x\[0-9a-fA-F\].*" \
     "check register fpsr value"
 
-gdb_test "info registers fpcr" \
+gdb_test "p/x \$fpcr" \
     "fpcr.*0x\[0-9a-fA-F\].*" \
     "check register fpcr value"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-pauth.c ./gdb/testsuite/gdb.arch/aarch64-pauth.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-pauth.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-pauth.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-pauth.exp ./gdb/testsuite/gdb.arch/aarch64-pauth.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-pauth.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-pauth.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 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
@@ -40,4 +40,9 @@ gdb_breakpoint [ gdb_get_line_number "br
 gdb_continue_to_breakpoint "break here" ".*break here.*"
 
 # Ensure we can get a full backtrace, despite the address signing.
-gdb_test "bt" "^bt\r\n#0 +bar *\\(b=9\\) +at.*\r\n#1 +0x\[0-9a-f\]* +in +foo \\(a=5\\).*\r\n#2 +0x\[0-9a-f\]* +in +main \\(\\).*" "backtrace"
+gdb_test "bt" \
+    [multi_line \
+	"#0\[ \t\]+bar \\(b=9\\) at \[^\r\n\]+" \
+	"#1\[ \t\]+$hex (\\\[PAC\\\] )?in foo \\(a=5\\) at \[^\r\n\]+" \
+	"#2\[ \t\]+$hex (\\\[PAC\\\] )?in main \\(\\) at \[^\r\n\]+" ] \
+    "backtrace"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-prologue.c ./gdb/testsuite/gdb.arch/aarch64-prologue.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-prologue.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-prologue.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-prologue.exp ./gdb/testsuite/gdb.arch/aarch64-prologue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-prologue.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-prologue.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-sighandler-regs.c ./gdb/testsuite/gdb.arch/aarch64-sighandler-regs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-sighandler-regs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-sighandler-regs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-sighandler-regs.exp ./gdb/testsuite/gdb.arch/aarch64-sighandler-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-sighandler-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-sighandler-regs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -100,16 +100,18 @@ set mainframe [expr $handlerframe + 2]
 
 # Check register values
 
-check_regs x $xreg_nums $reg_handler_value_64 ""
-check_regs v $vreg_nums $reg_handler_value_128 ".q.u"
-check_regs q $vreg_nums $reg_handler_value_128 ".u"
-check_regs d $vreg_nums $reg_handler_value_64 ".u"
-check_regs s $vreg_nums $reg_handler_value_32 ".u"
-check_regs h $vreg_nums $reg_handler_value_16 ".u"
-check_regs b $vreg_nums $reg_handler_value_8 ".u"
-if { $sve_hw } {
-  check_regs z $vreg_nums $zreg_handler_value ".d.u"
-  check_regs p $preg_nums $preg_handler_value ""
+with_test_prefix "handler frame 1st" {
+  check_regs x $xreg_nums $reg_handler_value_64 ""
+  check_regs v $vreg_nums $reg_handler_value_128 ".q.u"
+  check_regs q $vreg_nums $reg_handler_value_128 ".u"
+  check_regs d $vreg_nums $reg_handler_value_64 ".u"
+  check_regs s $vreg_nums $reg_handler_value_32 ".u"
+  check_regs h $vreg_nums $reg_handler_value_16 ".u"
+  check_regs b $vreg_nums $reg_handler_value_8 ".u"
+  if { $sve_hw } {
+    check_regs z $vreg_nums $zreg_handler_value ".d.u"
+    check_regs p $preg_nums $preg_handler_value ""
+  }
 }
 
 # Switch to the frame for main(), and check register values
@@ -118,16 +120,19 @@ gdb_test "frame $mainframe" \
       "#$mainframe.*in main ().*" \
       "set to main frame"
 
-check_regs x $xreg_nums $reg_main_value_64 ""
-check_regs v $vreg_nums $reg_main_value_128 ".q.u"
-check_regs q $vreg_nums $reg_main_value_128 ".u"
-check_regs d $vreg_nums $reg_main_value_64 ".u"
-check_regs s $vreg_nums $reg_main_value_32 ".u"
-check_regs h $vreg_nums $reg_main_value_16 ".u"
-check_regs b $vreg_nums $reg_main_value_8 ".u"
-if { $sve_hw } {
-  check_regs z $vreg_nums $zreg_main_value ".d.u"
-  check_regs p $preg_nums $preg_main_value ""
+
+with_test_prefix "main frame" {
+  check_regs x $xreg_nums $reg_main_value_64 ""
+  check_regs v $vreg_nums $reg_main_value_128 ".q.u"
+  check_regs q $vreg_nums $reg_main_value_128 ".u"
+  check_regs d $vreg_nums $reg_main_value_64 ".u"
+  check_regs s $vreg_nums $reg_main_value_32 ".u"
+  check_regs h $vreg_nums $reg_main_value_16 ".u"
+  check_regs b $vreg_nums $reg_main_value_8 ".u"
+  if { $sve_hw } {
+    check_regs z $vreg_nums $zreg_main_value ".d.u"
+    check_regs p $preg_nums $preg_main_value ""
+  }
 }
 
 # Switch back to the signal handler frame, and check register values
@@ -136,14 +141,16 @@ gdb_test "frame $handlerframe" \
       "#$handlerframe.*handler \\\(sig=4\\\).*" \
       "set to signal handler frame"
 
-check_regs x $xreg_nums $reg_handler_value_64 ""
-check_regs v $vreg_nums $reg_handler_value_128 ".q.u"
-check_regs q $vreg_nums $reg_handler_value_128 ".u"
-check_regs d $vreg_nums $reg_handler_value_64 ".u"
-check_regs s $vreg_nums $reg_handler_value_32 ".u"
-check_regs h $vreg_nums $reg_handler_value_16 ".u"
-check_regs b $vreg_nums $reg_handler_value_8 ".u"
-if { $sve_hw } {
-  check_regs z $vreg_nums $zreg_handler_value ".d.u"
-  check_regs p $preg_nums $preg_handler_value ""
+with_test_prefix "handler frame 2nd" {
+  check_regs x $xreg_nums $reg_handler_value_64 ""
+  check_regs v $vreg_nums $reg_handler_value_128 ".q.u"
+  check_regs q $vreg_nums $reg_handler_value_128 ".u"
+  check_regs d $vreg_nums $reg_handler_value_64 ".u"
+  check_regs s $vreg_nums $reg_handler_value_32 ".u"
+  check_regs h $vreg_nums $reg_handler_value_16 ".u"
+  check_regs b $vreg_nums $reg_handler_value_8 ".u"
+  if { $sve_hw } {
+    check_regs z $vreg_nums $zreg_handler_value ".d.u"
+    check_regs p $preg_nums $preg_handler_value ""
+}
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-tagged-pointer.c ./gdb/testsuite/gdb.arch/aarch64-tagged-pointer.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-tagged-pointer.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-tagged-pointer.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-tagged-pointer.exp ./gdb/testsuite/gdb.arch/aarch64-tagged-pointer.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aarch64-tagged-pointer.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aarch64-tagged-pointer.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -35,17 +35,17 @@ gdb_continue_to_breakpoint "breakpoint h
 
 # Test that GDB manages caches correctly for tagged address.
 # Read from P2,
-gdb_test "x p2" "$hex:\[\t \]+0x000004d2"
+gdb_test "x p2" "$hex:\[\t \]+0x000004d2" "x p2"
 gdb_test_no_output "set variable i = 5678"
 # Test that *P2 is updated.
-gdb_test "x p2" "$hex:\[\t \]+0x0000162e"
+gdb_test "x p2" "$hex:\[\t \]+0x0000162e" "x p2, updated"
 
 # Read from SP1->i,
-gdb_test "print sp1->i" " = 1234"
+gdb_test "print sp1->i" " = 1234" "print SP1->i"
 # Write to SP2->i,
 gdb_test_no_output "set variable sp2->i = 5678"
 # Test that SP1->i is updated.
-gdb_test "print sp1->i" " = 5678"
+gdb_test "print sp1->i" " = 5678" "print SP1->i, updated"
 
 gdb_test "x/d &sp2->i" "$hex:\[\t \]+5678"
 gdb_test "x/d &sp1->i" "$hex:\[\t \]+5678"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aix-sighandle.c ./gdb/testsuite/gdb.arch/aix-sighandle.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aix-sighandle.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aix-sighandle.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aix-sighandle.exp ./gdb/testsuite/gdb.arch/aix-sighandle.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/aix-sighandle.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/aix-sighandle.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/alpha-step.c ./gdb/testsuite/gdb.arch/alpha-step.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/alpha-step.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/alpha-step.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2005-2020 Free Software Foundation, Inc.
+/* Copyright 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/alpha-step.exp ./gdb/testsuite/gdb.arch/alpha-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/alpha-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/alpha-step.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/altivec-abi.exp ./gdb/testsuite/gdb.arch/altivec-abi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/altivec-abi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/altivec-abi.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/altivec-regs.exp ./gdb/testsuite/gdb.arch/altivec-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/altivec-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/altivec-regs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-break-on-asm-line.exp ./gdb/testsuite/gdb.arch/amd64-break-on-asm-line.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-break-on-asm-line.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-break-on-asm-line.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-break-on-asm-line.S ./gdb/testsuite/gdb.arch/amd64-break-on-asm-line.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-break-on-asm-line.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-break-on-asm-line.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-byte.exp ./gdb/testsuite/gdb.arch/amd64-byte.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-byte.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-byte.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -61,73 +61,73 @@ set byte_regs(16) bh
 set byte_regs(17) ch
 set byte_regs(18) dh
 
-gdb_test "break [gdb_get_line_number "first breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set first breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "first breakpoint here"]
 gdb_continue_to_breakpoint "continue to first breakpoint in main"
 
-for { set r 1 } { $r <= 6  } { incr r } {
-    gdb_test "print/x \$$byte_regs($r)" \
-        ".. = 0x[format %x $r]1" \
-        "check contents of %$byte_regs($r)"
-}
-
-for { set r 1 } { $r <= 4  } { incr r } {
-    set h [expr $r + 14]
-    gdb_test "print/x \$$byte_regs($h)" \
-        ".. = 0x[format %x $r]2" \
-        "check contents of %$byte_regs($h)"
-}
-
-gdb_test "break [gdb_get_line_number "second breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set second breakpoint in main"
-gdb_continue_to_breakpoint "continue to second breakpoint in main"
-
-for { set r 7 } { $r <= 14  } { incr r } {
-    gdb_test "print/x \$$byte_regs($r)" \
-        ".. = 0x[format %x $r]1" \
-        "check contents of %$byte_regs($r)"
+with_test_prefix "at first bp" {
+    for { set r 1 } { $r <= 6  } { incr r } {
+	gdb_test "print/x \$$byte_regs($r)" \
+	    ".. = 0x[format %x $r]1" \
+	    "check contents of %$byte_regs($r)"
+    }
+
+    for { set r 1 } { $r <= 4  } { incr r } {
+	set h [expr $r + 14]
+	gdb_test "print/x \$$byte_regs($h)" \
+	    ".. = 0x[format %x $r]2" \
+	    "check contents of %$byte_regs($h)"
+    }
 }
 
-for { set r 1 } { $r <= 6  } { incr r } {
-  gdb_test "set var \$$byte_regs($r) = $r" "" "set %$byte_regs($r)"
-}
+gdb_breakpoint [gdb_get_line_number "second breakpoint here"]
+gdb_continue_to_breakpoint "continue to second breakpoint in main"
 
-for { set r 1 } { $r <= 4  } { incr r } {
-  set h [expr $r + 14]
-  gdb_test "set var \$$byte_regs($h) = $h" "" "set %$byte_regs($h)"
+with_test_prefix "at second bp" {
+    for { set r 7 } { $r <= 14  } { incr r } {
+	gdb_test "print/x \$$byte_regs($r)" \
+	    ".. = 0x[format %x $r]1" \
+	    "check contents of %$byte_regs($r)"
+    }
+
+    for { set r 1 } { $r <= 6  } { incr r } {
+	gdb_test "set var \$$byte_regs($r) = $r" "" "set %$byte_regs($r)"
+    }
+
+    for { set r 1 } { $r <= 4  } { incr r } {
+	set h [expr $r + 14]
+	gdb_test "set var \$$byte_regs($h) = $h" "" "set %$byte_regs($h)"
+    }
 }
 
-gdb_test "break [gdb_get_line_number "third breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set third breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "third breakpoint here"]
 gdb_continue_to_breakpoint "continue to third breakpoint in main"
 
-for { set r 1 } { $r <= 6  } { incr r } {
-    gdb_test "print \$$byte_regs($r)" \
-        ".. = $r" \
-        "check contents of %$byte_regs($r)"
-}
-
-for { set r 1 } { $r <= 4  } { incr r } {
-    set h [expr $r + 14]
-    gdb_test "print \$$byte_regs($h)" \
-        ".. = $h" \
-        "check contents of %$byte_regs($h)"
-}
-
-for { set r 7 } { $r <= 14  } { incr r } {
-  gdb_test "set var \$$byte_regs($r) = $r" "" "set %$byte_regs($r)"
-}
-
-gdb_test "break [gdb_get_line_number "forth breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set forth breakpoint in main"
-gdb_continue_to_breakpoint "continue to forth breakpoint in main"
-
-for { set r 7 } { $r <= 14  } { incr r } {
-    gdb_test "print \$$byte_regs($r)" \
-        ".. = $r" \
-        "check contents of %$byte_regs($r)"
+with_test_prefix "at third bp" {
+    for { set r 1 } { $r <= 6  } { incr r } {
+	gdb_test "print \$$byte_regs($r)" \
+	    ".. = $r" \
+	    "check contents of %$byte_regs($r)"
+    }
+
+    for { set r 1 } { $r <= 4  } { incr r } {
+	set h [expr $r + 14]
+	gdb_test "print \$$byte_regs($h)" \
+	    ".. = $h" \
+	    "check contents of %$byte_regs($h)"
+    }
+
+    for { set r 7 } { $r <= 14  } { incr r } {
+	gdb_test "set var \$$byte_regs($r) = $r" "" "set %$byte_regs($r)"
+    }
+}
+
+gdb_breakpoint [gdb_get_line_number "fourth breakpoint here"]
+gdb_continue_to_breakpoint "continue to fourth breakpoint in main"
+
+with_test_prefix "at fourth bp" {
+    for { set r 7 } { $r <= 14  } { incr r } {
+	gdb_test "print \$$byte_regs($r)" \
+	    ".. = $r" \
+	    "check contents of %$byte_regs($r)"
+    }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-disp-step-avx.exp ./gdb/testsuite/gdb.arch/amd64-disp-step-avx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-disp-step-avx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-disp-step-avx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -92,10 +92,16 @@ proc disp_step_func { func } {
     set value "0xdeadbeefd3adb33f"
     set_regs $value
 
+    # Turn "debug displaced" on to make sure a displaced step is actually
+    # executed, not an inline step.
+    gdb_test_no_output "set debug displaced on"
+
     gdb_test "continue" \
-	"Continuing.*Breakpoint.*, ${test_end_label} ().*" \
+	"Continuing.*displaced: displaced pc to.*Breakpoint.*, ${test_end_label} ().*" \
 	"continue to ${test_end_label}"
 
+    gdb_test_no_output "set debug displaced off"
+
     verify_regs $value
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-disp-step-avx.S ./gdb/testsuite/gdb.arch/amd64-disp-step-avx.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-disp-step-avx.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-disp-step-avx.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2009-2020 Free Software Foundation, Inc.
+/* Copyright 2009-2021 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
@@ -22,7 +22,12 @@
 
 	.global _start,main
 _start:
+	# The area at _start is used as the displaced stepping buffer.  Put
+	# more than enough nop instructions so that the instructions under test
+	# below don't conflict with it.
+	.rept 200
 	nop
+	.endr
 main:
         nop
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-disp-step.exp ./gdb/testsuite/gdb.arch/amd64-disp-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-disp-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-disp-step.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-disp-step.S ./gdb/testsuite/gdb.arch/amd64-disp-step.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-disp-step.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-disp-step.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2009-2020 Free Software Foundation, Inc.
+/* Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-dword.exp ./gdb/testsuite/gdb.arch/amd64-dword.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-dword.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-dword.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -58,56 +58,56 @@ set dword_regs(12) r13d
 set dword_regs(13) r14d
 set dword_regs(14) r15d
 
-gdb_test "break [gdb_get_line_number "first breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set first breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "first breakpoint here"]
 gdb_continue_to_breakpoint "continue to first breakpoint in main"
 
-for { set r 1 } { $r <= 6  } { incr r } {
-    set hexr [format %x $r]
-    gdb_test "print/x \$$dword_regs($r)" \
-	".. = 0x${hexr}4${hexr}3${hexr}2${hexr}1" \
-        "check contents of %$dword_regs($r)"
+with_test_prefix "at first bp" {
+    for { set r 1 } { $r <= 6  } { incr r } {
+	set hexr [format %x $r]
+	gdb_test "print/x \$$dword_regs($r)" \
+	    ".. = 0x${hexr}4${hexr}3${hexr}2${hexr}1" \
+	    "check contents of %$dword_regs($r)"
+    }
 }
 
-gdb_test "break [gdb_get_line_number "second breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set second breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "second breakpoint here"]
 gdb_continue_to_breakpoint "continue to second breakpoint in main"
 
-for { set r 7 } { $r <= $nr_regs  } { incr r } {
-    set hexr [format %x $r]
-    gdb_test "print/x \$$dword_regs($r)" \
-	".. = 0x${hexr}4${hexr}3${hexr}2${hexr}1" \
-        "check contents of %$dword_regs($r)"
+with_test_prefix "at second bp" {
+    for { set r 7 } { $r <= $nr_regs  } { incr r } {
+	set hexr [format %x $r]
+	gdb_test "print/x \$$dword_regs($r)" \
+	    ".. = 0x${hexr}4${hexr}3${hexr}2${hexr}1" \
+	    "check contents of %$dword_regs($r)"
+    }
+
+    for { set r 1 } { $r <= 6  } { incr r } {
+	gdb_test "set var \$$dword_regs($r) = $r" "" "set %$dword_regs($r)"
+    }
 }
 
-for { set r 1 } { $r <= 6  } { incr r } {
-  gdb_test "set var \$$dword_regs($r) = $r" "" "set %$dword_regs($r)"
-}
-
-gdb_test "break [gdb_get_line_number "third breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set third breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "third breakpoint here"]
 gdb_continue_to_breakpoint "continue to third breakpoint in main"
 
-for { set r 1 } { $r <= 6  } { incr r } {
-    gdb_test "print \$$dword_regs($r)" \
-        ".. = $r" \
-        "check contents of %$dword_regs($r)"
-}
-
-for { set r 7 } { $r <= $nr_regs  } { incr r } {
-  gdb_test "set var \$$dword_regs($r) = $r" "" "set %$dword_regs($r)"
-}
-
-gdb_test "break [gdb_get_line_number "forth breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set forth breakpoint in main"
-gdb_continue_to_breakpoint "continue to forth breakpoint in main"
-
-for { set r 7 } { $r <= $nr_regs  } { incr r } {
-    gdb_test "print \$$dword_regs($r)" \
-        ".. = $r" \
-        "check contents of %$dword_regs($r)"
+with_test_prefix "at third bp" {
+    for { set r 1 } { $r <= 6  } { incr r } {
+	gdb_test "print \$$dword_regs($r)" \
+	    ".. = $r" \
+	    "check contents of %$dword_regs($r)"
+    }
+
+    for { set r 7 } { $r <= $nr_regs  } { incr r } {
+	gdb_test "set var \$$dword_regs($r) = $r" "" "set %$dword_regs($r)"
+    }
+}
+
+gdb_breakpoint [gdb_get_line_number "fourth breakpoint here"]
+gdb_continue_to_breakpoint "continue to fourth breakpoint in main"
+
+with_test_prefix "at fourth bp" {
+    for { set r 7 } { $r <= $nr_regs  } { incr r } {
+	gdb_test "print \$$dword_regs($r)" \
+	    ".. = $r" \
+	    "check contents of %$dword_regs($r)"
+    }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value.cc ./gdb/testsuite/gdb.arch/amd64-entry-value.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value.cc	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value.exp ./gdb/testsuite/gdb.arch/amd64-entry-value.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-inline.c ./gdb/testsuite/gdb.arch/amd64-entry-value-inline.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-inline.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-inline.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-inline.exp ./gdb/testsuite/gdb.arch/amd64-entry-value-inline.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-inline.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-inline.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-inline.S ./gdb/testsuite/gdb.arch/amd64-entry-value-inline.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-inline.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-inline.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param.c ./gdb/testsuite/gdb.arch/amd64-entry-value-param.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-param.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.c ./gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp ./gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.S ./gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-param-dwarf5.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param.exp ./gdb/testsuite/gdb.arch/amd64-entry-value-param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-param.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-paramref.cc ./gdb/testsuite/gdb.arch/amd64-entry-value-paramref.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-paramref.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-paramref.cc	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-paramref.exp ./gdb/testsuite/gdb.arch/amd64-entry-value-paramref.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-paramref.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-paramref.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
@@ -20,7 +20,8 @@ if { ![istarget x86_64-*-* ] || ![is_lp6
     return
 }
 
-if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} "c++"] } {
+if { [prepare_for_testing_full "failed to prepare" \
+	  [list $testfile "c++" $srcfile {}]] } {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-paramref.S ./gdb/testsuite/gdb.arch/amd64-entry-value-paramref.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-paramref.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-paramref.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param.S ./gdb/testsuite/gdb.arch/amd64-entry-value-param.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value-param.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value-param.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value.s ./gdb/testsuite/gdb.arch/amd64-entry-value.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-entry-value.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-entry-value.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-eval.cc ./gdb/testsuite/gdb.arch/amd64-eval.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-eval.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-eval.cc	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-eval.exp ./gdb/testsuite/gdb.arch/amd64-eval.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-eval.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-eval.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-gs_base.c ./gdb/testsuite/gdb.arch/amd64-gs_base.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-gs_base.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-gs_base.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program for fs_base and gs_base.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-gs_base.exp ./gdb/testsuite/gdb.arch/amd64-gs_base.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-gs_base.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-gs_base.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-i386-address.exp ./gdb/testsuite/gdb.arch/amd64-i386-address.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-i386-address.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-i386-address.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-i386-address.S ./gdb/testsuite/gdb.arch/amd64-i386-address.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-i386-address.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-i386-address.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2009-2020 Free Software Foundation, Inc.
+/* Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-init-x87-values.exp ./gdb/testsuite/gdb.arch/amd64-init-x87-values.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-init-x87-values.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-init-x87-values.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-init-x87-values.S ./gdb/testsuite/gdb.arch/amd64-init-x87-values.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-init-x87-values.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-init-x87-values.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.c ./gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp ./gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.S ./gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-invalid-stack-middle.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-invalid-stack-top.c ./gdb/testsuite/gdb.arch/amd64-invalid-stack-top.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-invalid-stack-top.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-invalid-stack-top.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-invalid-stack-top.exp ./gdb/testsuite/gdb.arch/amd64-invalid-stack-top.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-invalid-stack-top.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-invalid-stack-top.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-optimout-repeat.c ./gdb/testsuite/gdb.arch/amd64-optimout-repeat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-optimout-repeat.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-optimout-repeat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-optimout-repeat.exp ./gdb/testsuite/gdb.arch/amd64-optimout-repeat.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-optimout-repeat.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-optimout-repeat.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-optimout-repeat.S ./gdb/testsuite/gdb.arch/amd64-optimout-repeat.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-optimout-repeat.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-optimout-repeat.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-osabi.exp ./gdb/testsuite/gdb.arch/amd64-osabi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-osabi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-osabi.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -24,7 +24,7 @@ if { ![istarget x86_64-*-* ] } {
 proc test_osabi_none { arch void_ptr_size long_double_size } {
     clean_restart
 
-    gdb_test "set architecture i386:x86-64" "The target architecture is assumed to be i386:x86-64"
+    gdb_test "set architecture i386:x86-64" "The target architecture is set to \"i386:x86-64\"\\."
     gdb_test_no_output "set osabi none" "set osabi none"
     gdb_test "print sizeof (void*)" " = 8"
     gdb_test "print sizeof (long double)" " = 16"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-prologue-skip.exp ./gdb/testsuite/gdb.arch/amd64-prologue-skip.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-prologue-skip.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-prologue-skip.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-prologue-skip.S ./gdb/testsuite/gdb.arch/amd64-prologue-skip.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-prologue-skip.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-prologue-skip.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-prologue-xmm.c ./gdb/testsuite/gdb.arch/amd64-prologue-xmm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-prologue-xmm.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-prologue-xmm.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp ./gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-prologue-xmm.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-prologue-xmm.s ./gdb/testsuite/gdb.arch/amd64-prologue-xmm.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-prologue-xmm.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-prologue-xmm.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
       	
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-pseudo.c ./gdb/testsuite/gdb.arch/amd64-pseudo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-pseudo.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-pseudo.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program for byte registers.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -118,7 +118,7 @@ main (int argc, char **argv)
 	    a temp to build %0.  */
 	 "r" (r8), "r" (r9), "r" (r10), "r" (r11),
 	 "r" (r12), "r" (r13), "r" (r14), "r" (r15));
-  puts ("Bye!"); /* forth breakpoint here */
+  puts ("Bye!"); /* fourth breakpoint here */
 
   return 0;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.exp ./gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.S ./gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-stap-optional-prefix.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-special-operands.exp ./gdb/testsuite/gdb.arch/amd64-stap-special-operands.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-special-operands.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-stap-special-operands.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -19,13 +19,15 @@ if { ![istarget "x86_64-*-*"] || ![is_lp
 }
 
 proc test_probe { probe_name } {
-    if { ![runto "-pstap $probe_name"] } {
-	fail "run to probe $probe_name"
-	return
-    }
+    with_test_prefix "probe: ${probe_name}" {
+	if { ![runto "-pstap $probe_name"] } {
+	    fail "run to probe $probe_name"
+	    return
+	}
 
-    gdb_test "print \$_probe_argc" " = 1"
-    gdb_test "print \$_probe_arg0" " = 10"
+	gdb_test "print \$_probe_argc" " = 1"
+	gdb_test "print \$_probe_arg0" " = 10"
+    }
 }
 
 standard_testfile amd64-stap-triplet.S
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-three-arg-disp.c ./gdb/testsuite/gdb.arch/amd64-stap-three-arg-disp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-three-arg-disp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-stap-three-arg-disp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-triplet.c ./gdb/testsuite/gdb.arch/amd64-stap-triplet.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-triplet.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-stap-triplet.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-triplet.S ./gdb/testsuite/gdb.arch/amd64-stap-triplet.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-triplet.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-stap-triplet.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.exp ./gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.S ./gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.cc ./gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.cc	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.S ./gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.cc ./gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.cc	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.S ./gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp ./gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-noret.c ./gdb/testsuite/gdb.arch/amd64-tailcall-noret.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-noret.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-noret.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp ./gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-noret.S ./gdb/testsuite/gdb.arch/amd64-tailcall-noret.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-noret.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-noret.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-ret.c ./gdb/testsuite/gdb.arch/amd64-tailcall-ret.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-ret.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-ret.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-ret.exp ./gdb/testsuite/gdb.arch/amd64-tailcall-ret.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-ret.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-ret.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
@@ -34,11 +34,11 @@ if ![runto_main] {
 }
 
 gdb_breakpoint "g"
-gdb_continue_to_breakpoint "g" ".* v = 2;"
+gdb_continue_to_breakpoint "first time in g" ".* v = 2;"
 
 gdb_test "return" { f \(\); /\* second \*/} "return" \
          {Make g return now\? \(y or n\) } "y"
 
-gdb_continue_to_breakpoint "g" ".* v = 2;"
+gdb_continue_to_breakpoint "second time in g" ".* v = 2;"
 
 gdb_test "finish" " v = 3;"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-ret.S ./gdb/testsuite/gdb.arch/amd64-tailcall-ret.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-ret.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-ret.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-self.c ./gdb/testsuite/gdb.arch/amd64-tailcall-self.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-self.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-self.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-self.exp ./gdb/testsuite/gdb.arch/amd64-tailcall-self.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-self.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-self.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-self.S ./gdb/testsuite/gdb.arch/amd64-tailcall-self.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-tailcall-self.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-tailcall-self.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-word.exp ./gdb/testsuite/gdb.arch/amd64-word.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/amd64-word.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/amd64-word.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -58,56 +58,56 @@ set word_regs(12) r13w
 set word_regs(13) r14w
 set word_regs(14) r15w
 
-gdb_test "break [gdb_get_line_number "first breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set first breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "first breakpoint here"]
 gdb_continue_to_breakpoint "continue to first breakpoint in main"
 
-for { set r 1 } { $r <= 6  } { incr r } {
-    set hexr [format %x $r]
-    gdb_test "print/x \$$word_regs($r)" \
-        ".. = 0x${hexr}2${hexr}1" \
-        "check contents of %$word_regs($r)"
+with_test_prefix "at first bp" {
+    for { set r 1 } { $r <= 6  } { incr r } {
+	set hexr [format %x $r]
+	gdb_test "print/x \$$word_regs($r)" \
+	    ".. = 0x${hexr}2${hexr}1" \
+	    "check contents of %$word_regs($r)"
+    }
 }
 
-gdb_test "break [gdb_get_line_number "second breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set second breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "second breakpoint here"]
 gdb_continue_to_breakpoint "continue to second breakpoint in main"
 
-for { set r 7 } { $r <= $nr_regs  } { incr r } {
-    set hexr [format %x $r]
-    gdb_test "print/x \$$word_regs($r)" \
-        ".. = 0x${hexr}2${hexr}1" \
-        "check contents of %$word_regs($r)"
+with_test_prefix "at second bp" {
+    for { set r 7 } { $r <= $nr_regs  } { incr r } {
+	set hexr [format %x $r]
+	gdb_test "print/x \$$word_regs($r)" \
+	    ".. = 0x${hexr}2${hexr}1" \
+	    "check contents of %$word_regs($r)"
+    }
+
+    for { set r 1 } { $r <= 6  } { incr r } {
+	gdb_test "set var \$$word_regs($r) = $r" "" "set %$word_regs($r)"
+    }
 }
 
-for { set r 1 } { $r <= 6  } { incr r } {
-  gdb_test "set var \$$word_regs($r) = $r" "" "set %$word_regs($r)"
-}
-
-gdb_test "break [gdb_get_line_number "third breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set third breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "third breakpoint here"]
 gdb_continue_to_breakpoint "continue to third breakpoint in main"
 
-for { set r 1 } { $r <= 6  } { incr r } {
-    gdb_test "print \$$word_regs($r)" \
-        ".. = $r" \
-        "check contents of %$word_regs($r)"
-}
-
-for { set r 7 } { $r <= $nr_regs  } { incr r } {
-  gdb_test "set var \$$word_regs($r) = $r" "" "set %$word_regs($r)"
-}
-
-gdb_test "break [gdb_get_line_number "forth breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set forth breakpoint in main"
-gdb_continue_to_breakpoint "continue to forth breakpoint in main"
-
-for { set r 7 } { $r <= $nr_regs  } { incr r } {
-    gdb_test "print \$$word_regs($r)" \
-        ".. = $r" \
-        "check contents of %$word_regs($r)"
+with_test_prefix "at third bp" {
+    for { set r 1 } { $r <= 6  } { incr r } {
+	gdb_test "print \$$word_regs($r)" \
+	    ".. = $r" \
+	    "check contents of %$word_regs($r)"
+    }
+
+    for { set r 7 } { $r <= $nr_regs  } { incr r } {
+	gdb_test "set var \$$word_regs($r) = $r" "" "set %$word_regs($r)"
+    }
+}
+
+gdb_breakpoint [gdb_get_line_number "fourth breakpoint here"]
+gdb_continue_to_breakpoint "continue to fourth breakpoint in main"
+
+with_test_prefix "at fourth bp" {
+    for { set r 7 } { $r <= $nr_regs  } { incr r } {
+	gdb_test "print \$$word_regs($r)" \
+	    ".. = $r" \
+	    "check contents of %$word_regs($r)"
+    }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-analyze-prologue.exp ./gdb/testsuite/gdb.arch/arc-analyze-prologue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-analyze-prologue.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arc-analyze-prologue.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-analyze-prologue.S ./gdb/testsuite/gdb.arch/arc-analyze-prologue.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-analyze-prologue.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arc-analyze-prologue.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 ; This testcase is part of GDB, the GNU debugger.
 
-; Copyright 2017-2020 Free Software Foundation, Inc.
+; Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-decode-insn.exp ./gdb/testsuite/gdb.arch/arc-decode-insn.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-decode-insn.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arc-decode-insn.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-decode-insn.S ./gdb/testsuite/gdb.arch/arc-decode-insn.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-decode-insn.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arc-decode-insn.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 ; This testcase is part of GDB, the GNU debugger.
 
-; Copyright 2017-2020 Free Software Foundation, Inc.
+; Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-tdesc-cpu.exp ./gdb/testsuite/gdb.arch/arc-tdesc-cpu.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-tdesc-cpu.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arc-tdesc-cpu.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml ./gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2017-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
@@ -9,7 +9,7 @@
 <target>
   <architecture>arc:HS</architecture>
 
-  <feature name="org.gnu.gdb.arc.core.v2">
+  <feature name="org.gnu.gdb.arc.core">
     <reg name="r0"  bitsize="32"/>
     <reg name="r1"  bitsize="32"/>
     <reg name="r2"  bitsize="32"/>
@@ -46,7 +46,7 @@
     <reg name="pcl" bitsize="32"/>
   </feature>
 
-  <feature name="org.gnu.gdb.arc.aux-minimal">
+  <feature name="org.gnu.gdb.arc.aux">
     <reg name="pc"       bitsize="32"/>
     <reg name="status32" bitsize="32"/>
   </feature>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-bl-branch-dest.c ./gdb/testsuite/gdb.arch/arm-bl-branch-dest.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-bl-branch-dest.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-bl-branch-dest.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-bl-branch-dest.exp ./gdb/testsuite/gdb.arch/arm-bl-branch-dest.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-bl-branch-dest.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-bl-branch-dest.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-cmse-sgstubs.c ./gdb/testsuite/gdb.arch/arm-cmse-sgstubs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-cmse-sgstubs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-cmse-sgstubs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-cmse-sgstubs.exp ./gdb/testsuite/gdb.arch/arm-cmse-sgstubs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-cmse-sgstubs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-cmse-sgstubs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-disassembler-options.exp ./gdb/testsuite/gdb.arch/arm-disassembler-options.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-disassembler-options.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-disassembler-options.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -31,7 +31,7 @@ set arch1 "armv2"
 set arch2 "armv5"
 
 gdb_test "set architecture $arch1" \
-	"The target architecture is assumed to be $arch1" \
+	"The target architecture is set to \"$arch1\"" \
 	"set architecture $arch1"
 
 gdb_test_no_output "set disassembler-options"
@@ -47,10 +47,10 @@ gdb_test "show disassembler-options" \
 # Change architectures and verify the disassembler options have been preserved.
 
 gdb_test "set architecture $arch2" \
-	"The target architecture is assumed to be $arch2" \
+	"The target architecture is set to \"$arch2\"" \
 	"set architecture $arch2"
 
 gdb_test "show disassembler-options" \
 	"The current disassembler options are '$option'.*" \
-	"show disassembler-options $option"
+	"show disassembler-options $option, modified architecture"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-disp-step.exp ./gdb/testsuite/gdb.arch/arm-disp-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-disp-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-disp-step.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -37,12 +37,12 @@ proc test_ldm_stm_pc {} {
 
     # Try to set breakpoint on test_ldm_stm_pc.  If symbol 'test_ldm_stm_pc'
     # can't be resolved, test case is compiled in Thumb mode, skip it.
-    gdb_test_multiple "break *test_ldm_stm_pc" "break test_ldm_stm_pc" {
+    gdb_test_multiple "break *test_ldm_stm_pc" "" {
 	-re "Breakpoint.*at.* file .*$srcfile, line.*\r\n$gdb_prompt $" {
-	    pass "break test_ldm_stm_pc"
+	    pass $gdb_test_name
 	}
 	-re "No symbol.*\r\n$gdb_prompt $" {
-	    pass "break test_ldm_stm_pc"
+	    pass $gdb_test_name
 	    return 0
 	}
     }
@@ -68,9 +68,9 @@ proc test_ldr_literal {} {
     global srcfile
     global gdb_prompt
 
-    gdb_test_multiple "break *test_ldr_literal" "break test_ldr_literal" {
+    gdb_test_multiple "break *test_ldr_literal" "" {
        -re "Breakpoint.*at.* file .*$srcfile, line.*\r\n$gdb_prompt $" {
-           pass "break test_ldr_literal"
+           pass $gdb_test_name
        }
        -re "No symbol.*\r\n$gdb_prompt $" {
            return 0
@@ -101,9 +101,9 @@ proc test_ldr_literal_16 {} {
     global srcfile
     global gdb_prompt
 
-    gdb_test_multiple "break *test_ldr_literal_16" "break test_ldr_literal_16" {
+    gdb_test_multiple "break *test_ldr_literal_16" "" {
 	-re "Breakpoint.*at.* file .*$srcfile, line.*\r\n$gdb_prompt $" {
-	    pass "break test_ldr_literal"
+	    pass $gdb_test_name
 	}
 	-re "No symbol.*\r\n$gdb_prompt $" {
 	    return 0
@@ -191,9 +191,9 @@ proc test_cbz_cbnz {} {
     global srcfile
     global gdb_prompt
 
-    gdb_test_multiple "break *test_zero_cbnz" "break test_zero_cbnz" {
+    gdb_test_multiple "break *test_zero_cbnz" "" {
 	-re "Breakpoint.*at.* file .*$srcfile, line.*\r\n$gdb_prompt $" {
-	    pass "break test_ldr_literal"
+	    pass $gdb_test_name
 	}
 	-re "No symbol.*\r\n$gdb_prompt $" {
 	    return 0
@@ -226,9 +226,9 @@ proc test_adr {} {
     global srcfile
     global gdb_prompt
 
-    gdb_test_multiple "break *test_adr" "break test_adr" {
+    gdb_test_multiple "break *test_adr" "" {
 	-re "Breakpoint.*at.* file .*$srcfile, line.*\r\n$gdb_prompt $" {
-	    pass "break test_adr"
+	    pass $gdb_test_name
 	}
 	-re "No symbol.*\r\n$gdb_prompt $" {
 	    return 0
@@ -249,9 +249,9 @@ proc test_adr_32bit {} {
     global srcfile
     global gdb_prompt
 
-    gdb_test_multiple "break *test_adr_32bit" "break test_adr_32bit" {
+    gdb_test_multiple "break *test_adr_32bit" "" {
 	-re "Breakpoint.*at.* file .*$srcfile, line.*\r\n$gdb_prompt $" {
-	    pass "break test_adr"
+	    pass $gdb_test_name
 	}
 	-re "No symbol.*\r\n$gdb_prompt $" {
 	    return 0
@@ -309,7 +309,7 @@ proc test_pop_pc {} {
 	"break test_pop_pc_3_right"
     gdb_test "break *test_pop_pc_3_wrong" \
 	"Breakpoint.*at.* file .*$srcfile, line.*" \
-	"break test_pop_pc_1_wrong"
+	"break test_pop_pc_3_wrong"
 
     gdb_continue_to_breakpoint "continue to test_pop_pc_1" \
 	".*b.*\{r1\, pc\}.*"
@@ -334,12 +334,12 @@ proc test_str_pc {} {
     global srcfile
     global gdb_prompt
 
-    gdb_test_multiple "break *test_str_pc" "break test_str_pc" {
+    gdb_test_multiple "break *test_str_pc" "" {
 	-re "Breakpoint.*at.* file .*$srcfile, line.*\r\n$gdb_prompt $" {
-	    pass "break test_str_pc"
+	    pass $gdb_test_name
 	}
 	-re "No symbol.*\r\n$gdb_prompt $" {
-	    pass "break test_str_pc"
+	    pass $gdb_test_name
 	    return
 	}
     }
@@ -371,10 +371,9 @@ proc test_str_pc {} {
 proc test_add_rn_pc {} {
     global srcfile gdb_prompt
 
-    set test "break test_add_rn_pc"
-    gdb_test_multiple "break *test_add_rn_pc" $test {
+    gdb_test_multiple "break *test_add_rn_pc" "" {
 	-re "Breakpoint.*at.* file .*$srcfile, line.*\r\n$gdb_prompt $" {
-	    pass $test
+	    pass $gdb_test_name
 	}
 	-re "No symbol.*\r\n$gdb_prompt $" {
 	    return
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-disp-step.S ./gdb/testsuite/gdb.arch/arm-disp-step.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-disp-step.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-disp-step.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-neon.c ./gdb/testsuite/gdb.arch/arm-neon.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-neon.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-neon.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-neon.exp ./gdb/testsuite/gdb.arch/arm-neon.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-neon.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-neon.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-single-step-kernel-helper.c ./gdb/testsuite/gdb.arch/arm-single-step-kernel-helper.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-single-step-kernel-helper.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-single-step-kernel-helper.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-single-step-kernel-helper.exp ./gdb/testsuite/gdb.arch/arm-single-step-kernel-helper.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/arm-single-step-kernel-helper.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/arm-single-step-kernel-helper.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/avr-flash-qualifier.c ./gdb/testsuite/gdb.arch/avr-flash-qualifier.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/avr-flash-qualifier.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/avr-flash-qualifier.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/avr-flash-qualifier.exp ./gdb/testsuite/gdb.arch/avr-flash-qualifier.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/avr-flash-qualifier.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/avr-flash-qualifier.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/disp-step-insn-reloc.exp ./gdb/testsuite/gdb.arch/disp-step-insn-reloc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/disp-step-insn-reloc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/disp-step-insn-reloc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/e500-abi.exp ./gdb/testsuite/gdb.arch/e500-abi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/e500-abi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/e500-abi.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/e500-prologue.c ./gdb/testsuite/gdb.arch/e500-prologue.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/e500-prologue.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/e500-prologue.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/e500-prologue.exp ./gdb/testsuite/gdb.arch/e500-prologue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/e500-prologue.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/e500-prologue.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/e500-regs.exp ./gdb/testsuite/gdb.arch/e500-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/e500-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/e500-regs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ftrace-insn-reloc.exp ./gdb/testsuite/gdb.arch/ftrace-insn-reloc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ftrace-insn-reloc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ftrace-insn-reloc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1291.exp ./gdb/testsuite/gdb.arch/gdb1291.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1291.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/gdb1291.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1291.s ./gdb/testsuite/gdb.arch/gdb1291.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1291.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/gdb1291.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2004-2020 Free Software Foundation, Inc.
+! Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1431.exp ./gdb/testsuite/gdb.arch/gdb1431.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1431.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/gdb1431.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1431.s ./gdb/testsuite/gdb.arch/gdb1431.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1431.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/gdb1431.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2004-2020 Free Software Foundation, Inc.
+! Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1558.c ./gdb/testsuite/gdb.arch/gdb1558.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1558.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/gdb1558.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2004-2020 Free Software Foundation, Inc.
+/* Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1558.exp ./gdb/testsuite/gdb.arch/gdb1558.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/gdb1558.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/gdb1558.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-avx512.c ./gdb/testsuite/gdb.arch/i386-avx512.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-avx512.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-avx512.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program for AVX 512 registers.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-avx512.exp ./gdb/testsuite/gdb.arch/i386-avx512.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-avx512.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-avx512.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-avx.c ./gdb/testsuite/gdb.arch/i386-avx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-avx.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-avx.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program for AVX registers.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-avx.exp ./gdb/testsuite/gdb.arch/i386-avx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-avx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-avx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -31,7 +31,7 @@ if [get_compiler_info] {
 }
 
 set additional_flags ""
-if [test_compiler_info gcc*] {
+if { [test_compiler_info gcc*] || [test_compiler_info clang*] } {
     set additional_flags "additional_flags=-mavx -I${srcdir}/.."
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-biarch-core.exp ./gdb/testsuite/gdb.arch/i386-biarch-core.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-biarch-core.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-biarch-core.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-bp_permanent.c ./gdb/testsuite/gdb.arch/i386-bp_permanent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-bp_permanent.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-bp_permanent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-bp_permanent.exp ./gdb/testsuite/gdb.arch/i386-bp_permanent.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-bp_permanent.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-bp_permanent.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-byte.exp ./gdb/testsuite/gdb.arch/i386-byte.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-byte.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-byte.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -51,38 +51,38 @@ set byte_regs(6) bh
 set byte_regs(7) ch
 set byte_regs(8) dh
 
-gdb_test "break [gdb_get_line_number "first breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set first breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "first breakpoint here"]
 gdb_continue_to_breakpoint "continue to first breakpoint in main"
 
-for { set r 1 } { $r <= 4  } { incr r } {
-    gdb_test "print/x \$$byte_regs($r)" \
-        ".. = 0x[format %x $r]1" \
-        "check contents of %$byte_regs($r)"
-    set h [expr $r + 4]
-    gdb_test "print/x \$$byte_regs($h)" \
-        ".. = 0x[format %x $r]2" \
-        "check contents of %$byte_regs($h)"
-}
-
-for { set r 1 } { $r <= 4  } { incr r } {
-  gdb_test "set var \$$byte_regs($r) = $r" "" "set %$byte_regs($r)"
-  set h [expr $r + 4]
-  gdb_test "set var \$$byte_regs($h) = $h" "" "set %$byte_regs($h)"
-}
-
-gdb_test "break [gdb_get_line_number "second breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set second breakpoint in main"
+with_test_prefix "at first bp" {
+    for { set r 1 } { $r <= 4  } { incr r } {
+	gdb_test "print/x \$$byte_regs($r)" \
+	    ".. = 0x[format %x $r]1" \
+	    "check contents of %$byte_regs($r)"
+	set h [expr $r + 4]
+	gdb_test "print/x \$$byte_regs($h)" \
+	    ".. = 0x[format %x $r]2" \
+	    "check contents of %$byte_regs($h)"
+    }
+
+    for { set r 1 } { $r <= 4  } { incr r } {
+	gdb_test "set var \$$byte_regs($r) = $r" "" "set %$byte_regs($r)"
+	set h [expr $r + 4]
+	gdb_test "set var \$$byte_regs($h) = $h" "" "set %$byte_regs($h)"
+    }
+}
+
+gdb_breakpoint [gdb_get_line_number "second breakpoint here"]
 gdb_continue_to_breakpoint "continue to second breakpoint in main"
 
-for { set r 1 } { $r <= 4  } { incr r } {
-    gdb_test "print \$$byte_regs($r)" \
-        ".. = $r" \
-        "check contents of %$byte_regs($r)"
-    set h [expr $r + 4]
-    gdb_test "print \$$byte_regs($h)" \
-        ".. = $h" \
-        "check contents of %$byte_regs($h)"
+with_test_prefix "at second bp" {
+    for { set r 1 } { $r <= 4  } { incr r } {
+	gdb_test "print \$$byte_regs($r)" \
+	    ".. = $r" \
+	    "check contents of %$byte_regs($r)"
+	set h [expr $r + 4]
+	gdb_test "print \$$byte_regs($h)" \
+	    ".. = $h" \
+	    "check contents of %$byte_regs($h)"
+    }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-cfi-notcurrent.exp ./gdb/testsuite/gdb.arch/i386-cfi-notcurrent.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-cfi-notcurrent.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-cfi-notcurrent.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-cfi-notcurrent.S ./gdb/testsuite/gdb.arch/i386-cfi-notcurrent.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-cfi-notcurrent.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-cfi-notcurrent.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-disp-step.exp ./gdb/testsuite/gdb.arch/i386-disp-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-disp-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-disp-step.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-disp-step.S ./gdb/testsuite/gdb.arch/i386-disp-step.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-disp-step.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-disp-step.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2009-2020 Free Software Foundation, Inc.
+/* Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-dr3-watch.c ./gdb/testsuite/gdb.arch/i386-dr3-watch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-dr3-watch.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-dr3-watch.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-dr3-watch.exp ./gdb/testsuite/gdb.arch/i386-dr3-watch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-dr3-watch.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-dr3-watch.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-float.exp ./gdb/testsuite/gdb.arch/i386-float.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-float.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-float.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-float.S ./gdb/testsuite/gdb.arch/i386-float.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-float.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-float.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2009-2020 Free Software Foundation, Inc.
+/* Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-gnu-cfi-asm.S ./gdb/testsuite/gdb.arch/i386-gnu-cfi-asm.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-gnu-cfi-asm.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-gnu-cfi-asm.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2007-2020 Free Software Foundation, Inc.
+/* Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-gnu-cfi.c ./gdb/testsuite/gdb.arch/i386-gnu-cfi.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-gnu-cfi.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-gnu-cfi.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Unwinding of DW_CFA_GNU_negative_offset_extended test program.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-gnu-cfi.exp ./gdb/testsuite/gdb.arch/i386-gnu-cfi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-gnu-cfi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-gnu-cfi.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx.c ./gdb/testsuite/gdb.arch/i386-mpx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-mpx.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program for MPX registers.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-call.c ./gdb/testsuite/gdb.arch/i386-mpx-call.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-call.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-mpx-call.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test for inferior function calls MPX context.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-call.exp ./gdb/testsuite/gdb.arch/i386-mpx-call.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-call.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-mpx-call.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 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
@@ -21,6 +21,10 @@ if { ![istarget i?86-*-*] && ![istarget
 
 standard_testfile
 
+if { ![supports_mpx_check_pointer_bounds] } {
+    return -1
+}
+
 set comp_flags "-mmpx -fcheck-pointer-bounds -I${srcdir}/../nat"
 
 if {[prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx.exp ./gdb/testsuite/gdb.arch/i386-mpx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-mpx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <walfred.tedeschi@intel.com>
 #
@@ -27,6 +27,10 @@ if { ![istarget i?86-*-*] && ![istarget
     return
 }
 
+if { ![supports_mpx_check_pointer_bounds] } {
+    return -1
+}
+
 set comp_flags "-mmpx -fcheck-pointer-bounds -I${srcdir}/../nat/"
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-map.c ./gdb/testsuite/gdb.arch/i386-mpx-map.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-map.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-mpx-map.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program for MPX map allocated bounds.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <walfred.tedeschi@intel.com>
 			      <mircea.gherzan@intel.com>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-map.exp ./gdb/testsuite/gdb.arch/i386-mpx-map.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-map.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-mpx-map.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <walfred.tedeschi@intel.com>,
 #                            <mircea.gherzan@intel.com>
@@ -23,6 +23,10 @@ if { ![istarget i?86-*-*] && ![istarget
 
 standard_testfile
 
+if { ![supports_mpx_check_pointer_bounds] } {
+    return -1
+}
+
 set comp_flags "-mmpx -fcheck-pointer-bounds -I${srcdir}/../nat/"
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-sigsegv.c ./gdb/testsuite/gdb.arch/i386-mpx-sigsegv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-sigsegv.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-mpx-sigsegv.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <walfred.tedeschi@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-sigsegv.exp ./gdb/testsuite/gdb.arch/i386-mpx-sigsegv.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-sigsegv.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-mpx-sigsegv.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <walfred.tedeschi@intel.com>
 #
@@ -23,6 +23,10 @@ if { ![istarget i?86-*-*] && ![istarget
 
 standard_testfile
 
+if { ![supports_mpx_check_pointer_bounds] } {
+    return -1
+}
+
 set comp_flags "-mmpx -fcheck-pointer-bounds -I${srcdir}/../nat/"
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-simple_segv.c ./gdb/testsuite/gdb.arch/i386-mpx-simple_segv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-simple_segv.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-mpx-simple_segv.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <walfred.tedeschi@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-simple_segv.exp ./gdb/testsuite/gdb.arch/i386-mpx-simple_segv.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-mpx-simple_segv.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-mpx-simple_segv.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp.  <walfred.tedeschi@intel.com>
 #
@@ -29,6 +29,10 @@ if { ![istarget i?86-*-*] && ![istarget
 
 standard_testfile
 
+if { ![supports_mpx_check_pointer_bounds] } {
+    return -1
+}
+
 set comp_flags "-mmpx -fcheck-pointer-bounds -I${srcdir}/../nat/"
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-permbkpt.exp ./gdb/testsuite/gdb.arch/i386-permbkpt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-permbkpt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-permbkpt.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-permbkpt.S ./gdb/testsuite/gdb.arch/i386-permbkpt.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-permbkpt.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-permbkpt.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2009-2020 Free Software Foundation, Inc.
+/* Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-pkru.c ./gdb/testsuite/gdb.arch/i386-pkru.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-pkru.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-pkru.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program for PKEYS registers.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-pkru.exp ./gdb/testsuite/gdb.arch/i386-pkru.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-pkru.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-pkru.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-prologue.c ./gdb/testsuite/gdb.arch/i386-prologue.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-prologue.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-prologue.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Unwinder test program.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-prologue.exp ./gdb/testsuite/gdb.arch/i386-prologue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-prologue.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-prologue.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.c ./gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,21 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int main (void)
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.exp ./gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-prologue-skip-cf-protection.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,65 @@
+# Copyright 2020-2021 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 skipping a prologue that was generated with gcc's -fcf-protection=full
+# (control flow protection) option.
+#
+# This option places an `endbr32`/`endbr64` instruction at the start of
+# all functions, which can interfere with prologue analysis.
+
+standard_testfile .c
+set binfile ${binfile}
+
+if { ![istarget x86_64-*-*] && ![istarget i?86-*-*] } {
+    verbose "Skipping ${testfile}."
+    return
+}
+
+if { ![supports_fcf_protection] } {
+    untested "-fcf-protection not supported"
+    return
+}
+
+set opts {debug additional_flags=-fcf-protection=full}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $opts] != "" } {
+    untested "failed to compile"
+    return
+}
+
+clean_restart ${binfile}
+
+# Get start address of function main.
+set main_addr [get_integer_valueof &main -1]
+gdb_assert {$main_addr != -1}
+
+set bp_addr -1
+
+# Put breakpoint on main, get the address where the breakpoint was installed.
+gdb_test_multiple "break main" "break on main, get address" {
+    -re -wrap "Breakpoint $decimal at ($hex).*" {
+	set bp_addr $expect_out(1,string)
+
+	# Convert to decimal.
+	set bp_addr [expr $bp_addr]
+
+	pass $gdb_test_name
+    }
+}
+
+if { $bp_addr != -1 } {
+    # Make sure some prologue was skipped.
+    gdb_assert {$bp_addr > $main_addr}
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-pseudo.c ./gdb/testsuite/gdb.arch/i386-pseudo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-pseudo.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-pseudo.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program for byte registers.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-signal.c ./gdb/testsuite/gdb.arch/i386-signal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-signal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-signal.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Unwinder test program for signal frames.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-signal.exp ./gdb/testsuite/gdb.arch/i386-signal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-signal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-signal.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 Free Software Foundation, Inc.
 
 # This file is part of the GDB testsuite.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-size.c ./gdb/testsuite/gdb.arch/i386-size.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-size.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-size.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Symbol size test program.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-size.exp ./gdb/testsuite/gdb.arch/i386-size.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-size.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-size.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-size-overlap.c ./gdb/testsuite/gdb.arch/i386-size-overlap.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-size-overlap.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-size-overlap.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Overlapping symbol sizes test program.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-size-overlap.exp ./gdb/testsuite/gdb.arch/i386-size-overlap.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-size-overlap.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-size-overlap.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-sse.c ./gdb/testsuite/gdb.arch/i386-sse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-sse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-sse.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program for SSE registers.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -51,7 +51,7 @@ v4sf_t data[] =
 int
 have_sse (void)
 {
-  int edx;
+  unsigned int edx;
 
   if (!x86_cpuid (1, NULL, NULL, NULL, &edx))
     return 0;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-sse.exp ./gdb/testsuite/gdb.arch/i386-sse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-sse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-sse.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
@@ -31,7 +31,7 @@ if [get_compiler_info] {
 }
 
 set additional_flags ""
-if [test_compiler_info gcc*] {
+if { [test_compiler_info gcc*] || [test_compiler_info clang*] } {
     set additional_flags "additional_flags=-msse -I${srcdir}/.."
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-sse-stack-align.c ./gdb/testsuite/gdb.arch/i386-sse-stack-align.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-sse-stack-align.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-sse-stack-align.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-sse-stack-align.exp ./gdb/testsuite/gdb.arch/i386-sse-stack-align.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-sse-stack-align.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-sse-stack-align.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-sse-stack-align.S ./gdb/testsuite/gdb.arch/i386-sse-stack-align.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-sse-stack-align.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-sse-stack-align.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.c ./gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.exp ./gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.S ./gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-stap-eval-lang-ada.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-unwind.c ./gdb/testsuite/gdb.arch/i386-unwind.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-unwind.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-unwind.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Unwinder test program.
 
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-unwind.exp ./gdb/testsuite/gdb.arch/i386-unwind.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-unwind.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-unwind.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-word.exp ./gdb/testsuite/gdb.arch/i386-word.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/i386-word.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/i386-word.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -47,28 +47,28 @@ set word_regs(2) bx
 set word_regs(3) cx
 set word_regs(4) dx
 
-gdb_test "break [gdb_get_line_number "first breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set first breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "first breakpoint here"]
 gdb_continue_to_breakpoint "continue to first breakpoint in main"
 
-for { set r 1 } { $r <= 4  } { incr r } {
-    gdb_test "print/x \$$word_regs($r)" \
-        ".. = 0x[format %x $r]2[format %x $r]1" \
-        "check contents of %$word_regs($r)"
+with_test_prefix "at first bp" {
+    for { set r 1 } { $r <= 4  } { incr r } {
+	gdb_test "print/x \$$word_regs($r)" \
+	    ".. = 0x[format %x $r]2[format %x $r]1" \
+	    "check contents of %$word_regs($r)"
+    }
+
+    for { set r 1 } { $r <= 4  } { incr r } {
+	gdb_test "set var \$$word_regs($r) = $r" "" "set %$word_regs($r)"
+    }
 }
 
-for { set r 1 } { $r <= 4  } { incr r } {
-  gdb_test "set var \$$word_regs($r) = $r" "" "set %$word_regs($r)"
-}
-
-gdb_test "break [gdb_get_line_number "second breakpoint here"]" \
-         "Breakpoint .* at .*${srcfile}.*" \
-         "set second breakpoint in main"
+gdb_breakpoint [gdb_get_line_number "second breakpoint here"]
 gdb_continue_to_breakpoint "continue to second breakpoint in main"
 
-for { set r 1 } { $r <= 4  } { incr r } {
-    gdb_test "print \$$word_regs($r)" \
-        ".. = $r" \
-        "check contents of %$word_regs($r)"
+with_test_prefix "at second bp" {
+    for { set r 1 } { $r <= 4  } { incr r } {
+	gdb_test "print \$$word_regs($r)" \
+	    ".. = $r" \
+	    "check contents of %$word_regs($r)"
+    }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.exp ./gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.S ./gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2009-2020 Free Software Foundation, Inc.
+/* Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/insn-reloc.c ./gdb/testsuite/gdb.arch/insn-reloc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/insn-reloc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/insn-reloc.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/iwmmxt-regs.c ./gdb/testsuite/gdb.arch/iwmmxt-regs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/iwmmxt-regs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/iwmmxt-regs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Register test program.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/iwmmxt-regs.exp ./gdb/testsuite/gdb.arch/iwmmxt-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/iwmmxt-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/iwmmxt-regs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks.exp ./gdb/testsuite/gdb.arch/mips16-thunks.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips16-thunks.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-inmain.c ./gdb/testsuite/gdb.arch/mips16-thunks-inmain.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-inmain.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips16-thunks-inmain.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-main.c ./gdb/testsuite/gdb.arch/mips16-thunks-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips16-thunks-main.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-sin.c ./gdb/testsuite/gdb.arch/mips16-thunks-sin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-sin.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips16-thunks-sin.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-sinfrob16.c ./gdb/testsuite/gdb.arch/mips16-thunks-sinfrob16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-sinfrob16.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips16-thunks-sinfrob16.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-sinfrob.c ./gdb/testsuite/gdb.arch/mips16-thunks-sinfrob.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-sinfrob.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips16-thunks-sinfrob.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-sinmain.c ./gdb/testsuite/gdb.arch/mips16-thunks-sinmain.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-sinmain.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips16-thunks-sinmain.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-sinmips16.c ./gdb/testsuite/gdb.arch/mips16-thunks-sinmips16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips16-thunks-sinmips16.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips16-thunks-sinmips16.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-disassembler-options.exp ./gdb/testsuite/gdb.arch/mips-disassembler-options.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-disassembler-options.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips-disassembler-options.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-disassembler-options.s ./gdb/testsuite/gdb.arch/mips-disassembler-options.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-disassembler-options.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips-disassembler-options.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 #  This test is part of GDB, the GNU debugger.
 #
-#  Copyright 2018-2020 Free Software Foundation, Inc.
+#  Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-fcr.c ./gdb/testsuite/gdb.arch/mips-fcr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-fcr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips-fcr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-fcr.exp ./gdb/testsuite/gdb.arch/mips-fcr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-fcr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips-fcr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-fpregset-core.c ./gdb/testsuite/gdb.arch/mips-fpregset-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-fpregset-core.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips-fpregset-core.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-fpregset-core.exp ./gdb/testsuite/gdb.arch/mips-fpregset-core.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-fpregset-core.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips-fpregset-core.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-octeon-bbit.exp ./gdb/testsuite/gdb.arch/mips-octeon-bbit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/mips-octeon-bbit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/mips-octeon-bbit.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/pa-nullify.exp ./gdb/testsuite/gdb.arch/pa-nullify.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/pa-nullify.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/pa-nullify.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-aix-prologue.c ./gdb/testsuite/gdb.arch/powerpc-aix-prologue.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-aix-prologue.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-aix-prologue.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-aix-prologue.exp ./gdb/testsuite/gdb.arch/powerpc-aix-prologue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-aix-prologue.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-aix-prologue.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec2.exp ./gdb/testsuite/gdb.arch/powerpc-altivec2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-altivec2.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec2.s ./gdb/testsuite/gdb.arch/powerpc-altivec2.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec2.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-altivec2.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec3.exp ./gdb/testsuite/gdb.arch/powerpc-altivec3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-altivec3.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec3.s ./gdb/testsuite/gdb.arch/powerpc-altivec3.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec3.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-altivec3.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec.exp ./gdb/testsuite/gdb.arch/powerpc-altivec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-altivec.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec.s ./gdb/testsuite/gdb.arch/powerpc-altivec.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-altivec.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-altivec.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-d128-regs.c ./gdb/testsuite/gdb.arch/powerpc-d128-regs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-d128-regs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-d128-regs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-d128-regs.exp ./gdb/testsuite/gdb.arch/powerpc-d128-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-d128-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-d128-regs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-disassembler-options.exp ./gdb/testsuite/gdb.arch/powerpc-disassembler-options.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-disassembler-options.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-disassembler-options.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -31,7 +31,7 @@ set arch1 "rs6000:6000"
 set arch2 "powerpc:common64"
 
 gdb_test "set architecture $arch1" \
-	"The target architecture is assumed to be $arch1" \
+	"The target architecture is set to \"$arch1\"" \
 	"set architecture $arch1"
 
 gdb_test_no_output "set disassembler-options"
@@ -47,7 +47,7 @@ gdb_test "show disassembler-options" \
 # Change architectures and verify the disassembler options have been preserved.
 
 gdb_test "set architecture $arch2" \
-	"The target architecture is assumed to be $arch2" \
+	"The target architecture is set to \"$arch2\"" \
 	"set architecture $arch2"
 
 gdb_test "show disassembler-options" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-fpscr-gcore.exp ./gdb/testsuite/gdb.arch/powerpc-fpscr-gcore.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-fpscr-gcore.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-fpscr-gcore.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-htm-regs.c ./gdb/testsuite/gdb.arch/powerpc-htm-regs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-htm-regs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-htm-regs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-htm-regs.exp ./gdb/testsuite/gdb.arch/powerpc-htm-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-htm-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-htm-regs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power7.exp ./gdb/testsuite/gdb.arch/powerpc-power7.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power7.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-power7.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power7.s ./gdb/testsuite/gdb.arch/powerpc-power7.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power7.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-power7.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power8.exp ./gdb/testsuite/gdb.arch/powerpc-power8.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power8.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-power8.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -66,10 +66,10 @@ func_check "tabortwc. 7,r8,r16"
 func_check "tabortdc. 20,r11,r10"
 func_check "tabortwci. 17,r10,-13"
 func_check "tabortdci. 29,r3,-5"
-func_check "tbegin. "
+func_check "tbegin."
 func_check "tcheck  cr7"
-func_check "tend.   "
-func_check "tend.   "
+func_check "tend."
+func_check "tend."
 func_check "tendall."
 func_check "tendall."
 func_check "treclaim. r24"
@@ -82,12 +82,12 @@ func_check "ori     r2,r2,0"
 func_check "nop"
 func_check "ori     r2,r2,0"
 func_check "rfebb   0"
-func_check "rfebb   "
-func_check "rfebb   "
-func_check "bctar-  12,4*cr5+gt"
-func_check "bctarl- 4,4*cr1+so"
-func_check "bctar+  12,4*cr3+lt"
-func_check "bctarl+ 4,eq"
+func_check "rfebb"
+func_check "rfebb"
+func_check "bgttar  cr5"
+func_check "bnstarl cr1"
+func_check "blttar+ cr3"
+func_check "bnetarl+"
 func_check "bctar   4,4*cr2+lt,1"
 func_check "bctarl  4,4*cr1+so,2"
 func_check "waitasec"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power8.s ./gdb/testsuite/gdb.arch/powerpc-power8.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power8.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-power8.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
@@ -41,10 +41,10 @@ func:
 	.long  0x4c000124    /* rfebb   0                  */
 	.long  0x4c000924    /* rfebb                      */
 	.long  0x4c000924    /* rfebb                      */
-	.long  0x4d950460    /* bctar-  12,4*cr5+gt        */
-	.long  0x4c870461    /* bctarl- 4,4*cr1+so         */
-	.long  0x4dac0460    /* bctar+  12,4*cr3+lt        */
-	.long  0x4ca20461    /* bctarl+ 4,eq               */
+	.long  0x4d950460    /* bgttar  cr5                */
+	.long  0x4c870461    /* bnstarl cr1                */
+	.long  0x4dec0460    /* blttar+ cr3                */
+	.long  0x4ce20461    /* bnetarl+                   */
 	.long  0x4c880c60    /* bctar   4,4*cr2+lt,1       */
 	.long  0x4c871461    /* bctarl  4,4*cr1+so,2       */
 	.long  0x7c00003c    /* waitasec                   */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power9.exp ./gdb/testsuite/gdb.arch/powerpc-power9.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power9.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-power9.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -409,11 +409,9 @@ func_check "stwat   r23,0,0"
 func_check "stwat   r23,r13,28"
 func_check "urfid"
 func_check "rmieg   r30"
-func_check "ldmx    r10,0,r15"
-func_check "ldmx    r10,r3,r15"
 func_check "stop"
-func_check "wait    "
-func_check "wait    "
+func_check "wait"
+func_check "wait"
 func_check "darn    r3,0"
 func_check "darn    r3,1"
 func_check "darn    r3,2"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power9.s ./gdb/testsuite/gdb.arch/powerpc-power9.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-power9.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-power9.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
@@ -366,8 +366,6 @@ func:
 	.long  0x7eede58c    /* stwat   r23,r13,28         */
 	.long  0x4c000264    /* urfid                      */
 	.long  0x7c00f6e4    /* rmieg   r30                */
-	.long  0x7d407a6a    /* ldmx    r10,0,r15          */
-	.long  0x7d437a6a    /* ldmx    r10,r3,r15         */
 	.long  0x4c0002e4    /* stop                       */
 	.long  0x7c00003c    /* wait                       */
 	.long  0x7c00003c    /* wait                       */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-ppr-dscr.c ./gdb/testsuite/gdb.arch/powerpc-ppr-dscr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-ppr-dscr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-ppr-dscr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-ppr-dscr.exp ./gdb/testsuite/gdb.arch/powerpc-ppr-dscr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-ppr-dscr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-ppr-dscr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-prologue.c ./gdb/testsuite/gdb.arch/powerpc-prologue.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-prologue.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-prologue.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Unwinder test program.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-prologue.exp ./gdb/testsuite/gdb.arch/powerpc-prologue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-prologue.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-prologue.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-prologue-frame.c ./gdb/testsuite/gdb.arch/powerpc-prologue-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-prologue-frame.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-prologue-frame.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-prologue-frame.exp ./gdb/testsuite/gdb.arch/powerpc-prologue-frame.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-prologue-frame.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-prologue-frame.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-prologue-frame.S ./gdb/testsuite/gdb.arch/powerpc-prologue-frame.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-prologue-frame.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-prologue-frame.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-stackless.exp ./gdb/testsuite/gdb.arch/powerpc-stackless.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-stackless.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-stackless.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-stackless.S ./gdb/testsuite/gdb.arch/powerpc-stackless.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-stackless.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-stackless.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-tar.c ./gdb/testsuite/gdb.arch/powerpc-tar.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-tar.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-tar.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-tar.exp ./gdb/testsuite/gdb.arch/powerpc-tar.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-tar.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-tar.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vector-regs.c ./gdb/testsuite/gdb.arch/powerpc-vector-regs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vector-regs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-vector-regs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vector-regs.exp ./gdb/testsuite/gdb.arch/powerpc-vector-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vector-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-vector-regs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx2.exp ./gdb/testsuite/gdb.arch/powerpc-vsx2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-vsx2.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx2.s ./gdb/testsuite/gdb.arch/powerpc-vsx2.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx2.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-vsx2.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx3.exp ./gdb/testsuite/gdb.arch/powerpc-vsx3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-vsx3.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx3.s ./gdb/testsuite/gdb.arch/powerpc-vsx3.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx3.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-vsx3.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx.exp ./gdb/testsuite/gdb.arch/powerpc-vsx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-vsx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx-gcore.exp ./gdb/testsuite/gdb.arch/powerpc-vsx-gcore.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx-gcore.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-vsx-gcore.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx.s ./gdb/testsuite/gdb.arch/powerpc-vsx.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/powerpc-vsx.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/powerpc-vsx.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp ./gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-atomic-inst.S ./gdb/testsuite/gdb.arch/ppc64-atomic-inst.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-atomic-inst.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc64-atomic-inst.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.c ./gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2017-2020 Free Software Foundation, Inc.
+/* Copyright 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.exp ./gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.S ./gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc64-isa207-atomic-inst.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp ./gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -47,10 +47,10 @@ gdb_load ${kofile}
 
 set test "show architecture"
 gdb_test_multiple $test $test {
-    -re "\r\nThe target architecture is set automatically \\(currently powerpc:common64\\)\r\n$gdb_prompt $" {
+    -re "\r\nThe target architecture is set to \"auto\" \\(currently \"powerpc:common64\"\\)\r\n$gdb_prompt $" {
 	pass $test
     }
-    -re "\r\nThe target architecture is set automatically \\(currently .*\\)\r\n$gdb_prompt $" {
+    -re "\r\nThe target architecture is set to \"auto\" \\(currently \".*\"\\)\r\n$gdb_prompt $" {
 	untested "powerpc:common64 is not supported"
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-dfp.c ./gdb/testsuite/gdb.arch/ppc-dfp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-dfp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc-dfp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2008-2020 Free Software Foundation, Inc.
+/* Copyright 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-dfp.exp ./gdb/testsuite/gdb.arch/ppc-dfp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-dfp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc-dfp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-fp.c ./gdb/testsuite/gdb.arch/ppc-fp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-fp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc-fp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2008-2020 Free Software Foundation, Inc.
+/* Copyright 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-fp.exp ./gdb/testsuite/gdb.arch/ppc-fp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-fp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc-fp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-longdouble.c ./gdb/testsuite/gdb.arch/ppc-longdouble.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-longdouble.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc-longdouble.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-longdouble.exp ./gdb/testsuite/gdb.arch/ppc-longdouble.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/ppc-longdouble.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/ppc-longdouble.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/pr25124.exp ./gdb/testsuite/gdb.arch/pr25124.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/pr25124.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/pr25124.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/pr25124.S ./gdb/testsuite/gdb.arch/pr25124.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/pr25124.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/pr25124.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Test proper disassembling of ARM thumb instructions when reloading a symbol
    file.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-bp-infcall.c ./gdb/testsuite/gdb.arch/riscv-bp-infcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-bp-infcall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-bp-infcall.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-bp-infcall.exp ./gdb/testsuite/gdb.arch/riscv-bp-infcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-bp-infcall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-bp-infcall.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-reg-aliases.c ./gdb/testsuite/gdb.arch/riscv-reg-aliases.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-reg-aliases.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-reg-aliases.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-reg-aliases.exp ./gdb/testsuite/gdb.arch/riscv-reg-aliases.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-reg-aliases.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-reg-aliases.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-loading-01.xml ./gdb/testsuite/gdb.arch/riscv-tdesc-loading-01.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-loading-01.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-tdesc-loading-01.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<target>
+  <architecture>riscv</architecture>
+  <feature name="org.gnu.gdb.riscv.cpu">
+    <reg name="zero" bitsize="64" type="int"/>
+    <reg name="ra" bitsize="64" type="code_ptr"/>
+    <reg name="sp" bitsize="64" type="data_ptr"/>
+    <reg name="gp" bitsize="64" type="data_ptr"/>
+    <reg name="tp" bitsize="64" type="data_ptr"/>
+    <reg name="t0" bitsize="64" type="int"/>
+    <reg name="t1" bitsize="64" type="int"/>
+    <reg name="t2" bitsize="64" type="int"/>
+    <reg name="fp" bitsize="64" type="data_ptr"/>
+    <reg name="s1" bitsize="64" type="int"/>
+    <reg name="a0" bitsize="64" type="int"/>
+    <reg name="a1" bitsize="64" type="int"/>
+    <reg name="a2" bitsize="64" type="int"/>
+    <reg name="a3" bitsize="64" type="int"/>
+    <reg name="a4" bitsize="64" type="int"/>
+    <reg name="a5" bitsize="64" type="int"/>
+    <reg name="a6" bitsize="64" type="int"/>
+    <reg name="a7" bitsize="64" type="int"/>
+    <reg name="s2" bitsize="64" type="int"/>
+    <reg name="s3" bitsize="64" type="int"/>
+    <reg name="s4" bitsize="64" type="int"/>
+    <reg name="s5" bitsize="64" type="int"/>
+    <reg name="s6" bitsize="64" type="int"/>
+    <reg name="s7" bitsize="64" type="int"/>
+    <reg name="s8" bitsize="64" type="int"/>
+    <reg name="s9" bitsize="64" type="int"/>
+    <reg name="s10" bitsize="64" type="int"/>
+    <reg name="s11" bitsize="64" type="int"/>
+    <reg name="t3" bitsize="64" type="int"/>
+    <reg name="t4" bitsize="64" type="int"/>
+    <reg name="t5" bitsize="64" type="int"/>
+    <reg name="t6" bitsize="64" type="int"/>
+    <reg name="pc" bitsize="64" type="code_ptr"/>
+  </feature>
+  <feature name="org.gnu.gdb.riscv.fpu">
+    <union id="riscv_double">
+      <field name="float" type="ieee_single"/>
+      <field name="double" type="ieee_double"/>
+    </union>
+    <reg name="ft0" bitsize="64" type="riscv_double"/>
+    <reg name="ft1" bitsize="64" type="riscv_double"/>
+    <reg name="ft2" bitsize="64" type="riscv_double"/>
+    <reg name="ft3" bitsize="64" type="riscv_double"/>
+    <reg name="ft4" bitsize="64" type="riscv_double"/>
+    <reg name="ft5" bitsize="64" type="riscv_double"/>
+    <reg name="ft6" bitsize="64" type="riscv_double"/>
+    <reg name="ft7" bitsize="64" type="riscv_double"/>
+    <reg name="fs0" bitsize="64" type="riscv_double"/>
+    <reg name="fs1" bitsize="64" type="riscv_double"/>
+    <reg name="fa0" bitsize="64" type="riscv_double"/>
+    <reg name="fa1" bitsize="64" type="riscv_double"/>
+    <reg name="fa2" bitsize="64" type="riscv_double"/>
+    <reg name="fa3" bitsize="64" type="riscv_double"/>
+    <reg name="fa4" bitsize="64" type="riscv_double"/>
+    <reg name="fa5" bitsize="64" type="riscv_double"/>
+    <reg name="fa6" bitsize="64" type="riscv_double"/>
+    <reg name="fa7" bitsize="64" type="riscv_double"/>
+    <reg name="fs2" bitsize="64" type="riscv_double"/>
+    <reg name="fs3" bitsize="64" type="riscv_double"/>
+    <reg name="fs4" bitsize="64" type="riscv_double"/>
+    <reg name="fs5" bitsize="64" type="riscv_double"/>
+    <reg name="fs6" bitsize="64" type="riscv_double"/>
+    <reg name="fs7" bitsize="64" type="riscv_double"/>
+    <reg name="fs8" bitsize="64" type="riscv_double"/>
+    <reg name="fs9" bitsize="64" type="riscv_double"/>
+    <reg name="fs10" bitsize="64" type="riscv_double"/>
+    <reg name="fs11" bitsize="64" type="riscv_double"/>
+    <reg name="ft8" bitsize="64" type="riscv_double"/>
+    <reg name="ft9" bitsize="64" type="riscv_double"/>
+    <reg name="ft10" bitsize="64" type="riscv_double"/>
+    <reg name="ft11" bitsize="64" type="riscv_double"/>
+  </feature>
+  <feature name="org.gnu.gdb.riscv.csr">
+    <reg name="fflags" bitsize="32" type="int"/>
+    <reg name="frm" bitsize="32" type="int"/>
+    <reg name="fcsr" bitsize="32" type="int"/>
+  </feature>
+</target>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-loading-02.xml ./gdb/testsuite/gdb.arch/riscv-tdesc-loading-02.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-loading-02.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-tdesc-loading-02.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<target>
+  <architecture>riscv</architecture>
+  <feature name="org.gnu.gdb.riscv.cpu">
+    <reg name="zero" bitsize="64" type="int"/>
+    <reg name="ra" bitsize="64" type="code_ptr"/>
+    <reg name="sp" bitsize="64" type="data_ptr"/>
+    <reg name="gp" bitsize="64" type="data_ptr"/>
+    <reg name="tp" bitsize="64" type="data_ptr"/>
+    <reg name="t0" bitsize="64" type="int"/>
+    <reg name="t1" bitsize="64" type="int"/>
+    <reg name="t2" bitsize="64" type="int"/>
+    <reg name="fp" bitsize="64" type="data_ptr"/>
+    <reg name="s1" bitsize="64" type="int"/>
+    <reg name="a0" bitsize="64" type="int"/>
+    <reg name="a1" bitsize="64" type="int"/>
+    <reg name="a2" bitsize="64" type="int"/>
+    <reg name="a3" bitsize="64" type="int"/>
+    <reg name="a4" bitsize="64" type="int"/>
+    <reg name="a5" bitsize="64" type="int"/>
+    <reg name="a6" bitsize="64" type="int"/>
+    <reg name="a7" bitsize="64" type="int"/>
+    <reg name="s2" bitsize="64" type="int"/>
+    <reg name="s3" bitsize="64" type="int"/>
+    <reg name="s4" bitsize="64" type="int"/>
+    <reg name="s5" bitsize="64" type="int"/>
+    <reg name="s6" bitsize="64" type="int"/>
+    <reg name="s7" bitsize="64" type="int"/>
+    <reg name="s8" bitsize="64" type="int"/>
+    <reg name="s9" bitsize="64" type="int"/>
+    <reg name="s10" bitsize="64" type="int"/>
+    <reg name="s11" bitsize="64" type="int"/>
+    <reg name="t3" bitsize="64" type="int"/>
+    <reg name="t4" bitsize="64" type="int"/>
+    <reg name="t5" bitsize="64" type="int"/>
+    <reg name="t6" bitsize="64" type="int"/>
+    <reg name="pc" bitsize="64" type="code_ptr"/>
+  </feature>
+  <feature name="org.gnu.gdb.riscv.fpu">
+    <union id="riscv_double">
+      <field name="float" type="ieee_single"/>
+      <field name="double" type="ieee_double"/>
+    </union>
+    <reg name="ft0" bitsize="64" type="riscv_double"/>
+    <reg name="ft1" bitsize="64" type="riscv_double"/>
+    <reg name="ft2" bitsize="64" type="riscv_double"/>
+    <reg name="ft3" bitsize="64" type="riscv_double"/>
+    <reg name="ft4" bitsize="64" type="riscv_double"/>
+    <reg name="ft5" bitsize="64" type="riscv_double"/>
+    <reg name="ft6" bitsize="64" type="riscv_double"/>
+    <reg name="ft7" bitsize="64" type="riscv_double"/>
+    <reg name="fs0" bitsize="64" type="riscv_double"/>
+    <reg name="fs1" bitsize="64" type="riscv_double"/>
+    <reg name="fa0" bitsize="64" type="riscv_double"/>
+    <reg name="fa1" bitsize="64" type="riscv_double"/>
+    <reg name="fa2" bitsize="64" type="riscv_double"/>
+    <reg name="fa3" bitsize="64" type="riscv_double"/>
+    <reg name="fa4" bitsize="64" type="riscv_double"/>
+    <reg name="fa5" bitsize="64" type="riscv_double"/>
+    <reg name="fa6" bitsize="64" type="riscv_double"/>
+    <reg name="fa7" bitsize="64" type="riscv_double"/>
+    <reg name="fs2" bitsize="64" type="riscv_double"/>
+    <reg name="fs3" bitsize="64" type="riscv_double"/>
+    <reg name="fs4" bitsize="64" type="riscv_double"/>
+    <reg name="fs5" bitsize="64" type="riscv_double"/>
+    <reg name="fs6" bitsize="64" type="riscv_double"/>
+    <reg name="fs7" bitsize="64" type="riscv_double"/>
+    <reg name="fs8" bitsize="64" type="riscv_double"/>
+    <reg name="fs9" bitsize="64" type="riscv_double"/>
+    <reg name="fs10" bitsize="64" type="riscv_double"/>
+    <reg name="fs11" bitsize="64" type="riscv_double"/>
+    <reg name="ft8" bitsize="64" type="riscv_double"/>
+    <reg name="ft9" bitsize="64" type="riscv_double"/>
+    <reg name="ft10" bitsize="64" type="riscv_double"/>
+    <reg name="ft11" bitsize="64" type="riscv_double"/>
+    <reg name="fflags" bitsize="32" type="int"/>
+    <reg name="frm" bitsize="32" type="int"/>
+    <reg name="fcsr" bitsize="32" type="int"/>
+  </feature>
+</target>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-loading-03.xml ./gdb/testsuite/gdb.arch/riscv-tdesc-loading-03.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-loading-03.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-tdesc-loading-03.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<target>
+  <architecture>riscv</architecture>
+  <feature name="org.gnu.gdb.riscv.cpu">
+    <reg name="zero" bitsize="32" type="int"/>
+    <reg name="ra" bitsize="32" type="code_ptr"/>
+    <reg name="sp" bitsize="32" type="data_ptr"/>
+    <reg name="gp" bitsize="32" type="data_ptr"/>
+    <reg name="tp" bitsize="32" type="data_ptr"/>
+    <reg name="t0" bitsize="32" type="int"/>
+    <reg name="t1" bitsize="32" type="int"/>
+    <reg name="t2" bitsize="32" type="int"/>
+    <reg name="fp" bitsize="32" type="data_ptr"/>
+    <reg name="s1" bitsize="32" type="int"/>
+    <reg name="a0" bitsize="32" type="int"/>
+    <reg name="a1" bitsize="32" type="int"/>
+    <reg name="a2" bitsize="32" type="int"/>
+    <reg name="a3" bitsize="32" type="int"/>
+    <reg name="a4" bitsize="32" type="int"/>
+    <reg name="a5" bitsize="32" type="int"/>
+    <reg name="a6" bitsize="32" type="int"/>
+    <reg name="a7" bitsize="32" type="int"/>
+    <reg name="s2" bitsize="32" type="int"/>
+    <reg name="s3" bitsize="32" type="int"/>
+    <reg name="s4" bitsize="32" type="int"/>
+    <reg name="s5" bitsize="32" type="int"/>
+    <reg name="s6" bitsize="32" type="int"/>
+    <reg name="s7" bitsize="32" type="int"/>
+    <reg name="s8" bitsize="32" type="int"/>
+    <reg name="s9" bitsize="32" type="int"/>
+    <reg name="s10" bitsize="32" type="int"/>
+    <reg name="s11" bitsize="32" type="int"/>
+    <reg name="t3" bitsize="32" type="int"/>
+    <reg name="t4" bitsize="32" type="int"/>
+    <reg name="t5" bitsize="32" type="int"/>
+    <reg name="t6" bitsize="32" type="int"/>
+    <reg name="pc" bitsize="32" type="code_ptr"/>
+  </feature>
+  <feature name="org.gnu.gdb.riscv.fpu">
+    <reg name="ft0" bitsize="32" type="float"/>
+    <reg name="ft1" bitsize="32" type="float"/>
+    <reg name="ft2" bitsize="32" type="float"/>
+    <reg name="ft3" bitsize="32" type="float"/>
+    <reg name="ft4" bitsize="32" type="float"/>
+    <reg name="ft5" bitsize="32" type="float"/>
+    <reg name="ft6" bitsize="32" type="float"/>
+    <reg name="ft7" bitsize="32" type="float"/>
+    <reg name="fs0" bitsize="32" type="float"/>
+    <reg name="fs1" bitsize="32" type="float"/>
+    <reg name="fa0" bitsize="32" type="float"/>
+    <reg name="fa1" bitsize="32" type="float"/>
+    <reg name="fa2" bitsize="32" type="float"/>
+    <reg name="fa3" bitsize="32" type="float"/>
+    <reg name="fa4" bitsize="32" type="float"/>
+    <reg name="fa5" bitsize="32" type="float"/>
+    <reg name="fa6" bitsize="32" type="float"/>
+    <reg name="fa7" bitsize="32" type="float"/>
+    <reg name="fs2" bitsize="32" type="float"/>
+    <reg name="fs3" bitsize="32" type="float"/>
+    <reg name="fs4" bitsize="32" type="float"/>
+    <reg name="fs5" bitsize="32" type="float"/>
+    <reg name="fs6" bitsize="32" type="float"/>
+    <reg name="fs7" bitsize="32" type="float"/>
+    <reg name="fs8" bitsize="32" type="float"/>
+    <reg name="fs9" bitsize="32" type="float"/>
+    <reg name="fs10" bitsize="32" type="float"/>
+    <reg name="fs11" bitsize="32" type="float"/>
+    <reg name="ft8" bitsize="32" type="float"/>
+    <reg name="ft9" bitsize="32" type="float"/>
+    <reg name="ft10" bitsize="32" type="float"/>
+    <reg name="ft11" bitsize="32" type="float"/>
+  </feature>
+  <feature name="org.gnu.gdb.riscv.csr">
+    <reg name="fflags" bitsize="32" type="int"/>
+    <reg name="frm" bitsize="32" type="int"/>
+    <reg name="fcsr" bitsize="32" type="int"/>
+  </feature>
+</target>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-loading-04.xml ./gdb/testsuite/gdb.arch/riscv-tdesc-loading-04.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-loading-04.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-tdesc-loading-04.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<target>
+  <architecture>riscv</architecture>
+  <feature name="org.gnu.gdb.riscv.cpu">
+    <reg name="zero" bitsize="32" type="int"/>
+    <reg name="ra" bitsize="32" type="code_ptr"/>
+    <reg name="sp" bitsize="32" type="data_ptr"/>
+    <reg name="gp" bitsize="32" type="data_ptr"/>
+    <reg name="tp" bitsize="32" type="data_ptr"/>
+    <reg name="t0" bitsize="32" type="int"/>
+    <reg name="t1" bitsize="32" type="int"/>
+    <reg name="t2" bitsize="32" type="int"/>
+    <reg name="fp" bitsize="32" type="data_ptr"/>
+    <reg name="s1" bitsize="32" type="int"/>
+    <reg name="a0" bitsize="32" type="int"/>
+    <reg name="a1" bitsize="32" type="int"/>
+    <reg name="a2" bitsize="32" type="int"/>
+    <reg name="a3" bitsize="32" type="int"/>
+    <reg name="a4" bitsize="32" type="int"/>
+    <reg name="a5" bitsize="32" type="int"/>
+    <reg name="a6" bitsize="32" type="int"/>
+    <reg name="a7" bitsize="32" type="int"/>
+    <reg name="s2" bitsize="32" type="int"/>
+    <reg name="s3" bitsize="32" type="int"/>
+    <reg name="s4" bitsize="32" type="int"/>
+    <reg name="s5" bitsize="32" type="int"/>
+    <reg name="s6" bitsize="32" type="int"/>
+    <reg name="s7" bitsize="32" type="int"/>
+    <reg name="s8" bitsize="32" type="int"/>
+    <reg name="s9" bitsize="32" type="int"/>
+    <reg name="s10" bitsize="32" type="int"/>
+    <reg name="s11" bitsize="32" type="int"/>
+    <reg name="t3" bitsize="32" type="int"/>
+    <reg name="t4" bitsize="32" type="int"/>
+    <reg name="t5" bitsize="32" type="int"/>
+    <reg name="t6" bitsize="32" type="int"/>
+    <reg name="pc" bitsize="32" type="code_ptr"/>
+  </feature>
+  <feature name="org.gnu.gdb.riscv.fpu">
+    <reg name="ft0" bitsize="32" type="float"/>
+    <reg name="ft1" bitsize="32" type="float"/>
+    <reg name="ft2" bitsize="32" type="float"/>
+    <reg name="ft3" bitsize="32" type="float"/>
+    <reg name="ft4" bitsize="32" type="float"/>
+    <reg name="ft5" bitsize="32" type="float"/>
+    <reg name="ft6" bitsize="32" type="float"/>
+    <reg name="ft7" bitsize="32" type="float"/>
+    <reg name="fs0" bitsize="32" type="float"/>
+    <reg name="fs1" bitsize="32" type="float"/>
+    <reg name="fa0" bitsize="32" type="float"/>
+    <reg name="fa1" bitsize="32" type="float"/>
+    <reg name="fa2" bitsize="32" type="float"/>
+    <reg name="fa3" bitsize="32" type="float"/>
+    <reg name="fa4" bitsize="32" type="float"/>
+    <reg name="fa5" bitsize="32" type="float"/>
+    <reg name="fa6" bitsize="32" type="float"/>
+    <reg name="fa7" bitsize="32" type="float"/>
+    <reg name="fs2" bitsize="32" type="float"/>
+    <reg name="fs3" bitsize="32" type="float"/>
+    <reg name="fs4" bitsize="32" type="float"/>
+    <reg name="fs5" bitsize="32" type="float"/>
+    <reg name="fs6" bitsize="32" type="float"/>
+    <reg name="fs7" bitsize="32" type="float"/>
+    <reg name="fs8" bitsize="32" type="float"/>
+    <reg name="fs9" bitsize="32" type="float"/>
+    <reg name="fs10" bitsize="32" type="float"/>
+    <reg name="fs11" bitsize="32" type="float"/>
+    <reg name="ft8" bitsize="32" type="float"/>
+    <reg name="ft9" bitsize="32" type="float"/>
+    <reg name="ft10" bitsize="32" type="float"/>
+    <reg name="ft11" bitsize="32" type="float"/>
+    <reg name="fflags" bitsize="32" type="int"/>
+    <reg name="frm" bitsize="32" type="int"/>
+    <reg name="fcsr" bitsize="32" type="int"/>
+  </feature>
+</target>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-loading.exp ./gdb/testsuite/gdb.arch/riscv-tdesc-loading.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-loading.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-tdesc-loading.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,39 @@
+# Copyright 2020-2021 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/>.
+
+# Check that we can load different RISC-V target descriptions.
+
+if {![istarget "riscv*-*-*"]} {
+    verbose "Skipping ${gdb_test_file_name}."
+    return
+}
+
+clean_restart
+
+# Run over every test XML file and check the target description can be
+# loaded.
+foreach filename [lsort [glob $srcdir/$subdir/riscv-tdesc-loading-*.xml]] {
+    if {[is_remote host]} {
+       set test_path [remote_download host $filename]
+    } else {
+       set test_path $filename
+    }
+
+    # Currently it is expected that all of the target descriptions in
+    # this test will load successfully, so we expect no additonal
+    # output from GDB.
+    gdb_test_no_output "set tdesc filename $test_path" \
+	"check [file tail $filename]"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-regs-32.xml ./gdb/testsuite/gdb.arch/riscv-tdesc-regs-32.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-regs-32.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-tdesc-regs-32.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<target>
+  <architecture>riscv</architecture>
+  <feature name="org.gnu.gdb.riscv.cpu">
+    <reg name="zero" bitsize="32" type="int"/>
+    <reg name="ra" bitsize="32" type="code_ptr"/>
+    <reg name="sp" bitsize="32" type="data_ptr"/>
+    <reg name="gp" bitsize="32" type="data_ptr"/>
+    <reg name="tp" bitsize="32" type="data_ptr"/>
+    <reg name="t0" bitsize="32" type="int"/>
+    <reg name="t1" bitsize="32" type="int"/>
+    <reg name="t2" bitsize="32" type="int"/>
+    <reg name="fp" bitsize="32" type="data_ptr"/>
+    <reg name="s1" bitsize="32" type="int"/>
+    <reg name="a0" bitsize="32" type="int"/>
+    <reg name="a1" bitsize="32" type="int"/>
+    <reg name="a2" bitsize="32" type="int"/>
+    <reg name="a3" bitsize="32" type="int"/>
+    <reg name="a4" bitsize="32" type="int"/>
+    <reg name="a5" bitsize="32" type="int"/>
+    <reg name="a6" bitsize="32" type="int"/>
+    <reg name="a7" bitsize="32" type="int"/>
+    <reg name="s2" bitsize="32" type="int"/>
+    <reg name="s3" bitsize="32" type="int"/>
+    <reg name="s4" bitsize="32" type="int"/>
+    <reg name="s5" bitsize="32" type="int"/>
+    <reg name="s6" bitsize="32" type="int"/>
+    <reg name="s7" bitsize="32" type="int"/>
+    <reg name="s8" bitsize="32" type="int"/>
+    <reg name="s9" bitsize="32" type="int"/>
+    <reg name="s10" bitsize="32" type="int"/>
+    <reg name="s11" bitsize="32" type="int"/>
+    <reg name="t3" bitsize="32" type="int"/>
+    <reg name="t4" bitsize="32" type="int"/>
+    <reg name="t5" bitsize="32" type="int"/>
+    <reg name="t6" bitsize="32" type="int"/>
+    <reg name="pc" bitsize="32" type="code_ptr"/>
+  </feature>
+  <feature name="org.gnu.gdb.riscv.fpu">
+    <reg name="ft0" bitsize="32" type="float"/>
+    <reg name="ft1" bitsize="32" type="float"/>
+    <reg name="ft2" bitsize="32" type="float"/>
+    <reg name="ft3" bitsize="32" type="float"/>
+    <reg name="ft4" bitsize="32" type="float"/>
+    <reg name="ft5" bitsize="32" type="float"/>
+    <reg name="ft6" bitsize="32" type="float"/>
+    <reg name="ft7" bitsize="32" type="float"/>
+    <reg name="fs0" bitsize="32" type="float"/>
+    <reg name="fs1" bitsize="32" type="float"/>
+    <reg name="fa0" bitsize="32" type="float"/>
+    <reg name="fa1" bitsize="32" type="float"/>
+    <reg name="fa2" bitsize="32" type="float"/>
+    <reg name="fa3" bitsize="32" type="float"/>
+    <reg name="fa4" bitsize="32" type="float"/>
+    <reg name="fa5" bitsize="32" type="float"/>
+    <reg name="fa6" bitsize="32" type="float"/>
+    <reg name="fa7" bitsize="32" type="float"/>
+    <reg name="fs2" bitsize="32" type="float"/>
+    <reg name="fs3" bitsize="32" type="float"/>
+    <reg name="fs4" bitsize="32" type="float"/>
+    <reg name="fs5" bitsize="32" type="float"/>
+    <reg name="fs6" bitsize="32" type="float"/>
+    <reg name="fs7" bitsize="32" type="float"/>
+    <reg name="fs8" bitsize="32" type="float"/>
+    <reg name="fs9" bitsize="32" type="float"/>
+    <reg name="fs10" bitsize="32" type="float"/>
+    <reg name="fs11" bitsize="32" type="float"/>
+    <reg name="ft8" bitsize="32" type="float"/>
+    <reg name="ft9" bitsize="32" type="float"/>
+    <reg name="ft10" bitsize="32" type="float"/>
+    <reg name="ft11" bitsize="32" type="float"/>
+    <!-- The following 3 registers are duplicated. -->
+    <reg name="fflags" bitsize="32" type="int"/>
+    <reg name="frm" bitsize="32" type="int"/>
+    <reg name="fcsr" bitsize="32" type="int"/>
+  </feature>
+  <feature name="org.gnu.gdb.riscv.csr">
+    <!-- The following 3 registers are duplicated. -->
+    <reg name="fflags" bitsize="32" type="int"/>
+    <reg name="frm" bitsize="32" type="int"/>
+    <reg name="fcsr" bitsize="32" type="int"/>
+    <!-- The following is a CSR unknown to GDB. -->
+    <reg name="unknown_csr" bitsize="32" type="int"/>
+    <!-- The following is now known as 'dscratch0' in the official
+         RISC-V spec, but GDB should NOT rename this register. -->
+    <reg name="dscratch" bitsize="32" type="int"/>
+  </feature>
+</target>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-regs-64.xml ./gdb/testsuite/gdb.arch/riscv-tdesc-regs-64.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-regs-64.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-tdesc-regs-64.xml	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<target>
+  <architecture>riscv</architecture>
+  <feature name="org.gnu.gdb.riscv.cpu">
+    <reg name="zero" bitsize="64" type="int"/>
+    <reg name="ra" bitsize="64" type="code_ptr"/>
+    <reg name="sp" bitsize="64" type="data_ptr"/>
+    <reg name="gp" bitsize="64" type="data_ptr"/>
+    <reg name="tp" bitsize="64" type="data_ptr"/>
+    <reg name="t0" bitsize="64" type="int"/>
+    <reg name="t1" bitsize="64" type="int"/>
+    <reg name="t2" bitsize="64" type="int"/>
+    <reg name="fp" bitsize="64" type="data_ptr"/>
+    <reg name="s1" bitsize="64" type="int"/>
+    <reg name="a0" bitsize="64" type="int"/>
+    <reg name="a1" bitsize="64" type="int"/>
+    <reg name="a2" bitsize="64" type="int"/>
+    <reg name="a3" bitsize="64" type="int"/>
+    <reg name="a4" bitsize="64" type="int"/>
+    <reg name="a5" bitsize="64" type="int"/>
+    <reg name="a6" bitsize="64" type="int"/>
+    <reg name="a7" bitsize="64" type="int"/>
+    <reg name="s2" bitsize="64" type="int"/>
+    <reg name="s3" bitsize="64" type="int"/>
+    <reg name="s4" bitsize="64" type="int"/>
+    <reg name="s5" bitsize="64" type="int"/>
+    <reg name="s6" bitsize="64" type="int"/>
+    <reg name="s7" bitsize="64" type="int"/>
+    <reg name="s8" bitsize="64" type="int"/>
+    <reg name="s9" bitsize="64" type="int"/>
+    <reg name="s10" bitsize="64" type="int"/>
+    <reg name="s11" bitsize="64" type="int"/>
+    <reg name="t3" bitsize="64" type="int"/>
+    <reg name="t4" bitsize="64" type="int"/>
+    <reg name="t5" bitsize="64" type="int"/>
+    <reg name="t6" bitsize="64" type="int"/>
+    <reg name="pc" bitsize="64" type="code_ptr"/>
+  </feature>
+  <feature name="org.gnu.gdb.riscv.fpu">
+    <union id="riscv_double">
+      <field name="float" type="ieee_single"/>
+      <field name="double" type="ieee_double"/>
+    </union>
+    <reg name="ft0" bitsize="64" type="riscv_double"/>
+    <reg name="ft1" bitsize="64" type="riscv_double"/>
+    <reg name="ft2" bitsize="64" type="riscv_double"/>
+    <reg name="ft3" bitsize="64" type="riscv_double"/>
+    <reg name="ft4" bitsize="64" type="riscv_double"/>
+    <reg name="ft5" bitsize="64" type="riscv_double"/>
+    <reg name="ft6" bitsize="64" type="riscv_double"/>
+    <reg name="ft7" bitsize="64" type="riscv_double"/>
+    <reg name="fs0" bitsize="64" type="riscv_double"/>
+    <reg name="fs1" bitsize="64" type="riscv_double"/>
+    <reg name="fa0" bitsize="64" type="riscv_double"/>
+    <reg name="fa1" bitsize="64" type="riscv_double"/>
+    <reg name="fa2" bitsize="64" type="riscv_double"/>
+    <reg name="fa3" bitsize="64" type="riscv_double"/>
+    <reg name="fa4" bitsize="64" type="riscv_double"/>
+    <reg name="fa5" bitsize="64" type="riscv_double"/>
+    <reg name="fa6" bitsize="64" type="riscv_double"/>
+    <reg name="fa7" bitsize="64" type="riscv_double"/>
+    <reg name="fs2" bitsize="64" type="riscv_double"/>
+    <reg name="fs3" bitsize="64" type="riscv_double"/>
+    <reg name="fs4" bitsize="64" type="riscv_double"/>
+    <reg name="fs5" bitsize="64" type="riscv_double"/>
+    <reg name="fs6" bitsize="64" type="riscv_double"/>
+    <reg name="fs7" bitsize="64" type="riscv_double"/>
+    <reg name="fs8" bitsize="64" type="riscv_double"/>
+    <reg name="fs9" bitsize="64" type="riscv_double"/>
+    <reg name="fs10" bitsize="64" type="riscv_double"/>
+    <reg name="fs11" bitsize="64" type="riscv_double"/>
+    <reg name="ft8" bitsize="64" type="riscv_double"/>
+    <reg name="ft9" bitsize="64" type="riscv_double"/>
+    <reg name="ft10" bitsize="64" type="riscv_double"/>
+    <reg name="ft11" bitsize="64" type="riscv_double"/>
+    <!-- The following 3 registers are duplicated. -->
+    <reg name="fflags" bitsize="32" type="int"/>
+    <reg name="frm" bitsize="32" type="int"/>
+    <reg name="fcsr" bitsize="32" type="int"/>
+  </feature>
+  <feature name="org.gnu.gdb.riscv.csr">
+    <!-- The following 3 registers are duplicated. -->
+    <reg name="fflags" bitsize="32" type="int"/>
+    <reg name="frm" bitsize="32" type="int"/>
+    <reg name="fcsr" bitsize="32" type="int"/>
+    <!-- The following is a CSR unknown to GDB. -->
+    <reg name="unknown_csr" bitsize="32" type="int"/>
+    <!-- The following is now known as 'dscratch0' in the official
+         RISC-V spec, but GDB should NOT rename this register. -->
+    <reg name="dscratch" bitsize="32" type="int"/>
+  </feature>
+</target>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-regs.c ./gdb/testsuite/gdb.arch/riscv-tdesc-regs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-regs.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-tdesc-regs.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main ()
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-regs.exp ./gdb/testsuite/gdb.arch/riscv-tdesc-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-tdesc-regs.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-tdesc-regs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,123 @@
+# Copyright 2020-2021 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/>.
+
+# Various tests to check which register names are available after
+# loading a new target description file, and which registers show up
+# in the output of the 'info registers' command.
+
+if {![istarget "riscv*-*-*"]} {
+    verbose "Skipping ${gdb_test_file_name}."
+    return
+}
+
+standard_testfile
+
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
+	  {debug quiet}] } {
+    unsupported "failed to compile"
+    return -1
+}
+
+if { ![runto_main] } {
+    untested "failed to runto main"
+    return -1
+}
+
+# First, figure out if we are 32-bit or 64-bit.
+set xlen [get_valueof "/d" "sizeof (\$a0)" 0]
+set flen [get_valueof "/d" "sizeof (\$fa0)" 0]
+
+gdb_assert { $xlen != 0 && $flen != 0 } "read xlen and flen"
+
+# We only handle 32-bit or 64-bit x-registers.
+if { $xlen != 4 && $xlen != 8 } {
+    unsupported "unknown x-register size"
+    return -1
+}
+
+# If FLEN is 1 then the target doesn't have floating point support
+# (the register $fa0 was not recognised).  Otherwise, we can only
+# proceed if FLEN equals XLEN, otherwise we'd need more test XML
+# files.
+if { $flen != 1 && $flen != $xlen } {
+    unsupport "unknown xlen/flen combination"
+    return -1
+}
+
+if { $xlen == 4 } {
+    set xml_tdesc "riscv-tdesc-regs-32.xml"
+} else {
+    set xml_tdesc "riscv-tdesc-regs-64.xml"
+}
+set xml_tdesc "${srcdir}/${subdir}/${xml_tdesc}"
+
+# Maybe copy the target over if we're remote testing.
+if {[is_remote host]} {
+    set remote_file [remote_download host $xml_tdesc]
+} else {
+    set remote_file $xml_tdesc
+}
+
+gdb_test_no_output "set tdesc filename $remote_file" \
+    "load the new target description"
+
+# Check that an alias for an unknown CSR will give a suitable error.
+gdb_test "info registers \$csr0" "Invalid register `csr0'"
+
+# Check we can access the dscratch register using either of its names.
+gdb_test "info registers \$dscratch0" "dscratch0\[ \t\]+.*"
+gdb_test "info registers \$dscratch" "dscratch\[ \t\]+.*"
+
+foreach rgroup {x_all all save restore} {
+    # Now use 'info registers all' to see how many times the floating
+    # point status registers show up in the output.
+    array set reg_counts {}
+    if {$rgroup == "x_all"} {
+	set test "info all-registers"
+    } else {
+	set test "info registers $rgroup"
+    }
+    gdb_test_multiple $test $test {
+	-re ".*info registers all\r\n" {
+	    verbose -log "Skip to first register"
+	    exp_continue
+	}
+	-re "^(\[^ \t\]+)\[ \t\]+\[^\r\n\]+\r\n" {
+	    set reg $expect_out(1,string)
+	    incr reg_counts($reg)
+	exp_continue
+	}
+	-re "^$gdb_prompt $" {
+	    # Done.
+	}
+    }
+
+    foreach reg {fflags frm fcsr unknown_csr dscratch} {
+	if { [info exists reg_counts($reg) ] } {
+	    set count $reg_counts($reg)
+	} else {
+	    set count 0
+	}
+	if {($reg == "unknown_csr" || $reg == "dscratch") \
+		&& $rgroup != "all" && $rgroup != "x_all"} {
+	    gdb_assert {$count == 0} \
+		"register $reg not seen in reggroup $rgroup"
+	} else {
+	    gdb_assert {$count == 1} \
+		"register $reg seen once in reggroup $rgroup"
+	}
+    }
+    array unset reg_counts
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-unwind-long-insn-6.s ./gdb/testsuite/gdb.arch/riscv-unwind-long-insn-6.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-unwind-long-insn-6.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-unwind-long-insn-6.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-unwind-long-insn-8.s ./gdb/testsuite/gdb.arch/riscv-unwind-long-insn-8.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-unwind-long-insn-8.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-unwind-long-insn-8.s	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c ./gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-unwind-long-insn.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-unwind-long-insn.exp ./gdb/testsuite/gdb.arch/riscv-unwind-long-insn.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/riscv-unwind-long-insn.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/riscv-unwind-long-insn.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-disassembler-options.exp ./gdb/testsuite/gdb.arch/s390-disassembler-options.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-disassembler-options.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/s390-disassembler-options.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -31,7 +31,7 @@ set arch1 "s390:64-bit"
 set arch2 "s390:31-bit"
 
 gdb_test "set architecture $arch1" \
-	"The target architecture is assumed to be $arch1" \
+	"The target architecture is set to \"$arch1\"" \
 	"set architecture $arch1"
 
 gdb_test_no_output "set disassembler-options"
@@ -47,7 +47,7 @@ gdb_test "show disassembler-options" \
 # Change architectures and verify the disassembler options have been preserved.
 
 gdb_test "set architecture $arch2" \
-	"The target architecture is assumed to be $arch2" \
+	"The target architecture is set to \"$arch2\"" \
 	"set architecture $arch2"
 
 gdb_test "show disassembler-options" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-multiarch.c ./gdb/testsuite/gdb.arch/s390-multiarch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-multiarch.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/s390-multiarch.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-multiarch.exp ./gdb/testsuite/gdb.arch/s390-multiarch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-multiarch.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/s390-multiarch.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-stackless.exp ./gdb/testsuite/gdb.arch/s390-stackless.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-stackless.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/s390-stackless.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-stackless.S ./gdb/testsuite/gdb.arch/s390-stackless.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-stackless.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/s390-stackless.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-tdbregs.c ./gdb/testsuite/gdb.arch/s390-tdbregs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-tdbregs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/s390-tdbregs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2008-2020 Free Software Foundation, Inc.
+/* Copyright 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-tdbregs.exp ./gdb/testsuite/gdb.arch/s390-tdbregs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-tdbregs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/s390-tdbregs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-vregs.exp ./gdb/testsuite/gdb.arch/s390-vregs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-vregs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/s390-vregs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-vregs.S ./gdb/testsuite/gdb.arch/s390-vregs.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/s390-vregs.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/s390-vregs.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc64-adi.c ./gdb/testsuite/gdb.arch/sparc64-adi.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc64-adi.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/sparc64-adi.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Application Data Integrity (ADI) test in sparc64.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc64-adi.exp ./gdb/testsuite/gdb.arch/sparc64-adi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc64-adi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/sparc64-adi.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc64-regs.exp ./gdb/testsuite/gdb.arch/sparc64-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc64-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/sparc64-regs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc64-regs.S ./gdb/testsuite/gdb.arch/sparc64-regs.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc64-regs.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/sparc64-regs.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2017-2020 Free Software Foundation, Inc.
+/* Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc-sysstep.c ./gdb/testsuite/gdb.arch/sparc-sysstep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc-sysstep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/sparc-sysstep.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test single-stepping system call instructions in sparc.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc-sysstep.exp ./gdb/testsuite/gdb.arch/sparc-sysstep.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/sparc-sysstep.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/sparc-sysstep.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb2-it.exp ./gdb/testsuite/gdb.arch/thumb2-it.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb2-it.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/thumb2-it.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb2-it.S ./gdb/testsuite/gdb.arch/thumb2-it.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb2-it.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/thumb2-it.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Thumb-2 IT blocks test program.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-bx-pc.exp ./gdb/testsuite/gdb.arch/thumb-bx-pc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-bx-pc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/thumb-bx-pc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-bx-pc.S ./gdb/testsuite/gdb.arch/thumb-bx-pc.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-bx-pc.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/thumb-bx-pc.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test PC adjustment from Thumb-mode "bx pc" instruction.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-prologue.c ./gdb/testsuite/gdb.arch/thumb-prologue.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-prologue.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/thumb-prologue.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Unwinder test program.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-prologue.exp ./gdb/testsuite/gdb.arch/thumb-prologue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-prologue.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/thumb-prologue.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
@@ -83,4 +83,4 @@ gdb_test "stepi 2" "in write_sp \\(\\)"
 
 gdb_test "backtrace 10" \
 	"#0\[ \t\]*$hex in write_sp .*\r\n#1\[ \t\]*$hex in switch_stack_to_other .*\r\n#2\[ \t\]*$hex in main.*" \
-	"backtrace in write_sp"
+	"backtrace in write_sp, 2nd stop"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-singlestep.exp ./gdb/testsuite/gdb.arch/thumb-singlestep.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-singlestep.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/thumb-singlestep.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-singlestep.S ./gdb/testsuite/gdb.arch/thumb-singlestep.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/thumb-singlestep.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/thumb-singlestep.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program with deliberately incorrect execution mode transition
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/vsx-regs.exp ./gdb/testsuite/gdb.arch/vsx-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/vsx-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/vsx-regs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/x86-avx512bf16.c ./gdb/testsuite/gdb.arch/x86-avx512bf16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/x86-avx512bf16.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/x86-avx512bf16.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,164 @@
+/* Test program for bfloat16 of AVX 512 registers.
+
+   Copyright 2020-2021 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/>.  */
+
+typedef struct
+{
+  float f[4];
+} v4sd_t;
+
+typedef struct
+{
+  float f[8];
+} v8sd_t;
+
+typedef struct
+{
+  float f[16];
+} v16sd_t;
+
+v4sd_t xmm_data[] =
+{
+  { {  0.0,  0.125,  0.25,  0.375 } },
+  { {  0.5,  0.625,  0.75,  0.875 } },
+  { {  1.0,  1.125,  1.25,  1.375 } },
+  { {  1.5,  1.625,  1.75,  1.875 } },
+  { {  2.0,  2.125,  2.25,  2.375 } },
+  { {  2.5,  2.625,  2.75,  2.875 } },
+  { {  3.0,  3.125,  3.25,  3.375 } },
+  { {  3.5,  3.625,  3.75,  3.875 } },
+};
+
+v8sd_t ymm_data[] =
+{
+  { {  8.0,  8.25,  8.5,  8.75,  9.0,  9.25,  9.5,  9.75 } },
+  { { 10.0, 10.25, 10.5, 10.75, 11.0, 11.25, 11.5, 11.75 } },
+  { { 12.0, 12.25, 12.5, 12.75, 13.0, 13.25, 13.5, 13.75 } },
+  { { 14.0, 14.25, 14.5, 14.75, 15.0, 15.25, 15.5, 15.75 } },
+  { { 16.0, 16.25, 16.5, 16.75, 17.0, 17.25, 17.5, 17.75 } },
+  { { 18.0, 18.25, 18.5, 18.75, 19.0, 19.25, 19.5, 19.75 } },
+  { { 20.0, 20.25, 20.5, 20.75, 21.0, 21.25, 21.5, 21.75 } },
+  { { 22.0, 22.25, 22.5, 22.75, 23.0, 23.25, 23.5, 23.75 } },
+};
+
+v16sd_t zmm_data[] =
+{
+  { { 20.0,  20.5,  21.0,  21.5,  22.0,  22.5,  23.0,  23.5,  24.0,  24.5,
+      25.0,  25.5,  26.0,  26.5,  27.0,  27.5 } },
+  { { 28.0,  28.5,  29.0,  29.5,  30.0,  30.5,  31.0,  31.5,  32.0,  32.5,
+      33.0,  33.5,  34.0,  34.5,  35.0,  35.5 } },
+  { { 36.0,  36.5,  37.0,  37.5,  38.0,  38.5,  39.0,  39.5,  40.0,  40.5,
+      41.0,  41.5,  42.0,  42.5,  43.0,  43.5 } },
+  { { 44.0,  44.5,  45.0,  45.5,  46.0,  46.5,  47.0,  47.5,  48.0,  48.5,
+      49.0,  49.5,  50.0,  50.5,  51.0,  51.5 } },
+  { { 52.0,  52.5,  53.0,  53.5,  54.0,  54.5,  55.0,  55.5,  56.0,  56.5,
+      57.0,  57.5,  58.0,  58.5,  59.0,  59.5 } },
+  { { 60.0,  60.5,  61.0,  61.5,  62.0,  62.5,  63.0,  63.5,  64.0,  64.5,
+      65.0,  65.5,  66.0,  66.5,  67.0,  67.5 } },
+  { { 68.0,  68.5,  69.0,  69.5,  70.0,  70.5,  71.0,  71.5,  72.0,  72.5,
+      73.0,  73.5,  74.0,  74.5,  75.0,  75.5 } },
+  { { 76.0,  76.5,  77.0,  77.5,  78.0,  78.5,  79.0,  79.5,  80.0,  80.5,
+      81.0,  81.5,  82.0,  82.5,  83.0,  83.5 } },
+};
+
+void
+move_data_to_xmm_reg (void)
+{
+  asm ("vmovups 0(%0), %%xmm0 \n\t"
+       "vmovups 16(%0), %%xmm1 \n\t"
+       "vmovups 32(%0), %%xmm2 \n\t"
+       "vmovups 48(%0), %%xmm3 \n\t"
+       "vmovups 64(%0), %%xmm4 \n\t"
+       "vmovups 80(%0), %%xmm5 \n\t"
+       "vmovups 96(%0), %%xmm6 \n\t"
+       "vmovups 112(%0), %%xmm7 \n\t"
+       : /* no output operands  */
+       : "r" (xmm_data));
+}
+
+void
+move_data_to_ymm_reg (void)
+{
+  asm ("vmovups 0(%0), %%ymm0 \n\t"
+       "vmovups 32(%0), %%ymm1 \n\t"
+       "vmovups 64(%0), %%ymm2 \n\t"
+       "vmovups 96(%0), %%ymm3 \n\t"
+       "vmovups 128(%0), %%ymm4 \n\t"
+       "vmovups 160(%0), %%ymm5 \n\t"
+       "vmovups 192(%0), %%ymm6 \n\t"
+       "vmovups 224(%0), %%ymm7 \n\t"
+       : /* no output operands  */
+       : "r" (ymm_data));
+}
+
+void
+move_data_to_zmm_reg (void)
+{
+  asm ("vmovups 0(%0), %%zmm0 \n\t"
+       "vmovups 64(%0), %%zmm1 \n\t"
+       "vmovups 128(%0), %%zmm2 \n\t"
+       "vmovups 192(%0), %%zmm3 \n\t"
+       "vmovups 256(%0), %%zmm4 \n\t"
+       "vmovups 320(%0), %%zmm5 \n\t"
+       "vmovups 384(%0), %%zmm6 \n\t"
+       "vmovups 448(%0), %%zmm7 \n\t"
+       : /* no output operands  */
+       : "r" (zmm_data));
+}
+
+void
+convert_xmm_from_float_to_bfloat16 (void)
+{
+  asm("vcvtne2ps2bf16 %xmm0, %xmm1, %xmm0");
+  asm("vcvtne2ps2bf16 %xmm6, %xmm7, %xmm6");
+}
+
+void
+convert_ymm_from_float_to_bfloat16 (void)
+{
+  asm("vcvtne2ps2bf16 %ymm0, %ymm1, %ymm0");
+  asm("vcvtne2ps2bf16 %ymm6, %ymm7, %ymm6");
+}
+
+void
+convert_zmm_from_float_to_bfloat16 (void)
+{
+  asm("vcvtne2ps2bf16 %zmm0, %zmm1, %zmm0");
+  asm("vcvtne2ps2bf16 %zmm6, %zmm7, %zmm6");
+}
+
+int
+main (int argc, char **argv)
+{
+  /* Move initial values from array to registers and read from XMM regs.  */
+  move_data_to_xmm_reg ();
+  convert_xmm_from_float_to_bfloat16 ();
+  asm ("nop"); /* first breakpoint here  */
+
+  /* Move initial values from array to registers and read from YMM regs.  */
+  move_data_to_ymm_reg ();
+  convert_ymm_from_float_to_bfloat16 ();
+  asm ("nop"); /* second breakpoint here  */
+
+  /* Move initial values from array to registers and read from ZMM regs.  */
+  move_data_to_zmm_reg ();
+  convert_zmm_from_float_to_bfloat16 ();
+  asm ("nop"); /* third breakpoint here  */
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/x86-avx512bf16.exp ./gdb/testsuite/gdb.arch/x86-avx512bf16.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.arch/x86-avx512bf16.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.arch/x86-avx512bf16.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,74 @@
+# Copyright 2020-2021 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/>.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-gdb@gnu.org
+
+# Test bfloat16 support in AVX512 registers
+
+if { [skip_avx512bf16_tests] } {
+    unsupported "target does not support AVX512BF16"
+    return -1
+}
+
+standard_testfile
+
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } {
+    return -1
+}
+
+if { ![runto_main] } {
+    unsupported "could not run to main"
+    return -1
+}
+
+# Test xmm
+set line1 [gdb_get_line_number "first breakpoint here"]
+gdb_breakpoint $line1
+gdb_continue_to_breakpoint "line1" ".*$srcfile:$line1.*"
+
+gdb_test "print \$xmm0.v8_bfloat16" \
+    "= \\{0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875\\}"
+
+gdb_test "print \$xmm6.v8_bfloat16" \
+    "= \\{3, 3.125, 3.25, 3.375, 3.5, 3.625, 3.75, 3.875\\}"
+
+# Test ymm
+set line2 [gdb_get_line_number "second breakpoint here"]
+gdb_breakpoint $line2
+gdb_continue_to_breakpoint "line2" ".*$srcfile:$line2.*"
+
+gdb_test "print \$ymm0.v16_bfloat16\[1\]" "= 8.25"
+gdb_test "print \$ymm6.v16_bfloat16\[1\]" "= 20.25"
+
+# Test zmm
+set line3 [gdb_get_line_number "third breakpoint here"]
+gdb_breakpoint $line3
+gdb_continue_to_breakpoint "line3" ".*$srcfile:$line3.*"
+
+gdb_test "print \$zmm0.v32_bfloat16\[1\]" "= 20.5"
+gdb_test "print \$zmm6.v32_bfloat16\[1\]" "= 68.5"
+
+# Test setting of bfloat values
+gdb_test_no_output "set var \$xmm0.v8_bfloat16\[0\] = 32.25" \
+    "set %xmm0.v8_bfloat16\[0\]"
+gdb_test_no_output "set var \$ymm8.v16_bfloat16\[1\] = 33.5" \
+    "set %ymm8.v16_bfloat16\[1\]"
+gdb_test_no_output "set var \$zmm16.v32_bfloat16\[2\] = 22.75" \
+    "set %zmm16.v32_bfloat16\[2\]"
+
+gdb_test "p \$xmm0.v8_bfloat16\[0\]" "= 32.25"
+gdb_test "p \$ymm8.v16_bfloat16\[1\]" "= 33.5"
+gdb_test "p \$zmm16.v32_bfloat16\[2\]" "= 22.75"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.asm/asm-source.exp ./gdb/testsuite/gdb.asm/asm-source.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.asm/asm-source.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.asm/asm-source.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/a2-run.exp ./gdb/testsuite/gdb.base/a2-run.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/a2-run.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/a2-run.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1988-2020 Free Software Foundation, Inc.
+#   Copyright 1988-2021 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
@@ -135,7 +135,7 @@ gdb_run_cmd 5
 gdb_test_stdio "" "120" "" "run \"$testfile\" with arg"
 
 # Run again with same arguments.
-gdb_run_cmd
+gdb_run_cmd 5
 
 setup_xfail "arm-*-coff"
 gdb_test_stdio "" "120" "" "run \"$testfile\" again with same args"
@@ -147,6 +147,15 @@ gdb_run_cmd
 
 gdb_test_stdio "" "usage:  factorial <number>" "" "run after setting args to nil"
 
+# The remaining tests pass inferior arguments through GDB, so doesn't
+# work with stub targets, where GDB connects to debug an already started
+# process.
+
+if [use_gdb_stub] {
+    verbose "Skipping rest of a2-run.exp because target is a stub."
+    return
+}
+
 # Use "set args" command to specify an argument and run again.
 gdb_test_no_output "set args 6"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/advance.c ./gdb/testsuite/gdb.base/advance.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/advance.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/advance.c	2021-05-21 01:57:24.000000000 +0000
@@ -16,9 +16,10 @@ int bar (int y)
 int func2 ()
 {
   x = 6;
+  return x;
 }
 
-void func()
+void func(int c)
 {
   x = x + 5;
   func2 ();
@@ -27,6 +28,7 @@ void func()
 int func3 ()
 {
   x = 4;
+  return x;
 }
 
 void marker1 ()
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/advance.exp ./gdb/testsuite/gdb.base/advance.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/advance.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/advance.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/advance-until-multiple-locations.cc ./gdb/testsuite/gdb.base/advance-until-multiple-locations.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/advance-until-multiple-locations.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/advance-until-multiple-locations.cc	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,61 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+static inline int __attribute__ ((always_inline))
+inline_func (int i)
+{
+  i++;          /* multiple locations here */
+  return i;
+}
+
+int global = 0;
+
+void
+ovld_func ()
+{
+  global = 1;
+}
+
+void
+ovld_func (int)
+{
+  global = 2;
+}
+
+/* This is a separate function so that we can test that "until" stops
+   at the caller.  */
+
+int
+test ()
+{
+  int i = 0;
+
+  i = inline_func (i);
+  i = inline_func (i);
+  i = inline_func (i);
+
+  ovld_func ();
+  ovld_func (0);
+
+  return 0;
+}
+
+int
+main ()
+{
+  return test ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/advance-until-multiple-locations.exp ./gdb/testsuite/gdb.base/advance-until-multiple-locations.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/advance-until-multiple-locations.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/advance-until-multiple-locations.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,142 @@
+# Copyright 2020-2021 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 'advance/until LINESPEC' where LINESPEC expands to multiple
+# locations.
+
+standard_testfile .cc
+
+if { [skip_cplus_tests] } { continue }
+
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
+	  {debug c++}] } {
+    return -1
+}
+
+set lineno [gdb_get_line_number "multiple locations here"]
+
+# advance/until to an inlined line number, which has been inlined
+# multiple times, when the program is stopped at the same inlined
+# function.
+proc_with_prefix until_advance_lineno_from_inlined {cmd} {
+    global lineno
+
+    if ![runto test] {
+	fail "can't run to test"
+	return
+    }
+
+    gdb_breakpoint $lineno
+    gdb_continue_to_breakpoint "break here"
+
+    set lineno2 [expr $lineno + 1]
+
+    gdb_test "$cmd $lineno2" \
+	"inline_func .* at .*:$lineno2.*return i.*" \
+	"$cmd line number"
+}
+
+# advance/until to a line number, which has been inlined multiple
+# times, when the program is stopped at a non-inlined function.
+
+proc_with_prefix until_advance_lineno_from_non_inlined {cmd} {
+    global lineno
+
+    if ![runto test] {
+	fail "can't run to test"
+	return
+    }
+
+    gdb_test "$cmd $lineno" \
+	"inline_func .* at .*:$lineno.*multiple locations here.*" \
+	"$cmd line number"
+}
+
+# Test advancing to an inlined function, which has been inlined
+# multiple times.
+
+proc_with_prefix until_advance_inline_func {cmd} {
+    global lineno
+
+    if ![runto test] {
+	fail "can't run to test"
+	return
+    }
+
+    gdb_test "$cmd inline_func" \
+	"inline_func .* at .*:$lineno.*multiple locations here.*"
+}
+
+# Test advancing to an overloaded function, which is another form of a
+# linespec expanding to multiple locations.  GDB will stop at the
+# first overload called.
+
+proc_with_prefix advance_overload {} {
+    global lineno
+
+    if ![runto test] {
+	fail "can't run to test"
+	return
+    }
+
+    # Test that advance stops at the first overload called by the
+    # program.
+
+    gdb_test "advance ovld_func" \
+	"ovld_func .* at .*global = 1.*" \
+	"first advance stops at ovld_func()"
+
+    # Now test that advance also stops at the other overload called by
+    # the program.
+
+    # Need to issue the advance twice, because advance also stops upon
+    # exit from the current stack frame.
+    gdb_test "advance ovld_func" \
+	"test \\(\\) at .*" \
+	"second advance stops at caller"
+
+    gdb_test "advance ovld_func" \
+	"ovld_func .* at .*global = 2.*" \
+	"third advance stops at ovld_func(int)"
+}
+
+# Test "until" to an overloaded function, which is another form of a
+# linespec expanding to multiple locations.  Unlike "advance", "until"
+# only stops if still in the same frame.  Since the overloaded
+# function is a different frame, the program should stop at the caller
+# frame instead.
+
+proc_with_prefix until_overload {} {
+    global lineno
+
+    if ![runto test] {
+	fail "can't run to test"
+	return
+    }
+
+    # ovld_func is a different frame, so it shouldn't cause a stop.
+    # Instead, the program should stop at the caller frame.
+    gdb_test "until ovld_func" \
+	"main \\(\\) at .*"
+}
+
+foreach_with_prefix cmd {"until" "advance"} {
+    until_advance_lineno_from_inlined $cmd
+    until_advance_lineno_from_non_inlined $cmd
+    until_advance_inline_func $cmd
+}
+
+advance_overload
+until_overload
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/alias.exp ./gdb/testsuite/gdb.base/alias.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/alias.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/alias.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Test the alias command.
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -56,7 +56,7 @@ test_abbrev_alias set6 "alias -a -- set6
 test_abbrev_alias -a "alias -a -- -a = set" 47
 
 gdb_test "alias set2=set" "already exists: set2"
-gdb_test "alias foo=bar" "Invalid command to alias to: bar"
+gdb_test "alias foo=bar" "Undefined command: \"bar\".  Try \"help\"."
 
 gdb_test_no_output "alias spe = set p elem"
 gdb_test_no_output "spe 50"
@@ -65,7 +65,7 @@ gdb_test "show print elements" "Limit .*
 gdb_test_no_output "alias set pr elms = set p elem"
 gdb_test_no_output "set pr elms 51"
 gdb_test "show print elements" "Limit .* is 51\[.\]" "verify set pr elms"
-gdb_test "help set print" "set print elms .*"
+gdb_test "help set print" "set print elements, set print elms, spe .*"
 
 # Verify alias command detects a non existing prefix.
 gdb_test "alias assigne imprime limite-elements = set print elements" \
@@ -116,3 +116,12 @@ gdb_test "show print elements" "Limit .*
 
 gdb_test_no_output "set print max-elements 57"
 gdb_test "show print elements" "Limit .* is 57\[.\]" "verify 57"
+
+# Test aliases having a common prefix.
+gdb_test_no_output "alias abcd  = backtrace"
+gdb_test_no_output "alias abcde = backtrace"
+gdb_test_no_output "alias fghij = backtrace"
+gdb_test_no_output "alias fghi  = backtrace"
+
+# Verify help aliases shows the user defined aliases
+gdb_test "help aliases" ".*abcd --.*.*abcde --.*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/align-c++.exp ./gdb/testsuite/gdb.base/align-c++.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/align-c++.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/align-c++.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,27 @@
+# Copyright 2018-2021 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 file is part of the gdb testsuite
+
+# This tests that C++11 alignof works in gdb, and that it agrees with the
+# compiler.
+
+# Only test C++ if we are able.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang c++
+
+source $srcdir/$subdir/align.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/align-c.exp ./gdb/testsuite/gdb.base/align-c.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/align-c.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/align-c.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,23 @@
+# Copyright 2018-2021 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 file is part of the gdb testsuite
+
+# This tests that C11 _Alignof works in gdb, and that it agrees with the
+# compiler.
+
+set lang c
+
+source $srcdir/$subdir/align.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/align.exp ./gdb/testsuite/gdb.base/align.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/align.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/align.exp	1970-01-01 00:00:00.000000000 +0000
@@ -1,199 +0,0 @@
-# Copyright 2018-2020 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 file is part of the gdb testsuite
-
-# This tests that C11 _Alignof and C++11 alignof works in gdb, and
-# that it agrees with the compiler.
-
-# Only test C++ if we are able.  Always use C.
-if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
-    set lang {c}
-} else {
-    set lang {c c++}
-}
-
-# The types we're going to test.
-
-set typelist {
-    char {unsigned char}
-    short {unsigned short}
-    int {unsigned int}
-    long {unsigned long}
-    {long long} {unsigned long long}
-    float
-    double {long double}
-}
-
-if {[has_int128_c]} {
-    # Note we don't check "unsigned __int128" yet because at least gcc
-    # canonicalizes the name to "__int128 unsigned", and there isn't a
-    # c-exp.y production for this.
-    # https://sourceware.org/bugzilla/show_bug.cgi?id=20991
-    lappend typelist __int128
-}
-
-# Build source file for testing alignment handling of language LANG.
-# Returns the name of the newly created source file.
-proc prepare_test_source_file { lang } {
-    global typelist
-
-    # Create the test file.
-
-    if { $lang == "c++" } {
-	set suffix "cpp"
-	set align_func "alignof"
-    } else {
-	set suffix "c"
-	set align_func "_Alignof"
-    }
-
-    set filename [standard_output_file "$lang/align.$suffix"]
-    set outfile [open $filename w]
-
-    # Prologue.
-    puts -nonewline $outfile "#define DEF(T,U) struct align_pair_ ## T ## _x_ ## U "
-    puts $outfile "{ T one; U two; }"
-    if { $lang == "c++" } {
-	puts -nonewline $outfile "#define DEF_WITH_1_STATIC(T,U) struct align_pair_static_ ## T ## _x_ ## U "
-	puts $outfile "{ static T one; U two; }"
-	puts -nonewline $outfile "#define DEF_WITH_2_STATIC(T,U) struct align_pair_static_ ## T ## _x_static_ ## U "
-	puts $outfile "{ static T one; static U two; }"
-    }
-    if { $lang == "c" } {
-	puts $outfile "unsigned a_void = ${align_func} (void);"
-    }
-
-    # First emit single items.
-    foreach type $typelist {
-	set utype [join [split $type] _]
-	if {$type != $utype} {
-	    puts $outfile "typedef $type $utype;"
-	}
-	puts $outfile "$type item_$utype;"
-	if { $lang == "c" } {
-	    puts $outfile "unsigned a_$utype\n  = ${align_func} ($type);"
-	}
-	set utype [join [split $type] _]
-    }
-
-    # Now emit all pairs.
-    foreach type $typelist {
-	set utype [join [split $type] _]
-	foreach inner $typelist {
-	    set uinner [join [split $inner] _]
-	    puts $outfile "DEF ($utype, $uinner);"
-	    set joined "${utype}_x_${uinner}"
-	    puts $outfile "struct align_pair_$joined item_${joined};"
-	    puts $outfile "unsigned a_${joined}"
-	    puts $outfile "  = ${align_func} (struct align_pair_${joined});"
-
-	    if { $lang == "c++" } {
-		puts $outfile "DEF_WITH_1_STATIC ($utype, $uinner);"
-		set joined "static_${utype}_x_${uinner}"
-		puts $outfile "struct align_pair_$joined item_${joined};"
-		puts $outfile "unsigned a_${joined}"
-		puts $outfile "  = ${align_func} (struct align_pair_${joined});"
-
-		puts $outfile "DEF_WITH_2_STATIC ($utype, $uinner);"
-		set joined "static_${utype}_x_static_${uinner}"
-		puts $outfile "struct align_pair_$joined item_${joined};"
-		puts $outfile "unsigned a_${joined}"
-		puts $outfile "  = ${align_func} (struct align_pair_${joined});"
-	    }
-	}
-    }
-
-    # Epilogue.
-    puts $outfile {
-	int main() {
-	    return 0;
-	}
-    }
-
-    close $outfile
-
-    return $filename
-}
-
-# Run the alignment test for the language LANG.
-proc run_alignment_test { lang } {
-    global testfile srcfile typelist
-    global subdir
-
-    set filename [prepare_test_source_file $lang]
-
-    set flags {debug}
-    if { "$lang" == "c++" } {
-	lappend flags "additional_flags=-std=c++11"
-    }
-    standard_testfile $filename
-    if {[prepare_for_testing "failed to prepare" "$lang/$testfile" $srcfile $flags]} {
-	return -1
-    }
-
-    if {![runto_main]} {
-	perror "test suppressed"
-	return
-    }
-
-    if { $lang == "c++" } {
-	set align_func "alignof"
-    } else {
-	set align_func "_Alignof"
-    }
-
-    foreach type $typelist {
-	set utype [join [split $type] _]
-	if { $lang == "c" } {
-	    set expected [get_integer_valueof a_$utype 0]
-	    gdb_test "print ${align_func}($type)" " = $expected"
-	}
-
-	foreach inner $typelist {
-	    set uinner [join [split $inner] _]
-	    set expected [get_integer_valueof a_${utype}_x_${uinner} 0]
-	    gdb_test "print ${align_func}(struct align_pair_${utype}_x_${uinner})" \
-		" = $expected"
-
-	    if { $lang == "c++" } {
-		set expected [get_integer_valueof a_static_${utype}_x_${uinner} 0]
-		gdb_test "print ${align_func}(struct align_pair_static_${utype}_x_${uinner})" \
-		    " = $expected"
-
-		set expected [get_integer_valueof a_static_${utype}_x_static_${uinner} 0]
-		gdb_test "print ${align_func}(struct align_pair_static_${utype}_x_static_${uinner})" \
-		    " = $expected"
-	    }
-	}
-    }
-
-    if { $lang == "c" } {
-	set expected [get_integer_valueof a_void 0]
-	gdb_test "print ${align_func}(void)" " = $expected"
-    }
-}
-
-# Create nested 'c' and 'c++' directories within this tests directory.
-foreach l $lang {
-    set dir "$l"
-    remote_exec host "rm -rf [standard_output_file ${dir}]"
-    remote_exec host "mkdir -p [standard_output_file ${dir}]"
-}
-
-# Now run the test for each language.
-foreach_with_prefix l $lang {
-    run_alignment_test $l
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/align.exp.tcl ./gdb/testsuite/gdb.base/align.exp.tcl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/align.exp.tcl	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/align.exp.tcl	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,179 @@
+# Copyright 2018-2021 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 file is part of the gdb testsuite
+
+# The types we're going to test.
+
+set typelist {
+    char {unsigned char}
+    short {unsigned short}
+    int {unsigned int}
+    long {unsigned long}
+    {long long} {unsigned long long}
+    float
+    double {long double}
+}
+
+if {[has_int128_c]} {
+    # Note we don't check "unsigned __int128" yet because at least gcc
+    # canonicalizes the name to "__int128 unsigned", and there isn't a
+    # c-exp.y production for this.
+    # https://sourceware.org/bugzilla/show_bug.cgi?id=20991
+    lappend typelist __int128
+}
+
+# Build source file for testing alignment handling of language LANG.
+# Returns the name of the newly created source file.
+proc prepare_test_source_file { lang } {
+    global typelist
+
+    # Create the test file.
+
+    if { $lang == "c++" } {
+	set suffix "cpp"
+	set align_func "alignof"
+    } else {
+	set suffix "c"
+	set align_func "_Alignof"
+    }
+
+    set filename [standard_output_file "align.$suffix"]
+    set outfile [open $filename w]
+
+    # Prologue.
+    puts -nonewline $outfile "#define DEF(T,U) struct align_pair_ ## T ## _x_ ## U "
+    puts $outfile "{ T one; U two; }"
+    if { $lang == "c++" } {
+	puts -nonewline $outfile "#define DEF_WITH_1_STATIC(T,U) struct align_pair_static_ ## T ## _x_ ## U "
+	puts $outfile "{ static T one; U two; }"
+	puts -nonewline $outfile "#define DEF_WITH_2_STATIC(T,U) struct align_pair_static_ ## T ## _x_static_ ## U "
+	puts $outfile "{ static T one; static U two; }"
+    }
+    if { $lang == "c" } {
+	puts $outfile "unsigned a_void = ${align_func} (void);"
+    }
+
+    # First emit single items.
+    foreach type $typelist {
+	set utype [join [split $type] _]
+	if {$type != $utype} {
+	    puts $outfile "typedef $type $utype;"
+	}
+	puts $outfile "$type item_$utype;"
+	if { $lang == "c" } {
+	    puts $outfile "unsigned a_$utype\n  = ${align_func} ($type);"
+	}
+	set utype [join [split $type] _]
+    }
+
+    # Now emit all pairs.
+    foreach type $typelist {
+	set utype [join [split $type] _]
+	foreach inner $typelist {
+	    set uinner [join [split $inner] _]
+	    puts $outfile "DEF ($utype, $uinner);"
+	    set joined "${utype}_x_${uinner}"
+	    puts $outfile "struct align_pair_$joined item_${joined};"
+	    puts $outfile "unsigned a_${joined}"
+	    puts $outfile "  = ${align_func} (struct align_pair_${joined});"
+
+	    if { $lang == "c++" } {
+		puts $outfile "DEF_WITH_1_STATIC ($utype, $uinner);"
+		set joined "static_${utype}_x_${uinner}"
+		puts $outfile "struct align_pair_$joined item_${joined};"
+		puts $outfile "unsigned a_${joined}"
+		puts $outfile "  = ${align_func} (struct align_pair_${joined});"
+
+		puts $outfile "DEF_WITH_2_STATIC ($utype, $uinner);"
+		set joined "static_${utype}_x_static_${uinner}"
+		puts $outfile "struct align_pair_$joined item_${joined};"
+		puts $outfile "unsigned a_${joined}"
+		puts $outfile "  = ${align_func} (struct align_pair_${joined});"
+	    }
+	}
+    }
+
+    # Epilogue.
+    puts $outfile {
+	int main() {
+	    return 0;
+	}
+    }
+
+    close $outfile
+
+    return $filename
+}
+
+# Run the alignment test for the language LANG.
+proc run_alignment_test { lang } {
+    global testfile srcfile typelist
+    global subdir
+
+    set filename [prepare_test_source_file $lang]
+
+    set flags {debug}
+    if { "$lang" == "c++" } {
+	lappend flags "additional_flags=-std=c++11"
+    }
+    standard_testfile $filename
+    if {[prepare_for_testing "failed to prepare" "$testfile" $srcfile $flags]} {
+	return -1
+    }
+
+    if {![runto_main]} {
+	perror "test suppressed"
+	return
+    }
+
+    if { $lang == "c++" } {
+	set align_func "alignof"
+    } else {
+	set align_func "_Alignof"
+    }
+
+    foreach type $typelist {
+	set utype [join [split $type] _]
+	if { $lang == "c" } {
+	    set expected [get_integer_valueof a_$utype 0]
+	    gdb_test "print ${align_func}($type)" " = $expected"
+	}
+
+	foreach inner $typelist {
+	    set uinner [join [split $inner] _]
+	    set expected [get_integer_valueof a_${utype}_x_${uinner} 0]
+	    gdb_test "print ${align_func}(struct align_pair_${utype}_x_${uinner})" \
+		" = $expected"
+
+	    if { $lang == "c++" } {
+		set expected [get_integer_valueof a_static_${utype}_x_${uinner} 0]
+		gdb_test "print ${align_func}(struct align_pair_static_${utype}_x_${uinner})" \
+		    " = $expected"
+
+		set expected [get_integer_valueof a_static_${utype}_x_static_${uinner} 0]
+		gdb_test "print ${align_func}(struct align_pair_static_${utype}_x_static_${uinner})" \
+		    " = $expected"
+	    }
+	}
+    }
+
+    if { $lang == "c" } {
+	set expected [get_integer_valueof a_void 0]
+	gdb_test "print ${align_func}(void)" " = $expected"
+    }
+}
+
+run_alignment_test $lang
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-0.exp ./gdb/testsuite/gdb.base/all-architectures-0.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-0.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-architectures-0.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -14,4 +14,4 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 set test_slice 0
-source $srcdir/$subdir/all-architectures.exp.in
+source $srcdir/$subdir/all-architectures.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-1.exp ./gdb/testsuite/gdb.base/all-architectures-1.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-1.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-architectures-1.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -14,4 +14,4 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 set test_slice 1
-source $srcdir/$subdir/all-architectures.exp.in
+source $srcdir/$subdir/all-architectures.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-2.exp ./gdb/testsuite/gdb.base/all-architectures-2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-architectures-2.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -14,4 +14,4 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 set test_slice 2
-source $srcdir/$subdir/all-architectures.exp.in
+source $srcdir/$subdir/all-architectures.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-3.exp ./gdb/testsuite/gdb.base/all-architectures-3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-architectures-3.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -14,4 +14,4 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 set test_slice 3
-source $srcdir/$subdir/all-architectures.exp.in
+source $srcdir/$subdir/all-architectures.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-4.exp ./gdb/testsuite/gdb.base/all-architectures-4.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-4.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-architectures-4.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -14,4 +14,4 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 set test_slice 4
-source $srcdir/$subdir/all-architectures.exp.in
+source $srcdir/$subdir/all-architectures.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-5.exp ./gdb/testsuite/gdb.base/all-architectures-5.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-5.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-architectures-5.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -14,4 +14,4 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 set test_slice 5
-source $srcdir/$subdir/all-architectures.exp.in
+source $srcdir/$subdir/all-architectures.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-6.exp ./gdb/testsuite/gdb.base/all-architectures-6.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-6.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-architectures-6.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -14,4 +14,4 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 set test_slice 6
-source $srcdir/$subdir/all-architectures.exp.in
+source $srcdir/$subdir/all-architectures.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-7.exp ./gdb/testsuite/gdb.base/all-architectures-7.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures-7.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-architectures-7.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -14,4 +14,4 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 set test_slice 7
-source $srcdir/$subdir/all-architectures.exp.in
+source $srcdir/$subdir/all-architectures.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures.exp.in ./gdb/testsuite/gdb.base/all-architectures.exp.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures.exp.in	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-architectures.exp.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,341 +0,0 @@
-# Copyright (C) 2016-2020 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 file is part of the gdb testsuite.
-
-# Test manually setting _all_ combinations of all supported bfd
-# architectures and OS ABIs.  This ensures that gdbarch initialization
-# routines handle unusual combinations gracefully, at least without
-# crashing.
-
-# While at it, because the number of possible combinations is quite
-# large, embed other checks that might be useful to do with all
-# supported archs.
-
-# One such test is ensuring that printing float, double and long
-# double types works in cross/bi-arch scenarios.  Some of GDB's float
-# format conversion routines used to fail to consider that even if
-# host and target floating formats match, their sizes may still
-# differ.  E.g., on x86, long double is 80-bit extended precision on
-# both 32-bit vs 64-bit, but it's stored as 96 bit on 32-bit, and 128
-# bit on 64-bit.  This resulted in GDB accessing memory out of bounds.
-# This test catches the issue when run against gdb linked with
-# libmcheck, or run under Valgrind.
-
-# Note: this test is actually split in several driver .exp files, in
-# order to be able to parallelize the work.  Each driver .exp file
-# exercises a different slice of the supported architectures.  See
-# all-architectures-*.exp and the TEST_SLICE variable.
-
-clean_restart
-
-# By default, preparation steps don't output a PASS message.  This is
-# because the testcase has several thousand such steps.
-set want_tests_messages 0
-
-# Call this when an "internal" preparation-like step test passed.
-# Logs the pass in gdb.log, but not in gdb.sum.
-
-proc internal_pass {message} {
-    global want_tests_messages
-
-    if {$want_tests_messages} {
-	pass $message
-    } else {
-	# Skip the sum file, but still log an internal pass in the log
-	# file.
-	global pf_prefix
-
-	verbose -log "IPASS: $pf_prefix $message"
-    }
-}
-
-# The number of times gdb_test_internal was called, and the number of
-# time that resulted in an internal pass.  If these don't match, then
-# some test failed.
-set test_count 0
-set internal_pass_count 0
-
-# Like gdb_test, but calls internal_pass instead of pass, on success.
-
-proc gdb_test_internal {cmd pattern {message ""}} {
-    global test_count internal_pass_count
-    global gdb_prompt
-
-    incr test_count
-
-    if {$message == ""} {
-	set message $cmd
-    }
-
-    gdb_test_multiple $cmd $message {
-	-re "$pattern\r\n$gdb_prompt $" {
-	    internal_pass $message
-	    incr internal_pass_count
-	}
-    }
-}
-
-gdb_test_internal "set max-completions unlimited" \
-    "^set max-completions unlimited"
-
-# Return a list of all the accepted values of "set WHAT".
-
-proc get_set_option_choices {what} {
-    global gdb_prompt
-
-    set values {}
-
-    set test "complete set $what"
-    gdb_test_multiple "complete set $what " "$test" {
-	-re "set $what (\[^\r\n\]+)\r\n" {
-	    lappend values $expect_out(1,string)
-	    exp_continue
-	}
-	-re "$gdb_prompt " {
-	    internal_pass $test
-	}
-    }
-    return $values
-}
-
-set supported_archs [get_set_option_choices "architecture"]
-# There should be at least one more than "auto".
-gdb_assert {[llength $supported_archs] > 1} "at least one architecture"
-
-set supported_osabis [get_set_option_choices "osabi"]
-# There should be at least one more than "auto" and "default".
-gdb_assert {[llength $supported_osabis] > 2} "at least one osabi"
-
-if {[lsearch $supported_archs "mips"] >= 0} {
-    set supported_mipsfpu [get_set_option_choices "mipsfpu"]
-    set supported_mips_abi [get_set_option_choices "mips abi"]
-
-    gdb_assert {[llength $supported_mipsfpu] != 0} "at least one mipsfpu"
-    gdb_assert {[llength $supported_mips_abi] != 0} "at least one mips abi"
-}
-
-if {[lsearch $supported_archs "arm"] >= 0} {
-    set supported_arm_fpu [get_set_option_choices "arm fpu"]
-    set supported_arm_abi [get_set_option_choices "arm abi"]
-
-    gdb_assert {[llength $supported_arm_fpu] != 0} "at least one arm fpu"
-    gdb_assert {[llength $supported_arm_abi] != 0} "at least one arm abi"
-}
-
-# Exercise printing float, double and long double.
-
-proc print_floats {} {
-    gdb_test_internal "ptype 1.0L" "type = long double" "ptype, long double"
-    gdb_test_internal "print 1.0L" " = 1" "print, long double"
-
-    gdb_test_internal "ptype 1.0" "type = double" "ptype, double"
-    gdb_test_internal "print 1.0" " = 1" "print, double"
-
-    gdb_test_internal "ptype 1.0f" "type = float" "ptype, float"
-    gdb_test_internal "print 1.0f" " = 1" "print, float"
-}
-
-# Run tests on the current architecture.
-
-proc do_arch_tests {} {
-    print_floats
-
-    # GDB can't access memory because there is no loaded executable
-    # nor live inferior.
-    gdb_test_internal "disassemble 0x0,+4" \
-	"Cannot access memory at address 0x0"
-}
-
-# Given we can't change arch, osabi, endianness, etc. atomically, we
-# need to silently ignore the case of the current OS ABI (not the one
-# we'll switch to) not having a handler for the arch.
-set osabi_warning \
-    [multi_line \
-	 "warning: A handler for the OS ABI .* is not built into this configuration" \
-	 "of GDB.  Attempting to continue with the default .* settings." \
-	 "" \
-	 "" \
-	]
-
-set endian_warning "(Little|Big) endian target not supported by GDB\r\n"
-
-# Like gdb_test_no_output, but use internal_pass instead of pass, and
-# ignore "no handler for OS ABI" warnings.
-
-proc gdb_test_no_output_osabi {cmd test} {
-    global osabi_warning
-    global gdb_prompt
-
-    gdb_test_multiple "$cmd" $test {
-	-re "^${cmd}\r\n(${osabi_warning})?$gdb_prompt $" {
-	    internal_pass $test
-	}
-    }
-}
-
-# It'd be nicer/safer to restart GDB on each iteration, but, that
-# increases the testcase's run time several times fold.  At the time
-# of writting, it'd jump from 20s to 4min on x86-64 GNU/Linux with
-# --enable-targets=all.
-
-set num_slices 8
-set num_archs [llength $supported_archs]
-set archs_per_slice [expr (($num_archs + $num_slices - 1) / $num_slices)]
-
-with_test_prefix "tests" {
-    foreach_with_prefix osabi $supported_osabis {
-
-	gdb_test_no_output_osabi "set osabi $osabi" \
-	    "set osabi"
-
-	set arch_count 0
-	foreach_with_prefix arch $supported_archs {
-
-	    incr arch_count
-
-	    # Skip architectures outside our slice.
-	    if {$arch_count < [expr $test_slice * $archs_per_slice]} {
-		continue
-	    }
-	    if {$arch_count >= [expr ($test_slice + 1) * $archs_per_slice]} {
-		continue
-	    }
-
-	    if {$arch == "auto"} {
-		continue
-	    }
-	    set default_endian ""
-	    foreach_with_prefix endian {"auto" "big" "little"} {
-
-		set test "set endian"
-		if {$endian == $default_endian} {
-		    continue
-		} elseif {$endian == "auto"} {
-		    gdb_test_multiple "set endian $endian" $test {
-			-re "^set endian $endian\r\n(${osabi_warning})?The target endianness is set automatically \\(currently .* endian\\)\r\n$gdb_prompt $" {
-			    internal_pass $test
-			}
-		    }
-		} else {
-		    gdb_test_multiple "set endian $endian" $test {
-			-re "^set endian $endian\r\n${endian_warning}.*\r\n$gdb_prompt $" {
-			    internal_pass $test
-			    continue
-			}
-			-re "^set endian $endian\r\n(${osabi_warning})?The target is assumed to be $endian endian\r\n$gdb_prompt $" {
-			    internal_pass $test
-			}
-		    }
-		}
-
-		# Skip setting the same architecture again.
-		if {$endian == "auto"} {
-		    set arch_re [string_to_regexp $arch]
-		    set test "set architecture $arch"
-		    gdb_test_multiple $test $test {
-			-re "^set architecture $arch_re\r\n(${osabi_warning})?The target architecture is assumed to be $arch_re\r\n$gdb_prompt $" {
-			    internal_pass $test
-			}
-			-re "Architecture .* not recognized.*$gdb_prompt $" {
-			    # GDB is missing support for a few
-			    # machines that bfd supports.
-			    if  {$arch == "powerpc:EC603e"
-				 || $arch == "powerpc:e500mc"
-				 || $arch == "powerpc:e500mc64"
-				 || $arch == "powerpc:vle"
-				 || $arch == "powerpc:titan"
-				 || $arch == "powerpc:e5500"
-				 || $arch == "powerpc:e6500"} {
-				if {$want_tests_messages} {
-				    kfail $test "gdb/19797"
-				}
-			    } else {
-				fail "$test (arch not recognized)"
-			    }
-			    continue
-			}
-		    }
-
-		    # Record what is the default endianess.  As an
-		    # optimization, we'll skip testing the manual "set
-		    # endian DEFAULT" case.
-		    set test "show endian"
-		    gdb_test_multiple "show endian" $test {
-			-re "currently little endian.*$gdb_prompt $" {
-			    set default_endian "little"
-			    internal_pass $test
-			}
-			-re "currently big endian.*$gdb_prompt $" {
-			    set default_endian "big"
-			    internal_pass $test
-			}
-		    }
-		}
-
-		# Some architectures have extra settings that affect
-		# the ABI.  Specify the extra testing axes in a
-		# declarative form.
-		#
-		# A list of {COMMAND, VAR, OPTIONS-LIST} elements.
-		set all_axes {}
-
-		if {$arch == "mips"} {
-		    lappend all_axes [list "set mips abi" mips_abi $supported_mips_abi]
-		    lappend all_axes [list "set mipsfpu" mipsfpu $supported_mipsfpu]
-		} elseif {$arch == "arm"} {
-		    lappend all_axes [list "set arm abi" arm_abi $supported_arm_abi]
-		    lappend all_axes [list "set arm fpu" arm_fpu $supported_arm_fpu]
-		}
-
-		# Run testing axis CUR_AXIS.  This is a recursive
-		# procedure that tries all combinations of options of
-		# all the testing axes.
-		proc run_axis {all_axes cur_axis} {
-		    if {$cur_axis == [llength $all_axes]} {
-			do_arch_tests
-			return
-		    }
-
-		    # Unpack the axis.
-		    set axis [lindex $all_axes $cur_axis]
-		    set cmd [lindex $axis 0]
-		    set var [lindex $axis 1]
-		    set options [lindex $axis 2]
-
-		    foreach v $options {
-			with_test_prefix "$var=$v" {
-			    gdb_test_no_output_osabi "$cmd $v" "$cmd"
-			    run_axis $all_axes [expr $cur_axis + 1]
-			}
-		    }
-		}
-
-		run_axis $all_axes 0
-	    }
-	}
-    }
-}
-
-# A test that:
-#
-#  - ensures there's a PASS if all internal tests actually passed
-#
-#  - ensures there's at least one test that is interpreted as a
-#    regression (a matching PASS->FAIL) if some of the internal tests
-#    failed, instead of looking like it could be a new FAIL that could
-#    be ignored.
-#
-gdb_assert {$internal_pass_count == $test_count} "all passed"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures.exp.tcl ./gdb/testsuite/gdb.base/all-architectures.exp.tcl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-architectures.exp.tcl	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-architectures.exp.tcl	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,341 @@
+# Copyright (C) 2016-2021 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 file is part of the gdb testsuite.
+
+# Test manually setting _all_ combinations of all supported bfd
+# architectures and OS ABIs.  This ensures that gdbarch initialization
+# routines handle unusual combinations gracefully, at least without
+# crashing.
+
+# While at it, because the number of possible combinations is quite
+# large, embed other checks that might be useful to do with all
+# supported archs.
+
+# One such test is ensuring that printing float, double and long
+# double types works in cross/bi-arch scenarios.  Some of GDB's float
+# format conversion routines used to fail to consider that even if
+# host and target floating formats match, their sizes may still
+# differ.  E.g., on x86, long double is 80-bit extended precision on
+# both 32-bit vs 64-bit, but it's stored as 96 bit on 32-bit, and 128
+# bit on 64-bit.  This resulted in GDB accessing memory out of bounds.
+# This test catches the issue when run against gdb linked with
+# libmcheck, or run under Valgrind.
+
+# Note: this test is actually split in several driver .exp files, in
+# order to be able to parallelize the work.  Each driver .exp file
+# exercises a different slice of the supported architectures.  See
+# all-architectures-*.exp and the TEST_SLICE variable.
+
+clean_restart
+
+# By default, preparation steps don't output a PASS message.  This is
+# because the testcase has several thousand such steps.
+set want_tests_messages 0
+
+# Call this when an "internal" preparation-like step test passed.
+# Logs the pass in gdb.log, but not in gdb.sum.
+
+proc internal_pass {message} {
+    global want_tests_messages
+
+    if {$want_tests_messages} {
+	pass $message
+    } else {
+	# Skip the sum file, but still log an internal pass in the log
+	# file.
+	global pf_prefix
+
+	verbose -log "IPASS: $pf_prefix $message"
+    }
+}
+
+# The number of times gdb_test_internal was called, and the number of
+# time that resulted in an internal pass.  If these don't match, then
+# some test failed.
+set test_count 0
+set internal_pass_count 0
+
+# Like gdb_test, but calls internal_pass instead of pass, on success.
+
+proc gdb_test_internal {cmd pattern {message ""}} {
+    global test_count internal_pass_count
+    global gdb_prompt
+
+    incr test_count
+
+    if {$message == ""} {
+	set message $cmd
+    }
+
+    gdb_test_multiple $cmd $message {
+	-re "$pattern\r\n$gdb_prompt $" {
+	    internal_pass $message
+	    incr internal_pass_count
+	}
+    }
+}
+
+gdb_test_internal "set max-completions unlimited" \
+    "^set max-completions unlimited"
+
+# Return a list of all the accepted values of "set WHAT".
+
+proc get_set_option_choices {what} {
+    global gdb_prompt
+
+    set values {}
+
+    set test "complete set $what"
+    gdb_test_multiple "complete set $what " "$test" {
+	-re "set $what (\[^\r\n\]+)\r\n" {
+	    lappend values $expect_out(1,string)
+	    exp_continue
+	}
+	-re "$gdb_prompt " {
+	    internal_pass $test
+	}
+    }
+    return $values
+}
+
+set supported_archs [get_set_option_choices "architecture"]
+# There should be at least one more than "auto".
+gdb_assert {[llength $supported_archs] > 1} "at least one architecture"
+
+set supported_osabis [get_set_option_choices "osabi"]
+# There should be at least one more than "auto" and "default".
+gdb_assert {[llength $supported_osabis] > 2} "at least one osabi"
+
+if {[lsearch $supported_archs "mips"] >= 0} {
+    set supported_mipsfpu [get_set_option_choices "mipsfpu"]
+    set supported_mips_abi [get_set_option_choices "mips abi"]
+
+    gdb_assert {[llength $supported_mipsfpu] != 0} "at least one mipsfpu"
+    gdb_assert {[llength $supported_mips_abi] != 0} "at least one mips abi"
+}
+
+if {[lsearch $supported_archs "arm"] >= 0} {
+    set supported_arm_fpu [get_set_option_choices "arm fpu"]
+    set supported_arm_abi [get_set_option_choices "arm abi"]
+
+    gdb_assert {[llength $supported_arm_fpu] != 0} "at least one arm fpu"
+    gdb_assert {[llength $supported_arm_abi] != 0} "at least one arm abi"
+}
+
+# Exercise printing float, double and long double.
+
+proc print_floats {} {
+    gdb_test_internal "ptype 1.0L" "type = long double" "ptype, long double"
+    gdb_test_internal "print 1.0L" " = 1" "print, long double"
+
+    gdb_test_internal "ptype 1.0" "type = double" "ptype, double"
+    gdb_test_internal "print 1.0" " = 1" "print, double"
+
+    gdb_test_internal "ptype 1.0f" "type = float" "ptype, float"
+    gdb_test_internal "print 1.0f" " = 1" "print, float"
+}
+
+# Run tests on the current architecture.
+
+proc do_arch_tests {} {
+    print_floats
+
+    # GDB can't access memory because there is no loaded executable
+    # nor live inferior.
+    gdb_test_internal "disassemble 0x0,+4" \
+	"Cannot access memory at address 0x0"
+}
+
+# Given we can't change arch, osabi, endianness, etc. atomically, we
+# need to silently ignore the case of the current OS ABI (not the one
+# we'll switch to) not having a handler for the arch.
+set osabi_warning \
+    [multi_line \
+	 "warning: A handler for the OS ABI .* is not built into this configuration" \
+	 "of GDB.  Attempting to continue with the default .* settings." \
+	 "" \
+	 "" \
+	]
+
+set endian_warning "(Little|Big) endian target not supported by GDB\r\n"
+
+# Like gdb_test_no_output, but use internal_pass instead of pass, and
+# ignore "no handler for OS ABI" warnings.
+
+proc gdb_test_no_output_osabi {cmd test} {
+    global osabi_warning
+    global gdb_prompt
+
+    gdb_test_multiple "$cmd" $test {
+	-re "^${cmd}\r\n(${osabi_warning})?$gdb_prompt $" {
+	    internal_pass $test
+	}
+    }
+}
+
+# It'd be nicer/safer to restart GDB on each iteration, but, that
+# increases the testcase's run time several times fold.  At the time
+# of writting, it'd jump from 20s to 4min on x86-64 GNU/Linux with
+# --enable-targets=all.
+
+set num_slices 8
+set num_archs [llength $supported_archs]
+set archs_per_slice [expr (($num_archs + $num_slices - 1) / $num_slices)]
+
+with_test_prefix "tests" {
+    foreach_with_prefix osabi $supported_osabis {
+
+	gdb_test_no_output_osabi "set osabi $osabi" \
+	    "set osabi"
+
+	set arch_count 0
+	foreach_with_prefix arch $supported_archs {
+
+	    incr arch_count
+
+	    # Skip architectures outside our slice.
+	    if {$arch_count < [expr $test_slice * $archs_per_slice]} {
+		continue
+	    }
+	    if {$arch_count >= [expr ($test_slice + 1) * $archs_per_slice]} {
+		continue
+	    }
+
+	    if {$arch == "auto"} {
+		continue
+	    }
+	    set default_endian ""
+	    foreach_with_prefix endian {"auto" "big" "little"} {
+
+		set test "set endian"
+		if {$endian == $default_endian} {
+		    continue
+		} elseif {$endian == "auto"} {
+		    gdb_test_multiple "set endian $endian" $test {
+			-re "^set endian $endian\r\n(${osabi_warning})?The target endianness is set automatically \\(currently .* endian\\)\\.\r\n$gdb_prompt $" {
+			    internal_pass $test
+			}
+		    }
+		} else {
+		    gdb_test_multiple "set endian $endian" $test {
+			-re "^set endian $endian\r\n${endian_warning}.*\r\n$gdb_prompt $" {
+			    internal_pass $test
+			    continue
+			}
+			-re "^set endian $endian\r\n(${osabi_warning})?The target is set to $endian endian\\.\r\n$gdb_prompt $" {
+			    internal_pass $test
+			}
+		    }
+		}
+
+		# Skip setting the same architecture again.
+		if {$endian == "auto"} {
+		    set arch_re [string_to_regexp $arch]
+		    set test "set architecture $arch"
+		    gdb_test_multiple $test $test {
+			-re "^set architecture $arch_re\r\n(${osabi_warning})?The target architecture is set to \"$arch_re\"\\.\r\n$gdb_prompt $" {
+			    internal_pass $test
+			}
+			-re "Architecture .* not recognized.*$gdb_prompt $" {
+			    # GDB is missing support for a few
+			    # machines that bfd supports.
+			    if  {$arch == "powerpc:EC603e"
+				 || $arch == "powerpc:e500mc"
+				 || $arch == "powerpc:e500mc64"
+				 || $arch == "powerpc:vle"
+				 || $arch == "powerpc:titan"
+				 || $arch == "powerpc:e5500"
+				 || $arch == "powerpc:e6500"} {
+				if {$want_tests_messages} {
+				    kfail $test "gdb/19797"
+				}
+			    } else {
+				fail "$test (arch not recognized)"
+			    }
+			    continue
+			}
+		    }
+
+		    # Record what is the default endianess.  As an
+		    # optimization, we'll skip testing the manual "set
+		    # endian DEFAULT" case.
+		    set test "show endian"
+		    gdb_test_multiple "show endian" $test {
+			-re "currently little endian.*$gdb_prompt $" {
+			    set default_endian "little"
+			    internal_pass $test
+			}
+			-re "currently big endian.*$gdb_prompt $" {
+			    set default_endian "big"
+			    internal_pass $test
+			}
+		    }
+		}
+
+		# Some architectures have extra settings that affect
+		# the ABI.  Specify the extra testing axes in a
+		# declarative form.
+		#
+		# A list of {COMMAND, VAR, OPTIONS-LIST} elements.
+		set all_axes {}
+
+		if {$arch == "mips"} {
+		    lappend all_axes [list "set mips abi" mips_abi $supported_mips_abi]
+		    lappend all_axes [list "set mipsfpu" mipsfpu $supported_mipsfpu]
+		} elseif {$arch == "arm"} {
+		    lappend all_axes [list "set arm abi" arm_abi $supported_arm_abi]
+		    lappend all_axes [list "set arm fpu" arm_fpu $supported_arm_fpu]
+		}
+
+		# Run testing axis CUR_AXIS.  This is a recursive
+		# procedure that tries all combinations of options of
+		# all the testing axes.
+		proc run_axis {all_axes cur_axis} {
+		    if {$cur_axis == [llength $all_axes]} {
+			do_arch_tests
+			return
+		    }
+
+		    # Unpack the axis.
+		    set axis [lindex $all_axes $cur_axis]
+		    set cmd [lindex $axis 0]
+		    set var [lindex $axis 1]
+		    set options [lindex $axis 2]
+
+		    foreach v $options {
+			with_test_prefix "$var=$v" {
+			    gdb_test_no_output_osabi "$cmd $v" "$cmd"
+			    run_axis $all_axes [expr $cur_axis + 1]
+			}
+		    }
+		}
+
+		run_axis $all_axes 0
+	    }
+	}
+    }
+}
+
+# A test that:
+#
+#  - ensures there's a PASS if all internal tests actually passed
+#
+#  - ensures there's at least one test that is interpreted as a
+#    regression (a matching PASS->FAIL) if some of the internal tests
+#    failed, instead of looking like it could be a new FAIL that could
+#    be ignored.
+#
+gdb_assert {$internal_pass_count == $test_count} "all passed"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-bin.exp ./gdb/testsuite/gdb.base/all-bin.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/all-bin.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/all-bin.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/annota1.exp ./gdb/testsuite/gdb.base/annota1.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/annota1.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/annota1.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
@@ -223,7 +223,7 @@ gdb_test_multiple "break printf" "break
 #
 # get to printf
 #
-set pat_begin "\r\n\032\032post-prompt\r\nContinuing.\r\n\r\n\032\032starting\r\n\r\n\032\032frames-invalid\r\n${breakpoints_invalid}"
+set pat_begin "\r\n\032\032post-prompt\r\nContinuing.\r\n\r\n\032\032starting\r\n\r\n\032\032frames-invalid\r\n${breakpoints_invalid}\r\n\032\032frames-invalid\r\n"
 set pat_adjust "warning: Breakpoint 3 address previously adjusted from $hex to $hex.\r\n"
 set pat_end "\r\n\032\032breakpoint 3\r\n\r\nBreakpoint 3, \r\n\032\032frame-begin 0 $hex\r\n\r\n(\032\032frame-address\r\n$hex\r\n\032\032frame-address-end\r\n in \r\n)*.*\032\032frame-function-name\r\n.*printf(@.*)?\r\n\032\032frame-args\r\n.*\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$"
 
@@ -268,10 +268,10 @@ if [target_info exists gdb,nosignals] {
     unsupported "backtrace @ signal handler"
 } else {
     gdb_test_multiple "signal SIGUSR1" "send SIGUSR1" {
-	-re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n${escapedsrcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n$decimal\[^\r\n\]+\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
+	-re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n${escapedsrcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
 	    pass $gdb_test_name
 	}
-	-re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*${srcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n$decimal\[^\r\n\]+\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
+	-re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*${srcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
 	    setup_xfail "*-*-*" 1270
 	    fail $gdb_test_name
 	}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/annota3.exp ./gdb/testsuite/gdb.base/annota3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/annota3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/annota3.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/annota-input-while-running.c ./gdb/testsuite/gdb.base/annota-input-while-running.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/annota-input-while-running.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/annota-input-while-running.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/annota-input-while-running.exp ./gdb/testsuite/gdb.base/annota-input-while-running.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/annota-input-while-running.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/annota-input-while-running.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/annotate-symlink.exp ./gdb/testsuite/gdb.base/annotate-symlink.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/annotate-symlink.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/annotate-symlink.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/anon.exp ./gdb/testsuite/gdb.base/anon.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/anon.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/anon.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/args.exp ./gdb/testsuite/gdb.base/args.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/args.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/args.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
@@ -23,6 +23,12 @@ if [target_info exists noargs] {
     return
 }
 
+# This test requires starting new inferior processes, skip it if the target
+# board is a stub.
+if [use_gdb_stub] {
+    return
+}
+
 standard_testfile
 
 if {[build_executable $testfile.exp $testfile \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/argv0-symlink.c ./gdb/testsuite/gdb.base/argv0-symlink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/argv0-symlink.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/argv0-symlink.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/argv0-symlink.exp ./gdb/testsuite/gdb.base/argv0-symlink.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/argv0-symlink.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/argv0-symlink.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/arithmet.exp ./gdb/testsuite/gdb.base/arithmet.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/arithmet.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/arithmet.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/arrayidx.c ./gdb/testsuite/gdb.base/arrayidx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/arrayidx.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/arrayidx.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/arrayidx.exp ./gdb/testsuite/gdb.base/arrayidx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/arrayidx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/arrayidx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/asmlabel.c ./gdb/testsuite/gdb.base/asmlabel.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/asmlabel.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/asmlabel.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/asmlabel.exp ./gdb/testsuite/gdb.base/asmlabel.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/asmlabel.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/asmlabel.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/assign.exp ./gdb/testsuite/gdb.base/assign.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/assign.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/assign.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/async.exp ./gdb/testsuite/gdb.base/async.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/async.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/async.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1999-2020 Free Software Foundation, Inc.
+#   Copyright 1999-2021 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
@@ -79,7 +79,7 @@ test_background "step&" "" ".*y = foo \\
 
 test_background "step&" "" " foo \\(\\) at .*async.c.*x = 5.*" "step& #2"
 
-test_background "stepi&" "" ".*$hex.*x = 5.*"
+set is_stmt [is_stmt_addresses $srcfile]
 
 # Get the next instruction address.
 set next_insn_addr ""
@@ -87,16 +87,48 @@ set test "get next insn"
 gdb_test_multiple {x/2i $pc} "$test" {
     -re "=> $hex .* 0x(\[0-9a-f\]*) .*$gdb_prompt $" {
 	set next_insn_addr $expect_out(1,string)
-	pass "$test"
+	pass $gdb_test_name
     }
 }
+set next_insn_is_stmt [hex_in_list $next_insn_addr $is_stmt]
 
-# We nexti into the same source line.  The current PC is printed out.
-test_background "nexti&" "" ".* 0x0*$next_insn_addr.* x = 5; .*"
+if { $next_insn_is_stmt } {
+    set prefix ""
+} else {
+    # The current PC is printed out.
+    set prefix "0x0*$next_insn_addr.*"
+}
+test_background "stepi&" "" ".*$prefix x = 5; .*"
+
+# Get the next instruction address.
+set next_insn_addr ""
+set test "get next insn, 2nd"
+gdb_test_multiple {x/2i $pc} "$test" {
+    -re "=> $hex .* 0x(\[0-9a-f\]*) .*$gdb_prompt $" {
+	set next_insn_addr $expect_out(1,string)
+	pass $gdb_test_name
+    }
+}
+set next_insn_is_stmt \
+    [expr [lsearch -regexp $is_stmt 0x0*$next_insn_addr] != -1]
 
-# PC is in the middle of a source line, so the PC address is displayed.
+if { $next_insn_is_stmt } {
+    set prefix ""
+} else {
+    # The current PC is printed out.
+    set prefix "0x0*$next_insn_addr.*"
+}
+# We nexti into the same source line.
+test_background "nexti&" "" ".*$prefix x = 5; .*"
+
+if { $next_insn_is_stmt } {
+    set prefix ""
+} else {
+    # PC is in the middle of a source line, so the PC address is displayed.
+    set prefix "0x0*$next_insn_addr in "
+}
 test_background "finish&" \
-    "Run till exit from #0  $hex in foo \\(\\) at.*async.c.*\r\n" \
+    "Run till exit from #0  ${prefix}foo \\(\\) at.*async.c.*\r\n" \
     ".*$hex in main \\(\\) at.*async.c.*y = foo \\(\\).*Value returned is.*= 8.*"
 
 set jump_here [gdb_get_line_number "jump here"]
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/async-shell.c ./gdb/testsuite/gdb.base/async-shell.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/async-shell.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/async-shell.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/async-shell.exp ./gdb/testsuite/gdb.base/async-shell.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/async-shell.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/async-shell.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach2.c ./gdb/testsuite/gdb.base/attach2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach2.c	2021-05-21 01:57:24.000000000 +0000
@@ -8,12 +8,15 @@
 #include <stdlib.h>
 #include <unistd.h>
 
-int  should_exit = 0;
+float  bidule = 0.0;
+volatile int  should_exit = 0;
 
 int main ()
 {
   int  local_i = 0;
 
+  /* Cannot sleep a very long time, as attach.exp assumes the
+     process will exit before the standard GDB timeout.  */
   sleep( 10 ); /* System call causes register fetch to fail */
                /* This is a known HPUX "feature"            */
   while (! should_exit)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach3.c ./gdb/testsuite/gdb.base/attach3.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach3.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach3.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,25 @@
+/* This program is intended to be started outside of gdb, and then
+   attached to by gdb.  Thus, it simply spins in a loop.  The loop
+   is exited when & if the variable 'should_exit' is non-zero.  (It
+   is initialized to zero in this program, so the loop will never
+   exit unless/until gdb sets the variable to non-zero.)
+   */
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+double  bidule = 0.0;
+volatile int  should_exit = 0;
+
+int main ()
+{
+  int  local_i = 0;
+
+  sleep( 60 ); /* System call causes register fetch to fail */
+               /* This is a known HPUX "feature"            */
+  while (! should_exit)
+    {
+      local_i++;
+    }
+  return (0);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach.c ./gdb/testsuite/gdb.base/attach.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach.c	2021-05-21 01:57:24.000000000 +0000
@@ -7,7 +7,8 @@
 #include <stdio.h>
 #include <unistd.h>
 
-int  should_exit = 0;
+int  bidule = 0;
+volatile int  should_exit = 0;
 
 int main ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach.exp ./gdb/testsuite/gdb.base/attach.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
@@ -17,12 +17,13 @@ if {![can_spawn_for_attach]} {
     return 0
 }
 
-standard_testfile attach.c attach2.c
+standard_testfile attach.c attach2.c attach3.c
 set binfile2 ${binfile}2
+set binfile3 ${binfile}3
 set escapedbinfile  [string_to_regexp $binfile]
 
 #execute_anywhere "rm -f ${binfile} ${binfile2}"
-remote_exec build "rm -f ${binfile} ${binfile2}"
+remote_exec build "rm -f ${binfile} ${binfile2} ${binfile3}"
 # For debugging this test
 #
 #log_user 1
@@ -41,6 +42,13 @@ if  { [gdb_compile "${srcdir}/${subdir}/
     return -1
 }
 
+# Build the third file, used to check attach when the exec-file has changed.
+
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile3}" "${binfile3}" executable {debug}] != "" } {
+    untested "failed to compile attach exec-file changed test"
+    return -1
+}
+
 if [get_compiler_info] {
     return -1
 }
@@ -53,10 +61,6 @@ proc_with_prefix do_attach_failure_tests
     global binfile
     global escapedbinfile
     global srcfile
-    global testfile
-    global subdir
-    global timeout
-    global decimal
 
     clean_restart $binfile
 
@@ -205,8 +209,6 @@ proc_with_prefix do_attach_tests {} {
     global binfile
     global escapedbinfile
     global srcfile
-    global testfile
-    global subdir
     global timeout
     global decimal
 
@@ -439,10 +441,6 @@ proc_with_prefix do_call_attach_tests {}
 proc_with_prefix do_command_attach_tests {} {
     global gdb_prompt
     global binfile
-    global verbose
-    global GDB
-    global INTERNAL_GDBFLAGS
-    global GDBFLAGS
 
     if ![isnative] then {
 	unsupported "command attach test"
@@ -474,7 +472,12 @@ proc test_command_line_attach_run {} {
     global gdb_prompt
     global binfile
 
-    if ![isnative] then {
+    # Skip test if we cannot attach on the command line and use the run command.
+    # ??? Unclear what condition to use to return here when using gdbserver.
+    # ??? None of the below works.
+    #    ![isnative] || [target_is_gdbserver]
+    #    ![isnative] || [use_gdb_stub]
+    if { ![isnative] || [is_remote target] } then {
 	unsupported "commandline attach run test"
 	return 0
     }
@@ -513,14 +516,133 @@ proc test_command_line_attach_run {} {
     }
 }
 
+
+# This is a test of 'set exec-file-mismatch' handling.
+
+proc_with_prefix do_attach_exec_mismatch_handling_tests {} {
+    global gdb_prompt
+    global binfile
+    global binfile2
+    global binfile3
+
+    clean_restart $binfile
+
+    # Start two programs that can be attached to.
+    # The first program contains a 'int bidule' variable, the second a 'float bidule'.
+
+    set test_spawn_id [spawn_wait_for_attach $binfile]
+    set testpid [spawn_id_get_pid $test_spawn_id]
+    set test_spawn_id2 [spawn_wait_for_attach $binfile2]
+    set testpid2 [spawn_id_get_pid $test_spawn_id2]
+
+
+    # Test with the default value of 'set exec-file-mismatch load".
+    set test "mismatch load"
+    gdb_test "attach $testpid" "Attaching to program.*" "$test attach1"
+    # Verify that we can "see" the variable "bidule" in the
+    # program, and that it is an integer.
+    gdb_test "ptype bidule" " = int" "$test after attach1, bidule is int"
+    # Detach the process.
+    gdb_test "detach" "Detaching from program: .* detached\\\]" "$test detach1"
+    gdb_test_multiple "attach $testpid2" "$test attach2" {
+	-re "Attaching to program.*exec-file-mismatch handling is currently \"ask\".*Load new symbol table from .*attach2\".*\(y or n\)" {
+	    pass "$test attach2"
+	}
+    }
+    gdb_test "y" "Reading symbols from .*attach2.*" "$test load attach2"
+    # Verify that we can "see" the variable "bidule" in the
+    # program, and that it is a float.
+    gdb_test "ptype bidule" " = float" "$test after attach2 and load, bidule is float"
+    # Detach the process.
+    gdb_test "detach" "Detaching from program: .* detached\\\]" "$test detach attach2"
+
+
+    # Test with 'set exec-file-mismatch warn".
+    set test "mismatch warn"
+    gdb_test_no_output "set exec-file-mismatch warn"
+    gdb_test_multiple "attach $testpid" "$test attach" {
+	-re "Attaching to program.*exec-file-mismatch handling is currently \"warn\".*$gdb_prompt" {
+	    pass "$test attach"
+	}
+    }
+    # Verify that we still (wrongly) "see" the variable "bidule" as a float,
+    # as we have not loaded the correct exec-file.
+    gdb_test "ptype bidule" " = float" "$test after attach and warn, bidule is float"
+    # Detach the process.
+    gdb_test "detach" "Detaching from program: .* detached\\\]" "$test detach attach"
+
+
+    # Same test but with 'set exec-file-mismatch off".
+    set test "mismatch off"
+    gdb_test_no_output "set exec-file-mismatch off"
+    gdb_test_multiple "attach $testpid" "$test attach" {
+	-re "Attaching to program.*$gdb_prompt" {
+	    pass "$test attach"
+	}
+    }
+    # Verify that we still (wrongly) "see" the variable "bidule" as a float,
+    # as we have not warned the user and not loaded the correct exec-file
+    gdb_test "ptype bidule" " = float" "$test after attach and warn, bidule is float"
+    # Detach the process.
+    gdb_test "detach" "Detaching from program: .* detached\\\]" "$test detach attach"
+
+    # Test that the 'exec-file' changed is checked before exec-file-mismatch.
+    set test "mismatch exec-file changed has priority"
+    gdb_test_no_output "set exec-file-mismatch ask"
+    gdb_test_multiple "attach $testpid" "$test attach1 again, initial exec-file" {
+	-re "Attaching to program.*exec-file-mismatch handling is currently \"ask\".*Load new symbol table from .*attach\".*\(y or n\)" {
+	    gdb_test "y" "Reading symbols from .*attach.*" $gdb_test_name
+	}
+    }
+    
+
+    gdb_test "detach" "Detaching from program: .* detached\\\]" "$test detach attach initial exec-file"
+
+    # Change the exec-file and attach to a new process using the changed file.
+    remote_exec build "mv ${binfile} ${binfile}.initial"
+    remote_exec build "mv ${binfile3} ${binfile}"
+    # Ensure GDB detects ${binfile} has changed when checking timestamp.
+    sleep 1
+    remote_exec build "touch ${binfile}"
+    set test_spawn_id3 [spawn_wait_for_attach $binfile]
+    set testpid3 [spawn_id_get_pid $test_spawn_id3]
+
+    gdb_test "attach $testpid3" "Attaching to program.*attach' has changed; re-reading symbols.*" \
+	"$test attach1 again, after changing exec-file"
+    gdb_test "detach" "Detaching from program: .* detached\\\]" "$test detach after attach changed exec-file"
+
+    # Now, test the situation when current exec-file has changed
+    # and we attach to a pid using another file.
+    # Ensure GDB detects ${binfile} has changed when checking timestamp.
+    sleep 1
+    remote_exec build "touch ${binfile}"
+
+    gdb_test_multiple "attach $testpid2" "$test attach2" {
+	-re "Attaching to program.*exec-file-mismatch handling is currently \"ask\".*Load new symbol table from .*attach2\".*\(y or n\)" {
+	    gdb_test "y" "Reading symbols from .*attach2.*" $gdb_test_name
+	}
+    }
+
+    # Restore initial build situation.
+    remote_exec build "mv ${binfile} ${binfile3}"
+    remote_exec build "mv ${binfile}.initial ${binfile}"
+
+    # Don't leave a process around
+    kill_wait_spawned_process $test_spawn_id
+    kill_wait_spawned_process $test_spawn_id2
+    kill_wait_spawned_process $test_spawn_id3
+}
+
 do_attach_tests
 do_attach_failure_tests
 do_call_attach_tests
+do_attach_exec_mismatch_handling_tests
 
 # Test "gdb --pid"
 
 do_command_attach_tests
 
+
 test_command_line_attach_run
 
 return 0
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-non-pgrp-leader.c ./gdb/testsuite/gdb.base/attach-non-pgrp-leader.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-non-pgrp-leader.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach-non-pgrp-leader.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-non-pgrp-leader.exp ./gdb/testsuite/gdb.base/attach-non-pgrp-leader.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-non-pgrp-leader.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach-non-pgrp-leader.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-pie-misread.c ./gdb/testsuite/gdb.base/attach-pie-misread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-pie-misread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach-pie-misread.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-pie-misread.exp ./gdb/testsuite/gdb.base/attach-pie-misread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-pie-misread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach-pie-misread.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-pie-noexec.c ./gdb/testsuite/gdb.base/attach-pie-noexec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-pie-noexec.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach-pie-noexec.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-pie-noexec.exp ./gdb/testsuite/gdb.base/attach-pie-noexec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-pie-noexec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach-pie-noexec.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
@@ -28,7 +28,7 @@ clean_restart $executable
 set arch ""
 set test "show architecture"
 gdb_test_multiple $test $test {
-    -re "The target architecture is set automatically \\(currently (.*)\\)\r\n$gdb_prompt $" {
+    -re "The target architecture is set to \"auto\" \\(currently \"(.*)\"\\)\\.\r\n$gdb_prompt $" {
 	set arch $expect_out(1,string)
 	pass $test
     }
@@ -61,7 +61,7 @@ set testpid [spawn_id_get_pid $test_spaw
 gdb_start
 file delete -- $binfile
 gdb_test "attach $testpid" "Attaching to process $testpid\r\n.*" "attach"
-gdb_test "set architecture $arch" "The target architecture is assumed to be $arch"
+gdb_test "set architecture $arch" "The target architecture is set to \"$arch\"\\."
 gdb_test "info shared" "From\[ \t\]+To\[ \t\]+Syms Read\[ \t\]+Shared Object Library\r\n0x.*"
 
 kill_wait_spawned_process $test_spawn_id
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-twice.c ./gdb/testsuite/gdb.base/attach-twice.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-twice.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach-twice.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
@@ -18,9 +18,14 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <sys/types.h>
 #include <sys/ptrace.h>
 #include <errno.h>
 
+#ifndef PTRACE_ATTACH
+#define PTRACE_ATTACH PT_ATTACH
+#endif
+
 int
 main (void)
 {
@@ -33,7 +38,9 @@ main (void)
       exit (1);
     case 0:
       errno = 0;
-      ptrace (PTRACE_ATTACH, getppid (), NULL, NULL);
+      /* The 4th argument to ptrace () is 0 on purpose, as it is compatible
+	 between kernels that accept void* (like Linux) and int (NetBSD).  */
+      ptrace (PTRACE_ATTACH, getppid (), NULL, 0);
       if (errno != 0)
 	perror ("PTRACE_ATTACH");
       break;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-twice.exp ./gdb/testsuite/gdb.base/attach-twice.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-twice.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach-twice.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-wait-input.c ./gdb/testsuite/gdb.base/attach-wait-input.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-wait-input.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach-wait-input.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-wait-input.exp ./gdb/testsuite/gdb.base/attach-wait-input.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/attach-wait-input.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/attach-wait-input.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auto-connect-native-target.c ./gdb/testsuite/gdb.base/auto-connect-native-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auto-connect-native-target.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/auto-connect-native-target.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auto-connect-native-target.exp ./gdb/testsuite/gdb.base/auto-connect-native-target.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auto-connect-native-target.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/auto-connect-native-target.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auto-load.c ./gdb/testsuite/gdb.base/auto-load.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auto-load.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/auto-load.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auto-load.exp ./gdb/testsuite/gdb.base/auto-load.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auto-load.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/auto-load.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auto-load-script ./gdb/testsuite/gdb.base/auto-load-script
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auto-load-script	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/auto-load-script	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auxv.c ./gdb/testsuite/gdb.base/auxv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auxv.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/auxv.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 1992-2020 Free Software Foundation, Inc.
+/* Copyright 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auxv.exp ./gdb/testsuite/gdb.base/auxv.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/auxv.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/auxv.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # Test `info auxv' and related functionality.
 
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 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
@@ -126,8 +126,8 @@ set live_data [fetch_auxv "info auxv on
 set gcore_works [gdb_gcore_cmd "$gcorefile" "gcore"]
 
 # Let the program continue and die.
-gdb_test continue ".*Program received signal.*"
-gdb_test continue ".*Program terminated with signal.*"
+gdb_test continue ".*Program received signal.*" "continue until signal"
+gdb_test continue ".*Program terminated with signal.*" "continue and terminate"
 
 # Now collect the core dump it left.
 set test "generate native core dump"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/backtrace.c ./gdb/testsuite/gdb.base/backtrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/backtrace.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/backtrace.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/backtrace.exp ./gdb/testsuite/gdb.base/backtrace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/backtrace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/backtrace.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bad-file.exp ./gdb/testsuite/gdb.base/bad-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bad-file.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bad-file.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bang.exp ./gdb/testsuite/gdb.base/bang.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bang.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bang.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/batch-exit-status.exp ./gdb/testsuite/gdb.base/batch-exit-status.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/batch-exit-status.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/batch-exit-status.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/batch-preserve-term-settings.c ./gdb/testsuite/gdb.base/batch-preserve-term-settings.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/batch-preserve-term-settings.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/batch-preserve-term-settings.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/batch-preserve-term-settings.exp ./gdb/testsuite/gdb.base/batch-preserve-term-settings.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/batch-preserve-term-settings.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/batch-preserve-term-settings.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bfp-test.c ./gdb/testsuite/gdb.base/bfp-test.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bfp-test.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bfp-test.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bfp-test.exp ./gdb/testsuite/gdb.base/bfp-test.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bfp-test.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bfp-test.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bg-execution-repeat.c ./gdb/testsuite/gdb.base/bg-execution-repeat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bg-execution-repeat.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bg-execution-repeat.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bg-execution-repeat.exp ./gdb/testsuite/gdb.base/bg-execution-repeat.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bg-execution-repeat.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bg-execution-repeat.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bigcore.c ./gdb/testsuite/gdb.base/bigcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bigcore.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bigcore.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
@@ -267,5 +267,5 @@ main ()
   /* Push everything out to disk.  */
 
   print_string ("Dump core ....\n");
-  *(char*)0 = 0;
+  *(volatile char*)0 = 0;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bigcore.exp ./gdb/testsuite/gdb.base/bigcore.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bigcore.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bigcore.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bitfields2.exp ./gdb/testsuite/gdb.base/bitfields2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bitfields2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bitfields2.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bitfields.exp ./gdb/testsuite/gdb.base/bitfields.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bitfields.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bitfields.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bitops.exp ./gdb/testsuite/gdb.base/bitops.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bitops.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bitops.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-continue-ctrl-c.c ./gdb/testsuite/gdb.base/bp-cmds-continue-ctrl-c.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-continue-ctrl-c.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bp-cmds-continue-ctrl-c.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-continue-ctrl-c.exp ./gdb/testsuite/gdb.base/bp-cmds-continue-ctrl-c.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-continue-ctrl-c.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bp-cmds-continue-ctrl-c.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-execution-x-script.c ./gdb/testsuite/gdb.base/bp-cmds-execution-x-script.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-execution-x-script.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bp-cmds-execution-x-script.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-execution-x-script.exp ./gdb/testsuite/gdb.base/bp-cmds-execution-x-script.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-execution-x-script.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bp-cmds-execution-x-script.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -13,11 +13,6 @@
 # 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 that GDB isn't silent if it fails to remove a breakpoint from
-# the main program, independently of whether the program was loaded
-# with "file PROGRAM" or directly from the command line with "gdb
-# PROGRAM".
-
 # Test that execution commands in a GDB script file run through -x
 # work as expected.  Specifically, the scripts creates a breakpoint
 # that has "continue" in its command list, and then does "run".
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-execution-x-script.gdb ./gdb/testsuite/gdb.base/bp-cmds-execution-x-script.gdb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-execution-x-script.gdb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bp-cmds-execution-x-script.gdb	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-sourced-script.c ./gdb/testsuite/gdb.base/bp-cmds-sourced-script.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-sourced-script.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bp-cmds-sourced-script.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main ()
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-sourced-script.exp ./gdb/testsuite/gdb.base/bp-cmds-sourced-script.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-sourced-script.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bp-cmds-sourced-script.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,39 @@
+# Copyright 2020-2021 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 that breakpoint commands entered in a GDB script work as
+# expected when the commands are defined for multiple breakpoints.
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} {
+    return -1
+}
+
+set script_file ${srcdir}/${subdir}/$testfile.gdb
+
+gdb_test "source $script_file" \
+    "Breakpoint 1\[^\r\n\]*\r\nBreakpoint 2\[^\r\n\]*" \
+    "source the script"
+
+gdb_run_cmd
+
+gdb_test_multiple "" "commands executed twice" {
+    -re "\\$${decimal} = 100123\r\n\\$${decimal} = 100123\r\n$gdb_prompt $" {
+	pass $gdb_test_name
+    }
+}
+
+gdb_continue_to_end
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-sourced-script.gdb ./gdb/testsuite/gdb.base/bp-cmds-sourced-script.gdb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-cmds-sourced-script.gdb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bp-cmds-sourced-script.gdb	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,20 @@
+# Copyright 2020-2021 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/>.  */
+
+break main
+break main
+commands 1 2
+  print 100123
+end
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-permanent.c ./gdb/testsuite/gdb.base/bp-permanent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-permanent.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bp-permanent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-permanent.exp ./gdb/testsuite/gdb.base/bp-permanent.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bp-permanent.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bp-permanent.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/branch-to-self.c ./gdb/testsuite/gdb.base/branch-to-self.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/branch-to-self.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/branch-to-self.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/branch-to-self.exp ./gdb/testsuite/gdb.base/branch-to-self.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/branch-to-self.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/branch-to-self.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break1.c ./gdb/testsuite/gdb.base/break1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1992-2020 Free Software Foundation, Inc.
+   Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-always.c ./gdb/testsuite/gdb.base/break-always.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-always.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-always.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-always.exp ./gdb/testsuite/gdb.base/break-always.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-always.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-always.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2008-2020 Free Software Foundation, Inc.
+#   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break.c ./gdb/testsuite/gdb.base/break.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1992-2020 Free Software Foundation, Inc.
+   Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-caller-line.c ./gdb/testsuite/gdb.base/break-caller-line.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-caller-line.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-caller-line.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-caller-line.exp ./gdb/testsuite/gdb.base/break-caller-line.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-caller-line.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-caller-line.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-entry.exp ./gdb/testsuite/gdb.base/break-entry.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-entry.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-entry.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break.exp ./gdb/testsuite/gdb.base/break.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1988-2020 Free Software Foundation, Inc.
+#   Copyright 1988-2021 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
@@ -469,10 +469,6 @@ gdb_test "info break" "Num     Type.*Dis
 #
 if ![runto_main] then { fail "break tests suppressed" }
 
-gdb_test "catch" \
-    "Catch requires an event name." \
-    "catch requires an event name"
-
 gdb_test "catch fork" "Catchpoint \[0-9\]+ \\(fork\\)" \
     "set catch fork, never expected to trigger"
 
@@ -583,22 +579,25 @@ gdb_test "clear marker3" {Deleted breakp
 
 # Verify that a breakpoint can be set via a convenience variable.
 #
-gdb_test_no_output "set \$foo=$bp_location11" \
-    "set convenience variable \$foo to bp_location11"
 
-gdb_test "break \$foo" \
-    "Breakpoint (\[0-9\]*) at .*, line $bp_location11.*" \
-    "set breakpoint via convenience variable"
-
-# Verify that GDB responds gracefully to an attempt to set a
-# breakpoint via a convenience variable whose type is not integer.
-#
-gdb_test_no_output "set \$foo=81.5" \
-    "set convenience variable \$foo to 81.5"
-
-gdb_test "break \$foo" \
-    "Convenience variables used in line specs must have integer values.*" \
-    "set breakpoint via non-integer convenience variable disallowed"
+with_test_prefix "set line breakpoint via convenience variable" {
+    gdb_test_no_output "set \$foo=$bp_location11" \
+	"set convenience variable \$foo to bp_location11"
+
+    gdb_test "break \$foo" \
+	"Breakpoint (\[0-9\]*) at .*, line $bp_location11.*"
+
+    # Verify that GDB responds gracefully to an attempt to set a
+    # breakpoint via a convenience variable whose type is not integer.
+    #
+
+    gdb_test_no_output "set \$foo=81.5" \
+	"set convenience variable \$foo to 81.5"
+
+    gdb_test "break \$foo" \
+	"Convenience variables used in line specs must have integer values.*" \
+	"non-integer convenience variable disallowed"
+}
 
 # Verify that we can set and trigger a breakpoint in a user-called function.
 #
@@ -845,29 +844,31 @@ gdb_test_multiple "" $test {
 #
 # Test break via convenience variable with file name
 #
-set line [gdb_get_line_number "set breakpoint 1 here"]
-gdb_test_no_output "set \$l = $line"
 
-set line_actual "-1"
-set test "break ${srcfile}:\$l"
-gdb_test_multiple "$test" $test {
-    -re "Breakpoint $decimal at $hex: file .*break\\.c, line ($decimal)\\.\r\n$gdb_prompt $" {
-        # Save the actual line number on which the breakpoint was
-        # actually set. On some systems (Eg: Ubuntu 16.04 with GCC
-        # version 5.4.0), that line gets completely inlined, including
-        # the call to printf, and so we end up inserting the breakpoint
-        # on one of the following lines instead.
-        set line_actual $expect_out(1,string)
-        pass $test
+with_test_prefix "set line:file breakpoint via convenience variable" {
+    set line [gdb_get_line_number "set breakpoint 1 here"]
+    gdb_test_no_output "set \$l = $line"
+
+    set line_actual "-1"
+    set test "break ${srcfile}:\$l"
+    gdb_test_multiple "$test" $test {
+	-re "Breakpoint $decimal at $hex: file .*break\\.c, line ($decimal)\\.\r\n$gdb_prompt $" {
+	    # Save the actual line number on which the breakpoint was
+	    # actually set. On some systems (Eg: Ubuntu 16.04 with GCC
+	    # version 5.4.0), that line gets completely inlined, including
+	    # the call to printf, and so we end up inserting the breakpoint
+	    # on one of the following lines instead.
+	    set line_actual $expect_out(1,string)
+	    pass $test
+	}
     }
-}
-
-gdb_test_no_output "set \$foo=81.5" \
-    "set convenience variable \$foo to 81.5"
-gdb_test "break $srcfile:\$foo" \
-    "Convenience variables used in line specs must have integer values.*" \
-    "set breakpoint via non-integer convenience variable disallowed"
 
+    gdb_test_no_output "set \$foo=81.5" \
+	"set convenience variable \$foo to 81.5"
+    gdb_test "break $srcfile:\$foo" \
+	"Convenience variables used in line specs must have integer values.*" \
+	"non-integer convenience variable disallowed"
+}
 
 #
 # Test that commands can be cleared without error.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-fun-addr1.c ./gdb/testsuite/gdb.base/break-fun-addr1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-fun-addr1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-fun-addr1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-fun-addr2.c ./gdb/testsuite/gdb.base/break-fun-addr2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-fun-addr2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-fun-addr2.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-fun-addr.exp ./gdb/testsuite/gdb.base/break-fun-addr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-fun-addr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-fun-addr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-idempotent.c ./gdb/testsuite/gdb.base/break-idempotent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-idempotent.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-idempotent.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-idempotent.exp ./gdb/testsuite/gdb.base/break-idempotent.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-idempotent.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-idempotent.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-include.c ./gdb/testsuite/gdb.base/break-include.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-include.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-include.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-include.exp ./gdb/testsuite/gdb.base/break-include.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-include.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-include.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-include.inc ./gdb/testsuite/gdb.base/break-include.inc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-include.inc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-include.inc	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-inline.c ./gdb/testsuite/gdb.base/break-inline.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-inline.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-inline.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-inline.exp ./gdb/testsuite/gdb.base/break-inline.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-inline.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-inline.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-interp.exp ./gdb/testsuite/gdb.base/break-interp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-interp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-interp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -251,6 +251,7 @@ proc test_core {file displacement} {
 	if ![regexp {^(NONE|FOUND-.*)$} $displacement] {
 	    fail $test_displacement
 	}
+	gdb_test_no_output "set verbose off"
 
 	gdb_test "bt" "#\[0-9\]+ +\[^\r\n\]*\\mlibfunc\\M\[^\r\n\]*\r\n#\[0-9\]+ +\[^\r\n\]*\\mmain\\M.*" "core main bt"
     }
@@ -301,6 +302,7 @@ proc test_attach_gdb {file pid displacem
 	if ![regexp {^(NONE|FOUND-.*)$} $displacement] {
 	    fail $test_displacement
 	}
+	gdb_test_no_output "set verbose off"
 
 	gdb_test "bt" "#\[0-9\]+ +\[^\r\n\]*\\mlibfunc\\M\[^\r\n\]*\r\n#\[0-9\]+ +\[^\r\n\]*\\mmain\\M.*" "attach main bt"
 	gdb_exit
@@ -409,19 +411,28 @@ proc test_ld {file ifmain trynosym displ
 
     reach $solib_bp "run" $displacement 1
 
-    gdb_test "bt" "#0 +\[^\r\n\]*\\m(__GI_)?$solib_bp\\M.*" "dl bt"
+    with_test_prefix "first backtrace" {
+	gdb_test_no_output "set verbose off"
+	gdb_test "bt" "#0 +\[^\r\n\]*\\m(__GI_)?$solib_bp\\M.*" "dl bt"
+	gdb_test_no_output "set verbose on"
+    }
 
     if $ifmain {
 	reach "main" continue "NONE"
 
 	reach "libfunc" continue "NONE"
 
-	gdb_test "bt" "#0 +\[^\r\n\]*\\mlibfunc\\M\[^\r\n\]*\r\n#1 +\[^\r\n\]*\\mmain\\M.*" "main bt"
+	with_test_prefix "second backtrace" {
+	    gdb_test_no_output "set verbose off"
+	    gdb_test "bt" "#0 +\[^\r\n\]*\\mlibfunc\\M\[^\r\n\]*\r\n#1 +\[^\r\n\]*\\mmain\\M.*" "main bt"
+	    gdb_test_no_output "set verbose on"
+	}
     }
 
     # Try re-run if the new PIE displacement takes effect.
     gdb_test "kill" "" "kill" {Kill the program being debugged\? \(y or n\) } "y"
     reach $solib_bp "run" $displacement 2
+    gdb_test_no_output "set verbose off"
 
     if $ifmain {
 	test_core $file $displacement
@@ -524,14 +535,15 @@ proc test_ld {file ifmain trynosym displ
 		fail $test_displacement
 	    }
 	}
+	gdb_test_no_output "set verbose off"
     }
 }
 
 # Create separate binaries for each testcase - to make the possible reported
 # problem reproducible after the whole test run finishes.
 
-foreach ldprelink {NO YES} {
-    foreach ldsepdebug {NO IN SEP} {
+foreach_with_prefix ldprelink {NO YES} {
+    foreach_with_prefix ldsepdebug {NO IN SEP} {
 	# Skip running the ldsepdebug test if we do not have system separate
 	# debug info available.
 	if {$interp_system_debug == "" && $ldsepdebug == "SEP"} {
@@ -554,164 +566,160 @@ foreach ldprelink {NO YES} {
 	# possibly unprelinked ld.so to test all the combinations for GDB.
 	set interp_saved ${interp}-saved
 
-	with_test_prefix "$ldname" {
-	    if {$ldsepdebug == "NO"} {
-		file_copy $interp_system $interp
-		# Never call strip-debug before unprelink:
-		# prelink: ...: Section .note.gnu.build-id created after prelinking
-		if ![prelinkNO $interp] {
-		    continue
-		}
-		strip_debug $interp
-	    } elseif {$ldsepdebug == "IN" && $interp_system_debug == ""} {
-		file_copy $interp_system $interp
-	    } elseif {$ldsepdebug == "IN" && $interp_system_debug != ""} {
-		file_copy $interp_system $interp
-		file_copy $interp_system_debug "${interp}.debug"
-		# eu-unstrip: DWARF data in '...' not adjusted for prelinking bias; consider prelink -u
-		if {![prelinkNO $interp] || ![prelinkNO "${interp}.debug"]} {
-		    continue
-		}
-		set test "eu-unstrip unprelinked:[file tail $interp_system] + [file tail $interp_system_debug] to [file tail $interp]"
-		set command "exec eu-unstrip -o $interp $interp ${interp}.debug"
-		verbose -log "command is $command"
-		if [catch $command] {
-		    setup_xfail *-*-*
-		    fail $test
-		    continue
-		} else {
-		    pass $test
-		}
-	    } elseif {$ldsepdebug == "SEP" && $interp_system_debug == ""} {
-		file_copy $interp_system $interp
-		# eu-unstrip: DWARF data in '...' not adjusted for prelinking bias; consider prelink -u
-		if ![prelinkNO $interp] {
-		    continue
-		}
-		gdb_gnu_strip_debug $interp
-	    } elseif {$ldsepdebug == "SEP" && $interp_system_debug != ""} {
-		file_copy $interp_system $interp
-		file_copy $interp_system_debug "${interp}.debug"
-	    }
-
-	    if {$ldsepdebug == "SEP"} {
-		if ![prelinkNO "${interp}.debug"] {
-		    continue
-		}
-	    } else {
-		file delete "${interp}.debug"
+	if {$ldsepdebug == "NO"} {
+	    file_copy $interp_system $interp
+	    # Never call strip-debug before unprelink:
+	    # prelink: ...: Section .note.gnu.build-id created after prelinking
+	    if ![prelinkNO $interp] {
+		continue
 	    }
-
-	    if ![prelink$ldprelink $interp "$interp, second time"] {
+	    strip_debug $interp
+	} elseif {$ldsepdebug == "IN" && $interp_system_debug == ""} {
+	    file_copy $interp_system $interp
+	} elseif {$ldsepdebug == "IN" && $interp_system_debug != ""} {
+	    file_copy $interp_system $interp
+	    file_copy $interp_system_debug "${interp}.debug"
+	    # eu-unstrip: DWARF data in '...' not adjusted for prelinking bias; consider prelink -u
+	    if {![prelinkNO $interp] || ![prelinkNO "${interp}.debug"]} {
 		continue
 	    }
-
-	    if {$ldprelink == "NO"} {
-		set displacement "NONZERO"
+	    set test "eu-unstrip unprelinked:[file tail $interp_system] + [file tail $interp_system_debug] to [file tail $interp]"
+	    set command "exec eu-unstrip -o $interp $interp ${interp}.debug"
+	    verbose -log "command is $command"
+	    if [catch $command] {
+		setup_xfail *-*-*
+		fail $test
+		continue
 	    } else {
-		# x86* kernel loads prelinked PIE binary at its
-		# prelinked address but ppc* kernel loads it at a
-		# random address.  prelink normally skips PIE binaries
-		# during the system scan.
-		set displacement "PRESENT"
+		pass $test
+	    }
+	} elseif {$ldsepdebug == "SEP" && $interp_system_debug == ""} {
+	    file_copy $interp_system $interp
+	    # eu-unstrip: DWARF data in '...' not adjusted for prelinking bias; consider prelink -u
+	    if ![prelinkNO $interp] {
+		continue
 	    }
-	    test_ld $interp 0 [expr {$ldsepdebug == "NO"}] $displacement
+	    gdb_gnu_strip_debug $interp
+	} elseif {$ldsepdebug == "SEP" && $interp_system_debug != ""} {
+	    file_copy $interp_system $interp
+	    file_copy $interp_system_debug "${interp}.debug"
+	}
 
-	    if ![file_copy $interp $interp_saved] {
+	if {$ldsepdebug == "SEP"} {
+	    if ![prelinkNO "${interp}.debug"] {
 		continue
 	    }
+	} else {
+	    file delete "${interp}.debug"
+	}
 
-	    foreach binprelink {NO YES} {
-		foreach binsepdebug {NO IN SEP} {
-		    # "ATTACH" is like "YES" but it is modified during
-		    # run.  It cannot be used for problem
-		    # reproducibility after the testcase ends.
-		    foreach binpie {NO YES ATTACH} {
-			# This combination is not possible, non-PIE (fixed address)
-			# binary cannot be prelinked to any (other) address.
-			if {$binprelink == "YES" && $binpie == "NO"} {
-			    continue
-			}
+	if ![prelink$ldprelink $interp "[file tail $interp], second time"] {
+	    continue
+	}
 
-			set binname "BINprelink${binprelink}debug${binsepdebug}pie${binpie}"
-			set exec $binprefix-$binname
+	if {$ldprelink == "NO"} {
+	    set displacement "NONZERO"
+	} else {
+	    # x86* kernel loads prelinked PIE binary at its
+	    # prelinked address but ppc* kernel loads it at a
+	    # random address.  prelink normally skips PIE binaries
+	    # during the system scan.
+	    set displacement "PRESENT"
+	}
+	test_ld $interp 0 [expr {$ldsepdebug == "NO"}] $displacement
 
-			with_test_prefix "$binname" {
-			    set opts "ldflags=-Wl,$binfile_lib,-rpath,[file dirname $binfile_lib]"
-			    if {$binsepdebug != "NO"} {
-				lappend opts {debug}
-			    }
-			    if {$binpie != "NO"} {
-				lappend opts {pie}
-			    } else {
-				# Debian9/Ubuntu16.10 onwards default to PIE enabled. Ensure it is disabled.
-				lappend opts {nopie}
-			    }
+	if ![file_copy $interp $interp_saved] {
+	    continue
+	}
 
-			    set dir ${exec}.d
-			    set relink_args [build_executable_own_libs ${test}.exp [file tail $exec] $srcfile $opts $interp $dir]
-			    if {$relink_args == ""} {
-				continue
-			    }
+	foreach_with_prefix binprelink {NO YES} {
+	    foreach_with_prefix binsepdebug {NO IN SEP} {
+		# "ATTACH" is like "YES" but it is modified during
+		# run.  It cannot be used for problem
+		# reproducibility after the testcase ends.
+		foreach_with_prefix binpie {NO YES ATTACH} {
+		    # This combination is not possible, non-PIE (fixed address)
+		    # binary cannot be prelinked to any (other) address.
+		    if {$binprelink == "YES" && $binpie == "NO"} {
+			continue
+		    }
 
-			    if {$binsepdebug == "SEP"} {
-				gdb_gnu_strip_debug $exec
-			    }
+		    set binname "BINprelink${binprelink}debug${binsepdebug}pie${binpie}"
+		    set exec $binprefix-$binname
 
-			    if {$binpie == "NO"} {
-				set displacement "NONE"
-			    } elseif {$binprelink == "NO"} {
-				set displacement "NONZERO"
+		    set opts "ldflags=-Wl,$binfile_lib,-rpath,[file dirname $binfile_lib]"
+		    if {$binsepdebug != "NO"} {
+			lappend opts {debug}
+		    }
+		    if {$binpie != "NO"} {
+			lappend opts {pie}
+		    } else {
+			# Debian9/Ubuntu16.10 onwards default to PIE enabled. Ensure it is disabled.
+			lappend opts {nopie}
+		    }
+
+		    set dir ${exec}.d
+		    set relink_args [build_executable_own_libs ${test}.exp [file tail $exec] $srcfile $opts $interp $dir]
+		    if {$relink_args == ""} {
+			continue
+		    }
+
+		    if {$binsepdebug == "SEP"} {
+			gdb_gnu_strip_debug $exec
+		    }
+
+		    if {$binpie == "NO"} {
+			set displacement "NONE"
+		    } elseif {$binprelink == "NO"} {
+			set displacement "NONZERO"
+		    } else {
+			# x86* kernel loads prelinked PIE binary at its prelinked
+			# address but ppc* kernel loads it at a random address.
+			# prelink normally skips PIE binaries during the system scan.
+			set displacement "PRESENT"
+		    }
+
+		    if {[prelink$binprelink $relink_args [file tail $exec]]
+			&& [file_copy $interp_saved $interp]} {
+			# In order to make test names unique wrap the core of this if block
+			# with a test prefix.  Some of the tests performed in the if
+			# condition are repeated within this body.
+			with_test_prefix "INNER" {
+			    if {$binpie != "ATTACH"} {
+				test_ld $exec 1 [expr {$binsepdebug == "NO"}] $displacement
 			    } else {
-				# x86* kernel loads prelinked PIE binary at its prelinked
-				# address but ppc* kernel loads it at a random address.
-				# prelink normally skips PIE binaries during the system scan.
-				set displacement "PRESENT"
-			    }
+				# If the file has been randomly prelinked it must be
+				# "NONZERO".  We could see "ZERO" only if it was unprelinked
+				# and it is now running at the same address - which is 0 but
+				# executable can never run at address 0.
+
+				set displacement "NONZERO"
+				test_attach $exec $displacement $relink_args
 
-			    if {[prelink$binprelink $relink_args [file tail $exec]]
-				&& [file_copy $interp_saved $interp]} {
-				# In order to make test names unique wrap the core of this if block
-				# with a test prefix.  Some of the tests performed in the if
-				# condition are repeated within this body.
-				with_test_prefix "INNER" {
-				    if {$binpie != "ATTACH"} {
-					test_ld $exec 1 [expr {$binsepdebug == "NO"}] $displacement
-				    } else {
-					# If the file has been randomly prelinked it must be
-					# "NONZERO".  We could see "ZERO" only if it was unprelinked
-					# and it is now running at the same address - which is 0 but
-					# executable can never run at address 0.
-
-					set displacement "NONZERO"
-					test_attach $exec $displacement $relink_args
-
-					# ATTACH means that executables and libraries have been
-					# modified after they have been run.  They cannot be reused
-					# for problem reproducibility after the testcase ends in
-					# the ATTACH case.  Therefore they are rather deleted not
-					# to confuse after the run finishes.
-					set exec_debug [system_debug_get $exec]
-					if {$exec_debug != ""} {
-					    # `file delete [glob "${exec_debug}*"]' does not work.
-					    foreach f [glob "${exec_debug}*"] {
-						file delete $f
-					    }
-					}
-					file delete -force $dir
-					# `file delete [glob "${exec}*"]' does not work.
-					foreach f [glob "${exec}*"] {
-					    file delete $f
-					}
+				# ATTACH means that executables and libraries have been
+				# modified after they have been run.  They cannot be reused
+				# for problem reproducibility after the testcase ends in
+				# the ATTACH case.  Therefore they are rather deleted not
+				# to confuse after the run finishes.
+				set exec_debug [system_debug_get $exec]
+				if {$exec_debug != ""} {
+				    # `file delete [glob "${exec_debug}*"]' does not work.
+				    foreach f [glob "${exec_debug}*"] {
+					file delete $f
 				    }
 				}
+				file delete -force $dir
+				# `file delete [glob "${exec}*"]' does not work.
+				foreach f [glob "${exec}*"] {
+				    file delete $f
+				}
 			    }
 			}
 		    }
 		}
 	    }
-
-	    file delete $interp_saved
 	}
+
+	file delete $interp_saved
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-interp-lib.c ./gdb/testsuite/gdb.base/break-interp-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-interp-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-interp-lib.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-interp-main.c ./gdb/testsuite/gdb.base/break-interp-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-interp-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-interp-main.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-main-file-remove-fail.c ./gdb/testsuite/gdb.base/break-main-file-remove-fail.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-main-file-remove-fail.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-main-file-remove-fail.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-main-file-remove-fail.exp ./gdb/testsuite/gdb.base/break-main-file-remove-fail.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-main-file-remove-fail.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-main-file-remove-fail.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-on-linker-gcd-function.cc ./gdb/testsuite/gdb.base/break-on-linker-gcd-function.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-on-linker-gcd-function.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-on-linker-gcd-function.cc	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-on-linker-gcd-function.exp ./gdb/testsuite/gdb.base/break-on-linker-gcd-function.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-on-linker-gcd-function.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-on-linker-gcd-function.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/breakpoint-in-ro-region.c ./gdb/testsuite/gdb.base/breakpoint-in-ro-region.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/breakpoint-in-ro-region.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/breakpoint-in-ro-region.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp ./gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/breakpoint-shadow.c ./gdb/testsuite/gdb.base/breakpoint-shadow.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/breakpoint-shadow.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/breakpoint-shadow.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/breakpoint-shadow.exp ./gdb/testsuite/gdb.base/breakpoint-shadow.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/breakpoint-shadow.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/breakpoint-shadow.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-probes.c ./gdb/testsuite/gdb.base/break-probes.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-probes.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-probes.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-probes.exp ./gdb/testsuite/gdb.base/break-probes.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-probes.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-probes.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-probes-solib.c ./gdb/testsuite/gdb.base/break-probes-solib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-probes-solib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-probes-solib.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-unload-file.c ./gdb/testsuite/gdb.base/break-unload-file.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-unload-file.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-unload-file.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-unload-file.exp ./gdb/testsuite/gdb.base/break-unload-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/break-unload-file.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/break-unload-file.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bt-selected-frame.c ./gdb/testsuite/gdb.base/bt-selected-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bt-selected-frame.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bt-selected-frame.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bt-selected-frame.exp ./gdb/testsuite/gdb.base/bt-selected-frame.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/bt-selected-frame.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/bt-selected-frame.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cached-source-file.c ./gdb/testsuite/gdb.base/cached-source-file.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cached-source-file.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/cached-source-file.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,43 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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 for PR tui/25126.
+
+   The bug is about a regression that makes GDB not reload its source
+   code cache when the inferior's symbols are reloaded, which leads to
+   wrong backtraces/listings.
+
+   This bug is reproducible even without using the TUI.
+
+   The .exp testcase depends on the line numbers and contents from
+   this file  If you change this file, make sure to double-check the
+   testcase.  */
+
+#include <stdio.h>
+
+void
+foo (void)
+{
+  printf ("hello\n"); /* break-here */
+}
+
+int
+main ()
+{
+  foo ();
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cached-source-file.exp ./gdb/testsuite/gdb.base/cached-source-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cached-source-file.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/cached-source-file.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,98 @@
+# Copyright (C) 2020-2021 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 for PR tui/25126.
+#
+# The bug is about a regression that makes GDB not reload its source
+# code cache when the inferior's symbols are reloaded, which leads to
+# wrong backtraces/listings.
+#
+# This bug is reproducible even without using the TUI.
+
+standard_testfile
+
+# Only run on native boards.
+if { [use_gdb_stub] || [target_info gdb_protocol] == "extended-remote" } {
+    return -1
+}
+
+# Because we need to modify the source file later, it's better if we
+# just copy it to our output directory (instead of messing with the
+# user's source directory).
+set newsrc [standard_output_file $testfile].c
+file copy -force -- $srcdir/$subdir/$srcfile $newsrc
+set srcfile $newsrc
+
+if { [prepare_for_testing "failed to prepare" $testfile $srcfile] } {
+    return -1
+}
+
+# Get the line number for the line with the "break-here" marker.
+set bp_line [gdb_get_line_number "break-here" $srcfile]
+
+gdb_assert { [runto "$srcfile:$bp_line"] } \
+    "run to break-here marker"
+
+# Do a "list" and check that the printed line matches the line of the
+# original source file.
+gdb_test_no_output "set listsize 1"
+gdb_test "list" "$bp_line\[ \t\]+printf \\(\"hello\\\\n\"\\); /\\* break-here \\*/" \
+    "check the first version of the source file"
+
+# Modify the original source file, and add an extra line into it.
+# This only works locally because of the TCL commands.
+set bkpsrc [standard_output_file $testfile].c.bkp
+set bkpsrcfd [open $bkpsrc w]
+set srcfd [open $srcfile r]
+
+while { [gets $srcfd line] != -1 } {
+    if { [string first "break-here" $line] != -1 } {
+	# Put a "printf" line before the "break-here" line.
+	puts $bkpsrcfd "  printf (\"foo\\n\"); /* new-marker */"
+    }
+    puts $bkpsrcfd $line
+}
+
+close $bkpsrcfd
+close $srcfd
+file rename -force -- $bkpsrc $srcfile
+# We have to wait 1 second because of the way GDB checks whether the
+# binary has changed or not.  GDB uses stat(2) and currently checks
+# 'st_mtime', whose precision is measured in seconds.  Since the copy,
+# rename, and rebuild can take less than 1 second, GDB might mistakenly
+# assume that the binary is unchanged.
+sleep 1
+
+# Recompile the modified source.  We use "gdb_compile" here instead of
+# "prepare_for_testing" because we don't want to call "clean_restart".
+if { [gdb_compile "${srcfile}" "${binfile}" executable {debug}] != "" } {
+    return -1
+}
+
+# Rerun the program.  This should not only force GDB to reload the
+# source cache, but also to break at BP_LINE again, which now has
+# different contents.
+gdb_test_multiple "run" "rerun program" {
+    -re {The program being debugged has been started already\.\r\nStart it from the beginning\? \(y or n\) $} {
+	set binregex [string_to_regexp $binfile]
+	gdb_test "y" "\\`$binregex\\' has changed; re-reading symbols\.\r\nStarting program: ${binregex}.*" \
+	    "rerun program"
+    }
+}
+
+# Again, perform the listing and check that the line indeed has
+# changed for GDB.
+gdb_test "list" "${bp_line}\[ \t\]+printf \\(\"foo\\\\n\"\\); /\\\* new-marker \\\*/.*" \
+    "verify that the source code is properly reloaded"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-ar-st.exp ./gdb/testsuite/gdb.base/call-ar-st.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-ar-st.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/call-ar-st.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/callexit.c ./gdb/testsuite/gdb.base/callexit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/callexit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/callexit.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/callexit.exp ./gdb/testsuite/gdb.base/callexit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/callexit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/callexit.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/callfuncs.c ./gdb/testsuite/gdb.base/callfuncs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/callfuncs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/callfuncs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1993-2020 Free Software Foundation, Inc.
+   Copyright 1993-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/callfuncs.exp ./gdb/testsuite/gdb.base/callfuncs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/callfuncs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/callfuncs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
@@ -224,13 +224,13 @@ proc do_function_calls {prototypes} {
 
     if [support_complex_tests] {
 
-	gdb_test "p t_structs_fc(struct_val1)" ".*= 3 \\+ 3 \\* I" \
+	gdb_test "p t_structs_fc(struct_val1)" ".*= 3 \\+ 3i" \
 	    "call inferior func with struct - returns float _Complex"
 
-	gdb_test "p t_structs_dc(struct_val1)" ".*= 4 \\+ 4 \\* I" \
+	gdb_test "p t_structs_dc(struct_val1)" ".*= 4 \\+ 4i" \
 	    "call inferior func with struct - returns double _Complex"
 
-	gdb_test "p t_structs_ldc(struct_val1)" "= 5 \\+ 5 \\* I" \
+	gdb_test "p t_structs_ldc(struct_val1)" "= 5 \\+ 5i" \
 	    "call inferior func with struct - returns long double _Complex"
     }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-rt-st.exp ./gdb/testsuite/gdb.base/call-rt-st.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-rt-st.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/call-rt-st.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-sc.c ./gdb/testsuite/gdb.base/call-sc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-sc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/call-sc.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-sc.exp ./gdb/testsuite/gdb.base/call-sc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-sc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/call-sc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
@@ -55,21 +55,10 @@ proc start_scalars_test { type } {
     set testfile "call-sc-${type}"
 
     set binfile [standard_output_file ${testfile}]
-    if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "${flags}"] != "" } {
-	# built the second test case since we can't use prototypes
-	warning "Prototypes not supported, rebuilding with -DNO_PROTOTYPES"
-	if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "${flags} additional_flags=-DNO_PROTOTYPES"] != "" } {
-	    untested "failed to compile"
-	    return -1
-	}
+    if { [prepare_for_testing "failed to prepare" $binfile $srcfile $flags] } {
+	return -1
     }
 
-    # Start with a fresh gdb.
-    gdb_exit
-    gdb_start
-    gdb_reinitialize_dir $srcdir/$subdir
-    gdb_load ${binfile}
-
     # Make certain that the output is consistent
     with_test_prefix "testfile=$testfile" {
 	gdb_test_no_output "set print sevenbit-strings"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-signal-resume.exp ./gdb/testsuite/gdb.base/call-signal-resume.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-signal-resume.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/call-signal-resume.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-signals.c ./gdb/testsuite/gdb.base/call-signals.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-signals.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/call-signals.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-strs.exp ./gdb/testsuite/gdb.base/call-strs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/call-strs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/call-strs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-follow-exec.c ./gdb/testsuite/gdb.base/catch-follow-exec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-follow-exec.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-follow-exec.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-follow-exec.exp ./gdb/testsuite/gdb.base/catch-follow-exec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-follow-exec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-follow-exec.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-fork-kill.c ./gdb/testsuite/gdb.base/catch-fork-kill.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-fork-kill.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-fork-kill.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-fork-kill.exp ./gdb/testsuite/gdb.base/catch-fork-kill.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-fork-kill.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-fork-kill.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-fork-static.exp ./gdb/testsuite/gdb.base/catch-fork-static.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-fork-static.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-fork-static.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-gdb-caused-signals.c ./gdb/testsuite/gdb.base/catch-gdb-caused-signals.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-gdb-caused-signals.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-gdb-caused-signals.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-gdb-caused-signals.exp ./gdb/testsuite/gdb.base/catch-gdb-caused-signals.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-gdb-caused-signals.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-gdb-caused-signals.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-load.c ./gdb/testsuite/gdb.base/catch-load.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-load.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-load.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-load.exp ./gdb/testsuite/gdb.base/catch-load.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-load.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-load.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -46,8 +46,7 @@ if { [gdb_compile_shlib "${srcdir}/${sub
 # MATCH is a boolean saying whether we expect the catchpoint to be hit.
 proc one_catch_load_test {scenario kind match sostop} {
     with_test_prefix "${scenario}" {
-	global verbose testfile testfile2 binfile2 binfile2_dlopen
-	global srcfile
+	global testfile testfile2 binfile2 binfile2_dlopen
 	global decimal gdb_prompt
 
 	clean_restart $testfile
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-load-so.c ./gdb/testsuite/gdb.base/catch-load-so.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-load-so.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-load-so.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal.c ./gdb/testsuite/gdb.base/catch-signal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-signal.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal.exp ./gdb/testsuite/gdb.base/catch-signal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-signal.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal-fork.c ./gdb/testsuite/gdb.base/catch-signal-fork.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal-fork.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-signal-fork.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal-fork.exp ./gdb/testsuite/gdb.base/catch-signal-fork.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal-fork.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-signal-fork.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal-siginfo-cond.c ./gdb/testsuite/gdb.base/catch-signal-siginfo-cond.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal-siginfo-cond.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-signal-siginfo-cond.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal-siginfo-cond.exp ./gdb/testsuite/gdb.base/catch-signal-siginfo-cond.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-signal-siginfo-cond.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-signal-siginfo-cond.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-syscall.exp ./gdb/testsuite/gdb.base/catch-syscall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/catch-syscall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/catch-syscall.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
@@ -593,14 +593,14 @@ proc test_catch_syscall_multi_arch {} {
 	gdb_start
 
 	gdb_test "set architecture $arch1" \
-	    "The target architecture is assumed to be $arch1"
+	    "The target architecture is set to \"$arch1\"\\."
 
 	gdb_test "catch syscall $syscall_number" \
 	    "Catchpoint $decimal \\(syscall .${syscall1_name}. \\\[${syscall_number}\\\]\\)" \
 	    "insert catch syscall on syscall $syscall_number -- $syscall1_name on $arch1"
 
 	gdb_test "set architecture $arch2" \
-	    "The target architecture is assumed to be $arch2"
+	    "The target architecture is set to \"$arch2\"\\."
 
 	gdb_test "catch syscall $syscall_number" \
 	    "Catchpoint $decimal \\(syscall .${syscall2_name}. \\\[${syscall_number}\\\]\\)" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/charset.c ./gdb/testsuite/gdb.base/charset.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/charset.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/charset.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2001-2020 Free Software Foundation, Inc.
+   Copyright 2001-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat, originally written by Jim Blandy.
 
@@ -77,12 +77,21 @@ short short_array[3];
 int int_array[3];
 long long_array[3];
 
+/* These are unsigned char so we can pass down characters >127 without
+   explicit casts or warnings.  */
+
 void
 init_string (char string[],
-             char x,
-             char alert, char backspace, char form_feed,
-             char line_feed, char carriage_return, char horizontal_tab,
-             char vertical_tab, char cent, char misc_ctrl)
+	     unsigned char x,
+	     unsigned char alert,
+	     unsigned char backspace,
+	     unsigned char form_feed,
+	     unsigned char line_feed,
+	     unsigned char carriage_return,
+	     unsigned char horizontal_tab,
+	     unsigned char vertical_tab,
+	     unsigned char cent,
+	     unsigned char misc_ctrl)
 {
   int i;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/charset.exp ./gdb/testsuite/gdb.base/charset.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/charset.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/charset.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2001-2020 Free Software Foundation, Inc.
+# Copyright 2001-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/charset-malloc.c ./gdb/testsuite/gdb.base/charset-malloc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/charset-malloc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/charset-malloc.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat, originally written by Jim Blandy.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/checkpoint.c ./gdb/testsuite/gdb.base/checkpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/checkpoint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/checkpoint.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/checkpoint.exp ./gdb/testsuite/gdb.base/checkpoint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/checkpoint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/checkpoint.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2005-2020 Free Software Foundation, Inc.
+#   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/checkpoint-ns.exp ./gdb/testsuite/gdb.base/checkpoint-ns.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/checkpoint-ns.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/checkpoint-ns.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/check-psymtab.c ./gdb/testsuite/gdb.base/check-psymtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/check-psymtab.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/check-psymtab.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,28 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+static inline int __attribute__((__always_inline__))
+foo (void)
+{
+  return 0;
+}
+
+int
+main (void)
+{
+  return foo ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/check-psymtab.exp ./gdb/testsuite/gdb.base/check-psymtab.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/check-psymtab.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/check-psymtab.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,26 @@
+# Copyright 2020-2021 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/>.  */
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} {
+    return -1
+}
+
+gdb_test_no_output "maint expand-symtabs"
+
+# Check that we don't get:
+#   Static symbol `foo' only found in check-psymtab.c psymtab
+gdb_test_no_output "maint check-psymtab"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/chng-syms.exp ./gdb/testsuite/gdb.base/chng-syms.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/chng-syms.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/chng-syms.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/c-linkage-name-2.c ./gdb/testsuite/gdb.base/c-linkage-name-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/c-linkage-name-2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/c-linkage-name-2.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,45 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2018-2021 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/>.  */
+
+struct wrapper
+{
+  int a;
+};
+
+/* Create a global variable whose name in the assembly code
+   (aka the "linkage name") is different from the name in
+   the source code.  The goal is to create a symbol described
+   in DWARF using a DW_AT_linkage_name attribute, with a name
+   which follows the C++ mangling.
+
+   In this particular case, we chose "symada__cS" which, if it were
+   demangled, would translate to "symada (char, signed)".  */
+struct wrapper mundane asm ("symada__cS") = {0x060287af};
+
+void
+do_something (struct wrapper *w)
+{
+  w->a++;
+}
+
+extern void do_something_other_cu (void);
+
+void
+do_something_other_cu (void)
+{
+  do_something (&mundane);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/c-linkage-name.c ./gdb/testsuite/gdb.base/c-linkage-name.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/c-linkage-name.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/c-linkage-name.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
@@ -15,30 +15,11 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-struct wrapper
-{
-  int a;
-};
-
-/* Create a global variable whose name in the assembly code
-   (aka the "linkage name") is different from the name in
-   the source code.  The goal is to create a symbol described
-   in DWARF using a DW_AT_linkage_name attribute, with a name
-   which follows the C++ mangling.
-
-   In this particular case, we chose "symada__cS" which, if it were
-   demangled, would translate to "symada (char, signed)".  */
-struct wrapper mundane asm ("symada__cS") = {0x060287af};
-
-void
-do_something (struct wrapper *w)
-{
-  w->a++;
-}
+extern void do_something_other_cu (void);
 
 int
 main (void)
 {
-  do_something (&mundane);
+  do_something_other_cu ();
   return 0;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/c-linkage-name.exp ./gdb/testsuite/gdb.base/c-linkage-name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/c-linkage-name.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/c-linkage-name.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -14,30 +14,57 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # This file is part of the gdb testsuite.  It is intended to test that
-# gdb can correctly print arrays with indexes for each element of the
-# array.
+# gdb can correctly print an ada symbol with linkage name before and after
+# symtab expansion.
 
-standard_testfile .c
+standard_testfile c-linkage-name.c c-linkage-name-2.c
 
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
+set sources "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile2}"
+if { [gdb_compile "${sources}" "${binfile}" executable {debug}] != "" } {
     untested "failed to compile"
     return -1
 }
 
-clean_restart ${binfile}
+clean_restart
+gdb_test_no_output "set language c"
+gdb_load ${binfile}
+set readnow [readnow]
+
+set test "verify no symtab expansion"
+if { $readnow } {
+    unsupported $test
+} else {
+    # Verify that symtab expansion has not taken place.
 
-# Try to print MUNDANE, but using its linkage name.
+    gdb_test_no_output "maint info symtabs" $test
+}
 
-gdb_test "print symada__cS" \
-         " = {a = 100829103}" \
-         "print symada__cS before partial symtab expansion"
+set test "print symada__cS before partial symtab expansion"
+if { $readnow } {
+    unsupported $test
+} else {
+    # Try to print MUNDANE, but using its linkage name.
+
+    gdb_test "print symada__cS" \
+	" = {a = 100829103}" \
+	"print symada__cS before partial symtab expansion"
+}
 
 # Force the symbols to be expanded for the unit that contains
 # our symada__cS symbol by, e.g. inserting a breakpoint on one
 # of the founction also provided by the same using.
 
-gdb_test "break main" \
-         "Breakpoint $decimal at $hex: file .*$srcfile, line $decimal\\."
+gdb_test "break do_something_other_cu" \
+         "Breakpoint $decimal at $hex: file .*$srcfile2, line $decimal\\."
+
+# Verify that partial symtab expansion has taken place for
+# c-linkage-name-2.c.
+
+gdb_test "maint info symtabs" "\{ symtab \[^\r\n\]*c-linkage-name-2.c.*"
+
+# Flush the symbol cache to prevent the lookup to return the same as before.
+
+gdb_test "maint flush-symbol-cache"
 
 # Try to print MUNDANE using its linkage name again, after partial
 # symtab expansion.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/code_elim1.c ./gdb/testsuite/gdb.base/code_elim1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/code_elim1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/code_elim1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/code_elim2.c ./gdb/testsuite/gdb.base/code_elim2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/code_elim2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/code_elim2.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/code_elim.exp ./gdb/testsuite/gdb.base/code_elim.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/code_elim.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/code_elim.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/code-expr.exp ./gdb/testsuite/gdb.base/code-expr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/code-expr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/code-expr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#   Copyright (C) 2001-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/command-line-input.exp ./gdb/testsuite/gdb.base/command-line-input.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/command-line-input.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/command-line-input.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/commands.exp ./gdb/testsuite/gdb.base/commands.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/commands.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/commands.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1988-2020 Free Software Foundation, Inc.
+#   Copyright 1988-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/compare-sections.c ./gdb/testsuite/gdb.base/compare-sections.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/compare-sections.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/compare-sections.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/compare-sections.exp ./gdb/testsuite/gdb.base/compare-sections.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/compare-sections.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/compare-sections.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/complete-empty.exp ./gdb/testsuite/gdb.base/complete-empty.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/complete-empty.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/complete-empty.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/completion.exp ./gdb/testsuite/gdb.base/completion.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/completion.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/completion.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
@@ -310,7 +310,7 @@ gdb_test_multiple "" "$test" {
     -re "^info $" {
 	send_gdb "\n"
 	gdb_test_multiple "" "$test" {
-	    -re "\"info\" must be followed by the name of an info command\\.\r\nList of info subcommands.*$gdb_prompt $" {
+	    -re "List of info subcommands.*$gdb_prompt $" {
 		pass "$test"
 	    }
 	}
@@ -323,7 +323,7 @@ gdb_test_multiple "" "$test" {
     -re "^info \\\x07$" {
 	send_gdb "\n"
 	gdb_test_multiple "" "$test" {
-	    -re "\"info\" must be followed by the name of an info command\\.\r\nList of info subcommands:\r\n\r\n.*$gdb_prompt $" {
+	    -re "List of info subcommands:\r\n\r\n.*$gdb_prompt $" {
 		pass "$test"
 	    }
 	}
@@ -339,7 +339,7 @@ gdb_test_multiple "" "$test" {
 	    -re "address.*types.*$gdb_prompt " {
 		send_gdb "\n"
 		gdb_test_multiple "" "$test" {
-		    -re "\"info\".*unambiguous\\..*$gdb_prompt $" {
+		    -re "allowed if unambiguous\\..*$gdb_prompt $" {
 			pass "$test"
 		    }
 		}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/complex.c ./gdb/testsuite/gdb.base/complex.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/complex.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/complex.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2002-2020 Free Software Foundation, Inc.
+/* Copyright 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/complex.exp ./gdb/testsuite/gdb.base/complex.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/complex.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/complex.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
@@ -29,12 +29,12 @@ if [runto f2] then {
     if { [test_compiler_info gcc-2-*] && [test_debug_format "DWARF 2"] } then {
 	setup_xfail "*-*-*"
     }
-    gdb_test "p *y" "\\\$\[0-9\]* = \{c = 42 '\\*', f = 1 \\+ 0 \\* I\}" \
+    gdb_test "p *y" "\\\$\[0-9\]* = \{c = 42 '\\*', f = 1 \\+ 0i\}" \
 	    "print complex packed value in C"
 }
 
 if [runto f4] then {
-    gdb_test "p *y" "\\\$\[0-9\]* = \{c = 42 '\\*', f = 1 \\+ 0 \\* I\}" \
+    gdb_test "p *y" "\\\$\[0-9\]* = \{c = 42 '\\*', f = 1 \\+ 0i\}" \
 	    "print complex value in C"
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/complex-parts.c ./gdb/testsuite/gdb.base/complex-parts.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/complex-parts.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/complex-parts.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/complex-parts.exp ./gdb/testsuite/gdb.base/complex-parts.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/complex-parts.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/complex-parts.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -27,31 +27,43 @@ if { ![runto_main] } then {
 gdb_breakpoint [gdb_get_line_number "Break Here"]
 gdb_continue_to_breakpoint "breakpt" ".* Break Here\\. .*"
 
-gdb_test "p z1" " = 1.5 \\+ 4.5 \\* I"
-gdb_test "p z2" " = 2.5 \\+ -5.5 \\* I"
-gdb_test "p z3" " = 3.5 \\+ 6.5 \\* I"
+gdb_test "p z1" " = 1.5 \\+ 4.5i"
+gdb_test "p z2" " = 2.5 \\+ -5.5i"
+gdb_test "p z3" " = 3.5 \\+ 6.5i"
 
 gdb_test "ptype z1" " = complex double"
 gdb_test "ptype z2" " = complex float"
 gdb_test "ptype z3" " = complex long double"
 
-gdb_test "p \$_cimag (z1)" " = 4.5"
-gdb_test "ptype \$" " = double"
+with_test_prefix "double imaginary" {
+    gdb_test "p \$_cimag (z1)" " = 4.5"
+    gdb_test "ptype \$" " = double"
+}
 
-gdb_test "p \$_cimag (z2)" " = -5.5"
-gdb_test "ptype \$" " = float"
+with_test_prefix "float imaginary" {
+    gdb_test "p \$_cimag (z2)" " = -5.5"
+    gdb_test "ptype \$" " = float"
+}
 
-gdb_test "p \$_cimag (z3)" " = 6.5"
-gdb_test "ptype \$" " = long double"
+with_test_prefix "long double imaginary" {
+    gdb_test "p \$_cimag (z3)" " = 6.5"
+    gdb_test "ptype \$" " = long double"
+}
 
-gdb_test "p \$_creal (z1)" " = 1.5"
-gdb_test "ptype \$" " = double"
+with_test_prefix "double real" {
+    gdb_test "p \$_creal (z1)" " = 1.5"
+    gdb_test "ptype \$" " = double"
+}
 
-gdb_test "p \$_creal (z2)" " = 2.5"
-gdb_test "ptype \$" " = float"
+with_test_prefix "float real" {
+    gdb_test "p \$_creal (z2)" " = 2.5"
+    gdb_test "ptype \$" " = float"
+}
 
-gdb_test "p \$_creal (z3)" " = 3.5"
-gdb_test "ptype \$" " = long double"
+with_test_prefix "long double real" {
+    gdb_test "p \$_creal (z3)" " = 3.5"
+    gdb_test "ptype \$" " = long double"
+}
 
 gdb_test "p \$_cimag (d1)" "expected a complex number"
 gdb_test "p \$_cimag (f1)" "expected a complex number"
@@ -60,3 +72,34 @@ gdb_test "p \$_cimag (i1)" "expected a c
 gdb_test "p \$_creal (d1)" "expected a complex number"
 gdb_test "p \$_creal (f1)" "expected a complex number"
 gdb_test "p \$_creal (i1)" "expected a complex number"
+
+#
+# General complex number tests.
+#
+
+gdb_test "print 23 + 7i" " = 23 \\+ 7i"
+gdb_test "print 23.125f + 7i" " = 23.125 \\+ 7i"
+gdb_test "print 23 + 7.25fi" " = 23 \\+ 7.25i"
+gdb_test "print (23 + 7i) + (17 + 10i)" " = 40 \\+ 17i"
+gdb_test "print 23 + -7i" " = 23 \\+ -7i"
+gdb_test "print 23 - 7i" " = 23 \\+ -7i"
+
+gdb_test "print -(23 + 7i)" " = -23 \\+ -7i"
+gdb_test "print +(23 + 7i)" " = 23 \\+ 7i"
+gdb_test "print ~(23 + 7i)" " = 23 \\+ -7i"
+
+gdb_test "print (5 + 5i) * (2 + 2i)" " = 0 \\+ 20i"
+
+gdb_test "print (5 + 7i) == (5 + 7i)" " = 1"
+gdb_test "print (5 + 7i) == (8 + 7i)" " = 0"
+gdb_test "print (5 + 7i) == (5 + 92i)" " = 0"
+gdb_test "print (5 + 7i) != (5 + 7i)" " = 0"
+gdb_test "print (5 + 7i) != (8 + 7i)" " = 1"
+gdb_test "print (5 + 7i) != (5 + 92i)" " = 1"
+
+gdb_test "print (20 - 4i) / (3 + 2i)" " = 4 \\+ -4i"
+
+gdb_test "print (_Complex int) 4" " = 4 \\+ 0i"
+gdb_test "print (_Complex float) 4.5" " = 4.5 \\+ 0i"
+gdb_test "ptype __complex__ short" " = _Complex short"
+gdb_test "print (_Complex int) (23.75 + 8.88i)" " = 23 \\+ 8i"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/comprdebug.exp ./gdb/testsuite/gdb.base/comprdebug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/comprdebug.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/comprdebug.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/condbreak-bad.c ./gdb/testsuite/gdb.base/condbreak-bad.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/condbreak-bad.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/condbreak-bad.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main ()
+{
+  int a = 10;
+  a = a + 1; /* break-here */
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/condbreak-bad.exp ./gdb/testsuite/gdb.base/condbreak-bad.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/condbreak-bad.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/condbreak-bad.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,128 @@
+# Copyright 2020-2021 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 defining bad conditions for breakpoints.
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" ${binfile} ${srcfile}]} {
+    return
+}
+
+set bp_location [gdb_get_line_number "break-here"]
+gdb_breakpoint "$bp_location"
+set bpnum [get_integer_valueof "\$bpnum" 0 "get bpnum"]
+
+# Define a 'bad' condition.  The breakpoint should stay unconditional.
+gdb_test "cond $bpnum gibberish" \
+    "No symbol \"gibberish\" in current context." \
+    "attempt a bad condition"
+
+set fill "\[^\r\n\]*"
+
+gdb_test "info break" \
+    [multi_line \
+	 "Num${fill}What" \
+	 "${decimal}${fill}breakpoint${fill}keep y${fill}:${bp_location}"] \
+    "breakpoint is unconditional"
+
+# Now define a valid condition.  Attempt to override that with a 'bad'
+# condition again.  The condition should be preserved.
+with_test_prefix "with run" {
+    gdb_test_no_output "cond $bpnum a == 10"
+
+    gdb_test "cond $bpnum gibberish" \
+	"No symbol \"gibberish\" in current context." \
+	"attempt a bad condition"
+
+    gdb_test "info break" \
+	[multi_line \
+	     "Num${fill}What" \
+	     "${decimal}${fill}breakpoint${fill}keep y${fill}:${bp_location}" \
+	     "${fill}stop only if a == 10${fill}"] \
+	"breakpoint condition is preserved"
+
+    # Run the code.  We should hit the breakpoint, because the
+    # condition evaluates to true.
+
+    gdb_run_cmd
+    gdb_test "" ".*reakpoint .*, main .*${srcfile}.*" "run to the bp"
+}
+
+# Restart.  Repeat the test above after the program has started.
+# This is needed to check a scenario where the breakpoints are no
+# longer re-inserted due to solib events.  Note that runto_main
+# deletes the breakpoints.
+with_test_prefix "with continue 1" {
+    if {![runto_main]} {
+	fail "could not run to main"
+	return -1
+    }
+
+    gdb_breakpoint "$bp_location"
+    set bpnum [get_integer_valueof "\$bpnum" 0 "get bpnum"]
+
+    gdb_test_no_output "cond $bpnum a == 10"
+
+    gdb_test "cond $bpnum gibberish" \
+	"No symbol \"gibberish\" in current context." \
+	"attempt a bad condition"
+
+    # Resume.  We should hit the breakpoint, because the
+    # condition evaluates to true.
+    gdb_continue_to_breakpoint "${srcfile}:${bp_location}"
+}
+
+# Repeat with a condition that evaluates to false.
+with_test_prefix "with continue 2" {
+    if {![runto_main]} {
+	fail "could not run to main"
+	return -1
+    }
+
+    gdb_breakpoint "$bp_location"
+    set bpnum [get_integer_valueof "\$bpnum" 0 "get bpnum"]
+
+    gdb_test_no_output "cond $bpnum a == 999"
+    
+    gdb_test "cond $bpnum gibberish" \
+	"No symbol \"gibberish\" in current context." \
+	"attempt a bad condition"
+
+    # Resume.  We should *not* hit the breakpoint, because the
+    # condition evaluates to false.
+    gdb_continue_to_end
+}
+
+# Repeat with a condition that contains junk at the end.
+with_test_prefix "with junk" {
+    if {![runto_main]} {
+	fail "could not run to main"
+	return -1
+    }
+
+    gdb_breakpoint "$bp_location"
+    set bpnum [get_integer_valueof "\$bpnum" 0 "get bpnum"]
+
+    gdb_test_no_output "cond $bpnum a == 999"
+
+    gdb_test "cond $bpnum a == 10 if" \
+	"Junk at end of expression" \
+	"attempt a bad condition"
+
+    # Resume.  We should *not* hit the breakpoint, because the
+    # condition evaluates to false.
+    gdb_continue_to_end
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/condbreak-call-false.c ./gdb/testsuite/gdb.base/condbreak-call-false.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/condbreak-call-false.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/condbreak-call-false.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/condbreak-call-false.exp ./gdb/testsuite/gdb.base/condbreak-call-false.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/condbreak-call-false.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/condbreak-call-false.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/condbreak.exp ./gdb/testsuite/gdb.base/condbreak.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/condbreak.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/condbreak.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cond-eval-mode.c ./gdb/testsuite/gdb.base/cond-eval-mode.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cond-eval-mode.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/cond-eval-mode.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cond-eval-mode.exp ./gdb/testsuite/gdb.base/cond-eval-mode.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cond-eval-mode.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/cond-eval-mode.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2012-2020 Free Software Foundation, Inc.
+#   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cond-expr.exp ./gdb/testsuite/gdb.base/cond-expr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cond-expr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/cond-expr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/consecutive.exp ./gdb/testsuite/gdb.base/consecutive.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/consecutive.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/consecutive.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2001-2020 Free Software Foundation, Inc.
+#   Copyright 2001-2021 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
@@ -35,6 +35,8 @@ if ![runto_main] then {
     continue
 }
 
+set is_stmt [is_stmt_addresses $srcfile]
+
 set nl "\[\r\n\]+"
 
 gdb_breakpoint foo
@@ -55,12 +57,23 @@ gdb_test "break \*$bp_addr" "Breakpoint
 	"set bp, 2nd instr"
 
 gdb_test_multiple "step" "stopped at bp, 2nd instr" {
-    -re "Breakpoint $decimal, ($hex) in foo.*$gdb_prompt $" {
+    -re -wrap "Breakpoint $decimal, ($hex) in foo.*" {
 	set stop_addr $expect_out(1,string)
 	if [eval expr "$bp_addr == $stop_addr"] then {
 	    pass "stopped at bp, 2nd instr"
 	} else {
 	    fail "stopped at bp, 2nd instr (wrong address)"
+	}
+    }
+    -re -wrap "Breakpoint $decimal, foo.*" {
+	set stop_addr [get_valueof "/x" "\$pc" "" "value of pc"]
+	set stop_addr_is_stmt [hex_in_list $stop_addr $is_stmt]
+	if { ! $stop_addr_is_stmt } {
+	    fail "stopped at bp, 2nd instr (missing hex prefix)"
+	} elseif [eval expr "$bp_addr == $stop_addr"] then {
+	    pass "stopped at bp, 2nd instr"
+	} else {
+	    fail "stopped at bp, 2nd instr (wrong address)"
 	}
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/consecutive-step-over.c ./gdb/testsuite/gdb.base/consecutive-step-over.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/consecutive-step-over.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/consecutive-step-over.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/consecutive-step-over.exp ./gdb/testsuite/gdb.base/consecutive-step-over.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/consecutive-step-over.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/consecutive-step-over.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/constvars.exp ./gdb/testsuite/gdb.base/constvars.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/constvars.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/constvars.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/continue-after-aborted-step-over.c ./gdb/testsuite/gdb.base/continue-after-aborted-step-over.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/continue-after-aborted-step-over.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/continue-after-aborted-step-over.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp ./gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/continue-all-already-running.c ./gdb/testsuite/gdb.base/continue-all-already-running.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/continue-all-already-running.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/continue-all-already-running.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/continue-all-already-running.exp ./gdb/testsuite/gdb.base/continue-all-already-running.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/continue-all-already-running.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/continue-all-already-running.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/coredump-filter-build-id.exp ./gdb/testsuite/gdb.base/coredump-filter-build-id.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/coredump-filter-build-id.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/coredump-filter-build-id.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/coredump-filter.c ./gdb/testsuite/gdb.base/coredump-filter.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/coredump-filter.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/coredump-filter.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -29,7 +29,7 @@ do_mmap (void *addr, size_t size, int pr
 {
   void *ret = mmap (addr, size, prot, flags, fd, offset);
 
-  assert (ret != NULL);
+  assert (ret != MAP_FAILED);
   return ret;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/coredump-filter.exp ./gdb/testsuite/gdb.base/coredump-filter.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/coredump-filter.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/coredump-filter.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -80,15 +80,26 @@ proc do_load_and_test_core { core var wo
 # disassemble of a function (i.e., the binary's .text section).  GDB
 # should fail in this case.  However, it must succeed if the binary is
 # provided along with the corefile.  This is what we test here.
+#
+# A further complication is that Linux NT_FILE notes are now read from
+# the corefile.  This note allows GDB to find the binary for file
+# backed mappings even though the binary wasn't loaded by GDB in the
+# conventional manner.  In order to see the expected failure for this
+# case, we rename the binary in order to perform this test.
 
 proc test_disasm { core address should_fail } {
-    global testfile hex
+    global testfile hex binfile
 
     # Restart GDB without loading the binary.
     with_test_prefix "no binary" {
 	gdb_exit
 	gdb_start
 
+	set hide_binfile [standard_output_file "${testfile}.hide"]
+	if { $should_fail == 1 } {
+	    remote_exec host "mv -f $binfile $hide_binfile"
+	}
+
 	set core_loaded [gdb_core_cmd "$core" "load core"]
 	if { $core_loaded == -1 } {
 	    fail "loading $core"
@@ -96,6 +107,7 @@ proc test_disasm { core address should_f
 	}
 
 	if { $should_fail == 1 } {
+	    remote_exec host "mv -f $hide_binfile $binfile"
 	    gdb_test "x/i \$pc" "=> $hex:\tCannot access memory at address $hex" \
 		"disassemble function with corefile and without a binary"
 	} else {
@@ -225,5 +237,9 @@ foreach item $all_anon_corefiles {
 }
 
 with_test_prefix "loading and testing corefile for non-Private-Shared-Anon-File" {
+    test_disasm $non_private_shared_anon_file_core $main_addr 0
+}
+
+with_test_prefix "loading and testing corefile for non-Private-Shared-Anon-File with renamed binary" {
     test_disasm $non_private_shared_anon_file_core $main_addr 1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile2.exp ./gdb/testsuite/gdb.base/corefile2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile2.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/corefile2.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,212 @@
+# Copyright 2020-2021 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/>.
+
+# Tests of core file memory accesses when mmap() has been used to
+# create a "hole" of zeroes over pre-existing memory regions.  See
+# coremaker2.c for details.
+
+# are we on a target board
+if ![isnative] then {
+    return
+}
+
+# Some of these tests will only work on GNU/Linux due to the
+# fact that Linux core files includes a section describing
+# memory address to file mappings.  We'll use set_up_xfail for the
+# affected tests.  As other targets become supported, the condition
+# can be changed accordingly.
+
+set xfail 0
+if { ![istarget *-linux*] } {
+    set xfail 1
+}
+
+standard_testfile coremaker2.c
+
+if {[build_executable $testfile.exp $testfile $srcfile debug] == -1} {
+    untested "failed to compile"
+    return -1
+}
+
+set corefile [core_find $binfile {}]
+if {$corefile == ""} {
+    return 0
+}
+
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+# Attempt to load the core file.
+
+gdb_test_multiple "core-file $corefile" "core-file command" {
+    -re ".* program is being debugged already.*y or n. $" {
+	# gdb_load may connect us to a gdbserver.
+	send_gdb "y\n"
+	exp_continue
+    }
+    -re "Core was generated by .*corefile.*\r\n\#0  .*\(\).*\r\n$gdb_prompt $" {
+	pass "core-file command"
+    }
+    -re "Core was generated by .*\r\n\#0  .*\(\).*\r\n$gdb_prompt $" {
+	pass "core-file command (with bad program name)"
+    }
+    -re ".*registers from core file: File in wrong format.* $" {
+	fail "core-file command (could not read registers from core file)"
+    }
+}
+
+# Perform the "interesting" tests which check the contents of certain
+# memory regions.
+
+proc do_tests { } {
+    global xfail
+
+    # Check contents of beginning of buf_rw and buf_ro.
+
+    gdb_test {print/x buf_rw[0]@4} {\{0x6b, 0x6b, 0x6b, 0x6b\}}
+    gdb_test {print/x buf_ro[0]@4} {\{0xc5, 0xc5, 0xc5, 0xc5\}}
+
+    # Check for correct contents at beginning of mbuf_rw and mbuf_ro.
+
+    gdb_test {print/x mbuf_rw[0]@4} {\{0x0, 0x0, 0x0, 0x0\}}
+
+    if { $xfail } { setup_xfail "*-*-*" }
+    gdb_test {print/x mbuf_ro[0]@4} {\{0x0, 0x0, 0x0, 0x0\}}
+
+    # Check contents of mbuf_rw and mbuf_ro at the end of these regions.
+
+    gdb_test {print/x mbuf_rw[pagesize-4]@4} {\{0x0, 0x0, 0x0, 0x0\}}
+
+    if { $xfail } { setup_xfail "*-*-*" }
+    gdb_test {print/x mbuf_ro[pagesize-4]@4} {\{0x0, 0x0, 0x0, 0x0\}}
+
+    # Check contents of mbuf_rw and mbuf_ro, right before the hole,
+    # overlapping into the beginning of these mmap'd regions.
+
+    gdb_test {print/x mbuf_rw[-3]@6} {\{0x6b, 0x6b, 0x6b, 0x0, 0x0, 0x0\}}
+
+    if { $xfail } { setup_xfail "*-*-*" }
+    gdb_test {print/x mbuf_ro[-3]@6} {\{0xc5, 0xc5, 0xc5, 0x0, 0x0, 0x0\}}
+
+    # Likewise, at the end of the mbuf_rw and mbuf_ro, with overlap.
+
+    # If this test FAILs, it's probably a genuine bug unrelated to whether
+    # the core file includes a section describing memory address to file
+    # mappings or not.  (So don't xfail it!)
+    gdb_test {print/x mbuf_rw[pagesize-3]@6} {\{0x0, 0x0, 0x0, 0x6b, 0x6b, 0x6b\}}
+
+    if { $xfail } { setup_xfail "*-*-*" }
+    gdb_test {print/x mbuf_ro[pagesize-3]@6} {\{0x0, 0x0, 0x0, 0xc5, 0xc5, 0xc5\}}
+
+    # Check contents of (what should be) buf_rw and buf_ro immediately after
+    # mbuf_rw and mbuf_ro holes.
+
+    gdb_test {print/x mbuf_rw[pagesize]@4} {\{0x6b, 0x6b, 0x6b, 0x6b\}}
+    gdb_test {print/x mbuf_ro[pagesize]@4} {\{0xc5, 0xc5, 0xc5, 0xc5\}}
+
+    # Check contents at ends of buf_rw and buf_rw.
+
+    gdb_test {print/x buf_rw[sizeof(buf_rw)-4]@4} {\{0x6b, 0x6b, 0x6b, 0x6b\}}
+    gdb_test {print/x buf_ro[sizeof(buf_ro)-4]@4} {\{0xc5, 0xc5, 0xc5, 0xc5\}}
+}
+
+# Run tests with kernel-produced core file.
+
+with_test_prefix "kernel core" {
+    do_tests
+}
+
+# Verify that "maint print core-file-backed-mappings" exists and does
+# not crash GDB.  If it produces any output at all, make sure that
+# that output at least mentions binfile.
+
+set test "maint print core-file-backed-mappings"
+gdb_test_multiple $test "" {
+    -re ".*$binfile.*$gdb_prompt $" {
+	pass $test
+    }
+    -re "^$test\[\r\n\]*$gdb_prompt $" {
+	pass "$test (no output)"
+    }
+}
+
+# Test again with executable renamed during loading of core file.
+
+with_test_prefix "renamed binfile" {
+    # Don't load $binfile in this call to clean_restart.  (BFD will
+    # complain that $binfile has disappeared after the rename if it's
+    # loaded first.)
+    clean_restart
+
+    # Rename $binfile so that it won't be found during loading of
+    # the core file.
+    set hide_binfile [standard_output_file "${testfile}.hide"]
+    remote_exec host "mv -f $binfile $hide_binfile"
+
+    # Load core file - check that a warning is printed.
+    global xfail
+    if { $xfail } { setup_xfail "*-*-*" }
+    gdb_test "core-file $corefile" \
+	"warning: Can't open file.*during.* note processing.*Core was generated by .*\#0  .*\(\)" \
+	"load core file without having first loaded binfile"
+
+    # Restore $binfile and then load it.
+    remote_exec host "mv -f $hide_binfile $binfile"
+    gdb_load ${binfile}
+
+    do_tests
+}
+
+# Restart and run to the abort call.
+
+clean_restart $binfile
+
+if ![runto_main] then {
+    fail "can't run to main"
+    return
+}
+
+gdb_breakpoint [gdb_get_line_number "abort"]
+gdb_continue_to_breakpoint "at abort"
+
+# Do not execute abort call; instead, invoke gcore command to make a
+# gdb-produced core file.
+
+set corefile [standard_output_file gcore.test]
+set core_supported [gdb_gcore_cmd "$corefile" "save a corefile"]
+if {!$core_supported} {
+  return
+}
+
+# maint print-core-file-backed-mappings shouldn't produce any output
+# when not debugging a core file.
+
+gdb_test_no_output "maint print core-file-backed-mappings" \
+    "maint print core-file-backed-mapping with no core file"
+
+clean_restart $binfile
+
+set core_loaded [gdb_core_cmd "$corefile" "re-load generated corefile"]
+if { $core_loaded == -1 } {
+    # No use proceeding from here.
+    return
+}
+
+# Run tests using gcore-produced core file.
+
+with_test_prefix "gcore core" {
+    do_tests
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile-buildid.c ./gdb/testsuite/gdb.base/corefile-buildid.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile-buildid.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/corefile-buildid.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile-buildid.exp ./gdb/testsuite/gdb.base/corefile-buildid.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile-buildid.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/corefile-buildid.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -108,8 +108,40 @@ proc append_debug_dir {debugdir} {
 # FILE.
 
 proc check_exec_file {file} {
+    global gdb_prompt
     send_log "expecting exec file \"$file\"\n"
-    gdb_test "info files" "Local exec file:\[\r\n\t\ \]+`[string_to_regexp $file]'.*"
+
+    # Get line with "Local exec file:".
+    set ok 0
+    gdb_test_multiple "info files" "" -lbl {
+	-re "\r\nLocal exec file:" {
+	    set test_name $gdb_test_name
+	    set ok 1
+	}
+    }
+
+    if { $ok == 0 } {
+	return
+    }
+
+    # Get subsequent line with $file.
+    set ok 0
+    gdb_test_multiple "" $test_name -lbl {
+	-re "\r\n\[\t\ \]+`[string_to_regexp $file]'\[^\r\n\]*" {
+	    set ok 1
+	}
+    }
+
+    if { $ok == 0 } {
+	return
+    }
+
+    # Skip till prompt.
+    gdb_test_multiple "" $test_name -lbl {
+	-re "\r\n$gdb_prompt $" {
+	    pass $gdb_test_name
+	}
+    }
 }
 
 # Test whether gdb can find an exec file from a core file's build-id.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile-buildid-shlib.c ./gdb/testsuite/gdb.base/corefile-buildid-shlib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile-buildid-shlib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/corefile-buildid-shlib.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile-buildid-shlib-shr.c ./gdb/testsuite/gdb.base/corefile-buildid-shlib-shr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile-buildid-shlib-shr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/corefile-buildid-shlib-shr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile.exp ./gdb/testsuite/gdb.base/corefile.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/corefile.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/corefile.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
@@ -34,7 +34,10 @@ if {[build_executable $testfile.exp $tes
     return -1
 }
 
-set corefile [core_find $binfile {coremmap.data}]
+# Do not delete coremap.data when calling core_find.  This file is
+# required for GDB to find mmap'd data in the "accessing read-only
+# mmapped data in core file" test.
+set corefile [core_find $binfile {}]
 if {$corefile == ""} {
     return 0
 }
@@ -175,6 +178,28 @@ gdb_test_multiple "x/8bd buf2" "$test" {
     }
 }
 
+set test "accessing read-only mmapped data in core file"
+gdb_test_multiple "x/8bd buf2ro" "$test" {
+    -re ".*:.*0.*1.*2.*3.*4.*5.*6.*7.*$gdb_prompt $" {
+	pass "$test"
+    }
+    -re "0x\[f\]*:.*Cannot access memory at address 0x\[f\]*.*$gdb_prompt $" {
+	fail "$test (mapping failed at runtime)"
+    }
+    -re "0x.*:.*Cannot access memory at address 0x.*$gdb_prompt $" {
+	fail "$test (mapping address not found in core file)"
+    }
+}
+
+# Test ability to read anonymous and, more importantly, unwritten-to
+# mmap'd data.
+
+if { ![istarget *-linux*] } {
+    setup_xfail "*-*-*"
+}
+gdb_test "x/wx buf3" "$hex:\[ \t\]+0x00000000" \
+	 "accessing anonymous, unwritten-to mmap data"
+
 # test reinit_frame_cache
 
 gdb_load ${binfile}
@@ -299,11 +324,18 @@ corefile_test_attach
 # Test warning-free core file load.  E.g., a Linux vDSO used to
 # trigger this warning:
 #     warning: Can't read pathname for load map: Input/output error.
+#
+# When testing in a docker container using the AUFS storage driver,
+# the kernel places host paths in the core file's NT_FILE note.  XFAIL
+# this case since these paths make no sense in the container.
 
 clean_restart ${testfile}
 
 set test "core-file warning-free"
 gdb_test_multiple "core-file $corefile" $test {
+    -re "warning: Can\'t open file.*\/docker\/aufs\/.*\r\n$gdb_prompt $" {
+	xfail $test
+    }
     -re "warning: .*\r\n.*\r\n$gdb_prompt $" {
 	fail $test
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/coremaker2.c ./gdb/testsuite/gdb.base/coremaker2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/coremaker2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/coremaker2.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,154 @@
+/* Copyright 1992-2021 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/>.  */
+
+/*  This test has two large memory areas buf_rw and buf_ro. 
+
+    buf_rw is written to by the program while buf_ro is initialized at
+    compile / load time.  Thus, when a core file is created, buf_rw's
+    memory should reside in the core file, but buf_ro probably won't be.
+    Instead, the contents of buf_ro are available from the executable.
+
+    Now, for the wrinkle:  We create a one page read-only mapping over
+    both of these areas.  This will create a one page "hole" of all
+    zeros in each area.
+
+    Will GDB be able to correctly read memory from each of the four
+    (or six, if you count the regions on the other side of each hole)
+    memory regions?  */
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <inttypes.h>
+
+/* These are globals so that we can find them easily when debugging
+   the core file.  */
+long pagesize;
+uintptr_t addr;
+char *mbuf_ro;
+char *mbuf_rw;
+
+/* 256 KiB buffer.  */
+char buf_rw[256 * 1024];
+
+#define C5_16 \
+  0xc5, 0xc5, 0xc5, 0xc5, \
+  0xc5, 0xc5, 0xc5, 0xc5, \
+  0xc5, 0xc5, 0xc5, 0xc5, \
+  0xc5, 0xc5, 0xc5, 0xc5
+
+#define C5_256 \
+  C5_16, C5_16, C5_16, C5_16, \
+  C5_16, C5_16, C5_16, C5_16, \
+  C5_16, C5_16, C5_16, C5_16, \
+  C5_16, C5_16, C5_16, C5_16
+
+#define C5_1k \
+  C5_256, C5_256, C5_256, C5_256
+
+#define C5_8k \
+  C5_1k, C5_1k, C5_1k, C5_1k, \
+  C5_1k, C5_1k, C5_1k, C5_1k
+
+#define C5_64k \
+  C5_8k, C5_8k, C5_8k, C5_8k, \
+  C5_8k, C5_8k, C5_8k, C5_8k
+
+#define C5_256k \
+  C5_64k, C5_64k, C5_64k, C5_64k
+
+/* 256 KiB worth of data.  For this test case, we can't allocate a
+   buffer and then fill it; we want GDB to have to read this data
+   from the executable; it should NOT find it in the core file.  */
+
+const char buf_ro[] = { C5_256k };
+
+int
+main (int argc, char **argv)
+{
+  int i, bitcount;
+
+#ifdef _SC_PAGESIZE
+  pagesize = sysconf (_SC_PAGESIZE);
+#else
+  pagesize = 8192;
+#endif
+
+  /* Verify that pagesize is a power of 2.  */
+  bitcount = 0;
+  for (i = 0; i < 4 * sizeof (pagesize); i++)
+    if (pagesize & (1 << i))
+      bitcount++;
+
+  if (bitcount != 1)
+    {
+      fprintf (stderr, "pagesize is not a power of 2.\n");
+      exit (1);
+    }
+
+  /* Compute an address that should be within buf_ro.  Complain if not.  */
+  addr = ((uintptr_t) buf_ro + pagesize) & ~(pagesize - 1);
+
+  if (addr <= (uintptr_t) buf_ro
+      || addr >= (uintptr_t) buf_ro + sizeof (buf_ro))
+    {
+      fprintf (stderr, "Unable to compute a suitable address within buf_ro.\n");
+      exit (1);
+    }
+
+  mbuf_ro = mmap ((void *) addr, pagesize, PROT_READ,
+               MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
+
+  if (mbuf_ro == MAP_FAILED)
+    {
+      fprintf (stderr, "mmap #1 failed: %s.\n", strerror (errno));
+      exit (1);
+    }
+
+  /* Write (and fill) the R/W region.  */
+  for (i = 0; i < sizeof (buf_rw); i++)
+    buf_rw[i] = 0x6b;
+
+  /* Compute an mmap address within buf_rw.  Complain if it's somewhere
+     else.  */
+  addr = ((uintptr_t) buf_rw + pagesize) & ~(pagesize - 1);
+
+  if (addr <= (uintptr_t) buf_rw
+      || addr >= (uintptr_t) buf_rw + sizeof (buf_rw))
+    {
+      fprintf (stderr, "Unable to compute a suitable address within buf_rw.\n");
+      exit (1);
+    }
+
+  mbuf_rw = mmap ((void *) addr, pagesize, PROT_READ,
+               MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
+
+  if (mbuf_rw == MAP_FAILED)
+    {
+      fprintf (stderr, "mmap #2 failed: %s.\n", strerror (errno));
+      exit (1);
+    }
+
+  /* With correct ulimit, etc. this should cause a core dump.  */
+  abort ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/coremaker.c ./gdb/testsuite/gdb.base/coremaker.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/coremaker.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/coremaker.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 1992-2020 Free Software Foundation, Inc.
+/* Copyright 1992-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -38,10 +38,18 @@
 
 char *buf1;
 char *buf2;
+char *buf2ro;
+char *buf3;
 
 int coremaker_data = 1;	/* In Data section */
 int coremaker_bss;	/* In BSS section */
 
+/* Place a chunk of memory before coremaker_ro to improve the chances
+   that coremaker_ro will end up on it's own page.  See:
+
+   https://sourceware.org/pipermail/gdb-patches/2020-May/168168.html
+   https://sourceware.org/pipermail/gdb-patches/2020-May/168170.html  */
+const unsigned char filler_ro[MAPSIZE] = {1, 2, 3, 4, 5, 6, 7, 8};
 const int coremaker_ro = 201;	/* In Read-Only Data section */
 
 /* Note that if the mapping fails for any reason, we set buf2
@@ -77,7 +85,16 @@ mmapdata ()
   /* Now map the file into our address space as buf2 */
 
   buf2 = (char *) mmap (0, MAPSIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
-  if (buf2 == (char *) -1)
+  if (buf2 == (char *) MAP_FAILED)
+    {
+      perror ("mmap failed");
+      return;
+    }
+
+  /* Map in another copy, read-only.  We won't write to this copy so it
+     will likely not end up in the core file.  */
+  buf2ro = (char *) mmap (0, MAPSIZE, PROT_READ, MAP_PRIVATE, fd, 0);
+  if (buf2ro == (char *) -1)
     {
       perror ("mmap failed");
       return;
@@ -89,15 +106,24 @@ mmapdata ()
 
   for (j = 0; j < MAPSIZE; ++j)
     {
-      if (buf1[j] != buf2[j])
+      if (buf1[j] != buf2[j] || buf1[j] != buf2ro[j])
 	{
 	  fprintf (stderr, "mapped data is incorrect");
-	  buf2 = (char *) -1;
+	  buf2 = buf2ro = (char *) -1;
 	  return;
 	}
     }
   /* Touch buf2 so kernel writes it out into 'core'. */
   buf2[0] = buf1[0];
+
+  /* Create yet another region which is allocated, but not written to.  */
+  buf3 = mmap (NULL, MAPSIZE, PROT_READ | PROT_WRITE,
+               MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
+  if (buf3 == (char *) -1)
+    {
+      perror ("mmap failed");
+      return;
+    }
 }
 
 void
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctf-constvars.c ./gdb/testsuite/gdb.base/ctf-constvars.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctf-constvars.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ctf-constvars.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctf-constvars.exp ./gdb/testsuite/gdb.base/ctf-constvars.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctf-constvars.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ctf-constvars.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -25,7 +25,7 @@
 # with mixed types.
 
 if [skip_ctf_tests] {
-    unsupported "no ctf debug format support"
+    unsupported "no CTF debug format support, or CTF disabled in GDB"
     return 0
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctf-ptype.c ./gdb/testsuite/gdb.base/ctf-ptype.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctf-ptype.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ctf-ptype.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctf-ptype.exp ./gdb/testsuite/gdb.base/ctf-ptype.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctf-ptype.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ctf-ptype.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -16,7 +16,7 @@
 # This file is a subset of ptype.exp written by Rob Savoye. (rob@cygnus.com)
 
 if [skip_ctf_tests] {
-    unsupported "no ctf debug format support"
+    unsupported "no CTF debug format support, or CTF disabled in GDB"
     return 0
 }
 
@@ -24,6 +24,7 @@ standard_testfile .c
 
 # Using `-gt` generates full-fledged CTF debug information.
 set opts "additional_flags=-gt"
+
 if { [prepare_for_testing "failed to prepare" ${testfile} \
 	  [list $srcfile] [list $opts nowarnings]] } {
     return 0
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctxobj.exp ./gdb/testsuite/gdb.base/ctxobj.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctxobj.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ctxobj.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctxobj-f.c ./gdb/testsuite/gdb.base/ctxobj-f.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctxobj-f.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ctxobj-f.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* This testcase is part of GDB, the GNU debugger.
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctxobj-m.c ./gdb/testsuite/gdb.base/ctxobj-m.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctxobj-m.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ctxobj-m.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* This testcase is part of GDB, the GNU debugger.
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctxobj-v.c ./gdb/testsuite/gdb.base/ctxobj-v.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ctxobj-v.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ctxobj-v.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* This testcase is part of GDB, the GNU debugger.
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cursal.c ./gdb/testsuite/gdb.base/cursal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cursal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/cursal.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2004-2020 Free Software Foundation, Inc.
+/* Copyright 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cursal.exp ./gdb/testsuite/gdb.base/cursal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cursal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/cursal.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cvexpr.c ./gdb/testsuite/gdb.base/cvexpr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cvexpr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/cvexpr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cvexpr.exp ./gdb/testsuite/gdb.base/cvexpr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/cvexpr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/cvexpr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#   Copyright (C) 2001-2021 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
@@ -509,3 +509,14 @@ foreach testspec $specs {
 	do_test $prefix $opts
     }
 }
+
+# These tests don't rely on the debug format.
+gdb_test "ptype _Atomic int" "type = _Atomic int"
+gdb_test "ptype int * restrict" "type = int \\* restrict"
+
+# C++ does not have "restrict".
+gdb_test_no_output "set lang c++"
+gdb_test "ptype int * restrict" "A syntax error in expression.*"
+
+# There is a GCC extension for __restrict__, though.
+gdb_test "ptype int * __restrict__" "type = int \\* __restrict__"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/d10vovly.c ./gdb/testsuite/gdb.base/d10vovly.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/d10vovly.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/d10vovly.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,225 +0,0 @@
-
-/*
- * Ovlymgr.c -- Runtime Overlay Manager for the GDB testsuite.
- */
-
-#include "ovlymgr.h"
-
-/* Local functions and data: */
-
-extern unsigned long _ovly_table[][4];
-extern unsigned long _novlys __attribute__ ((section (".data")));
-enum ovly_index { VMA, SIZE, LMA, MAPPED};
-
-static void ovly_copy (unsigned long dst, unsigned long src, long size);
-
-/* Flush the data and instruction caches at address START for SIZE bytes.
-   Support for each new port must be added here.  */
-/* FIXME: Might be better to have a standard libgloss function that
-   ports provide that we can then use.  Use libgloss instead of newlib
-   since libgloss is the one intended to handle low level system issues.
-   I would suggest something like _flush_cache to avoid the user's namespace
-   but not be completely obscure as other things may need this facility.  */
- 
-static void
-FlushCache (void)
-{
-#ifdef __M32R__
-  volatile char *mspr = (char *) 0xfffffff7;
-  *mspr = 1;
-#endif
-}
-
-/* OverlayLoad:
- * Copy the overlay into its runtime region,
- * and mark the overlay as "mapped".
- */
-
-bool
-OverlayLoad (unsigned long ovlyno)
-{
-  unsigned long i;
-
-  if (ovlyno < 0 || ovlyno >= _novlys)
-    exit (-1);	/* fail, bad ovly number */
-
-  if (_ovly_table[ovlyno][MAPPED])
-    return TRUE;	/* this overlay already mapped -- nothing to do! */
-
-  for (i = 0; i < _novlys; i++)
-    if (i == ovlyno)
-      _ovly_table[i][MAPPED] = 1;	/* this one now mapped */
-    else if (_ovly_table[i][VMA] == _ovly_table[ovlyno][VMA])
-      _ovly_table[i][MAPPED] = 0;	/* this one now un-mapped */
-
-  ovly_copy (_ovly_table[ovlyno][VMA], 
-	     _ovly_table[ovlyno][LMA], 
-	     _ovly_table[ovlyno][SIZE]);
-
-  FlushCache ();
-
-  return TRUE;
-}
-
-/* OverlayUnload:
- * Copy the overlay back into its "load" region.
- * Does NOT mark overlay as "unmapped", therefore may be called
- * more than once for the same mapped overlay.
- */
- 
-bool
-OverlayUnload (unsigned long ovlyno)
-{
-  if (ovlyno < 0 || ovlyno >= _novlys)
-    exit (-1);  /* fail, bad ovly number */
- 
-  if (!_ovly_table[ovlyno][MAPPED])
-    exit (-1);  /* error, can't copy out a segment that's not "in" */
- 
-  ovly_copy (_ovly_table[ovlyno][LMA], 
-	     _ovly_table[ovlyno][VMA],
-	     _ovly_table[ovlyno][SIZE]);
-
-  return TRUE;
-}
-
-#ifdef __D10V__
-#define IMAP0       (*(short *)(0xff00))
-#define IMAP1       (*(short *)(0xff02))
-#define DMAP        (*(short *)(0xff04))
-
-static void
-D10VTranslate (unsigned long logical,
-	       short *dmap,
-	       unsigned long **addr)
-{
-  unsigned long physical;
-  unsigned long seg;
-  unsigned long off;
-
-  /* to access data, we use the following mapping 
-     0x00xxxxxx: Logical data address segment        (DMAP translated memory)
-     0x01xxxxxx: Logical instruction address segment (IMAP translated memory)
-     0x10xxxxxx: Physical data memory segment        (On-chip data memory)
-     0x11xxxxxx: Physical instruction memory segment (On-chip insn memory)
-     0x12xxxxxx: Phisical unified memory segment     (Unified memory)
-     */
-
-  /* Addresses must be correctly aligned */
-  if (logical & (sizeof (**addr) - 1))
-    exit (-1);
-
-  /* If the address is in one of the two logical address spaces, it is
-     first translated into a physical address */
-  seg = (logical >> 24);
-  off = (logical & 0xffffffL);
-  switch (seg) 
-      {
-      case 0x00: /* in logical data address segment */
-	if (off <= 0x7fffL)
-	  physical = (0x10L << 24) + off;
-	else
-	  /* Logical address out side of on-chip segment, not
-             supported */
-	  exit (-1);
-	break;
-      case 0x01: /* in logical instruction address segment */
-	{
-	  short map;
-	  if (off <= 0x1ffffL)
-	    map = IMAP0;
-	  else if (off <= 0x3ffffL)
-	    map = IMAP1;
-	  else
-	    /* Logical address outside of IMAP[01] segment, not
-	       supported */
-	    exit (-1);
-	  if (map & 0x1000L)
-	    {
-	    /* Instruction memory */
-	      physical = (0x11L << 24) | off;
-	    }
-	  else
-	    {
-	    /* Unified memory */
-	      physical = ((map & 0x7fL) << 17) + (off & 0x1ffffL);
-	      if (physical > 0xffffffL)
-		/* Address outside of unified address segment */
-		exit (-1);
-	      physical |= (0x12L << 24);
-	    }
-	  break;
-	}
-      case 0x10:
-      case 0x11:
-      case 0x12:
-	physical = logical;
-	break;
-      default:
-	exit (-1);	/* error */
-      }
-
-  seg = (physical >> 24);
-  off = (physical & 0xffffffL);
-  switch (seg) 
-    {
-    case 0x10:	/* dst is a 15 bit offset into the on-chip memory */
-      *dmap = 0;
-      *addr = (long *) (0x0000 + ((short)off & 0x7fff));
-      break;
-    case 0x11:	/* dst is an 18-bit offset into the on-chip
-		   instruction memory */
-      *dmap = 0x1000L | ((off & 0x3ffffL) >> 14);
-      *addr = (long *) (0x8000 + ((short)off & 0x3fff));
-      break;
-    case 0x12:	/* dst is a 24-bit offset into unified memory */
-      *dmap = off >> 14;
-      *addr = (long *) (0x8000 + ((short)off & 0x3fff));
-      break;
-    default:
-      exit (-1);	/* error */
-    }
-}
-#endif /* __D10V__ */
-
-static void
-ovly_copy (unsigned long dst, unsigned long src, long size)
-{
-#ifdef  __M32R__
-  memcpy ((void *) dst, (void *) src, size);
-  return;
-#endif /* M32R */
-
-#ifdef  __D10V__
-  unsigned long *s, *d, tmp;
-  short dmap_src, dmap_dst;
-  short dmap_save;
-
-  /* all section sizes should by multiples of 4 bytes */
-  dmap_save = DMAP;
-
-  D10VTranslate (src, &dmap_src, &s);
-  D10VTranslate (dst, &dmap_dst, &d);
-
-  while (size > 0)
-    {
-      /* NB: Transfer 4 byte (long) quantites, problems occure
-	 when only two bytes are transfered */
-      DMAP = dmap_src;
-      tmp = *s;
-      DMAP = dmap_dst;
-      *d = tmp; 
-      d++;
-      s++;
-      size -= sizeof (tmp);
-      src += sizeof (tmp);
-      dst += sizeof (tmp);
-      if ((src & 0x3fff) == 0)
-	D10VTranslate (src, &dmap_src, &s);
-      if ((dst & 0x3fff) == 0)
-	D10VTranslate (dst, &dmap_dst, &d);
-    }
-  DMAP = dmap_save;
-#endif /* D10V */
-}
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dbx.exp ./gdb/testsuite/gdb.base/dbx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dbx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dbx.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
@@ -26,7 +26,6 @@ if {[build_executable $testfile.exp $tes
 # start gdb -- start gdb running, default procedure
 #
 proc dbx_gdb_start { } {
-    global verbose
     global GDB
     global INTERNAL_GDBFLAGS GDBFLAGS
     global prompt
@@ -148,12 +147,8 @@ proc dbx_reinitialize_dir { subdir } {
 # right sequence of events, allowing gdb_load to do its normal thing? This way
 # remotes and simulators will work, too.
 #
-# [drow 2002-03-30]: We can restore the old gdb_file_cmd afterwards, though.
-set old_gdb_file_cmd_args [info args gdb_file_cmd]
-set old_gdb_file_cmd_body [info body gdb_file_cmd]
 
-proc gdb_file_cmd {arg} {
-    global verbose
+proc local_gdb_file_cmd {arg} {
     global loadpath
     global loadfile
     global GDB
@@ -288,24 +283,24 @@ proc test_func { } {
 # Start with a fresh gdb.
 
 gdb_exit
-global GDBFLAGS
-set saved_gdbflags $GDBFLAGS
 
-set GDBFLAGS "$GDBFLAGS --dbx"
-gdb_start
-dbx_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-
-test_breakpoints
-test_assign
-test_whereis
-gdb_test "file average.c:1" "1\[ \t\]+/. This is a sample program.*"
-test_func
+with_override gdb_file_cmd local_gdb_file_cmd {
+    save_vars GDBFLAGS {
+	set GDBFLAGS "$GDBFLAGS --dbx"
+
+	gdb_start
+	dbx_reinitialize_dir $srcdir/$subdir
+	gdb_load ${binfile}
+
+	test_breakpoints
+	test_assign
+	test_whereis
+	gdb_test "file average.c:1" "1\[ \t\]+/. This is a sample program.*"
+	test_func
 
-#exit and cleanup
-gdb_exit
-
-set GDBFLAGS $saved_gdbflags
-eval proc gdb_file_cmd {$old_gdb_file_cmd_args} {$old_gdb_file_cmd_body}
+	#exit and cleanup
+	gdb_exit
+    }
+}
 
 return 0
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dcache-line-read-error.c ./gdb/testsuite/gdb.base/dcache-line-read-error.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dcache-line-read-error.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dcache-line-read-error.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dcache-line-read-error.exp ./gdb/testsuite/gdb.base/dcache-line-read-error.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dcache-line-read-error.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dcache-line-read-error.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/debug-expr.exp ./gdb/testsuite/gdb.base/debug-expr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/debug-expr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/debug-expr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/decl-before-def-decl.c ./gdb/testsuite/gdb.base/decl-before-def-decl.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/decl-before-def-decl.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/decl-before-def-decl.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+extern int a[];
+
+int
+main (void)
+{
+  a[0] = 1;
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/decl-before-def-def.c ./gdb/testsuite/gdb.base/decl-before-def-def.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/decl-before-def-def.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/decl-before-def-def.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,18 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int a[2] = { 1, 2 };
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/decl-before-def.exp ./gdb/testsuite/gdb.base/decl-before-def.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/decl-before-def.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/decl-before-def.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,33 @@
+# Copyright 2020-2021 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/>.  */
+
+standard_testfile decl-before-def-decl.c decl-before-def-def.c
+set sources [list $srcfile $srcfile2]
+
+if {[prepare_for_testing "failed to prepare" $testfile $sources]} {
+    return -1
+}
+
+# This is required due to PR25764.
+gdb_test "maint expand-symtabs"
+
+gdb_test "p a" { = \{1, 2\}}
+
+if ![runto_main] then {
+    fail "can't run to main"
+    return 0
+}
+
+gdb_test "p a" { = \{1, 2\}}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/default-args.c ./gdb/testsuite/gdb.base/default-args.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/default-args.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/default-args.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,39 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+struct S
+{
+  int a;
+  int b;
+  int c;
+};
+
+struct S g_s = {1, 2, 3};
+
+static void
+inc (void)
+{
+  g_s.a++;;
+}
+
+int
+main (void)
+{
+  inc ();
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/default-args.exp ./gdb/testsuite/gdb.base/default-args.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/default-args.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/default-args.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,123 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2019-2021 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 the "default-args" arguments and completion of alias command.
+
+load_lib completion-support.exp
+
+standard_testfile .c
+
+if {[build_executable "failed to prepare" $testfile $srcfile debug]} {
+    return -1
+}
+
+clean_restart $binfile
+
+# Basic/core tests using user-visible commands.
+with_test_prefix "basics" {
+    # Define an alias to pretty print something.
+    gdb_test "print g_s" " = {a = 1, b = 2, c = 3}" "simple print"
+    gdb_test_no_output "alias PP = print -pretty --" "alias PP"
+    gdb_test "help PP" "print, PP, inspect, p\r\n  alias PP = print -pretty --\r\n.*"
+    gdb_test "PP g_s" \
+	[multi_line  \
+	     " = {" \
+	     "  a = 1," \
+	     "  b = 2," \
+	     "  c = 3" \
+	     "}"]
+
+    # Define an alias of frame apply all with some default args.
+    gdb_test_no_output "alias frame apply tout = frame apply all -past-entry -past-main" \
+	"alias frame apply tout"
+    gdb_test "help frame apply tout" \
+	"frame apply all, frame apply tout\r\n  alias frame apply tout = frame apply all -past-entry -past-main\r\n.*"
+
+    # Show all aliases.
+    gdb_test "help aliases" \
+	[multi_line  \
+	     "User-defined aliases of other commands." \
+	     "" \
+	     "List of commands:" \
+	     "" \
+	     "PP -- Print value of expression EXP." \
+	     "  alias PP = print -pretty --" \
+	     "frame apply tout -- Apply a command to all frames." \
+	     "  alias frame apply tout = frame apply all -past-entry -past-main" \
+	     ".*" ] \
+	"help aliases"
+}
+
+# Check errors.
+with_test_prefix "errors" {
+    # Try an unknown root setting.
+    gdb_test "alias wrong = xxxx yyyy -someoption" \
+	"Undefined command: \"xxxx\".  Try \"help\"\\."
+
+    # Try ambiguous command.
+    gdb_test "alias wrong = a" \
+	"Ambiguous command \"a\":.*" "ambiguous a"
+    gdb_test "alias wrong = frame a" \
+	"Ambiguous frame command \"a\":.*" "ambiguous frame a"
+}
+
+
+# Check completion.
+with_test_prefix "completion" {
+    test_gdb_complete_unique \
+	"alias set pri" \
+	"alias set print"
+
+    test_gdb_complete_unique \
+	"alias set print items = set pri" \
+	"alias set print items = set print"
+
+    test_gdb_complete_unique \
+	"alias set print items = set print ele" \
+	"alias set print items = set print elements"
+
+   test_gdb_complete_unique \
+	"alias btfu = backt" \
+	"alias btfu = backtrace"
+
+   test_gdb_complete_unique \
+	"alias btfu = backtrace -fu" \
+	"alias btfu = backtrace -full"
+
+   test_gdb_complete_unique \
+	"alias btfu = backtrace -full -past-e" \
+	"alias btfu = backtrace -full -past-entry"
+
+    gdb_test_no_output "alias btfu = backtrace -full -past-entry" \
+	"alias btfu"
+
+}
+
+# Check alias of alias.
+with_test_prefix "alias_of_alias" {
+    # Verify we can alias an alias that has no default args.
+    # We allow an alias of an alias, to be backward compatible with
+    # GDB 9.1 .
+    gdb_test_no_output "alias aaa = backtrace"
+    gdb_test_no_output "alias bbb = backtrace"
+
+    # Verify that we cannot define an alias of an alias that has default args.
+    gdb_test_no_output "alias ccc = backtrace -full"
+    gdb_test "alias ddd = ccc" \
+	"Cannot define an alias of an alias that has default args"
+
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/default.exp ./gdb/testsuite/gdb.base/default.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/default.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/default.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1988-2020 Free Software Foundation, Inc.
+#   Copyright 1988-2021 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
@@ -28,8 +28,8 @@ set timeout 60
 gdb_test "add-symbol-file" "add-symbol-file takes a file name and an address"
 
 # test append
-gdb_test "append" "\"append\" must be followed by a subcommand\.\[\r\n\]+List of append subcommands:.*" 
-gdb_test "append binary" "\"append binary\" must be followed by a subcommand\.\[\r\n\]+List of append binary subcommands:.*" 
+gdb_test "append" "List of append subcommands:.*" 
+gdb_test "append binary" "List of append binary subcommands:.*" 
 gdb_test "append memory" "Missing filename\." 
 gdb_test "append value"  "Missing filename\." 
 gdb_test "append binary memory" "Missing filename\." 
@@ -78,7 +78,7 @@ gdb_test "call" "The history is empty..*
 
 
 #test catch
-gdb_test "catch" "Catch requires an event name..*"
+gdb_test "catch" "List of catch subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help catch\" followed by catch subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
 
 #test cd
 gdb_test "cd" "Working directory \[^\r\n\]*\(\r\n \\(canonically \[^\r\n\]*\\)\)?\\."
@@ -147,12 +147,12 @@ gdb_test "down" "No stack.*"
 #test down-silently
 gdb_test "down-silently" "No stack."
 # test dump
-gdb_test "dump" "\"dump\" must be followed by a subcommand\.\[\r\n\]+List of dump subcommands:.*" 
-gdb_test "dump binary" "\"dump binary\" must be followed by a subcommand\.\[\r\n\]+List of dump binary subcommands:.*" 
-gdb_test "dump ihex" "\"dump ihex\" must be followed by a subcommand\.\[\r\n\]+List of dump ihex subcommands:.*" 
+gdb_test "dump" "List of dump subcommands:.*" 
+gdb_test "dump binary" "List of dump binary subcommands:.*" 
+gdb_test "dump ihex" "List of dump ihex subcommands:.*" 
 gdb_test "dump memory" "Missing filename\." 
-gdb_test "dump srec" "\"dump srec\" must be followed by a subcommand\.\[\r\n\]+List of dump srec subcommands:.*" 
-gdb_test "dump tekhex" "\"dump tekhex\" must be followed by a subcommand\.\[\r\n\]+List of dump tekhex subcommands:.*" 
+gdb_test "dump srec" "List of dump srec subcommands:.*" 
+gdb_test "dump tekhex" "List of dump tekhex subcommands:.*" 
 gdb_test "dump value" "Missing filename\." 
 gdb_test "dump binary memory" "Missing filename\." 
 gdb_test "dump binary value"  "Missing filename\." 
@@ -247,15 +247,15 @@ gdb_test_multiple "generate-core-file" "
 }
 
 #test help "h" abbreviation
-gdb_test "h" "List of classes of commands:(\[^\r\n\]*\[\r\n\])+aliases -- Aliases of other commands(\[^\r\n\]*\[\r\n\])+breakpoints -- Making program stop at certain points(\[^\r\n\]*\[\r\n\])+data -- Examining data(\[^\r\n\]*\[\r\n\])+files -- Specifying and examining files(\[^\r\n\]*\[\r\n\])+obscure -- Obscure features(\[^\r\n\]*\[\r\n\])+running -- Running the program(\[^\r\n\]*\[\r\n\])+stack -- Examining the stack(\[^\r\n\]*\[\r\n\])+status -- Status inquiries(\[^\r\n\]*\[\r\n\])+support -- Support facilities(\[^\r\n\]*\[\r\n\])+user-defined -- User-defined commands(\[^\r\n\]*\[\r\n\])+Type \"help\" followed by a class name for a list of commands in that class.(\[^\r\n\]*\[\r\n\])+Type \"help\" followed by command name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "help \"h\" abbreviation"
+gdb_test "h" "List of classes of commands:(\[^\r\n\]*\[\r\n\])+aliases -- User-defined aliases of other commands(\[^\r\n\]*\[\r\n\])+breakpoints -- Making program stop at certain points(\[^\r\n\]*\[\r\n\])+data -- Examining data(\[^\r\n\]*\[\r\n\])+files -- Specifying and examining files(\[^\r\n\]*\[\r\n\])+obscure -- Obscure features(\[^\r\n\]*\[\r\n\])+running -- Running the program(\[^\r\n\]*\[\r\n\])+stack -- Examining the stack(\[^\r\n\]*\[\r\n\])+status -- Status inquiries(\[^\r\n\]*\[\r\n\])+support -- Support facilities(\[^\r\n\]*\[\r\n\])+user-defined -- User-defined commands(\[^\r\n\]*\[\r\n\])+Type \"help\" followed by a class name for a list of commands in that class.(\[^\r\n\]*\[\r\n\])+Type \"help\" followed by command name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "help \"h\" abbreviation"
 #test help
-gdb_test "help" "List of classes of commands:(\[^\r\n\]*\[\r\n\])+aliases -- Aliases of other commands(\[^\r\n\]*\[\r\n\])+breakpoints -- Making program stop at certain points(\[^\r\n\]*\[\r\n\])+data -- Examining data(\[^\r\n\]*\[\r\n\])+files -- Specifying and examining files(\[^\r\n\]*\[\r\n\])+obscure -- Obscure features(\[^\r\n\]*\[\r\n\])+running -- Running the program(\[^\r\n\]*\[\r\n\])+stack -- Examining the stack(\[^\r\n\]*\[\r\n\])+status -- Status inquiries(\[^\r\n\]*\[\r\n\])+support -- Support facilities(\[^\r\n\]*\[\r\n\])+user-defined -- User-defined commands(\[^\r\n\]*\[\r\n\])+Type \"help\" followed by a class name for a list of commands in that class.(\[^\r\n\]*\[\r\n\])+Type \"help\" followed by command name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
+gdb_test "help" "List of classes of commands:(\[^\r\n\]*\[\r\n\])+aliases -- User-defined aliases of other commands(\[^\r\n\]*\[\r\n\])+breakpoints -- Making program stop at certain points(\[^\r\n\]*\[\r\n\])+data -- Examining data(\[^\r\n\]*\[\r\n\])+files -- Specifying and examining files(\[^\r\n\]*\[\r\n\])+obscure -- Obscure features(\[^\r\n\]*\[\r\n\])+running -- Running the program(\[^\r\n\]*\[\r\n\])+stack -- Examining the stack(\[^\r\n\]*\[\r\n\])+status -- Status inquiries(\[^\r\n\]*\[\r\n\])+support -- Support facilities(\[^\r\n\]*\[\r\n\])+user-defined -- User-defined commands(\[^\r\n\]*\[\r\n\])+Type \"help\" followed by a class name for a list of commands in that class.(\[^\r\n\]*\[\r\n\])+Type \"help\" followed by command name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
 #test handle
 gdb_test "handle" "Argument required .signal to handle.*"
 #test info "i" abbreviation 
-gdb_test "i" "\"info\" must be followed by the name of an info command.(\[^\r\n\]*\[\r\n\])+List of info subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help info\" followed by info subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "info \"i\" abbreviation"
+gdb_test "i" "List of info subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help info\" followed by info subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "info \"i\" abbreviation"
 #test info
-gdb_test "info" "\"info\" must be followed by the name of an info command.(\[^\r\n\]*\[\r\n\])+List of info subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help info\" followed by info subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
+gdb_test "info" "List of info subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help info\" followed by info subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
 #test ignore
 gdb_test "ignore" "Argument required .a breakpoint number.*"
 #test info address
@@ -378,7 +378,7 @@ gdb_test "nexti" "The program is not bei
 gdb_test "output" "Argument required .expression to compute.*"
 
 #test overlay
-gdb_test "overlay" "\"overlay\" must be followed by the name of .*"
+gdb_test "overlay" "List of overlay subcommands:.*"
 #test a non-existant overlay subcommand
 gdb_test "overlay on"     "Undefined overlay command.* Try \"help overlay\"."
 gdb_test_no_output "overlay manual" "overlay manual #1"
@@ -475,7 +475,7 @@ gdb_test_no_output "set args" "set args"
 
 # Test set check abbreviations
 foreach x {"c" "ch" "check"} {
-    gdb_test "set $x" "\"set check\" must be followed by the name of a check subcommand.(\[^\r\n\]*\[\r\n\])+List of set check subcommands:(\[^\r\n\]*\[\r\n\])+set check range -- Set range checking(\[^\r\n\]*\[\r\n\])+set check type -- Set strict type checking(\[^\r\n\]*\[\r\n\])+Type \"help set check\" followed by set check subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." \
+    gdb_test "set $x" "List of set check subcommands:(\[^\r\n\]*\[\r\n\])+set check range -- Set range checking(\[^\r\n\]*\[\r\n\])+set check type -- Set strict type checking(\[^\r\n\]*\[\r\n\])+Type \"help set check\" followed by set check subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." \
 	"set check \"$x\" abbreviation"
 }
 
@@ -497,8 +497,6 @@ gdb_test "set environment" "Argument req
 gdb_test "set height" "Argument required .integer to set it to.*"
 #test set history expansion
 gdb_test_no_output "set history expansion" "set history expansion"
-#test set history filename
-gdb_test "set history filename" "Argument required .filename to set it to.*"
 # Make sure the history ends up in the right place.
 gdb_test_no_output "set history filename [standard_output_file .gdb_history]" \
     "set the history filename"
@@ -507,17 +505,17 @@ gdb_test_no_output "set history save" "s
 #test set history size
 gdb_test "set history size" "Argument required .integer to set it to.*"
 #test set history
-gdb_test "set history" "\"set history\" must be followed by the name of a history subcommand.(\[^\r\n\]*\[\r\n\])+List of set history subcommands:(\[^\r\n\]*\[\r\n\])+set history expansion -- Set history expansion on command input(\[^\r\n\]*\[\r\n\])+set history filename -- Set the filename in which to record the command history(\[^\r\n\]*\[\r\n\])+set history save -- Set saving of the history record on exit(\[^\r\n\]*\[\r\n\])+set history size -- Set the size of the command history(\[^\r\n\]*\[\r\n\])+Type \"help set history\" followed by set history subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
+gdb_test "set history" "List of set history subcommands:(\[^\r\n\]*\[\r\n\])+set history expansion -- Set history expansion on command input(\[^\r\n\]*\[\r\n\])+set history filename -- Set the filename in which to record the command history(\[^\r\n\]*\[\r\n\])+set history save -- Set saving of the history record on exit(\[^\r\n\]*\[\r\n\])+set history size -- Set the size of the command history(\[^\r\n\]*\[\r\n\])+Type \"help set history\" followed by set history subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
 #test set language
 gdb_test "set language" "Requires an argument. Valid arguments are auto, local, unknown, ada, asm, c, c.., d, fortran, go, minimal, modula-2, objective-c, opencl, pascal, rust."
 #test set listsize
 gdb_test "set listsize" "Argument required .integer to set it to.*"
 #test set print "p" abbreviation
-gdb_test "set p" "\"set print\" must be followed by the name of a print subcommand.(\[^\r\n\]*\[\r\n\])+List of set print subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help set print\" followed by set print subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "set print \"p\" abbreviation"
+gdb_test "set p" "List of set print subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help set print\" followed by set print subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "set print \"p\" abbreviation"
 #test set print "pr" abbreviation
-gdb_test "set pr" "\"set print\" must be followed by the name of a print subcommand.(\[^\r\n\]*\[\r\n\])+List of set print subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help set print\" followed by set print subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "set print \"pr\" abbreviation"
+gdb_test "set pr" "List of set print subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help set print\" followed by set print subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "set print \"pr\" abbreviation"
 #test set print
-gdb_test "set print" "\"set print\" must be followed by the name of a print subcommand.(\[^\r\n\]*\[\r\n\])+List of set print subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help set print\" followed by set print subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
+gdb_test "set print" "List of set print subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help set print\" followed by set print subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
 #test set print address
 gdb_test_no_output "set print address" "set print address"
 #test set print array
@@ -561,7 +559,7 @@ gdb_test "show args" "Argument list to g
 
 # test show check abbreviations
 foreach x {"c" "ch" "check"} {
-    gdb_test "show $x" "range:  *Range checking is \"auto; currently off\".(\[^\r\n\]*\[\r\n\])+type:  *Strict type checking is on\..*" \
+    gdb_test "show $x" "check range:  *Range checking is \"auto; currently off\".(\[^\r\n\]*\[\r\n\])+check type:  *Strict type checking is on\..*" \
 	"show check \"$x\" abbreviation"
 }
 
@@ -608,8 +606,8 @@ set show_conv_list \
 	{$_gdb_maint_setting = <internal function _gdb_maint_setting>} \
 	{$_gdb_setting_str = <internal function _gdb_setting_str>} \
 	{$_gdb_setting = <internal function _gdb_setting>} \
-	{$_gdb_major = 9} \
-	{$_gdb_minor = 1} \
+	{$_gdb_major = 10} \
+	{$_gdb_minor = 3} \
 	{$_shell_exitsignal = void} \
 	{$_shell_exitcode = 0} \
     }
@@ -647,7 +645,7 @@ gdb_test "show history save" "Saving of
 #test show history size
 gdb_test "show history size" "The size of the command history is.*"
 #test show history
-gdb_test "show history" "expansion:  *History expansion on command input is o(\[^\r\n\]*\[\r\n\])+filename:  *The filename in which to record the command history is.*.gdb_history(\[^\r\n\]*\[\r\n\])+save: *Saving of the history record on exit is o(\[^\r\n\]*\[\r\n\])+size: * The size of the command history is.*"
+gdb_test "show history" "history expansion:  *History expansion on command input is o(\[^\r\n\]*\[\r\n\])+history filename:  *The filename in which to record the command history is.*.gdb_history(\[^\r\n\]*\[\r\n\])+history save: *Saving of the history record on exit is o(\[^\r\n\]*\[\r\n\])+history size: * The size of the command history is.*"
 #test show language
 gdb_test "show language" "The current source language is \"auto; currently c\"."
 #test show listsize
@@ -796,7 +794,7 @@ gdb_expect {
 }
 
 #test target
-gdb_test "target" "Argument required .target name.*"
+gdb_test "target" "List of target subcommands:(\[^\r\n\]*\[\r\n\])+Type \"help target\" followed by target subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
 #test tbreak
 gdb_test "tbreak" "No default breakpoint address now."
 #test thread
@@ -829,7 +827,7 @@ gdb_test "unset environment" \
     "y"
 
 #test unset
-gdb_test "unset" "\"unset\" must be followed by the name of an unset subcommand.(\[^\r\n\]*\[\r\n\])+List of unset subcommands:(\[^\r\n\]*\[\r\n\])+unset environment -- Cancel environment variable VAR for the program(\[^\r\n\]*\[\r\n\])+Type \"help unset\" followed by unset subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
+gdb_test "unset" "List of unset subcommands:(\[^\r\n\]*\[\r\n\])+unset environment -- Cancel environment variable VAR for the program(\[^\r\n\]*\[\r\n\])+Type \"help unset\" followed by unset subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous."
 #test up
 #test up-silently
 gdb_test "up-silently" "No stack."
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/define.exp ./gdb/testsuite/gdb.base/define.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/define.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/define.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/define-prefix.exp ./gdb/testsuite/gdb.base/define-prefix.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/define-prefix.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/define-prefix.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/del.c ./gdb/testsuite/gdb.base/del.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/del.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/del.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/del.exp ./gdb/testsuite/gdb.base/del.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/del.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/del.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/detach.exp ./gdb/testsuite/gdb.base/detach.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/detach.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/detach.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2003-2020 Free Software Foundation, Inc.
+#   Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dfp-exprs.exp ./gdb/testsuite/gdb.base/dfp-exprs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dfp-exprs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dfp-exprs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dfp-test.c ./gdb/testsuite/gdb.base/dfp-test.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dfp-test.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dfp-test.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dfp-test.exp ./gdb/testsuite/gdb.base/dfp-test.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dfp-test.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dfp-test.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disabled-location.c ./gdb/testsuite/gdb.base/disabled-location.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disabled-location.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/disabled-location.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disabled-location.exp ./gdb/testsuite/gdb.base/disabled-location.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disabled-location.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/disabled-location.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-end-cu-1.c ./gdb/testsuite/gdb.base/disasm-end-cu-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-end-cu-1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/disasm-end-cu-1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-end-cu-2.c ./gdb/testsuite/gdb.base/disasm-end-cu-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-end-cu-2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/disasm-end-cu-2.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-end-cu.exp ./gdb/testsuite/gdb.base/disasm-end-cu.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-end-cu.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/disasm-end-cu.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-optim.c ./gdb/testsuite/gdb.base/disasm-optim.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-optim.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/disasm-optim.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2015-2020 Free Software Foundation, Inc.
+   Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-optim.exp ./gdb/testsuite/gdb.base/disasm-optim.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-optim.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/disasm-optim.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-optim.h ./gdb/testsuite/gdb.base/disasm-optim.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-optim.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/disasm-optim.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2015-2020 Free Software Foundation, Inc.
+   Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-optim.S ./gdb/testsuite/gdb.base/disasm-optim.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/disasm-optim.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/disasm-optim.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2015-2020 Free Software Foundation, Inc.
+   Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/display.exp ./gdb/testsuite/gdb.base/display.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/display.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/display.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dmsym.c ./gdb/testsuite/gdb.base/dmsym.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dmsym.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dmsym.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dmsym.exp ./gdb/testsuite/gdb.base/dmsym.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dmsym.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dmsym.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dmsym_main.c ./gdb/testsuite/gdb.base/dmsym_main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dmsym_main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dmsym_main.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/double-prompt-target-event-error.c ./gdb/testsuite/gdb.base/double-prompt-target-event-error.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/double-prompt-target-event-error.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/double-prompt-target-event-error.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/double-prompt-target-event-error.exp ./gdb/testsuite/gdb.base/double-prompt-target-event-error.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/double-prompt-target-event-error.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/double-prompt-target-event-error.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-bp-same-addr.c ./gdb/testsuite/gdb.base/dprintf-bp-same-addr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-bp-same-addr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-bp-same-addr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-bp-same-addr.exp ./gdb/testsuite/gdb.base/dprintf-bp-same-addr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-bp-same-addr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-bp-same-addr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf.c ./gdb/testsuite/gdb.base/dprintf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-detach.c ./gdb/testsuite/gdb.base/dprintf-detach.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-detach.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-detach.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-detach.exp ./gdb/testsuite/gdb.base/dprintf-detach.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-detach.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-detach.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2014-2020 Free Software Foundation, Inc.
+#   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf.exp ./gdb/testsuite/gdb.base/dprintf.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2021 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
@@ -160,7 +160,7 @@ proc test_agent {} {
 	return
     }
 
-    # Even if the the target reports that it does support target side
+    # Even if the target reports that it does support target side
     # commands, we can only tell that it supports them in combination
     # with a particular breakpoint type (Z0, Z1, etc.) when we try to
     # insert the breakpoint.  When "set breakpoint always-inserted is
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-next.c ./gdb/testsuite/gdb.base/dprintf-next.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-next.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-next.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-next.exp ./gdb/testsuite/gdb.base/dprintf-next.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-next.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-next.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-non-stop.c ./gdb/testsuite/gdb.base/dprintf-non-stop.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-non-stop.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-non-stop.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-non-stop.exp ./gdb/testsuite/gdb.base/dprintf-non-stop.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-non-stop.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-non-stop.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+#   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-pending.c ./gdb/testsuite/gdb.base/dprintf-pending.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-pending.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-pending.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-pending.exp ./gdb/testsuite/gdb.base/dprintf-pending.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-pending.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-pending.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2013-2020 Free Software Foundation, Inc.
+#   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-pendshr.c ./gdb/testsuite/gdb.base/dprintf-pendshr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dprintf-pendshr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dprintf-pendshr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso.c ./gdb/testsuite/gdb.base/dso2dso.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dso2dso.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso-dso1.c ./gdb/testsuite/gdb.base/dso2dso-dso1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso-dso1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dso2dso-dso1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso-dso1.h ./gdb/testsuite/gdb.base/dso2dso-dso1.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso-dso1.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dso2dso-dso1.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso-dso2.c ./gdb/testsuite/gdb.base/dso2dso-dso2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso-dso2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dso2dso-dso2.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso-dso2.h ./gdb/testsuite/gdb.base/dso2dso-dso2.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso-dso2.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dso2dso-dso2.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso.exp ./gdb/testsuite/gdb.base/dso2dso.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dso2dso.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dso2dso.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dtrace-probe.c ./gdb/testsuite/gdb.base/dtrace-probe.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dtrace-probe.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dtrace-probe.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dtrace-probe.d ./gdb/testsuite/gdb.base/dtrace-probe.d
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dtrace-probe.d	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dtrace-probe.d	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dtrace-probe.exp ./gdb/testsuite/gdb.base/dtrace-probe.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dtrace-probe.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dtrace-probe.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dump.exp ./gdb/testsuite/gdb.base/dump.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dump.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dump.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/duplicate-bp.c ./gdb/testsuite/gdb.base/duplicate-bp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/duplicate-bp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/duplicate-bp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/duplicate-bp.exp ./gdb/testsuite/gdb.base/duplicate-bp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/duplicate-bp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/duplicate-bp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dup-sect.exp ./gdb/testsuite/gdb.base/dup-sect.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dup-sect.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dup-sect.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dup-sect.S ./gdb/testsuite/gdb.base/dup-sect.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/dup-sect.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/dup-sect.S	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/echo.exp ./gdb/testsuite/gdb.base/echo.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/echo.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/echo.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 1988-2020 Free Software Foundation, Inc.
+#   Copyright (C) 1988-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eh_return.c ./gdb/testsuite/gdb.base/eh_return.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eh_return.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/eh_return.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,98 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   It was copied from gcc repo, gcc/testsuite/gcc.target/aarch64/eh_return.c.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+int val, test, failed;
+
+int main (void);
+
+void
+eh0 (void *p)
+{
+  val = (int)(long)p & 7;
+  if (val)
+    abort ();
+}
+
+void
+eh1 (void *p, int x)
+{
+  void *q = __builtin_alloca (x);
+  eh0 (q);
+  __builtin_eh_return (0, p);
+}
+
+void
+eh2a (int a,int b,int c,int d,int e,int f,int g,int h, void *p)
+{
+  val = a + b + c + d + e + f + g + h +  (int)(long)p & 7;
+}
+
+void
+eh2 (void *p)
+{
+  eh2a (val, val, val, val, val, val, val, val, p);
+  __builtin_eh_return (0, p);
+}
+
+
+void
+continuation (void)
+{
+  test++;
+  main ();
+}
+
+void
+fail (void)
+{
+  failed = 1;
+  printf ("failed\n");
+  continuation ();
+}
+
+void
+do_test1 (void)
+{
+  if (!val)
+    eh1 (continuation, 100);
+  fail ();
+}
+
+void
+do_test2 (void)
+{
+  if (!val)
+    eh2 (continuation);
+  fail ();
+}
+
+int
+main (void)
+{
+  if (test == 0)
+    do_test1 ();
+  if (test == 1)
+    do_test2 ();
+  if (failed || test != 2)
+    exit (1);
+  exit (0);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eh_return.exp ./gdb/testsuite/gdb.base/eh_return.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eh_return.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/eh_return.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,48 @@
+# Copyright 2020-2021 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/>.  */
+
+# Check if executable generated from eh_return.c assert when setting a
+# breakpoint at the last insn of eh, and running to it.
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+	 {debug nopie}]} {
+    return -1
+}
+
+set address -1
+
+# Get the address of the last insn in function eh2.
+gdb_test_multiple "disassemble eh2" "" {
+    -re -wrap "($hex)\[^\r\n\]*\r\nEnd of assembler dump." {
+	set address $expect_out(1,string)
+	pass $gdb_test_name
+    }
+}
+
+if { $address == -1 } {
+    return 0
+}
+
+clean_restart ${binfile}
+
+gdb_breakpoint "*$address" message
+
+# The assert did not reproduce when running to main, and continuing to the
+# breakpoint, so instead, run to the breakpoint.
+gdb_run_cmd
+
+gdb_test "" "Breakpoint .*" "hit breakpoint"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/empty_exe.exp ./gdb/testsuite/gdb.base/empty_exe.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/empty_exe.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/empty_exe.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ena-dis-br.exp ./gdb/testsuite/gdb.base/ena-dis-br.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ena-dis-br.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ena-dis-br.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
@@ -48,7 +48,7 @@ proc break_at { breakpoint where } {
     gdb_test_multiple "$test" "$test" {
 	-re "Breakpoint (\[0-9\]*) at .*$where.*$gdb_prompt $" {
 	    set bp $expect_out(1,string)
-	    pass "$test"
+	    pass $gdb_test_name
 	}
     }
     return $bp
@@ -104,7 +104,12 @@ gdb_test "info break $bp" \
 
 # Verify that we don't stop at a disabled breakpoint.
 gdb_continue_to_end "no stop"
-rerun_to_main
+
+set count 1
+with_test_prefix "run $count" {
+    rerun_to_main
+    incr count
+}
 gdb_continue_to_end "no stop at auto-disabled break marker2"
 
 # Verify that we can set a breakpoint to be self-deleting after the
@@ -149,7 +154,9 @@ if ![runto_main] then {
 
 set bp [break_at $bp_location7 "line $bp_location7"]
 
-set bp2 [break_at marker1 " line $bp_location15"]
+with_test_prefix "enable count" {
+  set bp2 [break_at marker1 " line $bp_location15"]
+}
 
 gdb_test "enable count" \
     "Argument required \\(hit count\\)\\." \
@@ -181,7 +188,9 @@ if ![runto_main] then {
     fail "enable/disable break tests suppressed"
 }
 
-set bp [break_at "marker1" " line $bp_location15.*"]
+with_test_prefix "ignore count" {
+    set bp [break_at "marker1" " line $bp_location15.*"]
+}
 
 # Verify that an ignore of a non-existent breakpoint is gracefully
 # handled.
@@ -216,7 +225,11 @@ gdb_test "info break $bp" \
     "info ignored break marker1"
 
 gdb_continue_to_end "no stop at ignored break marker1"
-rerun_to_main
+
+with_test_prefix "run $count" {
+    rerun_to_main
+    incr count
+}
 
 # See the comments in condbreak.exp for "run until breakpoint at marker1" 
 # for an explanation of the xfail below.
@@ -236,7 +249,9 @@ if ![runto_main] then {
     fail "enable/disable break tests suppressed"
 }
 
-set bp [break_at marker1 " line $bp_location15.*"]
+with_test_prefix "ignore count and auto-delete" {
+    set bp [break_at marker1 " line $bp_location15.*"]
+}
 
 gdb_test "ignore $bp 1" \
     "Will ignore next crossing of breakpoint \[0-9\]*.*" \
@@ -249,7 +264,11 @@ gdb_test "info break $bp" \
     "info break marker1 after hitting breakpoint"
 
 gdb_continue_to_end "no stop at ignored & auto-deleted break marker1"
-rerun_to_main
+
+with_test_prefix "run $count" {
+    rerun_to_main
+    incr count
+}
 
 gdb_test "continue" \
     ".*marker1 .*:$bp_location15.*" \
@@ -262,7 +281,9 @@ if ![runto_main] then {
     fail "enable/disable break tests suppressed"
 }
 
-set bp [break_at marker1 " line $bp_location15"]
+with_test_prefix "disabled breakpoint ignore count" {
+    set bp [break_at marker1 " line $bp_location15"]
+}
 
 gdb_test "ignore $bp 10" \
     "Will ignore next 10 crossings of breakpoint \[0-9\]*.*" \
@@ -271,7 +292,10 @@ gdb_test "ignore $bp 10" \
 gdb_test_no_output "disable $bp" "disable break marker1"
 
 gdb_continue_to_end "no stop at ignored & disabled break marker1"
-rerun_to_main
+
+with_test_prefix "run $count" {
+    rerun_to_main
+}
 
 gdb_test "info break $bp" \
     "\[0-9\]*\[ \t\]+breakpoint\[ \t\]+keep\[ \t\]+n.*ignore next 10 hits.*" \
@@ -315,9 +339,18 @@ set b2 0
 set b3 0
 set b4 0
 set b1 [break_at main ""]
-set b2 [break_at main ""]
-set b3 [break_at main ""]
-set b4 [break_at main ""]
+
+with_test_prefix "2nd breakpoint" {
+    set b2 [break_at main ""]
+}
+
+with_test_prefix "3rd breakpoint" {
+    set b3 [break_at main ""]
+}
+
+with_test_prefix "4th breakpoint" {
+    set b4 [break_at main ""]
+}
 
 # Perform tests for disable/enable commands on multiple
 # locations and breakpoints.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/endian.c ./gdb/testsuite/gdb.base/endian.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/endian.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/endian.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/endian.exp ./gdb/testsuite/gdb.base/endian.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/endian.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/endian.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
@@ -18,26 +18,26 @@
 standard_testfile
 
 set en_auto "The target endianness is set automatically"
-set en_set "The target is assumed to be"
+set en_set "The target is set to"
 
 clean_restart
 
 # First check that the automatic endianness is updated
 # with the `set endian' command.
 gdb_test "set endian auto" \
-    "$en_auto \\\(currently \(\?:big\|little\) endian\\\)" \
+    "$en_auto \\\(currently \(\?:big\|little\) endian\\\)\\." \
     "default target endianness"
-gdb_test "set endian big" "$en_set big endian" \
+gdb_test "set endian big" "$en_set big endian\\." \
     "set target endianness"
-gdb_test "set endian auto" "$en_auto \\\(currently big endian\\\)" \
+gdb_test "set endian auto" "$en_auto \\\(currently big endian\\\)\\." \
     "auto target endianness"
-gdb_test "set endian little" "$en_set little endian" \
+gdb_test "set endian little" "$en_set little endian\\." \
     "set target endianness little"
-gdb_test "set endian auto" "$en_auto \\\(currently little endian\\\)" \
+gdb_test "set endian auto" "$en_auto \\\(currently little endian\\\)\\." \
     "auto target endianness little"
-gdb_test "set endian big" "$en_set big endian" \
+gdb_test "set endian big" "$en_set big endian\\." \
     "set target endianness big"
-gdb_test "set endian auto" "$en_auto \\\(currently big endian\\\)" \
+gdb_test "set endian auto" "$en_auto \\\(currently big endian\\\)\\." \
     "auto target endianness big"
 
 if { [build_executable ${testfile}.exp $testfile] } {
@@ -49,7 +49,7 @@ if { [gdb_file_cmd $binfile] } {
 }
 set test "get target endianness"
 if { [gdb_test_multiple "show endian" "$test" {
-    -re "$en_auto \\\(currently \(big\|little\) endian\\\).*$gdb_prompt" {
+    -re "$en_auto \\\(currently \(big\|little\) endian\\\)\\..*$gdb_prompt" {
 	set endian $expect_out(1,string)
 	pass "$test"
     }
@@ -64,31 +64,31 @@ if { [gdb_test_multiple "show endian" "$
 if { [gdb_unload] } {
     gdb_suppress_entire_file "$pf_prefix cannot unselect executable"
 }
-gdb_test "set endian big" "$en_set big endian" \
+gdb_test "set endian big" "$en_set big endian\\." \
     "override target endianness big"
-gdb_test "set endian auto" "$en_auto \\\(currently big endian\\\)" \
+gdb_test "set endian auto" "$en_auto \\\(currently big endian\\\)\\." \
     "override auto target endianness big"
 if { [gdb_file_cmd $binfile] } {
     gdb_suppress_entire_file "$pf_prefix cannot select executable"
 }
-gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)" \
+gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)\\." \
     "previously big default executable endianness"
 if { [gdb_unload] } {
     gdb_suppress_entire_file "$pf_prefix cannot unselect executable"
 }
-gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)" \
+gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)\\." \
     "previously big default no executable endianness"
-gdb_test "set endian little" "$en_set little endian" \
+gdb_test "set endian little" "$en_set little endian\\." \
     "override target endianness little"
-gdb_test "set endian auto" "$en_auto \\\(currently little endian\\\)" \
+gdb_test "set endian auto" "$en_auto \\\(currently little endian\\\)\\." \
     "override auto target endianness little"
 if { [gdb_file_cmd $binfile] } {
     gdb_suppress_entire_file "$pf_prefix cannot select executable"
 }
-gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)" \
+gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)\\." \
     "previously little default executable endianness"
 if { [gdb_unload] } {
     gdb_suppress_entire_file "$pf_prefix cannot unselect executable"
 }
-gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)" \
+gdb_test "show endian" "$en_auto \\\(currently $endian endian\\\)\\." \
     "previously little default no executable endianness"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/endianity.c ./gdb/testsuite/gdb.base/endianity.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/endianity.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/endianity.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/endianity.exp ./gdb/testsuite/gdb.base/endianity.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/endianity.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/endianity.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -25,7 +25,7 @@ if ![runto "endianity.c:$bp_location" ]
   return -1
 }
 
-gdb_test "print o" "= {v = 3, w = 2, x = 7, f = 23.5, cplx = 1.25 \\+ 7.25 \\* I, d = 75}" \
+gdb_test "print o" "= {v = 3, w = 2, x = 7, f = 23.5, cplx = 1.25 \\+ 7.25i, d = 75}" \
     "print o before assignment"
 
 gdb_test "print o.v = 4" "= 4"
@@ -41,5 +41,5 @@ if { ([test_compiler_info {gcc-[0-5]-*}]
 gdb_test "x/x &o.v" "0x04000000"
 gdb_test "x/xh &o.w" "0x0300"
 
-gdb_test "print o" "= {v = 4, w = 3, x = 2, f = 1.5, cplx = 1.25 \\+ 7.25 \\* I, d = -23.125}" \
+gdb_test "print o" "= {v = 4, w = 3, x = 2, f = 1.5, cplx = 1.25 \\+ 7.25i, d = -23.125}" \
     "print o after assignment"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ending-run.exp ./gdb/testsuite/gdb.base/ending-run.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ending-run.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ending-run.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/enum_cond.c ./gdb/testsuite/gdb.base/enum_cond.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/enum_cond.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/enum_cond.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* This testcase is part of GDB, the GNU debugger.
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/enum_cond.exp ./gdb/testsuite/gdb.base/enum_cond.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/enum_cond.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/enum_cond.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/enumval.c ./gdb/testsuite/gdb.base/enumval.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/enumval.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/enumval.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/enumval.exp ./gdb/testsuite/gdb.base/enumval.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/enumval.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/enumval.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/environ.exp ./gdb/testsuite/gdb.base/environ.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/environ.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/environ.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eu-strip-infcall.c ./gdb/testsuite/gdb.base/eu-strip-infcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eu-strip-infcall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/eu-strip-infcall.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eu-strip-infcall.exp ./gdb/testsuite/gdb.base/eu-strip-infcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eu-strip-infcall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/eu-strip-infcall.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eval-avoid-side-effects.exp ./gdb/testsuite/gdb.base/eval-avoid-side-effects.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eval-avoid-side-effects.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/eval-avoid-side-effects.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eval.exp ./gdb/testsuite/gdb.base/eval.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eval.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/eval.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eval-skip.exp ./gdb/testsuite/gdb.base/eval-skip.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/eval-skip.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/eval-skip.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/examine-backward.c ./gdb/testsuite/gdb.base/examine-backward.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/examine-backward.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/examine-backward.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/examine-backward.exp ./gdb/testsuite/gdb.base/examine-backward.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/examine-backward.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/examine-backward.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/exec-invalid-sysroot.exp ./gdb/testsuite/gdb.base/exec-invalid-sysroot.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/exec-invalid-sysroot.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/exec-invalid-sysroot.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/execl-update-breakpoints.c ./gdb/testsuite/gdb.base/execl-update-breakpoints.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/execl-update-breakpoints.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/execl-update-breakpoints.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/execl-update-breakpoints.exp ./gdb/testsuite/gdb.base/execl-update-breakpoints.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/execl-update-breakpoints.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/execl-update-breakpoints.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/execution-termios.c ./gdb/testsuite/gdb.base/execution-termios.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/execution-termios.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/execution-termios.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/execution-termios.exp ./gdb/testsuite/gdb.base/execution-termios.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/execution-termios.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/execution-termios.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/exe-lock.exp ./gdb/testsuite/gdb.base/exe-lock.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/exe-lock.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/exe-lock.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/exitsignal.exp ./gdb/testsuite/gdb.base/exitsignal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/exitsignal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/exitsignal.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/expand-psymtabs.c ./gdb/testsuite/gdb.base/expand-psymtabs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/expand-psymtabs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/expand-psymtabs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/expand-psymtabs.exp ./gdb/testsuite/gdb.base/expand-psymtabs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/expand-psymtabs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/expand-psymtabs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/exprs.exp ./gdb/testsuite/gdb.base/exprs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/exprs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/exprs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1988-2020 Free Software Foundation, Inc.
+#   Copyright 1988-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fileio.c ./gdb/testsuite/gdb.base/fileio.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fileio.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fileio.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,13 +1,12 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <sys/errno.h>
 #include <sys/types.h>
-#include <sys/fcntl.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <errno.h>
 #include <sys/wait.h>
+#include <fcntl.h>
 #include <unistd.h>
 #include <time.h>
 /* TESTS :
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fileio.exp ./gdb/testsuite/gdb.base/fileio.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fileio.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fileio.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2002-2020 Free Software Foundation, Inc.
+#   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/filesym.c ./gdb/testsuite/gdb.base/filesym.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/filesym.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/filesym.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/filesym.exp ./gdb/testsuite/gdb.base/filesym.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/filesym.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/filesym.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/find.c ./gdb/testsuite/gdb.base/find.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/find.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/find.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,7 +1,7 @@
 /* Testcase for the find command.
    This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/find.exp ./gdb/testsuite/gdb.base/find.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/find.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/find.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/find-unmapped.c ./gdb/testsuite/gdb.base/find-unmapped.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/find-unmapped.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/find-unmapped.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/find-unmapped.exp ./gdb/testsuite/gdb.base/find-unmapped.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/find-unmapped.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/find-unmapped.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/finish.exp ./gdb/testsuite/gdb.base/finish.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/finish.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/finish.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2000-2020 Free Software Foundation, Inc.
+# Copyright 2000-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/finish-pretty.c ./gdb/testsuite/gdb.base/finish-pretty.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/finish-pretty.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/finish-pretty.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/finish-pretty.exp ./gdb/testsuite/gdb.base/finish-pretty.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/finish-pretty.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/finish-pretty.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fixsection.c ./gdb/testsuite/gdb.base/fixsection.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fixsection.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fixsection.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fixsection.exp ./gdb/testsuite/gdb.base/fixsection.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fixsection.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fixsection.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/flexible-array-member.c ./gdb/testsuite/gdb.base/flexible-array-member.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/flexible-array-member.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/flexible-array-member.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,70 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <stdlib.h>
+
+struct no_size
+{
+  int n;
+  int items[];
+};
+
+struct zero_size
+{
+  int n;
+  int items[0];
+};
+
+struct zero_size_only
+{
+  int items[0];
+};
+
+struct no_size *ns;
+struct zero_size *zs;
+struct zero_size_only *zso;
+
+static void
+break_here (void)
+{
+}
+
+int
+main (void)
+{
+  ns = (struct no_size *) malloc (sizeof (*ns) + 3 * sizeof (int));
+  zs = (struct zero_size *) malloc (sizeof (*zs) + 3 * sizeof (int));
+  zso = (struct zero_size_only *) malloc (sizeof (*zso) + 3 * sizeof (int));
+
+  ns->n = 3;
+  ns->items[0] = 101;
+  ns->items[1] = 102;
+  ns->items[2] = 103;
+
+  zs->n = 3;
+  zs->items[0] = 201;
+  zs->items[1] = 202;
+  zs->items[2] = 203;
+
+  zso->items[0] = 301;
+  zso->items[1] = 302;
+  zso->items[2] = 303;
+
+  break_here ();
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/flexible-array-member.exp ./gdb/testsuite/gdb.base/flexible-array-member.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/flexible-array-member.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/flexible-array-member.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,66 @@
+# Copyright 2020-2021 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 printing and subscripting flexible array members.
+
+standard_testfile
+
+if { [prepare_for_testing "failed to prepare" \
+	${testfile} ${srcfile}] } {
+    return
+}
+
+if { ![runto break_here] } {
+    untested "could not run to break_here"
+    return
+}
+
+# The various cases are:
+#
+#  - ns: flexible array member with no size
+#  - zs: flexible array member with size 0 (GNU C extension that predates the
+#    standardization of the feature, but widely supported)
+#  - zso: zero-size only, a corner case where the array is the sole member of
+#    the structure
+
+# Print the whole structure.
+
+gdb_test "print *ns" " = {n = 3, items = $hex}"
+gdb_test "print *zs" " = {n = 3, items = $hex}"
+gdb_test "print *zso" " = {items = $hex}"
+
+# Print all items.
+
+gdb_test "print ns->items\[0\]" " = 101"
+gdb_test "print ns->items\[1\]" " = 102"
+gdb_test "print ns->items\[2\]" " = 103"
+
+gdb_test "print zs->items\[0\]" " = 201"
+gdb_test "print zs->items\[1\]" " = 202"
+gdb_test "print zs->items\[2\]" " = 203"
+
+gdb_test "print zso->items\[0\]" " = 301"
+gdb_test "print zso->items\[1\]" " = 302"
+gdb_test "print zso->items\[2\]" " = 303"
+
+# Check taking the address of array elements (how PR 28675 was originally
+# reported).
+
+gdb_test "print ns->items == &ns->items\[0\]" " = 1"
+gdb_test "print ns->items + 1 == &ns->items\[1\]" " = 1"
+gdb_test "print zs->items == &zs->items\[0\]" " = 1"
+gdb_test "print zs->items + 1 == &zs->items\[1\]" " = 1"
+gdb_test "print zso->items == &zso->items\[0\]" " = 1"
+gdb_test "print zso->items + 1 == &zso->items\[1\]" " = 1"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/float128.c ./gdb/testsuite/gdb.base/float128.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/float128.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/float128.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/float128.exp ./gdb/testsuite/gdb.base/float128.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/float128.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/float128.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/float.c ./gdb/testsuite/gdb.base/float.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/float.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/float.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/float.exp ./gdb/testsuite/gdb.base/float.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/float.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/float.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/floatn.c ./gdb/testsuite/gdb.base/floatn.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/floatn.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/floatn.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/floatn.exp ./gdb/testsuite/gdb.base/floatn.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/floatn.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/floatn.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -114,11 +114,8 @@ gdb_test "print f32x" ".* = 100\\.5.*" "
 gdb_test "print f64x" ".* = 200\\.25.*" "the value of f64x is changed to 200.25"
 
 # Print the original values of c32, c64, c128, c32x, c64x.
-gdb_test "print c32" ".* = 1\\.5 \\+ 1 \\* I.*" "the original value of c32 is 1.5 + 1 * I"
-gdb_test "print c64" ".* = 2\\.25 \\+ 1 \\* I.*" "the original value of c64 is 2.25 + 1 * I"
-gdb_test "print c128" ".* = 3\\.375 \\+ 1 \\* I.*" "the original value of c128 is 3.375 + 1 * I"
-gdb_test "print c32x" ".* = 10\\.5 \\+ 1 \\* I.*" "the original value of c32x is 10.5 + 1 * I"
-gdb_test "print c64x" ".* = 20\\.25 \\+ 1 \\* I.*" "the original value of c64x is 20.25 + 1 * I"
-
-# FIXME: GDB cannot parse non-trivial complex constants yet.
-
+gdb_test "print c32" ".* = 1\\.5 \\+ 1i.*" "the original value of c32 is 1.5 + 1i"
+gdb_test "print c64" ".* = 2\\.25 \\+ 1i.*" "the original value of c64 is 2.25 + 1i"
+gdb_test "print c128" ".* = 3\\.375 \\+ 1i.*" "the original value of c128 is 3.375 + 1i"
+gdb_test "print c32x" ".* = 10\\.5 \\+ 1i.*" "the original value of c32x is 10.5 + 1i"
+gdb_test "print c64x" ".* = 20\\.25 \\+ 1i.*" "the original value of c64x is 20.25 + 1i"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-exec.c ./gdb/testsuite/gdb.base/foll-exec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-exec.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/foll-exec.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 1997-2020 Free Software Foundation, Inc.
+   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-exec.exp ./gdb/testsuite/gdb.base/foll-exec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-exec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/foll-exec.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
@@ -78,10 +78,13 @@ proc do_exec_tests {} {
      fail "couldn't run ${testfile}"
      return
    }
-   # Execute the code setting up variable PROG.
-   set tbreak_line [gdb_get_line_number " tbreak-execlp " $srcfile]
-   gdb_test "tbreak ${tbreak_line}"
-   gdb_continue_to_breakpoint "line tbreak-execlp" ".*execlp \\(.*"
+
+   with_test_prefix "1st run" {
+       # Execute the code setting up variable PROG.
+       set tbreak_line [gdb_get_line_number " tbreak-execlp " $srcfile]
+       gdb_test "tbreak ${tbreak_line}" "" "insert breakpoint"
+       gdb_continue_to_breakpoint "line tbreak-execlp" ".*execlp \\(.*"
+   }
 
    # Verify that we can see various global and local variables
    # in this program, and that they have expected values.  Some
@@ -234,10 +237,13 @@ proc do_exec_tests {} {
      fail "couldn't run ${testfile} (3rd try)"
      return
    }
-   # Execute the code setting up variable PROG.
-   set tbreak_line [gdb_get_line_number " tbreak-execlp " $srcfile]
-   gdb_test "tbreak ${tbreak_line}"
-   gdb_continue_to_breakpoint "line tbreak-execlp" ".*execlp \\(.*"
+
+   with_test_prefix "2nd run" {
+       # Execute the code setting up variable PROG.
+       set tbreak_line [gdb_get_line_number " tbreak-execlp " $srcfile]
+       gdb_test "tbreak ${tbreak_line}" "" "insert breakpoint"
+       gdb_continue_to_breakpoint "line tbreak-execlp" ".*execlp \\(.*"
+   }
 
    # Verify that we can follow through follow an execl()
    # call.  (We must jump around earlier exec* calls.)
@@ -299,10 +305,13 @@ proc do_exec_tests {} {
      fail "couldn't run ${testfile} (4th try)"
      return
    }
-   # Execute the code setting up variable PROG.
-   set tbreak_line [gdb_get_line_number " tbreak-execlp " $srcfile]
-   gdb_test "tbreak ${tbreak_line}"
-   gdb_continue_to_breakpoint "line tbreak-execlp" ".*execlp \\(.*"
+
+   with_test_prefix "3rd run" {
+       # Execute the code setting up variable PROG.
+       set tbreak_line [gdb_get_line_number " tbreak-execlp " $srcfile]
+       gdb_test "tbreak ${tbreak_line}" "" "insert breakpoint"
+       gdb_continue_to_breakpoint "line tbreak-execlp" ".*execlp \\(.*"
+   }
 
    # Verify that we can follow through follow an execv()
    # call.  (We must jump around earlier exec* calls.)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-exec-mode.c ./gdb/testsuite/gdb.base/foll-exec-mode.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-exec-mode.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/foll-exec-mode.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-exec-mode.exp ./gdb/testsuite/gdb.base/foll-exec-mode.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-exec-mode.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/foll-exec-mode.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#    Copyright 1997-2020 Free Software Foundation, Inc.
+#    Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-fork.exp ./gdb/testsuite/gdb.base/foll-fork.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-fork.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/foll-fork.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
@@ -179,13 +179,17 @@ proc test_follow_fork { who detach cmd }
     }
 }
 
+set reading_in_symbols_re {(?:\r\nReading in symbols for [^\r\n]*)?}
+
 proc catch_fork_child_follow {} {
     global gdb_prompt
     global srcfile
+    global reading_in_symbols_re
 
     set bp_after_fork [gdb_get_line_number "set breakpoint here"]
 
-    gdb_test "catch fork" "Catchpoint \[0-9\]* \\(fork\\)" \
+    gdb_test "catch fork" \
+	"Catchpoint \[0-9\]* \\(fork\\)$reading_in_symbols_re" \
 	"explicit child follow, set catch fork"
 
     # Verify that the catchpoint is mentioned in an "info breakpoints",
@@ -285,10 +289,12 @@ proc catch_fork_unpatch_child {} {
 proc tcatch_fork_parent_follow {} {
     global gdb_prompt
     global srcfile
+    global reading_in_symbols_re
 
     set bp_after_fork [gdb_get_line_number "set breakpoint here"]
 
-    gdb_test "catch fork" "Catchpoint \[0-9\]* \\(fork\\)" \
+    gdb_test "catch fork" \
+	"Catchpoint \[0-9\]* \\(fork\\)$reading_in_symbols_re" \
 	"explicit parent follow, set tcatch fork"
 
 # ??rehrauer: I don't yet know how to get the id of the tcatch
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-vfork.c ./gdb/testsuite/gdb.base/foll-vfork.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-vfork.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/foll-vfork.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1997-2020 Free Software Foundation, Inc.
+   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-vfork-exit.c ./gdb/testsuite/gdb.base/foll-vfork-exit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-vfork-exit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/foll-vfork-exit.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1997-2020 Free Software Foundation, Inc.
+   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-vfork.exp ./gdb/testsuite/gdb.base/foll-vfork.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/foll-vfork.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/foll-vfork.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fork-print-inferior-events.c ./gdb/testsuite/gdb.base/fork-print-inferior-events.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fork-print-inferior-events.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fork-print-inferior-events.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fork-print-inferior-events.exp ./gdb/testsuite/gdb.base/fork-print-inferior-events.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fork-print-inferior-events.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fork-print-inferior-events.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fork-running-state.c ./gdb/testsuite/gdb.base/fork-running-state.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fork-running-state.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fork-running-state.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
@@ -20,6 +20,7 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <errno.h>
+#include <signal.h>
 
 int save_parent;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fork-running-state.exp ./gdb/testsuite/gdb.base/fork-running-state.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fork-running-state.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fork-running-state.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
@@ -98,30 +98,19 @@ proc do_test { detach_on_fork follow_for
 
     set not_nl "\[^\r\n\]*"
 
-    if {$detach_on_fork == "on" && $non_stop == "on" && $follow_fork == "child"} {
+    if {$detach_on_fork == "on" && $follow_fork == "child"} {
 	gdb_test "info threads" \
 	    "  2.1 ${not_nl}\\\(running\\\).*No selected thread.*"
-    } elseif {$detach_on_fork == "on" && $follow_fork == "child"} {
-	gdb_test "info threads" \
-	    "\\\* 2.1 ${not_nl}\\\(running\\\)"
     } elseif {$detach_on_fork == "on"} {
 	gdb_test "info threads" \
 	    "\\\* 1 ${not_nl}\\\(running\\\)"
-    } elseif {$non_stop == "on"
-	      || ($schedule_multiple == "on" && $follow_fork == "parent")} {
+    } elseif {$non_stop == "on" || $schedule_multiple == "on"} {
 	# Both parent and child should be marked running, and the
 	# parent should be selected.
 	gdb_test "info threads" \
 	    [multi_line \
 		 "\\\* 1.1 ${not_nl} \\\(running\\\)${not_nl}" \
 		 "  2.1 ${not_nl} \\\(running\\\)"]
-    } elseif {$schedule_multiple == "on" && $follow_fork == "child"} {
-	# Both parent and child should be marked running, and the
-	# child should be selected.
-	gdb_test "info threads" \
-	    [multi_line \
-		 "  1.1 ${not_nl} \\\(running\\\)${not_nl}" \
-		 "\\\* 2.1 ${not_nl} \\\(running\\\)"]
     } else {
 	set test "only $follow_fork marked running"
 	gdb_test_multiple "info threads" $test {
@@ -131,7 +120,7 @@ proc do_test { detach_on_fork follow_for
 	    -re "\\\* 1.1 ${not_nl}\\\(running\\\)\r\n  2.1 ${not_nl}\r\n$gdb_prompt $" {
 		gdb_assert [string eq $follow_fork "parent"] $test
 	    }
-	    -re "1.1 ${not_nl}\r\n\\\* 2.1 ${not_nl}\\\(running\\\)\r\n$gdb_prompt $" {
+	    -re "\\\* 1.1 ${not_nl}\r\n  2.1 ${not_nl}\\\(running\\\)\r\n$gdb_prompt $" {
 		gdb_assert [string eq $follow_fork "child"] $test
 	    }
 	}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fortran-sym-case.c ./gdb/testsuite/gdb.base/fortran-sym-case.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fortran-sym-case.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fortran-sym-case.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fortran-sym-case.exp ./gdb/testsuite/gdb.base/fortran-sym-case.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fortran-sym-case.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fortran-sym-case.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frameapply.c ./gdb/testsuite/gdb.base/frameapply.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frameapply.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/frameapply.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frameapply.exp ./gdb/testsuite/gdb.base/frameapply.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frameapply.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/frameapply.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frame-args.c ./gdb/testsuite/gdb.base/frame-args.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frame-args.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/frame-args.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frame-args.exp ./gdb/testsuite/gdb.base/frame-args.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frame-args.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/frame-args.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frame-selection.c ./gdb/testsuite/gdb.base/frame-selection.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frame-selection.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/frame-selection.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frame-selection.exp ./gdb/testsuite/gdb.base/frame-selection.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/frame-selection.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/frame-selection.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/freebpcmd.c ./gdb/testsuite/gdb.base/freebpcmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/freebpcmd.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/freebpcmd.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Test program for GDB crashes while doing bp commands that continue inferior.
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 Free Software Foundation, Inc.
 
    This file is part of the gdb testsuite.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/freebpcmd.exp ./gdb/testsuite/gdb.base/freebpcmd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/freebpcmd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/freebpcmd.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2003-2020 Free Software Foundation, Inc.
+#   Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fullname.c ./gdb/testsuite/gdb.base/fullname.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fullname.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fullname.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fullname.exp ./gdb/testsuite/gdb.base/fullname.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fullname.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fullname.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fullpath-expand.c ./gdb/testsuite/gdb.base/fullpath-expand.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fullpath-expand.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fullpath-expand.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fullpath-expand.exp ./gdb/testsuite/gdb.base/fullpath-expand.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fullpath-expand.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fullpath-expand.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fullpath-expand-func.c ./gdb/testsuite/gdb.base/fullpath-expand-func.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/fullpath-expand-func.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/fullpath-expand-func.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/funcargs.exp ./gdb/testsuite/gdb.base/funcargs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/funcargs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/funcargs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
@@ -248,13 +248,13 @@ proc complex_args {} {
 
     # Run; should stop at call1a and print actual arguments.
     gdb_run_cmd
-    gdb_test "" " callca \\(f1=1 \\+ 2 \\* I, f2=1 \\+ 2 \\* I, f3=1 \\+ 2 \\* I\\) .*" "run to call2a"
+    gdb_test "" " callca \\(f1=1 \\+ 2i, f2=1 \\+ 2i, f3=1 \\+ 2i\\) .*" "run to call2a"
 
-    gdb_test "cont" ".* callcb \\(d1=3 \\+ 4 \\* I, d2=3 \\+ 4 \\* I, d3=3 \\+ 4 \\* I\\) .*" "continue to callcb"
-    gdb_test "cont" ".* callcc \\(ld1=5 \\+ 6 \\* I, ld2=5 \\+ 6 \\* I, ld3=5 \\+ 6 \\* I\\) .*" "continue to callcc"
-    gdb_test "cont" ".* callcd \\(fc1=1 \\+ 2 \\* I, dc1=3 \\+ 4 \\* I, ldc1=5 \\+ 6 \\* I\\) .*" "continue to callcd"
-    gdb_test "cont" ".* callce \\(dc1=3 \\+ 4 \\* I, ldc1=5 \\+ 6 \\* I, fc1=1 \\+ 2 \\* I\\) .*" "continue to callce"
-    gdb_test "cont" ".* callcf \\(ldc1=5 \\+ 6 \\* I, fc1=1 \\+ 2 \\* I, dc1=3 \\+ 4 \\* I\\) .*" "continue to callcf"
+    gdb_test "cont" ".* callcb \\(d1=3 \\+ 4i, d2=3 \\+ 4i, d3=3 \\+ 4i\\) .*" "continue to callcb"
+    gdb_test "cont" ".* callcc \\(ld1=5 \\+ 6i, ld2=5 \\+ 6i, ld3=5 \\+ 6i\\) .*" "continue to callcc"
+    gdb_test "cont" ".* callcd \\(fc1=1 \\+ 2i, dc1=3 \\+ 4i, ldc1=5 \\+ 6i\\) .*" "continue to callcd"
+    gdb_test "cont" ".* callce \\(dc1=3 \\+ 4i, ldc1=5 \\+ 6i, fc1=1 \\+ 2i\\) .*" "continue to callce"
+    gdb_test "cont" ".* callcf \\(ldc1=5 \\+ 6i, fc1=1 \\+ 2i, dc1=3 \\+ 4i\\) .*" "continue to callcf"
 }
 
 
@@ -271,9 +271,9 @@ proc complex_integral_args {} {
 
     # Run; should stop at call1a and print actual arguments.
     gdb_run_cmd
-    gdb_test "" " callc1a \\(c=97 'a', s=1, i=2, ui=7, l=3, fc1=1 \\+ 2 \\* I, dc1=3 \\+ 4 \\* I, ldc1=5 \\+ 6 \\* I\\) .*" "run to callc1a"
+    gdb_test "" " callc1a \\(c=97 'a', s=1, i=2, ui=7, l=3, fc1=1 \\+ 2i, dc1=3 \\+ 4i, ldc1=5 \\+ 6i\\) .*" "run to callc1a"
 
-    gdb_test "cont" ".* callc1b \\(ldc1=5 \\+ 6 \\* I\\, c=97 'a', s=1, i=2, fc1=1 \\+ 2 \\* I, ui=7, l=3, dc1=3 \\+ 4 \\* I\\) .*" "continue to callc1b"
+    gdb_test "cont" ".* callc1b \\(ldc1=5 \\+ 6i\\, c=97 'a', s=1, i=2, fc1=1 \\+ 2i, ui=7, l=3, dc1=3 \\+ 4i\\) .*" "continue to callc1b"
 }
 
 #
@@ -289,9 +289,9 @@ proc complex_float_integral_args {} {
 
     # Run; should stop at call1a and print actual arguments.
     gdb_run_cmd
-    gdb_test "" " callc2a \\(c=97 'a', s=1, i=2, ui=7, l=3, f=4, d=5, fc1=1 \\+ 2 \\* I, dc1=3 \\+ 4 \\* I, ldc1=5 \\+ 6 \\* I\\) .*" "run to callc2a"
+    gdb_test "" " callc2a \\(c=97 'a', s=1, i=2, ui=7, l=3, f=4, d=5, fc1=1 \\+ 2i, dc1=3 \\+ 4i, ldc1=5 \\+ 6i\\) .*" "run to callc2a"
 
-    gdb_test "cont" ".* callc2b \\(fc1=1 \\+ 2 \\* I, c=97 'a', s=1, i=2, ui=7, ldc1=5 \\+ 6 \\* I\\, l=3, f=4, d=5, dc1=3 \\+ 4 \\* I\\) .*" "continue to callc2b"
+    gdb_test "cont" ".* callc2b \\(fc1=1 \\+ 2i, c=97 'a', s=1, i=2, ui=7, ldc1=5 \\+ 6i\\, l=3, f=4, d=5, dc1=3 \\+ 4i\\) .*" "continue to callc2b"
 }
 
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/func-ptr.c ./gdb/testsuite/gdb.base/func-ptr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/func-ptr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/func-ptr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/func-ptr.exp ./gdb/testsuite/gdb.base/func-ptr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/func-ptr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/func-ptr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/func-ptrs.c ./gdb/testsuite/gdb.base/func-ptrs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/func-ptrs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/func-ptrs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/func-ptrs.exp ./gdb/testsuite/gdb.base/func-ptrs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/func-ptrs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/func-ptrs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-buffer-overflow.c ./gdb/testsuite/gdb.base/gcore-buffer-overflow.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-buffer-overflow.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore-buffer-overflow.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2007-2020 Free Software Foundation, Inc.
+/* Copyright 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-buffer-overflow.exp ./gdb/testsuite/gdb.base/gcore-buffer-overflow.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-buffer-overflow.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore-buffer-overflow.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore.c ./gdb/testsuite/gdb.base/gcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2002-2020 Free Software Foundation, Inc.
+/* Copyright 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore.exp ./gdb/testsuite/gdb.base/gcore.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-relro.exp ./gdb/testsuite/gdb.base/gcore-relro.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-relro.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore-relro.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-relro-lib.c ./gdb/testsuite/gdb.base/gcore-relro-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-relro-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore-relro-lib.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-relro-main.c ./gdb/testsuite/gdb.base/gcore-relro-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-relro-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore-relro-main.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-relro-pie.c ./gdb/testsuite/gdb.base/gcore-relro-pie.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-relro-pie.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore-relro-pie.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,7 +18,7 @@
 void
 break_here (void)
 {
-  *(int *) 0 = 0;
+  *(volatile int *) 0 = 0;
 }
 
 void
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-relro-pie.exp ./gdb/testsuite/gdb.base/gcore-relro-pie.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-relro-pie.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore-relro-pie.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-tls-pie.c ./gdb/testsuite/gdb.base/gcore-tls-pie.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-tls-pie.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore-tls-pie.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -25,7 +25,7 @@ __thread char i;
 void
 break_here (void)
 {
-  *(int *) 0 = 0;
+  *(volatile int *) 0 = 0;
 }
 
 void
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-tls-pie.exp ./gdb/testsuite/gdb.base/gcore-tls-pie.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gcore-tls-pie.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gcore-tls-pie.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -19,6 +19,10 @@
 
 standard_testfile
 
+if { [have_fuse_ld_gold] == 0} {
+    return -1
+}
+
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug additional_flags=-fpie "ldflags=-pie -fuse-ld=gold"}]} {
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1056.exp ./gdb/testsuite/gdb.base/gdb1056.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1056.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb1056.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1090.c ./gdb/testsuite/gdb.base/gdb1090.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1090.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb1090.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 /* Test program for multi-register variable.
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 Free Software Foundation, Inc.
 
    This file is part of the gdb testsuite.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1090.exp ./gdb/testsuite/gdb.base/gdb1090.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1090.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb1090.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb11530.c ./gdb/testsuite/gdb.base/gdb11530.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb11530.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb11530.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 Free Software Foundation, Inc.
 
    Contributed by Pierre Muller.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb11530.exp ./gdb/testsuite/gdb.base/gdb11530.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb11530.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb11530.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb11531.c ./gdb/testsuite/gdb.base/gdb11531.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb11531.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb11531.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 Free Software Foundation, Inc.
 
    Contributed by Pierre Muller.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb11531.exp ./gdb/testsuite/gdb.base/gdb11531.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb11531.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb11531.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1250.c ./gdb/testsuite/gdb.base/gdb1250.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1250.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb1250.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test program for stack trace through noreturn function.
 
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 Free Software Foundation, Inc.
 
    This file is part of the gdb testsuite.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1250.exp ./gdb/testsuite/gdb.base/gdb1250.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1250.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb1250.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1555.c ./gdb/testsuite/gdb.base/gdb1555.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1555.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb1555.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test step/next in a shared library
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1555.exp ./gdb/testsuite/gdb.base/gdb1555.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1555.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb1555.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1555-main.c ./gdb/testsuite/gdb.base/gdb1555-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1555-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb1555-main.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test step/next in a shared library
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1821.c ./gdb/testsuite/gdb.base/gdb1821.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1821.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb1821.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test printing of structure member names in gdb. PR exp/1821
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1821.exp ./gdb/testsuite/gdb.base/gdb1821.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb1821.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb1821.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb-caching-proc.exp ./gdb/testsuite/gdb.base/gdb-caching-proc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb-caching-proc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb-caching-proc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2018-2020 Free Software Foundation, Inc.
+#   Copyright 2018-2021 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
@@ -28,7 +28,9 @@ proc test_proc { name } {
 
     set resultlist [list]
 
-    set first [$real_name]
+    with_test_prefix initial {
+	set first [gdb_do_cache_wrap $real_name]
+    }
     lappend resultlist $first
 
     # Ten repetitions was enough to trigger target_supports_scheduler_locking,
@@ -37,7 +39,9 @@ proc test_proc { name } {
 
     set racy 0
     for {set i 0} {$i < $repeat} {incr i} {
-	set rerun [$real_name]
+	with_test_prefix $i {
+	    set rerun [gdb_do_cache_wrap $real_name]
+	}
 	lappend resultlist $rerun
 	if { $rerun != $first } {
 	    set racy 1
@@ -45,9 +49,9 @@ proc test_proc { name } {
     }
 
     if { $racy  == 0 } {
-	pass "$name consistency"
+	pass "consistency"
     } else {
-	fail "$name consistency"
+	fail "consistency"
 	verbose -log "$name: $resultlist"
     }
 }
@@ -77,20 +81,22 @@ proc test_file { file } {
     }
 
     foreach procname $procnames {
-	switch $procname {
-	    "is_address_zero_readable" { set setup_gdb 1 }
-	    "target_is_gdbserver" { set setup_gdb 1 }
-	    default {set setup_gdb 0 }
-	}
-
-	if { $setup_gdb } {
-	    clean_restart $obj
-	}
-
-	test_proc $procname
-
-	if { $setup_gdb } {
-	    gdb_exit
+	with_test_prefix $procname {
+	    switch $procname {
+		"is_address_zero_readable" { set setup_gdb 1 }
+		"target_is_gdbserver" { set setup_gdb 1 }
+		default {set setup_gdb 0 }
+	    }
+
+	    if { $setup_gdb } {
+		clean_restart $obj
+	    }
+
+	    test_proc $procname
+
+	    if { $setup_gdb } {
+		gdb_exit
+	    }
 	}
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbhistsize-history.exp ./gdb/testsuite/gdb.base/gdbhistsize-history.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbhistsize-history.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdbhistsize-history.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbindex-stabs.c ./gdb/testsuite/gdb.base/gdbindex-stabs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbindex-stabs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdbindex-stabs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbindex-stabs-dwarf.c ./gdb/testsuite/gdb.base/gdbindex-stabs-dwarf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbindex-stabs-dwarf.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdbindex-stabs-dwarf.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbindex-stabs.exp ./gdb/testsuite/gdb.base/gdbindex-stabs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbindex-stabs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdbindex-stabs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbinit-history.exp ./gdb/testsuite/gdb.base/gdbinit-history.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbinit-history.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdbinit-history.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -128,6 +128,154 @@ proc test_no_truncation_of_unlimited_his
     }
 }
 
+# Check that the current command history matches HIST, which is a list
+# of commands, oldest fist.
+proc check_history { hist } {
+
+    # The show commands we issue here always appears last in the
+    # commands list.
+    lappend hist "show commands"
+
+    # Number all of the entries in the HIST list and convert the list
+    # into a pattern to match against GDB.
+    set hist_lines [list]
+    set idx 1
+    foreach h $hist {
+	lappend hist_lines "    $idx  $h"
+	incr idx
+    }
+    set pattern [eval multi_line $hist_lines]
+
+    # Check the history.
+    gdb_test "show commands" "$pattern.*"
+}
+
+# Run 'show history filename' and check the output contains the
+# filename matching PATTERN, unless, PATTERN is the empty string, in
+# which case match a different output that GDB will give if the
+# history filename is the empty string.
+#
+# TESTNAME is the name for the test, which defaults to the command run
+# in the test.
+proc check_history_filename { pattern {testname ""} } {
+
+    set cmd "show history filename"
+    if { $testname == "" } {
+	set testname $cmd
+    }
+
+    if { $pattern == "" } {
+	gdb_test $cmd \
+	    "There is no filename currently set for recording the command history in." \
+	    $testname
+    } else {
+	gdb_test $cmd \
+	    "The filename in which to record the command history is \"$pattern\"\." \
+	    $testname
+    }
+}
+
+# Tests for how GDB handles setting the history filename to the empty
+# string.
+proc test_empty_history_filename { } {
+    global env
+    global gdb_prompt
+
+    set common_history [list "set height 0" "set width 0"]
+
+    set test_dir [standard_output_file history_test]
+    remote_exec host "mkdir -p $test_dir"
+    foreach entry { { ".gdb_history" "xxxxx" } \
+			{ "_gdb_history" "xxxxx" } \
+			{ "alt_history" "yyyyy" } } {
+	set fn [lindex $entry 0]
+	set content [lindex $entry 1]
+	set fd [open [standard_output_file "$test_dir/$fn"] w]
+	puts $fd "$content"
+	close $fd
+    }
+
+    with_cwd "$test_dir" {
+	with_test_prefix "load default history file" {
+	    # Start GDB and see that the history file was loaded
+	    # correctly.
+	    gdb_exit
+	    gdb_start
+	    check_history [concat "xxxxx" $common_history]
+	    check_history_filename ".*/.gdb_history"
+	}
+
+	with_test_prefix "load GDBHISTFILE history file" {
+	    # Now restart GDB with GDBHISTFILE set to see that the
+	    # "other" history file is loaded.
+	    save_vars { env(GDBHISTFILE) } {
+		setenv GDBHISTFILE \
+		    "$test_dir/alt_history"
+		gdb_exit
+		gdb_start
+		check_history [concat "yyyyy" $common_history]
+		check_history_filename ".*/alt_history"
+	    }
+	}
+
+	with_test_prefix "GDBHISTFILE is empty" {
+	    # Now restart GDB with GDBHISTFILE set to indicate don't
+	    # load any history file, check none was loaded.
+	    save_vars { env(GDBHISTFILE) } {
+	    setenv GDBHISTFILE ""
+		gdb_exit
+		gdb_start
+		check_history $common_history
+		check_history_filename ""
+	    }
+
+	    # Check that 'show history save' does the right thing when
+	    # the history filename is the empty string.
+	    gdb_test_no_output "set history save off" \
+		"ensure history save is off initially"
+	    gdb_test "show history save" \
+		"Saving of the history record on exit is off." \
+		"Check history save is off"
+	    gdb_test_no_output "set history save on"
+	    gdb_test "show history save" \
+		"Saving of the history is disabled due to the value of 'history filename'." \
+		"Check history save is off due to filename"
+	    gdb_test_no_output \
+		"set history filename $test_dir/alt_history" \
+		"set history filename at the command line"
+	    check_history_filename ".*/alt_history" \
+		"check filename after setting at the command line"
+	    gdb_test "show history save" \
+		"Saving of the history record on exit is on." \
+		"Check history save is on"
+	    gdb_test_no_output "set history filename"
+	    gdb_test "show history save" \
+		"Saving of the history is disabled due to the value of 'history filename'." \
+		"Check history save is off due to filename again"
+	    gdb_test_no_output "set history save off"
+	}
+
+	with_test_prefix "Use -ex to clear history file" {
+	    # Now restart GDB with the command line '-ex' to indicate
+	    # no history file should be loaded.
+	    gdb_exit
+	    if {[gdb_spawn_with_cmdline_opts \
+		     "-ex \"set history filename\""] != 0} {
+		fail "spawn"
+		return
+	    }
+	    set test "initial prompt"
+	    gdb_test_multiple "" $test {
+		-re ".*$gdb_prompt $" {
+		    pass "$test"
+		}
+	    }
+	    check_history [list]
+	    check_history_filename ""
+	}
+    }
+}
+
 test_gdbinit_history_setting "gdbinit-history/unlimited" "unlimited"
 test_gdbinit_history_setting "gdbinit-history/zero" "0"
 
@@ -138,3 +286,6 @@ test_no_truncation_of_unlimited_history_
 # .gdbinit file.
 test_gdbinit_history_setting "gdbinit-history/unlimited" "1000" "1000"
 test_gdbinit_history_setting "gdbinit-history/unlimited" "unlimited" "foo"
+
+# Check handling of empty history filename.
+test_empty_history_filename
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb-sigterm-2.exp ./gdb/testsuite/gdb.base/gdb-sigterm-2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb-sigterm-2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb-sigterm-2.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb-sigterm.c ./gdb/testsuite/gdb.base/gdb-sigterm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb-sigterm.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb-sigterm.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb-sigterm.exp ./gdb/testsuite/gdb.base/gdb-sigterm.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdb-sigterm.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdb-sigterm.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -53,7 +53,7 @@ proc do_test { pass } {
     set test "run a bit #$pass"
     set abort 1
     gdb_test_multiple "step" $test {
-	-re "infrun: stepping inside range" {
+	-re {\[infrun\] process_event_stop_test: stepping inside range} {
 	    # Suppress pass $test
 	    verbose -log "$pf_prefix $test: ran"
 	    set abort 0
@@ -78,7 +78,7 @@ proc do_test { pass } {
 	    verbose -log "$pf_prefix $test: got eof"
 	    set abort 0
 	}
-	-re "infrun: stepping inside range" {
+	-re "infrun: process_event_stop_test: stepping inside range" {
 	    incr stepping
 	    exp_continue
 	}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbvars.exp ./gdb/testsuite/gdb.base/gdbvars.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gdbvars.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gdbvars.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/global-var-nested-by-dso.c ./gdb/testsuite/gdb.base/global-var-nested-by-dso.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/global-var-nested-by-dso.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/global-var-nested-by-dso.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/global-var-nested-by-dso.exp ./gdb/testsuite/gdb.base/global-var-nested-by-dso.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/global-var-nested-by-dso.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/global-var-nested-by-dso.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/global-var-nested-by-dso-solib1.c ./gdb/testsuite/gdb.base/global-var-nested-by-dso-solib1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/global-var-nested-by-dso-solib1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/global-var-nested-by-dso-solib1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/global-var-nested-by-dso-solib2.c ./gdb/testsuite/gdb.base/global-var-nested-by-dso-solib2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/global-var-nested-by-dso-solib2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/global-var-nested-by-dso-solib2.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-debugdata.c ./gdb/testsuite/gdb.base/gnu-debugdata.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-debugdata.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gnu-debugdata.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-debugdata.exp ./gdb/testsuite/gdb.base/gnu-debugdata.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-debugdata.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gnu-debugdata.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-ifunc.c ./gdb/testsuite/gdb.base/gnu-ifunc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-ifunc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gnu-ifunc.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-ifunc.exp ./gdb/testsuite/gdb.base/gnu-ifunc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-ifunc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gnu-ifunc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-ifunc-final.c ./gdb/testsuite/gdb.base/gnu-ifunc-final.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-ifunc-final.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gnu-ifunc-final.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-ifunc-lib.c ./gdb/testsuite/gdb.base/gnu-ifunc-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu-ifunc-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gnu-ifunc-lib.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu_vector.c ./gdb/testsuite/gdb.base/gnu_vector.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu_vector.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gnu_vector.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu_vector.exp ./gdb/testsuite/gdb.base/gnu_vector.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gnu_vector.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gnu_vector.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gold-gdb-index-2.c ./gdb/testsuite/gdb.base/gold-gdb-index-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gold-gdb-index-2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gold-gdb-index-2.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,23 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include "gold-gdb-index.h"
+
+namespace N1
+{
+  void bar () { C1::baz (); }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gold-gdb-index.c ./gdb/testsuite/gdb.base/gold-gdb-index.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gold-gdb-index.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gold-gdb-index.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,29 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include "gold-gdb-index.h"
+
+namespace N1
+{
+  void foo () { C1::baz (); }
+}
+
+int
+main ()
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gold-gdb-index.exp ./gdb/testsuite/gdb.base/gold-gdb-index.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gold-gdb-index.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gold-gdb-index.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,52 @@
+# Copyright 2020-2021 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 tests the gdb workaround for PR binutils/15646.
+
+standard_testfile .c gold-gdb-index-2.c
+
+if { [have_fuse_ld_gold] == 0} {
+    return -1
+}
+
+if {[prepare_for_testing "failed to prepare" $testfile "$srcfile $srcfile2" \
+	 {debug c++ additional_flags=-fuse-ld=gold \
+	      additional_flags=-Wl,--gdb-index \
+	      additional_flags=-ggnu-pubnames}]} {
+    return -1
+}
+
+if { [readnow] } {
+    return -1
+}
+
+gdb_test_no_output "set auto-solib-add off"
+
+if ![runto_main] then {
+    fail "can't run to main"
+    return 0
+}
+
+gdb_test_no_output "set breakpoint pending off"
+gdb_test "break N1::misspelled" "Function \"N1::misspelled\" not defined\."
+
+gdb_test_multiple "maint info symtabs" "" {
+    -re -wrap "\{ symtab \[^\r\n\]*gold-gdb-index-2.c.*" {
+	fail $gdb_test_name
+    }
+    -re -wrap "" {
+	pass $gdb_test_name
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gold-gdb-index.h ./gdb/testsuite/gdb.base/gold-gdb-index.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/gold-gdb-index.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/gold-gdb-index.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+namespace N1
+{
+  class C1
+  {
+   public:
+    static void baz () {}
+  };
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hashline1.exp ./gdb/testsuite/gdb.base/hashline1.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hashline1.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hashline1.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hashline2.exp ./gdb/testsuite/gdb.base/hashline2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hashline2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hashline2.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hashline3.exp ./gdb/testsuite/gdb.base/hashline3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hashline3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hashline3.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak2.exp ./gdb/testsuite/gdb.base/hbreak2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hbreak2.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1988-2020 Free Software Foundation, Inc.
+#   Copyright 1988-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak.c ./gdb/testsuite/gdb.base/hbreak.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hbreak.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak.exp ./gdb/testsuite/gdb.base/hbreak.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hbreak.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.c ./gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp ./gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hbreak-in-shr-unsupported.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak-in-shr-unsupported-shr.c ./gdb/testsuite/gdb.base/hbreak-in-shr-unsupported-shr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak-in-shr-unsupported-shr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hbreak-in-shr-unsupported-shr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak-unmapped.c ./gdb/testsuite/gdb.base/hbreak-unmapped.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak-unmapped.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hbreak-unmapped.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak-unmapped.exp ./gdb/testsuite/gdb.base/hbreak-unmapped.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hbreak-unmapped.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hbreak-unmapped.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/help.exp ./gdb/testsuite/gdb.base/help.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/help.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/help.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1988-2020 Free Software Foundation, Inc.
+#   Copyright 1988-2021 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
@@ -21,11 +21,11 @@
 
 gdb_start
 
-# disable pagination
+# Disable pagination.
 gdb_test_no_output "set height 0" "disable pagination"
 
 # Test all the help classes.
-test_class_help "aliases" {"Aliases of other commands\.\[\r\n\]+"}
+test_class_help "aliases" {"User-defined aliases of other commands\.\[\r\n\]+"}
 test_class_help "breakpoints" {
     "Making program stop at certain points\.\[\r\n\]+"
 }
@@ -61,30 +61,30 @@ with_read1_timeout_factor 10 {
 
     # Test help of an abbreviated command.  "break" is picked at random.
     set help_breakpoint_text "Set breakpoint at specified location\..*"
-    # test help breakpoint "b" abbreviation
+    # Test help breakpoint "b" abbreviation.
     gdb_test "help b" $help_breakpoint_text "help breakpoint \"b\" abbreviation"
-    # test help breakpoint "br" abbreviation
+    # Test help breakpoint "br" abbreviation.
     gdb_test "help br" $help_breakpoint_text "help breakpoint \"br\" abbreviation"
-    # test help breakpoint "bre" abbreviation
+    # Test help breakpoint "bre" abbreviation;
     gdb_test "help bre" $help_breakpoint_text "help breakpoint \"bre\" abbreviation"
-    # test help breakpoint "brea" abbreviation
+    # Test help breakpoint "brea" abbreviation.
 }
 gdb_test "help brea" $help_breakpoint_text "help breakpoint \"brea\" abbreviation"
-# test help breakpoint "break" abbreviation
+# Test help breakpoint "break" abbreviation.
 gdb_test "help break" $help_breakpoint_text "help breakpoint \"break\" abbreviation"
 
 # Test help of an aliased command.  "bt" is picked at random.
 set help_backtrace_text "Print backtrace of all stack frames, or innermost COUNT frames\..*"
-# test help backtrace "bt" abbreviation
+# Test help backtrace "bt" abbreviation.
 gdb_test "help bt" $help_backtrace_text "help backtrace \"bt\" abbreviation"
-# test help backtrace
+# Test help backtrace.
 gdb_test "help backtrace" $help_backtrace_text
 
-# test help commands
+# Test help commands.
 gdb_test "help commands" "Set commands to be executed when the given breakpoints are hit\.\[\r\n\]+Give a space-separated breakpoint list as argument after \"commands\"\.\[\r\n\]+A list element can be a breakpoint number \\(e.g. `5'\\) or a range of numbers\[\r\n\]+\\(e.g. `5-7'\\)\.\[\r\n\]+With no argument, the targeted breakpoint is the last one set\.\[\r\n\]+The commands themselves follow starting on the next line\.\[\r\n\]+Type a line containing \"end\" to indicate the end of them\.\[\r\n\]+Give \"silent\" as the first line to make the breakpoint silent;\[\r\n\]+then no output is printed when it is hit, except what the commands print\."
 
 # Test a prefix command.  "delete" is picked at random.
-# test help delete "d" abbreviation
+# Test help delete "d" abbreviation.
 set expected_help_delete {
     "Delete all or some breakpoints\.\[\r\n\]+"
     "Usage: delete \\\[BREAKPOINTNUM\\\]...\[\r\n\]+"
@@ -93,36 +93,43 @@ set expected_help_delete {
     "Also a prefix command for deletion of other GDB objects\.\[\r\n\]+"
 }
 test_prefix_command_help {"d" "delete"} $expected_help_delete "help delete \"d\" abbreviation"
-# test help delete
+# Test help delete.
 test_prefix_command_help "delete" $expected_help_delete
 
 # Make sure help for help itself is present.
-# test help help "h" abbreviation 
+# Test help help "h" abbreviation.
 gdb_test "help h" "Print list of commands\." "help help \"h\" abbreviation"
-# test help help
+# Test help help.
 gdb_test "help help" "Print list of commands\."
 
 # The startup banner refers to "show copying" and "show warranty",
 # might as well test for them.
-# test help info copying
+# Test help info copying.
 gdb_test "help show copying" "Conditions for redistributing copies of GDB\."
-# test help info warranty
+# Test help info warranty.
 gdb_test "help show warranty" "Various kinds of warranty you do not have\."
 
 # Test a few other random "help show" commands.
-# test help show commands
+# Test help show commands.
 gdb_test "help show commands" "Show the history of commands you typed\.\[\r\n\]+You can supply a command number to start with, or a `\[+\]' to start after\[\r\n\]+the previous command number shown\."
-# test help show confirm
+# Test help show confirm.
 gdb_test "help show confirm" "Show whether to confirm potentially dangerous operations\."
 
-# test help info bogus-gdb-command
+# Test help info bogus-gdb-command.
 gdb_test "help info bogus-gdb-command" "Undefined info command: \"bogus-gdb-command\"\.  Try \"help info\"\."
-# test help gotcha
+# Test help gotcha.
 gdb_test "help gotcha" "Undefined command: \"gotcha\"\.  Try \"help\"\."
 
-# test apropos regex
+# Test apropos regex.
 gdb_test "apropos \\\(print\[\^\[ bsiedf\\\".-\]\\\)" "handle -- Specify how to handle signals\."
-# test apropos >1 word string
+# Test apropos >1 word string.
 gdb_test "apropos handle signal" "handle -- Specify how to handle signals\."
-# test apropos apropos
+# Test apropos apropos.
 gdb_test "apropos apropos" "apropos -- Search for commands matching a REGEXP.*"
+
+# Test apropos for commands having aliases.
+gdb_test "apropos Print backtrace of all stack frames, or innermost COUNT frames\." \
+    "backtrace, where, bt -- Print backtrace of all stack frames, or innermost COUNT frames\."
+
+# Test help for commands having aliases.
+gdb_test "help bt" "backtrace, where, bt\[\r\n\]+Print backtrace of all stack frames, or innermost COUNT frames\..*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/history-duplicates.exp ./gdb/testsuite/gdb.base/history-duplicates.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/history-duplicates.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/history-duplicates.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hook-stop.c ./gdb/testsuite/gdb.base/hook-stop.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hook-stop.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hook-stop.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hook-stop.exp ./gdb/testsuite/gdb.base/hook-stop.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hook-stop.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hook-stop.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/huge.exp ./gdb/testsuite/gdb.base/huge.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/huge.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/huge.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2001-2020 Free Software Foundation, Inc.
+# Copyright 2001-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hw-sw-break-same-address.exp ./gdb/testsuite/gdb.base/hw-sw-break-same-address.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/hw-sw-break-same-address.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/hw-sw-break-same-address.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,73 @@
+# Copyright 2020-2021 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 that inserting a hardware and a software breakpoint at the same
+# address behaves as expected.  GDB used to consider hw and sw
+# breakpoint locations as duplicate locations, which would lead to bad
+# behavior.  See PR gdb/25741.
+
+if {[skip_hw_breakpoint_tests]} {
+    return 0
+}
+
+set test hbreak
+set srcfile ${test}.c
+if { [prepare_for_testing "failed to prepare" ${test} ${srcfile}] } {
+    return -1
+}
+
+if ![runto_main] {
+    fail "can't run to main"
+    return -1
+}
+
+delete_breakpoints
+
+gdb_test_no_output "set breakpoint always-inserted on"
+gdb_test_no_output "set breakpoint condition-evaluation host"
+gdb_test_no_output "set confirm off"
+
+# Test inserting a hw breakpoint first, then a sw breakpoint at the
+# same address.
+with_test_prefix "hw-sw" {
+    gdb_test "hbreak main" \
+	"Hardware assisted breakpoint .* at .*" \
+	"hbreak"
+
+    gdb_test "break main" \
+	"Note: breakpoint .* also set at .*\r\nBreakpoint .* at .*" \
+	"break"
+
+    # A bad GDB debugging against GDBserver would output a warning
+    # here:
+    #  delete breakpoints
+    #  warning: Error removing breakpoint 3
+    #  (gdb) FAIL: gdb.base/hw-sw-break-same-address.exp: hw-sw: delete breakpoints
+    gdb_test_no_output "delete breakpoints"
+}
+
+# Now the opposite: test inserting a sw breakpoint first, then a hw
+# breakpoint at the same address.
+with_test_prefix "sw-hw" {
+    gdb_test "break main" \
+	"Breakpoint .* at .*" \
+	"break"
+
+    gdb_test "hbreak main" \
+	"Note: breakpoint .* also set at .*\r\nHardware assisted breakpoint .* at .*" \
+	"hbreak"
+
+    gdb_test_no_output "delete breakpoints"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ifelse.exp ./gdb/testsuite/gdb.base/ifelse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ifelse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ifelse.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/included.c ./gdb/testsuite/gdb.base/included.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/included.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/included.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/included.exp ./gdb/testsuite/gdb.base/included.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/included.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/included.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/included.h ./gdb/testsuite/gdb.base/included.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/included.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/included.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/index-cache.c ./gdb/testsuite/gdb.base/index-cache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/index-cache.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/index-cache.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/index-cache.exp ./gdb/testsuite/gdb.base/index-cache.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/index-cache.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/index-cache.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2018-2020 Free Software Foundation, Inc.
+#   Copyright 2018-2021 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
@@ -119,16 +119,18 @@ proc_with_prefix test_basic_stuff { } {
 
 # Test loading a binary with the cache disabled.  No file should be created.
 
-proc_with_prefix test_cache_disabled { cache_dir } {
-    lassign [ls_host $cache_dir] ret files_before
+proc_with_prefix test_cache_disabled { cache_dir test_prefix } {
+    with_test_prefix $test_prefix {
+	lassign [ls_host $cache_dir] ret files_before
 
-    run_test_with_flags $cache_dir off {
-	lassign [ls_host $cache_dir] ret files_after
+	run_test_with_flags $cache_dir off {
+	    lassign [ls_host $cache_dir] ret files_after
 
-	set nfiles_created [expr [llength $files_after] - [llength $files_before]]
-	gdb_assert "$nfiles_created == 0" "no files were created"
+	    set nfiles_created [expr [llength $files_after] - [llength $files_before]]
+	    gdb_assert "$nfiles_created == 0" "no files were created"
 
-	check_cache_stats 0 0
+	    check_cache_stats 0 0
+	}
     }
 }
 
@@ -217,10 +219,10 @@ if { $ret != 0 } {
 # The ouput of mktemp contains an end of line, remove it.
 set cache_dir [string trimright $cache_dir \r\n]
 
-test_cache_disabled $cache_dir
+test_cache_disabled $cache_dir "before populate"
 test_cache_enabled_miss $cache_dir
 test_cache_enabled_hit $cache_dir
 
 # Test again with the cache disabled, now that it is populated.
-test_cache_disabled $cache_dir
+test_cache_disabled $cache_dir "after populate"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-exec2.c ./gdb/testsuite/gdb.base/infcall-exec2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-exec2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infcall-exec2.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-exec.c ./gdb/testsuite/gdb.base/infcall-exec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-exec.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infcall-exec.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-exec.exp ./gdb/testsuite/gdb.base/infcall-exec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-exec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infcall-exec.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-input.c ./gdb/testsuite/gdb.base/infcall-input.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-input.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infcall-input.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-input.exp ./gdb/testsuite/gdb.base/infcall-input.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-input.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infcall-input.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-nested-structs.c ./gdb/testsuite/gdb.base/infcall-nested-structs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-nested-structs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infcall-nested-structs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-nested-structs-c++.exp ./gdb/testsuite/gdb.base/infcall-nested-structs-c++.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-nested-structs-c++.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infcall-nested-structs-c++.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,24 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2018-2021 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/>.
+
+# Only test C++ if we are able.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang c++
+
+source $srcdir/$subdir/infcall-nested-structs.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-nested-structs-c.exp ./gdb/testsuite/gdb.base/infcall-nested-structs-c.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-nested-structs-c.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infcall-nested-structs-c.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,20 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2018-2021 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/>.
+
+set lang {c}
+
+source $srcdir/$subdir/infcall-nested-structs.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-nested-structs.exp ./gdb/testsuite/gdb.base/infcall-nested-structs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-nested-structs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infcall-nested-structs.exp	1970-01-01 00:00:00.000000000 +0000
@@ -1,203 +0,0 @@
-# This testcase is part of GDB, the GNU debugger.
-
-# Copyright 2018-2020 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/>.
-
-
-# Some targets can't call functions, so don't even bother with this
-# test.
-
-if [target_info exists gdb,cannot_call_functions] {
-    unsupported "this target can not call functions"
-    continue
-}
-
-# Only test C++ if we are able.  Always use C.
-if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
-    set lang {c}
-} else {
-    set lang {c c++}
-}
-
-foreach l $lang {
-    set dir "$l"
-    remote_exec host "rm -rf [standard_output_file ${dir}]"
-    remote_exec host "mkdir -p [standard_output_file ${dir}]"
-}
-
-
-set int_types { tc ts ti tl tll }
-set float_types { tf td tld }
-set complex_types { tfc tdc tldc }
-
-set compile_flags {debug}
-if [support_complex_tests] {
-    lappend compile_flags "additional_flags=-DTEST_COMPLEX"
-    lappend compile_flags "additional_flags=-Wno-psabi"
-}
-
-# Given N (0..25), return the corresponding alphabetic letter in upper
-# case.
-
-proc I2A { n } {
-    return [string range "ABCDEFGHIJKLMNOPQRSTUVWXYZ" $n $n]
-}
-
-# Compile a variant of nested-structs.c using TYPES to specify the
-# types of the struct fields within the source.  Run up to main.
-# Also updates the global "testfile" to reflect the most recent build.
-
-proc start_nested_structs_test { lang types } {
-    global testfile
-    global srcfile
-    global binfile
-    global subdir
-    global srcdir
-    global compile_flags
-
-    standard_testfile .c
-    set dir "$lang"
-
-    # Create the additional flags
-    set flags $compile_flags
-    lappend flags $lang
-    lappend flags "additional_flags=-O2"
-
-    for {set n 0} {$n<[llength ${types}]} {incr n} {
-	set m [I2A ${n}]
-	set t [lindex ${types} $n]
-	lappend flags "additional_flags=-Dt${m}=${t}"
-	append testfile "-" "$t"
-    }
-
-    set binfile [standard_output_file ${dir}/${testfile}]
-    if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "${flags}"] != "" } {
-	unresolved "failed to compile"
-	return 0
-    }
-
-    # Start with a fresh gdb.
-    clean_restart ${binfile}
-
-    # Make certain that the output is consistent
-    gdb_test_no_output "set print sevenbit-strings"
-    gdb_test_no_output "set print address off"
-    gdb_test_no_output "set print pretty off"
-    gdb_test_no_output "set width 0"
-    gdb_test_no_output "set print elements 300"
-
-    # Advance to main
-    if { ![runto_main] } then {
-	fail "can't run to main"
-	return 0
-    }
-
-    # Now continue forward to a suitable location to run the tests.
-    # Some targets only enable the FPU on first use, so ensure that we
-    # have used the FPU before we make calls from GDB to code that
-    # could use the FPU.
-    gdb_breakpoint [gdb_get_line_number "Break Here"] temporary
-    gdb_continue_to_breakpoint "breakpt" ".* Break Here\\. .*"
-
-    return 1
-}
-
-# Assuming GDB is stopped at main within a test binary, run some tests
-# passing structures, and reading return value structures.
-
-proc run_tests { lang types } {
-    global gdb_prompt
-
-    foreach {name} {struct_01_01 struct_01_02 struct_01_03 struct_01_04
-                    struct_02_01 struct_02_02 struct_02_03 struct_02_04
-                    struct_04_01 struct_04_02 struct_04_03 struct_04_04
-                    struct_05_01 struct_05_02 struct_05_03 struct_05_04
-                    struct_static_02_01 struct_static_02_02 struct_static_02_03 struct_static_02_04
-                    struct_static_04_01 struct_static_04_02 struct_static_04_03 struct_static_04_04
-                    struct_static_06_01 struct_static_06_02 struct_static_06_03 struct_static_06_04} {
-
-	# Only run static member tests on C++
-	if { $lang == "c" && [regexp "static" $name match] } {
-	    continue
-	}
-
-	gdb_test "p/d check_arg_${name} (ref_val_${name})" "= 1"
-
-	set refval [ get_valueof "" "ref_val_${name}" "" ]
-	verbose -log "Refval: ${refval}"
-
-	set test "check return value ${name}"
-	if { ${refval} != "" } {
-
-	    set answer [ get_valueof "" "rtn_str_${name} ()" "XXXX"]
-	    verbose -log "Answer: ${answer}"
-
-	    gdb_assert [string eq ${answer} ${refval}] ${test}
-	} else {
-	    unresolved $test
-	}
-    }
-}
-
-# Set up a test prefix, compile the test binary, run to main, and then
-# run some tests.
-
-proc start_gdb_and_run_tests { lang types } {
-    set prefix "types"
-
-    foreach t $types {
-	append prefix "-" "${t}"
-    }
-
-    foreach_with_prefix l $lang {
-	with_test_prefix $prefix {
-	    if { [start_nested_structs_test $l $types] } {
-		run_tests $l $prefix
-	    }
-	}
-    }
-}
-
-foreach ta $int_types {
-    start_gdb_and_run_tests $lang $ta
-}
-
-if [support_complex_tests] {
-    foreach ta $complex_types {
-	start_gdb_and_run_tests $lang $ta
-    }
-}
-
-if ![gdb_skip_float_test] {
-    foreach ta $float_types {
-	start_gdb_and_run_tests $lang $ta
-    }
-
-    foreach ta $int_types {
-	foreach tb $float_types {
-	    start_gdb_and_run_tests $lang [list $ta $tb]
-	}
-    }
-
-    foreach ta $float_types {
-	foreach tb $int_types {
-	    start_gdb_and_run_tests $lang [list $ta $tb]
-	}
-
-	foreach tb $float_types {
-	    start_gdb_and_run_tests $lang [list $ta $tb]
-	}
-    }
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-nested-structs.exp.tcl ./gdb/testsuite/gdb.base/infcall-nested-structs.exp.tcl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infcall-nested-structs.exp.tcl	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infcall-nested-structs.exp.tcl	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,184 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2018-2021 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/>.
+
+# Some targets can't call functions, so don't even bother with this
+# test.
+
+if [target_info exists gdb,cannot_call_functions] {
+    unsupported "this target can not call functions"
+    continue
+}
+
+set int_types { tc ts ti tl tll }
+set float_types { tf td tld }
+set complex_types { tfc tdc tldc }
+
+set compile_flags {debug}
+if [support_complex_tests] {
+    lappend compile_flags "additional_flags=-DTEST_COMPLEX"
+    lappend compile_flags "additional_flags=-Wno-psabi"
+}
+
+# Given N (0..25), return the corresponding alphabetic letter in upper
+# case.
+
+proc I2A { n } {
+    return [string range "ABCDEFGHIJKLMNOPQRSTUVWXYZ" $n $n]
+}
+
+# Compile a variant of nested-structs.c using TYPES to specify the
+# types of the struct fields within the source.  Run up to main.
+# Also updates the global "testfile" to reflect the most recent build.
+
+proc start_nested_structs_test { lang types } {
+    global testfile
+    global srcfile
+    global binfile
+    global subdir
+    global srcdir
+    global compile_flags
+
+    standard_testfile infcall-nested-structs.c
+
+    # Create the additional flags
+    set flags $compile_flags
+    lappend flags $lang
+    lappend flags "additional_flags=-O2"
+
+    for {set n 0} {$n<[llength ${types}]} {incr n} {
+	set m [I2A ${n}]
+	set t [lindex ${types} $n]
+	lappend flags "additional_flags=-Dt${m}=${t}"
+	append testfile "-" "$t"
+    }
+
+    if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "${flags}"] != "" } {
+	unresolved "failed to compile"
+	return 0
+    }
+
+    # Start with a fresh gdb.
+    clean_restart ${binfile}
+
+    # Make certain that the output is consistent
+    gdb_test_no_output "set print sevenbit-strings"
+    gdb_test_no_output "set print address off"
+    gdb_test_no_output "set print pretty off"
+    gdb_test_no_output "set width 0"
+    gdb_test_no_output "set print elements 300"
+
+    # Advance to main
+    if { ![runto_main] } then {
+	fail "can't run to main"
+	return 0
+    }
+
+    # Now continue forward to a suitable location to run the tests.
+    # Some targets only enable the FPU on first use, so ensure that we
+    # have used the FPU before we make calls from GDB to code that
+    # could use the FPU.
+    gdb_breakpoint [gdb_get_line_number "Break Here"] temporary
+    gdb_continue_to_breakpoint "breakpt" ".* Break Here\\. .*"
+
+    return 1
+}
+
+# Assuming GDB is stopped at main within a test binary, run some tests
+# passing structures, and reading return value structures.
+
+proc run_tests { lang types } {
+    global gdb_prompt
+
+    foreach {name} {struct_01_01 struct_01_02 struct_01_03 struct_01_04
+                    struct_02_01 struct_02_02 struct_02_03 struct_02_04
+                    struct_04_01 struct_04_02 struct_04_03 struct_04_04
+                    struct_05_01 struct_05_02 struct_05_03 struct_05_04
+                    struct_static_02_01 struct_static_02_02 struct_static_02_03 struct_static_02_04
+                    struct_static_04_01 struct_static_04_02 struct_static_04_03 struct_static_04_04
+                    struct_static_06_01 struct_static_06_02 struct_static_06_03 struct_static_06_04} {
+
+	# Only run static member tests on C++
+	if { $lang == "c" && [regexp "static" $name match] } {
+	    continue
+	}
+
+	gdb_test "p/d check_arg_${name} (ref_val_${name})" "= 1"
+
+	set refval [ get_valueof "" "ref_val_${name}" "" ]
+	verbose -log "Refval: ${refval}"
+
+	set test "check return value ${name}"
+	if { ${refval} != "" } {
+
+	    set answer [ get_valueof "" "rtn_str_${name} ()" "XXXX"]
+	    verbose -log "Answer: ${answer}"
+
+	    gdb_assert [string eq ${answer} ${refval}] ${test}
+	} else {
+	    unresolved $test
+	}
+    }
+}
+
+# Set up a test prefix, compile the test binary, run to main, and then
+# run some tests.
+
+proc start_gdb_and_run_tests { lang types } {
+    set prefix "types"
+
+    foreach t $types {
+	append prefix "-" "${t}"
+    }
+
+    with_test_prefix $prefix {
+	if { [start_nested_structs_test $lang $types] } {
+	    run_tests $lang $prefix
+	}
+    }
+}
+
+foreach ta $int_types {
+    start_gdb_and_run_tests $lang $ta
+}
+
+if [support_complex_tests] {
+    foreach ta $complex_types {
+	start_gdb_and_run_tests $lang $ta
+    }
+}
+
+if ![gdb_skip_float_test] {
+    foreach ta $float_types {
+	start_gdb_and_run_tests $lang $ta
+    }
+
+    foreach ta $int_types {
+	foreach tb $float_types {
+	    start_gdb_and_run_tests $lang [list $ta $tb]
+	}
+    }
+
+    foreach ta $float_types {
+	foreach tb $int_types {
+	    start_gdb_and_run_tests $lang [list $ta $tb]
+	}
+
+	foreach tb $float_types {
+	    start_gdb_and_run_tests $lang [list $ta $tb]
+	}
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/inferior-args.c ./gdb/testsuite/gdb.base/inferior-args.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/inferior-args.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/inferior-args.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,26 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <stdio.h>
+
+int main (int argc, char **argv)
+{
+  for (int i = 0; i < argc; i++)
+    printf ("[%d] %s\n", i, argv[i]);
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/inferior-args.exp ./gdb/testsuite/gdb.base/inferior-args.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/inferior-args.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/inferior-args.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,124 @@
+# Copyright 2020-2021 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 running an inferior with arguments.
+
+# This does not work on boards that don't support inferior arguments.
+if [target_info exists noargs] then {
+    verbose "skipping gdb.base/inferior-args.exp because of noargs"
+    return
+}
+
+standard_testfile .c
+
+if {[build_executable "failed to prepare" $testfile $srcfile debug] == -1} {
+    return
+}
+
+proc do_test { method } {
+    global binfile hex
+
+    # The second arg is an empty string on purpose.
+    set inferior_args { "first arg" "" "third-arg" }
+
+    clean_restart $binfile
+
+    if { $method == "start" } {
+	# The start command does not make sense for a stub.
+	if { [use_gdb_stub] } {
+	    return;
+	}
+
+	if { [gdb_start_cmd $inferior_args] < 0 } {
+	    fail "could not issue start command"
+	    return -1
+	}
+
+	# Consume up to the GDB prompt after the stop.
+	gdb_test "" ".*main.*" "stop at main"
+
+    } elseif { $method == "starti" } {
+	# The starti command does not make sense for a stub.
+	if { [use_gdb_stub] } {
+	    return;
+	}
+
+	if { [gdb_starti_cmd $inferior_args] < 0 } {
+	    fail "could not issue start command"
+	    return -1
+	}
+
+	# Consume up to the GDB prompt after the stop.
+	gdb_test "" "" "stop at first instruction"
+
+	# Put a breakpoint and continue until main.
+	if { ![gdb_breakpoint "main" message] } {
+	    fail "could not set breakpoint on main"
+	    return -1
+	}
+
+	if { [gdb_continue "main"] != 0 } {
+	    fail "could not continue to main"
+	    return -1
+	}
+
+    } elseif { $method == "run" } {
+	if { ![gdb_breakpoint "main" message] } {
+	    fail "could not set breakpoint on main"
+	    return -1
+	}
+
+	# The run command does not make sense for a stub, but GDB_RUN_CMD
+	# does the right thing when the target is a stub (start the stub,
+	# connect to it, and "continue").
+	#
+	# This allows us to test arguments passed on the gdbserver command
+	# line.
+	if { [gdb_run_cmd $inferior_args] < 0 } {
+	    fail "could not run"
+	    return -1
+	}
+
+	# Consume up to the GDB prompt after the stop.
+	gdb_test "" ".*main.*" "stop at main"
+
+    } elseif { $method == "set args" } {
+	# Using "set args" does not make sense with a stub.
+	if { [use_gdb_stub] } {
+	    return;
+	}
+
+	gdb_test_no_output "set args $inferior_args"
+
+	if { ![runto_main] } {
+	    fail "could not run to main"
+	    return -1
+	}
+
+    } else {
+	error "invalid method $method"
+    }
+
+    # Now that we are stopped at main, inspect argc/argv.
+    gdb_test "print argc" " = 4"
+    gdb_test "print argv\[0\]" " = $hex \".*\""
+    gdb_test "print argv\[1\]" " = $hex \"first arg\""
+    gdb_test "print argv\[2\]" " = $hex \"\""
+    gdb_test "print argv\[3\]" " = $hex \"third-arg\""
+}
+
+foreach_with_prefix method { "start" "starti" "run" "set args" } {
+    do_test $method
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/inferior-died.c ./gdb/testsuite/gdb.base/inferior-died.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/inferior-died.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/inferior-died.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test for fork-related gdb bug
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/inferior-died.exp ./gdb/testsuite/gdb.base/inferior-died.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/inferior-died.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/inferior-died.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infnan.c ./gdb/testsuite/gdb.base/infnan.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infnan.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infnan.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test file is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infnan.exp ./gdb/testsuite/gdb.base/infnan.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infnan.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infnan.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-fun.c ./gdb/testsuite/gdb.base/info-fun.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-fun.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-fun.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-fun.exp ./gdb/testsuite/gdb.base/info-fun.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-fun.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-fun.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-fun-solib.c ./gdb/testsuite/gdb.base/info-fun-solib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-fun-solib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-fun-solib.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infoline.c ./gdb/testsuite/gdb.base/infoline.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infoline.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infoline.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infoline.exp ./gdb/testsuite/gdb.base/infoline.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infoline.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infoline.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infoline-reloc-main-from-zero.c ./gdb/testsuite/gdb.base/infoline-reloc-main-from-zero.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infoline-reloc-main-from-zero.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infoline-reloc-main-from-zero.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infoline-reloc-main-from-zero.exp ./gdb/testsuite/gdb.base/infoline-reloc-main-from-zero.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/infoline-reloc-main-from-zero.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/infoline-reloc-main-from-zero.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-locals-unused-static-var.c ./gdb/testsuite/gdb.base/info-locals-unused-static-var.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-locals-unused-static-var.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-locals-unused-static-var.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main (void)
+{
+  static int b = 2;
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-locals-unused-static-var.exp ./gdb/testsuite/gdb.base/info-locals-unused-static-var.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-locals-unused-static-var.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-locals-unused-static-var.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,40 @@
+# Copyright 2020-2021 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 if an unused static local var is listed with info locals.
+#
+# Note: with gcc 4.8.5, we have:
+# ...
+# (gdb) info addr b
+# Symbol "b" is static storage at address $hex
+# ...
+# but with gcc 7.5.0, we have instead:
+# ...
+# (gdb) info addr b
+# Symbol "b" is constant.
+# ...
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
+    return -1
+}
+
+if ![runto_main] then {
+    fail "can't run to main"
+    return 0
+}
+
+gdb_test "info locals" "\r\nb = .*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-macros.exp ./gdb/testsuite/gdb.base/info-macros.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-macros.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-macros.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -273,7 +273,4 @@ set test "info macros info-macros.c:42"
 
 set r1 ".*define DEF_MACROS"
 set r2 ".*define ONE"
-# info macros on the line where the #define or #include is
-# fails to find the macro defined (though it works on the next line.)
-setup_kfail "gdb/NNNN" *-*-*
-gdb_test "$test" "$r1$r2"
+gdb_test "$test" "$r1$r2.*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_minsym.c ./gdb/testsuite/gdb.base/info_minsym.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_minsym.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info_minsym.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
@@ -20,6 +20,7 @@ static int minsym_var;
 static int minsym_fun (void)
 {
    minsym_var++;
+   return 0;
 }
 
 int
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_minsym.exp ./gdb/testsuite/gdb.base/info_minsym.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_minsym.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info_minsym.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-os.c ./gdb/testsuite/gdb.base/info-os.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-os.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-os.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
@@ -48,6 +48,8 @@ thread_proc (void *args)
 {
   pthread_mutex_lock (&mutex);
   pthread_mutex_unlock (&mutex);
+
+  return NULL;
 }
 
 int
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-os.exp ./gdb/testsuite/gdb.base/info-os.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-os.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-os.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-proc.exp ./gdb/testsuite/gdb.base/info-proc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-proc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-proc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-program.exp ./gdb/testsuite/gdb.base/info-program.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-program.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-program.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_qt.c ./gdb/testsuite/gdb.base/info_qt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_qt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info_qt.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_qt.exp ./gdb/testsuite/gdb.base/info_qt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_qt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info_qt.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-shared.c ./gdb/testsuite/gdb.base/info-shared.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-shared.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-shared.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-shared.exp ./gdb/testsuite/gdb.base/info-shared.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-shared.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-shared.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-shared-solib1.c ./gdb/testsuite/gdb.base/info-shared-solib1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-shared-solib1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-shared-solib1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-shared-solib2.c ./gdb/testsuite/gdb.base/info-shared-solib2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-shared-solib2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-shared-solib2.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_sources_base.c ./gdb/testsuite/gdb.base/info_sources_base.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_sources_base.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info_sources_base.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_sources.c ./gdb/testsuite/gdb.base/info_sources.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_sources.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info_sources.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_sources.exp ./gdb/testsuite/gdb.base/info_sources.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info_sources.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info_sources.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -71,7 +71,9 @@ test_info_sources "--" 1 1
 
 # List both files with regexp matching anywhere in the filenames:
 test_info_sources "info_sources" 1 1
-test_info_sources "gdb.base" 1 1
+if { ! [is_remote host] } {
+    test_info_sources "gdb.base" 1 1
+}
 
 # List both files with regexp matching the filename basenames,
 # using various parts of the -basename option:
@@ -88,8 +90,10 @@ test_info_sources "-b base" 0 1
 
 # List the files with dirname matching regexp,
 # using various part of the -dirname option:
-test_info_sources "-d base" 1 1
-test_info_sources "-dirname base" 1 1
+if { ! [is_remote host] } {
+    test_info_sources "-d base" 1 1
+    test_info_sources "-dirname base" 1 1
+}
 
 # Test non matching regexp, with option terminator:
 test_info_sources "-b -- -d" 0 0
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-target.exp ./gdb/testsuite/gdb.base/info-target.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-target.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-target.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-types.c ./gdb/testsuite/gdb.base/info-types.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-types.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-types.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-types-c++.exp ./gdb/testsuite/gdb.base/info-types-c++.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-types-c++.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-types-c++.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,22 @@
+# Copyright 2019-2021 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/>.
+
+# Only test C++ if we are able.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang c++
+
+source $srcdir/$subdir/info-types.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-types-c.exp ./gdb/testsuite/gdb.base/info-types-c.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-types-c.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-types-c.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,18 @@
+# Copyright 2019-2021 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/>.
+
+set lang {c}
+
+source $srcdir/$subdir/info-types.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-types.exp ./gdb/testsuite/gdb.base/info-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-types.exp	1970-01-01 00:00:00.000000000 +0000
@@ -1,131 +0,0 @@
-# Copyright 2019-2020 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/>.
-
-# Check that 'info types' produces the expected output for an inferior
-# containing a number of different types.
-
-# Only test C++ if we are able.  Always use C.
-if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
-    set lang {c}
-} else {
-    set lang {c c++}
-}
-
-foreach l $lang {
-    set dir "$l"
-    remote_exec host "rm -rf [standard_output_file ${dir}]"
-    remote_exec host "mkdir -p [standard_output_file ${dir}]"
-}
-
-# Run 'info types' test, compiling the test file for language LANG,
-# which should be either 'c' or 'c++'.
-proc run_test { lang } {
-    global testfile
-    global srcfile
-    global binfile
-    global subdir
-    global srcdir
-    global compile_flags
-
-    standard_testfile .c
-
-    if {[prepare_for_testing "failed to prepare" \
-	     "${lang}/${testfile}" $srcfile "debug $lang"]} {
-	return -1
-    }
-
-    if ![runto_main] then {
-	fail "can't run to main"
-	return 0
-    }
-
-    if { $lang == "c++" } {
-	set output_re \
-	    [multi_line \
-		 "All defined types:" \
-		 "" \
-		 "File .*:" \
-		 "98:\[\t \]+CL;" \
-		 "42:\[\t \]+anon_struct_t;" \
-		 "65:\[\t \]+anon_union_t;" \
-		 "21:\[\t \]+baz_t;" \
-		 "33:\[\t \]+enum_t;" \
-		 "56:\[\t \]+union_t;" \
-		 "52:\[\t \]+typedef enum {\\.\\.\\.} anon_enum_t;" \
-		 "45:\[\t \]+typedef anon_struct_t anon_struct_t;" \
-		 "68:\[\t \]+typedef anon_union_t anon_union_t;" \
-		 "28:\[\t \]+typedef baz_t baz;" \
-		 "31:\[\t \]+typedef baz_t \\* baz_ptr;" \
-		 "27:\[\t \]+typedef baz_t baz_t;" \
-		 "\[\t \]+double" \
-		 "\[\t \]+float" \
-		 "\[\t \]+int" \
-		 "103:\[\t \]+typedef CL my_cl;" \
-		 "38:\[\t \]+typedef enum_t my_enum_t;" \
-		 "17:\[\t \]+typedef float my_float_t;" \
-		 "16:\[\t \]+typedef int my_int_t;" \
-		 "104:\[\t \]+typedef CL \\* my_ptr;" \
-		 "54:\[\t \]+typedef enum {\\.\\.\\.} nested_anon_enum_t;" \
-		 "47:\[\t \]+typedef anon_struct_t nested_anon_struct_t;" \
-		 "70:\[\t \]+typedef anon_union_t nested_anon_union_t;" \
-		 "30:\[\t \]+typedef baz_t nested_baz;" \
-		 "29:\[\t \]+typedef baz_t nested_baz_t;" \
-		 "39:\[\t \]+typedef enum_t nested_enum_t;" \
-		 "19:\[\t \]+typedef float nested_float_t;" \
-		 "18:\[\t \]+typedef int nested_int_t;" \
-		 "62:\[\t \]+typedef union_t nested_union_t;(" \
-		 "\[\t \]+unsigned int)?(" \
-		 "" \
-		 "File .*:.*)?" ]
-    } else {
-	set output_re \
-	    [multi_line \
-		 "All defined types:" \
-		 "" \
-		 "File .*:" \
-		 "52:\[\t \]+typedef enum {\\.\\.\\.} anon_enum_t;" \
-		 "45:\[\t \]+typedef struct {\\.\\.\\.} anon_struct_t;" \
-		 "68:\[\t \]+typedef union {\\.\\.\\.} anon_union_t;" \
-		 "28:\[\t \]+typedef struct baz_t baz;" \
-		 "31:\[\t \]+typedef struct baz_t \\* baz_ptr;" \
-		 "21:\[\t \]+struct baz_t;" \
-		 "\[\t \]+double" \
-		 "33:\[\t \]+enum enum_t;" \
-		 "\[\t \]+float" \
-		 "\[\t \]+int" \
-		 "38:\[\t \]+typedef enum enum_t my_enum_t;" \
-		 "17:\[\t \]+typedef float my_float_t;" \
-		 "16:\[\t \]+typedef int my_int_t;" \
-		 "54:\[\t \]+typedef enum {\\.\\.\\.} nested_anon_enum_t;" \
-		 "47:\[\t \]+typedef struct {\\.\\.\\.} nested_anon_struct_t;" \
-		 "70:\[\t \]+typedef union {\\.\\.\\.} nested_anon_union_t;" \
-		 "30:\[\t \]+typedef struct baz_t nested_baz;" \
-		 "29:\[\t \]+typedef struct baz_t nested_baz_t;" \
-		 "39:\[\t \]+typedef enum enum_t nested_enum_t;" \
-		 "19:\[\t \]+typedef float nested_float_t;" \
-		 "18:\[\t \]+typedef int nested_int_t;" \
-		 "62:\[\t \]+typedef union union_t nested_union_t;" \
-		 "56:\[\t \]+union union_t;(" \
-		 "\[\t \]+unsigned int)?(" \
-		 "" \
-		 "File .*:.*)?" ]
-    }
-
-    gdb_test "info types" $output_re
-}
-
-foreach_with_prefix l $lang {
-    run_test $l
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-types.exp.tcl ./gdb/testsuite/gdb.base/info-types.exp.tcl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-types.exp.tcl	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-types.exp.tcl	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,130 @@
+# Copyright 2019-2021 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/>.
+
+# Check that 'info types' produces the expected output for an inferior
+# containing a number of different types.
+
+# Run 'info types' test, compiling the test file for language LANG,
+# which should be either 'c' or 'c++'.
+proc run_test { lang } {
+    global testfile
+    global srcfile
+    global binfile
+    global subdir
+    global srcdir
+    global compile_flags
+
+    standard_testfile info-types.c
+
+    if {[prepare_for_testing "failed to prepare" \
+	     "${testfile}" $srcfile "debug $lang"]} {
+	return -1
+    }
+
+    if ![runto_main] then {
+	fail "can't run to main"
+	return 0
+    }
+
+    if { $lang == "c++" } {
+	set output_re \
+	    [multi_line \
+		 "98:\[\t \]+CL;" \
+		 "42:\[\t \]+anon_struct_t;" \
+		 "65:\[\t \]+anon_union_t;" \
+		 "21:\[\t \]+baz_t;" \
+		 "33:\[\t \]+enum_t;" \
+		 "56:\[\t \]+union_t;" \
+		 "52:\[\t \]+typedef enum {\\.\\.\\.} anon_enum_t;" \
+		 "45:\[\t \]+typedef anon_struct_t anon_struct_t;" \
+		 "68:\[\t \]+typedef anon_union_t anon_union_t;" \
+		 "28:\[\t \]+typedef baz_t baz;" \
+		 "31:\[\t \]+typedef baz_t \\* baz_ptr;" \
+		 "27:\[\t \]+typedef baz_t baz_t;" \
+		 "\[\t \]+double" \
+		 "\[\t \]+float" \
+		 "\[\t \]+int" \
+		 "103:\[\t \]+typedef CL my_cl;" \
+		 "38:\[\t \]+typedef enum_t my_enum_t;" \
+		 "17:\[\t \]+typedef float my_float_t;" \
+		 "16:\[\t \]+typedef int my_int_t;" \
+		 "104:\[\t \]+typedef CL \\* my_ptr;" \
+		 "54:\[\t \]+typedef enum {\\.\\.\\.} nested_anon_enum_t;" \
+		 "47:\[\t \]+typedef anon_struct_t nested_anon_struct_t;" \
+		 "70:\[\t \]+typedef anon_union_t nested_anon_union_t;" \
+		 "30:\[\t \]+typedef baz_t nested_baz;" \
+		 "29:\[\t \]+typedef baz_t nested_baz_t;" \
+		 "39:\[\t \]+typedef enum_t nested_enum_t;" \
+		 "19:\[\t \]+typedef float nested_float_t;" \
+		 "18:\[\t \]+typedef int nested_int_t;" \
+		 "62:\[\t \]+typedef union_t nested_union_t;(" \
+		 "\[\t \]+unsigned int)?"]
+    } else {
+	set output_re \
+	    [multi_line \
+		 "52:\[\t \]+typedef enum {\\.\\.\\.} anon_enum_t;" \
+		 "45:\[\t \]+typedef struct {\\.\\.\\.} anon_struct_t;" \
+		 "68:\[\t \]+typedef union {\\.\\.\\.} anon_union_t;" \
+		 "28:\[\t \]+typedef struct baz_t baz;" \
+		 "31:\[\t \]+typedef struct baz_t \\* baz_ptr;" \
+		 "21:\[\t \]+struct baz_t;" \
+		 "\[\t \]+double" \
+		 "33:\[\t \]+enum enum_t;" \
+		 "\[\t \]+float" \
+		 "\[\t \]+int" \
+		 "38:\[\t \]+typedef enum enum_t my_enum_t;" \
+		 "17:\[\t \]+typedef float my_float_t;" \
+		 "16:\[\t \]+typedef int my_int_t;" \
+		 "54:\[\t \]+typedef enum {\\.\\.\\.} nested_anon_enum_t;" \
+		 "47:\[\t \]+typedef struct {\\.\\.\\.} nested_anon_struct_t;" \
+		 "70:\[\t \]+typedef union {\\.\\.\\.} nested_anon_union_t;" \
+		 "30:\[\t \]+typedef struct baz_t nested_baz;" \
+		 "29:\[\t \]+typedef struct baz_t nested_baz_t;" \
+		 "39:\[\t \]+typedef enum enum_t nested_enum_t;" \
+		 "19:\[\t \]+typedef float nested_float_t;" \
+		 "18:\[\t \]+typedef int nested_int_t;" \
+		 "62:\[\t \]+typedef union union_t nested_union_t;" \
+		 "56:\[\t \]+union union_t;(" \
+		 "\[\t \]+unsigned int)?"]
+    }
+
+    set state 0
+    gdb_test_multiple "info types" "" {
+	-re "\r\nAll defined types:" {
+	    if { $state == 0 } { set state 1 }
+	    exp_continue
+	}
+	-re "\r\n\r\nFile .*[string_to_regexp $srcfile]:" {
+	    if { $state == 1 } { set state 2 }
+	    exp_continue
+	}
+	-re $output_re {
+	    if { $state == 2 } { set state 3 }
+	    exp_continue
+	}
+	-re "\r\n\r\nFile \[^\r\n\]*:" {
+	    exp_continue
+	}
+	-re -wrap "" {
+	    if { $state == 3} {
+		pass $gdb_test_name
+	    } else {
+		fail $gdb_test_name
+	    }
+	}
+    }
+}
+
+run_test $lang
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-var.exp ./gdb/testsuite/gdb.base/info-var.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-var.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-var.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-var-f1.c ./gdb/testsuite/gdb.base/info-var-f1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-var-f1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-var-f1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-var-f2.c ./gdb/testsuite/gdb.base/info-var-f2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-var-f2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-var-f2.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-var.h ./gdb/testsuite/gdb.base/info-var.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/info-var.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/info-var.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interact.exp ./gdb/testsuite/gdb.base/interact.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interact.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/interact.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interp.c ./gdb/testsuite/gdb.base/interp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/interp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interp.exp ./gdb/testsuite/gdb.base/interp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/interp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-daemon-attach.c ./gdb/testsuite/gdb.base/interrupt-daemon-attach.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-daemon-attach.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/interrupt-daemon-attach.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-daemon-attach.exp ./gdb/testsuite/gdb.base/interrupt-daemon-attach.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-daemon-attach.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/interrupt-daemon-attach.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-daemon.c ./gdb/testsuite/gdb.base/interrupt-daemon.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-daemon.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/interrupt-daemon.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-daemon.exp ./gdb/testsuite/gdb.base/interrupt-daemon.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-daemon.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/interrupt-daemon.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt.exp ./gdb/testsuite/gdb.base/interrupt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/interrupt.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1994-2020 Free Software Foundation, Inc.
+# Copyright 1994-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-noterm.c ./gdb/testsuite/gdb.base/interrupt-noterm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-noterm.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/interrupt-noterm.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-noterm.exp ./gdb/testsuite/gdb.base/interrupt-noterm.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/interrupt-noterm.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/interrupt-noterm.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+#   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-attach-pie.c ./gdb/testsuite/gdb.base/jit-attach-pie.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-attach-pie.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-attach-pie.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
@@ -19,29 +19,7 @@
 #include <stdint.h>
 #include <pthread.h>
 
-struct jit_code_entry
-{
-  struct jit_code_entry *next_entry;
-  struct jit_code_entry *prev_entry;
-  const char *symfile_addr;
-  uint64_t symfile_size;
-};
-
-struct jit_descriptor
-{
-  uint32_t version;
-  /* This type should be jit_actions_t, but we use uint32_t
-     to be explicit about the bitwidth.  */
-  uint32_t action_flag;
-  struct jit_code_entry *relevant_entry;
-  struct jit_code_entry *first_entry;
-};
-
-struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 };
-
-void __jit_debug_register_code()
-{
-}
+#include "jit-protocol.h"
 
 static void *
 thread_proc (void *arg)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-attach-pie.exp ./gdb/testsuite/gdb.base/jit-attach-pie.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-attach-pie.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-attach-pie.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-dlmain.c ./gdb/testsuite/gdb.base/jit-dlmain.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-dlmain.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-dlmain.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,20 +0,0 @@
-#include <dlfcn.h>
-#include <stdio.h>
-
-int main (int argc, char *argv[])
-{
-  /* jit_libname is updated by jit-so.exp  */
-  const char *jit_libname = "jit-dlmain-so.so";
-  void *h;
-  int (*p_main) (int, char **);
-
-  h = NULL;  /* break here before-dlopen  */
-  h = dlopen (jit_libname, RTLD_LAZY);
-  if (h == NULL) return 1;
-
-  p_main = dlsym (h, "jit_dl_main");
-  if (p_main == NULL) return 2;
-
-  h = h;  /* break here after-dlopen */
-  return (*p_main) (argc, argv);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf-dlmain.c ./gdb/testsuite/gdb.base/jit-elf-dlmain.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf-dlmain.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-elf-dlmain.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,20 @@
+#include <dlfcn.h>
+#include <stdio.h>
+
+int main (int argc, char *argv[])
+{
+  /* jit_libname is updated by jit-so.exp  */
+  const char *jit_libname = "jit-dlmain-so.so";
+  void *h;
+  int (*p_main) (int, char **);
+
+  h = NULL;  /* break here before-dlopen  */
+  h = dlopen (jit_libname, RTLD_LAZY);
+  if (h == NULL) return 1;
+
+  p_main = dlsym (h, "jit_dl_main");
+  if (p_main == NULL) return 2;
+
+  h = h;  /* break here after-dlopen */
+  return (*p_main) (argc, argv);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf.exp ./gdb/testsuite/gdb.base/jit-elf.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-elf.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,166 @@
+# Copyright 2011-2021 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/>.
+
+if {[skip_shlib_tests]} {
+    untested "skipping shared library tests"
+    return -1
+}
+
+if {[get_compiler_info]} {
+    untested "could not get compiler info"
+    return 1
+}
+
+load_lib jit-elf-helpers.exp
+
+# Increase this to see more detail.
+set test_verbose 0
+
+# The main code that loads and registers JIT objects.
+set main_basename "jit-elf-main"
+set main_srcfile ${srcdir}/${subdir}/${main_basename}.c
+set main_binfile [standard_output_file ${main_basename}]
+
+# The shared library that gets loaded as JIT objects.
+set jit_solib_basename jit-elf-solib
+set jit_solib_srcfile ${srcdir}/${subdir}/${jit_solib_basename}.c
+
+# Detach, restart GDB, and re-attach to the program.
+proc clean_reattach {} {
+    global decimal gdb_prompt
+    global main_binfile main_srcfile
+
+    # Get PID of test program.
+    set testpid -1
+    set test "get inferior process ID"
+    gdb_test_multiple "p mypid" $test {
+	-re ".* = ($decimal).*$gdb_prompt $" {
+	    set testpid $expect_out(1,string)
+	    pass $test
+	}
+    }
+
+    gdb_test_no_output "set var wait_for_gdb = 1"
+    gdb_test "detach" "Detaching from .*"
+
+    clean_restart ${main_binfile}
+
+    set test "attach"
+    gdb_test_multiple "attach $testpid" "$test" {
+	-re "Attaching to program.*.*main.*at .*$main_srcfile:.*$gdb_prompt $" {
+	    pass "$test"
+	}
+    }
+
+    gdb_test_no_output "set var wait_for_gdb = 0"
+}
+
+# Continue to LOCATION in the program.  If REATTACH, detach and
+# re-attach to the program from scratch.
+proc continue_to_test_location {location reattach} {
+    global main_srcfile
+
+    gdb_breakpoint [gdb_get_line_number $location $main_srcfile]
+    gdb_continue_to_breakpoint $location
+    if {$reattach} {
+	with_test_prefix "$location" {
+	    clean_reattach
+	}
+    }
+}
+
+proc one_jit_test {jit_solibs_target match_str reattach} {
+    set count [llength $jit_solibs_target]
+
+    with_test_prefix "one_jit_test-$count" {
+	global test_verbose
+	global main_binfile main_srcfile
+
+	clean_restart ${main_binfile}
+
+	# This is just to help debugging when things fail
+	if {$test_verbose > 0} {
+	    gdb_test "set debug jit 1"
+	}
+
+	if { ![runto_main] } {
+	    fail "can't run to main"
+	    return
+	}
+
+	# Poke desired values directly into inferior instead of using "set args"
+	# because "set args" does not work under gdbserver.
+	incr count
+	gdb_test_no_output "set var argc=$count" "forging argc"
+	gdb_test_no_output "set var argv=fake_argv" "forging argv"
+	for {set i 1} {$i < $count} {incr i} {
+	    set jit_solib_target [lindex $jit_solibs_target [expr $i-1]]
+	    gdb_test_no_output "set var argv\[$i\]=\"${jit_solib_target}\"" \
+		"forging argv\[$i\]"
+	}
+
+	gdb_breakpoint [gdb_get_line_number "break here 0" $main_srcfile]
+	gdb_continue_to_breakpoint "break here 0"
+
+
+	continue_to_test_location "break here 1" $reattach
+
+	gdb_test "info function ^jit_function" "$match_str"
+
+	# This is just to help debugging when things fail
+	if {$test_verbose > 0} {
+	    gdb_test "maintenance print objfiles"
+	    gdb_test "maintenance info break"
+	}
+
+	continue_to_test_location "break here 2" $reattach
+
+	# All jit librares must have been unregistered
+	gdb_test "info function jit_function" \
+	    "All functions matching regular expression \"jit_function\":"
+    }
+}
+
+# Compile two shared libraries to use as JIT objects.
+set jit_solibs_target [compile_and_download_n_jit_so \
+		      $jit_solib_basename $jit_solib_srcfile 2]
+if { $jit_solibs_target == -1 } {
+    return
+}
+
+# Compile the main code (which loads the JIT objects).
+if { [compile_jit_main ${main_srcfile} ${main_binfile} {}] == 0 } {
+    one_jit_test [lindex $jit_solibs_target 0] "${hex}  jit_function_0001" 0
+    one_jit_test $jit_solibs_target "${hex}  jit_function_0001\[\r\n\]+${hex}  jit_function_0002" 0
+}
+
+# Test attaching to an inferior with some JIT libraries already
+# registered.  We reuse the normal test, and detach/reattach at
+# specific interesting points.
+if {[can_spawn_for_attach]} {
+    if { [compile_jit_main ${main_srcfile} "${main_binfile}-attach" \
+	    {additional_flags=-DATTACH=1}] == 0 } {
+	with_test_prefix attach {
+	    one_jit_test $jit_solibs_target "${hex}  jit_function_0001\[\r\n\]+${hex}  jit_function_0002" 1
+	}
+    }
+}
+
+if { [compile_jit_main ${main_srcfile} "${main_binfile}-pie" \
+	  {additional_flags=-fPIE ldflags=-pie}] == 0 } {
+    with_test_prefix PIE {
+	one_jit_test [lindex $jit_solibs_target 0] "${hex}  jit_function_0001" 0
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf-main.c ./gdb/testsuite/gdb.base/jit-elf-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf-main.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-elf-main.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,144 @@
+/* This test program is part of GDB, the GNU debugger.
+
+   Copyright 2011-2021 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/>.  */
+
+/* Simulate loading of JIT code.  */
+
+#include <elf.h>
+#include <link.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "jit-protocol.h"
+#include "jit-elf-util.h"
+
+static void
+usage (void)
+{
+  fprintf (stderr, "Usage: jit-elf-main libraries...\n");
+  exit (1);
+}
+
+/* Defined by the .exp file if testing attach.  */
+#ifndef ATTACH
+#define ATTACH 0
+#endif
+
+#ifndef MAIN
+#define MAIN main
+#endif
+
+/* Must be defined by .exp file when compiling to know
+   what address to map the ELF binary to.  */
+#ifndef LOAD_ADDRESS
+#error "Must define LOAD_ADDRESS"
+#endif
+#ifndef LOAD_INCREMENT
+#error "Must define LOAD_INCREMENT"
+#endif
+
+/* Used to spin waiting for GDB.  */
+volatile int wait_for_gdb = ATTACH;
+#define WAIT_FOR_GDB do {} while (wait_for_gdb)
+
+/* The current process's PID.  GDB retrieves this.  */
+int mypid;
+
+int
+MAIN (int argc, char *argv[])
+{
+  int i;
+  alarm (300);
+  /* Used as backing storage for GDB to populate argv.  */
+  char *fake_argv[10];
+
+  mypid = getpid ();
+  /* gdb break here 0  */
+
+  if (argc < 2)
+    {
+      usage ();
+      exit (1);
+    }
+
+  for (i = 1; i < argc; ++i)
+    {
+      size_t obj_size;
+      void *load_addr = (void *) (size_t) (LOAD_ADDRESS + (i - 1) * LOAD_INCREMENT);
+      printf ("Loading %s as JIT at %p\n", argv[i], load_addr);
+      void *addr = load_elf (argv[i], &obj_size, load_addr);
+
+      char name[32];
+      sprintf (name, "jit_function_%04d", i);
+      int (*jit_function) (void) = (int (*) (void)) load_symbol (addr, name);
+
+      /* Link entry at the end of the list.  */
+      struct jit_code_entry *const entry = calloc (1, sizeof (*entry));
+      entry->symfile_addr = (const char *)addr;
+      entry->symfile_size = obj_size;
+      entry->prev_entry = __jit_debug_descriptor.relevant_entry;
+      __jit_debug_descriptor.relevant_entry = entry;
+
+      if (entry->prev_entry != NULL)
+	entry->prev_entry->next_entry = entry;
+      else
+	__jit_debug_descriptor.first_entry = entry;
+
+      /* Notify GDB.  */
+      __jit_debug_descriptor.action_flag = JIT_REGISTER;
+      __jit_debug_register_code ();
+
+      if (jit_function () != 42)
+	{
+	  fprintf (stderr, "unexpected return value\n");
+	  exit (1);
+	}
+    }
+
+  WAIT_FOR_GDB; i = 0;  /* gdb break here 1 */
+
+  /* Now unregister them all in reverse order.  */
+  while (__jit_debug_descriptor.relevant_entry != NULL)
+    {
+      struct jit_code_entry *const entry =
+	__jit_debug_descriptor.relevant_entry;
+      struct jit_code_entry *const prev_entry = entry->prev_entry;
+
+      if (prev_entry != NULL)
+	{
+	  prev_entry->next_entry = NULL;
+	  entry->prev_entry = NULL;
+	}
+      else
+	__jit_debug_descriptor.first_entry = NULL;
+
+      /* Notify GDB.  */
+      __jit_debug_descriptor.action_flag = JIT_UNREGISTER;
+      __jit_debug_register_code ();
+
+      __jit_debug_descriptor.relevant_entry = prev_entry;
+      free (entry);
+    }
+
+  WAIT_FOR_GDB; return 0;  /* gdb break here 2  */
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf-so.exp ./gdb/testsuite/gdb.base/jit-elf-so.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf-so.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-elf-so.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,172 @@
+# Copyright 2011-2021 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/>.
+
+# The same tests as in jit.exp, but loading JITer itself from a shared
+# library.
+
+if {[skip_shlib_tests]} {
+    untested "skipping shared library tests"
+    return -1
+}
+
+if {[get_compiler_info]} {
+    untested "could not get compiler info"
+    return 1
+}
+
+load_lib jit-elf-helpers.exp
+
+# Increase this to see more detail.
+set test_verbose 0
+
+# The "real" main of this test, which loads jit-elf-main
+# as a shared library.
+set main_loader_basename jit-elf-dlmain
+set main_loader_srcfile ${srcdir}/${subdir}/${main_loader_basename}.c
+set main_loader_binfile [standard_output_file ${main_loader_basename}]
+
+# The main code that loads and registers JIT objects.
+set main_solib_basename jit-elf-main
+set main_solib_srcfile ${srcdir}/${subdir}/${main_solib_basename}.c
+set main_solib_binfile [standard_output_file ${main_solib_basename}.so]
+
+# The shared library that gets loaded as JIT objects.
+set jit_solib_basename jit-elf-solib
+set jit_solib_srcfile ${srcdir}/${subdir}/${jit_solib_basename}.c
+
+# Compile the testcase shared library loader.
+#
+# OPTIONS is passed to gdb_compile when compiling the binary.
+#
+# On success, return 0.
+# On failure, return -1.
+proc compile_jit_dlmain {options} {
+    global main_loader_srcfile main_loader_binfile main_loader_basename
+    set options [concat $options debug]
+
+    if { [gdb_compile ${main_loader_srcfile} ${main_loader_binfile} \
+	    executable $options] != "" } {
+	untested "failed to compile ${main_loader_basename}.c as an executable"
+	return -1
+    }
+
+    return 0
+}
+
+# Run $main_loader_binfile and load $main_solib_binfile in
+# GDB.  Check jit-related debug output and matches `info function`
+# output for a jit loaded function using MATCH_STR.
+#
+# SOLIB_BINFILES_TARGETS is a list of shared libraries to pass
+# as arguments when running $main_loader_binfile.
+# MATCH_STR is a regular expression that output of `info function`
+# must match.
+proc one_jit_test {solib_binfiles_target match_str} {
+    set count [llength $solib_binfiles_target]
+    with_test_prefix "one_jit_test-$count" {
+	global test_verbose
+	global main_loader_binfile main_loader_srcfile
+	global main_solib_binfile main_solib_srcfile
+
+	clean_restart $main_loader_binfile
+	gdb_load_shlib $main_solib_binfile
+
+	# This is just to help debugging when things fail
+	if {$test_verbose > 0} {
+	    gdb_test "set debug jit 1"
+	}
+
+	if { ![runto_main] } {
+	    fail "can't run to main"
+	    return
+	}
+
+	gdb_breakpoint [gdb_get_line_number "break here before-dlopen" \
+			    $main_loader_srcfile]
+	gdb_continue_to_breakpoint "break here before-dlopen"
+	gdb_test_no_output "set var jit_libname = \"$main_solib_binfile\"" \
+	    "setting library name"
+
+	gdb_breakpoint [gdb_get_line_number "break here after-dlopen" \
+			$main_loader_srcfile]
+	gdb_continue_to_breakpoint "break here after-dlopen"
+
+	set line [gdb_get_line_number {break here 0} $main_solib_srcfile]
+	gdb_breakpoint "$main_solib_srcfile:$line"
+	gdb_continue_to_breakpoint "break here 0"
+
+	# Poke desired values directly into inferior instead of using "set args"
+	# because "set args" does not work under gdbserver.
+	gdb_test_no_output "set var argc=[expr $count + 1]" "forging argc"
+	gdb_test_no_output "set var argv=fake_argv" "forging argv"
+	for {set i 1} {$i <= $count} {incr i} {
+	    set binfile_target [lindex $solib_binfiles_target [expr $i-1]]
+	    gdb_test_no_output "set var argv\[$i\]=\"${binfile_target}\"" \
+		"forging argv\[$i\]"
+	}
+
+	set line [gdb_get_line_number {break here 1} $main_solib_srcfile]
+	gdb_breakpoint "$main_solib_srcfile:$line"
+	gdb_continue_to_breakpoint "break here 1"
+
+	gdb_test "info function jit_function" "$match_str"
+
+	# This is just to help debugging when things fail
+	if {$test_verbose > 0} {
+	    gdb_test "maintenance print objfiles"
+	    gdb_test "maintenance info break"
+	}
+
+	set line [gdb_get_line_number {break here 2} $main_solib_srcfile]
+	gdb_breakpoint "$main_solib_srcfile:$line"
+	gdb_continue_to_breakpoint "break here 2"
+
+	# All jit librares must have been unregistered
+	gdb_test "info function jit_function" \
+	    "All functions matching regular expression \"jit_function\":" \
+	    "info function jit_function after unregistration"
+    }
+}
+
+# Compile the main code (which loads the JIT objects) as a shared library.
+if { [compile_jit_elf_main_as_so $main_solib_srcfile $main_solib_binfile \
+	{additional_flags="-DMAIN=jit_dl_main"}] < 0 } {
+    return
+}
+
+# Compile the "real" main for this test.
+if { [compile_jit_dlmain {shlib_load}] < 0 } {
+    return
+}
+
+# Compile two shared libraries to use as JIT objects.
+set jit_solibs_target [compile_and_download_n_jit_so \
+		      $jit_solib_basename $jit_solib_srcfile 2]
+if { $jit_solibs_target == -1 } {
+    return
+}
+
+one_jit_test [lindex $jit_solibs_target 0] "${hex}  jit_function_0001"
+one_jit_test $jit_solibs_target "${hex}  jit_function_0001\[\r\n\]+${hex}  jit_function_0002"
+
+foreach solib $jit_solibs_target {
+    # We don't intend to load the .so as a JIT debuginfo reader, but we
+    # need some handy file name for a completion test.
+    set input [string range $solib 0 [expr { [string length $solib] - 2 }]]
+    gdb_test \
+	"complete jit-reader-load [standard_output_file $input]" \
+	"jit-reader-load $solib" \
+	"test jit-reader-load filename completion [file tail $solib]"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf-solib.c ./gdb/testsuite/gdb.base/jit-elf-solib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf-solib.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-elf-solib.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,25 @@
+/* This test program is part of GDB, the GNU debugger.
+
+   Copyright 2011-2021 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 simulates a JIT library.  The function name is supplied during
+   compilation as a macro.  */
+
+#ifndef FUNCTION_NAME
+#error "Must define the FUNCTION_NAME macro to set a jited function name"
+#endif
+
+int FUNCTION_NAME() { return 42; }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf-util.h ./gdb/testsuite/gdb.base/jit-elf-util.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-elf-util.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-elf-util.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,118 @@
+/* This test program is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+/* Simulates loading of JIT code by memory mapping a compiled
+   shared library binary and doing minimal post-processing.  */
+
+#include <elf.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <link.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+/* ElfW is coming from linux. On other platforms it does not exist.
+   Let us define it here. */
+#ifndef ElfW
+#if (defined(_LP64) || defined(__LP64__))
+#define WORDSIZE 64
+#else
+#define WORDSIZE 32
+#endif /* _LP64 || __LP64__  */
+#define ElfW(type) _ElfW (Elf, WORDSIZE, type)
+#define _ElfW(e, w, t) _ElfW_1 (e, w, _##t)
+#define _ElfW_1(e, w, t) e##w##t
+#endif /* !ElfW  */
+
+/* Find symbol with the name `sym_name`.  */
+static void *
+load_symbol (void *addr, const char *sym_name)
+{
+  const ElfW (Ehdr) *const ehdr = (ElfW (Ehdr) *) addr;
+  ElfW (Shdr) *const shdr = (ElfW (Shdr) *) ((char *) addr + ehdr->e_shoff);
+
+  ElfW (Addr) sym_old_addr = 0;
+  ElfW (Addr) sym_new_addr = 0;
+
+  /* Find `func_name` in symbol_table and return its address.  */
+
+  for (int i = 0; i < ehdr->e_shnum; ++i)
+    {
+      if (shdr[i].sh_type == SHT_SYMTAB)
+	{
+	  ElfW (Sym) *symtab = (ElfW (Sym) *) (addr + shdr[i].sh_offset);
+	  ElfW (Sym) *symtab_end
+	      = (ElfW (Sym) *) (addr + shdr[i].sh_offset + shdr[i].sh_size);
+	  char *const strtab
+	      = (char *) (addr + shdr[shdr[i].sh_link].sh_offset);
+
+	  for (ElfW (Sym) *p = symtab; p < symtab_end; ++p)
+	    {
+	      const char *s = strtab + p->st_name;
+	      if (strcmp (s, sym_name) == 0)
+	        return (void *) p->st_value;
+	    }
+	}
+    }
+
+  fprintf (stderr, "symbol '%s' not found\n", sym_name);
+  exit (1);
+  return 0;
+}
+
+/* Open an elf binary file and memory map it with execution flag enabled.  */
+static void *
+load_elf (const char *libname, size_t *size, void *load_addr)
+{
+  int fd;
+  struct stat st;
+
+  if ((fd = open (libname, O_RDONLY)) == -1)
+    {
+      fprintf (stderr, "open (\"%s\", O_RDONLY): %s\n", libname,
+	       strerror (errno));
+      exit (1);
+    }
+
+  if (fstat (fd, &st) != 0)
+    {
+      fprintf (stderr, "fstat (\"%d\"): %s\n", fd, strerror (errno));
+      exit (1);
+    }
+
+  void *addr = mmap (load_addr, st.st_size,
+  		     PROT_READ | PROT_WRITE | PROT_EXEC,
+		     load_addr != NULL ? MAP_PRIVATE | MAP_FIXED : MAP_PRIVATE,
+		     fd, 0);
+  close (fd);
+
+  if (addr == MAP_FAILED)
+    {
+      fprintf (stderr, "mmap: %s\n", strerror (errno));
+      exit (1);
+    }
+
+  if (size != NULL)
+    *size = st.st_size;
+
+  return addr;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-exec.c ./gdb/testsuite/gdb.base/jit-exec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-exec.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-exec.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,28 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2018-2020 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/>.  */
-
-/* Simple standalone program using the JIT API.  */
-
-#include "jit-simple-jit.c"
-#include <unistd.h>
-
-int
-main (int argc, char **argv)
-{
-  execl (PROGRAM, PROGRAM, (char *) 0);
-  return 99;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-execd.c ./gdb/testsuite/gdb.base/jit-execd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-execd.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-execd.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,22 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2018-2020 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/>.  */
-
-int
-main (int argc, char **argv)
-{
-  return 0;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-exec.exp ./gdb/testsuite/gdb.base/jit-exec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-exec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-exec.exp	1970-01-01 00:00:00.000000000 +0000
@@ -1,52 +0,0 @@
-# Copyright 2018-2020 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/>.
-
-# Regression test for a jit.c bug.  Previously it would crash if an
-# inferior that used the JIT API then exec'd a program that did not
-# use it.
-
-if { ![istarget "*-linux*"] } then {
-    return
-}
-
-standard_testfile jit-exec.c
-
-set testfile2 "jit-execd"
-set srcfile2 ${testfile2}.c
-set binfile2 [standard_output_file ${testfile2}]
-
-set compile_options [list debug additional_flags=-DPROGRAM=\"$binfile2\"]
-
-if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
-	 executable $compile_options] != ""} {
-    untested "failed to compile"
-    return -1
-}
-
-if {[gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" \
-	 executable $compile_options] != ""} {
-    untested "failed to compile"
-    return -1
-}
-
-clean_restart $binfile
-
-if {![runto_main]} {
-    fail "can't run to main"
-    return
-}
-
-delete_breakpoints
-gdb_test "continue" "Inferior .* exited normally.*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit.exp ./gdb/testsuite/gdb.base/jit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit.exp	1970-01-01 00:00:00.000000000 +0000
@@ -1,176 +0,0 @@
-# Copyright 2011-2020 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/>.
-
-if {[skip_shlib_tests]} {
-    untested "skipping shared library tests"
-    return -1
-}
-
-if {[get_compiler_info]} {
-    untested "could not get compiler info"
-    return 1
-}
-
-# Compile the testcase program and library.  BINSUFFIX is the suffix
-# to append to the program and library filenames, to make them unique
-# between invocations.  OPTIONS is passed to gdb_compile when
-# compiling the program.
-
-proc compile_jit_test {testname binsuffix options} {
-    global testfile srcfile binfile srcdir subdir
-    global solib_testfile solib_srcfile solib_binfile solib_binfile_test_msg
-    global solib_binfile_target
-
-    set testfile jit-main
-    set srcfile ${testfile}.c
-    set binfile [standard_output_file $testfile$binsuffix]
-    if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
-	      executable [concat debug $options]] != "" } {
-	untested $testname
-	return -1
-    }
-
-    set solib_testfile "jit-solib"
-    set solib_srcfile "${srcdir}/${subdir}/${solib_testfile}.c"
-    set solib_binfile [standard_output_file ${solib_testfile}$binsuffix.so]
-    set solib_binfile_test_msg "SHLIBDIR/${solib_testfile}$binsuffix.so"
-
-    # Note: compiling without debug info: the library goes through
-    # symbol renaming by munging on its symbol table, and that
-    # wouldn't work for .debug sections.  Also, output for "info
-    # function" changes when debug info is present.
-    if { [gdb_compile_shlib ${solib_srcfile} ${solib_binfile} {-fPIC}] != "" } {
-	untested $testname
-	return -1
-    }
-
-    set solib_binfile_target [gdb_remote_download target ${solib_binfile}]
-
-    return 0
-}
-
-# Detach, restart GDB, and re-attach to the program.
-
-proc clean_reattach {} {
-    global decimal gdb_prompt srcfile testfile
-
-    # Get PID of test program.
-    set testpid -1
-    set test "get inferior process ID"
-    gdb_test_multiple "p mypid" $test {
-	-re ".* = ($decimal).*$gdb_prompt $" {
-	    set testpid $expect_out(1,string)
-	    pass $test
-	}
-    }
-
-    gdb_test_no_output "set var wait_for_gdb = 1"
-    gdb_test "detach" "Detaching from .*"
-
-    clean_restart $testfile
-
-    set test "attach"
-    gdb_test_multiple "attach $testpid" "$test" {
-	-re "Attaching to program.*.*main.*at .*$srcfile:.*$gdb_prompt $" {
-	    pass "$test"
-	}
-    }
-
-    gdb_test_no_output "set var wait_for_gdb = 0"
-}
-
-# Continue to LOCATION in the program.  If REATTACH, detach and
-# re-attach to the program from scratch.
-proc continue_to_test_location {location reattach} {
-    gdb_breakpoint [gdb_get_line_number $location]
-    gdb_continue_to_breakpoint $location
-    if {$reattach} {
-	with_test_prefix "$location" {
-	    clean_reattach
-	}
-    }
-}
-
-proc one_jit_test {count match_str reattach} {
-    with_test_prefix "one_jit_test-$count" {
-	global verbose testfile solib_binfile_target solib_binfile_test_msg
-
-	clean_restart $testfile
-
-	# This is just to help debugging when things fail
-	if {$verbose > 0} {
-	    gdb_test "set debug jit 1"
-	}
-
-	if { ![runto_main] } {
-	    fail "can't run to main"
-	    return
-	}
-
-	gdb_breakpoint [gdb_get_line_number "break here 0"]
-	gdb_continue_to_breakpoint "break here 0"
-
-	# Poke desired values directly into inferior instead of using "set args"
-	# because "set args" does not work under gdbserver.
-	gdb_test_no_output "set var argc = 2"
-	gdb_test_no_output "set var libname = \"$solib_binfile_target\"" "set var libname = \"$solib_binfile_test_msg\""
-	gdb_test_no_output "set var count = $count"
-
-	continue_to_test_location "break here 1" $reattach
-
-	gdb_test "info function ^jit_function" "$match_str"
-
-	# This is just to help debugging when things fail
-	if {$verbose > 0} {
-	    gdb_test "maintenance print objfiles"
-	    gdb_test "maintenance info break"
-	}
-
-	continue_to_test_location "break here 2" $reattach
-
-	# All jit librares must have been unregistered
-	gdb_test "info function jit_function" \
-	    "All functions matching regular expression \"jit_function\":"
-    }
-}
-
-if {[compile_jit_test jit.exp "" {}] < 0} {
-    return
-}
-one_jit_test 1 "${hex}  jit_function_0000" 0
-one_jit_test 2 "${hex}  jit_function_0000\[\r\n\]+${hex}  jit_function_0001" 0
-
-# Test attaching to an inferior with some JIT libraries already
-# registered.  We reuse the normal test, and detach/reattach at
-# specific interesting points.
-if {[can_spawn_for_attach]} {
-    if {[compile_jit_test "jit.exp attach tests" \
-	     "-attach" {additional_flags=-DATTACH=1}] < 0} {
-	return
-    }
-
-    with_test_prefix attach {
-	one_jit_test 2 "${hex}  jit_function_0000\[\r\n\]+${hex}  jit_function_0001" 1
-    }
-}
-
-with_test_prefix PIE {
-    if {[compile_jit_test "jit.exp PIE tests" \
-	     "-pie" {additional_flags=-fPIE ldflags=-pie}] < 0} {
-	return
-    }
-
-    one_jit_test 1 "${hex}  jit_function_0000" 0
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jithost.c ./gdb/testsuite/gdb.base/jithost.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jithost.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jithost.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,98 +0,0 @@
-/* Copyright (C) 2009-2020 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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <sys/mman.h>
-
-#include JIT_READER_H  /* Please see jit-reader.exp for an explanation.  */
-#include "jithost.h"
-#include "jit-protocol.h"
-
-void __attribute__((noinline)) __jit_debug_register_code () { }
-
-struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 };
-struct jit_code_entry only_entry;
-
-typedef void (jit_function_stack_mangle_t) (void);
-typedef long (jit_function_add_t) (long a, long b);
-
-/* The code of the jit_function_00 function that is copied into an
-   mmapped buffer in the inferior at run time.
-
-   The second instruction mangles the stack pointer, meaning that when
-   stopped at the third instruction, GDB needs assistance from the JIT
-   unwinder in order to be able to unwind successfully.  */
-static const unsigned char jit_function_stack_mangle_code[] = {
-  0xcc,				/* int3 */
-  0x48, 0x83, 0xf4, 0xff,	/* xor $0xffffffffffffffff, %rsp */
-  0x48, 0x83, 0xf4, 0xff,	/* xor $0xffffffffffffffff, %rsp */
-  0xc3				/* ret */
-};
-
-/* And another "JIT-ed" function, with the prototype `jit_function_add_t`.  */
-static const unsigned char jit_function_add_code[] = {
-  0x48, 0x01, 0xfe,		/* add %rdi,%rsi */
-  0x48, 0x89, 0xf0,		/* mov %rsi,%rax */
-  0xc3,				/* retq */
-};
-
-int
-main (int argc, char **argv)
-{
-  struct jithost_abi *symfile = malloc (sizeof (struct jithost_abi));
-  char *code = mmap (NULL, getpagesize (), PROT_WRITE | PROT_EXEC,
-		     MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-  char *code_end = code;
-
-  /* "JIT" function_stack_mangle.  */
-  memcpy (code_end, jit_function_stack_mangle_code,
-	  sizeof (jit_function_stack_mangle_code));
-  jit_function_stack_mangle_t *function_stack_mangle
-    = (jit_function_stack_mangle_t *) code_end;
-  symfile->function_stack_mangle.begin = code_end;
-  code_end += sizeof (jit_function_stack_mangle_code);
-  symfile->function_stack_mangle.end = code_end;
-
-  /* "JIT" function_add.  */
-  memcpy (code_end, jit_function_add_code, sizeof (jit_function_add_code));
-  jit_function_add_t *function_add = (jit_function_add_t *) code_end;
-  symfile->function_add.begin = code_end;
-  code_end += sizeof (jit_function_add_code);
-  symfile->function_add.end = code_end;
-
-  /* Bounds of the whole object.  */
-  symfile->object.begin = code;
-  symfile->object.end = code_end;
-
-  only_entry.symfile_addr = symfile;
-  only_entry.symfile_size = sizeof (struct jithost_abi);
-
-  __jit_debug_descriptor.first_entry = &only_entry;
-  __jit_debug_descriptor.relevant_entry = &only_entry;
-  __jit_debug_descriptor.action_flag = JIT_REGISTER;
-  __jit_debug_descriptor.version = 1;
-  __jit_debug_register_code ();
-
-  function_stack_mangle ();
-  function_add (5, 6);
-
-  return 0;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jithost.h ./gdb/testsuite/gdb.base/jithost.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jithost.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jithost.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
-/* Copyright (C) 2009-2020 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 JITHOST_H
-#define JITHOST_H
-
-struct jithost_abi_bounds
-{
-  const char *begin, *end;
-};
-
-struct jithost_abi
-{
-  /* Beginning and past-the-end for the whole object. */
-  struct jithost_abi_bounds object;
-
-  /* Beginning and past-the-end for function_stack_mangle.  */
-  struct jithost_abi_bounds function_stack_mangle;
-
-  /* Beginning and past-the-end for function_add.  */
-  struct jithost_abi_bounds function_add;
-};
-
-#endif /* JITHOST_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-main.c ./gdb/testsuite/gdb.base/jit-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-main.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,236 +0,0 @@
-/* This test program is part of GDB, the GNU debugger.
-
-   Copyright 2011-2020 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/>.  */
-
-/* Simulate loading of JIT code.  */
-
-#include <elf.h>
-#include <link.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-/* ElfW is coming from linux. On other platforms it does not exist.
-   Let us define it here. */
-#ifndef ElfW
-# if (defined  (_LP64) || defined (__LP64__)) 
-#   define WORDSIZE 64
-# else
-#   define WORDSIZE 32
-# endif /* _LP64 || __LP64__  */
-#define ElfW(type)      _ElfW (Elf, WORDSIZE, type)
-#define _ElfW(e,w,t)    _ElfW_1 (e, w, _##t)
-#define _ElfW_1(e,w,t)  e##w##t
-#endif /* !ElfW  */
-
-typedef enum
-{
-  JIT_NOACTION = 0,
-  JIT_REGISTER_FN,
-  JIT_UNREGISTER_FN
-} jit_actions_t;
-
-struct jit_code_entry
-{
-  struct jit_code_entry *next_entry;
-  struct jit_code_entry *prev_entry;
-  const char *symfile_addr;
-  uint64_t symfile_size;
-};
-
-struct jit_descriptor
-{
-  uint32_t version;
-  /* This type should be jit_actions_t, but we use uint32_t
-     to be explicit about the bitwidth.  */
-  uint32_t action_flag;
-  struct jit_code_entry *relevant_entry;
-  struct jit_code_entry *first_entry;
-};
-
-/* GDB puts a breakpoint in this function.  */
-void __attribute__((noinline)) __jit_debug_register_code () { }
-
-/* Make sure to specify the version statically, because the
-   debugger may check the version before we can set it.  */
-struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 };
-
-static void
-usage (const char *const argv0)
-{
-  fprintf (stderr, "Usage: %s library [count]\n", argv0);
-  exit (1);
-}
-
-/* Update .p_vaddr and .sh_addr as if the code was JITted to ADDR.  */
-
-static void
-update_locations (const void *const addr, int idx)
-{
-  const ElfW (Ehdr) *const ehdr = (ElfW (Ehdr) *)addr;
-  ElfW (Shdr) *const shdr = (ElfW (Shdr) *)((char *)addr + ehdr->e_shoff);
-  ElfW (Phdr) *const phdr = (ElfW (Phdr) *)((char *)addr + ehdr->e_phoff);
-  int i;
-
-  for (i = 0; i < ehdr->e_phnum; ++i)
-    if (phdr[i].p_type == PT_LOAD)
-      phdr[i].p_vaddr += (ElfW (Addr))addr;
-
-  for (i = 0; i < ehdr->e_shnum; ++i)
-    {
-      if (shdr[i].sh_type == SHT_STRTAB)
-        {
-          /* Note: we update both .strtab and .dynstr.  The latter would
-             not be correct if this were a regular shared library (.hash
-             would be wrong), but this is a simulation -- the library is
-             never exposed to the dynamic loader, so it all ends up ok.  */
-          char *const strtab = (char *)((ElfW (Addr))addr + shdr[i].sh_offset);
-          char *const strtab_end = strtab + shdr[i].sh_size;
-          char *p;
-
-          for (p = strtab; p < strtab_end; p += strlen (p) + 1)
-            if (strcmp (p, "jit_function_XXXX") == 0)
-              sprintf (p, "jit_function_%04d", idx);
-        }
-
-      if (shdr[i].sh_flags & SHF_ALLOC)
-        shdr[i].sh_addr += (ElfW (Addr))addr;
-    }
-}
-
-/* Defined by the .exp file if testing attach.  */
-#ifndef ATTACH
-#define ATTACH 0
-#endif
-
-#ifndef MAIN
-#define MAIN main
-#endif
-
-/* Used to spin waiting for GDB.  */
-volatile int wait_for_gdb = ATTACH;
-#define WAIT_FOR_GDB while (wait_for_gdb)
-
-/* The current process's PID.  GDB retrieves this.  */
-int mypid;
-
-int
-MAIN (int argc, char *argv[])
-{
-  /* These variables are here so they can easily be set from jit.exp.  */
-  const char *libname = NULL;
-  int count = 0, i, fd;
-  struct stat st;
-
-  alarm (300);
-
-  mypid = getpid ();
-
-  count = count;  /* gdb break here 0  */
-
-  if (argc < 2)
-    {
-      usage (argv[0]);
-      exit (1);
-    }
-
-  if (libname == NULL)
-    /* Only set if not already set from GDB.  */
-    libname = argv[1];
-
-  if (argc > 2 && count == 0)
-    /* Only set if not already set from GDB.  */
-    count = atoi (argv[2]);
-
-  printf ("%s:%d: libname = %s, count = %d\n", __FILE__, __LINE__,
-	  libname, count);
-
-  if ((fd = open (libname, O_RDONLY)) == -1)
-    {
-      fprintf (stderr, "open (\"%s\", O_RDONLY): %s\n", libname,
-	       strerror (errno));
-      exit (1);
-    }
-
-  if (fstat (fd, &st) != 0)
-    {
-      fprintf (stderr, "fstat (\"%d\"): %s\n", fd, strerror (errno));
-      exit (1);
-    }
-
-  for (i = 0; i < count; ++i)
-    {
-      const void *const addr = mmap (0, st.st_size, PROT_READ|PROT_WRITE,
-				     MAP_PRIVATE, fd, 0);
-      struct jit_code_entry *const entry = calloc (1, sizeof (*entry));
-
-      if (addr == MAP_FAILED)
-	{
-	  fprintf (stderr, "mmap: %s\n", strerror (errno));
-	  exit (1);
-	}
-
-      update_locations (addr, i);
-
-      /* Link entry at the end of the list.  */
-      entry->symfile_addr = (const char *)addr;
-      entry->symfile_size = st.st_size;
-      entry->prev_entry = __jit_debug_descriptor.relevant_entry;
-      __jit_debug_descriptor.relevant_entry = entry;
-
-      if (entry->prev_entry != NULL)
-	entry->prev_entry->next_entry = entry;
-      else
-	__jit_debug_descriptor.first_entry = entry;
-
-      /* Notify GDB.  */
-      __jit_debug_descriptor.action_flag = JIT_REGISTER_FN;
-      __jit_debug_register_code ();
-    }
-
-  WAIT_FOR_GDB; i = 0;  /* gdb break here 1 */
-
-  /* Now unregister them all in reverse order.  */
-  while (__jit_debug_descriptor.relevant_entry != NULL)
-    {
-      struct jit_code_entry *const entry =
-	__jit_debug_descriptor.relevant_entry;
-      struct jit_code_entry *const prev_entry = entry->prev_entry;
-
-      if (prev_entry != NULL)
-	{
-	  prev_entry->next_entry = NULL;
-	  entry->prev_entry = NULL;
-	}
-      else
-	__jit_debug_descriptor.first_entry = NULL;
-
-      /* Notify GDB.  */
-      __jit_debug_descriptor.action_flag = JIT_UNREGISTER_FN;
-      __jit_debug_register_code ();
-
-      __jit_debug_descriptor.relevant_entry = prev_entry;
-      free (entry);
-    }
-
-  WAIT_FOR_GDB; return 0;  /* gdb break here 2  */
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-protocol.h ./gdb/testsuite/gdb.base/jit-protocol.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-protocol.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-protocol.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -38,7 +38,7 @@ struct jit_code_entry
 {
   struct jit_code_entry *next_entry;
   struct jit_code_entry *prev_entry;
-  void *symfile_addr;
+  const void *symfile_addr;
   uint64_t symfile_size;
 };
 
@@ -51,4 +51,10 @@ struct jit_descriptor
   struct jit_code_entry *first_entry;
 };
 
+struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 };
+
+void __attribute__((noinline)) __jit_debug_register_code()
+{
+}
+
 #endif /* JIT_PROTOCOL_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader.c ./gdb/testsuite/gdb.base/jit-reader.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,211 @@
+/* Copyright (C) 2009-2021 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 <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include JIT_READER_H  /* Please see jit-reader.exp for an explanation.  */
+#include "jit-reader-host.h"
+
+GDB_DECLARE_GPL_COMPATIBLE_READER;
+
+enum register_mapping
+{
+  AMD64_RA = 16,
+  AMD64_RBP = 6,
+  AMD64_RSP = 7,
+};
+
+struct reader_state
+{
+  struct {
+    uintptr_t begin;
+    uintptr_t end;
+  } func_stack_mangle;
+};
+
+static enum gdb_status
+read_debug_info (struct gdb_reader_funcs *self,
+		 struct gdb_symbol_callbacks *cbs,
+                 void *memory, long memory_sz)
+{
+  struct jithost_abi *symfile = memory;
+  struct gdb_object *object = cbs->object_open (cbs);
+  struct gdb_symtab *symtab = cbs->symtab_open (cbs, object, "");
+
+  struct reader_state *state = (struct reader_state *) self->priv_data;
+
+  /* Record the stack mangle function's range, for the unwinder.  */
+  state->func_stack_mangle.begin
+    = (uintptr_t) symfile->function_stack_mangle.begin;
+  state->func_stack_mangle.end
+    = (uintptr_t) symfile->function_stack_mangle.end;
+
+  cbs->block_open (cbs, symtab, NULL,
+		   (GDB_CORE_ADDR) symfile->function_stack_mangle.begin,
+		   (GDB_CORE_ADDR) symfile->function_stack_mangle.end,
+		   "jit_function_stack_mangle");
+
+  cbs->block_open (cbs, symtab, NULL,
+		   (GDB_CORE_ADDR) symfile->function_add.begin,
+		   (GDB_CORE_ADDR) symfile->function_add.end,
+		   "jit_function_add");
+
+  cbs->symtab_close (cbs, symtab);
+  cbs->object_close (cbs, object);
+  return GDB_SUCCESS;
+}
+
+static void
+free_reg_value (struct gdb_reg_value *value)
+{
+  free (value);
+}
+
+static void
+write_register (struct gdb_unwind_callbacks *callbacks, int dw_reg,
+                uintptr_t value)
+{
+  const int size = sizeof (uintptr_t);
+  struct gdb_reg_value *reg_val =
+    malloc (sizeof (struct gdb_reg_value) + size - 1);
+  reg_val->defined = 1;
+  reg_val->free = free_reg_value;
+
+  memcpy (reg_val->value, &value, size);
+  callbacks->reg_set (callbacks, dw_reg, reg_val);
+}
+
+static int
+read_register (struct gdb_unwind_callbacks *callbacks, int dw_reg,
+	       uintptr_t *value)
+{
+  const int size = sizeof (uintptr_t);
+  struct gdb_reg_value *reg_val = callbacks->reg_get (callbacks, dw_reg);
+  if (reg_val->size != size || !reg_val->defined)
+    {
+      reg_val->free (reg_val);
+      return 0;
+    }
+  memcpy (value, reg_val->value, size);
+  reg_val->free (reg_val);
+  return 1;
+}
+
+/* Read the stack pointer into *VALUE.  IP is the address the inferior
+   is currently stopped at.  Takes care of demangling the stack
+   pointer if necessary.  */
+
+static int
+read_sp (struct gdb_reader_funcs *self, struct gdb_unwind_callbacks *cbs,
+	 uintptr_t ip, uintptr_t *value)
+{
+  struct reader_state *state = (struct reader_state *) self->priv_data;
+  uintptr_t sp;
+
+  if (!read_register (cbs, AMD64_RSP, &sp))
+    return GDB_FAIL;
+
+  /* If stopped at the instruction after the "xor $-1, %rsp", demangle
+     the stack pointer back.  */
+  if (ip == state->func_stack_mangle.begin + 5)
+    sp ^= (uintptr_t) -1;
+
+  *value = sp;
+  return GDB_SUCCESS;
+}
+
+static enum gdb_status
+unwind_frame (struct gdb_reader_funcs *self, struct gdb_unwind_callbacks *cbs)
+{
+  const int word_size = sizeof (uintptr_t);
+  uintptr_t prev_sp, this_sp;
+  uintptr_t prev_ip, this_ip;
+  uintptr_t prev_bp, this_bp;
+  struct reader_state *state = (struct reader_state *) self->priv_data;
+
+  if (!read_register (cbs, AMD64_RA, &this_ip))
+    return GDB_FAIL;
+
+  if (this_ip >= state->func_stack_mangle.end
+      || this_ip < state->func_stack_mangle.begin)
+    return GDB_FAIL;
+
+  /* Unwind RBP in order to make the unwinder that tries to unwind
+     from the just-unwound frame happy.  */
+  if (!read_register (cbs, AMD64_RBP, &this_bp))
+    return GDB_FAIL;
+  /* RBP is unmodified.  */
+  prev_bp = this_bp;
+
+  /* Fetch the demangled stack pointer.  */
+  if (!read_sp (self, cbs, this_ip, &this_sp))
+    return GDB_FAIL;
+
+  /* The return address is saved on the stack.  */
+  if (cbs->target_read (this_sp, &prev_ip, word_size) == GDB_FAIL)
+    return GDB_FAIL;
+  prev_sp = this_sp + word_size;
+
+  write_register (cbs, AMD64_RA, prev_ip);
+  write_register (cbs, AMD64_RSP, prev_sp);
+  write_register (cbs, AMD64_RBP, prev_bp);
+  return GDB_SUCCESS;
+}
+
+static struct gdb_frame_id
+get_frame_id (struct gdb_reader_funcs *self, struct gdb_unwind_callbacks *cbs)
+{
+  struct reader_state *state = (struct reader_state *) self->priv_data;
+  struct gdb_frame_id frame_id;
+  uintptr_t ip;
+  uintptr_t sp;
+
+  read_register (cbs, AMD64_RA, &ip);
+  read_sp (self, cbs, ip, &sp);
+
+  frame_id.code_address = (GDB_CORE_ADDR) state->func_stack_mangle.begin;
+  frame_id.stack_address = (GDB_CORE_ADDR) sp;
+
+  return frame_id;
+}
+
+static void
+destroy_reader (struct gdb_reader_funcs *self)
+{
+  free (self->priv_data);
+  free (self);
+}
+
+struct gdb_reader_funcs *
+gdb_init_reader (void)
+{
+  struct reader_state *state = calloc (1, sizeof (struct reader_state));
+  struct gdb_reader_funcs *reader_funcs =
+    malloc (sizeof (struct gdb_reader_funcs));
+
+  reader_funcs->reader_version = GDB_READER_INTERFACE_VERSION;
+  reader_funcs->priv_data = state;
+  reader_funcs->read = read_debug_info;
+  reader_funcs->unwind = unwind_frame;
+  reader_funcs->get_frame_id = get_frame_id;
+  reader_funcs->destroy = destroy_reader;
+
+  return reader_funcs;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jitreader.c ./gdb/testsuite/gdb.base/jitreader.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jitreader.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jitreader.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,211 +0,0 @@
-/* Copyright (C) 2009-2020 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 <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include JIT_READER_H  /* Please see jit-reader.exp for an explanation.  */
-#include "jithost.h"
-
-GDB_DECLARE_GPL_COMPATIBLE_READER;
-
-enum register_mapping
-{
-  AMD64_RA = 16,
-  AMD64_RBP = 6,
-  AMD64_RSP = 7,
-};
-
-struct reader_state
-{
-  struct {
-    uintptr_t begin;
-    uintptr_t end;
-  } func_stack_mangle;
-};
-
-static enum gdb_status
-read_debug_info (struct gdb_reader_funcs *self,
-		 struct gdb_symbol_callbacks *cbs,
-                 void *memory, long memory_sz)
-{
-  struct jithost_abi *symfile = memory;
-  struct gdb_object *object = cbs->object_open (cbs);
-  struct gdb_symtab *symtab = cbs->symtab_open (cbs, object, "");
-
-  struct reader_state *state = (struct reader_state *) self->priv_data;
-
-  /* Record the stack mangle function's range, for the unwinder.  */
-  state->func_stack_mangle.begin
-    = (uintptr_t) symfile->function_stack_mangle.begin;
-  state->func_stack_mangle.end
-    = (uintptr_t) symfile->function_stack_mangle.end;
-
-  cbs->block_open (cbs, symtab, NULL,
-		   (GDB_CORE_ADDR) symfile->function_stack_mangle.begin,
-		   (GDB_CORE_ADDR) symfile->function_stack_mangle.end,
-		   "jit_function_stack_mangle");
-
-  cbs->block_open (cbs, symtab, NULL,
-		   (GDB_CORE_ADDR) symfile->function_add.begin,
-		   (GDB_CORE_ADDR) symfile->function_add.end,
-		   "jit_function_add");
-
-  cbs->symtab_close (cbs, symtab);
-  cbs->object_close (cbs, object);
-  return GDB_SUCCESS;
-}
-
-static void
-free_reg_value (struct gdb_reg_value *value)
-{
-  free (value);
-}
-
-static void
-write_register (struct gdb_unwind_callbacks *callbacks, int dw_reg,
-                uintptr_t value)
-{
-  const int size = sizeof (uintptr_t);
-  struct gdb_reg_value *reg_val =
-    malloc (sizeof (struct gdb_reg_value) + size - 1);
-  reg_val->defined = 1;
-  reg_val->free = free_reg_value;
-
-  memcpy (reg_val->value, &value, size);
-  callbacks->reg_set (callbacks, dw_reg, reg_val);
-}
-
-static int
-read_register (struct gdb_unwind_callbacks *callbacks, int dw_reg,
-	       uintptr_t *value)
-{
-  const int size = sizeof (uintptr_t);
-  struct gdb_reg_value *reg_val = callbacks->reg_get (callbacks, dw_reg);
-  if (reg_val->size != size || !reg_val->defined)
-    {
-      reg_val->free (reg_val);
-      return 0;
-    }
-  memcpy (value, reg_val->value, size);
-  reg_val->free (reg_val);
-  return 1;
-}
-
-/* Read the stack pointer into *VALUE.  IP is the address the inferior
-   is currently stopped at.  Takes care of demangling the stack
-   pointer if necessary.  */
-
-static int
-read_sp (struct gdb_reader_funcs *self, struct gdb_unwind_callbacks *cbs,
-	 uintptr_t ip, uintptr_t *value)
-{
-  struct reader_state *state = (struct reader_state *) self->priv_data;
-  uintptr_t sp;
-
-  if (!read_register (cbs, AMD64_RSP, &sp))
-    return GDB_FAIL;
-
-  /* If stopped at the instruction after the "xor $-1, %rsp", demangle
-     the stack pointer back.  */
-  if (ip == state->func_stack_mangle.begin + 5)
-    sp ^= (uintptr_t) -1;
-
-  *value = sp;
-  return GDB_SUCCESS;
-}
-
-static enum gdb_status
-unwind_frame (struct gdb_reader_funcs *self, struct gdb_unwind_callbacks *cbs)
-{
-  const int word_size = sizeof (uintptr_t);
-  uintptr_t prev_sp, this_sp;
-  uintptr_t prev_ip, this_ip;
-  uintptr_t prev_bp, this_bp;
-  struct reader_state *state = (struct reader_state *) self->priv_data;
-
-  if (!read_register (cbs, AMD64_RA, &this_ip))
-    return GDB_FAIL;
-
-  if (this_ip >= state->func_stack_mangle.end
-      || this_ip < state->func_stack_mangle.begin)
-    return GDB_FAIL;
-
-  /* Unwind RBP in order to make the unwinder that tries to unwind
-     from the just-unwound frame happy.  */
-  if (!read_register (cbs, AMD64_RBP, &this_bp))
-    return GDB_FAIL;
-  /* RBP is unmodified.  */
-  prev_bp = this_bp;
-
-  /* Fetch the demangled stack pointer.  */
-  if (!read_sp (self, cbs, this_ip, &this_sp))
-    return GDB_FAIL;
-
-  /* The return address is saved on the stack.  */
-  if (cbs->target_read (this_sp, &prev_ip, word_size) == GDB_FAIL)
-    return GDB_FAIL;
-  prev_sp = this_sp + word_size;
-
-  write_register (cbs, AMD64_RA, prev_ip);
-  write_register (cbs, AMD64_RSP, prev_sp);
-  write_register (cbs, AMD64_RBP, prev_bp);
-  return GDB_SUCCESS;
-}
-
-static struct gdb_frame_id
-get_frame_id (struct gdb_reader_funcs *self, struct gdb_unwind_callbacks *cbs)
-{
-  struct reader_state *state = (struct reader_state *) self->priv_data;
-  struct gdb_frame_id frame_id;
-  uintptr_t ip;
-  uintptr_t sp;
-
-  read_register (cbs, AMD64_RA, &ip);
-  read_sp (self, cbs, ip, &sp);
-
-  frame_id.code_address = (GDB_CORE_ADDR) state->func_stack_mangle.begin;
-  frame_id.stack_address = (GDB_CORE_ADDR) sp;
-
-  return frame_id;
-}
-
-static void
-destroy_reader (struct gdb_reader_funcs *self)
-{
-  free (self->priv_data);
-  free (self);
-}
-
-struct gdb_reader_funcs *
-gdb_init_reader (void)
-{
-  struct reader_state *state = calloc (1, sizeof (struct reader_state));
-  struct gdb_reader_funcs *reader_funcs =
-    malloc (sizeof (struct gdb_reader_funcs));
-
-  reader_funcs->reader_version = GDB_READER_INTERFACE_VERSION;
-  reader_funcs->priv_data = state;
-  reader_funcs->read = read_debug_info;
-  reader_funcs->unwind = unwind_frame;
-  reader_funcs->get_frame_id = get_frame_id;
-  reader_funcs->destroy = destroy_reader;
-
-  return reader_funcs;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-exec.c ./gdb/testsuite/gdb.base/jit-reader-exec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-exec.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader-exec.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,28 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2018-2021 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/>.  */
+
+/* Simple standalone program using the JIT API.  */
+
+#include "jit-reader-simple-jit.c"
+#include <unistd.h>
+
+int
+main (int argc, char **argv)
+{
+  execl (PROGRAM, PROGRAM, (char *) 0);
+  return 99;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-execd.c ./gdb/testsuite/gdb.base/jit-reader-execd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-execd.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader-execd.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2018-2021 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/>.  */
+
+int
+main (int argc, char **argv)
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-exec.exp ./gdb/testsuite/gdb.base/jit-reader-exec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-exec.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader-exec.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,52 @@
+# Copyright 2018-2021 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/>.
+
+# Regression test for a jit.c bug.  Previously it would crash if an
+# inferior that used the JIT API then exec'd a program that did not
+# use it.
+
+if { ![istarget "*-linux*"] } then {
+    return
+}
+
+standard_testfile jit-reader-exec.c
+
+set testfile2 "jit-reader-execd"
+set srcfile2 ${testfile2}.c
+set binfile2 [standard_output_file ${testfile2}]
+
+set compile_options [list debug additional_flags=-DPROGRAM=\"$binfile2\"]
+
+if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
+	 executable $compile_options] != ""} {
+    untested "failed to compile"
+    return -1
+}
+
+if {[gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" \
+	 executable $compile_options] != ""} {
+    untested "failed to compile"
+    return -1
+}
+
+clean_restart $binfile
+
+if {![runto_main]} {
+    fail "can't run to main"
+    return
+}
+
+delete_breakpoints
+gdb_test "continue" "Inferior .* exited normally.*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader.exp ./gdb/testsuite/gdb.base/jit-reader.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -13,7 +13,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-standard_testfile jithost.c
+standard_testfile jit-reader-host.c
 
 if { (![istarget x86_64-*-*] && ![istarget i?86-*-*]) || ![is_lp64_target] } {
     return -1;
@@ -32,6 +32,10 @@ if {[get_compiler_info]} {
     return 1
 }
 
+
+# Increase this to see more detail.
+set test_verbose 0
+
 set jit_host_src $srcfile
 set jit_host_bin $binfile
 
@@ -47,7 +51,7 @@ if  { [gdb_compile "${srcdir}/${subdir}/
     return -1
 }
 
-set jit_reader jitreader
+set jit_reader jit-reader
 set jit_reader_src ${jit_reader}.c
 set jit_reader_bin [standard_output_file ${jit_reader}.so]
 
@@ -66,7 +70,8 @@ proc info_registers_current_frame {sp} {
     set any "\[^\r\n\]*"
 
     set neg_decimal "-?$decimal"
-    gdb_test "info registers" \
+
+    set expected \
 	[multi_line \
 	     "rax            $hex +$neg_decimal" \
 	     "rbx            $hex +$neg_decimal" \
@@ -93,12 +98,17 @@ proc info_registers_current_frame {sp} {
 	     "fs             $hex +$neg_decimal" \
 	     "gs             $hex +$neg_decimal" \
 	    ]
+
+    # There may be more registers.
+    append expected ".*"
+
+    gdb_test "info registers" $expected
 }
 
 proc jit_reader_test {} {
     global jit_host_bin
     global jit_reader_bin
-    global verbose
+    global test_verbose
     global hex decimal
 
     set any "\[^\r\n\]*"
@@ -106,7 +116,7 @@ proc jit_reader_test {} {
     clean_restart $jit_host_bin
     gdb_load_shlib $jit_reader_bin
 
-    if {$verbose > 0} {
+    if {$test_verbose > 0} {
 	gdb_test_no_output "set debug jit 1"
     }
 
@@ -170,7 +180,8 @@ proc jit_reader_test {} {
 
 		# Since the JIT unwinder only provides RIP/RSP/RBP,
 		# all other registers should show as "<not saved>".
-		gdb_test "info registers" \
+
+		set expected \
 		    [multi_line \
 			 "rax            <not saved>" \
 			 "rbx            <not saved>" \
@@ -198,6 +209,11 @@ proc jit_reader_test {} {
 			 "gs             <not saved>" \
 			]
 
+		# There may be more registers.
+		append expected ".*"
+
+		gdb_test "info registers" $expected
+
 		# Make sure that "info frame" doesn't crash.
 		gdb_test "info frame" "Stack level 1, .*in main.*"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-host.c ./gdb/testsuite/gdb.base/jit-reader-host.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-host.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader-host.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,98 @@
+/* Copyright (C) 2009-2021 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 <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/mman.h>
+
+#include JIT_READER_H  /* Please see jit-reader.exp for an explanation.  */
+#include "jit-reader-host.h"
+#include "jit-protocol.h"
+
+struct jit_code_entry only_entry;
+
+typedef void (jit_function_stack_mangle_t) (void);
+typedef long (jit_function_add_t) (long a, long b);
+
+/* The code of the jit_function_00 function that is copied into an
+   mmapped buffer in the inferior at run time.
+
+   The second instruction mangles the stack pointer, meaning that when
+   stopped at the third instruction, GDB needs assistance from the JIT
+   unwinder in order to be able to unwind successfully.  */
+static const unsigned char jit_function_stack_mangle_code[] = {
+  0xcc,				/* int3 */
+  0x48, 0x83, 0xf4, 0xff,	/* xor $0xffffffffffffffff, %rsp */
+  0x48, 0x83, 0xf4, 0xff,	/* xor $0xffffffffffffffff, %rsp */
+  0xc3				/* ret */
+};
+
+/* And another "JIT-ed" function, with the prototype `jit_function_add_t`.  */
+static const unsigned char jit_function_add_code[] = {
+  0x48, 0x01, 0xfe,		/* add %rdi,%rsi */
+  0x48, 0x89, 0xf0,		/* mov %rsi,%rax */
+  0xc3,				/* retq */
+};
+
+int
+main (int argc, char **argv)
+{
+  struct jithost_abi *symfile = malloc (sizeof (struct jithost_abi));
+  char *code = mmap (NULL, getpagesize (), PROT_WRITE | PROT_EXEC,
+		     MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+  char *code_end = code;
+
+  assert (code != MAP_FAILED);
+
+  /* "JIT" function_stack_mangle.  */
+  memcpy (code_end, jit_function_stack_mangle_code,
+	  sizeof (jit_function_stack_mangle_code));
+  jit_function_stack_mangle_t *function_stack_mangle
+    = (jit_function_stack_mangle_t *) code_end;
+  symfile->function_stack_mangle.begin = code_end;
+  code_end += sizeof (jit_function_stack_mangle_code);
+  symfile->function_stack_mangle.end = code_end;
+
+  /* "JIT" function_add.  */
+  memcpy (code_end, jit_function_add_code, sizeof (jit_function_add_code));
+  jit_function_add_t *function_add = (jit_function_add_t *) code_end;
+  symfile->function_add.begin = code_end;
+  code_end += sizeof (jit_function_add_code);
+  symfile->function_add.end = code_end;
+
+  /* Bounds of the whole object.  */
+  symfile->object.begin = code;
+  symfile->object.end = code_end;
+
+  only_entry.symfile_addr = symfile;
+  only_entry.symfile_size = sizeof (struct jithost_abi);
+
+  __jit_debug_descriptor.first_entry = &only_entry;
+  __jit_debug_descriptor.relevant_entry = &only_entry;
+  __jit_debug_descriptor.action_flag = JIT_REGISTER;
+  __jit_debug_descriptor.version = 1;
+  __jit_debug_register_code ();
+
+  function_stack_mangle ();
+  function_add (5, 6);
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-host.h ./gdb/testsuite/gdb.base/jit-reader-host.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-host.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader-host.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,38 @@
+/* Copyright (C) 2009-2021 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 JITHOST_H
+#define JITHOST_H
+
+struct jithost_abi_bounds
+{
+  const char *begin, *end;
+};
+
+struct jithost_abi
+{
+  /* Beginning and past-the-end for the whole object. */
+  struct jithost_abi_bounds object;
+
+  /* Beginning and past-the-end for function_stack_mangle.  */
+  struct jithost_abi_bounds function_stack_mangle;
+
+  /* Beginning and past-the-end for function_add.  */
+  struct jithost_abi_bounds function_add;
+};
+
+#endif /* JITHOST_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-simple.c ./gdb/testsuite/gdb.base/jit-reader-simple.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-simple.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader-simple.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,26 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2016-2021 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/>.  */
+
+/* Simple standalone program using the JIT API.  */
+
+#include "jit-reader-simple-jit.c"
+
+int
+main (void)
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-simple-dl.c ./gdb/testsuite/gdb.base/jit-reader-simple-dl.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-simple-dl.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader-simple-dl.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2016-2021 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/>.  */
+
+/* A stub program that links with a simple library that uses the JIT
+   API.  */
+
+int
+main (void)
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-simple.exp ./gdb/testsuite/gdb.base/jit-reader-simple.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-simple.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader-simple.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,203 @@
+# Copyright 2012-2021 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 re-running an inferior with a JIT descriptor, where the JIT
+# descriptor changes address between runs.
+# http://sourceware.org/bugzilla/show_bug.cgi?id=13431
+
+# Test both the case of the JIT reader being included in the main
+# program directly, and the case of the JIT reader being split out to
+# a shared library.
+
+# For completeness, also test when the JIT descriptor does not change
+# address between runs.
+
+if {[skip_shlib_tests]} {
+    untested "skipping shared library tests"
+    return -1
+}
+
+standard_testfile
+
+set libname $testfile-jit
+set srcfile_lib $srcdir/$subdir/$libname.c
+set binfile_lib [standard_output_file $libname.so]
+set binfile_lib2 [standard_output_file ${libname}2.so]
+
+# Build a standalone JIT binary.
+
+proc build_standalone_jit {{options ""}} {
+    global testfile srcfile binfile
+
+    lappend options "debug"
+
+    if {[build_executable $testfile.exp $testfile $srcfile $options] == -1} {
+	return -1
+    }
+
+    return 0
+}
+
+# Build the shared library JIT.
+
+proc build_shared_jit {{options ""}} {
+    global testfile
+    global srcfile_lib binfile_lib binfile_lib2
+
+    lappend options "debug additional_flags=-fPIC"
+    if { [gdb_compile_shlib $srcfile_lib $binfile_lib $options] != "" } {
+	return -1
+    }
+    if { [gdb_compile_shlib $srcfile_lib $binfile_lib2 $options] != "" } {
+	return -1
+    }
+
+    return 0
+}
+
+if {[build_standalone_jit] == -1} {
+    untested "failed to compile standalone testcase"
+    return
+}
+
+if {[build_shared_jit] == -1} {
+    untested "failed to compile shared library testcase"
+    return
+}
+
+# Build the program that loads the JIT library.
+set srcfile_dl $testfile-dl.c
+set binfile_dl $binfile-dl
+set options [list debug shlib=${binfile_lib}]
+if {[gdb_compile ${srcdir}/${subdir}/${srcfile_dl} $binfile_dl executable \
+	 $options] == -1 } {
+    untested "failed to compile"
+    return -1
+}
+
+# Build the program that loads *two* JIT libraries.
+set binfile_dl2 $binfile-dl2
+set options [list debug shlib=${binfile_lib} shlib=${binfile_lib2}]
+if {[gdb_compile ${srcdir}/${subdir}/${srcfile_dl} $binfile_dl2 executable \
+	 $options] == -1 } {
+    untested "failed to compile two-jitter binary"
+    return -1
+}
+
+# STANDALONE is true when the JIT reader is included directly in the
+# main program.  False when the JIT reader is in a separate shared
+# library.  If CHANGE_ADDR is true, force changing the JIT descriptor
+# changes address between runs.
+proc jit_test_reread {standalone change_addr} {
+    global testfile binfile subdir srcfile srcdir binfile_lib binfile_dl
+    global hex
+
+    with_test_prefix "initial run" {
+	if {$standalone} {
+	    clean_restart $binfile
+	} else {
+	    clean_restart $binfile_dl
+	}
+
+	runto_main
+
+	set addr_before [get_hexadecimal_valueof "&__jit_debug_descriptor" 0 \
+			     "get address of __jit_debug_descriptor"]
+
+	gdb_test "maint info breakpoints" \
+	    "jit events     keep y   $hex <__jit_debug_register_code>.*" \
+	    "maint info breakpoints shows jit breakpoint"
+    }
+
+    with_test_prefix "second run" {
+	# Ensure that the new executable is at least one second newer
+	# than the old.  If the recompilation happens in the same
+	# second, gdb might not reload the executable automatically.
+	sleep 1
+
+	if ${change_addr} {
+	    set options "additional_flags=-DSPACER"
+	    if {$standalone} {
+		gdb_rename_execfile $binfile ${binfile}x
+		set res [build_standalone_jit $options]
+	    } else {
+		gdb_rename_execfile $binfile_lib ${binfile_lib}x
+		set res [build_shared_jit $options]
+	    }
+	    if  { $res == -1 } {
+		fail "recompile"
+		return
+	    } else {
+		pass "recompile"
+	    }
+	}
+
+	runto_main
+
+	set addr_after [get_hexadecimal_valueof "&__jit_debug_descriptor" 0 \
+			    "get address of __jit_debug_descriptor"]
+
+	# This used to crash in the JIT-in-shared-library case:
+	# https://sourceware.org/bugzilla/show_bug.cgi?id=11094
+	gdb_test "maint info breakpoints" \
+	    "jit events     keep y   $hex <__jit_debug_register_code>.*" \
+	    "maint info breakpoints shows jit breakpoint"
+    }
+
+    if ${change_addr} {
+	gdb_assert {$addr_before != $addr_after} "address changed"
+    } else {
+	gdb_assert {$addr_before == $addr_after} "address didn't change"
+    }
+}
+
+foreach standalone {1 0} {
+    with_test_prefix [expr ($standalone)?"standalone":"shared"] {
+	with_test_prefix "change addr" {
+	    jit_test_reread $standalone 1
+	}
+	with_test_prefix "same addr" {
+	    jit_test_reread $standalone 0
+	}
+    }
+}
+
+# Now start the program that loads two JITer libraries and expect to
+# see JIT breakpoints defined for both.
+
+with_test_prefix "two JITers" {
+    clean_restart $binfile_dl2
+
+    if {![runto_main]} {
+	untested "could not run to main"
+	return -1
+    }
+
+    set num_bps 0
+    set ws "\[ \t\]+"
+    gdb_test_multiple "maint info breakpoints" "have two jit breakpoints" {
+	-re "jit events${ws}keep y${ws}$hex <__jit_debug_register_code> inf 1\r\n" {
+	    incr num_bps
+	    exp_continue
+	}
+	-re "$gdb_prompt $" {
+	    if {$num_bps == 2} {
+		pass $gdb_test_name
+	    } else {
+		fail $gdb_test_name
+	    }
+	}
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-simple-jit.c ./gdb/testsuite/gdb.base/jit-reader-simple-jit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-reader-simple-jit.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-reader-simple-jit.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2012-2021 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/>.  */
+
+/* Simple library using the JIT API.  */
+
+#include <stdint.h>
+
+#ifdef SPACER
+/* This exists to change the address of __jit_debug_descriptor.  */
+int spacer = 4;
+#endif
+
+#include "jit-protocol.h"
\ No newline at end of file
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-simple.c ./gdb/testsuite/gdb.base/jit-simple.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-simple.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-simple.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,26 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2016-2020 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/>.  */
-
-/* Simple standalone program using the JIT API.  */
-
-#include "jit-simple-jit.c"
-
-int
-main (void)
-{
-  return 0;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-simple-dl.c ./gdb/testsuite/gdb.base/jit-simple-dl.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-simple-dl.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-simple-dl.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,25 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2016-2020 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/>.  */
-
-/* A stub program that links with a simple library that uses the JIT
-   API.  */
-
-int
-main (void)
-{
-  return 0;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-simple.exp ./gdb/testsuite/gdb.base/jit-simple.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-simple.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-simple.exp	1970-01-01 00:00:00.000000000 +0000
@@ -1,162 +0,0 @@
-# Copyright 2012-2020 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 re-running an inferior with a JIT descriptor, where the JIT
-# descriptor changes address between runs.
-# http://sourceware.org/bugzilla/show_bug.cgi?id=13431
-
-# Test both the case of the JIT reader being included in the main
-# program directly, and the case of the JIT reader being split out to
-# a shared library.
-
-# For completeness, also test when the JIT descriptor does not change
-# address between runs.
-
-if {[skip_shlib_tests]} {
-    untested "skipping shared library tests"
-    return -1
-}
-
-standard_testfile
-
-set libname $testfile-jit
-set srcfile_lib $srcdir/$subdir/$libname.c
-set binfile_lib [standard_output_file $libname.so]
-
-# Build a standalone JIT binary.
-
-proc build_standalone_jit {{options ""}} {
-    global testfile srcfile binfile
-
-    lappend options "debug"
-
-    if {[build_executable $testfile.exp $testfile $srcfile $options] == -1} {
-	return -1
-    }
-
-    return 0
-}
-
-# Build the shared library JIT.
-
-proc build_shared_jit {{options ""}} {
-    global testfile
-    global srcfile_lib binfile_lib
-
-    lappend options "debug additional_flags=-fPIC"
-    if { [gdb_compile_shlib $srcfile_lib $binfile_lib $options] != "" } {
-	return -1
-    }
-
-    return 0
-}
-
-if {[build_standalone_jit] == -1} {
-    untested "failed to compile standalone testcase"
-    return
-}
-
-if {[build_shared_jit] == -1} {
-    untested "failed to compile shared library testcase"
-    return
-}
-
-# Built the program that loads the JIT library.
-set srcfile_dl $testfile-dl.c
-set binfile_dl $binfile-dl
-set options [list debug shlib=${binfile_lib}]
-if {[gdb_compile ${srcdir}/${subdir}/${srcfile_dl} $binfile_dl executable \
-	 [list debug shlib=$binfile_lib]] == -1 } {
-    untested "failed to compile"
-    return -1
-}
-
-# STANDALONE is true when the JIT reader is included directly in the
-# main program.  False when the JIT reader is in a separate shared
-# library.  If CHANGE_ADDR is true, force changing the JIT descriptor
-# changes address between runs.
-proc jit_test_reread {standalone change_addr} {
-    global testfile binfile subdir srcfile srcdir binfile_lib binfile_dl
-    global hex
-
-    with_test_prefix "initial run" {
-	if {$standalone} {
-	    clean_restart $binfile
-	} else {
-	    clean_restart $binfile_dl
-	}
-
-	runto_main
-
-	set addr_before [get_hexadecimal_valueof "&__jit_debug_descriptor" 0 \
-			     "get address of __jit_debug_descriptor"]
-
-	gdb_test "maint info breakpoints" \
-	    "jit events     keep y   $hex <__jit_debug_register_code>.*" \
-	    "maint info breakpoints shows jit breakpoint"
-    }
-
-    with_test_prefix "second run" {
-	# Ensure that the new executable is at least one second newer
-	# than the old.  If the recompilation happens in the same
-	# second, gdb might not reload the executable automatically.
-	sleep 1
-
-	if ${change_addr} {
-	    set options "additional_flags=-DSPACER"
-	    if {$standalone} {
-		gdb_rename_execfile $binfile ${binfile}x
-		set res [build_standalone_jit $options]
-	    } else {
-		gdb_rename_execfile $binfile_lib ${binfile_lib}x
-		set res [build_shared_jit $options]
-	    }
-	    if  { $res == -1 } {
-		fail "recompile"
-		return
-	    } else {
-		pass "recompile"
-	    }
-	}
-
-	runto_main
-
-	set addr_after [get_hexadecimal_valueof "&__jit_debug_descriptor" 0 \
-			    "get address of __jit_debug_descriptor"]
-
-	# This used to crash in the JIT-in-shared-library case:
-	# https://sourceware.org/bugzilla/show_bug.cgi?id=11094
-	gdb_test "maint info breakpoints" \
-	    "jit events     keep y   $hex <__jit_debug_register_code>.*" \
-	    "maint info breakpoints shows jit breakpoint"
-    }
-
-    if ${change_addr} {
-	gdb_assert {$addr_before != $addr_after} "address changed"
-    } else {
-	gdb_assert {$addr_before == $addr_after} "address didn't change"
-    }
-}
-
-foreach standalone {1 0} {
-    with_test_prefix [expr ($standalone)?"standalone":"shared"] {
-	with_test_prefix "change addr" {
-	    jit_test_reread $standalone 1
-	}
-	with_test_prefix "same addr" {
-	    jit_test_reread $standalone 0
-	}
-    }
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-simple-jit.c ./gdb/testsuite/gdb.base/jit-simple-jit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-simple-jit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-simple-jit.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,50 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2012-2020 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/>.  */
-
-/* Simple library using the JIT API.  */
-
-#include <stdint.h>
-
-struct jit_code_entry
-{
-  struct jit_code_entry *next_entry;
-  struct jit_code_entry *prev_entry;
-  const char *symfile_addr;
-  uint64_t symfile_size;
-};
-
-struct jit_descriptor
-{
-  uint32_t version;
-  /* This type should be jit_actions_t, but we use uint32_t
-     to be explicit about the bitwidth.  */
-  uint32_t action_flag;
-  struct jit_code_entry *relevant_entry;
-  struct jit_code_entry *first_entry;
-};
-
-#ifdef SPACER
-/* This exists to change the address of __jit_debug_descriptor.  */
-int spacer = 4;
-#endif
-
-struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 };
-
-void
-__jit_debug_register_code (void)
-{
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-so.exp ./gdb/testsuite/gdb.base/jit-so.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-so.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-so.exp	1970-01-01 00:00:00.000000000 +0000
@@ -1,125 +0,0 @@
-# Copyright 2011-2020 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/>.
-
-# The same tests as in jit.exp, but loading JITer itself from a shared
-# library.
-
-if {[skip_shlib_tests]} {
-    untested "skipping shared library tests"
-    return -1
-}
-
-if {[get_compiler_info]} {
-    untested "could not get compiler info"
-    return 1
-}
-
-#
-# test running programs
-#
-
-set testfile jit-dlmain
-set srcfile ${testfile}.c
-set binfile [standard_output_file ${testfile}]
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug shlib_load}] != "" } {
-    untested "failed to compile"
-    return -1
-}
-
-set testfile2 jit-main
-set srcfile2 ${testfile2}.c
-set binfile2 [standard_output_file ${testfile2}.so]
-set binfile2_dlopen [shlib_target_file ${testfile2}.so]
-if { [gdb_compile_shlib "${srcdir}/${subdir}/${srcfile2}" ${binfile2} {debug additional_flags="-DMAIN=jit_dl_main"}] != "" } {
-    untested "failed to compile main shared library"
-    return -1
-}
-
-set solib_testfile "jit-solib"
-set solib_srcfile "${srcdir}/${subdir}/${solib_testfile}.c"
-set solib_binfile [standard_output_file ${solib_testfile}.so]
-set solib_binfile_test_msg "SHLIBDIR/${solib_testfile}.so"
-
-# Note: compiling without debug info: the library goes through symbol
-# renaming by munging on its symbol table, and that wouldn't work for .debug
-# sections.  Also, output for "info function" changes when debug info is resent.
-if { [gdb_compile_shlib ${solib_srcfile} ${solib_binfile} {}] != "" } {
-    untested "failed to compile jit shared library"
-    return -1
-}
-
-set solib_binfile_target [gdb_remote_download target ${solib_binfile}]
-
-proc one_jit_test {count match_str} {
-    with_test_prefix "one_jit_test-$count" {
-	global verbose testfile srcfile2 binfile2 binfile2_dlopen solib_binfile_target solib_binfile_test_msg
-
-	clean_restart $testfile
-	gdb_load_shlib $binfile2
-
-	# This is just to help debugging when things fail
-	if {$verbose > 0} {
-	    gdb_test "set debug jit 1"
-	}
-
-	if { ![runto_main] } {
-	    fail "can't run to main"
-	    return
-	}
-
-	gdb_breakpoint [gdb_get_line_number "break here before-dlopen" ]
-	gdb_continue_to_breakpoint "break here before-dlopen"
-	# Poke desired values directly into inferior instead of using "set args"
-	# because "set args" does not work under gdbserver.
-	gdb_test_no_output "set var jit_libname = \"$binfile2_dlopen\""
-
-	gdb_breakpoint [gdb_get_line_number "break here after-dlopen" ]
-	gdb_continue_to_breakpoint "break here after-dlopen"
-
-	gdb_breakpoint "$srcfile2:[gdb_get_line_number {break here 0} $srcfile2]"
-	gdb_continue_to_breakpoint "break here 0"
-
-	gdb_test_no_output "set var argc = 2"
-	gdb_test_no_output "set var libname = \"$solib_binfile_target\"" "set var libname = \"$solib_binfile_test_msg\""
-	gdb_test_no_output "set var count = $count"
-
-	gdb_breakpoint "$srcfile2:[gdb_get_line_number {break here 1} $srcfile2]"
-	gdb_continue_to_breakpoint "break here 1"
-
-	gdb_test "info function jit_function" "$match_str"
-
-	# This is just to help debugging when things fail
-	if {$verbose > 0} {
-	    gdb_test "maintenance print objfiles"
-	    gdb_test "maintenance info break"
-	}
-
-	gdb_breakpoint "$srcfile2:[gdb_get_line_number {break here 2} $srcfile2]"
-	gdb_continue_to_breakpoint "break here 2"
-	# All jit librares must have been unregistered
-	gdb_test "info function jit_function" \
-	    "All functions matching regular expression \"jit_function\":"
-    }
-}
-
-one_jit_test 1 "${hex}  jit_function_0000"
-one_jit_test 2 "${hex}  jit_function_0000\[\r\n\]+${hex}  jit_function_0001"
-
-# We don't intend to load the .so as a JIT debuginfo reader, but we
-# need some handy file name for a completion test.
-gdb_test \
-    "complete jit-reader-load [standard_output_file ${solib_testfile}.s]" \
-    "jit-reader-load $solib_binfile" \
-    "test jit-reader-load filename completion"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-solib.c ./gdb/testsuite/gdb.base/jit-solib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jit-solib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jit-solib.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,21 +0,0 @@
-/* This test program is part of GDB, the GNU debugger.
-
-   Copyright 2011-2020 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 simulates a JIT library.  The function is "renamed" after being
-   loaded into memory.  */
-
-int jit_function_XXXX() { return 42; }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jump.exp ./gdb/testsuite/gdb.base/jump.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/jump.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/jump.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/kill-after-signal.c ./gdb/testsuite/gdb.base/kill-after-signal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/kill-after-signal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/kill-after-signal.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/kill-after-signal.exp ./gdb/testsuite/gdb.base/kill-after-signal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/kill-after-signal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/kill-after-signal.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/kill-detach-inferiors-cmd.c ./gdb/testsuite/gdb.base/kill-detach-inferiors-cmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/kill-detach-inferiors-cmd.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/kill-detach-inferiors-cmd.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/kill-detach-inferiors-cmd.exp ./gdb/testsuite/gdb.base/kill-detach-inferiors-cmd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/kill-detach-inferiors-cmd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/kill-detach-inferiors-cmd.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -32,7 +32,7 @@ if [prepare_for_testing "failed to prepa
 runto_main
 
 # Add another forked inferior process.
-gdb_test "add-inferior" "Added inferior 2" "add inferior 2"
+gdb_test "add-inferior" "Added inferior 2 on connection .*" "add inferior 2"
 gdb_test "inferior 2" "Switching to inferior 2.*"
 gdb_test "file $binfile" "Reading symbols from .*" "load binary"
 gdb_test "start" "Temporary breakpoint.*Starting program.*"
@@ -40,7 +40,7 @@ gdb_test "start" "Temporary breakpoint.*
 # Add an attached inferior process.
 set test_spawn_id [spawn_wait_for_attach $binfile]
 set test_pid [spawn_id_get_pid $test_spawn_id]
-gdb_test "add-inferior" "Added inferior 3" "add inferior 3"
+gdb_test "add-inferior" "Added inferior 3 on connection .*" "add inferior 3"
 gdb_test "inferior 3" "Switching to inferior 3.*"
 gdb_test "attach $test_pid" "Attaching to process.*" "attach to pid"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/killed-outside.c ./gdb/testsuite/gdb.base/killed-outside.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/killed-outside.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/killed-outside.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/killed-outside.exp ./gdb/testsuite/gdb.base/killed-outside.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/killed-outside.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/killed-outside.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/label.exp ./gdb/testsuite/gdb.base/label.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/label.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/label.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/label-without-address.c ./gdb/testsuite/gdb.base/label-without-address.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/label-without-address.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/label-without-address.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main (void)
+{
+  return 0;
+ L1:
+  (void)0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/label-without-address.exp ./gdb/testsuite/gdb.base/label-without-address.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/label-without-address.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/label-without-address.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,42 @@
+# Copyright 2020-2021 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/>.  */
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
+    return -1
+}
+
+if ![runto_main] then {
+    fail "can't run to main"
+    return 0
+}
+
+set supported 0
+gdb_test_multiple "l main:L1" "" {
+    -wrap -re "No label \"L1\" defined in function \"main\"\." {
+	unsupported $gdb_test_name
+    }
+    -wrap -re "L1:\r\n.*" {
+	pass $gdb_test_name
+	set supported 1
+    }
+}
+
+if { ! $supported } {
+    return -1
+}
+
+gdb_test "break main:L1" "Location main:L1 not available"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/langs1.f ./gdb/testsuite/gdb.base/langs1.f
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/langs1.f	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/langs1.f	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-c Copyright (C) 1999-2020 Free Software Foundation, Inc.
+c Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
 c This program is free software; you can redistribute it and/or modify
 c it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/langs.exp ./gdb/testsuite/gdb.base/langs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/langs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/langs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+#   Copyright (C) 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/large-frame-1.c ./gdb/testsuite/gdb.base/large-frame-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/large-frame-1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/large-frame-1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/large-frame-2.c ./gdb/testsuite/gdb.base/large-frame-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/large-frame-2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/large-frame-2.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
@@ -22,4 +22,5 @@ func (void)
 {
   int a[4096];
   blah (a);
+  return 0;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/large-frame.exp ./gdb/testsuite/gdb.base/large-frame.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/large-frame.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/large-frame.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/large-frame.h ./gdb/testsuite/gdb.base/large-frame.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/large-frame.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/large-frame.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ldbl_e308.c ./gdb/testsuite/gdb.base/ldbl_e308.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ldbl_e308.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ldbl_e308.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ldbl_e308.exp ./gdb/testsuite/gdb.base/ldbl_e308.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ldbl_e308.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ldbl_e308.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/libsegfault.exp ./gdb/testsuite/gdb.base/libsegfault.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/libsegfault.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/libsegfault.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/line65535.c ./gdb/testsuite/gdb.base/line65535.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/line65535.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/line65535.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,19 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+#line 65535 "line65535.c"
+int main() { return 0; }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/line65535.exp ./gdb/testsuite/gdb.base/line65535.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/line65535.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/line65535.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,28 @@
+# Copyright 2019-2021 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 tries to place a breakpoint on line 65535.
+# For the purpose of this test we are satisfied if the break
+# command succeeds, we will not try to actually run to that line.
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
+    return -1
+}
+
+gdb_test "break $srcfile:65535" \
+         ".*Breakpoint 1 at .*: file $srcfile, line 65535\\..*" \
+	 "break at line 65535"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/lineinc.exp ./gdb/testsuite/gdb.base/lineinc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/lineinc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/lineinc.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Test macro handling of #included files.
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/linespecs.exp ./gdb/testsuite/gdb.base/linespecs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/linespecs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/linespecs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/line-symtabs.c ./gdb/testsuite/gdb.base/line-symtabs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/line-symtabs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/line-symtabs.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/line-symtabs.exp ./gdb/testsuite/gdb.base/line-symtabs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/line-symtabs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/line-symtabs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Test handling of line symbol tables (non-primary symtabs).
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/line-symtabs.h ./gdb/testsuite/gdb.base/line-symtabs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/line-symtabs.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/line-symtabs.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/list-ambiguous0.c ./gdb/testsuite/gdb.base/list-ambiguous0.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/list-ambiguous0.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/list-ambiguous0.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/list-ambiguous1.c ./gdb/testsuite/gdb.base/list-ambiguous1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/list-ambiguous1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/list-ambiguous1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/list-ambiguous.exp ./gdb/testsuite/gdb.base/list-ambiguous.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/list-ambiguous.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/list-ambiguous.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -18,6 +18,10 @@
 
 standard_testfile list-ambiguous0.c list-ambiguous1.c
 
+# Set EDITOR to true to prevent that GDB's edit command starts an actual
+# editor.
+setenv EDITOR true
+
 if {[prepare_for_testing "failed to prepare" $testfile [list $srcfile $srcfile2] \
 	 {debug}]} {
     return -1
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/list.exp ./gdb/testsuite/gdb.base/list.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/list.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/list.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/list-missing-source.exp ./gdb/testsuite/gdb.base/list-missing-source.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/list-missing-source.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/list-missing-source.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -29,6 +29,7 @@ main ()
 }
 }
 close $fd
+set srcfile [remote_download host $srcfile]
 
 # Compile the source file.
 set options "debug"
@@ -39,7 +40,7 @@ if  { [gdb_compile "${srcfile}" "${binfi
 }
 
 # Now delete the source file.
-file delete $srcfile
+remote_file host delete $srcfile
 
 # Now start GDB, run to main and try to list the source.
 clean_restart ${binfile}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/load-command.c ./gdb/testsuite/gdb.base/load-command.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/load-command.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/load-command.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/load-command.exp ./gdb/testsuite/gdb.base/load-command.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/load-command.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/load-command.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/logical.exp ./gdb/testsuite/gdb.base/logical.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/logical.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/logical.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/longest-types.c ./gdb/testsuite/gdb.base/longest-types.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/longest-types.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/longest-types.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/longest-types.exp ./gdb/testsuite/gdb.base/longest-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/longest-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/longest-types.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/long-inferior-output.c ./gdb/testsuite/gdb.base/long-inferior-output.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/long-inferior-output.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/long-inferior-output.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/long-inferior-output.exp ./gdb/testsuite/gdb.base/long-inferior-output.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/long-inferior-output.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/long-inferior-output.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/longjmp.c ./gdb/testsuite/gdb.base/longjmp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/longjmp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/longjmp.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/longjmp.exp ./gdb/testsuite/gdb.base/longjmp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/longjmp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/longjmp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/long_long.c ./gdb/testsuite/gdb.base/long_long.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/long_long.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/long_long.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 1999-2020 Free Software Foundation, Inc.
+   Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/long_long.exp ./gdb/testsuite/gdb.base/long_long.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/long_long.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/long_long.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/m32rovly.c ./gdb/testsuite/gdb.base/m32rovly.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/m32rovly.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/m32rovly.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,225 +0,0 @@
-
-/*
- * Ovlymgr.c -- Runtime Overlay Manager for the GDB testsuite.
- */
-
-#include "ovlymgr.h"
-
-/* Local functions and data: */
-
-extern unsigned long _ovly_table[][4];
-extern unsigned long _novlys __attribute__ ((section (".data")));
-enum ovly_index { VMA, SIZE, LMA, MAPPED};
-
-static void ovly_copy (unsigned long dst, unsigned long src, long size);
-
-/* Flush the data and instruction caches at address START for SIZE bytes.
-   Support for each new port must be added here.  */
-/* FIXME: Might be better to have a standard libgloss function that
-   ports provide that we can then use.  Use libgloss instead of newlib
-   since libgloss is the one intended to handle low level system issues.
-   I would suggest something like _flush_cache to avoid the user's namespace
-   but not be completely obscure as other things may need this facility.  */
- 
-static void
-FlushCache (void)
-{
-#ifdef __M32R__
-  volatile char *mspr = (char *) 0xfffffff7;
-  *mspr = 1;
-#endif
-}
-
-/* OverlayLoad:
- * Copy the overlay into its runtime region,
- * and mark the overlay as "mapped".
- */
-
-bool
-OverlayLoad (unsigned long ovlyno)
-{
-  unsigned long i;
-
-  if (ovlyno < 0 || ovlyno >= _novlys)
-    exit (-1);	/* fail, bad ovly number */
-
-  if (_ovly_table[ovlyno][MAPPED])
-    return TRUE;	/* this overlay already mapped -- nothing to do! */
-
-  for (i = 0; i < _novlys; i++)
-    if (i == ovlyno)
-      _ovly_table[i][MAPPED] = 1;	/* this one now mapped */
-    else if (_ovly_table[i][VMA] == _ovly_table[ovlyno][VMA])
-      _ovly_table[i][MAPPED] = 0;	/* this one now un-mapped */
-
-  ovly_copy (_ovly_table[ovlyno][VMA], 
-	     _ovly_table[ovlyno][LMA], 
-	     _ovly_table[ovlyno][SIZE]);
-
-  FlushCache ();
-
-  return TRUE;
-}
-
-/* OverlayUnload:
- * Copy the overlay back into its "load" region.
- * Does NOT mark overlay as "unmapped", therefore may be called
- * more than once for the same mapped overlay.
- */
- 
-bool
-OverlayUnload (unsigned long ovlyno)
-{
-  if (ovlyno < 0 || ovlyno >= _novlys)
-    exit (-1);  /* fail, bad ovly number */
- 
-  if (!_ovly_table[ovlyno][MAPPED])
-    exit (-1);  /* error, can't copy out a segment that's not "in" */
- 
-  ovly_copy (_ovly_table[ovlyno][LMA], 
-	     _ovly_table[ovlyno][VMA],
-	     _ovly_table[ovlyno][SIZE]);
-
-  return TRUE;
-}
-
-#ifdef __D10V__
-#define IMAP0       (*(short *)(0xff00))
-#define IMAP1       (*(short *)(0xff02))
-#define DMAP        (*(short *)(0xff04))
-
-static void
-D10VTranslate (unsigned long logical,
-	       short *dmap,
-	       unsigned long **addr)
-{
-  unsigned long physical;
-  unsigned long seg;
-  unsigned long off;
-
-  /* to access data, we use the following mapping 
-     0x00xxxxxx: Logical data address segment        (DMAP translated memory)
-     0x01xxxxxx: Logical instruction address segment (IMAP translated memory)
-     0x10xxxxxx: Physical data memory segment        (On-chip data memory)
-     0x11xxxxxx: Physical instruction memory segment (On-chip insn memory)
-     0x12xxxxxx: Phisical unified memory segment     (Unified memory)
-     */
-
-  /* Addresses must be correctly aligned */
-  if (logical & (sizeof (**addr) - 1))
-    exit (-1);
-
-  /* If the address is in one of the two logical address spaces, it is
-     first translated into a physical address */
-  seg = (logical >> 24);
-  off = (logical & 0xffffffL);
-  switch (seg) 
-      {
-      case 0x00: /* in logical data address segment */
-	if (off <= 0x7fffL)
-	  physical = (0x10L << 24) + off;
-	else
-	  /* Logical address out side of on-chip segment, not
-             supported */
-	  exit (-1);
-	break;
-      case 0x01: /* in logical instruction address segment */
-	{
-	  short map;
-	  if (off <= 0x1ffffL)
-	    map = IMAP0;
-	  else if (off <= 0x3ffffL)
-	    map = IMAP1;
-	  else
-	    /* Logical address outside of IMAP[01] segment, not
-	       supported */
-	    exit (-1);
-	  if (map & 0x1000L)
-	    {
-	    /* Instruction memory */
-	      physical = (0x11L << 24) | off;
-	    }
-	  else
-	    {
-	    /* Unified memory */
-	      physical = ((map & 0x7fL) << 17) + (off & 0x1ffffL);
-	      if (physical > 0xffffffL)
-		/* Address outside of unified address segment */
-		exit (-1);
-	      physical |= (0x12L << 24);
-	    }
-	  break;
-	}
-      case 0x10:
-      case 0x11:
-      case 0x12:
-	physical = logical;
-	break;
-      default:
-	exit (-1);	/* error */
-      }
-
-  seg = (physical >> 24);
-  off = (physical & 0xffffffL);
-  switch (seg) 
-    {
-    case 0x10:	/* dst is a 15 bit offset into the on-chip memory */
-      *dmap = 0;
-      *addr = (long *) (0x0000 + ((short)off & 0x7fff));
-      break;
-    case 0x11:	/* dst is an 18-bit offset into the on-chip
-		   instruction memory */
-      *dmap = 0x1000L | ((off & 0x3ffffL) >> 14);
-      *addr = (long *) (0x8000 + ((short)off & 0x3fff));
-      break;
-    case 0x12:	/* dst is a 24-bit offset into unified memory */
-      *dmap = off >> 14;
-      *addr = (long *) (0x8000 + ((short)off & 0x3fff));
-      break;
-    default:
-      exit (-1);	/* error */
-    }
-}
-#endif /* __D10V__ */
-
-static void
-ovly_copy (unsigned long dst, unsigned long src, long size)
-{
-#ifdef  __M32R__
-  memcpy ((void *) dst, (void *) src, size);
-  return;
-#endif /* M32R */
-
-#ifdef  __D10V__
-  unsigned long *s, *d, tmp;
-  short dmap_src, dmap_dst;
-  short dmap_save;
-
-  /* all section sizes should by multiples of 4 bytes */
-  dmap_save = DMAP;
-
-  D10VTranslate (src, &dmap_src, &s);
-  D10VTranslate (dst, &dmap_dst, &d);
-
-  while (size > 0)
-    {
-      /* NB: Transfer 4 byte (long) quantites, problems occure
-	 when only two bytes are transfered */
-      DMAP = dmap_src;
-      tmp = *s;
-      DMAP = dmap_dst;
-      *d = tmp; 
-      d++;
-      s++;
-      size -= sizeof (tmp);
-      src += sizeof (tmp);
-      dst += sizeof (tmp);
-      if ((src & 0x3fff) == 0)
-	D10VTranslate (src, &dmap_src, &s);
-      if ((dst & 0x3fff) == 0)
-	D10VTranslate (dst, &dmap_dst, &d);
-    }
-  DMAP = dmap_save;
-#endif /* D10V */
-}
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/macscp.exp ./gdb/testsuite/gdb.base/macscp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/macscp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/macscp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Test macro scoping.
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/main-psymtab.exp ./gdb/testsuite/gdb.base/main-psymtab.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/main-psymtab.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/main-psymtab.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,34 @@
+# Copyright 2020-2021 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/>.
+
+standard_testfile persistent-lang.cc
+
+if {[build_executable "failed to prepare" $testfile $srcfile debug]} {
+    return -1
+}
+
+clean_restart
+
+set auto_cpp \
+    {The current source language is "auto; currently c\+\+"\.}
+
+gdb_load ${binfile}
+gdb_test "show language" $auto_cpp \
+    "language auto/c++ after load"
+
+# Verify that partial symtab expansion has not taken place for
+# persistent-lang.cc
+
+verify_psymtab_expanded persistent-lang.cc no
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint.exp ./gdb/testsuite/gdb.base/maint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/maint.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
@@ -200,7 +200,7 @@ if [istarget "*-*-cygwin*"] {
 
 send_gdb "maint print statistics\n"
 gdb_expect  {
-    -re "Statistics for\[^\n\r\]*maint\[^\n\r\]*:\r\n  Number of \"minimal\" symbols read: $decimal\r\n(  Number of \"partial\" symbols read: $decimal\r\n)?  Number of \"full\" symbols read: $decimal\r\n  Number of \"types\" defined: $decimal\r\n(  Number of psym tables \\(not yet expanded\\): $decimal\r\n)?(  Number of read CUs: $decimal\r\n  Number of unread CUs: $decimal\r\n)?  Number of symbol tables: $decimal\r\n  Number of symbol tables with line tables: $decimal\r\n  Number of symbol tables with blockvectors: $decimal\r\n  Total memory used for objfile obstack: $decimal\r\n  Total memory used for BFD obstack: $decimal\r\n  Total memory used for psymbol cache: $decimal\r\n  Total memory used for macro cache: $decimal\r\n  Total memory used for file name cache: $decimal\r\n" {
+    -re "Statistics for\[^\n\r\]*maint\[^\n\r\]*:\r\n  Number of \"minimal\" symbols read: $decimal\r\n(  Number of \"partial\" symbols read: $decimal\r\n)?  Number of \"full\" symbols read: $decimal\r\n  Number of \"types\" defined: $decimal\r\n(  Number of psym tables \\(not yet expanded\\): $decimal\r\n)?(  Number of read CUs: $decimal\r\n  Number of unread CUs: $decimal\r\n)?  Number of symbol tables: $decimal\r\n  Number of symbol tables with line tables: $decimal\r\n  Number of symbol tables with blockvectors: $decimal\r\n  Total memory used for objfile obstack: $decimal\r\n  Total memory used for BFD obstack: $decimal\r\n  Total memory used for psymbol cache: $decimal\r\n  Total memory used for string cache: $decimal\r\n" {
 	gdb_expect {
 	    -re "$gdb_prompt $" {
 		pass "maint print statistics"
@@ -215,7 +215,7 @@ gdb_expect  {
 # There aren't any ...
 gdb_test_no_output "maint print dummy-frames"
 
-send_gdb "maint print objfiles\n"
+
 
 # To avoid timeouts, we avoid expects with many .* patterns that match
 # many lines.  Instead, we keep track of which milestones we've seen
@@ -224,31 +224,24 @@ send_gdb "maint print objfiles\n"
 set header 0
 set psymtabs 0
 set symtabs 0
-set keep_looking 1
-
-while {$keep_looking} {
-    gdb_expect  {
-
-	-re "\r\n" {
-	    set output $expect_out(buffer)
-	    if {[regexp ".*Object file.*maint($EXEEXT)?:  Objfile at ${hex}" $output]} {
-		set header 1
-	    }
-	    if {[regexp ".*Psymtabs:\[\r\t \]+\n" $output]} {
-		set psymtabs 1
-	    }
-	    if {[regexp ".*Symtabs:\[\r\t \]+\n" $output]} {
-		set symtabs 1
-	    }
-	}
-
-	-re ".*$gdb_prompt $" { 
-	    set keep_looking 0
-	}
-	timeout { 
-	    fail "(timeout) maint print objfiles" 
-	    set keep_looking 0
-	}
+gdb_test_multiple "maint print objfiles" "" -lbl {
+    -re "\r\nObject file.*maint($EXEEXT)?:  Objfile at ${hex}" {
+	set header 1
+	exp_continue
+    }
+    -re "\r\nPsymtabs:\[\r\t \]+" {
+	set psymtabs 1
+	exp_continue
+    }
+    -re "\r\nSymtabs:\[\r\t \]+\n" {
+	set symtabs 1
+	exp_continue
+    }
+    -re " at $hex," {
+	exp_continue
+    }
+    -re -wrap "" {
+	pass $gdb_test_name
     }
 }
 
@@ -494,22 +487,22 @@ gdb_test_multiple "maint info breakpoint
 }
 
 gdb_test "maint print" \
-    "\"maintenance print\" must be followed by the name of a print command\\.\r\nList.*unambiguous\\..*" \
+    "List.*unambiguous\\..*" \
     "maint print w/o args" 
 
 gdb_test "maint info" \
-    "\"maintenance info\" must be followed by the name of an info command\\.\r\nList.*unambiguous\\..*" \
+    "List.*unambiguous\\..*" \
     "maint info w/o args"
 
 gdb_test "maint" \
-    "\"maintenance\" must be followed by the name of a maintenance command\\.\r\nList.*unambiguous\\..*" \
+    "List.*unambiguous\\..*" \
     "maint w/o args"
 
 # Test that "main info line-table" w/o a file name shows the symtab for
 # $srcfile.
 set saw_srcfile 0
-set test "maint info line-table w/o a file name"
-gdb_test_multiple "maint info line-table" $test {
+gdb_test_multiple "maint info line-table" \
+    "maint info line-table w/o a file name" {
     -re "symtab: \[^\n\r\]+${srcfile} \\(\\(struct symtab \\*\\) $hex\\)\r\nlinetable: \\(\\(struct linetable \\*\\) $hex\\):\r\nINDEX\[ \t\]+LINE\[ \t\]+ADDRESS" {
 	set saw_srcfile 1
 	exp_continue
@@ -518,7 +511,11 @@ gdb_test_multiple "maint info line-table
 	# Match each symtab to avoid overflowing expect's buffer.
 	exp_continue
     }
-    -re "$decimal\[ \t\]+$decimal\[ \t\]+$hex\r\n" {
+    -re "symtab: \[^\n\r\]+ \\(\\(struct symtab \\*\\) $hex\\)\r\nlinetable: \\(\\(struct linetable \\*\\) 0x0\\):\r\nNo line table.\r\n" {
+	# For symtabs with no linetable.
+	exp_continue
+    }
+    -re "^$decimal\[ \t\]+$decimal\[ \t\]+$hex\r\n" {
 	# Line table entries can be long too:
 	#
 	#  INDEX    LINE ADDRESS
@@ -531,13 +528,17 @@ gdb_test_multiple "maint info line-table
 	#  6          45 0x0000000000400740
 	#  (...)
 	#  454       129 0x00007ffff7df1d28
-	#  455         0 0x00007ffff7df1d3f
+	#  455       END 0x00007ffff7df1d3f
 	#
 	# Match each line to avoid overflowing expect's buffer.
 	exp_continue
     }
-    -re "$gdb_prompt $" {
-	gdb_assert $saw_srcfile $test
+    -re "^$decimal\[ \t\]+END\[ \t\]+$hex\r\n" {
+	# Matches an end marker in the above.
+	exp_continue
+    }
+    -re "^$gdb_prompt $" {
+	gdb_assert $saw_srcfile $gdb_test_name
     }
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint-expand-symbols-header-file.c ./gdb/testsuite/gdb.base/maint-expand-symbols-header-file.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint-expand-symbols-header-file.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/maint-expand-symbols-header-file.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,26 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <stdio.h>
+#include "maint-expand-symbols-header-file.h"
+
+int
+main (void)
+{
+  printf ("hello: %s\n", foo ());
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint-expand-symbols-header-file.exp ./gdb/testsuite/gdb.base/maint-expand-symbols-header-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint-expand-symbols-header-file.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/maint-expand-symbols-header-file.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,52 @@
+# Copyright 2020-2021 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-case to verify that symbol-less symtabs are expanded by
+# "maint expand-symtabs".
+
+standard_testfile .c
+
+if {[build_executable "failed to prepare" $testfile \
+	 $srcfile {debug nowarnings}]} {
+    return -1
+}
+clean_restart
+
+# Make sure that no symtabs are expanded, by setting language before
+# loading exec.
+gdb_test_no_output "set language c"
+gdb_load ${binfile}
+
+set test "verify no symtabs are expanded"
+if { [readnow] } {
+    unsupported $test
+    return -1
+}
+gdb_test_no_output "maint info symtabs" $test
+
+# Expand the header file symtab.
+gdb_test_no_output "maint expand-symtabs maint-expand-symbols-header-file.h"
+
+# Check that the include symtab was in fact expanded.
+set file_re "\[^\r\n\]*/maint-expand-symbols-header-file.h"
+gdb_test "maint info symtabs" \
+    "\r\n\t{ symtab $file_re \\(\\(struct symtab \\*\\) $hex\\)\r\n.*" \
+    "check header file psymtab expansion"
+
+# Check that the symtab the include symtab was referring to was expanded.
+set file_re "\[^\r\n\]*/maint-expand-symbols-header-file.c"
+gdb_test "maint info symtabs" \
+    "\r\n\t{ symtab $file_re \\(\\(struct symtab \\*\\) $hex\\)\r\n.*" \
+    "check source file psymtab expansion"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint-expand-symbols-header-file.h ./gdb/testsuite/gdb.base/maint-expand-symbols-header-file.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint-expand-symbols-header-file.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/maint-expand-symbols-header-file.h	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+inline static const char*
+foo (void)
+{
+  return "foo";
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint-target-async-off.c ./gdb/testsuite/gdb.base/maint-target-async-off.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint-target-async-off.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/maint-target-async-off.c	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main (void)
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint-target-async-off.exp ./gdb/testsuite/gdb.base/maint-target-async-off.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/maint-target-async-off.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/maint-target-async-off.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,41 @@
+# Copyright 2020-2021 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/>.
+
+# Verify that debugging with "maintenance target-async off" works somewhat.  At
+# least running to main and to the end of the program.
+
+standard_testfile
+
+save_vars { GDBFLAGS } {
+    # Enable target-async off this way, because with board
+    # native-extended-gdbserver, the remote target is already open when
+    # returning from prepare_for_testing, and that would be too late to toggle
+    # it.
+    append GDBFLAGS { -ex "maintenance set target-async off" }
+
+    if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } {
+	return
+    }
+}
+
+# Make sure our command-line flag worked.
+gdb_test "maintenance show target-async" "Controlling the inferior in asynchronous mode is off\\."
+
+if { ![runto_main] } {
+    fail "can't run to main"
+    return
+}
+
+gdb_continue_to_end
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/many-completions.exp ./gdb/testsuite/gdb.base/many-completions.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/many-completions.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/many-completions.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,92 @@
+# Copyright 2020-2021 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 the case where we have so many completions that we require the
+# completions hash table within GDB to grow.  Make sure that afte the
+# hash table has grown we try to add duplicate entries into the
+# hash. This checks that GDB doesn't corrupt the hash table when
+# resizing it.
+#
+# In this case we create a test with more functions than the default
+# number of entires in the completion hash table (which is 200), then
+# complete on all function names.
+#
+# GDB will add all the function names from the DWARF, and then from
+# the ELF symbol table, this ensures that we should have duplicates
+# added after resizing the table.
+
+# Create a test source file and return the name of the file.  COUNT is
+# the number of dummy functions to create, this should be more than
+# the default number of entries in the completion hash table within
+# GDB (see gdb/completer.c).
+proc prepare_test_source_file { count } {
+    global gdb_test_file_name
+
+    set filename [standard_output_file "$gdb_test_file_name.c"]
+    set outfile [open $filename w]
+
+    puts $outfile "
+#define MAKE_FUNC(NUM) \\
+  void                 \\
+  func_ ## NUM (void)  \\
+  { /* Nothing.  */ }
+
+#define CALL_FUNC(NUM) \\
+  func_ ## NUM ()
+"
+
+    for { set i 0 } { $i < $count } { incr i } {
+	puts $outfile "MAKE_FUNC ([format {%03d} $i])"
+    }
+
+    puts $outfile "\nint\nmain ()\n{"
+    for { set i 0 } { $i < $count } { incr i } {
+	puts $outfile "  CALL_FUNC ([format {%03d} $i]);"
+    }
+
+    puts $outfile "  return 0;\n}"
+    close $outfile
+
+    return $filename
+}
+
+# Build a source file and compile it.
+set filename [prepare_test_source_file 250]
+standard_testfile $filename
+if {[prepare_for_testing "failed to prepare" "$testfile" $srcfile \
+	 { debug }]} {
+    return -1
+}
+
+# Start the test.
+if {![runto_main]} {
+    fail "couldn't run to main"
+    return
+}
+
+# We don't want to stop gathering completions too early.
+gdb_test_no_output "set max-completions unlimited"
+
+# Collect all possible completions, and check for duplictes.
+set completions [capture_command_output "complete break func_" ""]
+set duplicates 0
+foreach {-> name} [regexp -all -inline -line {^break (\w+\S*)} $completions] {
+    incr all_funcs($name)
+    if { $all_funcs($name) > 1 } {
+	incr duplicates
+	verbose -log "Duplicate entry for '$name' found"
+    }
+}
+gdb_assert { $duplicates == 0 } "duplicate check"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/many-headers.c ./gdb/testsuite/gdb.base/many-headers.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/many-headers.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/many-headers.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/many-headers.exp ./gdb/testsuite/gdb.base/many-headers.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/many-headers.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/many-headers.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -51,17 +51,26 @@ if { "$msg" != "" } {
     return -1
 }
 
+set cmd \
+    [concat \
+	 "(" \
+	 "ulimit -s $stack_limit;" \
+	 "$GDB $INTERNAL_GDBFLAGS $GDBFLAGS -batch -core=$corefile" \
+	 ")"]
+verbose -log $cmd
+
 # Run gdb with stack limit
+set output [standard_output_file OUTPUT]
 catch {
-    system [concat \
-		"(" \
-		"ulimit -s $stack_limit;" \
-		"$GDB $INTERNAL_GDBFLAGS $GDBFLAGS -batch -core=$corefile" \
-		")"]
+    system "$cmd > $output 2>&1"
 } msg
+verbose -log [exec cat $output]
+file delete $output
+
 set test "read core file"
 if { "$msg" == "" } {
     pass "$test"
 } else {
+    verbose -log $msg
     fail "$test"
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-depth.c ./gdb/testsuite/gdb.base/max-depth.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-depth.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/max-depth.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-depth-c++.exp ./gdb/testsuite/gdb.base/max-depth-c++.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-depth-c++.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/max-depth-c++.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,22 @@
+# Copyright 2019-2021 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/>.
+
+# Only test C++ if we are able.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang c++
+
+source $srcdir/$subdir/max-depth.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-depth-c.exp ./gdb/testsuite/gdb.base/max-depth-c.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-depth-c.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/max-depth-c.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,18 @@
+# Copyright 2019-2021 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/>.
+
+set lang {c}
+
+source $srcdir/$subdir/max-depth.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-depth.exp ./gdb/testsuite/gdb.base/max-depth.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-depth.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/max-depth.exp	1970-01-01 00:00:00.000000000 +0000
@@ -1,168 +0,0 @@
-# Copyright 2019-2020 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/>.
-
-# Tests GDB's handling of 'set print max-depth'.
-
-# Only test C++ if we are able.  Always use C.
-if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
-    set lang {c}
-} else {
-    set lang {c c++}
-}
-
-foreach l $lang {
-    set dir "$l"
-    remote_exec host "rm -rf [standard_output_file ${dir}]"
-    remote_exec host "mkdir -p [standard_output_file ${dir}]"
-}
-
-proc compile_and_run_tests { lang } {
-    global testfile
-    global srcfile
-    global binfile
-    global hex
-
-    standard_testfile .c
-
-    # Create the additional flags.
-    set flags "debug"
-    lappend flags $lang
-    if { "$lang" == "c++" } {
-	lappend flags "additional_flags=-std=c++11"
-    }
-
-    set dir "$lang"
-    set binfile [standard_output_file ${dir}/${testfile}]
-    if { [prepare_for_testing "failed to prepare" "${binfile}" "${srcfile}" "${flags}"] } {
-	return 0
-    }
-
-    # Advance to main.
-    if { ![runto_main] } then {
-	fail "can't run to main"
-	return 0
-    }
-
-    # The max-depth setting has no effect as the anonymous scopes are
-    # ignored and the members are aggregated into the parent scope.
-    gdb_print_expr_at_depths "s1" {"{...}" \
-				       "{x = 0, y = 0}"\
-				       "{x = 0, y = 0}"}
-
-    gdb_print_expr_at_depths "s2" {"{...}" \
-				       "{x = 0, y = 0, {z = 0, a = 0}}" \
-				       "{x = 0, y = 0, {z = 0, a = 0}}"}
-
-    gdb_print_expr_at_depths "s3" {"{...}" \
-				       "{x = 0, y = 0, {z = 0, a = 0, {b = 0, c = 0}}}" \
-				       "{x = 0, y = 0, {z = 0, a = 0, {b = 0, c = 0}}}" \
-				       "{x = 0, y = 0, {z = 0, a = 0, {b = 0, c = 0}}}"}
-
-    # Increasing max-depth unfurls more of the object.
-    gdb_print_expr_at_depths "s4" {"{...}" \
-				       "{x = 0, y = 0, l1 = {...}}" \
-				       "{x = 0, y = 0, l1 = {x = 0, y = 0, l2 = {...}}}" \
-				       "{x = 0, y = 0, l1 = {x = 0, y = 0, l2 = {x = 0, y = 0}}}"}
-
-    # Check handling of unions, in this case 'raw' is printed instead of
-    # just {...} as this is not useful.
-    gdb_print_expr_at_depths "s5" {"{...}" \
-				       "{{raw = {...}, {x = 0, y = 0, z = 0}}}" \
-				       "{{raw = \\{0, 0, 0\\}, {x = 0, y = 0, z = 0}}}"}
-
-    # Check handling of typedefs.
-    gdb_print_expr_at_depths "s6" {"{...}" \
-				       "{{raw = {...}, {x = 0, y = 0, z = 0}}}" \
-				       "{{raw = \\{0, 0, 0\\}, {x = 0, y = 0, z = 0}}}"}
-
-    # Multiple anonymous structures in parallel.
-    gdb_print_expr_at_depths "s7" {"{...}" \
-				       "{{x = 0, y = 0}, {z = 0, a = 0}, {b = 0, c = 0}}" \
-				       "{{x = 0, y = 0}, {z = 0, a = 0}, {b = 0, c = 0}}"}
-
-    # Flip flop between named and anonymous.  Expected to unfurl to the
-    # first non-anonymous type.
-    gdb_print_expr_at_depths "s8" {"{...}" \
-				       "{x = 0, y = 0, d1 = {...}}" \
-				       "{x = 0, y = 0, d1 = {z = 0, a = 0, {b = 0, c = 0}}}"}
-
-    # Imbalanced tree, this will unfurl one size more than the other as
-    # one side has more anonymous levels.
-    gdb_print_expr_at_depths "s9" {"{...}" \
-				       "{x = 0, y = 0, {k = 0, j = 0, d1 = {...}}, d2 = {...}}" \
-				       "{x = 0, y = 0, {k = 0, j = 0, d1 = {z = 0, a = 0, {b = 0, c = 0}}}, d2 = {z = 0, a = 0, {b = 0, c = 0}}}"}
-
-    # Arrays are treated as an extra level, while scalars are not.
-    gdb_print_expr_at_depths "s10" {"{...}" \
-					"{x = {...}, y = 0, {k = {...}, j = 0, d1 = {...}}, d2 = {...}}" \
-					"{x = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, y = 0, {k = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, j = 0, d1 = {z = 0, a = 0, {b = {...}, c = 0}}}, d2 = {z = 0, a = 0, {b = {...}, c = 0}}}" \
-					"{x = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, y = 0, {k = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, j = 0, d1 = {z = 0, a = 0, {b = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, c = 0}}}, d2 = {z = 0, a = 0, {b = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, c = 0}}}"}
-
-    # Strings are treated as scalars.
-    gdb_print_expr_at_depths "s11" {"{...}" \
-					"{x = 0, s = \"\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\", {z = 0, a = 0}}"}
-
-
-    if { $lang == "c++" } {
-	gdb_print_expr_at_depths "c1" {"{...}" \
-					   "{c1 = 1}" }
-	gdb_print_expr_at_depths "c2" { "{...}" "{c2 = 2}" }
-	gdb_print_expr_at_depths "c3" { "{...}" \
-					    "{<C2> = {...}, c3 = 3}" \
-					    "{<C2> = {c2 = 2}, c3 = 3}" }
-	gdb_print_expr_at_depths "c4" { "{...}" "{c4 = 4}" }
-	gdb_print_expr_at_depths "c5" { "{...}" \
-					    "{<C4> = {...}, c5 = 5}" \
-					    "{<C4> = {c4 = 4}, c5 = 5}" }
-	gdb_print_expr_at_depths "c6" { "{...}" \
-					    "{<C5> = {...}, c6 = 6}" \
-					    "{<C5> = {<C4> = {...}, c5 = 5}, c6 = 6}" \
-					    "{<C5> = {<C4> = {c4 = 4}, c5 = 5}, c6 = 6}" }
-	gdb_print_expr_at_depths "c7" { "{...}" \
-					    "{<C1> = {...}, <C3> = {...}, <C6> = {...}, c7 = 7}" \
-					    "{<C1> = {c1 = 1}, <C3> = {<C2> = {...}, c3 = 3}, <C6> = {<C5> = {...}, c6 = 6}, c7 = 7}" \
-					    "{<C1> = {c1 = 1}, <C3> = {<C2> = {c2 = 2}, c3 = 3}, <C6> = {<C5> = {<C4> = {...}, c5 = 5}, c6 = 6}, c7 = 7}" \
-					    "{<C1> = {c1 = 1}, <C3> = {<C2> = {c2 = 2}, c3 = 3}, <C6> = {<C5> = {<C4> = {c4 = 4}, c5 = 5}, c6 = 6}, c7 = 7}" }
-
-	gdb_print_expr_at_depths "v1" [list "{...}" "{v1 = 1}" ]
-	gdb_print_expr_at_depths "v2" [list "{...}" \
-					    "{<V1> = {...}, _vptr.V2 = $hex <VTT for V2>, v2 = 2}" \
-					    "{<V1> = {v1 = 1}, _vptr.V2 = $hex <VTT for V2>, v2 = 2}" ]
-	gdb_print_expr_at_depths "v3" [list "{...}" \
-					    "{<V1> = {...}, _vptr.V3 = $hex <VTT for V3>, v3 = 3}" \
-					    "{<V1> = {v1 = 1}, _vptr.V3 = $hex <VTT for V3>, v3 = 3}" ]
-	gdb_print_expr_at_depths "v4" [list "{...}" \
-					    "{<V2> = {...}, _vptr.V4 = $hex <vtable for V4\[^>\]+>, v4 = 4}" \
-					    "{<V2> = {<V1> = {...}, _vptr.V2 = $hex <VTT for V4>, v2 = 2}, _vptr.V4 = $hex <vtable for V4\[^>\]+>, v4 = 4}" \
-					    "{<V2> = {<V1> = {v1 = 1}, _vptr.V2 = $hex <VTT for V4>, v2 = 2}, _vptr.V4 = $hex <vtable for V4\[^>\]+>, v4 = 4}" ]
-	gdb_print_expr_at_depths "v5" [list "{...}" \
-					    "{<V2> = {...}, _vptr.V5 = $hex <vtable for V5\[^>\]+>, v5 = 1}" \
-					    "{<V2> = {<V1> = {...}, _vptr.V2 = $hex <VTT for V5>, v2 = 2}, _vptr.V5 = $hex <vtable for V5\[^>\]+>, v5 = 1}" \
-					    "{<V2> = {<V1> = {v1 = 1}, _vptr.V2 = $hex <VTT for V5>, v2 = 2}, _vptr.V5 = $hex <vtable for V5\[^>\]+>, v5 = 1}" ]
-	gdb_print_expr_at_depths "v6" [list "{...}" \
-					    "{<V2> = {...}, <V3> = {...}, _vptr.V6 = $hex <vtable for V6\[^>\]+>, v6 = 1}" \
-					    "{<V2> = {<V1> = {...}, _vptr.V2 = $hex <vtable for V6\[^>\]+>, v2 = 2}, <V3> = {_vptr.V3 = $hex <VTT for V6>, v3 = 3}, _vptr.V6 = $hex <vtable for V6\[^>\]+>, v6 = 1}" \
-					    "{<V2> = {<V1> = {v1 = 1}, _vptr.V2 = $hex <vtable for V6\[^>\]+>, v2 = 2}, <V3> = {_vptr.V3 = $hex <VTT for V6>, v3 = 3}, _vptr.V6 = $hex <vtable for V6\[^>\]+>, v6 = 1}" ]
-	gdb_print_expr_at_depths "v7" [list "{...}" \
-					    "{<V4> = {...}, <V5> = {...}, <V6> = {...}, _vptr.V7 = $hex <vtable for V7\[^>\]+>, v7 = 1}" \
-					    "{<V4> = {<V2> = {...}, _vptr.V4 = $hex <vtable for V7\[^>\]+>, v4 = 4}, <V5> = {_vptr.V5 = $hex <vtable for V7\[^>\]+>, v5 = 1}, <V6> = {<V3> = {...}, _vptr.V6 = $hex <vtable for V7\[^>\]+>, v6 = 1}, _vptr.V7 = $hex <vtable for V7\[^>\]+>, v7 = 1}" \
-					    "{<V4> = {<V2> = {<V1> = {...}, _vptr.V2 = $hex <vtable for V7\[^>\]+>, v2 = 2}, _vptr.V4 = $hex <vtable for V7\[^>\]+>, v4 = 4}, <V5> = {_vptr.V5 = $hex <vtable for V7\[^>\]+>, v5 = 1}, <V6> = {<V3> = {_vptr.V3 = $hex <VTT for V7>, v3 = 3}, _vptr.V6 = $hex <vtable for V7\[^>\]+>, v6 = 1}, _vptr.V7 = $hex <vtable for V7\[^>\]+>, v7 = 1}" \
-					    "{<V4> = {<V2> = {<V1> = {v1 = 1}, _vptr.V2 = $hex <vtable for V7\[^>\]+>, v2 = 2}, _vptr.V4 = $hex <vtable for V7\[^>\]+>, v4 = 4}, <V5> = {_vptr.V5 = $hex <vtable for V7\[^>\]+>, v5 = 1}, <V6> = {<V3> = {_vptr.V3 = $hex <VTT for V7>, v3 = 3}, _vptr.V6 = $hex <vtable for V7\[^>\]+>, v6 = 1}, _vptr.V7 = $hex <vtable for V7\[^>\]+>, v7 = 1}" ]
-    }
-}
-
-foreach_with_prefix l $lang {
-    compile_and_run_tests $l
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-depth.exp.tcl ./gdb/testsuite/gdb.base/max-depth.exp.tcl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-depth.exp.tcl	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/max-depth.exp.tcl	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,151 @@
+# Copyright 2019-2021 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/>.
+
+# Tests GDB's handling of 'set print max-depth'.
+
+proc compile_and_run_tests { lang } {
+    global testfile
+    global srcfile
+    global binfile
+    global hex
+
+    standard_testfile max-depth.c
+
+    # Create the additional flags.
+    set flags "debug"
+    lappend flags $lang
+    if { "$lang" == "c++" } {
+	lappend flags "additional_flags=-std=c++11"
+    }
+
+    if { [prepare_for_testing "failed to prepare" "${binfile}" "${srcfile}" "${flags}"] } {
+	return 0
+    }
+
+    # Advance to main.
+    if { ![runto_main] } then {
+	fail "can't run to main"
+	return 0
+    }
+
+    # The max-depth setting has no effect as the anonymous scopes are
+    # ignored and the members are aggregated into the parent scope.
+    gdb_print_expr_at_depths "s1" {"{...}" \
+				       "{x = 0, y = 0}"\
+				       "{x = 0, y = 0}"}
+
+    gdb_print_expr_at_depths "s2" {"{...}" \
+				       "{x = 0, y = 0, {z = 0, a = 0}}" \
+				       "{x = 0, y = 0, {z = 0, a = 0}}"}
+
+    gdb_print_expr_at_depths "s3" {"{...}" \
+				       "{x = 0, y = 0, {z = 0, a = 0, {b = 0, c = 0}}}" \
+				       "{x = 0, y = 0, {z = 0, a = 0, {b = 0, c = 0}}}" \
+				       "{x = 0, y = 0, {z = 0, a = 0, {b = 0, c = 0}}}"}
+
+    # Increasing max-depth unfurls more of the object.
+    gdb_print_expr_at_depths "s4" {"{...}" \
+				       "{x = 0, y = 0, l1 = {...}}" \
+				       "{x = 0, y = 0, l1 = {x = 0, y = 0, l2 = {...}}}" \
+				       "{x = 0, y = 0, l1 = {x = 0, y = 0, l2 = {x = 0, y = 0}}}"}
+
+    # Check handling of unions, in this case 'raw' is printed instead of
+    # just {...} as this is not useful.
+    gdb_print_expr_at_depths "s5" {"{...}" \
+				       "{{raw = {...}, {x = 0, y = 0, z = 0}}}" \
+				       "{{raw = \\{0, 0, 0\\}, {x = 0, y = 0, z = 0}}}"}
+
+    # Check handling of typedefs.
+    gdb_print_expr_at_depths "s6" {"{...}" \
+				       "{{raw = {...}, {x = 0, y = 0, z = 0}}}" \
+				       "{{raw = \\{0, 0, 0\\}, {x = 0, y = 0, z = 0}}}"}
+
+    # Multiple anonymous structures in parallel.
+    gdb_print_expr_at_depths "s7" {"{...}" \
+				       "{{x = 0, y = 0}, {z = 0, a = 0}, {b = 0, c = 0}}" \
+				       "{{x = 0, y = 0}, {z = 0, a = 0}, {b = 0, c = 0}}"}
+
+    # Flip flop between named and anonymous.  Expected to unfurl to the
+    # first non-anonymous type.
+    gdb_print_expr_at_depths "s8" {"{...}" \
+				       "{x = 0, y = 0, d1 = {...}}" \
+				       "{x = 0, y = 0, d1 = {z = 0, a = 0, {b = 0, c = 0}}}"}
+
+    # Imbalanced tree, this will unfurl one size more than the other as
+    # one side has more anonymous levels.
+    gdb_print_expr_at_depths "s9" {"{...}" \
+				       "{x = 0, y = 0, {k = 0, j = 0, d1 = {...}}, d2 = {...}}" \
+				       "{x = 0, y = 0, {k = 0, j = 0, d1 = {z = 0, a = 0, {b = 0, c = 0}}}, d2 = {z = 0, a = 0, {b = 0, c = 0}}}"}
+
+    # Arrays are treated as an extra level, while scalars are not.
+    gdb_print_expr_at_depths "s10" {"{...}" \
+					"{x = {...}, y = 0, {k = {...}, j = 0, d1 = {...}}, d2 = {...}}" \
+					"{x = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, y = 0, {k = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, j = 0, d1 = {z = 0, a = 0, {b = {...}, c = 0}}}, d2 = {z = 0, a = 0, {b = {...}, c = 0}}}" \
+					"{x = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, y = 0, {k = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, j = 0, d1 = {z = 0, a = 0, {b = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, c = 0}}}, d2 = {z = 0, a = 0, {b = \\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\\}, c = 0}}}"}
+
+    # Strings are treated as scalars.
+    gdb_print_expr_at_depths "s11" {"{...}" \
+					"{x = 0, s = \"\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\", {z = 0, a = 0}}"}
+
+
+    if { $lang == "c++" } {
+	gdb_print_expr_at_depths "c1" {"{...}" \
+					   "{c1 = 1}" }
+	gdb_print_expr_at_depths "c2" { "{...}" "{c2 = 2}" }
+	gdb_print_expr_at_depths "c3" { "{...}" \
+					    "{<C2> = {...}, c3 = 3}" \
+					    "{<C2> = {c2 = 2}, c3 = 3}" }
+	gdb_print_expr_at_depths "c4" { "{...}" "{c4 = 4}" }
+	gdb_print_expr_at_depths "c5" { "{...}" \
+					    "{<C4> = {...}, c5 = 5}" \
+					    "{<C4> = {c4 = 4}, c5 = 5}" }
+	gdb_print_expr_at_depths "c6" { "{...}" \
+					    "{<C5> = {...}, c6 = 6}" \
+					    "{<C5> = {<C4> = {...}, c5 = 5}, c6 = 6}" \
+					    "{<C5> = {<C4> = {c4 = 4}, c5 = 5}, c6 = 6}" }
+	gdb_print_expr_at_depths "c7" { "{...}" \
+					    "{<C1> = {...}, <C3> = {...}, <C6> = {...}, c7 = 7}" \
+					    "{<C1> = {c1 = 1}, <C3> = {<C2> = {...}, c3 = 3}, <C6> = {<C5> = {...}, c6 = 6}, c7 = 7}" \
+					    "{<C1> = {c1 = 1}, <C3> = {<C2> = {c2 = 2}, c3 = 3}, <C6> = {<C5> = {<C4> = {...}, c5 = 5}, c6 = 6}, c7 = 7}" \
+					    "{<C1> = {c1 = 1}, <C3> = {<C2> = {c2 = 2}, c3 = 3}, <C6> = {<C5> = {<C4> = {c4 = 4}, c5 = 5}, c6 = 6}, c7 = 7}" }
+
+	gdb_print_expr_at_depths "v1" [list "{...}" "{v1 = 1}" ]
+	gdb_print_expr_at_depths "v2" [list "{...}" \
+					    "{<V1> = {...}, _vptr.V2 = $hex <VTT for V2>, v2 = 2}" \
+					    "{<V1> = {v1 = 1}, _vptr.V2 = $hex <VTT for V2>, v2 = 2}" ]
+	gdb_print_expr_at_depths "v3" [list "{...}" \
+					    "{<V1> = {...}, _vptr.V3 = $hex <VTT for V3>, v3 = 3}" \
+					    "{<V1> = {v1 = 1}, _vptr.V3 = $hex <VTT for V3>, v3 = 3}" ]
+	gdb_print_expr_at_depths "v4" [list "{...}" \
+					    "{<V2> = {...}, _vptr.V4 = $hex <vtable for V4\[^>\]+>, v4 = 4}" \
+					    "{<V2> = {<V1> = {...}, _vptr.V2 = $hex <VTT for V4>, v2 = 2}, _vptr.V4 = $hex <vtable for V4\[^>\]+>, v4 = 4}" \
+					    "{<V2> = {<V1> = {v1 = 1}, _vptr.V2 = $hex <VTT for V4>, v2 = 2}, _vptr.V4 = $hex <vtable for V4\[^>\]+>, v4 = 4}" ]
+	gdb_print_expr_at_depths "v5" [list "{...}" \
+					    "{<V2> = {...}, _vptr.V5 = $hex <vtable for V5\[^>\]+>, v5 = 1}" \
+					    "{<V2> = {<V1> = {...}, _vptr.V2 = $hex <VTT for V5>, v2 = 2}, _vptr.V5 = $hex <vtable for V5\[^>\]+>, v5 = 1}" \
+					    "{<V2> = {<V1> = {v1 = 1}, _vptr.V2 = $hex <VTT for V5>, v2 = 2}, _vptr.V5 = $hex <vtable for V5\[^>\]+>, v5 = 1}" ]
+	gdb_print_expr_at_depths "v6" [list "{...}" \
+					    "{<V2> = {...}, <V3> = {...}, _vptr.V6 = $hex <vtable for V6\[^>\]+>, v6 = 1}" \
+					    "{<V2> = {<V1> = {...}, _vptr.V2 = $hex <vtable for V6\[^>\]+>, v2 = 2}, <V3> = {_vptr.V3 = $hex <VTT for V6>, v3 = 3}, _vptr.V6 = $hex <vtable for V6\[^>\]+>, v6 = 1}" \
+					    "{<V2> = {<V1> = {v1 = 1}, _vptr.V2 = $hex <vtable for V6\[^>\]+>, v2 = 2}, <V3> = {_vptr.V3 = $hex <VTT for V6>, v3 = 3}, _vptr.V6 = $hex <vtable for V6\[^>\]+>, v6 = 1}" ]
+	gdb_print_expr_at_depths "v7" [list "{...}" \
+					    "{<V4> = {...}, <V5> = {...}, <V6> = {...}, _vptr.V7 = $hex <vtable for V7\[^>\]+>, v7 = 1}" \
+					    "{<V4> = {<V2> = {...}, _vptr.V4 = $hex <vtable for V7\[^>\]+>, v4 = 4}, <V5> = {_vptr.V5 = $hex <vtable for V7\[^>\]+>, v5 = 1}, <V6> = {<V3> = {...}, _vptr.V6 = $hex <vtable for V7\[^>\]+>, v6 = 1}, _vptr.V7 = $hex <vtable for V7\[^>\]+>, v7 = 1}" \
+					    "{<V4> = {<V2> = {<V1> = {...}, _vptr.V2 = $hex <vtable for V7\[^>\]+>, v2 = 2}, _vptr.V4 = $hex <vtable for V7\[^>\]+>, v4 = 4}, <V5> = {_vptr.V5 = $hex <vtable for V7\[^>\]+>, v5 = 1}, <V6> = {<V3> = {_vptr.V3 = $hex <VTT for V7>, v3 = 3}, _vptr.V6 = $hex <vtable for V7\[^>\]+>, v6 = 1}, _vptr.V7 = $hex <vtable for V7\[^>\]+>, v7 = 1}" \
+					    "{<V4> = {<V2> = {<V1> = {v1 = 1}, _vptr.V2 = $hex <vtable for V7\[^>\]+>, v2 = 2}, _vptr.V4 = $hex <vtable for V7\[^>\]+>, v4 = 4}, <V5> = {_vptr.V5 = $hex <vtable for V7\[^>\]+>, v5 = 1}, <V6> = {<V3> = {_vptr.V3 = $hex <VTT for V7>, v3 = 3}, _vptr.V6 = $hex <vtable for V7\[^>\]+>, v6 = 1}, _vptr.V7 = $hex <vtable for V7\[^>\]+>, v7 = 1}" ]
+    }
+}
+
+compile_and_run_tests $lang
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-value-size.c ./gdb/testsuite/gdb.base/max-value-size.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-value-size.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/max-value-size.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-value-size.exp ./gdb/testsuite/gdb.base/max-value-size.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/max-value-size.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/max-value-size.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/memattr.c ./gdb/testsuite/gdb.base/memattr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/memattr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/memattr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/memattr.exp ./gdb/testsuite/gdb.base/memattr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/memattr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/memattr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/mips_pro.exp ./gdb/testsuite/gdb.base/mips_pro.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/mips_pro.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/mips_pro.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/miscexprs.exp ./gdb/testsuite/gdb.base/miscexprs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/miscexprs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/miscexprs.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/morestack.c ./gdb/testsuite/gdb.base/morestack.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/morestack.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/morestack.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/morestack.exp ./gdb/testsuite/gdb.base/morestack.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/morestack.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/morestack.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
@@ -21,13 +21,17 @@ if {$gcc_compiled == 0} {
     return -1
 }
 
+if { [have_fuse_ld_gold] == 0} {
+    return -1
+}
+
 standard_testfile
 
 # -fuse-ld=gold is used for calling printf code built without -fsplit-stack
 # which could crash otherwise.  See GCC documentation of -fsplit-stack.
 set opts "additional_flags=-fsplit-stack"
-if { [prepare_for_testing "failed to prepare" ${testfile} $srcfile [list $opts additional_flags=-fuse-ld=gold]] \
-     && [prepare_for_testing "failed to prepare" ${testfile} $srcfile $opts] } {
+if { [prepare_for_testing "failed to prepare" ${testfile} $srcfile \
+	  [list $opts additional_flags=-fuse-ld=gold]] } {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/moribund-step.exp ./gdb/testsuite/gdb.base/moribund-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/moribund-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/moribund-step.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/msym-lang.c ./gdb/testsuite/gdb.base/msym-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/msym-lang.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/msym-lang.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/msym-lang.exp ./gdb/testsuite/gdb.base/msym-lang.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/msym-lang.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/msym-lang.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/msym-lang-main.c ./gdb/testsuite/gdb.base/msym-lang-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/msym-lang-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/msym-lang-main.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/multi-forks.c ./gdb/testsuite/gdb.base/multi-forks.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/multi-forks.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/multi-forks.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/multi-forks.exp ./gdb/testsuite/gdb.base/multi-forks.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/multi-forks.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/multi-forks.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2005-2020 Free Software Foundation, Inc.
+#   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/multi-line-starts-subshell.exp ./gdb/testsuite/gdb.base/multi-line-starts-subshell.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/multi-line-starts-subshell.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/multi-line-starts-subshell.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-addr.c ./gdb/testsuite/gdb.base/nested-addr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-addr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nested-addr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-addr.exp ./gdb/testsuite/gdb.base/nested-addr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-addr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nested-addr.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp1.c ./gdb/testsuite/gdb.base/nested-subp1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nested-subp1.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp1.exp ./gdb/testsuite/gdb.base/nested-subp1.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp1.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nested-subp1.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -24,6 +24,11 @@ standard_testfile
 
 set testcase "nested-subp1"
 
+if ![support_nested_function_tests] {
+    untested "compiler does not support nested functions"
+    return -1
+}
+
 if { [gdb_compile "${srcdir}/${subdir}/${testcase}.c" \
                   [standard_output_file "${testcase}"] \
                   executable \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp2.c ./gdb/testsuite/gdb.base/nested-subp2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nested-subp2.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp2.exp ./gdb/testsuite/gdb.base/nested-subp2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nested-subp2.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -24,6 +24,11 @@ standard_testfile
 
 set testcase "nested-subp2"
 
+if ![support_nested_function_tests] {
+    untested "compiler does not support nested functions"
+    return -1
+}
+
 if { [gdb_compile "${srcdir}/${subdir}/${testcase}.c" \
                   [standard_output_file "${testcase}"] \
                   executable \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp3.c ./gdb/testsuite/gdb.base/nested-subp3.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp3.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nested-subp3.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp3.exp ./gdb/testsuite/gdb.base/nested-subp3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nested-subp3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nested-subp3.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -24,6 +24,11 @@ standard_testfile
 
 set testcase "nested-subp3"
 
+if ![support_nested_function_tests] {
+    untested "compiler does not support nested functions"
+    return -1
+}
+
 if { [gdb_compile "${srcdir}/${subdir}/${testcase}.c" \
                   [standard_output_file "${testcase}"] \
                   executable \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui.c ./gdb/testsuite/gdb.base/new-ui.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/new-ui.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui-echo.c ./gdb/testsuite/gdb.base/new-ui-echo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui-echo.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/new-ui-echo.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui-echo.exp ./gdb/testsuite/gdb.base/new-ui-echo.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui-echo.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/new-ui-echo.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui.exp ./gdb/testsuite/gdb.base/new-ui.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/new-ui.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui-pending-input.c ./gdb/testsuite/gdb.base/new-ui-pending-input.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui-pending-input.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/new-ui-pending-input.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui-pending-input.exp ./gdb/testsuite/gdb.base/new-ui-pending-input.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/new-ui-pending-input.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/new-ui-pending-input.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nextoverexit.c ./gdb/testsuite/gdb.base/nextoverexit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nextoverexit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nextoverexit.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nextoverexit.exp ./gdb/testsuite/gdb.base/nextoverexit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nextoverexit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nextoverexit.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nodebug.exp ./gdb/testsuite/gdb.base/nodebug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nodebug.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nodebug.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nofield.c ./gdb/testsuite/gdb.base/nofield.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nofield.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nofield.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nofield.exp ./gdb/testsuite/gdb.base/nofield.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nofield.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nofield.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/noreturn-finish.c ./gdb/testsuite/gdb.base/noreturn-finish.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/noreturn-finish.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/noreturn-finish.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/noreturn-finish.exp ./gdb/testsuite/gdb.base/noreturn-finish.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/noreturn-finish.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/noreturn-finish.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/noreturn-return.c ./gdb/testsuite/gdb.base/noreturn-return.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/noreturn-return.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/noreturn-return.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/noreturn-return.exp ./gdb/testsuite/gdb.base/noreturn-return.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/noreturn-return.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/noreturn-return.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/normal.c ./gdb/testsuite/gdb.base/normal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/normal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/normal.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nostdlib.c ./gdb/testsuite/gdb.base/nostdlib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nostdlib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nostdlib.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nostdlib.exp ./gdb/testsuite/gdb.base/nostdlib.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/nostdlib.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/nostdlib.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/offsets.c ./gdb/testsuite/gdb.base/offsets.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/offsets.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/offsets.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/offsets.exp ./gdb/testsuite/gdb.base/offsets.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/offsets.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/offsets.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # Test big offsets
 
-# Copyright (c) 2014-2020 Free Software Foundation, Inc.
+# Copyright (c) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/opaque.exp ./gdb/testsuite/gdb.base/opaque.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/opaque.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/opaque.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/options.c ./gdb/testsuite/gdb.base/options.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/options.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/options.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/options.exp ./gdb/testsuite/gdb.base/options.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/options.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/options.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/osabi.exp ./gdb/testsuite/gdb.base/osabi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/osabi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/osabi.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/overlays.c ./gdb/testsuite/gdb.base/overlays.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/overlays.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/overlays.c	2021-05-21 01:57:24.000000000 +0000
@@ -3,10 +3,10 @@
 
 #include "ovlymgr.h"
 
-extern int foo PARAMS((int));
-extern int bar PARAMS((int));
-extern int baz PARAMS((int));
-extern int grbx PARAMS((int));
+extern int foo (int);
+extern int bar (int);
+extern int baz (int);
+extern int grbx (int);
 
 int main ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/overlays.exp ./gdb/testsuite/gdb.base/overlays.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/overlays.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/overlays.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ovlymgr.c ./gdb/testsuite/gdb.base/ovlymgr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ovlymgr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ovlymgr.c	2021-05-21 01:57:24.000000000 +0000
@@ -93,141 +93,8 @@ OverlayUnload (unsigned long ovlyno)
   return TRUE;
 }
 
-#ifdef __D10V__
-#define IMAP0       (*(short *)(0xff00))
-#define IMAP1       (*(short *)(0xff02))
-#define DMAP        (*(short *)(0xff04))
-
-static void
-D10VTranslate (unsigned long logical,
-	       short *dmap,
-	       unsigned long **addr)
-{
-  unsigned long physical;
-  unsigned long seg;
-  unsigned long off;
-
-  /* to access data, we use the following mapping 
-     0x00xxxxxx: Logical data address segment        (DMAP translated memory)
-     0x01xxxxxx: Logical instruction address segment (IMAP translated memory)
-     0x10xxxxxx: Physical data memory segment        (On-chip data memory)
-     0x11xxxxxx: Physical instruction memory segment (On-chip insn memory)
-     0x12xxxxxx: Phisical unified memory segment     (Unified memory)
-     */
-
-  /* Addresses must be correctly aligned */
-  if (logical & (sizeof (**addr) - 1))
-    exit (-1);
-
-  /* If the address is in one of the two logical address spaces, it is
-     first translated into a physical address */
-  seg = (logical >> 24);
-  off = (logical & 0xffffffL);
-  switch (seg) 
-      {
-      case 0x00: /* in logical data address segment */
-	if (off <= 0x7fffL)
-	  physical = (0x10L << 24) + off;
-	else
-	  /* Logical address out side of on-chip segment, not
-             supported */
-	  exit (-1);
-	break;
-      case 0x01: /* in logical instruction address segment */
-	{
-	  short map;
-	  if (off <= 0x1ffffL)
-	    map = IMAP0;
-	  else if (off <= 0x3ffffL)
-	    map = IMAP1;
-	  else
-	    /* Logical address outside of IMAP[01] segment, not
-	       supported */
-	    exit (-1);
-	  if (map & 0x1000L)
-	    {
-	    /* Instruction memory */
-	      physical = (0x11L << 24) | off;
-	    }
-	  else
-	    {
-	    /* Unified memory */
-	      physical = ((map & 0x7fL) << 17) + (off & 0x1ffffL);
-	      if (physical > 0xffffffL)
-		/* Address outside of unified address segment */
-		exit (-1);
-	      physical |= (0x12L << 24);
-	    }
-	  break;
-	}
-      case 0x10:
-      case 0x11:
-      case 0x12:
-	physical = logical;
-	break;
-      default:
-	exit (-1);	/* error */
-      }
-
-  seg = (physical >> 24);
-  off = (physical & 0xffffffL);
-  switch (seg) 
-    {
-    case 0x10:	/* dst is a 15 bit offset into the on-chip memory */
-      *dmap = 0;
-      *addr = (long *) (0x0000 + ((short)off & 0x7fff));
-      break;
-    case 0x11:	/* dst is an 18-bit offset into the on-chip
-		   instruction memory */
-      *dmap = 0x1000L | ((off & 0x3ffffL) >> 14);
-      *addr = (long *) (0x8000 + ((short)off & 0x3fff));
-      break;
-    case 0x12:	/* dst is a 24-bit offset into unified memory */
-      *dmap = off >> 14;
-      *addr = (long *) (0x8000 + ((short)off & 0x3fff));
-      break;
-    default:
-      exit (-1);	/* error */
-    }
-}
-#endif /* __D10V__ */
-
 static void
 ovly_copy (unsigned long dst, unsigned long src, long size)
 {
-#ifdef  __D10V__
-  unsigned long *s, *d, tmp;
-  short dmap_src, dmap_dst;
-  short dmap_save;
-
-  /* all section sizes should by multiples of 4 bytes */
-  dmap_save = DMAP;
-
-  D10VTranslate (src, &dmap_src, &s);
-  D10VTranslate (dst, &dmap_dst, &d);
-
-  while (size > 0)
-    {
-      /* NB: Transfer 4 byte (long) quantites, problems occure
-	 when only two bytes are transfered */
-      DMAP = dmap_src;
-      tmp = *s;
-      DMAP = dmap_dst;
-      *d = tmp; 
-      d++;
-      s++;
-      size -= sizeof (tmp);
-      src += sizeof (tmp);
-      dst += sizeof (tmp);
-      if ((src & 0x3fff) == 0)
-	D10VTranslate (src, &dmap_src, &s);
-      if ((dst & 0x3fff) == 0)
-	D10VTranslate (dst, &dmap_dst, &d);
-    }
-  DMAP = dmap_save;
-#else
   memcpy ((void *) dst, (void *) src, size);
-#endif /* D10V */
-  return;
 }
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ovlymgr.h ./gdb/testsuite/gdb.base/ovlymgr.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ovlymgr.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ovlymgr.h	2021-05-21 01:57:24.000000000 +0000
@@ -2,16 +2,9 @@
  * Sample runtime overlay manager.
  */
 
-#ifdef NO_PROTOTYPES
-#define PARAMS(paramlist) ()
-#else
-#define PARAMS(paramlist) paramlist
-#endif
-
 typedef enum { FALSE, TRUE } bool;
 
 /* Entry Points: */
 
-bool OverlayLoad   PARAMS((unsigned long ovlyno));
-bool OverlayUnload PARAMS((unsigned long ovlyno));
-
+bool OverlayLoad (unsigned long ovlyno);
+bool OverlayUnload (unsigned long ovlyno);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/page.exp ./gdb/testsuite/gdb.base/page.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/page.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/page.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
@@ -23,7 +23,7 @@ gdb_test "show pagination" "State of pag
 gdb_test_sequence "help" "unpaged help" {
     "List of classes of commands:"
     ""
-    "aliases -- Aliases of other commands"
+    "aliases -- User-defined aliases of other commands"
     "breakpoints -- Making program stop at certain points"
     "data -- Examining data"
     "files -- Specifying and examining files"
@@ -50,7 +50,7 @@ gdb_expect_list "paged help" \
 	".*$pagination_prompt" {
     "List of classes of commands:"
     ""
-    "aliases -- Aliases of other commands"
+    "aliases -- User-defined aliases of other commands"
     "breakpoints -- Making program stop at certain points"
     "data -- Examining data"
     "files -- Specifying and examining files"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.c ./gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.exp ./gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/paginate-after-ctrl-c-running.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-bg-execution.c ./gdb/testsuite/gdb.base/paginate-bg-execution.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-bg-execution.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/paginate-bg-execution.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-bg-execution.exp ./gdb/testsuite/gdb.base/paginate-bg-execution.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-bg-execution.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/paginate-bg-execution.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-execution-startup.c ./gdb/testsuite/gdb.base/paginate-execution-startup.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-execution-startup.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/paginate-execution-startup.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-execution-startup.exp ./gdb/testsuite/gdb.base/paginate-execution-startup.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-execution-startup.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/paginate-execution-startup.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-inferior-exit.c ./gdb/testsuite/gdb.base/paginate-inferior-exit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-inferior-exit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/paginate-inferior-exit.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-inferior-exit.exp ./gdb/testsuite/gdb.base/paginate-inferior-exit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/paginate-inferior-exit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/paginate-inferior-exit.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pc-fp.exp ./gdb/testsuite/gdb.base/pc-fp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pc-fp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pc-fp.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2002-2020 Free Software Foundation, Inc.
+#   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pending.c ./gdb/testsuite/gdb.base/pending.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pending.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pending.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pending.exp ./gdb/testsuite/gdb.base/pending.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pending.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pending.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2003-2020 Free Software Foundation, Inc.
+#   Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pendshr.c ./gdb/testsuite/gdb.base/pendshr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pendshr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pendshr.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/permissions.exp ./gdb/testsuite/gdb.base/permissions.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/permissions.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/permissions.exp	2021-05-21 01:57:24.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -34,43 +34,48 @@ gdb_exit
 gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
 
-gdb_test "show may-write-registers" \
-    "Permission to write into registers is on."
+with_test_prefix "observer mode off" {
 
-gdb_test "show may-write-memory" \
-    "Permission to write into target memory is on."
+    gdb_test "show may-write-registers" \
+	"Permission to write into registers is on."
 
-gdb_test "show may-insert-breakpoints" \
-    "Permission to insert breakpoints in the target is on."
+    gdb_test "show may-write-memory" \
+	"Permission to write into target memory is on."
 
-gdb_test "show may-insert-tracepoints" \
-    "Permission to insert tracepoints in the target is on."
+    gdb_test "show may-insert-breakpoints" \
+	"Permission to insert breakpoints in the target is on."
 
-gdb_test "show may-insert-fast-tracepoints" \
-    "Permission to insert fast tracepoints in the target is on."
+    gdb_test "show may-insert-tracepoints" \
+	"Permission to insert tracepoints in the target is on."
 
-gdb_test "show may-interrupt" \
-    "Permission to interrupt or signal the target is on."
+    gdb_test "show may-insert-fast-tracepoints" \
+	"Permission to insert fast tracepoints in the target is on."
+
+    gdb_test "show may-interrupt" \
+	"Permission to interrupt or signal the target is on."
+}
 
 gdb_test "set observer on" "Observer mode is now on." "enable observer mode"
 
-gdb_test "show may-write-memory" \
-    "Permission to write into target memory is off."
+with_test_prefix "observer mode on" {
+    gdb_test "show may-write-memory" \
+	"Permission to write into target memory is off."
 
-gdb_test "show may-write-registers" \
-    "Permission to write into registers is off."
+    gdb_test "show may-write-registers" \
+	"Permission to write into registers is off."
 
-gdb_test "show may-insert-breakpoints" \
-    "Permission to insert breakpoints in the target is off."
+    gdb_test "show may-insert-breakpoints" \
+	"Permission to insert breakpoints in the target is off."
 
-gdb_test "show may-insert-tracepoints" \
-    "Permission to insert tracepoints in the target is off."
+    gdb_test "show may-insert-tracepoints" \
+	"Permission to insert tracepoints in the target is off."
 
-gdb_test "show may-insert-fast-tracepoints" \
-    "Permission to insert fast tracepoints in the target is on."
+    gdb_test "show may-insert-fast-tracepoints" \
+	"Permission to insert fast tracepoints in the target is on."
 
-gdb_test "show may-interrupt" \
-    "Permission to interrupt or signal the target is off."
+    gdb_test "show may-interrupt" \
+	"Permission to interrupt or signal the target is off."
+}
 
 gdb_test "set observer off" "Observer mode is now off." "disable observer mode"
 
@@ -87,14 +92,14 @@ if ![runto_main] then {
 
 gdb_test "print x = 45" "$decimal = 45" "set a global"
 
-gdb_test "print x" "$decimal = 45"
+gdb_test "print x" "$decimal = 45" "validate setting a global"
 
 gdb_test "set may-write-memory off"
 
 gdb_test "print x = 92" "Writing to memory is not allowed.*" \
-    "try to set a global"
+    "set a global, 2nd time"
 
-gdb_test "print x" "$decimal = 45"
+gdb_test "print x" "$decimal = 45" "validate setting a global, 2nd time"
 
 # FIXME Add tests for other flags when a testsuite-able target becomes
 # available.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/persistent-lang.cc ./gdb/testsuite/gdb.base/persistent-lang.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/persistent-lang.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/persistent-lang.cc	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main ()
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/persistent-lang.exp ./gdb/testsuite/gdb.base/persistent-lang.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/persistent-lang.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/persistent-lang.exp	2021-05-21 01:57:24.000000000 +0000
@@ -0,0 +1,39 @@
+# Copyright 2020-2021 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/>.
+
+standard_testfile .cc
+
+if {[build_executable "failed to prepare" $testfile $srcfile debug]} {
+    return -1
+}
+
+clean_restart
+
+set auto_c \
+    "The current source language is \"auto; currently c\"\."
+set manual_c \
+    "The current source language is \"c\"\."
+
+gdb_test "show language" $auto_c \
+    "initial language is auto/c"
+
+gdb_test_no_output "set language c"
+gdb_test "show language" $manual_c \
+    "language updated to manual/c after set"
+
+set binfile [standard_output_file ${testfile}]
+gdb_load ${binfile}
+gdb_test "show language" $manual_c \
+    "language still manual/c after load"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pie-execl.c ./gdb/testsuite/gdb.base/pie-execl.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pie-execl.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pie-execl.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pie-execl.exp ./gdb/testsuite/gdb.base/pie-execl.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pie-execl.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pie-execl.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pie-fork.c ./gdb/testsuite/gdb.base/pie-fork.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pie-fork.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pie-fork.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pie-fork.exp ./gdb/testsuite/gdb.base/pie-fork.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pie-fork.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pie-fork.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pointers.exp ./gdb/testsuite/gdb.base/pointers.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pointers.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pointers.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pr10179-a.c ./gdb/testsuite/gdb.base/pr10179-a.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pr10179-a.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pr10179-a.c	2021-05-21 01:57:25.000000000 +0000
@@ -5,11 +5,13 @@ extern int foo2();
 int
 foo1()
 {
+  return 0;
 }
 
 int
 bar1()
 {
+  return 0;
 }
 
 int
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pr10179-b.c ./gdb/testsuite/gdb.base/pr10179-b.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pr10179-b.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pr10179-b.c	2021-05-21 01:57:25.000000000 +0000
@@ -3,4 +3,5 @@
 int
 foo2()
 {
+  return 0;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pr10179.exp ./gdb/testsuite/gdb.base/pr10179.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pr10179.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pr10179.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pr11022.c ./gdb/testsuite/gdb.base/pr11022.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pr11022.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pr11022.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pr11022.exp ./gdb/testsuite/gdb.base/pr11022.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pr11022.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pr11022.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prelink.c ./gdb/testsuite/gdb.base/prelink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prelink.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/prelink.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prelink.exp ./gdb/testsuite/gdb.base/prelink.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prelink.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/prelink.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prelink-lib.c ./gdb/testsuite/gdb.base/prelink-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prelink-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/prelink-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pretty-array.c ./gdb/testsuite/gdb.base/pretty-array.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pretty-array.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pretty-array.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int nums[2][3] = {{11, 12, 13}, {21, 22, 23}};
+
+int
+main ()
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pretty-array.exp ./gdb/testsuite/gdb.base/pretty-array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pretty-array.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pretty-array.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,65 @@
+# Copyright 2020-2021 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 pretty printing of arrays.
+
+standard_testfile
+
+if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} {
+    untested $testfile.exp
+    return -1
+}
+
+if ![runto_main] {
+    untested $testfile.exp
+    return -1
+}
+
+gdb_test "print nums" \
+    "= \\{\\{11, 12, 13\\}, \\{21, 22, 23\\}\\}"
+
+gdb_test_no_output "set print array on"
+
+gdb_test "print nums" \
+    [multi_line \
+	 " = {" \
+	 "  {" \
+	 "    11," \
+	 "    12," \
+	 "    13" \
+	 "  }," \
+	 "  {" \
+	 "    21," \
+	 "    22," \
+	 "    23" \
+	 "  }" \
+	 "}" ]
+
+gdb_test_no_output "set print array-indexes on"
+
+gdb_test "print nums" \
+    [multi_line \
+	 " = {" \
+	 "  \\\[0\\\] = {" \
+	 "    \\\[0\\\] = 11," \
+	 "    \\\[1\\\] = 12," \
+	 "    \\\[2\\\] = 13" \
+	 "  }," \
+	 "  \\\[1\\\] = {" \
+	 "    \\\[0\\\] = 21," \
+	 "    \\\[1\\\] = 22," \
+	 "    \\\[2\\\] = 23" \
+	 "  }" \
+	 "}" ]
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pretty-print.c ./gdb/testsuite/gdb.base/pretty-print.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pretty-print.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pretty-print.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pretty-print.exp ./gdb/testsuite/gdb.base/pretty-print.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/pretty-print.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/pretty-print.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/printcmds.c ./gdb/testsuite/gdb.base/printcmds.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/printcmds.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/printcmds.c	2021-05-21 01:57:25.000000000 +0000
@@ -72,6 +72,9 @@ int int4dim[1][2][3][2] = {{{{0,1},{2,3}
 
 char *teststring = (char*)"teststring contents";
 
+typedef char *charptr;
+charptr teststring2 = "more contents";
+
 /* Test printing of a struct containing character arrays. */
 
 struct some_arrays {
@@ -96,9 +99,36 @@ enum some_volatile_enum { enumvolval1, e
    name.  See PR11827.  */
 volatile enum some_volatile_enum some_volatile_enum = enumvolval1;
 
-enum flag_enum { ONE = 1, TWO = 2 };
+/* An enum considered as a "flag enum".  */
+enum flag_enum
+{
+  FE_NONE       = 0x00,
+  FE_ONE        = 0x01,
+  FE_TWO        = 0x02,
+  FE_TWO_LEGACY = 0x02,
+};
+
+enum flag_enum three = FE_ONE | FE_TWO;
+
+/* Another enum considered as a "flag enum", but with no enumerator with value
+   0.  */
+enum flag_enum_without_zero
+{
+  FEWZ_ONE = 0x01,
+  FEWZ_TWO = 0x02,
+};
+
+enum flag_enum_without_zero flag_enum_without_zero = 0;
+
+/* Not a flag enum, an enumerator value has multiple bits sets.  */
+enum not_flag_enum
+{
+  NFE_ONE = 0x01,
+  NFE_TWO = 0x02,
+  NFE_F0  = 0xf0,
+};
 
-enum flag_enum three = ONE | TWO;
+enum not_flag_enum three_not_flag = NFE_ONE | NFE_TWO;
 
 /* A structure with an embedded array at an offset > 0.  The array has
    all elements with the same repeating value, which must not be the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/printcmds.exp ./gdb/testsuite/gdb.base/printcmds.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/printcmds.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/printcmds.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
@@ -127,15 +127,15 @@ proc test_float_accepted {} {
     gdb_test "p 1.5l" " = 1.5"
 
     # Test hexadecimal floating point.
-    set test "p 0x1.1"
-    gdb_test_multiple $test $test {
-	-re " = 1\\.0625\r\n$gdb_prompt $" {
-	    pass $test
-	}
-	-re "Invalid number \"0x1\\.1\"\\.\r\n$gdb_prompt $" {
-	    # Older glibc does not support hex float, newer does.
-	    xfail $test
-	}
+    foreach {num result} {
+	0x1.1 1.0625
+	0x1.8480000000000p+6 97.125
+	0x1.8480000000000p6 97.125
+	0x00.1p0 0.0625
+	0x00.1p1 0.125
+	0x00.1p-1 0.03125
+    } {
+	gdb_test "p $num" " = [string_to_regexp $result]"
     }
 }
 
@@ -519,6 +519,9 @@ proc test_print_strings {} {
     gdb_test "p teststring" \
 	" = (.unsigned char .. )?\"teststring contents\"" "p teststring with elements set to 20"
 
+    gdb_test "print teststring2" \
+	" = \\(charptr\\) \"more contents\""
+
     gdb_test_no_output "set print elements 8"
 
     # Set the target-charset to ASCII, because the output varies from
@@ -653,9 +656,9 @@ proc test_artificial_arrays {} {
     gdb_test_escape_braces "p int1dim\[0\]${ctrlv}@2${ctrlv}@3" \
 	"({{0, 1}, {2, 3}, {4, 5}}|\[Cc\]annot.*)" \
 	{p int1dim[0]@2@3}
-    gdb_test_escape_braces "p int1dim\[0\]${ctrlv}@TWO" " = {0, 1}" \
+    gdb_test_escape_braces "p int1dim\[0\]${ctrlv}@FE_TWO" " = {0, 1}" \
         {p int1dim[0]@TWO}
-    gdb_test_escape_braces "p int1dim\[0\]${ctrlv}@TWO${ctrlv}@three" \
+    gdb_test_escape_braces "p int1dim\[0\]${ctrlv}@FE_TWO${ctrlv}@three" \
 	"({{0, 1}, {2, 3}, {4, 5}}|\[Cc\]annot.*)" \
 	{p int1dim[0]@TWO@three}
     gdb_test_escape_braces {p/x (short [])0x12345678} \
@@ -736,7 +739,21 @@ proc test_print_enums {} {
     # Regression test for PR11827.
     gdb_test "print some_volatile_enum" "enumvolval1"
 
-    gdb_test "print three" " = \\\(ONE \\| TWO\\\)"
+    # Print a flag enum.
+    gdb_test "print three" [string_to_regexp " = (FE_ONE | FE_TWO)"]
+
+    # Print a flag enum with value 0, where an enumerator has value 0.
+    gdb_test "print (enum flag_enum) 0x0" [string_to_regexp " = FE_NONE"]
+
+    # Print a flag enum with value 0, where no enumerator has value 0.
+    gdb_test "print flag_enum_without_zero" [string_to_regexp " = 0"]
+
+    # Print a flag enum with unknown bits set.
+    gdb_test "print (enum flag_enum) 0xf1" [string_to_regexp " = (FE_ONE | unknown: 0xf0)"]
+
+    # Test printing an enum not considered a "flag enum" (because one of its
+    # enumerators has multiple bits set).
+    gdb_test "print three_not_flag" [string_to_regexp " = 3"]
 }
 
 proc test_printf {} {
@@ -1025,6 +1042,14 @@ gdb_test_no_output "set may-call-functio
 test_printf_convenience_var "with target, may-call-functions off"
 gdb_test_no_output "set may-call-functions on"
 
+# Test printf of a variable that holds the address to a substring in
+# the inferior.  This test will not work without a target.
+gdb_test_no_output "set var \$test_substr = \(char \*\) \(&teststring\[0\] + 4\)" \
+    "set \$test_substr var"
+gdb_test "printf \"test_substr val = %s\\n\", \$test_substr" \
+    "test_substr val = string contents" \
+    "print \$test_substr"
+
 test_integer_literals_accepted
 test_integer_literals_rejected
 test_float_accepted
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-file-var.exp ./gdb/testsuite/gdb.base/print-file-var.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-file-var.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/print-file-var.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -106,7 +106,7 @@ proc test {hidden dlopen version_id_main
 	[gdb_get_line_number "STOP" "${main}.c"]
     gdb_test "break $main.c:$bp_location" \
 	"Breakpoint \[0-9\]+ at 0x\[0-9a-fA-F\]+: .*" \
-	"breapoint at STOP marker"
+	"breakpoint at STOP marker"
 
     gdb_test "continue" \
 	"Breakpoint \[0-9\]+, main \\(\\) at.*STOP.*" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-file-var.h ./gdb/testsuite/gdb.base/print-file-var.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-file-var.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/print-file-var.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* This testcase is part of GDB, the GNU debugger.
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-file-var-lib1.c ./gdb/testsuite/gdb.base/print-file-var-lib1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-file-var-lib1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/print-file-var-lib1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* This testcase is part of GDB, the GNU debugger.
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-file-var-lib2.c ./gdb/testsuite/gdb.base/print-file-var-lib2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-file-var-lib2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/print-file-var-lib2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* This testcase is part of GDB, the GNU debugger.
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-file-var-main.c ./gdb/testsuite/gdb.base/print-file-var-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-file-var-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/print-file-var-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* This testcase is part of GDB, the GNU debugger.
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-symbol-loading.exp ./gdb/testsuite/gdb.base/print-symbol-loading.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-symbol-loading.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/print-symbol-loading.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-symbol-loading-lib.c ./gdb/testsuite/gdb.base/print-symbol-loading-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-symbol-loading-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/print-symbol-loading-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-symbol-loading-main.c ./gdb/testsuite/gdb.base/print-symbol-loading-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/print-symbol-loading-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/print-symbol-loading-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prologue.c ./gdb/testsuite/gdb.base/prologue.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prologue.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/prologue.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prologue.exp ./gdb/testsuite/gdb.base/prologue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prologue.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/prologue.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # Test for prologue skipping in minimal symbols with line info.
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prologue-include.c ./gdb/testsuite/gdb.base/prologue-include.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prologue-include.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/prologue-include.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prologue-include.exp ./gdb/testsuite/gdb.base/prologue-include.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prologue-include.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/prologue-include.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prologue-include.h ./gdb/testsuite/gdb.base/prologue-include.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/prologue-include.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/prologue-include.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/psym-external-decl-2.c ./gdb/testsuite/gdb.base/psym-external-decl-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/psym-external-decl-2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/psym-external-decl-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,18 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int aaa = 33;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/psym-external-decl.c ./gdb/testsuite/gdb.base/psym-external-decl.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/psym-external-decl.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/psym-external-decl.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+extern int aaa;
+
+int
+main (void)
+{
+  return aaa;
+}
+
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/psym-external-decl.exp ./gdb/testsuite/gdb.base/psym-external-decl.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/psym-external-decl.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/psym-external-decl.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,35 @@
+# Copyright 2020-2021 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/>.  */
+
+standard_testfile .c psym-external-decl-2.c
+
+get_compiler_info
+if { [test_compiler_info "clang-*"] } {
+    return -1
+}
+
+set srcfiles [list $srcfile $srcfile2]
+
+if { [build_executable_from_specs \
+	  "failed to prepare" \
+	  $testfile [list] \
+	  $srcfile [list debug] \
+	  $srcfile2 [list]] == -1 } {
+    return -1
+}
+
+clean_restart $testfile
+
+gdb_test "print aaa" " = 33"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/psymtab.exp ./gdb/testsuite/gdb.base/psymtab.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/psymtab.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/psymtab.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ptr-typedef.c ./gdb/testsuite/gdb.base/ptr-typedef.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ptr-typedef.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ptr-typedef.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ptr-typedef.exp ./gdb/testsuite/gdb.base/ptr-typedef.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ptr-typedef.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ptr-typedef.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ptype.exp ./gdb/testsuite/gdb.base/ptype.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ptype.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ptype.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1988-2020 Free Software Foundation, Inc.
+# Copyright 1988-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ptype-offsets.cc ./gdb/testsuite/gdb.base/ptype-offsets.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ptype-offsets.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ptype-offsets.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ptype-offsets.exp ./gdb/testsuite/gdb.base/ptype-offsets.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ptype-offsets.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ptype-offsets.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/quit.exp ./gdb/testsuite/gdb.base/quit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/quit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/quit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/quit-live.c ./gdb/testsuite/gdb.base/quit-live.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/quit-live.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/quit-live.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/quit-live.exp ./gdb/testsuite/gdb.base/quit-live.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/quit-live.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/quit-live.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 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
@@ -120,7 +120,7 @@ proc quit_with_live_inferior {appear_how
     }
 
     if {$extra_inferior} {
-	gdb_test "add-inferior" "Added inferior 2*" \
+	gdb_test "add-inferior" "Added inferior 2 on connection .*" \
 	    "add empty inferior 2"
 	gdb_test "inferior 2" "Switching to inferior 2.*" \
 	    "switch to inferior 2"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/radix.exp ./gdb/testsuite/gdb.base/radix.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/radix.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/radix.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # This testcase is part of GDB, the GNU debugger.
-# Copyright 1993-2020 Free Software Foundation, Inc.
+# Copyright 1993-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/randomize.c ./gdb/testsuite/gdb.base/randomize.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/randomize.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/randomize.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/randomize.exp ./gdb/testsuite/gdb.base/randomize.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/randomize.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/randomize.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/random-signal.c ./gdb/testsuite/gdb.base/random-signal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/random-signal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/random-signal.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/random-signal.exp ./gdb/testsuite/gdb.base/random-signal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/random-signal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/random-signal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/range-stepping.c ./gdb/testsuite/gdb.base/range-stepping.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/range-stepping.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/range-stepping.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/range-stepping.exp ./gdb/testsuite/gdb.base/range-stepping.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/range-stepping.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/range-stepping.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readline-ask.c ./gdb/testsuite/gdb.base/readline-ask.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readline-ask.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/readline-ask.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readline-ask.exp ./gdb/testsuite/gdb.base/readline-ask.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readline-ask.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/readline-ask.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readline-ask.inputrc ./gdb/testsuite/gdb.base/readline-ask.inputrc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readline-ask.inputrc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/readline-ask.inputrc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readline.exp ./gdb/testsuite/gdb.base/readline.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readline.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/readline.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readnever.c ./gdb/testsuite/gdb.base/readnever.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readnever.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/readnever.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2016-2020 Free Software Foundation, Inc.
+/* Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readnever.exp ./gdb/testsuite/gdb.base/readnever.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/readnever.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/readnever.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -20,9 +20,18 @@ if { [build_executable "failed to build"
     return -1
 }
 
+# See if we have target board readnow.exp or similar.
+if { [lsearch -exact $GDBFLAGS -readnow] != -1 \
+	 || [lsearch -exact $GDBFLAGS --readnow] != -1 } {
+    untested "--readnever not allowed in combination with --readnow"
+    return -1
+}
+
 save_vars { GDBFLAGS } {
     append GDBFLAGS " --readnever"
-    clean_restart ${binfile}
+    if { [clean_restart ${binfile}] == -1 } {
+       return -1
+    }
 }
 
 if ![runto_main] then {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/realname-expand.c ./gdb/testsuite/gdb.base/realname-expand.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/realname-expand.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/realname-expand.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/realname-expand.exp ./gdb/testsuite/gdb.base/realname-expand.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/realname-expand.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/realname-expand.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/realname-expand-real.c ./gdb/testsuite/gdb.base/realname-expand-real.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/realname-expand-real.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/realname-expand-real.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/recpar.c ./gdb/testsuite/gdb.base/recpar.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/recpar.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/recpar.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/recpar.exp ./gdb/testsuite/gdb.base/recpar.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/recpar.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/recpar.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/recurse.exp ./gdb/testsuite/gdb.base/recurse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/recurse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/recurse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/reggroups.c ./gdb/testsuite/gdb.base/reggroups.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/reggroups.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/reggroups.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/reggroups.exp ./gdb/testsuite/gdb.base/reggroups.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/reggroups.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/reggroups.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/relational.exp ./gdb/testsuite/gdb.base/relational.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/relational.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/relational.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/relativedebug.c ./gdb/testsuite/gdb.base/relativedebug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/relativedebug.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/relativedebug.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/relativedebug.exp ./gdb/testsuite/gdb.base/relativedebug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/relativedebug.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/relativedebug.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/relocate.c ./gdb/testsuite/gdb.base/relocate.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/relocate.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/relocate.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/relocate.exp ./gdb/testsuite/gdb.base/relocate.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/relocate.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/relocate.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
@@ -152,9 +152,11 @@ gdb_test "add-symbol-file ${binfile} 0"
 	"add symbol table from file \".*${testfile}\\.o\" at\[ \t\r\n\]+\.text_addr = 0x0\[\r\n\]+\\(y or n\\) " \
 	"y"
 
-# Print the addresses of static variables.
-set static_foo_addr [get_var_address static_foo]
-set static_bar_addr [get_var_address static_bar]
+with_test_prefix "print addresses, static vars" {
+    # Print the addresses of static variables.
+    set static_foo_addr [get_var_address static_foo]
+    set static_bar_addr [get_var_address static_bar]
+}
 
 # Make sure they have different addresses.
 if { "${static_foo_addr}" == "${static_bar_addr}" } {
@@ -163,9 +165,11 @@ if { "${static_foo_addr}" == "${static_b
   pass "static variables have different addresses"
 }
 
-# Print the addresses of global variables.
-set global_foo_addr [get_var_address global_foo]
-set global_bar_addr [get_var_address global_bar]
+with_test_prefix "print addresses, global vars" {
+    # Print the addresses of global variables.
+    set global_foo_addr [get_var_address global_foo]
+    set global_bar_addr [get_var_address global_bar]
+}
 
 # Make sure they have different addresses.
 if { "${global_foo_addr}" == "${global_bar_addr}" } {
@@ -174,9 +178,11 @@ if { "${global_foo_addr}" == "${global_b
   pass "global variables have different addresses"
 }
 
-# Print the addresses of functions.
-set function_foo_addr [get_var_address function_foo]
-set function_bar_addr [get_var_address function_bar]
+with_test_prefix "print addresses, functions" {
+    # Print the addresses of functions.
+    set function_foo_addr [get_var_address function_foo]
+    set function_bar_addr [get_var_address function_bar]
+}
 
 # Make sure they have different addresses.
 if { "${function_foo_addr}" == "${function_bar_addr}" } {
@@ -220,20 +226,26 @@ gdb_test "symbol-file -o $offset $binfil
     "Reading symbols from ${binfile}\.\.\." \
     "symbol-file with offset"
 
-# Make sure the address of a static variable is moved by offset.
-set new_static_foo_addr [get_var_address static_foo]
-gdb_assert {${new_static_foo_addr} == ${static_foo_addr} + $offset} \
-    "static variable foo is moved by offset"
-
-# Make sure the address of a global variable is moved by offset.
-set new_global_foo_addr [get_var_address global_foo]
-gdb_assert {${new_global_foo_addr} == ${global_foo_addr} + $offset} \
-    "global variable foo is moved by offset"
-
-# Make sure the address of a function is moved by offset.
-set new_function_foo_addr [get_var_address function_foo]
-gdb_assert {${new_function_foo_addr} == ${function_foo_addr} + $offset} \
-    "function foo is moved by offset"
+with_test_prefix "static vars" {
+    # Make sure the address of a static variable is moved by offset.
+    set new_static_foo_addr [get_var_address static_foo]
+    gdb_assert {${new_static_foo_addr} == ${static_foo_addr} + $offset} \
+	"static variable foo is moved by offset"
+}
+
+with_test_prefix "global vars" {
+    # Make sure the address of a global variable is moved by offset.
+    set new_global_foo_addr [get_var_address global_foo]
+    gdb_assert {${new_global_foo_addr} == ${global_foo_addr} + $offset} \
+	"global variable foo is moved by offset"
+}
+
+with_test_prefix "functions" {
+    # Make sure the address of a function is moved by offset.
+    set new_function_foo_addr [get_var_address function_foo]
+    gdb_assert {${new_function_foo_addr} == ${function_foo_addr} + $offset} \
+	"function foo is moved by offset"
+}
 
 # Load the object using add-symbol-file with an offset and check that
 # all addresses are moved by that offset.
@@ -246,20 +258,26 @@ gdb_test "add-symbol-file -o $offset $bi
     "add symbol table from file \".*${testfile}\\.o\" with all sections offset by $offset\[\r\n\]+\\(y or n\\) " \
     "y"
 
-# Make sure the address of a static variable is moved by offset.
-set new_static_foo_addr [get_var_address static_foo]
-gdb_assert { ${new_static_foo_addr} == ${static_foo_addr} + $offset } \
-    "static variable foo is moved by offset"
-
-# Make sure the address of a global variable is moved by offset.
-set new_global_foo_addr [get_var_address global_foo]
-gdb_assert { ${new_global_foo_addr} == ${global_foo_addr} + $offset } \
-    "global variable foo is moved by offset"
-
-# Make sure the address of a function is moved by offset.
-set new_function_foo_addr [get_var_address function_foo]
-gdb_assert { ${new_function_foo_addr} == ${function_foo_addr} + $offset } \
-    "function foo is moved by offset"
+with_test_prefix "static scope, 2nd" {
+    # Make sure the address of a static variable is moved by offset.
+    set new_static_foo_addr [get_var_address static_foo]
+    gdb_assert { ${new_static_foo_addr} == ${static_foo_addr} + $offset } \
+	"static variable foo is moved by offset"
+}
+
+with_test_prefix "global vars, 2nd" {
+    # Make sure the address of a global variable is moved by offset.
+    set new_global_foo_addr [get_var_address global_foo]
+    gdb_assert { ${new_global_foo_addr} == ${global_foo_addr} + $offset } \
+	"global variable foo is moved by offset"
+}
+
+with_test_prefix "functions, 2nd" {
+    # Make sure the address of a function is moved by offset.
+    set new_function_foo_addr [get_var_address function_foo]
+    gdb_assert { ${new_function_foo_addr} == ${function_foo_addr} + $offset } \
+	"function foo is moved by offset"
+}
 
 # Re-load the object giving an explicit address for .text
 
@@ -271,10 +289,12 @@ gdb_test "add-symbol-file $binfile -o $o
     "add symbol table from file \".*${testfile}\\.o\" at\[ \t\r\n\]+\.text_addr = ${text}\[\r\n\]+with other sections offset by ${offset}\[\r\n\]+\\(y or n\\) " \
     "y"
 
-# Make sure function has a different addresses now.
-set function_foo_addr [get_var_address function_foo]
-gdb_assert { ${function_foo_addr} != ${new_function_foo_addr} } \
-    "function foo has a different address"
+with_test_prefix "functions, 3rd" {
+    # Make sure function has a different addresses now.
+    set function_foo_addr [get_var_address function_foo]
+    gdb_assert { ${function_foo_addr} != ${new_function_foo_addr} } \
+	"function foo has a different address"
+}
 
 # Re-load the object giving an explicit address for .data
 
@@ -286,10 +306,12 @@ gdb_test "add-symbol-file $binfile -o $o
     "add symbol table from file \".*${testfile}\\.o\" at\[ \t\r\n\]+\.data_addr = ${data}\[\r\n\]+with other sections offset by ${offset}\[\r\n\]+\\(y or n\\) " \
     "y"
 
-# Make sure variable has a different addresses now.
-set global_foo_addr [get_var_address global_foo]
-gdb_assert { ${global_foo_addr} != ${new_global_foo_addr} } \
-    "global variable foo has a different address"
+with_test_prefix "global vars, 3rd" {
+    # Make sure variable has a different addresses now.
+    set global_foo_addr [get_var_address global_foo]
+    gdb_assert { ${global_foo_addr} != ${new_global_foo_addr} } \
+	"global variable foo has a different address"
+}
 
 # Now try loading the object as an exec-file; we should be able to print
 # the values of variables after we do this.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/remote-exec-file.exp ./gdb/testsuite/gdb.base/remote-exec-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/remote-exec-file.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/remote-exec-file.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,46 @@
+# Copyright 2019-2021 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/>.
+
+# Check that "show remote exec-file" displays each inferior's
+# exec-file.  Regression test for a bug where "show remote exec-file"
+# would show the last exec-file set, irrespective of the current
+# inferior.
+
+clean_restart
+
+# Set remote exec-file in inferior 1.
+with_test_prefix "set inf 1" {
+    gdb_test_no_output "set remote exec-file prog1"
+}
+
+# Set remote exec-file in inferior 2.
+with_test_prefix "set inf 2" {
+    gdb_test "add-inferior" "Added inferior 2.*" "add inferior 2"
+    gdb_test "inferior 2" "Switching to inferior 2.*"
+    gdb_test_no_output "set remote exec-file prog2"
+}
+
+# Check that "show remote exec-file" diplays each inferior's
+# exec-file.
+
+with_test_prefix "show inf 1" {
+    gdb_test "inferior 1" "Switching to inferior 1.*"
+    gdb_test "show remote exec-file" "prog1"
+}
+
+with_test_prefix "show inf 2" {
+    gdb_test "inferior 2" "Switching to inferior 2.*"
+    gdb_test "show remote exec-file" "prog2"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/remote.exp ./gdb/testsuite/gdb.base/remote.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/remote.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/remote.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/remotetimeout.exp ./gdb/testsuite/gdb.base/remotetimeout.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/remotetimeout.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/remotetimeout.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/reread.exp ./gdb/testsuite/gdb.base/reread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/reread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/reread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
@@ -13,8 +13,6 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-set prototypes 1
-
 # Build programs in PIE mode, to reproduce PR 21555.
 foreach_with_prefix opts {
     { "" "" }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/reread-readsym.c ./gdb/testsuite/gdb.base/reread-readsym.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/reread-readsym.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/reread-readsym.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/reread-readsym.exp ./gdb/testsuite/gdb.base/reread-readsym.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/reread-readsym.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/reread-readsym.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2017-2020 Free Software Foundation, Inc.
+#   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/restore.c ./gdb/testsuite/gdb.base/restore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/restore.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/restore.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1998-2020 Free Software Foundation, Inc.
+   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/restore.exp ./gdb/testsuite/gdb.base/restore.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/restore.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/restore.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return2.exp ./gdb/testsuite/gdb.base/return2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/return2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2000-2020 Free Software Foundation, Inc.
+# Copyright 2000-2021 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
@@ -50,7 +50,7 @@ proc return_1 { type } {
     gdb_test "print ${type}_resultval == testval.${type}_testval" ".* = 1" \
 	    "${type} value returned successfully"
     gdb_test "print ${type}_resultval != ${type}_returnval" ".* = 1" \
-	    "validate result value not equal to program return value"
+	    "validate result value not equal to program return value, ${type}"
 }
 
 proc return_void { } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return.c ./gdb/testsuite/gdb.base/return.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/return.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1992-2020 Free Software Foundation, Inc.
+   Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return.exp ./gdb/testsuite/gdb.base/return.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/return.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return-nodebug1.c ./gdb/testsuite/gdb.base/return-nodebug1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return-nodebug1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/return-nodebug1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return-nodebug.c ./gdb/testsuite/gdb.base/return-nodebug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return-nodebug.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/return-nodebug.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return-nodebug.exp ./gdb/testsuite/gdb.base/return-nodebug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/return-nodebug.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/return-nodebug.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/run-after-attach.c ./gdb/testsuite/gdb.base/run-after-attach.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/run-after-attach.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/run-after-attach.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/run-after-attach.exp ./gdb/testsuite/gdb.base/run-after-attach.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/run-after-attach.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/run-after-attach.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/save-bp.c ./gdb/testsuite/gdb.base/save-bp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/save-bp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/save-bp.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/save-bp.exp ./gdb/testsuite/gdb.base/save-bp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/save-bp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/save-bp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/savedregs.c ./gdb/testsuite/gdb.base/savedregs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/savedregs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/savedregs.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
@@ -33,7 +33,7 @@ callee (int param)
 extern int
 caller (int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8)
 {
-  return callee (a1 << a2 * a3 / a4 + a6 & a6 % a7 - a8) + done;
+  return callee ((a1 << a2 * a3 / a4) + a6 & a6 % a7 - a8) + done;
 }
 
 static void
@@ -46,7 +46,7 @@ static void
 thrower (void)
 {
   /* Trigger a SIGSEGV.  */
-  *(char *)0 = 0;
+  *(volatile char *)0 = 0;
 
   /* On MMU-less system, previous memory access to address zero doesn't
      trigger a SIGSEGV.  Trigger a SIGILL.  Each arch should define its
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/savedregs.exp ./gdb/testsuite/gdb.base/savedregs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/savedregs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/savedregs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/scope.exp ./gdb/testsuite/gdb.base/scope.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/scope.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/scope.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sect-cmd.exp ./gdb/testsuite/gdb.base/sect-cmd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sect-cmd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sect-cmd.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/segv.c ./gdb/testsuite/gdb.base/segv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/segv.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/segv.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sep.c ./gdb/testsuite/gdb.base/sep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sepdebug2.c ./gdb/testsuite/gdb.base/sepdebug2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sepdebug2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sepdebug2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sepdebug.c ./gdb/testsuite/gdb.base/sepdebug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sepdebug.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sepdebug.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 1994-2020 Free Software Foundation, Inc.
+/* Copyright 1994-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sepdebug.exp ./gdb/testsuite/gdb.base/sepdebug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sepdebug.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sepdebug.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1988-2020 Free Software Foundation, Inc.
+#   Copyright 1988-2021 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
@@ -280,9 +280,6 @@ gdb_test "info break" "Num     Type.*Dis
 #
 if ![runto_main] then { fail "sepdebug tests suppressed" }
 
-gdb_test "catch" "Catch requires an event name.*" \
-    "catch requires an event name"
-
 gdb_test "catch fork" "Catchpoint \[0-9\]+ \\(fork\\)" \
     "set catch fork, never expected to trigger"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sep.exp ./gdb/testsuite/gdb.base/sep.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sep.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sep.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sep-proc.c ./gdb/testsuite/gdb.base/sep-proc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sep-proc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sep-proc.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sepsymtab.c ./gdb/testsuite/gdb.base/sepsymtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sepsymtab.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sepsymtab.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2006-2020 Free Software Foundation, Inc.
+/* Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sepsymtab.exp ./gdb/testsuite/gdb.base/sepsymtab.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sepsymtab.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sepsymtab.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/server-del-break.c ./gdb/testsuite/gdb.base/server-del-break.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/server-del-break.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/server-del-break.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/server-del-break.exp ./gdb/testsuite/gdb.base/server-del-break.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/server-del-break.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/server-del-break.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-cwd.c ./gdb/testsuite/gdb.base/set-cwd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-cwd.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/set-cwd.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-cwd.exp ./gdb/testsuite/gdb.base/set-cwd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-cwd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/set-cwd.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-inferior-tty.c ./gdb/testsuite/gdb.base/set-inferior-tty.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-inferior-tty.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/set-inferior-tty.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-inferior-tty.exp ./gdb/testsuite/gdb.base/set-inferior-tty.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-inferior-tty.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/set-inferior-tty.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-lang-auto.exp ./gdb/testsuite/gdb.base/set-lang-auto.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-lang-auto.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/set-lang-auto.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-noassign.exp ./gdb/testsuite/gdb.base/set-noassign.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/set-noassign.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/set-noassign.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/setshow.exp ./gdb/testsuite/gdb.base/setshow.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/setshow.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/setshow.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/settings.c ./gdb/testsuite/gdb.base/settings.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/settings.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/settings.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/settings.exp ./gdb/testsuite/gdb.base/settings.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/settings.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/settings.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/setvar.exp ./gdb/testsuite/gdb.base/setvar.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/setvar.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/setvar.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 1988-2020 Free Software Foundation, Inc.
+# Copyright 1988-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/share-env-with-gdbserver.c ./gdb/testsuite/gdb.base/share-env-with-gdbserver.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/share-env-with-gdbserver.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/share-env-with-gdbserver.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/share-env-with-gdbserver.exp ./gdb/testsuite/gdb.base/share-env-with-gdbserver.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/share-env-with-gdbserver.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/share-env-with-gdbserver.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/share-psymtabs-bt-2.c ./gdb/testsuite/gdb.base/share-psymtabs-bt-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/share-psymtabs-bt-2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/share-psymtabs-bt-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+void bar (int x);
+
+void
+foo (int x)
+{
+  bar (x);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/share-psymtabs-bt.c ./gdb/testsuite/gdb.base/share-psymtabs-bt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/share-psymtabs-bt.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/share-psymtabs-bt.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,29 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+void
+bar (int x)
+{}
+
+void foo (int x);
+
+int
+main (void)
+{
+  foo (12345);
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/share-psymtabs-bt.exp ./gdb/testsuite/gdb.base/share-psymtabs-bt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/share-psymtabs-bt.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/share-psymtabs-bt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,51 @@
+# Copyright 2020-2021 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 that a backtrace is shown correctly for an objfile that uses partial
+# symtabs created by another objfile sharing the same BFD.
+#
+# It mimics how a bug with psymtab sharing was initially found:
+#
+#  1. Load the test file twice, such that the second objfile re-uses the
+#     per_bfd object created for the first objfile.
+#  2. Run to some point where in the backtrace there is a frame for a
+#     function that's in a CU that's not yet read in.
+#  3. Check that this frame's information is complete in the "backtrace"
+#     output.
+
+standard_testfile .c share-psymtabs-bt-2.c
+
+if { [prepare_for_testing "failed to prepare" $testfile "$srcfile $srcfile2" \
+         {debug}] } {
+    untested "failed to compile"
+    return -1
+}
+
+# Load $binfile a second time.  The second created objfile will re-use the
+# partial symtabs created by the first one.
+if { [gdb_file_cmd $binfile] != 0 } {
+    fail "file command failed"
+    return -1
+}
+
+gdb_breakpoint "bar"
+if { ![runto "bar"] } {
+    fail "failed to run to bar"
+    return -1
+}
+
+# A buggy GDB would fail to find the full symbol associated to this frame's
+# address, so would just show "foo ()" (from the minimal symbol).
+gdb_test "bt" "foo \\(x=12345\\).*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/shell.exp ./gdb/testsuite/gdb.base/shell.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/shell.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/shell.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -34,9 +34,12 @@ gdb_test_no_output "! exit 1"
 gdb_test "p \$_shell_exitcode" " = 1" "shell fail exitcode"
 gdb_test "p \$_shell_exitsignal" " = void" "shell fail exitsignal"
 
-gdb_test_no_output "! kill -2 $$"
-gdb_test "p \$_shell_exitcode" " = void" "shell interrupt exitcode"
-gdb_test "p \$_shell_exitsignal" " = 2" "shell interrupt exitsignal"
+# This test will not work when the shell is CMD.EXE.
+if { ! [ishost *-*-mingw*] } {
+    gdb_test_no_output "! kill -2 $$"
+    gdb_test "p \$_shell_exitcode" " = void" "shell interrupt exitcode"
+    gdb_test "p \$_shell_exitsignal" " = 2" "shell interrupt exitsignal"
+}
 
 # Define the user command "foo", used to test "pipe" command.
 gdb_test_multiple "define foo" "define foo" {
@@ -67,16 +70,16 @@ gdb_test "|foo|grep truc|wc -l" "1" "no
 gdb_test "echo coucou\\n" "coucou" "echo coucou"
 gdb_test "||wc -l" "1" "repeat previous command"
 
-gdb_test "| -d ! echo this contains a | character\\n ! sed -e 's/|/PIPE/'" \
+gdb_test "| -d ! echo this contains a | character\\n ! sed -e \"s/|/PIPE/\"" \
     "this contains a PIPE character" "alternate 1char delim"
 
-gdb_test "|-d ! echo this contains a | character\\n!sed -e 's/|/PIPE/'" \
+gdb_test "|-d ! echo this contains a | character\\n!sed -e \"s/|/PIPE/\"" \
     "this contains a PIPE character" "alternate 1char delim, no space"
 
-gdb_test "| -d !!! echo this contains a | character\\n !!! sed -e 's/|/PIPE/'" \
+gdb_test "| -d !!! echo this contains a | character\\n !!! sed -e \"s/|/PIPE/\"" \
     "this contains a PIPE character" "alternate 3char delim"
 
-gdb_test "|-d !!! echo this contains a | character\\n!!!sed -e 's/|/PIPE/'" \
+gdb_test "|-d !!! echo this contains a | character\\n!!!sed -e \"s/|/PIPE/\"" \
     "this contains a PIPE character" "alternate 3char delim, no space"
 
 # Convenience variables with pipe command.
@@ -88,9 +91,12 @@ gdb_test "|p 123| exit 1" ""
 gdb_test "p \$_shell_exitcode" " = 1" "pipe fail exitcode"
 gdb_test "p \$_shell_exitsignal" " = void" "pipe fail exitsignal"
 
-gdb_test "|p 123| kill -2 $$" ""
-gdb_test "p \$_shell_exitcode" " = void" "pipe interrupt exitcode"
-gdb_test "p \$_shell_exitsignal" " = 2" "pipe interrupt exitsignal"
+# This test will not work when the shell is CMD.EXE.
+if { ! [ishost *-*-mingw*] } {
+    gdb_test "|p 123| kill -2 $$" ""
+    gdb_test "p \$_shell_exitcode" " = void" "pipe interrupt exitcode"
+    gdb_test "p \$_shell_exitsignal" " = 2" "pipe interrupt exitsignal"
+}
 
 # Error handling verifications.
 gdb_test "|" "Missing COMMAND" "all missing"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/shlib-call.exp ./gdb/testsuite/gdb.base/shlib-call.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/shlib-call.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/shlib-call.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
@@ -142,9 +142,14 @@ gdb_test_multiple "step" "step out of sh
     }
     -re ".*\\\}.*$gdb_prompt $" {
 	pass "step out of shr2 to main (stopped in shr2 epilogue)"
-	gdb_test "step" \
-	    "main \\(\\) at.*g = mainshr1\\(g\\);" \
-	    "step out of shr2 epilogue to main"
+	gdb_test_multiple "step" "step out of shr2 epilogue to main" {
+	    -re -wrap "main \\(\\) at.*g = mainshr1\\(g\\);" {
+		pass $gdb_test_name
+	    }
+	    -re -wrap "main \\(\\) at.*g = shr2\\(g\\);" {
+		gdb_test "step" "g = mainshr1\\(g\\);" $gdb_test_name
+	    }
+	}
     }
 }
     
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/shreloc.exp ./gdb/testsuite/gdb.base/shreloc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/shreloc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/shreloc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigall.exp ./gdb/testsuite/gdb.base/sigall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1995-2020 Free Software Foundation, Inc.
+#   Copyright 1995-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigaltstack.c ./gdb/testsuite/gdb.base/sigaltstack.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigaltstack.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigaltstack.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
@@ -68,6 +68,8 @@ catcher (int signal)
     case INNER:
       level = LEAF;
       return;
+    default:
+      abort ();
     }
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigaltstack.exp ./gdb/testsuite/gdb.base/sigaltstack.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigaltstack.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigaltstack.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigbpt.c ./gdb/testsuite/gdb.base/sigbpt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigbpt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigbpt.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigbpt.exp ./gdb/testsuite/gdb.base/sigbpt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigbpt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigbpt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
@@ -138,7 +138,9 @@ proc stepi_out { name args } {
     # disable SIGSEGV, ensuring that further signals stop the
     # inferior.  Stops a SIGSEGV infinite loop when a broke system
     # keeps re-executing the faulting instruction.
-    rerun_to_main
+    with_test_prefix $name {
+	rerun_to_main
+    }
     gdb_test "handle ${signame} nostop print pass" ".*" "${name}; pass ${signame}"
     gdb_test "continue" "keeper.*" "${name}; continue to keeper"
     gdb_test "handle ${signame} stop print nopass" ".*" "${name}; nopass ${signame}"
@@ -212,7 +214,9 @@ proc cont_out { name args } {
     # disable SIGSEGV, ensuring that further signals stop the
     # inferior.  Stops a SIGSEGV infinite loop when a broke system
     # keeps re-executing the faulting instruction.
-    rerun_to_main
+    with_test_prefix $name {
+	rerun_to_main
+    }
     gdb_test "handle ${signame} nostop print pass" ".*" "${name}; pass ${signame}"
     gdb_test "continue" "keeper.*" "${name}; continue to keeper"
     gdb_test "handle ${signame} stop print nopass" ".*" "${name}; nopass ${signame}"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigchld.c ./gdb/testsuite/gdb.base/sigchld.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigchld.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigchld.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigchld.exp ./gdb/testsuite/gdb.base/sigchld.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigchld.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigchld.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-addr.c ./gdb/testsuite/gdb.base/siginfo-addr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-addr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/siginfo-addr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-addr.exp ./gdb/testsuite/gdb.base/siginfo-addr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-addr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/siginfo-addr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo.c ./gdb/testsuite/gdb.base/siginfo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/siginfo.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo.exp ./gdb/testsuite/gdb.base/siginfo.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/siginfo.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-infcall.c ./gdb/testsuite/gdb.base/siginfo-infcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-infcall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/siginfo-infcall.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-infcall.exp ./gdb/testsuite/gdb.base/siginfo-infcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-infcall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/siginfo-infcall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-obj.c ./gdb/testsuite/gdb.base/siginfo-obj.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-obj.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/siginfo-obj.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-obj.exp ./gdb/testsuite/gdb.base/siginfo-obj.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-obj.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/siginfo-obj.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
@@ -45,7 +45,8 @@ if ![runto_main] then {
 }
 
 # Run to the signal.
-gdb_test "continue" ".*Program received signal SIGSEGV.*" "continue to signal"
+gdb_test "continue" ".*Program received signal SIGSEGV.*" \
+	 "continue to signal, 1st"
 
 # Try to generate a core file, for a later test.
 set gcorefile [standard_output_file $testfile.gcore]
@@ -86,13 +87,14 @@ gdb_test_multiple "p \$_siginfo" "$test"
 
 set bp_location [gdb_get_line_number "set breakpoint here"]
 
-gdb_test "break $bp_location"
-gdb_test "continue" ".* handler .*" "continue to handler"
-
-gdb_test "p ssi_addr" " = \\(void \\*\\) $ssi_addr"
-gdb_test "p ssi_errno" " = $ssi_errno"
-gdb_test "p ssi_code" " = $ssi_code"
-gdb_test "p ssi_signo" " = $ssi_signo"
+with_test_prefix "validate siginfo fields" {
+    gdb_test "break $bp_location"
+    gdb_test "continue" ".* handler .*" "continue to handler"
+    gdb_test "p ssi_addr" " = \\(void \\*\\) $ssi_addr"
+    gdb_test "p ssi_errno" " = $ssi_errno"
+    gdb_test "p ssi_code" " = $ssi_code"
+    gdb_test "p ssi_signo" " = $ssi_signo"
+}
 
 # Again, but this time, patch si_addr and check that the inferior sees
 # the changed value.
@@ -104,7 +106,8 @@ if ![runto_main] then {
 }
 
 # Run to the signal.
-gdb_test "continue" ".*Program received signal SIGSEGV.*" "continue to signal"
+gdb_test "continue" ".*Program received signal SIGSEGV.*" \
+	 "continue to signal, 2nd"
 
 set test "set si_addr"
 gdb_test "p \$_siginfo._sifields._sigfault.si_addr = 0x666" " = \\(void \\*\\) 0x666"
@@ -112,13 +115,14 @@ gdb_test "p \$_siginfo.si_errno = 666" "
 gdb_test "p \$_siginfo.si_code = 999" " = 999"
 gdb_test "p \$_siginfo.si_signo = 11" " = 11"
 
-gdb_test "break $bp_location"
-gdb_test "continue" ".* handler .*" "continue to handler"
-
-gdb_test "p ssi_addr" " = \\(void \\*\\) 0x666"
-gdb_test "p ssi_errno" " = 666"
-gdb_test "p ssi_code" " = 999"
-gdb_test "p ssi_signo" " = 11"
+with_test_prefix "validate modified siginfo fields" {
+    gdb_test "break $bp_location"
+    gdb_test "continue" ".* handler .*" "continue to handler"
+    gdb_test "p ssi_addr" " = \\(void \\*\\) 0x666"
+    gdb_test "p ssi_errno" " = 666"
+    gdb_test "p ssi_code" " = 999"
+    gdb_test "p ssi_signo" " = 11"
+}
 
 # Test siginfo preservation in core files.
 if {$gcore_created} {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-thread.c ./gdb/testsuite/gdb.base/siginfo-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/siginfo-thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-thread.exp ./gdb/testsuite/gdb.base/siginfo-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/siginfo-thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/siginfo-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signals.exp ./gdb/testsuite/gdb.base/signals.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signals.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/signals.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signals-state-child.c ./gdb/testsuite/gdb.base/signals-state-child.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signals-state-child.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/signals-state-child.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2016-2020 Free Software Foundation, Inc.
+/* Copyright 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signals-state-child.exp ./gdb/testsuite/gdb.base/signals-state-child.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signals-state-child.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/signals-state-child.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signest.c ./gdb/testsuite/gdb.base/signest.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signest.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/signest.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signest.exp ./gdb/testsuite/gdb.base/signest.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signest.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/signest.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signull.c ./gdb/testsuite/gdb.base/signull.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signull.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/signull.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1996-2020 Free Software Foundation, Inc.
+   Copyright 1996-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signull.exp ./gdb/testsuite/gdb.base/signull.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/signull.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/signull.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigrepeat.c ./gdb/testsuite/gdb.base/sigrepeat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigrepeat.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigrepeat.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigrepeat.exp ./gdb/testsuite/gdb.base/sigrepeat.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigrepeat.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigrepeat.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigstep.c ./gdb/testsuite/gdb.base/sigstep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigstep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigstep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigstep.exp ./gdb/testsuite/gdb.base/sigstep.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sigstep.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sigstep.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sizeof.exp ./gdb/testsuite/gdb.base/sizeof.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sizeof.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sizeof.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2000-2020 Free Software Foundation, Inc.
+# Copyright 2000-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip1.c ./gdb/testsuite/gdb.base/skip1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/skip1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip.c ./gdb/testsuite/gdb.base/skip.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/skip.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skipcxx.cc ./gdb/testsuite/gdb.base/skipcxx.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skipcxx.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/skipcxx.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,32 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+namespace somename
+{
+int func()
+{
+  return 23;
+}
+}
+
+int
+main ()
+{
+  int x = somename::func ();
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skipcxx.exp ./gdb/testsuite/gdb.base/skipcxx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skipcxx.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/skipcxx.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,29 @@
+#   Copyright 2020-2021 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/>.
+
+standard_testfile .cc
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
+    return -1
+}
+
+if ![runto_main] {
+    fail "can't run to main"
+    return
+}
+
+gdb_test "skip -rfu ^somename::" \
+    [string_to_regexp "Function(s) ^somename:: will be skipped when stepping."]
+gdb_test "step" ".* return 0;"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip.exp ./gdb/testsuite/gdb.base/skip.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/skip.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2011-2020 Free Software Foundation, Inc.
+#   Copyright 2011-2021 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
@@ -21,8 +21,8 @@ load_lib completion-support.exp
 standard_testfile
 
 if { [prepare_for_testing "failed to prepare" "skip" \
-                          {skip.c skip1.c } \
-                          {debug nowarnings}] } {
+			  {skip.c skip1.c } \
+			  {debug nowarnings}] } {
     return -1
 }
 
@@ -141,9 +141,12 @@ with_test_prefix "step after disabling 3
     }
 
     gdb_test "step" "bar \\(\\) at.*" "step 1"
-    gdb_test "step" ".*" "step 2"; # Return from foo()
-    gdb_test "step" "foo \\(\\) at.*" "step 3"
-    gdb_test "step" ".*" "step 4"; # Return from bar()
+    gdb_test "step" ".*" "step 2"; # Return from bar()
+    # With gcc 9.2.0 we jump once back to main before entering foo here.
+    # If that happens try to step a second time.
+    gdb_test "step" "foo \\(\\) at.*" "step 3" \
+	"main \\(\\) at .*\r\n$gdb_prompt " "step"
+    gdb_test "step" ".*" "step 4"; # Return from foo()
     gdb_test "step" "main \\(\\) at.*" "step 5"
 }
 
@@ -261,7 +264,10 @@ with_test_prefix "step using -fu for baz
     gdb_test_no_output "skip enable 7"
     gdb_test "step" "bar \\(\\) at.*" "step 1"
     gdb_test "step" ".*" "step 2"; # Return from bar()
-    gdb_test "step" "foo \\(\\) at.*" "step 3"
+    # With gcc 9.2.0 we jump once back to main before entering foo here.
+    # If that happens try to step a second time.
+    gdb_test "step" "foo \\(\\) at.*" "step 3" \
+	"main \\(\\) at .*\r\n$gdb_prompt " "step"
     gdb_test "step" ".*" "step 4"; # Return from foo()
     gdb_test "step" "main \\(\\) at.*" "step 5"
 }
@@ -276,7 +282,10 @@ with_test_prefix "step using -rfu for ba
     gdb_test_no_output "skip enable 8"
     gdb_test "step" "bar \\(\\) at.*" "step 1"
     gdb_test "step" ".*" "step 2"; # Return from bar()
-    gdb_test "step" "foo \\(\\) at.*" "step 3"
+    # With gcc 9.2.0 we jump once back to main before entering foo here.
+    # If that happens try to step a second time.
+    gdb_test "step" "foo \\(\\) at.*" "step 3" \
+	"main \\(\\) at .*\r\n$gdb_prompt " "step"
     gdb_test "step" ".*" "step 4"; # Return from foo()
     gdb_test "step" "main \\(\\) at.*" "step 5"
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip-inline.c ./gdb/testsuite/gdb.base/skip-inline.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip-inline.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/skip-inline.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,64 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+#include <stdlib.h>
+
+int bar (void);
+int baz (int);
+void skip1_test_skip_file_and_function (void);
+void test_skip_file_and_function (void);
+
+__attribute__((__always_inline__)) static inline int
+foo (void)
+{
+  return bar ();
+}
+
+int
+main ()
+{
+  volatile int x;
+
+  /* step immediately into the inlined code */
+  baz (foo ());
+
+  /* step first over non-inline code, this involves a different code path */
+  x = 0; x = baz (foo ());
+
+  test_skip_file_and_function ();
+
+  return 0;
+}
+
+static void
+test_skip (void)
+{
+}
+
+static void
+end_test_skip_file_and_function (void)
+{
+  abort ();
+}
+
+void
+test_skip_file_and_function (void)
+{
+  test_skip ();
+  skip1_test_skip_file_and_function ();
+  end_test_skip_file_and_function ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip-inline.exp ./gdb/testsuite/gdb.base/skip-inline.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip-inline.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/skip-inline.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,92 @@
+#   Copyright 2019-2021 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/>.
+
+standard_testfile
+
+if { [prepare_for_testing "failed to prepare" "skip-inline" \
+			  {skip-inline.c skip1.c } \
+			  {debug nowarnings}] } {
+    return -1
+}
+
+set srcfile skip-inline.c
+set srcfile1 skip1.c
+
+if ![runto_main] {
+    fail "can't run to main"
+    return
+}
+
+# Create a skiplist entry for a specified file and function.
+
+gdb_test "skip function foo" "Function foo will be skipped when stepping\."
+
+gdb_test "bt" "\\s*\\#0\\s+main.*" "in the main"
+gdb_test "step" ".*" "step into baz, since foo will be skipped"
+gdb_test "bt" "\\s*\\#0\\s+baz.*" "in the baz, since foo was skipped"
+gdb_test "step" ".*" "step in the baz"
+gdb_test "bt" "\\s*\\#0\\s+baz.*" "still in the baz"
+gdb_test "step" ".*" "step back to main"
+gdb_test "bt" "\\s*\\#0\\s+main.*" "again in the main"
+gdb_test "step" ".*" "step again into baz, since foo will be skipped"
+gdb_test "bt" "\\s*\\#0\\s+baz.*" "again in the baz"
+gdb_test "step" ".*" "step in the baz, again"
+gdb_test "bt" "\\s*\\#0\\s+baz.*" "still in the baz, again"
+gdb_test "step" ".*" "step back to main, again"
+gdb_test "bt" "\\s*\\#0\\s+main.*" "again back to main"
+
+if ![runto_main] {
+    fail "can't run to main"
+    return
+}
+
+with_test_prefix "double step" {
+    gdb_test "bt" "\\s*\\#0\\s+main.*" "in the main"
+    gdb_test "step 2" ".*" "step into baz, since foo will be skipped"
+    gdb_test "bt" "\\s*\\#0\\s+baz.*" "still in the baz"
+    gdb_test "step" ".*" "step back to main"
+    gdb_test "bt" "\\s*\\#0\\s+main.*" "again in the main"
+    gdb_test "step 2" ".*" "step again into baz, since foo will be skipped"
+    gdb_test "bt" "\\s*\\#0\\s+baz.*" "again in the baz"
+    gdb_test "step" ".*" "step back to main, again"
+    gdb_test "bt" "\\s*\\#0\\s+main.*" "again back to main"
+}
+
+if ![runto_main] {
+    fail "can't run to main"
+    return
+}
+
+with_test_prefix "triple step" {
+    gdb_test "bt" "\\s*\\#0\\s+main.*" "in the main"
+    gdb_test "step 3" ".*" "step over baz"
+    gdb_test "bt" "\\s*\\#0\\s+main.*" "again in the main"
+    gdb_test "step 3" ".*" "step over baz, again"
+    gdb_test "bt" "\\s*\\#0\\s+main.*" "again back to main"
+}
+
+if ![runto_main] {
+    fail "can't run to main"
+    return
+}
+
+gdb_test "skip delete" ".*" "skip delete"
+
+with_test_prefix "skip current frame" {
+    gdb_test "bt" "\\s*\\#0\\s+main.*" "in the main"
+    gdb_test "step" ".*" "step into foo"
+    gdb_test "bt" "\\s*\\#0\\s+foo.*" "in the foo"
+    gdb_test "skip" "Function foo will be skipped when stepping\." "skip"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip-solib.exp ./gdb/testsuite/gdb.base/skip-solib.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/skip-solib.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/skip-solib.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2011-2020 Free Software Foundation, Inc.
+#   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/so-disc-shr.c ./gdb/testsuite/gdb.base/so-disc-shr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/so-disc-shr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/so-disc-shr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/so-impl-ld.exp ./gdb/testsuite/gdb.base/so-impl-ld.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/so-impl-ld.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/so-impl-ld.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-corrupted.exp ./gdb/testsuite/gdb.base/solib-corrupted.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-corrupted.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-corrupted.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-disc.c ./gdb/testsuite/gdb.base/solib-disc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-disc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-disc.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-disc.exp ./gdb/testsuite/gdb.base/solib-disc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-disc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-disc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-display.exp ./gdb/testsuite/gdb.base/solib-display.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-display.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-display.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-display-lib.c ./gdb/testsuite/gdb.base/solib-display-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-display-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-display-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-display-main.c ./gdb/testsuite/gdb.base/solib-display-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-display-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-display-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-nodir.exp ./gdb/testsuite/gdb.base/solib-nodir.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-nodir.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-nodir.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-overlap.exp ./gdb/testsuite/gdb.base/solib-overlap.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-overlap.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-overlap.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -74,9 +74,10 @@ foreach prelink_lib1 {0x40000000 0x50000
 	return -1
     }
 
-    if {[catch "system \"prelink -N -r ${prelink_lib1} ${binfile_lib1}\""] != 0
-	|| [catch "system \"prelink -N -r ${prelink_lib2} ${binfile_lib2}\""] != 0} {
+    if {[catch "exec prelink -N -r ${prelink_lib1} ${binfile_lib1}" output] != 0
+	|| [catch "exec prelink -N -r ${prelink_lib2} ${binfile_lib2}" output] != 0} {
 	# Maybe we don't have prelink.
+	verbose -log "prelink failed: $output"
 	untested "could not prelink ${binfile_lib1_test_msg} or ${binfile_lib2_test_msg}."
 	return -1
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-overlap-lib.c ./gdb/testsuite/gdb.base/solib-overlap-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-overlap-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-overlap-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2009-2020 Free Software Foundation, Inc.
+/* Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-overlap-main.c ./gdb/testsuite/gdb.base/solib-overlap-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-overlap-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-overlap-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2009-2020 Free Software Foundation, Inc.
+/* Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-probes-nosharedlibrary.c ./gdb/testsuite/gdb.base/solib-probes-nosharedlibrary.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-probes-nosharedlibrary.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-probes-nosharedlibrary.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-probes-nosharedlibrary.exp ./gdb/testsuite/gdb.base/solib-probes-nosharedlibrary.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-probes-nosharedlibrary.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-probes-nosharedlibrary.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-search.c ./gdb/testsuite/gdb.base/solib-search.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-search.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-search.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-search.exp ./gdb/testsuite/gdb.base/solib-search.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-search.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-search.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-search.h ./gdb/testsuite/gdb.base/solib-search.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-search.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-search.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-search-lib1.c ./gdb/testsuite/gdb.base/solib-search-lib1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-search-lib1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-search-lib1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-search-lib2.c ./gdb/testsuite/gdb.base/solib-search-lib2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-search-lib2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-search-lib2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-symbol.exp ./gdb/testsuite/gdb.base/solib-symbol.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-symbol.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-symbol.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-symbol-lib.c ./gdb/testsuite/gdb.base/solib-symbol-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-symbol-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-symbol-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2007-2020 Free Software Foundation, Inc.
+/* Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-symbol-main.c ./gdb/testsuite/gdb.base/solib-symbol-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-symbol-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-symbol-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2007-2020 Free Software Foundation, Inc.
+/* Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-vanish.exp ./gdb/testsuite/gdb.base/solib-vanish.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-vanish.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-vanish.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-vanish-lib1.c ./gdb/testsuite/gdb.base/solib-vanish-lib1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-vanish-lib1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-vanish-lib1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-vanish-lib2.c ./gdb/testsuite/gdb.base/solib-vanish-lib2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-vanish-lib2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-vanish-lib2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-vanish-main.c ./gdb/testsuite/gdb.base/solib-vanish-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-vanish-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-vanish-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-weak.c ./gdb/testsuite/gdb.base/solib-weak.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-weak.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-weak.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-weak.exp ./gdb/testsuite/gdb.base/solib-weak.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/solib-weak.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/solib-weak.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2006-2020 Free Software Foundation, Inc.
+#   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-dir.c ./gdb/testsuite/gdb.base/source-dir.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-dir.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/source-dir.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-dir.exp ./gdb/testsuite/gdb.base/source-dir.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-dir.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/source-dir.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -81,6 +81,12 @@ proc test_truncated_comp_dir {} {
     # find the source file no matter what we added to the directory
     # search path, this should now be fixed.
 
+    # All of these pathname and directory manipulations assume
+    # host == build, so do not attempt this set of tests on remote host.
+    if [is_remote host] {
+        return
+    }
+
     set original_dir [pwd]
     set working_dir [standard_output_file ""]
     cd ${working_dir}
@@ -108,7 +114,11 @@ proc test_truncated_comp_dir {} {
 
     clean_restart ${binfile}
 
-    gdb_test_no_output "set directories \$cdir:\$cwd"
+    if { [ishost *-*-mingw*] } {
+        gdb_test_no_output "set directories \$cdir;\$cwd"
+    } else {
+	gdb_test_no_output "set directories \$cdir:\$cwd"
+    }
     gdb_test "show directories" \
 	"\r\nSource directories searched: \\\$cdir\[:;\]\\\$cwd"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-error-1.gdb ./gdb/testsuite/gdb.base/source-error-1.gdb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-error-1.gdb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/source-error-1.gdb	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-error.gdb ./gdb/testsuite/gdb.base/source-error.gdb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-error.gdb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/source-error.gdb	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-execution.c ./gdb/testsuite/gdb.base/source-execution.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-execution.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/source-execution.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-execution.exp ./gdb/testsuite/gdb.base/source-execution.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-execution.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/source-execution.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-execution.gdb ./gdb/testsuite/gdb.base/source-execution.gdb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-execution.gdb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/source-execution.gdb	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source.exp ./gdb/testsuite/gdb.base/source.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/source.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-nofile.gdb ./gdb/testsuite/gdb.base/source-nofile.gdb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-nofile.gdb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/source-nofile.gdb	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-test.gdb ./gdb/testsuite/gdb.base/source-test.gdb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/source-test.gdb	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/source-test.gdb	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.c ./gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.exp ./gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sss-bp-on-user-bp-2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sss-bp-on-user-bp.c ./gdb/testsuite/gdb.base/sss-bp-on-user-bp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sss-bp-on-user-bp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sss-bp-on-user-bp.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sss-bp-on-user-bp.exp ./gdb/testsuite/gdb.base/sss-bp-on-user-bp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sss-bp-on-user-bp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sss-bp-on-user-bp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stack-checking.c ./gdb/testsuite/gdb.base/stack-checking.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stack-checking.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/stack-checking.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stack-checking.exp ./gdb/testsuite/gdb.base/stack-checking.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stack-checking.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/stack-checking.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stack-protector.c ./gdb/testsuite/gdb.base/stack-protector.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stack-protector.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/stack-protector.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stack-protector.exp ./gdb/testsuite/gdb.base/stack-protector.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stack-protector.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/stack-protector.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stale-infcall.c ./gdb/testsuite/gdb.base/stale-infcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stale-infcall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/stale-infcall.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stale-infcall.exp ./gdb/testsuite/gdb.base/stale-infcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stale-infcall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/stale-infcall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stap-probe.c ./gdb/testsuite/gdb.base/stap-probe.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stap-probe.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/stap-probe.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
@@ -15,7 +15,7 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-#if USE_PROBES
+#if USE_SEMAPHORES
 
 #define _SDT_HAS_SEMAPHORES
 __extension__ unsigned short test_user_semaphore __attribute__ ((unused)) __attribute__ ((section (".probes")));
@@ -31,6 +31,8 @@ __extension__ unsigned short test_pstr_s
 __extension__ unsigned short test_ps_semaphore __attribute__ ((unused)) __attribute__ ((section (".probes")));
 #else
 
+int relocation_marker __attribute__ ((unused));
+
 #define TEST 1
 #define TEST2 1
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stap-probe.exp ./gdb/testsuite/gdb.base/stap-probe.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/stap-probe.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/stap-probe.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
@@ -18,14 +18,20 @@ standard_testfile
 # Run the tests.  We run the tests two different ways: once with a
 # plain probe, and once with a probe that has an associated semaphore.
 # This returns -1 on failure to compile or start, 0 otherwise.
-proc stap_test {exec_name {arg ""}} {
+proc stap_test {exec_name {args ""}} {
     global testfile hex srcfile
 
     if {[prepare_for_testing "failed to prepare" ${exec_name} $srcfile \
-	   [concat $arg debug]]} {
+	   [concat $args debug]]} {
 	return -1
     }
 
+    set semaphore_addr_var ""
+    if {[string first "-DUSE_SEMAPHORES" $args] == -1} {
+	gdb_test_no_output "set breakpoint always-inserted on"
+	set semaphore_addr_var [get_hexadecimal_valueof "&relocation_marker" "0"]
+    }
+
     if ![runto_main] {
 	return -1
     }
@@ -33,15 +39,34 @@ proc stap_test {exec_name {arg ""}} {
     gdb_test "print \$_probe_argc" "No probe at PC $hex" \
 	"check argument not at probe point"
 
-    gdb_test "info probes stap" \
-	"test *user *$hex .*"
-    
+    if {[string first "-DUSE_SEMAPHORES" $args] != -1} {
+	gdb_test "info probes stap" \
+	    "test *user *$hex *$hex .*"
+    } else {
+	gdb_test "info probes stap" \
+	    "test *user *$hex .*"
+    }
+
     if {[runto "-pstap test:user"]} {
 	pass "run to -pstap test:user"
     } else {
 	fail "run to -pstap test:user"
     }
 
+    if {[string first "-DUSE_SEMAPHORES" $args] == -1} {
+	set relocation_base \
+	   [expr [get_hexadecimal_valueof "&relocation_marker" "0"] - $semaphore_addr_var]
+	if {$relocation_base != 0} {
+	   # Checks that GDB doesn't mistakenly relocate and write to null
+	   # semaphore addresses.  If it were to relocate a zero-valued
+	   # semaphore address and increment the value at that address, we
+	   # would expect to see "\200ELF" here instead.
+	   gdb_test "p (*(char*) $relocation_base)@4" \
+		" = \"\\\\177ELF\"" \
+		"null semaphore relocation"
+	}
+    }
+
     # Test probe arguments.
     gdb_test "print \$_probe_argc" " = 1" \
     "print \$_probe_argc for probe user"
@@ -92,11 +117,11 @@ proc stap_test {exec_name {arg ""}} {
     return 0
 }
 
-proc stap_test_no_debuginfo {exec_name {arg ""}} {
+proc stap_test_no_debuginfo {exec_name {args ""}} {
     global testfile hex
 
     if {[prepare_for_testing "failed to prepare" ${exec_name} ${testfile}.c \
-	   {$arg nodebug optimize=-O2}]} {
+	   [concat $args nodebug optimize=-O2]]} {
 	return -1
     }
 
@@ -163,10 +188,14 @@ with_test_prefix "without semaphore, not
 	untested "stap probe test failed"
 	  return -1
     }
+
+    foreach_with_prefix pie { "nopie" "pie" } {
+	stap_test "stap-probe-nosem-noopt-$pie" $pie
+    }
 }
 
 with_test_prefix "with semaphore, not optimized" {
-    stap_test "stap-probe-sem-noopt" "-DUSE_PROBES"
+    stap_test "stap-probe-sem-noopt" additional_flags=-DUSE_SEMAPHORES
 }
 
 with_test_prefix "without semaphore, optimized" {
@@ -174,5 +203,5 @@ with_test_prefix "without semaphore, opt
 }
 
 with_test_prefix "with semaphore, optimized" {
-    stap_test_no_debuginfo "stap-probe-sem-opt" "-DUSE_PROBES"
+    stap_test_no_debuginfo "stap-probe-sem-opt" additional_flags=-DUSE_SEMAPHORES
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/start.c ./gdb/testsuite/gdb.base/start.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/start.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/start.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/start-cpp.cc ./gdb/testsuite/gdb.base/start-cpp.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/start-cpp.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/start-cpp.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/start-cpp.exp ./gdb/testsuite/gdb.base/start-cpp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/start-cpp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/start-cpp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/start.exp ./gdb/testsuite/gdb.base/start.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/start.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/start.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/starti.c ./gdb/testsuite/gdb.base/starti.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/starti.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/starti.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/starti.exp ./gdb/testsuite/gdb.base/starti.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/starti.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/starti.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/startup-with-shell.c ./gdb/testsuite/gdb.base/startup-with-shell.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/startup-with-shell.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/startup-with-shell.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/startup-with-shell.exp ./gdb/testsuite/gdb.base/startup-with-shell.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/startup-with-shell.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/startup-with-shell.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/statistics.exp ./gdb/testsuite/gdb.base/statistics.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/statistics.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/statistics.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-break.c ./gdb/testsuite/gdb.base/step-break.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-break.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-break.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-break.exp ./gdb/testsuite/gdb.base/step-break.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-break.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-break.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-bt.c ./gdb/testsuite/gdb.base/step-bt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-bt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-bt.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-bt.exp ./gdb/testsuite/gdb.base/step-bt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-bt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-bt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-indirect-call-thunk.c ./gdb/testsuite/gdb.base/step-indirect-call-thunk.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-indirect-call-thunk.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-indirect-call-thunk.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-indirect-call-thunk.exp ./gdb/testsuite/gdb.base/step-indirect-call-thunk.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-indirect-call-thunk.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-indirect-call-thunk.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-line.c ./gdb/testsuite/gdb.base/step-line.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-line.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-line.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test step/next in presence of #line directives.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-line.exp ./gdb/testsuite/gdb.base/step-line.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-line.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-line.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2001-2020 Free Software Foundation, Inc.
+# Copyright 2001-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-line.inp ./gdb/testsuite/gdb.base/step-line.inp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-line.inp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-line.inp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # Test step/next in presence of #line directives
 
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-clone.c ./gdb/testsuite/gdb.base/step-over-clone.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-clone.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-over-clone.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-exit.c ./gdb/testsuite/gdb.base/step-over-exit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-exit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-over-exit.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-exit.exp ./gdb/testsuite/gdb.base/step-over-exit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-exit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-over-exit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2016-2020 Free Software Foundation, Inc.
+#   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-fork.c ./gdb/testsuite/gdb.base/step-over-fork.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-fork.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-over-fork.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-no-symbols.exp ./gdb/testsuite/gdb.base/step-over-no-symbols.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-no-symbols.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-over-no-symbols.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
@@ -78,7 +78,9 @@ proc test_step_over { displaced } {
 
     set after_addr [get_pc "get after PC"]
 
-    gdb_assert {$before_addr != $after_addr} "advanced"
+    gdb_assert {{[string is integer -strict $before_addr] \
+		 && [string is integer -strict $after_addr] \
+		 && $before_addr != $after_addr}} "advanced"
 }
 
 foreach displaced { "off" "on" "auto" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-syscall.exp ./gdb/testsuite/gdb.base/step-over-syscall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-syscall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-over-syscall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -16,13 +16,27 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 set syscall_insn ""
+set syscall_register ""
+array set syscall_number {}
 
-# Define the syscall instruction for each target.
+# Define the syscall instructions, registers and numbers for each target.
 
 if { [istarget "i\[34567\]86-*-linux*"] || [istarget "x86_64-*-linux*"] } {
     set syscall_insn "\[ \t\](int|syscall|sysenter)\[ \t\]"
+    set syscall_register "eax"
+    array set syscall_number {fork "(56|120)" vfork "(58|190)" \
+      clone "(56|120)"}
 } elseif { [istarget "aarch64*-*-linux*"] || [istarget "arm*-*-linux*"] } {
     set syscall_insn "\[ \t\](swi|svc)\[ \t\]"
+
+    if { [istarget "aarch64*-*-linux*"] } {
+	set syscall_register "x8"
+    } else {
+	set syscall_register "r7"
+    }
+
+    array set syscall_number {fork "(120|220)" vfork "(190|220)" \
+      clone "(120|220)"}
 } else {
     return -1
 }
@@ -30,13 +44,22 @@ if { [istarget "i\[34567\]86-*-linux*"]
 proc_with_prefix check_pc_after_cross_syscall { syscall syscall_insn_next_addr } {
     set syscall_insn_next_addr_found [get_hexadecimal_valueof "\$pc" "0"]
 
-    set test "single step over $syscall final pc"
-    if {$syscall_insn_next_addr != 0
-	&& $syscall_insn_next_addr == $syscall_insn_next_addr_found} {
-	pass $test
-    } else {
-	fail $test
-    }
+    gdb_assert {$syscall_insn_next_addr != 0 \
+      && $syscall_insn_next_addr == $syscall_insn_next_addr_found} \
+	"single step over $syscall final pc"
+}
+
+# Verify the syscall number is the correct one.
+
+proc syscall_number_matches { syscall } {
+  global syscall_register syscall_number
+
+  if {[gdb_test "p \$$syscall_register" ".*= $syscall_number($syscall)" \
+    "syscall number matches"] != 0} {
+      return 0
+  }
+
+  return 1
 }
 
 # Restart GDB and set up the test.  Return a list in which the first one
@@ -47,6 +70,8 @@ proc_with_prefix check_pc_after_cross_sy
 proc setup { syscall } {
     global gdb_prompt syscall_insn
 
+    global hex
+    set next_insn_addr -1
     set testfile "step-over-$syscall"
 
     clean_restart $testfile
@@ -62,7 +87,7 @@ proc setup { syscall } {
     gdb_test_no_output "set displaced-stepping off" \
 	"set displaced-stepping off during test setup"
 
-    gdb_test "break $syscall" "Breakpoint \[0-9\]* at .*"
+    gdb_test "break \*$syscall" "Breakpoint \[0-9\]* at .*"
 
     gdb_test "continue" "Continuing\\..*Breakpoint \[0-9\]+, (.* in |__libc_|)$syscall \\(\\).*" \
 	"continue to $syscall (1st time)"
@@ -75,39 +100,77 @@ proc setup { syscall } {
     # Hit the breakpoint on $syscall for the second time.  In this time,
     # the address of syscall insn and next insn of syscall are recorded.
 
-    gdb_test "display/i \$pc" ".*"
-
-    # Single step until we see a syscall insn or we reach the
-    # upper bound of loop iterations.
-    set msg "find syscall insn in $syscall"
-    set steps 0
-    set max_steps 1000
-    gdb_test_multiple "stepi" $msg {
-	-re ".*$syscall_insn.*$gdb_prompt $" {
-	    pass $msg
+    # Check if the first instruction we stopped at is the syscall one.
+    set syscall_insn_addr -1
+    gdb_test_multiple "display/i \$pc" "fetch first stop pc" {
+	-re "display/i .*: x/i .*=> ($hex) .*:.*$syscall_insn.*$gdb_prompt $" {
+	    set insn_addr $expect_out(1,string)
+
+	    # Is the syscall number the correct one?
+	    if {[syscall_number_matches $syscall]} {
+		set syscall_insn_addr $insn_addr
+	    }
+	    pass $gdb_test_name
+	}
+	-re ".*$gdb_prompt $" {
+	    pass $gdb_test_name
 	}
-	-re "x/i .*=>.*\r\n$gdb_prompt $" {
-	    incr steps
-	    if {$steps == $max_steps} {
-		fail $msg
-	    } else {
-		send_gdb "stepi\n"
-		exp_continue
+    }
+
+    # If we are not at the syscall instruction yet, keep looking for it with
+    # stepi commands.
+    if {$syscall_insn_addr == -1} {
+	# Single step until we see a syscall insn or we reach the
+	# upper bound of loop iterations.
+	set steps 0
+	set max_steps 1000
+	gdb_test_multiple "stepi" "find syscall insn in $syscall" {
+	    -re ".*$syscall_insn.*$gdb_prompt $" {
+		# Is the syscall number the correct one?
+		if {[syscall_number_matches $syscall]} {
+		    pass $gdb_test_name
+		} else {
+		    exp_continue
+		}
 	    }
+	    -re "x/i .*=>.*\r\n$gdb_prompt $" {
+		incr steps
+		if {$steps == $max_steps} {
+		    fail $gdb_test_name
+		} else {
+		    send_gdb "stepi\n"
+		    exp_continue
+		}
+	    }
+	}
+
+	if {$steps == $max_steps} {
+	    return { -1, -1 }
 	}
     }
 
-    if {$steps == $max_steps} {
-	return { -1, -1 }
+    # We have found the syscall instruction.  Now record the next instruction.
+    # Use the X command instead of stepi since we can't guarantee
+    # stepi is working properly.
+    gdb_test_multiple "x/2i \$pc" "pc before/after syscall instruction" {
+	-re "x/2i .*=> ($hex) .*:.*$syscall_insn.* ($hex) .*:.*$gdb_prompt $" {
+	    set syscall_insn_addr $expect_out(1,string)
+	    set next_insn_addr $expect_out(3,string)
+	    pass $gdb_test_name
+	}
     }
 
-    set syscall_insn_addr [get_hexadecimal_valueof "\$pc" "0" \
-			       "pc before stepi"]
     if {[gdb_test "stepi" "x/i .*=>.*" "stepi $syscall insn"] != 0} {
 	return { -1, -1 }
     }
-    return [list $syscall_insn_addr [get_hexadecimal_valueof "\$pc" \
-					 "0" "pc after stepi"]]
+
+    set pc_after_stepi [get_hexadecimal_valueof "\$pc" "0" \
+			    "pc after stepi"]
+
+    gdb_assert {$next_insn_addr == $pc_after_stepi} \
+	"pc after stepi matches insn addr after syscall"
+
+    return [list $syscall_insn_addr $pc_after_stepi]
 }
 
 proc step_over_syscall { syscall } {
@@ -156,8 +219,13 @@ proc step_over_syscall { syscall } {
 		}
 	    }
 
-	    gdb_test "continue" "Continuing\\..*Breakpoint \[0-9\]+, .*" \
-		"continue to syscall insn $syscall"
+	    # Check if the syscall breakpoint is at the syscall instruction
+	    # address.  If so, no need to continue, otherwise we will run the
+	    # inferior to completion.
+	    if {$syscall_insn_addr != [get_hexadecimal_valueof "\$pc" "0"]} {
+		gdb_test "continue" "Continuing\\..*Breakpoint \[0-9\]+, .*" \
+		    "continue to syscall insn $syscall"
+	    }
 
 	    gdb_test_no_output "set displaced-stepping $displaced"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-vfork.c ./gdb/testsuite/gdb.base/step-over-vfork.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-over-vfork.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-over-vfork.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-resume-infcall.c ./gdb/testsuite/gdb.base/step-resume-infcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-resume-infcall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-resume-infcall.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-resume-infcall.exp ./gdb/testsuite/gdb.base/step-resume-infcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-resume-infcall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-resume-infcall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-sw-breakpoint-adjust-pc.c ./gdb/testsuite/gdb.base/step-sw-breakpoint-adjust-pc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-sw-breakpoint-adjust-pc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-sw-breakpoint-adjust-pc.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-sw-breakpoint-adjust-pc.exp ./gdb/testsuite/gdb.base/step-sw-breakpoint-adjust-pc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-sw-breakpoint-adjust-pc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-sw-breakpoint-adjust-pc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-symless.c ./gdb/testsuite/gdb.base/step-symless.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-symless.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-symless.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-symless.exp ./gdb/testsuite/gdb.base/step-symless.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-symless.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-symless.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-test.exp ./gdb/testsuite/gdb.base/step-test.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/step-test.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/step-test.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/store.exp ./gdb/testsuite/gdb.base/store.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/store.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/store.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
@@ -55,26 +55,37 @@ proc check_set { t l r new add } {
 	}
     }
 
-    set supported 1
+    set supported_l 1
     set test "${prefix}; print old l, expecting ${l}"
     gdb_test_multiple "print l" "$test"  {
-	-re " = <optimized out>\r\n$gdb_prompt $" {
+	-re -wrap " = <optimized out>" {
 	    unsupported $test
-	    set supported 0
+	    set supported_l 0
 	}
-	-re " = ${l}\r\n$gdb_prompt $" {
+	-re -wrap " = ${l}" {
 	    pass $test
 	}
     }
-    if { $supported } {
-	gdb_test "print r" " = ${r}" \
-	    "${prefix}; print old r, expecting ${r}"
+
+    set test "${prefix}; print old r, expecting ${r}"
+    gdb_test_multiple "print r" "$test"  {
+	-re -wrap " = <optimized out>" {
+	    unsupported $test
+	}
+	-re -wrap " = ${r}" {
+	    pass $test
+	}
+    }
+
+    if { $supported_l } {
 	gdb_test_no_output "set variable l = 4" \
 	    "${prefix}; setting l to 4"
 	gdb_test "print l" " = ${new}" \
 	    "${prefix}; print new l, expecting ${new}"
-	gdb_test "next" "return l \\+ r;" \
-	    "${prefix}; next over add call"
+    }
+    gdb_test "next" "return l \\+ r;" \
+	"${prefix}; next over add call"
+    if { $supported_l } {
 	gdb_test "print l" " = ${add}" \
 	    "${prefix}; print incremented l, expecting ${add}"
     }
@@ -101,20 +112,29 @@ proc up_set { t l r new } {
     gdb_test "up" "l = add_${t} .l, r.;" \
 	"${prefix}; up"
 
-    set supported 1
+    set supported_l 1
     set test "${prefix}; print old l, expecting ${l}"
     gdb_test_multiple "print l" "$test"  {
-	-re " = <optimized out>\r\n$gdb_prompt $" {
+	-re -wrap " = <optimized out>" {
 	    unsupported $test
-	    set supported 0
+	    set supported_l 0
 	}
-	-re " = ${l}\r\n$gdb_prompt $" {
+	-re -wrap " = ${l}" {
 	    pass $test
 	}
     }
-    if { $supported } {
-	gdb_test "print r" " = ${r}" \
-	    "${prefix}; print old r, expecting ${r}"
+
+    set test "${prefix}; print old r, expecting ${r}"
+    gdb_test_multiple "print r" "$test"  {
+	-re -wrap " = <optimized out>" {
+	    unsupported $test
+	}
+	-re -wrap " = ${r}" {
+	    pass $test
+	}
+    }
+
+    if { $supported_l } {
 	gdb_test_no_output "set variable l = 4" \
 	    "${prefix}; set l to 4"
 	gdb_test "print l" " = ${new}" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs2.c ./gdb/testsuite/gdb.base/structs2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/structs2.c	2021-05-21 01:57:25.000000000 +0000
@@ -13,7 +13,7 @@ main ()
 
   bkpt = 0;
   param_reg (120, 130, 32000, 33000);
-  param_reg (130, 120, 33000, 32000);
+  param_reg (-120, 130, -32000, 33000);
 
   return 0;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs2.exp ./gdb/testsuite/gdb.base/structs2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/structs2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
@@ -13,7 +13,6 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-set prototypes 1
 standard_testfile .c
 
 # Create and source the file that provides information about the compiler
@@ -22,30 +21,15 @@ if [get_compiler_info] {
     return -1
 }
 
-# build the first test case
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
-    # built the second test case since we can't use prototypes
-    warning "Prototypes not supported, rebuilding with -DNO_PROTOTYPES"
-    if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DNO_PROTOTYPES}] != "" } {
-	untested "failed to compile"
-	return -1
-    }
-    set prototypes 0
+if { [prepare_for_testing "failed to prepare" $binfile $srcfile {debug}] } {
+    return -1
 }
 
-# Start with a fresh gdb.
-
-clean_restart ${binfile}
-
-gdb_test_no_output "set width 0"
-
 if ![runto_main] then {
     fail "can't run to main"
     return 0
 }
 
-# Ok, we're finally ready to actually do our tests.
-
 gdb_test "f" \
     ".*bkpt = 0.*" \
     "structs2 sanity check"
@@ -65,11 +49,5 @@ if [test_compiler_info gcc-3-*] {
   setup_xfail hppa*-* gcc/15860
 }
 gdb_test "continue" \
-    ".*pr_char=-126.*pr_uchar=120.*pr_short=-32536.*pr_ushort=32000.*bkpt = 1.*" \
+    ".*pr_char=-120.*pr_uchar=130.*pr_short=-32000.*pr_ushort=33000.*bkpt = 1.*" \
     "structs2 continue2"
-
-# End of tests.
-
-gdb_stop_suppressing_tests
-
-return 0
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs3.c ./gdb/testsuite/gdb.base/structs3.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs3.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/structs3.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs3.exp ./gdb/testsuite/gdb.base/structs3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/structs3.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs.c ./gdb/testsuite/gdb.base/structs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/structs.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1996-2020 Free Software Foundation, Inc.
+   Copyright 1996-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs.exp ./gdb/testsuite/gdb.base/structs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/structs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/structs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 1996-2020 Free Software Foundation, Inc.
+# Copyright 1996-2021 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
@@ -66,21 +66,10 @@ proc start_structs_test { types } {
     }
 
     set binfile [standard_output_file ${testfile}]
-    if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "${flags}"] != "" } {
-	# built the second test case since we can't use prototypes
-	warning "Prototypes not supported, rebuilding with -DNO_PROTOTYPES"
-	if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "${flags} additional_flags=-DNO_PROTOTYPES"] != "" } {
-	    untested "failed to compile"
-	    return -1
-	}
+    if { [prepare_for_testing "failed to prepare" $binfile $srcfile $flags] } {
+	return -1
     }
 
-    # Start with a fresh gdb.
-    gdb_exit
-    gdb_start
-    gdb_reinitialize_dir $srcdir/$subdir
-    gdb_load ${binfile}
-
     # Make certain that the output is consistent
     with_test_prefix "types=$types" {
 	gdb_test_no_output "set print sevenbit-strings"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/style.c ./gdb/testsuite/gdb.base/style.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/style.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/style.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,8 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+
+
+/* The leading newlines here are intentional, do not remove.  They are used to
+   test that the source highlighter doesn't strip them.  */
+/* Copyright 2018-2021 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
@@ -15,6 +19,21 @@
 
 #define SOME_MACRO 23
 
+enum etype
+{
+  VALUE_ONE = 1,
+  VALUE_TWO = 2
+};
+
+struct some_struct
+{
+  int int_field;
+  char *string_field;
+  enum etype e_field;
+};
+
+struct some_struct struct_value = { 23, "skidoo", VALUE_TWO };
+
 int some_called_function (void)
 {
   return 0;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/style.exp ./gdb/testsuite/gdb.base/style.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/style.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/style.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -34,11 +34,18 @@ save_vars { env(TERM) } {
 	return -1
     }
 
+    set readnow [readnow]
+
     if {![runto_main]} {
 	fail "style tests failed"
 	return
     }
 
+    # Check that the source highlighter has not stripped away the leading
+    # newlines.
+    set main_line [gdb_get_line_number "break here"]
+    gdb_test "list $main_line,$main_line" "return.*some_called_function.*"
+
     gdb_test_no_output "set style enabled on"
 
     set main_expr [style main function]
@@ -79,14 +86,22 @@ save_vars { env(TERM) } {
     }
 
     if {$test_macros} {
+	set macro_line [gdb_get_line_number "\#define SOME_MACRO"]
 	gdb_test "info macro SOME_MACRO" \
-	    "Defined at $base_file_expr:16\r\n#define SOME_MACRO 23"
+	    "Defined at $base_file_expr:$macro_line\r\n#define SOME_MACRO 23"
     }
 
     set func [style some_called_function function]
     # Somewhere should see the call to the function.
     gdb_test "disassemble main" "[style $hex address].*$func.*"
 
+    set ifield [style int_field variable]
+    set sfield [style string_field variable]
+    set efield [style e_field variable]
+    set evalue [style VALUE_TWO variable]
+    gdb_test "print struct_value" \
+	"\{$ifield = 23,.*$sfield = .*,.*$efield = $evalue.*"
+
     gdb_exit
     gdb_spawn
 
@@ -105,7 +120,7 @@ save_vars { env(TERM) } {
 	[multi_line \
 	     "List of classes of commands:" \
 	     "" \
-	     "${aliases_expr} -- Aliases of other commands\." \
+	     "${aliases_expr} -- User-defined aliases of other commands\." \
 	     "${breakpoints_expr} -- Making program stop at certain points\." \
 	     ".*" \
 	    ] \
@@ -117,18 +132,27 @@ save_vars { env(TERM) } {
     gdb_test "apropos -v cut for 'thre" \
 	[multi_line \
 	     "" \
-	     "${taas_expr} --.*" \
+	     "${taas_expr}" \
+	     "Apply a command to all .*" \
 	     "Usage:.*" \
 	     "short${cut_for_thre_expr}ad apply.*" \
 	     "" \
-	     "${tfaas_expr} --.*" \
+	     "${tfaas_expr}" \
+	     "Apply a command to all .*" \
 	     "Usage:.*" \
 	     "short${cut_for_thre_expr}ad apply.*" \
 	    ]
 
     set quoted [string_to_regexp $binfile]
+    set pass_re "Reading symbols from [style $quoted file]\.\.\."
+    if { $readnow } {
+	set pass_re \
+	    [multi_line \
+		 $pass_re \
+		 "Expanding full symbols from [style $quoted file]\.\.\."]
+    }
     gdb_test "file $binfile" \
-	"Reading symbols from [style $quoted file]..." \
+	$pass_re \
 	"filename is styled when loading symbol file"
 
     gdb_test "pwd" "Working directory [style .*? file].*"
@@ -139,4 +163,10 @@ save_vars { env(TERM) } {
 
     gdb_test "show logging file" \
 	"The current logfile is \"[style .*? file]\"\\..*"
+
+    # Check warnings are styled by setting a rubbish data directory.
+    gdb_test "set data-directory Makefile" \
+	"warning: [style .*? file] is not a directory\\..*"
+    gdb_test "show data-directory" \
+	"GDB's data directory is \"[style .*? file]\"\\..*"
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/style-logging.exp ./gdb/testsuite/gdb.base/style-logging.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/style-logging.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/style-logging.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/subst.exp ./gdb/testsuite/gdb.base/subst.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/subst.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/subst.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symbol-alias2.c ./gdb/testsuite/gdb.base/symbol-alias2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symbol-alias2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symbol-alias2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symbol-alias.c ./gdb/testsuite/gdb.base/symbol-alias.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symbol-alias.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symbol-alias.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symbol-alias.exp ./gdb/testsuite/gdb.base/symbol-alias.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symbol-alias.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symbol-alias.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # Test for printing alias symbols.
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symbol-without-target_section.c ./gdb/testsuite/gdb.base/symbol-without-target_section.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symbol-without-target_section.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symbol-without-target_section.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symbol-without-target_section.exp ./gdb/testsuite/gdb.base/symbol-without-target_section.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symbol-without-target_section.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symbol-without-target_section.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sym-file.exp ./gdb/testsuite/gdb.base/sym-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sym-file.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sym-file.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sym-file-lib.c ./gdb/testsuite/gdb.base/sym-file-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sym-file-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sym-file-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sym-file-loader.c ./gdb/testsuite/gdb.base/sym-file-loader.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sym-file-loader.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sym-file-loader.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 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
@@ -20,6 +20,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/mman.h>
+#include <assert.h>
 
 #include "sym-file-loader.h"
 
@@ -112,6 +113,8 @@ load (uint8_t *addr, Elf_External_Phdr *
   mapped_addr = (uint8_t *) mmap ((void *) GETADDR (phdr, p_vaddr),
 				  GET (phdr, p_memsz), perm,
 				  MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
+  assert (mapped_addr != MAP_FAILED);
+
   mapped_size = GET (phdr, p_memsz);
 
   from = (void *) (addr + GET (phdr, p_offset));
@@ -255,7 +258,7 @@ load_shlib (const char *file)
     }
 
   addr = (uint8_t *) mmap (NULL, fsize, PROT_READ, MAP_PRIVATE, fd, 0);
-  if (addr == (uint8_t *) -1)
+  if (addr == MAP_FAILED)
     {
       perror ("mmap failed.");
       return NULL;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sym-file-loader.h ./gdb/testsuite/gdb.base/sym-file-loader.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sym-file-loader.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sym-file-loader.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sym-file-main.c ./gdb/testsuite/gdb.base/sym-file-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/sym-file-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/sym-file-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symfile-warn.c ./gdb/testsuite/gdb.base/symfile-warn.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symfile-warn.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symfile-warn.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symfile-warn.exp ./gdb/testsuite/gdb.base/symfile-warn.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symfile-warn.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symfile-warn.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symlink-sourcefile.c ./gdb/testsuite/gdb.base/symlink-sourcefile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symlink-sourcefile.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symlink-sourcefile.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symlink-sourcefile.exp ./gdb/testsuite/gdb.base/symlink-sourcefile.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symlink-sourcefile.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symlink-sourcefile.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symtab-search-order-1.c ./gdb/testsuite/gdb.base/symtab-search-order-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symtab-search-order-1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symtab-search-order-1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symtab-search-order.c ./gdb/testsuite/gdb.base/symtab-search-order.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symtab-search-order.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symtab-search-order.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symtab-search-order.exp ./gdb/testsuite/gdb.base/symtab-search-order.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symtab-search-order.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symtab-search-order.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symtab-search-order-shlib-1.c ./gdb/testsuite/gdb.base/symtab-search-order-shlib-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/symtab-search-order-shlib-1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/symtab-search-order-shlib-1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/term.c ./gdb/testsuite/gdb.base/term.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/term.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/term.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/term.exp ./gdb/testsuite/gdb.base/term.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/term.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/term.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1988-2020 Free Software Foundation, Inc.
+#   Copyright 1988-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/testenv.c ./gdb/testsuite/gdb.base/testenv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/testenv.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/testenv.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/testenv.exp ./gdb/testsuite/gdb.base/testenv.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/testenv.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/testenv.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/trace-commands.exp ./gdb/testsuite/gdb.base/trace-commands.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/trace-commands.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/trace-commands.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/twice.exp ./gdb/testsuite/gdb.base/twice.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/twice.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/twice.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1997-2020 Free Software Foundation, Inc.
+#   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/type-opaque.exp ./gdb/testsuite/gdb.base/type-opaque.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/type-opaque.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/type-opaque.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/type-opaque-lib.c ./gdb/testsuite/gdb.base/type-opaque-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/type-opaque-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/type-opaque-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test resolving of an opaque type from the loaded shared library.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/type-opaque-main.c ./gdb/testsuite/gdb.base/type-opaque-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/type-opaque-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/type-opaque-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test resolving of an opaque type from the loaded shared library.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ui-redirect.exp ./gdb/testsuite/gdb.base/ui-redirect.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/ui-redirect.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/ui-redirect.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -117,7 +117,7 @@ with_test_prefix "debugging" {
     gdb_test "set debug infrun 1"
     gdb_test "set logging on" \
     "Copying output to /dev/null.*Copying debug output to /dev/null\\."
-    gdb_test "continue" "Continuing.*infrun:.*infrun:.*Breakpoint \[0-9\]+, foo.*"
+    gdb_test "continue" {Continuing.*\[infrun\] .*\[infrun\] .*Breakpoint [0-9]+, foo.*}
     gdb_test "set debug infrun 0"
     gdb_test "set logging off" "Done logging to /dev/null\\."
     gdb_test "help" "List of classes of commands:.*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unload.c ./gdb/testsuite/gdb.base/unload.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unload.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/unload.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unload.exp ./gdb/testsuite/gdb.base/unload.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unload.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/unload.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2003-2020 Free Software Foundation, Inc.
+#   Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unloadshr2.c ./gdb/testsuite/gdb.base/unloadshr2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unloadshr2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/unloadshr2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unloadshr.c ./gdb/testsuite/gdb.base/unloadshr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unloadshr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/unloadshr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/until.exp ./gdb/testsuite/gdb.base/until.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/until.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/until.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/until-nodebug.exp ./gdb/testsuite/gdb.base/until-nodebug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/until-nodebug.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/until-nodebug.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unwindonsignal.c ./gdb/testsuite/gdb.base/unwindonsignal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unwindonsignal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/unwindonsignal.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unwindonsignal.exp ./gdb/testsuite/gdb.base/unwindonsignal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/unwindonsignal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/unwindonsignal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/utf8-identifiers.c ./gdb/testsuite/gdb.base/utf8-identifiers.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/utf8-identifiers.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/utf8-identifiers.c	2021-05-21 01:57:25.000000000 +0000
@@ -2,7 +2,7 @@
 
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/utf8-identifiers.exp ./gdb/testsuite/gdb.base/utf8-identifiers.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/utf8-identifiers.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/utf8-identifiers.exp	2021-05-21 01:57:25.000000000 +0000
@@ -2,7 +2,7 @@
 
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-bt.c ./gdb/testsuite/gdb.base/valgrind-bt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-bt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/valgrind-bt.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-bt.exp ./gdb/testsuite/gdb.base/valgrind-bt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-bt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/valgrind-bt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-disp-step.c ./gdb/testsuite/gdb.base/valgrind-disp-step.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-disp-step.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/valgrind-disp-step.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
@@ -18,6 +18,7 @@
 static int
 foo (void)
 {
+  return 0;
 }
 
 int
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-disp-step.exp ./gdb/testsuite/gdb.base/valgrind-disp-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-disp-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/valgrind-disp-step.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-infcall-2.c ./gdb/testsuite/gdb.base/valgrind-infcall-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-infcall-2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/valgrind-infcall-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <unistd.h>
+
+int
+main (void)
+{
+  sleep (60);
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-infcall-2.exp ./gdb/testsuite/gdb.base/valgrind-infcall-2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-infcall-2.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/valgrind-infcall-2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,75 @@
+# Copyright 2020-2021 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-case tests the scenario for the crash fixed by commit ee3c5f8968
+# "Fix GDB crash when registers cannot be modified":
+# $ valgrind /usr/bin/sleep 10000
+# ==31595== Memcheck, a memory error detector
+# ==31595== Command: /usr/bin/sleep 10000
+# ==31595==
+# $ gdb /usr/bin/sleep
+# (gdb) target remote | vgdb --pid=31595
+# Remote debugging using | vgdb --pid=31595
+#   ...
+# $hex in __GI___nanosleep () at nanosleep.c:27
+# 27	  return SYSCALL_CANCEL (nanosleep, requested_time, remaining);
+# (gdb) p printf ("bla")
+# terminate called after throwing an instance of 'gdb_exception_error'
+# Aborted (core dumped)
+
+load_lib valgrind.exp
+
+if [is_remote target] {
+    # The test always runs locally.
+    return 0
+}
+
+standard_testfile .c
+if {[build_executable $testfile.exp $testfile $srcfile {debug}] == -1} {
+    return -1
+}
+
+set active_at_startup 0
+if { [vgdb_start $active_at_startup] == -1 } {
+    return -1
+}
+
+# Determine whether we're at nanosleep.
+gdb_test_multiple "bt 1" "do printf" {
+    -re -wrap "nanosleep.*" {
+	# If gdb doesn't crash, we get something like:
+	# (gdb) p printf ("bla")
+	# Could not write register "rdi"; remote failure reply 'E.
+	# ERROR changing register rdi regno 5
+	# gdb commands changing registers (pc, sp, ...) (e.g. 'jump',
+	# set pc, calling from gdb a function in the debugged process, ...)
+	# can only be accepted if the thread is VgTs_Runnable or VgTs_Yielding
+	# state
+	# Thread status is VgTs_WaitSys
+	# '
+	# (gdb)
+	gdb_test "p (int)printf (\"bla\")" \
+	    "can only be accepted if the thread is .*" \
+	    $gdb_test_name
+    }
+    -re -wrap "" {
+	# For some reason the error condition does not trigger if we're not
+	# at nanosleep at the point that we're connecting to vgdb.  See also
+	# comment at "exec sleep 1" in vgdb_start.
+	unsupported $gdb_test_name
+    }
+}
+
+vgdb_stop
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-infcall.c ./gdb/testsuite/gdb.base/valgrind-infcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-infcall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/valgrind-infcall.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-infcall.exp ./gdb/testsuite/gdb.base/valgrind-infcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/valgrind-infcall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/valgrind-infcall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/value-double-free.c ./gdb/testsuite/gdb.base/value-double-free.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/value-double-free.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/value-double-free.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/value-double-free.exp ./gdb/testsuite/gdb.base/value-double-free.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/value-double-free.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/value-double-free.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/varargs.exp ./gdb/testsuite/gdb.base/varargs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/varargs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/varargs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
@@ -29,8 +29,6 @@
 
 
 
-set prototypes 0
-
 standard_testfile .c
 
 if [get_compiler_info] {
@@ -101,12 +99,12 @@ if [support_complex_tests] {
     global gdb_prompt
 
     set test "print find_max_float_real(4, fc1, fc2, fc3, fc4)"
-    gdb_test $test ".*= 4 \\+ 4 \\* I"
+    gdb_test $test ".*= 4 \\+ 4i"
 
     set test "print find_max_double_real(4, dc1, dc2, dc3, dc4)"
-    gdb_test $test ".*= 4 \\+ 4 \\* I"
+    gdb_test $test ".*= 4 \\+ 4i"
 
     set test "print find_max_long_double_real(4, ldc1, ldc2, ldc3, ldc4)"
-    gdb_test $test ".*= 4 \\+ 4 \\* I"
+    gdb_test $test ".*= 4 \\+ 4i"
 
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vdso-warning.c ./gdb/testsuite/gdb.base/vdso-warning.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vdso-warning.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vdso-warning.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vdso-warning.exp ./gdb/testsuite/gdb.base/vdso-warning.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vdso-warning.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vdso-warning.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vforked-prog.c ./gdb/testsuite/gdb.base/vforked-prog.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vforked-prog.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vforked-prog.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1997-2020 Free Software Foundation, Inc.
+   Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-datatypes.c ./gdb/testsuite/gdb.base/vla-datatypes.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-datatypes.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-datatypes.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
@@ -46,27 +46,6 @@ vla_factory (int n)
   BAR             bar_vla[n];
   int i;
 
-  struct vla_struct
-  {
-    int something;
-    int vla_field[n];
-  } vla_struct_object;
-
-  struct inner_vla_struct
-  {
-    int something;
-    int vla_field[n];
-    int after;
-  } inner_vla_struct_object;
-
-  union vla_union
-  {
-    int vla_field[n];
-  } vla_union_object;
-
-  vla_struct_object.something = n;
-  inner_vla_struct_object.something = n;
-  inner_vla_struct_object.after = n;
   for (i = 0; i < n; i++)
     {
       int_vla[i] = i*2;
@@ -82,9 +61,6 @@ vla_factory (int n)
       foo_vla[i].a = i*2;
       bar_vla[i].x = i*2;
       bar_vla[i].y.a = i*2;
-      vla_struct_object.vla_field[i] = i*2;
-      vla_union_object.vla_field[i] = i*2;
-      inner_vla_struct_object.vla_field[i] = i*2;
     }
 
   size_t int_size        = sizeof(int_vla);     /* vlas_filled */
@@ -98,9 +74,6 @@ vla_factory (int n)
   size_t uchar_size      = sizeof(unsigned_char_vla);
   size_t foo_size        = sizeof(foo_vla);
   size_t bar_size        = sizeof(bar_vla);
-  size_t vla_struct_object_size = sizeof(vla_struct_object);
-  size_t vla_union_object_size = sizeof(vla_union_object);
-  size_t inner_vla_struct_object_size = sizeof(inner_vla_struct_object);
 
   return;                                 /* break_end_of_vla_factory */
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-datatypes.exp ./gdb/testsuite/gdb.base/vla-datatypes.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-datatypes.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-datatypes.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -41,10 +41,6 @@ gdb_test "print foo_vla" \
          "\\\{\\\{a = 0\\\}, \\\{a = 2\\\}, \\\{a = 4\\\}, \\\{a = 6\\\}, \\\{a = 8\\\}\\\}"
 gdb_test "print bar_vla" \
          "\\\{\\\{x = 0, y = \\\{a = 0\\\}\\\}, \\\{x = 2, y = \\\{a = 2\\\}\\\}, \\\{x = 4, y = \\\{a = 4\\\}\\\}, \\\{x = 6, y = \\\{a = 6\\\}\\\}, \\\{x = 8, y = \\\{a = 8\\\}\\\}\\\}"
-gdb_test "print vla_struct_object" \
-    "\\\{something = 5, vla_field = \\\{0, 2, 4, 6, 8\\\}\\\}"
-gdb_test "print vla_union_object" \
-    "\\\{vla_field = \\\{0, 2, 4, 6, 8\\\}\\\}"
 
 # Check whatis of VLA's.
 gdb_test "whatis int_vla" "type = int \\\[5\\\]"
@@ -61,8 +57,6 @@ gdb_test "whatis unsigned_short_vla" \
 gdb_test "whatis unsigned_char_vla" "type = unsigned char \\\[5\\\]"
 gdb_test "whatis foo_vla" "type = struct foo \\\[5\\\]"
 gdb_test "whatis bar_vla" "type = BAR \\\[5\\\]"
-gdb_test "whatis vla_struct_object" "type = struct vla_struct"
-gdb_test "whatis vla_union_object" "type = union vla_union"
 
 # Check ptype of VLA's.
 gdb_test "ptype int_vla" "type = int \\\[5\\\]"
@@ -78,10 +72,6 @@ gdb_test "ptype unsigned_char_vla" "type
 gdb_test "ptype foo_vla" "type = struct foo {\r\n\\s+int a;\r\n} \\\[5\\\]"
 gdb_test "ptype bar_vla" \
          "type = struct bar {\r\n\\s+int x;\r\n\\s+struct foo y;\r\n} \\\[5\\\]"
-gdb_test "ptype vla_struct_object" \
-    "type = struct vla_struct {\r\n\\s+int something;\r\n\\s+int vla_field\\\[5\\\];\r\n}"
-gdb_test "ptype vla_union_object" \
-    "type = union vla_union {\r\n\\s+int vla_field\\\[5\\\];\r\n}"
 
 # Check the size of the VLA's.
 gdb_breakpoint [gdb_get_line_number "break_end_of_vla_factory"]
@@ -105,10 +95,6 @@ gdb_test "print uchar_size == sizeof(uns
          "size of unsigned_char_vla"
 gdb_test "print foo_size == sizeof(foo_vla)" " = 1" "size of foo_vla"
 gdb_test "print bar_size == sizeof(bar_vla)" " = 1" "size of bar_vla"
-gdb_test "print vla_struct_object_size == sizeof(vla_struct_object)" \
-    " = 1" "size of vla_struct_object"
-gdb_test "print vla_union_object_size == sizeof(vla_union_object)" \
-    " = 1" "size of vla_union_object"
 
 # Check side effects for sizeof argument.
 set sizeof_int [get_sizeof "int" 4]
@@ -126,9 +112,3 @@ gdb_test "print int_vla\[0\]" " = 42" \
 gdb_test "whatis ++int_vla\[0\]" "type = int"
 gdb_test "print int_vla\[0\]" " = 42" \
          "print int_vla\[0\] - whatis no side effects"
-
-# Fails due to incorrect debugging information generated by GCC.
-setup_xfail "*-*-*"
-gdb_test \
-    "print inner_vla_struct_object_size == sizeof(inner_vla_struct_object)" \
-    " = 1" "size of inner_vla_struct_object"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-optimized-out.c ./gdb/testsuite/gdb.base/vla-optimized-out.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-optimized-out.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-optimized-out.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-optimized-out.exp ./gdb/testsuite/gdb.base/vla-optimized-out.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-optimized-out.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-optimized-out.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-ptr.c ./gdb/testsuite/gdb.base/vla-ptr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-ptr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-ptr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-ptr.exp ./gdb/testsuite/gdb.base/vla-ptr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-ptr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-ptr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-sideeffect.c ./gdb/testsuite/gdb.base/vla-sideeffect.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-sideeffect.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-sideeffect.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-sideeffect.exp ./gdb/testsuite/gdb.base/vla-sideeffect.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-sideeffect.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-sideeffect.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-struct-fields.c ./gdb/testsuite/gdb.base/vla-struct-fields.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-struct-fields.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-struct-fields.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,104 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2014-2021 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/>.  */
+
+#include <stddef.h>
+#define SIZE 5
+
+struct foo
+{
+  int a;
+};
+
+typedef struct bar
+{
+  int x;
+  struct foo y;
+} BAR;
+
+void
+vla_factory (int n)
+{
+  struct vla_struct
+  {
+    int something;
+    int vla_field[n];
+  };
+  /* Define a typedef for a VLA structure.  */
+  typedef struct vla_struct vla_struct_typedef;
+  vla_struct_typedef vla_struct_object;
+
+  struct inner_vla_struct
+  {
+    int something;
+    int vla_field[n];
+    int after;
+  } inner_vla_struct_object;
+
+  /* Define a structure which uses a typedef for the VLA field
+     to make sure that GDB creates the proper type for this field,
+     preventing a possible assertion failure (see gdb/21356).  */
+  struct vla_struct_typedef_struct_member
+  {
+    int something;
+    vla_struct_typedef vla_object;
+  } vla_struct_typedef_struct_member_object;
+
+  union vla_union
+  {
+    int vla_field[n];
+  } vla_union_object;
+
+  /* Like vla_struct_typedef_struct_member but a union type.  */
+  union vla_struct_typedef_union_member
+  {
+    int something;
+    vla_struct_typedef vla_object;
+  } vla_struct_typedef_union_member_object;
+  int i;
+
+  vla_struct_object.something = n;
+  inner_vla_struct_object.something = n;
+  inner_vla_struct_object.after = n;
+  vla_struct_typedef_struct_member_object.something = n * 2;
+  vla_struct_typedef_struct_member_object.vla_object.something = n * 3;
+  vla_struct_typedef_union_member_object.vla_object.something = n + 1;
+
+  for (i = 0; i < n; i++)
+    {
+      vla_struct_object.vla_field[i] = i*2;
+      vla_union_object.vla_field[i] = i*2;
+      inner_vla_struct_object.vla_field[i] = i*2;
+      vla_struct_typedef_struct_member_object.vla_object.vla_field[i]
+	= i * 3;
+      vla_struct_typedef_union_member_object.vla_object.vla_field[i]
+	= i * 3 - 1;
+    }
+
+  size_t vla_struct_object_size
+    = sizeof(vla_struct_object);          /* vlas_filled */
+  size_t vla_union_object_size = sizeof(vla_union_object);
+  size_t inner_vla_struct_object_size = sizeof(inner_vla_struct_object);
+
+  return;                                 /* break_end_of_vla_factory */
+}
+
+int
+main (void)
+{
+  vla_factory(SIZE);
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-struct-fields.exp ./gdb/testsuite/gdb.base/vla-struct-fields.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-struct-fields.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-struct-fields.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,67 @@
+# Copyright 2014-2021 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/>.
+
+standard_testfile
+
+# Clang says it will never support variable length arrays in structures.
+if {[test_compiler_info clang*]} {
+    unsupported "compiler does not support variable length arrays in structure"
+    return
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+gdb_breakpoint [gdb_get_line_number "vlas_filled"]
+gdb_continue_to_breakpoint "vlas_filled"
+
+# Check the values of VLA's.
+gdb_test "print vla_struct_object" \
+    "\\\{something = 5, vla_field = \\\{0, 2, 4, 6, 8\\\}\\\}"
+gdb_test "print vla_union_object" \
+    "\\\{vla_field = \\\{0, 2, 4, 6, 8\\\}\\\}"
+gdb_test "print vla_struct_typedef_struct_member_object" \
+    "\\\{something = 10, vla_object = \\\{something = 15, vla_field = \\\{0, 3, 6, 9, 12\\\}\\\}\\\}"
+gdb_test "print vla_struct_typedef_union_member_object" \
+    "\\\{something = 6, vla_object = \\\{something = 6, vla_field = \\\{-1, 2, 5, 8, 11\\\}\\\}\\\}"
+
+# Check whatis of VLA's.
+gdb_test "whatis vla_struct_object" "type = vla_struct_typedef"
+gdb_test "whatis vla_union_object" "type = union vla_union"
+
+# Check ptype of VLA's.
+gdb_test "ptype vla_struct_object" \
+    "type = struct vla_struct {\r\n\\s+int something;\r\n\\s+int vla_field\\\[5\\\];\r\n}"
+gdb_test "ptype vla_union_object" \
+    "type = union vla_union {\r\n\\s+int vla_field\\\[5\\\];\r\n}"
+
+# Check the size of the VLA's.
+gdb_breakpoint [gdb_get_line_number "break_end_of_vla_factory"]
+gdb_continue_to_breakpoint "break_end_of_vla_factory"
+gdb_test "print vla_struct_object_size == sizeof(vla_struct_object)" \
+    " = 1" "size of vla_struct_object"
+gdb_test "print vla_union_object_size == sizeof(vla_union_object)" \
+    " = 1" "size of vla_union_object"
+
+# Fails due to incorrect debugging information generated by GCC.
+setup_xfail "*-*-*"
+gdb_test \
+    "print inner_vla_struct_object_size == sizeof(inner_vla_struct_object)" \
+    " = 1" "size of inner_vla_struct_object"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-stub.c ./gdb/testsuite/gdb.base/vla-stub.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-stub.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-stub.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-stub-define.c ./gdb/testsuite/gdb.base/vla-stub-define.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-stub-define.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-stub-define.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-stub.exp ./gdb/testsuite/gdb.base/vla-stub.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/vla-stub.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/vla-stub.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/volatile.exp ./gdb/testsuite/gdb.base/volatile.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/volatile.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/volatile.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/warning.exp ./gdb/testsuite/gdb.base/warning.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/warning.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/warning.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-bitfields.c ./gdb/testsuite/gdb.base/watch-bitfields.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-bitfields.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-bitfields.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-bitfields.exp ./gdb/testsuite/gdb.base/watch-bitfields.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-bitfields.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-bitfields.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-cond.c ./gdb/testsuite/gdb.base/watch-cond.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-cond.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-cond.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
@@ -23,6 +23,7 @@ int func(int *foo)
   (*foo)++;
   global++;
   global2++;
+  return 0;
 }
 
 void func2(int *foo)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-cond.exp ./gdb/testsuite/gdb.base/watch-cond.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-cond.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-cond.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-cond-infcall.c ./gdb/testsuite/gdb.base/watch-cond-infcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-cond-infcall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-cond-infcall.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-cond-infcall.exp ./gdb/testsuite/gdb.base/watch-cond-infcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-cond-infcall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-cond-infcall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-non-mem.c ./gdb/testsuite/gdb.base/watch-non-mem.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-non-mem.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-non-mem.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-non-mem.exp ./gdb/testsuite/gdb.base/watch-non-mem.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-non-mem.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-non-mem.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-cond-gone.c ./gdb/testsuite/gdb.base/watchpoint-cond-gone.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-cond-gone.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-cond-gone.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-cond-gone.exp ./gdb/testsuite/gdb.base/watchpoint-cond-gone.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-cond-gone.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-cond-gone.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-cond-gone-stripped.c ./gdb/testsuite/gdb.base/watchpoint-cond-gone-stripped.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-cond-gone-stripped.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-cond-gone-stripped.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-delete.c ./gdb/testsuite/gdb.base/watchpoint-delete.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-delete.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-delete.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-delete.exp ./gdb/testsuite/gdb.base/watchpoint-delete.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-delete.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-delete.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint.exp ./gdb/testsuite/gdb.base/watchpoint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw-attach.c ./gdb/testsuite/gdb.base/watchpoint-hw-attach.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw-attach.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-hw-attach.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw-attach.exp ./gdb/testsuite/gdb.base/watchpoint-hw-attach.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw-attach.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-hw-attach.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw.c ./gdb/testsuite/gdb.base/watchpoint-hw.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-hw.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw.exp ./gdb/testsuite/gdb.base/watchpoint-hw.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-hw.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.c ./gdb/testsuite/gdb.base/watchpoint-hw-hit-once.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-hw-hit-once.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp ./gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-hw-hit-once.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-reuse-slot.c ./gdb/testsuite/gdb.base/watchpoint-reuse-slot.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-reuse-slot.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-reuse-slot.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp ./gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -66,14 +66,14 @@ proc stepi {} {
     set srcline "  for (i = 0; i < 100000; i++); /* stepi line */"
     set test "stepi advanced"
     gdb_test_multiple "stepi" $test {
-	-re "($hex).*[string_to_regexp $srcline]\r\n$gdb_prompt $" {
-	    set addr $expect_out(1,string)
+	-re -wrap "[string_to_regexp $srcline]" {
+	    set addr [get_valueof "/x" "\$pc" "0"]
 	    if {$addr != $cur_addr} {
 		pass $test
 	    } else {
 		fail $test
 	    }
-	    set cur_addr addr
+	    set cur_addr $addr
 	}
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoints.c ./gdb/testsuite/gdb.base/watchpoints.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoints.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoints.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoints.exp ./gdb/testsuite/gdb.base/watchpoints.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoints.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoints.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-solib.c ./gdb/testsuite/gdb.base/watchpoint-solib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-solib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-solib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-solib.exp ./gdb/testsuite/gdb.base/watchpoint-solib.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-solib.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-solib.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2007-2020 Free Software Foundation, Inc.
+#   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-solib-shr.c ./gdb/testsuite/gdb.base/watchpoint-solib-shr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-solib-shr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-solib-shr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-stops-at-right-insn.c ./gdb/testsuite/gdb.base/watchpoint-stops-at-right-insn.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-stops-at-right-insn.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-stops-at-right-insn.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-stops-at-right-insn.exp ./gdb/testsuite/gdb.base/watchpoint-stops-at-right-insn.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-stops-at-right-insn.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-stops-at-right-insn.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-unaligned.c ./gdb/testsuite/gdb.base/watchpoint-unaligned.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-unaligned.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-unaligned.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-unaligned.exp ./gdb/testsuite/gdb.base/watchpoint-unaligned.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watchpoint-unaligned.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watchpoint-unaligned.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-read.c ./gdb/testsuite/gdb.base/watch-read.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-read.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-read.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-read.exp ./gdb/testsuite/gdb.base/watch-read.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-read.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-read.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch_thread_num.c ./gdb/testsuite/gdb.base/watch_thread_num.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch_thread_num.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch_thread_num.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 Free Software Foundation, Inc.
 
    Copyright 1992, 1993, 1994, 1995, 1999, 2002, 2003, 2007, 2008, 2009
    Free Software Foundation, Inc.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch_thread_num.exp ./gdb/testsuite/gdb.base/watch_thread_num.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch_thread_num.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch_thread_num.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-vfork.c ./gdb/testsuite/gdb.base/watch-vfork.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-vfork.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-vfork.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-vfork.exp ./gdb/testsuite/gdb.base/watch-vfork.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/watch-vfork.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/watch-vfork.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/wchar.c ./gdb/testsuite/gdb.base/wchar.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/wchar.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/wchar.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/wchar.exp ./gdb/testsuite/gdb.base/wchar.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/wchar.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/wchar.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/weaklib1.c ./gdb/testsuite/gdb.base/weaklib1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/weaklib1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/weaklib1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/weaklib2.c ./gdb/testsuite/gdb.base/weaklib2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/weaklib2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/weaklib2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/whatis.c ./gdb/testsuite/gdb.base/whatis.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/whatis.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/whatis.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 1992-2020 Free Software Foundation, Inc.
+   Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/whatis.exp ./gdb/testsuite/gdb.base/whatis.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/whatis.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/whatis.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1988-2020 Free Software Foundation, Inc.
+# Copyright 1988-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/whatis-exp.exp ./gdb/testsuite/gdb.base/whatis-exp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/whatis-exp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/whatis-exp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/whatis-ptype-typedefs.c ./gdb/testsuite/gdb.base/whatis-ptype-typedefs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/whatis-ptype-typedefs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/whatis-ptype-typedefs.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/whatis-ptype-typedefs.exp ./gdb/testsuite/gdb.base/whatis-ptype-typedefs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/whatis-ptype-typedefs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/whatis-ptype-typedefs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/with.c ./gdb/testsuite/gdb.base/with.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/with.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/with.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/with.exp ./gdb/testsuite/gdb.base/with.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/with.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/with.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/with-mf.exp ./gdb/testsuite/gdb.base/with-mf.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/with-mf.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/with-mf.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,34 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2020-2021 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 .gdb_index in ada language mode.
+
+standard_testfile with-mf-main.c with-mf-inc.c
+
+if {[prepare_for_testing "failed to prepare" $testfile "$srcfile $srcfile2" \
+	 debug]} {
+    return -1
+}
+
+if { [ensure_gdb_index $binfile] == -1 } {
+    return -1
+}
+
+clean_restart $binfile
+
+gdb_test "with language ada -- print g_s" \
+    " = \\(a => 1, b => 2, c => 3\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/with-mf-inc.c ./gdb/testsuite/gdb.base/with-mf-inc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/with-mf-inc.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/with-mf-inc.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,35 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+/* Non-main part of with.c.  */
+
+int xxx1 = 123;
+
+struct S
+{
+  int a;
+  int b;
+  int c;
+};
+
+struct S g_s = {1, 2, 3};
+
+void
+inc ()
+{
+  g_s.a++;;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/with-mf-main.c ./gdb/testsuite/gdb.base/with-mf-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/with-mf-main.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.base/with-mf-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,28 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+/* Main part of with.c.  */
+
+extern void inc (void);
+
+int
+main ()
+{
+  inc ();
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/write_mem.c ./gdb/testsuite/gdb.base/write_mem.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/write_mem.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/write_mem.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2018-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/write_mem.exp ./gdb/testsuite/gdb.base/write_mem.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/write_mem.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/write_mem.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/wrong_frame_bt_full.exp ./gdb/testsuite/gdb.base/wrong_frame_bt_full.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/wrong_frame_bt_full.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/wrong_frame_bt_full.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/wrong_frame_bt_full-main.c ./gdb/testsuite/gdb.base/wrong_frame_bt_full-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/wrong_frame_bt_full-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/wrong_frame_bt_full-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/wrong_frame_bt_full-opaque.c ./gdb/testsuite/gdb.base/wrong_frame_bt_full-opaque.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.base/wrong_frame_bt_full-opaque.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.base/wrong_frame_bt_full-opaque.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/buffer-size.exp ./gdb/testsuite/gdb.btrace/buffer-size.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/buffer-size.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/buffer-size.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/cpu.exp ./gdb/testsuite/gdb.btrace/cpu.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/cpu.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/cpu.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -42,9 +42,9 @@ proc test_junk { arg junk current } {
 gdb_test "show record btrace cpu" "btrace cpu is 'auto'\." "default cpu"
 
 gdb_test "set record" \
-    "\"set record\" must be followed by an appropriate subcommand.*"
+    "List of set record subcommands.*"
 gdb_test "set record btrace" \
-    "\"set record btrace\" must be followed by an appropriate subcommand.*"
+    "List of set record btrace subcommands.*"
 test_bad "" "auto"
 
 test_good "intel: 0/0"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/data.c ./gdb/testsuite/gdb.btrace/data.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/data.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/data.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/data.exp ./gdb/testsuite/gdb.btrace/data.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/data.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/data.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/delta.exp ./gdb/testsuite/gdb.btrace/delta.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/delta.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/delta.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/dlopen.c ./gdb/testsuite/gdb.btrace/dlopen.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/dlopen.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/dlopen.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/dlopen-dso.c ./gdb/testsuite/gdb.btrace/dlopen-dso.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/dlopen-dso.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/dlopen-dso.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/dlopen.exp ./gdb/testsuite/gdb.btrace/dlopen.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/dlopen.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/dlopen.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable.c ./gdb/testsuite/gdb.btrace/enable.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/enable.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <christian.himpel@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable.exp ./gdb/testsuite/gdb.btrace/enable.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/enable.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <christian.himpel@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable-new-thread.c ./gdb/testsuite/gdb.btrace/enable-new-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable-new-thread.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/enable-new-thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,36 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <pthread.h>
+#include <unistd.h>
+
+static void *
+test (void *arg)
+{
+  return arg; /* bp.1 */
+}
+
+int
+main (void)
+{
+  pthread_t th;
+
+  pthread_create (&th, NULL, test, NULL);
+  pthread_join (th, NULL);
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable-new-thread.exp ./gdb/testsuite/gdb.btrace/enable-new-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable-new-thread.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/enable-new-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,57 @@
+# This testcase is part of GDB, the GNU debugger.
+#
+# Copyright 2020-2021 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 that new threads of recorded inferiors also get recorded.
+
+if { [skip_btrace_tests] } {
+    unsupported "target does not support record-btrace"
+    return -1
+}
+
+standard_testfile
+if [prepare_for_testing "failed to prepare" $testfile $srcfile {debug pthreads}] {
+    return -1
+}
+
+if ![runto_main] {
+    untested "failed to run to main"
+    return -1
+}
+
+# Record the main thread.  Recording will automatically be enabled for the
+# other thread.
+gdb_test "record btrace"
+
+gdb_breakpoint [gdb_get_line_number "bp.1" $srcfile]
+gdb_continue_to_breakpoint "cont to bp.1" ".*/\\* bp\.1 \\*/.*"
+
+proc check_thread_recorded { num } {
+    global decimal
+
+    with_test_prefix "thread $num" {
+	gdb_test "thread $num" "Switching to thread $num.*"
+
+	gdb_test "info record" [multi_line \
+	    "Active record target: record-btrace" \
+	    ".*" \
+	    "Recorded $decimal instructions in $decimal functions \[^\\\r\\\n\]*" \
+       ]
+    }
+}
+
+check_thread_recorded 1
+check_thread_recorded 2
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable-running.c ./gdb/testsuite/gdb.btrace/enable-running.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable-running.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/enable-running.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable-running.exp ./gdb/testsuite/gdb.btrace/enable-running.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/enable-running.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/enable-running.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/exception.cc ./gdb/testsuite/gdb.btrace/exception.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/exception.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/exception.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/exception.exp ./gdb/testsuite/gdb.btrace/exception.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/exception.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/exception.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/function_call_history.c ./gdb/testsuite/gdb.btrace/function_call_history.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/function_call_history.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/function_call_history.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <christian.himpel@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/function_call_history.exp ./gdb/testsuite/gdb.btrace/function_call_history.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/function_call_history.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/function_call_history.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <christian.himpel@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/gcore.exp ./gdb/testsuite/gdb.btrace/gcore.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/gcore.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/gcore.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/i686-record_goto.S ./gdb/testsuite/gdb.btrace/i686-record_goto.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/i686-record_goto.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/i686-record_goto.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/i686-tailcall-only.S ./gdb/testsuite/gdb.btrace/i686-tailcall-only.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/i686-tailcall-only.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/i686-tailcall-only.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/i686-tailcall.S ./gdb/testsuite/gdb.btrace/i686-tailcall.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/i686-tailcall.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/i686-tailcall.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/instruction_history.c ./gdb/testsuite/gdb.btrace/instruction_history.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/instruction_history.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/instruction_history.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <christian.himpel@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/instruction_history.exp ./gdb/testsuite/gdb.btrace/instruction_history.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/instruction_history.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/instruction_history.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <christian.himpel@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/instruction_history.S ./gdb/testsuite/gdb.btrace/instruction_history.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/instruction_history.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/instruction_history.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <christian.himpel@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/multi-inferior.c ./gdb/testsuite/gdb.btrace/multi-inferior.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/multi-inferior.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/multi-inferior.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main (void)
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/multi-inferior.exp ./gdb/testsuite/gdb.btrace/multi-inferior.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/multi-inferior.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/multi-inferior.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,74 @@
+# This testcase is part of GDB, the GNU debugger.
+#
+# Copyright 2020-2021 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 that recording is per-inferior.
+#
+# When recording an inferior, threads from other inferiors, both existing
+# and newly created, are not automatically recorded.
+#
+# Each inferior can be recorded separately.
+
+if { [skip_btrace_tests] } {
+    unsupported "target does not support record-btrace"
+    return -1
+}
+
+standard_testfile
+if [prepare_for_testing "failed to prepare" $testfile {} {debug}] {
+    return -1
+}
+
+with_test_prefix "inferior 1" {
+    if ![runto_main] {
+	untested "failed to run to main"
+	return -1
+    }
+}
+
+with_test_prefix "inferior 2" {
+    gdb_test "add-inferior -exec ${binfile}" "Added inferior 2.*" \
+	"add second inferior"
+    gdb_test "inferior 2" "Switching to inferior 2.*"
+
+    if ![runto_main] {
+	untested "inferior 2: failed to run to main"
+	return -1
+    }
+
+    gdb_test_no_output "record btrace" "record btrace"
+}
+
+with_test_prefix "inferior 1" {
+    gdb_test "inferior 1" "Switching to inferior 1.*"
+
+    gdb_test "info record" "No record target is currently active\\."
+    gdb_test_no_output "record btrace" "record btrace"
+}
+
+with_test_prefix "inferior 3" {
+    gdb_test "add-inferior -exec ${binfile}" "Added inferior 3.*" \
+	"add third inferior"
+    gdb_test "inferior 3" "Switching to inferior 3.*"
+
+    if ![runto_main] {
+	untested "inferior 3: failed to run to main"
+	return -1
+    }
+
+    gdb_test "info record" "No record target is currently active\\."
+    gdb_test_no_output "record btrace" "record btrace"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/multi-thread-step.c ./gdb/testsuite/gdb.btrace/multi-thread-step.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/multi-thread-step.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/multi-thread-step.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/multi-thread-step.exp ./gdb/testsuite/gdb.btrace/multi-thread-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/multi-thread-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/multi-thread-step.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/nohist.exp ./gdb/testsuite/gdb.btrace/nohist.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/nohist.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/nohist.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/non-stop.c ./gdb/testsuite/gdb.btrace/non-stop.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/non-stop.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/non-stop.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/non-stop.exp ./gdb/testsuite/gdb.btrace/non-stop.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/non-stop.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/non-stop.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/reconnect.c ./gdb/testsuite/gdb.btrace/reconnect.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/reconnect.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/reconnect.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <tim.wiederhake@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/reconnect.exp ./gdb/testsuite/gdb.btrace/reconnect.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/reconnect.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/reconnect.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <tim.wiederhake@intel.com>
 #
@@ -51,7 +51,7 @@ gdb_target_cmd $gdbserver_protocol $gdbs
 # Create a record, check, reconnect
 with_test_prefix "first" {
   gdb_test_no_output "record btrace" "record btrace enable"
-  gdb_test "stepi 19" "0x.* in .* from .*"
+  gdb_test "stepi 19" "($hex in .* from .*|$hex\t$decimal.*)"
 
   gdb_test "info record" [multi_line \
     "Active record target: .*" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/record_goto.c ./gdb/testsuite/gdb.btrace/record_goto.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/record_goto.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/record_goto.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/record_goto.exp ./gdb/testsuite/gdb.btrace/record_goto.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/record_goto.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/record_goto.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/record_goto-step.exp ./gdb/testsuite/gdb.btrace/record_goto-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/record_goto-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/record_goto-step.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/rn-dl-bind.c ./gdb/testsuite/gdb.btrace/rn-dl-bind.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/rn-dl-bind.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/rn-dl-bind.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/rn-dl-bind.exp ./gdb/testsuite/gdb.btrace/rn-dl-bind.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/rn-dl-bind.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/rn-dl-bind.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/segv.c ./gdb/testsuite/gdb.btrace/segv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/segv.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/segv.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/segv.exp ./gdb/testsuite/gdb.btrace/segv.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/segv.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/segv.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/step.exp ./gdb/testsuite/gdb.btrace/step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/step.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/stepi.exp ./gdb/testsuite/gdb.btrace/stepi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/stepi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/stepi.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tailcall.c ./gdb/testsuite/gdb.btrace/tailcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tailcall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/tailcall.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tailcall.exp ./gdb/testsuite/gdb.btrace/tailcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tailcall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/tailcall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tailcall-only.c ./gdb/testsuite/gdb.btrace/tailcall-only.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tailcall-only.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/tailcall-only.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tailcall-only.exp ./gdb/testsuite/gdb.btrace/tailcall-only.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tailcall-only.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/tailcall-only.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tsx.c ./gdb/testsuite/gdb.btrace/tsx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tsx.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/tsx.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tsx.exp ./gdb/testsuite/gdb.btrace/tsx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/tsx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/tsx.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/unknown_functions.c ./gdb/testsuite/gdb.btrace/unknown_functions.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/unknown_functions.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/unknown_functions.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/unknown_functions.exp ./gdb/testsuite/gdb.btrace/unknown_functions.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/unknown_functions.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/unknown_functions.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/vdso.c ./gdb/testsuite/gdb.btrace/vdso.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/vdso.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/vdso.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/vdso.exp ./gdb/testsuite/gdb.btrace/vdso.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/vdso.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/vdso.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <markus.t.metzger@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/x86_64-record_goto.S ./gdb/testsuite/gdb.btrace/x86_64-record_goto.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/x86_64-record_goto.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/x86_64-record_goto.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/x86_64-tailcall-only.S ./gdb/testsuite/gdb.btrace/x86_64-tailcall-only.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/x86_64-tailcall-only.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/x86_64-tailcall-only.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/x86_64-tailcall.S ./gdb/testsuite/gdb.btrace/x86_64-tailcall.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/x86_64-tailcall.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/x86_64-tailcall.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/x86-tsx.S ./gdb/testsuite/gdb.btrace/x86-tsx.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.btrace/x86-tsx.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.btrace/x86-tsx.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile.c ./gdb/testsuite/gdb.compile/compile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-constvar.c ./gdb/testsuite/gdb.compile/compile-constvar.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-constvar.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-constvar.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-constvar.S ./gdb/testsuite/gdb.compile/compile-constvar.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-constvar.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-constvar.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-anonymous.cc ./gdb/testsuite/gdb.compile/compile-cplus-anonymous.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-anonymous.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-anonymous.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-anonymous.exp ./gdb/testsuite/gdb.compile/compile-cplus-anonymous.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-anonymous.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-anonymous.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-array-decay.cc ./gdb/testsuite/gdb.compile/compile-cplus-array-decay.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-array-decay.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-array-decay.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2017-2020 Free Software Foundation, Inc.
+/* Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-array-decay.exp ./gdb/testsuite/gdb.compile/compile-cplus-array-decay.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-array-decay.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-array-decay.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus.c ./gdb/testsuite/gdb.compile/compile-cplus.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus.exp ./gdb/testsuite/gdb.compile/compile-cplus.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -19,7 +19,7 @@ standard_testfile .c compile-shlib.c com
 
 get_compiler_info
 set options {}
-if [test_compiler_info gcc*] {
+if { [test_compiler_info gcc*] || [test_compiler_info clang*] } {
     lappend options additional_flags=-g3
     lappend options additional_flags=-std=gnu++11
     lappend options c++
@@ -32,9 +32,10 @@ if { ![istarget x86_64-*-* ] || ![is_lp6
 
 set srcfilesoptions [list ${srcfile} ${options}]
 if { $srcfile3 != "" } {
-    lappend srcfilesoptions $srcfile3 ${options}
+    lappend srcfilesoptions $srcfile3 {}
 }
-lappend srcfilesoptions $srcfile4 "nodebug c++"
+set srcfile4options "nodebug c++"
+lappend srcfilesoptions $srcfile4 $srcfile4options
 if { [eval build_executable_from_specs ${testfile}.exp $testfile {$options} ${srcfilesoptions}] } {
     return -1
 }
@@ -219,7 +220,7 @@ gdb_test "print struct_object.arrayfield
     " = \\{0, 0, 7, 0, 0\\}"
 
 gdb_test_no_output "compile code struct_object.complexfield = 7 + 5i"
-gdb_test "print struct_object.complexfield" " = 7 \\+ 5 \\* I"
+gdb_test "print struct_object.complexfield" " = 7 \\+ 5i"
 
 gdb_test_no_output "compile code struct_object.boolfield = 1"
 gdb_test "print struct_object.boolfield" " = true"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-inherit.cc ./gdb/testsuite/gdb.compile/compile-cplus-inherit.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-inherit.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-inherit.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-inherit.exp ./gdb/testsuite/gdb.compile/compile-cplus-inherit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-inherit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-inherit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-member.cc ./gdb/testsuite/gdb.compile/compile-cplus-member.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-member.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-member.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-member.exp ./gdb/testsuite/gdb.compile/compile-cplus-member.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-member.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-member.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-method.cc ./gdb/testsuite/gdb.compile/compile-cplus-method.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-method.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-method.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-method.exp ./gdb/testsuite/gdb.compile/compile-cplus-method.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-method.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-method.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-mod.c ./gdb/testsuite/gdb.compile/compile-cplus-mod.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-mod.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-mod.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-namespace.cc ./gdb/testsuite/gdb.compile/compile-cplus-namespace.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-namespace.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-namespace.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-namespace.exp ./gdb/testsuite/gdb.compile/compile-cplus-namespace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-namespace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-namespace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-nested.cc ./gdb/testsuite/gdb.compile/compile-cplus-nested.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-nested.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-nested.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-nested.exp ./gdb/testsuite/gdb.compile/compile-cplus-nested.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-nested.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-nested.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-print.c ./gdb/testsuite/gdb.compile/compile-cplus-print.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-print.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-print.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-print.exp ./gdb/testsuite/gdb.compile/compile-cplus-print.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-print.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-print.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-virtual.cc ./gdb/testsuite/gdb.compile/compile-cplus-virtual.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-virtual.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-virtual.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-virtual.exp ./gdb/testsuite/gdb.compile/compile-cplus-virtual.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-cplus-virtual.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-cplus-virtual.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile.exp ./gdb/testsuite/gdb.compile/compile.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -237,7 +237,7 @@ if {$skip_struct_object} {
 	" = \\{0, 0, 7, 0, 0\\}"
 
     gdb_test_no_output "compile code struct_object.complexfield = 7 + 5i"
-    gdb_test "print struct_object.complexfield" " = 7 \\+ 5 \\* I"
+    gdb_test "print struct_object.complexfield" " = 7 \\+ 5i"
 
     gdb_test_no_output "compile code struct_object.boolfield = 1"
     gdb_test "print struct_object.boolfield" " = true"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-ifunc.c ./gdb/testsuite/gdb.compile/compile-ifunc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-ifunc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-ifunc.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-ifunc.exp ./gdb/testsuite/gdb.compile/compile-ifunc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-ifunc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-ifunc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -19,9 +19,16 @@ if {[skip_ifunc_tests]} {
 
 standard_testfile
 
+get_compiler_info
+set flags ""
+if [test_compiler_info gcc*] {
+    set flags additional_flags=-Wno-attribute-alias
+}
+
 with_test_prefix "nodebug" {
 
-    if { [prepare_for_testing "failed to prepare" "$testfile-nodebug" $srcfile {}] } {
+    if { [prepare_for_testing "failed to prepare" "$testfile-nodebug" \
+	      $srcfile $flags] } {
 	return -1
     }
 
@@ -51,7 +58,8 @@ with_test_prefix "nodebug" {
 
 with_test_prefix "debug" {
 
-    if { [prepare_for_testing "failed to prepare" "$testfile-debug" $srcfile] } {
+    if { [prepare_for_testing "failed to prepare" "$testfile-debug" \
+	      $srcfile "debug $flags"] } {
 	return -1
     }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-mod.c ./gdb/testsuite/gdb.compile/compile-mod.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-mod.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-mod.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-nodebug.c ./gdb/testsuite/gdb.compile/compile-nodebug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-nodebug.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-nodebug.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-ops.c ./gdb/testsuite/gdb.compile/compile-ops.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-ops.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-ops.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-ops.exp ./gdb/testsuite/gdb.compile/compile-ops.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-ops.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-ops.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -362,7 +362,6 @@ Dwarf::assemble $asm_file {
     cu { addr_size 4 } {
 
 	declare_labels int_label
-	extern func_start func_end ptr
 
 	compile_unit {
 	    {name file1.txt}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-print.c ./gdb/testsuite/gdb.compile/compile-print.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-print.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-print.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-print.exp ./gdb/testsuite/gdb.compile/compile-print.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-print.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-print.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-setjmp.c ./gdb/testsuite/gdb.compile/compile-setjmp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-setjmp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-setjmp.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-setjmp.exp ./gdb/testsuite/gdb.compile/compile-setjmp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-setjmp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-setjmp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-setjmp-mod.c ./gdb/testsuite/gdb.compile/compile-setjmp-mod.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-setjmp-mod.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-setjmp-mod.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-shlib.c ./gdb/testsuite/gdb.compile/compile-shlib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-shlib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-shlib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-tls.c ./gdb/testsuite/gdb.compile/compile-tls.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-tls.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-tls.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-tls.exp ./gdb/testsuite/gdb.compile/compile-tls.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.compile/compile-tls.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.compile/compile-tls.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/abstract-origin.cc ./gdb/testsuite/gdb.cp/abstract-origin.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/abstract-origin.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/abstract-origin.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/abstract-origin.exp ./gdb/testsuite/gdb.cp/abstract-origin.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/abstract-origin.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/abstract-origin.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/align.exp ./gdb/testsuite/gdb.cp/align.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/align.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/align.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -80,7 +80,9 @@ puts $outfile {
 
     unsigned a_int3 = alignof (int[3]);
 
+#if !defined (__clang__)
     unsigned a_void = alignof (void);
+#endif
 
     struct base { char c; };
     struct derived : public virtual base { int i; };
@@ -170,5 +172,14 @@ foreach type $typelist {
 
 set expected [get_integer_valueof a_int3 0]
 gdb_test "print alignof(int\[3\])" " = $expected"
-set expected [get_integer_valueof a_void 0]
+
+# As an extension, GCC allows void pointer arithmetic, with
+# sizeof(void) and alignof(void) both 1.  This test checks
+# GDB's support of GCC's extension.
+if [test_compiler_info clang*] {
+    # Clang doesn't support GCC's extension.
+    set expected 1
+} else {
+    set expected [get_integer_valueof a_void 0]
+}
 gdb_test "print alignof(void)" " = $expected"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ambiguous.exp ./gdb/testsuite/gdb.cp/ambiguous.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ambiguous.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ambiguous.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
@@ -30,12 +30,20 @@ if { [skip_cplus_tests] } { continue }
 standard_testfile .cc
 
 if [get_compiler_info "c++"] {
+    unsupported "couldn't find a valid c++ compiler"
     return -1
 }
 
-if { [test_compiler_info gcc-*] } then { continue }
+set additional_flags ""
+if {[test_compiler_info {gcc-[0-9]-*}]} {
+    # GCCs prior to 10.1 do not support -Wno-inaccessible-base.
+    set additional_flags "additional_flags=-w"
+} elseif {[test_compiler_info gcc*] || [test_compiler_info clang*]} {
+    set additional_flags "additional_flags=-Wno-inaccessible-base"
+}
 
-if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+     [list debug c++ $additional_flags]]} {
     return -1
 }
 
@@ -66,6 +74,7 @@ send_gdb "break marker1\n" ; gdb_expect
 # right times. 
 
 # X is derived from A1 and A2; both A1 and A2 have a member 'x'
+setup_kfail gdb/26602 *-*-*
 send_gdb "print x.x\n"
 gdb_expect {
    -re "warning: x ambiguous; using X::A2::x. Use a cast to disambiguate.\r\n\\$\[0-9\]* = \[-\]*\[0-9\]*\r\n$gdb_prompt $" {
@@ -81,6 +90,7 @@ gdb_expect {
 
 # N is derived from A1 and A2, but not immediately -- two steps
 # up in the hierarchy. Both A1 and A2 have a member 'x'.
+setup_kfail gdb/26602 *-*-*
 send_gdb "print n.x\n"
 gdb_expect {
    -re "warning: x ambiguous; using N::M::A2::x. Use a cast to disambiguate.\r\n\\$\[0-9\]* = \[-\]*\[0-9\]*\r\n$gdb_prompt $" {
@@ -94,6 +104,7 @@ gdb_expect {
 }
 
 # J is derived from A1 twice.  A1 has a member x. 
+setup_kfail gdb/26602 *-*-*
 send_gdb "print j.x\n"
 gdb_expect {
    -re "warning: x ambiguous; using J::L::A1::x. Use a cast to disambiguate.\r\n\\$\[0-9\]* = \[-\]*\[0-9\]*\r\n$gdb_prompt $" {
@@ -121,6 +132,7 @@ gdb_expect {
 # JVA1 is derived from A1; A1 occurs as a virtual base in two
 # ancestors, and as a non-virtual immediate base. Ambiguity must
 # be reported. 
+setup_kfail gdb/26602 *-*-*
 send_gdb "print jva1.x\n"
 gdb_expect {
    -re "warning: x ambiguous; using JVA1::A1::x. Use a cast to disambiguate.\r\n\\$\[0-9\]* = \[-\]*\[0-9\]*\r\n$gdb_prompt $" {
@@ -136,6 +148,7 @@ gdb_expect {
 # JVA2 is derived from A1 & A2; A1 occurs as a virtual base in two
 # ancestors, and A2 is a non-virtual immediate base. Ambiguity must
 # be reported as A1 and A2 both have a member 'x'.
+setup_kfail gdb/26602 *-*-*
 send_gdb "print jva2.x\n"
 gdb_expect {
    -re "warning: x ambiguous; using JVA2::A2::x. Use a cast to disambiguate.\r\n\\$\[0-9\]* = \[-\]*\[0-9\]*\r\n$gdb_prompt $" {
@@ -165,6 +178,7 @@ gdb_expect {
 
 # J is derived from A1 twice; report ambiguity if a J is
 # cast to an A1.
+setup_kfail gdb/26602 *-*-*
 send_gdb "print (A1)j\n"
 gdb_expect {
    -re "warning: A1 ambiguous; using J::L::A1. Use a cast to disambiguate.\r\n\\$\[0-9\]* = \{x = \[-\]*\[0-9\]*, y = \[-\]*\[0-9\]*\}\r\n$gdb_prompt $" {
@@ -191,6 +205,7 @@ gdb_expect {
 
 # JVA1 is derived from A1; A1 is a virtual base and also a
 # non-virtual base.  Must report ambiguity if a JVA1 is cast to an A1.
+setup_kfail gdb/26602 *-*-*
 send_gdb "print (A1)jva1\n"
 gdb_expect {
    -re "warning: A1 ambiguous; using JVA1::A1. Use a cast to disambiguate.\r\n\\$\[0-9\]* = \{x = \[-\]*\[0-9\]*, y = \[-\]*\[0-9\]*\}\r\n$gdb_prompt $" {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/annota2.exp ./gdb/testsuite/gdb.cp/annota2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/annota2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/annota2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1999-2020 Free Software Foundation, Inc.
+#   Copyright 1999-2021 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
@@ -73,9 +73,9 @@ gdb_expect {
     timeout	            { fail "annotation set at level 2 (timeout)" }
   }
 
-gdb_test_multiple "run" "run until main breakpoint" {
+gdb_test_multiple "run" "run until main breakpoint, first time" {
     -re "$main_line.*$gdb_prompt$" {
-	pass "run until main breakpoint"
+	pass $gdb_test_name
     }
 }
 
@@ -189,9 +189,9 @@ set main_line 22
 # run program up to breakpoint.
 #
 
-gdb_test_multiple "run" "run until main breakpoint" {
+gdb_test_multiple "run" "run until main breakpoint, second time" {
     -re "$main_line.*$gdb_prompt$"    {
-	pass "run until main breakpoint"
+	pass $gdb_test_name
     }
 }
 
@@ -218,7 +218,7 @@ set pat [multi_line "" \
 	     "\032\032post-prompt" \
 	     "" \
 	     "\032\032starting" \
-	     "\(${frames_invalid}\)*${breakpoints_invalid}" \
+	     "\(${frames_invalid}\)*${breakpoints_invalid}\(${frames_invalid}\)*" \
 	     "\032\032watchpoint 3" \
 	     ".*atchpoint 3: a.x" \
 	     "" \
@@ -243,7 +243,6 @@ set pat [multi_line "" \
 	     "" \
 	     "" \
 	     "\032\032source .*$srcfile.*beg:$hex" \
-	     "$decimal\[^\r\n\]+" \
 	     "" \
 	     "\032\032frame-end" \
 	     "" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/annota3.exp ./gdb/testsuite/gdb.cp/annota3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/annota3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/annota3.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
@@ -164,7 +164,7 @@ gdb_expect_list "set watch on a.x" "$gdb
 # annotate-watchpoint
 #
 gdb_test_multiple "next" "watch triggered on a.x" {
-    -re "\r\n\032\032post-prompt\r\n\r\n\032\032starting\r\n\r\n\032\032watchpoint 3\r\n.*atchpoint 3: a.x\r\n\r\nOld value = 0\r\nNew value = 1\r\n\r\n(\032\032frame-begin 0 0x\[0-9a-z\]+\r\n|)main \\(\\) at .*$srcfile:$decimal\r\n\r\n\032\032source .*$srcfile.*beg:$hex\r\n$decimal\[^\r\n\]+\r\n\r\n\032\032stopped\r\n.*$gdb_prompt$" { 
+    -re "\r\n\032\032post-prompt\r\n\r\n\032\032starting\r\n\r\n\032\032watchpoint 3\r\n.*atchpoint 3: a.x\r\n\r\nOld value = 0\r\nNew value = 1\r\n\r\n(\032\032frame-begin 0 0x\[0-9a-z\]+\r\n|)main \\(\\) at .*$srcfile:$decimal\r\n\r\n\032\032source .*$srcfile.*beg:$hex\r\n\r\n\032\032stopped\r\n.*$gdb_prompt$" {
 	pass "watch triggered on a.x"
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-ns2.cc ./gdb/testsuite/gdb.cp/anon-ns2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-ns2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/anon-ns2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-ns.cc ./gdb/testsuite/gdb.cp/anon-ns.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-ns.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/anon-ns.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-ns.exp ./gdb/testsuite/gdb.cp/anon-ns.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-ns.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/anon-ns.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 Free Software Foundation, Inc.
 #
 # Contributed by Red Hat, originally written by Keith Seitz.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-struct.cc ./gdb/testsuite/gdb.cp/anon-struct.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-struct.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/anon-struct.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-struct.exp ./gdb/testsuite/gdb.cp/anon-struct.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-struct.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/anon-struct.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # Tests for anonymous union support.
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-union.exp ./gdb/testsuite/gdb.cp/anon-union.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/anon-union.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/anon-union.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # Tests for anonymous union support.
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/arg-reference.cc ./gdb/testsuite/gdb.cp/arg-reference.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/arg-reference.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/arg-reference.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/arg-reference.exp ./gdb/testsuite/gdb.cp/arg-reference.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/arg-reference.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/arg-reference.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/baseenum.cc ./gdb/testsuite/gdb.cp/baseenum.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/baseenum.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/baseenum.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/baseenum.exp ./gdb/testsuite/gdb.cp/baseenum.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/baseenum.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/baseenum.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/bool.cc ./gdb/testsuite/gdb.cp/bool.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/bool.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/bool.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/bool.exp ./gdb/testsuite/gdb.cp/bool.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/bool.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/bool.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint.cc ./gdb/testsuite/gdb.cp/breakpoint.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/breakpoint.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code to go along with tests in breakpoint.exp.
    
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint.exp ./gdb/testsuite/gdb.cp/breakpoint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/breakpoint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint-locs-2.cc ./gdb/testsuite/gdb.cp/breakpoint-locs-2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint-locs-2.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/breakpoint-locs-2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,29 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include "breakpoint-locs.h"
+
+namespace N1
+{
+  void bar () { C1::baz (); }
+}
+
+void
+N1_bar (void)
+{
+  N1::bar ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint-locs.cc ./gdb/testsuite/gdb.cp/breakpoint-locs.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint-locs.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/breakpoint-locs.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,33 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include "breakpoint-locs.h"
+
+namespace N1
+{
+  void foo () { C1::baz (); }
+}
+
+extern void N1_bar (void);
+
+int
+main ()
+{
+  N1::foo ();
+  N1_bar ();
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint-locs.exp ./gdb/testsuite/gdb.cp/breakpoint-locs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint-locs.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/breakpoint-locs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,27 @@
+# Copyright 2020-2021 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 file is part of the gdb testsuite
+
+if {[skip_cplus_tests]} { continue }
+
+standard_testfile .cc breakpoint-locs-2.cc
+
+if { [prepare_for_testing "failed to prepare" $testfile "$srcfile $srcfile2"\
+	  {debug c++}] } {
+    return -1
+}
+
+gdb_test "break N1::C1::baz" "\\(2 locations\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint-locs.h ./gdb/testsuite/gdb.cp/breakpoint-locs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/breakpoint-locs.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/breakpoint-locs.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+namespace N1
+{
+  class C1
+  {
+   public:
+    static void __attribute__((always_inline)) baz () { volatile unsigned i; i++; }
+  };
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/bs15503.cc ./gdb/testsuite/gdb.cp/bs15503.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/bs15503.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/bs15503.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1992-2020 Free Software Foundation, Inc.
+   Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/bs15503.exp ./gdb/testsuite/gdb.cp/bs15503.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/bs15503.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/bs15503.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/call-c-1.c ./gdb/testsuite/gdb.cp/call-c-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/call-c-1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/call-c-1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/call-c.cc ./gdb/testsuite/gdb.cp/call-c.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/call-c.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/call-c.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/call-c.exp ./gdb/testsuite/gdb.cp/call-c.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/call-c.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/call-c.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/casts03.cc ./gdb/testsuite/gdb.cp/casts03.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/casts03.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/casts03.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/casts.exp ./gdb/testsuite/gdb.cp/casts.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/casts.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/casts.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/chained-calls.cc ./gdb/testsuite/gdb.cp/chained-calls.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/chained-calls.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/chained-calls.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/chained-calls.exp ./gdb/testsuite/gdb.cp/chained-calls.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/chained-calls.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/chained-calls.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/class2.cc ./gdb/testsuite/gdb.cp/class2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/class2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/class2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/class2.exp ./gdb/testsuite/gdb.cp/class2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/class2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/class2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/classes.cc ./gdb/testsuite/gdb.cp/classes.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/classes.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/classes.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1993-2020 Free Software Foundation, Inc.
+   Copyright 1993-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/classes.exp ./gdb/testsuite/gdb.cp/classes.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/classes.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/classes.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
@@ -24,7 +24,8 @@ load_lib "cp-support.exp"
 
 standard_testfile .cc
 
-if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+	 {debug c++ additional_flags=-Wno-deprecated-register}]} {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cmpd-minsyms.cc ./gdb/testsuite/gdb.cp/cmpd-minsyms.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cmpd-minsyms.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cmpd-minsyms.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test case is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cmpd-minsyms.exp ./gdb/testsuite/gdb.cp/cmpd-minsyms.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cmpd-minsyms.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cmpd-minsyms.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 Free Software Foundation, Inc.
 #
 # Contributed by Red Hat, originally written by Keith Seitz.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/constexpr-field.cc ./gdb/testsuite/gdb.cp/constexpr-field.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/constexpr-field.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/constexpr-field.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/constexpr-field.exp ./gdb/testsuite/gdb.cp/constexpr-field.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/constexpr-field.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/constexpr-field.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/converts.exp ./gdb/testsuite/gdb.cp/converts.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/converts.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/converts.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -36,8 +36,10 @@ gdb_test "p foo0_3 (bppp)" "Cannot resol
 
 gdb_test "p foo1_1 (a)"  "= 11"             "pointer to pointer"
 gdb_test "p foo1_2 (a)"  "= 12"             "pointer to array"
-gdb_test "p foo1_3 (a)"  "Cannot resolve.*" "pointer to pointer of wrong type"
-gdb_test "p foo1_3 (bp)" "Cannot resolve.*" "pointer to pointer of wrong type"
+gdb_test "p foo1_3 (a)"  "Cannot resolve.*" \
+	 "pointer to pointer of wrong type, a"
+gdb_test "p foo1_3 (bp)" "Cannot resolve.*" \
+	 "pointer to pointer of wrong type, bp"
 gdb_test "p foo1_4 (bp)" "= 14"             "pointer to ancestor pointer"
 gdb_test "p foo1_5 (bp)" "= 15"             "pointer to void pointer"
 gdb_test "p foo1_6 (bp)" "Cannot resolve.*"     "pointer to void pointer pointer"
@@ -94,28 +96,36 @@ gdb_test "p foo1_7(ta)" \
 
 # Test for strict type checking
 set error_str "Cannot resolve function %s to any overloaded instance"
-gdb_test "show check type" "Strict type checking is on\."
-gdb_test "p foo1_type_check (123)" [format $error_str "foo1_type_check"]
-gdb_test "p foo2_type_check (0, 1)" [format $error_str "foo2_type_check"]
-gdb_test "p foo2_type_check (1, 0)" [format $error_str "foo2_type_check"]
-gdb_test "p foo2_type_check (1, 1)" [format $error_str "foo2_type_check"]
-gdb_test "p foo3_type_check (0, 0, 1)" [format $error_str "foo3_type_check"]
-gdb_test "p foo3_type_check (0, 1, 0)" [format $error_str "foo3_type_check"]
-gdb_test "p foo3_type_check (1, 0, 0)" [format $error_str "foo3_type_check"]
-gdb_test "p foo3_type_check (0, 1, 1)" [format $error_str "foo3_type_check"]
-gdb_test "p foo3_type_check (1, 1, 0)" [format $error_str "foo3_type_check"]
-gdb_test "p foo3_type_check (1, 1, 1)" [format $error_str "foo3_type_check"]
+gdb_test "show check type" "Strict type checking is on\." \
+	 "confirm check type on"
+
+with_test_prefix "strict type checking on" {
+    gdb_test "p foo1_type_check (123)" [format $error_str "foo1_type_check"]
+    gdb_test "p foo2_type_check (0, 1)" [format $error_str "foo2_type_check"]
+    gdb_test "p foo2_type_check (1, 0)" [format $error_str "foo2_type_check"]
+    gdb_test "p foo2_type_check (1, 1)" [format $error_str "foo2_type_check"]
+    gdb_test "p foo3_type_check (0, 0, 1)" [format $error_str "foo3_type_check"]
+    gdb_test "p foo3_type_check (0, 1, 0)" [format $error_str "foo3_type_check"]
+    gdb_test "p foo3_type_check (1, 0, 0)" [format $error_str "foo3_type_check"]
+    gdb_test "p foo3_type_check (0, 1, 1)" [format $error_str "foo3_type_check"]
+    gdb_test "p foo3_type_check (1, 1, 0)" [format $error_str "foo3_type_check"]
+    gdb_test "p foo3_type_check (1, 1, 1)" [format $error_str "foo3_type_check"]
+}
 
 gdb_test_no_output "set check type off"
-gdb_test "show check type" "Strict type checking is off\."
-gdb_test "p foo1_type_check (123)" " = 1000"
-gdb_test "p foo2_type_check (0, 1)" " = 1001"
-gdb_test "p foo2_type_check (1, 0)" " = 1001"
-gdb_test "p foo2_type_check (1, 1)" " = 1001"
-gdb_test "p foo3_type_check (0, 0, 1)" " = 1002"
-gdb_test "p foo3_type_check (0, 1, 0)" " = 1002"
-gdb_test "p foo3_type_check (1, 0, 0)" " = 1002"
-gdb_test "p foo3_type_check (0, 1, 1)" " = 1002"
-gdb_test "p foo3_type_check (1, 1, 0)" " = 1002"
-gdb_test "p foo3_type_check (1, 1, 1)" " = 1002"
-gdb_test "p foo3_2 (1,1)" " = 32"
+gdb_test "show check type" "Strict type checking is off\." \
+	 "confirm check type off"
+
+with_test_prefix "strict type checking off" {
+    gdb_test "p foo1_type_check (123)" " = 1000"
+    gdb_test "p foo2_type_check (0, 1)" " = 1001"
+    gdb_test "p foo2_type_check (1, 0)" " = 1001"
+    gdb_test "p foo2_type_check (1, 1)" " = 1001"
+    gdb_test "p foo3_type_check (0, 0, 1)" " = 1002"
+    gdb_test "p foo3_type_check (0, 1, 0)" " = 1002"
+    gdb_test "p foo3_type_check (1, 0, 0)" " = 1002"
+    gdb_test "p foo3_type_check (0, 1, 1)" " = 1002"
+    gdb_test "p foo3_type_check (1, 1, 0)" " = 1002"
+    gdb_test "p foo3_type_check (1, 1, 1)" " = 1002"
+    gdb_test "p foo3_2 (1,1)" " = 32"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpcompletion.exp ./gdb/testsuite/gdb.cp/cpcompletion.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpcompletion.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cpcompletion.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpexprs.cc ./gdb/testsuite/gdb.cp/cpexprs.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpexprs.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cpexprs.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat, originally written by Keith Seitz.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpexprs-debug-types.exp ./gdb/testsuite/gdb.cp/cpexprs-debug-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpexprs-debug-types.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cpexprs-debug-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,20 @@
+# Copyright 2020-2021 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 file is part of the gdb testsuite.
+
+# Run cpexprs.exp with -fdebug-types-section.
+set flags {additional_flags=-fdebug-types-section}
+source $srcdir/$subdir/cpexprs.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpexprs.exp ./gdb/testsuite/gdb.cp/cpexprs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpexprs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cpexprs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # cpexprs.exp - C++ expressions tests
 #
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 Free Software Foundation, Inc.
 #
 # Contributed by Red Hat, originally written by Keith Seitz.
 #
@@ -19,743 +19,6 @@
 
 # This file is part of the gdb testsuite.
 
-# A helper proc which sets a breakpoint at FUNC and attempts to
-# run to the breakpoint.
-proc test_breakpoint {func} {
-    global DEC
-
-    # Return to the top of the test function every time.
-    delete_breakpoints
-    if { ! [gdb_breakpoint test_function] } {
-	fail "set test_function breakpoint for $func"
-    } elseif { [gdb_test "continue" \
-		    "Continuing.\r\n\r\nBreakpoint $DEC+,.*test_function.*" \
-		    ""] != 0 } {
-	fail "continue to test_function for $func"
-    } else {
-	gdb_breakpoint "$func"
-	set i [expr {[string last : $func] + 1}]
-	set efunc [string_to_regexp [string range $func $i end]]
-	gdb_test "continue" \
-	    "Continuing.\r\n\r\nBreakpoint $DEC+,.*$efunc.*" \
-	    "continue to $func"
-    }
-}
-
-# Add a function to the list of tested functions
-# FUNC is the name of the function (which will be passed to gdb commands)
-# TYPE is the type of the function, as expected from the "print" command
-# PRINT is the name of the function, as expected result of the print command
-#  *OR* "-", indicating that FUNC should be used (needed for virtual/inherited
-#   funcs)
-# LST is either the expected result of the list command (the comment from
-#  the source code) *OR* "-", in which case FUNC will be used
-#
-# Usage:
-# add NAME TYPE PRINT LST
-# add NAME TYPE PRINT -
-proc add_type_regexp {func type print lst} {
-    global all_functions CONVAR ADDR
-
-    set all_functions($func,type) $type
-    if {$print == "-"} {
-	set print $func
-    }
-
-    # An exception: since gdb canonicalizes C++ output,
-    # "(void)" must be mutated to "()".
-    regsub {\(void\)} $print {()} print
-
-    set all_functions($func,print) \
-	"$CONVAR = {$type} $ADDR <[string_to_regexp $print].*>"
-    if {$lst == "-"} {
-	set lst "$func"
-    }
-    set all_functions($func,list) ".*// [string_to_regexp $lst]"
-}
-
-proc add {func type print lst} {
-    add_type_regexp $func [string_to_regexp $type] $print $lst
-}
-
-proc get {func cmd} {
-    global all_functions
-    return $all_functions($func,$cmd)
-}
-
-# Returns a list of function names for a given command
-proc get_functions {cmd} {
-    global all_functions
-    set result {}
-    foreach i [array names all_functions *,$cmd] {
-	if {$all_functions($i) != ""} {
-	    set idx [string last , $i]
-	    if {$idx != -1} {
-		lappend result [string range $i 0 [expr {$idx - 1}]]
-	    }
-	}
-    }
-
-    return [lsort $result]
-}
-
-# Some convenience variables for this test
-set DEC {[0-9]}; # a decimal number
-set HEX {[0-9a-fA-F]}; # a hexidecimal number
-set CONVAR "\\\$$DEC+"; # convenience variable regexp
-set ADDR "0x$HEX+"; # address
-
-# An array of functions/methods that we are testing...
-# Each element consists is indexed by NAME,COMMAND, where
-# NAME is the function name and COMMAND is the gdb command that
-# we are testing. The value of the array for any index pair is
-# the expected result of running COMMAND with the NAME as argument.
-
-# The array holding all functions/methods to test. Valid subindexes
-# are (none need character escaping -- "add" will take care of that):
-
-# add name type print_name list
-# NAME,type: value is type of function 
-# NAME,print: value is print name of function (careful w/inherited/virtual!)
-# NAME,list: value is comment in source code on first line of function
-#   (without the leading "//")
-array set all_functions {}
-
-# "Normal" functions/methods
-add {test_function} \
-    {int (int, char **)} \
-    - \
-    -
-add {derived::a_function} \
-    {void (const derived * const)} \
-    - \
-    -
-add {base1::a_function} \
-    {void (const base1 * const)} \
-    - \
-    -
-add {base2::a_function} \
-    {void (const base2 * const)} \
-    - \
-    -
-
-# Constructors
-
-# On targets using the ARM EABI, the constructor is expected to return
-# "this".
-proc ctor_ret { type } {
-    if { [istarget arm*-*eabi*] || [is_aarch32_target] } {
-	return "$type *"
-    } else {
-	return "void "
-    }
-}
-
-proc ctor_prefix { type } {
-    set ret [ctor_ret $type]
-    return "${ret}($type * const"
-}
-
-proc ctor { type arglist } {
-    if { $arglist != "" } {
-	set arglist ", $arglist"
-    }
-    return "[ctor_prefix $type]$arglist)"
-}
-
-add {derived::derived} \
-    [ctor derived ""] \
-    - \
-    -
-add_type_regexp {base1::base1(void)} \
-    "[string_to_regexp [ctor_prefix base1]], (const )?void \\*\\*( const)?\\)" \
-    - \
-    -
-add {base1::base1(int)} \
-    [ctor base1 "int"] \
-    - \
-    -
-add_type_regexp {base2::base2} \
-    "[string_to_regexp [ctor_prefix base2]], (const )?void \\*\\*( const)?\\)" \
-    - \
-    -
-add {base::base(void)} \
-    [ctor base ""] \
-    - \
-    -
-add {base::base(int)} \
-    [ctor base "int"] \
-    - \
-    -
-
-# Destructors
-
-# On targets using the ARM EABI, some destructors are expected
-# to return "this".  Others are void.  For internal reasons,
-# GCC returns void * instead of $type *; RealView appears to do
-# the same.
-proc dtor { type } {
-    if { [istarget arm*-*eabi*] || [is_aarch32_target] } {
-	set ret "void *"
-    } else {
-	set ret "void "
-    }
-    return "${ret}($type * const)"
-}
-
-add {base::~base} \
-    [dtor base] \
-    - \
-    -
-
-# Overloaded methods (all are const)
-add {base::overload(void) const} \
-    {int (const base * const)} \
-    - \
-    {base::overload(void) const}
-add {base::overload(int) const} \
-    {int (const base * const, int)} \
-    - \
-    -
-add {base::overload(short) const} \
-    {int (const base * const, short)} \
-    - \
-    -
-add {base::overload(long) const} \
-    {int (const base * const, long)} \
-    - \
-    -
-add {base::overload(char*) const} \
-    {int (const base * const, char *)} \
-    - \
-    -
-add {base::overload(base&) const} \
-    {int (const base * const, base &)} \
-    - \
-    -
-
-# Operators
-add {base::operator+} \
-    {int (const base * const, const base &)} \
-    - \
-    -
-add {base::operator++} \
-    {base (base * const)} \
-    - \
-    -
-add {base::operator+=} \
-    {base (base * const, const base &)} \
-    - \
-    -
-add {base::operator-} \
-    {int (const base * const, const base &)} \
-    - \
-    -
-add {base::operator--} \
-    {base (base * const)} \
-    - \
-    -
-add {base::operator-=} \
-    {base (base * const, const base &)} \
-    - \
-    -
-add {base::operator*} \
-    {int (const base * const, const base &)} \
-    - \
-    -
-add {base::operator*=} \
-    {base (base * const, const base &)} \
-    - \
-    -
-add {base::operator/} \
-    {int (const base * const, const base &)} \
-    - \
-    -
-add {base::operator/=} \
-    {base (base * const, const base &)} \
-    - \
-    -
-add {base::operator%} \
-    {int (const base * const, const base &)} \
-    - \
-    -
-add {base::operator%=} \
-    {base (base * const, const base &)} \
-    - \
-    -
-add {base::operator<} \
-    {bool (const base * const, const base &)} \
-    - \
-    -
-add {base::operator<=} \
-    {bool (const base * const, const base &)} \
-    - \
-    -
-add {base::operator>} \
-    {bool (const base * const, const base &)} \
-    - \
-    -
-add {base::operator>=} \
-    {bool (const base * const, const base &)} \
-    - \
-    -
-add {base::operator!=} \
-    {bool (const base * const, const base &)} \
-    - \
-    -
-add {base::operator==} \
-    {bool (const base * const, const base &)} \
-    - \
-    -
-add {base::operator!} \
-    {bool (const base * const)} \
-    - \
-    -
-add {base::operator&&} \
-    {bool (const base * const, const base &)} \
-    - \
-    -
-add {base::operator||} \
-    {bool (const base * const, const base &)} \
-    - \
-    -
-add {base::operator<<} \
-    {int (const base * const, int)} \
-    - \
-    -
-add {base::operator<<=} \
-    {base (base * const, int)} \
-    - \
-    -
-add {base::operator>>} \
-    {int (const base * const, int)} \
-    - \
-    -
-add {base::operator>>=} \
-    {base (base * const, int)} \
-    - \
-    -
-add {base::operator~} \
-    {int (const base * const)} \
-    - \
-    -
-add {base::operator&} \
-    {int (const base * const, const base &)} \
-    - \
-    -
-add {base::operator&=} \
-    {base (base * const, const base &)} \
-    - \
-    -
-add {base::operator|} \
-    {int (const base * const, const base &)} \
-    - \
-    -
-add {base::operator|=} \
-    {base (base * const, const base &)} \
-    - \
-    -
-add {base::operator^} \
-    {int (const base * const, const base &)} \
-    - \
-    -
-add {base::operator^=} \
-    {base (base * const, const base &)} \
-    - \
-    -
-add {base::operator=} \
-    {base (base * const, const base &)} \
-    - \
-    -
-add {base::operator()} \
-    {void (const base * const)} \
-    - \
-    -
-add {base::operator[]} \
-    {int (const base * const, int)} \
-    - \
-    -
-add {base::operator new} \
-    {void *(size_t)} \
-    - \
-    -
-add {base::operator delete} \
-    {void (void *)} \
-    - \
-    -
-add {base::operator new[]} \
-    {void *(size_t)} \
-    - \
-    -
-add {base::operator delete[]} \
-    {void (void *)} \
-    - \
-    -
-add {base::operator char*} \
-    {char *(const base * const)} \
-    - \
-    -
-add {base::operator fluff*} \
-    {fluff *(const base * const)} \
-    - \
-    -
-add {base::operator fluff**} \
-    {fluff **(const base * const)} \
-    - \
-    -
-add {base::operator int} \
-    {int (const base * const)} \
-    - \
-    -
-add {base::operator fluff const* const*} \
-    {const fluff * const *(const base * const)} \
-    - \
-    -
-
-# Templates
-add {tclass<char>::do_something} \
-    {void (tclass<char> * const)} \
-    - \
-    -
-add {tclass<int>::do_something} \
-    {void (tclass<int> * const)} \
-    - \
-    -
-add {tclass<long>::do_something} \
-    {void (tclass<long> * const)} \
-    - \
-    -
-add {tclass<short>::do_something} \
-    {void (tclass<short> * const)} \
-    - \
-    -
-add {tclass<base>::do_something} \
-    {void (tclass<base> * const)} \
-    - \
-    -
-add {flubber<int, int, int, int, int>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, int, short>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, int, long>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, int, char>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, short, int>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, short, short>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, short, long>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, short, char>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, long, int>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, long, short>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, long, long>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, long, char>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, char, int>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, char, short>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, char, long>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, int, char, char>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, short, int, int>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, short, int, short>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, short, int, long>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, short, int, char>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<int, int, short, short, int>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<short, int, short, int, short>} \
-    {void (void)} \
-    - \
-    flubber
-add {flubber<long, short, long, short, long>} \
-    {void (void)} \
-    - \
-    flubber
-add {tclass<base>::do_something} \
-    {void (tclass<base> * const)} \
-    - \
-    {tclass<T>::do_something}
-add {policy1::policy} \
-    [ctor "policy<int, operation_1<void*> >" "int"] \
-    {policy<int, operation_1<void*> >::policy} \
-    {policy<T, Policy>::policy}
-add {policy2::policy} \
-    [ctor "policy<int, operation_2<void*> >" int] \
-    {policy<int, operation_2<void*> >::policy} \
-    {policy<T, Policy>::policy}
-add {policy3::policy} \
-    [ctor "policy<int, operation_3<void*> >" "int"] \
-    {policy<int, operation_3<void*> >::policy} \
-    {policy<T, Policy>::policy}
-add {policy4::policy} \
-    [ctor "policy<int, operation_4<void*> >" "int"] \
-    {policy<int, operation_4<void*> >::policy} \
-    {policy<T, Policy>::policy}
-add {policy1::function} \
-    {void (void)} \
-    {operation_1<void*>::function} \
-    {operation_1<T>::function}
-add {policy2::function} \
-    {void (void)} \
-    {operation_2<void*>::function} \
-    {operation_2<T>::function}
-add {policy3::function} \
-    {void (void)} \
-    {operation_3<void*>::function} \
-    {operation_3<T>::function}
-add {policy4::function} \
-    {void (void)} \
-    {operation_4<void*>::function} \
-    {operation_4<T>::function}
-add {policyd<int, operation_1<int> >::policyd} \
-    [ctor "policyd<int, operation_1<int> >" "int"] \
-    - \
-    {policyd<T, Policy>::policyd}
-add {policyd1::policyd} \
-    [ctor "policyd<int, operation_1<int> >" "int"] \
-    {policyd<int, operation_1<int> >::policyd} \
-    {policyd<T, Policy>::policyd}
-add {policyd<int, operation_1<int> >::~policyd} \
-    [dtor "policyd<int, operation_1<int> >"] \
-    - \
-    {policyd<T, Policy>::~policyd}
-add {policyd1::~policyd} \
-    [dtor "policyd<int, operation_1<int> >"] \
-    {policyd<int, operation_1<int> >::~policyd} \
-    {policyd<T, Policy>::~policyd}
-add {policyd<long, operation_1<long> >::policyd} \
-    [ctor "policyd<long, operation_1<long> >" "long"] \
-    - \
-    {policyd<T, Policy>::policyd}
-add {policyd2::policyd} \
-    [ctor "policyd<long, operation_1<long> >" "long"] \
-    {policyd<long, operation_1<long> >::policyd} \
-    {policyd<T, Policy>::policyd}
-add {policyd<long, operation_1<long> >::~policyd} \
-    [dtor "policyd<long, operation_1<long> >"] \
-    - \
-    {policyd<T, Policy>::~policyd}
-add {policyd2::~policyd} \
-    [dtor "policyd<long, operation_1<long> >"] \
-    {policyd<long, operation_1<long> >::~policyd} \
-    {policyd<T, Policy>::~policyd}
-add {policyd<char, operation_1<char> >::policyd} \
-    [ctor "policyd<char, operation_1<char> >" "char"] \
-    - \
-    {policyd<T, Policy>::policyd}
-add {policyd3::policyd} \
-    [ctor "policyd<char, operation_1<char> >" "char"] \
-    {policyd<char, operation_1<char> >::policyd} \
-    {policyd<T, Policy>::policyd}
-add {policyd<char, operation_1<char> >::~policyd} \
-    [dtor "policyd<char, operation_1<char> >"] \
-    - \
-    {policyd<T, Policy>::~policyd}
-add {policyd3::~policyd} \
-    [dtor "policyd<char, operation_1<char> >"] \
-    {policyd<char, operation_1<char> >::~policyd} \
-    {policyd<T, Policy>::~policyd}
-add {policyd<base, operation_1<base> >::policyd} \
-    [ctor "policyd<base, operation_1<base> >" "base"] \
-    - \
-    {policyd<T, Policy>::policyd}
-add {policyd4::policyd} \
-    [ctor "policyd<base, operation_1<base> >" "base"] \
-    {policyd<base, operation_1<base> >::policyd} \
-    {policyd<T, Policy>::policyd}
-add {policyd<base, operation_1<base> >::~policyd} \
-    [dtor "policyd<base, operation_1<base> >"] \
-    - \
-    {policyd<T, Policy>::~policyd}
-add {policyd4::~policyd} \
-    [dtor "policyd<base, operation_1<base> >"] \
-    {policyd<base, operation_1<base> >::~policyd} \
-    {policyd<T, Policy>::~policyd}
-add {policyd<tclass<int>, operation_1<tclass<int> > >::policyd} \
-    [ctor "policyd<tclass<int>, operation_1<tclass<int> > >" "tclass<int>"] \
-    - \
-    {policyd<T, Policy>::policyd}
-add {policyd5::policyd} \
-    [ctor "policyd<tclass<int>, operation_1<tclass<int> > >" "tclass<int>"] \
-    {policyd<tclass<int>, operation_1<tclass<int> > >::policyd} \
-    {policyd<T, Policy>::policyd}
-add {policyd<tclass<int>, operation_1<tclass<int> > >::~policyd} \
-    [dtor "policyd<tclass<int>, operation_1<tclass<int> > >"] \
-    - \
-    {policyd<T, Policy>::~policyd}
-add {policyd5::~policyd} \
-    [dtor "policyd<tclass<int>, operation_1<tclass<int> > >"] \
-    {policyd<tclass<int>, operation_1<tclass<int> > >::~policyd} \
-    {policyd<T, Policy>::~policyd}
-add {policyd<int, operation_1<int> >::function} \
-    {void (void)} \
-    {operation_1<int>::function}\
-    {operation_1<T>::function}
-add {policyd1::function} \
-    {void (void)} \
-    {operation_1<int>::function} \
-    {operation_1<T>::function}
-add {policyd2::function} \
-    {void (void)} \
-    {operation_1<long>::function} \
-    {operation_1<T>::function}
-add {policyd<char, operation_1<char> >::function} \
-    {void (void)} \
-    {operation_1<char>::function} \
-    {operation_1<T>::function}
-add {policyd3::function} \
-    {void (void)} \
-    {operation_1<char>::function} \
-    {operation_1<T>::function}
-add {policyd<base, operation_1<base> >::function} \
-    {void (void)} \
-    {operation_1<base>::function} \
-    {operation_1<T>::function}
-add {policyd4::function} \
-    {void (void)} \
-    {operation_1<base>::function} \
-    {operation_1<T>::function}
-add {policyd<tclass<int>, operation_1<tclass<int> > >::function} \
-    {void (void)} \
-    {operation_1<tclass<int> >::function} \
-    {operation_1<T>::function}
-add {policyd5::function} \
-    {void (void)} \
-    {operation_1<tclass<int> >::function} \
-    {operation_1<T>::function}
-
-# Start the test
-if {[skip_cplus_tests]} { continue }
-
-#
-# test running programs
-#
-
-standard_testfile .cc
-
-if {[get_compiler_info "c++"]} {
-    return -1
-}
-
-if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
-    return -1
-}
-
-if {![runto_main]} {
-    perror "couldn't run to breakpoint"
-    continue
-}
-
-# Set the listsize to one. This will help with testing "list".
-gdb_test "set listsize 1"
-
-# "print METHOD"
-foreach name [get_functions print] {
-    gdb_test "print $name" [get $name print]
-}
-
-# "list METHOD"
-foreach name [get_functions list] {
-    gdb_test "list $name" [get $name list]
-}
-
-# Running to breakpoint -- use any function we can "list"
-foreach name [get_functions list] {
-    # Skip "test_function", since test_breakpoint uses it
-    if {[string compare $name "test_function"] != 0} {
-	test_breakpoint $name
-    }
-}
-
-# Test c/v gets recognized even without quoting.
-foreach cv {{} { const} { volatile} { const volatile}} {
-  set test "p 'CV::m(int)$cv'"
-  gdb_test_multiple $test $test {
-      -re "( = {.*} 0x\[0-9a-f\]+ <CV::m.*>)\r\n$gdb_prompt $" {
-	  # = {void (CV * const, CV::t)} 0x400944 <CV::m(int)>
-	  set correct $expect_out(1,string)
-	  pass $test
-      }
-  }
-  if {"$cv" != ""} {
-      setup_kfail c++/14186 *-*-*
-  }
-  gdb_test "p CV::m(int)$cv" [string_to_regexp $correct]
-}
-
-# Test TYPENAME:: gets recognized even in parentheses.
-gdb_test "p CV_f(int)"   { = {int \(int\)} 0x[0-9a-f]+ <CV_f\(int\)>}
-gdb_test "p CV_f(CV::t)" { = {int \(int\)} 0x[0-9a-f]+ <CV_f\(int\)>}
-gdb_test "p CV_f(CV::i)" " = 43"
-
-gdb_test "p CV_f('cpexprs.cc'::CV::t)" \
-    { = {int \(int\)} 0x[0-9a-f]+ <CV_f\(int\)>}
-
-# Make sure conversion operator names are canonicalized and properly
-# "spelled."
-gdb_test "p base::operator const fluff * const *" \
-    [get "base::operator fluff const* const*" print] \
-    "canonicalized conversion operator name 1"
-gdb_test "p base::operator const fluff* const*" \
-    [get "base::operator fluff const* const*" print] \
-    "canonicalized conversion operator name 2"
-gdb_test "p base::operator derived*" \
-    "There is no field named operator derived\\*" \
-    "undefined conversion operator"
-
-gdb_exit
-return 0
+# Run cpexprs.exp.
+set flags {}
+source $srcdir/$subdir/cpexprs.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpexprs.exp.tcl ./gdb/testsuite/gdb.cp/cpexprs.exp.tcl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpexprs.exp.tcl	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cpexprs.exp.tcl	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,761 @@
+# cpexprs.exp - C++ expressions tests
+#
+# Copyright 2008-2021 Free Software Foundation, Inc.
+#
+# Contributed by Red Hat, originally written by Keith Seitz.
+#
+# 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 file is part of the gdb testsuite.
+
+# A helper proc which sets a breakpoint at FUNC and attempts to
+# run to the breakpoint.
+proc test_breakpoint {func} {
+    global DEC
+
+    # Return to the top of the test function every time.
+    delete_breakpoints
+    if { ! [gdb_breakpoint test_function] } {
+	fail "set test_function breakpoint for $func"
+    } elseif { [gdb_test "continue" \
+		    "Continuing.\r\n\r\nBreakpoint $DEC+,.*test_function.*" \
+		    ""] != 0 } {
+	fail "continue to test_function for $func"
+    } else {
+	gdb_breakpoint "$func"
+	set i [expr {[string last : $func] + 1}]
+	set efunc [string_to_regexp [string range $func $i end]]
+	gdb_test "continue" \
+	    "Continuing.\r\n\r\nBreakpoint $DEC+,.*$efunc.*" \
+	    "continue to $func"
+    }
+}
+
+# Add a function to the list of tested functions
+# FUNC is the name of the function (which will be passed to gdb commands)
+# TYPE is the type of the function, as expected from the "print" command
+# PRINT is the name of the function, as expected result of the print command
+#  *OR* "-", indicating that FUNC should be used (needed for virtual/inherited
+#   funcs)
+# LST is either the expected result of the list command (the comment from
+#  the source code) *OR* "-", in which case FUNC will be used
+#
+# Usage:
+# add NAME TYPE PRINT LST
+# add NAME TYPE PRINT -
+proc add_type_regexp {func type print lst} {
+    global all_functions CONVAR ADDR
+
+    set all_functions($func,type) $type
+    if {$print == "-"} {
+	set print $func
+    }
+
+    # An exception: since gdb canonicalizes C++ output,
+    # "(void)" must be mutated to "()".
+    regsub {\(void\)} $print {()} print
+
+    set all_functions($func,print) \
+	"$CONVAR = {$type} $ADDR <[string_to_regexp $print].*>"
+    if {$lst == "-"} {
+	set lst "$func"
+    }
+    set all_functions($func,list) ".*// [string_to_regexp $lst]"
+}
+
+proc add {func type print lst} {
+    add_type_regexp $func [string_to_regexp $type] $print $lst
+}
+
+proc get {func cmd} {
+    global all_functions
+    return $all_functions($func,$cmd)
+}
+
+# Returns a list of function names for a given command
+proc get_functions {cmd} {
+    global all_functions
+    set result {}
+    foreach i [array names all_functions *,$cmd] {
+	if {$all_functions($i) != ""} {
+	    set idx [string last , $i]
+	    if {$idx != -1} {
+		lappend result [string range $i 0 [expr {$idx - 1}]]
+	    }
+	}
+    }
+
+    return [lsort $result]
+}
+
+# Some convenience variables for this test
+set DEC {[0-9]}; # a decimal number
+set HEX {[0-9a-fA-F]}; # a hexidecimal number
+set CONVAR "\\\$$DEC+"; # convenience variable regexp
+set ADDR "0x$HEX+"; # address
+
+# An array of functions/methods that we are testing...
+# Each element consists is indexed by NAME,COMMAND, where
+# NAME is the function name and COMMAND is the gdb command that
+# we are testing. The value of the array for any index pair is
+# the expected result of running COMMAND with the NAME as argument.
+
+# The array holding all functions/methods to test. Valid subindexes
+# are (none need character escaping -- "add" will take care of that):
+
+# add name type print_name list
+# NAME,type: value is type of function 
+# NAME,print: value is print name of function (careful w/inherited/virtual!)
+# NAME,list: value is comment in source code on first line of function
+#   (without the leading "//")
+array set all_functions {}
+
+# "Normal" functions/methods
+add {test_function} \
+    {int (int, char **)} \
+    - \
+    -
+add {derived::a_function} \
+    {void (const derived * const)} \
+    - \
+    -
+add {base1::a_function} \
+    {void (const base1 * const)} \
+    - \
+    -
+add {base2::a_function} \
+    {void (const base2 * const)} \
+    - \
+    -
+
+# Constructors
+
+# On targets using the ARM EABI, the constructor is expected to return
+# "this".
+proc ctor_ret { type } {
+    if { [istarget arm*-*eabi*] || [is_aarch32_target] } {
+	return "$type *"
+    } else {
+	return "void "
+    }
+}
+
+proc ctor_prefix { type } {
+    set ret [ctor_ret $type]
+    return "${ret}($type * const"
+}
+
+proc ctor { type arglist } {
+    if { $arglist != "" } {
+	set arglist ", $arglist"
+    }
+    return "[ctor_prefix $type]$arglist)"
+}
+
+add {derived::derived} \
+    [ctor derived ""] \
+    - \
+    -
+add_type_regexp {base1::base1(void)} \
+    "[string_to_regexp [ctor_prefix base1]], (const )?void \\*\\*( const)?\\)" \
+    - \
+    -
+add {base1::base1(int)} \
+    [ctor base1 "int"] \
+    - \
+    -
+add_type_regexp {base2::base2} \
+    "[string_to_regexp [ctor_prefix base2]], (const )?void \\*\\*( const)?\\)" \
+    - \
+    -
+add {base::base(void)} \
+    [ctor base ""] \
+    - \
+    -
+add {base::base(int)} \
+    [ctor base "int"] \
+    - \
+    -
+
+# Destructors
+
+# On targets using the ARM EABI, some destructors are expected
+# to return "this".  Others are void.  For internal reasons,
+# GCC returns void * instead of $type *; RealView appears to do
+# the same.
+proc dtor { type } {
+    if { [istarget arm*-*eabi*] || [is_aarch32_target] } {
+	set ret "void *"
+    } else {
+	set ret "void "
+    }
+    return "${ret}($type * const)"
+}
+
+add {base::~base} \
+    [dtor base] \
+    - \
+    -
+
+# Overloaded methods (all are const)
+add {base::overload(void) const} \
+    {int (const base * const)} \
+    - \
+    {base::overload(void) const}
+add {base::overload(int) const} \
+    {int (const base * const, int)} \
+    - \
+    -
+add {base::overload(short) const} \
+    {int (const base * const, short)} \
+    - \
+    -
+add {base::overload(long) const} \
+    {int (const base * const, long)} \
+    - \
+    -
+add {base::overload(char*) const} \
+    {int (const base * const, char *)} \
+    - \
+    -
+add {base::overload(base&) const} \
+    {int (const base * const, base &)} \
+    - \
+    -
+
+# Operators
+add {base::operator+} \
+    {int (const base * const, const base &)} \
+    - \
+    -
+add {base::operator++} \
+    {base (base * const)} \
+    - \
+    -
+add {base::operator+=} \
+    {base (base * const, const base &)} \
+    - \
+    -
+add {base::operator-} \
+    {int (const base * const, const base &)} \
+    - \
+    -
+add {base::operator--} \
+    {base (base * const)} \
+    - \
+    -
+add {base::operator-=} \
+    {base (base * const, const base &)} \
+    - \
+    -
+add {base::operator*} \
+    {int (const base * const, const base &)} \
+    - \
+    -
+add {base::operator*=} \
+    {base (base * const, const base &)} \
+    - \
+    -
+add {base::operator/} \
+    {int (const base * const, const base &)} \
+    - \
+    -
+add {base::operator/=} \
+    {base (base * const, const base &)} \
+    - \
+    -
+add {base::operator%} \
+    {int (const base * const, const base &)} \
+    - \
+    -
+add {base::operator%=} \
+    {base (base * const, const base &)} \
+    - \
+    -
+add {base::operator<} \
+    {bool (const base * const, const base &)} \
+    - \
+    -
+add {base::operator<=} \
+    {bool (const base * const, const base &)} \
+    - \
+    -
+add {base::operator>} \
+    {bool (const base * const, const base &)} \
+    - \
+    -
+add {base::operator>=} \
+    {bool (const base * const, const base &)} \
+    - \
+    -
+add {base::operator!=} \
+    {bool (const base * const, const base &)} \
+    - \
+    -
+add {base::operator==} \
+    {bool (const base * const, const base &)} \
+    - \
+    -
+add {base::operator!} \
+    {bool (const base * const)} \
+    - \
+    -
+add {base::operator&&} \
+    {bool (const base * const, const base &)} \
+    - \
+    -
+add {base::operator||} \
+    {bool (const base * const, const base &)} \
+    - \
+    -
+add {base::operator<<} \
+    {int (const base * const, int)} \
+    - \
+    -
+add {base::operator<<=} \
+    {base (base * const, int)} \
+    - \
+    -
+add {base::operator>>} \
+    {int (const base * const, int)} \
+    - \
+    -
+add {base::operator>>=} \
+    {base (base * const, int)} \
+    - \
+    -
+add {base::operator~} \
+    {int (const base * const)} \
+    - \
+    -
+add {base::operator&} \
+    {int (const base * const, const base &)} \
+    - \
+    -
+add {base::operator&=} \
+    {base (base * const, const base &)} \
+    - \
+    -
+add {base::operator|} \
+    {int (const base * const, const base &)} \
+    - \
+    -
+add {base::operator|=} \
+    {base (base * const, const base &)} \
+    - \
+    -
+add {base::operator^} \
+    {int (const base * const, const base &)} \
+    - \
+    -
+add {base::operator^=} \
+    {base (base * const, const base &)} \
+    - \
+    -
+add {base::operator=} \
+    {base (base * const, const base &)} \
+    - \
+    -
+add {base::operator()} \
+    {void (const base * const)} \
+    - \
+    -
+add {base::operator[]} \
+    {int (const base * const, int)} \
+    - \
+    -
+add {base::operator new} \
+    {void *(size_t)} \
+    - \
+    -
+add {base::operator delete} \
+    {void (void *)} \
+    - \
+    -
+add {base::operator new[]} \
+    {void *(size_t)} \
+    - \
+    -
+add {base::operator delete[]} \
+    {void (void *)} \
+    - \
+    -
+add {base::operator char*} \
+    {char *(const base * const)} \
+    - \
+    -
+add {base::operator fluff*} \
+    {fluff *(const base * const)} \
+    - \
+    -
+add {base::operator fluff**} \
+    {fluff **(const base * const)} \
+    - \
+    -
+add {base::operator int} \
+    {int (const base * const)} \
+    - \
+    -
+add {base::operator fluff const* const*} \
+    {const fluff * const *(const base * const)} \
+    - \
+    -
+
+# Templates
+add {tclass<char>::do_something} \
+    {void (tclass<char> * const)} \
+    - \
+    -
+add {tclass<int>::do_something} \
+    {void (tclass<int> * const)} \
+    - \
+    -
+add {tclass<long>::do_something} \
+    {void (tclass<long> * const)} \
+    - \
+    -
+add {tclass<short>::do_something} \
+    {void (tclass<short> * const)} \
+    - \
+    -
+add {tclass<base>::do_something} \
+    {void (tclass<base> * const)} \
+    - \
+    -
+add {flubber<int, int, int, int, int>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, int, short>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, int, long>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, int, char>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, short, int>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, short, short>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, short, long>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, short, char>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, long, int>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, long, short>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, long, long>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, long, char>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, char, int>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, char, short>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, char, long>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, int, char, char>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, short, int, int>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, short, int, short>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, short, int, long>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, short, int, char>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<int, int, short, short, int>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<short, int, short, int, short>} \
+    {void (void)} \
+    - \
+    flubber
+add {flubber<long, short, long, short, long>} \
+    {void (void)} \
+    - \
+    flubber
+add {tclass<base>::do_something} \
+    {void (tclass<base> * const)} \
+    - \
+    {tclass<T>::do_something}
+add {policy1::policy} \
+    [ctor "policy<int, operation_1<void*> >" "int"] \
+    {policy<int, operation_1<void*> >::policy} \
+    {policy<T, Policy>::policy}
+add {policy2::policy} \
+    [ctor "policy<int, operation_2<void*> >" int] \
+    {policy<int, operation_2<void*> >::policy} \
+    {policy<T, Policy>::policy}
+add {policy3::policy} \
+    [ctor "policy<int, operation_3<void*> >" "int"] \
+    {policy<int, operation_3<void*> >::policy} \
+    {policy<T, Policy>::policy}
+add {policy4::policy} \
+    [ctor "policy<int, operation_4<void*> >" "int"] \
+    {policy<int, operation_4<void*> >::policy} \
+    {policy<T, Policy>::policy}
+add {policy1::function} \
+    {void (void)} \
+    {operation_1<void*>::function} \
+    {operation_1<T>::function}
+add {policy2::function} \
+    {void (void)} \
+    {operation_2<void*>::function} \
+    {operation_2<T>::function}
+add {policy3::function} \
+    {void (void)} \
+    {operation_3<void*>::function} \
+    {operation_3<T>::function}
+add {policy4::function} \
+    {void (void)} \
+    {operation_4<void*>::function} \
+    {operation_4<T>::function}
+add {policyd<int, operation_1<int> >::policyd} \
+    [ctor "policyd<int, operation_1<int> >" "int"] \
+    - \
+    {policyd<T, Policy>::policyd}
+add {policyd1::policyd} \
+    [ctor "policyd<int, operation_1<int> >" "int"] \
+    {policyd<int, operation_1<int> >::policyd} \
+    {policyd<T, Policy>::policyd}
+add {policyd<int, operation_1<int> >::~policyd} \
+    [dtor "policyd<int, operation_1<int> >"] \
+    - \
+    {policyd<T, Policy>::~policyd}
+add {policyd1::~policyd} \
+    [dtor "policyd<int, operation_1<int> >"] \
+    {policyd<int, operation_1<int> >::~policyd} \
+    {policyd<T, Policy>::~policyd}
+add {policyd<long, operation_1<long> >::policyd} \
+    [ctor "policyd<long, operation_1<long> >" "long"] \
+    - \
+    {policyd<T, Policy>::policyd}
+add {policyd2::policyd} \
+    [ctor "policyd<long, operation_1<long> >" "long"] \
+    {policyd<long, operation_1<long> >::policyd} \
+    {policyd<T, Policy>::policyd}
+add {policyd<long, operation_1<long> >::~policyd} \
+    [dtor "policyd<long, operation_1<long> >"] \
+    - \
+    {policyd<T, Policy>::~policyd}
+add {policyd2::~policyd} \
+    [dtor "policyd<long, operation_1<long> >"] \
+    {policyd<long, operation_1<long> >::~policyd} \
+    {policyd<T, Policy>::~policyd}
+add {policyd<char, operation_1<char> >::policyd} \
+    [ctor "policyd<char, operation_1<char> >" "char"] \
+    - \
+    {policyd<T, Policy>::policyd}
+add {policyd3::policyd} \
+    [ctor "policyd<char, operation_1<char> >" "char"] \
+    {policyd<char, operation_1<char> >::policyd} \
+    {policyd<T, Policy>::policyd}
+add {policyd<char, operation_1<char> >::~policyd} \
+    [dtor "policyd<char, operation_1<char> >"] \
+    - \
+    {policyd<T, Policy>::~policyd}
+add {policyd3::~policyd} \
+    [dtor "policyd<char, operation_1<char> >"] \
+    {policyd<char, operation_1<char> >::~policyd} \
+    {policyd<T, Policy>::~policyd}
+add {policyd<base, operation_1<base> >::policyd} \
+    [ctor "policyd<base, operation_1<base> >" "base"] \
+    - \
+    {policyd<T, Policy>::policyd}
+add {policyd4::policyd} \
+    [ctor "policyd<base, operation_1<base> >" "base"] \
+    {policyd<base, operation_1<base> >::policyd} \
+    {policyd<T, Policy>::policyd}
+add {policyd<base, operation_1<base> >::~policyd} \
+    [dtor "policyd<base, operation_1<base> >"] \
+    - \
+    {policyd<T, Policy>::~policyd}
+add {policyd4::~policyd} \
+    [dtor "policyd<base, operation_1<base> >"] \
+    {policyd<base, operation_1<base> >::~policyd} \
+    {policyd<T, Policy>::~policyd}
+add {policyd<tclass<int>, operation_1<tclass<int> > >::policyd} \
+    [ctor "policyd<tclass<int>, operation_1<tclass<int> > >" "tclass<int>"] \
+    - \
+    {policyd<T, Policy>::policyd}
+add {policyd5::policyd} \
+    [ctor "policyd<tclass<int>, operation_1<tclass<int> > >" "tclass<int>"] \
+    {policyd<tclass<int>, operation_1<tclass<int> > >::policyd} \
+    {policyd<T, Policy>::policyd}
+add {policyd<tclass<int>, operation_1<tclass<int> > >::~policyd} \
+    [dtor "policyd<tclass<int>, operation_1<tclass<int> > >"] \
+    - \
+    {policyd<T, Policy>::~policyd}
+add {policyd5::~policyd} \
+    [dtor "policyd<tclass<int>, operation_1<tclass<int> > >"] \
+    {policyd<tclass<int>, operation_1<tclass<int> > >::~policyd} \
+    {policyd<T, Policy>::~policyd}
+add {policyd<int, operation_1<int> >::function} \
+    {void (void)} \
+    {operation_1<int>::function}\
+    {operation_1<T>::function}
+add {policyd1::function} \
+    {void (void)} \
+    {operation_1<int>::function} \
+    {operation_1<T>::function}
+add {policyd2::function} \
+    {void (void)} \
+    {operation_1<long>::function} \
+    {operation_1<T>::function}
+add {policyd<char, operation_1<char> >::function} \
+    {void (void)} \
+    {operation_1<char>::function} \
+    {operation_1<T>::function}
+add {policyd3::function} \
+    {void (void)} \
+    {operation_1<char>::function} \
+    {operation_1<T>::function}
+add {policyd<base, operation_1<base> >::function} \
+    {void (void)} \
+    {operation_1<base>::function} \
+    {operation_1<T>::function}
+add {policyd4::function} \
+    {void (void)} \
+    {operation_1<base>::function} \
+    {operation_1<T>::function}
+add {policyd<tclass<int>, operation_1<tclass<int> > >::function} \
+    {void (void)} \
+    {operation_1<tclass<int> >::function} \
+    {operation_1<T>::function}
+add {policyd5::function} \
+    {void (void)} \
+    {operation_1<tclass<int> >::function} \
+    {operation_1<T>::function}
+
+# Start the test
+if {[skip_cplus_tests]} { continue }
+
+#
+# test running programs
+#
+
+standard_testfile cpexprs.cc
+
+if {[get_compiler_info "c++"]} {
+    return -1
+}
+
+# Include required flags.
+set flags "$flags debug c++"
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile "$flags"]} {
+    return -1
+}
+
+if {![runto_main]} {
+    perror "couldn't run to breakpoint"
+    continue
+}
+
+# Set the listsize to one. This will help with testing "list".
+gdb_test "set listsize 1"
+
+# "print METHOD"
+foreach name [get_functions print] {
+    gdb_test "print $name" [get $name print]
+}
+
+# "list METHOD"
+foreach name [get_functions list] {
+    gdb_test "list $name" [get $name list]
+}
+
+# Running to breakpoint -- use any function we can "list"
+foreach name [get_functions list] {
+    # Skip "test_function", since test_breakpoint uses it
+    if {[string compare $name "test_function"] != 0} {
+	test_breakpoint $name
+    }
+}
+
+# Test c/v gets recognized even without quoting.
+foreach cv {{} { const} { volatile} { const volatile}} {
+  set test "p 'CV::m(int)$cv'"
+  gdb_test_multiple $test $test {
+      -re "( = {.*} 0x\[0-9a-f\]+ <CV::m.*>)\r\n$gdb_prompt $" {
+	  # = {void (CV * const, CV::t)} 0x400944 <CV::m(int)>
+	  set correct $expect_out(1,string)
+	  pass $test
+      }
+  }
+  gdb_test "p CV::m(int)$cv" [string_to_regexp $correct]
+}
+
+# Test TYPENAME:: gets recognized even in parentheses.
+gdb_test "p CV_f(int)"   { = {int \(int\)} 0x[0-9a-f]+ <CV_f\(int\)>}
+gdb_test "p CV_f(CV::t)" { = {int \(int\)} 0x[0-9a-f]+ <CV_f\(int\)>}
+gdb_test "p CV_f(CV::i)" " = 43"
+
+gdb_test "p CV_f('cpexprs.cc'::CV::t)" \
+    { = {int \(int\)} 0x[0-9a-f]+ <CV_f\(int\)>}
+
+# Make sure conversion operator names are canonicalized and properly
+# "spelled."
+gdb_test "p base::operator const fluff * const *" \
+    [get "base::operator fluff const* const*" print] \
+    "canonicalized conversion operator name 1"
+gdb_test "p base::operator const fluff* const*" \
+    [get "base::operator fluff const* const*" print] \
+    "canonicalized conversion operator name 2"
+gdb_test "p base::operator derived*" \
+    "There is no field named operator derived\\*" \
+    "undefined conversion operator"
+
+gdb_exit
+return 0
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cplabel.cc ./gdb/testsuite/gdb.cp/cplabel.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cplabel.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cplabel.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cplabel.exp ./gdb/testsuite/gdb.cp/cplabel.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cplabel.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cplabel.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cplusfuncs.exp ./gdb/testsuite/gdb.cp/cplusfuncs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cplusfuncs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cplusfuncs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cp-relocate.cc ./gdb/testsuite/gdb.cp/cp-relocate.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cp-relocate.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cp-relocate.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test file is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cp-relocate.exp ./gdb/testsuite/gdb.cp/cp-relocate.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cp-relocate.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cp-relocate.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpsizeof.cc ./gdb/testsuite/gdb.cp/cpsizeof.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpsizeof.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cpsizeof.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpsizeof.exp ./gdb/testsuite/gdb.cp/cpsizeof.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cpsizeof.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cpsizeof.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # sizeof() tests [c++/16675]
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cttiadd1.cc ./gdb/testsuite/gdb.cp/cttiadd1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cttiadd1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cttiadd1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1998-2020 Free Software Foundation, Inc.
+   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cttiadd2.cc ./gdb/testsuite/gdb.cp/cttiadd2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cttiadd2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cttiadd2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1998-2020 Free Software Foundation, Inc.
+   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cttiadd3.cc ./gdb/testsuite/gdb.cp/cttiadd3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cttiadd3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cttiadd3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1998-2020 Free Software Foundation, Inc.
+   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cttiadd.cc ./gdb/testsuite/gdb.cp/cttiadd.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/cttiadd.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/cttiadd.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1998-2020 Free Software Foundation, Inc.
+   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ctti.exp ./gdb/testsuite/gdb.cp/ctti.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ctti.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ctti.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/debug-expr.exp ./gdb/testsuite/gdb.cp/debug-expr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/debug-expr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/debug-expr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/demangle.exp ./gdb/testsuite/gdb.cp/demangle.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/demangle.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/demangle.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/derivation2.cc ./gdb/testsuite/gdb.cp/derivation2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/derivation2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/derivation2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/derivation.cc ./gdb/testsuite/gdb.cp/derivation.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/derivation.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/derivation.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/derivation.exp ./gdb/testsuite/gdb.cp/derivation.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/derivation.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/derivation.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/destrprint.exp ./gdb/testsuite/gdb.cp/destrprint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/destrprint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/destrprint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/disasm-func-name.cc ./gdb/testsuite/gdb.cp/disasm-func-name.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/disasm-func-name.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/disasm-func-name.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,48 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+class A
+{
+private:
+  int m_i;
+
+public:
+  A(int i);
+
+  int get_i () const
+  { return m_i; }
+
+  void set_i (int i)
+  { m_i = i; }
+};
+
+A::A(int i)
+  : m_i (i)
+{ /* Nothing.  */ }
+
+void process (A *obj, int num)
+{
+  obj->set_i (obj->get_i () + num);
+}
+
+int
+main (void)
+{
+  A a(42);
+  process (&a, 2);
+  return a.get_i ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/disasm-func-name.exp ./gdb/testsuite/gdb.cp/disasm-func-name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/disasm-func-name.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/disasm-func-name.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,50 @@
+# Copyright 2020-2021 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 file is part of the gdb testsuite
+
+# Test that the disassembler correctly demangles C++ function names in
+# it's header line.
+
+if {[skip_cplus_tests]} { continue }
+
+standard_testfile .cc
+
+if [get_compiler_info "c++"] {
+    return -1
+}
+
+if {[prepare_for_testing "failed to prepare" $testfile \
+	 $srcfile {debug c++}]} {
+    return -1
+}
+
+if ![runto_main] then {
+    perror "couldn't run to breakpoint"
+    continue
+}
+
+proc check_disassembly_header { request expected } {
+    gdb_test "disassemble ${request}" \
+	"Dump of assembler code for function ${expected}:\r\n.*"
+}
+
+gdb_test_no_output "set print asm-demangle on"
+
+check_disassembly_header "main" "main\\(\\)"
+check_disassembly_header "process" "process\\(A\\*, int\\)"
+check_disassembly_header "A::A" "A::A\\(int\\)"
+check_disassembly_header "A::get_i" "A::get_i\\(\\) const"
+check_disassembly_header "A::set_i" "A::set_i\\(int\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/dispcxx.cc ./gdb/testsuite/gdb.cp/dispcxx.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/dispcxx.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/dispcxx.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test for displays in C++.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/dispcxx.exp ./gdb/testsuite/gdb.cp/dispcxx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/dispcxx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/dispcxx.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ena-dis-br-range.cc ./gdb/testsuite/gdb.cp/ena-dis-br-range.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ena-dis-br-range.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ena-dis-br-range.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ena-dis-br-range.exp ./gdb/testsuite/gdb.cp/ena-dis-br-range.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ena-dis-br-range.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ena-dis-br-range.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/enum-class.cc ./gdb/testsuite/gdb.cp/enum-class.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/enum-class.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/enum-class.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/enum-class.exp ./gdb/testsuite/gdb.cp/enum-class.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/enum-class.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/enum-class.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/exception.cc ./gdb/testsuite/gdb.cp/exception.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/exception.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/exception.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1997-2020 Free Software Foundation, Inc.
+   Copyright 1997-2021 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
@@ -17,8 +17,6 @@
 
 // Test file for exception handling support.
 
-using namespace std;
-
 int foo (int i)
 {
   if (i < 32)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/exception.exp ./gdb/testsuite/gdb.cp/exception.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/exception.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/exception.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/except-multi-location.exp ./gdb/testsuite/gdb.cp/except-multi-location.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/except-multi-location.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/except-multi-location.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/except-multi-location-lib.cc ./gdb/testsuite/gdb.cp/except-multi-location-lib.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/except-multi-location-lib.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/except-multi-location-lib.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/except-multi-location-main.cc ./gdb/testsuite/gdb.cp/except-multi-location-main.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/except-multi-location-main.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/except-multi-location-main.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/exceptprint.cc ./gdb/testsuite/gdb.cp/exceptprint.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/exceptprint.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/exceptprint.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/exceptprint.exp ./gdb/testsuite/gdb.cp/exceptprint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/exceptprint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/exceptprint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -76,16 +76,20 @@ if {![runto_main]} {
     return -1
 }
 
-gdb_test "catch catch int if \$_exception == 23" \
-    "Catchpoint \[0-9\]+ \\(catch\\)" \
-    "catch catch"
-gdb_test "catch throw int if \$_exception == 23" \
-    "Catchpoint \[0-9\]+ \\(throw\\)" \
-    "catch throw"
-gdb_test "catch rethrow int if \$_exception == 23" \
-    "Catchpoint \[0-9\]+ \\(rethrow\\)" \
-    "catch rethrow"
+with_test_prefix "2nd run" {
+    gdb_test "catch catch int if \$_exception == 23" \
+	"Catchpoint \[0-9\]+ \\(catch\\)" \
+	"catch catch"
+    gdb_test "catch throw int if \$_exception == 23" \
+	"Catchpoint \[0-9\]+ \\(throw\\)" \
+	"catch throw"
+    gdb_test "catch rethrow int if \$_exception == 23" \
+	"Catchpoint \[0-9\]+ \\(rethrow\\)" \
+	"catch rethrow"
+}
 
 # This tests both the case where the regular expression does not
 # match, and the case where it does.
-do_exceptprint_tests int 23
+with_test_prefix "2nd run" {
+    do_exceptprint_tests int 23
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/expand-psymtabs-cxx.cc ./gdb/testsuite/gdb.cp/expand-psymtabs-cxx.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/expand-psymtabs-cxx.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/expand-psymtabs-cxx.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/expand-psymtabs-cxx.exp ./gdb/testsuite/gdb.cp/expand-psymtabs-cxx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/expand-psymtabs-cxx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/expand-psymtabs-cxx.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/expand-sals.cc ./gdb/testsuite/gdb.cp/expand-sals.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/expand-sals.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/expand-sals.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/expand-sals.exp ./gdb/testsuite/gdb.cp/expand-sals.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/expand-sals.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/expand-sals.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/extern-c.cc ./gdb/testsuite/gdb.cp/extern-c.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/extern-c.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/extern-c.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/extern-c.exp ./gdb/testsuite/gdb.cp/extern-c.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/extern-c.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/extern-c.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/filename.cc ./gdb/testsuite/gdb.cp/filename.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/filename.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/filename.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/filename.exp ./gdb/testsuite/gdb.cp/filename.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/filename.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/filename.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/formatted-ref.cc ./gdb/testsuite/gdb.cp/formatted-ref.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/formatted-ref.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/formatted-ref.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2007-2020 Free Software Foundation, Inc.
+/* Copyright 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/formatted-ref.exp ./gdb/testsuite/gdb.cp/formatted-ref.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/formatted-ref.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/formatted-ref.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/fpointer.exp ./gdb/testsuite/gdb.cp/fpointer.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/fpointer.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/fpointer.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb1355.exp ./gdb/testsuite/gdb.cp/gdb1355.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb1355.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/gdb1355.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2384-base.cc ./gdb/testsuite/gdb.cp/gdb2384-base.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2384-base.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/gdb2384-base.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2384-base.h ./gdb/testsuite/gdb.cp/gdb2384-base.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2384-base.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/gdb2384-base.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2384.cc ./gdb/testsuite/gdb.cp/gdb2384.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2384.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/gdb2384.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2384.exp ./gdb/testsuite/gdb.cp/gdb2384.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2384.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/gdb2384.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2495.cc ./gdb/testsuite/gdb.cp/gdb2495.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2495.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/gdb2495.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2495.exp ./gdb/testsuite/gdb.cp/gdb2495.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/gdb2495.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/gdb2495.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/hang.exp ./gdb/testsuite/gdb.cp/hang.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/hang.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/hang.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2002-2020 Free Software Foundation, Inc.
+#   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/impl-this.cc ./gdb/testsuite/gdb.cp/impl-this.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/impl-this.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/impl-this.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/impl-this.exp ./gdb/testsuite/gdb.cp/impl-this.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/impl-this.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/impl-this.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/includefile ./gdb/testsuite/gdb.cp/includefile
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/includefile	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/includefile	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-dlopen.cc ./gdb/testsuite/gdb.cp/infcall-dlopen.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-dlopen.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-dlopen.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-dlopen.exp ./gdb/testsuite/gdb.cp/infcall-dlopen.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-dlopen.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-dlopen.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-dlopen-lib.cc ./gdb/testsuite/gdb.cp/infcall-dlopen-lib.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-dlopen-lib.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-dlopen-lib.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-c++-d0.exp ./gdb/testsuite/gdb.cp/infcall-nodebug-c++-d0.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-c++-d0.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-nodebug-c++-d0.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,25 @@
+# This testcase is part of GDB, the GNU debugger.
+# Copyright 2018-2021 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/>.
+
+# Only test C++ if we are able.  Always use C.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang {c++}
+
+set debug nodebug
+
+source $srcdir/$subdir/infcall-nodebug.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-c-d0.exp ./gdb/testsuite/gdb.cp/infcall-nodebug-c-d0.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-c-d0.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-nodebug-c-d0.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,21 @@
+# This testcase is part of GDB, the GNU debugger.
+# Copyright 2018-2021 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/>.
+
+set lang {c}
+
+set debug nodebug
+
+source $srcdir/$subdir/infcall-nodebug.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-c++-d1.exp ./gdb/testsuite/gdb.cp/infcall-nodebug-c++-d1.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-c++-d1.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-nodebug-c++-d1.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,25 @@
+# This testcase is part of GDB, the GNU debugger.
+# Copyright 2018-2021 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/>.
+
+# Only test C++ if we are able.  Always use C.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang {c++}
+
+set debug debug
+
+source $srcdir/$subdir/infcall-nodebug.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-c-d1.exp ./gdb/testsuite/gdb.cp/infcall-nodebug-c-d1.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-c-d1.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-nodebug-c-d1.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,21 @@
+# This testcase is part of GDB, the GNU debugger.
+# Copyright 2018-2021 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/>.
+
+set lang {c}
+
+set debug debug
+
+source $srcdir/$subdir/infcall-nodebug.exp.tcl
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug.exp ./gdb/testsuite/gdb.cp/infcall-nodebug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-nodebug.exp	1970-01-01 00:00:00.000000000 +0000
@@ -1,119 +0,0 @@
-# This testcase is part of GDB, the GNU debugger.
-# Copyright 2018-2020 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 function calls on C++ functions that have no debug information.
-# See gdb/22736.  Put the called function in a different object to ensure
-# the rest of the test can be complied with debug information.  Whilst we
-# are at it, also test functions with debug information and C functions too.
-
-if [target_info exists gdb,cannot_call_functions] {
-    unsupported "this target can not call functions"
-    continue
-}
-
-# Only test C++ if we are able.  Always use C.
-if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
-    set lang {c}
-} else {
-    set lang {c c++}
-}
-
-set main_basename infcall-nodebug-main
-set lib_basename infcall-nodebug-lib
-standard_testfile ${main_basename}.c ${lib_basename}.c
-
-set mainsrc "${srcdir}/${subdir}/${srcfile}"
-set libsrc "${srcdir}/${subdir}/${srcfile2}"
-
-# Build both source files to objects using language LANG. Use SYMBOLS to build
-# with either debug symbols or without - but always build the main file with
-# debug.  Then make function calls across the files.
-
-proc build_and_run_test { lang symbols } {
-
-    global main_basename lib_basename mainsrc libsrc binfile testfile
-    global gdb_prompt
-
-    if { $symbols == "debug" } {
-	set debug_flags "debug"
-    } else {
-	set debug_flags ""
-    }
-
-    # Setup directory.
-
-    set dir "$lang-$symbols"
-    remote_exec build "rm -rf [standard_output_file ${dir}]"
-    remote_exec build "mkdir -p [standard_output_file ${dir}]"
-
-    # Compile both files to objects, then link together.
-
-    set main_flags "$lang debug"
-    set lib_flags "$lang $debug_flags"
-    set main_o [standard_output_file ${dir}/${main_basename}.o]
-    set lib_o [standard_output_file ${dir}/${lib_basename}.o]
-    set binfile [standard_output_file ${dir}/${testfile}]
-
-    if { [gdb_compile $mainsrc $main_o object ${main_flags}] != "" } {
-	untested "failed to compile main file to object"
-	return -1
-    }
-
-    if { [gdb_compile $libsrc $lib_o object ${lib_flags}] != "" } {
-	untested "failed to compile secondary file to object"
-	return -1
-    }
-
-    if { [gdb_compile "$main_o $lib_o" ${binfile} executable ""] != "" } {
-	untested "failed to compile"
-	return -1
-    }
-
-    # Startup and run to main.
-
-    clean_restart $binfile
-
-    if ![runto_main] then {
-	fail "can't run to main"
-	return
-    }
-
-    # Function call with cast.
-
-    gdb_test "p (int)foo()" " = 1"
-
-    # Function call without cast.  Will error if there are no debug symbols.
-
-    set test "p foo()"
-    gdb_test_multiple $test $test {
-	-re " = 1\r\n$gdb_prompt " {
-	    gdb_assert [ string equal $symbols "debug" ]
-	    pass $test
-	}
-	-re "has unknown return type; cast the call to its declared return type\r\n$gdb_prompt " {
-	    gdb_assert ![ string equal $symbols "debug" ]
-	    pass $test
-	}
-    }
-
-}
-
-foreach_with_prefix l $lang {
-    foreach_with_prefix s {debug nodebug} {
-	build_and_run_test $l $s
-    }
-}
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug.exp.tcl ./gdb/testsuite/gdb.cp/infcall-nodebug.exp.tcl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug.exp.tcl	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-nodebug.exp.tcl	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,101 @@
+# This testcase is part of GDB, the GNU debugger.
+# Copyright 2018-2021 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 function calls on C++ functions that have no debug information.
+# See gdb/22736.  Put the called function in a different object to ensure
+# the rest of the test can be complied with debug information.  Whilst we
+# are at it, also test functions with debug information and C functions too.
+
+if [target_info exists gdb,cannot_call_functions] {
+    unsupported "this target can not call functions"
+    continue
+}
+
+set main_basename infcall-nodebug-main
+set lib_basename infcall-nodebug-lib
+standard_testfile ${main_basename}.c ${lib_basename}.c
+
+set mainsrc "${srcdir}/${subdir}/${srcfile}"
+set libsrc "${srcdir}/${subdir}/${srcfile2}"
+
+# Build both source files to objects using language LANG. Use SYMBOLS to build
+# with either debug symbols or without - but always build the main file with
+# debug.  Then make function calls across the files.
+
+proc build_and_run_test { lang symbols } {
+
+    global main_basename lib_basename mainsrc libsrc binfile testfile
+    global gdb_prompt
+
+    if { $symbols == "debug" } {
+	set debug_flags "debug"
+    } else {
+	set debug_flags ""
+    }
+
+    # Compile both files to objects, then link together.
+
+    set main_flags "$lang debug"
+    set lib_flags "$lang $debug_flags"
+    set main_o [standard_output_file ${main_basename}.o]
+    set lib_o [standard_output_file ${lib_basename}.o]
+    set binfile [standard_output_file ${testfile}]
+
+    if { [gdb_compile $mainsrc $main_o object ${main_flags}] != "" } {
+	untested "failed to compile main file to object"
+	return -1
+    }
+
+    if { [gdb_compile $libsrc $lib_o object ${lib_flags}] != "" } {
+	untested "failed to compile secondary file to object"
+	return -1
+    }
+
+    if { [gdb_compile "$main_o $lib_o" ${binfile} executable ""] != "" } {
+	untested "failed to compile"
+	return -1
+    }
+
+    # Startup and run to main.
+
+    clean_restart $binfile
+
+    if ![runto_main] then {
+	fail "can't run to main"
+	return
+    }
+
+    # Function call with cast.
+
+    gdb_test "p (int)foo()" " = 1"
+
+    # Function call without cast.  Will error if there are no debug symbols.
+
+    set test "p foo()"
+    gdb_test_multiple $test $test {
+	-re " = 1\r\n$gdb_prompt " {
+	    gdb_assert [ string equal $symbols "debug" ]
+	    pass $test
+	}
+	-re "has unknown return type; cast the call to its declared return type\r\n$gdb_prompt " {
+	    gdb_assert ![ string equal $symbols "debug" ]
+	    pass $test
+	}
+    }
+
+}
+
+build_and_run_test $lang $debug
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-lib.c ./gdb/testsuite/gdb.cp/infcall-nodebug-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-nodebug-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-main.c ./gdb/testsuite/gdb.cp/infcall-nodebug-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/infcall-nodebug-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/infcall-nodebug-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/inherit.exp ./gdb/testsuite/gdb.cp/inherit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/inherit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/inherit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
@@ -26,7 +26,8 @@ load_lib "cp-support.exp"
 
 standard_testfile misc.cc
 
-if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+	 {debug c++ additional_flags=-Wno-deprecated-register}]} {
     return -1
 }
 
@@ -693,9 +694,16 @@ proc do_tests { } {
 	return
     }
 
-    test_print_si_members
+    with_test_prefix "single inheritance" {
+	test_print_si_members
+    }
+
     test_print_si_classes
-    test_print_mi_members
+
+    with_test_prefix "multiple inheritance" {
+	test_print_mi_members
+    }
+
     test_print_mi_member_types
     test_print_mi_classes
     test_print_anon_union
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/iostream.cc ./gdb/testsuite/gdb.cp/iostream.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/iostream.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/iostream.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code to go along with tests in rtti.exp.
    
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/iostream.exp ./gdb/testsuite/gdb.cp/iostream.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/iostream.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/iostream.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/koenig.exp ./gdb/testsuite/gdb.cp/koenig.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/koenig.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/koenig.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,7 +15,8 @@
 
 standard_testfile .cc
 
-if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug c++}] } {
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
+      {debug c++ additional_flags=-Wno-unused-comparison}] } {
      return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/local.exp ./gdb/testsuite/gdb.cp/local.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/local.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/local.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/local-static.c ./gdb/testsuite/gdb.cp/local-static.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/local-static.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/local-static.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/local-static.exp ./gdb/testsuite/gdb.cp/local-static.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/local-static.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/local-static.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/maint.exp ./gdb/testsuite/gdb.cp/maint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/maint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/maint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
@@ -32,9 +32,9 @@ proc test_help {} {
         "C\\+\\+ maintenance commands.\r\n\r\n"
     }
 
-    set multiple_help_body "List of maintenance cplus subcommands:\r\n\r\nmaintenance cplus first_component -- ${first_component_help}\r\nmaintenance cplus namespace -- ${namespace_help}\r\n\r\nType \"help maintenance cplus\" followed by maintenance cplus subcommand name for full documentation.\r\nCommand name abbreviations are allowed if unambiguous."
+    set multiple_help_body "List of maintenance cplus subcommands:.*Command name abbreviations are allowed if unambiguous."
 
-    gdb_test "maint cp" "\"maintenance cplus\" must be followed by the name of a command.\r\n.*"
+    gdb_test "maint cp" $multiple_help_body
 
     gdb_test "help maint cp first_component" "${first_component_help}."
     gdb_test "help maint cp namespace" "${namespace_help}."
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/many-args.cc ./gdb/testsuite/gdb.cp/many-args.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/many-args.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/many-args.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/many-args.exp ./gdb/testsuite/gdb.cp/many-args.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/many-args.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/many-args.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-ctor.exp ./gdb/testsuite/gdb.cp/mb-ctor.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-ctor.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/mb-ctor.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-inline1.cc ./gdb/testsuite/gdb.cp/mb-inline1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-inline1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/mb-inline1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -2,7 +2,7 @@
 
    This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-inline2.cc ./gdb/testsuite/gdb.cp/mb-inline2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-inline2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/mb-inline2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-inline.exp ./gdb/testsuite/gdb.cp/mb-inline.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-inline.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/mb-inline.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-inline.h ./gdb/testsuite/gdb.cp/mb-inline.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-inline.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/mb-inline.h	2021-05-21 01:57:25.000000000 +0000
@@ -4,7 +4,7 @@
 
    This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-templates.exp ./gdb/testsuite/gdb.cp/mb-templates.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/mb-templates.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/mb-templates.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/m-data.exp ./gdb/testsuite/gdb.cp/m-data.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/m-data.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/m-data.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/member-name.cc ./gdb/testsuite/gdb.cp/member-name.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/member-name.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/member-name.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/member-name.exp ./gdb/testsuite/gdb.cp/member-name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/member-name.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/member-name.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/member-ptr.cc ./gdb/testsuite/gdb.cp/member-ptr.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/member-ptr.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/member-ptr.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1998-2020 Free Software Foundation, Inc.
+   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/member-ptr.exp ./gdb/testsuite/gdb.cp/member-ptr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/member-ptr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/member-ptr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 Free Software Foundation, Inc.
 
 # This file is part of the gdb testsuite
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/method2.exp ./gdb/testsuite/gdb.cp/method2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/method2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/method2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/method.exp ./gdb/testsuite/gdb.cp/method.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/method.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/method.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/meth-typedefs.cc ./gdb/testsuite/gdb.cp/meth-typedefs.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/meth-typedefs.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/meth-typedefs.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/meth-typedefs.exp ./gdb/testsuite/gdb.cp/meth-typedefs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/meth-typedefs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/meth-typedefs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 Free Software Foundation, Inc.
 #
 # Contributed by Red Hat, originally written by Keith Seitz.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/minsym-fallback.cc ./gdb/testsuite/gdb.cp/minsym-fallback.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/minsym-fallback.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/minsym-fallback.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/minsym-fallback.exp ./gdb/testsuite/gdb.cp/minsym-fallback.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/minsym-fallback.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/minsym-fallback.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/minsym-fallback.h ./gdb/testsuite/gdb.cp/minsym-fallback.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/minsym-fallback.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/minsym-fallback.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/minsym-fallback-main.cc ./gdb/testsuite/gdb.cp/minsym-fallback-main.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/minsym-fallback-main.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/minsym-fallback-main.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/misc.cc ./gdb/testsuite/gdb.cp/misc.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/misc.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/misc.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1993-2020 Free Software Foundation, Inc.
+   Copyright 1993-2021 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
@@ -24,6 +24,9 @@ bool            v_bool_array[2];
 typedef struct fleep fleep;
 struct fleep { int a; } s;
 
+int number;
+int &number_ref = number;
+
 // ====================== simple class structures  =======================
 
 struct default_public_struct {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/misc.exp ./gdb/testsuite/gdb.cp/misc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/misc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/misc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
@@ -19,7 +19,8 @@ if { [skip_cplus_tests] } { continue }
 
 standard_testfile .cc
 
-if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+	 {debug c++ additional_flags=-Wno-deprecated-register}]} {
     return -1
 }
 
@@ -110,3 +111,11 @@ gdb_test "print (int)false" "\\$\[0-9\]*
 
 gdb_test "print 'misc.cc'::v_bool" " = true" \
     "expression using block qualifier"
+
+# pointer arithmetic
+gdb_test "print *(v_bool_array + number_ref)" "\\$\[0-9\]* = false" \
+    "pointer addition with integer reference"
+gdb_test "print *(number_ref + v_bool_array)" "\\$\[0-9\]* = false" \
+    "pointer addition with integer reference"
+gdb_test "print *(v_bool_array - number_ref)" "\\$\[0-9\]* = false" \
+    "pointer subtraction with integer reference"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/m-static.exp ./gdb/testsuite/gdb.cp/m-static.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/m-static.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/m-static.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namelessclass.cc ./gdb/testsuite/gdb.cp/namelessclass.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namelessclass.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/namelessclass.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namelessclass.exp ./gdb/testsuite/gdb.cp/namelessclass.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namelessclass.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/namelessclass.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namelessclass.S ./gdb/testsuite/gdb.cp/namelessclass.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namelessclass.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/namelessclass.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namespace1.cc ./gdb/testsuite/gdb.cp/namespace1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namespace1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/namespace1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2003-2020 Free Software Foundation, Inc.
+/* Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namespace.cc ./gdb/testsuite/gdb.cp/namespace.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namespace.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/namespace.cc	2021-05-21 01:57:25.000000000 +0000
@@ -150,22 +150,22 @@ namespace C
       // plan to have GDB try to print out, just to make sure that the
       // compiler and I agree which ones should be legal!  It's easy
       // to screw up when testing the boundaries of namespace stuff.
-      c;
+      (void) c;
       //cc;
-      C::cc;
-      cd;
+      (void) C::cc;
+      (void) cd;
       //C::D::cd;
-      E::cde;
-      shadow;
+      (void) E::cde;
+      (void) shadow;
       //E::ce;
-      cX;
-      F::cXf;
-      F::cXfX;
-      X;
-      G::Xg;
+      (void) cX;
+      (void) F::cXf;
+      (void) F::cXfX;
+      (void) X;
+      (void) G::Xg;
       //cXOtherFile;
       //XOtherFile;
-      G::XgX;
+      (void) G::XgX;
 
       return;
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namespace-enum.exp ./gdb/testsuite/gdb.cp/namespace-enum.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namespace-enum.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/namespace-enum.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namespace.exp ./gdb/testsuite/gdb.cp/namespace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namespace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/namespace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namespace-nested-import.exp ./gdb/testsuite/gdb.cp/namespace-nested-import.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/namespace-nested-import.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/namespace-nested-import.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nested-types.cc ./gdb/testsuite/gdb.cp/nested-types.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nested-types.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nested-types.cc	2021-05-21 01:57:25.000000000 +0000
@@ -3,7 +3,7 @@
 
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nested-types.exp ./gdb/testsuite/gdb.cp/nested-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nested-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nested-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nextoverthrow.cc ./gdb/testsuite/gdb.cp/nextoverthrow.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nextoverthrow.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nextoverthrow.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nextoverthrow.exp ./gdb/testsuite/gdb.cp/nextoverthrow.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nextoverthrow.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nextoverthrow.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/no-dmgl-verbose.cc ./gdb/testsuite/gdb.cp/no-dmgl-verbose.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/no-dmgl-verbose.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/no-dmgl-verbose.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test file is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/no-dmgl-verbose.exp ./gdb/testsuite/gdb.cp/no-dmgl-verbose.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/no-dmgl-verbose.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/no-dmgl-verbose.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/no-libstdcxx-probe.exp ./gdb/testsuite/gdb.cp/no-libstdcxx-probe.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/no-libstdcxx-probe.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/no-libstdcxx-probe.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/non-trivial-retval.cc ./gdb/testsuite/gdb.cp/non-trivial-retval.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/non-trivial-retval.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/non-trivial-retval.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/non-trivial-retval.exp ./gdb/testsuite/gdb.cp/non-trivial-retval.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/non-trivial-retval.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/non-trivial-retval.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/noparam.cc ./gdb/testsuite/gdb.cp/noparam.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/noparam.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/noparam.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/noparam.exp ./gdb/testsuite/gdb.cp/noparam.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/noparam.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/noparam.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsalias.cc ./gdb/testsuite/gdb.cp/nsalias.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsalias.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsalias.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsalias.exp ./gdb/testsuite/gdb.cp/nsalias.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsalias.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsalias.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsdecl.exp ./gdb/testsuite/gdb.cp/nsdecl.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsdecl.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsdecl.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsimport.cc ./gdb/testsuite/gdb.cp/nsimport.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsimport.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsimport.cc	2021-05-21 01:57:25.000000000 +0000
@@ -13,8 +13,8 @@ namespace{
 
 int main()
 {
-  x;
-  xx;
-  xxx;
+  (void) x;
+  (void) xx;
+  (void) xxx;
   return 0;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsimport.exp ./gdb/testsuite/gdb.cp/nsimport.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsimport.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsimport.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsnested.cc ./gdb/testsuite/gdb.cp/nsnested.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsnested.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsnested.cc	2021-05-21 01:57:25.000000000 +0000
@@ -15,7 +15,7 @@ namespace C
     int
     second()
     {
-      ab;
+      (void) ab;
       return 0;
     }
   }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsnested.exp ./gdb/testsuite/gdb.cp/nsnested.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsnested.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsnested.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsnoimports.cc ./gdb/testsuite/gdb.cp/nsnoimports.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsnoimports.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsnoimports.cc	2021-05-21 01:57:25.000000000 +0000
@@ -18,9 +18,9 @@ namespace A
     }
 
     int first(){
-      _a;
-      ab;
-      C::abc;
+      (void) _a;
+      (void) ab;
+      (void) C::abc;
       return C::second();
     }
   }
@@ -30,8 +30,8 @@ namespace A
 int
 main()
 {
-  A::_a;
-  A::B::ab;
-  A::B::C::abc;
+  (void) A::_a;
+  (void) A::B::ab;
+  (void) A::B::C::abc;
   return A::B::first();
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsnoimports.exp ./gdb/testsuite/gdb.cp/nsnoimports.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsnoimports.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsnoimports.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -25,37 +25,43 @@ if ![runto_main] then {
     continue
 }
 
-gdb_test "print A::_a" "= 11"
-gdb_test "print A::B::ab" "= 22"
-gdb_test "print A::B::C::abc" "= 33"
-
-gdb_test "print _a" "No symbol .* in current context."
-gdb_test "print ab" "No symbol .* in current context."
-gdb_test "print abc" "No symbol .* in current context."
+with_test_prefix "main scope" {
+    gdb_test "print A::_a" "= 11"
+    gdb_test "print A::B::ab" "= 22"
+    gdb_test "print A::B::C::abc" "= 33"
+
+    gdb_test "print _a" "No symbol .* in current context."
+    gdb_test "print ab" "No symbol .* in current context."
+    gdb_test "print abc" "No symbol .* in current context."
+}
 
 ############################################
 gdb_breakpoint A::B::first
 gdb_continue_to_breakpoint "A::B::first"
 
-gdb_test "print A::_a" "= 11"
-gdb_test "print A::B::ab" "= 22"
-gdb_test "print A::B::C::abc" "= 33"
-
-gdb_test "print _a" "= 11"
-gdb_test "print ab" "= 22"
-gdb_test "print C::abc" "= 33"
+with_test_prefix "A::B::first scope" {
+    gdb_test "print A::_a" "= 11"
+    gdb_test "print A::B::ab" "= 22"
+    gdb_test "print A::B::C::abc" "= 33"
+
+    gdb_test "print _a" "= 11"
+    gdb_test "print ab" "= 22"
+    gdb_test "print C::abc" "= 33"
 
-gdb_test "print abc" "No symbol .* in current context."
+    gdb_test "print abc" "No symbol .* in current context."
+}
 
 ############################################
 gdb_breakpoint A::B::C::second
 gdb_continue_to_breakpoint "A::B::C::second"
 
-gdb_test "print A::_a" "= 11"
-gdb_test "print A::B::ab" "= 22"
-gdb_test "print A::B::C::abc" "= 33"
-
-gdb_test "print _a" "= 11"
-gdb_test "print ab" "= 22"
-gdb_test "print abc" "= 33"
+with_test_prefix "A::B::C::second scope" {
+    gdb_test "print A::_a" "= 11"
+    gdb_test "print A::B::ab" "= 22"
+    gdb_test "print A::B::C::abc" "= 33"
+
+    gdb_test "print _a" "= 11"
+    gdb_test "print ab" "= 22"
+    gdb_test "print abc" "= 33"
+}
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsrecurs.exp ./gdb/testsuite/gdb.cp/nsrecurs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsrecurs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsrecurs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsstress.exp ./gdb/testsuite/gdb.cp/nsstress.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsstress.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsstress.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsusing.cc ./gdb/testsuite/gdb.cp/nsusing.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsusing.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsusing.cc	2021-05-21 01:57:25.000000000 +0000
@@ -35,7 +35,7 @@ namespace L
   using namespace J;
   int marker8 ()
   {
-    jx;
+    (void) jx;
     return K::marker9 ();
   }
 }
@@ -53,7 +53,7 @@ namespace I
   int marker7 ()
   {
     using namespace G::H;
-    ghx;
+    (void) ghx;
     return L::marker8 ();
   }
 }
@@ -69,7 +69,7 @@ namespace E
 using namespace E::F;
 int marker6 ()
 {
-  efx;
+  (void) efx;
   return I::marker7 ();
 }
 
@@ -92,7 +92,7 @@ namespace D
 using namespace C;
 int marker5 ()
 {
-  cc;
+  (void) cc;
   return marker6 ();
 }
 
@@ -110,7 +110,7 @@ int marker3 ()
 int marker2 ()
 {
   namespace B = A;
-  B::_a;
+  (void) B::_a;
   return marker3 ();
 }
 
@@ -134,6 +134,6 @@ int marker1 ()
 int main ()
 {
   using namespace A;
-  _a;
+  (void) _a;
   return marker1 ();
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsusing.exp ./gdb/testsuite/gdb.cp/nsusing.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/nsusing.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/nsusing.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/operator.exp ./gdb/testsuite/gdb.cp/operator.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/operator.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/operator.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -15,7 +15,8 @@
 
 standard_testfile .cc
 
-if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug c++}] } {
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
+	  {debug c++ additional_flags=-Wno-unused-comparison}] } {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/oranking.exp ./gdb/testsuite/gdb.cp/oranking.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/oranking.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/oranking.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/overload-const.cc ./gdb/testsuite/gdb.cp/overload-const.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/overload-const.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/overload-const.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test case is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/overload-const.exp ./gdb/testsuite/gdb.cp/overload-const.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/overload-const.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/overload-const.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/overload.exp ./gdb/testsuite/gdb.cp/overload.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/overload.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/overload.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovldbreak.exp ./gdb/testsuite/gdb.cp/ovldbreak.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovldbreak.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ovldbreak.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1998-2020 Free Software Foundation, Inc.
+# Copyright (C) 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch1.cc ./gdb/testsuite/gdb.cp/ovsrch1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ovsrch1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch2.cc ./gdb/testsuite/gdb.cp/ovsrch2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ovsrch2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch3.cc ./gdb/testsuite/gdb.cp/ovsrch3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ovsrch3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch4.cc ./gdb/testsuite/gdb.cp/ovsrch4.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch4.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ovsrch4.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch.exp ./gdb/testsuite/gdb.cp/ovsrch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ovsrch.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 Free Software Foundation, Inc.
 #
 # Contributed by Red Hat, originally written by Keith Seitz.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch.h ./gdb/testsuite/gdb.cp/ovsrch.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ovsrch.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ovsrch.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/paren-type.cc ./gdb/testsuite/gdb.cp/paren-type.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/paren-type.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/paren-type.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/paren-type.exp ./gdb/testsuite/gdb.cp/paren-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/paren-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/paren-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/parse-lang.cc ./gdb/testsuite/gdb.cp/parse-lang.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/parse-lang.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/parse-lang.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/parse-lang.exp ./gdb/testsuite/gdb.cp/parse-lang.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/parse-lang.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/parse-lang.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pass-by-ref-2.cc ./gdb/testsuite/gdb.cp/pass-by-ref-2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pass-by-ref-2.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pass-by-ref-2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,295 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+class ByVal {
+public:
+  ByVal (void);
+
+  int x;
+};
+
+ByVal::ByVal (void)
+{
+  x = 2;
+}
+
+class ByRef {
+public:
+  ByRef (void);
+
+  ByRef (const ByRef &rhs);
+
+  int x;
+};
+
+ByRef::ByRef (void)
+{
+  x = 2;
+}
+
+ByRef::ByRef (const ByRef &rhs)
+{
+  x = 3; /* ByRef-cctor */
+}
+
+class ArrayContainerByVal {
+public:
+  ByVal items[2];
+};
+
+int
+cbvArrayContainerByVal (ArrayContainerByVal arg)
+{
+  arg.items[0].x += 4;  // intentionally modify
+  return arg.items[0].x;
+}
+
+class ArrayContainerByRef {
+public:
+  ByRef items[2];
+};
+
+int
+cbvArrayContainerByRef (ArrayContainerByRef arg)
+{
+  arg.items[0].x += 4;  // intentionally modify
+  return arg.items[0].x;
+}
+
+class DynamicBase {
+public:
+  DynamicBase (void);
+
+  virtual int get (void);
+
+  int x;
+};
+
+DynamicBase::DynamicBase (void)
+{
+  x = 2;
+}
+
+int
+DynamicBase::get (void)
+{
+  return 42;
+}
+
+class Dynamic : public DynamicBase {
+public:
+  virtual int get (void);
+};
+
+int
+Dynamic::get (void)
+{
+  return 9999;
+}
+
+int
+cbvDynamic (DynamicBase arg)
+{
+  arg.x += 4;  // intentionally modify
+  return arg.x + arg.get ();
+}
+
+class Inlined {
+public:
+  Inlined (void);
+
+  __attribute__((always_inline))
+  Inlined (const Inlined &rhs)
+  {
+    x = 3;
+  }
+
+  int x;
+};
+
+Inlined::Inlined (void)
+{
+  x = 2;
+}
+
+int
+cbvInlined (Inlined arg)
+{
+  arg.x += 4;  // intentionally modify
+  return arg.x;
+}
+
+class DtorDel {
+public:
+  DtorDel (void);
+
+  ~DtorDel (void) = delete;
+
+  int x;
+};
+
+DtorDel::DtorDel (void)
+{
+  x = 2;
+}
+
+int
+cbvDtorDel (DtorDel arg)
+{
+  // Calling this method should be rejected
+  return arg.x;
+}
+
+class FourCCtor {
+public:
+  FourCCtor (void);
+
+  FourCCtor (FourCCtor &rhs);
+  FourCCtor (const FourCCtor &rhs);
+  FourCCtor (volatile FourCCtor &rhs);
+  FourCCtor (const volatile FourCCtor &rhs);
+
+  int x;
+};
+
+FourCCtor::FourCCtor (void)
+{
+  x = 2;
+}
+
+FourCCtor::FourCCtor (FourCCtor &rhs)
+{
+  x = 3;
+}
+
+FourCCtor::FourCCtor (const FourCCtor &rhs)
+{
+  x = 4;
+}
+
+FourCCtor::FourCCtor (volatile FourCCtor &rhs)
+{
+  x = 5;
+}
+
+FourCCtor::FourCCtor (const volatile FourCCtor &rhs)
+{
+  x = 6;
+}
+
+int
+cbvFourCCtor (FourCCtor arg)
+{
+  arg.x += 10;  // intentionally modify
+  return arg.x;
+}
+
+class TwoMCtor {
+public:
+  TwoMCtor (void);
+
+  /* Even though one move ctor is defaulted, the other
+     is explicit.  */
+  TwoMCtor (const TwoMCtor &&rhs);
+  TwoMCtor (TwoMCtor &&rhs) = default;
+
+  int x;
+};
+
+TwoMCtor::TwoMCtor (void)
+{
+  x = 2;
+}
+
+TwoMCtor::TwoMCtor (const TwoMCtor &&rhs)
+{
+  x = 3;
+}
+
+int
+cbvTwoMCtor (TwoMCtor arg)
+{
+  arg.x += 10;  // intentionally modify
+  return arg.x;
+}
+
+class TwoMCtorAndCCtor {
+public:
+  TwoMCtorAndCCtor (void);
+
+  TwoMCtorAndCCtor (const TwoMCtorAndCCtor &rhs) = default;
+
+  /* Even though one move ctor is defaulted, the other
+     is explicit.  This makes the type pass-by-ref.  */
+  TwoMCtorAndCCtor (const TwoMCtorAndCCtor &&rhs);
+  TwoMCtorAndCCtor (TwoMCtorAndCCtor &&rhs) = default;
+
+  int x;
+};
+
+TwoMCtorAndCCtor::TwoMCtorAndCCtor (void)
+{
+  x = 2;
+}
+
+TwoMCtorAndCCtor::TwoMCtorAndCCtor (const TwoMCtorAndCCtor &&rhs)
+{
+  x = 4;
+}
+
+int
+cbvTwoMCtorAndCCtor (TwoMCtorAndCCtor arg)
+{
+  arg.x += 10;  // intentionally modify
+  return arg.x;
+}
+
+ArrayContainerByVal arrayContainerByVal;
+ArrayContainerByRef arrayContainerByRef;
+Dynamic dynamic;
+Inlined inlined;
+// Cannot stack-allocate DtorDel
+DtorDel *dtorDel;
+FourCCtor fourCctor_c0v0;
+const FourCCtor fourCctor_c1v0;
+volatile FourCCtor fourCctor_c0v1;
+const volatile FourCCtor fourCctor_c1v1;
+TwoMCtor twoMctor;
+TwoMCtorAndCCtor twoMctorAndCctor;
+
+int
+main (void)
+{
+  int v;
+  dtorDel = new DtorDel;
+  /* Explicitly call the cbv function to make sure the compiler
+     will not omit any code in the binary.  */
+  v = cbvArrayContainerByVal (arrayContainerByVal);
+  v = cbvArrayContainerByRef (arrayContainerByRef);
+  v = cbvDynamic (dynamic);
+  v = cbvInlined (inlined);
+  v = cbvFourCCtor (fourCctor_c0v0);
+  v = cbvFourCCtor (fourCctor_c1v0);
+  v = cbvFourCCtor (fourCctor_c0v1);
+  v = cbvFourCCtor (fourCctor_c1v1);
+  /* v = cbvTwoMCtor (twoMctor); */ // This is illegal, cctor is deleted
+  v = cbvTwoMCtorAndCCtor (twoMctorAndCctor);
+
+  /* stop here */
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pass-by-ref-2.exp ./gdb/testsuite/gdb.cp/pass-by-ref-2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pass-by-ref-2.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pass-by-ref-2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,120 @@
+# Copyright 2019-2021 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/>.
+
+# Check that GDB can call C++ functions whose parameters have
+# object type, and are either passed by value or implicitly by reference.
+#
+# This is a companion test to pass-by-ref.exp.  In this test, the input
+# is manually-written.  In pass-by-ref.exp, the test input is generated.
+#
+# We include tests for classes that
+# - contain arrays as fields,
+# - are dynamic (i.e. have virtual methods)
+# - have inlined copy ctor
+# - have deleted destructor
+
+if {[skip_cplus_tests]} {
+    untested "c++ test skipped"
+    continue
+}
+
+standard_testfile .cc
+
+set options {debug c++ additional_flags=-std=c++11}
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile $options]} {
+    return -1
+}
+
+if {![runto_main]} {
+    untested "failed to run to main"
+    return -1
+}
+
+# GCC version <= 6 and Clang do not emit DW_AT_defaulted and DW_AT_deleted.
+set is_gcc_6_or_older [test_compiler_info {gcc-[0-6]-*}]
+set is_clang [test_compiler_info {clang-*}]
+
+set bp_location [gdb_get_line_number "stop here"]
+gdb_breakpoint $bp_location
+gdb_continue_to_breakpoint "end of main" ".*return .*;"
+
+gdb_test "print cbvArrayContainerByVal (arrayContainerByVal)" "6" \
+    "call cbvArrayContainerByVal"
+gdb_test "print arrayContainerByVal.items\[0\].x" "2" \
+    "cbv argument 'arrayContainerByVal' should not change"
+
+gdb_test "print cbvArrayContainerByRef (arrayContainerByRef)" "7" \
+    "call cbvArrayContainerByRef"
+gdb_test "print arrayContainerByRef.items\[0\].x" "2" \
+    "cbv argument 'arrayContainerByRef' should not change"
+
+gdb_test "print cbvDynamic (dynamic)" "48" \
+    "call cbvDynamic"
+gdb_test "print dynamic.x" "2" \
+    "cbv argument 'dynamic' should not change"
+
+set sig "\"Inlined\:\:Inlined\\(.*Inlined const\&\\)\""
+gdb_test "print cbvInlined (inlined)" \
+    "expression cannot be evaluated .* \\(maybe inlined\\?\\)"
+
+if {$is_gcc_6_or_older || $is_clang} {setup_xfail "*-*-*"}
+gdb_test "print cbvDtorDel (*dtorDel)" \
+    ".* cannot be evaluated .* 'DtorDel' is not destructible" \
+    "type not destructible"
+
+# Test that GDB calls the correct copy ctor
+gdb_test "print cbvFourCCtor (fourCctor_c0v0)" "13" \
+    "call cbvFourCCtor (c0v0)"
+gdb_test "print fourCctor_c0v0.x" "2" \
+    "cbv argument 'twoCctor_c0v0' should not change"
+
+gdb_test "print cbvFourCCtor (fourCctor_c1v0)" "14" \
+    "call cbvFourCCtor (c1v0)"
+gdb_test "print fourCctor_c1v0.x" "2" \
+    "cbv argument 'twoCctor_c1v0' should not change"
+
+gdb_test "print cbvFourCCtor (fourCctor_c0v1)" "15" \
+    "call cbvFourCCtor (c0v1)"
+gdb_test "print fourCctor_c0v1.x" "2" \
+    "cbv argument 'twoCctor_c0v1' should not change"
+
+gdb_test "print cbvFourCCtor (fourCctor_c1v1)" "16" \
+    "call cbvFourCCtor (c1v1)"
+gdb_test "print fourCctor_c1v1.x" "2" \
+    "cbv argument 'twoCctor_c1v1' should not change"
+
+gdb_test "print cbvTwoMCtor (twoMctor)" \
+    ".* cannot be evaluated .* 'TwoMCtor' is not copy constructible" \
+    "copy ctor is implicitly deleted"
+
+if {$is_gcc_6_or_older || $is_clang} {setup_xfail "*-*-*"}
+gdb_test "print cbvTwoMCtorAndCCtor (twoMctorAndCctor)" "12" \
+    "call cbvTwoMCtorAndCCtor"
+gdb_test "print twoMctorAndCctor.x" "2" \
+    "cbv argument 'twoMctorAndCtor' should not change"
+
+# Test that we get a breakpoint from the cctor during infcall and
+# we can examine arguments.  This is a test that the dummy frame
+# of the copy constructor is set up correctly by the infcall mechanism.
+set bp_location [gdb_get_line_number "ByRef-cctor"]
+gdb_breakpoint $bp_location
+gdb_test "print cbvArrayContainerByRef (arrayContainerByRef)" \
+    ".*The program being debugged stopped.*" \
+    "call cbvArrayContainerByRef with BP"
+gdb_test "backtrace" [multi_line \
+    "#0  ByRef\:\:ByRef .* at .*$srcfile:$bp_location" \
+    "#1  .* ArrayContainerByRef::ArrayContainerByRef .*" \
+    "#2  <function called from gdb>" \
+    "#3  main.*"]
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pass-by-ref.cc ./gdb/testsuite/gdb.cp/pass-by-ref.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pass-by-ref.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pass-by-ref.cc	1970-01-01 00:00:00.000000000 +0000
@@ -1,79 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2007-2020 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/>.  */
-
-class Obj {
-public:
-  Obj ();
-  Obj (const Obj &);
-  ~Obj ();
-  int var[2];
-};
-
-int foo (Obj arg)
-{
-  return arg.var[0] + arg.var[1];
-}
-
-Obj::Obj ()
-{
-  var[0] = 1;
-  var[1] = 2;
-}
-
-Obj::Obj (const Obj &obj)
-{
-  var[0] = obj.var[0];
-  var[1] = obj.var[1];
-}
-
-Obj::~Obj ()
-{
-
-}
-
-struct Derived : public Obj
-{
-  int other;
-};
-
-int blap (Derived arg)
-{
-  return foo (arg);
-}
-
-struct Container
-{
-  Obj obj;
-};
-
-int blip (Container arg)
-{
-  return foo (arg.obj);
-}
-
-Obj global_obj;
-Derived global_derived;
-Container global_container;
-
-int
-main ()
-{
-  int bar = foo (global_obj);
-  blap (global_derived);
-  blip (global_container);
-  return bar;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pass-by-ref.exp ./gdb/testsuite/gdb.cp/pass-by-ref.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pass-by-ref.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pass-by-ref.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -14,20 +14,421 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # Check that GDB can call C++ functions whose parameters have
-# object type, but are passed by reference.
+# object type, and are either passed by value or implicitly by reference.
+#
+# Suppose F is a function that has a call-by-value parameter whose
+# type is class C.  When calling F with an argument A, a copy of A should
+# be created and passed to F.  If C is a trivially-copyable type, A can
+# be copied by a straightforward memory copy.  However, roughly speaking,
+# if C has a user-defined copy constructor and/or a user-defined
+# destructor, the copy ctor should be used to initialize the copy of A
+# before calling F, and a reference to that copy is passed to F.  After
+# the function returns, the destructor should be called to destruct the
+# copy.  In this case, C is said to be a 'pass-by-reference' type.
+# Determining whether C is pass-by-ref depends on
+# how the copy ctor, destructor, and the move ctor of C are defined.
+# First of all, C is not copy constructible if its copy constructor is
+# explicitly or implicitly deleted.  In this case, it would be illegal
+# to pass values of type C to a function.  C is pass-by-value, if all of
+# its copy ctor, dtor, and move ctor are trivially defined.
+# Otherwise, it is pass-by-ref.
+#
+# To cover the many possible combinations, this test generates classes
+# that contain three special functions:
+#   (1) a copy constructor,
+#   (2) a destructor, and
+#   (3) a move constructor.
+# A special function is in one of the following states:
+#  * explicit: The function is explicitly defined by the user.
+#  * defaultedIn: The function is defaulted inside the class decl,
+#      using the 'default' keyword.
+#  * defaultedOut: The function is declared inside the class decl,
+#      and defaulted outside using the 'default' keyword.
+#  * deleted: The function is explicitly deleted by the user,
+#      using the 'delete' keyword.
+#  * absent: The function is not declared by the user (i.e. it does not
+#      exist in the source.  The compiler generates (or deletes) the
+#      definition in this case.
+#
+# The C++ ABI decides if a class is pass-by-value or pass-by-ref
+# (i.e.  trivially copyable or not) first at the language level, based
+# on the state of the special functions.  Then, at the target level, a
+# class may be determined to be pass-by-ref because of its size
+# (e.g.  if it is too large to fit on registers).  For this reason, this
+# test generates both a small and a large version for the same
+# combination of special function states.
+#
+# A class is not trivially-copyable if a base class or a field is not
+# trivially-copyable, even though the class definition itself seems
+# trivial.  To test these cases, we also generate derived classes and
+# container classes.
+#
+# The generated code is placed in the test output directory.
+#
+# The companion test file pass-by-ref-2.exp also contains
+# manually-written cases.
 
-if { [skip_cplus_tests] } { continue }
+if {[skip_cplus_tests]} {
+    untested "c++ test skipped"
+    continue
+}
 
+# The program source is generated in the output directory.
+# We use standard_testfile here to set convenience variables.
 standard_testfile .cc
 
-if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
+# Some constant values used when generating the source
+
+set SMALL    2
+set LARGE    150
+set ORIGINAL 2
+set CUSTOM   3
+set ADDED    4
+set TRACE    5
+
+
+# Return 1 if the class whose special function states are STATES
+# is copyable.  Otherwise return 0.
+
+proc is_copy_constructible { states } {
+    set cctor [lindex $states 0]
+    set dtor  [lindex $states 1]
+    set mctor [lindex $states 2]
+
+    if {$cctor == "deleted" || ($cctor == "absent" && $mctor != "absent")} {
+	return 0
+    }
+    return 1
+}
+
+# Generate a declaration and an out-of-class definition for a function
+# with the provided signature.  The STATE should be one of the following:
+# - explicit, defaultedIn, defaultedOut, deleted, absent
+
+proc generate_member_function { classname signature length state } {
+    set declaration ""
+    set definition ""
+
+    global CUSTOM
+    global TRACE
+
+    switch $state {
+	explicit {
+	    set declaration "$signature;\n"
+	    set definition "$classname\:\:$signature
+                            {
+                              data\[0\] = $CUSTOM;
+                              data\[[expr $length - 1]\] = $CUSTOM;
+                              tracer = $TRACE;
+                            }\n"
+	}
+	defaultedIn {
+	    set declaration "$signature = default;\n"
+	}
+	defaultedOut {
+	    set declaration "$signature;\n"
+	    set definition "$classname\:\:$signature = default;\n"
+	}
+	deleted {
+	    set declaration "$signature = delete;\n"
+	}
+	default {
+	    # function is not user-defined in this case
+	}
+    }
+
+    return [list $declaration $definition]
+}
+
+# Generate a C++ class with the given CLASSNAME and LENGTH-many
+# integer elements.  The STATES is an array of 3 items
+# containing the desired state of the special functions
+# in this order:
+# copy constructor, destructor, move constructor
+
+proc generate_class { classname length states } {
+    set declarations ""
+    set definitions ""
+    set classname "${classname}_[join $states _]"
+
+    for {set i 0} {$i < [llength $states]} {incr i} {
+	set sig ""
+	switch $i {
+	    0 {set sig "$classname (const $classname \&rhs)"}
+	    1 {set sig "\~$classname (void)"}
+	    2 {set sig "$classname ($classname \&\&rhs)"}
+	}
+
+	set state [lindex $states $i]
+	set code [generate_member_function $classname $sig $length $state]
+	append declarations [lindex $code 0]
+	append definitions [lindex $code 1]
+    }
+
+    global ORIGINAL
+
+    return "
+    /*** C++ class $classname ***/
+    class ${classname} {
+    public:
+        $classname (void);
+        $declarations
+
+        int data\[$length\];
+    };
+
+    $classname\:\:$classname (void)
+    {
+        data\[0\] = $ORIGINAL;
+        data\[[expr $length - 1]\] = $ORIGINAL;
+    }
+
+    $definitions
+
+    $classname ${classname}_var; /* global var */
+
+    template int cbv<$classname> ($classname arg);"
+}
+
+# Generate a small C++ class
+
+proc generate_small_class { states } {
+    global SMALL
+    return [generate_class Small $SMALL $states];
+}
+
+# Generate a large C++ class
+
+proc generate_large_class { states } {
+    global LARGE
+    return [generate_class Large $LARGE $states];
+}
+
+# Generate a class that derives from a small class
+
+proc generate_derived_class { states } {
+    set base "Small_[join $states _]"
+    set classname "Derived_[join $states _]"
+
+    return "
+    /*** Class derived from $base ***/
+    class $classname : public $base {
+    public:
+    };
+
+    $classname ${classname}_var; /* global var */
+
+    template int cbv<$classname> ($classname arg);"
+}
+
+# Generate a class that contains a small class item
+
+proc generate_container_class { states } {
+    set contained "Small_[join $states _]"
+    set classname "Container_[join $states _]"
+
+    return "
+    /*** Class that contains $contained ***/
+    class $classname {
+    public:
+        $contained item;
+    };
+
+    $classname ${classname}_var; /* global var */
+
+    template int cbv_container<$classname> ($classname arg);"
+}
+
+# Generate useful statements that use a class in the debugee program
+
+proc generate_stmts { classprefix states {cbvfun "cbv"}} {
+    set classname "${classprefix}_[join $states _]"
+
+    # Having an explicit call to the cbv function in the debugee program
+    # ensures that the compiler will emit necessary function in the binary.
+    if {[is_copy_constructible $states]} {
+	set cbvcall "$cbvfun<$classname> (${classname}_var);\n"
+    } else {
+	set cbvcall ""
+    }
+
+    return "$cbvcall"
+}
+
+# Generate the complete debugee program
+
+proc generate_program { classes stmts } {
+    global ADDED
+
+    return "
+    /*** THIS FILE IS GENERATED BY THE TEST.  ***/
+
+    static int tracer = 0;
+
+    /* The call-by-value function.  */
+    template <class T>
+    int
+    cbv (T arg)
+    {
+      arg.data\[0\] += $ADDED; // intentionally modify the arg
+      return arg.data\[0\];
+    }
+
+    template <class T>
+    int
+    cbv_container (T arg)
+    {
+      arg.item.data\[0\] += $ADDED;  // intentionally modify
+      return arg.item.data\[0\];
+    }
+
+    $classes
+
+    int
+    main (void)
+    {
+      $stmts
+
+      /* stop here */
+
+      return 0;
+    }"
+}
+
+# Compute all the combinations of special function states.
+# We do not contain the 'deleted' state for the destructor,
+# because it is illegal to have stack-allocated objects
+# whose destructor have been deleted.  This case is covered
+# in pass-by-ref-2 via heap-allocated objects.
+
+set options_nodelete [list absent explicit defaultedIn defaultedOut]
+set options [concat $options_nodelete {deleted}]
+set all_combinations {}
+
+foreach cctor $options {
+    foreach dtor $options_nodelete {
+	foreach mctor $options {
+	    lappend all_combinations [list $cctor $dtor $mctor]
+	}
+    }
+}
+
+# Generate the classes.
+
+set classes ""
+set stmts ""
+
+foreach state $all_combinations {
+    append classes [generate_small_class $state]
+    append stmts [generate_stmts "Small" $state]
+
+    append classes [generate_large_class $state]
+    append stmts [generate_stmts "Large" $state]
+
+    append classes [generate_derived_class $state]
+    append stmts [generate_stmts "Derived" $state]
+
+    append classes [generate_container_class $state]
+    append stmts [generate_stmts "Container" $state "cbv_container"]
+}
+
+# Generate the program code and compile
+set program [generate_program $classes $stmts]
+set srcfile [standard_output_file ${srcfile}]
+gdb_produce_source $srcfile $program
+
+set options {debug c++ additional_flags=-std=c++11}
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile $options]} {
     return -1
 }
 
-if ![runto_main] then {
+if {![runto_main]} {
+    untested "failed to run to main"
     return -1
 }
 
-gdb_test "print foo (global_obj)" " = 3" "call function in obj"
-gdb_test "print blap (global_derived)" " = 3" "call function in derived"
-gdb_test "print blip (global_container)" " = 3" "call function in container"
+set bp_location [gdb_get_line_number "stop here"]
+gdb_breakpoint $bp_location
+gdb_continue_to_breakpoint "end of main" ".*return .*;"
+
+# Do the checks for a given class whose name is prefixed with PREFIX,
+# and whose special functions have the states given in STATES.
+# The name of the call-by-value function and the expression to access
+# the data field can be specified explicitly if the default values
+# do not work.
+
+proc test_for_class { prefix states cbvfun data_field length} {
+    set name "${prefix}_[join $states _]"
+
+    set cctor [lindex $states 0]
+    set dtor  [lindex $states 1]
+    set mctor [lindex $states 2]
+
+    global ORIGINAL
+    global CUSTOM
+    global ADDED
+    global TRACE
+
+    # GCC version <= 6 and Clang do not emit DW_AT_defaulted and DW_AT_deleted.
+    set is_gcc_6_or_older [test_compiler_info {gcc-[0-6]-*}]
+    set is_clang [test_compiler_info {clang-*}]
+    # But Clang version >= 7 emits DW_AT_calling_convention for types.
+    set is_clang_6_or_older [test_compiler_info {clang-[0-6]-*}]
+
+    with_test_prefix $name {
+	if {[is_copy_constructible $states]} {
+	    set expected [expr {$ORIGINAL + $ADDED}]
+	    if {$cctor == "explicit"} {
+		set expected [expr {$CUSTOM + $ADDED}]
+	    }
+	    if {$dtor == "explicit"} {
+		gdb_test "print tracer = 0" " = 0" "reset the tracer"
+	    }
+
+	    if {$cctor == "defaultedIn" || $dtor == "defaultedIn"} {
+		if {$is_gcc_6_or_older || $is_clang_6_or_older} {
+		    setup_xfail "*-*-*"
+		} elseif {$is_clang} {
+		    # If this is a pass-by-value case, Clang >= 7's
+		    # DW_AT_calling_convention leads to the right decision.
+		    # Otherwise, it is expected to fail.
+		    if {"defaultedOut" in $states || "explicit" in $states} {
+			setup_xfail "*-*-*"
+		    }
+		}
+	    }
+	    gdb_test "print ${cbvfun}<$name> (${name}_var)" " = $expected" \
+		"call '$cbvfun'"
+	    gdb_test "print ${name}_var.${data_field}\[0\]" " = $ORIGINAL" \
+		"cbv argument should not change (item 0)"
+	    if {$length > 1} {
+		set last_index [expr $length - 1]
+		gdb_test "print ${name}_var.${data_field}\[$last_index\]" \
+		    " = $ORIGINAL" \
+		    "cbv argument should not change (item $last_index)"
+	    }
+	    if {$dtor == "explicit"} {
+		if {$cctor == "defaultedIn"
+		    && ($is_gcc_6_or_older || $is_clang)} {
+		    setup_xfail "*-*-*"
+		}
+		gdb_test "print tracer" " = $TRACE" \
+		    "destructor should be called"
+	    }
+	} else {
+	    if {$cctor == "deleted" && ($is_gcc_6_or_older || $is_clang)} {
+		setup_xfail "*-*-*"
+	    }
+	    gdb_test "print ${cbvfun}<$name> (${name}_var)" \
+		".* cannot be evaluated .* '${name}' is not copy constructible" \
+		"calling '$cbvfun' should be refused"
+	}
+    }
+}
+
+foreach state $all_combinations {
+    test_for_class "Small"     $state "cbv"           "data"      $SMALL
+    test_for_class "Large"     $state "cbv"           "data"      $LARGE
+    test_for_class "Derived"   $state "cbv"           "data"      1
+    test_for_class "Container" $state "cbv_container" "item.data" 1
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr-1023.exp ./gdb/testsuite/gdb.cp/pr-1023.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr-1023.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr-1023.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr10687.exp ./gdb/testsuite/gdb.cp/pr10687.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr10687.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr10687.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#Copyright 2010-2020 Free Software Foundation, Inc.
+#Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr10728.exp ./gdb/testsuite/gdb.cp/pr10728.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr10728.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr10728.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr12028.exp ./gdb/testsuite/gdb.cp/pr12028.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr12028.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr12028.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr-1210.exp ./gdb/testsuite/gdb.cp/pr-1210.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr-1210.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr-1210.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr17132.cc ./gdb/testsuite/gdb.cp/pr17132.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr17132.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr17132.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr17132.exp ./gdb/testsuite/gdb.cp/pr17132.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr17132.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr17132.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr17494.cc ./gdb/testsuite/gdb.cp/pr17494.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr17494.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr17494.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr17494.exp ./gdb/testsuite/gdb.cp/pr17494.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr17494.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr17494.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr-574.cc ./gdb/testsuite/gdb.cp/pr-574.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr-574.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr-574.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr-574.exp ./gdb/testsuite/gdb.cp/pr-574.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr-574.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr-574.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr9067.exp ./gdb/testsuite/gdb.cp/pr9067.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr9067.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr9067.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr9167.exp ./gdb/testsuite/gdb.cp/pr9167.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr9167.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr9167.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#Copyright 2010-2020 Free Software Foundation, Inc.
+#Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr9631.cc ./gdb/testsuite/gdb.cp/pr9631.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr9631.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr9631.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr9631.exp ./gdb/testsuite/gdb.cp/pr9631.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/pr9631.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/pr9631.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/print-demangle.exp ./gdb/testsuite/gdb.cp/print-demangle.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/print-demangle.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/print-demangle.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,32 @@
+# Copyright (C) 2013-2021 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/>.
+
+if { [skip_cplus_tests] } { continue }
+
+standard_testfile bool.cc
+
+if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug c++}]} {
+    return -1
+}
+
+runto_main
+
+gdb_breakpoint "return_true"
+
+gdb_continue_to_breakpoint "return_true"
+
+gdb_test_no_output "set print demangle off"
+
+gdb_test "frame" " _Z11return_truev .*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/printmethod.cc ./gdb/testsuite/gdb.cp/printmethod.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/printmethod.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/printmethod.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/printmethod.exp ./gdb/testsuite/gdb.cp/printmethod.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/printmethod.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/printmethod.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/psmang1.cc ./gdb/testsuite/gdb.cp/psmang1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/psmang1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/psmang1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/psmang2.cc ./gdb/testsuite/gdb.cp/psmang2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/psmang2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/psmang2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/psmang.exp ./gdb/testsuite/gdb.cp/psmang.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/psmang.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/psmang.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/psymtab-parameter.cc ./gdb/testsuite/gdb.cp/psymtab-parameter.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/psymtab-parameter.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/psymtab-parameter.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/psymtab-parameter.exp ./gdb/testsuite/gdb.cp/psymtab-parameter.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/psymtab-parameter.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/psymtab-parameter.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ptype-cv-cp.cc ./gdb/testsuite/gdb.cp/ptype-cv-cp.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ptype-cv-cp.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ptype-cv-cp.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ptype-cv-cp.exp ./gdb/testsuite/gdb.cp/ptype-cv-cp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ptype-cv-cp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ptype-cv-cp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ptype-flags.cc ./gdb/testsuite/gdb.cp/ptype-flags.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ptype-flags.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ptype-flags.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ptype-flags.exp ./gdb/testsuite/gdb.cp/ptype-flags.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ptype-flags.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ptype-flags.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/punctuator.exp ./gdb/testsuite/gdb.cp/punctuator.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/punctuator.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/punctuator.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/readnow-language.cc ./gdb/testsuite/gdb.cp/readnow-language.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/readnow-language.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/readnow-language.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/readnow-language.exp ./gdb/testsuite/gdb.cp/readnow-language.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/readnow-language.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/readnow-language.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ref-params.cc ./gdb/testsuite/gdb.cp/ref-params.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ref-params.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ref-params.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ref-params.exp ./gdb/testsuite/gdb.cp/ref-params.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ref-params.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ref-params.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # Tests for reference parameters of types and their subtypes in GDB.
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
@@ -24,7 +24,7 @@ if { [skip_cplus_tests] } { continue }
 
 standard_testfile .cc
 
-if {[build_executable $testfile.exp $testfile $srcfile {debug c++}] == 1} {
+if {[build_executable $testfile.exp $testfile $srcfile {debug c++}] == -1} {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ref-types.cc ./gdb/testsuite/gdb.cp/ref-types.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ref-types.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ref-types.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 1999-2020 Free Software Foundation, Inc.
+   Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ref-types.exp ./gdb/testsuite/gdb.cp/ref-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/ref-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/ref-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # Tests for reference types with short type variables in GDB.
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/re-set-overloaded.cc ./gdb/testsuite/gdb.cp/re-set-overloaded.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/re-set-overloaded.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/re-set-overloaded.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/re-set-overloaded.exp ./gdb/testsuite/gdb.cp/re-set-overloaded.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/re-set-overloaded.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/re-set-overloaded.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rtti1.cc ./gdb/testsuite/gdb.cp/rtti1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rtti1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rtti1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code to go along with tests in rtti.exp.
    
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 Free Software Foundation, Inc.
 
    Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
    Inc.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rtti2.cc ./gdb/testsuite/gdb.cp/rtti2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rtti2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rtti2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code to go along with tests in rtti.exp.
    
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 Free Software Foundation, Inc.
 
    Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
    Inc.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rtti.exp ./gdb/testsuite/gdb.cp/rtti.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rtti.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rtti.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rtti.h ./gdb/testsuite/gdb.cp/rtti.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rtti.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rtti.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code to go along with tests in rtti.exp.
    
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 Free Software Foundation, Inc.
 
    Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
    Inc.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-casts.cc ./gdb/testsuite/gdb.cp/rvalue-ref-casts.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-casts.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rvalue-ref-casts.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-casts.exp ./gdb/testsuite/gdb.cp/rvalue-ref-casts.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-casts.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rvalue-ref-casts.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-overload.cc ./gdb/testsuite/gdb.cp/rvalue-ref-overload.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-overload.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rvalue-ref-overload.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1998-2020 Free Software Foundation, Inc.
+   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-overload.exp ./gdb/testsuite/gdb.cp/rvalue-ref-overload.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-overload.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rvalue-ref-overload.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-params.cc ./gdb/testsuite/gdb.cp/rvalue-ref-params.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-params.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rvalue-ref-params.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2006-2020 Free Software Foundation, Inc.
+   Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-params.exp ./gdb/testsuite/gdb.cp/rvalue-ref-params.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-params.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rvalue-ref-params.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
@@ -21,7 +21,7 @@ if {[skip_cplus_tests]} { continue }
 standard_testfile .cc
 
 if {[prepare_for_testing $testfile.exp $testfile $srcfile \
-    {debug c++ additional_flags="-std=gnu++11"}] == 1} {
+    {debug c++ additional_flags="-std=gnu++11"}] == -1} {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-sizeof.cc ./gdb/testsuite/gdb.cp/rvalue-ref-sizeof.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-sizeof.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rvalue-ref-sizeof.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-sizeof.exp ./gdb/testsuite/gdb.cp/rvalue-ref-sizeof.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-sizeof.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rvalue-ref-sizeof.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-types.cc ./gdb/testsuite/gdb.cp/rvalue-ref-types.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-types.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rvalue-ref-types.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 1999-2020 Free Software Foundation, Inc.
+   Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-types.exp ./gdb/testsuite/gdb.cp/rvalue-ref-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/rvalue-ref-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/rvalue-ref-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/save-bp-qualified.cc ./gdb/testsuite/gdb.cp/save-bp-qualified.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/save-bp-qualified.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/save-bp-qualified.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2017-2020 Free Software Foundation, Inc.
+/* Copyright 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/save-bp-qualified.exp ./gdb/testsuite/gdb.cp/save-bp-qualified.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/save-bp-qualified.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/save-bp-qualified.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/scope-err.cc ./gdb/testsuite/gdb.cp/scope-err.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/scope-err.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/scope-err.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/scope-err.exp ./gdb/testsuite/gdb.cp/scope-err.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/scope-err.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/scope-err.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/shadow.exp ./gdb/testsuite/gdb.cp/shadow.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/shadow.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/shadow.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/smartp.cc ./gdb/testsuite/gdb.cp/smartp.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/smartp.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/smartp.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 1999-2020 Free Software Foundation, Inc.
+   Copyright 1999-2021 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
@@ -131,12 +131,12 @@ int main(){
   sp3->foo(1);
   sp3->foo('a');
 
-  sp4->a;
-  sp4->b;
+  (void) sp4->a;
+  (void) sp4->b;
 
   Type4 *mt4p = &mt4;
-  mt4p->a;
-  mt4p->b;
+  (void) mt4p->a;
+  (void) mt4p->b;
 
   A a;
   B b;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/smartp.exp ./gdb/testsuite/gdb.cp/smartp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/smartp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/smartp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-method.cc ./gdb/testsuite/gdb.cp/static-method.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-method.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/static-method.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-method.exp ./gdb/testsuite/gdb.cp/static-method.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-method.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/static-method.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 Free Software Foundation, Inc.
 #
 # Contributed by Red Hat, originally written by Keith Seitz.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-print-quit.cc ./gdb/testsuite/gdb.cp/static-print-quit.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-print-quit.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/static-print-quit.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-print-quit.exp ./gdb/testsuite/gdb.cp/static-print-quit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-print-quit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/static-print-quit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-typedef-print.cc ./gdb/testsuite/gdb.cp/static-typedef-print.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-typedef-print.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/static-typedef-print.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-typedef-print.exp ./gdb/testsuite/gdb.cp/static-typedef-print.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/static-typedef-print.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/static-typedef-print.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/step-and-next-inline.cc ./gdb/testsuite/gdb.cp/step-and-next-inline.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/step-and-next-inline.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/step-and-next-inline.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,66 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+#ifdef USE_NEXT_INLINE_H
+
+#include "step-and-next-inline.h"
+
+#else	/* USE_NEXT_INLINE_H */
+
+/* The code below must remain identical to the code in
+   step-and-next-inline.h.  */
+
+#include <stdlib.h>
+
+struct tree
+{
+  volatile int x;
+  volatile int z;
+};
+
+#define TREE_TYPE(NODE) (*tree_check (NODE, 0))
+
+inline tree *
+tree_check (tree *t, int i)
+{
+  if (t->x != i)
+    abort();
+  tree *x = t;
+  return x;
+}
+
+#endif	/* USE_NEXT_INLINE_H */
+
+int __attribute__((noinline, noclone))
+get_alias_set (tree *t)
+{
+  if (t != NULL
+      && TREE_TYPE (t).z != 1
+      && TREE_TYPE (t).z != 2
+      && TREE_TYPE (t).z != 3)
+    return 0;
+  return 1;
+}
+
+tree xx;
+
+int
+main()
+{
+  get_alias_set (&xx);
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/step-and-next-inline.exp ./gdb/testsuite/gdb.cp/step-and-next-inline.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/step-and-next-inline.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/step-and-next-inline.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,130 @@
+# Copyright 2019-2021 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/>.
+
+standard_testfile .cc
+
+if { ![supports_statement_frontiers] } {
+    return -1
+}
+
+# Compile the test source with USE_NEXT_INLINE_H defined (when
+# use_header is true), or not defined.
+proc do_test { use_header } {
+    global srcfile testfile
+
+    if { $use_header } {
+	# This test will not pass due to poor debug information
+	# generated by GCC (at least upto 10.x).  See
+	# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94474
+	return
+    }
+
+    set options {c++ debug nowarnings optimize=-O2\ -gstatement-frontiers}
+    if { $use_header } {
+	lappend options additional_flags=-DUSE_NEXT_INLINE_H
+	set executable "$testfile-with-header"
+	set hdrfile "step-and-next-inline.h"
+	set prefix "use_header"
+    } else {
+	set executable "$testfile-no-header"
+	set hdrfile "$srcfile"
+	set prefix "no_header"
+    }
+
+    if { [prepare_for_testing "failed to prepare" $executable \
+	      $srcfile $options] } {
+	return -1
+    }
+
+    with_test_prefix $prefix {
+
+    if ![runto_main] {
+	fail "can't run to main"
+	return
+    }
+
+    gdb_test "bt" "\\s*\\#0\\s+main.*" "in main"
+    gdb_test "step" ".*" "step into get_alias_set"
+    gdb_test "bt" "\\s*\\#0\\s+get_alias_set\[^\r\]*${srcfile}:.*" \
+	"not in inline 1"
+    # It's possible that this first failure (when not using a header
+    # file) is GCC's fault, though the remaining failures would best
+    # be fixed by adding location views support (though it could be
+    # that some easier heuristic could be figured out).  Still, it is
+    # not certain that the first failure wouldn't also be fixed by
+    # having location view support, so for now it is tagged as such.
+    if {!$use_header} { setup_kfail "*-*-*" symtab/25507 }
+    gdb_test "next" ".*TREE_TYPE.*" "next step 1"
+    gdb_test "bt" "\\s*\\#0\\s+get_alias_set\[^\r\]*${srcfile}:.*" \
+	"not in inline 2"
+    gdb_test "next" ".*TREE_TYPE.*" "next step 2"
+    gdb_test "bt" "\\s*\\#0\\s+get_alias_set\[^\r\]*${srcfile}:.*" \
+	"not in inline 3"
+    if {!$use_header} { setup_kfail "*-*-*" symtab/25507 }
+    gdb_test "next" ".*TREE_TYPE.*" "next step 3"
+    gdb_test "bt" "\\s*\\#0\\s+get_alias_set\[^\r\]*${srcfile}:.*" \
+	"not in inline 4"
+    if {!$use_header} { setup_kfail "*-*-*" symtab/25507 }
+    gdb_test "next" "return 0.*" "next step 4"
+    gdb_test "bt" \
+	"\\s*\\#0\\s+(main|get_alias_set)\[^\r\]*${srcfile}:.*" \
+	"not in inline 5"
+
+    if {!$use_header} {
+	# With the debug from GCC 10.x (and earlier) GDB is currently
+	# unable to successfully complete the following tests when we
+	# are not using a header file.
+	kfail symtab/25507 "stepping tests"
+	return
+    }
+
+    clean_restart ${executable}
+
+    if ![runto_main] {
+	fail "can't run to main pass 2"
+	return
+    }
+
+    gdb_test "bt" "\\s*\\#0\\s+main.*" "in main pass 2"
+    gdb_test "step" ".*" "step into get_alias_set pass 2"
+    gdb_test "bt" "\\s*\\#0\\s+get_alias_set\[^\r\]*${srcfile}:.*" \
+	"in get_alias_set pass 2"
+    gdb_test "step" ".*TREE_TYPE.*" "step 1"
+    gdb_test "bt" "\\s*\\#0\\s+get_alias_set\[^\r\]*${srcfile}:.*" \
+	"not in inline 1 pass 2"
+    gdb_test "step" ".*if \\(t->x != i\\).*" "step 2"
+    gdb_test "bt" "\\s*\\#0\\s+\[^\r\]*tree_check\[^\r\]*${hdrfile}:.*" \
+	"in inline 1 pass 2"
+    gdb_test "step" ".*TREE_TYPE.*" "step 3"
+    gdb_test "bt" "\\s*\\#0\\s+get_alias_set\[^\r\]*${srcfile}:.*" \
+	"not in inline 2 pass 2"
+    gdb_test "step" ".*if \\(t->x != i\\).*" "step 4"
+    gdb_test "bt" "\\s*\\#0\\s+\[^\r\]*tree_check\[^\r\]*${hdrfile}:.*" \
+	"in inline 2 pass 2"
+    gdb_test "step" ".*TREE_TYPE.*" "step 5"
+    gdb_test "bt" "\\s*\\#0\\s+get_alias_set\[^\r\]*${srcfile}:.*" \
+	"not in inline 3 pass 2"
+    gdb_test "step" ".*if \\(t->x != i\\).*" "step 6"
+    gdb_test "bt" "\\s*\\#0\\s+\[^\r\]*tree_check\[^\r\]*${hdrfile}:.*" \
+	"in inline 3 pass 2"
+    gdb_test "step" "return 0.*" "step 7"
+    gdb_test "bt" \
+	"\\s*\\#0\\s+(main|get_alias_set)\[^\r\]*${srcfile}:.*" \
+	"not in inline 4 pass 2"
+    }
+}
+
+do_test 0
+do_test 1
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/step-and-next-inline.h ./gdb/testsuite/gdb.cp/step-and-next-inline.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/step-and-next-inline.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/step-and-next-inline.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,38 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+/* The code below must remain identical to the block of code in
+   step-and-next-inline.cc.  */
+
+#include <stdlib.h>
+
+struct tree
+{
+  volatile int x;
+  volatile int z;
+};
+
+#define TREE_TYPE(NODE) (*tree_check (NODE, 0))
+
+inline tree *
+tree_check (tree *t, int i)
+{
+  if (t->x != i)
+    abort();
+  tree *x = t;
+  return x;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/stub-array-size2.cc ./gdb/testsuite/gdb.cp/stub-array-size2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/stub-array-size2.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/stub-array-size2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include "stub-array-size.h"
+
+A::~A()
+{
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/stub-array-size.cc ./gdb/testsuite/gdb.cp/stub-array-size.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/stub-array-size.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/stub-array-size.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include "stub-array-size.h"
+
+A a[10];
+
+int main()
+{
+  return 0;
+};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/stub-array-size.exp ./gdb/testsuite/gdb.cp/stub-array-size.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/stub-array-size.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/stub-array-size.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,30 @@
+# Copyright 2020-2021 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 file is part of the gdb testsuite.
+
+# Test size of arrays of stubbed types (structures where the full definition
+# is not immediately available).
+
+if {[skip_cplus_tests]} { continue }
+
+standard_testfile .cc stub-array-size2.cc
+
+if {[prepare_for_testing "failed to prepare" $testfile "$srcfile $srcfile2" \
+	{c++ debug}]} {
+    return -1
+}
+
+gdb_test "print sizeof(a)/sizeof(a\[0\])" "10"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/stub-array-size.h ./gdb/testsuite/gdb.cp/stub-array-size.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/stub-array-size.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/stub-array-size.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,21 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+struct A
+{
+  virtual ~A();
+};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/subtypes-2.cc ./gdb/testsuite/gdb.cp/subtypes-2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/subtypes-2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/subtypes-2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/subtypes.cc ./gdb/testsuite/gdb.cp/subtypes.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/subtypes.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/subtypes.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/subtypes.exp ./gdb/testsuite/gdb.cp/subtypes.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/subtypes.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/subtypes.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/subtypes.h ./gdb/testsuite/gdb.cp/subtypes.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/subtypes.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/subtypes.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/temargs.cc ./gdb/testsuite/gdb.cp/temargs.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/temargs.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/temargs.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Template argument tests.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/temargs.exp ./gdb/testsuite/gdb.cp/temargs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/temargs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/temargs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # temargs.exp - Template argument tests
 #
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/templates.exp ./gdb/testsuite/gdb.cp/templates.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/templates.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/templates.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/try_catch.cc ./gdb/testsuite/gdb.cp/try_catch.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/try_catch.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/try_catch.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
@@ -18,6 +18,7 @@
 #include <exception>
 #include <stdexcept>
 #include <string>
+#include <string.h>
 
 enum region { oriental, egyptian, greek, etruscan, roman };
 
@@ -129,8 +130,8 @@ int main()
     }
   catch (exception& obj)
     {
-      if (obj.what() != "gdb.1")	// marker 3-catch
+      if (strcmp (obj.what(), "gdb.1") != 0)	// marker 3-catch
 	test &= false;
     }
-  return 0;
+  return 0;	// marker test-complete
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/try_catch.exp ./gdb/testsuite/gdb.cp/try_catch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/try_catch.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/try_catch.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
@@ -63,5 +63,9 @@ gdb_continue_to_breakpoint "marker 3-thr
 gdb_breakpoint [gdb_get_line_number "marker 3-catch"]
 gdb_continue_to_breakpoint "marker 3-catch"
 
+gdb_breakpoint [gdb_get_line_number "marker test-complete"]
+gdb_continue_to_breakpoint "marker test-complete"
+gdb_test "p test" "= true"
+
 gdb_exit
 return 0
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typedef-base.cc ./gdb/testsuite/gdb.cp/typedef-base.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typedef-base.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/typedef-base.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typedef-base.exp ./gdb/testsuite/gdb.cp/typedef-base.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typedef-base.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/typedef-base.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typedef-operator.cc ./gdb/testsuite/gdb.cp/typedef-operator.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typedef-operator.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/typedef-operator.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test case is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typedef-operator.exp ./gdb/testsuite/gdb.cp/typedef-operator.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typedef-operator.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/typedef-operator.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typed-enum.cc ./gdb/testsuite/gdb.cp/typed-enum.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typed-enum.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/typed-enum.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,35 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+typedef unsigned char byte;
+
+enum byte_enum : byte
+{
+  byte_val = 128
+};
+
+enum uchar_enum : unsigned char
+{
+  uchar_val = 128
+};
+
+int main()
+{
+  int v1 = byte_val;
+  int v2 = uchar_val;
+  return v1 == v2;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typed-enum.exp ./gdb/testsuite/gdb.cp/typed-enum.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typed-enum.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/typed-enum.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,31 @@
+# Copyright 2020-2021 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/>.
+#
+# Check if unsigned typedef are handled correctly with typed enums.
+
+if { [skip_cplus_tests] } { continue }
+
+standard_testfile .cc
+
+if [get_compiler_info "c++"] {
+    return -1
+}
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
+    return -1
+}
+
+gdb_test "print (int)byte_val" "= 128"
+gdb_test "print (int)uchar_val" "= 128"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typeid.cc ./gdb/testsuite/gdb.cp/typeid.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typeid.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/typeid.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typeid.exp ./gdb/testsuite/gdb.cp/typeid.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/typeid.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/typeid.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/userdef.cc ./gdb/testsuite/gdb.cp/userdef.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/userdef.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/userdef.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 1999-2020 Free Software Foundation, Inc.
+   Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/userdef.exp ./gdb/testsuite/gdb.cp/userdef.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/userdef.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/userdef.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # Tests of overloaded operators resolution.
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/using-crash.cc ./gdb/testsuite/gdb.cp/using-crash.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/using-crash.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/using-crash.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/using-crash.exp ./gdb/testsuite/gdb.cp/using-crash.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/using-crash.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/using-crash.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/var-tag-2.cc ./gdb/testsuite/gdb.cp/var-tag-2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/var-tag-2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/var-tag-2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/var-tag-3.cc ./gdb/testsuite/gdb.cp/var-tag-3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/var-tag-3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/var-tag-3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/var-tag-4.cc ./gdb/testsuite/gdb.cp/var-tag-4.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/var-tag-4.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/var-tag-4.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/var-tag.cc ./gdb/testsuite/gdb.cp/var-tag.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/var-tag.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/var-tag.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/var-tag.exp ./gdb/testsuite/gdb.cp/var-tag.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/var-tag.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/var-tag.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtbase2.cc ./gdb/testsuite/gdb.cp/virtbase2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtbase2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/virtbase2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtbase2.exp ./gdb/testsuite/gdb.cp/virtbase2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtbase2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/virtbase2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -63,23 +63,29 @@ proc make_scope_list { scopes } {
 }
 
 proc test_variables_in_base { scopes } {
-    foreach scope [make_scope_list $scopes] {
-        gdb_test "print ${scope}i" " = 55"
-        gdb_test "print ${scope}d" " = 6.25"
-        gdb_test "print ${scope}x" " = 22"
-    }
+  with_test_prefix "$scopes" {
+      foreach scope [make_scope_list $scopes] {
+	  gdb_test "print ${scope}i" " = 55"
+	  gdb_test "print ${scope}d" " = 6.25"
+	  gdb_test "print ${scope}x" " = 22"
+      }
+  }
 }
 
 proc test_variables_in_superbase { scopes } {
-    foreach scope [make_scope_list $scopes] {
-        gdb_test "print ${scope}x" " = 22"
-    }
+  with_test_prefix "$scopes" {
+      foreach scope [make_scope_list $scopes] {
+	  gdb_test "print ${scope}x" " = 22"
+      }
+  }
 }
 
 proc test_variables_in_super { scopes } {
-    foreach scope [make_scope_list $scopes] {
-        gdb_test "print ${scope}w" " = 17"
-    }
+  with_test_prefix "$scopes" {
+      foreach scope [make_scope_list $scopes] {
+	  gdb_test "print ${scope}w" " = 17"
+      }
+  }
 }
 
 with_test_prefix "derived::func_d" {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtbase.exp ./gdb/testsuite/gdb.cp/virtbase.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtbase.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/virtbase.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtfunc2.cc ./gdb/testsuite/gdb.cp/virtfunc2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtfunc2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/virtfunc2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
  /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtfunc2.exp ./gdb/testsuite/gdb.cp/virtfunc2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtfunc2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/virtfunc2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtfunc.cc ./gdb/testsuite/gdb.cp/virtfunc.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtfunc.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/virtfunc.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 1993-2020 Free Software Foundation, Inc.
+   Copyright 1993-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtfunc.exp ./gdb/testsuite/gdb.cp/virtfunc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/virtfunc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/virtfunc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/vla-cxx.cc ./gdb/testsuite/gdb.cp/vla-cxx.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/vla-cxx.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/vla-cxx.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/vla-cxx.exp ./gdb/testsuite/gdb.cp/vla-cxx.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/vla-cxx.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/vla-cxx.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/watch-cp.cc ./gdb/testsuite/gdb.cp/watch-cp.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/watch-cp.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/watch-cp.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/watch-cp.exp ./gdb/testsuite/gdb.cp/watch-cp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/watch-cp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/watch-cp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/wide_char_types.c ./gdb/testsuite/gdb.cp/wide_char_types.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/wide_char_types.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/wide_char_types.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/wide_char_types.exp ./gdb/testsuite/gdb.cp/wide_char_types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.cp/wide_char_types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/wide_char_types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp ./gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.debuginfod/fetch_src_and_symbols.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,246 @@
+# Copyright 2020-2021 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 debuginfod functionality
+
+standard_testfile main.c
+
+load_lib dwarf.exp
+
+if { [which debuginfod] == 0 } {
+    untested "cannot find debuginfod"
+    return -1
+}
+
+if { [which curl] == 0 } {
+    untested "cannot find curl"
+    return -1
+}
+
+# Skip testing if gdb was not configured with debuginfod
+if { [string first "with-debuginfod" \
+	 [eval exec $GDB $INTERNAL_GDBFLAGS --configuration]] == -1 } {
+    untested "gdb not configured with debuginfod"
+    return -1
+}
+
+set cache [standard_output_file ".client_cache"]
+set db [standard_output_file ".debuginfod.db"]
+
+# Delete any preexisting test files
+file delete -force $cache
+file delete -force $db
+
+set sourcetmp [standard_output_file tmp-${srcfile}]
+set outputdir [standard_output_file {}]
+
+# Make a copy source file that we can move around
+if { [catch {file copy -force ${srcdir}/${subdir}/${srcfile} \
+	     [standard_output_file ${sourcetmp}]}] != 0 } {
+    error "create temporary file"
+    return -1
+}
+
+if { [gdb_compile "$sourcetmp" "$binfile" executable {debug}] != "" } {
+    fail "compile"
+    return -1
+}
+
+# Write some assembly that just has a .gnu_debugaltlink section.
+# Copied from testsuite/gdb.dwarf2/dwzbuildid.exp.
+proc write_just_debugaltlink {filename dwzname buildid} {
+    set asm_file [standard_output_file $filename]
+
+    Dwarf::assemble $asm_file {
+	upvar dwzname dwzname
+	upvar buildid buildid
+
+	gnu_debugaltlink $dwzname $buildid
+
+	# Only the DWARF reader checks .gnu_debugaltlink, so make sure
+	# there is a bit of DWARF in here.
+	cu {} {
+	    compile_unit {{language @DW_LANG_C}} {
+	    }
+	}
+    }
+}
+
+# Write some DWARF that also sets the buildid.
+# Copied from testsuite/gdb.dwarf2/dwzbuildid.exp.
+proc write_dwarf_file {filename buildid {value 99}} {
+    set asm_file [standard_output_file $filename]
+
+    Dwarf::assemble $asm_file {
+	declare_labels int_label int_label2
+
+	upvar buildid buildid
+	upvar value value
+
+	build_id $buildid
+
+	cu {} {
+	    compile_unit {{language @DW_LANG_C}} {
+		int_label2: base_type {
+		    {name int}
+		    {byte_size 4 sdata}
+		    {encoding @DW_ATE_signed}
+		}
+
+		constant {
+		    {name the_int}
+		    {type :$int_label2}
+		    {const_value $value data1}
+		}
+	    }
+	}
+    }
+}
+
+proc no_url { } {
+    global binfile outputdir debugdir
+
+    setenv DEBUGINFOD_URLS ""
+
+    # Test that gdb cannot find source without debuginfod
+    clean_restart $binfile
+    gdb_test_no_output "set substitute-path $outputdir /dev/null" \
+	"set substitute-path"
+    gdb_test "list" ".*No such file or directory.*"
+
+    # Strip symbols into separate file and move it so gdb cannot find it \
+	without debuginfod
+    if { [gdb_gnu_strip_debug $binfile ""] != 0 } {
+	fail "strip debuginfo"
+	return -1
+    }
+
+    set debugdir [standard_output_file "debug"]
+    set debuginfo [standard_output_file "fetch_src_and_symbols.debug"]
+
+    file mkdir $debugdir
+    file rename -force $debuginfo $debugdir
+
+    # Test that gdb cannot find symbols without debuginfod
+    clean_restart $binfile
+    gdb_test "file" ".*No symbol file.*"
+
+    set buildid "01234567890abcdef0123456"
+
+    write_just_debugaltlink ${binfile}_has_altlink.S ${binfile}_dwz.o \
+	$buildid
+    write_dwarf_file ${binfile}_dwz.S $buildid
+
+    if {[gdb_compile ${binfile}_has_altlink.S ${binfile}_alt.o object \
+	     nodebug] != ""} {
+	fail "compile main with altlink"
+	return -1
+    }
+
+    if {[gdb_compile ${binfile}_dwz.S ${binfile}_dwz.o object \
+	     nodebug] != ""} {
+	fail "compile altlink"
+	return -1
+    }
+
+    file rename -force ${binfile}_dwz.o $debugdir
+
+    # Test that gdb cannot find dwz without debuginfod.
+    clean_restart
+    gdb_test "file ${binfile}_alt.o" \
+	".*could not find '.gnu_debugaltlink'.*" \
+	"file [file tail ${binfile}_alt.o]"
+}
+
+proc local_url { } {
+    global binfile outputdir db debugdir
+
+    # Find an unused port
+    set port 7999
+    set found 0
+    while { ! $found } {
+	incr port
+	if { $port == 65536 } {
+	    fail "no available ports"
+	    return -1
+	}
+
+	spawn debuginfod -vvvv -d $db -p $port -F $debugdir
+	expect {
+	    "started http server on IPv4 IPv6 port=$port" { set found 1 }
+	    "failed to bind to port" { kill_wait_spawned_process $spawn_id }
+	    timeout {
+		fail "find port timeout"
+		return -1
+	    }
+	}
+    }
+
+    set metrics [list "ready 1" \
+		     "thread_work_total{role=\"traverse\"} 1" \
+		     "thread_work_pending{role=\"scan\"} 0" \
+		     "thread_busy{role=\"scan\"} 0"]
+
+    # Check server metrics to confirm init has completed.
+    foreach m $metrics {
+	set timelim 20
+	while { $timelim != 0 } {
+	    sleep 0.5
+	    catch {exec curl -s http://127.0.0.1:$port/metrics} got
+
+	    if { [regexp $m $got] } {
+		break
+	    }
+
+	    incr timelim -1
+	}
+
+	if { $timelim == 0 } {
+	    fail "server init timeout"
+	    return -1
+	}
+    }
+
+    # Point the client to the server
+    setenv DEBUGINFOD_URLS http://127.0.0.1:$port
+
+    # gdb should now find the symbol and source files
+    clean_restart $binfile
+    gdb_test_no_output "set substitute-path $outputdir /dev/null" \
+	"set substitute-path"
+    gdb_test "br main" "Breakpoint 1 at.*file.*"
+    gdb_test "l" ".*This program is distributed in the hope.*"
+
+    # gdb should now find the debugaltlink file
+    clean_restart
+    gdb_test "file ${binfile}_alt.o" \
+	".*Reading symbols from ${binfile}_alt.o\.\.\.*" \
+	"file [file tail ${binfile}_alt.o]"
+}
+
+set envlist \
+    [list \
+	 env(DEBUGINFOD_URLS) \
+	 env(DEBUGINFOD_TIMEOUT) \
+	 env(DEBUGINFOD_CACHE_PATH)]
+
+save_vars $envlist {
+    setenv DEBUGINFOD_TIMEOUT 30
+    setenv DEBUGINFOD_CACHE_PATH $cache
+
+    with_test_prefix no_url no_url
+
+    with_test_prefix local_url local_url
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.debuginfod/main.c ./gdb/testsuite/gdb.debuginfod/main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.debuginfod/main.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.debuginfod/main.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+/* Dummy main function.  */
+
+int
+main()
+{
+  asm ("main_label: .globl main_label");
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/am33.exp ./gdb/testsuite/gdb.disasm/am33.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/am33.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/am33.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/disassembler-options.exp ./gdb/testsuite/gdb.disasm/disassembler-options.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/disassembler-options.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/disassembler-options.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/h8300s.exp ./gdb/testsuite/gdb.disasm/h8300s.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/h8300s.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/h8300s.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2020 Free Software Foundation, Inc.
+# Copyright (C) 2000-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/hppa.exp ./gdb/testsuite/gdb.disasm/hppa.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/hppa.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/hppa.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/mn10300.exp ./gdb/testsuite/gdb.disasm/mn10300.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/mn10300.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/mn10300.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/sh3.exp ./gdb/testsuite/gdb.disasm/sh3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/sh3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/sh3.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t01_mov.exp ./gdb/testsuite/gdb.disasm/t01_mov.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t01_mov.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t01_mov.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t02_mova.exp ./gdb/testsuite/gdb.disasm/t02_mova.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t02_mova.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t02_mova.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t03_add.exp ./gdb/testsuite/gdb.disasm/t03_add.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t03_add.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t03_add.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t04_sub.exp ./gdb/testsuite/gdb.disasm/t04_sub.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t04_sub.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t04_sub.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t05_cmp.exp ./gdb/testsuite/gdb.disasm/t05_cmp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t05_cmp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t05_cmp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t06_ari2.exp ./gdb/testsuite/gdb.disasm/t06_ari2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t06_ari2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t06_ari2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t07_ari3.exp ./gdb/testsuite/gdb.disasm/t07_ari3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t07_ari3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t07_ari3.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t08_or.exp ./gdb/testsuite/gdb.disasm/t08_or.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t08_or.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t08_or.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t09_xor.exp ./gdb/testsuite/gdb.disasm/t09_xor.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t09_xor.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t09_xor.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t10_and.exp ./gdb/testsuite/gdb.disasm/t10_and.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t10_and.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t10_and.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t11_logs.exp ./gdb/testsuite/gdb.disasm/t11_logs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t11_logs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t11_logs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t12_bit.exp ./gdb/testsuite/gdb.disasm/t12_bit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t12_bit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t12_bit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t13_otr.exp ./gdb/testsuite/gdb.disasm/t13_otr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.disasm/t13_otr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.disasm/t13_otr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/circular.c ./gdb/testsuite/gdb.dlang/circular.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/circular.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dlang/circular.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2016-2020 Free Software Foundation, Inc.
+/* Copyright 2016-2021 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
@@ -13,17 +13,14 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-asm ("circular1_found_start: .globl circular1_found_start");
-
 /* DWARF will describe this function as being inside a D module.  */
 
 void
 found (void)
 {
+  asm ("found_label: .globl found_label");
 }
 
-asm ("circular1_found_end: .globl circular1_found_end");
-
 int
 main (void)
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/circular.exp ./gdb/testsuite/gdb.dlang/circular.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/circular.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dlang/circular.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
@@ -37,8 +37,6 @@ Dwarf::assemble $asm_file {
 	    declare_labels circular1_label circular2_label circular3_label
 	    declare_labels circular4_label circular5_label
 
-	    extern circular1_found_start circular1_found_end
-
 	    circular1_label: module {
 		{name circular1}
 	    } {
@@ -56,10 +54,8 @@ Dwarf::assemble $asm_file {
 		}
 
 		subprogram {
-		    {name found}
 		    {external 1 flag_present}
-		    {low_pc circular1_found_start addr}
-		    {high_pc circular1_found_end addr}
+		    {MACRO_AT_func {found}}
 		}
 	    }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/debug-expr.exp ./gdb/testsuite/gdb.dlang/debug-expr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/debug-expr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dlang/debug-expr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/demangle.exp ./gdb/testsuite/gdb.dlang/demangle.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/demangle.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dlang/demangle.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
@@ -93,8 +93,6 @@ proc test_d_demangling {} {
     test_demangling "_D8demangle4testFNhG2dZv" "demangle.test(__vector(double\[2\]))"
     test_demangling "_D8demangle4testFNhG4dZv" "demangle.test(__vector(double\[4\]))"
 
-    test_demangling "_D8demangle4testFI5identZv" "demangle.test(ident)"
-    test_demangling "_D8demangle4testFI5ident4testZv" "demangle.test(ident.test)"
     test_demangling "_D8demangle4testFC5classZv" "demangle.test(class)"
     test_demangling "_D8demangle4testFC5class4testZv" "demangle.test(class.test)"
     test_demangling "_D8demangle4testFS6structZv" "demangle.test(struct)"
@@ -104,6 +102,8 @@ proc test_d_demangling {} {
     test_demangling "_D8demangle4testFT7typedefZv" "demangle.test(typedef)"
     test_demangling "_D8demangle4testFT7typedef4testZv" "demangle.test(typedef.test)"
 
+    test_demangling "_D8demangle4testFIaZv" "demangle.test(in char)"
+    test_demangling "_D8demangle4testFIKaZv" "demangle.test(in ref char)"
     test_demangling "_D8demangle4testFJaZv" "demangle.test(out char)"
     test_demangling "_D8demangle4testFKaZv" "demangle.test(ref char)"
     test_demangling "_D8demangle4testFLaZv" "demangle.test(lazy char)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/expression.exp ./gdb/testsuite/gdb.dlang/expression.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/expression.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dlang/expression.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/primitive-types.exp ./gdb/testsuite/gdb.dlang/primitive-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/primitive-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dlang/primitive-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/properties.exp ./gdb/testsuite/gdb.dlang/properties.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/properties.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dlang/properties.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/watch-loc.c ./gdb/testsuite/gdb.dlang/watch-loc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/watch-loc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dlang/watch-loc.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2017-2020 Free Software Foundation, Inc.
+/* Copyright 2017-2021 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
@@ -28,6 +28,8 @@ int _Dmain (void)
   return 0;
 }
 
+asm ("_Dmain_end: .globl _Dmain_end");
+
 int
 main (void)
 {
@@ -51,7 +53,7 @@ asm (
 "	.2byte	0 \n"	// Pad to 16 byte boundary
 "	.2byte	0 \n"
 "	.4byte	_Dmain \n"	// Address
-"	.4byte	0x1000 \n"	// Length
+"	.4byte	_Dmain_end - _Dmain \n"	// Length
 "	.4byte	0 \n"
 "	.4byte	0 \n"
 ".Laranges_end: \n"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/watch-loc.exp ./gdb/testsuite/gdb.dlang/watch-loc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dlang/watch-loc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dlang/watch-loc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 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
@@ -30,8 +30,6 @@ standard_testfile watch-loc.c watch-loc-
 # Make some DWARF for the test.
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
-
     cu {} {
 	compile_unit {
 	    {language @DW_LANG_D}
@@ -56,7 +54,7 @@ Dwarf::assemble $asm_file {
 		}
 
 		subprogram {
-		    {MACRO_AT_func { "_Dmain" "${srcdir}/${subdir}/${srcfile}" }}
+		    {MACRO_AT_func { "_Dmain" }}
 		    {external 1 flag_present}
 		}
 	    }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/ada-linkage-name.c ./gdb/testsuite/gdb.dwarf2/ada-linkage-name.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/ada-linkage-name.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/ada-linkage-name.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/ada-linkage-name.exp ./gdb/testsuite/gdb.dwarf2/ada-linkage-name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/ada-linkage-name.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/ada-linkage-name.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -31,12 +31,6 @@ set asm_file [standard_output_file $srcf
 Dwarf::assemble $asm_file {
     global srcdir subdir srcfile
 
-    lassign [function_range first ${srcdir}/${subdir}/${srcfile}] \
-	first_start first_length
-
-    lassign [function_range second ${srcdir}/${subdir}/${srcfile}] \
-	second_start second_length
-
     cu {} {
 	DW_TAG_compile_unit {
                 {DW_AT_language @DW_LANG_Ada95}
@@ -55,16 +49,14 @@ Dwarf::assemble $asm_file {
             DW_TAG_subprogram {
                 {name system__namefirst}
 		{linkage_name __gnat_namefirst}
-                {low_pc $first_start addr}
-                {high_pc "$first_start + $first_length" addr}
+		{MACRO_AT_range {first}}
                 {type :$b_l}
 	    }
 	    # Here the linkage name comes first and the name second.
             DW_TAG_subprogram {
 		{linkage_name __gnat_namesecond}
                 {name system__namesecond}
-                {low_pc $second_start addr}
-                {high_pc "$second_start + $second_length" addr}
+                {MACRO_AT_range {second}}
                 {type :$b_l}
 	    }
 	}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/ada-valprint-error.c ./gdb/testsuite/gdb.dwarf2/ada-valprint-error.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/ada-valprint-error.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/ada-valprint-error.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2017-2020 Free Software Foundation, Inc.
+/* Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/ada-valprint-error.exp ./gdb/testsuite/gdb.dwarf2/ada-valprint-error.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/ada-valprint-error.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/ada-valprint-error.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/arr-stride.c ./gdb/testsuite/gdb.dwarf2/arr-stride.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/arr-stride.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/arr-stride.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/arr-stride.exp ./gdb/testsuite/gdb.dwarf2/arr-stride.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/arr-stride.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/arr-stride.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/arr-subrange.c ./gdb/testsuite/gdb.dwarf2/arr-subrange.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/arr-subrange.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/arr-subrange.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 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
@@ -16,5 +16,6 @@
 int
 main (void)
 {
+  asm ("main_label: .globl main_label");
   return 0;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/arr-subrange.exp ./gdb/testsuite/gdb.dwarf2/arr-subrange.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/arr-subrange.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/arr-subrange.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -29,8 +29,7 @@ Dwarf::assemble $asm_file {
                 {DW_AT_language @DW_LANG_Ada95}
                 {DW_AT_name     foo.adb}
                 {DW_AT_comp_dir /tmp}
-                {DW_AT_low_pc   0x1000 addr}
-                {DW_AT_high_pc  0x2000 addr}
+	        {MACRO_AT_range {main}}
             } {
 	    declare_labels boolean_label typedef_label array_label enum_label
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/atomic.c ./gdb/testsuite/gdb.dwarf2/atomic.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/atomic.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/atomic.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/atomic-type.exp ./gdb/testsuite/gdb.dwarf2/atomic-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/atomic-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/atomic-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -25,12 +25,6 @@ standard_testfile atomic.c atomic-type-d
 
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
-
-    set f_result [function_range f ${srcdir}/${subdir}/${srcfile}]
-    set f_start [lindex $f_result 0]
-    set f_length [lindex $f_result 1]
-
     cu {} {
 	DW_TAG_compile_unit {
                 {DW_AT_language @DW_LANG_C11}
@@ -73,9 +67,7 @@ Dwarf::assemble $asm_file {
             }
 
             DW_TAG_subprogram {
-                {name f}
-                {low_pc $f_start addr}
-                {high_pc "$f_start + $f_length" addr}
+                {MACRO_AT_func {f}}
                 {type :$i_l}
             } {
                 DW_TAG_formal_parameter {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/bad-regnum.c ./gdb/testsuite/gdb.dwarf2/bad-regnum.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/bad-regnum.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/bad-regnum.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/bad-regnum.exp ./gdb/testsuite/gdb.dwarf2/bad-regnum.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/bad-regnum.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/bad-regnum.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp ./gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -29,8 +29,6 @@ set executable ${testfile}
 # Make some DWARF for the test.
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
-
     cu { version 3 addr_size 4 } {
 	compile_unit {} {
 	    declare_labels struct_label var_label int_label
@@ -59,7 +57,7 @@ Dwarf::assemble $asm_file {
 	    }
 
 	    subprogram {
-		{MACRO_AT_func { main ${srcdir}/${subdir}/${srcfile} }}
+		{MACRO_AT_func { main }}
 		{type :$int_label}
 		{external 1 flag}
 	    } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/break-inline-psymtab-2.c ./gdb/testsuite/gdb.dwarf2/break-inline-psymtab-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/break-inline-psymtab-2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/break-inline-psymtab-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,33 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+extern int foo (void);
+
+int a;
+
+static inline int __attribute__((always_inline))
+bar (void)
+{
+  a = 2;
+  return 0;
+}
+
+int
+foo (void)
+{
+  return bar ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/break-inline-psymtab.c ./gdb/testsuite/gdb.dwarf2/break-inline-psymtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/break-inline-psymtab.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/break-inline-psymtab.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+extern int foo (void);
+
+int
+main (void)
+{
+  return foo ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/break-inline-psymtab.exp ./gdb/testsuite/gdb.dwarf2/break-inline-psymtab.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/break-inline-psymtab.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/break-inline-psymtab.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,35 @@
+# Copyright 2019-2021 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/>.
+
+standard_testfile break-inline-psymtab.c break-inline-psymtab-2.c
+
+set sources [list $srcfile $srcfile2]
+if { [prepare_for_testing "failed to prepare" ${testfile} $sources] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+get_compiler_info
+get_debug_format
+if { [skip_inline_frame_tests] } {
+    return -1
+}
+
+# Set a break-point in inline function bar, in a CU for which the partial
+# symtab has not been expanded.
+gdb_breakpoint "bar" message
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/callframecfa.exp ./gdb/testsuite/gdb.dwarf2/callframecfa.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/callframecfa.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/callframecfa.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/callframecfa.S ./gdb/testsuite/gdb.dwarf2/callframecfa.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/callframecfa.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/callframecfa.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names-2.c ./gdb/testsuite/gdb.dwarf2/clang-debug-names-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names-2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/clang-debug-names-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+extern int foo (void);
+
+int
+main (void)
+{
+  asm ("main_label: .globl main_label");
+  int sum, a, b;
+  sum = a + b + foo ();
+  return sum;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names-2.exp ./gdb/testsuite/gdb.dwarf2/clang-debug-names-2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names-2.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/clang-debug-names-2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,45 @@
+# Copyright 2020-2021 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/>.
+
+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 clang-debug-names-2.c clang-debug-names-debug-2.S \
+    clang-debug-names-2-foo.c
+
+lassign \
+    [function_range main \
+	 "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile3}"] \
+    main_start main_length
+
+set asm_file [standard_output_file $srcfile2]
+source $srcdir/$subdir/clang-debug-names.exp.tcl
+
+if { [build_executable_from_specs "failed to prepare" ${testfile} "" \
+	  $srcfile "nodebug" $asm_file "nodebug" $srcfile3 "debug"] } {
+    return -1
+}
+clean_restart $binfile
+
+set cmd "ptype main"
+set pass_re \
+    [multi_line \
+	 $cmd \
+	 "type = int \\(\\)"]
+gdb_test $cmd $pass_re
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names-2-foo.c ./gdb/testsuite/gdb.dwarf2/clang-debug-names-2-foo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names-2-foo.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/clang-debug-names-2-foo.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+foo (void)
+{
+  return 3;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names.c ./gdb/testsuite/gdb.dwarf2/clang-debug-names.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/clang-debug-names.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main (void)
+{
+  asm ("main_label: .globl main_label");
+  int sum, a, b;
+  sum = a + b;
+  return sum;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names.exp ./gdb/testsuite/gdb.dwarf2/clang-debug-names.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/clang-debug-names.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,41 @@
+# Copyright 2020-2021 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/>.
+
+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 clang-debug-names.c clang-debug-names-debug.S
+
+lassign [function_range main ${srcdir}/${subdir}/${srcfile}] \
+    main_start main_length
+
+set asm_file [standard_output_file $srcfile2]
+source $srcdir/$subdir/clang-debug-names.exp.tcl
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+set cmd "ptype main"
+set pass_re \
+    [multi_line \
+	 $cmd \
+	 "type = int \\(\\)"]
+gdb_test $cmd $pass_re
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names.exp.tcl ./gdb/testsuite/gdb.dwarf2/clang-debug-names.exp.tcl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clang-debug-names.exp.tcl	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/clang-debug-names.exp.tcl	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,121 @@
+# Copyright 2020-2021 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/>.
+
+# Set up the DWARF for the test.
+
+set main_str_label [Dwarf::_compute_label info_string3]
+set int_str_label [Dwarf::_compute_label info_string4]
+set main_die_label [Dwarf::_compute_label main_die_label]
+set int_die_label [Dwarf::_compute_label int_die_label]
+
+set debug_str \
+    [list \
+         "$main_str_label:" \
+         "  .asciz \"main\"" \
+         "$int_str_label:" \
+         "  .asciz \"int\""]
+
+set debug_names \
+    [list \
+         "  .4byte  .Ldebug_names_end - .Ldebug_names_start" \
+         ".Ldebug_names_start:" \
+         "  .short 5                      # Header: version" \
+         "  .short 0                      # Header: padding" \
+         "  .long 1                       # Header: compilation unit count" \
+         "  .long 0                       # Header: local type unit count" \
+         "  .long 0                       # Header: foreign type unit count" \
+         "  .long 2                       # Header: bucket count" \
+         "  .long 2                       # Header: name count" \
+         "  .long .Lnames_abbrev_end0-.Lnames_abbrev_start0 " \
+         "                                # Header: abbreviation table size" \
+         "  .long 8                       # Header: augmentation string size" \
+         "  .ascii \"LLVM0700\"    # Header: augmentation string" \
+         "  .long .Lcu1_begin             # Compilation unit 0" \
+         "  .long 1                       # Bucket 0" \
+         "  .long 0                       # Bucket 1" \
+         "  .long 193495088               # Hash in Bucket 0" \
+         "  .long 2090499946              # Hash in Bucket 0" \
+         "  .long $int_str_label          # String in Bucket 0: int" \
+         "  .long $main_str_label         # String in Bucket 0: main" \
+         "  .long .Lnames1-.Lnames_entries0 # Offset in Bucket 0" \
+         "  .long .Lnames0-.Lnames_entries0 # Offset in Bucket 0" \
+         ".Lnames_abbrev_start0:" \
+         "  .byte 46                      # Abbrev code" \
+         "  .byte 46                      # DW_TAG_subprogram" \
+         "  .byte 3                       # DW_IDX_die_offset" \
+         "  .byte 19                      # DW_FORM_ref4" \
+         "  .byte 0                       # End of abbrev" \
+         "  .byte 0                       # End of abbrev" \
+         "  .byte 36                      # Abbrev code" \
+         "  .byte 36                      # DW_TAG_base_type" \
+         "  .byte 3                       # DW_IDX_die_offset" \
+         "  .byte 19                      # DW_FORM_ref4" \
+         "  .byte 0                       # End of abbrev" \
+         "  .byte 0                       # End of abbrev" \
+         "  .byte 0                       # End of abbrev list" \
+         ".Lnames_abbrev_end0:" \
+         ".Lnames_entries0:" \
+         ".Lnames1:" \
+         "  .byte 36                      # Abbreviation code" \
+         "  .long $int_die_label - .Lcu1_begin # DW_IDX_die_offset" \
+         "  .long 0                       # End of list: int" \
+         ".Lnames0:" \
+         "  .byte 46                      # Abbreviation code" \
+         "  .long $main_die_label - .Lcu1_begin # DW_IDX_die_offset" \
+         "  .long 0                       # End of list: main" \
+         "  .p2align 2" \
+         ".Ldebug_names_end:"]
+
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile
+    global main_start main_length
+
+    cu {} {
+	DW_TAG_compile_unit {
+                {DW_AT_language @DW_LANG_C}
+                {DW_AT_name     clang-debug-names.c}
+                {DW_AT_comp_dir /tmp}
+
+        } {
+	    global int_die_label
+	    global main_die_label
+
+	    define_label $int_die_label
+	    base_type {
+		{name "int"}
+		{encoding @DW_ATE_signed}
+		{byte_size 4 DW_FORM_sdata}
+	    }
+
+	    define_label $main_die_label
+	    subprogram {
+		{name main}
+		{type :$int_die_label}
+		{low_pc $main_start addr}
+		{high_pc "$main_start + $main_length" addr}
+	    }
+	}
+    }
+
+    _defer_output .debug_str {
+	global debug_str
+	_emit [join $debug_str "\n"]
+    }
+
+    _defer_output .debug_names {
+	global debug_names
+	_emit [join $debug_names "\n"]
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clztest.exp ./gdb/testsuite/gdb.dwarf2/clztest.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clztest.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/clztest.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -28,7 +28,8 @@ if {![istarget x86_64-*] || ![is_lp64_ta
     return 0
 }
 
-if { [prepare_for_testing "failed to prepare" "${test}" ${test}.S {nodebug additional_flags=-nostdlib}] } {
+if { [prepare_for_testing "failed to prepare" "${test}" ${test}.S \
+      {nodebug nopie additional_flags=-nostdlib}] } {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clztest.S ./gdb/testsuite/gdb.dwarf2/clztest.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/clztest.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/clztest.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/comp-unit-lang.c ./gdb/testsuite/gdb.dwarf2/comp-unit-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/comp-unit-lang.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/comp-unit-lang.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
@@ -17,15 +17,13 @@
 
 asm (".section	\".text\"");
 asm (".balign 8");
-asm ("func_start: .globl func_start");
 
 static void
 func (void)
 {
+  asm ("func_label: .globl func_label");
 }
 
-asm ("func_end: .globl func_end");
-
 int
 main (void)
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/comp-unit-lang.exp ./gdb/testsuite/gdb.dwarf2/comp-unit-lang.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/comp-unit-lang.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/comp-unit-lang.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -42,19 +42,14 @@ proc do_test {cu_lang gdb_lang} {
 	# Creating a CU with 4-byte addresses lets this test link on
 	# both 32- and 64-bit machines.
 	cu { addr_size 4 } {
-	    extern func_start func_end
-
 	    compile_unit {
 		{name file1.txt}
 		{language @$cu_lang}
-		{low_pc func_start addr}
-		{high_pc func_end addr}
+		{MACRO_AT_range {func}}
 	    } {
 		subprogram {
 		    {external 1 flag}
-		    {name func}
-		    {low_pc func_start addr}
-		    {high_pc func_end addr}
+		    {MACRO_AT_func {func}}
 		} {
 		}
 	    }
@@ -73,8 +68,14 @@ proc do_test {cu_lang gdb_lang} {
     gdb_test "show language" "\"auto; currently $gdb_lang\".*"
 }
 
+proc do_test_with_prefix {cu_lang gdb_lang} {
+    with_test_prefix $gdb_lang {
+	do_test $cu_lang $gdb_lang
+    }
+}
+
 # Some paths in the debugger fall back to C.  Check C++ as well to
 # make sure the test doesn't happen to work because of such a
 # fallback.
-do_test DW_LANG_C "c"
-do_test DW_LANG_C_plus_plus "c\\+\\+"
+do_test_with_prefix DW_LANG_C "c"
+do_test_with_prefix DW_LANG_C_plus_plus "c\\+\\+"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/corrupt.c ./gdb/testsuite/gdb.dwarf2/corrupt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/corrupt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/corrupt.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/corrupt.exp ./gdb/testsuite/gdb.dwarf2/corrupt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/corrupt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/corrupt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/count.exp ./gdb/testsuite/gdb.dwarf2/count.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/count.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/count.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/cpp-linkage-name.c ./gdb/testsuite/gdb.dwarf2/cpp-linkage-name.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/cpp-linkage-name.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/cpp-linkage-name.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,29 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+volatile struct
+{
+  int x;
+  int y;
+} global_var;
+
+int
+main (void)
+{
+  asm ("main_label: .globl main_label");
+  return global_var.x + global_var.y;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/cpp-linkage-name.exp ./gdb/testsuite/gdb.dwarf2/cpp-linkage-name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/cpp-linkage-name.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/cpp-linkage-name.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,89 @@
+# Copyright 2020-2021 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/>.
+
+# Some compilers give anonymous structures a linkage name, and that
+# linkage name doesn't demangle (within GDB calling gdb_demangle
+# return NULL).  At one point this caused GDB to crash due to
+# dereferencing a NULL pointer.
+
+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 cpp-linkage-name.c cpp-linkage-name-debug.S
+
+# Set up the DWARF for the test.
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    cu {} {
+	DW_TAG_compile_unit {
+	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    {DW_AT_name     ada-linkage-name.c}
+	    {DW_AT_comp_dir /tmp}
+
+	} {
+	    declare_labels a_l b_l
+
+	    a_l: DW_TAG_base_type {
+		{DW_AT_byte_size 4 DW_FORM_sdata}
+		{DW_AT_encoding  @DW_ATE_signed}
+		{DW_AT_name      int}
+	    }
+
+	    # To expose the bug that existed at one point this
+	    # structure must have a linkage name, but no name, and the
+	    # linkage name is something that doesn't demangle.
+	    b_l: DW_TAG_structure_type {
+		{DW_AT_byte_size 8 DW_FORM_sdata}
+		{DW_AT_encoding  @DW_ATE_signed}
+		{DW_AT_linkage_name <anon>}
+	    } {
+		member {
+		    {name x}
+		    {type :$a_l}
+		    {data_member_location 0 data1}
+		}
+		member {
+		    {name y}
+		    {type :$a_l}
+		    {data_member_location 0 data1}
+		}
+	    }
+	    DW_TAG_subprogram {
+		{MACRO_AT_func {main}}
+		{type :$a_l}
+	    }
+	    DW_TAG_variable {
+		{type :$b_l}
+		{external 1 flag}
+		{DW_AT_name global_var}
+		{DW_AT_location {
+		    DW_OP_addr [gdb_target_symbol global_var]
+		} SPECIAL_expr}
+	    }
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+gdb_assert [runto_main] "run to main"
+gdb_test "p global_var" " = {x = 0, y = 0}"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/data-loc.c ./gdb/testsuite/gdb.dwarf2/data-loc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/data-loc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/data-loc.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/data-loc.exp ./gdb/testsuite/gdb.dwarf2/data-loc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/data-loc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/data-loc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -43,6 +43,7 @@ Dwarf::assemble $asm_file {
         } {
             declare_labels integer_label array_label array_ptr_label
 	    set int_size [get_sizeof "int" 4]
+	    set voidp_size [get_sizeof "void *" 96]
 
             integer_label: DW_TAG_base_type {
                 {DW_AT_byte_size $int_size DW_FORM_sdata}
@@ -63,16 +64,16 @@ Dwarf::assemble $asm_file {
 		    {DW_AT_type        :$integer_label}
                     {DW_AT_lower_bound {
                         DW_OP_push_object_address
-                        DW_OP_plus_uconst [get_sizeof "void *" 96]
+                        DW_OP_plus_uconst $voidp_size
                         DW_OP_deref
-                        DW_OP_deref_size [get_sizeof "int" 4]
+                        DW_OP_deref_size $int_size
                     } SPECIAL_expr}
                     {DW_AT_upper_bound {
                         DW_OP_push_object_address
-                        DW_OP_plus_uconst [get_sizeof "void *" 96]
+                        DW_OP_plus_uconst $voidp_size
                         DW_OP_deref
-                        DW_OP_plus_uconst [get_sizeof "int" 4]
-                        DW_OP_deref_size [get_sizeof "int" 4]
+                        DW_OP_plus_uconst $int_size
+                        DW_OP_deref_size $int_size
                     } SPECIAL_expr}
 		}
 	    }
@@ -226,9 +227,6 @@ gdb_test "print foo.five_tdef" \
 gdb_test "ptype foo.five_tdef" \
          "type = array \\(2 .. 6\\) of integer"
 
-gdb_test "ptype foo.array_type" \
-         "type = array \\(<>\\) of integer"
-
 gdb_test "print foo.five_tdef(2)" \
          " = 5"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dup-psym.exp ./gdb/testsuite/gdb.dwarf2/dup-psym.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dup-psym.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dup-psym.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2005-2020 Free Software Foundation, Inc.
+#   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dup-psym.S ./gdb/testsuite/gdb.dwarf2/dup-psym.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dup-psym.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dup-psym.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.c ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.exp ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-hello.c ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-hello.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-hello.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-hello.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-hello-dbg.S ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-hello-dbg.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-hello-dbg.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-hello-dbg.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-world.c ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-world.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-world.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-world.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-world-dbg.S ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-world-dbg.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-world-dbg.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-abs-hi-pc-world-dbg.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ada-ffffffff.exp ./gdb/testsuite/gdb.dwarf2/dw2-ada-ffffffff.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ada-ffffffff.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ada-ffffffff.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ada-ffffffff.S ./gdb/testsuite/gdb.dwarf2/dw2-ada-ffffffff.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ada-ffffffff.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ada-ffffffff.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-align.exp ./gdb/testsuite/gdb.dwarf2/dw2-align.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-align.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-align.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.exp ./gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.S ./gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-anon-mptr.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-anonymous-func.exp ./gdb/testsuite/gdb.dwarf2/dw2-anonymous-func.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-anonymous-func.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-anonymous-func.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-anonymous-func.S ./gdb/testsuite/gdb.dwarf2/dw2-anonymous-func.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-anonymous-func.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-anonymous-func.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.c ./gdb/testsuite/gdb.dwarf2/dw2-bad-elf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-bad-elf.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,21 @@
+/* Copyright 2019-2021 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/>.  */
+
+int
+main ()
+{
+  asm ("main_label: .globl main_label");
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp ./gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,183 @@
+# Copyright 2019-2021 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/>.
+
+# Checks for a bug where a baddly formed ELF would cause GDB to crash.
+# A section containing executable code, for which there was DWARF is
+# accidentally marked as non-alloctable, GDB becomes unhappy.
+#
+# This test creates some fake DWARF pointing at some symbols in a
+# non-allocatable section that is still marked as executable.  We then
+# start GDB and try to place a breakpoint on the symbol in the
+# non-allocatable section.
+#
+# It is not expected that the final debug experience really makes
+# sense, the symbol is in a non-allocatable section after all, but GDB
+# absolutely shouldn't crash.  All we try to do after placing the
+# breakpoint is check that GDB is still alive.
+
+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 dw2-bad-elf.c dw2-bad-elf-other.S dw2-bad-elf-dwarf.S
+
+# Make some DWARF for the test.
+set asm_file [standard_output_file $srcfile3]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile
+
+    declare_labels ranges_label_1 ranges_label_2 L1 L2
+
+    set main_result [function_range main ${srcdir}/${subdir}/${srcfile}]
+    set main_start [lindex $main_result 0]
+    set main_length [lindex $main_result 1]
+
+    set int_size [get_sizeof "int" 4]
+
+    cu {} {
+	DW_TAG_compile_unit {
+	    {DW_AT_language @DW_LANG_C}
+	    {DW_AT_name     dw2-bad-elf.c}
+	    {DW_AT_comp_dir ${srcdir}/${subdir}}
+	    {stmt_list $L1 DW_FORM_sec_offset}
+	    {ranges ${ranges_label_1} DW_FORM_sec_offset}
+	    {DW_AT_low_pc   0 addr}
+	} {
+	    declare_labels integer_label
+
+	    DW_TAG_subprogram {
+		{name main}
+		{low_pc $main_start addr}
+		{high_pc $main_length data8}
+		{DW_AT_type :$integer_label}
+		{DW_AT_decl_file 1 data1}
+		{DW_AT_decl_line 10 data1}
+	    }
+
+	    integer_label: DW_TAG_base_type {
+		{DW_AT_byte_size $int_size DW_FORM_sdata}
+		{DW_AT_encoding  @DW_ATE_signed}
+		{DW_AT_name      integer}
+	    }
+	}
+    }
+
+    cu {} {
+	DW_TAG_compile_unit {
+	    {DW_AT_language @DW_LANG_C}
+	    {DW_AT_name     dw2-bad-elf-other.c}
+	    {DW_AT_comp_dir ${srcdir}/${subdir}}
+	    {stmt_list $L2 DW_FORM_sec_offset}
+	    {ranges ${ranges_label_2} DW_FORM_sec_offset}
+	    {DW_AT_low_pc   0 addr}
+	} {
+	    declare_labels integer_label
+
+	    DW_TAG_subprogram {
+		{name some_func}
+		{low_pc some_func addr}
+		{high_pc some_func_end addr}
+		{DW_AT_type :$integer_label}
+		{DW_AT_decl_file 2 data1}
+		{DW_AT_decl_line 5 data1}
+	    }
+
+	    integer_label: DW_TAG_base_type {
+		{DW_AT_byte_size $int_size DW_FORM_sdata}
+		{DW_AT_encoding  @DW_ATE_signed}
+		{DW_AT_name      integer}
+	    }
+	}
+    }
+
+    ranges {is_64 [is_64_target]} {
+	ranges_label_1: sequence {
+	    {base [lindex $main_result 0]}
+	    {range 0 [lindex $main_result 1]}
+	}
+	ranges_label_2: sequence {
+	    {base some_func}
+	    {range 0 64}
+	}
+    }
+
+    lines {version 2} L1 {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile" 1
+
+	# Line data doens't need to be correct, just present.
+	program {
+	    {DW_LNE_set_address [lindex $main_result 0]}
+	    {DW_LNS_advance_line 10}
+	    {DW_LNS_copy}
+	    {DW_LNS_advance_pc [lindex $main_result 1]}
+	    {DW_LNS_advance_line 19}
+	    {DW_LNS_copy}
+	    {DW_LNE_end_sequence}
+	}
+    }
+
+    lines {version 2} L2 {
+	include_dir "${srcdir}/${subdir}"
+	file_name "dw2-bad-elf-other.c" 1
+
+	# Line data doens't need to be correct, just present.
+	program {
+	    {DW_LNE_set_address some_func}
+	    {DW_LNS_advance_line 5}
+	    {DW_LNS_copy}
+	    {DW_LNS_advance_pc 64}
+	    {DW_LNS_advance_line 8}
+	    {DW_LNS_copy}
+	    {DW_LNE_end_sequence}
+	}
+    }
+}
+
+if { [build_executable ${testfile}.exp ${testfile} \
+	  [list $srcfile $srcfile2 $asm_file] {nodebug}] } {
+    return -1
+}
+
+# Attempt to place a breakpoint on 'some_func', then check GDB is
+# still alive.  This test can optionally set a breakpoint on 'main'
+# first (based on GOTO_MAIN), the original bug behaved differently
+# when there was already a breakpoint set.
+proc run_test { goto_main } {
+    global binfile decimal hex
+
+    clean_restart ${binfile}
+
+    if { $goto_main } {
+	if ![runto_main] {
+	    return -1
+	}
+    }
+
+    # Place a breakpoint.
+    gdb_test "break some_func" \
+	"Breakpoint $decimal at $hex: file .*dw2-bad-elf-other\\.c, line 6\\."
+
+    # Check GDB is still alive.
+    gdb_test "echo hello\\n" "hello"
+}
+
+# Run the tests.
+foreach_with_prefix goto_main { 0 1 } {
+    run_test $goto_main
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-elf-other.S ./gdb/testsuite/gdb.dwarf2/dw2-bad-elf-other.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-elf-other.S	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-bad-elf-other.S	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,29 @@
+/* Copyright 2019-2021 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/>.  */
+
+	.section ".other", "x"
+	.global some_func, some_func_end
+	.type   some_func, @function
+	nop
+	nop
+	nop
+	nop
+some_func:
+	.rept 64
+	.byte 0
+	.endr
+	.size some_func,.-some_func
+some_func_end:
+	nop
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.c ./gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp ./gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -26,19 +26,9 @@ standard_testfile dw2-bad-mips-linkage-n
 
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
-
-    set f_result [function_range f ${srcdir}/${subdir}/${srcfile}]
-    set f_start [lindex $f_result 0]
-    set f_length [lindex $f_result 1]
-
-    set g_result [function_range g ${srcdir}/${subdir}/${srcfile}]
-    set g_start [lindex $g_result 0]
-    set g_length [lindex $g_result 1]
-
     cu {} {
 	DW_TAG_compile_unit {
-                {DW_AT_language @DW_LANG_C}
+                {DW_AT_language @DW_LANG_C_plus_plus}
                 {DW_AT_name     dw2-bad-mips-linkage-name.c}
                 {DW_AT_comp_dir /tmp}
 
@@ -51,16 +41,12 @@ Dwarf::assemble $asm_file {
 		{DW_AT_name      bool}
 	    }
             DW_TAG_subprogram {
-                {name f}
-                {low_pc $f_start addr}
-                {high_pc "$f_start + $f_length" addr}
+                {MACRO_AT_func {f}}
                 {type :$b_l}
 		{DW_AT_MIPS_linkage_name _Z1fv}
 	    }
             DW_TAG_subprogram {
-                {name g}
-                {low_pc $g_start addr}
-                {high_pc "$g_start + $g_length" addr}
+                {MACRO_AT_func {g}}
                 {type :$b_l}
 		{DW_AT_MIPS_linkage_name 42 DW_FORM_data1}
 	    }
@@ -78,5 +64,5 @@ if { [prepare_for_testing "failed to pre
 # much matter what we test here, so long as we do something to make
 # sure that the DWARF is read.
 
-gdb_test "ptype f" " = bool \\(\\)"
-gdb_test "ptype g" " = bool \\(\\)"
+gdb_test "ptype f" " = bool \\(void\\)"
+gdb_test "ptype g" " = bool \\(void\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-parameter-type.exp ./gdb/testsuite/gdb.dwarf2/dw2-bad-parameter-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-parameter-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-bad-parameter-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -31,7 +31,10 @@ clean_restart $executable
 
 # The first access (as we do not use -readnow) prints some:
 # Dwarf Error: Cannot find DIE at 0x0 referenced from DIE at 0x29 [in module ...]
-gdb_test "ptype f"
-
-gdb_test "ptype f"
+with_test_prefix "first" {
+    gdb_test "ptype f"
+}
+with_test_prefix "second" {
+    gdb_test "ptype f"
+}
 gdb_test "p 5" " = 5" "is alive"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-parameter-type.S ./gdb/testsuite/gdb.dwarf2/dw2-bad-parameter-type.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-parameter-type.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-bad-parameter-type.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.c ./gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.exp ./gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-bad-unresolved.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-basic.exp ./gdb/testsuite/gdb.dwarf2/dw2-basic.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-basic.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-basic.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-basic.S ./gdb/testsuite/gdb.dwarf2/dw2-basic.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-basic.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-basic.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-canonicalize-type.exp ./gdb/testsuite/gdb.dwarf2/dw2-canonicalize-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-canonicalize-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-canonicalize-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-canonicalize-type.S ./gdb/testsuite/gdb.dwarf2/dw2-canonicalize-type.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-canonicalize-type.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-canonicalize-type.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c ./gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S ./gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp ./gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-common-block.exp ./gdb/testsuite/gdb.dwarf2/dw2-common-block.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-common-block.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-common-block.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -33,7 +33,7 @@ if {[skip_fortran_tests]} {
 standard_testfile .S
 
 if { [prepare_for_testing "failed to prepare" "${testfile}" $srcfile \
-	  {nodebug f90}] } {
+      {nodebug nopie f90}] } {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-common-block.S ./gdb/testsuite/gdb.dwarf2/dw2-common-block.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-common-block.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-common-block.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.exp ./gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.S ./gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-compdir-oldgcc.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-compressed.exp ./gdb/testsuite/gdb.dwarf2/dw2-compressed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-compressed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-compressed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-compressed.S ./gdb/testsuite/gdb.dwarf2/dw2-compressed.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-compressed.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-compressed.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-const.exp ./gdb/testsuite/gdb.dwarf2/dw2-const.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-const.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-const.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-const.S ./gdb/testsuite/gdb.dwarf2/dw2-const.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-const.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-const.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.exp ./gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c ./gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.S ./gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-cp-infcall-ref-static.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-cu-size.exp ./gdb/testsuite/gdb.dwarf2/dw2-cu-size.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-cu-size.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-cu-size.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-cu-size.S ./gdb/testsuite/gdb.dwarf2/dw2-cu-size.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-cu-size.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-cu-size.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.c ./gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.exp ./gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -333,6 +333,12 @@ lappend opts "additional_flags=-DFDIR=\"
 # CU's DW_AT_name and .debug_line's filename.
 lappend opts "additional_flags=-DFILE=\"${srctmpfile}\""
 
+# Clang's integrated assembler doesn't support .ascii directives
+# with multiple string literals.
+if { [test_compiler_info clang*] } {
+    lappend opts "additional_flags=-fno-integrated-as"
+}
+
 if { [gdb_compile "${asmsrcfile} ${srcdir}/${subdir}/$srcfile" "${binfile}" executable $opts] != "" } {
     untested "failed to compile"
     return -1
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-disasm-over-non-stmt.exp ./gdb/testsuite/gdb.dwarf2/dw2-disasm-over-non-stmt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-disasm-over-non-stmt.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-disasm-over-non-stmt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,206 @@
+# Copyright 2020-2021 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/>.
+
+# Create an example function that contains both addresses marked as
+# statements and addresses marked as non-statements, and then
+# disassemble the function.
+#
+# Of particular interest is how 'disassemble /m' handles the
+# non-statement addresses, we want to ensure that these addresses are
+# included in the disassembly output.  For completeness we test both
+# 'disassemble /m' and 'disassemble /s'.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    return 0
+}
+
+# Reuse many of the test source files from dw2-inline-header-1.exp.
+standard_testfile dw2-inline-header-lbls.c dw2-inline-header.S \
+    dw2-inline-header.c
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile srcfile3
+    declare_labels lines_label
+
+    get_func_info main
+
+    cu {} {
+	compile_unit {
+	    {producer "gcc" }
+	    {language @DW_LANG_C}
+	    {name ${srcfile3}}
+	    {low_pc 0 addr}
+	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	} {
+	    subprogram {
+		{external 1 flag}
+		{MACRO_AT_func {main}}
+	    }
+	}
+    }
+
+    lines {version 2 default_is_stmt 1} lines_label {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile3" 1
+
+	program {
+	    {DW_LNE_set_address $main_start}
+	    {DW_LNS_advance_line 15}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_2}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_3}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_4}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_5}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_6}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address $main_end}
+	    {DW_LNS_copy}
+	    {DW_LNE_end_sequence}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug} ] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+# Global lines array, maps lines numbers to the list of addresses
+# associated with that line in the debug output.
+array set lines {}
+
+# Look in the global LINES array and check that the disassembly for
+# line LINENUM includes the address of LABEL.
+proc check_disassembly_results { linenum label } {
+    global lines
+
+    set address [get_hexadecimal_valueof "&${label}" "__unknown__"]
+    set testname "check_disassembly_results $linenum $label"
+    if {![info exists lines($linenum)]} {
+	fail "$testname (no disassembly for $linenum)"
+	return
+    }
+
+    # Use a loop to compare the addresses as the addresses extracted
+    # from the disassembly output can be padded with zeros, while the
+    # address of the label will not be padded.
+    set addrs $lines($linenum)
+    foreach a $addrs {
+	if { $a == $address } {
+	    pass $testname
+	    return
+	}
+    }
+    fail $testname
+}
+
+foreach_with_prefix opt { m s } {
+    # Disassemble 'main' and split up the disassembly output.  We
+    # build an associative array, for each line number store the list
+    # of addresses that were part of its disassembly output.
+    #
+    # LINENUM is the line we are currently collecting the disassembly
+    # addresses for, and ADDRS is the list of addresses collected for
+    # this line.
+    set linenum -1
+    set addrs {}
+
+    # Clear the global associative array used to hold the results.
+    unset lines
+    array set lines {}
+
+    gdb_test_multiple "disassemble /${opt} main" "" {
+	-re "Dump of assembler code for function main:\r\n" {
+	    exp_continue
+	}
+
+	-re "^\[^\r\n\]+${srcfile3}:" {
+	    exp_continue
+	}
+
+	-re "^(\\d+)\\s+\[^\r\n\]+\r\n" {
+	    if { $linenum != -1 } {
+		set lines($linenum) $addrs
+		set addrs {}
+	    }
+	    set linenum $expect_out(1,string)
+	    exp_continue
+	}
+
+	-re "^(?:=>)?\\s*($hex)\\s*\[^\r\n\]+\r\n" {
+	    set address $expect_out(1,string)
+	    lappend addrs $address
+	    exp_continue
+	}
+
+	-re "^\\s*\r\n" {
+	    exp_continue
+	}
+
+	-re "^End of assembler dump\\.\r\n" {
+	    if { $linenum != -1 } {
+		set lines($linenum) $addrs
+		set linenum -1
+		set addrs {}
+	    }
+	    exp_continue
+	}
+
+	-re "^$gdb_prompt $" {
+	    # All done.
+	}
+    }
+
+    # Now check that each label we expect to be associated with each line
+    # shows up in the disassembly output.
+    check_disassembly_results 16 "line_label_1"
+    check_disassembly_results 16 "line_label_2"
+    check_disassembly_results 17 "line_label_3"
+    check_disassembly_results 17 "line_label_4"
+    check_disassembly_results 17 "line_label_5"
+    check_disassembly_results 18 "line_label_6"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dos-drive.exp ./gdb/testsuite/gdb.dwarf2/dw2-dos-drive.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dos-drive.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-dos-drive.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dos-drive.S ./gdb/testsuite/gdb.dwarf2/dw2-dos-drive.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dos-drive.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-dos-drive.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.exp ./gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.S ./gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-double-set-die-type.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dummy-cu.exp ./gdb/testsuite/gdb.dwarf2/dw2-dummy-cu.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dummy-cu.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-dummy-cu.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dummy-cu.S ./gdb/testsuite/gdb.dwarf2/dw2-dummy-cu.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dummy-cu.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-dummy-cu.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2015-2020 Free Software Foundation, Inc.
+/* Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dup-frame.c ./gdb/testsuite/gdb.dwarf2/dw2-dup-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dup-frame.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-dup-frame.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dup-frame.exp ./gdb/testsuite/gdb.dwarf2/dw2-dup-frame.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dup-frame.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-dup-frame.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -26,7 +26,7 @@ if {![istarget "x86_64-*-*"] || ![is_lp6
 
 standard_testfile .S
 
-if { [prepare_for_testing "failed to prepare" $testfile $srcfile {nodebug}] } {
+if { [prepare_for_testing "failed to prepare" $testfile $srcfile {nodebug nopie}] } {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dup-frame.S ./gdb/testsuite/gdb.dwarf2/dw2-dup-frame.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-dup-frame.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-dup-frame.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.exp ./gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.S ./gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-empty-namespace.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-empty-pc-range.exp ./gdb/testsuite/gdb.dwarf2/dw2-empty-pc-range.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-empty-pc-range.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-empty-pc-range.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-empty-pc-range.S ./gdb/testsuite/gdb.dwarf2/dw2-empty-pc-range.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-empty-pc-range.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-empty-pc-range.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-entry-value.exp ./gdb/testsuite/gdb.dwarf2/dw2-entry-value.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-entry-value.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-entry-value.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-entry-value-main.c ./gdb/testsuite/gdb.dwarf2/dw2-entry-value-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-entry-value-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-entry-value-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-entry-value.S ./gdb/testsuite/gdb.dwarf2/dw2-entry-value.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-entry-value.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-entry-value.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-error.c ./gdb/testsuite/gdb.dwarf2/dw2-error.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-error.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-error.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-error.exp ./gdb/testsuite/gdb.dwarf2/dw2-error.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-error.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-error.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -29,7 +29,7 @@ if { ![istarget "x86_64-*-*"] || ![is_lp
 
 # We can't use prepare_for_testing here because we need to check the
 # 'file' command's output.
-if {[build_executable $testfile.exp $testfile $srcfile {nodebug}]} {
+if {[build_executable $testfile.exp $testfile $srcfile {nodebug quiet}]} {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-error.S ./gdb/testsuite/gdb.dwarf2/dw2-error.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-error.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-error.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-filename.exp ./gdb/testsuite/gdb.dwarf2/dw2-filename.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-filename.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-filename.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-filename.S ./gdb/testsuite/gdb.dwarf2/dw2-filename.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-filename.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-filename.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.exp ./gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.S ./gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-icycle.c ./gdb/testsuite/gdb.dwarf2/dw2-icycle.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-icycle.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-icycle.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-icycle.exp ./gdb/testsuite/gdb.dwarf2/dw2-icycle.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-icycle.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-icycle.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-icycle.S ./gdb/testsuite/gdb.dwarf2/dw2-icycle.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-icycle.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-icycle.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.c ./gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.exp ./gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ifort-parameter.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -29,14 +29,11 @@ set asm_file [standard_output_file $srcf
 Dwarf::assemble $asm_file {
     declare_labels int_label
 
-    extern func_start func_end ptr
-    global srcdir subdir srcfile
-
     cu {} {
 	compile_unit {
 	    {name file1.txt}
 	    {language @DW_LANG_C}
-	    {MACRO_AT_range { func ${srcdir}/${subdir}/${srcfile} }}
+	    {MACRO_AT_range { func }}
 	} {
 	    int_label: base_type {
 		{name int}
@@ -46,7 +43,7 @@ Dwarf::assemble $asm_file {
 
 	    subprogram {
 		{external 1 flag}
-		{MACRO_AT_func { func ${srcdir}/${subdir}/${srcfile} }}
+		{MACRO_AT_func { func }}
 	    } {
 		formal_parameter {
 		    {name param}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inheritance.exp ./gdb/testsuite/gdb.dwarf2/dw2-inheritance.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inheritance.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inheritance.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inheritance.S ./gdb/testsuite/gdb.dwarf2/dw2-inheritance.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inheritance.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inheritance.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp ./gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-break.S ./gdb/testsuite/gdb.dwarf2/dw2-inline-break.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-break.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-break.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp ./gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,186 @@
+# Copyright 2020-2021 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/>.
+
+# Setup a line table where:
+#
+# |      |      |      |      | Inline | Inline |
+# | Addr | File | Line | Stmt | Rng A  | Rng B  |
+# |------|------|------|------|--------|--------|
+# | 1    | 1    | 16   | Y    |        |        |
+# | 2    | 1    | 17   | Y    |        |        |
+# | 3    | 2    | 21   | Y    | X      |        |
+# | 4    | 2    | 22   | Y    | X      |        |
+# | 4    | 1    | 18   | N    | X      |        |
+# | 5    | 2    | 23   | N    | X      | X      |
+# | 6    | 1    | 24   | Y    |        |        |
+# | 7    | 1    | END  | Y    |        |        |
+# |------|------|------|------|--------|--------|
+#
+# Places a brekpoint at file 2, line 22.  Previously GDB would discard
+# the line table entry for this line due to switching files for the
+# file 1, line 18 non-statement line.  After patching however, GDB now
+# discards the file 1, line 18 entry instead, and the breakpoint at
+# line 22 should succeed.
+#
+# The two inlined subroutine ranges 'A' and 'B' represent two possible
+# ways that a compiler might represent this siuatio in the DWARF.
+#
+# Range 'B' is something that has been seen in the wild using GCC 8.2.
+# In this case the compilers range information is clearly wrong, but
+# this shouldn't impact the main point of the test.
+#
+# Range 'A' is a hypothetical case of how the compiler might choose to
+# represent this range, this has never been seen in the wild, but is
+# an improved debug experiece over range 'B'.  However, if we ever run
+# in to the situation where GDB can support the range 'A' test, or
+# support some real DWARF seen in the wild, then the range 'A' case
+# should be dropped in favour of supporting real world cases.  This is
+# included here as it "just worked" once the range 'B' case was
+# working.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    return 0
+}
+
+# Prepare and run the test.
+proc do_test { start_label func_name tag } {
+    global srcfile srcfile2 srcfile3 srcfile4 testfile
+
+    standard_testfile dw2-inline-header-lbls.c dw2-inline-header-${tag}.S \
+	dw2-inline-header.c dw2-inline-header.h
+
+    set build_options {nodebug optimize=-O1}
+
+    set asm_file [standard_output_file $srcfile2]
+    Dwarf::assemble $asm_file {
+	global srcdir subdir srcfile srcfile3 srcfile4 testfile
+	upvar build_options build_options
+	upvar start_label start_label
+	declare_labels lines_label callee_subprog_label
+
+	get_func_info main $build_options
+
+	cu {} {
+	    compile_unit {
+		{producer "gcc" }
+		{language @DW_LANG_C}
+		{name ${srcfile3}}
+		{low_pc 0 addr}
+		{stmt_list ${lines_label} DW_FORM_sec_offset}
+	    } {
+		callee_subprog_label: subprogram {
+		    {external 1 flag}
+		    {name callee}
+		    {inline 3 data1}
+		}
+		subprogram {
+		    {external 1 flag}
+		    {name main}
+		    {low_pc $main_start addr}
+		    {high_pc "$main_start + $main_len" addr}
+		} {
+		    inlined_subroutine {
+			{abstract_origin %$callee_subprog_label}
+			{low_pc $start_label addr}
+			{high_pc line_label_6 addr}
+			{call_file 1 data1}
+			{call_line 18 data1}
+		    }
+		}
+	    }
+	}
+
+	lines {version 2 default_is_stmt 1} lines_label {
+	    include_dir "${srcdir}/${subdir}"
+	    file_name "$srcfile3" 1
+	    file_name "$srcfile4" 1
+
+	    program {
+		{DW_LNE_set_address line_label_1}
+		{DW_LNS_advance_line 15}
+		{DW_LNS_copy}
+
+		{DW_LNE_set_address line_label_2}
+		{DW_LNS_advance_line 1}
+		{DW_LNS_copy}
+
+		{DW_LNS_set_file 2}
+		{DW_LNE_set_address line_label_3}
+		{DW_LNS_advance_line 4}
+		{DW_LNS_copy}
+
+		{DW_LNE_set_address line_label_4}
+		{DW_LNS_advance_line 1}
+		{DW_LNS_copy}
+
+		{DW_LNS_advance_line -4}
+		{DW_LNS_set_file 1}
+		{DW_LNS_negate_stmt}
+		{DW_LNS_copy}
+
+		{DW_LNS_set_file 2}
+		{DW_LNE_set_address line_label_5}
+		{DW_LNS_advance_line 5}
+		{DW_LNS_copy}
+
+		{DW_LNS_negate_stmt}
+		{DW_LNS_set_file 1}
+		{DW_LNE_set_address line_label_6}
+		{DW_LNS_advance_line 1}
+		{DW_LNS_copy}
+
+		{DW_LNE_set_address line_label_7}
+		{DW_LNE_end_sequence}
+	    }
+	}
+    }
+
+    if { [prepare_for_testing "failed to prepare" ${testfile}-${tag} \
+	      [list $srcfile $asm_file] $build_options] } {
+	return -1
+    }
+
+    if ![runto_main] {
+	return -1
+    }
+
+    # Delete all breakpoints so that the output of "info breakpoints"
+    # below will only contain a single breakpoint.
+    delete_breakpoints
+
+    # Place a breakpoint within the function in the header file.
+    gdb_breakpoint "${srcfile4}:22"
+
+    # Check that the breakpoint was placed where we expected.  It should
+    # appear at the requested line.  When the bug in GDB was present the
+    # breakpoint would be placed on one of the following lines instead.
+    gdb_test "info breakpoints" \
+	".* in $func_name at \[^\r\n\]+${srcfile4}:22\\y.*" \
+	"info breakpoints, $tag"
+}
+
+do_test line_label_3 "callee" "range-a"
+do_test line_label_5 "main" "range-b"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp ./gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,189 @@
+# Copyright 2020-2021 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/>.
+
+# Setup a line table where:
+#
+# | Addr | File | Line | Stmt | Inline |
+# |------|------|------|------|--------|
+# | 1    | 1    | 16   | Y    |        |
+# | 2    | 1    | 17   | Y    |        |
+# | 3    | 2    | 21   | Y    | X      |
+# | 4    | 2    | 22   | Y    | X      |
+# | 4    | 1    | 18   | N    | X      |
+# | 5    | 1    | 19   | Y    |        |
+# | 6    | 1    | 20   | Y    |        |
+# | 7    | 1    | END  | Y    |        |
+# |------|------|------|------|--------|
+#
+#
+# Place the first brekpoint at file 2, line 22 and a second breakpoint
+# at file 1, line 19.  A third breakpoint is placed at file 1, line
+# 18, but as this line table entry will have been discarded[1] the
+# third breakpoint will actually be placed at the same location as the
+# second breakpoint.
+#
+# This test is designed to test GDB's internal behaviour with respect
+# to discarding particular line table entries.  GCC and DWARF are
+# starting to introduce the idea of line table views.  As the views
+# information becomes better supported within GDB it is likely that
+# this will become out of date.  This is fine, the test will have
+# served its purpose by that point and can be deleted.
+#
+# [1] The entry for file 1, line 18 is discarded because it is at the
+# same address as the previous entry, but the previous entry is-stmt,
+# while line 18 is a non-stmt.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    return 0
+}
+
+standard_testfile dw2-inline-header-lbls.c dw2-inline-header.S \
+    dw2-inline-header.c dw2-inline-header.h
+
+set build_options {nodebug optimize=-O1}
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile srcfile3 srcfile4
+    global build_options
+    declare_labels lines_label callee_subprog_label
+
+    get_func_info main $build_options
+
+    cu {} {
+	compile_unit {
+	    {producer "gcc" }
+	    {language @DW_LANG_C}
+	    {name ${srcfile3}}
+	    {low_pc 0 addr}
+	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	} {
+	    callee_subprog_label: subprogram {
+		{external 1 flag}
+		{name callee}
+		{inline 3 data1}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{name main}
+		{low_pc $main_start addr}
+		{high_pc "$main_start + $main_len" addr}
+	    } {
+		inlined_subroutine {
+		    {abstract_origin %$callee_subprog_label}
+		    {low_pc line_label_3 addr}
+		    {high_pc line_label_5 addr}
+		    {call_file 1 data1}
+		    {call_line 18 data1}
+		}
+	    }
+	}
+    }
+
+    lines {version 2 default_is_stmt 1} lines_label {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile3" 1
+	file_name "$srcfile4" 1
+
+	program {
+	    {DW_LNE_set_address line_label_1}
+	    {DW_LNS_advance_line 15}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_2}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_copy}
+
+	    {DW_LNS_set_file 2}
+	    {DW_LNE_set_address line_label_3}
+	    {DW_LNS_advance_line 4}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_4}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_copy}
+
+	    {DW_LNS_advance_line -4}
+	    {DW_LNS_set_file 1}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_5}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_6}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_7}
+	    {DW_LNE_end_sequence}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] $build_options] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+# Delete all breakpoints so that the output of "info breakpoints"
+# below will only contain a single breakpoint.
+delete_breakpoints
+
+# Place a breakpoint within the function in the header file.
+gdb_breakpoint "${srcfile4}:22"
+
+# Check that the breakpoint was placed where we expected.  It should
+# appear at the requested line.  When the bug in GDB was present the
+# breakpoint would be placed on one of the following lines instead.
+gdb_test "info breakpoints" \
+    ".* in callee at \[^\r\n\]+${srcfile4}:22\\y.*" \
+    "check for breakpoint at ${srcfile4}"
+
+# Delete all breakpoints so that the output of "info breakpoints"
+# below will only contain a single breakpoint.
+delete_breakpoints
+
+# Place a breakpoint within the function in the header file.
+gdb_breakpoint "${srcfile3}:19"
+
+# Check that the breakpoint was placed where we expected.  It should
+# appear at the requested line.  When the bug in GDB was present the
+# breakpoint would be placed on one of the following lines instead.
+gdb_test "info breakpoints" \
+    ".* in main at \[^\r\n\]+${srcfile3}:19\\y.*" \
+    "check for breakpoint at ${srcfile3}"
+
+# Line table entry for line 18 will have been discarded, so this
+# brekpoint will be at the same location as line 19.
+gdb_test "break ${srcfile3}:18" \
+    "Note: breakpoint $decimal also set at pc $hex.*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp ./gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,193 @@
+# Copyright 2020-2021 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/>.
+
+# Setup a line table where:
+#
+# | Addr | File | Line | Stmt | Inline |
+# |------|------|------|------|--------|
+# | 1    | 1    | 16   | Y    |        |
+# | 2    | 1    | 17   | Y    |        |
+# | 3    | 2    | 21   | Y    | X      |
+# | 4    | 2    | 22   | Y    | X      |
+# | 4    | 1    | 18   | N    |        |
+# | 5    | 1    | 19   | N    |        |
+# | 6    | 1    | 20   | Y    |        |
+# | 7    | 1    | END  | Y    |        |
+# |------|------|------|------|--------|
+#
+# Break at file 2, line 22, then single instruction step forward.  We
+# should pass through line 19 and then encounter line 20.
+#
+# Currently we don't expect GDB to see file 1, line 18, as this is a
+# non-stmt line in a different file at the same address as the
+# previous is-stmt line.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    return 0
+}
+
+standard_testfile dw2-inline-header-lbls.c dw2-inline-header.S \
+    dw2-inline-header.c dw2-inline-header.h
+
+set build_options {nodebug optimize=-O1}
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile srcfile3 srcfile4
+    global build_options
+    declare_labels lines_label callee_subprog_label
+
+    get_func_info main $build_options
+
+    cu {} {
+	compile_unit {
+	    {producer "gcc" }
+	    {language @DW_LANG_C}
+	    {name ${srcfile3}}
+	    {low_pc 0 addr}
+	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	} {
+	    callee_subprog_label: subprogram {
+		{external 1 flag}
+		{name callee}
+		{inline 3 data1}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{name main}
+		{low_pc $main_start addr}
+		{high_pc "$main_start + $main_len" addr}
+	    } {
+		inlined_subroutine {
+		    {abstract_origin %$callee_subprog_label}
+		    {low_pc line_label_3 addr}
+		    {high_pc line_label_5 addr}
+		    {call_file 1 data1}
+		    {call_line 18 data1}
+		}
+	    }
+	}
+    }
+
+    lines {version 2 default_is_stmt 1} lines_label {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile3" 1
+	file_name "$srcfile4" 1
+
+	program {
+	    {DW_LNE_set_address line_label_1}
+	    {DW_LNS_advance_line 15}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_2}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_copy}
+
+	    {DW_LNS_set_file 2}
+	    {DW_LNE_set_address line_label_3}
+	    {DW_LNS_advance_line 4}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_4}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_copy}
+
+	    {DW_LNS_advance_line -4}
+	    {DW_LNS_set_file 1}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_5}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_6}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_7}
+	    {DW_LNE_end_sequence}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] $build_options] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+# Delete all breakpoints so that the output of "info breakpoints"
+# below will only contain a single breakpoint.
+delete_breakpoints
+
+# Place a breakpoint within the function in the header file.
+gdb_breakpoint "${srcfile4}:22"
+
+# Check that the breakpoint was placed where we expected.  It should
+# appear at the requested line.  When the bug in GDB was present the
+# breakpoint would be placed on one of the following lines instead.
+gdb_test "info breakpoints" \
+    ".* in callee at \[^\r\n\]+${srcfile4}:22\\y.*"
+
+gdb_continue_to_breakpoint "${srcfile4}:22" \
+    ".* ${srcfile4} : 22 .*"
+
+# Now single instruction step forward.  Eventually we should hit
+# ${srcfile3}:20, but before we do we should hit the non-statement
+# line ${srcfile3}:19.
+#
+# We don't know how many instructions we'll need to step, but 100
+# should be enough for everyone (surely), and this stops us looping
+# forever if something goes wrong.
+set found_line_19 0
+set found_line_20 0
+set keep_going 1
+for { set i 0 } { $i < 100 && $keep_going } { incr i } {
+    set keep_going 0
+    gdb_test_multiple "stepi" "stepi ${i}" {
+	-re "${srcfile3} : 19 .*${gdb_prompt} " {
+	    set found_line_19 1
+	    set keep_going 1
+	}
+
+	-re "${srcfile3} : 20 .*${gdb_prompt} " {
+	    set found_line_20 1
+	}
+
+	-re "${srcfile4} : 22 .*${gdb_prompt} " {
+	    # Not left line 22 yet.
+	    set keep_going 1
+	}
+    }
+}
+
+gdb_assert { $found_line_19 && $found_line_20 } \
+    "found line 19 and 20"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header.c ./gdb/testsuite/gdb.dwarf2/dw2-inline-header.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-header.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,24 @@
+/* Copyright 2020-2021 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/>.  */
+
+/* dw2-inline-header.c : 16 */
+/* dw2-inline-header.c : 17 */
+/* dw2-inline-header.c : 18 */
+/* dw2-inline-header.c : 19 */
+/* dw2-inline-header.c : 20 */
+/* dw2-inline-header.c : 21 */
+/* dw2-inline-header.c : 22 */
+/* dw2-inline-header.c : 23 */
+/* dw2-inline-header.c : 24 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header.h ./gdb/testsuite/gdb.dwarf2/dw2-inline-header.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-header.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,24 @@
+/* Copyright 2020-2021 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/>.  */
+
+/* dw2-inline-header.h : 16 */
+/* dw2-inline-header.h : 17 */
+/* dw2-inline-header.h : 18 */
+/* dw2-inline-header.h : 19 */
+/* dw2-inline-header.h : 20 */
+/* dw2-inline-header.h : 21 */
+/* dw2-inline-header.h : 22 */
+/* dw2-inline-header.h : 23 */
+/* dw2-inline-header.h : 24 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header-lbls.c ./gdb/testsuite/gdb.dwarf2/dw2-inline-header-lbls.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-header-lbls.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-header-lbls.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,46 @@
+/* Copyright 2020-2021 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/>.  */
+
+/* Used to insert labels with which we can build a fake line table.  */
+#define LL(N) asm ("line_label_" #N ": .globl line_label_" #N)
+
+volatile int var;
+volatile int bar;
+
+/* Generate some code to take up some space.  */
+#define FILLER do { \
+    var = 99;	    \
+} while (0)
+
+int
+main ()
+{					/* main prologue */
+  asm ("main_label: .globl main_label");
+  LL (1);	// F1, Ln 16
+  FILLER;
+  LL (2);	// F1, Ln 17
+  FILLER;
+  LL (3);	// F2, Ln 21
+  FILLER;
+  LL (4);	// F2, Ln 22 // F1, Ln 18, !S
+  FILLER;
+  LL (5);	// F1, Ln 19 !S
+  FILLER;
+  LL (6);	// F1, Ln 20
+  FILLER;
+  LL (7);
+  FILLER;
+  return 0;				/* main end */
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.c ./gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,158 @@
+/* Copyright 2019-2021 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 sets up a call stack that looks like this:
+
+   #11     #10    #9     #8     #7     #6     #5     #4     #3     #2     #1     #0
+   main -> aaa -> bbb -> ccc -> ddd -> eee -> fff -> ggg -> hhh -> iii -> jjj -> kkk
+   \_______________________/    \________/    \______________________/    \________/
+      Inline sequence #1          Normal          Inline sequence #2        Normal
+
+   We use the 'start' command to move into main, after that we 'step'
+   through each function until we are in kkk.  We then use the 'up' command
+   to look back at each from to main.
+
+   The test checks that we can handle and step through sequences of more
+   than one inline frame (so 'main .... ccc', and 'fff .... iii'), and also
+   that we can move around in a stack that contains more than one disjoint
+   sequence of inline frames.
+
+   The order of the functions in this file is deliberately mixed up so that
+   the line numbers are not "all ascending" or "all descending" in the line
+   table.  */
+
+#define INLINE_FUNCTION __attribute__ ((always_inline)) static inline
+#define NON_INLINE_FUNCTION __attribute__ ((noinline))
+
+volatile int global_var = 0;
+
+INLINE_FUNCTION int aaa ();
+INLINE_FUNCTION int bbb ();
+INLINE_FUNCTION int ccc ();
+
+NON_INLINE_FUNCTION int ddd ();
+NON_INLINE_FUNCTION int eee ();
+NON_INLINE_FUNCTION int fff ();
+
+INLINE_FUNCTION int ggg ();
+INLINE_FUNCTION int hhh ();
+INLINE_FUNCTION int iii ();
+
+NON_INLINE_FUNCTION int jjj ();
+NON_INLINE_FUNCTION int kkk ();
+
+INLINE_FUNCTION int
+aaa ()
+{						/* aaa prologue */
+  asm ("aaa_label: .globl aaa_label");
+  return bbb () + 1;				/* aaa return */
+}						/* aaa end */
+
+NON_INLINE_FUNCTION int
+jjj ()
+{						/* jjj prologue */
+  int ans;
+  asm ("jjj_label: .globl jjj_label");
+  ans = kkk () + 1;				/* jjj return */
+  asm ("jjj_label2: .globl jjj_label2");
+  return ans;
+}						/* jjj end */
+
+INLINE_FUNCTION int
+ggg ()
+{						/* ggg prologue */
+  asm ("ggg_label: .globl ggg_label");
+  return hhh () + 1;				/* ggg return */
+}						/* ggg end */
+
+INLINE_FUNCTION int
+ccc ()
+{						/* ccc prologue */
+  asm ("ccc_label: .globl ccc_label");
+  return ddd () + 1;				/* ccc return */
+}						/* ccc end */
+
+NON_INLINE_FUNCTION int
+fff ()
+{						/* fff prologue */
+  int ans;
+  asm ("fff_label: .globl fff_label");
+  ans = ggg () + 1;				/* fff return */
+  asm ("fff_label2: .globl fff_label2");
+  return ans;
+}						/* fff end */
+
+NON_INLINE_FUNCTION int
+kkk ()
+{						/* kkk prologue */
+  asm ("kkk_label: .globl kkk_label");
+  return global_var;				/* kkk return */
+}						/* kkk end */
+
+INLINE_FUNCTION int
+bbb ()
+{						/* bbb prologue */
+  asm ("bbb_label: .globl bbb_label");
+  return ccc () + 1;				/* bbb return */
+}						/* bbb end */
+
+INLINE_FUNCTION int
+hhh ()
+{						/* hhh prologue */
+  asm ("hh_label: .globl hhh_label");
+  return iii () + 1;				/* hhh return */
+}						/* hhh end */
+
+int
+main ()
+{						/* main prologue */
+  int ans;
+  asm ("main_label: .globl main_label");
+  global_var = 0;				/* main set global_var */
+  asm ("main_label2: .globl main_label2");
+  ans = aaa () + 1;				/* main call aaa */
+  asm ("main_label3: .globl main_label3");
+  return ans;
+}						/* main end */
+
+NON_INLINE_FUNCTION int
+ddd ()
+{						/* ddd prologue */
+  int ans;
+  asm ("ddd_label: .globl ddd_label");
+  ans =  eee () + 1;				/* ddd return */
+  asm ("ddd_label2: .globl ddd_label2");
+  return ans;
+}						/* ddd end */
+
+INLINE_FUNCTION int
+iii ()
+{						/* iii prologue */
+  int ans;
+  asm ("iii_label: .globl iii_label");
+  ans = jjj () + 1;				/* iii return */
+  asm ("iii_label2: .globl iii_label2");
+  return ans;
+}						/* iii end */
+
+NON_INLINE_FUNCTION int
+eee ()
+{						/* eee prologue */
+  int ans;
+  asm ("eee_label: .globl eee_label");
+  ans = fff () + 1;				/* eee return */
+  asm ("eee_label2: .globl eee_label2");
+  return ans;
+}						/* eee end */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp ./gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,365 @@
+# Copyright 2019-2021 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 shows the importance of not corrupting the order of line
+# table information.  When multiple lines are given for the same
+# address the compiler usually lists these in the order in which we
+# would expect to encounter them.  When stepping through nested inline
+# frames the last line given for an address is assumed by GDB to be
+# the most inner frame, and this is what GDB displays.
+#
+# If we corrupt the order of the line table entries then GDB will
+# display the wrong line as being the inner most frame.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    return 0
+}
+
+standard_testfile dw2-inline-many-frames.c dw2-inline-many-frames.S
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile srcfile2
+    declare_labels ranges_label lines_label
+    declare_labels aaa_label bbb_label ccc_label
+    declare_labels ggg_label hhh_label iii_label
+
+    get_func_info main
+    get_func_info ddd
+    get_func_info eee
+    get_func_info fff
+    get_func_info jjj
+    get_func_info kkk
+
+    set call_in_main [gdb_get_line_number "main call aaa"]
+    set call_in_aaa [gdb_get_line_number "aaa return"]
+    set call_in_bbb [gdb_get_line_number "bbb return"]
+    set call_in_ccc [gdb_get_line_number "ccc return"]
+    set call_in_fff [gdb_get_line_number "fff return"]
+    set call_in_ggg [gdb_get_line_number "ggg return"]
+    set call_in_hhh [gdb_get_line_number "hhh return"]
+    set call_in_iii [gdb_get_line_number "iii return"]
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C}
+	    {name dw2-inline-stepping.c}
+	    {low_pc 0 addr}
+	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    {ranges ${ranges_label} DW_FORM_sec_offset}
+	} {
+	    subprogram {
+		{external 1 flag}
+		{name ddd}
+		{low_pc $ddd_start addr}
+		{high_pc "$ddd_start + $ddd_len" addr}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{name eee}
+		{low_pc $eee_start addr}
+		{high_pc "$eee_start + $eee_len" addr}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{name jjj}
+		{low_pc $jjj_start addr}
+		{high_pc "$jjj_start + $jjj_len" addr}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{name kkk}
+		{low_pc $kkk_start addr}
+		{high_pc "$kkk_start + $kkk_len" addr}
+	    }
+	    aaa_label: subprogram {
+		{name aaa}
+		{inline 3 data1}
+	    }
+	    bbb_label: subprogram {
+		{name bbb}
+		{inline 3 data1}
+	    }
+	    ccc_label: subprogram {
+		{name ccc}
+		{inline 3 data1}
+	    }
+	    ggg_label: subprogram {
+		{name ggg}
+		{inline 3 data1}
+	    }
+	    hhh_label: subprogram {
+		{name hhh}
+		{inline 3 data1}
+	    }
+	    iii_label: subprogram {
+		{name iii}
+		{inline 3 data1}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{name main}
+		{low_pc $main_start addr}
+		{high_pc "$main_start + $main_len" addr}
+	    } {
+		inlined_subroutine {
+		    {abstract_origin %$aaa_label}
+		    {low_pc main_label2 addr}
+		    {high_pc main_label3 addr}
+		    {call_file 1 data1}
+		    {call_line $call_in_main data1}
+		} {
+		    inlined_subroutine {
+			{abstract_origin %$bbb_label}
+			{low_pc main_label2 addr}
+			{high_pc main_label3 addr}
+			{call_file 1 data1}
+			{call_line $call_in_aaa data1}
+		    }  {
+			inlined_subroutine {
+			    {abstract_origin %$ccc_label}
+			    {low_pc main_label2 addr}
+			    {high_pc main_label3 addr}
+			    {call_file 1 data1}
+			    {call_line $call_in_bbb data1}
+			}
+		    }
+		}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{name fff}
+		{low_pc $fff_start addr}
+		{high_pc "$fff_start + $fff_len" addr}
+	    }  {
+		inlined_subroutine {
+		    {abstract_origin %$ggg_label}
+		    {low_pc fff_label addr}
+		    {high_pc main_label2 addr}
+		    {call_file 1 data1}
+		    {call_line $call_in_fff data1}
+		} {
+		    inlined_subroutine {
+			{abstract_origin %$hhh_label}
+			{low_pc fff_label addr}
+			{high_pc fff_label2 addr}
+			{call_file 1 data1}
+			{call_line $call_in_ggg data1}
+		    }  {
+			inlined_subroutine {
+			    {abstract_origin %$iii_label}
+			    {low_pc fff_label addr}
+			    {high_pc fff_label2 addr}
+			    {call_file 1 data1}
+			    {call_line $call_in_hhh data1}
+			}
+		    }
+		}
+	    }
+	}
+    }
+
+    lines {version 2} lines_label {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile" 1
+
+	program {
+	    {DW_LNE_set_address $main_start}
+	    {line [gdb_get_line_number "main prologue"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address main_label}
+	    {line [gdb_get_line_number "main set global_var"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address main_label2}
+	    {line [gdb_get_line_number "main call aaa"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address main_label2}
+	    {line [gdb_get_line_number "aaa return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address main_label2}
+	    {line [gdb_get_line_number "bbb return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address main_label2}
+	    {line [gdb_get_line_number "ccc return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address main_label3}
+	    {line [gdb_get_line_number "main end"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address $main_end}
+	    {DW_LNE_end_sequence}
+
+	    {DW_LNE_set_address $ddd_start}
+	    {line [gdb_get_line_number "ddd prologue"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address ddd_label}
+	    {line [gdb_get_line_number "ddd return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address ddd_label2}
+	    {line [gdb_get_line_number "ddd end"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address $ddd_end}
+	    {DW_LNE_end_sequence}
+
+	    {DW_LNE_set_address $eee_start}
+	    {line [gdb_get_line_number "eee prologue"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address eee_label}
+	    {line [gdb_get_line_number "eee return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address eee_label2}
+	    {line [gdb_get_line_number "eee end"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address $eee_end}
+	    {DW_LNE_end_sequence}
+
+	    {DW_LNE_set_address $fff_start}
+	    {line [gdb_get_line_number "fff prologue"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address fff_label}
+	    {line [gdb_get_line_number "fff return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address fff_label}
+	    {line [gdb_get_line_number "ggg return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address fff_label}
+	    {line [gdb_get_line_number "hhh return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address fff_label}
+	    {line [gdb_get_line_number "iii return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address fff_label2}
+	    {line [gdb_get_line_number "fff end"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address $fff_end}
+	    {DW_LNE_end_sequence}
+
+	    {DW_LNE_set_address $jjj_start}
+	    {line [gdb_get_line_number "jjj prologue"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address jjj_label}
+	    {line [gdb_get_line_number "jjj return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address jjj_label2}
+	    {line [gdb_get_line_number "jjj end"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address $jjj_end}
+	    {DW_LNE_end_sequence}
+
+	    {DW_LNE_set_address $kkk_start}
+	    {line [gdb_get_line_number "kkk prologue"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address kkk_label}
+	    {line [gdb_get_line_number "kkk return"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address $kkk_end}
+	    {DW_LNE_end_sequence}
+	}
+    }
+
+    ranges {is_64 [is_64_target]} {
+	ranges_label: sequence {
+	    {range {${main_start}} ${main_end}}
+	    {range {${ddd_start}} ${ddd_end}}
+	    {range {${eee_start}} ${eee_end}}
+	    {range {${fff_start}} ${fff_end}}
+	    {range {${jjj_start}} ${jjj_end}}
+	    {range {${kkk_start}} ${kkk_end}}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+# First we step through all of the functions until we get the 'kkk'.
+set patterns [list "main call aaa" \
+		  "aaa return" \
+		  "bbb return" \
+		  "ccc return" \
+		  "ddd return" \
+		  "eee return" \
+		  "fff return" \
+		  "ggg return" \
+		  "hhh return" \
+		  "iii return" \
+		  "jjj return" \
+		  "kkk return" ]
+foreach p $patterns {
+    gdb_test "step" "/\\* $p \\*/" \
+	"step to '$p'"
+}
+
+# Now check the backtrace.
+set line_in_main [gdb_get_line_number "main call aaa"]
+set line_in_aaa [gdb_get_line_number "aaa return"]
+set line_in_bbb [gdb_get_line_number "bbb return"]
+set line_in_ccc [gdb_get_line_number "ccc return"]
+set line_in_ddd [gdb_get_line_number "ddd return"]
+set line_in_eee [gdb_get_line_number "eee return"]
+set line_in_fff [gdb_get_line_number "fff return"]
+set line_in_ggg [gdb_get_line_number "ggg return"]
+set line_in_hhh [gdb_get_line_number "hhh return"]
+set line_in_iii [gdb_get_line_number "iii return"]
+set line_in_jjj [gdb_get_line_number "jjj return"]
+set line_in_kkk [gdb_get_line_number "kkk return"]
+
+gdb_test "bt" [multi_line \
+		   "#0  kkk \\(\\) at \[^\r\n\]+${srcfile}:${line_in_kkk}" \
+		   "#1  $hex in jjj \\(\\) at \[^\r\n\]+${srcfile}:${line_in_jjj}" \
+		   "#2  $hex in iii \\(\\) at \[^\r\n\]+${srcfile}:${line_in_iii}" \
+		   "#3  hhh \\(\\) at \[^\r\n\]+${srcfile}:${line_in_hhh}" \
+		   "#4  ggg \\(\\) at \[^\r\n\]+${srcfile}:${line_in_ggg}" \
+		   "#5  fff \\(\\) at \[^\r\n\]+${srcfile}:${line_in_fff}" \
+		   "#6  $hex in eee \\(\\) at \[^\r\n\]+${srcfile}:${line_in_eee}" \
+		   "#7  $hex in ddd \\(\\) at \[^\r\n\]+${srcfile}:${line_in_ddd}" \
+		   "#8  $hex in ccc \\(\\) at \[^\r\n\]+${srcfile}:${line_in_ccc}" \
+		   "#9  bbb \\(\\) at \[^\r\n\]+${srcfile}:${line_in_bbb}" \
+		   "#10 aaa \\(\\) at \[^\r\n\]+${srcfile}:${line_in_aaa}" \
+		   "#11 main \\(\\) at \[^\r\n\]+${srcfile}:${line_in_main}" ]
+
+# Now check we can use 'up' to inspect each frame correctly.
+set patterns [list  \
+		  "jjj return" \
+		  "iii return" \
+		  "hhh return" \
+		  "ggg return" \
+		  "fff return" \
+		  "eee return" \
+		  "ddd return" \
+		  "ccc return" \
+		  "bbb return" \
+		  "aaa return" \
+		  "main call aaa" ]
+foreach p $patterns {
+    gdb_test "up" "/\\* $p \\*/" \
+	"up to '$p'"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-param.exp ./gdb/testsuite/gdb.dwarf2/dw2-inline-param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-param.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-param.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-param-main.c ./gdb/testsuite/gdb.dwarf2/dw2-inline-param-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-param-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-param-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-param.S ./gdb/testsuite/gdb.dwarf2/dw2-inline-param.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-param.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-param.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.c ./gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* Copyright 2020-2021 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/>.  */
+
+#include "dw2-inline-small-func.h"
+
+int
+main ()
+{		/* caller: before call.  */
+  callee ();	/* caller: the call.  */
+}		/* caller: after call.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp ./gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,144 @@
+# Copyright 2020-2021 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/>.
+
+# Check for an issue in GDB where buildsym_compunit::record_line was
+# removing duplicate line table entries, but skip_prologue_using_sal
+# depends on these duplicates to spot the end of the prologue.
+#
+# When the de-duplication was added this regression was not spotted as
+# it requires a particular combination of a (very) small function
+# being inlined into an also very small outer function.
+#
+# This test recreates the exact combination of line table entries that
+# were seen in the original test using the Dejagnu DWARF compiler.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    return 0
+}
+
+standard_testfile dw2-inline-small-func-lbls.c dw2-inline-small-func.S \
+    dw2-inline-small-func.c dw2-inline-small-func.h
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile srcfile3 srcfile4
+    declare_labels lines_label callee_subprog_label
+
+    get_func_info main {debug optimize=-O1}
+
+    cu {} {
+	# It is important that the producer here be 'clang' as, at the
+	# time of writing this, GCC for x86-64 doesn't make use of
+	# skip_prologue_using_sal, while clang does.
+	compile_unit {
+	    {producer "clang xxxx" }
+	    {language @DW_LANG_C}
+	    {name ${srcfile3}}
+	    {low_pc 0 addr}
+	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	} {
+	    callee_subprog_label: subprogram {
+		{external 1 flag}
+		{name callee}
+		{inline 3 data1}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{name main}
+		{low_pc $main_start addr}
+		{high_pc "$main_start + $main_len" addr}
+	    } {
+		inlined_subroutine {
+		    {abstract_origin %$callee_subprog_label}
+		    {low_pc line_label_1 addr}
+		    {high_pc line_label_2 addr}
+		    {call_file 1 data1}
+		    {call_line 21 data1}
+		}
+	    }
+	}
+    }
+
+    lines {version 2 default_is_stmt 1} lines_label {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile3" 1
+	file_name "$srcfile4" 1
+
+	set f1_l1 [gdb_get_line_number "caller: before call" $srcfile3]
+	set f1_l2 [gdb_get_line_number "caller: the call" $srcfile3]
+	set f1_l3 [gdb_get_line_number "caller: after call" $srcfile3]
+
+	set f2_l1 [gdb_get_line_number "callee: body" $srcfile4]
+
+	program {
+	    {DW_LNE_set_address line_label_1}
+	    {line $f1_l1}
+	    {DW_LNS_copy}
+
+	    {line ${f1_l2}}
+	    {DW_LNS_copy}
+
+	    {DW_LNS_set_file 2}
+	    {line ${f2_l1}}
+	    {DW_LNS_copy}
+
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNS_set_file 1}
+	    {DW_LNE_set_address line_label_2}
+	    {line ${f1_l3}}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_3}
+	    {DW_LNS_copy}
+	    {DW_LNE_end_sequence}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug optimize=-O1}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+# Delete all breakpoints so that the output of "info breakpoints"
+# below will only contain a single breakpoint.
+delete_breakpoints
+
+# Place a breakpoint within the function in the header file.
+set linenum [gdb_get_line_number "callee: body" $srcfile4]
+gdb_breakpoint "${srcfile4}:${linenum}"
+
+# Check that the breakpoint was placed where we expected.  It should
+# appear at the requested line.  When the bug in GDB was present the
+# breakpoint would be placed on one of the following lines instead.
+gdb_test "info breakpoints" \
+    ".* in callee at \[^\r\n\]+${srcfile4}:${linenum}\\y.*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.h ./gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,21 @@
+/* Copyright 2020-2021 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/>.  */
+
+int counter = 42;
+
+inline void
+callee () {
+  counter = 0;	/* callee: body.  */
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func-lbls.c ./gdb/testsuite/gdb.dwarf2/dw2-inline-small-func-lbls.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func-lbls.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-small-func-lbls.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,37 @@
+/* Copyright 2020-2021 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/>.  */
+
+/* Used to insert labels with which we can build a fake line table.  */
+#define LL(N) asm ("line_label_" #N ": .globl line_label_" #N)
+
+volatile int var;
+volatile int bar;
+
+/* Generate some code to take up some space.  */
+#define FILLER do { \
+    var = 99;	    \
+} while (0)
+
+int
+main ()
+{					/* main prologue */
+  asm ("main_label: .globl main_label");
+  LL (1);
+  FILLER;
+  LL (2);
+  FILLER;
+  LL (3);
+  return 0;				/* main end */
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.c ./gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,45 @@
+/* Copyright 2019-2021 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 relies on foo being inlined into main and bar not being
+   inlined.  The test is checking GDB's behaviour as we single step from
+   main through foo and into bar.  */
+
+volatile int global_var;
+
+int  __attribute__ ((noinline))
+bar ()
+{						/* bar prologue */
+  asm ("bar_label: .globl bar_label");
+  return global_var;				/* bar return global_var */
+}						/* bar end */
+
+static inline int __attribute__ ((always_inline))
+foo ()
+{						/* foo prologue */
+  return bar ();				/* foo call bar */
+}						/* foo end */
+
+int
+main ()
+{						/* main prologue */
+  int ans;
+  asm ("main_label: .globl main_label");
+  global_var = 0;				/* main set global_var */
+  asm ("main_label2: .globl main_label2");
+  ans = foo ();					/* main call foo */
+  asm ("main_label3: .globl main_label3");
+  return ans;
+}						/* main end */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp ./gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,146 @@
+# Copyright 2019-2021 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 shows the importance of not corrupting the order of line
+# table information.  When multiple lines are given for the same
+# address the compiler usually lists these in the order in which we
+# would expect to encounter them.  When stepping through nested inline
+# frames the last line given for an address is assumed by GDB to be
+# the most inner frame, and this is what GDB displays.
+#
+# If we corrupt the order of the line table entries then GDB will
+# display the wrong line as being the inner most frame.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    return 0
+}
+
+standard_testfile dw2-inline-stepping.c dw2-inline-stepping.S
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile srcfile2
+    declare_labels ranges_label lines_label foo_prog
+
+    lassign [function_range main [list ${srcdir}/${subdir}/$srcfile]] \
+	main_start main_len
+    set main_end "$main_start + $main_len"
+    lassign [function_range bar [list ${srcdir}/${subdir}/$srcfile]] \
+	bar_start bar_len
+    set bar_end "$bar_start + $bar_len"
+
+    set call_line [gdb_get_line_number "main call foo"]
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C}
+	    {name dw2-inline-stepping.c}
+	    {low_pc 0 addr}
+	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	    {ranges ${ranges_label} DW_FORM_sec_offset}
+	} {
+	    subprogram {
+		{external 1 flag}
+		{name bar}
+		{low_pc $bar_start addr}
+		{high_pc "$bar_start + $bar_len" addr}
+	    }
+	    foo_prog: subprogram {
+		{name foo}
+		{inline 3 data1}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{name main}
+		{low_pc $main_start addr}
+		{high_pc "$main_start + $main_len" addr}
+	    } {
+		inlined_subroutine {
+		    {abstract_origin %$foo_prog}
+		    {low_pc main_label2 addr}
+		    {high_pc main_label3 addr}
+		    {call_file 1 data1}
+		    {call_line $call_line data1}
+		}
+	    }
+	}
+    }
+
+    lines {version 2} lines_label {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile" 1
+
+	program {
+	    {DW_LNE_set_address $main_start}
+	    {line [gdb_get_line_number "main prologue"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address main_label}
+	    {line [gdb_get_line_number "main set global_var"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address main_label2}
+	    {line [gdb_get_line_number "main call foo"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address main_label2}
+	    {line [gdb_get_line_number "foo call bar"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address $main_end}
+	    {DW_LNE_end_sequence}
+
+	    {DW_LNE_set_address $bar_start}
+	    {line [gdb_get_line_number "bar prologue"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address bar_label}
+	    {line [gdb_get_line_number "bar return global_var"]}
+	    {DW_LNS_copy}
+	    {DW_LNE_set_address $bar_end}
+	    {DW_LNE_end_sequence}
+	}
+    }
+
+    ranges {is_64 [is_64_target]} {
+	ranges_label: sequence {
+	    {range {${main_start}} ${main_end}}
+	    {range {${bar_start}} ${bar_end}}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+set patterns [list "main call foo" \
+		  "foo call bar" \
+		  "bar return global_var"]
+foreach p $patterns {
+    gdb_test "step" "/\\* $p \\*/" \
+	"step to '$p'"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-intercu.exp ./gdb/testsuite/gdb.dwarf2/dw2-intercu.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-intercu.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-intercu.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-intercu.S ./gdb/testsuite/gdb.dwarf2/dw2-intercu.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-intercu.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-intercu.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-intermix.exp ./gdb/testsuite/gdb.dwarf2/dw2-intermix.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-intermix.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-intermix.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-intermix.S ./gdb/testsuite/gdb.dwarf2/dw2-intermix.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-intermix.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-intermix.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.c ./gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,99 @@
+/* Copyright 2020-2021 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 tests GDB's handling of the DWARF is-stmt field in the line table.
+
+   This field is used when many addresses all represent the same source
+   line.  The address(es) at which it is suitable to place a breakpoint for
+   a line are marked with is-stmt true, while address(es) that are not good
+   places to place a breakpoint are marked as is-stmt false.
+
+   In order to build a reproducible test and exercise GDB's is-stmt
+   support, we will be generating our own DWARF.  The test will contain a
+   series of C source lines, ensuring that we get a series of assembler
+   instructions.  Each C source line will be given an assembler label,
+   which we use to generate a fake line table.
+
+   In this fake line table each assembler block is claimed to represent a
+   single C source line, however, we will toggle the is-stmt flag.  We can
+   then debug this with GDB and test the handling of is-stmt.  */
+
+/* Used to insert labels with which we can build a fake line table.  */
+#define LL(N)						\
+  do							\
+    {							\
+      asm ("line_label_" #N ": .globl line_label_" #N); \
+      var = (N);					\
+      bar = ((N) + 1);					\
+    }							\
+  while (0)
+
+volatile int var;
+volatile int bar;
+
+int
+main ()
+{					/* main prologue */
+  asm ("main_label: .globl main_label");
+
+  /* main start */
+
+  /* Line 1.  */
+  /* Line 2.  */
+  /* Line 3.  */
+  /* Line 4.  */
+  /* Line 5.  */
+
+  LL (0);
+  LL (1);
+  LL (2);
+  LL (3);
+  LL (4);
+  LL (5);
+  LL (6);
+  LL (7);
+  LL (8);
+  LL (9);
+  LL (10);
+  LL (11);
+  LL (12);
+  LL (13);
+  LL (14);
+  LL (15);
+  LL (16);
+  return 0;				/* main end */
+}
+
+#if 0
+
+PROLOGUE*
+1: L1
+2: L1*
+3: L2
+4: L1
+L3
+L4
+L4*
+L2*
+L2
+L3
+L5
+L5*
+L3
+L4
+L5
+RETURN
+
+#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.exp ./gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-is-stmt-2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,224 @@
+# Copyright 2020-2021 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 shows the importance of not corrupting the order of line
+# table information.  When multiple lines are given for the same
+# address the compiler usually lists these in the order in which we
+# would expect to encounter them.  When stepping through nested inline
+# frames the last line given for an address is assumed by GDB to be
+# the most inner frame, and this is what GDB displays.
+#
+# If we corrupt the order of the line table entries then GDB will
+# display the wrong line as being the inner most frame.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    return 0
+}
+
+standard_testfile dw2-is-stmt-2.c dw2-is-stmt-2.S
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile
+    declare_labels lines_label
+
+    get_func_info main
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C}
+	    {name dw2-is-stmt.c}
+	    {low_pc 0 addr}
+	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	} {
+	    subprogram {
+		{external 1 flag}
+		{name main}
+		{low_pc $main_start addr}
+		{high_pc "$main_start + $main_len" addr}
+	    } {}
+	}
+    }
+
+    lines {version 2 default_is_stmt 1} lines_label {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile" 1
+
+	program {
+	    {DW_LNE_set_address main}
+	    {line [gdb_get_line_number "main prologue"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_0}
+	    {line [gdb_get_line_number "main start"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_1}
+	    {line [gdb_get_line_number "Line 1"]}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_2}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_3}
+	    {line [gdb_get_line_number "Line 2"]}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_4}
+	    {line [gdb_get_line_number "Line 1"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_5}
+	    {line [gdb_get_line_number "Line 3"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_6}
+	    {line [gdb_get_line_number "Line 4"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_7}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_8}
+	    {line [gdb_get_line_number "Line 2"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_9}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_10}
+	    {line [gdb_get_line_number "Line 3"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_11}
+	    {line [gdb_get_line_number "Line 5"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_12}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_13}
+	    {line [gdb_get_line_number "Line 3"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_14}
+	    {line [gdb_get_line_number "Line 4"]}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_15}
+	    {line [gdb_get_line_number "Line 5"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_16}
+	    {line [gdb_get_line_number "main end"]}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address ${main_end}}
+	    {DW_LNE_end_sequence}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+# Check stepping through the out of order lines gives the experience
+# we expect; lines in the correct order, and stop at the correct
+# labels.Q
+set locs { { "Line 1." "line_label_2" } \
+	       { "Line 4." "line_label_7" } \
+	       { "Line 2." "line_label_8" } \
+	       { "Line 5." "line_label_12" } \
+	       { "Line 3." "line_label_13" } }
+foreach entry $locs {
+    set pattern [lindex $entry 0]
+    set label  [lindex $entry 1]
+
+    set linum [gdb_get_line_number "$pattern"]
+    gdb_test "step" "\r\n$linum\[ \t\]+/\\* $pattern  \\*/" \
+	"step to $pattern"
+
+    set pc [get_hexadecimal_valueof "\$pc" "NO-PC" \
+	       "read \$pc at $pattern"]
+    set val [get_hexadecimal_valueof "&${label}" "INVALID"]
+    gdb_assert { $pc == $val } \
+	"check pc at $pattern"
+}
+
+# Now restart the test, and this time, single instruction step
+# through.  This is checking that the is-stmt marked lines are
+# displayed differently (without addresses) to addresses that are
+# mid-way through a line, or not marked as is-stmt.
+clean_restart $binfile
+runto_main
+
+foreach entry $locs {
+    set pattern [lindex $entry 0]
+    set label  [lindex $entry 1]
+
+    with_test_prefix "stepi to $label" {
+	# If can take many instruction steps to get to the next label.
+	set i 0
+	set pc [get_hexadecimal_valueof "\$pc" "NO-PC" ]
+	set val [get_hexadecimal_valueof "&${label}" "INVALID"]
+	while { $pc < $val } {
+	    incr i
+	    set line_changed -1
+	    gdb_test_multiple "stepi" "stepi $i" {
+		-re "\r\n$hex\[ \t\]+$decimal\[^\r\n\]+\r\n$gdb_prompt" {
+		    set line_changed 0
+		}
+		-re "\r\n$decimal\[ \t\]+/\\* $pattern  \\*/\r\n$gdb_prompt" {
+		    set line_changed 1
+		}
+	    }
+	    gdb_assert { $line_changed != -1 } \
+		"ensure we saw a valid pattern, $i"
+	    set pc [get_hexadecimal_valueof "\$pc" "NO-PC" \
+			"get pc inside stepi loop, $i"]
+	    if { $pc == $val } {
+		gdb_assert { $line_changed } \
+		    "line must change at $label"
+	    } else {
+		gdb_assert { !$line_changed } "same line $i"
+	    }
+	}
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-is-stmt.c ./gdb/testsuite/gdb.dwarf2/dw2-is-stmt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-is-stmt.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-is-stmt.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,61 @@
+/* Copyright 2020-2021 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 tests GDB's handling of the DWARF is-stmt field in the line table.
+
+   This field is used when many addresses all represent the same source
+   line.  The address(es) at which it is suitable to place a breakpoint for
+   a line are marked with is-stmt true, while address(es) that are not good
+   places to place a breakpoint are marked as is-stmt false.
+
+   In order to build a reproducible test and exercise GDB's is-stmt
+   support, we will be generating our own DWARF.  The test will contain a
+   series of C source lines, ensuring that we get a series of assembler
+   instructions.  Each C source line will be given an assembler label,
+   which we use to generate a fake line table.
+
+   In this fake line table each assembler block is claimed to represent a
+   single C source line, however, we will toggle the is-stmt flag.  We can
+   then debug this with GDB and test the handling of is-stmt.  */
+
+/* Used to insert labels with which we can build a fake line table.  */
+#define LL(N) asm ("line_label_" #N ": .globl line_label_" #N)
+
+volatile int var;
+volatile int bar;
+
+int
+main ()
+{					/* main prologue */
+  asm ("main_label: .globl main_label");
+  LL (1);
+  var = 99;				/* main, set var to 99 */
+  bar = 99;
+
+  LL (2);
+  var = 0;				/* main, set var to 0 */
+  bar = 0;
+
+  LL (3);
+  var = 1;				/* main, set var to 1 */
+  bar = 1;
+
+  LL (4);
+  var = 2;				/* main, set var to 2 */
+  bar = 2;
+
+  LL (5);
+  return 0;				/* main end */
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-is-stmt.exp ./gdb/testsuite/gdb.dwarf2/dw2-is-stmt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-is-stmt.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-is-stmt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,246 @@
+# Copyright 2020-2021 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 shows the importance of not corrupting the order of line
+# table information.  When multiple lines are given for the same
+# address the compiler usually lists these in the order in which we
+# would expect to encounter them.  When stepping through nested inline
+# frames the last line given for an address is assumed by GDB to be
+# the most inner frame, and this is what GDB displays.
+#
+# If we corrupt the order of the line table entries then GDB will
+# display the wrong line as being the inner most frame.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    return 0
+}
+
+standard_testfile dw2-is-stmt.c dw2-is-stmt.S
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile
+    declare_labels lines_label
+
+    get_func_info main
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C}
+	    {name dw2-is-stmt.c}
+	    {low_pc 0 addr}
+	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	} {
+	    subprogram {
+		{external 1 flag}
+		{name main}
+		{low_pc $main_start addr}
+		{high_pc "$main_start + $main_len" addr}
+	    } {}
+	}
+    }
+
+    lines {version 2 default_is_stmt 0} lines_label {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile" 1
+
+	program {
+	    {DW_LNE_set_address main}
+	    {line [gdb_get_line_number "main prologue"]}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_1}
+	    {line [gdb_get_line_number "main, set var to 99"]}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_2}
+	    {line [gdb_get_line_number "main, set var to 0"]}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_3}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_4}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_5}
+	    {line [gdb_get_line_number "main end"]}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address ${main_end}}
+	    {DW_LNE_end_sequence}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+# First, break by address at a location we know is marked as not a
+# statement.  GDB should still correctly report the file and line
+# number.
+gdb_breakpoint "*line_label_2"
+gdb_continue_to_breakpoint "*line_label_2"
+
+# Now step by instruction.  We should skip over the is-stmt location
+# for this line, and land on the next source line.
+gdb_test "step" "/\\* main end \\*/" \
+    "step to end from line_label_2"
+
+# Restart the test.  This time, stop at a location we know is marked
+# as a statement.
+clean_restart ${binfile}
+runto_main
+
+gdb_breakpoint "*line_label_3"
+gdb_continue_to_breakpoint "*line_label_3"
+
+# Now step by instruction.  As you would expect we should leave this
+# line and stop at the next source line.
+gdb_test "step" "/\\* main end \\*/" \
+    "step to end from line_label_3"
+
+# Restart the test, this time, step through line by line, ensure we
+# only stop at the places where is-stmt is true.
+clean_restart ${binfile}
+runto_main
+
+# Get the values of the labels where we expect to stop.
+set ll1 [get_hexadecimal_valueof "&line_label_1" "INVALID"]
+set ll2 [get_hexadecimal_valueof "&line_label_2" "INVALID"]
+set ll3 [get_hexadecimal_valueof "&line_label_3" "INVALID"]
+set ll5 [get_hexadecimal_valueof "&line_label_5" "INVALID"]
+
+# The first stop should be at line_label_1
+with_test_prefix "check we're at line_label_1" {
+    set pc [get_hexadecimal_valueof "\$pc" "NO-PC"]
+    gdb_assert { $ll1 == $pc } "check initial \$pc is line_label_1"
+}
+
+# Now step, this should take us to line_label_3 which is the next
+# location marked as is-stmt.
+with_test_prefix "step to line_label_3" {
+    gdb_test "step" "/\\* main, set var to 0 \\*/"
+    set pc [get_hexadecimal_valueof "\$pc" "NO-PC"]
+    gdb_assert { $ll3 == $pc } "check initial \$pc is line_label_3"
+}
+
+# A final step should take us to line_label_5.
+with_test_prefix "step to line_label_5" {
+    gdb_test "step" "/\\* main end \\*/"
+    set pc [get_hexadecimal_valueof "\$pc" "NO-PC"]
+    gdb_assert { $ll5 == $pc } "check initial \$pc"
+}
+
+# Now restart the test, and place a breakpoint by line number.  GDB
+# should select the location that is marked as is-stmt.
+clean_restart ${binfile}
+runto_main
+set linum [gdb_get_line_number "main, set var to 0"]
+gdb_breakpoint "$srcfile:$linum"
+gdb_continue_to_breakpoint "Breakpoint on line, set var to 0"
+set pc [get_hexadecimal_valueof "\$pc" "NO-PC"]
+gdb_assert { $ll3 == $pc } "check initial \$pc"
+
+# Restart the test again, this time we will test stepping by
+# instruction.
+clean_restart ${binfile}
+runto_main
+
+# We will be at line_label_1 at this point - we already tested this
+# above.  Now single instruction step forward until we get to
+# line_label_2.  Every instruction before line_label_2 should be
+# attributed to the 'var = 99' line.  For most targets there will only
+# be a single instruction between line_label_1 and line_label_2, but
+# we allow for up to 25 (just a random number).
+
+set $i 0
+set pc [get_hexadecimal_valueof "\$pc" "NO-PC" \
+	   "get pc before stepi loop at line_label_1"]
+while { $pc < $ll2 } {
+    incr i
+    set line_changed -1
+    gdb_test_multiple "stepi" "stepi until line_label_2, $i" {
+	-re "main, set var to 99.*$gdb_prompt" {
+	    set line_changed 0
+	}
+	-re "main, set var to 0.*$gdb_prompt " {
+	    set line_changed 1
+	}
+    }
+    gdb_assert { $line_changed != -1 } \
+	"ensure we saw a valid line pattern, $i"
+    set pc [get_hexadecimal_valueof "\$pc" "NO-PC" \
+		"get pc inside stepi loop from line_label_1, $i"]
+    if { $ll2 == $pc } {
+	gdb_assert { $line_changed } \
+	    "line must change at line_label_2"
+    } else {
+	gdb_assert { !$line_changed } \
+	    "line should not change until line_label_2, $i"
+    }
+}
+
+# Now single instruction step forward until GDB reports a new source
+# line, at which point we should be at line_label_5.
+
+set $i 0
+set pc [get_hexadecimal_valueof "\$pc" "NO-PC" \
+	   "get pc before stepi loop at line_label_2"]
+while { $pc < $ll5 } {
+    incr i
+    set line_changed -1
+    gdb_test_multiple "stepi" "stepi until line_label_5, $i" {
+	-re "main, set var to 0.*$gdb_prompt" {
+	    set line_changed 0
+	}
+	-re "main end.*$gdb_prompt " {
+	    set line_changed 1
+	}
+    }
+    gdb_assert { $line_changed != -1 } \
+	"ensure we saw a valid line pattern, $i"
+    set pc [get_hexadecimal_valueof "\$pc" "NO-PC" \
+		"get pc inside stepi loop from line_label_2, $i"]
+    if { $ll5 == $pc } {
+	gdb_assert { $line_changed } \
+	    "line must change at line_label_5"
+    } else {
+	gdb_assert { !$line_changed } \
+	    "line should not change until line_label_5, $i"
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp ./gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -19,21 +19,14 @@ if {![dwarf2_support]} {
     return 0
 }
 
-standard_testfile .S main.c
+standard_testfile main.c .S
 
 # Make some DWARF for the test.
-set asm_file [standard_output_file $srcfile]
+set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile2
-
-    set main_result [function_range main ${srcdir}/${subdir}/${srcfile2}]
-    set main_start [lindex $main_result 0]
-    set main_length [lindex $main_result 1]
-
     cu {} {
 	compile_unit {
-	    {low_pc $main_start addr}
-	    {high_pc "$main_start + $main_length" addr}
+	    {MACRO_AT_range {main}}
 	} {
 	    declare_labels integer_label
 
@@ -44,10 +37,8 @@ Dwarf::assemble $asm_file {
 	    }
 
 	    DW_TAG_subprogram {
-		{name main}
+		{MACRO_AT_func {main}}
 		{DW_AT_external 1 flag}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_length" addr}
 	    } {
 		DW_TAG_lexical_block {
 		} {
@@ -66,7 +57,7 @@ Dwarf::assemble $asm_file {
 }
 
 if { [prepare_for_testing "failed to prepare" ${testfile} \
-			  [list $srcfile2 $asm_file] {nodebug}] } {
+			  [list $srcfile $asm_file] {nodebug}] } {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.c ./gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,62 @@
+/*
+   Copyright 2020-2021 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/>.  */
+
+void
+foo (int x)
+{
+
+}
+
+void
+bar1 (void)
+{
+  asm ("bar1_label: .globl bar1_label");
+  foo (1);
+  asm ("bar1_label_2: .globl bar1_label_2");
+  foo (2);
+  asm ("bar1_label_3: .globl bar1_label_3");
+  foo (3);
+  asm ("bar1_label_4: .globl bar1_label_4");
+  foo (4);
+  asm ("bar1_label_5: .globl bar1_label_5");
+}
+
+void
+bar2 (void)
+{
+  asm ("bar2_label: .globl bar2_label");
+  foo (1);
+  asm ("bar2_label_2: .globl bar2_label_2");
+  foo (2);
+  asm ("bar2_label_3: .globl bar2_label_3");
+  foo (3);
+  asm ("bar2_label_4: .globl bar2_label_4");
+  foo (4);
+  asm ("bar2_label_5: .globl bar2_label_5");
+}
+
+int
+main (void)
+{
+  asm ("main_label: .globl main_label");
+
+  bar1 ();
+
+  bar2 ();
+
+  return 0;
+}
+
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.exp ./gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-line-number-zero.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,140 @@
+# Copyright 2020-2021 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/>.
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    verbose "Skipping dw2-line-number-zero test."
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    verbose "Skipping dw2-line-number-zero test."
+    return 0
+}
+
+standard_testfile .c dw2-line-number-zero-dw.S
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    declare_labels Llines
+    global srcdir subdir srcfile
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C}
+	    {name dw2-line-number-zero.c}
+	    {stmt_list $Llines DW_FORM_sec_offset}
+	} {
+	    subprogram {
+		{external 1 flag}
+		{MACRO_AT_func {main}}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{MACRO_AT_func {bar1}}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{MACRO_AT_func {bar2}}
+	    }
+	}
+    }
+
+    lines {version 2} Llines {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile" 1
+
+	program {
+	    {DW_LNE_set_address bar1_label}
+	    {line 27}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address bar1_label_2}
+	    {line 29}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address bar1_label_3}
+	    {line 0}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address bar1_label_4}
+	    {line 33}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address bar1_label_5}
+	    {DW_LNE_end_sequence}
+
+
+	    {DW_LNE_set_address bar2_label}
+	    {line 41}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address bar2_label_2}
+	    {line 43}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address bar2_label_3}
+	    {line 0}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+	    {DW_LNS_negate_stmt}
+
+	    {DW_LNE_set_address bar2_label_4}
+	    {line 47}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address bar2_label_5}
+	    {DW_LNE_end_sequence}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+gdb_breakpoint "$srcfile:27"
+gdb_continue_to_breakpoint "bar1" "\[^\r\n\]*:27\r\n.*"
+
+gdb_test "n" "foo \\(2\\);" "bar1, 1st next"
+gdb_test "n" "foo \\(4\\);" "bar1, 2nd next"
+
+gdb_breakpoint "$srcfile:41"
+gdb_continue_to_breakpoint "bar2" "\[^\r\n\]*:41\r\n.*"
+
+gdb_test "n" "foo \\(2\\);" "bar2, 1st next"
+gdb_test "n" "foo \\(4\\);" "bar2, 2nd next"
+
+if ![runto_main] {
+    return -1
+}
+
+gdb_breakpoint "bar1_label_3"
+setup_kfail "gdb/nnnnn" *-*-*
+gdb_continue_to_breakpoint "bar1_label_3" "bar1 \\(\\)"
+
+gdb_breakpoint "bar2_label_3"
+setup_kfail "gdb/nnnnn" *-*-*
+gdb_continue_to_breakpoint "bar2_label_3" "bar2 \\(\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.exp ./gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust-main.cc ./gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust-main.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust-main.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust-main.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.S ./gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-linkage-name-trust.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.exp ./gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.S ./gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-modula2-self-type.exp ./gdb/testsuite/gdb.dwarf2/dw2-modula2-self-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-modula2-self-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-modula2-self-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-modula2-self-type.S ./gdb/testsuite/gdb.dwarf2/dw2-modula2-self-type.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-modula2-self-type.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-modula2-self-type.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.c ./gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+char _ZN12_GLOBAL__N_11vE = 1;
+
+int main ()
+{
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp ./gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -14,19 +14,51 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 load_lib dwarf.exp
 
+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 .S
+standard_testfile dw2-namespaceless-anonymous.c dw2-namespaceless-anonymous.S
 
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" $binfile \
-	   object {nodebug}] != "" } {
-    return -1
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile
+
+    cu {} {
+	DW_TAG_compile_unit {
+	    {DW_AT_language @DW_LANG_C_plus_plus}
+	    {DW_AT_name     dw2-namespaceless-anonymous.c}
+	    {DW_AT_comp_dir /tmp}
+	} {
+	    declare_labels myint
+
+	    myint: DW_TAG_base_type {
+		{DW_AT_byte_size 1 DW_FORM_sdata}
+		{DW_AT_encoding  @DW_ATE_signed}
+		{DW_AT_name      myint}
+	    }
+
+	    DW_TAG_namespace {} {
+		DW_TAG_variable {
+		    {DW_AT_name v}
+		    {DW_AT_linkage_name _ZN12_GLOBAL__N_11vE}
+		    {DW_AT_location {
+			DW_OP_addr [gdb_target_symbol _ZN12_GLOBAL__N_11vE]
+		    } SPECIAL_expr}
+		    {DW_AT_type :$myint}
+		}
+	    }
+	}
+    }
 }
 
-clean_restart $testfile
+if {[prepare_for_testing ${testfile}.exp ${testfile} \
+	 [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
 
 gdb_test "ptype '(anonymous namespace)::v'" "type = myint"
-gdb_test "p '(anonymous namespace)::v'" " = 1"
+gdb_test "p/d '(anonymous namespace)::v'" " = 1"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.S ./gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-namespaceless-anonymous.S	1970-01-01 00:00:00.000000000 +0000
@@ -1,93 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
-   Copyright 2012-2020 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/>.  */
-
-	.data
-var:	.4byte	1
-
-	.section .debug_info
-.Lcu1_begin:
-	/* CU header */
-	.4byte	.Lcu1_end - .Lcu1_start		/* Length of Compilation Unit */
-.Lcu1_start:
-	.2byte	2				/* DWARF Version */
-	.4byte	.Labbrev1_begin			/* Offset into abbrev section */
-	.byte	4				/* Pointer size */
-
-	/* CU die */
-	.uleb128 1				/* Abbrev: DW_TAG_compile_unit */
-	.ascii	"file1.txt\0"			/* DW_AT_name */
-	.ascii	"GNU C 3.3.3\0"			/* DW_AT_producer */
-	.byte	4				/* DW_LANG_C_plus_plus (C++) */
-
-.Ltype_myint:
-	.uleb128	2			/* Abbrev: DW_TAG_base_type */
-	.ascii		"myint\0"			/* DW_AT_name */
-	.byte		4			/* DW_AT_byte_size */
-	.byte		5			/* DW_AT_encoding */
-
-	.uleb128	7			/* Abbrev: DW_TAG_variable (location) */
-	.ascii		"_ZN12_GLOBAL__N_11vE\0" /* DW_AT_name = "(anonymous namespace)::v" */
-	.byte		2f - 1f			/* DW_AT_location */
-1:	.byte		3			/*   DW_OP_addr */
-	.4byte		var			/*   <addr> */
-2:	.4byte		.Ltype_myint-.Lcu1_begin /* DW_AT_type */
-
-	.byte		0			/* End of children of CU */
-
-.Lcu1_end:
-
-/* Abbrev table */
-	.section .debug_abbrev
-.Labbrev1_begin:
-	.uleb128	1			/* Abbrev code */
-	.uleb128	0x11			/* DW_TAG_compile_unit */
-	.byte		1			/* has_children */
-	.uleb128	0x3			/* DW_AT_name */
-	.uleb128	0x8			/* DW_FORM_string */
-	.uleb128	0x25			/* DW_AT_producer */
-	.uleb128	0x8			/* DW_FORM_string */
-	.uleb128	0x13			/* DW_AT_language */
-	.uleb128	0xb			/* DW_FORM_data1 */
-	.byte		0x0			/* Terminator */
-	.byte		0x0			/* Terminator */
-
-	.uleb128	2			/* Abbrev code */
-	.uleb128	0x24			/* DW_TAG_base_type */
-	.byte		0			/* has_children */
-	.uleb128	0x3			/* DW_AT_name */
-	.uleb128	0x8			/* DW_FORM_string */
-	.uleb128	0xb			/* DW_AT_byte_size */
-	.uleb128	0xb			/* DW_FORM_data1 */
-	.uleb128	0x3e			/* DW_AT_encoding */
-	.uleb128	0xb			/* DW_FORM_data1 */
-	.byte		0x0			/* Terminator */
-	.byte		0x0			/* Terminator */
-
-	.uleb128	7			/* Abbrev code (location) */
-	.uleb128	0x34			/* DW_TAG_variable */
-	.byte		0			/* has_children */
-	.uleb128	0x3			/* DW_AT_name */
-	.uleb128	0x8			/* DW_FORM_string */
-	.uleb128	0x2			/* DW_AT_location */
-	.uleb128	0xa			/* DW_FORM_block1 */
-	.uleb128	0x49			/* DW_AT_type */
-	.uleb128	0x13			/* DW_FORM_ref4 */
-	.byte		0x0			/* Terminator */
-	.byte		0x0			/* Terminator */
-
-	.byte		0x0			/* Terminator */
-	.byte		0x0			/* Terminator */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-noloc.exp ./gdb/testsuite/gdb.dwarf2/dw2-noloc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-noloc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-noloc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-noloc-main.c ./gdb/testsuite/gdb.dwarf2/dw2-noloc-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-noloc-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-noloc-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-noloc.S ./gdb/testsuite/gdb.dwarf2/dw2-noloc.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-noloc.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-noloc.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap.exp ./gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-inner.S ./gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-inner.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-inner.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-inner.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-outer.S ./gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-outer.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-outer.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-outer.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-call.exp ./gdb/testsuite/gdb.dwarf2/dw2-op-call.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-call.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-op-call.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-call.S ./gdb/testsuite/gdb.dwarf2/dw2-op-call.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-call.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-op-call.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-out-param.exp ./gdb/testsuite/gdb.dwarf2/dw2-op-out-param.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-out-param.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-op-out-param.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-out-param.S ./gdb/testsuite/gdb.dwarf2/dw2-op-out-param.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-out-param.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-op-out-param.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
@@ -153,14 +153,14 @@ breakpt:
         sub    $0x8,%rsp
         add    $0x8, %rsp
         retq
-.Ltext5:
+.Ltext5a:
         .size   breakpt, .-breakpt
 
         /* int_param_single_reg_loc */
 .globl int_param_single_reg_loc
         .type   int_param_single_reg_loc, @function
 int_param_single_reg_loc:
-.Ltext5:
+.Ltext5b:
         sub    $0x8,%rsp
 .Ltext6:
         nop
@@ -248,7 +248,7 @@ int_param_two_reg_pieces:
 .LASFDE0:
 	.long	.Lframe0                /* CIE reference */
 	.quad	.Ltext4                 /* start */
-	.quad	.Ltext5-.Ltext4         /* length */
+	.quad	.Ltext5a-.Ltext4        /* length */
         /* Instructions */
         .byte   0x7                     /* DW_CFA_undefined */
         .uleb128 0x2                    /* reg# */
@@ -264,11 +264,11 @@ int_param_two_reg_pieces:
 	.long	.LEFDE2-.LASFDE2        /* length */
 .LASFDE2:
 	.long	.Lframe0                /* CIE reference */
-	.quad	.Ltext5                 /* start */
-	.quad	.Ltext7-.Ltext5         /* length */
+	.quad	.Ltext5b                /* start */
+	.quad	.Ltext7-.Ltext5b        /* length */
         /* Instructions */
  	.byte	0x4
-	.long	.Ltext6-.Ltext5
+	.long	.Ltext6-.Ltext5b
 	.byte	0xe
 	.uleb128 0x10
 	.align 8
@@ -357,7 +357,7 @@ int_param_two_reg_pieces:
 	.string	"breakpt"               /* DW_AT_name */
 	.byte	0x1                     /* DW_AT_prototyped */
 	.quad	.Ltext4                 /* DW_AT_low_pc */
-	.quad	.Ltext5                 /* DW_AT_high_pc */
+	.quad	.Ltext5a                /* DW_AT_high_pc */
 
 .LDI2:
 	.uleb128 0x5                    /* DW_TAG_base_type */
@@ -401,7 +401,7 @@ int_param_two_reg_pieces:
 	.byte	0x1                     /* DW_AT_external */
 	.string	"int_param_single_reg_loc"                 /* DW_AT_name */
 	.byte	0x1                     /* DW_AT_prototyped */
-	.quad	.Ltext5                 /* DW_AT_low_pc */
+	.quad	.Ltext5b                /* DW_AT_low_pc */
 	.quad	.Ltext7                 /* DW_AT_high_pc */
 	.long	.LDI11 - .Ldebug_info0  /* DW_AT_sibling */
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-stack-value.exp ./gdb/testsuite/gdb.dwarf2/dw2-op-stack-value.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-stack-value.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-op-stack-value.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-stack-value.S ./gdb/testsuite/gdb.dwarf2/dw2-op-stack-value.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-op-stack-value.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-op-stack-value.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.c ./gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2016-2020 Free Software Foundation, Inc.
+/* Copyright 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp ./gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-opt-structptr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -41,7 +41,6 @@ proc build_test_program {} {
     # Make some DWARF for the test.
     set asm_file [standard_output_file $srcfile2]
     Dwarf::assemble $asm_file {
-        global srcdir subdir srcfile
 
 	# Creating a CU with 4-byte addresses lets this test link on
 	# both 32- and 64-bit machines.
@@ -102,7 +101,7 @@ proc build_test_program {} {
 		    {DW_AT_name func01}
 		    {DW_AT_type :$int_label}
 		    {external   1 flag}
-		    {MACRO_AT_func {func01 ${srcdir}/${subdir}/${srcfile}}}
+		    {MACRO_AT_func {func01}}
 		} {
 		    DW_TAG_variable {
 			{DW_AT_name ptr}
@@ -115,7 +114,7 @@ proc build_test_program {} {
 		    {DW_AT_name main}
 		    {DW_AT_type :$int_label}
 		    {external   1 flag}
-		    {MACRO_AT_func {main ${srcdir}/${subdir}/${srcfile}}}
+		    {MACRO_AT_func {main}}
 		} {
 		}
 	    }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-param-error.exp ./gdb/testsuite/gdb.dwarf2/dw2-param-error.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-param-error.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-param-error.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-param-error-main.c ./gdb/testsuite/gdb.dwarf2/dw2-param-error-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-param-error-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-param-error-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-param-error.S ./gdb/testsuite/gdb.dwarf2/dw2-param-error.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-param-error.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-param-error.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-producer.exp ./gdb/testsuite/gdb.dwarf2/dw2-producer.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-producer.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-producer.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-producer.S ./gdb/testsuite/gdb.dwarf2/dw2-producer.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-producer.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-producer.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges2.c ./gdb/testsuite/gdb.dwarf2/dw2-ranges2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges3.c ./gdb/testsuite/gdb.dwarf2/dw2-ranges3.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges3.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges3.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.c ./gdb/testsuite/gdb.dwarf2/dw2-ranges-base.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges-base.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp ./gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -141,3 +141,39 @@ gdb_test "info line frame2" \
     "Line 21 of .* starts at address .* and ends at .*"
 gdb_test "info line frame3" \
     "Line 31 of .* starts at address .* and ends at .*"
+
+# Ensure that the line table correctly tracks the end of sequence markers.
+set end_seq_count 0
+set prev -1
+set seq_count 0
+gdb_test_multiple "maint info line-table gdb.dwarf2/dw2-ranges-base.c" \
+    "count END markers in line table" {
+	-re "^$decimal\[ \t\]+$decimal\[ \t\]+$hex\(\[ \t\]+Y\)? *\r\n" {
+	    if { $prev != -1 } {
+		gdb_assert "$prev == 1" \
+		    "prev of normal entry at $seq_count is end marker"
+	    }
+	    set prev 0
+	    incr seq_count
+	    exp_continue
+	}
+	-re "^$decimal\[ \t\]+END\[ \t\]+$hex\(\[ \t\]+Y\)? *\r\n" {
+	    if { $prev != -1 } {
+		gdb_assert "$prev == 0" \
+		    "prev of end marker at $seq_count is normal entry"
+	    }
+	    set prev 1
+	    incr seq_count
+	    incr end_seq_count
+	    exp_continue
+	}
+	-re "^$gdb_prompt $" {
+	    gdb_assert [expr $end_seq_count == 3] $gdb_test_name
+	}
+	-re ".*linetable: \\(\\(struct linetable \\*\\) 0x0\\):\r\nNo line table.\r\n" {
+	    exp_continue
+	}
+	-re ".*linetable: \\(\\(struct linetable \\*\\) $hex\\):\r\nINDEX\[ \t\]+LINE\[ \t\]+ADDRESS\[ \t\]+IS-STMT *\r\n" {
+	    exp_continue
+	}
+    }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges.c ./gdb/testsuite/gdb.dwarf2/dw2-ranges.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges.exp ./gdb/testsuite/gdb.dwarf2/dw2-ranges.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp ./gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -134,30 +134,30 @@ proc do_test {suffix} {
 	    # reasonably accurate as it made debugging the test case easier.
 	    program {
 		{DW_LNE_set_address $main_start}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "main prologue"] - 1]}
+		{line [gdb_get_line_number "main prologue"]}
 		{DW_LNS_copy}
 		{DW_LNE_set_address main_label}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "main foo call"] - [gdb_get_line_number "main prologue"]]}
+		{line [gdb_get_line_number "main foo call"]}
 		{DW_LNS_copy}
 		{DW_LNE_set_address main_label2}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "main return"] - [gdb_get_line_number "main foo call"]]}
+		{line [gdb_get_line_number "main return"]}
 		{DW_LNS_copy}
 		{DW_LNE_set_address $main_end}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "main end"] - [gdb_get_line_number "main return"] + 1]}
+		{line [expr [gdb_get_line_number "main end"] + 1]}
 		{DW_LNS_copy}
 		{DW_LNE_end_sequence}
 
 		{DW_LNE_set_address $foo_start}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "foo prologue"] - 1] }
+		{line [gdb_get_line_number "foo prologue"]}
 		{DW_LNS_copy}
 		{DW_LNE_set_address foo_label}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "foo bar call"] - [gdb_get_line_number "foo prologue"]]}
+		{line [gdb_get_line_number "foo bar call"]}
 		{DW_LNS_copy}
 		{DW_LNE_set_address foo_label2}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "foo foo_cold call"] - [gdb_get_line_number "foo bar call"]]}
+		{line [gdb_get_line_number "foo foo_cold call"]}
 		{DW_LNS_copy}
 		{DW_LNE_set_address foo_label3}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "foo end"] - [gdb_get_line_number "foo foo_cold call"]]}
+		{line [gdb_get_line_number "foo end"]}
 		{DW_LNS_copy}
 		{DW_LNE_set_address $foo_end}
 		{DW_LNS_advance_line 1}
@@ -165,7 +165,7 @@ proc do_test {suffix} {
 		{DW_LNE_end_sequence}
 
 		{DW_LNE_set_address $bar_start}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "bar end"] - 1]}
+		{line [gdb_get_line_number "bar end"]}
 		{DW_LNS_copy}
 		{DW_LNS_advance_pc $bar_len}
 		{DW_LNS_advance_line 1}
@@ -173,7 +173,7 @@ proc do_test {suffix} {
 		{DW_LNE_end_sequence}
 
 		{DW_LNE_set_address $baz_start}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "baz end"] - 1]}
+		{line [gdb_get_line_number "baz end"]}
 		{DW_LNS_copy}
 		{DW_LNS_advance_pc $baz_len}
 		{DW_LNS_advance_line 1}
@@ -181,13 +181,13 @@ proc do_test {suffix} {
 		{DW_LNE_end_sequence}
 
 		{DW_LNE_set_address $foo_cold_start}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "foo_cold prologue"] - 1]}
+	        {line [gdb_get_line_number "foo_cold prologue"]}
 		{DW_LNS_copy}
 		{DW_LNE_set_address foo_cold_label}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "foo_cold baz call"] - [gdb_get_line_number "foo_cold prologue"]]}
+		{line [gdb_get_line_number "foo_cold baz call"]}
 		{DW_LNS_copy}
 		{DW_LNE_set_address foo_cold_label2}
-		{DW_LNS_advance_line [expr [gdb_get_line_number "foo_cold end"] - [gdb_get_line_number "foo_cold baz call"]]}
+		{line [gdb_get_line_number "foo_cold end"]}
 		{DW_LNS_copy}
 		{DW_LNE_set_address $foo_cold_end}
 		{DW_LNS_advance_line 1}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-func-hi-cold.c ./gdb/testsuite/gdb.dwarf2/dw2-ranges-func-hi-cold.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-func-hi-cold.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges-func-hi-cold.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-func-lo-cold.c ./gdb/testsuite/gdb.dwarf2/dw2-ranges-func-lo-cold.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-func-lo-cold.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges-func-lo-cold.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-main.c ./gdb/testsuite/gdb.dwarf2/dw2-ranges-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.c ./gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp ./gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp ./gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame-func.c ./gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame-func.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame-func.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame-func.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame-main.c ./gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.S ./gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ref-missing-frame.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp ./gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-regno-invalid.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -22,15 +22,14 @@ if {![dwarf2_support]} {
     return 0
 }
 
-standard_testfile .S main.c
+standard_testfile main.c .S
 
 # Make some DWARF for the test.
-set asm_file [standard_output_file $srcfile]
+set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     cu {} {
 	compile_unit {
-	    {low_pc [gdb_target_symbol main] DW_FORM_addr}
-	    {high_pc [gdb_target_symbol main]+0x10000 DW_FORM_addr}
+	    {MACRO_AT_range {main}}
 	} {
 	    declare_labels integer_label
 
@@ -41,10 +40,8 @@ Dwarf::assemble $asm_file {
 	    }
 
 	    DW_TAG_subprogram {
-		{name main}
 		{DW_AT_external 1 flag}
-		{low_pc [gdb_target_symbol main] DW_FORM_addr}
-		{high_pc [gdb_target_symbol main]+0x10000 DW_FORM_addr}
+		{MACRO_AT_func {main}}
 	    } {
 		DW_TAG_variable {
 		    {DW_AT_name bregx}
@@ -60,7 +57,7 @@ Dwarf::assemble $asm_file {
 }
 
 if { [prepare_for_testing "failed to prepare" ${testfile} \
-			  [list $srcfile2 $asm_file] {nodebug}] } {
+			  [list $srcfile $asm_file] {nodebug}] } {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.c ./gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.exp ./gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -26,7 +26,7 @@ if {![istarget "x86_64-*-*"] || ![is_lp6
 
 standard_testfile .S
 
-if { [prepare_for_testing "failed to prepare" $testfile $srcfile {nodebug}] } {
+if { [prepare_for_testing "failed to prepare" $testfile $srcfile {nodebug nopie}] } {
     return -1
 }
 
@@ -66,6 +66,23 @@ for {set f 0} {$f < 3} {incr f} {
 
 
     # Display register values.
-    gdb_test "info registers rax rbx rcx r8 r9" "rax\\s+${pattern_rax_rbx_rcx_info}\\s*\r\nrbx\\s+${pattern_rax_rbx_rcx_info}\\s*\r\nrcx\\s+${pattern_rax_rbx_rcx_info}\\s*\r\nr8\\s+${pattern_r8_r9_info}\\s*\r\nr9\\s+${pattern_r8_r9_info}\\s*" \
+    gdb_test "info registers rax rbx rcx r8 r9" \
+	[multi_line "rax\\s+${pattern_rax_rbx_rcx_info}\\s*" \
+		    "rbx\\s+${pattern_rax_rbx_rcx_info}\\s*" \
+		    "rcx\\s+${pattern_rax_rbx_rcx_info}\\s*" \
+		    "r8\\s+${pattern_r8_r9_info}\\s*" \
+		    "r9\\s+${pattern_r8_r9_info}\\s*"] \
 	"Check values of rax, rbx, rcx, r8, r9 in frame ${f}"
 }
+
+# Test that the debug log statement in frame_unwind_register_value produces
+# "not saved" and not "optimized out".
+gdb_test "set debug frame 1"
+gdb_test {print $rax} {frame_unwind_register_value[^\r\n]+rax[^\r\n]+not saved.*}
+gdb_test "set debug frame 0"
+
+# Test that history values show "not saved" and not "optimized out".
+gdb_test "print" " = <not saved>"
+
+# Test that convenience variables _don't_ show "not saved".
+gdb_test {print $foo = $rax} " = <optimized out>"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.S ./gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-reg-undefined.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-restore.exp ./gdb/testsuite/gdb.dwarf2/dw2-restore.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-restore.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-restore.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -21,8 +21,15 @@ if {![istarget x86_64-*] || ![is_lp64_ta
 }
 standard_testfile .S
 
+set opts [list {additional_flags=-nostdlib}]
+
+# Clang's integrated assembler doesn't support .func or .endfunc.
+if { [test_compiler_info clang*] } {
+    lappend opts [list {additional_flags=-fno-integrated-as}]
+}
+
 if {[prepare_for_testing "failed to prepare" $testfile [list $srcfile] \
-	 [list {additional_flags=-nostdlib}]]} {
+	 $opts]} {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-restore.S ./gdb/testsuite/gdb.dwarf2/dw2-restore.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-restore.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-restore.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-restrict.c ./gdb/testsuite/gdb.dwarf2/dw2-restrict.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-restrict.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-restrict.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-restrict.exp ./gdb/testsuite/gdb.dwarf2/dw2-restrict.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-restrict.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-restrict.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-restrict.S ./gdb/testsuite/gdb.dwarf2/dw2-restrict.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-restrict.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-restrict.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.exp ./gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.S ./gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-simple-locdesc.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.c ./gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.exp ./gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -31,7 +31,7 @@ if {![istarget x86_64-*] || ![is_lp64_ta
 standard_testfile .S
 set csrcfile ${testfile}.c
 
-if { [prepare_for_testing "failed to prepare" "${testfile}" $srcfile {nodebug}] } {
+if { [prepare_for_testing "failed to prepare" "${testfile}" $srcfile {nodebug nopie}] } {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.S ./gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-single-line-discriminators.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.c ./gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp ./gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.S ./gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp ./gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.S ./gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-stack-boundary.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-strp.exp ./gdb/testsuite/gdb.dwarf2/dw2-strp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-strp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-strp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-strp.S ./gdb/testsuite/gdb.dwarf2/dw2-strp.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-strp.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-strp.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp ./gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-symtab-includes.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,78 @@
+# Copyright 2020-2021 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/>.
+
+# Check that symtab user and includes are present after symtab expansion
+# triggered by an include file.
+
+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 main.c .S
+
+# Create the DWARF.
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    declare_labels partial_label lines_label
+    global srcdir subdir srcfile
+
+    cu {} {
+	partial_label: partial_unit {} {
+	}
+    }
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C}
+	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	} {
+	    imported_unit {
+		{import $partial_label ref_addr}
+	    }
+	}
+    }
+
+    lines {version 2} lines_label {
+	include_dir "${srcdir}/${subdir}"
+	file_name "dw2-symtab-includes.h" 1
+	program {
+	    {DW_LNS_advance_line 1}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" $testfile \
+	  "${asm_file} ${srcfile}" {}] } {
+    return -1
+}
+
+# Check that no symtabs are expanded.
+set test "no symtabs expanded"
+if { [readnow] } {
+    unsupported $test
+    return -1
+}
+gdb_test_no_output "maint info symtabs" $test
+
+# Expand dw2-symtab-includes.h symtab
+gdb_test "maint expand-symtab dw2-symtab-includes.h"
+
+# Check that there are includes.
+gdb_test "maint info symtabs" \
+    "\r\n    \\( includes\r\n.*" \
+    "check symtab includes"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.c ./gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.exp ./gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -26,7 +26,7 @@ if {![istarget x86_64-*] || ![is_lp64_ta
     return 0
 }
 
-if {[prepare_for_testing "failed to prepare" "$testfile" $srcfile {nodebug}]} {
+if {[prepare_for_testing "failed to prepare" "$testfile" $srcfile {nodebug nopie}]} {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.S ./gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-undefined-ret-addr.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-unresolved.exp ./gdb/testsuite/gdb.dwarf2/dw2-unresolved.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-unresolved.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-unresolved.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-unresolved-main.c ./gdb/testsuite/gdb.dwarf2/dw2-unresolved-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-unresolved-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-unresolved-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-unresolved.S ./gdb/testsuite/gdb.dwarf2/dw2-unresolved.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-unresolved.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-unresolved.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.c ./gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.exp ./gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-unusual-field-names.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-var-zero-addr.exp ./gdb/testsuite/gdb.dwarf2/dw2-var-zero-addr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-var-zero-addr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-var-zero-addr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-var-zero-addr.S ./gdb/testsuite/gdb.dwarf2/dw2-var-zero-addr.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-var-zero-addr.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-var-zero-addr.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.c ./gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,32 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+void
+foo (void)
+{
+
+}
+
+int
+main()
+{
+  asm ("main_label: .globl main_label");
+  foo ();
+
+  asm ("main_label_2: .globl main_label_2");
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.exp ./gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-vendor-extended-opcode.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,81 @@
+# Copyright 2020-2021 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/>.
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    verbose "Skipping dw2-vendor-extended-opcode test."
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    verbose "Skipping dw2-vendor-extended-opcode test."
+    return 0
+}
+
+standard_testfile dw2-vendor-extended-opcode.c dw2-vendor-extended-opcode-dw.S
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    declare_labels Llines
+    global srcdir subdir srcfile
+
+    set DW_LNE_lo_usr 0x80
+    set DW_LNE_hi_usr 0xff
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C}
+	    {name dw2-vendor-extended-opcode.c}
+	    {stmt_list $Llines DW_FORM_sec_offset}
+	} {
+	    subprogram {
+		{external 1 flag}
+		{MACRO_AT_func {main}}
+	    }
+	}
+    }
+
+    lines {version 2} Llines {
+	include_dir "${srcdir}/${subdir}"
+	file_name "$srcfile" 1
+
+	program {
+	    {DW_LNE_set_address main_label}
+	    {line 27}
+	    {DW_LNE_user 1 $DW_LNE_lo_usr}
+	    {DW_LNE_user 2 $DW_LNE_hi_usr}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address main_label_2}
+	    {DW_LNE_end_sequence}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+gdb_breakpoint "$srcfile:27" message
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw4-sig-types.exp ./gdb/testsuite/gdb.dwarf2/dw4-sig-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw4-sig-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw4-sig-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw4-sig-type-unused.exp ./gdb/testsuite/gdb.dwarf2/dw4-sig-type-unused.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw4-sig-type-unused.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw4-sig-type-unused.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw4-sig-type-unused.S ./gdb/testsuite/gdb.dwarf2/dw4-sig-type-unused.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw4-sig-type-unused.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw4-sig-type-unused.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw4-toplevel-types.cc ./gdb/testsuite/gdb.dwarf2/dw4-toplevel-types.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw4-toplevel-types.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw4-toplevel-types.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,21 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+struct X {} x;
+struct Y {} y;
+struct Z {} z;
+int main() {}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw4-toplevel-types.exp ./gdb/testsuite/gdb.dwarf2/dw4-toplevel-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw4-toplevel-types.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw4-toplevel-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,36 @@
+# Copyright 2020-2021 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 dwarf4 signatured types (DW_TAG_type_unit).
+
+standard_testfile .cc
+
+# This test is intended for targets which support DWARF-4.
+# Since we pass an explicit -gdwarf-4 -fdebug-types-section to the compiler,
+# we let that be the test of whether the target supports it.
+
+if { [prepare_for_testing "failed to prepare" "${testfile}" \
+	  $srcfile {debug c++ additional_flags=-gdwarf-4 \
+			additional_flags=-fdebug-types-section}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+gdb_test "ptype X" "type = struct X {.*"
+gdb_test "ptype Y" "type = struct Y {.*"
+gdb_test "ptype Z" "type = struct Z {.*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.cc ./gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,97 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <iostream>
+#include <vector>
+
+struct node {
+  int id;
+  node *left;
+  node *right;
+  bool visited;
+};
+
+node  node_array[50];
+unsigned int CUR_IDX = 0;
+
+node *
+make_node (int val)
+{
+  node *new_node = &(node_array[CUR_IDX++]);
+  new_node->left = NULL;
+  new_node->right = NULL;
+  new_node->id = val;
+  new_node->visited = false;
+
+  return new_node;
+}
+
+void
+tree_insert (node *root, int val)
+{
+  if (val < root->id)
+    {
+      if (root->left)
+        tree_insert (root->left, val);
+      else
+        root->left = make_node(val);
+    }
+  else if (val > root->id)
+    {
+      if (root->right)
+        tree_insert (root->right, val);
+      else
+        root->right = make_node(val);
+    }
+}
+
+void
+inorder (node *root)
+{
+  std::vector<node *> todo;
+  todo.push_back (root);
+  while (!todo.empty())
+    {
+      node *curr = todo.back();
+      todo.pop_back(); /* break-here */
+      if (curr->visited)
+        std::cout << curr->id << " ";
+      else
+        {
+          curr->visited = true;
+          if (curr->right)
+            todo.push_back (curr->right);
+          todo.push_back (curr);
+          if (curr->left)
+            todo.push_back (curr->left);
+        }
+    }
+}
+
+int
+main (int argc, char **argv)
+{
+  node *root = make_node (35);
+
+  tree_insert (root, 28);
+  tree_insert (root, 20);
+  tree_insert (root, 60);
+
+  inorder (root);
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.exp ./gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dw5-rnglist-test.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,40 @@
+# Copyright 2020-2021 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/>.
+
+# Check that GDB can find the variables in a lexical block with a
+# DW_FORM_rnglistx DW_AT_ranges field.  This test is intended for DWARF-5,
+# compiled with clang++.
+
+standard_testfile .cc
+
+# This test is intended for targets which support DWARF-5.
+# Since we pass an explicit -gdwarf-5 to the compiler,
+# we let that be the test of whether the target supports it.
+
+if { [prepare_for_testing "failed to prepare" "${testfile}" \
+          $srcfile {debug c++ additional_flags=-gdwarf-5 \
+                        additional_flags=-O0}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+gdb_breakpoint [gdb_get_line_number "break-here"]
+gdb_continue_to_breakpoint "break-here" ".* break-here .*"
+
+gdb_test "print curr" "\\\(node \\\*\\\) $hex <node_array>"
+gdb_test "print *curr" "= {id = 35, left = $hex <node_array\\+$decimal>, right = $hex <node_array\\+$decimal>, visited = false}"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwp-sepdebug.c ./gdb/testsuite/gdb.dwarf2/dwp-sepdebug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwp-sepdebug.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dwp-sepdebug.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwp-sepdebug.exp ./gdb/testsuite/gdb.dwarf2/dwp-sepdebug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwp-sepdebug.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dwp-sepdebug.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwp-symlink.c ./gdb/testsuite/gdb.dwarf2/dwp-symlink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwp-symlink.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dwp-symlink.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwp-symlink.exp ./gdb/testsuite/gdb.dwarf2/dwp-symlink.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwp-symlink.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dwp-symlink.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwzbuildid.exp ./gdb/testsuite/gdb.dwarf2/dwzbuildid.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwzbuildid.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dwzbuildid.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -138,7 +138,7 @@ if {[gdb_compile [list ${binfile}1.o ${b
 }
 
 if {[gdb_compile [list ${binfile}1.o ${binfile}4.o] ${binfile}-mismatch \
-	 executable {}] != ""} {
+	 executable {quiet}] != ""} {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwz.exp ./gdb/testsuite/gdb.dwarf2/dwz.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dwz.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dwz.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -26,14 +26,11 @@ standard_testfile main.c dwz.S
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     declare_labels partial_label int_label int_label2
-    global srcdir subdir srcfile
-
-    extern main
 
     cu {} {
 	partial_label: partial_unit {} {
 	    subprogram {
- 		{MACRO_AT_func { main ${srcdir}/${subdir}/${srcfile} }}
+		{MACRO_AT_func { main }}
 	    }
 	}
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dynarr-ptr.c ./gdb/testsuite/gdb.dwarf2/dynarr-ptr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dynarr-ptr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dynarr-ptr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2014-2020 Free Software Foundation, Inc.
+/* Copyright 2014-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp ./gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/enum-type.exp ./gdb/testsuite/gdb.dwarf2/enum-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/enum-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/enum-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-base.c ./gdb/testsuite/gdb.dwarf2/fission-base.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-base.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-base.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-base.exp ./gdb/testsuite/gdb.dwarf2/fission-base.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-base.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-base.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-base.S ./gdb/testsuite/gdb.dwarf2/fission-base.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-base.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-base.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-loclists.exp ./gdb/testsuite/gdb.dwarf2/fission-loclists.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-loclists.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-loclists.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-loclists-pie.exp ./gdb/testsuite/gdb.dwarf2/fission-loclists-pie.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-loclists-pie.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-loclists-pie.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-loclists-pie.S ./gdb/testsuite/gdb.dwarf2/fission-loclists-pie.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-loclists-pie.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-loclists-pie.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-loclists.S ./gdb/testsuite/gdb.dwarf2/fission-loclists.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-loclists.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-loclists.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-mix2.c ./gdb/testsuite/gdb.dwarf2/fission-mix2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-mix2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-mix2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-mix.c ./gdb/testsuite/gdb.dwarf2/fission-mix.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-mix.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-mix.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-mix.exp ./gdb/testsuite/gdb.dwarf2/fission-mix.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-mix.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-mix.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-mix.h ./gdb/testsuite/gdb.dwarf2/fission-mix.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-mix.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-mix.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-multi-cu1.c ./gdb/testsuite/gdb.dwarf2/fission-multi-cu1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-multi-cu1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-multi-cu1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-multi-cu2.c ./gdb/testsuite/gdb.dwarf2/fission-multi-cu2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-multi-cu2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-multi-cu2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-multi-cu.exp ./gdb/testsuite/gdb.dwarf2/fission-multi-cu.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-multi-cu.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-multi-cu.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-multi-cu.S ./gdb/testsuite/gdb.dwarf2/fission-multi-cu.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-multi-cu.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-multi-cu.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-reread.exp ./gdb/testsuite/gdb.dwarf2/fission-reread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-reread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-reread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-reread.S ./gdb/testsuite/gdb.dwarf2/fission-reread.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/fission-reread.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/fission-reread.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/formdata16.c ./gdb/testsuite/gdb.dwarf2/formdata16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/formdata16.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/formdata16.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/formdata16.exp ./gdb/testsuite/gdb.dwarf2/formdata16.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/formdata16.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/formdata16.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp ./gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,115 @@
+# Copyright 2020-2021 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 unwinding when we have a frame inlined in the outer frame (in the sense
+# of frame.c:outer_frame_id).
+#
+# The conditions required to reproduce the original issue are:
+#
+#  1. Have an outer frame whose DWARF CFI explicitly says that the frame return
+#     address is undefined.
+#  2. A frame inlined in this other frame.
+#
+# Because of (1), the test has to be written in assembly with explicit CFI
+# directives.
+
+load_lib dwarf.exp
+
+if {![dwarf2_support]} {
+    return 0
+}
+
+standard_testfile .S
+
+set dwarf_asm [standard_output_file dwarf-asm.S]
+Dwarf::assemble $dwarf_asm {
+    declare_labels foo_subprogram bar_subprogram
+    declare_labels stmt_list
+
+    # See the comment in the .S file for the equivalent C program this is meant
+    # to represent.
+
+    cu { addr_size 4 } {
+	DW_TAG_compile_unit {
+	    {DW_AT_name file1.txt}
+	    {DW_AT_stmt_list $stmt_list DW_FORM_sec_offset}
+	    {DW_AT_language @DW_LANG_C99}
+	    {DW_AT_low_pc __cu_low_pc DW_FORM_addr}
+	    {DW_AT_high_pc __cu_high_pc DW_FORM_addr}
+	} {
+	    DW_TAG_subprogram {
+		{DW_AT_name "_start"}
+		{DW_AT_low_pc __start_low_pc DW_FORM_addr}
+		{DW_AT_high_pc __start_high_pc DW_FORM_addr}
+	    } {
+		DW_TAG_inlined_subroutine {
+		    {DW_AT_abstract_origin :$foo_subprogram}
+		    {DW_AT_low_pc __foo_low_pc DW_FORM_addr}
+		    {DW_AT_high_pc __foo_high_pc DW_FORM_addr}
+		    {DW_AT_call_file 1 DW_FORM_data1}
+		    {DW_AT_call_line 13 DW_FORM_data1}
+		} {
+		    DW_TAG_inlined_subroutine {
+			{DW_AT_abstract_origin :$bar_subprogram}
+			{DW_AT_low_pc __bar_low_pc DW_FORM_addr}
+			{DW_AT_high_pc __bar_high_pc DW_FORM_addr}
+			{DW_AT_call_file 1 DW_FORM_data1}
+			{DW_AT_call_line 7 DW_FORM_data1}
+		    }
+		}
+	    }
+
+	    foo_subprogram: DW_TAG_subprogram {
+		{DW_AT_name "foo"}
+		{DW_AT_prototyped 1 DW_FORM_flag_present}
+		{DW_AT_inline 0x1 DW_FORM_data1}
+	    }
+
+	    bar_subprogram: DW_TAG_subprogram {
+		{DW_AT_name "bar"}
+		{DW_AT_prototyped 1 DW_FORM_flag_present}
+		{DW_AT_inline 0x1 DW_FORM_data1}
+	    }
+	}
+    }
+
+    lines { } stmt_list {
+	global srcdir subdir srcfile
+
+	include_dir "/some/directory"
+	file_name "/some/directory/file.c" 0
+    }
+}
+
+if { [build_executable ${testfile}.exp ${testfile} "$srcfile $dwarf_asm" \
+      {additional_flags=-nostdlib additional_flags=-static}] != 0 } {
+    untested "failed to compile"
+    return
+}
+
+clean_restart $binfile
+
+if { [gdb_starti_cmd] != 0 } {
+    fail "failed to run to first instruction"
+    return
+}
+gdb_test "" "Program stopped.*" "starti prompt"
+
+gdb_test "frame" "in _start .*"
+
+gdb_test "stepi" "in foo .*" "step into foo"
+gdb_test "stepi" "in bar .*" "step into bar"
+gdb_test "stepi" "in foo .*" "step back into foo"
+gdb_test "stepi" "in _start .*" "step back into _start"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.S ./gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.S	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/frame-inlined-in-outer-frame.S	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,137 @@
+/* Copyright 2020-2021 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/>.  */
+
+#include <asm/unistd.h>
+
+/* Define these for each architecture:
+
+   1) RETURN_ADDRESS_REGNO: The register number representing the return
+      address in the DWARF CFI.  It can be easily be looked up using
+      `readelf --debug-dump=frames-interp` on an existing binary of that
+      architecture, where it says `ra=X`.
+
+   2) exit_0: a sequence of instruction to execute the exit syscall with
+      argument 0.  */
+
+#if defined(__x86_64__)
+
+# define RETURN_ADDRESS_REGNO 16
+
+.macro exit_0
+	mov $__NR_exit, %rax
+	mov $0, %rdi
+	syscall
+.endm
+
+#elif defined(__i386__)
+
+# define RETURN_ADDRESS_REGNO 8
+
+.macro exit_0
+	mov $__NR_exit, %eax
+	mov $0, %ebx
+	int $0x80
+.endm
+
+#elif defined(__aarch64__)
+
+# define RETURN_ADDRESS_REGNO 30
+
+.macro exit_0
+	mov x0, #0
+	mov x8, #__NR_exit
+	svc #0
+.endm
+
+#elif defined(__arm__)
+
+# define RETURN_ADDRESS_REGNO 14
+
+.macro exit_0
+	ldr r7, =__NR_exit
+	ldr r0, =0
+	swi 0x0
+.endm
+
+#else
+# error "Unsupported architecture"
+#endif
+
+/* The following assembly program mimics this pseudo C program, where
+   everything has been inlined:
+
+    1 void bar(void) {
+    2   nop;
+    3 }
+    4
+    5 void foo(void) {
+    6   nop;
+    7   bar();
+    8   nop;
+    9 }
+   10
+   11 void _start(void) {
+   12   nop;
+   13   foo();
+   14   nop;
+   15   exit(0);
+   16 }
+*/
+
+.global _start
+_start:
+.cfi_startproc
+
+/* State that the return address for this frame is undefined. */
+.cfi_undefined RETURN_ADDRESS_REGNO
+
+.global __cu_low_pc
+__cu_low_pc:
+
+.global __start_low_pc
+__start_low_pc:
+	/* Line 12 */
+	nop
+
+.global __foo_low_pc
+__foo_low_pc:
+	/* Line 6 */
+	nop
+
+.global __bar_low_pc
+__bar_low_pc:
+	/* Line 2 */
+	nop
+
+.global __bar_high_pc
+__bar_high_pc:
+	/* Line 8 */
+	nop
+
+.global __foo_high_pc
+__foo_high_pc:
+	/* Line 14 */
+	nop
+
+	/* Line 15 */
+	exit_0
+
+.cfi_endproc
+
+.global __start_high_pc
+__start_high_pc:
+
+.global __cu_high_pc
+__cu_high_pc:
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/gdb-add-index.exp ./gdb/testsuite/gdb.dwarf2/gdb-add-index.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/gdb-add-index.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/gdb-add-index.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -27,48 +27,14 @@ if { [prepare_for_testing "failed to pre
     return -1
 }
 
-# Add a .gdb_index section to PROGRAM.
-# PROGRAM is assumed to be the output of standard_output_file.
-# Returns the 0 if there is a failure, otherwise 1.
-
-proc add_gdb_index { program } {
-    global srcdir GDB env BUILD_DATA_DIRECTORY
-    set contrib_dir "$srcdir/../contrib"
-    set env(GDB) "$GDB --data-directory=$BUILD_DATA_DIRECTORY"
-    set result [catch "exec $contrib_dir/gdb-add-index.sh $program" output]
-    if { $result != 0 } {
-	verbose -log "result is $result"
-	verbose -log "output is $output"
-	return 0
-    }
-
-    return 1
-}
-
-# Build a copy of the program with an index (.gdb_index/.debug_names).
-# But only if the toolchain didn't already create one: gdb doesn't support
-# building an index from a program already using one.
-
-set test "check if index present"
-gdb_test_multiple "mt print objfiles ${testfile}" $test {
-    -re "gdb_index.*${gdb_prompt} $" {
-	set binfile_with_index $binfile
-    }
-    -re "debug_names.*${gdb_prompt} $" {
-	set binfile_with_index $binfile
-    }
-    -re "Psymtabs.*${gdb_prompt} $" {
-	if { [add_gdb_index $binfile] != "1" } {
-	    return -1
-	}
-	set binfile_with_index $binfile
-    }
+if { [ensure_gdb_index $binfile] == -1 } {
+    return -1
 }
 
 # Ok, we have a copy of $binfile with an index.
 # Restart gdb and verify the index was used.
 
-clean_restart ${binfile_with_index}
+clean_restart ${binfile}
 gdb_test "mt print objfiles ${testfile}" \
     "(gdb_index|debug_names).*" \
     "index used"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/gdb-index.exp ./gdb/testsuite/gdb.dwarf2/gdb-index.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/gdb-index.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/gdb-index.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptr-64bit.exp ./gdb/testsuite/gdb.dwarf2/implptr-64bit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptr-64bit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implptr-64bit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -81,9 +81,7 @@ proc test { dwarf_version offset_size ad
 
 		if { !$two_cu } {
 		    subprogram {
-			{ name main }
-			{ low_pc main addr }
-			{ high_pc "main+0x100" addr }
+			{MACRO_AT_func {main}}
 			{ type :$int_label }
 			{ external 1 flag }
 		    } {
@@ -111,9 +109,7 @@ proc test { dwarf_version offset_size ad
 		    { name 1.c }
 		} {
 		    subprogram {
-			{ name main }
-			{ low_pc main addr }
-			{ high_pc "main+0x100" addr }
+			{ MACRO_AT_func {main} }
 			{ type %$int_label }
 			{ external 1 flag }
 		    } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptr.c ./gdb/testsuite/gdb.dwarf2/implptr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implptr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2010-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptrconst.c ./gdb/testsuite/gdb.dwarf2/implptrconst.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptrconst.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implptrconst.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptrconst.exp ./gdb/testsuite/gdb.dwarf2/implptrconst.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptrconst.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implptrconst.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptr.exp ./gdb/testsuite/gdb.dwarf2/implptr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implptr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp ./gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -25,8 +25,6 @@ set executable ${testfile}
 # Create the DWARF.
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
-
     cu { version 3 addr_size 4 } {
 	compile_unit {
 	    {producer "GNU C 4.4.3"}
@@ -53,7 +51,7 @@ Dwarf::assemble $asm_file {
 	    }
 
 	    subprogram {
-		{MACRO_AT_func { main ${srcdir}/${subdir}/${srcfile} }}
+		{MACRO_AT_func { main }}
 		{type :$int_label}
 		{external 1 flag}
 	    } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptrpiece.exp ./gdb/testsuite/gdb.dwarf2/implptrpiece.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implptrpiece.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implptrpiece.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-array.c ./gdb/testsuite/gdb.dwarf2/implref-array.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-array.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implref-array.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2016-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-array.exp ./gdb/testsuite/gdb.dwarf2/implref-array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-array.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implref-array.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -51,7 +51,7 @@ set array_length [get_valueof "/u" "size
 # The variable must be global so that its name is an exported symbol that we
 # can reference from the DWARF using gdb_target_symbol.
 Dwarf::assemble ${asm_file} {
-    global srcdir subdir srcfile array_length
+    global array_length
 
     cu {} {
 	DW_TAG_compile_unit {
@@ -99,7 +99,7 @@ Dwarf::assemble ${asm_file} {
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { "main" "${srcdir}/${subdir}/${srcfile}" }}
+		{MACRO_AT_func { "main" }}
 		{DW_AT_type :${int_label}}
 		{DW_AT_external 1 DW_FORM_flag}
 	    } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-const.exp ./gdb/testsuite/gdb.dwarf2/implref-const.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-const.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implref-const.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -47,8 +47,6 @@ if [prepare_for_testing "failed to prepa
 # Create the DWARF.  We need a regular variable and a reference to it that'll
 # be marked with DW_OP_GNU_implicit_pointer.
 Dwarf::assemble ${asm_file} {
-    global srcdir subdir srcfile
-
     cu {} {
 	DW_TAG_compile_unit {
 	    {DW_AT_language @DW_LANG_C_plus_plus}
@@ -76,7 +74,7 @@ Dwarf::assemble ${asm_file} {
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { "main" "${srcdir}/${subdir}/${srcfile}" }}
+		{MACRO_AT_func { "main" }}
 		{DW_AT_type :${int_label}}
 		{DW_AT_external 1 DW_FORM_flag}
 	    } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-global.c ./gdb/testsuite/gdb.dwarf2/implref-global.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-global.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implref-global.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2016-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-global.exp ./gdb/testsuite/gdb.dwarf2/implref-global.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-global.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implref-global.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -49,8 +49,6 @@ if [prepare_for_testing "failed to prepa
 # that its name is an exported symbol that we can reference from the DWARF
 # using gdb_target_symbol.
 Dwarf::assemble ${asm_file} {
-    global srcdir subdir srcfile
-
     cu {} {
 	DW_TAG_compile_unit {
 	    {DW_AT_language @DW_LANG_C_plus_plus}
@@ -80,7 +78,7 @@ Dwarf::assemble ${asm_file} {
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { "main" "${srcdir}/${subdir}/${srcfile}" }}
+		{MACRO_AT_func { "main" }}
 		{DW_AT_type :${int_label}}
 		{DW_AT_external 1 DW_FORM_flag}
 	    } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-struct.c ./gdb/testsuite/gdb.dwarf2/implref-struct.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-struct.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implref-struct.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2016-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-struct.exp ./gdb/testsuite/gdb.dwarf2/implref-struct.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/implref-struct.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/implref-struct.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -49,8 +49,6 @@ if [prepare_for_testing "failed to prepa
 # global so that its name is an exported symbol that can we can reference from
 # the DWARF using gdb_target_symbol.
 Dwarf::assemble ${asm_file} {
-    global srcdir subdir srcfile
-
     cu {} {
 	DW_TAG_compile_unit {
 	    {DW_AT_language @DW_LANG_C_plus_plus}
@@ -115,7 +113,7 @@ Dwarf::assemble ${asm_file} {
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { "main" "${srcdir}/${subdir}/${srcfile}" }}
+		{MACRO_AT_func { "main" }}
 		{DW_AT_type :${int_label}}
 		{DW_AT_external 1 DW_FORM_flag}
 	    } {
@@ -177,9 +175,11 @@ foreach_with_prefix print-object {"off"
 # Test assignment through the synthetic reference.
 gdb_test_no_output "set (ref = s2)"
 
-foreach_with_prefix print-object {"off" "on"} {
-    gdb_test_no_output "set print object ${print-object}"
+with_test_prefix "after assignment" {
+    foreach_with_prefix print-object {"off" "on"} {
+	gdb_test_no_output "set print object ${print-object}"
 
-    gdb_test "print ref" " = \\(S &\\) @${address}: \\{${s2_members}\\}" "print ref after assignment"
-    gdb_test "print s1" " = \\{${s2_members}\\}" "print s1 after assignment"
+	gdb_test "print ref" " = \\(S &\\) @${address}: \\{${s2_members}\\}" "print ref"
+	gdb_test "print s1" " = \\{${s2_members}\\}" "print s1"
+    }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit-abstract-const-value.exp ./gdb/testsuite/gdb.dwarf2/imported-unit-abstract-const-value.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit-abstract-const-value.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/imported-unit-abstract-const-value.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,89 @@
+# Copyright 2020-2021 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 that a concrete var importing an abstract var using
+# DW_AT_abstract_origin inherits the DW_AT_const_value attribute.
+
+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 main.c .S
+
+set executable ${testfile}
+set asm_file [standard_output_file ${srcfile2}]
+
+# We need to know the size of integer type in order
+# to write some of the debugging info we'd like to generate.
+if [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] {
+    return -1
+}
+
+# Create the DWARF.
+Dwarf::assemble $asm_file {
+    declare_labels cu_label main_label int_label
+    declare_labels aaa_label
+    set int_size [get_sizeof "int" 4]
+
+    cu {} {
+	cu_label: partial_unit {
+	    {language @DW_LANG_C}
+	    {name "imported_unit.c"}
+	} {
+	    int_label: base_type {
+		{byte_size $int_size sdata}
+		{encoding @DW_ATE_signed}
+		{name int}
+	    }
+
+	    aaa_label: DW_TAG_variable {
+		{name aaa}
+		{type :$int_label}
+		{const_value 1 DW_FORM_sdata}
+	    }
+
+	    main_label: subprogram {
+		{name main}
+		{type :$int_label}
+		{external 1 flag}
+	    }
+	}
+    }
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C}
+	    {name "<artificial>"}
+	} {
+	    DW_TAG_variable {
+		{abstract_origin %$aaa_label}
+	    }
+	    subprogram {
+		{abstract_origin %$main_label}
+		{MACRO_AT_range {main}}
+	    }
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+gdb_test "p aaa" "= 1"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit-bp-alt.c ./gdb/testsuite/gdb.dwarf2/imported-unit-bp-alt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit-bp-alt.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/imported-unit-bp-alt.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,50 @@
+/* Copyright 2020-2021 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/>.  */
+
+/* Used to insert labels with which we can build a fake line table.  */
+#define LL(N) asm ("line_label_" #N ": .globl line_label_" #N)
+
+volatile int var;
+volatile int bar;
+
+/* Generate some code to take up some space.  */
+#define FILLER do { \
+    var = 99;	    \
+} while (0)
+
+int
+func (void)
+{					/* func prologue */
+  asm ("func_label: .globl func_label");
+  LL (1);	// F1, Ln 16
+  FILLER;
+  LL (2);	// F1, Ln 17
+  FILLER;
+  LL (3);	// F2, Ln 21
+  FILLER;
+  LL (4);	// F2, Ln 22 // F1, Ln 18, !S
+  FILLER;
+  LL (5);	// F1, Ln 19 !S
+  FILLER;
+  LL (6);	// F1, Ln 20
+  FILLER;
+  LL (7);
+  FILLER;
+  return 0;				/* func end */
+}
+
+#ifdef WITHMAIN
+int main () { return 0; }
+#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp ./gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/imported-unit-bp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,128 @@
+# Copyright 2020-2021 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 that "break /absolute/file:line" works ok with imported CUs.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if {![dwarf2_support]} {
+    return 0
+}
+
+# The .c files use __attribute__.
+if [get_compiler_info] {
+    return -1
+}
+if !$gcc_compiled {
+    return 0
+}
+
+standard_testfile imported-unit-bp-alt.c .S imported-unit-bp-main.c
+
+set build_options {nodebug optimize=-O1}
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    global srcdir subdir srcfile srcfile
+    global build_options
+    declare_labels lines_label callee_subprog_label cu_label
+
+    get_func_info func "$build_options additional_flags=-DWITHMAIN"
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C}
+	    {name "<artificial>"}
+	} {
+	    imported_unit {
+		{import %$cu_label}
+	    }
+	}
+    }
+
+    cu {} {
+	cu_label: compile_unit {
+	    {producer "gcc"}
+	    {language @DW_LANG_C}
+	    {name ${srcfile}}
+	    {comp_dir "/tmp"}
+	    {low_pc 0 addr}
+	    {stmt_list ${lines_label} DW_FORM_sec_offset}
+	} {
+	    callee_subprog_label: subprogram {
+		{external 1 flag}
+		{name callee}
+		{inline 3 data1}
+	    }
+	    subprogram {
+		{external 1 flag}
+		{name func}
+		{low_pc $func_start addr}
+		{high_pc "$func_start + $func_len" addr}
+	    } {
+	    }
+	}
+    }
+
+    lines {version 2 default_is_stmt 1} lines_label {
+	include_dir "/tmp"
+	file_name "$srcfile" 1
+
+	program {
+	    {DW_LNE_set_address line_label_1}
+	    {DW_LNS_advance_line 15}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_2}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_3}
+	    {DW_LNS_advance_line 4}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_4}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_copy}
+
+	    {DW_LNS_advance_line -4}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_5}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_6}
+	    {DW_LNS_advance_line 1}
+	    {DW_LNS_negate_stmt}
+	    {DW_LNS_copy}
+
+	    {DW_LNE_set_address line_label_7}
+	    {DW_LNE_end_sequence}
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file $srcfile3] $build_options] } {
+    return -1
+}
+
+gdb_reinitialize_dir /tmp
+
+# Using an absolute path is important to see the bug.
+gdb_test "break /tmp/${srcfile}:19" "Breakpoint .* file $srcfile, line .*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit-bp-main.c ./gdb/testsuite/gdb.dwarf2/imported-unit-bp-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit-bp-main.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/imported-unit-bp-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2004-2021 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/>.  */
+
+extern int func (void);
+
+int
+main()
+{
+  return func ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit.c ./gdb/testsuite/gdb.dwarf2/imported-unit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/imported-unit.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit.exp ./gdb/testsuite/gdb.dwarf2/imported-unit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/imported-unit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -54,19 +54,6 @@ Dwarf::assemble $asm_file {
     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}
@@ -77,13 +64,11 @@ Dwarf::assemble $asm_file {
 	    }
 	    subprogram {
 		{abstract_origin %$main_label}
-		{low_pc $main_start addr}
-		{high_pc "$main_start + $main_length" addr}
+		{MACRO_AT_range {main}}
 	    } {
 		subprogram {
 		    {abstract_origin %$doit_label}
-		    {low_pc $doit_start addr}
-		    {high_pc "$doit_start + $doit_length" addr}
+		    {MACRO_AT_range {doit}}
 		} {
 		    formal_parameter {
 			{abstract_origin %$doit_self_label}
@@ -149,6 +134,49 @@ if { [prepare_for_testing "failed to pre
 
 gdb_test_no_output "set language c++"
 
+set psymtabs_p [psymtabs_p]
+
+# Verify that the partial symtab for the unit importing the partial unit does
+# not contain the static partial symbol int, which is defined in the partial
+# unit.  Test-case for PR25646.
+set test "no static partial symbols in importing unit"
+if { $psymtabs_p } {
+    gdb_test "main print psymbols" \
+	[multi_line \
+	     "  Depends on 1 other partial symtabs\." \
+	     "\[^\r\n\]*" \
+	     "  Global partial symbols:" \
+	     "    `main', function, $hex" \
+	     "" \
+	     ".*"] \
+	$test
+} else {
+    unsupported $test
+}
+
+# Verify that there's only one partial symtab for imported_unit.c.  Test-case
+# for PR25700.
+set test "no duplicate psymtab for imported_unit.c"
+if { $psymtabs_p } {
+    set line "Partial symtab for source file imported_unit.c"
+    gdb_test_multiple "maint print psymbols" $test {
+	-re -wrap "$line.*$line.*" {
+	    fail $gdb_test_name
+	}
+	-re -wrap "$line.*" {
+	    pass $gdb_test_name
+	}
+    }
+} else {
+    unsupported $test
+}
+
+gdb_test "l imported_unit.c:1" \
+    "1\timported_unit.c: No such file or directory\."
+
+gdb_test "info source" "\r\nCurrent source file is imported_unit.c\r\n.*" \
+    "info source for imported_unit.c"
+
 # Sanity check
 gdb_test "ptype main" "= int \\(void\\)"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit-runto-main.exp ./gdb/testsuite/gdb.dwarf2/imported-unit-runto-main.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/imported-unit-runto-main.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/imported-unit-runto-main.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,83 @@
+# Copyright 2020-2021 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/>.
+
+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 main.c .S
+
+set executable ${testfile}
+set asm_file [standard_output_file ${srcfile2}]
+
+# We need to know the size of integer types in order to write some of the
+# debugging info we'd like to generate.
+if [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] {
+    return -1
+}
+
+# Create the DWARF.
+Dwarf::assemble $asm_file {
+    declare_labels cu_label main_label int_label
+    declare_labels aaa_label
+    set int_size [get_sizeof "int" 4]
+
+    cu {} {
+	cu_label: partial_unit {
+	    {language @DW_LANG_C}
+	    {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}
+	    }
+	}
+    }
+
+    cu {} {
+	compile_unit {
+	    {language @DW_LANG_C}
+	    {name "<artificial>"}
+	} {
+	    subprogram {
+		{abstract_origin %$main_label}
+		{MACRO_AT_range {main}}
+	    }
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+if { [ensure_gdb_index $binfile] == -1 } {
+    return -1
+}
+
+clean_restart ${binfile}
+
+runto main message
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.c ./gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp ./gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/info-locals-optimized-out.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -28,7 +28,6 @@ standard_testfile .c ${gdb_test_file_nam
 
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
     global dwarf_regnum regname
 
     set buf_var [gdb_target_symbol buf]
@@ -48,7 +47,7 @@ Dwarf::assemble $asm_file {
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { main ${srcdir}/${subdir}/${srcfile} }}
+		{MACRO_AT_func { main }}
 		{DW_AT_external 1 flag}
 	    } {
 		# A variable completely optimized out.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp ./gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/inlined_subroutine-inheritance.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.c ./gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,37 @@
+/* Copyright (C) 2021 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
+func1 (void)
+{
+  asm ("func1_label: .global func1_label\n");
+  return 1;
+}
+
+static int
+func2 (void)
+{
+  asm ("func2_label: .global func2_label\n");
+  return 2;
+}
+
+int
+main (void)
+{
+  func1 ();
+  func2 ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.exp ./gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/loclists-multiple-cus.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,146 @@
+# Copyright 2020 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 to reproduce the crash described in PR 26813.
+#
+# When reading a list in any table in the .debug_loclists section, GDB would
+# read the header at offset 0 in the section (the header of the first table).
+# When the index of the list we read was greater than the number of lists of
+# the first table, GDB would erroneously report that the index is invalid.
+#
+# So this test creates a .debug_loclists section with two tables.  The second
+# table has more lists than the first one and we try to read a high index in
+# the second table.
+
+load_lib dwarf.exp
+
+if {![dwarf2_support]} {
+    return 0
+}
+
+# Test with 32-bit and 64-bit DWARF.
+foreach_with_prefix is_64 {false true} {
+    if { $is_64 } {
+	standard_testfile .c -dw64.S
+	set testfile ${testfile}-dw64
+    } else {
+	standard_testfile .c -dw32.S
+	set testfile ${testfile}-dw32
+    }
+
+    # Get the addresses / lengths of func1 and func2.
+    lassign [function_range func1 $srcdir/$subdir/$srcfile] func1_addr func1_len
+    lassign [function_range func2 $srcdir/$subdir/$srcfile] func2_addr func2_len
+
+    set asm_file [standard_output_file $srcfile2]
+    Dwarf::assemble $asm_file {
+	global func1_addr func1_len
+	global func2_addr func2_len
+	global is_64
+
+	# The CU uses the DW_FORM_loclistx form to refer to the .debug_loclists
+	# section.
+	cu {
+	    version 5
+	    is_64 $is_64
+	} {
+	    declare_labels int_type
+
+	    DW_TAG_compile_unit {
+		{DW_AT_loclists_base cu_table DW_FORM_sec_offset}
+	    } {
+		int_type: DW_TAG_base_type {
+		    {DW_AT_byte_size 4 DW_FORM_data1}
+		    {DW_AT_encoding @DW_ATE_signed}
+		    {DW_AT_name "int"}
+		}
+
+		DW_TAG_variable {
+		    {DW_AT_name "foo"}
+		    {DW_AT_location 1 DW_FORM_loclistx}
+		    {DW_AT_type :$int_type}
+		}
+
+		DW_TAG_subprogram {
+		    {DW_AT_name "func1"}
+		    {DW_AT_low_pc $func1_addr DW_FORM_addr}
+		    {DW_AT_high_pc $func1_len DW_FORM_udata}
+		}
+
+		DW_TAG_subprogram {
+		    {DW_AT_name "func2"}
+		    {DW_AT_low_pc $func2_addr DW_FORM_addr}
+		    {DW_AT_high_pc $func2_len DW_FORM_udata}
+		}
+	    }
+	}
+
+	loclists -is-64 $is_64 {
+	    # This table is unused, but exists so that the used table is not at
+	    # the beginning of the section.
+	    table {
+		list_ {
+		    start_length 0x1000 0x1000 { DW_OP_addr 0x100000 }
+		}
+	    }
+
+	    # The lists in this table are accessed by index (DW_FORM_rnglistx).
+	    table -post-header-label cu_table {
+		# This list is unused, but exists to offset the next ones.
+		list_ {
+		    start_length 0x1000 0x1000 { DW_OP_addr 0x100000 }
+		}
+
+		# For variable foo.
+		list_ {
+		    # When in func1.
+		    start_length $func1_addr $func1_len {
+			DW_OP_constu 0x123456
+			DW_OP_stack_value
+		    }
+
+		    # When in func2.
+		    start_length $func2_addr $func2_len {
+			DW_OP_constu 0x234567
+			DW_OP_stack_value
+		    }
+		}
+	    }
+	}
+    }
+
+    if { [prepare_for_testing "failed to prepare" ${testfile} \
+	      [list $srcfile $asm_file] {nodebug}] } {
+	return -1
+    }
+
+    if { ![runto_main] } {
+	fail "can't run to main"
+	return
+    }
+
+    gdb_breakpoint "func1"
+    gdb_breakpoint "func2"
+
+    gdb_continue_to_breakpoint "func1"
+    with_test_prefix "at func1" {
+	gdb_test "print /x foo" " = 0x123456"
+    }
+
+    gdb_continue_to_breakpoint "func2"
+    with_test_prefix "at func2" {
+	gdb_test "print /x foo" " = 0x234567"
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/loclists-sec-offset.c ./gdb/testsuite/gdb.dwarf2/loclists-sec-offset.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/loclists-sec-offset.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/loclists-sec-offset.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,53 @@
+/* Copyright (C) 2021 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
+func1 (void)
+{
+  asm ("func1_label: .global func1_label\n");
+  return 1;
+}
+
+static int
+func2 (void)
+{
+  asm ("func2_label: .global func2_label\n");
+  return 2;
+}
+
+static int
+func5 (void)
+{
+  asm ("func5_label: .global func5_label\n");
+  return 5;
+}
+
+static int
+func6 (void)
+{
+  asm ("func6_label: .global func6_label\n");
+  return 6;
+}
+
+int
+main (void)
+{
+  func1 ();
+  func2 ();
+  func5 ();
+  func6 ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/loclists-sec-offset.exp ./gdb/testsuite/gdb.dwarf2/loclists-sec-offset.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/loclists-sec-offset.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/loclists-sec-offset.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,192 @@
+# Copyright 2020 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 DW_AT_location attributes referencing the .debug_loclists section using
+# the DW_FORM_sec_offset form.
+
+load_lib dwarf.exp
+
+if {![dwarf2_support]} {
+    return 0
+}
+
+# Test with 32-bit and 64-bit DWARF.
+foreach_with_prefix is_64 {false true} {
+    if { $is_64 } {
+	standard_testfile .c -dw64.S
+	set testfile ${testfile}-dw64
+    } else {
+	standard_testfile .c -dw32.S
+	set testfile ${testfile}-dw32
+    }
+
+    # Get the addresses / lengths of func1 and func2.
+    lassign [function_range func1 $srcdir/$subdir/$srcfile] func1_addr func1_len
+    lassign [function_range func2 $srcdir/$subdir/$srcfile] func2_addr func2_len
+    lassign [function_range func5 $srcdir/$subdir/$srcfile] func5_addr func5_len
+    lassign [function_range func6 $srcdir/$subdir/$srcfile] func6_addr func6_len
+
+    set asm_file [standard_output_file $srcfile2]
+    Dwarf::assemble $asm_file {
+	global func1_addr func1_len
+	global func2_addr func2_len
+	global func5_addr func5_len
+	global func6_addr func6_len
+	global is_64
+
+	declare_labels cu_range_list foo_range_list
+
+	# This CU uses the DW_FORM_sec_offset form to refer to the .debug_rnglists
+	# section.
+	cu {
+	    version 5
+	    is_64 $is_64
+	} {
+	    declare_labels int_type1
+	    declare_labels int_type3
+	    declare_labels foo_location_list
+	    declare_labels baz_location_list
+
+	    DW_TAG_compile_unit {
+	    } {
+		int_type1: DW_TAG_base_type {
+		    {DW_AT_byte_size 4 DW_FORM_data1}
+		    {DW_AT_encoding @DW_ATE_signed}
+		    {DW_AT_name "int"}
+		}
+
+		DW_TAG_variable {
+		    {DW_AT_name "foo"}
+		    {DW_AT_location $foo_location_list DW_FORM_sec_offset}
+		    {DW_AT_type :$int_type1}
+		}
+
+		DW_TAG_subprogram {
+		    {DW_AT_name "func1"}
+		    {DW_AT_low_pc $func1_addr DW_FORM_addr}
+		    {DW_AT_high_pc $func1_len DW_FORM_udata}
+		}
+
+		DW_TAG_subprogram {
+		    {DW_AT_name "func2"}
+		    {DW_AT_low_pc $func2_addr DW_FORM_addr}
+		    {DW_AT_high_pc $func2_len DW_FORM_udata}
+		}
+	    }
+	}
+
+	# This CU uses the DW_FORM_sec_offset form to refer to the
+	# .debug_loclists section.  The corresponding contribution in the
+	# .debug_loclists section has no offset array.
+	cu {
+	    version 5
+	    is_64 $is_64
+	} {
+	    DW_TAG_compile_unit {
+	    } {
+		int_type3: DW_TAG_base_type {
+		    {DW_AT_byte_size 4 DW_FORM_data1}
+		    {DW_AT_encoding @DW_ATE_signed}
+		    {DW_AT_name "int"}
+		}
+
+		DW_TAG_variable {
+		    {DW_AT_name "baz"}
+		    {DW_AT_location $baz_location_list DW_FORM_sec_offset}
+		    {DW_AT_type :$int_type3}
+		}
+
+		DW_TAG_subprogram {
+		    {DW_AT_name "func5"}
+		    {DW_AT_low_pc $func5_addr DW_FORM_addr}
+		    {DW_AT_high_pc $func5_len DW_FORM_udata}
+		}
+
+		DW_TAG_subprogram {
+		    {DW_AT_name "func6"}
+		    {DW_AT_low_pc $func6_addr DW_FORM_addr}
+		    {DW_AT_high_pc $func6_len DW_FORM_udata}
+		}
+	    }
+	}
+
+	loclists -is-64 $is_64 {
+	    # The lists in this table are accessed by direct offset
+	    # (DW_FORM_sec_offset).
+	    table {
+		foo_location_list: list_ {
+		    start_length $func1_addr $func1_len {
+			DW_OP_constu 0x123456
+			DW_OP_stack_value
+		    }
+
+		    start_length $func2_addr $func2_len {
+			DW_OP_constu 0x234567
+			DW_OP_stack_value
+		    }
+		}
+	    }
+
+	    table -with-offset-array false {
+		baz_location_list: list_ {
+		    start_length $func5_addr $func5_len {
+			DW_OP_constu 0x567890
+			DW_OP_stack_value
+		    }
+
+		    start_length $func6_addr $func6_len {
+			DW_OP_constu 0x678901
+			DW_OP_stack_value
+		    }
+		}
+	    }
+	}
+    }
+
+    if { [prepare_for_testing "failed to prepare" ${testfile} \
+	      [list $srcfile $asm_file] {nodebug}] } {
+	return -1
+    }
+
+    if { ![runto_main] } {
+	fail "can't run to main"
+	return
+    }
+
+    gdb_breakpoint "func1"
+    gdb_breakpoint "func2"
+    gdb_breakpoint "func5"
+    gdb_breakpoint "func6"
+
+    gdb_continue_to_breakpoint "func1"
+    with_test_prefix "at func1" {
+	gdb_test "print /x foo" " = 0x123456"
+    }
+
+    gdb_continue_to_breakpoint "func2"
+    with_test_prefix "at func2" {
+	gdb_test "print /x foo" " = 0x234567"
+    }
+
+    gdb_continue_to_breakpoint "func5"
+    with_test_prefix "at func5" {
+	gdb_test "print /x baz" " = 0x567890"
+    }
+
+    gdb_continue_to_breakpoint "func6"
+    with_test_prefix "at func6" {
+	gdb_test "print /x baz" " = 0x678901"
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/mac-fileno.exp ./gdb/testsuite/gdb.dwarf2/mac-fileno.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/mac-fileno.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/mac-fileno.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/mac-fileno.S ./gdb/testsuite/gdb.dwarf2/mac-fileno.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/mac-fileno.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/mac-fileno.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/main.c ./gdb/testsuite/gdb.dwarf2/main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/main-foo.c ./gdb/testsuite/gdb.dwarf2/main-foo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/main-foo.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/main-foo.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,34 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+/* Dummy foo function.  */
+
+void
+foo (void)
+{
+  asm ("foo_label: .globl foo_label");
+}
+
+/* Dummy main function.  */
+
+int
+main()
+{
+  asm ("main_label: .globl main_label");
+  foo ();
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/main-subprogram.c ./gdb/testsuite/gdb.dwarf2/main-subprogram.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/main-subprogram.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/main-subprogram.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/main-subprogram.exp ./gdb/testsuite/gdb.dwarf2/main-subprogram.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/main-subprogram.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/main-subprogram.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -24,12 +24,6 @@ standard_testfile main-subprogram.c enum
 # Make some DWARF for the test.
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
-
-    set range [function_range mymain ${srcdir}/${subdir}/${srcfile}]
-    set mymain_start [lindex $range 0]
-    set mymain_length [lindex $range 1]
-
     cu {} {
 	DW_TAG_compile_unit {
                 {DW_AT_language @DW_LANG_C}
@@ -45,9 +39,7 @@ Dwarf::assemble $asm_file {
             }
 
 	    DW_TAG_subprogram {
-		{name mymain}
-		{low_pc $mymain_start addr}
-                {high_pc "$mymain_start + $mymain_length" addr}
+		{MACRO_AT_func {mymain}}
 		{type :$type}
 		{DW_AT_main_subprogram 1 flag}
 	    } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp ./gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.S ./gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/member-ptr-forwardref.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/method-ptr.cc ./gdb/testsuite/gdb.dwarf2/method-ptr.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/method-ptr.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/method-ptr.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/method-ptr.exp ./gdb/testsuite/gdb.dwarf2/method-ptr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/method-ptr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/method-ptr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/missing-sig-type.exp ./gdb/testsuite/gdb.dwarf2/missing-sig-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/missing-sig-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/missing-sig-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/missing-type-name.exp ./gdb/testsuite/gdb.dwarf2/missing-type-name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/missing-type-name.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/missing-type-name.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -42,16 +42,6 @@ standard_testfile void-type.c void-type.
 # Make some DWARF for the test.
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
-
-    set func_result [function_range func ${srcdir}/${subdir}/${srcfile}]
-    set func_start [lindex $func_result 0]
-    set func_length [lindex $func_result 1]
-
-    set main_result [function_range main ${srcdir}/${subdir}/${srcfile}]
-    set main_start [lindex $main_result 0]
-    set main_length [lindex $main_result 1]
-
     cu {} {
 	DW_TAG_compile_unit {
 	        {DW_AT_producer "GNU C 8.1"}
@@ -76,15 +66,11 @@ Dwarf::assemble $asm_file {
 	    }
 
             DW_TAG_subprogram {
-                {name func}
-                {low_pc $func_start addr}
-                {high_pc "$func_start + $func_length" addr}
+                {MACRO_AT_func func}
                 {type :$int_type}
 	    }
             DW_TAG_subprogram {
-                {name main}
-                {low_pc $main_start addr}
-                {high_pc "$main_start + $main_length" addr}
+                {MACRO_AT_func main}
                 {type :$main_type}
 	    }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/multidictionary.exp ./gdb/testsuite/gdb.dwarf2/multidictionary.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/multidictionary.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/multidictionary.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -147,12 +147,9 @@ if {[build_executable $testfile.exp $tes
 }
 
 # We force the DIEs above to be read in via "-readnow".
-gdb_spawn_with_cmdline_opts "-readnow"
-set test "initial prompt"
-gdb_test_multiple "" $test {
-    -re ".*$gdb_prompt $" {
-	pass "$test"
-    }
+save_vars { GDBFLAGS } {
+    set GDBFLAGS "$GDBFLAGS -readnow"
+    clean_restart
 }
 gdb_load $binfile
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/nonvar-access.exp ./gdb/testsuite/gdb.dwarf2/nonvar-access.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/nonvar-access.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/nonvar-access.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -27,12 +27,6 @@ standard_testfile main.c nonvar-access-d
 set asm_file [standard_output_file $srcfile2]
 
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
-
-    set range [function_range main ${srcdir}/${subdir}/${srcfile}]
-    set main_start [lindex $range 0]
-    set main_length [lindex $range 1]
-
     cu {} {
 	compile_unit {
 	    {DW_AT_name main.c}
@@ -101,10 +95,8 @@ Dwarf::assemble $asm_file {
 	    }
 
 	    DW_TAG_subprogram {
-		{name main}
+		{MACRO_AT_func {main}}
 		{DW_AT_external 1 flag}
-		{low_pc [gdb_target_symbol main] DW_FORM_addr}
-		{high_pc "$main_start + $main_length" DW_FORM_addr}
 	    } {
 		# Simple variable without location.
 		DW_TAG_variable {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/nostaticblock.exp ./gdb/testsuite/gdb.dwarf2/nostaticblock.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/nostaticblock.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/nostaticblock.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/opaque-type-lookup-2.c ./gdb/testsuite/gdb.dwarf2/opaque-type-lookup-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/opaque-type-lookup-2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/opaque-type-lookup-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/opaque-type-lookup.c ./gdb/testsuite/gdb.dwarf2/opaque-type-lookup.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/opaque-type-lookup.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/opaque-type-lookup.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/opaque-type-lookup.exp ./gdb/testsuite/gdb.dwarf2/opaque-type-lookup.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/opaque-type-lookup.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/opaque-type-lookup.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -32,9 +32,6 @@ Dwarf::assemble $asm_file {
     declare_labels struct_a_label struct_b_label
     declare_labels opaque_struct_a_label opaque_struct_b_label
     declare_labels char_type1_label char_type2_label
-    global srcdir subdir srcfile
-
-    extern main
 
     # The partial units are laid out so we're not dependent on the order that
     # they appear in compunit_symtab.includes.  We need the one with the
@@ -182,7 +179,7 @@ Dwarf::assemble $asm_file {
 	    {name main}
 	} {
 	    subprogram {
- 		{MACRO_AT_func { main ${srcdir}/${subdir}/${srcfile} }}
+		{MACRO_AT_func { main }}
 	    }
 	}
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/per-bfd-sharing.c ./gdb/testsuite/gdb.dwarf2/per-bfd-sharing.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/per-bfd-sharing.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/per-bfd-sharing.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,28 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+static
+int foo (int a, int b)
+{
+  return a + b;
+}
+
+int
+main (void)
+{
+  return foo (2, 3);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/per-bfd-sharing.exp ./gdb/testsuite/gdb.dwarf2/per-bfd-sharing.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/per-bfd-sharing.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/per-bfd-sharing.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,93 @@
+#   Copyright 2020-2021 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 checks that loading a file with different methods (partial symtabs,
+# index, readnow) does not crash.
+
+standard_testfile
+
+lassign [remote_exec host mktemp -d] ret cache_dir
+
+# The output of mktemp contains an end of line, remove it.
+set cache_dir [string trimright $cache_dir \r\n]
+
+if { $ret != 0 } {
+    fail "couldn't create temporary cache dir"
+    return
+}
+
+verbose -log "Index cache dir: $cache_dir"
+
+if { [build_executable "failed to prepare" $testfile $srcfile \
+	  {debug additional_flags=-Wl,--build-id}] == -1 } {
+    return
+}
+
+# Populate the index-cache.
+with_test_prefix "populate index cache" {
+    clean_restart
+
+    gdb_test_no_output "set index-cache directory $cache_dir" \
+	"set index-cache directory"
+    gdb_test_no_output "set index-cache on"
+    gdb_test "file $binfile" "Reading symbols from .*" "file"
+}
+
+proc load_binary { method } {
+    global binfile
+    global hex
+
+    if { $method == "standard" } {
+	gdb_test "file $binfile" "Reading symbols from .*" "file"
+    } elseif { $method == "index" } {
+	gdb_test_no_output "set index-cache on"
+	gdb_test "file $binfile" "Reading symbols from .*" "file index"
+	gdb_test_no_output "set index-cache off"
+    } elseif { $method == "readnow" } {
+	gdb_test "file -readnow $binfile" \
+	    "Reading symbols from .*Expanding full symbols from .*" \
+	    "file readnow"
+    } else {
+	error "unknown method"
+    }
+
+    # Print a static function: seeing it and its signature confirms GDB
+    # sees some symbols.
+    gdb_test "print foo" " = {int \\(int, int\\)} $hex <foo>"
+}
+
+set methods {standard index readnow}
+
+foreach_with_prefix first $methods {
+    foreach_with_prefix second $methods {
+	foreach_with_prefix third $methods {
+	    # Start with a clean GDB.
+	    clean_restart
+
+	    # Set the index cache dir, but don't enable the index-cache, it will
+	    # be enabled only when needed, when loading a file with the "index"
+	    # method.
+	    gdb_test_no_output "set index-cache directory $cache_dir" \
+		"set index-cache directory"
+
+	    # Avoid GDB asking whether we really want to load a new binary.
+	    gdb_test_no_output "set confirm off"
+
+	    with_test_prefix "load first" { load_binary $first }
+	    with_test_prefix "load second" { load_binary $second }
+	    with_test_prefix "load third" { load_binary $third }
+	}
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces.c ./gdb/testsuite/gdb.dwarf2/pieces.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pieces.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2010-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces.exp ./gdb/testsuite/gdb.dwarf2/pieces.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pieces.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces-optimized-out.c ./gdb/testsuite/gdb.dwarf2/pieces-optimized-out.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces-optimized-out.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pieces-optimized-out.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces-optimized-out.exp ./gdb/testsuite/gdb.dwarf2/pieces-optimized-out.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces-optimized-out.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pieces-optimized-out.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces-optimized-out.S ./gdb/testsuite/gdb.dwarf2/pieces-optimized-out.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces-optimized-out.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pieces-optimized-out.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces.S ./gdb/testsuite/gdb.dwarf2/pieces.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pieces.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pieces.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pr10770.exp ./gdb/testsuite/gdb.dwarf2/pr10770.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pr10770.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pr10770.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pr11465.exp ./gdb/testsuite/gdb.dwarf2/pr11465.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pr11465.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pr11465.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pr11465.S ./gdb/testsuite/gdb.dwarf2/pr11465.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pr11465.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pr11465.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2010-2020 Free Software Foundation, Inc.
+/* Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pr13961.exp ./gdb/testsuite/gdb.dwarf2/pr13961.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pr13961.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pr13961.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pr13961.S ./gdb/testsuite/gdb.dwarf2/pr13961.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/pr13961.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/pr13961.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/rnglists-multiple-cus.exp ./gdb/testsuite/gdb.dwarf2/rnglists-multiple-cus.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/rnglists-multiple-cus.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/rnglists-multiple-cus.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,102 @@
+# Copyright 2020 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 to reproduce the crash described in PR 26813.
+#
+# When reading a list in any table in the .debug_rnglists section, GDB would
+# read the header at offset 0 in the section (the header of the first table).
+# When the index of the list we read was greater than the number of lists of
+# the first table, GDB would erroneously report that the index is invalid.
+#
+# So this test creates a .debug_rnglists section with two tables.  The second
+# table has more lists than the first one and we try to read a high index in
+# the second table.
+
+load_lib dwarf.exp
+
+if {![dwarf2_support]} {
+    return 0
+}
+
+# Test with 32-bit and 64-bit DWARF.
+foreach_with_prefix is_64 {false true} {
+    if { $is_64 } {
+	standard_testfile main.c -dw64.S
+	set testfile ${testfile}-dw64
+    } else {
+	standard_testfile main.c -dw32.S
+	set testfile ${testfile}-dw32
+    }
+
+    set asm_file [standard_output_file $srcfile2]
+    Dwarf::assemble $asm_file {
+	global is_64
+
+	# The CU uses the DW_FORM_rnglistx form to refer to the .debug_rnglists
+	# section.
+	cu {
+	    version 5
+	    is_64 $is_64
+	} {
+	    DW_TAG_compile_unit {
+		{DW_AT_ranges 1 DW_FORM_rnglistx}
+		{DW_AT_rnglists_base cu_table DW_FORM_sec_offset}
+	    } {
+		# This tests a DW_AT_ranges attribute of form DW_FORM_rnglistx on a
+		# function, which was buggy at some point.
+		DW_TAG_subprogram {
+		    {DW_AT_name "foo"}
+		    {DW_AT_ranges 2 DW_FORM_rnglistx}
+		}
+	    }
+	}
+
+	rnglists -is-64 $is_64 {
+	    # This table is unused, but exists so that the used table is not at
+	    # the beginning of the section.
+	    table {
+		list_ {
+		    start_end 0x1000 0x2000
+		}
+	    }
+
+	    # The lists in this table are accessed by index (DW_FORM_rnglistx).
+	    table -post-header-label cu_table {
+		# This list is unused, but exists to offset the next ones.
+		list_ {
+		    start_end 0x2000 0x3000
+		}
+
+		# For the CU.
+		list_ {
+		    start_end 0x3000 0x4000
+		}
+
+		# For function foo.
+		list_ {
+		    start_end 0x3000 0x3010
+		}
+	    }
+	}
+    }
+
+    if { [prepare_for_testing "failed to prepare" ${testfile} \
+	      [list $srcfile $asm_file] {nodebug}] } {
+	return -1
+    }
+
+    # Sanity checks to make sure GDB slurped the symbols correctly.
+    gdb_test "p/x &foo" " = 0x3000"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/rnglists-sec-offset.exp ./gdb/testsuite/gdb.dwarf2/rnglists-sec-offset.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/rnglists-sec-offset.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/rnglists-sec-offset.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,111 @@
+# Copyright 2020 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 DW_AT_ranges attributes referencing the .debug_rnglists section using the
+# DW_FORM_sec_offset form.
+
+load_lib dwarf.exp
+
+if {![dwarf2_support]} {
+    return 0
+}
+
+foreach_with_prefix is_64 {false true} {
+    if { $is_64 } {
+	standard_testfile main.c -dw64.S
+	set testfile ${testfile}-dw64
+    } else {
+	standard_testfile main.c -dw32.S
+	set testfile ${testfile}-dw32
+    }
+
+    set asm_file [standard_output_file $srcfile2]
+    Dwarf::assemble $asm_file {
+	global is_64
+
+	declare_labels cu1_range_list cu3_range_list
+	declare_labels foo_range_list baz_range_list
+
+	# This CU uses the DW_FORM_sec_offset form to refer to the .debug_rnglists
+	# section.
+	cu {
+	    version 5
+	    is_64 $is_64
+	} {
+	    DW_TAG_compile_unit {
+		{DW_AT_ranges $cu1_range_list DW_FORM_sec_offset}
+	    } {
+		DW_TAG_subprogram {
+		    {DW_AT_name "foo"}
+		    {DW_AT_ranges $foo_range_list DW_FORM_sec_offset}
+		}
+	    }
+	}
+
+	# This CU uses the DW_FORM_sec_offset form to refer to the .debug_rnglists
+	# section.  The corresponding contribution in the .debug_rnglists has no
+	# offset array.
+	cu {
+	    version 5
+	    is_64 $is_64
+	} {
+	    DW_TAG_compile_unit {
+		{DW_AT_ranges $cu3_range_list DW_FORM_sec_offset}
+	    } {
+		DW_TAG_subprogram {
+		    {DW_AT_name "baz"}
+		    {DW_AT_ranges $baz_range_list DW_FORM_sec_offset}
+		}
+	    }
+	}
+
+	rnglists -is-64 $is_64 {
+	    # The lists in this table are accessed by direct offset
+	    # (DW_FORM_sec_offset).
+	    table {
+		# For the CU.
+		cu1_range_list: list_ {
+		    start_end 0x4000 0x5000
+		}
+
+		# For function foo.
+		foo_range_list: list_ {
+		    start_end 0x4000 0x4010
+		}
+	    }
+
+	    table -with-offset-array false {
+		# For the third CU.
+		cu3_range_list: list_ {
+		    start_end 0x6000 0x7000
+		}
+
+		# For the baz function.
+		baz_range_list: list_ {
+		    start_end 0x6000 0x6010
+		}
+	    }
+	}
+    }
+
+    if { [prepare_for_testing "failed to prepare" ${testfile} \
+	      [list $srcfile $asm_file] {nodebug}] } {
+	return -1
+    }
+
+    # Sanity checks to make sure GDB slurped the symbols correctly.
+    gdb_test "p/x &foo" " = 0x4000"
+    gdb_test "p/x &baz" " = 0x6000"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/shortpiece.exp ./gdb/testsuite/gdb.dwarf2/shortpiece.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/shortpiece.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/shortpiece.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/staticvirtual.exp ./gdb/testsuite/gdb.dwarf2/staticvirtual.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/staticvirtual.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/staticvirtual.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/struct-with-sig.exp ./gdb/testsuite/gdb.dwarf2/struct-with-sig.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/struct-with-sig.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/struct-with-sig.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,129 @@
+# Copyright 2020-2021 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/>.
+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 main-foo.c .S
+
+# Make some DWARF for the test.
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    cu {} {
+	compile_unit {
+	    {DW_AT_language @DW_LANG_C}
+	    {DW_AT_name main.c}
+	} {
+	    structure_type {
+		{name s}
+		{signature 0x0000000000000001 ref_sig8}
+		{declaration 1 flag}
+	    }
+	    DW_TAG_subprogram {
+		{MACRO_AT_func {main}}
+	    }
+	}
+    }
+
+    cu {} {
+	compile_unit {
+	    {DW_AT_language @DW_LANG_C}
+	    {DW_AT_name     foo.c}
+	} {
+	    structure_type {
+		{name s}
+		{signature 0x0000000000000002 ref_sig8}
+		{declaration 1 flag}
+	    }
+	    DW_TAG_subprogram {
+		{MACRO_AT_func {foo}}
+	    }
+	}
+    }
+
+    tu {} 0x0000000000000001 the_type_i {
+	type_unit {} {
+	    declare_labels int_type
+
+	    the_type_i: structure_type {
+		{name s}
+		{byte_size 4 sdata}
+	    } {
+		member {
+		    {name i}
+		    {type :$int_type}
+		}
+	    }
+	    int_type: base_type {
+		{name int}
+		{encoding @DW_ATE_signed}
+		{byte_size 4 sdata}
+	    }
+	}
+    }
+
+    tu {} 0x0000000000000002 the_type_j {
+	type_unit {} {
+	    declare_labels int_type
+
+	    the_type_j: structure_type {
+		{name s}
+		{byte_size 4 sdata}
+	    } {
+		member {
+		    {name j}
+		    {type :$int_type}
+		}
+	    }
+	    int_type: base_type {
+		{name int}
+		{encoding @DW_ATE_signed}
+		{byte_size 4 sdata}
+	    }
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+set struct_s_i_re \
+    [multi_line \
+	 "type = struct s {" \
+	 "    int i;" \
+	 "}"]
+set struct_s_j_re \
+    [multi_line \
+	 "type = struct s {" \
+	 "    int j;" \
+	 "}"]
+
+if ![runto_main] {
+    return -1
+}
+
+gdb_test "ptype struct s" $struct_s_i_re \
+    "struct s with int i"
+
+gdb_breakpoint "foo"
+gdb_continue_to_breakpoint "foo"
+
+gdb_test "ptype struct s" $struct_s_j_re \
+    "struct s with int j"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/subrange.exp ./gdb/testsuite/gdb.dwarf2/subrange.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/subrange.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/subrange.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/symtab-producer.exp ./gdb/testsuite/gdb.dwarf2/symtab-producer.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/symtab-producer.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/symtab-producer.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/template-specification-full-name.exp ./gdb/testsuite/gdb.dwarf2/template-specification-full-name.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/template-specification-full-name.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/template-specification-full-name.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,77 @@
+# Copyright 2020-2021 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 to reproduce the crash described in PR 26693.  The following DWARF was
+# crashing GDB while loading partial symbols: a DW_TAG_subprogram with a
+# DW_AT_specification (pointing to another subprogram), without a DW_AT_name
+# and with a template parameter (DW_TAG_template_type_parameter).  More
+# precisely, the crash was happening when trying to compute the full name of the
+# subprogram.
+
+load_lib dwarf.exp
+
+if {![dwarf2_support]} {
+    return 0
+}
+
+standard_testfile main.c .S
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    cu {} {
+	DW_TAG_compile_unit {
+	    {DW_AT_language @DW_LANG_C_plus_plus}
+        } {
+	    declare_labels templated_subprogram int
+
+	    int: DW_TAG_base_type {
+		{DW_AT_name "int"}
+		{DW_AT_byte_size 4 DW_FORM_data1}
+		{DW_AT_encoding @DW_ATE_signed}
+	    }
+
+	    # The templated subprogram.
+	    templated_subprogram: DW_TAG_subprogram {
+		{DW_AT_name "apply"}
+	    }
+
+	    # The template specialization.
+	    #
+	    # The low and high PC are phony: we just need an address range that
+	    # is valid in the program, so we use the main function's range.
+	    DW_TAG_subprogram {
+		{DW_AT_specification :$templated_subprogram}
+		{MACRO_AT_range main}
+	    } {
+		DW_TAG_template_type_param {
+		  {DW_AT_name "T"}
+		  {DW_AT_type :$int DW_FORM_ref4}
+		}
+	    }
+	}
+    }
+}
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile $asm_file] {nodebug}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+# Just a sanity check to make sure GDB slurped the symbols correctly.
+gdb_test "print apply<int>" " = {void \\(void\\)} $hex <apply<int>\\(\\)>"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/trace-crash.exp ./gdb/testsuite/gdb.dwarf2/trace-crash.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/trace-crash.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/trace-crash.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/typeddwarf-amd64.S ./gdb/testsuite/gdb.dwarf2/typeddwarf-amd64.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/typeddwarf-amd64.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/typeddwarf-amd64.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/typeddwarf.exp ./gdb/testsuite/gdb.dwarf2/typeddwarf.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/typeddwarf.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/typeddwarf.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/typeddwarf.S ./gdb/testsuite/gdb.dwarf2/typeddwarf.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/typeddwarf.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/typeddwarf.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/typedef-void-finish.exp ./gdb/testsuite/gdb.dwarf2/typedef-void-finish.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/typedef-void-finish.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/typedef-void-finish.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -29,16 +29,6 @@ standard_testfile void-type.c typedef-vo
 # Make some DWARF for the test.
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
-
-    set func_result [function_range func ${srcdir}/${subdir}/${srcfile}]
-    set func_start [lindex $func_result 0]
-    set func_length [lindex $func_result 1]
-
-    set main_result [function_range main ${srcdir}/${subdir}/${srcfile}]
-    set main_start [lindex $main_result 0]
-    set main_length [lindex $main_result 1]
-
     cu {} {
 	DW_TAG_compile_unit {
 	        {DW_AT_producer "GNU C 8.1"}
@@ -58,15 +48,11 @@ Dwarf::assemble $asm_file {
 	    }
 
             DW_TAG_subprogram {
-                {name func}
-                {low_pc $func_start addr}
-                {high_pc "$func_start + $func_length" addr}
+                {MACRO_AT_func {func}}
                 {type :$void_typedef}
 	    }
             DW_TAG_subprogram {
-                {name main}
-                {low_pc $main_start addr}
-                {high_pc "$main_start + $main_length" addr}
+                {MACRO_AT_func {main}}
                 {type :$main_type}
 	    }
 	}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/valop.exp ./gdb/testsuite/gdb.dwarf2/valop.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/valop.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/valop.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/valop.S ./gdb/testsuite/gdb.dwarf2/valop.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/valop.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/valop.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /*
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/var-access.c ./gdb/testsuite/gdb.dwarf2/var-access.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/var-access.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/var-access.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/var-access.exp ./gdb/testsuite/gdb.dwarf2/var-access.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/var-access.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/var-access.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -50,7 +50,6 @@ standard_testfile .c ${gdb_test_file_nam
 
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
     global dwarf_regnum regname
 
     set buf_var [gdb_target_symbol buf]
@@ -162,7 +161,7 @@ Dwarf::assemble $asm_file {
 	    }
 
 	    DW_TAG_subprogram {
-		{MACRO_AT_func { main ${srcdir}/${subdir}/${srcfile} }}
+		{MACRO_AT_func { main }}
 		{DW_AT_external 1 flag}
 	    } {
 		# Simple memory location.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/variant.c ./gdb/testsuite/gdb.dwarf2/variant.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/variant.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/variant.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/variant.exp ./gdb/testsuite/gdb.dwarf2/variant.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/variant.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/variant.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -91,6 +91,7 @@ Dwarf::assemble $asm_file {
 		    discr_1_label: member {
 			{type :$uinteger_label}
 			{data_member_location 0 data1}
+			{artificial 1 DW_FORM_flag_present}
 		    }
 
 		    variant {
@@ -123,6 +124,7 @@ Dwarf::assemble $asm_file {
 		    discr_2_label: member {
 			{type :$uinteger_label}
 			{data_member_location 0 data1}
+			{artificial 1 DW_FORM_flag_present}
 		    }
 
 		    variant {
@@ -172,6 +174,7 @@ Dwarf::assemble $asm_file {
 		    discr_3_label: member {
 			{type :$int8_label}
 			{data_member_location 0 data1}
+			{artificial 1 DW_FORM_flag_present}
 		    }
 
 		    variant {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/varval.c ./gdb/testsuite/gdb.dwarf2/varval.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/varval.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/varval.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2018-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/varval.exp ./gdb/testsuite/gdb.dwarf2/varval.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/varval.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/varval.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -38,6 +38,9 @@ set asm_file [standard_output_file ${src
 if [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] {
     return -1
 }
+set int_size [get_sizeof "int" -1]
+# gdb always assumes references are implemented as pointers.
+set addr_size [get_sizeof "void *" -1]
 
 proc setup_exec { arg_bad } {
     global asm_file executable srcfile bad
@@ -45,7 +48,7 @@ proc setup_exec { arg_bad } {
 
     # Create the DWARF.  
     Dwarf::assemble ${asm_file} {
-	global srcdir subdir srcfile bad
+	global bad int_size addr_size
 
 	cu {} {
 	    DW_TAG_compile_unit {
@@ -58,10 +61,6 @@ proc setup_exec { arg_bad } {
 		    varval2_label varval3_def_label varval3_decl_label \
 		    int_array_label int_array_of_1_label
 
-		set int_size [get_sizeof "int" -1]
-
-		# gdb always assumes references are implemented as pointers.
-		set addr_size [get_sizeof "void *" -1]
 
 		int_label: DW_TAG_base_type {
 		    {DW_AT_byte_size ${int_size} DW_FORM_udata}
@@ -199,7 +198,7 @@ proc setup_exec { arg_bad } {
 		}
 
 		DW_TAG_subprogram {
-		    {MACRO_AT_func { "main" "${srcdir}/${subdir}/${srcfile}" }}
+		    {MACRO_AT_func { "main" }}
 		    {DW_AT_type :${int_label}}
 		    {DW_AT_external 1 DW_FORM_flag}
 		} {
@@ -208,6 +207,8 @@ proc setup_exec { arg_bad } {
 			{DW_AT_type :${int_label}}
 			{DW_AT_location {
 			    DW_OP_GNU_variable_value ${var_a_label}
+			    DW_OP_const1s 0
+			    DW_OP_or
 			    DW_OP_stack_value
 			} SPECIAL_expr}
 		    }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/void-type.c ./gdb/testsuite/gdb.dwarf2/void-type.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/void-type.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/void-type.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2018-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/void-type.exp ./gdb/testsuite/gdb.dwarf2/void-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/void-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/void-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -36,16 +36,6 @@ standard_testfile void-type.c void-type.
 # Make some DWARF for the test.
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
-    global srcdir subdir srcfile
-
-    set func_result [function_range func ${srcdir}/${subdir}/${srcfile}]
-    set func_start [lindex $func_result 0]
-    set func_length [lindex $func_result 1]
-
-    set main_result [function_range main ${srcdir}/${subdir}/${srcfile}]
-    set main_start [lindex $main_result 0]
-    set main_length [lindex $main_result 1]
-
     cu {} {
 	DW_TAG_compile_unit {
 	        {DW_AT_producer "Intel(R) C Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 14.0.5.212 Build 20150212"}
@@ -72,15 +62,11 @@ Dwarf::assemble $asm_file {
 	    }
 
             DW_TAG_subprogram {
-                {name func}
-                {low_pc $func_start addr}
-                {high_pc "$func_start + $func_length" addr}
+		{MACRO_AT_func {func}}
                 {type :$void_type}
 	    }
             DW_TAG_subprogram {
-                {name main}
-                {low_pc $main_start addr}
-                {high_pc "$main_start + $main_length" addr}
+		{MACRO_AT_func {main}}
                 {type :$int_type}
 	    }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/watch-notconst2.c ./gdb/testsuite/gdb.dwarf2/watch-notconst2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/watch-notconst2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/watch-notconst2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/watch-notconst2.S ./gdb/testsuite/gdb.dwarf2/watch-notconst2.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/watch-notconst2.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/watch-notconst2.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/watch-notconst.c ./gdb/testsuite/gdb.dwarf2/watch-notconst.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/watch-notconst.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/watch-notconst.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/watch-notconst.exp ./gdb/testsuite/gdb.dwarf2/watch-notconst.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.dwarf2/watch-notconst.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.dwarf2/watch-notconst.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-bounds.exp ./gdb/testsuite/gdb.fortran/array-bounds.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-bounds.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/array-bounds.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -20,13 +20,14 @@ if { [skip_fortran_tests] } { return -1
 
 set testfile "array-bounds"
 standard_testfile .f90
+load_lib fortran.exp
 
 if {[prepare_for_testing $testfile.exp $testfile $srcfile {f90 debug}]} {
     return -1
 }
 
-if {![runto MAIN__]} {
-    perror "Could not run to breakpoint `MAIN__'."
+if {![fortran_runto_main]} {
+    perror "Could not run to main."
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-bounds.f90 ./gdb/testsuite/gdb.fortran/array-bounds.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-bounds.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/array-bounds.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2012-2020 Free Software Foundation, Inc.
+! Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-bounds-high.exp ./gdb/testsuite/gdb.fortran/array-bounds-high.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-bounds-high.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/array-bounds-high.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,40 @@
+# Copyright 2020-2021 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 file is part of the gdb testsuite.  It contains test to ensure that
+# array bounds accept LONGEST.
+
+if { [skip_fortran_tests] } { return -1 }
+
+set testfile "array-bounds-high"
+standard_testfile .f90
+load_lib fortran.exp
+
+if {[prepare_for_testing $testfile.exp $testfile $srcfile {f90 debug}]} {
+    return -1
+}
+
+if {![fortran_runto_main]} {
+    perror "Could not run to main."
+    continue
+}
+
+gdb_test "until 21" {21.*print.*}
+
+# Lets check whether too high (with - sign) indexed array are printed correctly
+gdb_test "print arr1" {.*\(11, 11\).*}
+
+# Lets check whether too high (with + sign) indexed array are printed correctly
+gdb_test "print arr2" {.*\(22, 22\).*}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-bounds-high.f90 ./gdb/testsuite/gdb.fortran/array-bounds-high.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-bounds-high.f90	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/array-bounds-high.f90	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,23 @@
+! Copyright 2020-2021 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 main
+      integer(4) :: arr1(-4294967297_8:-4294967296_8)
+      integer(4) :: arr2(4294967296_8:4294967297_8)
+      arr1 = 11
+      arr2 = 22
+      print *, 'arr1 = ', arr1
+      print *, 'arr2 = ', arr2
+end
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-element.exp ./gdb/testsuite/gdb.fortran/array-element.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-element.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/array-element.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-element.f ./gdb/testsuite/gdb.fortran/array-element.f
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-element.f	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/array-element.f	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-c Copyright 2005-2020 Free Software Foundation, Inc.
+c Copyright 2005-2021 Free Software Foundation, Inc.
 
 c This program is free software; you can redistribute it and/or modify
 c it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-slices.exp ./gdb/testsuite/gdb.fortran/array-slices.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-slices.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/array-slices.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -21,13 +21,14 @@
 if {[skip_fortran_tests]} { return -1 }
 
 standard_testfile ".f90"
+load_lib fortran.exp
 
 if {[prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
 	 {debug f90}]} {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-slices.f90 ./gdb/testsuite/gdb.fortran/array-slices.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/array-slices.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/array-slices.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2019-2020 Free Software Foundation, Inc.
+! Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/block-data.exp ./gdb/testsuite/gdb.fortran/block-data.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/block-data.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/block-data.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -30,8 +30,8 @@ if {[prepare_for_testing $testfile.exp $
     return -1
 }
 
-if ![runto MAIN__] then {
-    untested "couldn't run to breakpoint MAIN__"
+if ![fortran_runto_main] then {
+    untested "couldn't run to main"
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/block-data.f ./gdb/testsuite/gdb.fortran/block-data.f
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/block-data.f	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/block-data.f	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2016-2020 Free Software Foundation, Inc.
+! Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/charset.exp ./gdb/testsuite/gdb.fortran/charset.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/charset.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/charset.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -19,12 +19,14 @@
 if { [skip_fortran_tests] } { return -1 }
 
 standard_testfile .f90
+load_lib fortran.exp
+
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug additional_flags=-fbackslash f90}] } {
     return -1
 }
 
-if ![runto MAIN__] {
-    perror "Couldn't run to MAIN__"
+if ![fortran_runto_main] {
+    perror "Couldn't run to main"
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/class-allocatable-array.exp ./gdb/testsuite/gdb.fortran/class-allocatable-array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/class-allocatable-array.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/class-allocatable-array.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,43 @@
+# Copyright 2020-2021 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 that GDB can print an allocatable array that is a data field
+# within a class like type.
+
+if {[skip_fortran_tests]} { return -1 }
+
+standard_testfile ".f90"
+load_lib fortran.exp
+
+if {[prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
+	 {debug f90}]} {
+    return -1
+}
+
+if ![fortran_runto_main] {
+    untested "could not run to main"
+    return -1
+}
+
+gdb_breakpoint [gdb_get_line_number "Break Here"]
+gdb_continue_to_breakpoint "Break Here"
+
+# If this first test fails then the Fortran compiler being used uses
+# different names, or maybe a completely different approach, for
+# representing class like structures.  The following tests are
+# cetainly going to fail.
+gdb_test "print this" " = \\( _data = \[^\r\n\]+, _vptr = \[^\r\n\]+\\)"
+gdb_test "print this%_data" " = \\(PTR TO -> \\( Type test_type \\)\\) \[^\r\n\]+"
+gdb_test "print this%_data%b" " = \\(\\( 1, 2, 3\\) \\( 4, 5, 6\\) \\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/class-allocatable-array.f90 ./gdb/testsuite/gdb.fortran/class-allocatable-array.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/class-allocatable-array.f90	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/class-allocatable-array.f90	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,54 @@
+! Copyright 2020-2021 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 test_module
+  type test_type
+     integer a
+     real, allocatable :: b (:, :)
+   contains
+     procedure :: test_proc
+  end type test_type
+
+contains
+
+  subroutine test_proc (this)
+    class(test_type), intent (inout) :: this
+    allocate (this%b (3, 2))
+    call fill_array_2d (this%b)
+    print *, ""		! Break Here
+  contains
+    ! Helper subroutine to fill 2-dimensional array with unique
+    ! values.
+    subroutine fill_array_2d (array)
+      real, dimension (:,:) :: array
+      real :: counter
+
+      counter = 1.0
+      do i=LBOUND (array, 2), UBOUND (array, 2), 1
+         do j=LBOUND (array, 1), UBOUND (array, 1), 1
+            array (j,i) = counter
+            counter = counter + 1
+         end do
+      end do
+    end subroutine fill_array_2d
+  end subroutine test_proc
+end module
+
+program test
+  use test_module
+  implicit none
+  type(test_type) :: t
+  call t%test_proc ()
+end program test
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/common-block.exp ./gdb/testsuite/gdb.fortran/common-block.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/common-block.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/common-block.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -27,8 +27,8 @@ if {[prepare_for_testing "failed to prep
     return -1
 }
 
-if ![runto MAIN__] then {
-    perror "couldn't run to breakpoint MAIN__"
+if ![fortran_runto_main] then {
+    perror "couldn't run to main"
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/common-block.f90 ./gdb/testsuite/gdb.fortran/common-block.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/common-block.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/common-block.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2008-2020 Free Software Foundation, Inc.
+! Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/complex.exp ./gdb/testsuite/gdb.fortran/complex.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/complex.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/complex.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -14,16 +14,23 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 standard_testfile .f90
+load_lib fortran.exp
+
+if {[skip_fortran_tests]} { return -1 }
 
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90 quiet}]} {
     return -1
 }
 
-if ![runto MAIN__] then {
-    perror "Couldn't run to MAIN__"
+if ![fortran_runto_main] then {
+    perror "Couldn't run to main"
     continue
 }
 
+# Depending on the compiler being used, the type names can be printed differently.
+set complex4 [fortran_complex4]
+set complex8 [fortran_complex8]
+set complex16 [fortran_complex16]
 
 gdb_breakpoint [gdb_get_line_number "stop"]
 gdb_continue_to_breakpoint "continue"
@@ -35,23 +42,31 @@ gdb_test "print dc" " = \\(321,-22\\)"
 
 gdb_test "print c16" " = \\(-874,19\\)"
 
-gdb_test "whatis c" "type = complex\\(kind=4\\)"
+gdb_test "whatis c" "type = $complex4"
 gdb_test "print \$_creal (c)" " = 1000"
-gdb_test "whatis \$" " = real"
+with_test_prefix "c" {
+    gdb_test "whatis \$" " = real"
+}
 
-gdb_test "whatis c4" "type = complex\\(kind=4\\)"
+gdb_test "whatis c4" "type = $complex4"
 gdb_test "print \$_creal (c4)" " = 1000"
-gdb_test "whatis \$" " = real"
-
-gdb_test "whatis c8" "type = complex\\(kind=8\\)"
+with_test_prefix "c4" {
+    gdb_test "whatis \$" " = real"
+}
+gdb_test "whatis c8" "type = $complex8"
 gdb_test "print \$_creal (c8)" " = 321"
-gdb_test "whatis \$" " = real\\*8"
-
-gdb_test "whatis dc" "type = complex\\(kind=8\\)"
+with_test_prefix "c8" {
+    gdb_test "whatis \$" " = real\\*8"
+}
+gdb_test "whatis dc" "type = $complex8"
 gdb_test "print \$_creal (dc)" " = 321"
-gdb_test "whatis \$" " = real\\*8"
+with_test_prefix "dc" {
+    gdb_test "whatis \$" " = real\\*8"
+}
 
-gdb_test "whatis c16" "type = complex\\(kind=16\\)"
+gdb_test "whatis c16" "type = $complex16"
 gdb_test "print \$_creal (c16)" " = -874"
-gdb_test "whatis \$" " = real\\*16"
+with_test_prefix "c16" {
+    gdb_test "whatis \$" " = real\\*16"
+}
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/complex.f90 ./gdb/testsuite/gdb.fortran/complex.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/complex.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/complex.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2007-2020 Free Software Foundation, Inc.
+! Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type.exp ./gdb/testsuite/gdb.fortran/derived-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/derived-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
@@ -27,8 +27,8 @@ if {[prepare_for_testing "failed to prep
     return -1
 }
 
-if ![runto MAIN__] then {
-    perror "couldn't run to breakpoint MAIN__"
+if ![fortran_runto_main] then {
+    perror "couldn't run to main"
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type.f90 ./gdb/testsuite/gdb.fortran/derived-type.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/derived-type.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2006-2020 Free Software Foundation, Inc.
+! Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type-function.exp ./gdb/testsuite/gdb.fortran/derived-type-function.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type-function.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/derived-type-function.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -21,13 +21,14 @@
 if { [skip_fortran_tests] } { return -1 }
 
 standard_testfile .f90
+load_lib fortran.exp
 
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}]} {
     return -1
 }
 
-if ![runto MAIN__] then {
-    perror "couldn't run to breakpoint MAIN__"
+if ![fortran_runto_main] then {
+    perror "couldn't run to main"
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type-function.f90 ./gdb/testsuite/gdb.fortran/derived-type-function.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type-function.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/derived-type-function.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2016-2020 Free Software Foundation, Inc.
+! Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type-striding.exp ./gdb/testsuite/gdb.fortran/derived-type-striding.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type-striding.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/derived-type-striding.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -41,3 +41,5 @@ gdb_test "p point_dimension" "= \\\(2, 2
 # Test mixed type derived type.
 if { $gcc_with_broken_stride } { setup_kfail *-*-* gcc/92775 }
 gdb_test "p point_mixed_dimension" "= \\\(3, 3, 3, 3\\\)"
+
+gdb_test "p cloud_slice" " = \\\(\\\( x = 1, y = 2, z = 3 \\\)\\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type-striding.f90 ./gdb/testsuite/gdb.fortran/derived-type-striding.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/derived-type-striding.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/derived-type-striding.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2019-2020 Free Software Foundation, Inc.
+! Copyright 2019-2021 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
@@ -28,9 +28,11 @@ program derived_type_member_stride
     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()
+    type(cartesian), dimension(:), pointer :: cloud_slice => null()
     cloud(:)%x = 1
     cloud(:)%y = 2
     cloud(:)%z = 3
+    cloud_slice => cloud(3:2:-2)
     point_dimension => cloud(1:9)%y
     mixed_cloud(:)%x = 1
     mixed_cloud(:)%y = 2
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/dot-ops.exp ./gdb/testsuite/gdb.fortran/dot-ops.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/dot-ops.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/dot-ops.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/exprs.exp ./gdb/testsuite/gdb.fortran/exprs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/exprs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/exprs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/function-calls.exp ./gdb/testsuite/gdb.fortran/function-calls.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/function-calls.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/function-calls.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -24,6 +24,21 @@ if {[prepare_for_testing ${testfile}.exp
     return -1
 }
 
+with_complaints 5 {
+    set cmd "maint expand-symtabs $srcfile"
+    set cmd_regexp [string_to_regexp $cmd]
+    set re_kfail [concat "During symbol reading:" \
+		      " unable to find array range"]
+    gdb_test_multiple $cmd "no complaints in srcfile" {
+	-re -wrap "$re_kfail.*" {
+	    kfail symtab/27388 $gdb_test_name
+	}
+        -re "^$cmd_regexp\r\n$gdb_prompt $" {
+	    pass $gdb_test_name
+	}
+    }
+}
+
 if {![runto [gdb_get_line_number "post_init"]]} then {
     perror "couldn't run to breakpoint post_init"
     continue
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/function-calls.f90 ./gdb/testsuite/gdb.fortran/function-calls.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/function-calls.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/function-calls.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2019-2020 Free Software Foundation, Inc.
+! Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/info-modules.exp ./gdb/testsuite/gdb.fortran/info-modules.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/info-modules.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/info-modules.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -28,8 +28,8 @@ if { [prepare_for_testing "failed to pre
     return -1
 }
 
-if { ![runto MAIN__] } {
-    perror "Could not run to breakpoint `MAIN__'."
+if { ![fortran_runto_main] } {
+    perror "Could not run to main."
     continue
 }
 
@@ -76,7 +76,7 @@ GDBInfoModuleSymbols::check_entry "${src
     "void mod2::sub_m2_a\\(${integer4}, ${logical4}\\);"
 GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "30" \
     "${logical4} mod2::sub_m2_b\\(${real4}\\);"
-GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "35" \
+GDBInfoModuleSymbols::check_optional_entry "${srcfile}" "mod1" "35" \
     "void mod1::__copy_mod1_M1t1\\(Type m1t1, Type m1t1\\);"
 GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "25" \
     "void mod1::sub_m1_a\\(${integer4}\\);"
@@ -88,7 +88,7 @@ GDBInfoModuleSymbols::check_no_entry "${
 GDBInfoModuleSymbols::run_command "info module functions -m mod1"
 GDBInfoModuleSymbols::check_header \
     "All functions in all modules matching regular expression \"mod1\":"
-GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "35" \
+GDBInfoModuleSymbols::check_optional_entry "${srcfile}" "mod1" "35" \
     "void mod1::__copy_mod1_M1t1\\(Type m1t1, Type m1t1\\);"
 GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "25" \
     "void mod1::sub_m1_a\\(${integer4}\\);"
@@ -117,9 +117,9 @@ GDBInfoModuleSymbols::check_entry "${src
     "${integer4} mod2::mod2_var_1;"
 GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "20" \
     "${real4} mod2::mod2_var_2;"
-GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "35" \
+GDBInfoModuleSymbols::check_optional_entry "${srcfile}" "mod1" "(35)?" \
     "Type m1t1 mod1::__def_init_mod1_M1t1;"
-GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "35" \
+GDBInfoModuleSymbols::check_optional_entry "${srcfile}" "mod1" "(35)?" \
     "Type __vtype_mod1_M1t1 mod1::__vtab_mod1_M1t1;"
 GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "21" \
     "${real4} mod1::mod1_var_1;"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/info-types-2.f90 ./gdb/testsuite/gdb.fortran/info-types-2.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/info-types-2.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/info-types-2.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2019-2020 Free Software Foundation, Inc.
+! Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/info-types.exp ./gdb/testsuite/gdb.fortran/info-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/info-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/info-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -27,8 +27,8 @@ if { [prepare_for_testing "failed to pre
     return -1
 }
 
-if { ![runto MAIN__] } {
-    perror "Could not run to breakpoint `MAIN__'."
+if { ![fortran_runto_main] } {
+    perror "Could not run to main."
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/info-types.f90 ./gdb/testsuite/gdb.fortran/info-types.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/info-types.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/info-types.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2019-2020 Free Software Foundation, Inc.
+! Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/intrinsics.exp ./gdb/testsuite/gdb.fortran/intrinsics.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/intrinsics.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/intrinsics.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -25,8 +25,8 @@ if { [prepare_for_testing "failed to pre
     return -1
 }
 
-if { ![runto MAIN__] } {
-    perror "Could not run to breakpoint `MAIN__'."
+if { ![fortran_runto_main] } {
+    perror "Could not run to main."
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/intrinsics.f90 ./gdb/testsuite/gdb.fortran/intrinsics.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/intrinsics.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/intrinsics.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2019-2020 Free Software Foundation, Inc.
+! Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/library-module.exp ./gdb/testsuite/gdb.fortran/library-module.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/library-module.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/library-module.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -13,6 +13,10 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+load_lib fortran.exp
+
+if {[skip_fortran_tests]} { return -1 }
+
 standard_testfile library-module-main.f90 
 set srclibfile ${testfile}-lib.f90
 set libfile [standard_output_file ${testfile}-lib.so]
@@ -41,8 +45,8 @@ clean_restart $testfile
 
 gdb_load_shlib $libfile
 
-if ![runto MAIN__] then {
-    perror "couldn't run to breakpoint MAIN__"
+if ![fortran_runto_main] then {
+    perror "couldn't run to main"
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/library-module-lib.f90 ./gdb/testsuite/gdb.fortran/library-module-lib.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/library-module-lib.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/library-module-lib.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2010-2020 Free Software Foundation, Inc.
+! Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/library-module-main.f90 ./gdb/testsuite/gdb.fortran/library-module-main.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/library-module-main.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/library-module-main.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2010-2020 Free Software Foundation, Inc.
+! Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/logical.exp ./gdb/testsuite/gdb.fortran/logical.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/logical.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/logical.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -16,13 +16,16 @@
 # This file was written by Jan Kratochvil <jan.kratochvil@redhat.com>.
 
 standard_testfile .f90
+load_lib fortran.exp
+
+if {[skip_fortran_tests]} { return -1 }
 
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90 quiet}]} {
     return -1
 }
 
-if { ![runto MAIN__] } {
-    perror "Could not run to breakpoint `MAIN__'."
+if { ![fortran_runto_main] } {
+    perror "Could not run to main."
     continue
 }
 
@@ -33,3 +36,21 @@ gdb_test "p l1" " = \\.TRUE\\."
 gdb_test "p l2" " = \\.TRUE\\."
 gdb_test "p l4" " = \\.TRUE\\."
 gdb_test "p l8" " = \\.TRUE\\."
+
+# Different Fortran compilers use different values for logical true.
+# Check how GDB handles this by modifying the underlying value for our
+# logical variables and check they still print as true.
+foreach_with_prefix var { l l1 l2 l4 l8 } {
+    set len [get_integer_valueof "sizeof (${var})" "get sizeof ${var}"]
+    set addr [get_hexadecimal_valueof "&l" "get address of ${var}"]
+
+    for { set i 0 } { $i < $len } { incr i } {
+	with_test_prefix "byte $i" {
+	    gdb_test_no_output "set *((character *) ${addr}) = 0xff" \
+		"set contents of byte at offset $i"
+	    gdb_test "p l" " = \\.TRUE\\."
+	    incr addr
+	    set addr [format "0x%x" $addr]
+	}
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/logical.f90 ./gdb/testsuite/gdb.fortran/logical.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/logical.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/logical.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2010-2020 Free Software Foundation, Inc.
+! Copyright 2010-2021 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
@@ -21,10 +21,12 @@ program test
   logical (kind=2) :: l2
   logical (kind=4) :: l4
   logical (kind=8) :: l8
+  character :: c
   l = .TRUE.
   l1 = .TRUE.
   l2 = .TRUE.
   l4 = .TRUE.
   l8 = .TRUE.
   l = .FALSE.					! stop-here
+  c = 'a'
 end
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/max-depth.exp ./gdb/testsuite/gdb.fortran/max-depth.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/max-depth.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/max-depth.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -26,8 +26,8 @@ if { [prepare_for_testing "failed to pre
     return -1
 }
 
-if { ![runto MAIN__] } {
-    perror "Could not run to breakpoint `MAIN__'."
+if { ![fortran_runto_main] } {
+    perror "Could not run to main."
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/max-depth.f90 ./gdb/testsuite/gdb.fortran/max-depth.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/max-depth.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/max-depth.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2019-2020 Free Software Foundation, Inc.
+! Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/mixed-lang-stack.c ./gdb/testsuite/gdb.fortran/mixed-lang-stack.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/mixed-lang-stack.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/mixed-lang-stack.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,45 @@
+/* Copyright 2020-2021 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 2 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 <stdio.h>
+#include <complex.h>
+#include <string.h>
+
+struct some_struct
+{
+  float a, b;
+};
+
+/* See https://gcc.gnu.org/onlinedocs/gfortran/\
+     Argument-passing-conventions.html.  */
+#if !defined (__GNUC__) || __GNUC__ > 7
+typedef size_t fortran_charlen_t;
+#else
+typedef int fortran_charlen_t;
+#endif
+
+extern void mixed_func_1d_ (int *, float *, double *, complex float *,
+			    char *, fortran_charlen_t);
+
+void
+mixed_func_1c (int a, float b, double c, complex float d, char *f,
+	       struct some_struct *g)
+{
+  printf ("a = %d, b = %f, c = %e, d = (%f + %fi)\n", a, b, c,
+	  creal(d), cimag(d));
+
+  char *string = "this is a string from C";
+  mixed_func_1d_ (&a, &b, &c, &d, string, strlen (string));
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/mixed-lang-stack.cpp ./gdb/testsuite/gdb.fortran/mixed-lang-stack.cpp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/mixed-lang-stack.cpp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/mixed-lang-stack.cpp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,85 @@
+/* Copyright 2020-2021 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 2 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 <cstring>
+#include <cstdlib>
+
+class base_one
+{
+  int num1 = 1;
+  int num2 = 2;
+  int num3 = 3;
+};
+
+class base_two
+{
+public:
+  base_two ()
+  {
+    string = strdup ("Something in C++");
+  }
+
+  ~base_two ()
+  {
+    free (string);
+  }
+
+  char *string = nullptr;
+  float val = 3.5;
+};
+
+class derived_type : public base_one, base_two
+{
+public:
+  derived_type ()
+    : base_one (),
+      base_two ()
+  {
+    /* Nothing.  */
+  }
+
+private:
+  int xxx = 9;
+  float yyy = 10.5;
+};
+
+static void mixed_func_1f ();
+static void mixed_func_1g ();
+
+extern "C"
+{
+  /* Entry point to be called from Fortran. */
+  void
+  mixed_func_1e ()
+  {
+    mixed_func_1f ();
+  }
+
+  /* The entry point back into Fortran.  */
+  extern void mixed_func_1h_ ();
+}
+
+static void
+mixed_func_1g (derived_type obj)
+{
+  mixed_func_1h_ ();
+}
+
+static void
+mixed_func_1f () {
+  derived_type obj;
+
+  mixed_func_1g (obj);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/mixed-lang-stack.exp ./gdb/testsuite/gdb.fortran/mixed-lang-stack.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/mixed-lang-stack.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/mixed-lang-stack.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,167 @@
+# Copyright 2020-2021 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 covers some basic functionality for debugging mixed
+# Fortran, C, and C++ applications.  Features tested include examining
+# the backtrace, and printing frame arguments in frames of different
+# languages.
+#
+# One important aspect of this test is that we set the language in
+# turn to auto, fortran, c, and c++, and carry out the full test in
+# each case to ensure that trying to print objects or types from one
+# language, while GDB's language is set to another, doesn't crash GDB.
+
+if {[skip_fortran_tests]} { return -1 }
+
+standard_testfile mixed-lang-stack.c mixed-lang-stack.cpp mixed-lang-stack.f90
+
+if {[prepare_for_testing_full "failed to prepare" \
+	 [list ${binfile} {debug f90 additional_flags=-lstdc++} \
+	      $srcfile {debug} \
+	      $srcfile2 {debug c++} \
+	      $srcfile3 {debug f90}]]} {
+    return -1
+}
+
+# Runs the test program and examins the stack.  LANG is a string, the
+# value to pass to GDB's 'set language ...' command.
+proc run_tests { lang } {
+    with_test_prefix "lang=${lang}" {
+	global binfile hex
+
+	clean_restart ${binfile}
+
+	if ![runto_main] {
+	    untested "could not run to main"
+	    return -1
+	}
+
+	gdb_breakpoint "breakpt"
+	gdb_continue_to_breakpoint "breakpt"
+
+	if { $lang == "c" || $lang == "c++" } {
+	    gdb_test "set language c" \
+		"Warning: the current language does not match this frame."
+	} else {
+	    gdb_test_no_output "set language $lang"
+	}
+
+	# Check the backtrace.
+	set e_arg "\['\"\]abcdef\['\"\]"
+	set 1b_args "\[^\r\n\]+$e_arg\[^\r\n\]+"
+	set 1g_args "obj=\[^\r\n\]+"
+	set bt_stack \
+	    [multi_line \
+		 "#0\\s+breakpt \\(\\) at \[^\r\n\]+" \
+		 "#1\\s+$hex in mixed_func_1h \\(\\) at \[^\r\n\]+" \
+		 "#2\\s+$hex in mixed_func_1g \\($1g_args\\) at \[^\r\n\]+" \
+		 "#3\\s+$hex in mixed_func_1f \\(\\) at \[^\r\n\]+" \
+		 "#4\\s+$hex in mixed_func_1e \\(\\) at \[^\r\n\]+" \
+		 "#5\\s+$hex in mixed_func_1d \\(\[^\r\n\]+\\) at \[^\r\n\]+" \
+		 "#6\\s+$hex in mixed_func_1c \\(\[^\r\n\]+\\) at \[^\r\n\]+" \
+		 "#7\\s+$hex in mixed_func_1b \\($1b_args\\) at \[^\r\n\]+" \
+		 "#8\\s+$hex in mixed_func_1a \\(\\) at \[^\r\n\]+" \
+		 "#9\\s+$hex in mixed_stack_main \\(\\) at \[^\r\n\]+" \
+		 "#10\\s+$hex in main \\(\[^\r\n\]+\\) at .*" ]
+	gdb_test "bt -frame-arguments all" $bt_stack
+
+	# Check the language for frame #0.
+	gdb_test "info frame" "source language fortran\..*" \
+	    "info frame in frame #0"
+
+	# Move up to the C++ frames and check the frame state, print a
+	# C++ object.
+	gdb_test "frame 2" "#2\\s+$hex in mixed_func_1g .*" \
+	    "select frame #2"
+	gdb_test "info frame" "source language c\\+\\+\..*" \
+	    "info frame in frame #2"
+	if { $lang == "fortran" } {
+	    set obj_pattern " = \\( base_one = \\( num1 = 1, num2 = 2, num3 = 3 \\), base_two = \\( string = $hex 'Something in C\\+\\+\\\\000', val = 3.5 \\), xxx = 9, yyy = 10.5 \\)"
+	} else {
+	    set obj_pattern " = \\{<base_one> = \\{num1 = 1, num2 = 2, num3 = 3\\}, <base_two> = \\{string = $hex \"Something in C\\+\\+\", val = 3.5\\}, xxx = 9, yyy = 10.5\\}"
+	}
+	gdb_test "print obj" "${obj_pattern}"
+
+	# Move up the stack a way, and check frame and the frame
+	# arguments.
+	gdb_test "frame 5" "#5\\s+$hex in mixed_func_1d .*" \
+	    "select frame #5"
+	gdb_test "info frame" "source language fortran\..*" \
+	    "info frame in frame #5"
+
+	gdb_test "up" "#6\\s+$hex in mixed_func_1c .*" \
+	    "up to frame #6"
+	gdb_test "info frame" "source language c\..*" \
+	    "info frame in frame #6"
+
+	if { $lang == "fortran" } {
+	    set d_pattern "\\(4,5\\)"
+	    set f_pattern "$hex 'abcdef\\\\000'"
+	} else {
+	    set d_pattern "4 \\+ 5i"
+	    set f_pattern "$hex \"abcdef\""
+	}
+
+	set args_pattern [multi_line \
+			      "a = 1" \
+			      "b = 2" \
+			      "c = 3" \
+			      "d = ${d_pattern}" \
+			      "f = ${f_pattern}" \
+			      "g = $hex" ]
+
+	gdb_test "info args" $args_pattern \
+	    "info args in frame #6"
+	if { $lang == "fortran" } {
+	    set g_pattern " = \\( a = 1\\.5, b = 2\\.5 \\)"
+	} else {
+	    set g_pattern " = \\{a = 1\\.5, b = 2\\.5\\}"
+	}
+	gdb_test "print *g" "${g_pattern}" \
+	    "print object pointed to by g"
+
+	gdb_test "up" "#7\\s+$hex in mixed_func_1b .*" \
+	    "up to frame #7"
+	gdb_test "info frame" "source language fortran\..*" \
+	    "info frame in frame #7"
+
+	if { $lang == "c" || $lang == "c++" } {
+	    set d_pattern "4 \\+ 5i"
+	    set e_pattern "\"abcdef\""
+	    set g_pattern "\{a = 1.5, b = 2.5\}"
+	} else {
+	    set d_pattern "\\(4,5\\)"
+	    set e_pattern "'abcdef'"
+	    set g_pattern "\\( a = 1.5, b = 2.5 \\)"
+	}
+
+	set args_pattern [multi_line \
+			      "a = 1" \
+			      "b = 2" \
+			      "c = 3" \
+			      "d = ${d_pattern}" \
+			      "e = ${e_pattern}" \
+			      "g = ${g_pattern}" \
+			      "_e = 6" ]
+
+	gdb_test "info args" $args_pattern \
+	    "info args in frame #7"
+    }
+}
+
+run_tests "auto"
+run_tests "fortran"
+run_tests "c"
+run_tests "c++"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/mixed-lang-stack.f90 ./gdb/testsuite/gdb.fortran/mixed-lang-stack.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/mixed-lang-stack.f90	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/mixed-lang-stack.f90	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,116 @@
+! Copyright 2020-2021 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 2 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 type_module
+  use, intrinsic :: iso_c_binding, only: c_int, c_float, c_double
+  type, bind(C) :: MyType
+     real(c_float) :: a
+     real(c_float) :: b
+  end type MyType
+end module type_module
+
+program mixed_stack_main
+  implicit none
+
+  ! Set up some locals.
+
+  ! Call a Fortran function.
+  call mixed_func_1a
+
+  write(*,*) "All done"
+end program mixed_stack_main
+
+subroutine breakpt ()
+  implicit none
+  write(*,*) "Hello World"         ! Break here.
+end subroutine breakpt
+
+subroutine mixed_func_1a()
+  use type_module
+  implicit none
+
+  TYPE(MyType) :: obj
+  complex(kind=4) :: d
+
+  obj%a = 1.5
+  obj%b = 2.5
+  d = cmplx (4.0, 5.0)
+
+  ! Call a C function.
+  call mixed_func_1b (1, 2.0, 3D0, d, "abcdef", obj)
+end subroutine mixed_func_1a
+
+! This subroutine is called from the Fortran code.
+subroutine mixed_func_1b(a, b, c, d, e, g)
+  use type_module
+  implicit none
+
+  integer :: a
+  real(kind=4) :: b
+  real(kind=8) :: c
+  complex(kind=4) :: d
+  character(len=*) :: e
+  character(len=:), allocatable :: f
+  TYPE(MyType) :: g
+
+  interface
+     subroutine mixed_func_1c (a, b, c, d, f, g) bind(C)
+       use, intrinsic :: iso_c_binding, only: c_int, c_float, c_double
+       use, intrinsic :: iso_c_binding, only: c_float_complex, c_char
+       use type_module
+       implicit none
+       integer(c_int), value, intent(in) :: a
+       real(c_float), value, intent(in) :: b
+       real(c_double), value, intent(in) :: c
+       complex(c_float_complex), value, intent(in) :: d
+       character(c_char), intent(in) :: f(*)
+       TYPE(MyType) :: g
+     end subroutine mixed_func_1c
+  end interface
+
+  ! Create a copy of the string with a NULL terminator on the end.
+  f = e//char(0)
+
+  ! Call a C function.
+  call mixed_func_1c (a, b, c, d, f, g)
+end subroutine mixed_func_1b
+
+! This subroutine is called from the C code.
+subroutine mixed_func_1d(a, b, c, d, str)
+  use, intrinsic :: iso_c_binding, only: c_int, c_float, c_double
+  use, intrinsic :: iso_c_binding, only: c_float_complex
+  implicit none
+  integer(c_int) :: a
+  real(c_float) :: b
+  real(c_double) :: c
+  complex(c_float_complex) :: d
+  character(len=*) :: str
+
+  interface
+     subroutine mixed_func_1e () bind(C)
+       implicit none
+     end subroutine mixed_func_1e
+  end interface
+
+  write(*,*) a, b, c, d, str
+
+  ! Call a C++ function (via an extern "C" wrapper).
+  call mixed_func_1e
+end subroutine mixed_func_1d
+
+! This is called from C++ code.
+subroutine mixed_func_1h ()
+  call breakpt
+end subroutine mixed_func_1h
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/module.exp ./gdb/testsuite/gdb.fortran/module.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/module.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/module.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -15,6 +15,8 @@
 
 load_lib "fortran.exp"
 
+if {[skip_fortran_tests]} { return -1 }
+
 standard_testfile .f90
 
 if { [prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}] } {
@@ -29,19 +31,16 @@ gdb_test "p modmany::var_i" " = 14" "sto
 
 gdb_test "print mod1::var_const" " = 20" "fully qualified name of DW_TAG_constant"
 
-if ![runto MAIN__] then {
-    perror "couldn't run to breakpoint MAIN__"
+if ![fortran_runto_main] then {
+    perror "couldn't run to main"
     continue
 }
 
 set int_type [fortran_int4]
 
 # Test 'info variables' can find module variables.
-gdb_test "info variables -n" \
+set mod_re \
     [multi_line \
-	 "All defined variables:" \
-	 "" \
-	 "File .*$srcfile:" \
 	 "18:\[ \t\]+${int_type} mod1::var_const;" \
 	 "17:\[ \t\]+${int_type} mod1::var_i;" \
 	 "23:\[ \t\]+${int_type} mod2::var_i;" \
@@ -53,11 +52,33 @@ gdb_test "info variables -n" \
 	 "33:\[ \t\]+${int_type} modmany::var_c;" \
 	 "33:\[ \t\]+${int_type} modmany::var_i;" \
 	 "37:\[ \t\]+${int_type} moduse::var_x;" \
-	 "37:\[ \t\]+${int_type} moduse::var_y;(" \
-	 "" \
-	 "File .*:(" \
-	 "$decimal:.*)+)*"]
+	 "37:\[ \t\]+${int_type} moduse::var_y;"]
 
+set state 0
+gdb_test_multiple "info variables -n" "" {
+    -re "\r\nAll defined variables:" {
+	if { $state == 0 } { set state 1 }
+	exp_continue
+    }
+    -re "\r\n\r\nFile .*[string_to_regexp $srcfile]:" {
+	if { $state == 1 } { set state 2 }
+	exp_continue
+    }
+    -re $mod_re	{
+	if { $state == 2 } { set state 3 }
+	exp_continue
+    }
+    -re "\r\n\r\nFile \[^\r\n\]*:" {
+	exp_continue
+    }
+    -re -wrap "" {
+	if { $state == 3} {
+	    pass $gdb_test_name
+	} else {
+	    fail $gdb_test_name
+	}
+    }
+}
 
 # Do not use simple single-letter names as GDB would pick up for expectedly
 # nonexisting symbols some static variables from system libraries debuginfos.
@@ -104,7 +125,7 @@ complete "modmany::var" $modmany_list
 # Breakpoint would work in language "c".
 gdb_test "show language" {The current source language is "(auto; currently )?fortran".}
 
-# gcc-4.4.2: The main program is always MAIN__ in .symtab so "runto" above
+# gcc-4.4.2: The main program is always $fmain in .symtab so "runto" above
 # works.  But DWARF DW_TAG_subprogram contains the name specified by
 # the "program" Fortran statement.
 if [gdb_breakpoint "module"] {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/module.f90 ./gdb/testsuite/gdb.fortran/module.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/module.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/module.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2009-2020 Free Software Foundation, Inc.
+! Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/multi-dim.exp ./gdb/testsuite/gdb.fortran/multi-dim.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/multi-dim.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/multi-dim.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -25,8 +25,8 @@ if { [prepare_for_testing "failed to pre
     return -1
 }
 
-if ![runto MAIN__] {
-    perror "Couldn't run to MAIN__"
+if ![fortran_runto_main] {
+    perror "Couldn't run to main"
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/multi-dim.f90 ./gdb/testsuite/gdb.fortran/multi-dim.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/multi-dim.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/multi-dim.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2011-2020 Free Software Foundation, Inc.
+! Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/nested-funcs-2.exp ./gdb/testsuite/gdb.fortran/nested-funcs-2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/nested-funcs-2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/nested-funcs-2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -89,7 +89,7 @@ proc do_bp_tests {with_src_prefix_p with
 
     # Call a contained function.
     if { ${with_nest_prefix_p} } {
-	gdb_test "call ${nest_prefix}subroutine_to_call()" " called"
+	gdb_test_stdio "call ${nest_prefix}subroutine_to_call()" " called" ""
     }
 
     # Break on another contained function and run to it.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/nested-funcs-2.f90 ./gdb/testsuite/gdb.fortran/nested-funcs-2.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/nested-funcs-2.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/nested-funcs-2.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2019-2020 Free Software Foundation, Inc.
+! Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/nested-funcs.exp ./gdb/testsuite/gdb.fortran/nested-funcs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/nested-funcs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/nested-funcs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -25,8 +25,8 @@ if {[prepare_for_testing "failed to prep
     return -1
 }
 
-if ![runto MAIN__] then {
-    perror "couldn't run to breakpoint MAIN__"
+if ![fortran_runto_main] then {
+    perror "couldn't run to main"
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/nested-funcs.f90 ./gdb/testsuite/gdb.fortran/nested-funcs.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/nested-funcs.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/nested-funcs.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2016-2020 Free Software Foundation, Inc.
+! Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/pointers.f90 ./gdb/testsuite/gdb.fortran/pointers.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/pointers.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/pointers.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2019-2020 Free Software Foundation, Inc.
+! Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/pointer-to-pointer.exp ./gdb/testsuite/gdb.fortran/pointer-to-pointer.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/pointer-to-pointer.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/pointer-to-pointer.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,49 @@
+# Copyright 2020-2021 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 for GDB printing a pointer to a type containing a buffer.
+
+if {[skip_fortran_tests]} { return -1 }
+
+standard_testfile ".f90"
+load_lib fortran.exp
+
+if {[prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
+	 {debug f90}]} {
+    return -1
+}
+
+if ![fortran_runto_main] {
+    untested "could not run to main"
+    return -1
+}
+
+# Depending on the compiler being used, the type names can be printed differently.
+set real4 [fortran_real4]
+
+gdb_breakpoint [gdb_get_line_number "Break Here"]
+gdb_continue_to_breakpoint "Break Here"
+
+gdb_test "print *buffer" \
+    " = \\( alpha = \\(1\\.5, 2\\.5, 3\\.5, 4\\.5, 5\\.5\\) \\)"
+
+set l_buffer_type [multi_line \
+		       "Type l_buffer" \
+		       "    $real4 :: alpha\\(:\\)" \
+		       "End Type l_buffer" ]
+
+gdb_test "ptype buffer" "type = PTR TO -> \\( ${l_buffer_type} \\)"
+gdb_test "ptype *buffer" "type = ${l_buffer_type}"
+gdb_test "ptype buffer%alpha" "type = $real4 \\(5\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/pointer-to-pointer.f90 ./gdb/testsuite/gdb.fortran/pointer-to-pointer.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/pointer-to-pointer.f90	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/pointer-to-pointer.f90	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,34 @@
+! Copyright 2020-2021 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 allocate_array
+
+  type l_buffer
+     real, dimension(:), pointer :: alpha
+  end type l_buffer
+  type(l_buffer), pointer :: buffer
+
+  allocate (buffer)
+  allocate (buffer%alpha (5))
+
+  buffer%alpha (1) = 1.5
+  buffer%alpha (2) = 2.5
+  buffer%alpha (3) = 3.5
+  buffer%alpha (4) = 4.5
+  buffer%alpha (5) = 5.5
+
+  print *, buffer%alpha	! Break Here.
+
+end program allocate_array
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/print-formatted.exp ./gdb/testsuite/gdb.fortran/print-formatted.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/print-formatted.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/print-formatted.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
@@ -25,8 +25,8 @@ if { [prepare_for_testing "failed to pre
     return -1
 }
 
-if { ![runto MAIN__] } {
-    fail "runto MAIN__"
+if { ![fortran_runto_main] } {
+    fail "could not run to main"
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/print-formatted.f90 ./gdb/testsuite/gdb.fortran/print-formatted.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/print-formatted.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/print-formatted.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2014-2020 Free Software Foundation, Inc.
+! Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/printing-types.exp ./gdb/testsuite/gdb.fortran/printing-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/printing-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/printing-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -16,13 +16,14 @@
 if {[skip_fortran_tests]} { return -1 }
 
 standard_testfile .f90
+load_lib fortran.exp
 
 if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug f90}]} {
     return -1
 }
 
-if {![runto MAIN__]} then {
-    untested "could not run to breakpoint MAIN__"
+if {![fortran_runto_main]} then {
+    untested "could not run to main"
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/printing-types.f90 ./gdb/testsuite/gdb.fortran/printing-types.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/printing-types.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/printing-types.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2017-2020 Free Software Foundation, Inc.
+! Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/print_type.exp ./gdb/testsuite/gdb.fortran/print_type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/print_type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/print_type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -19,12 +19,14 @@
 standard_testfile "pointers.f90"
 load_lib fortran.exp
 
+if {[skip_fortran_tests]} { return -1 }
+
 if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/ptr-indentation.exp ./gdb/testsuite/gdb.fortran/ptr-indentation.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/ptr-indentation.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/ptr-indentation.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -22,8 +22,8 @@ if {[prepare_for_testing $testfile.exp $
     return -1
 }
 
-if {![runto MAIN__]} then {
-    untested "couldn't run to breakpoint MAIN__"
+if {![fortran_runto_main]} then {
+    untested "couldn't run to main"
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/ptr-indentation.f90 ./gdb/testsuite/gdb.fortran/ptr-indentation.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/ptr-indentation.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/ptr-indentation.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2017-2020 Free Software Foundation, Inc.
+! Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/ptype-on-functions.exp ./gdb/testsuite/gdb.fortran/ptype-on-functions.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/ptype-on-functions.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/ptype-on-functions.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -24,16 +24,16 @@ if {[prepare_for_testing "failed to prep
     return -1
 }
 
-if ![runto MAIN__] then {
-    perror "couldn't run to breakpoint MAIN__"
+if ![fortran_runto_main] then {
+    perror "couldn't run to main"
     continue
 }
 
 gdb_test "ptype some_module::get_number" \
-    "type = integer\\(kind=4\\) \\(Type __class_some_module_Number_t\\)"
+    "type = integer\\(kind=4\\) \\(Type __class_some_module_Number(_t)?\\)"
 
 gdb_test "ptype some_module::set_number" \
-    "type = void \\(Type __class_some_module_Number_t, integer\\(kind=4\\)\\)"
+    "type = void \\(Type __class_some_module_Number(_t)?, integer\\(kind=4\\)\\)"
 
 gdb_test "ptype is_bigger" \
     "type = logical\\(kind=4\\) \\(integer\\(kind=4\\), integer\\(kind=4\\)\\)"
@@ -43,3 +43,9 @@ gdb_test "ptype say_numbers" \
 
 gdb_test "ptype fun_ptr" \
     "type = PTR TO -> \\( integer\\(kind=4\\) \\(\\) \\(REF TO -> \\( integer\\(kind=4\\) \\)\\) \\)"
+
+gdb_test "ptype say_string" \
+    "type = void \\(character\\*\\(\\*\\), integer\\(kind=\\d+\\)\\)"
+
+gdb_test "ptype say_array" \
+    "type = void \\(integer\\(kind=4\\) \\(:,:\\)\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/ptype-on-functions.f90 ./gdb/testsuite/gdb.fortran/ptype-on-functions.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/ptype-on-functions.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/ptype-on-functions.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2019-2020 Free Software Foundation, Inc.
+! Copyright 2019-2021 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
@@ -63,6 +63,10 @@ program test
      integer function fun2 (x)
        integer :: x
      end function fun2
+
+     subroutine say_array (arr)
+       integer, dimension (:,:) :: arr
+     end subroutine say_array
   end interface
 
   type (Number) :: n1
@@ -70,7 +74,12 @@ program test
 
   procedure(fun1), pointer:: fun_ptr => NULL()
 
+  integer, dimension (5,5) :: array
+  array = 0
+
   call say_numbers (1,2,3)	! stop here
+  call say_string ('hello world')
+  call say_array (array (2:3, 2:4))
   print *, fun_ptr (3)
 
 end program test
@@ -87,3 +96,17 @@ integer function fun2 (x)
   fun2 = x + 2
 end function fun2
 
+subroutine say_string (str)
+  character(len=*) :: str
+  print *, str
+end subroutine say_string
+
+subroutine say_array (arr)
+  integer, dimension (:,:) :: arr
+  do i=LBOUND (arr, 2), UBOUND (arr, 2), 1
+     do j=LBOUND (arr, 1), UBOUND (arr, 1), 1
+        write(*, fmt="(i4)", advance="no") arr (j, i)
+     end do
+     print *, ""
+  end do
+end subroutine say_array
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/short-circuit-argument-list.exp ./gdb/testsuite/gdb.fortran/short-circuit-argument-list.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/short-circuit-argument-list.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/short-circuit-argument-list.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/short-circuit-argument-list.f90 ./gdb/testsuite/gdb.fortran/short-circuit-argument-list.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/short-circuit-argument-list.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/short-circuit-argument-list.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2018-2020 Free Software Foundation, Inc.
+! Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/subarray.exp ./gdb/testsuite/gdb.fortran/subarray.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/subarray.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/subarray.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
@@ -21,6 +21,7 @@
 if { [skip_fortran_tests] } { return -1 }
 
 standard_testfile .f
+load_lib fortran.exp
 
 if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}]} {
     return -1
@@ -31,8 +32,8 @@ gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
 gdb_load ${binfile}
 
-if ![runto MAIN__] then {
-    perror "couldn't run to breakpoint MAIN__"
+if ![fortran_runto_main] then {
+    perror "couldn't run to main"
     continue
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/subarray.f ./gdb/testsuite/gdb.fortran/subarray.f
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/subarray.f	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/subarray.f	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-c Copyright 2005-2020 Free Software Foundation, Inc.
+c Copyright 2005-2021 Free Software Foundation, Inc.
 
 c This program is free software; you can redistribute it and/or modify
 c it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/type.f90 ./gdb/testsuite/gdb.fortran/type.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/type.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/type.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2013-2020 Free Software Foundation, Inc.
+! Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/type-kinds.exp ./gdb/testsuite/gdb.fortran/type-kinds.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/type-kinds.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/type-kinds.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/types.exp ./gdb/testsuite/gdb.fortran/types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1994-2020 Free Software Foundation, Inc.
+# Copyright 1994-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp ./gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -14,13 +14,16 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 standard_testfile "vla.f90"
+load_lib fortran.exp
+
+if {[skip_fortran_tests]} { return -1 }
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-datatypes.exp ./gdb/testsuite/gdb.fortran/vla-datatypes.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-datatypes.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-datatypes.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -16,6 +16,8 @@
 standard_testfile ".f90"
 load_lib "fortran.exp"
 
+if {[skip_fortran_tests]} { return -1 }
+
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
@@ -24,7 +26,7 @@ if { [prepare_for_testing "failed to pre
 # check that all fortran standard datatypes will be
 # handled correctly when using as VLA's
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-datatypes.f90 ./gdb/testsuite/gdb.fortran/vla-datatypes.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-datatypes.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-datatypes.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2015-2020 Free Software Foundation, Inc.
+! Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla.f90 ./gdb/testsuite/gdb.fortran/vla.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2015-2020 Free Software Foundation, Inc.
+! Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-history.exp ./gdb/testsuite/gdb.fortran/vla-history.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-history.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-history.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -14,13 +14,16 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 standard_testfile "vla.f90"
+load_lib fortran.exp
+
+if {[skip_fortran_tests]} { return -1 }
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-ptr-info.exp ./gdb/testsuite/gdb.fortran/vla-ptr-info.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-ptr-info.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-ptr-info.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -14,19 +14,24 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 standard_testfile "vla.f90"
+load_lib fortran.exp
+
+if {[skip_fortran_tests]} { return -1 }
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
 
+set real4 [fortran_real4]
+
 # Check the status of a pointer to a dynamic array.
 gdb_breakpoint [gdb_get_line_number "pvla-associated"]
 gdb_continue_to_breakpoint "pvla-associated"
-gdb_test "print &pvla" " = \\(PTR TO -> \\( real\\(kind=4\\) \\(10,10,10\\) \\)\\) ${hex}" \
+gdb_test "print &pvla" " = \\(PTR TO -> \\( $real4 \\(10,10,10\\) \\)\\) ${hex}" \
   "print pvla pointer information"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-ptype.exp ./gdb/testsuite/gdb.fortran/vla-ptype.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-ptype.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-ptype.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -16,12 +16,14 @@
 standard_testfile "vla.f90"
 load_lib "fortran.exp"
 
+if {[skip_fortran_tests]} { return -1 }
+
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp ./gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-ptype-sub.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -16,12 +16,14 @@
 standard_testfile "vla-sub.f90"
 load_lib "fortran.exp"
 
+if {[skip_fortran_tests]} { return -1 }
+
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-sizeof.exp ./gdb/testsuite/gdb.fortran/vla-sizeof.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-sizeof.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-sizeof.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -14,13 +14,16 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 standard_testfile "vla.f90"
+load_lib fortran.exp
+
+if {[skip_fortran_tests]} { return -1 }
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-sub.f90 ./gdb/testsuite/gdb.fortran/vla-sub.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-sub.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-sub.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2015-2020 Free Software Foundation, Inc.
+! Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-type.exp ./gdb/testsuite/gdb.fortran/vla-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -16,12 +16,14 @@
 standard_testfile ".f90"
 load_lib "fortran.exp"
 
+if {[skip_fortran_tests]} { return -1 }
+
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
      {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
@@ -31,8 +33,12 @@ set int [fortran_int4]
 
 # Check if not allocated VLA in type does not break
 # the debugger when accessing it.
-gdb_breakpoint [gdb_get_line_number "before-allocated"]
-gdb_continue_to_breakpoint "before-allocated"
+# break main for Flang compiler already breaks here
+if ![test_compiler_info "clang-*"] {
+    gdb_breakpoint [gdb_get_line_number "before-allocated"]
+    gdb_continue_to_breakpoint "before-allocated"
+}
+
 gdb_test "print twov" " = \\\( ivla1 = <not allocated>, ivla2 = <not allocated> \\\)" \
   "print twov before allocated"
 gdb_test "print twov%ivla1" " = <not allocated>" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-type.f90 ./gdb/testsuite/gdb.fortran/vla-type.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-type.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-type.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2016-2020 Free Software Foundation, Inc.
+! Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-value.exp ./gdb/testsuite/gdb.fortran/vla-value.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-value.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-value.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -16,12 +16,14 @@
 standard_testfile "vla.f90"
 load_lib "fortran.exp"
 
+if {[skip_fortran_tests]} { return -1 }
+
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
      {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
@@ -129,8 +131,8 @@ gdb_test "print vla1(9, 9, 9)" "no such
 # Try to assign VLA to user variable
 clean_restart ${testfile}
 
-if ![runto MAIN__] then {
-    perror "couldn't run to breakpoint MAIN__"
+if ![fortran_runto_main] then {
+    perror "couldn't run to main"
     continue
 }
 gdb_breakpoint [gdb_get_line_number "vla2-allocated"]
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp ./gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -14,13 +14,16 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 standard_testfile "vla-sub.f90"
+load_lib fortran.exp
+
+if {[skip_fortran_tests]} { return -1 }
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-value-sub.exp ./gdb/testsuite/gdb.fortran/vla-value-sub.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-value-sub.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-value-sub.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -14,13 +14,16 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 standard_testfile "vla-sub.f90"
+load_lib fortran.exp
+
+if {[skip_fortran_tests]} { return -1 }
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp ./gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -14,13 +14,16 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 standard_testfile "vla-sub.f90"
+load_lib fortran.exp
+
+if {[skip_fortran_tests]} { return -1 }
 
 if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
     {debug f90 quiet}] } {
     return -1
 }
 
-if ![runto_main] {
+if ![fortran_runto_main] {
     untested "could not run to main"
     return -1
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/whatis_type.exp ./gdb/testsuite/gdb.fortran/whatis_type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.fortran/whatis_type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.fortran/whatis_type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -23,8 +23,8 @@ if { [prepare_for_testing "failed to pre
     return -1
 }
 
-if ![runto MAIN__] {
-    fail "run to MAIN__"
+if ![fortran_runto_main] {
+    fail "run to main"
     return
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.gdb/complaints.exp ./gdb/testsuite/gdb.gdb/complaints.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.gdb/complaints.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.gdb/complaints.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
@@ -65,9 +65,11 @@ proc test_initial_complaints { } {
 	"During symbol reading: Register a complaint"
 
     # Re-issue the first message #1
-    gdb_test_stdio \
-	"call complaint_internal (\$cstr)" \
-	"During symbol reading: Register a complaint"
+    with_test_prefix "re-issue" {
+	gdb_test_stdio \
+	    "call complaint_internal (\$cstr)" \
+	    "During symbol reading: Register a complaint"
+    }
 
     # Add a second complaint, expect it
     gdb_test_stdio \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.gdb/python-interrupts.exp ./gdb/testsuite/gdb.gdb/python-interrupts.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.gdb/python-interrupts.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.gdb/python-interrupts.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.gdb/python-selftest.exp ./gdb/testsuite/gdb.gdb/python-selftest.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.gdb/python-selftest.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.gdb/python-selftest.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.gdb/selftest.exp ./gdb/testsuite/gdb.gdb/selftest.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.gdb/selftest.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.gdb/selftest.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1988-2020 Free Software Foundation, Inc.
+# Copyright 1988-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.gdb/unittest.exp ./gdb/testsuite/gdb.gdb/unittest.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.gdb/unittest.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.gdb/unittest.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/basic-types.exp ./gdb/testsuite/gdb.go/basic-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/basic-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/basic-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/chan.exp ./gdb/testsuite/gdb.go/chan.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/chan.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/chan.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -21,6 +21,7 @@
 load_lib "go.exp"
 
 if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
 
 standard_testfile .go
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/global-local-var-shadow.exp ./gdb/testsuite/gdb.go/global-local-var-shadow.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/global-local-var-shadow.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.go/global-local-var-shadow.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,58 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2012-2021 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/>.
+
+# Basic tests.
+
+load_lib "go.exp"
+
+if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
+
+standard_testfile .go
+
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug go}] } {
+    return -1
+}
+
+set bp_location1 [gdb_get_line_number "set breakpoint 1 here"]
+
+if { [go_runto_main] < 0 } {
+    untested "could not run to main"
+    return -1
+}
+
+gdb_test_multiple "print st" "print global var st" {
+    -re -wrap " = $hex \"We shall\"" {
+       pass $gdb_test_name
+    }
+    -re -wrap " = $hex .*" {
+       # GCC PR 93844 (Same problem with google go compiler go1.11.13).
+       # Due to the PR, gdb prints an uninitialized value, which can manifest
+       # as '$3 = 0x0 ""', but also as printing a wild pointer.
+       xfail $gdb_test_name
+    }
+}
+
+if { [gdb_breakpoint ${srcfile}:${bp_location1}] } {
+    pass "setting breakpoint 1"
+}
+
+gdb_test "cont" "Breakpoint .*:${bp_location1}.*" "going to first breakpoint"
+
+gdb_test "print st" \
+    ".* = $hex \"Hello, world!\"" \
+    "string after assignment check"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/global-local-var-shadow.go ./gdb/testsuite/gdb.go/global-local-var-shadow.go
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/global-local-var-shadow.go	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.go/global-local-var-shadow.go	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,11 @@
+package main
+
+import "fmt"
+
+var st = "We shall"
+
+func main () {
+  fmt.Println ("Before assignment")
+  st := "Hello, world!" // this intentionally shadows the global "st"
+  fmt.Println (st) // set breakpoint 1 here
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/handcall.exp ./gdb/testsuite/gdb.go/handcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/handcall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/handcall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -20,6 +20,7 @@
 load_lib "go.exp"
 
 if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
 
 standard_testfile .go
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/hello.exp ./gdb/testsuite/gdb.go/hello.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/hello.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/hello.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -20,6 +20,7 @@
 load_lib "go.exp"
 
 if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
 
 standard_testfile .go
 
@@ -34,13 +35,6 @@ if { [go_runto_main] < 0 } {
     return -1
 }
 
-# This used to print "", i.e., the local "st" initialized as "".
-setup_xfail "*-*-*"
-
-gdb_test "print st" \
-    ".* = $hex \"\"" \
-    "starting string check"
-
 if { [gdb_breakpoint ${srcfile}:${bp_location1}] } {
     pass "setting breakpoint 1"
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/hello.go ./gdb/testsuite/gdb.go/hello.go
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/hello.go	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/hello.go	2021-05-21 01:57:25.000000000 +0000
@@ -2,11 +2,8 @@ package main
 
 import "fmt"
 
-var myst = "Shall we?"
-
 func main () {
   fmt.Println ("Before assignment")
-  st := "Hello, world!" // this intentionally shadows the global "st"
+  st := "Hello, world!"
   fmt.Println (st) // set breakpoint 1 here
-  fmt.Println (myst)
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/integers.exp ./gdb/testsuite/gdb.go/integers.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/integers.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/integers.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -20,6 +20,7 @@
 load_lib "go.exp"
 
 if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
 
 standard_testfile .go
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/max-depth.exp ./gdb/testsuite/gdb.go/max-depth.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/max-depth.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/max-depth.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -20,6 +20,7 @@
 load_lib "go.exp"
 
 if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
 
 standard_testfile .go
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/max-depth.go ./gdb/testsuite/gdb.go/max-depth.go
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/max-depth.go	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/max-depth.go	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright 2019-2020 Free Software Foundation, Inc.
+// Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/methods.exp ./gdb/testsuite/gdb.go/methods.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/methods.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/methods.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -20,6 +20,7 @@
 load_lib "go.exp"
 
 if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
 
 standard_testfile .go
 
@@ -28,22 +29,76 @@ if { [prepare_for_testing "failed to pre
 }
 
 set bp_location1 {main.T.Foo}
-set bp_location2 {(*main.T).Bar}
-set bp_location2_regexp {\(*main.T\).Bar}
+set bp_location2 {main.T.Bar}
 
 if { [go_runto_main] < 0 } {
     untested "could not run to main"
     return -1
 }
 
-if { [gdb_breakpoint ${bp_location1}] } {
-    pass "setting breakpoint 1"
+set found_wrong_foo 0
+set found_wrong_bar 0
+gdb_test_multiple "maintenance print symbols" "" {
+    -re "^\r\n void main.Foo.N6_main.T\[^\r\n\]*(?=\r\n)" {
+	set found_wrong_foo 1
+	exp_continue
+    }
+    -re "^\r\n void main.Bar.pN6_main.T\[^\r\n\]*(?=\r\n)" {
+	set found_wrong_bar 1
+	exp_continue
+    }
+    -re "^\r\n void main.T.Bar\[^\r\n\]*(?=\r\n)" {
+	exp_continue
+    }
+    -re "\r\n$gdb_prompt $" {
+	pass $gdb_test_name
+    }
+    -re "\r\n\[^\r\n\]*(?=\r\n)" {
+	exp_continue
+    }
 }
-setup_xfail "*-*-*" ;# mangling issues IIRC
-gdb_test "cont" "Breakpoint .*:${bp_location1}.*" "going to first breakpoint"
 
-if { [gdb_breakpoint ${bp_location2}] } {
-    pass "setting breakpoint 2"
+if { $found_wrong_foo } {
+    # We have with gccgo-6/7:
+    # <1><553>: Abbrev Number: 21 (DW_TAG_subprogram)
+    #    <554>   DW_AT_name        : main.Foo.N6_main.T
+    setup_xfail "*-*-*"
+} else {
+    # We have with gccgo-8/9/10:
+    # <1><1e24>: Abbrev Number: 40 (DW_TAG_subprogram)
+    #    <1e25>   DW_AT_name        : main.Foo.main.T
+    #    <1e2c>   DW_AT_linkage_name: main.T.Foo
+
+    # For reference: with go1.11.13:
+    # <1><6c46b>: Abbrev Number: 2 (DW_TAG_subprogram)
+    #    <6c46c>   DW_AT_name        : main.T.Foo
+}
+
+if { [gdb_breakpoint ${bp_location1} message]} {
+    gdb_test "cont" "Breakpoint .*, ${bp_location1}.*" \
+	"going to first breakpoint"
+}
+
+if { $found_wrong_bar == 1 } {
+    # We have with gccgo-6/7:
+    # <1><528>: Abbrev Number: 19 (DW_TAG_subprogram)
+    # <529>   DW_AT_name        : main.Bar.pN6_main.T
+    setup_xfail "*-*-*"
+} else {
+    # We have with gccgo-8/9/10:
+    # <1><6e4>: Abbrev Number: 24 (DW_TAG_subprogram)
+    #    <6e5>   DW_AT_name        : main.Bar..1main.T
+    #    <6ec>   DW_AT_linkage_name: main.T.Bar
+
+    # For reference: with go1.11.13:
+    # <1><6c49a>: Abbrev Number: 2 (DW_TAG_subprogram)
+    #    <6c49b>   DW_AT_name        : main.(*T).Bar
+
+    # It has been clarified in PR gcc/93866 that it's ok that symbols names
+    # diverge between gc and gccgo.  So, we accept the main.T.Bar as valid.
+}
+
+if { [gdb_breakpoint ${bp_location2} message] } {
+    gdb_test "cont" "Breakpoint .*, ${bp_location2}.*" \
+	"going to second breakpoint"
 }
-setup_xfail "*-*-*" ;# mangling issues IIRC
-gdb_test "cont" "Breakpoint .*:${bp_location2_regexp}.*" "going to second breakpoint"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/package.exp ./gdb/testsuite/gdb.go/package.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/package.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/package.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -20,6 +20,7 @@
 load_lib "go.exp"
 
 if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
 
 standard_testfile package1.go package2.go
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/print.exp ./gdb/testsuite/gdb.go/print.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/print.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/print.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/strings.exp ./gdb/testsuite/gdb.go/strings.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/strings.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/strings.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -18,6 +18,7 @@
 load_lib "go.exp"
 
 if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
 
 standard_testfile .go
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/types.exp ./gdb/testsuite/gdb.go/types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -20,6 +20,7 @@
 load_lib "go.exp"
 
 if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
 
 standard_testfile .go
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/unsafe.exp ./gdb/testsuite/gdb.go/unsafe.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.go/unsafe.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.go/unsafe.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -20,6 +20,7 @@
 load_lib "go.exp"
 
 if { [skip_go_tests] } { continue }
+if { [support_go_compile] == 0 } { continue }
 
 standard_testfile .go
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/guile.exp ./gdb/testsuite/gdb.guile/guile.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/guile.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/guile.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
@@ -80,5 +80,5 @@ gdb_test "guile (print x)" "= 23"
 gdb_test_no_output "guile (define a (execute \"help\" #:to-string #t))" \
     "collect help from uiout"
 
-gdb_test "guile (print a)" "= .*aliases -- Aliases of other commands.*" \
+gdb_test "guile (print a)" "= .*aliases -- User-defined aliases of other commands.*" \
     "verify help to uiout"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-arch.c ./gdb/testsuite/gdb.guile/scm-arch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-arch.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-arch.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-arch.exp ./gdb/testsuite/gdb.guile/scm-arch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-arch.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-arch.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-block.c ./gdb/testsuite/gdb.guile/scm-block.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-block.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-block.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-block.exp ./gdb/testsuite/gdb.guile/scm-block.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-block.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-block.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-breakpoint.c ./gdb/testsuite/gdb.guile/scm-breakpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-breakpoint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-breakpoint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-breakpoint.exp ./gdb/testsuite/gdb.guile/scm-breakpoint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-breakpoint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-breakpoint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-cmd.c ./gdb/testsuite/gdb.guile/scm-cmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-cmd.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-cmd.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-cmd.exp ./gdb/testsuite/gdb.guile/scm-cmd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-cmd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-cmd.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-disasm.c ./gdb/testsuite/gdb.guile/scm-disasm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-disasm.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-disasm.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-disasm.exp ./gdb/testsuite/gdb.guile/scm-disasm.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-disasm.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-disasm.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-equal.c ./gdb/testsuite/gdb.guile/scm-equal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-equal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-equal.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-equal.exp ./gdb/testsuite/gdb.guile/scm-equal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-equal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-equal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-error-1.scm ./gdb/testsuite/gdb.guile/scm-error-1.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-error-1.scm	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-error-1.scm	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-error-2.scm ./gdb/testsuite/gdb.guile/scm-error-2.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-error-2.scm	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-error-2.scm	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-error.exp ./gdb/testsuite/gdb.guile/scm-error.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-error.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-error.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -34,7 +34,7 @@ set remote_guile_file_2 [gdb_remote_down
 			     ${srcdir}/${subdir}/${testfile}-2.scm]
 
 gdb_test "source $remote_guile_file_1" \
-    "(ERROR: )?In procedure \[+\]: Wrong type: #f.*" \
+    "(ERROR: )?In procedure \[+\]: Wrong type.*: #f.*" \
     "error loading scm file caught"
 
 gdb_test "p 1" " = 1" "no delayed error"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame-args.c ./gdb/testsuite/gdb.guile/scm-frame-args.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame-args.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-frame-args.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame-args.exp ./gdb/testsuite/gdb.guile/scm-frame-args.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame-args.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-frame-args.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame-args.scm ./gdb/testsuite/gdb.guile/scm-frame-args.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame-args.scm	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-frame-args.scm	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-;; Copyright (C) 2014-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame.exp ./gdb/testsuite/gdb.guile/scm-frame.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-frame.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame-inline.c ./gdb/testsuite/gdb.guile/scm-frame-inline.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame-inline.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-frame-inline.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame-inline.exp ./gdb/testsuite/gdb.guile/scm-frame-inline.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-frame-inline.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-frame-inline.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-gsmob.exp ./gdb/testsuite/gdb.guile/scm-gsmob.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-gsmob.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-gsmob.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-iterator.c ./gdb/testsuite/gdb.guile/scm-iterator.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-iterator.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-iterator.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-iterator.exp ./gdb/testsuite/gdb.guile/scm-iterator.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-iterator.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-iterator.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-lazy-string.c ./gdb/testsuite/gdb.guile/scm-lazy-string.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-lazy-string.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-lazy-string.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-lazy-string.exp ./gdb/testsuite/gdb.guile/scm-lazy-string.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-lazy-string.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-lazy-string.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-math.c ./gdb/testsuite/gdb.guile/scm-math.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-math.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-math.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-math.exp ./gdb/testsuite/gdb.guile/scm-math.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-math.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-math.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-objfile.c ./gdb/testsuite/gdb.guile/scm-objfile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-objfile.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-objfile.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-objfile.exp ./gdb/testsuite/gdb.guile/scm-objfile.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-objfile.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-objfile.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-objfile-script.c ./gdb/testsuite/gdb.guile/scm-objfile-script.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-objfile-script.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-objfile-script.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-objfile-script.exp ./gdb/testsuite/gdb.guile/scm-objfile-script.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-objfile-script.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-objfile-script.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-objfile-script-gdb.in ./gdb/testsuite/gdb.guile/scm-objfile-script-gdb.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-objfile-script-gdb.in	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-objfile-script-gdb.in	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-parameter.exp ./gdb/testsuite/gdb.guile/scm-parameter.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-parameter.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-parameter.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-ports.c ./gdb/testsuite/gdb.guile/scm-ports.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-ports.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-ports.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-ports.exp ./gdb/testsuite/gdb.guile/scm-ports.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-ports.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-ports.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-pretty-print.c ./gdb/testsuite/gdb.guile/scm-pretty-print.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-pretty-print.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-pretty-print.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-pretty-print.exp ./gdb/testsuite/gdb.guile/scm-pretty-print.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-pretty-print.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-pretty-print.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-pretty-print.scm ./gdb/testsuite/gdb.guile/scm-pretty-print.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-pretty-print.scm	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-pretty-print.scm	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-;; Copyright (C) 2008-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-progspace.c ./gdb/testsuite/gdb.guile/scm-progspace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-progspace.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-progspace.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-progspace.exp ./gdb/testsuite/gdb.guile/scm-progspace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-progspace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-progspace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -73,7 +73,7 @@ with_test_prefix "program unloaded" {
 # deleted.  We need to, for example, delete an inferior to get the progspace
 # to go away.
 
-gdb_test "add-inferior" "Added inferior 2" "create new inferior"
+gdb_test "add-inferior" "Added inferior 2.*" "create new inferior"
 gdb_test "inferior 2" ".*" "switch to new inferior"
 gdb_test_no_output "remove-inferiors 1" "remove first inferior"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-section-script.c ./gdb/testsuite/gdb.guile/scm-section-script.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-section-script.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-section-script.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-section-script.exp ./gdb/testsuite/gdb.guile/scm-section-script.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-section-script.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-section-script.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-section-script.scm ./gdb/testsuite/gdb.guile/scm-section-script.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-section-script.scm	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-section-script.scm	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-;; Copyright (C) 2010-2020 Free Software Foundation, Inc.
+;; Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-symbol.c ./gdb/testsuite/gdb.guile/scm-symbol.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-symbol.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-symbol.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-symbol.exp ./gdb/testsuite/gdb.guile/scm-symbol.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-symbol.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-symbol.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -169,10 +169,8 @@ gdb_test "guile (print (symbol-name cplu
     "= SimpleClass::valueofi().*" "test method.name"
 gdb_test "guile (print (symbol-print-name cplusfunc))" \
     "= SimpleClass::valueofi().*" "test method.print_name"
-# FIXME: GDB is broken here and we're verifying broken behaviour.
-# (linkage-name should be the mangled name)
 gdb_test "guile (print (symbol-linkage-name cplusfunc))" \
-    "SimpleClass::valueofi().*" "test method.linkage_name"
+    "_ZN11SimpleClass8valueofiEv.*" "test method.linkage_name"
 gdb_test "guile (print (= (symbol-addr-class cplusfunc) SYMBOL_LOC_BLOCK))" "= #t"
 
 # Test is_valid when the objfile is unloaded.  This must be the last
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-symtab-2.c ./gdb/testsuite/gdb.guile/scm-symtab-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-symtab-2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-symtab-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-symtab.c ./gdb/testsuite/gdb.guile/scm-symtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-symtab.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-symtab.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-symtab.exp ./gdb/testsuite/gdb.guile/scm-symtab.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-symtab.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-symtab.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -32,6 +32,8 @@ if ![gdb_guile_runto_main] {
     return
 }
 
+set debug_types [debug_types]
+
 # Setup and get the symbol table.
 set line_no [gdb_get_line_number "Block break here."]
 gdb_breakpoint $line_no
@@ -101,8 +103,21 @@ gdb_test "guile (print (->bool (member \
     "#t" "test int in static symbols"
 gdb_test "guile (print (->bool (member \"char\" static-symbols)))" \
     "#t" "test char in static symbols"
-gdb_test "guile (print (->bool (member \"simple_struct\" static-symbols)))" \
-    "#t" "test simple_struct in static symbols"
+gdb_test_multiple \
+    "guile (print (->bool (member \"simple_struct\" static-symbols)))" \
+    "test simple_struct in static symbols" {
+	-re -wrap "#t" {
+	    pass $gdb_test_name
+	}
+	-re -wrap "#f" {
+	    if { $debug_types } {
+		# Xfail for PR gcc/90232.
+		xfail $gdb_test_name
+	    } else {
+		fail $gdb_test_name
+	    }
+	}
+    }
 
 # Test is_valid when the objfile is unloaded.  This must be the last
 # test as it unloads the object file in GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-type.c ./gdb/testsuite/gdb.guile/scm-type.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-type.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-type.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
@@ -15,6 +15,8 @@
    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 <stdlib.h>
+
 struct s
 {
   int a;
@@ -53,6 +55,12 @@ enum E
 struct s vec_data_1 = {1, 1};
 struct s vec_data_2 = {1, 2};
 
+struct flex_member
+{
+  int n;
+  int items[];
+};
+
 int
 main ()
 {
@@ -72,6 +80,10 @@ main ()
   st.b = 5;
 
   e = v2;
+
+  struct flex_member *f = (struct flex_member *) malloc (100);
+  f->items[0] = 111;
+  f->items[1] = 222;
   
   return 0;      /* break to inspect struct and array.  */
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-type.exp ./gdb/testsuite/gdb.guile/scm-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
@@ -261,6 +261,18 @@ proc test_range {} {
 		"ERROR: .*: Wrong type argument in position 1 \\(expecting ranged type\\): .*" \
 		"check range for non ranged type"
 	}
+
+	with_test_prefix "on flexible array member" {
+	    gdb_scm_test_silent_cmd "print f" "print value (f)"
+	    gdb_scm_test_silent_cmd "guile (define f (history-ref 0))" \
+		"get value (f) from history"
+	    gdb_test "guile (print (type-range (field-type (type-field (value-type (value-dereference f)) \"items\"))))" \
+		"= \\(0 0\\)"
+	    gdb_test "guile (print (value-subscript (value-field (value-dereference f) \"items\") 0))" \
+		"= 111"
+	    gdb_test "guile (print (value-subscript (value-field (value-dereference f) \"items\") 1))" \
+		"= 222"
+	}
     }
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-value.c ./gdb/testsuite/gdb.guile/scm-value.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-value.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-value.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-value-cc.cc ./gdb/testsuite/gdb.guile/scm-value-cc.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-value-cc.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-value-cc.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-value-cc.exp ./gdb/testsuite/gdb.guile/scm-value-cc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-value-cc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-value-cc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-value.exp ./gdb/testsuite/gdb.guile/scm-value.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/scm-value.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/scm-value.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/source2.scm ./gdb/testsuite/gdb.guile/source2.scm
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/source2.scm	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/source2.scm	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 ;; This testcase is part of GDB, the GNU debugger.
 ;;
-;; Copyright 2008-2020 Free Software Foundation, Inc.
+;; Copyright 2008-2021 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
@@ -15,5 +15,5 @@
 ;; You should have received a copy of the GNU General Public License
 ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-(display (format "y~As" "e"))
+(display (format #f "y~As" "e"))
 (newline)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/types-module.cc ./gdb/testsuite/gdb.guile/types-module.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/types-module.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/types-module.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/types-module.exp ./gdb/testsuite/gdb.guile/types-module.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.guile/types-module.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.guile/types-module.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
@@ -44,7 +44,7 @@ gdb_test "guile (print (type-has-field-d
     "= #t" "type-has-field-deep? member in baseclass"
 
 gdb_test "guile (print (type-has-field-deep? (lookup-type \"int\") \"base_member\"))" \
-    "ERROR: .*Wrong type argument in position 1 \\(expecting struct or union\\): #<gdb:type int>.*" \
+    "Wrong type argument in position 1 \\(expecting struct or union\\): #<gdb:type int>.*" \
     "type-has-field-deep? from int"
 
 gdb_scm_test_silent_cmd "guile (define enum-htab (make-enum-hashtable (lookup-type \"enum_type\")))" \
@@ -54,9 +54,9 @@ gdb_test "guile (print (hash-ref enum-ht
     "= 1" "verify make-enum-hashtable"
 
 gdb_test "guile (define bad-enum-htab (make-enum-hashtable #f))" \
-    "ERROR: .*Wrong type argument in position 1 \\(expecting gdb:type\\): #f.*" \
+    "Wrong type argument in position 1 \\(expecting gdb:type\\): #f.*" \
     "make-enum-hashtable from #f"
 
 gdb_test "guile (define bad-enum-htab (make-enum-hashtable (lookup-type \"int\")))" \
-    "ERROR: .*Wrong type argument in position 1 \\(expecting enum\\): #<gdb:type int>.*" \
+    "Wrong type argument in position 1 \\(expecting enum\\): #<gdb:type int>.*" \
     "make-enum-hashtable from int"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/3explicit.c ./gdb/testsuite/gdb.linespec/3explicit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/3explicit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/3explicit.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/base/one/header.h ./gdb/testsuite/gdb.linespec/base/one/header.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/base/one/header.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/base/one/header.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/base/two/header.h ./gdb/testsuite/gdb.linespec/base/two/header.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/base/two/header.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/base/two/header.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/break-ask.exp ./gdb/testsuite/gdb.linespec/break-ask.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/break-ask.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/break-ask.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/break-asm-file0.s ./gdb/testsuite/gdb.linespec/break-asm-file0.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/break-asm-file0.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/break-asm-file0.s	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/break-asm-file1.s ./gdb/testsuite/gdb.linespec/break-asm-file1.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/break-asm-file1.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/break-asm-file1.s	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/break-asm-file.c ./gdb/testsuite/gdb.linespec/break-asm-file.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/break-asm-file.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/break-asm-file.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/break-asm-file.exp ./gdb/testsuite/gdb.linespec/break-asm-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/break-asm-file.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/break-asm-file.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cp-completion-aliases.cc ./gdb/testsuite/gdb.linespec/cp-completion-aliases.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cp-completion-aliases.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cp-completion-aliases.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,73 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+#include <cstring>
+
+template<typename T>
+struct magic
+{
+  T x;
+};
+
+struct object
+{
+  int a;
+};
+
+typedef magic<int> int_magic_t;
+
+typedef object *object_p;
+
+typedef const char *my_string_t;
+
+static int
+get_value (object_p obj)
+{
+  return obj->a;
+}
+
+static int
+get_something (object_p obj)
+{
+  return obj->a;
+}
+
+static int
+get_something (my_string_t msg)
+{
+  return strlen (msg);
+}
+
+static int
+grab_it (int_magic_t *var)
+{
+  return var->x;
+}
+
+int
+main ()
+{
+  magic<int> m;
+  m.x = 4;
+
+  object obj;
+  obj.a = 0;
+
+  int val = (get_value (&obj) + get_something (&obj)
+	     + get_something ("abc") + grab_it (&m));
+  return val;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cp-completion-aliases.exp ./gdb/testsuite/gdb.linespec/cp-completion-aliases.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cp-completion-aliases.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cp-completion-aliases.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,41 @@
+# Copyright 2019-2021 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 file tests GDB's ability to remove symbol aliases from the
+# completion list in C++.
+
+load_lib completion-support.exp
+
+standard_testfile .cc
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug}]} {
+    return -1
+}
+
+# Disable the completion limit for the whole testcase.
+gdb_test_no_output "set max-completions unlimited"
+
+test_gdb_complete_unique \
+    "break get_v" \
+    "break get_value(object_p)"
+
+test_gdb_complete_unique \
+    "break gr" \
+    "break grab_it(int_magic_t*)"
+
+test_gdb_complete_multiple "break " "get_som" "ething(" {
+    "get_something(my_string_t)"
+    "get_something(object_p)"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpcompletion.exp ./gdb/testsuite/gdb.linespec/cpcompletion.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpcompletion.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cpcompletion.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpexplicit.cc ./gdb/testsuite/gdb.linespec/cpexplicit.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpexplicit.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cpexplicit.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpexplicit.exp ./gdb/testsuite/gdb.linespec/cpexplicit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpexplicit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cpexplicit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls2.cc ./gdb/testsuite/gdb.linespec/cpls2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cpls2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls-abi-tag.cc ./gdb/testsuite/gdb.linespec/cpls-abi-tag.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls-abi-tag.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cpls-abi-tag.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls-abi-tag.exp ./gdb/testsuite/gdb.linespec/cpls-abi-tag.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls-abi-tag.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cpls-abi-tag.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls.cc ./gdb/testsuite/gdb.linespec/cpls.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cpls.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls-hyphen.cc ./gdb/testsuite/gdb.linespec/cpls-hyphen.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls-hyphen.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cpls-hyphen.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls-ops.cc ./gdb/testsuite/gdb.linespec/cpls-ops.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls-ops.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cpls-ops.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
@@ -91,6 +91,8 @@ test_op_array::operator[] (T *t)
 
 /* Code for operator new tests.  */
 
+static int dummy;
+
 struct test_op_new
 {
   void *operator new (size_t);
@@ -99,7 +101,7 @@ struct test_op_new
 void *
 test_op_new::operator new (size_t)
 {
-  return NULL;
+  return &dummy;
 }
 
 /* Code for operator delete tests.  */
@@ -124,7 +126,7 @@ struct test_op_new_array
 void *
 test_op_new_array::operator new[] (size_t)
 {
-  return NULL;
+  return &dummy;
 }
 
 /* Code for operator delete[] tests.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls-ops.exp ./gdb/testsuite/gdb.linespec/cpls-ops.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cpls-ops.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cpls-ops.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cp-replace-typedefs-ns-template.cc ./gdb/testsuite/gdb.linespec/cp-replace-typedefs-ns-template.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cp-replace-typedefs-ns-template.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cp-replace-typedefs-ns-template.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,101 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+namespace NS1 {
+
+namespace NS2 {
+
+struct object
+{
+  object ()
+  {
+  }
+};
+
+typedef object *object_p;
+
+template<typename T>
+struct Templ1
+{
+  explicit Templ1 (object_p)
+  {
+  }
+
+  template<typename I>
+  static void
+  static_method (object_p)
+  {
+  }
+};
+
+template<typename T, typename U>
+struct Templ2
+{
+  explicit Templ2 (object_p)
+  {
+  }
+
+  template<typename I>
+  static void
+  static_method (object_p)
+  {
+  }
+};
+
+template<typename T> using AliasTempl = Templ2<int, T>;
+
+typedef Templ1<int> int_Templ1_t;
+
+void
+object_p_func (object_p)
+{
+}
+
+void
+int_Templ1_t_func (int_Templ1_t *)
+{
+}
+
+} // namespace NS2
+
+} // namespace NS1
+
+/* These typedefs have the same name as some of the components within
+   NS1 that they alias to, on purpose, to try to confuse GDB and cause
+   recursion.  */
+using NS2 = int;
+using object = NS1::NS2::object;
+using Templ1 = NS1::NS2::Templ1<unsigned>;
+using Templ2 = NS1::NS2::Templ2<long, long>;
+using AliasTempl = NS1::NS2::AliasTempl<int>;
+
+NS2 ns2_int = 0;
+object obj;
+Templ1 templ1 (0);
+NS1::NS2::int_Templ1_t int_templ1 (0);
+AliasTempl alias (0);
+
+int
+main ()
+{
+  NS1::NS2::Templ1<int>::static_method<int> (0);
+  NS1::NS2::AliasTempl<int>::static_method<int> (0);
+  NS1::NS2::object_p_func (0);
+  NS1::NS2::int_Templ1_t_func (0);
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cp-replace-typedefs-ns-template.exp ./gdb/testsuite/gdb.linespec/cp-replace-typedefs-ns-template.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/cp-replace-typedefs-ns-template.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/cp-replace-typedefs-ns-template.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,121 @@
+# Copyright 2020-2021 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 file tests GDB's ability to replace typedefs in C++ symbols
+# when setting breakpoints, particularly around templates in
+# namespaces.
+
+load_lib completion-support.exp
+
+standard_testfile .cc
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+	 {debug c++ additional_flags=-std=c++11}]} {
+    return -1
+}
+
+# Disable the completion limit for the whole testcase.
+gdb_test_no_output "set max-completions unlimited"
+
+# Confirm that the important global namespace typedefs were indeed
+# emited in the debug info.
+gdb_test "ptype NS2" "type = int"
+gdb_test "ptype object" "type = struct NS1::NS2::object {.*"
+gdb_test "ptype Templ1" "type = struct NS1::NS2::Templ1<unsigned int> .*"
+gdb_test "ptype AliasTempl" "type = struct NS1::NS2::Templ2<int, int> .*"
+
+# Wrapper around check_bp_locations_match_list that expect a single
+# location in the set breakpoint, instead of a list of locations.  If
+# the set location isn't specified, then it is assumed to be the exact
+# same as the input location.
+proc check_bp {location_in {location_out ""}} {
+    if {$location_out == ""} {
+	set location_out $location_in
+    }
+    check_bp_locations_match_list "b $location_in" [list $location_out]
+}
+
+# These used to crash GDB with infinite recursion because GDB would
+# confuse the "Templ1" typedef in the global namespace with the "Templ1"
+# template in within NS1::NS2.
+test_gdb_complete_unique \
+    "break NS1::NS2::Templ1<int>::Tem" \
+    "break NS1::NS2::Templ1<int>::Templ1(NS1::NS2::object*)"
+check_bp "NS1::NS2::Templ1<int>::Templ1(NS1::NS2::object*)"
+
+# Similar test, but without a template.  This would not crash.
+test_gdb_complete_unique \
+    "break NS1::NS2::object::obj" \
+    "break NS1::NS2::object::object()"
+check_bp "NS1::NS2::object::object()"
+
+# Test some non-template typedef replacing within a namespace.
+test_gdb_complete_unique \
+    "break NS1::NS2::object_p_f" \
+    "break NS1::NS2::object_p_func(NS1::NS2::object*)"
+check_bp \
+    "NS1::NS2::object_p_func(NS1::NS2::object_p)" \
+    "NS1::NS2::object_p_func(NS1::NS2::object*)"
+
+# Make sure the "NS2" in the template argument list is resolved as
+# being a global typedef for int.
+foreach loc {
+    "NS1::NS2::Templ1<int>::static_method<int>(NS1::NS2::object*)"
+    "NS1::NS2::Templ1<int>::static_method<NS2>(NS1::NS2::object*)"
+    "NS1::NS2::Templ1<NS2>::static_method<int>(NS1::NS2::object*)"
+    "NS1::NS2::Templ1<NS2>::static_method<NS2>(NS1::NS2::object*)"
+} {
+    check_bp $loc "NS1::NS2::Templ1<int>::static_method<int>(NS1::NS2::object*)"
+}
+
+foreach loc {
+    "NS1::NS2::Templ2<int, int>::static_method<int>(NS1::NS2::object*)"
+    "NS1::NS2::Templ2<int, int>::static_method<int>(NS1::NS2::object_p)"
+} {
+    check_bp $loc "NS1::NS2::Templ2<int, int>::static_method<int>(NS1::NS2::object*)"
+}
+
+# Check that GDB expands the "NS1::NS2::AliasTempl<int>" as
+# "NS1::NS2::Templ2<int, int>".
+foreach loc {
+    "NS1::NS2::AliasTempl<int>::static_method<int>(NS1::NS2::object*)"
+    "NS1::NS2::AliasTempl<int>::static_method<int>(NS1::NS2::object_p)"
+} {
+    if [test_compiler_info gcc*] {
+	# While Clang emits "AliasTempl<int>" (etc.) typedefs, GCC
+	# emits "AliasTempl" typedefs with no template parameter info.
+	setup_xfail gcc/95437 *-*-*
+    }
+    check_bp $loc "NS1::NS2::Templ2<int, int>::static_method<int>(NS1::NS2::object*)"
+
+    # Check that setting the breakpoint with GCC really failed,
+    # instead of succeeding with e.g., "AliasTempl<int>" preserved in
+    # the location text.  If that ever happens, we'll need to update
+    # these tests.
+    if [test_compiler_info gcc*] {
+	check_setting_bp_fails "b $loc"
+    }
+}
+
+# Check typedef substitution in a template in a qualified name in a
+# function parameter list.  These used to crash GDB with recursion
+# around "Templ1", because there's a "Templ1" typedef in the global
+# namespace.
+foreach loc {
+    "NS1::NS2::int_Templ1_t_func(NS1::NS2::int_Templ1_t*)"
+    "NS1::NS2::int_Templ1_t_func(NS1::NS2::Templ1<int>*)"
+} {
+    check_bp $loc "NS1::NS2::int_Templ1_t_func(NS1::NS2::Templ1<int>*)"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/explicit2.c ./gdb/testsuite/gdb.linespec/explicit2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/explicit2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/explicit2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/explicit.c ./gdb/testsuite/gdb.linespec/explicit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/explicit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/explicit.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/explicit.exp ./gdb/testsuite/gdb.linespec/explicit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/explicit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/explicit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -239,8 +239,26 @@ namespace eval $testfile {
 
 	set tst "complete non-unique file name"
 	send_gdb "break -source exp\t"
+	# We're matching two cases here:
+	# - without GLIBC debuginfo
+	#   (gdb) break -source exp^Glicit^G^M
+	#   explicit.c  explicit2.c  ^M
+	#   (gdb) break -source explicit^M
+	#   Source filename requires function, label, or line offset.^M
+	#   (gdb) PASS: gdb.linespec/explicit.exp: complete non-unique file name
+	# - with GLIBC debuginfo:
+	#   (gdb) break -source exp^Gl^G^M
+	#   explicit.c  explicit2.c  explicit_bzero.c  explicit_bzero_chk.c \
+	#     explodename.c  ^M
+	#   (gdb) break -source expl^M
+	#   Source filename requires function, label, or line offset.^M
+	#   (gdb) PASS: gdb.linespec/explicit.exp: complete non-unique file name
 	gdb_test_multiple "" $tst {
-	    -re "break -source exp\\\x07licit" {
+	    -re "break -source exp\\\x07l" {
+		# At this point, either output is done (first case), or a
+		# further "icit" is emitted (second case).  We have no reliable
+		# way to decide one way or another, so just send the tabs, even
+		# though that may be a little early in the second case.
 		send_gdb "\t\t"
 		gdb_test_multiple "" $tst {
 		    -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+\(expl.*\)?\r\n$gdb_prompt" {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/keywords.c ./gdb/testsuite/gdb.linespec/keywords.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/keywords.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/keywords.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/keywords.exp ./gdb/testsuite/gdb.linespec/keywords.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/keywords.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/keywords.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/linespec.exp ./gdb/testsuite/gdb.linespec/linespec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/linespec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/linespec.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -201,7 +201,7 @@ gdb_test "break lspec.h:$line" \
 # Multi-inferior tests.
 #
 
-gdb_test "add-inferior" "Added inferior 2" \
+gdb_test "add-inferior" "Added inferior 2.*" \
     "add inferior for linespec tests"
 
 gdb_test "inferior 2" "Switching to inferior 2 .*" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/ls-dollar.cc ./gdb/testsuite/gdb.linespec/ls-dollar.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/ls-dollar.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/ls-dollar.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/ls-dollar.exp ./gdb/testsuite/gdb.linespec/ls-dollar.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/ls-dollar.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/ls-dollar.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/ls-errs.c ./gdb/testsuite/gdb.linespec/ls-errs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/ls-errs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/ls-errs.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/ls-errs.exp ./gdb/testsuite/gdb.linespec/ls-errs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/ls-errs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/ls-errs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/macro-relative.c ./gdb/testsuite/gdb.linespec/macro-relative.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/macro-relative.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/macro-relative.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/macro-relative.exp ./gdb/testsuite/gdb.linespec/macro-relative.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/macro-relative.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/macro-relative.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/skip-two.exp ./gdb/testsuite/gdb.linespec/skip-two.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/skip-two.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/skip-two.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/thread.c ./gdb/testsuite/gdb.linespec/thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/thread.exp ./gdb/testsuite/gdb.linespec/thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.linespec/thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.linespec/thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/array.f ./gdb/testsuite/gdb.mi/array.f
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/array.f	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/array.f	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-c Copyright 2006-2020 Free Software Foundation, Inc.
+c Copyright 2006-2021 Free Software Foundation, Inc.
 
 c This program is free software; you can redistribute it and/or modify
 c it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/basics.c ./gdb/testsuite/gdb.mi/basics.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/basics.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/basics.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 1999-2020 Free Software Foundation, Inc.
+/* Copyright 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/dw2-ref-missing-frame.exp ./gdb/testsuite/gdb.mi/dw2-ref-missing-frame.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/dw2-ref-missing-frame.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/dw2-ref-missing-frame.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -30,7 +30,7 @@ set objmainfile [standard_output_file ${
 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" $objsfile object {}] != ""
      || [gdb_compile "${srcdir}/${subdir}/${srcfile2}" $objfuncfile object {}] != ""
      || [gdb_compile "${srcdir}/${subdir}/${srcfile3}" $objmainfile object {debug}] != ""
-     || [gdb_compile "$objsfile $objfuncfile $objmainfile" $binfile executable {}] != "" } {
+     || [gdb_compile "$objfuncfile $objsfile $objmainfile" $binfile executable {}] != "" } {
     return -1
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/dw2-ref-missing-frame-func.c ./gdb/testsuite/gdb.mi/dw2-ref-missing-frame-func.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/dw2-ref-missing-frame-func.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/dw2-ref-missing-frame-func.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
@@ -57,11 +57,14 @@ asm ("cu_text_end:");
    generated by GCC.  (.gdb_index includes a gdb-generated map
    instead.)  */
 asm (
+"       .pushsection    .debug_info,\"\",%progbits \n"
+".Lcu1_begin: \n"
+"       .popsection \n"
 "	.pushsection	.debug_aranges,\"\",%progbits \n"
 "	.4byte	.Laranges_end - .Laranges_start \n"	// Length of Address Ranges Info
 ".Laranges_start: \n"
 "	.2byte	0x2 \n"	// DWARF Version
-"	.4byte	0 \n" // .Ldebug_info0 - Offset of Compilation Unit Info
+"	.4byte  .Lcu1_begin\n" // .Ldebug_info0 - Offset of Compilation Unit Info
 "	.byte	4 \n"	// Size of Address
 "	.byte	0 \n"	// Size of Segment Descriptor
 "	.2byte	0 \n"	// Pad to 16 byte boundary
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/dw2-ref-missing-frame-main.c ./gdb/testsuite/gdb.mi/dw2-ref-missing-frame-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/dw2-ref-missing-frame-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/dw2-ref-missing-frame-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/dw2-ref-missing-frame.S ./gdb/testsuite/gdb.mi/dw2-ref-missing-frame.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/dw2-ref-missing-frame.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/dw2-ref-missing-frame.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/gdb2549.exp ./gdb/testsuite/gdb.mi/gdb2549.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/gdb2549.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/gdb2549.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -51,6 +51,7 @@ proc register_tests_no_exec { } {
 proc register_tests { } {
     global hex
     global decimal
+    global mi_gdb_prompt
     set octal "\[0-7\]+"
     set binary "\[0-1\]+"
     set float "\\-?((\[0-9\]+(\\.\[0-9\]+)?(e\[-+\]\[0-9\]+)?)|(nan\\($hex\\)))"
@@ -71,9 +72,35 @@ proc register_tests { } {
 	    "555\\^done,register-values=\\\[\{number=\"$decimal\",value=\"$octal\"\}.*\\\]" \
 	    "register values o"
 
-    mi_gdb_test "666-data-list-register-values t" \
-	    "666\\^done,register-values=\\\[\{number=\"$decimal\",value=\"$binary\"\}.*\\\]" \
-	    "register values t"
+    set cmd "666-data-list-register-values t"
+    set test "register values t"
+    set state 0
+    gdb_test_multiple $cmd $test -prompt "$mi_gdb_prompt$" {
+	-re "666\\^done,register-values=\\\[" {
+	    if { $state == 0 } {
+		set state 1
+		exp_continue
+	    }
+	    fail $gdb_test_name
+	}
+	-re "\{number=\"$decimal\",value=\"$binary\"\}" {
+	    if { $state != 0 } {
+		set state 2
+		exp_continue
+	    }
+	    fail $gdb_test_name
+	}
+	-re "\{number=\"$decimal\",value=\"\[^\"\]*\"\}" {
+	    exp_continue
+	}
+	-re "\]\r\n$mi_gdb_prompt$" {
+	    if { $state == 2 } {
+		pass $gdb_test_name
+	    } else {
+		fail $gdb_test_name
+	    }
+	}
+    }
 }
 
 register_tests_no_exec
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/gdb669.exp ./gdb/testsuite/gdb.mi/gdb669.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/gdb669.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/gdb669.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/gdb680.exp ./gdb/testsuite/gdb.mi/gdb680.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/gdb680.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/gdb680.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/gdb701.exp ./gdb/testsuite/gdb.mi/gdb701.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/gdb701.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/gdb701.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/gdb792.exp ./gdb/testsuite/gdb.mi/gdb792.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/gdb792.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/gdb792.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/list-thread-groups-available.c ./gdb/testsuite/gdb.mi/list-thread-groups-available.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/list-thread-groups-available.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/list-thread-groups-available.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2017-2020 Free Software Foundation, Inc.
+/* Copyright 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/list-thread-groups-available.exp ./gdb/testsuite/gdb.mi/list-thread-groups-available.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/list-thread-groups-available.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/list-thread-groups-available.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -56,7 +56,9 @@ set process_entry_re "{${id_re},${type_r
 
 # The list can be long, so read entries one by one to avoid hitting the
 # timeout (especially when running with check-read1).
-gdb_test_multiple "-list-thread-groups --available" "list available thread groups" {
+set cmd "-list-thread-groups --available"
+set test "list available thread groups"
+gdb_test_multiple $cmd $test -prompt "$mi_gdb_prompt" {
     -re "\\^done,groups=\\\[" {
 	# The beginning of the response.
 	exp_continue
@@ -71,7 +73,7 @@ gdb_test_multiple "-list-thread-groups -
 	# The last entry.
 	pass $gdb_test_name
     }
-} $mi_gdb_prompt
+}
 
 # List specific processes, make sure there are two entries.
 set spawn_id_1 [remote_spawn target $binfile]
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/list-thread-groups-no-inferior.exp ./gdb/testsuite/gdb.mi/list-thread-groups-no-inferior.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/list-thread-groups-no-inferior.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/list-thread-groups-no-inferior.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.c ./gdb/testsuite/gdb.mi/mi2-amd64-entry-value.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi2-amd64-entry-value.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp ./gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi2-amd64-entry-value.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.s ./gdb/testsuite/gdb.mi/mi2-amd64-entry-value.s
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-amd64-entry-value.s	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi2-amd64-entry-value.s	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-cli-display.c ./gdb/testsuite/gdb.mi/mi2-cli-display.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-cli-display.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi2-cli-display.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-cli-display.exp ./gdb/testsuite/gdb.mi/mi2-cli-display.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-cli-display.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi2-cli-display.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-prompt.exp ./gdb/testsuite/gdb.mi/mi2-prompt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-prompt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi2-prompt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-var-child.exp ./gdb/testsuite/gdb.mi/mi2-var-child.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi2-var-child.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi2-var-child.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-async.exp ./gdb/testsuite/gdb.mi/mi-async.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-async.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-async.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-async-run.c ./gdb/testsuite/gdb.mi/mi-async-run.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-async-run.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-async-run.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2016-2020 Free Software Foundation, Inc.
+/* Copyright 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-async-run.exp ./gdb/testsuite/gdb.mi/mi-async-run.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-async-run.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-async-run.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-basics.exp ./gdb/testsuite/gdb.mi/mi-basics.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-basics.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-basics.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-break.exp ./gdb/testsuite/gdb.mi/mi-break.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-break.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-break.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-breakpoint-changed.exp ./gdb/testsuite/gdb.mi/mi-breakpoint-changed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-breakpoint-changed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-breakpoint-changed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-breakpoint-multiple-locations.cc ./gdb/testsuite/gdb.mi/mi-breakpoint-multiple-locations.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-breakpoint-multiple-locations.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-breakpoint-multiple-locations.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-breakpoint-multiple-locations.exp ./gdb/testsuite/gdb.mi/mi-breakpoint-multiple-locations.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-breakpoint-multiple-locations.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-breakpoint-multiple-locations.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.cc ./gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.exp ./gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-catch-load.c ./gdb/testsuite/gdb.mi/mi-catch-load.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-catch-load.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-catch-load.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-catch-load.exp ./gdb/testsuite/gdb.mi/mi-catch-load.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-catch-load.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-catch-load.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-catch-load-so.c ./gdb/testsuite/gdb.mi/mi-catch-load-so.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-catch-load-so.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-catch-load-so.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-cli.exp ./gdb/testsuite/gdb.mi/mi-cli.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-cli.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-cli.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-cmd-error.exp ./gdb/testsuite/gdb.mi/mi-cmd-error.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-cmd-error.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-cmd-error.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-cmd-param-changed.exp ./gdb/testsuite/gdb.mi/mi-cmd-param-changed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-cmd-param-changed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-cmd-param-changed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-complete.cc ./gdb/testsuite/gdb.mi/mi-complete.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-complete.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-complete.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020 Free Software Foundation, Inc.
+/* Copyright 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-complete.exp ./gdb/testsuite/gdb.mi/mi-complete.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-complete.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-complete.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state.c ./gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state.exp ./gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state-mt.c ./gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state-mt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state-mt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state-mt.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state-st.c ./gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state-st.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state-st.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-condbreak-call-thr-state-st.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-console.exp ./gdb/testsuite/gdb.mi/mi-console.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-console.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-console.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-detach.exp ./gdb/testsuite/gdb.mi/mi-detach.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-detach.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-detach.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-disassemble.exp ./gdb/testsuite/gdb.mi/mi-disassemble.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-disassemble.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-disassemble.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-dprintf.c ./gdb/testsuite/gdb.mi/mi-dprintf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-dprintf.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-dprintf.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
    Contributed by Hui Zhu  <hui@codesourcery.com>
 
    This program is free software; you can redistribute it and/or modify
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-dprintf.exp ./gdb/testsuite/gdb.mi/mi-dprintf.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-dprintf.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-dprintf.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+#   Copyright (C) 2013-2021 Free Software Foundation, Inc.
 #   Contributed by Hui Zhu  <hui@codesourcery.com>
 
 # This program is free software; you can redistribute it and/or modify
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-dprintf-pending.c ./gdb/testsuite/gdb.mi/mi-dprintf-pending.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-dprintf-pending.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-dprintf-pending.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-dprintf-pending.exp ./gdb/testsuite/gdb.mi/mi-dprintf-pending.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-dprintf-pending.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-dprintf-pending.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-dprintf-pendshr.c ./gdb/testsuite/gdb.mi/mi-dprintf-pendshr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-dprintf-pendshr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-dprintf-pendshr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-editing.exp ./gdb/testsuite/gdb.mi/mi-editing.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-editing.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-editing.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-eval.exp ./gdb/testsuite/gdb.mi/mi-eval.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-eval.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-eval.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-exec-run.exp ./gdb/testsuite/gdb.mi/mi-exec-run.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-exec-run.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-exec-run.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-exit-code.c ./gdb/testsuite/gdb.mi/mi-exit-code.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-exit-code.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-exit-code.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 1999-2020 Free Software Foundation, Inc.
+/* Copyright 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-exit-code.exp ./gdb/testsuite/gdb.mi/mi-exit-code.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-exit-code.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-exit-code.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-file.exp ./gdb/testsuite/gdb.mi/mi-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-file.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-file.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-file-transfer.exp ./gdb/testsuite/gdb.mi/mi-file-transfer.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-file-transfer.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-file-transfer.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # This testcase is part of GDB, the GNU debugger.
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-fill-memory.exp ./gdb/testsuite/gdb.mi/mi-fill-memory.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-fill-memory.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-fill-memory.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90 ./gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2009-2020 Free Software Foundation, Inc.
+! Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-fortran-modules.exp ./gdb/testsuite/gdb.mi/mi-fortran-modules.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-fortran-modules.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-fortran-modules.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -52,12 +52,55 @@ mi_gdb_test "103-symbol-info-modules --n
     "103\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"41\",name=\"moduse\"\}\\\]\}\\\]\}" \
     "-symbol-info-modules --name moduse"
 
-mi_gdb_test "104-symbol-info-module-functions" \
-    [join \
-     [list \
-      "104\\^done,symbols=\\\[(${system_module_symbols_pattern})*\{module=\"mod1\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"21\",name=\"mod1::check_all\",type=\"void \\(void\\)\",description=\"void mod1::check_all\\(void\\);\"\}\\\]\}\\\]\},\{module=\"mod2\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"30\",name=\"mod2::check_var_i\",type=\"void \\(void\\)\",description=\"void mod2::check_var_i\\(void\\);\"\}\\\]\}\\\]\},\{module=\"mod3\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"21\",name=\"mod3::check_all\",type=\"void \\(void\\)\",description=\"void mod3::check_all\\(void\\);\"\},\{line=\"27\",name=\"mod3::check_mod2\",type=\"void \\(void\\)\",description=\"void mod3::check_mod2\\(void\\);\"\}\\\]\}\\\]\}," \
-      "\{module=\"modmany\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"35\",name=\"modmany::check_some\",type=\"void \\(void\\)\",description=\"void modmany::check_some\\(void\\);\"\}\\\]\}\\\]\},\{module=\"moduse\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"44\",name=\"moduse::check_all\",type=\"void \\(void\\)\",description=\"void moduse::check_all\\(void\\);\"\},\{line=\"49\",name=\"moduse::check_var_x\",type=\"void \\(void\\)\",description=\"void moduse::check_var_x\\(void\\);\"\}\\\]\}\\\]\}\\\]" ] "" ] \
-    "-symbol-info-module-functions"
+set test "-symbol-info-module-functions"
+set cmd "104-symbol-info-module-functions"
+set mod1_re \
+    "\{module=\"mod1\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"21\",name=\"mod1::check_all\",type=\"void \\(void\\)\",description=\"void mod1::check_all\\(void\\);\"\}\\\]\}\\\]\}"
+set mod2_re \
+    "\{module=\"mod2\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"30\",name=\"mod2::check_var_i\",type=\"void \\(void\\)\",description=\"void mod2::check_var_i\\(void\\);\"\}\\\]\}\\\]\}"
+set mod3_re \
+    "\{module=\"mod3\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"21\",name=\"mod3::check_all\",type=\"void \\(void\\)\",description=\"void mod3::check_all\\(void\\);\"\},\{line=\"27\",name=\"mod3::check_mod2\",type=\"void \\(void\\)\",description=\"void mod3::check_mod2\\(void\\);\"\}\\\]\}\\\]\}"
+set modmany_re \
+    "\{module=\"modmany\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"35\",name=\"modmany::check_some\",type=\"void \\(void\\)\",description=\"void modmany::check_some\\(void\\);\"\}\\\]\}\\\]\}"
+set moduse_re \
+    "\{module=\"moduse\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"44\",name=\"moduse::check_all\",type=\"void \\(void\\)\",description=\"void moduse::check_all\\(void\\);\"\},\{line=\"49\",name=\"moduse::check_var_x\",type=\"void \\(void\\)\",description=\"void moduse::check_var_x\\(void\\);\"\}\\\]\}\\\]\}"
+set state 0
+gdb_test_multiple $cmd $test -prompt $mi_gdb_prompt$ {
+    -re "104\\^done,symbols=\\\[" {
+	if { $state == 0 } { set state 1 }
+	exp_continue
+    }
+    -re "$mod1_re" {
+	if { $state == 1 } { incr state }
+	exp_continue
+    }
+    -re "$mod2_re" {
+	if { $state == 2 } { incr state }
+	exp_continue
+    }
+    -re "$mod3_re" {
+	if { $state == 3 } { incr state }
+	exp_continue
+    }
+    -re "$modmany_re" {
+	if { $state == 4 } { incr state }
+	exp_continue
+    }
+    -re "$moduse_re" {
+	if { $state == 5 } { incr state }
+	exp_continue
+    }
+    -re ${system_module_symbols_pattern} {
+	exp_continue
+    }
+    -re "\\\]\r\n$mi_gdb_prompt$" {
+	if { $state == 6 } {
+	    pass $gdb_test_name
+	} else {
+	    fail $gdb_test_name
+	}
+    }	
+}
 
 mi_gdb_test "105-symbol-info-module-functions --name _all" \
     "105\\^done,symbols=\\\[\{module=\"mod1\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"21\",name=\"mod1::check_all\",type=\"void \\(void\\)\",description=\"void mod1::check_all\\(void\\);\"\}\\\]\}\\\]\},\{module=\"mod3\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"21\",name=\"mod3::check_all\",type=\"void \\(void\\)\",description=\"void mod3::check_all\\(void\\);\"\}\\\]\}\\\]\},\{module=\"moduse\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"44\",name=\"moduse::check_all\",type=\"void \\(void\\)\",description=\"void moduse::check_all\\(void\\);\"\}\\\]\}\\\]\}\\\]" \
@@ -69,14 +112,53 @@ mi_gdb_test "106-symbol-info-module-func
 
 set int4 [fortran_int4]
 
-mi_gdb_test "107-symbol-info-module-variables" \
-    [join \
-     [list \
-      "107\\^done,symbols=\\\[(${system_module_symbols_pattern})*\{module=\"mod1\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"18\",name=\"mod1::var_const\",type=\"$int4\",description=\"$int4 mod1::var_const;\"\},\{line=\"17\",name=\"mod1::var_i\",type=\"$int4\",description=\"$int4 mod1::var_i;\"\}\\\]\}\\\]\},\{module=\"mod2\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"28\",name=\"mod2::var_i\",type=\"$int4\",description=\"$int4 mod2::var_i;\"\}\\\]\}\\\]\}," \
-	  "\{module=\"mod3\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"18\",name=\"mod3::mod1\",type=\"$int4\",description=\"$int4 mod3::mod1;\"\},\{line=\"17\",name=\"mod3::mod2\",type=\"$int4\",description=\"$int4 mod3::mod2;\"\},\{line=\"19\",name=\"mod3::var_i\",type=\"$int4\",description=\"$int4 mod3::var_i;\"\}\\\]\}\\\]\},\{module=\"modmany\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"33\",name=\"modmany::var_a\",type=\"$int4\",description=\"$int4 modmany::var_a;\"\}," \
-	  "\{line=\"33\",name=\"modmany::var_b\",type=\"$int4\",description=\"$int4 modmany::var_b;\"\},\{line=\"33\",name=\"modmany::var_c\",type=\"$int4\",description=\"$int4 modmany::var_c;\"\},\{line=\"33\",name=\"modmany::var_i\",type=\"$int4\",description=\"$int4 modmany::var_i;\"\}\\\]\}\\\]\},\{module=\"moduse\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"42\",name=\"moduse::var_x\",type=\"$int4\",description=\"$int4 moduse::var_x;\"\},\{line=\"42\",name=\"moduse::var_y\",type=\"$int4\",description=\"$int4 moduse::var_y;\"\}\\\]\}\\\]\}\\\]" ] "" ] \
-    "-symbol-info-module-variables"
-
-
-
-
+set mod1_re \
+    "\{module=\"mod1\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"18\",name=\"mod1::var_const\",type=\"$int4\",description=\"$int4 mod1::var_const;\"\},\{line=\"17\",name=\"mod1::var_i\",type=\"$int4\",description=\"$int4 mod1::var_i;\"\}\\\]\}\\\]\}"
+set mod2_re \
+    "\{module=\"mod2\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"28\",name=\"mod2::var_i\",type=\"$int4\",description=\"$int4 mod2::var_i;\"\}\\\]\}\\\]\}"
+set mod3_re \
+    "\{module=\"mod3\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"18\",name=\"mod3::mod1\",type=\"$int4\",description=\"$int4 mod3::mod1;\"\},\{line=\"17\",name=\"mod3::mod2\",type=\"$int4\",description=\"$int4 mod3::mod2;\"\},\{line=\"19\",name=\"mod3::var_i\",type=\"$int4\",description=\"$int4 mod3::var_i;\"\}\\\]\}\\\]\}"
+set modmany_re \
+    "\{module=\"modmany\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"33\",name=\"modmany::var_a\",type=\"$int4\",description=\"$int4 modmany::var_a;\"\},\{line=\"33\",name=\"modmany::var_b\",type=\"$int4\",description=\"$int4 modmany::var_b;\"\},\{line=\"33\",name=\"modmany::var_c\",type=\"$int4\",description=\"$int4 modmany::var_c;\"\},\{line=\"33\",name=\"modmany::var_i\",type=\"$int4\",description=\"$int4 modmany::var_i;\"\}\\\]\}\\\]\}"
+set moduse_re \
+    ",\{module=\"moduse\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"42\",name=\"moduse::var_x\",type=\"$int4\",description=\"$int4 moduse::var_x;\"\},\{line=\"42\",name=\"moduse::var_y\",type=\"$int4\",description=\"$int4 moduse::var_y;\"\}\\\]\}\\\]\}"
+
+set cmd "107-symbol-info-module-variables"
+set test "-symbol-info-module-variables"
+set state 0
+gdb_test_multiple $cmd $test -prompt $mi_gdb_prompt$ {
+    -re "107\\^done,symbols=\\\[" {
+	if { $state == 0 } { set state 1 }
+	exp_continue
+    }
+    -re "$mod1_re" {
+	if { $state == 1 } { incr state }
+	exp_continue
+    }
+    -re "$mod2_re" {
+	if { $state == 2 } { incr state }
+	exp_continue
+    }
+    -re "$mod3_re" {
+	if { $state == 3 } { incr state }
+	exp_continue
+    }
+    -re "$modmany_re" {
+	if { $state == 4 } { incr state }
+	exp_continue
+    }
+    -re "$moduse_re" {
+	if { $state == 5 } { incr state }
+	exp_continue
+    }
+    -re ${system_module_symbols_pattern} {
+	exp_continue
+    }
+    -re "\\\]\r\n$mi_gdb_prompt$" {
+	if { $state == 6 } {
+	    pass $gdb_test_name
+	} else {
+	    fail $gdb_test_name
+	}
+    }	
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-fortran-modules.f90 ./gdb/testsuite/gdb.mi/mi-fortran-modules.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-fortran-modules.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-fortran-modules.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2009-2020 Free Software Foundation, Inc.
+! Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-frame-regs.exp ./gdb/testsuite/gdb.mi/mi-frame-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-frame-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-frame-regs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-fullname-deleted.exp ./gdb/testsuite/gdb.mi/mi-fullname-deleted.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-fullname-deleted.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-fullname-deleted.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-hack-cli.exp ./gdb/testsuite/gdb.mi/mi-hack-cli.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-hack-cli.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-hack-cli.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-i-cmd.exp ./gdb/testsuite/gdb.mi/mi-i-cmd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-i-cmd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-i-cmd.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-info-os.exp ./gdb/testsuite/gdb.mi/mi-info-os.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-info-os.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-info-os.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-inheritance-syntax-error.exp ./gdb/testsuite/gdb.mi/mi-inheritance-syntax-error.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-inheritance-syntax-error.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-inheritance-syntax-error.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-language.exp ./gdb/testsuite/gdb.mi/mi-language.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-language.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-language.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-linespec-err-cp.cc ./gdb/testsuite/gdb.mi/mi-linespec-err-cp.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-linespec-err-cp.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-linespec-err-cp.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-linespec-err-cp.exp ./gdb/testsuite/gdb.mi/mi-linespec-err-cp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-linespec-err-cp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-linespec-err-cp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-logging.exp ./gdb/testsuite/gdb.mi/mi-logging.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-logging.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-logging.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-memory-changed.exp ./gdb/testsuite/gdb.mi/mi-memory-changed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-memory-changed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-memory-changed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-nonstop-exit.exp ./gdb/testsuite/gdb.mi/mi-nonstop-exit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-nonstop-exit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-nonstop-exit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-nonstop.exp ./gdb/testsuite/gdb.mi/mi-nonstop.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-nonstop.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-nonstop.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-nsintrall.exp ./gdb/testsuite/gdb.mi/mi-nsintrall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-nsintrall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-nsintrall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-nsmoribund.exp ./gdb/testsuite/gdb.mi/mi-nsmoribund.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-nsmoribund.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-nsmoribund.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-ns-stale-regcache.exp ./gdb/testsuite/gdb.mi/mi-ns-stale-regcache.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-ns-stale-regcache.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-ns-stale-regcache.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-nsthrexec.exp ./gdb/testsuite/gdb.mi/mi-nsthrexec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-nsthrexec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-nsthrexec.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-pending.c ./gdb/testsuite/gdb.mi/mi-pending.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-pending.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-pending.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-pending.exp ./gdb/testsuite/gdb.mi/mi-pending.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-pending.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-pending.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-pendshr2.c ./gdb/testsuite/gdb.mi/mi-pendshr2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-pendshr2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-pendshr2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-pendshr.c ./gdb/testsuite/gdb.mi/mi-pendshr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-pendshr.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-pendshr.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-pthreads.exp ./gdb/testsuite/gdb.mi/mi-pthreads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-pthreads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-pthreads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-read-memory.exp ./gdb/testsuite/gdb.mi/mi-read-memory.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-read-memory.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-read-memory.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-record-changed.exp ./gdb/testsuite/gdb.mi/mi-record-changed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-record-changed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-record-changed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-regs.exp ./gdb/testsuite/gdb.mi/mi-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-regs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-reg-undefined.c ./gdb/testsuite/gdb.mi/mi-reg-undefined.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-reg-undefined.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-reg-undefined.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-reg-undefined.exp ./gdb/testsuite/gdb.mi/mi-reg-undefined.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-reg-undefined.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-reg-undefined.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-reg-undefined.S ./gdb/testsuite/gdb.mi/mi-reg-undefined.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-reg-undefined.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-reg-undefined.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-return.exp ./gdb/testsuite/gdb.mi/mi-return.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-return.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-return.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-reverse.exp ./gdb/testsuite/gdb.mi/mi-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-simplerun.exp ./gdb/testsuite/gdb.mi/mi-simplerun.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-simplerun.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-simplerun.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-solib.exp ./gdb/testsuite/gdb.mi/mi-solib.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-solib.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-solib.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-stack.c ./gdb/testsuite/gdb.mi/mi-stack.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-stack.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-stack.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 1999-2020 Free Software Foundation, Inc.
+/* Copyright 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-stack.exp ./gdb/testsuite/gdb.mi/mi-stack.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-stack.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-stack.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2000-2020 Free Software Foundation, Inc.
+# Copyright 2000-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-start.c ./gdb/testsuite/gdb.mi/mi-start.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-start.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-start.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-start.exp ./gdb/testsuite/gdb.mi/mi-start.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-start.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-start.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-stepi.exp ./gdb/testsuite/gdb.mi/mi-stepi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-stepi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-stepi.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-stepn.c ./gdb/testsuite/gdb.mi/mi-stepn.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-stepn.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-stepn.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-stepn.exp ./gdb/testsuite/gdb.mi/mi-stepn.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-stepn.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-stepn.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-sym-info-1.c ./gdb/testsuite/gdb.mi/mi-sym-info-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-sym-info-1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-sym-info-1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-sym-info-2.c ./gdb/testsuite/gdb.mi/mi-sym-info-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-sym-info-2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-sym-info-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -41,3 +41,8 @@ f3 (another_int_t arg)
   return arg + 2;
 }
 
+typedef char another_char_t;
+typedef short another_short_t;
+
+static another_char_t var1;
+static another_short_t var2;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-sym-info.exp ./gdb/testsuite/gdb.mi/mi-sym-info.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-sym-info.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-sym-info.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,6 +15,13 @@
 
 # Test -symbol-info-functions, -symbol-info-variables, and
 # -symbol-info-types.
+#
+# These tests can generate large amounts of output, which can cause gdb to be
+# slow in two different ways:
+# - it takes long before the command starts producing output
+# - it takes long to print all the output
+# We can prevent timeouts due to the latter using exp_continue, but for
+# the former that doesn't work.  There we use with_timeout_factor instead.
 
 load_lib mi-support.exp
 set MIFLAGS "-i=mi"
@@ -51,81 +58,195 @@ set type_syms \
 
 # 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"
+set testname "List all functions from debug information only"
+set cmd "111-symbol-info-functions"
+set state 0
+gdb_test_multiple $cmd $testname -prompt "${mi_gdb_prompt}$" {
+    -re "111\\^done,symbols=\{debug=\\\[${symtab_re}" {
+	if { $state == 0 } { incr state }
+	exp_continue
+    }
+    -re ",${symtab_re}" {
+	exp_continue
+    }
+    -re "\\\]\}\r\n${mi_gdb_prompt}$" {
+	if { $state == 1 } {
+	    pass $gdb_test_name
+	} else {
+	    fail $gdb_test_name
+	}
+    }
+}
+
+set testname "List all variables from debug information only"
+set cmd "112-symbol-info-variables"
+set state 0
+gdb_test_multiple $cmd $testname -prompt "${mi_gdb_prompt}$" {
+    -re "112\\^done,symbols=\{debug=\\\[${symtab_re}" {
+	if { $state == 0 } { incr state }
+	exp_continue
+    }
+    -re ",${symtab_re}" {
+	exp_continue
+    }
+    -re "\\\]\}\r\n${mi_gdb_prompt}$" {
+	if { $state == 1 } {
+	    pass $gdb_test_name
+	} else {
+	    fail $gdb_test_name
+	}
+    }
+}
+
+set testname "List all types"
+set cmd "113-symbol-info-types"
+set state 0
+gdb_test_multiple $cmd $testname -prompt "${mi_gdb_prompt}$" {
+    -re "113\\^done,symbols=\{debug=\\\[${symtab_type_re}" {
+	if { $state == 0 } { incr state }
+	exp_continue
+    }
+    -re ",${symtab_type_re}" {
+	exp_continue
+    }
+    -re "\\\]\}\r\n${mi_gdb_prompt}$" {
+	if { $state == 1 } {
+	    pass $gdb_test_name
+	} else {
+	    fail $gdb_test_name
+	}
+    }
+}
 
 # 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=\\\[" {
+set cmd "114-symbol-info-functions --include-nondebug"
+set state 0
+gdb_test_multiple $cmd ${testname} -prompt "${mi_gdb_prompt}$" {
+    -re "114\\^done,symbols=\{" {
+	if { $state == 0 } { set state 1 }
 	exp_continue
     }
-
-    -re "\{address=${qstr},name=${qstr}\}," {
+    -re "debug=\\\[${symtab_re}" {
+	if { $state == 1 } { set state 2 }
 	exp_continue
     }
-
-    -re "\{address=${qstr},name=${qstr}\}\\\]\}\r\n${mi_gdb_prompt}$" {
-	pass ${testname}
+    -re ",${symtab_re}" {
+	exp_continue
     }
-}
-
-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"
+    -re "\\\],nondebug=\\\[" {
+	if { $state == 2 } { set state 3 }
 	exp_continue
     }
-
     -re "\{address=${qstr},name=${qstr}\}," {
 	exp_continue
     }
-
     -re "\{address=${qstr},name=${qstr}\}\\\]\}\r\n${mi_gdb_prompt}$" {
-	pass ${testname}
+	if { $state == 3 } {
+	    pass $gdb_test_name
+	} else {
+	    fail $gdb_test_name
+	}
+    }
+}
+
+with_timeout_factor 2 {
+    set testname "List all variables"
+    set cmd "115-symbol-info-variables --include-nondebug"
+    set state 0
+    gdb_test_multiple $cmd ${testname} -prompt "${mi_gdb_prompt}$" {
+	-re "115\\^done,symbols=\{" {
+	    if { $state == 0 } { set state 1 }
+	    exp_continue
+	}
+	-re "debug=\\\[${symtab_re}" {
+	    if { $state == 1 } { set state 2 }
+	    exp_continue
+	}
+	-re ",${symtab_re}" {
+	    exp_continue
+	}
+	-re "\\\],nondebug=\\\[" {
+	    if { $state == 2 } { set state 3 }
+	    exp_continue
+	}
+	-re "\{address=${qstr},name=${qstr}\}," {
+	    exp_continue
+	}
+	-re "\{address=${qstr},name=${qstr}\}\\\]\}\r\n${mi_gdb_prompt}$" {
+	    if { $state == 3 } {
+		pass $gdb_test_name
+	    } else {
+		fail $gdb_test_name
+	    }
+	}
+    }
+}
+
+with_timeout_factor 2 {
+    set testname "List all variables"
+    set cmd "115-symbol-info-variables --include-nondebug"
+    set state 0
+    gdb_test_multiple $cmd ${testname} -prompt "${mi_gdb_prompt}$" {
+	-re "115\\^done,symbols=\{" {
+	    if { $state == 0 } { incr state }
+	    exp_continue
+	}
+	-re "debug=\\\[${symtab_re}" {
+	    if { $state == 1 } { incr state }
+	    exp_continue
+	}
+	-re ",${symtab_re}" {
+	    exp_continue
+	}
+	-re "\\\],nondebug=\\\[" {
+	    if { $state == 2 } { incr state }
+	    exp_continue
+	}
+	-re "\{address=${qstr},name=${qstr}\}," {
+	    exp_continue
+	}
+	-re "\{address=${qstr},name=${qstr}\}\\\]\}\r\n${mi_gdb_prompt}$" {
+	    if { $state == 3 } {
+		pass $gdb_test_name
+	    } else {
+		fail $gdb_test_name
+	    }
+	}
     }
 }
 
 # 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\\);\"\}\\\]\}\\\]\}" \
+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 \\*\\);\"\}\\\]\}\\\]\}" \
+mi_gdb_test "117-symbol-info-functions --type void --name ^f4$" \
+    "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;\"\}\\\]\}\\\]\}" \
+    "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;\"\}\\\]\}\\\]\}" \
+mi_gdb_test "119-symbol-info-variables --type float --name ^global_" \
+    "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\"\}\\\]\}\\\]\}" \
+    "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_"
 
 # Test the --max-results parameter.
@@ -133,18 +254,21 @@ mi_gdb_test "121-symbol-info-functions -
     "121\\^done,symbols=\{\}" \
     "-symbol-info-functions --max-results 0"
 
-mi_gdb_test "122-symbol-info-functions --max-results 1" \
-    "122\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"39\",name=\"f3\",type=\"int \\(another_int_t\\)\",description=\"int f3\\(another_int_t\\);\"\}\\\]\}\\\]\}" \
+mi_gdb_test "122-symbol-info-functions --max-results 1 --name ^\[^_\]" \
+    "122\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]*$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"39\",name=\"f3\",type=\"int \\(another_int_t\\)\",description=\"int f3\\(another_int_t\\);\"\}\\\]\}\\\]\}" \
     "-symbol-info-functions --max-results 1"
 
-mi_gdb_test "123-symbol-info-functions --max-results 2" \
-    "123\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",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\\);\"\}\\\]\}\\\]\}" \
+mi_gdb_test "123-symbol-info-functions --max-results 2 --name ^\[^_\]" \
+    "123\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]*$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",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\\);\"\}\\\]\}\\\]\}" \
     "-symbol-info-functions --max-results 2"
 
-mi_gdb_test "124-symbol-info-variables --max-results 3" \
-    "124\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",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;\"\}\\\]\}\\\]\}" \
-    "-symbol-info-variables --max-results 3"
+mi_gdb_test "124-symbol-info-variables --max-results 3 --name ^\[^_\]" \
+    "124\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]*$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",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;\"\}\\\]\}\\\]\}" \
 
-mi_gdb_test "125-symbol-info-types --max-results 4" \
-    "125\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"24\",name=\"another_float_t\"\},\{line=\"23\",name=\"another_int_t\"\},\{name=\"float\"\},\{name=\"int\"\}\\\]\}\\\]\}" \
+set s1 "\{line=\"44\",name=\"another_char_t\"\}"
+set s2 "\{line=\"24\",name=\"another_float_t\"\}"
+set s3 "\{line=\"23\",name=\"another_int_t\"\}"
+set s4 "\{line=\"45\",name=\"another_short_t\"\}"
+mi_gdb_test "125-symbol-info-types --max-results 4 --name another_" \
+    "125\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]*$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[$s1,$s2,$s3,$s4\\\]\}\\\]\}" \
     "-symbol-info-types --max-results 4"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-syn-frame.c ./gdb/testsuite/gdb.mi/mi-syn-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-syn-frame.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-syn-frame.c	2021-05-21 01:57:25.000000000 +0000
@@ -27,7 +27,7 @@ foo (void)
 void 
 bar (void)
 {
-  *(char *)0 = 0;    /* try to cause a segfault */
+  *(volatile char *)0 = 0;    /* try to cause a segfault */
 
   /* On MMU-less system, previous memory access to address zero doesn't
      trigger a SIGSEGV.  Trigger a SIGILL.  Each arch should define its
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-syn-frame.exp ./gdb/testsuite/gdb.mi/mi-syn-frame.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-syn-frame.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-syn-frame.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-threads-interrupt.c ./gdb/testsuite/gdb.mi/mi-threads-interrupt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-threads-interrupt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-threads-interrupt.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-threads-interrupt.exp ./gdb/testsuite/gdb.mi/mi-threads-interrupt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-threads-interrupt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-threads-interrupt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-undefined-cmd.exp ./gdb/testsuite/gdb.mi/mi-undefined-cmd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-undefined-cmd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-undefined-cmd.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-until.exp ./gdb/testsuite/gdb.mi/mi-until.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-until.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-until.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-block.exp ./gdb/testsuite/gdb.mi/mi-var-block.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-block.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-block.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-child.c ./gdb/testsuite/gdb.mi/mi-var-child.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-child.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-child.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 1999-2020 Free Software Foundation, Inc.
+/* Copyright 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-child.exp ./gdb/testsuite/gdb.mi/mi-var-child.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-child.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-child.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-child-f.exp ./gdb/testsuite/gdb.mi/mi-var-child-f.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-child-f.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-child-f.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
@@ -36,7 +36,7 @@ if {[gdb_compile "${srcdir}/${subdir}/${
 mi_gdb_reinitialize_dir $srcdir/$subdir
 mi_gdb_load ${binfile}
 
-mi_runto MAIN__
+mi_runto [fortran_main]
 
 mi_create_varobj "array" "array" "create local variable array"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-cmd.exp ./gdb/testsuite/gdb.mi/mi-var-cmd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-cmd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-cmd.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
@@ -70,7 +70,9 @@ mi_gdb_test "113-var-create argc * argc"
 	"113\\^error,msg=\"-var-create: unable to create variable object\"" \
 	"create out of scope variable"
 
-mi_runto do_locals_tests
+with_test_prefix "first run" {
+  mi_runto do_locals_tests
+}
 
 set line_dlt_first_real [gdb_get_line_number "linteger = 1234;"]
 
@@ -253,7 +255,7 @@ mi_gdb_test "-var-assign global_simple 0
 
 mi_gdb_test "-var-assign linteger 3333" \
 	"\\^done,value=\"3333\"" \
-	"assign to linteger"
+	"assign to linteger, 1st"
 
 # Allow lpcharacter to update, optionally.  Because it points to a
 # char variable instead of a zero-terminated string, if linteger is
@@ -278,7 +280,7 @@ mi_gdb_test "-var-evaluate-expression li
 
 mi_gdb_test "-var-assign lpinteger \"&linteger + 3\"" \
 	"\\^done,value=\"$hex\"" \
-	"assign to lpinteger"
+	"assign to lpinteger, 1st"
 
 mi_gdb_test "-var-update *" \
 	"\\^done,changelist=\\\[\{name=\"lpinteger\",in_scope=\"true\",type_changed=\"false\",has_more=\"0\"\}\\\]" \
@@ -296,11 +298,11 @@ mi_gdb_test "-var-evaluate-expression lp
 
 mi_gdb_test "-var-assign linteger 4321" \
 	"\\^done,value=\"4321\"" \
-	"assign to linteger"
+	"assign to linteger, 2nd"
 
 mi_gdb_test "-var-assign lpinteger &linteger" \
 	"\\^done,value=\"$hex\"" \
-	"assign to lpinteger"
+	"assign to lpinteger, 2nd"
 
 mi_gdb_test "-var-assign lcharacter 'z'" \
 	"\\^done,value=\"122 'z'\"" \
@@ -312,33 +314,33 @@ mi_gdb_test "-var-evaluate-expression lc
 
 mi_gdb_test "-var-assign llong 1313L" \
 	"\\^done,value=\"1313\"" \
-	"assign to llong"
+	"assign to llong, 1st"
 mi_gdb_test "-var-evaluate-expression llong" \
 	"\\^done,value=\"1313\"" \
 	"eval llong"
 mi_gdb_test "-var-assign llong 1212L" \
 	"\\^done,value=\"1212\"" \
-	"assign to llong"
+	"assign to llong, 2nd"
 
 mi_gdb_test "-var-assign lplong &llong+4" \
 	"\\^done,value=\"$hex\"" \
-	"assign to lplong"
+	"assign to lplong, 1st"
 mi_gdb_test "-var-evaluate-expression lplong" \
 	"\\^done,value=\"$hex\"" \
 	"eval lplong"
 mi_gdb_test "-var-assign lplong &llong" \
 	"\\^done,value=\"$hex\"" \
-	"assign to lplong"
+	"assign to lplong, 2nd"
 
 mi_gdb_test "-var-assign lfloat 3.4567" \
 	"\\^done,value=\"3.45.*\"" \
-	"assign to lfloat"
+	"assign to lfloat, 1st"
 mi_gdb_test "-var-evaluate-expression lfloat" \
 	"\\^done,value=\"3.45.*\"" \
 	"eval lfloat"
 mi_gdb_test "-var-assign lfloat 1.2345" \
 	"\\^done,value=\"1.23.*\"" \
-	"assign to lfloat"
+	"assign to lfloat, 2nd"
 
 mi_gdb_test "-var-assign lpfloat &lfloat+4" \
 	"\\^done,value=\"$hex\"" \
@@ -648,7 +650,9 @@ mi_gdb_test "-var-delete endvar" \
 
 mi_delete_breakpoints
 
-mi_runto do_locals_tests
+with_test_prefix "second run" {
+  mi_runto do_locals_tests
+}
 
 mi_create_varobj "L" "lsimple" "in-and-out-of-scope: create varobj"
 mi_check_varobj_value "L" "{...}" "in-and-out-of-scope: check initial value"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-cp.cc ./gdb/testsuite/gdb.mi/mi-var-cp.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-cp.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-cp.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2006-2020 Free Software Foundation, Inc.
+/* Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-cp.exp ./gdb/testsuite/gdb.mi/mi-var-cp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-cp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-cp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006-2020 Free Software Foundation, Inc.
+# Copyright 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-create-rtti.c ./gdb/testsuite/gdb.mi/mi-var-create-rtti.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-create-rtti.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-create-rtti.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-create-rtti.exp ./gdb/testsuite/gdb.mi/mi-var-create-rtti.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-create-rtti.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-create-rtti.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-display.exp ./gdb/testsuite/gdb.mi/mi-var-display.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-display.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-display.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-invalidate.exp ./gdb/testsuite/gdb.mi/mi-var-invalidate.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-invalidate.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-invalidate.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.c ./gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.exp ./gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-rtti.cc ./gdb/testsuite/gdb.mi/mi-var-rtti.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-rtti.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-rtti.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2012-2020 Free Software Foundation, Inc.
+/* Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-rtti.exp ./gdb/testsuite/gdb.mi/mi-var-rtti.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-var-rtti.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-var-rtti.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-vla-c99.exp ./gdb/testsuite/gdb.mi/mi-vla-c99.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-vla-c99.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-vla-c99.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 Free Software Foundation, Inc.
 
 # Contributed by Intel Corp. <keven.boell@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-vla-fortran.exp ./gdb/testsuite/gdb.mi/mi-vla-fortran.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-vla-fortran.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-vla-fortran.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-watch.exp ./gdb/testsuite/gdb.mi/mi-watch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-watch.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-watch.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-watch-nonstop.exp ./gdb/testsuite/gdb.mi/mi-watch-nonstop.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/mi-watch-nonstop.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/mi-watch-nonstop.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2011-2020 Free Software Foundation, Inc.
+#   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/new-ui-mi-sync.c ./gdb/testsuite/gdb.mi/new-ui-mi-sync.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/new-ui-mi-sync.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/new-ui-mi-sync.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/new-ui-mi-sync.exp ./gdb/testsuite/gdb.mi/new-ui-mi-sync.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/new-ui-mi-sync.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/new-ui-mi-sync.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -83,7 +83,7 @@ proc do_test {sync_command} {
     # in the separate MI UI.  Note the "run" variant usually triggers
     # =thread-group-started/=thread-created/=library-loaded as well.
     with_spawn_id $gdb_main_spawn_id {
-	gdb_test "add-inferior" "Added inferior 2"
+	gdb_test "add-inferior" "Added inferior 2 on connection .*"
     }
 
     # Interrupt the program.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/non-stop.c ./gdb/testsuite/gdb.mi/non-stop.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/non-stop.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/non-stop.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Test program for non-stop debugging.
-   Copyright 1996-2020 Free Software Foundation, Inc.
+   Copyright 1996-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/non-stop-exit.c ./gdb/testsuite/gdb.mi/non-stop-exit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/non-stop-exit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/non-stop-exit.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Test program exit in non-stop mode.
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/nsintrall.c ./gdb/testsuite/gdb.mi/nsintrall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/nsintrall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/nsintrall.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/nsmoribund.c ./gdb/testsuite/gdb.mi/nsmoribund.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/nsmoribund.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/nsmoribund.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/ns-stale-regcache.c ./gdb/testsuite/gdb.mi/ns-stale-regcache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/ns-stale-regcache.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/ns-stale-regcache.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/nsthrexec.c ./gdb/testsuite/gdb.mi/nsthrexec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/nsthrexec.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/nsthrexec.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pending.c ./gdb/testsuite/gdb.mi/pending.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pending.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/pending.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pendshr1.c ./gdb/testsuite/gdb.mi/pendshr1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pendshr1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/pendshr1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pendshr2.c ./gdb/testsuite/gdb.mi/pendshr2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pendshr2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/pendshr2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pr11022.c ./gdb/testsuite/gdb.mi/pr11022.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pr11022.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/pr11022.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pr11022.exp ./gdb/testsuite/gdb.mi/pr11022.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pr11022.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/pr11022.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pthreads.c ./gdb/testsuite/gdb.mi/pthreads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/pthreads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/pthreads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Pthreads test program.
-   Copyright 1996-2020 Free Software Foundation, Inc.
+   Copyright 1996-2021 Free Software Foundation, Inc.
 
    Written by Keith Seitz of Red Hat.
    Copied from gdb.threads/pthreads.c.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/solib-lib.c ./gdb/testsuite/gdb.mi/solib-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/solib-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/solib-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/solib-main.c ./gdb/testsuite/gdb.mi/solib-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/solib-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/solib-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/user-selected-context-sync.c ./gdb/testsuite/gdb.mi/user-selected-context-sync.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/user-selected-context-sync.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/user-selected-context-sync.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/user-selected-context-sync.exp ./gdb/testsuite/gdb.mi/user-selected-context-sync.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/user-selected-context-sync.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/user-selected-context-sync.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -415,7 +415,7 @@ proc_with_prefix test_setup { mode } {
 	# Add the second inferior now.  While this is not mandatory, it allows
 	# us to assume that per-inferior thread numbering will be used,
 	# simplifying test_continue_to_start a bit (Thread 1.2 and not Thread 2).
-	gdb_test "add-inferior" "Added inferior 2" "add inferior 2"
+	gdb_test "add-inferior" "Added inferior 2 on connection .*" "add inferior 2"
 
 	# Prepare the first inferior for the test.
 	test_continue_to_start $mode 1
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/var-cmd.c ./gdb/testsuite/gdb.mi/var-cmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/var-cmd.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/var-cmd.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 1999-2020 Free Software Foundation, Inc.
+/* Copyright 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -366,23 +366,25 @@ void do_frozen_tests ()
 
   int v2 = 4;
   /*: 
-    mi_create_varobj V1 v1 "create varobj for v1" 
-    mi_create_varobj V2 v2 "create varobj for v2"
-
-    mi_list_varobj_children "V1" {
-        {"V1.i" "i" "0" "int"}
-	{"V1.nested" "nested" "2" "struct {...}"}
-    } "list children of v1"
-
-    mi_list_varobj_children "V1.nested" {
-        {"V1.nested.j" "j" "0" "int"}
-        {"V1.nested.k" "k" "0" "int"}
-    } "list children of v1.nested"
-
-    mi_check_varobj_value V1.i 1 "check V1.i: 1"
-    mi_check_varobj_value V1.nested.j 2 "check V1.nested.j: 2"
-    mi_check_varobj_value V1.nested.k 3 "check V1.nested.k: 3"
-    mi_check_varobj_value V2 4 "check V2: 4"
+    with_test_prefix "create varobj V1 and V2" {
+	mi_create_varobj V1 v1 "create varobj for v1"
+	mi_create_varobj V2 v2 "create varobj for v2"
+
+	mi_list_varobj_children "V1" {
+	    {"V1.i" "i" "0" "int"}
+	    {"V1.nested" "nested" "2" "struct {...}"}
+	} "list children of v1"
+
+	mi_list_varobj_children "V1.nested" {
+	    {"V1.nested.j" "j" "0" "int"}
+	    {"V1.nested.k" "k" "0" "int"}
+	} "list children of v1.nested"
+
+	mi_check_varobj_value V1.i 1 "check V1.i: 1"
+	mi_check_varobj_value V1.nested.j 2 "check V1.nested.j: 2"
+	mi_check_varobj_value V1.nested.k 3 "check V1.nested.k: 3"
+	mi_check_varobj_value V2 4 "check V2: 4"
+    }
   :*/
   v2 = 5;
   /*: 
@@ -400,40 +402,50 @@ void do_frozen_tests ()
   v1.nested.j = 8;
   v1.nested.k = 9;
   /*:
-    set_frozen V1 1
-    mi_varobj_update * {} "update varobjs: nothing changed"
-    mi_check_varobj_value V1.i 1 "check V1.i: 1"
-    mi_check_varobj_value V1.nested.j 2 "check V1.nested.j: 2"
-    mi_check_varobj_value V1.nested.k 3 "check V1.nested.k: 3"    
+    with_test_prefix "frozen V1" {
+	set_frozen V1 1
+	mi_varobj_update * {} "update varobjs: nothing changed"
+	mi_check_varobj_value V1.i 1 "check V1.i: 1"
+	mi_check_varobj_value V1.nested.j 2 "check V1.nested.j: 2"
+	mi_check_varobj_value V1.nested.k 3 "check V1.nested.k: 3"
+    }
     # Check that explicit update for elements of structures
     # works.
-    # Update v1.j
-    mi_varobj_update V1.nested.j {V1.nested.j} "update V1.nested.j"
-    mi_check_varobj_value V1.i 1 "check V1.i: 1"
-    mi_check_varobj_value V1.nested.j 8 "check V1.nested.j: 8"
-    mi_check_varobj_value V1.nested.k 3 "check V1.nested.k: 3"    
-    # Update v1.nested, check that children is updated.
-    mi_varobj_update V1.nested {V1.nested.k} "update V1.nested"
-    mi_check_varobj_value V1.i 1 "check V1.i: 1"
-    mi_check_varobj_value V1.nested.j 8 "check V1.nested.j: 8"
-    mi_check_varobj_value V1.nested.k 9 "check V1.nested.k: 9"    
-    # Update v1.i
-    mi_varobj_update V1.i {V1.i} "update V1.i"
-    mi_check_varobj_value V1.i 7 "check V1.i: 7"
+    with_test_prefix "update v1.j" {
+	# Update v1.j
+	mi_varobj_update V1.nested.j {V1.nested.j} "update V1.nested.j"
+	mi_check_varobj_value V1.i 1 "check V1.i: 1"
+	mi_check_varobj_value V1.nested.j 8 "check V1.nested.j: 8"
+	mi_check_varobj_value V1.nested.k 3 "check V1.nested.k: 3"
+    }
+    with_test_prefix "update v1.nested" {
+	# Update v1.nested, check that children is updated.
+	mi_varobj_update V1.nested {V1.nested.k} "update V1.nested"
+	mi_check_varobj_value V1.i 1 "check V1.i: 1"
+	mi_check_varobj_value V1.nested.j 8 "check V1.nested.j: 8"
+	mi_check_varobj_value V1.nested.k 9 "check V1.nested.k: 9"
+    }
+    with_test_prefix "update v1.i" {
+	# Update v1.i
+	mi_varobj_update V1.i {V1.i} "update V1.i"
+	mi_check_varobj_value V1.i 7 "check V1.i: 7"
+    }
   :*/
   v1.i = 10;
   v1.nested.j = 11;
   v1.nested.k = 12;
   /*:
     # Check that unfreeze itself does not updates the values.
-    set_frozen V1 0
-    mi_check_varobj_value V1.i 7 "check V1.i: 7"
-    mi_check_varobj_value V1.nested.j 8 "check V1.nested.j: 8"
-    mi_check_varobj_value V1.nested.k 9 "check V1.nested.k: 9"    
-    mi_varobj_update V1 {V1.i V1.nested.j V1.nested.k} "update V1"
-    mi_check_varobj_value V1.i 10 "check V1.i: 10"
-    mi_check_varobj_value V1.nested.j 11 "check V1.nested.j: 11"
-    mi_check_varobj_value V1.nested.k 12 "check V1.nested.k: 12"    
+    with_test_prefix "unfrozen V1" {
+	set_frozen V1 0
+	mi_check_varobj_value V1.i 7 "check V1.i: 7"
+	mi_check_varobj_value V1.nested.j 8 "check V1.nested.j: 8"
+	mi_check_varobj_value V1.nested.k 9 "check V1.nested.k: 9"
+	mi_varobj_update V1 {V1.i V1.nested.j V1.nested.k} "update V1"
+	mi_check_varobj_value V1.i 10 "check V1.i: 10"
+	mi_check_varobj_value V1.nested.j 11 "check V1.nested.j: 11"
+	mi_check_varobj_value V1.nested.k 12 "check V1.nested.k: 12"
+    }
   :*/    
   
   /*: END: frozen :*/
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/vla.c ./gdb/testsuite/gdb.mi/vla.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/vla.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/vla.c	2021-05-21 01:57:25.000000000 +0000
@@ -2,7 +2,7 @@
 
    Contributed by Intel Corp. <keven.boell@intel.com>
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/vla.f90 ./gdb/testsuite/gdb.mi/vla.f90
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/vla.f90	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/vla.f90	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-! Copyright 2015-2020 Free Software Foundation, Inc.
+! Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/watch-nonstop.c ./gdb/testsuite/gdb.mi/watch-nonstop.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.mi/watch-nonstop.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.mi/watch-nonstop.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/max-depth.c ./gdb/testsuite/gdb.modula2/max-depth.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/max-depth.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.modula2/max-depth.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2019-2020 Free Software Foundation, Inc.
+/* Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/max-depth.exp ./gdb/testsuite/gdb.modula2/max-depth.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/max-depth.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.modula2/max-depth.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/multidim.c ./gdb/testsuite/gdb.modula2/multidim.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/multidim.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.modula2/multidim.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,39 @@
+/* This test script is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+
+static int a[10][20];
+
+static void
+here (void)
+{
+}
+
+int
+main ()
+{
+  int i, j;
+  int count = 0;
+
+  for (i = 0; i < 10; i++)
+    for (j = 0; j < 20; j++)
+      {
+	a[i][j] = count;
+	count += 1;
+      }
+  here ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/multidim.exp ./gdb/testsuite/gdb.modula2/multidim.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/multidim.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.modula2/multidim.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,37 @@
+# Copyright 2020-2021 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 file is part of the gdb testsuite.  It contains tests for printing
+# the elements of an unbounded array using the Modula-2 language mode of
+# gdb.
+
+standard_testfile multidim.c
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+	 {debug quiet}]} {
+    return -1
+}
+
+if ![runto here] then {
+    perror "couldn't run to breakpoint 'here'"
+    continue
+}
+
+gdb_test "set lang modula-2" ".*does not match.*" "switch to modula-2"
+
+gdb_test "print a\[1,2\]" ".*= 22.*" "second row third column"
+gdb_test "print a\[2,1\]" ".*= 41.*" "fifth row second column"
+gdb_test "print a\[a\[0,1\],a\[0,2\]\]" ".*= 22.*" \
+    "second row third column again"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/unbounded1.c ./gdb/testsuite/gdb.modula2/unbounded1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/unbounded1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.modula2/unbounded1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test script is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/unbounded-array.exp ./gdb/testsuite/gdb.modula2/unbounded-array.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.modula2/unbounded-array.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.modula2/unbounded-array.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/base.exp ./gdb/testsuite/gdb.multi/base.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/base.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/base.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/bkpt-multi-exec.exp ./gdb/testsuite/gdb.multi/bkpt-multi-exec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/bkpt-multi-exec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/bkpt-multi-exec.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/dummy-frame-restore.c ./gdb/testsuite/gdb.multi/dummy-frame-restore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/dummy-frame-restore.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/dummy-frame-restore.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/dummy-frame-restore.exp ./gdb/testsuite/gdb.multi/dummy-frame-restore.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/dummy-frame-restore.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/dummy-frame-restore.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/goodbye.c ./gdb/testsuite/gdb.multi/goodbye.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/goodbye.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/goodbye.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
@@ -37,6 +37,7 @@ int verylongfun()
   glob *= 8;
   glob += 9;
   glob *= 9;
+  return 0;
 }
 
 void
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/hangout.c ./gdb/testsuite/gdb.multi/hangout.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/hangout.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/hangout.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/hello.c ./gdb/testsuite/gdb.multi/hello.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/hello.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/hello.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
@@ -29,7 +29,7 @@ bar()
     exit(1);
 }
 
-int commonfun() { bar(); } /* from hello */
+int commonfun() { bar(); return 0; } /* from hello */
 
 int
 hello(int x)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/info-threads.exp ./gdb/testsuite/gdb.multi/info-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/info-threads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/info-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-arch-exec.c ./gdb/testsuite/gdb.multi/multi-arch-exec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-arch-exec.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-arch-exec.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-arch-exec.exp ./gdb/testsuite/gdb.multi/multi-arch-exec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-arch-exec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-arch-exec.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-arch.exp ./gdb/testsuite/gdb.multi/multi-arch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-arch.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-arch.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-attach.c ./gdb/testsuite/gdb.multi/multi-attach.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-attach.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-attach.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-attach.exp ./gdb/testsuite/gdb.multi/multi-attach.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-attach.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-attach.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-exit.c ./gdb/testsuite/gdb.multi/multi-exit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-exit.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-exit.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main ()
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-exit.exp ./gdb/testsuite/gdb.multi/multi-exit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-exit.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-exit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,134 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2020-2021 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 receiving TARGET_WAITKIND_EXITED events from multiple
+# inferiors.  In all stop-mode, upon receiving the exit event from one
+# of the inferiors, GDB will try to stop the other inferior, too.  So,
+# a stop request will be sent.  Receiving a TARGET_WAITKIND_EXITED
+# status kind as a response to that stop request instead of a
+# TARGET_WAITKIND_STOPPED should be handled by GDB without problems.
+
+standard_testfile
+
+if {[use_gdb_stub]} {
+    return 0
+}
+
+if {[build_executable "failed to prepare" $testfile $srcfile]} {
+    return -1
+}
+
+# We are testing GDB's ability to stop all threads.
+# Hence, go with the all-stop-on-top-of-non-stop mode.
+save_vars { GDBFLAGS } {
+    append GDBFLAGS " -ex \"maint set target-non-stop on\""
+    clean_restart ${binfile}
+}
+
+# Start inferior NUM.
+
+proc start_inferior {num} {
+    with_test_prefix "start_inferior $num" {
+	global srcfile binfile
+
+	if {$num != 1} {
+	    gdb_test "add-inferior" "Added inferior $num.*" \
+		"add empty inferior"
+	    gdb_test "inferior $num" "Switching to inferior $num.*" \
+		"switch to inferior"
+	}
+
+	gdb_load $binfile
+
+	if {[gdb_start_cmd] < 0} {
+	    fail "could not start"
+	    return -1
+	}
+	gdb_test "" ".*reakpoint .*, main .*${srcfile}.*" "start"
+    }
+
+    return 0
+}
+
+# Sufficient inferiors to make sure that at least some other inferior
+# exits while we're handling a process exit event.
+set NUM_INFS 10
+
+for {set i 1} {$i <= $NUM_INFS} {incr i} {
+    if {[start_inferior $i] < 0} {
+	return -1
+    }
+}
+
+# We want to continue all processes.
+gdb_test_no_output "set schedule-multiple on"
+
+# Check that "continue" continues to the end of an inferior, as many
+# times as we have inferiors.
+
+for {set i 1} {$i <= $NUM_INFS} {incr i} {
+    with_test_prefix "inf $i" {
+	set live_inferior ""
+
+	# Pick any live inferior.
+	gdb_test_multiple "info inferiors" "" {
+	    -re "($decimal) *process.*$gdb_prompt $" {
+		set live_inferior $expect_out(1,string)
+	    }
+	}
+
+	if {$live_inferior == ""} {
+	    return -1
+	}
+
+	gdb_test "inferior $live_inferior" \
+	    ".*Switching to inferior $live_inferior.*" \
+	    "switch to another inferior"
+
+	set exited_inferior ""
+
+	# We want GDB to complete the command and return the prompt
+	# instead of going into an infinite loop.
+	gdb_test_multiple "continue" "continue" {
+	    -re "Inferior ($decimal) \[^\n\r\]+ exited normally.*$gdb_prompt $" {
+		set exited_inferior $expect_out(1,string)
+		pass $gdb_test_name
+	    }
+	}
+
+	if {$exited_inferior == ""} {
+	    return -1
+	}
+    }
+}
+
+# Finally, check that we can re-run all inferiors.  Note that if any
+# inferior was still alive this would catch it, as "run" would query
+# "Start it from the beginning?".
+
+delete_breakpoints
+
+for {set i 1} {$i <= $NUM_INFS} {incr i} {
+    with_test_prefix "inf $i" {
+	gdb_test "inferior $i" \
+	    ".*Switching to inferior $i.*" \
+	    "switch to inferior for re-run"
+
+	gdb_test "run" "$inferior_exited_re normally\]" \
+	    "re-run inferior"
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-kill.c ./gdb/testsuite/gdb.multi/multi-kill.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-kill.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-kill.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,42 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <sys/types.h>
+#include <unistd.h>
+
+static pid_t pid;
+
+static void
+initialized ()
+{
+}
+
+int
+main ()
+{
+  pid = getpid ();
+  initialized ();
+
+  /* Don't run forever in case GDB crashes and DejaGNU fails to kill
+     this program.  */
+  alarm (10);
+
+  while (1)
+    ;
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-kill.exp ./gdb/testsuite/gdb.multi/multi-kill.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-kill.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-kill.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,137 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2020-2021 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 receiving TARGET_WAITKIND_SIGNALLED events from multiple
+# inferiors.  In all stop-mode, upon receiving the exit event from one
+# of the inferiors, GDB will try to stop the other inferior, too.  So,
+# a stop request will be sent.  Receiving a TARGET_WAITKIND_SIGNALLED
+# status kind as a response to that stop request instead of a
+# TARGET_WAITKIND_STOPPED should be handled by GDB without problems.
+
+standard_testfile
+
+if {[use_gdb_stub]} {
+    return 0
+}
+
+if {[build_executable "failed to prepare" $testfile $srcfile {debug}]} {
+    return -1
+}
+
+# We are testing GDB's ability to stop all threads.
+# Hence, go with the all-stop-on-top-of-non-stop mode.
+save_vars { GDBFLAGS } {
+    append GDBFLAGS " -ex \"maint set target-non-stop on\""
+    clean_restart ${binfile}
+}
+
+# Wrap the entire test in a namespace to avoid contaminating other tests.
+namespace eval $testfile {
+
+# Start inferior NUM and record its PID in the TESTPID array.
+
+proc start_inferior {num} {
+    with_test_prefix "start_inferior $num" {
+	variable testpid
+	global binfile srcfile
+
+	if {$num != 1} {
+	    gdb_test "add-inferior" "Added inferior .*" \
+		"add empty inferior"
+	    gdb_test "inferior $num" "Switching to inferior .*" \
+		"switch to inferior"
+	}
+
+	gdb_load $binfile
+
+	gdb_breakpoint "initialized" {temporary}
+	gdb_run_cmd
+	gdb_test "" ".*reakpoint .*, initialized .*${srcfile}.*" "run"
+
+	set testpid($num) [get_integer_valueof "pid" -1]
+	if {$testpid($num) == -1} {
+	    return -1
+	}
+
+	return 0
+    }
+}
+
+# Sufficient inferiors to make sure that at least some other inferior
+# is killed while we're handling a killed event.
+set NUM_INFS 10
+
+# The array holding each inferior's PID, indexed by inferior number.
+variable testpid
+array set testpid {}
+
+for {set i 1} {$i <= $NUM_INFS} {incr i} {
+    if {[start_inferior $i] < 0} {
+	return -1
+    }
+}
+
+# We want to continue all processes.
+gdb_test_no_output "set schedule-multiple on"
+
+# Resume, but then kill all from outside.
+gdb_test_multiple "continue" "continue processes" {
+    -re "Continuing.\[\r\n\]+" {
+	# Kill all processes at once.
+
+	set kill_cmd "kill -9"
+	for {set i 1} {$i <= $NUM_INFS} {incr i} {
+	    append kill_cmd " $testpid($i)"
+	}
+
+	remote_exec target $kill_cmd
+	exp_continue
+    }
+    -re "Program terminated with signal.*$gdb_prompt $" {
+	pass $gdb_test_name
+    }
+}
+
+# Check that "continue" collects the process kill event, as many times
+# as we have inferiors left.
+
+for {set i 2} {$i <= $NUM_INFS} {incr i} {
+    with_test_prefix "inf $i" {
+	set live_inferior ""
+
+	# Pick any live inferior.
+	gdb_test_multiple "info inferiors" "" {
+	    -re "($decimal) *process.*$gdb_prompt $" {
+		set live_inferior $expect_out(1,string)
+	    }
+	}
+
+	if {$live_inferior == ""} {
+	    return -1
+	}
+
+	gdb_test "inferior $live_inferior" \
+	    ".*Switching to inferior $live_inferior.*" \
+	    "switch to inferior"
+
+	gdb_test "continue" \
+	    "Program terminated with signal SIGKILL, .*" \
+	    "continue to SIGKILL"
+    }
+}
+
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-re-run-1.c ./gdb/testsuite/gdb.multi/multi-re-run-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-re-run-1.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-re-run-1.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,61 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <limits.h>
+#include <string.h>
+#include <pthread.h>
+
+int re_run_var_1 = 1;
+
+#define NUM_THREADS 1
+
+__thread int tls_var = 1;
+
+static pthread_barrier_t barrier;
+
+static void *
+thread_start (void *arg)
+{
+  pthread_barrier_wait (&barrier);
+
+  while (1)
+    sleep (1);
+  return NULL;
+}
+
+static void
+all_started (void)
+{
+}
+
+int
+main (int argc, char ** argv)
+{
+  pthread_t thread;
+  int len;
+
+  pthread_barrier_init (&barrier, NULL, NUM_THREADS + 1);
+  pthread_create (&thread, NULL, thread_start, NULL);
+
+  pthread_barrier_wait (&barrier);
+  all_started ();
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-re-run-2.c ./gdb/testsuite/gdb.multi/multi-re-run-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-re-run-2.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-re-run-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,61 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <limits.h>
+#include <string.h>
+#include <pthread.h>
+
+int re_run_var_2 = 2;
+
+#define NUM_THREADS 1
+
+__thread int tls_var = 1;
+
+static pthread_barrier_t barrier;
+
+static void *
+thread_start (void *arg)
+{
+  pthread_barrier_wait (&barrier);
+
+  while (1)
+    sleep (1);
+  return NULL;
+}
+
+static void
+all_started (void)
+{
+}
+
+int
+main (int argc, char ** argv)
+{
+  pthread_t thread;
+  int len;
+
+  pthread_barrier_init (&barrier, NULL, NUM_THREADS + 1);
+  pthread_create (&thread, NULL, thread_start, NULL);
+
+  pthread_barrier_wait (&barrier);
+  all_started ();
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-re-run.exp ./gdb/testsuite/gdb.multi/multi-re-run.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-re-run.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-re-run.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,122 @@
+# Copyright 2020-2021 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 loading two inferiors into GDB, and running one of them twice
+# in a row.  GDB used to have a bug that made it so that after an
+# inferior exit, the current program space was left pointing to the
+# wrong inferior's pspace, causing subsequent symbol lookups to
+# misbehave, including failing to load libthread_db.so.  See PR
+# gdb/25410.
+
+# Build two executables, with different symbols.
+
+set exec1 "multi-re-run-1"
+set srcfile1 multi-re-run-1.c
+set binfile1 [standard_output_file ${exec1}]
+
+set exec2 "multi-re-run-2"
+set srcfile2 multi-re-run-2.c
+set binfile2 [standard_output_file ${exec2}]
+
+with_test_prefix "exec1" {
+    if { [prepare_for_testing "failed to prepare" ${exec1} "${srcfile1}" \
+	      [list pthreads debug]] } {
+	return -1
+    }
+}
+
+with_test_prefix "exec2" {
+    if { [prepare_for_testing "failed to prepare" ${exec2} "${srcfile2}" \
+	      [list pthreads debug]] } {
+	return -1
+    }
+}
+
+# Start two inferiors, leave one stopped, and run the other a couple
+# times.  RE_RUN_INF is the inferior that is re-run.
+
+proc test_re_run {re_run_inf} {
+    global binfile1 binfile2
+    global inferior_exited_re
+    global gdb_prompt
+    global last_loaded_file
+
+    clean_restart ${binfile1}
+
+    delete_breakpoints
+
+    # Start another inferior.
+    gdb_test "add-inferior" "Added inferior 2.*" \
+	"add empty inferior 2"
+    gdb_test "inferior 2" "Switching to inferior 2.*" \
+	"switch to inferior 2"
+    gdb_load ${binfile2}
+
+    if {$re_run_inf == 1} {
+	set steady_inf 2
+	set steady_binfile $binfile2
+	set re_run_binfile $binfile1
+    } else {
+	set steady_inf 1
+	set steady_binfile $binfile1
+	set re_run_binfile $binfile2
+    }
+
+    gdb_test "inferior $steady_inf" "Switching to inferior $steady_inf.*" \
+	"switch to steady inferior"
+    set last_loaded_file $steady_binfile
+
+    # Run the steady inferior to a breakpoint, and let it stay stopped
+    # there.
+    if ![runto all_started message] then {
+	untested "setup failed"
+	return 0
+    }
+
+    gdb_test "inferior $re_run_inf" "Switching to inferior $re_run_inf.*" \
+	"switch to re-run inferior"
+    set last_loaded_file $re_run_binfile
+
+    # Now run the RE_RUN_INF inferior a couple times.  GDB used to
+    # have a bug that caused the second run to fail to load
+    # libthread_db.so.
+    foreach_with_prefix iter {1 2} {
+	delete_breakpoints
+
+	if ![runto all_started message] {
+	    return 0
+	}
+
+	# If a thread_stratum target fails to load, then TLS debugging
+	# fails too.
+	gdb_test "print tls_var" " = 1"
+
+	gdb_continue_to_end "" continue 1
+
+	# In the original bug, after an inferior exit, GDB would leave
+	# the current program space pointing to the wrong inferior's
+	# pspace, and thus the wrong symbols were visible.
+	if {$re_run_inf == 1} {
+	    gdb_test "print re_run_var_1" " = 1"
+	} else {
+	    gdb_test "print re_run_var_2" " = 2"
+	}
+    }
+}
+
+# For completeness, test re-running either inferior 1 or inferior 2.
+foreach_with_prefix re_run_inf {1 2} {
+    test_re_run $re_run_inf
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target.c ./gdb/testsuite/gdb.multi/multi-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-target.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,102 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2017-2021 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/>.  */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <limits.h>
+#include <string.h>
+#include <pthread.h>
+
+#define NUM_THREADS 1
+
+static pthread_barrier_t barrier;
+
+volatile int exit_thread;
+
+static void *
+thread_start (void *arg)
+{
+  pthread_barrier_wait (&barrier);
+
+  while (!exit_thread)
+    sleep (1);
+  return NULL;
+}
+
+static void
+all_started (void)
+{
+}
+
+int wait_for_gdb;
+
+static void
+function1 (void)
+{
+  while (wait_for_gdb)
+    sleep (1);
+}
+
+static void
+function2 (void)
+{
+  while (wait_for_gdb)
+    sleep (1);
+}
+
+static void
+function3 (void)
+{
+}
+
+static void
+function4 (void)
+{
+}
+
+static void
+function5 (void)
+{
+}
+
+int
+main (int argc, char ** argv)
+{
+  pthread_t thread;
+  int len;
+
+  alarm (360);
+
+  pthread_barrier_init (&barrier, NULL, NUM_THREADS + 1);
+  pthread_create (&thread, NULL, thread_start, NULL);
+
+  pthread_barrier_wait (&barrier);
+  all_started ();
+
+  while (1)
+    {
+      function1 (); /* set break 1 here */
+      function2 (); /* set break 2 here */
+      function3 ();
+      function4 ();
+      function5 ();
+      sleep (1);
+    }
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-continue.exp ./gdb/testsuite/gdb.multi/multi-target-continue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-continue.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-target-continue.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,105 @@
+# Copyright 2017-2021 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 "continue" to breakpoints in different targets.  In non-stop
+# mode, also tests "interrupt -a".
+
+source $srcdir/$subdir/multi-target.exp.tcl
+
+if {![multi_target_prepare]} {
+    return
+}
+
+proc test_continue {non-stop} {
+    if {![setup ${non-stop}]} {
+	untested "setup failed"
+	return
+    }
+
+    proc set_break {inf} {
+	gdb_test "break function${inf} thread ${inf}.1" \
+	"Breakpoint .* function${inf}\\..*"
+    }
+
+    # Select inferior INF, and then run to a breakpoint on inferior
+    # INF+1.
+    proc test_continue_inf {inf} {
+	upvar 1 non-stop non-stop
+
+	global gdb_prompt
+	delete_breakpoints
+
+	set next_inf [next_live_inferior $inf]
+
+	gdb_test "inferior $inf" "Switching to inferior $inf.*"
+	set_break $next_inf
+
+	if {${non-stop} == "off"} {
+	    gdb_test "continue" "hit Breakpoint .* function${next_inf}.*"
+	} else {
+	    set msg "continue"
+	    gdb_test_multiple "continue -a&" $msg {
+		-re "Continuing.*$gdb_prompt " {
+		    pass $msg
+		}
+	    }
+
+	    set msg "hit bp"
+	    gdb_test_multiple "" $msg {
+		-re "hit Breakpoint .* function${next_inf}" {
+		    pass $msg
+		}
+	    }
+
+	    set msg "stop all threads"
+	    gdb_test_multiple "interrupt -a" $msg {
+		-re "$gdb_prompt " {
+		    for {set i 0} {$i < 7} {incr i} {
+			set ok 0
+			gdb_test_multiple "" $msg {
+			    -re "Thread\[^\r\n\]*stopped\\." {
+				set ok 1
+			    }
+			}
+			if {!$ok} {
+			    break
+			}
+		    }
+		    gdb_assert $ok $msg
+		}
+	    }
+	}
+    }
+
+    for {set i 1} {$i <= 5} {incr i} {
+	if {$i == 3} {
+	    # This is a core inferior.
+	    continue
+	}
+
+	with_test_prefix "inf$i" {
+	    test_continue_inf $i
+	}
+    }
+}
+
+# Some basic "continue" + breakpoints tests.
+with_test_prefix "continue" {
+    foreach_with_prefix non-stop {"off" "on"} {
+	test_continue ${non-stop}
+    }
+}
+
+multi_target_cleanup
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target.exp.tcl ./gdb/testsuite/gdb.multi/multi-target.exp.tcl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target.exp.tcl	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-target.exp.tcl	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,185 @@
+# Copyright 2017-2021 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/>.
+
+# Common routines for testing multi-target features.
+
+load_lib gdbserver-support.exp
+
+standard_testfile multi-target.c
+
+# Keep a list of (inferior ID, spawn ID).
+set server_spawn_ids [list]
+
+proc connect_target_extended_remote {binfile num} {
+    set res [gdbserver_start "--multi" ""]
+    global server_spawn_ids server_spawn_id
+    lappend server_spawn_ids $num $server_spawn_id
+    set gdbserver_gdbport [lindex $res 1]
+    return [gdb_target_cmd "extended-remote" $gdbserver_gdbport]
+}
+
+# Add and start inferior number NUM.  Returns true on success, false
+# otherwise.
+proc add_inferior {num target binfile {gcorefile ""}} {
+    # Start another inferior.
+    gdb_test "add-inferior -no-connection" "Added inferior $num" \
+	"add empty inferior $num"
+    gdb_test "inferior $num" "Switching to inferior $num.*" \
+	"switch to inferior $num"
+    gdb_test "file ${binfile}" ".*" "load file in inferior $num"
+    gdb_test_no_output "set remote exec-file ${binfile}" \
+	"set remote-exec file in inferior $num"
+
+    if {$target == "core"} {
+	gdb_test "core $gcorefile" "Core was generated by.*" \
+	    "core [file tail $gcorefile], inf $num"
+	return 1
+    }
+
+    if {$target == "extended-remote"} {
+	if {[connect_target_extended_remote $binfile $num]} {
+	    return 0
+	}
+    }
+    if ![runto "all_started"] then {
+	return 0
+    }
+    delete_breakpoints
+
+    return 1
+}
+
+proc prepare_core {} {
+    global gcorefile gcore_created
+    global binfile
+
+    clean_restart ${binfile}
+
+    if ![runto all_started] then {
+	return -1
+    }
+
+    global testfile
+    set gcorefile [standard_output_file $testfile.gcore]
+    set gcore_created [gdb_gcore_cmd $gcorefile "save a core file"]
+}
+
+proc next_live_inferior {inf} {
+    incr inf
+    if {$inf == 3} {
+	# 3 is a core.
+	return 4
+    }
+    if {$inf > 5} {
+	# 6 is a core.
+	return 1
+    }
+
+    return $inf
+}
+
+# Clean up the server_spawn_ids.
+proc cleanup_gdbservers { } {
+    global server_spawn_id
+    global server_spawn_ids
+    foreach { inferior_id spawn_id } $server_spawn_ids {
+	set server_spawn_id $spawn_id
+	gdb_test "inferior $inferior_id"
+	gdbserver_exit 0
+    }
+    set server_spawn_ids [list]
+}
+
+# Return true on success, false otherwise.
+
+proc setup {non-stop} {
+    global gcorefile gcore_created
+    global binfile
+
+    cleanup_gdbservers
+    clean_restart ${binfile}
+
+    # multi-target depends on target running in non-stop mode.  Force
+    # it on for remote targets, until this is the default.
+    gdb_test_no_output "maint set target-non-stop on"
+
+    gdb_test_no_output "set non-stop ${non-stop}"
+
+    if ![runto all_started] then {
+	return 0
+    }
+
+    delete_breakpoints
+
+    # inferior 1 -> native
+    # inferior 2 -> extended-remote
+    # inferior 3 -> core
+    # inferior 4 -> native
+    # inferior 5 -> extended-remote
+    # inferior 6 -> core
+    if {![add_inferior 2 "extended-remote" $binfile]} {
+	return 0
+    }
+    if {![add_inferior 3 "core" $binfile $gcorefile]} {
+	return 0
+    }
+    if {![add_inferior 4 "native" $binfile]} {
+	return 0
+    }
+    if {![add_inferior 5 "extended-remote" $binfile]} {
+	return 0
+    }
+    if {![add_inferior 6 "core" $binfile $gcorefile]} {
+	return 0
+    }
+
+    # For debugging.
+    gdb_test "info threads" ".*"
+
+    # Make "continue" resume all inferiors.
+    if {${non-stop} == "off"} {
+	gdb_test_no_output "set schedule-multiple on"
+    }
+
+    return 1
+}
+
+proc multi_target_prepare {} {
+    global binfile srcfile
+
+    if { [skip_gdbserver_tests] } {
+	return 0
+    }
+
+    # The plain remote target can't do multiple inferiors.
+    if {[target_info gdb_protocol] != ""} {
+	return 0
+    }
+
+    if { [prepare_for_testing "failed to prepare" ${binfile} "${srcfile}" \
+	      {debug pthreads}] } {
+	return 0
+    }
+
+    # Make a core file with two threads upfront.  Several tests load
+    # the same core file.
+    prepare_core
+
+    return 1
+}
+
+proc multi_target_cleanup {} {
+    cleanup_gdbservers
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-info-inferiors.exp ./gdb/testsuite/gdb.multi/multi-target-info-inferiors.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-info-inferiors.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-target-info-inferiors.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,110 @@
+# Copyright 2017-2021 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 "info inferiors" and "info connections" with multiple targets.
+
+source $srcdir/$subdir/multi-target.exp.tcl
+
+if {![multi_target_prepare]} {
+    return
+}
+
+# Test "info inferiors" and "info connections".  MULTI_PROCESS
+# indicates whether the multi-process feature of remote targets is
+# turned off or on.
+proc test_info_inferiors {multi_process} {
+    setup "off"
+
+    gdb_test_no_output \
+	"set remote multiprocess-feature-packet $multi_process"
+
+    # Get the description for inferior INF for when the current
+    # inferior id is CURRENT.
+    proc inf_desc {inf current} {
+	set ws "\[ \t\]+"
+	global decimal
+	upvar multi_process multi_process
+
+	if {($multi_process == "off") && ($inf == 2 || $inf == 5)} {
+	    set desc "Remote target"
+	} else {
+	    set desc "process ${decimal}"
+	}
+
+	set desc "${inf}${ws}${desc}${ws}"
+	if {$inf == $current} {
+	    return "\\* $desc"
+	} else {
+	    return "  $desc"
+	}
+    }
+
+    # Get the "Num" column for CONNECTION for when the current
+    # inferior id is CURRENT_INF.
+    proc connection_num {connection current_inf} {
+	switch $current_inf {
+	    "4" { set current_connection "1"}
+	    "5" { set current_connection "4"}
+	    "6" { set current_connection "5"}
+	    default { set current_connection $current_inf}
+	}
+	if {$connection == $current_connection} {
+	    return "\\* $connection"
+	} else {
+	    return "  $connection"
+	}
+    }
+
+    set ws "\[ \t\]+"
+    global decimal binfile
+
+    # Test "info connections" and "info inferior" by switching to each
+    # inferior one by one.
+    for {set inf 1} {$inf <= 6} {incr inf} {
+	with_test_prefix "inferior $inf" {
+	    gdb_test "inferior $inf" "Switching to inferior $inf.*"
+
+	    gdb_test "info connections" \
+		[multi_line \
+		     "Num${ws}What${ws}Description${ws}" \
+		     "[connection_num 1 $inf]${ws}native${ws}Native process${ws}" \
+		     "[connection_num 2 $inf]${ws}extended-remote localhost:$decimal${ws}Extended remote serial target in gdb-specific protocol${ws}" \
+		     "[connection_num 3 $inf]${ws}core${ws}Local core dump file${ws}" \
+		     "[connection_num 4 $inf]${ws}extended-remote localhost:$decimal${ws}Extended remote serial target in gdb-specific protocol${ws}" \
+		     "[connection_num 5 $inf]${ws}core${ws}Local core dump file${ws}" \
+		    ]
+
+	    gdb_test "info inferiors" \
+		[multi_line \
+		     "Num${ws}Description${ws}Connection${ws}Executable${ws}" \
+		     "[inf_desc 1 $inf]1 \\(native\\)${ws}${binfile}${ws}" \
+		     "[inf_desc 2 $inf]2 \\(extended-remote localhost:$decimal\\)${ws}${binfile}${ws}" \
+		     "[inf_desc 3 $inf]3 \\(core\\)${ws}${binfile}${ws}" \
+		     "[inf_desc 4 $inf]1 \\(native\\)${ws}${binfile}${ws}" \
+		     "[inf_desc 5 $inf]4 \\(extended-remote localhost:$decimal\\)${ws}${binfile}${ws}" \
+		     "[inf_desc 6 $inf]5 \\(core\\)${ws}${binfile}${ws}" \
+		    ]
+	}
+    }
+}
+
+# Test "info inferiors" and "info connections" commands.
+with_test_prefix "info-inferiors" {
+    foreach_with_prefix multi_process {"on" "off"} {
+	test_info_inferiors $multi_process
+    }
+}
+
+multi_target_cleanup
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-interrupt.exp ./gdb/testsuite/gdb.multi/multi-target-interrupt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-interrupt.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-target-interrupt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,79 @@
+# Copyright 2017-2021 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 interrupting multiple targets with Ctrl-C.
+
+source $srcdir/$subdir/multi-target.exp.tcl
+
+if {![multi_target_prepare]} {
+    return
+}
+
+proc test_ctrlc {} {
+    if {![setup "off"]} {
+	untested "setup failed"
+	return
+    }
+
+    delete_breakpoints
+
+    # Select inferior INF, continue all inferiors, and then Ctrl-C.
+    proc test_ctrlc_inf {inf} {
+	global gdb_prompt
+
+	gdb_test "inferior $inf" "Switching to inferior $inf.*"
+
+	set msg "continue"
+	gdb_test_multiple "continue" $msg {
+	    -re "Continuing" {
+		pass $msg
+	    }
+	}
+
+	after 200 { send_gdb "\003" }
+
+	set msg "send_gdb control C"
+	gdb_test_multiple "" $msg {
+	    -re "received signal SIGINT.*$gdb_prompt $" {
+		pass $msg
+	    }
+	}
+
+	set msg "all threads stopped"
+	gdb_test_multiple "info threads" "$msg" {
+	    -re "\\\(running\\\).*$gdb_prompt $" {
+		fail $msg
+	    }
+	    -re "$gdb_prompt $" {
+		pass $msg
+	    }
+	}
+    }
+
+    for {set i 1} {$i <= 5} {incr i} {
+	if {$i == 3} {
+	    # This is a core inferior.
+	    continue
+	}
+
+	with_test_prefix "inf$i" {
+	    test_ctrlc_inf $i
+	}
+    }
+}
+
+test_ctrlc
+
+multi_target_cleanup
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-no-resumed.exp ./gdb/testsuite/gdb.multi/multi-target-no-resumed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-no-resumed.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-target-no-resumed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,90 @@
+# Copyright 2017-2021 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 that when there's a foreground execution command in progress, a
+# TARGET_WAITKIND_NO_RESUMED for a particular target is ignored when
+# other targets are still resumed.
+
+source $srcdir/$subdir/multi-target.exp.tcl
+
+if {![multi_target_prepare]} {
+    return
+}
+
+proc test_no_resumed_infs {inf_A inf_B} {
+    global gdb_prompt
+
+    if {![setup "off"]} {
+	untested "setup failed"
+	return
+    }
+
+    gdb_test "thread $inf_A.2" "Switching to thread $inf_A\.2 .*" \
+	"select thread of target A"
+
+    gdb_test_no_output "set scheduler-locking on"
+
+    gdb_test_multiple "continue &" "" {
+	-re "Continuing.*$gdb_prompt " {
+	    pass $gdb_test_name
+	}
+    }
+
+    gdb_test "thread $inf_B.2" "Switching to thread $inf_B\.2 .*" \
+	"select thread of target B"
+    gdb_test "p exit_thread = 1" " = 1" \
+	"set the thread to exit on resumption"
+
+    # Wait 3 seconds.  If we see any response from GDB, such as
+    # "No unwaited-for children left." it's a bug.
+    gdb_test_multiple "continue" "continue" {
+	-timeout 3
+	timeout {
+	    pass $gdb_test_name
+	}
+    }
+
+    # Now stop the program (all targets).
+    send_gdb "\003"
+    gdb_test_multiple "" "send_gdb control C" {
+	-re "received signal SIGINT.*$gdb_prompt $" {
+	    pass $gdb_test_name
+	}
+    }
+
+    gdb_test_multiple "info threads" "all threads stopped" {
+	-re "\\\(running\\\).*$gdb_prompt $" {
+	    fail $gdb_test_name
+	}
+	-re "$gdb_prompt $" {
+	    pass $gdb_test_name
+	}
+    }
+}
+
+# inferior 1 -> native
+# inferior 2 -> extended-remote 1
+# inferior 5 -> extended-remote 2
+set inferiors {1 2 5}
+foreach_with_prefix inf_A $inferiors {
+    foreach_with_prefix inf_B $inferiors {
+	if {$inf_A == $inf_B} {
+	    continue
+	}
+	test_no_resumed_infs $inf_A $inf_B
+    }
+}
+
+multi_target_cleanup
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-ping-pong-next.exp ./gdb/testsuite/gdb.multi/multi-target-ping-pong-next.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-ping-pong-next.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-target-ping-pong-next.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,85 @@
+# Copyright 2017-2021 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 "next" bouncing between two breakpoints in two threads running
+# in different targets.
+
+source $srcdir/$subdir/multi-target.exp.tcl
+
+if {![multi_target_prepare]} {
+    return
+}
+
+proc test_ping_pong_next {} {
+    global srcfile
+
+    if {![setup "off"]} {
+	untested "setup failed"
+	return
+    }
+
+    # Block/unblock inferiors 1 and 2 according to INF1 and INF2.
+    proc block {inf1 inf2} {
+	gdb_test "thread apply 1.1 p wait_for_gdb = $inf1" " = $inf1"
+	gdb_test "thread apply 2.1 p wait_for_gdb = $inf2" " = $inf2"
+    }
+
+    # We'll use inferiors 1 and 2.  Make sure they're really connected
+    # to different targets.
+    gdb_test "thread apply 1.1 maint print target-stack" \
+	"- native.*"
+    gdb_test "thread apply 2.1 maint print target-stack" \
+	"- extended-remote.*"
+
+    # Set two breakpoints, one for each of inferior 1 and 2.  Inferior
+    # 1 is running on the native target, and inferior 2 is running on
+    # extended-gdbserver.  Run to breakpoint 1 to gets things started.
+    set line1 [gdb_get_line_number "set break 1 here"]
+    set line2 [gdb_get_line_number "set break 2 here"]
+
+    gdb_test "thread 1.1" "Switching to thread 1.1 .*"
+
+    gdb_test "break $srcfile:$line1 thread 1.1" \
+	"Breakpoint .*$srcfile:$line1\\..*"
+
+    gdb_test "continue" "hit Breakpoint .*"
+
+    gdb_test "break $srcfile:$line2 thread 2.1" \
+	"Breakpoint .*$srcfile:$line2\\..*"
+
+    # Now block inferior 1 and issue "next".  We should stop at the
+    # breakpoint for inferior 2, given schedlock off.
+    with_test_prefix "next inf 1" {
+	block 1 0
+	gdb_test "next" "Thread 2.1 .*hit Breakpoint .*$srcfile:$line2.*"
+    }
+
+    # Now unblock inferior 2 and block inferior 1.  "next" should run
+    # into the breakpoint in inferior 1.
+    with_test_prefix "next inf 2" {
+	block 0 1
+	gdb_test "next" "Thread 1.1 .*hit Breakpoint .*$srcfile:$line1.*"
+    }
+
+    # Try nexting inferior 1 again.
+    with_test_prefix "next inf 1 again" {
+	block 1 0
+	gdb_test "next" "Thread 2.1 .*hit Breakpoint .*$srcfile:$line2.*"
+    }
+}
+
+test_ping_pong_next
+
+multi_target_cleanup
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-thread-find.exp ./gdb/testsuite/gdb.multi/multi-target-thread-find.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-target-thread-find.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-target-thread-find.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,106 @@
+# Copyright 2020-2021 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 "thread find" with multiple inferiors/targets.  Regression test
+# for PR gdb/26631.
+
+source $srcdir/$subdir/multi-target.exp.tcl
+
+if {![multi_target_prepare]} {
+    return
+}
+
+proc test_thread_find {} {
+    global decimal gdb_prompt
+
+    set NUM_INFS 6
+
+    if {![setup "off"]} {
+	untested "setup failed"
+	return
+    }
+
+    # This makes sure we don't crash.  See PR gdb/26631.
+    gdb_test "thread find xxxyyyzzz" \
+	"No threads match 'xxxyyyzzz'"
+
+    # Create thread names.
+    for {set i 1} {$i <= $NUM_INFS} {incr i} {
+	gdb_test "thread apply $i.1 thread name threadname_$i" \
+	    "Thread $i.1 .*" \
+	    "name thread $i"
+    }
+
+    # Collect target ids.
+
+    for {set i 1} {$i <= $NUM_INFS} {incr i} {
+	set target_id($i) ""
+    }
+    set any "\[^\r\n\]*"
+    gdb_test_multiple "info threads" "collect thread id" {
+	-re ". ($decimal).$decimal  (Thread ${any}) \"threadname_\[0-9\]+\" $any" {
+	    set thr_num $expect_out(1,string)
+	    set target_id($thr_num) $expect_out(2,string)
+	    exp_continue
+	}
+	-re ".*$gdb_prompt $" {
+	    pass "collect target id"
+	}
+    }
+
+    # Find the threads by name.  Note we repeat the search with each
+    # inferior selected, so that we're sure that GDB doesn't get
+    # confused with which target stack to consult.
+
+    with_test_prefix "find by name" {
+	for {set sel_inf 1} {$sel_inf <= $NUM_INFS} {incr sel_inf} {
+	    with_test_prefix "inf $sel_inf" {
+
+		gdb_test "inferior $sel_inf" \
+		    "Switching to inferior $sel_inf .*"
+
+		for {set find_inf 1} {$find_inf <= $NUM_INFS} {incr find_inf} {
+		    gdb_test "thread find threadname_$find_inf" \
+			"Thread $find_inf.1 has name 'threadname_$find_inf'" \
+			"find thread name $find_inf"
+		}
+	    }
+	}
+    }
+
+    # Find the threads by target id.  Likewise we repeat the search
+    # with each inferior selected.
+
+    with_test_prefix "find by target id" {
+	for {set sel_inf 1} {$sel_inf <= $NUM_INFS} {incr sel_inf} {
+	    with_test_prefix "inf $sel_inf" {
+
+		gdb_test "inferior $sel_inf" \
+		    "Switching to inferior $sel_inf .*"
+
+		for {set find_inf 1} {$find_inf <= $NUM_INFS} {incr find_inf} {
+		    set target_id_re [string_to_regexp $target_id($find_inf)]
+		    gdb_test "thread find $target_id($find_inf)" \
+			"Thread $find_inf.1 has target id '$target_id_re'.*" \
+			"find thread target id $find_inf"
+		}
+	    }
+	}
+    }
+}
+
+test_thread_find
+
+multi_target_cleanup
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-term-settings.c ./gdb/testsuite/gdb.multi/multi-term-settings.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-term-settings.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-term-settings.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-term-settings.exp ./gdb/testsuite/gdb.multi/multi-term-settings.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/multi-term-settings.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/multi-term-settings.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -125,7 +125,9 @@ proc coretest {inf1_how inf2_how} {
 
     clean_restart $binfile
 
-    set inf1_spawn_id [create_inferior 1 $inf1_how]
+    with_test_prefix "inf1" {
+	set inf1_spawn_id [create_inferior 1 $inf1_how]
+    }
 
     set num 2
     gdb_test "add-inferior" "Added inferior $num.*" \
@@ -134,7 +136,9 @@ proc coretest {inf1_how inf2_how} {
 	"switch to inferior $num"
     gdb_file_cmd ${binfile}
 
-    set inf2_spawn_id [create_inferior 2 $inf2_how]
+    with_test_prefix "inf2" {
+	set inf2_spawn_id [create_inferior 2 $inf2_how]
+    }
 
     gdb_test_no_output "set schedule-multiple on"
 
@@ -218,8 +222,10 @@ proc coretest {inf1_how inf2_how} {
     }
 
     # Useful for debugging in case the Ctrl-C above fails.
-    gdb_test "info inferiors"
-    gdb_test "info threads"
+    with_test_prefix "final" {
+	gdb_test "info inferiors"
+	gdb_test "info threads"
+    }
 }
 
 set how_modes {"run" "attach" "tty"}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/remove-inferiors.c ./gdb/testsuite/gdb.multi/remove-inferiors.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/remove-inferiors.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/remove-inferiors.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/remove-inferiors.exp ./gdb/testsuite/gdb.multi/remove-inferiors.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/remove-inferiors.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/remove-inferiors.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -26,7 +26,7 @@ proc switch_to_inferior { num message }
 }
 
 proc add_inferior { expected_num message } {
-    gdb_test "add-inferior" "Added inferior ${expected_num}" "${message}"
+    gdb_test "add-inferior" "Added inferior ${expected_num}( on connection .*)?" "${message}"
 }
 
 proc test_remove_inferiors { } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/run-only-second-inf.c ./gdb/testsuite/gdb.multi/run-only-second-inf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/run-only-second-inf.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/run-only-second-inf.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main ()
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/run-only-second-inf.exp ./gdb/testsuite/gdb.multi/run-only-second-inf.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/run-only-second-inf.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/run-only-second-inf.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,50 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2020-2021 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/>.
+
+# Create two inferiors that are not running.  Then run only the second
+# one.  Expect it to start normally.
+
+standard_testfile
+
+if {[use_gdb_stub]} {
+    return 0
+}
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug}]} {
+    return -1
+}
+
+# Setting the target to non-stop mode revealed a bug where the context
+# was not being switched before making ptid-dependent memory access.
+# So, start GDB with this setting.
+save_vars { GDBFLAGS } {
+    append GDBFLAGS " -ex \"maint set target-non-stop on\""
+    clean_restart ${binfile}
+}
+
+# Add and start the second inferior.
+gdb_test "add-inferior" "Added inferior 2.*" \
+    "add empty inferior 2"
+gdb_test "inferior 2" "Switching to inferior 2.*" \
+    "switch to inferior 2"
+gdb_load $binfile
+
+if {[gdb_start_cmd] < 0} {
+    fail "start the second inf"
+} else {
+    gdb_test "" ".*reakpoint ., main .*${srcfile}.*" "start the second inf"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/stop-all-on-exit.c ./gdb/testsuite/gdb.multi/stop-all-on-exit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/stop-all-on-exit.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/stop-all-on-exit.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <unistd.h>
+
+static unsigned int duration = 1;
+
+int
+main ()
+{
+  sleep (duration);
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/stop-all-on-exit.exp ./gdb/testsuite/gdb.multi/stop-all-on-exit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/stop-all-on-exit.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/stop-all-on-exit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,64 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2020-2021 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 that in all-stop mode with multiple inferiors, GDB stops all
+# threads upon receiving an exit event from one of the inferiors.
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} {
+    return -1
+}
+
+if {![runto_main]} {
+    fail "starting inferior 1"
+    return -1
+}
+
+# This is a test specific for a native target, where we use the
+# "-exec" argument to "add-inferior" and we explicitly don't do
+# "maint set target-non-stop on".
+if {![gdb_is_target_native]} {
+    untested "the test is aimed at a native target"
+    return 0
+}
+
+# Add a second inferior that will sleep longer.
+gdb_test "add-inferior -exec $binfile" "Added inferior 2.*" \
+    "add the second inferior"
+gdb_test "inferior 2" ".*Switching to inferior 2.*"
+if {![runto_main]} {
+    fail "starting inferior 2"
+    return -1
+}
+gdb_test "print duration=10" "= 10"
+
+# Now continue both processes.  We should get the exit event from the
+# first inferior.
+gdb_test_no_output "set schedule-multiple on"
+gdb_continue_to_end
+
+# GDB is expected to have stopped the other inferior.  Switch to the
+# slow inferior's thread.  It should not be running.
+gdb_test_multiple "thread 2.1" "check thread 2.1 is not running" {
+    -re "\\(running\\)\[\r\n\]+$gdb_prompt" {
+	fail $gdb_test_name
+    }
+    -re "$gdb_prompt" {
+	pass $gdb_test_name
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/tids.c ./gdb/testsuite/gdb.multi/tids.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/tids.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/tids.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/tids.exp ./gdb/testsuite/gdb.multi/tids.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/tids.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/tids.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/tids-gid-reset.c ./gdb/testsuite/gdb.multi/tids-gid-reset.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/tids-gid-reset.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/tids-gid-reset.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+int
+main (void)
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/tids-gid-reset.exp ./gdb/testsuite/gdb.multi/tids-gid-reset.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/tids-gid-reset.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/tids-gid-reset.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,96 @@
+# Copyright 2015-2021 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/>.
+
+# Check that letting the inferior exit and restarting it again resets
+# the global TID counter, and thus the new thread 1.1 should end up
+# with global TID == 1.
+#
+# Also, check the same but with another inferior still running, in
+# which case the new thread 1.1 should end up with global TID == 3.
+
+standard_testfile
+
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {pthreads debug}] } {
+    return -1
+}
+
+with_test_prefix "single-inferior" {
+    with_test_prefix "before restart" {
+	clean_restart ${testfile}
+
+	if { ![runto_main] } then {
+	    return -1
+	}
+
+	gdb_test "info threads -gid" "\\* 1 +1 +.*"
+    }
+
+    with_test_prefix "restart" {
+	gdb_continue_to_end
+	if { ![runto_main] } then {
+	    return -1
+	}
+    }
+
+    with_test_prefix "after restart" {
+	gdb_test "info threads -gid" "\\* 1 +1 +.*"
+    }
+}
+
+# For the following tests, multiple inferiors are needed, therefore
+# non-extended gdbserver is not supported.
+if [use_gdb_stub] {
+    untested "using gdb stub"
+    return
+}
+
+# Test with multiple inferiors.  This time, since we restart inferior
+# 1 while inferior 2 still has threads, then the new thread 1.1 should
+# end up with GID == 3, since we won't be able to reset the global
+# thread ID counter.
+with_test_prefix "multi-inferior" {
+    gdb_test "add-inferior" "Added inferior 2.*" "add empty inferior 2"
+    gdb_test "inferior 2" "Switching to inferior 2 .*" "switch to inferior 2"
+    gdb_load ${binfile}
+
+    if ![runto_main] then {
+	fail "starting inferior 2"
+	return
+    }
+
+    gdb_test "inferior 1" "Switching to inferior 1 .*" \
+	"switch back to inferior 1"
+
+    with_test_prefix "before restart" {
+	gdb_test "info threads -gid" \
+	    [multi_line \
+		 "\\* 1\.1 +1 +.*" \
+		 "  2\.1 +2 +.*"]
+    }
+
+    with_test_prefix "restart" {
+	gdb_continue_to_end
+	if { ![runto_main] } then {
+	    return -1
+	}
+    }
+
+    with_test_prefix "after restart" {
+	gdb_test "info threads -gid" \
+	    [multi_line \
+		 "\\* 1\.1 +3 +.*" \
+		 "  2\.1 +2 +.*"]
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/watchpoint-multi.c ./gdb/testsuite/gdb.multi/watchpoint-multi.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/watchpoint-multi.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/watchpoint-multi.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/watchpoint-multi-exit.c ./gdb/testsuite/gdb.multi/watchpoint-multi-exit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/watchpoint-multi-exit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/watchpoint-multi-exit.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/watchpoint-multi-exit.exp ./gdb/testsuite/gdb.multi/watchpoint-multi-exit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/watchpoint-multi-exit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/watchpoint-multi-exit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/watchpoint-multi.exp ./gdb/testsuite/gdb.multi/watchpoint-multi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.multi/watchpoint-multi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.multi/watchpoint-multi.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -53,7 +53,7 @@ if [support_displaced_stepping] {
 gdb_breakpoint main {temporary}
 gdb_test "run" "Temporary breakpoint.* main .*" "start to main inferior 1"
 
-gdb_test "add-inferior" "Added inferior 2" "add inferior 2"
+gdb_test "add-inferior" "Added inferior 2 on connection .*" "add inferior 2"
 gdb_test "inferior 2" "witching to inferior 2 .*" "switch to inferior 2, first time"
 gdb_load $binfile
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.objc/basicclass.exp ./gdb/testsuite/gdb.objc/basicclass.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.objc/basicclass.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.objc/basicclass.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.objc/nondebug.exp ./gdb/testsuite/gdb.objc/nondebug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.objc/nondebug.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.objc/nondebug.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.objc/objcdecode.exp ./gdb/testsuite/gdb.objc/objcdecode.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.objc/objcdecode.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.objc/objcdecode.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.objc/print.exp ./gdb/testsuite/gdb.objc/print.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.objc/print.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.objc/print.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/callfuncs.cl ./gdb/testsuite/gdb.opencl/callfuncs.cl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/callfuncs.cl	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opencl/callfuncs.cl	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/callfuncs.exp ./gdb/testsuite/gdb.opencl/callfuncs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/callfuncs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opencl/callfuncs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -20,6 +20,7 @@
 load_lib opencl.exp
 
 if { [skip_opencl_tests] } {
+    unsupported "OpenCL support not detected"
     return 0
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/convs_casts.cl ./gdb/testsuite/gdb.opencl/convs_casts.cl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/convs_casts.cl	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opencl/convs_casts.cl	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/convs_casts.exp ./gdb/testsuite/gdb.opencl/convs_casts.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/convs_casts.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opencl/convs_casts.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -20,6 +20,7 @@
 load_lib opencl.exp
 
 if { [skip_opencl_tests] } {
+    unsupported "OpenCL support not detected"
     return 0
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/datatypes.cl ./gdb/testsuite/gdb.opencl/datatypes.cl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/datatypes.cl	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opencl/datatypes.cl	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/datatypes.exp ./gdb/testsuite/gdb.opencl/datatypes.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/datatypes.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opencl/datatypes.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -20,6 +20,7 @@
 load_lib opencl.exp
 
 if { [skip_opencl_tests] } {
+    unsupported "OpenCL support not detected"
     return 0
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/operators.cl ./gdb/testsuite/gdb.opencl/operators.cl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/operators.cl	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opencl/operators.cl	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/operators.exp ./gdb/testsuite/gdb.opencl/operators.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/operators.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opencl/operators.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -20,6 +20,7 @@
 load_lib opencl.exp
 
 if { [skip_opencl_tests] } {
+    unsupported "OpenCL support not detected"
     return 0
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/vec_comps.cl ./gdb/testsuite/gdb.opencl/vec_comps.cl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/vec_comps.cl	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opencl/vec_comps.cl	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/vec_comps.exp ./gdb/testsuite/gdb.opencl/vec_comps.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opencl/vec_comps.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opencl/vec_comps.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -20,6 +20,7 @@
 load_lib opencl.exp
 
 if { [skip_opencl_tests] } {
+    unsupported "OpenCL support not detected"
     return 0
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/clobbered-registers-O2.c ./gdb/testsuite/gdb.opt/clobbered-registers-O2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/clobbered-registers-O2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/clobbered-registers-O2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This file is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/clobbered-registers-O2.exp ./gdb/testsuite/gdb.opt/clobbered-registers-O2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/clobbered-registers-O2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/clobbered-registers-O2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-break.c ./gdb/testsuite/gdb.opt/inline-break.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-break.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-break.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-break.exp ./gdb/testsuite/gdb.opt/inline-break.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-break.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-break.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-bt.c ./gdb/testsuite/gdb.opt/inline-bt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-bt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-bt.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-bt.exp ./gdb/testsuite/gdb.opt/inline-bt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-bt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-bt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-cmds.c ./gdb/testsuite/gdb.opt/inline-cmds.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-cmds.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-cmds.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-cmds.exp ./gdb/testsuite/gdb.opt/inline-cmds.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-cmds.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-cmds.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -235,7 +235,7 @@ gdb_test_multiple "next" $msg {
 	# containing block and/or function into account when
 	# deciding how far to step.  The single line table entry
 	# is actually two consecutive instances of the same line.
-	kfail gdb/NNNN $msg
+	kfail gdb/25884 $msg
     }
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-locals.c ./gdb/testsuite/gdb.opt/inline-locals.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-locals.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-locals.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 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
@@ -29,9 +29,18 @@ volatile int *array_p;
 
 void bar(void);
 
+void
+init_array (int *array, int n)
+{
+  int i;
+  for (i = 0; i < n; ++i)
+    array[i] = 0;
+}
+
 inline ATTR int func1(int arg1)
 {
   int array[64];
+  init_array (array, 64);
   array_p = array;
   array[0] = result;
   array[1] = arg1;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-locals.exp ./gdb/testsuite/gdb.opt/inline-locals.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-locals.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-locals.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -43,8 +43,17 @@ if { ! $no_frames } {
 	"backtrace from bar 2"
     gdb_test "up" "#1  .*func1 .* at .*" "up from bar 2"
     gdb_test "info frame" ".*inlined into frame.*" "func1 inlined 2"
-    setup_kfail "gdb/xyz" *-*-*
-    gdb_test "info locals" "array = {.*}" "info locals above bar 2"
+    set pass_re "array = \\{0 <repeats 64 times>\\}"
+    set kfail_re [multi_line $pass_re \
+		      "array = {<optimized out> <repeats 64 times>}"]
+    gdb_test_multiple "info locals" "info locals above bar 2" {
+	-re -wrap $pass_re {
+	    pass $gdb_test_name
+	}
+	-re -wrap $kfail_re {
+	    kfail gdb/25695 $gdb_test_name
+	}
+    }
 
     set msg "info args above bar 2"
     gdb_test_multiple "info args" $msg {
@@ -83,8 +92,17 @@ if { ! $no_frames } {
 	"backtrace from bar 3"
     gdb_test "up" "#1  .*func1 .* at .*" "up from bar 3"
     gdb_test "info frame" ".*inlined into frame.*" "func1 inlined 3"
-    setup_kfail "gdb/xyz" *-*-*
-    gdb_test "info locals" "array = {.*}" "info locals above bar 3"
+    set pass_re "array = {$decimal, \[^\r\n\]*}"
+    set kfail_re [multi_line $pass_re \
+		      "array = {<optimized out> <repeats 64 times>}"]
+    gdb_test_multiple "info locals" "info locals above bar 3" {
+	-re -wrap $pass_re {
+	    pass $gdb_test_name
+	}
+	-re -wrap $kfail_re {
+	    kfail gdb/25695 $gdb_test_name
+	}
+    }
 
     set msg "info args above bar 3"
     gdb_test_multiple "info args" $msg {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-markers.c ./gdb/testsuite/gdb.opt/inline-markers.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-markers.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-markers.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-small-func.c ./gdb/testsuite/gdb.opt/inline-small-func.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-small-func.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-small-func.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* Copyright 2020-2021 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/>.  */
+
+#include "inline-small-func.h"
+
+int
+main ()
+{		/* caller: before call.  */
+  callee ();	/* caller: the call.  */
+}		/* caller: after call.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-small-func.exp ./gdb/testsuite/gdb.opt/inline-small-func.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-small-func.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-small-func.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,60 @@
+# Copyright 2020-2021 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/>.
+
+# Check for an issue in GDB where buildsym_compunit::record_line was
+# removing duplicate line table entries, but skip_prologue_using_sal
+# depends on these duplicates to spot the end of the prologue.
+#
+# When the de-duplication was added this regression was not spotted as
+# it requires a particular combination of a (very) small function
+# being inlined into an also very small outer function.
+#
+# See also gdb.dwarf/dw2-inline-small-func.exp for a version of this
+# test that makes use of the Dejagnu DWARF compiler.
+#
+# This test simply compiles with optimization and checks that GDB can
+# do something suitable with the compiled binary.  Problems with this
+# test are most likely to occur when GDB asks the target specific code
+# to skip the prologue (gdbarch_skip_prologue).  Some targets make use
+# of skip_prologue_using_sal, which should be fine, however, some
+# targets make a poor attempt to duplicate parts of
+# skip_prologue_using_sal, these targets could easily fail this test.
+# This is not (necessarily) a problem with this test, but could
+# indicate a weakness with the target in question.
+
+standard_testfile inline-small-func.c inline-small-func.h
+
+if { [prepare_for_testing "failed to prepare" ${testfile} \
+	  [list $srcfile] {debug optimize=-O1}] } {
+    return -1
+}
+
+if ![runto_main] {
+    return -1
+}
+
+# Delete all breakpoints so that the output of "info breakpoints"
+# below will only contain a single breakpoint.
+delete_breakpoints
+
+# Place a breakpoint within the function in the header file.
+set linenum [gdb_get_line_number "callee: body" $srcfile2]
+gdb_breakpoint "${srcfile2}:${linenum}"
+
+# Check that the breakpoint was placed where we expected.  It should
+# appear at the requested line.  When the bug in GDB was present the
+# breakpoint would be placed on one of the following lines instead.
+gdb_test "info breakpoints" \
+    ".* in callee at \[^\r\n\]+${srcfile2}:${linenum}\\y.*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-small-func.h ./gdb/testsuite/gdb.opt/inline-small-func.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/inline-small-func.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/inline-small-func.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,21 @@
+/* Copyright 2020-2021 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/>.  */
+
+int counter = 42;
+
+inline void
+callee () {
+  counter = 0;	/* callee: body.  */
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/solib-intra-step.exp ./gdb/testsuite/gdb.opt/solib-intra-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/solib-intra-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/solib-intra-step.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/solib-intra-step-lib.c ./gdb/testsuite/gdb.opt/solib-intra-step-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/solib-intra-step-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/solib-intra-step-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/solib-intra-step-main.c ./gdb/testsuite/gdb.opt/solib-intra-step-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.opt/solib-intra-step-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.opt/solib-intra-step-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/case-insensitive-symbols.exp ./gdb/testsuite/gdb.pascal/case-insensitive-symbols.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/case-insensitive-symbols.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/case-insensitive-symbols.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/case-insensitive-symbols.pas ./gdb/testsuite/gdb.pascal/case-insensitive-symbols.pas
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/case-insensitive-symbols.pas	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/case-insensitive-symbols.pas	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 {
- Copyright 2015-2020 Free Software Foundation, Inc.
+ Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/floats.exp ./gdb/testsuite/gdb.pascal/floats.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/floats.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/floats.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/floats.pas ./gdb/testsuite/gdb.pascal/floats.pas
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/floats.pas	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/floats.pas	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 {
- Copyright 2008-2020 Free Software Foundation, Inc.
+ Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/gdb11492.exp ./gdb/testsuite/gdb.pascal/gdb11492.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/gdb11492.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/gdb11492.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -46,7 +46,11 @@ gdb_test "print /d char_array" { = \{50,
 gdb_test "print /x char_array" { = \{0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39\}}
 # Use next two times to avoid GPC line numbering problem
 gdb_test "next" ""
-gdb_test "next" ""
-gdb_test "print char_array" " = '2345X789'"
+with_test_prefix "second" {
+    gdb_test "next" ""
+}
+with_test_prefix "after assignment" {
+    gdb_test "print char_array" " = '2345X789'"
+}
 gdb_exit
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/gdb11492.pas ./gdb/testsuite/gdb.pascal/gdb11492.pas
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/gdb11492.pas	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/gdb11492.pas	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 {
- Copyright 2010-2020 Free Software Foundation, Inc.
+ Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/hello.exp ./gdb/testsuite/gdb.pascal/hello.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/hello.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/hello.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/integers.exp ./gdb/testsuite/gdb.pascal/integers.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/integers.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/integers.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/integers.pas ./gdb/testsuite/gdb.pascal/integers.pas
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/integers.pas	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/integers.pas	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 {
- Copyright 2008-2020 Free Software Foundation, Inc.
+ Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/print.exp ./gdb/testsuite/gdb.pascal/print.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/print.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/print.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/stub-method.exp ./gdb/testsuite/gdb.pascal/stub-method.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/stub-method.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/stub-method.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/stub-method.pas ./gdb/testsuite/gdb.pascal/stub-method.pas
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/stub-method.pas	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/stub-method.pas	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 {
- Copyright 2015-2020 Free Software Foundation, Inc.
+ Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/types.exp ./gdb/testsuite/gdb.pascal/types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.pascal/types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.pascal/types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1994-2020 Free Software Foundation, Inc.
+# Copyright 1994-2021 Free Software Foundation, Inc.
 # Copyright 2007 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/backtrace.c ./gdb/testsuite/gdb.perf/backtrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/backtrace.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/backtrace.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/backtrace.exp ./gdb/testsuite/gdb.perf/backtrace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/backtrace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/backtrace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/backtrace.py ./gdb/testsuite/gdb.perf/backtrace.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/backtrace.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/backtrace.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/disassemble.exp ./gdb/testsuite/gdb.perf/disassemble.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/disassemble.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/disassemble.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/disassemble.py ./gdb/testsuite/gdb.perf/disassemble.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/disassemble.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/disassemble.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-hello.cc ./gdb/testsuite/gdb.perf/gm-hello.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-hello.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gm-hello.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1.cc ./gdb/testsuite/gdb.perf/gmonster1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1.exp ./gdb/testsuite/gdb.perf/gmonster1.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster1.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-null-lookup.exp ./gdb/testsuite/gdb.perf/gmonster1-null-lookup.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-null-lookup.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster1-null-lookup.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-pervasive-typedef.exp ./gdb/testsuite/gdb.perf/gmonster1-pervasive-typedef.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-pervasive-typedef.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster1-pervasive-typedef.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-print-cerr.exp ./gdb/testsuite/gdb.perf/gmonster1-print-cerr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-print-cerr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster1-print-cerr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-ptype-string.exp ./gdb/testsuite/gdb.perf/gmonster1-ptype-string.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-ptype-string.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster1-ptype-string.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-runto-main.exp ./gdb/testsuite/gdb.perf/gmonster1-runto-main.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-runto-main.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster1-runto-main.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-select-file.exp ./gdb/testsuite/gdb.perf/gmonster1-select-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster1-select-file.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster1-select-file.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2.cc ./gdb/testsuite/gdb.perf/gmonster2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2.exp ./gdb/testsuite/gdb.perf/gmonster2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-null-lookup.exp ./gdb/testsuite/gdb.perf/gmonster2-null-lookup.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-null-lookup.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster2-null-lookup.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-pervasive-typedef.exp ./gdb/testsuite/gdb.perf/gmonster2-pervasive-typedef.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-pervasive-typedef.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster2-pervasive-typedef.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-print-cerr.exp ./gdb/testsuite/gdb.perf/gmonster2-print-cerr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-print-cerr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster2-print-cerr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-ptype-string.exp ./gdb/testsuite/gdb.perf/gmonster2-ptype-string.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-ptype-string.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster2-ptype-string.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-runto-main.exp ./gdb/testsuite/gdb.perf/gmonster2-runto-main.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-runto-main.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster2-runto-main.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-select-file.exp ./gdb/testsuite/gdb.perf/gmonster2-select-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster2-select-file.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster2-select-file.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-null-lookup.py ./gdb/testsuite/gdb.perf/gmonster-null-lookup.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-null-lookup.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster-null-lookup.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-pervasive-typedef.py ./gdb/testsuite/gdb.perf/gmonster-pervasive-typedef.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-pervasive-typedef.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster-pervasive-typedef.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-print-cerr.py ./gdb/testsuite/gdb.perf/gmonster-print-cerr.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-print-cerr.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster-print-cerr.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-ptype-string.py ./gdb/testsuite/gdb.perf/gmonster-ptype-string.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-ptype-string.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster-ptype-string.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-runto-main.py ./gdb/testsuite/gdb.perf/gmonster-runto-main.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-runto-main.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster-runto-main.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-select-file.py ./gdb/testsuite/gdb.perf/gmonster-select-file.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gmonster-select-file.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gmonster-select-file.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-pervasive-typedef.cc ./gdb/testsuite/gdb.perf/gm-pervasive-typedef.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-pervasive-typedef.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gm-pervasive-typedef.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-pervasive-typedef.h ./gdb/testsuite/gdb.perf/gm-pervasive-typedef.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-pervasive-typedef.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gm-pervasive-typedef.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-std.cc ./gdb/testsuite/gdb.perf/gm-std.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-std.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gm-std.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-std.h ./gdb/testsuite/gdb.perf/gm-std.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-std.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gm-std.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-use-cerr.cc ./gdb/testsuite/gdb.perf/gm-use-cerr.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-use-cerr.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gm-use-cerr.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-utils.h ./gdb/testsuite/gdb.perf/gm-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/gm-utils.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/gm-utils.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/__init__.py ./gdb/testsuite/gdb.perf/lib/perftest/__init__.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/__init__.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/lib/perftest/__init__.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/measure.py ./gdb/testsuite/gdb.perf/lib/perftest/measure.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/measure.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/lib/perftest/measure.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/perftest.py ./gdb/testsuite/gdb.perf/lib/perftest/perftest.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/perftest.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/lib/perftest/perftest.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/reporter.py ./gdb/testsuite/gdb.perf/lib/perftest/reporter.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/reporter.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/lib/perftest/reporter.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/testresult.py ./gdb/testsuite/gdb.perf/lib/perftest/testresult.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/testresult.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/lib/perftest/testresult.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/utils.py ./gdb/testsuite/gdb.perf/lib/perftest/utils.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/lib/perftest/utils.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/lib/perftest/utils.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/single-step.c ./gdb/testsuite/gdb.perf/single-step.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/single-step.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/single-step.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/single-step.exp ./gdb/testsuite/gdb.perf/single-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/single-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/single-step.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/single-step.py ./gdb/testsuite/gdb.perf/single-step.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/single-step.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/single-step.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-command.cc ./gdb/testsuite/gdb.perf/skip-command.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-command.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/skip-command.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-command.exp ./gdb/testsuite/gdb.perf/skip-command.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-command.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/skip-command.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-command.py ./gdb/testsuite/gdb.perf/skip-command.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-command.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/skip-command.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-prologue.c ./gdb/testsuite/gdb.perf/skip-prologue.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-prologue.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/skip-prologue.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-prologue.exp ./gdb/testsuite/gdb.perf/skip-prologue.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-prologue.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/skip-prologue.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-prologue.py ./gdb/testsuite/gdb.perf/skip-prologue.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/skip-prologue.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/skip-prologue.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/solib.c ./gdb/testsuite/gdb.perf/solib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/solib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/solib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/solib.exp ./gdb/testsuite/gdb.perf/solib.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/solib.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/solib.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/solib.py ./gdb/testsuite/gdb.perf/solib.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/solib.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/solib.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/template-breakpoints.cc ./gdb/testsuite/gdb.perf/template-breakpoints.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/template-breakpoints.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/template-breakpoints.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/template-breakpoints.exp ./gdb/testsuite/gdb.perf/template-breakpoints.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/template-breakpoints.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/template-breakpoints.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/template-breakpoints.py ./gdb/testsuite/gdb.perf/template-breakpoints.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.perf/template-breakpoints.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.perf/template-breakpoints.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/amd64-py-framefilter-invalidarg.S ./gdb/testsuite/gdb.python/amd64-py-framefilter-invalidarg.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/amd64-py-framefilter-invalidarg.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/amd64-py-framefilter-invalidarg.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/flexible-array-member.c ./gdb/testsuite/gdb.python/flexible-array-member.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/flexible-array-member.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/flexible-array-member.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,70 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <stdlib.h>
+
+struct no_size
+{
+  int n;
+  int items[];
+};
+
+struct zero_size
+{
+  int n;
+  int items[0];
+};
+
+struct zero_size_only
+{
+  int items[0];
+};
+
+struct no_size *ns;
+struct zero_size *zs;
+struct zero_size_only *zso;
+
+static void
+break_here (void)
+{
+}
+
+int
+main (void)
+{
+  ns = (struct no_size *) malloc (sizeof (*ns) + 3 * sizeof (int));
+  zs = (struct zero_size *) malloc (sizeof (*zs) + 3 * sizeof (int));
+  zso = (struct zero_size_only *) malloc (sizeof (*zso) + 3 * sizeof (int));
+
+  ns->n = 3;
+  ns->items[0] = 101;
+  ns->items[1] = 102;
+  ns->items[2] = 103;
+
+  zs->n = 3;
+  zs->items[0] = 201;
+  zs->items[1] = 202;
+  zs->items[2] = 203;
+
+  zso->items[0] = 301;
+  zso->items[1] = 302;
+  zso->items[2] = 303;
+
+  break_here ();
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/flexible-array-member.exp ./gdb/testsuite/gdb.python/flexible-array-member.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/flexible-array-member.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/flexible-array-member.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,84 @@
+# Copyright 2020-2021 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 getting the range of flexible array members in Python.
+
+standard_testfile
+
+if { [prepare_for_testing "failed to prepare" \
+	${testfile} ${srcfile}] } {
+    return
+}
+
+# Skip all tests if Python scripting is not enabled.
+if { [skip_python_tests] } { continue }
+
+if { ![runto break_here] } {
+    untested "could not run to break_here"
+    return
+}
+
+# The various cases are:
+#
+#  - ns: flexible array member with no size
+#  - zs: flexible array member with size 0 (GNU C extension that predates the
+#    standardization of the feature, but widely supported)
+#  - zso: zero-size only, a corner case where the array is the sole member of
+#    the structure
+
+gdb_test "python ns = gdb.parse_and_eval('ns').dereference()"
+gdb_test "python zs = gdb.parse_and_eval('zs').dereference()"
+gdb_test "python zso = gdb.parse_and_eval('zso').dereference()"
+
+# Print the whole structure.
+
+gdb_test "python print(ns)" "{n = 3, items = $hex}"
+gdb_test "python print(zs)" "{n = 3, items = $hex}"
+gdb_test "python print(zso)" "{items = $hex}"
+
+# Print all items.
+
+gdb_test "python print(ns\['items'\])" "$hex"
+gdb_test "python print(ns\['items'\]\[0\])" "101"
+gdb_test "python print(ns\['items'\]\[1\])" "102"
+gdb_test "python print(ns\['items'\]\[2\])" "103"
+
+gdb_test "python print(zs\['items'\])" "$hex"
+gdb_test "python print(zs\['items'\]\[0\])" "201"
+gdb_test "python print(zs\['items'\]\[1\])" "202"
+gdb_test "python print(zs\['items'\]\[2\])" "203"
+
+gdb_test "python print(zso\['items'\])" "$hex"
+gdb_test "python print(zso\['items'\]\[0\])" "301"
+gdb_test "python print(zso\['items'\]\[1\])" "302"
+gdb_test "python print(zso\['items'\]\[2\])" "303"
+
+# Check taking the address of array elements (how PR 28675 was originally
+# reported).
+
+gdb_test "python print(ns\['items'\] == ns\['items'\]\[0\].address)" "True"
+gdb_test "python print(ns\['items'\]\[0\].address + 1 == ns\['items'\]\[1\].address)" "True"
+gdb_test "python print(zs\['items'\] == zs\['items'\]\[0\].address)" "True"
+gdb_test "python print(zs\['items'\]\[0\].address + 1 == zs\['items'\]\[1\].address)" "True"
+gdb_test "python print(zso\['items'\] == zso\['items'\]\[0\].address)" "True"
+gdb_test "python print(zso\['items'\]\[0\].address + 1 == zso\['items'\]\[1\].address)" "True"
+
+# Verify the range attribute.  It looks a bit inconsistent that the high bound
+# is sometimes 0, sometimes -1, but that's what GDB produces today, so that's
+# what we test.
+
+gdb_test "python print(ns\['items'\].type.range())" "\\(0, 0\\)"
+gdb_test "python print(zs\['items'\].type.range())" "\\(0, -1\\)"
+gdb_test "python print(zso\['items'\].type.range())" "\\(0, -1\\)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/lib-types.cc ./gdb/testsuite/gdb.python/lib-types.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/lib-types.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/lib-types.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/lib-types.exp ./gdb/testsuite/gdb.python/lib-types.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/lib-types.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/lib-types.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -103,8 +103,15 @@ gdb_test_multiple "python print (str (ba
 # test nested typedef/reference stripping
 gdb_test_no_output "python typedef_const_typedef_class1_ref_obj = gdb.parse_and_eval ('typedef_const_typedef_class1_ref_obj')"
 gdb_test_no_output "python basic_type_typedef_const_typedef_class1_ref_obj = gdb.types.get_basic_type (typedef_const_typedef_class1_ref_obj.type)"
-if {[test_compiler_info {gcc-*-*}]} { setup_xfail gcc/55641 *-*-* }
-gdb_test "python print (str (typedef_const_typedef_class1_ref_obj.type))" "\[\r\n\]+typedef_const_typedef_class1_ref"
+gdb_test_multiple "python print (str (typedef_const_typedef_class1_ref_obj.type))" "" {
+    -re -wrap "\[\r\n\]+const typedef_const_typedef_class1_ref" {
+	# Compiler with PR gcc/55641.
+	xfail $gdb_test_name
+    }
+    -re -wrap "\[\r\n\]+typedef_const_typedef_class1_ref" {
+	pass $gdb_test_name
+    }
+}
 set test "nested typedef/ref stripping"
 gdb_test_multiple "python print (str (basic_type_typedef_const_typedef_class1_ref_obj))" $test {
     -re "\[\r\n\]+class1\[\r\n\]+$gdb_prompt $" {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-arch.c ./gdb/testsuite/gdb.python/py-arch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-arch.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-arch.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-arch.exp ./gdb/testsuite/gdb.python/py-arch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-arch.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-arch.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-arch-reg-groups.exp ./gdb/testsuite/gdb.python/py-arch-reg-groups.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-arch-reg-groups.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-arch-reg-groups.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,106 @@
+# Copyright 2020-2021 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/>.
+
+# Check the gdb.Architecture.register_groups functionality.
+
+load_lib gdb-python.exp
+standard_testfile py-arch.c
+
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } {
+    return -1
+}
+
+# Skip all tests if Python scripting is not enabled.
+if { [skip_python_tests] } { continue }
+
+if ![runto_main] {
+   return -1
+}
+
+# First, use 'maint print reggroups' to get a list of all register
+# groups.
+set groups {}
+set test "maint print reggroups"
+gdb_test_multiple $test $test {
+    -re ".*Group\[ \t\]+Type\[ \t\]+\r\n" {
+	exp_continue
+    }
+    -re "^ (\[^ \t\]+)\[ \t\]+\[^\r\n\]+\r\n" {
+	lappend groups $expect_out(1,string)
+	exp_continue
+    }
+    -re "^$gdb_prompt " {
+    }
+}
+gdb_assert {[llength $groups] > 0} \
+    "Found at least one register group"
+
+# Now get the same register names using Python API.
+gdb_py_test_silent_cmd \
+    "python frame = gdb.selected_frame()" "get frame" 0
+gdb_py_test_silent_cmd \
+    "python arch = frame.architecture()" "get arch" 0
+gdb_py_test_silent_cmd \
+    "python groups = list (arch.register_groups ())" \
+    "get register groups" 0
+gdb_py_test_silent_cmd \
+    "python groups = map (lambda obj: obj.name, groups)" \
+    "convert groups to names" 0
+
+set py_groups {}
+gdb_test_multiple "python print (\"\\n\".join (groups))" \
+    "register groups from python" {
+	-re "^python print \[^\r\n\]+\r\n" {
+	    exp_continue
+	}
+	-re "^(\[^\r\n\]+)\r\n" {
+	    lappend py_groups $expect_out(1,string)
+	    exp_continue
+	}
+	-re "^$gdb_prompt " {
+	}
+    }
+
+gdb_assert {[llength $py_groups] > 0} \
+    "Found at least one register group from python"
+gdb_assert {[llength $py_groups] == [llength $groups]} \
+    "Same numnber of registers groups found"
+
+set found_non_match 0
+for { set i 0 } { $i < [llength $groups] } { incr i } {
+    if {[lindex $groups $i] != [lindex $py_groups $i]} {
+	set found_non_match 1
+    }
+}
+gdb_assert { $found_non_match == 0 } "all register groups match"
+
+# Check that we get the same register group descriptors from two
+# different iterators.
+gdb_py_test_silent_cmd \
+    "python iter1 = arch.register_groups ()" \
+    "get first all register group iterator" 0
+gdb_py_test_silent_cmd \
+    "python iter2 = arch.register_groups ()" \
+    "get second all register group iterator" 0
+gdb_py_test_silent_cmd \
+    [multi_line_input \
+	 "python" \
+	 "for r1, r2 in zip(iter1, iter2):" \
+	 "  if (r1.name != r2.name):"\
+	 "    raise gdb.GdbError (\"miss-matched names\")" \
+	 "  if (r1 != r2):" \
+	 "    raise gdb.GdbError (\"miss-matched objects\")" \
+	 "\004" ] \
+    "check names and objects match" 1
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-arch-reg-names.exp ./gdb/testsuite/gdb.python/py-arch-reg-names.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-arch-reg-names.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-arch-reg-names.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,121 @@
+# Copyright 2020-2021 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/>.
+
+# Check the gdb.Architecture.registers functionality.
+
+load_lib gdb-python.exp
+standard_testfile py-arch.c
+
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } {
+    return -1
+}
+
+# Skip all tests if Python scripting is not enabled.
+if { [skip_python_tests] } { continue }
+
+if ![runto_main] {
+   return -1
+}
+
+# First, use 'info registers' to get a list of register names.
+set regs {}
+gdb_test_multiple "info registers general" "info registers general" {
+    -re "^info registers general\r\n" {
+	exp_continue
+    }
+    -re "^(\[^ \t\]+)\[ \t\]+\[^\r\n\]+\r\n" {
+	set reg $expect_out(1,string)
+	lappend regs $reg
+	exp_continue
+    }
+    -re "^$gdb_prompt " {
+    }
+}
+gdb_assert {[llength $regs] > 0} \
+    "Found at least one register"
+
+# Now get the same register names using Python API.
+gdb_py_test_silent_cmd \
+    "python frame = gdb.selected_frame()" "get frame" 0
+gdb_py_test_silent_cmd \
+    "python arch = frame.architecture()" "get arch" 0
+gdb_py_test_silent_cmd \
+    "python regs = list (arch.registers (\"general\"))" \
+    "get general registers" 0
+gdb_py_test_silent_cmd \
+    "python regs = map (lambda r : r.name, regs)" \
+    "get names of general registers" 0
+
+set py_regs {}
+gdb_test_multiple "python print (\"\\n\".join (regs))" \
+    "general register from python" {
+	-re "^python print \[^\r\n\]+\r\n" {
+	    exp_continue
+	}
+	-re "^(\[^\r\n\]+)\r\n" {
+	    set reg $expect_out(1,string)
+	    lappend py_regs $reg
+	    exp_continue
+	}
+	-re "^$gdb_prompt " {
+	}
+    }
+
+gdb_assert {[llength $py_regs] > 0} \
+    "Found at least one register from python"
+gdb_assert {[llength $py_regs] == [llength $regs]} \
+    "Same numnber of registers found"
+
+set found_non_match 0
+for { set i 0 } { $i < [llength $regs] } { incr i } {
+    if {[lindex $regs $i] != [lindex $py_regs $i]} {
+	set found_non_match 1
+    }
+}
+gdb_assert { $found_non_match == 0 } "all registers match"
+
+# Check that we get the same register descriptors from two different
+# iterators.
+gdb_py_test_silent_cmd \
+    "python iter1 = arch.registers ()" \
+    "get first all register iterator" 0
+gdb_py_test_silent_cmd \
+    "python iter2 = arch.registers ()" \
+    "get second all register iterator" 0
+gdb_py_test_silent_cmd \
+    [multi_line_input \
+	 "python" \
+	 "for r1, r2 in zip(iter1, iter2):" \
+	 "  if (r1.name != r2.name):"\
+	 "    raise gdb.GdbError (\"miss-matched names\")" \
+	 "  if (r1 != r2):" \
+	 "    raise gdb.GdbError (\"miss-matched objects\")" \
+	 "\004" ] \
+    "check names and objects match" 1
+
+# Ensure that the '.find' method on the iterator returns the same
+# Python object as we got from the iterator's list of descriptors.
+gdb_py_test_silent_cmd \
+    [multi_line \
+	 "python" \
+	 "def check_regs (arch, regs):" \
+	 "   for r in (regs):" \
+	 "     if (arch.registers ().find (r.name) != r):" \
+	 "       raise gdb.GdbError (\"object miss-match\")" \
+	 "end" ] \
+    "build check_obj function" 0
+gdb_py_test_silent_cmd \
+    "python check_regs (arch, arch.registers (\"general\"))" \
+    "ensure find gets expected descriptors" 1
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-as-string.c ./gdb/testsuite/gdb.python/py-as-string.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-as-string.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-as-string.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-as-string.exp ./gdb/testsuite/gdb.python/py-as-string.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-as-string.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-as-string.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-bad-printers.c ./gdb/testsuite/gdb.python/py-bad-printers.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-bad-printers.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-bad-printers.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-bad-printers.exp ./gdb/testsuite/gdb.python/py-bad-printers.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-bad-printers.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-bad-printers.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-bad-printers.py ./gdb/testsuite/gdb.python/py-bad-printers.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-bad-printers.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-bad-printers.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-block.c ./gdb/testsuite/gdb.python/py-block.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-block.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-block.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-block.exp ./gdb/testsuite/gdb.python/py-block.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-block.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-block.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-breakpoint.c ./gdb/testsuite/gdb.python/py-breakpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-breakpoint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-breakpoint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-breakpoint-create-fail.c ./gdb/testsuite/gdb.python/py-breakpoint-create-fail.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-breakpoint-create-fail.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-breakpoint-create-fail.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-breakpoint-create-fail.exp ./gdb/testsuite/gdb.python/py-breakpoint-create-fail.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-breakpoint-create-fail.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-breakpoint-create-fail.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-breakpoint-create-fail.py ./gdb/testsuite/gdb.python/py-breakpoint-create-fail.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-breakpoint-create-fail.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-breakpoint-create-fail.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-breakpoint.exp ./gdb/testsuite/gdb.python/py-breakpoint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-breakpoint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-breakpoint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -320,7 +320,7 @@ proc_with_prefix test_bkpt_eval_funcs {
     }
     delete_breakpoints
 
-    gdb_py_test_multiple "Sub-class a breakpoint" \
+    gdb_test_multiline "Sub-class a breakpoint" \
 	"python" "" \
 	"class bp_eval (gdb.Breakpoint):" "" \
 	"   inf_i = 0" "" \
@@ -333,7 +333,7 @@ proc_with_prefix test_bkpt_eval_funcs {
 	"      return False" "" \
 	"end" ""
 
-    gdb_py_test_multiple "Sub-class a second breakpoint" \
+    gdb_test_multiline "Sub-class a second breakpoint" \
 	"python" "" \
 	"class bp_also_eval (gdb.Breakpoint):" "" \
 	"   count = 0" "" \
@@ -344,7 +344,7 @@ proc_with_prefix test_bkpt_eval_funcs {
 	"      return False" "" \
 	"end" ""
 
-    gdb_py_test_multiple "Sub-class a third breakpoint" \
+    gdb_test_multiline "Sub-class a third breakpoint" \
 	"python" "" \
 	"class basic (gdb.Breakpoint):" "" \
 	"   count = 0" "" \
@@ -381,7 +381,7 @@ proc_with_prefix test_bkpt_eval_funcs {
 	"Set breakpoint" 0
     gdb_py_test_silent_cmd "python eval_bp2.condition = \"1==1\"" \
 	"Set a condition" 0
-    gdb_py_test_multiple "Construct an eval function" \
+    gdb_test_multiline "Construct an eval function" \
 	"python" "" \
 	"def stop_func ():" "" \
 	"   return True" "" \
@@ -402,7 +402,7 @@ proc_with_prefix test_bkpt_eval_funcs {
     gdb_test "python print (check_eval.count)" "1" \
 	"Test that evaluate function is run when location also has normal bp"
 
-    gdb_py_test_multiple "Sub-class a watchpoint" \
+    gdb_test_multiline "Sub-class a watchpoint" \
 	"python" "" \
 	"class wp_eval (gdb.Breakpoint):" "" \
 	"   def stop (self):" "" \
@@ -434,7 +434,7 @@ proc_with_prefix test_bkpt_temporary { }
     }
     delete_breakpoints
 
-    gdb_py_test_multiple "Sub-class and check temporary breakpoint" \
+    gdb_test_multiline "Sub-class and check temporary breakpoint" \
 	"python" "" \
 	"class temp_bp (gdb.Breakpoint):" "" \
 	"   count = 0" "" \
@@ -521,7 +521,7 @@ proc_with_prefix test_bkpt_events {} {
 
     clean_restart ${testfile}
 
-    gdb_py_test_multiple "Create event handler" \
+    gdb_test_multiline "Create event handler" \
 	"python" "" \
 	"def note_event(arg):" "" \
 	"  global last_bp_event" "" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-caller-is.c ./gdb/testsuite/gdb.python/py-caller-is.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-caller-is.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-caller-is.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-caller-is.exp ./gdb/testsuite/gdb.python/py-caller-is.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-caller-is.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-caller-is.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-cmd.c ./gdb/testsuite/gdb.python/py-cmd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-cmd.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-cmd.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-cmd.exp ./gdb/testsuite/gdb.python/py-cmd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-cmd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-cmd.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
@@ -34,7 +34,7 @@ if ![runto_main] then {
 
 # Test a simple command.
 
-gdb_py_test_multiple "input simple command" \
+gdb_test_multiline "input simple command" \
   "python" "" \
   "class test_cmd (gdb.Command):" "" \
   "  def __init__ (self):" "" \
@@ -48,7 +48,7 @@ gdb_test "test_cmd ugh" "test_cmd output
 
 # Test a prefix command, and a subcommand within it.
 
-gdb_py_test_multiple "input prefix command" \
+gdb_test_multiline "input prefix command" \
   "python" "" \
   "class prefix_cmd (gdb.Command):" "" \
   "  def __init__ (self):" "" \
@@ -60,7 +60,7 @@ gdb_py_test_multiple "input prefix comma
 
 gdb_test "prefix_cmd ugh" "prefix_cmd output, arg = ugh" "call prefix command"
 
-gdb_py_test_multiple "input subcommand" \
+gdb_test_multiline "input subcommand" \
   "python" "" \
   "class subcmd (gdb.Command):" "" \
   "  def __init__ (self):" "" \
@@ -74,7 +74,7 @@ gdb_test "prefix_cmd subcmd ugh" "subcmd
 
 # Test prefix command using keyword arguments.
 
-gdb_py_test_multiple "input prefix command, keyword arguments" \
+gdb_test_multiline "input prefix command, keyword arguments" \
   "python" "" \
   "class prefix_cmd2 (gdb.Command):" "" \
   "  def __init__ (self):" "" \
@@ -86,7 +86,7 @@ gdb_py_test_multiple "input prefix comma
 
 gdb_test "prefix_cmd2 argh" "prefix_cmd2 output, arg = argh" "call prefix command, keyword arguments"
 
-gdb_py_test_multiple "input subcommand under prefix_cmd2" \
+gdb_test_multiline "input subcommand under prefix_cmd2" \
   "python" "" \
   "class subcmd (gdb.Command):" "" \
   "  def __init__ (self):" "" \
@@ -100,7 +100,7 @@ gdb_test "prefix_cmd2 subcmd ugh" "subcm
 
 # Test a subcommand in an existing GDB prefix.
 
-gdb_py_test_multiple "input new subcommand" \
+gdb_test_multiline "input new subcommand" \
   "python" "" \
   "class newsubcmd (gdb.Command):" "" \
   "  def __init__ (self):" "" \
@@ -114,7 +114,7 @@ gdb_test "info newsubcmd ugh" "newsubcmd
 
 # Test a command that throws gdb.GdbError.
 
-gdb_py_test_multiple "input command to throw error" \
+gdb_test_multiline "input command to throw error" \
   "python" "" \
   "class test_error_cmd (gdb.Command):" "" \
   "  def __init__ (self):" "" \
@@ -145,7 +145,7 @@ gdb_test "python print (gdb.string_to_ar
     "string_to_argv ('1\\ 2 3')"
 
 # Test user-defined python commands.
-gdb_py_test_multiple "input simple user-defined command" \
+gdb_test_multiline "input simple user-defined command" \
   "python" "" \
   "class test_help (gdb.Command):" "" \
   "  \"\"\"Docstring\"\"\"" "" \
@@ -166,7 +166,7 @@ gdb_test "show user test_help" "Not a us
     "don't show user-defined python command in `show user command`"
 
 # Test expression completion on fields
-gdb_py_test_multiple "expression completion command" \
+gdb_test_multiline "expression completion command" \
   "python" "" \
   "class expr_test (gdb.Command):" "" \
   "  def __init__ (self):" "" \
@@ -266,7 +266,7 @@ if { [readline_is_used] } {
 # Test that interrupting pagination throws a gdb quit.
 gdb_test_no_output "set height 10"
 
-gdb_py_test_multiple "input multi-line-output command" \
+gdb_test_multiline "input multi-line-output command" \
   "python" "" \
   "class test_mline (gdb.Command):" "" \
   "  \"\"\"Docstring\"\"\"" "" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-completion.exp ./gdb/testsuite/gdb.python/py-completion.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-completion.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-completion.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-completion.py ./gdb/testsuite/gdb.python/py-completion.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-completion.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-completion.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-error.exp ./gdb/testsuite/gdb.python/py-error.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-error.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-error.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-error.py ./gdb/testsuite/gdb.python/py-error.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-error.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-error.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-events.c ./gdb/testsuite/gdb.python/py-events.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-events.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-events.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-events.exp ./gdb/testsuite/gdb.python/py-events.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-events.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-events.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -213,13 +213,13 @@ dir ok: True.*" "Inferior 2 terminated."
 
 
 # Test before_prompt event.
-gdb_py_test_multiple "define new user command" \
+gdb_test_multiline "define new user command" \
     "define xxz" "End with a line saying just .end.." \
     "set variable \$x = 72" "" \
     "set variable \$y = 93" "" \
     "end" ""
 
-gdb_py_test_multiple "add before_prompt listener" \
+gdb_test_multiline "add before_prompt listener" \
     "python" "" \
     "count = 0" "" \
     "def listener():" "" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-events.py ./gdb/testsuite/gdb.python/py-events.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-events.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-events.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-events-shlib.c ./gdb/testsuite/gdb.python/py-events-shlib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-events-shlib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-events-shlib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-evsignal.exp ./gdb/testsuite/gdb.python/py-evsignal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-evsignal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-evsignal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-evthreads.c ./gdb/testsuite/gdb.python/py-evthreads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-evthreads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-evthreads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-evthreads.exp ./gdb/testsuite/gdb.python/py-evthreads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-evthreads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-evthreads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-explore.c ./gdb/testsuite/gdb.python/py-explore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-explore.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-explore.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-explore.cc ./gdb/testsuite/gdb.python/py-explore.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-explore.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-explore.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-explore-cc.exp ./gdb/testsuite/gdb.python/py-explore-cc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-explore-cc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-explore-cc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-explore.exp ./gdb/testsuite/gdb.python/py-explore.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-explore.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-explore.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint2.cc ./gdb/testsuite/gdb.python/py-finish-breakpoint2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-finish-breakpoint2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint2.exp ./gdb/testsuite/gdb.python/py-finish-breakpoint2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-finish-breakpoint2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint2.py ./gdb/testsuite/gdb.python/py-finish-breakpoint2.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint2.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-finish-breakpoint2.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint.c ./gdb/testsuite/gdb.python/py-finish-breakpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-finish-breakpoint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
@@ -56,6 +56,7 @@ int
 call_longjmp (jmp_buf *buf)
 {
   call_longjmp_1 (buf);
+  return 0;
 }
 
 void
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint.exp ./gdb/testsuite/gdb.python/py-finish-breakpoint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-finish-breakpoint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint.py ./gdb/testsuite/gdb.python/py-finish-breakpoint.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-finish-breakpoint.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-finish-breakpoint.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-format-string.c ./gdb/testsuite/gdb.python/py-format-string.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-format-string.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-format-string.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-format-string.exp ./gdb/testsuite/gdb.python/py-format-string.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-format-string.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-format-string.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
@@ -24,6 +24,11 @@ if [get_compiler_info c++] {
     return -1
 }
 
+# Skip all tests if Python scripting is not enabled.
+gdb_exit
+gdb_start
+if { [skip_python_tests] } { continue }
+
 # Build inferior to language specification.
 proc build_inferior {exefile lang} {
   global srcdir subdir srcfile testfile hex
@@ -45,9 +50,6 @@ proc prepare_gdb {exefile} {
   gdb_reinitialize_dir $srcdir/$subdir
   gdb_load ${exefile}
 
-  # Skip all tests if Python scripting is not enabled.
-  if { [skip_python_tests] } { continue }
-
   if ![runto_main] then {
       perror "couldn't run to breakpoint"
       return
@@ -291,9 +293,9 @@ proc test_raw {} {
 proc test_pretty_arrays {} {
   global current_lang
 
-  set an_array_pretty "  \\{2,\[\r\n\]+  3,\[\r\n\]+  5\\}"
+  set an_array_pretty "\\{\[\r\n\]+  2,\[\r\n\]+  3,\[\r\n\]+  5\[\r\n\]+\\}"
   set an_array_with_repetition_pretty \
-    "  \\{1,\[\r\n\]+  3 <repeats 12 times>,\[\r\n\]+  5,\[\r\n\]+  5,\[\r\n\]+  5\\}"
+    "\\{\[\r\n\]+  1,\[\r\n\]+  3 <repeats 12 times>,\[\r\n\]+  5,\[\r\n\]+  5,\[\r\n\]+  5\[\r\n\]+\\}"
 
   check_var_with_bool_opt "pretty_arrays" "a_point_t"
   check_var_with_bool_opt "pretty_arrays" "a_point_t_pointer"
@@ -886,7 +888,7 @@ proc test_mixed {} {
 
   check_format_string "an_array" \
     "array_indexes=True, pretty_arrays=True" \
-    "  \\{\\\[0\\\] = 2,\[\r\n\]+  \\\[1\\\] = 3,\[\r\n\]+  \\\[2\\\] = 5\\}"
+    "\\{\[\r\n\]+  \\\[0\\\] = 2,\[\r\n\]+  \\\[1\\\] = 3,\[\r\n\]+  \\\[2\\\] = 5\[\r\n\]+\\}"
 
   check_format_string "a_struct_with_union" \
     "pretty_structs=True, unions=False" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-format-string.py ./gdb/testsuite/gdb.python/py-format-string.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-format-string.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-format-string.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame-args.c ./gdb/testsuite/gdb.python/py-frame-args.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame-args.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-frame-args.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame-args.exp ./gdb/testsuite/gdb.python/py-frame-args.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame-args.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-frame-args.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame-args.py ./gdb/testsuite/gdb.python/py-frame-args.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame-args.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-frame-args.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame.exp ./gdb/testsuite/gdb.python/py-frame.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-frame.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter.c ./gdb/testsuite/gdb.python/py-framefilter.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-framefilter.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter.exp ./gdb/testsuite/gdb.python/py-framefilter.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-framefilter.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-gdb.py.in ./gdb/testsuite/gdb.python/py-framefilter-gdb.py.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-gdb.py.in	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-framefilter-gdb.py.in	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp ./gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-invalidarg-gdb.py.in ./gdb/testsuite/gdb.python/py-framefilter-invalidarg-gdb.py.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-invalidarg-gdb.py.in	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-framefilter-invalidarg-gdb.py.in	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-invalidarg.py ./gdb/testsuite/gdb.python/py-framefilter-invalidarg.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-invalidarg.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-framefilter-invalidarg.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-mi.c ./gdb/testsuite/gdb.python/py-framefilter-mi.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-mi.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-framefilter-mi.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-mi.exp ./gdb/testsuite/gdb.python/py-framefilter-mi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter-mi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-framefilter-mi.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter.py ./gdb/testsuite/gdb.python/py-framefilter.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-framefilter.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-framefilter.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame-inline.c ./gdb/testsuite/gdb.python/py-frame-inline.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame-inline.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-frame-inline.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame-inline.exp ./gdb/testsuite/gdb.python/py-frame-inline.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-frame-inline.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-frame-inline.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-function.exp ./gdb/testsuite/gdb.python/py-function.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-function.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-function.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
@@ -27,7 +27,7 @@ gdb_reinitialize_dir $srcdir/$subdir
 # Skip all tests if Python scripting is not enabled.
 if { [skip_python_tests] } { continue }
 
-gdb_py_test_multiple "input convenience function" \
+gdb_test_multiline "input convenience function" \
   "python" "" \
   "class test_func (gdb.Function):" "" \
   "  def __init__ (self):" "" \
@@ -41,7 +41,7 @@ gdb_test "print \$test_func (\"ugh\")" "
 
 # Test returning a gdb.Value from the function. This segfaulted GDB at one point.
 
-gdb_py_test_multiple "input value-returning convenience function" \
+gdb_test_multiline "input value-returning convenience function" \
   "python" "" \
   "class Double (gdb.Function):" "" \
   "  def __init__ (self):" "" \
@@ -59,7 +59,7 @@ foreach lang [concat [gdb_supported_lang
     gdb_test "print \$double (1)" "= 2" "call value-returning function, language = $lang"
 }
 
-gdb_py_test_multiple "input int-returning function" \
+gdb_test_multiline "input int-returning function" \
   "python" "" \
   "class Yes(gdb.Function):" "" \
   "    def __init__(self):" "" \
@@ -72,7 +72,7 @@ gdb_py_test_multiple "input int-returnin
 gdb_test "print \$yes() && \$yes()" " = 1" "call yes with &&"
 gdb_test "print \$yes() || \$yes()" " = 1" "call yes with ||"
 
-gdb_py_test_multiple "Test GDBError" \
+gdb_test_multiline "Test GDBError" \
   "python" "" \
   "class GDBError(gdb.Function):" "" \
   "    def __init__(self):" "" \
@@ -85,7 +85,7 @@ gdb_py_test_multiple "Test GDBError" \
 gdb_test "print \$gdberror()" "This is a GdbError.*" \
     "Test GdbError.  There should not be a stack trace"
 
-gdb_py_test_multiple "Test Normal Error" \
+gdb_test_multiline "Test Normal Error" \
   "python" "" \
   "class NormalError(gdb.Function):" "" \
   "    def __init__(self):" "" \
@@ -99,7 +99,7 @@ gdb_test_no_output "set python print-sta
 gdb_test "print \$normalerror()" "Traceback.*File.*line 5.*in invoke.*RuntimeError.*This is a Normal Error.*" \
     "Test a Runtime error.  There should be a stack trace."
 
-gdb_py_test_multiple "input command-calling function" \
+gdb_test_multiline "input command-calling function" \
   "python" "" \
   "class CallCommand(gdb.Function):" "" \
   "    def __init__(self):" "" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-inferior.exp ./gdb/testsuite/gdb.python/py-inferior.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-inferior.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-inferior.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
@@ -218,7 +218,7 @@ with_test_prefix "is_valid" {
     gdb_test "python print (inf_list\[0\].is_valid())" "True" \
 	"check inferior validity 1"
 
-    gdb_py_test_multiple "install new inferior event handler" \
+    gdb_test_multiline "install new inferior event handler" \
 	"python" "" \
 	"my_inferior_count = 1" "" \
 	"def new_inf_handler(evt):" "" \
@@ -227,7 +227,7 @@ with_test_prefix "is_valid" {
 	"    my_inferior_count = my_inferior_count + 1" "" \
 	"gdb.events.new_inferior.connect(new_inf_handler)" "" \
 	"end" ""
-    gdb_py_test_multiple "install inferior deleted event handler" \
+    gdb_test_multiline "install inferior deleted event handler" \
 	"python" "" \
 	"def del_inf_handler(evt):" "" \
 	"  global my_inferior_count" "" \
@@ -279,7 +279,7 @@ with_test_prefix "selected_inferior" {
     gdb_test "inferior 1" ".*" "switch to first inferior"
     gdb_test "py print (gdb.selected_inferior().num)" "1" "first inferior selected"
 
-    gdb_test "add-inferior" "Added inferior 3" "create new inferior"
+    gdb_test "add-inferior" "Added inferior 3 on connection .*" "create new inferior"
     gdb_test "inferior 3" ".*" "switch to third inferior"
     gdb_test "py print (gdb.selected_inferior().num)" "3" "third inferior selected"
     gdb_test "inferior 1" ".*" "switch back to first inferior"
@@ -288,7 +288,7 @@ with_test_prefix "selected_inferior" {
 
 # Test repr()/str()
 with_test_prefix "__repr__" {
-    gdb_test "add-inferior" "Added inferior 4" "add inferior 4"
+    gdb_test "add-inferior" "Added inferior 4 on connection .*" "add inferior 4"
     gdb_py_test_silent_cmd "python infs = gdb.inferiors()" "get inferior list" 1
     gdb_test "python print (infs\[0\])" "<gdb.Inferior num=1, pid=$decimal>"
     gdb_test "python print (infs)" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-infthread.exp ./gdb/testsuite/gdb.python/py-infthread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-infthread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-infthread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
@@ -30,7 +30,7 @@ clean_restart ${testfile}
 # Skip all tests if Python scripting is not enabled.
 if { [skip_python_tests] } { continue }
 
-gdb_py_test_multiple "install new_thread event handler" \
+gdb_test_multiline "install new_thread event handler" \
     "python" "" \
     "seen_a_thread = False" "" \
     "def thread_handler(evt):" "" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-lazy-string.c ./gdb/testsuite/gdb.python/py-lazy-string.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-lazy-string.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-lazy-string.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-lazy-string.exp ./gdb/testsuite/gdb.python/py-lazy-string.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-lazy-string.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-lazy-string.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-linetable.c ./gdb/testsuite/gdb.python/py-linetable.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-linetable.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-linetable.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-linetable.exp ./gdb/testsuite/gdb.python/py-linetable.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-linetable.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-linetable.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -40,7 +40,7 @@ if { [skip_python_tests] } { continue }
 gdb_py_test_silent_cmd "python lt = gdb.selected_frame().find_sal().symtab.linetable()" \
     "get instruction" 0
 
-gdb_py_test_multiple "input simple command" \
+gdb_test_multiline "input simple command" \
   "python" "" \
   "def list_lines():" "" \
   "   for l in lt:" "" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-linetable.S ./gdb/testsuite/gdb.python/py-linetable.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-linetable.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-linetable.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2013-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-lookup-type.exp ./gdb/testsuite/gdb.python/py-lookup-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-lookup-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-lookup-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-events.c ./gdb/testsuite/gdb.python/py-mi-events.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-events.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-mi-events.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-events.exp ./gdb/testsuite/gdb.python/py-mi-events.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-events.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-mi-events.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-events-gdb.py ./gdb/testsuite/gdb.python/py-mi-events-gdb.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-events-gdb.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-mi-events-gdb.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi.exp ./gdb/testsuite/gdb.python/py-mi.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-mi.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-objfile.c ./gdb/testsuite/gdb.python/py-mi-objfile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-objfile.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-mi-objfile.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-objfile.exp ./gdb/testsuite/gdb.python/py-mi-objfile.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-objfile.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-mi-objfile.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-objfile-gdb.py ./gdb/testsuite/gdb.python/py-mi-objfile-gdb.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-objfile-gdb.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-mi-objfile-gdb.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-var-info-path-expression.c ./gdb/testsuite/gdb.python/py-mi-var-info-path-expression.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-var-info-path-expression.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-mi-var-info-path-expression.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-var-info-path-expression.exp ./gdb/testsuite/gdb.python/py-mi-var-info-path-expression.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-var-info-path-expression.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-mi-var-info-path-expression.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-var-info-path-expression.py ./gdb/testsuite/gdb.python/py-mi-var-info-path-expression.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-mi-var-info-path-expression.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-mi-var-info-path-expression.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-nested-maps.c ./gdb/testsuite/gdb.python/py-nested-maps.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-nested-maps.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-nested-maps.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
@@ -62,6 +62,7 @@ create_map (const char *name)
   m->keys = NULL;
   m->values = NULL;
   m->show_header = 0;
+  return m;
 }
 
 void
@@ -85,6 +86,7 @@ create_map_map (void)
   mm->length = 0;
   mm->values = NULL;
   mm->show_header = 0;
+  return mm;
 }
 
 void
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-nested-maps.exp ./gdb/testsuite/gdb.python/py-nested-maps.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-nested-maps.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-nested-maps.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-nested-maps.py ./gdb/testsuite/gdb.python/py-nested-maps.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-nested-maps.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-nested-maps.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-objfile.c ./gdb/testsuite/gdb.python/py-objfile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-objfile.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-objfile.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-objfile.exp ./gdb/testsuite/gdb.python/py-objfile.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-objfile.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-objfile.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-objfile-script.c ./gdb/testsuite/gdb.python/py-objfile-script.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-objfile-script.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-objfile-script.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-objfile-script.exp ./gdb/testsuite/gdb.python/py-objfile-script.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-objfile-script.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-objfile-script.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-objfile-script-gdb.py ./gdb/testsuite/gdb.python/py-objfile-script-gdb.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-objfile-script-gdb.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-objfile-script-gdb.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-parameter.exp ./gdb/testsuite/gdb.python/py-parameter.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-parameter.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-parameter.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -39,7 +39,7 @@ gdb_test "python print (gdb.parameter ('
 
 # Test a simple boolean parameter.
 with_test_prefix "boolean parameter" {
-    gdb_py_test_multiple "Simple gdb booleanparameter" \
+    gdb_test_multiline "Simple gdb booleanparameter" \
 	"python" "" \
 	"class TestParam (gdb.Parameter):" "" \
 	"   \"\"\"When enabled, test param does something useful. When disabled, does nothing.\"\"\"" "" \
@@ -79,7 +79,7 @@ with_test_prefix "boolean parameter" {
 
 # Test an enum parameter.
 with_test_prefix "enum parameter" {
-    gdb_py_test_multiple "enum gdb parameter" \
+    gdb_test_multiline "enum gdb parameter" \
 	"python" "" \
 	"class TestEnumParam (gdb.Parameter):" "" \
 	"   \"\"\"When set, test param does something useful. When disabled, does nothing.\"\"\"" "" \
@@ -112,7 +112,7 @@ with_test_prefix "enum parameter" {
 
 # Test a file parameter.
 with_test_prefix "file parameter" {
-    gdb_py_test_multiple "file gdb parameter" \
+    gdb_test_multiline "file gdb parameter" \
 	"python" "" \
 	"class TestFileParam (gdb.Parameter):" "" \
 	"   \"\"\"When set, test param does something useful. When disabled, does nothing.\"\"\"" "" \
@@ -144,7 +144,7 @@ with_test_prefix "file parameter" {
 
 # Test a parameter that is not documented.
 with_test_prefix "undocumented parameter" {
-    gdb_py_test_multiple "Simple gdb booleanparameter" \
+    gdb_test_multiline "Simple gdb booleanparameter" \
 	"python" "" \
 	"class TestUndocParam (gdb.Parameter):" "" \
 	"   def get_show_string (self, pvalue):" ""\
@@ -179,7 +179,7 @@ with_test_prefix "undocumented parameter
 
 # Test a parameter that is not documented in any way..
 with_test_prefix "really undocumented parameter" {
-    gdb_py_test_multiple "Simple gdb booleanparameter" \
+    gdb_test_multiline "Simple gdb booleanparameter" \
 	"python" "" \
 	"class TestNodocParam (gdb.Parameter):" "" \
 	"   def __init__ (self, name):" "" \
@@ -207,7 +207,7 @@ with_test_prefix "really undocumented pa
 
 # Test deprecated API. Do not use in your own implementations.
 with_test_prefix "deprecated API parameter" {
-    gdb_py_test_multiple "Simple gdb booleanparameter" \
+    gdb_test_multiline "Simple gdb booleanparameter" \
 	"python" "" \
 	"class TestParam (gdb.Parameter):" "" \
 	"   \"\"\"When enabled, test param does something useful. When disabled, does nothing.\"\"\"" "" \
@@ -238,7 +238,7 @@ with_test_prefix "deprecated API paramet
 }
 
 foreach kind {PARAM_ZUINTEGER PARAM_ZUINTEGER_UNLIMITED} {
-    gdb_py_test_multiple "Simple gdb $kind" \
+    gdb_test_multiline "Simple gdb $kind" \
 	"python" "" \
 	"class TestNodocParam (gdb.Parameter):" "" \
 	"   def __init__ (self, name):" "" \
@@ -261,7 +261,7 @@ foreach kind {PARAM_ZUINTEGER PARAM_ZUIN
     }
 }
 
-gdb_py_test_multiple "Throwing gdb parameter" \
+gdb_test_multiline "Throwing gdb parameter" \
     "python" "" \
     "class TestThrowParam (gdb.Parameter):" "" \
     "   def __init__ (self, name):" "" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-integral.c ./gdb/testsuite/gdb.python/py-pp-integral.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-integral.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-integral.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
@@ -20,7 +20,7 @@ typedef long time_t;
 static void
 tick_tock (time_t *t)
 {
-  *t++;
+  (void) *t++;
 }
 
 int
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-integral.exp ./gdb/testsuite/gdb.python/py-pp-integral.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-integral.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-integral.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-integral.py ./gdb/testsuite/gdb.python/py-pp-integral.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-integral.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-integral.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-maint.c ./gdb/testsuite/gdb.python/py-pp-maint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-maint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-maint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-maint.exp ./gdb/testsuite/gdb.python/py-pp-maint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-maint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-maint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-maint.py ./gdb/testsuite/gdb.python/py-pp-maint.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-maint.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-maint.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-registration.c ./gdb/testsuite/gdb.python/py-pp-registration.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-registration.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-registration.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-registration.exp ./gdb/testsuite/gdb.python/py-pp-registration.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-registration.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-registration.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-registration.py ./gdb/testsuite/gdb.python/py-pp-registration.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-registration.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-registration.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-re-notag.c ./gdb/testsuite/gdb.python/py-pp-re-notag.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-re-notag.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-re-notag.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
@@ -20,7 +20,7 @@ typedef long time_t;
 static void
 tick_tock (time_t *t)
 {
-  *t++;
+  (void) *t++;
 }
 
 int
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-re-notag.exp ./gdb/testsuite/gdb.python/py-pp-re-notag.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-re-notag.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-re-notag.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-re-notag.py ./gdb/testsuite/gdb.python/py-pp-re-notag.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-pp-re-notag.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-pp-re-notag.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-prettyprint.c ./gdb/testsuite/gdb.python/py-prettyprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-prettyprint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-prettyprint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-prettyprint.exp ./gdb/testsuite/gdb.python/py-prettyprint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-prettyprint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-prettyprint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-prettyprint.py ./gdb/testsuite/gdb.python/py-prettyprint.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-prettyprint.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-prettyprint.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-progspace.c ./gdb/testsuite/gdb.python/py-progspace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-progspace.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-progspace.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-progspace.exp ./gdb/testsuite/gdb.python/py-progspace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-progspace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-progspace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-prompt.c ./gdb/testsuite/gdb.python/py-prompt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-prompt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-prompt.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-prompt.exp ./gdb/testsuite/gdb.python/py-prompt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-prompt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-prompt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-rbreak.c ./gdb/testsuite/gdb.python/py-rbreak.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-rbreak.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-rbreak.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-rbreak.exp ./gdb/testsuite/gdb.python/py-rbreak.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-rbreak.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-rbreak.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-rbreak-func2.c ./gdb/testsuite/gdb.python/py-rbreak-func2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-rbreak-func2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-rbreak-func2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-btrace.c ./gdb/testsuite/gdb.python/py-record-btrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-btrace.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-record-btrace.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-btrace.exp ./gdb/testsuite/gdb.python/py-record-btrace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-btrace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-record-btrace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-btrace-threads.c ./gdb/testsuite/gdb.python/py-record-btrace-threads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-btrace-threads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-record-btrace-threads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-btrace-threads.exp ./gdb/testsuite/gdb.python/py-record-btrace-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-btrace-threads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-record-btrace-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-full.c ./gdb/testsuite/gdb.python/py-record-full.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-full.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-record-full.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-full.exp ./gdb/testsuite/gdb.python/py-record-full.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-record-full.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-record-full.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-recurse-unwind.c ./gdb/testsuite/gdb.python/py-recurse-unwind.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-recurse-unwind.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-recurse-unwind.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-recurse-unwind.exp ./gdb/testsuite/gdb.python/py-recurse-unwind.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-recurse-unwind.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-recurse-unwind.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-recurse-unwind.py ./gdb/testsuite/gdb.python/py-recurse-unwind.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-recurse-unwind.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-recurse-unwind.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.cc ./gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.exp ./gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-section-script.c ./gdb/testsuite/gdb.python/py-section-script.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-section-script.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-section-script.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-section-script.exp ./gdb/testsuite/gdb.python/py-section-script.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-section-script.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-section-script.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-section-script.py ./gdb/testsuite/gdb.python/py-section-script.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-section-script.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-section-script.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-shared.c ./gdb/testsuite/gdb.python/py-shared.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-shared.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-shared.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-shared.exp ./gdb/testsuite/gdb.python/py-shared.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-shared.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-shared.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-shared-sl.c ./gdb/testsuite/gdb.python/py-shared-sl.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-shared-sl.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-shared-sl.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-strfns.c ./gdb/testsuite/gdb.python/py-strfns.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-strfns.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-strfns.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-strfns.exp ./gdb/testsuite/gdb.python/py-strfns.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-strfns.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-strfns.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-symbol-2.c ./gdb/testsuite/gdb.python/py-symbol-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-symbol-2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-symbol-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-symbol.c ./gdb/testsuite/gdb.python/py-symbol.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-symbol.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-symbol.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-symbol.exp ./gdb/testsuite/gdb.python/py-symbol.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-symbol.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-symbol.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -211,7 +211,7 @@ gdb_test "python print (cplusfunc.is_fun
 
 gdb_test "python print (cplusfunc.name)" "SimpleClass::valueofi().*" "test method.name"
 gdb_test "python print (cplusfunc.print_name)" "SimpleClass::valueofi().*" "test method.print_name"
-gdb_test "python print (cplusfunc.linkage_name)" "SimpleClass::valueofi().*" "test method.linkage_name"
+gdb_test "python print (cplusfunc.linkage_name)" "_ZN11SimpleClass8valueofiEv.*" "test method.linkage_name"
 gdb_test "python print (cplusfunc.addr_class == gdb.SYMBOL_LOC_BLOCK)" "True" "test method.addr_class"
 
 # Test is_valid when the objfile is unloaded.  This must be the last
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-symtab.exp ./gdb/testsuite/gdb.python/py-symtab.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-symtab.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-symtab.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
@@ -32,6 +32,8 @@ if ![runto_main] then {
     return 0
 }
 
+set debug_types [debug_types]
+
 global hex decimal
 
 # Setup and get the symbol table.
@@ -75,7 +77,20 @@ gdb_test "python print (\"func\" in glob
 gdb_test "python print (\"main\" in global_symbols)" "True" "test main in global symbols"
 gdb_test "python print (\"int\" in static_symbols)" "True" "test int in static symbols"
 gdb_test "python print (\"char\" in static_symbols)" "True" "test char in static symbols"
-gdb_test "python print (\"simple_struct\" in static_symbols)" "True" "test simple_struct in static symbols"
+gdb_test_multiple "python print (\"simple_struct\" in static_symbols)" \
+    "test simple_struct in static symbols" {
+	-re -wrap "True" {
+	    pass $gdb_test_name
+	}
+	-re -wrap "False" {
+	    if { $debug_types } {
+		# Xfail for PR gcc/90232.
+		xfail $gdb_test_name
+	    } else {
+		fail $gdb_test_name
+	    }
+	}
+    }
 
 # Test is_valid when the objfile is unloaded.  This must be the last
 # test as it unloads the object file in GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-sync-interp.c ./gdb/testsuite/gdb.python/py-sync-interp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-sync-interp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-sync-interp.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-sync-interp.exp ./gdb/testsuite/gdb.python/py-sync-interp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-sync-interp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-sync-interp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-template.cc ./gdb/testsuite/gdb.python/py-template.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-template.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-template.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-template.exp ./gdb/testsuite/gdb.python/py-template.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-template.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-template.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/python-1.c ./gdb/testsuite/gdb.python/python-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/python-1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/python-1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/python.c ./gdb/testsuite/gdb.python/python.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/python.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/python.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/python.exp ./gdb/testsuite/gdb.python/python.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/python.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/python.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
@@ -46,7 +46,7 @@ gdb_test_multiple "python print (23)" "v
 	  "source source2.py when python disabled"
 
       # Verify multi-line python commands cause an error.
-      gdb_py_test_multiple "multi-line python command" \
+      gdb_test_multiline "multi-line python command" \
 	  "python" "" \
 	  "print (23)" "" \
 	  "end" "not supported.*"
@@ -56,7 +56,7 @@ gdb_test_multiple "python print (23)" "v
     -re "$gdb_prompt $"	{}
 }
 
-gdb_py_test_multiple "multi-line python command" \
+gdb_test_multiline "multi-line python command" \
   "python" "" \
   "print (23)" "" \
   "end" "23"
@@ -77,7 +77,7 @@ with_test_prefix "python interactive hel
     }
 }
 
-gdb_py_test_multiple "show python command" \
+gdb_test_multiline "show python command" \
   "define zzq" "Type commands for definition of .* just \"end\"\\.*" \
   "python" "" \
   "print (23)" "" \
@@ -85,7 +85,7 @@ gdb_py_test_multiple "show python comman
   "end" "" \
   "show user zzq" "User command \"zzq\":.*  python.*print \\(23\\).*  end"
 
-gdb_py_test_multiple "indented multi-line python command" \
+gdb_test_multiline "indented multi-line python command" \
   "python" "" \
   "def foo ():" "" \
   "  print ('hello, world!')" "" \
@@ -124,7 +124,7 @@ gdb_test "python gdb.execute('echo 2\\ne
 gdb_test " " "23" "gdb.execute does not affect repeat history"
 
 # Test post_event.
-gdb_py_test_multiple "post event insertion" \
+gdb_test_multiline "post event insertion" \
   "python" "" \
   "someVal = 0" "" \
   "class Foo(object):" "" \
@@ -187,14 +187,14 @@ gdb_test_no_output "set height 0"
 
 gdb_test_no_output "python a = gdb.execute('help', to_string=True)" "collect help from uiout"
 
-gdb_test "python print (a)" ".*aliases -- Aliases of other commands.*" "verify help to uiout"
+gdb_test "python print (a)" ".*aliases -- User-defined aliases of other commands.*" "verify help to uiout"
 
 # Test PR 12212, using InfThread.selected_thread() when no inferior is
 # loaded.
 gdb_py_test_silent_cmd "python nothread = gdb.selected_thread()" "Attempt to aquire thread with no inferior" 1
 gdb_test "python print (nothread == None)" "True" "ensure that no threads are returned"
 
-gdb_py_test_multiple "register atexit function" \
+gdb_test_multiline "register atexit function" \
     "python" "" \
     "import atexit" "" \
     "def printit(arg):" "" \
@@ -229,31 +229,39 @@ runto $lineno
 gdb_test "python gdb.decode_line(\"main.c:43\")" \
     "gdb.error: No source file named main.c.*" "test decode_line no source named main"
 
-gdb_py_test_silent_cmd "python symtab = gdb.decode_line()" "test decode_line current location" 1
-gdb_test "python print (len(symtab))" "2" "test decode_line current location"
-gdb_test "python print (symtab\[0\])" "None" "test decode_line expression parse"
-gdb_test "python print (len(symtab\[1\]))" "1" "test decode_line current location"
+with_test_prefix "test decode_line current location" {
+    gdb_py_test_silent_cmd "python symtab = gdb.decode_line()" "decode current line" 1
+    gdb_test "python print (len(symtab))" "2" "length of result"
+    gdb_test "python print (symtab\[0\])" "None" "no unparsed text"
+    gdb_test "python print (len(symtab\[1\]))" "1" "length of result locations"
+}
+
+# Test that decode_line with an empty string argument does not crash.
+gdb_py_test_silent_cmd "python symtab2 = gdb.decode_line('')" \
+    "test decode_line with empty string" 1
 
 if { [is_remote host] } {
     set python_c [string_to_regexp "python.c"]
 } else {
     set python_c [string_to_regexp "gdb.python/python.c"]
 }
-gdb_test "python print (symtab\[1\]\[0\].symtab)" ".*${python_c}" "test decode_line current location filename"
-gdb_test "python print (symtab\[1\]\[0\].line)" "$lineno" "test decode_line current location line number"
-
-gdb_py_test_silent_cmd "python symtab = gdb.decode_line(\"python.c:26 if foo\")" "test decode_line python.c:26" 1
-gdb_test "python print (len(symtab))" "2" "test decode_line python.c:26 length"
-gdb_test "python print (symtab\[0\])" "if foo" "test decode_line expression parse"
-gdb_test "python print (len(symtab\[1\]))" "1" "test decode_line python.c:26 length"
-gdb_test "python print (symtab\[1\]\[0\].symtab)" ".*${python_c}" "test decode_line python.c:26 filename"
-gdb_test "python print (symtab\[1\]\[0\].line)" "26" "test decode_line python.c:26 line number"
-
-gdb_test "python gdb.decode_line(\"randomfunc\")" \
-    "gdb.error: Function \"randomfunc\" not defined.*" "test decode_line randomfunc"
-gdb_py_test_silent_cmd "python symtab = gdb.decode_line(\"func1\")" "test decode_line func1()" 1
-gdb_test "python print (len(symtab))" "2" "test decode_line func1 length"
-gdb_test "python print (len(symtab\[1\]))" "1" "test decode_line func1 length"
+with_test_prefix "test decode_line" {
+    gdb_test "python print (symtab\[1\]\[0\].symtab)" ".*${python_c}" "current location filename"
+    gdb_test "python print (symtab\[1\]\[0\].line)" "$lineno" "current location line number"
+
+    gdb_py_test_silent_cmd "python symtab = gdb.decode_line(\"python.c:26 if foo\")" "python.c:26 decode" 1
+    gdb_test "python print (len(symtab))" "2" "python.c:26 length 2"
+    gdb_test "python print (symtab\[0\])" "if foo" "expression parse"
+    gdb_test "python print (len(symtab\[1\]))" "1" "python.c:26 length 1"
+    gdb_test "python print (symtab\[1\]\[0\].symtab)" ".*${python_c}" "python.c:26 filename"
+    gdb_test "python print (symtab\[1\]\[0\].line)" "26" "python.c:26 line number"
+
+    gdb_test "python gdb.decode_line(\"randomfunc\")" \
+	"gdb.error: Function \"randomfunc\" not defined.*" "randomfunc"
+    gdb_py_test_silent_cmd "python symtab = gdb.decode_line(\"func1\")" "func1()" 1
+    gdb_test "python print (len(symtab))" "2" "func1 length 2"
+    gdb_test "python print (len(symtab\[1\]))" "1" "func1 length 1"
+}
 
 if { [is_remote host] } {
     set python_1_c [string_to_regexp "python-1.c"]
@@ -280,12 +288,14 @@ gdb_py_test_silent_cmd {python symtab =
     "test decode_line func1,func2" 1
 gdb_test {python print (symtab[0])} ",func2" "stop at comma in linespec"
 
-gdb_py_test_silent_cmd "python symtab = gdb.decode_line(\"*0\")" "Test decode_line *0" 1
-gdb_test "python print (len(symtab))" "2" "test decode_line *0 result length"
-gdb_test "python print (symtab\[0\])" "None" "test decode_line *0 unparsed"
-gdb_test "python print (len(symtab\[1\]))" "1" "test decode_line *0 locations length"
-gdb_test "python print (symtab\[1\]\[0\].symtab)" "None" "test decode_line *0 filename"
-gdb_test "python print (symtab\[1\]\[0\].pc)" "0" "test decode_line *0 pc"
+with_test_prefix "test decode_line" {
+    gdb_py_test_silent_cmd "python symtab = gdb.decode_line(\"*0\")" "*0" 1
+    gdb_test "python print (len(symtab))" "2" "*0 result length"
+    gdb_test "python print (symtab\[0\])" "None" "*0 unparsed"
+    gdb_test "python print (len(symtab\[1\]))" "1" "*0 locations length"
+    gdb_test "python print (symtab\[1\]\[0\].symtab)" "None" "*0 filename"
+    gdb_test "python print (symtab\[1\]\[0\].pc)" "0" "*0 pc"
+}
 
 # gdb.write
 gdb_test "python print (sys.stderr)" ".*gdb._GdbOutputErrorFile (instance|object) at.*" "test stderr location"
@@ -304,7 +314,7 @@ gdb_py_test_silent_cmd "set python print
 
 # Test prompt substituion
 
-gdb_py_test_multiple "prompt substitution" \
+gdb_test_multiline "prompt substitution" \
   "python" "" \
   "someCounter = 0" "" \
   "def prompt(current):" "" \
@@ -315,7 +325,7 @@ gdb_py_test_multiple "prompt substitutio
   "   return \"py prompt \" + str (someCounter) + \" \"" "" \
   "end" ""
 
-gdb_py_test_multiple "prompt substitution readline" \
+gdb_test_multiline "prompt substitution readline" \
   "python" "" \
   "pCounter = 0" "" \
   "def program_prompt(current):" "" \
@@ -330,39 +340,39 @@ set newprompt "py prompt 1"
 set newprompt2 "py prompt 2"
 set testfake "testfake"
 
-gdb_test_multiple "python gdb.prompt_hook = prompt" "set the hook" {
+gdb_test_multiple "python gdb.prompt_hook = prompt" "set the hook = prompt" {
     -re "\[\r\n\]$newprompt $" {
-	pass "set hook"
+	pass $gdb_test_name
     }
 }
 
 gdb_test_multiple "set prompt testfake " "set testfake prompt in GDB" {
     -re "\[\r\n\]$testfake $" {
-	pass "set prompt testfake"
+	pass $gdb_test_name
     }
 }
 
 gdb_test_multiple "show prompt" "show testfake prompt" {
     -re "Gdb's prompt is \"$testfake \"..* $" {
-	pass "show prompt shows guarded prompt"
+	pass $gdb_test_name
     }
 }
 
 gdb_test_multiple "set prompt blah " "set blah in GDB" {
     -re "\[\r\n\]$newprompt2 $" {
-	pass "set prompt blah overriden"
+	pass $gdb_test_name
     }
 }
 
 gdb_test_multiple "python gdb.prompt_hook = None" "delete hook" {
     -re "\[\r\n\]$newprompt2 $" {
-	pass "delete old hook"
+	pass $gdb_test_name
     }
 }
 
 gdb_test_multiple "set prompt $gdb_prompt " "set default prompt" {
     -re "\[\r\n\]$gdb_prompt $" {
-	pass "set default prompt"
+	pass $gdb_test_name
     }
 }
 
@@ -373,25 +383,25 @@ gdb_test_multiple "pwd" "pwd" {
     }
 }
 
-gdb_test_multiple "python gdb.prompt_hook = program_prompt" "set the hook" {
+gdb_test_multiple "python gdb.prompt_hook = program_prompt" "set the programming hook" {
     -re "\[\r\n\]$gdb_prompt $" {
-	pass "set programming hook"
+	pass $gdb_test_name
     }
 }
 
-gdb_test_multiple "python" "test we ignore substituion for seconday prompts" {
+gdb_test_multiple "python" "test we ignore substitution for seconday prompts" {
     -re "\r\n>$" {
-	pass "readline secondary are not substituted"
+	pass $gdb_test_name
     }
 }
 
 gdb_test_multiple "end" "end programming" {
     -re "\[\r\n\]$gdb_prompt $" {
-	pass "end programming"
+	pass $gdb_test_name
     }
 }
 
-gdb_py_test_multiple "prompt substitution readline" \
+gdb_test_multiline "prompt substitution readline import" \
   "python" "" \
   "import gdb.command.prompt" "" \
   "end" ""
@@ -399,21 +409,21 @@ gdb_py_test_multiple "prompt substitutio
 gdb_test_multiple "set extended-prompt one two three " \
     "set basic extended prompt" {
     -re "\[\r\n\]one two three $" {
-	pass "set basic extended prompt"
+	pass $gdb_test_name
     }
 }
 
 gdb_test_multiple "set extended-prompt \\w " \
     "set extended prompt working directory" {
     -re "\[\r\n\][string_to_regexp $working_dir] $" {
-	pass "set extended prompt working directory"
+	pass $gdb_test_name
     }
 }
 
 gdb_test_multiple "set extended-prompt some param \\p{python print-stack} " \
     "set extended prompt parameter" {
     -re "\[\r\n\]some param full $" {
-	pass "set extended prompt parameter"
+	pass $gdb_test_name
     }
 }
 
@@ -445,33 +455,33 @@ gdb_test "show python print-stack" \
 gdb_py_test_silent_cmd "set python print-stack message" \
     "Test print-stack set setting to message" 1
 
-gdb_py_test_multiple "prompt substitution readline" \
+gdb_test_multiline "prompt substitution readline error_prompt" \
   "python" "" \
   "pCounter = 0" "" \
   "def error_prompt(current):" "" \
   "   raise RuntimeError(\"Python exception called\")" "" \
   "end" ""
 
-gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook" {
+gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook error_prompt" {
     -re "Python Exception (exceptions.RuntimeError|<(type 'exceptions.|class ')RuntimeError'>) Python exception called.*$gdb_prompt $" {
-	pass "set hook"
+	pass $gdb_test_name
     }
 }
 
 gdb_py_test_silent_cmd "python gdb.prompt_hook = None" \
-    "set the hook to default" 1
+    "set the hook to default 1" 1
 
 gdb_py_test_silent_cmd "set python print-stack full" \
     "set print-stack full for prompt error test" 1
 
-gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook" {
+gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook error_prompt traceback" {
     -re "Traceback.*File.*line.*RuntimeError.*Python exception called.*$gdb_prompt $" {
-	pass "set hook"
+	pass $gdb_test_name
     }
 }
 
 gdb_py_test_silent_cmd "python gdb.prompt_hook = None" \
-    "set the hook to default" 1
+    "set the hook to default 2" 1
 
 # Start with a fresh gdb.
 clean_restart ${testfile}
@@ -516,3 +526,16 @@ gdb_test "print \$cvar3" "= void" \
 # Test PR 23669, the following would invoke the "commands" command instead of
 # "show commands".
 gdb_test "python gdb.execute(\"show commands\")" "$decimal  print \\\$cvar3.*"
+
+# Test that the from_tty argument to gdb.execute is effective. If
+# False, the user is not prompted for decisions such as restarting the
+# program, and "yes" is assumed. If True, the user is prompted.
+gdb_test "python gdb.execute('starti', from_tty=False)" \
+    "Program stopped.*" \
+    "starti via gdb.execute, not from tty"
+gdb_test_multiple "python gdb.execute('starti', from_tty=True)" \
+    "starti via gdb.execute, from tty" {
+    -re {The program being debugged has been started already\.\r\nStart it from the beginning\? \(y or n\) $} {
+	gdb_test "y" "Starting program:.*" "starti via interactive input"
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-thrhandle.c ./gdb/testsuite/gdb.python/py-thrhandle.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-thrhandle.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-thrhandle.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-thrhandle.exp ./gdb/testsuite/gdb.python/py-thrhandle.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-thrhandle.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-thrhandle.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-type.c ./gdb/testsuite/gdb.python/py-type.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-type.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-type.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-type.exp ./gdb/testsuite/gdb.python/py-type.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-type.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-type.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-typeprint.cc ./gdb/testsuite/gdb.python/py-typeprint.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-typeprint.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-typeprint.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-typeprint.exp ./gdb/testsuite/gdb.python/py-typeprint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-typeprint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-typeprint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-typeprint.py ./gdb/testsuite/gdb.python/py-typeprint.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-typeprint.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-typeprint.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind.c ./gdb/testsuite/gdb.python/py-unwind.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-unwind.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind.exp ./gdb/testsuite/gdb.python/py-unwind.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-unwind.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-inline.c ./gdb/testsuite/gdb.python/py-unwind-inline.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-inline.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-unwind-inline.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,37 @@
+/* Copyright 2019-2021 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/>.  */
+
+volatile int global_var;
+
+int  __attribute__ ((noinline))
+bar ()
+{
+  return global_var;
+}
+
+static inline int __attribute__ ((always_inline))
+foo ()
+{
+  return bar ();
+}
+
+int
+main ()
+{
+  int ans;
+  global_var = 0;
+  ans = foo ();
+  return ans;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-inline.exp ./gdb/testsuite/gdb.python/py-unwind-inline.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-inline.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-unwind-inline.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,49 @@
+# Copyright (C) 2020-2021 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 script tests GDB's handling of using a Python unwinder in the
+# presence of inlined frames.
+
+load_lib gdb-python.exp
+
+standard_testfile
+
+if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \
+	  debug] } {
+    return -1
+}
+
+# Skip all tests if Python scripting is not enabled.
+if { [skip_python_tests] } { continue }
+
+# The following tests require execution.
+if ![runto_main] then {
+    fail "can't run to main"
+    return 0
+}
+
+set pyfile [gdb_remote_download host ${srcdir}/${subdir}/${testfile}.py]
+
+gdb_breakpoint "foo"
+
+gdb_test "source ${pyfile}" "Python script imported" \
+        "import python scripts"
+
+gdb_continue_to_breakpoint "foo"
+
+gdb_test_sequence "backtrace"  "backtrace with dummy unwinder" {
+    "\\r\\n#0  foo \\(\\)"
+    "\\r\\n#1  main \\(\\)"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-inline.py ./gdb/testsuite/gdb.python/py-unwind-inline.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-inline.py	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-unwind-inline.py	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,71 @@
+# Copyright (C) 2020-2021 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/>.
+
+# A dummy stack unwinder used for testing the Python unwinders when we
+# have inline frames.  This unwinder will never claim any frames,
+# instead, all it does it try to read all registers possible target
+# registers as part of the frame sniffing process..
+
+import gdb
+from gdb.unwinder import Unwinder
+
+apb_global = None
+
+class dummy_unwinder (Unwinder):
+    """ A dummy unwinder that looks at a bunch of registers as part of
+    the unwinding process."""
+
+    class frame_id (object):
+        """ Basic frame id."""
+
+        def __init__ (self, sp, pc):
+            """ Create the frame id."""
+            self.sp = sp
+            self.pc = pc
+
+    def __init__ (self):
+        """Create the unwinder."""
+        Unwinder.__init__ (self, "dummy stack unwinder")
+        self.void_ptr_t = gdb.lookup_type("void").pointer()
+        self.regs = None
+
+    def get_regs (self, pending_frame):
+        """Return a list of register names that should be read.  Only
+        gathers the list once, then caches the result."""
+        if (self.regs != None):
+            return self.regs
+
+        # Collect the names of all registers to read.
+        self.regs = list (pending_frame.architecture ()
+                          .register_names ())
+
+        return self.regs
+
+    def __call__ (self, pending_frame):
+        """Actually performs the unwind, or at least sniffs this frame
+        to see if the unwinder should claim it, which is never does."""
+        try:
+            for r in (self.get_regs (pending_frame)):
+                v = pending_frame.read_register (r).cast (self.void_ptr_t)
+        except:
+            print ("Dummy unwinder, exception")
+            raise
+
+        return None
+
+# Register the ComRV stack unwinder.
+gdb.unwinder.register_unwinder (None, dummy_unwinder (), True)
+
+print ("Python script imported")
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-maint.c ./gdb/testsuite/gdb.python/py-unwind-maint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-maint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-unwind-maint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-maint.exp ./gdb/testsuite/gdb.python/py-unwind-maint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-maint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-unwind-maint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-maint.py ./gdb/testsuite/gdb.python/py-unwind-maint.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind-maint.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-unwind-maint.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind.py ./gdb/testsuite/gdb.python/py-unwind.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-unwind.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-unwind.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
@@ -30,16 +30,22 @@ class FrameId(object):
     def pc(self):
         return self._pc
 
-
 class TestUnwinder(Unwinder):
     AMD64_RBP = 6
     AMD64_RSP = 7
-    AMD64_RIP = 16
+    AMD64_RIP = None
 
     def __init__(self):
         Unwinder.__init__(self, "test unwinder")
         self.char_ptr_t = gdb.lookup_type("unsigned char").pointer()
         self.char_ptr_ptr_t = self.char_ptr_t.pointer()
+        self._last_arch = None
+
+    # Update the register descriptor AMD64_RIP based on ARCH.
+    def _update_register_descriptors (self, arch):
+        if (self._last_arch != arch):
+            TestUnwinder.AMD64_RIP = arch.registers ().find ("rip")
+            self._last_arch = arch
 
     def _read_word(self, address):
         return address.cast(self.char_ptr_ptr_t).dereference()
@@ -69,6 +75,17 @@ class TestUnwinder(Unwinder):
         This unwinder recognizes the corrupt frames by checking that
         *RBP == RBP, and restores previous RBP from the word above it.
         """
+
+        # Check that we can access the architecture of the pending
+        # frame, and that this is the same architecture as for the
+        # currently selected inferior.
+        inf_arch = gdb.selected_inferior ().architecture ()
+        frame_arch = pending_frame.architecture ()
+        if (inf_arch != frame_arch):
+            raise gdb.GdbError ("architecture mismatch")
+
+        self._update_register_descriptors (frame_arch)
+
         try:
             # NOTE: the registers in Unwinder API can be referenced
             # either by name or by number. The code below uses both
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-value.c ./gdb/testsuite/gdb.python/py-value.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-value.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-value.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-value-cc.cc ./gdb/testsuite/gdb.python/py-value-cc.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-value-cc.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-value-cc.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-value-cc.exp ./gdb/testsuite/gdb.python/py-value-cc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-value-cc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-value-cc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-value.exp ./gdb/testsuite/gdb.python/py-value.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-value.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-value.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
@@ -172,7 +172,7 @@ proc test_value_numeric_ops {} {
 
 proc test_value_boolean {} {
   # First, define a useful function to test booleans.
-  gdb_py_test_multiple "define function to test booleans" \
+  gdb_test_multiline "define function to test booleans" \
     "python" "" \
     "def test_bool (val):" "" \
     "  if val:" "" \
@@ -506,7 +506,7 @@ proc test_parse_and_eval {} {
 
 # Test that values are hashable.
 proc test_value_hash {} {
-  gdb_py_test_multiple "Simple Python value dictionary" \
+  gdb_test_multiline "Simple Python value dictionary" \
     "python" "" \
     "one = gdb.Value(1)" "" \
     "two = gdb.Value(2)" "" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-xmethods.cc ./gdb/testsuite/gdb.python/py-xmethods.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-xmethods.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-xmethods.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-xmethods.exp ./gdb/testsuite/gdb.python/py-xmethods.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-xmethods.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-xmethods.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-xmethods.py ./gdb/testsuite/gdb.python/py-xmethods.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/py-xmethods.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-xmethods.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/source1 ./gdb/testsuite/gdb.python/source1
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/source1	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/source1	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 #  This testcase is part of GDB, the GNU debugger.
 
-#  Copyright 2008-2020 Free Software Foundation, Inc.
+#  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/source2.py ./gdb/testsuite/gdb.python/source2.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/source2.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.python/source2.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 #  This testcase is part of GDB, the GNU debugger.
 
-#  Copyright 2008-2020 Free Software Foundation, Inc.
+#  Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/tui-window.exp ./gdb/testsuite/gdb.python/tui-window.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/tui-window.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/tui-window.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,54 @@
+# Copyright (C) 2020-2021 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 a TUI window implemented in Python.
+
+load_lib gdb-python.exp
+tuiterm_env
+
+# This test doesn't care about the inferior.
+standard_testfile py-arch.c
+
+if {[build_executable "failed to prepare" ${testfile} ${srcfile}] == -1} {
+    return -1
+}
+
+Term::clean_restart 24 80 $testfile
+
+# Skip all tests if Python scripting is not enabled.
+if { [skip_python_tests] } { continue }
+
+set remote_python_file [gdb_remote_download host \
+			    ${srcdir}/${subdir}/${testfile}.py]
+gdb_test_no_output "source ${remote_python_file}" \
+    "source ${testfile}.py"
+
+gdb_test_no_output "tui new-layout test test 1 status 0 cmd 1"
+gdb_test_no_output "tui new-layout fail fail 1 status 0 cmd 1"
+
+if {![Term::enter_tui]} {
+    unsupported "TUI not supported"
+}
+
+Term::command "layout test"
+Term::check_contents "test title" \
+    "This Is The Title"
+Term::check_contents "Window display" "Test: 0"
+
+Term::resize 51 51
+# Remember that a resize request actually does two resizes...
+Term::check_contents "Window was updated" "Test: 2"
+
+Term::command "layout fail"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/tui-window.py ./gdb/testsuite/gdb.python/tui-window.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.python/tui-window.py	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/tui-window.py	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,43 @@
+# Copyright (C) 2020-2021 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/>.
+
+# A TUI window implemented in Python.
+
+import gdb
+
+the_window = None
+
+class TestWindow:
+    def __init__(self, win):
+        global the_window
+        the_window = win
+        self.count = 0
+        self.win = win
+        win.title = "This Is The Title"
+
+    def render(self):
+        self.win.erase()
+        w = self.win.width
+        h = self.win.height
+        self.win.write("Test: " + str(self.count) + " " + str(w) + "x" + str(h))
+        self.count = self.count + 1
+
+gdb.register_window_type("test", TestWindow)
+
+# A TUI window "constructor" that always fails.
+def failwin(win):
+    raise RuntimeError("Whoops")
+
+gdb.register_window_type("fail", failwin)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.c ./gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.exp ./gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.S ./gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/amd64-tailcall-reverse.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/break-precsave.exp ./gdb/testsuite/gdb.reverse/break-precsave.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/break-precsave.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/break-precsave.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2008-2020 Free Software Foundation, Inc.
+#   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/break-reverse.c ./gdb/testsuite/gdb.reverse/break-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/break-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/break-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/break-reverse.exp ./gdb/testsuite/gdb.reverse/break-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/break-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/break-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2008-2020 Free Software Foundation, Inc.
+#   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/consecutive-precsave.exp ./gdb/testsuite/gdb.reverse/consecutive-precsave.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/consecutive-precsave.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/consecutive-precsave.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2008-2020 Free Software Foundation, Inc.
+#   Copyright 2008-2021 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
@@ -35,6 +35,8 @@ if [supports_process_record] {
     gdb_test_no_output "record" "turn on process record"
 }
 
+set is_stmt [is_stmt_addresses $srcfile]
+
 set end_location  [gdb_get_line_number "end of main"  ]
 gdb_test "break $end_location" \
     "Breakpoint $decimal at .*$srcfile, line $end_location\." \
@@ -79,7 +81,7 @@ gdb_test "break \*$foo2_addr" "Breakpoin
 
 set testmsg "stopped at bp, 2nd instr"
 gdb_test_multiple "step" $testmsg {
-    -re "Breakpoint $decimal, ($hex) in foo.*$gdb_prompt $" {
+    -re -wrap "Breakpoint $decimal, ($hex) in foo.*" {
 	set stop_addr $expect_out(1,string)
 	if [eval expr "$foo2_addr == $stop_addr"] then {
 	    pass "stopped at bp, 2nd instr"
@@ -87,6 +89,17 @@ gdb_test_multiple "step" $testmsg {
 	    fail "stopped at bp, 2nd instr (wrong address)"
 	}
     }
+    -re -wrap "Breakpoint $decimal, foo.*" {
+       set stop_addr [get_valueof "/x" "\$pc" "" "value of pc"]
+       set stop_addr_is_stmt [hex_in_list $stop_addr $is_stmt]
+       if { ! $stop_addr_is_stmt } {
+           fail "stopped at bp, 2nd instr (missing hex prefix)"
+       } elseif [eval expr "$foo2_addr == $stop_addr"] then {
+           pass "stopped at bp, 2nd instr"
+       } else {
+           fail "stopped at bp, 2nd instr (wrong address)"
+       }
+    }
 }
 
 ###
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/consecutive-reverse.c ./gdb/testsuite/gdb.reverse/consecutive-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/consecutive-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/consecutive-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/consecutive-reverse.exp ./gdb/testsuite/gdb.reverse/consecutive-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/consecutive-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/consecutive-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2008-2020 Free Software Foundation, Inc.
+#   Copyright 2008-2021 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
@@ -33,6 +33,8 @@ if [supports_process_record] {
     gdb_test_no_output "record" "turn on process record"
 }
 
+set is_stmt [is_stmt_addresses $srcfile]
+
 gdb_breakpoint foo
 gdb_test "continue" "Breakpoint $decimal, foo .*" \
 	"continue to breakpoint in foo"
@@ -59,7 +61,7 @@ gdb_test "break \*$foo2_addr" "Breakpoin
 
 set testmsg "stopped at bp, 2nd instr"
 gdb_test_multiple "step" $testmsg {
-    -re "Breakpoint $decimal, ($hex) in foo.*$gdb_prompt $" {
+    -re -wrap "Breakpoint $decimal, ($hex) in foo.*" {
 	set stop_addr $expect_out(1,string)
 	if [eval expr "$foo2_addr == $stop_addr"] then {
 	    pass "stopped at bp, 2nd instr"
@@ -67,6 +69,17 @@ gdb_test_multiple "step" $testmsg {
 	    fail "stopped at bp, 2nd instr (wrong address)"
 	}
     }
+    -re -wrap "Breakpoint $decimal, foo.*" {
+       set stop_addr [get_valueof "/x" "\$pc" "" "value of pc"]
+       set stop_addr_is_stmt [hex_in_list $stop_addr $is_stmt]
+       if { ! $stop_addr_is_stmt } {
+           fail "stopped at bp, 2nd instr (missing hex prefix)"
+       } elseif [eval expr "$foo2_addr == $stop_addr"] then {
+           pass "stopped at bp, 2nd instr"
+       } else {
+           fail "stopped at bp, 2nd instr (wrong address)"
+       }
+    }
 }
 
 ###
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/finish-precsave.exp ./gdb/testsuite/gdb.reverse/finish-precsave.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/finish-precsave.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/finish-precsave.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp ./gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/finish-reverse.c ./gdb/testsuite/gdb.reverse/finish-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/finish-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/finish-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/finish-reverse.exp ./gdb/testsuite/gdb.reverse/finish-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/finish-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/finish-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/fstatat-reverse.c ./gdb/testsuite/gdb.reverse/fstatat-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/fstatat-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/fstatat-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/fstatat-reverse.exp ./gdb/testsuite/gdb.reverse/fstatat-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/fstatat-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/fstatat-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/getresuid-reverse.c ./gdb/testsuite/gdb.reverse/getresuid-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/getresuid-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/getresuid-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/getresuid-reverse.exp ./gdb/testsuite/gdb.reverse/getresuid-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/getresuid-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/getresuid-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i386-precsave.exp ./gdb/testsuite/gdb.reverse/i386-precsave.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i386-precsave.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/i386-precsave.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i386-reverse.c ./gdb/testsuite/gdb.reverse/i386-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i386-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/i386-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i386-reverse.exp ./gdb/testsuite/gdb.reverse/i386-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i386-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/i386-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i386-sse-reverse.c ./gdb/testsuite/gdb.reverse/i386-sse-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i386-sse-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/i386-sse-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp ./gdb/testsuite/gdb.reverse/i386-sse-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/i386-sse-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i387-env-reverse.exp ./gdb/testsuite/gdb.reverse/i387-env-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i387-env-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/i387-env-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i387-stack-reverse.exp ./gdb/testsuite/gdb.reverse/i387-stack-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/i387-stack-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/i387-stack-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/insn-reverse-aarch64.c ./gdb/testsuite/gdb.reverse/insn-reverse-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/insn-reverse-aarch64.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/insn-reverse-aarch64.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/insn-reverse-arm.c ./gdb/testsuite/gdb.reverse/insn-reverse-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/insn-reverse-arm.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/insn-reverse-arm.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/insn-reverse.c ./gdb/testsuite/gdb.reverse/insn-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/insn-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/insn-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/insn-reverse.exp ./gdb/testsuite/gdb.reverse/insn-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/insn-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/insn-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/insn-reverse-x86.c ./gdb/testsuite/gdb.reverse/insn-reverse-x86.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/insn-reverse-x86.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/insn-reverse-x86.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/machinestate.c ./gdb/testsuite/gdb.reverse/machinestate.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/machinestate.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/machinestate.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/machinestate.exp ./gdb/testsuite/gdb.reverse/machinestate.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/machinestate.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/machinestate.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/machinestate-precsave.exp ./gdb/testsuite/gdb.reverse/machinestate-precsave.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/machinestate-precsave.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/machinestate-precsave.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/ms1.c ./gdb/testsuite/gdb.reverse/ms1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/ms1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/ms1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp ./gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/pipe-reverse.c ./gdb/testsuite/gdb.reverse/pipe-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/pipe-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/pipe-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/pipe-reverse.exp ./gdb/testsuite/gdb.reverse/pipe-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/pipe-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/pipe-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/readv-reverse.c ./gdb/testsuite/gdb.reverse/readv-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/readv-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/readv-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/readv-reverse.exp ./gdb/testsuite/gdb.reverse/readv-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/readv-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/readv-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/recvmsg-reverse.c ./gdb/testsuite/gdb.reverse/recvmsg-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/recvmsg-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/recvmsg-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/recvmsg-reverse.exp ./gdb/testsuite/gdb.reverse/recvmsg-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/recvmsg-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/recvmsg-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/rerun-prec.c ./gdb/testsuite/gdb.reverse/rerun-prec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/rerun-prec.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/rerun-prec.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/rerun-prec.exp ./gdb/testsuite/gdb.reverse/rerun-prec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/rerun-prec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/rerun-prec.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/s390-mvcle.c ./gdb/testsuite/gdb.reverse/s390-mvcle.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/s390-mvcle.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/s390-mvcle.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/s390-mvcle.exp ./gdb/testsuite/gdb.reverse/s390-mvcle.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/s390-mvcle.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/s390-mvcle.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/shr1.c ./gdb/testsuite/gdb.reverse/shr1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/shr1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/shr1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/shr2.c ./gdb/testsuite/gdb.reverse/shr2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/shr2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/shr2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/shr.h ./gdb/testsuite/gdb.reverse/shr.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/shr.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/shr.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/sigall-precsave.exp ./gdb/testsuite/gdb.reverse/sigall-precsave.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/sigall-precsave.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/sigall-precsave.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2009-2020 Free Software Foundation, Inc.
+#   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/sigall-reverse.c ./gdb/testsuite/gdb.reverse/sigall-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/sigall-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/sigall-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/sigall-reverse.exp ./gdb/testsuite/gdb.reverse/sigall-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/sigall-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/sigall-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2009-2020 Free Software Foundation, Inc.
+#   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/singlejmp-reverse.c ./gdb/testsuite/gdb.reverse/singlejmp-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/singlejmp-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/singlejmp-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/singlejmp-reverse.exp ./gdb/testsuite/gdb.reverse/singlejmp-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/singlejmp-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/singlejmp-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/singlejmp-reverse-nodebug.c ./gdb/testsuite/gdb.reverse/singlejmp-reverse-nodebug.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/singlejmp-reverse-nodebug.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/singlejmp-reverse-nodebug.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/singlejmp-reverse-nodebug.S ./gdb/testsuite/gdb.reverse/singlejmp-reverse-nodebug.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/singlejmp-reverse-nodebug.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/singlejmp-reverse-nodebug.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/singlejmp-reverse.S ./gdb/testsuite/gdb.reverse/singlejmp-reverse.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/singlejmp-reverse.S	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/singlejmp-reverse.S	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/solib-precsave.exp ./gdb/testsuite/gdb.reverse/solib-precsave.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/solib-precsave.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/solib-precsave.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -148,11 +148,27 @@ gdb_test "reverse-next" " generic statem
 # Test reverse-step into debuggable solib function
 #
 
-gdb_test "reverse-step" "${lib2src}.*" "reverse-step into solib function one"
+gdb_test_multiple "reverse-step" "reverse-step into solib function one" {
+    -re -wrap "middle part two.*" {
+	send_gdb "reverse-step\n"
+	exp_continue
+    }
+    -re -wrap "${lib2src}.*" {
+	pass $gdb_test_name
+    }
+}
 gdb_test "reverse-step" "return 2.x.*" "reverse-step within solib function one"
 gdb_test "reverse-step" " middle part two.*" "reverse-step back to main one"
 
-gdb_test "reverse-step" "${lib2src}.*" "reverse-step into solib function two"
+gdb_test_multiple "reverse-step" "reverse-step into solib function two" {
+    -re -wrap "begin part two.*" {
+	send_gdb "reverse-step\n"
+	exp_continue
+    }
+    -re -wrap "${lib2src}.*" {
+	pass $gdb_test_name
+    }
+}
 gdb_test "reverse-step" "return 2.x.*" "reverse-step within solib function two"
 gdb_test "reverse-step" " begin part two.*" "reverse-step back to main two"
 
@@ -163,4 +179,12 @@ gdb_test "reverse-step" " begin part two
 gdb_test "until $end_part_two" " end part two.*" "run until end part two"
 
 gdb_test "reverse-next" " middle part two.*" "reverse-next over solib function one"
-gdb_test "reverse-next" " begin part two.*" "reverse-next over solib function two"
+gdb_test_multiple "reverse-next" "reverse-next over solib function two" {
+    -re -wrap "middle part two.*" {
+	send_gdb "reverse-next\n"
+	exp_continue
+    }
+    -re -wrap " begin part two.*" {
+	pass $gdb_test_name
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/solib-reverse.c ./gdb/testsuite/gdb.reverse/solib-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/solib-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/solib-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/solib-reverse.exp ./gdb/testsuite/gdb.reverse/solib-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/solib-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/solib-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -122,11 +122,27 @@ gdb_test "reverse-next" " generic statem
 # Test reverse-step into debuggable solib function
 #
 
-gdb_test "reverse-step" "${lib2src}.*" "reverse-step into solib function one"
+gdb_test_multiple "reverse-step" "reverse-step into solib function one" {
+    -re -wrap "middle part two.*" {
+	send_gdb "reverse-step\n"
+	exp_continue
+    }
+    -re -wrap "${lib2src}.*" {
+	pass $gdb_test_name
+    }
+}
 gdb_test "reverse-step" "return 2.x.*" "reverse-step within solib function one"
 gdb_test "reverse-step" " middle part two.*" "reverse-step back to main one"
 
-gdb_test "reverse-step" "${lib2src}.*" "reverse-step into solib function two"
+gdb_test_multiple "reverse-step" "reverse-step into solib function two" {
+    -re -wrap "begin part two.*" {
+	send_gdb "reverse-step\n"
+	exp_continue
+    }
+    -re -wrap "${lib2src}.*" {
+	pass $gdb_test_name
+    }
+}
 gdb_test "reverse-step" "return 2.x.*" "reverse-step within solib function two"
 gdb_test "reverse-step" " begin part two.*" "reverse-step back to main two"
 
@@ -137,4 +153,12 @@ gdb_test "reverse-step" " begin part two
 gdb_test "until $end_part_two" " end part two.*" "run until end part two"
 
 gdb_test "reverse-next" " middle part two.*" "reverse-next over solib function one"
-gdb_test "reverse-next" " begin part two.*" "reverse-next over solib function two"
+gdb_test_multiple "reverse-next" "reverse-next over solib function two" {
+    -re -wrap "middle part two.*" {
+	send_gdb "reverse-next\n"
+	exp_continue
+    }
+    -re -wrap " begin part two.*" {
+	pass $gdb_test_name
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/step-indirect-call-thunk.c ./gdb/testsuite/gdb.reverse/step-indirect-call-thunk.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/step-indirect-call-thunk.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/step-indirect-call-thunk.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/step-indirect-call-thunk.exp ./gdb/testsuite/gdb.reverse/step-indirect-call-thunk.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/step-indirect-call-thunk.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/step-indirect-call-thunk.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/step-precsave.exp ./gdb/testsuite/gdb.reverse/step-precsave.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/step-precsave.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/step-precsave.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/step-reverse.c ./gdb/testsuite/gdb.reverse/step-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/step-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/step-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
@@ -23,7 +23,7 @@
 int myglob = 0;
 
 int callee() {		/* ENTER CALLEE */
-  myglob++; return 0;	/* ARRIVED IN CALLEE */
+  return myglob++;	/* ARRIVED IN CALLEE */
 }			/* RETURN FROM CALLEE */
 
 /* A structure which, we hope, will need to be passed using memcpy.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/step-reverse.exp ./gdb/testsuite/gdb.reverse/step-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/step-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/step-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/time-reverse.c ./gdb/testsuite/gdb.reverse/time-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/time-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/time-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/time-reverse.exp ./gdb/testsuite/gdb.reverse/time-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/time-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/time-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/until-precsave.exp ./gdb/testsuite/gdb.reverse/until-precsave.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/until-precsave.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/until-precsave.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/until-reverse.c ./gdb/testsuite/gdb.reverse/until-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/until-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/until-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
@@ -37,7 +37,8 @@ main (int argc, char **argv, char **envp
     {
       /* We're used by a test that requires malloc, so make sure it is
 	 in the executable.  */
-      (void) malloc (1);
+      void *p = malloc (1);
+      free (p);
       return 1;
     }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/until-reverse.exp ./gdb/testsuite/gdb.reverse/until-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/until-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/until-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/ur1.c ./gdb/testsuite/gdb.reverse/ur1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/ur1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/ur1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1992-2020 Free Software Foundation, Inc.
+   Copyright 1992-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/waitpid-reverse.c ./gdb/testsuite/gdb.reverse/waitpid-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/waitpid-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/waitpid-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/waitpid-reverse.exp ./gdb/testsuite/gdb.reverse/waitpid-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/waitpid-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/waitpid-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/watch-precsave.exp ./gdb/testsuite/gdb.reverse/watch-precsave.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/watch-precsave.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/watch-precsave.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/watch-reverse.c ./gdb/testsuite/gdb.reverse/watch-reverse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/watch-reverse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/watch-reverse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/watch-reverse.exp ./gdb/testsuite/gdb.reverse/watch-reverse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.reverse/watch-reverse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.reverse/watch-reverse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/expr.exp ./gdb/testsuite/gdb.rust/expr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/expr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/expr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/generics.exp ./gdb/testsuite/gdb.rust/generics.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/generics.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/generics.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/generics.rs ./gdb/testsuite/gdb.rust/generics.rs
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/generics.rs	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/generics.rs	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2016-2020 Free Software Foundation, Inc.
+// Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/methods.exp ./gdb/testsuite/gdb.rust/methods.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/methods.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/methods.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/methods.rs ./gdb/testsuite/gdb.rust/methods.rs
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/methods.rs	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/methods.rs	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2016-2020 Free Software Foundation, Inc.
+// Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/modules.exp ./gdb/testsuite/gdb.rust/modules.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/modules.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/modules.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/modules.rs ./gdb/testsuite/gdb.rust/modules.rs
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/modules.rs	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/modules.rs	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2016-2020 Free Software Foundation, Inc.
+// Copyright (C) 2016-2021 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
@@ -60,7 +60,8 @@ pub mod mod1 {
 
                 let f2 = || println!("lambda f2");
 
-                let copy = ::TWENTY_THREE;
+                // Prevent linker from discarding symbol
+                let ptr: *const u16 = &::TWENTY_THREE;
 
                 f2();           // set breakpoint here
                 f3();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/rust-style.exp ./gdb/testsuite/gdb.rust/rust-style.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/rust-style.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/rust-style.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,44 @@
+# Copyright 2020-2021 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 CLI output styling for Rust.
+
+load_lib rust-support.exp
+if {[skip_rust_tests]} {
+    continue
+}
+
+save_vars { env(TERM) } {
+    # We need an ANSI-capable terminal to get the output.
+    setenv TERM ansi
+
+    standard_testfile .rs
+    if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+	     {debug rust}]} {
+	return -1
+    }
+
+    set line [gdb_get_line_number "breakpoint"]
+    if {![runto ${srcfile}:$line]} {
+	untested "could not run to breakpoint"
+	return -1
+    }
+
+    set vfield [style value variable]
+    set v2field [style value2 variable]
+    gdb_test "print v" \
+	"Two\{$vfield: 23, $v2field: 97\}"
+
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/rust-style.rs ./gdb/testsuite/gdb.rust/rust-style.rs
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/rust-style.rs	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/rust-style.rs	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,29 @@
+// Copyright (C) 2020-2021 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/>.
+
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![allow(unused_assignments)]
+
+enum EnumType {
+    One(i32),
+    Two{value: i32, value2: i32},
+}
+
+fn main() {
+    let v = EnumType::Two{ value: 23, value2: 97 };
+
+    println!("");               // breakpoint
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/simple.exp ./gdb/testsuite/gdb.rust/simple.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/simple.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/simple.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
@@ -45,11 +45,11 @@ gdb_test "ptype c" " = i32"
 gdb_test "print sizeof(c)" " = 4"
 
 gdb_test "print c = 87" " = \\(\\)"
-gdb_test "print c" " = 87"
+gdb_test "print c" " = 87" "print after assignment"
 gdb_test "print c += 3" " = \\(\\)"
-gdb_test "print c" " = 90"
+gdb_test "print c" " = 90" "print after plus assignment"
 gdb_test "print c -= 90" " = \\(\\)"
-gdb_test "print c" " = 0"
+gdb_test "print c" " = 0" "print after minus assignment"
 gdb_test "print *&c" " = 0"
 gdb_test "print *(&c as &i32)" " = 0"
 gdb_test "print *(&c as *const i32)" " = 0"
@@ -239,7 +239,8 @@ gdb_test "print .." " = .*::ops::RangeFu
 
 set pass_pattern \
     " = core::option::Option<\[a-z\]+::string::String>::Some\\(\[a-z\]+::string::String .*"
-set xfail_pattern " = <error reading variable>"
+set xfail_pattern \
+    "( = <error reading variable>|That operation is not available on .*)"
 gdb_test_multiple "print str_some" "" {
     -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
 	pass $gdb_test_name
@@ -289,12 +290,14 @@ gdb_test "print st" \
     " = simple::StringAtOffset {field1: \"hello\", field2: 1, field3: \"world\"}"
 
 proc test_one_slice {svar length base range} {
-    global hex
+    with_test_prefix $range {
+	global hex
 
-    set result " = &\\\[.*\\\] \\{data_ptr: $hex, length: $length\\}"
+	set result " = &\\\[.*\\\] \\{data_ptr: $hex, length: $length\\}"
 
-    gdb_test "print $svar" $result
-    gdb_test "print &${base}\[${range}\]" $result
+	gdb_test "print $svar" $result
+	gdb_test "print &${base}\[${range}\]" $result
+    }
 }
 
 test_one_slice slice 1 w 2..3
@@ -335,17 +338,6 @@ gdb_test "print parametrized.next.val" \
 gdb_test "print parametrized" \
     " = simple::ParametrizedStruct<i32> \\{next: simple::ParametrizedEnum<\[a-z:\]*Box<simple::ParametrizedStruct<i32>>>::Val\\{val: $hex\\}, value: 0\\}"
 
-gdb_test "print u" " = simple::Union {f1: -1, f2: 255}"
-
-gdb_test_sequence "ptype/o Union" "" {
-    "/\\* offset    |  size \\*/  type = union simple::Union {"
-    "/\\*                 1 \\*/    f1: i8,"
-    "/\\*                 1 \\*/    f2: u8,"
-    ""
-    "                           /\\* total size \\(bytes\\):    1 \\*/"
-    "                         }"
-}
-
 gdb_test_sequence "ptype/o SimpleLayout" "" {
     "/\\* offset    |  size \\*/  type = struct simple::SimpleLayout {"
     "/\\*    0      |     2 \\*/    f1: u16,"
@@ -355,7 +347,7 @@ gdb_test_sequence "ptype/o SimpleLayout"
     "                         }"
 }
 
-gdb_test "print u2" " = simple::Union2 {name: \\\[1\\\]}"
+gdb_test "print nonzero_offset" " = simple::EnumWithNonzeroOffset {a: core::option::Option<u8>::Some\\(1\\), b: core::option::Option<u8>::None}"
 
 # PR rust/23626 - this used to crash.  Note that the results are
 # fairly lax because most existing versions of Rust (those before the
@@ -375,3 +367,22 @@ if {[skip_python_tests]} {
 }
 
 gdb_test "python print(gdb.lookup_type('simple::HiBob'))" "simple::HiBob"
+
+gdb_test_no_output "python e = gdb.parse_and_eval('e')" \
+    "get value of e for python"
+gdb_test "python print(len(e.type.fields()))" "2"
+gdb_test "python print(e.type.fields()\[0\].artificial)" "True"
+gdb_test "python print(e.type.fields()\[1\].name)" "Two"
+
+gdb_test "python print(e.type.dynamic)" "False"
+
+# Before LLVM 8, the rust compiler would emit two types named
+# "simple::MoreComplicated" -- the C-like "underlying" enum type and
+# the Rust enum.  lookup_type seems to get the former, which isn't
+# very useful.  With later versions of LLVM, this test works
+# correctly.
+set v [split [rust_llvm_version] .]
+if {[lindex $v 0] >= 8} {
+    gdb_test "python print(gdb.lookup_type('simple::MoreComplicated').dynamic)" \
+	"True"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/simple.rs ./gdb/testsuite/gdb.rust/simple.rs
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/simple.rs	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/simple.rs	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2016-2020 Free Software Foundation, Inc.
+// Copyright (C) 2016-2021 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
@@ -80,15 +80,6 @@ struct ParametrizedStruct<T> {
     value: T
 }
 
-union Union {
-    f1: i8,
-    f2: u8,
-}
-
-pub union Union2 {
-    pub name: [u8; 1],
-}
-
 struct StringAtOffset {
     pub field1: &'static str,
     pub field2: i32,
@@ -104,6 +95,12 @@ struct SimpleLayout {
 
 enum EmptyEnum {}
 
+#[derive(Debug)]
+struct EnumWithNonzeroOffset {
+    a: Option<u8>,
+    b: Option<u8>,
+}
+
 fn main () {
     let a = ();
     let b : [i32; 0] = [];
@@ -138,7 +135,6 @@ fn main () {
 
     let field1 = 77;
     let field2 = 88;
-    let y0 = HiBob { field1, field2 };
 
     let univariant = Univariant::Foo {a : 1};
     let univariant_anon = UnivariantAnon::Foo(1);
@@ -179,12 +175,11 @@ fn main () {
         value: 0,
     };
 
-    let u = Union { f2: 255 };
     let simplelayout = SimpleLayout { f1: 8, f2: 9 };
 
     let empty_enum_value: EmptyEnum;
 
-    let u2 = Union2 { name: [1] };
+    let nonzero_offset = EnumWithNonzeroOffset { a: Some(1), b: None };
 
     println!("{}, {}", x.0, x.1);        // set breakpoint here
     println!("{}", diff2(92, 45));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/traits.exp ./gdb/testsuite/gdb.rust/traits.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/traits.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/traits.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/traits.rs ./gdb/testsuite/gdb.rust/traits.rs
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/traits.rs	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/traits.rs	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// Copyright (C) 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/union.exp ./gdb/testsuite/gdb.rust/union.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/union.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/union.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,45 @@
+# Copyright (C) 2020-2021 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 of "union" for Rust.
+
+load_lib rust-support.exp
+if {[skip_rust_tests]} {
+    continue
+}
+
+standard_testfile .rs
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug rust}]} {
+    return -1
+}
+
+set line [gdb_get_line_number "set breakpoint here"]
+if {![runto ${srcfile}:$line]} {
+    untested "could not run to breakpoint"
+    return -1
+}
+
+gdb_test "print u" " = union::Union {f1: -1, f2: 255}"
+
+gdb_test_sequence "ptype/o Union" "" {
+    "/\\* offset    |  size \\*/  type = union union::Union {"
+    "/\\*                 1 \\*/    f1: i8,"
+    "/\\*                 1 \\*/    f2: u8,"
+    ""
+    "                           /\\* total size \\(bytes\\):    1 \\*/"
+    "                         }"
+}
+
+gdb_test "print u2" " = union::Union2 {name: \\\[1\\\]}"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/union.rs ./gdb/testsuite/gdb.rust/union.rs
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/union.rs	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/union.rs	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,35 @@
+// Copyright (C) 2020-2021 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/>.
+
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![allow(unused_assignments)]
+
+
+union Union {
+    f1: i8,
+    f2: u8,
+}
+
+pub union Union2 {
+    pub name: [u8; 1],
+}
+
+fn main() {
+    let u = Union { f2: 255 };
+    let u2 = Union2 { name: [1] };
+
+    println!("Hi");        // set breakpoint here
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/unsized.exp ./gdb/testsuite/gdb.rust/unsized.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/unsized.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/unsized.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/unsized.rs ./gdb/testsuite/gdb.rust/unsized.rs
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/unsized.rs	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/unsized.rs	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// Copyright (C) 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/watch.exp ./gdb/testsuite/gdb.rust/watch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/watch.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/watch.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/watch.rs ./gdb/testsuite/gdb.rust/watch.rs
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.rust/watch.rs	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.rust/watch.rs	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// Copyright (C) 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/abspath.exp ./gdb/testsuite/gdb.server/abspath.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/abspath.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/abspath.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/bkpt-other-inferior.exp ./gdb/testsuite/gdb.server/bkpt-other-inferior.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/bkpt-other-inferior.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.server/bkpt-other-inferior.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,93 @@
+# Copyright 2019-2021 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 that GDB does not access the remote target's memory when
+# setting a breakpoint on a function that only exists in an inferior
+# that is not bound to the remote target.
+
+load_lib gdbserver-support.exp
+
+standard_testfile server.c
+
+if { [skip_gdbserver_tests] } {
+    return 0
+}
+
+if { [prepare_for_testing "failed to prepare" ${binfile} "${srcfile}" \
+	  {debug pthreads}] } {
+    return
+}
+
+# Make sure we're disconnected, in case we're testing with an
+# extended-remote board, therefore already connected.
+gdb_test "disconnect" ".*"
+
+# Leave inferior 1 with the exec target, not connected.  Add another
+# inferior, and connect it to gdbserver.
+
+gdb_test "add-inferior" "Added inferior 2" \
+    "add inferior 2"
+gdb_test "inferior 2" "Switching to inferior 2.*" \
+    "switch to inferior 2"
+gdb_test "file ${binfile}" ".*" "load file in inferior 2"
+
+set target_exec [gdbserver_download_current_prog]
+
+# Start GDBserver.
+set res [gdbserver_start "" $target_exec]
+
+# Connect to GDBserver.
+set gdbserver_protocol [lindex $res 0]
+set gdbserver_gdbport [lindex $res 1]
+gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport
+
+# Discard any symbol files that we have opened.
+set test "discard symbol table"
+gdb_test_multiple "file" $test {
+    -re "A program is being debugged already..*Are you sure you want to change the file.*y or n. $" {
+	gdb_test "y" ".*" $test \
+	    {Discard symbol table from `.*'\? \(y or n\) } "y"
+    }
+}
+
+# At this point:
+#
+# - inferior 1 has symbols, and is not connected to any target.
+# - inferior 2 has no symbols, and is connected to gdbserver.
+
+# Setting a breakpoint at some function by name should set a
+# breakpoint on inferior 1, since it has symbols, and should not
+# result in any access to inferior 2's remote target.
+
+gdb_test_no_output "set debug remote 1"
+
+foreach inf_sel {1 2} {
+    with_test_prefix "inf $inf_sel" {
+	gdb_test "inferior $inf_sel" "Switching to inferior $inf_sel.*" \
+	    "switch to inferior"
+
+	set test "set breakpoint"
+	gdb_test_multiple "break main" $test {
+	    -re "Sending packet.*$gdb_prompt $" {
+		fail $test
+	    }
+	    -re "^break main\r\nBreakpoint .* at .*$gdb_prompt $" {
+		pass $test
+	    }
+	}
+
+	delete_breakpoints
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-stopped-target.c ./gdb/testsuite/gdb.server/connect-stopped-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-stopped-target.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/connect-stopped-target.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-stopped-target.exp ./gdb/testsuite/gdb.server/connect-stopped-target.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-stopped-target.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/connect-stopped-target.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-with-no-symbol-file.c ./gdb/testsuite/gdb.server/connect-with-no-symbol-file.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-with-no-symbol-file.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/connect-with-no-symbol-file.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-with-no-symbol-file.exp ./gdb/testsuite/gdb.server/connect-with-no-symbol-file.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-with-no-symbol-file.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/connect-with-no-symbol-file.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-without-multi-process.c ./gdb/testsuite/gdb.server/connect-without-multi-process.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-without-multi-process.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/connect-without-multi-process.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-without-multi-process.exp ./gdb/testsuite/gdb.server/connect-without-multi-process.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/connect-without-multi-process.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/connect-without-multi-process.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
@@ -14,7 +14,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 # Check that we can connect to GDBserver with the multiprocess
-# extensions disabled, and run to main.
+# extensions disabled, run to main, and finish the process.
 
 load_lib gdbserver-support.exp
 
@@ -52,6 +52,11 @@ proc do_test {multiprocess} {
 	"target $gdbserver_protocol"
 
     gdb_test "continue" "main .*" "continue to main"
+
+    # The W/X packets do not include the PID of the exiting process
+    # without the multi-process extensions.  Check that we handle
+    # process exit correctly in that case.
+    gdb_continue_to_end
 }
 
 foreach multiprocess { "off" "auto" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/exit-multiple-threads.c ./gdb/testsuite/gdb.server/exit-multiple-threads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/exit-multiple-threads.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.server/exit-multiple-threads.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,202 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <pthread.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <pthread.h>
+
+/* The number of threads to create.  */
+int thread_count = 3;
+
+/* Counter accessed from threads to ensure that all threads have been
+   started.  Is initialised to THREAD_COUNT and each thread decrements it
+   upon startup.  */
+volatile int counter;
+
+/* Lock guarding COUNTER. */
+pthread_mutex_t counter_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+/* Is initialised with our pid, GDB will read this.  */
+pid_t global_pid;
+
+/* Just somewhere to put a breakpoint.  */
+static void
+breakpt ()
+{
+  /* Nothing.  */
+}
+
+/* Thread safe decrement of the COUNTER global.  */
+static void
+decrement_counter ()
+{
+  if (pthread_mutex_lock (&counter_mutex) != 0)
+    abort ();
+  --counter;
+  if (pthread_mutex_unlock (&counter_mutex) != 0)
+    abort ();
+}
+
+/* Thread safe read of the COUNTER global.  */
+static int
+read_counter ()
+{
+  int val;
+
+  if (pthread_mutex_lock (&counter_mutex) != 0)
+    abort ();
+  val = counter;
+  if (pthread_mutex_unlock (&counter_mutex) != 0)
+    abort ();
+
+  return val;
+}
+
+#if defined DO_EXIT_TEST
+
+/* Thread entry point.  ARG is a pointer to a single integer, the ID for
+   this thread numbered 1 to THREAD_COUNT (a global).  */
+static void *
+thread_worker_exiting (void *arg)
+{
+  int id;
+
+  id = *((int *) arg);
+
+  decrement_counter ();
+
+  if (id != thread_count)
+    {
+      int i;
+
+      /* All threads except the last one will wait here while the test is
+	 carried out.  Don't wait forever though, just in case the test
+	 goes wrong.  */
+      for (i = 0; i < 60; ++i)
+	sleep (1);
+    }
+  else
+    {
+      /* The last thread waits here until all other threads have been
+	 created.  */
+      while (read_counter () > 0)
+	sleep (1);
+
+      /* Hit the breakpoint so GDB can stop.  */
+      breakpt ();
+
+      /* And exit all threads.  */
+      exit (0);
+    }
+
+  return NULL;
+}
+
+#define thread_worker thread_worker_exiting
+
+#elif defined DO_SIGNAL_TEST
+
+/* Thread entry point.  ARG is a pointer to a single integer, the ID for
+   this thread numbered 1 to THREAD_COUNT (a global).  */
+static void *
+thread_worker_signalling (void *arg)
+{
+  int i, id;
+
+  id = *((int *) arg);
+
+  decrement_counter ();
+
+  if (id == thread_count)
+    {
+      /* The last thread waits here until all other threads have been
+	 created.  */
+      while (read_counter () > 0)
+	sleep (1);
+
+      /* Hit the breakpoint so GDB can stop.  */
+      breakpt ();
+    }
+
+  /* All threads wait here while the testsuite sends us a signal.  Don't
+     block forever though, just in case the test goes wrong.  */
+  for (i = 0; i < 60; ++i)
+    sleep (1);
+
+  return NULL;
+}
+
+#define thread_worker thread_worker_signalling
+
+#else
+
+#error "Compile with DO_EXIT_TEST or DO_SIGNAL_TEST defined"
+
+#endif
+
+struct thread_info
+{
+  pthread_t thread;
+  int id;
+};
+
+int
+main ()
+{
+  int i, max = thread_count;
+
+  /* Put the pid somewhere easy for GDB to read.  */
+  global_pid = getpid ();
+
+  /* Space to hold all of the thread_info objects.  */
+  struct thread_info *info = malloc (sizeof (struct thread_info) * max);
+  if (info == NULL)
+    abort ();
+
+  /* Initialise the counter.  Don't do this under lock as we only have the
+     main thread at this point.  */
+  counter = thread_count;
+
+  /* Create all of the threads.  */
+  for (i = 0; i < max; ++i)
+    {
+      struct thread_info *thr = &info[i];
+      thr->id = i + 1;
+      if (pthread_create (&thr->thread, NULL, thread_worker, &thr->id) != 0)
+	abort ();
+    }
+
+  /* Gather in all of the threads.  This never completes, as the
+     final thread created will exit the process, and all of the other
+     threads block forever.  Still, it gives the main thread something to
+     do.  */
+  for (i = 0; i < max; ++i)
+    {
+      struct thread_info *thr = &info[i];
+      if (pthread_join (thr->thread, NULL) != 0)
+	abort ();
+    }
+
+  free (info);
+
+  /* Return non-zero.  We should never get here, but if we do make sure we
+     indicate something has gone wrong.  */
+  return 1;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/exit-multiple-threads.exp ./gdb/testsuite/gdb.server/exit-multiple-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/exit-multiple-threads.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.server/exit-multiple-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,136 @@
+# This testcase is part of GDB, the GNU debugger.
+#
+# Copyright 2020-2021 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 that GDB can handle receiving the W and X packets for a target
+# with multiple threads, but only a single inferior.
+#
+# Specifically, check GDB handles this case where multi-process
+# extensions are turned off.  At one point this was causing GDB to
+# give a warning when the exit arrived that the remote needed to
+# include a thread-id, which was not correct.
+
+load_lib gdbserver-support.exp
+
+if { [skip_gdbserver_tests] } {
+    verbose "skipping gdbserver tests"
+    return -1
+}
+
+standard_testfile
+
+# Start up GDB and GDBserver debugging EXECUTABLE.  When
+# DISABLE_MULTI_PROCESS is true then disable GDB's remote
+# multi-process support, otherwise, leave it enabled.
+#
+# Places a breakpoint in function 'breakpt' and then continues to the
+# breakpoint, at which point it runs 'info threads'.
+proc prepare_for_test { executable disable_multi_process } {
+    clean_restart ${executable}
+
+    # Make sure we're disconnected, in case we're testing with an
+    # extended-remote board, therefore already connected.
+    gdb_test "disconnect" ".*"
+
+    # Disable XML-based thread listing, and possible the multi-process
+    # extensions.
+    gdb_test_no_output "set remote threads-packet off"
+    if { $disable_multi_process } {
+	gdb_test_no_output "set remote multiprocess-feature-packet off"
+    }
+
+    # Start gdbserver and connect.
+    set res [gdbserver_start "" $executable]
+    set gdbserver_protocol [lindex $res 0]
+    set gdbserver_gdbport [lindex $res 1]
+    set res [gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport]
+    if ![gdb_assert {$res == 0} "connect"] {
+	return
+    }
+
+    # Run until we hit the breakpt function, then list all threads.
+    gdb_breakpoint "breakpt"
+    gdb_continue_to_breakpoint "breakpt"
+    gdb_test "info threads" ".*"
+}
+
+# Run the tests where the inferior exits normally (the W packet) while
+# we have multiple-threads.  EXECUTABLE is the binary under test, and
+# DISABLE_MULTI_PROCESS indicates if we should disable GDB's remote
+# multi-process support.
+proc run_exit_test { executable disable_multi_process } {
+    global decimal
+
+    prepare_for_test ${executable} ${disable_multi_process}
+
+    # Finally, continue until the process exits, ensure we don't see
+    # any warnings between "Continuing." and the final process has
+    # exited message.
+    if { $disable_multi_process } {
+	set process_pattern "Remote target"
+    } else {
+	set process_pattern "process $decimal"
+    }
+    gdb_test "continue" \
+	[multi_line \
+	     "Continuing\\." \
+	     "\\\[Inferior $decimal \\\(${process_pattern}\\\) exited normally\\\]" ] \
+	"continue until process exits"
+}
+
+# Run the tests where the inferior exits with a signal (the X packet)
+# while we have multiple-threads.  EXECUTABLE is the binary under
+# test, and DISABLE_MULTI_PROCESS indicates if we should disable GDB's
+# remote multi-process support.
+proc run_signal_test { executable disable_multi_process } {
+    global decimal gdb_prompt
+
+    prepare_for_test ${executable} ${disable_multi_process}
+
+    set inf_pid [get_valueof "/d" "global_pid" "unknown"]
+    gdb_assert ![string eq ${inf_pid} "unknown"] "read the pid"
+
+    # This sets the inferior running again, with all threads going
+    # into a long delay loop.
+    send_gdb "continue\n"
+
+    # Send the inferior a signal to kill it.
+    sleep 1
+    remote_exec target "kill -9 ${inf_pid}"
+
+    # Process the output from GDB.
+    gdb_test_multiple "" "inferior exited with signal" {
+	-re "Continuing\\.\r\n\r\nProgram terminated with signal SIGKILL, Killed.\r\nThe program no longer exists.\r\n$gdb_prompt $" {
+	    pass $gdb_test_name
+	}
+    }
+}
+
+# Run all of the tests.
+foreach_with_prefix test { exit signal } {
+    set def "DO_[string toupper $test]_TEST"
+    set func "run_${test}_test"
+
+    set executable "$binfile-${test}"
+    if [prepare_for_testing "failed to prepare" $executable $srcfile \
+	    [list debug pthreads additional_flags=-D${def}]] {
+	return -1
+    }
+
+    foreach_with_prefix multi_process { 0 1 } {
+	$func ${executable} ${multi_process}
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/ext-attach.c ./gdb/testsuite/gdb.server/ext-attach.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/ext-attach.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/ext-attach.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/ext-attach.exp ./gdb/testsuite/gdb.server/ext-attach.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/ext-attach.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/ext-attach.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/extended-remote-restart.c ./gdb/testsuite/gdb.server/extended-remote-restart.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/extended-remote-restart.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/extended-remote-restart.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/extended-remote-restart.exp ./gdb/testsuite/gdb.server/extended-remote-restart.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/extended-remote-restart.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/extended-remote-restart.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -88,12 +88,16 @@ proc test_reload { do_kill_p follow_chil
     gdb_breakpoint "breakpt"
     gdb_continue_to_breakpoint "breakpt"
 
-    # Check we have the expected inferiors.
+    set ws "\[ \t\]+"
+    set any_re "\[^\r\n\]+"
+    set connection_re $any_re
+    set executable_re $any_re
+
     gdb_test "info inferiors" \
 	[multi_line \
-	     "  Num  Description       Executable.*" \
-	     "${parent_prefix} 1 +${live_inf_ptn} \[^\r\n\]+" \
-	     "${child_prefix} 2 +${live_inf_ptn} \[^\r\n\]+" ] \
+	     "  Num${ws}Description${ws}Connection${ws}Executable${ws}" \
+	     "${parent_prefix} 1${ws}${live_inf_ptn}${ws}${connection_re}${executable_re}" \
+	     "${child_prefix} 2${ws}${live_inf_ptn}${ws}${connection_re}${executable_re}" ] \
 	"Check inferiors at breakpoint"
 
     if { $do_kill_p } {
@@ -107,13 +111,15 @@ proc test_reload { do_kill_p follow_chil
 	# Check the first inferior really did die.
 	gdb_test "info inferiors" \
 	    [multi_line \
-		 "  Num  Description       Executable.*" \
-		 "${parent_prefix} 1 +${parent_inf_after_kill_ptn} \[^\r\n\]+" \
-		 "${child_prefix} 2 +${child_inf_after_kill_ptn} \[^\r\n\]+" ] \
+		 "  Num${ws}Description${ws}Connection${ws}Executable${ws}" \
+		 "${parent_prefix} 1${ws}${parent_inf_after_kill_ptn}${ws}${connection_re}${executable_re}" \
+		 "${child_prefix} 2${ws}${child_inf_after_kill_ptn}${ws}${connection_re}${executable_re}" ] \
 	    "Check inferior was killed"
     }
 
-    # Reconnect to the target.
+    # Disconnect, and reconnect to the target.
+    gdb_test "disconnect" ".*"
+
     if { [gdb_reconnect] == 0 } {
 	pass "reconnect after fork"
     } else {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/ext-restart.exp ./gdb/testsuite/gdb.server/ext-restart.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/ext-restart.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/ext-restart.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/ext-run.exp ./gdb/testsuite/gdb.server/ext-run.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/ext-run.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/ext-run.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/ext-wrapper.exp ./gdb/testsuite/gdb.server/ext-wrapper.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/ext-wrapper.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/ext-wrapper.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/file-transfer.exp ./gdb/testsuite/gdb.server/file-transfer.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/file-transfer.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/file-transfer.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # This testcase is part of GDB, the GNU debugger.
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/multi-ui-errors.c ./gdb/testsuite/gdb.server/multi-ui-errors.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/multi-ui-errors.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.server/multi-ui-errors.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,32 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main (void)
+{
+  int i;
+
+  printf ("@@XX@@ Inferior Starting @@XX@@\n");
+
+  for (i = 0; i < 120; ++i)
+    sleep (1);
+
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/multi-ui-errors.exp ./gdb/testsuite/gdb.server/multi-ui-errors.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/multi-ui-errors.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.server/multi-ui-errors.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,108 @@
+# This testcase is part of GDB, the GNU debugger.
+#
+# Copyright 2019-2021 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 what happens if we have multiple UIs in use, and an error
+# occurs while running a GDB command.  Specifically, do both UIs
+# return to an interactive state, or does one (or both) of them get
+# stuck in a non-interactive state.
+
+load_lib gdbserver-support.exp
+
+standard_testfile
+
+if {[skip_gdbserver_tests]} {
+    return 0
+}
+
+if {[prepare_for_testing "failed to prepare" ${testfile} ${srcfile}]} {
+    return -1
+}
+
+# Make sure we're disconnected, in case we're testing with an
+# extended-remote board, therefore already connected.
+gdb_test "disconnect" ".*"
+
+# Start gdbserver.
+set res [gdbserver_spawn "${binfile}"]
+set gdbserver_protocol [lindex $res 0]
+set gdbserver_gdbport [lindex $res 1]
+set gdbserver_pid [exp_pid -i $server_spawn_id]
+
+# Save the main UI's spawn ID.
+set gdb_main_spawn_id $gdb_spawn_id
+
+# Create the new PTY for the secondary console UI, issue the 'new-ui'
+# command, and wait for a prompt on the second UI.
+spawn -pty
+set extra_spawn_id $spawn_id
+set extra_tty_name $spawn_out(slave,name)
+gdb_test_multiple "new-ui console $extra_tty_name" "new-ui" {
+    -re "New UI allocated\r\n$gdb_prompt $" {
+	pass $gdb_test_name
+    }
+}
+with_spawn_id $extra_spawn_id {
+    gdb_test_multiple "" "initial prompt on extra console" {
+	-re "$gdb_prompt $" {
+	    pass $gdb_test_name
+	}
+    }
+}
+
+# Connect to the remote and continue its execution from the other UI.
+with_spawn_id $extra_spawn_id {
+    gdb_test "target $gdbserver_protocol $gdbserver_gdbport" ".*" \
+	"connect to gdbserver"
+    send_gdb "continue\n"
+}
+
+# We're going to kill the gdbserver, but before we do, lets make sure
+# that the inferior has started executing.
+with_spawn_id $server_spawn_id {
+    gdb_test_multiple "" "ensure inferior is running" {
+	-re "@@XX@@ Inferior Starting @@XX@@" {
+	    pass $gdb_test_name
+	}
+	timeout {
+	    fail $gdb_test_name
+	}
+    }
+}
+
+# Interact with the main UI.
+with_spawn_id $gdb_main_spawn_id {
+    gdb_test "echo hello\\n" "hello" "interact with GDB's main UI"
+}
+
+# Now kill the gdbserver.
+remote_exec target "kill -9 $gdbserver_pid"
+
+# We expect to land back at a GDB prompt in both UIs, however there is
+# currently an issue that in the original UI GDB doesn't reprint its
+# prompt.  That said, getting a prompt isn't the point of this test.
+# The point is that we should be able to interact with GDB from either
+# interpreter now.
+
+with_spawn_id $gdb_main_spawn_id {
+    gdb_test "echo" "" \
+	"main UI, prompt after gdbserver dies"
+}
+
+with_spawn_id $extra_spawn_id {
+    gdb_test "echo" "" \
+	"extra UI, prompt after gdbserver dies"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/non-existing-program.exp ./gdb/testsuite/gdb.server/non-existing-program.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/non-existing-program.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/non-existing-program.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/normal.c ./gdb/testsuite/gdb.server/normal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/normal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/normal.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/no-thread-db.c ./gdb/testsuite/gdb.server/no-thread-db.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/no-thread-db.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/no-thread-db.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 Free Software Foundation, Inc.
 
    Contributed by Intel Corporation.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/no-thread-db.exp ./gdb/testsuite/gdb.server/no-thread-db.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/no-thread-db.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/no-thread-db.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corporation.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/reconnect-ctrl-c.c ./gdb/testsuite/gdb.server/reconnect-ctrl-c.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/reconnect-ctrl-c.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/reconnect-ctrl-c.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/reconnect-ctrl-c.exp ./gdb/testsuite/gdb.server/reconnect-ctrl-c.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/reconnect-ctrl-c.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/reconnect-ctrl-c.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/run-without-local-binary.exp ./gdb/testsuite/gdb.server/run-without-local-binary.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/run-without-local-binary.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/run-without-local-binary.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server.c ./gdb/testsuite/gdb.server/server.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/server.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-connect.exp ./gdb/testsuite/gdb.server/server-connect.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-connect.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/server-connect.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-exec-info.exp ./gdb/testsuite/gdb.server/server-exec-info.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-exec-info.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/server-exec-info.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-kill.c ./gdb/testsuite/gdb.server/server-kill.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-kill.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/server-kill.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-kill.exp ./gdb/testsuite/gdb.server/server-kill.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-kill.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/server-kill.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -15,6 +15,9 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# Check that GDB handles GDBserver disconnecting abruptly, in several
+# scenarios.
+
 load_lib gdbserver-support.exp
 
 standard_testfile
@@ -23,40 +26,103 @@ if {[skip_gdbserver_tests]} {
     return 0
 }
 
-if { [prepare_for_testing "failed to prepare" ${testfile}] } {
+if { [build_executable "failed to prepare" ${testfile}] } {
     return -1
 }
 
-# Make sure we're disconnected, in case we're testing with an
-# extended-remote board, therefore already connected.
-gdb_test "disconnect" ".*"
-
-gdbserver_run ""
-
-# Continue past server_pid assignment.
-gdb_breakpoint ${srcfile}:[gdb_get_line_number "i = 0;"]
-gdb_continue_to_breakpoint "after server_pid assignment"
-
-# Get the pid of GDBServer.
-set test "p server_pid"
-gdb_test_multiple $test $test {
-    -re " = ($decimal)\r\n$gdb_prompt $" {
-	set server_pid $expect_out(1,string)
-	pass $test
+# Spawn GDBserver, run to main, extract GDBserver's PID and save it in
+# the SERVER_PID global.
+
+proc prepare {} {
+    global binfile gdb_prompt srcfile decimal
+    global server_pid
+
+    clean_restart $binfile
+
+    # Make sure we're disconnected, in case we're testing with an
+    # extended-remote board, therefore already connected.
+    gdb_test "disconnect" ".*"
+
+    gdbserver_run ""
+
+    # Continue past server_pid assignment.
+    gdb_breakpoint ${srcfile}:[gdb_get_line_number "i = 0;"]
+    gdb_continue_to_breakpoint "after server_pid assignment"
+
+    # Get the pid of GDBServer.
+    set test "p server_pid"
+    set server_pid 0
+    gdb_test_multiple $test $test {
+	-re " = ($decimal)\r\n$gdb_prompt $" {
+	    set server_pid $expect_out(1,string)
+	    pass $test
+	}
+    }
+
+    if {$server_pid == 0} {
+	return 0
     }
+
+    return 1
 }
 
-if ![info exists server_pid] {
-    return -1
+# Kill GDBserver using the PID saved by prepare.
+
+proc kill_server {} {
+    global server_pid
+
+    remote_exec target "kill -9 $server_pid"
+}
+
+# Test issuing "tstatus" right after the connection is dropped.
+
+proc_with_prefix test_tstatus {} {
+    if ![prepare] {
+	return
+    }
+
+    kill_server
+
+    # Enable trace status packet which is disabled after the
+    # connection if the remote target doesn't support tracepoint at
+    # all.  Otherwise, no RSP packet is sent out.
+    gdb_test_no_output "set remote trace-status-packet on"
+
+    # Force GDB to talk with GDBserver, so that we can get the
+    # "connection closed" error.
+    gdb_test "tstatus" {Remote connection closed|Remote communication error\.  Target disconnected\.: Connection reset by peer\.}
 }
 
-remote_exec target "kill -9 $server_pid"
+# Test unwinding with no debug/unwind info, right after the connection
+# is dropped.
+
+proc_with_prefix test_unwind_nosyms {} {
+    if ![prepare] {
+	return
+    }
+
+    # Remove symbols, so that we try to unwind with one of the
+    # heuristic unwinders, and read memory from within its sniffer.
+    gdb_unload
+
+    kill_server
+
+    gdb_test "bt" "(Target disconnected|Remote connection closed|Remote communication error).*"
+}
+
+# Test unwinding with debug/unwind info, right after the connection is
+# dropped.
+
+proc_with_prefix test_unwind_syms {} {
+    if ![prepare] {
+	return
+    }
+
+    kill_server
+
+    gdb_test "bt" "(Target disconnected|Remote connection closed|Remote communication error).*"
+}
 
-# Enable trace status packet which is disabled after the connection
-# if the remote target doesn't support tracepoint at all.  Otherwise,
-# no RSP packet is sent out.
-gdb_test_no_output "set remote trace-status-packet on"
-
-# Force GDB to talk with GDBserver, so that we can get the
-# "connection closed" error.
-gdb_test "tstatus" {Remote connection closed|Remote communication error\.  Target disconnected\.: Connection reset by peer\.}
+test_tstatus
+test_unwind_nosyms
+test_unwind_syms
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-kill-python.exp ./gdb/testsuite/gdb.server/server-kill-python.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-kill-python.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.server/server-kill-python.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,88 @@
+# This testcase is part of GDB, the GNU debugger.
+#
+# Copyright 2019-2021 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 script exposes a bug where, if gdbserver dies while GDB is
+# sourcing a python command like 'gdb.execute ("continue")', then GDB
+# will deadlock.
+
+load_lib gdbserver-support.exp
+
+standard_testfile multi-ui-errors.c
+
+if {[skip_gdbserver_tests]} {
+    return 0
+}
+
+if {[build_executable "failed to prepare" ${testfile} \
+	 ${srcfile}] == -1} {
+    return -1
+}
+
+# Start gdbserver.
+set res [gdbserver_spawn "${binfile}"]
+set gdbserver_protocol [lindex $res 0]
+set gdbserver_gdbport [lindex $res 1]
+set gdbserver_pid [exp_pid -i $server_spawn_id]
+
+# Generate a python script we will later source.
+set file1 [standard_output_file file1.py]
+set fd [open "$file1" w]
+puts $fd \
+"import gdb
+
+def do_gdb_stuff ():
+    gdb.execute ('target $gdbserver_protocol $gdbserver_gdbport')
+    gdb.execute ('continue')
+
+do_gdb_stuff()"
+close $fd
+
+# Now start GDB, sourcing the python command file we generated above.
+# Set the height and width so we don't end up at a paging prompt.
+if {[gdb_spawn_with_cmdline_opts \
+	 "-quiet -iex \"set height 0\" -iex \"set width 0\" -ex \"source $file1\""] != 0} {
+    fail "spawn"
+    return
+}
+
+# Wait for the inferior to start up.
+with_spawn_id $server_spawn_id {
+    gdb_test_multiple "" "ensure inferior is running" {
+	-re "@@XX@@ Inferior Starting @@XX@@" {
+	    pass $gdb_test_name
+	}
+	timeout {
+	    fail $gdb_test_name
+	}
+    }
+}
+
+# Now kill the gdbserver.
+remote_exec target "kill -9 $gdbserver_pid"
+
+# Wait for GDB to return to a prompt.
+gdb_test_multiple "" "landed at prompt after gdbserver dies" {
+    -re "$gdb_prompt $" {
+	pass $gdb_test_name
+    }
+    timeout {
+	fail "$gdb_test_name (timeout)"
+    }
+}
+
+# Run a simple command to ensure we can interact with GDB.
+gdb_test "echo hello\\n" "hello" "can we interact with gdb"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-mon.exp ./gdb/testsuite/gdb.server/server-mon.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-mon.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/server-mon.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-run.exp ./gdb/testsuite/gdb.server/server-run.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/server-run.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/server-run.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2005-2020 Free Software Foundation, Inc.
+# Copyright 2005-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/solib-list.exp ./gdb/testsuite/gdb.server/solib-list.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/solib-list.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/solib-list.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -92,12 +92,28 @@ foreach nonstop { 0 1 } { with_test_pref
 	     {(Are you sure you want to change the file|Load new symbol table from ".*")\? \(y or n\) } "y"
 
     set test "target $gdbserver_protocol"
+    set ok 0
+    set new_symbol_table 0
     gdb_test_multiple "target $gdbserver_protocol $gdbserver_gdbport" $test {
-	-re "Remote debugging using .*\r\n$gdb_prompt " {
+	-re "Remote debugging using" {
+	    set ok 1
+	    exp_continue
+	}
+	-re {.*Load new symbol table from ".*"\? \(y or n\) } {
+	    set new_symbol_table 1
+	    send_gdb "y\n" answer
+	    exp_continue
+	}
+	-re ".*\r\n$gdb_prompt " {
 	    # Do not anchor end, there may be more output in non-stop mode.
-	    pass $test
+	    if ($ok) {
+		pass $test
+	    } else {
+		fail $test
+	    }
 	}
     }
+    gdb_assert {$new_symbol_table == 1}
 
     gdb_test "continue" "Program received signal SIGUSR1, .*"
     gdb_test "sharedlibrary" ".*"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/solib-list-lib.c ./gdb/testsuite/gdb.server/solib-list-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/solib-list-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/solib-list-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/solib-list-main.c ./gdb/testsuite/gdb.server/solib-list-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/solib-list-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/solib-list-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/stop-reply-no-thread.c ./gdb/testsuite/gdb.server/stop-reply-no-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/stop-reply-no-thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/stop-reply-no-thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/stop-reply-no-thread.exp ./gdb/testsuite/gdb.server/stop-reply-no-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/stop-reply-no-thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/stop-reply-no-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -32,43 +32,75 @@ if [prepare_for_testing "failed to prepa
     return -1
 }
 
-# Make sure we're disconnected, in case we're testing with an
-# extended-remote board, therefore already connected.
-gdb_test "disconnect" ".*"
-
-# Start GDBserver, with ";thread:NNN" in T stop replies disabled,
-# emulating old gdbservers when debugging single-threaded programs.
-set res [gdbserver_start "--disable-packet=Tthread" $binfile]
-set gdbserver_protocol [lindex $res 0]
-set gdbserver_gdbport [lindex $res 1]
-
-# Disable XML-based thread listing, and multi-process extensions.
-gdb_test_no_output "set remote threads-packet off"
-gdb_test_no_output "set remote multiprocess-feature-packet off"
-
-set res [gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport]
-if ![gdb_assert {$res == 0} "connect"] {
-    return
-}
-
-# There should be only one thread listed.
-set test "info threads"
-gdb_test_multiple $test $test {
-    -re "2 Thread.*$gdb_prompt $" {
-	fail $test
+# Run the tests with different features of GDBserver disabled.
+proc run_test { disable_feature target_nonstop } {
+    global binfile gdb_prompt decimal
+
+    clean_restart ${binfile}
+
+    # Make sure we're disconnected, in case we're testing with an
+    # extended-remote board, therefore already connected.
+    gdb_test "disconnect" ".*"
+
+    set packet_arg ""
+    if { $disable_feature != "" } {
+	set packet_arg "--disable-packet=${disable_feature}"
     }
-    -re "has terminated.*$gdb_prompt $" {
-	fail $test
+    set res [gdbserver_start $packet_arg $binfile]
+    set gdbserver_protocol [lindex $res 0]
+    set gdbserver_gdbport [lindex $res 1]
+
+    # Disable XML-based thread listing, and multi-process extensions.
+    gdb_test_no_output "set remote threads-packet off"
+    gdb_test_no_output "set remote multiprocess-feature-packet off"
+
+    # Set target-nonstop mode.
+    gdb_test_no_output "maint set target-non-stop ${target_nonstop}"
+
+    set res [gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport]
+    if ![gdb_assert {$res == 0} "connect"] {
+	return
     }
-    -re "\\\* 1\[\t \]*Thread\[^\r\n\]*\r\n$gdb_prompt $" {
-	pass $test
+
+    # There should be only one thread listed.
+    set test "info threads"
+    gdb_test_multiple $test $test {
+	-re "2 Thread.*$gdb_prompt $" {
+	    fail $test
+	}
+	-re "has terminated.*$gdb_prompt $" {
+	    fail $test
+	}
+	-re "\\\* 1\[\t \]*Thread\[^\r\n\]*\r\n$gdb_prompt $" {
+	    pass $test
+	}
     }
-}
 
-gdb_breakpoint "main"
+    gdb_breakpoint "main"
+
+    # Bad GDB behaved like this:
+    #  (gdb) c
+    #  Cannot execute this command without a live selected thread.
+    #  (gdb)
+    gdb_test "c" "Breakpoint $decimal, main.*" "continue to main"
+
+    # Continue until exit.  The server sends a 'W' with no PID.
+    # Bad GDB gave an error like below when target is nonstop:
+    #  (gdb) c
+    #  Continuing.
+    #  No process or thread specified in stop reply: W00
+    gdb_continue_to_end "" continue 1
+}
 
-# Bad GDB behaved like this:
-#  (gdb) c
-#  Cannot execute this command without a live selected thread.
-#  (gdb)
-gdb_test "c" "Breakpoint $decimal, main.*" "continue to main"
+# Disable different features within gdbserver:
+#
+# Tthread: Start GDBserver, with ";thread:NNN" in T stop replies disabled,
+#          emulating old gdbservers when debugging single-threaded programs.
+#
+# T: Start GDBserver with the entire 'T' stop reply packet disabled,
+#    GDBserver will instead send the 'S' stop reply.
+foreach_with_prefix to_disable { "" Tthread T } {
+    foreach_with_prefix t_nonstop { off on } {
+	run_test $to_disable $t_nonstop
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/sysroot.c ./gdb/testsuite/gdb.server/sysroot.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/sysroot.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/sysroot.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/sysroot.exp ./gdb/testsuite/gdb.server/sysroot.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/sysroot.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/sysroot.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -73,5 +73,6 @@ foreach_with_prefix sysroot { "local" "r
 
     # Test that we can stop inside a library.
     gdb_breakpoint printf
-    gdb_test "continue" "Breakpoint $decimal.* printf .*" "continue to printf"
+    gdb_test "continue" "Breakpoint $decimal.* (__)?printf .*" \
+	"continue to printf"
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/unittest.exp ./gdb/testsuite/gdb.server/unittest.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/unittest.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/unittest.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/wrapper.c ./gdb/testsuite/gdb.server/wrapper.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/wrapper.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/wrapper.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/wrapper.exp ./gdb/testsuite/gdb.server/wrapper.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.server/wrapper.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.server/wrapper.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/exclfwd1.c ./gdb/testsuite/gdb.stabs/exclfwd1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/exclfwd1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.stabs/exclfwd1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/exclfwd2.c ./gdb/testsuite/gdb.stabs/exclfwd2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/exclfwd2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.stabs/exclfwd2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/exclfwd.exp ./gdb/testsuite/gdb.stabs/exclfwd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/exclfwd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.stabs/exclfwd.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2004-2020 Free Software Foundation, Inc.
+#   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/exclfwd.h ./gdb/testsuite/gdb.stabs/exclfwd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/exclfwd.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.stabs/exclfwd.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/gdb11479.c ./gdb/testsuite/gdb.stabs/gdb11479.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/gdb11479.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.stabs/gdb11479.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 Free Software Foundation, Inc.
 
    Contributed by Pierre Muller.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/gdb11479.exp ./gdb/testsuite/gdb.stabs/gdb11479.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/gdb11479.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.stabs/gdb11479.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/weird.exp ./gdb/testsuite/gdb.stabs/weird.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.stabs/weird.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.stabs/weird.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1997-2020 Free Software Foundation, Inc.
+# Copyright 1997-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.testsuite/foreach_with_prefix.exp ./gdb/testsuite/gdb.testsuite/foreach_with_prefix.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.testsuite/foreach_with_prefix.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.testsuite/foreach_with_prefix.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/async.c ./gdb/testsuite/gdb.threads/async.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/async.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/async.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,70 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2019-2021 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/>.  */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <pthread.h>
+
+#define NUM 2
+
+static pthread_barrier_t threads_started_barrier;
+
+static void *
+thread_function (void *arg)
+{
+  pthread_barrier_wait (&threads_started_barrier);
+
+  while (1)
+    {
+      /* Sleep a bit to give the other threads a chance to run.  */
+      usleep (1); /* set breakpoint here */
+    }
+
+  pthread_exit (NULL);
+}
+
+static void
+all_started (void)
+{
+}
+
+int
+main ()
+{
+  pthread_t threads[NUM];
+  long i;
+
+  pthread_barrier_init (&threads_started_barrier, NULL, NUM + 1);
+
+  for (i = 1; i <= NUM; i++)
+    {
+      int res;
+
+      res = pthread_create (&threads[i - 1],
+			    NULL,
+			    thread_function, NULL);
+    }
+
+  pthread_barrier_wait (&threads_started_barrier);
+
+  all_started ();
+
+  sleep (180);
+
+  exit (EXIT_SUCCESS);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/async.exp ./gdb/testsuite/gdb.threads/async.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/async.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/async.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,98 @@
+# Copyright (C) 2019-2021 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/>.
+
+standard_testfile
+
+if {[build_executable "failed to prepare" $testfile $srcfile {debug pthreads}] == -1} {
+    return -1
+}
+
+# At this point GDB will be busy handling the breakpoint hits and
+# re-resuming the program.  Even if GDB internally switches thread
+# context, the user should not notice it.  The following part of the
+# testcase ensures that.
+
+# Switch to thread EXPECTED_THR, and then confirm that the thread
+# stays selected.
+
+proc test_current_thread {expected_thr} {
+    global decimal
+    global gdb_prompt
+    global binfile
+
+    clean_restart $binfile
+
+    if {![runto "all_started"]} {
+	fail "could not run to all_started"
+	return
+    }
+
+    # Set a breakpoint that continuously fires but doeesn't cause a stop.
+    gdb_breakpoint [concat [gdb_get_line_number "set breakpoint here"] " if 0"]
+
+    gdb_test "thread $expected_thr" "Switching to thread $expected_thr .*" \
+	"switch to thread $expected_thr"
+
+    # Continue the program in the background.
+    set test "continue&"
+    gdb_test_multiple "continue&" $test {
+	-re "Continuing\\.\r\n$gdb_prompt " {
+	    pass $test
+	}
+    }
+
+    set test "current thread is $expected_thr"
+    set fails 0
+    for {set i 0} {$i < 10} {incr i} {
+	after 200
+
+	set cur_thread 0
+	gdb_test_multiple "thread" $test {
+	    -re "Current thread is ($decimal) .*$gdb_prompt " {
+		set cur_thread $expect_out(1,string)
+	    }
+	}
+
+	if {$cur_thread != $expected_thr} {
+	    incr fails
+	}
+    }
+
+    gdb_assert {$fails == 0} $test
+
+    # Explicitly interrupt the target, because in all-stop/remote,
+    # that's all we can do when the target is running.  If we don't do
+    # this, we'd time out trying to kill the target, while bringing
+    # down gdb & gdbserver.
+    set test "interrupt"
+    gdb_test_multiple $test $test {
+	-re "^interrupt\r\n$gdb_prompt " {
+	    gdb_test_multiple "" $test {
+		-re "Thread .* received signal SIGINT, Interrupt\\." {
+		    pass $test
+		}
+	    }
+	}
+    }
+}
+
+# Try once with each thread as current, to avoid missing a bug just
+# because some part of GDB manages to switch to the right thread by
+# chance.
+for {set thr 1} {$thr <= 3} {incr thr} {
+    with_test_prefix "thread $thr" {
+	test_current_thread $thr
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-into-signal.c ./gdb/testsuite/gdb.threads/attach-into-signal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-into-signal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/attach-into-signal.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-into-signal.exp ./gdb/testsuite/gdb.threads/attach-into-signal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-into-signal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/attach-into-signal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-many-short-lived-threads.c ./gdb/testsuite/gdb.threads/attach-many-short-lived-threads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-many-short-lived-threads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/attach-many-short-lived-threads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-many-short-lived-threads.exp ./gdb/testsuite/gdb.threads/attach-many-short-lived-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-many-short-lived-threads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/attach-many-short-lived-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
@@ -108,12 +108,18 @@ proc test {} {
 	    sleep 1
 
 	    set test "no new threads"
-	    gdb_test_multiple "info threads" $test {
-		-re "New .*$gdb_prompt $" {
-		    fail $test
+	    set status 1
+	    gdb_test_multiple "info threads" $test -lbl {
+		-re "\r\n\[^\r\n\]*New " {
+		    set status 0
+		    exp_continue
 		}
-		-re "$gdb_prompt $" {
-		    pass $test
+		-re -wrap "" {
+		    if { $status == 1 } {
+			pass $gdb_test_name
+		    } else {
+			fail $gdb_test_name
+		    }
 		}
 	    }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-slow-waitpid.c ./gdb/testsuite/gdb.threads/attach-slow-waitpid.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-slow-waitpid.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/attach-slow-waitpid.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-slow-waitpid.exp ./gdb/testsuite/gdb.threads/attach-slow-waitpid.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-slow-waitpid.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/attach-slow-waitpid.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2018-2020 Free Software Foundation, Inc.
+# Copyright 2018-2021 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
@@ -88,7 +88,12 @@ set test_spawn_id [spawn_wait_for_attach
 set testpid [spawn_id_get_pid $test_spawn_id]
 
 # Start GDB with preload library in place.
-gdb_spawn_with_ld_preload $libobj
+if { [gdb_spawn_with_ld_preload $libobj] == -1 } {
+    # Make sure we get UNTESTED rather than UNRESOLVED.
+    set errcnt 0
+    untested "Couldn't start GDB with preloaded lib"
+    return -1
+}
 
 # Load binary, and attach to running program.
 gdb_load ${binfile}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-stopped.c ./gdb/testsuite/gdb.threads/attach-stopped.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-stopped.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/attach-stopped.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-stopped.exp ./gdb/testsuite/gdb.threads/attach-stopped.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/attach-stopped.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/attach-stopped.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2008-2020 Free Software Foundation, Inc.
+# Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/bp_in_thread.c ./gdb/testsuite/gdb.threads/bp_in_thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/bp_in_thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/bp_in_thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* A small multi-threaded test case.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/bp_in_thread.exp ./gdb/testsuite/gdb.threads/bp_in_thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/bp_in_thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/bp_in_thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/break-while-running.c ./gdb/testsuite/gdb.threads/break-while-running.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/break-while-running.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/break-while-running.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/break-while-running.exp ./gdb/testsuite/gdb.threads/break-while-running.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/break-while-running.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/break-while-running.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/check-libthread-db.c ./gdb/testsuite/gdb.threads/check-libthread-db.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/check-libthread-db.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/check-libthread-db.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/check-libthread-db.exp ./gdb/testsuite/gdb.threads/check-libthread-db.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/check-libthread-db.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/check-libthread-db.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-attach-detach.c ./gdb/testsuite/gdb.threads/clone-attach-detach.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-attach-detach.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/clone-attach-detach.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-attach-detach.exp ./gdb/testsuite/gdb.threads/clone-attach-detach.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-attach-detach.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/clone-attach-detach.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-new-thread-event.c ./gdb/testsuite/gdb.threads/clone-new-thread-event.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-new-thread-event.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/clone-new-thread-event.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
@@ -43,7 +43,7 @@ tkill (int lwpid, int signo)
 }
 
 static pid_t
-gettid (void)
+local_gettid (void)
 {
   return syscall (__NR_gettid);
 }
@@ -51,7 +51,7 @@ gettid (void)
 static int
 fn (void *unused)
 {
-  tkill (gettid (), SIGUSR1);
+  tkill (local_gettid (), SIGUSR1);
   return 0;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-new-thread-event.exp ./gdb/testsuite/gdb.threads/clone-new-thread-event.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-new-thread-event.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/clone-new-thread-event.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-thread_db.c ./gdb/testsuite/gdb.threads/clone-thread_db.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-thread_db.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/clone-thread_db.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-thread_db.exp ./gdb/testsuite/gdb.threads/clone-thread_db.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/clone-thread_db.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/clone-thread_db.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/continue-pending-after-query.c ./gdb/testsuite/gdb.threads/continue-pending-after-query.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/continue-pending-after-query.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/continue-pending-after-query.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/continue-pending-after-query.exp ./gdb/testsuite/gdb.threads/continue-pending-after-query.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/continue-pending-after-query.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/continue-pending-after-query.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/continue-pending-status.c ./gdb/testsuite/gdb.threads/continue-pending-status.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/continue-pending-status.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/continue-pending-status.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/continue-pending-status.exp ./gdb/testsuite/gdb.threads/continue-pending-status.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/continue-pending-status.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/continue-pending-status.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/corethreads.c ./gdb/testsuite/gdb.threads/corethreads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/corethreads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/corethreads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2011-2020 Free Software Foundation, Inc.
+/* Copyright 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/corethreads.exp ./gdb/testsuite/gdb.threads/corethreads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/corethreads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/corethreads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/create-fail.c ./gdb/testsuite/gdb.threads/create-fail.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/create-fail.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/create-fail.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/create-fail.exp ./gdb/testsuite/gdb.threads/create-fail.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/create-fail.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/create-fail.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/current-lwp-dead.c ./gdb/testsuite/gdb.threads/current-lwp-dead.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/current-lwp-dead.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/current-lwp-dead.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/current-lwp-dead.exp ./gdb/testsuite/gdb.threads/current-lwp-dead.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/current-lwp-dead.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/current-lwp-dead.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/dlopen-libpthread.c ./gdb/testsuite/gdb.threads/dlopen-libpthread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/dlopen-libpthread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/dlopen-libpthread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/dlopen-libpthread.exp ./gdb/testsuite/gdb.threads/dlopen-libpthread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/dlopen-libpthread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/dlopen-libpthread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/dlopen-libpthread-lib.c ./gdb/testsuite/gdb.threads/dlopen-libpthread-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/dlopen-libpthread-lib.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/dlopen-libpthread-lib.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/execl1.c ./gdb/testsuite/gdb.threads/execl1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/execl1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/execl1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/execl.c ./gdb/testsuite/gdb.threads/execl.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/execl.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/execl.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/execl.exp ./gdb/testsuite/gdb.threads/execl.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/execl.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/execl.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
@@ -42,6 +42,13 @@ gdb_test "continue" ".*breakpoint here.*
 
 gdb_test "info threads" "1 *Thread.*2 *Thread.*3 *Thread.*" "info threads before exec"
 
+# Work around PR25656, where the breakpoint above sets 2 breakpoint locations:
+# - one on gdb.threads/execl.c:$linenumber, and
+# - one in GLIBC's execl.c:$linenumber, in __GI_execl
+# Delete the breakpoint to make sure we hit main upon continue, rather than
+# __GI_execl.
+gdb_test_no_output "delete 2"
+
 # When continuing from this point we'll hit the breakpoint in main()
 # again, this time in the exec'd process.
 gdb_test "continue" ".*Breakpoint 1, main.*" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-child-threads.c ./gdb/testsuite/gdb.threads/fork-child-threads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-child-threads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/fork-child-threads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-child-threads.exp ./gdb/testsuite/gdb.threads/fork-child-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-child-threads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/fork-child-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.c ./gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
@@ -90,6 +90,8 @@ thread_forks (void *arg)
 	  exit (1);
 	}
     }
+
+  return NULL;
 }
 
 /* Set this to tell the thread_breakpoint thread to exit.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.exp ./gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
@@ -142,7 +142,7 @@ proc do_test { cond_bp_target detach_on_
 	"no threads left"
 
     gdb_test "info inferiors" \
-	"Num\[ \t\]+Description\[ \t\]+Executable\[ \t\]+\r\n\\* 1 \[^\r\n\]+" \
+	"Num\[ \t\]+Description\[ \t\]+Connection\[ \t\]+Executable\[ \t\]+\r\n\\* 1 \[^\r\n\]+" \
 	"only inferior 1 left"
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-plus-threads.c ./gdb/testsuite/gdb.threads/fork-plus-threads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-plus-threads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/fork-plus-threads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
@@ -33,6 +33,7 @@ static void *
 thread_func (void *arg)
 {
   /* Empty.  */
+  return NULL;
 }
 
 static void
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-plus-threads.exp ./gdb/testsuite/gdb.threads/fork-plus-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-plus-threads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/fork-plus-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
@@ -109,7 +109,7 @@ proc do_test { detach_on_fork } {
 	"no threads left"
 
     gdb_test "info inferiors" \
-	"Num\[ \t\]+Description\[ \t\]+Executable\[ \t\]+\r\n\\* 1 \[^\r\n\]+" \
+	"Num\[ \t\]+Description\[ \t\]+Connection\[ \t\]+Executable\[ \t\]+\r\n\\* 1 \[^\r\n\]+" \
 	"only inferior 1 left"
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-thread-pending.c ./gdb/testsuite/gdb.threads/fork-thread-pending.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-thread-pending.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/fork-thread-pending.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-thread-pending.exp ./gdb/testsuite/gdb.threads/fork-thread-pending.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/fork-thread-pending.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/fork-thread-pending.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/gcore-stale-thread.c ./gdb/testsuite/gdb.threads/gcore-stale-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/gcore-stale-thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/gcore-stale-thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/gcore-stale-thread.exp ./gdb/testsuite/gdb.threads/gcore-stale-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/gcore-stale-thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/gcore-stale-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/gcore-thread.exp ./gdb/testsuite/gdb.threads/gcore-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/gcore-thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/gcore-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/hand-call-in-threads.c ./gdb/testsuite/gdb.threads/hand-call-in-threads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/hand-call-in-threads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/hand-call-in-threads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test case for hand function calls in multi-threaded program.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/hand-call-in-threads.exp ./gdb/testsuite/gdb.threads/hand-call-in-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/hand-call-in-threads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/hand-call-in-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/hand-call-new-thread.c ./gdb/testsuite/gdb.threads/hand-call-new-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/hand-call-new-thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/hand-call-new-thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
@@ -24,6 +24,7 @@ static int
 foo (void)
 {
   usleep (1);
+  return 0;
 }
 
 static void *
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/hand-call-new-thread.exp ./gdb/testsuite/gdb.threads/hand-call-new-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/hand-call-new-thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/hand-call-new-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/ia64-sigill.c ./gdb/testsuite/gdb.threads/ia64-sigill.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/ia64-sigill.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/ia64-sigill.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/ia64-sigill.exp ./gdb/testsuite/gdb.threads/ia64-sigill.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/ia64-sigill.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/ia64-sigill.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/info-threads-cur-sal-2.c ./gdb/testsuite/gdb.threads/info-threads-cur-sal-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/info-threads-cur-sal-2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/info-threads-cur-sal-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2013-2020 Free Software Foundation, Inc.
+/* Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/info-threads-cur-sal.c ./gdb/testsuite/gdb.threads/info-threads-cur-sal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/info-threads-cur-sal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/info-threads-cur-sal.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2007-2020 Free Software Foundation, Inc.
+/* Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/info-threads-cur-sal.exp ./gdb/testsuite/gdb.threads/info-threads-cur-sal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/info-threads-cur-sal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/info-threads-cur-sal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/interrupted-hand-call.c ./gdb/testsuite/gdb.threads/interrupted-hand-call.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/interrupted-hand-call.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/interrupted-hand-call.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test case for hand function calls interrupted by a signal in another thread.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/interrupted-hand-call.exp ./gdb/testsuite/gdb.threads/interrupted-hand-call.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/interrupted-hand-call.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/interrupted-hand-call.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/interrupt-while-step-over.c ./gdb/testsuite/gdb.threads/interrupt-while-step-over.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/interrupt-while-step-over.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/interrupt-while-step-over.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
@@ -44,6 +44,8 @@ child_function (void *arg)
   pthread_barrier_wait (&threads_started_barrier);
 
   infinite_loop ();
+
+  return NULL;
 }
 
 void
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/interrupt-while-step-over.exp ./gdb/testsuite/gdb.threads/interrupt-while-step-over.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/interrupt-while-step-over.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/interrupt-while-step-over.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/kill.c ./gdb/testsuite/gdb.threads/kill.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/kill.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/kill.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/killed.c ./gdb/testsuite/gdb.threads/killed.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/killed.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/killed.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/killed.exp ./gdb/testsuite/gdb.threads/killed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/killed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/killed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2002-2020 Free Software Foundation, Inc.
+# Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/killed-outside.c ./gdb/testsuite/gdb.threads/killed-outside.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/killed-outside.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/killed-outside.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,64 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+#include <pthread.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+pid_t pid;
+
+static pthread_barrier_t threads_started_barrier;
+
+static void
+all_started (void)
+{
+}
+
+static void *
+fun (void *dummy)
+{
+  int i;
+
+  pthread_barrier_wait (&threads_started_barrier);
+
+  for (i = 0; i < 180; i++)
+    sleep (1);
+
+  pthread_exit (NULL);
+}
+
+int
+main (void)
+{
+  int i;
+  pthread_t thread;
+
+  pid = getpid ();
+
+  pthread_barrier_init (&threads_started_barrier, NULL, 2);
+
+  pthread_create (&thread, NULL, fun, NULL);
+
+  pthread_barrier_wait (&threads_started_barrier);
+
+  all_started ();
+
+  for (i = 0; i < 180; i++)
+    sleep (1);
+
+  exit (EXIT_SUCCESS);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/killed-outside.exp ./gdb/testsuite/gdb.threads/killed-outside.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/killed-outside.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/killed-outside.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,57 @@
+# Copyright (C) 2020-2021 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-case tests that continuing an inferior that has been killed
+# using an external sigkill does not make gdb misbehave.
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+	 {pthreads debug}] == -1} {
+    return -1
+}
+
+if { ![runto "all_started"] } {
+    return -1
+}
+delete_breakpoints
+
+set testpid [get_valueof "" "pid" -1 "get pid of inferior"]
+if { $testpid == -1 } {
+    return -1
+}
+remote_exec target "kill -9 ${testpid}"
+
+# Give it some time to die.
+sleep 2
+
+set no_such_process_msg "Couldn't get registers: No such process\."
+set killed_msg "Program terminated with signal SIGKILL, Killed\."
+set no_longer_exists_msg "The program no longer exists\."
+set not_being_run_msg "The program is not being run\."
+
+gdb_test_multiple "continue" "prompt after first continue" {
+    -re "Continuing\.\r\n$no_such_process_msg\r\n$no_such_process_msg\r\n$gdb_prompt " {
+	pass $gdb_test_name
+	# Two times $no_such_process_msg.  The bug condition was triggered, go
+	# check for it.
+	gdb_test_multiple "" "messages" {
+	    -re ".*$killed_msg.*$no_longer_exists_msg\r\n" {
+		pass $gdb_test_name
+		gdb_test "continue" $not_being_run_msg "second continue"
+	    }
+	}
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/kill.exp ./gdb/testsuite/gdb.threads/kill.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/kill.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/kill.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/leader-exit.c ./gdb/testsuite/gdb.threads/leader-exit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/leader-exit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/leader-exit.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Clean exit of the thread group leader should not break GDB.
 
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/leader-exit.exp ./gdb/testsuite/gdb.threads/leader-exit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/leader-exit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/leader-exit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/linux-dp.exp ./gdb/testsuite/gdb.threads/linux-dp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/linux-dp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/linux-dp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/local-watch-wrong-thread.c ./gdb/testsuite/gdb.threads/local-watch-wrong-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/local-watch-wrong-thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/local-watch-wrong-thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp ./gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/local-watch-wrong-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/manythreads.c ./gdb/testsuite/gdb.threads/manythreads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/manythreads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/manythreads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Manythreads test program.
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 Free Software Foundation, Inc.
 
    Written by Jeff Johnston <jjohnstn@redhat.com> 
    Contributed by Red Hat
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/manythreads.exp ./gdb/testsuite/gdb.threads/manythreads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/manythreads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/manythreads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # manythreads.exp -- Expect script to test stopping many threads
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multi-create.c ./gdb/testsuite/gdb.threads/multi-create.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multi-create.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/multi-create.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Create threads from multiple threads in parallel.
-   Copyright 2007-2020 Free Software Foundation, Inc.
+   Copyright 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multi-create.exp ./gdb/testsuite/gdb.threads/multi-create.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multi-create.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/multi-create.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # multi-create.exp -- Test creating many threads in parallel
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multi-create-ns-info-thr.exp ./gdb/testsuite/gdb.threads/multi-create-ns-info-thr.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multi-create-ns-info-thr.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/multi-create-ns-info-thr.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multiple-step-overs.c ./gdb/testsuite/gdb.threads/multiple-step-overs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multiple-step-overs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/multiple-step-overs.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multiple-step-overs.exp ./gdb/testsuite/gdb.threads/multiple-step-overs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multiple-step-overs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/multiple-step-overs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multiple-successive-infcall.c ./gdb/testsuite/gdb.threads/multiple-successive-infcall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multiple-successive-infcall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/multiple-successive-infcall.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multiple-successive-infcall.exp ./gdb/testsuite/gdb.threads/multiple-successive-infcall.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/multiple-successive-infcall.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/multiple-successive-infcall.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/names.c ./gdb/testsuite/gdb.threads/names.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/names.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/names.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/names.exp ./gdb/testsuite/gdb.threads/names.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/names.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/names.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/next-bp-other-thread.c ./gdb/testsuite/gdb.threads/next-bp-other-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/next-bp-other-thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/next-bp-other-thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/next-bp-other-thread.exp ./gdb/testsuite/gdb.threads/next-bp-other-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/next-bp-other-thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/next-bp-other-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/next-while-other-thread-longjmps.c ./gdb/testsuite/gdb.threads/next-while-other-thread-longjmps.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/next-while-other-thread-longjmps.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/next-while-other-thread-longjmps.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/next-while-other-thread-longjmps.exp ./gdb/testsuite/gdb.threads/next-while-other-thread-longjmps.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/next-while-other-thread-longjmps.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/next-while-other-thread-longjmps.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-1.c ./gdb/testsuite/gdb.threads/non-ldr-exc-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-ldr-exc-1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-1.exp ./gdb/testsuite/gdb.threads/non-ldr-exc-1.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-1.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-ldr-exc-1.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-2.c ./gdb/testsuite/gdb.threads/non-ldr-exc-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-ldr-exc-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-2.exp ./gdb/testsuite/gdb.threads/non-ldr-exc-2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-ldr-exc-2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-3.c ./gdb/testsuite/gdb.threads/non-ldr-exc-3.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-3.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-ldr-exc-3.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-3.exp ./gdb/testsuite/gdb.threads/non-ldr-exc-3.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-3.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-ldr-exc-3.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-4.c ./gdb/testsuite/gdb.threads/non-ldr-exc-4.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-4.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-ldr-exc-4.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-4.exp ./gdb/testsuite/gdb.threads/non-ldr-exc-4.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exc-4.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-ldr-exc-4.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exit.c ./gdb/testsuite/gdb.threads/non-ldr-exit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-ldr-exit.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Clean exit of the thread group leader should not break GDB.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exit.exp ./gdb/testsuite/gdb.threads/non-ldr-exit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-ldr-exit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-ldr-exit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-stop-fair-events.c ./gdb/testsuite/gdb.threads/non-stop-fair-events.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-stop-fair-events.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-stop-fair-events.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-stop-fair-events.exp ./gdb/testsuite/gdb.threads/non-stop-fair-events.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/non-stop-fair-events.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/non-stop-fair-events.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/no-unwaited-for-left.c ./gdb/testsuite/gdb.threads/no-unwaited-for-left.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/no-unwaited-for-left.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/no-unwaited-for-left.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright 2007-2020 Free Software Foundation, Inc.
+/* Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/no-unwaited-for-left.exp ./gdb/testsuite/gdb.threads/no-unwaited-for-left.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/no-unwaited-for-left.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/no-unwaited-for-left.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/omp-par-scope.c ./gdb/testsuite/gdb.threads/omp-par-scope.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/omp-par-scope.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/omp-par-scope.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
@@ -18,6 +18,28 @@
 #include <stdio.h>
 #include <omp.h>
 
+omp_lock_t lock;
+omp_lock_t lock2;
+
+/* Enforce execution order between two threads using a lock.  */
+
+static void
+omp_set_lock_in_order (int num, omp_lock_t *lock)
+{
+  /* Ensure that thread num 0 first sets the lock.  */
+  if (num == 0)
+    omp_set_lock (lock);
+  #pragma omp barrier
+
+  /* Block thread num 1 until it can set the lock.  */
+  if (num == 1)
+    omp_set_lock (lock);
+
+  /* This bit here is guaranteed to be executed first by thread num 0, and
+     once thread num 0 unsets the lock, to be executed by thread num 1.  */
+  ;
+}
+
 /* Testcase for checking access to variables in a single / outer scope.
    Make sure that variables not referred to in the parallel section are
    accessible from the debugger.  */
@@ -31,6 +53,7 @@ single_scope (void)
 #pragma omp parallel num_threads (2) shared (s1, i1) private (s2, i2)
   {
     int thread_num = omp_get_thread_num ();
+    omp_set_lock_in_order (thread_num, &lock);
 
     s2 = 100 * (thread_num + 1) + 2;
     i2 = s2 + 10;
@@ -38,6 +61,8 @@ single_scope (void)
     #pragma omp critical
     printf ("single_scope: thread_num=%d, s1=%d, i1=%d, s2=%d, i2=%d\n",
 	    thread_num, s1, i1, s2, i2);
+
+    omp_unset_lock (&lock);
   }
 
   printf ("single_scope: s1=%d, s2=%d, s3=%d, i1=%d, i2=%d, i3=%d\n",
@@ -67,11 +92,15 @@ multi_scope (void)
 		     private (i21)
 	{
 	  int thread_num = omp_get_thread_num ();
+	  omp_set_lock_in_order (thread_num, &lock);
+
 	  i21 = 100 * (thread_num + 1) + 21;
 
 	  #pragma omp critical
 	  printf ("multi_scope: thread_num=%d, i01=%d, i11=%d, i21=%d\n",
 		  thread_num, i01, i11, i21);
+
+	  omp_unset_lock (&lock);
 	}
 
 	printf ("multi_scope: i01=%d, i02=%d, i11=%d, "
@@ -105,6 +134,7 @@ nested_func (void)
 #pragma omp parallel num_threads (2) shared (i, p, x) private (j, q, y)
       {
 	int tn = omp_get_thread_num ();
+	omp_set_lock_in_order (tn, &lock);
 
 	j = 1000 * (tn + 1);
 	q = j + 1;
@@ -112,6 +142,8 @@ nested_func (void)
 	#pragma omp critical
 	printf ("nested_func: tn=%d: i=%d, p=%d, x=%d, j=%d, q=%d, y=%d\n",
 		 tn, i, p, x, j, q, y);
+
+	omp_unset_lock (&lock);
       }
     }
   }
@@ -137,6 +169,8 @@ nested_parallel (void)
 #pragma omp parallel num_threads (2) private (l)
   {
     int num = omp_get_thread_num ();
+    omp_set_lock_in_order (num, &lock);
+
     int nthr = omp_get_num_threads ();
     int off = num * nthr;
     int k = off + 101;
@@ -144,23 +178,36 @@ nested_parallel (void)
 #pragma omp parallel num_threads (2) shared (num)
     {
       int inner_num = omp_get_thread_num ();
+      omp_set_lock_in_order (inner_num, &lock2);
+
       #pragma omp critical
       printf ("nested_parallel (inner threads): outer thread num = %d, thread num = %d\n", num, inner_num);
+
+      omp_unset_lock (&lock2);
     }
     #pragma omp critical
     printf ("nested_parallel (outer threads) %d: k = %d, l = %d\n", num, k, l);
+
+    omp_unset_lock (&lock);
   }
 }
 
 int
 main (int argc, char **argv)
 {
+  omp_init_lock (&lock);
+  omp_init_lock (&lock2);
+
   single_scope ();
   multi_scope ();
 #if HAVE_NESTED_FUNCTION_SUPPORT
   nested_func ();
 #endif
   nested_parallel ();
+
+  omp_destroy_lock (&lock);
+  omp_destroy_lock (&lock2);
+
   return 0;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/omp-par-scope.exp ./gdb/testsuite/gdb.threads/omp-par-scope.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/omp-par-scope.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/omp-par-scope.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -273,7 +273,9 @@ with_test_prefix "nested_parallel" {
 	    gdb_continue_to_breakpoint "at printf"
 
 	    if {$have_older_gcc} { setup_xfail "*-*-*" }
-	    set thread_num [get_valueof "" "num" "unknown"]
+	    # Use get_local_valueof instead of get_valueof to avoid picking up
+	    # some random 'num' in a shared library.
+	    set thread_num [get_local_valueof "num" "unknown"]
 
 	    gdb_test "print file_scope_var" "= 9876"
 	    if {$have_older_gcc} { setup_xfail "*-*-*" }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pending-step.c ./gdb/testsuite/gdb.threads/pending-step.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pending-step.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/pending-step.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pending-step.exp ./gdb/testsuite/gdb.threads/pending-step.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pending-step.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/pending-step.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/print-threads.exp ./gdb/testsuite/gdb.threads/print-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/print-threads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/print-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/process-dies-while-detaching.c ./gdb/testsuite/gdb.threads/process-dies-while-detaching.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/process-dies-while-detaching.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/process-dies-while-detaching.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/process-dies-while-detaching.exp ./gdb/testsuite/gdb.threads/process-dies-while-detaching.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/process-dies-while-detaching.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/process-dies-while-detaching.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/process-dies-while-handling-bp.c ./gdb/testsuite/gdb.threads/process-dies-while-handling-bp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/process-dies-while-handling-bp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/process-dies-while-handling-bp.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/process-dies-while-handling-bp.exp ./gdb/testsuite/gdb.threads/process-dies-while-handling-bp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/process-dies-while-handling-bp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/process-dies-while-handling-bp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pthread_cond_wait.c ./gdb/testsuite/gdb.threads/pthread_cond_wait.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pthread_cond_wait.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/pthread_cond_wait.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* A small multi-threaded test case.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pthread_cond_wait.exp ./gdb/testsuite/gdb.threads/pthread_cond_wait.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pthread_cond_wait.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/pthread_cond_wait.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pthreads.c ./gdb/testsuite/gdb.threads/pthreads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pthreads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/pthreads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Pthreads test program.
-   Copyright 1996-2020 Free Software Foundation, Inc.
+   Copyright 1996-2021 Free Software Foundation, Inc.
 
    Written by Fred Fish of Cygnus Support
    Contributed by Cygnus Support
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pthreads.exp ./gdb/testsuite/gdb.threads/pthreads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/pthreads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/pthreads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/queue-signal.c ./gdb/testsuite/gdb.threads/queue-signal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/queue-signal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/queue-signal.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/queue-signal.exp ./gdb/testsuite/gdb.threads/queue-signal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/queue-signal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/queue-signal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/reconnect-signal.c ./gdb/testsuite/gdb.threads/reconnect-signal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/reconnect-signal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/reconnect-signal.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/reconnect-signal.exp ./gdb/testsuite/gdb.threads/reconnect-signal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/reconnect-signal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/reconnect-signal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/schedlock.c ./gdb/testsuite/gdb.threads/schedlock.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/schedlock.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/schedlock.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/schedlock.exp ./gdb/testsuite/gdb.threads/schedlock.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/schedlock.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/schedlock.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/siginfo-threads.c ./gdb/testsuite/gdb.threads/siginfo-threads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/siginfo-threads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/siginfo-threads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/siginfo-threads.exp ./gdb/testsuite/gdb.threads/siginfo-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/siginfo-threads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/siginfo-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-command-handle-nopass.c ./gdb/testsuite/gdb.threads/signal-command-handle-nopass.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-command-handle-nopass.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/signal-command-handle-nopass.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-command-handle-nopass.exp ./gdb/testsuite/gdb.threads/signal-command-handle-nopass.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-command-handle-nopass.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/signal-command-handle-nopass.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.c ./gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.exp ./gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/signal-command-multiple-signals-pending.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-delivered-right-thread.c ./gdb/testsuite/gdb.threads/signal-delivered-right-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-delivered-right-thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/signal-delivered-right-thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-delivered-right-thread.exp ./gdb/testsuite/gdb.threads/signal-delivered-right-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-delivered-right-thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/signal-delivered-right-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-sigtrap.c ./gdb/testsuite/gdb.threads/signal-sigtrap.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-sigtrap.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/signal-sigtrap.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-sigtrap.exp ./gdb/testsuite/gdb.threads/signal-sigtrap.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-sigtrap.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/signal-sigtrap.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.c ./gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp ./gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
@@ -104,7 +104,7 @@ gdb_test "set debug infrun 1"
 set test "step"
 gdb_test_sequence $test $test {
     "need to step-over"
-    "resume \\(step=1"
+    "resume_1: step=1,"
     "signal arrived while stepping over breakpoint"
     "stepped to a different line"
     "callme"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/sigstep-threads.c ./gdb/testsuite/gdb.threads/sigstep-threads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/sigstep-threads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/sigstep-threads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/sigstep-threads.exp ./gdb/testsuite/gdb.threads/sigstep-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/sigstep-threads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/sigstep-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/sigthread.exp ./gdb/testsuite/gdb.threads/sigthread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/sigthread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/sigthread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # sigthread.exp -- Expect script to test thread and signal interaction
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/slow-waitpid.c ./gdb/testsuite/gdb.threads/slow-waitpid.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/slow-waitpid.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/slow-waitpid.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2018-2020 Free Software Foundation, Inc.
+   Copyright 2018-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/staticthreads.c ./gdb/testsuite/gdb.threads/staticthreads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/staticthreads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/staticthreads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test program is part of GDB, The GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 Free Software Foundation, Inc.
 
    Originally written by Jeff Johnston <jjohnstn@redhat.com>,
    contributed by Red Hat
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/staticthreads.exp ./gdb/testsuite/gdb.threads/staticthreads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/staticthreads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/staticthreads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # static.exp -- test script, for GDB, the GNU debugger.
 
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.c ./gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.exp ./gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/stepi-random-signal.c ./gdb/testsuite/gdb.threads/stepi-random-signal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/stepi-random-signal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/stepi-random-signal.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/stepi-random-signal.exp ./gdb/testsuite/gdb.threads/stepi-random-signal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/stepi-random-signal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/stepi-random-signal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -87,7 +87,7 @@ set seen 0
 
 set test "stepi"
 if {[gdb_test_multiple "stepi" "$test" {
-    -re "infrun: random signal" {
+    -re {\[infrun\] handle_signal_stop: random signal} {
 	set seen 1
 	exp_continue
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-over-lands-on-breakpoint.c ./gdb/testsuite/gdb.threads/step-over-lands-on-breakpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-over-lands-on-breakpoint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/step-over-lands-on-breakpoint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-over-lands-on-breakpoint.exp ./gdb/testsuite/gdb.threads/step-over-lands-on-breakpoint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-over-lands-on-breakpoint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/step-over-lands-on-breakpoint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
@@ -38,7 +38,10 @@ proc do_test {displaced command} {
 
 	gdb_test_no_output "set displaced-stepping $displaced"
 
-	gdb_breakpoint [gdb_get_line_number "set wait-thread breakpoint here"]
+	set line [gdb_get_line_number "set wait-thread breakpoint here"]
+	if { ![gdb_breakpoint $line] } {
+	    return
+	}
 	gdb_continue_to_breakpoint "run to wait-thread breakpoint"
 	gdb_test "info threads" "\\\* 1 .*  2 .*" "info threads shows all threads"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.c ./gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2014-2020 Free Software Foundation, Inc.
+   Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.exp ./gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
@@ -57,7 +57,10 @@ proc do_test { displaced with_bp } {
 
 		gdb_test_no_output "set displaced-stepping $displaced"
 
-		gdb_breakpoint [gdb_get_line_number "set wait-thread breakpoint here"]
+		set line [gdb_get_line_number "set wait-thread breakpoint here"]
+		if { ![gdb_breakpoint $line] } {
+		    return
+		}
 		gdb_continue_to_breakpoint "run to wait-thread breakpoint"
 		gdb_test "info threads" "\\\* 1 .*  2 .*" "info threads shows all threads"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/stop-with-handle.c ./gdb/testsuite/gdb.threads/stop-with-handle.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/stop-with-handle.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/stop-with-handle.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/stop-with-handle.exp ./gdb/testsuite/gdb.threads/stop-with-handle.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/stop-with-handle.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/stop-with-handle.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,7 +15,7 @@
 
 # This test covers a case where SIGSTOP has been configured to be
 # passed to the target with GDB's 'handle' command, and then a
-# multi-threaded inferior encounters an event that causes all theads
+# multi-threaded inferior encounters an event that causes all threads
 # to be stopped.
 #
 # The problem that (used) to exist was that GDB would see the SIGSTOP,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/switch-threads.c ./gdb/testsuite/gdb.threads/switch-threads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/switch-threads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/switch-threads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* A minimal multi-threaded test case.
 
-   Copyright 2003-2020 Free Software Foundation, Inc.
+   Copyright 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/switch-threads.exp ./gdb/testsuite/gdb.threads/switch-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/switch-threads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/switch-threads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/threadapply.c ./gdb/testsuite/gdb.threads/threadapply.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/threadapply.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/threadapply.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/threadapply.exp ./gdb/testsuite/gdb.threads/threadapply.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/threadapply.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/threadapply.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread_check.c ./gdb/testsuite/gdb.threads/thread_check.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread_check.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread_check.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread_check.exp ./gdb/testsuite/gdb.threads/thread_check.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread_check.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread_check.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread_events.c ./gdb/testsuite/gdb.threads/thread_events.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread_events.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread_events.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread_events.exp ./gdb/testsuite/gdb.threads/thread_events.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread_events.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread_events.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-execl.c ./gdb/testsuite/gdb.threads/thread-execl.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-execl.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread-execl.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-execl.exp ./gdb/testsuite/gdb.threads/thread-execl.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-execl.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread-execl.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-find.exp ./gdb/testsuite/gdb.threads/thread-find.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-find.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread-find.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-specific-bp.c ./gdb/testsuite/gdb.threads/thread-specific-bp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-specific-bp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread-specific-bp.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-specific-bp.exp ./gdb/testsuite/gdb.threads/thread-specific-bp.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-specific-bp.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread-specific-bp.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-specific.c ./gdb/testsuite/gdb.threads/thread-specific.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-specific.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread-specific.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2004-2020 Free Software Foundation, Inc.
+   Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-specific.exp ./gdb/testsuite/gdb.threads/thread-specific.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-specific.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread-specific.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp ./gdb/testsuite/gdb.threads/thread-unwindonsignal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/thread-unwindonsignal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/threxit-hop-specific.c ./gdb/testsuite/gdb.threads/threxit-hop-specific.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/threxit-hop-specific.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/threxit-hop-specific.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/threxit-hop-specific.exp ./gdb/testsuite/gdb.threads/threxit-hop-specific.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/threxit-hop-specific.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/threxit-hop-specific.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tid-reuse.c ./gdb/testsuite/gdb.threads/tid-reuse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tid-reuse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tid-reuse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tid-reuse.exp ./gdb/testsuite/gdb.threads/tid-reuse.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tid-reuse.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tid-reuse.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls2.c ./gdb/testsuite/gdb.threads/tls2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2008-2020 Free Software Foundation, Inc.
+   Copyright 2008-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-core.c ./gdb/testsuite/gdb.threads/tls-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-core.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-core.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-core.exp ./gdb/testsuite/gdb.threads/tls-core.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-core.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-core.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls.exp ./gdb/testsuite/gdb.threads/tls.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # tls.exp -- Expect script to test thread-local storage
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 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
@@ -153,8 +153,14 @@ proc check_thread_stack {number spin_thr
 
 clean_restart ${binfile}
 
-gdb_test "print a_thread_local" \
-    "Cannot read .a_thread_local. without registers"
+gdb_test_multiple "print a_thread_local" "" {
+    -re -wrap "Cannot find thread-local variables on this target" {
+	kfail "gdb/25807" $gdb_test_name
+    }
+    -re -wrap "Cannot read .a_thread_local. without registers" {
+	pass $gdb_test_name
+    }
+}
 
 if ![runto_main] then {
    fail "can't run to main"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-nodebug.exp ./gdb/testsuite/gdb.threads/tls-nodebug.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-nodebug.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-nodebug.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 # tls.exp -- Expect script to test thread-local storage without debuginfo
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-nodebug-pie.c ./gdb/testsuite/gdb.threads/tls-nodebug-pie.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-nodebug-pie.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-nodebug-pie.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-nodebug-pie.exp ./gdb/testsuite/gdb.threads/tls-nodebug-pie.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-nodebug-pie.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-nodebug-pie.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-shared.exp ./gdb/testsuite/gdb.threads/tls-shared.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-shared.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-shared.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-so_extern.c ./gdb/testsuite/gdb.threads/tls-so_extern.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-so_extern.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-so_extern.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-so_extern.exp ./gdb/testsuite/gdb.threads/tls-so_extern.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-so_extern.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-so_extern.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-so_extern_main.c ./gdb/testsuite/gdb.threads/tls-so_extern_main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-so_extern_main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-so_extern_main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-var.c ./gdb/testsuite/gdb.threads/tls-var.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-var.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-var.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-var.exp ./gdb/testsuite/gdb.threads/tls-var.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-var.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-var.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-var-main.c ./gdb/testsuite/gdb.threads/tls-var-main.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/tls-var-main.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/tls-var-main.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/vfork-follow-child-exec.c ./gdb/testsuite/gdb.threads/vfork-follow-child-exec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/vfork-follow-child-exec.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/vfork-follow-child-exec.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/vfork-follow-child-exec.exp ./gdb/testsuite/gdb.threads/vfork-follow-child-exec.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/vfork-follow-child-exec.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/vfork-follow-child-exec.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/vfork-follow-child-exit.c ./gdb/testsuite/gdb.threads/vfork-follow-child-exit.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/vfork-follow-child-exit.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/vfork-follow-child-exit.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2019-2020 Free Software Foundation, Inc.
+   Copyright 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/vfork-follow-child-exit.exp ./gdb/testsuite/gdb.threads/vfork-follow-child-exit.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/vfork-follow-child-exit.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/vfork-follow-child-exit.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork-child.c ./gdb/testsuite/gdb.threads/watchpoint-fork-child.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork-child.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchpoint-fork-child.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test case for forgotten hw-watchpoints after fork()-off of a process.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -59,7 +59,9 @@ forkoff (int nr)
     case -1:
       assert (0);
     default:
+#if DEBUG
       printf ("parent%d: %d\n", nr, (int) child);
+#endif
 
       /* Sleep for a while to possibly get incorrectly ATTACH_THREADed by GDB
 	 tracing the child fork with no longer valid thread/lwp entries of the
@@ -95,7 +97,9 @@ forkoff (int nr)
 
       _exit (0);
     case 0:
+#if DEBUG
       printf ("child%d: %d\n", nr, (int) getpid ());
+#endif
 
       /* Let the parent signal us about its success.  Be careful of races.  */
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork.exp ./gdb/testsuite/gdb.threads/watchpoint-fork.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchpoint-fork.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -17,7 +17,11 @@
 
 set testfile watchpoint-fork
 
+# Set DEBUG to 0 or 1 in sources
+set debug 0
+
 proc test {type symbol} {
+    global debug
     with_test_prefix "$type" {
 	global testfile subdir srcdir gdb_prompt
 
@@ -30,7 +34,8 @@ proc test {type symbol} {
 	    set srcfile_main ${testfile}-st.c
 	    if {[build_executable $testfile.exp $executable \
 		     [list $srcfile_main ${testfile}-${type}.c] \
-		     [list debug additional_flags=-D$symbol]] == -1} {
+		     [list debug additional_flags=-D$symbol \
+			  additional_flags=-DDEBUG=$debug]] == -1} {
 		return -1
 	    }
 
@@ -96,7 +101,11 @@ proc test {type symbol} {
 	with_test_prefix "multithreaded" {
 	    set executable ${testfile}-${type}-mt
 	    set srcfile_main ${srcdir}/${subdir}/${testfile}-mt.c
-	    if { [gdb_compile_pthreads "${srcfile_main} ${srcfile_type}" [standard_output_file ${executable}] executable [list debug "additional_flags=-D$symbol -DTHREAD"]] != "" } {
+	    if { [gdb_compile_pthreads "${srcfile_main} ${srcfile_type}" \
+		      [standard_output_file ${executable}] executable \
+		      [list debug "additional_flags=-D$symbol" \
+			   "additional_flags=-DDEBUG=$debug" \
+			   "-DTHREAD"]] != "" } {
 		untested "failed to compile"
 		return
 	    }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork.h ./gdb/testsuite/gdb.threads/watchpoint-fork.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchpoint-fork.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test case for forgotten hw-watchpoints after fork()-off of a process.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c ./gdb/testsuite/gdb.threads/watchpoint-fork-mt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchpoint-fork-mt.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test case for forgotten hw-watchpoints after fork()-off of a process.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -114,8 +114,10 @@ main (void)
   int i;
   void *thread_result;
 
+#if DEBUG
   setbuf (stdout, NULL);
   printf ("main: %d\n", (int) gettid ());
+#endif
 
   /* General hardware breakpoints and watchpoints validity.  */
   marker ();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork-parent.c ./gdb/testsuite/gdb.threads/watchpoint-fork-parent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork-parent.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchpoint-fork-parent.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test case for forgotten hw-watchpoints after fork()-off of a process.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -40,6 +40,7 @@ forkoff (int nr)
     case -1:
       assert (0);
     case 0:
+#if DEBUG
       printf ("child%d: %d\n", nr, (int) getpid ());
       /* Delay to get both the "child%d" and "parent%d" message printed without
 	 a race breaking expect by its endless wait on `$gdb_prompt$':
@@ -48,6 +49,7 @@ forkoff (int nr)
 	 (gdb) parent2: 14223  */
       i = sleep (1);
       assert (i == 0);
+#endif
 
       /* We must not get caught here (against a forgotten breakpoint).  */
       var++;
@@ -55,11 +57,13 @@ forkoff (int nr)
 
       _exit (exit_code);
     default:
+#if DEBUG
       printf ("parent%d: %d\n", nr, (int) child);
       /* Delay to get both the "child%d" and "parent%d" message printed, see
 	 above.  */
       i = sleep (1);
       assert (i == 0);
+#endif
 
       pid_got = wait (&status);
       assert (pid_got == child);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork-st.c ./gdb/testsuite/gdb.threads/watchpoint-fork-st.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchpoint-fork-st.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchpoint-fork-st.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Test case for forgotten hw-watchpoints after fork()-off of a process.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -40,8 +40,10 @@ mark_exit (void)
 int
 main (void)
 {
+#if DEBUG
   setbuf (stdout, NULL);
   printf ("main: %d\n", (int) getpid ());
+#endif
 
   /* General hardware breakpoints and watchpoints validity.  */
   marker ();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads2.c ./gdb/testsuite/gdb.threads/watchthreads2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchthreads2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads2.exp ./gdb/testsuite/gdb.threads/watchthreads2.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads2.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchthreads2.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads.c ./gdb/testsuite/gdb.threads/watchthreads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchthreads.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads.exp ./gdb/testsuite/gdb.threads/watchthreads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchthreads.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads-reorder.c ./gdb/testsuite/gdb.threads/watchthreads-reorder.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads-reorder.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchthreads-reorder.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads-reorder.exp ./gdb/testsuite/gdb.threads/watchthreads-reorder.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/watchthreads-reorder.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/watchthreads-reorder.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/wp-replication.c ./gdb/testsuite/gdb.threads/wp-replication.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/wp-replication.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/wp-replication.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2009-2020 Free Software Foundation, Inc.
+   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/wp-replication.exp ./gdb/testsuite/gdb.threads/wp-replication.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.threads/wp-replication.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.threads/wp-replication.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/actions.c ./gdb/testsuite/gdb.trace/actions.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/actions.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/actions.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1998-2020 Free Software Foundation, Inc.
+   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/actions-changed.c ./gdb/testsuite/gdb.trace/actions-changed.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/actions-changed.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/actions-changed.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
@@ -18,6 +18,7 @@
 int
 end (int i)
 {
+  return 0;
 }
 
 int
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/actions-changed.exp ./gdb/testsuite/gdb.trace/actions-changed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/actions-changed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/actions-changed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/actions.exp ./gdb/testsuite/gdb.trace/actions.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/actions.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/actions.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/ax.exp ./gdb/testsuite/gdb.trace/ax.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/ax.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/ax.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2010-2020 Free Software Foundation, Inc.
+#   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/backtrace.exp ./gdb/testsuite/gdb.trace/backtrace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/backtrace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/backtrace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/change-loc-1.c ./gdb/testsuite/gdb.trace/change-loc-1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/change-loc-1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/change-loc-1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/change-loc-2.c ./gdb/testsuite/gdb.trace/change-loc-2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/change-loc-2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/change-loc-2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/change-loc.c ./gdb/testsuite/gdb.trace/change-loc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/change-loc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/change-loc.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/change-loc.exp ./gdb/testsuite/gdb.trace/change-loc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/change-loc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/change-loc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/change-loc.h ./gdb/testsuite/gdb.trace/change-loc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/change-loc.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/change-loc.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/circ.c ./gdb/testsuite/gdb.trace/circ.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/circ.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/circ.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1998-2020 Free Software Foundation, Inc.
+   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/circ.exp ./gdb/testsuite/gdb.trace/circ.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/circ.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/circ.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/collection.c ./gdb/testsuite/gdb.trace/collection.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/collection.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/collection.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 1998-2020 Free Software Foundation, Inc.
+   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/collection.exp ./gdb/testsuite/gdb.trace/collection.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/collection.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/collection.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/deltrace.exp ./gdb/testsuite/gdb.trace/deltrace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/deltrace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/deltrace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/disconnected-tracing.c ./gdb/testsuite/gdb.trace/disconnected-tracing.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/disconnected-tracing.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/disconnected-tracing.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/disconnected-tracing.exp ./gdb/testsuite/gdb.trace/disconnected-tracing.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/disconnected-tracing.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/disconnected-tracing.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2012-2020 Free Software Foundation, Inc.
+#   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/entry-values.c ./gdb/testsuite/gdb.trace/entry-values.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/entry-values.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/entry-values.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/entry-values.exp ./gdb/testsuite/gdb.trace/entry-values.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/entry-values.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/entry-values.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
@@ -62,8 +62,6 @@ if { [istarget "arm*-*-*"] || [istarget
     # returns.  The only exception is JALRC, in which case execution
     # resumes from `insn1' instead.
     set call_insn {jalrc|[jb]al[sxr]*[ \t][^\r\n]+\r\n}
-} elseif [is_amd64_regs_target] {
-    set call_insn "callq"
 } else {
     set call_insn "call"
 }
@@ -110,7 +108,7 @@ Dwarf::assemble $asm_file {
 
 	    foo_label: subprogram {
 		{decl_file 0 udata}
-		{MACRO_AT_func { foo ${srcdir}/${subdir}/${srcfile} }}
+		{MACRO_AT_func { foo }}
 	    } {
 		formal_parameter {
 		    {type :$int_label}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/ftrace.c ./gdb/testsuite/gdb.trace/ftrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/ftrace.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/ftrace.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/ftrace.exp ./gdb/testsuite/gdb.trace/ftrace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/ftrace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/ftrace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/ftrace-lock.c ./gdb/testsuite/gdb.trace/ftrace-lock.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/ftrace-lock.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/ftrace-lock.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/ftrace-lock.exp ./gdb/testsuite/gdb.trace/ftrace-lock.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/ftrace-lock.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/ftrace-lock.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/infotrace.exp ./gdb/testsuite/gdb.trace/infotrace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/infotrace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/infotrace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-traceframe-changed.exp ./gdb/testsuite/gdb.trace/mi-traceframe-changed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-traceframe-changed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/mi-traceframe-changed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-trace-frame-collected.exp ./gdb/testsuite/gdb.trace/mi-trace-frame-collected.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-trace-frame-collected.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/mi-trace-frame-collected.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-tracepoint-changed.exp ./gdb/testsuite/gdb.trace/mi-tracepoint-changed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-tracepoint-changed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/mi-tracepoint-changed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-trace-save.exp ./gdb/testsuite/gdb.trace/mi-trace-save.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-trace-save.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/mi-trace-save.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-trace-unavailable.exp ./gdb/testsuite/gdb.trace/mi-trace-unavailable.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-trace-unavailable.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/mi-trace-unavailable.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-tsv-changed.exp ./gdb/testsuite/gdb.trace/mi-tsv-changed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/mi-tsv-changed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/mi-tsv-changed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/no-attach-trace.c ./gdb/testsuite/gdb.trace/no-attach-trace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/no-attach-trace.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/no-attach-trace.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2015-2020 Free Software Foundation, Inc.
+   Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/no-attach-trace.exp ./gdb/testsuite/gdb.trace/no-attach-trace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/no-attach-trace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/no-attach-trace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/packetlen.exp ./gdb/testsuite/gdb.trace/packetlen.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/packetlen.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/packetlen.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/passc-dyn.exp ./gdb/testsuite/gdb.trace/passc-dyn.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/passc-dyn.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/passc-dyn.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/passcount.exp ./gdb/testsuite/gdb.trace/passcount.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/passcount.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/passcount.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
@@ -166,7 +166,7 @@ gdb_test "info tracepoints" \
 \[\t \]+pass count 3 .*
 \[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+.
 \[\t \]+pass count 3 .*"  \
-	"4.20a: set all three passcounts to three"
+	"4.20a: verify all three passcounts to three"
 
 gdb_test "passcount 4 all" \
 	".*$trcpt1.s pass.* 4.*$trcpt2.s pass.* 4.*$trcpt3.s pass.* 4" \
@@ -201,7 +201,7 @@ gdb_test "info tracepoints" \
 \[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+.
 \[\t \]+pass count 4 .
 \[\t \]+not installed on target."  \
-	"4.6: set passcount to zero"
+	"4.6: verify passcount to zero"
 
 # 4.7 (test a very large passcount)
 
@@ -217,7 +217,7 @@ gdb_test "info tracepoints" \
 \[\t \]+pass count 4 .*
 \[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_recursion_test at .*$srcfile:\[0-9\]+.
 \[\t \]+pass count 4 .*"  \
-	"4.7: set passcount to large number (32767)"
+	"4.7: verify passcount to large number (32767)"
 
 # 4.8 set passcount for invalid tracepoint
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/pending.c ./gdb/testsuite/gdb.trace/pending.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/pending.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/pending.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/pending.exp ./gdb/testsuite/gdb.trace/pending.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/pending.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/pending.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/pendshr1.c ./gdb/testsuite/gdb.trace/pendshr1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/pendshr1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/pendshr1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/pendshr2.c ./gdb/testsuite/gdb.trace/pendshr2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/pendshr2.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/pendshr2.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/pr16508.exp ./gdb/testsuite/gdb.trace/pr16508.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/pr16508.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/pr16508.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/qtro.c ./gdb/testsuite/gdb.trace/qtro.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/qtro.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/qtro.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/qtro.exp ./gdb/testsuite/gdb.trace/qtro.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/qtro.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/qtro.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/range-stepping.c ./gdb/testsuite/gdb.trace/range-stepping.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/range-stepping.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/range-stepping.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/range-stepping.exp ./gdb/testsuite/gdb.trace/range-stepping.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/range-stepping.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/range-stepping.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/read-memory.c ./gdb/testsuite/gdb.trace/read-memory.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/read-memory.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/read-memory.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/read-memory.exp ./gdb/testsuite/gdb.trace/read-memory.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/read-memory.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/read-memory.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2013-2020 Free Software Foundation, Inc.
+#   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/report.exp ./gdb/testsuite/gdb.trace/report.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/report.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/report.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
@@ -391,7 +391,7 @@ proc use_collected_data { data_source }
 	# There is always a thread of an inferior, either a live one or
 	# a faked one.
 	gdb_test "info threads" "\\* ${decimal}    (process|Thread) \[0-9\.\]+\[ \t\].*"
-	gdb_test "info inferiors" "\\* 1    process ${decimal} \[ \t\]+${binfile}.*"
+	gdb_test "info inferiors" "\\* 1    process ${decimal} \[ \t\]+\[^\r\n\]*\[ \t\]+${binfile}.*"
     }
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/save-trace.exp ./gdb/testsuite/gdb.trace/save-trace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/save-trace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/save-trace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/signal.c ./gdb/testsuite/gdb.trace/signal.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/signal.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/signal.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/signal.exp ./gdb/testsuite/gdb.trace/signal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/signal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/signal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2016-2020 Free Software Foundation, Inc.
+#   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/stap-trace.c ./gdb/testsuite/gdb.trace/stap-trace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/stap-trace.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/stap-trace.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/stap-trace.exp ./gdb/testsuite/gdb.trace/stap-trace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/stap-trace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/stap-trace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/status-stop.c ./gdb/testsuite/gdb.trace/status-stop.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/status-stop.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/status-stop.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/status-stop.exp ./gdb/testsuite/gdb.trace/status-stop.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/status-stop.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/status-stop.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/strace.c ./gdb/testsuite/gdb.trace/strace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/strace.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/strace.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/strace.exp ./gdb/testsuite/gdb.trace/strace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/strace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/strace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
@@ -242,7 +242,7 @@ proc strace_trace_on_same_addr { type }
 	    "ust/bar\[\t \]+y\[\t \]+$hex .*ust/bar2\[\t \]+y\[\t \]+$hex.*" \
 	    "info static-tracepoint-markers 2"
 
-	# Set breapoints or tracepoints.
+	# Set breakpoints or tracepoints.
 	set test "${type} on marker bar"
 	gdb_test_multiple "${type} *${marker_bar_addr}" $test {
 	    -re "\(Fast trace|Trace|Break\)point \[0-9\]+ at ${hex}: file.*\r\n$gdb_prompt $" {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tfile.c ./gdb/testsuite/gdb.trace/tfile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tfile.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/tfile.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tfile.exp ./gdb/testsuite/gdb.trace/tfile.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tfile.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/tfile.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2010-2020 Free Software Foundation, Inc.
+#   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tfind.exp ./gdb/testsuite/gdb.trace/tfind.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tfind.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/tfind.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-break.c ./gdb/testsuite/gdb.trace/trace-break.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-break.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-break.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-break.exp ./gdb/testsuite/gdb.trace/trace-break.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-break.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-break.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-buffer-size.c ./gdb/testsuite/gdb.trace/trace-buffer-size.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-buffer-size.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-buffer-size.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-buffer-size.exp ./gdb/testsuite/gdb.trace/trace-buffer-size.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-buffer-size.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-buffer-size.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tracecmd.exp ./gdb/testsuite/gdb.trace/tracecmd.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tracecmd.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/tracecmd.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-common.h ./gdb/testsuite/gdb.trace/trace-common.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-common.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-common.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-condition.c ./gdb/testsuite/gdb.trace/trace-condition.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-condition.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-condition.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-condition.exp ./gdb/testsuite/gdb.trace/trace-condition.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-condition.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-condition.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-enable-disable.c ./gdb/testsuite/gdb.trace/trace-enable-disable.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-enable-disable.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-enable-disable.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-enable-disable.exp ./gdb/testsuite/gdb.trace/trace-enable-disable.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-enable-disable.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-enable-disable.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tracefile-pseudo-reg.c ./gdb/testsuite/gdb.trace/tracefile-pseudo-reg.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tracefile-pseudo-reg.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/tracefile-pseudo-reg.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tracefile-pseudo-reg.exp ./gdb/testsuite/gdb.trace/tracefile-pseudo-reg.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tracefile-pseudo-reg.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/tracefile-pseudo-reg.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-mt.c ./gdb/testsuite/gdb.trace/trace-mt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-mt.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-mt.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2012-2020 Free Software Foundation, Inc.
+   Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-mt.exp ./gdb/testsuite/gdb.trace/trace-mt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-mt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-mt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-unavailable.c ./gdb/testsuite/gdb.trace/trace-unavailable.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/trace-unavailable.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/trace-unavailable.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tspeed.c ./gdb/testsuite/gdb.trace/tspeed.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tspeed.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/tspeed.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
@@ -75,7 +75,7 @@ main(int argc, char **argv)
 
       /* Keep trying the speed test, with more iterations, until
 	 we get to a reasonable number.  */
-      while (problem = trace_speed_test())
+      while ((problem = trace_speed_test()))
 	{
 	  /* If iteration isn't working, give up.  */
 	  if (iters > max_iters)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tspeed.exp ./gdb/testsuite/gdb.trace/tspeed.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tspeed.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/tspeed.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tstatus.exp ./gdb/testsuite/gdb.trace/tstatus.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tstatus.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/tstatus.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2011-2020 Free Software Foundation, Inc.
+# Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tsv.exp ./gdb/testsuite/gdb.trace/tsv.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/tsv.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/tsv.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 2009-2020 Free Software Foundation, Inc.
+#   Copyright 2009-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/unavailable.cc ./gdb/testsuite/gdb.trace/unavailable.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/unavailable.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/unavailable.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2002-2020 Free Software Foundation, Inc.
+   Copyright 2002-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.c ./gdb/testsuite/gdb.trace/unavailable-dwarf-piece.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/unavailable-dwarf-piece.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2013-2020 Free Software Foundation, Inc.
+   Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp ./gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/unavailable-dwarf-piece.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/unavailable.exp ./gdb/testsuite/gdb.trace/unavailable.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/unavailable.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/unavailable.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1998-2020 Free Software Foundation, Inc.
+# Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/while-dyn.exp ./gdb/testsuite/gdb.trace/while-dyn.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/while-dyn.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/while-dyn.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/while-stepping.exp ./gdb/testsuite/gdb.trace/while-stepping.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.trace/while-stepping.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.trace/while-stepping.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright 1998-2020 Free Software Foundation, Inc.
+#   Copyright 1998-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/basic.exp ./gdb/testsuite/gdb.tui/basic.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/basic.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/basic.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,7 +15,7 @@
 
 # Basic TUI tests.
 
-load_lib "tuiterm.exp"
+tuiterm_env
 
 standard_testfile tui-layout.c
 
@@ -26,6 +26,7 @@ if {[build_executable "failed to prepare
 Term::clean_restart 24 80 $testfile
 if {![Term::enter_tui]} {
     unsupported "TUI not supported"
+    return
 }
 
 set text [Term::get_all_lines]
@@ -35,6 +36,46 @@ gdb_assert {![string match "No Source Av
 Term::command "list main"
 Term::check_contents "list main" "21 *return 0"
 
+# Get the first source line.
+set line [Term::get_line 1]
+# Send an up arrow.
+send_gdb "\033\[A"
+# Wait for a redraw and check that the first line changed.
+if {[Term::wait_for [string_to_regexp $line]] \
+	&& [Term::get_line 1] != $line\
+	&& [Term::get_line 2] == $line} {
+    pass "scroll up"
+} else {
+    fail "scroll up"
+}
+
+# Check the horizontal scrolling.  First confirm that 'main ()' is
+# where we expect it to be.  This relies on the current way we
+# position source code on the screen, which might change in the
+# future.  The important part of this test is detecting the left/right
+# scrolling, not which line main is actually on.
+set line_num 6
+set line [Term::get_line $line_num]
+gdb_assert {[regexp -- "19\[\\t \]+main \\(\\)" $line]} \
+    "check main is where we expect on the screen"
+set regexp "19\[\\t \]+ain \\(\\)"
+# Send a right arrow.
+send_gdb "\033\[C"
+if {[Term::wait_for $regexp]} {
+    pass "scroll right"
+} else {
+    fail "scroll right"
+}
+set line [Term::get_line $line_num]
+# Send a down arrow.
+send_gdb "\033\[B"
+if {[Term::wait_for $regexp] \
+	&& [Term::get_line [expr {$line_num - 1}]] == $line} {
+    pass "scroll down"
+} else {
+    fail "scroll down"
+}
+
 Term::check_box "source box" 0 0 80 15
 
 Term::command "layout asm"
@@ -45,5 +86,5 @@ Term::check_box "asm box" 0 0 80 15
 Term::command "layout split"
 Term::check_contents "split layout contents" "21 *return 0.*$hex <main>"
 
-Term::check_box "source box in split layout" 0 0 80 8
-Term::check_box "asm box in split layout" 0 7 80 8
+Term::check_box "source box in split layout" 0 0 80 7
+Term::check_box "asm box in split layout" 0 6 80 9
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/completion.exp ./gdb/testsuite/gdb.tui/completion.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/completion.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/completion.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/corefile-run.exp ./gdb/testsuite/gdb.tui/corefile-run.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/corefile-run.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/corefile-run.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -18,7 +18,7 @@
 #
 # Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1765117
 
-load_lib "tuiterm.exp"
+tuiterm_env
 
 standard_testfile tui-layout.c
 
@@ -47,6 +47,7 @@ if { ![gdb_gcore_cmd "$core" "save a cor
 Term::clean_restart 24 80 $testfile
 if {![Term::enter_tui]} {
     unsupported "TUI not supported"
+    return
 }
 
 set text [Term::get_all_lines]
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/empty.exp ./gdb/testsuite/gdb.tui/empty.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/empty.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/empty.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,7 +15,7 @@
 
 # Test TUI resizing with empty windows.
 
-load_lib "tuiterm.exp"
+tuiterm_env
 
 standard_testfile
 
@@ -23,6 +23,7 @@ Term::clean_restart 24 80
 
 if {![Term::enter_tui]} {
     unsupported "TUI not supported"
+    return
 }
 
 # Each entry describes a layout.  It has these items:
@@ -32,28 +33,28 @@ if {![Term::enter_tui]} {
 # 4. List of boxes in 90x40 mode
 # 5. List of test name and text for the empty window
 set layouts {
-    {src src {{0 0 80 15}} {{0 0 90 23}}
+    {src src {{0 0 80 15}} {{0 0 90 26}}
 	{{"no source" "No Source Available"}}}
-    {regs src-regs {{0 0 80 8} {0 7 80 8}} {{0 0 90 13} {0 12 90 13}}
+    {regs src-regs {{0 0 80 7} {0 6 80 9}} {{0 0 90 13} {0 12 90 13}}
 	{
 	    {"no source" "No Source Available"}
 	    {"no regs" "Register Values Unavailable"}
 	}}
-    {asm asm {{0 0 80 15}} {{0 0 90 23}}
+    {asm asm {{0 0 80 13}} {{0 0 90 26}}
 	{
 	    {"no asm" "No Assembly Available"}
 	}}
-    {regs asm-regs {{0 0 80 8} {0 7 80 8}} {{0 0 90 13} {0 12 90 13}}
+    {regs asm-regs {{0 0 80 7} {0 6 80 9}} {{0 0 90 13} {0 12 90 13}}
 	{
 	    {"no asm" "No Assembly Available"}
 	    {"no regs" "Register Values Unavailable"}
 	}}
-    {split split {{0 0 80 8} {0 7 80 8}} {{0 0 90 13} {0 12 90 13}}
+    {split split {{0 0 80 6} {0 5 80 8}} {{0 0 90 13} {0 12 90 13}}
 	{
 	    {"no source" "No Source Available"}
 	    {"no asm" "No Assembly Available"}
 	}}
-    {regs split-regs {{0 0 80 8} {0 7 80 8}} {{0 0 90 13} {0 12 90 13}}
+    {regs split-regs {{0 0 80 6} {0 5 80 8}} {{0 0 90 13} {0 12 90 13}}
 	{
 	    {"no asm" "No Assembly Available"}
 	    {"no regs" "Register Values Unavailable"}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/list-before.exp ./gdb/testsuite/gdb.tui/list-before.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/list-before.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/list-before.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,35 @@
+# Copyright 2019-2021 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/>.
+
+# Ensure that "list" before starting the TUI will affect the view.
+
+tuiterm_env
+
+standard_testfile tui-layout.c
+
+if {[build_executable "failed to prepare" ${testfile} ${srcfile}] == -1} {
+    return -1
+}
+
+Term::clean_restart 24 80 $testfile
+
+gdb_test "list main"
+
+if {![Term::enter_tui]} {
+    unsupported "TUI not supported"
+    return
+}
+
+Term::check_contents "initial source listing" "21 *return 0"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/list.exp ./gdb/testsuite/gdb.tui/list.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/list.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/list.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,7 +15,7 @@
 
 # Ensure that "list" will switch to the source view.
 
-load_lib "tuiterm.exp"
+tuiterm_env
 
 standard_testfile tui-layout.c
 
@@ -26,12 +26,17 @@ if {[build_executable "failed to prepare
 Term::clean_restart 24 80 $testfile
 if {![Term::enter_tui]} {
     unsupported "TUI not supported"
+    return
 }
 
-Term::check_contents "initial source listing" "No Source Available"
+Term::check_contents "initial source listing" "21 *return 0"
 
 Term::command "layout asm"
 Term::check_contents "asm window shows main" "$hex <main>"
 
 Term::command "list main"
 Term::check_contents "list main" "21 *return 0"
+# The following 'focus next' must be immediately after 'list main' to
+# ensure that GDB has a valid idea of what is currently focused.
+Term::command "focus next"
+Term::check_contents "focus next" "Focus set to cmd window"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/main.exp ./gdb/testsuite/gdb.tui/main.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/main.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/main.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,7 +15,7 @@
 
 # Test that "file" shows "main".
 
-load_lib "tuiterm.exp"
+tuiterm_env
 
 standard_testfile tui-layout.c
 
@@ -26,9 +26,17 @@ if {[build_executable "failed to prepare
 # Note: don't pass the executable here
 Term::clean_restart 24 80
 
+# Later on we'd like to avoid having to answer a question.
+gdb_test_no_output "set interactive-mode off"
+
 if {![Term::enter_tui]} {
     unsupported "TUI not supported"
+    return
 }
 
 Term::command "file [standard_output_file $testfile]"
-Term::check_contents "show main after file" ">|21 *return 0"
+Term::check_contents "show main after file" "\\|.*21 *return 0"
+
+# Ensure that "file" clears the source window.
+Term::command "file"
+Term::check_contents "file clears window" "No Source Available"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/new-layout.exp ./gdb/testsuite/gdb.tui/new-layout.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/new-layout.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/new-layout.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,92 @@
+# Copyright 2020-2021 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 "tui new-layout".
+
+tuiterm_env
+
+standard_testfile tui-layout.c
+
+if {[build_executable "failed to prepare" ${testfile} ${srcfile}] == -1} {
+    return -1
+}
+
+# Make sure TUI is supported before continuing.
+Term::clean_restart 24 80 $testfile
+if {![Term::enter_tui]} {
+    unsupported "TUI not supported"
+    return
+}
+
+Term::clean_restart 24 80 $testfile
+
+gdb_test "tui new-layout" \
+    "No layout name specified"
+gdb_test "tui new-layout example" \
+    "New layout does not contain any windows"
+gdb_test "tui new-layout example zzq" \
+    "Unknown window \"zzq\""
+gdb_test "tui new-layout example src 1 src 1" \
+    "Window \"src\" seen twice in layout"
+gdb_test "tui new-layout example src 1" \
+    "New layout does not contain the \"cmd\" window"
+gdb_test "tui new-layout example src 1}" \
+    "Extra '}' in layout specification"
+gdb_test "tui new-layout example {src 1} 1}" \
+    "Extra '}' in layout specification"
+gdb_test "tui new-layout example {src 1" \
+    "Missing '}' in layout specification"
+
+gdb_test_no_output "tui new-layout example asm 1 status 0 cmd 1"
+
+gdb_test "help layout example" \
+    "Apply the \"example\" layout.*tui new-layout example asm 1 status 0 cmd 1"
+
+gdb_test_no_output "tui new-layout example2 {asm 1 status 0} 1 cmd 1"
+
+gdb_test "help layout example2" \
+    "Apply the \"example2\" layout.*tui new-layout example2 {asm 1 status 0} 1 cmd 1"
+
+gdb_test_no_output "tui new-layout h {-horizontal asm 1 src 1} 1 status 0 cmd 1"
+
+gdb_test "help layout h" \
+    "Apply the \"h\" layout.*tui new-layout h {-horizontal asm 1 src 1} 1 status 0 cmd 1"
+
+if {![Term::enter_tui]} {
+    unsupported "TUI not supported"
+    return
+}
+
+set text [Term::get_all_lines]
+gdb_assert {![string match "No Source Available" $text]} \
+    "initial source listing"
+
+Term::command "layout example"
+Term::check_contents "example layout shows assembly" \
+    "$hex <main>"
+
+Term::command "layout h"
+Term::check_box "left window box" 0 0 40 15
+Term::check_box "right window box" 39 0 41 15
+Term::check_contents "horizontal display" \
+    "$hex <main>.*21.*return 0"
+
+Term::command "winheight src - 5"
+Term::check_box "left window box after shrink" 0 0 40 10
+Term::check_box "right window box after shrink" 39 0 41 10
+
+Term::command "winheight src + 5"
+Term::check_box "left window box after grow" 0 0 40 15
+Term::check_box "right window box after grow" 39 0 41 15
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/regs.exp ./gdb/testsuite/gdb.tui/regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/regs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,7 +15,7 @@
 
 # Simple test of TUI register window.
 
-load_lib "tuiterm.exp"
+tuiterm_env
 
 standard_testfile tui-layout.c
 
@@ -32,14 +32,15 @@ if {![runto_main]} {
 
 if {![Term::enter_tui]} {
     unsupported "TUI not supported"
+    return
 }
 
-Term::check_contents "source at startup" ">|21 *return 0"
+Term::check_contents "source at startup" "\\|.*21 *return 0"
 
 Term::command "layout regs"
-Term::check_box "register box" 0 0 80 8
-Term::check_box "source box in regs layout" 0 7 80 8
+Term::check_box "register box" 0 0 80 7
+Term::check_box "source box in regs layout" 0 6 80 9
 
 set text [Term::get_line 1]
 # Just check for any register window content at all.
-Term::check_contents "any register contents" "^|.*\[^ \].*|$"
+Term::check_contents "any register contents" "\\|.*\[^ \].*\\|"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/resize.exp ./gdb/testsuite/gdb.tui/resize.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/resize.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/resize.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,7 +15,7 @@
 
 # Test TUI resizing.
 
-load_lib "tuiterm.exp"
+tuiterm_env
 
 standard_testfile tui-layout.c
 
@@ -32,9 +32,10 @@ if {![runto_main]} {
 
 if {![Term::enter_tui]} {
     unsupported "TUI not supported"
+    return
 }
 
-Term::check_contents "source at startup" ">|21 *return 0"
+Term::check_contents "source at startup" "\\|.*21 *return 0"
 
 Term::resize 40 90
-Term::check_box "source box after resize" 0 0 90 23
+Term::check_box "source box after resize" 0 0 90 26
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-disasm-long-lines.c ./gdb/testsuite/gdb.tui/tui-disasm-long-lines.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-disasm-long-lines.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/tui-disasm-long-lines.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2016-2020 Free Software Foundation, Inc.
+   Copyright 2016-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-disasm-long-lines.exp ./gdb/testsuite/gdb.tui/tui-disasm-long-lines.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-disasm-long-lines.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/tui-disasm-long-lines.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-layout-asm.exp ./gdb/testsuite/gdb.tui/tui-layout-asm.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-layout-asm.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/tui-layout-asm.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,77 @@
+# Copyright 2020-2021 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/>.
+
+# Ensure that 'layout asm' before starting the inferior puts us in the
+# asm layout and displays the disassembly for main.
+
+tuiterm_env
+
+standard_testfile tui-layout.c
+
+if {[build_executable "failed to prepare" ${testfile} ${srcfile}] == -1} {
+    return -1
+}
+
+Term::clean_restart 24 80 $testfile
+if {![Term::prepare_for_tui]} {
+    unsupported "TUI not supported"
+    return
+}
+
+# This puts us into TUI mode, and should display the ASM window.
+Term::command_no_prompt_prefix "layout asm"
+Term::check_box_contents "check asm box contents" 0 0 80 15 "<main>"
+
+# Scroll the ASM window down using the down arrow key.  In an ideal
+# world we'd like to use PageDown here, but currently our terminal
+# library doesn't support such advanced things.
+set testname "scroll to end of assembler"
+set down_count 0
+while (1) {
+    # Grab the second line, this is about to become the first line.
+    set line [Term::get_line 2]
+
+    # Except, if the second line is blank then we are at the end of
+    # the available asm output.  Pressing down again _shouldn't_
+    # change the output, however, if GDB is working, and we press down
+    # then the screen won't change, so the call to Term::wait_for
+    # below will just timeout.  So for now we avoid testing the edge
+    # case.
+    if {[regexp -- "^\\| +\\|$" $line]} {
+	# Second line is blank, we're at the end of the assembler.
+	pass $testname
+	break
+    }
+
+    # Send the down key to GDB.
+    send_gdb "\033\[B"
+    incr down_count
+    if {[Term::wait_for [string_to_regexp $line]] \
+	    && [Term::get_line 1] == $line} {
+	# We scrolled successfully.
+    } else {
+	fail "$testname (scroll failed)"
+	Term::dump_screen
+	break
+    }
+
+    if { $down_count > 250 } {
+	# Maybe we should accept this as a pass in case a target
+	# really does have loads of assembler to scroll through.
+	fail "$testname (too much assembler)"
+	Term::dump_screen
+	break
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp ./gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,52 @@
+# Copyright 2020-2021 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/>.
+
+# Ensure that 'layout asm' can scroll away from the last line of a
+# very short program using a page up sized scroll.
+
+tuiterm_env
+
+standard_testfile tui-layout-asm-short-prog.S
+
+if {[build_executable "failed to prepare" ${testfile} ${srcfile} \
+	 {debug additional_flags=-nostdlib \
+	      additional_flags=-nostartfiles}] == -1} {
+    return -1
+}
+
+Term::clean_restart 24 80 $testfile
+if {![Term::prepare_for_tui]} {
+    unsupported "TUI not supported"
+    return
+}
+
+# This puts us into TUI mode, and should display the ASM window.
+Term::command_no_prompt_prefix "layout asm"
+Term::check_box_contents "check asm box contents" 0 0 80 15 "<_start>"
+
+# Record the first line of output, we'll need this later.
+set first_line [Term::get_line 1]
+
+# Scroll forward a large amount, this should take us to the last
+# instruction in the program.
+Term::command "+ 13"
+Term::check_box_contents "check asm box contents again" 0 0 80 15 \
+    "^ *$hex\[^\n\]+\n +\n"
+
+# Now scroll backward again, we should return to the start of the
+# program.
+Term::command "- 13"
+gdb_assert {[string eq "$first_line" [Term::get_line 1]]} \
+    "check first line is back"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.S ./gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.S
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.S	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.S	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+	.global _start
+_start:
+	.rept 5
+	nop
+	.endr
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-layout.c ./gdb/testsuite/gdb.tui/tui-layout.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-layout.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/tui-layout.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2017-2020 Free Software Foundation, Inc.
+   Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-layout.exp ./gdb/testsuite/gdb.tui/tui-layout.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-layout.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/tui-layout.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-missing-src.exp ./gdb/testsuite/gdb.tui/tui-missing-src.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-missing-src.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/tui-missing-src.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,98 @@
+# Copyright 2020-2021 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 checks if gdb can handle missing source files gracefully.
+# Testing steps are:
+# 1. Have a main() in main.c that calls an external function f2().
+# 2. Have f2() implemented in f2.c.
+# 3. Build the two files into one executable.
+# 4. Remove main.c.
+# 5. Open the executable inside gdb while having gdb in source layout.
+#    No source is found for the moment.
+# 6. After a little bit of playing, we enter f2() and now the source
+#    layout must show the contents of f2.c.
+# 7. Going back to main() shall result in no contents again.
+
+tuiterm_env
+
+standard_testfile
+
+set mainfile [standard_output_file main.c]
+set f2file   [standard_output_file f2.c]
+set srcfiles [list $mainfile $f2file]
+
+# Step 1: Write the main.c file into the output directory.
+# This file will be removed after compilation.
+set fd [open "$mainfile" w]
+puts $fd {
+extern int f2(int);
+int
+main ()
+{
+  int a = 4;
+  a = f2(a);
+  return a - a;
+}
+}
+close $fd
+
+# Step 2: Write the f2.c file into the output directory.
+set fd [open "$f2file" w]
+puts $fd {
+int
+f2 (int x)
+{
+  x <<= 1;
+  return x+5;
+}
+}
+close $fd
+
+# Step 3: Compile the source files.
+if  { [gdb_compile "${srcfiles}" "${binfile}" \
+	   executable {debug additional_flags=-O0}] != "" } {
+    untested "failed to compile"
+    return -1
+}
+
+# Step 4: Remove the main.c file.
+file delete $mainfile
+
+# Step 5: Load the executable into GDB.
+# There shall be no source content.
+Term::clean_restart 24 80 $testfile
+if {![Term::enter_tui]} {
+    unsupported "TUI not supported"
+    return
+}
+# There must exist a source layout with the size 80x15 and
+# there should be nothing in it.
+Term::check_box_contents "check source box is empty" \
+    0 0 80 15 "No Source Available"
+
+# Step 6: Go to main and after one next, enter f2().
+Term::command "set pagination off"
+Term::command "start"
+Term::command "next"
+Term::command "step"
+Term::check_contents "checking if inside f2 ()" "f2 \\(x=4\\)"
+Term::check_box_contents "f2.c must be displayed in source window" \
+    0 0 80 15 "return x\\+5"
+
+# Step 7: Back in main
+Term::command "finish"
+Term::check_box_contents "check source box is empty after return" \
+    0 0 80 15 "No Source Available"
+Term::check_contents "Back in main" "Value returned is .* 13"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-nl-filtered-output.exp ./gdb/testsuite/gdb.tui/tui-nl-filtered-output.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/tui-nl-filtered-output.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/tui-nl-filtered-output.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/winheight.exp ./gdb/testsuite/gdb.tui/winheight.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.tui/winheight.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.tui/winheight.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -15,7 +15,7 @@
 
 # Test the "winheight" command.
 
-load_lib "tuiterm.exp"
+tuiterm_env
 
 standard_testfile tui-layout.c
 
@@ -26,6 +26,7 @@ if {[build_executable "failed to prepare
 Term::clean_restart 24 80 $testfile
 if {![Term::enter_tui]} {
     unsupported "TUI not supported"
+    return
 }
 
 Term::check_box "source box" 0 0 80 15
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/maint_print_struct.exp ./gdb/testsuite/gdb.xml/maint_print_struct.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/maint_print_struct.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/maint_print_struct.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This testcase is part of GDB, the GNU debugger.
 #
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 Free Software Foundation, Inc.
 #
 # Contributed by Intel Corp. <walfred.tedeschi@intel.com>
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/maint_print_struct.xml ./gdb/testsuite/gdb.xml/maint_print_struct.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/maint_print_struct.xml	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/maint_print_struct.xml	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!-- Copyright (C) 2010-2020 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2021 Free Software Foundation, Inc.
 
      Copying and distribution of this file, with or without modification,
      are permitted in any medium without royalty provided the copyright
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/maint-xml-dump-01.xml ./gdb/testsuite/gdb.xml/maint-xml-dump-01.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/maint-xml-dump-01.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/maint-xml-dump-01.xml	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- This is a comment before DOCTYPE -->
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<!-- This is a comment after DOCTYPE -->
+<target>
+  <feature name="abc">
+    <!-- The following is a register. -->
+    <reg name="r1" bitsize="32"/>	<!-- <reg name="r1" bitsize="32" type="int" regnum="0"/> -->
+  </feature>
+</target>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/maint-xml-dump-02.xml ./gdb/testsuite/gdb.xml/maint-xml-dump-02.xml
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/maint-xml-dump-02.xml	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/maint-xml-dump-02.xml	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,27 @@
+<target>
+  <osabi>Solaris</osabi>
+  <feature name="abc">
+    <vector id="foo" type="int32" count="4"/>
+    <reg name="foo" bitsize="16" />	<!-- <reg name="foo" bitsize="16" type="int" regnum="0"/> -->
+  </feature>
+  <feature name="def.xyz">
+    <struct id="my_struct">
+      <field name="field1" type="int8"/>
+      <field name="field2" type="int16"/>
+      <field name="field3" type="int8"/>
+    </struct>
+    <struct id="bit_field" size="8">
+      <field name="bits1" start="0" end="3" type="int8"/>
+      <field name="bits2" start="4" end="6" type="int8"/>
+      <field name="bits3" start="7" end="7"/>	<!-- <field name="bits3" start="7" end="7" type="bool"/> -->
+    </struct>
+    <flags id="my_flags" size="8">
+      <field name="flg1" start="0" end="0"/>	<!-- <field name="flg1" start="0" end="0" type="bool"/> -->
+      <field name="flg2" start="1" end="1"/>	<!-- <field name="flg2" start="1" end="1" type="bool"/> -->
+      <field name="flg3" start="2" end="6"/>	<!-- <field name="flg3" start="2" end="6" type="uint64"/> -->
+      <field name="flg4" start="7" end="7"/>	<!-- <field name="flg4" start="7" end="7" type="bool"/> -->
+    </flags>
+    <reg name="r1" bitsize="8" type="my_flags"/>	<!-- <reg name="r1" bitsize="8" type="my_flags" regnum="1"/> -->
+    <reg name="r2" bitsize="8" type="bit_field"/>	<!-- <reg name="r2" bitsize="8" type="bit_field" regnum="2"/> -->
+  </feature>
+</target>
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/maint-xml-dump.exp ./gdb/testsuite/gdb.xml/maint-xml-dump.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/maint-xml-dump.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/maint-xml-dump.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,124 @@
+# Copyright 2020-2021 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 the 'maint print xml-tdesc' command.  This file picks up every
+# XML file matching the pattern maint-xml-dump-*.xml (in the same
+# directory as this script) and passes each in turn to the command
+# 'maint print xml-tdesc'.
+#
+# The expected output is generated by parsing the input XML file.  The
+# rules for changing an XML file into the expected output are:
+#
+# 1. Blank lines, and lines starting with a comment are stripped from
+#    the expected output.
+#
+# 2. The <?xml ... ?> and <!DOCTYPE ...> entities are optional,
+#    suitable defaults will be added if these lines are missing from
+#    the input file.
+#
+# 3. A trailing comment on a line will replace the expected output for
+#    that line but with the indentation of the line preserved.  So
+#    this (The '|' marks the start of the line):
+#    |    <reg name="r1" bitsize="32"/>  <!-- <reg name="r1" bitsize="32" type="int" regnum="0"/> -->
+#    Will actually look for the following output:
+#    |    <reg name="r1" bitsize="32" type="int" regnum="0"/>
+#
+# 4. Indentation of lines will be preserved so your input file needs
+#    to follow the expected indentation.
+if {[gdb_skip_xml_test]} {
+    unsupported "xml tests not being run"
+    return -1
+}
+
+gdb_start
+
+# Read the XML file FILENAME and produce an output pattern that should
+# match what GDB produces with the 'maint print xml-desc' command.
+proc build_pattern { filename } {
+    set pattern {}
+
+    set xml_version_line {<?xml version="1.0"?>}
+    set doc_type_line {<!DOCTYPE target SYSTEM "gdb-target.dtd">}
+
+    set linenum 0
+    set ifd [open "$filename" r]
+    while {[gets $ifd line] >= 0} {
+	incr linenum
+
+	# The <?xml .... ?> tag can only appear as the first line in
+	# the file.  If it is not present then add one to the expected
+	# output now.
+	if {$linenum == 1} {
+	    if {![regexp {^<\?xml} $line]} {
+		set pattern [string_to_regexp $xml_version_line]
+		set xml_version_line ""
+	    }
+	}
+
+	# If we have not yet seen a DOCTYPE line, then maybe we should
+	# be adding one?  If we find <target> then add a default
+	# DOCTYPE line, otherwise, if the XML file includes a DOCTYPE
+	# line, use that.
+	if {$doc_type_line != "" } {
+	    if {[regexp {^[ \t]*<target>} $line]} {
+		set pattern [multi_line $pattern \
+				 [string_to_regexp $doc_type_line]]
+		set doc_type_line ""
+	    } elseif {[regexp {^[ \t]*<!DOCTYPE } $line]} {
+		set doc_type_line ""
+	    }
+	}
+
+	if {[regexp {^[ \t]*<!--} $line]} {
+	    # Comment line, ignore it.
+	} elseif {[regexp {^[ \t]+$} $line]} {
+	    # Blank line, ignore it.
+	} elseif {[regexp {^([ \t]*).*<!-- (.*) -->$} $line \
+		       matches grp1 grp2]} {
+	    set pattern [multi_line \
+			     $pattern \
+			     [string_to_regexp "$grp1$grp2"]]
+	} else {
+	    set pattern [multi_line \
+			     $pattern \
+			     [string_to_regexp $line]]
+	}
+    }
+    close $ifd
+
+    # Due to handling the <?xml ...?> tags we can end up with a stray
+    # '\r\n' at the start of the output pattern.  Remove it here.
+    if {[string range $pattern 0 1] == "\r\n"} {
+	set pattern [string range $pattern 2 end]
+    }
+
+    return $pattern
+}
+
+# Run over every test XML file and check the output.
+foreach filename [lsort [glob $srcdir/$subdir/maint-xml-dump-*.xml]] {
+    set pattern [build_pattern $filename]
+
+    if {[is_remote host]} {
+	set test_path [remote_download host $filename]
+    } else {
+	set test_path $filename
+    }
+
+    verbose -log "Looking for:\n$pattern"
+
+    gdb_test "maint print xml-tdesc $test_path" \
+	"$pattern" "check [file tail $filename]"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-arch.exp ./gdb/testsuite/gdb.xml/tdesc-arch.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-arch.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/tdesc-arch.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -41,7 +41,7 @@ gdb_test_multiple "set architecture" $ms
 set default_arch ""
 set msg "read default architecture"
 gdb_test_multiple "show architecture" $msg {
-    -re "The target architecture is set automatically \\(currently (\[^ \]*)\\)\r\n$gdb_prompt $" {
+    -re "The target architecture is set to \"auto\" \\(currently \"(\[^ \]*)\"\\)\\.\r\n$gdb_prompt $" {
 	set default_arch $expect_out(1,string)
 	pass $msg
     }
@@ -55,13 +55,16 @@ if { "$arch1" == "" || "$arch2" == "" ||
 
 # Run these tests twice, once for $arch1 and once for $arch2, to
 # make sure that the tdesc file overrides the global default.
+# TRANS_MODE indicates how newlines should be represented; it should
+# be one of the values supported by "fconfigure -translation".
 
-proc set_arch { arch which } {
+proc set_arch { arch which trans_mode } {
     global gdb_prompt
     global subdir
 
     set filename [standard_output_file tdesc-arch.xml]
     set fd [open $filename w]
+    fconfigure $fd -translation $trans_mode
     puts $fd \
 	"<target>
 	    <architecture>$arch</architecture>
@@ -86,14 +89,19 @@ proc set_arch { arch which } {
 
     set cmd "show architecture"
     gdb_test $cmd \
-	"The target architecture is set automatically \\(currently $arch\\)" \
+	"The target architecture is set to \"auto\" \\(currently \"$arch\"\\)\\." \
 	"$cmd ($which architecture)"
 
     remote_file host delete $filename
 }
 
-set_arch $arch1 first
-set_arch $arch2 second
+set_arch $arch1 first lf
+set_arch $arch2 second lf
+
+with_test_prefix crlf {
+    set_arch $arch1 first crlf
+    set_arch $arch2 second crlf
+}
 
 # Check an invalid architecture setting.
 set filename [standard_output_file tdesc-arch.xml]
@@ -114,7 +122,7 @@ gdb_test $cmd \
 
 set cmd "show architecture"
 gdb_test $cmd \
-    "The target architecture is set automatically \\(currently $default_arch\\)" \
+    "The target architecture is set to \"auto\" \\(currently \"$default_arch\"\\)\\." \
     "$cmd (invalid architecture)"
 
 remote_file host delete $filename
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-errors.exp ./gdb/testsuite/gdb.xml/tdesc-errors.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-errors.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/tdesc-errors.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-regs.exp ./gdb/testsuite/gdb.xml/tdesc-regs.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-regs.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/tdesc-regs.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -145,7 +145,7 @@ proc load_description { file errmsg xml_
     close $ofd
 
     if {[is_remote host]} {
-	set regs_file [remote_download host "$subdir/$xml_file" $xml_file]
+	set regs_file [remote_download host "$regs_file" $xml_file]
     }
 
     # Anchor the test output, so that error messages are detected.
@@ -165,7 +165,7 @@ if {![is_remote host]} {
 }
 
 load_description "extra-regs.xml" "" "test-extra-regs.xml"
-gdb_test "ptype \$extrareg" "type = (int|long|long long)"
+gdb_test "ptype \$extrareg" "type = (int32_t|int|long|long long)"
 gdb_test "ptype \$uintreg" "type = uint32_t"
 gdb_test "ptype \$vecreg" "type = int8_t __attribute__ \\(\\(vector_size\\(4\\)\\)\\)"
 gdb_test "ptype \$unionreg" \
@@ -184,6 +184,8 @@ gdb_test "ptype \$mixed_flags" \
 gdb_test "maintenance print reggroups" \
     " Group\[ \t\]+Type\[ \t\]+\r\n.* general\[ \t\]+user\[ \t\]+\r\n.* foo\[ \t\]+user\[ \t\]+"
 
-load_description "core-only.xml" "" "test-regs.xml"
-# The extra register from the previous description should be gone.
-gdb_test "ptype \$extrareg" "type = void"
+with_test_prefix "core-only.xml" {
+    load_description "core-only.xml" "" "test-regs.xml"
+    # The extra register from the previous description should be gone.
+    gdb_test "ptype \$extrareg" "type = void"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-reload.c ./gdb/testsuite/gdb.xml/tdesc-reload.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-reload.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/tdesc-reload.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2020-2021 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/>.  */
+
+int
+main ()
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-reload.exp ./gdb/testsuite/gdb.xml/tdesc-reload.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-reload.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/tdesc-reload.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,83 @@
+# Copyright 2020-2021 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/>.
+
+# Testing for 'maint print xml-tdesc'.  Check we can print out the
+# current target description and load it back in again.
+
+if {[gdb_skip_xml_test]} {
+    unsupported "xml tests not being run"
+    return -1
+}
+
+standard_testfile
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
+    return -1
+}
+
+if ![runto_main] then {
+    fail "can't run to main"
+    return 0
+}
+
+# Three files we're going to write out to.
+set xml_file_1 [standard_output_file outfile1.xml]
+set xml_file_2 [standard_output_file outfile2.xml]
+set xml_file_3 [standard_output_file outfile3.xml]
+
+# Write the current target description to a file.
+gdb_test_no_output "pipe maint print xml-tdesc | cat > $xml_file_1" \
+    "write current target description to file"
+
+# Read the target description back in to GDB, and the write it back
+# out to a file.
+gdb_test_no_output \
+    "pipe maint print xml-tdesc $xml_file_1 | cat > $xml_file_2" \
+    "read previous xml description, and write it out to a second file"
+
+# Check the two produced files are identical.
+gdb_test "shell diff -s $xml_file_1 $xml_file_2" \
+    "Files \[^\r\n\]* are identical" \
+    "first two produced xml files are identical"
+
+# Restart GDB.
+clean_restart
+
+# Change to use one of the target descriptions we wrote out earlier.
+gdb_test_no_output "set tdesc filename $xml_file_1" \
+    "set target description to use"
+
+# Load the executable.
+gdb_load ${binfile}
+
+# Run to `main' where we begin our tests.
+if ![runto_main] then {
+    untested "could not run to main"
+    return -1
+}
+
+# Run info registers just to check this appears to run fine with the
+# new target description.
+gdb_test "info all-registers" ".*" \
+    "Run info registers"
+
+# Write out the current target description.
+gdb_test_no_output "pipe maint print xml-tdesc | cat > $xml_file_3" \
+    "write third target description to file"
+
+# And check that it matches the original file we loaded.
+gdb_test "shell diff -s $xml_file_1 $xml_file_3" \
+    "Files \[^\r\n\]* are identical" \
+    "first and third produced xml files are identical"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-xinclude.exp ./gdb/testsuite/gdb.xml/tdesc-xinclude.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/gdb.xml/tdesc-xinclude.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/gdb.xml/tdesc-xinclude.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/ada.exp ./gdb/testsuite/lib/ada.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/ada.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/ada.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
@@ -52,14 +52,16 @@ proc target_compile_ada_from_dir {buildd
     return -options $options $result
 }
 
-# Compile some Ada code.
+# Compile some Ada code.  Return "" if the compile was successful.
 
-proc gdb_compile_ada {source dest type options} {
+proc gdb_compile_ada_1 {source dest type options} {
 
     set srcdir [file dirname $source]
     set gprdir [file dirname $srcdir]
     set objdir [file dirname $dest]
 
+    file delete $dest
+
     # Although strictly not necessary, we force the recompilation
     # of all units (additional_flags=-f).  This is what is done
     # when using GCC to build programs in the other languages,
@@ -78,6 +80,15 @@ proc gdb_compile_ada {source dest type o
     # We therefore simply check whether the dest file has been created
     # or not. Unless not present, the build has succeeded.
     if [file exists $dest] { set result "" }
+    return $result
+}
+
+# Compile some Ada code.  Generate "PASS: foo.exp: compilation SOURCE" if the
+# compile was successful.
+
+proc gdb_compile_ada {source dest type options} {
+    set result [gdb_compile_ada_1 $source $dest $type $options]
+
     gdb_compile_test $source $result
     return $result
 }
@@ -122,6 +133,9 @@ proc find_ada_tool {tool} {
 
     if {![is_remote host]} {
         set result [lookfor_file $root $tool]
+	if { $result != "" && $tool == "gnatlink" } {
+	    set result "$result --GCC=$root/xgcc -B$root"
+	}
     }
 
     if {$result == ""} {
@@ -136,7 +150,9 @@ proc find_ada_tool {tool} {
 proc gnatmake_version_at_least { major } {
     set gnatmake [gdb_find_gnatmake]
     set gnatmake [lindex [split $gnatmake] 0]
-    set output [exec $gnatmake --version]
+    if {[catch {exec $gnatmake --version} output]} {
+	return 0
+    }
     if { [regexp {GNATMAKE ([^ .]+).([^ .]+).([^ .]+)} $output \
 	      match gnatmake_major gnatmake_minor gnatmake_micro] } {
 	if { $gnatmake_major >= $major } {
@@ -149,3 +165,38 @@ proc gnatmake_version_at_least { major }
     # Unknown, return 1
     return 1
 }
+
+# Return 1 if the GNAT runtime appears to have debug info.
+
+gdb_caching_proc gnat_runtime_has_debug_info {
+    global srcdir
+
+    set src "$srcdir/lib/gnat_debug_info_test.adb"
+    set dst [standard_output_file "gnat_debug_info_test"]
+
+    if { [gdb_compile_ada_1 $src $dst executable {debug}] != "" } {
+	return 0
+    }
+
+    clean_restart $dst
+
+    if { ! [runto "GNAT_Debug_Info_Test"] } {
+	fail "failed to run to GNAT_Debug_Info_Test"
+	return 0
+    }
+
+    set has_debug_info 0
+
+    gdb_test_multiple "whatis __gnat_debug_raise_exception" "" {
+	-re "type = <text variable, no debug info>" { }
+	-re "type = void" {
+	    set has_debug_info 1
+	}
+	default {
+	    # Some other unexpected output...
+	    fail $gdb_test_name
+	}
+    }
+
+    return $has_debug_info
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/append_gdb_boards_dir.exp ./gdb/testsuite/lib/append_gdb_boards_dir.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/append_gdb_boards_dir.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/append_gdb_boards_dir.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/build-piece.exp ./gdb/testsuite/lib/build-piece.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/build-piece.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/build-piece.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/cache.exp ./gdb/testsuite/lib/cache.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/cache.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/cache.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
@@ -17,36 +17,92 @@
 # The in-memory cache.
 array set gdb_data_cache {}
 
+# Print pass message msg into gdb.log
+proc ignore_pass { msg } {
+    verbose -log "gdb_do_cache_wrap ignoring pass: $msg"
+}
+
+# Call proc real_name and return the result, while ignoring calls to pass.
+proc gdb_do_cache_wrap {real_name} {
+    if { [info procs save_pass] != "" } {
+	return [uplevel 2 $real_name]
+    }
+
+    rename pass save_pass
+    rename ignore_pass pass
+
+    set code [catch {uplevel 2 $real_name} result]
+
+    rename pass ignore_pass
+    rename save_pass pass
+
+    if {$code == 1} {
+	global errorInfo errorCode
+	return -code error -errorinfo $errorInfo -errorcode $errorCode $result
+    } elseif {$code > 1} {
+	return -code $code $result
+    }
+
+    return $result
+}
+
 # A helper for gdb_caching_proc that handles the caching.
 
 proc gdb_do_cache {name} {
     global gdb_data_cache objdir
     global GDB_PARALLEL
 
+    # Normally, if we have a cached value, we skip computation and return
+    # the cached value.  If set to 1, instead don't skip computation and
+    # verify against the cached value.
+    set cache_verify 0
+
+    # Alternatively, set this to do cache_verify only for one proc.
+    set cache_verify_proc ""
+    if { $name == $cache_verify_proc } {
+	set cache_verify 1
+    }
+
     # See if some other process wrote the cache file.  Cache value per
     # "board" to handle runs with multiple options
     # (e.g. unix/{-m32,-64}) correctly.  We use "file join" here
     # because we later use this in a real filename.
     set cache_name [file join [target_info name] $name]
 
+    set is_cached 0
     if {[info exists gdb_data_cache($cache_name)]} {
-	verbose "$name: returning '$gdb_data_cache($cache_name)' from cache" 2
-	return $gdb_data_cache($cache_name)
+	set cached $gdb_data_cache($cache_name)
+	verbose "$name: returning '$cached' from cache" 2
+	if { $cache_verify == 0 } {
+	    return $cached
+	}
+	set is_cached 1
     }
 
-    if {[info exists GDB_PARALLEL]} {
+    if { $is_cached == 0 && [info exists GDB_PARALLEL] } {
 	set cache_filename [make_gdb_parallel_path cache $cache_name]
 	if {[file exists $cache_filename]} {
 	    set fd [open $cache_filename]
 	    set gdb_data_cache($cache_name) [read -nonewline $fd]
 	    close $fd
-	    verbose "$name: returning '$gdb_data_cache($cache_name)' from file cache" 2
-	    return $gdb_data_cache($cache_name)
+	    set cached $gdb_data_cache($cache_name)
+	    verbose "$name: returning '$cached' from file cache" 2
+	    if { $cache_verify == 0 } {
+		return $cached
+	    }
+	    set is_cached 1
 	}
     }
 
     set real_name gdb_real__$name
-    set gdb_data_cache($cache_name) [uplevel 1 $real_name]
+    set gdb_data_cache($cache_name) [gdb_do_cache_wrap $real_name]
+    if { $cache_verify == 1 && $is_cached == 1 } {
+	set computed $gdb_data_cache($cache_name)
+	if { $cached != $computed } {
+	    error [join [list "Inconsistent results for $cache_name:"
+			 "cached: $cached vs. computed: $computed"]]
+	}
+    }
 
     if {[info exists GDB_PARALLEL]} {
 	verbose "$name: returning '$gdb_data_cache($cache_name)' and writing file" 2
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/check-test-names.exp ./gdb/testsuite/lib/check-test-names.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/check-test-names.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/lib/check-test-names.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,174 @@
+# Copyright 2020-2021 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 library provides some protection against the introduction of
+# tests that include either the source of build paths in the test
+# name.  When a test includes the path in its test name it is harder
+# to compare results between two runs of GDB from different trees.
+
+namespace eval ::CheckTestNames {
+    # An associative array of all test names to the number of times each
+    # name is seen.  Used to detect duplicate test names.
+    variable all_test_names
+    array set all_test_names {}
+
+    # An associative array of counts of tests that either include a path in
+    # their test name, or have a duplicate test name.  There are two counts
+    # for each issue, 'count', which counts occurrences within a single
+    # variant run, and 'total', which counts across all variants.
+    variable counts
+    array set counts {}
+    foreach nm {paths duplicates} {
+	set counts($nm,count) 0
+	set counts($nm,total) 0
+    }
+
+    # Increment the count, and total count for TYPE.
+    proc inc_count { type } {
+	variable counts
+
+	incr counts($type,count)
+	incr counts($type,total)
+    }
+
+    # Check if MESSAGE contains a build or source path, if it does increment
+    # the relevant counter and return true, otherwise, return false.
+    proc _check_paths { message } {
+	global srcdir objdir
+
+	foreach path [list $srcdir $objdir] {
+	    if { [ string first $path $message ] >= 0 } {
+		# Count each test just once.
+		inc_count paths
+		return true
+	    }
+	}
+
+	return false
+    }
+
+    # Check if MESSAGE is a duplicate, if it is then increment the
+    # duplicates counter and return true, otherwise, return false.
+    proc _check_duplicates { message } {
+	variable all_test_names
+
+	# Initialise a count, or increment the count for this test name.
+	if {![info exists all_test_names($message)]} {
+	    set all_test_names($message) 0
+	} else {
+	    if {$all_test_names($message) == 0} {
+		inc_count duplicates
+	    }
+	    incr all_test_names($message)
+	    return true
+	}
+
+	return false
+    }
+
+    # Remove the leading Dejagnu status marker from MESSAGE, and
+    # return the remainder of MESSAGE.  A status marker is something
+    # like 'PASS: '.  It is assumed that MESSAGE does contain such a
+    # marker.  If it doesn't then MESSAGE is returned unmodified.
+    proc _strip_status { message } {
+	# Find the position of the first ': ' string.
+	set pos [string first ": " $message]
+	if { $pos > -1 } {
+	    # The '+ 2' is so we skip the ': ' we found above.
+	    return  [string range $message [expr $pos + 2] end]
+	}
+
+	return $message
+    }
+
+    # Check if MESSAGE contains either the source path or the build path.
+    # This will result in test names that can't easily be compared between
+    # different runs of GDB.
+    #
+    # Any offending test names cause the corresponding count to be
+    # incremented, and an extra message to be printed into the log
+    # file.
+    proc check { message } {
+	set message [ _strip_status $message ]
+
+	if [ _check_paths $message ] {
+	    clone_output "PATH: $message"
+	}
+
+	if [ _check_duplicates $message ] {
+	    clone_output "DUPLICATE: $message"
+	}
+    }
+
+    # If COUNT is greater than zero, disply PREFIX followed by COUNT.
+    proc maybe_show_count { prefix count } {
+	if { $count > 0 } {
+	    clone_output "$prefix$count"
+	}
+    }
+
+    # Rename Dejagnu's log_summary procedure, and create do_log_summary to
+    # replace it.  We arrange to have do_log_summary called later.
+    rename ::log_summary log_summary
+    proc do_log_summary { args } {
+	variable counts
+
+	# If ARGS is the empty list then we don't want to pass a single
+	# empty string as a parameter here.
+	eval "CheckTestNames::log_summary $args"
+
+	if { [llength $args] == 0 } {
+	    set which "count"
+	} else {
+	    set which [lindex $args 0]
+	}
+
+	maybe_show_count "# of paths in test names\t" \
+	    $counts(paths,$which)
+	maybe_show_count "# of duplicate test names\t" \
+	    $counts(duplicates,$which)
+    }
+
+    # Rename Dejagnu's reset_vars procedure, and create do_reset_vars to
+    # replace it.  We arrange to have do_reset_vars called later.
+    rename ::reset_vars reset_vars
+    proc do_reset_vars {} {
+	variable all_test_names
+	variable counts
+
+	CheckTestNames::reset_vars
+
+	array unset all_test_names
+	foreach nm {paths duplicates} {
+	    set counts($nm,count) 0
+	}
+    }
+}
+
+# Arrange for Dejagnu to call CheckTestNames::check for each test result.
+foreach nm {pass fail xfail kfail xpass kpass unresolved untested \
+		unsupported} {
+    set local_record_procs($nm) "CheckTestNames::check"
+}
+
+# Create new global log_summary to replace Dejagnu's.
+proc log_summary { args } {
+    eval "CheckTestNames::do_log_summary $args"
+}
+
+# Create new global reset_vars to replace Dejagnu's.
+proc reset_vars {} {
+    eval "CheckTestNames::do_reset_vars"
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/cl_util.c ./gdb/testsuite/lib/cl_util.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/cl_util.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/cl_util.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/cl_util.h ./gdb/testsuite/lib/cl_util.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/cl_util.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/cl_util.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/compiler.c ./gdb/testsuite/lib/compiler.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/compiler.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/compiler.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test file is part of GDB, the GNU debugger.
 
-   Copyright 1995-2020 Free Software Foundation, Inc.
+   Copyright 1995-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/compiler.cc ./gdb/testsuite/lib/compiler.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/compiler.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/compiler.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This test file is part of GDB, the GNU debugger.
 
-   Copyright 1995-2020 Free Software Foundation, Inc.
+   Copyright 1995-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/compile-support.exp ./gdb/testsuite/lib/compile-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/compile-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/compile-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2015-2020 Free Software Foundation, Inc.
+# Copyright 2015-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/completion-support.exp ./gdb/testsuite/lib/completion-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/completion-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/completion-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
@@ -108,13 +108,19 @@ proc test_gdb_complete_tab_unique { inpu
 
     set test "tab complete \"$input_line\""
     send_gdb "$input_line\t"
+    set res 1
     gdb_test_multiple "" "$test" {
 	-re "^$complete_line_re$append_char_re$" {
 	    pass "$test"
 	}
+	timeout {
+	    fail "$test (timeout)"
+	    set res -1
+	}
     }
 
     clear_input_line $test
+    return $res
 }
 
 # Test that completing INPUT_LINE with TAB completes to "INPUT_LINE +
@@ -242,7 +248,10 @@ proc test_gdb_complete_none { input_line
 proc test_gdb_complete_unique_re { input_line complete_line_re {append_char " "} {max_completions 0}} {
     set append_char_re [string_to_regexp $append_char]
     if { [readline_is_used] } {
-	test_gdb_complete_tab_unique $input_line $complete_line_re $append_char_re
+	if { [test_gdb_complete_tab_unique $input_line $complete_line_re \
+		  $append_char_re] == -1 } {
+	    return -1
+	}
     }
 
     # Trim INPUT_LINE and COMPLETE LINE, for the case we're completing
@@ -266,6 +275,7 @@ proc test_gdb_complete_unique_re { input
     }
 
     test_gdb_complete_cmd_unique $input_line $expected_output_re
+    return 1
 }
 
 # Like TEST_GDB_COMPLETE_UNIQUE_RE, but COMPLETE_LINE is a string, not
@@ -301,9 +311,22 @@ proc test_complete_prefix_range_re {inpu
 	set end [string length $input]
     }
 
+    set timeouts 0
+    set max_timeouts 3
     for {set i $start} {$i < $end} {incr i} {
 	set line [string range $input 0 $i]
-	test_gdb_complete_unique_re "$line" $completion_re
+	set res [test_gdb_complete_unique_re "$line" $completion_re]
+	if { $res == -1 } {
+	    incr timeouts
+	} else {
+	    if { $timeouts > 0 } {
+		set timeouts 0
+	    }
+	}
+	if { $timeouts == $max_timeouts } {
+	    verbose -log "Consecutive timeouts in test_complete_prefix_range_re, giving up"
+	    break
+	}
     }
 }
 
@@ -532,10 +555,19 @@ proc test_gdb_completion_offers_commands
     # Force showing two commands.
     gdb_test_no_output "set max-completions 2" ""
 
-    test_gdb_complete_multiple $input_line "" "" {
-	"!"
-	"+"
-    } "" "" 1
+    # TUI adds additional commands to the possible completions, so we
+    # need different patterns depending on whether or not it is enabled.
+    if { [skip_tui_tests] } {
+	test_gdb_complete_multiple $input_line "" "" {
+	    "!"
+	    "actions"
+	} "" "" 1
+    } else {
+	test_gdb_complete_multiple $input_line "" "" {
+	    "!"
+	    "+"
+	} "" "" 1
+    }
 
     # Restore.
     gdb_test_no_output "set max-completions $max_completions" ""
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/cp-support.exp ./gdb/testsuite/lib/cp-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/cp-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/cp-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This test code is part of GDB, the GNU debugger.
 
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/data-structures.exp ./gdb/testsuite/lib/data-structures.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/data-structures.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/data-structures.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2017-2020 Free Software Foundation, Inc.
+# Copyright 2017-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/d-support.exp ./gdb/testsuite/lib/d-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/d-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/d-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/dtrace.exp ./gdb/testsuite/lib/dtrace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/dtrace.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/dtrace.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
@@ -52,7 +52,8 @@ proc dtrace_build_usdt_test_program {} {
     }
 
     # 2. Compile testprogram.c.
-    set options [list debug additional_flags=-I[file dirname $out_header_file]]
+    set options [list debug quiet \
+		     additional_flags=-I[file dirname $out_header_file]]
     if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}.o" object ${options}] != ""} {
         return -1
     }
@@ -65,7 +66,8 @@ proc dtrace_build_usdt_test_program {} {
     }
 
     # 4. Link everything together to get the test program.
-    if {[gdb_compile "${binfile}.o ${binfile}-p.o" ${binfile} executable {debug}] != ""} {
+    if {[gdb_compile "${binfile}.o ${binfile}-p.o" ${binfile} executable \
+	     {debug quiet}] != ""} {
         return -1
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/dwarf.exp ./gdb/testsuite/lib/dwarf.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/dwarf.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/dwarf.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -114,12 +114,12 @@ proc build_executable_from_fission_assem
 # static void func (void) {}
 #
 
-proc function_range { func src } {
+proc function_range { func src {options {debug}} } {
     global decimal gdb_prompt
 
     set exe [standard_temp_file func_addr[pid].x]
 
-    gdb_compile $src $exe executable {debug}
+    gdb_compile $src $exe executable $options
 
     gdb_exit
     gdb_start
@@ -164,6 +164,22 @@ proc function_range { func src } {
     return [list "${func}_label - $func_label_offset" $func_length]
 }
 
+# Extract the start, length, and end for function called NAME and
+# create suitable variables in the callers scope.
+proc get_func_info { name {options {debug}} } {
+    global srcdir subdir srcfile
+
+    upvar 1 "${name}_start" func_start
+    upvar 1 "${name}_len" func_len
+    upvar 1 "${name}_end" func_end
+
+    lassign [function_range ${name} \
+		 [list ${srcdir}/${subdir}/$srcfile] \
+		 ${options}]  \
+	func_start func_len
+    set func_end "$func_start + $func_len"
+}
+
 # A DWARF assembler.
 #
 # All the variables in this namespace are private to the
@@ -203,11 +219,11 @@ proc function_range { func src } {
 # which will be substituted by one or more standard or macro attributes.
 # supported macro attributes are:
 #
-#  - MACRO_AT_range { FUNC FILE }
+#  - MACRO_AT_range { FUNC }
 #  It is substituted by DW_AT_low_pc and DW_AT_high_pc with the start and
-#  end address of function FUNC in file FILE.
+#  end address of function FUNC in file $srcdir/$subdir/$srcfile.
 #
-#  - MACRO_AT_func { FUNC FILE }
+#  - MACRO_AT_func { FUNC }
 #  It is substituted by DW_AT_name with FUNC and MACRO_AT_range.
 #
 # If FORM is given, it should name a DW_FORM_ constant.
@@ -460,7 +476,9 @@ namespace eval Dwarf {
 	    }
 
 	    DW_FORM_ref_udata -
-	    DW_FORM_udata {
+	    DW_FORM_udata -
+	    DW_FORM_loclistx -
+	    DW_FORM_rnglistx {
 		_op .uleb128 $value
 	    }
 
@@ -501,11 +519,15 @@ namespace eval Dwarf {
 	    }
 
 	    SPECIAL_expr {
+		variable _cu_version
+		variable _cu_addr_size
+		variable _cu_offset_size
+
 		set l1 [new_label "expr_start"]
 		set l2 [new_label "expr_end"]
 		_op .uleb128 "$l2 - $l1" "expression"
 		define_label $l1
-		_location $value
+		_location $value $_cu_version $_cu_addr_size $_cu_offset_size
 		define_label $l2
 	    }
 
@@ -605,12 +627,13 @@ namespace eval Dwarf {
     # Handle macro attribute MACRO_AT_range.
 
     proc _handle_macro_at_range { attr_value } {
-	if {[llength $attr_value] != 2} {
-	    error "usage: MACRO_AT_range { func file }"
+	if {[llength $attr_value] != 1} {
+	    error "usage: MACRO_AT_range { func }"
 	}
 
 	set func [lindex $attr_value 0]
-	set src [lindex $attr_value 1]
+	global srcdir subdir srcfile
+	set src ${srcdir}/${subdir}/${srcfile}
 	set result [function_range $func $src]
 
 	_handle_attribute DW_AT_low_pc [lindex $result 0] \
@@ -622,7 +645,7 @@ namespace eval Dwarf {
     # Handle macro attribute MACRO_AT_func.
 
     proc _handle_macro_at_func { attr_value } {
-	if {[llength $attr_value] != 2} {
+	if {[llength $attr_value] != 1} {
 	    error "usage: MACRO_AT_func { func file }"
 	}
 	_handle_attribute DW_AT_name [lindex $attr_value 0] DW_FORM_string
@@ -806,15 +829,6 @@ namespace eval Dwarf {
 	_emit "${name}:"
     }
 
-    # Declare a global label.  This is typically used to refer to
-    # labels defined in other files, for example a function defined in
-    # a .c file.
-    proc extern {args} {
-	foreach name $args {
-	    _op .global $name
-	}
-    }
-
     # A higher-level interface to label handling.
     #
     # ARGS is a list of label descriptors.  Each one is either a
@@ -855,18 +869,28 @@ namespace eval Dwarf {
     # This is a miniature assembler for location expressions.  It is
     # suitable for use in the attributes to a DIE.  Its output is
     # prefixed with "=" to make it automatically use DW_FORM_block.
+    #
     # BODY is split by lines, and each line is taken to be a list.
+    #
+    # DWARF_VERSION is the DWARF version for the section where the location
+    # description is found.
+    #
+    # ADDR_SIZE is the length in bytes (4 or 8) of an address on the target
+    # machine (typically found in the header of the section where the location
+    # description is found).
+    #
+    # OFFSET_SIZE is the length in bytes (4 or 8) of an offset into a DWARF
+    # section.  This typically depends on whether 32-bit or 64-bit DWARF is
+    # used, as indicated in the header of the section where the location
+    # description is found.
+    #
     # (FIXME should use 'info complete' here.)
     # Each list's first element is the opcode, either short or long
     # forms are accepted.
     # FIXME argument handling
     # FIXME move docs
-    proc _location {body} {
+    proc _location { body dwarf_version addr_size offset_size } {
 	variable _constants
-	variable _cu_label
-	variable _cu_version
-	variable _cu_addr_size
-	variable _cu_offset_size
 
 	foreach line [split $body \n] {
 	    # Ignore blank lines, and allow embedded comments.
@@ -878,7 +902,7 @@ namespace eval Dwarf {
 
 	    switch -exact -- $opcode {
 		DW_OP_addr {
-		    _op .${_cu_addr_size}byte [lindex $line 1]
+		    _op .${addr_size}byte [lindex $line 1]
 		}
 
 		DW_OP_regx {
@@ -958,10 +982,10 @@ namespace eval Dwarf {
 
 		    # Here label is a section offset.
 		    set label [lindex $line 1]
-		    if { $_cu_version == 2 } {
-			_op .${_cu_addr_size}byte $label
+		    if { $dwarf_version == 2 } {
+			_op .${addr_size}byte $label
 		    } else {
-			_op .${_cu_offset_size}byte $label
+			_op .${offset_size}byte $label
 		    }
 		    _op .sleb128 [lindex $line 2]
 		}
@@ -973,10 +997,10 @@ namespace eval Dwarf {
 
 		    # Here label is a section offset.
 		    set label [lindex $line 1]
-		    if { $_cu_version == 2 } {
-			_op .${_cu_addr_size}byte $label
+		    if { $dwarf_version == 2 } {
+			_op .${addr_size}byte $label
 		    } else {
-			_op .${_cu_offset_size}byte $label
+			_op .${offset_size}byte $label
 		    }
 		}
 
@@ -1010,7 +1034,7 @@ namespace eval Dwarf {
     #                default = 0 (32-bit)
     # version n    - DWARF version number to emit
     #                default = 4
-    # addr_size n  - the size of addresses, 32, 64, or default
+    # addr_size n  - the size of addresses in bytes: 4, 8, or default
     #                default = default
     # fission 0|1  - boolean indicating if generating Fission debug info
     #                default = 0
@@ -1075,8 +1099,16 @@ namespace eval Dwarf {
 	}
 	define_label $start_label
 	_op .2byte $_cu_version Version
-	_op .${_cu_offset_size}byte $my_abbrevs Abbrevs
-	_op .byte $_cu_addr_size "Pointer size"
+
+	# The CU header for DWARF 4 and 5 are slightly different.
+	if { $_cu_version == 5 } {
+	    _op .byte 0x1 "DW_UT_compile"
+	    _op .byte $_cu_addr_size "Pointer size"
+	    _op .${_cu_offset_size}byte $my_abbrevs Abbrevs
+	} else {
+	    _op .${_cu_offset_size}byte $my_abbrevs Abbrevs
+	    _op .byte $_cu_addr_size "Pointer size"
+	}
 
 	_defer_output $_abbrev_section {
 	    define_label $my_abbrevs
@@ -1101,7 +1133,7 @@ namespace eval Dwarf {
     #                default = 0 (32-bit)
     # version n    - DWARF version number to emit
     #                default = 4
-    # addr_size n  - the size of addresses, 32, 64, or default
+    # addr_size n  - the size of addresses in bytes: 4, 8, or default
     #                default = default
     # fission 0|1  - boolean indicating if generating Fission debug info
     #                default = 0
@@ -1273,6 +1305,401 @@ namespace eval Dwarf {
 	uplevel $body
     }
 
+    # Emit a DWARF .debug_rnglists section.
+    #
+    # The target address size is based on the current target's address size.
+    #
+    # There is one mandatory positional argument, BODY, which must be Tcl code
+    # that emits the content of the section.  It is evaluated in the caller's
+    # context.
+    #
+    # The following option can be used:
+    #
+    #  - -is-64 true|false: Whether to use 64-bit DWARF instead of 32-bit DWARF.
+    #                       The default is 32-bit.
+
+    proc rnglists { args } {
+	variable _debug_rnglists_addr_size
+	variable _debug_rnglists_offset_size
+	variable _debug_rnglists_is_64_dwarf
+
+	parse_args {{"is-64" "false"}}
+
+	if { [llength $args] != 1 } {
+	    error "rnglists proc expects one positional argument (body)"
+	}
+
+	lassign $args body
+
+	if [is_64_target] {
+	    set _debug_rnglists_addr_size 8
+	} else {
+	    set _debug_rnglists_addr_size 4
+	}
+
+	if { ${is-64} } {
+	    set _debug_rnglists_offset_size 8
+	    set _debug_rnglists_is_64_dwarf true
+	} else {
+	    set _debug_rnglists_offset_size 4
+	    set _debug_rnglists_is_64_dwarf false
+	}
+
+	_section ".debug_rnglists"
+
+	# Count of tables in the section.
+	variable _debug_rnglists_table_count 0
+
+	# Compute the label name for list at index LIST_IDX, for the current
+	# table.
+
+	proc _compute_list_label { list_idx } {
+	    variable _debug_rnglists_table_count
+
+	    return ".Lrnglists_table_${_debug_rnglists_table_count}_list_${list_idx}"
+	}
+
+	# Generate one table (header + offset array + range lists).
+	#
+	# Accepts one positional argument, BODY.  BODY may call the LIST_
+	# procedure to generate rnglists.
+	#
+	# The -post-header-label option can be used to define a label just after
+	# the header of the table.  This is the label that a DW_AT_rnglists_base
+	# attribute will usually refer to.
+	#
+	# The `-with-offset-array true|false` option can be used to control
+	# whether the headers of the location list tables have an array of
+	# offset.  The default is true.
+
+	proc table { args } {
+	    variable _debug_rnglists_table_count
+	    variable _debug_rnglists_addr_size
+	    variable _debug_rnglists_offset_size
+	    variable _debug_rnglists_is_64_dwarf
+
+	    parse_args {
+		{post-header-label ""}
+		{with-offset-array true}
+	    }
+
+	    if { [llength $args] != 1 } {
+		error "table proc expects one positional argument (body)"
+	    }
+
+	    lassign $args body
+
+	    # Generate one range list.
+	    #
+	    # BODY may call the various procs defined below to generate list entries.
+	    # They correspond to the range list entry kinds described in section 2.17.3
+	    # of the DWARF 5 spec.
+	    #
+	    # To define a label pointing to the beginning of the list, use
+	    # the conventional way of declaring and defining labels:
+	    #
+	    #   declare_labels the_list
+	    #
+	    #   the_list: list_ {
+	    #     ...
+	    #   }
+
+	    proc list_ { body } {
+		variable _debug_rnglists_list_count
+
+		# Define a label for this list.  It is used to build the offset
+		# array later.
+		set list_label [_compute_list_label $_debug_rnglists_list_count]
+		define_label $list_label
+
+		# Emit a DW_RLE_start_end entry.
+
+		proc start_end { start end } {
+		    variable _debug_rnglists_addr_size
+
+		    _op .byte 0x06 "DW_RLE_start_end"
+		    _op .${_debug_rnglists_addr_size}byte $start "start"
+		    _op .${_debug_rnglists_addr_size}byte $end "end"
+		}
+
+		uplevel $body
+
+		# Emit end of list.
+		_op .byte 0x00 "DW_RLE_end_of_list"
+
+		incr _debug_rnglists_list_count
+	    }
+
+	    # Count of lists in the table.
+	    variable _debug_rnglists_list_count 0
+
+	    # Generate the lists ops first, because we need to know how many
+	    # lists there are to generate the header and offset table.
+	    set lists_ops [_defer_to_string {
+		uplevel $body
+	    }]
+
+	    set post_unit_len_label \
+		[_compute_label "rnglists_table_${_debug_rnglists_table_count}_post_unit_len"]
+	    set post_header_label \
+		[_compute_label "rnglists_table_${_debug_rnglists_table_count}_post_header"]
+	    set table_end_label \
+		[_compute_label "rnglists_table_${_debug_rnglists_table_count}_end"]
+
+	    # Emit the table header.
+	    if { $_debug_rnglists_is_64_dwarf } {
+		_op .4byte 0xffffffff "unit length 1/2"
+		_op .8byte "$table_end_label - $post_unit_len_label" "unit length 2/2"
+	    } else {
+		_op .4byte "$table_end_label - $post_unit_len_label" "unit length"
+	    }
+
+	    define_label $post_unit_len_label
+
+	    _op .2byte 5 "dwarf version"
+	    _op .byte $_debug_rnglists_addr_size "address size"
+	    _op .byte 0 "segment selector size"
+
+	    if { ${with-offset-array} } {
+	      _op .4byte "$_debug_rnglists_list_count" "offset entry count"
+	    } else {
+	      _op .4byte 0 "offset entry count"
+	    }
+
+	    define_label $post_header_label
+
+	    # Define the user post-header label, if provided.
+	    if { ${post-header-label} != "" } {
+		define_label ${post-header-label}
+	    }
+
+	    # Emit the offset array.
+	    if { ${with-offset-array} } {
+		for {set list_idx 0} {$list_idx < $_debug_rnglists_list_count} {incr list_idx} {
+		    set list_label [_compute_list_label $list_idx]
+		    _op .${_debug_rnglists_offset_size}byte "$list_label - $post_header_label" "offset of list $list_idx"
+		}
+	    }
+
+	    # Emit the actual list data.
+	    _emit "$lists_ops"
+
+	    define_label $table_end_label
+
+	    incr _debug_rnglists_table_count
+	}
+
+	uplevel $body
+    }
+
+    # Emit a DWARF .debug_loclists section.
+    #
+    # The target address size is based on the current target's address size.
+    #
+    # There is one mandatory positional argument, BODY, which must be Tcl code
+    # that emits the content of the section.  It is evaluated in the caller's
+    # context.
+    #
+    # The following option can be used:
+    #
+    #  - -is-64 true|false: Whether to use 64-bit DWARF instead of 32-bit DWARF.
+    #                       The default is 32-bit.
+
+    proc loclists { args } {
+	variable _debug_loclists_addr_size
+	variable _debug_loclists_offset_size
+	variable _debug_loclists_is_64_dwarf
+
+	parse_args {{"is-64" "false"}}
+
+	if { [llength $args] != 1 } {
+	    error "loclists proc expects one positional argument (body)"
+	}
+
+	lassign $args body
+
+	if [is_64_target] {
+	    set _debug_loclists_addr_size 8
+	} else {
+	    set _debug_loclists_addr_size 4
+	}
+
+	if { ${is-64} } {
+	    set _debug_loclists_offset_size 8
+	    set _debug_loclists_is_64_dwarf true
+	} else {
+	    set _debug_loclists_offset_size 4
+	    set _debug_loclists_is_64_dwarf false
+	}
+
+	_section ".debug_loclists"
+
+	# Count of tables in the section.
+	variable _debug_loclists_table_count 0
+
+	# Compute the label name for list at index LIST_IDX, for the current
+	# table.
+
+	proc _compute_list_label { list_idx } {
+	    variable _debug_loclists_table_count
+
+	    return ".Lloclists_table_${_debug_loclists_table_count}_list_${list_idx}"
+	}
+
+	# Generate one table (header + offset array + location lists).
+	#
+	# Accepts one position argument, BODY.  BODY may call the LIST_
+	# procedure to generate loclists.
+	#
+	# The -post-header-label option can be used to define a label just after the
+	# header of the table.  This is the label that a DW_AT_loclists_base
+	# attribute will usually refer to.
+	#
+	# The `-with-offset-array true|false` option can be used to control
+	# whether the headers of the location list tables have an array of
+	# offset.  The default is true.
+
+	proc table { args } {
+	    variable _debug_loclists_table_count
+	    variable _debug_loclists_addr_size
+	    variable _debug_loclists_offset_size
+	    variable _debug_loclists_is_64_dwarf
+
+	    parse_args {
+		{post-header-label ""}
+		{with-offset-array true}
+	    }
+
+	    if { [llength $args] != 1 } {
+		error "table proc expects one positional argument (body)"
+	    }
+
+	    lassign $args body
+
+	    # Generate one location list.
+	    #
+	    # BODY may call the various procs defined below to generate list
+	    # entries.  They correspond to the location list entry kinds
+	    # described in section 2.6.2 of the DWARF 5 spec.
+	    #
+	    # To define a label pointing to the beginning of the list, use
+	    # the conventional way of declaring and defining labels:
+	    #
+	    #   declare_labels the_list
+	    #
+	    #   the_list: list_ {
+	    #     ...
+	    #   }
+
+	    proc list_ { body } {
+		variable _debug_loclists_list_count
+
+		# Count the location descriptions in this list.
+		variable _debug_loclists_locdesc_count 0
+
+		# Define a label for this list.  It is used to build the offset
+		# array later.
+		set list_label [_compute_list_label $_debug_loclists_list_count]
+		define_label $list_label
+
+		# Emit a DW_LLE_start_length entry.
+
+		proc start_length { start length locdesc } {
+		    variable _debug_loclists_is_64_dwarf
+		    variable _debug_loclists_addr_size
+		    variable _debug_loclists_offset_size
+		    variable _debug_loclists_table_count
+		    variable _debug_loclists_list_count
+		    variable _debug_loclists_locdesc_count
+
+		    _op .byte 0x08 "DW_LLE_start_length"
+
+		    # Start and end of the address range.
+		    _op .${_debug_loclists_addr_size}byte $start "start"
+		    _op .uleb128 $length "length"
+
+		    # Length of location description.
+		    set locdesc_start_label ".Lloclists_table_${_debug_loclists_table_count}_list_${_debug_loclists_list_count}_locdesc_${_debug_loclists_locdesc_count}_start"
+		    set locdesc_end_label ".Lloclists_table_${_debug_loclists_table_count}_list_${_debug_loclists_list_count}_locdesc_${_debug_loclists_locdesc_count}_end"
+		    _op .uleb128 "$locdesc_end_label - $locdesc_start_label" "locdesc length"
+
+		    define_label $locdesc_start_label
+		    set dwarf_version 5
+		    _location $locdesc $dwarf_version $_debug_loclists_addr_size $_debug_loclists_offset_size
+		    define_label $locdesc_end_label
+
+		    incr _debug_loclists_locdesc_count
+		}
+
+		uplevel $body
+
+		# Emit end of list.
+		_op .byte 0x00 "DW_LLE_end_of_list"
+
+		incr _debug_loclists_list_count
+	    }
+
+	    # Count of lists in the table.
+	    variable _debug_loclists_list_count 0
+
+	    # Generate the lists ops first, because we need to know how many
+	    # lists there are to generate the header and offset table.
+	    set lists_ops [_defer_to_string {
+		uplevel $body
+	    }]
+
+	    set post_unit_len_label \
+		[_compute_label "loclists_table_${_debug_loclists_table_count}_post_unit_len"]
+	    set post_header_label \
+		[_compute_label "loclists_table_${_debug_loclists_table_count}_post_header"]
+	    set table_end_label \
+		[_compute_label "loclists_table_${_debug_loclists_table_count}_end"]
+
+	    # Emit the table header.
+	    if { $_debug_loclists_is_64_dwarf } {
+		_op .4byte 0xffffffff "unit length 1/2"
+		_op .8byte "$table_end_label - $post_unit_len_label" "unit length 2/2"
+	    } else {
+		_op .4byte "$table_end_label - $post_unit_len_label" "unit length"
+	    }
+
+	    define_label $post_unit_len_label
+
+	    _op .2byte 5 "DWARF version"
+	    _op .byte $_debug_loclists_addr_size "address size"
+	    _op .byte 0 "segment selector size"
+
+	    if { ${with-offset-array} } {
+	      _op .4byte "$_debug_loclists_list_count" "offset entry count"
+	    } else {
+	      _op .4byte 0 "offset entry count"
+	    }
+
+	    define_label $post_header_label
+
+	    # Define the user post-header label, if provided.
+	    if { ${post-header-label} != "" } {
+		define_label ${post-header-label}
+	    }
+
+	    # Emit the offset array.
+	    if { ${with-offset-array} } {
+		for {set list_idx 0} {$list_idx < $_debug_loclists_list_count} {incr list_idx} {
+		    set list_label [_compute_list_label $list_idx]
+		    _op .${_debug_loclists_offset_size}byte "$list_label - $post_header_label" "offset of list $list_idx"
+		}
+	    }
+
+	    # Emit the actual list data.
+	    _emit "$lists_ops"
+
+	    define_label $table_end_label
+
+	    incr _debug_loclists_table_count
+	}
+
+	uplevel $body
+    }
 
     # Emit a DWARF .debug_line unit.
     # OPTIONS is a list with an even number of elements containing
@@ -1282,7 +1709,7 @@ namespace eval Dwarf {
     #                default = 0 (32-bit)
     # version n    - DWARF version number to emit
     #                default = 4
-    # addr_size n  - the size of addresses, 32, 64, or default
+    # addr_size n  - the size of addresses in bytes: 4, 8, or default
     #                default = default
     #
     # LABEL is the label of the current unit (which is probably
@@ -1309,12 +1736,16 @@ namespace eval Dwarf {
 	set is_64 0
 	set _unit_version 4
 	set _unit_addr_size default
+	set _line_saw_program 0
+	set _line_saw_file 0
+	set _default_is_stmt 1
 
 	foreach { name value } $options {
 	    switch -exact -- $name {
 		is_64 { set is_64 $value }
 		version { set _unit_version $value }
 		addr_size { set _unit_addr_size $value }
+		default_is_stmt { set _default_is_stmt $value }
 		default { error "unknown option $name" }
 	    }
 	}
@@ -1361,7 +1792,7 @@ namespace eval Dwarf {
 	define_label $header_len_label
 
 	_op .byte 1 "minimum_instruction_length"
-	_op .byte 1 "default_is_stmt"
+	_op .byte $_default_is_stmt "default_is_stmt"
 	_op .byte 1 "line_base"
 	_op .byte 1 "line_range"
 	_op .byte 10 "opcode_base"
@@ -1403,6 +1834,9 @@ namespace eval Dwarf {
 	proc program {statements} {
 	    variable _line_saw_program
 	    variable _line_header_end_label
+	    variable _line
+
+	    set _line 1
 
 	    if "! $_line_saw_program" {
 		# Terminate the file list.
@@ -1427,23 +1861,67 @@ namespace eval Dwarf {
 	    }
 
 	    proc DW_LNE_end_sequence {} {
+		variable _line
 		_op .byte 0
 		_op .uleb128 1
 		_op .byte 1
+		set _line 1
+	    }
+
+	    proc DW_LNE_user { len opcode } {
+		set DW_LNE_lo_usr 0x80
+		set DW_LNE_hi_usr 0xff
+		if { $DW_LNE_lo_usr <= $opcode
+		     && $opcode <= $DW_LNE_hi_usr } {
+		    _op .byte 0
+		    _op .uleb128 $len
+		    _op .byte $opcode
+		    for {set i 1} {$i < $len} {incr i} {
+			_op .byte 0
+		    }
+		} else {
+		    error "unknown vendor specific extended opcode: $opcode"
+		}
 	    }
 
 	    proc DW_LNS_copy {} {
 		_op .byte 1
 	    }
 
+	    proc DW_LNS_negate_stmt {} {
+		_op .byte 6
+	    }
+
 	    proc DW_LNS_advance_pc {offset} {
 		_op .byte 2
 		_op .uleb128 ${offset}
 	    }
 
 	    proc DW_LNS_advance_line {offset} {
+		variable _line
 		_op .byte 3
 		_op .sleb128 ${offset}
+		set _line [expr $_line + $offset]
+	    }
+
+	    # A pseudo line number program instruction, that can be used instead
+	    # of DW_LNS_advance_line.  Rather than writing:
+	    #   {DW_LNS_advance_line [expr $line1 - 1]}
+	    #   {DW_LNS_advance_line [expr $line2 - $line1]}
+	    #   {DW_LNS_advance_line [expr $line3 - $line2]}
+	    # we can just write:
+	    #   {line $line1}
+	    #   {line $line2}
+	    #   {line $line3}
+	    proc line {line} {
+		variable _line
+		set offset [expr $line - $_line]
+		DW_LNS_advance_line $offset
+	    }
+
+	    proc DW_LNS_set_file {num} {
+		_op .byte 4
+		_op .sleb128 ${num}
 	    }
 
 	    foreach statement $statements {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/fortran.exp ./gdb/testsuite/lib/fortran.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/fortran.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/fortran.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This test code is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -34,6 +34,8 @@ proc fortran_int4 {} {
 	return "int4"
     } elseif {[test_compiler_info {gcc-*}]} {
 	return "integer\\(kind=4\\)"
+    } elseif {[test_compiler_info {clang-*}]} {
+	return "integer"
     } elseif {[test_compiler_info {icc-*}]} {
 	return "INTEGER\\(4\\)"
     } else {
@@ -46,6 +48,8 @@ proc fortran_int8 {} {
 	return "int8"
     } elseif {[test_compiler_info {gcc-*}]} {
 	return "integer\\(kind=8\\)"
+    } elseif {[test_compiler_info {clang-*}]} {
+	return "integer*8"
     } elseif {[test_compiler_info {icc-*}]} {
 	return "INTEGER\\(8\\)"
     } else {
@@ -58,6 +62,8 @@ proc fortran_real4 {} {
 	return "real4"
     } elseif {[test_compiler_info {gcc-*}]} {
 	return "real\\(kind=4\\)"
+    } elseif {[test_compiler_info {clang-*}]} {
+	return "real"
     } elseif {[test_compiler_info {icc-*}]} {
 	return "REAL\\(4\\)"
     } else {
@@ -70,6 +76,8 @@ proc fortran_real8 {} {
 	return "real8"
     } elseif {[test_compiler_info {gcc-*}]} {
 	return "real\\(kind=8\\)"
+    } elseif {[test_compiler_info {clang-*}]} {
+	return "double precision"
     } elseif {[test_compiler_info {icc-*}]} {
 	return "REAL\\(8\\)"
     } else {
@@ -82,6 +90,8 @@ proc fortran_complex4 {} {
 	return "complex4"
     } elseif {[test_compiler_info {gcc-*}]} {
 	return "complex\\(kind=4\\)"
+    } elseif {[test_compiler_info {clang-*}]} {
+	return "complex"
     } elseif {[test_compiler_info {icc-*}]} {
 	return "COMPLEX\\(4\\)"
     } else {
@@ -89,11 +99,41 @@ proc fortran_complex4 {} {
     }
 }
 
+proc fortran_complex8 {} {
+    if {[test_compiler_info {gcc-4-[012]-*}]} {
+	return "complex8"
+    } elseif {[test_compiler_info {gcc-*}]} {
+	return "complex\\(kind=8\\)"
+    } elseif {[test_compiler_info {clang-*}]} {
+	return "double complex"
+    } elseif {[test_compiler_info {icc-*}]} {
+	return "COMPLEX\\(8\\)"
+    } else {
+	return "unknown"
+    }
+}
+
+proc fortran_complex16 {} {
+    if {[test_compiler_info {gcc-4-[012]-*}]} {
+	return "complex16"
+    } elseif {[test_compiler_info {gcc-*}]} {
+	return "complex\\(kind=16\\)"
+    } elseif {[test_compiler_info {clang-*}]} {
+	return "quad complex"
+    } elseif {[test_compiler_info {icc-*}]} {
+	return "COMPLEX\\(16\\)"
+    } else {
+	return "unknown"
+    }
+}
+
 proc fortran_logical4 {} {
     if {[test_compiler_info {gcc-4-[012]-*}]} {
 	return "logical4"
     } elseif {[test_compiler_info {gcc-*}]} {
 	return "logical\\(kind=4\\)"
+    } elseif {[test_compiler_info {clang-*}]} {
+	return "logical"
     } elseif {[test_compiler_info {icc-*}]} {
 	return "LOGICAL\\(4\\)"
     } else {
@@ -106,9 +146,31 @@ proc fortran_character1 {} {
 	return "character1"
     } elseif {[test_compiler_info {gcc-*}]} {
 	return "character\\(kind=1\\)"
+    } elseif {[test_compiler_info {clang-*}]} {
+	return "character"
     } elseif {[test_compiler_info {icc-*}]} {
 	return "CHARACTER\\(1\\)"
     } else {
 	return "unknown"
     }
 }
+
+# Return name of the main procedure based on the compiler version.
+
+proc fortran_main {} {
+    if {[test_compiler_info {gcc-4-[012]-*}]
+         || [test_compiler_info {gcc-*}]
+         || [test_compiler_info {icc-*}]} {
+	return "MAIN__"
+    } elseif {[test_compiler_info {clang-*}]} {
+	return "MAIN_"
+    } else {
+	return "unknown"
+    }
+}
+
+# Fortran version of runto_main.
+
+proc fortran_runto_main { } {
+    return [runto [fortran_main]]
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/future.exp ./gdb/testsuite/lib/future.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/future.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/future.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2004-2020 Free Software Foundation, Inc.
+# Copyright 2004-2021 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
@@ -172,7 +172,9 @@ proc gdb_find_eu-unstrip {} {
     return $eu_unstrip
 }
 
-proc gdb_default_target_compile {source destfile type options} {
+# Local version of default_target_compile, to be used for languages that
+# dejagnu's default_target_compile doesn't support.
+proc gdb_default_target_compile_1 {source destfile type options} {
     global target_triplet
     global tool_root_dir
     global CFLAGS_FOR_TARGET
@@ -627,40 +629,83 @@ proc gdb_default_target_compile {source
     return ${comp_output}
 }
 
-# See if the version of dejaGNU being used to run the testsuite is
-# recent enough to contain support for building Ada programs or not.
-# If not, then use the functions above in place of the ones provided
-# by dejaGNU. This is only temporary (brobecker/2004-03-31).
+# If dejagnu's default_target_compile supports the language specified in
+# OPTIONS, use it.  Otherwise, use gdb_default_target_compile_1.
+proc gdb_default_target_compile {source destfile type options} {
+    global use_gdb_compile
+
+    set need_local_lang 0
+    set need_local_early_flags 0
+    foreach i $options {
+
+	if { $i == "ada" || $i == "d" || $i == "go" || $i == "rust" } {
+	    set need_local_lang [info exists use_gdb_compile($i)]
+	}
+
+	if { $i == "c++" } {
+	    set need_local_lang 0
+	}
+
+	if { $i == "f77" || $i == "f90" } {
+	    set need_local_lang [info exists use_gdb_compile(fortran)]
+	}
+
+	if { [regexp "^early_flags=" $i] } {
+	    set need_local_early_flags 1
+	}
+    }
+
+    if { $need_local_lang || $need_local_early_flags } {
+	return [gdb_default_target_compile_1 $source $destfile $type $options]
+    }
+
+    return [dejagnu_default_target_compile $source $destfile $type $options]
+}
+
+# Array of languages for which dejagnu's default_target_compile is missing
+# support.
+array set use_gdb_compile [list]
+
+# Note missing support in dejagnu's default_target_compile.  This
+# needs to be fixed by porting the missing support to Dejagnu.
+set note_prefix "Dejagnu's default_target_compile is missing support for "
+set note_suffix ", using local override"
 
-set use_gdb_compile 0
 if {[info procs find_gnatmake] == ""} {
     rename gdb_find_gnatmake find_gnatmake
-    set use_gdb_compile 1
+    set use_gdb_compile(ada) 1
+    gdb_note [join [list $note_prefix "Ada" $note_suffix] ""]
 }
 
 if {[info procs find_gfortran] == ""} {
     rename gdb_find_gfortran find_gfortran
-    set use_gdb_compile 1
+    set use_gdb_compile(fortran) 1
+    gdb_note [join [list $note_prefix "Fortran" $note_suffix] ""]
 }
 
 if {[info procs find_go_linker] == ""} {
     rename gdb_find_go find_go
     rename gdb_find_go_linker find_go_linker
-    set use_gdb_compile 1
+    set use_gdb_compile(go) 1
+    gdb_note [join [list $note_prefix "Go" $note_suffix] ""]
 }
 
 if {[info procs find_gdc] == ""} {
     rename gdb_find_gdc find_gdc
-    set use_gdb_compile 1
+    set use_gdb_compile(d) 1
+    gdb_note [join [list $note_prefix "D" $note_suffix] ""]
 }
 
 if {[info procs find_rustc] == ""} {
     rename gdb_find_rustc find_rustc
-    set use_gdb_compile 1
+    set use_gdb_compile(rust) 1
+    gdb_note [join [list $note_prefix "Rust" $note_suffix] ""]
 }
 
-if {$use_gdb_compile} {
-    catch {rename default_target_compile {}}
+# If dejagnu's default_target_compile is missing support for any language,
+# override it.
+if { [array size use_gdb_compile] != 0 } {
+    catch {rename default_target_compile dejagnu_default_target_compile}
     rename gdb_default_target_compile default_target_compile
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gdb.exp ./gdb/testsuite/lib/gdb.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gdb.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/gdb.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 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
@@ -25,10 +25,65 @@ if {$tool == ""} {
     exit 2
 }
 
+# List of procs to run in gdb_finish.
+set gdb_finish_hooks [list]
+
+# Variable in which we keep track of globals that are allowed to be live
+# across test-cases.
+array set gdb_persistent_globals {}
+
+# Mark variable names in ARG as a persistent global, and declare them as
+# global in the calling context.  Can be used to rewrite "global var_a var_b"
+# into "gdb_persistent_global var_a var_b".
+proc gdb_persistent_global { args } {
+    global gdb_persistent_globals
+    foreach varname $args {
+	uplevel 1 global $varname
+	set gdb_persistent_globals($varname) 1
+    }
+}
+
+# Mark variable names in ARG as a persistent global.
+proc gdb_persistent_global_no_decl { args } {
+    global gdb_persistent_globals
+    foreach varname $args {
+	set gdb_persistent_globals($varname) 1
+    }
+}
+
+# Override proc load_lib.
+rename load_lib saved_load_lib
+# Run the runtest version of load_lib, and mark all variables that were
+# created by this call as persistent.
+proc load_lib { file } {
+    array set known_global {}
+    foreach varname [info globals] {
+       set known_globals($varname) 1
+    }
+
+    set code [catch "saved_load_lib $file" result]
+
+    foreach varname [info globals] {
+       if { ![info exists known_globals($varname)] } {
+           gdb_persistent_global_no_decl $varname
+       }
+    }
+
+    if {$code == 1} {
+	global errorInfo errorCode
+	return -code error -errorinfo $errorInfo -errorcode $errorCode $result
+    } elseif {$code > 1} {
+	return -code $code $result
+    }
+
+    return $result
+}
+
 load_lib libgloss.exp
 load_lib cache.exp
 load_lib gdb-utils.exp
 load_lib memory.exp
+load_lib check-test-names.exp
 
 global GDB
 
@@ -117,7 +172,7 @@ if ![info exists env(EXEEXT)] {
 
 set octal "\[0-7\]+"
 
-set inferior_exited_re "(\\\[Inferior \[0-9\]+ \\(.*\\) exited)"
+set inferior_exited_re "(?:\\\[Inferior \[0-9\]+ \\(\[^\n\r\]*\\) exited)"
 
 # A regular expression that matches a value history number.
 # E.g., $1, $2, etc.
@@ -159,7 +214,6 @@ proc gdb_version { } {
 #
 
 proc gdb_unload {} {
-    global verbose
     global GDB
     global gdb_prompt
     send_gdb "file\n"
@@ -242,14 +296,19 @@ proc target_can_use_run_cmd {} {
 
 # Generic run command.
 #
+# Return 0 if we could start the program, -1 if we could not.
+#
 # The second pattern below matches up to the first newline *only*.
 # Using ``.*$'' could swallow up output that we attempt to match
 # elsewhere.
 #
+# INFERIOR_ARGS is passed as arguments to the start command, so may contain
+# inferior arguments.
+#
 # N.B. This function does not wait for gdb to return to the prompt,
 # that is the caller's responsibility.
 
-proc gdb_run_cmd {args} {
+proc gdb_run_cmd { {inferior_args {}} } {
     global gdb_prompt use_gdb_stub
 
     foreach command [gdb_init_commands] {
@@ -265,15 +324,15 @@ proc gdb_run_cmd {args} {
 
     if $use_gdb_stub {
 	if [target_info exists gdb,do_reload_on_run] {
-	    if { [gdb_reload] != 0 } {
-		return
+	    if { [gdb_reload $inferior_args] != 0 } {
+		return -1
 	    }
 	    send_gdb "continue\n"
 	    gdb_expect 60 {
 		-re "Continu\[^\r\n\]*\[\r\n\]" {}
 		default {}
 	    }
-	    return
+	    return 0
 	}
 
 	if [target_info exists gdb,start_symbol] {
@@ -289,7 +348,7 @@ proc gdb_run_cmd {args} {
 	    # clever and not send a command when it has failed.
 	    if [expr $start_attempt > 3] {
 		perror "Jump to start() failed (retry count exceeded)"
-		return
+		return -1
 	    }
 	    set start_attempt [expr $start_attempt + 1]
 	    gdb_expect 30 {
@@ -298,7 +357,7 @@ proc gdb_run_cmd {args} {
 		}
 		-re "No symbol \"_start\" in current.*$gdb_prompt $" {
 		    perror "Can't find start symbol to run in gdb_run"
-		    return
+		    return -1
 		}
 		-re "No symbol \"start\" in current.*$gdb_prompt $" {
 		    send_gdb "jump *_start\n"
@@ -310,26 +369,27 @@ proc gdb_run_cmd {args} {
 		    send_gdb "y\n" answer
 		}
 		-re "The program is not being run.*$gdb_prompt $" {
-		    if { [gdb_reload] != 0 } {
-			return
+		    if { [gdb_reload $inferior_args] != 0 } {
+			return -1
 		    }
 		    send_gdb "jump *$start\n"
 		}
 		timeout {
 		    perror "Jump to start() failed (timeout)"
-		    return
+		    return -1
 		}
 	    }
 	}
-	return
+
+	return 0
     }
 
     if [target_info exists gdb,do_reload_on_run] {
-	if { [gdb_reload] != 0 } {
-	    return
+	if { [gdb_reload $inferior_args] != 0 } {
+	    return -1
 	}
     }
-    send_gdb "run $args\n"
+    send_gdb "run $inferior_args\n"
 # This doesn't work quite right yet.
 # Use -notransfer here so that test cases (like chng-sym.exp)
 # may test for additional start-up messages.
@@ -343,15 +403,20 @@ proc gdb_run_cmd {args} {
 	    # There is no more input expected.
 	}
     }
+
+    return 0
 }
 
 # Generic start command.  Return 0 if we could start the program, -1
 # if we could not.
 #
+# INFERIOR_ARGS is passed as arguments to the start command, so may contain
+# inferior arguments.
+#
 # N.B. This function does not wait for gdb to return to the prompt,
 # that is the caller's responsibility.
 
-proc gdb_start_cmd {args} {
+proc gdb_start_cmd { {inferior_args {}} } {
     global gdb_prompt use_gdb_stub
 
     foreach command [gdb_init_commands] {
@@ -369,7 +434,7 @@ proc gdb_start_cmd {args} {
 	return -1
     }
 
-    send_gdb "start $args\n"
+    send_gdb "start $inferior_args\n"
     # Use -notransfer here so that test cases (like chng-sym.exp)
     # may test for additional start-up messages.
     gdb_expect 60 {
@@ -387,10 +452,13 @@ proc gdb_start_cmd {args} {
 # Generic starti command.  Return 0 if we could start the program, -1
 # if we could not.
 #
+# INFERIOR_ARGS is passed as arguments to the starti command, so may contain
+# inferior arguments.
+#
 # N.B. This function does not wait for gdb to return to the prompt,
 # that is the caller's responsibility.
 
-proc gdb_starti_cmd {args} {
+proc gdb_starti_cmd { {inferior_args {}} } {
     global gdb_prompt use_gdb_stub
 
     foreach command [gdb_init_commands] {
@@ -408,7 +476,7 @@ proc gdb_starti_cmd {args} {
 	return -1
     }
 
-    send_gdb "starti $args\n"
+    send_gdb "starti $inferior_args\n"
     gdb_expect 60 {
 	-re "The program .* has been started already.*y or n. $" {
 	    send_gdb "y\n" answer
@@ -584,9 +652,9 @@ proc runto { function args } {
 	    return 0
 	}
 	-re ".*A problem internal to GDB has been detected" {
-	    if { $print_fail } {
-		fail "$test_name (GDB internal error)"
-	    }
+	    # Always emit a FAIL if we encounter an internal error: internal
+	    # errors are never expected.
+	    fail "$test_name (GDB internal error)"
 	    gdb_internal_error_resync
 	    return 0
 	}
@@ -699,20 +767,22 @@ proc gdb_internal_error_resync {} {
 }
 
 
-# gdb_test_multiple COMMAND MESSAGE EXPECT_ARGUMENTS PROMPT_REGEXP
+# gdb_test_multiple COMMAND MESSAGE [ -promp PROMPT_REGEXP] [ -lbl ]
+#                   EXPECT_ARGUMENTS
 # Send a command to gdb; test the result.
 #
 # COMMAND is the command to execute, send to GDB with send_gdb.  If
 #   this is the null string no command is sent.
 # MESSAGE is a message to be printed with the built-in failure patterns
 #   if one of them matches.  If MESSAGE is empty COMMAND will be used.
+# -prompt PROMPT_REGEXP specifies a regexp matching the expected prompt
+#   after the command output.  If empty, defaults to "$gdb_prompt $".
+# -lbl specifies that line-by-line matching will be used.
 # EXPECT_ARGUMENTS will be fed to expect in addition to the standard
 #   patterns.  Pattern elements will be evaluated in the caller's
 #   context; action elements will be executed in the caller's context.
 #   Unlike patterns for gdb_test, these patterns should generally include
 #   the final newline and prompt.
-# PROMPT_REGEXP is a regexp matching the expected prompt after the command
-#   output.  If empty, defaults to "$gdb_prompt $"
 #
 # Returns:
 #    1 if the test failed, according to a built-in failure pattern
@@ -792,7 +862,7 @@ proc gdb_internal_error_resync {} {
 #	}
 #    }
 #
-proc gdb_test_multiple { command message user_code { prompt_regexp "" } } {
+proc gdb_test_multiple { command message args } {
     global verbose use_gdb_stub
     global gdb_prompt pagination_prompt
     global GDB
@@ -802,6 +872,26 @@ proc gdb_test_multiple { command message
     upvar expect_out expect_out
     global any_spawn_id
 
+    set line_by_line 0
+    set prompt_regexp ""
+    for {set i 0} {$i < [llength $args]} {incr i} {
+	set arg [lindex $args $i]
+	if { $arg  == "-prompt" } {
+	    incr i
+	    set prompt_regexp [lindex $args $i]
+	} elseif { $arg == "-lbl" } {
+	    set line_by_line 1
+	} else {
+	    set user_code $arg
+	    break
+	}
+    }
+    if { [expr $i + 1] < [llength $args] } {
+	error "Too many arguments to gdb_test_multiple"
+    } elseif { ![info exists user_code] } {
+	error "Too few arguments to gdb_test_multiple"
+    }
+
     if { "$prompt_regexp" == "" } {
 	set prompt_regexp "$gdb_prompt $"
     }
@@ -1070,6 +1160,14 @@ proc gdb_test_multiple { command message
 	}
     }
 
+    if {$line_by_line} {
+       append code {
+           -re "\r\n\[^\r\n\]*(?=\r\n)" {
+               exp_continue
+           }
+       }
+    }
+
     # Now patterns that apply to any spawn id specified.
     append code {
 	-i $any_spawn_id
@@ -1138,6 +1236,28 @@ proc gdb_test_multiple { command message
     return $result
 }
 
+# Usage: gdb_test_multiline NAME INPUT RESULT {INPUT RESULT} ...
+# Run a test named NAME, consisting of multiple lines of input.
+# After each input line INPUT, search for result line RESULT.
+# Succeed if all results are seen; fail otherwise.
+
+proc gdb_test_multiline { name args } {
+    global gdb_prompt
+    set inputnr 0
+    foreach {input result} $args {
+	incr inputnr
+	if {[gdb_test_multiple $input "$name: input $inputnr: $input" {
+	    -re "\[\r\n\]*($result)\[\r\n\]+($gdb_prompt | *>)$" {
+		pass $gdb_test_name
+	    }
+	}]} {
+	    return 1
+	}
+    }
+    return 0
+}
+
+
 # gdb_test COMMAND PATTERN MESSAGE QUESTION RESPONSE
 # Send a command to gdb; test the result.
 #
@@ -1617,7 +1737,6 @@ proc gdb_reinitialize_dir { subdir } {
 proc default_gdb_exit {} {
     global GDB
     global INTERNAL_GDBFLAGS GDBFLAGS
-    global verbose
     global gdb_spawn_id inferior_spawn_id
     global inotify_log_file
 
@@ -1683,7 +1802,6 @@ proc default_gdb_exit {} {
 
 proc gdb_file_cmd { arg } {
     global gdb_prompt
-    global verbose
     global GDB
     global last_loaded_file
 
@@ -1719,6 +1837,8 @@ proc gdb_file_cmd { arg } {
     }
 
     send_gdb "file $arg\n"
+    set new_symbol_table 0
+    set basename [file tail $arg]
     gdb_expect 120 {
 	-re "Reading symbols from.*LZMA support was disabled.*$gdb_prompt $" {
 	    verbose "\t\tLoaded $arg into $GDB; .gnu_debugdata found but no LZMA available"
@@ -1736,45 +1856,40 @@ proc gdb_file_cmd { arg } {
 	    return 0
         }
         -re "Load new symbol table from \".*\".*y or n. $" {
+	    if { $new_symbol_table > 0 } {
+		perror [join [list "Couldn't load $basename,"
+			      "interactive prompt loop detected."]]
+		return -1
+	    }
             send_gdb "y\n" answer
-            gdb_expect 120 {
-                -re "Reading symbols from.*$gdb_prompt $" {
-                    verbose "\t\tLoaded $arg with new symbol table into $GDB"
-		    set gdb_file_cmd_debug_info "debug"
-		    return 0
-                }
-                timeout {
-                    perror "Couldn't load $arg, other program already loaded (timeout)."
-		    return -1
-                }
-		eof {
-		    perror "Couldn't load $arg, other program already loaded (eof)."
-		    return -1
-		}
-            }
+	    incr new_symbol_table
+	    set suffix "-- with new symbol table"
+	    set arg "$arg $suffix"
+	    set basename "$basename $suffix"
+	    exp_continue
 	}
         -re "No such file or directory.*$gdb_prompt $" {
-            perror "($arg) No such file or directory"
+            perror "($basename) No such file or directory"
 	    return -1
         }
 	-re "A problem internal to GDB has been detected" {
-	    fail "($arg) (GDB internal error)"
+	    perror "Couldn't load $basename into GDB (GDB internal error)."
 	    gdb_internal_error_resync
 	    return -1
 	}
         -re "$gdb_prompt $" {
-            perror "Couldn't load $arg into $GDB."
+            perror "Couldn't load $basename into GDB."
 	    return -1
             }
         timeout {
-            perror "Couldn't load $arg into $GDB (timeout)."
+            perror "Couldn't load $basename into GDB (timeout)."
 	    return -1
         }
         eof {
             # This is an attempt to detect a core dump, but seems not to
             # work.  Perhaps we need to match .* followed by eof, in which
             # gdb_expect does not seem to have a way to do that.
-            perror "Couldn't load $arg into $GDB (eof)."
+            perror "Couldn't load $basename into GDB (eof)."
 	    return -1
         }
     }
@@ -1867,6 +1982,11 @@ proc default_gdb_start { } {
 	    unset gdb_spawn_id
 	    return -1
 	}
+	eof {
+	    perror "(eof) GDB never initialized."
+	    unset gdb_spawn_id
+	    return -1
+	}
     }
 
     # force the height to "unlimited", so no pagers get used
@@ -1999,22 +2119,24 @@ proc skip_rust_tests {} {
 proc skip_python_tests_prompt { prompt_regexp } {
     global gdb_py_is_py3k
 
-    gdb_test_multiple "python print ('test')" "verify python support" {
-	-re "not supported.*$prompt_regexp" {
-	    unsupported "Python support is disabled."
-	    return 1
+    gdb_test_multiple "python print ('test')" "verify python support" \
+	-prompt "$prompt_regexp" {
+	    -re "not supported.*$prompt_regexp" {
+		unsupported "Python support is disabled."
+		return 1
+	    }
+	    -re "$prompt_regexp" {}
 	}
-	-re "$prompt_regexp" {}
-    } "$prompt_regexp"
 
-    gdb_test_multiple "python print (sys.version_info\[0\])" "check if python 3" {
-	-re "3.*$prompt_regexp" {
-            set gdb_py_is_py3k 1
-        }
-	-re ".*$prompt_regexp" {
-            set gdb_py_is_py3k 0
-        }
-    } "$prompt_regexp"
+    gdb_test_multiple "python print (sys.version_info\[0\])" "check if python 3" \
+	-prompt "$prompt_regexp" {
+	    -re "3.*$prompt_regexp" {
+		set gdb_py_is_py3k 1
+	    }
+	    -re ".*$prompt_regexp" {
+		set gdb_py_is_py3k 0
+	    }
+	}
 
     return 0
 }
@@ -2490,6 +2612,18 @@ gdb_caching_proc support_complex_tests {
     } executable]
 }
 
+# Return 1 if compiling go is supported.
+gdb_caching_proc support_go_compile {
+
+    return [gdb_can_simple_compile go-hello {
+	package main
+	import "fmt"
+	func main() {
+	    fmt.Println("hello world")
+	}
+    } executable go]
+}
+
 # Return 1 if GDB can get a type for siginfo from the target, otherwise
 # return 0.
 
@@ -2927,6 +3061,57 @@ gdb_caching_proc skip_tsx_tests {
     return $skip_tsx_tests
 }
 
+# Run a test on the target to see if it supports avx512bf16.  Return 0 if so,
+# 1 if it does not.  Based on 'check_vmx_hw_available' from the GCC testsuite.
+
+gdb_caching_proc skip_avx512bf16_tests {
+    global srcdir subdir gdb_prompt inferior_exited_re
+
+    set me "skip_avx512bf16_tests"
+    if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } {
+        verbose "$me:  target does not support avx512bf16, returning 1" 2
+        return 1
+    }
+
+    # Compile a test program.
+    set src {
+        int main() {
+            asm volatile ("vcvtne2ps2bf16 %xmm0, %xmm1, %xmm0");
+            return 0;
+        }
+    }
+    if {![gdb_simple_compile $me $src executable]} {
+        return 1
+    }
+
+    # No error message, compilation succeeded so now run it via gdb.
+
+    gdb_exit
+    gdb_start
+    gdb_reinitialize_dir $srcdir/$subdir
+    gdb_load "$obj"
+    gdb_run_cmd
+    gdb_expect {
+        -re ".*Illegal instruction.*${gdb_prompt} $" {
+            verbose -log "$me:  avx512bf16 hardware not detected."
+            set skip_avx512bf16_tests 1
+        }
+        -re ".*$inferior_exited_re normally.*${gdb_prompt} $" {
+            verbose -log "$me:  avx512bf16 hardware detected."
+            set skip_avx512bf16_tests 0
+        }
+        default {
+            warning "\n$me:  default case taken."
+            set skip_avx512bf16_tests 1
+        }
+    }
+    gdb_exit
+    remote_file build delete $obj
+
+    verbose "$me:  returning $skip_avx512bf16_tests" 2
+    return $skip_avx512bf16_tests
+}
+
 # Run a test on the target to see if it supports btrace hardware.  Return 0 if so,
 # 1 if it does not.  Based on 'check_vmx_hw_available' from the GCC testsuite.
 
@@ -3256,13 +3441,14 @@ proc skip_unwinder_tests {} {
 
 proc skip_libstdcxx_probe_tests_prompt { prompt_regexp } {
     set supported 0
-    gdb_test_multiple "info probe" "check for stap probe in libstdc++" {
-	-re ".*libstdcxx.*catch.*\r\n$prompt_regexp" {
-	    set supported 1
-	}
-	-re "\r\n$prompt_regexp" {
+    gdb_test_multiple "info probe" "check for stap probe in libstdc++" \
+	-prompt "$prompt_regexp" {
+	    -re ".*libstdcxx.*catch.*\r\n$prompt_regexp" {
+		set supported 1
+	    }
+	    -re "\r\n$prompt_regexp" {
+	    }
 	}
-    } "$prompt_regexp"
     set skip [expr !$supported]
     return $skip
 }
@@ -3302,15 +3488,16 @@ proc skip_compile_feature_tests {} {
 
 proc gdb_is_target_1 { target_name target_stack_regexp prompt_regexp } {
     set test "probe for target ${target_name}"
-    gdb_test_multiple "maint print target-stack" $test {
-	-re "${target_stack_regexp}${prompt_regexp}" {
-	    pass $test
-	    return 1
-	}
-	-re "$prompt_regexp" {
-	    pass $test
+    gdb_test_multiple "maint print target-stack" $test \
+	-prompt "$prompt_regexp" {
+	    -re "${target_stack_regexp}${prompt_regexp}" {
+		pass $test
+		return 1
+	    }
+	    -re "$prompt_regexp" {
+		pass $test
+	    }
 	}
-    } "$prompt_regexp"
     return 0
 }
 
@@ -3558,6 +3745,8 @@ proc current_target_name { } {
 
 set gdb_wrapper_initialized 0
 set gdb_wrapper_target ""
+set gdb_wrapper_file ""
+set gdb_wrapper_flags ""
 
 proc gdb_wrapper_init { args } {
     global gdb_wrapper_initialized
@@ -3572,11 +3761,18 @@ proc gdb_wrapper_init { args } {
 	set result [build_wrapper "testglue.o"]
 	if { $result != "" } {
 	    set gdb_wrapper_file [lindex $result 0]
+	    if ![is_remote host] {
+		set gdb_wrapper_file [file join [pwd] $gdb_wrapper_file]
+	    }
 	    set gdb_wrapper_flags [lindex $result 1]
 	} else {
 	    warning "Status wrapper failed to build."
 	}
+    } else {
+	set gdb_wrapper_file ""
+	set gdb_wrapper_flags ""
     }
+    verbose "set gdb_wrapper_file = $gdb_wrapper_file"
     set gdb_wrapper_initialized 1
     set gdb_wrapper_target [current_target_name]
 }
@@ -3631,7 +3827,14 @@ proc gdb_simple_compile {name code {type
             set postfix "s"
         }
     }
-    set src [standard_temp_file $name-[pid].c]
+    set ext "c"
+    foreach flag $compile_flags {
+	if { "$flag" == "go" } {
+	    set ext "go"
+	    break
+	}
+    }
+    set src [standard_temp_file $name-[pid].$ext]
     set obj [standard_temp_file $name-[pid].$postfix]
     set compile_flags [concat $compile_flags {debug nowarnings quiet}]
 
@@ -3696,7 +3899,8 @@ set gdb_saved_set_unbuffered_mode_obj ""
 #   - ldflags=flag: Add FLAG to the linker flags.
 #   - incdir=path: Add PATH to the searched include directories.
 #   - libdir=path: Add PATH to the linker searched directories.
-#   - ada, c++, f77: Compile the file as Ada, C++ or Fortran.
+#   - ada, c++, f77, f90, go, rust: Compile the file as Ada, C++,
+#     Fortran 77, Fortran 90, Go or Rust.
 #   - debug: Build with debug information.
 #   - optimize: Build with optimization.
 
@@ -3704,7 +3908,6 @@ proc gdb_compile {source dest type optio
     global GDB_TESTCASE_OPTIONS
     global gdb_wrapper_file
     global gdb_wrapper_flags
-    global gdb_wrapper_initialized
     global srcdir
     global objdir
     global gdb_saved_set_unbuffered_mode_obj
@@ -3720,6 +3923,31 @@ proc gdb_compile {source dest type optio
 	set new_options [universal_compile_options]
     }
 
+    # Some C/C++ testcases unconditionally pass -Wno-foo as additional
+    # options to disable some warning.  That is OK with GCC, because
+    # by design, GCC accepts any -Wno-foo option, even if it doesn't
+    # support -Wfoo.  Clang however warns about unknown -Wno-foo by
+    # default, unless you pass -Wno-unknown-warning-option as well.
+    # We do that here, so that individual testcases don't have to
+    # worry about it.
+    if {[lsearch -exact $options getting_compiler_info] == -1
+	&& [lsearch -exact $options rust] == -1
+	&& [lsearch -exact $options ada] == -1
+	&& [lsearch -exact $options f77] == -1
+	&& [lsearch -exact $options f90] == -1
+	&& [lsearch -exact $options go] == -1
+	&& [test_compiler_info "clang-*"]} {
+	lappend new_options "additional_flags=-Wno-unknown-warning-option"
+    }
+
+    # Treating .c input files as C++ is deprecated in Clang, so
+    # explicitly force C++ language.
+    if { [lsearch -exact $options getting_compiler_info] == -1
+	 && [lsearch -exact $options c++] != -1
+	 && [test_compiler_info "clang-*"]} {
+	lappend new_options additional_flags=-x\ c++
+    }
+
     # Place (and look for) Fortran `.mod` files in the output
     # directory for this specific test.
     if {[lsearch -exact $options f77] != -1 \
@@ -3812,11 +4040,11 @@ proc gdb_compile {source dest type optio
     verbose "options are $options"
     verbose "source is $source $dest $type $options"
 
-    if { $gdb_wrapper_initialized == 0 } { gdb_wrapper_init }
+    gdb_wrapper_init
 
     if {[target_info exists needs_status_wrapper] && \
 	    [target_info needs_status_wrapper] != "0" && \
-	    [info exists gdb_wrapper_file]} {
+	    $gdb_wrapper_file != "" } {
 	lappend options "libs=${gdb_wrapper_file}"
 	lappend options "ldflags=${gdb_wrapper_flags}"
     }
@@ -3877,7 +4105,7 @@ proc gdb_compile {source dest type optio
 	    # Force output to unbuffered mode, by linking in an object file
 	    # with a global contructor that calls setvbuf.
 	    #
-	    # Compile the special object seperatelly for two reasons:
+	    # Compile the special object separately for two reasons:
 	    #  1) Insulate it from $options.
 	    #  2) Avoid compiling it for every gdb_compile invocation,
 	    #  which is time consuming, especially if we're remote
@@ -4589,7 +4817,7 @@ proc gdb_core_cmd { core test } {
 	    fail "$test (bad file format)"
 	    return -1
 	}
-	-re ": No such file or directory.*\r\n$gdb_prompt $" {
+	-re -wrap "[string_to_regexp $core]: No such file or directory.*" {
 	    fail "$test (file not found)"
 	    return -1
 	}
@@ -4749,12 +4977,73 @@ proc gdb_load { arg } {
     return 0
 }
 
+#
+# with_complaints -- Execute BODY and set complaints temporary to N for the
+# duration.
+#
+proc with_complaints { n body } {
+    global decimal
+
+    # Save current setting of complaints.
+    set save ""
+    set show_complaints_re \
+	"Max number of complaints about incorrect symbols is ($decimal)\\."
+    gdb_test_multiple "show complaints" "" {
+	-re -wrap $show_complaints_re {
+	    set save $expect_out(1,string)
+	}
+    }
+
+    if { $save == "" } {
+	perror "Did not manage to set complaints"
+    } else {
+	# Set complaints.
+	gdb_test_no_output "set complaints $n" ""
+    }
+
+    set code [catch {uplevel 1 $body} result]
+
+    # Restore saved setting of complaints.
+    if { $save != "" } {
+	gdb_test_no_output "set complaints $save" ""
+    }
+
+    if {$code == 1} {
+	global errorInfo errorCode
+	return -code $code -errorinfo $errorInfo -errorcode $errorCode $result
+    } else {
+	return -code $code $result
+    }
+}
+
+#
+# gdb_load_no_complaints -- As gdb_load, but in addition verifies that
+# loading caused no symbol reading complaints.
+#
+proc gdb_load_no_complaints { arg } {
+    global gdb_prompt gdb_file_cmd_msg decimal
+
+    # Temporarily set complaint to a small non-zero number.
+    with_complaints 5 {
+	gdb_load $arg
+    }
+
+    # Verify that there were no complaints.
+    set re "^Reading symbols from \[^\r\n\]*\r\n$gdb_prompt $"
+    gdb_assert {[regexp $re $gdb_file_cmd_msg]} "No complaints"
+}
+
 # gdb_reload -- load a file into the target.  Called before "running",
 # either the first time or after already starting the program once,
 # for remote targets.  Most files that override gdb_load should now
 # override this instead.
+#
+# INFERIOR_ARGS contains the arguments to pass to the inferiors, as a
+# single string to get interpreted by a shell.  If the target board
+# overriding gdb_reload is a "stub", then it should arrange things such
+# these arguments make their way to the inferior process.
 
-proc gdb_reload { } {
+proc gdb_reload { {inferior_args {}} } {
     # For the benefit of existing configurations, default to gdb_load.
     # Specifying no file defaults to the executable currently being
     # debugged.
@@ -4767,6 +5056,7 @@ proc gdb_continue { function } {
     return [gdb_test "continue" ".*Breakpoint $decimal, $function .*" "continue to $function"]
 }
 
+# Default implementation of gdb_init.
 proc default_gdb_init { test_file_name } {
     global gdb_wrapper_initialized
     global gdb_wrapper_target
@@ -4774,6 +5064,107 @@ proc default_gdb_init { test_file_name }
     global cleanfiles
     global pf_prefix
     
+    # Reset the timeout value to the default.  This way, any testcase
+    # that changes the timeout value without resetting it cannot affect
+    # the timeout used in subsequent testcases.
+    global gdb_test_timeout
+    global timeout
+    set timeout $gdb_test_timeout
+
+    if { [regexp ".*gdb\.reverse\/.*" $test_file_name]
+	 && [target_info exists gdb_reverse_timeout] } {
+	set timeout [target_info gdb_reverse_timeout]
+    }
+
+    # If GDB_INOTIFY is given, check for writes to '.'.  This is a
+    # debugging tool to help confirm that the test suite is
+    # parallel-safe.  You need "inotifywait" from the
+    # inotify-tools package to use this.
+    global GDB_INOTIFY inotify_pid
+    if {[info exists GDB_INOTIFY] && ![info exists inotify_pid]} {
+	global outdir tool inotify_log_file
+
+	set exclusions {outputs temp gdb[.](log|sum) cache}
+	set exclusion_re ([join $exclusions |])
+
+	set inotify_log_file [standard_temp_file inotify.out]
+	set inotify_pid [exec inotifywait -r -m -e move,create,delete . \
+			     --exclude $exclusion_re \
+			     |& tee -a $outdir/$tool.log $inotify_log_file &]
+
+	# Wait for the watches; hopefully this is long enough.
+	sleep 2
+
+	# Clear the log so that we don't emit a warning the first time
+	# we check it.
+	set fd [open $inotify_log_file w]
+	close $fd
+    }
+
+    # Block writes to all banned variables, and invocation of all
+    # banned procedures...
+    global banned_variables
+    global banned_procedures
+    global banned_traced
+    if (!$banned_traced) {
+	foreach banned_var $banned_variables {
+            global "$banned_var"
+            trace add variable "$banned_var" write error
+	}
+	foreach banned_proc $banned_procedures {
+	    global "$banned_proc"
+	    trace add execution "$banned_proc" enter error
+	}
+	set banned_traced 1
+    }
+
+    # We set LC_ALL, LC_CTYPE, and LANG to C so that we get the same
+    # messages as expected.
+    setenv LC_ALL C
+    setenv LC_CTYPE C
+    setenv LANG C
+
+    # Don't let a .inputrc file or an existing setting of INPUTRC mess up
+    # the test results.  Even if /dev/null doesn't exist on the particular
+    # platform, the readline library will use the default setting just by
+    # failing to open the file.  OTOH, opening /dev/null successfully will
+    # also result in the default settings being used since nothing will be
+    # read from this file.
+    setenv INPUTRC "/dev/null"
+
+    # This disables style output, which would interfere with many
+    # tests.
+    setenv TERM "dumb"
+
+    # Ensure that GDBHISTFILE and GDBHISTSIZE are removed from the
+    # environment, we don't want these modifications to the history
+    # settings.
+    unset -nocomplain ::env(GDBHISTFILE)
+    unset -nocomplain ::env(GDBHISTSIZE)
+
+    # Initialize GDB's pty with a fixed size, to make sure we avoid pagination
+    # during startup.  See "man expect" for details about stty_init.
+    global stty_init
+    set stty_init "rows 25 cols 80"
+
+    # Some tests (for example gdb.base/maint.exp) shell out from gdb to use
+    # grep.  Clear GREP_OPTIONS to make the behavior predictable,
+    # especially having color output turned on can cause tests to fail.
+    setenv GREP_OPTIONS ""
+
+    # Clear $gdbserver_reconnect_p.
+    global gdbserver_reconnect_p
+    set gdbserver_reconnect_p 1
+    unset gdbserver_reconnect_p
+
+    # Clear $last_loaded_file
+    global last_loaded_file
+    unset -nocomplain last_loaded_file
+
+    # Reset GDB number of instances
+    global gdb_instances
+    set gdb_instances 0
+
     set cleanfiles {}
 
     gdb_clear_suppressed
@@ -4807,6 +5198,22 @@ proc default_gdb_init { test_file_name }
     if [info exists use_gdb_stub] {
 	unset use_gdb_stub
     }
+
+    gdb_setup_known_globals
+
+    if { [info procs ::gdb_tcl_unknown] != "" } {
+	# Dejagnu overrides proc unknown.  The dejagnu version may trigger in a
+	# test-case but abort the entire test run.  To fix this, we install a
+	# local version here, which reverts dejagnu's override, and restore
+	# dejagnu's version in gdb_finish.
+	rename ::unknown ::dejagnu_unknown
+	proc unknown { args } {
+	    # Use tcl's unknown.
+	    set cmd [lindex $args 0]
+	    unresolved "testcase aborted due to invalid command name: $cmd"
+	    return [uplevel 1 ::gdb_tcl_unknown $args]
+	}
+    }
 }
 
 # Return a path using GDB_PARALLEL.
@@ -4840,7 +5247,7 @@ proc standard_output_file {basename} {
     file mkdir $dir
     # If running on MinGW, replace /c/foo with c:/foo
     if { [ishost *-*-mingw*] } {
-        set dir [regsub {^/([a-z])/} $dir {\1:/}]
+        set dir [exec sh -c "cd ${dir} && pwd -W"]
     }
     return [file join $dir $basename]
 }
@@ -4870,6 +5277,51 @@ proc standard_temp_file {basename} {
     return [file join $dir $basename]
 }
 
+# Rename file A to file B, if B does not already exists.  Otherwise, leave B
+# as is and delete A.  Return 1 if rename happened.
+
+proc tentative_rename { a b } {
+    global errorInfo errorCode
+    set code [catch {file rename -- $a $b} result]
+    if { $code == 1 && [lindex $errorCode 0] == "POSIX" \
+	     && [lindex $errorCode 1] == "EEXIST" } {
+	file delete $a
+	return 0
+    }
+    if {$code == 1} {
+	return -code error -errorinfo $errorInfo -errorcode $errorCode $result
+    } elseif {$code > 1} {
+	return -code $code $result
+    }
+    return 1
+}
+
+# Create a file with name FILENAME and contents TXT in the cache directory.
+# If EXECUTABLE, mark the new file for execution.
+
+proc cached_file { filename txt {executable 0}} {
+    set filename [make_gdb_parallel_path cache $filename]
+
+    if { [file exists $filename] } {
+	return $filename
+    }
+
+    set dir [file dirname $filename]
+    file mkdir $dir
+
+    set tmp_filename $filename.[pid]
+    set fd [open $tmp_filename w]
+    puts $fd $txt
+    close $fd
+
+    if { $executable } {
+	exec chmod +x $tmp_filename
+    }
+    tentative_rename $tmp_filename $filename
+
+    return $filename
+}
+
 # Set 'testfile', 'srcfile', and 'binfile'.
 #
 # ARGS is a list of source file specifications.
@@ -4965,105 +5417,73 @@ set banned_procedures { strace }
 # if the banned variables and procedures are already traced.
 set banned_traced 0
 
-proc gdb_init { test_file_name } {
-    # Reset the timeout value to the default.  This way, any testcase
-    # that changes the timeout value without resetting it cannot affect
-    # the timeout used in subsequent testcases.
-    global gdb_test_timeout
-    global timeout
-    set timeout $gdb_test_timeout
-
-    if { [regexp ".*gdb\.reverse\/.*" $test_file_name]
-	 && [target_info exists gdb_reverse_timeout] } {
-	set timeout [target_info gdb_reverse_timeout]
-    }
+# Global array that holds the name of all global variables at the time
+# a test script is started.  After the test script has completed any
+# global not in this list is deleted.
+array set gdb_known_globals {}
 
-    # If GDB_INOTIFY is given, check for writes to '.'.  This is a
-    # debugging tool to help confirm that the test suite is
-    # parallel-safe.  You need "inotifywait" from the
-    # inotify-tools package to use this.
-    global GDB_INOTIFY inotify_pid
-    if {[info exists GDB_INOTIFY] && ![info exists inotify_pid]} {
-	global outdir tool inotify_log_file
-
-	set exclusions {outputs temp gdb[.](log|sum) cache}
-	set exclusion_re ([join $exclusions |])
+# Setup the GDB_KNOWN_GLOBALS array with the names of all current
+# global variables.
+proc gdb_setup_known_globals {} {
+    global gdb_known_globals
 
-	set inotify_log_file [standard_temp_file inotify.out]
-	set inotify_pid [exec inotifywait -r -m -e move,create,delete . \
-			     --exclude $exclusion_re \
-			     |& tee -a $outdir/$tool.log $inotify_log_file &]
-
-	# Wait for the watches; hopefully this is long enough.
-	sleep 2
-
-	# Clear the log so that we don't emit a warning the first time
-	# we check it.
-	set fd [open $inotify_log_file w]
-	close $fd
+    array set gdb_known_globals {}
+    foreach varname [info globals] {
+	set gdb_known_globals($varname) 1
     }
+}
 
-    # Block writes to all banned variables, and invocation of all
-    # banned procedures...
-    global banned_variables
-    global banned_procedures
-    global banned_traced
-    if (!$banned_traced) {
-    	foreach banned_var $banned_variables {
-            global "$banned_var"
-            trace add variable "$banned_var" write error
-	}
-	foreach banned_proc $banned_procedures {
-	    global "$banned_proc"
-	    trace add execution "$banned_proc" enter error
+# Cleanup the global namespace.  Any global not in the
+# GDB_KNOWN_GLOBALS array is unset, this ensures we don't "leak"
+# globals from one test script to another.
+proc gdb_cleanup_globals {} {
+    global gdb_known_globals gdb_persistent_globals
+
+    foreach varname [info globals] {
+	if {![info exists gdb_known_globals($varname)]} {
+	    if { [info exists gdb_persistent_globals($varname)] } {
+		continue
+	    }
+	    uplevel #0 unset $varname
 	}
-	set banned_traced 1
     }
+}
 
-    # We set LC_ALL, LC_CTYPE, and LANG to C so that we get the same
-    # messages as expected.
-    setenv LC_ALL C
-    setenv LC_CTYPE C
-    setenv LANG C
-
-    # Don't let a .inputrc file or an existing setting of INPUTRC mess up
-    # the test results.  Even if /dev/null doesn't exist on the particular
-    # platform, the readline library will use the default setting just by
-    # failing to open the file.  OTOH, opening /dev/null successfully will
-    # also result in the default settings being used since nothing will be
-    # read from this file.
-    setenv INPUTRC "/dev/null"
-
-    # This disables style output, which would interfere with many
-    # tests.
-    setenv TERM "dumb"
-
-    # Initialize GDB's pty with a fixed size, to make sure we avoid pagination
-    # during startup.  See "man expect" for details about stty_init.
-    global stty_init
-    set stty_init "rows 25 cols 80"
-
-    # Some tests (for example gdb.base/maint.exp) shell out from gdb to use
-    # grep.  Clear GREP_OPTIONS to make the behavior predictable,
-    # especially having color output turned on can cause tests to fail.
-    setenv GREP_OPTIONS ""
-
-    # Clear $gdbserver_reconnect_p.
-    global gdbserver_reconnect_p
-    set gdbserver_reconnect_p 1
-    unset gdbserver_reconnect_p
-
-    # Reset GDB number of instances
-    global gdb_instances
-    set gdb_instances 0
+# Create gdb_tcl_unknown, a copy tcl's ::unknown, provided it's present as a
+# proc.
+set temp [interp create]
+if { [interp eval $temp "info procs ::unknown"] != "" } {
+    set old_args [interp eval $temp "info args ::unknown"]
+    set old_body [interp eval $temp "info body ::unknown"]
+    eval proc gdb_tcl_unknown {$old_args} {$old_body}
+}
+interp delete $temp
+unset temp
 
-    return [default_gdb_init $test_file_name]
+# GDB implementation of ${tool}_init.  Called right before executing the
+# test-case.
+# Overridable function -- you can override this function in your
+# baseboard file.
+proc gdb_init { args } {
+    # A baseboard file overriding this proc and calling the default version
+    # should behave the same as this proc.  So, don't add code here, but to
+    # the default version instead.
+    return [default_gdb_init {*}$args]
 }
 
+# GDB implementation of ${tool}_finish.  Called right after executing the
+# test-case.
 proc gdb_finish { } {
     global gdbserver_reconnect_p
     global gdb_prompt
     global cleanfiles
+    global known_globals
+
+    if { [info procs ::gdb_tcl_unknown] != "" } {
+	# Restore dejagnu's version of proc unknown.
+	rename ::unknown ""
+	rename ::dejagnu_unknown ::unknown
+    }
 
     # Exit first, so that the files are no longer in use.
     gdb_exit
@@ -5089,6 +5509,14 @@ proc gdb_finish { } {
 	}
 	set banned_traced 0
     }
+
+    global gdb_finish_hooks
+    foreach gdb_finish_hook $gdb_finish_hooks {
+	$gdb_finish_hook
+    }
+    set gdb_finish_hooks [list]
+
+    gdb_cleanup_globals
 }
 
 global debug_format
@@ -5099,7 +5527,6 @@ set debug_format "unknown"
 
 proc get_debug_format { } {
     global gdb_prompt
-    global verbose
     global expect_out
     global debug_format
 
@@ -5390,11 +5817,15 @@ proc exec_is_pie { executable } {
 	return -1
     }
     set readelf_program [gdb_find_readelf]
-    set res [catch {exec $readelf_program -d $executable} output]
+    # We're not testing readelf -d | grep "FLAGS_1.*Flags:.*PIE"
+    # because the PIE flag is not set by all versions of gold, see PR
+    # binutils/26039.
+    set res [catch {exec $readelf_program -h $executable} output]
     if { $res != 0 } {
 	return -1
     }
-    set res [regexp -line {\(FLAGS_1\).*Flags:.* PIE($| )} $output]
+    set res [regexp -line {^[ \t]*Type:[ \t]*DYN \(Shared object file\)$} \
+		 $output]
     if { $res == 1 } {
 	return 1
     }
@@ -5984,24 +6415,44 @@ proc build_executable { testname executa
 # Starts fresh GDB binary and loads an optional executable into GDB.
 # Usage: clean_restart [executable]
 # EXECUTABLE is the basename of the binary.
+# Return -1 if starting gdb or loading the executable failed.
 
 proc clean_restart { args } {
     global srcdir
     global subdir
+    global errcnt
+    global warncnt
 
     if { [llength $args] > 1 } {
 	error "bad number of args: [llength $args]"
     }
 
     gdb_exit
+
+    # This is a clean restart, so reset error and warning count.
+    set errcnt 0
+    set warncnt 0
+
+    # We'd like to do:
+    #   if { [gdb_start] == -1 } {
+    #     return -1
+    #   }
+    # but gdb_start is a ${tool}_start proc, which doesn't have a defined
+    # return value.  So instead, we test for errcnt.
     gdb_start
+    if { $errcnt > 0 } {
+	return -1
+    }
+
     gdb_reinitialize_dir $srcdir/$subdir
 
     if { [llength $args] >= 1 } {
 	set executable [lindex $args 0]
 	set binfile [standard_output_file ${executable}]
-	gdb_load ${binfile}
+	return [gdb_load ${binfile}]
     }
+
+    return 0
 }
 
 # Prepares for testing by calling build_executable_full, then
@@ -6060,6 +6511,30 @@ proc get_valueof { fmt exp default {test
     return ${val}
 }
 
+# Retrieve the value of local var EXP in the inferior.  DEFAULT is used as
+# fallback if print fails.  TEST is the test message to use.  It can be
+# omitted, in which case a test message is built from EXP.
+
+proc get_local_valueof { exp default {test ""} } {
+    global gdb_prompt
+
+    if {$test == "" } {
+	set test "get local valueof \"${exp}\""
+    }
+
+    set val ${default}
+    gdb_test_multiple "info locals ${exp}" "$test" {
+	-re "$exp = (\[^\r\n\]*)\[\r\n\]*$gdb_prompt $" {
+	    set val $expect_out(1,string)
+	    pass "$test"
+	}
+	timeout {
+	    fail "$test (timeout)"
+	}
+    }
+    return ${val}
+}
+
 # Retrieve the value of EXP in the inferior, as a signed decimal value
 # (using "print /d").  DEFAULT is used as fallback if print fails.
 # TEST is the test message to use.  It can be omitted, in which case
@@ -6749,7 +7224,7 @@ proc gdbserver_debug_enabled { } {
 # Open the file for logging gdb input
 
 proc gdb_stdin_log_init { } {
-    global in_file
+    gdb_persistent_global in_file
 
     if {[info exists in_file]} {
       # Close existing file.
@@ -6824,9 +7299,16 @@ proc cmp_file_string { file str msg } {
 }
 
 # Does the compiler support CTF debug output using '-gt' compiler
-# flag?  If not then we should skip these tests.
+# flag?  If not then we should skip these tests.  We should also
+# skip them if libctf was explicitly disabled.
 
 gdb_caching_proc skip_ctf_tests {
+    global enable_libctf
+
+    if {$enable_libctf eq "no"} {
+	return 1
+    }
+
     return ![gdb_can_simple_compile ctfdebug {
 	int main () {
 	    return 0;
@@ -6834,5 +7316,259 @@ gdb_caching_proc skip_ctf_tests {
     } executable "additional_flags=-gt"]
 }
 
+# Return 1 if compiler supports -gstatement-frontiers.  Otherwise,
+# return 0.
+
+gdb_caching_proc supports_statement_frontiers {
+    return [gdb_can_simple_compile supports_statement_frontiers {
+	int main () {
+	    return 0;
+	}
+    } executable "additional_flags=-gstatement-frontiers"]
+}
+
+# Return 1 if compiler supports -mmpx -fcheck-pointer-bounds.  Otherwise,
+# return 0.
+
+gdb_caching_proc supports_mpx_check_pointer_bounds {
+    set flags "additional_flags=-mmpx additional_flags=-fcheck-pointer-bounds"
+    return [gdb_can_simple_compile supports_mpx_check_pointer_bounds {
+	int main () {
+	    return 0;
+	}
+    } executable $flags]
+}
+
+# Return 1 if compiler supports -fcf-protection=.  Otherwise,
+# return 0.
+
+gdb_caching_proc supports_fcf_protection {
+    return [gdb_can_simple_compile supports_fcf_protection {
+	int main () {
+	    return 0;
+	}
+  } executable "additional_flags=-fcf-protection=full"]
+}
+
+# Return 1 if symbols were read in using -readnow.  Otherwise, return 0.
+
+proc readnow { } {
+    set cmd "maint print objfiles"
+    gdb_test_multiple $cmd "" {
+	-re -wrap "\r\n.gdb_index: faked for \"readnow\"\r\n.*" {
+	    return 1
+	}
+	-re -wrap "" {
+	    return 0
+	}
+    }
+
+    return 0
+}
+
+# Return 1 if partial symbols are available.  Otherwise, return 0.
+
+proc psymtabs_p {  } {
+    global gdb_prompt
+
+    set cmd "maint info psymtab"
+    gdb_test_multiple $cmd "" {
+	-re "$cmd\r\n$gdb_prompt $" {
+	    return 0
+	}
+	-re -wrap "" {
+	    return 1
+	}
+    }
+
+    return 0
+}
+
+# Verify that partial symtab expansion for $filename has state $readin.
+
+proc verify_psymtab_expanded { filename readin } {
+    global gdb_prompt
+
+    set cmd "maint info psymtab"
+    set test "$cmd: $filename: $readin"
+    set re [multi_line \
+		"  \{ psymtab \[^\r\n\]*$filename\[^\r\n\]*" \
+		"    readin $readin" \
+		".*"]
+
+    gdb_test_multiple $cmd $test {
+	-re "$cmd\r\n$gdb_prompt $" {
+	    unsupported $gdb_test_name
+	}
+	-re -wrap $re {
+	    pass $gdb_test_name
+	}
+    }
+}
+
+# Add a .gdb_index section to PROGRAM.
+# PROGRAM is assumed to be the output of standard_output_file.
+# Returns the 0 if there is a failure, otherwise 1.
+
+proc add_gdb_index { program } {
+    global srcdir GDB env BUILD_DATA_DIRECTORY
+    set contrib_dir "$srcdir/../contrib"
+    set env(GDB) "$GDB --data-directory=$BUILD_DATA_DIRECTORY"
+    set result [catch "exec $contrib_dir/gdb-add-index.sh $program" output]
+    if { $result != 0 } {
+	verbose -log "result is $result"
+	verbose -log "output is $output"
+	return 0
+    }
+
+    return 1
+}
+
+# Add a .gdb_index section to PROGRAM, unless it alread has an index
+# (.gdb_index/.debug_names).  Gdb doesn't support building an index from a
+# program already using one.  Return 1 if a .gdb_index was added, return 0
+# if it already contained an index, and -1 if an error occurred.
+
+proc ensure_gdb_index { binfile } {
+    set testfile [file tail $binfile]
+    set test "check if index present"
+    gdb_test_multiple "mt print objfiles ${testfile}" $test {
+	-re -wrap "gdb_index.*" {
+	    return 0
+	}
+	-re -wrap "debug_names.*" {
+	    return 0
+	}
+	-re -wrap "Psymtabs.*" {
+	    if { [add_gdb_index $binfile] != "1" } {
+		return -1
+	    }
+	    return 1
+	}
+    }
+    return -1
+}
+
+# Return 1 if executable contains .debug_types section.  Otherwise, return 0.
+
+proc debug_types { } {
+    global hex
+
+    set cmd "maint info sections"
+    gdb_test_multiple $cmd "" {
+	-re -wrap "at $hex: .debug_types.*" {
+	    return 1
+	}
+	-re -wrap "" {
+	    return 0
+	}
+    }
+
+    return 0
+}
+
+# Return the addresses in the line table for FILE for which is_stmt is true.
+
+proc is_stmt_addresses { file } {
+    global decimal
+    global hex
+
+    set is_stmt [list]
+
+    gdb_test_multiple "maint info line-table $file" "" {
+	-re "\r\n$decimal\[ \t\]+$decimal\[ \t\]+($hex)\[ \t\]+Y\[^\r\n\]*" {
+	    lappend is_stmt $expect_out(1,string)
+	    exp_continue
+	}
+	-re -wrap "" {
+	}
+    }
+
+    return $is_stmt
+}
+
+# Return 1 if hex number VAL is an element of HEXLIST.
+
+proc hex_in_list { val hexlist } {
+    # Normalize val by removing 0x prefix, and leading zeros.
+    set val [regsub ^0x $val ""]
+    set val [regsub ^0+ $val "0"]
+
+    set re 0x0*$val
+    set index [lsearch -regexp $hexlist $re]
+    return [expr $index != -1]
+}
+
+# Override proc NAME to proc OVERRIDE for the duration of the execution of
+# BODY.
+
+proc with_override { name override body } {
+    # Implementation note: It's possible to implement the override using
+    # rename, like this:
+    #   rename $name save_$name
+    #   rename $override $name
+    #   set code [catch {uplevel 1 $body} result]
+    #   rename $name $override
+    #   rename save_$name $name
+    # but there are two issues here:
+    # - the save_$name might clash with an existing proc
+    # - the override is no longer available under its original name during
+    #   the override
+    # So, we use this more elaborate but cleaner mechanism.
+
+    # Save the old proc.
+    set old_args [info args $name]
+    set old_body [info body $name]
+
+    # Install the override.
+    set new_args [info args $override]
+    set new_body [info body $override]
+    eval proc $name {$new_args} {$new_body}
+
+    # Execute body.
+    set code [catch {uplevel 1 $body} result]
+
+    # Restore old proc.
+    eval proc $name {$old_args} {$old_body}
+
+    # Return as appropriate.
+    if { $code == 1 } {
+        global errorInfo errorCode
+        return -code error -errorinfo $errorInfo -errorcode $errorCode $result
+    } elseif { $code > 1 } {
+        return -code $code $result
+    }
+
+    return $result
+}
+
+# Setup tuiterm.exp environment.  To be used in test-cases instead of
+# "load_lib tuiterm.exp".  Calls initialization function and schedules
+# finalization function.
+proc tuiterm_env { } {
+    load_lib tuiterm.exp
+
+    # Do initialization.
+    tuiterm_env_init
+
+    # Schedule finalization.
+    global gdb_finish_hooks
+    lappend gdb_finish_hooks tuiterm_env_finish
+}
+
+# Dejagnu has a version of note, but usage is not allowed outside of dejagnu.
+# Define a local version.
+proc gdb_note { message } {
+    verbose -- "NOTE: $message" 0
+}
+
+# Return 1 if compiler supports -fuse-ld=gold, otherwise return 0.
+gdb_caching_proc have_fuse_ld_gold {
+    set me "have_fuse_ld_gold"
+    set flags "additional_flags=-fuse-ld=gold"
+    set src { int main() { return 0; } }
+    return [gdb_simple_compile $me $src executable $flags]
+}
+
 # Always load compatibility stuff.
 load_lib future.exp
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gdb-guile.exp ./gdb/testsuite/lib/gdb-guile.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gdb-guile.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/gdb-guile.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -54,26 +54,6 @@ proc gdb_scm_test_silent_cmd { cmd name
     }
 }
 
-# Usage: gdb_test_multiline NAME INPUT RESULT {INPUT RESULT} ...
-# Run a test named NAME, consisting of multiple lines of input.
-# After each input line INPUT, search for result line RESULT.
-# Succeed if all results are seen; fail otherwise.
-# FIXME: Move to gdb.exp and remove Python's gdb_py_test_multiple.
-
-proc gdb_test_multiline { name args } {
-    global gdb_prompt
-    foreach {input result} $args {
-	if {[gdb_test_multiple $input "$name - $input" {
-	    -re "\[\r\n\]*($result)\[\r\n\]+($gdb_prompt | *>)$" {
-		pass "$name - $input"
-	    }
-	}]} {
-	    return 1
-	}
-    }
-    return 0
-}
-
 # Load Scheme file FILE_NAME.
 # TEST_NAME can be used to specify the name of the test,
 # otherwise a standard test name is provided.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gdb-python.exp ./gdb/testsuite/lib/gdb-python.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gdb-python.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/gdb-python.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
@@ -27,25 +27,6 @@ proc gdb_py_test_silent_cmd { cmd name r
     }
 }
 
-# Usage: gdb_py_test_multiple NAME INPUT RESULT {INPUT RESULT}...
-# Run a test named NAME, consisting of multiple lines of input.
-# After each input line INPUT, search for result line RESULT.
-# Succeed if all results are seen; fail otherwise.
-
-proc gdb_py_test_multiple { name args } {
-    global gdb_prompt
-    foreach {input result} $args {
-	if {[gdb_test_multiple $input "$name - $input" {
-	    -re "\[\r\n\]*($result)\[\r\n\]+($gdb_prompt | *>)$" {
-		pass "$name - $input"
-	    }
-	}]} {
-	    return 1
-	}
-    }
-    return 0
-}
-
 # Return the result of python expression EXPR.  DEFAULT is returned if
 # there's an error.  TEST is the test message to use.  It can be
 # omitted, in which case a test message is built from EXP.  This is
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gdbserver-support.exp ./gdb/testsuite/lib/gdbserver-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gdbserver-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/gdbserver-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2000-2020 Free Software Foundation, Inc.
+# Copyright 2000-2021 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
@@ -64,6 +64,10 @@ proc gdb_target_cmd_ext { targetname ser
 	    -re "Couldn't establish connection to remote.*$gdb_prompt $" {
 		verbose "Connection failed"
 	    }
+	    -re "Non-stop mode requested, but remote does not support non-stop.*$gdb_prompt $" {
+		verbose "remote does not support non-stop"
+		return 1
+	    }
 	    -re "Remote MIPS debugging.*$additional_text.*$gdb_prompt" {
 		verbose "Set target to $targetname"
 		return 0
@@ -134,13 +138,15 @@ proc find_gdbserver { } {
     return [target_info gdb_server_prog]
   }
 
-  set gdbserver "${GDB}server"
-  if { [file isdirectory $gdbserver] } {
-    append gdbserver "/gdbserver"
-  }
-
-  if { [file executable $gdbserver] } {
-    return $gdbserver
+  set toplevel [file join [file dirname $GDB] .. gdbserver]
+  foreach gdbserver [list "${GDB}server" $toplevel] {
+      if { [file isdirectory $gdbserver] } {
+	  append gdbserver "/gdbserver"
+      }
+
+      if { [file executable $gdbserver] } {
+	  return $gdbserver
+      }
   }
 
   return ""
@@ -425,21 +431,11 @@ if { [info procs gdbserver_orig_gdb_exit
     rename mi_gdb_exit gdbserver_orig_mi_gdb_exit
 }
 
-proc gdbserver_gdb_exit { is_mi } {
+# Cleanup gdbserver $server_spawn_id
+
+proc gdbserver_exit { is_mi } {
     global gdb_spawn_id server_spawn_id
     global gdb_prompt
-    global gdbserver_reconnect_p
-
-    # Leave GDBserver running if we're exiting GDB in order to
-    # reconnect to the same instance of GDBserver again.
-    if {[info exists gdbserver_reconnect_p] && $gdbserver_reconnect_p} {
-	if { $is_mi } {
-	    gdbserver_orig_mi_gdb_exit
-	} else {
-	    gdbserver_orig_gdb_exit
-	}
-	return
-    }
 
     if {[info exists gdb_spawn_id] && [info exists server_spawn_id]} {
 	# GDB may be terminated in an expected way or an unexpected way,
@@ -463,10 +459,34 @@ proc gdbserver_gdb_exit { is_mi } {
 		    wait -i $expect_out(spawn_id)
 		    unset server_spawn_id
 		}
+               timeout {
+                   warning "Timed out waiting for EOF in server after $monitor_exit"
+               }
 	    }
 	}
     }
     close_gdbserver
+}
+
+# Local version of gdb_exit that also cleans up gdbserver $server_spawn_id.
+
+proc gdbserver_gdb_exit { is_mi } {
+    global gdb_spawn_id server_spawn_id
+    global gdb_prompt
+    global gdbserver_reconnect_p
+
+    # Leave GDBserver running if we're exiting GDB in order to
+    # reconnect to the same instance of GDBserver again.
+    if {[info exists gdbserver_reconnect_p] && $gdbserver_reconnect_p} {
+	if { $is_mi } {
+	    gdbserver_orig_mi_gdb_exit
+	} else {
+	    gdbserver_orig_gdb_exit
+	}
+	return
+    }
+
+    gdbserver_exit $is_mi
 
     if { $is_mi } {
 	gdbserver_orig_mi_gdb_exit
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gdb-utils.exp ./gdb/testsuite/lib/gdb-utils.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gdb-utils.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/gdb-utils.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2014-2020 Free Software Foundation, Inc.
+# Copyright 2014-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gen-perf-test.exp ./gdb/testsuite/lib/gen-perf-test.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gen-perf-test.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/gen-perf-test.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gnat_debug_info_test.adb ./gdb/testsuite/lib/gnat_debug_info_test.adb
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/gnat_debug_info_test.adb	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/lib/gnat_debug_info_test.adb	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,6 @@
+with Ada.Text_IO;
+
+procedure GNAT_Debug_Info_Test is
+begin
+   Ada.Text_IO.Put_Line("Hello, world!");
+end GNAT_Debug_Info_Test;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/go.exp ./gdb/testsuite/lib/go.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/go.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/go.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/jit-elf-helpers.exp ./gdb/testsuite/lib/jit-elf-helpers.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/jit-elf-helpers.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/lib/jit-elf-helpers.exp	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,111 @@
+# Copyright 2020-2021 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/>.
+
+# Magic constants used to calculate a starting address when linking
+# "jit" shared libraries.  When loaded, will be mapped by jit-elf-main
+# to the same address.
+
+set jit_load_address   0x7000000
+set jit_load_increment 0x1000000
+
+# Compile jit-elf-main.c as an executable.
+#
+# BINSUFFIX is appended to the binary name.
+# OPTIONS is passed to gdb_compile when compiling the program.
+#
+# On success, return 0.
+# On failure, return -1.
+proc compile_jit_main {main_srcfile main_binfile options} {
+    global jit_load_address jit_load_increment
+
+    set options [concat \
+	$options \
+	additional_flags=-DLOAD_ADDRESS=$jit_load_address \
+	additional_flags=-DLOAD_INCREMENT=$jit_load_increment \
+	debug]
+
+    if { [gdb_compile ${main_srcfile} ${main_binfile} \
+	      executable $options] != "" } {
+	set f [file tail $main_binfile]
+	untested "failed to compile $f"
+	return -1
+    }
+
+    return 0
+}
+
+# Compile jit-elf-main.c as a shared library.
+#
+# OPTIONS is passed to gdb_compile when compiling the program.
+#
+# On success, return 0.
+# On failure, return -1.
+proc compile_jit_elf_main_as_so {main_solib_srcfile main_solib_binfile options} {
+    global jit_load_address jit_load_increment
+
+    set options [list \
+	additional_flags="-DMAIN=jit_dl_main" \
+	additional_flags=-DLOAD_ADDRESS=$jit_load_address \
+	additional_flags=-DLOAD_INCREMENT=$jit_load_increment \
+	debug]
+
+    if { [gdb_compile_shlib ${main_solib_srcfile} ${main_solib_binfile} \
+	      $options] != "" } {
+	set f [file tail $main_solib_binfile]
+	untested "failed to compile shared library $f"
+	return -1
+    }
+
+    return 0
+}
+
+# Compile jit-elf-solib.c as a shared library in multiple copies and
+# upload them to the target.
+#
+# On success, return a list of target path to the shared libraries.
+# On failure, return -1.
+proc compile_and_download_n_jit_so {jit_solib_basename jit_solib_srcfile count} {
+    global jit_load_address jit_load_increment
+    set binfiles_target {}
+
+    for {set i 1} {$i <= $count} {incr i} {
+	set binfile [standard_output_file ${jit_solib_basename}.$i.so]
+
+	# Note: compiling without debug info by default: some test
+	# do symbol renaming by munging on ELF symbol table, and that
+	# wouldn't work for .debug sections.  Also, output for "info
+	# function" changes when debug info is present.
+	set addr [format 0x%x [expr $jit_load_address + $jit_load_increment * [expr $i-1]]]
+	# Using -Ttext-segment flag to ask linked to relocate everything
+	# in the compiled shared library against a fixed base address.  Combined
+	# with mapping the resulting binary to the same fixed base it allows
+	# to dynamically execute functions from it without any further adjustments.
+	set options [list \
+	    additional_flags=-DFUNCTION_NAME=[format "jit_function_%04d" $i] \
+	    additional_flags=-Xlinker \
+	    additional_flags=-Ttext-segment=$addr]
+	if { [gdb_compile_shlib ${jit_solib_srcfile} ${binfile} \
+		  $options] != "" } {
+	    set f [file tail $binfile]
+	    untested "failed to compile shared library $f"
+	    return -1
+	}
+
+	set path [gdb_remote_download target ${binfile}]
+	lappend binfiles_target $path
+    }
+
+    return $binfiles_target
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/memory.exp ./gdb/testsuite/lib/memory.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/memory.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/memory.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2012-2020 Free Software Foundation, Inc.
+# Copyright 2012-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/mi-support.exp ./gdb/testsuite/lib/mi-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/mi-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/mi-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Free Software Foundation, Inc.
+# Copyright 1999-2021 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
@@ -55,7 +55,6 @@ proc mi_gdb_exit {} {
 proc mi_uncatched_gdb_exit {} {
     global GDB
     global INTERNAL_GDBFLAGS GDBFLAGS
-    global verbose
     global gdb_spawn_id gdb_main_spawn_id
     global mi_spawn_id inferior_spawn_id
     global gdb_prompt
@@ -185,7 +184,7 @@ proc mi_gdb_start_separate_mi_tty { args
 # get really slow.  Give gdb at least 3 minutes to start up.
 #
 proc default_mi_gdb_start { args } {
-    global verbose use_gdb_stub
+    global use_gdb_stub
     global GDB
     global INTERNAL_GDBFLAGS GDBFLAGS
     global gdb_prompt
@@ -482,7 +481,6 @@ proc mi_gdb_target_cmd { targetname seri
 # return a -1 if anything goes wrong.
 #
 proc mi_gdb_file_cmd { arg } {
-    global verbose
     global loadpath
     global loadfile
     global GDB
@@ -553,7 +551,6 @@ proc mi_gdb_file_cmd { arg } {
 # return a -1 if anything goes wrong.
 #
 proc mi_gdb_target_load { } {
-    global verbose
     global loadpath
     global loadfile
     global GDB
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/objc.exp ./gdb/testsuite/lib/objc.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/objc.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/objc.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 # This test code is part of GDB, the GNU debugger.
 
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/opencl.exp ./gdb/testsuite/lib/opencl.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/opencl.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/opencl.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Free Software Foundation, Inc.
+# Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/opencl_hostapp.c ./gdb/testsuite/lib/opencl_hostapp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/opencl_hostapp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/opencl_hostapp.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This testcase is part of GDB, the GNU debugger.
 
-   Copyright 2010-2020 Free Software Foundation, Inc.
+   Copyright 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/pascal.exp ./gdb/testsuite/lib/pascal.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/pascal.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/pascal.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2007-2020 Free Software Foundation, Inc.
+# Copyright 2007-2021 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
@@ -33,10 +33,10 @@ set pascal_init_done 0
  
 proc pascal_init {} {
     global pascal_init_done
-    global pascal_compiler_is_gpc
-    global pascal_compiler_is_fpc
-    global gpc_compiler
-    global fpc_compiler
+    gdb_persistent_global pascal_compiler_is_gpc
+    gdb_persistent_global pascal_compiler_is_fpc
+    gdb_persistent_global gpc_compiler
+    gdb_persistent_global fpc_compiler
     global env
  
     if { $pascal_init_done == 1 } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/pdtrace ./gdb/testsuite/lib/pdtrace
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/pdtrace	2020-03-07 02:11:00.000000000 +0000
+++ ./gdb/testsuite/lib/pdtrace	2021-05-21 01:59:57.000000000 +0000
@@ -2,7 +2,7 @@
 
 # A Poor(but Free)'s Man dtrace
 #
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
 #
 # Contributed by Oracle, Inc.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/pdtrace.in ./gdb/testsuite/lib/pdtrace.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/pdtrace.in	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/pdtrace.in	2021-05-21 01:57:25.000000000 +0000
@@ -2,7 +2,7 @@
 
 # A Poor(but Free)'s Man dtrace
 #
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
 #
 # Contributed by Oracle, Inc.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/perftest.exp ./gdb/testsuite/lib/perftest.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/perftest.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/perftest.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/prelink-support.exp ./gdb/testsuite/lib/prelink-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/prelink-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/prelink-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/prompt.exp ./gdb/testsuite/lib/prompt.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/prompt.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/prompt.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 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
@@ -24,7 +24,6 @@
 # uses pass if it sees $gdb_prompt, and fail if it sees $gdb_prompt_fail.
 #
 proc default_prompt_gdb_start { } {
-    global verbose
     global GDB
     global INTERNAL_GDBFLAGS GDBFLAGS
     global gdb_prompt
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/range-stepping-support.exp ./gdb/testsuite/lib/range-stepping-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/range-stepping-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/range-stepping-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2013-2020 Free Software Foundation, Inc.
+# Copyright 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/read1.c ./gdb/testsuite/lib/read1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/read1.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/read1.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* This is part of GDB, the GNU debugger.
 
-   Copyright 2011-2020 Free Software Foundation, Inc.
+   Copyright 2011-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/rust-support.exp ./gdb/testsuite/lib/rust-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/rust-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/rust-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2016-2020 Free Software Foundation, Inc.
+# Copyright 2016-2021 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
@@ -35,3 +35,22 @@ proc gdb_compile_rust {sources dest opti
     }
     return ""
 }
+
+# Return the version of LLVM used by the Rust compiler.  Note that
+# older versions of rustc don't print this -- in this case the
+# returned version is "0.0".
+gdb_caching_proc rust_llvm_version {
+    set rustc [find_rustc]
+    if {$rustc == ""} {
+	verbose "could not find rustc"
+    } else {
+	set output [lindex [remote_exec host "$rustc --version --verbose"] 1]
+	foreach line [split $output \n] {
+	    if {[regexp "LLVM version: (.+)\$" $output ignore version]} {
+		return $version
+	    }
+	}
+	verbose "could not match rustc version output: $output"
+    }
+    return 0.0
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/selftest-support.exp ./gdb/testsuite/lib/selftest-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/selftest-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/selftest-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2003-2020 Free Software Foundation, Inc.
+# Copyright 2003-2021 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
@@ -76,9 +76,10 @@ proc selftest_setup { executable functio
 	return -1
     }
 
-    # Set a breakpoint at main
+    # Set a breakpoint at main.  Allow more than one location, as
+    # workaround for PR26096 - "gdb sets breakpoint at cold clone".
     gdb_test "break $function" \
-            "Breakpoint.*at.* file.*, line.*" \
+            "Breakpoint.*at.* (file.*, line|locations).*" \
             "breakpoint in $function"
 
     # run yourself
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/set_unbuffered_mode.c ./gdb/testsuite/lib/set_unbuffered_mode.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/set_unbuffered_mode.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/set_unbuffered_mode.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/sym-info-cmds.exp ./gdb/testsuite/lib/sym-info-cmds.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/sym-info-cmds.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/sym-info-cmds.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -233,7 +233,7 @@ namespace eval GDBInfoSymbols {
 
 	if { $testname == "" } {
 	    set testname \
-		"$_last_command: check no matches for '$filename', $lineno', and '$text'"
+		"$_last_command: check no matches for '$filename', '$lineno', and '$text'"
 	}
 
 	if { $lineno == "" } {
@@ -421,7 +421,10 @@ namespace eval GDBInfoModuleSymbols {
     # If a matching entry is found then it is removed from the
     # _entries list, this allows us to check for duplicates using the
     # check_no_entry call.
-    proc check_entry { filename module lineno text { testname "" } } {
+    #
+    # If OPTIONAL, don't generate a FAIL for a mismatch, but use UNSUPPORTED
+    # instead.
+    proc check_entry_1 { filename module lineno text optional testname } {
 	variable _entries
 	variable _last_command
 
@@ -458,7 +461,21 @@ namespace eval GDBInfoModuleSymbols {
 	}
 
 	set _entries $new_entries
-	gdb_assert { $found_match } $testname
+	if { $optional && ! $found_match } {
+	    unsupported $testname
+	} else {
+	    gdb_assert { $found_match } $testname
+	}
+    }
+
+    # Call check_entry_1 with OPTIONAL == 0.
+    proc check_entry { filename module lineno text { testname "" } } {
+	check_entry_1 $filename $module $lineno $text 0 $testname
+    }
+
+    # Call check_entry_1 with OPTIONAL == 1.
+    proc check_optional_entry { filename module lineno text { testname "" } } {
+	check_entry_1 $filename $module $lineno $text 1 $testname
     }
 
     # Check that there is no entry in the _entries list matching
@@ -482,7 +499,7 @@ namespace eval GDBInfoModuleSymbols {
 
 	if { $testname == "" } {
 	    set testname \
-		"$_last_command: check no matches for '$filename', $lineno', and '$text'"
+		"$_last_command: check no matches for '$filename', '$lineno', and '$text'"
 	}
 
 	if { $lineno == "" } {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/trace-support.exp ./gdb/testsuite/lib/trace-support.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/trace-support.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/trace-support.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1998-2020 Free Software Foundation, Inc.
+# Copyright (C) 1998-2021 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
@@ -374,7 +374,7 @@ proc get_in_proc_agent {} {
     if [target_info exists in_proc_agent] {
 	return [target_info in_proc_agent]
     } else {
-	return $objdir/../gdbserver/libinproctrace.so
+	return $objdir/../../gdbserver/libinproctrace.so
     }
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/tuiterm.exp ./gdb/testsuite/lib/tuiterm.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/tuiterm.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/tuiterm.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2019-2020 Free Software Foundation, Inc.
+# Copyright 2019-2021 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
@@ -19,15 +19,32 @@
 # array; but dejagnu doesn't export this globally.  So, we have to
 # wrap spawn with our own function, so that we can capture this value.
 # The value is later used in calls to stty.
-rename spawn builtin_spawn
-proc spawn {args} {
+proc tuiterm_spawn { args } {
     set result [uplevel builtin_spawn $args]
     global gdb_spawn_name
     upvar spawn_out spawn_out
-    set gdb_spawn_name $spawn_out(slave,name)
+    if { [info exists spawn_out] } {
+	set gdb_spawn_name $spawn_out(slave,name)
+    } else {
+	unset gdb_spawn_name
+    }
     return $result
 }
 
+# Initialize tuiterm.exp environment.
+proc tuiterm_env_init { } {
+    # Override spawn with tui_spawn.
+    rename spawn builtin_spawn
+    rename tuiterm_spawn spawn
+}
+
+# Finalize tuiterm.exp environment.
+proc tuiterm_env_finish { } {
+    # Restore spawn.
+    rename spawn tuiterm_spawn
+    rename builtin_spawn spawn
+}
+
 namespace eval Term {
     variable _rows
     variable _cols
@@ -388,8 +405,10 @@ namespace eval Term {
 	_clear_lines 0 $_rows
     }
 
-    # Accept some output from gdb and update the screen.
-    proc _accept {wait_for} {
+    # Accept some output from gdb and update the screen.  WAIT_FOR is
+    # a regexp matching the line to wait for.  Return 0 on timeout, 1
+    # on success.
+    proc wait_for {wait_for} {
 	global expect_out
 	global gdb_prompt
 	variable _cur_x
@@ -424,7 +443,7 @@ namespace eval Term {
 		timeout {
 		    # Assume a timeout means we somehow missed the
 		    # expected result, and carry on.
-		    return
+		    return 0
 		}
 	    }
 
@@ -443,6 +462,8 @@ namespace eval Term {
 		set wait_for $prompt_wait_for
 	    }
 	}
+
+	return 1
     }
 
     # Like ::clean_restart, but ensures that gdb starts in an
@@ -462,16 +483,26 @@ namespace eval Term {
 	}
     }
 
-    # Start the TUI.  Returns 1 on success, 0 if TUI tests should be
-    # skipped.
-    proc enter_tui {} {
+    # Setup ready for starting the tui, but don't actually start it.
+    # Returns 1 on success, 0 if TUI tests should be skipped.
+    proc prepare_for_tui {} {
 	if {[skip_tui_tests]} {
 	    return 0
 	}
 
 	gdb_test_no_output "set tui border-kind ascii"
 	gdb_test_no_output "maint set tui-resize-message on"
-	command "tui enable"
+	return 1
+    }
+
+    # Start the TUI.  Returns 1 on success, 0 if TUI tests should be
+    # skipped.
+    proc enter_tui {} {
+	if {![prepare_for_tui]} {
+	    return 0
+	}
+
+	command_no_prompt_prefix "tui enable"
 	return 1
     }
 
@@ -479,8 +510,19 @@ namespace eval Term {
     # seen in the TUI.  CMD should not end with a newline -- that will
     # be supplied by this function.
     proc command {cmd} {
+	global gdb_prompt
+	send_gdb "$cmd\n"
+	set str [string_to_regexp $cmd]
+	set str "^$gdb_prompt $str"
+	wait_for $str
+    }
+
+    # As proc command, but don't wait for a initial prompt.  This is used for
+    # inital terminal commands, where there's no prompt yet.
+    proc command_no_prompt_prefix {cmd} {
 	send_gdb "$cmd\n"
-	_accept [string_to_regexp $cmd]
+	set str [string_to_regexp $cmd]
+	wait_for "^$str"
     }
 
     # Return the text of screen line N, without attributes.  Lines are
@@ -555,13 +597,20 @@ namespace eval Term {
 	    return "lr corner"
 	}
 
-	for {set i [expr {$x + 1}]} {$i < $x2 - 1} {incr i} {
-	    # Note we do not check the top border of the box, because
-	    # it will contain a title.
-	    if {[get_char $i $y2] != "-"} {
-		return "bottom border $i"
-	    }
+	# Note we do not check the full horizonal borders of the box.
+	# The top will contain a title, and the bottom may as well, if
+	# it is overlapped by some other border.  However, at most a
+	# title should appear as '+-VERY LONG TITLE-+', so we can
+	# check for the '+-' on the left, and '-+' on the right.
+	if {[get_char [expr {$x + 1}] $y] != "-"} {
+	    return "ul title padding"
 	}
+
+	if {[get_char [expr {$x2 - 1}] $y] != "-"} {
+	    return "ul title padding"
+	}
+
+	# Now check the vertical borders.
 	for {set i [expr {$y + 1}]} {$i < $y2 - 1} {incr i} {
 	    if {[get_char $x $i] != "|"} {
 		return "left side $i"
@@ -594,15 +643,46 @@ namespace eval Term {
 	}
     }
 
+    # Check the contents of a box on the screen.  This is a little
+    # like check_contents, but doens't check the whole screen
+    # contents, only the contents of a single box.  This procedure
+    # includes (effectively) a call to check_box to ensure there is a
+    # box where expected, if there is then the contents of the box are
+    # matched against REGEXP.
+    proc check_box_contents {test_name x y width height regexp} {
+	variable _chars
+
+	set why [_check_box $x $y $width $height]
+	if {$why != ""} {
+	    dump_screen
+	    fail "$test_name (box check: $why)"
+	    return
+	}
+
+	# Now grab the contents of the box, join each line together
+	# with a newline character and match against REGEXP.
+	set result ""
+	for {set yy [expr {$y + 1}]} {$yy < [expr {$y + $height - 1}]} {incr yy} {
+	    for {set xx [expr {$x + 1}]} {$xx < [expr {$x + $width - 1}]} {incr xx} {
+		append result [lindex $_chars($xx,$yy) 0]
+	    }
+	    append result "\n"
+	}
+
+	if {![gdb_assert {[regexp -- $regexp $result]} $test_name]} {
+	    dump_screen
+	}
+    }
+
     # A debugging function to dump the current screen, with line
     # numbers.
     proc dump_screen {} {
 	variable _rows
 	variable _cols
-	verbose "Screen Dump ($_cols x $_rows):"
+	verbose -log "Screen Dump ($_cols x $_rows):"
 	for {set y 0} {$y < $_rows} {incr y} {
 	    set fmt [format %5d $y]
-	    verbose "$fmt [get_line $y]"
+	    verbose -log "$fmt [get_line $y]"
 	}
     }
 
@@ -645,14 +725,14 @@ namespace eval Term {
 	# Due to the strange column resizing behavior, and because we
 	# don't care about this intermediate resize, we don't check
 	# the size here.
-	_accept "@@ resize done $_resize_count"
+	wait_for "@@ resize done $_resize_count"
 	incr _resize_count
 	# Somehow the number of columns transmitted to gdb is one less
 	# than what we request from expect.  We hide this weird
 	# details from the caller.
 	_do_resize $_rows $cols
 	stty columns [expr {$_cols + 1}] < $gdb_spawn_name
-	_accept "@@ resize done $_resize_count, size = ${_cols}x${rows}"
+	wait_for "@@ resize done $_resize_count, size = ${_cols}x${rows}"
 	incr _resize_count
     }
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/unbuffer_output.c ./gdb/testsuite/lib/unbuffer_output.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/unbuffer_output.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/unbuffer_output.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,7 +22,7 @@
 #include <unistd.h>
 #endif
 
-static int
+static void
 gdb_unbuffer_output (void)
 {
   /* Always force this for Windows testing.  To a native Windows
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/valgrind.exp ./gdb/testsuite/lib/valgrind.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/lib/valgrind.exp	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/lib/valgrind.exp	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009-2020 Free Software Foundation, Inc.
+# Copyright 2009-2021 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
@@ -19,12 +19,19 @@
 # Start a vgdb server, and connect gdb to it.  Return 0 on success, and -1 on
 # error.
 #
-proc vgdb_start { } {
+proc vgdb_start { {active_at_startup 1} } {
     global binfile use_gdb_stub board testfile
     global valgrind_spawn_id gdb_spawn_id
+    global decimal
 
     set test "spawn valgrind"
-    set cmd "valgrind --vgdb-error=0 $binfile"
+    set cmd_list [list]
+    lappend cmd_list "valgrind"
+    if { $active_at_startup } {
+	lappend cmd_list "--vgdb-error=0"
+    }
+    lappend cmd_list $binfile
+    set cmd [join $cmd_list]
     set res [remote_spawn host $cmd]
     if { $res < 0 || $res == "" } {
 	verbose -log "Spawning $cmd failed."
@@ -42,7 +49,8 @@ proc vgdb_start { } {
     set test "valgrind started"
     # The trailing '.' differs for different memcheck versions.
     gdb_test_multiple "" $test {
-	-re "Memcheck, a memory error detector\\.?\r\n" {
+	-re "==($decimal)== Memcheck, a memory error detector\\.?\r\n" {
+	    set vgdbpid $expect_out(1,string)
 	    pass $test
 	}
 	-re "valgrind: failed to start tool 'memcheck' for platform '.*': No such file or directory" {
@@ -66,14 +74,6 @@ proc vgdb_start { } {
 	}
     }
 
-    set test "vgdb prompt"
-    gdb_test_multiple "" $test {
-	-re "  (target remote | \[^\r\n\]*/vgdb \[^\r\n\]*)\r\n" {
-	    set vgdbcmd $expect_out(1,string)
-	    pass $test
-	}
-    }
-
     # Do not kill valgrind.
     set valgrind_spawn_id [board_info host fileid]
     unset gdb_spawn_id
@@ -87,10 +87,22 @@ proc vgdb_start { } {
     # gdbserver and connect to it.
     gdb_test "disconnect" ".*"
 
-    gdb_test "$vgdbcmd" " in \\.?_start .*" "target remote for vgdb"
+    set vgdbcmd "target remote | vgdb --pid=$vgdbpid"
+    if { $active_at_startup } {
+	gdb_test "$vgdbcmd" " in \\.?_start .*" "target remote for vgdb"
+    } else {
+	# Let $binfile run a bit before attaching.  This is a bit of a hack,
+	# in that it lets test-case valgrind-infcall-2.exp run to the point of
+	# nanosleep, which seems to be required to trigger the error condition.
+	# So, without this, we hit
+	# "UNSUPPORTED: gdb.base/valgrind-infcall-2.exp: do printf".
+	exec sleep 1
 
-    gdb_test "monitor v.set gdb_output" "valgrind output will go to gdb.*"
+	# Connect to vgdb.  Don't expect to be anywhere in particular.
+	gdb_test "$vgdbcmd" "" "target remote for vgdb"
+    }
 
+    gdb_test "monitor v.set gdb_output" "valgrind output will go to gdb.*"
     return 0
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/Makefile.in ./gdb/testsuite/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/Makefile.in	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/Makefile.in	2021-05-21 01:57:24.000000000 +0000
@@ -1,5 +1,5 @@
 # Makefile for regression testing the GNU debugger.
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 Free Software Foundation, Inc.
 
 # This file is part of GDB.
 
@@ -28,6 +28,7 @@ program_transform_name = @program_transf
 build_canonical = @build@
 host_canonical = @host@
 target_canonical = @target@
+enable_libctf = @enable_libctf@
 
 SHELL = @SHELL@
 EXEEXT = @EXEEXT@
@@ -131,6 +132,7 @@ uninstall: force
 	@echo "set build_triplet ${build_canonical}" >> ./tmp0
 	@echo "set srcdir ${abs_srcdir}" >> ./tmp0
 	@echo "set tool gdb" >> ./tmp0
+	@echo "set enable_libctf ${enable_libctf}" >> ./tmp0
 	@echo 'source $${srcdir}/lib/append_gdb_boards_dir.exp' >> ./tmp0
 	@echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0
 		@cat ./tmp0 > site.exp
@@ -209,7 +211,7 @@ check-single-racy:
 	-rm -rf cache racy_outputs temp
 	mkdir -p racy_outputs; \
 	racyiter="$(RACY_ITER)"; \
-	test "x$$racyiter" == "x" && \
+	test "x$$racyiter" = "x" && \
 	  racyiter=$(DEFAULT_RACY_ITER); \
 	if test $$racyiter -lt 2 ; then \
 	  echo "RACY_ITER must be at least 2."; \
@@ -239,7 +241,7 @@ check-parallel:
 check-parallel-racy:
 	-rm -rf cache racy_outputs temp
 	racyiter="$(RACY_ITER)"; \
-	test "x$$racyiter" == "x" && \
+	test "x$$racyiter" = "x" && \
 	  racyiter=$(DEFAULT_RACY_ITER); \
 	if test $$racyiter -lt 2 ; then \
 	  echo "RACY_ITER must be at least 2."; \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/print-ts.py ./gdb/testsuite/print-ts.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/print-ts.py	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/testsuite/print-ts.py	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/README ./gdb/testsuite/README
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/testsuite/README	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/testsuite/README	2021-05-21 01:57:24.000000000 +0000
@@ -197,7 +197,7 @@ a .gdbinit.  For example:
 
 GDB_PARALLEL
 
-To use parallel testing mode without using the the Makefile, set
+To use parallel testing mode without using the Makefile, set
 GDB_PARALLEL on the runtest command line to "yes".  Before starting
 the tests, you must ensure that the directories cache, outputs, and
 temp in the test suite build directory are either empty or have been
@@ -352,6 +352,13 @@ Examples:
 	make -j10 check-read1 TESTS="*/paginate-*.exp"
 	make -j10 check READ1="1"
 
+Note: While the intention is to detect races and make otherwise passing tests
+fail, it can also have the effect of making otherwise failing tests pass.
+This happens f.i. if the test is trying to match a gdb prompt using an end of
+input marker "${gdb_prompt} $" and there is output after the gdb prompt.  This
+may either pass or fail in normal operation, but using check-read1 will ensure
+that it passes.
+
 Testsuite Configuration
 ***********************
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/test-target.c ./gdb/test-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/test-target.c	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/test-target.c	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* A mock process_stratum target_ops
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/test-target.h ./gdb/test-target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/test-target.h	2020-03-07 02:07:43.000000000 +0000
+++ ./gdb/test-target.h	2021-05-21 01:57:24.000000000 +0000
@@ -1,6 +1,6 @@
 /* A mock process_stratum target_ops
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/thread.c ./gdb/thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/thread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/thread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Multi-process/thread control for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    Contributed by Lynx Real-Time Systems, Inc.  Los Gatos, CA.
 
@@ -55,14 +55,8 @@
 
 static int highest_thread_num;
 
-/* True if any thread is, or may be executing.  We need to track this
-   separately because until we fully sync the thread list, we won't
-   know whether the target is fully stopped, even if we see stop
-   events for all known threads, because any of those threads may have
-   spawned new threads we haven't heard of yet.  */
-static int threads_executing;
-
-static int thread_alive (struct thread_info *);
+/* The current/selected thread.  */
+static thread_info *current_thread_;
 
 /* RAII type used to increase / decrease the refcount of each thread
    in a given list of threads.  */
@@ -87,13 +81,19 @@ private:
   const std::vector<thread_info *> &m_thrds;
 };
 
+/* Returns true if THR is the current thread.  */
+
+static bool
+is_current_thread (const thread_info *thr)
+{
+  return thr == current_thread_;
+}
 
 struct thread_info*
 inferior_thread (void)
 {
-  struct thread_info *tp = find_thread_ptid (inferior_ptid);
-  gdb_assert (tp);
-  return tp;
+  gdb_assert (current_thread_ != nullptr);
+  return current_thread_;
 }
 
 /* Delete the breakpoint pointed at by BP_P, if there's one.  */
@@ -197,13 +197,13 @@ clear_thread_inferior_resources (struct
 
   thread_cancel_execution_command (tp);
 
-  clear_inline_frame_state (tp->ptid);
+  clear_inline_frame_state (tp);
 }
 
 /* Set the TP's state as exited.  */
 
 static void
-set_thread_exited (thread_info *tp, int silent)
+set_thread_exited (thread_info *tp, bool silent)
 {
   /* Dead threads don't need to step-over.  Remove from queue.  */
   if (tp->step_over_next != NULL)
@@ -254,7 +254,12 @@ new_thread (struct inferior *inf, ptid_t
       struct thread_info *last;
 
       for (last = inf->thread_list; last->next != NULL; last = last->next)
-	;
+	gdb_assert (ptid != last->ptid
+		    || last->state == THREAD_EXITED);
+
+      gdb_assert (ptid != last->ptid
+		  || last->state == THREAD_EXITED);
+
       last->next = tp;
     }
 
@@ -262,50 +267,17 @@ new_thread (struct inferior *inf, ptid_t
 }
 
 struct thread_info *
-add_thread_silent (ptid_t ptid)
+add_thread_silent (process_stratum_target *targ, ptid_t ptid)
 {
-  struct inferior *inf = find_inferior_ptid (ptid);
-  gdb_assert (inf != NULL);
+  inferior *inf = find_inferior_ptid (targ, ptid);
 
+  /* We may have an old thread with the same id in the thread list.
+     If we do, it must be dead, otherwise we wouldn't be adding a new
+     thread with the same id.  The OS is reusing this id --- delete
+     the old thread, and create a new one.  */
   thread_info *tp = find_thread_ptid (inf, ptid);
-  if (tp)
-    /* Found an old thread with the same id.  It has to be dead,
-       otherwise we wouldn't be adding a new thread with the same id.
-       The OS is reusing this id --- delete it, and recreate a new
-       one.  */
-    {
-      /* In addition to deleting the thread, if this is the current
-	 thread, then we need to take care that delete_thread doesn't
-	 really delete the thread if it is inferior_ptid.  Create a
-	 new template thread in the list with an invalid ptid, switch
-	 to it, delete the original thread, reset the new thread's
-	 ptid, and switch to it.  */
-
-      if (inferior_ptid == ptid)
-	{
-	  thread_info *new_thr = new_thread (inf, null_ptid);
-
-	  /* Make switch_to_thread not read from the thread.  */
-	  new_thr->state = THREAD_EXITED;
-	  switch_to_no_thread ();
-
-	  /* Now we can delete it.  */
-	  delete_thread (tp);
-
-	  /* Now reset its ptid, and reswitch inferior_ptid to it.  */
-	  new_thr->ptid = ptid;
-	  new_thr->state = THREAD_STOPPED;
-	  switch_to_thread (new_thr);
-
-	  gdb::observers::new_thread.notify (new_thr);
-
-	  /* All done.  */
-	  return new_thr;
-	}
-      else
-	/* Just go ahead and delete it.  */
-	delete_thread (tp);
-    }
+  if (tp != nullptr)
+    delete_thread (tp);
 
   tp = new_thread (inf, ptid);
   gdb::observers::new_thread.notify (tp);
@@ -314,9 +286,10 @@ add_thread_silent (ptid_t ptid)
 }
 
 struct thread_info *
-add_thread_with_info (ptid_t ptid, private_thread_info *priv)
+add_thread_with_info (process_stratum_target *targ, ptid_t ptid,
+		      private_thread_info *priv)
 {
-  struct thread_info *result = add_thread_silent (ptid);
+  thread_info *result = add_thread_silent (targ, ptid);
 
   result->priv.reset (priv);
 
@@ -328,9 +301,9 @@ add_thread_with_info (ptid_t ptid, priva
 }
 
 struct thread_info *
-add_thread (ptid_t ptid)
+add_thread (process_stratum_target *targ, ptid_t ptid)
 {
-  return add_thread_with_info (ptid, NULL);
+  return add_thread_with_info (targ, ptid, NULL);
 }
 
 private_thread_info::~private_thread_info () = default;
@@ -361,7 +334,7 @@ thread_info::deletable () const
 {
   /* If this is the current thread, or there's code out there that
      relies on it existing (refcount > 0) we can't delete yet.  */
-  return refcount () == 0 && ptid != inferior_ptid;
+  return refcount () == 0 && !is_current_thread (this);
 }
 
 /* Add TP to the end of the step-over chain LIST_P.  */
@@ -479,10 +452,7 @@ delete_thread_1 (thread_info *thr, bool
   delete tp;
 }
 
-/* Delete thread THREAD and notify of thread exit.  If this is the
-   current thread, don't actually delete it, but tag it as exited and
-   do the notification.  If this is the user selected thread, clear
-   it.  */
+/* See gdbthread.h.  */
 
 void
 delete_thread (thread_info *thread)
@@ -516,12 +486,12 @@ find_thread_id (struct inferior *inf, in
   return NULL;
 }
 
-/* Find a thread_info by matching PTID.  */
+/* See gdbthread.h.  */
 
 struct thread_info *
-find_thread_ptid (ptid_t ptid)
+find_thread_ptid (process_stratum_target *targ, ptid_t ptid)
 {
-  inferior *inf = find_inferior_ptid (ptid);
+  inferior *inf = find_inferior_ptid (targ, ptid);
   if (inf == NULL)
     return NULL;
   return find_thread_ptid (inf, ptid);
@@ -532,7 +502,7 @@ find_thread_ptid (ptid_t ptid)
 struct thread_info *
 find_thread_ptid (inferior *inf, ptid_t ptid)
 {
-  for (thread_info *tp : inf->threads ())
+  for (thread_info *tp : inf->non_exited_threads ())
     if (tp->ptid == ptid)
       return tp;
 
@@ -586,9 +556,9 @@ any_thread_p ()
 }
 
 int
-thread_count (void)
+thread_count (process_stratum_target *proc_target)
 {
-  auto rng = all_threads ();
+  auto rng = all_threads (proc_target);
   return std::distance (rng.begin (), rng.end ());
 }
 
@@ -611,10 +581,10 @@ valid_global_thread_id (int global_id)
   return 0;
 }
 
-int
-in_thread_list (ptid_t ptid)
+bool
+in_thread_list (process_stratum_target *targ, ptid_t ptid)
 {
-  return find_thread_ptid (ptid) != nullptr;
+  return find_thread_ptid (targ, ptid) != nullptr;
 }
 
 /* Finds the first thread of the inferior.  */
@@ -679,14 +649,38 @@ any_live_thread_of_inferior (inferior *i
 }
 
 /* Return true if TP is an active thread.  */
-static int
-thread_alive (struct thread_info *tp)
+static bool
+thread_alive (thread_info *tp)
 {
   if (tp->state == THREAD_EXITED)
-    return 0;
-  if (!target_thread_alive (tp->ptid))
-    return 0;
-  return 1;
+    return false;
+
+  /* Ensure we're looking at the right target stack.  */
+  gdb_assert (tp->inf == current_inferior ());
+
+  return target_thread_alive (tp->ptid);
+}
+
+/* Switch to thread TP if it is alive.  Returns true if successfully
+   switched, false otherwise.  */
+
+static bool
+switch_to_thread_if_alive (thread_info *thr)
+{
+  scoped_restore_current_thread restore_thread;
+
+  /* Switch inferior first, so that we're looking at the right target
+     stack.  */
+  switch_to_inferior_no_thread (thr->inf);
+
+  if (thread_alive (thr))
+    {
+      switch_to_thread (thr);
+      restore_thread.dont_restore ();
+      return true;
+    }
+
+  return false;
 }
 
 /* See gdbthreads.h.  */
@@ -694,9 +688,15 @@ thread_alive (struct thread_info *tp)
 void
 prune_threads (void)
 {
+  scoped_restore_current_thread restore_thread;
+
   for (thread_info *tp : all_threads_safe ())
-    if (!thread_alive (tp))
-      delete_thread (tp);
+    {
+      switch_to_inferior_no_thread (tp->inf);
+
+      if (!thread_alive (tp))
+	delete_thread (tp);
+    }
 }
 
 /* See gdbthreads.h.  */
@@ -760,7 +760,8 @@ get_last_thread_stack_temporary (thread_
 }
 
 void
-thread_change_ptid (ptid_t old_ptid, ptid_t new_ptid)
+thread_change_ptid (process_stratum_target *targ,
+		    ptid_t old_ptid, ptid_t new_ptid)
 {
   struct inferior *inf;
   struct thread_info *tp;
@@ -768,34 +769,34 @@ thread_change_ptid (ptid_t old_ptid, pti
   /* It can happen that what we knew as the target inferior id
      changes.  E.g, target remote may only discover the remote process
      pid after adding the inferior to GDB's list.  */
-  inf = find_inferior_ptid (old_ptid);
+  inf = find_inferior_ptid (targ, old_ptid);
   inf->pid = new_ptid.pid ();
 
   tp = find_thread_ptid (inf, old_ptid);
   tp->ptid = new_ptid;
 
-  gdb::observers::thread_ptid_changed.notify (old_ptid, new_ptid);
+  gdb::observers::thread_ptid_changed.notify (targ, old_ptid, new_ptid);
 }
 
 /* See gdbthread.h.  */
 
 void
-set_resumed (ptid_t ptid, int resumed)
+set_resumed (process_stratum_target *targ, ptid_t ptid, bool resumed)
 {
-  for (thread_info *tp : all_non_exited_threads (ptid))
+  for (thread_info *tp : all_non_exited_threads (targ, ptid))
     tp->resumed = resumed;
 }
 
 /* Helper for set_running, that marks one thread either running or
    stopped.  */
 
-static int
-set_running_thread (struct thread_info *tp, int running)
+static bool
+set_running_thread (struct thread_info *tp, bool running)
 {
-  int started = 0;
+  bool started = false;
 
   if (running && tp->state == THREAD_STOPPED)
-    started = 1;
+    started = true;
   tp->state = running ? THREAD_RUNNING : THREAD_STOPPED;
 
   if (!running)
@@ -820,7 +821,7 @@ thread_info::set_running (bool running)
 }
 
 void
-set_running (ptid_t ptid, int running)
+set_running (process_stratum_target *targ, ptid_t ptid, bool running)
 {
   /* We try not to notify the observer if no thread has actually
      changed the running state -- merely to reduce the number of
@@ -828,7 +829,7 @@ set_running (ptid_t ptid, int running)
      multiple *running notifications just fine.  */
   bool any_started = false;
 
-  for (thread_info *tp : all_non_exited_threads (ptid))
+  for (thread_info *tp : all_non_exited_threads (targ, ptid))
     if (set_running_thread (tp, running))
       any_started = true;
 
@@ -850,32 +851,32 @@ set_executing_thread (thread_info *thr,
 }
 
 void
-set_executing (ptid_t ptid, int executing)
+set_executing (process_stratum_target *targ, ptid_t ptid, bool executing)
 {
-  for (thread_info *tp : all_non_exited_threads (ptid))
+  for (thread_info *tp : all_non_exited_threads (targ, ptid))
     set_executing_thread (tp, executing);
 
   /* It only takes one running thread to spawn more threads.  */
   if (executing)
-    threads_executing = 1;
+    targ->threads_executing = true;
   /* Only clear the flag if the caller is telling us everything is
      stopped.  */
   else if (minus_one_ptid == ptid)
-    threads_executing = 0;
+    targ->threads_executing = false;
 }
 
 /* See gdbthread.h.  */
 
-int
-threads_are_executing (void)
+bool
+threads_are_executing (process_stratum_target *target)
 {
-  return threads_executing;
+  return target->threads_executing;
 }
 
 void
-set_stop_requested (ptid_t ptid, int stop)
+set_stop_requested (process_stratum_target *targ, ptid_t ptid, bool stop)
 {
-  for (thread_info *tp : all_non_exited_threads (ptid))
+  for (thread_info *tp : all_non_exited_threads (targ, ptid))
     tp->stop_requested = stop;
 
   /* Call the stop requested observer so other components of GDB can
@@ -885,11 +886,11 @@ set_stop_requested (ptid_t ptid, int sto
 }
 
 void
-finish_thread_state (ptid_t ptid)
+finish_thread_state (process_stratum_target *targ, ptid_t ptid)
 {
   bool any_started = false;
 
-  for (thread_info *tp : all_non_exited_threads (ptid))
+  for (thread_info *tp : all_non_exited_threads (targ, ptid))
     if (set_running_thread (tp, tp->executing))
       any_started = true;
 
@@ -1037,6 +1038,9 @@ print_thread_info_1 (struct ui_out *uiou
     gdb::optional<ui_out_emit_list> list_emitter;
     gdb::optional<ui_out_emit_table> table_emitter;
 
+    /* We'll be switching threads temporarily below.  */
+    scoped_restore_current_thread restore_thread;
+
     if (uiout->is_mi_like_p ())
       list_emitter.emplace (uiout, "threads");
     else
@@ -1054,6 +1058,10 @@ print_thread_info_1 (struct ui_out *uiou
 
 	    if (!uiout->is_mi_like_p ())
 	      {
+		/* Switch inferiors so we're looking at the right
+		   target stack.  */
+		switch_to_inferior_no_thread (tp->inf);
+
 		target_id_col_width
 		  = std::max (target_id_col_width,
 			      thread_target_id_str (tp).size ());
@@ -1085,90 +1093,89 @@ print_thread_info_1 (struct ui_out *uiou
 	uiout->table_body ();
       }
 
-    /* We'll be switching threads temporarily.  */
-    scoped_restore_current_thread restore_thread;
-
     for (inferior *inf : all_inferiors ())
       for (thread_info *tp : inf->threads ())
-      {
-	int core;
+	{
+	  int core;
 
-	any_thread = true;
-	if (tp == current_thread && tp->state == THREAD_EXITED)
-	  current_exited = true;
+	  any_thread = true;
+	  if (tp == current_thread && tp->state == THREAD_EXITED)
+	    current_exited = true;
 
-	if (!should_print_thread (requested_threads, default_inf_num,
-				  global_ids, pid, tp))
-	  continue;
+	  if (!should_print_thread (requested_threads, default_inf_num,
+				    global_ids, pid, tp))
+	    continue;
 
-	ui_out_emit_tuple tuple_emitter (uiout, NULL);
+	  ui_out_emit_tuple tuple_emitter (uiout, NULL);
 
-	if (!uiout->is_mi_like_p ())
-	  {
-	    if (tp == current_thread)
-	      uiout->field_string ("current", "*");
-	    else
-	      uiout->field_skip ("current");
+	  if (!uiout->is_mi_like_p ())
+	    {
+	      if (tp == current_thread)
+		uiout->field_string ("current", "*");
+	      else
+		uiout->field_skip ("current");
 
-	    uiout->field_string ("id-in-tg", print_thread_id (tp));
-	  }
+	      uiout->field_string ("id-in-tg", print_thread_id (tp));
+	    }
 
-	if (show_global_ids || uiout->is_mi_like_p ())
-	  uiout->field_signed ("id", tp->global_num);
+	  if (show_global_ids || uiout->is_mi_like_p ())
+	    uiout->field_signed ("id", tp->global_num);
 
-	/* For the CLI, we stuff everything into the target-id field.
-	   This is a gross hack to make the output come out looking
-	   correct.  The underlying problem here is that ui-out has no
-	   way to specify that a field's space allocation should be
-	   shared by several fields.  For MI, we do the right thing
-	   instead.  */
+	  /* Switch to the thread (and inferior / target).  */
+	  switch_to_thread (tp);
 
-	if (uiout->is_mi_like_p ())
-	  {
-	    uiout->field_string ("target-id", target_pid_to_str (tp->ptid));
+	  /* For the CLI, we stuff everything into the target-id field.
+	     This is a gross hack to make the output come out looking
+	     correct.  The underlying problem here is that ui-out has no
+	     way to specify that a field's space allocation should be
+	     shared by several fields.  For MI, we do the right thing
+	     instead.  */
 
-	    const char *extra_info = target_extra_thread_info (tp);
-	    if (extra_info != nullptr)
-	      uiout->field_string ("details", extra_info);
-
-	    const char *name = (tp->name != nullptr
-				? tp->name
-				: target_thread_name (tp));
-	    if (name != NULL)
-	      uiout->field_string ("name", name);
-	  }
-	else
-	  {
-	    uiout->field_string ("target-id",
-				 thread_target_id_str (tp).c_str ());
-	  }
+	  if (uiout->is_mi_like_p ())
+	    {
+	      uiout->field_string ("target-id", target_pid_to_str (tp->ptid));
 
-	if (tp->state == THREAD_RUNNING)
-	  uiout->text ("(running)\n");
-	else
-	  {
-	    /* The switch below puts us at the top of the stack (leaf
-	       frame).  */
-	    switch_to_thread (tp);
-	    print_stack_frame (get_selected_frame (NULL),
-			       /* For MI output, print frame level.  */
-			       uiout->is_mi_like_p (),
-			       LOCATION, 0);
-	  }
+	      const char *extra_info = target_extra_thread_info (tp);
+	      if (extra_info != nullptr)
+		uiout->field_string ("details", extra_info);
+
+	      const char *name = (tp->name != nullptr
+				  ? tp->name
+				  : target_thread_name (tp));
+	      if (name != NULL)
+		uiout->field_string ("name", name);
+	    }
+	  else
+	    {
+	      uiout->field_string ("target-id",
+				   thread_target_id_str (tp).c_str ());
+	    }
 
-	if (uiout->is_mi_like_p ())
-	  {
-	    const char *state = "stopped";
+	  if (tp->state == THREAD_RUNNING)
+	    uiout->text ("(running)\n");
+	  else
+	    {
+	      /* The switch above put us at the top of the stack (leaf
+		 frame).  */
+	      print_stack_frame (get_selected_frame (NULL),
+				 /* For MI output, print frame level.  */
+				 uiout->is_mi_like_p (),
+				 LOCATION, 0);
+	    }
 
-	    if (tp->state == THREAD_RUNNING)
-	      state = "running";
-	    uiout->field_string ("state", state);
-	  }
+	  if (uiout->is_mi_like_p ())
+	    {
+	      const char *state = "stopped";
 
-	core = target_core_of_thread (tp->ptid);
-	if (uiout->is_mi_like_p () && core != -1)
-	  uiout->field_signed ("core", core);
-      }
+	      if (tp->state == THREAD_RUNNING)
+		state = "running";
+	      uiout->field_string ("state", state);
+	    }
+
+	  core = target_core_of_thread (tp->ptid);
+	  if (uiout->is_mi_like_p () && core != -1)
+	    uiout->field_signed ("core", core);
+	}
 
     /* This end scope restores the current thread and the frame
        selected before the "info threads" command, and it finishes the
@@ -1277,7 +1284,8 @@ switch_to_thread_no_regs (struct thread_
   set_current_program_space (inf->pspace);
   set_current_inferior (inf);
 
-  inferior_ptid = thread->ptid;
+  current_thread_ = thread;
+  inferior_ptid = current_thread_->ptid;
 }
 
 /* See gdbthread.h.  */
@@ -1285,9 +1293,10 @@ switch_to_thread_no_regs (struct thread_
 void
 switch_to_no_thread ()
 {
-  if (inferior_ptid == null_ptid)
+  if (current_thread_ == nullptr)
     return;
 
+  current_thread_ = nullptr;
   inferior_ptid = null_ptid;
   reinit_frame_cache ();
 }
@@ -1299,7 +1308,7 @@ switch_to_thread (thread_info *thr)
 {
   gdb_assert (thr != NULL);
 
-  if (inferior_ptid == thr->ptid)
+  if (is_current_thread (thr))
     return;
 
   switch_to_thread_no_regs (thr);
@@ -1310,9 +1319,9 @@ switch_to_thread (thread_info *thr)
 /* See gdbsupport/common-gdbthread.h.  */
 
 void
-switch_to_thread (ptid_t ptid)
+switch_to_thread (process_stratum_target *proc_target, ptid_t ptid)
 {
-  thread_info *thr = find_thread_ptid (ptid);
+  thread_info *thr = find_thread_ptid (proc_target, ptid);
   switch_to_thread (thr);
 }
 
@@ -1375,7 +1384,8 @@ restore_selected_frame (struct frame_id
     }
 }
 
-scoped_restore_current_thread::~scoped_restore_current_thread ()
+void
+scoped_restore_current_thread::restore ()
 {
   /* If an entry of thread_info was previously selected, it won't be
      deleted because we've increased its refcount.  The thread represented
@@ -1386,12 +1396,9 @@ scoped_restore_current_thread::~scoped_r
 	 in the mean time exited (or killed, detached, etc.), then don't revert
 	 back to it, but instead simply drop back to no thread selected.  */
       && m_inf->pid != 0)
-    switch_to_thread (m_thread);
+    switch_to_thread (m_thread.get ());
   else
-    {
-      switch_to_no_thread ();
-      set_current_inferior (m_inf);
-    }
+    switch_to_inferior_no_thread (m_inf.get ());
 
   /* The running state of the originally selected thread may have
      changed, so we have to recheck it here.  */
@@ -1402,23 +1409,35 @@ scoped_restore_current_thread::~scoped_r
       && target_has_stack
       && target_has_memory)
     restore_selected_frame (m_selected_frame_id, m_selected_frame_level);
+}
 
-  if (m_thread != NULL)
-    m_thread->decref ();
-  m_inf->decref ();
+scoped_restore_current_thread::~scoped_restore_current_thread ()
+{
+  if (!m_dont_restore)
+    {
+      try
+	{
+	  restore ();
+	}
+      catch (const gdb_exception &ex)
+	{
+	  /* We're in a dtor, there's really nothing else we can do
+	     but swallow the exception.  */
+	}
+    }
 }
 
 scoped_restore_current_thread::scoped_restore_current_thread ()
 {
-  m_thread = NULL;
-  m_inf = current_inferior ();
+  m_inf = inferior_ref::new_reference (current_inferior ());
 
   if (inferior_ptid != null_ptid)
     {
-      thread_info *tp = inferior_thread ();
+      m_thread = thread_info_ref::new_reference (inferior_thread ());
+
       struct frame_info *frame;
 
-      m_was_stopped = tp->state == THREAD_STOPPED;
+      m_was_stopped = m_thread->state == THREAD_STOPPED;
       if (m_was_stopped
 	  && target_has_registers
 	  && target_has_stack
@@ -1434,14 +1453,21 @@ scoped_restore_current_thread::scoped_re
       else
 	frame = NULL;
 
-      m_selected_frame_id = get_frame_id (frame);
-      m_selected_frame_level = frame_relative_level (frame);
+      try
+	{
+	  m_selected_frame_id = get_frame_id (frame);
+	  m_selected_frame_level = frame_relative_level (frame);
+	}
+      catch (const gdb_exception_error &ex)
+	{
+	  m_selected_frame_id = null_frame_id;
+	  m_selected_frame_level = -1;
 
-      tp->incref ();
-      m_thread = tp;
+	  /* Better let this propagate.  */
+	  if (ex.error == TARGET_CLOSE_ERROR)
+	    throw;
+	}
     }
-
-  m_inf->incref ();
 }
 
 /* See gdbthread.h.  */
@@ -1509,6 +1535,14 @@ thr_try_catch_cmd (thread_info *thr, con
 		   const qcs_flags &flags)
 {
   switch_to_thread (thr);
+
+  /* The thread header is computed before running the command since
+     the command can change the inferior, which is not permitted
+     by thread_target_id_str.  */
+  std::string thr_header =
+    string_printf (_("\nThread %s (%s):\n"), print_thread_id (thr),
+		   thread_target_id_str (thr).c_str ());
+
   try
     {
       std::string cmd_result = execute_command_to_string
@@ -1516,9 +1550,7 @@ thr_try_catch_cmd (thread_info *thr, con
       if (!flags.silent || cmd_result.length () > 0)
 	{
 	  if (!flags.quiet)
-	    printf_filtered (_("\nThread %s (%s):\n"),
-			     print_thread_id (thr),
-			     target_pid_to_str (inferior_ptid).c_str ());
+	    printf_filtered ("%s", thr_header.c_str ());
 	  printf_filtered ("%s", cmd_result.c_str ());
 	}
     }
@@ -1527,9 +1559,7 @@ thr_try_catch_cmd (thread_info *thr, con
       if (!flags.silent)
 	{
 	  if (!flags.quiet)
-	    printf_filtered (_("\nThread %s (%s):\n"),
-			     print_thread_id (thr),
-			     target_pid_to_str (inferior_ptid).c_str ());
+	    printf_filtered ("%s", thr_header.c_str ());
 	  if (flags.cont)
 	    printf_filtered ("%s\n", ex.what ());
 	  else
@@ -1645,7 +1675,7 @@ thread_apply_all_command (const char *cm
       scoped_restore_current_thread restore_thread;
 
       for (thread_info *thr : thr_list_cpy)
-	if (thread_alive (thr))
+	if (switch_to_thread_if_alive (thr))
 	  thr_try_catch_cmd (thr, cmd, from_tty, flags);
     }
 }
@@ -1802,7 +1832,7 @@ thread_apply_command (const char *tidlis
 	  continue;
 	}
 
-      if (!thread_alive (tp))
+      if (!switch_to_thread_if_alive (tp))
 	{
 	  warning (_("Thread %s has terminated."), print_thread_id (tp));
 	  continue;
@@ -1916,9 +1946,15 @@ thread_find_command (const char *arg, in
   if (tmp != 0)
     error (_("Invalid regexp (%s): %s"), tmp, arg);
 
+  /* We're going to be switching threads.  */
+  scoped_restore_current_thread restore_thread;
+
   update_thread_list ();
+
   for (thread_info *tp : all_threads ())
     {
+      switch_to_inferior_no_thread (tp->inf);
+
       if (tp->name != NULL && re_exec (tp->name))
 	{
 	  printf_filtered (_("Thread %s has name '%s'\n"),
@@ -1970,16 +2006,14 @@ show_print_thread_events (struct ui_file
 void
 thread_select (const char *tidstr, thread_info *tp)
 {
-  if (!thread_alive (tp))
+  if (!switch_to_thread_if_alive (tp))
     error (_("Thread ID %s has terminated."), tidstr);
 
-  switch_to_thread (tp);
-
   annotate_thread_changed ();
 
   /* Since the current thread may have changed, see if there is any
      exited thread we can now delete.  */
-  prune_threads ();
+  delete_exited_threads ();
 }
 
 /* Print thread and frame switch command response.  */
@@ -2024,18 +2058,39 @@ print_selected_thread_frame (struct ui_o
 }
 
 /* Update the 'threads_executing' global based on the threads we know
-   about right now.  */
+   about right now.  This is used by infrun to tell whether we should
+   pull events out of the current target.  */
 
 static void
 update_threads_executing (void)
 {
-  threads_executing = 0;
-  for (thread_info *tp : all_non_exited_threads ())
+  process_stratum_target *targ = current_inferior ()->process_target ();
+
+  if (targ == NULL)
+    return;
+
+  targ->threads_executing = false;
+
+  for (inferior *inf : all_non_exited_inferiors (targ))
     {
-      if (tp->executing)
+      if (!inf->has_execution ())
+	continue;
+
+      /* If the process has no threads, then it must be we have a
+	 process-exit event pending.  */
+      if (inf->thread_list == NULL)
+	{
+	  targ->threads_executing = true;
+	  return;
+	}
+
+      for (thread_info *tp : inf->non_exited_threads ())
 	{
-	  threads_executing = 1;
-	  break;
+	  if (tp->executing)
+	    {
+	      targ->threads_executing = true;
+	      return;
+	    }
 	}
     }
 }
@@ -2113,8 +2168,9 @@ static const struct internalvar_funcs gt
   NULL
 };
 
+void _initialize_thread ();
 void
-_initialize_thread (void)
+_initialize_thread ()
 {
   static struct cmd_list_element *thread_apply_list = NULL;
   cmd_list_element *c;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/thread-fsm.h ./gdb/thread-fsm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/thread-fsm.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/thread-fsm.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Thread command's finish-state machine, for GDB, the GNU debugger.
-   Copyright (C) 2015-2020 Free Software Foundation, Inc.
+   Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/thread-iter.c ./gdb/thread-iter.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/thread-iter.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/thread-iter.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Thread iterators and ranges for GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -58,16 +58,22 @@ all_threads_iterator::advance ()
 bool
 all_matching_threads_iterator::m_inf_matches ()
 {
-  return (m_filter_ptid == minus_one_ptid
-	  || m_filter_ptid.pid () == m_inf->pid);
+  return ((m_filter_target == nullptr
+	   || m_filter_target == m_inf->process_target ())
+	  && (m_filter_ptid == minus_one_ptid
+	      || m_filter_ptid.pid () == m_inf->pid));
 }
 
 /* See thread-iter.h.  */
 
 all_matching_threads_iterator::all_matching_threads_iterator
-  (ptid_t filter_ptid)
-  : m_filter_ptid (filter_ptid)
+  (process_stratum_target *filter_target, ptid_t filter_ptid)
+    : m_filter_target (filter_target),
+      m_filter_ptid (filter_ptid)
 {
+  gdb_assert ((filter_target == nullptr && filter_ptid == minus_one_ptid)
+	      || filter_target->stratum () == process_stratum);
+
   m_thr = nullptr;
   for (m_inf = inferior_list; m_inf != NULL; m_inf = m_inf->next)
     if (m_inf_matches ())
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/thread-iter.h ./gdb/thread-iter.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/thread-iter.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/thread-iter.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Thread iterators and ranges for GDB, the GNU debugger.
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -92,12 +92,14 @@ public:
 
   /* Creates an iterator that iterates over all threads that match
      FILTER_PTID.  */
-  explicit all_matching_threads_iterator (ptid_t filter_ptid);
+  all_matching_threads_iterator (process_stratum_target *filter_target,
+				 ptid_t filter_ptid);
 
   /* Create a one-past-end iterator.  */
   all_matching_threads_iterator ()
     : m_inf (nullptr),
       m_thr (nullptr),
+      m_filter_target (nullptr),
       m_filter_ptid (minus_one_ptid)
   {}
 
@@ -131,6 +133,7 @@ private:
   thread_info *m_thr;
 
   /* The filter.  */
+  process_stratum_target *m_filter_target;
   ptid_t m_filter_ptid;
 };
 
@@ -211,20 +214,22 @@ struct all_threads_safe_range
 struct all_matching_threads_range
 {
 public:
-  explicit all_matching_threads_range (ptid_t filter_ptid)
-    : m_filter_ptid (filter_ptid)
+  all_matching_threads_range (process_stratum_target *filter_target,
+			      ptid_t filter_ptid)
+    : m_filter_target (filter_target), m_filter_ptid (filter_ptid)
   {}
   all_matching_threads_range ()
-    : m_filter_ptid (minus_one_ptid)
+    : m_filter_target (nullptr), m_filter_ptid (minus_one_ptid)
   {}
 
   all_matching_threads_iterator begin () const
-  { return all_matching_threads_iterator (m_filter_ptid); }
+  { return all_matching_threads_iterator (m_filter_target, m_filter_ptid); }
   all_matching_threads_iterator end () const
   { return all_matching_threads_iterator (); }
 
 private:
   /* The filter.  */
+  process_stratum_target *m_filter_target;
   ptid_t m_filter_ptid;
 };
 
@@ -236,20 +241,22 @@ private:
 class all_non_exited_threads_range
 {
 public:
-  explicit all_non_exited_threads_range (ptid_t filter_ptid)
-    : m_filter_ptid (filter_ptid)
+  all_non_exited_threads_range (process_stratum_target *filter_target,
+				ptid_t filter_ptid)
+    : m_filter_target (filter_target), m_filter_ptid (filter_ptid)
   {}
 
   all_non_exited_threads_range ()
-    : m_filter_ptid (minus_one_ptid)
+    : m_filter_target (nullptr), m_filter_ptid (minus_one_ptid)
   {}
 
   all_non_exited_threads_iterator begin () const
-  { return all_non_exited_threads_iterator (m_filter_ptid); }
+  { return all_non_exited_threads_iterator (m_filter_target, m_filter_ptid); }
   all_non_exited_threads_iterator end () const
   { return all_non_exited_threads_iterator (); }
 
 private:
+  process_stratum_target *m_filter_target;
   ptid_t m_filter_ptid;
 };
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tic6x-linux-tdep.c ./gdb/tic6x-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tic6x-linux-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tic6x-linux-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* GNU/Linux on  TI C6x target support.
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
    Contributed by Yao Qi <yao@codesourcery.com>
 
    This file is part of GDB.
@@ -204,8 +204,9 @@ tic6x_uclinux_init_abi (struct gdbarch_i
 				&tic6x_linux_rt_sigreturn_tramp_frame);
 }
 
+void _initialize_tic6x_linux_tdep ();
 void
-_initialize_tic6x_linux_tdep (void)
+_initialize_tic6x_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_tic6x, 0, GDB_OSABI_LINUX,
 			  tic6x_uclinux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tic6x-tdep.c ./gdb/tic6x-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tic6x-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tic6x-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target dependent code for GDB on TI C6x systems.
 
-   Copyright (C) 2010-2020 Free Software Foundation, Inc.
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
    Contributed by Andrew Jenner <andrew@codesourcery.com>
    Contributed by Yao Qi <yao@codesourcery.com>
 
@@ -24,7 +24,7 @@
 #include "frame-unwind.h"
 #include "frame-base.h"
 #include "trad-frame.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "symtab.h"
 #include "inferior.h"
 #include "gdbtypes.h"
@@ -784,7 +784,7 @@ tic6x_return_value (struct gdbarch *gdba
       if (type != NULL)
 	{
 	  type = check_typedef (type);
-	  if (language_pass_by_reference (type))
+	  if (!(language_pass_by_reference (type).trivially_copyable))
 	    return RETURN_VALUE_STRUCT_CONVENTION;
 	}
     }
@@ -808,7 +808,7 @@ static int
 tic6x_arg_type_alignment (struct type *type)
 {
   int len = TYPE_LENGTH (check_typedef (type));
-  enum type_code typecode = TYPE_CODE (check_typedef (type));
+  enum type_code typecode = check_typedef (type)->code ();
 
   if (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)
     {
@@ -881,16 +881,16 @@ tic6x_push_dummy_call (struct gdbarch *g
 
   /* Determine the type of this function.  */
   func_type = check_typedef (func_type);
-  if (TYPE_CODE (func_type) == TYPE_CODE_PTR)
+  if (func_type->code () == TYPE_CODE_PTR)
     func_type = check_typedef (TYPE_TARGET_TYPE (func_type));
 
-  gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC
-	      || TYPE_CODE (func_type) == TYPE_CODE_METHOD);
+  gdb_assert (func_type->code () == TYPE_CODE_FUNC
+	      || func_type->code () == TYPE_CODE_METHOD);
 
   /* For a variadic C function, the last explicitly declared argument and all
      remaining arguments are passed on the stack.  */
   if (TYPE_VARARGS (func_type))
-    first_arg_on_stack = TYPE_NFIELDS (func_type) - 1;
+    first_arg_on_stack = func_type->num_fields () - 1;
 
   /* Now make space on the stack for the args.  */
   for (argnum = 0; argnum < nargs; argnum++)
@@ -915,7 +915,7 @@ tic6x_push_dummy_call (struct gdbarch *g
       struct value *arg = args[argnum];
       struct type *arg_type = check_typedef (value_type (arg));
       int len = TYPE_LENGTH (arg_type);
-      enum type_code typecode = TYPE_CODE (arg_type);
+      enum type_code typecode = arg_type->code ();
 
       val = value_contents (arg);
 
@@ -1301,8 +1301,9 @@ tic6x_gdbarch_init (struct gdbarch_info
   return gdbarch;
 }
 
+void _initialize_tic6x_tdep ();
 void
-_initialize_tic6x_tdep (void)
+_initialize_tic6x_tdep ()
 {
   register_gdbarch_init (bfd_arch_tic6x, tic6x_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tic6x-tdep.h ./gdb/tic6x-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tic6x-tdep.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tic6x-tdep.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* GNU/Linux on  TI C6x target support.
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
    Contributed by Yao Qi <yao@codesourcery.com>
 
    This file is part of GDB.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tid-parse.c ./gdb/tid-parse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tid-parse.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tid-parse.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TID parsing for GDB, the GNU debugger.
 
-   Copyright (C) 2015-2020 Free Software Foundation, Inc.
+   Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tid-parse.h ./gdb/tid-parse.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tid-parse.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tid-parse.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TID parsing for GDB, the GNU debugger.
 
-   Copyright (C) 2015-2020 Free Software Foundation, Inc.
+   Copyright (C) 2015-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tilegx-linux-nat.c ./gdb/tilegx-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tilegx-linux-nat.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tilegx-linux-nat.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux TILE-Gx.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -164,8 +164,9 @@ tilegx_linux_nat_target::store_registers
     perror_with_name (_("Couldn't write registers"));
 }
 
+void _initialize_tile_linux_nat ();
 void
-_initialize_tile_linux_nat (void)
+_initialize_tile_linux_nat ()
 {
   linux_target = &the_tilegx_linux_nat_target;
   add_inf_child_target (&the_tilegx_linux_nat_target);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tilegx-linux-tdep.c ./gdb/tilegx-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tilegx-linux-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tilegx-linux-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux on Tilera TILE-Gx processors.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -135,8 +135,9 @@ tilegx_linux_init_abi (struct gdbarch_in
   set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver);
 }
 
+void _initialize_tilegx_linux_tdep ();
 void
-_initialize_tilegx_linux_tdep (void)
+_initialize_tilegx_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_tilegx, bfd_mach_tilegx, GDB_OSABI_LINUX,
 			  tilegx_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tilegx-tdep.c ./gdb/tilegx-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tilegx-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tilegx-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Tilera TILE-Gx processor.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,7 @@
 #include "frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "trad-frame.h"
 #include "symtab.h"
 #include "gdbtypes.h"
@@ -188,9 +188,9 @@ tilegx_dwarf2_reg_to_regnum (struct gdba
 static int
 tilegx_type_is_scalar (struct type *t)
 {
-  return (TYPE_CODE(t) != TYPE_CODE_STRUCT
-	  && TYPE_CODE(t) != TYPE_CODE_UNION
-	  && TYPE_CODE(t) != TYPE_CODE_ARRAY);
+  return (t->code () != TYPE_CODE_STRUCT
+	  && t->code () != TYPE_CODE_UNION
+	  && t->code () != TYPE_CODE_ARRAY);
 }
 
 /* Returns non-zero if the given struct type will be returned using
@@ -1032,8 +1032,9 @@ tilegx_gdbarch_init (struct gdbarch_info
   return gdbarch;
 }
 
+void _initialize_tilegx_tdep ();
 void
-_initialize_tilegx_tdep (void)
+_initialize_tilegx_tdep ()
 {
   register_gdbarch_init (bfd_arch_tilegx, tilegx_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tilegx-tdep.h ./gdb/tilegx-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tilegx-tdep.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tilegx-tdep.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Tilera TILE-Gx processor.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/top.c ./gdb/top.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/top.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/top.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Top level stuff for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -42,7 +42,7 @@
 #include "gdbsupport/version.h"
 #include "serial.h"
 #include "main.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "gdbthread.h"
 #include "extension.h"
 #include "interps.h"
@@ -51,9 +51,11 @@
 #include "filenames.h"
 #include "frame.h"
 #include "gdbsupport/buffer.h"
-#include "gdb_select.h"
+#include "gdbsupport/gdb_select.h"
 #include "gdbsupport/scope-exit.h"
 #include "gdbarch.h"
+#include "gdbsupport/pathstuff.h"
+#include "cli/cli-style.h"
 
 /* readline include files.  */
 #include "readline/readline.h"
@@ -82,6 +84,8 @@
 
 extern void initialize_all_files (void);
 
+static bool history_filename_empty (void);
+
 #define PROMPT(X) the_prompts.prompt_stack[the_prompts.top + X].prompt
 #define PREFIX(X) the_prompts.prompt_stack[the_prompts.top + X].prefix
 #define SUFFIX(X) the_prompts.prompt_stack[the_prompts.top + X].suffix
@@ -170,7 +174,7 @@ static const char *previous_repeat_argum
    whatever) can issue its own commands and also send along commands
    from the user, and have the user not notice that the user interface
    is issuing commands too.  */
-int server_command;
+bool server_command;
 
 /* Timeout limit for response from target.  */
 
@@ -575,6 +579,8 @@ execute_command (const char *p, int from
     {
       const char *cmd = p;
       const char *arg;
+      std::string default_args;
+      std::string default_args_and_arg;
       int was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
 
       line = p;
@@ -582,15 +588,26 @@ execute_command (const char *p, int from
       /* If trace-commands is set then this will print this command.  */
       print_command_trace ("%s", p);
 
-      c = lookup_cmd (&cmd, cmdlist, "", 0, 1);
+      c = lookup_cmd (&cmd, cmdlist, "", &default_args, 0, 1);
       p = cmd;
 
       scoped_restore save_repeat_args
 	= make_scoped_restore (&repeat_arguments, nullptr);
       const char *args_pointer = p;
 
-      /* Pass null arg rather than an empty one.  */
-      arg = *p ? p : 0;
+      if (!default_args.empty ())
+	{
+	  if (*p != '\0')
+	    default_args_and_arg = default_args + ' ' + p;
+	  else
+	    default_args_and_arg = default_args;
+	  arg = default_args_and_arg.c_str ();
+	}
+      else
+	{
+	  /* Pass null arg rather than an empty one.  */
+	  arg = *p == '\0' ? nullptr : p;
+	}
 
       /* FIXME: cagney/2002-02-02: The c->type test is pretty dodgy
          while the is_complete_command(cfunc) test is just plain
@@ -882,13 +899,22 @@ static bool command_editing_p;
 
 /* static */ bool history_expansion_p;
 
+/* Should we write out the command history on exit?  In order to write out
+   the history both this flag must be true, and the history_filename
+   variable must be set to something sensible.  */
 static bool write_history_p;
+
+/* Implement 'show history save'.  */
 static void
 show_write_history_p (struct ui_file *file, int from_tty,
 		      struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Saving of the history record on exit is %s.\n"),
-		    value);
+  if (!write_history_p || !history_filename_empty ())
+    fprintf_filtered (file, _("Saving of the history record on exit is %s.\n"),
+		      value);
+  else
+    fprintf_filtered (file, _("Saving of the history is disabled due to "
+			      "the value of 'history filename'.\n"));
 }
 
 /* The variable associated with the "set/show history size"
@@ -917,14 +943,30 @@ show_history_remove_duplicates (struct u
 		    value);
 }
 
+/* The name of the file in which GDB history will be written.  If this is
+   set to NULL, of the empty string then history will not be written.  */
 static char *history_filename;
+
+/* Return true if the history_filename is either NULL or the empty string,
+   indicating that we should not try to read, nor write out the history.  */
+static bool
+history_filename_empty (void)
+{
+  return (history_filename == nullptr || *history_filename == '\0');
+}
+
+/* Implement 'show history filename'.  */
 static void
 show_history_filename (struct ui_file *file, int from_tty,
 		       struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("The filename in which to record "
-			    "the command history is \"%s\".\n"),
-		    value);
+  if (!history_filename_empty ())
+    fprintf_filtered (file, _("The filename in which to record "
+			      "the command history is \"%ps\".\n"),
+		      styled_string (file_name_style.style (), value));
+  else
+    fprintf_filtered (file, _("There is no filename currently set for "
+			      "recording the command history in.\n"));
 }
 
 /* This is like readline(), but it has some gdb-specific behavior.
@@ -1191,8 +1233,10 @@ gdb_safe_append_history (void)
   saved_errno = errno;
   if (ret < 0 && saved_errno != ENOENT)
     {
-      warning (_("Could not rename %s to %s: %s"),
-	       history_filename, local_history_filename.c_str (),
+      warning (_("Could not rename %ps to %ps: %s"),
+	       styled_string (file_name_style.style (), history_filename),
+	       styled_string (file_name_style.style (),
+			      local_history_filename.c_str ()),
 	       safe_strerror (saved_errno));
     }
   else
@@ -1365,7 +1409,7 @@ print_gdb_version (struct ui_file *strea
   /* Second line is a copyright notice.  */
 
   fprintf_filtered (stream,
-		    "Copyright (C) 2020 Free Software Foundation, Inc.\n");
+		    "Copyright (C) 2021 Free Software Foundation, Inc.\n");
 
   /* Following the copyright is a brief statement that the program is
      free software, that users are free to copy and change it on
@@ -1424,10 +1468,12 @@ print_gdb_configuration (struct ui_file
 This GDB was configured as follows:\n\
    configure --host=%s --target=%s\n\
 "), host_name, target_name);
+
   fprintf_filtered (stream, _("\
              --with-auto-load-dir=%s\n\
              --with-auto-load-safe-path=%s\n\
 "), AUTO_LOAD_DIR, AUTO_LOAD_SAFE_PATH);
+
 #if HAVE_LIBEXPAT
   fprintf_filtered (stream, _("\
              --with-expat\n\
@@ -1437,19 +1483,23 @@ This GDB was configured as follows:\n\
              --without-expat\n\
 "));
 #endif
+
   if (GDB_DATADIR[0])
     fprintf_filtered (stream, _("\
              --with-gdb-datadir=%s%s\n\
 "), GDB_DATADIR, GDB_DATADIR_RELOCATABLE ? " (relocatable)" : "");
+
 #ifdef ICONV_BIN
   fprintf_filtered (stream, _("\
              --with-iconv-bin=%s%s\n\
 "), ICONV_BIN, ICONV_BIN_RELOCATABLE ? " (relocatable)" : "");
 #endif
+
   if (JIT_READER_DIR[0])
     fprintf_filtered (stream, _("\
              --with-jit-reader-dir=%s%s\n\
 "), JIT_READER_DIR, JIT_READER_DIR_RELOCATABLE ? " (relocatable)" : "");
+
 #if HAVE_LIBUNWIND_IA64_H
   fprintf_filtered (stream, _("\
              --with-libunwind-ia64\n\
@@ -1459,6 +1509,7 @@ This GDB was configured as follows:\n\
              --without-libunwind-ia64\n\
 "));
 #endif
+
 #if HAVE_LIBLZMA
   fprintf_filtered (stream, _("\
              --with-lzma\n\
@@ -1468,39 +1519,42 @@ This GDB was configured as follows:\n\
              --without-lzma\n\
 "));
 #endif
+
 #if HAVE_LIBBABELTRACE
-    fprintf_filtered (stream, _("\
+  fprintf_filtered (stream, _("\
              --with-babeltrace\n\
 "));
 #else
-    fprintf_filtered (stream, _("\
-             --without-babeltrace\n		\
+  fprintf_filtered (stream, _("\
+             --without-babeltrace\n\
 "));
 #endif
+
 #if HAVE_LIBIPT
-    fprintf_filtered (stream, _("\
+  fprintf_filtered (stream, _("\
              --with-intel-pt\n\
 "));
 #else
-    fprintf_filtered (stream, _("\
+  fprintf_filtered (stream, _("\
              --without-intel-pt\n\
 "));
 #endif
+
 #if HAVE_LIBMPFR
-    fprintf_filtered (stream, _("\
+  fprintf_filtered (stream, _("\
              --with-mpfr\n\
 "));
 #else
-    fprintf_filtered (stream, _("\
+  fprintf_filtered (stream, _("\
              --without-mpfr\n\
 "));
 #endif
 #if HAVE_LIBXXHASH
-    fprintf_filtered (stream, _("\
+  fprintf_filtered (stream, _("\
              --with-xxhash\n\
 "));
 #else
-    fprintf_filtered (stream, _("\
+  fprintf_filtered (stream, _("\
              --without-xxhash\n\
 "));
 #endif
@@ -1513,6 +1567,26 @@ This GDB was configured as follows:\n\
              --without-python\n\
 "));
 #endif
+#ifdef WITH_PYTHON_LIBDIR
+  fprintf_filtered (stream, _("\
+             --with-python-libdir=%s%s\n\
+"), WITH_PYTHON_LIBDIR, PYTHON_LIBDIR_RELOCATABLE ? " (relocatable)" : "");
+#else
+  fprintf_filtered (stream, _("\
+             --without-python-libdir\n\
+"));
+#endif
+
+#if HAVE_LIBDEBUGINFOD
+  fprintf_filtered (stream, _("\
+             --with-debuginfod\n\
+"));
+#else
+   fprintf_filtered (stream, _("\
+             --without-debuginfod\n\
+"));
+#endif
+
 #if HAVE_GUILE
   fprintf_filtered (stream, _("\
              --with-guile\n\
@@ -1522,6 +1596,7 @@ This GDB was configured as follows:\n\
              --without-guile\n\
 "));
 #endif
+
 #if HAVE_SOURCE_HIGHLIGHT
   fprintf_filtered (stream, _("\
              --enable-source-highlight\n\
@@ -1531,30 +1606,36 @@ This GDB was configured as follows:\n\
              --disable-source-highlight\n\
 "));
 #endif
+
 #ifdef RELOC_SRCDIR
   fprintf_filtered (stream, _("\
              --with-relocated-sources=%s\n\
 "), RELOC_SRCDIR);
 #endif
+
   if (DEBUGDIR[0])
     fprintf_filtered (stream, _("\
              --with-separate-debug-dir=%s%s\n\
 "), DEBUGDIR, DEBUGDIR_RELOCATABLE ? " (relocatable)" : "");
+
   if (TARGET_SYSTEM_ROOT[0])
     fprintf_filtered (stream, _("\
              --with-sysroot=%s%s\n\
 "), TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_RELOCATABLE ? " (relocatable)" : "");
+
   if (SYSTEM_GDBINIT[0])
     fprintf_filtered (stream, _("\
              --with-system-gdbinit=%s%s\n\
 "), SYSTEM_GDBINIT, SYSTEM_GDBINIT_RELOCATABLE ? " (relocatable)" : "");
+
   if (SYSTEM_GDBINIT_DIR[0])
     fprintf_filtered (stream, _("\
              --with-system-gdbinit-dir=%s%s\n\
 "), SYSTEM_GDBINIT_DIR, SYSTEM_GDBINIT_DIR_RELOCATABLE ? " (relocatable)" : "");
-    /* We assume "relocatable" will be printed at least once, thus we always
-       print this text.  It's a reasonably safe assumption for now.  */
-    fprintf_filtered (stream, _("\n\
+
+  /* We assume "relocatable" will be printed at least once, thus we always
+     print this text.  It's a reasonably safe assumption for now.  */
+  fprintf_filtered (stream, _("\n\
 (\"Relocatable\" means the directory can be moved with the GDB installation\n\
 tree, and GDB will still find it.)\n\
 "));
@@ -1585,21 +1666,14 @@ set_prompt (const char *s)
 }
 
 
-struct qt_args
-{
-  int from_tty;
-};
-
-/* Callback for iterate_over_inferiors.  Kills or detaches the given
-   inferior, depending on how we originally gained control of it.  */
+/* Kills or detaches the given inferior, depending on how we originally
+   gained control of it.  */
 
-static int
-kill_or_detach (struct inferior *inf, void *args)
+static void
+kill_or_detach (inferior *inf, int from_tty)
 {
-  struct qt_args *qt = (struct qt_args *) args;
-
   if (inf->pid == 0)
-    return 0;
+    return;
 
   thread_info *thread = any_thread_of_inferior (inf);
   if (thread != NULL)
@@ -1610,37 +1684,30 @@ kill_or_detach (struct inferior *inf, vo
       if (target_has_execution)
 	{
 	  if (inf->attach_flag)
-	    target_detach (inf, qt->from_tty);
+	    target_detach (inf, from_tty);
 	  else
 	    target_kill ();
 	}
     }
-
-  return 0;
 }
 
-/* Callback for iterate_over_inferiors.  Prints info about what GDB
-   will do to each inferior on a "quit".  ARG points to a struct
-   ui_out where output is to be collected.  */
+/* Prints info about what GDB will do to inferior INF on a "quit".  OUT is
+   where to collect the output.  */
 
-static int
-print_inferior_quit_action (struct inferior *inf, void *arg)
+static void
+print_inferior_quit_action (inferior *inf, ui_file *out)
 {
-  struct ui_file *stb = (struct ui_file *) arg;
-
   if (inf->pid == 0)
-    return 0;
+    return;
 
   if (inf->attach_flag)
-    fprintf_filtered (stb,
+    fprintf_filtered (out,
 		      _("\tInferior %d [%s] will be detached.\n"), inf->num,
 		      target_pid_to_str (ptid_t (inf->pid)).c_str ());
   else
-    fprintf_filtered (stb,
+    fprintf_filtered (out,
 		      _("\tInferior %d [%s] will be killed.\n"), inf->num,
 		      target_pid_to_str (ptid_t (inf->pid)).c_str ());
-
-  return 0;
 }
 
 /* If necessary, make the user confirm that we should quit.  Return
@@ -1657,7 +1724,10 @@ quit_confirm (void)
   string_file stb;
 
   stb.puts (_("A debugging session is active.\n\n"));
-  iterate_over_inferiors (print_inferior_quit_action, &stb);
+
+  for (inferior *inf : all_inferiors ())
+    print_inferior_quit_action (inf, &stb);
+
   stb.puts (_("\nQuit anyway? "));
 
   return query ("%s", stb.c_str ());
@@ -1690,7 +1760,6 @@ void
 quit_force (int *exit_arg, int from_tty)
 {
   int exit_code = 0;
-  struct qt_args qt;
 
   undo_terminal_modifications_before_exit ();
 
@@ -1701,15 +1770,14 @@ quit_force (int *exit_arg, int from_tty)
   else if (return_child_result)
     exit_code = return_child_result_value;
 
-  qt.from_tty = from_tty;
-
   /* We want to handle any quit errors and exit regardless.  */
 
   /* Get out of tfind mode, and kill or detach all inferiors.  */
   try
     {
       disconnect_tracing ();
-      iterate_over_inferiors (kill_or_detach, &qt);
+      for (inferior *inf : all_inferiors ())
+	kill_or_detach (inf, from_tty);
     }
   catch (const gdb_exception &ex)
     {
@@ -1718,13 +1786,17 @@ quit_force (int *exit_arg, int from_tty)
 
   /* Give all pushed targets a chance to do minimal cleanup, and pop
      them all out.  */
-  try
+  for (inferior *inf : all_inferiors ())
     {
-      pop_all_targets ();
-    }
-  catch (const gdb_exception &ex)
-    {
-      exception_print (gdb_stderr, ex);
+      switch_to_inferior_no_thread (inf);
+      try
+	{
+	  pop_all_targets ();
+	}
+      catch (const gdb_exception &ex)
+	{
+	  exception_print (gdb_stderr, ex);
+	}
     }
 
   /* Save the history information if it is appropriate to do so.  */
@@ -1732,12 +1804,11 @@ quit_force (int *exit_arg, int from_tty)
     {
       if (write_history_p && history_filename)
 	{
-	  struct ui *ui;
 	  int save = 0;
 
 	  /* History is currently shared between all UIs.  If there's
 	     any UI with a terminal, save history.  */
-	  ALL_UIS (ui)
+	  for (ui *ui : all_uis ())
 	    {
 	      if (input_interactive_p (ui))
 		{
@@ -1899,20 +1970,6 @@ set_history_size_command (const char *ar
   set_readline_history_size (history_size_setshow_var);
 }
 
-void
-set_history (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"set history\" must be followed "
-		       "by the name of a history subcommand.\n"));
-  help_list (sethistlist, "set history ", all_commands, gdb_stdout);
-}
-
-void
-show_history (const char *args, int from_tty)
-{
-  cmd_show_list (showhistlist, from_tty, "");
-}
-
 bool info_verbose = false;	/* Default verbose msgs off.  */
 
 /* Called by do_set_command.  An elaborate joke.  */
@@ -1922,7 +1979,7 @@ set_verbose (const char *args, int from_
   const char *cmdname = "verbose";
   struct cmd_list_element *showcmd;
 
-  showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, 1);
+  showcmd = lookup_cmd_1 (&cmdname, showlist, NULL, NULL, 1);
   gdb_assert (showcmd != NULL && showcmd != CMD_LIST_AMBIGUOUS);
 
   if (c->doc && c->doc_allocated)
@@ -1994,23 +2051,26 @@ init_history (void)
   set_readline_history_size (history_size_setshow_var);
 
   tmpenv = getenv ("GDBHISTFILE");
-  if (tmpenv)
+  if (tmpenv != nullptr)
     history_filename = xstrdup (tmpenv);
-  else if (!history_filename)
+  else if (history_filename == nullptr)
     {
       /* We include the current directory so that if the user changes
          directories the file written will be the same as the one
          that was read.  */
 #ifdef __MSDOS__
       /* No leading dots in file names are allowed on MSDOS.  */
-      history_filename = concat (current_directory, "/_gdb_history",
-				 (char *)NULL);
+      const char *fname = "_gdb_history";
 #else
-      history_filename = concat (current_directory, "/.gdb_history",
-				 (char *)NULL);
+      const char *fname = ".gdb_history";
 #endif
+
+      gdb::unique_xmalloc_ptr<char> temp (gdb_abspath (fname));
+      history_filename = temp.release ();
     }
-  read_history (history_filename);
+
+  if (!history_filename_empty ())
+    read_history (history_filename);
 }
 
 static void
@@ -2074,10 +2134,13 @@ static void
 show_gdb_datadir (struct ui_file *file, int from_tty,
 		  struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("GDB's data directory is \"%s\".\n"),
-		    gdb_datadir.c_str ());
+  fprintf_filtered (file, _("GDB's data directory is \"%ps\".\n"),
+		    styled_string (file_name_style.style (),
+				   gdb_datadir.c_str ()));
 }
 
+/* Implement 'set history filename'.  */
+
 static void
 set_history_filename (const char *args,
 		      int from_tty, struct cmd_list_element *c)
@@ -2085,9 +2148,13 @@ set_history_filename (const char *args,
   /* We include the current directory so that if the user changes
      directories the file written will be the same as the one
      that was read.  */
-  if (!IS_ABSOLUTE_PATH (history_filename))
-    history_filename = reconcat (history_filename, current_directory, "/", 
-				 history_filename, (char *) NULL);
+  if (!history_filename_empty () && !IS_ABSOLUTE_PATH (history_filename))
+    {
+      gdb::unique_xmalloc_ptr<char> temp (gdb_abspath (history_filename));
+
+      xfree (history_filename);
+      history_filename = temp.release ();
+    }
 }
 
 static void
@@ -2188,7 +2255,7 @@ By default this option is set to 0."),
 			   show_history_remove_duplicates,
 			   &sethistlist, &showhistlist);
 
-  add_setshow_filename_cmd ("filename", no_class, &history_filename, _("\
+  add_setshow_optional_filename_cmd ("filename", no_class, &history_filename, _("\
 Set the filename in which to record the command history."), _("\
 Show the filename in which to record the command history."), _("\
 (the list of previous commands of which a record is kept)."),
@@ -2270,7 +2337,6 @@ gdb_init (char *argv0)
 #endif
 
   init_cmd_lists ();	    /* This needs to be done first.  */
-  initialize_targets ();    /* Setup target_terminal macros for utils.c.  */
 
   init_page_info ();
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/top.h ./gdb/top.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/top.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/top.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Top level stuff for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,8 @@
 #define TOP_H
 
 #include "gdbsupport/buffer.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
+#include "gdbsupport/next-iterator.h"
 #include "value.h"
 
 struct tl_interp_info;
@@ -206,9 +207,12 @@ public:
 #define SWITCH_THRU_ALL_UIS()		\
   for (switch_thru_all_uis stau_state; !stau_state.done (); stau_state.next ())
 
-/* Traverse over all UIs.  */
-#define ALL_UIS(UI)				\
-  for (UI = ui_list; UI; UI = UI->next)		\
+/* An adapter that can be used to traverse over all UIs.  */
+static inline
+next_adapter<ui> all_uis ()
+{
+  return next_adapter<ui> (ui_list);
+}
 
 /* Register the UI's input file descriptor in the event loop.  */
 extern void ui_register_input_event_handler (struct ui *ui);
@@ -281,17 +285,13 @@ extern void gdb_init (char *);
 extern int source_line_number;
 extern std::string source_file_name;
 extern bool history_expansion_p;
-extern int server_command;
+extern bool server_command;
 extern char *lim_at_start;
 
 extern void gdb_add_history (const char *);
 
 extern void show_commands (const char *args, int from_tty);
 
-extern void set_history (const char *, int);
-
-extern void show_history (const char *, int);
-
 extern void set_verbose (const char *, int, struct cmd_list_element *);
 
 extern char *handle_line_of_input (struct buffer *cmd_line_buffer,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracectf.c ./gdb/tracectf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracectf.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tracectf.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* CTF format support.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
    Contributed by Hui Zhu <hui_zhu@mentor.com>
    Contributed by Yao Qi <yao@codesourcery.com>
 
@@ -1168,8 +1168,9 @@ ctf_target_open (const char *dirname, in
   push_target (&ctf_ops);
 
   inferior_appeared (current_inferior (), CTF_PID);
-  inferior_ptid = ptid_t (CTF_PID);
-  add_thread_silent (inferior_ptid);
+
+  thread_info *thr = add_thread_silent (&ctf_ops, ptid_t (CTF_PID));
+  switch_to_thread (thr);
 
   merge_uploaded_trace_state_variables (&uploaded_tsvs);
   merge_uploaded_tracepoints (&uploaded_tps);
@@ -1187,7 +1188,7 @@ ctf_target::close ()
   xfree (trace_dirname);
   trace_dirname = NULL;
 
-  inferior_ptid = null_ptid;	/* Avoid confusion from thread stuff.  */
+  switch_to_no_thread ();	/* Avoid confusion from thread stuff.  */
   exit_inferior_silent (current_inferior ());
 
   trace_reset_local_state ();
@@ -1721,8 +1722,9 @@ ctf_target::traceframe_info ()
 
 /* module initialization */
 
+void _initialize_ctf ();
 void
-_initialize_ctf (void)
+_initialize_ctf ()
 {
 #if HAVE_LIBBABELTRACE
   add_target (ctf_target_info, ctf_target_open, filename_completer);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracectf.h ./gdb/tracectf.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracectf.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tracectf.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* CTF format support.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracefile.c ./gdb/tracefile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracefile.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tracefile.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Trace file support in GDB.
 
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -471,8 +471,9 @@ tracefile_target::get_trace_status (stru
   return -1;
 }
 
+void _initialize_tracefile ();
 void
-_initialize_tracefile (void)
+_initialize_tracefile ()
 {
   add_com ("tsave", class_trace, tsave_command, _("\
 Save the trace data to a file.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracefile.h ./gdb/tracefile.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracefile.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tracefile.h	2021-05-21 01:57:25.000000000 +0000
@@ -127,7 +127,7 @@ public:
   bool has_memory () override;
   bool has_stack () override;
   bool has_registers () override;
-  bool has_execution (ptid_t) override { return false; }
+  bool has_execution (inferior *inf) override { return false; }
   bool thread_alive (ptid_t ptid) override;
 };
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracefile-tfile.c ./gdb/tracefile-tfile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracefile-tfile.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tracefile-tfile.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Trace file TFILE format support in GDB.
 
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -32,6 +32,7 @@
 #include "xml-tdesc.h"
 #include "target-descriptions.h"
 #include "gdbsupport/buffer.h"
+#include "gdbsupport/pathstuff.h"
 #include <algorithm>
 
 #ifndef O_LARGEFILE
@@ -470,8 +471,7 @@ tfile_target_open (const char *arg, int
 
   gdb::unique_xmalloc_ptr<char> filename (tilde_expand (arg));
   if (!IS_ABSOLUTE_PATH (filename.get ()))
-    filename.reset (concat (current_directory, "/", filename.get (),
-			    (char *) NULL));
+    filename = gdb_abspath (filename.get ());
 
   flags = O_BINARY | O_LARGEFILE;
   flags |= O_RDONLY;
@@ -556,8 +556,9 @@ tfile_target_open (const char *arg, int
     }
 
   inferior_appeared (current_inferior (), TFILE_PID);
-  inferior_ptid = ptid_t (TFILE_PID);
-  add_thread_silent (inferior_ptid);
+
+  thread_info *thr = add_thread_silent (&tfile_ops, ptid_t (TFILE_PID));
+  switch_to_thread (thr);
 
   if (ts->traceframe_count <= 0)
     warning (_("No traceframes present in this file."));
@@ -616,10 +617,9 @@ tfile_interp_line (char *line, struct up
 void
 tfile_target::close ()
 {
-  if (trace_fd < 0)
-    return;
+  gdb_assert (trace_fd != -1);
 
-  inferior_ptid = null_ptid;	/* Avoid confusion from thread stuff.  */
+  switch_to_no_thread ();	/* Avoid confusion from thread stuff.  */
   exit_inferior_silent (current_inferior ());
 
   ::close (trace_fd);
@@ -1132,8 +1132,9 @@ tfile_append_tdesc_line (const char *lin
   buffer_grow_str (&trace_tdesc, "\n");
 }
 
+void _initialize_tracefile_tfile ();
 void
-_initialize_tracefile_tfile (void)
+_initialize_tracefile_tfile ()
 {
   add_target (tfile_target_info, tfile_target_open, filename_completer);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracepoint.c ./gdb/tracepoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracepoint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tracepoint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Tracing functionality for remote targets in custom GDB protocol
 
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -651,7 +651,7 @@ validate_actionline (const char *line, s
   if (*p == '#')		/* comment line */
     return;
 
-  c = lookup_cmd (&p, cmdlist, "", -1, 1);
+  c = lookup_cmd (&p, cmdlist, "", NULL, -1, 1);
   if (c == 0)
     error (_("`%s' is not a tracepoint action, or is ambiguous."), p);
 
@@ -942,7 +942,7 @@ collection_list::collect_symbol (struct
 	}
       /* A struct may be a C++ class with static fields, go to general
 	 expression handling.  */
-      if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT)
+      if (SYMBOL_TYPE (sym)->code () == TYPE_CODE_STRUCT)
 	treat_as_expr = 1;
       else
 	add_memrange (gdbarch, memrange_absolute, offset, len, scope);
@@ -954,7 +954,7 @@ collection_list::collect_symbol (struct
       add_local_register (gdbarch, reg, scope);
       /* Check for doubles stored in two registers.  */
       /* FIXME: how about larger types stored in 3 or more regs?  */
-      if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_FLT &&
+      if (SYMBOL_TYPE (sym)->code () == TYPE_CODE_FLT &&
 	  len > register_size (gdbarch, reg))
 	add_local_register (gdbarch, reg + 1, scope);
       break;
@@ -1303,7 +1303,7 @@ encode_actions_1 (struct command_line *a
       action_exp = action->line;
       action_exp = skip_spaces (action_exp);
 
-      cmd = lookup_cmd (&action_exp, cmdlist, "", -1, 1);
+      cmd = lookup_cmd (&action_exp, cmdlist, "", NULL, -1, 1);
       if (cmd == 0)
 	error (_("Bad action list item: %s"), action_exp);
 
@@ -2673,7 +2673,7 @@ trace_dump_actions (struct command_line
       if (*action_exp == '#')	/* comment line */
 	continue;
 
-      cmd = lookup_cmd (&action_exp, cmdlist, "", -1, 1);
+      cmd = lookup_cmd (&action_exp, cmdlist, "", NULL, -1, 1);
       if (cmd == 0)
 	error (_("Bad action list item: %s"), action_exp);
 
@@ -3980,8 +3980,9 @@ static const struct internalvar_funcs sd
 cmd_list_element *while_stepping_cmd_element = nullptr;
 
 /* module initialization */
+void _initialize_tracepoint ();
 void
-_initialize_tracepoint (void)
+_initialize_tracepoint ()
 {
   struct cmd_list_element *c;
 
@@ -4097,8 +4098,8 @@ one or more \"collect\" commands, to spe
 while single-stepping.\n\n\
 Note: this command can only be used in a tracepoint \"actions\" list."));
 
-  add_com_alias ("ws", "while-stepping", class_alias, 0);
-  add_com_alias ("stepping", "while-stepping", class_alias, 0);
+  add_com_alias ("ws", "while-stepping", class_trace, 0);
+  add_com_alias ("stepping", "while-stepping", class_trace, 0);
 
   add_com ("collect", class_trace, collect_pseudocommand, _("\
 Specify one or more data items to be collected at a tracepoint.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracepoint.h ./gdb/tracepoint.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tracepoint.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tracepoint.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Data structures associated with tracepoints in GDB.
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/trad-frame.c ./gdb/trad-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/trad-frame.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/trad-frame.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Traditional frame unwind support, for GDB the GNU Debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/trad-frame.h ./gdb/trad-frame.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/trad-frame.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/trad-frame.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Traditional frame unwind support, for GDB the GNU Debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tramp-frame.c ./gdb/tramp-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tramp-frame.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tramp-frame.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Signal trampoline unwinder, for GDB the GNU Debugger.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tramp-frame.h ./gdb/tramp-frame.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tramp-frame.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tramp-frame.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Signal trampoline unwinder.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/transform.m4 ./gdb/transform.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/transform.m4	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/transform.m4	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui.c ./gdb/tui/tui.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* General functions for the WDB TUI.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -30,6 +30,7 @@
 #include "tui/tui-regs.h"
 #include "tui/tui-stack.h"
 #include "tui/tui-win.h"
+#include "tui/tui-wingeneral.h"
 #include "tui/tui-winsource.h"
 #include "tui/tui-source.h"
 #include "target.h"
@@ -44,9 +45,6 @@
 #include <ctype.h>
 #include <signal.h>
 #include <fcntl.h>
-#if 0
-#include <termio.h>
-#endif
 #include <setjmp.h>
 
 #include "gdb_curses.h"
@@ -58,8 +56,8 @@
 #include "readline/readline.h"
 
 /* Tells whether the TUI is active or not.  */
-int tui_active = 0;
-static int tui_finish_init = 1;
+bool tui_active = false;
+static bool tui_finish_init = true;
 
 enum tui_key_mode tui_current_key_mode = TUI_COMMAND_MODE;
 
@@ -142,8 +140,7 @@ tui_rl_switch_mode (int notused1, int no
 /* TUI readline command.
    Change the TUI layout to show a next layout.
    This function is bound to CTRL-X 2.  It is intended to provide
-   a functionality close to the Emacs split-window command.  We
-   always show two windows (src+asm), (src+regs) or (asm+regs).  */
+   a functionality close to the Emacs split-window command.  */
 static int
 tui_rl_change_windows (int notused1, int notused2)
 {
@@ -151,41 +148,8 @@ tui_rl_change_windows (int notused1, int
     tui_rl_switch_mode (0 /* notused */, 0 /* notused */);
 
   if (tui_active)
-    {
-      enum tui_layout_type new_layout;
-
-      new_layout = tui_current_layout ();
+    tui_next_layout ();
 
-      /* Select a new layout to have a rolling layout behavior with
-	 always two windows (except when undefined).  */
-      switch (new_layout)
-	{
-	case SRC_COMMAND:
-	  new_layout = SRC_DISASSEM_COMMAND;
-	  break;
-
-	case DISASSEM_COMMAND:
-	  new_layout = SRC_DISASSEM_COMMAND;
-	  break;
-
-	case SRC_DATA_COMMAND:
-	  new_layout = SRC_DISASSEM_COMMAND;
-	  break;
-
-	case SRC_DISASSEM_COMMAND:
-	  new_layout = DISASSEM_DATA_COMMAND;
-	  break;
-	  
-	case DISASSEM_DATA_COMMAND:
-	  new_layout = SRC_DATA_COMMAND;
-	  break;
-
-	default:
-	  new_layout = SRC_COMMAND;
-	  break;
-	}
-      tui_set_layout (new_layout);
-    }
   return 0;
 }
 
@@ -198,28 +162,8 @@ tui_rl_delete_other_windows (int notused
     tui_rl_switch_mode (0 /* notused */, 0 /* notused */);
 
   if (tui_active)
-    {
-      enum tui_layout_type new_layout;
-
-      new_layout = tui_current_layout ();
+    tui_remove_some_windows ();
 
-      /* Kill one window.  */
-      switch (new_layout)
-	{
-	case SRC_COMMAND:
-	case SRC_DATA_COMMAND:
-	case SRC_DISASSEM_COMMAND:
-	default:
-	  new_layout = SRC_COMMAND;
-	  break;
-
-	case DISASSEM_COMMAND:
-	case DISASSEM_DATA_COMMAND:
-	  new_layout = DISASSEM_COMMAND;
-	  break;
-	}
-      tui_set_layout (new_layout);
-    }
   return 0;
 }
 
@@ -324,8 +268,14 @@ tui_set_key_mode (enum tui_key_mode mode
 /* Initialize readline and configure the keymap for the switching
    key shortcut.  */
 void
-tui_initialize_readline (void)
+tui_ensure_readline_initialized ()
 {
+  static bool initialized;
+
+  if (initialized)
+    return;
+  initialized = true;
+
   int i;
   Keymap tui_ctlx_keymap;
 
@@ -381,6 +331,9 @@ tui_initialize_readline (void)
   rl_bind_key_in_map ('q', tui_rl_next_keymap, tui_keymap);
   rl_bind_key_in_map ('s', tui_rl_next_keymap, emacs_ctlx_keymap);
   rl_bind_key_in_map ('s', tui_rl_next_keymap, tui_ctlx_keymap);
+
+  /* Initialize readline after the above.  */
+  rl_initialize ();
 }
 
 /* Return the TERM variable from the environment, or "<unset>"
@@ -427,7 +380,7 @@ tui_enable (void)
 
       /* Don't try to setup curses (and print funny control
 	 characters) if we're not outputting to a terminal.  */
-      if (!ui_file_isatty (gdb_stdout))
+      if (!gdb_stderr->isatty ())
 	error (_("Cannot enable the TUI when output is not a terminal"));
 
       s = newterm (NULL, stdout, stdin);
@@ -478,11 +431,11 @@ tui_enable (void)
       def_prog_mode ();
 
       tui_show_frame_info (0);
-      tui_set_layout (SRC_COMMAND);
+      tui_set_initial_layout ();
       tui_set_win_focus_to (TUI_SRC_WIN);
       keypad (TUI_CMD_WIN->handle.get (), TRUE);
       wrefresh (TUI_CMD_WIN->handle.get ());
-      tui_finish_init = 0;
+      tui_finish_init = false;
     }
   else
     {
@@ -492,16 +445,12 @@ tui_enable (void)
      clearok (stdscr, TRUE);
    }
 
-  /* Install the TUI specific hooks.  */
-  tui_install_hooks ();
-  rl_startup_hook = tui_rl_startup_hook;
-
   if (tui_update_variables ())
     tui_rehighlight_all ();
 
   tui_setup_io (1);
 
-  tui_active = 1;
+  tui_active = true;
 
   /* Resize windows before anything might display/refresh a
      window.  */
@@ -513,6 +462,14 @@ tui_enable (void)
 
   if (deprecated_safe_get_selected_frame ())
     tui_show_frame_info (deprecated_safe_get_selected_frame ());
+  else
+    tui_display_main ();
+
+  /* Install the TUI specific hooks.  This must be done after the call to
+     tui_display_main so that we don't detect the symtab changed event it
+     can cause.  */
+  tui_install_hooks ();
+  rl_startup_hook = tui_rl_startup_hook;
 
   /* Restore TUI keymap.  */
   tui_set_key_mode (tui_current_key_mode);
@@ -553,7 +510,7 @@ tui_disable (void)
   /* Update gdb's knowledge of its terminal.  */
   gdb_save_tty_state ();
 
-  tui_active = 0;
+  tui_active = false;
   tui_update_gdb_sizes ();
 }
 
@@ -573,74 +530,10 @@ tui_disable_command (const char *args, i
   tui_disable ();
 }
 
-#if 0
-/* Solaris <sys/termios.h> defines CTRL.  */
-#ifndef CTRL
-#define CTRL(x)         (x & ~0140)
-#endif
-
-#define FILEDES         2
-#define CHK(val, dft)   (val<=0 ? dft : val)
-
-static void
-tui_reset (void)
-{
-  struct termio mode;
-
-  /* Reset the teletype mode bits to a sensible state.
-     Copied tset.c.  */
-#if defined (TIOCGETC)
-  struct tchars tbuf;
-#endif /* TIOCGETC */
-#ifdef UCB_NTTY
-  struct ltchars ltc;
-
-  if (ldisc == NTTYDISC)
-    {
-      ioctl (FILEDES, TIOCGLTC, &ltc);
-      ltc.t_suspc = CHK (ltc.t_suspc, CTRL ('Z'));
-      ltc.t_dsuspc = CHK (ltc.t_dsuspc, CTRL ('Y'));
-      ltc.t_rprntc = CHK (ltc.t_rprntc, CTRL ('R'));
-      ltc.t_flushc = CHK (ltc.t_flushc, CTRL ('O'));
-      ltc.t_werasc = CHK (ltc.t_werasc, CTRL ('W'));
-      ltc.t_lnextc = CHK (ltc.t_lnextc, CTRL ('V'));
-      ioctl (FILEDES, TIOCSLTC, &ltc);
-    }
-#endif /* UCB_NTTY */
-#ifdef TIOCGETC
-  ioctl (FILEDES, TIOCGETC, &tbuf);
-  tbuf.t_intrc = CHK (tbuf.t_intrc, CTRL ('?'));
-  tbuf.t_quitc = CHK (tbuf.t_quitc, CTRL ('\\'));
-  tbuf.t_startc = CHK (tbuf.t_startc, CTRL ('Q'));
-  tbuf.t_stopc = CHK (tbuf.t_stopc, CTRL ('S'));
-  tbuf.t_eofc = CHK (tbuf.t_eofc, CTRL ('D'));
-  /* brkc is left alone.  */
-  ioctl (FILEDES, TIOCSETC, &tbuf);
-#endif /* TIOCGETC */
-  mode.sg_flags &= ~(RAW
-#ifdef CBREAK
-		     | CBREAK
-#endif /* CBREAK */
-		     | VTDELAY | ALLDELAY);
-  mode.sg_flags |= XTABS | ECHO | CRMOD | ANYP;
-}
-#endif
-
-void
-tui_show_source (const char *fullname, int line)
-{
-  struct symtab_and_line cursal = get_current_source_symtab_and_line ();
-
-  /* Make sure that the source window is displayed.  */
-  tui_add_win_to_layout (SRC_WIN);
-
-  tui_update_source_windows_with_line (cursal.symtab, line);
-  tui_update_locator_fullname (fullname);
-}
-
 void
 tui_show_assembly (struct gdbarch *gdbarch, CORE_ADDR addr)
 {
+  tui_suppress_output suppress;
   tui_add_win_to_layout (DISASSEM_WIN);
   tui_update_source_windows_with_addr (gdbarch, addr);
 }
@@ -648,7 +541,7 @@ tui_show_assembly (struct gdbarch *gdbar
 bool
 tui_is_window_visible (enum tui_win_type type)
 {
-  if (tui_active == 0)
+  if (!tui_active)
     return false;
 
   if (tui_win_list[type] == 0)
@@ -657,31 +550,32 @@ tui_is_window_visible (enum tui_win_type
   return tui_win_list[type]->is_visible ();
 }
 
-int
+bool
 tui_get_command_dimension (unsigned int *width, 
 			   unsigned int *height)
 {
   if (!tui_active || (TUI_CMD_WIN == NULL))
-    {
-      return 0;
-    }
+    return false;
   
   *width = TUI_CMD_WIN->width;
   *height = TUI_CMD_WIN->height;
-  return 1;
+  return true;
 }
 
+void _initialize_tui ();
 void
-_initialize_tui (void)
+_initialize_tui ()
 {
   struct cmd_list_element **tuicmd;
 
   tuicmd = tui_get_cmd_list ();
 
   add_cmd ("enable", class_tui, tui_enable_command,
-	   _("Enable TUI display mode."),
+	   _("Enable TUI display mode.\n\
+Usage: tui enable"),
 	   tuicmd);
   add_cmd ("disable", class_tui, tui_disable_command,
-	   _("Disable TUI display mode."),
+	   _("Disable TUI display mode.\n\
+Usage: tui disable"),
 	   tuicmd);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-command.c ./gdb/tui/tui-command.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-command.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-command.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Specific command window processing.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -42,16 +42,8 @@ tui_cmd_window::resize (int height_, int
 {
   width = width_;
   height = height_;
-  if (height > 1)
-    {
-      /* Note this differs from the base class implementation, because
-	 this window can't be boxed.  */
-      viewport_height = height - 1;
-    }
-  else
-    viewport_height = 1;
-  origin.x = origin_x;
-  origin.y = origin_y;
+  x = origin_x;
+  y = origin_y;
 
   if (handle == nullptr)
     make_window ();
@@ -66,7 +58,7 @@ tui_cmd_window::resize (int height_, int
 #ifdef HAVE_WRESIZE
       wresize (handle.get (), height, width);
 #endif
-      mvwin (handle.get (), origin.y, origin.x);
+      mvwin (handle.get (), y, x);
       wmove (handle.get (), 0, 0);
     }
 }
@@ -78,7 +70,7 @@ tui_refresh_cmd_win (void)
 {
   WINDOW *w = TUI_CMD_WIN->handle.get ();
 
-  wrefresh (w);
+  tui_wrefresh (w);
 
   /* FIXME: It's not clear why this is here.
      It was present in the original tui_puts code and is kept in order to
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-command.h ./gdb/tui/tui-command.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-command.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-command.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Specific command window processing.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -27,10 +27,7 @@
 /* The TUI command window.  */
 struct tui_cmd_window : public tui_win_info
 {
-  tui_cmd_window ()
-    : tui_win_info (CMD_WIN)
-  {
-  }
+  tui_cmd_window () = default;
 
   DISABLE_COPY_AND_ASSIGN (tui_cmd_window);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-data.c ./gdb/tui/tui-data.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-data.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-data.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI data manipulation routines.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -23,9 +23,11 @@
 #include "symtab.h"
 #include "tui/tui.h"
 #include "tui/tui-data.h"
+#include "tui/tui-win.h"
 #include "tui/tui-wingeneral.h"
 #include "tui/tui-winsource.h"
 #include "gdb_curses.h"
+#include <algorithm>
 
 struct tui_win_info *tui_win_list[MAX_MAJOR_WINDOWS];
 
@@ -58,11 +60,16 @@ tui_win_with_focus (void)
 }
 
 
-/* Set the window that has the logical focus.  */
+/* Set the logical focus to win_info.  */
 void
-tui_set_win_with_focus (struct tui_win_info *win_info)
+tui_set_win_focus_to (struct tui_win_info *win_info)
 {
-  win_with_focus = win_info;
+  if (win_info != NULL)
+    {
+      tui_unhighlight_win (win_with_focus);
+      win_with_focus = win_info;
+      tui_highlight_win (win_info);
+    }
 }
 
 
@@ -103,28 +110,22 @@ tui_set_term_width_to (int w)
 struct tui_win_info *
 tui_next_win (struct tui_win_info *cur_win)
 {
-  int type = cur_win->type;
-  struct tui_win_info *next_win = NULL;
+  auto iter = std::find (tui_windows.begin (), tui_windows.end (), cur_win);
+  gdb_assert (iter != tui_windows.end ());
 
-  if (cur_win->type == CMD_WIN)
-    type = SRC_WIN;
-  else
-    type = cur_win->type + 1;
-  while (type != cur_win->type && (next_win == NULL))
+  gdb_assert (cur_win->can_focus ());
+  /* This won't loop forever since we can't have just an un-focusable
+     window.  */
+  while (true)
     {
-      if (tui_win_list[type]
-	  && tui_win_list[type]->is_visible ())
-	next_win = tui_win_list[type];
-      else
-	{
-	  if (type == CMD_WIN)
-	    type = SRC_WIN;
-	  else
-	    type++;
-	}
+      ++iter;
+      if (iter == tui_windows.end ())
+	iter = tui_windows.begin ();
+      if ((*iter)->can_focus ())
+	break;
     }
 
-  return next_win;
+  return *iter;
 }
 
 
@@ -133,58 +134,24 @@ tui_next_win (struct tui_win_info *cur_w
 struct tui_win_info *
 tui_prev_win (struct tui_win_info *cur_win)
 {
-  int type = cur_win->type;
-  struct tui_win_info *prev = NULL;
+  auto iter = std::find (tui_windows.rbegin (), tui_windows.rend (), cur_win);
+  gdb_assert (iter != tui_windows.rend ());
 
-  if (cur_win->type == SRC_WIN)
-    type = CMD_WIN;
-  else
-    type = cur_win->type - 1;
-  while (type != cur_win->type && (prev == NULL))
+  gdb_assert (cur_win->can_focus ());
+  /* This won't loop forever since we can't have just an un-focusable
+     window.  */
+  while (true)
     {
-      if (tui_win_list[type]
-	  && tui_win_list[type]->is_visible ())
-	prev = tui_win_list[type];
-      else
-	{
-	  if (type == SRC_WIN)
-	    type = CMD_WIN;
-	  else
-	    type--;
-	}
+      ++iter;
+      if (iter == tui_windows.rend ())
+	iter = tui_windows.rbegin ();
+      if ((*iter)->can_focus ())
+	break;
     }
 
-  return prev;
-}
-
-
-/* See tui-data.h.  */
-
-void
-tui_delete_invisible_windows ()
-{
-  for (int win_type = SRC_WIN; (win_type < MAX_MAJOR_WINDOWS); win_type++)
-    {
-      if (tui_win_list[win_type] != NULL
-	  && !tui_win_list[win_type]->is_visible ())
-	{
-	  /* This should always be made visible before a call to this
-	     function.  */
-	  gdb_assert (win_type != CMD_WIN);
-
-	  if (win_with_focus == tui_win_list[win_type])
-	    win_with_focus = nullptr;
-
-	  delete tui_win_list[win_type];
-	  tui_win_list[win_type] = NULL;
-	}
-    }
+  return *iter;
 }
 
-tui_win_info::tui_win_info (enum tui_win_type type)
-  : tui_gen_win_info (type)
-{
-}
 
 void
 tui_win_info::rerender ()
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-data.h ./gdb/tui/tui-data.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-data.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-data.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI data manipulation routines.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -22,20 +22,10 @@
 #ifndef TUI_TUI_DATA_H
 #define TUI_TUI_DATA_H
 
-#include "tui/tui.h"	/* For enum tui_win_type.  */
+#include "tui/tui.h"
 #include "gdb_curses.h"	/* For WINDOW.  */
 #include "observable.h"
 
-struct tui_cmd_window;
-struct tui_source_window_base;
-struct tui_source_window;
-
-/* This is a point definition.  */
-struct tui_point
-{
-  int x, y;
-};
-
 /* A deleter that calls delwin.  */
 struct curses_deleter
 {
@@ -45,30 +35,25 @@ struct curses_deleter
   }
 };
 
+#define MIN_WIN_HEIGHT          3
+
 /* Generic window information.  */
-struct tui_gen_win_info
+struct tui_win_info
 {
 protected:
 
-  explicit tui_gen_win_info (enum tui_win_type t)
-    : type (t)
-  {
-  }
+  tui_win_info () = default;
+  DISABLE_COPY_AND_ASSIGN (tui_win_info);
 
   /* This is called after the window is resized, and should update the
      window's contents.  */
-  virtual void rerender ()
-  {
-  }
+  virtual void rerender ();
 
   virtual void make_window ();
 
 public:
-  tui_gen_win_info (tui_gen_win_info &&) = default;
-
-  virtual ~tui_gen_win_info ()
-  {
-  }
+  tui_win_info (tui_win_info &&) = default;
+  virtual ~tui_win_info () = default;
 
   /* Call to refresh this window.  */
   virtual void refresh_window ();
@@ -77,9 +62,30 @@ public:
   virtual void make_visible (bool visible);
 
   /* Return the name of this type of window.  */
-  virtual const char *name () const
+  virtual const char *name () const = 0;
+
+  /* Compute the maximum height of this window.  */
+  virtual int max_height () const;
+
+  /* Compute the minimum height of this window.  */
+  virtual int min_height () const
   {
-    return "";
+    return MIN_WIN_HEIGHT;
+  }
+
+  /* Compute the maximum width of this window.  */
+  int max_width () const;
+
+  /* Compute the minimum width of this window.  */
+  int min_width () const
+  {
+    return 3;
+  }
+
+  /* Return true if this window can be boxed.  */
+  virtual bool can_box () const
+  {
+    return true;
   }
 
   /* Resize this window.  The parameters are used to set the window's
@@ -93,88 +99,18 @@ public:
     return handle != nullptr;
   }
 
-  /* Window handle.  */
-  std::unique_ptr<WINDOW, curses_deleter> handle;
-  /* Type of window.  */
-  enum tui_win_type type;
-  /* Window width.  */
-  int width = 0;
-  /* Window height.  */
-  int height = 0;
-  /* Origin of window.  */
-  struct tui_point origin = {0, 0};
-  /* Viewport height.  */
-  int viewport_height = 0;
-};
-
-/* Constant definitions.  */
-#define DEFAULT_TAB_LEN         8
-#define SRC_NAME                "src"
-#define CMD_NAME                "cmd"
-#define DATA_NAME               "regs"
-#define DISASSEM_NAME           "asm"
-#define MIN_WIN_HEIGHT          3
-#define MIN_CMD_WIN_HEIGHT      3
-
-/* Strings to display in the TUI status line.  */
-#define SINGLE_KEY              "(SingleKey)"
-
-/* The kinds of layouts available.  */
-enum tui_layout_type
-{
-  SRC_COMMAND,
-  DISASSEM_COMMAND,
-  SRC_DISASSEM_COMMAND,
-  SRC_DATA_COMMAND,
-  DISASSEM_DATA_COMMAND,
-  UNDEFINED_LAYOUT
-};
-
-enum tui_line_or_address_kind
-{
-  LOA_LINE,
-  LOA_ADDRESS
-};
-
-/* Structure describing source line or line address.  */
-struct tui_line_or_address
-{
-  enum tui_line_or_address_kind loa;
-  union
-    {
-      int line_no;
-      CORE_ADDR addr;
-    } u;
-};
-
-/* This defines information about each logical window.  */
-struct tui_win_info : public tui_gen_win_info
-{
-protected:
-
-  explicit tui_win_info (enum tui_win_type type);
-  DISABLE_COPY_AND_ASSIGN (tui_win_info);
-
-  /* Scroll the contents vertically.  This is only called via
-     forward_scroll and backward_scroll.  */
-  virtual void do_scroll_vertical (int num_to_scroll) = 0;
-
-  /* Scroll the contents horizontally.  This is only called via
-     left_scroll and right_scroll.  */
-  virtual void do_scroll_horizontal (int num_to_scroll) = 0;
-
-  void rerender () override;
-
-  void make_window () override;
-
-public:
-
-  ~tui_win_info () override
+  /* Return true if this window can accept the focus.  */
+  virtual bool can_focus () const
   {
+    return true;
   }
 
-  /* Compute the maximum height of this window.  */
-  virtual int max_height () const;
+  /* Disable output until the next call to doupdate.  */
+  void no_refresh ()
+  {
+    if (handle != nullptr)
+      wnoutrefresh (handle.get ());
+  }
 
   /* Called after the tab width has been changed.  */
   virtual void update_tab_width ()
@@ -201,118 +137,74 @@ public:
     return true;
   }
 
-  virtual bool can_box () const
-  {
-    return true;
-  }
-
   void check_and_display_highlight_if_needed ();
 
+  /* Window handle.  */
+  std::unique_ptr<WINDOW, curses_deleter> handle;
+  /* Window width.  */
+  int width = 0;
+  /* Window height.  */
+  int height = 0;
+  /* Origin of window.  */
+  int x = 0;
+  int y = 0;
+
   /* Window title to display.  */
   std::string title;
 
   /* Is this window highlighted?  */
   bool is_highlighted = false;
+
+protected:
+
+  /* Scroll the contents vertically.  This is only called via
+     forward_scroll and backward_scroll.  */
+  virtual void do_scroll_vertical (int num_to_scroll) = 0;
+
+  /* Scroll the contents horizontally.  This is only called via
+     left_scroll and right_scroll.  */
+  virtual void do_scroll_horizontal (int num_to_scroll) = 0;
 };
 
+/* Constant definitions.  */
+#define SRC_NAME                "src"
+#define CMD_NAME                "cmd"
+#define DATA_NAME               "regs"
+#define DISASSEM_NAME           "asm"
+#define STATUS_NAME		"status"
 
 /* Global Data.  */
 extern struct tui_win_info *tui_win_list[MAX_MAJOR_WINDOWS];
 
 #define TUI_SRC_WIN     ((tui_source_window *) tui_win_list[SRC_WIN])
-#define TUI_DISASM_WIN	((tui_source_window_base *) tui_win_list[DISASSEM_WIN])
+#define TUI_DISASM_WIN	((tui_disasm_window *) tui_win_list[DISASSEM_WIN])
 #define TUI_DATA_WIN    ((tui_data_window *) tui_win_list[DATA_WIN])
 #define TUI_CMD_WIN     ((tui_cmd_window *) tui_win_list[CMD_WIN])
 
-/* An iterator that iterates over all windows.  */
-
-class tui_window_iterator
+/* All the windows that are currently instantiated, in layout
+   order.  */
+extern std::vector<tui_win_info *> tui_windows;
+
+/* Return a range adapter for iterating over TUI windows.  */
+static inline std::vector<tui_win_info *> &
+all_tui_windows ()
 {
-public:
-
-  typedef tui_window_iterator self_type;
-  typedef struct tui_win_info *value_type;
-  typedef struct tui_win_info *&reference;
-  typedef struct tui_win_info **pointer;
-  typedef std::forward_iterator_tag iterator_category;
-  typedef int difference_type;
-
-  explicit tui_window_iterator (enum tui_win_type type)
-    : m_type (type)
-  {
-    advance ();
-  }
-
-  tui_window_iterator ()
-    : m_type (MAX_MAJOR_WINDOWS)
-  {
-  }
-
-  bool operator!= (const self_type &other) const
-  {
-    return m_type != other.m_type;
-  }
-
-  value_type operator* () const
-  {
-    gdb_assert (m_type < MAX_MAJOR_WINDOWS);
-    return tui_win_list[m_type];
-  }
-
-  self_type &operator++ ()
-  {
-    ++m_type;
-    advance ();
-    return *this;
-  }
-
-private:
-
-  void advance ()
-  {
-    while (m_type < MAX_MAJOR_WINDOWS && tui_win_list[m_type] == nullptr)
-      ++m_type;
-  }
-
-  int m_type;
-};
-
-/* A range adapter for iterating over TUI windows.  */
-
-struct all_tui_windows
-{
-  tui_window_iterator begin () const
-  {
-    return tui_window_iterator (SRC_WIN);
-  }
-
-  tui_window_iterator end () const
-  {
-    return tui_window_iterator ();
-  }
-};
-
+  return tui_windows;
+}
 
 /* Data Manipulation Functions.  */
-extern enum tui_layout_type tui_current_layout (void);
 extern int tui_term_height (void);
 extern void tui_set_term_height_to (int);
 extern int tui_term_width (void);
 extern void tui_set_term_width_to (int);
 extern struct tui_locator_window *tui_locator_win_info_ptr (void);
 extern struct tui_win_info *tui_win_with_focus (void);
-extern void tui_set_win_with_focus (struct tui_win_info *);
 extern bool tui_win_resized ();
 extern void tui_set_win_resized_to (bool);
 
 extern struct tui_win_info *tui_next_win (struct tui_win_info *);
 extern struct tui_win_info *tui_prev_win (struct tui_win_info *);
 
-/* Delete all the invisible windows.  Note that it is an error to call
-   this when the command window is invisible -- we don't allow the
-   command window to be removed from the layout.  */
-extern void tui_delete_invisible_windows ();
-
 extern unsigned int tui_tab_width;
 
 #endif /* TUI_TUI_DATA_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-disasm.c ./gdb/tui/tui-disasm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-disasm.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-disasm.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Disassembly display.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -43,7 +43,7 @@
 
 #include "gdb_curses.h"
 
-struct tui_asm_line 
+struct tui_asm_line
 {
   CORE_ADDR addr;
   std::string addr_string;
@@ -81,25 +81,58 @@ len_without_escapes (const std::string &
   return len;
 }
 
-/* Function to set the disassembly window's content.
-   Disassemble count lines starting at pc.
-   Return address of the count'th instruction after pc.  */
+/* Function to disassemble up to COUNT instructions starting from address
+   PC into the ASM_LINES vector (which will be emptied of any previous
+   contents).  Return the address of the COUNT'th instruction after pc.
+   When ADDR_SIZE is non-null then place the maximum size of an address and
+   label into the value pointed to by ADDR_SIZE, and set the addr_size
+   field on each item in ASM_LINES, otherwise the addr_size fields within
+   ASM_LINES are undefined.
+
+   It is worth noting that ASM_LINES might not have COUNT entries when this
+   function returns.  If the disassembly is truncated for some other
+   reason, for example, we hit invalid memory, then ASM_LINES can have
+   fewer entries than requested.  */
 static CORE_ADDR
 tui_disassemble (struct gdbarch *gdbarch,
 		 std::vector<tui_asm_line> &asm_lines,
-		 CORE_ADDR pc, int pos, int count,
+		 CORE_ADDR pc, int count,
 		 size_t *addr_size = nullptr)
 {
   bool term_out = source_styling && gdb_stdout->can_emit_style_escape ();
   string_file gdb_dis_out (term_out);
 
+  /* Must start with an empty list.  */
+  asm_lines.clear ();
+
   /* Now construct each line.  */
   for (int i = 0; i < count; ++i)
     {
-      print_address (gdbarch, pc, &gdb_dis_out);
-      asm_lines[pos + i].addr = pc;
-      asm_lines[pos + i].addr_string = std::move (gdb_dis_out.string ());
+      tui_asm_line tal;
+      CORE_ADDR orig_pc = pc;
 
+      try
+	{
+	  pc = pc + gdb_print_insn (gdbarch, pc, &gdb_dis_out, NULL);
+	}
+      catch (const gdb_exception_error &except)
+	{
+	  /* If PC points to an invalid address then we'll catch a
+	     MEMORY_ERROR here, this should stop the disassembly, but
+	     otherwise is fine.  */
+	  if (except.error != MEMORY_ERROR)
+	    throw;
+	  return pc;
+	}
+
+      /* Capture the disassembled instruction.  */
+      tal.insn = std::move (gdb_dis_out.string ());
+      gdb_dis_out.clear ();
+
+      /* And capture the address the instruction is at.  */
+      tal.addr = orig_pc;
+      print_address (gdbarch, orig_pc, &gdb_dis_out);
+      tal.addr_string = std::move (gdb_dis_out.string ());
       gdb_dis_out.clear ();
 
       if (addr_size != nullptr)
@@ -107,23 +140,45 @@ tui_disassemble (struct gdbarch *gdbarch
 	  size_t new_size;
 
 	  if (term_out)
-	    new_size = len_without_escapes (asm_lines[pos + i].addr_string);
+	    new_size = len_without_escapes (tal.addr_string);
 	  else
-	    new_size = asm_lines[pos + i].addr_string.size ();
+	    new_size = tal.addr_string.size ();
 	  *addr_size = std::max (*addr_size, new_size);
-	  asm_lines[pos + i].addr_size = new_size;
+	  tal.addr_size = new_size;
 	}
 
-      pc = pc + gdb_print_insn (gdbarch, pc, &gdb_dis_out, NULL);
-
-      asm_lines[pos + i].insn = std::move (gdb_dis_out.string ());
-
-      /* Reset the buffer to empty.  */
-      gdb_dis_out.clear ();
+      asm_lines.push_back (std::move (tal));
     }
   return pc;
 }
 
+/* Look backward from ADDR for an address from which we can start
+   disassembling, this needs to be something we can be reasonably
+   confident will fall on an instruction boundary.  We use msymbol
+   addresses, or the start of a section.  */
+
+static CORE_ADDR
+tui_find_backward_disassembly_start_address (CORE_ADDR addr)
+{
+  struct bound_minimal_symbol msym, msym_prev;
+
+  msym = lookup_minimal_symbol_by_pc_section (addr - 1, nullptr,
+					      lookup_msym_prefer::TEXT,
+					      &msym_prev);
+  if (msym.minsym != nullptr)
+    return BMSYMBOL_VALUE_ADDRESS (msym);
+  else if (msym_prev.minsym != nullptr)
+    return BMSYMBOL_VALUE_ADDRESS (msym_prev);
+
+  /* Find the section that ADDR is in, and look for the start of the
+     section.  */
+  struct obj_section *section = find_pc_section (addr);
+  if (section != NULL)
+    return obj_section_addr (section);
+
+  return addr;
+}
+
 /* Find the disassembly address that corresponds to FROM lines above
    or below the PC.  Variable sized instructions are taken into
    account by the algorithm.  */
@@ -134,91 +189,149 @@ tui_find_disassembly_address (struct gdb
   int max_lines;
 
   max_lines = (from > 0) ? from : - from;
-  if (max_lines <= 1)
+  if (max_lines == 0)
     return pc;
 
-  std::vector<tui_asm_line> asm_lines (max_lines);
+  std::vector<tui_asm_line> asm_lines;
 
   new_low = pc;
   if (from > 0)
     {
-      tui_disassemble (gdbarch, asm_lines, pc, 0, max_lines);
-      new_low = asm_lines[max_lines - 1].addr;
+      /* Always disassemble 1 extra instruction here, then if the last
+	 instruction fails to disassemble we will take the address of the
+	 previous instruction that did disassemble as the result.  */
+      tui_disassemble (gdbarch, asm_lines, pc, max_lines + 1);
+      new_low = asm_lines.back ().addr;
     }
   else
     {
+      /* In order to disassemble backwards we need to find a suitable
+	 address to start disassembling from and then work forward until we
+	 re-find the address we're currently at.  We can then figure out
+	 which address will be at the top of the TUI window after our
+	 backward scroll.  During our backward disassemble we need to be
+	 able to distinguish between the case where the last address we
+	 _can_ disassemble is ADDR, and the case where the disassembly
+	 just happens to stop at ADDR, for this reason we increase
+	 MAX_LINES by one.  */
+      max_lines++;
+
+      /* When we disassemble a series of instructions this will hold the
+	 address of the last instruction disassembled.  */
       CORE_ADDR last_addr;
-      int pos;
-      struct bound_minimal_symbol msymbol;
-              
-      /* Find backward an address which is a symbol and for which
-         disassembling from that address will fill completely the
-         window.  */
-      pos = max_lines - 1;
-      do {
-         new_low -= 1 * max_lines;
-         msymbol = lookup_minimal_symbol_by_pc_section (new_low, 0);
-
-         if (msymbol.minsym)
-            new_low = BMSYMBOL_VALUE_ADDRESS (msymbol);
-         else
-            new_low += 1 * max_lines;
-
-         tui_disassemble (gdbarch, asm_lines, new_low, 0, max_lines);
-         last_addr = asm_lines[pos].addr;
-      } while (last_addr > pc && msymbol.minsym);
+
+      /* And this will hold the address of the next instruction that would
+	 have been disassembled.  */
+      CORE_ADDR next_addr;
+
+      /* As we search backward if we find an address that looks like a
+	 promising starting point then we record it in this structure.  If
+	 the next address we try is not a suitable starting point then we
+	 will fall back to the address held here.  */
+      gdb::optional<CORE_ADDR> possible_new_low;
+
+      /* The previous value of NEW_LOW so we know if the new value is
+	 different or not.  */
+      CORE_ADDR prev_low;
+
+      do
+	{
+	  /* Find an address from which we can start disassembling.  */
+	  prev_low = new_low;
+	  new_low = tui_find_backward_disassembly_start_address (new_low);
+
+	  /* Disassemble forward.  */
+	  next_addr = tui_disassemble (gdbarch, asm_lines, new_low, max_lines);
+	  last_addr = asm_lines.back ().addr;
+
+	  /* If disassembling from the current value of NEW_LOW reached PC
+	     (or went past it) then this would do as a starting point if we
+	     can't find anything better, so remember it.  */
+	  if (last_addr >= pc && new_low != prev_low
+	      && asm_lines.size () >= max_lines)
+	    possible_new_low.emplace (new_low);
+
+	  /* Continue searching until we find a value of NEW_LOW from which
+	     disassembling MAX_LINES instructions doesn't reach PC.  We
+	     know this means we can find the required number of previous
+	     instructions then.  */
+	}
+      while ((last_addr > pc
+	      || (last_addr == pc && asm_lines.size () < max_lines))
+	     && new_low != prev_low);
+
+      /* If we failed to disassemble the required number of lines then the
+	 following walk forward is not going to work, it assumes that
+	 ASM_LINES contains exactly MAX_LINES entries.  Instead we should
+	 consider falling back to a previous possible start address in
+	 POSSIBLE_NEW_LOW.  */
+      if (asm_lines.size () < max_lines)
+	{
+	  if (!possible_new_low.has_value ())
+	    return new_low;
+
+	  /* Take the best possible match we have.  */
+	  new_low = *possible_new_low;
+	  next_addr = tui_disassemble (gdbarch, asm_lines, new_low, max_lines);
+	  last_addr = asm_lines.back ().addr;
+	  gdb_assert (asm_lines.size () >= max_lines);
+	}
 
       /* Scan forward disassembling one instruction at a time until
          the last visible instruction of the window matches the pc.
          We keep the disassembled instructions in the 'lines' window
          and shift it downward (increasing its addresses).  */
+      int pos = max_lines - 1;
       if (last_addr < pc)
         do
           {
-            CORE_ADDR next_addr;
-                 
             pos++;
             if (pos >= max_lines)
               pos = 0;
 
-            next_addr = tui_disassemble (gdbarch, asm_lines,
-					 last_addr, pos, 1);
-
+	    CORE_ADDR old_next_addr = next_addr;
+	    std::vector<tui_asm_line> single_asm_line;
+	    next_addr = tui_disassemble (gdbarch, single_asm_line,
+					 next_addr, 1);
             /* If there are some problems while disassembling exit.  */
-            if (next_addr <= last_addr)
-              break;
-            last_addr = next_addr;
-          } while (last_addr <= pc);
+	    if (next_addr <= old_next_addr)
+	      return pc;
+	    gdb_assert (single_asm_line.size () == 1);
+	    asm_lines[pos] = single_asm_line[0];
+	  } while (next_addr <= pc);
       pos++;
       if (pos >= max_lines)
          pos = 0;
       new_low = asm_lines[pos].addr;
+
+      /* When scrolling backward the addresses should move backward, or at
+	 the very least stay the same if we are at the first address that
+	 can be disassembled.  */
+      gdb_assert (new_low <= pc);
     }
   return new_low;
 }
 
 /* Function to set the disassembly window's content.  */
-enum tui_status
+bool
 tui_disasm_window::set_contents (struct gdbarch *arch,
-				 struct symtab *s,
-				 struct tui_line_or_address line_or_addr)
+				 const struct symtab_and_line &sal)
 {
   int i;
-  int offset = horizontal_offset;
+  int offset = m_horizontal_offset;
   int max_lines, line_width;
   CORE_ADDR cur_pc;
   struct tui_locator_window *locator = tui_locator_win_info_ptr ();
   int tab_len = tui_tab_width;
   int insn_pos;
 
-  gdb_assert (line_or_addr.loa == LOA_ADDRESS);
-  CORE_ADDR pc = line_or_addr.u.addr;
+  CORE_ADDR pc = sal.pc;
   if (pc == 0)
-    return TUI_FAILURE;
+    return false;
 
-  gdbarch = arch;
-  start_line_or_addr.loa = LOA_ADDRESS;
-  start_line_or_addr.u.addr = pc;
+  m_gdbarch = arch;
+  m_start_line_or_addr.loa = LOA_ADDRESS;
+  m_start_line_or_addr.u.addr = pc;
   cur_pc = locator->addr;
 
   /* Window size, excluding highlight box.  */
@@ -226,110 +339,74 @@ tui_disasm_window::set_contents (struct
   line_width = width - TUI_EXECINFO_SIZE - 2;
 
   /* Get temporary table that will hold all strings (addr & insn).  */
-  std::vector<tui_asm_line> asm_lines (max_lines);
+  std::vector<tui_asm_line> asm_lines;
   size_t addr_size = 0;
-  tui_disassemble (gdbarch, asm_lines, pc, 0, max_lines, &addr_size);
+  tui_disassemble (m_gdbarch, asm_lines, pc, max_lines, &addr_size);
 
   /* Align instructions to the same column.  */
   insn_pos = (1 + (addr_size / tab_len)) * tab_len;
 
   /* Now construct each line.  */
-  content.resize (max_lines);
+  m_content.resize (max_lines);
   for (i = 0; i < max_lines; i++)
     {
-      tui_source_element *src = &content[i];
+      tui_source_element *src = &m_content[i];
+
+      std::string line;
+      CORE_ADDR addr;
 
-      std::string line
-	= (asm_lines[i].addr_string
-	   + n_spaces (insn_pos - asm_lines[i].addr_size)
-	   + asm_lines[i].insn);
+      if (i < asm_lines.size ())
+	{
+	  line
+	    = (asm_lines[i].addr_string
+	       + n_spaces (insn_pos - asm_lines[i].addr_size)
+	       + asm_lines[i].insn);
+	  addr = asm_lines[i].addr;
+	}
+      else
+	{
+	  line = "";
+	  addr = 0;
+	}
 
       const char *ptr = line.c_str ();
       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;
-      src->is_exec_point = asm_lines[i].addr == cur_pc;
+      src->line_or_addr.u.addr = addr;
+      src->is_exec_point = (addr == cur_pc && line.size () > 0);
     }
-  return TUI_SUCCESS;
-}
-
-
-/* Function to display the disassembly window with disassembled code.  */
-void
-tui_show_disassem (struct gdbarch *gdbarch, CORE_ADDR start_addr)
-{
-  struct symtab *s = find_pc_line_symtab (start_addr);
-  struct tui_win_info *win_with_focus = tui_win_with_focus ();
-  struct tui_line_or_address val;
-
-  gdb_assert (TUI_DISASM_WIN != nullptr && TUI_DISASM_WIN->is_visible ());
-
-  val.loa = LOA_ADDRESS;
-  val.u.addr = start_addr;
-  TUI_DISASM_WIN->update_source_window (gdbarch, s, val);
-
-  /* If the focus was in the src win, put it in the asm win, if the
-     source view isn't split.  */
-  if (tui_current_layout () != SRC_DISASSEM_COMMAND 
-      && win_with_focus == TUI_SRC_WIN)
-    tui_set_win_focus_to (TUI_DISASM_WIN);
+  return true;
 }
 
 
-/* Function to display the disassembly window.  */
-void
-tui_show_disassem_and_update_source (struct gdbarch *gdbarch,
-				     CORE_ADDR start_addr)
-{
-  struct symtab_and_line sal;
-
-  tui_show_disassem (gdbarch, start_addr);
-  if (tui_current_layout () == SRC_DISASSEM_COMMAND)
-    {
-      struct tui_line_or_address val;
-
-      /* Update what is in the source window if it is displayed too,
-         note that it follows what is in the disassembly window and
-         visa-versa.  */
-      sal = find_pc_line (start_addr, 0);
-      val.loa = LOA_LINE;
-      val.u.line_no = sal.line;
-      TUI_SRC_WIN->update_source_window (gdbarch, sal.symtab, val);
-      if (sal.symtab)
-	{
-	  set_current_source_symtab_and_line (sal);
-	  tui_update_locator_fullname (symtab_to_fullname (sal.symtab));
-	}
-      else
-	tui_update_locator_fullname ("?");
-    }
-}
-
 void
 tui_get_begin_asm_address (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
 {
   struct tui_locator_window *locator;
   struct gdbarch *gdbarch = get_current_arch ();
-  CORE_ADDR addr;
+  CORE_ADDR addr = 0;
 
   locator = tui_locator_win_info_ptr ();
 
   if (locator->addr == 0)
     {
-      struct bound_minimal_symbol main_symbol;
+      if (have_full_symbols () || have_partial_symbols ())
+	{
+	  set_default_source_symtab_and_line ();
+	  struct symtab_and_line sal = get_current_source_symtab_and_line ();
 
-      /* Find address of the start of program.
-         Note: this should be language specific.  */
-      main_symbol = lookup_minimal_symbol ("main", NULL, NULL);
-      if (main_symbol.minsym == 0)
-        main_symbol = lookup_minimal_symbol ("MAIN", NULL, NULL);
-      if (main_symbol.minsym == 0)
-        main_symbol = lookup_minimal_symbol ("_start", NULL, NULL);
-      if (main_symbol.minsym)
-        addr = BMSYMBOL_VALUE_ADDRESS (main_symbol);
-      else
-        addr = 0;
+	  if (sal.symtab != nullptr)
+	    find_line_pc (sal.symtab, sal.line, &addr);
+	}
+
+      if (addr == 0)
+	{
+	  struct bound_minimal_symbol main_symbol
+	    = lookup_minimal_symbol (main_name (), nullptr, nullptr);
+	  if (main_symbol.minsym != nullptr)
+	    addr = BMSYMBOL_VALUE_ADDRESS (main_symbol);
+	}
     }
   else				/* The target is executing.  */
     {
@@ -352,8 +429,8 @@ tui_get_low_disassembly_address (struct
 
   /* Determine where to start the disassembly so that the pc is about
      in the middle of the viewport.  */
-  if (tui_win_list[DISASSEM_WIN] != NULL)
-    pos = tui_win_list[DISASSEM_WIN]->height;
+  if (TUI_DISASM_WIN != NULL)
+    pos = TUI_DISASM_WIN->height;
   else if (TUI_CMD_WIN == NULL)
     pos = tui_term_height () / 2 - 2;
   else
@@ -371,74 +448,78 @@ tui_get_low_disassembly_address (struct
 void
 tui_disasm_window::do_scroll_vertical (int num_to_scroll)
 {
-  if (!content.empty ())
+  if (!m_content.empty ())
     {
       CORE_ADDR pc;
-      struct tui_line_or_address val;
 
-      pc = content[0].line_or_addr.u.addr;
-      if (num_to_scroll >= 0)
-	num_to_scroll++;
-      else
-	--num_to_scroll;
+      pc = m_start_line_or_addr.u.addr;
 
-      val.loa = LOA_ADDRESS;
-      val.u.addr = tui_find_disassembly_address (gdbarch, pc, num_to_scroll);
-      update_source_window_as_is (gdbarch, NULL, val);
+      symtab_and_line sal {};
+      sal.pspace = current_program_space;
+      sal.pc = tui_find_disassembly_address (m_gdbarch, pc, num_to_scroll);
+      update_source_window_as_is (m_gdbarch, sal);
     }
 }
 
 bool
 tui_disasm_window::location_matches_p (struct bp_location *loc, int line_no)
 {
-  return (content[line_no].line_or_addr.loa == LOA_ADDRESS
-	  && content[line_no].line_or_addr.u.addr == loc->address);
+  return (m_content[line_no].line_or_addr.loa == LOA_ADDRESS
+	  && m_content[line_no].line_or_addr.u.addr == loc->address);
 }
 
 bool
 tui_disasm_window::addr_is_displayed (CORE_ADDR addr) const
 {
-  bool is_displayed = false;
-  int threshold = SCROLL_THRESHOLD;
+  if (m_content.size () < SCROLL_THRESHOLD)
+    return false;
 
-  int i = 0;
-  while (i < content.size () - threshold && !is_displayed)
+  for (size_t i = 0; i < m_content.size () - SCROLL_THRESHOLD; ++i)
     {
-      is_displayed
-	= (content[i].line_or_addr.loa == LOA_ADDRESS
-	   && content[i].line_or_addr.u.addr == addr);
-      i++;
+      if (m_content[i].line_or_addr.loa == LOA_ADDRESS
+	  && m_content[i].line_or_addr.u.addr == addr)
+	return true;
     }
 
-  return is_displayed;
+  return false;
 }
 
 void
-tui_disasm_window::maybe_update (struct frame_info *fi, symtab_and_line sal,
-				 int line_no, CORE_ADDR addr)
+tui_disasm_window::maybe_update (struct frame_info *fi, symtab_and_line sal)
 {
   CORE_ADDR low;
 
-  if (find_pc_partial_function (get_frame_pc (fi),
-				NULL, &low, NULL) == 0)
+  struct gdbarch *frame_arch = get_frame_arch (fi);
+
+  if (find_pc_partial_function (sal.pc, NULL, &low, NULL) == 0)
     {
       /* There is no symbol available for current PC.  There is no
 	 safe way how to "disassemble backwards".  */
-      low = get_frame_pc (fi);
+      low = sal.pc;
     }
   else
-    low = tui_get_low_disassembly_address (get_frame_arch (fi),
-					   low, get_frame_pc (fi));
+    low = tui_get_low_disassembly_address (frame_arch, low, sal.pc);
 
   struct tui_line_or_address a;
 
   a.loa = LOA_ADDRESS;
   a.u.addr = low;
-  if (!addr_is_displayed (addr))
-    update_source_window (get_frame_arch (fi), sal.symtab, a);
+  if (!addr_is_displayed (sal.pc))
+    {
+      sal.pc = low;
+      update_source_window (frame_arch, sal);
+    }
   else
     {
-      a.u.addr = addr;
+      a.u.addr = sal.pc;
       set_is_exec_point_at (a);
     }
 }
+
+void
+tui_disasm_window::display_start_addr (struct gdbarch **gdbarch_p,
+				       CORE_ADDR *addr_p)
+{
+  *gdbarch_p = m_gdbarch;
+  *addr_p = m_start_line_or_addr.u.addr;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-disasm.h ./gdb/tui/tui-disasm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-disasm.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-disasm.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Disassembly display.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
    
    Contributed by Hewlett-Packard Company.
 
@@ -30,10 +30,7 @@
 
 struct tui_disasm_window : public tui_source_window_base
 {
-  tui_disasm_window ()
-    : tui_source_window_base (DISASSEM_WIN)
-  {
-  }
+  tui_disasm_window () = default;
 
   DISABLE_COPY_AND_ASSIGN (tui_disasm_window);
 
@@ -44,23 +41,22 @@ struct tui_disasm_window : public tui_so
 
   bool location_matches_p (struct bp_location *loc, int line_no) override;
 
-  void maybe_update (struct frame_info *fi, symtab_and_line sal,
-		     int line_no, CORE_ADDR addr)
-    override;
+  void maybe_update (struct frame_info *fi, symtab_and_line sal) override;
 
   void erase_source_content () override
   {
     do_erase_source_content (_("[ No Assembly Available ]"));
   }
 
+  void display_start_addr (struct gdbarch **gdbarch_p,
+			   CORE_ADDR *addr_p) override;
+
 protected:
 
   void do_scroll_vertical (int num_to_scroll) override;
 
-  enum tui_status set_contents
-    (struct gdbarch *gdbarch,
-     struct symtab *s,
-     struct tui_line_or_address line_or_addr) override;
+  bool set_contents (struct gdbarch *gdbarch,
+		     const struct symtab_and_line &sal) override;
 
 private:
   /* Answer whether a particular line number or address is displayed
@@ -68,8 +64,6 @@ private:
   bool addr_is_displayed (CORE_ADDR addr) const;
 };
 
-extern void tui_show_disassem (struct gdbarch *, CORE_ADDR);
-extern void tui_show_disassem_and_update_source (struct gdbarch *, CORE_ADDR);
 extern void tui_get_begin_asm_address (struct gdbarch **, CORE_ADDR *);
 
 #endif /* TUI_TUI_DISASM_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-file.c ./gdb/tui/tui-file.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-file.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-file.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* UI_FILE - a generic STDIO like output stream.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-file.h ./gdb/tui/tui-file.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-file.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-file.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* TUI_FILE - a STDIO-like output stream for the TUI.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui.h ./gdb/tui/tui.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* External/Public TUI Header File.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -40,21 +40,18 @@ enum tui_win_type
   CMD_WIN,
   /* This must ALWAYS be AFTER the major windows last.  */
   MAX_MAJOR_WINDOWS,
-  /* Auxiliary windows.  */
-  LOCATOR_WIN,
-  DATA_ITEM_WIN
 };
 
 extern CORE_ADDR tui_get_low_disassembly_address (struct gdbarch *,
 						  CORE_ADDR, CORE_ADDR);
 extern void tui_show_assembly (struct gdbarch *gdbarch, CORE_ADDR addr);
 extern bool tui_is_window_visible (enum tui_win_type type);
-extern int tui_get_command_dimension (unsigned int *width,
-				      unsigned int *height);
+extern bool tui_get_command_dimension (unsigned int *width,
+				       unsigned int *height);
 
-/* Initialize readline and configure the keymap for the switching
-   key shortcut.  */
-extern void tui_initialize_readline (void);
+/* Initialize readline and configure the keymap for the switching key
+   shortcut.  May be called more than once without issue.  */
+extern void tui_ensure_readline_initialized ();
 
 /* Enter in the tui mode (curses).  */
 extern void tui_enable (void);
@@ -81,8 +78,6 @@ extern enum tui_key_mode tui_current_key
    keymap.  */
 extern void tui_set_key_mode (enum tui_key_mode mode);
 
-extern int tui_active;
-
-extern void tui_show_source (const char *fullname, int line);
+extern bool tui_active;
 
 #endif /* TUI_TUI_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-hooks.c ./gdb/tui/tui-hooks.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-hooks.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-hooks.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB hooks for TUI.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -26,7 +26,7 @@
 #include "objfiles.h"
 #include "target.h"
 #include "gdbcore.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "event-top.h"
 #include "frame.h"
 #include "breakpoint.h"
@@ -57,7 +57,7 @@ tui_new_objfile_hook (struct objfile* ob
 }
 
 /* Prevent recursion of deprecated_register_changed_hook().  */
-static int tui_refreshing_registers = 0;
+static bool tui_refreshing_registers = false;
 
 /* Observer for the register_changed notification.  */
 
@@ -75,11 +75,11 @@ tui_register_changed (struct frame_info
      up in the other.  So we always use the selected frame here, and ignore
      FRAME.  */
   fi = get_selected_frame (NULL);
-  if (tui_refreshing_registers == 0)
+  if (!tui_refreshing_registers)
     {
-      tui_refreshing_registers = 1;
+      tui_refreshing_registers = true;
       TUI_DATA_WIN->check_register_values (fi);
-      tui_refreshing_registers = 0;
+      tui_refreshing_registers = false;
     }
 }
 
@@ -105,53 +105,52 @@ tui_event_modify_breakpoint (struct brea
   tui_update_all_breakpoint_info (nullptr);
 }
 
-/* Refresh TUI's frame and register information.  This is a hook intended to be
-   used to update the screen after potential frame and register changes.
+/* This is set to true if the next window refresh should come from the
+   current stack frame.  */
+
+static bool from_stack;
+
+/* This is set to true if the next window refresh should come from the
+   current source symtab.  */
 
-   REGISTERS_TOO_P controls whether to refresh our register information even
-   if frame information hasn't changed.  */
+static bool from_source_symtab;
+
+/* Refresh TUI's frame and register information.  This is a hook intended to be
+   used to update the screen after potential frame and register changes.  */
 
 static void
-tui_refresh_frame_and_register_information (int registers_too_p)
+tui_refresh_frame_and_register_information ()
 {
-  struct frame_info *fi;
-  CORE_ADDR pc;
-  int frame_info_changed_p;
-
-  if (!has_stack_frames ())
+  if (!from_stack && !from_source_symtab)
     return;
 
   target_terminal::scoped_restore_terminal_state term_state;
   target_terminal::ours_for_output ();
 
-  fi = get_selected_frame (NULL);
-  /* Ensure that symbols for this frame are read in.  Also, determine
-     the source language of this frame, and switch to it if
-     desired.  */
-  if (get_frame_pc_if_available (fi, &pc))
+  if (from_stack && has_stack_frames ())
     {
-      struct symtab *s;
+      struct frame_info *fi = get_selected_frame (NULL);
 
-      s = find_pc_line_symtab (pc);
-      /* elz: This if here fixes the problem with the pc not being
-	 displayed in the tui asm layout, with no debug symbols.  The
-	 value of s would be 0 here, and select_source_symtab would
-	 abort the command by calling the 'error' function.  */
-      if (s)
-	select_source_symtab (s);
+      /* Display the frame position (even if there is no symbols or
+	 the PC is not known).  */
+      bool frame_info_changed_p = tui_show_frame_info (fi);
+
+      /* Refresh the register window if it's visible.  */
+      if (tui_is_window_visible (DATA_WIN)
+	  && (frame_info_changed_p || from_stack))
+	{
+	  tui_refreshing_registers = true;
+	  TUI_DATA_WIN->check_register_values (fi);
+	  tui_refreshing_registers = false;
+	}
     }
-
-  /* Display the frame position (even if there is no symbols or the PC
-     is not known).  */
-  frame_info_changed_p = tui_show_frame_info (fi);
-
-  /* Refresh the register window if it's visible.  */
-  if (tui_is_window_visible (DATA_WIN)
-      && (frame_info_changed_p || registers_too_p))
+  else if (!from_stack)
     {
-      tui_refreshing_registers = 1;
-      TUI_DATA_WIN->check_register_values (fi);
-      tui_refreshing_registers = 0;
+      /* Make sure that the source window is displayed.  */
+      tui_add_win_to_layout (SRC_WIN);
+
+      struct symtab_and_line sal = get_current_source_symtab_and_line ();
+      tui_update_source_windows_with_line (sal);
     }
 }
 
@@ -183,12 +182,9 @@ tui_inferior_exit (struct inferior *inf)
 static void
 tui_before_prompt (const char *current_gdb_prompt)
 {
-  /* This refresh is intended to catch changes to the selected frame following
-     a call to "up", "down" or "frame".  As such we don't necessarily want to
-     refresh registers here unless the frame actually changed by one of these
-     commands.  Registers will otherwise be refreshed after a normal stop or by
-     our tui_register_changed_hook.  */
-  tui_refresh_frame_and_register_information (/*registers_too_p=*/0);
+  tui_refresh_frame_and_register_information ();
+  from_stack = false;
+  from_source_symtab = false;
 }
 
 /* Observer for the normal_stop notification.  */
@@ -196,9 +192,23 @@ tui_before_prompt (const char *current_g
 static void
 tui_normal_stop (struct bpstats *bs, int print_frame)
 {
-  /* This refresh is intended to catch changes to the selected frame and to
-     registers following a normal stop.  */
-  tui_refresh_frame_and_register_information (/*registers_too_p=*/1);
+  from_stack = true;
+}
+
+/* Observer for user_selected_context_changed.  */
+
+static void
+tui_context_changed (user_selected_what ignore)
+{
+  from_stack = true;
+}
+
+/* Observer for current_source_symtab_and_line_changed.  */
+
+static void
+tui_symtab_changed ()
+{
+  from_source_symtab = true;
 }
 
 /* Token associated with observers registered while TUI hooks are
@@ -236,6 +246,10 @@ tui_attach_detach_observers (bool attach
 		    tui_normal_stop, attach);
   attach_or_detach (gdb::observers::register_changed,
 		    tui_register_changed, attach);
+  attach_or_detach (gdb::observers::user_selected_context_changed,
+		    tui_context_changed, attach);
+  attach_or_detach (gdb::observers::current_source_symtab_and_line_changed,
+		    tui_symtab_changed, attach);
 }
 
 /* Install the TUI specific hooks.  */
@@ -263,8 +277,9 @@ tui_remove_hooks (void)
   tui_attach_detach_observers (false);
 }
 
+void _initialize_tui_hooks ();
 void
-_initialize_tui_hooks (void)
+_initialize_tui_hooks ()
 {
   /* Install the permanent hooks.  */
   gdb::observers::new_objfile.attach (tui_new_objfile_hook);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-hooks.h ./gdb/tui/tui-hooks.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-hooks.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-hooks.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* External/Public TUI hools header file, for GDB the GNU debugger.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-interp.c ./gdb/tui/tui-interp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-interp.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-interp.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI Interpreter definitions for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,7 +22,7 @@
 #include "interps.h"
 #include "top.h"
 #include "event-top.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "ui-out.h"
 #include "cli-out.h"
 #include "tui/tui-data.h"
@@ -35,9 +35,9 @@
 #include "inferior.h"
 #include "main.h"
 
-/* Set to 1 when the TUI mode must be activated when we first start
+/* Set to true when the TUI mode must be activated when we first start
    gdb.  */
-static int tui_start_enabled = 0;
+static bool tui_start_enabled = false;
 
 class tui_interp final : public cli_interp_base
 {
@@ -243,8 +243,8 @@ tui_interp::init (bool top_level)
 
   tui_initialize_io ();
   tui_initialize_win ();
-  if (ui_file_isatty (gdb_stdout))
-    tui_initialize_readline ();
+  if (gdb_stdout->isatty ())
+    tui_ensure_readline_initialized ();
 }
 
 void
@@ -306,13 +306,14 @@ tui_interp_factory (const char *name)
   return new tui_interp (name);
 }
 
+void _initialize_tui_interp ();
 void
-_initialize_tui_interp (void)
+_initialize_tui_interp ()
 {
   interp_factory_register (INTERP_TUI, tui_interp_factory);
 
   if (interpreter_p && strcmp (interpreter_p, INTERP_TUI) == 0)
-    tui_start_enabled = 1;
+    tui_start_enabled = true;
 
   if (interpreter_p && strcmp (interpreter_p, INTERP_CONSOLE) == 0)
     {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-io.c ./gdb/tui/tui-io.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-io.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-io.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI support I/O functions.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -21,7 +21,7 @@
 
 #include "defs.h"
 #include "target.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "event-top.h"
 #include "command.h"
 #include "top.h"
@@ -131,10 +131,6 @@ static FILE *tui_old_rl_outstream;
 static int tui_readline_pipe[2];
 #endif
 
-/* The last gdb prompt that was registered in readline.
-   This may be the main gdb prompt or a secondary prompt.  */
-static char *tui_rl_saved_prompt;
-
 /* Print a character in the curses command window.  The output is
    buffered.  It is up to the caller to refresh the screen if
    necessary.  */
@@ -142,35 +138,21 @@ static char *tui_rl_saved_prompt;
 static void
 do_tui_putc (WINDOW *w, char c)
 {
-  static int tui_skip_line = -1;
-
-  /* Catch annotation and discard them.  We need two \032 and discard
-     until a \n is seen.  */
-  if (c == '\032')
+  /* Expand TABs, since ncurses on MS-Windows doesn't.  */
+  if (c == '\t')
     {
-      tui_skip_line++;
-    }
-  else if (tui_skip_line != 1)
-    {
-      tui_skip_line = -1;
-      /* Expand TABs, since ncurses on MS-Windows doesn't.  */
-      if (c == '\t')
-	{
-	  int col;
+      int col;
 
-	  col = getcurx (w);
-	  do
-	    {
-	      waddch (w, ' ');
-	      col++;
-	    }
-	  while ((col % 8) != 0);
+      col = getcurx (w);
+      do
+	{
+	  waddch (w, ' ');
+	  col++;
 	}
-      else
-	waddch (w, c);
+      while ((col % 8) != 0);
     }
-  else if (c == '\n')
-    tui_skip_line = -1;
+  else
+    waddch (w, c);
 }
 
 /* Update the cached value of the command window's start line based on
@@ -538,7 +520,7 @@ tui_redisplay_readline (void)
   if (tui_current_key_mode == TUI_SINGLE_KEY_MODE)
     prompt = "";
   else
-    prompt = tui_rl_saved_prompt;
+    prompt = rl_display_prompt;
   
   c_pos = -1;
   c_line = -1;
@@ -606,11 +588,6 @@ tui_redisplay_readline (void)
 static void
 tui_prep_terminal (int notused1)
 {
-  /* Save the prompt registered in readline to correctly display it.
-     (we can't use gdb_prompt() due to secondary prompts and can't use
-     rl_prompt because it points to an alloca buffer).  */
-  xfree (tui_rl_saved_prompt);
-  tui_rl_saved_prompt = rl_prompt != NULL ? xstrdup (rl_prompt) : NULL;
 }
 
 /* Readline callback to restore the terminal.  It is called once each
@@ -769,6 +746,10 @@ tui_setup_io (int mode)
 
   if (mode)
     {
+      /* Ensure that readline has been initialized before saving any
+	 of its variables.  */
+      tui_ensure_readline_initialized ();
+
       /* Redirect readline to TUI.  */
       tui_old_rl_redisplay_function = rl_redisplay_function;
       tui_old_rl_deprep_terminal = rl_deprep_term_function;
@@ -959,10 +940,12 @@ tui_dispatch_ctrl_char (unsigned int ch)
   return 0;
 }
 
-/* Get a character from the command window.  This is called from the
-   readline package.  */
+/* Main worker for tui_getc.  Get a character from the command window.
+   This is called from the readline package, but wrapped in a
+   try/catch by tui_getc.  */
+
 static int
-tui_getc (FILE *fp)
+tui_getc_1 (FILE *fp)
 {
   int ch;
   WINDOW *w;
@@ -1045,54 +1028,25 @@ tui_getc (FILE *fp)
   return ch;
 }
 
-/* See tui-io.h.  */
+/* Get a character from the command window.  This is called from the
+   readline package.  */
 
-gdb::unique_xmalloc_ptr<char>
-tui_expand_tabs (const char *string)
+static int
+tui_getc (FILE *fp)
 {
-  int n_adjust, ncol;
-  const char *s;
-  char *ret, *q;
-
-  /* 1. How many additional characters do we need?  */
-  for (ncol = 0, n_adjust = 0, s = string; s; )
+  try
     {
-      s = strpbrk (s, "\t");
-      if (s)
-	{
-	  ncol += (s - string) + n_adjust;
-	  /* Adjustment for the next tab stop, minus one for the TAB
-	     we replace with spaces.  */
-	  n_adjust += 8 - (ncol % 8) - 1;
-	  s++;
-	}
+      return tui_getc_1 (fp);
     }
-
-  /* Allocate the copy.  */
-  ret = q = (char *) xmalloc (strlen (string) + n_adjust + 1);
-
-  /* 2. Copy the original string while replacing TABs with spaces.  */
-  for (ncol = 0, s = string; s; )
+  catch (const gdb_exception &ex)
     {
-      const char *s1 = strpbrk (s, "\t");
-      if (s1)
-	{
-	  if (s1 > s)
-	    {
-	      strncpy (q, s, s1 - s);
-	      q += s1 - s;
-	      ncol += s1 - s;
-	    }
-	  do {
-	    *q++ = ' ';
-	    ncol++;
-	  } while ((ncol % 8) != 0);
-	  s1++;
-	}
-      else
-	strcpy (q, s);
-      s = s1;
+      /* Just in case, don't ever let an exception escape to readline.
+	 This shouldn't ever happen, but if it does, print the
+	 exception instead of just crashing GDB.  */
+      exception_print (gdb_stderr, ex);
+
+      /* If we threw an exception, it's because we recognized the
+	 character.  */
+      return 0;
     }
-
-  return gdb::unique_xmalloc_ptr<char> (ret);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-io.h ./gdb/tui/tui-io.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-io.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-io.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI support I/O functions.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -45,9 +45,6 @@ extern void tui_initialize_io (void);
    changed the edited text.  */
 extern void tui_redisplay_readline (void);
 
-/* Expand TABs into spaces.  */
-extern gdb::unique_xmalloc_ptr<char> tui_expand_tabs (const char *);
-
 /* Enter/leave reverse video mode.  */
 extern void tui_set_reverse_mode (WINDOW *w, bool reverse);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-layout.c ./gdb/tui/tui-layout.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-layout.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-layout.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI layout window management.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -25,7 +25,12 @@
 #include "symtab.h"
 #include "frame.h"
 #include "source.h"
+#include "cli/cli-cmds.h"
+#include "cli/cli-decode.h"
+#include "cli/cli-utils.h"
 #include <ctype.h>
+#include <unordered_map>
+#include <unordered_set>
 
 #include "tui/tui.h"
 #include "tui/tui-command.h"
@@ -40,452 +45,266 @@
 #include "tui/tui-source.h"
 #include "gdb_curses.h"
 
-static void show_layout (enum tui_layout_type);
-static void show_source_or_disasm_and_command (enum tui_layout_type);
-static void show_source_command (void);
-static void show_disasm_command (void);
-static void show_source_disasm_command (void);
-static void show_data (enum tui_layout_type);
-static enum tui_layout_type next_layout (void);
-static enum tui_layout_type prev_layout (void);
-static void tui_layout_command (const char *, int);
 static void extract_display_start_addr (struct gdbarch **, CORE_ADDR *);
 
+/* The layouts.  */
+static std::vector<std::unique_ptr<tui_layout_split>> layouts;
 
-static enum tui_layout_type current_layout = UNDEFINED_LAYOUT;
+/* The layout that is currently applied.  */
+static std::unique_ptr<tui_layout_base> applied_layout;
 
-/* Accessor for the current layout.  */
-enum tui_layout_type
-tui_current_layout (void)
-{
-  return current_layout;
-}
+/* The "skeleton" version of the layout that is currently applied.  */
+static tui_layout_split *applied_skeleton;
 
+/* The two special "regs" layouts.  Note that these aren't registered
+   as commands and so can never be deleted.  */
+static tui_layout_split *src_regs_layout;
+static tui_layout_split *asm_regs_layout;
 
-/* Show the screen layout defined.  */
-static void
-show_layout (enum tui_layout_type layout)
-{
-  enum tui_layout_type cur_layout = tui_current_layout ();
+/* See tui-data.h.  */
+std::vector<tui_win_info *> tui_windows;
 
-  if (layout != cur_layout)
-    {
-      tui_make_all_invisible ();
-      switch (layout)
-	{
-	case SRC_DATA_COMMAND:
-	case DISASSEM_DATA_COMMAND:
-	  show_data (layout);
-	  break;
-	  /* Now show the new layout.  */
-	case SRC_COMMAND:
-	  show_source_command ();
-	  break;
-	case DISASSEM_COMMAND:
-	  show_disasm_command ();
-	  break;
-	case SRC_DISASSEM_COMMAND:
-	  show_source_disasm_command ();
-	  break;
-	default:
-	  break;
-	}
+/* When applying a layout, this is the list of all windows that were
+   in the previous layout.  This is used to re-use windows when
+   changing a layout.  */
+static std::vector<tui_win_info *> saved_tui_windows;
 
-      current_layout = layout;
-      tui_delete_invisible_windows ();
-    }
-}
+/* See tui-layout.h.  */
 
-
-/* Function to set the layout to SRC_COMMAND, DISASSEM_COMMAND,
-   SRC_DISASSEM_COMMAND, SRC_DATA_COMMAND, or DISASSEM_DATA_COMMAND.  */
 void
-tui_set_layout (enum tui_layout_type layout_type)
+tui_apply_current_layout ()
 {
-  gdb_assert (layout_type != UNDEFINED_LAYOUT);
-
-  enum tui_layout_type cur_layout = tui_current_layout ();
   struct gdbarch *gdbarch;
   CORE_ADDR addr;
-  struct tui_win_info *win_with_focus = tui_win_with_focus ();
 
   extract_display_start_addr (&gdbarch, &addr);
 
-  enum tui_layout_type new_layout = layout_type;
+  saved_tui_windows = std::move (tui_windows);
+  tui_windows.clear ();
 
-  if (new_layout != cur_layout)
-    {
-      show_layout (new_layout);
+  for (tui_win_info *win_info : saved_tui_windows)
+    win_info->make_visible (false);
 
-      /* Now determine where focus should be.  */
-      if (win_with_focus != TUI_CMD_WIN)
-	{
-	  switch (new_layout)
-	    {
-	    case SRC_COMMAND:
-	      tui_set_win_focus_to (TUI_SRC_WIN);
-	      break;
-	    case DISASSEM_COMMAND:
-	      /* The previous layout was not showing code.
-		 This can happen if there is no source
-		 available:
-
-		 1. if the source file is in another dir OR
-		 2. if target was compiled without -g
-		 We still want to show the assembly though!  */
-
-	      tui_get_begin_asm_address (&gdbarch, &addr);
-	      tui_set_win_focus_to (TUI_DISASM_WIN);
-	      break;
-	    case SRC_DISASSEM_COMMAND:
-	      /* The previous layout was not showing code.
-		 This can happen if there is no source
-		 available:
-
-		 1. if the source file is in another dir OR
-		 2. if target was compiled without -g
-		 We still want to show the assembly though!  */
-
-	      tui_get_begin_asm_address (&gdbarch, &addr);
-	      if (win_with_focus == TUI_SRC_WIN)
-		tui_set_win_focus_to (TUI_SRC_WIN);
-	      else
-		tui_set_win_focus_to (TUI_DISASM_WIN);
-	      break;
-	    case SRC_DATA_COMMAND:
-	      if (win_with_focus != TUI_DATA_WIN)
-		tui_set_win_focus_to (TUI_SRC_WIN);
-	      else
-		tui_set_win_focus_to (TUI_DATA_WIN);
-	      break;
-	    case DISASSEM_DATA_COMMAND:
-	      /* The previous layout was not showing code.
-		 This can happen if there is no source
-		 available:
-
-		 1. if the source file is in another dir OR
-		 2. if target was compiled without -g
-		 We still want to show the assembly though!  */
-
-	      tui_get_begin_asm_address (&gdbarch, &addr);
-	      if (win_with_focus != TUI_DATA_WIN)
-		tui_set_win_focus_to (TUI_DISASM_WIN);
-	      else
-		tui_set_win_focus_to (TUI_DATA_WIN);
-	      break;
-	    default:
-	      break;
-	    }
-	}
-      /*
-       * Now update the window content.
-       */
-      tui_update_source_windows_with_addr (gdbarch, addr);
-      if (new_layout == SRC_DATA_COMMAND
-	  || new_layout == DISASSEM_DATA_COMMAND)
-	TUI_DATA_WIN->show_registers (TUI_DATA_WIN->get_current_group ());
-    }
-}
-
-/* Add the specified window to the layout in a logical way.  This
-   means setting up the most logical layout given the window to be
-   added.  */
-void
-tui_add_win_to_layout (enum tui_win_type type)
-{
-  enum tui_layout_type cur_layout = tui_current_layout ();
+  applied_layout->apply (0, 0, tui_term_width (), tui_term_height ());
 
-  switch (type)
+  /* Keep the list of internal windows up-to-date.  */
+  for (int win_type = SRC_WIN; (win_type < MAX_MAJOR_WINDOWS); win_type++)
+    if (tui_win_list[win_type] != nullptr
+	&& !tui_win_list[win_type]->is_visible ())
+      tui_win_list[win_type] = nullptr;
+
+  /* This should always be made visible by a layout.  */
+  gdb_assert (TUI_CMD_WIN->is_visible ());
+
+  /* Now delete any window that was not re-applied.  */
+  tui_win_info *focus = tui_win_with_focus ();
+  tui_win_info *locator = tui_locator_win_info_ptr ();
+  for (tui_win_info *win_info : saved_tui_windows)
     {
-    case SRC_WIN:
-      if (cur_layout != SRC_COMMAND
-	  && cur_layout != SRC_DISASSEM_COMMAND
-	  && cur_layout != SRC_DATA_COMMAND)
+      if (!win_info->is_visible ())
 	{
-	  if (cur_layout == DISASSEM_DATA_COMMAND)
-	    show_layout (SRC_DATA_COMMAND);
-	  else
-	    show_layout (SRC_COMMAND);
+	  if (focus == win_info)
+	    tui_set_win_focus_to (tui_windows[0]);
+	  if (win_info != locator)
+	    delete win_info;
 	}
-      break;
-    case DISASSEM_WIN:
-      if (cur_layout != DISASSEM_COMMAND
-	  && cur_layout != SRC_DISASSEM_COMMAND
-	  && cur_layout != DISASSEM_DATA_COMMAND)
-	{
-	  if (cur_layout == SRC_DATA_COMMAND)
-	    show_layout (DISASSEM_DATA_COMMAND);
-	  else
-	    show_layout (DISASSEM_COMMAND);
-	}
-      break;
-    case DATA_WIN:
-      if (cur_layout != SRC_DATA_COMMAND
-	  && cur_layout != DISASSEM_DATA_COMMAND)
-	{
-	  if (cur_layout == DISASSEM_COMMAND)
-	    show_layout (DISASSEM_DATA_COMMAND);
-	  else
-	    show_layout (SRC_DATA_COMMAND);
-	}
-      break;
-    default:
-      break;
     }
+
+  if (gdbarch == nullptr && TUI_DISASM_WIN != nullptr)
+    tui_get_begin_asm_address (&gdbarch, &addr);
+  tui_update_source_windows_with_addr (gdbarch, addr);
+
+  saved_tui_windows.clear ();
 }
 
-/* Complete possible layout names.  TEXT is the complete text entered so
-   far, WORD is the word currently being completed.  */
+/* See tui-layout.  */
 
-static void
-layout_completer (struct cmd_list_element *ignore,
-		  completion_tracker &tracker,
-		  const char *text, const char *word)
+void
+tui_adjust_window_height (struct tui_win_info *win, int new_height)
 {
-  static const char *layout_names [] =
-    { "src", "asm", "split", "regs", "next", "prev", NULL };
-
-  complete_on_enum (tracker, layout_names, text, word);
+  applied_layout->adjust_size (win->name (), new_height);
 }
 
-/* Function to set the layout to SRC, ASM, SPLIT, NEXT, PREV, DATA, or
-   REGS. */
+/* Set the current layout to LAYOUT.  */
+
 static void
-tui_layout_command (const char *layout_name, int from_tty)
+tui_set_layout (tui_layout_split *layout)
 {
-  enum tui_layout_type new_layout = UNDEFINED_LAYOUT;
-  enum tui_layout_type cur_layout = tui_current_layout ();
-
-  if (layout_name == NULL || *layout_name == '\0')
-    error (_("Usage: layout prev | next | LAYOUT-NAME"));
-
-  /* First check for ambiguous input.  */
-  if (strcmp (layout_name, "s") == 0)
-    error (_("Ambiguous command input."));
-
-  if (subset_compare (layout_name, "src"))
-    new_layout = SRC_COMMAND;
-  else if (subset_compare (layout_name, "asm"))
-    new_layout = DISASSEM_COMMAND;
-  else if (subset_compare (layout_name, "split"))
-    new_layout = SRC_DISASSEM_COMMAND;
-  else if (subset_compare (layout_name, "regs"))
-    {
-      if (cur_layout == SRC_COMMAND
-	  || cur_layout == SRC_DATA_COMMAND)
-	new_layout = SRC_DATA_COMMAND;
-      else
-	new_layout = DISASSEM_DATA_COMMAND;
-    }
-  else if (subset_compare (layout_name, "next"))
-    new_layout = next_layout ();
-  else if (subset_compare (layout_name, "prev"))
-    new_layout = prev_layout ();
-  else
-    error (_("Unrecognized layout: %s"), layout_name);
-
-  /* Make sure the curses mode is enabled.  */
-  tui_enable ();
-  tui_set_layout (new_layout);
+  applied_skeleton = layout;
+  applied_layout = layout->clone ();
+  tui_apply_current_layout ();
 }
 
+/* See tui-layout.h.  */
 
-static void
-extract_display_start_addr (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
+void
+tui_add_win_to_layout (enum tui_win_type type)
 {
-  enum tui_layout_type cur_layout = tui_current_layout ();
-  struct gdbarch *gdbarch = get_current_arch ();
-  CORE_ADDR addr;
-  CORE_ADDR pc;
-  struct symtab_and_line cursal = get_current_source_symtab_and_line ();
+  gdb_assert (type == SRC_WIN || type == DISASSEM_WIN);
 
-  switch (cur_layout)
-    {
-    case SRC_COMMAND:
-    case SRC_DATA_COMMAND:
-      gdbarch = TUI_SRC_WIN->gdbarch;
-      find_line_pc (cursal.symtab,
-		    TUI_SRC_WIN->start_line_or_addr.u.line_no,
-		    &pc);
-      addr = pc;
-      break;
-    case DISASSEM_COMMAND:
-    case SRC_DISASSEM_COMMAND:
-    case DISASSEM_DATA_COMMAND:
-      gdbarch = TUI_DISASM_WIN->gdbarch;
-      addr = TUI_DISASM_WIN->start_line_or_addr.u.addr;
-      break;
-    default:
-      addr = 0;
-      break;
-    }
-
-  *gdbarch_p = gdbarch;
-  *addr_p = addr;
+  /* If the window already exists, no need to add it.  */
+  if (tui_win_list[type] != nullptr)
+    return;
+
+  /* If the window we are trying to replace doesn't exist, we're
+     done.  */
+  enum tui_win_type other = type == SRC_WIN ? DISASSEM_WIN : SRC_WIN;
+  if (tui_win_list[other] == nullptr)
+    return;
+
+  const char *name = type == SRC_WIN ? SRC_NAME : DISASSEM_NAME;
+  applied_layout->replace_window (tui_win_list[other]->name (), name);
+  tui_apply_current_layout ();
 }
 
+/* Find LAYOUT in the "layouts" global and return its index.  */
 
-/* Answer the previous layout to cycle to.  */
-static enum tui_layout_type
-next_layout (void)
-{
-  int new_layout;
-
-  new_layout = tui_current_layout ();
-  if (new_layout == UNDEFINED_LAYOUT)
-    new_layout = SRC_COMMAND;
-  else
+static size_t
+find_layout (tui_layout_split *layout)
+{
+  for (size_t i = 0; i < layouts.size (); ++i)
     {
-      new_layout++;
-      if (new_layout == UNDEFINED_LAYOUT)
-	new_layout = SRC_COMMAND;
+      if (layout == layouts[i].get ())
+	return i;
     }
-
-  return (enum tui_layout_type) new_layout;
+  gdb_assert_not_reached (_("layout not found!?"));
 }
 
+/* Function to set the layout. */
 
-/* Answer the next layout to cycle to.  */
-static enum tui_layout_type
-prev_layout (void)
+static void
+tui_apply_layout (struct cmd_list_element *command,
+		  const char *args, int from_tty)
 {
-  int new_layout;
+  tui_layout_split *layout
+    = (tui_layout_split *) get_cmd_context (command);
 
-  new_layout = tui_current_layout ();
-  if (new_layout == SRC_COMMAND)
-    new_layout = DISASSEM_DATA_COMMAND;
-  else
-    {
-      new_layout--;
-      if (new_layout == UNDEFINED_LAYOUT)
-	new_layout = DISASSEM_DATA_COMMAND;
-    }
+  /* Make sure the curses mode is enabled.  */
+  tui_enable ();
+  tui_set_layout (layout);
+}
 
-  return (enum tui_layout_type) new_layout;
+/* See tui-layout.h.  */
+
+void
+tui_next_layout ()
+{
+  size_t index = find_layout (applied_skeleton);
+  ++index;
+  if (index == layouts.size ())
+    index = 0;
+  tui_set_layout (layouts[index].get ());
 }
 
-/* Show the Source/Command layout.  */
+/* Implement the "layout next" command.  */
+
 static void
-show_source_command (void)
+tui_next_layout_command (const char *arg, int from_tty)
 {
-  show_source_or_disasm_and_command (SRC_COMMAND);
+  tui_enable ();
+  tui_next_layout ();
 }
 
+/* See tui-layout.h.  */
 
-/* Show the Dissassem/Command layout.  */
-static void
-show_disasm_command (void)
+void
+tui_set_initial_layout ()
 {
-  show_source_or_disasm_and_command (DISASSEM_COMMAND);
+  tui_set_layout (layouts[0].get ());
 }
 
+/* Implement the "layout prev" command.  */
 
-/* Show the Source/Disassem/Command layout.  */
 static void
-show_source_disasm_command (void)
+tui_prev_layout_command (const char *arg, int from_tty)
 {
-  int cmd_height, src_height, asm_height;
+  tui_enable ();
+  size_t index = find_layout (applied_skeleton);
+  if (index == 0)
+    index = layouts.size ();
+  --index;
+  tui_set_layout (layouts[index].get ());
+}
 
-  if (TUI_CMD_WIN != NULL)
-    cmd_height = TUI_CMD_WIN->height;
-  else
-    cmd_height = tui_term_height () / 3;
 
-  src_height = (tui_term_height () - cmd_height) / 2;
-  asm_height = tui_term_height () - (src_height + cmd_height);
+/* See tui-layout.h.  */
+
+void
+tui_regs_layout ()
+{
+  /* If there's already a register window, we're done.  */
+  if (TUI_DATA_WIN != nullptr)
+    return;
 
-  if (TUI_SRC_WIN == NULL)
-    tui_win_list[SRC_WIN] = new tui_source_window ();
-  TUI_SRC_WIN->resize (src_height,
-		       tui_term_width (),
-		       0,
-		       0);
-
-  struct tui_locator_window *locator = tui_locator_win_info_ptr ();
-  gdb_assert (locator != nullptr);
-
-  if (TUI_DISASM_WIN == NULL)
-    tui_win_list[DISASSEM_WIN] = new tui_disasm_window ();
-  TUI_DISASM_WIN->resize (asm_height,
-			  tui_term_width (),
-			  0,
-			  src_height - 1);
-  locator->resize (1, tui_term_width (),
-		   0, (src_height + asm_height) - 1);
-
-  if (TUI_CMD_WIN == NULL)
-    tui_win_list[CMD_WIN] = new tui_cmd_window ();
-  TUI_CMD_WIN->resize (cmd_height,
-		       tui_term_width (),
-		       0,
-		       tui_term_height () - cmd_height);
+  tui_set_layout (TUI_DISASM_WIN != nullptr
+		  ? asm_regs_layout
+		  : src_regs_layout);
 }
 
+/* Implement the "layout regs" command.  */
 
-/* Show the Source/Data/Command or the Dissassembly/Data/Command
-   layout.  */
 static void
-show_data (enum tui_layout_type new_layout)
+tui_regs_layout_command (const char *arg, int from_tty)
 {
-  int total_height = (tui_term_height () - TUI_CMD_WIN->height);
-  int src_height, data_height;
-  enum tui_win_type win_type;
-
-  struct tui_locator_window *locator = tui_locator_win_info_ptr ();
-  gdb_assert (locator != nullptr);
-
-  data_height = total_height / 2;
-  src_height = total_height - data_height;
-  if (tui_win_list[DATA_WIN] == nullptr)
-    tui_win_list[DATA_WIN] = new tui_data_window ();
-  tui_win_list[DATA_WIN]->resize (data_height, tui_term_width (), 0, 0);
+  tui_enable ();
+  tui_regs_layout ();
+}
 
-  if (new_layout == SRC_DATA_COMMAND)
-    win_type = SRC_WIN;
-  else
-    win_type = DISASSEM_WIN;
+/* See tui-layout.h.  */
 
-  if (tui_win_list[win_type] == NULL)
+void
+tui_remove_some_windows ()
+{
+  tui_win_info *focus = tui_win_with_focus ();
+
+  if (strcmp (focus->name (), CMD_NAME) == 0)
     {
-      if (win_type == SRC_WIN)
-	tui_win_list[win_type] = new tui_source_window ();
-      else
-	tui_win_list[win_type] = new tui_disasm_window ();
+      /* Try leaving the source or disassembly window.  If neither
+	 exists, just do nothing.  */
+      focus = TUI_SRC_WIN;
+      if (focus == nullptr)
+	focus = TUI_DISASM_WIN;
+      if (focus == nullptr)
+	return;
     }
 
-  tui_win_list[win_type]->resize (src_height,
-				  tui_term_width (),
-				  0,
-				  data_height - 1);
-  locator->resize (1, tui_term_width (),
-		   0, total_height - 1);
-  TUI_CMD_WIN->resize (TUI_CMD_WIN->height, tui_term_width (),
-		       0, total_height);
+  applied_layout->remove_windows (focus->name ());
+  tui_apply_current_layout ();
+}
+
+static void
+extract_display_start_addr (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
+{
+  if (TUI_SRC_WIN != nullptr)
+    TUI_SRC_WIN->display_start_addr (gdbarch_p, addr_p);
+  else if (TUI_DISASM_WIN != nullptr)
+    TUI_DISASM_WIN->display_start_addr (gdbarch_p, addr_p);
+  else
+    {
+      *gdbarch_p = nullptr;
+      *addr_p = 0;
+    }
 }
 
 void
-tui_gen_win_info::resize (int height_, int width_,
-			  int origin_x_, int origin_y_)
+tui_win_info::resize (int height_, int width_,
+		      int origin_x_, int origin_y_)
 {
   if (width == width_ && height == height_
-      && origin.x == origin_x_ && origin.y == origin_y_
+      && x == origin_x_ && y == origin_y_
       && handle != nullptr)
     return;
 
   width = width_;
   height = height_;
-  if (height > 1)
-    viewport_height = height - 2;
-  else
-    viewport_height = 1;
-  origin.x = origin_x_;
-  origin.y = origin_y_;
+  x = origin_x_;
+  y = origin_y_;
 
   if (handle != nullptr)
     {
 #ifdef HAVE_WRESIZE
       wresize (handle.get (), height, width);
-      mvwin (handle.get (), origin.y, origin.x);
+      mvwin (handle.get (), y, x);
       wmove (handle.get (), 0, 0);
 #else
       handle.reset (nullptr);
@@ -498,71 +317,748 @@ tui_gen_win_info::resize (int height_, i
   rerender ();
 }
 
-/* Show the Source/Command or the Disassem layout.  */
+
+
+/* Helper function to create one of the built-in (non-locator)
+   windows.  */
+
+template<enum tui_win_type V, class T>
+static tui_win_info *
+make_standard_window (const char *)
+{
+  if (tui_win_list[V] == nullptr)
+    tui_win_list[V] = new T ();
+  return tui_win_list[V];
+}
+
+/* Helper function to wrap tui_locator_win_info_ptr for
+   tui_get_window_by_name.  */
+
+static tui_win_info *
+get_locator_window (const char *)
+{
+  return tui_locator_win_info_ptr ();
+}
+
+/* A map holding all the known window types, keyed by name.  Note that
+   this is heap-allocated and "leaked" at gdb exit.  This avoids
+   ordering issues with destroying elements in the map at shutdown.
+   In particular, destroying this map can occur after Python has been
+   shut down, causing crashes if any window destruction requires
+   running Python code.  */
+
+static std::unordered_map<std::string, window_factory> *known_window_types;
+
+/* Helper function that returns a TUI window, given its name.  */
+
+static tui_win_info *
+tui_get_window_by_name (const std::string &name)
+{
+  for (tui_win_info *window : saved_tui_windows)
+    if (name == window->name ())
+      return window;
+
+  auto iter = known_window_types->find (name);
+  if (iter == known_window_types->end ())
+    error (_("Unknown window type \"%s\""), name.c_str ());
+
+  tui_win_info *result = iter->second (name.c_str ());
+  if (result == nullptr)
+    error (_("Could not create window \"%s\""), name.c_str ());
+  return result;
+}
+
+/* Initialize the known window types.  */
+
 static void
-show_source_or_disasm_and_command (enum tui_layout_type layout_type)
+initialize_known_windows ()
+{
+  known_window_types = new std::unordered_map<std::string, window_factory>;
+
+  known_window_types->emplace (SRC_NAME,
+			       make_standard_window<SRC_WIN,
+						    tui_source_window>);
+  known_window_types->emplace (CMD_NAME,
+			       make_standard_window<CMD_WIN, tui_cmd_window>);
+  known_window_types->emplace (DATA_NAME,
+			       make_standard_window<DATA_WIN,
+						    tui_data_window>);
+  known_window_types->emplace (DISASSEM_NAME,
+			       make_standard_window<DISASSEM_WIN,
+						    tui_disasm_window>);
+  known_window_types->emplace (STATUS_NAME, get_locator_window);
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_register_window (const char *name, window_factory &&factory)
 {
-  struct tui_source_window_base *win_info;
-  int src_height, cmd_height;
-  struct tui_locator_window *locator = tui_locator_win_info_ptr ();
-  gdb_assert (locator != nullptr);
+  std::string name_copy = name;
 
-  if (TUI_CMD_WIN != NULL)
-    cmd_height = TUI_CMD_WIN->height;
+  if (name_copy == SRC_NAME || name_copy == CMD_NAME || name_copy == DATA_NAME
+      || name_copy == DISASSEM_NAME || name_copy == STATUS_NAME)
+    error (_("Window type \"%s\" is built-in"), name);
+
+  known_window_types->emplace (std::move (name_copy),
+			       std::move (factory));
+}
+
+/* See tui-layout.h.  */
+
+std::unique_ptr<tui_layout_base>
+tui_layout_window::clone () const
+{
+  tui_layout_window *result = new tui_layout_window (m_contents.c_str ());
+  return std::unique_ptr<tui_layout_base> (result);
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_window::apply (int x_, int y_, int width_, int height_)
+{
+  x = x_;
+  y = y_;
+  width = width_;
+  height = height_;
+  gdb_assert (m_window != nullptr);
+  m_window->resize (height, width, x, y);
+  tui_windows.push_back (m_window);
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_window::get_sizes (bool height, int *min_value, int *max_value)
+{
+  if (m_window == nullptr)
+    m_window = tui_get_window_by_name (m_contents);
+  if (height)
+    {
+      *min_value = m_window->min_height ();
+      *max_value = m_window->max_height ();
+    }
   else
-    cmd_height = tui_term_height () / 3;
-  src_height = tui_term_height () - cmd_height;
+    {
+      *min_value = m_window->min_width ();
+      *max_value = m_window->max_width ();
+    }
+}
+
+/* See tui-layout.h.  */
+
+bool
+tui_layout_window::top_boxed_p () const
+{
+  gdb_assert (m_window != nullptr);
+  return m_window->can_box ();
+}
+
+/* See tui-layout.h.  */
+
+bool
+tui_layout_window::bottom_boxed_p () const
+{
+  gdb_assert (m_window != nullptr);
+  return m_window->can_box ();
+}
 
-  if (layout_type == SRC_COMMAND)
+/* See tui-layout.h.  */
+
+void
+tui_layout_window::replace_window (const char *name, const char *new_window)
+{
+  if (m_contents == name)
     {
-      if (tui_win_list[SRC_WIN] == nullptr)
-	tui_win_list[SRC_WIN] = new tui_source_window ();
-      win_info = TUI_SRC_WIN;
+      m_contents = new_window;
+      if (m_window != nullptr)
+	{
+	  m_window->make_visible (false);
+	  m_window = tui_get_window_by_name (m_contents);
+	}
+    }
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_window::specification (ui_file *output, int depth)
+{
+  fputs_unfiltered (get_name (), output);
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_split::add_split (std::unique_ptr<tui_layout_split> &&layout,
+			     int weight)
+{
+  split s = {weight, std::move (layout)};
+  m_splits.push_back (std::move (s));
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_split::add_window (const char *name, int weight)
+{
+  tui_layout_window *result = new tui_layout_window (name);
+  split s = {weight, std::unique_ptr<tui_layout_base> (result)};
+  m_splits.push_back (std::move (s));
+}
+
+/* See tui-layout.h.  */
+
+std::unique_ptr<tui_layout_base>
+tui_layout_split::clone () const
+{
+  tui_layout_split *result = new tui_layout_split (m_vertical);
+  for (const split &item : m_splits)
+    {
+      std::unique_ptr<tui_layout_base> next = item.layout->clone ();
+      split s = {item.weight, std::move (next)};
+      result->m_splits.push_back (std::move (s));
+    }
+  return std::unique_ptr<tui_layout_base> (result);
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_split::get_sizes (bool height, int *min_value, int *max_value)
+{
+  *min_value = 0;
+  *max_value = 0;
+  bool first_time = true;
+  for (const split &item : m_splits)
+    {
+      int new_min, new_max;
+      item.layout->get_sizes (height, &new_min, &new_max);
+      /* For the mismatch case, the first time through we want to set
+	 the min and max to the computed values -- the "first_time"
+	 check here is just a funny way of doing that.  */
+      if (height == m_vertical || first_time)
+	{
+	  *min_value += new_min;
+	  *max_value += new_max;
+	}
+      else
+	{
+	  *min_value = std::max (*min_value, new_min);
+	  *max_value = std::min (*max_value, new_max);
+	}
+      first_time = false;
+    }
+}
+
+/* See tui-layout.h.  */
+
+bool
+tui_layout_split::top_boxed_p () const
+{
+  if (m_splits.empty ())
+    return false;
+  return m_splits[0].layout->top_boxed_p ();
+}
+
+/* See tui-layout.h.  */
+
+bool
+tui_layout_split::bottom_boxed_p () const
+{
+  if (m_splits.empty ())
+    return false;
+  return m_splits.back ().layout->top_boxed_p ();
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_split::set_weights_from_heights ()
+{
+  for (int i = 0; i < m_splits.size (); ++i)
+    m_splits[i].weight = m_splits[i].layout->height;
+}
+
+/* See tui-layout.h.  */
+
+tui_adjust_result
+tui_layout_split::adjust_size (const char *name, int new_height)
+{
+  /* Look through the children.  If one is a layout holding the named
+     window, we're done; or if one actually is the named window,
+     update it.  */
+  int found_index = -1;
+  for (int i = 0; i < m_splits.size (); ++i)
+    {
+      tui_adjust_result adjusted
+	= m_splits[i].layout->adjust_size (name, new_height);
+      if (adjusted == HANDLED)
+	return HANDLED;
+      if (adjusted == FOUND)
+	{
+	  if (!m_vertical)
+	    return FOUND;
+	  found_index = i;
+	  break;
+	}
+    }
+
+  if (found_index == -1)
+    return NOT_FOUND;
+  if (m_splits[found_index].layout->height == new_height)
+    return HANDLED;
+
+  set_weights_from_heights ();
+  int delta = m_splits[found_index].weight - new_height;
+  m_splits[found_index].weight = new_height;
+
+  /* Distribute the "delta" over the next window; but if the next
+     window cannot hold it all, keep going until we either find a
+     window that does, or until we loop all the way around.  */
+  for (int i = 0; delta != 0 && i < m_splits.size () - 1; ++i)
+    {
+      int index = (found_index + 1 + i) % m_splits.size ();
+
+      int new_min, new_max;
+      m_splits[index].layout->get_sizes (m_vertical, &new_min, &new_max);
+
+      if (delta < 0)
+	{
+	  /* The primary window grew, so we are trying to shrink other
+	     windows.  */
+	  int available = m_splits[index].weight - new_min;
+	  int shrink_by = std::min (available, -delta);
+	  m_splits[index].weight -= shrink_by;
+	  delta += shrink_by;
+	}
+      else
+	{
+	  /* The primary window shrank, so we are trying to grow other
+	     windows.  */
+	  int available = new_max - m_splits[index].weight;
+	  int grow_by = std::min (available, delta);
+	  m_splits[index].weight += grow_by;
+	  delta -= grow_by;
+	}
+    }
+
+  if (delta != 0)
+    {
+      warning (_("Invalid window height specified"));
+      /* Effectively undo any modifications made here.  */
+      set_weights_from_heights ();
     }
   else
     {
-      if (tui_win_list[DISASSEM_WIN] == nullptr)
-	tui_win_list[DISASSEM_WIN] = new tui_disasm_window ();
-      win_info = TUI_DISASM_WIN;
-    }
-
-  locator->resize (1, tui_term_width (),
-		   0, src_height - 1);
-  win_info->resize (src_height - 1,
-		    tui_term_width (),
-		    0,
-		    0);
-
-  if (TUI_CMD_WIN == NULL)
-    tui_win_list[CMD_WIN] = new tui_cmd_window ();
-  TUI_CMD_WIN->resize (cmd_height,
-		       tui_term_width (),
-		       0,
-		       src_height);
+      /* Simply re-apply the updated layout.  */
+      apply (x, y, width, height);
+    }
+
+  return HANDLED;
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_split::apply (int x_, int y_, int width_, int height_)
+{
+  x = x_;
+  y = y_;
+  width = width_;
+  height = height_;
+
+  struct size_info
+  {
+    int size;
+    int min_size;
+    int max_size;
+    /* True if this window will share a box border with the previous
+       window in the list.  */
+    bool share_box;
+  };
+
+  std::vector<size_info> info (m_splits.size ());
+
+  /* Step 1: Find the min and max size of each sub-layout.
+     Fixed-sized layouts are given their desired size, and then the
+     remaining space is distributed among the remaining windows
+     according to the weights given.  */
+  int available_size = m_vertical ? height : width;
+  int last_index = -1;
+  int total_weight = 0;
+  for (int i = 0; i < m_splits.size (); ++i)
+    {
+      bool cmd_win_already_exists = TUI_CMD_WIN != nullptr;
+
+      /* Always call get_sizes, to ensure that the window is
+	 instantiated.  This is a bit gross but less gross than adding
+	 special cases for this in other places.  */
+      m_splits[i].layout->get_sizes (m_vertical, &info[i].min_size,
+				     &info[i].max_size);
+
+      if (!m_applied
+	  && cmd_win_already_exists
+	  && m_splits[i].layout->get_name () != nullptr
+	  && strcmp (m_splits[i].layout->get_name (), "cmd") == 0)
+	{
+	  /* If this layout has never been applied, then it means the
+	     user just changed the layout.  In this situation, it's
+	     desirable to keep the size of the command window the
+	     same.  Setting the min and max sizes this way ensures
+	     that the resizing step, below, does the right thing with
+	     this window.  */
+	  info[i].min_size = (m_vertical
+			      ? TUI_CMD_WIN->height
+			      : TUI_CMD_WIN->width);
+	  info[i].max_size = info[i].min_size;
+	}
+
+      if (info[i].min_size == info[i].max_size)
+	available_size -= info[i].min_size;
+      else
+	{
+	  last_index = i;
+	  total_weight += m_splits[i].weight;
+	}
+
+      /* Two adjacent boxed windows will share a border, making a bit
+	 more size available.  */
+      if (i > 0
+	  && m_splits[i - 1].layout->bottom_boxed_p ()
+	  && m_splits[i].layout->top_boxed_p ())
+	info[i].share_box = true;
+    }
+
+  /* Step 2: Compute the size of each sub-layout.  Fixed-sized items
+     are given their fixed size, while others are resized according to
+     their weight.  */
+  int used_size = 0;
+  for (int i = 0; i < m_splits.size (); ++i)
+    {
+      /* Compute the height and clamp to the allowable range.  */
+      info[i].size = available_size * m_splits[i].weight / total_weight;
+      if (info[i].size > info[i].max_size)
+	info[i].size = info[i].max_size;
+      if (info[i].size < info[i].min_size)
+	info[i].size = info[i].min_size;
+      /* If there is any leftover size, just redistribute it to the
+	 last resizeable window, by dropping it from the allocated
+	 size.  We could try to be fancier here perhaps, by
+	 redistributing this size among all windows, not just the
+	 last window.  */
+      if (info[i].min_size != info[i].max_size)
+	{
+	  used_size += info[i].size;
+	  if (info[i].share_box)
+	    --used_size;
+	}
+    }
+
+  /* Allocate any leftover size.  */
+  if (available_size >= used_size && last_index != -1)
+    info[last_index].size += available_size - used_size;
+
+  /* Step 3: Resize.  */
+  int size_accum = 0;
+  const int maximum = m_vertical ? height : width;
+  for (int i = 0; i < m_splits.size (); ++i)
+    {
+      /* If we fall off the bottom, just make allocations overlap.
+	 GIGO.  */
+      if (size_accum + info[i].size > maximum)
+	size_accum = maximum - info[i].size;
+      else if (info[i].share_box)
+	--size_accum;
+      if (m_vertical)
+	m_splits[i].layout->apply (x, y + size_accum, width, info[i].size);
+      else
+	m_splits[i].layout->apply (x + size_accum, y, info[i].size, height);
+      size_accum += info[i].size;
+    }
+
+  m_applied = true;
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_split::remove_windows (const char *name)
+{
+  for (int i = 0; i < m_splits.size (); ++i)
+    {
+      const char *this_name = m_splits[i].layout->get_name ();
+      if (this_name == nullptr)
+	m_splits[i].layout->remove_windows (name);
+      else if (strcmp (this_name, name) == 0
+	       || strcmp (this_name, CMD_NAME) == 0
+	       || strcmp (this_name, STATUS_NAME) == 0)
+	{
+	  /* Keep.  */
+	}
+      else
+	{
+	  m_splits.erase (m_splits.begin () + i);
+	  --i;
+	}
+    }
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_split::replace_window (const char *name, const char *new_window)
+{
+  for (auto &item : m_splits)
+    item.layout->replace_window (name, new_window);
+}
+
+/* See tui-layout.h.  */
+
+void
+tui_layout_split::specification (ui_file *output, int depth)
+{
+  if (depth > 0)
+    fputs_unfiltered ("{", output);
+
+  if (!m_vertical)
+    fputs_unfiltered ("-horizontal ", output);
+
+  bool first = true;
+  for (auto &item : m_splits)
+    {
+      if (!first)
+	fputs_unfiltered (" ", output);
+      first = false;
+      item.layout->specification (output, depth + 1);
+      fprintf_unfiltered (output, " %d", item.weight);
+    }
+
+  if (depth > 0)
+    fputs_unfiltered ("}", output);
+}
+
+/* Destroy the layout associated with SELF.  */
+
+static void
+destroy_layout (struct cmd_list_element *self, void *context)
+{
+  tui_layout_split *layout = (tui_layout_split *) context;
+  size_t index = find_layout (layout);
+  layouts.erase (layouts.begin () + index);
+}
+
+/* List holding the sub-commands of "layout".  */
+
+static struct cmd_list_element *layout_list;
+
+/* Add a "layout" command with name NAME that switches to LAYOUT.  */
+
+static struct cmd_list_element *
+add_layout_command (const char *name, tui_layout_split *layout)
+{
+  struct cmd_list_element *cmd;
+
+  string_file spec;
+  layout->specification (&spec, 0);
+
+  gdb::unique_xmalloc_ptr<char> doc
+    (xstrprintf (_("Apply the \"%s\" layout.\n\
+This layout was created using:\n\
+  tui new-layout %s %s"),
+		 name, name, spec.c_str ()));
+
+  cmd = add_cmd (name, class_tui, nullptr, doc.get (), &layout_list);
+  set_cmd_context (cmd, layout);
+  /* There is no API to set this.  */
+  cmd->func = tui_apply_layout;
+  cmd->destroyer = destroy_layout;
+  cmd->doc_allocated = 1;
+  doc.release ();
+  layouts.emplace_back (layout);
+
+  return cmd;
+}
+
+/* Initialize the standard layouts.  */
+
+static void
+initialize_layouts ()
+{
+  tui_layout_split *layout;
+
+  layout = new tui_layout_split ();
+  layout->add_window (SRC_NAME, 2);
+  layout->add_window (STATUS_NAME, 0);
+  layout->add_window (CMD_NAME, 1);
+  add_layout_command (SRC_NAME, layout);
+
+  layout = new tui_layout_split ();
+  layout->add_window (DISASSEM_NAME, 2);
+  layout->add_window (STATUS_NAME, 0);
+  layout->add_window (CMD_NAME, 1);
+  add_layout_command (DISASSEM_NAME, layout);
+
+  layout = new tui_layout_split ();
+  layout->add_window (SRC_NAME, 1);
+  layout->add_window (DISASSEM_NAME, 1);
+  layout->add_window (STATUS_NAME, 0);
+  layout->add_window (CMD_NAME, 1);
+  add_layout_command ("split", layout);
+
+  layout = new tui_layout_split ();
+  layout->add_window (DATA_NAME, 1);
+  layout->add_window (SRC_NAME, 1);
+  layout->add_window (STATUS_NAME, 0);
+  layout->add_window (CMD_NAME, 1);
+  layouts.emplace_back (layout);
+  src_regs_layout = layout;
+
+  layout = new tui_layout_split ();
+  layout->add_window (DATA_NAME, 1);
+  layout->add_window (DISASSEM_NAME, 1);
+  layout->add_window (STATUS_NAME, 0);
+  layout->add_window (CMD_NAME, 1);
+  layouts.emplace_back (layout);
+  asm_regs_layout = layout;
 }
 
 
 
+/* A helper function that returns true if NAME is the name of an
+   available window.  */
+
+static bool
+validate_window_name (const std::string &name)
+{
+  auto iter = known_window_types->find (name);
+  return iter != known_window_types->end ();
+}
+
+/* Implementation of the "tui new-layout" command.  */
+
+static void
+tui_new_layout_command (const char *spec, int from_tty)
+{
+  std::string new_name = extract_arg (&spec);
+  if (new_name.empty ())
+    error (_("No layout name specified"));
+  if (new_name[0] == '-')
+    error (_("Layout name cannot start with '-'"));
+
+  bool is_vertical = true;
+  spec = skip_spaces (spec);
+  if (check_for_argument (&spec, "-horizontal"))
+    is_vertical = false;
+
+  std::vector<std::unique_ptr<tui_layout_split>> splits;
+  splits.emplace_back (new tui_layout_split (is_vertical));
+  std::unordered_set<std::string> seen_windows;
+  while (true)
+    {
+      spec = skip_spaces (spec);
+      if (spec[0] == '\0')
+	break;
+
+      if (spec[0] == '{')
+	{
+	  is_vertical = true;
+	  spec = skip_spaces (spec + 1);
+	  if (check_for_argument (&spec, "-horizontal"))
+	    is_vertical = false;
+	  splits.emplace_back (new tui_layout_split (is_vertical));
+	  continue;
+	}
+
+      bool is_close = false;
+      std::string name;
+      if (spec[0] == '}')
+	{
+	  is_close = true;
+	  ++spec;
+	  if (splits.size () == 1)
+	    error (_("Extra '}' in layout specification"));
+	}
+      else
+	{
+	  name = extract_arg (&spec);
+	  if (name.empty ())
+	    break;
+	  if (!validate_window_name (name))
+	    error (_("Unknown window \"%s\""), name.c_str ());
+	  if (seen_windows.find (name) != seen_windows.end ())
+	    error (_("Window \"%s\" seen twice in layout"), name.c_str ());
+	}
+
+      ULONGEST weight = get_ulongest (&spec, '}');
+      if ((int) weight != weight)
+	error (_("Weight out of range: %s"), pulongest (weight));
+      if (is_close)
+	{
+	  std::unique_ptr<tui_layout_split> last_split
+	    = std::move (splits.back ());
+	  splits.pop_back ();
+	  splits.back ()->add_split (std::move (last_split), weight);
+	}
+      else
+	{
+	  splits.back ()->add_window (name.c_str (), weight);
+	  seen_windows.insert (name);
+	}
+    }
+  if (splits.size () > 1)
+    error (_("Missing '}' in layout specification"));
+  if (seen_windows.empty ())
+    error (_("New layout does not contain any windows"));
+  if (seen_windows.find (CMD_NAME) == seen_windows.end ())
+    error (_("New layout does not contain the \"" CMD_NAME "\" window"));
+
+  gdb::unique_xmalloc_ptr<char> cmd_name
+    = make_unique_xstrdup (new_name.c_str ());
+  std::unique_ptr<tui_layout_split> new_layout = std::move (splits.back ());
+  struct cmd_list_element *cmd
+    = add_layout_command (cmd_name.get (), new_layout.get ());
+  cmd->name_allocated = 1;
+  cmd_name.release ();
+  new_layout.release ();
+}
+
 /* Function to initialize gdb commands, for tui window layout
    manipulation.  */
 
+void _initialize_tui_layout ();
 void
-_initialize_tui_layout (void)
+_initialize_tui_layout ()
 {
-  struct cmd_list_element *cmd;
-
-  cmd = add_com ("layout", class_tui, tui_layout_command, _("\
+  add_basic_prefix_cmd ("layout", class_tui, _("\
 Change the layout of windows.\n\
-Usage: layout prev | next | LAYOUT-NAME\n\
-Layout names are:\n\
-   src   : Displays source and command windows.\n\
-   asm   : Displays disassembly and command windows.\n\
-   split : Displays source, disassembly and command windows.\n\
-   regs  : Displays register window. If existing layout\n\
-           is source/command or assembly/command, the \n\
-           register window is displayed. If the\n\
-           source/assembly/command (split) is displayed, \n\
-           the register window is displayed with \n\
-           the window that has current logical focus."));
-  set_cmd_completer (cmd, layout_completer);
+Usage: layout prev | next | LAYOUT-NAME"),
+			&layout_list, "layout ", 0, &cmdlist);
+
+  add_cmd ("next", class_tui, tui_next_layout_command,
+	   _("Apply the next TUI layout."),
+	   &layout_list);
+  add_cmd ("prev", class_tui, tui_prev_layout_command,
+	   _("Apply the previous TUI layout."),
+	   &layout_list);
+  add_cmd ("regs", class_tui, tui_regs_layout_command,
+	   _("Apply the TUI register layout."),
+	   &layout_list);
+
+  add_cmd ("new-layout", class_tui, tui_new_layout_command,
+	   _("Create a new TUI layout.\n\
+Usage: tui new-layout [-horizontal] NAME WINDOW WEIGHT [WINDOW WEIGHT]...\n\
+Create a new TUI layout.  The new layout will be named NAME,\n\
+and can be accessed using \"layout NAME\".\n\
+The windows will be displayed in the specified order.\n\
+A WINDOW can also be of the form:\n\
+  { [-horizontal] NAME WEIGHT [NAME WEIGHT]... }\n\
+This form indicates a sub-frame.\n\
+Each WEIGHT is an integer, which holds the relative size\n\
+to be allocated to the window."),
+	   tui_get_cmd_list ());
+
+  initialize_layouts ();
+  initialize_known_windows ();
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-layout.h ./gdb/tui/tui-layout.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-layout.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-layout.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI layout window management.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -22,10 +22,241 @@
 #ifndef TUI_TUI_LAYOUT_H
 #define TUI_TUI_LAYOUT_H
 
+#include "ui-file.h"
+
 #include "tui/tui.h"
 #include "tui/tui-data.h"
 
+/* Values that can be returned when handling a request to adjust a
+   window's size.  */
+enum tui_adjust_result
+{
+  /* Requested window was not found here.  */
+  NOT_FOUND,
+  /* Window was found but not handled.  */
+  FOUND,
+  /* Window was found and handled.  */
+  HANDLED
+};
+
+/* The basic object in a TUI layout.  This represents a single piece
+   of screen real estate.  Subclasses determine the exact
+   behavior.  */
+class tui_layout_base
+{
+public:
+
+  DISABLE_COPY_AND_ASSIGN (tui_layout_base);
+
+  virtual ~tui_layout_base () = default;
+
+  /* Clone this object.  Ordinarily a layout is cloned before it is
+     used, so that any necessary modifications do not affect the
+     "skeleton" layout.  */
+  virtual std::unique_ptr<tui_layout_base> clone () const = 0;
+
+  /* Change the size and location of this layout.  */
+  virtual void apply (int x, int y, int width, int height) = 0;
+
+  /* Return the minimum and maximum height or width of this layout.
+     HEIGHT is true to fetch height, false to fetch width.  */
+  virtual void get_sizes (bool height, int *min_value, int *max_value) = 0;
+
+  /* True if the topmost item in this layout is boxed.  */
+  virtual bool top_boxed_p () const = 0;
+
+  /* True if the bottommost item in this layout is boxed.  */
+  virtual bool bottom_boxed_p () const = 0;
+
+  /* Return the name of this layout's window, or nullptr if this
+     layout does not represent a single window.  */
+  virtual const char *get_name () const
+  {
+    return nullptr;
+  }
+
+  /* Adjust the size of the window named NAME to NEW_HEIGHT, updating
+     the sizes of the other windows around it.  */
+  virtual tui_adjust_result adjust_size (const char *name, int new_height) = 0;
+
+  /* Remove some windows from the layout, leaving the command window
+     and the window being passed in here.  */
+  virtual void remove_windows (const char *name) = 0;
+
+  /* Replace the window named NAME in the layout with the window named
+     NEW_WINDOW.  */
+  virtual void replace_window (const char *name, const char *new_window) = 0;
+
+  /* Append the specification to this window to OUTPUT.  DEPTH is the
+     depth of this layout in the hierarchy (zero-based).  */
+  virtual void specification (ui_file *output, int depth) = 0;
+
+  /* The most recent space allocation.  */
+  int x = 0;
+  int y = 0;
+  int width = 0;
+  int height = 0;
+
+protected:
+
+  tui_layout_base () = default;
+};
+
+/* A TUI layout object that displays a single window.  The window is
+   given by name.  */
+class tui_layout_window : public tui_layout_base
+{
+public:
+
+  explicit tui_layout_window (const char *name)
+    : m_contents (name)
+  {
+  }
+
+  DISABLE_COPY_AND_ASSIGN (tui_layout_window);
+
+  std::unique_ptr<tui_layout_base> clone () const override;
+
+  void apply (int x, int y, int width, int height) override;
+
+  const char *get_name () const override
+  {
+    return m_contents.c_str ();
+  }
+
+  tui_adjust_result adjust_size (const char *name, int new_height) override
+  {
+    return m_contents == name ? FOUND : NOT_FOUND;
+  }
+
+  bool top_boxed_p () const override;
+
+  bool bottom_boxed_p () const override;
+
+  void remove_windows (const char *name) override
+  {
+  }
+
+  void replace_window (const char *name, const char *new_window) override;
+
+  void specification (ui_file *output, int depth) override;
+
+protected:
+
+  void get_sizes (bool height, int *min_value, int *max_value) override;
+
+private:
+
+  /* Type of content to display.  */
+  std::string m_contents;
+
+  /* When a layout is applied, this is updated to point to the window
+     object.  */
+  tui_win_info *m_window = nullptr;
+};
+
+/* A TUI layout that holds other layouts.  */
+class tui_layout_split : public tui_layout_base
+{
+public:
+
+  /* Create a new layout.  If VERTICAL is true, then windows in this
+     layout will be arranged vertically.  */
+  explicit tui_layout_split (bool vertical = true)
+    : m_vertical (vertical)
+  {
+  }
+
+  DISABLE_COPY_AND_ASSIGN (tui_layout_split);
+
+  /* Add a new split layout to this layout.  WEIGHT is the desired
+     size, which is relative to the other weights given in this
+     layout.  */
+  void add_split (std::unique_ptr<tui_layout_split> &&layout, int weight);
+
+  /* Add a new window to this layout.  NAME is the name of the window
+     to add.  WEIGHT is the desired size, which is relative to the
+     other weights given in this layout.  */
+  void add_window (const char *name, int weight);
+
+  std::unique_ptr<tui_layout_base> clone () const override;
+
+  void apply (int x, int y, int width, int height) override;
+
+  tui_adjust_result adjust_size (const char *name, int new_height) override;
+
+  bool top_boxed_p () const override;
+
+  bool bottom_boxed_p () const override;
+
+  void remove_windows (const char *name) override;
+
+  void replace_window (const char *name, const char *new_window) override;
+
+  void specification (ui_file *output, int depth) override;
+
+protected:
+
+  void get_sizes (bool height, int *min_value, int *max_value) override;
+
+private:
+
+  /* Set the weights from the current heights.  */
+  void set_weights_from_heights ();
+
+  struct split
+  {
+    /* The requested weight.  */
+    int weight;
+    /* The layout.  */
+    std::unique_ptr<tui_layout_base> layout;
+  };
+
+  /* The splits.  */
+  std::vector<split> m_splits;
+
+  /* True if the windows in this split are arranged vertically.  */
+  bool m_vertical;
+
+  /* True if this layout has already been applied at least once.  */
+  bool m_applied = false;
+};
+
+/* Add the specified window to the layout in a logical way.  This
+   means setting up the most logical layout given the window to be
+   added.  Only the source or disassembly window can be added this
+   way.  */
 extern void tui_add_win_to_layout (enum tui_win_type);
-extern void tui_set_layout (enum tui_layout_type);
+
+/* Set the initial layout.  */
+extern void tui_set_initial_layout ();
+
+/* Switch to the next layout.  */
+extern void tui_next_layout ();
+
+/* Show the register window.  Like "layout regs".  */
+extern void tui_regs_layout ();
+
+/* Remove some windows from the layout, leaving only the focused
+   window and the command window; if no window has the focus, then
+   some other window is chosen to remain.  */
+extern void tui_remove_some_windows ();
+
+/* Apply the current layout.  */
+extern void tui_apply_current_layout ();
+
+/* Adjust the window height of WIN to NEW_HEIGHT.  */
+extern void tui_adjust_window_height (struct tui_win_info *win,
+				      int new_height);
+
+/* The type of a function that is used to create a TUI window.  */
+
+typedef std::function<tui_win_info * (const char *name)> window_factory;
+
+/* Register a new TUI window type.  NAME is the name of the window
+   type.  FACTORY is a function that can be called to instantiate the
+   window.  */
+
+extern void tui_register_window (const char *name, window_factory &&factory);
 
 #endif /* TUI_TUI_LAYOUT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-out.c ./gdb/tui/tui-out.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-out.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-out.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Output generating routines for GDB CLI.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions.
    Written by Fernando Nasser for Cygnus.
@@ -60,10 +60,7 @@ tui_ui_out::do_field_string (int fldno,
   m_start_of_line++;
 
   if (fldname && m_line > 0 && strcmp (fldname, "fullname") == 0)
-    {
-      tui_show_source (string, m_line);
-      return;
-    }
+    return;
 
   cli_ui_out::do_field_string (fldno, width, align, fldname, string, style);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-out.h ./gdb/tui/tui-out.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-out.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-out.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2016-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-regs.c ./gdb/tui/tui-regs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-regs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-regs.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI display registers in window.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -42,15 +42,55 @@
 
 #include "gdb_curses.h"
 
+/* A subclass of string_file that expands tab characters.  */
+class tab_expansion_file : public string_file
+{
+public:
+
+  tab_expansion_file () = default;
+
+  void write (const char *buf, long length_buf) override;
+
+private:
+
+  int m_column = 0;
+};
+
+void
+tab_expansion_file::write (const char *buf, long length_buf)
+{
+  for (long i = 0; i < length_buf; ++i)
+    {
+      if (buf[i] == '\t')
+	{
+	  do
+	    {
+	      string_file::write (" ", 1);
+	      ++m_column;
+	    }
+	  while ((m_column % 8) != 0);
+	}
+      else
+	{
+	  string_file::write (&buf[i], 1);
+	  if (buf[i] == '\n')
+	    m_column = 0;
+	  else
+	    ++m_column;
+	}
+    }
+}
+
 /* Get the register from the frame and return a printable
    representation of it.  */
 
-static gdb::unique_xmalloc_ptr<char>
+static std::string
 tui_register_format (struct frame_info *frame, int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
 
-  string_file stream;
+  /* Expand tabs into spaces, since ncurses on MS-Windows doesn't.  */
+  tab_expansion_file stream;
 
   scoped_restore save_pagination
     = make_scoped_restore (&pagination_enabled, 0);
@@ -64,8 +104,7 @@ tui_register_format (struct frame_info *
   if (!str.empty () && str.back () == '\n')
     str.resize (str.size () - 1);
 
-  /* Expand tabs into spaces, since ncurses on MS-Windows doesn't.  */
-  return tui_expand_tabs (str.c_str ());
+  return str;
 }
 
 /* Get the register value from the given frame and format it for the
@@ -80,11 +119,9 @@ tui_get_register (struct frame_info *fra
     *changedp = false;
   if (target_has_registers)
     {
-      gdb::unique_xmalloc_ptr<char> new_content
-	= tui_register_format (frame, regnum);
+      std::string new_content = tui_register_format (frame, regnum);
 
-      if (changedp != NULL
-	  && strcmp (data->content.get (), new_content.get ()) != 0)
+      if (changedp != NULL && data->content != new_content)
 	*changedp = true;
 
       data->content = std::move (new_content);
@@ -220,16 +257,12 @@ tui_data_window::show_register_group (st
 	continue;
 
       data_item_win = &m_regs_content[pos];
-      if (data_item_win)
+      if (!refresh_values_only)
 	{
-	  if (!refresh_values_only)
-	    {
-	      data_item_win->item_no = regnum;
-	      data_item_win->name = name;
-	      data_item_win->highlight = false;
-	    }
-	  tui_get_register (frame, data_item_win, regnum, 0);
+	  data_item_win->regno = regnum;
+	  data_item_win->highlight = false;
 	}
+      tui_get_register (frame, data_item_win, regnum, 0);
       pos++;
     }
 }
@@ -239,43 +272,36 @@ tui_data_window::show_register_group (st
 void
 tui_data_window::display_registers_from (int start_element_no)
 {
-  int j, item_win_width, cur_y;
-
   int max_len = 0;
   for (auto &&data_item_win : m_regs_content)
     {
-      const char *p;
-      int len;
-
-      len = 0;
-      p = data_item_win.content.get ();
-      if (p != 0)
-	len = strlen (p);
+      int len = data_item_win.content.size ();
 
       if (len > max_len)
 	max_len = len;
     }
-  item_win_width = max_len + 1;
+  m_item_width = max_len + 1;
   int i = start_element_no;
 
-  m_regs_column_count = (width - 2) / item_win_width;
+  m_regs_column_count = (width - 2) / m_item_width;
   if (m_regs_column_count == 0)
     m_regs_column_count = 1;
-  item_win_width = (width - 2) / m_regs_column_count;
+  m_item_width = (width - 2) / m_regs_column_count;
 
   /* Now create each data "sub" window, and write the display into
      it.  */
-  cur_y = 1;
-  while (i < m_regs_content.size ()
-	 && cur_y <= viewport_height)
+  int cur_y = 1;
+  while (i < m_regs_content.size () && cur_y <= height - 2)
     {
-      for (j = 0;
+      for (int j = 0;
 	   j < m_regs_column_count && i < m_regs_content.size ();
 	   j++)
 	{
 	  /* Create the window if necessary.  */
-	  m_regs_content[i].resize (1, item_win_width,
-				    (item_win_width * j) + 1, cur_y);
+	  m_regs_content[i].x = (m_item_width * j) + 1;
+	  m_regs_content[i].y = cur_y;
+	  m_regs_content[i].visible = true;
+	  m_regs_content[i].rerender (handle.get (), m_item_width);
 	  i++;		/* Next register.  */
 	}
       cur_y++;		/* Next row.  */
@@ -346,10 +372,7 @@ tui_data_window::first_data_item_display
 {
   for (int i = 0; i < m_regs_content.size (); i++)
     {
-      struct tui_gen_win_info *data_item_win;
-
-      data_item_win = &m_regs_content[i];
-      if (data_item_win->is_visible ())
+      if (m_regs_content[i].visible)
 	return i;
     }
 
@@ -361,8 +384,8 @@ tui_data_window::first_data_item_display
 void
 tui_data_window::delete_data_content_windows ()
 {
-  for (auto &&win : m_regs_content)
-    win.handle.reset (nullptr);
+  for (auto &win : m_regs_content)
+    win.visible = false;
 }
 
 
@@ -382,7 +405,7 @@ tui_data_window::erase_data_content (con
 	x_pos = half_width - strlen (prompt);
       mvwaddstr (handle.get (), (height / 2), x_pos, (char *) prompt);
     }
-  wrefresh (handle.get ());
+  tui_wrefresh (handle.get ());
 }
 
 /* See tui-regs.h.  */
@@ -425,16 +448,6 @@ tui_data_window::do_scroll_vertical (int
     }
 }
 
-/* See tui-regs.h.  */
-
-void
-tui_data_window::refresh_window ()
-{
-  tui_gen_win_info::refresh_window ();
-  for (auto &&win : m_regs_content)
-    win.refresh_window ();
-}
-
 /* This function check all displayed registers for changes in values,
    given a particular frame.  If the values have changed, they are
    updated with the new value and highlighted.  */
@@ -452,37 +465,32 @@ tui_data_window::check_register_values (
 	  was_hilighted = data_item_win.highlight;
 
 	  tui_get_register (frame, &data_item_win,
-			    data_item_win.item_no,
+			    data_item_win.regno,
 			    &data_item_win.highlight);
 
 	  if (data_item_win.highlight || was_hilighted)
-	    data_item_win.rerender ();
+	    data_item_win.rerender (handle.get (), m_item_width);
 	}
     }
+
+  tui_wrefresh (handle.get ());
 }
 
 /* Display a register in a window.  If hilite is TRUE, then the value
    will be displayed in reverse video.  */
 void
-tui_data_item_window::rerender ()
+tui_data_item_window::rerender (WINDOW *handle, int field_width)
 {
-  int i;
-
-  scrollok (handle.get (), FALSE);
   if (highlight)
     /* We ignore the return value, casting it to void in order to avoid
        a compiler warning.  The warning itself was introduced by a patch
        to ncurses 5.7 dated 2009-08-29, changing this macro to expand
        to code that causes the compiler to generate an unused-value
        warning.  */
-    (void) wstandout (handle.get ());
+    (void) wstandout (handle);
       
-  wmove (handle.get (), 0, 0);
-  for (i = 1; i < width; i++)
-    waddch (handle.get (), ' ');
-  wmove (handle.get (), 0, 0);
-  if (content)
-    waddstr (handle.get (), content.get ());
+  mvwaddnstr (handle, y, x, content.c_str (), field_width - 1);
+  waddstr (handle, n_spaces (field_width - content.size ()));
 
   if (highlight)
     /* We ignore the return value, casting it to void in order to avoid
@@ -490,21 +498,7 @@ tui_data_item_window::rerender ()
        to ncurses 5.7 dated 2009-08-29, changing this macro to expand
        to code that causes the compiler to generate an unused-value
        warning.  */
-    (void) wstandend (handle.get ());
-  refresh_window ();
-}
-
-void
-tui_data_item_window::refresh_window ()
-{
-  if (handle != nullptr)
-    {
-      /* This seems to be needed because the data items are nested
-	 windows, which according to the ncurses man pages aren't well
-	 supported.  */
-      touchwin (handle.get ());
-      wrefresh (handle.get ());
-    }
+    (void) wstandend (handle);
 }
 
 /* Helper for "tui reg next", wraps a call to REGGROUP_NEXT, but adds wrap
@@ -543,21 +537,6 @@ tui_reg_prev (struct reggroup *current_g
   return group;
 }
 
-/* A helper function to display the register window in the appropriate
-   way.  */
-
-static void
-tui_reg_layout ()
-{
-  enum tui_layout_type cur_layout = tui_current_layout ();
-  enum tui_layout_type new_layout;
-  if (cur_layout == SRC_COMMAND || cur_layout == SRC_DATA_COMMAND)
-    new_layout = SRC_DATA_COMMAND;
-  else
-    new_layout = DISASSEM_DATA_COMMAND;
-  tui_set_layout (new_layout);
-}
-
 /* Implement the 'tui reg' command.  Changes the register group displayed
    in the tui register window.  Displays the tui register window if it is
    not already on display.  */
@@ -575,11 +554,13 @@ tui_reg_command (const char *args, int f
       /* Make sure the curses mode is enabled.  */
       tui_enable ();
 
+      tui_suppress_output suppress;
+
       /* Make sure the register window is visible.  If not, select an
 	 appropriate layout.  We need to do this before trying to run the
 	 'next' or 'prev' commands.  */
       if (TUI_DATA_WIN == NULL || !TUI_DATA_WIN->is_visible ())
-	tui_reg_layout ();
+	tui_regs_layout ();
 
       struct reggroup *current_group = TUI_DATA_WIN->get_current_group ();
       if (strncmp (args, "next", len) == 0)
@@ -637,28 +618,24 @@ tui_reggroup_completer (struct cmd_list_
 			completion_tracker &tracker,
 			const char *text, const char *word)
 {
-  static const char *extra[] = { "next", "prev", NULL };
-  size_t len = strlen (word);
-  const char **tmp;
+  static const char * const extra[] = { "next", "prev", NULL };
 
   reggroup_completer (ignore, tracker, text, word);
 
-  /* XXXX use complete_on_enum instead?  */
-  for (tmp = extra; *tmp != NULL; ++tmp)
-    {
-      if (strncmp (word, *tmp, len) == 0)
-	tracker.add_completion (make_unique_xstrdup (*tmp));
-    }
+  complete_on_enum (tracker, extra, text, word);
 }
 
+void _initialize_tui_regs ();
 void
-_initialize_tui_regs (void)
+_initialize_tui_regs ()
 {
   struct cmd_list_element **tuicmd, *cmd;
 
   tuicmd = tui_get_cmd_list ();
 
   cmd = add_cmd ("reg", class_tui, tui_reg_command, _("\
-TUI command to control the register window."), tuicmd);
+TUI command to control the register window.\n\
+Usage: tui reg NAME\n\
+NAME is the name of the register group to display"), tuicmd);
   set_cmd_completer (cmd, tui_reggroup_completer);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-regs.h ./gdb/tui/tui-regs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-regs.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-regs.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI display registers in window.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -26,40 +26,33 @@
 
 /* A data item window.  */
 
-struct tui_data_item_window : public tui_gen_win_info
+struct tui_data_item_window
 {
-  tui_data_item_window ()
-    : tui_gen_win_info (DATA_ITEM_WIN)
-  {
-  }
+  tui_data_item_window () = default;
 
   DISABLE_COPY_AND_ASSIGN (tui_data_item_window);
 
   tui_data_item_window (tui_data_item_window &&) = default;
 
-  void rerender () override;
-
-  void refresh_window () override;
+  void rerender (WINDOW *handle, int field_width);
 
-  const char *name = nullptr;
-  /* The register number, or data display number.  */
-  int item_no = -1;
+  /* Location.  */
+  int x = 0;
+  int y = 0;
+  /* The register number.  */
+  int regno = -1;
   bool highlight = false;
-  gdb::unique_xmalloc_ptr<char> content;
+  bool visible = false;
+  std::string content;
 };
 
 /* The TUI registers window.  */
 struct tui_data_window : public tui_win_info
 {
-  tui_data_window ()
-    : tui_win_info (DATA_WIN)
-  {
-  }
+  tui_data_window () = default;
 
   DISABLE_COPY_AND_ASSIGN (tui_data_window);
 
-  void refresh_window () override;
-
   const char *name () const override
   {
     return DATA_NAME;
@@ -133,6 +126,9 @@ private:
   std::vector<tui_data_item_window> m_regs_content;
   int m_regs_column_count = 0;
   struct reggroup *m_current_group = nullptr;
+
+  /* Width of each register's display area.  */
+  int m_item_width = 0;
 };
 
 #endif /* TUI_TUI_REGS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-source.c ./gdb/tui/tui-source.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-source.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-source.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI display source window.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -40,98 +40,81 @@
 #include "gdb_curses.h"
 
 /* Function to display source in the source window.  */
-enum tui_status
+bool
 tui_source_window::set_contents (struct gdbarch *arch,
-				 struct symtab *s, 
-				 struct tui_line_or_address line_or_addr)
+				 const struct symtab_and_line &sal)
 {
-  gdb_assert (line_or_addr.loa == LOA_LINE);
-  int line_no = line_or_addr.u.line_no;
+  struct symtab *s = sal.symtab;
+  int line_no = sal.line;
 
-  enum tui_status ret = TUI_FAILURE;
+  if (s == NULL)
+    return false;
 
-  if (s != NULL)
-    {
-      int line_width, nlines;
+  int line_width, nlines;
 
-      ret = TUI_SUCCESS;
-      line_width = width - TUI_EXECINFO_SIZE - 1;
-      /* Take hilite (window border) into account, when
-	 calculating the number of lines.  */
-      nlines = (line_no + (height - 2)) - line_no;
+  line_width = width - TUI_EXECINFO_SIZE - 1;
+  /* Take hilite (window border) into account, when
+     calculating the number of lines.  */
+  nlines = height - 2;
 
-      std::string srclines;
-      const std::vector<off_t> *offsets;
-      if (!g_source_cache.get_source_lines (s, line_no, line_no + nlines,
-					    &srclines)
-	  || !g_source_cache.get_line_charpos (s, &offsets))
-	ret = TUI_FAILURE;
-      else
-	{
-	  int cur_line_no, cur_line;
-	  struct tui_locator_window *locator
-	    = tui_locator_win_info_ptr ();
-	  const char *s_filename = symtab_to_filename_for_display (s);
-
-	  title = s_filename;
-
-	  m_fullname = make_unique_xstrdup (symtab_to_fullname (s));
-
-	  cur_line = 0;
-	  gdbarch = get_objfile_arch (SYMTAB_OBJFILE (s));
-	  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)
-	    {
-	      struct tui_source_element *element
-		= &content[cur_line];
-
-	      std::string text;
-	      if (*iter != '\0')
-		text = tui_copy_source_line (&iter, cur_line_no,
-					     horizontal_offset,
-					     line_width, digits);
-
-	      /* Set whether element is the execution point
-		 and whether there is a break point on it.  */
-	      element->line_or_addr.loa = LOA_LINE;
-	      element->line_or_addr.u.line_no = cur_line_no;
-	      element->is_exec_point
-		= (filename_cmp (locator->full_name.c_str (),
-				 symtab_to_fullname (s)) == 0
-		   && cur_line_no == locator->line_no);
-
-	      content[cur_line].line = std::move (text);
-
-	      cur_line++;
-	      cur_line_no++;
-	    }
-	  ret = TUI_SUCCESS;
-	}
+  std::string srclines;
+  const std::vector<off_t> *offsets;
+  if (!g_source_cache.get_source_lines (s, line_no, line_no + nlines,
+					&srclines)
+      || !g_source_cache.get_line_charpos (s, &offsets))
+    return false;
+
+  int cur_line_no, cur_line;
+  struct tui_locator_window *locator
+    = tui_locator_win_info_ptr ();
+  const char *s_filename = symtab_to_filename_for_display (s);
+
+  title = s_filename;
+
+  m_fullname = make_unique_xstrdup (symtab_to_fullname (s));
+
+  cur_line = 0;
+  m_gdbarch = SYMTAB_OBJFILE (s)->arch ();
+  m_start_line_or_addr.loa = LOA_LINE;
+  cur_line_no = m_start_line_or_addr.u.line_no = line_no;
+
+  int digits = 0;
+  if (compact_source)
+    {
+      /* Solaris 11+gcc 5.5 has ambiguous overloads of log10, so we
+	 cast to double to get the right one.  */
+      double l = log10 ((double) offsets->size ());
+      digits = 1 + (int) l;
     }
-  return ret;
-}
 
+  const char *iter = srclines.c_str ();
+  m_content.resize (nlines);
+  while (cur_line < nlines)
+    {
+      struct tui_source_element *element = &m_content[cur_line];
 
-/* Function to display source in the source window.  This function
-   initializes the horizontal scroll to 0.  */
-void
-tui_source_window::show_symtab_source (struct gdbarch *gdbarch,
-				       struct symtab *s,
-				       struct tui_line_or_address line)
-{
-  horizontal_offset = 0;
-  update_source_window_as_is (gdbarch, s, line);
+      std::string text;
+      if (*iter != '\0')
+	text = tui_copy_source_line (&iter, cur_line_no,
+				     m_horizontal_offset,
+				     line_width, digits);
+
+      /* Set whether element is the execution point
+	 and whether there is a break point on it.  */
+      element->line_or_addr.loa = LOA_LINE;
+      element->line_or_addr.u.line_no = cur_line_no;
+      element->is_exec_point
+	= (filename_cmp (locator->full_name.c_str (),
+			 symtab_to_fullname (s)) == 0
+	   && cur_line_no == locator->line_no);
+
+      m_content[cur_line].line = std::move (text);
+
+      cur_line++;
+      cur_line_no++;
+    }
+
+  return true;
 }
 
 
@@ -140,7 +123,7 @@ tui_source_window::show_symtab_source (s
 bool
 tui_source_window::showing_source_p (const char *fullname) const
 {
-  return (!content.empty ()
+  return (!m_content.empty ()
 	  && (filename_cmp (tui_locator_win_info_ptr ()->full_name.c_str (),
 			    fullname) == 0));
 }
@@ -150,38 +133,41 @@ tui_source_window::showing_source_p (con
 void
 tui_source_window::do_scroll_vertical (int num_to_scroll)
 {
-  if (!content.empty ())
+  if (!m_content.empty ())
     {
-      struct tui_line_or_address l;
       struct symtab *s;
       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
+      struct gdbarch *arch = m_gdbarch;
 
       if (cursal.symtab == NULL)
-	s = find_pc_line_symtab (get_frame_pc (get_selected_frame (NULL)));
+	{
+	  struct frame_info *fi = get_selected_frame (NULL);
+	  s = find_pc_line_symtab (get_frame_pc (fi));
+	  arch = get_frame_arch (fi);
+	}
       else
 	s = cursal.symtab;
 
-      l.loa = LOA_LINE;
-      l.u.line_no = content[0].line_or_addr.u.line_no
-	+ num_to_scroll;
+      int line_no = m_start_line_or_addr.u.line_no + num_to_scroll;
       const std::vector<off_t> *offsets;
       if (g_source_cache.get_line_charpos (s, &offsets)
-	  && l.u.line_no > offsets->size ())
-	/* line = s->nlines - win_info->content_size + 1; */
-	/* elz: fix for dts 23398.  */
-	l.u.line_no = content[0].line_or_addr.u.line_no;
-      if (l.u.line_no <= 0)
-	l.u.line_no = 1;
-
-      print_source_lines (s, l.u.line_no, l.u.line_no + 1, 0);
+	  && line_no > offsets->size ())
+	line_no = m_start_line_or_addr.u.line_no;
+      if (line_no <= 0)
+	line_no = 1;
+
+      cursal.line = line_no;
+      find_line_pc (cursal.symtab, cursal.line, &cursal.pc);
+      for (struct tui_source_window_base *win_info : tui_source_windows ())
+	win_info->update_source_window_as_is (arch, cursal);
     }
 }
 
 bool
 tui_source_window::location_matches_p (struct bp_location *loc, int line_no)
 {
-  return (content[line_no].line_or_addr.loa == LOA_LINE
-	  && content[line_no].line_or_addr.u.line_no == loc->line_number
+  return (m_content[line_no].line_or_addr.loa == LOA_LINE
+	  && m_content[line_no].line_or_addr.u.line_no == loc->line_number
 	  && loc->symtab != NULL
 	  && filename_cmp (m_fullname.get (),
 			   symtab_to_fullname (loc->symtab)) == 0);
@@ -192,41 +178,50 @@ tui_source_window::location_matches_p (s
 bool
 tui_source_window::line_is_displayed (int line) const
 {
-  bool is_displayed = false;
-  int threshold = SCROLL_THRESHOLD;
-  int i = 0;
-  while (i < content.size () - threshold && !is_displayed)
-    {
-      is_displayed
-	= (content[i].line_or_addr.loa == LOA_LINE
-	   && content[i].line_or_addr.u.line_no == line);
-      i++;
+  if (m_content.size () < SCROLL_THRESHOLD)
+    return false;
+
+  for (size_t i = 0; i < m_content.size () - SCROLL_THRESHOLD; ++i)
+    {
+      if (m_content[i].line_or_addr.loa == LOA_LINE
+	  && m_content[i].line_or_addr.u.line_no == line)
+	return true;
     }
 
-  return is_displayed;
+  return false;
 }
 
 void
-tui_source_window::maybe_update (struct frame_info *fi, symtab_and_line sal,
-				 int line_no, CORE_ADDR addr)
+tui_source_window::maybe_update (struct frame_info *fi, symtab_and_line sal)
 {
-  int start_line = (line_no - (viewport_height / 2)) + 1;
+  int start_line = (sal.line - ((height - 2) / 2)) + 1;
   if (start_line <= 0)
     start_line = 1;
 
   bool source_already_displayed = (sal.symtab != 0
 				   && showing_source_p (m_fullname.get ()));
 
-  struct tui_line_or_address l;
-
-  l.loa = LOA_LINE;
-  l.u.line_no = start_line;
-  if (!(source_already_displayed
-	&& line_is_displayed (line_no)))
-    update_source_window (get_frame_arch (fi), sal.symtab, l);
+  if (!(source_already_displayed && line_is_displayed (sal.line)))
+    {
+      sal.line = start_line;
+      update_source_window (get_frame_arch (fi), sal);
+    }
   else
     {
-      l.u.line_no = line_no;
+      struct tui_line_or_address l;
+
+      l.loa = LOA_LINE;
+      l.u.line_no = sal.line;
       set_is_exec_point_at (l);
     }
 }
+
+void
+tui_source_window::display_start_addr (struct gdbarch **gdbarch_p,
+				       CORE_ADDR *addr_p)
+{
+  struct symtab_and_line cursal = get_current_source_symtab_and_line ();
+
+  *gdbarch_p = m_gdbarch;
+  find_line_pc (cursal.symtab, m_start_line_or_addr.u.line_no, addr_p);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-source.h ./gdb/tui/tui-source.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-source.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-source.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI display source window.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -31,10 +31,7 @@ struct symtab;
 
 struct tui_source_window : public tui_source_window_base
 {
-  tui_source_window ()
-    : tui_source_window_base (SRC_WIN)
-  {
-  }
+  tui_source_window () = default;
 
   DISABLE_COPY_AND_ASSIGN (tui_source_window);
 
@@ -49,26 +46,22 @@ struct tui_source_window : public tui_so
 
   bool showing_source_p (const char *filename) const;
 
-  void maybe_update (struct frame_info *fi, symtab_and_line sal,
-		     int line_no, CORE_ADDR addr)
-    override;
+  void maybe_update (struct frame_info *fi, symtab_and_line sal) override;
 
   void erase_source_content () override
   {
     do_erase_source_content (_("[ No Source Available ]"));
   }
 
-  void show_symtab_source (struct gdbarch *, struct symtab *,
-			   struct tui_line_or_address);
+  void display_start_addr (struct gdbarch **gdbarch_p,
+			   CORE_ADDR *addr_p) override;
 
 protected:
 
   void do_scroll_vertical (int num_to_scroll) override;
 
-  enum tui_status set_contents
-    (struct gdbarch *gdbarch,
-     struct symtab *s,
-     struct tui_line_or_address line_or_addr) override;
+  bool set_contents (struct gdbarch *gdbarch,
+		     const struct symtab_and_line &sal) override;
 
 private:
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-stack.c ./gdb/tui/tui-stack.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-stack.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-stack.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI display locator.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -43,6 +43,9 @@
 #define LINE_PREFIX             "L"
 #define PC_PREFIX               "PC: "
 
+/* Strings to display in the TUI status line.  */
+#define SINGLE_KEY              "(SingleKey)"
+
 /* Minimum/Maximum length of some fields displayed in the TUI status
    line.  */
 #define MIN_LINE_WIDTH     4	/* Use at least 4 digits for line
@@ -258,28 +261,26 @@ tui_locator_window::set_locator_fullname
 
 bool
 tui_locator_window::set_locator_info (struct gdbarch *gdbarch_in,
-				      const char *fullname,
-				      const char *procname, 
-				      int lineno,
-				      CORE_ADDR addr_in)
+				      const struct symtab_and_line &sal,
+				      const char *procname)
 {
   bool locator_changed_p = false;
 
-  if (procname == NULL)
-    procname = "";
+  gdb_assert (procname != NULL);
 
-  if (fullname == NULL)
-    fullname = "";
+  const char *fullname = (sal.symtab == nullptr
+			  ? "??"
+			  : symtab_to_fullname (sal.symtab));
 
   locator_changed_p |= proc_name != procname;
-  locator_changed_p |= lineno != line_no;
-  locator_changed_p |= addr_in != addr;
+  locator_changed_p |= sal.line != line_no;
+  locator_changed_p |= sal.pc != addr;
   locator_changed_p |= gdbarch_in != gdbarch;
   locator_changed_p |= full_name != fullname;
 
   proc_name = procname;
-  line_no = lineno;
-  addr = addr_in;
+  line_no = sal.line;
+  addr = sal.pc;
   gdbarch = gdbarch_in;
   set_locator_fullname (fullname);
 
@@ -288,20 +289,25 @@ tui_locator_window::set_locator_info (st
 
 /* Update only the full_name portion of the locator.  */
 void
-tui_update_locator_fullname (const char *fullname)
+tui_update_locator_fullname (struct symtab *symtab)
 {
   struct tui_locator_window *locator = tui_locator_win_info_ptr ();
 
+  const char *fullname;
+  if (symtab != nullptr)
+    fullname = symtab_to_fullname (symtab);
+  else
+    fullname = "??";
   locator->set_locator_fullname (fullname);
 }
 
 /* Function to print the frame information for the TUI.  The windows are
    refreshed only if frame information has changed since the last refresh.
 
-   Return 1 if frame information has changed (and windows subsequently
-   refreshed), 0 otherwise.  */
+   Return true if frame information has changed (and windows
+   subsequently refreshed), false otherwise.  */
 
-int
+bool
 tui_show_frame_info (struct frame_info *fi)
 {
   bool locator_changed_p;
@@ -309,57 +315,45 @@ tui_show_frame_info (struct frame_info *
 
   if (fi)
     {
-      CORE_ADDR pc;
-
       symtab_and_line sal = find_frame_sal (fi);
 
-      const char *fullname = nullptr;
-      if (sal.symtab != nullptr)
-	fullname = symtab_to_fullname (sal.symtab);
-
-      if (get_frame_pc_if_available (fi, &pc))
-	locator_changed_p
-	  = locator->set_locator_info (get_frame_arch (fi),
-				       (sal.symtab == 0
-					? "??" : fullname),
-				       tui_get_function_from_frame (fi),
-				       sal.line,
-				       pc);
+      const char *func_name;
+      /* find_frame_sal does not always set PC, but we want to ensure
+	 that it is available in the SAL.  */
+      if (get_frame_pc_if_available (fi, &sal.pc))
+	func_name = tui_get_function_from_frame (fi);
       else
-	locator_changed_p
-	  = locator->set_locator_info (get_frame_arch (fi),
-				       "??", _("<unavailable>"), sal.line, 0);
+	func_name = _("<unavailable>");
+
+      locator_changed_p = locator->set_locator_info (get_frame_arch (fi),
+						     sal, func_name);
 
       /* If the locator information has not changed, then frame information has
 	 not changed.  If frame information has not changed, then the windows'
 	 contents will not change.  So don't bother refreshing the windows.  */
       if (!locator_changed_p)
-	return 0;
+	return false;
 
       for (struct tui_source_window_base *win_info : tui_source_windows ())
 	{
-	  win_info->maybe_update (fi, sal, locator->line_no, locator->addr);
+	  win_info->maybe_update (fi, sal);
 	  win_info->update_exec_info ();
 	}
-
-      return 1;
     }
   else
     {
-      locator_changed_p
-	= locator->set_locator_info (NULL, NULL, NULL, 0, (CORE_ADDR) 0);
+      symtab_and_line sal {};
+
+      locator_changed_p = locator->set_locator_info (NULL, sal, "");
 
       if (!locator_changed_p)
-	return 0;
+	return false;
 
       for (struct tui_source_window_base *win_info : tui_source_windows ())
-	{
-	  win_info->erase_source_content ();
-	  win_info->update_exec_info ();
-	}
-
-      return 1;
+	win_info->erase_source_content ();
     }
+
+  return true;
 }
 
 void
@@ -379,10 +373,12 @@ tui_update_command (const char *arg, int
 /* Function to initialize gdb commands, for tui window stack
    manipulation.  */
 
+void _initialize_tui_stack ();
 void
-_initialize_tui_stack (void)
+_initialize_tui_stack ()
 {
   add_com ("update", class_tui, tui_update_command,
 	   _("Update the source window and locator to "
-	     "display the current execution point."));
+	     "display the current execution point.\n\
+Usage: update"));
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-stack.h ./gdb/tui/tui-stack.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-stack.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-stack.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI display locator.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -28,13 +28,33 @@ struct frame_info;
 
 /* Locator window class.  */
 
-struct tui_locator_window : public tui_gen_win_info
+struct tui_locator_window : public tui_win_info
 {
-  tui_locator_window ()
-    : tui_gen_win_info (LOCATOR_WIN)
+  tui_locator_window () = default;
+
+  const char *name () const override
+  {
+    return STATUS_NAME;
+  }
+
+  int max_height () const override
+  {
+    return 1;
+  }
+
+  int min_height () const override
+  {
+    return 1;
+  }
+
+  bool can_box () const override
   {
-    full_name[0] = 0;
-    proc_name[0] = 0;
+    return false;
+  }
+
+  bool can_focus () const override
+  {
+    return false;
   }
 
   void rerender () override;
@@ -44,9 +64,8 @@ struct tui_locator_window : public tui_g
      Returns true if any of the locator's fields were actually
      changed, and false otherwise.  */
   bool set_locator_info (struct gdbarch *gdbarch,
-			 const char *fullname,
-			 const char *procname,
-			 int lineno, CORE_ADDR addr);
+			 const struct symtab_and_line &sal,
+			 const char *procname);
 
   /* Set the full_name portion of the locator.  */
   void set_locator_fullname (const char *fullname);
@@ -58,6 +77,16 @@ struct tui_locator_window : public tui_g
   /* Architecture associated with code at this location.  */
   struct gdbarch *gdbarch = nullptr;
 
+protected:
+
+  void do_scroll_vertical (int n) override
+  {
+  }
+
+  void do_scroll_horizontal (int n) override
+  {
+  }
+
 private:
 
   /* Create the status line to display as much information as we can
@@ -67,8 +96,8 @@ private:
   std::string make_status_line () const;
 };
 
-extern void tui_update_locator_fullname (const char *);
+extern void tui_update_locator_fullname (struct symtab *symtab);
 extern void tui_show_locator_content (void);
-extern int tui_show_frame_info (struct frame_info *);
+extern bool tui_show_frame_info (struct frame_info *);
 
 #endif /* TUI_TUI_STACK_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-win.c ./gdb/tui/tui-win.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-win.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-win.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI window generic functions.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -33,8 +33,9 @@
 #include "cli/cli-style.h"
 #include "top.h"
 #include "source.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #include "gdbcmd.h"
+#include "async-event.h"
 
 #include "tui/tui.h"
 #include "tui/tui-io.h"
@@ -56,9 +57,6 @@
 
 #include <signal.h>
 
-static enum tui_status tui_adjust_win_heights (struct tui_win_info *, 
-					       int);
-static int new_height_ok (struct tui_win_info *, int);
 static void tui_set_tab_width_command (const char *, int);
 static void tui_refresh_all_command (const char *, int);
 static void tui_all_windows_info (const char *, int);
@@ -71,9 +69,6 @@ static void parse_scrolling_args (const
 				  int *);
 
 
-#define WIN_HEIGHT_USAGE    "Usage: winheight WINDOW-NAME [+ | -] NUM-LINES\n"
-#define FOCUS_USAGE         "Usage: focus [WINDOW-NAME | next | prev]\n"
-
 #ifndef ACS_LRCORNER
 #  define ACS_LRCORNER '+'
 #endif
@@ -122,7 +117,7 @@ struct tui_translate
 /* Translation table for border-mode variables.
    The list of values must be terminated by a NULL.
    After the NULL value, an entry defines the default.  */
-struct tui_translate tui_border_mode_translate[] = {
+static struct tui_translate tui_border_mode_translate[] = {
   { "normal",		A_NORMAL },
   { "standout",		A_STANDOUT },
   { "reverse",		A_REVERSE },
@@ -138,7 +133,7 @@ struct tui_translate tui_border_mode_tra
    character (see wborder, border curses operations).
    -1 is used to indicate the ACS because ACS characters
    are determined at run time by curses (depends on terminal).  */
-struct tui_translate tui_border_kind_translate_vline[] = {
+static struct tui_translate tui_border_kind_translate_vline[] = {
   { "space",    ' ' },
   { "ascii",    '|' },
   { "acs",      -1 },
@@ -146,7 +141,7 @@ struct tui_translate tui_border_kind_tra
   { "ascii",    '|' }
 };
 
-struct tui_translate tui_border_kind_translate_hline[] = {
+static struct tui_translate tui_border_kind_translate_hline[] = {
   { "space",    ' ' },
   { "ascii",    '-' },
   { "acs",      -1 },
@@ -154,7 +149,7 @@ struct tui_translate tui_border_kind_tra
   { "ascii",    '-' }
 };
 
-struct tui_translate tui_border_kind_translate_ulcorner[] = {
+static struct tui_translate tui_border_kind_translate_ulcorner[] = {
   { "space",    ' ' },
   { "ascii",    '+' },
   { "acs",      -1 },
@@ -162,7 +157,7 @@ struct tui_translate tui_border_kind_tra
   { "ascii",    '+' }
 };
 
-struct tui_translate tui_border_kind_translate_urcorner[] = {
+static struct tui_translate tui_border_kind_translate_urcorner[] = {
   { "space",    ' ' },
   { "ascii",    '+' },
   { "acs",      -1 },
@@ -170,7 +165,7 @@ struct tui_translate tui_border_kind_tra
   { "ascii",    '+' }
 };
 
-struct tui_translate tui_border_kind_translate_llcorner[] = {
+static struct tui_translate tui_border_kind_translate_llcorner[] = {
   { "space",    ' ' },
   { "ascii",    '+' },
   { "acs",      -1 },
@@ -178,7 +173,7 @@ struct tui_translate tui_border_kind_tra
   { "ascii",    '+' }
 };
 
-struct tui_translate tui_border_kind_translate_lrcorner[] = {
+static struct tui_translate tui_border_kind_translate_lrcorner[] = {
   { "space",    ' ' },
   { "ascii",    '+' },
   { "acs",      -1 },
@@ -188,7 +183,7 @@ struct tui_translate tui_border_kind_tra
 
 
 /* Tui configuration variables controlled with set/show command.  */
-const char *tui_active_border_mode = "bold-standout";
+static const char *tui_active_border_mode = "bold-standout";
 static void
 show_tui_active_border_mode (struct ui_file *file,
 			     int from_tty,
@@ -200,7 +195,7 @@ The attribute mode to use for the active
 		    value);
 }
 
-const char *tui_border_mode = "normal";
+static const char *tui_border_mode = "normal";
 static void
 show_tui_border_mode (struct ui_file *file, 
 		      int from_tty,
@@ -212,7 +207,7 @@ The attribute mode to use for the TUI wi
 		    value);
 }
 
-const char *tui_border_kind = "acs";
+static const char *tui_border_kind = "acs";
 static void
 show_tui_border_kind (struct ui_file *file, 
 		      int from_tty,
@@ -257,23 +252,23 @@ translate (const char *name, struct tui_
 /* Update the tui internal configuration according to gdb settings.
    Returns 1 if the configuration has changed and the screen should
    be redrawn.  */
-int
-tui_update_variables (void)
+bool
+tui_update_variables ()
 {
-  int need_redraw = 0;
+  bool need_redraw = false;
   struct tui_translate *entry;
 
   entry = translate (tui_border_mode, tui_border_mode_translate);
   if (tui_border_attrs != entry->value)
     {
       tui_border_attrs = entry->value;
-      need_redraw = 1;
+      need_redraw = true;
     }
   entry = translate (tui_active_border_mode, tui_border_mode_translate);
   if (tui_active_border_attrs != entry->value)
     {
       tui_active_border_attrs = entry->value;
-      need_redraw = 1;
+      need_redraw = true;
     }
 
   /* If one corner changes, all characters are changed.
@@ -283,7 +278,7 @@ tui_update_variables (void)
   if (tui_border_lrcorner != (chtype) entry->value)
     {
       tui_border_lrcorner = (entry->value < 0) ? ACS_LRCORNER : entry->value;
-      need_redraw = 1;
+      need_redraw = true;
     }
   entry = translate (tui_border_kind, tui_border_kind_translate_llcorner);
   tui_border_llcorner = (entry->value < 0) ? ACS_LLCORNER : entry->value;
@@ -303,33 +298,15 @@ tui_update_variables (void)
   return need_redraw;
 }
 
-static void
-set_tui_cmd (const char *args, int from_tty)
-{
-}
-
-static void
-show_tui_cmd (const char *args, int from_tty)
-{
-}
-
 static struct cmd_list_element *tuilist;
 
-static void
-tui_command (const char *args, int from_tty)
-{
-  printf_unfiltered (_("\"tui\" must be followed by the name of a "
-                     "tui command.\n"));
-  help_list (tuilist, "tui ", all_commands, gdb_stdout);
-}
-
 struct cmd_list_element **
 tui_get_cmd_list (void)
 {
   if (tuilist == 0)
-    add_prefix_cmd ("tui", class_tui, tui_command,
-                    _("Text User Interface commands."),
-                    &tuilist, "tui ", 0, &cmdlist);
+    add_basic_prefix_cmd ("tui", class_tui,
+			  _("Text User Interface commands."),
+			  &tuilist, "tui ", 0, &cmdlist);
   return &tuilist;
 }
 
@@ -388,7 +365,7 @@ window_name_completer (completion_tracke
   /* If no windows are considered visible then the TUI has not yet been
      initialized.  But still "focus src" and "focus cmd" will work because
      invoking the focus command will entail initializing the TUI which sets the
-     default layout to SRC_COMMAND.  */
+     default layout to "src".  */
   if (completion_name_vec.empty ())
     {
       completion_name_vec.push_back (SRC_NAME);
@@ -455,21 +432,6 @@ tui_update_gdb_sizes (void)
 }
 
 
-/* Set the logical focus to win_info.  */
-void
-tui_set_win_focus_to (struct tui_win_info *win_info)
-{
-  if (win_info != NULL)
-    {
-      struct tui_win_info *win_with_focus = tui_win_with_focus ();
-
-      tui_unhighlight_win (win_with_focus);
-      tui_set_win_with_focus (win_info);
-      tui_highlight_win (win_info);
-    }
-}
-
-
 void
 tui_win_info::forward_scroll (int num_to_scroll)
 {
@@ -536,13 +498,7 @@ tui_resize_all (void)
   height_diff = screenheight - tui_term_height ();
   if (height_diff || width_diff)
     {
-      enum tui_layout_type cur_layout = tui_current_layout ();
       struct tui_win_info *win_with_focus = tui_win_with_focus ();
-      struct tui_win_info *first_win;
-      struct tui_win_info *second_win;
-      tui_source_window_base *src_win;
-      struct tui_locator_window *locator = tui_locator_win_info_ptr ();
-      int new_height, split_diff, cmd_split_diff, num_wins_displayed = 2;
 
 #ifdef HAVE_RESIZE_TERM
       resize_term (screenheight, screenwidth);
@@ -553,109 +509,12 @@ tui_resize_all (void)
       tui_update_gdb_sizes ();
       tui_set_term_height_to (screenheight);
       tui_set_term_width_to (screenwidth);
-      if (cur_layout == SRC_DISASSEM_COMMAND 
-	  || cur_layout == SRC_DATA_COMMAND
-	  || cur_layout == DISASSEM_DATA_COMMAND)
-	num_wins_displayed++;
-      split_diff = height_diff / num_wins_displayed;
-      cmd_split_diff = split_diff;
-      if (height_diff % num_wins_displayed)
-	{
-	  if (height_diff < 0)
-	    cmd_split_diff--;
-	  else
-           cmd_split_diff++;
-       }
-      /* Now adjust each window.  */
+
       /* erase + clearok are used instead of a straightforward clear as
          AIX 5.3 does not define clear.  */
       erase ();
       clearok (curscr, TRUE);
-      switch (cur_layout)
-       {
-	case SRC_COMMAND:
-	case DISASSEM_COMMAND:
-	  src_win = *(tui_source_windows ().begin ());
-	  /* Check for invalid heights.  */
-	  if (height_diff == 0)
-	    new_height = src_win->height;
-	  else if ((src_win->height + split_diff) >=
-		   (screenheight - MIN_CMD_WIN_HEIGHT - 1))
-	    new_height = screenheight - MIN_CMD_WIN_HEIGHT - 1;
-	  else if ((src_win->height + split_diff) <= 0)
-	    new_height = MIN_WIN_HEIGHT;
-	  else
-	    new_height = src_win->height + split_diff;
-
-	  src_win->resize (new_height, screenwidth, 0, 0);
-
-	  locator->resize (1, screenwidth, 0, new_height);
-
-	  new_height = screenheight - (new_height + 1);
-	  TUI_CMD_WIN->resize (new_height, screenwidth,
-			       0, locator->origin.y + 1);
-	  break;
-	default:
-	  if (cur_layout == SRC_DISASSEM_COMMAND)
-	    {
-	      src_win = TUI_SRC_WIN;
-	      first_win = src_win;
-	      second_win = TUI_DISASM_WIN;
-	    }
-	  else
-	    {
-	      first_win = TUI_DATA_WIN;
-	      src_win = *(tui_source_windows ().begin ());
-	      second_win = src_win;
-	    }
-	  /* Change the first window's height/width.  */
-	  /* Check for invalid heights.  */
-	  if (height_diff == 0)
-	    new_height = first_win->height;
-	  else if ((first_win->height +
-		    second_win->height + (split_diff * 2)) >=
-		   (screenheight - MIN_CMD_WIN_HEIGHT - 1))
-	    new_height = (screenheight - MIN_CMD_WIN_HEIGHT - 1) / 2;
-	  else if ((first_win->height + split_diff) <= 0)
-	    new_height = MIN_WIN_HEIGHT;
-	  else
-	    new_height = first_win->height + split_diff;
-
-	  first_win->resize (new_height, screenwidth, 0, 0);
-
-	  /* Change the second window's height/width.  */
-	  /* Check for invalid heights.  */
-	  if (height_diff == 0)
-	    new_height = second_win->height;
-	  else if ((first_win->height +
-		    second_win->height + (split_diff * 2)) >=
-		   (screenheight - MIN_CMD_WIN_HEIGHT - 1))
-	    {
-	      new_height = screenheight - MIN_CMD_WIN_HEIGHT - 1;
-	      if (new_height % 2)
-		new_height = (new_height / 2) + 1;
-	      else
-		new_height /= 2;
-	    }
-	  else if ((second_win->height + split_diff) <= 0)
-	    new_height = MIN_WIN_HEIGHT;
-	  else
-	    new_height = second_win->height + split_diff;
-
-	  second_win->resize (new_height, screenwidth,
-			      0, first_win->height - 1);
-
-	  locator->resize (1, screenwidth,
-			   0, second_win->origin.y + new_height);
-
-	  /* Change the command window's height/width.  */
-	  new_height = screenheight - (locator->origin.y + 1);
-	  TUI_CMD_WIN->resize (new_height, screenwidth,
-			       0, locator->origin.y + 1);
-	  break;
-	}
-
-      tui_delete_invisible_windows ();
+      tui_apply_current_layout ();
       /* Turn keypad back on, unless focus is in the command
 	 window.  */
       if (win_with_focus != TUI_CMD_WIN)
@@ -799,18 +658,24 @@ tui_scroll_right_command (const char *ar
 static struct tui_win_info *
 tui_partial_win_by_name (gdb::string_view name)
 {
-  if (name != NULL)
+  struct tui_win_info *best = nullptr;
+
+  for (tui_win_info *item : all_tui_windows ())
     {
-      for (tui_win_info *item : all_tui_windows ())
-	{
-	  const char *cur_name = item->name ();
+      const char *cur_name = item->name ();
 
-	  if (startswith (cur_name, name))
-	    return item;
+      if (name == cur_name)
+	return item;
+      if (startswith (cur_name, name))
+	{
+	  if (best != nullptr)
+	    error (_("Window name \"%*s\" is ambiguous"),
+		   (int) name.size (), name.data ());
+	  best = item;
 	}
     }
 
-  return NULL;
+  return best;
 }
 
 /* Set focus to the window named by 'arg'.  */
@@ -819,29 +684,27 @@ tui_set_focus_command (const char *arg,
 {
   tui_enable ();
 
-  if (arg != NULL)
-    {
-      struct tui_win_info *win_info = NULL;
-
-      if (subset_compare (arg, "next"))
-	win_info = tui_next_win (tui_win_with_focus ());
-      else if (subset_compare (arg, "prev"))
-	win_info = tui_prev_win (tui_win_with_focus ());
-      else
-	win_info = tui_partial_win_by_name (arg);
+  if (arg == NULL)
+    error_no_arg (_("name of window to focus"));
 
-      if (win_info == NULL)
-	error (_("Unrecognized window name \"%s\""), arg);
-      if (!win_info->is_visible ())
-	error (_("Window \"%s\" is not visible"), arg);
+  struct tui_win_info *win_info = NULL;
 
-      tui_set_win_focus_to (win_info);
-      keypad (TUI_CMD_WIN->handle.get (), win_info != TUI_CMD_WIN);
-      printf_filtered (_("Focus set to %s window.\n"),
-		       tui_win_with_focus ()->name ());
-    }
+  if (subset_compare (arg, "next"))
+    win_info = tui_next_win (tui_win_with_focus ());
+  else if (subset_compare (arg, "prev"))
+    win_info = tui_prev_win (tui_win_with_focus ());
   else
-    error (_("Incorrect Number of Arguments.\n%s"), FOCUS_USAGE);
+    win_info = tui_partial_win_by_name (arg);
+
+  if (win_info == NULL)
+    error (_("Unrecognized window name \"%s\""), arg);
+  if (!win_info->is_visible ())
+    error (_("Window \"%s\" is not visible"), arg);
+
+  tui_set_win_focus_to (win_info);
+  keypad (TUI_CMD_WIN->handle.get (), win_info != TUI_CMD_WIN);
+  printf_filtered (_("Focus set to %s window.\n"),
+		   tui_win_with_focus ()->name ());
 }
 
 static void
@@ -887,6 +750,8 @@ tui_refresh_all_command (const char *arg
   tui_refresh_all_win ();
 }
 
+#define DEFAULT_TAB_LEN         8
+
 /* The tab width that should be used by the TUI.  */
 
 unsigned int tui_tab_width = DEFAULT_TAB_LEN;
@@ -987,244 +852,59 @@ tui_set_win_height_command (const char *
 {
   /* Make sure the curses mode is enabled.  */
   tui_enable ();
-  if (arg != NULL)
-    {
-      const char *buf = arg;
-      const char *buf_ptr = buf;
-      int new_height;
-      struct tui_win_info *win_info;
+  if (arg == NULL)
+    error_no_arg (_("name of window"));
 
-      buf_ptr = strchr (buf_ptr, ' ');
-      if (buf_ptr != NULL)
-	{
-	  /* Validate the window name.  */
-	  gdb::string_view wname (buf, buf_ptr - buf);
-	  win_info = tui_partial_win_by_name (wname);
-
-	  if (win_info == NULL)
-	    error (_("Unrecognized window name \"%s\""), arg);
-	  if (!win_info->is_visible ())
-	    error (_("Window \"%s\" is not visible"), arg);
+  const char *buf = arg;
+  const char *buf_ptr = buf;
+  int new_height;
+  struct tui_win_info *win_info;
 
-	  /* Process the size.  */
-	  buf_ptr = skip_spaces (buf_ptr);
+  buf_ptr = skip_to_space (buf_ptr);
 
-	  if (*buf_ptr != '\0')
-	    {
-	      bool negate = false;
-	      bool fixed_size = true;
-	      int input_no;;
-
-	      if (*buf_ptr == '+' || *buf_ptr == '-')
-		{
-		  if (*buf_ptr == '-')
-		    negate = true;
-		  fixed_size = false;
-		  buf_ptr++;
-		}
-	      input_no = atoi (buf_ptr);
-	      if (input_no > 0)
-		{
-		  if (negate)
-		    input_no *= (-1);
-		  if (fixed_size)
-		    new_height = input_no;
-		  else
-		    new_height = win_info->height + input_no;
-
-		  /* Now change the window's height, and adjust
-		     all other windows around it.  */
-		  if (tui_adjust_win_heights (win_info,
-					      new_height) == TUI_FAILURE)
-		    warning (_("Invalid window height specified.\n%s"),
-			     WIN_HEIGHT_USAGE);
-		  else
-		    tui_update_gdb_sizes ();
-		}
-	      else
-		warning (_("Invalid window height specified.\n%s"),
-			 WIN_HEIGHT_USAGE);
-	    }
-	}
-      else
-	printf_filtered (WIN_HEIGHT_USAGE);
-    }
-  else
-    printf_filtered (WIN_HEIGHT_USAGE);
-}
+  /* Validate the window name.  */
+  gdb::string_view wname (buf, buf_ptr - buf);
+  win_info = tui_partial_win_by_name (wname);
 
-/* Function to adjust all window heights around the primary.   */
-static enum tui_status
-tui_adjust_win_heights (struct tui_win_info *primary_win_info,
-			int new_height)
-{
-  enum tui_status status = TUI_FAILURE;
+  if (win_info == NULL)
+    error (_("Unrecognized window name \"%s\""), arg);
+  if (!win_info->is_visible ())
+    error (_("Window \"%s\" is not visible"), arg);
 
-  if (new_height_ok (primary_win_info, new_height))
+  /* Process the size.  */
+  buf_ptr = skip_spaces (buf_ptr);
+
+  if (*buf_ptr != '\0')
     {
-      status = TUI_SUCCESS;
-      if (new_height != primary_win_info->height)
-	{
-	  int diff;
-	  struct tui_win_info *win_info;
-	  struct tui_locator_window *status_line = tui_locator_win_info_ptr ();
-	  enum tui_layout_type cur_layout = tui_current_layout ();
-	  int width = tui_term_width ();
-
-	  diff = (new_height - primary_win_info->height) * (-1);
-	  if (cur_layout == SRC_COMMAND
-	      || cur_layout == DISASSEM_COMMAND)
-	    {
-	      struct tui_win_info *src_win_info;
+      bool negate = false;
+      bool fixed_size = true;
+      int input_no;;
 
-	      if (primary_win_info->type == CMD_WIN)
-		{
-		  win_info = *(tui_source_windows ().begin ());
-		  src_win_info = win_info;
-		  primary_win_info->resize (new_height, width,
-					    0,
-					    primary_win_info->origin.y + diff);
-		  win_info->resize (win_info->height + diff, width,
-				    0, win_info->origin.y);
-		  status_line->resize (1, width, 0,
-				       win_info->origin.y + win_info->height);
-		}
-	      else
-		{
-		  win_info = tui_win_list[CMD_WIN];
-		  src_win_info = primary_win_info;
-		  primary_win_info->resize (new_height, width,
-					    0, primary_win_info->origin.y);
-		  win_info->resize (win_info->height + diff, width,
-				    0, win_info->origin.y - diff);
-		  status_line->resize (1, width, 0,
-				       primary_win_info->origin.y
-				       + primary_win_info->height);
-		}
-	      if ((src_win_info->type == SRC_WIN
-		   || src_win_info->type == DISASSEM_WIN))
-		{
-		  tui_source_window_base *src_base
-		    = (tui_source_window_base *) src_win_info;
-		  if (src_base->content.empty ())
-		    src_base->erase_source_content ();
-		}
-	    }
+      if (*buf_ptr == '+' || *buf_ptr == '-')
+	{
+	  if (*buf_ptr == '-')
+	    negate = true;
+	  fixed_size = false;
+	  buf_ptr++;
+	}
+      input_no = atoi (buf_ptr);
+      if (input_no > 0)
+	{
+	  if (negate)
+	    input_no *= (-1);
+	  if (fixed_size)
+	    new_height = input_no;
 	  else
-	    {
-	      struct tui_win_info *first_win;
-	      struct tui_source_window_base *second_win;
-	      tui_source_window_base *src1;
-
-	      if (cur_layout == SRC_DISASSEM_COMMAND)
-		{
-		  src1 = TUI_SRC_WIN;
-		  first_win = src1;
-		  second_win = TUI_DISASM_WIN;
-		}
-	      else
-		{
-		  src1 = nullptr;
-		  first_win = TUI_DATA_WIN;
-		  second_win = *(tui_source_windows ().begin ());
-		}
-	      if (primary_win_info == TUI_CMD_WIN)
-		{ /* Split the change in height across the 1st & 2nd
-		     windows, adjusting them as well.  */
-		  /* Subtract the status line.  */
-		  int first_split_diff = diff / 2;
-		  int second_split_diff = first_split_diff;
-
-		  if (diff % 2)
-		    {
-		      if (first_win->height >
-			  second_win->height)
-			if (diff < 0)
-			  first_split_diff--;
-			else
-			  first_split_diff++;
-		      else
-			{
-			  if (diff < 0)
-			    second_split_diff--;
-			  else
-			    second_split_diff++;
-			}
-		    }
-		  /* Make sure that the minimum heights are
-		     honored.  */
-		  while ((first_win->height + first_split_diff) < 3)
-		    {
-		      first_split_diff++;
-		      second_split_diff--;
-		    }
-		  while ((second_win->height + second_split_diff) < 3)
-		    {
-		      second_split_diff++;
-		      first_split_diff--;
-		    }
-		  first_win->resize (first_win->height + first_split_diff,
-				     width,
-				     0, first_win->origin.y);
-		  second_win->resize (second_win->height + second_split_diff,
-				      width,
-				      0, first_win->height - 1);
-		  status_line->resize (1, width,
-				   0, (second_win->origin.y
-				       + second_win->height + 1));
-
-		  TUI_CMD_WIN->resize (new_height, width,
-				       0, status_line->origin.y + 1);
-		}
-	      else
-		{
-		  if ((TUI_CMD_WIN->height + diff) < 1)
-		    { /* If there is no way to increase the command
-			 window take real estate from the 1st or 2nd
-			 window.  */
-		      if ((TUI_CMD_WIN->height + diff) < 1)
-			{
-			  int i;
-
-			  for (i = TUI_CMD_WIN->height + diff;
-			       (i < 1); i++)
-			    if (primary_win_info == first_win)
-			      second_win->height--;
-			    else
-			      first_win->height--;
-			}
-		    }
-		  if (primary_win_info == first_win)
-		    first_win->resize (new_height, width, 0, 0);
-		  else
-		    first_win->resize (first_win->height, width, 0, 0);
-		  second_win->origin.y = first_win->height - 1;
-		  if (primary_win_info == second_win)
-		    second_win->resize (new_height, width,
-					0, first_win->height - 1);
-		  else
-		    second_win->resize (second_win->height, width,
-					0, first_win->height - 1);
-		  status_line->resize (1, width,
-				   0, (second_win->origin.y
-				       + second_win->height + 1));
-		  TUI_CMD_WIN->origin.y = status_line->origin.y + 1;
-		  if ((TUI_CMD_WIN->height + diff) < 1)
-		    TUI_CMD_WIN->resize (1, width, 0,
-					 status_line->origin.y + 1);
-		  else
-		    TUI_CMD_WIN->resize (TUI_CMD_WIN->height + diff, width,
-					 0, status_line->origin.y + 1);
-		}
-	      if (src1 != nullptr && src1->content.empty ())
-		src1->erase_source_content ();
-	      if (second_win->content.empty ())
-		second_win->erase_source_content ();
-	    }
+	    new_height = win_info->height + input_no;
+
+	  /* Now change the window's height, and adjust
+	     all other windows around it.  */
+	  tui_adjust_window_height (win_info, new_height);
+	  tui_update_gdb_sizes ();
 	}
+      else
+	error (_("Invalid window height specified"));
     }
-
-  return status;
 }
 
 /* See tui-data.h.  */
@@ -1235,113 +915,14 @@ tui_win_info::max_height () const
   return tui_term_height () - 2;
 }
 
-static int
-new_height_ok (struct tui_win_info *primary_win_info,
-	       int new_height)
-{
-  int ok = (new_height < tui_term_height ());
-
-  if (ok)
-    {
-      int diff;
-      enum tui_layout_type cur_layout = tui_current_layout ();
-
-      diff = (new_height - primary_win_info->height) * (-1);
-      if (cur_layout == SRC_COMMAND || cur_layout == DISASSEM_COMMAND)
-	{
-	  ok = (new_height <= primary_win_info->max_height ()
-		&& new_height >= MIN_CMD_WIN_HEIGHT);
-	  if (ok)
-	    {			/* Check the total height.  */
-	      struct tui_win_info *win_info;
-
-	      if (primary_win_info == TUI_CMD_WIN)
-		win_info = *(tui_source_windows ().begin ());
-	      else
-		win_info = TUI_CMD_WIN;
-	      ok = ((new_height +
-		     (win_info->height + diff)) <= tui_term_height ());
-	    }
-	}
-      else
-	{
-	  int cur_total_height, total_height, min_height = 0;
-	  struct tui_win_info *first_win;
-	  struct tui_win_info *second_win;
-
-	  if (cur_layout == SRC_DISASSEM_COMMAND)
-	    {
-	      first_win = TUI_SRC_WIN;
-	      second_win = TUI_DISASM_WIN;
-	    }
-	  else
-	    {
-	      first_win = TUI_DATA_WIN;
-	      second_win = *(tui_source_windows ().begin ());
-	    }
-	  /* We could simply add all the heights to obtain the same
-	     result but below is more explicit since we subtract 1 for
-	     the line that the first and second windows share, and add
-	     one for the status line.  */
-	  total_height = cur_total_height =
-	    (first_win->height + second_win->height - 1)
-	    + TUI_CMD_WIN->height + 1;	/* Status_line. */
-	  if (primary_win_info == TUI_CMD_WIN)
-	    {
-	      /* Status line included since first and second window
-		 share a line.  */
-	      ok = ((first_win->height +
-		     second_win->height + diff) >=
-		    (MIN_WIN_HEIGHT * 2)
-		    && new_height >= MIN_CMD_WIN_HEIGHT);
-	      if (ok)
-		{
-		  total_height = new_height +
-		    (first_win->height +
-		     second_win->height + diff);
-		  min_height = MIN_CMD_WIN_HEIGHT;
-		}
-	    }
-	  else
-	    {
-	      min_height = MIN_WIN_HEIGHT;
-
-	      /* First see if we can increase/decrease the command
-	         window.  And make sure that the command window is at
-	         least 1 line.  */
-	      ok = ((TUI_CMD_WIN->height + diff) > 0);
-	      if (!ok)
-		{ /* Looks like we have to increase/decrease one of
-		     the other windows.  */
-		  if (primary_win_info == first_win)
-		    ok = (second_win->height + diff) >= min_height;
-		  else
-		    ok = (first_win->height + diff) >= min_height;
-		}
-	      if (ok)
-		{
-		  if (primary_win_info == first_win)
-		    total_height = new_height +
-		      second_win->height +
-		      TUI_CMD_WIN->height + diff;
-		  else
-		    total_height = new_height +
-		      first_win->height +
-		      TUI_CMD_WIN->height + diff;
-		}
-	    }
-	  /* Now make sure that the proposed total height doesn't
-	     exceed the old total height.  */
-	  if (ok)
-	    ok = (new_height >= min_height
-		  && total_height <= cur_total_height);
-	}
-    }
+/* See tui-data.h.  */
 
-  return ok;
+int
+tui_win_info::max_width () const
+{
+  return tui_term_width () - 2;
 }
 
-
 static void
 parse_scrolling_args (const char *arg, 
 		      struct tui_win_info **win_to_scroll,
@@ -1402,8 +983,9 @@ parse_scrolling_args (const char *arg,
 /* Function to initialize gdb commands, for tui window
    manipulation.  */
 
+void _initialize_tui_win ();
 void
-_initialize_tui_win (void)
+_initialize_tui_win ()
 {
   static struct cmd_list_element *tui_setlist;
   static struct cmd_list_element *tui_showlist;
@@ -1411,14 +993,14 @@ _initialize_tui_win (void)
 
   /* Define the classes of commands.
      They will appear in the help list in the reverse of this order.  */
-  add_prefix_cmd ("tui", class_tui, set_tui_cmd,
-                  _("TUI configuration variables."),
-		  &tui_setlist, "set tui ",
-		  0 /* allow-unknown */, &setlist);
-  add_prefix_cmd ("tui", class_tui, show_tui_cmd,
-                  _("TUI configuration variables."),
-		  &tui_showlist, "show tui ",
-		  0 /* allow-unknown */, &showlist);
+  add_basic_prefix_cmd ("tui", class_tui,
+			_("TUI configuration variables."),
+			&tui_setlist, "set tui ",
+			0 /* allow-unknown */, &setlist);
+  add_show_prefix_cmd ("tui", class_tui,
+		       _("TUI configuration variables."),
+		       &tui_showlist, "show tui ",
+		       0 /* allow-unknown */, &showlist);
 
   add_com ("refresh", class_tui, tui_refresh_all_command,
            _("Refresh the terminal display."));
@@ -1429,39 +1011,40 @@ Usage: tabset N"));
   deprecate_cmd (cmd, "set tui tab-width");
 
   cmd = add_com ("winheight", class_tui, tui_set_win_height_command, _("\
-Set or modify the height of a specified window.\n"
-WIN_HEIGHT_USAGE
-"Window names are:\n\
-   src  : the source window\n\
-   cmd  : the command window\n\
-   asm  : the disassembly window\n\
-   regs : the register display"));
+Set or modify the height of a specified window.\n\
+Usage: winheight WINDOW-NAME [+ | -] NUM-LINES\n\
+Use \"info win\" to see the names of the windows currently being displayed."));
   add_com_alias ("wh", "winheight", class_tui, 0);
   set_cmd_completer (cmd, winheight_completer);
   add_info ("win", tui_all_windows_info,
-	    _("List of all displayed windows."));
+	    _("List of all displayed windows.\n\
+Usage: info win"));
   cmd = add_com ("focus", class_tui, tui_set_focus_command, _("\
-Set focus to named window or next/prev window.\n"
-FOCUS_USAGE
-"Valid Window names are:\n\
-   src  : the source window\n\
-   asm  : the disassembly window\n\
-   regs : the register display\n\
-   cmd  : the command window"));
+Set focus to named window or next/prev window.\n\
+Usage: focus [WINDOW-NAME | next | prev]\n\
+Use \"info win\" to see the names of the windows currently being displayed."));
   add_com_alias ("fs", "focus", class_tui, 0);
   set_cmd_completer (cmd, focus_completer);
   add_com ("+", class_tui, tui_scroll_forward_command, _("\
 Scroll window forward.\n\
-Usage: + [WIN] [N]"));
+Usage: + [N] [WIN]\n\
+Scroll window WIN N lines forwards.  Both WIN and N are optional, N\n\
+defaults to 1, and WIN defaults to the currently focused window."));
   add_com ("-", class_tui, tui_scroll_backward_command, _("\
 Scroll window backward.\n\
-Usage: - [WIN] [N]"));
+Usage: - [N] [WIN]\n\
+Scroll window WIN N lines backwards.  Both WIN and N are optional, N\n\
+defaults to 1, and WIN defaults to the currently focused window."));
   add_com ("<", class_tui, tui_scroll_left_command, _("\
 Scroll window text to the left.\n\
-Usage: < [WIN] [N]"));
+Usage: < [N] [WIN]\n\
+Scroll window WIN N characters left.  Both WIN and N are optional, N\n\
+defaults to 1, and WIN defaults to the currently focused window."));
   add_com (">", class_tui, tui_scroll_right_command, _("\
 Scroll window text to the right.\n\
-Usage: > [WIN] [N]"));
+Usage: > [N] [WIN]\n\
+Scroll window WIN N characters right.  Both WIN and N are optional, N\n\
+defaults to 1, and WIN defaults to the currently focused window."));
 
   /* Define the tui control variables.  */
   add_setshow_enum_cmd ("border-kind", no_class, tui_border_kind_enums,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-wingeneral.c ./gdb/tui/tui-wingeneral.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-wingeneral.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-wingeneral.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* General window behavior.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -30,13 +30,51 @@
 
 #include "gdb_curses.h"
 
+/* This is true if we're currently suppressing output, via
+   wnoutrefresh.  This is needed in case we create a new window while
+   in this mode.  */
+
+static bool suppress_output;
+
+/* See tui-data.h.  */
+
+tui_suppress_output::tui_suppress_output ()
+  : m_saved_suppress (suppress_output)
+{
+  suppress_output = true;
+
+  for (const auto &win : all_tui_windows ())
+    win->no_refresh ();
+}
+
+/* See tui-data.h.  */
+
+tui_suppress_output::~tui_suppress_output ()
+{
+  suppress_output = m_saved_suppress;
+  if (!suppress_output)
+    doupdate ();
+
+  for (const auto &win : all_tui_windows ())
+    win->refresh_window ();
+}
+
+/* See tui-data.h.  */
+
+void
+tui_wrefresh (WINDOW *win)
+{
+  if (!suppress_output)
+    wrefresh (win);
+}
+
 /* See tui-data.h.  */
 
 void
-tui_gen_win_info::refresh_window ()
+tui_win_info::refresh_window ()
 {
   if (handle != NULL)
-    wrefresh (handle.get ());
+    tui_wrefresh (handle.get ());
 }
 
 /* Draw a border arround the window.  */
@@ -55,9 +93,10 @@ box_win (struct tui_win_info *win_info,
 
   /* 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 ()));
+  if (cli_styling)
+    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,
@@ -74,13 +113,13 @@ box_win (struct tui_win_info *win_info,
       int max_len = win_info->width - 2 - 2;
 
       if (win_info->title.size () <= max_len)
-	mvwaddstr (win, 0, 3, win_info->title.c_str ());
+	mvwaddstr (win, 0, 2, win_info->title.c_str ());
       else
 	{
 	  std::string truncated
 	    = "..." + win_info->title.substr (win_info->title.size ()
 					      - max_len + 3);
-	  mvwaddstr (win, 0, 3, truncated.c_str ());
+	  mvwaddstr (win, 0, 2, truncated.c_str ());
 	}
     }
   wattroff (win, attrs);
@@ -127,28 +166,25 @@ tui_win_info::check_and_display_highligh
     }
 }
 
-
-void
-tui_gen_win_info::make_window ()
-{
-  handle.reset (newwin (height, width, origin.y, origin.x));
-  if (handle != NULL)
-    scrollok (handle.get (), TRUE);
-}
-
 void
 tui_win_info::make_window ()
 {
-  tui_gen_win_info::make_window ();
-  if (handle != NULL && can_box ())
-    box_win (this, false);
+  handle.reset (newwin (height, width, y, x));
+  if (handle != NULL)
+    {
+      if (suppress_output)
+	wnoutrefresh (handle.get ());
+      scrollok (handle.get (), TRUE);
+      if (can_box ())
+	box_win (this, false);
+    }
 }
 
 /* We can't really make windows visible, or invisible.  So we have to
    delete the entire window when making it visible, and create it
    again when making it visible.  */
 void
-tui_gen_win_info::make_visible (bool visible)
+tui_win_info::make_visible (bool visible)
 {
   if (is_visible () == visible)
     return;
@@ -159,15 +195,6 @@ tui_gen_win_info::make_visible (bool vis
     handle.reset (nullptr);
 }
 
-/* See tui-wingeneral.h.  */
-
-void
-tui_make_all_invisible (void)
-{
-  for (tui_win_info *win_info : all_tui_windows ())
-    win_info->make_visible (false);
-}
-
 /* Function to refresh all the windows currently displayed.  */
 
 void
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-wingeneral.h ./gdb/tui/tui-wingeneral.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-wingeneral.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-wingeneral.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* General window behavior.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -26,11 +26,31 @@
 
 struct tui_win_info;
 
-/* Makes all windows invisible.  */
-extern void tui_make_all_invisible (void);
-
 extern void tui_unhighlight_win (struct tui_win_info *);
 extern void tui_highlight_win (struct tui_win_info *);
 extern void tui_refresh_all ();
 
+/* An RAII class that suppresses output on construction (calling
+   wnoutrefresh on the existing windows), and then flushes the output
+   (via doupdate) when destroyed.  */
+
+class tui_suppress_output
+{
+public:
+
+  tui_suppress_output ();
+  ~tui_suppress_output ();
+
+  DISABLE_COPY_AND_ASSIGN (tui_suppress_output);
+
+private:
+
+  /* Save the state of the suppression global.  */
+  bool m_saved_suppress;
+};
+
+/* Call wrefresh on the given window.  However, if output is being
+   suppressed via tui_suppress_output, do not call wrefresh.  */
+extern void tui_wrefresh (WINDOW *win);
+
 #endif /* TUI_TUI_WINGENERAL_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-win.h ./gdb/tui/tui-win.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-win.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-win.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI window generic functions.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -24,12 +24,6 @@
 
 #include "tui/tui-data.h"
 
-struct tui_win_info;
-
-extern void tui_scroll_forward (struct tui_win_info *, int);
-extern void tui_scroll_backward (struct tui_win_info *, int);
-extern void tui_scroll_left (struct tui_win_info *, int);
-extern void tui_scroll_right (struct tui_win_info *, int);
 extern void tui_set_win_focus_to (struct tui_win_info *);
 extern void tui_resize_all (void);
 extern void tui_refresh_all_win (void);
@@ -44,7 +38,7 @@ extern chtype tui_border_hline;
 extern int tui_border_attrs;
 extern int tui_active_border_attrs;
 
-extern int tui_update_variables (void);
+extern bool tui_update_variables ();
 
 extern void tui_initialize_win (void);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-winsource.c ./gdb/tui/tui-winsource.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-winsource.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-winsource.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI display source/assembly window.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -57,10 +57,7 @@ tui_display_main ()
 
 	  tui_update_source_windows_with_addr (gdbarch, addr);
 	  s = find_pc_line_symtab (addr);
-          if (s != NULL)
-             tui_update_locator_fullname (symtab_to_fullname (s));
-          else
-             tui_update_locator_fullname ("??");
+	  tui_update_locator_fullname (s);
 	}
     }
 }
@@ -170,11 +167,10 @@ tui_source_window_base::style_changed ()
 void
 tui_source_window_base::update_source_window
   (struct gdbarch *gdbarch,
-   struct symtab *s,
-   struct tui_line_or_address line_or_addr)
+   const struct symtab_and_line &sal)
 {
-  horizontal_offset = 0;
-  update_source_window_as_is (gdbarch, s, line_or_addr);
+  m_horizontal_offset = 0;
+  update_source_window_as_is (gdbarch, sal);
 }
 
 
@@ -183,33 +179,17 @@ tui_source_window_base::update_source_wi
 void
 tui_source_window_base::update_source_window_as_is
   (struct gdbarch *gdbarch,
-   struct symtab *s,
-   struct tui_line_or_address line_or_addr)
+   const struct symtab_and_line &sal)
 {
-  enum tui_status ret
-    = set_contents (gdbarch, s, line_or_addr);
+  bool ret = set_contents (gdbarch, sal);
 
-  if (ret == TUI_FAILURE)
+  if (!ret)
     erase_source_content ();
   else
     {
       update_breakpoint_info (nullptr, false);
       show_source_content ();
       update_exec_info ();
-      if (type == SRC_WIN)
-	{
-	  symtab_and_line sal;
-
-	  sal.line = line_or_addr.u.line_no + (content.size () - 2);
-	  sal.symtab = s;
-	  sal.pspace = SYMTAB_PSPACE (s);
-	  set_current_source_symtab_and_line (sal);
-	  /* If the focus was in the asm win, put it in the src win if
-	     we don't have a split layout.  */
-	  if (tui_win_with_focus () == TUI_DISASM_WIN
-	      && tui_current_layout () != SRC_DISASSEM_COMMAND)
-	    tui_set_win_focus_to (this);
-	}
     }
 }
 
@@ -219,67 +199,28 @@ tui_source_window_base::update_source_wi
 void
 tui_update_source_windows_with_addr (struct gdbarch *gdbarch, CORE_ADDR addr)
 {
+  struct symtab_and_line sal {};
   if (addr != 0)
-    {
-      struct symtab_and_line sal;
-      struct tui_line_or_address l;
-      
-      switch (tui_current_layout ())
-	{
-	case DISASSEM_COMMAND:
-	case DISASSEM_DATA_COMMAND:
-	  tui_show_disassem (gdbarch, addr);
-	  break;
-	case SRC_DISASSEM_COMMAND:
-	  tui_show_disassem_and_update_source (gdbarch, addr);
-	  break;
-	default:
-	  sal = find_pc_line (addr, 0);
-	  l.loa = LOA_LINE;
-	  l.u.line_no = sal.line;
-	  TUI_SRC_WIN->show_symtab_source (gdbarch, sal.symtab, l);
-	  break;
-	}
-    }
-  else
-    {
-      for (struct tui_source_window_base *win_info : tui_source_windows ())
-	win_info->erase_source_content ();
-    }
+    sal = find_pc_line (addr, 0);
+
+  for (struct tui_source_window_base *win_info : tui_source_windows ())
+    win_info->update_source_window (gdbarch, sal);
 }
 
-/* Function to ensure that the source and/or disassemly windows
-   reflect the input address.  */
+/* Function to ensure that the source and/or disassembly windows
+   reflect the symtab and line.  */
 void
-tui_update_source_windows_with_line (struct symtab *s, int line)
+tui_update_source_windows_with_line (struct symtab_and_line sal)
 {
-  struct gdbarch *gdbarch;
-  CORE_ADDR pc;
-  struct tui_line_or_address l;
-
-  if (!s)
-    return;
-
-  gdbarch = get_objfile_arch (SYMTAB_OBJFILE (s));
-
-  switch (tui_current_layout ())
-    {
-    case DISASSEM_COMMAND:
-    case DISASSEM_DATA_COMMAND:
-      find_line_pc (s, line, &pc);
-      tui_update_source_windows_with_addr (gdbarch, pc);
-      break;
-    default:
-      l.loa = LOA_LINE;
-      l.u.line_no = line;
-      TUI_SRC_WIN->show_symtab_source (gdbarch, s, l);
-      if (tui_current_layout () == SRC_DISASSEM_COMMAND)
-	{
-	  find_line_pc (s, line, &pc);
-	  tui_show_disassem (gdbarch, pc);
-	}
-      break;
+  struct gdbarch *gdbarch = nullptr;
+  if (sal.symtab != nullptr)
+    {
+      find_line_pc (sal.symtab, sal.line, &sal.pc);
+      gdbarch = SYMTAB_OBJFILE (sal.symtab)->arch ();
     }
+
+  for (struct tui_source_window_base *win_info : tui_source_windows ())
+    win_info->update_source_window (gdbarch, sal);
 }
 
 void
@@ -288,7 +229,7 @@ tui_source_window_base::do_erase_source_
   int x_pos;
   int half_width = (width - 2) / 2;
 
-  content.clear ();
+  m_content.clear ();
   if (handle != NULL)
     {
       werase (handle.get ());
@@ -309,48 +250,46 @@ tui_source_window_base::do_erase_source_
 
 
 /* Redraw the complete line of a source or disassembly window.  */
-static void
-tui_show_source_line (struct tui_source_window_base *win_info, int lineno)
+void
+tui_source_window_base::show_source_line (int lineno)
 {
   struct tui_source_element *line;
   int x;
 
-  line = &win_info->content[lineno - 1];
+  line = &m_content[lineno - 1];
   if (line->is_exec_point)
-    tui_set_reverse_mode (win_info->handle.get (), true);
+    tui_set_reverse_mode (handle.get (), true);
 
-  wmove (win_info->handle.get (), lineno, TUI_EXECINFO_SIZE);
-  tui_puts (line->line.c_str (), win_info->handle.get ());
+  wmove (handle.get (), lineno, TUI_EXECINFO_SIZE);
+  tui_puts (line->line.c_str (), handle.get ());
   if (line->is_exec_point)
-    tui_set_reverse_mode (win_info->handle.get (), false);
+    tui_set_reverse_mode (handle.get (), false);
 
   /* Clear to end of line but stop before the border.  */
-  x = getcurx (win_info->handle.get ());
-  while (x + 1 < win_info->width)
+  x = getcurx (handle.get ());
+  while (x + 1 < width)
     {
-      waddch (win_info->handle.get (), ' ');
-      x = getcurx (win_info->handle.get ());
+      waddch (handle.get (), ' ');
+      x = getcurx (handle.get ());
     }
 }
 
 void
 tui_source_window_base::show_source_content ()
 {
-  gdb_assert (!content.empty ());
+  gdb_assert (!m_content.empty ());
 
-  for (int lineno = 1; lineno <= content.size (); lineno++)
-    tui_show_source_line (this, lineno);
+  for (int lineno = 1; lineno <= m_content.size (); lineno++)
+    show_source_line (lineno);
 
   check_and_display_highlight_if_needed ();
   refresh_window ();
 }
 
-tui_source_window_base::tui_source_window_base (enum tui_win_type type)
-  : tui_win_info (type)
+tui_source_window_base::tui_source_window_base ()
 {
-  gdb_assert (type == SRC_WIN || type == DISASSEM_WIN);
-  start_line_or_addr.loa = LOA_ADDRESS;
-  start_line_or_addr.u.addr = 0;
+  m_start_line_or_addr.loa = LOA_ADDRESS;
+  m_start_line_or_addr.u.addr = 0;
 
   gdb::observers::source_styling_changed.attach
     (std::bind (&tui_source_window::style_changed, this),
@@ -374,35 +313,28 @@ tui_source_window_base::update_tab_width
 void
 tui_source_window_base::rerender ()
 {
-  if (!content.empty ())
+  if (!m_content.empty ())
     {
-      struct tui_line_or_address line_or_addr;
       struct symtab_and_line cursal
 	= get_current_source_symtab_and_line ();
 
-      line_or_addr = start_line_or_addr;
-      update_source_window (gdbarch, cursal.symtab, line_or_addr);
+      if (m_start_line_or_addr.loa == LOA_LINE)
+	cursal.line = m_start_line_or_addr.u.line_no;
+      else
+	cursal.pc = m_start_line_or_addr.u.addr;
+      update_source_window (m_gdbarch, cursal);
     }
   else if (deprecated_safe_get_selected_frame () != NULL)
     {
-      struct tui_line_or_address line;
       struct symtab_and_line cursal
 	= get_current_source_symtab_and_line ();
       struct frame_info *frame = deprecated_safe_get_selected_frame ();
       struct gdbarch *gdbarch = get_frame_arch (frame);
 
       struct symtab *s = find_pc_line_symtab (get_frame_pc (frame));
-      if (type == SRC_WIN)
-	{
-	  line.loa = LOA_LINE;
-	  line.u.line_no = cursal.line;
-	}
-      else
-	{
-	  line.loa = LOA_ADDRESS;
-	  find_line_pc (s, cursal.line, &line.u.addr);
-	}
-      update_source_window (gdbarch, s, line);
+      if (this != TUI_SRC_WIN)
+	find_line_pc (s, cursal.line, &cursal.pc);
+      update_source_window (gdbarch, cursal);
     }
   else
     erase_source_content ();
@@ -413,17 +345,28 @@ tui_source_window_base::rerender ()
 void
 tui_source_window_base::refill ()
 {
-  symtab *s = nullptr;
+  symtab_and_line sal {};
 
-  if (type == SRC_WIN)
+  if (this == TUI_SRC_WIN)
     {
-      symtab_and_line cursal = get_current_source_symtab_and_line ();
-      s = (cursal.symtab == NULL
-	   ? find_pc_line_symtab (get_frame_pc (get_selected_frame (NULL)))
-	   : cursal.symtab);
+      sal = get_current_source_symtab_and_line ();
+      if (sal.symtab == NULL)
+	{
+	  struct frame_info *fi = deprecated_safe_get_selected_frame ();
+	  if (fi != nullptr)
+	    sal = find_pc_line (get_frame_pc (fi), 0);
+	}
     }
 
-  update_source_window_as_is (gdbarch, s, content[0].line_or_addr);
+  if (sal.pspace == nullptr)
+    sal.pspace = current_program_space;
+
+  if (m_start_line_or_addr.loa == LOA_LINE)
+    sal.line = m_start_line_or_addr.u.line_no;
+  else
+    sal.pc = m_start_line_or_addr.u.addr;
+
+  update_source_window_as_is (m_gdbarch, sal);
 }
 
 /* Scroll the source forward or backward horizontally.  */
@@ -431,12 +374,12 @@ tui_source_window_base::refill ()
 void
 tui_source_window_base::do_scroll_horizontal (int num_to_scroll)
 {
-  if (!content.empty ())
+  if (!m_content.empty ())
     {
-      int offset = horizontal_offset + num_to_scroll;
+      int offset = m_horizontal_offset + num_to_scroll;
       if (offset < 0)
 	offset = 0;
-      horizontal_offset = offset;
+      m_horizontal_offset = offset;
       refill ();
     }
 }
@@ -452,26 +395,23 @@ tui_source_window_base::set_is_exec_poin
   int i;
 
   i = 0;
-  while (i < content.size ())
+  while (i < m_content.size ())
     {
       bool new_state;
       struct tui_line_or_address content_loa =
-	content[i].line_or_addr;
+	m_content[i].line_or_addr;
 
-      gdb_assert (l.loa == LOA_ADDRESS || l.loa == LOA_LINE);
-      gdb_assert (content_loa.loa == LOA_LINE
-		  || content_loa.loa == LOA_ADDRESS);
       if (content_loa.loa == l.loa
 	  && ((l.loa == LOA_LINE && content_loa.u.line_no == l.u.line_no)
               || (l.loa == LOA_ADDRESS && content_loa.u.addr == l.u.addr)))
         new_state = true;
       else
 	new_state = false;
-      if (new_state != content[i].is_exec_point)
+      if (new_state != m_content[i].is_exec_point)
         {
           changed = true;
-          content[i].is_exec_point = new_state;
-          tui_show_source_line (this, i + 1);
+          m_content[i].is_exec_point = new_state;
+          show_source_line (i + 1);
         }
       i++;
     }
@@ -505,11 +445,11 @@ tui_source_window_base::update_breakpoin
   int i;
   bool need_refresh = false;
 
-  for (i = 0; i < content.size (); i++)
+  for (i = 0; i < m_content.size (); i++)
     {
       struct tui_source_element *line;
 
-      line = &content[i];
+      line = &m_content[i];
       if (current_only && !line->is_exec_point)
          continue;
 
@@ -521,9 +461,6 @@ tui_source_window_base::update_breakpoin
         {
 	  struct bp_location *loc;
 
-	  gdb_assert (line->line_or_addr.loa == LOA_LINE
-		      || line->line_or_addr.loa == LOA_ADDRESS);
-
 	  if (bp == being_deleted)
 	    return false;
 
@@ -561,9 +498,9 @@ void
 tui_source_window_base::update_exec_info ()
 {
   update_breakpoint_info (nullptr, true);
-  for (int i = 0; i < content.size (); i++)
+  for (int i = 0; i < m_content.size (); i++)
     {
-      struct tui_source_element *src_element = &content[i];
+      struct tui_source_element *src_element = &m_content[i];
       char element[TUI_EXECINFO_SIZE] = "   ";
 
       /* Now update the exec info content based upon the state
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-winsource.h ./gdb/tui/tui-winsource.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/tui/tui-winsource.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/tui/tui-winsource.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* TUI display source/assembly window.
 
-   Copyright (C) 1998-2020 Free Software Foundation, Inc.
+   Copyright (C) 1998-2021 Free Software Foundation, Inc.
 
    Contributed by Hewlett-Packard Company.
 
@@ -25,6 +25,23 @@
 #include "tui/tui-data.h"
 #include "symtab.h"
 
+enum tui_line_or_address_kind
+{
+  LOA_LINE,
+  LOA_ADDRESS
+};
+
+/* Structure describing source line or line address.  */
+struct tui_line_or_address
+{
+  enum tui_line_or_address_kind loa;
+  union
+    {
+      int line_no;
+      CORE_ADDR addr;
+    } u;
+};
+
 /* Flags to tell what kind of breakpoint is at current line.  */
 enum tui_bp_flag
 {
@@ -75,7 +92,7 @@ struct tui_source_element
 struct tui_source_window_base : public tui_win_info
 {
 protected:
-  explicit tui_source_window_base (enum tui_win_type type);
+  tui_source_window_base ();
   ~tui_source_window_base ();
 
   DISABLE_COPY_AND_ASSIGN (tui_source_window_base);
@@ -87,10 +104,20 @@ protected:
 
   void rerender () override;
 
-  virtual enum tui_status set_contents
-    (struct gdbarch *gdbarch,
-     struct symtab *s,
-     struct tui_line_or_address line_or_addr) = 0;
+  virtual bool set_contents (struct gdbarch *gdbarch,
+			     const struct symtab_and_line &sal) = 0;
+
+  /* Redraw the complete line of a source or disassembly window.  */
+  void show_source_line (int lineno);
+
+  /* Used for horizontal scroll.  */
+  int m_horizontal_offset = 0;
+  struct tui_line_or_address m_start_line_or_addr;
+
+  /* Architecture associated with code at this location.  */
+  struct gdbarch *m_gdbarch = nullptr;
+
+  std::vector<tui_source_element> m_content;
 
 public:
 
@@ -109,15 +136,12 @@ public:
 
   /* Update the window to display the given location.  Does nothing if
      the location is already displayed.  */
-  virtual void maybe_update (struct frame_info *fi, symtab_and_line sal,
-			     int line_no, CORE_ADDR addr) = 0;
+  virtual void maybe_update (struct frame_info *fi, symtab_and_line sal) = 0;
 
   void update_source_window_as_is  (struct gdbarch *gdbarch,
-				    struct symtab *s,
-				    struct tui_line_or_address line_or_addr);
+				    const struct symtab_and_line &sal);
   void update_source_window (struct gdbarch *gdbarch,
-			     struct symtab *s,
-			     struct tui_line_or_address line_or_addr);
+			     const struct symtab_and_line &sal);
 
   /* Scan the source window and the breakpoints to update the
      break_mode information for each line.  Returns true if something
@@ -130,14 +154,9 @@ public:
   /* Erase the source content.  */
   virtual void erase_source_content () = 0;
 
-  /* Used for horizontal scroll.  */
-  int horizontal_offset = 0;
-  struct tui_line_or_address start_line_or_addr;
-
-  /* Architecture associated with code at this location.  */
-  struct gdbarch *gdbarch = nullptr;
-
-  std::vector<tui_source_element> content;
+  /* Return the start address and gdbarch.  */
+  virtual void display_start_addr (struct gdbarch **gdbarch_p,
+				   CORE_ADDR *addr_p) = 0;
 
 private:
 
@@ -158,6 +177,8 @@ struct tui_source_window_iterator
 {
 public:
 
+  typedef std::vector<tui_win_info *>::iterator inner_iterator;
+
   typedef tui_source_window_iterator self_type;
   typedef struct tui_source_window_base *value_type;
   typedef struct tui_source_window_base *&reference;
@@ -165,14 +186,16 @@ public:
   typedef std::forward_iterator_tag iterator_category;
   typedef int difference_type;
 
-  explicit tui_source_window_iterator (bool dummy)
-    : m_iter (SRC_WIN)
+  explicit tui_source_window_iterator (const inner_iterator &it,
+				       const inner_iterator &end)
+    : m_iter (it),
+      m_end (end)
   {
     advance ();
   }
 
-  tui_source_window_iterator ()
-    : m_iter (tui_win_type (DISASSEM_WIN + 1))
+  explicit tui_source_window_iterator (const inner_iterator &it)
+    : m_iter (it)
   {
   }
 
@@ -183,7 +206,7 @@ public:
 
   value_type operator* () const
   {
-    return (value_type) *m_iter;
+    return dynamic_cast<tui_source_window_base *> (*m_iter);
   }
 
   self_type &operator++ ()
@@ -197,26 +220,33 @@ private:
 
   void advance ()
   {
-    tui_window_iterator end;
-    while (m_iter != end && *m_iter == nullptr)
+    while (m_iter != m_end
+	   && dynamic_cast<tui_source_window_base *> (*m_iter) == nullptr)
       ++m_iter;
   }
 
-  tui_window_iterator m_iter;
+  inner_iterator m_iter;
+  inner_iterator m_end;
 };
 
 /* A range adapter for source windows.  */
 
 struct tui_source_windows
 {
+  /* Work around Wmaybe-uninitalized warning with g++ 11.0.0, see also
+     PR gcc/96295.  Note that "tui_source_windows () = default" doesn't work
+     around the warning.  */
+  tui_source_windows () {}
+
   tui_source_window_iterator begin () const
   {
-    return tui_source_window_iterator (true);
+    return tui_source_window_iterator (tui_windows.begin (),
+				       tui_windows.end ());
   }
 
   tui_source_window_iterator end () const
   {
-    return tui_source_window_iterator ();
+    return tui_source_window_iterator (tui_windows.end ());
   }
 };
 
@@ -232,8 +262,7 @@ extern void tui_update_all_breakpoint_in
 /* Function to display the "main" routine.  */
 extern void tui_display_main (void);
 extern void tui_update_source_windows_with_addr (struct gdbarch *, CORE_ADDR);
-extern void tui_update_source_windows_with_line (struct symtab *, 
-						 int);
+extern void tui_update_source_windows_with_line (struct symtab_and_line sal);
 
 /* 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/typeprint.c ./gdb/typeprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/typeprint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/typeprint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Language independent support for printing types for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -110,14 +110,14 @@ void
 print_offset_data::update (struct type *type, unsigned int field_idx,
 			   struct ui_file *stream)
 {
-  if (field_is_static (&TYPE_FIELD (type, field_idx)))
+  if (field_is_static (&type->field (field_idx)))
     {
       print_spaces_filtered (indentation, stream);
       return;
     }
 
-  struct type *ftype = check_typedef (TYPE_FIELD_TYPE (type, field_idx));
-  if (TYPE_CODE (type) == TYPE_CODE_UNION)
+  struct type *ftype = check_typedef (type->field (field_idx).type ());
+  if (type->code () == TYPE_CODE_UNION)
     {
       /* Since union fields don't have the concept of offsets, we just
 	 print their sizes.  */
@@ -368,15 +368,6 @@ typedef_print (struct type *type, struct
   LA_PRINT_TYPEDEF (type, newobj, stream);
 }
 
-/* The default way to print a typedef.  */
-
-void
-default_print_typedef (struct type *type, struct symbol *new_symbol,
-		       struct ui_file *stream)
-{
-  error (_("Language not supported."));
-}
-
 /* Print a description of a type TYPE in the form of a declaration of a
    variable named VARSTRING.  (VARSTRING is demangled if necessary.)
    Output goes to STREAM (via stdio).
@@ -515,7 +506,7 @@ whatis_exp (const char *exp, int show)
 	     Use check_typedef to resolve stubs, but ignore its result
 	     because we do not want to dig past all typedefs.  */
 	  check_typedef (type);
-	  if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+	  if (type->code () == TYPE_CODE_TYPEDEF)
 	    type = TYPE_TARGET_TYPE (type);
 
 	  /* If the expression is actually a type, then there's no
@@ -540,16 +531,16 @@ whatis_exp (const char *exp, int show)
   get_user_print_options (&opts);
   if (val != NULL && opts.objectprint)
     {
-      if (((TYPE_CODE (type) == TYPE_CODE_PTR) || TYPE_IS_REFERENCE (type))
-	  && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_STRUCT))
+      if (((type->code () == TYPE_CODE_PTR) || TYPE_IS_REFERENCE (type))
+	  && (TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_STRUCT))
         real_type = value_rtti_indirect_type (val, &full, &top, &using_enc);
-      else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
+      else if (type->code () == TYPE_CODE_STRUCT)
 	real_type = value_rtti_type (val, &full, &top, &using_enc);
     }
 
   if (flags.print_offsets
-      && (TYPE_CODE (type) == TYPE_CODE_STRUCT
-	  || TYPE_CODE (type) == TYPE_CODE_UNION))
+      && (type->code () == TYPE_CODE_STRUCT
+	  || type->code () == TYPE_CODE_UNION))
     fprintf_filtered (gdb_stdout, "/* offset    |  size */  ");
 
   printf_filtered ("type = ");
@@ -615,11 +606,11 @@ print_type_scalar (struct type *type, LO
 
   type = check_typedef (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
 
     case TYPE_CODE_ENUM:
-      len = TYPE_NFIELDS (type);
+      len = type->num_fields ();
       for (i = 0; i < len; i++)
 	{
 	  if (TYPE_FIELD_ENUMVAL (type, i) == val)
@@ -715,20 +706,6 @@ struct cmd_list_element *setprinttypelis
 
 struct cmd_list_element *showprinttypelist;
 
-static void
-set_print_type (const char *arg, int from_tty)
-{
-  printf_unfiltered (
-     "\"set print type\" must be followed by the name of a subcommand.\n");
-  help_list (setprintlist, "set print type ", all_commands, gdb_stdout);
-}
-
-static void
-show_print_type (const char *args, int from_tty)
-{
-  cmd_show_list (showprinttypelist, from_tty, "");
-}
-
 static bool print_methods = true;
 
 static void
@@ -798,8 +775,9 @@ show_print_type_nested_types  (struct ui
     }
 }
 
+void _initialize_typeprint ();
 void
-_initialize_typeprint (void)
+_initialize_typeprint ()
 {
   struct cmd_list_element *c;
 
@@ -826,12 +804,14 @@ Available FLAGS are:\n\
 Only one level of typedefs is unrolled.  See also \"ptype\"."));
   set_cmd_completer (c, expression_completer);
 
-  add_prefix_cmd ("type", no_class, show_print_type,
-		  _("Generic command for showing type-printing settings."),
-		  &showprinttypelist, "show print type ", 0, &showprintlist);
-  add_prefix_cmd ("type", no_class, set_print_type,
-		  _("Generic command for setting how types print."),
-		  &setprinttypelist, "set print type ", 0, &setprintlist);
+  add_show_prefix_cmd ("type", no_class,
+		       _("Generic command for showing type-printing settings."),
+		       &showprinttypelist, "show print type ", 0,
+		       &showprintlist);
+  add_basic_prefix_cmd ("type", no_class,
+			_("Generic command for setting how types print."),
+			&setprinttypelist, "set print type ", 0,
+			&setprintlist);
 
   add_setshow_boolean_cmd ("methods", no_class, &print_methods,
 			   _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/typeprint.h ./gdb/typeprint.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/typeprint.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/typeprint.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Language independent support for printing types for GDB, the GNU debugger.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/type-stack.c ./gdb/type-stack.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/type-stack.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/type-stack.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Type stack for GDB parser.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -33,12 +33,14 @@ type_stack::insert (enum type_pieces tp)
 
   gdb_assert (tp == tp_pointer || tp == tp_reference
 	      || tp == tp_rvalue_reference || tp == tp_const
-	      || tp == tp_volatile);
+	      || tp == tp_volatile || tp == tp_restrict
+	      || tp == tp_atomic);
 
   /* If there is anything on the stack (we know it will be a
      tp_pointer), insert the qualifier above it.  Otherwise, simply
      push this on the top of the stack.  */
-  if (!m_elements.empty () && (tp == tp_const || tp == tp_volatile))
+  if (!m_elements.empty () && (tp == tp_const || tp == tp_volatile
+			       || tp == tp_restrict))
     slot = 1;
   else
     slot = 0;
@@ -88,6 +90,12 @@ type_stack::follow_type_instance_flags (
       case tp_volatile:
 	flags |= TYPE_INSTANCE_FLAG_VOLATILE;
 	break;
+      case tp_atomic:
+	flags |= TYPE_INSTANCE_FLAG_ATOMIC;
+	break;
+      case tp_restrict:
+	flags |= TYPE_INSTANCE_FLAG_RESTRICT;
+	break;
       default:
 	gdb_assert_not_reached ("unrecognized tp_ value in follow_types");
       }
@@ -102,6 +110,8 @@ type_stack::follow_types (struct type *f
   int make_const = 0;
   int make_volatile = 0;
   int make_addr_space = 0;
+  bool make_restrict = false;
+  bool make_atomic = false;
   int array_size;
 
   while (!done)
@@ -109,19 +119,7 @@ type_stack::follow_types (struct type *f
       {
       case tp_end:
 	done = 1;
-	if (make_const)
-	  follow_type = make_cv_type (make_const, 
-				      TYPE_VOLATILE (follow_type), 
-				      follow_type, 0);
-	if (make_volatile)
-	  follow_type = make_cv_type (TYPE_CONST (follow_type), 
-				      make_volatile, 
-				      follow_type, 0);
-	if (make_addr_space)
-	  follow_type = make_type_with_address_space (follow_type, 
-						      make_addr_space);
-	make_const = make_volatile = 0;
-	make_addr_space = 0;
+	goto process_qualifiers;
 	break;
       case tp_const:
 	make_const = 1;
@@ -132,41 +130,39 @@ type_stack::follow_types (struct type *f
       case tp_space_identifier:
 	make_addr_space = pop_int ();
 	break;
+      case tp_atomic:
+	make_atomic = true;
+	break;
+      case tp_restrict:
+	make_restrict = true;
+	break;
       case tp_pointer:
 	follow_type = lookup_pointer_type (follow_type);
+	goto process_qualifiers;
+      case tp_reference:
+	follow_type = lookup_lvalue_reference_type (follow_type);
+	goto process_qualifiers;
+      case tp_rvalue_reference:
+	follow_type = lookup_rvalue_reference_type (follow_type);
+      process_qualifiers:
 	if (make_const)
-	  follow_type = make_cv_type (make_const, 
-				      TYPE_VOLATILE (follow_type), 
+	  follow_type = make_cv_type (make_const,
+				      TYPE_VOLATILE (follow_type),
 				      follow_type, 0);
 	if (make_volatile)
-	  follow_type = make_cv_type (TYPE_CONST (follow_type), 
-				      make_volatile, 
+	  follow_type = make_cv_type (TYPE_CONST (follow_type),
+				      make_volatile,
 				      follow_type, 0);
 	if (make_addr_space)
-	  follow_type = make_type_with_address_space (follow_type, 
+	  follow_type = make_type_with_address_space (follow_type,
 						      make_addr_space);
+	if (make_restrict)
+	  follow_type = make_restrict_type (follow_type);
+	if (make_atomic)
+	  follow_type = make_atomic_type (follow_type);
 	make_const = make_volatile = 0;
 	make_addr_space = 0;
-	break;
-      case tp_reference:
-	 follow_type = lookup_lvalue_reference_type (follow_type);
-	 goto process_reference;
-	case tp_rvalue_reference:
-	 follow_type = lookup_rvalue_reference_type (follow_type);
-	process_reference:
-	 if (make_const)
-	   follow_type = make_cv_type (make_const,
-				       TYPE_VOLATILE (follow_type),
-				       follow_type, 0);
-	 if (make_volatile)
-	   follow_type = make_cv_type (TYPE_CONST (follow_type),
-				       make_volatile,
-				       follow_type, 0);
-	 if (make_addr_space)
-	   follow_type = make_type_with_address_space (follow_type,
-						       make_addr_space);
-	make_const = make_volatile = 0;
-	make_addr_space = 0;
+	make_restrict = make_atomic = false;
 	break;
       case tp_array:
 	array_size = pop_int ();
@@ -176,8 +172,7 @@ type_stack::follow_types (struct type *f
 	  lookup_array_range_type (follow_type,
 				   0, array_size >= 0 ? array_size - 1 : 0);
 	if (array_size < 0)
-	  TYPE_HIGH_BOUND_KIND (TYPE_INDEX_TYPE (follow_type))
-	    = PROP_UNDEFINED;
+	  follow_type->bounds ()->high.set_undefined ();
 	break;
       case tp_function:
 	/* FIXME-type-allocation: need a way to free this type when we are
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/type-stack.h ./gdb/type-stack.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/type-stack.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/type-stack.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Type stack for GDB parser.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -40,6 +40,8 @@ enum type_pieces
     tp_const, 
     tp_volatile, 
     tp_space_identifier,
+    tp_atomic,
+    tp_restrict,
     tp_type_stack,
     tp_kind
   };
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-file.c ./gdb/ui-file.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-file.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/ui-file.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* UI_FILE - a generic STDIO like output stream.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,7 +22,7 @@
 #include "defs.h"
 #include "ui-file.h"
 #include "gdb_obstack.h"
-#include "gdb_select.h"
+#include "gdbsupport/gdb_select.h"
 #include "gdbsupport/filestuff.h"
 #include "cli/cli-style.h"
 
@@ -90,18 +90,6 @@ null_file::write_async_safe (const char
 
 
 
-void
-ui_file_flush (struct ui_file *file)
-{
-  file->flush ();
-}
-
-int
-ui_file_isatty (struct ui_file *file)
-{
-  return file->isatty ();
-}
-
 /* true if the gdb terminal supports styling, and styling is enabled.  */
 
 static bool
@@ -126,35 +114,6 @@ term_cli_styling ()
   return true;
 }
 
-
-void
-ui_file_write (struct ui_file *file,
-		const char *buf,
-		long length_buf)
-{
-  file->write (buf, length_buf);
-}
-
-void
-ui_file_write_async_safe (struct ui_file *file,
-			  const char *buf,
-			  long length_buf)
-{
-  file->write_async_safe (buf, length_buf);
-}
-
-long
-ui_file_read (struct ui_file *file, char *buf, long length_buf)
-{
-  return file->read (buf, length_buf);
-}
-
-void
-ui_file_puts (struct ui_file *file, const char *buf)
-{
-  file->puts (buf);
-}
-
 
 
 string_file::~string_file ()
@@ -302,7 +261,7 @@ stdio_file::isatty ()
 bool
 stdio_file::can_emit_style_escape ()
 {
-  return (this == gdb_stdout
+  return ((this == gdb_stdout || this == gdb_stderr)
 	  && this->isatty ()
 	  && term_cli_styling ());
 }
@@ -315,7 +274,7 @@ stdio_file::can_emit_style_escape ()
 void
 stderr_file::write (const char *buf, long length_buf)
 {
-  ui_file_flush (gdb_stdout);
+  gdb_stdout->flush ();
   stdio_file::write (buf, length_buf);
 }
 
@@ -325,7 +284,7 @@ stderr_file::write (const char *buf, lon
 void
 stderr_file::puts (const char *linebuffer)
 {
-  ui_file_flush (gdb_stdout);
+  gdb_stdout->flush ();
   stdio_file::puts (linebuffer);
 }
 
@@ -391,7 +350,7 @@ tee_file::term_out ()
 bool
 tee_file::can_emit_style_escape ()
 {
-  return (this == gdb_stdout
+  return ((this == gdb_stdout || this == gdb_stderr)
 	  && m_one->term_out ()
 	  && term_cli_styling ());
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-file.h ./gdb/ui-file.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-file.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/ui-file.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* UI_FILE - a generic STDIO like output stream.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -100,20 +100,6 @@ public:
 /* A preallocated null_file stream.  */
 extern null_file null_stream;
 
-extern void ui_file_flush (ui_file *);
-
-extern int ui_file_isatty (struct ui_file *);
-
-extern void ui_file_write (struct ui_file *file, const char *buf,
-			   long length_buf);
-
-extern void ui_file_write_async_safe (struct ui_file *file, const char *buf,
-				      long length_buf);
-
-extern long ui_file_read (struct ui_file *file, char *buf, long length_buf);
-
-extern void ui_file_puts (struct ui_file *file, const char *buf);
-
 extern int gdb_console_fputs (const char *, FILE *);
 
 /* A std::string-based ui_file.  Can be used as a scratch buffer for
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-out.c ./gdb/ui-out.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-out.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/ui-out.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Output generating routines for GDB.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions.
    Written by Fernando Nasser for Cygnus.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-out.h ./gdb/ui-out.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-out.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/ui-out.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Output generating routines for GDB.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions.
    Written by Fernando Nasser for Cygnus.
@@ -77,9 +77,9 @@ enum ui_out_type
 /* The possible kinds of fields.  */
 enum class field_kind
   {
-    /* "FIELD_STRING" needs has a funny name to avoid clashes with
-       tokens named "STRING".  See PR build/25250.  FIELD_SIGNED is
-       given a similar name for consistency.  */
+    /* "FIELD_STRING" needs a funny name to avoid clashes with tokens
+       named "STRING".  See PR build/25250.  FIELD_SIGNED is given a
+       similar name for consistency.  */
     FIELD_SIGNED,
     FIELD_STRING,
   };
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-style.c ./gdb/ui-style.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-style.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/ui-style.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Styling for ui_file
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -404,6 +404,7 @@ skip_ansi_escape (const char *buf, int *
   return true;
 }
 
+void _initialize_ui_style ();
 void
 _initialize_ui_style ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-style.h ./gdb/ui-style.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/ui-style.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/ui-style.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Styling for ui_file
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -126,8 +126,14 @@ struct ui_file_style
   private:
 
     bool m_simple;
-    int m_value;
-    uint8_t m_red, m_green, m_blue;
+    union
+    {
+      int m_value;
+      struct
+      {
+	uint8_t m_red, m_green, m_blue;
+      };
+    };
   };
 
   /* Intensity settings that are available.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/array-view-selftests.c ./gdb/unittests/array-view-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/array-view-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/array-view-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for array_view for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -523,6 +523,7 @@ run_tests ()
 } /* namespace array_view_tests */
 } /* namespace selftests */
 
+void _initialize_array_view_selftests ();
 void
 _initialize_array_view_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/capacity/1.cc ./gdb/unittests/basic_string_view/capacity/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/capacity/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/capacity/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/capacity/empty_neg.cc ./gdb/unittests/basic_string_view/capacity/empty_neg.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/capacity/empty_neg.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/capacity/empty_neg.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/char/1.cc ./gdb/unittests/basic_string_view/cons/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/cons/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/char/2.cc ./gdb/unittests/basic_string_view/cons/char/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/char/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/cons/char/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/char/3.cc ./gdb/unittests/basic_string_view/cons/char/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/char/3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/cons/char/3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/wchar_t/1.cc ./gdb/unittests/basic_string_view/cons/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/cons/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/wchar_t/2.cc ./gdb/unittests/basic_string_view/cons/wchar_t/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/wchar_t/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/cons/wchar_t/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/wchar_t/3.cc ./gdb/unittests/basic_string_view/cons/wchar_t/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/cons/wchar_t/3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/cons/wchar_t/3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/char/2.cc ./gdb/unittests/basic_string_view/element_access/char/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/char/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/char/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -2,7 +2,7 @@
 // { dg-options "-std=gnu++17 -O0" }
 // { dg-require-debug-mode "" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/char/empty.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/char/empty.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/char/front_back.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/char/front_back.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 // { dg-options "-std=gnu++17" }
 // { dg-require-string-conversions "" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/wchar_t/1.cc ./gdb/unittests/basic_string_view/element_access/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/wchar_t/2.cc ./gdb/unittests/basic_string_view/element_access/wchar_t/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/wchar_t/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/wchar_t/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -2,7 +2,7 @@
 // { dg-options "-std=gnu++17 -O0" }
 // { dg-require-debug-mode "" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/wchar_t/empty.cc ./gdb/unittests/basic_string_view/element_access/wchar_t/empty.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/wchar_t/empty.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/wchar_t/empty.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/wchar_t/front_back.cc ./gdb/unittests/basic_string_view/element_access/wchar_t/front_back.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/element_access/wchar_t/front_back.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/element_access/wchar_t/front_back.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 // { dg-options "-std=gnu++17" }
 // { dg-require-string-conversions "" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/include.cc ./gdb/unittests/basic_string_view/include.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/include.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/include.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/char/1.cc ./gdb/unittests/basic_string_view/inserters/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/inserters/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/char/2.cc ./gdb/unittests/basic_string_view/inserters/char/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/char/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/inserters/char/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/char/3.cc ./gdb/unittests/basic_string_view/inserters/char/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/char/3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/inserters/char/3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/pod/10081-out.cc ./gdb/unittests/basic_string_view/inserters/pod/10081-out.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/pod/10081-out.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/inserters/pod/10081-out.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/wchar_t/1.cc ./gdb/unittests/basic_string_view/inserters/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/inserters/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/wchar_t/2.cc ./gdb/unittests/basic_string_view/inserters/wchar_t/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/wchar_t/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/inserters/wchar_t/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/wchar_t/3.cc ./gdb/unittests/basic_string_view/inserters/wchar_t/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/inserters/wchar_t/3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/inserters/wchar_t/3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/literals/types.cc ./gdb/unittests/basic_string_view/literals/types.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/literals/types.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/literals/types.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 // { dg-options "-std=gnu++17" }
 // { dg-do compile }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/literals/values.cc ./gdb/unittests/basic_string_view/literals/values.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/literals/values.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/literals/values.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/modifiers/remove_prefix/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc ./gdb/unittests/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/modifiers/remove_suffix/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc ./gdb/unittests/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/modifiers/swap/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/modifiers/swap/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/modifiers/swap/wchar_t/1.cc ./gdb/unittests/basic_string_view/modifiers/swap/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/modifiers/swap/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/modifiers/swap/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/char/13650.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/compare/char/13650.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/compare/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/char/2.cc ./gdb/unittests/basic_string_view/operations/compare/char/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/char/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/compare/char/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/char/70483.cc ./gdb/unittests/basic_string_view/operations/compare/char/70483.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/char/70483.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/compare/char/70483.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/wchar_t/13650.cc ./gdb/unittests/basic_string_view/operations/compare/wchar_t/13650.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/wchar_t/13650.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/compare/wchar_t/13650.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/wchar_t/1.cc ./gdb/unittests/basic_string_view/operations/compare/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/compare/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/wchar_t/2.cc ./gdb/unittests/basic_string_view/operations/compare/wchar_t/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/compare/wchar_t/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/compare/wchar_t/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2017-2020 Free Software Foundation, Inc.
+// Copyright (C) 2017-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/copy/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/copy/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/copy/wchar_t/1.cc ./gdb/unittests/basic_string_view/operations/copy/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/copy/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/copy/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/data/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/data/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/data/wchar_t/1.cc ./gdb/unittests/basic_string_view/operations/data/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/data/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/data/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/char/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/char/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/char/3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/char/3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/char/4.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/char/4.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/wchar_t/1.cc ./gdb/unittests/basic_string_view/operations/find/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/wchar_t/2.cc ./gdb/unittests/basic_string_view/operations/find/wchar_t/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/wchar_t/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/wchar_t/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/wchar_t/3.cc ./gdb/unittests/basic_string_view/operations/find/wchar_t/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/wchar_t/3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/wchar_t/3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/wchar_t/4.cc ./gdb/unittests/basic_string_view/operations/find/wchar_t/4.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/find/wchar_t/4.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/find/wchar_t/4.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/rfind/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/rfind/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/rfind/char/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/rfind/char/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/rfind/char/3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/rfind/char/3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/rfind/wchar_t/1.cc ./gdb/unittests/basic_string_view/operations/rfind/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/rfind/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/rfind/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/rfind/wchar_t/2.cc ./gdb/unittests/basic_string_view/operations/rfind/wchar_t/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/rfind/wchar_t/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/rfind/wchar_t/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/rfind/wchar_t/3.cc ./gdb/unittests/basic_string_view/operations/rfind/wchar_t/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/rfind/wchar_t/3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/rfind/wchar_t/3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/string_conversion/1.cc ./gdb/unittests/basic_string_view/operations/string_conversion/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/string_conversion/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/string_conversion/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2014-2020 Free Software Foundation, Inc.
+// Copyright (C) 2014-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/substr/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/substr/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/substr/wchar_t/1.cc ./gdb/unittests/basic_string_view/operations/substr/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operations/substr/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operations/substr/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operators/char/2.cc ./gdb/unittests/basic_string_view/operators/char/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operators/char/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operators/char/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operators/wchar_t/2.cc ./gdb/unittests/basic_string_view/operators/wchar_t/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/operators/wchar_t/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/operators/wchar_t/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/range_access/char/1.cc ./gdb/unittests/basic_string_view/range_access/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/range_access/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/range_access/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 // { dg-do compile }
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/range_access/wchar_t/1.cc ./gdb/unittests/basic_string_view/range_access/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/range_access/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/range_access/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 // { dg-do compile }
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/explicit_instantiation/1.cc ./gdb/unittests/basic_string_view/requirements/explicit_instantiation/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/explicit_instantiation/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/requirements/explicit_instantiation/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char/1.cc ./gdb/unittests/basic_string_view/requirements/explicit_instantiation/char/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/requirements/explicit_instantiation/char/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 // { dg-do compile }
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc ./gdb/unittests/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -2,7 +2,7 @@
 // { dg-options "-std=gnu++17" }
 // { dg-require-cstdint "" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc ./gdb/unittests/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -2,7 +2,7 @@
 // { dg-options "-std=gnu++17" }
 // { dg-require-cstdint "" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc ./gdb/unittests/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 // { dg-do compile }
 // { dg-options "-std=gnu++17" }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/typedefs.cc ./gdb/unittests/basic_string_view/requirements/typedefs.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/requirements/typedefs.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/requirements/typedefs.cc	2021-05-21 01:57:25.000000000 +0000
@@ -2,7 +2,7 @@
 // { dg-options "-std=gnu++17" }
 // { dg-do compile }
 
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/typedefs.cc ./gdb/unittests/basic_string_view/typedefs.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/typedefs.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/typedefs.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 // { dg-options "-std=gnu++17" }
 // { dg-do compile }
 
-// Copyright (C) 2014-2020 Free Software Foundation, Inc.
+// Copyright (C) 2014-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/types/1.cc ./gdb/unittests/basic_string_view/types/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/basic_string_view/types/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/basic_string_view/types/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/child-path-selftests.c ./gdb/unittests/child-path-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/child-path-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/child-path-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for child_path for GDB, the GNU debugger.
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -59,6 +59,7 @@ test ()
 }
 }
 
+void _initialize_child_path_selftests ();
 void
 _initialize_child_path_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/cli-utils-selftests.c ./gdb/unittests/cli-utils-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/cli-utils-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/cli-utils-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Unit tests for the cli-utils.c file.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -110,6 +110,7 @@ test_cli_utils ()
 }
 }
 
+void _initialize_cli_utils_selftests ();
 void
 _initialize_cli_utils_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/command-def-selftests.c ./gdb/unittests/command-def-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/command-def-selftests.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/unittests/command-def-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,216 @@
+/* Self tests for GDB command definitions for GDB, the GNU debugger.
+
+   Copyright (C) 2019-2021 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 "cli/cli-cmds.h"
+#include "cli/cli-decode.h"
+#include "gdbsupport/selftest.h"
+
+#include <map>
+
+namespace selftests {
+
+/* Verify some invariants of GDB commands documentation.  */
+
+namespace help_doc_tests {
+
+static unsigned int nr_failed_invariants;
+
+/* Report a broken invariant and increments nr_failed_invariants.  */
+
+static void
+broken_doc_invariant (const char *prefix, const char *name, const char *msg)
+{
+  fprintf_filtered (gdb_stdout,
+		    "help doc broken invariant: command '%s%s' help doc %s\n",
+		    prefix, name, msg);
+  nr_failed_invariants++;
+}
+
+/* Recursively walk the commandlist structures, and check doc invariants:
+   - The first line of the doc must end with a '.'.
+   - the doc must not end with a new line.
+  If an invariant is not respected, produce a message and increment
+  nr_failed_invariants.
+  Note that we do not call SELF_CHECK in this function, as we want
+  all commands to be checked before making the test fail.  */
+
+static void
+check_doc (struct cmd_list_element *commandlist, const char *prefix)
+{
+  struct cmd_list_element *c;
+
+  /* Walk through the commands.  */
+  for (c = commandlist; c; c = c->next)
+    {
+      /* Checks the doc has a first line terminated with a '.'.  */
+      const char *p = c->doc;
+
+      /* Position p on the first LF, or on terminating null byte.  */
+      while (*p && *p != '\n')
+	p++;
+      if (p == c->doc)
+	broken_doc_invariant
+	  (prefix, c->name,
+	   "is missing the first line terminated with a '.' character");
+      else if (*(p-1) != '.')
+	broken_doc_invariant
+	  (prefix, c->name,
+	   "first line is not terminated with a '.' character");
+
+      /* Checks the doc is not terminated with a new line.  */
+      if (c->doc[strlen (c->doc) - 1] == '\n')
+	broken_doc_invariant
+	  (prefix, c->name,
+	   "has a superfluous trailing end of line");
+
+      /* Check if this command has subcommands and is not an
+	 abbreviation.  We skip checking subcommands of abbreviations
+	 in order to avoid duplicates in the output.  */
+      if (c->prefixlist != NULL && !c->abbrev_flag)
+	{
+	  /* Recursively call ourselves on the subcommand list,
+	     passing the right prefix in.  */
+	  check_doc (*c->prefixlist, c->prefixname);
+	}
+    }
+}
+
+static void
+help_doc_invariants_tests ()
+{
+  nr_failed_invariants = 0;
+  check_doc (cmdlist, "");
+  SELF_CHECK (nr_failed_invariants == 0);
+}
+
+} /* namespace help_doc_tests */
+
+/* Verify some invariants of GDB command structure.  */
+
+namespace command_structure_tests {
+
+/* Nr of commands in which a duplicated list is found.  */
+unsigned int nr_duplicates = 0;
+/* Nr of commands in a list having no valid prefix cmd.  */
+unsigned int nr_invalid_prefixcmd = 0;
+
+/* A map associating a list with the prefix leading to it.  */
+
+std::map<cmd_list_element **, const char *> lists;
+
+/* Store each command list in lists, associated with the prefix to reach it.  A
+   list must only be found once.
+
+   Verifies that all elements of the list have the same non-null prefix
+   command.  */
+
+static void
+traverse_command_structure (struct cmd_list_element **list,
+			    const char *prefix)
+{
+  struct cmd_list_element *c, *prefixcmd;
+
+  auto dupl = lists.find (list);
+  if (dupl != lists.end ())
+    {
+      fprintf_filtered (gdb_stdout,
+			"list %p duplicated,"
+			" reachable via prefix '%s' and '%s'."
+			"  Duplicated list first command is '%s'\n",
+			list,
+			prefix, dupl->second,
+			(*list)->name);
+      nr_duplicates++;
+      return;
+    }
+
+  lists.insert ({list, prefix});
+
+  /* All commands of *list must have a prefix command equal to PREFIXCMD,
+     the prefix command of the first command.  */
+  if (*list == nullptr)
+    prefixcmd = nullptr; /* A prefix command with an empty subcommand list.  */
+  else
+    prefixcmd = (*list)->prefix;
+
+  /* Walk through the commands.  */
+  for (c = *list; c; c = c->next)
+    {
+      /* If this command has subcommands and is not an alias,
+	 traverse the subcommands.  */
+      if (c->prefixlist != NULL && c->cmd_pointer == nullptr)
+	{
+	  /* Recursively call ourselves on the subcommand list,
+	     passing the right prefix in.  */
+	  traverse_command_structure (c->prefixlist, c->prefixname);
+	}
+      if (prefixcmd != c->prefix
+	  || (prefixcmd == nullptr && *list != cmdlist))
+	{
+	  if (c->prefix == nullptr)
+	    fprintf_filtered (gdb_stdout,
+			      "list %p reachable via prefix '%s'."
+			      "  command '%s' has null prefixcmd\n",
+			      list,
+			      prefix, c->name);
+	  else
+	    fprintf_filtered (gdb_stdout,
+			      "list %p reachable via prefix '%s'."
+			      "  command '%s' has a different prefixcmd\n",
+			      list,
+			      prefix, c->name);
+	  nr_invalid_prefixcmd++;
+	}
+    }
+}
+
+/* Verify that a list of commands is present in the tree only once.  */
+
+static void
+command_structure_invariants_tests ()
+{
+  nr_duplicates = 0;
+  nr_invalid_prefixcmd = 0;
+
+  traverse_command_structure (&cmdlist, "");
+
+  /* Release memory, be ready to be re-run.  */
+  lists.clear ();
+
+  SELF_CHECK (nr_duplicates == 0);
+  SELF_CHECK (nr_invalid_prefixcmd == 0);
+}
+
+}
+
+} /* namespace selftests */
+
+void _initialize_command_def_selftests ();
+void
+_initialize_command_def_selftests ()
+{
+  selftests::register_test
+    ("help_doc_invariants",
+     selftests::help_doc_tests::help_doc_invariants_tests);
+
+  selftests::register_test
+    ("command_structure_invariants",
+     selftests::command_structure_tests::command_structure_invariants_tests);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/common-utils-selftests.c ./gdb/unittests/common-utils-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/common-utils-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/common-utils-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for general utility routines for GDB, the GNU debugger.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -125,6 +125,7 @@ string_vappendf_tests ()
 
 } /* namespace selftests */
 
+void _initialize_common_utils_selftests ();
 void
 _initialize_common_utils_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/copy_bitwise-selftests.c ./gdb/unittests/copy_bitwise-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/copy_bitwise-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/copy_bitwise-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests of the copy_bitwise routine for GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -152,6 +152,7 @@ copy_bitwise_tests (void)
 
 } /* namespace selftests */
 
+void _initialize_copy_bitwise_utils_selftests ();
 void
 _initialize_copy_bitwise_utils_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/environ-selftests.c ./gdb/unittests/environ-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/environ-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/environ-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for gdb_environ for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -298,6 +298,7 @@ run_tests ()
 } /* namespace gdb_environ */
 } /* namespace selftests */
 
+void _initialize_environ_selftests ();
 void
 _initialize_environ_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/filtered_iterator-selftests.c ./gdb/unittests/filtered_iterator-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/filtered_iterator-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/filtered_iterator-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for the filtered_iterator class.
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -155,6 +155,7 @@ test_filtered_iterator_eq ()
 
 } /* namespace selftests */
 
+void _initialize_filtered_iterator_selftests ();
 void
 _initialize_filtered_iterator_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/format_pieces-selftests.c ./gdb/unittests/format_pieces-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/format_pieces-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/format_pieces-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for format_pieces for GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -142,6 +142,7 @@ run_tests ()
 } /* namespace format_pieces */
 } /* namespace selftests */
 
+void _initialize_format_pieces_selftests ();
 void
 _initialize_format_pieces_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/function-view-selftests.c ./gdb/unittests/function-view-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/function-view-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/function-view-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for function_view for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -171,6 +171,7 @@ run_tests ()
 } /* namespace function_view */
 } /* namespace selftests */
 
+void _initialize_function_view_selftests ();
 void
 _initialize_function_view_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/help-doc-selftests.c ./gdb/unittests/help-doc-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/help-doc-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/help-doc-selftests.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,107 +0,0 @@
-/* Self tests for help doc for GDB, the GNU debugger.
-
-   Copyright (C) 2019-2020 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 "cli/cli-cmds.h"
-#include "cli/cli-decode.h"
-#include "gdbsupport/selftest.h"
-
-namespace selftests {
-namespace help_doc_tests {
-
-static unsigned int nr_failed_invariants;
-
-/* Report a broken invariant and increments nr_failed_invariants.  */
-
-static void
-broken_doc_invariant (const char *prefix, const char *name, const char *msg)
-{
-  fprintf_filtered (gdb_stdout,
-		    "help doc broken invariant: command '%s%s' help doc %s\n",
-		    prefix, name, msg);
-  nr_failed_invariants++;
-}
-
-/* Recursively walk the commandlist structures, and check doc invariants:
-   - The first line of the doc must end with a '.'.
-   - the doc must not end with a new line.
-  If an invariant is not respected, produce a message and increment
-  nr_failed_invariants.
-  Note that we do not call SELF_CHECK in this function, as we want
-  all commands to be checked before making the test fail.  */
-
-static void
-check_doc (struct cmd_list_element *commandlist, const char *prefix)
-{
-  struct cmd_list_element *c;
-
-  /* Walk through the commands.  */
-  for (c = commandlist; c; c = c->next)
-    {
-      /* Checks the doc has a first line terminated with a '.'.  */
-      const char *p = c->doc;
-
-      /* Position p on the first LF, or on terminating null byte.  */
-      while (*p && *p != '\n')
-	p++;
-      if (p == c->doc)
-	broken_doc_invariant
-	  (prefix, c->name,
-	   "is missing the first line terminated with a '.' character");
-      else if (*(p-1) != '.')
-	broken_doc_invariant
-	  (prefix, c->name,
-	   "first line is not terminated with a '.' character");
-
-      /* Checks the doc is not terminated with a new line.  */
-      if (c->doc[strlen (c->doc) - 1] == '\n')
-	broken_doc_invariant
-	  (prefix, c->name,
-	   "has a superfluous trailing end of line");
-
-      /* Check if this command has subcommands and is not an
-	 abbreviation.  We skip checking subcommands of abbreviations
-	 in order to avoid duplicates in the output.  */
-      if (c->prefixlist != NULL && !c->abbrev_flag)
-	{
-	  /* Recursively call ourselves on the subcommand list,
-	     passing the right prefix in.  */
-	  check_doc (*c->prefixlist, c->prefixname);
-	}
-    }
-}
-
-static void
-help_doc_invariants_tests ()
-{
-  nr_failed_invariants = 0;
-  check_doc (cmdlist, "");
-  SELF_CHECK (nr_failed_invariants == 0);
-}
-
-} /* namespace help_doc_tests */
-} /* namespace selftests */
-
-void
-_initialize_help_doc_selftests ()
-{
-  selftests::register_test
-    ("help_doc_invariants",
-     selftests::help_doc_tests::help_doc_invariants_tests);
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/lookup_name_info-selftests.c ./gdb/unittests/lookup_name_info-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/lookup_name_info-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/lookup_name_info-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for lookup_name_info for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -37,14 +37,14 @@ check_make_paramless (const char *file,
 {
   lookup_name_info lookup_name (name, symbol_name_match_type::FULL,
 				completion_mode, true /* ignore_parameters */);
-  const std::string &result = lookup_name.language_lookup_name (lang);
+  const char *result = lookup_name.language_lookup_name (lang);
 
-  if (result != expected)
+  if (strcmp (result, expected) != 0)
     {
       error (_("%s:%d: make-paramless self-test failed: (completion=%d, lang=%d) "
 	       "\"%s\" -> \"%s\", expected \"%s\""),
 	     file, line, completion_mode, lang, name,
-	     result.c_str (), expected);
+	     result, expected);
     }
 }
 
@@ -103,6 +103,7 @@ run_tests ()
 
 }} // namespace selftests::lookup_name
 
+void _initialize_lookup_name_info_selftests ();
 void
 _initialize_lookup_name_info_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/main-thread-selftests.c ./gdb/unittests/main-thread-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/main-thread-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/main-thread-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for run_on_main_thread
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,7 @@
 #include "gdbsupport/selftest.h"
 #include "gdbsupport/block-signals.h"
 #include "run-on-main-thread.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
 #if CXX_STD_THREAD
 #include <thread>
 #endif
@@ -70,6 +70,7 @@ run_tests ()
 }
 }
 
+void _initialize_main_thread_selftests ();
 void
 _initialize_main_thread_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/memory-map-selftests.c ./gdb/unittests/memory-map-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/memory-map-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/memory-map-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for memory-map for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -76,6 +76,7 @@ parse_memory_map_tests ()
 
 #endif /* HAVE_LIBEXPAT */
 
+void _initialize_memory_map_selftests ();
 void
 _initialize_memory_map_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/memrange-selftests.c ./gdb/unittests/memrange-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/memrange-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/memrange-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for mem ranges for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -106,6 +106,7 @@ normalize_mem_ranges_tests ()
 } /* namespace memrange_tests */
 } /* namespace selftests */
 
+void _initialize_memrange_selftests ();
 void
 _initialize_memrange_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/mkdir-recursive-selftests.c ./gdb/unittests/mkdir-recursive-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/mkdir-recursive-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/mkdir-recursive-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for scoped_fd for GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -81,6 +81,7 @@ test ()
 }
 }
 
+void _initialize_mkdir_recursive_selftests ();
 void
 _initialize_mkdir_recursive_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/observable-selftests.c ./gdb/unittests/observable-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/observable-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/observable-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for gdb::observers, GDB notifications to observers.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -127,6 +127,7 @@ run_tests ()
 } /* namespace observers */
 } /* namespace selftests */
 
+void _initialize_observer_selftest ();
 void
 _initialize_observer_selftest ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/offset-type-selftests.c ./gdb/unittests/offset-type-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/offset-type-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/offset-type-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for offset types for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -171,6 +171,7 @@ run_tests ()
 } /* namespace offset_type */
 } /* namespace selftests */
 
+void _initialize_offset_type_selftests ();
 void
 _initialize_offset_type_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/1.cc ./gdb/unittests/optional/assignment/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/assignment/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/2.cc ./gdb/unittests/optional/assignment/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/assignment/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/3.cc ./gdb/unittests/optional/assignment/3.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/3.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/assignment/3.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/4.cc ./gdb/unittests/optional/assignment/4.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/4.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/assignment/4.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/5.cc ./gdb/unittests/optional/assignment/5.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/5.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/assignment/5.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/6.cc ./gdb/unittests/optional/assignment/6.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/6.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/assignment/6.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/7.cc ./gdb/unittests/optional/assignment/7.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/assignment/7.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/assignment/7.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2016-2020 Free Software Foundation, Inc.
+// Copyright (C) 2016-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/cons/copy.cc ./gdb/unittests/optional/cons/copy.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/cons/copy.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/cons/copy.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/cons/default.cc ./gdb/unittests/optional/cons/default.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/cons/default.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/cons/default.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/cons/move.cc ./gdb/unittests/optional/cons/move.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/cons/move.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/cons/move.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/cons/value.cc ./gdb/unittests/optional/cons/value.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/cons/value.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/cons/value.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/in_place.cc ./gdb/unittests/optional/in_place.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/in_place.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/in_place.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/observers/1.cc ./gdb/unittests/optional/observers/1.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/observers/1.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/observers/1.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/observers/2.cc ./gdb/unittests/optional/observers/2.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional/observers/2.cc	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional/observers/2.cc	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2020 Free Software Foundation, Inc.
+// Copyright (C) 2013-2021 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional-selftests.c ./gdb/unittests/optional-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/optional-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/optional-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for optional for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -87,6 +87,7 @@ run_tests ()
 } /* namespace optional */
 } /* namespace selftests */
 
+void _initialize_optional_selftests ();
 void
 _initialize_optional_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/parse-connection-spec-selftests.c ./gdb/unittests/parse-connection-spec-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/parse-connection-spec-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/parse-connection-spec-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for parsing connection specs for GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -239,6 +239,7 @@ run_tests ()
 } /* namespace parse_connection_spec_tests */
 } /* namespace selftests */
 
+void _initialize_parse_connection_spec_selftests ();
 void
 _initialize_parse_connection_spec_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/ptid-selftests.c ./gdb/unittests/ptid-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/ptid-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/ptid-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for ptid_t for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/rsp-low-selftests.c ./gdb/unittests/rsp-low-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/rsp-low-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/rsp-low-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Unit tests for the rsp-low.c file.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -61,6 +61,7 @@ static void test_hex2str ()
 } /* namespace rsp_low */
 } /* namespace selftests */
 
+void _initialize_rsp_low_selftests ();
 void
 _initialize_rsp_low_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/scoped_fd-selftests.c ./gdb/unittests/scoped_fd-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/scoped_fd-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/scoped_fd-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for scoped_fd for GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -93,6 +93,7 @@ run_tests ()
 } /* namespace scoped_fd */
 } /* namespace selftests */
 
+void _initialize_scoped_fd_selftests ();
 void
 _initialize_scoped_fd_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/scoped_mmap-selftests.c ./gdb/unittests/scoped_mmap-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/scoped_mmap-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/scoped_mmap-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for scoped_mmap for GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -135,6 +135,7 @@ run_tests ()
 
 #endif /* !defined(HAVE_SYS_MMAN_H) */
 
+void _initialize_scoped_mmap_selftests ();
 void
 _initialize_scoped_mmap_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/scoped_restore-selftests.c ./gdb/unittests/scoped_restore-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/scoped_restore-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/scoped_restore-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for scoped_restore for GDB, the GNU debugger.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -103,6 +103,7 @@ run_tests ()
 } /* namespace scoped_restore_tests */
 } /* namespace selftests */
 
+void _initialize_scoped_restore_selftests ();
 void
 _initialize_scoped_restore_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/string_view-selftests.c ./gdb/unittests/string_view-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/string_view-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/string_view-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for string_view for GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -172,6 +172,7 @@ run_tests ()
 
 #endif /* __cplusplus < 201703L */
 
+void _initialize_string_view_selftests ();
 void
 _initialize_string_view_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/style-selftests.c ./gdb/unittests/style-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/style-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/style-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for ui_file_style
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -101,6 +101,7 @@ run_tests ()
 } /* namespace style */
 } /* namespace selftests */
 
+void _initialize_style_selftest ();
 void
 _initialize_style_selftest ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/tracepoint-selftests.c ./gdb/unittests/tracepoint-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/tracepoint-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/tracepoint-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for tracepoint-related code for GDB, the GNU debugger.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -61,6 +61,7 @@ test_parse_static_tracepoint_marker_defi
 } /* namespace tracepoint_tests */
 } /* namespace selftests */
 
+void _initialize_tracepoint_selftests ();
 void
 _initialize_tracepoint_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/tui-selftests.c ./gdb/unittests/tui-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/tui-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/tui-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for the TUI
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -46,6 +46,7 @@ run_tests ()
 
 #endif /* TUI */
 
+void _initialize_tui_selftest ();
 void
 _initialize_tui_selftest ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/unpack-selftests.c ./gdb/unittests/unpack-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/unpack-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/unpack-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for unpack_field_as_long
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -53,6 +53,7 @@ unpack_field_as_long_tests (struct gdbar
 }
 }
 
+void _initialize_unpack_selftests ();
 void
 _initialize_unpack_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/utils-selftests.c ./gdb/unittests/utils-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/utils-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/utils-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Unit tests for the utils.c file.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -51,6 +51,7 @@ test_substitute_path_component ()
 }
 }
 
+void _initialize_utils_selftests ();
 void
 _initialize_utils_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/vec-utils-selftests.c ./gdb/unittests/vec-utils-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/vec-utils-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/vec-utils-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Self tests for vector utility routines for GDB, the GNU debugger.
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -66,6 +66,7 @@ unordered_remove_tests ()
 } /* namespace vector_utils_tests */
 } /* amespace selftests */
 
+void _initialize_vec_utils_selftests ();
 void
 _initialize_vec_utils_selftests ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/xml-utils-selftests.c ./gdb/unittests/xml-utils-selftests.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unittests/xml-utils-selftests.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unittests/xml-utils-selftests.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Unit tests for the xml-utils.c file.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -48,6 +48,7 @@ static void test_xml_escape_text_append
 }
 }
 
+void _initialize_xml_utils ();
 void
 _initialize_xml_utils ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unwind_stop_reasons.def ./gdb/unwind_stop_reasons.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/unwind_stop_reasons.def	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/unwind_stop_reasons.def	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/user-regs.c ./gdb/user-regs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/user-regs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/user-regs.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* User visible, per-frame registers, for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 
@@ -41,7 +41,10 @@
 struct user_reg
 {
   const char *name;
-  struct value *(*read) (struct frame_info * frame, const void *baton);
+  /* Avoid the "read" symbol name as it conflicts with a preprocessor symbol
+     in the NetBSD header for Stack Smashing Protection, that wraps the read(2)
+     syscall.  */
+  struct value *(*xread) (struct frame_info * frame, const void *baton);
   const void *baton;
   struct user_reg *next;
 };
@@ -60,7 +63,7 @@ struct gdb_user_regs
 
 static void
 append_user_reg (struct gdb_user_regs *regs, const char *name,
-		 user_reg_read_ftype *read, const void *baton,
+		 user_reg_read_ftype *xread, const void *baton,
 		 struct user_reg *reg)
 {
   /* The caller is responsible for allocating memory needed to store
@@ -68,7 +71,7 @@ append_user_reg (struct gdb_user_regs *r
      register list stored in the common heap or a specific obstack.  */
   gdb_assert (reg != NULL);
   reg->name = name;
-  reg->read = read;
+  reg->xread = xread;
   reg->baton = baton;
   reg->next = NULL;
   (*regs->last) = reg;
@@ -82,10 +85,10 @@ static struct gdb_user_regs builtin_user
 };
 
 void
-user_reg_add_builtin (const char *name, user_reg_read_ftype *read,
+user_reg_add_builtin (const char *name, user_reg_read_ftype *xread,
 		      const void *baton)
 {
-  append_user_reg (&builtin_user_regs, name, read, baton,
+  append_user_reg (&builtin_user_regs, name, xread, baton,
 		   XNEW (struct user_reg));
 }
 
@@ -95,34 +98,26 @@ user_reg_add_builtin (const char *name,
 static struct gdbarch_data *user_regs_data;
 
 static void *
-user_regs_init (struct gdbarch *gdbarch)
+user_regs_init (struct obstack *obstack)
 {
   struct user_reg *reg;
-  struct gdb_user_regs *regs 
-    = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct gdb_user_regs);
+  struct gdb_user_regs *regs = OBSTACK_ZALLOC (obstack, struct gdb_user_regs);
 
   regs->last = &regs->first;
   for (reg = builtin_user_regs.first; reg != NULL; reg = reg->next)
-    append_user_reg (regs, reg->name, reg->read, reg->baton,
-		     GDBARCH_OBSTACK_ZALLOC (gdbarch, struct user_reg));
+    append_user_reg (regs, reg->name, reg->xread, reg->baton,
+		     OBSTACK_ZALLOC (obstack, struct user_reg));
   return regs;
 }
 
 void
 user_reg_add (struct gdbarch *gdbarch, const char *name,
-	      user_reg_read_ftype *read, const void *baton)
+	      user_reg_read_ftype *xread, const void *baton)
 {
   struct gdb_user_regs *regs
     = (struct gdb_user_regs *) gdbarch_data (gdbarch, user_regs_data);
-
-  if (regs == NULL)
-    {
-      /* ULGH, called during architecture initialization.  Patch
-         things up.  */
-      regs = (struct gdb_user_regs *) user_regs_init (gdbarch);
-      deprecated_set_gdbarch_data (gdbarch, user_regs_data, regs);
-    }
-  append_user_reg (regs, name, read, baton,
+  gdb_assert (regs != NULL);
+  append_user_reg (regs, name, xread, baton,
 		   GDBARCH_OBSTACK_ZALLOC (gdbarch, struct user_reg));
 }
 
@@ -214,7 +209,7 @@ value_of_user_reg (int regnum, struct fr
   struct user_reg *reg = usernum_to_user_reg (gdbarch, regnum - maxregs);
 
   gdb_assert (reg != NULL);
-  return reg->read (frame, reg->baton);
+  return reg->xread (frame, reg->baton);
 }
 
 static void
@@ -233,10 +228,11 @@ maintenance_print_user_registers (const
     fprintf_unfiltered (gdb_stdout, " %-11s %3d\n", reg->name, regnum);
 }
 
+void _initialize_user_regs ();
 void
-_initialize_user_regs (void)
+_initialize_user_regs ()
 {
-  user_regs_data = gdbarch_data_register_post_init (user_regs_init);
+  user_regs_data = gdbarch_data_register_pre_init (user_regs_init);
 
   add_cmd ("user-registers", class_maintenance,
 	   maintenance_print_user_registers,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/user-regs.h ./gdb/user-regs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/user-regs.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/user-regs.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Per-frame user registers, for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/utils.c ./gdb/utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/utils.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/utils.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* General utility routines for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -74,6 +74,7 @@
 #include "gdbsupport/scope-exit.h"
 #include "gdbarch.h"
 #include "cli-out.h"
+#include "gdbsupport/gdb-safe-ctype.h"
 
 void (*deprecated_error_begin_hook) (void);
 
@@ -186,7 +187,7 @@ abort_with_message (const char *msg)
   else
     fputs_unfiltered (msg, gdb_stderr);
 
-  abort ();		/* NOTE: GDB has only three calls to abort().  */
+  abort ();		/* ARI: abort */
 }
 
 /* Dump core trying to increase the core soft limit to hard limit first.  */
@@ -200,7 +201,7 @@ dump_core (void)
   setrlimit (RLIMIT_CORE, &rlim);
 #endif /* HAVE_SETRLIMIT */
 
-  abort ();		/* NOTE: GDB has only three calls to abort().  */
+  abort ();		/* ARI: abort */
 }
 
 /* Check whether GDB will be able to dump core using the dump_core
@@ -320,7 +321,7 @@ internal_vproblem (struct internal_probl
            does not fix this problem.  This is the solution suggested
            at http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509.  */
 	if (write (STDERR_FILENO, msg, sizeof (msg)) != sizeof (msg))
-          abort (); /* NOTE: GDB has only three calls to abort().  */
+          abort (); /* ARI: abort */
 	exit (1);
       }
   }
@@ -469,18 +470,6 @@ demangler_warning (const char *file, int
   va_end (ap);
 }
 
-/* Dummy functions to keep add_prefix_cmd happy.  */
-
-static void
-set_internal_problem_cmd (const char *args, int from_tty)
-{
-}
-
-static void
-show_internal_problem_cmd (const char *args, int from_tty)
-{
-}
-
 /* When GDB reports an internal problem (error or warning) it gives
    the user the opportunity to quit GDB and/or create a core file of
    the current debug session.  This function registers a few commands
@@ -515,19 +504,17 @@ add_internal_problem_command (struct int
   show_doc = xstrprintf (_("Show what GDB does when %s is detected."),
 			 problem->name);
 
-  add_prefix_cmd (problem->name,
-		  class_maintenance, set_internal_problem_cmd, set_doc,
-		  set_cmd_list,
-		  concat ("maintenance set ", problem->name, " ",
-			  (char *) NULL),
-		  0/*allow-unknown*/, &maintenance_set_cmdlist);
-
-  add_prefix_cmd (problem->name,
-		  class_maintenance, show_internal_problem_cmd, show_doc,
-		  show_cmd_list,
-		  concat ("maintenance show ", problem->name, " ",
-			  (char *) NULL),
-		  0/*allow-unknown*/, &maintenance_show_cmdlist);
+  add_basic_prefix_cmd (problem->name, class_maintenance, set_doc,
+			set_cmd_list,
+			concat ("maintenance set ", problem->name, " ",
+				(char *) NULL),
+			0/*allow-unknown*/, &maintenance_set_cmdlist);
+
+  add_show_prefix_cmd (problem->name, class_maintenance, show_doc,
+		       show_cmd_list,
+		       concat ("maintenance show ", problem->name, " ",
+			       (char *) NULL),
+		       0/*allow-unknown*/, &maintenance_show_cmdlist);
 
   if (problem->user_settable_should_quit)
     {
@@ -691,6 +678,15 @@ malloc_failure (long size)
     }
 }
 
+/* See common/errors.h.  */
+
+void
+flush_streams ()
+{
+  gdb_stdout->flush ();
+  gdb_stderr->flush ();
+}
+
 /* My replacement for the read system call.
    Used like `read' but keeps going if `read' returns too soon.  */
 
@@ -1030,7 +1026,7 @@ parse_escape (struct gdbarch *gdbarch, c
 	  while (++count < 3)
 	    {
 	      c = (**string_ptr);
-	      if (isdigit (c) && c != '8' && c != '9')
+	      if (ISDIGIT (c) && c != '8' && c != '9')
 		{
 		  (*string_ptr)++;
 		  i *= 8;
@@ -1277,7 +1273,7 @@ init_page_info (void)
 	}
 
       /* If the output is not a terminal, don't paginate it.  */
-      if (!ui_file_isatty (gdb_stdout))
+      if (!gdb_stdout->isatty ())
 	lines_per_page = UINT_MAX;
 #endif
     }
@@ -1405,7 +1401,7 @@ emit_style_escape (const ui_file_style &
   if (stream == nullptr)
     wrap_buffer.append (style.to_ansi ());
   else
-    ui_file_puts (stream, style.to_ansi ().c_str ());
+    stream->puts (style.to_ansi ().c_str ());
 }
 
 /* Set the current output style.  This will affect future uses of the
@@ -1539,7 +1535,7 @@ flush_wrap_buffer (struct ui_file *strea
 {
   if (stream == gdb_stdout && !wrap_buffer.empty ())
     {
-      ui_file_puts (stream, wrap_buffer.c_str ());
+      stream->puts (wrap_buffer.c_str ());
       wrap_buffer.clear ();
     }
 }
@@ -1550,7 +1546,7 @@ void
 gdb_flush (struct ui_file *stream)
 {
   flush_wrap_buffer (stream);
-  ui_file_flush (stream);
+  stream->flush ();
 }
 
 /* Indicate that if the next sequence of characters overflows the line,
@@ -1578,9 +1574,7 @@ void
 wrap_here (const char *indent)
 {
   /* This should have been allocated, but be paranoid anyway.  */
-  if (!filter_initialized)
-    internal_error (__FILE__, __LINE__,
-		    _("failed internal consistency check"));
+  gdb_assert (filter_initialized);
 
   flush_wrap_buffer (gdb_stdout);
   if (chars_per_line == UINT_MAX)	/* No line overflow checking.  */
@@ -1697,7 +1691,7 @@ fputs_maybe_filtered (const char *linebu
       || top_level_interpreter ()->interp_ui_out ()->is_mi_like_p ())
     {
       flush_wrap_buffer (stream);
-      ui_file_puts (stream, linebuffer);
+      stream->puts (linebuffer);
       return;
     }
 
@@ -1776,7 +1770,12 @@ fputs_maybe_filtered (const char *linebu
 		     newline -- if chars_per_line is right, we
 		     probably just overflowed anyway; if it's wrong,
 		     let us keep going.  */
-		  fputc_unfiltered ('\n', stream);
+		  /* XXX: The ideal thing would be to call
+		     'stream->putc' here, but we can't because it
+		     currently calls 'fputc_unfiltered', which ends up
+		     calling us, which generates an infinite
+		     recursion.  */
+		  stream->puts ("\n");
 		}
 	      else
 		{
@@ -1797,7 +1796,7 @@ fputs_maybe_filtered (const char *linebu
 	      /* Now output indentation and wrapped string.  */
 	      if (wrap_column)
 		{
-		  ui_file_puts (stream, wrap_indent);
+		  stream->puts (wrap_indent);
 		  if (stream->can_emit_style_escape ())
 		    emit_style_escape (save_style, stream);
 		  /* FIXME, this strlen is what prevents wrap_indent from
@@ -1821,7 +1820,12 @@ fputs_maybe_filtered (const char *linebu
 	  wrap_here ((char *) 0);	/* Spit out chars, cancel
 					   further wraps.  */
 	  lines_printed++;
-	  fputc_unfiltered ('\n', stream);
+	  /* XXX: The ideal thing would be to call
+	     'stream->putc' here, but we can't because it
+	     currently calls 'fputc_unfiltered', which ends up
+	     calling us, which generates an infinite
+	     recursion.  */
+	  stream->puts ("\n");
 	  lineptr++;
 	}
     }
@@ -1916,10 +1920,7 @@ fputs_highlighted (const char *str, cons
 int
 putchar_unfiltered (int c)
 {
-  char buf = c;
-
-  ui_file_write (gdb_stdout, &buf, 1);
-  return c;
+  return fputc_unfiltered (c, gdb_stdout);
 }
 
 /* Write character C to gdb_stdout using GDB's paging mechanism and return C.
@@ -1934,9 +1935,11 @@ putchar_filtered (int c)
 int
 fputc_unfiltered (int c, struct ui_file *stream)
 {
-  char buf = c;
+  char buf[2];
 
-  ui_file_write (stream, &buf, 1);
+  buf[0] = c;
+  buf[1] = 0;
+  fputs_unfiltered (buf, stream);
   return c;
 }
 
@@ -1993,7 +1996,7 @@ puts_debug (char *prefix, char *string,
       switch (ch)
 	{
 	default:
-	  if (isprint (ch))
+	  if (gdb_isprint (ch))
 	    fputc_unfiltered (ch, gdb_stdlog);
 
 	  else
@@ -2258,8 +2261,7 @@ n_spaces (int n)
 
   if (n > max_spaces)
     {
-      if (spaces)
-	xfree (spaces);
+      xfree (spaces);
       spaces = (char *) xmalloc (n + 1);
       for (t = spaces + n; t != spaces;)
 	*--t = ' ';
@@ -2315,7 +2317,7 @@ fprintf_symbol_filtered (struct ui_file
 static bool
 valid_identifier_name_char (int ch)
 {
-  return (isalnum (ch) || ch == '_');
+  return (ISALNUM (ch) || ch == '_');
 }
 
 /* Skip to end of token, or to END, whatever comes first.  Input is
@@ -2325,7 +2327,7 @@ static const char *
 cp_skip_operator_token (const char *token, const char *end)
 {
   const char *p = token;
-  while (p != end && !isspace (*p) && *p != '(')
+  while (p != end && !ISSPACE (*p) && *p != '(')
     {
       if (valid_identifier_name_char (*p))
 	{
@@ -2379,9 +2381,9 @@ cp_skip_operator_token (const char *toke
 static void
 skip_ws (const char *&string1, const char *&string2, const char *end_str2)
 {
-  while (isspace (*string1))
+  while (ISSPACE (*string1))
     string1++;
-  while (string2 < end_str2 && isspace (*string2))
+  while (string2 < end_str2 && ISSPACE (*string2))
     string2++;
 }
 
@@ -2443,8 +2445,8 @@ strncmp_iw_with_mode (const char *string
   while (1)
     {
       if (skip_spaces
-	  || ((isspace (*string1) && !valid_identifier_name_char (*string2))
-	      || (isspace (*string2) && !valid_identifier_name_char (*string1))))
+	  || ((ISSPACE (*string1) && !valid_identifier_name_char (*string2))
+	      || (ISSPACE (*string2) && !valid_identifier_name_char (*string1))))
 	{
 	  skip_ws (string1, string2, end_str2);
 	  skip_spaces = false;
@@ -2477,7 +2479,7 @@ strncmp_iw_with_mode (const char *string
 	  if (match_for_lcd != NULL && abi_start != string1)
 	    match_for_lcd->mark_ignored_range (abi_start, string1);
 
-	  while (isspace (*string1))
+	  while (ISSPACE (*string1))
 	    string1++;
 	}
 
@@ -2502,9 +2504,9 @@ strncmp_iw_with_mode (const char *string
 	  string1++;
 	  string2++;
 
-	  while (isspace (*string1))
+	  while (ISSPACE (*string1))
 	    string1++;
-	  while (string2 < end_str2 && isspace (*string2))
+	  while (string2 < end_str2 && ISSPACE (*string2))
 	    string2++;
 	  continue;
 	}
@@ -2598,14 +2600,14 @@ strncmp_iw_with_mode (const char *string
       if (case_sensitivity == case_sensitive_on && *string1 != *string2)
 	break;
       if (case_sensitivity == case_sensitive_off
-	  && (tolower ((unsigned char) *string1)
-	      != tolower ((unsigned char) *string2)))
+	  && (TOLOWER ((unsigned char) *string1)
+	      != TOLOWER ((unsigned char) *string2)))
 	break;
 
       /* If we see any non-whitespace, non-identifier-name character
 	 (any of "()<>*&" etc.), then skip spaces the next time
 	 around.  */
-      if (!isspace (*string1) && !valid_identifier_name_char (*string1))
+      if (!ISSPACE (*string1) && !valid_identifier_name_char (*string1))
 	skip_spaces = true;
 
       string1++;
@@ -2726,16 +2728,16 @@ strcmp_iw_ordered (const char *string1,
 
       while (*string1 != '\0' && *string2 != '\0')
 	{
-	  while (isspace (*string1))
+	  while (ISSPACE (*string1))
 	    string1++;
-	  while (isspace (*string2))
+	  while (ISSPACE (*string2))
 	    string2++;
 
 	  switch (case_pass)
 	  {
 	    case case_sensitive_off:
-	      c1 = tolower ((unsigned char) *string1);
-	      c2 = tolower ((unsigned char) *string2);
+	      c1 = TOLOWER ((unsigned char) *string1);
+	      c2 = TOLOWER ((unsigned char) *string2);
 	      break;
 	    case case_sensitive_on:
 	      c1 = *string1;
@@ -2923,17 +2925,17 @@ string_to_core_addr (const char *my_stri
 {
   CORE_ADDR addr = 0;
 
-  if (my_string[0] == '0' && tolower (my_string[1]) == 'x')
+  if (my_string[0] == '0' && TOLOWER (my_string[1]) == 'x')
     {
       /* Assume that it is in hex.  */
       int i;
 
       for (i = 2; my_string[i] != '\0'; i++)
 	{
-	  if (isdigit (my_string[i]))
+	  if (ISDIGIT (my_string[i]))
 	    addr = (my_string[i] - '0') + (addr * 16);
-	  else if (isxdigit (my_string[i]))
-	    addr = (tolower (my_string[i]) - 'a' + 0xa) + (addr * 16);
+	  else if (ISXDIGIT (my_string[i]))
+	    addr = (TOLOWER (my_string[i]) - 'a' + 0xa) + (addr * 16);
 	  else
 	    error (_("invalid hex \"%s\""), my_string);
 	}
@@ -2945,7 +2947,7 @@ string_to_core_addr (const char *my_stri
 
       for (i = 0; my_string[i] != '\0'; i++)
 	{
-	  if (isdigit (my_string[i]))
+	  if (ISDIGIT (my_string[i]))
 	    addr = (my_string[i] - '0') + (addr * 10);
 	  else
 	    error (_("invalid decimal \"%s\""), my_string);
@@ -2989,6 +2991,31 @@ gdb_realpath_tests ()
   gdb_realpath_check_trailer ("", "");
 }
 
+/* Test the gdb_argv::as_array_view method.  */
+
+static void
+gdb_argv_as_array_view_test ()
+{
+  {
+    gdb_argv argv;
+
+    gdb::array_view<char *> view = argv.as_array_view ();
+
+    SELF_CHECK (view.data () == nullptr);
+    SELF_CHECK (view.size () == 0);
+  }
+  {
+    gdb_argv argv ("une bonne 50");
+
+    gdb::array_view<char *> view = argv.as_array_view ();
+
+    SELF_CHECK (view.size () == 3);
+    SELF_CHECK (strcmp (view[0], "une") == 0);
+    SELF_CHECK (strcmp (view[1], "bonne") == 0);
+    SELF_CHECK (strcmp (view[2], "50") == 0);
+  }
+}
+
 #endif /* GDB_SELF_TEST */
 
 /* Allocation function for the libiberty hash table which uses an
@@ -3048,9 +3075,6 @@ gdb_argv::reset (const char *s)
 {
   char **argv = buildargv (s);
 
-  if (s != NULL && argv == NULL)
-    malloc_failure (0);
-
   freeargv (m_argv);
   m_argv = argv;
 }
@@ -3429,12 +3453,13 @@ copy_bitwise (gdb_byte *dest, ULONGEST d
 	buf |= *source << avail;
 
       buf &= (1 << nbits) - 1;
-      *dest = (*dest & (~0 << nbits)) | buf;
+      *dest = (*dest & (~0U << nbits)) | buf;
     }
 }
 
+void _initialize_utils ();
 void
-_initialize_utils (void)
+_initialize_utils ()
 {
   add_setshow_uinteger_cmd ("width", class_support, &chars_per_line, _("\
 Set number of characters where GDB should wrap lines of its output."), _("\
@@ -3489,5 +3514,6 @@ When set, debugging messages will be mar
 
 #if GDB_SELF_TEST
   selftests::register_test ("gdb_realpath", gdb_realpath_tests);
+  selftests::register_test ("gdb_argv_array_view", gdb_argv_as_array_view_test);
 #endif
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/utils.h ./gdb/utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/utils.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/utils.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 /* *INDENT-OFF* */ /* ATTRIBUTE_PRINTF confuses indent, avoid running it
 		      for now.  */
 /* I/O, string, cleanup, and other random utilities for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,6 +22,7 @@
 #define UTILS_H
 
 #include "exceptions.h"
+#include "gdbsupport/array-view.h"
 #include "gdbsupport/scoped_restore.h"
 #include <chrono>
 
@@ -146,10 +147,7 @@ public:
   }
 
   /* A constructor that calls buildargv on STR.  STR may be NULL, in
-     which case this object is initialized with a NULL array.  If
-     buildargv fails due to out-of-memory, call malloc_failure.
-     Therefore, the value is guaranteed to be non-NULL, unless the
-     parameter itself is NULL.  */
+     which case this object is initialized with a NULL array.  */
 
   explicit gdb_argv (const char *str)
     : m_argv (NULL)
@@ -213,6 +211,13 @@ public:
     return m_argv[arg];
   }
 
+  /* Return the arguments array as an array view.  */
+
+  gdb::array_view<char *> as_array_view ()
+  {
+    return gdb::array_view<char *> (this->get (), this->count ());
+  }
+
   /* The iterator type.  */
 
   typedef char **iterator;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/v850-tdep.c ./gdb/v850-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/v850-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/v850-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the NEC V850 for GDB, the GNU debugger.
 
-   Copyright (C) 1996-2020 Free Software Foundation, Inc.
+   Copyright (C) 1996-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,7 +22,7 @@
 #include "frame-base.h"
 #include "trad-frame.h"
 #include "frame-unwind.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "gdbtypes.h"
 #include "inferior.h"
 #include "gdbcore.h"
@@ -498,9 +498,9 @@ v850_register_type (struct gdbarch *gdba
 static int
 v850_type_is_scalar (struct type *t)
 {
-  return (TYPE_CODE (t) != TYPE_CODE_STRUCT
-	  && TYPE_CODE (t) != TYPE_CODE_UNION
-	  && TYPE_CODE (t) != TYPE_CODE_ARRAY);
+  return (t->code () != TYPE_CODE_STRUCT
+	  && t->code () != TYPE_CODE_UNION
+	  && t->code () != TYPE_CODE_ARRAY);
 }
 
 /* Should call_function allocate stack space for a struct return?  */
@@ -530,15 +530,15 @@ v850_use_struct_convention (struct gdbar
   /* The value is a structure or union with a single element and that
      element is either a single basic type or an array of a single basic
      type whose size is greater than or equal to 4 -> returned in register.  */
-  if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
-       || TYPE_CODE (type) == TYPE_CODE_UNION)
-       && TYPE_NFIELDS (type) == 1)
+  if ((type->code () == TYPE_CODE_STRUCT
+       || type->code () == TYPE_CODE_UNION)
+       && type->num_fields () == 1)
     {
-      fld_type = TYPE_FIELD_TYPE (type, 0);
+      fld_type = type->field (0).type ();
       if (v850_type_is_scalar (fld_type) && TYPE_LENGTH (fld_type) >= 4)
 	return 0;
 
-      if (TYPE_CODE (fld_type) == TYPE_CODE_ARRAY)
+      if (fld_type->code () == TYPE_CODE_ARRAY)
         {
 	  tgt_type = TYPE_TARGET_TYPE (fld_type);
 	  if (v850_type_is_scalar (tgt_type) && TYPE_LENGTH (tgt_type) >= 4)
@@ -549,14 +549,14 @@ v850_use_struct_convention (struct gdbar
   /* The value is a structure whose first element is an integer or a float,
      and which contains no arrays of more than two elements -> returned in
      register.  */
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      && v850_type_is_scalar (TYPE_FIELD_TYPE (type, 0))
-      && TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0)) == 4)
+  if (type->code () == TYPE_CODE_STRUCT
+      && v850_type_is_scalar (type->field (0).type ())
+      && TYPE_LENGTH (type->field (0).type ()) == 4)
     {
-      for (i = 1; i < TYPE_NFIELDS (type); ++i)
+      for (i = 1; i < type->num_fields (); ++i)
         {
-	  fld_type = TYPE_FIELD_TYPE (type, 0);
-	  if (TYPE_CODE (fld_type) == TYPE_CODE_ARRAY)
+	  fld_type = type->field (0).type ();
+	  if (fld_type->code () == TYPE_CODE_ARRAY)
 	    {
 	      tgt_type = TYPE_TARGET_TYPE (fld_type);
 	      if (TYPE_LENGTH (tgt_type) > 0
@@ -570,11 +570,11 @@ v850_use_struct_convention (struct gdbar
   /* The value is a union which contains at least one field which
      would be returned in registers according to these rules ->
      returned in register.  */
-  if (TYPE_CODE (type) == TYPE_CODE_UNION)
+  if (type->code () == TYPE_CODE_UNION)
     {
-      for (i = 0; i < TYPE_NFIELDS (type); ++i)
+      for (i = 0; i < type->num_fields (); ++i)
         {
-	  fld_type = TYPE_FIELD_TYPE (type, 0);
+	  fld_type = type->field (0).type ();
 	  if (!v850_use_struct_convention (gdbarch, fld_type))
 	    return 0;
 	}
@@ -981,9 +981,9 @@ v850_eight_byte_align_p (struct type *ty
     {
       int i;
 
-      for (i = 0; i < TYPE_NFIELDS (type); i++)
+      for (i = 0; i < type->num_fields (); i++)
 	{
-	  if (v850_eight_byte_align_p (TYPE_FIELD_TYPE (type, i)))
+	  if (v850_eight_byte_align_p (type->field (i).type ()))
 	    return 1;
 	}
     }
@@ -1453,8 +1453,9 @@ v850_gdbarch_init (struct gdbarch_info i
   return gdbarch;
 }
 
+void _initialize_v850_tdep ();
 void
-_initialize_v850_tdep (void)
+_initialize_v850_tdep ()
 {
   register_gdbarch_init (bfd_arch_v850, v850_gdbarch_init);
   register_gdbarch_init (bfd_arch_v850_rh850, v850_gdbarch_init);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/valarith.c ./gdb/valarith.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/valarith.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/valarith.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Perform arithmetic and other operations on values, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -48,19 +48,19 @@ find_size_for_pointer_math (struct type
   LONGEST sz = -1;
   struct type *ptr_target;
 
-  gdb_assert (TYPE_CODE (ptr_type) == TYPE_CODE_PTR);
+  gdb_assert (ptr_type->code () == TYPE_CODE_PTR);
   ptr_target = check_typedef (TYPE_TARGET_TYPE (ptr_type));
 
   sz = type_length_units (ptr_target);
   if (sz == 0)
     {
-      if (TYPE_CODE (ptr_type) == TYPE_CODE_VOID)
+      if (ptr_type->code () == TYPE_CODE_VOID)
 	sz = 1;
       else
 	{
 	  const char *name;
 	  
-	  name = TYPE_NAME (ptr_target);
+	  name = ptr_target->name ();
 	  if (name == NULL)
 	    error (_("Cannot perform pointer math on incomplete types, "
 		   "try casting to a known type, or void *."));
@@ -107,8 +107,8 @@ value_ptrdiff (struct value *arg1, struc
   type1 = check_typedef (value_type (arg1));
   type2 = check_typedef (value_type (arg2));
 
-  gdb_assert (TYPE_CODE (type1) == TYPE_CODE_PTR);
-  gdb_assert (TYPE_CODE (type2) == TYPE_CODE_PTR);
+  gdb_assert (type1->code () == TYPE_CODE_PTR);
+  gdb_assert (type2->code () == TYPE_CODE_PTR);
 
   if (TYPE_LENGTH (check_typedef (TYPE_TARGET_TYPE (type1)))
       != TYPE_LENGTH (check_typedef (TYPE_TARGET_TYPE (type2))))
@@ -146,29 +146,37 @@ value_subscript (struct value *array, LO
   array = coerce_ref (array);
   tarray = check_typedef (value_type (array));
 
-  if (TYPE_CODE (tarray) == TYPE_CODE_ARRAY
-      || TYPE_CODE (tarray) == TYPE_CODE_STRING)
+  if (tarray->code () == TYPE_CODE_ARRAY
+      || tarray->code () == TYPE_CODE_STRING)
     {
-      struct type *range_type = TYPE_INDEX_TYPE (tarray);
-      LONGEST lowerbound, upperbound;
+      struct type *range_type = tarray->index_type ();
+      gdb::optional<LONGEST> lowerbound = get_discrete_low_bound (range_type);
+      if (!lowerbound.has_value ())
+	lowerbound = 0;
 
-      get_discrete_bounds (range_type, &lowerbound, &upperbound);
       if (VALUE_LVAL (array) != lval_memory)
-	return value_subscripted_rvalue (array, index, lowerbound);
+	return value_subscripted_rvalue (array, index, *lowerbound);
 
       if (c_style == 0)
 	{
-	  if (index >= lowerbound && index <= upperbound)
-	    return value_subscripted_rvalue (array, index, lowerbound);
+	  gdb::optional<LONGEST> upperbound
+	    = get_discrete_high_bound (range_type);
+
+	  if (!upperbound.has_value ())
+	    upperbound = 0;
+
+	  if (index >= *lowerbound && index <= *upperbound)
+	    return value_subscripted_rvalue (array, index, *lowerbound);
+
 	  /* Emit warning unless we have an array of unknown size.
 	     An array of unknown size has lowerbound 0 and upperbound -1.  */
-	  if (upperbound > -1)
+	  if (*upperbound > -1)
 	    warning (_("array or string index out of range"));
 	  /* fall doing C stuff */
 	  c_style = 1;
 	}
 
-      index -= lowerbound;
+      index -= *lowerbound;
       array = value_coerce_array (array);
     }
 
@@ -187,11 +195,11 @@ 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);
+  LONGEST 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);
+  LONGEST stride = array_type->bit_stride ();
   if (stride != 0)
     {
       struct gdbarch *arch = get_type_arch (elt_type);
@@ -199,13 +207,14 @@ value_subscripted_rvalue (struct value *
       elt_size = stride / (unit_size * 8);
     }
 
-  ULONGEST elt_offs = elt_size * (index - lowerbound);
+  LONGEST elt_offs = elt_size * (index - lowerbound);
+  bool array_upper_bound_undefined
+    = array_type->bounds ()->high.kind () == PROP_UNDEFINED;
 
   if (index < lowerbound
-      || (!TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (array_type)
-          && elt_offs >= type_length_units (array_type))
-      || (VALUE_LVAL (array) != lval_memory
-          && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (array_type)))
+      || (!array_upper_bound_undefined
+	  && elt_offs >= type_length_units (array_type))
+      || (VALUE_LVAL (array) != lval_memory && array_upper_bound_undefined))
     {
       if (type_not_associated (array_type))
         error (_("no such vector element (vector not associated)"));
@@ -220,7 +229,7 @@ value_subscripted_rvalue (struct value *
       CORE_ADDR address;
 
       address = value_address (array) + elt_offs;
-      elt_type = resolve_dynamic_type (elt_type, NULL, address);
+      elt_type = resolve_dynamic_type (elt_type, {}, address);
     }
 
   return value_from_component (array, elt_type, elt_offs);
@@ -248,8 +257,8 @@ binop_types_user_defined_p (enum exp_opc
   if (TYPE_IS_REFERENCE (type2))
     type2 = check_typedef (TYPE_TARGET_TYPE (type2));
 
-  return (TYPE_CODE (type1) == TYPE_CODE_STRUCT
-	  || TYPE_CODE (type2) == TYPE_CODE_STRUCT);
+  return (type1->code () == TYPE_CODE_STRUCT
+	  || type2->code () == TYPE_CODE_STRUCT);
 }
 
 /* Check to see if either argument is a structure, or a reference to
@@ -281,7 +290,7 @@ unop_user_defined_p (enum exp_opcode op,
   type1 = check_typedef (value_type (arg1));
   if (TYPE_IS_REFERENCE (type1))
     type1 = check_typedef (TYPE_TARGET_TYPE (type1));
-  return TYPE_CODE (type1) == TYPE_CODE_STRUCT;
+  return type1->code () == TYPE_CODE_STRUCT;
 }
 
 /* Try to find an operator named OPERATOR which takes NARGS arguments
@@ -364,7 +373,7 @@ value_x_binop (struct value *arg1, struc
   /* now we know that what we have to do is construct our
      arg vector and find the right function to call it with.  */
 
-  if (TYPE_CODE (check_typedef (value_type (arg1))) != TYPE_CODE_STRUCT)
+  if (check_typedef (value_type (arg1))->code () != TYPE_CODE_STRUCT)
     error (_("Can't do that binary op on that type"));	/* FIXME be explicit */
 
   value *argvec_storage[3];
@@ -491,7 +500,7 @@ value_x_binop (struct value *arg1, struc
 	  argvec[1] = argvec[0];
 	  argvec = argvec.slice (1);
 	}
-      if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_XMETHOD)
+      if (value_type (argvec[0])->code () == TYPE_CODE_XMETHOD)
 	{
 	  /* Static xmethods are not supported yet.  */
 	  gdb_assert (static_memfuncp == 0);
@@ -540,7 +549,7 @@ value_x_unop (struct value *arg1, enum e
   /* now we know that what we have to do is construct our
      arg vector and find the right function to call it with.  */
 
-  if (TYPE_CODE (check_typedef (value_type (arg1))) != TYPE_CODE_STRUCT)
+  if (check_typedef (value_type (arg1))->code () != TYPE_CODE_STRUCT)
     error (_("Can't do that unary op on that type"));	/* FIXME be explicit */
 
   value *argvec_storage[3];
@@ -605,7 +614,7 @@ value_x_unop (struct value *arg1, enum e
 	  argvec[1] = argvec[0];
 	  argvec = argvec.slice (1);
 	}
-      if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_XMETHOD)
+      if (value_type (argvec[0])->code () == TYPE_CODE_XMETHOD)
 	{
 	  /* Static xmethods are not supported yet.  */
 	  gdb_assert (static_memfuncp == 0);
@@ -675,7 +684,7 @@ value_concat (struct value *arg1, struct
      to the second of the two concatenated values or the value to be 
      repeated.  */
 
-  if (TYPE_CODE (type2) == TYPE_CODE_INT)
+  if (type2->code () == TYPE_CODE_INT)
     {
       struct type *tmp = type1;
 
@@ -692,17 +701,17 @@ value_concat (struct value *arg1, struct
 
   /* Now process the input values.  */
 
-  if (TYPE_CODE (type1) == TYPE_CODE_INT)
+  if (type1->code () == TYPE_CODE_INT)
     {
       /* We have a repeat count.  Validate the second value and then
          construct a value repeated that many times.  */
-      if (TYPE_CODE (type2) == TYPE_CODE_STRING
-	  || TYPE_CODE (type2) == TYPE_CODE_CHAR)
+      if (type2->code () == TYPE_CODE_STRING
+	  || type2->code () == TYPE_CODE_CHAR)
 	{
 	  count = longest_to_int (value_as_long (inval1));
 	  inval2len = TYPE_LENGTH (type2);
 	  std::vector<char> ptr (count * inval2len);
-	  if (TYPE_CODE (type2) == TYPE_CODE_CHAR)
+	  if (type2->code () == TYPE_CODE_CHAR)
 	    {
 	      char_type = type2;
 
@@ -725,7 +734,7 @@ value_concat (struct value *arg1, struct
 	    }
 	  outval = value_string (ptr.data (), count * inval2len, char_type);
 	}
-      else if (TYPE_CODE (type2) == TYPE_CODE_BOOL)
+      else if (type2->code () == TYPE_CODE_BOOL)
 	{
 	  error (_("unimplemented support for boolean repeats"));
 	}
@@ -734,19 +743,19 @@ value_concat (struct value *arg1, struct
 	  error (_("can't repeat values of that type"));
 	}
     }
-  else if (TYPE_CODE (type1) == TYPE_CODE_STRING
-	   || TYPE_CODE (type1) == TYPE_CODE_CHAR)
+  else if (type1->code () == TYPE_CODE_STRING
+	   || type1->code () == TYPE_CODE_CHAR)
     {
       /* We have two character strings to concatenate.  */
-      if (TYPE_CODE (type2) != TYPE_CODE_STRING
-	  && TYPE_CODE (type2) != TYPE_CODE_CHAR)
+      if (type2->code () != TYPE_CODE_STRING
+	  && type2->code () != TYPE_CODE_CHAR)
 	{
 	  error (_("Strings can only be concatenated with other strings."));
 	}
       inval1len = TYPE_LENGTH (type1);
       inval2len = TYPE_LENGTH (type2);
       std::vector<char> ptr (inval1len + inval2len);
-      if (TYPE_CODE (type1) == TYPE_CODE_CHAR)
+      if (type1->code () == TYPE_CODE_CHAR)
 	{
 	  char_type = type1;
 
@@ -758,7 +767,7 @@ value_concat (struct value *arg1, struct
 
 	  memcpy (ptr.data (), value_contents (inval1), inval1len);
 	}
-      if (TYPE_CODE (type2) == TYPE_CODE_CHAR)
+      if (type2->code () == TYPE_CODE_CHAR)
 	{
 	  ptr[inval1len] =
 	    (char) unpack_long (type2, value_contents (inval2));
@@ -769,10 +778,10 @@ value_concat (struct value *arg1, struct
 	}
       outval = value_string (ptr.data (), inval1len + inval2len, char_type);
     }
-  else if (TYPE_CODE (type1) == TYPE_CODE_BOOL)
+  else if (type1->code () == TYPE_CODE_BOOL)
     {
       /* We have two bitstrings to concatenate.  */
-      if (TYPE_CODE (type2) != TYPE_CODE_BOOL)
+      if (type2->code () != TYPE_CODE_BOOL)
 	{
 	  error (_("Booleans can only be concatenated "
 		   "with other bitstrings or booleans."));
@@ -865,7 +874,7 @@ value_args_as_target_float (struct value
   gdb_assert (is_floating_type (type1) || is_floating_type (type2));
 
   if (is_floating_type (type1) && is_floating_type (type2)
-      && TYPE_CODE (type1) != TYPE_CODE (type2))
+      && type1->code () != type2->code ())
     /* 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).  */
@@ -888,8 +897,8 @@ value_args_as_target_float (struct value
 	target_float_from_longest (x, *eff_type_x, value_as_long (arg1));
     }
   else
-    error (_("Don't know how to convert from %s to %s."), TYPE_NAME (type1),
-	     TYPE_NAME (type2));
+    error (_("Don't know how to convert from %s to %s."), type1->name (),
+	     type2->name ());
 
   /* Obtain value of arg2, converting from other types if necessary.  */
 
@@ -907,8 +916,159 @@ value_args_as_target_float (struct value
 	target_float_from_longest (y, *eff_type_y, value_as_long (arg2));
     }
   else
-    error (_("Don't know how to convert from %s to %s."), TYPE_NAME (type1),
-	     TYPE_NAME (type2));
+    error (_("Don't know how to convert from %s to %s."), type1->name (),
+	     type2->name ());
+}
+
+/* A helper function that finds the type to use for a binary operation
+   involving TYPE1 and TYPE2.  */
+
+static struct type *
+promotion_type (struct type *type1, struct type *type2)
+{
+  struct type *result_type;
+
+  if (is_floating_type (type1) || is_floating_type (type2))
+    {
+      /* If only one type is floating-point, use its type.
+	 Otherwise use the bigger type.  */
+      if (!is_floating_type (type1))
+	result_type = type2;
+      else if (!is_floating_type (type2))
+	result_type = type1;
+      else if (TYPE_LENGTH (type2) > TYPE_LENGTH (type1))
+	result_type = type2;
+      else
+	result_type = type1;
+    }
+  else
+    {
+      /* Integer types.  */
+      if (TYPE_LENGTH (type1) > TYPE_LENGTH (type2))
+	result_type = type1;
+      else if (TYPE_LENGTH (type2) > TYPE_LENGTH (type1))
+	result_type = type2;
+      else if (TYPE_UNSIGNED (type1))
+	result_type = type1;
+      else if (TYPE_UNSIGNED (type2))
+	result_type = type2;
+      else
+	result_type = type1;
+    }
+
+  return result_type;
+}
+
+static struct value *scalar_binop (struct value *arg1, struct value *arg2,
+				   enum exp_opcode op);
+
+/* Perform a binary operation on complex operands.  */
+
+static struct value *
+complex_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
+{
+  struct type *arg1_type = check_typedef (value_type (arg1));
+  struct type *arg2_type = check_typedef (value_type (arg2));
+
+  struct value *arg1_real, *arg1_imag, *arg2_real, *arg2_imag;
+  if (arg1_type->code () == TYPE_CODE_COMPLEX)
+    {
+      arg1_real = value_real_part (arg1);
+      arg1_imag = value_imaginary_part (arg1);
+    }
+  else
+    {
+      arg1_real = arg1;
+      arg1_imag = value_zero (arg1_type, not_lval);
+    }
+  if (arg2_type->code () == TYPE_CODE_COMPLEX)
+    {
+      arg2_real = value_real_part (arg2);
+      arg2_imag = value_imaginary_part (arg2);
+    }
+  else
+    {
+      arg2_real = arg2;
+      arg2_imag = value_zero (arg2_type, not_lval);
+    }
+
+  struct type *comp_type = promotion_type (value_type (arg1_real),
+					   value_type (arg2_real));
+  arg1_real = value_cast (comp_type, arg1_real);
+  arg1_imag = value_cast (comp_type, arg1_imag);
+  arg2_real = value_cast (comp_type, arg2_real);
+  arg2_imag = value_cast (comp_type, arg2_imag);
+
+  struct type *result_type = init_complex_type (nullptr, comp_type);
+
+  struct value *result_real, *result_imag;
+  switch (op)
+    {
+    case BINOP_ADD:
+    case BINOP_SUB:
+      result_real = scalar_binop (arg1_real, arg2_real, op);
+      result_imag = scalar_binop (arg1_imag, arg2_imag, op);
+      break;
+
+    case BINOP_MUL:
+      {
+	struct value *x1 = scalar_binop (arg1_real, arg2_real, op);
+	struct value *x2 = scalar_binop (arg1_imag, arg2_imag, op);
+	result_real = scalar_binop (x1, x2, BINOP_SUB);
+
+	x1 = scalar_binop (arg1_real, arg2_imag, op);
+	x2 = scalar_binop (arg1_imag, arg2_real, op);
+	result_imag = scalar_binop (x1, x2, BINOP_ADD);
+      }
+      break;
+
+    case BINOP_DIV:
+      {
+	if (arg2_type->code () == TYPE_CODE_COMPLEX)
+	  {
+	    struct value *conjugate = value_complement (arg2);
+	    /* We have to reconstruct ARG1, in case the type was
+	       promoted.  */
+	    arg1 = value_literal_complex (arg1_real, arg1_imag, result_type);
+
+	    struct value *numerator = scalar_binop (arg1, conjugate,
+						    BINOP_MUL);
+	    arg1_real = value_real_part (numerator);
+	    arg1_imag = value_imaginary_part (numerator);
+
+	    struct value *x1 = scalar_binop (arg2_real, arg2_real, BINOP_MUL);
+	    struct value *x2 = scalar_binop (arg2_imag, arg2_imag, BINOP_MUL);
+	    arg2_real = scalar_binop (x1, x2, BINOP_ADD);
+	  }
+
+	result_real = scalar_binop (arg1_real, arg2_real, op);
+	result_imag = scalar_binop (arg1_imag, arg2_real, op);
+      }
+      break;
+
+    case BINOP_EQUAL:
+    case BINOP_NOTEQUAL:
+      {
+	struct value *x1 = scalar_binop (arg1_real, arg2_real, op);
+	struct value *x2 = scalar_binop (arg1_imag, arg2_imag, op);
+
+	LONGEST v1 = value_as_long (x1);
+	LONGEST v2 = value_as_long (x2);
+
+	if (op == BINOP_EQUAL)
+	  v1 = v1 && v2;
+	else
+	  v1 = v1 || v2;
+
+	return value_from_longest (value_type (x1), v1);
+      }
+      break;
+
+    default:
+      error (_("Invalid binary operation on numbers."));
+    }
+
+  return value_literal_complex (result_real, result_imag, result_type);
 }
 
 /* Perform a binary operation on two operands which have reasonable
@@ -929,23 +1089,17 @@ scalar_binop (struct value *arg1, struct
   type1 = check_typedef (value_type (arg1));
   type2 = check_typedef (value_type (arg2));
 
+  if (type1->code () == TYPE_CODE_COMPLEX
+      || type2->code () == TYPE_CODE_COMPLEX)
+    return complex_binop (arg1, arg2, op);
+
   if ((!is_floating_value (arg1) && !is_integral_type (type1))
       || (!is_floating_value (arg2) && !is_integral_type (type2)))
     error (_("Argument to arithmetic operation not a number or boolean."));
 
   if (is_floating_type (type1) || is_floating_type (type2))
     {
-      /* If only one type is floating-point, use its type.
-	 Otherwise use the bigger type.  */
-      if (!is_floating_type (type1))
-	result_type = type2;
-      else if (!is_floating_type (type2))
-	result_type = type1;
-      else if (TYPE_LENGTH (type2) > TYPE_LENGTH (type1))
-	result_type = type2;
-      else
-	result_type = type1;
-
+      result_type = promotion_type (type1, type2);
       val = allocate_value (result_type);
 
       struct type *eff_type_v1, *eff_type_v2;
@@ -960,8 +1114,8 @@ scalar_binop (struct value *arg1, struct
 			      v2.data (), eff_type_v2,
 			      value_contents_raw (val), result_type);
     }
-  else if (TYPE_CODE (type1) == TYPE_CODE_BOOL
-	   || TYPE_CODE (type2) == TYPE_CODE_BOOL)
+  else if (type1->code () == TYPE_CODE_BOOL
+	   || type2->code () == TYPE_CODE_BOOL)
     {
       LONGEST v1, v2, v = 0;
 
@@ -1013,16 +1167,8 @@ scalar_binop (struct value *arg1, struct
 	 if one of the operands is unsigned.  */
       if (op == BINOP_RSH || op == BINOP_LSH || op == BINOP_EXP)
 	result_type = type1;
-      else if (TYPE_LENGTH (type1) > TYPE_LENGTH (type2))
-	result_type = type1;
-      else if (TYPE_LENGTH (type2) > TYPE_LENGTH (type1))
-	result_type = type2;
-      else if (TYPE_UNSIGNED (type1))
-	result_type = type1;
-      else if (TYPE_UNSIGNED (type2))
-	result_type = type2;
       else
-	result_type = type1;
+	result_type = promotion_type (type1, type2);
 
       if (TYPE_UNSIGNED (result_type))
 	{
@@ -1301,7 +1447,7 @@ value_vector_widen (struct value *scalar
 
   vector_type = check_typedef (vector_type);
 
-  gdb_assert (TYPE_CODE (vector_type) == TYPE_CODE_ARRAY
+  gdb_assert (vector_type->code () == TYPE_CODE_ARRAY
 	      && TYPE_VECTOR (vector_type));
 
   if (!get_array_bounds (vector_type, &low_bound, &high_bound))
@@ -1341,9 +1487,9 @@ vector_binop (struct value *val1, struct
   type1 = check_typedef (value_type (val1));
   type2 = check_typedef (value_type (val2));
 
-  t1_is_vec = (TYPE_CODE (type1) == TYPE_CODE_ARRAY
+  t1_is_vec = (type1->code () == TYPE_CODE_ARRAY
 	       && TYPE_VECTOR (type1)) ? 1 : 0;
-  t2_is_vec = (TYPE_CODE (type2) == TYPE_CODE_ARRAY
+  t2_is_vec = (type2->code () == TYPE_CODE_ARRAY
 	       && TYPE_VECTOR (type2)) ? 1 : 0;
 
   if (!t1_is_vec || !t2_is_vec)
@@ -1357,7 +1503,7 @@ vector_binop (struct value *val1, struct
   eltype2 = check_typedef (TYPE_TARGET_TYPE (type2));
   elsize = TYPE_LENGTH (eltype1);
 
-  if (TYPE_CODE (eltype1) != TYPE_CODE (eltype2)
+  if (eltype1->code () != eltype2->code ()
       || elsize != TYPE_LENGTH (eltype2)
       || TYPE_UNSIGNED (eltype1) != TYPE_UNSIGNED (eltype2)
       || low_bound1 != low_bound2 || high_bound1 != high_bound2)
@@ -1386,9 +1532,9 @@ value_binop (struct value *arg1, struct
   struct value *val;
   struct type *type1 = check_typedef (value_type (arg1));
   struct type *type2 = check_typedef (value_type (arg2));
-  int t1_is_vec = (TYPE_CODE (type1) == TYPE_CODE_ARRAY
+  int t1_is_vec = (type1->code () == TYPE_CODE_ARRAY
 		   && TYPE_VECTOR (type1));
-  int t2_is_vec = (TYPE_CODE (type2) == TYPE_CODE_ARRAY
+  int t2_is_vec = (type2->code () == TYPE_CODE_ARRAY
 		   && TYPE_VECTOR (type2));
 
   if (!t1_is_vec && !t2_is_vec)
@@ -1401,8 +1547,8 @@ value_binop (struct value *arg1, struct
       struct value **v = t1_is_vec ? &arg2 : &arg1;
       struct type *t = t1_is_vec ? type2 : type1;
       
-      if (TYPE_CODE (t) != TYPE_CODE_FLT
-	  && TYPE_CODE (t) != TYPE_CODE_DECFLOAT
+      if (t->code () != TYPE_CODE_FLT
+	  && t->code () != TYPE_CODE_DECFLOAT
 	  && !is_integral_type (t))
 	error (_("Argument to operation not a number or boolean."));
 
@@ -1491,8 +1637,8 @@ value_equal (struct value *arg1, struct
 
   type1 = check_typedef (value_type (arg1));
   type2 = check_typedef (value_type (arg2));
-  code1 = TYPE_CODE (type1);
-  code2 = TYPE_CODE (type2);
+  code1 = type1->code ();
+  code2 = type2->code ();
   is_int1 = is_integral_type (type1);
   is_int2 = is_integral_type (type2);
 
@@ -1555,7 +1701,7 @@ value_equal_contents (struct value *arg1
   type1 = check_typedef (value_type (arg1));
   type2 = check_typedef (value_type (arg2));
 
-  return (TYPE_CODE (type1) == TYPE_CODE (type2)
+  return (type1->code () == type2->code ()
 	  && TYPE_LENGTH (type1) == TYPE_LENGTH (type2)
 	  && memcmp (value_contents (arg1), value_contents (arg2),
 		     TYPE_LENGTH (type1)) == 0);
@@ -1577,8 +1723,8 @@ value_less (struct value *arg1, struct v
 
   type1 = check_typedef (value_type (arg1));
   type2 = check_typedef (value_type (arg2));
-  code1 = TYPE_CODE (type1);
-  code2 = TYPE_CODE (type2);
+  code1 = type1->code ();
+  code2 = type2->code ();
   is_int1 = is_integral_type (type1);
   is_int2 = is_integral_type (type2);
 
@@ -1629,7 +1775,8 @@ value_pos (struct value *arg1)
   type = check_typedef (value_type (arg1));
 
   if (is_integral_type (type) || is_floating_value (arg1)
-      || (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type)))
+      || (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
+      || type->code () == TYPE_CODE_COMPLEX)
     return value_from_contents (type, value_contents (arg1));
   else
     error (_("Argument to positive operation not a number."));
@@ -1645,7 +1792,7 @@ value_neg (struct value *arg1)
 
   if (is_integral_type (type) || is_floating_type (type))
     return value_binop (value_from_longest (type, 0), arg1, BINOP_SUB);
-  else if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
+  else if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
     {
       struct value *tmp, *val = allocate_value (type);
       struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type));
@@ -1663,6 +1810,15 @@ value_neg (struct value *arg1)
 	}
       return val;
     }
+  else if (type->code () == TYPE_CODE_COMPLEX)
+    {
+      struct value *real = value_real_part (arg1);
+      struct value *imag = value_imaginary_part (arg1);
+
+      real = value_neg (real);
+      imag = value_neg (imag);
+      return value_literal_complex (real, imag, type);
+    }
   else
     error (_("Argument to negate operation not a number."));
 }
@@ -1678,7 +1834,7 @@ value_complement (struct value *arg1)
 
   if (is_integral_type (type))
     val = value_from_longest (type, ~value_as_long (arg1));
-  else if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
+  else if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
     {
       struct value *tmp;
       struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type));
@@ -1696,6 +1852,16 @@ value_complement (struct value *arg1)
                   value_contents_all (tmp), TYPE_LENGTH (eltype));
         }
     }
+  else if (type->code () == TYPE_CODE_COMPLEX)
+    {
+      /* GCC has an extension that treats ~complex as the complex
+	 conjugate.  */
+      struct value *real = value_real_part (arg1);
+      struct value *imag = value_imaginary_part (arg1);
+
+      imag = value_neg (imag);
+      return value_literal_complex (real, imag, type);
+    }
   else
     error (_("Argument to complement operation not an integer, boolean."));
 
@@ -1713,9 +1879,9 @@ value_bit_index (struct type *type, cons
   LONGEST low_bound, high_bound;
   LONGEST word;
   unsigned rel_index;
-  struct type *range = TYPE_INDEX_TYPE (type);
+  struct type *range = type->index_type ();
 
-  if (get_discrete_bounds (range, &low_bound, &high_bound) < 0)
+  if (!get_discrete_bounds (range, &low_bound, &high_bound))
     return -2;
   if (index < low_bound || index > high_bound)
     return -1;
@@ -1735,14 +1901,14 @@ value_in (struct value *element, struct
   struct type *settype = check_typedef (value_type (set));
   struct type *eltype = check_typedef (value_type (element));
 
-  if (TYPE_CODE (eltype) == TYPE_CODE_RANGE)
+  if (eltype->code () == TYPE_CODE_RANGE)
     eltype = TYPE_TARGET_TYPE (eltype);
-  if (TYPE_CODE (settype) != TYPE_CODE_SET)
+  if (settype->code () != TYPE_CODE_SET)
     error (_("Second argument of 'IN' has wrong type"));
-  if (TYPE_CODE (eltype) != TYPE_CODE_INT
-      && TYPE_CODE (eltype) != TYPE_CODE_CHAR
-      && TYPE_CODE (eltype) != TYPE_CODE_ENUM
-      && TYPE_CODE (eltype) != TYPE_CODE_BOOL)
+  if (eltype->code () != TYPE_CODE_INT
+      && eltype->code () != TYPE_CODE_CHAR
+      && eltype->code () != TYPE_CODE_ENUM
+      && eltype->code () != TYPE_CODE_BOOL)
     error (_("First argument of 'IN' has wrong type"));
   member = value_bit_index (settype, value_contents (set),
 			    value_as_long (element));
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/valops.c ./gdb/valops.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/valops.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/valops.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Perform non-arithmetic operations on values, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -139,7 +139,7 @@ find_function_in_inferior (const char *n
       if (msymbol.minsym != NULL)
 	{
 	  struct objfile *objfile = msymbol.objfile;
-	  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+	  struct gdbarch *gdbarch = objfile->arch ();
 
 	  struct type *type;
 	  CORE_ADDR maddr;
@@ -175,7 +175,7 @@ value_allocate_space_in_inferior (int le
 {
   struct objfile *objf;
   struct value *val = find_function_in_inferior ("malloc", &objf);
-  struct gdbarch *gdbarch = get_objfile_arch (objf);
+  struct gdbarch *gdbarch = objf->arch ();
   struct value *blocklen;
 
   blocklen = value_from_longest (builtin_type (gdbarch)->builtin_int, len);
@@ -215,24 +215,24 @@ value_cast_structs (struct type *type, s
   t2 = check_typedef (value_type (v2));
 
   /* Check preconditions.  */
-  gdb_assert ((TYPE_CODE (t1) == TYPE_CODE_STRUCT
-	       || TYPE_CODE (t1) == TYPE_CODE_UNION)
+  gdb_assert ((t1->code () == TYPE_CODE_STRUCT
+	       || t1->code () == TYPE_CODE_UNION)
 	      && !!"Precondition is that type is of STRUCT or UNION kind.");
-  gdb_assert ((TYPE_CODE (t2) == TYPE_CODE_STRUCT
-	       || TYPE_CODE (t2) == TYPE_CODE_UNION)
+  gdb_assert ((t2->code () == TYPE_CODE_STRUCT
+	       || t2->code () == TYPE_CODE_UNION)
 	      && !!"Precondition is that value is of STRUCT or UNION kind");
 
-  if (TYPE_NAME (t1) != NULL
-      && TYPE_NAME (t2) != NULL
-      && !strcmp (TYPE_NAME (t1), TYPE_NAME (t2)))
+  if (t1->name () != NULL
+      && t2->name () != NULL
+      && !strcmp (t1->name (), t2->name ()))
     return NULL;
 
   /* Upcasting: look in the type of the source to see if it contains the
      type of the target as a superclass.  If so, we'll need to
      offset the pointer rather than just change its type.  */
-  if (TYPE_NAME (t1) != NULL)
+  if (t1->name () != NULL)
     {
-      v = search_struct_field (TYPE_NAME (t1),
+      v = search_struct_field (t1->name (),
 			       v2, t2, 1);
       if (v)
 	return v;
@@ -241,7 +241,7 @@ value_cast_structs (struct type *type, s
   /* Downcasting: look in the type of the target to see if it contains the
      type of the source as a superclass.  If so, we'll need to
      offset the pointer rather than just change its type.  */
-  if (TYPE_NAME (t2) != NULL)
+  if (t2->name () != NULL)
     {
       /* Try downcasting using the run-time type of the value.  */
       int full, using_enc;
@@ -257,11 +257,11 @@ value_cast_structs (struct type *type, s
 
 	  /* We might be trying to cast to the outermost enclosing
 	     type, in which case search_struct_field won't work.  */
-	  if (TYPE_NAME (real_type) != NULL
-	      && !strcmp (TYPE_NAME (real_type), TYPE_NAME (t1)))
+	  if (real_type->name () != NULL
+	      && !strcmp (real_type->name (), t1->name ()))
 	    return v;
 
-	  v = search_struct_field (TYPE_NAME (t2), v, real_type, 1);
+	  v = search_struct_field (t2->name (), v, real_type, 1);
 	  if (v)
 	    return v;
 	}
@@ -269,7 +269,7 @@ value_cast_structs (struct type *type, s
       /* Try downcasting using information from the destination type
 	 T2.  This wouldn't work properly for classes with virtual
 	 bases, but those were handled above.  */
-      v = search_struct_field (TYPE_NAME (t2),
+      v = search_struct_field (t2->name (),
 			       value_zero (t1, not_lval), t1, 1);
       if (v)
 	{
@@ -300,8 +300,8 @@ value_cast_pointers (struct type *type,
   struct type *t1 = check_typedef (TYPE_TARGET_TYPE (type1));
   struct type *t2 = check_typedef (TYPE_TARGET_TYPE (type2));
 
-  if (TYPE_CODE (t1) == TYPE_CODE_STRUCT
-      && TYPE_CODE (t2) == TYPE_CODE_STRUCT
+  if (t1->code () == TYPE_CODE_STRUCT
+      && t2->code () == TYPE_CODE_STRUCT
       && (subclass_check || !value_logical_not (arg2)))
     {
       struct value *v2;
@@ -310,7 +310,7 @@ value_cast_pointers (struct type *type,
 	v2 = coerce_ref (arg2);
       else
 	v2 = value_ind (arg2);
-      gdb_assert (TYPE_CODE (check_typedef (value_type (v2)))
+      gdb_assert (check_typedef (value_type (v2))->code ()
 		  == TYPE_CODE_STRUCT && !!"Why did coercion fail?");
       v2 = value_cast_structs (t1, v2);
       /* At this point we have what we can have, un-dereference if needed.  */
@@ -359,7 +359,7 @@ value_cast (struct type *type, struct va
       struct type *dereftype = check_typedef (TYPE_TARGET_TYPE (t1));
       struct value *val = value_cast (dereftype, arg2);
 
-      return value_ref (val, TYPE_CODE (t1));
+      return value_ref (val, t1->code ());
     }
 
   if (TYPE_IS_REFERENCE (check_typedef (value_type (arg2))))
@@ -372,7 +372,7 @@ value_cast (struct type *type, struct va
   struct type *to_type = type;
 
   type = check_typedef (type);
-  code1 = TYPE_CODE (type);
+  code1 = type->code ();
   arg2 = coerce_ref (arg2);
   type2 = check_typedef (value_type (arg2));
 
@@ -388,13 +388,13 @@ value_cast (struct type *type, struct va
       struct type *element_type = TYPE_TARGET_TYPE (type);
       unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
 
-      if (element_length > 0 && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
+      if (element_length > 0 && type->bounds ()->high.kind () == PROP_UNDEFINED)
 	{
-	  struct type *range_type = TYPE_INDEX_TYPE (type);
+	  struct type *range_type = type->index_type ();
 	  int val_length = TYPE_LENGTH (type2);
 	  LONGEST low_bound, high_bound, new_length;
 
-	  if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
+	  if (!get_discrete_bounds (range_type, &low_bound, &high_bound))
 	    low_bound = 0, high_bound = 0;
 	  new_length = val_length / element_length;
 	  if (val_length % element_length != 0)
@@ -415,15 +415,15 @@ value_cast (struct type *type, struct va
     }
 
   if (current_language->c_style_arrays
-      && TYPE_CODE (type2) == TYPE_CODE_ARRAY
+      && type2->code () == TYPE_CODE_ARRAY
       && !TYPE_VECTOR (type2))
     arg2 = value_coerce_array (arg2);
 
-  if (TYPE_CODE (type2) == TYPE_CODE_FUNC)
+  if (type2->code () == TYPE_CODE_FUNC)
     arg2 = value_coerce_function (arg2);
 
   type2 = check_typedef (value_type (arg2));
-  code2 = TYPE_CODE (type2);
+  code2 = type2->code ();
 
   if (code1 == TYPE_CODE_COMPLEX)
     return cast_into_complex (to_type, arg2);
@@ -443,7 +443,7 @@ value_cast (struct type *type, struct va
 
   if ((code1 == TYPE_CODE_STRUCT || code1 == TYPE_CODE_UNION)
       && (code2 == TYPE_CODE_STRUCT || code2 == TYPE_CODE_UNION)
-      && TYPE_NAME (type) != 0)
+      && type->name () != 0)
     {
       struct value *v = value_cast_structs (to_type, arg2);
 
@@ -590,8 +590,8 @@ value_reinterpret_cast (struct type *typ
 
   arg_type = value_type (arg);
 
-  dest_code = TYPE_CODE (real_type);
-  arg_code = TYPE_CODE (arg_type);
+  dest_code = real_type->code ();
+  arg_code = arg_type->code ();
 
   /* We can convert pointer types, or any pointer type to int, or int
      type to pointer.  */
@@ -611,7 +611,7 @@ value_reinterpret_cast (struct type *typ
 
   if (is_ref)
     result = value_cast (type, value_ref (value_ind (result),
-                                          TYPE_CODE (type)));
+                                          type->code ()));
 
   return result;
 }
@@ -722,24 +722,24 @@ value_dynamic_cast (struct type *type, s
   CORE_ADDR addr;
   int is_ref = TYPE_IS_REFERENCE (resolved_type);
 
-  if (TYPE_CODE (resolved_type) != TYPE_CODE_PTR
+  if (resolved_type->code () != TYPE_CODE_PTR
       && !TYPE_IS_REFERENCE (resolved_type))
     error (_("Argument to dynamic_cast must be a pointer or reference type"));
-  if (TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) != TYPE_CODE_VOID
-      && TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) != TYPE_CODE_STRUCT)
+  if (TYPE_TARGET_TYPE (resolved_type)->code () != TYPE_CODE_VOID
+      && TYPE_TARGET_TYPE (resolved_type)->code () != TYPE_CODE_STRUCT)
     error (_("Argument to dynamic_cast must be pointer to class or `void *'"));
 
   class_type = check_typedef (TYPE_TARGET_TYPE (resolved_type));
-  if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR)
+  if (resolved_type->code () == TYPE_CODE_PTR)
     {
-      if (TYPE_CODE (arg_type) != TYPE_CODE_PTR
-	  && ! (TYPE_CODE (arg_type) == TYPE_CODE_INT
+      if (arg_type->code () != TYPE_CODE_PTR
+	  && ! (arg_type->code () == TYPE_CODE_INT
 		&& value_as_long (arg) == 0))
 	error (_("Argument to dynamic_cast does not have pointer type"));
-      if (TYPE_CODE (arg_type) == TYPE_CODE_PTR)
+      if (arg_type->code () == TYPE_CODE_PTR)
 	{
 	  arg_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
-	  if (TYPE_CODE (arg_type) != TYPE_CODE_STRUCT)
+	  if (arg_type->code () != TYPE_CODE_STRUCT)
 	    error (_("Argument to dynamic_cast does "
 		     "not have pointer to class type"));
 	}
@@ -752,7 +752,7 @@ value_dynamic_cast (struct type *type, s
     }
   else
     {
-      if (TYPE_CODE (arg_type) != TYPE_CODE_STRUCT)
+      if (arg_type->code () != TYPE_CODE_STRUCT)
 	error (_("Argument to dynamic_cast does not have class type"));
     }
 
@@ -786,8 +786,8 @@ value_dynamic_cast (struct type *type, s
 
   /* dynamic_cast<void *> means to return a pointer to the
      most-derived object.  */
-  if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR
-      && TYPE_CODE (TYPE_TARGET_TYPE (resolved_type)) == TYPE_CODE_VOID)
+  if (resolved_type->code () == TYPE_CODE_PTR
+      && TYPE_TARGET_TYPE (resolved_type)->code () == TYPE_CODE_VOID)
     return value_at_lazy (type, addr);
 
   tem = value_at (type, addr);
@@ -808,7 +808,7 @@ value_dynamic_cast (struct type *type, s
 				&result) == 1)
 	return value_cast (type,
 			   is_ref
-			   ? value_ref (result, TYPE_CODE (resolved_type))
+			   ? value_ref (result, resolved_type->code ())
 			   : value_addr (result));
     }
 
@@ -822,10 +822,10 @@ value_dynamic_cast (struct type *type, s
 			       rtti_type, &result) == 1)
     return value_cast (type,
 		       is_ref
-		       ? value_ref (result, TYPE_CODE (resolved_type))
+		       ? value_ref (result, resolved_type->code ())
 		       : value_addr (result));
 
-  if (TYPE_CODE (resolved_type) == TYPE_CODE_PTR)
+  if (resolved_type->code () == TYPE_CODE_PTR)
     return value_zero (type, not_lval);
 
   error (_("dynamic_cast failed"));
@@ -854,7 +854,7 @@ value_one (struct type *type)
     {
       val = value_from_longest (type, (LONGEST) 1);
     }
-  else if (TYPE_CODE (type1) == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
+  else if (type1->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
     {
       struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type1));
       int i;
@@ -893,7 +893,7 @@ get_value_at (struct type *type, CORE_AD
 {
   struct value *val;
 
-  if (TYPE_CODE (check_typedef (type)) == TYPE_CODE_VOID)
+  if (check_typedef (type)->code () == TYPE_CODE_VOID)
     error (_("Attempt to dereference a generic pointer."));
 
   val = value_from_contents_and_address (type, NULL, addr);
@@ -1249,7 +1249,7 @@ value_assign (struct value *toval, struc
      in the case of pointer types.  For object types, the enclosing type
      and embedded offset must *not* be copied: the target object refered
      to by TOVAL retains its original dynamic type after assignment.  */
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  if (type->code () == TYPE_CODE_PTR)
     {
       set_value_enclosing_type (val, value_enclosing_type (fromval));
       set_value_pointed_to_offset (val, value_pointed_to_offset (fromval));
@@ -1306,7 +1306,7 @@ address_of_variable (struct symbol *var,
   type = value_type (val);
 
   if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
-      || TYPE_CODE (type) == TYPE_CODE_FUNC)
+      || type->code () == TYPE_CODE_FUNC)
     {
       CORE_ADDR addr = value_address (val);
 
@@ -1358,7 +1358,7 @@ value_must_coerce_to_target (struct valu
 
   valtype = check_typedef (value_type (val));
 
-  switch (TYPE_CODE (valtype))
+  switch (valtype->code ())
     {
     case TYPE_CODE_ARRAY:
       return TYPE_VECTOR (valtype) ? 0 : 1;
@@ -1478,7 +1478,7 @@ value_addr (struct value *arg1)
 	  return arg2;
 	}
     }
-  if (TYPE_CODE (type) == TYPE_CODE_FUNC)
+  if (type->code () == TYPE_CODE_FUNC)
     return value_coerce_function (arg1);
 
   /* If this is an array that has not yet been pushed to the target,
@@ -1514,9 +1514,9 @@ value_ref (struct value *arg1, enum type
 
   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
 
-  if ((TYPE_CODE (type) == TYPE_CODE_REF
-       || TYPE_CODE (type) == TYPE_CODE_RVALUE_REF)
-      && TYPE_CODE (type) == refcode)
+  if ((type->code () == TYPE_CODE_REF
+       || type->code () == TYPE_CODE_RVALUE_REF)
+      && type->code () == refcode)
     return arg1;
 
   arg2 = value_addr (arg1);
@@ -1550,7 +1550,7 @@ value_ind (struct value *arg1)
 	}
     }
 
-  if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
+  if (base_type->code () == TYPE_CODE_PTR)
     {
       struct type *enc_type;
 
@@ -1559,20 +1559,24 @@ value_ind (struct value *arg1)
       enc_type = check_typedef (value_enclosing_type (arg1));
       enc_type = TYPE_TARGET_TYPE (enc_type);
 
-      if (TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_FUNC
-	  || TYPE_CODE (check_typedef (enc_type)) == TYPE_CODE_METHOD)
-	/* For functions, go through find_function_addr, which knows
-	   how to handle function descriptors.  */
-	arg2 = value_at_lazy (enc_type, 
-			      find_function_addr (arg1, NULL));
-      else
-	/* Retrieve the enclosing object pointed to.  */
-	arg2 = value_at_lazy (enc_type, 
-			      (value_as_address (arg1)
-			       - value_pointed_to_offset (arg1)));
-
+      CORE_ADDR base_addr;
+      if (check_typedef (enc_type)->code () == TYPE_CODE_FUNC
+	  || check_typedef (enc_type)->code () == TYPE_CODE_METHOD)
+	{
+	  /* For functions, go through find_function_addr, which knows
+	     how to handle function descriptors.  */
+	  base_addr = find_function_addr (arg1, NULL);
+	}
+      else
+	{
+	  /* Retrieve the enclosing object pointed to.  */
+	  base_addr = (value_as_address (arg1)
+		       - value_pointed_to_offset (arg1));
+	}
+      arg2 = value_at_lazy (enc_type, base_addr);
       enc_type = value_type (arg2);
-      return readjust_indirect_value_type (arg2, enc_type, base_type, arg1);
+      return readjust_indirect_value_type (arg2, enc_type, base_type,
+					   arg1, base_addr);
     }
 
   error (_("Attempt to take contents of a non-pointer value."));
@@ -1707,7 +1711,7 @@ typecmp (int staticp, int varargs, int n
     t2 ++;
 
   for (i = 0;
-       (i < nargs) && TYPE_CODE (t1[i].type) != TYPE_CODE_VOID;
+       (i < nargs) && t1[i].type ()->code () != TYPE_CODE_VOID;
        i++)
     {
       struct type *tt1, *tt2;
@@ -1715,18 +1719,18 @@ typecmp (int staticp, int varargs, int n
       if (!t2[i])
 	return i + 1;
 
-      tt1 = check_typedef (t1[i].type);
+      tt1 = check_typedef (t1[i].type ());
       tt2 = check_typedef (value_type (t2[i]));
 
       if (TYPE_IS_REFERENCE (tt1)
 	  /* We should be doing hairy argument matching, as below.  */
-	  && (TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (tt1)))
-	      == TYPE_CODE (tt2)))
+	  && (check_typedef (TYPE_TARGET_TYPE (tt1))->code ()
+	      == tt2->code ()))
 	{
-	  if (TYPE_CODE (tt2) == TYPE_CODE_ARRAY)
+	  if (tt2->code () == TYPE_CODE_ARRAY)
 	    t2[i] = value_coerce_array (t2[i]);
 	  else
-	    t2[i] = value_ref (t2[i], TYPE_CODE (tt1));
+	    t2[i] = value_ref (t2[i], tt1->code ());
 	  continue;
 	}
 
@@ -1736,17 +1740,17 @@ typecmp (int staticp, int varargs, int n
 	 char *>, and properly access map["hello"], because the
 	 argument to [] will be a reference to a pointer to a char,
 	 and the argument will be a pointer to a char.  */
-      while (TYPE_IS_REFERENCE (tt1) || TYPE_CODE (tt1) == TYPE_CODE_PTR)
+      while (TYPE_IS_REFERENCE (tt1) || tt1->code () == TYPE_CODE_PTR)
 	{
-	  tt1 = check_typedef( TYPE_TARGET_TYPE(tt1) );
+	  tt1 = check_typedef ( TYPE_TARGET_TYPE (tt1) );
 	}
-      while (TYPE_CODE(tt2) == TYPE_CODE_ARRAY
-	     || TYPE_CODE(tt2) == TYPE_CODE_PTR
+      while (tt2->code () == TYPE_CODE_ARRAY
+	     || tt2->code () == TYPE_CODE_PTR
 	     || TYPE_IS_REFERENCE (tt2))
 	{
-	  tt2 = check_typedef (TYPE_TARGET_TYPE(tt2));
+	  tt2 = check_typedef (TYPE_TARGET_TYPE (tt2));
 	}
-      if (TYPE_CODE (tt1) == TYPE_CODE (tt2))
+      if (tt1->code () == tt2->code ())
 	continue;
       /* Array to pointer is a `trivial conversion' according to the
 	 ARM.  */
@@ -1754,7 +1758,7 @@ typecmp (int staticp, int varargs, int n
       /* We should be doing much hairier argument matching (see
          section 13.2 of the ARM), but as a quick kludge, just check
          for the same type code.  */
-      if (TYPE_CODE (t1[i].type) != TYPE_CODE (value_type (t2[i])))
+      if (t1[i].type ()->code () != value_type (t2[i])->code ())
 	return i + 1;
     }
   if (varargs || t2[i] == NULL)
@@ -1805,7 +1809,7 @@ do_search_struct_field (const char *name
   nbases = TYPE_N_BASECLASSES (type);
 
   if (!looking_for_baseclass)
-    for (i = TYPE_NFIELDS (type) - 1; i >= nbases; i--)
+    for (i = type->num_fields () - 1; i >= nbases; i--)
       {
 	const char *t_field_name = TYPE_FIELD_NAME (type, i);
 
@@ -1813,7 +1817,7 @@ do_search_struct_field (const char *name
 	  {
 	    struct value *v;
 
-	    if (field_is_static (&TYPE_FIELD (type, i)))
+	    if (field_is_static (&type->field (i)))
 	      v = value_static_field (type, i);
 	    else
 	      v = value_primitive_field (arg1, offset, i, type);
@@ -1824,10 +1828,10 @@ do_search_struct_field (const char *name
 	if (t_field_name
 	    && t_field_name[0] == '\0')
 	  {
-	    struct type *field_type = TYPE_FIELD_TYPE (type, i);
+	    struct type *field_type = type->field (i).type ();
 
-	    if (TYPE_CODE (field_type) == TYPE_CODE_UNION
-		|| TYPE_CODE (field_type) == TYPE_CODE_STRUCT)
+	    if (field_type->code () == TYPE_CODE_UNION
+		|| field_type->code () == TYPE_CODE_STRUCT)
 	      {
 		/* Look for a match through the fields of an anonymous
 		   union, or anonymous struct.  C++ provides anonymous
@@ -1850,8 +1854,8 @@ do_search_struct_field (const char *name
 		   from GDB) implementation of variant records, the
 		   bitpos is zero in an anonymous union field, so we
 		   have to add the offset of the union here.  */
-		if (TYPE_CODE (field_type) == TYPE_CODE_STRUCT
-		    || (TYPE_NFIELDS (field_type) > 0
+		if (field_type->code () == TYPE_CODE_STRUCT
+		    || (field_type->num_fields () > 0
 			&& TYPE_FIELD_BITPOS (field_type, 0) == 0))
 		  new_offset += TYPE_FIELD_BITPOS (type, i) / 8;
 
@@ -2007,7 +2011,7 @@ search_struct_method (const char *name,
 	      {
 		if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j),
 			      TYPE_VARARGS (TYPE_FN_FIELD_TYPE (f, j)),
-			      TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, j)),
+			      TYPE_FN_FIELD_TYPE (f, j)->num_fields (),
 			      TYPE_FN_FIELD_ARGS (f, j), args))
 		  {
 		    if (TYPE_FN_FIELD_VIRTUAL_P (f, j))
@@ -2119,17 +2123,17 @@ value_struct_elt (struct value **argp, s
 
   /* Follow pointers until we get to a non-pointer.  */
 
-  while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
+  while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
     {
       *argp = value_ind (*argp);
       /* Don't coerce fn pointer to fn and then back again!  */
-      if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
+      if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
 	*argp = coerce_array (*argp);
       t = check_typedef (value_type (*argp));
     }
 
-  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
-      && TYPE_CODE (t) != TYPE_CODE_UNION)
+  if (t->code () != TYPE_CODE_STRUCT
+      && t->code () != TYPE_CODE_UNION)
     error (_("Attempt to extract a component of a value that is not a %s."),
 	   err);
 
@@ -2206,24 +2210,24 @@ value_struct_elt_bitpos (struct value **
 
   t = check_typedef (value_type (*argp));
 
-  while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
+  while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
     {
       *argp = value_ind (*argp);
-      if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
+      if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
 	*argp = coerce_array (*argp);
       t = check_typedef (value_type (*argp));
     }
 
-  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
-      && TYPE_CODE (t) != TYPE_CODE_UNION)
+  if (t->code () != TYPE_CODE_STRUCT
+      && t->code () != TYPE_CODE_UNION)
     error (_("Attempt to extract a component of a value that is not a %s."),
 	   err);
 
-  for (i = TYPE_N_BASECLASSES (t); i < TYPE_NFIELDS (t); i++)
+  for (i = TYPE_N_BASECLASSES (t); i < t->num_fields (); i++)
     {
-      if (!field_is_static (&TYPE_FIELD (t, i))
+      if (!field_is_static (&t->field (i))
 	  && bitpos == TYPE_FIELD_BITPOS (t, i)
-	  && types_equal (ftype, TYPE_FIELD_TYPE (t, i)))
+	  && types_equal (ftype, t->field (i).type ()))
 	return value_primitive_field (*argp, 0, i, t);
     }
 
@@ -2233,50 +2237,6 @@ value_struct_elt_bitpos (struct value **
   return NULL;
 }
 
-/* See value.h.  */
-
-int
-value_union_variant (struct type *union_type, const gdb_byte *contents)
-{
-  gdb_assert (TYPE_CODE (union_type) == TYPE_CODE_UNION
-	      && TYPE_FLAG_DISCRIMINATED_UNION (union_type));
-
-  struct dynamic_prop *discriminant_prop
-    = get_dyn_prop (DYN_PROP_DISCRIMINATED, union_type);
-  gdb_assert (discriminant_prop != nullptr);
-
-  struct discriminant_info *info
-    = (struct discriminant_info *) discriminant_prop->data.baton;
-  gdb_assert (info != nullptr);
-
-  /* If this is a univariant union, just return the sole field.  */
-  if (TYPE_NFIELDS (union_type) == 1)
-    return 0;
-  /* This should only happen for univariants, which we already dealt
-     with.  */
-  gdb_assert (info->discriminant_index != -1);
-
-  /* Compute the discriminant.  Note that unpack_field_as_long handles
-     sign extension when necessary, as does the DWARF reader -- so
-     signed discriminants will be handled correctly despite the use of
-     an unsigned type here.  */
-  ULONGEST discriminant = unpack_field_as_long (union_type, contents,
-						info->discriminant_index);
-
-  for (int i = 0; i < TYPE_NFIELDS (union_type); ++i)
-    {
-      if (i != info->default_index
-	  && i != info->discriminant_index
-	  && discriminant == info->discriminants[i])
-	return i;
-    }
-
-  if (info->default_index == -1)
-    error (_("Could not find variant corresponding to discriminant %s"),
-	   pulongest (discriminant));
-  return info->default_index;
-}
-
 /* Search through the methods of an object (and its bases) to find a
    specified method.  Return a reference to the fn_field list METHODS of
    overloaded instances defined in the source language.  If available
@@ -2403,17 +2363,17 @@ value_find_oload_method_list (struct val
   t = check_typedef (value_type (*argp));
 
   /* Code snarfed from value_struct_elt.  */
-  while (TYPE_CODE (t) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
+  while (t->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (t))
     {
       *argp = value_ind (*argp);
       /* Don't coerce fn pointer to fn and then back again!  */
-      if (TYPE_CODE (check_typedef (value_type (*argp))) != TYPE_CODE_FUNC)
+      if (check_typedef (value_type (*argp))->code () != TYPE_CODE_FUNC)
 	*argp = coerce_array (*argp);
       t = check_typedef (value_type (*argp));
     }
 
-  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
-      && TYPE_CODE (t) != TYPE_CODE_UNION)
+  if (t->code () != TYPE_CODE_STRUCT
+      && t->code () != TYPE_CODE_UNION)
     error (_("Attempt to extract a component of a "
 	     "value that is not a struct or union"));
 
@@ -2521,13 +2481,13 @@ find_overload_match (gdb::array_view<val
 
       /* OBJ may be a pointer value rather than the object itself.  */
       obj = coerce_ref (obj);
-      while (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_PTR)
+      while (check_typedef (value_type (obj))->code () == TYPE_CODE_PTR)
 	obj = coerce_ref (value_ind (obj));
-      obj_type_name = TYPE_NAME (value_type (obj));
+      obj_type_name = value_type (obj)->name ();
 
       /* First check whether this is a data member, e.g. a pointer to
 	 a function.  */
-      if (TYPE_CODE (check_typedef (value_type (obj))) == TYPE_CODE_STRUCT)
+      if (check_typedef (value_type (obj))->code () == TYPE_CODE_STRUCT)
 	{
 	  *valp = search_struct_field (name, obj,
 				       check_typedef (value_type (obj)), 0);
@@ -2650,8 +2610,8 @@ find_overload_match (gdb::array_view<val
 	     the function part.  Do not try this for non-functions (e.g.
 	     function pointers).  */
           if (qualified_name
-              && TYPE_CODE (check_typedef (SYMBOL_TYPE (fsym)))
-	      == TYPE_CODE_FUNC)
+              && (check_typedef (SYMBOL_TYPE (fsym))->code ()
+		  == TYPE_CODE_FUNC))
             {
 	      temp_func = cp_func_name (qualified_name);
 
@@ -2796,8 +2756,8 @@ find_overload_match (gdb::array_view<val
       struct type *temp_type = check_typedef (value_type (temp));
       struct type *objtype = check_typedef (obj_type);
 
-      if (TYPE_CODE (temp_type) != TYPE_CODE_PTR
-	  && (TYPE_CODE (objtype) == TYPE_CODE_PTR
+      if (temp_type->code () != TYPE_CODE_PTR
+	  && (objtype->code () == TYPE_CODE_PTR
 	      || TYPE_IS_REFERENCE (objtype)))
 	{
 	  temp = value_addr (temp);
@@ -3001,19 +2961,18 @@ find_oload_champ (gdb::array_view<value
 
 	  if (methods != NULL)
 	    {
-	      nparms = TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (methods, ix));
+	      nparms = TYPE_FN_FIELD_TYPE (methods, ix)->num_fields ();
 	      static_offset = oload_method_static_p (methods, ix);
 	    }
 	  else
-	    nparms = TYPE_NFIELDS (SYMBOL_TYPE (functions[ix]));
+	    nparms = SYMBOL_TYPE (functions[ix])->num_fields ();
 
 	  parm_types.reserve (nparms);
 	  for (jj = 0; jj < nparms; jj++)
 	    {
 	      type *t = (methods != NULL
-			 ? (TYPE_FN_FIELD_ARGS (methods, ix)[jj].type)
-			 : TYPE_FIELD_TYPE (SYMBOL_TYPE (functions[ix]),
-					    jj));
+			 ? (TYPE_FN_FIELD_ARGS (methods, ix)[jj].type ())
+			 : SYMBOL_TYPE (functions[ix])->field (jj).type ());
 	      parm_types.push_back (t);
 	    }
 	}
@@ -3162,10 +3121,10 @@ enum_constant_from_type (struct type *ty
   int i;
   int name_len = strlen (name);
 
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_ENUM
+  gdb_assert (type->code () == TYPE_CODE_ENUM
 	      && TYPE_DECLARED_CLASS (type));
 
-  for (i = TYPE_N_BASECLASSES (type); i < TYPE_NFIELDS (type); ++i)
+  for (i = TYPE_N_BASECLASSES (type); i < type->num_fields (); ++i)
     {
       const char *fname = TYPE_FIELD_NAME (type, i);
       int len;
@@ -3185,7 +3144,7 @@ enum_constant_from_type (struct type *ty
     }
 
   error (_("no constant named \"%s\" in enum \"%s\""),
-	 name, TYPE_NAME (type));
+	 name, type->name ());
 }
 
 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
@@ -3199,7 +3158,7 @@ value_aggregate_elt (struct type *curtyp
 		     struct type *expect_type, int want_address,
 		     enum noside noside)
 {
-  switch (TYPE_CODE (curtype))
+  switch (curtype->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
@@ -3233,14 +3192,14 @@ compare_parameters (struct type *t1, str
 {
   int start = 0;
 
-  if (TYPE_NFIELDS (t1) > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0))
+  if (t1->num_fields () > 0 && TYPE_FIELD_ARTIFICIAL (t1, 0))
     ++start;
 
   /* If skipping artificial fields, find the first real field
      in T1.  */
   if (skip_artificial)
     {
-      while (start < TYPE_NFIELDS (t1)
+      while (start < t1->num_fields ()
 	     && TYPE_FIELD_ARTIFICIAL (t1, start))
 	++start;
     }
@@ -3249,18 +3208,18 @@ compare_parameters (struct type *t1, str
 
   /* Special case: a method taking void.  T1 will contain no
      non-artificial fields, and T2 will contain TYPE_CODE_VOID.  */
-  if ((TYPE_NFIELDS (t1) - start) == 0 && TYPE_NFIELDS (t2) == 1
-      && TYPE_CODE (TYPE_FIELD_TYPE (t2, 0)) == TYPE_CODE_VOID)
+  if ((t1->num_fields () - start) == 0 && t2->num_fields () == 1
+      && t2->field (0).type ()->code () == TYPE_CODE_VOID)
     return 1;
 
-  if ((TYPE_NFIELDS (t1) - start) == TYPE_NFIELDS (t2))
+  if ((t1->num_fields () - start) == t2->num_fields ())
     {
       int i;
 
-      for (i = 0; i < TYPE_NFIELDS (t2); ++i)
+      for (i = 0; i < t2->num_fields (); ++i)
 	{
-	  if (compare_ranks (rank_one_type (TYPE_FIELD_TYPE (t1, start + i),
-					    TYPE_FIELD_TYPE (t2, i), NULL),
+	  if (compare_ranks (rank_one_type (t1->field (start + i).type (),
+					    t2->field (i).type (), NULL),
 	                     EXACT_MATCH_BADNESS) != 0)
 	    return 0;
 	}
@@ -3284,7 +3243,7 @@ get_baseclass_offset (struct type *vt, s
 {
   for (int i = 0; i < TYPE_N_BASECLASSES (vt); i++)
     {
-      struct type *t = TYPE_FIELD_TYPE (vt, i);
+      struct type *t = vt->field (i).type ();
       if (types_equal (t, cls))
         {
           if (BASETYPE_VIA_VIRTUAL (vt, i))
@@ -3332,18 +3291,18 @@ value_struct_elt_for_reference (struct t
   int i;
   struct value *result;
 
-  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
-      && TYPE_CODE (t) != TYPE_CODE_UNION)
+  if (t->code () != TYPE_CODE_STRUCT
+      && t->code () != TYPE_CODE_UNION)
     error (_("Internal error: non-aggregate type "
 	     "to value_struct_elt_for_reference"));
 
-  for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); i--)
+  for (i = t->num_fields () - 1; i >= TYPE_N_BASECLASSES (t); i--)
     {
       const char *t_field_name = TYPE_FIELD_NAME (t, i);
 
       if (t_field_name && strcmp (t_field_name, name) == 0)
 	{
-	  if (field_is_static (&TYPE_FIELD (t, i)))
+	  if (field_is_static (&t->field (i)))
 	    {
 	      struct value *v = value_static_field (t, i);
 	      if (want_address)
@@ -3355,10 +3314,10 @@ value_struct_elt_for_reference (struct t
 
 	  if (want_address)
 	    return value_from_longest
-	      (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
+	      (lookup_memberptr_type (t->field (i).type (), domain),
 	       offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
 	  else if (noside != EVAL_NORMAL)
-	    return allocate_value (TYPE_FIELD_TYPE (t, i));
+	    return allocate_value (t->field (i).type ());
 	  else
 	    {
 	      /* Try to evaluate NAME as a qualified name with implicit
@@ -3374,7 +3333,7 @@ value_struct_elt_for_reference (struct t
 		  ptr = value_aggregate_elt (domain, name, NULL, 1, noside);
 		  type = check_typedef (value_type (ptr));
 		  gdb_assert (type != NULL
-			      && TYPE_CODE (type) == TYPE_CODE_MEMBERPTR);
+			      && type->code () == TYPE_CODE_MEMBERPTR);
 		  tmp = lookup_pointer_type (TYPE_SELF_TYPE (type));
 		  v = value_cast_pointers (tmp, v, 1);
 		  mem_offset = value_as_long (ptr);
@@ -3411,7 +3370,7 @@ value_struct_elt_for_reference (struct t
      as a pointer to a method.  */
 
   /* Perform all necessary dereferencing.  */
-  while (intype && TYPE_CODE (intype) == TYPE_CODE_PTR)
+  while (intype && intype->code () == TYPE_CODE_PTR)
     intype = TYPE_TARGET_TYPE (intype);
 
   for (i = TYPE_NFN_FIELDS (t) - 1; i >= 0; --i)
@@ -3572,7 +3531,7 @@ value_namespace_elt (const struct type *
 
   if (retval == NULL)
     error (_("No symbol \"%s\" in namespace \"%s\"."), 
-	   name, TYPE_NAME (curtype));
+	   name, curtype->name ());
 
   return retval;
 }
@@ -3588,7 +3547,7 @@ value_maybe_namespace_elt (const struct
 			   const char *name, int want_address,
 			   enum noside noside)
 {
-  const char *namespace_name = TYPE_NAME (curtype);
+  const char *namespace_name = curtype->name ();
   struct block_symbol sym;
   struct value *result;
 
@@ -3625,7 +3584,7 @@ value_rtti_indirect_type (struct value *
   type = check_typedef (type);
   if (TYPE_IS_REFERENCE (type))
     target = coerce_ref (v);
-  else if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  else if (type->code () == TYPE_CODE_PTR)
     {
 
       try
@@ -3656,8 +3615,8 @@ value_rtti_indirect_type (struct value *
       real_type = make_cv_type (TYPE_CONST (target_type),
 				TYPE_VOLATILE (target_type), real_type, NULL);
       if (TYPE_IS_REFERENCE (type))
-        real_type = lookup_reference_type (real_type, TYPE_CODE (type));
-      else if (TYPE_CODE (type) == TYPE_CODE_PTR)
+        real_type = lookup_reference_type (real_type, type->code ());
+      else if (type->code () == TYPE_CODE_PTR)
         real_type = lookup_pointer_type (real_type);
       else
         internal_error (__FILE__, __LINE__, _("Unexpected value type."));
@@ -3728,7 +3687,7 @@ value_full_object (struct value *argp,
     {
       warning (_("Couldn't retrieve complete object of RTTI "
 		 "type %s; object may be in register(s)."), 
-	       TYPE_NAME (real_type));
+	       real_type->name ());
 
       return argp;
     }
@@ -3804,8 +3763,8 @@ value_slice (struct value *array, int lo
   struct type *array_type;
 
   array_type = check_typedef (value_type (array));
-  if (TYPE_CODE (array_type) != TYPE_CODE_ARRAY
-      && TYPE_CODE (array_type) != TYPE_CODE_STRING)
+  if (array_type->code () != TYPE_CODE_ARRAY
+      && array_type->code () != TYPE_CODE_STRING)
     error (_("cannot take slice of non-array"));
 
   if (type_not_allocated (array_type))
@@ -3813,8 +3772,8 @@ value_slice (struct value *array, int lo
   if (type_not_associated (array_type))
     error (_("array not associated"));
 
-  range_type = TYPE_INDEX_TYPE (array_type);
-  if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
+  range_type = array_type->index_type ();
+  if (!get_discrete_bounds (range_type, &lowerbound, &upperbound))
     error (_("slice from bad array or bitstring"));
 
   if (lowbound < lowerbound || length < 0
@@ -3836,7 +3795,7 @@ value_slice (struct value *array, int lo
     slice_type = create_array_type (NULL,
 				    element_type,
 				    slice_range_type);
-    TYPE_CODE (slice_type) = TYPE_CODE (array_type);
+    slice_type->set_code (array_type->code ());
 
     if (VALUE_LVAL (array) == lval_memory && value_lazy (array))
       slice = allocate_value_lazy (slice_type);
@@ -3854,14 +3813,10 @@ value_slice (struct value *array, int lo
   return slice;
 }
 
-/* Create a value for a FORTRAN complex number.  Currently most of the
-   time values are coerced to COMPLEX*16 (i.e. a complex number
-   composed of 2 doubles.  This really should be a smarter routine
-   that figures out precision intelligently as opposed to assuming
-   doubles.  FIXME: fmb  */
+/* See value.h.  */
 
 struct value *
-value_literal_complex (struct value *arg1, 
+value_literal_complex (struct value *arg1,
 		       struct value *arg2,
 		       struct type *type)
 {
@@ -3879,6 +3834,31 @@ value_literal_complex (struct value *arg
   return val;
 }
 
+/* See value.h.  */
+
+struct value *
+value_real_part (struct value *value)
+{
+  struct type *type = check_typedef (value_type (value));
+  struct type *ttype = TYPE_TARGET_TYPE (type);
+
+  gdb_assert (type->code () == TYPE_CODE_COMPLEX);
+  return value_from_component (value, ttype, 0);
+}
+
+/* See value.h.  */
+
+struct value *
+value_imaginary_part (struct value *value)
+{
+  struct type *type = check_typedef (value_type (value));
+  struct type *ttype = TYPE_TARGET_TYPE (type);
+
+  gdb_assert (type->code () == TYPE_CODE_COMPLEX);
+  return value_from_component (value, ttype,
+			       TYPE_LENGTH (check_typedef (ttype)));
+}
+
 /* Cast a value into the appropriate complex data type.  */
 
 static struct value *
@@ -3886,7 +3866,7 @@ cast_into_complex (struct type *type, st
 {
   struct type *real_type = TYPE_TARGET_TYPE (type);
 
-  if (TYPE_CODE (value_type (val)) == TYPE_CODE_COMPLEX)
+  if (value_type (val)->code () == TYPE_CODE_COMPLEX)
     {
       struct type *val_real_type = TYPE_TARGET_TYPE (value_type (val));
       struct value *re_val = allocate_value (val_real_type);
@@ -3900,8 +3880,8 @@ cast_into_complex (struct type *type, st
 
       return value_literal_complex (re_val, im_val, type);
     }
-  else if (TYPE_CODE (value_type (val)) == TYPE_CODE_FLT
-	   || TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
+  else if (value_type (val)->code () == TYPE_CODE_FLT
+	   || value_type (val)->code () == TYPE_CODE_INT)
     return value_literal_complex (val, 
 				  value_zero (real_type, not_lval), 
 				  type);
@@ -3909,8 +3889,9 @@ cast_into_complex (struct type *type, st
     error (_("cannot cast non-number to complex"));
 }
 
+void _initialize_valops ();
 void
-_initialize_valops (void)
+_initialize_valops ()
 {
   add_setshow_boolean_cmd ("overload-resolution", class_support,
 			   &overload_resolution, _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/valprint.c ./gdb/valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/valprint.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/valprint.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Print values for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -39,6 +39,7 @@
 #include "cli/cli-option.h"
 #include "gdbarch.h"
 #include "cli/cli-style.h"
+#include "count-one-bits.h"
 
 /* Maximum number of wchars returned from wchar_iterate.  */
 #define MAX_WCHARS 4
@@ -87,7 +88,8 @@ static void set_input_radix_1 (int, unsi
 static void set_output_radix_1 (int, unsigned);
 
 static void val_print_type_code_flags (struct type *type,
-				       const gdb_byte *valaddr,
+				       struct value *original_value,
+				       int embedded_offset,
 				       struct ui_file *stream);
 
 #define PRINT_MAX_DEFAULT 200	/* Start print_max off at this value.  */
@@ -274,7 +276,7 @@ val_print_scalar_type_p (struct type *ty
       type = TYPE_TARGET_TYPE (type);
       type = check_typedef (type);
     }
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
     case TYPE_CODE_STRUCT:
@@ -296,10 +298,10 @@ val_print_scalar_or_string_type_p (struc
 				   const struct language_defn *language)
 {
   return (val_print_scalar_type_p (type)
-	  || language->la_is_string_type_p (type));
+	  || language->is_string_type_p (type));
 }
 
-/* See its definition in value.h.  */
+/* See valprint.h.  */
 
 int
 valprint_check_validity (struct ui_file *stream,
@@ -321,9 +323,9 @@ valprint_check_validity (struct ui_file
       return 0;
     }
 
-  if (TYPE_CODE (type) != TYPE_CODE_UNION
-      && TYPE_CODE (type) != TYPE_CODE_STRUCT
-      && TYPE_CODE (type) != TYPE_CODE_ARRAY)
+  if (type->code () != TYPE_CODE_UNION
+      && type->code () != TYPE_CODE_STRUCT
+      && type->code () != TYPE_CODE_ARRAY)
     {
       if (value_bits_any_optimized_out (val,
 					TARGET_CHAR_BIT * embedded_offset,
@@ -336,7 +338,7 @@ valprint_check_validity (struct ui_file
       if (value_bits_synthetic_pointer (val, TARGET_CHAR_BIT * embedded_offset,
 					TARGET_CHAR_BIT * TYPE_LENGTH (type)))
 	{
-	  const int is_ref = TYPE_CODE (type) == TYPE_CODE_REF;
+	  const int is_ref = type->code () == TYPE_CODE_REF;
 	  int ref_is_addressable = 0;
 
 	  if (is_ref)
@@ -406,7 +408,7 @@ print_unpacked_pointer (struct type *typ
 {
   struct gdbarch *gdbarch = get_type_arch (type);
 
-  if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
+  if (elttype->code () == TYPE_CODE_FUNC)
     {
       /* Try to print what function it points to.  */
       print_function_pointer_address (options, gdbarch, address, stream);
@@ -422,14 +424,13 @@ print_unpacked_pointer (struct type *typ
 /* generic_val_print helper for TYPE_CODE_ARRAY.  */
 
 static void
-generic_val_print_array (struct type *type,
-			 int embedded_offset, CORE_ADDR address,
+generic_val_print_array (struct value *val,
 			 struct ui_file *stream, int recurse,
-			 struct value *original_value,
 			 const struct value_print_options *options,
 			 const struct
 			     generic_val_print_decorations *decorations)
 {
+  struct type *type = check_typedef (value_type (val));
   struct type *unresolved_elttype = TYPE_TARGET_TYPE (type);
   struct type *elttype = check_typedef (unresolved_elttype);
 
@@ -440,67 +441,40 @@ generic_val_print_array (struct type *ty
       if (!get_array_bounds (type, &low_bound, &high_bound))
 	error (_("Could not determine the array high bound"));
 
-      if (options->prettyformat_arrays)
-	{
-	  print_spaces_filtered (2 + 2 * recurse, stream);
-	}
-
       fputs_filtered (decorations->array_start, stream);
-      val_print_array_elements (type, embedded_offset,
-				address, stream,
-				recurse, original_value, options, 0);
+      value_print_array_elements (val, stream, recurse, options, 0);
       fputs_filtered (decorations->array_end, stream);
     }
   else
     {
       /* Array of unspecified length: treat like pointer to first elt.  */
-      print_unpacked_pointer (type, elttype, address + embedded_offset, stream,
-			      options);
+      print_unpacked_pointer (type, elttype, value_address (val),
+			      stream, options);
     }
 
 }
 
-/* generic_val_print helper for TYPE_CODE_PTR.  */
+/* generic_value_print helper for TYPE_CODE_PTR.  */
 
 static void
-generic_val_print_ptr (struct type *type,
-		       int embedded_offset, struct ui_file *stream,
-		       struct value *original_value,
-		       const struct value_print_options *options)
+generic_value_print_ptr (struct value *val, struct ui_file *stream,
+			 const struct value_print_options *options)
 {
-  struct gdbarch *gdbarch = get_type_arch (type);
-  int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
 
   if (options->format && options->format != 's')
-    {
-      val_print_scalar_formatted (type, embedded_offset,
-				  original_value, options, 0, stream);
-    }
+    value_print_scalar_formatted (val, options, 0, stream);
   else
     {
-      struct type *unresolved_elttype = TYPE_TARGET_TYPE(type);
-      struct type *elttype = check_typedef (unresolved_elttype);
-      const gdb_byte *valaddr = value_contents_for_printing (original_value);
-      CORE_ADDR addr = unpack_pointer (type,
-				       valaddr + embedded_offset * unit_size);
+      struct type *type = check_typedef (value_type (val));
+      struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type));
+      const gdb_byte *valaddr = value_contents_for_printing (val);
+      CORE_ADDR addr = unpack_pointer (type, valaddr);
 
       print_unpacked_pointer (type, elttype, addr, stream, options);
     }
 }
 
 
-/* generic_val_print helper for TYPE_CODE_MEMBERPTR.  */
-
-static void
-generic_val_print_memberptr (struct type *type,
-			     int embedded_offset, struct ui_file *stream,
-			     struct value *original_value,
-			     const struct value_print_options *options)
-{
-  val_print_scalar_formatted (type, embedded_offset,
-			      original_value, options, 0, stream);
-}
-
 /* Print '@' followed by the address contained in ADDRESS_BUFFER.  */
 
 static void
@@ -553,7 +527,7 @@ generic_val_print_ref (struct type *type
 				    TARGET_CHAR_BIT * TYPE_LENGTH (type));
   const int must_coerce_ref = ((options->addressprint && value_is_synthetic)
 			       || options->deref_ref);
-  const int type_is_defined = TYPE_CODE (elttype) != TYPE_CODE_UNDEF;
+  const int type_is_defined = elttype->code () != TYPE_CODE_UNDEF;
   const gdb_byte *valaddr = value_contents_for_printing (original_value);
 
   if (must_coerce_ref && type_is_defined)
@@ -613,7 +587,7 @@ generic_val_print_enum_1 (struct type *t
   unsigned int i;
   unsigned int len;
 
-  len = TYPE_NFIELDS (type);
+  len = type->num_fields ();
   for (i = 0; i < len; i++)
     {
       QUIT;
@@ -624,40 +598,65 @@ generic_val_print_enum_1 (struct type *t
     }
   if (i < len)
     {
-      fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+      fputs_styled (TYPE_FIELD_NAME (type, i), variable_name_style.style (),
+		    stream);
     }
   else if (TYPE_FLAG_ENUM (type))
     {
       int first = 1;
 
-      /* We have a "flag" enum, so we try to decompose it into
-	 pieces as appropriate.  A flag enum has disjoint
-	 constants by definition.  */
-      fputs_filtered ("(", stream);
+      /* We have a "flag" enum, so we try to decompose it into pieces as
+	 appropriate.  The enum may have multiple enumerators representing
+	 the same bit, in which case we choose to only print the first one
+	 we find.  */
       for (i = 0; i < len; ++i)
 	{
 	  QUIT;
 
-	  if ((val & TYPE_FIELD_ENUMVAL (type, i)) != 0)
+	  ULONGEST enumval = TYPE_FIELD_ENUMVAL (type, i);
+	  int nbits = count_one_bits_ll (enumval);
+
+	  gdb_assert (nbits == 0 || nbits == 1);
+
+	  if ((val & enumval) != 0)
 	    {
-	      if (!first)
+	      if (first)
+		{
+		  fputs_filtered ("(", stream);
+		  first = 0;
+		}
+	      else
 		fputs_filtered (" | ", stream);
-	      first = 0;
 
 	      val &= ~TYPE_FIELD_ENUMVAL (type, i);
-	      fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+	      fputs_styled (TYPE_FIELD_NAME (type, i),
+			    variable_name_style.style (), stream);
 	    }
 	}
 
-      if (first || val != 0)
+      if (val != 0)
 	{
-	  if (!first)
+	  /* There are leftover bits, print them.  */
+	  if (first)
+	    fputs_filtered ("(", stream);
+	  else
 	    fputs_filtered (" | ", stream);
-	  fputs_filtered ("unknown: ", stream);
-	  print_longest (stream, 'd', 0, val);
-	}
 
-      fputs_filtered (")", stream);
+	  fputs_filtered ("unknown: 0x", stream);
+	  print_longest (stream, 'x', 0, val);
+	  fputs_filtered (")", stream);
+	}
+      else if (first)
+	{
+	  /* Nothing has been printed and the value is 0, the enum value must
+	     have been 0.  */
+	  fputs_filtered ("0", stream);
+	}
+      else
+	{
+	  /* Something has been printed, close the parenthesis.  */
+	  fputs_filtered (")", stream);
+	}
     }
   else
     print_longest (stream, 'd', 0, val);
@@ -675,39 +674,13 @@ generic_val_print_enum (struct type *typ
   struct gdbarch *gdbarch = get_type_arch (type);
   int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
 
-  if (options->format)
-    {
-      val_print_scalar_formatted (type, embedded_offset,
-				  original_value, options, 0, stream);
-    }
-  else
-    {
-      const gdb_byte *valaddr = value_contents_for_printing (original_value);
-
-      val = unpack_long (type, valaddr + embedded_offset * unit_size);
-
-      generic_val_print_enum_1 (type, val, stream);
-    }
-}
-
-/* generic_val_print helper for TYPE_CODE_FLAGS.  */
+  gdb_assert (!options->format);
 
-static void
-generic_val_print_flags (struct type *type,
-			 int embedded_offset, struct ui_file *stream,
-			 struct value *original_value,
-			 const struct value_print_options *options)
+  const gdb_byte *valaddr = value_contents_for_printing (original_value);
 
-{
-  if (options->format)
-    val_print_scalar_formatted (type, embedded_offset, original_value,
-				options, 0, stream);
-  else
-    {
-      const gdb_byte *valaddr = value_contents_for_printing (original_value);
+  val = unpack_long (type, valaddr + embedded_offset * unit_size);
 
-      val_print_type_code_flags (type, valaddr + embedded_offset, stream);
-    }
+  generic_val_print_enum_1 (type, val, stream);
 }
 
 /* generic_val_print helper for TYPE_CODE_FUNC and TYPE_CODE_METHOD.  */
@@ -721,50 +694,38 @@ generic_val_print_func (struct type *typ
 {
   struct gdbarch *gdbarch = get_type_arch (type);
 
-  if (options->format)
-    {
-      val_print_scalar_formatted (type, embedded_offset,
-				  original_value, options, 0, stream);
-    }
-  else
-    {
-      /* FIXME, we should consider, at least for ANSI C language,
-         eliminating the distinction made between FUNCs and POINTERs
-         to FUNCs.  */
-      fprintf_filtered (stream, "{");
-      type_print (type, "", stream, -1);
-      fprintf_filtered (stream, "} ");
-      /* Try to print what function it points to, and its address.  */
-      print_address_demangle (options, gdbarch, address, stream, demangle);
-    }
+  gdb_assert (!options->format);
+
+  /* FIXME, we should consider, at least for ANSI C language,
+     eliminating the distinction made between FUNCs and POINTERs to
+     FUNCs.  */
+  fprintf_filtered (stream, "{");
+  type_print (type, "", stream, -1);
+  fprintf_filtered (stream, "} ");
+  /* Try to print what function it points to, and its address.  */
+  print_address_demangle (options, gdbarch, address, stream, demangle);
 }
 
-/* generic_val_print helper for TYPE_CODE_BOOL.  */
+/* generic_value_print helper for TYPE_CODE_BOOL.  */
 
 static void
-generic_val_print_bool (struct type *type,
-			int embedded_offset, struct ui_file *stream,
-			struct value *original_value,
-			const struct value_print_options *options,
-			const struct generic_val_print_decorations *decorations)
+generic_value_print_bool
+  (struct value *value, struct ui_file *stream,
+   const struct value_print_options *options,
+   const struct generic_val_print_decorations *decorations)
 {
-  LONGEST val;
-  struct gdbarch *gdbarch = get_type_arch (type);
-  int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
-
   if (options->format || options->output_format)
     {
       struct value_print_options opts = *options;
       opts.format = (options->format ? options->format
 		     : options->output_format);
-      val_print_scalar_formatted (type, embedded_offset,
-				  original_value, &opts, 0, stream);
+      value_print_scalar_formatted (value, &opts, 0, stream);
     }
   else
     {
-      const gdb_byte *valaddr = value_contents_for_printing (original_value);
-
-      val = unpack_long (type, valaddr + embedded_offset * unit_size);
+      const gdb_byte *valaddr = value_contents_for_printing (value);
+      struct type *type = check_typedef (value_type (value));
+      LONGEST val = unpack_long (type, valaddr);
       if (val == 0)
 	fputs_filtered (decorations->false_name, stream);
       else if (val == 1)
@@ -774,49 +735,40 @@ generic_val_print_bool (struct type *typ
     }
 }
 
-/* generic_val_print helper for TYPE_CODE_INT.  */
+/* generic_value_print helper for TYPE_CODE_INT.  */
 
 static void
-generic_val_print_int (struct type *type,
-		       int embedded_offset, struct ui_file *stream,
-		       struct value *original_value,
-		       const struct value_print_options *options)
+generic_value_print_int (struct value *val, struct ui_file *stream,
+			 const struct value_print_options *options)
 {
   struct value_print_options opts = *options;
 
   opts.format = (options->format ? options->format
 		 : options->output_format);
-  val_print_scalar_formatted (type, embedded_offset,
-			      original_value, &opts, 0, stream);
+  value_print_scalar_formatted (val, &opts, 0, stream);
 }
 
-/* generic_val_print helper for TYPE_CODE_CHAR.  */
+/* generic_value_print helper for TYPE_CODE_CHAR.  */
 
 static void
-generic_val_print_char (struct type *type, struct type *unresolved_type,
-			int embedded_offset,
-			struct ui_file *stream,
-			struct value *original_value,
-			const struct value_print_options *options)
+generic_value_print_char (struct value *value, struct ui_file *stream,
+			  const struct value_print_options *options)
 {
-  LONGEST val;
-  struct gdbarch *gdbarch = get_type_arch (type);
-  int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
-
   if (options->format || options->output_format)
     {
       struct value_print_options opts = *options;
 
       opts.format = (options->format ? options->format
 		     : options->output_format);
-      val_print_scalar_formatted (type, embedded_offset,
-				  original_value, &opts, 0, stream);
+      value_print_scalar_formatted (value, &opts, 0, stream);
     }
   else
     {
-      const gdb_byte *valaddr = value_contents_for_printing (original_value);
+      struct type *unresolved_type = value_type (value);
+      struct type *type = check_typedef (unresolved_type);
+      const gdb_byte *valaddr = value_contents_for_printing (value);
 
-      val = unpack_long (type, valaddr + embedded_offset * unit_size);
+      LONGEST val = unpack_long (type, valaddr);
       if (TYPE_UNSIGNED (type))
 	fprintf_filtered (stream, "%u", (unsigned int) val);
       else
@@ -829,126 +781,91 @@ generic_val_print_char (struct type *typ
 /* generic_val_print helper for TYPE_CODE_FLT and TYPE_CODE_DECFLOAT.  */
 
 static void
-generic_val_print_float (struct type *type,
-			 int embedded_offset, struct ui_file *stream,
+generic_val_print_float (struct type *type, struct ui_file *stream,
 			 struct value *original_value,
 			 const struct value_print_options *options)
 {
-  struct gdbarch *gdbarch = get_type_arch (type);
-  int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
+  gdb_assert (!options->format);
 
-  if (options->format)
-    {
-      val_print_scalar_formatted (type, embedded_offset,
-				  original_value, options, 0, stream);
-    }
-  else
-    {
-      const gdb_byte *valaddr = value_contents_for_printing (original_value);
+  const gdb_byte *valaddr = value_contents_for_printing (original_value);
 
-      print_floating (valaddr + embedded_offset * unit_size, type, stream);
-    }
+  print_floating (valaddr, type, stream);
 }
 
-/* generic_val_print helper for TYPE_CODE_COMPLEX.  */
+/* generic_value_print helper for TYPE_CODE_COMPLEX.  */
 
 static void
-generic_val_print_complex (struct type *type,
-			   int embedded_offset, struct ui_file *stream,
-			   struct value *original_value,
-			   const struct value_print_options *options,
-			   const struct generic_val_print_decorations
-			     *decorations)
+generic_value_print_complex (struct value *val, struct ui_file *stream,
+			     const struct value_print_options *options,
+			     const struct generic_val_print_decorations
+			       *decorations)
 {
-  struct gdbarch *gdbarch = get_type_arch (type);
-  int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
-  const gdb_byte *valaddr = value_contents_for_printing (original_value);
-
   fprintf_filtered (stream, "%s", decorations->complex_prefix);
-  if (options->format)
-    val_print_scalar_formatted (TYPE_TARGET_TYPE (type),
-				embedded_offset, original_value, options, 0,
-				stream);
-  else
-    print_floating (valaddr + embedded_offset * unit_size,
-		    TYPE_TARGET_TYPE (type), stream);
+
+  struct value *real_part = value_real_part (val);
+  value_print_scalar_formatted (real_part, options, 0, stream);
   fprintf_filtered (stream, "%s", decorations->complex_infix);
-  if (options->format)
-    val_print_scalar_formatted (TYPE_TARGET_TYPE (type),
-				embedded_offset
-				+ type_length_units (TYPE_TARGET_TYPE (type)),
-				original_value, options, 0, stream);
-  else
-    print_floating (valaddr + embedded_offset * unit_size
-		    + TYPE_LENGTH (TYPE_TARGET_TYPE (type)),
-		    TYPE_TARGET_TYPE (type), stream);
+
+  struct value *imag_part = value_imaginary_part (val);
+  value_print_scalar_formatted (imag_part, options, 0, stream);
   fprintf_filtered (stream, "%s", decorations->complex_suffix);
 }
 
-/* A generic val_print that is suitable for use by language
-   implementations of the la_val_print method.  This function can
-   handle most type codes, though not all, notably exception
-   TYPE_CODE_UNION and TYPE_CODE_STRUCT, which must be implemented by
-   the caller.
-   
-   Most arguments are as to val_print.
-   
-   The additional DECORATIONS argument can be used to customize the
-   output in some small, language-specific ways.  */
+/* See valprint.h.  */
 
 void
-generic_val_print (struct type *type,
-		   int embedded_offset, CORE_ADDR address,
-		   struct ui_file *stream, int recurse,
-		   struct value *original_value,
-		   const struct value_print_options *options,
-		   const struct generic_val_print_decorations *decorations)
+generic_value_print (struct value *val, struct ui_file *stream, int recurse,
+		     const struct value_print_options *options,
+		     const struct generic_val_print_decorations *decorations)
 {
-  struct type *unresolved_type = type;
+  struct type *type = value_type (val);
 
   type = check_typedef (type);
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
-      generic_val_print_array (type, embedded_offset, address, stream,
-			       recurse, original_value, options, decorations);
+      generic_val_print_array (val, stream, recurse, options, decorations);
       break;
 
     case TYPE_CODE_MEMBERPTR:
-      generic_val_print_memberptr (type, embedded_offset, stream,
-				   original_value, options);
+      value_print_scalar_formatted (val, options, 0, stream);
       break;
 
     case TYPE_CODE_PTR:
-      generic_val_print_ptr (type, embedded_offset, stream,
-			     original_value, options);
+      generic_value_print_ptr (val, stream, options);
       break;
 
     case TYPE_CODE_REF:
     case TYPE_CODE_RVALUE_REF:
-      generic_val_print_ref (type, embedded_offset, stream, recurse,
-			     original_value, options);
+      generic_val_print_ref (type, 0, stream, recurse,
+			     val, options);
       break;
 
     case TYPE_CODE_ENUM:
-      generic_val_print_enum (type, embedded_offset, stream,
-			      original_value, options);
+      if (options->format)
+	value_print_scalar_formatted (val, options, 0, stream);
+      else
+	generic_val_print_enum (type, 0, stream, val, options);
       break;
 
     case TYPE_CODE_FLAGS:
-      generic_val_print_flags (type, embedded_offset, stream,
-			       original_value, options);
+      if (options->format)
+	value_print_scalar_formatted (val, options, 0, stream);
+      else
+	val_print_type_code_flags (type, val, 0, stream);
       break;
 
     case TYPE_CODE_FUNC:
     case TYPE_CODE_METHOD:
-      generic_val_print_func (type, embedded_offset, address, stream,
-			      original_value, options);
+      if (options->format)
+	value_print_scalar_formatted (val, options, 0, stream);
+      else
+	generic_val_print_func (type, 0, value_address (val), stream,
+				val, options);
       break;
 
     case TYPE_CODE_BOOL:
-      generic_val_print_bool (type, embedded_offset, stream,
-			      original_value, options, decorations);
+      generic_value_print_bool (val, stream, options, decorations);
       break;
 
     case TYPE_CODE_RANGE:
@@ -963,19 +880,19 @@ generic_val_print (struct type *type,
       /* FALLTHROUGH */
 
     case TYPE_CODE_INT:
-      generic_val_print_int (type, embedded_offset, stream,
-			     original_value, options);
+      generic_value_print_int (val, stream, options);
       break;
 
     case TYPE_CODE_CHAR:
-      generic_val_print_char (type, unresolved_type, embedded_offset,
-			      stream, original_value, options);
+      generic_value_print_char (val, stream, options);
       break;
 
     case TYPE_CODE_FLT:
     case TYPE_CODE_DECFLOAT:
-      generic_val_print_float (type, embedded_offset, stream,
-			       original_value, options);
+      if (options->format)
+	value_print_scalar_formatted (val, options, 0, stream);
+      else
+	generic_val_print_float (type, stream, val, options);
       break;
 
     case TYPE_CODE_VOID:
@@ -994,8 +911,7 @@ generic_val_print (struct type *type,
       break;
 
     case TYPE_CODE_COMPLEX:
-      generic_val_print_complex (type, embedded_offset, stream,
-				 original_value, options, decorations);
+      generic_value_print_complex (val, stream, options, decorations);
       break;
 
     case TYPE_CODE_UNION:
@@ -1003,38 +919,22 @@ generic_val_print (struct type *type,
     case TYPE_CODE_METHODPTR:
     default:
       error (_("Unhandled type code %d in symbol table."),
-	     TYPE_CODE (type));
+	     type->code ());
     }
 }
 
-/* Print using the given LANGUAGE the data of type TYPE located at
-   VAL's contents buffer + EMBEDDED_OFFSET (within GDB), which came
-   from the inferior at address ADDRESS + EMBEDDED_OFFSET, onto
-   stdio stream STREAM according to OPTIONS.  VAL is the whole object
-   that came from ADDRESS.
-
-   The language printers will pass down an adjusted EMBEDDED_OFFSET to
-   further helper subroutines as subfields of TYPE are printed.  In
-   such cases, VAL is passed down unadjusted, so
-   that VAL can be queried for metadata about the contents data being
-   printed, using EMBEDDED_OFFSET as an offset into VAL's contents
-   buffer.  For example: "has this field been optimized out", or "I'm
-   printing an object while inspecting a traceframe; has this
-   particular piece of data been collected?".
-
-   RECURSE indicates the amount of indentation to supply before
-   continuation lines; this amount is roughly twice the value of
-   RECURSE.  */
-
-void
-val_print (struct type *type, LONGEST embedded_offset,
-	   CORE_ADDR address, struct ui_file *stream, int recurse,
-	   struct value *val,
-	   const struct value_print_options *options,
-	   const struct language_defn *language)
+/* Helper function for val_print and common_val_print that does the
+   work.  Arguments are as to val_print, but FULL_VALUE, if given, is
+   the value to be printed.  */
+
+static void
+do_val_print (struct value *value, struct ui_file *stream, int recurse,
+	      const struct value_print_options *options,
+	      const struct language_defn *language)
 {
   int ret = 0;
   struct value_print_options local_opts = *options;
+  struct type *type = value_type (value);
   struct type *real_type = check_typedef (type);
 
   if (local_opts.prettyformat == Val_prettyformat_default)
@@ -1053,14 +953,13 @@ val_print (struct type *type, LONGEST em
       return;
     }
 
-  if (!valprint_check_validity (stream, real_type, embedded_offset, val))
+  if (!valprint_check_validity (stream, real_type, 0, value))
     return;
 
   if (!options->raw)
     {
-      ret = apply_ext_lang_val_pretty_printer (type, embedded_offset,
-					       address, stream, recurse,
-					       val, options, language);
+      ret = apply_ext_lang_val_pretty_printer (value, stream, recurse, options,
+					       language);
       if (ret)
 	return;
     }
@@ -1080,9 +979,7 @@ val_print (struct type *type, LONGEST em
 
   try
     {
-      language->la_val_print (type, embedded_offset, address,
-			      stream, recurse, val,
-			      &local_opts);
+      language->value_print_inner (value, stream, recurse, &local_opts);
     }
   catch (const gdb_exception_error &except)
     {
@@ -1141,7 +1038,7 @@ value_check_printable (struct value *val
       return 0;
     }
 
-  if (TYPE_CODE (value_type (val)) == TYPE_CODE_INTERNAL_FUNCTION)
+  if (value_type (val)->code () == TYPE_CODE_INTERNAL_FUNCTION)
     {
       fprintf_styled (stream, metadata_style.style (),
 		      _("<internal function %s>"),
@@ -1175,9 +1072,6 @@ common_val_print (struct value *val, str
 		  const struct value_print_options *options,
 		  const struct language_defn *language)
 {
-  if (!value_check_printable (val, stream, options))
-    return;
-
   if (language->la_language == language_ada)
     /* The value might have a dynamic type, which would cause trouble
        below when trying to extract the value contents (since the value
@@ -1188,10 +1082,20 @@ common_val_print (struct value *val, str
   if (value_lazy (val))
     value_fetch_lazy (val);
 
-  val_print (value_type (val),
-	     value_embedded_offset (val), value_address (val),
-	     stream, recurse,
-	     val, options, language);
+  do_val_print (val, stream, recurse, options, language);
+}
+
+/* See valprint.h.  */
+
+void
+common_val_print_checked (struct value *val, struct ui_file *stream,
+			  int recurse,
+			  const struct value_print_options *options,
+			  const struct language_defn *language)
+{
+  if (!value_check_printable (val, stream, options))
+    return;
+  common_val_print (val, stream, recurse, options, language);
 }
 
 /* Print on stream STREAM the value VAL according to OPTIONS.  The value
@@ -1201,17 +1105,16 @@ void
 value_print (struct value *val, struct ui_file *stream,
 	     const struct value_print_options *options)
 {
+  scoped_value_mark free_values;
+
   if (!value_check_printable (val, stream, options))
     return;
 
   if (!options->raw)
     {
       int r
-	= apply_ext_lang_val_pretty_printer (value_type (val),
-					     value_embedded_offset (val),
-					     value_address (val),
-					     stream, 0,
-					     val, options, current_language);
+	= apply_ext_lang_val_pretty_printer (val, stream, 0, options,
+					     current_language);
 
       if (r)
 	return;
@@ -1221,11 +1124,13 @@ value_print (struct value *val, struct u
 }
 
 static void
-val_print_type_code_flags (struct type *type, const gdb_byte *valaddr,
-			   struct ui_file *stream)
+val_print_type_code_flags (struct type *type, struct value *original_value,
+			   int embedded_offset, struct ui_file *stream)
 {
+  const gdb_byte *valaddr = (value_contents_for_printing (original_value)
+			     + embedded_offset);
   ULONGEST val = unpack_long (type, valaddr);
-  int field, nfields = TYPE_NFIELDS (type);
+  int field, nfields = type->num_fields ();
   struct gdbarch *gdbarch = get_type_arch (type);
   struct type *bool_type = builtin_type (gdbarch)->builtin_bool;
 
@@ -1234,7 +1139,7 @@ val_print_type_code_flags (struct type *
     {
       if (TYPE_FIELD_NAME (type, field)[0] != '\0')
 	{
-	  struct type *field_type = TYPE_FIELD_TYPE (type, field);
+	  struct type *field_type = type->field (field).type ();
 
 	  if (field_type == bool_type
 	      /* We require boolean types here to be one bit wide.  This is a
@@ -1244,8 +1149,10 @@ val_print_type_code_flags (struct type *
 	      && TYPE_FIELD_BITSIZE (type, field) == 1)
 	    {
 	      if (val & ((ULONGEST)1 << TYPE_FIELD_BITPOS (type, field)))
-		fprintf_filtered (stream, " %s",
-				  TYPE_FIELD_NAME (type, field));
+		fprintf_filtered
+		  (stream, " %ps",
+		   styled_string (variable_name_style.style (),
+				  TYPE_FIELD_NAME (type, field)));
 	    }
 	  else
 	    {
@@ -1255,9 +1162,10 @@ val_print_type_code_flags (struct type *
 
 	      if (field_len < sizeof (ULONGEST) * TARGET_CHAR_BIT)
 		field_val &= ((ULONGEST) 1 << field_len) - 1;
-	      fprintf_filtered (stream, " %s=",
-				TYPE_FIELD_NAME (type, field));
-	      if (TYPE_CODE (field_type) == TYPE_CODE_ENUM)
+	      fprintf_filtered (stream, " %ps=",
+				styled_string (variable_name_style.style (),
+					       TYPE_FIELD_NAME (type, field)));
+	      if (field_type->code () == TYPE_CODE_ENUM)
 		generic_val_print_enum_1 (field_type, field_val, stream);
 	      else
 		print_longest (stream, 'd', 0, field_val);
@@ -1267,23 +1175,15 @@ val_print_type_code_flags (struct type *
   fputs_filtered (" ]", stream);
 }
 
-/* Print a scalar of data of type TYPE, pointed to in GDB by VALADDR,
-   according to OPTIONS and SIZE on STREAM.  Format i is not supported
-   at this level.
-
-   This is how the elements of an array or structure are printed
-   with a format.  */
+/* See valprint.h.  */
 
 void
-val_print_scalar_formatted (struct type *type,
-			    LONGEST embedded_offset,
-			    struct value *val,
-			    const struct value_print_options *options,
-			    int size,
-			    struct ui_file *stream)
+value_print_scalar_formatted (struct value *val,
+			      const struct value_print_options *options,
+			      int size,
+			      struct ui_file *stream)
 {
-  struct gdbarch *arch = get_type_arch (type);
-  int unit_size = gdbarch_addressable_memory_unit_size (arch);
+  struct type *type = check_typedef (value_type (val));
 
   gdb_assert (val != NULL);
 
@@ -1295,8 +1195,7 @@ val_print_scalar_formatted (struct type
       struct value_print_options opts = *options;
       opts.format = 0;
       opts.deref_ref = 0;
-      val_print (type, embedded_offset, 0, stream, 0, val, &opts,
-		 current_language);
+      common_val_print (val, stream, 0, &opts, current_language);
       return;
     }
 
@@ -1307,15 +1206,13 @@ val_print_scalar_formatted (struct type
 
   /* A scalar object that does not have all bits available can't be
      printed, because all bits contribute to its representation.  */
-  if (value_bits_any_optimized_out (val,
-				    TARGET_CHAR_BIT * embedded_offset,
+  if (value_bits_any_optimized_out (val, 0,
 				    TARGET_CHAR_BIT * TYPE_LENGTH (type)))
     val_print_optimized_out (val, stream);
-  else if (!value_bytes_available (val, embedded_offset, TYPE_LENGTH (type)))
+  else if (!value_bytes_available (val, 0, TYPE_LENGTH (type)))
     val_print_unavailable (stream);
   else
-    print_scalar_formatted (valaddr + embedded_offset * unit_size, type,
-			    options, size, stream);
+    print_scalar_formatted (valaddr, type, options, size, stream);
 }
 
 /* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
@@ -1949,36 +1846,23 @@ maybe_print_array_index (struct type *in
                          struct ui_file *stream,
 			 const struct value_print_options *options)
 {
-  struct value *index_value;
-
   if (!options->print_array_indexes)
     return; 
     
-  index_value = value_from_longest (index_type, index);
-
-  LA_PRINT_ARRAY_INDEX (index_value, stream, options);
+  LA_PRINT_ARRAY_INDEX (index_type, index, stream, options);
 }
 
-/*  Called by various <lang>_val_print routines to print elements of an
-   array in the form "<elem1>, <elem2>, <elem3>, ...".
-
-   (FIXME?)  Assumes array element separator is a comma, which is correct
-   for all languages currently handled.
-   (FIXME?)  Some languages have a notation for repeated array elements,
-   perhaps we should try to use that notation when appropriate.  */
+/* See valprint.h.  */
 
 void
-val_print_array_elements (struct type *type,
-			  LONGEST embedded_offset,
-			  CORE_ADDR address, struct ui_file *stream,
-			  int recurse,
-			  struct value *val,
-			  const struct value_print_options *options,
-			  unsigned int i)
+value_print_array_elements (struct value *val, struct ui_file *stream,
+			    int recurse,
+			    const struct value_print_options *options,
+			    unsigned int i)
 {
   unsigned int things_printed = 0;
   unsigned len;
-  struct type *elttype, *index_type, *base_index_type;
+  struct type *elttype, *index_type;
   unsigned eltlen;
   /* Position of the array element we are examining to see
      whether it is repeated.  */
@@ -1986,41 +1870,26 @@ val_print_array_elements (struct type *t
   /* Number of repetitions we have detected so far.  */
   unsigned int reps;
   LONGEST low_bound, high_bound;
-  LONGEST low_pos, high_pos;
+
+  struct type *type = check_typedef (value_type (val));
 
   elttype = TYPE_TARGET_TYPE (type);
   eltlen = type_length_units (check_typedef (elttype));
-  index_type = TYPE_INDEX_TYPE (type);
+  index_type = type->index_type ();
+  if (index_type->code () == TYPE_CODE_RANGE)
+    index_type = TYPE_TARGET_TYPE (index_type);
 
   if (get_array_bounds (type, &low_bound, &high_bound))
     {
-      if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
-	base_index_type = TYPE_TARGET_TYPE (index_type);
-      else
-	base_index_type = index_type;
-
-      /* Non-contiguous enumerations types can by used as index types
-	 in some languages (e.g. Ada).  In this case, the array length
-	 shall be computed from the positions of the first and last
-	 literal in the enumeration type, and not from the values
-	 of these literals.  */
-      if (!discrete_position (base_index_type, low_bound, &low_pos)
-	  || !discrete_position (base_index_type, high_bound, &high_pos))
-	{
-	  warning (_("unable to get positions in array, use bounds instead"));
-	  low_pos = low_bound;
-	  high_pos = high_bound;
-	}
-
-      /* The array length should normally be HIGH_POS - LOW_POS + 1.
-         But we have to be a little extra careful, because some languages
-	 such as Ada allow LOW_POS to be greater than HIGH_POS for
-	 empty arrays.  In that situation, the array length is just zero,
-	 not negative!  */
-      if (low_pos > high_pos)
+      /* The array length should normally be HIGH_BOUND - LOW_BOUND +
+         1.  But we have to be a little extra careful, because some
+         languages such as Ada allow LOW_BOUND to be greater than
+         HIGH_BOUND for empty arrays.  In that situation, the array
+         length is just zero, not negative!  */
+      if (low_bound > high_bound)
 	len = 0;
       else
-	len = high_pos - low_pos + 1;
+	len = high_bound - low_bound + 1;
     }
   else
     {
@@ -2033,6 +1902,8 @@ val_print_array_elements (struct type *t
 
   for (; i < len && things_printed < options->print_max; i++)
     {
+      scoped_value_mark free_values;
+
       if (i != 0)
 	{
 	  if (options->prettyformat_arrays)
@@ -2041,9 +1912,12 @@ val_print_array_elements (struct type *t
 	      print_spaces_filtered (2 + 2 * recurse, stream);
 	    }
 	  else
-	    {
-	      fprintf_filtered (stream, ", ");
-	    }
+	    fprintf_filtered (stream, ", ");
+	}
+      else if (options->prettyformat_arrays)
+	{
+	  fprintf_filtered (stream, "\n");
+	  print_spaces_filtered (2 + 2 * recurse, stream);
 	}
       wrap_here (n_spaces (2 + 2 * recurse));
       maybe_print_array_index (index_type, i + low_bound,
@@ -2056,11 +1930,8 @@ val_print_array_elements (struct type *t
       if (options->repeat_count_threshold < UINT_MAX)
 	{
 	  while (rep1 < len
-		 && value_contents_eq (val,
-				       embedded_offset + i * eltlen,
-				       val,
-				       (embedded_offset
-					+ rep1 * eltlen),
+		 && value_contents_eq (val, i * eltlen,
+				       val, rep1 * eltlen,
 				       eltlen))
 	    {
 	      ++reps;
@@ -2068,11 +1939,12 @@ val_print_array_elements (struct type *t
 	    }
 	}
 
+      struct value *element = value_from_component (val, elttype, eltlen * i);
+      common_val_print (element, stream, recurse + 1, options,
+			current_language);
+
       if (reps > options->repeat_count_threshold)
 	{
-	  val_print (elttype, embedded_offset + i * eltlen,
-		     address, stream, recurse + 1, val, options,
-		     current_language);
 	  annotate_elt_rep (reps);
 	  fprintf_filtered (stream, " %p[<repeats %u times>%p]",
 			    metadata_style.style ().ptr (), reps, nullptr);
@@ -2083,17 +1955,17 @@ val_print_array_elements (struct type *t
 	}
       else
 	{
-	  val_print (elttype, embedded_offset + i * eltlen,
-		     address,
-		     stream, recurse + 1, val, options, current_language);
 	  annotate_elt ();
 	  things_printed++;
 	}
     }
   annotate_array_section_end ();
   if (i < len)
+    fprintf_filtered (stream, "...");
+  if (options->prettyformat_arrays)
     {
-      fprintf_filtered (stream, "...");
+      fprintf_filtered (stream, "\n");
+      print_spaces_filtered (2 * recurse, stream);
     }
 }
 
@@ -2155,13 +2027,7 @@ partial_memory_read (CORE_ADDR memaddr,
 
    Unless an exception is thrown, BUFFER will always be allocated, even on
    failure.  In this case, some characters might have been read before the
-   failure happened.  Check BYTES_READ to recognize this situation.
-
-   Note: There was a FIXME asking to make this code use target_read_string,
-   but this function is more general (can read past null characters, up to
-   given LEN).  Besides, it is used much more often than target_read_string
-   so it is more tested.  Perhaps callers of target_read_string should use
-   this function instead?  */
+   failure happened.  Check BYTES_READ to recognize this situation.  */
 
 int
 read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
@@ -3049,34 +2915,6 @@ show_radix (const char *arg, int from_tt
 }
 
 
-static void
-set_print (const char *arg, int from_tty)
-{
-  printf_unfiltered (
-     "\"set print\" must be followed by the name of a print subcommand.\n");
-  help_list (setprintlist, "set print ", all_commands, gdb_stdout);
-}
-
-static void
-show_print (const char *args, int from_tty)
-{
-  cmd_show_list (showprintlist, from_tty, "");
-}
-
-static void
-set_print_raw (const char *arg, int from_tty)
-{
-  printf_unfiltered (
-     "\"set print raw\" must be followed by the name of a \"print raw\" subcommand.\n");
-  help_list (setprintrawlist, "set print raw ", all_commands, gdb_stdout);
-}
-
-static void
-show_print_raw (const char *args, int from_tty)
-{
-  cmd_show_list (showprintrawlist, from_tty, "");
-}
-
 /* Controls printing of vtbl's.  */
 static void
 show_vtblprint (struct ui_file *file, int from_tty,
@@ -3262,35 +3100,36 @@ make_value_print_options_def_group (valu
   return {{value_print_option_defs}, opts};
 }
 
+void _initialize_valprint ();
 void
-_initialize_valprint (void)
+_initialize_valprint ()
 {
   cmd_list_element *cmd;
 
-  add_prefix_cmd ("print", no_class, set_print,
-		  _("Generic command for setting how things print."),
-		  &setprintlist, "set print ", 0, &setlist);
+  add_basic_prefix_cmd ("print", no_class,
+			_("Generic command for setting how things print."),
+			&setprintlist, "set print ", 0, &setlist);
   add_alias_cmd ("p", "print", no_class, 1, &setlist);
   /* Prefer set print to set prompt.  */
   add_alias_cmd ("pr", "print", no_class, 1, &setlist);
 
-  add_prefix_cmd ("print", no_class, show_print,
-		  _("Generic command for showing print settings."),
-		  &showprintlist, "show print ", 0, &showlist);
+  add_show_prefix_cmd ("print", no_class,
+		       _("Generic command for showing print settings."),
+		       &showprintlist, "show print ", 0, &showlist);
   add_alias_cmd ("p", "print", no_class, 1, &showlist);
   add_alias_cmd ("pr", "print", no_class, 1, &showlist);
 
-  cmd = add_prefix_cmd ("raw", no_class, set_print_raw,
-			_("\
+  cmd = add_basic_prefix_cmd ("raw", no_class,
+			      _("\
 Generic command for setting what things to print in \"raw\" mode."),
-			&setprintrawlist, "set print raw ", 0,
-			&setprintlist);
+			      &setprintrawlist, "set print raw ", 0,
+			      &setprintlist);
   deprecate_cmd (cmd, nullptr);
 
-  cmd = add_prefix_cmd ("raw", no_class, show_print_raw,
-			_("Generic command for showing \"print raw\" settings."),
-			&showprintrawlist, "show print raw ", 0,
-			&showprintlist);
+  cmd = add_show_prefix_cmd ("raw", no_class,
+			     _("Generic command for showing \"print raw\" settings."),
+			     &showprintrawlist, "show print raw ", 0,
+			     &showprintlist);
   deprecate_cmd (cmd, nullptr);
 
   gdb::option::add_setshow_cmds_for_options
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/valprint.h ./gdb/valprint.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/valprint.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/valprint.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Declarations for value printing routines for GDB, the GNU debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -128,18 +128,22 @@ extern void maybe_print_array_index (str
                                      struct ui_file *stream,
 				     const struct value_print_options *);
 
-extern void val_print_array_elements (struct type *, LONGEST,
-				      CORE_ADDR, struct ui_file *, int,
-				      struct value *,
-				      const struct value_print_options *,
-				      unsigned int);
-
-extern void val_print_scalar_formatted (struct type *,
-					LONGEST,
-					struct value *,
+
+/* Print elements of an array.  */
+
+extern void value_print_array_elements (struct value *, struct ui_file *, int,
 					const struct value_print_options *,
-					int,
-					struct ui_file *);
+					unsigned int);
+
+/* Print a scalar according to OPTIONS and SIZE on STREAM.  Format 'i'
+   is not supported at this level.
+
+   This is how the elements of an array or structure are printed
+   with a format.  */
+
+extern void value_print_scalar_formatted
+  (struct value *val, const struct value_print_options *options,
+   int size, struct ui_file *stream);
 
 extern void print_binary_chars (struct ui_file *, const gdb_byte *,
 				unsigned int, enum bfd_endian, bool);
@@ -167,6 +171,20 @@ extern int read_string (CORE_ADDR addr,
 			gdb::unique_xmalloc_ptr<gdb_byte> *buffer,
 			int *bytes_read);
 
+/* Helper function to check the validity of some bits of a value.
+
+   If TYPE represents some aggregate type (e.g., a structure), return 1.
+
+   Otherwise, any of the bytes starting at OFFSET and extending for
+   TYPE_LENGTH(TYPE) bytes are invalid, print a message to STREAM and
+   return 0.  The checking is done using FUNCS.
+
+   Otherwise, return 1.  */
+
+extern int valprint_check_validity (struct ui_file *stream, struct type *type,
+				    LONGEST embedded_offset,
+				    const struct value *val);
+
 extern void val_print_optimized_out (const struct value *val,
 				     struct ui_file *stream);
 
@@ -204,12 +222,16 @@ struct generic_val_print_decorations
 };
 
 
-extern void generic_val_print (struct type *type,
-			       int embedded_offset, CORE_ADDR address,
-			       struct ui_file *stream, int recurse,
-			       struct value *original_value,
-			       const struct value_print_options *options,
-			       const struct generic_val_print_decorations *);
+/* Print a value in a generic way.  VAL is the value, STREAM is where
+   to print it, RECURSE is the recursion depth, OPTIONS describe how
+   the printing should be done, and D is the language-specific
+   decorations object.  Note that structs and unions cannot be printed
+   by this function.  */
+
+extern void generic_value_print (struct value *val, struct ui_file *stream,
+				 int recurse,
+				 const struct value_print_options *options,
+				 const struct generic_val_print_decorations *d);
 
 extern void generic_emit_char (int c, struct type *type, struct ui_file *stream,
 			       int quoter, const char *encoding);
@@ -282,4 +304,12 @@ extern bool val_print_check_max_depth (s
 				       const struct value_print_options *opts,
 				       const struct language_defn *language);
 
+/* Like common_val_print, but call value_check_printable first.  */
+
+extern void common_val_print_checked
+  (struct value *val,
+   struct ui_file *stream, int recurse,
+   const struct value_print_options *options,
+   const struct language_defn *language);
+
 #endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/value.c ./gdb/value.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/value.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/value.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low level packing and unpacking of values for GDB, the GNU Debugger.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -997,16 +997,16 @@ show_max_value_size (struct ui_file *fil
 static void
 check_type_length_before_alloc (const struct type *type)
 {
-  unsigned int length = TYPE_LENGTH (type);
+  ULONGEST length = TYPE_LENGTH (type);
 
   if (max_value_size > -1 && length > max_value_size)
     {
-      if (TYPE_NAME (type) != NULL)
-	error (_("value of type `%s' requires %u bytes, which is more "
-		 "than max-value-size"), TYPE_NAME (type), length);
+      if (type->name () != NULL)
+	error (_("value of type `%s' requires %s bytes, which is more "
+		 "than max-value-size"), type->name (), pulongest (length));
       else
-	error (_("value requires %u bytes, which is more than "
-		 "max-value-size"), length);
+	error (_("value requires %s bytes, which is more than "
+		 "max-value-size"), pulongest (length));
     }
 }
 
@@ -1177,9 +1177,9 @@ value_actual_type (struct value *value,
     {
       /* If result's target type is TYPE_CODE_STRUCT, proceed to
 	 fetch its rtti type.  */
-      if ((TYPE_CODE (result) == TYPE_CODE_PTR || TYPE_IS_REFERENCE (result))
-	  && TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (result)))
-	     == TYPE_CODE_STRUCT
+      if ((result->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (result))
+	  && (check_typedef (TYPE_TARGET_TYPE (result))->code ()
+	      == TYPE_CODE_STRUCT)
 	  && !value_optimized_out (value))
         {
           struct type *real_type;
@@ -1412,7 +1412,18 @@ value_optimized_out (struct value *value
 	}
       catch (const gdb_exception_error &ex)
 	{
-	  /* Fall back to checking value->optimized_out.  */
+	  switch (ex.error)
+	    {
+	    case MEMORY_ERROR:
+	    case OPTIMIZED_OUT_ERROR:
+	    case NOT_AVAILABLE_ERROR:
+	      /* These can normally happen when we try to access an
+		 optimized out or unavailable register, either in a
+		 physical register or spilled to memory.  */
+	      break;
+	    default:
+	      throw;
+	    }
 	}
     }
 
@@ -2189,7 +2200,7 @@ get_internalvar_integer (struct internal
     {
       struct type *type = check_typedef (value_type (var->u.value));
 
-      if (TYPE_CODE (type) == TYPE_CODE_INT)
+      if (type->code () == TYPE_CODE_INT)
 	{
 	  *result = value_as_long (var->u.value);
 	  return 1;
@@ -2254,7 +2265,7 @@ set_internalvar (struct internalvar *var
     error (_("Cannot overwrite convenience function %s"), var->name);
 
   /* Prepare new contents.  */
-  switch (TYPE_CODE (check_typedef (value_type (val))))
+  switch (check_typedef (value_type (val))->code ())
     {
     case TYPE_CODE_VOID:
       new_kind = INTERNALVAR_VOID;
@@ -2291,7 +2302,7 @@ set_internalvar (struct internalvar *var
          when accessing the value.
          If we keep it, we would still refer to the origin value.
          Remove the location property in case it exist.  */
-      remove_dyn_prop (DYN_PROP_DATA_LOCATION, value_type (new_data.value));
+      value_type (new_data.value)->remove_dyn_prop (DYN_PROP_DATA_LOCATION);
 
       break;
     }
@@ -2591,7 +2602,7 @@ value_from_xmethod (xmethod_worker_up &&
 struct type *
 result_type_of_xmethod (struct value *method, gdb::array_view<value *> argv)
 {
-  gdb_assert (TYPE_CODE (value_type (method)) == TYPE_CODE_XMETHOD
+  gdb_assert (value_type (method)->code () == TYPE_CODE_XMETHOD
 	      && method->lval == lval_xcallable && !argv.empty ());
 
   return method->location.xm_worker->get_result_type (argv[0], argv.slice (1));
@@ -2602,7 +2613,7 @@ result_type_of_xmethod (struct value *me
 struct value *
 call_xmethod (struct value *method, gdb::array_view<value *> argv)
 {
-  gdb_assert (TYPE_CODE (value_type (method)) == TYPE_CODE_XMETHOD
+  gdb_assert (value_type (method)->code () == TYPE_CODE_XMETHOD
 	      && method->lval == lval_xcallable && !argv.empty ());
 
   return method->location.xm_worker->invoke (argv[0], argv.slice (1));
@@ -2677,8 +2688,8 @@ value_as_address (struct value *val)
 
      The following shortcut avoids this whole mess.  If VAL is a
      function, just return its address directly.  */
-  if (TYPE_CODE (value_type (val)) == TYPE_CODE_FUNC
-      || TYPE_CODE (value_type (val)) == TYPE_CODE_METHOD)
+  if (value_type (val)->code () == TYPE_CODE_FUNC
+      || value_type (val)->code () == TYPE_CODE_METHOD)
     return value_address (val);
 
   val = coerce_array (val);
@@ -2720,7 +2731,7 @@ value_as_address (struct value *val)
      converted to pointers; usually, the ABI doesn't either, but
      ABI-specific code is a more reasonable place to handle it.  */
 
-  if (TYPE_CODE (value_type (val)) != TYPE_CODE_PTR
+  if (value_type (val)->code () != TYPE_CODE_PTR
       && !TYPE_IS_REFERENCE (value_type (val))
       && gdbarch_integer_to_address_p (gdbarch))
     return gdbarch_integer_to_address (gdbarch, value_type (val),
@@ -2748,7 +2759,7 @@ LONGEST
 unpack_long (struct type *type, const gdb_byte *valaddr)
 {
   enum bfd_endian byte_order = type_byte_order (type);
-  enum type_code code = TYPE_CODE (type);
+  enum type_code code = type->code ();
   int len = TYPE_LENGTH (type);
   int nosign = TYPE_UNSIGNED (type);
 
@@ -2770,7 +2781,7 @@ unpack_long (struct type *type, const gd
 	else
 	  result = extract_signed_integer (valaddr, len, byte_order);
 	if (code == TYPE_CODE_RANGE)
-	  result += TYPE_RANGE_DATA (type)->bias;
+	  result += type->bounds ()->bias;
 	return result;
       }
 
@@ -2838,7 +2849,7 @@ value_static_field (struct type *type, i
   switch (TYPE_FIELD_LOC_KIND (type, fieldno))
     {
     case FIELD_LOC_KIND_PHYSADDR:
-      retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno),
+      retval = value_at_lazy (type->field (fieldno).type (),
 			      TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
       break;
     case FIELD_LOC_KIND_PHYSNAME:
@@ -2853,7 +2864,7 @@ value_static_field (struct type *type, i
 	     reported as non-debuggable symbols.  */
 	  struct bound_minimal_symbol msym
 	    = lookup_minimal_symbol (phys_name, NULL, NULL);
-	  struct type *field_type = TYPE_FIELD_TYPE (type, fieldno);
+	  struct type *field_type = type->field (fieldno).type ();
 
 	  if (!msym.minsym)
 	    retval = allocate_optimized_out_value (field_type);
@@ -2906,7 +2917,7 @@ value_primitive_field (struct value *arg
   int unit_size = gdbarch_addressable_memory_unit_size (arch);
 
   arg_type = check_typedef (arg_type);
-  type = TYPE_FIELD_TYPE (arg_type, fieldno);
+  type = arg_type->field (fieldno).type ();
 
   /* Call check_typedef on our type to make sure that, if TYPE
      is a TYPE_CODE_TYPEDEF, its length is set to the length
@@ -3068,7 +3079,7 @@ value_fn_field (struct value **arg1p, st
       /* The minimal symbol might point to a function descriptor;
 	 resolve it to the actual code address instead.  */
       struct objfile *objfile = msym.objfile;
-      struct gdbarch *gdbarch = get_objfile_arch (objfile);
+      struct gdbarch *gdbarch = objfile->arch ();
 
       set_value_address (v,
 	gdbarch_convert_from_func_ptr_addr
@@ -3090,23 +3101,9 @@ value_fn_field (struct value **arg1p, st
 
 
 
-/* Unpack a bitfield of the specified FIELD_TYPE, from the object at
-   VALADDR, and store the result in *RESULT.
-   The bitfield starts at BITPOS bits and contains BITSIZE bits; if
-   BITSIZE is zero, then the length is taken from FIELD_TYPE.
-
-   Extracting bits depends on endianness of the machine.  Compute the
-   number of least significant bits to discard.  For big endian machines,
-   we compute the total number of bits in the anonymous object, subtract
-   off the bit count from the MSB of the object to the MSB of the
-   bitfield, then the size of the bitfield, which leaves the LSB discard
-   count.  For little endian machines, the discard count is simply the
-   number of bits from the LSB of the anonymous object to the LSB of the
-   bitfield.
-
-   If the field is signed, we also do sign extension.  */
+/* See value.h.  */
 
-static LONGEST
+LONGEST
 unpack_bits_as_long (struct type *field_type, const gdb_byte *valaddr,
 		     LONGEST bitpos, LONGEST bitsize)
 {
@@ -3172,7 +3169,7 @@ unpack_value_field_as_long (struct type
 {
   int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
   int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
-  struct type *field_type = TYPE_FIELD_TYPE (type, fieldno);
+  struct type *field_type = type->field (fieldno).type ();
   int bit_offset;
 
   gdb_assert (val != NULL);
@@ -3195,7 +3192,7 @@ unpack_field_as_long (struct type *type,
 {
   int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
   int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
-  struct type *field_type = TYPE_FIELD_TYPE (type, fieldno);
+  struct type *field_type = type->field (fieldno).type ();
 
   return unpack_bits_as_long (field_type, valaddr, bitpos, bitsize);
 }
@@ -3260,7 +3257,7 @@ value_field_bitfield (struct type *type,
 {
   int bitpos = TYPE_FIELD_BITPOS (type, fieldno);
   int bitsize = TYPE_FIELD_BITSIZE (type, fieldno);
-  struct value *res_val = allocate_value (TYPE_FIELD_TYPE (type, fieldno));
+  struct value *res_val = allocate_value (type->field (fieldno).type ());
 
   unpack_value_bitfield (res_val, bitpos, bitsize,
 			 valaddr, embedded_offset, val);
@@ -3331,10 +3328,10 @@ pack_long (gdb_byte *buf, struct type *t
   type = check_typedef (type);
   len = TYPE_LENGTH (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_RANGE:
-      num -= TYPE_RANGE_DATA (type)->bias;
+      num -= type->bounds ()->bias;
       /* Fall through.  */
     case TYPE_CODE_INT:
     case TYPE_CODE_CHAR:
@@ -3358,7 +3355,7 @@ pack_long (gdb_byte *buf, struct type *t
 
     default:
       error (_("Unexpected type (%d) encountered for integer constant."),
-	     TYPE_CODE (type));
+	     type->code ());
     }
 }
 
@@ -3375,7 +3372,7 @@ pack_unsigned_long (gdb_byte *buf, struc
   len = TYPE_LENGTH (type);
   byte_order = type_byte_order (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_INT:
     case TYPE_CODE_CHAR:
@@ -3401,7 +3398,7 @@ pack_unsigned_long (gdb_byte *buf, struc
     default:
       error (_("Unexpected type (%d) encountered "
 	       "for unsigned integer constant."),
-	     TYPE_CODE (type));
+	     type->code ());
     }
 }
 
@@ -3452,7 +3449,7 @@ struct value *
 value_from_host_double (struct type *type, double d)
 {
   struct value *value = allocate_value (type);
-  gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
+  gdb_assert (type->code () == TYPE_CODE_FLT);
   target_float_from_host_double (value_contents_raw (value),
 				 value_type (value), d);
   return value;
@@ -3491,7 +3488,10 @@ value_from_contents_and_address (struct
 				 const gdb_byte *valaddr,
 				 CORE_ADDR address)
 {
-  struct type *resolved_type = resolve_dynamic_type (type, valaddr, address);
+  gdb::array_view<const gdb_byte> view;
+  if (valaddr != nullptr)
+    view = gdb::make_array_view (valaddr, TYPE_LENGTH (type));
+  struct type *resolved_type = resolve_dynamic_type (type, view, address);
   struct type *resolved_type_no_typedef = check_typedef (resolved_type);
   struct value *v;
 
@@ -3629,10 +3629,20 @@ coerce_ref_if_computed (const struct val
 struct value *
 readjust_indirect_value_type (struct value *value, struct type *enc_type,
 			      const struct type *original_type,
-			      const struct value *original_value)
+			      struct value *original_value,
+			      CORE_ADDR original_value_address)
 {
+  gdb_assert (original_type->code () == TYPE_CODE_PTR
+	      || TYPE_IS_REFERENCE (original_type));
+
+  struct type *original_target_type = TYPE_TARGET_TYPE (original_type);
+  gdb::array_view<const gdb_byte> view;
+  struct type *resolved_original_target_type
+    = resolve_dynamic_type (original_target_type, view,
+			    original_value_address);
+
   /* Re-adjust type.  */
-  deprecated_set_value_type (value, TYPE_TARGET_TYPE (original_type));
+  deprecated_set_value_type (value, resolved_original_target_type);
 
   /* Add embedding info.  */
   set_value_enclosing_type (value, enc_type);
@@ -3659,12 +3669,11 @@ coerce_ref (struct value *arg)
   enc_type = check_typedef (value_enclosing_type (arg));
   enc_type = TYPE_TARGET_TYPE (enc_type);
 
-  retval = value_at_lazy (enc_type,
-                          unpack_pointer (value_type (arg),
-                                          value_contents (arg)));
+  CORE_ADDR addr = unpack_pointer (value_type (arg), value_contents (arg));
+  retval = value_at_lazy (enc_type, addr);
   enc_type = value_type (retval);
-  return readjust_indirect_value_type (retval, enc_type,
-                                       value_type_arg_tmp, arg);
+  return readjust_indirect_value_type (retval, enc_type, value_type_arg_tmp,
+				       arg, addr);
 }
 
 struct value *
@@ -3675,7 +3684,7 @@ coerce_array (struct value *arg)
   arg = coerce_ref (arg);
   type = check_typedef (value_type (arg));
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
       if (!TYPE_VECTOR (type) && current_language->c_style_arrays)
@@ -3696,7 +3705,7 @@ enum return_value_convention
 struct_return_convention (struct gdbarch *gdbarch,
 			  struct value *function, struct type *value_type)
 {
-  enum type_code code = TYPE_CODE (value_type);
+  enum type_code code = value_type->code ();
 
   if (code == TYPE_CODE_ERROR)
     error (_("Function return type unknown."));
@@ -3714,7 +3723,7 @@ int
 using_struct_return (struct gdbarch *gdbarch,
 		     struct value *function, struct type *value_type)
 {
-  if (TYPE_CODE (value_type) == TYPE_CODE_VOID)
+  if (value_type->code () == TYPE_CODE_VOID)
     /* A void return value is never in memory.  See also corresponding
        code in "print_return_value".  */
     return 0;
@@ -3942,7 +3951,7 @@ isvoid_internal_fn (struct gdbarch *gdba
   if (argc != 1)
     error (_("You must provide one argument for $_isvoid."));
 
-  ret = TYPE_CODE (value_type (argv[0])) == TYPE_CODE_VOID;
+  ret = value_type (argv[0])->code () == TYPE_CODE_VOID;
 
   return value_from_longest (builtin_type (gdbarch)->builtin_int, ret);
 }
@@ -3960,9 +3969,9 @@ creal_internal_fn (struct gdbarch *gdbar
 
   value *cval = argv[0];
   type *ctype = check_typedef (value_type (cval));
-  if (TYPE_CODE (ctype) != TYPE_CODE_COMPLEX)
+  if (ctype->code () != TYPE_CODE_COMPLEX)
     error (_("expected a complex number"));
-  return value_from_component (cval, TYPE_TARGET_TYPE (ctype), 0);
+  return value_real_part (cval);
 }
 
 /* Implementation of the convenience function $_cimag.  Extracts the
@@ -3979,10 +3988,9 @@ cimag_internal_fn (struct gdbarch *gdbar
 
   value *cval = argv[0];
   type *ctype = check_typedef (value_type (cval));
-  if (TYPE_CODE (ctype) != TYPE_CODE_COMPLEX)
+  if (ctype->code () != TYPE_CODE_COMPLEX)
     error (_("expected a complex number"));
-  return value_from_component (cval, TYPE_TARGET_TYPE (ctype),
-			       TYPE_LENGTH (TYPE_TARGET_TYPE (ctype)));
+  return value_imaginary_part (cval);
 }
 
 #if GDB_SELF_TEST
@@ -4127,8 +4135,9 @@ test_insert_into_bit_range_vector ()
 } /* namespace selftests */
 #endif /* GDB_SELF_TEST */
 
+void _initialize_values ();
 void
-_initialize_values (void)
+_initialize_values ()
 {
   add_cmd ("convenience", no_class, show_convenience, _("\
 Debugger convenience (\"$foo\") variables and functions.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/value.h ./gdb/value.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/value.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/value.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Definitions for values of C expressions, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -302,20 +302,6 @@ extern struct value *allocate_computed_v
 					      const struct lval_funcs *funcs,
 					      void *closure);
 
-/* Helper function to check the validity of some bits of a value.
-
-   If TYPE represents some aggregate type (e.g., a structure), return 1.
-   
-   Otherwise, any of the bytes starting at OFFSET and extending for
-   TYPE_LENGTH(TYPE) bytes are invalid, print a message to STREAM and
-   return 0.  The checking is done using FUNCS.
-   
-   Otherwise, return 1.  */
-
-extern int valprint_check_validity (struct ui_file *stream, struct type *type,
-				    LONGEST embedded_offset,
-				    const struct value *val);
-
 extern struct value *allocate_optimized_out_value (struct type *type);
 
 /* If VALUE is lval_computed, return its lval_funcs structure.  */
@@ -488,7 +474,9 @@ extern struct value *coerce_ref_if_compu
 
 /* Setup a new value type and enclosing value type for dereferenced value VALUE.
    ENC_TYPE is the new enclosing type that should be set.  ORIGINAL_TYPE and
-   ORIGINAL_VAL are the type and value of the original reference or pointer.
+   ORIGINAL_VAL are the type and value of the original reference or
+   pointer.  ORIGINAL_VALUE_ADDRESS is the address within VALUE, that is
+   the address that was dereferenced.
 
    Note, that VALUE is modified by this function.
 
@@ -497,7 +485,8 @@ extern struct value *coerce_ref_if_compu
 extern struct value * readjust_indirect_value_type (struct value *value,
 						    struct type *enc_type,
 						    const struct type *original_type,
-						    const struct value *original_val);
+						    struct value *original_val,
+						    CORE_ADDR original_value_address);
 
 /* Convert a REF to the object referenced.  */
 
@@ -651,6 +640,27 @@ extern CORE_ADDR unpack_pointer (struct
 extern LONGEST unpack_field_as_long (struct type *type,
 				     const gdb_byte *valaddr,
 				     int fieldno);
+
+/* Unpack a bitfield of the specified FIELD_TYPE, from the object at
+   VALADDR, and store the result in *RESULT.
+   The bitfield starts at BITPOS bits and contains BITSIZE bits; if
+   BITSIZE is zero, then the length is taken from FIELD_TYPE.
+
+   Extracting bits depends on endianness of the machine.  Compute the
+   number of least significant bits to discard.  For big endian machines,
+   we compute the total number of bits in the anonymous object, subtract
+   off the bit count from the MSB of the object to the MSB of the
+   bitfield, then the size of the bitfield, which leaves the LSB discard
+   count.  For little endian machines, the discard count is simply the
+   number of bits from the LSB of the anonymous object to the LSB of the
+   bitfield.
+
+   If the field is signed, we also do sign extension.  */
+
+extern LONGEST unpack_bits_as_long (struct type *field_type,
+				    const gdb_byte *valaddr,
+				    LONGEST bitpos, LONGEST bitsize);
+
 extern int unpack_value_field_as_long (struct type *type, const gdb_byte *valaddr,
 				LONGEST embedded_offset, int fieldno,
 				const struct value *val, LONGEST *result);
@@ -723,10 +733,6 @@ extern struct value *read_var_value (str
 				     const struct block *var_block,
 				     struct frame_info *frame);
 
-extern struct value *default_read_var_value (struct symbol *var,
-					     const struct block *var_block,
-					     struct frame_info *frame);
-
 extern struct value *allocate_value (struct type *type);
 extern struct value *allocate_value_lazy (struct type *type);
 extern void value_contents_copy (struct value *dst, LONGEST dst_offset,
@@ -1097,13 +1103,6 @@ extern void value_print_array_elements (
 extern std::vector<value_ref_ptr> value_release_to_mark
     (const struct value *mark);
 
-extern void val_print (struct type *type,
-		       LONGEST embedded_offset, CORE_ADDR address,
-		       struct ui_file *stream, int recurse,
-		       struct value *val,
-		       const struct value_print_options *options,
-		       const struct language_defn *language);
-
 extern void common_val_print (struct value *val,
 			      struct ui_file *stream, int recurse,
 			      const struct value_print_options *options,
@@ -1145,9 +1144,21 @@ extern struct value *varying_to_slice (s
 
 extern struct value *value_slice (struct value *, int, int);
 
+/* Create a complex number.  The type is the complex type; the values
+   are cast to the underlying scalar type before the complex number is
+   created.  */
+
 extern struct value *value_literal_complex (struct value *, struct value *,
 					    struct type *);
 
+/* Return the real part of a complex value.  */
+
+extern struct value *value_real_part (struct value *value);
+
+/* Return the imaginary part of a complex value.  */
+
+extern struct value *value_imaginary_part (struct value *value);
+
 extern struct value *find_function_in_inferior (const char *,
 						struct objfile **);
 
@@ -1200,14 +1211,6 @@ extern struct type *result_type_of_xmeth
 extern struct value *call_xmethod (struct value *method,
 				   gdb::array_view<value *> argv);
 
-/* Given a discriminated union type and some corresponding value
-   contents, this will return the field index of the currently active
-   variant.  This will throw an exception if no active variant can be
-   found.  */
-
-extern int value_union_variant (struct type *union_type,
-				const gdb_byte *contents);
-
 /* Destroy the values currently allocated.  This is called when GDB is
    exiting (e.g., on quit_force).  */
 extern void finalize_values ();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/varobj.c ./gdb/varobj.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/varobj.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/varobj.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Implementation of the GDB variable objects API.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 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
@@ -1271,7 +1271,7 @@ install_new_value (struct varobj *var, s
   if (value)
     value = coerce_ref (value);
 
-  if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
+  if (var->type && var->type->code () == TYPE_CODE_UNION)
     /* For unions, we need to fetch the value implicitly because
        of implementation of union member fetch.  When gdb
        creates a value for a field and the value of the enclosing
@@ -2398,7 +2398,7 @@ varobj_editable_p (const struct varobj *
 
   type = varobj_get_value_type (var);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
@@ -2445,7 +2445,7 @@ varobj_default_value_is_changeable_p (co
 
   type = varobj_get_value_type (var);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
@@ -2520,8 +2520,9 @@ varobj_invalidate (void)
   all_root_varobjs (varobj_invalidate_iter, NULL);
 }
 
+void _initialize_varobj ();
 void
-_initialize_varobj (void)
+_initialize_varobj ()
 {
   varobj_table = XCNEWVEC (struct vlist *, VAROBJ_TABLE_SIZE);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/varobj.h ./gdb/varobj.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/varobj.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/varobj.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* GDB variable objects API.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/varobj-iter.h ./gdb/varobj-iter.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/varobj-iter.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/varobj-iter.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Iterator of varobj.
-   Copyright (C) 2013-2020 Free Software Foundation, Inc.
+   Copyright (C) 2013-2021 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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/vax-bsd-nat.c ./gdb/vax-bsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/vax-bsd-nat.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/vax-bsd-nat.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for modern VAX BSD's.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,6 +17,8 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+/* We define this to get types like register_t.  */
+#define _KERNTYPES
 #include "defs.h"
 #include "inferior.h"
 #include "regcache.h"
@@ -28,8 +30,9 @@
 
 #include "vax-tdep.h"
 #include "inf-ptrace.h"
+#include "nbsd-nat.h"
 
-struct vax_bsd_nat_target final : public inf_ptrace_target
+struct vax_bsd_nat_target final : public nbsd_nat_target
 {
   void fetch_registers (struct regcache *, int) override;
   void store_registers (struct regcache *, int) override;
@@ -42,7 +45,7 @@ static vax_bsd_nat_target the_vax_bsd_na
 static void
 vaxbsd_supply_gregset (struct regcache *regcache, const void *gregs)
 {
-  const gdb_byte *regs = gregs;
+  const gdb_byte *regs = (const gdb_byte *)gregs;
   int regnum;
 
   for (regnum = 0; regnum < VAX_NUM_REGS; regnum++)
@@ -56,7 +59,7 @@ static void
 vaxbsd_collect_gregset (const struct regcache *regcache,
 			void *gregs, int regnum)
 {
-  gdb_byte *regs = gregs;
+  gdb_byte *regs = (void *)gregs;
   int i;
 
   for (i = 0; i <= VAX_NUM_REGS; i++)
@@ -75,8 +78,9 @@ vax_bsd_nat_target::fetch_registers (str
 {
   struct reg regs;
   pid_t pid = regcache->ptid ().pid ();
+  int lwp = regcache->ptid ().lwp ();
 
-  if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+  if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
     perror_with_name (_("Couldn't get registers"));
 
   vaxbsd_supply_gregset (regcache, &regs);
@@ -90,13 +94,14 @@ vax_bsd_nat_target::store_registers (str
 {
   struct reg regs;
   pid_t pid = regcache->ptid ().pid ();
+  int lwp = regcache->ptid ().lwp ();
 
-  if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+  if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
     perror_with_name (_("Couldn't get registers"));
 
   vaxbsd_collect_gregset (regcache, &regs, regnum);
 
-  if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+  if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, lwp) == -1)
     perror_with_name (_("Couldn't write registers"));
 }
 
@@ -132,8 +137,9 @@ vaxbsd_supply_pcb (struct regcache *regc
   return 1;
 }
 
+void _initialize_vaxbsd_nat ();
 void
-_initialize_vaxbsd_nat (void)
+_initialize_vaxbsd_nat ()
 {
   add_inf_child_target (&the_vax_bsd_nat_target);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/vax-nbsd-tdep.c ./gdb/vax-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/vax-nbsd-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/vax-nbsd-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for NetBSD/vax.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,6 +22,7 @@
 #include "osabi.h"
 
 #include "vax-tdep.h"
+#include "nbsd-tdep.h"
 #include "solib-svr4.h"
 
 /* NetBSD ELF.  */
@@ -29,13 +30,16 @@
 static void
 vaxnbsd_elf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
+  nbsd_init_abi (info, gdbarch);
+
   /* NetBSD ELF uses SVR4-style shared libraries.  */
   set_solib_svr4_fetch_link_map_offsets
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
 }
 
+void _initialize_vaxnbsd_tdep ();
 void
-_initialize_vaxnbsd_tdep (void)
+_initialize_vaxnbsd_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_vax, 0, GDB_OSABI_NETBSD,
 			  vaxnbsd_elf_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/vax-tdep.c ./gdb/vax-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/vax-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/vax-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the VAX.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -206,9 +206,9 @@ vax_return_value (struct gdbarch *gdbarc
   int len = TYPE_LENGTH (type);
   gdb_byte buf[8];
 
-  if (TYPE_CODE (type) == TYPE_CODE_STRUCT
-      || TYPE_CODE (type) == TYPE_CODE_UNION
-      || TYPE_CODE (type) == TYPE_CODE_ARRAY)
+  if (type->code () == TYPE_CODE_STRUCT
+      || type->code () == TYPE_CODE_UNION
+      || type->code () == TYPE_CODE_ARRAY)
     {
       /* The default on VAX is to return structures in static memory.
          Consequently a function must return the address where we can
@@ -507,8 +507,9 @@ vax_gdbarch_init (struct gdbarch_info in
   return (gdbarch);
 }
 
+void _initialize_vax_tdep ();
 void
-_initialize_vax_tdep (void)
+_initialize_vax_tdep ()
 {
   gdbarch_register (bfd_arch_vax, vax_gdbarch_init, NULL);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/vax-tdep.h ./gdb/vax-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/vax-tdep.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/vax-tdep.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the VAX.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/version.in ./gdb/version.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/version.in	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/version.in	2021-05-21 01:57:25.000000000 +0000
@@ -1 +1 @@
-9.1.90.DATE-git
+10.2.90.DATE-git
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/warning.m4 ./gdb/warning.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/warning.m4	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/warning.m4	1970-01-01 00:00:00.000000000 +0000
@@ -1,158 +0,0 @@
-dnl Autoconf configure script for GDB, the GNU debugger.
-dnl Copyright (C) 1995-2020 Free Software Foundation, Inc.
-dnl
-dnl This file is part of GDB.
-dnl
-dnl This program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 3 of the License, or
-dnl (at your option) any later version.
-dnl
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-dnl GNU General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-AC_DEFUN([AM_GDB_WARNINGS],[
-AC_ARG_ENABLE(werror,
-  AS_HELP_STRING([--enable-werror], [treat compile warnings as errors]),
-  [case "${enableval}" in
-     yes | y) ERROR_ON_WARNING="yes" ;;
-     no | n)  ERROR_ON_WARNING="no" ;;
-     *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;;
-   esac])
-
-# Enable -Werror by default when using gcc.  Turn it off for releases.
-if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" && $development; then
-    ERROR_ON_WARNING=yes
-fi
-
-WERROR_CFLAGS=""
-if test "${ERROR_ON_WARNING}" = yes ; then
-    WERROR_CFLAGS="-Werror"
-fi
-
-# The options we'll try to enable.
-build_warnings="-Wall -Wpointer-arith \
--Wno-unused -Wunused-value -Wunused-variable -Wunused-function \
--Wno-switch -Wno-char-subscripts \
--Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable \
--Wno-sign-compare -Wno-error=maybe-uninitialized \
--Wno-mismatched-tags \
--Wno-error=deprecated-register \
--Wsuggest-override \
--Wimplicit-fallthrough=3 \
--Wduplicated-cond \
--Wshadow=local \
--Wdeprecated-copy \
--Wdeprecated-copy-dtor \
--Wredundant-move"
-
-case "${host}" in
-  *-*-mingw32*)
-    # Enable -Wno-format by default when using gcc on mingw since many
-    # GCC versions complain about %I64.
-    build_warnings="$build_warnings -Wno-format" ;;
-  *-*-solaris*)
-    # Solaris 11.4 <python2.7/ceval.h> uses #pragma no_inline that GCC
-    # doesn't understand.
-    build_warnings="$build_warnings -Wno-unknown-pragmas"
-    # Solaris 11 <unistd.h> marks vfork deprecated.
-    build_warnings="$build_warnings -Wno-deprecated-declarations" ;;
-  *)
-    # Note that gcc requires -Wformat for -Wformat-nonliteral to work,
-    # but there's a special case for this below.
-    build_warnings="$build_warnings -Wformat-nonliteral" ;;
-esac
-
-AC_ARG_ENABLE(build-warnings,
-AS_HELP_STRING([--enable-build-warnings], [enable build-time compiler warnings if gcc is used]),
-[case "${enableval}" in
-  yes)	;;
-  no)	build_warnings="-w";;
-  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        build_warnings="${build_warnings} ${t}";;
-  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        build_warnings="${t} ${build_warnings}";;
-  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
-esac
-if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
-  echo "Setting compiler warning flags = $build_warnings" 6>&1
-fi])dnl
-AC_ARG_ENABLE(gdb-build-warnings,
-AS_HELP_STRING([--enable-gdb-build-warnings], [enable GDB specific build-time compiler warnings if gcc is used]),
-[case "${enableval}" in
-  yes)	;;
-  no)	build_warnings="-w";;
-  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        build_warnings="${build_warnings} ${t}";;
-  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
-        build_warnings="${t} ${build_warnings}";;
-  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
-esac
-if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
-  echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
-fi])dnl
-
-# The set of warnings supported by a C++ compiler is not the same as
-# of the C compiler.
-AC_LANG_PUSH([C++])
-
-WARN_CFLAGS=""
-if test "x${build_warnings}" != x -a "x$GCC" = xyes
-then
-    AC_MSG_CHECKING(compiler warning flags)
-    # Separate out the -Werror flag as some files just cannot be
-    # compiled with it enabled.
-    for w in ${build_warnings}; do
-	# GCC does not complain about -Wno-unknown-warning.  Invert
-	# and test -Wunknown-warning instead.
-	case $w in
-	-Wno-*)
-		wtest=`echo $w | sed 's/-Wno-/-W/g'` ;;
-        -Wformat-nonliteral)
-		# gcc requires -Wformat before -Wformat-nonliteral
-		# will work, so stick them together.
-		w="-Wformat $w"
-		wtest="$w"
-		;;
-	*)
-		wtest=$w ;;
-	esac
-
-	case $w in
-	-Werr*) WERROR_CFLAGS=-Werror ;;
-	*)
-	    # Check whether GCC accepts it.
-	    saved_CFLAGS="$CFLAGS"
-	    CFLAGS="$CFLAGS -Werror $wtest"
-	    saved_CXXFLAGS="$CXXFLAGS"
-	    CXXFLAGS="$CXXFLAGS -Werror $wtest"
-	    if test "x$w" = "x-Wunused-variable"; then
-	      # Check for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38958,
-	      # fixed in GCC 4.9.  This test is derived from the gdb
-	      # source code that triggered this bug in GCC.
-	      AC_TRY_COMPILE(
-	        [struct scoped_restore_base {};
-                 struct scoped_restore_tmpl : public scoped_restore_base {
-		   ~scoped_restore_tmpl() {}
-		 };],
-		[const scoped_restore_base &b = scoped_restore_tmpl();],
-		WARN_CFLAGS="${WARN_CFLAGS} $w",)
-	    else
-	      AC_TRY_COMPILE([],[],WARN_CFLAGS="${WARN_CFLAGS} $w",)
-	    fi
-	    CFLAGS="$saved_CFLAGS"
-	    CXXFLAGS="$saved_CXXFLAGS"
-	esac
-    done
-    AC_MSG_RESULT(${WARN_CFLAGS} ${WERROR_CFLAGS})
-fi
-AC_SUBST(WARN_CFLAGS)
-AC_SUBST(WERROR_CFLAGS)
-
-AC_LANG_POP([C++])
-])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/windows-nat.c ./gdb/windows-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/windows-nat.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/windows-nat.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-vector operations for controlling windows child processes, for GDB.
 
-   Copyright (C) 1995-2020 Free Software Foundation, Inc.
+   Copyright (C) 1995-2021 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions, A Red Hat Company.
 
@@ -43,6 +43,7 @@
 #include <cygwin/version.h>
 #endif
 #include <algorithm>
+#include <vector>
 
 #include "filenames.h"
 #include "symfile.h"
@@ -68,17 +69,26 @@
 #include "inf-child.h"
 #include "gdbsupport/gdb_tilde_expand.h"
 #include "gdbsupport/pathstuff.h"
+#include "gdbsupport/gdb_wait.h"
+#include "nat/windows-nat.h"
+
+using namespace windows_nat;
 
 #define AdjustTokenPrivileges		dyn_AdjustTokenPrivileges
 #define DebugActiveProcessStop		dyn_DebugActiveProcessStop
 #define DebugBreakProcess		dyn_DebugBreakProcess
 #define DebugSetProcessKillOnExit	dyn_DebugSetProcessKillOnExit
 #define EnumProcessModules		dyn_EnumProcessModules
+#define EnumProcessModulesEx		dyn_EnumProcessModulesEx
 #define GetModuleInformation		dyn_GetModuleInformation
 #define LookupPrivilegeValueA		dyn_LookupPrivilegeValueA
 #define OpenProcessToken		dyn_OpenProcessToken
 #define GetConsoleFontSize		dyn_GetConsoleFontSize
 #define GetCurrentConsoleFont		dyn_GetCurrentConsoleFont
+#define Wow64SuspendThread		dyn_Wow64SuspendThread
+#define Wow64GetThreadContext		dyn_Wow64GetThreadContext
+#define Wow64SetThreadContext		dyn_Wow64SetThreadContext
+#define Wow64GetThreadSelectorEntry	dyn_Wow64GetThreadSelectorEntry
 
 typedef BOOL WINAPI (AdjustTokenPrivileges_ftype) (HANDLE, BOOL,
 						   PTOKEN_PRIVILEGES,
@@ -99,6 +109,12 @@ typedef BOOL WINAPI (EnumProcessModules_
 						LPDWORD);
 static EnumProcessModules_ftype *EnumProcessModules;
 
+#ifdef __x86_64__
+typedef BOOL WINAPI (EnumProcessModulesEx_ftype) (HANDLE, HMODULE *, DWORD,
+						  LPDWORD, DWORD);
+static EnumProcessModulesEx_ftype *EnumProcessModulesEx;
+#endif
+
 typedef BOOL WINAPI (GetModuleInformation_ftype) (HANDLE, HMODULE,
 						  LPMODULEINFO, DWORD);
 static GetModuleInformation_ftype *GetModuleInformation;
@@ -116,6 +132,22 @@ static GetCurrentConsoleFont_ftype *GetC
 typedef COORD WINAPI (GetConsoleFontSize_ftype) (HANDLE, DWORD);
 static GetConsoleFontSize_ftype *GetConsoleFontSize;
 
+#ifdef __x86_64__
+typedef DWORD WINAPI (Wow64SuspendThread_ftype) (HANDLE);
+static Wow64SuspendThread_ftype *Wow64SuspendThread;
+
+typedef BOOL WINAPI (Wow64GetThreadContext_ftype) (HANDLE, PWOW64_CONTEXT);
+static Wow64GetThreadContext_ftype *Wow64GetThreadContext;
+
+typedef BOOL WINAPI (Wow64SetThreadContext_ftype) (HANDLE,
+						   const WOW64_CONTEXT *);
+static Wow64SetThreadContext_ftype *Wow64SetThreadContext;
+
+typedef BOOL WINAPI (Wow64GetThreadSelectorEntry_ftype) (HANDLE, DWORD,
+							 PLDT_ENTRY);
+static Wow64GetThreadSelectorEntry_ftype *Wow64GetThreadSelectorEntry;
+#endif
+
 #undef STARTUPINFO
 #undef CreateProcess
 #undef GetModuleFileNameEx
@@ -178,19 +210,6 @@ static int debug_registers_used;
 static int windows_initialization_done;
 #define DR6_CLEAR_VALUE 0xffff0ff0
 
-/* The exception thrown by a program to tell the debugger the name of
-   a thread.  The exception record contains an ID of a thread and a
-   name to give it.  This exception has no documented name, but MSDN
-   dubs it "MS_VC_EXCEPTION" in one code example.  */
-#define MS_VC_EXCEPTION 0x406d1388
-
-typedef enum
-{
-  HANDLE_EXCEPTION_UNHANDLED = 0,
-  HANDLE_EXCEPTION_HANDLED,
-  HANDLE_EXCEPTION_IGNORED
-} handle_exception_result;
-
 /* The string sent by cygwin when it processes a signal.
    FIXME: This should be in a cygwin include file.  */
 #ifndef _CYGWIN_SIGNAL_STRING
@@ -198,10 +217,10 @@ typedef enum
 #endif
 
 #define CHECK(x)	check (x, __FILE__,__LINE__)
-#define DEBUG_EXEC(x)	if (debug_exec)		printf_unfiltered x
-#define DEBUG_EVENTS(x)	if (debug_events)	printf_unfiltered x
-#define DEBUG_MEM(x)	if (debug_memory)	printf_unfiltered x
-#define DEBUG_EXCEPT(x)	if (debug_exceptions)	printf_unfiltered x
+#define DEBUG_EXEC(x)	if (debug_exec)		debug_printf x
+#define DEBUG_EVENTS(x)	if (debug_events)	debug_printf x
+#define DEBUG_MEM(x)	if (debug_memory)	debug_printf x
+#define DEBUG_EXCEPT(x)	if (debug_exceptions)	debug_printf x
 
 static void cygwin_set_dr (int i, CORE_ADDR addr);
 static void cygwin_set_dr7 (unsigned long val);
@@ -209,36 +228,9 @@ static CORE_ADDR cygwin_get_dr (int i);
 static unsigned long cygwin_get_dr6 (void);
 static unsigned long cygwin_get_dr7 (void);
 
-static enum gdb_signal last_sig = GDB_SIGNAL_0;
-/* Set if a signal was received from the debugged process.  */
-
-/* Thread information structure used to track information that is
-   not available in gdb's thread structure.  */
-typedef struct windows_thread_info_struct
-  {
-    struct windows_thread_info_struct *next;
-    DWORD id;
-    HANDLE h;
-    CORE_ADDR thread_local_base;
-    char *name;
-    int suspended;
-    int reload_context;
-    CONTEXT context;
-  }
-windows_thread_info;
-
-static windows_thread_info thread_head;
-
-/* The process and thread handles for the above context.  */
-
-static DEBUG_EVENT current_event;	/* The current debug event from
-					   WaitForDebugEvent */
-static HANDLE current_process_handle;	/* Currently executing process */
-static windows_thread_info *current_thread;	/* Info on currently selected thread */
+static std::vector<windows_thread_info *> thread_list;
 
 /* Counts of things.  */
-static int exception_count = 0;
-static int event_count = 0;
 static int saw_create;
 static int open_process_used = 0;
 
@@ -320,6 +312,18 @@ struct windows_nat_target final : public
   void fetch_registers (struct regcache *, int) override;
   void store_registers (struct regcache *, int) override;
 
+  bool stopped_by_sw_breakpoint () override
+  {
+    windows_thread_info *th
+      = thread_rec (inferior_ptid, DONT_INVALIDATE_CONTEXT);
+    return th->stopped_at_software_breakpoint;
+  }
+
+  bool supports_stopped_by_sw_breakpoint () override
+  {
+    return true;
+  }
+
   enum target_xfer_status xfer_partial (enum target_object object,
 					const char *annex,
 					gdb_byte *readbuf,
@@ -349,6 +353,10 @@ struct windows_nat_target final : public
   bool get_tib_address (ptid_t ptid, CORE_ADDR *addr) override;
 
   const char *thread_name (struct thread_info *) override;
+
+  int get_windows_debug_event (int pid, struct target_waitstatus *ourstatus);
+
+  void do_initial_windows_stuff (DWORD pid, bool attaching);
 };
 
 static windows_nat_target the_windows_nat_target;
@@ -356,15 +364,16 @@ static windows_nat_target the_windows_na
 /* Set the MAPPINGS static global to OFFSETS.
    See the description of MAPPINGS for more details.  */
 
-void
+static void
 windows_set_context_register_offsets (const int *offsets)
 {
   mappings = offsets;
 }
 
-/* See windows-nat.h.  */
+/* Set the function that should be used by this module to determine
+   whether a given register is a segment register or not.  */
 
-void
+static void
 windows_set_segment_register_p (segment_register_p_ftype *fun)
 {
   segment_register_p = fun;
@@ -378,44 +387,31 @@ check (BOOL ok, const char *file, int li
 		     (unsigned) GetLastError ());
 }
 
-/* Find a thread record given a thread id.  If GET_CONTEXT is not 0,
-   then also retrieve the context for this thread.  If GET_CONTEXT is
-   negative, then don't suspend the thread.  */
-static windows_thread_info *
-thread_rec (DWORD id, int get_context)
-{
-  windows_thread_info *th;
+/* See nat/windows-nat.h.  */
 
-  for (th = &thread_head; (th = th->next) != NULL;)
-    if (th->id == id)
+windows_thread_info *
+windows_nat::thread_rec (ptid_t ptid, thread_disposition_type disposition)
+{
+  for (windows_thread_info *th : thread_list)
+    if (th->tid == ptid.lwp ())
       {
-	if (!th->suspended && get_context)
+	if (!th->suspended)
 	  {
-	    if (get_context > 0 && id != current_event.dwThreadId)
+	    switch (disposition)
 	      {
-		if (SuspendThread (th->h) == (DWORD) -1)
-		  {
-		    DWORD err = GetLastError ();
-
-		    /* We get Access Denied (5) when trying to suspend
-		       threads that Windows started on behalf of the
-		       debuggee, usually when those threads are just
-		       about to exit.
-		       We can get Invalid Handle (6) if the main thread
-		       has exited.  */
-		    if (err != ERROR_INVALID_HANDLE
-			&& err != ERROR_ACCESS_DENIED)
-		      warning (_("SuspendThread (tid=0x%x) failed."
-				 " (winerr %u)"),
-			       (unsigned) id, (unsigned) err);
-		    th->suspended = -1;
-		  }
-		else
-		  th->suspended = 1;
+	      case DONT_INVALIDATE_CONTEXT:
+		/* Nothing.  */
+		break;
+	      case INVALIDATE_CONTEXT:
+		if (ptid.lwp () != current_event.dwThreadId)
+		  th->suspend ();
+		th->reload_context = true;
+		break;
+	      case DONT_SUSPEND:
+		th->reload_context = true;
+		th->suspended = -1;
+		break;
 	      }
-	    else if (get_context < 0)
-	      th->suspended = -1;
-	    th->reload_context = 1;
 	  }
 	return th;
       }
@@ -435,21 +431,21 @@ static windows_thread_info *
 windows_add_thread (ptid_t ptid, HANDLE h, void *tlb, bool main_thread_p)
 {
   windows_thread_info *th;
-  DWORD id;
 
-  gdb_assert (ptid.tid () != 0);
+  gdb_assert (ptid.lwp () != 0);
 
-  id = ptid.tid ();
-
-  if ((th = thread_rec (id, FALSE)))
+  if ((th = thread_rec (ptid, DONT_INVALIDATE_CONTEXT)))
     return th;
 
-  th = XCNEW (windows_thread_info);
-  th->id = id;
-  th->h = h;
-  th->thread_local_base = (CORE_ADDR) (uintptr_t) tlb;
-  th->next = thread_head.next;
-  thread_head.next = th;
+  CORE_ADDR base = (CORE_ADDR) (uintptr_t) tlb;
+#ifdef __x86_64__
+  /* For WOW64 processes, this is actually the pointer to the 64bit TIB,
+     and the 32bit TIB is exactly 2 pages after it.  */
+  if (wow64_process)
+    base += 0x2000;
+#endif
+  th = new windows_thread_info (ptid.lwp (), h, base);
+  thread_list.push_back (th);
 
   /* Add this new thread to the list of threads.
 
@@ -457,24 +453,43 @@ windows_add_thread (ptid_t ptid, HANDLE
      the main thread silently (in reality, this thread is really
      more of a process to the user than a thread).  */
   if (main_thread_p)
-    add_thread_silent (ptid);
+    add_thread_silent (&the_windows_nat_target, ptid);
   else
-    add_thread (ptid);
+    add_thread (&the_windows_nat_target, ptid);
 
   /* Set the debug registers for the new thread if they are used.  */
   if (debug_registers_used)
     {
-      /* Only change the value of the debug registers.  */
-      th->context.ContextFlags = CONTEXT_DEBUG_REGISTERS;
-      CHECK (GetThreadContext (th->h, &th->context));
-      th->context.Dr0 = dr[0];
-      th->context.Dr1 = dr[1];
-      th->context.Dr2 = dr[2];
-      th->context.Dr3 = dr[3];
-      th->context.Dr6 = DR6_CLEAR_VALUE;
-      th->context.Dr7 = dr[7];
-      CHECK (SetThreadContext (th->h, &th->context));
-      th->context.ContextFlags = 0;
+#ifdef __x86_64__
+      if (wow64_process)
+	{
+	  /* Only change the value of the debug registers.  */
+	  th->wow64_context.ContextFlags = CONTEXT_DEBUG_REGISTERS;
+	  CHECK (Wow64GetThreadContext (th->h, &th->wow64_context));
+	  th->wow64_context.Dr0 = dr[0];
+	  th->wow64_context.Dr1 = dr[1];
+	  th->wow64_context.Dr2 = dr[2];
+	  th->wow64_context.Dr3 = dr[3];
+	  th->wow64_context.Dr6 = DR6_CLEAR_VALUE;
+	  th->wow64_context.Dr7 = dr[7];
+	  CHECK (Wow64SetThreadContext (th->h, &th->wow64_context));
+	  th->wow64_context.ContextFlags = 0;
+	}
+      else
+#endif
+	{
+	  /* Only change the value of the debug registers.  */
+	  th->context.ContextFlags = CONTEXT_DEBUG_REGISTERS;
+	  CHECK (GetThreadContext (th->h, &th->context));
+	  th->context.Dr0 = dr[0];
+	  th->context.Dr1 = dr[1];
+	  th->context.Dr2 = dr[2];
+	  th->context.Dr3 = dr[3];
+	  th->context.Dr6 = DR6_CLEAR_VALUE;
+	  th->context.Dr7 = dr[7];
+	  CHECK (SetThreadContext (th->h, &th->context));
+	  th->context.ContextFlags = 0;
+	}
     }
   return th;
 }
@@ -484,17 +499,13 @@ windows_add_thread (ptid_t ptid, HANDLE
 static void
 windows_init_thread_list (void)
 {
-  windows_thread_info *th = &thread_head;
-
   DEBUG_EVENTS (("gdb: windows_init_thread_list\n"));
   init_thread_list ();
-  while (th->next != NULL)
-    {
-      windows_thread_info *here = th->next;
-      th->next = here->next;
-      xfree (here);
-    }
-  thread_head.next = NULL;
+
+  for (windows_thread_info *here : thread_list)
+    delete here;
+
+  thread_list.clear ();
 }
 
 /* Delete a thread from the list of threads.
@@ -507,12 +518,11 @@ windows_init_thread_list (void)
 static void
 windows_delete_thread (ptid_t ptid, DWORD exit_code, bool main_thread_p)
 {
-  windows_thread_info *th;
   DWORD id;
 
-  gdb_assert (ptid.tid () != 0);
+  gdb_assert (ptid.lwp () != 0);
 
-  id = ptid.tid ();
+  id = ptid.lwp ();
 
   /* Emit a notification about the thread being deleted.
 
@@ -528,19 +538,18 @@ windows_delete_thread (ptid_t ptid, DWOR
 		       target_pid_to_str (ptid).c_str (),
 		       (unsigned) exit_code);
 
-  delete_thread (find_thread_ptid (ptid));
+  delete_thread (find_thread_ptid (&the_windows_nat_target, ptid));
 
-  for (th = &thread_head;
-       th->next != NULL && th->next->id != id;
-       th = th->next)
-    continue;
-
-  if (th->next != NULL)
-    {
-      windows_thread_info *here = th->next;
-      th->next = here->next;
-      xfree (here->name);
-      xfree (here);
+  auto iter = std::find_if (thread_list.begin (), thread_list.end (),
+			    [=] (windows_thread_info *th)
+			    {
+			      return th->tid == id;
+			    });
+
+  if (iter != thread_list.end ())
+    {
+      delete *iter;
+      thread_list.erase (iter);
     }
 }
 
@@ -561,10 +570,20 @@ windows_fetch_one_register (struct regca
   gdb_assert (r >= 0);
   gdb_assert (!th->reload_context);
 
-  char *context_offset = ((char *) &th->context) + mappings[r];
+  char *context_ptr = (char *) &th->context;
+#ifdef __x86_64__
+  if (wow64_process)
+    context_ptr = (char *) &th->wow64_context;
+#endif
+
+  char *context_offset = context_ptr + mappings[r];
   struct gdbarch *gdbarch = regcache->arch ();
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
 
+  gdb_assert (!gdbarch_read_pc_p (gdbarch));
+  gdb_assert (gdbarch_pc_regnum (gdbarch) >= 0);
+  gdb_assert (!gdbarch_write_pc_p (gdbarch));
+
   if (r == I387_FISEG_REGNUM (tdep))
     {
       long l = *((long *) context_offset) & 0xffff;
@@ -584,14 +603,38 @@ windows_fetch_one_register (struct regca
       regcache->raw_supply (r, (char *) &l);
     }
   else
-    regcache->raw_supply (r, context_offset);
+    {
+      if (th->stopped_at_software_breakpoint
+	  && !th->pc_adjusted
+	  && r == gdbarch_pc_regnum (gdbarch))
+	{
+	  int size = register_size (gdbarch, r);
+	  if (size == 4)
+	    {
+	      uint32_t value;
+	      memcpy (&value, context_offset, size);
+	      value -= gdbarch_decr_pc_after_break (gdbarch);
+	      memcpy (context_offset, &value, size);
+	    }
+	  else
+	    {
+	      gdb_assert (size == 8);
+	      uint64_t value;
+	      memcpy (&value, context_offset, size);
+	      value -= gdbarch_decr_pc_after_break (gdbarch);
+	      memcpy (context_offset, &value, size);
+	    }
+	  /* Make sure we only rewrite the PC a single time.  */
+	  th->pc_adjusted = true;
+	}
+      regcache->raw_supply (r, context_offset);
+    }
 }
 
 void
 windows_nat_target::fetch_registers (struct regcache *regcache, int r)
 {
-  DWORD tid = regcache->ptid ().tid ();
-  windows_thread_info *th = thread_rec (tid, TRUE);
+  windows_thread_info *th = thread_rec (regcache->ptid (), INVALIDATE_CONTEXT);
 
   /* Check if TH exists.  Windows sometimes uses a non-existent
      thread id in its events.  */
@@ -613,6 +656,26 @@ windows_nat_target::fetch_registers (str
 	}
       else
 #endif
+#ifdef __x86_64__
+      if (wow64_process)
+	{
+	  th->wow64_context.ContextFlags = CONTEXT_DEBUGGER_DR;
+	  CHECK (Wow64GetThreadContext (th->h, &th->wow64_context));
+	  /* Copy dr values from that thread.
+	     But only if there were not modified since last stop.
+	     PR gdb/2388 */
+	  if (!debug_registers_changed)
+	    {
+	      dr[0] = th->wow64_context.Dr0;
+	      dr[1] = th->wow64_context.Dr1;
+	      dr[2] = th->wow64_context.Dr2;
+	      dr[3] = th->wow64_context.Dr3;
+	      dr[6] = th->wow64_context.Dr6;
+	      dr[7] = th->wow64_context.Dr7;
+	    }
+	}
+      else
+#endif
 	{
 	  th->context.ContextFlags = CONTEXT_DEBUGGER_DR;
 	  CHECK (GetThreadContext (th->h, &th->context));
@@ -629,7 +692,7 @@ windows_nat_target::fetch_registers (str
 	      dr[7] = th->context.Dr7;
 	    }
 	}
-      th->reload_context = 0;
+      th->reload_context = false;
     }
 
   if (r < 0)
@@ -651,7 +714,13 @@ windows_store_one_register (const struct
 {
   gdb_assert (r >= 0);
 
-  regcache->raw_collect (r, ((char *) &th->context) + mappings[r]);
+  char *context_ptr = (char *) &th->context;
+#ifdef __x86_64__
+  if (wow64_process)
+    context_ptr = (char *) &th->wow64_context;
+#endif
+
+  regcache->raw_collect (r, context_ptr + mappings[r]);
 }
 
 /* Store a new register value into the context of the thread tied to
@@ -660,8 +729,7 @@ windows_store_one_register (const struct
 void
 windows_nat_target::store_registers (struct regcache *regcache, int r)
 {
-  DWORD tid = regcache->ptid ().tid ();
-  windows_thread_info *th = thread_rec (tid, TRUE);
+  windows_thread_info *th = thread_rec (regcache->ptid (), INVALIDATE_CONTEXT);
 
   /* Check if TH exists.  Windows sometimes uses a non-existent
      thread id in its events.  */
@@ -679,6 +747,7 @@ windows_nat_target::store_registers (str
 struct lm_info_windows : public lm_info_base
 {
   LPVOID load_addr = 0;
+  CORE_ADDR text_offset = 0;
 };
 
 static struct so_list solib_start, *solib_end;
@@ -755,7 +824,10 @@ windows_make_so (const char *name, LPVOI
 	  free (rname);
 	}
       else
-	error (_("dll path too long"));
+	{
+	  warning (_("dll path for \"%s\" too long or inaccessible"), name);
+	  strcpy (so->so_name, so->so_original_name);
+	}
     }
   /* Record cygwin1.dll .text start/end.  */
   p = strchr (so->so_name, '\0') - (sizeof ("/cygwin1.dll") - 1);
@@ -763,7 +835,7 @@ windows_make_so (const char *name, LPVOI
     {
       asection *text = NULL;
 
-      gdb_bfd_ref_ptr abfd (gdb_bfd_open (so->so_name, "pei-i386", -1));
+      gdb_bfd_ref_ptr abfd (gdb_bfd_open (so->so_name, "pei-i386"));
 
       if (abfd == NULL)
 	return so;
@@ -786,68 +858,13 @@ windows_make_so (const char *name, LPVOI
   return so;
 }
 
-static char *
-get_image_name (HANDLE h, void *address, int unicode)
-{
-#ifdef __CYGWIN__
-  static char buf[__PMAX];
-#else
-  static char buf[(2 * __PMAX) + 1];
-#endif
-  DWORD size = unicode ? sizeof (WCHAR) : sizeof (char);
-  char *address_ptr;
-  int len = 0;
-  char b[2];
-  SIZE_T done;
-
-  /* Attempt to read the name of the dll that was detected.
-     This is documented to work only when actively debugging
-     a program.  It will not work for attached processes.  */
-  if (address == NULL)
-    return NULL;
-
-  /* See if we could read the address of a string, and that the
-     address isn't null.  */
-  if (!ReadProcessMemory (h, address,  &address_ptr,
-			  sizeof (address_ptr), &done)
-      || done != sizeof (address_ptr) || !address_ptr)
-    return NULL;
-
-  /* Find the length of the string.  */
-  while (ReadProcessMemory (h, address_ptr + len++ * size, &b, size, &done)
-	 && (b[0] != 0 || b[size - 1] != 0) && done == size)
-    continue;
-
-  if (!unicode)
-    ReadProcessMemory (h, address_ptr, buf, len, &done);
-  else
-    {
-      WCHAR *unicode_address = (WCHAR *) alloca (len * sizeof (WCHAR));
-      ReadProcessMemory (h, address_ptr, unicode_address, len * sizeof (WCHAR),
-			 &done);
-#ifdef __CYGWIN__
-      wcstombs (buf, unicode_address, __PMAX);
-#else
-      WideCharToMultiByte (CP_ACP, 0, unicode_address, len, buf, sizeof buf,
-			   0, 0);
-#endif
-    }
+/* See nat/windows-nat.h.  */
 
-  return buf;
-}
-
-/* Handle a DLL load event, and return 1.
-
-   This function assumes that this event did not occur during inferior
-   initialization, where their event info may be incomplete (see
-   do_initial_windows_stuff and windows_add_all_dlls for more info
-   on how we handle DLL loading during that phase).  */
-
-static void
-handle_load_dll ()
+void
+windows_nat::handle_load_dll ()
 {
   LOAD_DLL_DEBUG_INFO *event = &current_event.u.LoadDll;
-  char *dll_name;
+  const char *dll_name;
 
   /* Try getting the DLL name via the lpImageName field of the event.
      Note that Microsoft documents this fields as strictly optional,
@@ -877,16 +894,10 @@ windows_free_so (struct so_list *so)
   xfree (so);
 }
 
-/* Handle a DLL unload event.
-   Return 1 if successful, or zero otherwise.
-
-   This function assumes that this event did not occur during inferior
-   initialization, where their event info may be incomplete (see
-   do_initial_windows_stuff and windows_add_all_dlls for more info
-   on how we handle DLL loading during that phase).  */
+/* See nat/windows-nat.h.  */
 
-static void
-handle_unload_dll ()
+void
+windows_nat::handle_unload_dll ()
 {
   LPVOID lpBaseOfDll = current_event.u.UnloadDll.lpBaseOfDll;
   struct so_list *so;
@@ -940,7 +951,14 @@ catch_errors (void (*func) ())
 static void
 windows_clear_solib (void)
 {
-  solib_start.next = NULL;
+  struct so_list *so;
+
+  for (so = solib_start.next; so; so = solib_start.next)
+    {
+      solib_start.next = so->next;
+      windows_free_so (so);
+    }
+
   solib_end = &solib_start;
 }
 
@@ -963,19 +981,18 @@ signal_event_command (const char *args,
   CloseHandle ((HANDLE) event_id);
 }
 
-/* Handle DEBUG_STRING output from child process.
-   Cygwin prepends its messages with a "cygwin:".  Interpret this as
-   a Cygwin signal.  Otherwise just print the string as a warning.  */
-static int
-handle_output_debug_string (struct target_waitstatus *ourstatus)
+/* See nat/windows-nat.h.  */
+
+int
+windows_nat::handle_output_debug_string (struct target_waitstatus *ourstatus)
 {
-  gdb::unique_xmalloc_ptr<char> s;
   int retval = 0;
 
-  if (!target_read_string
-	((CORE_ADDR) (uintptr_t) current_event.u.DebugString.lpDebugStringData,
-	 &s, 1024, 0)
-      || !s || !*(s.get ()))
+  gdb::unique_xmalloc_ptr<char> s
+    = (target_read_string
+       ((CORE_ADDR) (uintptr_t) current_event.u.DebugString.lpDebugStringData,
+	1024));
+  if (s == nullptr || !*(s.get ()))
     /* nothing to do */;
   else if (!startswith (s.get (), _CYGWIN_SIGNAL_STRING))
     {
@@ -1031,7 +1048,14 @@ static int
 display_selector (HANDLE thread, DWORD sel)
 {
   LDT_ENTRY info;
-  if (GetThreadSelectorEntry (thread, sel, &info))
+  BOOL ret;
+#ifdef __x86_64__
+  if (wow64_process)
+    ret = Wow64GetThreadSelectorEntry (thread, sel, &info);
+  else
+#endif
+    ret = GetThreadSelectorEntry (thread, sel, &info);
+  if (ret)
     {
       int base, limit;
       printf_filtered ("0x%03x: ", (unsigned) sel);
@@ -1108,208 +1132,133 @@ display_selector (HANDLE thread, DWORD s
 static void
 display_selectors (const char * args, int from_tty)
 {
-  if (!current_thread)
+  if (inferior_ptid == null_ptid)
     {
       puts_filtered ("Impossible to display selectors now.\n");
       return;
     }
+
+  windows_thread_info *current_windows_thread
+    = thread_rec (inferior_ptid, DONT_INVALIDATE_CONTEXT);
+
   if (!args)
     {
-
-      puts_filtered ("Selector $cs\n");
-      display_selector (current_thread->h,
-	current_thread->context.SegCs);
-      puts_filtered ("Selector $ds\n");
-      display_selector (current_thread->h,
-	current_thread->context.SegDs);
-      puts_filtered ("Selector $es\n");
-      display_selector (current_thread->h,
-	current_thread->context.SegEs);
-      puts_filtered ("Selector $ss\n");
-      display_selector (current_thread->h,
-	current_thread->context.SegSs);
-      puts_filtered ("Selector $fs\n");
-      display_selector (current_thread->h,
-	current_thread->context.SegFs);
-      puts_filtered ("Selector $gs\n");
-      display_selector (current_thread->h,
-	current_thread->context.SegGs);
+#ifdef __x86_64__
+      if (wow64_process)
+	{
+	  puts_filtered ("Selector $cs\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->wow64_context.SegCs);
+	  puts_filtered ("Selector $ds\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->wow64_context.SegDs);
+	  puts_filtered ("Selector $es\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->wow64_context.SegEs);
+	  puts_filtered ("Selector $ss\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->wow64_context.SegSs);
+	  puts_filtered ("Selector $fs\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->wow64_context.SegFs);
+	  puts_filtered ("Selector $gs\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->wow64_context.SegGs);
+	}
+      else
+#endif
+	{
+	  puts_filtered ("Selector $cs\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->context.SegCs);
+	  puts_filtered ("Selector $ds\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->context.SegDs);
+	  puts_filtered ("Selector $es\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->context.SegEs);
+	  puts_filtered ("Selector $ss\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->context.SegSs);
+	  puts_filtered ("Selector $fs\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->context.SegFs);
+	  puts_filtered ("Selector $gs\n");
+	  display_selector (current_windows_thread->h,
+			    current_windows_thread->context.SegGs);
+	}
     }
   else
     {
       int sel;
       sel = parse_and_eval_long (args);
       printf_filtered ("Selector \"%s\"\n",args);
-      display_selector (current_thread->h, sel);
+      display_selector (current_windows_thread->h, sel);
     }
 }
 
-#define DEBUG_EXCEPTION_SIMPLE(x)       if (debug_exceptions) \
-  printf_unfiltered ("gdb: Target exception %s at %s\n", x, \
-    host_address_to_string (\
-      current_event.u.Exception.ExceptionRecord.ExceptionAddress))
+/* See nat/windows-nat.h.  */
 
-static handle_exception_result
-handle_exception (struct target_waitstatus *ourstatus)
+bool
+windows_nat::handle_ms_vc_exception (const EXCEPTION_RECORD *rec)
 {
-  EXCEPTION_RECORD *rec = &current_event.u.Exception.ExceptionRecord;
-  DWORD code = rec->ExceptionCode;
-  handle_exception_result result = HANDLE_EXCEPTION_HANDLED;
-
-  ourstatus->kind = TARGET_WAITKIND_STOPPED;
-
-  /* Record the context of the current thread.  */
-  thread_rec (current_event.dwThreadId, -1);
-
-  switch (code)
+  if (rec->NumberParameters >= 3
+      && (rec->ExceptionInformation[0] & 0xffffffff) == 0x1000)
     {
-    case EXCEPTION_ACCESS_VIOLATION:
-      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_ACCESS_VIOLATION");
-      ourstatus->value.sig = GDB_SIGNAL_SEGV;
-#ifdef __CYGWIN__
-      {
-	/* See if the access violation happened within the cygwin DLL
-	   itself.  Cygwin uses a kind of exception handling to deal
-	   with passed-in invalid addresses.  gdb should not treat
-	   these as real SEGVs since they will be silently handled by
-	   cygwin.  A real SEGV will (theoretically) be caught by
-	   cygwin later in the process and will be sent as a
-	   cygwin-specific-signal.  So, ignore SEGVs if they show up
-	   within the text segment of the DLL itself.  */
-	const char *fn;
-	CORE_ADDR addr = (CORE_ADDR) (uintptr_t) rec->ExceptionAddress;
-
-	if ((!cygwin_exceptions && (addr >= cygwin_load_start
-				    && addr < cygwin_load_end))
-	    || (find_pc_partial_function (addr, &fn, NULL, NULL)
-		&& startswith (fn, "KERNEL32!IsBad")))
-	  return HANDLE_EXCEPTION_UNHANDLED;
-      }
-#endif
-      break;
-    case STATUS_STACK_OVERFLOW:
-      DEBUG_EXCEPTION_SIMPLE ("STATUS_STACK_OVERFLOW");
-      ourstatus->value.sig = GDB_SIGNAL_SEGV;
-      break;
-    case STATUS_FLOAT_DENORMAL_OPERAND:
-      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_DENORMAL_OPERAND");
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
-      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_ARRAY_BOUNDS_EXCEEDED");
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_INEXACT_RESULT:
-      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_INEXACT_RESULT");
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_INVALID_OPERATION:
-      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_INVALID_OPERATION");
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_OVERFLOW:
-      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_OVERFLOW");
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_STACK_CHECK:
-      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_STACK_CHECK");
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_UNDERFLOW:
-      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_UNDERFLOW");
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_FLOAT_DIVIDE_BY_ZERO:
-      DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_DIVIDE_BY_ZERO");
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_INTEGER_DIVIDE_BY_ZERO:
-      DEBUG_EXCEPTION_SIMPLE ("STATUS_INTEGER_DIVIDE_BY_ZERO");
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case STATUS_INTEGER_OVERFLOW:
-      DEBUG_EXCEPTION_SIMPLE ("STATUS_INTEGER_OVERFLOW");
-      ourstatus->value.sig = GDB_SIGNAL_FPE;
-      break;
-    case EXCEPTION_BREAKPOINT:
-      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_BREAKPOINT");
-      ourstatus->value.sig = GDB_SIGNAL_TRAP;
-      break;
-    case DBG_CONTROL_C:
-      DEBUG_EXCEPTION_SIMPLE ("DBG_CONTROL_C");
-      ourstatus->value.sig = GDB_SIGNAL_INT;
-      break;
-    case DBG_CONTROL_BREAK:
-      DEBUG_EXCEPTION_SIMPLE ("DBG_CONTROL_BREAK");
-      ourstatus->value.sig = GDB_SIGNAL_INT;
-      break;
-    case EXCEPTION_SINGLE_STEP:
-      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_SINGLE_STEP");
-      ourstatus->value.sig = GDB_SIGNAL_TRAP;
-      break;
-    case EXCEPTION_ILLEGAL_INSTRUCTION:
-      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_ILLEGAL_INSTRUCTION");
-      ourstatus->value.sig = GDB_SIGNAL_ILL;
-      break;
-    case EXCEPTION_PRIV_INSTRUCTION:
-      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_PRIV_INSTRUCTION");
-      ourstatus->value.sig = GDB_SIGNAL_ILL;
-      break;
-    case EXCEPTION_NONCONTINUABLE_EXCEPTION:
-      DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_NONCONTINUABLE_EXCEPTION");
-      ourstatus->value.sig = GDB_SIGNAL_ILL;
-      break;
-    case MS_VC_EXCEPTION:
-      if (rec->NumberParameters >= 3
-	  && (rec->ExceptionInformation[0] & 0xffffffff) == 0x1000)
-	{
-	  DWORD named_thread_id;
-	  windows_thread_info *named_thread;
-	  CORE_ADDR thread_name_target;
-
-	  DEBUG_EXCEPTION_SIMPLE ("MS_VC_EXCEPTION");
-
-	  thread_name_target = rec->ExceptionInformation[1];
-	  named_thread_id = (DWORD) (0xffffffff & rec->ExceptionInformation[2]);
-
-	  if (named_thread_id == (DWORD) -1)
-	    named_thread_id = current_event.dwThreadId;
-
-	  named_thread = thread_rec (named_thread_id, 0);
-	  if (named_thread != NULL)
+      DWORD named_thread_id;
+      windows_thread_info *named_thread;
+      CORE_ADDR thread_name_target;
+
+      thread_name_target = rec->ExceptionInformation[1];
+      named_thread_id = (DWORD) (0xffffffff & rec->ExceptionInformation[2]);
+
+      if (named_thread_id == (DWORD) -1)
+	named_thread_id = current_event.dwThreadId;
+
+      named_thread = thread_rec (ptid_t (current_event.dwProcessId,
+					 named_thread_id, 0),
+				 DONT_INVALIDATE_CONTEXT);
+      if (named_thread != NULL)
+	{
+	  int thread_name_len;
+	  gdb::unique_xmalloc_ptr<char> thread_name
+	    = target_read_string (thread_name_target, 1025, &thread_name_len);
+	  if (thread_name_len > 0)
 	    {
-	      int thread_name_len;
-	      gdb::unique_xmalloc_ptr<char> thread_name;
-
-	      thread_name_len = target_read_string (thread_name_target,
-						    &thread_name, 1025, NULL);
-	      if (thread_name_len > 0)
-		{
-		  thread_name.get ()[thread_name_len - 1] = '\0';
-		  xfree (named_thread->name);
-		  named_thread->name = thread_name.release ();
-		}
+	      thread_name.get ()[thread_name_len - 1] = '\0';
+	      named_thread->name = std::move (thread_name);
 	    }
-	  ourstatus->value.sig = GDB_SIGNAL_TRAP;
-	  result = HANDLE_EXCEPTION_IGNORED;
-	  break;
 	}
-	/* treat improperly formed exception as unknown */
-	/* FALLTHROUGH */
-    default:
-      /* Treat unhandled first chance exceptions specially.  */
-      if (current_event.u.Exception.dwFirstChance)
-	return HANDLE_EXCEPTION_UNHANDLED;
-      printf_unfiltered ("gdb: unknown target exception 0x%08x at %s\n",
-	(unsigned) current_event.u.Exception.ExceptionRecord.ExceptionCode,
-	host_address_to_string (
-	  current_event.u.Exception.ExceptionRecord.ExceptionAddress));
-      ourstatus->value.sig = GDB_SIGNAL_UNKNOWN;
-      break;
+
+      return true;
     }
-  exception_count++;
-  last_sig = ourstatus->value.sig;
-  return result;
+
+  return false;
+}
+
+/* See nat/windows-nat.h.  */
+
+bool
+windows_nat::handle_access_violation (const EXCEPTION_RECORD *rec)
+{
+#ifdef __CYGWIN__
+  /* See if the access violation happened within the cygwin DLL
+     itself.  Cygwin uses a kind of exception handling to deal with
+     passed-in invalid addresses.  gdb should not treat these as real
+     SEGVs since they will be silently handled by cygwin.  A real SEGV
+     will (theoretically) be caught by cygwin later in the process and
+     will be sent as a cygwin-specific-signal.  So, ignore SEGVs if
+     they show up within the text segment of the DLL itself.  */
+  const char *fn;
+  CORE_ADDR addr = (CORE_ADDR) (uintptr_t) rec->ExceptionAddress;
+
+  if ((!cygwin_exceptions && (addr >= cygwin_load_start
+			      && addr < cygwin_load_end))
+      || (find_pc_partial_function (addr, &fn, NULL, NULL)
+	  && startswith (fn, "KERNEL32!IsBad")))
+    return true;
+#endif
+  return false;
 }
 
 /* Resume thread specified by ID, or all artificially suspended
@@ -1319,51 +1268,85 @@ handle_exception (struct target_waitstat
 static BOOL
 windows_continue (DWORD continue_status, int id, int killed)
 {
-  windows_thread_info *th;
   BOOL res;
 
-  DEBUG_EVENTS (("ContinueDebugEvent (cpid=%d, ctid=0x%x, %s);\n",
-		  (unsigned) current_event.dwProcessId,
-		  (unsigned) current_event.dwThreadId,
-		  continue_status == DBG_CONTINUE ?
-		  "DBG_CONTINUE" : "DBG_EXCEPTION_NOT_HANDLED"));
-
-  for (th = &thread_head; (th = th->next) != NULL;)
-    if ((id == -1 || id == (int) th->id)
-	&& th->suspended)
+  desired_stop_thread_id = id;
+
+  if (matching_pending_stop (debug_events))
+    return TRUE;
+
+  for (windows_thread_info *th : thread_list)
+    if (id == -1 || id == (int) th->tid)
       {
-	if (debug_registers_changed)
+	if (!th->suspended)
+	  continue;
+#ifdef __x86_64__
+	if (wow64_process)
 	  {
-	    th->context.ContextFlags |= CONTEXT_DEBUG_REGISTERS;
-	    th->context.Dr0 = dr[0];
-	    th->context.Dr1 = dr[1];
-	    th->context.Dr2 = dr[2];
-	    th->context.Dr3 = dr[3];
-	    th->context.Dr6 = DR6_CLEAR_VALUE;
-	    th->context.Dr7 = dr[7];
+	    if (debug_registers_changed)
+	      {
+		th->wow64_context.ContextFlags |= CONTEXT_DEBUG_REGISTERS;
+		th->wow64_context.Dr0 = dr[0];
+		th->wow64_context.Dr1 = dr[1];
+		th->wow64_context.Dr2 = dr[2];
+		th->wow64_context.Dr3 = dr[3];
+		th->wow64_context.Dr6 = DR6_CLEAR_VALUE;
+		th->wow64_context.Dr7 = dr[7];
+	      }
+	    if (th->wow64_context.ContextFlags)
+	      {
+		DWORD ec = 0;
+
+		if (GetExitCodeThread (th->h, &ec)
+		    && ec == STILL_ACTIVE)
+		  {
+		    BOOL status = Wow64SetThreadContext (th->h,
+							 &th->wow64_context);
+
+		    if (!killed)
+		      CHECK (status);
+		  }
+		th->wow64_context.ContextFlags = 0;
+	      }
 	  }
-	if (th->context.ContextFlags)
+	else
+#endif
 	  {
-	    DWORD ec = 0;
-
-	    if (GetExitCodeThread (th->h, &ec)
-		&& ec == STILL_ACTIVE)
+	    if (debug_registers_changed)
+	      {
+		th->context.ContextFlags |= CONTEXT_DEBUG_REGISTERS;
+		th->context.Dr0 = dr[0];
+		th->context.Dr1 = dr[1];
+		th->context.Dr2 = dr[2];
+		th->context.Dr3 = dr[3];
+		th->context.Dr6 = DR6_CLEAR_VALUE;
+		th->context.Dr7 = dr[7];
+	      }
+	    if (th->context.ContextFlags)
 	      {
-		BOOL status = SetThreadContext (th->h, &th->context);
+		DWORD ec = 0;
+
+		if (GetExitCodeThread (th->h, &ec)
+		    && ec == STILL_ACTIVE)
+		  {
+		    BOOL status = SetThreadContext (th->h, &th->context);
 
-		if (!killed)
-		  CHECK (status);
+		    if (!killed)
+		      CHECK (status);
+		  }
+		th->context.ContextFlags = 0;
 	      }
-	    th->context.ContextFlags = 0;
 	  }
-	if (th->suspended > 0)
-	  (void) ResumeThread (th->h);
-	th->suspended = 0;
+	th->resume ();
+      }
+    else
+      {
+	/* When single-stepping a specific thread, other threads must
+	   be suspended.  */
+	th->suspend ();
       }
 
-  res = ContinueDebugEvent (current_event.dwProcessId,
-			    current_event.dwThreadId,
-			    continue_status);
+  res = continue_last_debug_event (continue_status, debug_events);
 
   if (!res)
     error (_("Failed to resume program execution"
@@ -1389,12 +1372,11 @@ fake_create_process (void)
        (unsigned) GetLastError ());
       /*  We can not debug anything in that case.  */
     }
-  current_thread
-    = windows_add_thread (ptid_t (current_event.dwProcessId, 0,
-				  current_event.dwThreadId),
-			  current_event.u.CreateThread.hThread,
-			  current_event.u.CreateThread.lpThreadLocalBase,
-			  true /* main_thread_p */);
+  windows_add_thread (ptid_t (current_event.dwProcessId, 0,
+			      current_event.dwThreadId),
+		      current_event.u.CreateThread.hThread,
+		      current_event.u.CreateThread.lpThreadLocalBase,
+		      true /* main_thread_p */);
   return current_event.dwThreadId;
 }
 
@@ -1448,34 +1430,65 @@ windows_nat_target::resume (ptid_t ptid,
   last_sig = GDB_SIGNAL_0;
 
   DEBUG_EXEC (("gdb: windows_resume (pid=%d, tid=0x%x, step=%d, sig=%d);\n",
-	       ptid.pid (), (unsigned) ptid.tid (), step, sig));
+	       ptid.pid (), (unsigned) ptid.lwp (), step, sig));
 
   /* Get context for currently selected thread.  */
-  th = thread_rec (inferior_ptid.tid (), FALSE);
+  th = thread_rec (inferior_ptid, DONT_INVALIDATE_CONTEXT);
   if (th)
     {
-      if (step)
+#ifdef __x86_64__
+      if (wow64_process)
 	{
-	  /* Single step by setting t bit.  */
-	  struct regcache *regcache = get_current_regcache ();
-	  struct gdbarch *gdbarch = regcache->arch ();
-	  fetch_registers (regcache, gdbarch_ps_regnum (gdbarch));
-	  th->context.EFlags |= FLAG_TRACE_BIT;
-	}
+	  if (step)
+	    {
+	      /* Single step by setting t bit.  */
+	      struct regcache *regcache = get_current_regcache ();
+	      struct gdbarch *gdbarch = regcache->arch ();
+	      fetch_registers (regcache, gdbarch_ps_regnum (gdbarch));
+	      th->wow64_context.EFlags |= FLAG_TRACE_BIT;
+	    }
 
-      if (th->context.ContextFlags)
+	  if (th->wow64_context.ContextFlags)
+	    {
+	      if (debug_registers_changed)
+		{
+		  th->wow64_context.Dr0 = dr[0];
+		  th->wow64_context.Dr1 = dr[1];
+		  th->wow64_context.Dr2 = dr[2];
+		  th->wow64_context.Dr3 = dr[3];
+		  th->wow64_context.Dr6 = DR6_CLEAR_VALUE;
+		  th->wow64_context.Dr7 = dr[7];
+		}
+	      CHECK (Wow64SetThreadContext (th->h, &th->wow64_context));
+	      th->wow64_context.ContextFlags = 0;
+	    }
+	}
+      else
+#endif
 	{
-	  if (debug_registers_changed)
+	  if (step)
 	    {
-	      th->context.Dr0 = dr[0];
-	      th->context.Dr1 = dr[1];
-	      th->context.Dr2 = dr[2];
-	      th->context.Dr3 = dr[3];
-	      th->context.Dr6 = DR6_CLEAR_VALUE;
-	      th->context.Dr7 = dr[7];
+	      /* Single step by setting t bit.  */
+	      struct regcache *regcache = get_current_regcache ();
+	      struct gdbarch *gdbarch = regcache->arch ();
+	      fetch_registers (regcache, gdbarch_ps_regnum (gdbarch));
+	      th->context.EFlags |= FLAG_TRACE_BIT;
+	    }
+
+	  if (th->context.ContextFlags)
+	    {
+	      if (debug_registers_changed)
+		{
+		  th->context.Dr0 = dr[0];
+		  th->context.Dr1 = dr[1];
+		  th->context.Dr2 = dr[2];
+		  th->context.Dr3 = dr[3];
+		  th->context.Dr6 = DR6_CLEAR_VALUE;
+		  th->context.Dr7 = dr[7];
+		}
+	      CHECK (SetThreadContext (th->h, &th->context));
+	      th->context.ContextFlags = 0;
 	    }
-	  CHECK (SetThreadContext (th->h, &th->context));
-	  th->context.ContextFlags = 0;
 	}
     }
 
@@ -1485,7 +1498,7 @@ windows_nat_target::resume (ptid_t ptid,
   if (resume_all)
     windows_continue (continue_status, -1, 0);
   else
-    windows_continue (continue_status, ptid.tid (), 0);
+    windows_continue (continue_status, ptid.lwp (), 0);
 }
 
 /* Ctrl-C handler used when the inferior is not run in the same console.  The
@@ -1516,27 +1529,40 @@ ctrl_c_handler (DWORD event_type)
 
 /* Get the next event from the child.  Returns a non-zero thread id if the event
    requires handling by WFI (or whatever).  */
-static int
-get_windows_debug_event (struct target_ops *ops,
-			 int pid, struct target_waitstatus *ourstatus)
+
+int
+windows_nat_target::get_windows_debug_event (int pid,
+					     struct target_waitstatus *ourstatus)
 {
   BOOL debug_event;
   DWORD continue_status, event_code;
-  windows_thread_info *th;
-  static windows_thread_info dummy_thread_info;
   DWORD thread_id = 0;
 
+  /* If there is a relevant pending stop, report it now.  See the
+     comment by the definition of "pending_stops" for details on why
+     this is needed.  */
+  gdb::optional<pending_stop> stop = fetch_pending_stop (debug_events);
+  if (stop.has_value ())
+    {
+      thread_id = stop->thread_id;
+      *ourstatus = stop->status;
+
+      ptid_t ptid (current_event.dwProcessId, thread_id);
+      windows_thread_info *th = thread_rec (ptid, INVALIDATE_CONTEXT);
+      th->reload_context = 1;
+
+      return thread_id;
+    }
+
   last_sig = GDB_SIGNAL_0;
 
-  if (!(debug_event = WaitForDebugEvent (&current_event, 1000)))
+  if (!(debug_event = wait_for_debug_event (&current_event, 1000)))
     goto out;
 
-  event_count++;
   continue_status = DBG_CONTINUE;
 
   event_code = current_event.dwDebugEventCode;
   ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
-  th = NULL;
   have_saved_context = 0;
 
   switch (event_code)
@@ -1548,8 +1574,7 @@ get_windows_debug_event (struct target_o
 		     "CREATE_THREAD_DEBUG_EVENT"));
       if (saw_create != 1)
 	{
-	  struct inferior *inf;
-	  inf = find_inferior_pid (current_event.dwProcessId);
+	  inferior *inf = find_inferior_pid (this, current_event.dwProcessId);
 	  if (!saw_create && inf->attach_flag)
 	    {
 	      /* Kludge around a Windows bug where first event is a create
@@ -1563,8 +1588,8 @@ get_windows_debug_event (struct target_o
 	}
       /* Record the existence of this thread.  */
       thread_id = current_event.dwThreadId;
-      th = windows_add_thread
-        (ptid_t (current_event.dwProcessId, 0, current_event.dwThreadId),
+      windows_add_thread
+        (ptid_t (current_event.dwProcessId, current_event.dwThreadId, 0),
 	 current_event.u.CreateThread.hThread,
 	 current_event.u.CreateThread.lpThreadLocalBase,
 	 false /* main_thread_p */);
@@ -1576,11 +1601,10 @@ get_windows_debug_event (struct target_o
 		     (unsigned) current_event.dwProcessId,
 		     (unsigned) current_event.dwThreadId,
 		     "EXIT_THREAD_DEBUG_EVENT"));
-      windows_delete_thread (ptid_t (current_event.dwProcessId, 0,
-				     current_event.dwThreadId),
+      windows_delete_thread (ptid_t (current_event.dwProcessId,
+				     current_event.dwThreadId, 0),
 			     current_event.u.ExitThread.dwExitCode,
 			     false /* main_thread_p */);
-      th = &dummy_thread_info;
       break;
 
     case CREATE_PROCESS_DEBUG_EVENT:
@@ -1594,9 +1618,9 @@ get_windows_debug_event (struct target_o
 
       current_process_handle = current_event.u.CreateProcessInfo.hProcess;
       /* Add the main thread.  */
-      th = windows_add_thread
-        (ptid_t (current_event.dwProcessId, 0,
-		 current_event.dwThreadId),
+      windows_add_thread
+        (ptid_t (current_event.dwProcessId,
+		 current_event.dwThreadId, 0),
 	 current_event.u.CreateProcessInfo.hThread,
 	 current_event.u.CreateProcessInfo.lpThreadLocalBase,
 	 true /* main_thread_p */);
@@ -1617,11 +1641,26 @@ get_windows_debug_event (struct target_o
 	}
       else if (saw_create == 1)
 	{
-	  windows_delete_thread (ptid_t (current_event.dwProcessId, 0,
-					 current_event.dwThreadId),
+	  windows_delete_thread (ptid_t (current_event.dwProcessId,
+					 current_event.dwThreadId, 0),
 				 0, true /* main_thread_p */);
-	  ourstatus->kind = TARGET_WAITKIND_EXITED;
-	  ourstatus->value.integer = current_event.u.ExitProcess.dwExitCode;
+	  DWORD exit_status = current_event.u.ExitProcess.dwExitCode;
+	  /* If the exit status looks like a fatal exception, but we
+	     don't recognize the exception's code, make the original
+	     exit status value available, to avoid losing
+	     information.  */
+	  int exit_signal
+	    = WIFSIGNALED (exit_status) ? WTERMSIG (exit_status) : -1;
+	  if (exit_signal == -1)
+	    {
+	      ourstatus->kind = TARGET_WAITKIND_EXITED;
+	      ourstatus->value.integer = exit_status;
+	    }
+	  else
+	    {
+	      ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
+	      ourstatus->value.sig = gdb_signal_from_host (exit_signal);
+	    }
 	  thread_id = current_event.dwThreadId;
 	}
       break;
@@ -1660,7 +1699,7 @@ get_windows_debug_event (struct target_o
 		     "EXCEPTION_DEBUG_EVENT"));
       if (saw_create != 1)
 	break;
-      switch (handle_exception (ourstatus))
+      switch (handle_exception (ourstatus, debug_exceptions))
 	{
 	case HANDLE_EXCEPTION_UNHANDLED:
 	default:
@@ -1698,14 +1737,31 @@ get_windows_debug_event (struct target_o
 
   if (!thread_id || saw_create != 1)
     {
-      CHECK (windows_continue (continue_status, -1, 0));
+      CHECK (windows_continue (continue_status, desired_stop_thread_id, 0));
     }
-  else
+  else if (desired_stop_thread_id != -1 && desired_stop_thread_id != thread_id)
     {
-      inferior_ptid = ptid_t (current_event.dwProcessId, 0, thread_id);
-      current_thread = th;
-      if (!current_thread)
-	current_thread = thread_rec (thread_id, TRUE);
+      /* Pending stop.  See the comment by the definition of
+	 "pending_stops" for details on why this is needed.  */
+      DEBUG_EVENTS (("get_windows_debug_event - "
+		     "unexpected stop in 0x%x (expecting 0x%x)\n",
+		     thread_id, desired_stop_thread_id));
+
+      if (current_event.dwDebugEventCode == EXCEPTION_DEBUG_EVENT
+	  && ((current_event.u.Exception.ExceptionRecord.ExceptionCode
+	       == EXCEPTION_BREAKPOINT)
+	      || (current_event.u.Exception.ExceptionRecord.ExceptionCode
+		  == STATUS_WX86_BREAKPOINT))
+	  && windows_initialization_done)
+	{
+	  ptid_t ptid = ptid_t (current_event.dwProcessId, thread_id, 0);
+	  windows_thread_info *th = thread_rec (ptid, INVALIDATE_CONTEXT);
+	  th->stopped_at_software_breakpoint = true;
+	  th->pc_adjusted = false;
+	}
+      pending_stops.push_back ({thread_id, *ourstatus, current_event});
+      thread_id = 0;
+      CHECK (windows_continue (continue_status, desired_stop_thread_id, 0));
     }
 
 out:
@@ -1756,11 +1812,36 @@ windows_nat_target::wait (ptid_t ptid, s
 	     the user tries to resume the execution in the inferior.
 	     This is a classic race that we should try to fix one day.  */
       SetConsoleCtrlHandler (&ctrl_c_handler, TRUE);
-      retval = get_windows_debug_event (this, pid, ourstatus);
+      retval = get_windows_debug_event (pid, ourstatus);
       SetConsoleCtrlHandler (&ctrl_c_handler, FALSE);
 
       if (retval)
-	return ptid_t (current_event.dwProcessId, 0, retval);
+	{
+	  ptid_t result = ptid_t (current_event.dwProcessId, retval, 0);
+
+	  if (ourstatus->kind != TARGET_WAITKIND_EXITED
+	      && ourstatus->kind !=  TARGET_WAITKIND_SIGNALLED)
+	    {
+	      windows_thread_info *th = thread_rec (result, INVALIDATE_CONTEXT);
+
+	      if (th != nullptr)
+		{
+		  th->stopped_at_software_breakpoint = false;
+		  if (current_event.dwDebugEventCode == EXCEPTION_DEBUG_EVENT
+		      && ((current_event.u.Exception.ExceptionRecord.ExceptionCode
+			   == EXCEPTION_BREAKPOINT)
+			  || (current_event.u.Exception.ExceptionRecord.ExceptionCode
+			      == STATUS_WX86_BREAKPOINT))
+		      && windows_initialization_done)
+		    {
+		      th->stopped_at_software_breakpoint = true;
+		      th->pc_adjusted = false;
+		    }
+		}
+	    }
+
+	  return result;
+	}
       else
 	{
 	  int detach = 0;
@@ -1785,28 +1866,82 @@ windows_add_all_dlls (void)
   HMODULE *hmodules;
   int i;
 
-  if (EnumProcessModules (current_process_handle, &dummy_hmodule,
-			  sizeof (HMODULE), &cb_needed) == 0)
-    return;
+#ifdef __x86_64__
+  if (wow64_process)
+    {
+      if (EnumProcessModulesEx (current_process_handle, &dummy_hmodule,
+				sizeof (HMODULE), &cb_needed,
+				LIST_MODULES_32BIT) == 0)
+	return;
+    }
+  else
+#endif
+    {
+      if (EnumProcessModules (current_process_handle, &dummy_hmodule,
+			      sizeof (HMODULE), &cb_needed) == 0)
+	return;
+    }
 
   if (cb_needed < 1)
     return;
 
   hmodules = (HMODULE *) alloca (cb_needed);
-  if (EnumProcessModules (current_process_handle, hmodules,
-			  cb_needed, &cb_needed) == 0)
-    return;
+#ifdef __x86_64__
+  if (wow64_process)
+    {
+      if (EnumProcessModulesEx (current_process_handle, hmodules,
+				cb_needed, &cb_needed,
+				LIST_MODULES_32BIT) == 0)
+	return;
+    }
+  else
+#endif
+    {
+      if (EnumProcessModules (current_process_handle, hmodules,
+			      cb_needed, &cb_needed) == 0)
+	return;
+    }
+
+  char system_dir[__PMAX];
+  char syswow_dir[__PMAX];
+  size_t system_dir_len = 0;
+  bool convert_syswow_dir = false;
+#ifdef __x86_64__
+  if (wow64_process)
+#endif
+    {
+      /* This fails on 32bit Windows because it has no SysWOW64 directory,
+	 and in this case a path conversion isn't necessary.  */
+      UINT len = GetSystemWow64DirectoryA (syswow_dir, sizeof (syswow_dir));
+      if (len > 0)
+	{
+	  /* Check that we have passed a large enough buffer.  */
+	  gdb_assert (len < sizeof (syswow_dir));
+
+	  len = GetSystemDirectoryA (system_dir, sizeof (system_dir));
+	  /* Error check.  */
+	  gdb_assert (len != 0);
+	  /* Check that we have passed a large enough buffer.  */
+	  gdb_assert (len < sizeof (system_dir));
 
+	  strcat (system_dir, "\\");
+	  strcat (syswow_dir, "\\");
+	  system_dir_len = strlen (system_dir);
+
+	  convert_syswow_dir = true;
+	}
+
+    }
   for (i = 1; i < (int) (cb_needed / sizeof (HMODULE)); i++)
     {
       MODULEINFO mi;
 #ifdef __USEWIDE
       wchar_t dll_name[__PMAX];
-      char name[__PMAX];
+      char dll_name_mb[__PMAX];
 #else
       char dll_name[__PMAX];
-      char *name;
 #endif
+      const char *name;
       if (GetModuleInformation (current_process_handle, hmodules[i],
 				&mi, sizeof (mi)) == 0)
 	continue;
@@ -1814,25 +1949,36 @@ windows_add_all_dlls (void)
 			       dll_name, sizeof (dll_name)) == 0)
 	continue;
 #ifdef __USEWIDE
-      wcstombs (name, dll_name, __PMAX);
+      wcstombs (dll_name_mb, dll_name, __PMAX);
+      name = dll_name_mb;
 #else
       name = dll_name;
 #endif
+      /* Convert the DLL path of 32bit processes returned by
+	 GetModuleFileNameEx from the 64bit system directory to the
+	 32bit syswow64 directory if necessary.  */
+      std::string syswow_dll_path;
+      if (convert_syswow_dir
+	  && strncasecmp (name, system_dir, system_dir_len) == 0
+	  && strchr (name + system_dir_len, '\\') == nullptr)
+	{
+	  syswow_dll_path = syswow_dir;
+	  syswow_dll_path += name + system_dir_len;
+	  name = syswow_dll_path.c_str();
+	}
 
       solib_end->next = windows_make_so (name, mi.lpBaseOfDll);
       solib_end = solib_end->next;
     }
 }
 
-static void
-do_initial_windows_stuff (struct target_ops *ops, DWORD pid, int attaching)
+void
+windows_nat_target::do_initial_windows_stuff (DWORD pid, bool attaching)
 {
   int i;
   struct inferior *inf;
 
   last_sig = GDB_SIGNAL_0;
-  event_count = 0;
-  exception_count = 0;
   open_process_used = 0;
   debug_registers_changed = 0;
   debug_registers_used = 0;
@@ -1843,33 +1989,44 @@ do_initial_windows_stuff (struct target_
 #endif
   current_event.dwProcessId = pid;
   memset (&current_event, 0, sizeof (current_event));
-  if (!target_is_pushed (ops))
-    push_target (ops);
+  if (!target_is_pushed (this))
+    push_target (this);
   disable_breakpoints_in_shlibs ();
   windows_clear_solib ();
   clear_proceed_status (0);
   init_wait_for_inferior ();
 
+#ifdef __x86_64__
+  ignore_first_breakpoint = !attaching && wow64_process;
+
+  if (!wow64_process)
+    {
+      windows_set_context_register_offsets (amd64_mappings);
+      windows_set_segment_register_p (amd64_windows_segment_register_p);
+    }
+  else
+#endif
+    {
+      windows_set_context_register_offsets (i386_mappings);
+      windows_set_segment_register_p (i386_windows_segment_register_p);
+    }
+
   inf = current_inferior ();
   inferior_appeared (inf, pid);
   inf->attach_flag = attaching;
 
-  /* Make the new process the current inferior, so terminal handling
-     can rely on it.  When attaching, we don't know about any thread
-     id here, but that's OK --- nothing should be referencing the
-     current thread until we report an event out of windows_wait.  */
-  inferior_ptid = ptid_t (pid);
-
   target_terminal::init ();
   target_terminal::inferior ();
 
   windows_initialization_done = 0;
 
+  ptid_t last_ptid;
+
   while (1)
     {
       struct target_waitstatus status;
 
-      ops->wait (minus_one_ptid, &status, 0);
+      last_ptid = this->wait (minus_one_ptid, &status, 0);
 
       /* Note windows_wait returns TARGET_WAITKIND_SPURIOUS for thread
 	 events.  */
@@ -1877,9 +2034,11 @@ do_initial_windows_stuff (struct target_
 	  && status.kind != TARGET_WAITKIND_SPURIOUS)
 	break;
 
-      ops->resume (minus_one_ptid, 0, GDB_SIGNAL_0);
+      this->resume (minus_one_ptid, 0, GDB_SIGNAL_0);
     }
 
+  switch_to_thread (find_thread_ptid (this, last_ptid));
+
   /* Now that the inferior has been started and all DLLs have been mapped,
      we can iterate over all DLLs and load them in.
 
@@ -1990,7 +2149,7 @@ windows_nat_target::attach (const char *
 
   if (from_tty)
     {
-      char *exec_file = (char *) get_exec_file (0);
+      const char *exec_file = get_exec_file (0);
 
       if (exec_file)
 	printf_unfiltered ("Attaching to program `%s', %s\n", exec_file,
@@ -2000,7 +2159,18 @@ windows_nat_target::attach (const char *
 			   target_pid_to_str (ptid_t (pid)).c_str ());
     }
 
-  do_initial_windows_stuff (this, pid, 1);
+#ifdef __x86_64__
+  HANDLE h = OpenProcess (PROCESS_QUERY_INFORMATION, FALSE, pid);
+  if (h != NULL)
+    {
+      BOOL wow64;
+      if (IsWow64Process (h, &wow64))
+	wow64_process = wow64;
+      CloseHandle (h);
+    }
+#endif
+
+  do_initial_windows_stuff (pid, 1);
   target_terminal::ours ();
 }
 
@@ -2030,7 +2200,7 @@ windows_nat_target::detach (inferior *in
     }
 
   x86_cleanup_dregs ();
-  inferior_ptid = null_ptid;
+  switch_to_no_thread ();
   detach_inferior (inf);
 
   maybe_unpush_target ();
@@ -2054,9 +2224,21 @@ windows_get_exec_module_filename (char *
   DWORD cbNeeded;
 
   cbNeeded = 0;
-  if (!EnumProcessModules (current_process_handle, &dh_buf,
-			   sizeof (HMODULE), &cbNeeded) || !cbNeeded)
-    return 0;
+#ifdef __x86_64__
+  if (wow64_process)
+    {
+      if (!EnumProcessModulesEx (current_process_handle, &dh_buf,
+				 sizeof (HMODULE), &cbNeeded,
+				 LIST_MODULES_32BIT) || !cbNeeded)
+	return 0;
+    }
+  else
+#endif
+    {
+      if (!EnumProcessModules (current_process_handle, &dh_buf,
+			       sizeof (HMODULE), &cbNeeded) || !cbNeeded)
+	return 0;
+    }
 
   /* We know the executable is always first in the list of modules,
      which we just fetched.  So no need to fetch more.  */
@@ -2545,7 +2727,7 @@ windows_nat_target::create_inferior (con
   PROCESS_INFORMATION pi;
   BOOL ret;
   DWORD flags = 0;
-  const char *inferior_io_terminal = get_inferior_io_terminal ();
+  const char *inferior_tty = current_inferior ()->tty ();
 
   if (!exec_file)
     error (_("No executable specified, use `target exec'."));
@@ -2644,14 +2826,14 @@ windows_nat_target::create_inferior (con
       w32_env = NULL;
     }
 
-  if (!inferior_io_terminal)
+  if (inferior_tty == nullptr)
     tty = ostdin = ostdout = ostderr = -1;
   else
     {
-      tty = open (inferior_io_terminal, O_RDWR | O_NOCTTY);
+      tty = open (inferior_tty, O_RDWR | O_NOCTTY);
       if (tty < 0)
 	{
-	  print_sys_errmsg (inferior_io_terminal, errno);
+	  print_sys_errmsg (inferior_tty, errno);
 	  ostdin = ostdout = ostderr = -1;
 	}
       else
@@ -2716,19 +2898,19 @@ windows_nat_target::create_inferior (con
       allargs_len = strlen (allargs_copy);
     }
   /* If not all the standard streams are redirected by the command
-     line, use inferior_io_terminal for those which aren't.  */
-  if (inferior_io_terminal
+     line, use INFERIOR_TTY for those which aren't.  */
+  if (inferior_tty != nullptr
       && !(fd_inp >= 0 && fd_out >= 0 && fd_err >= 0))
     {
       SECURITY_ATTRIBUTES sa;
       sa.nLength = sizeof(sa);
       sa.lpSecurityDescriptor = 0;
       sa.bInheritHandle = TRUE;
-      tty = CreateFileA (inferior_io_terminal, GENERIC_READ | GENERIC_WRITE,
+      tty = CreateFileA (inferior_tty, GENERIC_READ | GENERIC_WRITE,
 			 0, &sa, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
       if (tty == INVALID_HANDLE_VALUE)
 	warning (_("Warning: Failed to open TTY %s, error %#x."),
-		 inferior_io_terminal, (unsigned) GetLastError ());
+		 inferior_tty, (unsigned) GetLastError ());
     }
   if (redirected || tty != INVALID_HANDLE_VALUE)
     {
@@ -2814,6 +2996,12 @@ windows_nat_target::create_inferior (con
     error (_("Error creating process %s, (error %u)."),
 	   exec_file, (unsigned) GetLastError ());
 
+#ifdef __x86_64__
+  BOOL wow64;
+  if (IsWow64Process (pi.hProcess, &wow64))
+    wow64_process = wow64;
+#endif
+
   CloseHandle (pi.hThread);
   CloseHandle (pi.hProcess);
 
@@ -2822,7 +3010,7 @@ windows_nat_target::create_inferior (con
   else
     saw_create = 0;
 
-  do_initial_windows_stuff (this, pi.dwProcessId, 0);
+  do_initial_windows_stuff (pi.dwProcessId, 0);
 
   /* windows_continue (DBG_CONTINUE, -1, 0); */
 }
@@ -2837,6 +3025,7 @@ windows_nat_target::mourn_inferior ()
       CHECK (CloseHandle (current_process_handle));
       open_process_used = 0;
     }
+  siginfo_er.ExceptionCode = 0;
   inf_child_target::mourn_inferior ();
 }
 
@@ -2900,7 +3089,7 @@ windows_nat_target::kill ()
     {
       if (!windows_continue (DBG_CONTINUE, -1, 1))
 	break;
-      if (!WaitForDebugEvent (&current_event, INFINITE))
+      if (!wait_for_debug_event (&current_event, INFINITE))
 	break;
       if (current_event.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT)
 	break;
@@ -2920,8 +3109,8 @@ windows_nat_target::close ()
 std::string
 windows_nat_target::pid_to_str (ptid_t ptid)
 {
-  if (ptid.tid () != 0)
-    return string_printf ("Thread %d.0x%lx", ptid.pid (), ptid.tid ());
+  if (ptid.lwp () != 0)
+    return string_printf ("Thread %d.0x%lx", ptid.pid (), ptid.lwp ());
 
   return normal_pid_to_str (ptid);
 }
@@ -2949,6 +3138,7 @@ windows_xfer_shared_libraries (struct ta
 
       windows_xfer_shared_library (so->so_name, (CORE_ADDR)
 				   (uintptr_t) li->load_addr,
+				   &li->text_offset,
 				   target_gdbarch (), &obstack);
     }
   obstack_grow_str0 (&obstack, "</library-list>\n");
@@ -2969,6 +3159,51 @@ windows_xfer_shared_libraries (struct ta
   return len != 0 ? TARGET_XFER_OK : TARGET_XFER_EOF;
 }
 
+/* Helper for windows_nat_target::xfer_partial that handles signal info.  */
+
+static enum target_xfer_status
+windows_xfer_siginfo (gdb_byte *readbuf, ULONGEST offset, ULONGEST len,
+		      ULONGEST *xfered_len)
+{
+  char *buf = (char *) &siginfo_er;
+  size_t bufsize = sizeof (siginfo_er);
+
+#ifdef __x86_64__
+  EXCEPTION_RECORD32 er32;
+  if (wow64_process)
+    {
+      buf = (char *) &er32;
+      bufsize = sizeof (er32);
+
+      er32.ExceptionCode = siginfo_er.ExceptionCode;
+      er32.ExceptionFlags = siginfo_er.ExceptionFlags;
+      er32.ExceptionRecord = (uintptr_t) siginfo_er.ExceptionRecord;
+      er32.ExceptionAddress = (uintptr_t) siginfo_er.ExceptionAddress;
+      er32.NumberParameters = siginfo_er.NumberParameters;
+      int i;
+      for (i = 0; i < EXCEPTION_MAXIMUM_PARAMETERS; i++)
+	er32.ExceptionInformation[i] = siginfo_er.ExceptionInformation[i];
+    }
+#endif
+
+  if (siginfo_er.ExceptionCode == 0)
+    return TARGET_XFER_E_IO;
+
+  if (readbuf == nullptr)
+    return TARGET_XFER_E_IO;
+
+  if (offset > bufsize)
+    return TARGET_XFER_E_IO;
+
+  if (offset + len > bufsize)
+    len = bufsize - offset;
+
+  memcpy (readbuf, buf + offset, len);
+  *xfered_len = len;
+
+  return TARGET_XFER_OK;
+}
+
 enum target_xfer_status
 windows_nat_target::xfer_partial (enum target_object object,
 				  const char *annex, gdb_byte *readbuf,
@@ -2984,6 +3219,9 @@ windows_nat_target::xfer_partial (enum t
       return windows_xfer_shared_libraries (this, object, annex, readbuf,
 					    writebuf, offset, len, xfered_len);
 
+    case TARGET_OBJECT_SIGNAL_INFO:
+      return windows_xfer_siginfo (readbuf, offset, len, xfered_len);
+
     default:
       if (beneath () == NULL)
 	{
@@ -3006,7 +3244,7 @@ windows_nat_target::get_tib_address (pti
 {
   windows_thread_info *th;
 
-  th = thread_rec (ptid.tid (), 0);
+  th = thread_rec (ptid, DONT_INVALIDATE_CONTEXT);
   if (th == NULL)
     return false;
 
@@ -3019,7 +3257,7 @@ windows_nat_target::get_tib_address (pti
 ptid_t
 windows_nat_target::get_ada_task_ptid (long lwp, long thread)
 {
-  return ptid_t (inferior_ptid.pid (), 0, lwp);
+  return ptid_t (inferior_ptid.pid (), lwp, 0);
 }
 
 /* Implementation of the to_thread_name method.  */
@@ -3027,12 +3265,13 @@ windows_nat_target::get_ada_task_ptid (l
 const char *
 windows_nat_target::thread_name (struct thread_info *thr)
 {
-  return thread_rec (thr->ptid.tid (), 0)->name;
+  return thread_rec (thr->ptid, DONT_INVALIDATE_CONTEXT)->name.get ();
 }
 
 
+void _initialize_windows_nat ();
 void
-_initialize_windows_nat (void)
+_initialize_windows_nat ()
 {
   x86_dr_low.set_control = cygwin_set_dr7;
   x86_dr_low.set_addr = cygwin_set_dr;
@@ -3185,16 +3424,15 @@ cygwin_get_dr7 (void)
 bool
 windows_nat_target::thread_alive (ptid_t ptid)
 {
-  int tid;
-
-  gdb_assert (ptid.tid () != 0);
-  tid = ptid.tid ();
+  gdb_assert (ptid.lwp () != 0);
 
-  return WaitForSingleObject (thread_rec (tid, FALSE)->h, 0) != WAIT_OBJECT_0;
+  return (WaitForSingleObject (thread_rec (ptid, DONT_INVALIDATE_CONTEXT)->h, 0)
+	  != WAIT_OBJECT_0);
 }
 
+void _initialize_check_for_gdb_ini ();
 void
-_initialize_check_for_gdb_ini (void)
+_initialize_check_for_gdb_ini ()
 {
   char *homedir;
   if (inhibit_gdbinit)
@@ -3290,8 +3528,9 @@ bad_GetConsoleFontSize (HANDLE w, DWORD
 /* Load any functions which may not be available in ancient versions
    of Windows.  */
 
+void _initialize_loadable ();
 void
-_initialize_loadable (void)
+_initialize_loadable ()
 {
   HMODULE hm = NULL;
 
@@ -3307,6 +3546,12 @@ _initialize_loadable (void)
       GPA (hm, GetConsoleFontSize);
       GPA (hm, DebugActiveProcessStop);
       GPA (hm, GetCurrentConsoleFont);
+#ifdef __x86_64__
+      GPA (hm, Wow64SuspendThread);
+      GPA (hm, Wow64GetThreadContext);
+      GPA (hm, Wow64SetThreadContext);
+      GPA (hm, Wow64GetThreadSelectorEntry);
+#endif
     }
 
   /* Set variables to dummy versions of these processes if the function
@@ -3329,6 +3574,9 @@ _initialize_loadable (void)
   if (hm)
     {
       GPA (hm, EnumProcessModules);
+#ifdef __x86_64__
+      GPA (hm, EnumProcessModulesEx);
+#endif
       GPA (hm, GetModuleInformation);
       GetModuleFileNameEx = (GetModuleFileNameEx_ftype *)
         GetProcAddress (hm, GetModuleFileNameEx_name);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/windows-nat.h ./gdb/windows-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/windows-nat.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/windows-nat.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,15 +18,23 @@
 #ifndef WINDOWS_NAT_H
 #define WINDOWS_NAT_H
 
-extern void windows_set_context_register_offsets (const int *offsets);
-
 /* A pointer to a function that should return non-zero iff REGNUM
    corresponds to one of the segment registers.  */
 typedef int (segment_register_p_ftype) (int regnum);
 
-/* Set the function that should be used by this module to determine
-   whether a given register is a segment register or not.  */
-extern void windows_set_segment_register_p (segment_register_p_ftype *fun);
+/* segment_register_p_ftype implementation for x86.  */
+int i386_windows_segment_register_p (int regnum);
+
+/* context register offests for x86.  */
+extern const int i386_mappings[];
+
+#ifdef __x86_64__
+/* segment_register_p_ftype implementation for amd64.  */
+int amd64_windows_segment_register_p (int regnum);
+
+/* context register offests for amd64.  */
+extern const int amd64_mappings[];
+#endif
 
 #endif
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/windows-tdep.c ./gdb/windows-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/windows-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/windows-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -34,6 +34,76 @@
 #include "solib.h"
 #include "solib-target.h"
 #include "gdbcore.h"
+#include "coff/internal.h"
+#include "libcoff.h"
+#include "solist.h"
+
+#define CYGWIN_DLL_NAME "cygwin1.dll"
+
+/* Windows signal numbers differ between MinGW flavors and between
+   those and Cygwin.  The below enumerations were gleaned from the
+   respective headers.  */
+
+/* Signal numbers for the various MinGW flavors.  The ones marked with
+   MinGW-w64 are defined by MinGW-w64, not by mingw.org's MinGW.  */
+
+enum
+{
+  WINDOWS_SIGHUP = 1,	/* MinGW-w64 */
+  WINDOWS_SIGINT = 2,
+  WINDOWS_SIGQUIT = 3,	/* MinGW-w64 */
+  WINDOWS_SIGILL = 4,
+  WINDOWS_SIGTRAP = 5,	/* MinGW-w64 */
+  WINDOWS_SIGIOT = 6,	/* MinGW-w64 */
+  WINDOWS_SIGEMT = 7,	/* MinGW-w64 */
+  WINDOWS_SIGFPE = 8,
+  WINDOWS_SIGKILL = 9,	/* MinGW-w64 */
+  WINDOWS_SIGBUS = 10,	/* MinGW-w64 */
+  WINDOWS_SIGSEGV = 11,
+  WINDOWS_SIGSYS = 12,	/* MinGW-w64 */
+  WINDOWS_SIGPIPE = 13,	/* MinGW-w64 */
+  WINDOWS_SIGALRM = 14,	/* MinGW-w64 */
+  WINDOWS_SIGTERM = 15,
+  WINDOWS_SIGBREAK = 21,
+  WINDOWS_SIGABRT = 22,
+};
+
+/* Signal numbers for Cygwin.  */
+
+enum
+{
+  CYGWIN_SIGHUP = 1,
+  CYGWIN_SIGINT = 2,
+  CYGWIN_SIGQUIT = 3,
+  CYGWIN_SIGILL = 4,
+  CYGWIN_SIGTRAP = 5,
+  CYGWIN_SIGABRT = 6,
+  CYGWIN_SIGEMT = 7,
+  CYGWIN_SIGFPE = 8,
+  CYGWIN_SIGKILL = 9,
+  CYGWIN_SIGBUS = 10,
+  CYGWIN_SIGSEGV = 11,
+  CYGWIN_SIGSYS = 12,
+  CYGWIN_SIGPIPE = 13,
+  CYGWIN_SIGALRM = 14,
+  CYGWIN_SIGTERM = 15,
+  CYGWIN_SIGURG = 16,
+  CYGWIN_SIGSTOP = 17,
+  CYGWIN_SIGTSTP = 18,
+  CYGWIN_SIGCONT = 19,
+  CYGWIN_SIGCHLD = 20,
+  CYGWIN_SIGTTIN = 21,
+  CYGWIN_SIGTTOU = 22,
+  CYGWIN_SIGIO = 23,
+  CYGWIN_SIGXCPU = 24,
+  CYGWIN_SIGXFSZ = 25,
+  CYGWIN_SIGVTALRM = 26,
+  CYGWIN_SIGPROF = 27,
+  CYGWIN_SIGWINCH = 28,
+  CYGWIN_SIGLOST = 29,
+  CYGWIN_SIGUSR1 = 30,
+  CYGWIN_SIGUSR2 = 31,
+};
 
 struct cmd_list_element *info_w32_cmdlist;
 
@@ -102,33 +172,65 @@ static const int FULL_TIB_SIZE = 0x1000;
 
 static bool maint_display_all_tib = false;
 
+static struct gdbarch_data *windows_gdbarch_data_handle;
+
+struct windows_gdbarch_data
+{
+  struct type *siginfo_type;
+  struct type *tib_ptr_type; /* Type of thread information block */
+};
+
+/* Allocate windows_gdbarch_data for an arch.  */
+
+static void *
+init_windows_gdbarch_data (struct gdbarch *gdbarch)
+{
+  return GDBARCH_OBSTACK_ZALLOC (gdbarch, struct windows_gdbarch_data);
+}
+
+/* Get windows_gdbarch_data of an arch.  */
+
+static struct windows_gdbarch_data *
+get_windows_gdbarch_data (struct gdbarch *gdbarch)
+{
+  return ((struct windows_gdbarch_data *)
+	  gdbarch_data (gdbarch, windows_gdbarch_data_handle));
+}
+
 /* Define Thread Local Base pointer type.  */
 
 static struct type *
 windows_get_tlb_type (struct gdbarch *gdbarch)
 {
-  static struct gdbarch *last_gdbarch = NULL;
-  static struct type *last_tlb_type = NULL;
   struct type *dword_ptr_type, *dword32_type, *void_ptr_type;
   struct type *peb_ldr_type, *peb_ldr_ptr_type;
   struct type *peb_type, *peb_ptr_type, *list_type;
   struct type *module_list_ptr_type;
   struct type *tib_type, *seh_type, *tib_ptr_type, *seh_ptr_type;
+  struct type *word_type, *wchar_type, *wchar_ptr_type;
+  struct type *uni_str_type, *rupp_type, *rupp_ptr_type;
+
+  windows_gdbarch_data *windows_gdbarch_data
+    = get_windows_gdbarch_data (gdbarch);
+  if (windows_gdbarch_data->tib_ptr_type != nullptr)
+    return windows_gdbarch_data->tib_ptr_type;
 
-  /* Do not rebuild type if same gdbarch as last time.  */
-  if (last_tlb_type && last_gdbarch == gdbarch)
-    return last_tlb_type;
-  
   dword_ptr_type = arch_integer_type (gdbarch, gdbarch_ptr_bit (gdbarch),
 				 1, "DWORD_PTR");
   dword32_type = arch_integer_type (gdbarch, 32,
 				 1, "DWORD32");
+  word_type = arch_integer_type (gdbarch, 16,
+				 1, "WORD");
+  wchar_type = arch_integer_type (gdbarch, 16,
+				  1, "wchar_t");
   void_ptr_type = lookup_pointer_type (builtin_type (gdbarch)->builtin_void);
+  wchar_ptr_type = arch_pointer_type (gdbarch, gdbarch_ptr_bit (gdbarch),
+				      NULL, wchar_type);
 
   /* list entry */
 
   list_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (list_type) = xstrdup ("list");
+  list_type->set_name (xstrdup ("list"));
 
   module_list_ptr_type = void_ptr_type;
 
@@ -140,7 +242,7 @@ windows_get_tlb_type (struct gdbarch *gd
   /* Structured Exception Handler */
 
   seh_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (seh_type) = xstrdup ("seh");
+  seh_type->set_name (xstrdup ("seh"));
 
   seh_ptr_type = arch_type (gdbarch, TYPE_CODE_PTR,
 			    TYPE_LENGTH (void_ptr_type) * TARGET_CHAR_BIT,
@@ -153,7 +255,7 @@ windows_get_tlb_type (struct gdbarch *gd
 
   /* struct _PEB_LDR_DATA */
   peb_ldr_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (peb_ldr_type) = xstrdup ("peb_ldr_data");
+  peb_ldr_type->set_name (xstrdup ("peb_ldr_data"));
 
   append_composite_type_field (peb_ldr_type, "length", dword32_type);
   append_composite_type_field (peb_ldr_type, "initialized", dword32_type);
@@ -168,17 +270,68 @@ windows_get_tlb_type (struct gdbarch *gd
 				NULL);
   TYPE_TARGET_TYPE (peb_ldr_ptr_type) = peb_ldr_type;
 
+  /* struct UNICODE_STRING */
+  uni_str_type = arch_composite_type (gdbarch, "unicode_string",
+				      TYPE_CODE_STRUCT);
+
+  append_composite_type_field (uni_str_type, "length", word_type);
+  append_composite_type_field (uni_str_type, "maximum_length", word_type);
+  append_composite_type_field_aligned (uni_str_type, "buffer",
+				       wchar_ptr_type,
+				       TYPE_LENGTH (wchar_ptr_type));
+
+  /* struct _RTL_USER_PROCESS_PARAMETERS */
+  rupp_type = arch_composite_type (gdbarch, "rtl_user_process_parameters",
+				   TYPE_CODE_STRUCT);
+
+  append_composite_type_field (rupp_type, "maximum_length", dword32_type);
+  append_composite_type_field (rupp_type, "length", dword32_type);
+  append_composite_type_field (rupp_type, "flags", dword32_type);
+  append_composite_type_field (rupp_type, "debug_flags", dword32_type);
+  append_composite_type_field (rupp_type, "console_handle", void_ptr_type);
+  append_composite_type_field (rupp_type, "console_flags", dword32_type);
+  append_composite_type_field_aligned (rupp_type, "standard_input",
+				       void_ptr_type,
+				       TYPE_LENGTH (void_ptr_type));
+  append_composite_type_field (rupp_type, "standard_output", void_ptr_type);
+  append_composite_type_field (rupp_type, "standard_error", void_ptr_type);
+  append_composite_type_field (rupp_type, "current_directory", uni_str_type);
+  append_composite_type_field (rupp_type, "current_directory_handle",
+			       void_ptr_type);
+  append_composite_type_field (rupp_type, "dll_path", uni_str_type);
+  append_composite_type_field (rupp_type, "image_path_name", uni_str_type);
+  append_composite_type_field (rupp_type, "command_line", uni_str_type);
+  append_composite_type_field (rupp_type, "environment", void_ptr_type);
+  append_composite_type_field (rupp_type, "starting_x", dword32_type);
+  append_composite_type_field (rupp_type, "starting_y", dword32_type);
+  append_composite_type_field (rupp_type, "count_x", dword32_type);
+  append_composite_type_field (rupp_type, "count_y", dword32_type);
+  append_composite_type_field (rupp_type, "count_chars_x", dword32_type);
+  append_composite_type_field (rupp_type, "count_chars_y", dword32_type);
+  append_composite_type_field (rupp_type, "fill_attribute", dword32_type);
+  append_composite_type_field (rupp_type, "window_flags", dword32_type);
+  append_composite_type_field (rupp_type, "show_window_flags", dword32_type);
+  append_composite_type_field_aligned (rupp_type, "window_title",
+				       uni_str_type,
+				       TYPE_LENGTH (void_ptr_type));
+  append_composite_type_field (rupp_type, "desktop_info", uni_str_type);
+  append_composite_type_field (rupp_type, "shell_info", uni_str_type);
+  append_composite_type_field (rupp_type, "runtime_data", uni_str_type);
+
+  rupp_ptr_type = arch_pointer_type (gdbarch, gdbarch_ptr_bit (gdbarch),
+				     NULL, rupp_type);
+
 
   /* struct process environment block */
   peb_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (peb_type) = xstrdup ("peb");
+  peb_type->set_name (xstrdup ("peb"));
 
   /* First bytes contain several flags.  */
   append_composite_type_field (peb_type, "flags", dword_ptr_type);
   append_composite_type_field (peb_type, "mutant", void_ptr_type);
   append_composite_type_field (peb_type, "image_base_address", void_ptr_type);
   append_composite_type_field (peb_type, "ldr", peb_ldr_ptr_type);
-  append_composite_type_field (peb_type, "process_parameters", void_ptr_type);
+  append_composite_type_field (peb_type, "process_parameters", rupp_ptr_type);
   append_composite_type_field (peb_type, "sub_system_data", void_ptr_type);
   append_composite_type_field (peb_type, "process_heap", void_ptr_type);
   append_composite_type_field (peb_type, "fast_peb_lock", void_ptr_type);
@@ -190,7 +343,7 @@ windows_get_tlb_type (struct gdbarch *gd
 
   /* struct thread information block */
   tib_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
-  TYPE_NAME (tib_type) = xstrdup ("tib");
+  tib_type->set_name (xstrdup ("tib"));
 
   /* uint32_t current_seh;			%fs:0x0000 */
   append_composite_type_field (tib_type, "current_seh", seh_ptr_type);
@@ -231,8 +384,7 @@ windows_get_tlb_type (struct gdbarch *gd
 			    NULL);
   TYPE_TARGET_TYPE (tib_ptr_type) = tib_type;
 
-  last_tlb_type = tib_ptr_type;
-  last_gdbarch = gdbarch;
+  windows_gdbarch_data->tib_ptr_type = tib_ptr_type;
 
   return tib_ptr_type;
 }
@@ -373,19 +525,27 @@ display_tib (const char * args, int from
 
 void
 windows_xfer_shared_library (const char* so_name, CORE_ADDR load_addr,
+			     CORE_ADDR *text_offset_cached,
 			     struct gdbarch *gdbarch, struct obstack *obstack)
 {
-  CORE_ADDR text_offset;
+  CORE_ADDR text_offset = text_offset_cached ? *text_offset_cached : 0;
 
   obstack_grow_str (obstack, "<library name=\"");
   std::string p = xml_escape_text (so_name);
   obstack_grow_str (obstack, p.c_str ());
   obstack_grow_str (obstack, "\"><segment address=\"");
-  gdb_bfd_ref_ptr dll (gdb_bfd_open (so_name, gnutarget, -1));
-  /* The following calls are OK even if dll is NULL.
-     The default value 0x1000 is returned by pe_text_section_offset
-     in that case.  */
-  text_offset = pe_text_section_offset (dll.get ());
+
+  if (!text_offset)
+    {
+      gdb_bfd_ref_ptr dll (gdb_bfd_open (so_name, gnutarget));
+      /* The following calls are OK even if dll is NULL.
+	 The default value 0x1000 is returned by pe_text_section_offset
+	 in that case.  */
+      text_offset = pe_text_section_offset (dll.get ());
+      if (text_offset_cached)
+	*text_offset_cached = text_offset;
+    }
+
   obstack_grow_str (obstack, paddress (gdbarch, load_addr + text_offset));
   obstack_grow_str (obstack, "\"/></library>");
 }
@@ -442,11 +602,6 @@ show_maint_show_all_tib (struct ui_file
 			    "Thread Information Block is %s.\n"), value);
 }
 
-static void
-info_w32_command (const char *args, int from_tty)
-{
-  help_list (info_w32_cmdlist, "info w32 ", class_info, gdb_stdout);
-}
 
 static int w32_prefix_command_valid = 0;
 void
@@ -454,18 +609,320 @@ init_w32_command_list (void)
 {
   if (!w32_prefix_command_valid)
     {
-      add_prefix_cmd ("w32", class_info, info_w32_command,
-		      _("Print information specific to Win32 debugging."),
-		      &info_w32_cmdlist, "info w32 ", 0, &infolist);
+      add_basic_prefix_cmd
+	("w32", class_info,
+	 _("Print information specific to Win32 debugging."),
+	 &info_w32_cmdlist, "info w32 ", 0, &infolist);
       w32_prefix_command_valid = 1;
     }
 }
 
-/* To be called from the various GDB_OSABI_CYGWIN handlers for the
-   various Windows architectures and machine types.  */
+/* Implementation of `gdbarch_gdb_signal_to_target' for Windows.  */
 
-void
-windows_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+static int
+windows_gdb_signal_to_target (struct gdbarch *gdbarch, enum gdb_signal signal)
+{
+  switch (signal)
+    {
+    case GDB_SIGNAL_0:
+      return 0;
+    case GDB_SIGNAL_HUP:
+      return WINDOWS_SIGHUP;
+    case GDB_SIGNAL_INT:
+      return WINDOWS_SIGINT;
+    case GDB_SIGNAL_QUIT:
+      return WINDOWS_SIGQUIT;
+    case GDB_SIGNAL_ILL:
+      return WINDOWS_SIGILL;
+    case GDB_SIGNAL_TRAP:
+      return WINDOWS_SIGTRAP;
+    case GDB_SIGNAL_ABRT:
+      return WINDOWS_SIGABRT;
+    case GDB_SIGNAL_EMT:
+      return WINDOWS_SIGEMT;
+    case GDB_SIGNAL_FPE:
+      return WINDOWS_SIGFPE;
+    case GDB_SIGNAL_KILL:
+      return WINDOWS_SIGKILL;
+    case GDB_SIGNAL_BUS:
+      return WINDOWS_SIGBUS;
+    case GDB_SIGNAL_SEGV:
+      return WINDOWS_SIGSEGV;
+    case GDB_SIGNAL_SYS:
+      return WINDOWS_SIGSYS;
+    case GDB_SIGNAL_PIPE:
+      return WINDOWS_SIGPIPE;
+    case GDB_SIGNAL_ALRM:
+      return WINDOWS_SIGALRM;
+    case GDB_SIGNAL_TERM:
+      return WINDOWS_SIGTERM;
+    }
+  return -1;
+}
+
+/* Implementation of `gdbarch_gdb_signal_to_target' for Cygwin.  */
+
+static int
+cygwin_gdb_signal_to_target (struct gdbarch *gdbarch, enum gdb_signal signal)
+{
+  switch (signal)
+    {
+    case GDB_SIGNAL_0:
+      return 0;
+    case GDB_SIGNAL_HUP:
+      return CYGWIN_SIGHUP;
+    case GDB_SIGNAL_INT:
+      return CYGWIN_SIGINT;
+    case GDB_SIGNAL_QUIT:
+      return CYGWIN_SIGQUIT;
+    case GDB_SIGNAL_ILL:
+      return CYGWIN_SIGILL;
+    case GDB_SIGNAL_TRAP:
+      return CYGWIN_SIGTRAP;
+    case GDB_SIGNAL_ABRT:
+      return CYGWIN_SIGABRT;
+    case GDB_SIGNAL_EMT:
+      return CYGWIN_SIGEMT;
+    case GDB_SIGNAL_FPE:
+      return CYGWIN_SIGFPE;
+    case GDB_SIGNAL_KILL:
+      return CYGWIN_SIGKILL;
+    case GDB_SIGNAL_BUS:
+      return CYGWIN_SIGBUS;
+    case GDB_SIGNAL_SEGV:
+      return CYGWIN_SIGSEGV;
+    case GDB_SIGNAL_SYS:
+      return CYGWIN_SIGSYS;
+    case GDB_SIGNAL_PIPE:
+      return CYGWIN_SIGPIPE;
+    case GDB_SIGNAL_ALRM:
+      return CYGWIN_SIGALRM;
+    case GDB_SIGNAL_TERM:
+      return CYGWIN_SIGTERM;
+    case GDB_SIGNAL_URG:
+      return CYGWIN_SIGURG;
+    case GDB_SIGNAL_STOP:
+      return CYGWIN_SIGSTOP;
+    case GDB_SIGNAL_TSTP:
+      return CYGWIN_SIGTSTP;
+    case GDB_SIGNAL_CONT:
+      return CYGWIN_SIGCONT;
+    case GDB_SIGNAL_CHLD:
+      return CYGWIN_SIGCHLD;
+    case GDB_SIGNAL_TTIN:
+      return CYGWIN_SIGTTIN;
+    case GDB_SIGNAL_TTOU:
+      return CYGWIN_SIGTTOU;
+    case GDB_SIGNAL_IO:
+      return CYGWIN_SIGIO;
+    case GDB_SIGNAL_XCPU:
+      return CYGWIN_SIGXCPU;
+    case GDB_SIGNAL_XFSZ:
+      return CYGWIN_SIGXFSZ;
+    case GDB_SIGNAL_VTALRM:
+      return CYGWIN_SIGVTALRM;
+    case GDB_SIGNAL_PROF:
+      return CYGWIN_SIGPROF;
+    case GDB_SIGNAL_WINCH:
+      return CYGWIN_SIGWINCH;
+    case GDB_SIGNAL_PWR:
+      return CYGWIN_SIGLOST;
+    case GDB_SIGNAL_USR1:
+      return CYGWIN_SIGUSR1;
+    case GDB_SIGNAL_USR2:
+      return CYGWIN_SIGUSR2;
+    }
+  return -1;
+}
+
+struct enum_value_name
+{
+  uint32_t value;
+  const char *name;
+};
+
+/* Allocate a TYPE_CODE_ENUM type structure with its named values.  */
+
+static struct type *
+create_enum (struct gdbarch *gdbarch, int bit, const char *name,
+	     const struct enum_value_name *values, int count)
+{
+  struct type *type;
+  int i;
+
+  type = arch_type (gdbarch, TYPE_CODE_ENUM, bit, name);
+  type->set_num_fields (count);
+  type->set_fields
+    ((struct field *) TYPE_ZALLOC (type, sizeof (struct field) * count));
+  TYPE_UNSIGNED (type) = 1;
+
+  for (i = 0; i < count; i++)
+  {
+    TYPE_FIELD_NAME (type, i) = values[i].name;
+    SET_FIELD_ENUMVAL (type->field (i), values[i].value);
+  }
+
+  return type;
+}
+
+static const struct enum_value_name exception_values[] =
+{
+  { 0x40000015, "FATAL_APP_EXIT" },
+  { 0x4000001E, "WX86_SINGLE_STEP" },
+  { 0x4000001F, "WX86_BREAKPOINT" },
+  { 0x40010005, "DBG_CONTROL_C" },
+  { 0x40010008, "DBG_CONTROL_BREAK" },
+  { 0x80000002, "DATATYPE_MISALIGNMENT" },
+  { 0x80000003, "BREAKPOINT" },
+  { 0x80000004, "SINGLE_STEP" },
+  { 0xC0000005, "ACCESS_VIOLATION" },
+  { 0xC0000006, "IN_PAGE_ERROR" },
+  { 0xC000001D, "ILLEGAL_INSTRUCTION" },
+  { 0xC0000025, "NONCONTINUABLE_EXCEPTION" },
+  { 0xC0000026, "INVALID_DISPOSITION" },
+  { 0xC000008C, "ARRAY_BOUNDS_EXCEEDED" },
+  { 0xC000008D, "FLOAT_DENORMAL_OPERAND" },
+  { 0xC000008E, "FLOAT_DIVIDE_BY_ZERO" },
+  { 0xC000008F, "FLOAT_INEXACT_RESULT" },
+  { 0xC0000090, "FLOAT_INVALID_OPERATION" },
+  { 0xC0000091, "FLOAT_OVERFLOW" },
+  { 0xC0000092, "FLOAT_STACK_CHECK" },
+  { 0xC0000093, "FLOAT_UNDERFLOW" },
+  { 0xC0000094, "INTEGER_DIVIDE_BY_ZERO" },
+  { 0xC0000095, "INTEGER_OVERFLOW" },
+  { 0xC0000096, "PRIV_INSTRUCTION" },
+  { 0xC00000FD, "STACK_OVERFLOW" },
+  { 0xC0000409, "FAST_FAIL" },
+};
+
+static const struct enum_value_name violation_values[] =
+{
+  { 0, "READ_ACCESS_VIOLATION" },
+  { 1, "WRITE_ACCESS_VIOLATION" },
+  { 8, "DATA_EXECUTION_PREVENTION_VIOLATION" },
+};
+
+/* Implement the "get_siginfo_type" gdbarch method.  */
+
+static struct type *
+windows_get_siginfo_type (struct gdbarch *gdbarch)
+{
+  struct windows_gdbarch_data *windows_gdbarch_data;
+  struct type *dword_type, *pvoid_type, *ulongptr_type;
+  struct type *code_enum, *violation_enum;
+  struct type *violation_type, *para_type, *siginfo_ptr_type, *siginfo_type;
+
+  windows_gdbarch_data = get_windows_gdbarch_data (gdbarch);
+  if (windows_gdbarch_data->siginfo_type != NULL)
+    return windows_gdbarch_data->siginfo_type;
+
+  dword_type = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
+				  1, "DWORD");
+  pvoid_type = arch_pointer_type (gdbarch, gdbarch_ptr_bit (gdbarch), "PVOID",
+				  builtin_type (gdbarch)->builtin_void);
+  ulongptr_type = arch_integer_type (gdbarch, gdbarch_ptr_bit (gdbarch),
+				     1, "ULONG_PTR");
+
+  /* ExceptionCode value names */
+  code_enum = create_enum (gdbarch, gdbarch_int_bit (gdbarch),
+			   "ExceptionCode", exception_values,
+			   ARRAY_SIZE (exception_values));
+
+  /* ACCESS_VIOLATION type names */
+  violation_enum = create_enum (gdbarch, gdbarch_ptr_bit (gdbarch),
+				"ViolationType", violation_values,
+				ARRAY_SIZE (violation_values));
+
+  /* ACCESS_VIOLATION information */
+  violation_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+  append_composite_type_field (violation_type, "Type", violation_enum);
+  append_composite_type_field (violation_type, "Address", pvoid_type);
+
+  /* Unnamed union of the documented field ExceptionInformation,
+     and the alternative AccessViolationInformation (which displays
+     human-readable values for ExceptionCode ACCESS_VIOLATION).  */
+  para_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
+  append_composite_type_field (para_type, "ExceptionInformation",
+			       lookup_array_range_type (ulongptr_type, 0, 14));
+  append_composite_type_field (para_type, "AccessViolationInformation",
+			       violation_type);
+
+  siginfo_type = arch_composite_type (gdbarch, "EXCEPTION_RECORD",
+				      TYPE_CODE_STRUCT);
+  siginfo_ptr_type = arch_pointer_type (gdbarch, gdbarch_ptr_bit (gdbarch),
+					NULL, siginfo_type);
+
+  /* ExceptionCode is documented as type DWORD, but here a helper
+     enum type is used instead to display a human-readable value.  */
+  append_composite_type_field (siginfo_type, "ExceptionCode", code_enum);
+  append_composite_type_field (siginfo_type, "ExceptionFlags", dword_type);
+  append_composite_type_field (siginfo_type, "ExceptionRecord",
+			       siginfo_ptr_type);
+  append_composite_type_field (siginfo_type, "ExceptionAddress",
+			       pvoid_type);
+  append_composite_type_field (siginfo_type, "NumberParameters", dword_type);
+  /* The 64-bit variant needs some padding.  */
+  append_composite_type_field_aligned (siginfo_type, "",
+				       para_type, TYPE_LENGTH (ulongptr_type));
+
+  windows_gdbarch_data->siginfo_type = siginfo_type;
+
+  return siginfo_type;
+}
+
+/* Implement the "solib_create_inferior_hook" target_so_ops method.  */
+
+static void
+windows_solib_create_inferior_hook (int from_tty)
+{
+  CORE_ADDR exec_base = 0;
+
+  /* Find base address of main executable in
+     TIB->process_environment_block->image_base_address.  */
+  struct gdbarch *gdbarch = target_gdbarch ();
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  int ptr_bytes;
+  int peb_offset;  /* Offset of process_environment_block in TIB.  */
+  int base_offset; /* Offset of image_base_address in PEB.  */
+  if (gdbarch_ptr_bit (gdbarch) == 32)
+    {
+      ptr_bytes = 4;
+      peb_offset = 48;
+      base_offset = 8;
+    }
+  else
+    {
+      ptr_bytes = 8;
+      peb_offset = 96;
+      base_offset = 16;
+    }
+  CORE_ADDR tlb;
+  gdb_byte buf[8];
+  if (target_has_execution
+      && target_get_tib_address (inferior_ptid, &tlb)
+      && !target_read_memory (tlb + peb_offset, buf, ptr_bytes))
+    {
+      CORE_ADDR peb = extract_unsigned_integer (buf, ptr_bytes, byte_order);
+      if (!target_read_memory (peb + base_offset, buf, ptr_bytes))
+	exec_base = extract_unsigned_integer (buf, ptr_bytes, byte_order);
+    }
+
+  /* Rebase executable if the base address changed because of ASLR.  */
+  if (symfile_objfile != nullptr && exec_base != 0)
+    {
+      CORE_ADDR vmaddr = pe_data (exec_bfd)->pe_opthdr.ImageBase;
+      if (vmaddr != exec_base)
+	objfile_rebase (symfile_objfile, exec_base - vmaddr);
+    }
+}
+
+static struct target_so_ops windows_so_ops;
+
+/* Common parts for gdbarch initialization for the Windows and Cygwin OS
+   ABIs.  */
+
+static void
+windows_init_abi_common (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   set_gdbarch_wchar_bit (gdbarch, 16);
   set_gdbarch_wchar_signed (gdbarch, 0);
@@ -477,7 +934,29 @@ windows_init_abi (struct gdbarch_info in
   set_gdbarch_iterate_over_objfiles_in_search_order
     (gdbarch, windows_iterate_over_objfiles_in_search_order);
 
-  set_solib_ops (gdbarch, &solib_target_so_ops);
+  windows_so_ops = solib_target_so_ops;
+  windows_so_ops.solib_create_inferior_hook
+    = windows_solib_create_inferior_hook;
+  set_solib_ops (gdbarch, &windows_so_ops);
+
+  set_gdbarch_get_siginfo_type (gdbarch, windows_get_siginfo_type);
+}
+
+/* See windows-tdep.h.  */
+void
+windows_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  windows_init_abi_common (info, gdbarch);
+  set_gdbarch_gdb_signal_to_target (gdbarch, windows_gdb_signal_to_target);
+}
+
+/* See windows-tdep.h.  */
+
+void
+cygwin_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  windows_init_abi_common (info, gdbarch);
+  set_gdbarch_gdb_signal_to_target (gdbarch, cygwin_gdb_signal_to_target);
 }
 
 /* Implementation of `tlb' variable.  */
@@ -489,9 +968,133 @@ static const struct internalvar_funcs tl
   NULL
 };
 
+/* Layout of an element of a PE's Import Directory Table.  Based on:
+
+     https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#import-directory-table
+ */
+
+struct pe_import_directory_entry
+{
+  uint32_t import_lookup_table_rva;
+  uint32_t timestamp;
+  uint32_t forwarder_chain;
+  uint32_t name_rva;
+  uint32_t import_address_table_rva;
+};
+
+gdb_static_assert (sizeof (pe_import_directory_entry) == 20);
+
+/* See windows-tdep.h.  */
+
+bool
+is_linked_with_cygwin_dll (bfd *abfd)
+{
+  /* The list of DLLs a PE is linked to is in the .idata section.  See:
+
+     https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#the-idata-section
+   */
+  asection *idata_section = bfd_get_section_by_name (abfd, ".idata");
+  if (idata_section == nullptr)
+    return false;
+
+  bfd_size_type idata_section_size = bfd_section_size (idata_section);
+  internal_extra_pe_aouthdr *pe_extra = &pe_data (abfd)->pe_opthdr;
+  bfd_vma import_table_va = pe_extra->DataDirectory[PE_IMPORT_TABLE].VirtualAddress;
+  bfd_vma idata_section_va = bfd_section_vma (idata_section);
+
+  /* The section's virtual address as reported by BFD has the image base applied,
+     remove it.  */
+  gdb_assert (idata_section_va >= pe_extra->ImageBase);
+  idata_section_va -= pe_extra->ImageBase;
+
+  bfd_vma idata_section_end_va = idata_section_va + idata_section_size;
+
+  /* Make sure that the import table is indeed within the .idata section's range.  */
+  if (import_table_va < idata_section_va
+      || import_table_va >= idata_section_end_va)
+    {
+      warning (_("\
+%s: import table's virtual address (0x%" BFD_VMA_FMT "x) is outside .idata \
+section's range [0x%" BFD_VMA_FMT "x, 0x%" BFD_VMA_FMT "x[."),
+	       bfd_get_filename (abfd), import_table_va, idata_section_va,
+	       idata_section_end_va);
+      return false;
+    }
+
+  /* The import table starts at this offset into the .idata section.  */
+  bfd_vma import_table_offset_in_sect = import_table_va - idata_section_va;
+
+  /* Get the section's data.  */
+  gdb::byte_vector idata_contents;
+  if (!gdb_bfd_get_full_section_contents (abfd, idata_section, &idata_contents))
+    {
+      warning (_("%s: failed to get contents of .idata section."),
+	       bfd_get_filename (abfd));
+      return false;
+    }
+
+  gdb_assert (idata_contents.size () == idata_section_size);
+
+  const gdb_byte *iter = idata_contents.data () + import_table_offset_in_sect;
+  const gdb_byte *end = idata_contents.data () + idata_section_size;
+  const pe_import_directory_entry null_dir_entry = { 0 };
+
+  /* Iterate through all directory entries.  */
+  while (true)
+    {
+      /* Is there enough space left in the section for another entry?  */
+      if (iter + sizeof (pe_import_directory_entry) > end)
+	{
+	  warning (_("%s: unexpected end of .idata section."),
+		   bfd_get_filename (abfd));
+	  break;
+	}
+
+      pe_import_directory_entry *dir_entry = (pe_import_directory_entry *) iter;
+
+      /* Is it the end of list marker?  */
+      if (memcmp (dir_entry, &null_dir_entry,
+		  sizeof (pe_import_directory_entry)) == 0)
+	break;
+
+      bfd_vma name_va = dir_entry->name_rva;
+
+      /* If the name's virtual address is smaller than the section's virtual
+         address, there's a problem.  */
+      if (name_va < idata_section_va || name_va >= idata_section_end_va)
+	{
+	  warning (_("\
+%s: name's virtual address (0x%" BFD_VMA_FMT "x) is outside .idata section's \
+range [0x%" BFD_VMA_FMT "x, 0x%" BFD_VMA_FMT "x[."),
+		   bfd_get_filename (abfd), name_va, idata_section_va,
+		   idata_section_end_va);
+	  break;
+	}
+
+      const gdb_byte *name = &idata_contents[name_va - idata_section_va];
+
+      /* Make sure we don't overshoot the end of the section with the
+	 streq.  */
+      if (name + sizeof (CYGWIN_DLL_NAME) <= end)
+	{
+	  /* Finally, check if this is the dll name we are looking for.  */
+	  if (streq ((const char *) name, CYGWIN_DLL_NAME))
+	    return true;
+	}
+
+      iter += sizeof (pe_import_directory_entry);
+    }
+
+  return false;
+}
+
+void _initialize_windows_tdep ();
 void
-_initialize_windows_tdep (void)
+_initialize_windows_tdep ()
 {
+  windows_gdbarch_data_handle
+    = gdbarch_data_register_post_init (init_windows_gdbarch_data);
+
   init_w32_command_list ();
   add_cmd ("thread-information-block", class_info, display_tib,
 	   _("Display thread information block."),
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/windows-tdep.h ./gdb/windows-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/windows-tdep.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/windows-tdep.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,9 +27,25 @@ extern void init_w32_command_list (void)
 
 extern void windows_xfer_shared_library (const char* so_name,
 					 CORE_ADDR load_addr,
+					 CORE_ADDR *text_offset_cached,
 					 struct gdbarch *gdbarch,
 					 struct obstack *obstack);
 
+/* To be called from the various GDB_OSABI_WINDOWS handlers for the
+   various Windows architectures and machine types.  */
+
 extern void windows_init_abi (struct gdbarch_info info,
 			      struct gdbarch *gdbarch);
+
+/* To be called from the various GDB_OSABI_CYGWIN handlers for the
+   various Windows architectures and machine types.  */
+
+extern void cygwin_init_abi (struct gdbarch_info info,
+			     struct gdbarch *gdbarch);
+
+/* Return true if the Portable Executable behind ABFD uses the Cygwin dll
+   (cygwin1.dll).  */
+
+extern bool is_linked_with_cygwin_dll (bfd *abfd);
+
 #endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-bsd-nat.c ./gdb/x86-bsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-bsd-nat.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/x86-bsd-nat.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for X86 BSD's.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -33,6 +33,19 @@
 #include "inf-ptrace.h"
 
 
+static PTRACE_TYPE_RET
+gdb_ptrace (PTRACE_TYPE_ARG1 request, ptid_t ptid, PTRACE_TYPE_ARG3 addr)
+{
+#ifdef __NetBSD__
+  /* Support for NetBSD threads: unlike other ptrace implementations in this
+     file, NetBSD requires that we pass both the pid and lwp.  */
+  return ptrace (request, ptid.pid (), addr, ptid.lwp ());
+#else
+  pid_t pid = get_ptrace_pid (ptid);
+  return ptrace (request, pid, addr, 0);
+#endif
+}
+
 #ifdef PT_GETXSTATE_INFO
 size_t x86bsd_xsave_len;
 #endif
@@ -57,20 +70,18 @@ x86bsd_dr_get (ptid_t ptid, int regnum)
 {
   struct dbreg dbregs;
 
-  if (ptrace (PT_GETDBREGS, get_ptrace_pid (inferior_ptid),
-	      (PTRACE_TYPE_ARG3) &dbregs, 0) == -1)
+  if (gdb_ptrace (PT_GETDBREGS, ptid, (PTRACE_TYPE_ARG3) &dbregs) == -1)
     perror_with_name (_("Couldn't read debug registers"));
 
   return DBREG_DRX ((&dbregs), regnum);
 }
 
 static void
-x86bsd_dr_set (int regnum, unsigned long value)
+x86bsd_dr_set (ptid_t ptid, int regnum, unsigned long value)
 {
   struct dbreg dbregs;
 
-  if (ptrace (PT_GETDBREGS, get_ptrace_pid (inferior_ptid),
-              (PTRACE_TYPE_ARG3) &dbregs, 0) == -1)
+  if (gdb_ptrace (PT_GETDBREGS, ptid, (PTRACE_TYPE_ARG3) &dbregs) == -1)
     perror_with_name (_("Couldn't get debug registers"));
 
   /* For some mysterious reason, some of the reserved bits in the
@@ -82,8 +93,8 @@ x86bsd_dr_set (int regnum, unsigned long
 
   for (thread_info *thread : current_inferior ()->non_exited_threads ())
     {
-      if (ptrace (PT_SETDBREGS, get_ptrace_pid (thread->ptid),
-		  (PTRACE_TYPE_ARG3) &dbregs, 0) == -1)
+      if (gdb_ptrace (PT_SETDBREGS, thread->ptid,
+		      (PTRACE_TYPE_ARG3) &dbregs) == -1)
 	perror_with_name (_("Couldn't write debug registers"));
     }
 }
@@ -91,7 +102,7 @@ x86bsd_dr_set (int regnum, unsigned long
 static void
 x86bsd_dr_set_control (unsigned long control)
 {
-  x86bsd_dr_set (7, control);
+  x86bsd_dr_set (inferior_ptid, 7, control);
 }
 
 static void
@@ -99,7 +110,7 @@ x86bsd_dr_set_addr (int regnum, CORE_ADD
 {
   gdb_assert (regnum >= 0 && regnum <= 4);
 
-  x86bsd_dr_set (regnum, addr);
+  x86bsd_dr_set (inferior_ptid, regnum, addr);
 }
 
 static CORE_ADDR
@@ -122,6 +133,7 @@ x86bsd_dr_get_control (void)
 
 #endif /* PT_GETDBREGS */
 
+void _initialize_x86_bsd_nat ();
 void
 _initialize_x86_bsd_nat ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-bsd-nat.h ./gdb/x86-bsd-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-bsd-nat.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/x86-bsd-nat.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for x86 BSD's.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-linux-nat.c ./gdb/x86-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-linux-nat.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/x86-linux-nat.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux x86 (i386 and x86-64).
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -310,6 +310,7 @@ x86_linux_get_thread_area (pid_t pid, vo
 }
 
 
+void _initialize_x86_linux_nat ();
 void
 _initialize_x86_linux_nat ()
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-linux-nat.h ./gdb/x86-linux-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-linux-nat.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/x86-linux-nat.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux x86 (i386 and x86-64).
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-nat.c ./gdb/x86-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-nat.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/x86-nat.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for x86 (i386 and x86-64).
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-nat.h ./gdb/x86-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-nat.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/x86-nat.h	2021-05-21 01:57:25.000000000 +0000
@@ -3,7 +3,7 @@
    Low level functions to implement Operating System specific
    code to manipulate x86 debug registers.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-tdep.c ./gdb/x86-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/x86-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for X86-based targets.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-tdep.h ./gdb/x86-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/x86-tdep.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/x86-tdep.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for X86-based targets.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xcoffread.c ./gdb/xcoffread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xcoffread.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xcoffread.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Read AIX xcoff symbol tables and convert to internal format, for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
    Derived from coffread.c, dbxread.c, and a lot of hacking.
    Contributed by IBM Corporation.
 
@@ -166,6 +166,7 @@ static const struct dwarf2_debug_section
   { NULL, NULL },
   { ".dwmac", NULL },
   { ".dwstr", NULL },
+  { NULL, NULL }, /* debug_str_offsets */
   { NULL, NULL }, /* debug_line_str */
   { ".dwrnges", NULL },
   { NULL, NULL }, /* debug_rnglists */
@@ -229,7 +230,7 @@ static CORE_ADDR read_symbol_nvalue (int
 static struct symbol *process_xcoff_symbol (struct coff_symbol *,
 					    struct objfile *);
 
-static void read_xcoff_symtab (struct objfile *, struct partial_symtab *);
+static void read_xcoff_symtab (struct objfile *, legacy_psymtab *);
 
 #if 0
 static void add_stab_to_list (char *, struct pending_stabs **);
@@ -431,6 +432,9 @@ arrange_linetable (struct linetable *old
 
   for (function_count = 0, ii = 0; ii < oldLineTb->nitems; ++ii)
     {
+      if (oldLineTb->item[ii].is_stmt == 0)
+	continue;
+
       if (oldLineTb->item[ii].line == 0)
 	{			/* Function entry found.  */
 	  if (function_count >= fentry_size)
@@ -441,6 +445,7 @@ arrange_linetable (struct linetable *old
 			  fentry_size * sizeof (struct linetable_entry));
 	    }
 	  fentry[function_count].line = ii;
+	  fentry[function_count].is_stmt = 1;
 	  fentry[function_count].pc = oldLineTb->item[ii].pc;
 	  ++function_count;
 
@@ -591,7 +596,7 @@ allocate_include_entry (void)
 
 /* Global variable to pass the psymtab down to all the routines involved
    in psymtab to symtab processing.  */
-static struct partial_symtab *this_symtab_psymtab;
+static legacy_psymtab *this_symtab_psymtab;
 
 /* Objfile related to this_symtab_psymtab; set at the same time.  */
 static struct objfile *this_symtab_objfile;
@@ -824,7 +829,7 @@ enter_line_range (struct subfile *subfil
 		  CORE_ADDR endaddr, unsigned *firstLine)
 {
   struct objfile *objfile = this_symtab_objfile;
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
+  struct gdbarch *gdbarch = objfile->arch ();
   unsigned int curoffset;
   CORE_ADDR addr;
   void *ext_lnno;
@@ -864,7 +869,7 @@ enter_line_range (struct subfile *subfil
       addr = (int_lnno.l_lnno
 	      ? int_lnno.l_addr.l_paddr
 	      : read_symbol_nvalue (int_lnno.l_addr.l_symndx));
-      addr += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
+      addr += objfile->text_section_offset ();
 
       if (addr < startaddr || (endaddr && addr >= endaddr))
 	return;
@@ -989,7 +994,7 @@ xcoff_next_symbol_text (struct objfile *
 /* Read symbols for a given partial symbol table.  */
 
 static void
-read_xcoff_symtab (struct objfile *objfile, struct partial_symtab *pst)
+read_xcoff_symtab (struct objfile *objfile, legacy_psymtab *pst)
 {
   bfd *abfd = objfile->obfd;
   char *raw_auxptr;		/* Pointer to first raw aux entry for sym.  */
@@ -1232,8 +1237,7 @@ read_xcoff_symtab (struct objfile *objfi
 			}
 
 		      file_start_addr =
-			cs->c_value + ANOFFSET (objfile->section_offsets,
-						SECT_OFF_TEXT (objfile));
+			cs->c_value + objfile->text_section_offset ();
 		      file_end_addr = file_start_addr + CSECT_LEN (&main_aux);
 
 		      if (cs->c_name && (cs->c_name[0] == '.' || cs->c_name[0] == '@'))
@@ -1355,8 +1359,7 @@ read_xcoff_symtab (struct objfile *objfi
 	case C_FCN:
 	  if (strcmp (cs->c_name, ".bf") == 0)
 	    {
-	      CORE_ADDR off = ANOFFSET (objfile->section_offsets,
-					SECT_OFF_TEXT (objfile));
+	      CORE_ADDR off = objfile->text_section_offset ();
 
 	      bfd_coff_swap_aux_in (abfd, raw_auxptr, cs->c_type, cs->c_sclass,
 				    0, cs->c_naux, &main_aux);
@@ -1400,8 +1403,7 @@ read_xcoff_symtab (struct objfile *objfi
 			    NULL, cstk.start_addr,
 			    (fcn_cs_saved.c_value
 			     + fcn_aux_saved.x_sym.x_misc.x_fsize
-			     + ANOFFSET (objfile->section_offsets,
-					 SECT_OFF_TEXT (objfile))));
+			     + objfile->text_section_offset ()));
 	      within_function = 0;
 	    }
 	  break;
@@ -1468,8 +1470,7 @@ read_xcoff_symtab (struct objfile *objfi
 	      depth++;
 	      newobj = push_context (depth,
 				  (cs->c_value
-				   + ANOFFSET (objfile->section_offsets,
-					       SECT_OFF_TEXT (objfile))));
+				   + objfile->text_section_offset ()));
 	    }
 	  else if (strcmp (cs->c_name, ".eb") == 0)
 	    {
@@ -1491,8 +1492,7 @@ read_xcoff_symtab (struct objfile *objfi
 				cstk.old_blocks, NULL,
 				cstk.start_addr,
 				(cs->c_value
-				 + ANOFFSET (objfile->section_offsets,
-					     SECT_OFF_TEXT (objfile))));
+				 + objfile->text_section_offset ()));
 		}
 	      *get_local_symbols () = cstk.locals;
 	    }
@@ -1521,11 +1521,6 @@ read_xcoff_symtab (struct objfile *objfi
     }
 }
 
-#define	SYMBOL_DUP(SYMBOL1, SYMBOL2)	\
-  (SYMBOL2) = new (&objfile->objfile_obstack) symbol (); \
-  *(SYMBOL2) = *(SYMBOL1);
-
-
 #define	SYMNAME_ALLOC(NAME, ALLOCED)	\
   ((ALLOCED) ? (NAME) : obstack_strdup (&objfile->objfile_obstack, \
 					(NAME)))
@@ -1554,15 +1549,13 @@ process_xcoff_symbol (struct coff_symbol
   else
     {
       sec = secnum_to_section (cs->c_secnum, objfile);
-      off = ANOFFSET (objfile->section_offsets, sec);
+      off = objfile->section_offsets[sec];
     }
 
   name = cs->c_name;
   if (name[0] == '.')
     ++name;
 
-  initialize_objfile_symbol (sym);
-
   /* default assumptions */
   SET_SYMBOL_VALUE_ADDRESS (sym, cs->c_value + off);
   SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
@@ -1578,7 +1571,7 @@ process_xcoff_symbol (struct coff_symbol
       SYMBOL_TYPE (sym) = objfile_type (objfile)->nodebug_text_symbol;
 
       SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
-      SYMBOL_DUP (sym, sym2);
+      sym2 = new (&objfile->objfile_obstack) symbol (*sym);
 
       if (cs->c_sclass == C_EXT || C_WEAKEXT)
 	add_symbol_to_list (sym2, get_global_symbols ());
@@ -1657,8 +1650,7 @@ process_xcoff_symbol (struct coff_symbol
 	  if (*pp == 'V' && !within_function)
 	    *pp = 'S';
 	  sym = define_symbol ((cs->c_value
-				+ ANOFFSET (objfile->section_offsets,
-					    static_block_section)),
+				+ objfile->section_offsets[static_block_section]),
 			       cs->c_name, 0, 0, objfile);
 	  if (sym != NULL)
 	    {
@@ -1822,38 +1814,12 @@ find_linenos (struct bfd *abfd, struct b
 }
 
 static void
-xcoff_psymtab_to_symtab_1 (struct objfile *objfile, struct partial_symtab *pst)
+xcoff_expand_psymtab (legacy_psymtab *pst, struct objfile *objfile)
 {
-  int i;
-
-  if (!pst)
-    return;
-
-  if (pst->readin)
-    {
-      fprintf_unfiltered
-	(gdb_stderr, "Psymtab for %s already read in.  Shouldn't happen.\n",
-	 pst->filename);
-      return;
-    }
+  gdb_assert (!pst->readin);
 
   /* Read in all partial symtabs on which this one is dependent.  */
-  for (i = 0; i < pst->number_of_dependencies; i++)
-    if (!pst->dependencies[i]->readin)
-      {
-	/* Inform about additional files that need to be read in.  */
-	if (info_verbose)
-	  {
-	    fputs_filtered (" ", gdb_stdout);
-	    wrap_here ("");
-	    fputs_filtered ("and ", gdb_stdout);
-	    wrap_here ("");
-	    printf_filtered ("%s...", pst->dependencies[i]->filename);
-	    wrap_here ("");	/* Flush output */
-	    gdb_flush (gdb_stdout);
-	  }
-	xcoff_psymtab_to_symtab_1 (objfile, pst->dependencies[i]);
-      }
+  pst->expand_dependencies (objfile);
 
   if (((struct symloc *) pst->read_symtab_private)->numsyms != 0)
     {
@@ -1864,45 +1830,27 @@ xcoff_psymtab_to_symtab_1 (struct objfil
       read_xcoff_symtab (objfile, pst);
     }
 
-  pst->readin = 1;
+  pst->readin = true;
 }
 
 /* Read in all of the symbols for a given psymtab for real.
    Be verbose about it if the user wants that.  SELF is not NULL.  */
 
 static void
-xcoff_read_symtab (struct partial_symtab *self, struct objfile *objfile)
+xcoff_read_symtab (legacy_psymtab *self, struct objfile *objfile)
 {
-  if (self->readin)
-    {
-      fprintf_unfiltered
-	(gdb_stderr, "Psymtab for %s already read in.  Shouldn't happen.\n",
-	 self->filename);
-      return;
-    }
+  gdb_assert (!self->readin);
 
   if (((struct symloc *) self->read_symtab_private)->numsyms != 0
       || self->number_of_dependencies)
     {
-      /* Print the message now, before reading the string table,
-         to avoid disconcerting pauses.  */
-      if (info_verbose)
-	{
-	  printf_filtered ("Reading in symbols for %s...", self->filename);
-	  gdb_flush (gdb_stdout);
-	}
-
       next_symbol_text_func = xcoff_next_symbol_text;
 
-      xcoff_psymtab_to_symtab_1 (objfile, self);
+      self->expand_psymtab (objfile);
 
       /* Match with global symbols.  This only needs to be done once,
          after all of the symtabs and dependencies have been read in.   */
       scan_file_globals (objfile);
-
-      /* Finish up the debug error message.  */
-      if (info_verbose)
-	printf_filtered ("done.\n");
     }
 }
 
@@ -2008,20 +1956,18 @@ static unsigned int first_fun_line_offse
    is the address relative to which its symbols are (incremental) or 0
    (normal).  */
 
-static struct partial_symtab *
+static legacy_psymtab *
 xcoff_start_psymtab (struct objfile *objfile,
 		     const char *filename, int first_symnum)
 {
-  struct partial_symtab *result =
-    start_psymtab_common (objfile,
-			  filename,
-			  /* We fill in textlow later.  */
-			  0);
+  /* We fill in textlow later.  */
+  legacy_psymtab *result = new legacy_psymtab (filename, objfile, 0);
 
   result->read_symtab_private =
     XOBNEW (&objfile->objfile_obstack, struct symloc);
   ((struct symloc *) result->read_symtab_private)->first_symnum = first_symnum;
-  result->read_symtab = xcoff_read_symtab;
+  result->legacy_read_symtab = xcoff_read_symtab;
+  result->legacy_expand_psymtab = xcoff_expand_psymtab;
 
   /* Deduce the source language from the filename for this psymtab.  */
   psymtab_language = deduce_language_from_filename (filename);
@@ -2037,11 +1983,11 @@ xcoff_start_psymtab (struct objfile *obj
    INCLUDE_LIST, NUM_INCLUDES, DEPENDENCY_LIST, and NUMBER_DEPENDENCIES
    are the information for includes and dependencies.  */
 
-static struct partial_symtab *
-xcoff_end_psymtab (struct objfile *objfile, struct partial_symtab *pst,
+static legacy_psymtab *
+xcoff_end_psymtab (struct objfile *objfile, legacy_psymtab *pst,
 		   const char **include_list, int num_includes,
 		   int capping_symbol_number,
-		   struct partial_symtab **dependency_list,
+		   legacy_psymtab **dependency_list,
 		   int number_dependencies, int textlow_not_set)
 {
   int i;
@@ -2062,15 +2008,15 @@ xcoff_end_psymtab (struct objfile *objfi
       pst->dependencies
 	= objfile->partial_symtabs->allocate_dependencies (number_dependencies);
       memcpy (pst->dependencies, dependency_list,
-	      number_dependencies * sizeof (struct partial_symtab *));
+	      number_dependencies * sizeof (legacy_psymtab *));
     }
   else
     pst->dependencies = 0;
 
   for (i = 0; i < num_includes; i++)
     {
-      struct partial_symtab *subpst =
-	allocate_psymtab (include_list[i], objfile);
+      legacy_psymtab *subpst =
+	new legacy_psymtab (include_list[i], objfile);
 
       subpst->read_symtab_private = XOBNEW (&objfile->objfile_obstack, symloc);
       ((struct symloc *) subpst->read_symtab_private)->first_symnum = 0;
@@ -2083,7 +2029,8 @@ xcoff_end_psymtab (struct objfile *objfi
       subpst->dependencies[0] = pst;
       subpst->number_of_dependencies = 1;
 
-      subpst->read_symtab = pst->read_symtab;
+      subpst->legacy_read_symtab = pst->legacy_read_symtab;
+      subpst->legacy_expand_psymtab = pst->legacy_expand_psymtab;
     }
 
   if (num_includes == 0
@@ -2091,12 +2038,11 @@ xcoff_end_psymtab (struct objfile *objfi
       && pst->n_global_syms == 0
       && pst->n_static_syms == 0)
     {
-      /* Throw away this psymtab, it's empty.  We can't deallocate it, since
-         it is on the obstack, but we can forget to chain it on the list.  */
+      /* Throw away this psymtab, it's empty.  */
       /* Empty psymtabs happen as a result of header files which don't have
          any symbols in them.  There can be a lot of them.  */
 
-      discard_psymtab (objfile, pst);
+      objfile->partial_symtabs->discard_psymtab (pst);
 
       /* Indicate that psymtab was thrown away.  */
       pst = NULL;
@@ -2167,7 +2113,6 @@ static void
 scan_xcoff_symtab (minimal_symbol_reader &reader,
 		   struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = get_objfile_arch (objfile);
   CORE_ADDR toc_offset = 0;	/* toc offset value in data section.  */
   const char *filestring = NULL;
 
@@ -2177,7 +2122,7 @@ scan_xcoff_symtab (minimal_symbol_reader
   unsigned int nsyms;
 
   /* Current partial symtab */
-  struct partial_symtab *pst;
+  legacy_psymtab *pst;
 
   /* List of current psymtab's include files.  */
   const char **psymtab_include_list;
@@ -2185,7 +2130,7 @@ scan_xcoff_symtab (minimal_symbol_reader
   int includes_used;
 
   /* Index within current psymtab dependency list.  */
-  struct partial_symtab **dependency_list;
+  legacy_psymtab **dependency_list;
   int dependencies_used, dependencies_allocated;
 
   char *sraw_symbol;
@@ -2199,7 +2144,7 @@ scan_xcoff_symtab (minimal_symbol_reader
   int misc_func_recorded = 0;	/* true if any misc. function.  */
   int textlow_not_set = 1;
 
-  pst = (struct partial_symtab *) 0;
+  pst = (legacy_psymtab *) 0;
 
   includes_allocated = 30;
   includes_used = 0;
@@ -2209,8 +2154,8 @@ scan_xcoff_symtab (minimal_symbol_reader
   dependencies_allocated = 30;
   dependencies_used = 0;
   dependency_list =
-    (struct partial_symtab **) alloca (dependencies_allocated *
-				       sizeof (struct partial_symtab *));
+    (legacy_psymtab **) alloca (dependencies_allocated *
+				       sizeof (legacy_psymtab *));
 
   set_last_source_file (NULL);
 
@@ -2630,10 +2575,6 @@ scan_xcoff_symtab (minimal_symbol_reader
 	    switch (p[1])
 	      {
 	      case 'S':
-		if (gdbarch_static_transform_name_p (gdbarch))
-		  namestring = gdbarch_static_transform_name
-				 (gdbarch, namestring);
-
 		add_psymbol_to_list (gdb::string_view (namestring,
 						       p - namestring),
 				     true, VAR_DOMAIN, LOC_STATIC,
@@ -3024,7 +2965,7 @@ xcoff_symfile_offsets (struct objfile *o
      us to test whether the associated section exists or not, and then
      access it quickly (without searching it again).  */
 
-  if (objfile->num_sections == 0)
+  if (objfile->section_offsets.empty ())
     return; /* Is that even possible?  Better safe than sorry.  */
 
   first_section_name = bfd_section_name (objfile->sections[0].the_bfd_section);
@@ -3134,8 +3075,9 @@ xcoff_get_n_import_files (bfd *abfd)
   return l_nimpid - 1;
 }
 
+void _initialize_xcoffread ();
 void
-_initialize_xcoffread (void)
+_initialize_xcoffread ()
 {
   add_symtab_fns (bfd_target_xcoff_flavour, &xcoff_sym_fns);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xcoffread.h ./gdb/xcoffread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xcoffread.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xcoffread.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Read AIX xcoff symbol tables and convert to internal format, for GDB.
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-builtin.h ./gdb/xml-builtin.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-builtin.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xml-builtin.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Header file for builtin XML files.
 
-   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   Copyright (C) 2019-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-support.c ./gdb/xml-support.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-support.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xml-support.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Helper routines for parsing XML using Expat.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -977,13 +977,11 @@ xml_fetch_content_from_file (const char
     {
       char *fullname = concat (dirname, "/", filename, (char *) NULL);
 
-      if (fullname == NULL)
-	malloc_failure (0);
-      file = gdb_fopen_cloexec (fullname, FOPEN_RT);
+      file = gdb_fopen_cloexec (fullname, FOPEN_RB);
       xfree (fullname);
     }
   else
-    file = gdb_fopen_cloexec (filename, FOPEN_RT);
+    file = gdb_fopen_cloexec (filename, FOPEN_RB);
 
   if (file == NULL)
     return {};
@@ -1010,8 +1008,10 @@ xml_fetch_content_from_file (const char
   return text;
 }
 
+void _initialize_xml_support ();
+void _initialize_xml_support ();
 void
-_initialize_xml_support (void)
+_initialize_xml_support ()
 {
   add_setshow_boolean_cmd ("xml", class_maintenance, &debug_xml,
 			   _("Set XML parser debugging."),
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-support.h ./gdb/xml-support.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-support.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xml-support.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Helper routines for parsing XML using Expat.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-syscall.c ./gdb/xml-syscall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-syscall.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xml-syscall.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 /* Functions that provide the mechanism to parse a syscall XML file
    and get its values.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-syscall.h ./gdb/xml-syscall.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-syscall.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xml-syscall.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,7 +1,7 @@
 /* Functions that provide the mechanism to parse a syscall XML file
    and get its values.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-tdesc.c ./gdb/xml-tdesc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-tdesc.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xml-tdesc.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* XML target description support for GDB.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    Contributed by CodeSourcery.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-tdesc.h ./gdb/xml-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xml-tdesc.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xml-tdesc.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* XML target description support for GDB.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
    Contributed by CodeSourcery.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xstormy16-tdep.c ./gdb/xstormy16-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xstormy16-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xstormy16-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Sanyo Xstormy16a (LC590000) processor.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,7 @@
 #include "frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
 #include "symtab.h"
 #include "gdbtypes.h"
 #include "gdbcmd.h"
@@ -133,9 +133,9 @@ xstormy16_register_type (struct gdbarch
 static int
 xstormy16_type_is_scalar (struct type *t)
 {
-  return (TYPE_CODE(t) != TYPE_CODE_STRUCT
-	  && TYPE_CODE(t) != TYPE_CODE_UNION
-	  && TYPE_CODE(t) != TYPE_CODE_ARRAY);
+  return (t->code () != TYPE_CODE_STRUCT
+	  && t->code () != TYPE_CODE_UNION
+	  && t->code () != TYPE_CODE_ARRAY);
 }
 
 /* Function: xstormy16_use_struct_convention 
@@ -430,7 +430,7 @@ xstormy16_skip_prologue (struct gdbarch
       /* Found a function.  */
       sym = lookup_symbol (func_name, NULL, VAR_DOMAIN, NULL).symbol;
       /* Don't use line number debug info for assembly source files.  */
-      if (sym && SYMBOL_LANGUAGE (sym) != language_asm)
+      if (sym && sym->language () != language_asm)
 	{
 	  sal = find_pc_line (func_addr, 0);
 	  if (sal.end && sal.end < func_end)
@@ -610,7 +610,7 @@ xstormy16_pointer_to_address (struct gdb
 			      struct type *type, const gdb_byte *buf)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  enum type_code target = TYPE_CODE (TYPE_TARGET_TYPE (type));
+  enum type_code target = TYPE_TARGET_TYPE (type)->code ();
   CORE_ADDR addr
     = extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order);
 
@@ -629,7 +629,7 @@ xstormy16_address_to_pointer (struct gdb
 			      struct type *type, gdb_byte *buf, CORE_ADDR addr)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  enum type_code target = TYPE_CODE (TYPE_TARGET_TYPE (type));
+  enum type_code target = TYPE_TARGET_TYPE (type)->code ();
 
   if (target == TYPE_CODE_FUNC || target == TYPE_CODE_METHOD)
     {
@@ -833,8 +833,9 @@ xstormy16_gdbarch_init (struct gdbarch_i
    Initializer function for the Sanyo Xstormy16a module.
    Called by gdb at start-up.  */
 
+void _initialize_xstormy16_tdep ();
 void
-_initialize_xstormy16_tdep (void)
+_initialize_xstormy16_tdep ()
 {
   register_gdbarch_init (bfd_arch_xstormy16, xstormy16_gdbarch_init);
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-config.c ./gdb/xtensa-config.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-config.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xtensa-config.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Configuration for the Xtensa architecture for GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-linux-nat.c ./gdb/xtensa-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-linux-nat.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xtensa-linux-nat.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Xtensa GNU/Linux native support.
 
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -328,8 +328,9 @@ ps_get_thread_area (struct ps_prochandle
   return PS_OK;
 }
 
+void _initialize_xtensa_linux_nat ();
 void
-_initialize_xtensa_linux_nat (void)
+_initialize_xtensa_linux_nat ()
 {
   const xtensa_regtable_t *ptr;
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-linux-tdep.c ./gdb/xtensa-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-linux-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xtensa-linux-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux on Xtensa processors.
 
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -125,8 +125,9 @@ xtensa_linux_init_abi (struct gdbarch_in
                                              svr4_fetch_objfile_link_map);
 }
 
+void _initialize_xtensa_linux_tdep ();
 void
-_initialize_xtensa_linux_tdep (void)
+_initialize_xtensa_linux_tdep ()
 {
   gdbarch_register_osabi (bfd_arch_xtensa, bfd_mach_xtensa, GDB_OSABI_LINUX,
 			  xtensa_linux_init_abi);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-tdep.c ./gdb/xtensa-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-tdep.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xtensa-tdep.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Xtensa port of GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,8 +35,8 @@
 
 #include "dummy-frame.h"
 #include "dwarf2.h"
-#include "dwarf2-frame.h"
-#include "dwarf2loc.h"
+#include "dwarf2/frame.h"
+#include "dwarf2/loc.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
 
@@ -1651,9 +1651,9 @@ xtensa_return_value (struct gdbarch *gdb
 {
   /* Structures up to 16 bytes are returned in registers.  */
 
-  int struct_return = ((TYPE_CODE (valtype) == TYPE_CODE_STRUCT
-			|| TYPE_CODE (valtype) == TYPE_CODE_UNION
-			|| TYPE_CODE (valtype) == TYPE_CODE_ARRAY)
+  int struct_return = ((valtype->code () == TYPE_CODE_STRUCT
+			|| valtype->code () == TYPE_CODE_UNION
+			|| valtype->code () == TYPE_CODE_ARRAY)
 		       && TYPE_LENGTH (valtype) > 16);
 
   if (struct_return)
@@ -1726,7 +1726,7 @@ xtensa_push_dummy_call (struct gdbarch *
 	  fprintf_unfiltered (gdb_stdlog, "%2d: %s %3s ", i,
 			      host_address_to_string (arg),
 			      pulongest (TYPE_LENGTH (arg_type)));
-	  switch (TYPE_CODE (arg_type))
+	  switch (arg_type->code ())
 	    {
 	    case TYPE_CODE_INT:
 	      fprintf_unfiltered (gdb_stdlog, "int");
@@ -1735,7 +1735,7 @@ xtensa_push_dummy_call (struct gdbarch *
 	      fprintf_unfiltered (gdb_stdlog, "struct");
 	      break;
 	    default:
-	      fprintf_unfiltered (gdb_stdlog, "%3d", TYPE_CODE (arg_type));
+	      fprintf_unfiltered (gdb_stdlog, "%3d", arg_type->code ());
 	      break;
 	    }
 	  fprintf_unfiltered (gdb_stdlog, " %s\n",
@@ -1760,7 +1760,7 @@ xtensa_push_dummy_call (struct gdbarch *
       struct value *arg = args[i];
       struct type *arg_type = check_typedef (value_type (arg));
 
-      switch (TYPE_CODE (arg_type))
+      switch (arg_type->code ())
 	{
 	case TYPE_CODE_INT:
 	case TYPE_CODE_BOOL:
@@ -3253,8 +3253,9 @@ xtensa_dump_tdep (struct gdbarch *gdbarc
   error (_("xtensa_dump_tdep(): not implemented"));
 }
 
+void _initialize_xtensa_tdep ();
 void
-_initialize_xtensa_tdep (void)
+_initialize_xtensa_tdep ()
 {
   gdbarch_register (bfd_arch_xtensa, xtensa_gdbarch_init, xtensa_dump_tdep);
   xtensa_init_reggroups ();
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-tdep.h ./gdb/xtensa-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-tdep.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xtensa-tdep.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for the Xtensa port of GDB, the GNU debugger.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-xtregs.c ./gdb/xtensa-xtregs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/xtensa-xtregs.c	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/xtensa-xtregs.c	2021-05-21 01:57:25.000000000 +0000
@@ -1,5 +1,5 @@
 /* Table mapping between kernel xtregset and GDB register cache.
-   Copyright (C) 2007-2020 Free Software Foundation, Inc.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/yy-remap.h ./gdb/yy-remap.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdb/yy-remap.h	2020-03-07 02:07:44.000000000 +0000
+++ ./gdb/yy-remap.h	2021-05-21 01:57:25.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1986-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/acinclude.m4 ./gdbserver/acinclude.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/acinclude.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/acinclude.m4	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,59 @@
+dnl gdb/gdbserver/configure.in uses BFD_HAVE_SYS_PROCFS_TYPE.
+m4_include(../bfd/bfd.m4)
+
+dnl This gets AM_GDB_WARNINGS.
+m4_include(../gdbsupport/warning.m4)
+
+dnl This gets autoconf bugfixes
+m4_include(../config/override.m4)
+
+dnl For ACX_PKGVERSION and ACX_BUGURL.
+m4_include(../config/acx.m4)
+
+m4_include(../config/depstand.m4)
+m4_include(../config/lead-dot.m4)
+
+dnl Needed for common.m4
+dnl For AC_LIB_HAVE_LINKFLAGS.
+m4_include(../config/lib-ld.m4)
+m4_include(../config/lib-prefix.m4)
+m4_include(../config/lib-link.m4)
+dnl codeset.m4 is needed for common.m4, but not for
+dnl anything else in gdbserver.
+m4_include(../config/codeset.m4)
+m4_include(../gdbsupport/common.m4)
+
+dnl For libiberty_INIT.
+m4_include(../gdb/libiberty.m4)
+
+dnl For GDB_AC_PTRACE.
+m4_include(../gdb/ptrace.m4)
+
+m4_include(../gdb/ax_cxx_compile_stdcxx.m4)
+
+dnl For GDB_AC_SELFTEST.
+m4_include(../gdbsupport/selftest.m4)
+
+m4_include([../config/ax_pthread.m4])
+
+dnl For ZW_GNU_GETTEXT_SISTER_DIR.
+m4_include(../config/gettext-sister.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.
+
+AC_DEFUN([GDBSERVER_HAVE_THREAD_DB_TYPE],
+[AC_MSG_CHECKING([for $1 in thread_db.h])
+ AC_CACHE_VAL(gdbserver_cv_have_thread_db_type_$1,
+   [AC_TRY_COMPILE([
+#include <thread_db.h>],
+      [$1 avar],
+      gdbserver_cv_have_thread_db_type_$1=yes,
+      gdbserver_cv_have_thread_db_type_$1=no
+   )])
+ if test $gdbserver_cv_have_thread_db_type_$1 = yes; then
+   AC_DEFINE([HAVE_]translit($1, [a-z], [A-Z]), 1,
+	     [Define if <thread_db.h> has $1.])
+ fi
+ AC_MSG_RESULT($gdbserver_cv_have_thread_db_type_$1)
+])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/aclocal.m4 ./gdbserver/aclocal.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/aclocal.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/aclocal.m4	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,202 @@
+# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
+
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+m4_include([acinclude.m4])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/ax.cc ./gdbserver/ax.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/ax.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/ax.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,1376 @@
+/* Agent expression code for remote server.
+   Copyright (C) 2009-2021 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 "server.h"
+#include "ax.h"
+#include "gdbsupport/format.h"
+#include "tracepoint.h"
+#include "gdbsupport/rsp-low.h"
+
+static void ax_vdebug (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
+
+#ifdef IN_PROCESS_AGENT
+bool debug_agent = 0;
+#endif
+
+static void
+ax_vdebug (const char *fmt, ...)
+{
+  char buf[1024];
+  va_list ap;
+
+  va_start (ap, fmt);
+  vsprintf (buf, fmt, ap);
+#ifdef IN_PROCESS_AGENT
+  fprintf (stderr, PROG "/ax: %s\n", buf);
+#else
+  debug_printf (PROG "/ax: %s\n", buf);
+#endif
+  va_end (ap);
+}
+
+#define ax_debug_1(level, fmt, args...)	\
+  do {						\
+    if (level <= debug_threads)			\
+      ax_vdebug ((fmt), ##args);		\
+  } while (0)
+
+#define ax_debug(FMT, args...)		\
+  ax_debug_1 (1, FMT, ##args)
+
+/* This enum must exactly match what is documented in
+   gdb/doc/agentexpr.texi, including all the numerical values.  */
+
+enum gdb_agent_op
+  {
+#define DEFOP(NAME, SIZE, DATA_SIZE, CONSUMED, PRODUCED, VALUE)  \
+    gdb_agent_op_ ## NAME = VALUE,
+#include "gdbsupport/ax.def"
+#undef DEFOP
+    gdb_agent_op_last
+  };
+
+static const char *gdb_agent_op_names [gdb_agent_op_last] =
+  {
+    "?undef?"
+#define DEFOP(NAME, SIZE, DATA_SIZE, CONSUMED, PRODUCED, VALUE)  , # NAME
+#include "gdbsupport/ax.def"
+#undef DEFOP
+  };
+
+#ifndef IN_PROCESS_AGENT
+static const unsigned char gdb_agent_op_sizes [gdb_agent_op_last] =
+  {
+    0
+#define DEFOP(NAME, SIZE, DATA_SIZE, CONSUMED, PRODUCED, VALUE)  , SIZE
+#include "gdbsupport/ax.def"
+#undef DEFOP
+  };
+#endif
+
+/* A wrapper for gdb_agent_op_names that does some bounds-checking.  */
+
+static const char *
+gdb_agent_op_name (int op)
+{
+  if (op < 0 || op >= gdb_agent_op_last || gdb_agent_op_names[op] == NULL)
+    return "?undef?";
+  return gdb_agent_op_names[op];
+}
+
+#ifndef IN_PROCESS_AGENT
+
+/* The packet form of an agent expression consists of an 'X', number
+   of bytes in expression, a comma, and then the bytes.  */
+
+struct agent_expr *
+gdb_parse_agent_expr (const char **actparm)
+{
+  const char *act = *actparm;
+  ULONGEST xlen;
+  struct agent_expr *aexpr;
+
+  ++act;  /* skip the X */
+  act = unpack_varlen_hex (act, &xlen);
+  ++act;  /* skip a comma */
+  aexpr = XNEW (struct agent_expr);
+  aexpr->length = xlen;
+  aexpr->bytes = (unsigned char *) xmalloc (xlen);
+  hex2bin (act, aexpr->bytes, xlen);
+  *actparm = act + (xlen * 2);
+  return aexpr;
+}
+
+void
+gdb_free_agent_expr (struct agent_expr *aexpr)
+{
+  if (aexpr != NULL)
+    {
+      free (aexpr->bytes);
+      free (aexpr);
+    }
+}
+
+/* Convert the bytes of an agent expression back into hex digits, so
+   they can be printed or uploaded.  This allocates the buffer,
+   callers should free when they are done with it.  */
+
+char *
+gdb_unparse_agent_expr (struct agent_expr *aexpr)
+{
+  char *rslt;
+
+  rslt = (char *) xmalloc (2 * aexpr->length + 1);
+  bin2hex (aexpr->bytes, rslt, aexpr->length);
+  return rslt;
+}
+
+/* Bytecode compilation.  */
+
+CORE_ADDR current_insn_ptr;
+
+int emit_error;
+
+struct bytecode_address
+{
+  int pc;
+  CORE_ADDR address;
+  int goto_pc;
+  /* Offset and size of field to be modified in the goto block.  */
+  int from_offset, from_size;
+  struct bytecode_address *next;
+} *bytecode_address_table;
+
+void
+emit_prologue (void)
+{
+  target_emit_ops ()->emit_prologue ();
+}
+
+void
+emit_epilogue (void)
+{
+  target_emit_ops ()->emit_epilogue ();
+}
+
+static void
+emit_add (void)
+{
+  target_emit_ops ()->emit_add ();
+}
+
+static void
+emit_sub (void)
+{
+  target_emit_ops ()->emit_sub ();
+}
+
+static void
+emit_mul (void)
+{
+  target_emit_ops ()->emit_mul ();
+}
+
+static void
+emit_lsh (void)
+{
+  target_emit_ops ()->emit_lsh ();
+}
+
+static void
+emit_rsh_signed (void)
+{
+  target_emit_ops ()->emit_rsh_signed ();
+}
+
+static void
+emit_rsh_unsigned (void)
+{
+  target_emit_ops ()->emit_rsh_unsigned ();
+}
+
+static void
+emit_ext (int arg)
+{
+  target_emit_ops ()->emit_ext (arg);
+}
+
+static void
+emit_log_not (void)
+{
+  target_emit_ops ()->emit_log_not ();
+}
+
+static void
+emit_bit_and (void)
+{
+  target_emit_ops ()->emit_bit_and ();
+}
+
+static void
+emit_bit_or (void)
+{
+  target_emit_ops ()->emit_bit_or ();
+}
+
+static void
+emit_bit_xor (void)
+{
+  target_emit_ops ()->emit_bit_xor ();
+}
+
+static void
+emit_bit_not (void)
+{
+  target_emit_ops ()->emit_bit_not ();
+}
+
+static void
+emit_equal (void)
+{
+  target_emit_ops ()->emit_equal ();
+}
+
+static void
+emit_less_signed (void)
+{
+  target_emit_ops ()->emit_less_signed ();
+}
+
+static void
+emit_less_unsigned (void)
+{
+  target_emit_ops ()->emit_less_unsigned ();
+}
+
+static void
+emit_ref (int size)
+{
+  target_emit_ops ()->emit_ref (size);
+}
+
+static void
+emit_if_goto (int *offset_p, int *size_p)
+{
+  target_emit_ops ()->emit_if_goto (offset_p, size_p);
+}
+
+static void
+emit_goto (int *offset_p, int *size_p)
+{
+  target_emit_ops ()->emit_goto (offset_p, size_p);
+}
+
+static void
+write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
+{
+  target_emit_ops ()->write_goto_address (from, to, size);
+}
+
+static void
+emit_const (LONGEST num)
+{
+  target_emit_ops ()->emit_const (num);
+}
+
+static void
+emit_reg (int reg)
+{
+  target_emit_ops ()->emit_reg (reg);
+}
+
+static void
+emit_pop (void)
+{
+  target_emit_ops ()->emit_pop ();
+}
+
+static void
+emit_stack_flush (void)
+{
+  target_emit_ops ()->emit_stack_flush ();
+}
+
+static void
+emit_zero_ext (int arg)
+{
+  target_emit_ops ()->emit_zero_ext (arg);
+}
+
+static void
+emit_swap (void)
+{
+  target_emit_ops ()->emit_swap ();
+}
+
+static void
+emit_stack_adjust (int n)
+{
+  target_emit_ops ()->emit_stack_adjust (n);
+}
+
+/* FN's prototype is `LONGEST(*fn)(int)'.  */
+
+static void
+emit_int_call_1 (CORE_ADDR fn, int arg1)
+{
+  target_emit_ops ()->emit_int_call_1 (fn, arg1);
+}
+
+/* FN's prototype is `void(*fn)(int,LONGEST)'.  */
+
+static void
+emit_void_call_2 (CORE_ADDR fn, int arg1)
+{
+  target_emit_ops ()->emit_void_call_2 (fn, arg1);
+}
+
+static void
+emit_eq_goto (int *offset_p, int *size_p)
+{
+  target_emit_ops ()->emit_eq_goto (offset_p, size_p);
+}
+
+static void
+emit_ne_goto (int *offset_p, int *size_p)
+{
+  target_emit_ops ()->emit_ne_goto (offset_p, size_p);
+}
+
+static void
+emit_lt_goto (int *offset_p, int *size_p)
+{
+  target_emit_ops ()->emit_lt_goto (offset_p, size_p);
+}
+
+static void
+emit_ge_goto (int *offset_p, int *size_p)
+{
+  target_emit_ops ()->emit_ge_goto (offset_p, size_p);
+}
+
+static void
+emit_gt_goto (int *offset_p, int *size_p)
+{
+  target_emit_ops ()->emit_gt_goto (offset_p, size_p);
+}
+
+static void
+emit_le_goto (int *offset_p, int *size_p)
+{
+  target_emit_ops ()->emit_le_goto (offset_p, size_p);
+}
+
+/* Scan an agent expression for any evidence that the given PC is the
+   target of a jump bytecode in the expression.  */
+
+static int
+is_goto_target (struct agent_expr *aexpr, int pc)
+{
+  int i;
+  unsigned char op;
+
+  for (i = 0; i < aexpr->length; i += 1 + gdb_agent_op_sizes[op])
+    {
+      op = aexpr->bytes[i];
+
+      if (op == gdb_agent_op_goto || op == gdb_agent_op_if_goto)
+	{
+	  int target = (aexpr->bytes[i + 1] << 8) + aexpr->bytes[i + 2];
+	  if (target == pc)
+	    return 1;
+	}
+    }
+
+  return 0;
+}
+
+/* Given an agent expression, turn it into native code.  */
+
+enum eval_result_type
+compile_bytecodes (struct agent_expr *aexpr)
+{
+  int pc = 0;
+  int done = 0;
+  unsigned char op, next_op;
+  int arg;
+  /* This is only used to build 64-bit value for constants.  */
+  ULONGEST top;
+  struct bytecode_address *aentry, *aentry2;
+
+#define UNHANDLED					\
+  do							\
+    {							\
+      ax_debug ("Cannot compile op 0x%x\n", op);	\
+      return expr_eval_unhandled_opcode;		\
+    } while (0)
+
+  if (aexpr->length == 0)
+    {
+      ax_debug ("empty agent expression\n");
+      return expr_eval_empty_expression;
+    }
+
+  bytecode_address_table = NULL;
+
+  while (!done)
+    {
+      op = aexpr->bytes[pc];
+
+      ax_debug ("About to compile op 0x%x, pc=%d\n", op, pc);
+
+      /* Record the compiled-code address of the bytecode, for use by
+	 jump instructions.  */
+      aentry = XNEW (struct bytecode_address);
+      aentry->pc = pc;
+      aentry->address = current_insn_ptr;
+      aentry->goto_pc = -1;
+      aentry->from_offset = aentry->from_size = 0;
+      aentry->next = bytecode_address_table;
+      bytecode_address_table = aentry;
+
+      ++pc;
+
+      emit_error = 0;
+
+      switch (op)
+	{
+	case gdb_agent_op_add:
+	  emit_add ();
+	  break;
+
+	case gdb_agent_op_sub:
+	  emit_sub ();
+	  break;
+
+	case gdb_agent_op_mul:
+	  emit_mul ();
+	  break;
+
+	case gdb_agent_op_div_signed:
+	  UNHANDLED;
+	  break;
+
+	case gdb_agent_op_div_unsigned:
+	  UNHANDLED;
+	  break;
+
+	case gdb_agent_op_rem_signed:
+	  UNHANDLED;
+	  break;
+
+	case gdb_agent_op_rem_unsigned:
+	  UNHANDLED;
+	  break;
+
+	case gdb_agent_op_lsh:
+	  emit_lsh ();
+	  break;
+
+	case gdb_agent_op_rsh_signed:
+	  emit_rsh_signed ();
+	  break;
+
+	case gdb_agent_op_rsh_unsigned:
+	  emit_rsh_unsigned ();
+	  break;
+
+	case gdb_agent_op_trace:
+	  UNHANDLED;
+	  break;
+
+	case gdb_agent_op_trace_quick:
+	  UNHANDLED;
+	  break;
+
+	case gdb_agent_op_log_not:
+	  emit_log_not ();
+	  break;
+
+	case gdb_agent_op_bit_and:
+	  emit_bit_and ();
+	  break;
+
+	case gdb_agent_op_bit_or:
+	  emit_bit_or ();
+	  break;
+
+	case gdb_agent_op_bit_xor:
+	  emit_bit_xor ();
+	  break;
+
+	case gdb_agent_op_bit_not:
+	  emit_bit_not ();
+	  break;
+
+	case gdb_agent_op_equal:
+	  next_op = aexpr->bytes[pc];
+	  if (next_op == gdb_agent_op_if_goto
+	      && !is_goto_target (aexpr, pc)
+	      && target_emit_ops ()->emit_eq_goto)
+	    {
+	      ax_debug ("Combining equal & if_goto");
+	      pc += 1;
+	      aentry->pc = pc;
+	      arg = aexpr->bytes[pc++];
+	      arg = (arg << 8) + aexpr->bytes[pc++];
+	      aentry->goto_pc = arg;
+	      emit_eq_goto (&(aentry->from_offset), &(aentry->from_size));
+	    }
+	  else if (next_op == gdb_agent_op_log_not
+		   && (aexpr->bytes[pc + 1] == gdb_agent_op_if_goto)
+		   && !is_goto_target (aexpr, pc + 1)
+		   && target_emit_ops ()->emit_ne_goto)
+	    {
+	      ax_debug ("Combining equal & log_not & if_goto");
+	      pc += 2;
+	      aentry->pc = pc;
+	      arg = aexpr->bytes[pc++];
+	      arg = (arg << 8) + aexpr->bytes[pc++];
+	      aentry->goto_pc = arg;
+	      emit_ne_goto (&(aentry->from_offset), &(aentry->from_size));
+	    }
+	  else
+	    emit_equal ();
+	  break;
+
+	case gdb_agent_op_less_signed:
+	  next_op = aexpr->bytes[pc];
+	  if (next_op == gdb_agent_op_if_goto
+	      && !is_goto_target (aexpr, pc))
+	    {
+	      ax_debug ("Combining less_signed & if_goto");
+	      pc += 1;
+	      aentry->pc = pc;
+	      arg = aexpr->bytes[pc++];
+	      arg = (arg << 8) + aexpr->bytes[pc++];
+	      aentry->goto_pc = arg;
+	      emit_lt_goto (&(aentry->from_offset), &(aentry->from_size));
+	    }
+	  else if (next_op == gdb_agent_op_log_not
+		   && !is_goto_target (aexpr, pc)
+		   && (aexpr->bytes[pc + 1] == gdb_agent_op_if_goto)
+		   && !is_goto_target (aexpr, pc + 1))
+	    {
+	      ax_debug ("Combining less_signed & log_not & if_goto");
+	      pc += 2;
+	      aentry->pc = pc;
+	      arg = aexpr->bytes[pc++];
+	      arg = (arg << 8) + aexpr->bytes[pc++];
+	      aentry->goto_pc = arg;
+	      emit_ge_goto (&(aentry->from_offset), &(aentry->from_size));
+	    }
+	  else
+	    emit_less_signed ();
+	  break;
+
+	case gdb_agent_op_less_unsigned:
+	  emit_less_unsigned ();
+	  break;
+
+	case gdb_agent_op_ext:
+	  arg = aexpr->bytes[pc++];
+	  if (arg < (sizeof (LONGEST) * 8))
+	    emit_ext (arg);
+	  break;
+
+	case gdb_agent_op_ref8:
+	  emit_ref (1);
+	  break;
+
+	case gdb_agent_op_ref16:
+	  emit_ref (2);
+	  break;
+
+	case gdb_agent_op_ref32:
+	  emit_ref (4);
+	  break;
+
+	case gdb_agent_op_ref64:
+	  emit_ref (8);
+	  break;
+
+	case gdb_agent_op_if_goto:
+	  arg = aexpr->bytes[pc++];
+	  arg = (arg << 8) + aexpr->bytes[pc++];
+	  aentry->goto_pc = arg;
+	  emit_if_goto (&(aentry->from_offset), &(aentry->from_size));
+	  break;
+
+	case gdb_agent_op_goto:
+	  arg = aexpr->bytes[pc++];
+	  arg = (arg << 8) + aexpr->bytes[pc++];
+	  aentry->goto_pc = arg;
+	  emit_goto (&(aentry->from_offset), &(aentry->from_size));
+	  break;
+
+	case gdb_agent_op_const8:
+	  emit_stack_flush ();
+	  top = aexpr->bytes[pc++];
+	  emit_const (top);
+	  break;
+
+	case gdb_agent_op_const16:
+	  emit_stack_flush ();
+	  top = aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  emit_const (top);
+	  break;
+
+	case gdb_agent_op_const32:
+	  emit_stack_flush ();
+	  top = aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  emit_const (top);
+	  break;
+
+	case gdb_agent_op_const64:
+	  emit_stack_flush ();
+	  top = aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  emit_const (top);
+	  break;
+
+	case gdb_agent_op_reg:
+	  emit_stack_flush ();
+	  arg = aexpr->bytes[pc++];
+	  arg = (arg << 8) + aexpr->bytes[pc++];
+	  emit_reg (arg);
+	  break;
+
+	case gdb_agent_op_end:
+	  ax_debug ("At end of expression\n");
+
+	  /* Assume there is one stack element left, and that it is
+	     cached in "top" where emit_epilogue can get to it.  */
+	  emit_stack_adjust (1);
+
+	  done = 1;
+	  break;
+
+	case gdb_agent_op_dup:
+	  /* In our design, dup is equivalent to stack flushing.  */
+	  emit_stack_flush ();
+	  break;
+
+	case gdb_agent_op_pop:
+	  emit_pop ();
+	  break;
+
+	case gdb_agent_op_zero_ext:
+	  arg = aexpr->bytes[pc++];
+	  if (arg < (sizeof (LONGEST) * 8))
+	    emit_zero_ext (arg);
+	  break;
+
+	case gdb_agent_op_swap:
+	  next_op = aexpr->bytes[pc];
+	  /* Detect greater-than comparison sequences.  */
+	  if (next_op == gdb_agent_op_less_signed
+	      && !is_goto_target (aexpr, pc)
+	      && (aexpr->bytes[pc + 1] == gdb_agent_op_if_goto)
+	      && !is_goto_target (aexpr, pc + 1))
+	    {
+	      ax_debug ("Combining swap & less_signed & if_goto");
+	      pc += 2;
+	      aentry->pc = pc;
+	      arg = aexpr->bytes[pc++];
+	      arg = (arg << 8) + aexpr->bytes[pc++];
+	      aentry->goto_pc = arg;
+	      emit_gt_goto (&(aentry->from_offset), &(aentry->from_size));
+	    }
+	  else if (next_op == gdb_agent_op_less_signed
+		   && !is_goto_target (aexpr, pc)
+		   && (aexpr->bytes[pc + 1] == gdb_agent_op_log_not)
+		   && !is_goto_target (aexpr, pc + 1)
+		   && (aexpr->bytes[pc + 2] == gdb_agent_op_if_goto)
+		   && !is_goto_target (aexpr, pc + 2))
+	    {
+	      ax_debug ("Combining swap & less_signed & log_not & if_goto");
+	      pc += 3;
+	      aentry->pc = pc;
+	      arg = aexpr->bytes[pc++];
+	      arg = (arg << 8) + aexpr->bytes[pc++];
+	      aentry->goto_pc = arg;
+	      emit_le_goto (&(aentry->from_offset), &(aentry->from_size));
+	    }
+	  else
+	    emit_swap ();
+	  break;
+
+	case gdb_agent_op_getv:
+	  emit_stack_flush ();
+	  arg = aexpr->bytes[pc++];
+	  arg = (arg << 8) + aexpr->bytes[pc++];
+	  emit_int_call_1 (get_get_tsv_func_addr (),
+			   arg);
+	  break;
+
+	case gdb_agent_op_setv:
+	  arg = aexpr->bytes[pc++];
+	  arg = (arg << 8) + aexpr->bytes[pc++];
+	  emit_void_call_2 (get_set_tsv_func_addr (),
+			    arg);
+	  break;
+
+	case gdb_agent_op_tracev:
+	  UNHANDLED;
+	  break;
+
+	  /* GDB never (currently) generates any of these ops.  */
+	case gdb_agent_op_float:
+	case gdb_agent_op_ref_float:
+	case gdb_agent_op_ref_double:
+	case gdb_agent_op_ref_long_double:
+	case gdb_agent_op_l_to_d:
+	case gdb_agent_op_d_to_l:
+	case gdb_agent_op_trace16:
+	  UNHANDLED;
+	  break;
+
+	default:
+	  ax_debug ("Agent expression op 0x%x not recognized\n", op);
+	  /* Don't struggle on, things will just get worse.  */
+	  return expr_eval_unrecognized_opcode;
+	}
+
+      /* This catches errors that occur in target-specific code
+	 emission.  */
+      if (emit_error)
+	{
+	  ax_debug ("Error %d while emitting code for %s\n",
+		    emit_error, gdb_agent_op_name (op));
+	  return expr_eval_unhandled_opcode;
+	}
+
+      ax_debug ("Op %s compiled\n", gdb_agent_op_name (op));
+    }
+
+  /* Now fill in real addresses as goto destinations.  */
+  for (aentry = bytecode_address_table; aentry; aentry = aentry->next)
+    {
+      int written = 0;
+
+      if (aentry->goto_pc < 0)
+	continue;
+
+      /* Find the location that we are going to, and call back into
+	 target-specific code to write the actual address or
+	 displacement.  */
+      for (aentry2 = bytecode_address_table; aentry2; aentry2 = aentry2->next)
+	{
+	  if (aentry2->pc == aentry->goto_pc)
+	    {
+	      ax_debug ("Want to jump from %s to %s\n",
+			paddress (aentry->address),
+			paddress (aentry2->address));
+	      write_goto_address (aentry->address + aentry->from_offset,
+				  aentry2->address, aentry->from_size);
+	      written = 1;
+	      break;
+	    }
+	}
+
+      /* Error out if we didn't find a destination.  */
+      if (!written)
+	{
+	  ax_debug ("Destination of goto %d not found\n",
+		    aentry->goto_pc);
+	  return expr_eval_invalid_goto;
+	}
+    }
+
+  return expr_eval_no_error;
+}
+
+#endif
+
+/* Make printf-type calls using arguments supplied from the host.  We
+   need to parse the format string ourselves, and call the formatting
+   function with one argument at a time, partly because there is no
+   safe portable way to construct a varargs call, and partly to serve
+   as a security barrier against bad format strings that might get
+   in.  */
+
+static void
+ax_printf (CORE_ADDR fn, CORE_ADDR chan, const char *format,
+	   int nargs, ULONGEST *args)
+{
+  const char *f = format;
+  int i;
+  const char *current_substring;
+  int nargs_wanted;
+
+  ax_debug ("Printf of \"%s\" with %d args", format, nargs);
+
+  format_pieces fpieces (&f);
+
+  nargs_wanted = 0;
+  for (auto &&piece : fpieces)
+    if (piece.argclass != literal_piece)
+      ++nargs_wanted;
+
+  if (nargs != nargs_wanted)
+    error (_("Wrong number of arguments for specified format-string"));
+
+  i = 0;
+  for (auto &&piece : fpieces)
+    {
+      current_substring = piece.string;
+      ax_debug ("current substring is '%s', class is %d",
+		current_substring, piece.argclass);
+      switch (piece.argclass)
+	{
+	case string_arg:
+	  {
+	    gdb_byte *str;
+	    CORE_ADDR tem;
+	    int j;
+
+	    tem = args[i];
+	    if (tem == 0)
+	      {
+		printf (current_substring, "(null)");
+		break;
+	      }
+
+	    /* This is a %s argument.  Find the length of the string.  */
+	    for (j = 0;; j++)
+	      {
+		gdb_byte c;
+
+		read_inferior_memory (tem + j, &c, 1);
+		if (c == 0)
+		  break;
+	      }
+
+	      /* Copy the string contents into a string inside GDB.  */
+	      str = (gdb_byte *) alloca (j + 1);
+	      if (j != 0)
+		read_inferior_memory (tem, str, j);
+	      str[j] = 0;
+
+              printf (current_substring, (char *) str);
+	    }
+	    break;
+
+	  case long_long_arg:
+#if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
+	    {
+	      long long val = args[i];
+
+              printf (current_substring, val);
+	      break;
+	    }
+#else
+	    error (_("long long not supported in agent printf"));
+#endif
+	case int_arg:
+	  {
+	    int val = args[i];
+
+	    printf (current_substring, val);
+	    break;
+	  }
+
+	case long_arg:
+	  {
+	    long val = args[i];
+
+	    printf (current_substring, val);
+	    break;
+	  }
+
+	case size_t_arg:
+	  {
+	    size_t val = args[i];
+
+	    printf (current_substring, val);
+	    break;
+	  }
+
+	case literal_piece:
+	  /* Print a portion of the format string that has no
+	     directives.  Note that this will not include any
+	     ordinary %-specs, but it might include "%%".  That is
+	     why we use printf_filtered and not puts_filtered here.
+	     Also, we pass a dummy argument because some platforms
+	     have modified GCC to include -Wformat-security by
+	     default, which will warn here if there is no
+	     argument.  */
+	  printf (current_substring, 0);
+	  break;
+
+	default:
+	  error (_("Format directive in '%s' not supported in agent printf"),
+		 current_substring);
+	}
+
+      /* Maybe advance to the next argument.  */
+      if (piece.argclass != literal_piece)
+	++i;
+    }
+
+  fflush (stdout);
+}
+
+/* The agent expression evaluator, as specified by the GDB docs. It
+   returns 0 if everything went OK, and a nonzero error code
+   otherwise.  */
+
+enum eval_result_type
+gdb_eval_agent_expr (struct eval_agent_expr_context *ctx,
+		     struct agent_expr *aexpr,
+		     ULONGEST *rslt)
+{
+  int pc = 0;
+#define STACK_MAX 100
+  ULONGEST stack[STACK_MAX], top;
+  int sp = 0;
+  unsigned char op;
+  int arg;
+
+  /* This union is a convenient way to convert representations.  For
+     now, assume a standard architecture where the hardware integer
+     types have 8, 16, 32, 64 bit types.  A more robust solution would
+     be to import stdint.h from gnulib.  */
+  union
+  {
+    union
+    {
+      unsigned char bytes[1];
+      unsigned char val;
+    } u8;
+    union
+    {
+      unsigned char bytes[2];
+      unsigned short val;
+    } u16;
+    union
+    {
+      unsigned char bytes[4];
+      unsigned int val;
+    } u32;
+    union
+    {
+      unsigned char bytes[8];
+      ULONGEST val;
+    } u64;
+  } cnv;
+
+  if (aexpr->length == 0)
+    {
+      ax_debug ("empty agent expression");
+      return expr_eval_empty_expression;
+    }
+
+  /* Cache the stack top in its own variable. Much of the time we can
+     operate on this variable, rather than dinking with the stack. It
+     needs to be copied to the stack when sp changes.  */
+  top = 0;
+
+  while (1)
+    {
+      op = aexpr->bytes[pc++];
+
+      ax_debug ("About to interpret byte 0x%x", op);
+
+      switch (op)
+	{
+	case gdb_agent_op_add:
+	  top += stack[--sp];
+	  break;
+
+	case gdb_agent_op_sub:
+	  top = stack[--sp] - top;
+	  break;
+
+	case gdb_agent_op_mul:
+	  top *= stack[--sp];
+	  break;
+
+	case gdb_agent_op_div_signed:
+	  if (top == 0)
+	    {
+	      ax_debug ("Attempted to divide by zero");
+	      return expr_eval_divide_by_zero;
+	    }
+	  top = ((LONGEST) stack[--sp]) / ((LONGEST) top);
+	  break;
+
+	case gdb_agent_op_div_unsigned:
+	  if (top == 0)
+	    {
+	      ax_debug ("Attempted to divide by zero");
+	      return expr_eval_divide_by_zero;
+	    }
+	  top = stack[--sp] / top;
+	  break;
+
+	case gdb_agent_op_rem_signed:
+	  if (top == 0)
+	    {
+	      ax_debug ("Attempted to divide by zero");
+	      return expr_eval_divide_by_zero;
+	    }
+	  top = ((LONGEST) stack[--sp]) % ((LONGEST) top);
+	  break;
+
+	case gdb_agent_op_rem_unsigned:
+	  if (top == 0)
+	    {
+	      ax_debug ("Attempted to divide by zero");
+	      return expr_eval_divide_by_zero;
+	    }
+	  top = stack[--sp] % top;
+	  break;
+
+	case gdb_agent_op_lsh:
+	  top = stack[--sp] << top;
+	  break;
+
+	case gdb_agent_op_rsh_signed:
+	  top = ((LONGEST) stack[--sp]) >> top;
+	  break;
+
+	case gdb_agent_op_rsh_unsigned:
+	  top = stack[--sp] >> top;
+	  break;
+
+	case gdb_agent_op_trace:
+	  agent_mem_read (ctx, NULL, (CORE_ADDR) stack[--sp],
+			  (ULONGEST) top);
+	  if (--sp >= 0)
+	    top = stack[sp];
+	  break;
+
+	case gdb_agent_op_trace_quick:
+	  arg = aexpr->bytes[pc++];
+	  agent_mem_read (ctx, NULL, (CORE_ADDR) top, (ULONGEST) arg);
+	  break;
+
+	case gdb_agent_op_log_not:
+	  top = !top;
+	  break;
+
+	case gdb_agent_op_bit_and:
+	  top &= stack[--sp];
+	  break;
+
+	case gdb_agent_op_bit_or:
+	  top |= stack[--sp];
+	  break;
+
+	case gdb_agent_op_bit_xor:
+	  top ^= stack[--sp];
+	  break;
+
+	case gdb_agent_op_bit_not:
+	  top = ~top;
+	  break;
+
+	case gdb_agent_op_equal:
+	  top = (stack[--sp] == top);
+	  break;
+
+	case gdb_agent_op_less_signed:
+	  top = (((LONGEST) stack[--sp]) < ((LONGEST) top));
+	  break;
+
+	case gdb_agent_op_less_unsigned:
+	  top = (stack[--sp] < top);
+	  break;
+
+	case gdb_agent_op_ext:
+	  arg = aexpr->bytes[pc++];
+	  if (arg < (sizeof (LONGEST) * 8))
+	    {
+	      LONGEST mask = 1 << (arg - 1);
+	      top &= ((LONGEST) 1 << arg) - 1;
+	      top = (top ^ mask) - mask;
+	    }
+	  break;
+
+	case gdb_agent_op_ref8:
+	  agent_mem_read (ctx, cnv.u8.bytes, (CORE_ADDR) top, 1);
+	  top = cnv.u8.val;
+	  break;
+
+	case gdb_agent_op_ref16:
+	  agent_mem_read (ctx, cnv.u16.bytes, (CORE_ADDR) top, 2);
+	  top = cnv.u16.val;
+	  break;
+
+	case gdb_agent_op_ref32:
+	  agent_mem_read (ctx, cnv.u32.bytes, (CORE_ADDR) top, 4);
+	  top = cnv.u32.val;
+	  break;
+
+	case gdb_agent_op_ref64:
+	  agent_mem_read (ctx, cnv.u64.bytes, (CORE_ADDR) top, 8);
+	  top = cnv.u64.val;
+	  break;
+
+	case gdb_agent_op_if_goto:
+	  if (top)
+	    pc = (aexpr->bytes[pc] << 8) + (aexpr->bytes[pc + 1]);
+	  else
+	    pc += 2;
+	  if (--sp >= 0)
+	    top = stack[sp];
+	  break;
+
+	case gdb_agent_op_goto:
+	  pc = (aexpr->bytes[pc] << 8) + (aexpr->bytes[pc + 1]);
+	  break;
+
+	case gdb_agent_op_const8:
+	  /* Flush the cached stack top.  */
+	  stack[sp++] = top;
+	  top = aexpr->bytes[pc++];
+	  break;
+
+	case gdb_agent_op_const16:
+	  /* Flush the cached stack top.  */
+	  stack[sp++] = top;
+	  top = aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  break;
+
+	case gdb_agent_op_const32:
+	  /* Flush the cached stack top.  */
+	  stack[sp++] = top;
+	  top = aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  break;
+
+	case gdb_agent_op_const64:
+	  /* Flush the cached stack top.  */
+	  stack[sp++] = top;
+	  top = aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  top = (top << 8) + aexpr->bytes[pc++];
+	  break;
+
+	case gdb_agent_op_reg:
+	  /* Flush the cached stack top.  */
+	  stack[sp++] = top;
+	  arg = aexpr->bytes[pc++];
+	  arg = (arg << 8) + aexpr->bytes[pc++];
+	  {
+	    int regnum = arg;
+	    struct regcache *regcache = ctx->regcache;
+
+	    switch (register_size (regcache->tdesc, regnum))
+	      {
+	      case 8:
+		collect_register (regcache, regnum, cnv.u64.bytes);
+		top = cnv.u64.val;
+		break;
+	      case 4:
+		collect_register (regcache, regnum, cnv.u32.bytes);
+		top = cnv.u32.val;
+		break;
+	      case 2:
+		collect_register (regcache, regnum, cnv.u16.bytes);
+		top = cnv.u16.val;
+		break;
+	      case 1:
+		collect_register (regcache, regnum, cnv.u8.bytes);
+		top = cnv.u8.val;
+		break;
+	      default:
+		internal_error (__FILE__, __LINE__,
+				"unhandled register size");
+	      }
+	  }
+	  break;
+
+	case gdb_agent_op_end:
+	  ax_debug ("At end of expression, sp=%d, stack top cache=0x%s",
+		    sp, pulongest (top));
+	  if (rslt)
+	    {
+	      if (sp <= 0)
+		{
+		  /* This should be an error */
+		  ax_debug ("Stack is empty, nothing to return");
+		  return expr_eval_empty_stack;
+		}
+	      *rslt = top;
+	    }
+	  return expr_eval_no_error;
+
+	case gdb_agent_op_dup:
+	  stack[sp++] = top;
+	  break;
+
+	case gdb_agent_op_pop:
+	  if (--sp >= 0)
+	    top = stack[sp];
+	  break;
+
+	case gdb_agent_op_pick:
+	  arg = aexpr->bytes[pc++];
+	  stack[sp] = top;
+	  top = stack[sp - arg];
+	  ++sp;
+	  break;
+
+	case gdb_agent_op_rot:
+	  {
+	    ULONGEST tem = stack[sp - 1];
+
+	    stack[sp - 1] = stack[sp - 2];
+	    stack[sp - 2] = top;
+	    top = tem;
+	  }
+	  break;
+
+	case gdb_agent_op_zero_ext:
+	  arg = aexpr->bytes[pc++];
+	  if (arg < (sizeof (LONGEST) * 8))
+	    top &= ((LONGEST) 1 << arg) - 1;
+	  break;
+
+	case gdb_agent_op_swap:
+	  /* Interchange top two stack elements, making sure top gets
+	     copied back onto stack.  */
+	  stack[sp] = top;
+	  top = stack[sp - 1];
+	  stack[sp - 1] = stack[sp];
+	  break;
+
+	case gdb_agent_op_getv:
+	  /* Flush the cached stack top.  */
+	  stack[sp++] = top;
+	  arg = aexpr->bytes[pc++];
+	  arg = (arg << 8) + aexpr->bytes[pc++];
+	  top = agent_get_trace_state_variable_value (arg);
+	  break;
+
+	case gdb_agent_op_setv:
+	  arg = aexpr->bytes[pc++];
+	  arg = (arg << 8) + aexpr->bytes[pc++];
+	  agent_set_trace_state_variable_value (arg, top);
+	  /* Note that we leave the value on the stack, for the
+	     benefit of later/enclosing expressions.  */
+	  break;
+
+	case gdb_agent_op_tracev:
+	  arg = aexpr->bytes[pc++];
+	  arg = (arg << 8) + aexpr->bytes[pc++];
+	  agent_tsv_read (ctx, arg);
+	  break;
+
+	case gdb_agent_op_tracenz:
+	  agent_mem_read_string (ctx, NULL, (CORE_ADDR) stack[--sp],
+				 (ULONGEST) top);
+	  if (--sp >= 0)
+	    top = stack[sp];
+	  break;
+
+	case gdb_agent_op_printf:
+	  {
+	    int nargs, slen, i;
+	    CORE_ADDR fn = 0, chan = 0;
+	    /* Can't have more args than the entire size of the stack.  */
+	    ULONGEST args[STACK_MAX];
+	    char *format;
+
+	    nargs = aexpr->bytes[pc++];
+	    slen = aexpr->bytes[pc++];
+	    slen = (slen << 8) + aexpr->bytes[pc++];
+	    format = (char *) &(aexpr->bytes[pc]);
+	    pc += slen;
+	    /* Pop function and channel.  */
+	    fn = top;
+	    if (--sp >= 0)
+	      top = stack[sp];
+	    chan = top;
+	    if (--sp >= 0)
+	      top = stack[sp];
+	    /* Pop arguments into a dedicated array.  */
+	    for (i = 0; i < nargs; ++i)
+	      {
+		args[i] = top;
+		if (--sp >= 0)
+		  top = stack[sp];
+	      }
+
+	    /* A bad format string means something is very wrong; give
+	       up immediately.  */
+	    if (format[slen - 1] != '\0')
+	      error (_("Unterminated format string in printf bytecode"));
+
+	    ax_printf (fn, chan, format, nargs, args);
+	  }
+	  break;
+
+	  /* GDB never (currently) generates any of these ops.  */
+	case gdb_agent_op_float:
+	case gdb_agent_op_ref_float:
+	case gdb_agent_op_ref_double:
+	case gdb_agent_op_ref_long_double:
+	case gdb_agent_op_l_to_d:
+	case gdb_agent_op_d_to_l:
+	case gdb_agent_op_trace16:
+	  ax_debug ("Agent expression op 0x%x valid, but not handled",
+		    op);
+	  /* If ever GDB generates any of these, we don't have the
+	     option of ignoring.  */
+	  return expr_eval_unhandled_opcode;
+
+	default:
+	  ax_debug ("Agent expression op 0x%x not recognized", op);
+	  /* Don't struggle on, things will just get worse.  */
+	  return expr_eval_unrecognized_opcode;
+	}
+
+      /* Check for stack badness.  */
+      if (sp >= (STACK_MAX - 1))
+	{
+	  ax_debug ("Expression stack overflow");
+	  return expr_eval_stack_overflow;
+	}
+
+      if (sp < 0)
+	{
+	  ax_debug ("Expression stack underflow");
+	  return expr_eval_stack_underflow;
+	}
+
+      ax_debug ("Op %s -> sp=%d, top=0x%s",
+		gdb_agent_op_name (op), sp, phex_nz (top, 0));
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/ax.h ./gdbserver/ax.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/ax.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/ax.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,145 @@
+/* Data structures and functions associated with agent expressions in GDB.
+   Copyright (C) 2009-2021 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 GDBSERVER_AX_H
+#define GDBSERVER_AX_H
+
+#include "regcache.h"
+
+#ifdef IN_PROCESS_AGENT
+#include "gdbsupport/agent.h"
+#define debug_threads debug_agent
+#endif
+
+struct traceframe;
+
+/* Enumeration of the different kinds of things that can happen during
+   agent expression evaluation.  */
+
+enum eval_result_type
+  {
+    expr_eval_no_error,
+    expr_eval_empty_expression,
+    expr_eval_empty_stack,
+    expr_eval_stack_overflow,
+    expr_eval_stack_underflow,
+    expr_eval_unhandled_opcode,
+    expr_eval_unrecognized_opcode,
+    expr_eval_divide_by_zero,
+    expr_eval_invalid_goto
+  };
+
+struct agent_expr
+{
+  int length;
+
+  unsigned char *bytes;
+};
+
+#ifndef IN_PROCESS_AGENT
+
+/* The packet form of an agent expression consists of an 'X', number
+   of bytes in expression, a comma, and then the bytes.  */
+struct agent_expr *gdb_parse_agent_expr (const char **actparm);
+
+/* Release an agent expression.  */
+void gdb_free_agent_expr (struct agent_expr *aexpr);
+
+/* Convert the bytes of an agent expression back into hex digits, so
+   they can be printed or uploaded.  This allocates the buffer,
+   callers should free when they are done with it.  */
+char *gdb_unparse_agent_expr (struct agent_expr *aexpr);
+void emit_prologue (void);
+void emit_epilogue (void);
+enum eval_result_type compile_bytecodes (struct agent_expr *aexpr);
+#endif
+
+/* The context when evaluating agent expression.  */
+
+struct eval_agent_expr_context
+{
+  /* The registers when evaluating agent expression.  */
+  struct regcache *regcache;
+  /* The traceframe, if any, when evaluating agent expression.  */
+  struct traceframe *tframe;
+  /* The tracepoint, if any, when evaluating agent expression.  */
+  struct tracepoint *tpoint;
+};
+
+enum eval_result_type
+  gdb_eval_agent_expr (struct eval_agent_expr_context *ctx,
+		       struct agent_expr *aexpr,
+		       ULONGEST *rslt);
+
+/* Bytecode compilation function vector.  */
+
+struct emit_ops
+{
+  void (*emit_prologue) (void);
+  void (*emit_epilogue) (void);
+  void (*emit_add) (void);
+  void (*emit_sub) (void);
+  void (*emit_mul) (void);
+  void (*emit_lsh) (void);
+  void (*emit_rsh_signed) (void);
+  void (*emit_rsh_unsigned) (void);
+  void (*emit_ext) (int arg);
+  void (*emit_log_not) (void);
+  void (*emit_bit_and) (void);
+  void (*emit_bit_or) (void);
+  void (*emit_bit_xor) (void);
+  void (*emit_bit_not) (void);
+  void (*emit_equal) (void);
+  void (*emit_less_signed) (void);
+  void (*emit_less_unsigned) (void);
+  void (*emit_ref) (int size);
+  void (*emit_if_goto) (int *offset_p, int *size_p);
+  void (*emit_goto) (int *offset_p, int *size_p);
+  void (*write_goto_address) (CORE_ADDR from, CORE_ADDR to, int size);
+  void (*emit_const) (LONGEST num);
+  void (*emit_call) (CORE_ADDR fn);
+  void (*emit_reg) (int reg);
+  void (*emit_pop) (void);
+  void (*emit_stack_flush) (void);
+  void (*emit_zero_ext) (int arg);
+  void (*emit_swap) (void);
+  void (*emit_stack_adjust) (int n);
+
+  /* Emit code for a generic function that takes one fixed integer
+     argument and returns a 64-bit int (for instance, tsv getter).  */
+  void (*emit_int_call_1) (CORE_ADDR fn, int arg1);
+
+  /* Emit code for a generic function that takes one fixed integer
+     argument and a 64-bit int from the top of the stack, and returns
+     nothing (for instance, tsv setter).  */
+  void (*emit_void_call_2) (CORE_ADDR fn, int arg1);
+
+  /* Emit code specialized for common combinations of compare followed
+     by a goto.  */
+  void (*emit_eq_goto) (int *offset_p, int *size_p);
+  void (*emit_ne_goto) (int *offset_p, int *size_p);
+  void (*emit_lt_goto) (int *offset_p, int *size_p);
+  void (*emit_le_goto) (int *offset_p, int *size_p);
+  void (*emit_gt_goto) (int *offset_p, int *size_p);
+  void (*emit_ge_goto) (int *offset_p, int *size_p);
+};
+
+extern CORE_ADDR current_insn_ptr;
+extern int emit_error;
+
+#endif /* GDBSERVER_AX_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/ChangeLog ./gdbserver/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/ChangeLog	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/ChangeLog	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,22347 @@
+2021-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* server.cc (gdbserver_version): Update copyright year.
+	* gdbreplay.cc (gdbreplay_version): Likewise.
+
+2020-10-07  Anton Kolesov  <anton.kolesov@synopsys.com>
+
+	* configure.srv: Support ARC architecture.
+	* Makefile.in: Add linux-arc-low.cc and arch/arc.o.
+	* linux-arc-low.cc: New file.
+
+2020-09-23  Hannes Domani  <ssbssa@yahoo.de>
+
+	* win32-low.cc: Remove local wow64_process variable.
+	* win32-low.h: Remove local wow64_process variable.
+
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
+
+	* netbsd-low.cc: Add.
+	* netbsd-low.h: Likewise.
+	* netbsd-amd64-low.cc: Likewise.
+	* Makefile.in (SFILES): Register "netbsd-low.cc", "netbsd-low.h",
+	"netbsd-amd64-low.cc".
+	* configure.srv: Add x86_64-*-netbsd*.
+
+2020-08-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* server.cc (captured_main): Accept multiple `--selftest=`
+	options.  Pass all `--selftest=` arguments to run_tests.
+
+2020-07-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* configure, config.in: Regenerate.
+
+2020-07-26  Eli Zaretskii  <eliz@gnu.org>
+
+	* configure.ac (AC_CHECK_HEADERS): Add ws2tcpip.h.
+	When checking whether socklen_t type is defined, use ws2tcpip.h if
+	it is available and sys/socket.h isn't.
+	* configure: Regenerate.
+	* config.in: Regenerate.
+
+2020-07-22  Pedro Alves  <pedro@palves.net>
+
+	* inferiors.cc (switch_to_process): New, moved here from
+	thread-db.cc, and made extern.
+	* inferiors.h (switch_to_process): Declare.
+	* server.cc: Include "gdbsupport/scoped_restore.h".
+	(handle_qxfer_threads_proper): Now returns bool.  Prepare to
+	access memory around target calls.
+	(handle_qxfer_threads): Handle errors.
+	* thread-db.cc (switch_to_process): Moved to inferiors.cc.
+
+2020-07-21  Simon Marchi  <simon.marchi@efficios.com>
+
+	* linux-low.cc (stopped_pids): Make static.
+
+2020-07-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tdesc.cc (allocate_target_description): Add header comment.
+	(target_desc_deleter::operator()): New function.
+	* tdesc.h (struct target_desc): Declare as final.
+
+2020-07-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* server.cc (handle_query): Use std::vector of
+	std::string for `qsupported` vector.  Use separate
+	vector for unknowns.
+	* target.h (class process_stratum_target) <process_qsupported>:
+	Change parameters to array_view of const char *.
+	(target_process_qsupported): Remove `count` parameter.
+	* target.cc (process_stratum_target::process_qsupported): Change
+	parameters to array_view of const char *.
+	* linux-x86-low.cc (class x86_target) <process_qsupported>:
+	Likewise.
+
+2020-06-29  Tom de Vries  <tdevries@suse.de>
+
+	* ax.h: Include gdbsupport/debug_agent.h.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tdesc.cc (struct tdesc_compatible_info): New struct.
+	(tdesc_compatible_info_list): New function.
+	(tdesc_compatible_info_arch_name): New function.
+
+2020-06-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Use std::list to stop pending signal instead of manually-created
+	linked list.
+	* linux-low.h: Include <list>.
+	(struct pending_signal): Move here from linux-low.cc.
+	(struct lwp_info) <pending_signals>
+	<pending_signals_to_report>: Update the type.
+	* linux-low.cc (struct pending_signals): Remove.
+	(linux_process_target::delete_lwp)
+	(linux_process_target::add_lwp)
+	(enqueue_one_deferred_signal)
+	(dequeue_one_deferred_signal)
+	(enqueue_pending_signal)
+	(linux_process_target::resume_one_lwp_throw)
+	(linux_process_target::thread_needs_step_over)
+	(linux_process_target::resume_one_thread)
+	(linux_process_target::proceed_one_lwp): Update the use of pending
+	signal list.
+
+2020-06-17  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (%-generated.cc: ../gdb/regformats/arm/%.dat):
+	Remove.
+
+2020-06-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (SFILES): Remove win32-arm-low.cc, wincecompat.cc.
+	* configure.srv: Remove mingw32ce cases.
+	* server.h, win32-low.cc: Remove __MINGW32CE__-guarded code.
+	* win32-low.h (to_back_slashes): Remove.
+	* win32-arm-low.cc, wincecompat.cc, wincecompat.h: Remove.
+
+2020-06-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (SFILES): linux-tile-low.cc.
+	* configure.srv: Remove tilegx case.
+	* linux-tile-low.cc: Remove.
+
+2020-06-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (SFILES): Remove linux-m32r-low.cc.
+	* configure.srv: Remove m32r case.
+	* linux-m32r-low.cc: Remove.
+
+2020-06-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (SFILES): Remove linux-cris-low.c.
+	* configure.srv: Remove cris cases.
+	* linux-cris-low.cc, linux-crisv32-low.cc: Remove.
+
+2020-06-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (SFILES): Remove linux-bfin-low.c.
+	* configure.srv: Remove bfin case.
+	* linux-bfin-low.cc: Remove.
+	* linux-low.cc: Remove BFIN-conditional code.
+
+2020-06-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+	* configure.ac: Remove srv_qnx test.
+	* configure.srv: Remove nto case.
+	* nto-low.cc, nto-low.h, nto-x86-low.cc: Remove.
+	* remote-utils.c: Remove __QNX__-guarded code.
+
+2020-06-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+	* configure.ac: Remove srv_lynxos test.
+	* configure.srv: Remove lynxos cases.
+	* lynx-i386-low.cc, lynx-low.cc, lynx-low.h, lynx-ppc-low.c:
+	Remove.
+
+2020-06-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* README: Fix a few outdated or incoherent things.
+
+2020-05-27  Hannes Domani  <ssbssa@yahoo.de>
+
+	* win32-low.cc (do_initial_child_stuff): Set open_process_used.
+	(win32_clear_inferiors): Use open_process_used.
+	(get_child_debug_event): Likewise.
+
+2020-05-25  Michael Weghorn  <m.weghorn@posteo.de>
+
+	PR gdbserver/25893
+	* linux-low.cc (linux_process_target::create_inferior),
+	lynx-low.cc (lynx_process_target::create_inferior),
+	win32-low.cc (win32_process_target::create_inferior): Use
+	construct_inferior_arguments instead of stringify_argv
+	to get string representation which properly escapes
+	special characters.
+	* server.cc (handle_v_run): Just pass empty program arg
+	as such, since any further processing is now handled via
+	construct_inferior_arguments.
+
+2020-05-25  Michael Weghorn  <m.weghorn@posteo.de>
+
+	* nto-low.cc (nto_process_target::create_inferior): Pass
+	argv to spawnp function as char **.
+
+2020-05-25  Michael Weghorn  <m.weghorn@posteo.de>
+
+	* server.cc (captured_main), (handle_v_run): No longer
+	insert extra NULL element to args vector.
+
+2020-05-23  Pedro Alves  <palves@redhat.com>
+
+	* gdb-safe-ctype.h: New.
+
+2020-05-16  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* linux-ia64-low.cc (ia64_target::sw_breakpoint_from_kind):
+	Fix incorrect 'gdb_assert_no_reached' to 'gdb_assert_not_reached'.
+	(ia64_target::low_breakpoint_at): Ditto.
+
+2020-05-15  Hannes Domani  <ssbssa@yahoo.de>
+
+	* win32-i386-low.cc (i386_supports_z_point_type): Handle
+	Z_PACKET_HW_BP z_type.
+	(i386_insert_point): Handle raw_bkpt_type type.
+	(i386_remove_point): Likewise.
+
+2020-04-30  Hannes Domani  <ssbssa@yahoo.de>
+
+	* configure.srv <x86_64-*-mingw*, x86_64-*-cygwin*> (srv_tgtobj):
+	Add arch/i386.o.
+	* win32-arm-low.cc (arm_num_regs): New function.
+	(struct win32_target_ops): Use arm_num_regs.
+	* win32-i386-low.cc (win32_get_current_dr): Adapt for WOW64
+	processes.
+	(i386_get_thread_context): Likewise.
+	(i386_prepare_to_resume): Likewise.
+	(i386_thread_added): Likewise.
+	(i386_single_step): Likewise.
+	(i386_fetch_inferior_register): Likewise.
+	(i386_store_inferior_register): Likewise.
+	(i386_arch_setup): Likewise.
+	(i386_win32_num_regs): New function.
+	(struct win32_target_ops): Use i386_win32_num_regs.
+	* win32-low.cc (win32_get_thread_context): Adapt for WOW64
+	processes.
+	(win32_require_context): Likewise.
+	(child_add_thread): Likewise.
+	(do_initial_child_stuff): Likewise.
+	(continue_one_thread): Likewise.
+	(win32_process_target::resume): Likewise.
+	(load_psapi): Likewise.
+	(win32_add_all_dlls): Likewise.
+	(maybe_adjust_pc): Likewise.
+	(win32_process_target::qxfer_siginfo): Likewise.
+	(initialize_low): Likewise.
+	* win32-low.h (struct win32_target_ops): Change num_regs to
+	callback function.
+
+2020-04-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure.ac: Remove check for fs_base/gs_base in
+	user_regs_struct.
+	* configure: Re-generate.
+	* config.in: Re-generate.
+	* linux-x86-low.cc (x86_64_regmap, x86_fill_gregset,
+	x86_store_gregset): Adjust.
+
+2020-04-22  Hannes Domani  <ssbssa@yahoo.de>
+
+	* server.cc (handle_search_memory_1): Fix gdb_read_memory return value
+	comparison.
+
+2020-04-16  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.cc (windows_nat::handle_access_violation): New
+	function.
+
+2020-04-15  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* win32-low.cc (get_child_debug_event): Fix format string warning.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* server.h (gdb_fildes_t): Remove typedef.
+	* remote-utils.c (remote_desc, list_desc): Now int.
+	(INVALID_DESCRIPTOR): Remove.
+	(gdb_connected, remote_close)
+	(check_remote_input_interrupt_request): Update.
+	* utils.h (pfildes): Don't declare.
+	* utils.c (pfildes): Remove.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* server.h (handle_serial_event, handle_target_event): Update.
+	* server.c: Don't call initialize_event_loop.
+	(keep_processing_events): New global.
+	(handle_serial_event): Return void.  Set keep_processing_events.
+	(handle_target_event): Return void.
+	(start_event_loop): Move from event-loop.c.  Rewrite.
+	* remote-utils.c (handle_accept_event): Return void.
+	(reset_readchar): Use delete_timer.
+	(process_remaining): Return void.
+	(reschedule): Use create_timer.
+	* event-loop.h: Remove.
+	* event-loop.cc: Remove.
+	* Makefile.in (OBS): Use gdbsupport/event-loop.o, not event-loop.o.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* server.c (invoke_async_signal_handlers)
+	(check_async_event_handlers, flush_streams, gdb_select): New
+	functions.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* config.in: Rebuild.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	PR gdb/22992
+	* win32-low.c (child_continue): Call matching_pending_stop.
+	(get_child_debug_event): Call fetch_pending_stop.  Push pending
+	stop when needed.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.h  (win32_process_target::stopped_by_sw_breakpoint)
+	(win32_process_target::supports_stopped_by_sw_breakpoint):
+	Declare.
+	* win32-low.c (win32_supports_z_point_type): Always handle
+	Z_PACKET_SW_BP.
+	(win32_insert_point): Call insert_memory_breakpoint when needed.
+	(win32_remove_point): Call remove_memory_breakpoint when needed.
+	(win32_process_target::stopped_by_sw_breakpoint)
+	(win32_process_target::supports_stopped_by_sw_breakpoint): New
+	methods.
+	(win32_target_ops): Update.
+	(maybe_adjust_pc): New function.
+	(win32_wait): Call maybe_adjust_pc.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.h (struct win32_target_ops) <decr_pc_after_break>: New
+	field.
+	* win32-i386-low.c (the_low_target): Update.
+	* win32-arm-low.c (the_low_target): Update.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.h (win32_process_target::read_pc)
+	(win32_process_target::write_pc): Declare.
+	* win32-low.c (win32_process_target::read_pc)
+	(win32_process_target::write_pc): New methods.
+	* win32-i386-low.c (i386_win32_get_pc, i386_win32_set_pc): New
+	functions.
+	(the_low_target): Update.
+	* win32-arm-low.c (arm_win32_get_pc, arm_win32_set_pc): New
+	functions.
+	(the_low_target): Update.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (win32_kill, get_child_debug_event): Use
+	wait_for_debug_event.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (child_continue): Call continue_last_debug_event.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (handle_exception): Remove.
+	(windows_nat::handle_ms_vc_exception): New function.
+	(get_child_debug_event): Add "continue_status" parameter.
+	Update.
+	(win32_wait): Update.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (windows_nat::handle_load_dll): Rename from
+	handle_load_dll.  No longer static.
+	(windows_nat::handle_unload_dll): Rename from handle_unload_dll.
+	No longer static.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (handle_output_debug_string): Add parameter.  Change
+	return type.
+	(win32_kill, get_child_debug_event): Update.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (current_process_handle, current_process_id)
+	(main_thread_id, last_sig, current_event, siginfo_er): Move to
+	nat/windows-nat.c.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (get_image_name): Remove.
+	(handle_load_dll): Update.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (windows_nat::thread_rec): Rename from thread_rec.
+	No longer static.  Change parameters.
+	(child_add_thread, child_fetch_inferior_registers)
+	(child_store_inferior_registers, win32_resume)
+	(win32_get_tib_address): Update.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.h (struct win32_target_ops): Use qualified names where
+	needed.
+	* win32-i386-low.c: Add "using namespace".
+	* win32-low.c: Add "using namespace".
+	* win32-arm-low.c: Add "using namespace".
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (delete_thread_info): Don't call CloseHandle.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (win32_require_context, suspend_one_thread): Use
+	windows_thread_info::suspend.
+	(continue_one_thread): Use windows_thread_info::resume.
+	* configure.srv (srv_tgtobj): Add windows-nat.o when needed.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-i386-low.c (update_debug_registers)
+	(i386_prepare_to_resume, i386_thread_added): Update.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.c (child_add_thread): Use new.
+	(delete_thread_info): Use delete.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.h (struct windows_thread_info): Remove.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* win32-low.h (struct windows_thread_info): Rename from
+	win32_thread_info.  Remove typedef.
+	(struct win32_target_ops, win32_require_context): Update.
+	* win32-low.c (win32_get_thread_context)
+	(win32_set_thread_context, win32_prepare_to_resume)
+	(win32_require_context, thread_rec, child_add_thread)
+	(delete_thread_info, continue_one_thread)
+	(child_fetch_inferior_registers, child_store_inferior_registers)
+	(win32_resume, suspend_one_thread, win32_get_tib_address):
+	Update.
+	* win32-i386-low.c (update_debug_registers)
+	(win32_get_current_dr, i386_get_thread_context)
+	(i386_prepare_to_resume, i386_thread_added, i386_single_step)
+	(i386_fetch_inferior_register, i386_store_inferior_register):
+	Update.
+	* win32-arm-low.c (arm_get_thread_context)
+	(arm_fetch_inferior_register, arm_store_inferior_register):
+	Update.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* linux-low.h (struct linux_target_ops): Remove.
+	(the_low_target): Remove.
+	* linux-x86-low.cc (the_low_target): Remove.
+	* linux-aarch64-low.cc (the_low_target): Ditto.
+	* linux-arm-low.cc (the_low_target): Ditto.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-cris-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-ia64-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-mips-low.cc (the_low_target): Ditto.
+	* linux-nios2-low.cc (the_low_target): Ditto.
+	* linux-ppc-low.cc (the_low_target): Ditto.
+	* linux-riscv-low.cc (the_low_target): Ditto.
+	* linux-s390-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-sparc-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Remove the 'get_ipa_tdesc_idx' linux target op and let a concrete
+	linux target define the op by overriding the declaration in
+	process_stratum_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <get_ipa_tdesc_idx>: Remove.
+	* linux-low.cc (linux_process_target::get_ipa_tdesc_idx): Remove.
+	* linux-x86-low.cc (class x86_target) <get_ipa_tdesc_idx>: Declare.
+	(x86_get_ipa_tdesc_idx): Turn into...
+	(x86_target::get_ipa_tdesc_idx): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (class ppc_target) <get_ipa_tdesc_idx>: Declare.
+	(ppc_get_ipa_tdesc_idx): Turn into...
+	(ppc_target::get_ipa_tdesc_idx): ...this.
+	(the_low_target): Remove the op field.
+	* linux-s390-low.cc (class s390_target) <get_ipa_tdesc_idx>: Declare.
+	(s390_get_ipa_tdesc_idx): Turn into...
+	(s390_target::get_ipa_tdesc_idx): ...this.
+	(the_low_target): Remove the op field.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'get_syscall_trapinfo' linux target op into a method
+	of process_stratum_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <get_syscall_trapinfo>
+	<gdb_catch_this_syscall>
+	<low_supports_catch_syscall>
+	<low_get_syscall_trapinfo>: Declare.
+	* linux-low.cc (get_syscall_trapinfo): Turn into...
+	(linux_process_target::get_syscall_trapinfo): ...this.
+	(linux_process_target::low_get_syscall_trapinfo): Define.
+	(gdb_catch_this_syscall_p): Turn into...
+	(linux_process_target::gdb_catch_this_syscall): ...this.
+	(linux_process_target::low_supports_catch_syscall): Define.
+
+	Update the callers below.
+
+	(linux_process_target::wait_1)
+	(linux_process_target::supports_catch_syscall)
+
+	* linux-x86-low.cc (class x86_target) <low_supports_catch_syscall>
+	<low_get_syscall_trapinfo>: Declare.
+	(x86_target::low_supports_catch_syscall): Define.
+	(x86_get_syscall_trapinfo): Turn into...
+	(x86_target::low_get_syscall_trapinfo): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<low_supports_catch_syscall>
+	<low_get_syscall_trapinfo>: Declare.
+	(aarch64_target::low_supports_catch_syscall): Define.
+	(aarch64_get_syscall_trapinfo): Turn into...
+	(aarch64_target::low_get_syscall_trapinfo): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (class arm_target) <low_supports_catch_syscall>
+	<low_get_syscall_trapinfo>: Declare.
+	(arm_target::low_supports_catch_syscall): Define.
+	(arm_get_syscall_trapinfo): Turn into...
+	(arm_target::low_get_syscall_trapinfo): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (the_low_target): Remove the op field.
+	* linux-s390-low.cc (the_low_target): Remove the op field.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Remove the 'supports_hardware_single_step' linux target op and
+	override the process_stratum_target's op definition in
+	linux_process_target to return true.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <finish_step_over>
+	<maybe_hw_step>: Declare.
+	* linux-low.cc (can_hardware_single_step): Remove.
+	(maybe_hw_step): Turn into...
+	(linux_process_target::maybe_hw_step): ...this.
+	(finish_step_over): Turn into...
+	(linux_process_target::finish_step_over): ...this.
+	(linux_process_target::supports_hardware_single_step): Update
+	to return true.
+
+	Update the callers below.
+
+	(linux_process_target::single_step)
+	(linux_process_target::resume_one_lwp_throw)
+
+	* linux-arm-low.cc (class arm_target)
+	<supports_hardware_single_step>: Declare.
+	(arm_supports_hardware_single_step): Turn into...
+	(arm_target::supports_hardware_single_step): ...this.
+	(the_low_target): Remove the op field.
+	* linux-x86-low.cc (x86_supports_hardware_single_step): Remove.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (aarch64_supports_hardware_single_step):
+	Remove.
+	(the_low_target): Remove the op field.
+	* linux-bfin-low.cc (bfin_supports_hardware_single_step): Remove.
+	(the_low_target): Remove the op field.
+	* linux-crisv32-low.cc (cris_supports_hardware_single_step): Remove.
+	(the_low_target): Remove the op field.
+	* linux-m32r-low.cc (m32r_supports_hardware_single_step): Remove.
+	(the_low_target): Remove the op field.
+	* linux-m68k-low.cc (m68k_supports_hardware_single_step): Remove.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (ppc_supports_hardware_single_step): Remove.
+	(the_low_target): Remove the op field.
+	* linux-s390-low.cc (s390_supports_hardware_single_step): Remove.
+	(the_low_target): Remove the op field.
+	* linux-sh-low.cc (sh_supports_hardware_single_step): Remove.
+	(the_low_target): Remove the op field.
+	* linux-tic6x-low.cc (tic6x_supports_hardware_single_step): Remove.
+	(the_low_target): Remove the op field.
+	* linux-tile-low.cc (tile_supports_hardware_single_step): Remove.
+	(the_low_target): Remove the op field.
+	* linux-xtensa-low.cc (xtensa_supports_hardware_single_step):
+	Remove.
+	(the_low_target): Remove the op field.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'supports_range_stepping' linux target op into a method
+	of linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <low_supports_range_stepping>: Declare.
+	* linux-low.cc (linux_process_target::low_supports_range_stepping):
+	Define.
+	(linux_process_target::supports_range_stepping): Update the call
+	site.
+	* linux-x86-low.cc (class x86_target)
+	<low_supports_range_stepping>: Declare.
+	(x86_supports_range_stepping): Turn into...
+	(x86_target::low_supports_range_stepping): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<low_supports_range_stepping>: Declare.
+	(aarch64_supports_range_stepping): Turn into...
+	(aarch64_target::low_supports_range_stepping): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (the_low_target): Remove the op field.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-ppc-low.cc (the_low_target): Ditto.
+	* linux-s390-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Remove the 'emit_ops' linux target ops and let the concrete
+	linux target define the op by overriding the declaration of
+	process_stratum_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <emit_ops>: Remove.
+	* linux-low.cc (linux_process_target::emit_ops): Remove.
+	* linux-x86-low.cc (class x86_target) <emit_ops>: Declare.
+	(x86_emit_ops): Turn into...
+	(x86_target::emit_ops): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target) <emit_ops>: Declare.
+	(aarch64_emit_ops): Turn into...
+	(aarch64_target::emit_ops): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (class ppc_target) <emit_ops>: Declare.
+	(ppc_emit_ops): Turn into...
+	(ppc_target::emit_ops): ...this.
+	(the_low_target): Remove the op field.
+	* linux-s390-low.cc (class s390_target) <emit_ops>: Declare.
+	(s390_emit_ops): Turn into...
+	(s390_target::emit_ops): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (the_low_target): Remove the op field.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Remove the 'install_fast_tracepoint_jump_pad' and
+	'get_min_fast_tracepoint_insn_len' linux target ops to let the
+	concrete linux target define the ops by overriding the declarations
+	of process_stratum_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the ops.
+	(class linux_process_target) <supports_fast_tracepoints>
+	<install_fast_tracepoint_jump_pad>
+	<get_min_fast_tracepoint_insn_len>: Remove.
+	* linux-low.cc (linux_process_target::supports_fast_tracepoints)
+	(linux_process_target::install_fast_tracepoint_jump_pad)
+	(linux_process_target::get_min_fast_tracepoint_insn_len): Remove.
+	* linux-x86-low.cc (class x86_target) <supports_fast_tracepoints>
+	<install_fast_tracepoint_jump_pad>
+	<get_min_fast_tracepoint_insn_len>: Declare.
+	(x86_target::supports_fast_tracepoints): Define.
+	(x86_install_fast_tracepoint_jump_pad): Turn into...
+	(x86_target::install_fast_tracepoint_jump_pad): ...this.
+	(x86_get_min_fast_tracepoint_insn_len): Turn into...
+	(x86_target::get_min_fast_tracepoint_insn_len): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<supports_fast_tracepoints>
+	<install_fast_tracepoint_jump_pad>
+	<get_min_fast_tracepoint_insn_len>: Declare.
+	(aarch64_target::supports_fast_tracepoints): Define.
+	(aarch64_install_fast_tracepoint_jump_pad): Turn into...
+	(aarch64_target::install_fast_tracepoint_jump_pad): ...this.
+	(aarch64_get_min_fast_tracepoint_insn_len): Turn into...
+	(aarch64_target::get_min_fast_tracepoint_insn_len): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-ppc-low.cc (class ppc_target) <supports_fast_tracepoints>
+	<install_fast_tracepoint_jump_pad>
+	<get_min_fast_tracepoint_insn_len>: Declare.
+	(ppc_target::supports_fast_tracepoints): Define.
+	(ppc_install_fast_tracepoint_jump_pad): Turn into...
+	(ppc_target::install_fast_tracepoint_jump_pad): ...this.
+	(ppc_get_min_fast_tracepoint_insn_len): Turn into...
+	(ppc_target::get_min_fast_tracepoint_insn_len): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-s390-low.cc (class s390_target) <supports_fast_tracepoints>
+	<install_fast_tracepoint_jump_pad>
+	<get_min_fast_tracepoint_insn_len>: Declare.
+	(s390_target::supports_fast_tracepoints): Define.
+	(s390_install_fast_tracepoint_jump_pad): Turn into...
+	(s390_target::install_fast_tracepoint_jump_pad): ...this.
+	(s390_get_min_fast_tracepoint_insn_len): Turn into...
+	(s390_target::get_min_fast_tracepoint_insn_len): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-arm-low.cc (the_low_target): Remove the op fields.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'get_thread_area' linux target op into a method of
+	process_stratum_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <stuck_in_jump_pad>
+	<linux_fast_tracepoint_collecting>
+	<low_get_thread_area>: Declare.
+	* linux-low.cc (supports_fast_tracepoints): Remove.
+	(linux_fast_tracepoint_collecting): Turn into...
+	(linux_process_target::linux_fast_tracepoint_collecting): ...this.
+	(linux_process_target::low_get_thread_area): Define.
+	(stuck_in_jump_pad_callback): Turn into...
+	(linux_process_target::stuck_in_jump_pad): ...this.
+
+	Update the caller below.
+
+	(linux_process_target::stabilize_threads)
+
+	* linux-x86-low.cc (class x86_target) <low_get_thread_area>:
+	Declare.
+	(x86_get_thread_area): Turn into...
+	(x86_target::low_get_thread_area): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target) <low_get_thread_area>:
+	Declare.
+	(aarch64_get_thread_area): Turn into...
+	(aarch64_target::low_get_thread_area): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (class ppc_target) <low_get_thread_area>:
+	Declare.
+	(ppc_get_thread_area): Turn into...
+	(ppc_target::low_get_thread_area): ...this.
+	(the_low_target): Remove the op field.
+	* linux-s390-low.cc (class s390_target) <low_get_thread_area>:
+	Declare.
+	(s390_get_thread_area): Turn into...
+	(s390_target::low_get_thread_area): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (the_low_target): Remove the op field.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Remote the 'supports_tracepoints' linux target op and let the
+	concrete linux target define it by overriding the op declared in
+	process_stratum_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <supports_tracepoints>: Remove.
+	* linux-low.cc (linux_process_target::supports_tracepoints): Remove.
+	* linux-x86-low.cc (class x86_target) <supports_tracepoints>:
+	Declare.
+	(x86_supports_tracepoints): Turn into...
+	(x86_target::supports_tracepoints): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<supports_tracepoints>: Declare.
+	(aarch64_supports_tracepoints): Turn into...
+	(aarch64_target::supports_tracepoints): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (class ppc_target) <supports_tracepoints>:
+	Declare.
+	(ppc_supports_tracepoints): Turn into...
+	(ppc_target::supports_tracepoints): ...this.
+	(the_low_target): Remove the op field.
+	* linux-s390-low.cc (class s390_target) <supports_tracepoints>:
+	Declare.
+	(s390_supports_tracepoints): Turn into...
+	(s390_target::supports_tracepoints): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (the_low_target): Remove the op field.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Remove the 'process_qsupported' linux target op and let a concrete
+	linux target define the op by overriding the op declaration in
+	process_stratum_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <process_qsupported>: Remove.
+	* linux-low.cc (linux_process_target::process_qsupported): Remove.
+	* linux-x86-low.cc (class x86_target) <process_qsupported>: Declare.
+	(x86_linux_process_qsupported): Turn into...
+	(x86_target::process_qsupported): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (the_low_target): Remove the op
+	field.
+	* linux-arm-low.cc (the_low_target): Ditto.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-ppc-low.cc (the_low_target): Ditto.
+	* linux-s390-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'prepare_to_resume' linux target op into a method of
+	linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <low_prepare_to_resume>: Declare.
+	* linux-low.cc (linux_process_target::low_prepare_to_resume):
+	Define.
+
+	Update the callers below:
+
+	(linux_process_target::resume_one_lwp_throw)
+	(linux_process_target::low_prepare_to_resume)
+
+	* linux-x86-low.cc (class x86_target) <low_prepare_to_resume>:
+	Declare.
+	(x86_target::low_prepare_to_resume): Define.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<low_prepare_to_resume>: Declare.
+	(aarch64_target::low_prepare_to_resume): Define.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (class arm_target) <low_prepare_to_resume>:
+	Declare.
+	(arm_prepare_to_resume): Turn into...
+	(arm_target::low_prepare_to_resume): ...this.
+	(the_low_target): Remove the op field.
+	* linux-mips-low.cc (class mips_target) <low_prepare_to_resume>:
+	Declare.
+	(mips_linux_prepare_to_resume): Turn into...
+	(mips_target::low_prepare_to_resume): ...this.
+	(the_low_target): Remove the op field.
+	* linux-bfin-low.cc (the_low_target): Remove the op field.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-ppc-low.cc (the_low_target): Ditto.
+	* linux-s390-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'new_process', 'delete_process', 'new_thread',
+	'delete_thread', and 'new_fork' linux target ops into methods
+	of linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the ops.
+	(class linux_process_target) <add_linux_process>
+	<add_lwp>
+	<delete_lwp>
+	<attach_lwp>
+	<detach_one_lwp>
+	<check_zombie_leaders>
+	<filter_exit_event>
+	<low_new_process>
+	<low_delete_process>
+	<low_new_thread>
+	<low_delete_thread>
+	<low_new_fork>: Declare.
+	* linux-low.cc (delete_lwp): Turn into...
+	(linux_process_target::delete_lwp): ...this.
+	(linux_process_target::low_delete_thread): Define.
+	(linux_add_process): Turn into...
+	(linux_process_target::add_linux_process): ...this.
+	(linux_process_target::low_new_process): Define.
+	(linux_process_target::low_delete_process): Define.
+	(linux_process_target::low_new_fork): Define.
+	(add_lwp): Turn into...
+	(linux_process_target::add_lwp): ...this.
+	(linux_process_target::low_new_thread): Define.
+	(linux_attach_lwp): Turn into...
+	(linux_process_target::attach_lwp): ...this.
+	(linux_detach_one_lwp): Turn into...
+	(linux_process_target::detach_one_lwp): ...this.
+	(linux_detach_lwp_callback): Remove and inline...
+	(linux_process_target::detach): ...here.
+	(check_zombie_leaders): Turn into...
+	(linux_process_target::check_zombie_leaders): ...this.
+	(filter_exit_event): Turn into...
+	(linux_process_target::filter_exit_event): ...this.
+
+	Update the callers below.
+
+	(linux_process_target::handle_extended_wait)
+	(linux_process_target::create_inferior)
+	(attach_proc_task_lwp_callback)
+	(linux_process_target::attach)
+	(linux_process_target::detach)
+	(linux_process_target::mourn)
+	* thread-db.cc (attach_thread)
+
+	* linux-x86-low.cc (class x86_target) <low_new_process>
+	<low_delete_process>
+	<low_new_thread>
+	<low_delete_thread>
+	<low_new_fork>: Declare.
+	(x86_linux_new_process): Turn into...
+	(x86_target::low_new_process): ...this.
+	(x86_linux_delete_process): Turn into...
+	(x86_target::low_delete_process): ...this.
+	(x86_target::low_new_thread): Define.
+	(x86_target::low_delete_thread): Define.
+	(x86_linux_new_fork): Turn into...
+	(x86_target::low_new_fork): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-aarch64-low.cc (class aarch64_target) <low_new_process>
+	<low_delete_process>
+	<low_new_thread>
+	<low_delete_thread>
+	<low_new_fork>: Declare.
+	(aarch64_linux_new_process): Turn into...
+	(aarch64_target::low_new_process): ...this.
+	(aarch64_linux_delete_process): Turn into...
+	(aarch64_target::low_delete_process): ...this.
+	(aarch64_target::low_new_thread): Define.
+	(aarch64_target::low_delete_thread): Define.
+	(aarch64_linux_new_fork): Turn into...
+	(aarch64_target::low_new_fork): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-arm-low.cc (class arm_target) <low_new_process>
+	<low_delete_process>
+	<low_new_thread>
+	<low_delete_thread>
+	<low_new_fork>: Declare.
+	(arm_new_process): Turn into...
+	(arm_target::low_new_process): ...this.
+	(arm_delete_process): Turn into...
+	(arm_target::low_delete_process): ...this.
+	(arm_new_thread): Turn into...
+	(arm_target::low_new_thread): ...this.
+	(arm_delete_thread): Turn into...
+	(arm_target::low_delete_thread): ...this.
+	(arm_new_fork): Turn into...
+	(arm_target::low_new_fork): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-mips-low.cc (class mips_target) <low_new_process>
+	<low_delete_process>
+	<low_new_thread>
+	<low_delete_thread>
+	<low_new_fork>: Declare.
+	(mips_linux_new_process): Turn into...
+	(mips_target::low_new_process): ...this.
+	(mips_linux_delete_process): Turn into...
+	(mips_target::low_delete_process): ...this.
+	(mips_linux_new_thread): Turn into...
+	(mips_target::low_new_thread): ...this.
+	(mips_linux_delete_thread): Turn into...
+	(mips_target::low_delete_thread): ...this.
+	(mips_linux_new_fork): Turn into...
+	(mips_target::low_new_fork): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-bfin-low.cc (the_low_target): Remove the op fields.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-ppc-low.cc (the_low_target): Ditto.
+	* linux-s390-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'siginfo_fixup' linux target op into a method of
+	linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <siginfo_fixup>
+	<low_siginfo_fixup>: Declare.
+	* linux-low.cc (siginfo_fixup): Turn into...
+	(linux_process_target::siginfo_fixup): ...this.
+	(linux_process_target::low_siginfo_fixup): Define.
+	* linux-x86-low.cc (class x86_target) <low_siginfo_fixup>: Declare.
+	(x86_siginfo_fixup): Turn into...
+	(x86_target::low_siginfo_fixup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target):
+	<low_siginfo_fixup>: Declare.
+	(aarch64_linux_siginfo_fixup): Turn into...
+	(aarch64_target::low_siginfo_fixup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (the_low_target): Remove the op field.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-mips-low.cc (the_low_target): Ditto.
+	* linux-ppc-low.cc (the_low_target): Ditto.
+	* linux-s390-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'collect_ptrace_register' and 'supply_ptrace_register'
+	linux target ops into methods of linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the ops.
+	(class linux_process_target) <low_collect_ptrace_register>
+	<low_store_ptrace_register>: Declare.
+	* linux-low.cc (linux_process_target::low_collect_ptrace_register)
+	(linux_process_target::low_supply_ptrace_register): Define.
+
+	Update the callers below.
+
+	(linux_process_target::fetch_register)
+	(linux_process_target::store_register)
+
+	* linux-x86-low.cc (the_low_target): Remove the op fields.
+	* linux-aarch64-low.cc (the_low_target): Ditto.
+	* linux-arm-low.cc (the_low_target): Ditto.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-sparc-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+	* linux-mips-low.cc (class mips_target)
+	<low_collect_ptrace_register>
+	<low_supply_ptrace_register>: Declare.
+	(mips_collect_ptrace_register): Turn into ...
+	(mips_target::low_collect_ptrace_register): ...this.
+	(mips_supply_ptrace_register): Turn into...
+	(mips_target::low_supply_ptrace_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-ppc-low.cc (class ppc_target)
+	<low_collect_ptrace_register>
+	<low_supply_ptrace_register>: Declare.
+	(ppc_collect_ptrace_register): Turn into ...
+	(ppc_target::low_collect_ptrace_register): ...this.
+	(ppc_supply_ptrace_register): Turn into ...
+	(ppc_target::low_supply_ptrace_register): ...this.
+	(ppc_fill_gregset): Update for the calls to
+	low_collect_ptrace_register.
+	(the_low_target): Remove the op fields.
+	* linux-s390-low.cc (class s390_target)
+	<low_collect_ptrace_register>
+	<low_supply_ptrace_register>: Declare.
+	(s390_collect_ptrace_register): Turn into ...
+	(s390_target::low_collect_ptrace_register): ...this.
+	(s390_supply_ptrace_register): Turn into ...
+	(s390_target::low_supply_ptrace_register): ...this.
+	(s390_fill_gregset): Update for the calls to
+	low_collect_ptrace_register.
+	(the_low_target): Remove the op fields.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'stopped_by_watchpoint' and 'stopped_data_address' linux
+	target ops into methods of linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the ops.
+	(class linux_process_target) <check_stopped_by_watchpoint>
+	<low_stopped_by_watchpoint>
+	<low_stopped_data_address>: Declare.
+	* linux-low.cc (check_stopped_by_watchpoint): Turn into...
+	(linux_process_target::check_stopped_by_watchpoint): ...this.
+	(linux_process_target::low_stopped_by_watchpoint): Define.
+	(linux_process_target::low_stopped_data_address): Define.
+	* linux-x86-low.cc (class x86_target) <low_stopped_by_watchpoint>
+	<low_stopped_data_address>: Declare.
+	(x86_stopped_by_watchpoint): Turn into...
+	(x86_target::low_stopped_by_watchpoint): ...this.
+	(x86_stopped_data_address): Turn into...
+	(x86_target::low_stopped_data_address): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<low_stopped_by_watchpoint>
+	<low_stopped_data_address>: Declare.
+	(aarch64_stopped_by_watchpoint): Turn into...
+	(aarch64_target::low_stopped_by_watchpoint): ...this.
+	(aarch64_stopped_data_address): Turn into...
+	(aarch64_target::low_stopped_data_address): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-arm-low.cc (class arm_target) <low_stopped_by_watchpoint>
+	<low_stopped_data_address>: Declare.
+	(arm_stopped_by_watchpoint): Turn into...
+	(arm_target::low_stopped_by_watchpoint): ...this.
+	(arm_stopped_data_address): Turn into...
+	(arm_target::low_stopped_data_address): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-crisv32-low.cc (class crisv32_target)
+	<low_stopped_by_watchpoint>
+	<low_stopped_data_address>: Declare.
+	(cris_stopped_by_watchpoint): Turn into...
+	(crisv32_target::low_stopped_by_watchpoint): ...this.
+	(cris_stopped_data_address): Turn into...
+	(crisv32_target::low_stopped_data_address): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-mips-low.cc (class mips_target) <low_stopped_by_watchpoint>
+	<low_stopped_data_address>: Declare.
+	(mips_stopped_by_watchpoint): Turn into...
+	(mips_target::low_stopped_by_watchpoint): ...this.
+	(mips_stopped_data_address): Turn into...
+	(mips_target::low_stopped_data_address): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-bfin-low.cc (the_low_target): Remove the op fields.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-ppc-low.cc (the_low_target): Ditto.
+	* linux-s390-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-sparc-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'insert_point' and 'remove_point' linux target ops into
+	methods of linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the ops.
+	(class linux_process_target) <low_insert_point>
+	<low_remove_point>: Declare.
+	* linux-low.cc (linux_process_target::low_insert_point)
+	(linux_process_target::low_remove_point): Define.
+	(linux_process_target::insert_point)
+	(linux_process_target::remove_point): Update for calls to
+	low_insert_point and low_remove_point.
+	* linux-x86-low.cc (class x86_target) <low_insert_point>
+	<low_remove_point>: Declare.
+	(x86_insert_point): Turn into...
+	(x86_target::low_insert_point): ...this.
+	(x86_remove_point): Turn into...
+	(x86_target::low_remove_point): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-aarch64-low.cc (class aarch64_target) <low_insert_point>
+	<low_remove_point>: Declare.
+	(aarch64_insert_point): Turn into...
+	(aarch64_target::low_insert_point): ...this.
+	(aarch64_remove_point): Turn into...
+	(aarch64_target::low_remove_point): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-arm-low.cc (class arm_target) <low_insert_point>
+	<low_remove_point>: Declare.
+	(arm_insert_point): Turn into...
+	(arm_target::low_insert_point): ...this.
+	(arm_remove_point): Turn into...
+	(arm_target::low_remove_point): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-crisv32-low.cc (class crisv32_target) <low_insert_point>
+	<low_remove_point>: Declare.
+	(crisv32_insert_point): Turn into...
+	(crisv32_target::low_insert_point): ...this.
+	(crisv32_remove_point): Turn into...
+	(crisv32_target::low_remove_point): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-mips-low.cc (class mips_target) <low_insert_point>
+	<low_remove_point>: Declare.
+	(mips_insert_point): Turn into...
+	(mips_target::low_insert_point): ...this.
+	(mips_remove_point): Turn into...
+	(mips_target::low_remove_point): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-ppc-low.cc (class ppc_target) <low_insert_point>
+	<low_remove_point>: Declare.
+	(ppc_insert_point): Turn into...
+	(ppc_target::low_insert_point): ...this.
+	(ppc_remove_point): Turn into...
+	(ppc_target::low_remove_point): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-bfin-low.cc (the_low_target): Remove the op fields.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-s390-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-sparc-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Remove the 'supports_z_point_type' linux target op and let the
+	concrete linux target define it by overriding the op declared in
+	process_stratum_target.
+
+	* linux-low.cc (linux_process_target::supports_z_point_type):
+	Remove.
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <supports_z_point_type>: Remove.
+	* linux-x86-low.cc (class x86_target) <supports_z_point_type>:
+	Declare.
+	(x86_supports_z_point_type): Turn into...
+	(x86_target::supports_z_point_type): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<supports_z_point_type>: Declare.
+	(aarch64_supports_z_point_type): Turn into...
+	(aarch64_target::supports_z_point_type): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (class arm_target) <supports_z_point_type>:
+	Declare.
+	(arm_supports_z_point_type): Turn into...
+	(arm_target::supports_z_point_type): ...this.
+	(the_low_target): Remove the op field.
+	* linux-crisv32-low.cc (class crisv32_target)
+	<supports_z_point_type>: Declare.
+	(cris_supports_z_point_type): Turn into...
+	(crisv32_target::supports_z_point_type): ...this.
+	(the_low_target): Remove the op field.
+	* linux-mips-low.cc (class mips_target) <supports_z_point_type>:
+	Declare.
+	(mips_supports_z_point_type): Turn into...
+	(mips_target::supports_z_point_type): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (class ppc_target) <supports_z_point_type>:
+	Declare.
+	(ppc_supports_z_point_type): Turn into...
+	(ppc_target::supports_z_point_type): ...this.
+	(the_low_target): Remove the op field.
+	* linux-s390-low.cc (class s390_target) <supports_z_point_type>:
+	Declare.
+	(s390_supports_z_point_type): Turn into...
+	(s390_target::supports_z_point_type): ...this.
+	(the_low_target): Remove the op field.
+	* linux-bfin-low.cc (the_low_target): Remove the op field.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-sparc-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'breakpoint_at' linux target op into a method of
+	linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <low_breakpoint_at>: Declare.
+
+	Update the callers below:
+
+	* linux-low.cc (linux_process_target::save_stop_reason)
+	(linux_process_target::thread_still_has_status_pending)
+	(linux_process_target::wait_1)
+
+	* linux-x86-low.cc (class x86_target)
+	<low_breakpoint_at>: Declare.
+	(x86_breakpoint_at): Turn into...
+	(x86_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<low_breakpoint_at>: Declare.
+	(aarch64_breakpoint_at): Turn into...
+	(aarch64_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (class arm_target)
+	<low_breakpoint_at>: Declare.
+	(arm_target::low_breakpoint_at): Define.
+	(the_low_target): Remove the op field.
+	* linux-bfin-low.cc (class bfin_target)
+	<low_breakpoint_at>: Declare.
+	(bfin_breakpoint_at): Turn into...
+	(bfin_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-cris-low.cc (class cris_target)
+	<low_breakpoint_at>: Declare.
+	(cris_breakpoint_at): Turn into...
+	(cris_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-crisv32-low.cc (class crisv32_target)
+	<low_breakpoint_at>: Declare.
+	(crisv32_breakpoint_at): Turn into...
+	(crisv32_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ia64-low.cc (class ia64_target)
+	<low_breakpoint_at>: Declare.
+	(ia64_target::low_breakpoint_at): Define.
+	* linux-m32r-low.cc (class m32r_target)
+	<low_breakpoint_at>: Declare.
+	(m32r_breakpoint_at): Turn into...
+	(m32r_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-m68k-low.cc (class m68k_target)
+	<low_breakpoint_at>: Declare.
+	(m68k_breakpoint_at): Turn into...
+	(m68k_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-mips-low.cc (class mips_target)
+	<low_breakpoint_at>: Declare.
+	(mips_breakpoint_at): Turn into...
+	(mips_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-nios2-low.cc (class nios2_target)
+	<low_breakpoint_at>: Declare.
+	(nios2_breakpoint_at): Turn into...
+	(nios2_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (class ppc_target)
+	<low_breakpoint_at>: Declare.
+	(ppc_breakpoint_at): Turn into...
+	(ppc_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-riscv-low.cc (class riscv_target)
+	<low_breakpoint_at>: Declare.
+	(riscv_breakpoint_at): Turn into...
+	(riscv_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-s390-low.cc (class s390_target)
+	<low_breakpoint_at>: Declare.
+	(s390_breakpoint_at): Turn into...
+	(s390_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-sh-low.cc (class sh_target)
+	<low_breakpoint_at>: Declare.
+	(sh_breakpoint_at): Turn into...
+	(sh_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-sparc-low.cc (class sparc_target)
+	<low_breakpoint_at>: Declare.
+	(sparc_breakpoint_at): Turn into...
+	(sparc_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-tic6x-low.cc (class tic6x_target)
+	<low_breakpoint_at>: Declare.
+	(tic6x_breakpoint_at): Turn into...
+	(tic6x_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-tile-low.cc (class tile_target)
+	<low_breakpoint_at>: Declare.
+	(tile_breakpoint_at): Turn into...
+	(tile_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+	* linux-xtensa-low.cc (class xtensa_target)
+	<low_breakpoint_at>: Declare.
+	(xtensa_breakpoint_at): Turn into...
+	(xtensa_target::low_breakpoint_at): ...this.
+	(the_low_target): Remove the op field.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'decr_pc_after_break' linux_target_ops field into
+	a method of linux_process_target.
+
+	* linux-low.h (struct linux_target_ops)
+	<decr_pc_after_break>: Remove.
+	(class linux_process_target) <low_decr_pc_after_break>: New method
+	declaration.
+	* linux-low.cc (linux_process_target::low_decr_pc_after_break):
+	New method implementation.
+
+	Update the users below.
+
+	(linux_process_target::save_stop_reason)
+	(linux_process_target::wait_1)
+	* linux-x86-low.cc (class x86_target) <low_decr_pc_after_break>:
+	New declaration.
+	(x86_target::low_decr_pc_after_break): New method implementation.
+	(the_low_target): Remove the field.
+	* linux-bfin-low.cc (class bfin_target) <low_decr_pc_after_break>:
+	New declaration.
+	(bfin_target::low_decr_pc_after_break): New method implementation.
+	(the_low_target): Remove the field.
+	* linux-m68k-low.cc (class m68k_target) <low_decr_pc_after_break>:
+	New declaration.
+	(m68k_target::low_decr_pc_after_break): New method implementation.
+	(the_low_target): Remove the field.
+	* linux-s390-low.cc (class s390_target) <low_decr_pc_after_break>:
+	New declaration.
+	(s390_target::low_decr_pc_after_break): New method implementation.
+	(the_low_target): Remove the field.
+	* linux-aarch64-low.cc (the_low_target): Remove the field.
+	* linux-arm-low.cc (the_low_target): Remove the field.
+	* linux-cris-low.cc (the_low_target): Remove the field.
+	* linux-crisv32-low.cc (the_low_target): Remove the field.
+	* linux-m32r-low.cc (the_low_target): Remove the field.
+	* linux-mips-low.cc (the_low_target): Remove the field.
+	* linux-nios2-low.cc (the_low_target): Remove the field.
+	* linux-ppc-low.cc (the_low_target): Remove the field.
+	* linux-riscv-low.cc (the_low_target): Remove the field.
+	* linux-sh-low.cc (the_low_target): Remove the field.
+	* linux-sparc-low.cc (the_low_target): Remove the field.
+	* linux-tic6x-low.cc (the_low_target): Remove the field.
+	* linux-tile-low.cc (the_low_target): Remove the field.
+	* linux-xtensa-low.cc (the_low_target): Remove the field.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Remove the 'supports_software_single_step' linux target op and let
+	the concrete linux target define it by overriding the op in
+	process_stratum_target.
+	Turn the 'get_next_pcs' linux target op into a method of
+	linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the ops.
+	(class linux_process_target) <supports_software_single_step>:
+	Remove.
+	<low_get_next_pcs>: Declare.
+	* linux-low.cc (can_software_single_step): Remove.
+	(linux_process_target::low_get_next_pcs): Define.
+	(linux_process_target::supports_software_single_step): Remove.
+
+	Update the callers below.
+
+	(linux_process_target::handle_extended_wait)
+	(linux_process_target::wait_1)
+	(linux_process_target::install_software_single_step_breakpoints)
+	(linux_process_target::single_step)
+	(linux_process_target::thread_needs_step_over)
+	(linux_process_target::proceed_one_lwp)
+	(linux_process_target::supports_range_stepping)
+
+	* linux-x86-low.cc (the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (the_low_target): Ditto.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-cris-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-mips-low.cc (the_low_target): Ditto.
+	* linux-nios2-low.cc (the_low_target): Ditto.
+	* linux-ppc-low.cc (the_low_target): Ditto.
+	* linux-riscv-low.cc (the_low_target): Ditto.
+	* linux-s390-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-sparc-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+	* linux-arm-low.cc (class arm_target) <low_get_next_pcs>
+	<supports_software_single_step>: Declare.
+	(arm_target::supports_software_single_step): Define.
+	(arm_gdbserver_get_next_pcs): Turn into...
+	(arm_target::low_get_next_pcs): ...this.
+	(the_low_target): Remove the op field.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Remove the 'sw_breakpoint_from_kind' linux target op, and let
+	the concrete linux target define it by overriding the op
+	in process_stratum_target.
+
+	* linux-low.cc (linux_process_target::sw_breakpoint_from_kind):
+	Remove.
+	* linux-low.h (struct linux_target_ops): Remove the op.
+	(class linux_process_target) <sw_breakpoint_from_kind>: Remove.
+	* linux-x86-low.cc (class x86_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(x86_sw_breakpoint_from_kind): Turn into...
+	(x86_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<sw_breakpoint_from_kind>: Declare.
+	(aarch64_sw_breakpoint_from_kind): Turn into...
+	(aarch64_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (class arm_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(arm_target::sw_breakpoint_from_kind): Define.
+	(the_low_target): Remove the op field.
+	* linux-bfin-low.cc (class bfin_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(bfin_sw_breakpoint_from_kind): Turn into...
+	(bfin_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-cris-low.cc (class cris_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(cris_sw_breakpoint_from_kind): Turn into...
+	(cris_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-crisv32-low.cc (class crisv32_target)
+	<sw_breakpoint_from_kind>: Declare.
+	(cris_sw_breakpoint_from_kind): Turn into...
+	(crisv32_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ia64-low.cc (class ia64_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(ia64_target::sw_breakpoint_from_kind): Define.
+	* linux-m32r-low.cc (class m32r_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(m32r_sw_breakpoint_from_kind): Turn into...
+	(m32r_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-m68k-low.cc (class m68k_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(m68k_sw_breakpoint_from_kind): Turn into...
+	(m68k_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-mips-low.cc (class mips_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(mips_sw_breakpoint_from_kind): Turn into...
+	(mips_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-nios2-low.cc (class nios2_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(nios2_sw_breakpoint_from_kind): Turn into...
+	(nios2_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (class ppc_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(ppc_sw_breakpoint_from_kind): Turn into...
+	(ppc_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-riscv-low.cc (class riscv_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(riscv_sw_breakpoint_from_kind): Turn into...
+	(riscv_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-s390-low.cc (class s390_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(s390_sw_breakpoint_from_kind): Turn into...
+	(s390_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-sh-low.cc (class sh_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(sh_sw_breakpoint_from_kind): Turn into...
+	(sh_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-sparc-low.cc (class sparc_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(sparc_sw_breakpoint_from_kind): Turn into...
+	(sparc_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-tic6x-low.cc (class tic6x_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(tic6x_sw_breakpoint_from_kind): Turn into...
+	(tic6x_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-tile-low.cc (class tile_target) <sw_breakpoint_from_kind>:
+	Declare.
+	(tile_sw_breakpoint_from_kind): Turn into...
+	(tile_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+	* linux-xtensa-low.cc (class xtensa_target)
+	<sw_breakpoint_from_kind>: Declare.
+	(xtensa_sw_breakpoint_from_kind): Turn into...
+	(xtensa_target::sw_breakpoint_from_kind): ...this.
+	(the_low_target): Remove the op field.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Remove the 'breakpoint_kind_from_pc' and
+	'breakpoint_kind_from_current_state' linux target ops, and let the
+	concrete linux target define them by overriding the ops of
+	process_stratum_target.
+
+	* linux-low.cc (linux_process_target::breakpoint_kind_from_pc):
+	Remove.
+	(linux_process_target::breakpoint_kind_from_current_state): Remove.
+	* linux-low.h (struct linux_target_ops): Remove ops.
+	(class linux_process_target) <breakpoint_kind_from_pc>: Remove.
+	<breakpoint_kind_from_current_state>: Remove.
+	* linux-x86-low.cc (the_low_target): Remove the op fields.
+	* linux-bfin-low.cc (the_low_target): Ditto.
+	* linux-cris-low.cc (the_low_target): Ditto.
+	* linux-crisv32-low.cc (the_low_target): Ditto.
+	* linux-m32r-low.cc (the_low_target): Ditto.
+	* linux-m68k-low.cc (the_low_target): Ditto.
+	* linux-mips-low.cc (the_low_target): Ditto.
+	* linux-nios2-low.cc (the_low_target): Ditto.
+	* linux-ppc-low.cc (the_low_target): Ditto.
+	* linux-s390-low.cc (the_low_target): Ditto.
+	* linux-sh-low.cc (the_low_target): Ditto.
+	* linux-sparc-low.cc (the_low_target): Ditto.
+	* linux-tic6x-low.cc (the_low_target): Ditto.
+	* linux-tile-low.cc (the_low_target): Ditto.
+	* linux-xtensa-low.cc (the_low_target): Ditto.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<breakpoint_kind_from_pc>
+	<breakpoint_kind_from_current_state>: Declare.
+	(aarch64_breakpoint_kind_from_pc): Turn into...
+	(aarch64_target::breakpoint_kind_from_pc): ...this.
+	(aarch64_breakpoint_kind_from_current_state): Turn into...
+	(aarch64_target::breakpoint_kind_from_current_state): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-arm-low.cc (class arm_target):
+	<breakpoint_kind_from_pc>
+	<breakpoint_kind_from_current_state>: Declare.
+	(arm_target::breakpoint_kind_from_pc): Define.
+	(arm_target::breakpoint_kind_from_current_state): Define.
+	(the_low_target): Remove the op fields.
+	* linux-riscv-low.cc (class riscv_target):
+	<breakpoint_kind_from_pc>: Declare.
+	(riscv_breakpoint_kind_from_pc): Turn into...
+	(riscv_target::breakpoint_kind_from_pc): ...this.
+	(the_low_target): Remove the op fields.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'get_pc' and 'set_pc' linux target ops into methods
+	of linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the ops.
+	(class linux_process_target) <low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	* linux-low.cc (supports_breakpoints): Turn into...
+	(linux_process_target::low_supports_breakpoints): ...this.
+	(linux_process_target::low_get_pc): Define.
+	(linux_process_target::low_set_pc): Define.
+
+	Update the callers below.
+
+	(linux_process_target::get_pc)
+	(linux_process_target::save_stop_reason)
+	(linux_process_target::maybe_move_out_of_jump_pad)
+	(linux_process_target::wait_1)
+	(linux_process_target::resume_one_lwp_throw)
+	(linux_process_target::resume)
+	(linux_process_target::proceed_all_lwps)
+	(linux_process_target::read_pc)
+	(linux_process_target::write_pc)
+
+	* linux-x86-low.cc (class linux_process_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(x86_target::low_supports_breakpoints): Define.
+	(x86_get_pc): Turn into...
+	(x86_target::low_get_pc): ...this.
+	(x86_set_pc): Turn into...
+	(x86_target::low_set_pc): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-arm-low.cc (class arm_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(arm_target::low_supports_breakpoints)
+	(arm_target::low_get_pc)
+	(arm_target::low_set_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-bfin-low.cc (class bfin_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(bfin_target::low_supports_breakpoints)
+	(bfin_target::low_get_pc)
+	(bfin_target::low_set_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-cris-low.cc (class cris_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(cris_target::low_supports_breakpoints)
+	(cris_target::low_get_pc)
+	(cris_target::low_set_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-crisv32-low.cc (class crisv32_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(crisv32_target::low_supports_breakpoints)
+	(crisv32_target::low_get_pc)
+	(crisv32_target::low_set_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-m32r-low.cc (class m32r_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(m32r_target::low_supports_breakpoints)
+	(m32r_target::low_get_pc)
+	(m32r_target::low_set_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-m68k-low.cc (class m68k_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(m68k_target::low_supports_breakpoints)
+	(m68k_target::low_get_pc)
+	(m68k_target::low_set_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-nios2-low.cc (class nios2_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(nios2_target::low_supports_breakpoints)
+	(nios2_target::low_get_pc)
+	(nios2_target::low_set_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-sh-low.cc (class sh_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(sh_target::low_supports_breakpoints)
+	(sh_target::low_get_pc)
+	(sh_target::low_set_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-xtensa-low.cc (class xtensa_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(xtensa_target::low_supports_breakpoints)
+	(xtensa_target::low_get_pc)
+	(xtensa_target::low_set_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-sparc-low.cc (class sparc_target)
+	<low_supports_breakpoints>
+	<low_get_pc>: Declare.
+	(sparc_target::low_supports_breakpoints)
+	(sparc_target::low_get_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-tile-low.cc (class tile_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(tile_target::low_supports_breakpoints)
+	(tile_target::low_get_pc)
+	(tile_target::low_set_pc): Define.
+	(the_low_target): Remove the op fields.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(aarch64_target::low_supports_breakpoints): Define.
+	(aarch64_get_pc): Turn into...
+	(aarch64_target::low_get_pc): ...this.
+	(aarch64_set_pc): Turn into...
+	(aarch64_target::low_set_pc): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-mips-low.cc (class mips_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(mips_target::low_supports_breakpoints): Define.
+	(mips_get_pc): Turn into...
+	(mips_target::low_get_pc): ...this.
+	(mips_set_pc): Turn into...
+	(mips_target::low_set_pc): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-ppc-low.cc (class ppc_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(ppc_target::low_supports_breakpoints): Define.
+	(ppc_get_pc): Turn into...
+	(ppc_target::low_get_pc): ...this.
+	(ppc_set_pc): Turn into...
+	(ppc_target::low_set_pc): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-riscv-low.cc (class riscv_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(riscv_target::low_supports_breakpoints): Define.
+	(riscv_get_pc): Turn into...
+	(riscv_target::low_get_pc): ...this.
+	(riscv_set_pc): Turn into...
+	(riscv_target::low_set_pc): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-s390-low.cc (class s390_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(s390_target::low_supports_breakpoints): Define.
+	(s390_get_pc): Turn into...
+	(s390_target::low_get_pc): ...this.
+	(s390_set_pc): Turn into...
+	(s390_target::low_set_pc): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-tic6x-low.cc (class tic6x_target)
+	<low_supports_breakpoints>
+	<low_get_pc>
+	<low_set_pc>: Declare.
+	(tic6x_target::low_supports_breakpoints): Define.
+	(tic6x_get_pc): Turn into...
+	(tic6x_target::low_get_pc): ...this.
+	(tic6x_set_pc): Turn into...
+	(tic6x_target::low_set_pc): ...this.
+	(the_low_target): Remove the op fields.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn some more static methods in linux-low into private methods
+	of linux_process_target.
+
+	* linux-low.cc (get_pc): Turn into...
+	(linux_process_target::get_pc): ...this.
+	(save_stop_reason): Turn into...
+	(linux_process_target::save_stop_reason): ...this.
+	(thread_still_has_status_pending_p): Turn into...
+	(linux_process_target::thread_still_has_status_pending): ...this.
+	(status_pending_p_callback): Turn into...
+	(linux_process_target::status_pending_p_callback): ...this.
+	(resume_stopped_resumed_lwps): Turn into...
+	(linux_process_target::resume_stopped_resumed_lwps): ...this.
+	(install_software_single_step_breakpoints): Turn into...
+	(linux_process_target::install_software_single_step_breakpoints):
+	...this.
+	(single_step): Turn into...
+	(linux_process_target::single_step): ...this.
+	(linux_resume_one_lwp_throw): Turn into...
+	(linux_process_target::resume_one_lwp_throw): ...this.
+	(linux_resume_one_lwp): Turn into...
+	(linux_process_target::resume_one_lwp): ...this.
+	(resume_status_pending_p): Turn into...
+	(linux_process_target::resume_status_pending): ...this.
+	(need_step_over_p): Turn into...
+	(linux_process_target::thread_needs_step_over): ...this.
+	(linux_resume_one_thread): Turn into...
+	(linux_process_target::resume_one_thread): ...this.
+	(proceed_one_lwp): Turn into...
+	(linux_process_target::proceed_one_lwp): ...this.
+	(unsuspend_and_proceed_one_lwp): Turn into...
+	(linux_process_target::unsuspend_and_proceed_one_lwp): ...this.
+
+	Update the calls/references to the above functions below.
+
+	(linux_process_target::handle_extended_wait)
+	(linux_process_target::filter_event)
+	(linux_process_target::wait_for_event_filtered)
+	(linux_process_target::wait_1)
+	(linux_process_target::move_out_of_jump_pad)
+	(linux_process_target::start_step_over)
+	(linux_process_target::resume)
+	(linux_process_target::proceed_all_lwps)
+	(regsets_store_inferior_registers)
+	(linux_process_target::store_register)
+
+	* linux-low.h (class linux_process_target)
+	<get_pc>
+	<save_stop_reason>
+	<thread_still_has_status_pending>
+	<status_pending_p_callback>
+	<resume_stopped_resumed_lwps>
+	<install_software_single_step_breakpoints>
+	<single_step>
+	<resume_one_lwp_throw>
+	<resume_one_lwp>
+	<resume_status_pending>
+	<thread_needs_step_over>
+	<resume_one_thread>
+	<proceed_one_lwp>
+	<unsuspend_and_proceed_one_lwp>: Declare.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'fetch_register' linux target op into a method of
+	linux_process_target.
+
+	* linux-low.h (struct linux_target_ops) <fetch_register>: Remove.
+	(class linux_process_target) <low_fetch_register>: Declare.
+	* linux-x86-low.cc (the_low_target)
+	* linux-aarch64-low.cc (the_low_target)
+	* linux-arm-low.cc (the_low_target)
+	* linux-bfin-low.cc (the_low_target)
+	* linux-cris-low.cc (the_low_target)
+	* linux-crisv32-low.cc (the_low_target)
+	* linux-m32r-low.cc (the_low_target)
+	* linux-m68k-low.cc (the_low_target)
+	* linux-nios2-low.cc (the_low_target)
+	* linux-ppc-low.cc (the_low_target)
+	* linux-s390-low.cc (the_low_target)
+	* linux-sh-low.cc (the_low_target)
+	* linux-sparc-low.cc (the_low_target)
+	* linux-tic6x-low.cc (the_low_target)
+	* linux-tile-low.cc (the_low_target)
+	* linux-xtensa-low.cc (the_low_target): Remove the op field.
+	* linux-ia64-low.cc (class ia64_target) <low_fetch_register>:
+	Declare.
+	(ia64_fetch_register): Turn into...
+	(ia64_target::low_fetch_register): ...this.
+	(the_low_target): Remove the op field.
+	* linux-mips-low.cc (class mips_target) <low_fetch_register>:
+	Declare.
+	(mips_fetch_register): Turn into...
+	(mips_target::low_fetch_register): ...this.
+	(the_low_target): Remove the op field.
+	* linux-riscv-low.cc (class riscv_target) <low_fetch_register>:
+	Declare.
+	(riscv_fetch_register): Turn into...
+	(riscv_target::low_fetch_register): ...this.
+	(the_low_target): Remove the op field.
+
+	Update the callers below.
+
+	* linux-low.cc (linux_process_target::fetch_registers)
+	(linux_process_target::low_fetch_register)
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'cannot_fetch_register' and 'cannot_store_register'
+	linux target ops into methods of linux_process_target.
+
+	* linux-low.h (struct linux_target_ops): Remove the low target ops.
+	(class linux_process_target) <fetch_register>
+	<store_register>
+	<usr_fetch_inferior_registers>
+	<usr_store_inferior_registers>
+	<low_cannot_fetch_register>
+	<low_cannot_fetch_register> Declare.
+	* linux-low.cc (fetch_register): Turn into...
+	(linux_process_target::fetch_register): ...this.
+	(store_register): Turn into ...
+	(linux_process_target::store_register): ...this.
+	(usr_fetch_inferior_registers): Turn into...
+	(linux_process_target::usr_fetch_inferior_registers): ...this.
+	(usr_store_inferior_registers): Turn into...
+	(linux_process_target::usr_store_inferior_registers): ...this.
+	* linux-x86-low.cc (class x86_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(x86_cannot_store_register): Turn into...
+	(x86_target::low_cannot_store_register): ...this.
+	(x86_cannot_fetch_register): Turn into...
+	(x86_target::low_cannot_fetch_register): ...this.
+	(the_low_target): Remove the target op fields.
+	* linux-aarch64-low.cc (class aarch64_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(aarch64_target::low_cannot_fetch_register)
+	(aarch64_target::low_cannot_store_register): Define.
+	(the_low_target): Remove the op fields.
+	* linux-arm-low.cc (class arm_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(arm_cannot_fetch_register): Turn into...
+	(arm_target::low_cannot_fetch_register): ...this.
+	(arm_cannot_store_register): Turn into...
+	(arm_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-bfin-low.cc (class bfin_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(bfin_cannot_fetch_register): Turn into...
+	(bfin_target::low_cannot_fetch_register): ...this.
+	(bfin_cannot_store_register): Turn into...
+	(bfin_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-cris-low.cc (class cris_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(cris_cannot_fetch_register): Turn into...
+	(cris_target::low_cannot_fetch_register): ...this.
+	(cris_cannot_store_register): Turn into...
+	(cris_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-crisv32-low.cc (class crisv32_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(crisv32_target::low_cannot_fetch_register)
+	(crisv32_target::low_cannot_store_register): Define.
+	(the_low_target): Remove the op fields.
+	* linux-ia64-low.cc (class ia64_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(ia64_cannot_fetch_register): Turn into...
+	(ia64_target::low_cannot_fetch_register): ...this.
+	(ia64_cannot_store_register): Turn into...
+	(ia64_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-m32r-low.cc (class m32r_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(m32r_cannot_fetch_register): Turn into...
+	(m32r_target::low_cannot_fetch_register): ...this.
+	(m32r_cannot_store_register): Turn into...
+	(m32r_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-m68k-low.cc (class m68k_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(m68k_cannot_fetch_register): Turn into...
+	(m68k_target::low_cannot_fetch_register): ...this.
+	(m68k_cannot_store_register): Turn into...
+	(m68k_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-mips-low.cc (class mips_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(mips_cannot_fetch_register): Turn into...
+	(mips_target::low_cannot_fetch_register): ...this.
+	(mips_cannot_store_register): Turn into...
+	(mips_target::low_cannot_store_register): ...this.
+	(get_usrregs_info): Inline at the call sites in
+	low_cannot_fetch_register and low_cannot_store_register,
+	and remove.
+	(the_low_target): Remove the op fields.
+	* linux-nios2-low.cc (class nios2_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(nios2_cannot_fetch_register): Turn into...
+	(nios2_target::low_cannot_fetch_register): ...this.
+	(nios2_cannot_store_register): Turn into...
+	(nios2_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-ppc-low.cc (class ppc_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(ppc_cannot_fetch_register): Turn into...
+	(ppc_target::low_cannot_fetch_register): ...this.
+	(ppc_cannot_store_register): Turn into...
+	(ppc_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-riscv-low.cc (class riscv_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(riscv_target::low_cannot_fetch_register)
+	(riscv_target::low_cannot_store_register): Define.
+	(the_low_target): Remove the op fields.
+	* linux-s390-low.cc (class s390_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(s390_cannot_fetch_register): Turn into...
+	(s390_target::low_cannot_fetch_register): ...this.
+	(s390_cannot_store_register): Turn into...
+	(s390_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-sh-low.cc (class sh_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(sh_cannot_fetch_register): Turn into...
+	(sh_target::low_cannot_fetch_register): ...this.
+	(sh_cannot_store_register): Turn into...
+	(sh_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-sparc-low.cc (class sparc_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(sparc_cannot_fetch_register): Turn into...
+	(sparc_target::low_cannot_fetch_register): ...this.
+	(sparc_cannot_store_register): Turn into...
+	(sparc_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-tic6x-low.cc (class tic6x_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(tic6x_cannot_fetch_register): Turn into...
+	(tic6x_target::low_cannot_fetch_register): ...this.
+	(tic6x_cannot_store_register): Turn into...
+	(tic6x_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-tile-low.cc (class tile_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(tile_cannot_fetch_register): Turn into...
+	(tile_target::low_cannot_fetch_register): ...this.
+	(tile_cannot_store_register): Turn into...
+	(tile_target::low_cannot_store_register): ...this.
+	(the_low_target): Remove the op fields.
+	* linux-xtensa-low.cc (class xtensa_target)
+	<low_cannot_fetch_register>
+	<low_cannot_store_register>: Declare.
+	(xtensa_target::low_cannot_fetch_register)
+	(xtensa_target::low_cannot_store_register): Define.
+	(the_low_target): Remove the op fields.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'regs_info' linux target op into a method of
+	linux_process_target.
+
+	* linux-low.h (struct linux_target_ops) <regs_info>: Remove.
+	(class linux_process_target) <get_regs_info>: Define.
+
+	Update the callers below.
+
+	* linux-low.cc (linux_process_target::fetch_registers)
+	(linux_process_target::store_registers)
+	* proc-service.cc (gregset_info)
+
+	* linux-x86-low.cc (class x86_target) <get_regs_info>: Declare.
+	(x86_linux_regs_info): Turn into ...
+	(x86_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target) <get_regs_info>:
+	Declare.
+	(aarch64_regs_info): Turn into ...
+	(aarch64_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (class arm_target) <get_regs_info>: Declare.
+	(arm_regs_info): Turn into ...
+	(arm_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-bfin-low.cc (class bfin_target) <get_regs_info>: Declare.
+	(bfin_regs_info): Turn into ...
+	(bfin_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-cris-low.cc (class cris_target) <get_regs_info>: Declare.
+	(cris_regs_info): Turn into ...
+	(cris_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-crisv32-low.cc (class crisv32_target) <get_regs_info>:
+	Declare.
+	(crisv32_regs_info): Turn into ...
+	(crisv32_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ia64-low.cc (class ia64_target) <get_regs_info>: Declare.
+	(ia64_regs_info): Turn into ...
+	(ia64_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-m32r-low.cc (class m32r_target) <get_regs_info>: Declare.
+	(m32r_regs_info): Turn into ...
+	(m32r_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-m68k-low.cc (class m68k_target) <get_regs_info>: Declare.
+	(m68k_regs_info): Turn into ...
+	(m68k_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-mips-low.cc (class mips_target) <get_regs_info>: Declare.
+	(mips_regs_info): Turn into ...
+	(mips_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	(get_usrregs_info): Update the call to the op.
+	* linux-nios2-low.cc (class nios2_target) <get_regs_info>: Declare.
+	(nios2_regs_info): Turn into ...
+	(nios2_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (class ppc_target) <get_regs_info>: Declare.
+	(ppc_regs_info): Turn into ...
+	(ppc_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-riscv-low.cc (class riscv_target) <get_regs_info>: Declare.
+	(riscv_regs_info): Turn into ...
+	(riscv_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-s390-low.cc (class s390_target) <get_regs_info>: Declare.
+	(s390_regs_info): Turn into ...
+	(s390_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	(s390_collect_ptrace_register)
+	(s390_supply_ptrace_register)
+	(s390_fill_gregset): Update the call to the op.
+	* linux-sh-low.cc (class sh_target) <get_regs_info>: Declare.
+	(sh_regs_info): Turn into ...
+	(sh_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-sparc-low.cc (class sparc_target) <get_regs_info>: Declare.
+	(sparc_regs_info): Turn into ...
+	(sparc_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-tic6x-low.cc (class tic6x_target) <get_regs_info>: Declare.
+	(tic6x_regs_info): Turn into ...
+	(tic6x_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-tile-low.cc (class tile_target) <get_regs_info>: Declare.
+	(tile_regs_info): Turn into ...
+	(tile_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+	* linux-xtensa-low.cc (class xtensa_target) <get_regs_info>:
+	Declare.
+	(xtensa_regs_info): Turn into ...
+	(xtensa_target::get_regs_info): ...this.
+	(the_low_target): Remove the op field.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn the 'arch_setup' linux target op into a method of
+	linux_process_target.
+
+	* linux-low.h (struct linux_target_ops) <arch_setup>: Delete.
+	(class linux_process_target) <arch_setup_thread>
+	<low_arch_setup>: New declarations.
+	* linux-low.cc (linux_arch_setup): Delete.
+	(linux_arch_setup_thread): Turn into...
+	(linux_process_target::arch_setup_thread): ... this.
+
+	Update the callers below.
+
+	(linux_process_target::handle_extended_wait)
+	(linux_process_target::post_create_inferior)
+	(linux_process_target::filter_event)
+
+	* linux-x86-low.cc (class x86_target) <low_arch_setup>: New
+	declaration.
+	(x86_linux_update_xmltarget): Turn into...
+	(x86_target::update_xmltarget): ...this.
+	(x86_linux_process_qsupported): Update the call to
+	x86_linux_update_xmltarget.
+	(x86_arch_setup): Turn into ...
+	(x86_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-aarch64-low.cc (class aarch64_target) <low_arch_setup>: New
+	declaration.
+	(aarch64_arch_setup): Turn into ...
+	(aarch64_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-arm-low.cc (class arm_target) <low_arch_setup>: New
+	declaration.
+	(arm_arch_setup): Turn into ...
+	(arm_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-bfin-low.cc (class bfin_target) <low_arch_setup>: New
+	declaration.
+	(bfin_arch_setup): Turn into ...
+	(bfin_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-cris-low.cc (class cris_target) <low_arch_setup>: New
+	declaration.
+	(cris_arch_setup): Turn into ...
+	(cris_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-crisv32-low.cc (class crisv32_target) <low_arch_setup>: New
+	declaration.
+	(crisv32_arch_setup): Turn into ...
+	(crisv32_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ia64-low.cc (class ia64_target) <low_arch_setup>: New
+	declaration.
+	(ia64_arch_setup): Turn into ...
+	(ia64_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-m32r-low.cc (class m32r_target) <low_arch_setup>: New
+	declaration.
+	(m32r_arch_setup): Turn into ...
+	(m32r_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-m68k-low.cc (class m68k_target) <low_arch_setup>: New
+	declaration.
+	(m68k_arch_setup): Turn into ...
+	(m68k_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-mips-low.cc (class mips_target) <low_arch_setup>: New
+	declaration.
+	(mips_arch_setup): Turn into ...
+	(mips_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-nios2-low.cc (class nios2_target) <low_arch_setup>: New
+	declaration.
+	(nios2_arch_setup): Turn into ...
+	(nios2_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-ppc-low.cc (class ppc_target) <low_arch_setup>: New
+	declaration.
+	(ppc_arch_setup): Turn into ...
+	(ppc_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-riscv-low.cc (class riscv_target) <low_arch_setup>: New
+	declaration.
+	(riscv_arch_setup): Turn into ...
+	(riscv_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-s390-low.cc (class s390_target) <low_arch_setup>: New
+	declaration.
+	(s390_arch_setup): Turn into ...
+	(s390_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-sh-low.cc (class sh_target) <low_arch_setup>: New
+	declaration.
+	(sh_arch_setup): Turn into ...
+	(sh_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-sparc-low.cc (class sparc_target) <low_arch_setup>: New
+	declaration.
+	(sparc_arch_setup): Turn into ...
+	(sparc_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-tic6x-low.cc (class tic6x_target) <low_arch_setup>: New
+	declaration.
+	(tic6x_arch_setup): Turn into ...
+	(tic6x_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-tile-low.cc (class tile_target) <low_arch_setup>: New
+	declaration.
+	(tile_arch_setup): Turn into ...
+	(tile_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+	* linux-xtensa-low.cc (class xtensa_target) <low_arch_setup>: New
+	declaration.
+	(xtensa_arch_setup): Turn into ...
+	(xtensa_target::low_arch_setup): ...this.
+	(the_low_target): Remove the op field.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* linux-low.h (the_linux_target): New extern declaration.
+	* linux-low.cc (initialize_low): Use 'the_linux_target' to set
+	'the_target'.
+	(the_linux_target): Remove.
+	* linux-x86-low.cc (class x86_target): New class.
+	(the_x86_target): New static object.
+	(the_linux_target): Define as pointer to the_x86_target.
+	* linux-aarch64-low.cc (class aarch64_target): New class.
+	(the_aarch64_target): New static object.
+	(the_linux_target): Define as pointer to the_aarch64_target.
+	* linux-arm-low.cc (class arm_target): New class.
+	(the_arm_target): New static object.
+	(the_linux_target): Define as pointer to the_arm_target.
+	* linux-bfin-low.cc (class bfin_target): New class.
+	(the_bfin_target): New static object.
+	(the_linux_target): Define as pointer to the_bfin_target.
+	* linux-cris-low.cc (class cris_target): New class.
+	(the_cris_target): New static object.
+	(the_linux_target): Define as pointer to the_cris_target.
+	* linux-crisv32-low.cc (class crisv32_target): New class.
+	(the_crisv32_target): New static object.
+	(the_linux_target): Define as pointer to the_crisv32_target.
+	* linux-ia64-low.cc (class ia64_target): New class.
+	(the_ia64_target): New static object.
+	(the_linux_target): Define as pointer to the_ia64_target.
+	* linux-m32r-low.cc (class m32r_target): New class.
+	(the_m32r_target): New static object.
+	(the_linux_target): Define as pointer to the_m32r_target.
+	* linux-m68k-low.cc (class m68k_target): New class.
+	(the_m68k_target): New static object.
+	(the_linux_target): Define as pointer to the_m68k_target.
+	* linux-mips-low.cc (class mips_target): New class.
+	(the_mips_target): New static object.
+	(the_linux_target): Define as pointer to the_mips_target.
+	* linux-nios2-low.cc (class nios2_target): New class.
+	(the_nios2_target): New static object.
+	(the_linux_target): Define as pointer to the_nios2_target.
+	* linux-ppc-low.cc (class ppc_target): New class.
+	(the_ppc_target): New static object.
+	(the_linux_target): Define as pointer to the_ppc_target.
+	* linux-riscv-low.cc (class riscv_target): New class.
+	(the_riscv_target): New static object.
+	(the_linux_target): Define as pointer to the_riscv_target.
+	* linux-s390-low.cc (class s390_target): New class.
+	(the_s390_target): New static object.
+	(the_linux_target): Define as pointer to the_s390_target.
+	* linux-sh-low.cc (class sh_target): New class.
+	(the_sh_target): New static object.
+	(the_linux_target): Define as pointer to the_sh_target.
+	* linux-sparc-low.cc (class sparc_target): New class.
+	(the_sparc_target): New static object.
+	(the_linux_target): Define as pointer to the_sparc_target.
+	* linux-tic6x-low.cc (class tic6x_target): New class.
+	(the_tic6x_target): New static object.
+	(the_linux_target): Define as pointer to the_tic6x_target.
+	* linux-tile-low.cc (class tile_target): New class.
+	(the_tile_target): New static object.
+	(the_linux_target): Define as pointer to the_tile_target.
+	* linux-xtensa-low.cc (class xtensa_target): New class.
+	(the_xtensa_target): New static object.
+	(the_linux_target): Define as pointer to the_xtensa_target.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn some static functions in linux-low.cc into private methods of
+	linux_process_target.
+
+	* linux-low.cc (handle_extended_wait): Turn into ...
+	(linux_process_target::handle_extended_wait): ...this.  Call
+	'mourn' on 'this' object instead of 'the_target'.
+	(maybe_move_out_of_jump_pad): Turn into...
+	(linux_process_target::maybe_move_out_of_jump_pad): ...this.
+	(linux_low_filter_event): Turn into...
+	(linux_process_target::filter_event): ...this.
+	(linux_wait_for_event_filtered): Turn into...
+	(linux_process_target::wait_for_event_filtered): ...this.
+	(linux_wait_for_event): Turn into...
+	(linux_process_target::wait_for_event): ...this.
+	(linux_wait_1): Turn into...
+	(linux_process_target::wait_1): ...this.
+	(wait_for_sigstop): Turn into...
+	(linux_process_target::wait_for_sigstop): ...this.
+	(move_out_of_jump_pad_callback): Turn into...
+	(linux_process_target::move_out_of_jump_pad): ...this.
+	(stop_all_lwps): Turn into...
+	(linux_process_target::stop_all_lwps): ...this.
+	(start_step_over): Turn into...
+	(linux_process_target::start_step_over): ...this.
+	(complete_ongoing_step_over): Turn into...
+	(linux_process_target::complete_ongoing_step_over): ...this.
+	(proceed_all_lwps): Turn into...
+	(linux_process_target::proceed_all_lwps): ...this.
+	(unstop_all_lwps): Turn into...
+	(linux_process_target::unstop_all_lwps): ...this.
+
+	* linux-low.h (class linux_process_target)
+	<handle_extended_wait>
+	<maybe_move_out_of_jump_pad>
+	filter_event>
+	<wait_for_event_filtered>
+	<wait_for_event>
+	<wait_1>
+	<wait_for_sigstop>
+	<move_out_of_jump_pad>
+	<stop_all_lwps>
+	<start_step_over>
+	<complete_ongoing_step_over>
+	<proceed_all_lwps>
+	<unstop_all_lwps>: Declare.
+
+	Update the callers below.
+
+	* linux-low.cc (linux_process_target::attach): Update.
+	(linux_process_target::stabilize_threads): Ditto.
+	(linux_process_target::wait): Ditto.
+
+2020-04-02  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* linux-low.h (struct linux_target_ops): Update the comment for
+	'cannot_store_register' to return 0 or 1.
+	* linux-ppc-low.cc (ppc_cannot_store_register): Return 1 instead
+	of 2.
+
+2020-03-20  Simon Marchi  <simon.marchi@efficios.com>
+
+	* config.in: Re-generate.
+	* configure: Re-generate.
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* regcache.cc (find_register_by_number): Update.
+	* tdesc.cc (init_target_desc): Likewise.
+	* tdesc.h (target_desc::reg_defs): Likewise.
+
+2020-03-12  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* configure.ac (GDBSERVER_DEPFILES): Remove srv_selftest_objs.
+	(WIN32APILIBS): New subst.
+	* Makefile.in (SFILES, OBS, TAGS, GDBREPLAY_OBS): Remove
+	gdbsupport files.
+	(gdbsupport/%.o): Remove target.
+	(GDBSUPPORT_BUILDDIR, GDBSUPPORT): New variables.
+	(gdbserver$(EXEEXT), gdbreplay$(EXEEXT)): Add GDBSUPPORT.
+	(WIN32APILIBS): New variable.
+	(gdbserver$(EXEEXT)): Add WIN32APILIBS.
+	(gdbreplay$(EXEEXT)): Likewise.
+
+2020-03-12  Tom Tromey  <tom@tromey.com>
+
+	* config.in, configure: Rebuild.
+	* configure.ac: Call ZW_GNU_GETTEXT_SISTER_DIR.
+	* acinclude.m4: Include gettext-sister.m4.
+	* Makefile.in (top_builddir, INTL, INTL_DEPS, INTL_CFLAGS): New
+	variables.
+	(INCLUDE_CFLAGS): Add INTL_CFLAGS.
+	(gdbserver$(EXEEXT), gdbreplay$(EXEEXT)): Use INTL_DEPS, INTL.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* acinclude.m4: Update path to selftest.m4.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure.ac: Don't source bfd/development.sh, move
+	GDB_AC_COMMON higher.
+	* configure: Re-generate.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+
+2020-03-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+
+2020-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* .dir-locals.el: New file.
+
+2020-03-05  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* .gitattributes: New file.
+
+2020-03-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* remote-utils.cc (prepare_resume_reply): Add ability to convert T
+	reply into an S reply.
+	* server.cc (disable_packet_T): New global.
+	(captured_main): Set new global when appropriate.
+	* server.h (disable_packet_T): Declare.
+
+2020-02-21  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in (mostlyclean): New target.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* target.h (struct process_stratum_target): Remove.
+	(class process_target): Rename to ...
+	(class process_stratum_target): ... this.
+	* linux-low.h (class linux_process_target): Derive from
+	'process_stratum_target'.
+	* linux-low.cc (linux_target_ops): Remove.
+	(initialize_low): Set the_target to the singleton instance of
+	linux_process_target.
+	* lynx-low.h (class lynx_process_target): Derive from
+	'process_stratum_target'.
+	* lynx-low.cc (lynx_target_ops): Remove.
+	(initialize_low): Set the_target to the singleton instance of
+	lynx_process_target.
+	* nto-low.h (class nto_process_target): Derive from
+	'process_stratum_target'.
+	* nto-low.cc (nto_target_ops): Remove.
+	(initialize_low): Set the_target to the singleton instance of
+	nto_process_target.
+	* win32-low.h (class win32_process_target): Derive from
+	'process_stratum_target'.
+	* win32-low.cc (win32_target_ops): Remove.
+	(initialize_low): Set the_target to the singleton instance of
+	win32_process_target.
+
+	Replace 'the_target->pt' with 'the_target' in the uses below.
+
+	* hostio.cc (hostio_error)
+	(handle_setfs)
+	(handle_open)
+	(handle_unlink)
+	(handle_readlink)
+	* linux-aarch32-low.cc (arm_breakpoint_at)
+	* linux-aarch64-low.cc (aarch64_breakpoint_at)
+	* linux-arm-low.cc (arm_sigreturn_next_pc)
+	(arm_get_hwcap)
+	(arm_get_syscall_trapinfo)
+	* linux-cris-low.cc (cris_breakpoint_at)
+	* linux-crisv32-low.cc (cris_breakpoint_at)
+	* linux-low.cc (handle_extended_wait)
+	(linux_wait_1)
+	(linux_read_memory)
+	(linux_process_target::breakpoint_kind_from_pc)
+	(linux_get_auxv)
+	* linux-m32r-low.cc (m32r_breakpoint_at)
+	* linux-mips-low.cc (mips_breakpoint_at)
+	* linux-nios2-low.cc (nios2_breakpoint_at)
+	* linux-ppc-low.cc (ppc_breakpoint_at)
+	* linux-s390-low.cc (s390_get_hwcap)
+	* linux-sh-low.cc (sh_breakpoint_at)
+	* linux-sparc-low.cc (sparc_fill_gregset_to_stack)
+	(sparc_store_gregset_from_stack)
+	(sparc_breakpoint_at)
+	* linux-tic6x-low.cc (tic6x_breakpoint_at)
+	* linux-tile-low.cc (tile_breakpoint_at)
+	* linux-x86-low.cc (x86_breakpoint_at)
+	* linux-xtensa-low.cc (xtensa_breakpoint_at)
+	* mem-break.cc (bp_size)
+	(bp_opcode)
+	(insert_memory_breakpoint)
+	(set_raw_breakpoint_at)
+	(delete_raw_breakpoint)
+	(z_type_supported)
+	(uninsert_raw_breakpoint)
+	(reinsert_raw_breakpoint)
+	(validate_inserted_breakpoint)
+	* regcache.cc (regcache_read_pc)
+	(regcache_write_pc)
+	* remote-utils.cc (putpkt_binary_1)
+	(input_interrupt)
+	(getpkt)
+	(prepare_resume_reply)
+	* server.cc (handle_general_set)
+	(handle_detach)
+	(handle_qxfer_auxv)
+	(handle_qxfer_exec_file)
+	(handle_qxfer_libraries_svr4)
+	(handle_qxfer_osdata)
+	(handle_qxfer_siginfo)
+	(handle_qxfer_fdpic)
+	(handle_query)
+	(resume)
+	(handle_v_requests)
+	(queue_stop_reply_callback)
+	(captured_main)
+	* target.cc (prepare_to_access_memory)
+	(done_accessing_memory)
+	(read_inferior_memory)
+	(target_write_memory)
+	(target_stop_and_wait)
+	(target_wait)
+	(target_mourn_inferior)
+	(target_continue_no_signal)
+	(target_continue)
+	(target_supports_multi_process)
+	(kill_inferior)
+	* target.h
+	(target_create_inferior)
+	(target_post_create_inferior)
+	(myattach)
+	(target_supports_fork_events)
+	(target_supports_vfork_events)
+	(target_supports_exec_events)
+	(target_handle_new_gdb_connection)
+	(detach_inferior)
+	(mythread_alive)
+	(fetch_inferior_registers)
+	(store_inferior_registers)
+	(join_inferior)
+	(target_supports_non_stop)
+	(target_async)
+	(target_process_qsupported)
+	(target_supports_catch_syscall)
+	(target_get_ipa_tdesc_idx)
+	(target_supports_tracepoints)
+	(target_supports_fast_tracepoints)
+	(target_get_min_fast_tracepoint_insn_len)
+	(target_thread_stopped)
+	(target_pause_all)
+	(target_unpause_all)
+	(target_stabilize_threads)
+	(target_install_fast_tracepoint_jump_pad)
+	(target_emit_ops)
+	(target_supports_disable_randomization)
+	(target_supports_agent)
+	(target_enable_btrace)
+	(target_disable_btrace)
+	(target_read_btrace)
+	(target_read_btrace_conf)
+	(target_supports_range_stepping)
+	(target_supports_stopped_by_sw_breakpoint)
+	(target_stopped_by_sw_breakpoint)
+	(target_supports_stopped_by_hw_breakpoint)
+	(target_supports_hardware_single_step)
+	(target_stopped_by_hw_breakpoint)
+	(target_breakpoint_kind_from_pc)
+	(target_breakpoint_kind_from_current_state)
+	(target_supports_software_single_step)
+	(target_core_of_thread)
+	(target_thread_name)
+	(target_thread_handle)
+	* win32-low.cc (do_initial_child_stuff)
+
+	Rename target op default definitions listed below.
+
+	* target.cc (process_target::post_create_inferior): Rename as ...
+	(process_stratum_target::post_create_inferior): ... this.
+	(process_target::prepare_to_access_memory): Rename as ...
+	(process_stratum_target::prepare_to_access_memory): ... this.
+	(process_target::done_accessing_memory): Rename as ...
+	(process_stratum_target::done_accessing_memory): ... this.
+	(process_target::look_up_symbols): Rename as ...
+	(process_stratum_target::look_up_symbols): ... this.
+	(process_target::supports_read_auxv): Rename as ...
+	(process_stratum_target::supports_read_auxv): ... this.
+	(process_target::read_auxv): Rename as ...
+	(process_stratum_target::read_auxv): ... this.
+	(process_target::supports_z_point_type): Rename as ...
+	(process_stratum_target::supports_z_point_type): ... this.
+	(process_target::insert_point): Rename as ...
+	(process_stratum_target::insert_point): ... this.
+	(process_target::remove_point): Rename as ...
+	(process_stratum_target::remove_point): ... this.
+	(process_target::stopped_by_sw_breakpoint): Rename as ...
+	(process_stratum_target::stopped_by_sw_breakpoint): ... this.
+	(process_target::supports_stopped_by_sw_breakpoint): Rename as ...
+	(process_stratum_target::supports_stopped_by_sw_breakpoint): ... this.
+	(process_target::stopped_by_hw_breakpoint): Rename as ...
+	(process_stratum_target::stopped_by_hw_breakpoint): ... this.
+	(process_target::supports_stopped_by_hw_breakpoint): Rename as ...
+	(process_stratum_target::supports_stopped_by_hw_breakpoint): ... this.
+	(process_target::supports_hardware_single_step): Rename as ...
+	(process_stratum_target::supports_hardware_single_step): ... this.
+	(process_target::stopped_by_watchpoint): Rename as ...
+	(process_stratum_target::stopped_by_watchpoint): ... this.
+	(process_target::stopped_data_address): Rename as ...
+	(process_stratum_target::stopped_data_address): ... this.
+	(process_target::supports_read_offsets): Rename as ...
+	(process_stratum_target::supports_read_offsets): ... this.
+	(process_target::read_offsets): Rename as ...
+	(process_stratum_target::read_offsets): ... this.
+	(process_target::supports_get_tls_address): Rename as ...
+	(process_stratum_target::supports_get_tls_address): ... this.
+	(process_target::get_tls_address): Rename as ...
+	(process_stratum_target::get_tls_address): ... this.
+	(process_target::hostio_last_error): Rename as ...
+	(process_stratum_target::hostio_last_error): ... this.
+	(process_target::supports_qxfer_osdata): Rename as ...
+	(process_stratum_target::supports_qxfer_osdata): ... this.
+	(process_target::qxfer_osdata): Rename as ...
+	(process_stratum_target::qxfer_osdata): ... this.
+	(process_target::supports_qxfer_siginfo): Rename as ...
+	(process_stratum_target::supports_qxfer_siginfo): ... this.
+	(process_target::qxfer_siginfo): Rename as ...
+	(process_stratum_target::qxfer_siginfo): ... this.
+	(process_target::supports_non_stop): Rename as ...
+	(process_stratum_target::supports_non_stop): ... this.
+	(process_target::async): Rename as ...
+	(process_stratum_target::async): ... this.
+	(process_target::start_non_stop): Rename as ...
+	(process_stratum_target::start_non_stop): ... this.
+	(process_target::supports_multi_process): Rename as ...
+	(process_stratum_target::supports_multi_process): ... this.
+	(process_target::supports_fork_events): Rename as ...
+	(process_stratum_target::supports_fork_events): ... this.
+	(process_target::supports_vfork_events): Rename as ...
+	(process_stratum_target::supports_vfork_events): ... this.
+	(process_target::supports_exec_events): Rename as ...
+	(process_stratum_target::supports_exec_events): ... this.
+	(process_target::handle_new_gdb_connection): Rename as ...
+	(process_stratum_target::handle_new_gdb_connection): ... this.
+	(process_target::handle_monitor_command): Rename as ...
+	(process_stratum_target::handle_monitor_command): ... this.
+	(process_target::core_of_thread): Rename as ...
+	(process_stratum_target::core_of_thread): ... this.
+	(process_target::supports_read_loadmap): Rename as ...
+	(process_stratum_target::supports_read_loadmap): ... this.
+	(process_target::read_loadmap): Rename as ...
+	(process_stratum_target::read_loadmap): ... this.
+	(process_target::process_qsupported): Rename as ...
+	(process_stratum_target::process_qsupported): ... this.
+	(process_target::supports_tracepoints): Rename as ...
+	(process_stratum_target::supports_tracepoints): ... this.
+	(process_target::read_pc): Rename as ...
+	(process_stratum_target::read_pc): ... this.
+	(process_target::write_pc): Rename as ...
+	(process_stratum_target::write_pc): ... this.
+	(process_target::supports_thread_stopped): Rename as ...
+	(process_stratum_target::supports_thread_stopped): ... this.
+	(process_target::thread_stopped): Rename as ...
+	(process_stratum_target::thread_stopped): ... this.
+	(process_target::supports_get_tib_address): Rename as ...
+	(process_stratum_target::supports_get_tib_address): ... this.
+	(process_target::get_tib_address): Rename as ...
+	(process_stratum_target::get_tib_address): ... this.
+	(process_target::pause_all): Rename as ...
+	(process_stratum_target::pause_all): ... this.
+	(process_target::unpause_all): Rename as ...
+	(process_stratum_target::unpause_all): ... this.
+	(process_target::stabilize_threads): Rename as ...
+	(process_stratum_target::stabilize_threads): ... this.
+	(process_target::supports_fast_tracepoints): Rename as ...
+	(process_stratum_target::supports_fast_tracepoints): ... this.
+	(process_target::get_min_fast_tracepoint_insn_len): Rename as ...
+	(process_stratum_target::get_min_fast_tracepoint_insn_len): ... this.
+	(process_target::emit_ops): Rename as ...
+	(process_stratum_target::emit_ops): ... this.
+	(process_target::supports_disable_randomization): Rename as ...
+	(process_stratum_target::supports_disable_randomization): ... this.
+	(process_target::supports_qxfer_libraries_svr4): Rename as ...
+	(process_stratum_target::supports_qxfer_libraries_svr4): ... this.
+	(process_target::qxfer_libraries_svr4): Rename as ...
+	(process_stratum_target::qxfer_libraries_svr4): ... this.
+	(process_target::supports_agent): Rename as ...
+	(process_stratum_target::supports_agent): ... this.
+	(process_target::enable_btrace): Rename as ...
+	(process_stratum_target::enable_btrace): ... this.
+	(process_target::disable_btrace): Rename as ...
+	(process_stratum_target::disable_btrace): ... this.
+	(process_target::read_btrace): Rename as ...
+	(process_stratum_target::read_btrace): ... this.
+	(process_target::read_btrace_conf): Rename as ...
+	(process_stratum_target::read_btrace_conf): ... this.
+	(process_target::supports_range_stepping): Rename as ...
+	(process_stratum_target::supports_range_stepping): ... this.
+	(process_target::supports_pid_to_exec_file): Rename as ...
+	(process_stratum_target::supports_pid_to_exec_file): ... this.
+	(process_target::pid_to_exec_file): Rename as ...
+	(process_stratum_target::pid_to_exec_file): ... this.
+	(process_target::supports_multifs): Rename as ...
+	(process_stratum_target::supports_multifs): ... this.
+	(process_target::multifs_open): Rename as ...
+	(process_stratum_target::multifs_open): ... this.
+	(process_target::multifs_unlink): Rename as ...
+	(process_stratum_target::multifs_unlink): ... this.
+	(process_target::multifs_readlink): Rename as ...
+	(process_stratum_target::multifs_readlink): ... this.
+	(process_target::breakpoint_kind_from_pc): Rename as ...
+	(process_stratum_target::breakpoint_kind_from_pc): ... this.
+	(process_target::breakpoint_kind_from_current_state): Rename as ...
+	(process_stratum_target::breakpoint_kind_from_current_state): ... this.
+	(process_target::thread_name): Rename as ...
+	(process_stratum_target::thread_name): ... this.
+	(process_target::thread_handle): Rename as ...
+	(process_stratum_target::thread_handle): ... this.
+	(process_target::supports_software_single_step): Rename as ...
+	(process_stratum_target::supports_software_single_step): ... this.
+	(process_target::supports_catch_syscall): Rename as ...
+	(process_stratum_target::supports_catch_syscall): ... this.
+	(process_target::get_ipa_tdesc_idx): Rename as ...
+	(process_stratum_target::get_ipa_tdesc_idx): ... this.
+
+2020-02-20  Pedro Alves  <palves@redhat.com>
+
+	* target.cc (set_target_ops): Simply copy the given target pointer
+	instead of creating a copy of the pointed object.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's get_ipa_tdesc_idx op into a method
+	of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_get_ipa_tdesc_idx): Update the macro.
+	* target.cc (process_target::get_ipa_tdesc_idx): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_get_ipa_tdesc_idx): Turn into ...
+	(linux_process_target::get_ipa_tdesc_idx): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_catch_syscall op into a
+	method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_supports_catch_syscall): Update the macro.
+	* target.cc (process_target::supports_catch_syscall): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_catch_syscall): Turn into ...
+	(linux_process_target::supports_catch_syscall): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_software_single_step op
+	into a method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_supports_software_single_step): Update the macro.
+	* target.cc (process_target::supports_software_single_step): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_software_single_step): Turn into ...
+	(linux_process_target::supports_software_single_step): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's thread_name and thread_handle ops
+	into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	(target_thread_name): Update the macro.
+	(target_thread_handle): Update the macro.
+	* target.cc (process_target::thread_name): Define.
+	(process_target::thread_handle): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::thread_name): Define.
+	(linux_process_target::thread_handle): Define.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's breakpoint_kind_from_pc,
+	sw_breakpoint_from_kind, and breakpoint_kind_from_current_state
+	ops into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_breakpoint_kind_from_pc): Update the macro.
+	(target_breakpoint_kind_from_current_state): Update the macro.
+	(default_breakpoint_kind_from_pc): Remove declaration.
+	* target.cc (default_breakpoint_kind_from_pc): Turn into ...
+	(process_target::breakpoint_kind_from_pc): ... this.
+	(process_target::breakpoint_kind_from_current_state): Define.
+
+	Update the derived classes and callers below.
+
+	* mem-break.cc (bp_size): Update.
+	(bp_opcode): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_wait_1): Update.
+	(linux_breakpoint_kind_from_pc): Turn into ...
+	(linux_process_target::breakpoint_kind_from_pc): ... this.
+	(linux_sw_breakpoint_from_kind): Turn into ...
+	(linux_process_target::sw_breakpoint_from_kind): ... this.
+	(linux_breakpoint_kind_from_current_state): Turn into ...
+	(linux_process_target::breakpoint_kind_from_current_state): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_process_target::sw_breakpoint_from_kind): Define.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_sw_breakpoint_from_kind): Turn into ...
+	(nto_process_target::sw_breakpoint_from_kind): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_sw_breakpoint_from_kind): Turn into ...
+	(win32_process_target::sw_breakpoint_from_kind): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's multifs_open, multifs_readlink,
+	multifs_unlink ops into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.  Also add
+	'supports_multifs'.
+	* target.cc: Include "fcntl.h", "unistd.h", "sys/types.h", and
+	"sys/stat.h".
+	(process_target::supports_multifs): Define.
+	(process_target::multifs_open): Define.
+	(process_target::multifs_readlink): Define.
+	(process_target::multifs_unlink): Define.
+
+	Update the derived classes and callers below.
+
+	* hostio.cc (handle_setfs): Update.
+	(handle_open): Update.
+	(handle_unlink): Update.
+	(handle_readlink): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::supports_multifs): Define.
+	(linux_process_target::multifs_open): Define.
+	(linux_process_target::multifs_readlink): Define.
+	(linux_process_target::multifs_unlink): Define.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's pid_to_exec_file op into a method
+	of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.  Also add
+	'supports_pid_to_exec_file'.
+	* target.cc (process_target::pid_to_exec_file): Define.
+	(process_target::supports_pid_to_exec_file): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_qxfer_exec_file): Update.
+	(handle_query): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::supports_pid_to_exec_file): Define.
+	(linux_process_target::pid_to_exec_file): Define.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_range_stepping op into a
+	method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_supports_range_stepping): Update the macro.
+	* target.cc (process_target::supports_range_stepping): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_range_stepping): Turn into ...
+	(linux_process_target::supports_range_stepping): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's btrace-related ops (enable_btrace,
+	disable_btrace, read_btrace, read_btrace_conf) into methods of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	(target_enable_btrace): Update.
+	(target_disable_btrace): Update.
+	(target_read_btrace): Update.
+	(target_read_btrace_conf): Update.
+	* target.cc (process_target::enable_btrace): Define.
+	(process_target::disable_btrace): Define.
+	(process_target::read_btrace): Define.
+	(process_target::read_btrace_conf): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target:enable_btrace): Define as a wrapper around
+	linux_enable_btrace.
+	(linux_low_disable_btrace): Turn into ...
+	(linux_process_target::disable_btrace): ... this.
+	(linux_low_read_btrace): Turn into ...
+	(linux_process_target::read_btrace): ... this.
+	(linux_low_btrace_conf): Turn into ...
+	(linux_process_target::read_btrace_conf): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_agent op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_supports_agent): Update the macro.
+	* target.cc (process_target::supports_agent): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_agent): Turn into ...
+	(linux_process_target::supports_agent): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's qxfer_libraries_svr4 op into a
+	method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.  Also add
+	'supports_qxfer_libraries_svr4'.
+	* target.cc (process_target::qxfer_libraries_svr4): Define.
+	(process_target::supports_qxfer_libraries_svr4): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_qxfer_libraries_svr4): Update.
+	(handle_query): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::supports_qxfer_libraries_svr4): Define.
+	(linux_qxfer_libraries_svr4): Turn into ...
+	(linux_process_target::qxfer_libraries_svr4): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_disable_randomization op
+	into a method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_supports_disable_randomization): Update the macro.
+	* target.cc (process_target::supports_disable_randomization): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_disable_randomization): Turn into ...
+	(linux_process_target::supports_disable_randomization): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's emit_ops op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_emit_ops): Update the macro.
+	* target.cc (process_target::emit_ops): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_emit_ops): Turn into ...
+	(linux_process_target::emit_ops): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's install_fast_tracepoint_jump_pad
+	and get_min_fast_tracepoint_insn_len ops into methods of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.  Also add
+	'supports_fast_tracepoints'.
+	(target_supports_fast_tracepoints): Update the macro.
+	(target_get_min_fast_tracepoint_insn_len): Update the macro.
+	(install_fast_tracepoint_jump_pad): Update and rename the macro
+	to ...
+	(target_install_fast_tracepoint_jump_pad): ... this.
+	* target.cc (process_target::supports_fast_tracepoints): Define.
+	(process_target::install_fast_tracepoint_jump_pad): Define.
+	(process_target::get_min_fast_tracepoint_insn_len): Define.
+
+	Update the derived classes and callers below.
+
+	* tracepoint.cc (install_fast_tracepoint): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::supports_fast_tracepoints): Define.
+	(linux_install_fast_tracepoint_jump_pad): Turn into ...
+	(linux_process_target::install_fast_tracepoint_jump_pad): ... this.
+	(linux_get_min_fast_tracepoint_insn_len): Turn into ...
+	(linux_process_target::get_min_fast_tracepoint_insn_len): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's stabilize_threads op into a
+	method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_stabilize_threads): Update the macro.
+	* target.cc (process_target::stabilize_threads): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_status): Update.
+	* tracepoint.cc (cmd_qtdp): Update.
+	(cmd_qtstart): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_stabilize_threads): Turn into ...
+	(linux_process_target::stabilize_threads): ... this.
+	(linux_wait_1): Update.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's pause_all and unpause_all ops
+	into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	(pause_all): Update the macro and rename to...
+	(target_pause_all): ... this.
+	(unpause_all): Update the macro and rename to...
+	(target_unpause_all): ... this.
+	* target.cc (process_target::pause_all): Define.
+	(process_target::unpause_all): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_status): Update.
+	* tracepoint.cc (clear_installed_tracepoints): Update.
+	(cmd_qtdp): Update.
+	(cmd_qtstart): Update.
+	(stop_tracing): Update.
+	(cmd_qtstatus): Update.
+	(upload_fast_traceframes): Update.
+	(run_inferior_command): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_pause_all): Turn into ...
+	(linux_process_target::pause_all): ... this.
+	(linux_unpause_all): Turn into ...
+	(linux_process_target::unpause_all): ... this.
+	(linux_process_target::prepare_to_access_memory): Update.
+	(linux_process_target::done_accessing_memory): Update.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's get_tib_address op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.  Also add
+	'supports_get_tib_address'.
+	* target.cc (process_target::get_tib_address): Define.
+	(process_target::supports_get_tib_address): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_query): Update.
+	* linux-low.cc (win32_target_ops): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_process_target::supports_get_tib_address): Define.
+	(win32_get_tib_address): Turn into ...
+	(win32_process_target::get_tib_address): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's thread_stopped op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.  Also add
+	'supports_thread_stopped'.
+	(target_thread_stopped): Update the macro.
+	* target.cc (process_target::thread_stopped): Define.
+	(process_target::supports_thread_stopped): Define.
+	(prepare_to_access_memory): Update.
+
+	Update the derived classes and callers below.
+
+	* server.cc (queue_stop_reply_callback): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::supports_thread_stopped): Define.
+	(linux_thread_stopped): Turn into ...
+	(linux_process_target::thread_stopped): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's read_pc and write_pc ops into
+	methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	* target.cc (process_target::read_pc): Define.
+	(process_target::write_pc): Define.
+
+	Update the derived classes and callers below.
+
+	* regcache.cc (regcache_read_pc): Update.
+	(regcache_write_pc): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_read_pc): Turn into ...
+	(linux_process_target::read_pc): ... this.
+	(linux_write_pc): Turn into ...
+	(linux_process_target::write_pc): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_tracepoints op into a
+	method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_supports_tracepoints): Update the macro.
+	* target.cc (process_target::supports_tracepoints): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_tracepoints): Turn into ...
+	(linux_process_target::supports_tracepoints): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's process_qsupported op into a method
+	of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_process_qsupported): Update the macro.
+	* target.cc (process_target::process_qsupported): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_qsupported): Turn into ...
+	(linux_process_target::process_qsupported): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's read_loadmap op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.  Also add
+	'supports_read_loadmap'.
+	* target.cc (process_target::read_loadmap): Define.
+	(process_target::supports_read_loadmap): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_qxfer_fdpic): Update.
+	(handle_query): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::supports_read_loadmap): Define.
+	(linux_read_loadmap): Turn into ...
+	(linux_process_target::read_loadmap): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's core_of_thread op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_core_of_thread): Update the macro.
+	* target.cc (process_target::core_of_thread): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::core_of_thread): Define.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's handle_monitor_command op into a
+	method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_handle_monitor_command): Update the macro.
+	* target.cc (process_target::handle_monitor_command): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_query): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::handle_monitor_command): Define.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's handle_new_gdb_connection op into a
+	method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_handle_new_gdb_connection): Update the macro.
+	* target.cc (process_target::handle_new_gdb_connection): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_handle_new_gdb_connection): Turn into ...
+	(linux_process_target::handle_new_gdb_connection): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_fork_events,
+	supports_vfork_events, and supports_exec_events ops into methods
+	of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	(target_supports_fork_events): Update the macro.
+	(target_supports_vfork_events): Update the macro.
+	(target_supports_exec_events): Update the macro.
+	* target.cc (process_target::supports_fork_events): Define.
+	(process_target::supports_vfork_events): Define.
+	(process_target::supports_exec_events): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_fork_events): Turn into ...
+	(linux_process_target::supports_fork_events): ... this.
+	(linux_supports_vfork_events): Turn into ...
+	(linux_process_target::supports_vfork_events): ... this.
+	(linux_supports_exec_events): Turn into ...
+	(linux_process_target::supports_exec_events): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_multi_process op into a
+	method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	* target.cc (process_target::supports_multi_process): Define.
+	(target_supports_multi_process): Update.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_multi_process): Turn into ...
+	(linux_process_target::supports_multi_process): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_non_stop, async, and
+	start_non_stop ops into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	(target_supports_non_stop): Update the macro.
+	(target_async): Update the macro.
+	(start_non_stop): Remove declaration.
+	* target.cc (process_target::supports_non_stop): Define.
+	(process_target::async): Define.
+	(process_target::start_non_stop): Define.
+	(start_non_stop): Remove.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_qxfer_siginfo): Update.
+	(handle_query): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_non_stop): Turn into ...
+	(linux_process_target::supports_non_stop): ... this.
+	(linux_async): Turn into ...
+	(linux_process_target::async): ... this.
+	(linux_start_non_stop): Turn into ...
+	(linux_process_target::start_non_stop): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_supports_non_stop): Remove; rely on the default behavior
+	instead.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's qxfer_siginfo op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.  Also add
+	'supports_qxfer_siginfo'.
+	* target.cc (process_target::qxfer_siginfo): Define.
+	(process_target::supports_qxfer_siginfo): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_qxfer_siginfo): Update.
+	(handle_query): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::supports_qxfer_siginfo): Define.
+	(linux_xfer_siginfo): Turn into ...
+	(linux_process_target::qxfer_siginfo): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's qxfer_osdata op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.  Also add
+	'supports_qxfer_osdata'.
+	* target.cc (process_target::qxfer_osdata): Define.
+	(process_target::supports_qxfer_osdata): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_qxfer_osdata): Update.
+	(handle_query): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::supports_qxfer_osdata): Define.
+	(linux_qxfer_osdata): Turn into ...
+	(linux_process_target::qxfer_osdata): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's hostio_last_error op into a
+	method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	* target.cc: Add "hostio.h" to includes.
+	(process_target::hostio_last_error): Define.
+
+	Update the derived classes and callers below.
+
+	* hostio.cc (hostio_error): Update.
+	* linux-low.cc: Remove "hostio.h" from includes.
+	(linux_target_ops): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.h (class win32_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(wince_hostio_last_error): Turn into ...
+	(win32_process_target::hostio_last_error): ... this.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's get_tls_address op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.  Also add
+	'supports_get_tls_address'.
+	* target.cc (process_target::get_tls_address): Define.
+	(process_target::supports_get_tls_address): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_query): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::supports_get_tls_address): Define.
+	(linux_process_target::get_tls_address): Define.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's read_offsets op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.  Also add
+	'supports_read_offsets'.
+	* target.cc (process_target::read_offsets): Define.
+	(process_target::supports_read_offsets): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_query): Update.
+	* linux-low.cc (SUPPORTS_READ_OFFSETS): New #define directive.
+	(linux_target_ops): Update.
+	(linux_process_target::supports_read_offsets): Define.
+	(linux_read_offsets): Turn into ...
+	(linux_process_target::read_offsets): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's stopped_by_watchpoint and
+	stopped_data_address ops into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	* target.cc (process_target::stopped_by_watchpoint): Define.
+	(process_target::stopped_data_address): Define.
+
+	Update the derived classes and callers below.
+
+	* remote-utils.cc (prepare_resume_reply): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_stopped_by_watchpoint): Turn into ...
+	(linux_process_target::stopped_by_watchpoint): ... this.
+	(linux_stopped_data_address): Turn into ...
+	(linux_process_target::stopped_data_address): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_stopped_by_watchpoint): Turn into ...
+	(nto_process_target::stopped_by_watchpoint): ... this.
+	(nto_stopped_data_address): Turn into ...
+	(nto_process_target::stopped_data_address): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_stopped_by_watchpoint): Turn into ...
+	(win32_process_target::stopped_by_watchpoint): ... this.
+	(win32_stopped_data_address): Turn into ...
+	(win32_process_target::stopped_data_address): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_hardware_single_step op into
+	a method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_supports_hardware_single_step): Update the macro.
+	(target_can_do_hardware_single_step): Remove declaration.
+	* target.cc (process_target::supports_hardware_single_step): Define.
+	(target_can_do_hardware_single_step): Remove.
+
+	Update the derived classes and callers below.
+
+	* linux-low.h (class linux_process_target): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_hardware_single_step): Turn into ...
+	(linux_process_target::supports_hardware_single_step): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_process_target::supports_hardware_single_step): Define.
+	* nto-low.h (class nto_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_process_target::supports_hardware_single_step): Define.
+	* win32-low.h (class win32_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_process_target::supports_hardware_single_step): Define.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's {supports_}stopped_by_hw_breakpoint
+	ops into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	(target_stopped_by_hw_breakpoint): Update the macro.
+	(target_supports_stopped_by_hw_breakpoint): Update the macro.
+	* target.cc (process_target::stopped_by_hw_breakpoint): Define.
+	(process_target::supports_stopped_by_hw_breakpoint): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_stopped_by_hw_breakpoint): Turn into ...
+	(linux_process_target::stopped_by_hw_breakpoint): ... this.
+	(linux_supports_stopped_by_hw_breakpoint): Turn into ...
+	(linux_process_target::supports_stopped_by_hw_breakpoint): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's {supports_}stopped_by_sw_breakpoint
+	ops into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	(target_stopped_by_sw_breakpoint): Update the macro.
+	(target_supports_stopped_by_sw_breakpoint): Update the macro.
+	* target.cc (process_target::stopped_by_sw_breakpoint): Define.
+	(process_target::supports_stopped_by_sw_breakpoint): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_stopped_by_sw_breakpoint): Turn into ...
+	(linux_process_target::stopped_by_sw_breakpoint): ... this.
+	(linux_supports_stopped_by_sw_breakpoint): Turn into ...
+	(linux_process_target::supports_stopped_by_sw_breakpoint): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's insert_point and remove_point ops
+	into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	* target.cc (process_target::insert_point): Define.
+	(process_target::remove_point): Define.
+
+	Update the derived classes and callers below.
+
+	* mem-break.cc (set_raw_breakpoint_at): Update.
+	(delete_raw_breakpoint): Update.
+	(uninsert_raw_breakpoint): Update.
+	(reinsert_raw_breakpoint): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_insert_point): Turn into ...
+	(linux_process_target::insert_point): ... this.
+	(linux_remove_point): Turn into ...
+	(linux_process_target::remove_point): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_insert_point): Turn into ...
+	(nto_process_target::insert_point): ... this.
+	(nto_remove_point): Turn into ...
+	(nto_process_target::remove_point): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_insert_point): Turn into ...
+	(win32_process_target::insert_point): ... this.
+	(win32_remove_point): Turn into ...
+	(win32_process_target::remove_point): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's supports_z_point_type op into a
+	method of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	* target.cc (process_target::supports_z_point_type): Define.
+
+	Update the derived classes and callers below.
+
+	* mem-break.cc (z_type_supported): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_supports_z_point_type): Turn into ...
+	(linux_process_target::supports_z_point_type): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_supports_z_point_type): Turn into ...
+	(nto_process_target::supports_z_point_type): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_supports_z_point_type): Turn into ...
+	(win32_process_target::supports_z_point_type): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's read_auxv op into a method of
+	process_target.
+
+	* target.h (class process_stratum_target): Remove the target op.
+	(struct process_target): Add the target op.  Also add
+	'supports_read_auxv'.
+	* target.cc (process_target::read_auxv): Define.
+	(process_target::supports_read_auxv): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_qxfer_auxv): Update.
+	(handle_query): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_process_target::supports_read_auxv): Define.
+	(linux_read_auxv): Turn into ...
+	(linux_process_target::read_auxv): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_process_target::supports_read_auxv): Define.
+	(nto_read_auxv): Turn into ...
+	(nto_process_target::read_auxv): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's request_interrupt op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+
+	Update the derived classes and callers below.
+
+	* remote-utils.cc (putpkt_binary_1): Update.
+	(input_interrupt): Update.
+	(getpkt): Update.
+	* server.cc (handle_v_requests): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_request_interrupt): Turn into ...
+	(linux_process_target::request_interrupt): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_request_interrupt): Turn into ...
+	(lynx_process_target::request_interrupt): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_request_interrupt): Turn into ...
+	(nto_process_target::request_interrupt): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_request_interrupt): Turn into ...
+	(win32_process_target::request_interrupt): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's look_up_symbols op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	* target.cc (process_target::look_up_symbols): Define.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_query): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_look_up_symbols): Turn into ...
+	(linux_process_target::look_up_symbols): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's read_memory and write_memory
+	ops into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+
+	Update the derived classes and callers below.
+
+	* linux-aarch32-low.cc (arm_breakpoint_at): Update.
+	* linux-aarch64-low.cc (aarch64_breakpoint_at): Update.
+	* linux-arm-low.cc (arm_sigreturn_next_pc): Update.
+	(arm_get_syscall_trapinfo): Update.
+	* linux-cris-low.cc (cris_breakpoint_at): Update.
+	* linux-crisv32-low.cc (cris_breakpoint_at): Update.
+	* linux-m32r-low.cc (m32r_breakpoint_at): Update.
+	* linux-mips-low.cc (mips_breakpoint_at): Update.
+	* linux-nios2-low.cc (nios2_breakpoint_at): Update.
+	* linux-ppc-low.cc (ppc_breakpoint_at): Update.
+	* linux-sh-low.cc (sh_breakpoint_at): Update.
+	* linux-sparc-low.cc (sparc_fill_gregset_to_stack): Update.
+	(sparc_store_gregset_from_stack): Update.
+	(sparc_breakpoint_at): Update.
+	* linux-tic6x-low.cc (tic6x_breakpoint_at): Update.
+	* linux-tile-low.cc (tile_breakpoint_at): Update.
+	* linux-x86-low.cc (x86_breakpoint_at): Update.
+	* linux-xtensa-low.cc (xtensa_breakpoint_at): Update.
+	* mem-brea.cc (insert_memory_breakpoint): Update.
+	(validate_inserted_breakpoint): Update.
+	* target.cc (read_inferior_memory): Update.
+	(target_write_memory): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_read_memory): Make a wrapper around the read_memory target
+	op call.
+	(linux_process_target::read_memory): Rename from linux_read_memory.
+	(linux_write_memory): Turn into ...
+	(linux_process_target::write_memory): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_read_memory): Turn into ...
+	(lynx_process_target::read_memory): ... this.
+	(lynx_write_memory): Turn into ...
+	(lynx_process_target::write_memory): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_read_memory): Turn into ...
+	(nto_process_target::read_memory): ... this.
+	(nto_write_memory): Turn into ...
+	(nto_process_target::write_memory): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_read_inferior_memory): Turn into ...
+	(win32_process_target::read_memory): ... this.
+	(win32_write_inferior_memory): Turn into ...
+	(win32_process_target::write_memory): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's prepare_to_access_memory and
+	done_accessing_memory ops into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	* target.cc (process_target::prepare_to_access_memory): Define.
+	(process_target::done_accessing_memory): Define.
+	(prepare_to_access_memory): Update.
+	(done_accessing_memory): Update.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_prepare_to_access_memory): Turn into ...
+	(linux_process_target::prepare_to_access_memory): ... this.
+	(linux_done_accessing_memory): Turn into ...
+	(linux_process_target::done_accessing_memory): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's fetch_registers and store_registers
+	ops into methods of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target ops.
+	(class process_target): Add the target ops.
+	(fetch_inferior_registers): Update the macro.
+	(store_inferior_registers): Update the macro.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_fetch_registers): Turn into ...
+	(linux_process_target::fetch_registers): ... this.
+	(linux_store_registers): Turn into ...
+	(linux_process_target::store_registers): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_fetch_registers): Turn into ...
+	(lynx_process_target::fetch_registers): ... this.
+	(lynx_store_registers): Turn into ...
+	(lynx_process_target::store_registers): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_fetch_registers): Turn into ...
+	(nto_process_target::fetch_registers): ... this.
+	(nto_store_registers): Turn into ...
+	(nto_process_target::store_registers): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_fetch_inferior_registers): Turn into ...
+	(win32_process_target::fetch_registers): ... this.
+	(win32_store_inferior_registers): Turn into ...
+	(win32_process_target::store_registers): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's wait op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+
+	Update the derived classes and callers below.
+
+	* target.cc (target_wait): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_wait): Turn into ...
+	(linux_process_target::wait): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_wait): Turn into ...
+	(lynx_process_target::wait): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_wait): Turn into ...
+	(nto_process_target::wait): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_wait): Turn into ...
+	(win32_process_target::wait): ... this.
+	(do_initial_child_stuff): Update.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's resume op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+
+	Update the derived classes and callers below.
+
+	* server.cc (resume): Update.
+	* target.cc (target_stop_and_wait): Update.
+	(target_continue_no_signal): Update.
+	(target_continue): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_resume): Turn into ...
+	(linux_process_target::resume): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_resume): Turn into ...
+	(lynx_process_target::resume): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_resume): Turn into ...
+	(nto_process_target::resume): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_resume): Turn into ...
+	(win32_process_target::resume): ... this.
+	(win32_process_target::detach): Update.
+	(do_initial_child_stuff): Update.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's thread_alive op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(mythread_alive): Update the macro.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_thread_alive): Turn into ...
+	(linux_process_target::thread_alive): ... this.
+	(wait_for_sigstop): Update.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_thread_alive): Turn into ...
+	(lynx_process_target::thread_alive): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_thread_alive): Turn into ...
+	(nto_process_target::thread_alive): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_thread_alive): Turn into ...
+	(win32_process_target::thread_alive): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's join op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(join_inferior): Update the macro.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_join): Turn into ...
+	(linux_process_target::join): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_join): Turn into ...
+	(lynx_process_target::join): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_process_target::join): Define.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_join): Turn into ...
+	(win32_process_target::join): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's mourn op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+
+	Update the derived classes and callers below.
+
+	* target.cc (target_mourn_inferior): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_mourn): Turn into ...
+	(linux_process_target::mourn): ... this.
+	(handle_extended_wait): Update.
+	(linux_process_target::kill): Update.
+	(linux_process_target::detach): Update.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_mourn): Turn into ...
+	(lynx_process_target::mourn): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_mourn): Turn into ...
+	(nto_process_target::mourn): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_mourn): Turn into ...
+	(win32_process_target::mourn): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's detach op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(detach_inferior): Update the macro.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_detach): Turn into ...
+	(linux_process_target::detach): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_detach): Turn into ...
+	(lynx_process_target::detach): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_detach): Turn into ...
+	(nto_process_target::detach): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_detach): Turn into ...
+	(win32_process_target::detach): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's kill op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+
+	Update the derived classes and callers below.
+
+	* target.cc (kill_inferior): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_kill): Turn into ...
+	(linux_process_target::kill): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_kill): Turn into ...
+	(lynx_process_target::kill): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_kill): Turn into ...
+	(nto_process_target::kill): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_kill): Turn into ...
+	(win32_process_target::kill): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's attach op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(myattach): Update the macro.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_attach): Turn into ...
+	(linux_process_target::attach): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_attach): Turn into ...
+	(lynx_process_target::attach): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_attach): Turn into ...
+	(nto_process_target::attach): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_attach): Turn into ...
+	(win32_process_target::attach): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's post_create_inferior op into a method
+	of process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(target_post_create_inferior): Update the macro.
+	* target.cc (process_target::post_create_inferior): Define.
+
+	Update the derived classes and callers below.
+
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_post_create_inferior): Turn into ...
+	(linux_process_target::post_create_inferior): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	* win32-low.cc (win32_target_ops): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	Turn process_stratum_target's create_inferior op into a method of
+	process_target.
+
+	* target.h (struct process_stratum_target): Remove the target op.
+	(class process_target): Add the target op.
+	(create_inferior): Rename the macro to ...
+	(target_create_inferior): ... this.
+
+	Update the derived classes and callers below.
+
+	* server.cc (handle_v_run): Update.
+	(captured_main): Update.
+	(process_serial_event): Update.
+	* linux-low.cc (linux_target_ops): Update.
+	(linux_create_inferior): Turn into ...
+	(linux_process_target::create_inferior): ... this.
+	* linux-low.h (class linux_process_target): Update.
+	* lynx-low.cc (lynx_target_ops): Update.
+	(lynx_create_inferior): Turn into ...
+	(lynx_process_target::create_inferior): ... this.
+	* lynx-low.h (class lynx_process_target): Update.
+	* nto-low.cc (nto_target_ops): Update.
+	(nto_create_inferior): Turn into ...
+	(nto_process_target::create_inferior): ... this.
+	* nto-low.h (class nto_process_target): Update.
+	* win32-low.cc (win32_target_ops): Update.
+	(win32_create_inferior): Turn into ...
+	(win32_process_target::create_inferior): ... this.
+	* win32-low.h (class win32_process_target): Update.
+
+2020-02-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* target.h (class process_target): New class definition.
+	(struct process_stratum_target) <pt>: New field with type
+	'process_target*'.
+	* linux-low.h (class linux_process_target): Define as a derived
+	class of 'process_target'.
+	* linux-low.cc (linux_target_ops): Add a linux_process_target*
+	as the 'pt' field.
+	* lynx-low.h (class lynx_process_target): Define as a derived
+	class of 'process_target'.
+	* lynx-low.cc (lynx_target_ops): Add a lynx_process_target*
+	as the 'pt' field.
+	* nto-low.h (class nto_process_target): Define as a derived
+	class of 'process_target'.
+	* nto-low.cc (nto_target_ops): Add an nto_process_target*
+	as the 'pt' field.
+	* win32-low.h (class win32_process_target): Define as a derived
+	class of 'process_target'.
+	* win32-low.cc (win32_target_ops): Add a win32_process_target*
+	as the 'pt' field.
+
+2020-02-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* configure: Regenerate.
+
+2020-02-19  Maciej W. Rozycki  <macro@wdc.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* linux-riscv-low.cc: New file.
+	* Makefile.in (SFILES): Add linux-riscv-low.cc, arch/riscv.c,
+	and nat/riscv-linux-tdesc.c.
+	* configure.srv <riscv*-*-linux*> (srv_tgtobj)
+	(srv_linux_regsets, srv_linux_usrregs, srv_linux_thread_db):
+	Define.
+
+2020-02-14  Tom Tromey  <tom@tromey.com>
+
+	* acinclude.m4: Don't include acx_configure_dir.m4.
+	* Makefile.in (LIBIBERTY_BUILDDIR, GNULIB_BUILDDIR): Update.
+	(SUBDIRS, CLEANDIRS, REQUIRED_SUBDIRS): Remove.
+	(all, install-only, uninstall, clean-info, clean)
+	(maintainer-clean): Don't recurse.
+	(subdir_do, all-lib): Remove.
+	($(LIBGNU) $(LIBIBERTY) $(GNULIB_H)): Remove rule.
+	(GNULIB_H): Remove.
+	(generated_files): Update.
+	($(GNULIB_BUILDDIR)/Makefile): Remove rule.
+	* configure: Rebuild.
+	* configure.ac: Don't configure gnulib or libiberty.
+	(GNULIB): Update.
+
+2020-02-14  Eli Zaretskii  <eliz@gnu.org>
+
+	* win32-low.c (create_process): Prepend PROGRAM to ARGS when
+	preparing the command line for CreateProcess.
+	(win32_create_inferior): Reflect the program name in debugging
+	output that shows the process and its command line.
+
+2020-02-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in: Rename source files from .c to .cc.
+	* %.c: Rename to %.cc.
+	* configure.ac: Rename server.c to server.cc.
+	* configure: Re-generate.
+
+2020-02-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in: Rename gdbsupport source files from .c to .cc.
+
+2020-02-12  Hannes Domani  <ssbssa@yahoo.de>
+
+	* win32-low.c (win32_create_inferior): Set signal_pid.
+
+2020-02-12  Maciej W. Rozycki <macro@wdc.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	Skip building gdbserver in a cross-configuration.
+	* configure.srv: Set $gdbserver_host depending on whether $target
+	is $host.  Use $gdbserver_host instead of $host.
+
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* acinclude.m4: Update warning.m4 path.
+
+2020-02-09  Hannes Domani  <ssbssa@yahoo.de>
+
+	* win32-low.c (win32_clear_inferiors): Reset siginfo_er.
+	(handle_exception): Set siginfo_er.
+	(win32_xfer_siginfo): New function.
+
+2020-02-07  Tom Tromey  <tom@tromey.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* README: Update build documentation.
+	* configure.srv: Set UNSUPPORTED if host is unsupported.  Check
+	host, not target.
+	* configure.ac: Update paths.
+	* configure: Rebuild.
+	* acinclude.m4: Update paths.
+	* Makefile.in: Update include paths.
+	(depcomp, INCLUDE_DIR, INCGNU, INCSUPPORT, INCLUDE_CFLAGS)
+	(SFILES, XML_DIR, n, $(GNULIB_BUILDDIR)/Makefile, config.status)
+	(version-generated.c, stamp-xml, regdat_sh, arch/%-ipa.o)
+	(gdbsupport/%-ipa.o, %-ipa.o, arch/%.o, gdbsupport/%.o, %.o)
+	(%-generated.c): Update paths.
+	* Move entire directory from ../gdb/gdbserver.
+
+2020-01-29  Maciej W. Rozycki  <macro@wdc.com>
+
+	* configure.srv <i[34567]86-*-mingw*>: Fix whitespace damage.
+
+2020-01-29  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* configure.srv (powerpc*-*-linux*): Use srv_tgtobj in second
+	assignment instead of srv_linux_obj.
+
+2020-01-28  Hannes Domani  <ssbssa@yahoo.de>
+
+	* server.c (handle_qxfer_libraries): Write segment-address with
+	paddress.
+
+2020-01-24  Hannes Domani  <ssbssa@yahoo.de>
+
+	* Makefile.in (install-strip): New target.
+	(install_sh, INSTALL_STRIP_PROGRAM, STRIP): New variables.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Add AM_PROG_INSTALL_STRIP.
+
+2020-01-24  Maciej W. Rozycki  <macro@wdc.com>
+
+	* Makefile.in (SFILES): Adjust paths to point to real files.
+	(OBS): Move waitstatus.o to target/waitstatus.o.
+	(TAGS): Transform paths appropriately.
+	(%.o): Rename to...
+	(nat/%.o): ... this pattern rule.
+	(%.o): Rename to...
+	(target/%.o): ... this pattern rule.
+	* configure.srv: Adjust paths throughout to include nat/ prefix
+	with the revant files.
+	* configure.ac: Add `nat' and `target' to CONFIG_SRC_SUBDIR.
+	* configure: Regenerate.
+
+2020-01-24  Maciej W. Rozycki  <macro@wdc.com>
+
+	* Makefile.in (TAGS): Remove config files from the recipe.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* configure.ac: Remove any checks that were added to common.m4.
+	* acinclude.m4: Include lib-ld.m4, lib-prefix.m4, and
+	lib-link.m4.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* server.h: Include config.h.
+	* gdbreplay.c: Include config.h.
+	* configure: Rebuild.
+	* configure.ac: Don't source common.host.
+	* acinclude.m4: Update path.
+	* Makefile.in (INCSUPPORT): New variable.
+	(INCLUDE_CFLAGS): Add INCSUPPORT.
+	(SFILES): Update paths.
+	(version-generated.c): Update path to create-version.sh.
+	(gdbsupport/%-ipa.o, gdbsupport/%.o): Update paths.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* configure.ac (LIBS): Use WIN32APILIBS.
+	(USE_WIN32API): Don't define.
+	* configure: Rebuild.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (%-generated.c): Remove rule for files from
+	regformats/i386.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* tracepoint.h (IP_AGENT_EXPORT_FUNC) [!IN_PROCESS_AGENT]:
+	Define to static.
+	* tracepoint.c (stop_tracing, flush_trace_buffer,
+	about_to_request_buffer_space, get_trace_state_variable_value,
+	set_trace_state_variable_value, gdb_collect): Add declaration.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* linux-x86-low.c (x86_linux_regs_info, amd64_emit_eq_goto,
+	amd64_emit_ne_goto, amd64_emit_lt_goto, amd64_emit_le_goto,
+	amd64_emit_gt_goto, amd64_emit_ge_goto, amd64_emit_ge_goto,
+	i386_emit_eq_goto, i386_emit_ne_goto, i386_emit_lt_goto,
+	i386_emit_le_goto, i386_emit_gt_goto, i386_emit_ge_goto): Make
+	static.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* inferiors.c: Include gdbsupport/common-inferior.h.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* hostio-errno.c: Include hostio.h.
+
+2020-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (%-generated.c): Make $(regdat_sh) a regular
+	prerequisite.
+
+2020-01-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-arm-tdesc.c: Include linux-arm-tdesc.h.
+	* linux-arm-tdesc.h: Include arch/arm.h.
+
+2020-01-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-aarch64-low.c (aarch64_write_goto_address): Make static.
+
+2020-01-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-aarch32-tdesc.c: Include linux-aarch32-tdesc.h.
+	* linux-aarch64-tdesc.c: Include linux-aarch64-tdesc.h.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* fork-child.c (post_fork_inferior): Pass target down to
+	startup_inferior.
+	* inferiors.c (switch_to_thread): Add process_stratum_target
+	parameter.
+	* lynx-low.c (lynx_target_ops): Now a process_stratum_target.
+	* nto-low.c (nto_target_ops): Now a process_stratum_target.
+	* linux-low.c (linux_target_ops): Now a process_stratum_target.
+	* remote-utils.c (prepare_resume_reply): Pass the target to
+	switch_to_thread.
+	* target.c (the_target): Now a process_stratum_target.
+	(done_accessing_memory): Pass the target to switch_to_thread.
+	(set_target_ops): Ajust to use process_stratum_target.
+	* target.h (struct target_ops): Rename to ...
+	(struct process_stratum_target): ... this.
+	(the_target, set_target_ops): Adjust.
+	(prepare_to_access_memory): Adjust comment.
+	* win32-low.c (child_xfer_memory): Adjust to use
+	process_stratum_target.
+	(win32_target_ops): Now a process_stratum_target.
+
+2020-01-06  Eli Zaretskii  <eliz@gnu.org>
+	    Pedro Alves  <palves@redhat.com>
+
+	* win32-low.c (get_child_debug_event): Extract the fatal exception
+	from the exit status and convert to the equivalent Posix signal
+	number.
+	(win32_wait): Allow TARGET_WAITKIND_SIGNALLED status as well.
+	* Makefile.in (OBS, SFILES): Add gdb_wait.[co].
+
+2020-01-01  Hannes Domani  <ssbssa@yahoo.de>
+
+	* Makefile.in: Use INSTALL_PROGRAM_ENV.
+
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* server.c (gdbserver_version): Change copyright year to 2020.
+	* gdbreplay.c (gdbreplay_version): Likewise.
+
+2019-12-19  Christian Biesinger  <cbiesinger@google.com>
+
+	* configure: Regenerate.
+	* configure.ac: Quote variable arguments of test.
+
+2019-12-16  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* Makefile.in: Fix build with GNU Make 3.81
+
+2019-12-16  Tom Tromey  <tromey@adacore.com>
+
+	* server.c (get_exec_file): Constify result.
+
+2019-12-10  Christian Biesinger  <cbiesinger@google.com>
+
+	* Makefile.in: Add safe-strerror.c to gdbreplay and IPA, and change
+	UNDO_GNULIB_CFLAGS to undo strerror_r instead of strerror.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Don't check for strerror.
+	* linux-i386-ipa.c (initialize_fast_tracepoint_trampoline_buffer):
+	Call safe_strerror instead of strerror.
+	* server.h (strerror): Remove this now-unnecessary declaration.
+	* tracepoint.c (init_named_socket): Call safe_strerror instead of
+	strerror.
+	(gdb_agent_helper_thread): Likewise.
+	* utils.c (perror_with_name): Likewise.
+
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* 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>
+
+	* linux-aarch64-low.c (is_sve_tdesc): Check against target feature
+	instead of register count.
+	* tdesc.c (tdesc_contains_feature): New function.
+	* tdesc.h (tdesc_contains_feature): New prototype.
+
+2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* Makefile.in: Add safe-strerror.c.
+	* configure: Regenerate.
+	* configure.ac: Don't source common.host.
+
+2019-11-15  Christian Biesinger  <cbiesinger@google.com>
+
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
+2019-11-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ax.c (ax_printf): Handle size_t_arg.
+
+2019-11-06  Christian Biesinger  <cbiesinger@google.com>
+
+	* linux-tdep.c (linux_info_proc): Use strtok_r instead of strtok.
+	* mi/mi-main.c (output_cores): Likewise.
+	* nat/linux-osdata.c (linux_xfer_osdata_cpus): Likewise.
+	(linux_xfer_osdata_modules): Likewise.
+	* remote.c (register_remote_support_xml): Likewise.
+	* sparc64-tdep.c (adi_is_addr_mapped): Likewise.
+	* xml-syscall.c (syscall_create_syscall_desc): Likewise.
+
+2019-11-01  Christian Biesinger  <cbiesinger@google.com>
+
+	* configure: Regenerate.
+	* configure.ac: Remove check for strerror_r.
+
+2019-10-31  Christian Biesinger  <cbiesinger@google.com>
+
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Also check for strerror_r.
+
+2019-10-31  Christian Biesinger  <cbiesinger@google.com>
+
+	* ax.h (debug_agent): Remove duplicate declaration.
+
+2019-10-26  Tom de Vries  <tdevries@suse.de>
+
+	* linux-aarch64-low.c: Fix typos in comments.
+	* linux-arm-low.c: Same.
+	* linux-low.c: Same.
+	* linux-ppc-low.c: Same.
+	* proc-service.c: Same.
+	* regcache.h: Same.
+	* server.c: Same.
+	* tracepoint.c: Same.
+	* win32-low.c: Same.
+
+2019-10-25  Tom Tromey  <tromey@adacore.com>
+
+	* utils.c (xstrdup): Remove.
+
+2019-10-23  Tom Tromey  <tom@tromey.com>
+
+	* configure, config.in: Rebuild.
+
+2019-10-23  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* acinclude.m4: Use m4_include, not sinclude.
+
+2019-10-17  Tom Tromey  <tromey@adacore.com>
+
+	* configure: Rebuild.
+	* configure.ac: Use AC_CONFIG_HEADERS.  Create stamp-h there, not
+	in AC_CONFIG_FILES invocation.
+	* Makefile.in (stamp-h, Makefile): Use new-style config.status
+	invocation.
+
+2019-10-16  Christian Biesinger  <cbiesinger@google.com>
+
+	* server.c: Include xml-builtin.h.
+	(get_xml_features): Don't declare xml_builtins here.
+
+2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in: Remove references to vec-ipa.o.
+
+2019-10-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in: Remove references to vec.c.
+
+2019-10-02  Christian Biesinger  <cbiesinger@google.com>
+
+	* server.c (server_waiting): Change to bool.
+	(extended_protocol): Likewise.
+	(response_needed): Likewise.
+	(exit_requested): Likewise.
+	(run_once): Likewise.
+	(report_no_resumed): Likewise.
+	(non_stop): Likewise.
+	(disable_packet_vCont): Likewise.
+	(disable_packet_Tthread): Likewise.
+	(disable_packet_qC): Likewise.
+	(disable_packet_qfThreadInfo): Likewise.
+	(handle_general_set): Update.
+	(handle_detach): Update.
+	(handle_monitor_command): Update.
+	(handle_query): Update.
+	(captured_main): Update.
+	(process_serial_event): Update.
+	* server.h (server_waiting): Change to bool.
+	(disable_packet_vCont): Likewise.
+	(disable_packet_Tthread): Likewise.
+	(disable_packet_qC): Likewise.
+	(disable_packet_qfThreadInfo): Likewise.
+	(run_once): Likewise.
+	(non_stop): Likewise.
+	* target.c (target_stop_and_wait): Update.
+
+2019-10-02  Tom Tromey  <tromey@adacore.com>
+
+	* Makefile.in (SFILES): Add common-inferior.c.
+	(OBS): Add common-inferior.o.
+	* server.c (startup_with_shell): Don't define.
+
+2019-10-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* linux-low.c (linux_low_read_btrace): Update for change to
+	std::vector.
+
+2019-09-20  Christian Biesinger  <cbiesinger@google.com>
+
+	* debug.c (debug_threads): Remove comment in favor of the header.
+	* debug.h (using_threads): Add declaration.
+	(debug_threads): Add comment.
+	* linux-aarch64-low.c: Include debug.h and remove declaration of
+	debug_threads.
+	* nto-low.c: Likewise.
+	* remote-utils.c: Likewise.
+	* thread-db.c: Likewise.
+
+2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv (ipa_ppc_linux_regobj): Remove powerpc-cell32l-ipa.o
+	and powerpc-cell64l-ipa.o.
+	(powerpc*-*-linux*): Remove powerpc-cell32l.o and powerpc-cell64l.o
+	from srv_regobj.  Remove rs6000/powerpc-cell32l.xml and
+	rs6000/powerpc-cell64l.xml from srv_xmlfiles.
+	(spu*-*-*): Remove.
+
+	* spu-low.c: Remove file.
+
+	* linux-ppc-low.c (INSTR_SC, NR_spu_run): Remove.
+	(parse_spufs_run): Remove.
+	(ppc_get_pc): Remove Cell/B.E. support.
+	(ppc_set_pc): Likewise.
+	(ppc_breakpoint_at): Likewise.
+	(ppc_arch_setup): Likewise.
+	(ppc_get_ipa_tdesc_idx): Do not handle tdesc_powerpc_cell64l or
+	tdesc_powerpc_cell32l.
+	(initialize_low_arch): Do not call init_registers_powerpc_cell64l
+	or init_registers_powerpc_cell32l.
+	* linux-ppc-ipa.c (get_ipa_tdesc): Do not handle PPC_TDESC_CELL.
+	(initialize_low_tracepoint): Do not call init_registers_powerpc_cell64l
+	or init_registers_powerpc_cell32l.
+	* linux-ppc-tdesc-init.h (PPC_TDESC_CELL): Mark as unused.
+	(init_registers_powerpc_cell32l): Remove prototype.
+	(init_registers_powerpc_cell64l): Likewise.
+
+	* target.h (struct target_ops): Remove qxfer_spu member.
+	* server.c (handle_qxfer_spu): Remove.
+	(qxfer_packets): Remove entry for "spu".
+	(handle_query): No longer support qXfer:spu:read or qXfer:spu:write.
+	* linux-low.c (SPUFS_MAGIC): Remove.
+	(spu_enumerate_spu_ids): Remove.
+	(linux_qxfer_spu): Remove.
+	(linux_target_ops): Remove qxfer_spu member.
+	* lynx-low.c (lynx_target_ops): Remove qxfer_spu member.
+	* nto-low.c (nto_target_ops): Remove qxfer_spu member.
+	* win32-low.c (win32_target_ops): Remove qxfer_spu member.
+
+2019-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* Makefile.in (SFILES): Add 'gdbsupport/gdb-dlfcn.c'.
+	(OBS): Add 'gdbsupport/gdb-dlfcn.o'.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
+2019-08-15  Tom Tromey  <tromey@adacore.com>
+
+	* target.c (target_write_memory): Use gdb::byte_vector.
+
+2019-08-15  Tom Tromey  <tromey@adacore.com>
+
+	* tracepoint.c (write_inferior_data_pointer)
+	(write_inferior_integer, write_inferior_int8)
+	(write_inferior_uinteger, m_tracepoint_action_download)
+	(r_tracepoint_action_download, x_tracepoint_action_download)
+	(l_tracepoint_action_download, clear_inferior_trace_buffer)
+	(download_agent_expr, download_tracepoint_1)
+	(download_trace_state_variables, upload_fast_traceframes): Update.
+	* server.c (gdb_write_memory): Update.
+	* remote-utils.c (relocate_instruction): Update.
+	* proc-service.c (ps_pdwrite): Update.
+	* mem-break.c (remove_memory_breakpoint)
+	(delete_fast_tracepoint_jump, set_fast_tracepoint_jump)
+	(uninsert_fast_tracepoint_jumps_at)
+	(reinsert_fast_tracepoint_jumps_at): Update.
+	* linux-x86-low.c (append_insns)
+	(i386_install_fast_tracepoint_jump_pad)
+	(amd64_write_goto_address, i386_write_goto_address): Update.
+	* linux-s390-low.c (append_insns, s390_write_goto_address):
+	Update.
+	* linux-ppc-low.c (ppc_relocate_instruction)
+	(ppc_install_fast_tracepoint_jump_pad, emit_insns)
+	(ppc_write_goto_address): Update.
+	* linux-aarch64-low.c (append_insns): Update.
+	* target.h (struct target_ops): Update.
+	(write_inferior_memory): Don't declare.
+	* target.c (target_write_memory): Rename from
+	write_inferior_memory.  Remove old target_write_memory.
+
+2019-08-15  Tom Tromey  <tromey@adacore.com>
+
+	* target.c (write_inferior_memory): Use std::vector.
+
+2019-08-06  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR build/24886
+	* configure.ac: Drop enable-libmcheck support.
+	* configure, config.in: Rebuild.
+	* acinclude.m4: Don't include it.
+
+2019-07-19  Alan Hayward  <alan.hayward@arm.com>
+
+	* configure.srv: Remove Arm xml files.
+
+2019-07-19  Alan Hayward  <alan.hayward@arm.com>
+
+	* configure.srv: Add new files. Remove xml generated files.
+	* linux-aarch32-low.c (initialize_low_arch_aarch32): Don't init
+	registers.
+	* linux-aarch32-low.h (tdesc_arm_with_neon): Remove.
+	* linux-aarch32-tdesc.c: New file.
+	* linux-aarch32-tdesc.h: New file.
+	* linux-aarch64-low.c (aarch64_arch_setup): Call aarch32_linux_read_description.
+	* linux-arm-low.c (init_registers_arm, tdesc_arm)
+	(init_registers_arm_with_iwmmxt, tdesc_arm_with_iwmmxt)
+	(init_registers_arm_with_vfpv2, tdesc_arm_with_vfpv2)
+	(init_registers_arm_with_vfpv3, tdesc_arm_with_vfpv3): Remove.
+	(arm_fill_wmmxregset, arm_store_wmmxregset, arm_fill_vfpregset)
+	(arm_store_vfpregset): Call arm_linux_get_tdesc_fp_type.
+	(arm_read_description): Call arm_linux_read_description.
+	(initialize_low_arch): Don't init registers.
+	* linux-arm-tdesc.c: New file.
+	* linux-arm-tdesc.h: New file.
+
+2019-07-10  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-arm-low.c (arm_fill_wmmxregset, arm_store_wmmxregset):
+	Move counter inside for.
+	(arm_read_description): Check ptrace earlier.
+	(arm_arch_setup): Call arm_linux_init_hwbp_cap here.
+
+2019-07-09  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* configure.ac: Change common to gdbsupport.
+	* acinclude.m4: Change common to gdbsupport.
+	* Makefile.in (SFILES, OBS, GDBREPLAY_OBS, IPA_OBJS)
+	(version-generated.c, gdbsupport/%-ipa.o, gdbsupport/%.o): Change
+	common to gdbsupport.
+	* ax.c, event-loop.c, fork-child.c, gdb_proc_service.h,
+	gdbreplay.c, gdbthread.h, hostio-errno.c, hostio.c, i387-fp.c,
+	inferiors.c, inferiors.h, linux-aarch64-tdesc-selftest.c,
+	linux-amd64-ipa.c, linux-i386-ipa.c, linux-low.c,
+	linux-tic6x-low.c, linux-x86-low.c, linux-x86-tdesc-selftest.c,
+	linux-x86-tdesc.c, lynx-i386-low.c, lynx-low.c, mem-break.h,
+	nto-x86-low.c, regcache.c, regcache.h, remote-utils.c, server.c,
+	server.h, spu-low.c, symbol.c, target.h, tdesc.c, tdesc.h,
+	thread-db.c, tracepoint.c, win32-i386-low.c, win32-low.c: Change
+	common to gdbsupport.
+
+2019-07-04  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-aarch32-low.c (arm_read_description, arm_regsets): Use new
+	defines.
+	* linux-arm-low.c (arm_read_description, arm_regsets): Likewise.
+
+2019-07-04  Alan Hayward  <alan.hayward@arm.com>
+
+	* configure.srv: Remove legacy xml.
+	* linux-aarch64-low.c (initialize_low_arch): Remove
+	initialize_low_tdesc call.
+	* linux-aarch64-tdesc-selftest.c: Remove file.
+	* linux-aarch64-tdesc.h (initialize_low_tdesc): Remove.
+	* linux-x86-low.c (initialize_low_arch): Remove
+	initialize_low_tdesc call.
+	* linux-x86-tdesc-selftest.c: Remove file.
+	* linux-x86-tdesc.h (initialize_low_tdesc): Remove.
+
+2019-06-20  Tom de Vries  <tdevries@suse.de>
+
+	* linux-s390-ipa.c (get_ipa_tdesc)[!__s390x__]: Use
+	s390_te_linux64_ft_collect_regmap for S390_TDESC_GS.
+
+2019-06-19  Tom de Vries  <tdevries@suse.de>
+
+	* debug.h (debug_write): Change return type to ssize_t.
+	* debug.c (debug_write): Same.
+
+2019-06-14  Tom Tromey  <tom@tromey.com>
+
+	* configure.ac: Use new path to gnulib.
+	* configure: Rebuild.
+	* Makefile.in (INCGNU, $(GNULIB_BUILDDIR)/Makefile): Use new path
+	to gnulib.
+
+2019-06-11  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in (SFILES): Add alloc.c.
+	(OBS): Add alloc.o.
+	(IPA_OBJS): Add alloc-ipa.o.
+	(alloc-ipa.o): New target.
+	(%.o: ../%.c): New pattern rule.
+
+2019-06-10  Tom Tromey  <tromey@adacore.com>
+
+	* remote-utils.c (look_up_one_symbol, relocate_instruction): Don't
+	end warning with a newline.
+	* linux-s390-low.c (s390_get_wordsize): Don't end warning with a
+	newline.
+	* thread-db.c (attach_thread): Don't end warning with a newline.
+	(thread_db_notice_clone): Likewise.
+	* tracepoint.c (gdb_agent_helper_thread): Don't end warning with a
+	newline.
+	* linux-x86-low.c (x86_get_min_fast_tracepoint_insn_len): Don't
+	end warning with a newline.
+
+2019-06-04  Pedro Alves  <palves@redhat.com>
+
+	* server.c (captured_main): Use make_unique_xstrdup.
+
+2019-06-02  Tom Tromey  <tom@tromey.com>
+
+	* gdbreplay.c (fromhex): Remove.
+	* Makefile.in (GDBREPLAY_OBS): Add rsp-low.o.
+
+2019-05-29  Tom Tromey  <tromey@adacore.com>
+
+	* configure: Rebuild.
+
+2019-05-06  Kevin Buettner  <kevinb@redhat.com>
+
+	* linux-x86-low.c (x86_fill_gregset): Don't compile 64-bit
+	sign extension code on 32-bit builds.
+
+2019-05-03  Eli Zaretskii  <eliz@gnu.org>
+
+	* remote-utils.c:
+	* gdbreplay.c [USE_WIN32API]: Remove the _WIN32_WINNT override.
+
+2019-04-19  Tom Tromey  <tom@tromey.com>
+
+	* server.c (struct vstop_notif): Derive from notif_event.
+	<base>: Remove.
+	(queue_stop_reply): Update.
+	(remove_all_on_match_ptid): Change type.  Rewrite.
+	(discard_queued_stop_replies): Rewrite.
+	(in_queued_stop_replies_ptid): Change type.
+	(in_queued_stop_replies): Rewrite.
+	(notif_stop): Update.
+	(queue_stop_reply_callback): Update.
+	(captured_main): Don't call initialize_notif.
+	(push_stop_notification): Update.
+	* notif.c (notif_write_event, handle_notif_ack)
+	(notif_event_enque, notif_push): Update.
+	(notif_event_xfree, initialize_notif): Remove.
+	* notif.h (struct notif_event): Include <list>, not
+	"common/queue.h".
+	(struct notif_server) <queue>: Now a std::list.
+	(notif_event_p): Remove typedef.
+	(initialize_notif): Don't declare.
+	(struct notif_event): Add virtual destructor.
+
+2019-04-17  Alan Hayward  <alan.hayward@arm.com>
+
+	* ax.c (ax_vdebug): Call debug_printf.
+	* debug.c (debug_write): New function.
+	* debug.h (debug_write): New declaration.
+	* linux-low.c (sigchld_handler): Call debug_write.
+
+2019-04-17  Alan Hayward  <alan.hayward@arm.com>
+
+	* debug.c (debug_set_output): New function.
+	(debug_vprintf): Send output to debug_file.
+	(debug_flush): Likewise.
+	* debug.h (debug_set_output): New declaration.
+	* server.c (handle_monitor_command): Add debug-file option.
+	(captured_main): Likewise.
+
+2019-04-17  Alan Hayward  <alan.hayward@arm.com>
+
+	* debug.c (remote_debug): Add definition.
+	* debug.h (remote_debug): Add declaration.
+	* hostio.c (remote_debug): Remove declaration.
+	* remote-utils.c (struct ui_file): Likewise.
+	(remote_debug): Likewise.
+	* remote-utils.h (remote_debug): Likewise,
+	* server.c (remote_debug): Remove definition.
+
+2019-04-10  Kevin Buettner  <kevinb@redhat.com>
+
+	* linux-x86-low.c (x86_fill_gregset): Sign extend EAX value
+	when using a 64-bit gdbserver.
+
+2019-04-09  Tom Tromey  <tromey@adacore.com>
+
+	* linux-low.c (select_event_lwp): Use find_thread_in_random.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* linux-low.c (linux_detach_one_lwp): Replace throw_exception with
+	throw.
+	(linux_resume_one_lwp): Likewise.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* gdbreplay.c: Update.
+	* linux-low.c: Update.
+	* server.c: Update.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* server.c: Use C++ exception handling.
+	* linux-low.c: Use C++ exception handling.
+	* gdbreplay.c: Use C++ exception handling.
+
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+	* server.c (handle_btrace_general_set, handle_qxfer_btrace)
+	(handle_qxfer_btrace_conf, detach_or_kill_for_exit_cleanup)
+	(captured_main, main): Update.
+	* gdbreplay.c (main): Update.
+
+2019-04-05  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* linux-low.c (linux_get_auxv): Remove static.  Return auxv entry
+	value in argument pointer, return 1 if the entry is found and 0
+	otherwise.  Move comment.
+	(linux_get_hwcap, linux_get_hwcap2): Use modified linux_get_auxv.
+	* linux-low.h (linux_get_auxv): Declare.
+	* linux-ppc-low.c (is_elfv2_inferior): Use linux_get_auxv.
+
+2019-04-05  Tom Tromey  <tromey@adacore.com>
+
+	* server.c (gdbserver_usage): Use upper-case for metasyntactic
+	variables.
+
+2019-03-28  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-low.c (AT_HWCAP2): Add define if not already included.
+
+2019-03-26  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-aarch64-low.c (aarch64_get_hwcap): Remove function.
+	(aarch64_arch_setup): Call linux_get_hwcap.
+	* linux-arm-low.c (arm_get_hwcap): Remove function.
+	(arm_read_description): Call linux_get_hwcap.
+	* linux-low.c (linux_get_auxv): New function.
+	(linux_get_hwcap): Likewise.
+	(linux_get_hwcap2): Likewise.
+	* linux-low.h (linux_get_hwcap): New declaration.
+	(linux_get_hwcap2): Likewise.
+	* linux-ppc-low.c (ppc_get_auxv): Remove function.
+	(ppc_arch_setup): Call linux_get_hwcap.
+	* linux-s390-low.c (s390_get_hwcap): Remove function.
+	(s390_arch_setup): Call linux_get_hwcap.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* linux-aarch64-low.c (aarch64_store_pauthregset): New function.
+	* linux-low.c (regsets_store_inferior_registers): Allow optional reads
+	to fail.
+	* linux-low.h (enum regset_type): Add OPTIONAL_REGS.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* linux-aarch64-low.c (AARCH64_HWCAP_PACA): New define.
+	(aarch64_get_hwcap): New function.
+	(aarch64_arch_setup): Read APIA hwcap.
+
+2019-03-22  Alan Hayward  <alan.hayward@arm.com>
+	    Jiong Wang  <jiong.wang@arm.com>
+
+	* linux-aarch64-ipa.c (get_ipa_tdesc): Add pauth param.
+	(initialize_low_tracepoint): Likewise.
+	* linux-aarch64-low.c (aarch64_arch_setup): Likewise.
+	* linux-aarch64-tdesc-selftest.c (aarch64_tdesc_test): Likewise.
+	* linux-aarch64-tdesc.c (struct target_desc): Likewise.
+	(aarch64_linux_read_description): Likewise.
+	* linux-aarch64-tdesc.h (aarch64_linux_read_description): Likewise.
+
+2019-03-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* linux-x86-tdesc.c (i386_linux_read_description): Update call to
+	i386_create_target_description for 'segments' parameter.
+	* lynx-i386-low.c (lynx_i386_arch_setup): Likewise.
+	* nto-x86-low.c (nto_x86_arch_setup): Likewise.
+	* win32-i386-low.c (i386_arch_setup): Likewise.
+
+2019-03-12  Tom Tromey  <tromey@adacore.com>
+
+	* linux-low.c (iterate_over_lwps): Update.
+
+2019-03-06  Tom Tromey  <tom@tromey.com>
+
+	* server.c (detach_or_kill_for_exit_cleanup): Remove parameter.
+	(captured_main): Use SCOPE_EXIT.
+
+2019-03-04  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* configure.srv: Use '$enable_unittest' instead of '$development'
+	when checking whether to fill 'srv_regobj' on 'aarch64*-*-linux*'
+	case.
+
+2019-02-27  Tom Tromey  <tromey@adacore.com>
+
+	* gdbreplay.c (logchar): Handle \r\n.
+
+2019-02-07  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-low.c (linux_attach): Add process before lwp.
+	* server.c (attach_inferior): Check if already attached.
+
+2019-02-07  Tom Tromey  <tom@tromey.com>
+
+	* x86-tdesc.h: Rename include guard.
+	* x86-low.h: Add include guard.
+	* wincecompat.h: Rename include guard.
+	* win32-low.h: Add include guard.
+	* utils.h: Rename include guard.
+	* tracepoint.h: Rename include guard.
+	* tdesc.h: Rename include guard.
+	* target.h: Rename include guard.
+	* server.h: Rename include guard.
+	* remote-utils.h: Rename include guard.
+	* regcache.h: Rename include guard.
+	* nto-low.h: Rename include guard.
+	* notif.h: Add include guard.
+	* mem-break.h: Rename include guard.
+	* lynx-low.h: Add include guard.
+	* linux-x86-tdesc.h: Add include guard.
+	* linux-s390-tdesc.h: Add include guard.
+	* linux-ppc-tdesc-init.h: Add include guard.
+	* linux-low.h: Add include guard.
+	* linux-aarch64-tdesc.h: Add include guard.
+	* linux-aarch32-low.h: Add include guard.
+	* inferiors.h: Rename include guard.
+	* i387-fp.h: Rename include guard.
+	* hostio.h: Rename include guard.
+	* gdbthread.h: Rename include guard.
+	* gdb_proc_service.h: Rename include guard.
+	* event-loop.h: Rename include guard.
+	* dll.h: Rename include guard.
+	* debug.h: Rename include guard.
+	* ax.h: Rename include guard.
+
+2018-01-30  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	PR gdb/23985
+	* Makefile.in (IPAGENT_CFLAGS): Add UNDO_GNULIB_CFLAGS.
+	(UNDO_GNULIB_CFLAGS): Undo gnulib replacements.
+
+2019-01-25  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in (INCLUDE_CFLAGS): Don't add -I for common.
+
+2019-01-25  Tom Tromey  <tom@tromey.com>
+
+	* win32-low.c: Fix common/ includes.
+	* win32-i386-low.c: Fix common/ includes.
+	* tracepoint.c: Fix common/ includes.
+	* thread-db.c: Fix common/ includes.
+	* target.h: Fix common/ includes.
+	* symbol.c: Fix common/ includes.
+	* spu-low.c: Fix common/ includes.
+	* server.h: Fix common/ includes.
+	* server.c: Fix common/ includes.
+	* remote-utils.c: Fix common/ includes.
+	* regcache.h: Fix common/ includes.
+	* regcache.c: Fix common/ includes.
+	* nto-x86-low.c: Fix common/ includes.
+	* notif.h: Fix common/ includes.
+	* mem-break.h: Fix common/ includes.
+	* lynx-low.c: Fix common/ includes.
+	* lynx-i386-low.c: Fix common/ includes.
+	* linux-x86-tdesc-selftest.c: Fix common/ includes.
+	* linux-x86-low.c: Fix common/ includes.
+	* linux-low.c: Fix common/ includes.
+	* inferiors.h: Fix common/ includes.
+	* i387-fp.c: Fix common/ includes.
+	* hostio.c: Fix common/ includes.
+	* hostio-errno.c: Fix common/ includes.
+	* gdbthread.h: Fix common/ includes.
+	* gdbreplay.c: Fix common/ includes.
+	* fork-child.c: Fix common/ includes.
+	* event-loop.c: Fix common/ includes.
+	* ax.c: 
+	(enum gdb_agent_op): Fix common/ includes.
+
+2019-01-21  Tom Tromey  <tom@tromey.com>
+
+	* tracepoint.c: Fix includes.
+	* remote-utils.c: Fix includes.
+	* linux-x86-low.c: Fix includes.
+
+2019-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbreplay.c (gdbreplay_version): Update copyright year in
+	version message.
+	* server.c (gdbserver_version): Likewise.
+
+2018-12-05  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-low.c (add_lwp): Switch ordering.
+
+2018-11-29  Tom Tromey  <tom@tromey.com>
+
+	* win32-low.c (win32_join): Take pid, not process.
+	* target.h (struct target_ops) <join>: Change argument type.
+	(join_inferior): Change argument name.
+	* spu-low.c (spu_join): Take pid, not process.
+	* server.c (handle_detach): Preserve pid before destroying
+	process.
+	* lynx-low.c (lynx_join): Take pid, not process.
+	* linux-low.c (linux_join): Take pid, not process.
+
+2018-11-23  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-aarch64-low.c (aarch64_cannot_store_register): Remove.
+	(aarch64_cannot_fetch_register): Likewise.
+	(struct linux_target_ops): Update references.
+
+2018-10-31  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* linux-ppc-low.c: Include nat/linux-ptrace.h.
+
+2018-10-26  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* configure.srv (ipa_ppc_linux_regobj): Add
+	powerpc-isa207-htm-vsx32l-ipa.o and
+	powerpc-isa207-htm-vsx64l-ipa.o.
+	(powerpc*-*-linux*): Add powerpc-isa207-htm-vsx32l.o and
+	powerpc-isa207-htm-vsx64l.o to srv_regobj.  Add
+	rs6000/power-htm-spr.xml, rs6000/power-htm-core.xml,
+	rs6000/power64-htm-core.xml, rs6000/power-htm-fpu.xml,
+	rs6000/power-htm-altivec.xml, rs6000/power-htm-vsx.xml,
+	rs6000/power-htm-ppr.xml, rs6000/power-htm-dscr.xml,
+	rs6000/power-htm-tar.xml, rs6000/powerpc-isa207-htm-vsx32l.xml,
+	and rs6000/powerpc-isa207-htm-vsx64l.xml to srv_xmlfiles.
+	* linux-ppc-tdesc-init.h (enum ppc_linux_tdesc)
+	<PPC_TDESC_ISA207_HTM_VSX>: New enum value.
+	(init_registers_powerpc_isa207_htm_vsx32l)
+	(init_registers_powerpc_isa207_htm_vsx64l): Declare.
+	* linux-ppc-low.c (ppc_fill_tm_sprregset, ppc_store_tm_sprregset)
+	(ppc_store_tm_cgprregset, ppc_store_tm_cfprregset)
+	(ppc_store_tm_cvrregset, ppc_store_tm_cvsxregset)
+	(ppc_store_tm_cpprregset, ppc_store_tm_cdscrregset)
+	(ppc_store_tm_ctarregset): New functions.
+	(ppc_regsets): Add entries for HTM regsets.
+	(ppc_arch_setup): Set htm in features struct when needed.  Set
+	sizes for the HTM regsets.
+	(ppc_get_ipa_tdesc_idx): Return PPC_TDESC_ISA207_HTM_VSX.
+	(initialize_low_arch): Call
+	init_registers_powerpc_isa207_htm_vsx32l and
+	init_registers_powerpc_isa207_htm_vsx64l.
+	* linux-ppc-ipa.c (get_ipa_tdesc): Handle
+	PPC_TDESC_ISA207_HTM_VSX.
+	(initialize_low_tracepoint): Call
+	init_registers_powerpc_isa207_htm_vsx32l and
+	init_registers_powerpc_isa207_htm_vsx64l.
+
+2018-10-26  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* configure.srv (powerpc*-*-linux*): Add rs6000/power-ebb.xml and
+	rs6000/power-linux-pmu.xml to srv_xmlfiles.
+	* linux-ppc-low.c (ppc_store_ebbregset, ppc_fill_pmuregset)
+	(ppc_store_pmuregset): New functions.
+	(ppc_regsets): Add entries for ebb and pmu regsets.
+	(ppc_arch_setup): Set isa207 in features struct if the ebb and
+	pmu regsets are available.  Set sizes for these regsets.
+
+2018-10-26  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* configure.srv (ipa_ppc_linux_regobj): Add
+	powerpc-isa207-vsx64l-ipa.o and powerpc-isa207-vsx32l-ipa.o.
+	(powerpc*-*-linux*): Add powerpc-isa207-vsx32l.o and
+	powerpc-isa207-vsx64l.o to srv_regobj, add rs6000/power-tar.xml,
+	rs6000/powerpc-isa207-vsx32l.xml, and
+	rs6000/powerpc-isa207-vsx64l.xml to srv_xmlfiles.
+	* linux-ppc-tdesc-init.h (enum ppc_linux_tdesc)
+	<PPC_TDESC_ISA207_VSX>: New enum value.
+	(init_registers_powerpc_isa207_vsx32l): Declare.
+	(init_registers_powerpc_isa207_vsx64l): Declare.
+	* linux-ppc-low.c (ppc_fill_tarregset): New function.
+	(ppc_store_tarregset): New function.
+	(ppc_regsets): Add entry for the TAR regset.
+	(ppc_arch_setup): Set isa207 in features struct when needed.  Set
+	size for the TAR regsets.
+	(ppc_get_ipa_tdesc_idx): Return PPC_TDESC_ISA207_VSX.
+	(initialize_low_arch): Call init_registers_powerpc_isa207_vsx32l
+	and init_registers_powerpc_isa207_vsx64l.
+	* linux-ppc-ipa.c (get_ipa_tdesc): Handle PPC_TDESC_ISA207_VSX.
+	(initialize_low_tracepoint): Call
+	init_registers_powerpc_isa207_vsx32l and
+	init_registers_powerpc_isa207_vsx64l.
+
+2018-10-26  Edjunior Barbosa Machado  <emachado@linux.vnet.ibm.com>
+	    Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* configure.srv (ipa_ppc_linux_regobj): Add
+	powerpc-isa205-ppr-dscr-vsx32l-ipa.o and
+	powerpc-isa205-ppr-dscr-vsx64l-ipa.o.
+	(powerpc*-*-linux*): Add powerpc-isa205-ppr-dscr-vsx32l.o and
+	powerpc-isa205-ppr-dscr-vsx64l.o to srv_regobj, add
+	rs6000/power-dscr.xml, rs6000/power-ppr.xml,
+	rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml and
+	rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml to srv_xmlfiles.
+	* linux-ppc-tdesc-init.h (enum ppc_linux_tdesc)
+	<PPC_TDESC_ISA205_PPR_DSCR_VSX>: New enum value.
+	(init_registers_powerpc_isa205_ppr_dscr_vsx32l)
+	(init_registers_powerpc_isa205_ppr_dscr_vsx64l): Declare.
+	* linux-ppc-low.c: Include "elf/common.h" and <sys/uio.h>.
+	(ppc_hwcap): Add comment.
+	(ppc_hwcap2): New global.
+	(ppc_check_regset, ppc_fill_pprregset, ppc_store_pprregset)
+	(ppc_fill_dscrregset, ppc_store_dscrregset): New functions.
+	(ppc_regsets): Add entries for the DSCR and PPR regsets.
+	(ppc_arch_setup): Get AT_HWCAP2.  Set ppr_dscr in features struct
+	when needed.  Set sizes for the the DSCR and PPR regsets.
+	(ppc_get_ipa_tdesc_idx): Return PPC_TDESC_ISA205_PPR_DSCR_VSX.
+	(initialize_low_arch): Call
+	init_registers_powerpc_isa205_ppr_dscr_vsx32l and
+	init_registers_powerpc_isa205_ppr_dscr_vsx64l.
+	* linux-ppc-ipa.c (get_ipa_tdesc): Handle
+	PPC_TDESC_ISA205_PPR_DSCR_VSX.
+	(initialize_low_tracepoint): Call
+	init_registers_powerpc_isa205_ppr_dscr_vsx32l and
+	init_registers_powerpc_isa205_ppr_dscr_vsx64l.
+
+2018-10-26  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	* linux-ppc-low.c (ppc_fill_vrregset): Remove memset calls.
+
+2018-10-10  Sergio Durigan Junior  <sergiodj@redhat.com>
+	    Simon Marchi <simark@simark.ca>
+
+	* acinclude.m4: Include "../selftest.m4".
+	* configure: Regenerate.
+	* configure.ac: Use "GDB_AC_SELFTEST".
+	* configure.srv: Use "$enable_unittests" instead of
+	"$development" when checking whether unit tests have been
+	enabled.
+	* server.c (captured_main): Update message informing that
+	selftests have been disabled.
+
+2018-10-04  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+
+2018-10-04  Tom Tromey  <tom@tromey.com>
+
+	* server.c (handle_status): Rename inner "thread".
+	(process_serial_event): Declare "res" in 'm' case.
+	* linux-low.c (last_thread_of_process_p, find_lwp_pid)
+	(iterate_over_lwps): Rename inner "thread".
+	(linux_qxfer_libraries_svr4): Rename inner "len".
+	* gdbthread.h (find_thread_in_random): Rename inner "thread".
+
+2018-10-01  Gary Benson <gbenson@redhat.com>
+
+	* gdb_proc_service.h: Moved common code to
+	common/gdb_proc_service.h.
+
+2018-10-01  Gary Benson <gbenson@redhat.com>
+
+	* gdb_proc_service.h: Synchronize comments and whitespace with
+	GDB's version of this file.
+
+2018-09-25  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* configure.ac (WARN_CFLAGS): Don't remove -Wmissing-prototypes.
+
+2018-09-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (gdbserver$(EXEEXT)): Sort OBS.
+	(gdbreplay$(EXEEXT)): Sort GDBREPLAY_OBS.
+	($(IPA_LIB)): Sort IPA_OBJS.
+
+2018-09-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Remove references to $(ADD_DEPS).
+
+2018-09-16  Tom Tromey  <tom@tromey.com>
+
+	* remote-utils.c (remote_open): Use GNU style for metasyntactic
+	variables.
+	* gdbreplay.c (gdbreplay_usage): Use GNU style for metasyntactic
+	variables.
+
+2018-09-05  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+
+2018-08-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR build/23399
+	* tracepoint.c (IPA_SYM_STRUCT_NAME): Define.
+
+2018-08-27  Tom Tromey  <tom@tromey.com>
+
+	PR build/23087:
+	* configure: Rebuild.
+
+2018-08-27  Tom Tromey  <tom@tromey.com>
+
+	* linux-s390-low.c (s390_emit_ext, s390_emit_litpool)
+	(s390_emit_const, s390_emit_reg, s390_emit_zero_ext)
+	(s390_emit_stack_adjust, s390_emit_set_r2, s390x_emit_ext)
+	(s390x_emit_const, s390x_emit_reg, s390x_emit_zero_ext)
+	(s390x_emit_stack_adjust): Add casts to unsigned char.
+
+2018-08-22  Simon Marchi  <simon.marchi@ericsson.com>
+
+	PR gdb/23374
+	PR gdb/23375
+	* server.h (struct client_state) <disable_randomization>:
+	Initialize to 1.
+
+2018-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-mips-low.c (mips_collect_ptrace_register): Remove unused
+	variable.
+	(mips_supply_ptrace_register): Likewise.
+
+2018-07-22  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+
+2018-07-22  Tom Tromey  <tom@tromey.com>
+
+	* win32-low.c (win32_create_inferior): Remove unused variables.
+	* gdbreplay.c (remote_open): Remove unused variable.
+	* remote-utils.c (remote_prepare): Remove unused variable.
+	* x86-tdesc.h (X86_TDESC_H): Define.
+	(amd64_expedite_regs): Define conditionally.
+	(i386_expedite_regs): Mark ATTRIBUTE_UNUSED.
+	* linux-x86-tdesc.c (i386_tdescs): Move inside #if.
+	* remote-utils.c (readchar): Remove unused variable.
+
+2018-07-13  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_kill): Change parameter to process_info
+	pointer instead of pid.  Adjust.
+	* lynx-low.c (lynx_kill): Likewise.
+	* nto-low.c (nto_kill): Likewise.
+	* spu-low.c (spu_kill): Likewise.
+	* win32-low.c (win32_kill): Likewise.
+	* server.c (handle_v_kill, kill_inferior_callback)
+	(detach_or_kill_for_exit): Adjust.
+	* target.c (kill_inferior): Change parameter to process_info
+	pointer instead of pid.  Adjust.
+	* target.h (struct target_ops) <kill>: Change parameter to
+	process_info pointer instead of pid.  Adjust all implementations
+	and callers.
+	(kill_inferior): Likewise.
+
+2018-07-13  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_detach, linux_join): Change parameter to
+	process_info pointer instead of pid.  Adjust.
+	* lynx-low.c (lynx_detach, lynx_join): Likewise.
+	* nto-low.c (nto_detach): Likewise.
+	* spu-low.c (spu_detach, spu_join): Likewise.
+	* win32-low.c (win32_detach, win32_join): Likewise.
+	* server.c (handle_detach, detach_or_kill_for_exit): Adjust.
+	* target.h (struct target_ops) <detach, join>: Change parameter to
+	process_info pointer instead of pid.  Adjust all implementations
+	and callers.
+	(detach_inferior, join_inferior): Rename 'pid' parameter to
+	'proc'.
+
+2018-07-11  Sergio Durigan Junior  <sergiodj@redhat.com>
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+	    Paul Fertser  <fercerpav@gmail.com>
+	    Tsutomu Seki  <sekiriki@gmail.com>
+
+	* Makefile.in (SFILES): Add '$(srcdir)/common/netstuff.c'.
+	(OBS): Add 'common/netstuff.o'.
+	(GDBREPLAY_OBS): Likewise.
+	* gdbreplay.c: Include 'wspiapi.h' and 'netstuff.h'.
+	(remote_open): Implement support for IPv6
+	connections.
+	* remote-utils.c: Include 'netstuff.h', 'filestuff.h'
+	and 'wspiapi.h'.
+	(handle_accept_event): Accept connections from IPv6 sources.
+	(remote_prepare): Handle IPv6-style hostnames; implement
+	support for IPv6 connections.
+	(remote_open): Implement support for printing connections from
+	IPv6 sources.
+
+2018-07-11  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/23377
+	* mem-break.c (any_persistent_commands): Add process_info
+	parameter and use it instead of relying on the current process.
+	Change return type to bool.
+	* mem-break.h (any_persistent_commands): Add process_info
+	parameter and change return type to bool.
+	* server.c (handle_detach): Remove require_running_or_return call.
+	Look up the process_info for the process we're about to detach.
+	If not found, return back error to GDB.  Adjust
+	any_persistent_commands call to pass down a process pointer.
+
+2018-07-11  Pedro Alves  <palves@redhat.com>
+
+	* i387-fp.c (i387_cache_to_fsave, cache_to_fxsave)
+	(i387_cache_to_xsave): Use regcache_raw_get_unsigned_by_name
+	instead of collect_register_by_name.
+	* regcache.c (regcache_raw_get_unsigned_by_name): New.
+	* regcache.h (regcache_raw_get_unsigned_by_name): New.
+
+2018-07-04  Vyacheslav Barinov  <v.barinov@samsung.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (initialize_low): Call linux_proc_init_warnings.
+
+2018-07-03  Tom Tromey  <tom@tromey.com>
+
+	* linux-low.c: Update.
+	* lynx-low.c: Update.
+	* mem-break.c: Update.
+	* nto-low.c: Update.
+	* remote-utils.c: Update.
+	* server.c: Update.
+	* spu-low.c: Update.
+	* target.c: Update.
+	* win32-low.c: Update.
+
+2018-07-03  Tom Tromey  <tom@tromey.com>
+
+	* server.c: Update.
+
+2018-07-03  Tom Tromey  <tom@tromey.com>
+
+	* linux-low.c: Update.
+
+2018-07-03  Tom Tromey  <tom@tromey.com>
+
+	* target.c: Update.
+
+2018-07-03  Tom Tromey  <tom@tromey.com>
+
+	* linux-low.c: Update.
+	* linux-mips-low.c: Update.
+	* lynx-low.c: Update.
+	* nto-low.c: Update.
+	* remote-utils.c: Update.
+	* server.c: Update.
+	* spu-low.c: Update.
+	* target.c: Update.
+	* thread-db.c: Update.
+
+2018-07-03  Tom Tromey  <tom@tromey.com>
+
+	* linux-low.c: Update.
+	* linux-mips-low.c: Update.
+	* lynx-low.c: Update.
+	* mem-break.c: Update.
+	* nto-low.c: Update.
+	* remote-utils.c: Update.
+	* server.c: Update.
+	* spu-low.c: Update.
+	* target.c: Update.
+	* tracepoint.c: Update.
+
+2018-07-03  Tom Tromey  <tom@tromey.com>
+
+	* linux-low.c: Update.
+	* linux-ppc-low.c: Update.
+	* linux-x86-low.c: Update.
+	* proc-service.c: Update.
+	* server.c: Update.
+	* spu-low.c: Update.
+	* thread-db.c: Update.
+	* win32-low.c: Update.
+
+2018-07-03  Tom Tromey  <tom@tromey.com>
+
+	* linux-low.c: Update.
+	* lynx-low.c: Update.
+	* nto-low.c: Update.
+	* remote-utils.c: Update.
+	* spu-low.c: Update.
+	* thread-db.c: Update.
+	* win32-low.c: Update.
+
+2018-06-29  Joel Brobecker  <brobecker@adacore.com>
+
+	* linux-x86-tdesc.c (amd64_linux_read_description): Add missing
+	parameter in call to 'amd64_create_target_description'.
+
+2018-06-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* x86-tdesc.h: Remove executable permission flag.
+
+2018-06-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* configure.ac: Remove AC_PREREQ, add missing quoting.
+	* configure: Re-generate.
+	* config.in: Re-generate.
+	* aclocal.m4: Re-generate.
+
+2018-06-18  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* tracepoint.h (current_traceframe): Remove declaration.
+
+2018-06-18  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-aarch64-low.c (is_sve_tdesc): New function.
+	(aarch64_sve_regs_copy_to_regcache): Likewise.
+	(aarch64_sve_regs_copy_from_regcache): Likewise.
+	(aarch64_regs_info): Add SVE checks.
+	(initialize_low_arch): Initialize SVE.
+
+2018-06-18  Alan Hayward  <alan.hayward@arm.com>
+
+	* Makefile.in: Add aarch64-sve-linux-ptrace.c.
+
+2018-06-11  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-aarch64-ipa.c (get_ipa_tdesc): Add null VQ param.
+	(initialize_low_tracepoint): Likewise
+	* linux-aarch64-low.c (aarch64_arch_setup): Get VQ.
+	* linux-aarch64-tdesc-selftest.c (aarch64_tdesc_test): Add null VQ
+	param.
+	* linux-aarch64-tdesc.c (aarch64_linux_read_description): Add VQ
+	checks.
+	* linux-aarch64-tdesc.h (aarch64_linux_read_description): Add VQ.
+
+2018-06-11  Alan Hayward  <alan.hayward@arm.com>
+
+	* server.h (PBUFSIZ): Increase size
+
+2018-06-11  Alan Hayward  <alan.hayward@arm.com>
+
+	* regcache.c (regcache::raw_compare): New function.
+	* regcache.h (regcache::raw_compare): New declaration.
+
+2018-06-11  Alan Hayward  <alan.hayward@arm.com>
+
+	* regcache.c (new_register_cache): Use new.
+	(free_register_cache): Use delete.
+	(register_data): Use const.
+	(supply_register): Move body inside regcache.
+	(regcache::raw_supply): New override function.
+	(collect_register): Move body inside regcache.
+	(regcache::raw_collect): New override function.
+	(regcache::get_register_status): New override function.
+	* regcache.h (struct regcache): Inherit from reg_buffer_common.
+
+2018-06-09  Tom Tromey  <tom@tromey.com>
+
+	* event-loop.c (gdb_event, gdb_event_p): Remove typedefs.  Don't
+	declare queue.
+	(event_queue): Use std::queue.
+	(gdb_event_xfree): Remove.
+	(initialize_event_loop, process_event, wait_for_event): Update.
+
+2018-06-08  Stan Cox  <scox@redhat.com>
+
+	* win32-low.c (win32_create_inferior):  last_ptid and last_status
+	moved to client_state.
+
+2018-06-08  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (GDBREPLAY_OBS): Add common/cleanups.o,
+	common/common-exceptions.o, common/common-utils.o,
+	common/errors.o, common/print-utils.o and utils.o.
+	* gdbreplay.c: Include "common-defs.h" instead of the two
+	'config.h's here.  Don't include stdio.h, errno.h, stdlib.h,
+	string.h or alloca.h.
+	(perror_with_name): Delete.
+	(remote_open): Use xstrdup instead of strdup.
+	(main): Rename to ...
+	(captured_main): ... this.
+	(main): New.
+
+2018-06-08  Tom Tromey  <tom@tromey.com>
+
+	* linux-low.c (linux_low_read_btrace): Update.
+
+2018-06-04  Stan Cox  <scox@redhat.com>
+
+	* server.h (struct client_state): New.
+	* server.c (cont_thread, general_thread, multi_process)
+	(report_fork_events, report_vfork_events, report_exec_events)
+	(report_thread_events, swbreak_feature, hwbreak_feature)
+	(vCont_supported, disable_randomization, pass_signals)
+	(program_signals, program_signals_p, last_status, last_ptid, own_buf):
+	Moved to client_state.
+	* remote-utils.c (remote_debug, noack_mode)
+	(transport_is_reliable): Moved to client_state.
+	* tracepoint.c (current_traceframe): Moved to client_state.
+
+	Update all callers.
+	* server.c, remote-utils.c, tracepoint.c, fork-child.c,
+	linux-low.c, remote-utils.h, target.c: Use client_state.
+
+2018-05-31  Alan Hayward  <alan.hayward@arm.com>
+
+	* configure.srv: Add new c/h file.
+
+2018-05-31  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-aarch64-tdesc.c (aarch64_linux_read_description): Add
+	null VQ.
+
+2018-05-25  Maciej W. Rozycki  <macro@mips.com>
+
+	* gdb.arch/mips-fpregset-core.exp: New test.
+	* gdb.arch/mips-fpregset-core.c: New test source.
+
+2018-05-23  Erik Kurzinger  <ekurzinger@nvidia.com>
+
+	PR server/23198
+	* hostio.c (require_int): Do not report overflow for integers
+	between 0xfffffff and 0x7fffffff.
+
+2018-05-22  Maciej W. Rozycki  <macro@mips.com>
+
+	* linux-mips-low.c [HAVE_PTRACE_GETREGS] (mips_collect_register)
+	(mips_supply_register): Move outside HAVE_PTRACE_GETREGS.
+	(mips_collect_ptrace_register, mips_supply_ptrace_register): New
+	functions.
+	(the_low_target): Wire them.
+
+2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
+
+	* linux-ppc-low.c (ppc_fill_vrregset): Add vscr_offset variable.
+	Set vscr_offset to 0 in little-endian mode and 12 in big-endian
+	mode. Call collect_register_by_name with vscr using
+	vscr_offset. Zero-pad vscr and vrsave fields in collector buffer.
+	(ppc_store_vrregset): Add and set vscr_offset variable as in
+	ppc_fill_vrregset. Call supply_register_by_name with vscr using
+	vscr_offset.
+
+2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
+
+	* linux-ppc-low.c (SIZEOF_VSXREGS, SIZEOF_VRREGS): Remove.
+	(ppc_arch_setup): Change SIZEOF_VRREGS and SIZEOF_VSXREGS to
+	PPC_LINUX_SIZEOF_VRREGSET and PPC_LINUX_SIZEOF_VSXREGSET.
+
+2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
+
+	* linux-ppc-low.c (ppc_fill_vsxregset): Remove ppc_hwcap check.
+	(ppc_store_vsxregset): Likewise.
+	(ppc_fill_vrregset): Likewise.
+	(ppc_store_vrregset): Likewise.
+	(ppc_fill_evrregset): Likewise.
+	(ppc_store_evrregset): Likewise.
+	(ppc_regsets): Set VSX/VR/EVR regset sizes to 0.
+	(ppc_arch_setup): Iterate through ppc_regsets and set sizes when
+	needed.
+
+2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
+
+	* linux-ppc-low.c (ppc_arch_setup): Remove code for getting the
+	wordsize of the inferior. Call ppc_linux_target_wordsize.
+
+2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
+
+	* configure.srv (srv_tgtobj): Add arch/ppc-linux-common.o.
+	* Makefile.in (SFILES): Add arch/ppc-linux-common.c.
+	* linux-ppc-tdesc.h: Rename to linux-ppc-tdesc-init.h.
+	* linux-ppc-tdesc-init.h (tdesc_powerpc_32l, tdesc_powerpc_64l)
+	(tdesc_powerpc_altivec32l, tdesc_powerpc_altivec64l)
+	(tdesc_powerpc_cell32l, tdesc_powerpc_cell64l)
+	(tdesc_powerpc_vsx32l, tdesc_powerpc_vsx64l)
+	(tdesc_powerpc_isa205_32l, tdesc_powerpc_isa205_64l)
+	(tdesc_powerpc_isa205_altivec32l, tdesc_powerpc_isa205_altivec64l)
+	(tdesc_powerpc_isa205_vsx32l, tdesc_powerpc_isa205_vsx64l)
+	(tdesc_powerpc_e500l): Remove.
+	* linux-ppc-ipa.c: Include arch/ppc-linux-tdesc.h and
+	linux-ppc-tdesc-init.h. Don't include linux-ppc-tdesc.h.
+	* linux-ppc-low.c: Include arch/ppc-linux-common.h,
+	arch/ppc-linux-tdesc.h, and linux-ppc-tdesc-init.h. Don't include
+	linux-ppc-tdesc.h.
+	(ppc_arch_setup): Remove target description matching code. Fill a
+	ppc_linux_features struct and call ppc_linux_match_description
+	with it.
+
+2018-05-22  Maciej W. Rozycki  <macro@mips.com>
+
+	* linux-mips-low.c (mips_cannot_fetch_register): Return 1 if the
+	width of the requested register exceeds the width of the
+	`ptrace' data type.
+	(mips_cannot_store_register): Likewise.
+
+2018-05-21  Maciej W. Rozycki  <macro@mips.com>
+
+	* linux-mips-low.c (mips_fetch_register): New function.  Update
+	preceding comment.
+	(mips_store_gregset): Supply 0 rather than $restart for $zero.
+	(the_low_target): Wire `mips_fetch_register'.
+
+2018-05-10  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-i386-low.c (LYNXOS_178): New macro.
+	[LYNXOS_178] (usr_fcontext_t): Provide a definition that matches
+	the layout on LynxOS-178.
+	(lynx_i386_fill_fpregset, lynx_i386_store_fpregset): Do not
+	handle floating point registers that are not supported by
+	LynxOS-178.
+
+2018-05-10  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+
+2018-05-10  Joel Brobecker  <brobecker@adacore.com>
+
+	PR server/23158:
+	* tdesc.h (init_target_desc) <expedite_regs>: New parameter.
+	* tdesc.c (init_target_desc) <expedite_regs>: New parameter.
+	Use it to set the expedite_regs field in the given tdesc.
+	* x86-tdesc.h: New file.
+	* linux-aarch64-tdesc.c (aarch64_linux_read_description):
+	Adjust following the addition of the new expedite_regs parameter
+	to init_target_desc.
+	* linux-tic6x-low.c (tic6x_read_description): Likewise.
+	* linux-x86-tdesc.c: #include "x86-tdesc.h".
+	(i386_linux_read_description, amd64_linux_read_description):
+	Adjust following the addition of the new expedite_regs parameter
+	to init_target_desc.
+	* lynx-i386-low.c: #include "x86-tdesc.h".
+	(lynx_i386_arch_setup): Adjust following the addition of the new
+	expedite_regs parameter to init_target_desc.
+	* nto-x86-low.c: #include "x86-tdesc.h".
+	(nto_x86_arch_setup): Adjust following the addition of the new
+	expedite_regs parameter to init_target_desc.
+	* win32-i386-low.c: #include "x86-tdesc.h".
+	(i386_arch_setup): Adjust following the addition of the new
+	expedite_regs parameter to init_target_desc.
+
+2018-05-10  Joel Brobecker  <brobecker@adacore.com>
+
+	PR server/23158:
+	* win32-low.c (win32_create_inferior): Add call to my_wait
+	setting last_status global.
+
+2018-05-10  Joel Brobecker  <brobecker@adacore.com>
+
+	PR server/23158:
+	* win32-low.c (create_process): Only call gdb_tilde_expand if
+	inferior_cwd is not NULL.
+
+2018-05-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* i387-fp.c (i387_cache_to_xsave): Only write x87 control
+	registers to the cache if their values have changed.
+	(i387_xsave_to_cache): Provide default values for x87 control
+	registers when these features are available, but disabled.
+	* regcache.c (supply_register_by_name_zeroed): New function.
+	* regcache.h (supply_register_by_name_zeroed): Declare new
+	function.
+
+2018-05-07  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+
+2018-05-04  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+
+2018-05-04  Jan Kratochvil  <jan.kratochvil@redhat.com>
+	    Pedro Alves <palves@redhat.com>
+
+	* linux-aarch64-low.c (aarch64_stopped_data_address):
+	Likewise.
+
+2018-04-27  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+
+2018-04-23  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+
+2018-04-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* Makefile.in (depcomp): Add "..".
+	(all_deps_files): New and use it.
+
+2018-04-18  Alan Hayward  <alan.hayward@arm.com>
+
+	* configure.srv (aarch64*-*-linux*): Don't include xml.
+	(i[34567]86-*-cygwin*): Likewise.
+	(i[34567]86-*-linux*): Likewise.
+	(i[34567]86-*-lynxos*): Likewise.
+	(i[34567]86-*-mingw32ce*): Likewise.
+	(i[34567]86-*-mingw*): Likewise.
+	(i[34567]86-*-nto*): Likewise.
+	(tic6x-*-uclinux): Likewise.
+	(x86_64-*-linux*): Likewise.
+	(x86_64-*-mingw*): Likewise.
+	(x86_64-*-cygwin*): Likewise.
+
+2018-04-18  Alan Hayward  <alan.hayward@arm.com>
+
+	* tdesc.c: Remove xml parameter.
+
+2018-04-18  Alan Hayward  <alan.hayward@arm.com>
+
+	* server.c (get_features_xml): Remove cast.
+	* tdesc.c (void target_desc::accept): Fill in function.
+	(tdesc_get_features_xml): Remove old xml creation.
+	(print_xml_feature::visit_pre): Add xml vistor.
+	* tdesc.h (struct target_desc): Make xmltarget mutable.
+	(tdesc_get_features_xml): Remove declaration.
+
+2018-04-18  Alan Hayward  <alan.hayward@arm.com>
+
+	* tdesc.c (tdesc_architecture_name): Add new function.
+	(tdesc_osabi_name): Likewise.
+	(tdesc_get_features_xml): Use new functions.
+
+2018-04-18  Alan Hayward  <alan.hayward@arm.com>
+
+	* tdesc.c (tdesc_create_flags): Remove.
+	(tdesc_add_flag): Likewise.
+	(tdesc_named_type): Likewise.
+	(tdesc_create_union): Likewise.
+	(tdesc_create_struct): Likewise.
+	(tdesc_create_vector): Likewise.
+	(tdesc_add_bitfield): Likewise.
+	(tdesc_add_field): Likewise.
+	(tdesc_set_struct_size): Likewise.
+
+2018-04-18  Alan Hayward  <alan.hayward@arm.com>
+
+	* tdesc.c (~target_desc): Remove implictly deleted items.
+	(init_target_desc): Iterate all features.
+	(tdesc_get_features_xml): Use vector.
+	(tdesc_create_feature): Create feature.
+	* tdesc.h (tdesc_feature) Remove
+	(target_desc): Add features.
+
+2018-04-18  Alan Hayward  <alan.hayward@arm.com>
+
+	* Makefile.in: Add common/tdesc.c
+	* tdesc.c (init_target_desc): init all reg_defs from register
+	vector.
+	(tdesc_create_reg): Create tdesc_reg.
+	* tdesc.h (tdesc_feature): Add register vector.
+
+2018-03-30  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* tdesc.h (struct target_desc) <features>: Change type to
+	std::vector<std::string>.
+	* tdesc.c (target_desc::~target_desc): Adjust to std::vector
+	changes.
+	(tdesc_get_features_xml): Likewise.
+	(tdesc_create_feature): Likewise.
+
+2018-03-26  Alan Hayward  <alan.hayward@arm.com>
+
+	* regcache.c (find_register_by_number): Return a ref.
+	(find_regno): Use references.
+	(register_size): Likewise.
+	(register_data): Likewise.
+	* tdesc.c (target_desc::~target_desc): Remove free calls.
+	(target_desc::operator==): Use std::vector compare.
+	(init_target_desc): Use reference.
+	(tdesc_create_reg): Use reg constructors.
+	* tdesc.h (struct target_desc): Replace pointer with object.
+
+2018-03-23  Alan Hayward  <alan.hayward@arm.com>
+
+	* regcache.c (find_register_by_number): Make static.
+	(find_regno): Use find_register_by_number
+	* regcache.h (struct reg): Remove declaration.
+
+2018-03-23  Alan Hayward  <alan.hayward@arm.com>
+
+	* tdesc.c (target_desc::~target_desc): Move to here.
+	(target_desc::operator==): Likewise.
+	* tdesc.h (target_desc::~target_desc): Move from here.
+	(target_desc::operator==): Likewise.
+
+2018-03-22  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-s390-low.c (s390_get_wordsize): Correct brace style.
+
+2018-03-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-s390-ipa.c (get_ipa_tdesc): Add handling for
+	S390_TDESC_GS.
+	* linux-s390-low.c (s390_get_ipa_tdesc_idx): Likewise.
+	(initialize_low_tracepoint): Call init_registers_s390x_gs_linux64
+	and init_registers_s390_gs_linux64.
+
+2018-03-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-s390-low.c (s390_fill_gs): Remove function.
+	(s390_fill_gsbc): Remove function.
+	(s390_regsets): Set fill functions for the guarded storage regsets
+	to NULL.
+
+2018-03-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-s390-low.c (s390_get_hwcap): Replace tdesc parameter by
+	the word size.  Add comment.
+	(s390_get_wordsize): New function.
+	(s390_arch_setup): No longer select a temporary tdesc to fetch the
+	pswm with it.  Instead, use s390_get_wordsize to determine the
+	word size first and derive the correct tdesc from that directly.
+
+2018-03-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Include silent-rules.mk.
+	(srcdir, abs_top_srcdir, abs_srcdir, VPATH): Move up.
+	(COMPILE): Add ECHO_CXX.
+	(gdbserver$(EXEEXT)): Add SILENCE and ECHO_CXXLD.
+	(gdbreplay$(EXEEXT)): Add SILENCE and ECHO_CXXLD.
+	($(IPA_LIB)): Add SILENCE and ECHO_CXXLD.
+	(version-generated.c): Add ECHO_GEN.
+	(stamp-xml): Add SILENCE and ECHO_GEN_XML_BUILTIN_GENERATED.
+	(IPAGENT_COMPILE): Add ECHO_CXX.
+	(%-generated.c): Add ECHO_REGDAT.
+
+2018-03-14  Tom Tromey  <tom@tromey.com>
+
+	PR cli/14977:
+	* ax.c (ax_printf): Special case for NULL.
+
+2018-03-08  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (linux_qxfer_libraries_svr4): Use
+	xml_escape_text_append.
+
+2018-03-08  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (linux_qxfer_libraries_svr4): Use std::string.
+
+2018-03-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* server.c (handle_general_set): Remove unnecessary xstrdup.
+
+2018-03-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* server.c (parse_debug_format_options): Adjust to
+	delim_string_to_char_ptr_vec changes.
+	* thread-db.c (thread_db_load_search): Adjust to
+	dirnames_to_char_ptr_vec changes.
+
+2018-03-01  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* target.h (target_enable_btrace, target_disable_btrace)
+	(target_read_btrace, target_read_btrace_conf): Turn macro into
+	inline function.  Throw error if target method is not defined.
+	* server.c (handle_qxfer_btrace handle_qxfer_btrace_conf): Remove
+	check for btrace target method.  Be prepared to handle exceptions
+	from btrace target methods.
+
+2018-02-28  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* server.c (captured_main): Change order of error message printed
+	when the current working directory cannot be found.
+
+2018-02-28  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* server.c: Include "filenames.h" and "pathstuff.h".
+	(program_name): Delete variable.
+	(program_path): New anonymous class.
+	(get_exec_wrapper): Use "program_path" instead of
+	"program_name".
+	(handle_v_run): Likewise.
+	(captured_main): Likewise.
+	(process_serial_event): Likewise.
+
+2018-02-28  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* Makefile.in (SFILES): Add "$(srcdir)/common/pathstuff.c".
+	(OBJS): Add "pathstuff.o".
+	* server.c (current_directory): New global variable.
+	(captured_main): Initialize "current_directory".
+
+2018-02-26  Alan Hayward  <alan.hayward@arm.com>
+
+	* tdesc.c: Use common/tdesc.h.
+	* tdesc.h: Likewise.
+
+2018-02-20  Alan Hayward  <alan.hayward@arm.com>
+	    Simon Marchi  <simon.marchi@ericsson.com>
+
+	* Makefile.in: Switch order of make rules.
+
+2018-02-19  Alan Hayward  <alan.hayward@arm.com>
+
+	* Makefile.in: Add common directory in build.
+	* configure.ac: Add common reference.
+	* configure: Regenerate.
+
+2018-02-09  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* linux-low.c (linux_target_ops): Remove linux_supports_btrace.
+	* nto-low.c (nto_target_ops): Remove NULL for supports_btrace.
+	* spu-low.c (spu_target_ops): Likewise.
+	* win32-low.c (win32_target_ops): Likewise.
+	* server.c (supported_btrace_packets): Report packets unconditionally.
+	* target.h (target_ops) <supports_btrace>: Remove.
+	(target_supports_btrace): Remove.
+
+2018-02-09  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* server.c (handle_btrace_enable_bts, handle_btrace_enable_pt)
+	(handle_btrace_disable): Change return type to void.  Use exceptions
+	to report errors.
+	(handle_btrace_general_set): Catch exception and copy message to
+	return message.
+
+2018-02-08  Tom Tromey  <tom@tromey.com>
+
+	* linux-low.c (install_software_single_step_breakpoints): Use
+	make_scoped_restore.
+	* inferiors.c (make_cleanup_restore_current_thread): Remove.
+	(do_restore_current_thread_cleanup): Remove.
+	* gdbthread.h (make_cleanup_restore_current_thread): Don't
+	declare.
+
+2018-02-08  Tom Tromey  <tom@tromey.com>
+
+	* mem-break.c (set_raw_breakpoint_at): Use
+	gdb::unique_xmalloc_ptr.
+
+2018-01-30  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/13211
+	* target.c (target_terminal::terminal_state): Rename to ...
+	(target_terminal::m_terminal_state): ... this.
+
+2018-01-19  James Clarke  <jrtc27@jrtc27.com>
+
+	* linux-low.c (handle_extended_wait): Surround call to
+	thread_db_notice_clone with #ifdef USE_THREAD_DB.
+
+2018-01-17  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (attach_proc_task_lwp_callback): Adjust to
+	linux_ptrace_attach_fail_reason_string now returning an
+	std::string.
+	(linux_attach): Likewise.
+	* thread-db.c (attach_thread): Likewise.
+
+2018-01-17  Eldar Abusalimov  <eldar.abusalimov@jetbrains.com>
+
+	PR gdb/21559
+	* configure.ac: Include <sys/types.h> prior to <sys/user.h> when
+	checking for fs_base/gs_base fields in struct user_regs_struct.
+	* configure: Regenerate.
+
+2018-01-16  Yao Qi  <yao.qi@linaro.org>
+
+	PR gdb/18749
+	* linux-low.c (fetch_register): Call supply_register instead of
+	error.
+
+2018-01-08  Yao Qi  <yao.qi@linaro.org>
+	    Simon Marchi  <simon.marchi@ericsson.com>
+
+	* Makefile.in (OBS): Remove selftest.o.
+	* configure.ac: Set srv_selftest_objs if $development is true.
+	(GDBSERVER_DEPFILES): Append $srv_selftest_objs.
+	* configure: Re-generated.
+	* server.c (captured_main): Wrap variable selftest_filter with
+	GDB_SELF_TEST.
+
+2018-01-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* server.c (parse_debug_format_options): Return std::string.
+	(handle_monitor_command, captured_main): Adjust.
+
+2018-01-05  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/18653
+	* server.c (captured_main): Pass quiet=false to
+	save_original_signals_state.
+
+2018-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbreplay.c (gdbreplay_version): Update copyright year in
+	version message.
+	* server.c (gdbserver_version): Likewise.
+
+2017-12-08  Tom Tromey  <tom@tromey.com>
+
+	* ax.c (ax_printf): Update.
+
+2017-12-07  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-ipa.c (initialize_low_tracepoint): Call
+	aarch64_linux_read_description.
+	* linux-amd64-ipa.c (idx2mask): New array.
+	(get_ipa_tdesc): Move idx2mask out.
+	(initialize_low_tracepoint): Initialize target descriptions.
+	* linux-i386-ipa.c (idx2mask): New array.
+	(get_ipa_tdesc): Move idx2mask out.
+	(initialize_low_tracepoint): Initialize target descriptions.
+
+2017-12-05  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* tdesc.c (struct tdesc_type): Change return type.
+	(tdesc_add_flag): Change parameter type.
+	(tdesc_add_bitfield): Likewise.
+	(tdesc_add_field): Likewise.
+	(tdesc_set_struct_size): Likewise.
+
+2017-12-05  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* regcache.c (registers_to_string): Remove unused variable.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* inferiors.c (for_each_inferior_with_data): Remove.
+	* inferiors.h (for_each_inferior_with_data): Remove.
+	* server.c (handle_qxfer_threads_worker): Change parameter type.
+	(handle_qxfer_threads_proper): Use for_each_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* inferiors.c (for_each_inferior): Remove.
+	(clear_inferiors): Use for_each_thread.
+	* inferiors.h (for_each_inferior): Remove.
+	* linux-low.c (linux_wait_for_event_filtered): Use
+	for_each_thread.
+	(linux_stabilize_threads): Likewise.
+	* regcache.c (regcache_release): Likewise.
+	* server.c (gdb_wants_all_threads_stopped): Likewise.
+	(clear_pending_status_callback): Remove.
+	(handle_status): Use for_each_thread.
+	(captured_main): Likewise.
+	* win32-low.c (child_init_thread_list): Likewise.
+	(win32_clear_inferiors): Likewise.
+	(fake_breakpoint_event): Likewise.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* inferiors.h (find_inferior): Remove.
+	* inferiors.c (find_inferior): Remove.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (resume_status_pending_p): Update comment.
+	(need_step_over_p): Update comment.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (proceed_one_lwp): Return void, change parameter
+	type.
+	(unsuspend_and_proceed_one_lwp): Likewise.
+	(proceed_all_lwps): Use for_each_thread.
+	(unstop_all_lwps): Likewise.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (linux_resume_one_thread): Return void, take
+	parameter directly.
+	(linux_resume): Use for_each_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (send_sigstop_callback): Return void, change
+	parameter type.  Rename to...
+	(send_sigstop): ... this.
+	(suspend_and_send_sigstop_callback): Return void, change parameter
+	type.  Rename to...
+	(suspend_and_send_sigstop): ... this.
+	(stop_all_lwps): Use for_each_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (lwp_running): Return bool, remove unused
+	argument.
+	(linux_stabilize_threads): Use find_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (select_singlestep_lwp_callback): Remove.
+	(count_events_callback): Remove.
+	(select_event_lwp_callback): Remove.
+	(select_event_lwp): Use find_thread/for_each_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (not_stopped_callback): Return bool, take filter
+	argument directly.
+	(linux_wait_for_event_filtered): Use find_thread.
+	(linux_wait_1): Likewise.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (same_lwp): Remove.
+	(find_lwp_pid): Use find_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (delete_lwp_callback): Remove.
+	(linux_mourn): Use for_each_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (linux_detach_lwp_callback): Return void, remove
+	args parameter, don't check for pid.
+	(linux_detach): Use for_each_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-low.c (struct counter): Remove.
+	(second_thread_of_pid_p): Remove.
+	(last_thread_of_process_p): Use find_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* inferiors.c (find_inferior_in_random): Remove.
+	* inferiors.h (find_inferior_in_random): Remove.
+	* linux-low.c (status_pending_p_callback): Return bool, accept
+	parameter ptid directly.
+	(linux_wait_for_event_filtered): Use find_thread_in_random.
+	(linux_wait_1): Likewise.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* inferiors.c (find_inferior_id): Remove.
+	(find_thread_ptid): Move implemention from find_inferior_id to
+	here.
+	* inferiors.h (find_inferior_id): Remove.
+	* server.c (handle_status): Use find_thread_ptid.
+	(process_serial_event): Likewise.
+	* thread-db.c (find_one_thread): Likewise.
+	(thread_db_thread_handle): Likewise.
+	* win32-low.c (thread_rec): Likewise.
+	(child_delete_thread): Likewise.
+	(win32_thread_alive): Likewise.
+	(get_child_debug_event): Likewise.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-mips-low.c (update_watch_registers_callback): Return
+	void, remove pid_p parameter, don't check for pid.
+	(mips_insert_point, mips_remove_point): Use for_each_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* lynx.low (lynx_delete_thread_callback): Remove.
+	(lynx_mourn): Use for_each_thread.
+
+2017-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* regcache.c (regcache_invalidate_one): Remove.
+	(regcache_invalidate_pid): use for_each_thread.
+
+2017-11-26  Tom Tromey  <tom@tromey.com>
+
+	* linux-low.c (linux_create_inferior): Update.
+
+2017-11-24  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* spu-low.c (spu_create_inferior): Fix typo in argument name.
+
+2017-11-24  Alan Hayward  <alan.hayward@arm.com>
+
+	* configure.srv: Add linux-aarch64-tdesc-selftest.o.
+	* linux-aarch64-low.c (initialize_low_arch): Call init func.
+	* linux-aarch64-tdesc-selftest.c: New file.
+	* linux-aarch64-tdesc.h (initialize_low_tdesc): New declaration.
+
+2017-11-24  Alan Hayward  <alan.hayward@arm.com>
+
+	* configure.srv: Add new file.
+	* linux-aarch64-low.c (initialize_low_arch): Call init func.
+	* linux-aarch64-tdesc-selftest.c: New file.
+	* linux-aarch64-tdesc.h (initialize_low_tdesc): New declaration.
+
+2017-11-24  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-aarch64-ipa.c (initialize_low_tracepoint): Remove init.
+	* linux-aarch64-low.c (initialize_low_arch): Remove init.
+	* linux-aarch64-tdesc.c (aarch64_linux_read_description): Add init.
+
+2017-11-24  Alan Hayward  <alan.hayward@arm.com>
+
+	* configure.srv: Add new files.
+	* linux-aarch64-ipa.c (get_ipa_tdesc): Call
+	aarch64_linux_read_description.
+	* linux-aarch64-low.c (aarch64_linux_read_description):
+	Merge with aarch64_arch_setup.
+	(aarch64_arch_setup): Call aarch64_linux_read_description.
+	* linux-aarch64-tdesc.c: New file.
+	* linux-aarch64-tdesc.h: New file.
+
+2017-11-24  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv: Set $srv_regobj for tic6x-linux.
+	* linux-tic6x-low.c: Include "arch/tic6x.h" and "tdesc.h".
+	(tic6x_read_description): Move some code to tic6x_arch_setup.
+	(tic6x_tdesc_test): New function.
+	(initialize_low_arch): Call selftests::register_test.
+
+2017-11-22  Yao Qi  <yao.qi@linaro.org>
+
+	* remote-utils.c (prepare_resume_reply): Use memcpy.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (kill_one_lwp_callback): Return void, take
+	argument directly, don't filter on pid.
+	(linux_kill): Use for_each_thread.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (need_step_over_p): Return bool, remove dummy
+	argument.
+	(linux_resume, proceed_all_lwps): Use find_thread.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (resume_status_pending_p): Return bool, remove
+	flag_p argument.
+	(linux_resume): Use find_thread.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (struct thread_resume_array): Remove.
+	(linux_set_resume_request): Return void, take arguments
+	directly.
+	(linux_resume): Use for_each_thread.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (stuck_in_jump_pad_callback): Change prototype,
+	return bool, remove data argument.
+	(linux_stabilize_threads): Use find_thread.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (unsuspend_one_lwp): Remove.
+	(unsuspend_all_lwps): Use for_each_thread, inline code from
+	unsuspend_one_lwp.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* gdbthread.h (find_thread): Add overload with ptid_t filter.
+	* linux-low.c (struct iterate_over_lwps_args): Remove.
+	(iterate_over_lwps_filter): Remove.
+	(iterate_over_lwps): Use find_thread.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (reset_lwp_ptrace_options_callback): Remove.
+	(linux_handle_new_gdb_connection): Use for_each_thread, inline
+	code from reset_lwp_ptrace_options_callback.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-arm-low.c (struct update_registers_data): Remove.
+	(update_registers_callback): Return void, take arguments
+	directly, don't check thread's pid.
+	(arm_insert_point, arm_remove_point): Use for_each_thread.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* win32-low.c (continue_one_thread): Return void, take argument
+	directly.
+	(child_continue): Use for_each_thread.
+
+2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* win32-i386-low.c (update_debug_registers_callback): Rename
+	to ...
+	(update_debug_registers): ... this, return void, remove pid_p arg.
+	(x86_dr_low_set_addr, x86_dr_low_set_control): Use for_each_thread.
+
+2017-11-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* inferiors.h (struct process_info): Add constructor, initialize
+	fields..
+	<syscalls_to_catch>: Change type to std::vector<int>.
+	* inferiors.c (add_process): Allocate process_info with new.
+	(remove_process): Free process_info with delete.
+	* linux-low.c (handle_extended_wait): Adjust.
+	(gdb_catching_syscalls_p, gdb_catch_this_syscall_p): Adjust.
+	* server.c (handle_general_set): Adjust.
+
+2017-11-16  Pedro Alves  <palves@redhat.com>
+
+	* remote-utils.c (remote_close): Block SIGIO signals instead of
+	uninstalling the SIGIO handler.
+
+2017-11-16  Alan Hayward  <alan.hayward@arm.com>
+
+	* tdesc.c (tdesc_get_features_xml): Allow null osabi.
+
+2017-11-16  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-tic6x-low.c (tic6x_fill_gregset): Cast buf.
+	(tic6x_store_gregset): Likewise.
+	(tic6x_usrregs_info): Move it up.
+
+2017-11-15  Alan Hayward  <alan.hayward@arm.com>
+
+	* Makefile.in: Update arch rules.
+	* configure.srv: Explicitly mark arch/ files.
+
+2017-11-13  Andreas Schwab  <schwab@suse.de>
+
+	* linux-m68k-low.c (m68k_supports_hardware_single_step): New
+	function.
+	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
+
+2017-11-06  Pedro Alves  <palves@redhat.com>
+
+	* config.in, configure: Regenerate.
+
+2017-10-27  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* target.c (struct thread_search): Remove.
+	(thread_search_callback): Remove.
+	(prepare_to_access_memory): Use for_each_thread instead of
+	find_inferior.  Inline code from thread_search_callback.
+
+2017-10-27  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* server.c (struct visit_actioned_threads_data): Remove.
+	(visit_actioned_threads): Change prototype to take arguments
+	directly.
+	(resume): Use find_thread instead of find_inferior.
+
+2017-10-27  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* server.c (queue_stop_reply_callback): Change prototype, return
+	void.
+	(find_status_pending_thread_callback): Remove.
+	(handle_status): Replace find_inferior with find_thread and
+	for_each_thread.
+
+2017-10-25  Alan Hayward  <alan.hayward@arm.com>
+
+	* linux-aarch64-low.c (aarch64_fill_gregset): Replace defines
+	with REGNO.
+	(aarch64_store_gregset): Likewise.
+	(aarch64_fill_fpregset): Likewise.
+	(aarch64_store_fpregset): Likewise.
+
+2017-10-21  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* gdbthread.h (find_thread, for_each_thread): New functions.
+	* inferiors.c (thread_of_pid): Remove.
+	(find_any_thread_of_pid): Use find_thread.
+	* linux-low.c (num_lwps): Use for_each_thread.
+
+2017-10-17  Yao Qi  <yao.qi@linaro.org>
+
+	* Makefile.in: Remove one rule.
+	* configure.srv: Rename aarch64-insn.o with arch/aarch64-insn.o.
+
+2017-10-17  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv: Rename arm-linux.o with arch/arm-linux.o.
+	Rename arm-get-next-pcs.o with arch/arm-get-next-pcs.o.
+
+2017-10-17  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv: Rename arm.o with arch/arm.o.
+
+2017-10-17  Yao Qi  <yao.qi@linaro.org>
+
+	* Makefile.in (CONFIG_SRC_SUBDIR): New variable.
+	(clean): Remove .o files in CONFIG_SRC_SUBDIR.
+	(distclean): Remove DEPDIR in CONFIG_SRC_SUBDIR.
+	(arch-i386.o, arch-amd64.o): Remove rules.
+	(arch/%.o): New rule.
+	Update POSTCOMPILE and COMPILE.pre.
+	* configure.ac: Invoke AC_CONFIG_COMMANDS.
+	* configure: Re-generated.
+	* configure.srv: Replace arch-i386.o with arch/i386.o.
+	Replace arch-amd64.o with arch/amd64.o.
+
+2017-10-16  Yao Qi  <yao.qi@linaro.org>
+
+	* configure: Regenerated.
+
+2017-10-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* inferiors.h: (struct inferior_list): Remove.
+	(struct inferior_list_entry); Remove.
+	(add_inferior_to_list, clear_inferior_list, one_inferior_p,
+	A_I_NEXT, ALL_INFERIORS_TYPE, ALL_INFERIORS, remove_inferior,
+	get_first_inferior): Remove.
+	(for_each_inferior, for_each_inferior_with_data, find_inferior,
+	find_inferior_id, find_inferior_in_random): Change signature.
+	* inferiors.c (all_threads): Change type to
+	std::list<thread_info *>.
+	(get_thread): Remove macro.
+	(find_inferior, find_inferior_id): Change signature, implement
+	using find_thread.
+	(find_inferior_in_random): Change signature, implement using
+	find_thread_in_random.
+	(for_each_inferior, for_each_inferior_with_data): Change
+	signature, implement using for_each_thread.
+	(add_inferior_to_list, remove_inferior): Remove.
+	(add_thread, get_first_thread, thread_of_pid,
+	find_any_thread_of_pid, free_one_thread, remove_thread): Update.
+	(get_first_inferior, one_inferior_p, clear_inferior_list):
+	Remove.
+	(clear_inferiors, get_thread_process): Update.
+	* gdbthread.h: Include <list>.
+	(struct thread_info) <entry>: Remove field.
+	<id>: New field.
+	(all_threads): Change type to std::list<thread_info *>.
+	(get_first_inferior): Add doc.
+	(find_thread, for_each_thread, find_thread_in_random): New
+	functions.
+	(current_ptid, pid_of, ptid_of, lwpid_of): Update.
+	* linux-arm-low.c (update_registers_callback): Update.
+	* linux-low.c (second_thread_of_pid_p): Update.
+	(kill_one_lwp_callback, linux_detach_lwp_callback,
+	delete_lwp_callback, status_pending_p_callback, same_lwp,
+	find_lwp_pid, num_lwps, iterate_over_lwps_filter,
+	iterate_over_lwps, not_stopped_callback,
+	resume_stopped_resumed_lwps, count_events_callback,
+	select_singlestep_lwp_callback, select_event_lwp_callback,
+	unsuspend_one_lwp, linux_wait_1, send_sigstop_callback,
+	suspend_and_send_sigstop_callback, wait_for_sigstop,
+	stuck_in_jump_pad_callback, move_out_of_jump_pad_callback,
+	lwp_running, linux_set_resume_request, resume_status_pending_p,
+	need_step_over_p, start_step_over, linux_resume_one_thread,
+	proceed_one_lwp, unsuspend_and_proceed_one_lwp,
+	reset_lwp_ptrace_options_callback): Update.
+	* linux-mips-low.c (update_watch_registers_callback): Update.
+	* regcache.c (regcache_invalidate_one, regcache_invalidate):
+	Update.
+	(free_register_cache_thread_one): Remove.
+	(regcache_release): Update.
+	* server.c (handle_btrace_enable_bts, handle_btrace_enable_pt,
+	handle_qxfer_threads_worker): Update.
+	(handle_query): Update, use list iterator.
+	(visit_actioned_threads, handle_pending_status,
+	queue_stop_reply_callback, gdb_wants_all_threads_stopped,
+	clear_pending_status_callback, set_pending_status_callback,
+	find_status_pending_thread_callback, handle_status,
+	process_serial_event): Update.
+	* target.c (thread_search_callback): Update.
+	* thread-db.c (thread_db_get_tls_address): Update.
+	* tracepoint.c (tracepoint_finished_step, tracepoint_was_hit):
+	Update.
+	* win32-i386-low.c (update_debug_registers_callback): Update.
+	* win32-low.c (delete_thread_info, child_delete_thread,
+	continue_one_thread, suspend_one_thread,
+	get_child_debug_event): Adjust.
+
+2017-10-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbthread.h (ptid_of, pid_of, lwpid_of): New functions.
+	* inferiors.h: Include <list>.
+	(struct process_info) <entry>: Remove field.
+	<pid>: New field.
+	(pid_of): Change macro to function.
+	(ptid_of, lwpid_of): Remove macro.
+	(all_processes): Change type to std::list<process_info *>.
+	(ALL_PROCESSES): Remove macro.
+	(for_each_process, find_process): New function.
+	* inferiors.c (all_processes): Change type to
+	std::list<process_info *>.
+	(find_thread_process): Adjust.
+	(add_process): Likewise.
+	(remove_process): Likewise.
+	(find_process_pid): Likewise.
+	(get_first_process): Likewise.
+	(started_inferior_callback): Remove.
+	(have_started_inferiors_p): Adjust.
+	(attached_inferior_callback): Remove.
+	(have_attached_inferiors_p): Adjust.
+	* linux-low.c (check_zombie_leaders): Likewise.
+	* linux-x86-low.c (x86_arch_setup_process_callback): Remove.
+	(x86_linux_update_xmltarget): Adjust.
+	* server.c (handle_query): Likewise.
+	(gdb_reattached_process): Remove.
+	(handle_status): Adjust.
+	(kill_inferior_callback): Likewise.
+	(detach_or_kill_inferior): Remove.
+	(print_started_pid): Likewise.
+	(print_attached_pid): Likewise.
+	(detach_or_kill_for_exit): Update.
+	(process_serial_event): Likewise.
+	* linux-arm-low.c (arm_new_fork): Likewise.
+
+2017-10-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dll.h: Include <list>.
+	(struct dll_info): Add constructor.
+	<entry>: Remove field.
+	(all_dlls): Change type to std::list<dll_info>.
+	* dll.c: Include <algorithm>.
+	(get_dll): Remove macro.
+	(all_dlls): Change type to std::list<dll_info *>.
+	(free_one_dll): Remove.
+	(match_dll): Likewise.
+	(loaded_dll): Adjust.
+	(unloaded_dll): Adjust to all_dlls type change, use
+	std::find_if.  Inline code from match_dll.
+	(clear_dlls): Adjust to all_dlls type change.
+	* server.c (emit_dll_description): Remove.
+	(handle_qxfer_libraries): Adjust to all_dlls type change,
+	integrate emit_dll_description's functionality.
+
+2017-10-12  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.h (struct linux_target_ops) <delete_process>: New
+	field.
+	* linux-low.c (linux_mourn): Call the_low_target.delete_process.
+	* linux-aarch64-low.c (aarch64_linux_delete_process): New.
+	(struct linux_target_ops): Add delete_process callback.
+	* linux-arm-low.c (arm_delete_process): New.
+	(struct linux_target_ops): Add delete_process callback.
+	* linux-bfin-low.c (struct linux_target_ops): Likewise.
+	* linux-crisv32-low.c (struct linux_target_ops): Likewise.
+	* linux-m32r-low.c (struct linux_target_ops): Likewise.
+	* linux-mips-low.c (mips_linux_delete_process): New.
+	(struct linux_target_ops): Add delete_process callback.
+	* linux-ppc-low.c (struct linux_target_ops): Likewise.
+	* linux-s390-low.c (struct linux_target_ops): Likewise.
+	* linux-sh-low.c (struct linux_target_ops): Likewise.
+	* linux-tic6x-low.c (struct linux_target_ops): Likewise.
+	* linux-tile-low.c (struct linux_target_ops): Likewise.
+	* linux-x86-low.c (x86_linux_delete_process): New.
+	(struct linux_target_ops): Add delete_process callback.
+	* linux-xtensa-low.c (struct linux_target_ops): Likewise.
+
+2017-10-12  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-aarch64-low.c (the_low_target): Add thread delete
+	callback.
+	* linux-arm-low.c (arm_delete_thread): New function.
+	(the_low_target): Add thread delete callback.
+	* linux-bfin-low.c (the_low_target): Likewise.
+	* linux-crisv32-low.c (the_low_target): Likewise.
+	* linux-low.c (delete_lwp): Invoke delete_thread callback if
+	set.
+	* linux-low.h (struct linux_target_ops) <delete_thread>: New
+	field.
+	* linux-m32r-low.c (the_low_target): Add thread delete callback.
+	* linux-mips-low.c (mips_linux_delete_thread): New function.
+	(the_low_target): Add thread delete callback.
+	* linux-ppc-low.c (the_low_target): Likewise.
+	* linux-s390-low.c (the_low_target): Likewise.
+	* linux-sh-low.c (the_low_target): Likewise.
+	* linux-tic6x-low.c (the_low_target): Likewise.
+	* linux-tile-low.c (the_low_target): Likewise.
+	* linux-x86-low.c (the_low_target): Likewise.
+	* linux-xtensa-low.c (the_low_target): Likewise.
+
+2017-10-06  Yuanhui Zhang  <asmwarrior@gmail.com>
+
+	* win32-low.c: Include "common-inferior.h".
+
+2017-10-04  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* inferiors.c (set_inferior_cwd): New function.
+	* server.c (handle_general_set): Handle QSetWorkingDir packet.
+	(handle_query): Inform that QSetWorkingDir is supported.
+	* win32-low.c (create_process): Pass the inferior's cwd to
+	CreateProcess.
+
+2017-10-04  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* inferiors.c (current_inferior_cwd): New global variable.
+	(get_inferior_cwd): New function.
+	* inferiors.h (struct process_info) <cwd>: New field.
+
+2017-10-04  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* Makefile.in (SFILES): Add $(srcdir)/common/gdb_tilde_expand.c.
+	(OBS): Add gdb_tilde_expand.o.
+
+2017-10-02  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* lynx-i386-low.c (lynx_i386_arch_setup): Call init_target_desc.
+	* nto-x86-low.c (nto_x86_arch_setup): Likewise.
+
+2017-09-29  Pedro Alves  <palves@redhat.com>
+
+	* ax.c (gdb_parse_agent_expr): Constify.
+	* ax.h (gdb_parse_agent_expr): Constify.
+	* mem-break.c (add_breakpoint_condition, add_breakpoint_commands):
+	Constify.
+	* mem-break.h (add_breakpoint_condition, add_breakpoint_commands): Constify.
+	* remote-utils.c (hex_or_minus_one, read_ptid): Constify.
+	* remote-utils.h (read_ptid): Constify.
+	* server.c (handle_qxfer_exec_file, handle_query, handle_v_cont)
+	(process_point_options, process_serial_event): Constify.
+	* tracepoint.c (add_tracepoint_action, cmd_qtdp, cmd_qtdpsrc)
+	(cmd_qtdv, cmd_qtenable_disable, cmd_qtro, cmd_qtframe, cmd_qtp)
+	(cmd_qtbuffer): Constify.
+
+2017-09-29  Pedro Alves  <palves@redhat.com>
+
+	* proc-service.c (ps_pdread): Return PS_ERR if reading memory
+	fails.
+
+2017-09-29  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (handle_extended_wait): Pass parent thread instead
+	of process to thread_db_notice_clone.
+	* linux-low.h (thread_db_notice_clone): Replace parent process
+	parameter with parent thread parameter.
+	* thread-db.c (find_one_thread): Add comment.
+	(thread_db_notice_clone): Replace parent process parameter with
+	parent thread parameter.  Temporarily switch to the parent thread.
+
+2017-09-26  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* gdbthread.h: Include "common-gdbthread.h".
+	* inferiors.c (switch_to_thread): Use "gdb_assert" instead of
+	"if" when validating the ptid.
+	* remote-utils.c: Include "gdbthread.h".
+	(prepare_resume_reply): Use "switch_to_thread".
+	* target.c (done_accessing_memory): Likewise.
+
+2017-09-25  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* configure.srv (s390*-*-linux*): Add s390-gs-linux64.o and
+	s390x-gs-linux64.o to srv_regobj.  Add s390-gs-linux64.xml,
+	s390x-gs-linux64.xml, s390-gs.xml, and s390-gsbc.xml to
+	srv_xmlfiles.  Add s390-gs-linux64-ipa.o and
+	s390x-gs-linux64-ipa.o to ipa_obj.
+	* linux-s390-low.c (HWCAP_S390_GS): New define.
+	(s390_fill_gs, s390_store_gs, s390_fill_gsbc, s390_store_gsbc):
+	New functions.
+	(s390_regsets): Add regsets for NT_S390_GS_CB and NT_S390_GS_BC.
+	(s390_arch_setup): Check for guarded-storage support and choose
+	appropriate tdesc.
+	(initialize_low_arch): Invoke init_registers_s390_gs_linux64 and
+	init_registers_s390x_gs_linux64.
+	* linux-s390-tdesc.h (enum s390_linux_tdesc) <S390_TDESC_GS>: New
+	enum value.
+	(init_registers_s390x_gs_linux64, tdesc_s390x_gs_linux64)
+	(init_registers_s390_gs_linux64, tdesc_s390_gs_linux64): Declare.
+
+2017-09-22  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* win32-i386-low.c (i386_arch_setup): Call init_target_desc.
+
+2017-09-21  Kevin Buettner  <kevinb@redhat.com>
+
+	* linux-low.h (struct lwp_info): Add new field, thread_handle.
+	(thread_db_thread_handle): Declare.
+	* linux-low.c (linux_target_ops): Initialize thread_handle.
+	* server.c (handle_qxfer_threads_worker): Add support for
+	"handle" attribute.
+	* target.h (struct target_ops): Add new function pointer,
+	thread_handle.
+	(target_thread_handle): Define.
+	* thread-db.c (find_one_thread, attach_thread): Set thread_handle
+	field in lwp.
+	(thread_db_thread_handle): New function.
+
+2017-09-21  Kevin Buettner  <kevinb@redhat.com>
+
+	* linux-low.c (handle_extended_wait): Call thread_db_notice_clone().
+	* linux-low.h (thread_db_notice_clone): Declare.
+	* thread-db.c (thread_db_notice_clone): New function.
+
+2017-09-21  Pedro Alves  <palves@redhat.com>
+
+	* server.c (gdb_read_memory, handle_status, process_serial_event)
+	(handle_serial_event, handle_target_event): Adjust to
+	set_desired_thread prototype change.
+	* target.c (set_desired_thread): Remove 'use_general' parameter
+	and adjust.
+	* target.h (set_desired_thread): Remove 'use_general' parameter.
+
+2017-09-20  Tom Tromey  <tom@tromey.com>
+
+	* target.c (target_terminal::terminal_state): Define.
+	(target_terminal::init): Rename from target_terminal_init.
+	(target_terminal::inferior): Rename from
+	target_terminal_inferior.
+	(target_terminal::ours): Rename from target_terminal_ours.
+	(target_terminal::ours_for_output, target_terminal::info): New.
+
+2017-09-16  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* server.c (accumulate_file_name_length): Remove.
+	(emit_dll_description): Adjust to std::string change.
+	(handle_qxfer_libraries): Use std::string to hold document.
+
+2017-09-16  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (linux_qxfer_libraries_svr4): Adjust to change of
+	return type of xml_escape_text.
+	* server.c (emit_dll_description): Likewise.
+
+2017-09-16  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* server.c (captured_main): Accept argument for --selftest.
+	Update run_tests call.
+	* linux-x86-tdesc-selftest.c (initialize_low_tdesc): Add names
+	when registering selftests.
+
+2017-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* regcache.c (get_thread_regcache): Update code to use "std::vector"
+	instead of "VEC" for "target_desc.reg_defs".
+	(regcache_cpy): Likewise.
+	(registers_to_string): Likewise.
+	(registers_from_string): Likewise.
+	(find_regno): Likewise.
+	(supply_regblock): Likewise.
+	(regcache_raw_read_unsigned): Likewise.
+	* tdesc.c (init_target_desc): Likewise.
+	(tdesc_create_reg): Likewise.
+	* tdesc.h: Remove declaration of "tdesc_reg_p".  Include <vector>.
+	(struct target_desc) <reg_defs>: Convert to "std::vector".
+	(target_desc): Do not initialize "reg_defs".
+	(~target_desc): Update code to use "std::vector" instead of "VEC"
+	for "target_desc.reg_defs".
+	(operator==): Likewise.
+
+2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* inferiors.h (thread_to_gdb_id): Remove.
+	* inferiors.c (thread_to_gdb_id): Remove.
+	* server.c (handle_qxfer_threads_worker, handle_query): Adjust.
+	* lynx-low.c (lynx_resume, lynx_wait_1, lynx_fetch_registers,
+	lynx_store_registers, lynx_read_memory, lynx_write_memory):
+	Likewise.
+	* nto-low.c (nto_fetch_registers, nto_store_registers,
+	nto_stopped_by_watchpoint, nto_stopped_data_address): Likewise.
+
+2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* inferiors.h (gdb_id_to_thread_id): Remove.
+	* inferiors.c (gdb_id_to_thread_id): Remove.
+	* server.c (process_serial_event): Adjust to gdb_id_to_thread_id
+	removal.  Move pid declaration closer to where it's used.
+
+2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* server.c (handle_detach): New function.
+	(process_serial_event): Move code out, call handle_detach.
+
+2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* server.c (require_running): Rename to ...
+	(require_running_or_return): ... this ...
+	(require_running_or_break): ... and this.
+	(handle_query, process_serial_event): Adjust.
+
+2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (linux_set_resume_request): Remove unused
+	variables.
+
+2017-09-15  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* server.c (first_thread_of): Remove.
+	(process_serial_event): Replace usage of first_thread_of with
+	find_any_thread_of_pid.
+	* tracepoint.c (same_process_p): Remove.
+	(gdb_agent_about_to_close): Replace usage of same_process_p with
+	find_any_thread_of_pid.
+	* linux-x86-low.c (same_process_callback): Remove.
+	(x86_arch_setup_process_callback): Replace usage of
+	same_process_callback with find_any_thread_of_pid.
+	* thread-db.c (any_thread_of): Remove.
+	(switch_to_process): Replace usage of any_thread_of with
+	find_any_thread_of_pid.
+	* inferiors.c (thread_pid_matches_callback): Remove.
+	(find_thread_process): Adjust to use find_any_thread_of_pid.
+
+2017-09-10  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* regcache.c (get_thread_regcache): Guard calls to "memset"
+	with "!VEC_empty".
+
+2017-09-10  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* linux-low.c (handle_extended_wait): Use
+	"allocate_target_description" instead of "XNEW".
+	* linux-x86-low.c (initialize_low_arch): Likewise.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv (srv_i386_regobj): Remove.
+	(srv_amd64_regobj): Remove.
+	(srv_regobj): Set it to "" for x86 non-linux targets.
+	* linux-x86-tdesc.c (i386_linux_read_description):
+	* lynx-i386-low.c: Include x86-xstate.h and arch/i386.h.
+	(init_registers_i386): Remove the declaration.
+	(tdesc_i386): Remove the declaration.
+	(lynx_i386_arch_setup): Call i386_create_target_description.
+	* nto-x86-low.c: Likewise.
+	* win32-i386-low.c [__x86_64__]: include arch/amd64.h.
+	[!__x86_64__]: include arch/i386.h.
+	(i386_arch_setup) [__x86_64__]: Call amd64_create_target_description.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv (srv_amd64_linux_xmlfiles): Remove
+	i386/amd64-XXX-linux from it.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv: Empty srv_amd64_linux_regobj if $development is
+	false.
+	(ipa_amd64_linux_regobj): Remove.
+	(ipa_x32_linux_regobj): Remove.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* Makefile.in (arch-amd64.o): New rule.
+	* configure.srv: Append arch-amd64.o.
+	* linux-amd64-ipa.c: Include common/x86-xstate.h.
+	(get_ipa_tdesc): Call amd64_linux_read_description.
+	(initialize_low_tracepoint): Don't call init_registers_x32_XXX
+	and init_registers_amd64_XXX.
+	* linux-x86-low.c (x86_linux_read_description): Call
+	amd64_linux_read_description.
+	(x86_get_ipa_tdesc_idx): Call amd64_get_ipa_tdesc_idx.
+	(initialize_low_arch): Don't call init_registers_x32_XXX and
+	init_registers_amd64_XXX.
+	* linux-x86-tdesc-selftest.c: Declare init_registers_amd64_XXX
+	and tdesc_amd64_XXX.
+	[__x86_64__] (amd64_tdesc_test): New function.
+	(initialize_low_tdesc) [__x86_64__]: Call init_registers_x32_XXX
+	and init_registers_amd64_XXX.
+	* linux-x86-tdesc.c: Include arch/amd64.h.
+	(xcr0_to_tdesc_idx): New function.
+	(i386_linux_read_description): New function.
+	(amd64_get_ipa_tdesc_idx): New function.
+	* linux-x86-tdesc.h (amd64_get_ipa_tdesc_idx): Declare.
+	(amd64_get_ipa_tdesc): Declare.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv (srv_i386_linux_xmlfiles): Remove
+	i386/i386-XXX-linux.xml from it.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv: Set srv_i386_linux_regobj empty if $development
+	is false.
+	* linux-i386-ipa.c (initialize_low_tracepoint): Don't call
+	initialize_low_tdesc.
+	* linux-x86-low.c (initialize_low_arch): Wrap initialize_low_tdesc
+	with #if initialize_low_tdesc.
+	* linux-x86-tdesc-selftest.c: New file.
+	* linux-x86-tdesc.c: Move code to linux-x86-tdesc-selftest.c.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* Makefile.in (arch-i386.o): New rule.
+	* configure.srv (i[34567]86-*-linux*): Add arch-i386.o.
+	(x86_64-*-linux*): Likewise.
+	* linux-x86-tdesc.c: Don't include ../features/i386/32bit-XXX.c,
+	include arch/i386.h.
+	(i386_linux_read_description): Remove code and call
+	i386_create_target_description.
+	* tdesc.c (allocate_target_description): New function.
+	* tdesc.h (set_tdesc_architecture): Remove declaration.
+	(set_tdesc_osabi): Likewise.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-x86-tdesc.c: Don't include <inttypes.h>.
+	(i386_linux_read_description) [!IN_PROCESS_AGENT]: Call
+	set_tdesc_architecture and set_tdesc_osabi.  Remove code setting
+	.xmltarget.
+	* server.c (get_features_xml): Call tdesc_get_features_xml.
+	* tdesc.c (set_tdesc_architecture): New function.
+	(set_tdesc_osabi): New function.
+	(tdesc_get_features_xml): New function.
+	(tdesc_create_feature): Add an argument.
+	* tdesc.h (struct target_desc) <features>: New field.
+	<arch, osabi>: New field.
+	(~target_desc): xfree features, arch, and osabi.
+	(target_desc::oerator==): Don't compare .xmltarget.
+	[!IN_PROCESS_AGENT] (set_tdesc_architecture): Declare.
+	(set_tdesc_osabi): Likewise.
+	(tdesc_get_features_xml): Likewise.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-x86-tdesc.c: Include selftest.h.
+	(i386_tdesc_test): New function.
+	(initialize_low_tdesc): Call selftests::register_test.
+	* tdesc.h: Include regdef.h.
+	(target_desc): Override operator == and !=.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv (srv_tgtobj): Append linux-x86-tdesc.o.
+	(ipa_obj): Likewise.
+	* linux-i386-ipa.c: Include common/x86-xstate.h
+	(get_ipa_tdesc): Call i386_linux_read_description.
+	(initialize_low_tracepoint): Don't call  init_registers_XXX
+	functions, call initialize_low_tdesc instead.
+	* linux-x86-low.c (x86_linux_read_description): Call
+	i386_linux_read_description.
+	(initialize_low_arch): Don't call init_registers_i386_XXX
+	functions, call initialize_low_tdesc.
+	* linux-x86-tdesc.c: New file.
+	* linux-x86-tdesc.h (x86_linux_tdesc): New X86_TDESC_LAST.
+	(i386_get_ipa_tdesc_idx): Declare.
+	(i386_get_ipa_tdesc): Declare.
+	(initialize_low_tdesc): Declare.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-x86-low.c (x86_get_ipa_tdesc_idx): Use X86_TDESC_MMX
+	instead of 0.
+
+2017-09-05  Yao Qi  <yao.qi@linaro.org>
+
+	* Makefile.in (IPA_OBJS): Add vec-ipa.o
+	* regcache.c (get_thread_regcache): Use VEC_length.
+	(init_register_cache): Likewise.
+	(regcache_cpy): Likewise.
+	(registers_to_string): Iterate reg_defs via VEC_iterate.
+	(find_regno): Likewise.
+	(find_register_by_number): Use VEC_index.
+	(register_size): Call find_register_by_number.
+	(register_data): Call find_register_by_number.
+	(supply_regblock): Use VEC_length.
+	(regcache_raw_read_unsigned): Likewise.
+	* tdesc.c (init_target_desc): Iterate reg_defs via
+	VEC_iterate.
+	(default_description): Update initializer.
+	(copy_target_description): Don't update field num_registers.
+	* tdesc.h (struct target_desc) <reg_defs>: Change it to VEC.
+	<num_registers>: Remove.
+
+2017-09-04  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* Makefile.in (.SECONDARY): Define target.
+
+2017-09-03  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (linux_wait_1): Adjust.
+	* server.c (queue_stop_reply_callback): Adjust.
+
+2017-08-31  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* server.c (handle_general_set): Handle QEnvironmentHexEncoded,
+	QEnvironmentUnset and QEnvironmentReset packets.
+	(handle_query): Inform remote that QEnvironmentHexEncoded,
+	QEnvironmentUnset and QEnvironmentReset are supported.
+
+2017-08-25  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* inferiors.h (inferior_target_data): Rename to ...
+	(thread_target_data): ... this.
+	(inferior_regcache_data): Rename to ...
+	(thread_regcache_data): ... this.
+	(set_inferior_regcache_data): Rename to ...
+	(set_thread_regcache_data): ... this.
+	* inferiors.c (inferior_target_data): Rename to ...
+	(thread_target_data): ... this.
+	(inferior_regcache_data): Rename to ...
+	(thread_regcache_data): ... this.
+	(set_inferior_regcache_data): Rename to ...
+	(set_thread_regcache_data): ... this.
+	(free_one_thread): Update.
+	* linux-low.h (get_thread_lwp): Update.
+	* regcache.c (get_thread_regcache): Update.
+	(regcache_invalidate_thread): Update.
+	(free_register_cache_thread): Update.
+	* win32-i386-low.c (update_debug_registers_callback): Update.
+	(win32_get_current_dr): Update.
+	* win32-low.c (thread_rec): Update.
+	(delete_thread_info): Update.
+	(continue_one_thread): Update.
+	(suspend_one_thread): Update.
+
+2017-08-24  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* inferiors.c (set_inferior_target_data): Remove.
+	* inferiors.h (set_inferior_target_data): Remove.
+
+2017-08-18  Yao Qi  <yao.qi@linaro.org>
+
+	* Makefile.in (OBS): Add selftest.o.
+	* configure.ac: AC_DEFINE GDB_SELF_TEST if $development.
+	* configure, config.in: Re-generated.
+	* server.c: Include common/sefltest.h.
+	(captured_main): Handle option --selftest.
+
+2017-08-09  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv (srv_i386_regobj): Remove i386-avx.o,
+	i386-avx-avx512.o, i386-avx-mpx-avx512-pku.o, i386-mpx.o,
+	i386-avx-mpx.o and i386-mmx.o.
+	(srv_amd64_regobj): Remove amd64-avx.o, amd64-avx-avx512.o,
+	amd64-avx-mpx-avx512-pku.o, amd64-mpx.o and amd64-avx-mpx.o.
+	(srv_i386_xmlfiles): Remove i386/i386-avx.xml,
+	i386/i386-avx-avx512.xml, i386/i386-avx-mpx-avx512-pku.xml,
+	i386/i386-mpx.xml, i386/i386-avx-mpx.xml and i386/i386-mmx.xml.
+	(srv_amd64_xmlfile):i386/amd64-avx.xml, i386/amd64-avx-avx512.xml,
+	i386/amd64-avx-mpx-avx512-pku.xml, i386/amd64-mpx.xml,
+	i386/amd64-avx-mpx.xml.
+
+2017-08-09  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv (srv_amd64_regobj): Remove x32.o, x32-avx.o
+	and x32-avx-avx512.o.
+	(srv_amd64_xmlfiles): Remove i386/x32.xml, i386/x32-avx.xml
+	i386/x32-avx-avx512.xml.
+
+2017-07-26  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* tracepoint.h (enum class fast_tpoint_collect_result): New
+	enumeration.
+	(fast_tracepoint_collecting): Change return type to
+	fast_tpoint_collect_result.
+	* tracepoint.c (fast_tracepoint_collecting): Likewise.
+	* linux-low.h: Include tracepoint.h.
+	(struct lwp_info) <collecting_fast_tracepoint>: Change type to
+	fast_tpoint_collect_result.
+	* linux-low.c (handle_tracepoints): Adjust.
+	(linux_fast_tracepoint_collecting): Change return type to
+	fast_tpoint_collect_result.
+	(maybe_move_out_of_jump_pad, linux_wait_for_event_filtered,
+	linux_wait_1, stuck_in_jump_pad_callback,
+	lwp_signal_can_be_delivered, linux_resume_one_lwp_throw,
+	proceed_one_lwp): Adjust to type change.
+
+2017-07-10  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-x86-low.c (x86_linux_read_description): Re-indent the code.
+
+2017-06-29  Yao Qi  <yao.qi@linaro.org>
+
+	* tdesc.h (struct target_desc) [IN_PROCESS_AGENT] <expedite_regs>:
+	Remove.
+	[IN_PROCESS_AGENT] <xmltarget>: Likewise.
+
+2017-06-20  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* Makefile.in (IPA_OBJS): Sort and format one item per line.
+
+2017-06-20  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* linux-low.c (linux_create_inferior): Adjust code to access the
+	environment information via 'gdb_environ' class.
+	* lynx-low.c (lynx_create_inferior): Likewise.
+	* server.c (our_environ): Make it an instance of 'gdb_environ'.
+	(get_environ): Return a pointer to 'our_environ'.
+	(captured_main): Initialize 'our_environ'.
+	* server.h (get_environ): Adjust prototype.
+	* spu-low.c (spu_create_inferior): Adjust code to access the
+	environment information via 'gdb_environ' class.
+
+2017-06-17  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (linux_read_memory, linux_write_memory): Remove
+	usage of "register" keyword.
+
+2017-06-17  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* configure: Re-generate.
+
+2017-06-17  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* configure: Re-generate.
+
+2017-06-17  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* Makefile.in (COMPILE.pre): Add "-x c++".
+
+2017-06-09  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* fork-child.c: Conditionally include <signal.h>.
+
+2017-06-07  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* server.c (handle_general_set): Handle new packet
+	"QStartupWithShell".
+	(handle_query): Add "QStartupWithShell" to the list of supported
+	packets.
+	(gdbserver_usage): Add help text explaining the
+	new "--startup-with-shell" and "--no-startup-with-shell" CLI
+	options.
+	(captured_main): Recognize and act upon the presence of the new
+	CLI options.
+
+2017-06-07  Sergio Durigan Junior  <sergiodj@redhat.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (SFILES): Add "nat/fork-inferior.o".
+	* configure: Regenerate.
+	* configure.srv (srv_linux_obj): Add "fork-child.o" and
+	"fork-inferior.o".
+	(i[34567]86-*-lynxos*): Likewise.
+	(spu*-*-*): Likewise.
+	* fork-child.c: New file.
+	* linux-low.c: Include "common-inferior.h", "nat/fork-inferior.h"
+	and "environ.h".
+	(linux_ptrace_fun): New function.
+	(linux_create_inferior): Adjust function prototype to reflect
+	change on "target.h".  Adjust function code to use
+	"fork_inferior".
+	(linux_request_interrupt): Delete "signal_pid".
+	* lynx-low.c: Include "common-inferior.h" and "nat/fork-inferior.h".
+	(lynx_ptrace_fun): New function.
+	(lynx_create_inferior): Adjust function prototype to reflect
+	change on "target.h".  Adjust function code to use
+	"fork_inferior".
+	* nto-low.c (nto_create_inferior): Adjust function prototype and
+	code to reflect change on "target.h".  Update comments.
+	* server.c: Include "common-inferior.h", "nat/fork-inferior.h",
+	"common-terminal.h" and "environ.h".
+	(terminal_fd): Moved to fork-child.c.
+	(old_foreground_pgrp): Likewise.
+	(restore_old_foreground_pgrp): Likewise.
+	(last_status): Make it global.
+	(last_ptid): Likewise.
+	(our_environ): New variable.
+	(startup_with_shell): Likewise.
+	(program_name): Likewise.
+	(program_argv): Rename to...
+	(program_args): ...this.
+	(wrapper_argv): New variable.
+	(start_inferior): Delete function.
+	(get_exec_wrapper): New function.
+	(get_exec_file): Likewise.
+	(get_environ): Likewise.
+	(prefork_hook): Likewise.
+	(post_fork_inferior): Likewise.
+	(postfork_hook): Likewise.
+	(postfork_child_hook): Likewise.
+	(handle_v_run): Update code to deal with arguments coming from the
+	remote host.  Update calls from "start_inferior" to
+	"create_inferior".
+	(captured_main): Likewise.  Initialize environment variable.  Call
+	"have_job_control".
+	* server.h (post_fork_inferior): New prototype.
+	(get_environ): Likewise.
+	(last_status): Declare.
+	(last_ptid): Likewise.
+	(signal_pid): Likewise.
+	* spu-low.c: Include "common-inferior.h" and "nat/fork-inferior.h".
+	(spu_ptrace_fun): New function.
+	(spu_create_inferior): Adjust function prototype to reflect change
+	on "target.h".  Adjust function code to use "fork_inferior".
+	* target.c (target_terminal_init): New function.
+	(target_terminal_inferior): Likewise.
+	(target_terminal_ours): Likewise.
+	* target.h: Include <vector>.
+	(struct target_ops) <create_inferior>: Update prototype.
+	(create_inferior): Update macro.
+	* utils.c (gdb_flush_out_err): New function.
+	* win32-low.c (win32_create_inferior): Adjust function prototype
+	and code to reflect change on "target.h".
+
+2017-06-07  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* inferiors.c (switch_to_thread): New function.
+
+2017-06-07  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* Makefile.in (SFILE): Add "common/job-control.c".
+	(OBS): Add "job-control.o".
+
+2017-05-06  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* Makefile: Remove "@host_makefile_frag@".
+
+2017-05-05  Pedro Alves  <palves@redhat.com>
+
+	* configure: Regenerate.
+
+2017-05-03  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* configure: Regenerate.
+
+2017-05-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-arm-low.c (arm_gdbserver_get_next_pcs): Adjust to
+	software_single_step change of return type to
+	std::vector<CORE_ADDR>.
+	* linux-low.c (install_software_single_step_breakpoints):
+	Likewise.
+	* linux-low.h (install_software_single_step_breakpoints):
+	Likewise.
+
+2017-04-12  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* remote-utils.c: Include "gdb_termios.h" instead of
+	"terminal.h".
+	* terminal.h: Delete file.
+
+2017-04-12  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* server.c: Include <vector>.
+	<program_argv, wrapper_argv>: Convert to std::vector.
+	(start_inferior): Rewrite function to use C++.
+	(handle_v_run): Likewise.  Update code that calculates the argv
+	based on the vRun packet; use C++.
+	(captured_main): Likewise.
+
+2017-04-06  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* server.c (handle_v_cont): Initialize thread_resume::thread
+	with null_ptid.
+
+2017-04-05  Pedro Alves  <palves@redhat.com>
+
+	* configure: Regenerate.
+
+2017-04-05  Pedro Alves  <palves@redhat.com>
+
+	* gdbreplay.c (sync_error): Constify.
+	* linux-x86-low.c (push_opcode): Constify.
+
+2017-04-05  Pedro Alves  <palves@redhat.com>
+
+	* win32-low.c (get_child_debug_event)
+	<CREATE_PROCESS_DEBUG_EVENT>: Don't report TARGET_WAITKIND_EXECD.
+	Report TARGET_WAITKIND_SPURIOUS instead.
+
+2017-04-05  Pedro Alves  <palves@redhat.com>
+
+	* remote-utils.c (remote_prepare, remote_open): Constify.
+	* remote-utils.h (remote_prepare, remote_open): Constify.
+	* server.c (captured_main): Constify 'port' handling.
+
+2017-04-04  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* Makefile.in (clean): Clear .deps.
+
+2017-03-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* .gitignore: Remove generated files, replace with wildcard.
+	* (clean): Replace removal of generated files with wildcard.
+	(version.c): Replace with...
+	(version-generated.c): ...this.
+	(xml-builtin.c): Replace with...
+	(xml-builtin-generated.c): ...this.
+	(%-ipa.o: %-generated.c, %.o: %-generated.c): New rules.
+	(%.c: *regformats*): Replace with...
+	(%-generated.c: *regformats*): ...this.
+
+2017-03-27  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* linux-xtensa-low.c (regnum::R_THREADPTR): New enum member.
+	(xtensa_fill_gregset): Call collect_register_by_name for
+	threadptr register.
+	(xtensa_store_gregset): Call supply_register_by_name for
+	threadptr register.
+
+2017-03-27  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* linux-xtensa-low.c (xtensa_fill_gregset): Call collect_register
+	for all registers in a0_regnum..a0_regnum + C0_NREGS range.
+	(xtensa_store_gregset): Call supply_register for all registers in
+	a0_regnum..a0_regnum + C0_NREGS range.
+
+2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (%-ipa.o: %-ipa.c): New rule.
+	(ax-ipa.o: ax.c): Remove.
+	(linux-i386-ipa.o: linux-i386-ipa.c): Remove.
+	(linux-amd64-ipa.o: linux-amd64-ipa.c): Remove.
+	(linux-aarch64-ipa.o: linux-aarch64-ipa.c): Remove.
+	(linux-s390-ipa.o: linux-s390-ipa.c): Remove.
+	(linux-ppc-ipa.o: linux-ppc-ipa.c): Remove.
+
+2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (%-ipa.o: ../common/%.c): New rule.
+	(print-utils-ipa.o: ../common/print-utils.c): Remove.
+	(rsp-low-ipa.o: ../common/rsp-low.c): Remove.
+	(errors-ipa.o: ../common/errors.c): Remove.
+	(format-ipa.o: ../common/format.c): Remove.
+	(common-utils-ipa.o: ../common/common-utils.c): Remove.
+
+2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (%-ipa.o: %.c): New rule.
+	(tracepoint-ipa.o: tracepoint.c): Remove.
+	(utils-ipa.o: utils.c): Remove.
+	(remote-utils-ipa.o: remote-utils.c): Remove.
+	(regcache-ipa.o: regcache.c): Remove.
+	(i386-linux-ipa.o: i386-linux.c): Remove.
+	(i386-mmx-linux-ipa.o: i386-mmx-linux.c): Remove.
+	(i386-avx-linux-ipa.o: i386-avx-linux.c): Remove.
+	(i386-mpx-linux-ipa.o: i386-mpx-linux.c): Remove.
+	(i386-avx-mpx-linux-ipa.o: i386-avx-mpx-linux.c): Remove.
+	(i386-avx-avx512-linux-ipa.o: i386-avx-avx512-linux.c): Remove.
+	(i386-avx-mpx-avx512-pku-linux-ipa.o: i386-avx-mpx-avx512-pku-linux.c): Remove.
+	(amd64-linux-ipa.o: amd64-linux.c): Remove.
+	(amd64-avx-linux-ipa.o: amd64-avx-linux.c): Remove.
+	(amd64-mpx-linux-ipa.o: amd64-mpx-linux.c): Remove.
+	(amd64-avx-mpx-linux-ipa.o: amd64-avx-mpx-linux.c): Remove.
+	(amd64-avx-avx512-linux-ipa.o: amd64-avx-avx512-linux.c): Remove.
+	(amd64-avx-mpx-avx512-pku-linux-ipa.o: amd64-avx-mpx-avx512-pku-linux.c): Remove.
+	(aarch64-ipa.o: aarch64.c): Remove.
+	(s390-linux32-ipa.o: s390-linux32.c): Remove.
+	(s390-linux32v1-ipa.o: s390-linux32v1.c): Remove.
+	(s390-linux32v2-ipa.o: s390-linux32v2.c): Remove.
+	(s390-linux64-ipa.o: s390-linux64.c): Remove.
+	(s390-linux64v1-ipa.o: s390-linux64v1.c): Remove.
+	(s390-linux64v2-ipa.o: s390-linux64v2.c): Remove.
+	(s390-te-linux64-ipa.o: s390-te-linux64.c): Remove.
+	(s390-vx-linux64-ipa.o: s390-vx-linux64.c): Remove.
+	(s390-tevx-linux64-ipa.o: s390-tevx-linux64.c): Remove.
+	(s390x-linux64-ipa.o: s390x-linux64.c): Remove.
+	(s390x-linux64v1-ipa.o: s390x-linux64v1.c): Remove.
+	(s390x-linux64v2-ipa.o: s390x-linux64v2.c): Remove.
+	(s390x-te-linux64-ipa.o: s390x-te-linux64.c): Remove.
+	(s390x-vx-linux64-ipa.o: s390x-vx-linux64.c): Remove.
+	(s390x-tevx-linux64-ipa.o: s390x-tevx-linux64.c): Remove.
+	(powerpc-32l-ipa.o: powerpc-32l.c): Remove.
+	(powerpc-altivec32l-ipa.o: powerpc-altivec32l.c): Remove.
+	(powerpc-cell32l-ipa.o: powerpc-cell32l.c): Remove.
+	(powerpc-vsx32l-ipa.o: powerpc-vsx32l.c): Remove.
+	(powerpc-isa205-32l-ipa.o: powerpc-isa205-32l.c): Remove.
+	(powerpc-isa205-altivec32l-ipa.o: powerpc-isa205-altivec32l.c): Remove.
+	(powerpc-isa205-vsx32l-ipa.o: powerpc-isa205-vsx32l.c): Remove.
+	(powerpc-e500l-ipa.o: powerpc-e500l.c): Remove.
+	(powerpc-64l-ipa.o: powerpc-64l.c): Remove.
+	(powerpc-altivec64l-ipa.o: powerpc-altivec64l.c): Remove.
+	(powerpc-cell64l-ipa.o: powerpc-cell64l.c): Remove.
+	(powerpc-vsx64l-ipa.o: powerpc-vsx64l.c): Remove.
+	(powerpc-isa205-64l-ipa.o: powerpc-isa205-64l.c): Remove.
+	(powerpc-isa205-altivec64l-ipa.o: powerpc-isa205-altivec64l.c): Remove.
+	(powerpc-isa205-vsx64l-ipa.o: powerpc-isa205-vsx64l.c): Remove.
+	(tdesc-ipa.o: tdesc.c): Remove.
+	(x32-linux-ipa.o: x32-linux.c): Remove.
+	(x32-avx-linux-ipa.o: x32-avx-linux.c): Remove.
+	(x32-avx512-linux-ipa.o: x32-avx512-linux.c): Remove.
+
+2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (%.o: ../arch/%.c): New rule.
+	(arm.o: ../arch/arm.c): Remove.
+	(arm-linux.o: ../arch/arm-linux.c): Remove.
+	(arm-get-next-pcs.o: ../arch/arm-get-next-pcs.c): Remove.
+	(aarch64-insn.o: ../arch/aarch64-insn.c): Remove.
+
+2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (%.o: ../nat/%.c): New rule.
+	(x86-dregs.o: ../nat/x86-dregs.c): Remove.
+	(amd64-linux-siginfo.o: ../nat/amd64-linux-siginfo.c): Remove.
+	(linux-btrace.o: ../nat/linux-btrace.c): Remove.
+	(linux-osdata.o: ../nat/linux-osdata.c): Remove.
+	(linux-procfs.o: ../nat/linux-procfs.c): Remove.
+	(linux-ptrace.o: ../nat/linux-ptrace.c): Remove.
+	(linux-waitpid.o: ../nat/linux-waitpid.c): Remove.
+	(mips-linux-watch.o: ../nat/mips-linux-watch.c): Remove.
+	(ppc-linux.o: ../nat/ppc-linux.c): Remove.
+	(linux-personality.o: ../nat/linux-personality.c): Remove.
+	(aarch64-linux-hw-point.o: ../nat/aarch64-linux-hw-point.c): Remove.
+	(aarch64-linux.o: ../nat/aarch64-linux.c): Remove.
+	(x86-linux.o: ../nat/x86-linux.c): Remove.
+	(x86-linux-dregs.o: ../nat/x86-linux-dregs.c): Remove.
+	(linux-namespaces.o: ../nat/linux-namespaces.c): Remove.
+
+2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (%.o: ../common/%.c): New rule.
+	(signals.o: ../common/signals.c): Remove.
+	(print-utils.o: ../common/print-utils.c): Remove.
+	(rsp-low.o: ../common/rsp-low.c): Remove.
+	(common-utils.o: ../common/common-utils.c): Remove.
+	(posix-strerror.o: ../common/posix-strerror.c): Remove.
+	(mingw-strerror.o: ../common/mingw-strerror.c): Remove.
+	(vec.o: ../common/vec.c): Remove.
+	(gdb_vecs.o: ../common/gdb_vecs.c): Remove.
+	(xml-utils.o: ../common/xml-utils.c): Remove.
+	(ptid.o: ../common/ptid.c): Remove.
+	(buffer.o: ../common/buffer.c): Remove.
+	(format.o: ../common/format.c): Remove.
+	(filestuff.o: ../common/filestuff.c): Remove.
+	(agent.o: ../common/agent.c): Remove.
+	(errors.o: ../common/errors.c): Remove.
+	(environ.o: ../common/environ.c): Remove.
+	(common-debug.o: ../common/common-debug.c): Remove.
+	(cleanups.o: ../common/cleanups.c): Remove.
+	(common-exceptions.o: ../common/common-exceptions.c): Remove.
+	(fileio.o: ../common/fileio.c): Remove.
+	(common-regcache.o: ../common/common-regcache.c): Remove.
+	(signals-state-save-restore.o: ../common/signals-state-save-restore.c): Remove.
+	(new-op.o: ../common/new-op.c): Remove.
+	(btrace-common.o: ../common/btrace-common.c): Remove.
+
+2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (%.o: ../target/%.c): New rule.
+	(waitstatus.o: ../target/waitstatus.c): Remove.
+
+2017-03-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in
+	(%.c: ../regformats/%.dat,
+	(%.c: ../regformats/arm/%.dat,
+	(%.c: ../regformats/i386/%.dat,
+	(%.c: ../regformats/rs6000/%.dat): New rules.
+	(aarch64.c): Remove.
+	(reg-arm.c): Remove.
+	(arm-with-iwmmxt.c): Remove.
+	(arm-with-vfpv2.c): Remove.
+	(arm-with-vfpv3.c): Remove.
+	(arm-with-neon.c): Remove.
+	(reg-bfin.c): Remove.
+	(reg-cris.c): Remove.
+	(reg-crisv32.c): Remove.
+	(i386.c): Remove.
+	(i386-linux.c): Remove.
+	(i386-avx.c): Remove.
+	(i386-avx-linux.c): Remove.
+	(i386-avx-avx512.c): Remove.
+	(i386-avx-avx512-linux.c): Remove.
+	(i386-mpx.c): Remove.
+	(i386-mpx-linux.c): Remove.
+	(i386-avx-mpx-avx512-pku.c): Remove.
+	(i386-avx-mpx-avx512-pku-linux.c): Remove.
+	(i386-avx-mpx.c): Remove.
+	(i386-avx-mpx-linux.c): Remove.
+	(i386-mmx.c): Remove.
+	(i386-mmx-linux.c): Remove.
+	(reg-ia64.c): Remove.
+	(reg-m32r.c): Remove.
+	(reg-m68k.c): Remove.
+	(reg-cf.c): Remove.
+	(mips-linux.c): Remove.
+	(mips-dsp-linux.c): Remove.
+	(mips64-linux.c): Remove.
+	(mips64-dsp-linux.c): Remove.
+	(nios2-linux.c): Remove.
+	(powerpc-32.c): Remove.
+	(powerpc-32l.c): Remove.
+	(powerpc-altivec32l.c): Remove.
+	(powerpc-cell32l.c): Remove.
+	(powerpc-vsx32l.c): Remove.
+	(powerpc-isa205-32l.c): Remove.
+	(powerpc-isa205-altivec32l.c): Remove.
+	(powerpc-isa205-vsx32l.c): Remove.
+	(powerpc-e500l.c): Remove.
+	(powerpc-64l.c): Remove.
+	(powerpc-altivec64l.c): Remove.
+	(powerpc-cell64l.c): Remove.
+	(powerpc-vsx64l.c): Remove.
+	(powerpc-isa205-64l.c): Remove.
+	(powerpc-isa205-altivec64l.c): Remove.
+	(powerpc-isa205-vsx64l.c): Remove.
+	(s390-linux32.c): Remove.
+	(s390-linux32v1.c): Remove.
+	(s390-linux32v2.c): Remove.
+	(s390-linux64.c): Remove.
+	(s390-linux64v1.c): Remove.
+	(s390-linux64v2.c): Remove.
+	(s390-te-linux64.c): Remove.
+	(s390-vx-linux64.c): Remove.
+	(s390-tevx-linux64.c): Remove.
+	(s390x-linux64.c): Remove.
+	(s390x-linux64v1.c): Remove.
+	(s390x-linux64v2.c): Remove.
+	(s390x-te-linux64.c): Remove.
+	(s390x-vx-linux64.c): Remove.
+	(s390x-tevx-linux64.c): Remove.
+	(tic6x-c64xp-linux.c): Remove.
+	(tic6x-c64x-linux.c): Remove.
+	(tic6x-c62x-linux.c): Remove.
+	(reg-sh.c): Remove.
+	(reg-sparc64.c): Remove.
+	(reg-spu.c): Remove.
+	(amd64.c): Remove.
+	(amd64-linux.c): Remove.
+	(amd64-avx.c): Remove.
+	(amd64-avx-linux.c): Remove.
+	(amd64-avx-avx512.c): Remove.
+	(amd64-avx-avx512-linux.c): Remove.
+	(amd64-mpx.c): Remove.
+	(amd64-mpx-linux.c): Remove.
+	(amd64-avx-mpx-avx512-pku.c): Remove.
+	(amd64-avx-mpx-avx512-pku-linux.c): Remove.
+	(amd64-avx-mpx.c): Remove.
+	(amd64-avx-mpx-linux.c): Remove.
+	(x32.c): Remove.
+	(x32-linux.c): Remove.
+	(x32-avx.c): Remove.
+	(x32-avx-linux.c): Remove.
+	(x32-avx-avx512.c): Remove.
+	(x32-avx-avx512-linux.c): Remove.
+	(reg-xtensa.c): Remove.
+	(reg-tilegx.c): Remove.
+	(reg-tilegx32.c): Remove.
+
+2017-03-07  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* Makefile.in (SFILES): Add "common/environ.c".
+	(OBJS): Add "common/environ.h".
+
+2017-01-27  Walfred Tedeschi  <walfred.tedeschi@intel.com>
+
+	* configure.ac: Check if the fs_base and gs_base members of
+	`struct user_regs_struct' exist.
+	* config.in: Regenerated.
+	* configure: Likewise.
+
+2017-01-09  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-aarch32-low.c (arm_breakpoint_kind_from_pc): Use
+	target_read_memory.
+	* linux-arm-low.c (get_next_pcs_read_memory_unsigned_integer): Likewise.
+	(get_next_pcs_syscall_next_pc): Likewise.
+
+2016-12-23  Luis Machado  <lgustavo@codesourcery.com>
+
+	* win32-i386-low.c: Fix incorrect reference to a couple source files.
+	* nto-x86-low.c: Likewise.
+
+2016-11-30  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Include disable-implicit-rules.mk.
+
+2016-11-23  Pedro Alves  <palves@redhat.com>
+
+	* debug.c: Include <chrono> instead of "gdb_sys_time.h".
+	(debug_vprintf): Use std::chrono::steady_clock instead of
+	gettimeofday.  Use '.' instead of ':'.
+	* tracepoint.c: Include <chrono> instead of "gdb_sys_time.h".
+	(get_timestamp): Use std::chrono::steady_clock instead of
+	gettimeofday.
+
+2016-11-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Fix whitespace formatting.
+
+2016-11-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (SFILES, OBS): Flatten list and order
+	alphabetically.
+
+2016-11-23  Pedro Alves  <palves@redhat.com>
+
+	* event-loop.c (handle_file_event): Use warning.
+	* linux-low.c (linux_resume_one_lwp_throw): Use warning.
+	* mem-break.c (add_breakpoint_condition, add_breakpoint_commands):
+	Use warning.
+
+2016-11-23  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (check_zombie_leaders): Use debug_printf for debug
+	output.
+	* notif.c (handle_notif_ack, notif_event_enque): Likewise.
+	* remote-utils.c (putpkt_binary_1, readchar, getpkt): Use
+	debug_printf and debug_flush for debug output.
+	* server.c (handle_general_set): Likewise.
+	* thread-db.c (try_thread_db_load): Use debug_printf for debug
+	output.
+
+2016-11-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (.c.o): Replace rule with ...
+	(%.o: %.c): ... this one.
+
+2016-11-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in: Remove @GMAKE_TRUE@ prefixes and removes lines
+	prefixed with @GMAKE_FALSE@.  Update comment related to non-GNU
+	make.
+	* configure.ac: Remove checks for the make program.
+	* configure: Re-generate.
+
+2016-10-28  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (CXX_DIALECT): Get from configure.
+	(COMPILE.pre, CC_LD): Append $(CXX_DIALECT).
+	* acinclude.m4: Include ../ax_cxx_compile_stdcxx.m4.
+	* configure.ac: Call AX_CXX_COMPILE_STDCXX.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
+2016-10-27  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_supports_range_stepping): Return true if
+	can_software_single_step return true.
+
+2016-10-27  Yao Qi  <yao.qi@linaro.org>
+
+	* inferiors.c (find_inferior_in_random): New function.
+	* inferiors.h (find_inferior_in_random): Declare.
+	* linux-low.c (linux_wait_for_event_filtered): Call
+	find_inferior_in_random instead of find_inferior.
+
+2016-10-27  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_wait_1): If single-step breakpoints are
+	inserted, remove them.
+
+2016-10-26  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (handle_extended_wait): Link parent/child fork
+	threads.
+	(linux_wait_1): Unlink them.
+	(linux_set_resume_request): Ignore resume requests for
+	already-resumed and unhandled fork child threads.
+	* linux-low.h (struct lwp_info) <fork_relative>: New field.
+	* server.c (in_queued_stop_replies_ptid, in_queued_stop_replies):
+	New functions.
+	(handle_v_requests) <vCont>: Don't call require_running.
+	* server.h (in_queued_stop_replies): New declaration.
+
+2016-10-24  Yao Qi  <yao.qi@linaro.org>
+
+	PR server/20733
+	* linux-aarch64-low.c (append_insns): Cast the return value to
+	'uint32_t *'.
+
+2016-10-10  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch32-low.c (enum arm_breakpoint_kinds): Remove.
+
+2016-10-06  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* target.c (target_supports_multi_process): New function, moved
+	from...
+	* target.h (target_supports_multi_process): ... here.  Remove
+	macro.
+
+2016-10-05  Tom Tromey  <tom@tromey.com>
+
+	PR remote/20655:
+	* tracepoint.c (handle_tracepoint_bkpts): Check
+	ipa_error_tracepoint, not ipa_stopping_tracepoint.
+
+2016-10-05  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv: Update the path of arm-*.xml files.
+
+2016-10-05  Terry Guo  <terry.guo@arm.com>
+	    Yao Qi  <yao.qi@linaro.org>
+
+	* Makefile.in: Adjust the path of rules.
+	* configure.srv: Update the path of xml files.
+	* regformats/arm-with-iwmmxt.dat: Regenerated.
+	* regformats/arm-with-neon.dat: Likewise.
+	* regformats/arm-with-vfpv2.dat: Likewise.
+	* regformats/arm-with-vfpv3.dat Likewise.
+
+2016-09-30  Yao Qi  <yao.qi@linaro.org>
+
+	PR gdbserver/20627
+	* target.c (target_stop_and_wait): Don't call
+	target_continue_no_signal, use resume_stop instead.
+
+2016-09-26  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_wait_1): Call debug_exit.
+
+2016-09-23  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (SFILES): Add common/new-op.c.
+	(OBS): Add common/new-op.o.
+	(new-op.o): New rule.
+
+2016-09-21  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* .gitinore: Ignore more files.
+
+2016-09-21  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch32-low.c (arm_fill_gregset): Keep bits 20 to
+	23.
+
+2016-09-19  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* server.c (start_inferior): Call target_mourn_inferior instead of
+	mourn_inferior; pass ptid_t argument to it.
+	(resume): Likewise.
+	(handle_target_event): Likewise.
+	* target.c (target_mourn_inferior): New function.
+	* target.h (mourn_inferior): Delete macro.
+
+2016-09-16  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-low.c (lwp_is_stepping): New function.
+
+2016-09-06  Carl Love  <cel@us.ibm.com>
+
+	* server.c (start_inferior):  Fixed comment, requested comment change
+	didn't get updated correctly.  Removed reference to ptrace () call as
+	it is only true on Linux systems.
+
+2016-09-06  Carl Love  <cel@us.ibm.com>
+
+	* server.c (start_inferior):  Do not call
+	function target_post_create_inferior () if the
+	inferior process has already exited.
+
+2016-09-05  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (COMPILER, COMPILER_CFLAGS): Remove.
+	(COMPILE.pre, CC_LD): Use CXX directly.
+	(INTERNAL_CFLAGS_BASE): Use CXXFLAGS directly.
+	* acinclude.m4: Don't include build-with-cxx.m4.
+	* configure.ac: Remove GDB_AC_BUILD_WITH_CXX call.
+	* configure: Regenerate.
+
+2016-09-02  Akash Trehan  <akash.trehan123@gmail.com>
+
+	PR gdb/19495
+	* remote-utils.c (relocate_instruction): Remove redundant strcpy()
+	call writing data to own_buf.
+
+2016-09-01  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* target.c (mywait): Call target_wait instead of
+	the_target->wait.
+	(target_wait): New function.
+
+2016-09-01  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* server.c (start_inferior): New variable 'ptid'.  Replace calls
+	to the_target->resume by target_continue{,_no_signal}, depending
+	on the case.
+	* target.c (target_stop_and_wait): Call target_continue_no_signal
+	instead of the_target->resume.
+	(target_continue): New function.
+
+2016-08-31  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-low.c (linux_wait_1): Move event switch after unsuspend_lwps.
+
+2016-08-25  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+
+	PR server/20491
+	* gdb_proc_service.h (ps_get_thread_area): Remove const from struct
+	ps_prochandle.
+	* linux-aarch64-low.c (ps_get_thread_area): Likewise.
+	* linux-arm-low.c (ps_get_thread_area): Likewise.
+	* linux-crisv32-low.c (ps_get_thread_area): Likewise.
+	* linux-m68k-low.c (ps_get_thread_area): Likewise.
+	* linux-mips-low.c (ps_get_thread_area): Likewise.
+	* linux-nios2-low.c (ps_get_thread_area): Likewise.
+	* linux-tic6x-low.c (ps_get_thread_area): Likewise.
+	* linux-x86-low.c (ps_get_thread_area): Likewise.
+	* linux-xtensa-low.c (ps_get_thread_area): Likewise.
+
+2016-08-19  Pedro Alves  <palves@redhat.com>
+
+	* linux-x86-low.c (amd64_emit_call): Emit missing call opcode.
+
+2016-08-19  Pedro Alves  <palves@redhat.com>
+
+	* linux-x86-low.c (amd64_install_fast_tracepoint_jump_pad): Fix
+	comment.  Use memcpy instead of casting through unsigned long.
+
+2016-08-19  Pedro Alves  <palves@redhat.com>
+
+	* linux-amd64-ipa.c (alloc_jump_pad_buffer) [__ILP32__]: Try
+	allocating around 0x80000000.
+
+2016-08-19  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/20415
+	* Makefile.in (x32-linux-ipa.o, x32-avx-linux-ipa.o)
+	(x32-avx512-linux-ipa.o): New rules.
+	* configure.ac (x86_64-*-linux*): New x32 check.
+	* configure.srv (ipa_x32_linux_regobj): New.
+	(x86_64-*-linux*): Use $ipa_x32_linux_regobj if building for x32.
+	* linux-amd64-ipa.c (get_ipa_tdesc) [__ILP32__]: Return x32
+	descriptions.
+	(initialize_low_tracepoint) [__ILP32__]: Initialize x32
+	descriptions.
+	* configure: Regenerate.
+
+2016-08-09  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/18653
+	* Makefile.in (OBS): Add signals-state-save-restore.o.
+	(signals-state-save-restore.o): New rule.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* linux-low.c: Include "signals-state-save-restore.h".
+	(linux_create_inferior): Call
+	restore_original_signals_state.
+	* server.c: Include "dispositions-save-restore.h".
+	(captured_main): Call save_original_signals_state.
+
+2016-08-05  Pedro Alves  <palves@redhat.com>
+
+	* configure: Regenerate.
+
+2016-08-04  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (regsets_fetch_inferior_registers): Check
+	errno is ESRCH or not.
+
+2016-08-02  Yao Qi  <yao.qi@linaro.org>
+
+	* thread-db.c (struct thread_db) <td_ta_event_getmsg_p>: Remove.
+	<td_ta_set_event_p, td_ta_event_addr_p>: Remove.
+	(thread_db_load_search): Update.
+	(try_thread_db_load_1): Don't look for td_ta_event_addr,
+	td_ta_set_event and td_ta_event_getmsg.
+
+2016-07-26  Pedro Alves  <palves@redhat.com>
+
+	PR server/20414
+	* linux-x86-low.c (x86_get_pc, x86_set_pc): Use uint64_t instead
+	of unsigned long for 64-bit registers and use uint32_t instead of
+	unsigned int for 32-bit registers.
+
+2016-07-26  Pedro Alves  <palves@redhat.com>
+
+	* linux-x86-low.c (x86_siginfo_fixup): Rename 'native' parameter
+	to 'ptrace'.
+
+2016-07-21  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+
+2016-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* mem-break.c (find_gdb_breakpoint): Cast bp to
+	'struct gdb_breakpoint *' rather than 'gdb_breakpoint *'.
+
+2016-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* server.c (handle_v_requests): Support s and S actions
+	if target_supports_software_single_step return true.
+
+2016-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (resume_stopped_resumed_lwps): If resume request
+	is resume_step, call maybe_hw_step.
+	(linux_wait_1): Stop all threads, remove reinsert breakpoints,
+	and unstop them.
+	(linux_resume_one_lwp_throw): Don't assert the thread has reinsert
+	breakpoints or not.
+	(proceed_one_lwp): If resume request is resume_step, install
+	reinsert breakpoints and call maybe_hw_step.
+
+2016-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (proceed_one_lwp): Declare.
+	(linux_resume_one_thread): Remove local variable 'step'.
+	Lift code enqueue signal.  Call proceed_one_lwp instead of
+	linux_resume_one_lwp.
+
+2016-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_resume_one_thread): Call
+	enqueue_pending_signal.
+
+2016-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* gdbthread.h (make_cleanup_restore_current_thread): Declare.
+	* inferiors.c (do_restore_current_thread_cleanup): New function.
+	(make_cleanup_restore_current_thread): Likewise.
+	* linux-low.c (install_software_single_step_breakpoints): Call
+	make_cleanup_restore_current_thread.  Switch current_thread to
+	thread.
+
+2016-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* mem-break.c (struct reinsert_breakpoint) <ptid>: New field.
+	(set_reinsert_breakpoint): New parameter ptid.  Callers updated.
+	(clone_one_breakpoint): Likewise.
+	(delete_reinsert_breakpoints): Change parameter to thread.
+	Callers updated.
+	(has_reinsert_breakpoints): Likewise.
+	(uninsert_reinsert_breakpoints): Likewise.
+	(reinsert_reinsert_breakpoints): Likewise.
+	* mem-break.h (set_reinsert_breakpoint): Update declaration.
+	(delete_reinsert_breakpoints): Likewise.
+	(reinsert_reinsert_breakpoints): Likewise.
+	(uninsert_reinsert_breakpoints): Likewise.
+	(has_reinsert_breakpoints): Likewise.
+
+2016-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* inferiors.c (get_thread_process): Make parameter const.
+	* inferiors.h (get_thread_process): Update declaration.
+	* mem-break.c (clone_all_breakpoints): Remove all parameters.
+	Add new parameters child_thread and parent_thread.  Callers
+	updated.
+	* mem-break.h (clone_all_breakpoints): Update declaration.
+
+2016-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* mem-break.c (struct breakpoint) <cond_list>: Remove.
+	<command_list, handler>: Remove.
+	(struct gdb_breakpoint): New.
+	(struct other_breakpoint): New.
+	(struct reinsert_breakpoint): New.
+	(is_gdb_breakpoint): New function.
+	(any_persistent_commands): Update command_list if
+	is_gdb_breakpoint returns true.
+	(set_breakpoint): Create breakpoints according to their types.
+	(find_gdb_breakpoint): Return 'struct gdb_breakpoint *'.
+	(set_gdb_breakpoint_1): Likewise.
+	(set_gdb_breakpoint): Likewise.
+	(clear_breakpoint_conditions): Change parameter type to
+	'struct gdb_breakpoint *'.
+	(clear_breakpoint_commands): Likewise.
+	(clear_breakpoint_conditions_and_commands): Likewise.
+	(add_condition_to_breakpoint): Likewise.
+	(add_breakpoint_condition): Likewise.
+	(add_commands_to_breakpoint): Likewise.
+	(check_breakpoints): Check other_breakpoint.
+	(clone_one_breakpoint): Clone breakpopint according to its type.
+	* mem-break.h (struct gdb_breakpoint): Declare.
+	(set_gdb_breakpoint): Update declaration.
+	(clear_breakpoint_conditions_and_commands): Likewise.
+	(add_breakpoint_condition): Likewise.
+	(add_breakpoint_commands): Likewise.
+	* server.c (process_point_options): Change parameter type to
+	'struct gdb_breakpoint *'.
+
+2016-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* mem-break.c (set_breakpoint_at): Rename it to ...
+	(set_breakpoint_type_at): ... it.
+	(set_breakpoint_at): Call set_breakpoint_type_at.
+	(set_reinsert_breakpoint): Call set_breakpoint_type_at.
+	* mem-break.h (set_breakpoint_at): Update comments.
+
+2016-07-12  Chung-Lin Tang  <cltang@codesourcery.com>
+
+	* linux-nios2-low.c (nios2_fill_gregset): Add type cast
+	to buf parameter.
+	(nios2_store_gregset): Likewise.
+
+2016-07-01  Pedro Alves  <palves@redhat.com>
+	    Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-low.c: Change interface to take the target lwp_info
+	pointer directly and return void.  Handle detaching from a zombie
+	thread.
+	(linux_detach_lwp_callback): New function.
+	(linux_detach): Detach from the leader thread after detaching from
+	the clone threads.
+
+2016-06-28  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_ftrace_insn_reloc_b): Use int64_t
+	for variable new_offset.
+	(aarch64_ftrace_insn_reloc_b_cond): Likewise.
+	(aarch64_ftrace_insn_reloc_cb): Likewise.
+	(aarch64_ftrace_insn_reloc_tb): Likewise.
+	(aarch64_install_fast_tracepoint_jump_pad): Likewise.  Use
+	PRIx64 instead of PRIx32.
+
+2016-06-28  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c (arm_get_syscall_trapinfo): New function.
+	(the_low_target): Install arm_get_syscall_trapinfo.
+
+2016-06-28  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_get_syscall_trapinfo): New
+	function.
+	(the_low_target): Install aarch64_get_syscall_trapinfo.
+
+2016-06-28  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (get_syscall_trapinfo): Remove parameter sysret.
+	Callers updated.
+	* linux-low.h (struct linux_target_ops) <get_syscall_trapinfo>:
+	Remove parameter sysno.
+	* linux-x86-low.c (x86_get_syscall_trapinfo): Remove parameter
+	sysret.
+
+2016-06-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-s390-low.c (s390_emit_eq_goto): Mark function static.
+	(s390_emit_ne_goto): Likewise.
+	(s390_emit_lt_goto): Likewise.
+	(s390_emit_le_goto): Likewise.
+	(s390_emit_gt_goto): Likewise.
+	(s390_emit_ge_goto): Likewise.
+	(s390x_emit_eq_goto): Likewise.
+	(s390x_emit_ne_goto): Likewise.
+	(s390x_emit_lt_goto): Likewise.
+	(s390x_emit_le_goto): Likewise.
+	(s390x_emit_gt_goto): Likewise.
+	(s390x_emit_ge_goto): Likewise.
+	(s390_emit_ops_impl): Mark variable static.
+	(s390x_emit_ops): Likewise.
+
+2016-06-17  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (handle_extended_wait): Call
+	uninsert_reinsert_breakpoints for the parent process.  Remove
+	reinsert breakpoints from the child process.  Reinsert them to
+	the parent process when vfork is done.
+	* mem-break.c (uninsert_reinsert_breakpoints): New function.
+	(reinsert_reinsert_breakpoints): New function.
+	* mem-break.h (uninsert_reinsert_breakpoints): Declare
+	(reinsert_reinsert_breakpoints): Declare.
+
+2016-06-17  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (handle_extended_wait): If the parent is doing
+	step-over, remove the reinsert breakpoints from the forked child.
+
+2016-06-17  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (unsuspend_all_lwps): Declare.
+	(linux_low_filter_event): If thread exited, call finish_step_over.
+	If step-over is finished, unsuspend other threads.
+
+2016-06-17  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_resume_one_lwp_throw): Assert
+	has_reinsert_breakpoints returns false.
+	* mem-break.c (delete_disabled_breakpoints): Assert
+	bp type isn't reinsert_breakpoint.
+
+2016-06-17  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (maybe_hw_step): New function.
+	(linux_resume_one_lwp_throw): Call maybe_hw_step.
+	(finish_step_over): Switch current_thread to lwp temporarily,
+	and assert has_reinsert_breakpoints returns true.
+	(proceed_one_lwp): Call maybe_hw_step.
+	* mem-break.c (has_reinsert_breakpoints): New function.
+	* mem-break.h (has_reinsert_breakpoints): Declare.
+
+2016-06-02  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* win32-low.c (win32_create_inferior): Add pointer casts for C++.
+
+2016-05-17  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_stabilize_threads): Call unsuspend_all_lwps
+	instead of find_inferior.
+
+2016-05-05  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c (get_next_pcs_read_memory_unsigned_integer):
+	Initialize res to zero.
+
+2016-05-05  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c (arm_sigreturn_next_pc): Change type of cpsr
+	to uint32_t.
+
+2016-05-04  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+	* spu-low.c (fetch_ppc_register): Cast PowerPC-Linux-specific value
+	used as first ptrace argument to PTRACE_TYPE_ARG1 for C++.
+	(fetch_ppc_memory_1, store_ppc_memory_1): Likewise.
+
+2016-04-28  Par Olsson  <par.olsson@windriver.com>
+	    Simon Marchi  <simon.marchi@ericsson.com>
+
+	* tracepoint.c (write_inferior_int8): New function.
+	(cmd_qtenable_disable): Write enable flag using
+	write_inferior_int8.
+
+2016-04-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (lwp_signal_can_be_delivered): Adjust.
+	(need_step_over_p): Return zero if the LWP has pending signals
+	can be delivered on software single step target.
+
+2016-04-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (reinsert_raw_breakpoint): If bp->inserted is true
+	return instead of error.
+
+2016-04-22  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch32-low.c (arm_store_gregset): Clear CPSR bits 20
+	to 23.
+
+2016-04-22  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (lwp_signal_can_be_delivered): Don't deliver
+	signal when stepping over breakpoint with software single
+	step.
+
+2016-04-21  Pedro Alves  <palves@redhat.com>
+
+	* linux-s390-low.c (s390_collect_ptrace_register)
+	(s390_supply_ptrace_register, s390_get_hwcap): Use gdb_byte * and
+	add casts.
+	(s390_check_regset): Use void * instead of gdb_byte *.
+
+2016-04-20  Pedro Alves  <palves@redhat.com>
+
+	* configure: Renegerate.
+
+2016-04-20  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch32-low.c: Include "arch/arm-linux.h".
+	(arm_fill_gregset): Use ARM_CPSR_GREGNUM rather than magic
+	number 16.
+	(arm_store_gregset): Likewise.
+
+2016-04-16  Walfred Tedeschi  <walfred.tedeschi@intel.com>
+
+	* Makefile.in (clean): Add removal for i386-avx-mpx.c,
+	i386-avx-mpx-linux.c, amd64-avx-mpx.c and amd64-avx-mpx-linux.c.
+	(i386-avx-mpx.c, i386-avx-mpx-linux.c, amd64-avx-mpx.c)
+	(amd64-avx-mpx-linux.c): New rules.
+	(amd64-avx-mpx-linux-ipa.o, i386-avx-mpx-linux-ipa.o): New rule.
+	* configure.srv (srv_i386_regobj): Add i386-avx-mpx.o.
+	(srv_i386_linux_regobj): Add i386-avx-mpx-linux.o.
+	(srv_amd64_regobj): Add amd64-avx-mpx.o.
+	(srv_amd64_linux_regobj): Add amd64-avx-mpx-linux.o.
+	(srv_i386_xmlfiles): Add i386/i386-avx-mpx.xml.
+	(srv_amd64_xmlfiles): Add i386/amd64-avx-mpx.xml.
+	(srv_i386_linux_xmlfiles): Add i386/i386-avx-mpx-linux.xml.
+	(srv_amd64_linux_xmlfiles): Add i386/amd64-avx-mpx-linux.xml.
+	(ipa_i386_linux_regobj): Add i386-avx-mpx-linux-ipa.o.
+	(ipa_amd64_linux_regobj): Add amd64-avx-mpx-linux-ipa.o.
+	* linux-x86-low.c (x86_linux_read_description): Add case for
+	X86_XSTATE_AVX_MPX_MASK.
+	(x86_get_ipa_tdesc_idx): Add cases for avx_mpx.
+	(initialize_low_arch): Call init_registers_amd64_avx_mpx_linux and
+	init_registers_i386_avx_mpx_linux.
+	* linux-i386-ipa.c (get_ipa_tdesc): Add case for avx_mpx.
+	(initialize_low_tracepoint): Call
+	init_registers_i386_avx_mpx_linux.
+	* linux-amd64-ipa.c (get_ipa_tdesc):  Add case for avx_mpx.
+	(initialize_low_tracepoint): Call
+	init_registers_amd64_avx_mpx_linux.
+	* linux-x86-tdesc.h (X86_TDESC_AVX_MPX): New enum value.
+	(init_registers_amd64_avx_mpx_linux, tdesc_amd64_avx_mpx_linux)
+	(init_registers_i386_avx_mpx_linux, tdesc_i386_avx_mpx_linux): New
+	declarations.
+
+2016-04-18  Pedro Alves  <palves@redhat.com>
+
+	* configure: Regenerate.
+
+2016-04-13  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-aarch64-low.c (aarch64_emit_add): Switch x1 and x0.
+	(aarch64_emit_sub): Likewise.
+
+2016-04-12  Pedro Alves  <palves@redhat.com>
+
+	* utils.c (prepare_to_throw_exception): Delete.
+
+2016-04-05  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* Makefile.in ($(IPA_LIB)): Set SONAME of the IPA lib.
+
+2016-04-05  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* tracepoint.c (getauxval): Move to #ifdef IN_PROCESS_AGENT.
+
+2016-04-03  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* linux-aarch64-ipa.c: Add <elf.h> include.
+	* linux-ppc-ipa.c: Add <elf.h> include.
+	* linux-s390-ipa.c: Add <elf.h> include.
+
+2016-03-31  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* tracepoint.c (gdb_collect_ptr): Remove const qualifier.
+	(get_raw_reg_ptr): Likewise.
+	(get_trace_state_variable_value_ptr): Likewise.
+	(set_trace_state_variable_value_ptr): Likewise.
+	(initialize_tracepoint): Cast alloc_jump_pad_buffer result to
+	char *.
+
+2016-03-31  Wei-cheng Wang  <cole945@gmail.com>
+	    Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	PR/17221
+	* linux-ppc-low.c (emit_insns): New function.
+	(__EMIT_ASM, _EMIT_ASM, EMIT_ASM): New macros.
+	(ppc_emit_prologue): New function.
+	(ppc_emit_epilogue): New function.
+	(ppc_emit_add): New function.
+	(ppc_emit_sub): New function.
+	(ppc_emit_mul): New function.
+	(ppc_emit_lsh): New function.
+	(ppc_emit_rsh_signed): New function.
+	(ppc_emit_rsh_unsigned): New function.
+	(ppc_emit_ext): New function.
+	(ppc_emit_zero_ext): New function.
+	(ppc_emit_log_not): New function.
+	(ppc_emit_bit_and): New function.
+	(ppc_emit_bit_or): New function.
+	(ppc_emit_bit_xor): New function.
+	(ppc_emit_bit_not): New function.
+	(ppc_emit_equal): New function.
+	(ppc_emit_less_signed): New function.
+	(ppc_emit_less_unsigned): New function.
+	(ppc_emit_ref): New function.
+	(ppc_emit_const): New function.
+	(ppc_emit_reg): New function.
+	(ppc_emit_pop): New function.
+	(ppc_emit_stack_flush): New function.
+	(ppc_emit_swap): New function.
+	(ppc_emit_stack_adjust): New function.
+	(ppc_emit_call): New function.
+	(ppc_emit_int_call_1): New function.
+	(ppc_emit_void_call_2): New function.
+	(ppc_emit_if_goto): New function.
+	(ppc_emit_goto): New function.
+	(ppc_emit_eq_goto): New function.
+	(ppc_emit_ne_goto): New function.
+	(ppc_emit_lt_goto): New function.
+	(ppc_emit_le_goto): New function.
+	(ppc_emit_gt_goto): New function.
+	(ppc_emit_ge_goto): New function.
+	(ppc_write_goto_address): New function.
+	(ppc_emit_ops_impl): New static variable.
+	(ppc64v1_emit_prologue): New function.
+	(ppc64v2_emit_prologue): New function.
+	(ppc64_emit_epilogue): New function.
+	(ppc64_emit_add): New function.
+	(ppc64_emit_sub): New function.
+	(ppc64_emit_mul): New function.
+	(ppc64_emit_lsh): New function.
+	(ppc64_emit_rsh_signed): New function.
+	(ppc64_emit_rsh_unsigned): New function.
+	(ppc64_emit_ext): New function.
+	(ppc64_emit_zero_ext): New function.
+	(ppc64_emit_log_not): New function.
+	(ppc64_emit_bit_and): New function.
+	(ppc64_emit_bit_or): New function.
+	(ppc64_emit_bit_xor): New function.
+	(ppc64_emit_bit_not): New function.
+	(ppc64_emit_equal): New function.
+	(ppc64_emit_less_signed): New function.
+	(ppc64_emit_less_unsigned): New function.
+	(ppc64_emit_ref): New function.
+	(ppc64_emit_const): New function.
+	(ppc64v1_emit_reg): New function.
+	(ppc64v2_emit_reg): New function.
+	(ppc64_emit_pop): New function.
+	(ppc64_emit_stack_flush): New function.
+	(ppc64_emit_swap): New function.
+	(ppc64v1_emit_call): New function.
+	(ppc64v2_emit_call): New function.
+	(ppc64v1_emit_int_call_1): New function.
+	(ppc64v2_emit_int_call_1): New function.
+	(ppc64v1_emit_void_call_2): New function.
+	(ppc64v2_emit_void_call_2): New function.
+	(ppc64_emit_if_goto): New function.
+	(ppc64_emit_eq_goto): New function.
+	(ppc64_emit_ne_goto): New function.
+	(ppc64_emit_lt_goto): New function.
+	(ppc64_emit_le_goto): New function.
+	(ppc64_emit_gt_goto): New function.
+	(ppc64_emit_ge_goto): New function.
+	(ppc64v1_emit_ops_impl): New static variable.
+	(ppc64v2_emit_ops_impl): New static variable.
+	(ppc_emit_ops): New function.
+	(linux_low_target): Wire in ppc_emit_ops.
+
+2016-03-31  Wei-cheng Wang  <cole945@gmail.com>
+	    Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	PR/17221
+	* Makefile.in: Add powerpc-*-ipa.o
+	* configure.srv: Add ipa_obj for powerpc*-linux.
+	* linux-ppc-ipa.c: New file.
+	* linux-ppc-low.c: Added linux-ppc-tdesc.h, ax.h, tracepoint.h
+	includes.
+	(PPC_FIELD): New macro.
+	(PPC_SEXT): New macro.
+	(PPC_OP6): New macro.
+	(PPC_BO): New macro.
+	(PPC_LI): New macro.
+	(PPC_BD): New macro.
+	(init_registers_*): Move prototype to linux-ppc-tdesc.h.
+	(tdesc_*): Move declaration to linux-ppc-tdesc.h.
+	(ppc_get_hwcap): Rename to ppc_get_auxv and add type parameter.
+	(ppc_get_thread_area): New function.
+	(is_elfv2_inferior): New function.
+	(gen_ds_form): New function.
+	(GEN_STD): New macro.
+	(GEN_STDU): New macro.
+	(GEN_LD): New macro.
+	(GEN_LDU): New macro.
+	(gen_d_form): New function.
+	(GEN_ADDI): New macro.
+	(GEN_ADDIS): New macro.
+	(GEN_LI): New macro.
+	(GEN_LIS): New macro.
+	(GEN_ORI): New macro.
+	(GEN_ORIS): New macro.
+	(GEN_LWZ): New macro.
+	(GEN_STW): New macro.
+	(GEN_STWU): New macro.
+	(gen_xfx_form): New function.
+	(GEN_MFSPR): New macro.
+	(GEN_MTSPR): New macro.
+	(GEN_MFCR): New macro.
+	(GEN_MTCR): New macro.
+	(GEN_SYNC): New macro.
+	(GEN_LWSYNC): New macro.
+	(gen_x_form): New function.
+	(GEN_OR): New macro.
+	(GEN_MR): New macro.
+	(GEN_LWARX): New macro.
+	(GEN_STWCX): New macro.
+	(GEN_CMPW): New macro.
+	(gen_md_form): New function.
+	(GEN_RLDICL): New macro.
+	(GEN_RLDICR): New macro.
+	(gen_i_form): New function.
+	(GEN_B): New macro.
+	(GEN_BL): New macro.
+	(gen_b_form): New function.
+	(GEN_BNE): New macro.
+	(GEN_LOAD): New macro.
+	(GEN_STORE): New macro.
+	(gen_limm): New function.
+	(gen_atomic_xchg): New function.
+	(gen_call): New function.
+	(ppc_relocate_instruction): New function.
+	(ppc_install_fast_tracepoint_jump_pad): New function.
+	(ppc_get_min_fast_tracepoint_insn_len): New function.
+	(ppc_get_ipa_tdesc_idx): New function.
+	(the_low_target): Wire in the new functions.
+	(initialize_low_arch) [!__powerpc64__]: Don'it initialize 64-bit
+	tdescs.
+	* linux-ppc-tdesc.h: New file.
+
+2016-03-31  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* linux-aarch64-ipa.c: Add <sys/mman.h> and <sys/auxv.h> includes.
+	(alloc_jump_pad_buffer): New function.
+	* linux-amd64-ipa.c: Add <sys/mman.h> include.
+	(alloc_jump_pad_buffer): New function.
+	* linux-i386-ipa.c (alloc_jump_pad_buffer): New function.
+	* linux-s390-ipa.c: Add <sys/mman.h> and <sys/auxv.h> includes.
+	(alloc_jump_pad_buffer): New function.
+	* tracepoint.c (getauxval) [!HAVE_GETAUXVAL]: New function.
+	(initialize_tracepoint): Delegate to alloc_jump_pad_buffer.
+	* tracepoint.h (alloc_jump_pad_buffer): New prototype.
+	(getauxval) [!HAVE_GETAUXVAL]: New prototype.
+
+2016-03-30  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* linux-aarch64-ipa.c: Rename gdb_agent_get_raw_reg to get_raw_reg.
+	* linux-amd64-ipa.c: Likewise.
+	* linux-i386-ipa.c: Likewise.
+	* linux-s390-ipa.c: Likewise.
+	* tracepoint.c: IPA-export gdb_collect_ptr instead of gdb_collect,
+	ditto for get_raw_reg_ptr, get_trace_state_variable_value_ptr,
+	set_trace_state_variable_value_ptr.
+	(struct ipa_sym_addresses): Likewise.
+	(symbol_list): Likewise.
+	(install_fast_tracepoint): Dereference gdb_collect_ptr instead of
+	accessing gdb_collect directly.
+	(gdb_collect_ptr_type): New typedef.
+	(get_raw_reg_ptr_type): New typedef.
+	(get_trace_state_variable_value_ptr_type): New typedef.
+	(set_trace_state_variable_value_ptr_type): New typedef.
+	(gdb_collect_ptr): New global.
+	(get_raw_reg_ptr): New global.
+	(get_trace_state_variable_value_ptr): New global.
+	(set_trace_state_variable_value_ptr): New global.
+	(get_raw_reg_func_addr): Dereference get_raw_reg_ptr instead of
+	accessing get_raw_reg directly.
+	(get_get_tsv_func_addr): Likewise for
+	get_trace_state_variable_value_ptr.
+	(get_set_tsv_func_addr): Likewise for
+	set_trace_state_variable_value_ptr.
+	* tracepoint.h: Rename gdb_agent_get_raw_reg to get_raw_reg.
+
+2016-03-30  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* tracepoint.c (cmd_qtenable_disable): Remove whitespace.
+
+2016-03-30  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* remote-utils.c (look_up_one_symbol): Remove own_buf, handle 'v'
+	packets.
+	(relocate_instruction): Remove own_buf.
+	* server.c (own_buf): Make global.
+	(handle_v_requests): Make global.
+	* server.h (own_buf): New declaration.
+	(handle_v_requests): New prototype.
+
+2016-03-29  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	PR 18377
+	* linux-s390-low.c (add_insns): New function.
+	(s390_emit_prologue): New function.
+	(s390_emit_epilogue): New function.
+	(s390_emit_add): New function.
+	(s390_emit_sub): New function.
+	(s390_emit_mul): New function.
+	(s390_emit_lsh): New function.
+	(s390_emit_rsh_signed): New function.
+	(s390_emit_rsh_unsigned): New function.
+	(s390_emit_ext): New function.
+	(s390_emit_log_not): New function.
+	(s390_emit_bit_and): New function.
+	(s390_emit_bit_or): New function.
+	(s390_emit_bit_xor): New function.
+	(s390_emit_bit_not): New function.
+	(s390_emit_equal): New function.
+	(s390_emit_less_signed): New function.
+	(s390_emit_less_unsigned): New function.
+	(s390_emit_ref): New function.
+	(s390_emit_if_goto): New function.
+	(s390_emit_goto): New function.
+	(s390_write_goto_address): New function.
+	(s390_emit_litpool): New function.
+	(s390_emit_const): New function.
+	(s390_emit_call): New function.
+	(s390_emit_reg): New function.
+	(s390_emit_pop): New function.
+	(s390_emit_stack_flush): New function.
+	(s390_emit_zero_ext): New function.
+	(s390_emit_swap): New function.
+	(s390_emit_stack_adjust): New function.
+	(s390_emit_set_r2): New function.
+	(s390_emit_int_call_1): New function.
+	(s390_emit_void_call_2): New function.
+	(s390_emit_eq_goto): New function.
+	(s390_emit_ne_goto): New function.
+	(s390_emit_lt_goto): New function.
+	(s390_emit_le_goto): New function.
+	(s390_emit_gt_goto): New function.
+	(s390_emit_ge_goto): New function.
+	(s390x_emit_prologue): New function.
+	(s390x_emit_epilogue): New function.
+	(s390x_emit_add): New function.
+	(s390x_emit_sub): New function.
+	(s390x_emit_mul): New function.
+	(s390x_emit_lsh): New function.
+	(s390x_emit_rsh_signed): New function.
+	(s390x_emit_rsh_unsigned): New function.
+	(s390x_emit_ext): New function.
+	(s390x_emit_log_not): New function.
+	(s390x_emit_bit_and): New function.
+	(s390x_emit_bit_or): New function.
+	(s390x_emit_bit_xor): New function.
+	(s390x_emit_bit_not): New function.
+	(s390x_emit_equal): New function.
+	(s390x_emit_less_signed): New function.
+	(s390x_emit_less_unsigned): New function.
+	(s390x_emit_ref): New function.
+	(s390x_emit_if_goto): New function.
+	(s390x_emit_const): New function.
+	(s390x_emit_call): New function.
+	(s390x_emit_reg): New function.
+	(s390x_emit_pop): New function.
+	(s390x_emit_stack_flush): New function.
+	(s390x_emit_zero_ext): New function.
+	(s390x_emit_swap): New function.
+	(s390x_emit_stack_adjust): New function.
+	(s390x_emit_int_call_1): New function.
+	(s390x_emit_void_call_2): New function.
+	(s390x_emit_eq_goto): New function.
+	(s390x_emit_ne_goto): New function.
+	(s390x_emit_lt_goto): New function.
+	(s390x_emit_le_goto): New function.
+	(s390x_emit_gt_goto): New function.
+	(s390x_emit_ge_goto): New function.
+	(s390_emit_ops): New function.
+	(struct linux_target_ops): Fill in emit_ops hook.
+
+2016-03-29  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	PR 18377
+	* Makefile.in: Add s390 IPA files.
+	* configure.srv: Build IPA for s390.
+	* linux-s390-ipa.c: New file.
+	* linux-s390-low.c: New includes - inttypes.h and linux-s390-tdesc.h.
+	(init_registers_s390_linux32): Move declaration to linux-s390-tdesc.h.
+	(tdesc_s390_linux32): Likewise.
+	(init_registers_s390_linux32v1): Likewise.
+	(tdesc_s390_linux32v1): Likewise.
+	(init_registers_s390_linux32v2): Likewise.
+	(tdesc_s390_linux32v2): Likewise.
+	(init_registers_s390_linux64): Likewise.
+	(tdesc_s390_linux64): Likewise.
+	(init_registers_s390_linux64v1): Likewise.
+	(tdesc_s390_linux64v1): Likewise.
+	(init_registers_s390_linux64v2): Likewise.
+	(tdesc_s390_linux64v2): Likewise.
+	(init_registers_s390_te_linux64): Likewise.
+	(tdesc_s390_te_linux64): Likewise.
+	(init_registers_s390_vx_linux64): Likewise.
+	(tdesc_s390_vx_linux64): Likewise.
+	(init_registers_s390_tevx_linux64): Likewise.
+	(tdesc_s390_tevx_linux64): Likewise.
+	(init_registers_s390x_linux64): Likewise.
+	(tdesc_s390x_linux64): Likewise.
+	(init_registers_s390x_linux64v1): Likewise.
+	(tdesc_s390x_linux64v1): Likewise.
+	(init_registers_s390x_linux64v2): Likewise.
+	(tdesc_s390x_linux64v2): Likewise.
+	(init_registers_s390x_te_linux64): Likewise.
+	(tdesc_s390x_te_linux64): Likewise.
+	(init_registers_s390x_vx_linux64): Likewise.
+	(tdesc_s390x_vx_linux64): Likewise.
+	(init_registers_s390x_tevx_linux64): Likewise.
+	(tdesc_s390x_tevx_linux64): Likewise.
+	(have_hwcap_s390_vx): New static variable.
+	(s390_arch_setup): Fill have_hwcap_s390_vx.
+	(s390_get_thread_area): New function.
+	(s390_ft_entry_gpr_esa): New const.
+	(s390_ft_entry_gpr_zarch): New const.
+	(s390_ft_entry_misc): New const.
+	(s390_ft_entry_fr): New const.
+	(s390_ft_entry_vr): New const.
+	(s390_ft_main_31): New const.
+	(s390_ft_main_64): New const.
+	(s390_ft_exit_fr): New const.
+	(s390_ft_exit_vr): New const.
+	(s390_ft_exit_misc): New const.
+	(s390_ft_exit_gpr_esa): New const.
+	(s390_ft_exit_gpr_zarch): New const.
+	(append_insns): New function.
+	(s390_relocate_instruction): New function.
+	(s390_install_fast_tracepoint_jump_pad): New function.
+	(s390_get_min_fast_tracepoint_insn_len): New function.
+	(s390_get_ipa_tdesc_idx): New function.
+	(struct linux_target_ops): Wire in the above functions.
+	(initialize_low_arch) [!__s390x__]: Don't initialize s390x tdescs.
+	* linux-s390-tdesc.h: New file.
+
+2016-03-29  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* linux-s390-low.c (s390_supports_tracepoints): New function.
+	(struct linux_target_ops): Fill supports_tracepoints hook.
+
+2016-03-18  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (lwp_signal_can_be_delivered): New function.
+	(linux_resume_one_lwp_throw): Use lwp_signal_can_be_delivered.
+
+2016-03-18  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_resume_one_lwp_throw): Set 'signal' to
+	0 if signal is enqueued.  Remove 'signal' from one debugging
+	message.  Move one debugging message to some lines below.
+	Remove code setting 'signal' to 0.
+
+2016-03-18  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_low_filter_event): Remove redundant
+	WIFSTOPPED check together with linux_wstatus_maybe_breakpoint.
+
+2016-03-09  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* linux-ppc-low.c (ppc_supports_tracepoints): New function.
+	(struct linux_target_ops): Wire in the above.
+
+2016-03-03  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c: Update comments to start_step_over.
+
+2016-03-03  Yao Qi  <yao.qi@linaro.org>
+
+	PR server/19736
+	* linux-low.c (handle_extended_wait): Set child suspended
+	if event_lwp->bp_reinsert isn't zero.
+
+2016-03-02  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_resume_one_lwp_throw): Replace code with
+	enqueue_pending_signal.
+
+2016-03-02  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* tracepoint.c (cmd_qtstart): Only set ipa_tdesc_idx if agent
+	is actually loaded.
+
+2016-02-25  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* linux-s390-low.c (s390_num_regs_3264): Define on 31-bit too.
+	(s390_regmap_3264) [!__s390x__]: New global.
+	(s390_collect_ptrace_register): Skip map entries containing -1.
+	(s390_supply_ptrace_register): Ditto.
+	(s390_fill_gprs_high): New function.
+	(s390_store_gprs_high): New function.
+	(s390_regsets): Add NT_S390_HIGH_GPRS.
+	(s390_get_hwcap): Enable on 31-bit.
+	(have_hwcap_s390_high_gprs): Enable on 31-bit.
+	(s390_arch_setup): Enable detection of high GPRs, TDB, VX on 31-bit.
+	Detect NT_S390_HIGH_GPRS.
+	(s390_usrregs_info_3264): Enable on 31-bit.
+	(s390_regs_info): Enable regs_info_3264 on 31-bit.
+	(initialize_low_arch): Initialize s390_regsets_info_3264 on 31-bit.
+
+2016-02-25  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	PR gdb/13808
+	* Makefile.in: Add i386-*-linux-ipa.o and amd64-*-linux-ipa.o.
+	* configure.srv: Ditto.
+	* linux-aarch64-ipa.c (get_ipa_tdesc): New function.
+	(initialize_low_tracepoint): Remove ipa_tdesc assignment.
+	* linux-amd64-ipa.c: Add "linux-x86-tdesc.h" include.
+	(init_registers_amd64_linux): Remove prototype.
+	(tdesc_amd64_linux): Remove declaration.
+	(get_ipa_tdesc): New function.
+	(initialize_low_tracepoint): Remove ipa_tdesc assignment,
+	initialize remaining tdescs.
+	* linux-i386-ipa.c: Add "linux-x86-tdesc.h" include.
+	(init_registers_i386_linux): Remove prototype.
+	(tdesc_i386_linux): Remove declaration.
+	(get_ipa_tdesc): New function.
+	(initialize_low_tracepoint): Remove ipa_tdesc assignment,
+	initialize remaining tdescs.
+	* linux-low.c (linux_get_ipa_tdesc_idx): New function.
+	(linux_target_ops): wire in linux_get_ipa_tdesc_idx.
+	* linux-low.h (struct linux_target_ops): Add get_ipa_tdesc_idx.
+	* linux-x86-low.c: Move tdesc declarations to linux-x86-tdesc.h.
+	(x86_get_ipa_tdesc_idx): New function.
+	(the_low_target): Wire in x86_get_ipa_tdesc_idx.
+	* linux-x86-tdesc.h: New file.
+	* target.h (struct target_ops): Add get_ipa_tdesc_idx.
+	(target_get_ipa_tdesc_idx): New macro.
+	* tracepoint.c (ipa_tdesc_idx): New macro.
+	(struct ipa_sym_addresses): Add addr_ipa_tdesc_idx.
+	(symbol_list): Add ipa_tdesc_idx.
+	(cmd_qtstart): Write ipa_tdesc_idx in the target.
+	(ipa_tdesc): Remove.
+	(ipa_tdesc_idx): New variable.
+	(get_context_regcache): Use get_ipa_tdesc.
+	(gdb_collect): Ditto.
+	(gdb_probe): Ditto.
+	* tracepoint.h (get_ipa_tdesc): New prototype.
+	(ipa_tdesc): Remove.
+
+2016-02-24  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (check_stopped_by_breakpoint): Rename to ...
+	(save_stop_reason): ... this.  Use GDB_ARCH_IS_TRAP_HWBKPT and
+	handle ambiguous GDB_ARCH_IS_TRAP_BRKPT / GDB_ARCH_IS_TRAP_HWBKPT.
+	Factor out common code between the USE_SIGTRAP_SIGINFO and
+	!USE_SIGTRAP_SIGINFO blocks.
+	(linux_low_filter_event): Call save_stop_reason instead of
+	check_stopped_by_breakpoint and check_stopped_by_watchpoint.
+	Update comments.
+	(linux_wait_1): Update comments.
+
+2016-02-24  Wei-cheng Wang  <cole945@gmail.com>
+
+	* linux-ppc-low.c (ppc_supports_z_point_type): New function:
+	(ppc_insert_point, ppc_remove_point): Insert/remove z-packet breakpoints.
+	(ppc64_emit_ops_vector): Add target ops - ppc_supports_z_point_type,
+	ppc_insert_point, ppc_remove_point.
+
+2016-02-17  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* linux-s390-low.c (s390_supports_z_point_type): New function.
+	(struct linux_target_ops): Wire s390_supports_z_point_type in.
+
+2016-02-16  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c (get_next_pcs_syscall_next_pc): Remove argument
+	PC.  Get pc from regcache_read_pc.
+
+2016-02-12  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_get_pc): Call linux_get_pc_64bit
+	or linux_get_pc_32bit.
+	(aarch64_set_pc): Call linux_set_pc_64bit or linux_set_pc_32bit.
+
+2016-02-12  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c (get_next_pcs_ops): Initialize it with
+	arm_linux_get_next_pcs_fixup.
+
+2016-02-12  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* tracepoint.c (x_tracepoint_action_download): Change
+	write_inferior_data_ptr to write_inferior_data_pointer.
+	(cmd_qtstart): Likewise.
+	(write_inferior_data_ptr): Remove.
+	(download_agent_expr): Change write_inferior_data_ptr to
+	write_inferior_data_pointer.
+	(download_tracepoint_1): Likewise.
+	(download_tracepoint): Likewise.
+	(download_trace_state_variables): Likewise.
+
+2016-02-11  Wei-cheng Wang  <cole945@gmail.com>
+	    Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* tracepoint.c (struct tracepoint_action_ops): Remove.
+	(struct tracepoint_action): Remove ops.
+	(m_tracepoint_action_download, r_tracepoint_action_download)
+	(x_tracepoint_action_download, l_tracepoint_action_download): Adjust
+	size and offset accordingly.
+	(m_tracepoint_action_ops, r_tracepoint_action_ops)
+	(x_tracepoint_action_ops, l_tracepoint_action_ops): Remove.
+	(tracepoint_action_send, tracepoint_action_download): New functions.
+	Helpers for trace action handlers.
+	(add_tracepoint_action): Remove setup actions ops.
+	(download_tracepoint_1, tracepoint_send_agent): Call helper functions.
+
+2016-02-10  Yao Qi  <yao.qi@linaro.org>
+
+	* regcache.c (regcache_raw_read_unsigned): Clear *VAL.
+
+2016-02-09  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* configure.ac: Use AC_CONFIG_FILES instead of passing arguments
+	to AC_OUTPUT.
+	* configure: Regenerate.
+
+2016-02-09  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-aarch64-low.c (aarch64_linux_siginfo_fixup): Change
+	void * to gdb_byte *.
+	* linux-low.c (siginfo_fixup): Likewise.
+	(linux_xfer_siginfo): Likewise.
+	* linux-low.h (struct linux_target_ops) <siginfo_fixup>:
+	Likewise.
+	* linux-x86-low.c (x86_siginfo_fixup): Likewise.
+
+2016-02-02  Walfred Tedeschi  <walfred.tedeschi@intel.com>
+
+	* configure.srv (x86_64-*-linux*): Add amd64-linux-siginfo.o
+	to srv_tgtobj.
+	(i[34567]86-*-linux*): Add amd64-linux-siginfo.o
+	to srv_tgtobj.
+	* linux-x86-low.c [__x86_64__]: Include
+	"nat/amd64-linux-siginfo.h".
+	(compat_siginfo_from_siginfo, siginfo_from_compat_siginfo)
+	(compat_x32_siginfo_from_siginfo, siginfo_from_compat_x32_siginfo)
+	(compat_timeval, compat_sigval, compat_x32_clock, cpt_si_pid)
+	(cpt_si_uid, cpt_si_timerid, cpt_si_overrun, cpt_si_status)
+	(cpt_si_utime, cpt_si_stime, cpt_si_ptr, cpt_si_addr, cpt_si_band)
+	(cpt_si_fd, si_timerid, si_overrun): Move from
+	nat/amd64-linux-siginfo.c.
+	* Makefile.in (amd64-linux-siginfo.o:): New rule.
+
+2016-01-28  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* server.c (skip_to_semicolon):  Remove.
+	(process_point_options): Use strchrnul instead of
+	skip_to_semicolon.
+
+2016-01-26  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c (arm_gdbserver_get_next_pcs): Remove argument pc.
+	* linux-low.c (install_software_single_step_breakpoints): Don't
+	call regcache_read_pc.
+	* linux-low.h (struct linux_target_ops) <get_next_pcs>: Remove
+	argument pc.
+
+2016-01-26  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (install_software_single_step_breakpoints): Call
+	regcache_read_pc instead of get_pc.
+
+2016-01-26  Yao Qi  <yao.qi@linaro.org>
+
+	* remote-utils.c (remote_close) [!USE_WIN32API]: Ignore SIGIO.
+	(unblock_async_io): Rename to ...
+	(block_unblock_async_io): ... it.  New function.
+	(enable_async_io): Don't install SIGIO handler.  Unblock it
+	instead.
+	(disable_async_io): Don't ignore SIGIO.  Block it instead.
+	(initialize_async_io): Install SIGIO handler.  Don't call
+	unblock_async_io.
+
+2016-01-26  Yao Qi  <yao.qi@linaro.org>
+
+	* remote-utils.c (getpkt): If the buffer isn't empty, and the
+	first character is '\003', call *the_target->request_interrupt.
+
+2016-01-25  Yao Qi  <yao.qi@linaro.org>
+
+	* remote-utils.c (new_thread_notify): Remove.
+	(dead_thread_notify): Likewise.
+	* remote-utils.h (new_thread_notify): Remove declaration.
+	(dead_thread_notify): Likewise.
+
+2016-01-23  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* gdb.trace/pending.exp: Fix expected message on continue.
+
+2016-01-22  Marcin KoÅ›cielnicki  <koriakin@0x04.net>
+
+	* tracepoint.c (write_inferior_data_ptr): Cast to uintptr_t, so that
+	it works properly on big-endian machines where sizeof (CORE_ADDR)
+	!= sizeof (void *).
+
+2016-01-21  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (COMPILER_CFLAGS, CXXFLAGS): New.
+	(INTERNAL_CFLAGS_BASE): Use COMPILER_CFLAGS instead of CFLAGS.
+	* configure: Regenerate.
+
+2016-01-21  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c (arm_sigreturn_next_pc): Add parameter
+	is_thumb and set it according to CPSR saved on the stack.
+	(get_next_pcs_syscall_next_pc): Pass is_thumb to
+	arm_sigreturn_next_pc.
+
+2016-01-18  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_set_pc_64bit): New function.
+	(linux_get_pc_64bit): New function.
+	* linux-low.h (linux_set_pc_64bit, linux_get_pc_64bit):
+	Declare.
+	* linux-sparc-low.c (debug_threads): Remove declaration.
+	(sparc_get_pc): Remove.
+	(the_low_target): Use linux_get_pc_64bit instead of
+	sparc_get_pc.
+	* linux-tile-low.c (tile_get_pc, tile_set_pc): Remove.
+	(the_low_target): Use linux_get_pc_64bit and
+	linux_set_pc_64bit.
+
+2016-01-18  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c (debug_threads): Remove declaration.
+	(arm_get_pc, arm_set_pc): Remove.
+	(the_low_target): Use linux_get_pc_32bit and
+	linux_set_pc_32bit.
+	* linux-bfin-low.c (bfin_get_pc, bfin_set_pc): Remove.
+	(the_low_target): Use linux_get_pc_32bit and
+	linux_set_pc_32bit.
+	* linux-cris-low.c (debug_threads): Remove declaration.
+	(cris_get_pc, cris_set_pc,): Remove.
+	(the_low_target): Use linux_get_pc_32bit and
+	linux_set_pc_32bit.
+	* linux-crisv32-low.c (debug_threads): Remove declaration.
+	(cris_get_pc, cris_set_pc): Remove.
+	(the_low_target): Use linux_get_pc_32bit and
+	linux_set_pc_32bit.
+	* linux-low.c: Include inttypes.h.
+	(linux_get_pc_32bit, linux_set_pc_32bit): New functions.
+	* linux-low.h (linux_get_pc_32bit, linux_set_pc_32bit): Declare.
+	* linux-m32r-low.c (m32r_get_pc, m32r_set_pc): Remove.
+	(the_low_target): Use linux_get_pc_32bit and
+	linux_set_pc_32bit.
+	* linux-m68k-low.c (m68k_get_pc, m68k_set_pc): Remove.
+	(the_low_target): Use linux_get_pc_32bit and
+	linux_set_pc_32bit.
+	* linux-nios2-low.c (nios2_get_pc, nios2_set_pc): Remove.
+	(the_low_target): Use linux_get_pc_32bit and
+	linux_set_pc_32bit.
+	* linux-sh-low.c (sh_get_pc, sh_set_pc): Remove.
+	(the_low_target): Use linux_get_pc_32bit and
+	linux_set_pc_32bit.
+	* linux-xtensa-low.c (xtensa_get_pc, xtensa_set_pc): Remove.
+	(the_low_target): Use linux_get_pc_32bit and
+	linux_set_pc_32bit.
+
+2016-01-18  Gary Benson  <gbenson@redhat.com>
+
+	* configure.ac (AC_FUNC_FORK): New check.
+	* config.in: Regenerate.
+	* configure: Likewise.
+
+2016-01-14  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch32-low.c (thumb2_breakpoint): Make it static.
+	* linux-aarch32-low.h (thumb2_breakpoint): Remove declaration.
+	* linux-arm-low.c (arm_gdbserver_get_next_pcs): Pass 1 to
+	arm_get_next_pcs_ctor.
+
+2016-01-12  Josh Stone  <jistone@redhat.com>
+	    Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* inferiors.h: Include "gdb_vecs.h".
+	(struct process_info): Add syscalls_to_catch.
+	* inferiors.c (remove_process): Free syscalls_to_catch.
+	* remote-utils.c (prepare_resume_reply): Report syscall_entry and
+	syscall_return stops.
+	* server.h (UNKNOWN_SYSCALL, ANY_SYSCALL): Define.
+	* server.c (handle_general_set): Handle QCatchSyscalls.
+	(handle_query): Report support for QCatchSyscalls.
+	* target.h (struct target_ops): Add supports_catch_syscall.
+	(target_supports_catch_syscall): New macro.
+	* linux-low.h (struct linux_target_ops): Add get_syscall_trapinfo.
+	(struct lwp_info): Add syscall_state.
+	* linux-low.c (handle_extended_wait): Mark syscall_state as an entry.
+	Maintain syscall_state and syscalls_to_catch across exec.
+	(get_syscall_trapinfo): New function, proxy to the_low_target.
+	(linux_low_ptrace_options): Enable PTRACE_O_TRACESYSGOOD.
+	(linux_low_filter_event): Toggle syscall_state entry/return for
+	syscall traps, and set it ignored for all others.
+	(gdb_catching_syscalls_p): New function.
+	(gdb_catch_this_syscall_p): New function.
+	(linux_wait_1): Handle SYSCALL_SIGTRAP.
+	(linux_resume_one_lwp_throw): Add PTRACE_SYSCALL possibility.
+	(linux_supports_catch_syscall): New function.
+	(linux_target_ops): Install it.
+	* linux-x86-low.c (x86_get_syscall_trapinfo): New function.
+	(the_low_target): Install it.
+
+2016-01-12  Mike Frysinger  <vapier@gentoo.org>
+
+	* acinclude.m4: Include new ../warning.m4 file.
+	* configure: Regenerated.
+	* configure.ac: Replace all warning logic with AM_GDB_WARNINGS.
+
+2016-01-12  Mike Frysinger  <vapier@gentoo.org>
+
+	* ax.c (is_goto_target): Mark static.
+	* linux-low.c (register_addr): Likewise.
+	(linux_fetch_registers, linux_store_registers): Likewise.
+	* mem-break.c (any_persistent_commands): Fix old prototype.
+	(add_commands_to_breakpoint): Mark static.
+	* regcache.c (find_register_by_name): Delete unused func.
+	* remote-utils.c (hex_or_minus_one): Mark static.
+	* server.c (monitor_show_help): Mark static.
+	(handle_query, handle_v_cont, handle_v_attach, handle_v_kill,
+	handle_v_requests): Likewise.
+
+2016-01-12  Pedro Alves  <palves@redhat.com>
+
+	Remove use of the registered trademark symbol throughout.
+
+2016-01-08  Yao Qi  <yao.qi@linaro.org>
+
+	* remote-utils.c (getpkt): If c is '\003', call target hook
+	request_interrupt.
+
+2016-01-06  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch32-low.h (arm_abi_breakpoint): Move to
+	linux-aarch32-low.c.
+	(arm_eabi_breakpoint, arm_breakpoint): Likewise.
+	(arm_breakpoint_len, thumb_breakpoint_len): Likewise.
+	(thumb2_breakpoint, thumb2_breakpoint_len): Likewise.
+	(thumb2_breakpoint): Declare.
+	* linux-aarch32-low.c (arm_abi_breakpoint): Moved from
+	linux-aarch32-low.h.
+	(arm_eabi_breakpoint, arm_breakpoint): Likewise.
+	(arm_breakpoint_len, thumb_breakpoint_len): Likewise.
+	(thumb2_breakpoint, thumb2_breakpoint_len): Likewise.
+
+2016-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbreplay.c (gdbreplay_version): Change copyright year in
+	version message.
+	* server.c (gdbserver_version): Likewise.
+
+2015-12-28  Patrick Palka  <patrick@parcs.ath.cx>
+
+	* server.c (crc32_table): Delete.
+	(crc32): Use libiberty's xcrc32 function.
+
+2015-12-22  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_delete_thread_callback): New function.
+	(lynx_mourn): Properly delete our process and all of its
+	threads.  Remove call to clear_inferiors.
+
+2015-12-22  Joel Brobecker  <brobecker@adacore.com>
+
+	* target.c (thread_search_callback): Add check that
+	the thread_stopped target callback is not NULL before
+	calling it.
+
+2015-12-21  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch32-low.h [__aarch64__]: Use arm_abi_breakpoint
+	arm breakpoint.
+
+2015-12-18  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* server.c (handle_query): Call target_supports_software_single_step.
+
+2015-12-18  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-low.c (single_step): New function.
+	(linux_resume_one_lwp_throw): Call single_step.
+	(start_step_over): Likewise.
+
+2015-12-18  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* Makefile.in (SFILES): Append arch/arm-linux.c,
+	arch/arm-get-next-pcs.c.
+	(arm-linux.o): New rule.
+	(arm-get-next-pcs.o): New rule.
+	* configure.srv (arm*-*-linux*): Add arm-get-next-pcs.o,
+	arm-linux.o.
+	* linux-aarch32-low.c (arm_abi_breakpoint): Remove macro.  Moved
+	to linux-aarch32-low.c.
+	(arm_eabi_breakpoint, arm_breakpoint): Likewise.
+	(arm_breakpoint_len, thumb_breakpoint): Likewise.
+	(thumb_breakpoint_len, thumb2_breakpoint): Likewise.
+	(thumb2_breakpoint_len): Likewise.
+	(arm_is_thumb_mode): Make non-static.
+	* linux-aarch32-low.h (arm_abi_breakpoint): New macro.  Moved
+	from linux-aarch32-low.c.
+	(arm_eabi_breakpoint, arm_breakpoint): Likewise.
+	(arm_breakpoint_len, thumb_breakpoint): Likewise.
+	(thumb_breakpoint_len, thumb2_breakpoint): Likewise.
+	(thumb2_breakpoint_len): Likewise.
+	(arm_is_thumb_mode): New declaration.
+	* linux-arm-low.c: Include arch/arm-linux.h
+	aarch/arm-get-next-pcs.h, sys/syscall.h.
+	(get_next_pcs_ops): New struct.
+	(get_next_pcs_addr_bits_remove): New function.
+	(get_next_pcs_is_thumb): New function.
+	(get_next_pcs_read_memory_unsigned_integer): Likewise.
+	(arm_sigreturn_next_pc): Likewise.
+	(get_next_pcs_syscall_next_pc): Likewise.
+	(arm_gdbserver_get_next_pcs): Likewise.
+	(struct linux_target_ops) <arm_gdbserver_get_next_pcs>:
+	Initialize.
+	* linux-low.h: Move CORE_ADDR vector definition to gdb_vecs.h.
+	* server.h: Include gdb_vecs.h.
+
+2015-12-18  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* Makefile.in (SFILES): Append common/common-regcache.c.
+	(OBS): Append common-regcache.o.
+	(common-regcache.o): New rule.
+	* regcache.c (init_register_cache): Initialize cache to
+	REG_UNAVAILABLE.
+	(regcache_raw_read_unsigned): New function.
+	* regcache.h (REG_UNAVAILABLE, REG_VALID): Replaced by shared
+	register_status enum.
+
+2015-12-18  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-aarch64-low.c (the_low_targets): Rename
+	breakpoint_reinsert_addr to get_next_pcs.
+	* linux-arm-low.c (the_low_targets): Likewise.
+	* linux-bfin-low.c (the_low_targets): Likewise.
+	* linux-cris-low.c (the_low_targets): Likewise.
+	* linux-crisv32-low.c (the_low_targets): Likewise.
+	* linux-low.c (can_software_single_step): Likewise.
+	(install_software_single_step_breakpoints): New function.
+	(start_step_over): Use install_software_single_step_breakpoints.
+	* linux-low.h: New CORE_ADDR vector.
+	(struct linux_target_ops) Rename breakpoint_reinsert_addr to
+	get_next_pcs.
+	* linux-mips-low.c (the_low_targets): Likewise.
+	* linux-nios2-low.c (the_low_targets): Likewise.
+	* linux-sparc-low.c (the_low_targets): Likewise.
+
+2015-12-17  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_kill_one_lwp): Remove references to
+	LinuxThreads.
+	(kill_lwp): Remove HAVE_TKILL_SYSCALL check.  No longer fall back
+	to 'kill'.
+	(linux_init_signals): Delete.
+	(initialize_low): Adjust.
+	* thread-db.c (thread_db_init): Remove LinuxThreads reference.
+
+2015-12-16  Pedro Alves  <palves@redhat.com>
+
+	* configure.ac (compiler warning flags): When testing a
+	-Wno-foo option, check whether -Wfoo works instead.
+	* configure: Regenerate.
+
+2015-12-11  Don Breazeal  <donb@codesourcery.com>
+
+	* server.c (process_serial_event): Don't exit from gdbserver
+	in remote mode if there are still active inferiors.
+
+2015-12-11  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_breakpoint_at): Call
+	arm_breakpoint_at if the process is 32-bit.
+
+2015-12-11  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch32-low.c [__aarch64__]: Use arm_abi_breakpoint
+	arm breakpoint.
+
+2015-12-07  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv: Append arm.o to srv_tgtobj for
+	aarch64*-*-linux* target.
+	* linux-aarch32-low.c (arm_abi_breakpoint): New macro.  Moved
+	from linux-arm-low.c.
+	(arm_eabi_breakpoint, arm_breakpoint): Likewise.
+	(arm_breakpoint_len, thumb_breakpoint): Likewise.
+	(thumb_breakpoint_len, thumb2_breakpoint): Likewise.
+	(thumb2_breakpoint_len): Likewise.
+	(arm_is_thumb_mode, arm_breakpoint_at): Likewise.
+	(arm_breakpoint_kinds): Likewise.
+	(arm_breakpoint_kind_from_pc): Likewise.
+	(arm_sw_breakpoint_from_kind): Likewise.
+	(arm_breakpoint_kind_from_current_state): Likewise.
+	* linux-aarch32-low.h (arm_breakpoint_kind_from_pc): Declare.
+	(arm_sw_breakpoint_from_kind): Declare.
+	(arm_breakpoint_kind_from_current_state): Declare.
+	(arm_breakpoint_at): Declare.
+	* linux-aarch64-low.c (aarch64_sw_breakpoint_from_kind): Call
+	arm_sw_breakpoint_from_kind if process is 32-bit.
+	(aarch64_breakpoint_kind_from_pc): New function.
+	(aarch64_breakpoint_kind_from_current_state): New function.
+	(the_low_target): Initialize fields breakpoint_kind_from_pc
+	and breakpoint_kind_from_current_state.
+	* linux-arm-low.c (arm_breakpoint_kinds): Move to
+	linux-aarch32-low.c.
+	(arm_abi_breakpoint, arm_eabi_breakpoint): Likewise.
+	(arm_breakpoint, arm_breakpoint_len): Likewise.
+	(thumb_breakpoint, thumb_breakpoint_len): Likewise.
+	(thumb2_breakpoint, thumb2_breakpoint_len): Likewise.
+	(arm_is_thumb_mode): Likewise.
+	(arm_breakpoint_at): Likewise.
+	(arm_breakpoint_kind_from_pc): Likewise.
+	(arm_sw_breakpoint_from_kind): Likewise.
+	(arm_breakpoint_kind_from_current_state): Likewise.
+
+	Revert:
+	2015-08-04  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_supports_z_point_type): Return
+	0 for Z_PACKET_SW_BP if it may be used in multi-arch debugging.
+	* server.c (extended_protocol): Remove "static".
+	* server.h (extended_protocol): Declare it.
+
+2015-12-04  Josh Stone  <jistone@redhat.com>
+
+	* target.h (struct target_ops) <arch_setup>: Rename to ...
+	(struct target_ops) <post_create_inferior>: ... this.
+	(target_arch_setup): Rename to ...
+	(target_post_create_inferior): ... this, calling post_create_inferior.
+	* server.c (start_inferior): Update target_arch_setup calls to
+	target_post_create_inferior.
+	* linux-low.c (linux_low_ptrace_options): Forward declare.
+	(linux_arch_setup): Update its comment for general use.
+	(linux_post_create_inferior): New, run arch_setup and setup ptrace.
+	(struct linux_target_ops): Use linux_post_create_inferior.
+	* lynx-low.c (struct lynx_target_ops): Update arch_setup stub comment
+	to post_create_inferior.
+	* nto-low.c (struct nto_target_ops): Likewise.
+	* spu-low.c (struct spu_target_ops): Likewise.
+	* win32-low.c (struct win32_target_ops): Likewise.
+
+2015-12-03  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-arm-low.c: Remove duplicate arch/arm.h include.
+
+2015-11-30  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-arm-low.c (arm_reinsert_addr): Remove function.
+	(struct linux_target_ops <breakpoint_reinsert_addr>: Set to NULL.
+	* linux-cris-low.c (cris_reinsert_addr> Remove function.
+	(struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
+	* linux-crisv32-low.c (cris_reinsert_addr): Remove function.
+	(struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
+	* linux-mips-low.c (mips_reinsert_addr): Remove function.
+	(struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
+	* linux-nios2-low.c (nios2_reinsert_addr): Remove function.
+	(struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
+	* linux-sparc-low.c (sparc_reinsert_addr): Remove function.
+	(struct linux_target_ops) <breakpoint_reinsert_addr>: Set to NULL.
+
+2015-11-30  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-low.c (linux_look_up_symbols): Don't call
+	linux_supports_traceclone.
+	* linux-low.h (thread_db_init): Remove use_events argument.
+	* thread-db.c (thread_db_use_event): Remove global variable.
+	(struct thread_db) <td_thr_event_enable_p>: Remove field.
+	(struct thread_db) <td_create_bp>: Remove field.
+	(thread_db_create_event): Remove function.
+	(thread_db_enable_reporting): Likewise.
+	(find_one_thread): Don't check for thread_db_use_events.
+	(attach_thread): Likewise.
+	(thread_db_load_search): Remove td_thr_event_enable_p initialization.
+	(try_thread_db_load_1): Don't check for thread_db_use_events.
+	(thread_db_init): Remove use_events argument and thread events
+	handling.
+	(remove_thread_event_breakpoints): Remove function.
+	(thread_db_detach): Remove call to remove_thred_event_breakpoints.
+
+2015-11-30  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-aarch64-low.c (aarch64_supports_hardware_single_step):
+	New function.
+	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
+	* linux-arm-low.c (arm_supports_hardware_single_step): New function.
+	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
+	* linux-bfin-low.c (bfin_supports_hardware_single_step): New function.
+	(struct linux_target_ops) <bfin_supports_hardware_single_step>:
+	Initialize.
+	* linux-crisv32-low.c (cris_supports_hardware_single_step):
+	New function.
+	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
+	* linux-low.c (can_hardware_single_step): Use
+	supports_hardware_single_step.
+	(can_software_single_step): New function.
+	(start_step_over): Call can_software_single_step.
+	(linux_supports_hardware_single_step): New function.
+	(struct target_ops) <supports_software_single_step>: Initialize.
+	* linux-low.h (struct linux_target_ops)
+	<supports_hardware_single_step>: Initialize.
+	* linux-m32r-low.c (m32r_supports_hardware_single_step): New function.
+	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
+	* linux-ppc-low.c (ppc_supports_hardware_single_step): New function.
+	(struct linux_target_ops) <supports_hardware_single_step> Initialize.
+	* linux-s390-low.c (s390_supports_hardware_single_step): New function.
+	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
+	* linux-sh-low.c (sh_supports_hardware_single_step): New function.
+	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
+	* linux-tic6x-low.c (tic6x_supports_hardware_single_step): New function.
+	(struct linux_target_ops) <tic6x_supports_hardware_single_step>:
+	Initialize.
+	* linux-tile-low.c (tile_supports_hardware_single_step): New function.
+	(struct linux_target_ops) <tile_supports_hardware_single_step>:
+	Initialize.
+	* linux-x86-low.c (x86_supports_hardware_single_step) New function.
+	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
+	* linux-xtensa-low.c (xtensa_supports_hardware_single_step):
+	New function.
+	(struct linux_target_ops) <supports_hardware_single_step>: Initialize.
+	* target.h (struct target_ops): <supports_software_single_step>:
+	New field.
+	(target_supports_software_single_step): New macro.
+
+2015-11-30  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-low.c (linux_wait_1): Fix pc advance condition.
+	* mem-break.c (reinsert_breakpoint_inserted_here): New function.
+	* mem-break.h (reinsert_breakpoint_inserted_here): New declaration.
+
+2015-11-30  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-arm-low.c (arm_is_thumb_mode): New function.
+	(arm_breakpoint_at): Use arm_is_thumb_mode.
+	(arm_breakpoint_kind_from_current_state): New function.
+	(struct linux_target_ops) <breakpoint_kind_from_current_state>:
+	Initialize.
+	* linux-low.c (linux_wait_1): Call breakpoint_kind_from_current_state.
+	(linux_breakpoint_kind_from_current_state): New function.
+	(struct target_ops <breakpoint_kind_from_current_state>: Initialize.
+	* linux-low.h (struct linux_target_ops)
+	<breakpoint_kind_from_current_state>: New field.
+	* target.h (struct target_ops): Likewise.
+	(target_breakpoint_kind_from_current_state): New macro.
+
+2015-11-30  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_resume): Wake up the event loop before
+	returning.
+
+2015-11-30  Pedro Alves  <palves@redhat.com>
+
+	* mem-break.c (check_gdb_bp_preconditions): Remove current_thread
+	check.
+	(set_gdb_breakpoint): If prepare_to_access_memory fails, set *ERR
+	to -1.
+	* target.c (struct thread_search): New structure.
+	(thread_search_callback): New function.
+	(prev_general_thread): New global.
+	(prepare_to_access_memory, done_accessing_memory): New functions.
+	* target.h (prepare_to_access_memory, done_accessing_memory):
+	Replace macros with function declarations.
+
+2015-11-30  Pedro Alves  <palves@redhat.com>
+
+	PR 14618
+	* linux-low.c (linux_wait_1): If the last resumed thread is gone,
+	report TARGET_WAITKIND_NO_RESUMED.
+	* remote-utils.c (prepare_resume_reply): Handle
+	TARGET_WAITKIND_NO_RESUMED.
+	* server.c (report_no_resumed): New global.
+	(handle_query) <qSupported>: Handle "no-resumed+".  Report
+	"no-resumed+" support.
+	(resume): When the target reports TARGET_WAITKIND_NO_RESUMED, only
+	return error if the client doesn't support no-resumed events.
+	(push_stop_notification): New function.
+	(handle_target_event): Use it.  Report TARGET_WAITKIND_NO_RESUMED
+	events if the client supports them.
+
+2015-11-30  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (thread_still_has_status_pending_p): Don't check
+	vCont;t here.
+	(lwp_resumed): New function.
+	(status_pending_p_callback): Return early if the LWP is not
+	supposed to be resumed.
+
+2015-11-30  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (handle_extended_wait): Assert that the LWP's
+	waitstatus is TARGET_WAITKIND_IGNORE.  If GDB wants to hear about
+	thread create events, leave the new child's status pending.
+	(linux_low_filter_event): If GDB wants to hear about thread exit
+	events, leave the LWP marked dead and don't delete it.
+	(linux_wait_for_event_filtered): Don't check for thread exit.
+	(filter_exit_event): New function.
+	(linux_wait_1): Use it, when returning an exit event.
+	(linux_resume_one_lwp_throw): Assert that the LWP's
+	waitstatus is TARGET_WAITKIND_IGNORE.
+	* remote-utils.c (prepare_resume_reply): Handle
+	TARGET_WAITKIND_THREAD_CREATED and TARGET_WAITKIND_THREAD_EXITED.
+	* server.c (report_thread_events): New global.
+	(handle_general_set): Handle QThreadEvents.
+	(handle_query) <qSupported>: Handle and report QThreadEvents+;
+	(handle_target_event): Handle TARGET_WAITKIND_THREAD_CREATED and
+	TARGET_WAITKIND_THREAD_EXITED.
+	* server.h (report_thread_events): Declare.
+
+2015-11-30  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (resume_stopped_resumed_lwps): Don't check whether
+	the thread's last_resume_kind was resume_stop.
+
+2015-11-30  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_attach): In non-stop mode, wait for one stop
+	before returning.
+
+2015-11-30  Pedro Alves  <palves@redhat.com>
+
+	* server.c (handle_v_requests): Handle vCtrlC.
+
+2015-11-30  Pedro Alves  <palves@redhat.com>
+
+	* gdbthread.h (find_any_thread_of_pid): Declare.
+	* inferiors.c (thread_of_pid, find_any_thread_of_pid): New
+	functions.
+	* server.c (handle_query): If current_thread is NULL, look for
+	another thread of the selected process.
+
+2015-11-26  Daniel Colascione  <dancol@dancol.org>
+	    Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-low.c (linux_target_ops): Use linux_proc_tid_get_name.
+	* server.c (handle_qxfer_threads_worker): Refactor to include thread
+	name in reply.
+	* target.h (struct target_ops) <thread_name>: New field.
+	(target_thread_name): New macro.
+
+2015-11-23  Joel Brobecker  <brobecker@adacore.com>
+
+	* regcache.h (regcache_invalidate_pid): Add declaration.
+	* regcache.c (regcache_invalidate_pid): New function, extracted
+	from regcache_invalidate.
+	(regcache_invalidate): Reimplement using regcache_invalidate_pid.
+	Add trivial documentation comment.
+	* lynx-low.c: Use regcache_invalidate_pid instead of
+	regcache_invalidate.
+
+2015-11-23  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.ac: Do not call AC_CHECK_TYPES for Elf32_auxv_t
+	and Elf64_auxv_t if the target is Android.
+
+2015-11-22  Doug Evans  <xdje42@gmail.com>
+
+	* target.h: #include <sys/types.h>.
+
+2015-11-19  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_process_qsupported): Change prototype.
+	Adjust.
+	* linux-low.h (struct linux_target_ops) <process_qsupported>:
+	Change prototype.
+	* linux-x86-low.c (x86_linux_process_qsupported): Change prototype
+	and adjust to loop over all features.
+	* server.c (handle_query) <qSupported>: Adjust to call
+	target_process_qsupported once, passing it a vector of unprocessed
+	features.
+	* target.h (struct target_ops) <process_qsupported>: Change
+	prototype.
+	(target_process_qsupported): Adjust.
+
+2015-11-19  Pedro Alves  <palves@redhat.com>
+
+	* configure.ac (ERROR_ON_WARNING): Don't check whether in C++
+	mode.
+	* configure: Regenerate.
+
+2015-11-19  Pedro Alves  <palves@redhat.com>
+
+	* configure: Regenerate.
+
+2015-11-19  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (emit_data_processing_reg): Change opcode
+	type to uint32_t.
+
+2015-11-19  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (enum aarch64_operand_type): New.
+	(struct aarch64_operand): Move enum out.
+
+2015-11-19  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_fill_fpregset): Cast buf to
+	struct user_fpsimd_state *.
+	(aarch64_store_fpregset): Likewise.
+
+2015-11-19  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_fill_gregset): Cast buf to
+	struct user_pt_regs *.
+	(aarch64_store_gregset): Likewise.
+
+2015-11-18  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (all_object_files): Add $IPA_OBJS.
+
+2015-11-17  Pedro Alves  <palves@redhat.com>
+
+	* win32-low.c (win32_resume): Use gdb_signal_from_host,
+	GDB_SIGNAL_0 and gdb_signal_to_string.
+
+2015-11-17  Pedro Alves  <palves@redhat.com>
+
+	* win32-low.c (handle_output_debug_string): Remove parameter.
+	(win32_kill): Remove our_status local and adjust call to
+	handle_output_debug_string.
+	(get_child_debug_event): Adjust call to
+	handle_output_debug_string.
+
+2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-mips-low.c (mips_fill_gregset): Add cast.
+	(mips_store_gregset): Likewise.
+	(mips_fill_fpregset): Likewise.
+	(mips_store_fpregset): Likewise.
+
+2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-mips-low.c (mips_add_watchpoint): Rename private to
+	priv.
+
+2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-mips-low.c (mips_linux_new_thread): Change type of
+	watch_type to enum target_hw_bp_type.
+
+2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
+
+		* linux-arm-low.c (raw_bkpt_type_to_arm_hwbp_type):
+		Change return type to arm_hwbp_type.
+
+2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-aarch32-low.c (arm_fill_gregset): Add cast.
+	(arm_store_gregset): Likewise.
+	* linux-arm-low.c (arm_get_hwcap): Likewise.
+	(arm_read_description): Likewise.
+
+2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-aarch32-low.c (aarch32_regsets): Use NULL_REGSET.
+
+2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-ppc-low.c (ppc_get_hwcap): Add cast.
+	(ppc_fill_vsxregset): Likewise.
+	(ppc_store_vsxregset): Likewise.
+	(ppc_fill_vrregset): Likewise.
+	(ppc_store_vrregset): Likewise.
+	(ppc_fill_evrregset): Likewise.
+	(ppc_store_evrregset): Likewise.
+
+2015-11-03  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-ppc-low.c (ppc_usrregs_info): Remove
+	forward-declaration.
+	(ppc_arch_setup): Move lower in file.
+
+2015-10-30  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* proc-service.c (ps_pdread): Change CORE_ADDR cast to uintptr_t.
+	(ps_pdwrite): Likewise.
+
+2015-10-29 Henrik Wallin <henrik.wallin@windriver.com>
+
+	* linux-arm-low.c (arm_new_thread): Move pointer dereference
+	to after assert checks.
+
+2015-10-29  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* proc-service.c (ps_pdread): Add/adjust casts.
+	(ps_pdwrite): Add/adjust casts.
+
+2015-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* server.c (handle_search_memory_1): Cast return value of
+	memmem.
+
+2015-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* server.c (write_qxfer_response): Change type of data to
+	gdb_byte *.
+
+2015-10-29  Pedro Alves  <palves@redhat.com>
+
+	* mem-break.c (Z_packet_to_bkpt_type): Add cast.
+
+2015-10-29  Pedro Alves  <palves@redhat.com>
+
+	* tracepoint.c (clear_installed_tracepoints): Add casts.
+
+2015-10-29  Pedro Alves  <palves@redhat.com>
+
+	* server.c (handle_v_cont, process_serial_event): Add enum
+	gdb_signal casts to signal parsing code.
+
+2015-10-29  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.h (NULL_REGSET): Define.
+	* linux-aarch64-low.c (aarch64_regsets): Use NULL_REGSET.
+	* linux-arm-low.c (arm_regsets): Likewise.
+	* linux-crisv32-low.c (cris_regsets): Likewise.
+	* linux-m68k-low.c (m68k_regsets): Likewise.
+	* linux-mips-low.c (mips_regsets): Likewise.
+	* linux-nios2-low.c (nios2_regsets): Likewise.
+	* linux-ppc-low.c (ppc_regsets): Likewise.
+	* linux-s390-low.c (s390_regsets): Likewise.
+	* linux-sh-low.c (sh_regsets): Likewise.
+	* linux-sparc-low.c (sparc_regsets): Likewise.
+	* linux-tic6x-low.c (tic6x_regsets): Likewise.
+	* linux-tile-low.c (tile_regsets): Likewise.
+	* linux-x86-low.c (x86_regsets): Likewise.
+	* linux-xtensa-low.c (xtensa_regsets): Likewise.
+
+2015-10-29  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.h (NULL_REGSET): Define.
+	* linux-aarch64-low.c (aarch64_regsets): Use NULL_REGSET.
+	* linux-arm-low.c (arm_regsets): Likewise.
+	* linux-crisv32-low.c (cris_regsets): Likewise.
+	* linux-m68k-low.c (m68k_regsets): Likewise.
+	* linux-mips-low.c (mips_regsets): Likewise.
+	* linux-nios2-low.c (nios2_regsets): Likewise.
+	* linux-ppc-low.c (ppc_regsets): Likewise.
+	* linux-s390-low.c (s390_regsets): Likewise.
+	* linux-sh-low.c (sh_regsets): Likewise.
+	* linux-sparc-low.c (sparc_regsets): Likewise.
+	* linux-tic6x-low.c (tic6x_regsets): Likewise.
+	* linux-tile-low.c (tile_regsets): Likewise.
+	* linux-x86-low.c (x86_regsets): Likewise.
+	* linux-xtensa-low.c (xtensa_regsets): Likewise.
+
+2015-10-26  Doug Evans  <dje@google.com>
+
+	* linux-low.c (__SIGRTMIN): Move to nat/linux-nat.h.
+
+2015-10-26  Doug Evans  <dje@google.com>
+
+	* linux-low.c (W_STOPCODE): Moved to common/gdb_wait.h.
+
+2015-10-26  Doug Evans  <dje@google.com>
+
+	* thread-db.c (find_one_thread): Cast ti.ti_tid to unsigned long
+	for debug_printf.
+	(attach_thread, find_new_threads_callback): Ditto.
+
+2015-10-23  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* mem-break.h (set_breakpoint_data): Remove.
+
+2015-10-23  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* nto-low.c (nto_sw_breakpoint_from_kind): New function.
+	(struct target_ops) <sw_breakpoint_from_kind>: Initialize.
+	(initialize_low): Remove set_breakpoint_data call.
+	* spu-low.c (spu_sw_breakpoint_from_kind): New function.
+	(struct target_ops) <sw_breakpoint_from_kind>: Iniitalize.
+	(initialize_low): Remove set_breakpoint_data call.
+	* win32-low.c (win32_sw_breakpoint_from_kind): New function.
+	(struct target_ops) <sw_breakpoint_from_kind>: Initialize.
+	(initialize_low): Remove set_breakpoint_data call.
+
+2015-10-23  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-low.c (default_breakpoint_kind_from_pc): Move to target.c.
+	* mem-break.c (set_breakpoint_at): Use target_breakpoint_kind_from_pc.
+	* target.c (default_breakpoint_kind_from_pc): Moved from linux-low.c
+	* target.h (target_breakpoint_kind_from_pc): New macro.
+
+2015-10-22  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-low.c (default_breakpoint_kind_from_pc): New function.
+	(linux_breakpoint_kind_from_pc): Use default_breakpoint_kind_from_pc for
+	the default breakpoint kind.
+
+2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-arm-low.c (arm_supports_z_point_type): Add software
+	breakpoint support.
+
+2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-arm-low.c: Refactor breakpoint definitions.
+	(arm_breakpoint_at): Adjust for arm_abi_breakpoint.
+	(arm_sw_breakpoint_from_kind): Adjust for arm_breakpoint.
+
+2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* Makefile.in: Add arm.c/o.
+	* configure.srv: Likewise.
+	* linux-arm-low.c (arm_breakpoint_kinds): New enum.
+	(arm_breakpoint_kind_from_pc): New function.
+	(arm_sw_breakpoint_from_kind): Return proper kind.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize.
+
+2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-low.c (initialize_low): Ajdust for breakpoint global variables
+	removal.
+	* mem-break.c : Remove breakpoint_data/breakpoint_len global variables.
+	(struct raw_breakpoint) <size>: Remove.
+	(struct raw_breakpoint) <kind>: Add.
+	(bp_size): New function.
+	(bp_opcode): Likewise.
+	(find_raw_breakpoint_at): Adjust for kind.
+	(insert_memory_breakpoint): Adjust for kind call bp_size,bp_opcode.
+	(remove_memory_breakpoint): Adjust for kind call bp_size.
+	(set_raw_breakpoint_at): Adjust for kind.
+	(set_breakpoint): Likewise.
+	(set_breakpoint_at): Call breakpoint_kind_from_pc.
+	(delete_raw_breakpoint): Adjust for kind.
+	(delete_breakpoint): Likewise.
+	(find_gdb_breakpoint): Likewise.
+	(set_gdb_breakpoint_1): Likewise.
+	(set_gdb_breakpoint): Likewise.
+	(delete_gdb_breakpoint_1): Likewise.
+	(delete_gdb_breakpoint): Likewise.
+	(uninsert_raw_breakpoint): Likewise.
+	(reinsert_raw_breakpoint): Likewise.
+	(set_breakpoint_data): Remove.
+	(validate_inserted_breakpoint): Adjust for kind call bp_size,bp_opcode.
+	(check_mem_read): Adjust for kind call bp_size.
+	(check_mem_write): Adjust for kind call bp_size,bp_opcode.
+	(clone_one_breakpoint): Adjust for kind.
+	* mem-break.h (set_gdb_breakpoint): Likewise.
+	(delete_gdb_breakpoint): Likewise.
+	* server.c (process_serial_event): Likewise.
+
+2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-aarch64-low.c (aarch64_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-arm-low.c (arm_breakpoint_kind_from_pc): New function.
+	(arm_sw_breakpoint_from_kind): New function.
+	* linux-bfin-low.c (bfin_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-cris-low.c (cris_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-crisv32-low.c (cris_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-low.c (linux_wait_1): Call breakpoint_kind_from_pc
+	and sw_breakpoint_from_kind to increment the pc.
+	(linux_breakpoint_kind_from_pc): New function.
+	(linux_sw_breakpoint_from_kind): New function.
+	(struct target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	(initialize_low): Call breakpoint_kind_from_pc and
+	sw_breakpoint_from_kind to replace breakpoint_data/len.
+	* linux-low.h (struct linux_target_ops) <breakpoint_kind_from_pc>:
+	New field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Likewise.
+	* linux-m32r-low.c (m32r_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-m68k-low.c (m68k_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-mips-low.c (mips_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-nios2-low.c (nios2_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-ppc-low.c (ppc_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-s390-low.c (s390_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-sh-low.c (sh_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-sparc-low.c (sparc_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-tic6x-low.c (tic6x_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-tile-low.c (tile_sw_breakpoint_from_kind): New function.
+	* linux-x86-low.c (x86_sw_breakpoint_from_kind): New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+	* linux-xtensa-low.c (xtensa_sw_breakpoint_from_kind) New function.
+	(struct linux_target_ops) <breakpoint>: Remove.
+	(struct linux_target_ops) <breakpoint_len>: Remove.
+	(struct linux_target_ops) <breakpoint_kind_from_pc>: Initialize field.
+	(struct linux_target_ops) <sw_breakpoint_from_kind>: Initialize field.
+
+2015-10-21  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	* linux-cris-low.c (cris_get_pc): Remove void arg.
+
+2015-10-16  Aleksandar Ristovski  <aristovski@qnx.com>
+
+	* gdbserver/nto-low.c (nto_insert_point, nto_remove_point): Fix
+	variable name.
+
+2015-10-16  Aleksandar Ristovski  <aristovski@qnx.com>
+
+	* inferiors.c (thread_pid_matches_callback): New function.
+	(find_thread_process): New function.
+	(remove_thread): Reset current_thread.
+	(remove_process): Assert threads have been removed first.
+
+2015-10-15  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_insert_point): Set len to 2
+	if it is 3.
+	(aarch64_remove_point): Likewise.
+	* regcache.c (regcache_register_size): New function.
+
+2015-10-12  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c: Update all callers as emit_load_store
+	is renamed to aarch64_emit_load_store.
+
+2015-10-12  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c: Update all callers of function renaming
+	from emit_insn to aarch64_emit_insn.
+
+2015-10-12  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (enum aarch64_opcodes): Move to
+	arch/aarch64-insn.h.
+	(struct aarch64_memory_operand): Likewise.
+	(ENCODE): Likewise.
+	(emit_insn): Move to arch/aarch64-insn.c.
+	(emit_b, emit_bcond, emit_cb, emit_tb): Remove.
+	(emit_load_store): Move to arch/aarch64-insn.c.
+	(emit_ldr, emit_ldrb, emit_ldrsw, emit_nop): Remove.
+	(can_encode_int32): Remove.
+
+2015-10-12  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (extract_signed_bitfield): Remove.
+	(aarch64_decode_ldr_literal): Move to gdb/arch/aarch64-insn.c.
+	(aarch64_relocate_instruction): Likewise.
+	(struct aarch64_insn_data): Move to gdb/arch/aarch64-insn.h.
+	(struct aarch64_insn_visitor): Likewise.
+
+2015-10-12  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (struct aarch64_insn_data): New.
+	(struct aarch64_insn_visitor): New.
+	(struct aarch64_insn_relocation_data): New.
+	(aarch64_ftrace_insn_reloc_b): New function.
+	(aarch64_ftrace_insn_reloc_b_cond): Likewise.
+	(aarch64_ftrace_insn_reloc_cb): Likewise.
+	(aarch64_ftrace_insn_reloc_tb): Likewise.
+	(aarch64_ftrace_insn_reloc_adr): Likewise.
+	(aarch64_ftrace_insn_reloc_ldr_literal): Likewise.
+	(aarch64_ftrace_insn_reloc_others): Likewise.
+	(visitor): New.
+	(aarch64_relocate_instruction): Use visitor.
+
+2015-10-12  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_relocate_instruction): Return
+	int.  Add argument buf.
+	(aarch64_install_fast_tracepoint_jump_pad): Pass buf to
+	aarch64_relocate_instruction.
+
+2015-10-12  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_relocate_instruction): Add
+	argument insn.  Remove local variable insn.  Don't call
+	target_read_uint32.
+	(aarch64_install_fast_tracepoint_jump_pad): Call
+	target_read_uint32.
+
+2015-09-30  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (emit_movk): Shorten a long line.
+	(emit_load_store_pair): Likewise.
+
+2015-09-25  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* dll.c (match_dll): Add cast(s).
+	(unloaded_dll): Likewise.
+	* linux-low.c (second_thread_of_pid_p): Likewise.
+	(delete_lwp_callback): Likewise.
+	(count_events_callback): Likewise.
+	(select_event_lwp_callback): Likewise.
+	(linux_set_resume_request): Likewise.
+	* server.c (accumulate_file_name_length): Likewise.
+	(emit_dll_description): Likewise.
+	(handle_qxfer_threads_worker): Likewise.
+	(visit_actioned_threads): Likewise.
+	* thread-db.c (any_thread_of): Likewise.
+	* tracepoint.c (same_process_p): Likewise.
+	(match_blocktype): Likewise.
+	(build_traceframe_info_xml): Likewise.
+
+2015-09-25  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* ax.c (gdb_parse_agent_expr): Add cast to allocation result
+	assignment.
+	(gdb_unparse_agent_expr): Likewise.
+	* hostio.c (require_data): Likewise.
+	(handle_pread): Likewise.
+	* linux-low.c (disable_regset): Likewise.
+	(fetch_register): Likewise.
+	(store_register): Likewise.
+	(get_dynamic): Likewise.
+	(linux_qxfer_libraries_svr4): Likewise.
+	* mem-break.c (delete_fast_tracepoint_jump): Likewise.
+	(set_fast_tracepoint_jump): Likewise.
+	(uninsert_fast_tracepoint_jumps_at): Likewise.
+	(reinsert_fast_tracepoint_jumps_at): Likewise.
+	(validate_inserted_breakpoint): Likewise.
+	(clone_agent_expr): Likewise.
+	* regcache.c (init_register_cache): Likewise.
+	* remote-utils.c (putpkt_binary_1): Likewise.
+	(decode_M_packet): Likewise.
+	(decode_X_packet): Likewise.
+	(look_up_one_symbol): Likewise.
+	(relocate_instruction): Likewise.
+	(monitor_output): Likewise.
+	* server.c (handle_search_memory): Likewise.
+	(handle_qxfer_exec_file): Likewise.
+	(handle_qxfer_libraries): Likewise.
+	(handle_qxfer): Likewise.
+	(handle_query): Likewise.
+	(handle_v_cont): Likewise.
+	(handle_v_run): Likewise.
+	(captured_main): Likewise.
+	* target.c (write_inferior_memory): Likewise.
+	* thread-db.c (try_thread_db_load_from_dir): Likewise.
+	* tracepoint.c (init_trace_buffer): Likewise.
+	(add_tracepoint_action): Likewise.
+	(add_traceframe): Likewise.
+	(add_traceframe_block): Likewise.
+	(cmd_qtdpsrc): Likewise.
+	(cmd_qtdv): Likewise.
+	(cmd_qtstatus): Likewise.
+	(response_source): Likewise.
+	(response_tsv): Likewise.
+	(cmd_qtnotes): Likewise.
+	(gdb_collect): Likewise.
+	(initialize_tracepoint): Likewise.
+
+2015-09-21  Pierre Langlois  <pierre.langlois@arm.com>
+
+	* linux-aarch64-low-.c: Include ax.h and tracepoint.h.
+	(enum aarch64_opcodes) <RET>, <SUBS>, <AND>, <ORR>, <ORN>,
+	<EOR>, <LSLV>, <LSRV>, <ASRV>, <SBFM>, <UBFM>, <CSINC>, <MUL>,
+	<NOP>: New.
+	(enum aarch64_condition_codes): New enum.
+	(w0): New static global.
+	(fp): Likewise.
+	(lr): Likewise.
+	(struct aarch64_memory_operand) <type>: New
+	MEMORY_OPERAND_POSTINDEX type.
+	(postindex_memory_operand): New helper function.
+	(emit_ret): New function.
+	(emit_load_store_pair): New function, factored out of emit_stp
+	with support for MEMORY_OPERAND_POSTINDEX.
+	(emit_stp): Rewrite using emit_load_store_pair.
+	(emit_ldp): New function.
+	(emit_load_store): Likewise.
+	(emit_ldr): Mention post-index instruction in comment.
+	(emit_ldrh): New function.
+	(emit_ldrb): New function.
+	(emit_ldrsw): Mention post-index instruction in comment.
+	(emit_str): Likewise.
+	(emit_subs): New function.
+	(emit_cmp): Likewise.
+	(emit_and): Likewise.
+	(emit_orr): Likewise.
+	(emit_orn): Likewise.
+	(emit_eor): Likewise.
+	(emit_mvn): Likewise.
+	(emit_lslv): Likewise.
+	(emit_lsrv): Likewise.
+	(emit_asrv): Likewise.
+	(emit_mul): Likewise.
+	(emit_sbfm): Likewise.
+	(emit_sbfx): Likewise.
+	(emit_ubfm): Likewise.
+	(emit_ubfx): Likewise.
+	(emit_csinc): Likewise.
+	(emit_cset): Likewise.
+	(emit_nop): Likewise.
+	(emit_ops_insns): New helper function.
+	(emit_pop): Likewise.
+	(emit_push): Likewise.
+	(aarch64_emit_prologue): New function.
+	(aarch64_emit_epilogue): Likewise.
+	(aarch64_emit_add): Likewise.
+	(aarch64_emit_sub): Likewise.
+	(aarch64_emit_mul): Likewise.
+	(aarch64_emit_lsh): Likewise.
+	(aarch64_emit_rsh_signed): Likewise.
+	(aarch64_emit_rsh_unsigned): Likewise.
+	(aarch64_emit_ext): Likewise.
+	(aarch64_emit_log_not): Likewise.
+	(aarch64_emit_bit_and): Likewise.
+	(aarch64_emit_bit_or): Likewise.
+	(aarch64_emit_bit_xor): Likewise.
+	(aarch64_emit_bit_not): Likewise.
+	(aarch64_emit_equal): Likewise.
+	(aarch64_emit_less_signed): Likewise.
+	(aarch64_emit_less_unsigned): Likewise.
+	(aarch64_emit_ref): Likewise.
+	(aarch64_emit_if_goto): Likewise.
+	(aarch64_emit_goto): Likewise.
+	(aarch64_write_goto_address): Likewise.
+	(aarch64_emit_const): Likewise.
+	(aarch64_emit_call): Likewise.
+	(aarch64_emit_reg): Likewise.
+	(aarch64_emit_pop): Likewise.
+	(aarch64_emit_stack_flush): Likewise.
+	(aarch64_emit_zero_ext): Likewise.
+	(aarch64_emit_swap): Likewise.
+	(aarch64_emit_stack_adjust): Likewise.
+	(aarch64_emit_int_call_1): Likewise.
+	(aarch64_emit_void_call_2): Likewise.
+	(aarch64_emit_eq_goto): Likewise.
+	(aarch64_emit_ne_goto): Likewise.
+	(aarch64_emit_lt_goto): Likewise.
+	(aarch64_emit_le_goto): Likewise.
+	(aarch64_emit_gt_goto): Likewise.
+	(aarch64_emit_ge_got): Likewise.
+	(aarch64_emit_ops_impl): New static global variable.
+	(aarch64_emit_ops): New target function, return
+	&aarch64_emit_ops_impl.
+	(struct linux_target_ops): Install it.
+
+2015-09-21  Pierre Langlois  <pierre.langlois@arm.com>
+
+	* Makefile.in (linux-aarch64-ipa.o, aarch64-ipa.o): New rules.
+	* configure.srv (aarch64*-*-linux*): Add linux-aarch64-ipa.o and
+	aarch64-ipa.o.
+	* linux-aarch64-ipa.c: New file.
+	* linux-aarch64-low.c: Include arch/aarch64-insn.h, inttypes.h
+	and endian.h.
+	(aarch64_get_thread_area): New target method.
+	(extract_signed_bitfield): New helper function.
+	(aarch64_decode_ldr_literal): New function.
+	(enum aarch64_opcodes): New enum.
+	(struct aarch64_register): New struct.
+	(struct aarch64_operand): New struct.
+	(x0): New static global.
+	(x1): Likewise.
+	(x2): Likewise.
+	(x3): Likewise.
+	(x4): Likewise.
+	(w2): Likewise.
+	(ip0): Likewise.
+	(sp): Likewise.
+	(xzr): Likewise.
+	(aarch64_register): New helper function.
+	(register_operand): Likewise.
+	(immediate_operand): Likewise.
+	(struct aarch64_memory_operand): New struct.
+	(offset_memory_operand): New helper function.
+	(preindex_memory_operand): Likewise.
+	(enum aarch64_system_control_registers): New enum.
+	(ENCODE): New macro.
+	(emit_insn): New helper function.
+	(emit_b): New function.
+	(emit_bcond): Likewise.
+	(emit_cb): Likewise.
+	(emit_tb): Likewise.
+	(emit_blr): Likewise.
+	(emit_stp): Likewise.
+	(emit_ldp_q_offset): Likewise.
+	(emit_stp_q_offset): Likewise.
+	(emit_load_store): Likewise.
+	(emit_ldr): Likewise.
+	(emit_ldrsw): Likewise.
+	(emit_str): Likewise.
+	(emit_ldaxr): Likewise.
+	(emit_stxr): Likewise.
+	(emit_stlr): Likewise.
+	(emit_data_processing_reg): Likewise.
+	(emit_data_processing): Likewise.
+	(emit_add): Likewise.
+	(emit_sub): Likewise.
+	(emit_mov): Likewise.
+	(emit_movk): Likewise.
+	(emit_mov_addr): Likewise.
+	(emit_mrs): Likewise.
+	(emit_msr): Likewise.
+	(emit_sevl): Likewise.
+	(emit_wfe): Likewise.
+	(append_insns): Likewise.
+	(can_encode_int32_in): New helper function.
+	(aarch64_relocate_instruction): New function.
+	(aarch64_install_fast_tracepoint_jump_pad): Likewise.
+	(aarch64_get_min_fast_tracepoint_insn_len): Likewise.
+	(struct linux_target_ops): Install aarch64_get_thread_area,
+	aarch64_install_fast_tracepoint_jump_pad and
+	aarch64_get_min_fast_tracepoint_insn_len.
+
+2015-09-21  Pierre Langlois  <pierre.langlois@arm.com>
+
+	* Makefile.in (aarch64-insn.o): New rule.
+	* configure.srv (aarch64*-*-linux*): Add aarch64-insn.o.
+
+2015-09-21  Yao Qi  <yao.qi@linaro.org>
+
+	* ax.c [!IN_PROCESS_AGENT] (gdb_agent_op_sizes): Define it.
+
+2015-09-21  Yao Qi  <yao.qi@linaro.org>
+
+	* tracepoint.c (max_jump_pad_size): Remove.
+
+2015-09-18  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c: Don't include sys/uio.h.
+	(ps_get_thread_area): Call aarch64_ps_get_thread_area.
+
+2015-09-16  Wei-cheng Wang  <cole945@gmail.com>
+
+	* tracepoint.c (eval_result_type): Change prototype.
+	(condition_true_at_tracepoint): Fix argument to compiled_cond.
+
+2015-09-15  Pedro Alves  <palves@redhat.com>
+
+	* remote-utils.c (prepare_resume_reply) <TARGET_WAITKIND_EXECD>:
+	Check whether to report exec events instead of checking whether
+	multiprocess is enabled.
+
+2015-09-15  Pedro Alves  <palves@redhat.com>
+
+	PR remote/18965
+	* remote-utils.c (prepare_resume_reply): Merge
+	TARGET_WAITKIND_VFORK_DONE switch case with the
+	TARGET_WAITKIND_FORKED case.
+
+2015-09-15  Yao Qi  <yao.qi@linaro.org>
+
+	* server.c (handle_query): Check string comparison using
+	"else if" instead of "if".
+
+2015-09-15  Yao Qi  <yao.qi@linaro.org>
+
+	* server.c (vCont_supported): New global variable.
+	(handle_query): Set vCont_supported to 1 if "vContSupported+"
+	matches.  Append ";vContSupported+" to own_buf.
+	(handle_v_requests): Append ";s;S" to own_buf if target supports
+	hardware single step or vCont_supported is false.
+	(capture_main): Set vCont_supported to zero.
+
+2015-09-15  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_supports_conditional_breakpoints): Rename
+	it to ...
+	(linux_supports_hardware_single_step): ... New function.
+	(linux_target_ops): Update.
+	* lynx-low.c (lynx_target_ops): Set field
+	supports_hardware_single_step to target_can_do_hardware_single_step.
+	* nto-low.c (nto_target_ops): Likewise.
+	* spu-low.c (spu_target_ops): Likewise.
+	* win32-low.c (win32_target_ops): Likewise.
+	* target.c (target_can_do_hardware_single_step): New function.
+	* target.h (struct target_ops) <supports_conditional_breakpoints>:
+	Remove.  <supports_hardware_single_step>: New field.
+	(target_supports_conditional_breakpoints): Remove.
+	(target_supports_hardware_single_step): New macro.
+	(target_can_do_hardware_single_step): Declare.
+	* server.c (handle_query): Use target_supports_hardware_single_step
+	instead of target_supports_conditional_breakpoints.
+
+2015-09-15  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_linux_siginfo_fixup): New
+	function.
+	(struct linux_target_ops the_low_target): Install
+	aarch64_linux_siginfo_fixup.
+
+2015-09-11  Don Breazeal  <donb@codesourcery.com>
+	    Luis Machado  <lgustavo@codesourcery.com>
+
+	* linux-low.c (linux_mourn): Static declaration.
+	(linux_arch_setup): Move in front of
+	handle_extended_wait.
+	(linux_arch_setup_thread): New function.
+	(handle_extended_wait): Handle exec events.  Call
+	linux_arch_setup_thread.  Make event_lwp argument a
+	pointer-to-a-pointer.
+	(check_zombie_leaders): Do not check stopped threads.
+	(linux_low_ptrace_options): Add PTRACE_O_TRACEEXEC.
+	(linux_low_filter_event): Add lwp and thread for exec'ing
+	non-leader thread if leader thread has been deleted.
+	Refactor code into linux_arch_setup_thread and call it.
+	Pass child lwp pointer by reference to handle_extended_wait.
+	(linux_wait_for_event_filtered): Update comment.
+	(linux_wait_1): Prevent clobbering exec event status.
+	(linux_supports_exec_events): New function.
+	(linux_target_ops) <supports_exec_events>: Initialize new member.
+	* lynx-low.c (lynx_target_ops) <supports_exec_events>: Initialize
+	new member.
+	* remote-utils.c (prepare_resume_reply): New stop reason 'exec'.
+	* server.c (report_exec_events): New global variable.
+	(handle_query): Handle qSupported query for exec-events feature.
+	(captured_main): Initialize report_exec_events.
+	* server.h (report_exec_events): Declare new global variable.
+	* target.h (struct target_ops) <supports_exec_events>: New
+	member.
+	(target_supports_exec_events): New macro.
+	* win32-low.c (win32_target_ops) <supports_exec_events>:
+	Initialize new member.
+
+2015-09-09  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* linux-low.c (linux_low_enable_btrace): Remove.
+	(linux_target_ops): Replace linux_low_enable_btrace with
+	linux_enable_btrace.
+
+2015-09-03  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_insert_point): Call
+	aarch64_handle_watchpoint if aarch64_linux_region_ok_for_watchpoint
+	returns true.
+
+2015-08-27  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+	* linux-low.c (check_stopped_by_breakpoint): Use
+	GDB_ARCH_IS_TRAP_BRKPT instead of GDB_ARCH_TRAP_BRKPT.
+
+2015-08-27  Pedro Alves  <palves@redhat.com>
+
+	* proc-service.c (ps_pdwrite): Return PS_ERR/PS_OK explicily.
+
+2015-08-26  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* ax.c (gdb_parse_agent_expr): Replace xmalloc-family function with
+	the XNEW-family equivalent.
+	(compile_bytecodes): Likewise.
+	* dll.c (loaded_dll): Likewise.
+	* event-loop.c (append_callback_event): Likewise.
+	(create_file_handler): Likewise.
+	(create_file_event): Likewise.
+	* hostio.c (handle_open): Likewise.
+	* inferiors.c (add_thread): Likewise.
+	(add_process): Likewise.
+	* linux-aarch64-low.c (aarch64_linux_new_process): Likewise.
+	* linux-arm-low.c (arm_new_process): Likewise.
+	(arm_new_thread): Likewise.
+	* linux-low.c (add_to_pid_list): Likewise.
+	(linux_add_process): Likewise.
+	(handle_extended_wait): Likewise.
+	(add_lwp): Likewise.
+	(enqueue_one_deferred_signal): Likewise.
+	(enqueue_pending_signal): Likewise.
+	(linux_resume_one_lwp_throw): Likewise.
+	(linux_resume_one_thread): Likewise.
+	(linux_read_memory): Likewise.
+	(linux_write_memory): Likewise.
+	* linux-mips-low.c (mips_linux_new_process): Likewise.
+	(mips_linux_new_thread): Likewise.
+	(mips_add_watchpoint): Likewise.
+	* linux-x86-low.c (initialize_low_arch): Likewise.
+	* lynx-low.c (lynx_add_process): Likewise.
+	* mem-break.c (set_raw_breakpoint_at): Likewise.
+	(set_breakpoint): Likewise.
+	(add_condition_to_breakpoint): Likewise.
+	(add_commands_to_breakpoint): Likewise.
+	(clone_agent_expr): Likewise.
+	(clone_one_breakpoint): Likewise.
+	* regcache.c (new_register_cache): Likewise.
+	* remote-utils.c (look_up_one_symbol): Likewise.
+	* server.c (queue_stop_reply): Likewise.
+	(start_inferior): Likewise.
+	(queue_stop_reply_callback): Likewise.
+	(handle_target_event): Likewise.
+	* spu-low.c (fetch_ppc_memory): Likewise.
+	(store_ppc_memory): Likewise.
+	* target.c (set_target_ops): Likewise.
+	* thread-db.c (thread_db_load_search): Likewise.
+	(try_thread_db_load_1): Likewise.
+	* tracepoint.c (add_tracepoint): Likewise.
+	(add_tracepoint_action): Likewise.
+	(create_trace_state_variable): Likewise.
+	(cmd_qtdpsrc): Likewise.
+	(cmd_qtro): Likewise.
+	(add_while_stepping_state): Likewise.
+	* win32-low.c (child_add_thread): Likewise.
+	(get_image_name): Likewise.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_linux_new_thread): Remove.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* Makefile.in (aarch64-linux.o): New rule.
+	* configure.srv (aarch64*-*-linux*): Append aarch64-linux.o to
+	srv_tgtobj.
+	* linux-aarch64-low.c: Include nat/aarch64-linux.h.
+	(aarch64_init_debug_reg_state): Make it extern.
+	(aarch64_linux_prepare_to_resume): Remove.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_linux_prepare_to_resume): Use
+	lwp_arch_private_info and ptid_of_lwp.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_get_debug_reg_state): Add argument pid.
+	Find proc_info by find_process_pid.  All callers updated.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (struct arch64_dr_update_callback_param):
+	Remove.
+	(debug_reg_change_callback): Remove.
+	(aarch64_notify_debug_reg_change): Remove.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_notify_debug_reg_change):
+	Call current_lwp_ptid.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (debug_reg_change_callback): Use
+	debug_printf.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (debug_reg_change_callback): Use phex.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (debug_reg_change_callback): Remove comments.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (debug_reg_change_callback): Re-indent
+	the code.
+
+2015-08-25  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_dr_update_callback_param) <pid>:
+	Remove.
+	(debug_reg_change_callback): Remove argument entry and add argument
+	lwp.  Remove local variable thread.  Don't print thread id in the
+	debugging output.  Don't check whether pid of thread equals to pid.
+	(aarch64_notify_debug_reg_change): Don't set param.pid.  Call
+	iterate_over_lwps instead find_inferior.
+
+2015-08-24  Pedro Alves  <palves@redhat.com>
+
+	* inferiors.c (get_first_process): New function.
+	* inferiors.h (get_first_process): New declaration.
+	* remote-utils.c (read_ptid): Default to the first process in the
+	list, instead of to the current thread's process.
+
+2015-08-24  Pedro Alves  <palves@redhat.com>
+
+	* debug.c: Include gdb_sys_time.h instead of sys/time.h.
+	* event-loop.c: Likewise.
+	* remote-utils.c: Likewise.
+	* tracepoint.c: Likewise.
+
+2015-08-24  Pedro Alves  <palves@redhat.com>
+
+	* spu-low.c (spu_request_interrupt): Use lwpid_of instead of
+	ptid_get_lwp.
+
+2015-08-21  Pedro Alves  <palves@redhat.com>
+
+	* ax.c (gdb_eval_agent_expr): Return expr_eval_unhandled_opcode
+	instead of literal 1.
+
+2015-08-21  Pedro Alves  <palves@redhat.com>
+
+	* tdesc.c (default_description): Explicitly zero-initialize.
+
+2015-08-21  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/18749
+	* inferiors.c (remove_thread): Discard any pending stop reply for
+	this thread.
+	* server.c (remove_all_on_match_pid): Rename to ...
+	(remove_all_on_match_ptid): ... this.  Work with a filter ptid
+	instead of a pid.
+	(discard_queued_stop_replies): Change parameter to a ptid.  Now
+	extern.
+	(handle_v_kill, kill_inferior_callback, captured_main)
+	(process_serial_event): Adjust.
+	* server.h (discard_queued_stop_replies): Declare.
+
+2015-08-21  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (wait_for_sigstop): Always switch to no thread
+	selected if the previously current thread dies.
+	* lynx-low.c (lynx_request_interrupt): Use the first thread's
+	process instead of the current thread's.
+	* remote-utils.c (input_interrupt): Don't check if there's no
+	current thread.
+	* server.c (gdb_read_memory, gdb_write_memory): If setting the
+	current thread to the general thread fails, error out.
+	(handle_qxfer_auxv, handle_qxfer_libraries)
+	(handle_qxfer_libraries_svr4, handle_qxfer_siginfo)
+	(handle_qxfer_spu, handle_qxfer_statictrace, handle_qxfer_fdpic)
+	(handle_query): Check if there's a thread selected instead of
+	checking whether there's any thread in the thread list.
+	(handle_qxfer_threads, handle_qxfer_btrace)
+	(handle_qxfer_btrace_conf): Don't error out early if there's no
+	thread in the thread list.
+	(handle_v_cont, myresume): Don't set the current thread to the
+	continue thread.
+	(process_serial_event) <Hg handling>: Also set thread_id if the
+	previous general thread is still alive.
+	(process_serial_event) <g/G handling>: If setting the current
+	thread to the general thread fails, error out.
+	* spu-low.c (spu_resume, spu_request_interrupt): Use the first
+	thread's lwp instead of the current thread's.
+	* target.c (set_desired_thread): If the desired thread was not
+	found, leave the current thread pointing to NULL.  Return an int
+	(boolean) indicating success.
+	* target.h (set_desired_thread): Change return type to int.
+
+2015-08-20  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* configure.srv (xtensa*-*-linux*): Add srv_linux_thread_db=yes.
+	* linux-xtensa-low.c (arch/xtensa.h gdb_proc_service.h): New
+	#includes.
+	(ps_get_thread_area): New function.
+
+2015-08-19  Gary Benson  <gbenson@redhat.com>
+
+	* hostio.c (handle_pread): Do not attempt to read more data
+	than hostio_reply_with_data can fit in a packet.
+
+2015-08-18  Joel Brobecker  <brobecker@adacore.com>
+
+	* linux-aarch32-low.c (NT_ARM_VFP): Define if not already defined.
+
+2015-08-14  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+	* linux-low.c (get_r_debug): Handle DT_MIPS_RLD_MAP_REL.
+
+2015-08-06  Pedro Alves  <palves@redhat.com>
+
+	* tracepoint.c (expr_eval_result): Now an int.
+
+2015-08-06  Pedro Alves  <palves@redhat.com>
+
+	* gdbthread.h (struct regcache): Forward declare.
+	(struct thread_info) <regcache_data>: Now a struct regcache
+	pointer.
+	* inferiors.c (inferior_regcache_data)
+	(set_inferior_regcache_data): Now work with struct regcache
+	pointers.
+	* inferiors.h (struct regcache): Forward declare.
+	(inferior_regcache_data, set_inferior_regcache_data): Now work
+	with struct regcache pointers.
+	* regcache.c (get_thread_regcache, regcache_invalidate_thread)
+	(free_register_cache_thread): Remove struct regcache pointer
+	casts.
+
+2015-08-06  Pedro Alves  <palves@redhat.com>
+
+	* server.c (captured_main): On error, print the exception message
+	to stderr, and if run_once is set, throw a quit.
+
+2015-08-06  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (move_out_of_jump_pad_callback): Temporarily switch
+	the current thread.
+
+2015-08-06  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_write_memory): Rewrite debug output to avoid
+	reading beyond the passed in buffer length.
+
+2015-08-06  Pierre Langlois  <pierre.langlois@arm.com>
+
+	* tracepoint.c (symbol_list) <required>: Remove.
+
+2015-08-06  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (handle_extended_wait): Set the fork child's suspend
+	count if stopping and suspending threads.
+	(check_stopped_by_breakpoint): If stopped by trace, set the LWP's
+	stop reason to TARGET_STOPPED_BY_SINGLE_STEP.
+	(linux_detach): Complete an ongoing step-over.
+	(lwp_suspended_inc, lwp_suspended_decr): New functions.  Use
+	throughout.
+	(resume_stopped_resumed_lwps): Don't resume a suspended thread.
+	(linux_wait_1): If passing a signal to the inferior after
+	finishing a step-over, unsuspend and re-resume all lwps.  If we
+	see a single-step event but the thread should be continuing, don't
+	pass the trap to gdb.
+	(stuck_in_jump_pad_callback, move_out_of_jump_pad_callback): Use
+	internal_error instead of gdb_assert.
+	(enqueue_pending_signal): New function.
+	(check_ptrace_stopped_lwp_gone): Add debug output.
+	(start_step_over): Use internal_error instead of gdb_assert.
+	(complete_ongoing_step_over): New function.
+	(linux_resume_one_thread): Don't resume a suspended thread.
+	(proceed_one_lwp): If the LWP is stepping over a breakpoint, reset
+	it stepping.
+
+2015-08-06  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (add_lwp): Set waitstatus to TARGET_WAITKIND_IGNORE.
+	(linux_thread_alive): Use lwp_is_marked_dead.
+	(extended_event_reported): Delete.
+	(linux_wait_1): Check if waitstatus is TARGET_WAITKIND_IGNORE
+	instead of extended_event_reported.
+	(mark_lwp_dead): Don't set the 'dead' flag.  Store the waitstatus
+	as well.
+	(lwp_is_marked_dead): New function.
+	(lwp_running): Use lwp_is_marked_dead.
+	* linux-low.h: Delete 'dead' field, and update 'waitstatus's
+	comment.
+
+2015-08-06  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_wait_1): Move fork event output out of the
+	!report_to_gdb check.  Pass event_child->waitstatus to
+	target_waitstatus_to_string instead of ourstatus.
+
+2015-08-04  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_supports_tracepoints): Return 0
+	if current_thread is 32 bit.
+
+2015-08-04  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_supports_z_point_type): Return
+	0 for Z_PACKET_SW_BP if it may be used in multi-arch debugging.
+	* server.c (extended_protocol): Remove "static".
+	* server.h (extended_protocol): Declare it.
+
+2015-08-04  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_get_pc): Get PC register on
+	both aarch64 and aarch32.
+	(aarch64_set_pc): Likewise.
+
+2015-08-04  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv (case aarch64*-*-linux*): Append arm-with-neon.o
+	to srv_regobj and append arm-core.xml arm-vfpv3.xml and
+	arm-with-neon.xml to srv_xmlfiles.
+	* linux-aarch64-low.c: Include linux-aarch32-low.h.
+	(is_64bit_tdesc): New function.
+	(aarch64_linux_read_description): New function.
+	(aarch64_arch_setup): Call aarch64_linux_read_description.
+	(regs_info): Rename to regs_info_aarch64.
+	(aarch64_regs_info): Return right regs_info.
+	(initialize_low_arch): Call initialize_low_arch_aarch32.
+
+2015-08-04  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv (srv_tgtobj): Add linux-aarch32-low.o.
+	* linux-aarch32-low.c: New file.
+	* linux-aarch32-low.h: New file.
+	* linux-arm-low.c (arm_fill_gregset): Move it to
+	linux-aarch32-low.c.
+	(arm_store_gregset): Likewise.
+	(arm_fill_vfpregset): Call arm_fill_vfpregset_num
+	(arm_store_vfpregset): Call arm_store_vfpregset_num.
+	(arm_arch_setup): Check if PTRACE_GETREGSET works.
+	(regs_info): Rename to regs_info_arm.
+	(arm_regs_info): Return regs_info_aarch32 if
+	have_ptrace_getregset is 1 and target description is
+	arm_with_neon or arm_with_vfpv3.
+	(initialize_low_arch): Don't call init_registers_arm_with_neon.
+	Call initialize_low_arch_aarch32 instead.
+
+2015-08-04  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-x86-low.c (have_ptrace_getregset): Move it to ...
+	* linux-low.c: ... here.
+	* linux-low.h (have_ptrace_getregset): Declare it.
+
+2015-08-04  Pedro Alves  <palves@redhat.com>
+
+	* thread-db.c (struct thread_db): Use new typedefs.
+	(try_thread_db_load_1): Define local TDB_DLSYM macro and use it in
+	CHK calls.
+	(disable_thread_event_reporting): Cast result of dlsym to
+	destination function pointer type.
+	(thread_db_mourn): Use td_ta_delete_ftype.
+
+2015-08-03  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* linux-nios2-low.c (NIOS2_BREAKPOINT): Conditionalize for
+	arch variant.
+	(CDX_BREAKPOINT): Define for R2.
+	(nios2_breakpoint_at): Check for CDX_BREAKPOINT when R2.
+	(the_low_target): Add comments.
+
+2015-07-30  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c (arm_hwcap): Remove it.
+	(arm_read_description): New local variable arm_hwcap.  Don't
+	set arm_hwcap to zero.
+
+2015-07-30  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c (arm_fill_wmmxregset): Don't use arm_hwcap.
+	Use regcache->tdesc instead.
+	(arm_store_wmmxregset): Likewise.
+	(arm_fill_vfpregset): Likewise.
+	(arm_store_vfpregset): Likewise.
+
+2015-07-30  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-arm-low.c: Include arch/arm.h.
+	(arm_fill_gregset): Don't use arm_num_regs and arm_regmap.
+	(arm_store_gregset): Likewise.
+
+2015-07-29  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-mips-low.c (mips_linux_prepare_to_resume): Add NULL as
+	ptrace's 4th parameter.
+
+2015-07-27  Yao Qi  <yao.qi@linaro.org>
+
+	* configure.srv (case aarch64*-*-linux*): Don't set
+	srv_linux_usrregs.
+
+2015-07-24  Pedro Alves  <palves@redhat.c: Likewise.om>
+
+	* linux-aarch64-low.c: Include nat/gdb_ptrace.h instead of
+	sys/ptrace.h.
+	* linux-arm-low.c: Likewise.
+	* linux-cris-low.c: Likewise.
+	* linux-crisv32-low.c: Likewise.
+	* linux-low.c: Likewise.
+	* linux-m68k-low.c: Likewise.
+	* linux-mips-low.c: Likewise.
+	* linux-nios2-low.c: Likewise.
+	* linux-s390-low.c: Likewise.
+	* linux-sparc-low.c: Likewise.
+	* linux-tic6x-low.c: Likewise.
+	* linux-tile-low.c: Likewise.
+	* linux-x86-low.c: Likewise.
+
+2015-07-24  Pedro Alves  <palves@redhat.com>
+
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
+2015-07-24  Pedro Alves  <palves@redhat.com>
+
+	* acinclude.m4: Include ../ptrace.m4.
+	* configure.ac: Call GDB_AC_PTRACE.
+	* config.in, configure: Regenerate.
+
+2015-07-24  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_create_inferior): Remove setting to
+	proc->priv->new_inferior.
+	(linux_attach): Likewise.
+	(linux_low_filter_event): Likewise.
+	* linux-low.h (struct process_info_private) <new_inferior>: Remove.
+
+2015-07-24  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_arch_setup): New function.
+	(linux_low_filter_event): If proc->tdesc is NULL and
+	proc->attached is true, call the_low_target.arch_setup.
+	Otherwise, keep status pending, and return.
+	(linux_resume_one_lwp_throw): Don't call get_pc if
+	thread->while_stepping isn't NULL.  Don't call
+	get_thread_regcache if proc->tdesc is NULL.
+	(need_step_over_p): Return 0 if proc->tdesc is NULL.
+	(linux_target_ops): Install arch_setup.
+	* server.c (start_inferior): Call the_target->arch_setup.
+	* target.h (struct target_ops) <arch_setup>: New field.
+	(target_arch_setup): New marco.
+	* lynx-low.c (lynx_target_ops): Update.
+	* nto-low.c (nto_target_ops): Update.
+	* spu-low.c (spu_target_ops): Update.
+	* win32-low.c (win32_target_ops): Update.
+
+2015-07-24  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_add_process): Don't set
+	proc->priv->new_inferior.
+	(linux_create_inferior): Set proc->priv->new_inferior to 1.
+	(linux_attach): Likewise.
+
+2015-07-24  Yao Qi  <yao.qi@linaro.org>
+
+	* server.c (start_inferior): Code refactor.
+
+2015-07-24  Yao Qi  <yao.qi@linaro.org>
+
+	* server.c (process_serial_event): Set general_thread.
+
+2015-07-21  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_arch_setup): Remove code and call
+	aarch64_linux_get_debug_reg_capacity.
+
+2015-07-17  Yao Qi  <yao.qi@linaro.org>
+
+	* Makefile.in (aarch64-linux-hw-point.o): New rule.
+	* configure.srv (srv_tgtobj): Append aarch64-linux-hw-point.o.
+	* linux-aarch64-low.c: Include nat/aarch64-linux-hw-point.h.
+	(AARCH64_HBP_MAX_NUM): Move to nat/aarch64-linux-hw-point.h.
+	(AARCH64_HWP_MAX_NUM, AARCH64_HBP_ALIGNMENT): Likewise.
+	(AARCH64_HWP_ALIGNMENT): Likewise.
+	(AARCH64_HWP_MAX_LEN_PER_REG): Likewise.
+	(AARCH64_DEBUG_NUM_SLOTS, AARCH64_DEBUG_ARCH): Likewise.
+	(aarch64_num_bp_regs, aarch64_num_wp_regs): Likewise.
+	(AARCH64_DEBUG_ARCH_V8, DR_MARK_ALL_CHANGED): Likewise.
+	(DR_MARK_N_CHANGED, DR_CLEAR_CHANGED): Likewise.
+	(DR_HAS_CHANGED, DR_N_HAS_CHANGE): Likewise.
+	(struct aarch64_debug_reg_state): Likewise.
+	(struct arch_lwp_info):	Likewise.
+	(aarch64_align_watchpoint): Likewise.
+	(DR_CONTROL_ENABLED, DR_CONTROL_LENGTH): Likewise.
+	(aarch64_watchpoint_length): Likewise.
+	(aarch64_point_encode_ctrl_reg): Likewise
+	(aarch64_point_is_aligned): Likewise.
+	(aarch64_align_watchpoint): Likewise.
+	(aarch64_linux_set_debug_regs):
+	(aarch64_dr_state_insert_one_point): Likewise.
+	(aarch64_dr_state_remove_one_point): Likewise.
+	(aarch64_handle_breakpoint): Likewise.
+	(aarch64_handle_aligned_watchpoint): Likewise.
+	(aarch64_handle_unaligned_watchpoint): Likewise.
+	(aarch64_handle_watchpoint): Likewise.
+
+2015-07-17  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_handle_breakpoint): Add argument state
+	and don't aarch64_get_debug_reg_state.  All callers update.
+	(aarch64_handle_aligned_watchpoint): Likewise.
+	(aarch64_handle_unaligned_watchpoint): Likewise.
+	(aarch64_handle_watchpoint): Likewise.
+	(aarch64_insert_point): Call aarch64_get_debug_reg_state earlier.
+	(aarch64_remove_point): Likewise.
+
+2015-07-17  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_show_debug_reg_state): Use
+	debug_printf.
+	(aarch64_handle_unaligned_watchpoint): Likewise.
+
+2015-07-15  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Revert the previous 3 commits:
+	Move gdb_regex* to common/
+	Move linux_find_memory_regions_full & co.
+	gdbserver build-id attribute generator
+
+2015-07-15  Aleksandar Ristovski  <aristovski@qnx.com
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	gdbserver build-id attribute generator.
+	* linux-low.c (nat/linux-maps.h, search.h, rsp-low.h): Include.
+	(ElfXX_Ehdr, ElfXX_Phdr, ElfXX_Nhdr): New.
+	(ELFXX_FLD, ELFXX_SIZEOF, ELFXX_ROUNDUP, BUILD_ID_INVALID): New.
+	(find_phdr): New.
+	(get_dynamic): Use find_pdhr to traverse program headers.
+	(struct mapping_entry, mapping_entry_s, free_mapping_entry_vec)
+	(compare_mapping_entry_range, struct find_memory_region_callback_data)
+	(read_build_id, find_memory_region_callback, lrfind_mapping_entry)
+	(get_hex_build_id): New.
+	(linux_qxfer_libraries_svr4): Add optional build-id attribute
+	to reply XML document.
+
+2015-07-15  Aleksandar Ristovski  <aristovski@qnx.com
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* target.c: Include target/target-utils.h and fcntl.h.
+	(target_fileio_read_stralloc_1_pread, target_fileio_read_stralloc_1)
+	(target_fileio_read_stralloc): New functions.
+
+2015-07-15  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* Makefile.in (OBS): Add gdb_regex.o.
+	(gdb_regex.o): New.
+	* config.in: Rebuilt.
+	* configure: Rebuilt.
+
+2015-07-15  Aleksandar Ristovski  <aristovski@qnx.com
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Create empty nat/linux-maps.[ch] and common/target-utils.[ch].
+	* Makefile.in (OBS): Add target-utils.o.
+	(linux-maps.o, target-utils.o): New.
+	* configure.srv (srv_linux_obj): Add linux-maps.o.
+
+2015-07-15  Pierre Langlois  <pierre.langlois@arm.com>
+
+	* linux-aarch64-low.c (aarch64_supports_range_stepping): New
+	function, return 1.
+	(the_low_target): Install it.
+
+2015-07-14  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (kill_wait_lwp): Don't assert if waitpid fails.
+	Instead, ignore ECHILD, and throw an error for other errnos.
+
+2015-07-10  Pedro Alves  <palves@redhat.com>
+
+	* event-loop.c (struct callback_event) <data>: Change type to
+	gdb_client_data instance instead of gdb_client_data pointer.
+	(append_callback_event): Adjust.
+
+2015-07-10  Pierre Langlois  <pierre.langlois@arm.com>
+
+	* linux-aarch64-low.c: Add comments for each linux_target_ops
+	method.  Remove comments already covered in target_ops and
+	linux_target_ops definitions.
+	(the_low_target): Add comments for each unimplemented method.
+
+2015-07-09  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_regmap): Remove.
+	(aarch64_usrregs_info): Remove.
+	(regs_info): Set field usrregs to NULL.
+
+2015-07-02  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* linux-low.c: Include "rsp-low.h"
+	(linux_low_encode_pt_config, linux_low_encode_raw): New.
+	(linux_low_read_btrace): Support BTRACE_FORMAT_PT.
+	(linux_low_btrace_conf): Support BTRACE_FORMAT_PT.
+	(handle_btrace_enable_pt): New.
+	(handle_btrace_general_set): Support "pt".
+	(handle_btrace_conf_general_set): Support "pt:size".
+
+2015-06-29  Pierre Langlois  <pierre.langlois@arm.com>
+
+	* linux-aarch64-low.c (aarch64_supports_z_point_type): Enable for
+	Z_PACKET_SW_BP.
+
+2015-06-29  Pierre Langlois  <pierre.langlois@arm.com>
+
+	* linux-aarch64-low.c: Remove comment about endianness.
+	(aarch64_breakpoint): Change type to gdb_byte[].  Set to "brk #0".
+	(aarch64_breakpoint_at): Change type of insn to gdb_byte[].  Use
+	memcmp.
+
+2015-06-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-i386-ipa.c (stdint.h): Do not include.
+	* lynx-i386-low.c (stdint.h): Likewise.
+	* lynx-ppc-low.c (stdint.h): Likewise.
+	* mem-break.c (stdint.h): Likewise.
+	* thread-db.c (stdint.h): Likewise.
+	* tracepoint.c (stdint.h): Likewise.
+	* win32-low.c (stdint.h): Likewise.
+
+2015-06-18  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* server.c (write_qxfer_response): Update call to
+	remote_escape_output.
+
+2015-06-15  Aleksandar Ristovski  <aristovski@qnx.com
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Merge multiple hex conversions.
+	* gdbreplay.c (tohex): Rename to 'fromhex'.
+	(logchar): Use fromhex.
+
+2015-06-10  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* server.c (handle_qxfer_libraries): Set `version' attribute for
+	<library-list>.
+
+2015-06-10  Gary Benson  <gbenson@redhat.com>
+
+	* target.h (struct target_ops) <multifs_open>: New field.
+	<multifs_unlink>: Likewise.
+	<multifs_readlink>: Likewise.
+	* linux-low.c (nat/linux-namespaces.h): New include.
+	(linux_target_ops): Initialize the_target->multifs_open,
+	the_target->multifs_unlink and the_target->multifs_readlink.
+	* hostio.h (hostio_handle_new_gdb_connection): New declaration.
+	* hostio.c (hostio_fs_pid): New static variable.
+	(hostio_handle_new_gdb_connection): New function.
+	(handle_setfs): Likewise.
+	(handle_open): Use the_target->multifs_open as appropriate.
+	(handle_unlink): Use the_target->multifs_unlink as appropriate.
+	(handle_readlink): Use the_target->multifs_readlink as
+	appropriate.
+	(handle_vFile): Handle vFile:setfs packets.
+	* server.c (handle_query): Call hostio_handle_new_gdb_connection
+	after target_handle_new_gdb_connection.
+
+2015-06-10  Gary Benson  <gbenson@redhat.com>
+
+	* configure.ac (AC_CHECK_FUNCS): Add setns.
+	* config.in: Regenerate.
+	* configure: Likewise.
+	* Makefile.in (SFILES): Add nat/linux-namespaces.c.
+	(linux-namespaces.o): New rule.
+	* configure.srv (srv_linux_obj): Add linux-namespaces.o.
+
+2015-06-09  Gary Benson <gbenson@redhat.com>
+
+	* hostio.c (handle_open): Process mode argument with
+	fileio_to_host_mode.
+
+2015-06-01  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-s390-low.c (PTRACE_GETREGSET, PTRACE_SETREGSET): Remove.
+	* linux-x86-low.c: Likewise.
+
+2015-05-28  Don Breazeal  <donb@codesourcery.com>
+
+	* linux-low.c (handle_extended_wait): Initialize
+	thread_info.last_resume_kind for new fork children.
+
+2015-05-15  Pedro Alves  <palves@redhat.com>
+
+	* target.h (target_handle_new_gdb_connection): Rewrite using if
+	wrapped in do/while.
+
+2015-05-14  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.ac: Add prfpregset_t BFD_HAVE_SYS_PROCFS_TYPE check.
+	* configure, config.in: Regenerate.
+	* gdb_proc_service.h [HAVE_PRFPREGSET_T] (prfpregset_t):
+	Declare typedef.
+
+2015-05-12  Don Breazeal  <donb@codesourcery.com>
+
+	* linux-low.c (handle_extended_wait): Handle PTRACE_EVENT_FORK and
+	PTRACE_EVENT_VFORK_DONE.
+	(linux_low_ptrace_options, extended_event_reported): Add vfork
+	events.
+	* remote-utils.c (prepare_resume_reply): New stop reasons "vfork"
+	and "vforkdone" for RSP 'T' Stop Reply Packet.
+	* server.h (report_vfork_events): Declare
+	global variable.
+
+2015-05-12  Don Breazeal  <donb@codesourcery.com>
+
+	* linux-aarch64-low.c (aarch64_linux_new_fork): New function.
+	(the_low_target) <new_fork>: Initialize new member.
+	* linux-arm-low.c (arm_new_fork): New function.
+	(the_low_target) <new_fork>: Initialize new member.
+	* linux-low.c (handle_extended_wait): Call new target function
+	new_fork.
+	* linux-low.h (struct linux_target_ops) <new_fork>: New member.
+	* linux-mips-low.c (mips_add_watchpoint): New function
+	extracted from mips_insert_point.
+	(the_low_target) <new_fork>: Initialize new member.
+	(mips_linux_new_fork): New function.
+	(mips_insert_point): Call mips_add_watchpoint.
+	* linux-x86-low.c (x86_linux_new_fork): New function.
+	(the_low_target) <new_fork>: Initialize new member.
+
+2015-05-12  Don Breazeal  <donb@codesourcery.com>
+
+	* linux-low.c (handle_extended_wait): Implement return value,
+	rename argument 'event_child' to 'event_lwp', handle
+	PTRACE_EVENT_FORK, call internal_error for unrecognized event.
+	(linux_low_ptrace_options): New function.
+	(linux_low_filter_event): Call linux_low_ptrace_options,
+	use different argument fo linux_enable_event_reporting,
+	use return value from handle_extended_wait.
+	(extended_event_reported): New function.
+	(linux_wait_1): Call extended_event_reported and set
+	status to report fork events.
+	(linux_write_memory): Add pid to debug message.
+	(reset_lwp_ptrace_options_callback): New function.
+	(linux_handle_new_gdb_connection): New function.
+	(linux_target_ops): Initialize new structure member.
+	* linux-low.h (struct lwp_info) <waitstatus>: New member.
+	* lynx-low.c: Initialize new structure member.
+	* remote-utils.c (prepare_resume_reply): Implement stop reason
+	"fork" for "T" stop message.
+	* server.c (handle_query): Call handle_new_gdb_connection.
+	* server.h (report_fork_events): Declare global flag.
+	* target.h (struct target_ops) <handle_new_gdb_connection>:
+	New member.
+	(target_handle_new_gdb_connection): New macro.
+	* win32-low.c: Initialize new structure member.
+
+2015-05-12  Don Breazeal  <donb@codesourcery.com>
+
+	* mem-break.c (APPEND_TO_LIST): Define macro.
+	(clone_agent_expr): New function.
+	(clone_one_breakpoint): New function.
+	(clone_all_breakpoints): New function.
+	* mem-break.h: Declare new functions.
+
+2015-05-12  Don Breazeal  <donb@codesourcery.com>
+
+	* linux-low.c (linux_supports_fork_events): New function.
+	(linux_supports_vfork_events): New function.
+	(linux_target_ops): Initialize new structure members.
+	(initialize_low): Call linux_check_ptrace_features.
+	* lynx-low.c (lynx_target_ops): Initialize new structure
+	members.
+	* server.c (report_fork_events, report_vfork_events):
+	New global flags.
+	(handle_query): Add new features to qSupported packet and
+	response.
+	(captured_main): Initialize new global variables.
+	* target.h (struct target_ops) <supports_fork_events>:
+	New member.
+	<supports_vfork_events>: New member.
+	(target_supports_fork_events): New macro.
+	(target_supports_vfork_events): New macro.
+	* win32-low.c (win32_target_ops): Initialize new structure
+	members.
+
+2015-05-12  Gary Benson <gbenson@redhat.com>
+
+	* server.c (handle_qxfer_exec_file): Use current process
+	if annex is empty.
+
+2015-05-08  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* linux-nios2-low.c: Include elf/common.h.  Adjust comments.
+	Remove HAVE_PTRACE_GETREGS conditionals.
+	(nios2_regsets): Use PTRACE_GETREGSET and PTRACE_SETREGSET
+	instead of PTRACE_GETREGS and PTRACE_SETREGS.
+
+2015-05-08  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_supports_conditional_breakpoints): New
+	function.
+	(linux_target_ops): Install new target method.
+	* lynx-low.c (lynx_target_ops): Install NULL hook for
+	supports_conditional_breakpoints.
+	* nto-low.c (nto_target_ops): Likewise.
+	* spu-low.c (spu_target_ops): Likewise.
+	* win32-low.c (win32_target_ops): Likewise.
+	* server.c (handle_query): Check
+	target_supports_conditional_breakpoints.
+	* target.h (struct target_ops) <supports_conditional_breakpoints>:
+	New field.
+	(target_supports_conditional_breakpoints): New macro.
+
+2015-05-06  Pedro Alves  <palves@redhat.com>
+
+	PR server/18081
+	* server.c (start_inferior): If the process exits, mourn it.
+
+2015-04-21  Gary Benson <gbenson@redhat.com>
+
+	* hostio.c (fileio_open_flags_to_host): Factored out to
+	fileio_to_host_openflags in common/fileio.c.  Single use
+	updated.
+
+2015-04-17  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* linux-xtensa-low.c (xtensa_fill_gregset)
+	(xtensa_store_gregset): Check XCHAL_HAVE_LOOPS instead of
+	XCHAL_HAVE_LOOP.
+
+2015-04-17  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* linux-xtensa-low.c (xtensa_usrregs_info): Remove.
+	(regs_info): Replace usrregs pointer with NULL.
+
+2015-04-17  Gary Benson  <gbenson@redhat.com>
+
+	* target.h (struct target_ops) <pid_to_exec_file>: New field.
+	* linux-low.c (linux_target_ops): Initialize pid_to_exec_file.
+	* server.c (handle_qxfer_exec_file): New function.
+	(qxfer_packets): Add exec-file entry.
+	(handle_query): Report qXfer:exec-file:read as supported packet.
+
+2015-04-14  Romain Naour <romain.naour@openwide.fr>  (tiny change)
+
+	* linux-low.c (linux_read_offsets): Remove get_thread_lwp.
+
+2015-04-09  Gary Benson <gbenson@redhat.com>
+
+	* hostio-errno.c (errno_to_fileio_error): Remove function.
+	Update caller to use remote_fileio_to_fio_error.
+
+2015-04-09  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (linux_insert_point): Call
+	insert_memory_breakpoint if TYPE is raw_bkpt_type_sw.
+	(linux_remove_point): Call remove_memory_breakpoint if type is
+	raw_bkpt_type_sw.
+	* linux-x86-low.c (x86_insert_point): Don't call
+	insert_memory_breakpoint.
+	(x86_remove_point): Don't call remove_memory_breakpoint.
+
+2015-04-01  Pedro Alves  <palves@redhat.com>
+	    Cleber Rosa  <crosa@redhat.com>
+
+	* server.c (gdbserver_usage): Reorganize and extend the usage
+	message.
+
+2015-03-24  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (check_stopped_by_breakpoint): Tweak debug log
+	output.  Also dump TRAP_TRACE.
+	(linux_low_filter_event): In debug output, distinguish a
+	resume_stop SIGSTOP from a delayed SIGSTOP.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-x86-low.c (x86_linux_new_thread): Moved to
+	nat/x86-linux.c.
+	(x86_linux_prepare_to_resume): Likewise.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* Makefile.in (x86-linux-dregs.o): New rule.
+	* configure.srv: Add x86-linux-dregs.o to relevant targets.
+	* linux-x86-low.c: Include nat/x86-linux-dregs.h.
+	(u_debugreg_offset): Moved to nat/x86-linux-dregs.c.
+	(x86_linux_dr_get): Likewise.
+	(x86_linux_dr_set): Likewise.
+	(update_debug_registers_callback): Likewise.
+	(x86_linux_dr_set_addr): Likewise.
+	(x86_linux_dr_get_addr): Likewise.
+	(x86_linux_dr_set_control): Likewise.
+	(x86_linux_dr_get_control): Likewise.
+	(x86_linux_dr_get_status): Likewise.
+	(x86_linux_update_debug_registers): Likewise.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-x86-low.c (x86_linux_update_debug_registers):
+	New function, factored out from...
+	(x86_linux_prepare_to_resume): ...this.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-x86-low.c (x86_linux_dr_get): Update comments.
+	(x86_linux_dr_set): Likewise.
+	(update_debug_registers_callback): Likewise.
+	(x86_linux_dr_set_addr): Likewise.
+	(x86_linux_dr_get_addr): Likewise.
+	(x86_linux_dr_set_control): Likewise.
+	(x86_linux_dr_get_control): Likewise.
+	(x86_linux_dr_get_status): Likewise.
+	(x86_linux_prepare_to_resume): Likewise.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-x86-low.c (x86_linux_dr_get): Add assertion.
+	Use perror_with_name.  Pass string through gettext.
+	(x86_linux_dr_set): Likewise.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-x86-low.c (x86_dr_low_set_addr): Rename to...
+	(x86_linux_dr_set_addr): ...this.
+	(x86_dr_low_get_addr): Rename to...
+	(x86_linux_dr_get_addr): ...this.
+	(x86_dr_low_set_control): Rename to...
+	(x86_linux_dr_set_control): ...this.
+	(x86_dr_low_get_control): Rename to...
+	(x86_linux_dr_get_control): ...this.
+	(x86_dr_low_get_status): Rename to...
+	(x86_linux_dr_get_status): ...this.
+	(x86_dr_low): Update with new function names.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* Makefile.in (x86-linux.o): New rule.
+	* configure.srv: Add x86-linux.o to relevant targets.
+	* linux-low.c (lwp_set_arch_private_info): New function.
+	(lwp_arch_private_info): Likewise.
+	* linux-x86-low.c: Include nat/x86-linux.h.
+	(arch_lwp_info): Removed structure.
+	(update_debug_registers_callback):
+	Use lwp_set_debug_registers_changed.
+	(x86_linux_prepare_to_resume): Use lwp_debug_registers_changed
+	and lwp_set_debug_registers_changed.
+	(x86_linux_new_thread): Use lwp_set_debug_registers_changed.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-low.h (linux_target_ops) <new_thread>: Changed signature.
+	* linux-arm-low.c (arm_new_thread): Likewise.
+	* linux-aarch64-low.c (aarch64_linux_new_thread): Likewise.
+	* linux-mips-low.c (mips_linux_new_thread): Likewise.
+	* linux-x86-low.c (x86_linux_new_thread): Likewise.
+	* linux-low.c (add_lwp): Update the_low_target.new_thread call.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-low.c (ptid_of_lwp): New function.
+	(lwp_is_stopped): Likewise.
+	(lwp_stop_reason): Likewise.
+	* linux-x86-low.c (update_debug_registers_callback):
+	Use lwp_is_stopped.
+	(x86_linux_prepare_to_resume): Use ptid_of_lwp and
+	lwp_stop_reason.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-low.h (linux_stop_lwp): Remove declaration.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-low.h: Include nat/linux-nat.h.
+	* linux-low.c (iterate_over_lwps_args): New structure.
+	(iterate_over_lwps_filter): New function.
+	(iterate_over_lwps): Likewise.
+	* linux-x86-low.c (update_debug_registers_callback):
+	Update signature to what iterate_over_lwps expects.
+	Remove PID check that iterate_over_lwps now performs.
+	(x86_dr_low_set_addr): Use iterate_over_lwps.
+	(x86_dr_low_set_control): Likewise.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-x86-low.c (x86_debug_reg_state): New function.
+	(x86_linux_prepare_to_resume): Use the above.
+
+2015-03-24  Gary Benson  <gbenson@redhat.com>
+
+	* linux-low.c (current_lwp_ptid): New function.
+	* linux-x86-low.c: Include nat/linux-nat.h.
+	(x86_dr_low_get_addr): Use current_lwp_ptid.
+	(x86_dr_low_get_control): Likewise.
+	(x86_dr_low_get_status): Likewise.
+
+2015-03-20  Pedro Alves  <palves@redhat.com>
+
+	* tracepoint.c (cmd_qtstatus): Make "str" const.
+
+2015-03-20  Pedro Alves  <palves@redhat.com>
+
+	* server.c (handle_general_set): Make "req_str" const.
+
+2015-03-19  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_resume_one_lwp): Rename to ...
+	(linux_resume_one_lwp_throw): ... this.  Don't handle ESRCH here,
+	instead call perror_with_name.
+	(check_ptrace_stopped_lwp_gone): New function.
+	(linux_resume_one_lwp): Reimplement as wrapper around
+	linux_resume_one_lwp_throw that swallows errors if the LWP is
+	gone.
+
+2015-03-19  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (count_events_callback, select_event_lwp_callback):
+	No longer check whether the thread has resume_stop as last resume
+	kind.
+
+2015-03-19 Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (count_events_callback, select_event_lwp_callback):
+	Use the lwp's status_pending_p field, not the thread's.
+
+2015-03-19  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (select_event_lwp_callback): Update comments to
+	no longer mention SIGTRAP.
+
+2015-03-18  Gary Benson  <gbenson@redhat.com>
+
+	* server.c (handle_query): Do not report vFile:fstat as supported.
+
+2015-03-11  Gary Benson  <gbenson@redhat.com>
+
+	* hostio.c (sys/types.h): New include.
+	(sys/stat.h): Likewise.
+	(common-remote-fileio.h): Likewise.
+	(handle_fstat): New function.
+	(handle_vFile): Handle vFile:fstat packets.
+
+2015-03-11  Gary Benson  <gbenson@redhat.com>
+
+	* configure.ac (AC_CHECK_MEMBERS): Add checks for
+	struct stat.st_blocks and struct stat.st_blksize.
+	* configure: Regenerate.
+	* config.in: Likewise.
+	* Makefile.in (SFILES): Add common/common-remote-fileio.c.
+	(OBS): Add common-remote-fileio.o.
+	(common-remote-fileio.o): New rule.
+
+2015-03-09  Pedro Alves  <palves@redhat.com>
+
+	* tracepoint.c (gdb_agent_helper_thread): Cast '&sockaddr' to
+	'struct sockaddr' pointer in 'accept' call.
+
+2015-03-09  Pedro Alves  <palves@redhat.com>
+
+	Revert:
+	2015-03-07  Pedro Alves  <palves@redhat.com>
+	* gdbreplay.c: No longer include <netinet/in.h>, <sys/socket.h>,
+	or <winsock2.h> here.  Instead include "gdb_socket.h".
+	(remote_open): Use union gdb_sockaddr_u.
+	* remote-utils.c: No longer include <netinet/in.h>, <sys/socket.h>
+	or <winsock2.h> here.  Instead include "gdb_socket.h".
+	(handle_accept_event, remote_prepare): Use union gdb_sockaddr_u.
+	* tracepoint.c: Include "gdb_socket.h" instead of <sys/socket.h>
+	or <sys/un.h>.
+	(init_named_socket, gdb_agent_helper_thread): Use union
+	gdb_sockaddr_u.
+
+2015-03-07  Pedro Alves  <palves@redhat.com>
+
+	* configure.ac (build_warnings): Move
+	-Wdeclaration-after-statement to the C-specific set.
+	* configure: Regenerate.
+
+2015-03-07  Pedro Alves  <palves@redhat.com>
+
+	* gdbreplay.c: No longer include <netinet/in.h>, <sys/socket.h>,
+	or <winsock2.h> here.  Instead include "gdb_socket.h".
+	(remote_open): Use union gdb_sockaddr_u.
+	* remote-utils.c: No longer include <netinet/in.h>, <sys/socket.h>
+	or <winsock2.h> here.  Instead include "gdb_socket.h".
+	(handle_accept_event, remote_prepare): Use union gdb_sockaddr_u.
+	* tracepoint.c: Include "gdb_socket.h" instead of <sys/socket.h>
+	or <sys/un.h>.
+	(init_named_socket, gdb_agent_helper_thread): Use union
+	gdb_sockaddr_u.
+
+2015-03-07  Pedro Alves  <palves@redhat.com>
+
+	Adjust all callers of TRY_CATCH to use TRY/CATCH/END_CATCH
+	instead.
+
+2015-03-06  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_insert_point): Use
+	show_debug_regs as a boolean.
+	(aarch64_remove_point): Likewise.
+
+2015-03-05  Pedro Alves  <palves@redhat.com>
+
+	* lynx-low.c (lynx_target_ops): Install NULL hooks for
+	stopped_by_sw_breakpoint, supports_stopped_by_sw_breakpoint,
+	stopped_by_hw_breakpoint, supports_stopped_by_hw_breakpoint.
+	* nto-low.c (nto_target_ops): Likewise.
+	* spu-low.c (spu_target_ops): Likewise.
+	* win32-low.c (win32_target_ops): Likewise.
+
+2015-03-04  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (check_stopped_by_breakpoint) [USE_SIGTRAP_SIGINFO]:
+	Decide whether a breakpoint triggered based on the SIGTRAP's
+	siginfo.si_code.
+	(thread_still_has_status_pending_p) [USE_SIGTRAP_SIGINFO]: Don't check whether a
+	breakpoint is inserted if relying on SIGTRAP's siginfo.si_code.
+	(linux_low_filter_event): Check for breakpoints before checking
+	watchpoints.
+	(linux_wait_1): Don't re-increment the PC if relying on SIGTRAP's
+	siginfo.si_code.
+	(linux_stopped_by_sw_breakpoint)
+	(linux_supports_stopped_by_sw_breakpoint)
+	(linux_stopped_by_hw_breakpoint)
+	(linux_supports_stopped_by_hw_breakpoint): New functions.
+	(linux_target_ops): Install new target methods.
+
+2015-03-04  Pedro Alves  <palves@redhat.com>
+
+	* remote-utils.c (prepare_resume_reply): Report swbreak/hbreak.
+	* server.c (swbreak_feature, hwbreak_feature): New globals.
+	(handle_query) <qSupported>: Handle "swbreak+" and "hwbreak+".
+	(captured_main): Clear swbreak_feature and hwbreak_feature.
+	* server.h (swbreak_feature, hwbreak_feature): Declare.
+	* target.h (struct target_ops) <stopped_by_sw_breakpoint,
+	supports_stopped_by_sw_breakpoint, stopped_by_hw_breakpoint,
+	supports_stopped_by_hw_breakpoint>: New fields.
+	(target_supports_stopped_by_sw_breakpoint)
+	(target_stopped_by_sw_breakpoint)
+	(target_supports_stopped_by_hw_breakpoint)
+	(target_stopped_by_hw_breakpoint): Declare.
+
+2015-03-04  Pedro Alves  <palves@redhat.com>
+
+	enum lwp_stop_reason -> enum target_stop_reason
+	* linux-low.c (check_stopped_by_breakpoint): Adjust.
+	(thread_still_has_status_pending_p, check_stopped_by_watchpoint)
+	(linux_wait_1, stuck_in_jump_pad_callback)
+	(move_out_of_jump_pad_callback, linux_resume_one_lwp)
+	(linux_stopped_by_watchpoint):
+	* linux-low.h (enum lwp_stop_reason): Delete.
+	(struct lwp_info) <stop_reason>: Now an enum target_stop_reason.
+	* linux-x86-low.c (x86_linux_prepare_to_resume): Adjust.
+
+2015-03-04  Yao Qi  <yao.qi@linaro.org>
+
+	* Makefile.in (SFILES): Add linux-aarch64-low.c.
+
+2015-03-03  Gary Benson  <gbenson@redhat.com>
+
+	* hostio.c (handle_vFile): Fix prefix lengths.
+
+2015-03-03  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* linux-low.c (linux_low_enable_btrace): Do not overwrite non-zero
+	ptr_bits.
+
+2015-03-02  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* Makefile.in (s390-vx-linux64.c, s390-tevx-linux64.c)
+	(s390x-vx-linux64.c, s390x-tevx-linux64.c): New rules.
+	(clean): Add "rm -f" for above C files.
+	* configure.srv (srv_regobj): Add s390-vx-linux64.o,
+	s390-tevx-linux64.o, s390x-vx-linux64.o, and s390x-tevx-linux64.o.
+	(srv_xmlfiles): Add s390-vx-linux64.xml, s390-tevx-linux64.xml,
+	s390x-vx-linux64.xml, s390x-tevx-linux64.xml, and s390-vx.xml.
+	* linux-s390-low.c (HWCAP_S390_VX): New macro.
+	(init_registers_s390_vx_linux64, init_registers_s390_tevx_linux64)
+	(init_registers_s390x_vx_linux64)
+	(init_registers_s390x_tevx_linux64)
+	(tdesc_s390_vx_linux64, tdesc_s390_tevx_linux64)
+	(tdesc_s390x_vx_linux64, tdesc_s390x_tevx_linux64): New extern
+	declarations.
+	(s390_fill_vxrs_low, s390_store_vxrs_low, s390_fill_vxrs_high)
+	(s390_store_vxrs_high): New functions.
+	(s390_regsets): Add entries for NT_S390_VXRS_LOW and
+	NT_S390_VXRS_HIGH.
+	(s390_arch_setup): Add logic for selecting one of the new target
+	descriptions.  Activate the new vector regsets if applicable.
+	(initialize_low_arch): Also invoke init_registers_s390_vx_linux64,
+	init_registers_s390_tevx_linux64, init_registers_s390x_vx_linux64,
+	and init_registers_s390x_tevx_linux64.
+
+2015-03-01  Pedro Alves  <palves@redhat.com>
+
+	* linux-i386-ipa.c (gdb_agent_get_raw_reg): Constify 'raw_regs'
+	parameter.
+
+2015-02-27  Pedro Alves  <palves@redhat.com>
+
+	* linux-x86-low.c (u_debugreg_offset): New function.
+	(x86_linux_dr_get, x86_linux_dr_set): Use it.
+
+2015-02-27  Pedro Alves  <palves@redhat.com>
+
+	* gdb_proc_service.h: Wrap with EXTERN_C_PUSH/EXTERN_C_POP.
+	[!HAVE_PROC_SERVICE_H] (struct ps_prochandle): Forward declare.
+	[!HAVE_PROC_SERVICE_H] (ps_pdread, ps_pdwrite, ps_ptread)
+	ps_ptwrite, ps_lgetregs, ps_lsetregs, ps_lgetfpregs)
+	(ps_lsetfpregs, ps_getpid)
+	(ps_get_thread_area, ps_pglobal_lookup, ps_pstop, ps_pcontinue)
+	(ps_lstop, ps_lcontinue, ps_lgetxregsize, ps_lgetxregs)
+	(ps_lsetxregs, ps_plog): Declare.
+
+2015-02-27  Pedro Alves  <palves@redhat.com>
+
+	* linux-amd64-ipa.c (gdb_agent_get_raw_reg): Use
+	IP_AGENT_EXPORT_FUNC.
+	* linux-i386-ipa.c (gdb_agent_get_raw_reg): Use
+	IP_AGENT_EXPORT_FUNC.
+	* tracepoint.c (ATTR_USED, ATTR_NOINLINE, ATTR_CONSTRUCTOR)
+	(IP_AGENT_EXPORT): Delete.
+	(gdb_tp_heap_buffer, gdb_jump_pad_buffer, gdb_jump_pad_buffer_end)
+	(gdb_trampoline_buffer, gdb_trampoline_buffer_end)
+	(gdb_trampoline_buffer_error, collecting, gdb_collect)
+	(stop_tracing, flush_trace_buffer, about_to_request_buffer_space)
+	(trace_buffer_is_full, stopping_tracepoint, expr_eval_result)
+	(error_tracepoint, tracepoints, tracing, trace_buffer_ctrl)
+	(trace_buffer_ctrl_curr, trace_buffer_lo, trace_buffer_hi)
+	(traceframe_read_count, traceframe_write_count)
+	(traceframes_created, trace_state_variables, get_raw_reg)
+	(get_trace_state_variable_value, set_trace_state_variable_value)
+	(ust_loaded, helper_thread_id, cmd_buf): Use
+	IPA_SYM_EXPORTED_NAME.
+	(stop_tracing, flush_trace_buffer): Use IP_AGENT_EXPORT_FUNC.
+	(tracepoints) Use IP_AGENT_EXPORT_VAR.
+	(stopping_tracepoint, trace_buffer_is_full, expr_eval_result): Use
+	IP_AGENT_EXPORT_VAR and wrap in EXTERN_C_PUSH/EXTERN_C_POP.
+	(last_tracepoint): Move into !IN_PROCESS_AGENT block.
+	(error_tracepoint): Use IP_AGENT_EXPORT_VAR and wrap in
+	EXTERN_C_PUSH/EXTERN_C_POP.
+	(trace_state_variables): Use IP_AGENT_EXPORT_VAR.
+	(trace_buffer_lo, trace_buffer_hi): Use IP_AGENT_EXPORT_VAR and
+	wrap in EXTERN_C_PUSH/EXTERN_C_POP.
+	(trace_buffer_ctrl, trace_buffer_ctrl_curr)
+	(traceframe_write_count, traceframe_read_count)
+	(traceframes_created, tracing): Use IP_AGENT_EXPORT_VAR.
+	(about_to_request_buffer_space, get_trace_state_variable_value)
+	(set_trace_state_variable_value): Use IP_AGENT_EXPORT_FUNC.
+	(collecting): Use IP_AGENT_EXPORT_VAR and wrap in
+	EXTERN_C_PUSH/EXTERN_C_POP.
+	(gdb_collect): Use IP_AGENT_EXPORT_FUNC.
+	(ust_loaded, cmd_buf): Use IP_AGENT_EXPORT_VAR.
+	(helper_thread_id, gdb_agent_capability): Use IP_AGENT_EXPORT_VAR
+	and wrap in EXTERN_C_PUSH/EXTERN_C_POP.
+	(gdb_tp_heap_buffer, gdb_jump_pad_buffer, gdb_jump_pad_buffer_end)
+	(gdb_trampoline_buffer, gdb_trampoline_buffer_end)
+	(gdb_trampoline_buffer_error): Use IP_AGENT_EXPORT_VAR.
+	* tracepoint.h (ATTR_USED, ATTR_NOINLINE, EXPORTED_SYMBOL):
+	Define.
+	(IP_AGENT_EXPORT_FUNC, IP_AGENT_EXPORT_VAR)
+	(IP_AGENT_EXPORT_VAR_DECL): Define.
+	(tracing): Declare.
+	(gdb_agent_get_raw_reg): Declare.
+
+2015-02-27  Tom Tromey  <tromey@redhat.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	Rename symbols whose names are reserved C++ keywords throughout.
+
+2015-02-27  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (COMPILER): New, get it from autoconf.
+	(CXX): Get from autoconf instead.
+	(COMPILE.pre): Use COMPILER.
+	(CC-LD): Rename to ...
+	(CC_LD): ... this.  Use COMPILER.
+	(gdbserver$(EXEEXT), gdbreplay$(EXEEXT), $(IPA_LIB)): Adjust.
+	(CXX_FOR_TARGET): Default to g++ instead of gcc.
+	* acinclude.m4: Include build-with-cxx.m4.
+	* configure.ac: Call AC_PROG_CXX and GDB_AC_BUILD_WITH_CXX.
+	Disable -Werror by default if building in C++ mode.
+	(build_warnings): Add -Wno-sign-compare, -Wno-write-strings and
+	-Wno-narrowing in C++ mode. Run supported-warning-flags tests with
+	the C++ compiler.  Save/restore CXXFLAGS too.
+	* configure: Regenerate.
+
+2015-02-27  Pedro Alves  <palves@redhat.com>
+
+	* acinclude.m4: Include libiberty.m4.
+	* configure.ac: Call libiberty_INIT.
+	* config.in, configure: Regenerate.
+
+2015-02-26  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_wait_1): When incrementing the PC past a
+	program breakpoint always use the_low_target.breakpoint_len as
+	increment, rather than the maximum between that and
+	the_low_target.decr_pc_after_break.
+
+2015-02-23  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (check_stopped_by_breakpoint): Don't check if the
+	thread was doing a step-over; always adjust the PC if
+	we stepped over a permanent breakpoint.
+	(linux_wait_1): If we stepped over breakpoint that was on top of a
+	permanent breakpoint, manually advance the PC past it.
+
+2015-02-23  Pedro Alves  <palves@redhat.com>
+
+	* linux-x86-low.c (REGSIZE): Define in both 32-bit and 64-bit
+	modes.
+	(x86_fill_gregset, x86_store_gregset): Use it when handling
+	$orig_eax.
+
+2015-02-20  Pedro Alves  <palves@redhat.com>
+
+	* thread-db.c: Include "nat/linux-procfs.h".
+	(thread_db_init): Skip listing new threads if the kernel supports
+	PTRACE_EVENT_CLONE and /proc/PID/task/ is accessible.
+
+2015-02-20  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (status_pending_p_callback): Use ptid_match.
+
+2015-02-19  Antoine Tremblay  <antoine.tremblay@ericsson.com>
+
+	PR breakpoints/16812
+	* linux-low.c (wstatus_maybe_breakpoint): Remove.
+	(linux_low_filter_event): Update wstatus_maybe_breakpoint name.
+	(linux_wait_1): Report SIGTRAP,SIGILL,SIGSEGV.
+
+2015-02-10  Antoine Tremblay <antoine.tremblay@ericsson.com>
+
+	PR breakpoints/15956
+	* tracepoint.c (cmd_qtinit): Add check for current_thread.
+
+2015-02-09  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* linux-low.c (linux_low_btrace_conf): Print size.
+	* server.c (handle_btrace_conf_general_set): New.
+	(hanle_general_set): Call handle_btrace_conf_general_set.
+	(handle_query): Report Qbtrace-conf:bts:size as supported.
+
+2015-02-09  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* linux-low.c (linux_low_enable_btrace): Update parameters.
+	(linux_low_btrace_conf): New.
+	(linux_target_ops)<to_btrace_conf>: Initialize.
+	* server.c (current_btrace_conf): New.
+	(handle_btrace_enable): Rename to ...
+	(handle_btrace_enable_bts): ... this.  Pass &current_btrace_conf
+	to target_enable_btrace.  Update comment.  Update users.
+	(handle_qxfer_btrace_conf): New.
+	(qxfer_packets): Add btrace-conf entry.
+	(handle_query): Report qXfer:btrace-conf:read as supported packet.
+	* target.h (target_ops)<enable_btrace>: Update parameters and comment.
+	(target_ops)<read_btrace_conf>: New.
+	(target_enable_btrace): Update parameters.
+	(target_read_btrace_conf): New.
+
+2015-02-09  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* server.c (handle_btrace_general_set): Remove call to
+	target_supports_btrace.
+	(supported_btrace_packets): New.
+	(handle_query): Call supported_btrace_packets.
+	* target.h: include btrace-common.h.
+	(btrace_target_info): Removed.
+	(supports_btrace, target_supports_btrace): Update parameters.
+
+2015-02-09  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* Makefile.in (SFILES): Add common/btrace-common.c.
+	(OBS): Add common/btrace-common.o.
+	(btrace-common.o): Add build rules.
+	* linux-low: Include btrace-common.h.
+	(linux_low_read_btrace): Use struct btrace_data.  Call
+	btrace_data_init and btrace_data_fini.
+
+2015-02-06  Pedro Alves  <palves@redhat.com>
+
+	* thread-db.c (find_new_threads_callback): Add debug output.
+
+2015-02-04  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (handle_extended_wait): Don't resume LWPs here.
+	(resume_stopped_resumed_lwps): New function.
+	(linux_wait_for_event_filtered): Use it.
+
+2015-01-15  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* Makefile.in (SFILES): Add linux-personality.c.
+	(linux-personality.o): New rule.
+	* configure.srv (srv_linux_obj): Add linux-personality.o to the
+	list of objects to be built.
+	* linux-low.c: Include nat/linux-personality.h.
+	(linux_create_inferior): Remove code to disable address space
+	randomization (moved to ../nat/linux-personality.c).  Create
+	cleanup to disable address space randomization.
+
+2015-01-15  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* Makefile.in (posix-strerror.o): New rule.
+	(mingw-strerror.o): Likewise.
+	* configure: Regenerated.
+	* configure.ac: Source file ../common/common.host.  Initialize new
+	variable srv_host_obs.  Add srv_host_obs to GDBSERVER_DEPFILES.
+
+2015-01-14  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (SFILES): Add nat/ppc-linux.c.
+	(ppc-linux.o): New rule.
+	* configure.srv (powerpc*-*-linux*): Add ppc-linux.o.
+	* configure.ac: AC_CHECK_FUNCS(getauxval).
+	* config.in: Re-generated.
+	* configure: Re-generated.
+	* linux-ppc-low.c (ppc_arch_setup) [__powerpc64__]: Call
+	ppc64_64bit_inferior_p
+
+2015-01-14  Yao Qi  <yao@codesourcery.com>
+
+	* linux-ppc-low.c: Include "nat/ppc-linux.h".
+	 (PPC_FEATURE_HAS_VSX): Move to nat/ppc-linux.h.
+	(PPC_FEATURE_HAS_ALTIVEC,  PPC_FEATURE_HAS_SPE): Likewise.
+	(PT_ORIG_R3, PT_TRAP): Likewise.
+	(PTRACE_GETVSXREGS, PTRACE_SETVSXREGS): Likewise.
+	(PTRACE_GETVRREGS, PTRACE_SETVRREGS): Likewise.
+	(PTRACE_GETEVRREGS, PTRACE_SETEVRREGS): Likewise.
+
+2015-01-10  Joel Brobecker  <brobecker@adacore.com>
+
+	* i387-fp.c (i387_cache_to_xsave): In look over
+	num_avx512_zmmh_high_registers, replace use of struct i387_xsave
+	zmmh_low_space field by use of zmmh_high_space.
+
+2015-01-09  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (step_over_bkpt): Move higher up in the file.
+	(handle_extended_wait): Don't store the stop_pc here.
+	(get_stop_pc): Adjust comments and rename to ...
+	(check_stopped_by_breakpoint): ... this.  Record whether the LWP
+	stopped for a software breakpoint or hardware breakpoint.
+	(thread_still_has_status_pending_p): New function.
+	(status_pending_p_callback): Use
+	thread_still_has_status_pending_p.  If the event is no longer
+	interesting, resume the LWP.
+	(handle_tracepoints): Add assert.
+	(maybe_move_out_of_jump_pad): Remove cancel_breakpoints call.
+	(wstatus_maybe_breakpoint): New function.
+	(cancel_breakpoint): Delete function.
+	(check_stopped_by_watchpoint): New function, factored out from
+	linux_low_filter_event.
+	(lp_status_maybe_breakpoint): Delete function.
+	(linux_low_filter_event): Remove filter_ptid argument.
+	Leave thread group exits pending here.	Store the LWP's stop PC.
+	Always leave events pending.
+	(linux_wait_for_event_filtered): Pull all events out of the
+	kernel, and leave them all pending.
+	(count_events_callback, select_event_lwp_callback): Consider all
+	events.
+	(cancel_breakpoints_callback, linux_cancel_breakpoints): Delete.
+	(select_event_lwp): Only give preference to the stepping LWP in
+	all-stop mode.	Adjust comments.
+	(ignore_event): New function.
+	(linux_wait_1): Delete 'retry' label.  Use ignore_event.  Remove
+	references to cancel_breakpoints.  Adjust to renames.  Also give
+	equal priority to all LWPs that have had events in non-stop mode.
+	If reporting a software breakpoint event, unadjust the LWP's PC.
+	(linux_wait): If linux_wait_1 returned an ignored event, retry.
+	(stuck_in_jump_pad_callback, move_out_of_jump_pad_callback):
+	Adjust.
+	(linux_resume_one_lwp): Store the LWP's PC.  Adjust.
+	(resume_status_pending_p): Use thread_still_has_status_pending_p.
+	(linux_stopped_by_watchpoint): Adjust.
+	(linux_target_ops): Remove reference to linux_cancel_breakpoints.
+	* linux-low.h (enum lwp_stop_reason): New.
+	(struct lwp_info) <stop_pc>: Adjust comment.
+	<stopped_by_watchpoint>: Delete field.
+	<stop_reason>: New field.
+	* linux-x86-low.c (x86_linux_prepare_to_resume): Adjust.
+	* mem-break.c (software_breakpoint_inserted_here)
+	(hardware_breakpoint_inserted_here): New function.
+	* mem-break.h (software_breakpoint_inserted_here)
+	(hardware_breakpoint_inserted_here): Declare.
+	* target.h (struct target_ops) <cancel_breakpoints>: Remove field.
+	(cancel_breakpoints): Delete.
+	* tracepoint.c (clear_installed_tracepoints, stop_tracing)
+	(upload_fast_traceframes): Remove references to
+	cancel_breakpoints.
+
+2015-01-09  Pedro Alves  <palves@redhat.com>
+
+	* thread-db.c (find_new_threads_callback): Ignore thread if the
+	kernel thread ID is -1.
+
+2015-01-09  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_attach_fail_reason_string): Move to
+	nat/linux-ptrace.c, and rename.
+	(linux_attach_lwp): Update comment.
+	(attach_proc_task_lwp_callback): New function.
+	(linux_attach): Adjust to rename and use
+	linux_proc_attach_tgid_threads.
+	(linux_attach_fail_reason_string): Delete declaration.
+
+2015-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbreplay.c (gdbreplay_version): Update copyright year to 2015.
+	* server.c (gdbserver_version): Likewise.
+
+2014-12-29  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* remote-utils.c: Include ctype.h.
+	(input_interrupt): Explicitly handle the case when the char
+	received is the NUL byte.  Improve the printing of non-ASCII
+	characters.
+
+2014-12-16  Joel Brobecker  <brobecker@adacore.com>
+
+	* linux-low.c (linux_low_filter_event): Update call to
+	linux_enable_event_reporting following the addition of
+	a new parameter to that function.
+
+2014-12-16  Catalin Udma  <catalin.udma@freescale.com>
+
+	PR server/17457
+	* linux-aarch64-low.c (AARCH64_FPSR_REGNO): New define.
+	(AARCH64_FPCR_REGNO): Likewise.
+	(AARCH64_NUM_REGS): Update to include fpsr/fpcr registers.
+	(aarch64_fill_fpregset): Add missing fpsr/fpcr registers.
+	(aarch64_store_fpregset): Likewise.
+
+2014-12-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_resume): Use PTRACE_SINGLESTEP_ONE if N == 1.
+	Remove FIXME comment about assumption about N.
+
+2014-12-13  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.ac: If large-file support is disabled in GDBserver,
+	pass --disable-largefile to ACX_CONFIGURE_DIR call for "gnulib".
+	* configure: Regenerate.
+
+2014-12-12  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-low.c (regsets_fetch_inferior_registers): Suppress the
+	warning upon ENODATA from ptrace.
+	* linux-s390-low.c (s390_store_tdb): New.
+	(s390_regsets): Add regset for NT_S390_TDB.
+
+2014-12-12  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-low.c (regsets_store_inferior_registers): Skip regsets
+	without a fill_function.
+	* linux-s390-low.c (s390_fill_last_break): Remove.
+	(s390_regsets): Set fill_function to NULL for NT_S390_LAST_BREAK.
+	(s390_arch_setup): Use regset's size instead of fill_function for
+	loop end condition.
+
+2014-12-12  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-low.c (regsets_fetch_inferior_registers): Do not invoke
+	the regset's store function when ptrace returned an error.
+	* regcache.c (get_thread_regcache): Invalidate register cache
+	before fetching inferior's registers.
+
+2014-12-12  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-low.c (regsets_fetch_inferior_registers): Rephrase
+	while-loop as for-loop.
+	(regsets_store_inferior_registers): Likewise.
+
+2014-11-28  Yao Qi  <yao@codesourcery.com>
+
+	* configure.ac(AC_CHECK_FUNCS): Remove readlink.
+	* config.in, configure: Re-generate.
+	* hostio.c (handle_unlink): Remove code checking HAVE_READLINK
+	is defined.
+
+2014-11-21  Yao Qi  <yao@codesourcery.com>
+
+	* configure.ac: Don't invoke AC_FUNC_ALLOCA.
+	(AC_CHECK_HEADERS): Remove malloc.h.
+	* configure: Re-generated.
+	* config.in: Re-generated.
+	* server.h: Don't include alloca.h and malloc.h.
+	* gdbreplay.c: Don't check HAVE_ALLOCA_H is defined.
+	Don't include malloc.h.
+
+2014-11-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_write_memory): Put lynx_read_memory and
+	corresponding ERRNO check in same block.
+
+2014-11-12  Pedro Alves  <palves@redhat.com>
+
+	* server.c (cont_thread): Update comment.
+	(start_inferior, attach_inferior): No longer clear cont_thread.
+	(handle_v_cont): No longer set cont_thread.
+	(captured_main): Clear cont_thread each time a GDB connects.
+
+2014-11-12  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_wait_1): Don't force a wait for the Hc
+	thread, and don't resume all threads if the Hc thread has exited.
+
+2014-11-12  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_request_interrupt): Always send a SIGINT to
+	the process group instead of to a specific LWP.
+
+2014-10-15  Pedro Alves  <palves@redhat.com>
+
+	PR server/17487
+	* win32-arm-low.c (arm_set_thread_context): Remove current_event
+	parameter.
+	(arm_set_thread_context): Delete.
+	(the_low_target): Adjust.
+	* win32-i386-low.c (debug_registers_changed)
+	(debug_registers_used): Delete.
+	(update_debug_registers_callback): New function.
+	(x86_dr_low_set_addr, x86_dr_low_set_control): Mark all threads as
+	needing to update their debug registers.
+	(win32_get_current_dr): New function.
+	(x86_dr_low_get_addr, x86_dr_low_get_control)
+	(x86_dr_low_get_status): Fetch the debug register from the thread
+	record's context.
+	(i386_initial_stuff): Adjust.
+	(i386_get_thread_context): Remove current_event parameter.  Don't
+	clear debug_registers_changed nor copy DR values to
+	debug_reg_state.
+	(i386_set_thread_context): Delete.
+	(i386_prepare_to_resume): New function.
+	(i386_thread_added): Mark the thread as needing to update irs
+	debug registers.
+	(the_low_target): Remove i386_set_thread_context and install
+	i386_prepare_to_resume.
+	* win32-low.c (win32_get_thread_context): Adjust.
+	(win32_set_thread_context): Use SetThreadContext
+	directly.
+	(win32_prepare_to_resume): New function.
+	(win32_require_context): New function, factored out from ...
+	(thread_rec): ... this.
+	(continue_one_thread): Call win32_prepare_to_resume on each thread
+	we're about to continue.
+	(win32_resume): Call win32_prepare_to_resume on the event thread.
+	* win32-low.h (struct win32_thread_info)
+	<debug_registers_changed>: New field.
+	(struct win32_target_ops): Change prototype of set_thread_context,
+	delete set_thread_context and add prepare_to_resume.
+	(win32_require_context): New declaration.
+
+2014-10-08  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include common-exceptions.h.
+
+2014-10-08  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include cleanups.h.
+
+2014-09-30  James Hogan  <james.hogan@imgtec.com>
+
+	* Makefile.in (clean): Add rm -f commands for mips-dsp-linux.c and
+	mips64-dsp-linux.c.
+
+2014-09-23  Yao Qi  <yao@codesourcery.com>
+
+	* linux-low.c (lp_status_maybe_breakpoint): New function.
+	(linux_low_filter_event): Call lp_status_maybe_breakpoint.
+	(count_events_callback): Likewise.
+	(select_event_lwp_callback): Likewise.
+	(cancel_breakpoints_callback): Likewise.
+
+2014-09-19  Don Breazeal  <donb@codesourcery.com>
+
+	* linux-low.c (handle_extended_wait): Call
+	linux_ptrace_get_extended_event.
+	(get_stop_pc, get_detach_signal, linux_low_filter_event): Call
+	linux_is_extended_waitstatus.
+
+2014-09-16  Joel Brobecker  <brobecker@adacore.com>
+
+	* Makefile.in (CPPFLAGS): Define.
+	(INTERNAL_CFLAGS_BASE): Add ${CPPFLAGS}.
+	(IPAGENT_CFLAGS): Remove ${CPPFLAGS}.
+
+2014-09-16  Gary Benson  <gbenson@redhat.com>
+
+	* inferiors.h (current_inferior): Renamed as...
+	(current_thread): New variable.  All uses updated.
+	* linux-low.c (get_pc): Renamed saved_inferior as saved_thread.
+	(maybe_move_out_of_jump_pad): Likewise.
+	(cancel_breakpoint): Likewise.
+	(linux_low_filter_event): Likewise.
+	(wait_for_sigstop): Likewise.
+	(linux_resume_one_lwp): Likewise.
+	(need_step_over_p): Likewise.
+	(start_step_over): Likewise.
+	(linux_stabilize_threads): Renamed save_inferior as saved_thread.
+	* linux-x86-low.c (x86_linux_update_xmltarget): Likewise.
+	* proc-service.c (ps_lgetregs): Renamed reg_inferior as reg_thread
+	and save_inferior as saved_thread.
+	* regcache.c (get_thread_regcache): Renamed saved_inferior as
+	saved_thread.
+	(regcache_invalidate_thread): Likewise.
+	* remote-utils.c (prepare_resume_reply): Likewise.
+	* thread-db.c (thread_db_get_tls_address): Likewise.
+	(disable_thread_event_reporting): Likewise.
+	(remove_thread_event_breakpoints): Likewise.
+	* tracepoint.c (gdb_agent_about_to_close): Renamed save_inferior
+	as saved_thread.
+	* target.h (set_desired_inferior): Renamed as...
+	(set_desired_thread): New declaration.  All uses updated.
+	* server.c (myresume): Updated comment to reference thread instead
+	of inferior.
+	(handle_serial_event): Likewise.
+	(handle_target_event): Likewise.
+
+2014-09-12  Tom Tromey  <tromey@redhat.com>
+	    Gary Benson  <gbenson@redhat.com>
+
+	* regcache.h: Include common-regcache.h.
+	(regcache_read_pc): Don't declare.
+	* regcache.c (get_thread_regcache_for_ptid): New function.
+
+2014-09-11  Tom Tromey  <tromey@redhat.com>
+	    Gary Benson  <gbenson@redhat.com>
+
+	* symbol.c: New file.
+	* Makefile.in (SFILES): Add symbol.c.
+	(OBS): Add symbol.o.
+
+2014-09-11  Gary Benson  <gbenson@redhat.com>
+
+	* target.c (target_stop_ptid, target_continue_ptid): New
+	functions.
+
+2014-09-11  Tom Tromey  <tromey@redhat.com>
+	    Gary Benson  <gbenson@redhat.com>
+
+	* target.h: Include target/target.h.
+	* target.c (target_read_memory, target_read_uint32)
+	(target_write_memory): New functions.
+
+2014-09-11  Gary Benson  <gbenson@redhat.com>
+
+	* server.h (debug_hw_points): Don't declare.
+	* server.c (debug_hw_points): Don't define.  Replace all uses
+	with show_debug_regs.
+	* linux-aarch64-low.c (debug_hw_points): Don't define.  Replace
+	all uses with show_debug_regs.
+
+2014-09-08  Edjunior Barbosa Machado  <emachado@linux.vnet.ibm.com>
+
+	* linux-ppc-low.c (ppc_collect_ptrace_register): Adjust routine to take
+	endianness into account.
+	(ppc_supply_ptrace_register): Likewise.
+
+2014-09-03  James Hogan  <james.hogan@imgtec.com>
+
+	* linux-mips-low.c (mips_read_description): Reset errno to 0 prior
+	to reading DSP_CONTROL with PTRACE_PEEKUSER ptrace call.
+
+2014-09-03  Gary Benson  <gbenson@redhat.com>
+
+	* linux-x86-low.c (x86_linux_prepare_to_resume): Use
+	ALL_DEBUG_ADDRESS_REGISTERS.
+
+2014-09-02  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.h: Renamed as...
+	* x86-low.h: New file.  All type, function and variable name
+	prefixes changed from "i386_" to "x86_".  All references updated.
+	* i386-low.c: Renamed as...
+	* x86-low.c: New file.  All type, function and variable name
+	prefixes changed from "i386_" to "x86_".  All references updated.
+
+2014-09-02  Gary Benson  <gbenson@redhat.com>
+
+	* linux-x86-low.c (x86_linux_new_process): Use XCNEW.
+	(x86_linux_new_thread): Likewise.
+
+2014-08-29  Gary Benson  <gbenson@redhat.com>
+
+	* server.h (setjmp.h): Do not include.
+	(toplevel): Do not declare.
+	(common-exceptions.h): Include.
+	(cleanups.h): Likewise.
+	* server.c (toplevel): Do not define.
+	(exit_code): New static global.
+	(detach_or_kill_for_exit_cleanup): New function.
+	(main): New function.  Original main renamed to...
+	(captured_main): New function.
+	* utils.c (verror) [!IN_PROCESS_AGENT]: Use throw_verror.
+
+2014-08-29  Gary Benson  <gbenson@redhat.com>
+
+	* Makefile.in (SFILES): Add common/common-exceptions.c.
+	(OBS): Add common-exceptions.o.
+	(common-exceptions.o): New rule.
+	* utils.c (prepare_to_throw_exception): New function.
+
+2014-08-29  Gary Benson  <gbenson@redhat.com>
+
+	* config.in: Regenerate.
+	* configure: Likewise.
+
+2014-08-29  Gary Benson  <gbenson@redhat.com>
+
+	* Makefile.in (SFILES): Add common/cleanups.c.
+	(OBS): cleanups.o.
+	(cleanups.o): New rule.
+
+2014-08-29  Gary Benson  <gbenson@redhat.com>
+
+	* utils.c (internal_vwarning): New function.
+
+2014-08-28  Gary Benson  <gbenson@redhat.com>
+
+	* utils.h (fatal): Remove declaration.
+	* utils.c (fatal): Remove function.
+
+2014-08-28  Gary Benson  <gbenson@redhat.com>
+
+	* tracepoint.c (gdb_agent_init): Replace fatal with
+	perror_with_name.
+	(initialize_tracepoint): Likewise.
+
+2014-08-28  Gary Benson  <gbenson@redhat.com>
+
+	* remote-utils.c (remote_prepare): Replace fatal with error.
+
+2014-08-28  Gary Benson  <gbenson@redhat.com>
+
+	* linux-low.c (linux_async): Replace fatal with warning.
+	Tidy up and return.
+	(linux_start_non_stop): Return -1 if linux_async failed.
+
+2014-08-28  Gary Benson  <gbenson@redhat.com>
+
+	* linux-x86-low.c (i386_dr_low_set_addr): Replace check with
+	gdb_assert.
+	(i386_dr_low_get_addr): Remove vague comment.
+	* win32-i386-low.c (i386_dr_low_set_addr): Replace check with
+	gdb_assert.
+
+2014-08-28  Gary Benson  <gbenson@redhat.com>
+
+	* inferiors.c (get_thread_process): Replace check with gdb_assert.
+	* linux-low.c (linux_wait_for_event_filtered): Replace fatal with
+	internal_error.
+	(linux_resume_one_lwp): Likewise.
+	* linux-x86-low.c (x86_siginfo_fixup): Replace checks with
+	gdb_assert.
+	* mem-break.c (raw_bkpt_type_to_target_hw_bp_type): Replace fatal
+	with internal_error.
+	* regcache.c (get_thread_regcache): Replace check with gdb_assert.
+	(init_register_cache): Replace fatal with gdb_assert_not_reached.
+	(find_register_by_name): Replace fatal with internal_error.
+	(find_regno): Likewise.
+	* tdesc.c (init_target_desc): Replace check with gdb_assert.
+	* thread-db.c (thread_db_create_event): Likewise.
+	(thread_db_load_search): Likewise.
+	(try_thread_db_load_1): Likewise.
+	* tracepoint.c (get_jump_space_head): Replace fatal with
+	internal_error.
+	(claim_trampoline_space): Likewise.
+	(have_fast_tracepoint_trampoline_buffer): Likewise.
+	(cmd_qtstart): Likewise.
+	(stop_tracing): Likewise.
+	(fast_tracepoint_collecting): Likewise.
+	(target_malloc): Likewise.
+	(download_tracepoint): Likewise.
+	(download_trace_state_variables): Replace check with gdb_assert.
+	(upload_fast_traceframes): Replace fatal with internal_error.
+
+2014-08-19  Tom Tromey  <tromey@redhat.com>
+	    Gary Benson  <gbenson@redhat.com>
+
+	* Makefile.in (SFILES): Add common/common-debug.c.
+	(OBS): Add common-debug.o.
+	(common-debug.o): New rule.
+	* debug.h (debug_printf): Don't declare.
+	* debug.c (debug_printf): Renamed and rewritten as...
+	(debug_vprintf): New function.
+
+2014-08-19  Gary Benson  <gbenson@redhat.com>
+
+	* utils.h: Do not include print-utils.h.
+
+2014-08-19  Tom Tromey  <tromey@redhat.com>
+	    Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Add static assertion.
+	(gdb_byte, CORE_ADDR, LONGEST, ULONGEST): Remove.
+
+2014-08-19  Tom Tromey  <tromey@redhat.com>
+	    Gary Benson  <gbenson@redhat.com>
+
+	* Makefile.in (SFILES): Add common/errors.c.
+	(OBS): Add errors.o.
+	(IPA_OBS): Add errors-ipa.o.
+	(errors.o): New rule.
+	(errors-ipa.o): Likewise.
+	* utils.h (perror_with_name, error, warning): Don't declare.
+	* utils.c (warning): Renamed and rewritten as...
+	(vwarning): New function.
+	(error): Renamed and rewritten as...
+	(verror): New function.
+	(internal_error): Renamed and rewritten as...
+	(internal_verror): New function.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* configure.ac (AC_CHECK_HEADERS): Remove errno.h.
+	* configure: Regenerate.
+	* config.in: Likewise.
+	* server.h: Do not include errno.h.
+	* event-loop.c: Likewise.
+	* hostio-errno.c: Likewise.
+	* linux-low.c: Likewise.
+	* remote-utils.c: Likewise.
+	* spu-low.c: Likewise.
+	* utils.c: Likewise.
+	* gdbreplay.c: Unconditionally include errno.h.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include string.h.
+	* event-loop.c: Likewise.
+	* linux-low.c: Likewise.
+	* regcache.c: Likewise.
+	* remote-utils.c: Likewise.
+	* spu-low.c: Likewise.
+	* utils.c: Likewise.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include gdb_assert.h.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include common-utils.h.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include ptid.h.
+	* notif.h: Likewise.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include gdb_locale.h.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include gdb/signals.h.
+	* win32-low.c: Likewise.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include pathmax.h.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include libiberty.h.
+	* linux-bfin-low.c: Likewise.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include ansidecl.h.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* linux-x86-low.c: Do not include stddef.h.
+	* lynx-ppc-low.c: Likewise.
+	* tracepoint.c: Likewise.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include stdarg.h.
+	* nto-low.c: Likewise.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include stdlib.h.
+	* inferiors.c: Likewise.
+	* linux-low.c: Likewise.
+	* regcache.c: Likewise.
+	* spu-low.c: Likewise.
+	* tracepoint.c: Likewise.
+	* utils.c: Likewise.
+
+2014-08-07  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Do not include stdio.h.
+	* linux-low.c: Likewise.
+	* remote-utils.c: Likewise.
+	* spu-low.c: Likewise.
+	* utils.c: Likewise.
+	* wincecompat.c: Likewise.
+
+2014-08-06  Gary Benson  <gbenson@redhat.com>
+
+	* regcache.c (init_register_cache): Move conditionals inside if.
+
+2014-08-06  Gary Benson  <gbenson@redhat.com>
+
+	* linux-low.c (linux_supports_non_stop): Use target_is_async_p.
+
+2014-07-31  Gary Benson  <gbenson@redhat.com>
+
+	* ax.h: Do not include server.h.
+	* gdbthread.h: Likewise.
+	* lynx-low.h: Likewise.
+	* notif.h: Likewise.
+
+2014-07-30  Gary Benson  <gbenson@redhat.com>
+
+	* server.h: Include common-defs.h.
+	Do not include config.h or build-gnulib-gdbserver/config.h.
+
+2014-07-30  Gary Benson  <gbenson@redhat.com>
+
+	* hostio-errno.c: Move server.h to top of includes list.
+	* inferiors.c: Likewise.
+	* linux-x86-low.c: Likewise.
+	* notif.c: Include server.h.
+
+2014-07-24  Tom Tromey  <tromey@redhat.com>
+	    Gary Benson  <gbenson@redhat.com>
+
+	* server.h (CORE_ADDR): Now unsigned.
+
+2014-07-16  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_kill_one_lwp): Use kill_lwp, not kill.
+
+2014-07-15  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_kill_one_lwp): Save errno and work with saved
+	copy.
+
+2014-07-11  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (kill_wait_lwp): New function, based on
+	kill_one_lwp_callback, but use my_waitpid directly.
+	(kill_one_lwp_callback, linux_kill): Use it.
+
+2014-06-23  Pedro Alves  <palves@redhat.com>
+
+	* linux-x86-low.c (x86_linux_prepare_to_resume): Clear DR_CONTROL
+	before setting DR0..DR3.
+
+2014-06-20  Gary Benson  <gbenson@redhat.com>
+
+	* configure.ac (AC_REPLACE_FUNCS) <vasprintf, vsnprintf>: Removed.
+	* configure: Regenerated.
+	* config.in: Likewise.
+
+2014-06-20  Gary Benson  <gbenson@redhat.com>
+
+	* Makefile.in (SFILES): Update locations for files moved
+	from common to nat.
+	(object file files): Reordered.
+
+2014-06-20  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.h (i386_dr_low_can_set_addr): Removed.
+	(i386_dr_low_set_addr): Likewise.
+	(i386_dr_low_get_addr): Likewise.
+	(i386_dr_low_can_set_control): Likewise.
+	(i386_dr_low_set_control): Likewise.
+	(i386_dr_low_get_control): Likewise.
+	(i386_dr_low_get_status): Likewise.
+	(i386_get_debug_register_length): Likewise.
+	* linux-x86-low.c (i386_dr_low_set_addr):
+	Changed signature.  Made static.
+	(i386_dr_low_get_addr): Likewise.
+	(i386_dr_low_set_control): Likewise.
+	(i386_dr_low_get_control): Likewise.
+	(i386_dr_low_get_status): Likewise.
+	(i386_dr_low): New global variable.
+	* win32-i386-low.c (i386_dr_low_set_addr):
+	Changed signature.  Made static.
+	(i386_dr_low_get_addr): Likewise.
+	(i386_dr_low_set_control): Likewise.
+	(i386_dr_low_get_control): Likewise.
+	(i386_dr_low_get_status): Likewise.
+	(i386_dr_low): New global variable.
+
+2014-06-20  Marcus Shawcroft  <marcus.shawcroft@arm.com>
+
+	* configure.ac: Invoke. AC_CHECK_TOOL(AR, ar).
+	* Makefile.in (AR, AR_FLAGS): Define.
+	* configure: Regenerate.
+
+2014-06-19  Gary Benson  <gbenson@redhat.com>
+
+	* Makefile.in (i386-dregs.o): New rule.
+	* configure.srv: Add i386-dregs.o to all targets using i386-low.o.
+	* i386-low.c (target.h): Remove include.
+	(TARGET_HAS_DR_LEN_8): Now in i386-dregs.c.
+	(DR_CONTROL_SHIFT): Likewise.
+	(DR_CONTROL_SIZE): Likewise.
+	(DR_RW_EXECUTE): Likewise.
+	(DR_RW_WRITE): Likewise.
+	(DR_RW_READ): Likewise.
+	(DR_RW_IORW): Likewise.
+	(DR_LEN_1): Likewise.
+	(DR_LEN_2): Likewise.
+	(DR_LEN_4): Likewise.
+	(DR_LEN_8): Likewise.
+	(DR_LOCAL_ENABLE_SHIFT): Likewise.
+	(DR_GLOBAL_ENABLE_SHIFT): Likewise.
+	(DR_ENABLE_SIZE): Likewise.
+	(DR_LOCAL_SLOWDOWN): Likewise.
+	(DR_GLOBAL_SLOWDOWN): Likewise.
+	(DR_CONTROL_RESERVED): Likewise.
+	(I386_DR_CONTROL_MASK): Likewise.
+	(I386_DR_VACANT): Likewise.
+	(I386_DR_LOCAL_ENABLE): Likewise.
+	(I386_DR_GLOBAL_ENABLE): Likewise.
+	(I386_DR_DISABLE): Likewise.
+	(I386_DR_SET_RW_LEN): Likewise.
+	(I386_DR_GET_RW_LEN): Likewise.
+	(I386_DR_WATCH_HIT): Likewise.
+	(i386_wp_op_t): Likewise.
+	(i386_show_dr): Likewise.
+	(i386_length_and_rw_bits): Likewise.
+	(i386_insert_aligned_watchpoint): Likewise.
+	(i386_remove_aligned_watchpoint): Likewise.
+	(i386_handle_nonaligned_watchpoint): Likewise.
+	i386_update_inferior_debug_regs(): Likewise.
+	(i386_dr_insert_watchpoint): Likewise.
+	(i386_dr_remove_watchpoint): Likewise.
+	(i386_dr_region_ok_for_watchpoint): Likewise.
+	(i386_dr_stopped_data_address): Likewise.
+	(i386_dr_stopped_by_watchpoint): Likewise.
+
+2014-06-19  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.c (i386_dr_show): Renamed to
+	i386_show_dr and made static.  All uses updated.
+	(i386_dr_length_and_rw_bits): Renamed to
+	i386_length_and_rw_bits and made static.
+	All uses updated.
+	(i386_dr_insert_aligned_watchpoint): Renamed to
+	i386_insert_aligned_watchpoint and made static.
+	All uses updated.
+	(i386_dr_remove_aligned_watchpoint): Renamed to
+	i386_remove_aligned_watchpoint and made static.
+	All uses updated.
+	(i386_dr_update_inferior_debug_regs): Renamed to
+	i386_update_inferior_debug_regs and made static.
+	All uses updated.
+
+2014-06-18  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.h (i386_dr_low_can_set_addr): New macro.
+	(i386_dr_low_can_set_control): Likewise.
+	(i386_get_debug_register_length): Likewise.
+	* i386-low.c (i386_dr_low_can_set_addr): Now in i386-low.h.
+	(i386_dr_low_can_set_control): Likewise.
+	(i386_get_debug_register_length): Likewise.
+
+2014-06-17  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.h (i386-dregs.h): New include.
+	(DR_FIRSTADDR): Now in i386-dregs.h.
+	(DR_LASTADDR): Likewise.
+	(DR_NADDR): Likewise.
+	(DR_STATUS): Likewise.
+	(DR_CONTROL): Likewise.
+	(i386_debug_reg_state): Likewise.
+	(i386_dr_insert_watchpoint): Likewise.
+	(i386_dr_remove_watchpoint): Likewise.
+	(i386_dr_region_ok_for_watchpoint): Likewise.
+	(i386_dr_stopped_data_address): Likewise.
+	(i386_dr_stopped_by_watchpoint): Likewise.
+	* i386-low.c (ALL_DEBUG_REGISTERS): Likewise.
+
+2014-06-18  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.h (i386_low_insert_watchpoint): Renamed to
+	i386_dr_insert_watchpoint.
+	(i386_low_remove_watchpoint): Renamed to
+	i386_dr_remove_watchpoint.
+	(i386_low_region_ok_for_watchpoint): Renamed to
+	i386_dr_region_ok_for_watchpoint.
+	(i386_low_stopped_data_address): Renamed to
+	i386_dr_stopped_data_address.
+	(i386_low_stopped_by_watchpoint): Renamed to
+	i386_dr_stopped_by_watchpoint.
+	* i386-low.c (i386_show_dr): Renamed to
+	i386_dr_show and made nonstatic.  All uses updated.
+	(i386_length_and_rw_bits): Renamed to
+	i386_dr_length_and_rw_bits and made nonstatic.
+	All uses updated.
+	(i386_insert_aligned_watchpoint): Renamed to
+	i386_dr_insert_aligned_watchpoint and made nonstatic.
+	All uses updated.
+	(i386_remove_aligned_watchpoint): Renamed to
+	i386_dr_remove_aligned_watchpoint and made nonstatic.
+	All uses updated.
+	(i386_update_inferior_debug_regs): Renamed to
+	i386_dr_update_inferior_debug_regs and made nonstatic.
+	All uses updated.
+	(i386_low_insert_watchpoint): Renamed to
+	i386_dr_insert_watchpoint.  All uses updated.
+	(i386_low_remove_watchpoint): Renamed to
+	i386_dr_remove_watchpoint.  All uses updated.
+	(i386_low_region_ok_for_watchpoint): Renamed to
+	i386_dr_region_ok_for_watchpoint.  All uses updated.
+	(i386_low_stopped_data_address): Renamed to
+	i386_dr_stopped_data_address.  All uses updated.
+	(i386_low_stopped_by_watchpoint): Renamed to
+	i386_dr_stopped_by_watchpoint.  All uses updated.
+
+2014-06-18  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.c (i386_dr_low_can_set_addr): New macro.
+	(i386_dr_low_can_set_control): Likewise.
+	(i386_insert_aligned_watchpoint): New check.
+
+2014-06-18  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.c (i386_update_inferior_debug_regs) <inf_state>:
+	Renamed to state.
+
+2014-06-18  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.c (i386_length_and_rw_bits): Use internal_error
+	instead of fatal and error.
+	(i386_handle_nonaligned_watchpoint): Likewise.
+
+2014-06-18  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.c (i386_get_debug_register_length): New macro.
+	(TARGET_HAS_DR_LEN_8): Remove conditional.  Use above macro.
+	(i386_show_dr): Use debug_printf instead of fprintf.  Use
+	phex to format values.
+
+2014-06-18  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.h: Comment changes.
+	* i386-low.c: Likewise.
+
+2014-06-18  Gary Benson  <gbenson@redhat.com>
+
+	* i386-low.c: Whitespace changes.
+
+2014-06-12  Tom Tromey  <tromey@redhat.com>
+
+	* utils.c (freeargv): Remove.
+
+2014-06-12  Tom Tromey  <tromey@redhat.com>
+
+	* debug.c (debug_printf): Remove HAVE_GETTIMEOFDAY checks.
+	* server.c (monitor_show_help): Remove HAVE_GETTIMEOFDAY check.
+	(parse_debug_format_options): Likewise.
+	(gdbserver_usage): Likewise.
+	* Makefile.in (LIBIBERTY_BUILDDIR, LIBIBERTY): New variables.
+	(SUBDIRS, REQUIRED_SUBDIRS): Add libiberty.
+	(gdbserver$(EXEEXT), gdbreplay$(EXEEXT)): Depend on and link
+	against libiberty.
+	($(LIBGNU)): Depend on libiberty.
+	(all-lib): Recurse into all subdirs.
+	(install-only): Invoke "install" target in subdirs.
+	(vasprintf.o, vsnprintf.o, safe-ctype.o, lbasename.o): Remove
+	targets.
+	* configure: Rebuild.
+	* configure.ac: Add ACX_CONFIGURE_DIR for libiberty.  Don't check
+	for vasprintf, vsnprintf, or gettimeofday.
+	* configure.srv: Don't add safe-ctype.o or lbasename.o to
+	srv_tgtobj.
+
+2014-06-05  Joel Brobecker  <brobecker@adacore.com>
+
+	* development.sh: Delete.
+	* Makefile.in (config.status): Adjust dependency on development.sh.
+	* configure.ac: Adjust development.sh source call.
+	* configure: Regenerate.
+
+2014-06-02  Pedro Alves  <palves@redhat.com>
+
+	* ax.c (gdb_free_agent_expr): New function.
+	* ax.h (gdb_free_agent_expr): New declaration.
+	* mem-break.c (delete_gdb_breakpoint_1): Also clear the commands
+	list.
+	(clear_breakpoint_conditions, clear_breakpoint_commands): Make
+	static.
+	(clear_breakpoint_conditions_and_commands): New function.
+	* mem-break.h (clear_breakpoint_conditions): Delete declaration.
+	(clear_breakpoint_conditions_and_commands): New declaration.
+
+2014-05-23  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+
+	* linux-aarch64-low.c (asm/ptrace.h): Include.
+
+2014-05-21  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Fix TLS access for -static -pthread.
+	* gdbserver/thread-db.c (struct thread_db): Add td_thr_tlsbase_p.
+	(thread_db_get_tls_address): Call it if LOAD_MODULE is zero.
+	(thread_db_load_search, try_thread_db_load_1): Initialize it.
+
+2014-05-20  Pedro Alves  <palves@redhat.com>
+
+	* linux-aarch64-low.c (aarch64_insert_point)
+	(aarch64_remove_point): No longer check whether the type is
+	supported here.  Adjust to new interface.
+	(the_low_target): Install aarch64_supports_z_point_type as
+	supports_z_point_type method.
+	* linux-arm-low.c (raw_bkpt_type_to_arm_hwbp_type): New function.
+	(arm_linux_hw_point_initialize): Take an enum raw_bkpt_type
+	instead of a Z packet char.  Adjust.
+	(arm_supports_z_point_type): New function.
+	(arm_insert_point, arm_remove_point): Adjust to new interface.
+	(the_low_target): Install arm_supports_z_point_type.
+	* linux-crisv32-low.c (cris_supports_z_point_type): New function.
+	(cris_insert_point, cris_remove_point): Adjust to new interface.
+	Don't check whether the type is supported here.
+	(the_low_target): Install cris_supports_z_point_type.
+	* linux-low.c (linux_supports_z_point_type): New function.
+	(linux_insert_point, linux_remove_point): Adjust to new interface.
+	* linux-low.h (struct linux_target_ops) <insert_point,
+	remove_point>: Take an enum raw_bkpt_type instead of a char.  Add
+	raw_breakpoint pointer parameter.
+	<supports_z_point_type>: New method.
+	* linux-mips-low.c (mips_supports_z_point_type): New function.
+	(mips_insert_point, mips_remove_point): Adjust to new interface.
+	Use mips_supports_z_point_type.
+	(the_low_target): Install mips_supports_z_point_type.
+	* linux-ppc-low.c (the_low_target): Install NULL as
+	supports_z_point_type method.
+	* linux-s390-low.c (the_low_target): Install NULL as
+	supports_z_point_type method.
+	* linux-sparc-low.c (the_low_target): Install NULL as
+	supports_z_point_type method.
+	* linux-x86-low.c (x86_supports_z_point_type): New function.
+	(x86_insert_point): Adjust to new insert_point interface.  Use
+	insert_memory_breakpoint.  Adjust to new
+	i386_low_insert_watchpoint interface.
+	(x86_remove_point): Adjust to remove_point interface.  Use
+	remove_memory_breakpoint.  Adjust to new
+	i386_low_remove_watchpoint interface.
+	(the_low_target): Install x86_supports_z_point_type.
+	* lynx-low.c (lynx_target_ops): Install NULL as
+	supports_z_point_type callback.
+	* nto-low.c (nto_supports_z_point_type): New.
+	(nto_insert_point, nto_remove_point): Adjust to new interface.
+	(nto_target_ops): Install nto_supports_z_point_type.
+	* mem-break.c: Adjust intro comment.
+	(struct raw_breakpoint) <raw_type, size>: New fields.
+	<inserted>: Update comment.
+	<shlib_disabled>: Delete field.
+	(enum bkpt_type) <gdb_breakpoint>: Delete value.
+	<gdb_breakpoint_Z0, gdb_breakpoint_Z1, gdb_breakpoint_Z2,
+	gdb_breakpoint_Z3, gdb_breakpoint_Z4>: New values.
+	(raw_bkpt_type_to_target_hw_bp_type): New function.
+	(find_enabled_raw_code_breakpoint_at): New function.
+	(find_raw_breakpoint_at): New type and size parameters.  Use them.
+	(insert_memory_breakpoint): New function, based off
+	set_raw_breakpoint_at.
+	(remove_memory_breakpoint): New function.
+	(set_raw_breakpoint_at): Reimplement.
+	(set_breakpoint): New, based on set_breakpoint_at.
+	(set_breakpoint_at): Reimplement.
+	(delete_raw_breakpoint): Go through the_target->remove_point
+	instead of assuming memory breakpoints.
+	(find_gdb_breakpoint_at): Delete.
+	(Z_packet_to_bkpt_type, Z_packet_to_raw_bkpt_type): New functions.
+	(find_gdb_breakpoint): New function.
+	(set_gdb_breakpoint_at): Delete.
+	(z_type_supported): New function.
+	(set_gdb_breakpoint_1): New function, loosely based off
+	set_gdb_breakpoint_at.
+	(check_gdb_bp_preconditions, set_gdb_breakpoint): New functions.
+	(delete_gdb_breakpoint_at): Delete.
+	(delete_gdb_breakpoint_1): New function, loosely based off
+	delete_gdb_breakpoint_at.
+	(delete_gdb_breakpoint): New function.
+	(clear_gdb_breakpoint_conditions): Rename to ...
+	(clear_breakpoint_conditions): ... this.  Don't handle a NULL
+	breakpoint.
+	(add_condition_to_breakpoint): Make static.
+	(add_breakpoint_condition): Take a struct breakpoint pointer
+	instead of an address.  Adjust.
+	(gdb_condition_true_at_breakpoint): Rename to ...
+	(gdb_condition_true_at_breakpoint_z_type): ... this, and add
+	z_type parameter.
+	(gdb_condition_true_at_breakpoint): Reimplement.
+	(add_breakpoint_commands): Take a struct breakpoint pointer
+	instead of an address.  Adjust.
+	(gdb_no_commands_at_breakpoint): Rename to ...
+	(gdb_no_commands_at_breakpoint_z_type): ... this.  Add z_type
+	parameter.  Return true if no breakpoint was found.  Change debug
+	output.
+	(gdb_no_commands_at_breakpoint): Reimplement.
+	(run_breakpoint_commands): Rename to ...
+	(run_breakpoint_commands_z_type): ... this.  Add z_type parameter,
+	and change return type to boolean.
+	(run_breakpoint_commands): New function.
+	(gdb_breakpoint_here): Also check for Z1 breakpoints.
+	(uninsert_raw_breakpoint): Don't try to reinsert a disabled
+	breakpoint.  Go through the_target->remove_point instead of
+	assuming memory breakpoint.
+	(uninsert_breakpoints_at, uninsert_all_breakpoints): Uninsert
+	software and hardware breakpoints.
+	(reinsert_raw_breakpoint): Go through the_target->insert_point
+	instead of assuming memory breakpoint.
+	(reinsert_breakpoints_at, reinsert_all_breakpoints): Reinsert
+	software and hardware breakpoints.
+	(check_breakpoints, breakpoint_here, breakpoint_inserted_here):
+	Check both software and hardware breakpoints.
+	(validate_inserted_breakpoint): Assert the breakpoint is a
+	software breakpoint.  Set the inserted flag to -1 instead of
+	setting shlib_disabled.
+	(delete_disabled_breakpoints): Adjust.
+	(validate_breakpoints): Only validate software breakpoints.
+	Adjust to inserted flag change.
+	(check_mem_read, check_mem_write): Skip breakpoint types other
+	than software breakpoints.  Adjust to inserted flag change.
+	* mem-break.h (enum raw_bkpt_type): New enum.
+	(raw_breakpoint, struct process_info): Forward declare.
+	(Z_packet_to_target_hw_bp_type): Delete declaration.
+	(raw_bkpt_type_to_target_hw_bp_type, Z_packet_to_raw_bkpt_type)
+	(set_gdb_breakpoint, delete_gdb_breakpoint)
+	(clear_breakpoint_conditions): New declarations.
+	(set_gdb_breakpoint_at, clear_gdb_breakpoint_conditions): Delete.
+	(breakpoint_inserted_here): Update comment.
+	(add_breakpoint_condition, add_breakpoint_commands): Replace
+	address parameter with a breakpoint pointer parameter.
+	(gdb_breakpoint_here): Update comment.
+	(delete_gdb_breakpoint_at): Delete.
+	(insert_memory_breakpoint, remove_memory_breakpoint): Declare.
+	* server.c (process_point_options): Take a struct breakpoint
+	pointer instead of an address.  Adjust.
+	(process_serial_event) <Z/z packets>: Use set_gdb_breakpoint and
+	delete_gdb_breakpoint.
+	* spu-low.c (spu_target_ops): Install NULL as
+	supports_z_point_type method.
+	* target.h: Include mem-break.h.
+	(struct target_ops) <prepare_to_access_memory>: Update comment.
+	<supports_z_point_type>: New field.
+	<insert_point, remove_point>: Take an enum raw_bkpt_type argument
+	instead of a char.  Also take a raw breakpoint pointer.
+	* win32-arm-low.c (the_low_target): Install NULL as
+	supports_z_point_type.
+	* win32-i386-low.c (i386_supports_z_point_type): New function.
+	(i386_insert_point, i386_remove_point): Adjust to new interface.
+	(the_low_target): Install i386_supports_z_point_type.
+	* win32-low.c (win32_supports_z_point_type): New function.
+	(win32_insert_point, win32_remove_point): Adjust to new interface.
+	(win32_target_ops): Install win32_supports_z_point_type.
+	* win32-low.h (struct win32_target_ops):
+	<supports_z_point_type>: New method.
+	<insert_point, remove_point>: Take an enum raw_bkpt_type argument
+	instead of a char.  Also take a raw breakpoint pointer.
+
+2014-05-20  Pedro Alves  <palves@redhat.com>
+
+	* mem-break.h: Include break-common.h.
+	(Z_PACKET_SW_BP, Z_PACKET_HW_BP, Z_PACKET_WRITE_WP)
+	(Z_PACKET_READ_WP, Z_PACKET_ACCESS_WP): New defines.
+	(Z_packet_to_target_hw_bp_type): New declaration.
+	* mem-break.c (Z_packet_to_target_hw_bp_type): New function.
+	* i386-low.c (Z_PACKET_HW_BP, Z_PACKET_WRITE_WP, Z_PACKET_READ_WP)
+	(Z_PACKET_ACCESS_WP): Delete macros.
+	(Z_packet_to_hw_type): Delete function.
+	* i386-low.h: Don't include break-common.h here.
+	(Z_packet_to_hw_type): Delete declaration.
+	* linux-x86-low.c (x86_insert_point, x86_insert_point): Call
+	Z_packet_to_target_hw_bp_type instead of Z_packet_to_hw_type.
+	* win32-i386-low.c (i386_insert_point, i386_remove_point): Call
+	Z_packet_to_target_hw_bp_type instead of Z_packet_to_hw_type.
+	* linux-aarch64-low.c: Don't include break-common.h here.
+	(Z_PACKET_SW_BP, Z_PACKET_HW_BP, Z_PACKET_WRITE_WP)
+	(Z_PACKET_READ_WP, Z_PACKET_ACCESS_WP): Delete macros.
+	(Z_packet_to_target_hw_bp_type): Delete function.
+	* linux-mips-low.c (rsp_bp_type_to_target_hw_bp_type): Delete
+	function.
+	(mips_insert_point, mips_remove_point): Use
+	Z_packet_to_target_hw_bp_type.
+
+2014-05-20  Pedro Alves  <palves@redhat.com>
+
+	* linux-aarch64-low.c: Include break-common.h.
+	(enum target_point_type): Delete.
+	(Z_packet_to_point_type): Rename to ...
+	(Z_packet_to_target_hw_bp_type): ... this, and return a
+	target_hw_bp_type instead.
+	(aarch64_show_debug_reg_state): Take an enum target_hw_bp_type
+	instead of an enum target_point_type.
+	(aarch64_point_encode_ctrl_reg): Likewise.  Compute type mask from
+	breakpoint type.
+	(aarch64_dr_state_insert_one_point)
+	(aarch64_dr_state_remove_one_point, aarch64_handle_breakpoint)
+	(aarch64_handle_aligned_watchpoint)
+	(aarch64_handle_unaligned_watchpoint, aarch64_handle_watchpoint):
+	Take an enum target_hw_bp_type instead of an enum
+	target_point_type.
+	(aarch64_supports_z_point_type): New function.
+	(aarch64_insert_point, aarch64_remove_point): Use it.  Adjust to
+	use Z_packet_to_target_hw_bp_type.
+
+2014-05-20  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.ac: Only use -Werror by default when DEVELOPMENT
+	is true.
+	* configure: Regenerate.
+
+2014-05-19  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Fix gdbserver qGetTLSAddr for x86_64 -m32.
+	* linux-x86-low.c (X86_64_USER_REGS): New.
+	(x86_fill_gregset): Call memset for BUF first in x86_64 -m32 case.
+
+2014-04-28  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (i386-avx512.c): Fix the typo of generated file
+	name.
+
+2014-04-25  Pedro Alves  <palves@redhat.com>
+
+	PR server/16255
+	* linux-low.c (linux_attach_fail_reason_string): New function.
+	(linux_attach_lwp): Delete.
+	(linux_attach_lwp_1): Rename to ...
+	(linux_attach_lwp): ... this.  Take a ptid instead of a pid as
+	argument.  Remove "initial" parameter.  Return int instead of
+	void.  Don't error or warn here.
+	(linux_attach): Adjust to call linux_attach_lwp.  Call error on
+	failure to attach to the tgid.  Call warning when failing to
+	attach to an lwp.
+	* linux-low.h (linux_attach_lwp): Take a ptid instead of a pid as
+	argument.  Remove "initial" parameter.  Return int instead of
+	void.  Don't error or warn here.
+	(linux_attach_fail_reason_string): New declaration.
+	* thread-db.c (attach_thread): Adjust to linux_attach_lwp's
+	interface change.  Use linux_attach_fail_reason_string.
+
+2014-04-24  Michael Sturm  <michael.sturm@mintel.com>
+	    Walfred Tedeschi  <walfred.tedeschi@intel.com>
+
+	* Makefile.in: Added rules to handle new files
+	i386-avx512.c i386-avx512-linux.c amd64-avx512.c
+	amd64-avx512-linux.c x32-avx512.c x32-avx512-linux.c.
+	* configure.srv (srv_i386_regobj): Add i386-avx512.o.
+	(srv_i386_linux_regobj): Add i386-avx512-linux.o.
+	(srv_amd64_regobj): Add amd64-avx512.o and x32-avx512.o.
+	(srv_amd64_linux_regobj): Add amd64-avx512-linux.o and
+	x32-avx512-linux.o.
+	(srv_i386_32bit_xmlfiles): Add i386/32bit-avx512.xml.
+	(srv_i386_64bit_xmlfiles): Add i386/64bit-avx512.xml.
+	(srv_amd64_xmlfiles): Add i386/amd64-avx512.xml and
+	i386/x32-avx512.xml.
+	(srv_i386_linux_xmlfiles): Add i386/i386-avx512-linux.xml.
+	(srv_amd64_linux_xmlfiles): Add i386/amd64-avx512-linux.xml and
+	i386/x32-avx512-linux.xml.
+	* i387-fp.c (num_avx512_k_registers): New constant for number
+	of K registers.
+	(num_avx512_zmmh_low_registers): New constant for number of
+	lower ZMM registers (0-15).
+	(num_avx512_zmmh_high_registers): New constant for number of
+	higher ZMM registers (16-31).
+	(num_avx512_ymmh_registers): New contant for number of higher
+	YMM registers (ymm16-31 added by avx521 on x86_64).
+	(num_avx512_xmm_registers): New constant for number of higher
+	XMM registers (xmm16-31 added by AVX512 on x86_64).
+	(struct i387_xsave): Add space for AVX512 registers.
+	(i387_cache_to_xsave): Change raw buffer size to 64 characters.
+	Add code to handle AVX512 registers.
+	(i387_xsave_to_cache): Add code to handle AVX512 registers.
+	* linux-x86-low.c (init_registers_amd64_avx512_linux): New
+	prototypei from generated file.
+	(tdesc_amd64_avx512_linux): Likewise.
+	(init_registers_x32_avx512_linux): Likewise.
+	(tdesc_x32_avx512_linux): Likewise.
+	(init_registers_i386_avx512_linux): Likewise.
+	(tdesc_i386_avx512_linux): Likewise.
+	(x86_64_regmap): Add AVX512 registers.
+	(x86_linux_read_description): Add code to handle AVX512 XSTATE
+	mask.
+	(initialize_low_arch): Add code to initialize AVX512 registers.
+
+2014-04-23  Pedro Alves  <palves@redhat.com>
+
+	* mem-break.c (find_gdb_breakpoint_at): Make static.
+	* mem-break.h (find_gdb_breakpoint_at): Delete declaration.
+
+2014-04-23  Pedro Alves  <palves@redhat.com>
+
+	* i386-low.c: Don't include break-common.h here.
+	(i386_low_insert_watchpoint, i386_low_remove_watchpoint): Change
+	prototype to take target_hw_bp_type as argument instead of a Z
+	packet char.
+	* i386-low.h: Include break-common.h here.
+	(Z_packet_to_hw_type): Declare.
+	(i386_low_insert_watchpoint, i386_low_remove_watchpoint): Change
+	prototypes.
+	* linux-x86-low.c (x86_insert_point): Convert the packet number to
+	a target_hw_bp_type before calling i386_low_insert_watchpoint.
+	(x86_remove_point): Convert the packet number to a
+	target_hw_bp_type before calling i386_low_remove_watchpoint.
+	* win32-i386-low.c (i386_insert_point): Convert the packet number
+	to a target_hw_bp_type before calling i386_low_insert_watchpoint.
+	(i386_remove_point): Convert the packet number to a
+	target_hw_bp_type before calling i386_low_remove_watchpoint.
+
+2014-04-23  Pedro Alves  <palves@redhat.com>
+
+	* utils.h (perror_with_name): Add ATTRIBUTE_NORETURN.
+
+2014-04-10  Pedro Alves  <palves@redhat.com>
+
+	* mem-break.c (add_breakpoint_condition, add_breakpoint_commands):
+	Check if the condition or command is NULL before checking if the
+	breakpoint is known.  On success, return true.
+	* mem-break.h (add_breakpoint_condition): Document return.
+	(add_breakpoint_commands): Add describing comment.
+	* server.c (skip_to_semicolon): New function.
+	(process_point_options): Use it.
+
+2014-04-09  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_read_loadmap): Pass current_inferior directly
+	to lwpid_of.
+
+2014-02-27  Pedro Alves  <palves@redhat.com>
+
+	PR 12702
+	* inferiors.h (A_I_NEXT, ALL_INFERIORS_TYPE, ALL_PROCESSES): New
+	macros.
+	* linux-low.c (delete_lwp, handle_extended_wait): Add debug
+	output.
+	(last_thread_of_process_p): Take a PID argument instead of a
+	thread pointer.
+	(linux_wait_for_lwp): Delete.
+	(num_lwps, check_zombie_leaders, not_stopped_callback): New
+	functions.
+	(linux_low_filter_event): New function, party factored out from
+	linux_wait_for_event.
+	(linux_wait_for_event): Rename to ...
+	(linux_wait_for_event_filtered): ... this.  Add new filter ptid
+	argument.  Partly rewrite.  Always use waitpid(-1, WNOHANG) and
+	sigsuspend.  Check for zombie leaders.
+	(linux_wait_for_event): Reimplement as wrapper around
+	linux_wait_for_event_filtered.
+	(linux_wait_1): Handle TARGET_WAITKIND_NO_RESUMED.  Assume that if
+	a normal or signal exit is seen, it's the whole process exiting.
+	(wait_for_sigstop): No longer a for_each_inferior callback.
+	Rewrite on top of linux_wait_for_event_filtered.
+	(stop_all_lwps): Call wait_for_sigstop directly.
+	* server.c (resume, handle_target_event): Handle
+	TARGET_WAITKIND_NO_RESUMED.
+
+2014-02-26  Joel Brobecker  <brobecker@adacore.com>
+
+	* win32-low.c (psapi_get_dll_name,
+	* win32_CreateToolhelp32Snapshot): Delete.
+	(win32_CreateToolhelp32Snapshot, win32_Module32First)
+	(win32_Module32Next, load_toolhelp, toolhelp_get_dll_name):
+	Delete.
+	(handle_load_dll): Add function description.
+	Remove code using psapi_get_dll_name and toolhelp_get_dll_name.
+
+2014-02-26  Joel Brobecker  <brobecker@adacore.com>
+
+	* win32-low.c (win32_add_one_solib): Add 0x1000 to load_addr.
+	Add comment.
+	(win32_add_all_dlls): Remove 0x1000 offset applied to DLL
+	base address when calling win32_add_one_solib.
+	(handle_load_dll): Delete local variable load_addr.
+	Remove 0x1000 offset applied to DLL base address when calling
+	win32_add_one_solib.
+	(handle_unload_dll): Add comment.
+
+2014-02-26  Joel Brobecker  <brobecker@adacore.com>
+
+	* win32-low.c (win32_add_all_dlls): Renames
+	win32_ensure_ntdll_loaded.  Rewrite function documentation.
+	Adjust implementation to always load all DLLs.
+	Add 0x1000 offset to DLL base address when calling
+	win32_add_one_solib.
+	(child_initialization_done): New static global.
+	(do_initial_child_stuff): Set child_initialization_done to
+	zero during child initialization, and 1 after.  Replace call
+	to win32_ensure_ntdll_loaded by call to win32_add_all_dlls.
+	Add comment.
+	(match_dll_by_basename, dll_is_loaded_by_basename): Delete.
+	(handle_unload_dll): Add function documentation.
+	(get_child_debug_event): Ignore load and unload DLL events
+	during child initialization.
+
+2014-02-20  Doug Evans  <dje@google.com>
+
+	Remove global all_lwps.
+	* inferiors.h (ptid_of): Move here from linux-low.h.
+	(pid_of, lwpid_of): Ditto.
+	* linux-aarch64-low.c (debug_reg_change_callback): Update, "entry"
+	parameter is a struct thread_info * now.
+	(aarch64_notify_debug_reg_change): Fetch pid from current_inferior
+	directly.  Pass &all_threads to find_inferior instead of &all_lwps.
+	(aarch64_stopped_data_address): Fetch lwpid from current_inferior
+	directly.
+	(aarch64_linux_prepare_to_resume): Fetch ptid from thread.
+	(aarch64_arch_setup): Fetch lwpid from current_inferior directly.
+	* linux-arm-low.c (update_registers_callback): Update, "entry"
+	parameter is a struct thread_info * now.
+	Fetch lwpid from current_inferior directly.
+	(arm_insert_point): Pass &all_threads to find_inferior instead of
+	&all_lwps.
+	(arm_remove_point): Ditto.
+	(arm_stopped_by_watchpoint): Fetch lwp from current_inferior.
+	(arm_prepare_to_resume): Fetch pid from thread.
+	(arm_read_description): Fetch lwpid from current_inferior directly.
+	* linux-low.c (all_lwps): Delete.
+	(delete_lwp): Delete call to remove_inferior.
+	(handle_extended_wait): Fetch lwpid from thread.
+	(add_lwp): Don't set lwp->entry.id.  Remove call to
+	add_inferior_to_list.
+	(linux_attach_lwp_1): Fetch pid from current_inferior directly.
+	(linux_kill_one_lwp): Fetch ptid,lwpid from thread.
+	(kill_one_lwp_callback): Ditto.
+	(linux_kill): Don't dereference NULL pointer.
+	Fetch ptid,lwpid from thread.
+	(get_detach_signal): Fetch ptid from thread.
+	(linux_detach_one_lwp): Fetch ptid,lwpid from thread.
+	Simplify call to regcache_invalidate_thread.
+	(delete_lwp_callback): Update, "entry" parameter is a
+	struct thread_info * now.  Fetch pid from thread.
+	(linux_mourn): Pass &all_threads to find_inferior instead of &all_lwps.
+	(status_pending_p_callback): Update, "entry" parameter is a
+	struct thread_info * now.  Fetch ptid from thread.
+	(find_lwp_pid): Update, "entry" parameter is a
+	struct thread_info * now.
+	(linux_wait_for_lwp): Fetch pid from thread.
+	(linux_fast_tracepoint_collecting): Fetch lwpid from thread.
+	(maybe_move_out_of_jump_pad): Fetch lwpid from current_inferior.
+	(enqueue_one_deferred_signal): Fetch lwpid from thread.
+	(dequeue_one_deferred_signal): Ditto.
+	(cancel_breakpoint): Fetch ptid from current_inferior.
+	(linux_wait_for_event): Pass &all_threads to find_inferior,
+	not &all_lwps.  Fetch ptid, lwpid from thread.
+	(count_events_callback): Update, "entry" parameter is a
+	struct thread_info * now.
+	(select_singlestep_lwp_callback): Ditto.
+	(select_event_lwp_callback): Ditto.
+	(cancel_breakpoints_callback): Ditto.
+	(linux_cancel_breakpoints): Pass &all_threads to find_inferior,
+	not &all_lwps.
+	(select_event_lwp): Ditto.  Fetch ptid from event_thread.
+	(unsuspend_one_lwp): Update, "entry" parameter is a
+	struct thread_info * now.
+	(unsuspend_all_lwps): Pass &all_threads to find_inferior,
+	not &all_lwps.
+	(linux_stabilize_threads): Ditto.  And for for_each_inferior.
+	Fetch lwpid from thread, not lwp.
+	(linux_wait_1): Fetch ptid, lwpid from current_inferior.
+	Pass &all_threads to find_inferior, not &all_lwps.
+	(send_sigstop): Fetch lwpid from thread, not lwp.
+	(send_sigstop_callback): Update, "entry" parameter is a
+	struct thread_info * now.
+	(suspend_and_send_sigstop_callback): Ditto.
+	(wait_for_sigstop): Ditto.  Fetch ptid, lwpid from thread, lwp.
+	(stuck_in_jump_pad_callback): Update, "entry" parameter is a
+	struct thread_info * now.
+	(move_out_of_jump_pad_callback): Ditto.  Fetch ptid, lwpid
+	from thread, lwp.
+	(lwp_running): Update, "entry" parameter is a
+	struct thread_info * now.
+	(stop_all_lwps): Fetch ptid from thread.
+	Pass &all_threads to find_inferior, for_each_inferior, not &all_lwps.
+	(linux_resume_one_lwp): Fetch lwpid from thread.
+	(linux_set_resume_request): Update, "entry" parameter is a
+	struct thread_info * now.  Fetch pid, lwpid from thread.
+	(resume_status_pending_p): Update, "entry" parameter is a
+	struct thread_info * now.
+	(need_step_over_p): Ditto.  Fetch lwpid from thread.
+	(start_step_over): Fetch lwpid from thread.
+	(linux_resume_one_thread): Update, "entry" parameter is a
+	struct thread_info * now.  Fetch lwpid from thread.
+	(linux_resume): Pass &all_threads to find_inferior, not &all_lwps.
+	(proceed_one_lwp): Update, "entry" parameter is a
+	struct thread_info * now.  Fetch lwpid from thread.
+	(unsuspend_and_proceed_one_lwp): Update, "entry" parameter is a
+	struct thread_info * now.
+	(proceed_all_lwps): Pass &all_threads to find_inferior, not &all_lwps.
+	(unstop_all_lwps): Ditto.  Fetch lwpid from thread.
+	(regsets_fetch_inferior_registers): Fetch lwpid from current_inferior
+	directly.
+	(regsets_store_inferior_registers): Ditto.
+	(fetch_register, store_register): Ditto.
+	(linux_read_memory, linux_write_memory): Ditto.
+	(linux_request_interrupt): Ditto.
+	(linux_read_auxv): Ditto.
+	(linux_xfer_siginfo): Ditto.
+	(linux_qxfer_spu): Ditto.
+	(linux_qxfer_libraries_svr4): Ditto.
+	* linux-low.h (ptid_of, pid_of, lwpid_of): Delete,
+	moved to inferiors.h.
+	(get_lwp): Delete.
+	(get_thread_lwp): Update.
+	(struct lwp_info): Delete member "entry".  Simplify comment for
+	member "thread".
+	(all_lwps): Delete.
+	* linux-mips-low.c (mips_read_description): Fetch lwpid from
+	current_inferior directly.
+	(update_watch_registers_callback): Update, "entry" parameter is a
+	struct thread_info * now.  Fetch pid from thread.
+	(mips_linux_prepare_to_resume): Fetch ptid from thread.
+	(mips_insert_point): Fetch lwpid from current_inferior.
+	Pass &all_threads to find_inferior, not &all_lwps.
+	(mips_remove_point): Pass &all_threads to find_inferior, not &all_lwps.
+	(mips_stopped_by_watchpoint): Fetch lwpid from current_inferior
+	directly.
+	(mips_stopped_data_address): Ditto.
+	* linux-s390-low.c (s390_arch_setup): Fetch pid from current_inferior
+	directly.
+	* linux-tile-low.c (tile_arch_setup): Ditto.
+	* linux-x86-low.c (x86_get_thread_area): Fetch lwpid from thread.
+	(update_debug_registers_callback): Update, "entry" parameter is a
+	struct thread_info * now.  Fetch pid from thread.
+	(i386_dr_low_set_addr): Fetch pid from current_inferior directly.
+	Pass &all_threads to find_inferior, not &all_lwps.
+	(i386_dr_low_get_addr): Fetch ptid from current_inferior directly.
+	(i386_dr_low_set_control): Fetch pid from current_inferior directly.
+	Pass &all_threads to find_inferior, not &all_lwps.
+	(i386_dr_low_get_control): Fetch ptid from current_inferior directly.
+	(i386_dr_low_get_status): Ditto.
+	(x86_linux_prepare_to_resume): Fetch ptid from thread.
+	(x86_siginfo_fixup): Fetch lwpid from current_inferior directly.
+	(x86_linux_read_description): Ditto.
+	* proc-service.c (ps_getpid): Fetch pid from current_inferior directly.
+
+2014-02-20  Doug Evans  <dje@google.com>
+
+	* inferiors.c (get_first_inferior): Fix buglet.
+
+2014-02-19  Doug Evans  <dje@google.com>
+
+	* gdbthread.h (add_thread): Change result type to struct thread_info *.
+	* inferiors.c (add_thread): Change result type to struct thread_info *.
+	All callers updated.
+	(add_lwp): Call add_thread here instead of in callers.
+	All callers updated.
+	* linux-low.h (get_lwp_thread): Rewrite.
+	(struct lwp_info): New member "thread".
+
+2014-02-19  Doug Evans  <dje@google.com>
+
+	* linux-low.c (add_lwp): Change result to struct lwp_info *.
+	All callers updated.
+
+2014-02-19  Doug Evans  <dje@google.com>
+
+	* inferiors.c (add_thread): Fix whitespace.
+
+2014-02-19  Doug Evans  <dje@google.com>
+
+	* dll.c (clear_dlls): Replace accessing list implemention details
+	with API function.
+	* gdbthread.h (get_first_thread): Declare.
+	* inferiors.c (for_each_inferior_with_data): New function.
+	(get_first_thread): New function.
+	(find_thread_ptid): Simplify.
+	(get_first_inferior): New function.
+	(clear_list): Delete.
+	(one_inferior_p): New function.
+	(clear_inferior_list): New function.
+	(clear_inferiors): Update.
+	* inferiors.h (for_each_inferior_with_data): Declare.
+	(clear_inferior_list): Declare.
+	(one_inferior_p): Declare.
+	(get_first_inferior): Declare.
+	* linux-low.c (linux_wait_for_event): Replace accessing list
+	implemention details with API function.
+	* server.c (target_running): Ditto.
+	(accumulate_file_name_length): New function.
+	(emit_dll_description): New function.
+	(handle_qxfer_libraries): Replace accessing list implemention
+	details with API function.
+	(handle_qxfer_threads_worker): New function.
+	(handle_qxfer_threads_proper): Replace accessing list implemention
+	details with API function.
+	(handle_query): Ditto.
+	(visit_actioned_threads_callback_ftype): New typedef.
+	(visit_actioned_threads_data): New struct.
+	(visit_actioned_threads): Rewrite to be find_inferior callback.
+	(resume): Call find_inferior.
+	(handle_status): Replace accessing list implemention
+	details with API function.
+	(process_serial_event): Replace accessing list implemention details
+	with API function.
+	* target.c (set_desired_inferior): Replace accessing list implemention
+	details with API function.
+	* tracepoint.c (same_process_p): New function.
+	(gdb_agent_about_to_close): Replace accessing list implemention
+	details with API function.
+	* win32-low.c (child_delete_thread): Replace accessing list
+	implemention details with API function.
+	(match_dll_by_basename): New function.
+	(dll_is_loaded_by_basename): New function.
+	(win32_ensure_ntdll_loaded): Replace accessing list implemention
+	details call to dll_is_loaded_by_basename.
+
+2014-02-19  Doug Evans  <dje@google.com>
+
+	* dll.h (struct dll_info): Add comment.
+	* gdbthread.h (struct thread_info): Add comment.
+	(current_ptid): Simplify.
+	* inferiors.c (add_process): Update.
+	(remove_process): Update.
+	* inferiors.h (struct process_info): Rename member "head" to "entry".
+	* linux-low.c (delete_lwp): Update.
+	(add_lwp): Update.
+	(last_thread_of_process_p): Update.
+	(kill_one_lwp_callback, linux_kill): Update.
+	(status_pending_p_callback): Update.
+	(wait_for_sigstop): Update.  Simplify read of ptid.
+	(start_step_over): Update.
+	* linux-low.h (ptid_of, pid_of, lwpid_of): Update.
+	(get_lwp_thread): Update.
+	(struct lwp_info): Rename member "head" to "entry".
+	* regcache.h (inferior_list_entry): Delete.
+	* server.c (kill_inferior_callback): Update.
+	(detach_or_kill_inferior_callback): Update.
+	(print_started_pid): Update.
+	(print_attached_pid): Update.
+	(process_serial_event): Simplify read of ptid.
+	* thread-db.c (thread_db_create_event): Update.
+	(thread_db_get_tls_address): Update.
+	* win32-low.c (current_inferior_ptid): Simplify.
+
+2014-02-19  Tom Tromey  <tromey@redhat.com>
+
+	* target.h (struct target_ops) <supports_btrace>: Add target_ops
+	argument.
+	(target_supports_btrace): Update.
+
+2014-02-14  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (IPA_OBJS): Append rsp-low-ipa.o.
+	(rsp-low-ipa.o): New target.
+
+2014-02-12  Tom Tromey  <tromey@redhat.com>
+
+	* ax.c (gdb_parse_agent_expr): Use hex2bin, not
+	convert_ascii_to_int.
+	* regcache.c (registers_to_string): Likewise.
+	* remote-utils.c (decode_M_packet): Likewise.
+	* server.c (process_serial_event): Likewise.
+
+2014-02-12  Tom Tromey  <tromey@redhat.com>
+
+	* server.c (handle_query, handle_v_run): Use hex2bin, not
+	unhexify.
+	* tracepoint.c (cmd_qtdpsrc, cmd_qtdv, cmd_qtnotes): Likewise.
+
+2014-02-12  Tom Tromey  <tromey@redhat.com>
+
+	* ax.c (gdb_unparse_agent_expr): Use bin2hex, not
+	convert_int_to_ascii.
+	* regcache.c (registers_to_string, collect_register_as_string):
+	Likewise.
+	* remote-utils.c (look_up_one_symbol, relocate_instruction):
+	Likewise.
+	* server.c (process_serial_event): Likewise.
+	* tracepoint.c (cmd_qtstatus, response_source, response_tsv)
+	(cmd_qtbuffer, cstr_to_hexstr): Likewise.
+
+2014-02-12  Tom Tromey  <tromey@redhat.com>
+
+	* remote-utils.c (look_up_one_symbol, monitor_output): Use
+	bin2hex, not hexify.
+	* tracepoint.c (cmd_qtstatus): Likewise.
+
+2014-02-12  Tom Tromey  <tromey@redhat.com>
+
+	* remote-utils.c (monitor_output): Pass explicit length to
+	hexify.
+
+2014-02-12  Tom Tromey  <tromey@redhat.com>
+
+	* tracepoint.c: Include rsp-low.h.
+	* server.c: Include rsp-low.h.
+	* remote-utils.h (convert_ascii_to_int, convert_int_to_ascii)
+	(unhexify, hexify, remote_escape_output, unpack_varlen_hex): Don't
+	declare.
+	* remote-utils.c: Include rsp-low.h.
+	(fromhex, hexchars, ishex, unhexify, tohex, hexify)
+	(remote_escape_output, remote_unescape_input, unpack_varlen_hex)
+	(convert_int_to_ascii, convert_ascii_to_int): Move to
+	common/rsp-low.c.
+	* regcache.c: Include rsp-low.h.
+	* ax.c: Include rsp-low.h.
+	* Makefile.in (SFILES): Add common/rsp-low.c.
+	(OBS): Add rsp-low.o.
+	(rsp-low.o): New target.
+
+2014-02-12  Tom Tromey  <tromey@redhat.com>
+
+	* utils.h (pulongest, plongest, phex_nz): Don't declare.
+	Include print-utils.h.
+	* utils.c (NUMCELLS, CELLSIZE, get_cell, decimal2str, pulongest)
+	(plongest, thirty_two, phex_nz): Remove.
+	* Makefile.in (SFILES): Add common/print-utils.c.
+	(OBS): Add print-utils.o.
+	(print-utils-ipa.o): New target.
+	(print-utils.o): New target.
+	(IPA_OBJS): Add print-utils-ipa.o.
+
+2014-02-06  Tom Tromey  <tromey@redhat.com>
+
+	* Makefile.in (SFILES): Fix indentation.
+
+2014-02-05  Doug Evans  <dje@google.com>
+
+	* linux-low.c (linux_wait_for_event): Improve comment.
+	(linux_wait_1): Keep current_inferior in sync with event_child.
+
+2014-01-22  Doug Evans  <dje@google.com>
+
+	* gdbthread.h (gdb_id_to_thread): Delete, unused.
+
+2014-01-22  Doug Evans  <dje@google.com>
+
+	* configure.ac (AC_CHECK_FUNCS): Add test for gettimeofday.
+	* configure: Regenerate.
+	* config.in: Regenerate.
+	* Makefile.in (SFILES): Add debug.c.
+	(OBS): Add debug.o.
+	* debug.c: New file.
+	* debug.h: New file.
+	* linux-aarch64-low.c (*): Update all debugging printfs to use
+	debug_printf instead of fprintf.
+	* linux-arm-low.c (*): Ditto.
+	* linux-cris-low.c (*): Ditto.
+	* linux-crisv32-low.c (*): Ditto.
+	* linux-m32r-low.c (*): Ditto.
+	* linux-sparc-low.c (*): Ditto.
+	* linux-x86.c (*): Ditto.
+	* linux-low.c (*): Ditto.
+	(linux_wait_1): Add calls to debug_enter, debug_exit.
+	(linux_wait): Remove redundant debugging printf.
+	(stop_all_lwps): Add calls to debug_enter, debug_exit.
+	(linux_resume, unstop_all_lwps): Ditto.
+	* mem-break.c (*): Update all debugging printfs to use
+	debug_printf instead of fprintf.
+	* remote-utils.c (*): Ditto.
+	* thread-db.c (*): Ditto.
+	* server.c #include <ctype.h>, "gdb_vecs.h".
+	(debug_threads): Moved to debug.c.
+	(*): Update all debugging printfs to use debug_printf instead of
+	fprintf.
+	(start_inferior): Replace call to fflush with call to debug_flush.
+	(monitor_show_help): Mention set debug-format.
+	(parse_debug_format_options): New function.
+	(handle_monitor_command): Handle "monitor set debug-format".
+	(gdbserver_usage): Mention --debug-format.
+	(main): Parse --debug-format.
+	* server.h (debug_threads): Declaration moved to debug.h.
+	#include "debug.h".
+	* tracepoint.c (trace_debug_1) [!IN_PROCESS_AGENT]: Add version of
+	trace_debug_1 that uses debug_printf.
+	(tracepoint_look_up_symbols): Update all debugging printfs to use
+	debug_printf instead of fprintf.
+
+2014-01-20  Baruch Siach  <baruch@tkos.co.il>
+
+	* linux-xtensa-low.c: Include asm/ptrace.h instead of
+	sys/ptrace.h.
+
+2014-01-17  Pedro Alves  <palves@redhat.com>
+
+	PR build/16445
+	* linux-x86-low.c: Don't include elf/common.h if ELFMAG0 is
+	defined after including gdb_proc_service.h.
+
+2014-01-16  Doug Evans  <dje@google.com>
+
+	* dll.c (UNSPECIFIED_CORE_ADDR): New macro.
+	(match_dll): Use it.
+
+2014-01-16  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* target.h (target_ops) <read_btrace>: Change parameters and
+	return type to allow error reporting.
+	* server.c (handle_qxfer_btrace): Support delta reads.  Pass
+	trace reading errors on.
+	* linux-low.c (linux_low_read_btrace): Pass trace reading
+	errors on.
+	(linux_low_disable_btrace): New.
+
+2014-01-15  Doug Evans  <dje@google.com>
+
+	* inferiors.c (thread_id_to_gdb_id): Delete.
+	* inferiors.h (thread_id_to_gdb_id): Delete.
+
+2014-01-13  Eli Zaretskii  <eliz@gnu.org>
+
+	* Makefile.in (INCLUDE_CFLAGS): Remove trailing slash from
+	"-I$(srcdir)/../".  Fixes MinGW compilation errors with old GCC
+	versions.
+
+2014-01-08  Pedro Alves  <palves@redhat.com>
+
+	* server.c (handle_status): Don't discard previous queued stop
+	replies or thread's pending status here.
+	(main) <disconnection>: Do it here instead.
+
+2014-01-08  Pedro Alves  <palves@redhat.com>
+
+	* gdbthread.h (struct thread_info) <status_pending_p>: New field.
+	* server.c (visit_actioned_threads, handle_pending_status): New
+	function.
+	(handle_v_cont): Factor out parts to ...
+	(resume): ... this new function.  If in all-stop, and a thread
+	being resumed has a pending status, report it without actually
+	resuming.
+	(myresume): Adjust to use the new 'resume' function.
+	(clear_pending_status_callback, set_pending_status_callback)
+	(find_status_pending_thread_callback): New functions.
+	(handle_status): Handle the case of multiple threads having
+	interesting statuses to report.  Report threads' real last signal
+	instead of always reporting GDB_SIGNAL_TRAP.  Look for a thread
+	with an interesting thread to report the status for, instead of
+	always reporting the status of the first thread.
+
+2014-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbserver.c (gdbserver_version): Set copyright year to 2014.
+	* gdbreplay.c (gdbreplay_version): Likewise.
+
+2013-12-18  Yufeng Zhang  <yufeng.zhang@arm.com>
+
+	* linux-aarch64-low.c (aarch64_linux_set_debug_regs): Set
+	iov.iov_len with the real length in use.
+
+2013-12-13  Joel Brobecker  <brobecker@adacore.com>
+
+	* Makefile.in (safe-ctype.o, lbasename.o): New rules.
+	* configure.srv: Add safe-ctype.o and lbasename.o to srv_tgtobj
+	for all targets that use win32-low.c.
+	* win32-low.c (win32_ensure_ntdll_loaded): New function.
+	(do_initial_child_stuff): Add call to win32_ensure_ntdll_loaded.
+
+2013-12-13  Pedro Alves  <palves@redhat.com>
+
+	* target.c (mywait): Set OURSTATUS->KIND to TARGET_WAITKIND_STOPPED
+	if equal to TARGET_WAITKIND_LOADED.
+	* win32-low.c (cached_status): New static global.
+	(win32_wait): Add declaration.
+	(do_initial_child_stuff): Flush all initial pending debug events
+	up to the initial breakpoint.
+	(win32_wait): If CACHED_STATUS was set, return that instead
+	of doing a real wait.  Remove the code resuming the execution
+	of the inferior after receiving a TARGET_WAITKIND_LOADED event
+	during the initial phase.  Also remove the code changing
+	OURSTATUS->KIND from TARGET_WAITKIND_LOADED to
+	TARGET_WAITKIND_STOPPED.
+
+2013-12-11  Yao Qi  <yao@codesourcery.com>
+
+	* notif.c (handle_notif_ack): Return 0 if no notification
+	matches.
+
+2013-11-20  Doug Evans  <dje@google.com>
+
+	* linux-low.c (linux_set_resume_request): Fix comment.
+
+2013-11-20  Doug Evans  <dje@google.com>
+
+	* linux-low.c (resume_status_pending_p): Tweak comment.
+
+2013-11-20  Walfred Tedeschi  <walfred.tedeschi@intel.com>
+
+	* Makefile.in: Add i386-mpx.c, i386-mpx-linux.c, amd64-mpx.c,
+	amd64-mpx-linux.c, x32-mpx.c and x32-mpx-linux.c generation.
+	* configure.srv (srv_i386_regobj): Add i386-mpx.o.
+	(srv_i386_linux_regobj): Add i386-mpx-linux.o.
+	(srv_amd64_regobj): Add amd64-mpx.o.
+	(srv_amd64_linux_regobj): Add amd64-mpx-linux.o.
+	(srv_i386_32bit_xmlfiles): Add i386/32bit-mpx.xml.
+	(srv_i386_64bit_xmlfiles): Add i386/64bit-mpx.xml.
+	* i387-fp.c (num_pl_bnd_register) Added constant.
+	(num_pl_bnd_cfg_registers) Added constant.
+	(struct i387_xsave) Added reserved area and MPX fields.
+	(i387_cache_to_xsave, i387_xsave_to_cache) Add MPX.
+	* linux-x86-low.c (init_registers_i386_mpx_linux): Declare new
+	function.
+	(tdesc_i386_mpx_linux): Add MPX amd64 target.
+	(init_registers_amd64_mpx_linux): Declare new function.
+	(tdesc_amd64_mpx_linux): Add MPX amd64 target.
+	(x86_64_regmap): Add MPX registers.
+	(x86_linux_read_description): Add MPX case.
+	(initialize_low_arch): Initialize MPX targets.
+
+2013-11-18  Tom Tromey  <tromey@redhat.com>
+
+	* configure: Rebuild.
+	* configure.ac: Don't check for stdlib.h.
+	* gdbreplay.c: Unconditionally include stdlib.h.
+
+2013-11-18  Tom Tromey  <tromey@redhat.com>
+
+	* config.in: Rebuild.
+	* configure: Rebuild.
+	* configure.ac: Don't use AC_HEADER_DIRENT.
+
+2013-11-18  Tom Tromey  <tromey@redhat.com>
+
+	* server.h: Don't check HAVE_STRING_H.
+	* gdbreplay.c: Don't check HAVE_STRING_H.
+	* configure: Rebuild.
+
+2013-11-18  Tom Tromey  <tromey@redhat.com>
+
+	* Makefile.in (gdbreplay$(EXEEXT)): Depend on and link against
+	LIBGNU.
+
+2013-11-08  Tom Tromey  <tromey@redhat.com>
+
+	* configure, config.in: Rebuild.
+	* configure.ac: Remove unused configury.
+
+2013-11-08  Tom Tromey  <tromey@redhat.com>
+
+	* acinclude.m4: Include common.m4, codeset.m4.
+	* configure, config.in: Rebuild.
+	* configure.ac: Use GDB_AC_COMMON.
+
+2013-11-06  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* linux-s390-low.c (HWCAP_S390_TE): New define.
+	(s390_arch_setup): Consider the TE field in the HWCAP for
+	determining 'have_regset_tdb'.
+
+2013-10-16  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	PR gdb/16014
+	* tracepoint.c (download_tracepoint_1): Remove unnecessary double
+	call to sizeof.
+
+2013-10-02  Pedro Alves  <palves@redhat.com>
+
+	* server.c (process_serial_event): Don't output "GDBserver
+	exiting" if GDB is connected through stdio.
+	* target.c (mywait): Likewise, be silent if GDB is connected
+	through stdio.
+
+2013-10-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_add_threads_after_attach): New function.
+	(lynx_attach): Remove call to add_thread.  Add call to
+	lynx_add_threads_after_attach instead.
+
+2013-09-28  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure.ac (AC_CHECK_HEADERS): Add sys/syscall.h
+	* config.in, configure: Regenerated.
+
+2013-09-18  Yao Qi  <yao@codesourcery.com>
+
+	PR server/15959
+	* server.c (start_inferior): Clear 'resume_info'.
+
+2013-09-16  Jiong Wang  <jiwang@tilera.com>
+
+	* linux-tile-low.c (tile_regsets): Modify the size field to 64-bit
+	for each register.
+
+2013-09-16  Jiong Wang  <jiwang@tilera.com>
+
+	* configure.srv <tilegx*-*-linux*>: Remove linux-osdata.o from and add
+	linux-tile-low.o to srv_tgtobj.
+
+2013-09-16  Will Newton  <will.newton@linaro.org>
+
+	* linux-aarch64-low.c (aarch64_linux_set_debug_regs): Zero
+	out regs.
+
+2013-09-06  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (gdb_proc_service_h, regdef_h, regcache_h)
+	(signals_def, signals_h, ptid_h, ax_h, agent_h, linux_btrace_h)
+	(linux_osdata_h, vec_h, gdb_vecs_h, host_defs_h, libiberty_h)
+	(server_h, gdbthread_h, linux_low_h, linux_ptrace_h)
+	(gdb_thread_db_h, linux_procfs_h, lynx_low_h, nto_low_h)
+	(mips_linux_watch_h, i386_low_h, win32_low_h): Delete.
+
+2013-09-06  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (linux-btrace.o, mips-linux-watch.o): Remove
+	explicit header dependencies and use $COMPILE/$POSTCOMPILE.
+
+2013-09-06  Pedro Alves  <palves@redhat.com>
+
+	* linux-amd64-ipa.c: Include tracepoint.h.
+	* linux-i386-ipa.c: Include tracepoint.h.
+
+2013-09-06  Ricard Wanderlof  <ricardw@axis.com>
+
+	* linux-crisv32-low.c (PTRACE_GET_THREAD_AREA): New macro.
+	(ps_get_thread_area): New function.
+
+2013-09-06  Ricard Wanderlof  <ricardw@axis.com>
+
+	* linux-crisv32-low.c (elf_gregset_t): Delete typedef.
+	(initialize_low_arch): Call init_registers_crisv32 rather than
+	init_register_crisv32.
+
+2013-09-05  Pedro Alves  <palves@redhat.com>
+
+	* server.h (handle_vFile, hostio_last_error_from_errno): Move
+	to ...
+	* hostio.h: ... this new file.
+	* hostio.c, server.c, linux-low.c, nto-low.c, spu-low,
+	win32-low.c: Include hostio.h.
+
+2013-09-05  Pedro Alves  <palves@redhat.com>
+
+	* server.h (gdb_client_data, handler_func, callback_handler_func)
+	(delete_file_handler, add_file_handler, append_callback_event)
+	(delete_callback_event, start_event_loop, initialize_event_loop):
+	Move to event-loop.h and include it.
+	* event-loop.h: New file.
+
+2013-09-05  Pedro Alves  <palves@redhat.com>
+
+	* dll.c, inferiors.c, remote-utils.c, server.c: Include "dll.h".
+	* server.h (struct dll_info, all_dlls, dlls_changed, clear_dlls)
+	(loaded_dll, unloaded_dll): Move to ...
+	* dll.h: ... this new file.
+	* inferiors.c, remote-utils.c, win32-low.c: Include "dll.h".
+
+2013-09-05  Pedro Alves  <palves@redhat.com>
+
+	* server.h (current_process, get_thread_process, all_processes)
+	(add_inferior_to_list, for_each_inferior, current_inferior)
+	(remove_inferior, add_process, remove_process, find_process_pid)
+	(have_started_inferiors_p, have_attached_inferiors_p)
+	(thread_id_to_gdb_id, thread_to_gdb_id, gdb_id_to_thread_id)
+	(clear_inferiors, find_inferior, find_inferior_id)
+	(inferior_target_data, set_inferior_target_data)
+	(inferior_regcache_data, set_inferior_regcache_data): Move to
+	inferiors.h, and include it.
+	* inferiors.h: New file.
+
+2013-09-05  Pedro Alves  <palves@redhat.com>
+
+	* server.h (struct emit_ops, current_insn_ptr, emit_error):
+	Move ...
+	* ax.h: ... here.
+
+2013-09-05  Pedro Alves  <palves@redhat.com>
+
+	* ax.c, linux-low.c, linux-x86-low.c, server.c: Include
+	tracepoint.h.
+	* server.h (IPA_BUFSIZ, initialize_tracepoint, tracing)
+	(disconnected_tracing, tracepoint_look_up_symbols, stop_tracing
+	(handle_tracepoint_general_set, handle_tracepoint_query)
+	(tracepoint_finished_step, tracepoint_was_hit)
+	(release_while_stepping_state_list, current_traceframe)
+	(in_readonly_region, traceframe_read_mem)
+	(fetch_traceframe_registers, traceframe_read_sdata)
+	(traceframe_read_info, struct fast_tpoint_collect_status)
+	(fast_tracepoint_collecting, force_unlock_trace_buffer)
+	(handle_tracepoit_bkpts, initialize_low_tracepoint)
+	(supply_fast_tracepoint_registers)
+	(supply_static_tracepoint_registers, set_trampoline_buffer_space)
+	(ipa_tdesc, claim_trampoline_space)
+	(have_fast_tracepoint_trampoline_buffer, gdb_agent_about_to_close)
+	(agent_mem_read, agent_get_trace_state_variable_value)
+	(agent_set_trace_state_variable_value, agent_tsv_read)
+	(agent_mem_read_string, get_raw_reg_func_addr)
+	(get_get_tsv_func_addr, get_set_tsv_func_addr): Move to ...
+	* tracepoint.h: ... this new file.
+
+2013-09-05  Pedro Alves  <palves@redhat.com>
+
+	* server.h (perror_with_name, error, fatal, warning, paddress)
+	(pulongest, plongest, phex_nz, pfildes): Move to utils.h, and
+	include it.
+	* utils.h: New file.
+
+2013-09-05  Pedro Alves  <palves@redhat.com>
+
+	* server.h (remote_debug, noack_mode, transport_is_reliable)
+	(gdb_connected, STDIO_CONNECTION_NAME, remote_connection_is_stdio)
+	(read_ptid, write_ptid, putpkt, putpkt_binary, putpkt_notif)
+	(getpkt, remote_prepare, remote_open, remote_close, write_ok)
+	(write_enn, initialize_async_io, enable_async_io)
+	(disable_async_io, check_remote_input_interrupt_request)
+	(convert_ascii_to_int, convert_int_to_ascii, new_thread_notify)
+	(dead_thread_notify, prepare_resume_reply)
+	(decode_address_to_semicolon, decode_address, decode_m_packet)
+	(decode_M_packet, decode_X_packet, decode_xfer_write)
+	(decode_search_memory_packet, unhexify, hexify)
+	(remote_escape_output, unpack_varlen_hex, clear_symbol_cache)
+	(look_up_one_symbol, relocate_instruction)
+	(monitor_output): Move to remote-utils.h, and include it.
+	* remote-utils.h: New file.
+
+2013-09-05  Pedro Alves  <palves@redhat.com>
+
+	* server.h (_): Delete.
+
+2013-09-02  Pedro Alves  <palves@redhat.com>
+
+	* tracepoint.c (TRACEFRAME_EOB_MARKER_SIZE): New macro.
+	(init_trace_buffer): Ensure at least TRACEFRAME_EOB_MARKER_SIZE is
+	allocated.
+	(trace_buffer_alloc): Use TRACEFRAME_EOB_MARKER_SIZE.
+
+2013-09-02  Pierre Muller  <muller@sourceware.org>
+
+	* win32-low.c (child_xfer_memory): Check if ReadProcessMemory
+	or WriteProcessMemory complete successfully and handle
+	ERROR_PARTIAL_COPY error.
+
+2013-09-02  Pedro Alves  <palves@redhat.com>
+
+	* server.c (gdb_read_memory): Return -1 on traceframe memory read
+	error instead of EIO.
+
+2013-08-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	PR server/15604
+	* linux-low.c: Include filestuff.h.
+	(linux_create_inferior) <pid == 0>: Call close_most_fds.
+	* lynx-low.c: Include filestuff.h.
+	(lynx_create_inferior) <pid == 0>: Call close_most_fds.
+	* server.c: Include filestuff.h.
+	(main): Call notice_open_fds.
+	* spu-low.c: Include filestuff.h.
+	(spu_create_inferior) <pid == 0>: Call close_most_fds.
+
+2013-08-22  Luis Machado  <lgustavo@codesourcery.com>
+
+	* Makefile.in: Explain why ../target and ../nat are not
+	listed as include file search paths.
+	(linux-waitpid.o): New object file rule.
+	* configure.srv (srv_native_linux_obj): New variable.
+	Replace all occurrences of linux native object files with
+	$srv_native_linux_obj.
+	* linux-low.c: Include nat/linux-nat.h and nat/linux-waitpid.h.
+	(HAS_NOMMU): Move defining logic to common/linux-ptrace.c.
+	(linux_enable_event_reporting): Remove declaration.
+	(my_waitpid): Moved to common/linux-waitpid.c.
+	(linux_wait_for_event): Pass ptid when calling
+	linux_enable_event_reporting.
+	(linux_supports_tracefork_flag): Remove.
+	(linux_enable_event_reporting): Likewise.
+	(linux_tracefork_grandchild): Remove.
+	(STACK_SIZE): Moved to common/linux-ptrace.c.
+	(linux_tracefork_child): Remove.
+	(linux_test_for_tracefork): Remove.
+	(linux_look_up_symbols): Call linux_supports_traceclone.
+	(initialize_low): Remove call to linux_test_for_tracefork.
+	* linux-low.h (PTRACE_TYPE_ARG3): Move to
+	common/linux-ptrace.h.
+	(PTRACE_TYPE_ARG4): Likewise.
+	Include linux-ptrace.h.
+
+2013-08-21  Pedro Alves  <palves@redhat.com>
+
+	* config.in: Renegerate.
+
+2013-08-19  Luis Machado  <lgustavo@codesourcery.com>
+
+	* Makefile.in (INCLUDE_CFLAGS): Include -I$(srcdir)/../.
+	(SFILES): Remove $(srcdir)/common/target-common.c and
+	add $(srcdir)/target/waitstatus.c.
+	(OBS): Remove target-common.o and add waitstatus.o.
+	(server_h): Remove $(srcdir)/../common/target-common.h and
+	add $(srcdir)/../target/resume.h, $(srcdir)/../target/wait.h
+	and $(srcdir)/../target/waitstatus.h.
+	(target-common.o): Remove.
+	(waitstatus.o): New target object file.
+	* target.h: Do not include target-common.h and
+	include target/resume.h, target/wait.h and
+	target/waitstatus.h.
+
+2013-08-13  Luis Machado  <lgustavo@codesourcery.com>
+
+	* linux-arm-low.c: Rename all occurrences of PTRACE_ARG3_TYPE
+	to PTRACE_TYPE_ARG3.
+	* linux-low.c: Rename all occurrences of PTRACE_ARG3_TYPE
+	to PTRACE_TYPE_ARG3 and PTRACE_ARG4_TYPE to
+	PTRACE_TYPE_ARG4.
+	* linux-low.h (PTRACE_ARG3_TYPE): Rename to PTRACE_TYPE_ARG3.
+	(PTRACE_ARG4_TYPE): Rename to PTRACE_TYPE_ARG4.
+
+2013-07-27  Jie Zhang  <jie@codesourcery.com>
+	    Daniel Jacobowitz  <dan@codesourcery.com>
+	    Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (SFILES): Add common/mips-linux-watch.c.
+	(mips-linux-watch.o): New rule.
+	(mips_linux_watch_h): New variable.
+	* configure.srv <mips*-*-linux*>: Add mips-linux-watch.o to
+	srv_tgtobj.
+	* linux-mips-low.c: Include mips-linux-watch.h.
+	(struct arch_process_info, struct arch_lwp_info): New.
+	(update_watch_registers_callback): New function.
+	(mips_linux_new_process, mips_linux_new_thread) New functions.
+	(mips_linux_prepare_to_resume, mips_insert_point): New
+	functions.
+	(mips_remove_point, mips_stopped_by_watchpoint): New
+	functions.
+	(rsp_bp_type_to_target_hw_bp_type): New function.
+	(mips_stopped_data_address): New function.
+	(the_low_target): Add watchpoint support functions.
+
+2013-07-27  Yao Qi  <yao@codesourcery.com>
+
+	* i386-low.c: Include break-common.h.
+	(enum target_hw_bp_type): Remove.
+
+2013-07-24  Luis Machado  <lgustavo@codesourcery.com>
+
+	* Makefile.in (SFILES): /common/target-common.c.
+	(OBS): Add target-common.o.
+	(server_h): Add $(srcdir)/../common/target-common.h.
+	(target-common.o): New target.
+	* server.c (queue_stop_reply_callback): Free
+	status string after use.
+	* target.c (target_waitstatus_to_string): Remove.
+	* target.h: Include target-common.h.
+	(resume_kind): Likewise.
+	(target_waitkind): Likewise.
+	(target_waitstatus): Likewise.
+	(TARGET_WNOHANG): Likewise.
+
+2013-07-04  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (host_alias): Use @host_noncanonical@.
+	(target_alias): Use @target_noncanonical@.
+	* configure.ac: Use ACX_NONCANONICAL_TARGET and
+	ACX_NONCANONICAL_HOST.
+	* configure: Regenerated.
+
+	Revert:
+	2013-06-28  Mircea Gherzan  <mircea.gherzan@intel.com>
+
+	* configure.ac (version_host, version_target): Set and AC_SUBST them.
+	* configure: Rebuild.
+	* Makefile.in (version_host, version_target): Get from configure.
+	(version.c): Use $(version_host) and $(version_target).
+
+2013-07-03  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (config.status): Depend on development.sh.
+	* acinclude.m4: Include libmcheck.m4.
+	* configure: Regenerate.
+
+2013-07-02  Mircea Gherzan  <mircea.gherzan@intel.com>
+
+	* win32-low.c (winapi_DebugActiveProcessStop): Move the WINAPI
+	attribute inside the parentheses.
+	(winapi_DebugSetProcessKillOnExit): Ditto.
+	(winapi_DebugBreakProcess): Ditto.
+	(winapi_GenerateConsoleCtrlEvent): Ditto.
+
+2013-07-02  Mircea Gherzan  <mircea.gherzan@intel.com>
+
+	* notif.h (notif_event): Add a dummy member to avoid compiler
+	errors.
+
+2013-07-01  Pedro Alves  <palves@redhat.com>
+
+	* hostio.c (HOSTIO_PATH_MAX): Define.
+	(require_filename, handle_open, handle_unlink, handle_readlink):
+	Use it.
+
+2013-07-01  Pedro Alves  <palves@redhat.com>
+
+	* server.h: Include "pathmax.h".
+	* linux-low.c: Don't include sys/param.h.
+	(linux_pid_exe_is_elf_64_file): Use PATH_MAX instead of
+	MAXPATHLEN.
+	* win32-low.c: Don't include sys/param.h.
+	(win32_create_inferior): Use PATH_MAX instead of MAXPATHLEN.
+
+2013-07-01  Pedro Alves  <palves@redhat.com>
+
+	* event-loop.c: Don't check HAVE_UNISTD_H before including
+	<unistd.h>.
+	* gdbreplay.c: Likewise.
+	* remote-utils.c: Likewise.
+	* server.c: Likewise.
+	* configure.ac: Don't check for unistd.h.
+	* configure: Regenerate.
+
+2013-06-28  Tom Tromey  <tromey@redhat.com>
+
+	* Makefile.in (version.c): Use version.in, not
+	common/version.in.
+
+2013-06-28  Mircea Gherzan  <mircea.gherzan@intel.com>
+
+	* configure.ac (version_host, version_target): Set and AC_SUBST them.
+	* configure: Rebuild.
+	* Makefile.in (version_host, version_target): Get from configure.
+	(version.c): Use $(version_host) and $(version_target).
+
+2013-06-10  Dmitry Kozlov <ddk@codesourcery.com>
+
+	Fix trace-status to output user name without trailing colon.
+	* tracepoint.c (cmd_qtstatus): Remove unnecessary colon from user name.
+
+2013-06-10  Dmitry Kozlov <ddk@codesourcery.com>
+
+	Fix trace-status to output proper start-time and stop-time.
+	* tracepoint.c (cmd_qtstatus): Modify trace-status output to
+	output start time and stop time in hex as gdb expects.
+
+2013-06-26  Pedro Alves  <pedro@codesourcery.com>
+
+	* tracepoint.c (build_traceframe_info_xml): Output trace state
+	variables present in the trace buffer.
+
+2013-06-24  Tom Tromey  <tromey@redhat.com>
+
+	* Makefile.in (version.c): Use bfd/version.h, common/version.in,
+	create-version.sh.
+	(version.o): Remove.
+	* gdbreplay.c: Include version.h.
+	(version, host_name): Don't declare.
+	* server.h: Include version.h.
+	(version, host_name): Don't declare.
+
+2013-06-12  Pedro Alves  <palves@redhat.com>
+
+	* linux-x86-low.c (linux_is_elf64): Delete global.
+	(x86_siginfo_fixup): Replace reference to `linux_is_elf64' global
+	with local linux_pid_exe_is_elf_64_file use.
+
+2013-06-11  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (regset_disabled, disable_regset): New functions.
+	(regsets_fetch_inferior_registers)
+	(regsets_store_inferior_registers): Use them.
+	(initialize_regsets_info); Don't allocate the disabled_regsets
+	array here.
+	* linux-low.h (struct regsets_info) <disabled_regsets>: Extend
+	comment.
+
+2013-06-11  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (initialize_regsets_info): Use xcalloc instead of
+	xmalloc.
+
+2013-06-11  Pedro Alves  <palves@redhat.com>
+
+	* linux-x86-low.c (initialize_low_arch): Call
+	init_registers_x32_avx_linux.
+
+2013-06-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Fix compatibility with Android Bionic.
+	* linux-low.c (linux_qxfer_libraries_svr4): Ignore first entry even if
+	it is not empty.
+
+2013-06-07  Pedro Alves  <palves@redhat.com>
+
+	PR server/14823
+	* Makefile.in (OBS): Add tdesc.o.
+	(IPA_OBJS): Add tdesc-ipa.o.
+	(tdesc-ipa.o): New rule.
+	* ax.c (gdb_eval_agent_expr): Adjust register_size call to new
+	interface.
+	* linux-low.c (new_inferior): Delete.
+	(disabled_regsets, num_regsets): Delete.
+	(linux_add_process): Adjust to set the new per-process
+	new_inferior flag.
+	(linux_detach_one_lwp): Adjust to call regcache_invalidate_thread.
+	(linux_wait_for_lwp): Adjust.  Only call arch_setup if the event
+	was a stop.  When calling arch_setup, switch the current inferior
+	to the thread that got an event.
+	(linux_resume_one_lwp): Adjust to call regcache_invalidate_thread.
+	(regsets_fetch_inferior_registers)
+	(regsets_store_inferior_registers): New regsets_info parameter.
+	Adjust to use it.
+	(linux_register_in_regsets): New regs_info parameter.  Adjust to
+	use it.
+	(register_addr, fetch_register, store_register): New usrregs_info
+	parameter.  Adjust to use it.
+	(usr_fetch_inferior_registers, usr_store_inferior_registers): New
+	parameter regs_info.  Adjust to use it.
+	(linux_fetch_registers): Get the current inferior's regs_info, and
+	adjust to use it.
+	(linux_store_registers): Ditto.
+	[HAVE_LINUX_REGSETS] (initialize_regsets_info): New.
+	(initialize_low): Don't initialize the target_regsets here.  Call
+	initialize_low_arch.
+	* linux-low.h (target_regsets): Delete declaration.
+	(struct regsets_info): New.
+	(struct usrregs_info): New.
+	(struct regs_info): New.
+	(struct process_info_private) <new_inferior>: New field.
+	(struct linux_target_ops): Delete the num_regs, regmap, and
+	regset_bitmap fields.  New field regs_info.
+	[HAVE_LINUX_REGSETS] (initialize_regsets_info): Declare.
+	* i387-fp.c (num_xmm_registers): Delete.
+	(i387_cache_to_fsave, i387_fsave_to_cache): Adjust find_regno
+	calls to new interface.
+	(i387_cache_to_fxsave, i387_cache_to_xsave, i387_fxsave_to_cache)
+	(i387_xsave_to_cache): Adjust find_regno calls to new interface.
+	Infer the number of xmm registers from the regcache's target
+	description.
+	* i387-fp.h (num_xmm_registers): Delete.
+	* inferiors.c (add_thread): Don't install the thread's regcache
+	here.
+	* proc-service.c (gregset_info): Fetch the current inferior's
+	regs_info.  Adjust to use it.
+	* regcache.c: Include tdesc.h.
+	(register_bytes, reg_defs, num_registers)
+	(gdbserver_expedite_regs): Delete.
+	(get_thread_regcache): If the thread doesn't have a regcache yet,
+	create one, instead of aborting gdbserver.
+	(regcache_invalidate_one): Rename to ...
+	(regcache_invalidate_thread): ... this.
+	(regcache_invalidate_one): New.
+	(regcache_invalidate): Only invalidate registers of the current
+	process.
+	(init_register_cache): Add target_desc parameter, and use it.
+	(new_register_cache): Ditto.  Assert the target description has a
+	non zero registers_size.
+	(regcache_cpy): Add assertions.  Adjust.
+	(realloc_register_cache, set_register_cache): Delete.
+	(registers_to_string, registers_from_string): Adjust.
+	(find_register_by_name, find_regno, find_register_by_number)
+	(register_cache_size): Add target_desc parameter, and use it.
+	(free_register_cache_thread, free_register_cache_thread_one)
+	(regcache_release, register_cache_size): New.
+	(register_size): Add target_desc parameter, and use it.
+	(register_data, supply_register, supply_register_zeroed)
+	(supply_regblock, supply_register_by_name, collect_register)
+	(collect_register_as_string, collect_register_by_name): Adjust.
+	* regcache.h (struct target_desc): Forward declare.
+	(struct regcache) <tdesc>: New field.
+	(init_register_cache, new_register_cache): Add target_desc
+	parameter.
+	(regcache_invalidate_thread): Declare.
+	(regcache_invalidate_one): Delete declaration.
+	(regcache_release): Declare.
+	(find_register_by_number, register_cache_size, register_size)
+	(find_regno): Add target_desc parameter.
+	(gdbserver_expedite_regs, gdbserver_xmltarget): Delete
+	declarations.
+	* remote-utils.c: Include tdesc.h.
+	(outreg, prepare_resume_reply): Adjust.
+	* server.c: Include tdesc.h.
+	(gdbserver_xmltarget): Delete declaration.
+	(get_features_xml, process_serial_event): Adjust.
+	* server.h [IN_PROCESS_AGENT] (struct target_desc): Forward
+	declare.
+	(struct process_info) <tdesc>: New field.
+	(ipa_tdesc): Declare.
+	* tdesc.c: New file.
+	* tdesc.h: New file.
+	* tracepoint.c: Include tdesc.h.
+	[IN_PROCESS_AGENT] (ipa_tdesc): Define.
+	(get_context_regcache): Adjust to pass ipa_tdesc down.
+	(do_action_at_tracepoint): Adjust to get the register cache size
+	from the context regcache's description.
+	(traceframe_walk_blocks): Adjust to get the register cache size
+	from the current trace frame's description.
+	(traceframe_get_pc): Adjust to get current trace frame's
+	description and pass it down.
+	(gdb_collect): Adjust to get the register cache size from the
+	IPA's description.
+	* linux-amd64-ipa.c (tdesc_amd64_linux): Declare.
+	(gdbserver_xmltarget): Delete.
+	(initialize_low_tracepoint): Set the ipa's target description.
+	* linux-i386-ipa.c (tdesc_i386_linux): Declare.
+	(initialize_low_tracepoint): Set the ipa's target description.
+	* linux-x86-low.c: Include tdesc.h.
+	[__x86_64__] (is_64bit_tdesc): New.
+	(ps_get_thread_area, x86_get_thread_area): Use it.
+	(i386_cannot_store_register): Rename to ...
+	(x86_cannot_store_register): ... this.  Use is_64bit_tdesc.
+	(i386_cannot_fetch_register): Rename to ...
+	(x86_cannot_fetch_register): ... this.  Use is_64bit_tdesc.
+	(x86_fill_gregset, x86_store_gregset): Adjust register_size calls
+	to new interface.
+	(target_regsets): Rename to ...
+	(x86_regsets): ... this.
+	(x86_get_pc, x86_set_pc): Adjust register_size calls to new
+	interface.
+	(x86_siginfo_fixup): Use is_64bit_tdesc.
+	[__x86_64__] (tdesc_amd64_linux, tdesc_amd64_avx_linux)
+	(tdesc_x32_avx_linux, tdesc_x32_linux)
+	(tdesc_i386_linux, tdesc_i386_mmx_linux, tdesc_i386_avx_linux):
+	Declare.
+	(x86_linux_update_xmltarget): Delete.
+	(I386_LINUX_XSAVE_XCR0_OFFSET): Define.
+	(have_ptrace_getfpxregs, have_ptrace_getregset): New.
+	(AMD64_LINUX_USER64_CS): New.
+	(x86_linux_read_description): New, based on
+	x86_linux_update_xmltarget.
+	(same_process_callback): New.
+	(x86_arch_setup_process_callback): New.
+	(x86_linux_update_xmltarget): New.
+	(x86_regsets_info): New.
+	(amd64_linux_regs_info): New.
+	(i386_linux_usrregs_info): New.
+	(i386_linux_regs_info): New.
+	(x86_linux_regs_info): New.
+	(x86_arch_setup): Reimplement.
+	(x86_install_fast_tracepoint_jump_pad): Use is_64bit_tdesc.
+	(x86_emit_ops): Ditto.
+	(the_low_target): Adjust.  Install x86_linux_regs_info,
+	x86_cannot_fetch_register, and x86_cannot_store_register.
+	(initialize_low_arch): New.
+	* linux-ia64-low.c (tdesc_ia64): Declare.
+	(ia64_fetch_register): Adjust.
+	(ia64_usrregs_info, regs_info): New globals.
+	(ia64_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-sparc-low.c (tdesc_sparc64): Declare.
+	(sparc_fill_gregset_to_stack, sparc_store_gregset_from_stack):
+	Adjust.
+	(sparc_arch_setup): New function.
+	(sparc_regsets_info, sparc_usrregs_info, regs_info): New globals.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-ppc-low.c (tdesc_powerpc_32l, tdesc_powerpc_altivec32l)
+	(tdesc_powerpc_cell32l, tdesc_powerpc_vsx32l)
+	(tdesc_powerpc_isa205_32l, tdesc_powerpc_isa205_altivec32l)
+	(tdesc_powerpc_isa205_vsx32l, tdesc_powerpc_e500l)
+	(tdesc_powerpc_64l, tdesc_powerpc_altivec64l)
+	(tdesc_powerpc_cell64l, tdesc_powerpc_vsx64l)
+	(tdesc_powerpc_isa205_64l, tdesc_powerpc_isa205_altivec64l)
+	(tdesc_powerpc_isa205_vsx64l): Declare.
+	(ppc_cannot_store_register, ppc_collect_ptrace_register)
+	(ppc_supply_ptrace_register, parse_spufs_run, ppc_get_pc)
+	(ppc_set_pc, ppc_get_hwcap): Adjust.
+	(ppc_usrregs_info): Forward declare.
+	(!__powerpc64__) ppc_regmap_adjusted: New global.
+	(ppc_arch_setup): Adjust to the current process'es target
+	description.
+	(ppc_fill_vsxregset, ppc_store_vsxregset, ppc_fill_vrregset)
+	(ppc_store_vrregset, ppc_fill_evrregset, ppc_store_evrregse)
+	(ppc_store_evrregset): Adjust.
+	(target_regsets): Rename to ...
+	(ppc_regsets): ... this, and make static.
+	(ppc_usrregs_info, ppc_regsets_info, regs_info): New globals.
+	(ppc_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-s390-low.c (tdesc_s390_linux32, tdesc_s390_linux32v1)
+	(tdesc_s390_linux32v2, tdesc_s390_linux64, tdesc_s390_linux64v1)
+	(tdesc_s390_linux64v2, tdesc_s390x_linux64, tdesc_s390x_linux64v1)
+	(tdesc_s390x_linux64v2): Declare.
+	(s390_collect_ptrace_register, s390_supply_ptrace_register)
+	(s390_fill_gregset, s390_store_last_break): Adjust.
+	(target_regsets): Rename to ...
+	(s390_regsets): ... this, and make static.
+	(s390_get_pc, s390_set_pc): Adjust.
+	(s390_get_hwcap): New target_desc parameter, and use it.
+	[__s390x__] (have_hwcap_s390_high_gprs): New global.
+	(s390_arch_setup): Adjust to set the current process'es target
+	description.  Don't adjust the regmap.
+	(s390_usrregs_info, s390_regsets_info, regs_info): New globals.
+	[__s390x__] (s390_usrregs_info_3264, s390_regsets_info_3264)
+	(regs_info_3264): New globals.
+	(s390_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-mips-low.c (tdesc_mips_linux, tdesc_mips_dsp_linux)
+	(tdesc_mips64_linux, tdesc_mips64_dsp_linux): Declare.
+	[__mips64] (init_registers_mips_linux)
+	(init_registers_mips_dsp_linux): Delete defines.
+	[__mips64] (tdesc_mips_linux, tdesc_mips_dsp_linux): New defines.
+	(have_dsp): New global.
+	(mips_read_description): New, based on mips_arch_setup.
+	(mips_arch_setup): Reimplement.
+	(get_usrregs_info): New function.
+	(mips_cannot_fetch_register, mips_cannot_store_register)
+	(mips_get_pc, mips_set_pc, mips_fill_gregset, mips_store_gregset)
+	(mips_fill_fpregset, mips_store_fpregset): Adjust.
+	(target_regsets): Rename to ...
+	(mips_regsets): ... this, and make static.
+	(mips_regsets_info, mips_dsp_usrregs_info, mips_usrregs_info)
+	(dsp_regs_info, regs_info): New globals.
+	(mips_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-arm-low.c (tdesc_arm, tdesc_arm_with_iwmmxt)
+	(tdesc_arm_with_vfpv2, tdesc_arm_with_vfpv3, tdesc_arm_with_neon):
+	Declare.
+	(arm_fill_vfpregset, arm_store_vfpregset): Adjust.
+	(arm_read_description): New, with bits factored from
+	arm_arch_setup.
+	(arm_arch_setup): Reimplement.
+	(target_regsets): Rename to ...
+	(arm_regsets): ... this, and make static.
+	(arm_regsets_info, arm_usrregs_info, regs_info): New globals.
+	(arm_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-m68k-low.c (tdesc_m68k): Declare.
+	(target_regsets): Rename to ...
+	(m68k_regsets): ... this, and make static.
+	(m68k_regsets_info, m68k_usrregs_info, regs_info): New globals.
+	(m68k_regs_info): New function.
+	(m68k_arch_setup): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-sh-low.c (tdesc_sharch): Declare.
+	(target_regsets): Rename to ...
+	(sh_regsets): ... this, and make static.
+	(sh_regsets_info, sh_usrregs_info, regs_info): New globals.
+	(sh_regs_info, sh_arch_setup): New functions.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-bfin-low.c (tdesc_bfin): Declare.
+	(bfin_arch_setup): New function.
+	(bfin_usrregs_info, regs_info): New globals.
+	(bfin_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-cris-low.c (tdesc_cris): Declare.
+	(cris_arch_setup): New function.
+	(cris_usrregs_info, regs_info): New globals.
+	(cris_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-cris-low.c (tdesc_crisv32): Declare.
+	(cris_arch_setup): New function.
+	(cris_regsets_info, cris_usrregs_info, regs_info): New globals.
+	(cris_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-m32r-low.c (tdesc_m32r): Declare.
+	(m32r_arch_setup): New function.
+	(m32r_usrregs_info, regs_info): New globals.
+	(m32r_regs_info): Adjust.
+	(initialize_low_arch): New function.
+	* linux-tic6x-low.c (tdesc_tic6x_c64xp_linux)
+	(tdesc_tic6x_c64x_linux, tdesc_tic6x_c62x_linux): Declare.
+	(tic6x_usrregs_info): Forward declare.
+	(tic6x_read_description): New function, based on ...
+	(tic6x_arch_setup): ... this.  Reimplement.
+	(target_regsets): Rename to ...
+	(tic6x_regsets): ... this, and make static.
+	(tic6x_regsets_info, tic6x_usrregs_info, regs_info): New globals.
+	(tic6x_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-xtensa-low.c (tdesc_xtensa): Declare.
+	(xtensa_fill_gregset, xtensa_store_gregset): Adjust.
+	(target_regsets): Rename to ...
+	(xtensa_regsets): ... this, and make static.
+	(xtensa_regsets_info, xtensa_usrregs_info, regs_info): New
+	globals.
+	(xtensa_arch_setup, xtensa_regs_info): New functions.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-nios2-low.c (tdesc_nios2_linux): Declare.
+	(nios2_arch_setup): Set the current process'es tdesc.
+	(target_regsets): Rename to ...
+	(nios2_regsets): ... this.
+	(nios2_regsets_info, nios2_usrregs_info, regs_info): New globals.
+	(nios2_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-aarch64-low.c (tdesc_aarch64): Declare.
+	(aarch64_arch_setup): Set the current process'es tdesc.
+	(target_regsets): Rename to ...
+	(aarch64_regsets): ... this.
+	(aarch64_regsets_info, aarch64_usrregs_info, regs_info): New globals.
+	(aarch64_regs_info): New function.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* linux-tile-low.c (tdesc_tilegx, tdesc_tilegx32): Declare
+	globals.
+	(target_regsets): Rename to ...
+	(tile_regsets): ... this.
+	(tile_regsets_info, tile_usrregs_info, regs_info): New globals.
+	(tile_regs_info): New function.
+	(tile_arch_setup): Set the current process'es tdesc.
+	(the_low_target): Adjust.
+	(initialize_low_arch): New function.
+	* spu-low.c (tdesc_spu): Declare.
+	(spu_create_inferior, spu_attach): Set the new process'es tdesc.
+	* win32-arm-low.c (tdesc_arm): Declare.
+	(arm_arch_setup): New function.
+	(the_low_target): Install arm_arch_setup instead of
+	init_registers_arm.
+	* win32-i386-low.c (tdesc_i386, tdesc_amd64): Declare.
+	(init_windows_x86): Rename to ...
+	(i386_arch_setup): ... this.  Set `win32_tdesc'.
+	(the_low_target): Adjust.
+	* win32-low.c (win32_tdesc): New global.
+	(child_add_thread): Don't create the thread cache here.
+	(do_initial_child_stuff): Set the new process'es tdesc.
+	* win32-low.h (struct target_desc): Forward declare.
+	(win32_tdesc): Declare.
+	* lynx-i386-low.c (tdesc_i386): Declare global.
+	(lynx_i386_arch_setup): Set `lynx_tdesc'.
+	* lynx-low.c (lynx_tdesc): New global.
+	(lynx_add_process): Set the new process'es tdesc.
+	* lynx-low.h (struct target_desc): Forward declare.
+	(lynx_tdesc): Declare global.
+	* lynx-ppc-low.c (tdesc_powerpc_32): Declare global.
+	(lynx_ppc_arch_setup): Set `lynx_tdesc'.
+	* nto-low.c (nto_tdesc): New global.
+	(do_attach): Set the new process'es tdesc.
+	* nto-low.h (struct target_desc): Forward declare.
+	(nto_tdesc): Declare.
+	* nto-x86-low.c (tdesc_i386): Declare.
+	(nto_x86_arch_setup): Set `nto_tdesc'.
+
+2013-06-04  Gary Benson  <gbenson@redhat.com>
+
+	* server.c (handle_query): Add "augmented-libraries-svr4-read+"
+	to qSupported response when appropriate.
+	(handle_qxfer_libraries_svr4): Allow qXfer:libraries-svr4:read
+	with nonzero-length annex.
+	* linux-low.c (linux_qxfer_libraries_svr4): Parse and handle
+	arguments supplied in annex.
+
+2013-05-31  Doug Evans  <dje@google.com>
+
+	PR server/15594
+	* linux-x86-low.c (ps_get_thread_area): Properly extend address to
+	64 bits in 64-cross-32 environment.
+
+2013-05-28  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (clean): Remove reference to aarch64-without-fpu.c.
+	(aarch64-without-fpu.c): Delete rule.
+	* configure.srv (aarch64*-*-linux*): Remove references to
+	aarch64-without-fpu.o and aarch64-without-fpu.xml.
+	* linux-aarch64-low.c (init_registers_aarch64_without_fpu): Remove
+	declaration.
+
+2013-05-24  Pedro Alves  <palves@redhat.com>
+
+	* server.c (handle_v_cont) <vCont;r>: Use unpack_varlen_hex
+	instead of strchr/decode_address.  Error if the range isn't split
+	with a ','.  Don't assume there's be a ':' in the action.
+
+2013-05-23  Yao Qi  <yao@codesourcery.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (lwp_in_step_range): New function.
+	(linux_wait_1): If the thread was range stepping and stopped
+	outside the stepping range, report the stop to GDB.  Otherwise,
+	continue stepping.  Add range stepping debug output.
+	(linux_set_resume_request): Copy the step range from the resume
+	request to the lwp.
+	(linux_supports_range_stepping): New.
+	(linux_target_ops) <supports_range_stepping>: Set to
+	linux_supports_range_stepping.
+	* linux-low.h (struct linux_target_ops)
+	<supports_range_stepping>: New field.
+	(struct lwp_info) <step_range_start, step_range_end>: New fields.
+	* linux-x86-low.c (x86_supports_range_stepping): New.
+	(the_low_target) <supports_range_stepping>: Set to
+	x86_supports_range_stepping.
+	* server.c (handle_v_cont): Handle 'r' action.
+	(handle_v_requests): Append ";r" if the target supports range
+	stepping.
+	* target.h (struct thread_resume) <step_range_start,
+	step_range_end>: New fields.
+	(struct target_ops) <supports_range_stepping>:
+	New field.
+	(target_supports_range_stepping): New macro.
+
+2013-05-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_resume): Fix null_ptid/minus_one_ptid
+	confusion in comment.
+
+2013-05-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (struct process_info_private): New type.
+	(lynx_add_process): New function.
+	(lynx_create_inferior, lynx_attach): Replace calls to
+	add_process by calls to lynx_add_process.
+	(lynx_resume): If PTID is null, then try using
+	current_process()->private->last_wait_event_ptid.
+	Add comments.
+	(lynx_clear_inferiors): Delete.  The contents of that function
+	has been inlined in lynx_mourn;
+	(lynx_wait_1): Save the ptid in the process's private data.
+	(lynx_mourn): Free the process' private data.  Replace call
+	to lynx_clear_inferiors by call to clear_inferiors.
+
+2013-05-17  Yao Qi  <yao@codesourcery.com>
+
+	* i386-low.c (i386_length_and_rw_bits): Move the comment to
+	the right place.
+
+2013-05-16  Luis Machado  <lgustavo@codesourcery.com>
+
+	* linux-low.c: Move definition checks upwards for PT_TEXT_ADDR,
+	PT_DATA_ADDR and PT_TEXT_END_ADDR.  Update comments.
+	(linux_read_offsets): Remove PT_TEXT_ADDR, PT_DATA_ADDR and
+	PT_TEXT_END_ADDR guards.  Update comments.
+	(linux_target_op) <read_offsets>: Conditionally define to
+	linux_read_offsets if the target is UCLIBC and if it defines
+	PT_TEXT_ADDR, PT_DATA_ADDR and PT_TEXT_END_ADDR.
+
+2013-05-06  Sandra Loosemore  <sandra@codesourcery.com>
+	    Andrew Jenner  <andrew@codesourcery.com>
+
+	* Makefile.in (SFILES): Add linux-nios2-low.c.
+	(clean): Add action to delete nios2-linux.c.
+	(nios2-linux.c): New rule.
+	* configure.srv: Add nios2*-*-linux*.
+	* linux-nios2-low.c: New.
+
+2013-05-03  Hafiz Abid Qadeer  <abidh@codesourcery.com>
+
+	* tracepoint.c (cmd_qtinit): Call 'stop_tracing'.
+
+2013-04-25  Hui Zhu  <hui@codesourcery.com>
+
+	PR gdb/15186
+	* ax.c (ax_printf): Add fflush.
+
+2013-04-22  Tom Tromey  <tromey@redhat.com>
+
+	* Makefile.in (SFILES): Add filestuff.c.
+	(OBS): Add filestuff.o.
+	(filestuff.o): New target.
+	* config.in, configure: Rebuild.
+	* configure.ac: Check for fdwalk, pipe2.
+
+2013-04-17  Pedro Alves  <palves@redhat.com>
+
+	* configure.ac (USE_THREAD_DB): Delete variable.
+	(if test "$srv_linux_thread_db" = "yes"): AC_DEFINE USE_THREAD_DB.
+	Don't AC_SUBST USE_THREAD_DB.
+	* Makefile.in (INTERNAL_CFLAGS): Remove @USE_THREAD_DB@.
+	* config.in, configure: Regenerate.
+
+2013-04-16  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.h (struct lwp_info) <thread_known>: Move under
+	the USE_THREAD_DB #ifdef.
+
+2013-04-16  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (INTERNAL_CFLAGS): Add @USE_THREAD_DB@.
+	(linux-low.o): Delete rule.
+	* linux-low.h: Always include "gdb_thread_db.h" instead of
+	conditionally including thread_db.h.
+	(struct lwp_info) <th>: Guard with #ifdef USE_THREAD_DB instead of
+	HAVE_THREAD_DB_H.
+
+2013-04-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* Makefile.in (install-only): Fix make install regression.
+
+2013-04-05  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Convert man pages to texinfo, new gdbinit.5 texinfo page.
+	* Makefile.in (install-only): Remove $(man1dir) and gdbserver.1
+	installation.
+	* gdbserver.1: Remove.
+
+2013-03-22  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (handle_extended_wait): Don't call
+	linux_enable_event_reporting.
+
+2013-03-15  Tony Theodore  <tonyt@logyst.com>
+
+	PR build/9098:
+	* Makefile.in (SHELL): Use @SHELL@.
+
+2013-03-14  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* tracepoint.c (cmd_qtv): Initialize `val' with zero, silencing
+	compiler warning.
+
+2013-03-13  Joel Brobecker  <brobecker@adacore.com>
+
+	* linux-low.c (linux_target_ops) [!HAVE_LINUX_BTRACE]:
+	Remove extraneous NULL element.
+
+2013-03-13  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (traceframe_read_tsv): Look for the last matched
+	'V' block in trace frame.
+
+2013-03-11  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* target.h (struct target_ops): Add btrace ops.
+	(target_supports_btrace): New macro.
+	(target_enable_btrace): New macro.
+	(target_disable_btrace): New macro.
+	(target_read_btrace): New macro.
+	* gdbthread.h (struct thread_info): Add btrace field.
+	* server.c: Include btrace-common.h.
+	(handle_btrace_general_set): New function.
+	(handle_btrace_enable): New function.
+	(handle_btrace_disable): New function.
+	(handle_general_set): Call handle_btrace_general_set.
+	(handle_qxfer_btrace): New function.
+	(struct qxfer qxfer_packets[]): Add btrace entry.
+	* inferiors.c (remove_thread): Disable btrace.
+	* linux-low: Include linux-btrace.h.
+	(linux_low_enable_btrace): New function.
+	(linux_low_read_btrace): New function.
+	(linux_target_ops): Add btrace ops.
+	* configure.srv (i[34567]86-*-linux*): Add linux-btrace.o.
+	Add srv_linux_btrace=yes.
+	(x86_64-*-linux*): Add linux-btrace.o.
+	Add srv_linux_btrace=yes.
+	* configure.ac: Define HAVE_LINUX_BTRACE.
+	* config.in: Regenerated.
+	* configure: Regenerated.
+
+2013-03-11  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* server.c (handle_qxfer): Preserve error message if -3 is
+	returned.
+	(qxfer): Document the -3 return value.
+
+2013-03-11  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* Makefile.in (SFILES): Add $(srcdir)/common/linux-btrace.c.
+	(linux_btrace_h): New variable.
+	(linux-btrace.o): New rule.
+
+2013-03-08  Stan Shebs  <stan@codesourcery.com>
+	    Hafiz Abid Qadeer  <abidh@codesourcery.com>
+
+	* tracepoint.c (trace_buffer_size): New global.
+	(DEFAULT_TRACE_BUFFER_SIZE): New define.
+	(init_trace_buffer): Change to one-argument function. Allocate
+	trace buffer memory.
+	(handle_tracepoint_general_set): Call cmd_bigqtbuffer_size to
+	handle QTBuffer:size packet.
+	(cmd_bigqtbuffer_size): New function.
+	(initialize_tracepoint): Call init_trace_buffer with
+	DEFAULT_TRACE_BUFFER_SIZE.
+	* server.c (handle_query): Add QTBuffer:size in the
+	supported packets.
+
+2013-03-07  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (cur_action, cur_step_action): Make them unsigned.
+	(cmd_qtfp): Initialize cur_action and cur_step_action 0 instead
+	of -1.
+	(cmd_qtsp): Adjust condition.  Do post increment.
+	Set cur_action and cur_step_action back to 0.
+
+2013-03-07  Jeremy Bennett  <jeremy.bennett@embecosm.com>
+
+	PR server/15236
+	* linux-low.c (linux_write_memory): Return early success if LEN is
+	zero.
+
+2013-03-05  Corinna Vinschen  <vinschen@redhat.de>
+
+	* configure.srv: Add x86_64-*-cygwin* as target.
+
+2013-02-28  Tom Tromey  <tromey@redhat.com>
+
+	* configure.ac: Invoke AC_SYS_LARGEFILE.
+	* configure, config.in: Rebuild.
+
+2013-02-28  Corinna Vinschen  <vinschen@redhat.com>
+
+	* win32-low.c: Throughout, fix format strings and casts of
+	printf-like functions to avoid type related warnings on all
+	platforms.
+	(get_child_debug_event): Print dwDebugEventCode as hex since
+	that's how it's usually documented.
+
+2013-02-28  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (cmd_qtbuffer): Call phex_nz instead of
+	pulongest.
+
+2013-02-27  Jiong Wang  <jiwang@tilera.com>
+
+	* Makefile.in (clean): Remove reg-tilegx.c, reg-tilegx32.c.
+	(reg-tilegx32.c): New rule.
+	* configure.srv (tilegx-*-linux*): Add reg-tilegx32.o to srv_regobj.
+	* linux-tile-low.c (tile_arch_setup): New function.  Invoke
+	different register info initializer according to elf class.
+	(init_registers_tilgx32): New function.  The tilegx32 register info
+	initializer.
+	(tile_fill_gregset): Use "uint_reg_t" to represent register size.
+	(tile_store_gregset): Likewise.
+
+2013-02-27  Yao Qi  <yao@codesourcery.com>
+
+	* server.c (process_point_options): Print debug message when
+	debug_threads is true.
+
+2013-02-26  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (cmd_qtbuffer): Don't set '\0' in OWN_BUF.
+
+2013-02-19  Pedro Alves  <palves@redhat.com>
+	    Kai Tietz <ktietz@redhat.com>
+
+	PR gdb/15161
+
+	* server.c (handle_query) <CRC check>: Use unpack_varlen_hex
+	instead of strtoul to extract address from packet.
+	(process_serial_event) <'z'>: Likewise.
+
+2013-02-18  Yao Qi  <yao@codesourcery.com>
+
+	* linux-bfin-low.c (the_low_target): Use NULL instead of 0.
+
+2013-02-14  Pedro Alves  <palves@redhat.com>
+
+	Plug memory leak.
+
+	* tracepoint.c (cmd_qtnotes): Free TRACING_USER_NAME,
+	TRACING_NOTES and TRACING_STOP_NOTE before clobbering.
+
+2013-02-14  Pedro Alves  <palves@redhat.com>
+
+	* tracepoint.c (cmd_qtdpsrc): Use savestring.
+
+2013-02-14  Pedro Alves  <palves@redhat.com>
+
+	* tracepoint.c (save_string): Delete.
+	(add_tracepoint_action): Use savestring instead of save_string.
+
+2013-02-12  Pedro Alves  <palves@redhat.com>
+
+	* linux-xtensa-low.c: Ditto.
+	* xtensa-xtregs.c: Ditto.
+
+2013-02-12  Sanimir Agovic  <sanimir.agovic@intel.com>
+
+	* thread-db.c (thread_db_get_tls_address): NULL pointer check
+	thread_db.
+
+2013-02-07  Marcus Shawcroft  <marcus.shawcroft@arm.com>
+
+	* linux-aarch64-low.c (aarch64_arch_setup): Clamp
+	aarch64_num_wp_regs and aarch64_num_bp_regs to
+	AARCH64_HWP_MAX_NUM and AARCH64_HBP_MAX_NUM respectively.
+
+2013-02-07  Marcus Shawcroft  <marcus.shawcroft@arm.com>
+
+	* linux-aarch64-low.c (ps_get_thread_area): Replace
+	PTRACE_GET_THREAD_AREA with PTRACE_GETREGSET.
+
+2013-02-04  Jim MacArthur  <jim.macarthur@arm.com>
+	    Marcus Shawcroft  <marcus.shawcroft@arm.com>
+	    Nigel Stephens  <nigel.stephens@arm.com>
+	    Yufeng Zhang  <yufeng.zhang@arm.com>
+
+	* Makefile.in (clean): Remove aarch64.c and aarch64-without-fpu.c.
+	(aarch64.c, aarch64-without-fpu.c): New targets.
+	* configure.srv (aarch64*-*-linux*): New.
+	* linux-aarch64-low.c: New file.
+
+2013-02-04  Marcus Shawcroft  <marcus.shawcroft@arm.com>
+
+	* linux-low.c (handle_extended_wait, linux_create_inferior)
+	(linux_attach_lwp_1, linux_kill_one_lwp, linux_attach_one_lwp)
+	(dequeue_one_deferred_signal, linux_resume_one_thread)
+	(fetch_register, linux_write_memory, linux_enable_event_reporting)
+	(linux_tracefork_grandchild, linux_test_for_tracefork)
+	(linux_read_offsets, linux_xfer_siginfo, linux_xfer_siginfo): Add
+	PTRACE_ARG3_TYPE and PTRACE_ARG4_TYPE cast to ptrace arguments
+	where the argument is 0.
+
+2013-01-25  Yao Qi  <yao@codesourcery.com>
+
+	* event-loop.c: Include "queue.h".
+	(gdb_event_p): New typedef.
+	(struct gdb_event) <next_event>: Remove.
+	(event_queue): Change to QUEUE(gdb_event_p).
+	(async_queue_event): Remove.
+	(gdb_event_xfree): New.
+	(initialize_event_loop): New.
+	(process_event): Use API from QUEUE.
+	(wait_for_event): Likewise.
+	* server.c (main): Call initialize_event_loop.
+	* server.h (initialize_event_loop): Declare.
+
+2013-01-18  Yao Qi  <yao@codesourcery.com>
+
+	* ax.h (struct eval_agent_expr_context): New.
+	(gdb_eval_agent_expr): Update declaration.
+	* ax.c (gdb_eval_agent_expr): Remove argument REGCACHE and
+	TFRAME.  Add new argument CTX.
+	* server.h (struct eval_agent_expr_context): Declare.
+	(agent_mem_read, agent_tsv_read): Update declaration.
+	(agent_mem_read_string): Likewise.
+	* tracepoint.c (eval_tracepoint_agent_expr): Remove.
+	(add_traceframe_block): Add new argument TPOINT.
+	Increase TPOINT->traceframe_usage.
+	(do_action_at_tracepoint): Call gdb_eval_agent_expr instead of
+	eval_tracepoint_agent_expr.
+	(condition_true_at_tracepoint): Likewise.
+	(agent_mem_read): Remove argument TFRAME.  Add argument CTX.
+	(agent_mem_read_string, agent_tsv_read): Likewise.
+
+2013-01-16  Yao Qi  <yao@codesourcery.com>
+
+	* linux-low.c (linux_resume_one_lwp): Don't check
+	'lwp->bp_reinsert != 0'.
+
+2013-01-07  Joel Brobecker  <brobecker@adacore.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* lynx-low.c (ptrace_request_to_str): Define a temporary
+	macro and use it to simplify this function's implementation.
+
+2013-01-07  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_resume): Call perror_with_name if lynx_ptrace
+	sets errno.
+
+2013-01-07  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.srv (i[34567]86-*-lynxos*): Set srv_xmlfiles.
+
+2013-01-07  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.srv (powerpc-*-lynxos*): Set srv_xmlfiles.
+
+2013-01-07  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_resume): Use the resume_info parameter
+	to determine the ptid for the lynx_ptrace call, unless
+	it is equal to minus_one_ptid, in which case we use the
+	ptid of the current_inferior.
+	(lynx_wait_1): After having received a thread create/exit
+	event, resume the inferior's execution using the signaling
+	thread's ptid, rather than the old ptid.
+
+2013-01-07  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_resume): Delete variable ret.
+
+2013-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbreplay.c (gdbreplay_version): Update copyright year.
+	* server.c (gdbserver_version): Likewise.
+
+2012-12-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_wait_1): Add debug trace before adding
+	new thread.
+
+2012-12-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (ptrace_request_to_str): Add handling for
+	PTRACE_GETTRACESIG.
+
+2012-12-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_attach): Delete variable new_process.
+
+2012-12-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (lynx_create_inferior): Delete variable
+	new_process.
+
+2012-12-17  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (ptrace_request_to_str): Do not handle
+	PTRACE_GETTHREADLIST if this macro does not exist.
+
+2012-12-15  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (OBS): Add notif.o.
+	* notif.c, notif.h: New.
+	* server.c: Include "notif.h".
+	(struct vstop_notif) <next>: Remove.
+	<base>: New field.
+	(queue_stop_reply): Update.
+	(push_event, send_next_stop_reply): Remove.
+	(discard_queued_stop_replies): Update.
+	(notif_stop): New variable.
+	(handle_v_stopped): Remove.
+	(handle_v_requests): Don't call handle_v_stopped.  Call
+	handle_ack_notif instead.
+	(queue_stop_reply_callback): Call notif_event_enque instead
+	of queue_stop_reply.
+	(handle_status): Don't call send_next_stop_reply, call
+	notif_write_event instead.
+	(kill_inferior_callback): Likewise.
+	(detach_or_kill_inferior_callback): Likewise.
+	(main): Call initialize_notif.
+	(process_serial_event): Call QUEUE_is_empty.
+	(handle_target_event): Call notif_push instead of push event.
+	* server.h (push_event): Remove declaration.
+
+2012-12-10  Tom Tromey  <tromey@redhat.com>
+
+	* Makefile.in (DEPMODE, DEPDIR, depcomp, COMPILE.pre)
+	(COMPILE.post, COMPILE, POSTCOMPILE, IPAGENT_COMPILE): New
+	macros.
+	(.c.o): Rewrite.
+	(ax-ipa.o, tracepoint-ipa.o, utils-ipa.o, format-ipa.o)
+	(common-utils-ipa.o, remote-utils-ipa.o, regcache-ipa.o)
+	(i386-linux-ipa.o, linux-i386-ipa.o, linux-amd64-ipa.o)
+	(amd64-linux-ipa.o, ax.o): Rewrite.
+	(event-loop.o, hostio.o, hostio-errno.o, inferiors.o, mem-break.o)
+	(proc-service.o, regcache.o, remote-utils.o, server.o, target.o)
+	(thread-db.o, tracepoint.o, utils.o, gdbreplay.o, dll.o): Remove.
+	(signals.o, linux-procfs.o, linux-ptrace.o, common-utils.o, vec.o)
+	(gdb_vecs.o, xml-utils.o, linux-osdata.o, ptid.o, buffer.o)
+	(format.o, agent.o, vasprintf.o, vsnprintf.o): Rewrite.
+	(i386-low.o, i387-fp.o, linux-low.o, linux-arm-low.o)
+	(linux-bfin-low.o, linux-cris-low.o, linux-crisv32-low.o)
+	(linux-ia64-low.o, linux-m32r-low.o, linux-mips-low.o)
+	(linux-ppc-low.o, linux-s390-low.o, linux-sh-low.o)
+	(linux-tic6x-low.o, linux-x86-low.o, linux-xtensa-low.o)
+	(linux-tile-low.o, lynx-low.o, lynx-ppc-low.o, nto-low.o)
+	(nto-x86-low.o, linux-low.o, win32-low.o, win32-arm-low.o)
+	(win32-i386-low.o, spu-low.o, reg-arm.o, arm-with-iwmmxt.o)
+	(arm-with-vfpv2.o, arm-with-vfpv3.o, arm-with-neon.o, reg-bfin.o)
+	(reg-cris.o, reg-crisv32.o, i386.o, i386-linux.o, i386-avx.o)
+	(i386-avx-linux.o, i386-mmx.o, i386-mmx-linux.o, reg-ia64.o)
+	(reg-m32r.o, reg-m68k.o, reg-cf.o, mips-linux.o, mips-dsp-linux.o)
+	(mips64-linux.o, mips64-dsp-linux.o, powerpc-32.o, powerpc-32l.o)
+	(powerpc-altivec32l.o, powerpc-cell32l.o, powerpc-vsx32l.o)
+	(powerpc-isa205-32l.o, powerpc-isa205-altivec32l.o)
+	(powerpc-isa205-vsx32l.o, powerpc-e500l.o, powerpc-64l.o)
+	(powerpc-altivec64l.o, powerpc-cell64l.o, powerpc-vsx64l.o)
+	(powerpc-isa205-64l.o, powerpc-isa205-altivec64l.o)
+	(powerpc-isa205-vsx64l.o, s390-linux32.o, s390-linux32v1.o)
+	(s390-linux32v2.o, s390-linux64.o, s390-linux64v1.o)
+	(s390-linux64v2.o, s390x-linux64.o, s390x-linux64v1.o)
+	(s390x-linux64v2.o, tic6x-c64xp-linux.o, tic6x-c64x-linux.o)
+	(tic6x-c62x-linux.o, reg-sh.o, reg-sparc64.o, reg-spu.o, amd64.o)
+	(amd64-linux.o, amd64-avx.o, amd64-avx-linux.o, x32.o)
+	(x32-linux.o, x32-avx.o, x32-avx-linux.o, reg-xtensa.o)
+	(reg-tilegx.o): Remove.
+	(all_object_files): New macro.
+	Include .deps files.
+	* aclocal.m4, configure: Rebuild.
+	* acinclude.m4: Include depstand.m4, lead-dot.m4.
+	* configure.ac: Invoke ZW_CREATE_DEPDIR,
+	ZW_PROG_COMPILER_DEPENDENCIES.  Compute GMAKE condition.
+
+2012-12-05  Tom Tromey  <tromey@redhat.com>
+
+	PR gdb/14917:
+	* server.h (current_insn_ptr, emit_error): Declare 'extern'.
+
+2012-11-28  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* configure.ac: Check for linux/perf_event.h.
+	* config.in: Regenerated.
+	* configure: Regenerated.
+
+2012-11-26  Maxime Villard  <rustyBSD@gmx.fr>
+
+	* hostio.c (handle_readlink): Decrease buffer size
+	parameter passed to readlink by one byte.
+
+2012-11-26  Yao Qi  <yao@codesourcery.com>
+
+	* configure.ac (build_warnings): Append '-Wempty-body'.
+	* configure: Regenerated.
+	* linux-low.c (linux_create_inferior): Use braces for empty 'if'
+	body.
+
+2012-11-15  Pierre Muller  <muller@sourceware.org>
+
+	* configure.ac (AC_CHECK_HEADERS): Add wait.h header.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* linux-low.c: Use "gdb_stat.h" header instead of <sys/stat.h> header.
+	Use "gdb_wait.h" header instead of <sys/wait.h> header.
+	* lynx-low.c: Use "gdb_wait.h" header instead of <sys/wait.h> header.
+	* remote-utils.c: Use "gdb_stat.h" header instead of <sys/stat.h>
+	header.
+	* server.c: Remove HAVE_WAIT_H conditional.  Use "gdb_wait.h" header
+	instead of <sys/wait.h> header.
+	* spu-low.c: Use "gdb_wait.h" header instead of <sys/wait.h> header.
+
+2012-11-13 Markus Metzger  <markus.t.metzger@intel.com>
+
+	* Makefile.in: (INTERNAL_CFLAGS): Add -DGDBSERVER
+	(various make rules): Remove -DGDBSERVER
+
+2012-11-09  Yao Qi  <yao@codesourcery.com>
+
+	* spu-low.c (current_ptid): Move it to ..
+	* gdbthread.h: ... here.  New.
+	* remote-utils.c (read_ptid): Use macro 'current_ptid'.
+	* server.c (myresume, process_serial_event): Likewise.
+	* thread-db.c (thread_db_find_new_threads): Likewise.
+	* tracepoint.c (run_inferior_command): Likewise.
+
+2012-10-01  Andrew Burgess  <aburgess@broadcom.com>
+
+	* server.c (handle_search_memory_1): Include access length in
+	warning message.
+
+2012-09-05  Michael Brandt  <michael.brandt@axis.com>
+
+	* linux-crisv32-low.c: Fix compile errors.
+
+2012-09-04  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (cmd_qtsv): Adjust debug message.
+	Don't check CUR_TPOINT.
+
+2012-08-28  Yao Qi  <yao@codesourcery.com>
+
+	* ax.c, tracepoint.c: Replace ATTR_FORMAT with ATTRIBUTE_PRINTF.
+	* server.h: Include 'libiberty.h' and 'ansidecl.h'.
+	(ATTR_NORETURN, ATTR_FORMAT, ATTR_MALLOC): Remove.
+	Remove declarations of xmalloc, xreallloc, xstrdup and
+	freeargv.
+	* Makefile.in (libiberty_h): New.
+	(server_h): Append dependencies 'libiberty.h' and 'ansidecl.h'.
+	(linux-bfin-low.o): Append dependency 'libiberty.h'.
+
+2012-08-23  Yao Qi  <yao@codesourcery.com>
+
+	* server.h: Remove declaration of 'xsnprintf'.
+
+2012-08-22  Keith Seitz  <keiths@redhat.com>
+
+	* server.h: Include build-gnulib-gbserver/config.h.
+	* gdbreplay.c: Likewise.
+
+2012-08-08  Doug Evans  <dje@google.com>
+
+	* Makefile.in (SFILES): Add gdb_vecs.c.
+	(OBS): Add gdb_vecs.o.
+	(gdb_vecs_h, host_defs_h): New variables.
+	(thread-db.o): Add $(gdb_vecs_h) dependency.
+	(gdb_vecs.o): New rule.
+	* thread-db.c: #include "gdb_vecs.h".
+	(thread_db_load_search): Use a vector to iterate over path elements.
+	Handle text appearing after "$pdir".
+
+	* configure.ac: Add check for strstr.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
+2012-08-02  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+	* hostio.c (handle_pread): If pread fails, fall back to attempting
+	lseek/read.
+	(handle_pwrite): Likewise for pwrite.
+
+2012-08-01  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+	* linux-arm-low.c (arm_linux_hw_point_initialize): Distinguish
+	between unsupported TYPE and unimplementable ADDR/LEN combination.
+	(arm_insert_point): Act on new return value.
+
+2012-07-31  Pedro Alves  <palves@redhat.com>
+
+	* server.c (process_point_options): Only skip tokens if we find
+	one that is unrecognized.  Don't treat 'X' specially while
+	skipping unrecognized tokens.
+
+2012-07-30  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+	* linux-arm-low.c (arm_linux_hw_point_initialize): Do not attempt
+	to 4-byte-align HW breakpoint addresses for Thumb.
+
+2012-07-27  Yao Qi  <yao@codesourcery.com>
+
+	PR remote/14161.
+
+	* server.h: Declare gdb_agent_about_to_close.
+	* target.c (kill_inferior): Include "agent.h".
+	New.  Send command 'kill'.
+	* target.h (kill_inferior): Removed macro.
+	* tracepoint.c (gdb_agent_about_to_close): New.
+	(gdb_agent_helper_thread): Handle command 'close'.
+	Wait endlessly until the inferior stops.
+	Install gdb_agent_remove_socket to atexit hook.
+	(agent_socket_name): New static variable.
+	(gdb_agent_socket_init): Replace local variable 'name' with
+	'agent_socket_name'.
+	(gdb_agent_remove_socket): New.
+
+2012-07-27  Yao Qi  <yao@codesourcery.com>
+
+	* server.c (process_point_options): Stop at 'X' when parsing.
+
+2012-07-19  Michael Eager  <eager@eagercon.com>
+
+	* i386-low.c (Z_packet_to_hw_type): Add Z_PACKET_HW_BP, translate
+	to hw_execute.
+	* linux-x86-low.c (x86_insert_point, x86_remove_point):
+	Call i386_low_insert_watchpoint, i386_low_remove_watchpoint to add/del
+	hardware breakpoint.
+
+2012-07-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* gdbserver/linux-low.c (initialize_low): Call
+	linux_ptrace_init_warnings.
+
+2012-07-02  Doug Evans  <dje@google.com>
+
+	* mem-break.c (gdb_no_commands_at_breakpoint): Fix cast from
+	pointer to int.
+
+2012-07-02  Stan Shebs  <stan@codesourcery.com>
+
+	* Makefile.in (WARN_CFLAGS_NO_FORMAT): Define.
+	(ax.o): Add it to build rule.
+	(ax-ipa.o): Ditto.
+	(OBS): Add format.o.
+	(IPA_OBS): Add format.o.
+	* server.c (handle_query): Claim support for breakpoint commands.
+	(process_point_options): Add command case.
+	(process_serial_event): Leave running if there are printfs in
+	effect.
+	* mem-break.h (any_persistent_commands): Declare.
+	(add_breakpoint_commands): Declare.
+	(gdb_no_commands_at_breakpoint): Declare.
+	(run_breakpoint_commands): Declare.
+	* mem-break.c (struct point_command_list): New struct.
+	(struct breakpoint): New field command_list.
+	(any_persistent_commands): New function.
+	(add_commands_to_breakpoint): New function.
+	(add_breakpoint_commands): New function.
+	(gdb_no_commands_at_breakpoint): New function.
+	(run_breakpoint_commands): New function.
+	* linux-low.c (linux_wait_1): Test for and run breakpoint commands
+	locally.
+	* ax.c: Include format.h.
+	(ax_printf): New function.
+	(gdb_eval_agent_expr): Add printf opcode.
+
+2012-06-13  Yao Qi  <yao@codesourcery.com>
+
+	* server.c (start_inferior): Remove duplicated writes to fields
+	'last_resume_kind' and 'last_status' of 'current_inferior'.
+
+2012-06-12  Yao Qi  <yao@codesourcery.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_set_resume_request): Simplify predicate.  Add
+	comment.
+	* server.c (handle_v_cont): Extend comment.
+
+2012-06-11  Yao Qi  <yao@codesourcery.com>
+
+	* linux-low.c (linux_attach): Add 'static'.
+
+2012-06-06  Yao Qi  <yao@codesourcery.com>
+
+	* ax.c (gdb_eval_agent_expr): Print `top' in hex.
+
+2012-06-01  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Fix gcc -flto compilation warning.
+	* server.c (main): Make variable multi_mode and attach volatile.
+
+2012-05-30  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
+
+	* linux-low.c (get_r_debug): Disable code using DT_MIPS_RLD_MAP
+	if the platform doesn't know about it.
+
+2012-05-30  Jeff Kenton  <jkenton@tilera.com>
+
+	* Makefile.in (SFILES): Add linux-tile-low.c.
+	(linux-tile-low.o, reg-tilegx.o, reg-tilegx.c): New rules.
+	* configure.srv: Handle tilegx-*-linux*.
+	* linux-tile-low.c: New file.
+
+2012-05-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* linux-low.c (linux_qxfer_libraries_svr4): Return -1 if R_DEBUG is -1.
+
+2012-05-24  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/7205
+
+	Replace TARGET_SIGNAL_ with GDB_SIGNAL_ throughout.
+
+2012-05-24  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/7205
+
+	Replace target_signal with gdb_signal throughout.
+
+2012-05-22  Maciej W. Rozycki  <macro@codesourcery.com>
+
+	* linux-low.c (linux_store_registers): Avoid the copying sequence
+	when no data has been retrieved by ptrace.
+
+2012-05-22  Will Deacon  <will.deacon@arm.com>
+
+	* linux-low (__UCLIBC__ && !(__UCLIBC_HAS_MMU__ || __ARCH_HAS_MMU__)):
+	Include asm/ptrace.h.
+	(PT_TEXT_ADDR, PT_DATA_ADDR, PT_TEXT_END_ADDR): Define only if not
+	already defined.
+
+2012-05-21  Maciej W. Rozycki  <macro@codesourcery.com>
+
+	* linux-low.c (linux_store_registers): Don't re-retrieve data
+	with ptrace that has already been obtained from /proc.  Always
+	copy any data retrieved with ptrace to the buffer supplied.
+
+2012-05-11  Yao Qi  <yao@codesourcery.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (enum stopping_threads_kind): New.
+	(stopping_threads): Change type to `enum stopping_threads_kind'.
+	(handle_extended_wait): If stopping and suspending threads, leave
+	the new_lwp suspended too.
+	(linux_wait_for_event): Adjust.
+	(stop_all_lwps): Set `stopping_threads' to
+	STOPPING_AND_SUSPENDING_THREADS or STOPPING_THREADS depending on
+	whether we're suspending threads or just stopping them.  Assert no
+	recursion happens.
+
+2012-04-29  Yao Qi  <yao@codesourcery.com>
+
+	* server.h: Move some code to ...
+	* gdbthread.h: ... here.  New.
+	* Makefile.in (inferiors.o, regcache.o): Depends on gdbthread.h
+	(remote-utils.o, server.o, target.o tracepoint.o): Likewise.
+	(nto-low.o, win32-low.o): Likewise.
+	* inferiors.c, linux-low.h, nto-low.c: Include gdbthread.h.
+	* regcache.c, remote-utils.c, server.c: Likewise.
+	* target.c, tracepoint.c, win32-low.c: Likewise.
+
+2012-04-24  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
+
+	* linux-low.h (PTRACE_ARG3_TYPE): Move macro from linux-low.c.
+	(PTRACE_ARG4_TYPE): Likewise.
+	(PTRACE_XFER_TYPE): Likewise.
+	* linux-arm-low.c (arm_prepare_to_resume): Cast third argument of
+	ptrace to PTRACE_ARG3_TYPE.
+	* linux-low.c (PTRACE_ARG3_TYPE): Move macro to linux-low.h.
+	(PTRACE_ARG4_TYPE): Likewise.
+	(PTRACE_XFER_TYPE): Likewise.
+	(linux_detach_one_lwp): Cast fourth argument of
+	ptrace to long then PTRACE_ARG4_TYPE.
+	(regsets_fetch_inferior_registers): Cast third argument of
+	ptrace to long then PTRACE_ARG3_TYPE.
+	(regsets_store_inferior_registers): Likewise.
+
+2012-04-20  Pedro Alves  <palves@redhat.com>
+
+	* configure: Regenerate.
+
+2012-04-19  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (GNULIB_BUILDDIR): New.
+	(LIBGNU, INCGNU, GNULIB_H): Adjust.
+	(SUBDIRS, CLEANDIRS, REQUIRED_SUBDIRS): New.
+	(all, install-only, uninstall, clean-info, all-lib, clean): No
+	longer pass GNULIB_FLAGS_TO_PASS.  Use subdir_do.
+	(maintainer-clean realclean distclean): Use subdir_do.
+	(subdir_do): New.
+	(gnulib/import/Makefile): Adjust.  Replace gnulib/import with
+	$(GNULIB_BUILDDIR).  Don't pass argument to config.status.
+	* acinclude.m4: Include acx_configure_dir.m4.
+	* configure.ac: Remove gl_EARLY, gl_INIT, and AM_INIT_AUTOMAKE
+	calls.	Call AC_PROG_RANLIB.  Configure gnulib using
+	ACX_CONFIGURE_DIR.
+	(GNULIB): New.
+	(GNULIB_STDINT_H): Adjust.
+	(AC_OUTPUT): Don't output gnulib/Makefile anymore.
+	* gdbreplay.c: Include build-gnulib/config.h.
+	* server.h: Likewise.
+	* aclocal.m4: Regenerate.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
+2012-04-19  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (LIBGNU, INCGNU): Adjust.
+	(GNULIB_FLAGS_TO_PASS, GNULIB_H): Adjust.
+	(all, install-only, uninstall, clean-info, all-lib, clean)
+	(maintainer-clean, Makefile, gnulib/Makefile): Adjust.
+	* configure.ac: Adjust AC_OUTPUT output.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2012-04-19  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (generated_files): New.
+	(server_h): Remove the explicit dependency on config.h, and depend
+	on $generated_files.
+
+2012-04-19  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (INCGNU): Add -Ignulib.
+
+2012-04-19  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (GNULIB_INCLUDE_DIR): Rename to ...
+	(INCGNU): ... this, and spell out -I here.
+	(GNULIB_LIB): Rename to ...
+	(LIBGNU): ... this.
+	(INCLUDE_CFLAGS, gdbserver$(EXEEXT), $(GNULIB_LIB) rule): Adjust.
+
+2012-04-19  Pedro Alves  <palves@redhat.com>
+
+	* config.in: Regenerate.
+
+2012-04-19  Pedro Alves  <palves@redhat.com>
+
+	* configure.ac: Remove AC_CHECK_DECLS check for memmem.
+	* server.h (memmem): Remove declaration.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
+2012-04-19  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (SFILES): Add common/vec.c.
+	(OBS): Add vec.o.
+	(vec.o): New rule.
+
+2012-04-19  Yao Qi  <yao@codesourcery.com>
+
+	* remote-utils.c (prepare_resume_reply): Replace with macro
+	target_core_of_thread.
+	* server.c (handle_qxfer_threads_proper): Likewise.
+	* target.h (traget_core_of_thread): New macro.
+
+2012-04-18  Pedro Alves  <palves@redhat.com>
+
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2012-04-16  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (cmd_qtstart): Download tracepoints even when they are
+	duplicated on address.
+
+2012-04-16  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (COPY_FIELD_TO_BUF): New macro.
+	(struct tracepoint_action_ops) <send>: New field.
+	(m_tracepoint_action_send, r_tracepoint_action_send): New.
+	(agent_expr_send, x_tracepoint_action_send): New.
+	(l_tracepoint_action_send): New.
+	(cmd_qtdp): Download and install tracepoint
+	according to `use_agent'.
+	(run_inferior_command): Add one more parameter `len'.
+	Update callers.
+	(tracepoint_send_agent): New.
+	(cmd_qtdp, cmd_qtstart): Call tracepoint_send_agent.
+
+2012-04-16  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (download_tracepoints): Moved to ...
+	(cmd_qtstart): ... here.
+
+2012-04-14  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c: Include inttypes.h.
+	(struct collect_memory_action): Use sized types.
+	(struct tracepoint): Likewise.
+	(cmd_qtdp, stop_tracing): Update print specifiers.
+	(cmd_qtp, response_tracepoint): Likewise.
+	(collect_data_at_tracepoint): Likewise.
+	(collect_data_at_step): Likewise.
+
+2012-04-14  Yao Qi  <yao@codesourcery.com>
+
+	Import gnulib module inttypes.
+	* aclocal.m4, config.in, configure: Regenerated.
+
+2012-04-14  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (maintainer-clean, realclean, distclean): Remove
+	Makefile and config.status at last.
+
+2012-04-13  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c: Include stdint.h unconditionally.
+
+2012-04-13  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
+
+	* acinclude.m4 (GDBSERVER_HAVE_THREAD_DB_TYPE): New macro based
+	on BFD_HAVE_SYS_PROCFS_TYPE.
+	* configure.ac: Look for lwpid_t and psaddr_t in libthread_db.h.
+	* configure: Regenerate.
+	* config.in: Likewise.
+
+2012-04-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Makefile.in (clean): Also remove x32.c x32-linux.c
+	x32-avx.c x32-avx-linux.c.
+	(x32.o): New target.
+	(x32.c): Likewise.
+	(x32-linux.o): Likewise.
+	(x32-linux.c): Likewise.
+	(x32-avx.o): Likewise.
+	(x32-avx.c): Likewise.
+	(x32-avx-linux.o): Likewise.
+	(x32-avx-linux.c): Likewise.
+
+	* configure.srv (srv_amd64_regobj): Add x32.o x32-avx.o.
+	(srv_amd64_linux_regobj): Add x32-linux.o x32-avx-linux.o.
+	(srv_i386_64bit_xmlfiles): Add i386/x32-core.xml.
+	(srv_amd64_xmlfiles): Add i386/x32.xml i386/x32-avx.xml.
+	(srv_amd64_linux_xmlfiles): Add i386/x32-linux.xml
+	i386/x32-avx-linux.xml.
+
+	* linux-x86-low.c (init_registers_x32_linux): New prototype.
+	(init_registers_x32_avx_linux): Likwise.
+	(x86_linux_update_xmltarget): Call init_registers_x32_linux
+	or init_registers_x32_avx_linux if linux_is_elf64 is false.
+
+2012-04-13  Pedro Alves  <palves@redhat.com>
+
+	* Makefile.in (GNULIB_FLAGS_TO_PASS): New.
+	(FLAGS_TO_PASS): Don't change or set $top_srcdir, $srcdir and VPATH.
+	(all, uninstall, clean-info, all-lib, clean, maintainer-clean)
+	(realclean, distclean): Explicitly pass $GNULIB_FLAGS_TO_PASS to
+	the sub-make.
+
+2012-04-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* linux-x86-low.c (compat_x32_clock_t): New.
+	(compat_x32_siginfo_t): Likewise.
+	(compat_x32_siginfo_from_siginfo): Likewise.
+	(siginfo_from_compat_x32_siginfo): Likewise.
+	(linux_is_elf64): Likewise.
+	(x86_siginfo_fixup): Call compat_x32_siginfo_from_siginfo
+	and siginfo_from_compat_x32_siginfo for x32.
+	(x86_arch_setup): Set linux_is_elf64.
+
+2012-04-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gdb/13969
+	* linux-low.c (linux_pid_exe_is_elf_64_file): Also return the
+	e_machine field.
+	(linux_qxfer_libraries_svr4): Update call to elf_64_file_p.
+	* linux-low.h (linux_pid_exe_is_elf_64_file): Updated.
+	* linux-x86-low.c (x86_arch_setup): Check if GDBserver is
+	compatible with process.
+
+2012-04-12  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in: Define abs_top_srcdir and abs_srcdir.
+	(INCLUDE_CFLAGS): Append GNULIB_INCLUDE_DIR.
+	(install-only, install-info, clean): Handle sub dir gnulib.
+	(all-lib, am--refresh): New targets.
+	(memmem.o): Remove target.
+	* configure.ac: Remove AC_CONFIG_LIBOBJ_DIR.
+	Invoke gl_EARLY.  Invoke AC_CHECK_PROGS for make.
+	(AC_REPLACE_FUNCS): Remove memmem.
+	Invoke gl_INIT and AM_INIT_AUTOMAKE.
+	(AC_OUTPUT): Generate Makefile in gnulib/.
+	* aclocal.m4, config.in, configure: Regenerated.
+
+2012-04-10  Maciej W. Rozycki  <macro@codesourcery.com>
+
+	* linux-low.c (get_r_debug): Handle DT_MIPS_RLD_MAP.
+
+2012-04-05  Pedro Alves  <palves@redhat.com>
+
+	-Werror=strict-aliasing
+
+	* spu-low.c (parse_spufs_run): Avoid dereferencing type-punned
+	pointer.
+
+2012-04-04  Pedro Alves  <palves@redhat.com>
+
+	* linux-sparc-low.c (sparc_fill_gregset_to_stack)
+	(sparc_store_gregset_from_stack, sparc_store_gregset)
+	(sparc_breakpoint_at): Fix formatting.
+
+2012-03-30  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
+
+	* configure.ac: Check whether Elf32_auxv_t and Elf64_auxv_t
+	are available.
+	* linux-low.c [HAVE_ELF32_AUXV_T] (Elf32_auxv_t): Add typedef.
+	[HAVE_ELF64_AUXV_T] (Elf64_auxv_t): Likewise.
+	* config.in: Regenerate.
+	* configure: Likewise.
+
+2012-03-29  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (regsets_store_inferior_registers) [__sparc__]:
+	Correct ptrace arguments.
+
+2012-03-28  Pedro Alves  <palves@redhat.com>
+
+	* linux-ia64-low.c (ia64_regmap): Map IA64_EC_REGNUM to PT_AR_EC.
+	(IA64_GR0_REGNUM, IA64_FR0_REGNUM)
+	(IA64_FR1_REGNUM): New defines.
+	(ia64_fetch_register): New.
+	(the_low_target): Install it.
+	* linux-low.h (struct linux_target_ops) <fetch_register>: New
+	field.
+	* linux-low.c (linux_fetch_registers): Try the
+	the_low_target.fetch_register hook first.
+
+	* linux-arm-low.c (the_low_target): Adjust.
+	* linux-bfin-low.c (the_low_target): Adjust.
+	* linux-cris-low.c (the_low_target): Adjust.
+	* linux-crisv32-low.c (the_low_target): Adjust.
+	* linux-m32r-low.c (the_low_target): Adjust.
+	* linux-m68k-low.c (the_low_target): Adjust.
+	* linux-mips-low.c (the_low_target): Adjust.
+	* linux-ppc-low.c (the_low_target): Adjust.
+	* linux-s390-low.c (the_low_target): Adjust.
+	* linux-sh-low.c (the_low_target): Adjust.
+	* linux-sparc-low.c (the_low_target): Adjust.
+	* linux-tic6x-low.c (the_low_target): Adjust.
+	* linux-x86-low.c (the_low_target): Adjust.
+	* linux-xtensa-low.c (the_low_target): Adjust.
+
+2012-03-26  Pedro Alves  <palves@redhat.com>
+
+	* server.c (handle_qxfer_libraries): Don't bail early if
+	the_target->qxfer_libraries_svr4 is not NULL.
+
+2012-03-26  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_qxfer_libraries_svr4): Fix pasto in comment.
+
+2012-03-23  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_qxfer_libraries_svr4): Terminate the
+	"library-list-svr4" element's start tag when the the DSO list is
+	empty.
+
+2012-03-23  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (read_one_ptr): Read the inferior's pointer through
+	a variable whose type size is the same as the inferior's pointer
+	size.
+
+2012-03-21  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* linux-arm-low.c (arm_stopped_by_watchpoint): Use siginfo_t instead of
+	struct siginfo.
+	* linux-low.c (siginfo_fixup, linux_xfer_siginfo): Likewise.
+	* linux-x86-low.c (x86_siginfo_fixup): Likewise.
+	* linux-low.h: Include <signal.h>.
+	(struct siginfo): Remove forward declaration.
+	(struct linux_target_ops) <siginfo_fixup>: Use siginfo_t instead of
+	struct siginfo.
+
+2012-03-21  Mike Frysinger  <vapier@gentoo.org>
+
+	* .gitignore: Ignore more files.
+
+2012-03-19  Pedro Alves  <palves@redhat.com>
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* server.c (cont_thread, general_thread): Add describing comments.
+	(start_inferior): Clear `cont_thread'.
+	(handle_v_cont): Don't set `cont_thread' if resuming all threads
+	of a process.
+
+2012-03-15  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (install_tracepoint): Move duplicated tracepoint
+	handling to ...
+	(cmd_qtdp): ... here.
+
+2012-03-15  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (struct tracepoint_action_ops): New.
+	(struct tracepoint_action) [!IN_PROCESS_AGENT] <ops>: New field.
+	(m_tracepoint_action_download): New.
+	(r_tracepoint_action_download): New.
+	(x_tracepoint_action_download): New.
+	(l_tracepoint_action_download): New.
+	(add_tracepoint_action): Install `action->ops' according type.
+	(download_tracepoint_1): Move code `download' function pointer
+	of various tracepoint_action_ops.
+
+2012-03-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* linux-low.c (linux_attach_lwp_1): New variable buffer.  Call
+	linux_ptrace_attach_warnings.
+
+2012-03-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* Makefile.in (linux-ptrace.o): New.
+	* configure.srv (arm*-*-linux*, bfin-*-*linux*, crisv32-*-linux*)
+	(cris-*-linux*, i[34567]86-*-linux*, ia64-*-linux*, m32r*-*-linux*)
+	(m68*-*-linux*, m68*-*-uclinux*, mips*-*-linux*, powerpc*-*-linux*)
+	(s390*-*-linux*, sh*-*-linux*, sparc*-*-linux*, tic6x-*-uclinux)
+	(x86_64-*-linux*, xtensa*-*-linux*): Add linux-ptrace.o to SRV_TGTOBJ
+	of these targets.
+	* linux-low.c (linux_attach_lwp_1): Remove redundent else clause.
+
+2012-03-08  Yao Qi  <yao@codesourcery.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	Fix PR server/13392.
+	* linux-x86-low.c (amd64_install_fast_tracepoint_jump_pad): Check
+	offset of JMP insn.
+	* tracepoint.c (remove_tracepoint): New.
+	(cmd_qtdp): Call remove_tracepoint when failed to install.
+
+2012-03-07  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (get_detach_signal): New.
+	(linux_detach_one_lwp): Get rid of a pending SIGSTOP with SIGCONT.
+	Pass on pending signals to PTRACE_DETACH.  Check the result of the
+	ptrace call.
+	* server.c (program_signals, program_signals_p): New.
+	(handle_general_set): Handle QProgramSignals.
+	* server.h (program_signals, program_signals_p): Declare.
+
+2012-03-05  Pedro Alves  <palves@redhat.com>
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* linux-low.c (get_dynamic): Don't warn when PT_PHDR isn't found.
+	New comment why.
+
+2012-03-03  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (tracepoint_look_up_symbols): Update call to
+	agent_look_up_symbols.
+
+2012-03-03  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (linux-low.o): Keep dependence on agent.h.
+	(linux-x86-low.o): Likewise.
+	* server.h: Remove in_process_agent_loaded.
+	* tracepoint.c (in_process_agent_loaded): Removed.  Moved it
+	common/agent.c.
+	Update callers.
+
+2012-03-03  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (gdb_agent_capability): New global.
+	(in_process_agent_loaded_ust): Renamed to
+	`in_process_agent_supports_ust'.
+	Update callers.
+	(in_process_agent_supports_ust): Call agent_capability_check.
+	(clear_installed_tracepoints): Assert that agent supports
+	agent.
+
+2012-03-03  Yao Qi  <yao@codesourcery.com>
+
+	* linux-low.c (linux_supports_agent): New.
+	(linux_target_ops): Initialize field `supports_agent' with
+	linux_supports_agent.
+	* target.h (struct target_ops) <supports_agent>: New.
+	(target_supports_agent): New macro.
+	* server.c (handle_general_set): Handle packet 'QAgent'.
+	(handle_query): Send `QAgent+'.
+	* Makefile.in (server.o): Depends on agent.h.
+
+2012-03-03  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (OBS): Add agent.o.
+	Add new rule for agent.o.
+	Track dependence of tracepoint.c on agent.h.
+	* tracepoint.c (run_inferior_command_1):
+	(run_inferior_command): Call agent_run_command.
+	(gdb_ust_connect_sync_socket): Deleted.  Move it to
+	common/agent.c.
+	(resume_thread, stop_thread): Likewise.
+	(gdb_ust_socket_init): Renamed to ...
+	(gdb_agent_socket_init): ... New.
+	(gdb_ust_thread): Renamed to ...
+	(gdb_agent_helper_thread): ... New.
+	(gdb_ust_init): Move some code to ...
+	(gdb_agent_init): ... here.  New.
+	[HAVE_UST]: Call gdb_ust_init.
+	(initialize_tracepoint_ftlib):  Call gdb_agent_init.
+	* configure.ac: Add `sys/un.h' to AC_CHECK_HEADERS.
+	* config.in, configure: Regenerated.
+
+2012-03-02  Pedro Alves  <palves@redhat.com>
+
+	* inferiors.c (add_pid_to_list, pull_pid_from_list): Delete.
+	* linux-low.c (struct simple_pid_list): New.
+	(stopped_pids): New a struct simple_pid_list pointer.
+	(add_to_pid_list, pull_pid_from_list): New.
+	(handle_extended_wait): Don't assume the first signal new children
+	report is SIGSTOP.  Adjust call to pull_pid_from_list.
+	(linux_wait_for_lwp): Adjust.
+
+2012-03-02  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (do_action_at_tracepoint): Write `stop_pc' in
+	debug log.
+
+2012-03-02  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (collect_ust_data_at_tracepoint): Remove parameters
+	`stop_pc' and `tpoint'.  Update caller.
+
+2012-03-01  Maciej W. Rozycki  <macro@codesourcery.com>
+
+	* linux-low.h (linux_target_ops): Add regset_bitmap member.
+	* linux-low.c (use_linux_regsets): New macro.
+	[!HAVE_LINUX_REGSETS] (regsets_fetch_inferior_registers): Likewise.
+	[!HAVE_LINUX_REGSETS] (regsets_store_inferior_registers): Likewise.
+	(linux_register_in_regsets): New function.
+	(usr_fetch_inferior_registers): Skip registers covered by
+	regsets.
+	(usr_store_inferior_registers): Likewise.
+	(usr_fetch_inferior_registers): New macro.
+	(usr_store_inferior_registers): Likewise.
+	(linux_fetch_registers): Handle mixed regset/non-regset targets.
+	(linux_store_registers): Likewise.
+	* linux-mips-low.c (init_registers_mips_dsp_linux): New
+	prototype.
+	(init_registers_mips64_dsp_linux): Likewise.
+	(init_registers_mips_linux): New macro.
+	(init_registers_mips_dsp_linux): Likewise.
+	(mips_dsp_num_regs): Likewise.
+	(DSP_BASE, DSP_CONTROL): New fallback macros.
+	(mips_base_regs): New macro.
+	(mips_regmap): Use it.  Fix the size.
+	(mips_dsp_regmap): New variable.
+	(mips_dsp_regset_bitmap): Likewise.
+	(mips_arch_setup): New function.
+	(mips_cannot_fetch_register): Use the_low_target.regmap rather
+	than mips_regmap.
+	(mips_cannot_store_register): Likewise.
+	(the_low_target): Update .arch_setup, .num_regs and .regmap
+	initializers.  Add .regset_bitmap initializer.
+	* linux-arm-low.c (the_low_target): Add .regset_bitmap
+	initializer.
+	* linux-bfin-low.c (the_low_target): Likewise.
+	* linux-cris-low.c (the_low_target): Likewise.
+	* linux-crisv32-low.c (the_low_target): Likewise.
+	* linux-ia64-low.c (the_low_target): Likewise.
+	* linux-m32r-low.c (the_low_target): Likewise.
+	* linux-m68k-low.c (the_low_target): Likewise.
+	* linux-ppc-low.c (the_low_target): Likewise.
+	* linux-s390-low.c (the_low_target): Likewise.
+	* linux-sh-low.c (the_low_target): Likewise.
+	* linux-sparc-low.c (the_low_target): Likewise.
+	* linux-tic6x-low.c (the_low_target): Likewise.
+	* linux-x86-low.c (the_low_target): Likewise.
+	* linux-xtensa-low.c (the_low_target): Likewise.
+	* configure.srv <mips*-*-linux*>: Add mips-dsp-linux.o and
+	mips64-dsp-linux.o to srv_regobj.  Add mips-dsp-linux.xml,
+	mips64-dsp-linux.xml, mips-dsp.xml and mips64-dsp.xml to
+	srv_xmlfiles.
+	* Makefile.in (mips-dsp-linux.o, mips-dsp-linux.c): New targets.
+	(mips64-dsp-linux.o, mips64-dsp-linux.c): Likewise.
+
+2012-02-29  Yao Qi  <yao@codesourcery.com>
+	    Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c: (linux_wait_1): Call unsuspend_all_lwps when
+	`step_over_finished' is true.
+
+2012-02-27  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (pid_is_stopped): Delete, moved to common/.
+	(linux_attach_lwp_1): Adjust to use linux_proc_pid_is_stopped.
+
+2012-02-27  Pedro Alves  <palves@redhat.com>
+
+	PR server/9684
+	* linux-low.c (pid_is_stopped): New.
+	(linux_attach_lwp_1): Handle attaching to 'T (stopped)' processes.
+
+2012-02-25  Luis Machado  <lgustavo@codesourcery.com>
+
+	* mem-break.c (clear_gdb_breakpoint_conditions): Fix de-allocation
+	of conditions.
+
+2012-02-24  Maciej W. Rozycki  <macro@codesourcery.com>
+
+	* linux-mips-low.c (mips_regmap): Correct the index of $f9.
+
+2012-02-24  Luis Machado  <lgustavo@codesourcery>
+
+	* server.c (handle_query): Advertise support for target-side
+	breakpoint condition evaluation.
+	(process_point_options): New function.
+	(process_serial_event): When inserting a breakpoint, check for
+	a target-side condition that should be evaluated.
+
+	* mem-break.c: Include regcache.h and ax.h.
+	(point_cond_list_t): New data structure.
+	(breakpoint) <cond_list>: New field.
+	(find_gdb_breakpoint_at): Make non-static.
+	(delete_gdb_breakpoint_at): Clear any target-side
+	conditions.
+	(clear_gdb_breakpoint_conditions): New function.
+	(add_condition_to_breakpoint): Likewise.
+	(add_breakpoint_condition): Likewise.
+	(gdb_condition_true_at_breakpoint): Likewise.
+	(gdb_breakpoint_here): Return result directly instead
+	of going through a local variable.
+
+	* mem-break.h (find_gdb_breakpoint_at): New prototype.
+	(clear_gdb_breakpoint_conditions): Likewise.
+	(add_breakpoint_condition): Likewise.
+	(gdb_condition_true_at_breakpoint): Likewise.
+
+	* linux-low.c (linux_wait_1): Evaluate target-side breakpoint condition.
+	(need_step_over_p): Take target-side breakpoint condition into
+	consideration.
+
+2012-02-24  Luis Machado  <lgustavo@codesourcery>
+
+	* server.h: Include tracepoint.h.
+	(agent_mem_read, agent_get_trace_state_variable_value,
+	agent_set_trace_state_variable_value,
+	agent_tsv_read, agent_mem_read_string, get_get_tsv_func_addr,
+	get_set_tsv_func_addr): New prototypes.
+
+	* ax.h: New include file.
+	* ax.c: New source file.
+
+	* tracepoint.c: Include ax.h.
+	(gdb_agent_op, gdb_agent_op_names, gdb_agent_op_sizes,
+	agent_expr, eval_result_type): Move to ax.h.
+	(parse_agent_expr): Rename to ...
+	(gdb_parse_agent_expr): ... this, make it non-static and move
+	to ax.h.
+	(unparse_agent_expr) Rename to ...
+	(gdb_unparse_agent_expr): ... this, make it non-static and move
+	to ax.h.
+	(eval_agent_expr): Rename to ...
+	(eval_tracepoint_agent_expr): ... this.
+	(agent_mem_read, agent_mem_read_string, agent_tsv_read): Remove
+	forward declarations.
+	(add_tracepoint_action): Call gdb_parse_agent_expr (...).
+	(agent_get_trace_state_variable_value): New function.
+	(agent_set_trace_state_variable_value): New function.
+	(cmd_qtdp): Call gdb_parse_agent_expr (...).
+	(response_tracepoint): Call gdb_unparse_agent_expr (...).
+	(do_action_at_tracepoint): Call eval_tracepoint_agent_expr (...).
+	(condition_true_at_tracepoint): Likewise.
+	(parse_agent_expr): Rename to ...
+	(gdb_parse_agent_expr): ... this and move to ax.c.
+	(unparse_agent_expr): Rename to ...
+	(gdb_unparse_agent_expr): ... this and move to ax.c.
+	(gdb_agent_op_name): Move to ax.c.
+	(eval_agent_expr): Rename to ...
+	(gdb_eval_agent_expr): ... this, use regcache passed as parameter
+	and move to ax.c.
+	(eval_tracepoint_agent_expr): New function.
+	(agent_mem_read, agent_mem_read_string, agent_tsv_read): Make
+	non-static.
+	(current_insn_ptr, emit_error, struct bytecode_address): Move to
+	ax.c.
+	(emit_prologue, emit_epilogue, emit_add, emit_sub, emit_mul, emit_lsh,
+	emit_rsh_signed, emit_rsh_unsigned, emit_ext, emit_log_not,
+	emit_bit_and, emit_bit_or, emit_bit_xor, emit_bit_not, emit_equal,
+	emit_less_signed, emit_less_unsigned, emit_ref, emit_if_goto,
+	emit_goto, write_goto_address, emit_const, emit_reg, emit_pop,
+	emit_stack, emit_zero_ext, emit_swap, emit_stack_adjust,
+	emit_int_call_1, emit_void_call_2, emit_eq_goto, emit_ne_goto,
+	emit_lt_goto, emit_ge_goto, emit_gt_goto, emit_le_goto): Move to ax.c.
+	(get_get_tsv_func_addr, get_set_tsv_func_addr): New functions.
+	(compile_bytecodes): Remove forward declaration.
+	(is_goto_target): Move to ax.c.
+	(compile_bytecodes): Move to ax.c and call
+	agent_get_trace_state_variable_value (...) and
+	agent_set_trace_state_variable_value (...).
+
+	* Makefile.in: Update ax.c and IPA dependencies.
+
+2012-02-24  Pedro Alves  <palves@redhat.com>
+
+	* tracepoint.c (cmd_bigqtbuffer): Rename as ...
+	(cmd_bigqtbuffer_circular): ... this.  Only handle
+	'QTBuffer:circular:'.
+	(handle_tracepoint_general_set): Adjust.
+
+2012-02-16  Yao Qi  <yao@codesourcery.com>
+
+	* inferiors.c: Move code to ...
+	* dll.c: .... here.  New.
+	* server.h: Declare clear_dlls.
+	* Makefile.in (SFILES): Add dll.c.
+	(OBS): Add dll.o
+	(dll.o): New rule.
+
+2012-02-11  Yao Qi  <yao@codesourcery.com>
+
+	* server.c: (handle_monitor_command): Add a new parameter
+	`own_buf'.
+	(handle_query): Update caller.
+
+2012-02-09  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.ac: Add readlink to AC_CHECK_FUNCS list.
+	* configure, config.in: Regenerate.
+	* hostio.c: Provide an alternate implementation if HAVE_READLINK
+	is not defined.
+
+2012-02-02  Pedro Alves  <palves@redhat.com>
+
+	Try SIGKILL first, then PTRACE_KILL.
+	* linux-low.c (linux_kill_one_lwp): New.
+	(linux_kill_one_lwp): Rename to ...
+	(kill_one_lwp_callback): ... this.  Use the new
+	linux_kill_one_lwp.
+
+2012-02-02  Pedro Alves  <palves@redhat.com>
+
+	* tracepoint.c (cmd_qtminftpilen): Return 0 if there's no current
+	inferior.
+
+2012-01-27  Pedro Alves  <palves@redhat.com>
+
+	* linux-low.c (linux_child_pid_to_exec_file): Delete.
+	(elf_64_file_p): Make static.
+	(linux_pid_exe_is_elf_64_file): New.
+	* linux-low.h (linux_child_pid_to_exec_file, elf_64_file_p):
+	Delete declarations.
+	(linux_pid_exe_is_elf_64_file): Declare.
+	* linux-x86-low.c (x86_arch_setup): Use
+	linux_pid_exe_is_elf_64_file.
+
+2012-01-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* linux-low.c (linux_wait_for_event_1): Rename to ...
+	(linux_wait_for_event): ... here and merge it with former
+	linux_wait_for_event - new variable wait_ptid, use it.
+	(linux_wait_for_event): Remove - merge it to linux_wait_for_event_1.
+
+2012-01-23  Pedro Alves  <palves@redhat.com>
+
+	* server.c (main): Avoid yet another case of infinite loop while
+	detaching/killing after a longjmp.
+
+2012-01-20  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Code cleanup.
+	* linux-low.c (linux_wait_for_event_1): Use ptid_is_pid.
+
+2012-01-20  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+	* hostio.c (handle_readlink): New function.
+	(handle_vFile): Call it to handle "vFile:readlink" packets.
+
+2012-01-20  Pedro Alves  <palves@redhat.com>
+	    Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+	* server.c (handle_v_requests): Only support vAttach and vRun to
+	start multiple processes when in extended protocol mode.
+
+2012-01-17  Pedro Alves  <palves@redhat.com>
+
+	* tracepoint.c (initialize_tracepoint): Use mmap instead of
+	memalign plus mprotect to allocate the scratch buffer.
+
+2012-01-13  Pedro Alves  <palves@redhat.com>
+
+	* server.c (attach_inferior): Clear `cont_thread'.
+
+2012-01-13  Pedro Alves  <palves@redhat.com>
+
+	* server.c (main): Avoid infinite loop while detaching/killing
+	after a longjmp.
+
+2012-01-09  Doug Evans  <dje@google.com>
+
+	* server.c (start_inferior): Set last_ptid in --wrapper case.
+
+2012-01-06  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c [IN_PROCESS_AGENT] (debug_threads): Macro
+	defined.
+	[IN_PROCESS_AGENT] (debug_agent): New global variable.
+
+2012-01-04  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (cmd_qtdp): Print debug message
+	for static tracepoint.
+
+2012-01-04  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (trace_vdebug): Differentiate debug message
+	between gdbserver and IPA.
+
+2012-01-03  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (tracepoint_was_hit): Don't collect for
+	static tracepoint.
+
+2012-01-02  Joel Brobecker  <brobecker@adacore.com>
+
+	* terminal.h: Reformat copyright header.
+
+2012-01-02  Joel Brobecker  <brobecker@adacore.com>
+
+	* server.c (gdbserver_version): Update copyright year.
+	* gdbreplay.c (gdbreplay_version): Likewise.
+
+2011-12-18  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* linux-low.c (linux_create_inferior): Put empty if clause for write.
+
+	Revert:
+	2011-12-18  Hui Zhu  <teawater@gmail.com>
+	* linux-low.c (linux_create_inferior): Save return value to ret.
+
+2011-12-18  Hui Zhu  <teawater@gmail.com>
+
+	* linux-low.c (linux_create_inferior): Save return value to ret.
+
+2011-12-16  Doug Evans  <dje@google.com>
+
+	* linux-low.c (linux_create_inferior): If stdio connection,
+	redirect stdin from /dev/null, stdout to stderr.
+	* remote-utils.c (remote_is_stdio): New static global.
+	(remote_connection_is_stdio): New function.
+	(remote_prepare): Handle stdio connection.
+	(remote_open): Ditto.
+	(remote_close): Don't close stdin for stdio connections.
+	(read_prim,write_prim): New functions.  Replace all calls to
+	read/write to these.
+	* server.c (main): Watch for "-" argument.  Move call to
+	remote_prepare before start_inferior.
+	* server.h (STDIO_CONNECTION_NAME): New macro.
+	(remote_connection_is_stdio): Declare.
+
+	* remote-utils.c (prepare_resume_reply): Remove extraneous \n
+	in debugging output.
+
+2011-12-15  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c: Include sys/syscall.h.
+	(gdb_ust_thread): Remove preprocessor conditional.
+
+2011-12-14  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_detach_one_lwp): Call
+	the_low_target.prepare_to_resume before detaching.
+
+2011-12-14  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (gdb_ust_thread): Don't ignore return value
+	of write.
+
+2011-12-14  Yao Qi  <yao@codesourcery.com>
+
+	* i386-low.c (i386_low_stopped_data_address): Initialize local
+	variable `control'.
+
+2011-12-13  Pedro Alves  <pedro@codesourcery.com>
+
+	PR remote/13492
+
+	* i386-low.c (i386_low_stopped_data_address): Avoid fetching
+	DR_CONTROL unless necessary.  Extend comments.
+	* linux-x86-low.c (x86_linux_prepare_to_resume): Don't write to
+	DR0-3 if not used.  If any watchpoint was set, clear DR_STATUS.
+
+2011-12-13  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (trace_buffer_alloc): Replace magic numbers with
+	macros.
+	(upload_fast_traceframes, upload_fast_traceframes): Likewise.
+
+2011-12-08  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* linux-low.c (linux_kill): Skip PTRACE_KILL if LWP does not exist.
+	Print new debug message for such case.
+
+2011-12-06  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Fix overlapping memcpy.
+	* mem-break.c (set_raw_breakpoint_at): New variable buf.  Use it for
+	the read_inferior_memory transfer.
+	(delete_fast_tracepoint_jump): New variable buf.  Use it for the
+	write_inferior_memory transfer.
+	(set_fast_tracepoint_jump): New variable buf.  Use it for the
+	read_inferior_memory and write_inferior_memory transfers.
+	(uninsert_fast_tracepoint_jumps_at, reinsert_fast_tracepoint_jumps_at)
+	(delete_raw_breakpoint, uninsert_raw_breakpoint): New variable buf.
+	Use it for the write_inferior_memory transfer.
+	(check_mem_read, check_mem_write): New gdb_asserts for overlapping
+	buffers.
+
+2011-12-06  Maciej W. Rozycki  <macro@codesourcery.com>
+
+	* linux-low.c (fetch_register, store_register): Make code
+	consistent, fix formatting.
+
+2011-12-06  Maciej W. Rozycki  <macro@codesourcery.com>
+
+	* linux-low.c (usr_store_inferior_registers): Factor out code
+	to handle individual registers into...
+	(store_register): ... this new function.
+
+2011-12-06  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
+	(s390-linux32v2.o, s390-linux32v2.c): Likewise.
+	(s390-linux64v1.o, s390-linux64v1.c): Likewise.
+	(s390-linux64v2.o, s390-linux64v2.c): Likewise.
+	(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
+	(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
+	* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
+	(srv_xmlfiles): Add new XML files.
+
+	* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
+	and <sys/uio.h>.
+	(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
+	(init_registers_s390_linux32v1): Add prototype.
+	(init_registers_s390_linux32v2): Likewise.
+	(init_registers_s390_linux64v1): Likewise.
+	(init_registers_s390_linux64v2): Likewise.
+	(init_registers_s390x_linux64v1): Likewise.
+	(init_registers_s390x_linux64v2): Likewise.
+	(s390_num_regs): Increment to 52.
+	(s390_regmap): Add orig_r2 register.
+	(s390_num_regs_3264): Increment to 68.
+	(s390_regmap_3264): Add orig_r2 register.
+	(s390_collect_ptrace_register): Handle orig_r2 register.
+	(s390_supply_ptrace_register): Likewise.
+	(s390_fill_last_break): New function.
+	(s390_store_last_break): Likewise.
+	(s390_fill_system_call): New function.
+	(s390_store_system_call): Likewise.
+	(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
+	register sets.
+	(s390_check_regset): New function.
+	(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
+	NT_S390_SYSTEM_CALL regsets and use appropriate description.
+	Update target_regsets for available register sets.
+
+2011-12-02  Paul Pluzhnikov  <ppluzhnikov@google.com>
+	    Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* linux-low.c (get_phdr_phnum_from_proc_auxv, get_dynamic, get_r_debug)
+	(read_one_ptr, struct link_map_offsets, linux_qxfer_libraries_svr4):
+	New.
+	(struct linux_target_ops): Install linux_qxfer_libraries_svr4.
+	* linux-low.h (struct process_info_private): New member r_debug.
+	* server.c (handle_qxfer_libraries): Call
+	the_target->qxfer_libraries_svr4.
+	(handle_qxfer_libraries_svr4): New function.
+	(qxfer_packets): New entry "libraries-svr4".
+	(handle_query): Check QXFER_LIBRARIES_SVR4 and report libraries-svr4.
+	* target.h (struct target_ops): New member qxfer_libraries_svr4.
+	* remote.c (remote_xfer_partial): Call add_packet_config_cmd for
+	PACKET_qXfer_libraries_svr4.
+
+2011-11-30  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* linux-s390-low.c (s390_collect_ptrace_register): Fully convert
+	PSW address/mask between 8-byte and 16-byte formats.
+	(s390_supply_ptrace_register): Likewise.
+	(s390_get_pc, s390_set_pc): 4-byte PSW address always includes
+	basic addressing mode bit.
+
+2011-11-24  Stan Shebs  <stan@codesourcery.com>
+
+	* tracepoint.c (cmd_qtstatus): Use plongest instead of %llx.
+
+2011-11-17  Stan Shebs  <stan@codesourcery.com>
+
+	* tracepoint.c (struct tracepoint): New field traceframe_usage.
+	(tracing_start_time): New global.
+	(tracing_stop_time): New global.
+	(tracing_user_name): New global.
+	(tracing_notes): New global.
+	(tracing_stop_note): New global.
+	(cmd_qtstart): Set traceframe_usage, start_time.
+	(stop_tracing): Set stop_time.
+	(cmd_qtstatus): Report additional status.
+	(cmd_qtp): New function.
+	(handle_tracepoint_query): Call it.
+	(cmd_qtnotes): New function.
+	(handle_tracepoint_general_set): Call it.
+	(get_timestamp): Rename from tsv_get_timestamp.
+
+2011-11-14  Stan Shebs  <stan@codesourcery.com>
+	    Kwok Cheung Yeung  <kcy@codesourcery.com>
+
+	* linux-x86-low.c (small_jump_insn): New.
+	(i386_install_fast_tracepoint_jump_pad): Add arguments for
+	trampoline and error message, build a trampoline and issue a small
+	jump instruction to it.
+	(x86_install_fast_tracepoint_jump_pad): Add arguments for
+	trampoline and error message.
+	(x86_get_min_fast_tracepoint_insn_len): New.
+	(the_low_target): Add call to x86_get_min_fast_tracepoint_insn_len.
+	* linux-low.h (struct linux_target_ops): Add arguments to
+	install_fast_tracepoint_jump_pad operation, add new operation.
+	* linux-low.c (linux_install_fast_tracepoint_jump_pad): Add
+	arguments.
+	(linux_get_min_fast_tracepoint_insn_len): New function.
+	(linux_target_op): Add new operation.
+	* tracepoint.c (gdb_trampoline_buffer): New IPA variable.
+	(gdb_trampoline_buffer_end): Ditto.
+	(gdb_trampoline_buffer_error): Ditto.
+	(struct ipa_sym_addresses): Add fields for new IPA variables.
+	(symbol_list): Add entries for new IPA variables.
+	(struct tracepoint): Add fields to hold the address range of the
+	trampoline used by the tracepoint.
+	(trampoline_buffer_head): New static variable.
+	(trampoline_buffer_tail): Ditto.
+	(claim_trampoline_space): New function.
+	(have_fast_tracepoint_trampoline_buffer): New function.
+	(clone_fast_tracepoint): Fill in trampoline fields of tracepoint
+	structure.
+	(install_fast_tracepoint): Ditto, also add error buffer argument.
+	(cmd_qtminftpilen): New function.
+	(handle_tracepoint_query): Add response to qTMinFTPILen packet.
+	(fast_tracepoint_from_trampoline_address): New function.
+	(fast_tracepoint_collecting): Handle trampoline as part of jump
+	pad space.
+	(set_trampoline_buffer_space): New function.
+	(initialize_tracepoint): Initialize new IPA variables.
+	* target.h (struct target_ops): Add arguments to
+	install_fast_tracepoint_jump_pad operation, add new
+	get_min_fast_tracepoint_insn_len operation.
+	(target_get_min_fast_tracepoint_insn_len): New.
+	(install_fast_tracepoint_jump_pad): Add arguments.
+	* server.h (IPA_BUFSIZ): Define.
+	* linux-i386-ipa.c: Include extra header files.
+	(initialize_fast_tracepoint_trampoline_buffer): New function.
+	(initialize_low_tracepoint): Call it.
+	* server.h (set_trampoline_buffer_space): Declare.
+	(claim_trampoline_space): Ditto.
+	(have_fast_tracepoint_trampoline_buffer): Ditto.
+
+2011-11-14  Yao Qi  <yao@codesourcery.com>
+
+	* server.c (handle_query): Handle InstallInTrace for qSupported.
+	* tracepoint.c (add_tracepoint): Sort list.
+	(install_tracepoint, download_tracepoint): New.
+	(cmd_qtdp): Call them to install and download tracepoints.
+	(sort_tracepoints): Removed.
+	(cmd_qtstart): Update.
+
+2011-11-14  Yao Qi  <yao@codesourcery.com>
+
+	* mem-break.c (inc_ref_fast_tracepoint_jump): New.
+	* mem-break.h: Declare.
+	* tracepoint.c (cmd_qtstart): Move some code to ...
+	(clone_fast_tracepoint, install_fast_tracepoint): ... here.
+	New.
+	(download_tracepoints): Move some code to ...
+	(download_tracepoint_1): ... here.  New.
+
+2011-11-08  Yao Qi  <yao@codesourcery.com>
+
+	* remote-utils.c (relocate_instruction): A comment fix.
+
+2011-11-07  Joel Brobecker  <brobecker@adacore.com>
+
+	* win32-i386-low.c (dr_status_mirror, dr_control_mirror): Delete.
+	(i386_dr_low_get_control, i386_dr_low_get_status): Use
+	dr_status_mirror and dr_control_mirror from debug_reg_state.
+	(i386_dr_low_get_status): Use debug_reg_state.dr_status_mirror
+	(i386_initial_stuff): Remove use of deleted globals.
+	(i386_get_thread_context, i386_set_thread_context,
+	i386_thread_added): Use dr_status_mirror and dr_control_mirror
+	from debug_reg_state.
+
+2011-11-05  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (gdb_collect): Loop over tracepoints of same
+	address as TPOINT's.
+
+2011-11-02  Stan Shebs  <stan@codesourcery.com>
+
+	* tracepoint.c (agent_mem_read_string): New function.
+	(eval_agent_expr): Call it for tracenz.
+	* server.c (handle_query): Report support for tracenz.
+
+2011-11-02  Yao Qi  <yao@codesourcery.com>
+
+	* tracepoint.c (cmd_qtstart): Remove unused local variables.
+
+2011-11-02  Yao Qi  <yao@codesourcery.com>
+
+	* target.h: Fix a typo in comment.
+
+2011-10-31  Pedro Alves  <pedro@codesourcery.com>
+
+	* mem-break.c (check_mem_write): Add `myaddr' parameter.  Don't
+	clobber the breakpoints' shadows with fast tracepoint jumps.
+	* mem-break.h (check_mem_write): Add `myaddr' parameter.
+	* target.c (write_inferior_memory): Also pass MYADDR down to
+	check_mem_write.
+
+2011-10-07  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+	* configure.ac: Check support for personality routine.
+	* configure: Regenerate.
+	* config.in: Likewise.
+	* linux-low.c: Include <sys/personality.h>.
+	Define ADDR_NO_RANDOMIZE if necessary.
+	(linux_create_inferior): Disable address space randomization when
+	forking inferior, if requested.
+	(linux_supports_disable_randomization): New function.
+	(linux_target_ops): Install it.
+	* server.h (disable_randomization): Declare.
+	* server.c (disable_randomization): New global variable.
+	(handle_general_set): Handle QDisableRandomization.
+	(handle_query): Likewise for qSupported.
+	(main): Support --disable-randomization and --no-disable-randomization
+	command line arguments.
+	* target.h (struct target_ops): Add supports_disable_randomization.
+	(target_supports_disable_randomization): New macro.
+
+2011-09-29  Mike Frysinger  <vapier@gentoo.org>
+
+	* linux-low.c (target_loadseg): Add defined PTRACE_GETFDPIC to the
+	ifdef check.
+	[PT_GETDSBT] (target_loadmap): Wrap in a defined PT_GETDSBT check.
+	[!PT_GETDSBT] (target_loadmap): New definition.
+	(LINUX_LOADMAP, LINUX_LOADMAP_EXEC, LINUX_LOADMAP_INTERP): Define.
+	(linux_read_loadmap): Change PTRACE_GETDSBT_EXEC to
+	LINUX_LOADMAP_EXEC, PTRACE_GETDSBT_INTERP to LINUX_LOADMAP_INTERP,
+	and PT_GETDSBT to LINUX_LOADMAP.
+	[!PT_GETDSBT] (linux_read_loadmap): Define to NULL.
+	(linux_target_ops): Delete unnecessary ifdef PT_GETDSBT check.
+
+2011-09-21  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+	* linux-arm-low.c (struct arm_linux_hwbp_cap): Remove.
+	(arm_linux_hwbp_cap): New static variable.
+	(arm_linux_get_hwbp_cap): Replace by ...
+	(arm_linux_init_hwbp_cap): ... this new function.
+	(arm_linux_get_hw_breakpoint_count): Use arm_linux_hwbp_cap.
+	(arm_linux_get_hw_watchpoint_count): Likewise.
+	(arm_linux_get_hw_watchpoint_max_length): Likewise.
+	(arm_arch_setup): Call arm_linux_init_hwbp_cap.
+	(arm_prepare_to_resume): Use perror_with_name instead of error.
+
+2011-09-21  Ulrich Weigand  <ulrich.weigand@linaro.org>
+
+	* linux-arm-low.c: Include <signal.h>.
+	(PTRACE_GETHBPREGS, PTRACE_SETHBPREGS): Define if necessary.
+	(struct arm_linux_hwbp_cap): New data type.
+	(arm_hwbp_type, arm_hwbp_control_t): New typedefs.
+	(struct arm_linux_hw_breakpoint): New data type.
+	(MAX_BPTS, MAX_WPTS): Define.
+	(struct arch_process_info, struct arch_lwp_info): New data types.
+	(arm_linux_get_hwbp_cap): New function.
+	(arm_linux_get_hw_breakpoint_count): Likewise.
+	(arm_linux_get_hw_watchpoint_count): Likewise.
+	(arm_linux_get_hw_watchpoint_max_length): Likewise.
+	(arm_hwbp_control_initialize): Likewise.
+	(arm_hwbp_control_is_enabled): Likewise.
+	(arm_hwbp_control_is_initialized): Likewise.
+	(arm_hwbp_control_disable): Likewise.
+	(arm_linux_hw_breakpoint_equal): Likewise.
+	(arm_linux_hw_point_initialize): Likewise.
+	(struct update_registers_data): New data structure.
+	(update_registers_callback: New function.
+	(arm_insert_point): Likewise.
+	(arm_remove_point): Likewise.
+	(arm_stopped_by_watchpoint): Likewise.
+	(arm_stopped_data_address): Likewise.
+	(arm_new_process): Likewise.
+	(arm_new_thread): Likewise.
+	(arm_prepare_to_resume): Likewise.
+	(the_low_target): Register arm_insert_point, arm_remove_point,
+	arm_stopped_by_watchpoint, arm_stopped_data_address, arm_new_process,
+	arm_new_thread, and arm_prepare_to_resume.
+
+2011-09-15  Stan Shebs  <stan@codesourcery.com>
+
+	* server.h (struct emit_ops): Add compare-goto fields.
+	* tracepoint.c (gdb_agent_op_sizes): New table.
+	(emit_eq_goto): New function.
+	(emit_ne_goto): New function.
+	(emit_lt_goto): New function.
+	(emit_le_goto): New function.
+	(emit_gt_goto): New function.
+	(emit_ge_goto): New function.
+	(is_goto_target): New function.
+	(compile_bytecodes): Recognize special cases of compare-goto
+	combinations and call specialized emitters for them.
+	* linux-x86-low.c (amd64_emit_eq_goto): New function.
+	(amd64_emit_ne_goto): New function.
+	(amd64_emit_lt_goto): New function.
+	(amd64_emit_le_goto): New function.
+	(amd64_emit_gt_goto): New function.
+	(amd64_emit_ge_goto): New function.
+	(amd64_emit_ops): Add the new functions.
+	(i386_emit_eq_goto): New function.
+	(i386_emit_ne_goto): New function.
+	(i386_emit_lt_goto): New function.
+	(i386_emit_le_goto): New function.
+	(i386_emit_gt_goto): New function.
+	(i386_emit_ge_goto): New function.
+	(i386_emit_ops): Add the new functions.
+
+2011-09-08  Stan Shebs  <stan@codesourcery.com>
+
+	* linux-x86-low.c (i386_emit_prologue): Save %ebx.
+	(i386_emit_epilogue): Restore %ebx.
+
+2011-08-31  Jie Zhang  <jzhang918@gmail.com>
+
+	* server.c (step_thread): Remove definition.
+	(process_serial_event): Don't handle Hs.
+	* server.h (step_thread): Remove declaration.
+	* target.c (set_desired_inferior): Remove use of step_thread.
+
+2011-08-24  Luis Machado  <lgustavo@codesourcery.com>
+
+	* linux-low.c: Include linux-procfs.h.
+	(linux_attach_lwp_1): Update comments.
+	(linux_attach): Scan for existing threads when attaching to a
+	process that is the tgid.
+	* Makefile.in: Update dependencies.
+
+2011-08-24  Luis Machado  <lgustavo@codesourcery.com>
+
+	* configure.srv: Add linux-procfs.o dependencies.
+
+2011-08-14  Yao Qi  <yao@codesourcery.com>
+
+	* target.h (struct target_ops): Fix indent.
+	* win32-low.c (win32_target_ops): Fix comment.
+
+2011-08-14  Andrew Jenner  <andrew@codesourcery.com>
+	    Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (clean): Remove tic6x-*.c files.
+	(linux-tic6x-low.o, tic6x-c62x-linux.o, tic6x-c64x-linux.o): New rules.
+	(tic6x-c64xp-linux.o, tic6x-c62x-linux.c, tic6x-c64x-linux.c): Likewise.
+	(tic6x-c64xp-linux.c): Likewise.
+	* configure.srv: Add support for tic6x-*-uclinux.
+	* linux-tic6x-low.c: New.
+	* linux-low.c (PT_TEXT_ADDR, PT_DATA_ADDR, PT_TEXT_END_ADDR): Define.
+
+2011-08-14  Andrew Stubbs <ams@codesourcery.com>
+	    Yao Qi  <yao@codesourcery.com>
+
+	* target.h (struct target_ops): Add read_loadmap.
+	* linux-low.c (struct target_loadseg): New type.
+	(struct target_loadmap): New type.
+	(linux_read_loadmap): New function.
+	(linux_target_ops): Add linux_read_loadmap.
+	* server.c (handle_query): Support qXfer:fdpic:read packet.
+	* win32-low.c (win32_target_ops): Initialize field `read_loadmap'
+	to NULL.
+
+2011-08-05  Eli Zaretskii  <eliz@gnu.org>
+
+	* win32-low.c: Include <stdint.h>.
+
+2011-07-22  Pedro Alves  <pedro@codesourcery.com>
+
+	* i386-low.c (i386_insert_aligned_watchpoint): Don't pass the info
+	to the inferior here.
+	(i386_remove_aligned_watchpoint): Ditto.
+	(i386_handle_nonaligned_watchpoint): Return immediate on fail to
+	fit part of the watchpoint in the debug registers.
+	(i386_update_inferior_debug_regs): New.
+	(i386_low_insert_watchpoint): Work on a local mirror of the debug
+	registers, and only update the inferior on success.
+	(i386_low_remove_watchpoint): Ditto.
+
+2011-07-22  Kwok Cheung Yeung  <kcy@codesourcery.com>
+
+	* linux-low.c (compare_ints, unique, list_threads, show_process,
+	linux_core_of_thread): Delete.
+	(linux_target_ops): Change linux_core_of_thread to
+	linux_common_core_of_thread.
+	(linux_qxfer_osdata): Defer to linux_common_xfer_osdata.
+	* utils.c (malloc_failure): Change type of argument.
+	(xmalloc, xrealloc, xcalloc, xsnprintf): Delete.
+	* Makefile.in (SFILES): Add common/common-utils.c, common/xml-utils.c,
+	common/linux-osdata.c, common/ptid.c and common/buffer.c.
+	(OBS): Add xml-utils.o, common-utils.o, ptid.o and buffer.o.
+	(IPA_OBJS): Add common-utils-ipa.o.
+	(ptid_h, linux_osdata_h): New macros.
+	(server_h): Add common/common-utils.h, common/xml-utils.h,
+	common/buffer.h, common/gdb_assert.h, common/gdb_locale.h and
+	common/ptid.h.
+	(common-utils-ipa.o, common-utils.o, xml-utils.o, linux-osdata.o,
+	ptid.o, buffer.o): New rules.
+	(linux-low.o): Add common/linux-osdata.h as a dependency.
+	* configure.srv (srv_tgtobj): Add linux-osdata.o to Linux targets.
+	* configure.ac: Add AC_HEADER_DIRENT check.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* remote-utils.c (xml_escape_text): Delete.
+	(buffer_grow, buffer_free, buffer_init, buffer_finish,
+	buffer_xml_printf): Move to common/buffer.c.
+	* server.c (main): Remove call to initialize_inferiors.
+	* server.h (struct ptid, ptid_t, minus_one_ptid, null_ptid,
+	ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_lwp, ptid_get_tid,
+	ptid_equal, ptid_is_pid, initialize_inferiors, xml_escape_text,
+	internal_error, gdb_assert, gdb_assert_fail): Delete.
+	(struct buffer, buffer_grow, buffer_free, buffer_init, buffer_finish,
+	buffer_xml_printf, buffer_grow_str, buffer_grow_str0): Move to
+	common/buffer.h.
+	* inferiors.c (null_ptid, minus_one_ptid, ptid_build, pid_to_ptid,
+	ptid_get_pid, ptid_get_lwp, ptid_get_tid, ptid_equal, ptid_is_pid,
+	initialize_inferiors): Delete.
+
+2011-07-20  Pedro Alves  <pedro@codesourcery.com>
+
+	* tracepoint.c (tracepoint_look_up_symbols): Return upon the first
+	symbol error.
+
+2011-05-31  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-x86-low.c (i386_dr_low_get_addr): Fix off by one in
+	assertion.
+	* win32-i386-low.c (i386_dr_low_get_addr): Ditto.
+
+2011-05-26  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (thread-db.o): Track dependence to
+	common/gdb_thread_db.h.
+	* thread-db.c: include gdb_thread_db.h from right place.
+
+2011-05-16  Adrian Cornish  <gnu@bluedreamer.com>
+
+	* linux-i386-ipa.c (supply_static_tracepoint_registers): Pass
+	__FILE__ and __LINE__ to internal_error.
+
+2011-05-13  Doug Evans  <dje@google.com>
+
+	* thread-db.c (try_thread_db_load_from_sdir): New function.
+	(try_thread_db_load_from_dir): New function.
+	(thread_db_load_search): Handle $sdir, ignore $pdir.
+	Remove trying of system directories if search of
+	libthread-db-search-path fails,	that is now done via $sdir.
+
+2011-05-12  Kwok Cheung Yeung  <kcy@codesourcery.com>
+
+	* server.c (handle_query): Add EnableDisableTracepoints to the list
+	of supported features.
+	* tracepoint.c (clear_installed_tracepoints): Uninstall disabled
+	tracepoints.
+	(cmd_qtenable_disable): New.
+	(cmd_qtstart): Install tracepoints even if disabled.
+	(handle_tracepoint_general_set): Add call to cmd_qtenable_disable on
+	receiving a QTEnable or QTDisable packet.
+	(gdb_collect): Skip data collection if fast tracepoint is disabled.
+	(ust_marker_to_static_tracepoint): Do not ignore disabled static
+	tracepoints.
+	(gdb_probe): Skip data collection if static tracepoint is disabled.
+
+2011-05-10  Doug Evans  <dje@google.com>
+
+	* thread-db.c (thread_db_handle_monitor_command): Handle elided path.
+
+2011-05-04  Doug Evans  <dje@google.com>
+
+	* linux-low.c (linux_join): Skip process lookup.
+	* spu-low.c (spu_join): Ditto.
+	* server.c (join_inferiors_callback): Delete.
+	(process_serial_event): For 'D' packet (detach) call join_inferior
+	directly.
+
+2011-05-04  Joseph Myers  <joseph@codesourcery.com>
+
+	* README: Don't mention xscale*-*-linux*.
+	* configure.srv (xscale*-*-linux*): Don't handle target.
+
+2011-04-27  Nathan Froyd  <froydnj@codesourcery.com>
+
+	* linux-x86-low.c (amd64_emit_const): Call memcpy instead of
+	casting pointers.
+	(amd64_emit_reg, amd64_emit_int_call_1, amd64_emit_void_call_2):
+	(i386_emit_const, i386_emit_reg, i386_emit_int_call_1):
+	(i386_emit_void_call_2): Likewise.
+
+2011-04-26  Yao Qi  <yao@codesourcery.com>
+
+	* linux-low.c: Move common macros to linux-ptrace.h.
+	Include linux-ptrace.h.
+	* Makefile.in (linux_ptrace_h): New.
+	(linux-low.o): Depends on linux-ptrace.h.
+
+2011-04-24  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* remote-utils.c (handle_accept_event): Close LISTEN_DESC only if
+	RUN_ONCE.  Comment for the LISTEN_DESC delete_file_handler call.
+	(remote_prepare): New function with most of the TCP code from ...
+	(remote_open): ... here.  Detect PORT here unconditionally.  Move also
+	setting transport_is_reliable.
+	* server.c (run_once): New variable.
+	(gdbserver_usage): Document it.
+	(main): Set run_once for `--once'.  Call remote_prepare.  Exit after
+	the first run if RUN_ONCE.
+	* server.h (run_once, remote_prepare): New declarations.
+
+2011-04-19  Tom Tromey  <tromey@redhat.com>
+
+	* win32-low.c (handle_load_dll): Remove duplicate "the".
+
+2011-04-07  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	Remove support for old Cygwin 1.5 versions.
+	* win32-low.c (win32_create_inferior): Use new cygwin_path_list
+	function to avoid warning.
+	(win32_add_one_solib): Use cygwin_conv_path function to avoid
+	warning.
+
+2011-03-18  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* gdbserver/server.h (Macro _): Define it if not available.
+
+2011-03-14  Michael Snyder  <msnyder@vmware.com>
+
+	* hostio.c (handle_close): Remove unnecessary null test.
+
+2011-03-10  Joel Brobecker  <brobecker@adacore.com>
+
+	* Makefile.in (maintainer-clean realclean distclean): Remove
+	"make ...  subdir_do" command.
+
+2011-03-10  Michael Snyder  <msnyder@vmware.com>
+
+	* tracepoint.c (tracepoint_finish_step): Fix loop variable.
+
+	* server.c (handle_v_run): Free alloced buffer on early return.
+
+2011-03-09  Yao Qi  <yao@codesourcery.com>
+
+	Revert:
+	2011-03-04  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in: Remove GNU make feature --directory.
+
+	2011-03-05  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (CLEANDIRS, REQUIRED_SUBDIRS): New variable.
+	(subdir_do): New make target.  Copied from gdb/Makefile.
+	(maintainer-clean, realclean, distclean, clean): Call corresponding
+	make targets in common/Makefile.
+
+	2011-02-11  Yao Qi  <yao@codesourcery.com>
+
+	* configure.ac: Call AC_PROG_RANLIB.
+	* Makefile.in: Remove signals.o from OBS.  Link libcommon.a.
+	* configure: Regenerate.
+
+2011-03-07  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* remote-utils.c (putpkt_binary_1): Calculate BUF2 size dynamically.
+
+2011-03-06  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (REQUIRED_SUBDIRS): Remove $(LIBCOMMON_DIR).
+
+2011-03-05  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in (CLEANDIRS, REQUIRED_SUBDIRS): New variable.
+	(subdir_do): New make target.  Copied from gdb/Makefile.
+	(maintainer-clean, realclean, distclean, clean): Call corresponding
+	make targets in common/Makefile.
+
+2011-03-04  Yao Qi  <yao@codesourcery.com>
+
+	* Makefile.in: Remove GNU make feature --directory.
+
+2011-03-04  Michael Snyder  <msnyder@vmware.com>
+
+	* server.c (queue_stop_reply): Call xmalloc not malloc.
+
+2011-03-02  Michael Snyder  <msnyder@vmware.com>
+
+	* linux-arm-low.c (arm_arch_setup): Replace malloc with xmalloc.
+
+2011-02-28  Michael Snyder  <msnyder@vmware.com>
+
+	* tracepoint.c (cmd_qtv): Discard unused value 'packet'.
+	(cmd_qtframe): Ditto.
+	(cmd_qtbuffer): Ditto.
+	(cmd_bigqtbuffer): Ditto.
+
+	* utils.c (decimal2str): Initialize 'width' to nine, then
+	don't mess with it.
+
+2011-02-28  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* hostio.c (require_data): Free *data, not data.
+
+2011-02-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* hostio.c (require_data): Use free, not xfree.
+
+2011-02-27  Michael Snyder  <msnyder@vmware.com>
+
+	* server.c (handle_query): Discard unused value.
+
+	* hostio.c (require_data): Free malloc memory before returning
+	error.
+
+2011-02-26  Michael Snyder  <msnyder@vmware.com>
+
+	* linux-low.c (list_threads): Call closedir for dirent.
+
+2011-02-27  Michael Snyder  <msnyder@vmware.com>
+
+	* i386-low.c (i386-length_and_rw_bits): Comment the fact that
+	a case statement falls through.
+
+	* linux-low.c (linux_xfer_siginfo): Fix fencepost error.
+
+	* linux-amd64-ipa.c (gdb_agent_get_raw_reg): Fix fencepost error
+	in comparison.
+
+2011-02-26  Michael Snyder  <msnyder@vmware.com>
+
+	* utils.c (decimal2str): Eliminate dead code and dead param.
+	(pulongest): Drop dead param from call to decimal2str.
+	(plongest): Ditto.
+
+2011-02-24  Joel Brobecker  <brobecker@adacore.com>
+
+	Revert the following patch (not approved yet):
+	2011-02-21  Hui Zhu  <teawater@gmail.com>
+	* tracepoint.c (tp_printf): New function.
+	(eval_agent_expr): Handle gdb_agent_op_printf.
+
+2011-02-21  Hui Zhu  <teawater@gmail.com>
+
+	* tracepoint.c (tp_printf): New function.
+	(eval_agent_expr): Handle gdb_agent_op_printf.
+
+2011-02-18  Tom Tromey  <tromey@redhat.com>
+
+	* Makefile.in (tracepoint-ipa.o): Depend on ax.def.
+	(tracepoint.o): Likewise.
+	* tracepoint.c (enum gdb_agent_op): Use ax.def.
+	(gdb_agent_op_names): Likewise.
+
+2011-02-18  Tom Tromey  <tromey@redhat.com>
+
+	* tracepoint.c (enum gdb_agent_op) <gdb_agent_op_pick,
+	gdb_agent_op_rot>: New constants.
+	(gdb_agent_op_names): Add pick and roll.
+	(eval_agent_expr) <gdb_agent_op_pick, gdb_agent_op_rot>: New
+	cases.
+
+2011-02-15  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* aclocal.m4: Regenerated with aclocal-1.11.1.
+
+2011-02-14  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (handle_qxfer_traceframe_info): New.
+	(qxfer_packets): Register "traceframe-info".
+	(handle_query): Report support for qXfer:traceframe-info:read+.
+	* tracepoint.c (match_blocktype): New.
+	(traceframe_find_block_type): Rename to ...
+	(traceframe_walk_blocks): ... this.  Add callback filter argument,
+	and use it.
+	(traceframe_find_block_type): New, reimplemented on top of
+	traceframe_walk_blocks.
+	(build_traceframe_info_xml): New.
+	(traceframe_read_info): New.
+	* server.h (traceframe_read_info): Declare.
+
+2011-02-11  Yao Qi  <yao@codesourcery.com>
+
+	* configure.ac: Call AC_PROG_RANLIB.
+	* Makefile.in: Remove signals.o from OBS.  Link libcommon.a.
+	* configure: Regenerate.
+
+2011-02-07  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (gdb_read_memory): Change return semantics to allow
+	partial transfers.
+	(handle_search_memory_1): Adjust.
+	(process_serial_event) <'m' packet>: Handle partial transfers.
+	* tracepoint.c (traceframe_read_mem): Handle partial transfers.
+
+2011-01-28  Pedro Alves  <pedro@codesourcery.com>
+
+	* regcache.c (init_register_cache): Initialize
+	regcache->register_status.
+	(free_register_cache): Release regcache->register_status.
+	(regcache_cpy): Copy register_status.
+	(registers_to_string): Print 'x's for unavailable registers.
+	(supply_register): Mark the register's status valid or
+	unavailable, depending on whether a buffer was passed in or not.
+	(supply_register_zeroed): New.
+	(supply_regblock): Mark the registers' status valid or
+	unavailable, depending on whether a buffer was passed in or not.
+	* regcache.h (REG_UNAVAILABLE, REG_VALID): New defines.
+	(struct regcache): New `register_status' field.
+	(supply_register_zeroed): Declare.
+	* i387-fp.c (i387_xsave_to_cache): Zero out registers using
+	supply_register_zeroed, rather than passing a NULL buffer to
+	supply_register.
+	* tracepoint.c (fetch_traceframe_registers): Update comment.
+
+2011-01-28  Pedro Alves  <pedro@codesourcery.com>
+
+	* i387-fp.c (i387_xsave_to_cache): Make passing NULL as register
+	buffer explicit.
+
+2011-01-25  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.h (decode_xfer_write): Change prototype.
+	* remote-utils.c (decode_xfer_write): Remove `annex' parameter,
+	and don't extract the annex here.
+	* server.c (decode_xfer_read): Remove `annex' parameter,
+	and don't extract the annex here.
+	(decode_xfer): New.
+	(struct qxfer): New.
+	(handle_qxfer_auxv, handle_qxfer_features, handle_qxfer_libraries)
+	(handle_qxfer_osdata, handle_qxfer_siginfo, handle_qxfer_spu)
+	(handle_qxfer_statictrace): New functions, abstracted out from
+	handle_query, and made to use the struct qxfer interface.
+	(handle_threads_qxfer_proper): Rename to ...
+	(handle_qxfer_threads_proper): ... this.
+	(handle_threads_qxfer): Rename to ...
+	(handle_qxfer_threads): ... this.  Adjust.
+	(qxfer_packets): New array.
+	(handle_qxfer): New function.
+	(handle_query): Use handle_qxfer.
+
+2011-01-05  Michael Snyder  <msnyder@msnyder-server.eng.vmware.com>
+
+	* gdbreplay.c: Shorten lines of >= 80 columns.
+	* linux-low.c: Ditto.
+	* linux-ppc-low.c: Ditto.
+	* linux-s390-low.c: Ditto.
+	* linux-sparc-low.c: Ditto.
+	* linux-x86-low.c: Ditto.
+	* linux-xtensa-low.c: Ditto.
+	* mem-break.c: Ditto.
+	* nto-low.c: Ditto.
+	* regcache.h: Ditto.
+	* remote-utils.c: Ditto.
+	* server.c: Ditto.
+	* server.h: Ditto.
+	* thread-db.c: Ditto.
+	* tracepoint.c: Ditto.
+	* utils.c: Ditto.
+	* win32-low.h: Ditto.
+
+2011-01-05  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbserver/configure.ac, gdbserver/gdbserver.1: Copyright year
+	update.
+
+2011-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* server.c (gdbserver_version): Update copyright year in version
+	output.
+	* gdbreplay.c (gdbreplay_version): Ditto.
+
+2010-12-29  Jie Zhang  <jie.zhang@analog.com>
+
+	* configure.srv (bfin-*-*linux*): Handle Blackfin/Linux targets.
+	* linux-bfin-low.c: New file.
+	* linux-low.c: Define PT_TEXT_ADDR, PT_TEXT_END_ADDR, and
+	PT_DATA_ADDR for BFIN targets.
+	* Makefile.in (SFILES): Add linux-bfin-low.c.
+	(clean): Remove reg-bfin.c.
+	(linux-bfin-low.o, reg-bfin.o, reg-bfin.c): New targets.
+	* README: Mention supported Blackfin targets.
+
+2010-12-23  Mike Frysinger  <vapier@gentoo.org>
+
+	* .gitignore: New file.
+
+2010-11-16  Mike Frysinger  <vapier@gentoo.org>
+
+	* linux-low.c (linux_tracefork_child): Add char* cast to arg.
+
+2010-10-22  Jie Zhang  <jie@codesourcery.com>
+
+	* Makefile.in: Add FLAGS_TO_PASS variable.
+	(install): Remove dependency of install-only and recursively
+	invoke make for install-only.
+
+2010-10-04  Doug Evans  <dje@google.com>
+
+	* Makefile.in (uninstall): Use $(DESTDIR).
+
+2010-09-24  Pedro Alves  <pedro@codesourcery.com>
+
+	PR gdb/11842
+
+	* linux-x86-low.c (compat_siginfo_from_siginfo)
+	(siginfo_from_compat_siginfo): Also copy si_pid and si_uid when
+	si_code is < 0.  Check for si_code == SI_TIMER before checking for
+	si_code < 0.
+
+2010-09-13  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-i386-low.c: New file.
+	* configure.srv: Add handling of i[34567]86-*-lynxos* targets.
+
+2010-09-13  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c (ptrace_request_to_str): Remove handling for
+	request values that have been removed in LynxOS 5.x.
+
+2010-09-13  Joel Brobecker  <brobecker@adacore.com>
+
+	* lynx-low.c, lynx-ppc-loc.c: Include <sys/ptrace.h> instead of
+	<ptrace.h>
+
+2010-09-09  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* configure.ac: Add --enable-inprocess-agent option.
+	* configure: Rebuilt.
+
+2010-09-06  Yao Qi  <yao@codesourcery.com>
+
+	* linux-low.c (linux_kill): Remove unused variable.
+	(linux_stabilize_threads): Likewise.
+	* server.c (start_inferior): Likewise.
+	(queue_stop_reply_callback): Likewise.
+	* tracepoint.c (do_action_at_tracepoint): Likewise.
+
+2010-09-06  Yao Qi  <yao@codesourcery.com>
+
+	* linux-low.c (maybe_move_out_of_jump_pad): Restore current_inferior
+	on return.
+
+2010-09-06  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* target.c (mywait) <TARGET_WAITKIND_EXITED>: Fix to use INTEGER.
+
+2010-09-06  Pedro Alves  <pedro@codesourcery.com>
+
+	* Makefile.in (install-only): Replace $IPA_DEPFILES with
+	"$(IPA_DEPFILES)".
+
+2010-09-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbserver/lynx-low.c, gdbserver/lynx-low.h,
+	gdbserver/lynx-ppc-low.c: New files.
+	* Makefile.in (lynx_low_h): New variable.
+	(lynx-low.o, lynx-ppc-low.o): New rules.
+	* configure.ac: On LynxOS, link with -lnetinet.
+	* configure.srv: Add handling of powerpc-*-lynxos* targets.
+	* configure: regenerate.
+
+2010-09-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* Makefile.in (vasprintf.o, vsnprintf.o): New rules.
+	* configure.ac: Add check for vasprintf and vsnprintf.
+	* configure, config.in: Regenerate.
+	* server.h (vasprintf, vsnprintf): Add conditional declarations.
+
+2010-09-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbreplay.c: Move include of alloca.h up, next to include of
+	malloc.h.
+	* server.h: Add include of malloc.h.
+	* mem-break.c: Remove include of malloc.h.
+	* server.c, tracepoint.c, utils.c, win32-low.c: Likewise.
+
+2010-09-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* Makefile.in (memmem.o): Build with -Wno-error.
+
+2010-09-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* utils.c (xsnprintf): Make non-static.
+	* server.h: Add xsnprintf declaration.
+	* linux-low.c, nto-low.c, target.c, thread-db.c, tracepoint.c:
+	replace calls to snprintf by calls to xsnprintf throughout.
+
+2010-09-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.ac: Add configure check for alloca.
+	* configure, config.in: Regenerate.
+	* server.h: Include alloca.h if it exists.
+	* gdbreplay.c: Include alloca.h if it exists.
+
+2010-08-28  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (__SIGRTMIN): Define if not already defined.
+	(linux_create_inferior): Check for __ANDROID__ rather than
+	__SIGRTMIN.
+	(enqueue_one_deferred_signal): Don't requeue non-RT signals that
+	are already deferred.
+	(linux_wait_1): Check for __ANDROID__ rather than __SIGRTMIN.
+	(linux_resume_one_thread): Don't queue a SIGSTOP if the lwp is
+	stopped and already has a pending signal to report.
+	(proceed_one_lwp): : Don't queue a SIGSTOP if the lwp already has
+	a pending signal to report or is moving out of a jump pad.
+	(linux_init_signals): Check for __ANDROID__ rather than
+	__SIGRTMIN.
+
+2010-08-28  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_stabilize_threads): Wrap debug output in a
+	debug_threads check.  Avoid a linear search when not doing debug
+	output.
+
+2010-08-27  Pedro Alves  <pedro@codesourcery.com>
+
+	* event-loop.c (event_handle_func): Adjust to use gdb_fildes_t.
+	(struct gdb_event) <fd>: Change type to gdb_fildes_t.
+	(struct file_handler) <fd>: Change type to gdb_fildes_t.
+	(process_event): Change local fd's type to gdb_fildes_t.
+	(create_file_handler): Adjust prototype.
+	(delete_file_handler): Adjust prototype.
+	(handle_file_event): Adjust prototype.  Use pfildes.
+	(create_file_event): Adjsut prototype.
+	* remote-utils.c (remote_desc, listen_desc): Change type to
+	gdb_fildes_t.
+	* server.h: New gdb_fildes_t typedef.
+	[USE_WIN32API]: Include winsock2.h.
+	(delete_file_handler, add_file_handler): Adjust prototypes.
+	(pfildes): Declare.
+	* utils.c (pfildes): New.
+
+2010-08-27  Pedro Alves  <pedro@codesourcery.com>
+
+	* configure.ac (build_warnings): Add -Wno-char-subscripts.
+	* configure: Regenerate.
+
+2010-08-27  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_unprepare_to_access_memory): Rename to ...
+	(linux_done_accessing_memory): ... this.
+	(linux_target_ops): Adjust.
+	* linux-x86-low.c (x86_insert_point, x86_remove_point): Adjust.
+	* nto-low.c (nto_target_ops): Adjust comment.
+	* server.c (gdb_read_memory, gdb_write_memory): Adjust.
+	* spu-low.c (spu_target_ops): Adjust comment.
+	* target.h (target_ops): Rename unprepare_to_access_memory field
+	to done_accessing_memory.
+	(unprepare_to_access_memory): Rename to ...
+	(done_accessing_memory): ... this.
+
+2010-08-26  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_prepare_to_access_memory): New.
+	(linux_unprepare_to_access_memory): New.
+	(linux_target_ops): Install them.
+	* server.c (read_memory): Rename to ...
+	(gdb_read_memory): ... this.  Use
+	prepare_to_access_memory/prepare_to_access_memory.
+	(write_memory): Rename to ...
+	(gdb_write_memory): ... this.  Use
+	prepare_to_access_memory/prepare_to_access_memory.
+	(handle_search_memory_1): Adjust.
+	(process_serial_event): Adjust.
+	* target.h (struct target_ops): New fields
+	prepare_to_access_memory and unprepare_to_access_memory.
+	(prepare_to_access_memory, unprepare_to_access_memory): New.
+	* linux-x86-low.c (x86_insert_point, x86_remove_point): Use
+	prepare_to_access_memory/prepare_to_access_memory.
+	* nto-low.c (nto_target_ops): Adjust.
+	* spu-low.c (spu_target_ops): Adjust.
+	* win32-low.c (win32_target_ops): Adjust.
+
+2010-08-26  Pedro Alves  <pedro@codesourcery.com>
+
+	* Makefile.in (WARN_CFLAGS): Get it from configure.
+	(WERROR_CFLAGS): New.
+	(INTERNAL_CFLAGS): Add WERROR_CFLAGS.
+	* configure.ac: Introduce --enable-werror, which adds -Werror to
+	the compiler command line.  Enabled by default.  Disable with
+	--disable-werror.  Add -Wdeclaration-after-statement
+	Wpointer-arith and -Wformat-nonliteral to warning flags.
+	* configure: Regenerate.
+
+2010-08-26  Pedro Alves  <pedro@codesourcery.com>
+
+	* mem-break.c [HAVE_MALLOC_H]: Include malloc.h.
+
+2010-08-26  Pedro Alves  <pedro@codesourcery.com>
+
+	* gdbreplay.c (remote_error): New.
+	(gdbchar): New.
+	(expect): Use gdbchar.  Check for error reading from GDB.
+	Clarify sync error output.
+	(play): Check for errors writing to GDB.
+	* linux-low.c (sigchld_handler): Really ignore `write' errors.
+	* remote-utils.c (getpkt): Check for errors writing to the remote
+	descriptor.
+
+2010-08-25  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_wait_1): Move non-debugging code out of
+	`debug_threads' control.
+
+2010-08-25  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_wait_1): Don't set last_status here.
+	* server.c (push_event, queue_stop_reply_callback): Assert we're
+	not pushing a TARGET_WAITKIND_IGNORE event.
+	(start_inferior, start_inferior, attach_inferior, handle_v_cont)
+	(myresume, handle_target_event): Set the thread's last_resume_kind
+	and last_status from the target returned status.
+
+2010-08-25  Pedro Alves  <pedro@codesourcery.com>
+
+	PR threads/10729
+
+	* linux-x86-low.c (update_debug_registers_callback): New.
+	(i386_dr_low_set_addr): Use it.
+	(i386_dr_low_get_addr): New.
+	(i386_dr_low_set_control): Use update_debug_registers_callback.
+	(i386_dr_low_get_control): New.
+	(i386_dr_low_get_status): Adjust.
+	* linux-low.c (linux_stop_lwp): New.
+	* linux-low.h (linux_stop_lwp): Declare.
+
+	* i386-low.c (I386_DR_GET_RW_LEN): Take the dr7 contents as
+	argument instead of a i386_debug_reg_state.
+	(I386_DR_WATCH_HIT): Take the dr6 contents as argument instead of
+	a i386_debug_reg_state.
+	(i386_insert_aligned_watchpoint): Adjust.
+	(i386_remove_aligned_watchpoint): Adjust.
+	(i386_low_stopped_data_address): Read the debug registers from the
+	inferior instead of from the mirrors.
+	* i386-low.h (struct i386_debug_reg_state): Extend comment.
+	(i386_dr_low_get_addr): Declare.
+	(i386_dr_low_get_control): Declare.
+	(i386_dr_low_get_status): Change prototype.
+
+	* win32-i386-low.c (dr_status_mirror, dr_control_mirror): New globals.
+	(i386_dr_low_get_addr): New.
+	(i386_dr_low_get_control): New.
+	(i386_dr_low_get_status): Adjust prototype.  Return
+	dr_status_mirror.
+	(i386_initial_stuff): Clear dr_status_mirror and
+	dr_control_mirror.
+	(i386_get_thread_context): Adjust.
+	(i386_set_thread_context): Adjust.
+	(i386_thread_added): Adjust.
+
+2010-08-24  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.h (linux_thread_area): Delete declaration.
+
+2010-08-11  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* linux-low.c (linux_wait_1): Correctly return the ptid of the child
+	after its termination.
+
+2010-08-09  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (gdb_wants_lwp_stopped): Delete.
+	(gdb_wants_all_stopped): Delete.
+	(linux_wait_1): Don't call them.
+	* server.c (handle_v_cont): Tag all threads as want-stopped.
+	(gdb_wants_thread_stopped): Fix comments.  Tag the thread that
+	stopped as "client-wants-stopped".
+
+2010-07-31  Pedro Alves  <pedro@codesourcery.com>
+
+	* Makefile.in (signals_h): New.
+	(server_h): Depend on it.
+	(server.o): Don't depend on $(signals_def).
+	(signals.o): Depend on $(signals_def).
+
+2010-07-31  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* Makefile.in (signals_def): New.
+	(server_h): Append include/gdb/signals.h and signals_def.
+	(server.o): Append signals_def.
+
+2010-07-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* server.c (handle_target_event): Use target_signal_to_host for
+	resume_info.sig initialization.
+	* target.h (struct thread_resume) <sig>: New comment.
+
+2010-07-20  Ozkan Sezer  <sezeroz@gmail.com>
+
+	* server.c (handle_query): strcpy() the returned string from paddress()
+	instead of sprintf().
+	* utils.c (paddress): Return phex_nz().
+
+2010-07-07  Joel Brobecker  <brobecker@adacore.com>
+
+	* server.c (handle_v_cont): Call mourn_inferior if process
+	just exited.
+	(myresume): Likewise.
+
+2010-07-01  Pedro Alves  <pedro@codesourcery.com>
+
+	Static tracepoints, and integration with UST.
+
+	* configure.ac: Handle --with-ust.  substitute ustlibs and ustinc.
+	* mem-break.c (uninsert_all_breakpoints)
+	(reinsert_all_breakpoints): New.
+	* mem-break.h (reinsert_all_breakpoints, uninsert_all_breakpoints):
+	* tracepoint.c (ust_loaded, helper_thread_id, cmd_buf): New.
+	(gdb_agent_ust_loaded, helper_thread_id)
+	(gdb_agent_helper_thread_id): New macros.
+	(struct ipa_sym_addresses): Add addr_ust_loaded,
+	addr_helper_thread_id, addr_cmd_buf.
+	(symbol_list): Add ust_loaded, helper_thread_id, cmd_buf.
+	(in_process_agent_loaded_ust): New.
+	(write_e_ust_not_loaded): New.
+	(maybe_write_ipa_ust_not_loaded): New.
+	(struct collect_static_trace_data_action): New.
+	(enum tracepoint_type) <static_tracepoint>: New.
+	(struct tracepoint) <handle>: Mention static tracepoints.
+	(struct static_tracepoint_ctx): New.
+	(CMD_BUF_SIZE): New.
+	(add_tracepoint_action): Handle static tracepoint actions.
+	(unprobe_marker_at): New.
+	(clear_installed_tracepoints): Handle static tracepoints.
+	(cmd_qtdp): Handle static tracepoints.
+	(probe_marker_at): New.
+	(cmd_qtstart): Handle static tracepoints.
+	(response_tracepoint): Handle static tracepoints.
+	(cmd_qtfstm, cmd_qtsstm, cmd_qtstmat): New.
+	(handle_tracepoint_query): Handle qTfSTM, qTsSTM and qTSTMat.
+	(get_context_regcache): Handle static tracepoints.
+	(do_action_at_tracepoint): Handle static tracepoint actions.
+	(traceframe_find_block_type): Handle static trace data blocks.
+	(traceframe_read_sdata): New.
+	(download_tracepoints): Download static tracepoint actions.
+	[HAVE_UST] Include ust/ust.h, dlfcn.h, sys/socket.h, and sys/un.h.
+	(GDB_PROBE_NAME): New.
+	(ust_ops): New.
+	(GET_UST_SYM): New.
+	(USTF): New.
+	(dlsym_ust): New.
+	(ust_marker_to_static_tracepoint): New.
+	(gdb_probe): New.
+	(collect_ust_data_at_tracepoint): New.
+	(gdb_ust_probe): New.
+	(UNIX_PATH_MAX, SOCK_DIR): New.
+	(gdb_ust_connect_sync_socket): New.
+	(resume_thread, stop_thread): New.
+	(run_inferior_command): New.
+	(init_named_socket): New.
+	(gdb_ust_socket_init): New.
+	(cstr_to_hexstr): New.
+	(next_st): New.
+	(first_marker, next_marker): New.
+	(response_ust_marker): New.
+	(cmd_qtfstm, cmd_qtsstm): New.
+	(unprobe_marker_at, probe_marker_at): New.
+	(cmd_qtstmat, gdb_ust_thread): New.
+	(gdb_ust_init): New.
+	(initialize_tracepoint_ftlib): Call gdb_ust_init.
+	* linux-amd64-ipa.c [HAVE_UST]: Include ust/processor.h
+	(ST_REGENTRY): New.
+	(x86_64_st_collect_regmap): New.
+	(X86_64_NUM_ST_COLLECT_GREGS): New.
+	(AMD64_RIP_REGNUM): New.
+	(supply_static_tracepoint_registers): New.
+	* linux-i386-ipa.c [HAVE_UST]: Include ust/processor.h
+	(ST_REGENTRY): New.
+	(i386_st_collect_regmap): New.
+	(i386_NUM_ST_COLLECT_GREGS): New.
+	(supply_static_tracepoint_registers): New.
+	* server.c (handle_query): Handle qXfer:statictrace:read.
+	<qSupported>: Report support for StaticTracepoints, and
+	qXfer:statictrace:read features.
+	* server.h (traceframe_read_sdata)
+	(supply_static_tracepoint_registers): Declare.
+	* remote-utils.c (convert_int_to_ascii, hexchars, ishex, tohex)
+	(unpack_varlen_hex): Include in IPA build.
+	* Makefile.in (ustlibs, ustinc): New.
+	(IPA_OBJS): Add remote-utils-ipa.o.
+	($(IPA_LIB)): Link -ldl and -lpthread.
+	(UST_CFLAGS): New.
+	(IPAGENT_CFLAGS): Add UST_CFLAGS.
+	* config.in, configure: Regenerate.
+
+2010-06-20  Ian Lance Taylor  <iant@google.com>
+	    Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-x86-low.c (always_true): Delete.
+	(EMIT_ASM, EMIT_ASM32): Use an uncondition asm jmp instead of
+	trying to fool the compiler with always_true.
+
+2010-06-20  Pedro Alves  <pedro@codesourcery.com>
+
+	* tracepoint.c (condition_true_at_tracepoint): Don't run compiled
+	conditions in gdbserver.
+
+2010-06-19  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* spu-low.c (spu_read_memory): Wrap around local store limit.
+	(spu_write_memory): Likewise.
+
+2010-06-15  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-x86-low.c (amd64_emit_const, amd64_emit_void_call_2)
+	(i386_emit_const, i386_emit_void_call_2): Replace int64_t uses with
+	LONGEST uses.
+	* server.h (struct emit_ops): Replace int64_t uses with LONGEST
+	uses.
+	* tracepoint.c (emit_const, emit_void_call_2): Replace int64_t
+	uses with LONGEST uses.
+
+2010-06-14  Stan Shebs  <stan@codesourcery.com>
+	    Pedro Alves  <pedro@codesourcery.com>
+
+	Bytecode compiler.
+
+	* linux-x86-low.c: Include limits.h.
+	(add_insns): New.
+	(always_true): New.
+	(EMIT_ASM): New.
+	(EMIT_ASM32): New.
+	(amd64_emit_prologue, amd64_emit_epilogue, amd64_emit_add)
+	(amd64_emit_sub, amd64_emit_mul, amd64_emit_lsh)
+	(amd64_emit_rsh_signed, amd64_emit_rsh_unsigned, amd64_emit_ext,
+	(amd64_emit_log_not, amd64_emit_bit_and, amd64_emit_bit_or)
+	(amd64_emit_bit_xor, amd64_emit_bit_not, amd64_emit_equal,
+	(amd64_emit_less_signed, amd64_emit_less_unsigned, amd64_emit_ref,
+	(amd64_emit_if_goto, amd64_emit_goto, amd64_write_goto_address)
+	(amd64_emit_const, amd64_emit_call, amd64_emit_reg)
+	(amd64_emit_pop, amd64_emit_stack_flush, amd64_emit_zero_ext)
+	(amd64_emit_swap, amd64_emit_stack_adjust, amd64_emit_int_call_1)
+	(amd64_emit_void_call_2): New.
+	(amd64_emit_ops): New.
+	(i386_emit_prologue, i386_emit_epilogue, i386_emit_add)
+	(i386_emit_sub,i386_emit_mul, i386_emit_lsh, i386_emit_rsh_signed)
+	(i386_emit_rsh_unsigned, i386_emit_ext, i386_emit_log_not)
+	(i386_emit_bit_and, i386_emit_bit_or, i386_emit_bit_xor)
+	(i386_emit_bit_not, i386_emit_equal, i386_emit_less_signed)
+	(i386_emit_less_unsigned, i386_emit_ref, i386_emit_if_goto)
+	(i386_emit_goto, i386_write_goto_address, i386_emit_const)
+	(i386_emit_call, i386_emit_reg, i386_emit_pop)
+	(i386_emit_stack_flush, i386_emit_zero_ext, i386_emit_swap)
+	(i386_emit_stack_adjust, i386_emit_int_call_1)
+	(i386_emit_void_call_2): New.
+	(i386_emit_ops): New.
+	(x86_emit_ops): New.
+	(the_low_target): Install x86_emit_ops.
+	* server.h (struct emit_ops): New.
+	(get_raw_reg_func_addr): Declare.
+	(current_insn_ptr, emit_error): Declare.
+	* tracepoint.c (get_raw_reg, get_trace_state_variable_value)
+	(set_trace_state_variable_value): New defines.
+	(struct ipa_sym_addresses): New fields addr_get_raw_reg,
+	addr_get_trace_state_variable_value and
+	addr_set_trace_state_variable_value.
+	(symbol_list): New fields for get_raw_reg,
+	get_trace_state_variable_value and set_trace_state_variable_value.
+	(condfn): New typedef.
+	(struct tracepoint): New field `compiled_cond'.
+	(do_action_at_tracepoint): Clear compiled_cond.
+	(get_trace_state_variable_value, set_trace_state_variable_value):
+	Export in the IPA.
+	(condition_true_at_tracepoint): If there's a compiled condition,
+	run that.
+	(current_insn_ptr, emit_error): New globals.
+	(struct bytecode_address): New.
+	(get_raw_reg_func_addr): New.
+	(emit_prologue, emit_epilogue, emit_add, emit_sub, emit_mul)
+	(emit_lsh, emit_rsh_signed, emit_rsh_unsigned, emit_ext)
+	(emit_log_not, emit_bit_and, emit_bit_or, emit_bit_xor)
+	(emit_bit_not, emit_equal, emit_less_signed, emit_less_unsigned)
+	(emit_ref, emit_if_goto, emit_goto, write_goto_address, emit_const)
+	(emit_reg, emit_pop, emit_stack_flush, emit_zero_ext, emit_swap)
+	(emit_stack_adjust, emit_int_call_1, emit_void_call_2): New.
+	(compile_tracepoint_condition, compile_bytecodes): New.
+	* target.h (emit_ops): Forward declare.
+	(struct target_ops): New field emit_ops.
+	(target_emit_ops): New.
+	* linux-amd64-ipa.c (gdb_agent_get_raw_reg): New.
+	* linux-i386-ipa.c (gdb_agent_get_raw_reg): New.
+	* linux-low.c (linux_emit_ops): New.
+	(linux_target_ops): Install it.
+	* linux-low.h (struct linux_target_ops): New field emit_ops.
+
+2010-06-14  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* linux-ppc-low.c (ppc_arch_setup): Use private regcache to test MSR.
+	* linux-s390-low.c (ppc_arch_setup): Use private regcache to test PSW.
+
+2010-06-01  Pedro Alves  <pedro@codesourcery.com>
+	    Stan Shebs  <stan@codesourcery.com>
+
+	* Makefile.in (IPA_DEPFILES, extra_libraries): New.
+	(all): Depend on $(extra_libraries).
+	(install-only): Install the IPA.
+	(IPA_OBJS, IPA_LIB): New.
+	(clean): Remove the IPA lib.
+	(IPAGENT_CFLAGS): New.
+	(tracepoint-ipa.o, utils-ipa.o, remote-utils-ipa.o)
+	(regcache-ipa.o, i386-linux-ipa.o, linux-i386-ipa.o)
+	(linux-amd64-ipa.o, amd64-linux-ipa.o): New rules.
+	* linux-amd64-ipa.c, linux-i386-ipa.c: New files.
+	* configure.ac: Check for atomic builtins support in the compiler.
+	(IPA_DEPFILES, extra_libraries): Define.
+	* configure.srv (ipa_obj): Add description.
+	(ipa_i386_linux_regobj, ipa_amd64_linux_regobj): Define.
+	(i[34567]86-*-linux*): Set ipa_obj.
+	(x86_64-*-linux*): Set ipa_obj.
+	* linux-low.c (stabilizing_threads): New.
+	(supports_fast_tracepoints): New.
+	(linux_detach): Stabilize threads before detaching.
+	(handle_tracepoints): Handle internal tracing breakpoints.  Assert
+	the lwp is either not stabilizing, or is moving out of a jump pad.
+	(linux_fast_tracepoint_collecting): New.
+	(maybe_move_out_of_jump_pad): New.
+	(enqueue_one_deferred_signal): New.
+	(dequeue_one_deferred_signal): New.
+	(linux_wait_for_event_1): If moving out of a jump pad, defer
+	pending signals to later.
+	(linux_stabilize_threads): New.
+	(linux_wait_1): Check if threads need moving out of jump pads, and
+	do it if so.
+	(stuck_in_jump_pad_callback): New.
+	(move_out_of_jump_pad_callback): New.
+	(lwp_running): New.
+	(linux_resume_one_lwp): Handle moving out of jump pads.
+	(linux_set_resume_request): Dequeue deferred signals.
+	(need_step_over_p): Also step over fast tracepoint jumps.
+	(start_step_over): Also uninsert fast tracepoint jumps.
+	(finish_step_over): Also reinsert fast tracepoint jumps.
+	(linux_install_fast_tracepoint_jump): New.
+	(linux_target_ops): Install linux_stabilize_threads and
+	linux_install_fast_tracepoint_jump_pad.
+	* linux-low.h (linux_target_ops) <get_thread_area,
+	install_fast_tracepoint_jump_pad>: New fields.
+	(struct lwp_info) <collecting_fast_tracepoint,
+	pending_signals_to_report, exit_jump_pad_bkpt>: New fields.
+	(linux_get_thread_area): Declare.
+	* linux-x86-low.c (jump_insn): New.
+	(x86_get_thread_area): New.
+	(append_insns): New.
+	(push_opcode): New.
+	(amd64_install_fast_tracepoint_jump_pad): New.
+	(i386_install_fast_tracepoint_jump_pad): New.
+	(x86_install_fast_tracepoint_jump_pad): New.
+	(the_low_target): Install x86_get_thread_area and
+	x86_install_fast_tracepoint_jump_pad.
+	* mem-break.c (set_raw_breakpoint_at): Use read_inferior_memory.
+	(struct fast_tracepoint_jump): New.
+	(fast_tracepoint_jump_insn): New.
+	(fast_tracepoint_jump_shadow): New.
+	(find_fast_tracepoint_jump_at): New.
+	(fast_tracepoint_jump_here): New.
+	(delete_fast_tracepoint_jump): New.
+	(set_fast_tracepoint_jump): New.
+	(uninsert_fast_tracepoint_jumps_at): New.
+	(reinsert_fast_tracepoint_jumps_at): New.
+	(set_breakpoint_at): Use write_inferior_memory.
+	(uninsert_raw_breakpoint): Use write_inferior_memory.
+	(check_mem_read): Mask out fast tracepoint jumps.
+	(check_mem_write): Mask out fast tracepoint jumps.
+	* mem-break.h (struct fast_tracepoint_jump): Forward declare.
+	(set_fast_tracepoint_jump): Declare.
+	(delete_fast_tracepoint_jump)
+	(fast_tracepoint_jump_here, uninsert_fast_tracepoint_jumps_at)
+	(reinsert_fast_tracepoint_jumps_at): Declare.
+	* regcache.c: Don't compile many functions when building the
+	in-process agent library.
+	(init_register_cache) [IN_PROCESS_AGENT]: Don't allow allocating
+	the register buffer in the heap.
+	(free_register_cache): If the register buffer isn't owned by the
+	regcache, don't free it.
+	(set_register_cache) [IN_PROCESS_AGENT]: Don't re-alocate
+	pre-existing register caches.
+	* remote-utils.c (convert_int_to_ascii): Constify `from' parameter
+	type.
+	(convert_ascii_to_int): : Constify `from' parameter type.
+	(decode_M_packet, decode_X_packet): Replace the `to' parameter by
+	a `to_p' pointer to pointer parameter.  If TO_P is NULL, malloc
+	the needed buffer in-place.
+	(relocate_instruction): New.
+	* server.c (handle_query) <qSymbols>: If the target supports
+	tracepoints, give it a chance of looking up symbols.  Report
+	support for fast tracepoints.
+	(handle_status): Stabilize threads.
+	(process_serial_event): Adjust.
+	* server.h (struct fast_tracepoint_jump): Forward declare.
+	(struct process_info) <fast_tracepoint_jumps>: New field.
+	(convert_ascii_to_int, convert_int_to_ascii): Adjust.
+	(decode_X_packet, decode_M_packet): Adjust.
+	(relocate_instruction): Declare.
+	(in_process_agent_loaded): Declare.
+	(tracepoint_look_up_symbols): Declare.
+	(struct fast_tpoint_collect_status): Declare.
+	(fast_tracepoint_collecting): Declare.
+	(force_unlock_trace_buffer): Declare.
+	(handle_tracepoint_bkpts): Declare.
+	(initialize_low_tracepoint)
+	(supply_fast_tracepoint_registers) [IN_PROCESS_AGENT]: Declare.
+	* target.h (struct target_ops) <stabilize_threads,
+	install_fast_tracepoint_jump_pad>: New fields.
+	(stabilize_threads, install_fast_tracepoint_jump_pad): New.
+	* tracepoint.c [HAVE_MALLOC_H]: Include malloc.h.
+	[HAVE_STDINT_H]: Include stdint.h.
+	(trace_debug_1): Rename to ...
+	(trace_vdebug): ... this.
+	(trace_debug): Rename to ...
+	(trace_debug_1): ... this.  Add `level' parameter.
+	(trace_debug): New.
+	(ATTR_USED, ATTR_NOINLINE): New.
+	(IP_AGENT_EXPORT): New.
+	(gdb_tp_heap_buffer, gdb_jump_pad_buffer, gdb_jump_pad_buffer_end)
+	(collecting, gdb_collect, stop_tracing, flush_trace_buffer)
+	(about_to_request_buffer_space, trace_buffer_is_full)
+	(stopping_tracepoint, expr_eval_result, error_tracepoint)
+	(tracepoints, tracing, trace_buffer_ctrl, trace_buffer_ctrl_curr)
+	(trace_buffer_lo, trace_buffer_hi, traceframe_read_count)
+	(traceframe_write_count, traceframes_created)
+	(trace_state_variables)
+	New renaming defines.
+	(struct ipa_sym_addresses): New.
+	(STRINGIZE_1, STRINGIZE, IPA_SYM): New.
+	(symbol_list): New.
+	(ipa_sym_addrs): New.
+	(all_tracepoint_symbols_looked_up): New.
+	(in_process_agent_loaded): New.
+	(write_e_ipa_not_loaded): New.
+	(maybe_write_ipa_not_loaded): New.
+	(tracepoint_look_up_symbols): New.
+	(debug_threads) [IN_PROCESS_AGENT]: New.
+	(read_inferior_memory) [IN_PROCESS_AGENT]: New.
+	(UNKNOWN_SIDE_EFFECTS): New.
+	(stop_tracing): New.
+	(flush_trace_buffer): New.
+	(stop_tracing_bkpt): New.
+	(flush_trace_buffer_bkpt): New.
+	(read_inferior_integer): New.
+	(read_inferior_uinteger): New.
+	(read_inferior_data_pointer): New.
+	(write_inferior_data_pointer): New.
+	(write_inferior_integer): New.
+	(write_inferior_uinteger): New.
+	(struct collect_static_trace_data_action): Delete.
+	(enum tracepoint_type): New.
+	(struct tracepoint) <type>: New field `type'.
+	<actions_str, step_actions, step_actions_str>: Only include in
+	GDBserver.
+	<orig_size, obj_addr_on_target, adjusted_insn_addr>
+	<adjusted_insn_addr_end, jump_pad, jump_pad_end>: New fields.
+	(tracepoints): Use IP_AGENT_EXPORT.
+	(last_tracepoint): Don't include in the IPA.
+	(stopping_tracepoint): Use IP_AGENT_EXPORT.
+	(trace_buffer_is_full): Use IP_AGENT_EXPORT.
+	(alloced_trace_state_variables): New.
+	(trace_state_variables): Use IP_AGENT_EXPORT.
+	(traceframe_t): Delete unused variable.
+	(circular_trace_buffer): Don't include in the IPA.
+	(trace_buffer_start): Delete.
+	(struct trace_buffer_control): New.
+	(trace_buffer_free): Delete.
+	(struct ipa_trace_buffer_control): New.
+	(GDBSERVER_FLUSH_COUNT_MASK, GDBSERVER_FLUSH_COUNT_MASK_PREV)
+	(GDBSERVER_FLUSH_COUNT_MASK_CURR, GDBSERVER_UPDATED_FLUSH_COUNT_BIT):
+	New.
+	(trace_buffer_ctrl): New.
+	(TRACE_BUFFER_CTRL_CURR): New.
+	(trace_buffer_start, trace_buffer_free, trace_buffer_end_free):
+	Reimplement as macros.
+	(trace_buffer_wrap): Delete.
+	(traceframe_write_count, traceframe_read_count)
+	(traceframes_created, tracing): Use IP_AGENT_EXPORT.
+	(struct tracepoint_hit_ctx) <type>: New field.
+	(struct fast_tracepoint_ctx): New.
+	(memory_barrier): New.
+	(cmpxchg): New.
+	(record_tracepoint_error): Update atomically in the IPA.
+	(clear_inferior_trace_buffer): New.
+	(about_to_request_buffer_space): New.
+	(trace_buffer_alloc): Handle GDBserver and inferior simulatenous
+	updating the same buffer.
+	(add_tracepoint): Default the tracepoint's type to trap
+	tracepoint, and orig_size to -1.
+	(get_trace_state_variable) [IN_PROCESS_AGENT]: Handle allocated
+	internal variables.
+	(create_trace_state_variable): New parameter `gdb'.  Handle it.
+	(clear_installed_tracepoints): Clear fast tracepoint jumps.
+	(cmd_qtdp): Handle fast tracepoints.
+	(cmd_qtdv): Adjust.
+	(max_jump_pad_size): New.
+	(gdb_jump_pad_head): New.
+	(get_jump_space_head): New.
+	(claim_jump_space): New.
+	(sort_tracepoints): New.
+	(MAX_JUMP_SIZE): New.
+	(cmd_qtstart): Handle fast tracepoints.  Sync tracepoints with the
+	IPA.
+	(stop_tracing) [IN_PROCESS_AGENT]: Don't include the tdisconnected
+	support.  Upload fast traceframes, and delete internal IPA
+	breakpoints.
+	(stop_tracing_handler): New.
+	(flush_trace_buffer_handler): New.
+	(cmd_qtstop): Upload fast tracepoints.
+	(response_tracepoint): Handle fast tracepoints.
+	(tracepoint_finished_step): Upload fast traceframes.  Set the
+	tracepoint hit context's tracepoint type.
+	(handle_tracepoint_bkpts): New.
+	(tracepoint_was_hit): Set the tracepoint hit context's tracepoint
+	type.  Add comment about fast tracepoints.
+	(collect_data_at_tracepoint) [IN_PROCESS_AGENT]: Don't access the
+	non-existing action_str field.
+	(get_context_regcache): Handle fast tracepoints.
+	(do_action_at_tracepoint) [!IN_PROCESS_AGENT]: Don't write the PC
+	to the regcache.
+	(fast_tracepoint_from_jump_pad_address): New.
+	(fast_tracepoint_from_ipa_tpoint_address): New.
+	(collecting_t): New.
+	(force_unlock_trace_buffer): New.
+	(fast_tracepoint_collecting): New.
+	(collecting): New.
+	(gdb_collect): New.
+	(write_inferior_data_ptr): New.
+	(target_tp_heap): New.
+	(target_malloc): New.
+	(download_agent_expr): New.
+	(UALIGN): New.
+	(download_tracepoints): New.
+	(download_trace_state_variables): New.
+	(upload_fast_traceframes): New.
+	(IPA_FIRST_TRACEFRAME): New.
+	(IPA_NEXT_TRACEFRAME_1): New.
+	(IPA_NEXT_TRACEFRAME): New.
+	[IN_PROCESS_AGENT]: Include sys/mman.h and fcntl.h.
+	[IN_PROCESS_AGENT] (gdb_tp_heap_buffer, gdb_jump_pad_buffer)
+	(gdb_jump_pad_buffer_end): New.
+	[IN_PROCESS_AGENT] (initialize_tracepoint_ftlib): New.
+	(initialize_tracepoint): Adjust.
+	[IN_PROCESS_AGENT]: Allocate the IPA heap, and jump pad scratch
+	buffer.  Initialize the low module.
+	* utils.c (PREFIX, TOOLNAME): New.
+	(malloc_failure): Use PREFIX.
+	(error): In the IPA, an error causes an exit.
+	(fatal, warning): Use PREFIX.
+	(internal_error): Use TOOLNAME.
+	(NUMCELLS): Increase to 10.
+	* configure, config.in: Regenerate.
+
+2010-06-01  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (handle_query) <qSupported>: Do two passes over the
+	qSupported string to avoid nesting strtok.
+
+2010-05-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* Makefile.in (SFILES): Add $(srcdir)/proc-service.list.
+	(CDEPS): New.
+	* configure.ac (RDYNAMIC): New AC_MSG_CHECKING wrapping.  Test also
+	-Wl,--dynamic-list.
+	* configure: Regenerate.
+	* proc-service.list: New.
+
+2010-05-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* linux-low.c (linux_core_of_thread): Fix crash on invalid CONTENT.
+	New comment.
+
+2010-05-26  Ozkan Sezer  <sezeroz@gmail.com>
+
+	* gdbreplay.c (remote_open): Check error return from socket() call by
+	its equality to -1 not by it being negative.
+	* remote-utils.c (remote_open): Likewise.
+
+2010-05-23  Pedro Alves  <pedro@codesourcery.com>
+
+	* config.h: Regenerate.
+
+2010-05-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+	* linux-m68k-low.c (ps_get_thread_area): Don't define if kernel
+	doesn't provide PTRACE_GET_THREAD_AREA.
+
+2010-05-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+	* linux-m68k-low.c: Include <asm/ptrace.h>
+	(ps_get_thread_area): Implement.
+
+2010-05-03  Doug Evans  <dje@google.com>
+
+	* event-loop.c (struct callback_event): New struct.
+	(callback_list): New global.
+	(append_callback_event, delete_callback_event): New functions.
+	(process_callback): New function.
+	(start_event_loop): Call it.
+	* remote-utils.c (NOT_SCHEDULED): Define.
+	(readchar_buf, readchar_bufcnt, readchar_bufp): New static globals,
+	moved out of readchar.
+	(readchar): Rewrite.  Call reschedule before returning.
+	(reset_readchar): New function.
+	(remote_close): Call it.
+	(process_remaining, reschedule): New functions.
+	* server.h (callback_handler_func): New typedef.
+	(append_callback_event, delete_callback_event): Declare.
+
+2010-05-03  Pedro Alves  <pedro@codesourcery.com>
+
+	* proc-service.c (ps_pglobal_lookup): Use
+	thread_db_look_up_one_symbol.
+	* remote-utils.c (look_up_one_symbol): Add new `may_ask_gdb'
+	parameter.  Use it instead of all_symbols_looked_up.
+	* server.h (struct process_info) <all_symbols_looked_up>: Delete
+	field.
+	(all_symbols_looked_up): Don't declare.
+	(look_up_one_symbol): Add new `may_ask_gdb' parameter.
+	* thread-db.c (struct thread_db) <all_symbols_looked_up>: New
+	field.
+	(thread_db_look_up_symbols): Adjust call to look_up_one_symbol.
+	Set all_symbols_looked_up here.
+	(thread_db_look_up_one_symbol): New.
+	(thread_db_get_tls_address): Adjust.
+	(thread_db_load_search, try_thread_db_load_1): Always allocate the
+	thread_db object on the heap, and tentatively set it in the
+	process structure.
+	(thread_db_init): Don't set all_symbols_looked_up here.
+	* linux-low.h (thread_db_look_up_one_symbol): Declare.
+
+2010-05-03  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_kill, linux_detach): Adjust.
+	(status_pending_p_callback): Remove redundant statement.  Check
+	for !TARGET_WAITIKIND_IGNORE, instead of
+	TARGET_WAITKIND_STOPPED.
+	(handle_tracepoints): Make sure LWP is locked.  Adjust.
+	(linux_wait_for_event_1): Adjust.
+	(linux_cancel_breakpoints): New.
+	(unsuspend_one_lwp): New.
+	(unsuspend_all_lwps): New.
+	(linux_wait_1): If finishing a step-over, unsuspend all lwps.
+	(send_sigstop_callback): Change return type to int, add new
+	`except' parameter and handle it.
+	(suspend_and_send_sigstop_callback): New.
+	(stop_all_lwps): Add new `suspend' and `expect' parameters, and
+	pass them down.  If SUSPEND, also increment the lwp's suspend
+	count.
+	(linux_resume_one_lwp): Add notice about resuming a suspended LWP.
+	(need_step_over_p): Don't consider suspended LWPs.
+	(start_step_over): Adjust.
+	(proceed_one_lwp): Change return type to int, add new `except'
+	parameter and handle it.
+	(unsuspend_and_proceed_one_lwp): New.
+	(proceed_all_lwps): Use find_inferior instead of
+	for_each_inferior.
+	(unstop_all_lwps): Add `unsuspend' parameter.  If UNSUSPEND, them
+	also decrement the suspend count of LWPs.  Pass `except' down,
+	instead of hacking its suspend count.
+	(linux_pause_all): Add `freeze' parameter.  Adjust.
+	(linux_unpause_all): New.
+	(linux_target_ops): Install linux_unpause_all.
+	* server.c (handle_status): Adjust.
+	* target.h (struct target_ops): New fields `unpause_all' and
+	`cancel_breakpoints'.  Add new parameter to `pause_all'.
+	(pause_all): Add new `freeze' parameter.
+	(unpause_all): New.
+	(cancel_breakpoints): New.
+	* tracepoint.c (clear_installed_tracepoints): Pause threads, and
+	cancel breakpoints.
+	(cmd_qtstart): Pause threads.
+	(stop_tracing): Pause threads, and cancel breakpoints.
+	* win32-low.c (win32_target_ops): Adjust.
+
+2010-05-03  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_wait_for_event_1): Move passing the signal to
+	the inferior right away from here...
+	(linux_wait_1): ... to here, and adjust to check the thread's
+	last_resume_kind instead of the lwp's step or stop_expected flags.
+
+2010-05-02  Pedro Alves  <pedro@codesourcery.com>
+
+	* README: Use consistent `GDB' and `GDBserver' spellings.
+
+2010-05-02  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_kill_one_lwp): Assume the lwp is stopped.
+	(linux_kill): Stop all lwps here.  Don't delete the main lwp here.
+	(linux_detach_one_lwp): Assume the lwp is stopped.
+	(any_thread_of): Delete.
+	(linux_detach): Stop all lwps here.  Don't blindly delete all
+	breakpoints.
+	(delete_lwp_callback): New.
+	(linux_mourn): Delete all lwps of the process that is gone.
+	(linux_wait_1): Don't delete the last lwp of the process here.
+	* mem-break.h (mark_breakpoints_out): Declare.
+	* mem-break.c (mark_breakpoints_out): New.
+	(free_all_breakpoints): Use it.
+	* server.c (handle_target_event): If the process is gone, mark
+	breakpoints out.
+	* thread-db.c (struct thread_db) <create_bp>: New field.
+	(thread_db_enable_reporting): Fix prototype.  Store a thread event
+	breakpoint reference in the thread_db struct.
+	(thread_db_load_search): Clear the thread_db object.
+	(try_thread_db_load_1): Ditto.
+	(switch_to_process): New.
+	(disable_thread_event_reporting): Use it.
+	(remove_thread_event_breakpoints): New.
+	(thread_db_detach, thread_db_mourn): Use it.
+
+2010-05-01  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_enable_event_reporting): New.
+	(linux_wait_for_event_1, handle_extended_wait): Use it.
+
+2010-04-30  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_kill_one_lwp, linux_kill)
+	(linux_detach_one_lwp): Adjust to send_sigstop interface change.
+	(send_sigstop): Take an lwp_info as parameter instead.  Queue a
+	SIGSTOP even if the LWP is stopped.
+	(send_sigstop_callback): New.
+	(stop_all_lwps): Use send_sigstop_callback instead.
+	(linux_resume_one_thread): Adjust.
+	(proceed_one_lwp): Still proceed an LWP that the client has
+	requested to stop, if we haven't reported it as stopped yet.  Make
+	sure that LWPs the client want stopped, have a pending SIGSTOP.
+
+2010-04-26  Doug Evans  <dje@google.com>
+
+	* server.c (handle_general_set): Make static.
+
+	* remote-utils.c (putpkt_binary_1): Call readchar instead of read.
+	Print received char after testing for error/eof instead of before.
+	(input_interrupt): Tweak comment.
+
+2010-04-23  Doug Evans  <dje@google.com>
+
+	* server.c (start_inferior): Print inferior argv if --debug.
+
+2010-04-21  Aleksandar Ristovski  <aristovski@qnx.com>
+
+	* Makefile.in (nto_low_h nto-low.o nto-x86-low.o): New dependency lists.
+	* nto-x86-low.c: Include server.h
+
+2010-04-20  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* win32-i386-low.c: Use __x86_64__ macro instead of __x86_64 to
+	be consistent with other sources of this directory.
+	(init_registers_amd64): Correct name of source file of this function
+	in the comment.
+
+2010-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* configure.srv (x86_64-*-mingw*): New configuration for Windows
+	64-bit executables.
+
+2010-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* win32-i386-low.c: Add 64-bit support.
+	(CONTEXT_EXTENDED_REGISTERS): Set macro to zero if not exisiting.
+	(init_registers_amd64): Declare.
+	(mappings): Add 64-bit version of array.
+	(init_windows_x86): New function.
+	(the_low_target): Change init_arch field to init_windows_x86.
+
+2010-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* win32-low.c: Adapt to support also 64-bit architecture.
+	(child_xfer_memory): Use uintptr_t type for local variable `addr'.
+	(get_image_name): Use SIZE_T type for local variable `done'.
+	(psapi_get_dll_name): Use LPVOID type for parameter `BaseAddress'.
+	(toolhelp_get_dll_name): Idem.
+	(handle_load_dll): Use CORE_ADDR type for local variable `load_addr'.
+	Use uintptr_t typecast to avoid warning.
+	(handle_unload_dll): Use uintptr_t typecast to avoid warning.
+	(handle_exception): Use phex_nz to avoid warning.
+	(win32_wait): Remove unused local variable `process'.
+
+2010-04-19  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* configure.srv (srv_amd64_regobj): Replace `x86-64-avx.o' by
+	`amd64-avx.o'.
+
+2010-04-17  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* configure.ac: Use `ws2_32' library for srv_mingw.
+	* configure: Regenerate.
+	* gdbreplay.c: Include winsock2.h instead of winsock.h.
+	* remote-utils.c: Likewise.
+
+2010-04-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* linux-x86-low.c (xmltarget_amd64_linux_no_xml): Define only
+	if __x86_64__ is defined.
+
+2010-04-16  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* configure: Regenerate.
+
+2010-04-16  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* server.c (handle_query): Handle 'qGetTIBAddr' query.
+	* target.h (target_ops): New get_tib_address field.
+	* win32-low.h (win32_thread_info): Add thread_local_base field.
+	* win32-low.c (child_add_thread): Add tlb argument.
+	Set thread_local_base field to TLB.
+	(get_child_debug_event): Adapt to child_add_thread change.
+	(win32_get_tib_address): New function.
+	(win32_target_ops): Set get_tib_address field to
+	win32_get_tib_address.
+	* linux-low.c (linux_target_ops): Set get_tib_address field to NULL.
+
+2010-04-12  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_mourn): Also remove the process.
+	* server.c (handle_target_event): Don't remove the process here.
+	* nto-low.c (nto_mourn): New.
+	(nto_target_ops): Install it.
+	* spu-low.c (spu_mourn): New.
+	(spu_target_ops): Install it.
+	* win32-low.c (win32_mourn): New.
+	(win32_target_ops): Install it.
+
+2010-04-12  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.h (buffer_xml_printf): Remove redundant `;'.
+
+2010-04-12  Pedro Alves  <pedro@codesourcery.com>
+
+	* regcache.c (set_register_cache): Invalidate regcaches before
+	changing the register cache layout.
+	(regcache_invalidate_one): Allow a NULL regcache.
+	* linux-x86-low.c (x86_linux_update_xmltarget): Invalidate
+	regcaches before changing the register cache layout or the target
+	regsets.
+
+2010-04-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* linux-x86-low.c (x86_linux_update_xmltarget): Avoid unused
+	variable warning on Linux/x86-64.
+
+2010-04-11  Pedro Alves  <pedro@codesourcery.com>
+
+	GDBserver disconnected tracing support.
+
+	* linux-low.c (linux_remove_process): Delete.
+	(add_lwp): Don't set last_resume_kind here.
+	(linux_kill): Use `mourn'.
+	(linux_detach): Use `thread_db_detach', and `mourn'.
+	(linux_mourn): New.
+	(linux_attach_lwp_1): Adjust comment.
+	(linux_attach): last_resume_kind moved the thread_info; adjust.
+	(status_pending_p_callback): Adjust.
+	(linux_wait_for_event_1): Adjust.
+	(count_events_callback, select_singlestep_lwp_callback)
+	(select_event_lwp_callback, cancel_breakpoints_callback)
+	(db_wants_lwp_stopped, linux_wait_1, need_step_over_p)
+	(proceed_one_lwp): Adjust.
+	(linux_async): Add debug output.
+	(linux_thread_stopped): New.
+	(linux_pause_all): New.
+	(linux_target_ops): Install linux_mourn, linux_thread_stopped and
+	linux_pause_all.
+	* linux-low.h (struct lwp_info): Delete last_resume_kind field.
+	(thread_db_free): Delete declaration.
+	(thread_db_detach, thread_db_mourn): Declare.
+	* thread-db.c (thread_db_init): Use thread_db_mourn.
+	(thread_db_free): Delete, split in two.
+	(disable_thread_event_reporting): New.
+	(thread_db_detach): New.
+	(thread_db_mourn): New.
+
+	* server.h (struct thread_info) <last_resume_kind>: New field.
+	<attached>: Add comment.
+	<gdb_detached>: New field.
+	(handler_func): Change return type to int.
+	(handle_serial_event, handle_target_event): Ditto.
+	(gdb_connected): Declare.
+	(tracing): Delete.
+	(disconnected_tracing): Declare.
+	(stop_tracing): Declare.
+
+	* server.c (handle_query) <qSupported>: Report support for
+	disconnected tracing.
+	(queue_stop_reply_callback): Account for running threads.
+	(gdb_wants_thread_stopped): New.
+	(gdb_wants_all_threads_stopped): New.
+	(gdb_reattached_process): New.
+	(handle_status): Clear the `gdb_detached' flag of all processes.
+	In all-stop, stop all threads.
+	(main): Be sure to leave tfind mode.  Handle disconnected tracing.
+	(process_serial_event): If the remote connection breaks, or if an
+	exit was forced with "monitor exit", force an event loop exit.
+	Handle disconnected tracing on detach.
+	(handle_serial_event): Adjust.
+	(handle_target_event): If GDB isn't connected, forward events back
+	to the inferior, unless the last process exited, in which case,
+	exit gdbserver.  Adjust interface.
+
+	* remote-utils.c (remote_open): Don't block in accept.  Instead
+	register an event loop source on the listen socket file
+	descriptor.  Refactor bits into ...
+	(listen_desc): ... this new global.
+	(gdb_connected): ... this new function.
+	(enable_async_notification): ... this new function.
+	(handle_accept_event): ... this new function.
+	(remote_close): Clear remote_desc.
+
+	* inferiors.c (add_thread): Set the new thread's last_resume_kind.
+
+	* target.h (struct target_ops) <mourn, thread_stopped, pause_all>:
+	New fields.
+	(mourn_inferior): Define.
+	(target_process_qsupported): Avoid the dangling else problem.
+	(thread_stopped): Define.
+	(pause_all): Define.
+	(target_waitstatus_to_string): Declare.
+	* target.c (target_waitstatus_to_string): New.
+
+	* tracepoint.c (tracing): Make extern.
+	(disconnected_tracing): New.
+	(stop_tracing): Make extern.  Handle tracing stops due to GDB
+	disconnecting.
+	(cmd_qtdisconnected): New.
+	(cmd_qtstatus): Report disconnected tracing status in trace reply.
+	(handle_tracepoint_general_set): Handle QTDisconnected.
+
+	* event-loop.c (event_handler_func): Change return type to int.
+	(process_event): Bail out if the event handler wants the event
+	loop to stop.
+	(handle_file_event): Ditto.
+	(start_event_loop): Bail out if the event handler wants the event
+	loop to stop.
+
+	* nto-low.c (nto_target_ops): Adjust.
+	* spu-low.c (spu_wait): Don't remove the process here.
+	(spu_target_ops): Adjust.
+	* win32-low.c (win32_wait): Don't remove the process here.
+	(win32_target_ops): Adjust.
+
+2010-04-11  Pedro Alves  <pedro@codesourcery.com>
+
+	* regcache.c (realloc_register_cache): Invalidate inferior's
+	regcache before recreating it.
+
+2010-04-09  Pedro Alves  <pedro@codesourcery.com>
+
+	* tracepoint.c (cmd_qtstatus): Report trace buffer circularity.
+
+2010-04-09  Stan Shebs  <stan@codesourcery.com>
+	    Pedro Alves  <pedro@codesourcery.com>
+
+	* server.h (LONGEST): New.
+	(struct thread_info) <while_stepping>: New field.
+	(unpack_varlen_hex, xrealloc, pulongest, plongest, phex_nz):
+	Declare.
+	(initialize_tracepoint, handle_tracepoint_general_set)
+	(handle_tracepoint_query, tracepoint_finished_step)
+	(tracepoint_was_hit, release_while_stepping_state_list):
+	(current_traceframe): Declare.
+	* server.c (handle_general_set): Handle tracepoint packets.
+	(read_memory): New.
+	(write_memory): New.
+	(handle_search_memory_1): Use read_memory.
+	(handle_query): Report support for conditional tracepoints, trace
+	state variables, and tracepoint sources.  Handle tracepoint
+	queries.
+	(main): Initialize the tracepoints module.
+	(process_serial_event): Handle traceframe reads/writes.
+
+	* linux-low.c (handle_tracepoints): New.
+	(linux_wait_1): Call it.
+	(linux_resume_one_lwp): Handle while-stepping.
+	(linux_supports_tracepoints, linux_read_pc, linux_write_pc): New.
+	(linux_target_ops): Install them.
+	* linux-low.h (struct linux_target_ops) <supports_tracepoints>:
+	New field.
+	* linux-x86-low.c (x86_supports_tracepoints): New.
+	(the_low_target). Install it.
+
+	* mem-break.h (delete_breakpoint): Declare.
+	* mem-break.c (delete_breakpoint): Make external.
+
+	* target.h (struct target_ops): Add `supports_tracepoints',
+	`read_pc', and `write_pc' fields.
+	(target_supports_tracepoints): Define.
+	* utils.c (xrealloc, decimal2str, pulongest, plongest, thirty_two)
+	(phex_nz): New.
+
+	* regcache.h (struct regcache) <registers_owned>: New field.
+	(init_register_cache, regcache_cpy): Declare.
+	(regcache_read_pc, regcache_write_pc): Declare.
+	(register_cache_size): Declare.
+	(supply_regblock): Declare.
+	* regcache.c (init_register_cache): New.
+	(new_register_cache): Use it.
+	(regcache_cpy): New.
+	(register_cache_size): New.
+	(supply_regblock): New.
+	(regcache_read_pc, regcache_write_pc): New.
+
+	* tracepoint.c: New.
+
+	* Makefile.in (OBS): Add tracepoint.o.
+	(tracepoint.o): New rule.
+
+2010-04-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Makefile.in (clean): Also remove i386-mmx.c i386-mmx-linux.c.
+	(i386-mmx.o): New.
+	(i386-mmx.c): Likewise.
+	(i386-mmx-linux.o): Likewise.
+	(i386-mmx-linux.c): Likewise.
+
+	* configure.srv (srv_i386_regobj): Add i386-mmx.o.
+	(srv_i386_linux_regobj): Add i386-mmx-linux.o.
+	(srv_i386_xmlfiles): Add i386/i386-mmx.xml.
+	(srv_i386_linux_xmlfiles): Add i386/i386-mmx-linux.xml.
+
+	* linux-x86-low.c (init_registers_i386_mmx_linux): New.
+	(x86_linux_update_xmltarget): Call init_registers_i386_mmx_linux
+	and return if ptrace PTRACE_GETFPXREGS failed in 32bit.
+
+2010-04-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Makefile.in (clean): Updated.
+	(i386-avx.o): New.
+	(i386-avx.c): Likewise.
+	(i386-avx-linux.o): Likewise.
+	(i386-avx-linux.c): Likewise.
+	(amd64-avx.o): Likewise.
+	(amd64-avx.c): Likewise.
+	(amd64-avx-linux.o): Likewise.
+	(amd64-avx-linux.c): Likewise.
+
+	* configure.srv (srv_i386_regobj): Add i386-avx.o.
+	(srv_i386_linux_regobj): Add i386-avx-linux.o.
+	(srv_amd64_regobj): Add amd64-avx.o.
+	(srv_amd64_linux_regobj): Add amd64-avx-linux.o.
+	(srv_i386_32bit_xmlfiles): Add i386/32bit-avx.xml.
+	(srv_i386_64bit_xmlfiles): Add i386/64bit-avx.xml.
+	(srv_i386_xmlfiles): Add i386/i386-avx.xml.
+	(srv_amd64_xmlfiles): Add i386/amd64-avx.xml.
+	(srv_i386_linux_xmlfiles): Add i386/i386-avx-linux.xml.
+	(srv_amd64_linux_xmlfiles): Add i386/amd64-avx-linux.xml.
+
+	* i387-fp.c: Include "i386-xstate.h".
+	(i387_xsave): New.
+	(i387_cache_to_xsave): Likewise.
+	(i387_xsave_to_cache): Likewise.
+	(x86_xcr0): Likewise.
+
+	* i387-fp.h (i387_cache_to_xsave): Likewise.
+	(i387_xsave_to_cache): Likewise.
+	(x86_xcr0): Likewise.
+
+	* linux-arm-low.c (target_regsets): Initialize nt_type to 0.
+	* linux-crisv32-low.c (target_regsets): Likewise.
+	* linux-m68k-low.c (target_regsets): Likewise.
+	* linux-mips-low.c (target_regsets): Likewise.
+	* linux-ppc-low.c (target_regsets): Likewise.
+	* linux-s390-low.c (target_regsets): Likewise.
+	* linux-sh-low.c (target_regsets): Likewise.
+	* linux-sparc-low.c (target_regsets): Likewise.
+	* linux-xtensa-low.c (target_regsets): Likewise.
+
+	* linux-low.c: Include <sys/uio.h>.
+	(regsets_fetch_inferior_registers): Support nt_type.
+	(regsets_store_inferior_registers): Likewise.
+	(linux_process_qsupported): New.
+	(linux_target_ops): Add linux_process_qsupported.
+
+	* linux-low.h (regset_info): Add nt_type.
+	(linux_target_ops): Add process_qsupported.
+
+	* linux-x86-low.c: Include "i386-xstate.h", "elf/common.h"
+	and <sys/uio.h>.
+	(init_registers_i386_avx_linux): New.
+	(init_registers_amd64_avx_linux): Likewise.
+	(xmltarget_i386_linux_no_xml): Likewise.
+	(xmltarget_amd64_linux_no_xml): Likewise.
+	(PTRACE_GETREGSET): Likewise.
+	(PTRACE_SETREGSET): Likewise.
+	(x86_fill_xstateregset): Likewise.
+	(x86_store_xstateregset): Likewise.
+	(use_xml): Likewise.
+	(x86_linux_update_xmltarget): Likewise.
+	(x86_linux_process_qsupported): Likewise.
+	(target_regsets): Add NT_X86_XSTATE entry and Initialize nt_type.
+	(x86_arch_setup): Don't call init_registers_amd64_linux nor
+	init_registers_i386_linux here.  Call
+	x86_linux_update_xmltarget.
+	(the_low_target): Add x86_linux_process_qsupported.
+
+	* server.c (handle_query): Call target_process_qsupported.
+
+	* target.h (target_ops): Add process_qsupported.
+	(target_process_qsupported): New.
+
+2010-04-03  Pedro Alves  <pedro@codesourcery.com>
+
+	* inferiors.c (add_thread): Set last_status kind to
+	TARGET_WAITKIND_IGNORE.
+	* linux-low.c (cancel_breakpoint): Remove unnecessary regcache
+	fetch.  Use ptid_of.  Avoid unnecessary get_lwp_thread calls.
+	(linux_wait_1): Move `thread' local definition to block that uses
+	it.  Don't NULL initialize `event_child'.
+	(linux_resume_one_thread): Avoid unnecessary get_lwp_thread calls.
+	Alway set the thread's last_status to TARGET_WAITKIND_IGNORE.
+	* linux-x86-low.c (x86_breakpoint_at): Read raw memory.
+
+2010-04-01  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (get_stop_pc): Don't adjust the PC if stopped with
+	an extended waitstatus, or by a watchpoint.
+	(cancel_breakpoints_callback): Don't cancel a breakpoint if the
+	thread was stepping or has been stopped by a watchpoint.
+
+2010-04-01  Pedro Alves  <pedro@codesourcery.com>
+
+	* mem-break.c (struct raw_breakpoint): New field shlib_disabled.
+	(set_gdb_breakpoint_at): If GDB is inserting a breakpoint on top
+	of another, then delete the previous, and validate all
+	breakpoints.
+	(validate_inserted_breakpoint): New.
+	(delete_disabled_breakpoints): New.
+	(validate_breakpoints): New.
+	(check_mem_read): Validate breakpoints before trusting their
+	shadow.  Delete disabled breakpoints.
+	(check_mem_write): Validate breakpoints before trusting they
+	should be inserted.  Delete disabled breakpoints.
+	* mem-break.h (validate_breakpoints):
+	* server.c (handle_query): Validate breakpoints when we see a
+	qSymbol query.
+
+2010-04-01  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_wait_1): Avoid setting need_step_over is
+	there's a GDB breakpoint at stop_pc.  Always report a trap to GDB
+	if we could tell there's a GDB breakpoint at stop_pc.
+	(need_step_over_p): Don't do a step over if we find a GDB
+	breakpoint at the resume PC.
+
+	* mem-break.c (struct raw_breakpoint): New.
+	(enum bkpt_type): New type `gdb_breakpoint'.
+	(struct breakpoint): Delete the `PC', `old_data' and `inserted'
+	fields.  New field `raw'.
+	(find_raw_breakpoint_at): New.
+	(set_raw_breakpoint_at): Handle refcounting.  Create a raw
+	breakpoint instead.
+	(set_breakpoint_at): Adjust.
+	(delete_raw_breakpoint): New.
+	(release_breakpoint): New.
+	(delete_breakpoint): Rename to...
+	(delete_breakpoint_1): ... this.  Add proc parameter.  Use
+	release_breakpoint.  Return ENOENT.
+	(delete_breakpoint): Reimplement.
+	(find_breakpoint_at): Delete.
+	(find_gdb_breakpoint_at): New.
+	(delete_breakpoint_at): Delete.
+	(set_gdb_breakpoint_at): New.
+	(delete_gdb_breakpoint_at): New.
+	(gdb_breakpoint_here): New.
+	(set_reinsert_breakpoint): Use release_breakpoint.
+	(uninsert_breakpoint): Rename to ...
+	(uninsert_raw_breakpoint): ... this.
+	(uninsert_breakpoints_at): Adjust to handle raw breakpoints.
+	(reinsert_raw_breakpoint): Change parameter type to
+	raw_breakpoint.
+	(reinsert_breakpoints_at): Adjust to handle raw breakpoints
+	instead.
+	(check_breakpoints): Adjust.  Use release_breakpoint.
+	(breakpoint_here): Rewrite using find_raw_breakpoint_at.
+	(breakpoint_inserted_here): Ditto.
+	(check_mem_read): Adjust to iterate over raw breakpoints instead.
+	Don't trust the breakpoint's shadow if it is not inserted.
+	(check_mem_write): Adjust to iterate over raw breakpoints instead.
+	(delete_all_breakpoints): Adjust.
+	(free_all_breakpoints): Mark all breakpoints as uninserted, and
+	use delete_breakpoint_1.
+
+	* mem-break.h (breakpoints_supported): Delete declaration.
+	(set_gdb_breakpoint_at): Declare.
+	(gdb_breakpoint_here): Declare.
+	(delete_breakpoint_at): Delete.
+	(delete_gdb_breakpoint_at): Declare.
+
+	* server.h (struct raw_breakpoint): Forward declare.
+	(struct process_info): New field `raw_breakpoints'.
+
+	* linux-x86-low.c (x86_insert_point, x86_remote_point): Handle Z0
+	breakpoints.
+
+2010-03-24  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (status_pending_p_callback): Fix comment.
+	(linux_wait_for_event_1): Move most of the internal breakpoint
+	handling from here...
+	(linux_wait_1): ... to here.
+	(count_events_callback): New.
+	(select_singlestep_lwp_callback): New.
+	(select_event_lwp_callback): New.
+	(cancel_breakpoints_callback): New.
+	(select_event_lwp): New.
+	(linux_wait_1): Simplify internal breakpoint handling.  Give equal
+	priority to all LWPs that have had events that should be reported
+	to the client.  Cancel breakpoints when about to reporting the
+	event to the client, not while stopping lwps.  No longer cancel
+	finished single-steps here.
+	(cancel_finished_single_step): Delete.
+	(cancel_finished_single_steps): Delete.
+
+2010-03-24  Pedro Alves  <pedro@codesourcery.com>
+
+	* mem-break.c (enum bkpt_type): New.
+	(struct breakpoint): New field `type'.
+	(set_breakpoint_at): Change return type to struct breakpoint
+	pointer.  Set type to `other_breakpoint' by default.
+	(delete_breakpoint): Rewrite, supporting more than one breakpoint
+	in the breakpoint list.
+	(delete_reinsert_breakpoints): Only delete reinsert breakpoints.
+	(reinsert_breakpoint): Rename to ...
+	(reinsert_raw_breakpoint): ... this.
+	(reinsert_breakpoints_at): Adjust.
+	* mem-break.h (struct breakpoint): Declare.
+	(set_breakpoint_at): Change return type to struct breakpoint
+	pointer.
+
+2010-03-24  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (handle_query): Assign, not compare.
+
+2010-03-24  Pedro Alves  <pedro@codesourcery.com>
+
+	Teach linux gdbserver to step-over-breakpoints.
+
+	* linux-low.c (can_hardware_single_step): New.
+	(supports_breakpoints): New.
+	(handle_extended_wait): If stopping threads, read the stop pc of
+	the new cloned LWP.
+	(get_pc): New.
+	(get_stop_pc): Add `lwp' parameter.  Handle it.  Bail out if the
+	low target doesn't support retrieving the PC.
+	(add_lwp): Set last_resume_kind to resume_continue.
+	(linux_attach_lwp_1): Adjust comments.  Always set stop_expected.
+	(linux_attach): Don't clear stop_expected.  Set the lwp's
+	last_resume_kind to resume_stop.
+	(linux_detach_one_lwp): Don't check for removed breakpoints.
+	(check_removed_breakpoint): Delete.
+	(status_pending_p): Rename to ...
+	(status_pending_p_callback): ... this.  Don't check for removed
+	breakpoints.  Don't consider threads that are stopped from GDB's
+	perspective.
+	(linux_wait_for_lwp): Always read the stop_pc here.
+	(cancel_breakpoint): New.
+	(step_over_bkpt): New global.
+	(linux_wait_for_event_1): Implement stepping over breakpoints.
+	(gdb_wants_lwp_stopped): New.
+	(gdb_wants_all_stopped): New.
+	(linux_wait_1): Tag threads as gdb-wants-stopped.  Cancel finished
+	single-step traps here.  Store the thread's last reported target
+	wait status.
+	(send_sigstop): Don't clear stop_expected.  Always set it,
+	instead.
+	(mark_lwp_dead): Remove reference to pending_is_breakpoint.
+	(cancel_finished_single_step): New.
+	(cancel_finished_single_steps): New.
+	(wait_for_sigstop): Don't cancel finished single-step traps here.
+	(linux_resume_one_lwp): Don't check for removed breakpoints.
+	Don't set `step' on non-hardware step archs.
+	(linux_set_resume_request): Ignore resume_stop requests if already
+	stopping or stopped.  Set the lwp's last_resume_kind.
+	(resume_status_pending_p): Don't check for removed breakpoints.
+	(need_step_over_p): New.
+	(start_step_over): New.
+	(finish_step_over): New.
+	(linux_resume_one_thread): Always queue a sigstop for resume_stop
+	requests.  Clear the thread's last reported target waitstatus.
+	Don't use the `suspended' flag.  Don't consider pending breakpoints.
+	(linux_resume): Start a step-over if necessary.
+	(proceed_one_lwp): New.
+	(proceed_all_lwps): New.
+	(unstop_all_lwps): New.
+	* linux-low.h (struct lwp_info): Rewrite comment for the
+	`suspended' flag.  Add the `stop_pc' field.  Delete the
+	`pending_stop_pc' field.  Tweak the `stepping' flag's comment.
+	Add `'last_resume_kind' and `need_step_over' fields.
+	* inferiors.c (struct thread_info): Delete, moved elsewhere.
+	* mem-break.c (struct breakpoint): Delete `reinserting' flag.
+	Delete `breakpoint_to_reinsert' field.  New flag `inserted'.
+	(set_raw_breakpoint_at): New.
+	(set_breakpoint_at): Rewrite to use it.
+	(reinsert_breakpoint_handler): Delete.
+	(set_reinsert_breakpoint): New.
+	(reinsert_breakpoint_by_bp): Delete.
+	(delete_reinsert_breakpoints): New.
+	(uninsert_breakpoint): Rewrite.
+	(uninsert_breakpoints_at): New.
+	(reinsert_breakpoint): Rewrite.
+	(reinsert_breakpoints_at): New.
+	(check_breakpoints): Rewrite.
+	(breakpoint_here): New.
+	(breakpoint_inserted_here): New.
+	(check_mem_read): Adjust.
+	* mem-break.h (breakpoints_supported, breakpoint_here)
+	(breakpoint_inserted_here, set_reinsert_breakpoint): Declare.
+	(reinsert_breakpoint_by_bp): Delete declaration.
+	(delete_reinsert_breakpoints): Declare.
+	(reinsert_breakpoint): Delete declaration.
+	(reinsert_breakpoints_at): Declare.
+	(uninsert_breakpoint): Delete declaration.
+	(uninsert_breakpoints_at): Declare.
+	(check_breakpoints): Adjust prototype.
+	* server.h: Adjust include order.
+	(struct thread_info): Declare here.  Add a `last_status' field.
+
+2010-03-23  Michael Snyder  <msnyder@vmware.com>
+
+	* server.c (crc32): New function.
+	(handle_query): Add handling for 'qCRC:' request.
+
+2010-03-23  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-x86-low.c (x86_linux_prepare_to_resume): Clear DR6 if the
+	lwp had been stopped by a watchpoint.
+
+2010-03-16  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.h (internal_error): Declare.
+	(gdb_assert, ASSERT_FUNCTION, gdb_assert_fail): Define.
+	* utils.c (internal_error): New function.
+
+2010-03-15  Andreas Schwab  <schwab@redhat.com>
+
+	* configure.srv: Fix typo setting srv_regobj.
+
+2010-03-15  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (fetch_register): Avoid passing a non string literal
+	format to `error'.
+	(usr_store_inferior_registers): Ditto.
+
+2010-03-14  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_write_memory): Bail out early if peeking
+	memory failed.
+
+2010-03-14  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.h (struct lwp_info): New fields
+	`stopped_by_watchpoint' and `stopped_data_address'.
+	* linux-low.c (linux_wait_for_lwp): Check for watchpoint triggers
+	here, and cache them in the lwp object.
+	(wait_for_sigstop): Check stopped_by_watchpoint lwp field
+	directly.
+	(linux_resume_one_lwp): Clear the lwp's stopped_by_watchpoint
+	field.
+	(linux_stopped_by_watchpoint): Rewrite.
+	(linux_stopped_data_address): Rewrite.
+
+2010-03-06  Simo Melenius  <simo.melenius@iki.fi>
+
+	* linux-low.c (linux_wait_for_lwp): Fetch the regcache after
+	switching the current inferior, not before.
+
+2010-03-01  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Makefile.in (clean): Replace reg-i386.c, reg-x86-64.c,
+	reg-i386-linux.c and reg-x86-64-linux.c with i386.c, amd64.c,
+	i386-linux.c and amd64-linux.c.
+	(reg-i386.o): Removed.
+	(reg-i386.c): Likewise.
+	(reg-i386-linux.o): Likewise.
+	(reg-i386-linux.c): Likewise.
+	(reg-x86-64.o): Likewise.
+	(reg-x86-64.c): Likewise.
+	(reg-x86-64-linux.o): Likewise.
+	(reg-x86-64-linux.c): Likewise.
+	(i386.o): New.
+	(i386.c): Likewise.
+	(i386-linux.o): Likewise.
+	(i386-linux.c): Likewise.
+	(amd64.o): Likewise.
+	(amd64.c): Likewise.
+	(amd64-linux.o): Likewise.
+	(amd64-linux.c): Likewise.
+
+	* configure.srv (srv_i386_regobj): New.
+	(srv_i386_linux_regobj): Likewise.
+	(srv_amd64_regobj): Likewise.
+	(srv_amd64_linux_regobj): Likewise.
+	(srv_i386_32bit_xmlfiles): Likewise.
+	(srv_i386_64bit_xmlfiles): Likewise.
+	(srv_i386_xmlfiles): Likewise.
+	(srv_amd64_xmlfiles): Likewise.
+	(srv_i386_linux_xmlfiles): Likewise.
+	(srv_amd64_linux_xmlfiles): Likewise.
+	(i[34567]86-*-cygwin*): Set srv_regobj to $srv_i386_regobj.  Set
+	srv_xmlfiles to $srv_i386_xmlfiles.
+	(i[34567]86-*-mingw32ce*): Likewise.
+	(i[34567]86-*-mingw*): Likewise.
+	(i[34567]86-*-nto*): Likewise.
+	(i[34567]86-*-linux*): Set srv_regobj to $srv_i386_linux_regobj
+	and $srv_amd64_linux_regobj.  Set srv_xmlfiles to
+	$srv_i386_linux_xmlfiles and $srv_amd64_linux_xmlfiles.
+	(x86_64-*-linux*): Likewise.
+
+	* linux-x86-low.c (init_registers_x86_64_linux): Removed.
+	(init_registers_amd64_linux): New.
+	(x86_arch_setup): Replace init_registers_x86_64_linux with
+	init_registers_amd64_linux.
+
+2010-02-23  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+	* configure.ac: Check for libdl.  If it is not available link against
+	static libthread_db.
+	* configure: Regenerate.
+
+2010-02-22  Pedro Alves  <pedro@codesourcery.com>
+
+	PR9605
+
+	* i386-low.c (i386_length_and_rw_bits): Throw a fatal error if
+	handing a read watchpoint.
+	(i386_low_insert_watchpoint): Read watchpoints aren't supported.
+
+2010-02-12  Doug Evans  <dje@google.com>
+
+	* linux-low.c (linux_supports_tracefork_flag): Document.
+	(linux_look_up_symbols): Add comment.
+
+2010-02-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* regcache.c (supply_register): Clear regcache if buf is NULL.
+
+2010-02-02  Nicolas Roche  <roche@sourceware.org>
+	    Joel Brobecker  <brobecker@adacore.com>
+
+	* inferiors.c (find_inferior): Add function documentation.
+	(unloaded_dll): Handle the case where the unloaded dll has not
+	been previously registered in the dll list.
+
+2010-02-01  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-arm-low.c (thumb_breakpoint_len): Delete.
+	(thumb2_breakpoint): New.
+	(arm_breakpoint_at): Check for Thumb-2 breakpoints.
+
+2010-01-29  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (get_stop_pc): Check for SIGTRAP.
+	(linux_wait_for_event_1): Handle SIGILL and SIGSEGV as possible
+	breakpoints.
+
+2010-01-21  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-ppc-low.c (ppc_arch_setup): Adjust to regcache changes.
+
+2010-01-21  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* linux-s390-low.c (s390_collect_ptrace_register)
+	(s390_supply_ptrace_register): Adjust it for the new regcache parameter.
+
+2010-01-21  Doug Evans  <dje@google.com>
+
+	* linux-low.c (PTRACE_ARG3_TYPE): Change from long to void*.
+	(PTRACE_ARG4_TYPE): New macro.
+	(handle_extended_wait): Cast ptrace arg4 to PTRACE_ARG4_TYPE.
+	(linux_wait_for_event_1, linux_resume_one_lwp): Ditto.
+	(fetch_register): Cast to uintptr_t before casting to PTRACE_ARG3_TYPE.
+	(usr_store_inferior_registers): Ditto.
+	(linux_read_memory, linux_write_memory): Ditto.
+	(linux_test_for_tracefork): Ditto.
+
+	* linux-arm-low.c: Remove redundant include of gdb_proc_service.h.
+	Only include elf.h if gdb_proc_service.h didn't include linux/elf.h.
+
+2010-01-21  Pedro Alves  <pedro@codesourcery.com>
+
+	* proc-service.c (ps_lgetregs): Don't refetch registers from the
+	target.
+
+2010-01-21  Pedro Alves  <pedro@codesourcery.com>
+
+	* spu-low.c (spu_fetch_registers, spu_store_registers): Change
+	prototype to take a regcache.  Adjust.
+
+2010-01-20  Pedro Alves  <pedro@codesourcery.com>
+
+	* regcache.h (struct thread_info): Forward declare.
+	(struct regcache): New.
+	(new_register_cache): Adjust prototype.
+	(get_thread_regcache): Declare.
+	(free_register_cache): Adjust prototype.
+	(registers_to_string, registers_from_string): Ditto.
+	(supply_register, supply_register_by_name, collect_register)
+	(collect_register_as_string, collect_register_by_name): Ditto.
+	* regcache.c (struct inferior_regcache_data): Delete.
+	(get_regcache): Rename to ...
+	(get_thread_regcache): ... this.  Adjust.  Switch inferior before
+	fetching registers.
+	(regcache_invalidate_one): Adjust.
+	(regcache_invalidate): Fix prototype.
+	(new_register_cache): Return the new register cache.
+	(free_register_cache): Change prototype.
+	(realloc_register_cache): Adjust.
+	(registers_to_string): Change prototype to take a regcache.  Adjust.
+	(registers_from_string): Ditto.
+	(register_data): Ditto.
+	(supply_register): Ditto.
+	(supply_register_by_name): Ditto.
+	(collect_register): Ditto.
+	(collect_register_as_string): Ditto.
+	(collect_register_by_name): Ditto.
+	* server.c (process_serial_event): Adjust.
+	* linux-low.h (regset_fill_func, regset_store_func): Change
+	prototype.
+	(get_pc, set_pc, collect_ptrace_register, supply_ptrace_register):
+	Change prototype.
+	* linux-low.c (get_stop_pc): Adjust.
+	(check_removed_breakpoint): Adjust.
+	(linux_wait_for_event): Adjust.
+	(linux_resume_one_lwp): Adjust.
+	(fetch_register): Add regcache parameter.  Adjust.
+	(usr_store_inferior_registers): Ditto.
+	(regsets_fetch_inferior_registers): Ditto.
+	(regsets_store_inferior_registers): Ditto.
+	(linux_fetch_registers, linux_store_registers): Ditto.
+	* i387-fp.c (i387_cache_to_fsave): Change prototype to take a
+	regcache.  Adjust.
+	(i387_fsave_to_cache, i387_cache_to_fxsave, i387_fxsave_to_cache):
+	Ditto.
+	* i387-fp.h (i387_cache_to_fsave, i387_fsave_to_cache): Change
+	prototype to take a regcache.
+	(i387_cache_to_fxsave, i387_fxsave_to_cache): Ditto.
+	* remote-utils.c (convert_ascii_to_int, outreg)
+	(prepare_resume_reply): Change prototype to take a regcache.
+	Adjust.
+	* target.h (struct target_ops) <fetch_registers, store_registers>:
+	Change prototype to take a regcache.
+	(fetch_inferior_registers, store_inferior_registers): Change
+	prototype to take a regcache.  Adjust.
+	* proc-service.c (ps_lgetregs): Adjust.
+	* linux-x86-low.c (x86_fill_gregset, x86_store_gregset)
+	(x86_fill_fpregset, x86_store_fpregset, x86_fill_fpxregset)
+	(x86_store_fpxregset, x86_get_pc, x86_set_pc): Change prototype to
+	take a regcache.  Adjust.
+	* linux-arm-low.c (arm_fill_gregset, arm_store_gregset)
+	(arm_fill_wmmxregset, arm_store_wmmxregset, arm_fill_vfpregset)
+	(arm_store_vfpregset, arm_get_pc, arm_set_pc):
+	(arm_breakpoint_at): Change prototype to take a regcache.  Adjust.
+	* linux-cris-low.c (cris_get_pc, cris_set_pc)
+	(cris_cannot_fetch_register):
+	(cris_breakpoint_at): Change prototype to take a regcache.
+	Adjust.
+	* linux-crisv32-low.c (cris_get_pc, cris_set_pc,
+	cris_reinsert_addr, cris_write_data_breakpoint): Change prototype
+	to take a regcache.  Adjust.
+	(cris_breakpoint_at, cris_insert_point, cris_remove_point):
+	Adjust.
+	* linux-m32r-low.c (m32r_get_pc, m32r_set_pc): Change prototype to
+	take a regcache.  Adjust.
+	* linux-m68k-low.c (m68k_fill_gregset, m68k_store_gregset)
+	(m68k_fill_fpregset, m68k_store_fpregset, m68k_get_pc,
+	(m68k_set_pc): Change prototype to take a regcache.  Adjust.
+	* linux-mips-low.c (mips_get_pc):
+	(mips_set_pc): Change prototype to take a regcache.  Adjust.
+	(mips_reinsert_addr): Adjust.
+	(mips_collect_register): Change prototype to take a regcache.
+	Adjust.
+	(mips_supply_register):
+	(mips_collect_register_32bit, mips_supply_register_32bit)
+	(mips_fill_gregset, mips_store_gregset, mips_fill_fpregset)
+	(mips_store_fpregset): Ditto.
+	* linux-ppc-low.c (ppc_supply_ptrace_register)
+	(ppc_supply_ptrace_register): Ditto.
+	(parse_spufs_run): Adjust.
+	(ppc_get_pc, ppc_set_pc, ppc_fill_gregset, ppc_fill_vsxregset)
+	(ppc_store_vsxregset, ppc_fill_vrregset, ppc_store_vrregset)
+	(ppc_fill_evrregset, ppc_store_evrregset): Change prototype to
+	take a regcache.  Adjust.
+	* linux-s390-low.c (s390_collect_ptrace_register)
+	(s390_supply_ptrace_register, s390_fill_gregset, s390_get_pc)
+	(s390_set_pc): Change prototype to take a regcache.  Adjust.
+	(s390_arch_setup): Adjust.
+	* linux-sh-low.c (sh_get_pc, sh_breakpoint_at)
+	(sh_fill_gregset): Change prototype to take a regcache.  Adjust.
+	* linux-sparc-low.c (sparc_fill_gregset_to_stack)
+	(sparc_fill_gregset, sparc_store_gregset_from_stack)
+	(sparc_store_gregset, sparc_get_pc): Change prototype to take a
+	regcache.  Adjust.
+	(sparc_breakpoint_at): Adjust.
+	* linux-xtensa-low.c (xtensa_fill_gregset):
+	(xtensa_store_gregset):
+	(xtensa_fill_xtregset, xtensa_store_xtregset, xtensa_get_pc)
+	(xtensa_set_pc): Change prototype to take a regcache.  Adjust.
+	* nto-low.c (nto_fetch_registers, nto_store_registers): Change
+	prototype to take a regcache.  Adjust.
+	* win32-arm-low.c (arm_fetch_inferior_register)
+	(arm_store_inferior_register): Change prototype to take a
+	regcache.  Adjust.
+	* win32-i386-low.c (i386_fetch_inferior_register)
+	(i386_store_inferior_register): Change prototype to take a
+	regcache.  Adjust.
+	* win32-low.c (child_fetch_inferior_registers)
+	(child_store_inferior_registers): Change prototype to take a
+	regcache.  Adjust.
+	(win32_wait): Adjust.
+	(win32_fetch_inferior_registers): Change prototype to take a
+	regcache.  Adjust.
+	(win32_store_inferior_registers): Adjust.
+	* win32-low.h (struct win32_target_ops) <fetch_inferior_register,
+	store_inferior_register>: Change prototype to take a regcache.
+
+2010-01-20  Doug Evans  <dje@google.com>
+
+	* linux-low.c (linux_create_inferior): Wrap use of __SIGRTMIN in
+	#ifdef.
+	(linux_wait_for_event1, linux_init_signals): Ditto.
+	(W_STOPCODE): Provide definition if missing.
+
+2010-01-13  Vladimir Prus  <vladimir@codesourcery.com>
+
+	* linux-low.c (linux_core_of_thread): New.
+	(compare_ints, show_process, list_threads): New.
+	(linux_qxfer_osdata): Report threads and cores.
+	(linux_target_op): Register linux_core_of_thread.
+	* remote-utils.c (prepare_resume_reply): Report the core.
+	(buffer_xml_printf): Support %d specifier.
+	* server.c (handle_threads_qxfer_proper, handle_threads_qxfer):
+	New.
+	(handle_query): Handle qXfer:threads.  Announce availability
+	thereof.
+	* target.h (struct target_ops): New field core_of_thread.
+
+2010-01-04  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* Makefile.in (clean): Remove new generated files.
+	(reg-s390.o, reg-s390.c): Remove rules.
+	(reg-s390x.o, reg-s390x.c): Likewise.
+	(s390-linux32.o, s390-linux32.c): Add rules.
+	(s390-linux64.o, s390-linux64.c): Likewise.
+	(s390x-linux64.o, s390x-linux64.c): Likewise.
+	* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
+	* linux-s390-low.c: Include <elf.h>.
+	(HWCAP_S390_HIGH_GPRS): Define if undefined.
+	(init_registers_s390): Remove prototype.
+	(init_registers_s390x): Likewise.
+	(init_registers_s390_linux32): Add prototype.
+	(init_registers_s390_linux64): Likewise.
+	(init_registers_s390x_linux64): Likewise.
+	(s390_num_regs_3264): New define.
+	(s390_regmap_3264): New global variable.
+	(s390_cannot_fetch_register): Remove obsolete check.
+	(s390_cannot_store_register): Likewise.
+	(s390_collect_ptrace_register): Handle upper/lower register halves.
+	(s390_supply_ptrace_register): Likewise.
+	(s390_fill_gregset): Update to register number changes.
+	(s390_get_hwcap): New routine.
+	(s390_arch_setup): Detect 32-bit process running on 64-bit system.
+	Install appropriate regmap and register set.
+
+2010-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* server.c (gdbserver_version): Update copyright year to 2010.
+	* gdbreplay.c (gdbreplay_version): Likewise.
+
+2009-12-28  Doug Evans  <dje@google.com>
+
+	* linux-low.c: Delete inclusion of ansidecl.h, elf/common.h,
+	elf/external.h.  Include <elf.h> instead but only if necessary.
+
+2009-12-28  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_remove_process): Remove `detaching'
+	parameter.  Don't release/detach from thread_db here.
+	(linux_kill): Release/detach from thread_db here, ...
+	(linux_detach): ... and here, before actually detaching.
+	(linux_wait_1): ... and here, when a process exits.
+	* thread-db.c (any_thread_of): New.
+	(thread_db_free): Switch the current inferior to a thread of the
+	passed in process.
+
+2009-12-21  Doug Evans  <dje@google.com>
+
+	* linux-x86-low.c: Delete outdated comment about Elf32_Phdr.
+
+	* linux-low.c (kill_lwp): Use __NR_tkill instead of SYS_tkill.
+	Move definition of tkill_failed to ifdef __NR_tkill to avoid gcc
+	warning ifndef __NR_tkill.  Move setting of errno there too.
+	Delete unnecessary resetting of errno after syscall.
+	Minor comment changes to match gdb/linux-nat.c:kill_lwp.
+
+	* configure.ac: Check for dladdr.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* thread-db.c (dladdr_to_soname): Only define ifdef HAVE_DLADDR.
+	(try_thread_db_load): Update.
+
+	* linux-low.c (my_waitpid): Delete unnecessary prototype.
+
+2009-12-18  Doug Evans  <dje@google.com>
+
+	* event-loop.c: Include unistd.h if it exists.
+
+	* linux-low.c (my_waitpid): Move definition away from being in
+	between linux_tracefork_child/linux_test_for_tracefork.
+
+	* gdb_proc_service.h (psaddr_t): Fix type.
+	* thread-db.c (thread_db_info.td_thr_tls_get_addr_p): Fix
+	signature to match glibc.
+
+2009-12-16  Doug Evans  <dje@google.com>
+
+	* linux-low.c (linux_read_memory): Fix argument to read.
+
+2009-11-26  Pedro Alves  <pedro@codesourcery.com>
+
+	* win32-low.c (get_child_debug_event): On EXIT_THREAD_DEBUG_EVENT
+	events, don't leave current_inferior pointing at null.
+
+2009-11-26  Pedro Alves  <pedro@codesourcery.com>
+
+	* win32-low.c (LOG): Delete.
+	(OUTMSG): Output to stderr.
+	(OUTMSG2): Conditionalize on `debug_threads' variable, instead of
+	on compile time LOG macro.
+	(win32_wait): Fix debug output.
+
+2009-11-26  Pedro Alves  <pedro@codesourcery.com>
+
+	* win32-low.c (win32_add_one_solib): If the dll name is
+	"ntdll.dll", prepend the system directory to the dll path.
+
+2009-11-17  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* m68k-tdep.c (m68k_gdbarch_init): Reuse previous initialization.
+
+2009-11-17  Nathan Sidwell  <nathan@codesourcery.com>
+	    Vladimir Prus  <vladimir@codesourcery.com>
+
+	* Makefile.in (reg-cf.o, reg-cf.c): New targets.
+	* configure.ac: Check for __mcoldfire__ and set
+	gdb_cv_m68k_is_coldfire.
+	* configure.srv: Use gdb_cv_m68k_is_coldfire to select between
+	reg-cf.o and reg-m68k.o.
+	* configure: Regenerated.
+
+2009-11-16  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_remove_process): Add `detaching' parameter.
+	Pass it to thread_db_free.
+	(linux_kill, linux_detach, linux_wait_1): Adjust to pass the
+	proper `detaching' argument to linux_remove_process.
+	* linux-low.h (thread_db_free): Add `detaching' parameter.
+	* thread-db.c (thread_db_init): Pass false as `detaching' argument
+	to thread_db_free.
+	(thread_db_free): Add `detaching' parameter.  Only
+	call td_ta_clear_event if detaching from process.
+
+2009-11-12  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+	* thread-db.c (thread_db_free): Fix typo.
+
+2009-11-11  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+	PR gdb/10838
+	* thread-db.c (thread_db_free): Call td_ta_clear_event.
+
+2009-11-03  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* configure.ac (i[34567]86-*): Check if we're targetting x86-64
+	with an i686 compiler.
+	* configure.srv (i[34567]86-*-linux*): Pull in x86-64 handling if
+	needed.
+	* configure: Rebuilt.
+
+2009-10-29  Sandra Loosemore  <sandra@codesourcery.com>
+
+	PR gdb/10783
+
+	* server.c (handle_search_memory_1): Correct read_addr initialization
+	in loop for searching subsequent chunks.
+
+2009-10-29  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+	* configure.ac: New --with-libthread-db option.
+	* thread-db.c: Allow direct dependence on libthread_db.
+	(thread_db_free): Adjust.
+	* config.in: Regenerate.
+	* configure: Likewise.
+
+2009-10-28  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+	PR gdb/10757
+	* thread-db.c (attach_thread): New function.
+	(maybe_attach_thread): Return success/failure.
+	(find_new_threads_callback): Adjust.
+	(thread_db_find_new_threads): Loop until no new threads.
+
+2009-10-13  Pedro Alves  <pedro@codesourcery.com>
+
+	* proc-service.c (ps_lgetregs): Formatting.
+
+2009-10-08  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+	* acinclude.m4: (SRV_CHECK_THREAD_DB, SRV_CHECK_TLS_GET_ADDR): Remove.
+	* configure.ac: Adjust.
+	* linux-low.h (struct process_info_private): Move members to struct
+	thread_db.
+	(thread_db_free, thread_db_handle_monitor_command): New prototype.
+	* linux-low.c (linux_remove_process): Adjust.
+	(linux_wait_for_event_1, linux_look_up_symbols): Likewise.
+	* server.c (handle_query): Move code ...
+	(handle_monitor_command): ... here. New function.
+	* target.h (struct target_ops): New member.
+	* thread-db.c (struct thread_db): New.
+	(libthread_db_search_path): New variable.
+	(thread_db_create_event, thread_db_enable_reporting)
+	(find_one_thread, maybe_attach_thread, find_new_threads_callback)
+	(thread_db_find_new_threads, (thread_db_get_tls_address): Adjust.
+	(try_thread_db_load_1, dladdr_to_soname): New functions.
+	(try_thread_db_load, thread_db_load_search): New functions.
+	(thread_db_init): Search for libthread_db.
+	(thread_db_free): New function.
+	(thread_db_handle_monitor_command): Likewise.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
+2009-09-27  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* spu-low.c (spu_kill): Wait for inferior to terminate.
+	Call clear_inferiors.
+	(spu_detach): Call clear_inferiors.
+
+2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+	* aclocal.m4: Regenerate.
+	* config.in: Likewise.
+	* configure: Likewise.
+
+2009-07-31  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* linux-ppc-low.c (INSTR_SC, NR_spu_run): Define.
+	(parse_spufs_run): New function.
+	(ppc_get_pc, ppc_set_pc): Detect and handle SPU PC.
+	(ppc_breakpoint_at): Handle SPU breakpoints.
+
+2009-07-31  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* linux-low.c: Include <sys/stat.h> and <sys/vfs.h>.
+	(SPUFS_MAGIC): Define.
+	(spu_enumerate_spu_ids): New function.
+	(linux_qxfer_spu): New function.
+	(linux_target_ops): Install linux_qxfer_spu.
+
+2009-07-31  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv (powerpc*-*-linux*): Add powerpc-cell32l.o
+	and powerpc-cell64l.o to srv_regobj.  Add rs6000/powerpc-cell32l.xml
+	and rs6000/powerpc-cell64l.xml to srv_xmlfiles.
+	* Makefile.in (powerpc-cell32l.o, powerpc-cell32l.c): New rules.
+	(powerpc-cell64l.o, powerpc-cell64l.c): Likewise.
+	(clean): Handle powerpc-cell32l.c and powerpc-cell64l.c.
+	* linux-ppc-low.c (PPC_FEATURE_CELL): Define.
+	(init_registers_powerpc_cell32l): Add prototype.
+	(init_registers_powerpc_cell64l): Likewise.
+	(ppc_arch_setup): Detect Cell/B.E. architecture.
+
+2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+	* Makefile.in (datarootdir): New variable.
+
+2009-07-28  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_write_memory): Update debugging output.
+	* Makefile.in (clean): Add new descriptions.
+	(arm-with-vfpv2.o, arm-with-vfpv2.c, arm-with-vfpv3.o)
+	(arm-with-vfpv3.c, arm-with-neon.o, arm-with-neon.c): New rules.
+	* configure.srv: Add new files for arm*-*-linux*.
+	* linux-arm-low.c: Add new declarations.
+	(PTRACE_GETVFPREGS, PTRACE_SETVFPREGS): Define if undefined.
+	(arm_hwcap, HWCAP_VFP, HWCAP_IWMMXT, HWCAP_NEON, HWCAP_VFPv3)
+	(HWCAP_VFPv3D16): New.
+	(arm_fill_wmmxregset, arm_store_wmmxregset): Check HWCAP_IWMMXT
+	instead of __IWMMXT__.
+	(arm_fill_vfpregset, arm_store_vfpregset, arm_get_hwcap)
+	(arm_arch_setup): New.
+	(target_regsets): Remove #ifdef.  Add VFP regset.
+	(the_low_target): Use arm_arch_setup.
+
+2009-07-28  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_kill_one_lwp): Adjust kernel workaround to skip
+	the main thread again.
+
+2009-07-06  Aleksandar Ristovski  <aristovski@qnx.com>
+
+	Adding Neutrino gdbserver.
+	* configure: Regenerated.
+	* configure.ac: Add case for srv_qnx and set LIBS accordingly.
+	* configure.srv (i[34567]86-*-nto*): New target.
+	* nto-low.c, nto-low.h, nto-x86-low.c: New files.
+	* remote-utils.c [__QNX__]: Include sys/iomgr.h
+	(nto_comctrl) [__QNX__]: New function.
+	(enable_async_io, disable_async_io) [__QNX__]: Call nto_comctrl.
+
+2009-07-05  Danny Backx  <dannybackx@users.sourceforge.net>
+
+	* configure.srv (i[34567]86-*-mingw32ce*): Add i386-low.o to
+	srv_tgtobj.
+
+2009-07-04  Danny Backx  <dannybackx@users.sourceforge.net>
+	    Pedro Alves  <pedro@codesourcery.com>
+
+	* win32-i386-low.c (i386_get_thread_context): Handle systems that
+	don't support CONTEXT_EXTENDED_REGISTERS.
+	(i386_win32_breakpoint, i386_win32_breakpoint_len): New.
+	(the_low_target): Install them.
+	* win32-low.c (get_child_debug_event): Handle WaitForDebugEvent
+	failing with ERROR_PIPE_NOT_CONNECTED.
+
+2009-06-30  Doug Evans  <dje@google.com>
+	    Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	Add h/w watchpoint support to x86-linux, win32-i386.
+	* Makefile.in (SFILES): Add i386-low.c
+	(i386_low_h): Define.
+	(i386-low.o): Add dependencies.
+	(linux-x86-low.o): Add i386-low.h dependency.
+	(win32-i386-low.o): Ditto.
+	* i386-low.c: New file.
+	* i386-low.h: New file.
+	* configure.srv (i[34567]86-*-cygwin*): Add i386-low.o to srv_tgtobj.
+	(i[34567]86-*-linux*, i[34567]86-*-mingw*, x86_64-*-linux*): Ditto.
+	* linux-low.c (linux_add_process): Initialize arch_private.
+	(linux_remove_process): Free arch_private.
+	(add_lwp): Initialize arch_private.
+	(delete_lwp): Free arch_private.
+	(linux_resume_one_lwp): Call the_low_target.prepare_to_resume if
+	provided.
+	* linux-low.h (process_info_private): New member arch_private.
+	(lwp_info): New member arch_private.
+	(linux_target_ops): New members new_process, new_thread,
+	prepare_to_resume.
+	(ptid_of): New macro.
+	* linux-x86-low.c: Include stddef.h, i386-low.h.
+	(arch_process_info): New struct.
+	(arch_lwp_info): New struct.
+	(x86_linux_dr_get, x86_linux_dr_set): New functions.
+	(i386_dr_low_set_addr, i386_dr_low_set_control): New functions.
+	(i386_dr_low_get_status): New function.
+	(x86_insert_point, x86_remove_point): New functions.
+	(x86_stopped_by_watchpoint): New function.
+	(x86_stopped_data_address): New function.
+	(x86_linux_new_process, x86_linux_new_thread): New functions.
+	(x86_linux_prepare_to_resume): New function.
+	(the_low_target): Add entries for insert_point, remove_point,
+	stopped_by_watchpoint, stopped_data_address, new_process, new_thread,
+	prepare_to_resume.
+	* server.c (debug_hw_points): New global.
+	(monitor_show_help): Document set debug-hw-points.
+	(handle_query): Process "set debug-hw-points".
+	* server.h (debug_hw_points): Declare.
+	(paddress): Declare.
+	* utils.c (NUMCELLS, CELLSIZE): New macros.
+	(get_sell, xsnprintf, paddress): New functions.
+	* win32-arm-low.c (the_low_target): Add entries for insert_point,
+	remove_point, stopped_by_watchpoint, stopped_data_address.
+	* win32-i386-low.c: Include i386-low.h.
+	(debug_reg_state): Replaces dr.
+	(i386_dr_low_set_addr, i386_dr_low_set_control): New functions.
+	(i386_dr_low_get_status): New function.
+	(i386_insert_point, i386_remove_point): New functions.
+	(i386_stopped_by_watchpoint): New function.
+	(i386_stopped_data_address): New function.
+	(i386_initial_stuff): Update.
+	(get_thread_context,set_thread_context,i386_thread_added): Update.
+	(the_low_target): Add entries for insert_point,
+	remove_point, stopped_by_watchpoint, stopped_data_address.
+	* win32-low.c (win32_insert_watchpoint): New function.
+	(win32_remove_watchpoint): New function.
+	(win32_stopped_by_watchpoint): New function.
+	(win32_stopped_data_address): New function.
+	(win32_target_ops): Add entries for insert_watchpoint,
+	remove_watchpoint, stopped_by_watchpoint, stopped_data_address.
+	* win32-low.h (win32_target_ops): New members insert_point,
+	remove_point, stopped_by_watchpoint, stopped_data_address.
+
+2009-06-25  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (process_serial_event): Re-return unsupported, not
+	error, if the type isn't recognized.  Re-allow supporting only
+	insert or remove packets.  Also call require_running for
+	breakpoints.  Add missing break statement to default case.  Tidy.
+	* target.h (struct target_ops): Rename insert_watchpoint to
+	insert_point, and remove_watchpoint to remove_point.
+
+	* linux-low.h (struct linux_target_ops): Likewise.
+	* linux-low.c (linux_insert_watchpoint): Rename to ...
+	(linux_insert_point): ... this.  Adjust.
+	(linux_remove_watchpoint): Rename to ...
+	(linux_remove_point): ... this.  Adjust.
+	(linux_target_ops): Adjust.
+	* linux-crisv32-low.c (cris_insert_watchpoint): Rename to ...
+	(cris_insert_point): ... this.
+	(cris_remove_watchpoint): Rename to ...
+	(cris_remove_point): ... this.
+	(the_low_target): Adjust.
+
+2009-06-24  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* server.c (handle_v_kill): Pass signal_pid to
+	kill_inferior if multi_process is zero.
+
+2009-06-23  Aleksandar Ristovski  <aristovski@qnx.com>
+
+	* server.c (process_serial_event): Add support for Z0 and Z1 packet.
+	* target.h (target_ops): Comment for *_watchpoint to make it clear
+	the functions can get types '0' and '1'.
+
+2009-06-22  Aleksandar Ristovski  <aristovski@qnx.com>
+
+	* linux-low.c (usr_fetch_inferior_registers): Remove check for regno 0.
+	* proc-service.c (ps_lgetregs): Pass -1 to fetch all registers.
+	* regcache.c (get_regcache): Likewise.
+	* spu-low.c (spu_fetch_registers): Remove 0 to -1 conversion.
+	* win32-low.c (child_fetch_inferior_registers): Remove check for
+	regno 0.
+
+2009-06-19  Aleksandar Ristovski  <aristovski@qnx.com>
+	    Pedro Alves <pedro@codesourcery.com>
+
+	* target.h (struct target_ops) <supports_multi_process>: New
+	callback.
+	(target_supports_multi_process): New.
+	* server.c (handle_query): Even if GDB reports support, only
+	enable multi-process if the target also supports it.  Report
+	multi-process support only if the target backend supports it.
+	* linux-low.c (linux_supports_multi_process): New function.
+	(linux_target_ops): Install it as target_supports_multi_process
+	callback.
+
+2009-05-24  Doug Evans  <dje@google.com>
+
+	Global renaming of find_thread_pid to find_thread_ptid.
+	* server.h (find_thread_ptid): Renamed from find_thread_pid.
+	* inferiors.c (find_thread_ptid): Renamed from find_thread_pid.
+	All callers updated.
+
+	* linux-low.c (handle_extended_wait): Use linux_resume_one_lwp
+	to resume the newly created thread, don't call ptrace (PTRACE_CONT)
+	directly.
+
+	* linux-low.c (get_stop_pc): Print pc if debug_threads.
+	(check_removed_breakpoint, linux_wait_for_lwp): Ditto.
+	(linux_resume_one_lwp): Ditto.
+
+2009-05-23  Doug Evans  <dje@google.com>
+
+	* linux-low.c (linux_resume_one_lwp): Change type of first arg
+	from struct inferior_list_entry * to struct lwp_info *.
+	All callers updated.
+
+2009-05-13  Doug Evans  <dje@google.com>
+
+	* linux-x86-low.c: Don't include assert.h.
+	(x86_siginfo_fixup): Use fatal, not assert.
+	(x86_arch_setup): Fix comment.
+
+2009-05-12  Doug Evans  <dje@google.com>
+
+	Biarch support for i386/amd64 gdbserver.
+	* Makefile.in (SFILES): Remove linux-i386-low.c, linux-x86-64-low.c.
+	Add linux-x86-low.c.
+	(linux-i386-low.o, linux-x86-64-low.o): Delete.
+	(linux-x86-low.o): Add.
+	* linux-x86-64-low.c: Delete.
+	* linux-i386-low.c: Delete.
+	* linux-x86-low.c: New file.
+	* configure.srv (i?86-linux srv_tgtobj): Replace linux-i386-low.o with
+	linux-x86-low.o.
+	(x86_64-linux srv_tgtobj): Replace linux-x86-64-low.o with
+	linux-x86-low.o.
+	(x86_64-linux srv_regobj): Add reg-i386-linux.o.
+	* linux-low.c: Include ansidecl.h, elf/common.h, elf/external.h.
+	(linux_child_pid_to_exec_file): New function.
+	(elf_64_header_p, elf_64_file_p): New functions.
+	(siginfo_fixup): New function.
+	(linux_xfer_siginfo): New local inf_siginfo.  Call siginfo_fixup to
+	give target a chance to convert layout.
+	* linux-low.h (linux_target_ops): New member siginfo_fixup.
+	(linux_child_pid_to_exec_file, elf_64_file_p): Declare.
+
+2009-05-07  Doug Evans  <dje@google.com>
+
+	* linux-low.c (regsets_fetch_inferior_registers): Fix memory leak.
+	(regsets_store_inferior_registers): Ditto.
+
+2009-05-06  Pedro Alves  <pedro@codesourcery.com>
+
+	PR server/10048
+
+	* linux-low.c (must_set_ptrace_flags): Delete.
+	(linux_create_inferior): Set `lwp->must_set_ptrace_flags' instead
+	of the global.
+	(linux_attach_lwp_1): Don't set PTRACE_SETOPTIONS here.  Set
+	`lwp->must_set_ptrace_flags' instead.
+	(linux_wait_for_event_1): Set ptrace options here.
+	(linux_wait_1): ... not here.
+
+2009-04-30  Doug Evans  <dje@google.com>
+
+	* inferiors.c (started_inferior_callback): New function.
+	(attached_inferior_callback): New function.
+	(have_started_inferiors_p, have_attached_inferiors_p): New functions.
+	* server.c (print_started_pid, print_attached_pid): New functions.
+	(detach_or_kill_for_exit): New function.
+	(main): Call it instead of for_each_inferior (kill_inferior_callback).
+	* server.h (have_started_inferiors_p): Declare.
+	(have_attached_inferiors_p): Declare.
+
+	* inferiors.c (remove_process): Fix memory leak, free process.
+	* linux-low.c (linux_remove_process): New function.
+	(linux_kill): Call it instead of remove_process.
+	(linux_detach, linux_wait_1): Ditto.
+
+2009-04-19  Danny Backx  <dannybackx@users.sourceforge.net>
+
+	* configure.srv: Add x86 Windows CE target.
+
+2009-04-03  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* inferiors.c (get_thread_process): Make global.
+	* server.h (get_thread_process): Add prototype.
+	* thread-db.c (find_one_thread): Use get_thread_process
+	instead of current_process.
+	(thread_db_get_tls_address): Do not crash if called when
+	thread layer is not yet initialized.
+
+2009-04-03  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* remote-utils.c (prepare_resume_reply): Null-terminate packet.
+	* spu-low.c (current_tid): Rename to ...
+	(current_ptid): ... this.
+	(fetch_ppc_register, fetch_ppc_memory, store_ppc_memory,
+	spu_proc_xfer_spu, spu_resume, spu_request_interrupt): Use
+	ptid_get_lwp (current_ptid) instead of current_tid.
+	(spu_kill, spu_detach, spu_join, spu_wait): Use pid argument
+	instead of current_tid.  Use find_process_pid to verify pid
+	argument is valid.  Pass proper argument to remove_process.
+	(spu_thread_alive): Compare current_ptid instead of current_tid.
+	(spu_resume): Likewise.
+
+2009-04-02  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (usr_store_inferior_registers): Declare local `pid'
+	variable.
+
+2009-04-01  Pedro Alves  <pedro@codesourcery.com>
+
+	Implement the multiprocess extensions, and add linux multiprocess
+	support.
+
+	* server.h (ULONGEST): Declare.
+	(struct ptid, ptid_t): New.
+	(minus_one_ptid, null_ptid): Declare.
+	(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_lwp)
+	(ptid_get_tid, ptid_equal, ptid_is_pid): Declare.
+	(struct inferior_list_entry): Change `id' type from unsigned from
+	to ptid_t.
+	(struct sym_cache, struct breakpoint, struct
+	process_info_private): Forward declare.
+	(struct process_info): Declare.
+	(current_process): Declare.
+	(all_processes): Declare.
+	(initialize_inferiors): Declare.
+	(add_thread): Adjust to use ptid_t.
+	(thread_id_to_gdb_id, thread_to_gdb_id, gdb_id_to_thread_id): Ditto.
+	(add_process, remove_process, find_thread_pid): Declare.
+	(find_inferior_id): Adjust to use ptid_t.
+	(cont_thread, general_thread, step_thread): Change type to ptid_t.
+	(multi_process): Declare.
+	(push_event): Adjust to use ptid_t.
+	(read_ptid, write_ptid): Declare.
+	(prepare_resume_reply): Adjust to use ptid_t.
+	(clear_symbol_cache): Declare.
+	* inferiors.c (all_processes): New.
+	(null_ptid, minus_one_ptid): New.
+	(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_lwp)
+	(ptid_get_tid, ptid_equal, ptid_is_pid): New.
+	(add_thread): Change unsigned long to ptid.  Remove gdb_id
+	parameter.  Adjust.
+	(thread_id_to_gdb_id, thread_to_gdb_id): Change unsigned long to ptid.
+	(gdb_id_to_thread): Rename to ...
+	(find_thread_pid): ... this.  Change unsigned long to ptid.
+	(gdb_id_to_thread_id, find_inferior_id): Change unsigned long to ptid.
+	(loaded_dll, pull_pid_from_list): Adjust.
+	(add_process, remove_process, find_process_pid)
+	(get_thread_process, current_process, initialize_inferiors): New.
+	* target.h (struct thread_resume) <thread>: Change type to ptid_t.
+	(struct target_waitstatus) <related_pid>: Ditto.
+	(struct target_ops) <kill, detach>: Add `pid' argument.  Change
+	return type to int.
+	(struct target_ops) <join>: Add `pid' argument.
+	(struct target_ops) <thread_alive>: Change pid's type to ptid_t.
+	(struct target_ops) <wait>: Add `ptid' field.  Change return type
+	to ptid.
+	(kill_inferior, detach_inferior, join_inferior): Add `pid' argument.
+	(mywait): Add `ptid' argument.  Change return type to ptid_t.
+	(target_pid_to_str): Declare.
+	* target.c (set_desired_inferior): Adjust to use ptids.
+	(mywait): Add new `ptid' argument.  Adjust.
+	(target_pid_to_str): New.
+	* mem-break.h (free_all_breakpoints): Declare.
+	* mem-break.c (breakpoints): Delelete.
+	(set_breakpoint_at, delete_breakpoint, find_breakpoint_at)
+	(check_mem_read, check_mem_write, delete_all_breakpoints): Adjust
+	to use per-process breakpoint list.
+	(free_all_breakpoints): New.
+	* remote-utils.c (struct sym_cache) <name>: Drop `const'.
+	(symbol_cache, all_symbols_looked_up): Delete.
+	(hexchars): New.
+	(ishex, unpack_varlen_hex, write_ptid, hex_or_minus_one,
+	read_ptid): New.
+	(prepare_resume_reply): Change ptid argument's type from unsigned
+	long to ptid_t.  Adjust.  Implement W;process and X;process.
+	(free_sym_cache, clear_symbol_cache): New.
+	(look_up_one_symbol): Adjust to per-process symbol cache.  *
+	* server.c (cont_thread, general_thread, step_thread): Change type
+	to ptid_t.
+	(attached): Delete.
+	(multi_process): New.
+	(last_ptid): Change type to ptid_t.
+	(struct vstop_notif) <ptid>: Change type to ptid_t.
+	(queue_stop_reply, push_event): Change `ptid' argument's type to
+	ptid_t.
+	(discard_queued_stop_replies): Add `pid' argument.
+	(start_inferior): Adjust to use ptids.  Adjust to mywait interface
+	changes.  Don't reference the `attached' global.
+	(attach_inferior): Adjust to mywait interface changes.
+	(handle_query): Adjust to use ptids.  Parse GDB's qSupported
+	features.  Handle and report "multiprocess+".  Handle
+	"qAttached:PID".
+	(handle_v_cont): Adjust to use ptids.  Adjust to mywait interface
+	changes.
+	(handle_v_kill): New.
+	(handle_v_stopped): Adjust to use target_pid_to_str.
+	(handle_v_requests): Allow multiple attaches and runs when
+	multiprocess extensions are in effect.  Handle "vKill".
+	(myresume): Adjust to use ptids.
+	(queue_stop_reply_callback): Add `arg' parameter.  Handle it.
+	(handle_status): Adjust to discard_queued_stop_replies interface
+	change.
+	(first_thread_of, kill_inferior_callback)
+	(detach_or_kill_inferior_callback, join_inferiors_callback): New.
+	(main): Call initialize_inferiors.  Adjust to use ptids, killing
+	and detaching from all inferiors.  Handle multiprocess packet
+	variants.
+	* linux-low.h: Include gdb_proc_service.h.
+	(struct process_info_private): New.
+	(struct linux_target_ops) <pid_of>: Use ptid_get_pid.
+	<lwpid_of>: Use ptid_get_lwp.
+	(get_lwp_thread): Adjust.
+	(struct lwp_info): Add `dead' member.
+	(find_lwp_pid): Declare.
+	* linux-low.c (thread_db_active): Delete.
+	(new_inferior): Adjust comment.
+	(inferior_pid): Delete.
+	(linux_add_process): New.
+	(handle_extended_wait): Adjust.
+	(add_lwp): Change unsigned long to ptid.
+	(linux_create_inferior): Add process to processes table.  Adjust
+	to use ptids.  Don't set new_inferior here.
+	(linux_attach_lwp): Rename to ...
+	(linux_attach_lwp_1): ... this.  Add `initial' argument.  Handle
+	it.  Adjust to use ptids.
+	(linux_attach_lwp): New.
+	(linux_attach): Add process to processes table.  Don't set
+	new_inferior here.
+	(struct counter): New.
+	(second_thread_of_pid_p, last_thread_of_process_p): New.
+	(linux_kill_one_lwp): Add `args' parameter.  Handle it.  Adjust to
+	multiple processes.
+	(linux_kill): Add `pid' argument.  Handle it.  Adjust to multiple
+	processes.  Remove process from process table.
+	(linux_detach_one_lwp): Add `args' parameter.  Handle it.  Adjust
+	to multiple processes.
+	(any_thread_of): New.
+	(linux_detach): Add `pid' argument, and handle it.  Remove process
+	from processes table.
+	(linux_join): Add `pid' argument.  Handle it.
+	(linux_thread_alive): Change unsighed long argument to ptid_t.
+	Consider dead lwps as not being alive.
+	(status_pending_p): Rename `dummy' argument to `arg'.  Filter out
+	threads we're not interested in.
+	(same_lwp, find_lwp_pid): New.
+	(linux_wait_for_lwp): Change `pid' argument's type from int to
+	ptid_t.  Adjust.
+	(linux_wait_for_event): Rename to ...
+	(linux_wait_for_event_1): ... this.  Change `pid' argument's type
+	from int to ptid_t.  Adjust.
+	(linux_wait_for_event): New.
+	(linux_wait_1): Add `ptid' argument.  Change return type to
+	ptid_t.  Adjust.  Use last_thread_of_process_p.  Remove processes
+	that exit from the process table.
+	(linux_wait): Add `ptid' argument.  Change return type to ptid_t.
+	Adjust.
+	(mark_lwp_dead): New.
+	(wait_for_sigstop): Adjust to use ptids.  If a process exits while
+	stopping all threads, mark its main lwp as dead.
+	(linux_set_resume_request, linux_resume_one_thread): Adjust to use
+	ptids.
+	(fetch_register, usr_store_inferior_registers)
+	(regsets_fetch_inferior_registers)
+	(regsets_store_inferior_registers, linux_read_memory)
+	(linux_write_memory): Inline `inferior_pid'.
+	(linux_look_up_symbols): Adjust to use per-process
+	`thread_db_active'.
+	(linux_request_interrupt): Adjust to use ptids.
+	(linux_read_auxv): Inline `inferior_pid'.
+	(initialize_low): Don't reference thread_db_active.
+	* gdb_proc_service.h (struct ps_prochandle) <pid>: Remove.
+	* proc-service.c (ps_lgetregs): Use find_lwp_pid.
+	(ps_getpid): Return the pid of the current inferior.
+	* thread-db.c (proc_handle, thread_agent): Delete.
+	(thread_db_create_event, thread_db_enable_reporting): Adjust to
+	per-process data.
+	(find_one_thread): Change argument type to ptid_t.  Adjust to
+	per-process data.
+	(maybe_attach_thread): Adjust to per-process data and ptids.
+	(thread_db_find_new_threads): Ditto.
+	(thread_db_init): Ditto.
+	* spu-low.c (spu_create_inferior, spu_attach): Add process to
+	processes table.  Adjust to use ptids.
+	(spu_kill, spu_detach): Adjust interface.  Remove process from
+	processes table.
+	(spu_join, spu_thread_alive): Adjust interface.
+	(spu_wait): Adjust interface.  Remove process from processes
+	table.  Adjust to use ptids.
+	* win32-low.c (current_inferior_tid): Delete.
+	(current_inferior_ptid): New.
+	(debug_event_ptid): New.
+	(thread_rec): Take a ptid.  Adjust.
+	(child_add_thread): Add `pid' argument.  Adjust to use ptids.
+	(child_delete_thread): Ditto.
+	(do_initial_child_stuff): Add `attached' argument.  Add process to
+	processes table.
+	(child_fetch_inferior_registers, child_store_inferior_registers):
+	Adjust.
+	(win32_create_inferior): Pass 0 to do_initial_child_stuff.
+	(win32_attach): Pass 1 to do_initial_child_stuff.
+	(win32_kill): Adjust interface.  Remove process from processes
+	table.
+	(win32_detach): Ditto.
+	(win32_join): Adjust interface.
+	(win32_thread_alive): Take a ptid.
+	(win32_resume): Adjust to use ptids.
+	(get_child_debug_event): Ditto.
+	(win32_wait): Adjust interface.  Remove exiting process from
+	processes table.
+
+2009-04-01  Pedro Alves  <pedro@codesourcery.com>
+
+	Non-stop mode support.
+
+	* server.h (non_stop): Declare.
+	(gdb_client_data, handler_func): Declare.
+	(delete_file_handler, add_file_handler, start_event_loop):
+	Declare.
+	(handle_serial_event, handle_target_event, push_event)
+	(putpkt_notif): Declare.
+	* target.h (enum resume_kind): New.
+	(struct thread_resume): Replace `step' field by `kind' field.
+	(TARGET_WNOHANG): Define.
+	(struct target_ops) <wait>: Add `options' argument.
+	<supports_non_stop, async, start_non_stop>: New fields.
+	(target_supports_non_stop, target_async): New.
+	(start_non_stop): Declare.
+	(mywait): Add `options' argument.
+	* target.c (mywait): Add `options' argument.  Print child exit
+	notifications here.
+	(start_non_stop): New.
+	* server.c (non_stop, own_buf, mem_buf): New globals.
+	(struct vstop_notif): New.
+	(notif_queue): New global.
+	(queue_stop_reply, push_event, discard_queued_stop_replies)
+	(send_next_stop_reply): New.
+	(start_inferior): Adjust to use resume_kind.  Adjust to mywait
+	interface changes.
+	(attach_inferior): In non-stop mode, don't wait for the target
+	here.
+	(handle_general_set): Handle QNonStop.
+	(handle_query): When handling qC, return the current general
+	thread, instead of the first thread of the list.
+	(handle_query): If the backend supports non-stop mode, include
+	QNonStop+ in the qSupported query response.
+	(handle_v_cont): Adjust to use resume_kind.  Handle resume_stop
+	and non-stop mode.
+	(handle_v_attach, handle_v_run): Handle non-stop mode.
+	(handle_v_stopped): New.
+	(handle_v_requests): Report support for vCont;t.  Handle vStopped.
+	(myresume): Adjust to use resume_kind.  Handle non-stop.
+	(queue_stop_reply_callback): New.
+	(handle_status): Handle non-stop mode.
+	(main): Clear non_stop flag on reconnection.  Use the event-loop.
+	Refactor serial protocol handling from here ...
+	(process_serial_event): ... to this new function.  When GDB
+	selects any thread, select one here.  In non-stop mode, wait until
+	GDB acks all pending events before exiting.
+	(handle_serial_event, handle_target_event): New.
+	* remote-utils.c (remote_open): Install remote_desc in the event
+	loop.
+	(remote_close): Remove remote_desc from the event loop.
+	(putpkt_binary): Rename to...
+	(putpkt_binary_1): ... this.  Add `is_notic' argument.  Handle it.
+	(putpkt_binary): New as wrapper around putpkt_binary_1.
+	(putpkt_notif): New.
+	(prepare_resume_reply): In non-stop mode, don't change the
+	general_thread.
+	* event-loop.c: New.
+	* Makefile.in (OBJ): Add event-loop.o.
+	(event-loop.o): New rule.
+
+	* linux-low.h (pid_of): Moved here.
+	(lwpid_of): New.
+	(get_lwp_thread): Use lwpid_of.
+	(struct lwp_info): Delete `lwpid' field.  Add `suspended' field.
+	* linux-low.c (pid_of): Delete.
+	(inferior_pid): Use lwpid_of.
+	(linux_event_pipe): New.
+	(target_is_async_p): New.
+	(delete_lwp): New.
+	(handle_extended_wait): Use lwpid_of.
+	(add_lwp): Don't set lwpid field.
+	(linux_attach_lwp): Adjust debug output.  Use lwpid_of.
+	(linux_kill_one_lwp): If killing a running lwp, stop it first.
+	Use lwpid_of.  Adjust to linux_wait_for_event interface changes.
+	(linux_detach_one_lwp): If detaching from a running lwp, stop it
+	first.  Adjust to linux_wait_for_event interface changes.  Use
+	lwpid_of.
+	(linux_detach): Don't delete the main lwp here.
+	(linux_join): Use my_waitpid.  Avoid signal_pid.  Use lwpid_of.
+	(status_pending_p): Don't consider explicitly suspended lwps.
+	(linux_wait_for_lwp): Take an integer pid instead of a lwp_info
+	pointer.  Add OPTIONS argument.  Change return type to int.  Use
+	my_waitpid instead of sleeping.  Handle WNOHANG.  Use lwpid_of.
+	(linux_wait_for_event): Take an integer pid instead of a lwp_info
+	pointer.  Add status pointer argument.  Return a pid instead of a
+	status.  Use lwpid_of.  Adjust to linux_wait_for_lwp interface
+	changes.  In non-stop mode, don't switch to a random thread.
+	(linux_wait): Rename to...
+	(linux_wait_1): ... this.  Add target_options argument, and handle
+	it.  Adjust to use resume_kind.  Use lwpid_of.  In non-stop mode,
+	don't handle the continue thread.  Handle TARGET_WNOHANG.  Merge
+	clean exit and signal exit code.  Don't stop all threads in
+	non-stop mode.  In all-stop mode, only stop all threads when
+	reporting a stop to GDB.  Handle explicit thread stop requests.
+	(async_file_flush, async_file_mark): New.
+	(linux_wait): New.
+	(send_sigstop): Use lwpid_of.
+	(wait_for_sigstop): Use lwpid_of.  Adjust to linux_wait_for_event
+	interface changes.  In non-stop mode, don't switch to a random
+	thread.
+	(linux_resume_one_lwp): Use lwpid_of.
+	(linux_continue_one_thread, linux_queue_one_thread): Merge into ...
+	(linux_resume_one_thread): ... this.  Handle resume_stop.  In
+	non-stop mode, don't look for pending flag in all threads.
+	(resume_status_pending_p): Don't consider explicitly suspended
+	threads.
+	(my_waitpid): Reimplement.  Emulate __WALL.
+	(linux_request_interrupt, linux_read_offsets, linux_xfer_siginfo):
+	Use lwpid_of.
+	(sigchld_handler, linux_supports_non_stop, linux_async)
+	(linux_start_non_stop): New.
+	(linux_target_ops): Register linux_supports_non_stop, linux_async
+	and linux_start_non_stop.
+	(initialize_low): Install SIGCHLD handler.
+	* thread-db.c (thread_db_create_event, find_one_thread)
+	(thread_db_get_tls_address): Use lwpid_of.
+	* win32-low.c (win32_detach): Adjust to use resume_kind.
+	(win32_wait): Add `options' argument.
+	* spu-low.c (spu_resume): Adjust to use resume_kind.
+	(spu_wait): Add `options' argument.
+
+2009-04-01  Pedro Alves  <pedro@codesourcery.com>
+
+	Decouple target code from remote protocol.
+
+	* target.h (enum target_waitkind): New.
+	(struct target_waitstatus): New.
+	(struct target_ops) <wait>: Return an unsigned long.  Take a
+	target_waitstatus pointer instead of a char pointer.
+	(mywait): Likewise.
+	* target.c (mywait): Change prototype to return an unsigned long.
+	Take a target_waitstatus pointer instead of a char pointer.  Adjust.
+	* server.h (thread_from_wait, old_thread_from_wait): Delete
+	declarations.
+	(prepare_resume_reply): Change prototype to take a
+	target_waitstatus.
+	* server.c (thread_from_wait, old_thread_from_wait): Delete.
+	(last_status, last_ptid): New.
+	(start_inferior): Remove "statusptr" argument.  Adjust.  Return a
+	pid instead of a signal.
+	(attach_inferior): Remove "status" and "signal" parameters.
+	Adjust.
+	(handle_query): For qGetTLSAddr, parse the thread id with strtol,
+	not as an address.
+	(handle_v_cont, handle_v_attach, handle_v_run, handle_v_kill)
+	(handle_v_requests, myresume): Remove "status" and "signal"
+	parameters.  Adjust.
+	(handle_status): New.
+	(main): Delete local `status'.  Adjust.
+	* remote-utils.c: Include target.h.
+	(prepare_resume_reply): Change prototype to take a
+	target_waitstatus.  Adjust.
+
+	* linux-low.c (linux_wait): Adjust to new target_ops->wait
+	interface.
+	* spu-low.c (spu_wait): Adjust.
+	* win32-low.c (enum target_waitkind, struct target_waitstatus):
+	Delete.
+	(win32_wait): Adjust.
+
+2009-04-01  Pedro Alves  <pedro@codesourcery.com>
+
+	* target.h (struct thread_resume): Delete leave_stopped member.
+	(struct target_ops): Add a `n' argument to the `resume' callback.
+	* server.c (start_inferior): Adjust.
+	(handle_v_cont, myresume): Adjust.
+	* linux-low.c (check_removed_breakpoint): Adjust to resume
+	interface change, and to removed leave_stopped field.
+	(resume_ptr): Delete.
+	(struct thread_resume_array): New.
+	(linux_set_resume_request): Add new `arg' parameter.  Adjust to
+	resume interface change.
+	(linux_continue_one_thread, linux_queue_one_thread)
+	(resume_status_pending_p): Check if the resume field is NULL
+	instead of checking the leave_stopped member.
+	(linux_resume): Adjust to the target resume interface change.
+	* spu-low.c (spu_resume): Adjust to the target resume interface
+	change.
+	* win32-low.c (win32_detach, win32_resume): Ditto.
+
+2009-04-01  Pedro Alves  <pedro@codesourcery.com>
+
+	* linux-low.c (linux_wait_for_event): Don't clear the `stepping'
+	flag.
+	(wait_for_sigstop): Don't leave a finished single-step SIGTRAP
+	pending.
+	(linux_continue_one_thread): Only preserve the stepping flag if
+	there's a pending breakpoint.
+
+2009-03-31  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (main): After the inferior having exited, call
+	remote_close before exiting gdbserver.
+
+2009-03-25  Thiago Jung Bauermann  <bauerman@br.ibm.com>
+
+	Fix size of FPSCR in Power 7 processors.
+	* linux-ppc-low.c (PPC_FEATURE_ARCH_2_05): Remove #define.
+	(PPC_FEATURE_HAS_DFP): New #define.
+	(ppc_arch_setup): Check for DFP feature instead of ISA 2.05 to decide on
+	size of the FPSCR.
+
+2009-03-23  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (handle_query) Whitespace and formatting.
+
+2009-03-22  Pedro Alves  <pedro@codesourcery.com>
+
+	* i387-fp.c, linux-arm-low.c, linux-cris-low.c,
+	linux-crisv32-low.c, linux-i386-low.c, linux-low.c,
+	linux-mips-low.c, linux-s390-low.c, linux-sparc-low.c,
+	linux-x86-64-low.c, linux-xtensa-low.c, proc-service.c,
+	regcache.c, remote-utils.c, server.c, spu-low.c, target.h,
+	thread-db.c, win32-low.c, xtensa-xtregs.c, gdbreplay.c,
+	Makefile.in, configure.ac: Fix whitespace throughout.
+	* configure: Regenerate.
+
+2009-03-22  Pedro Alves  <pedro@codesourcery.com>
+
+	* inferiors.c (find_inferior): Make it safe for the callback
+	function to delete the currently iterated inferior.
+
+2009-03-22  Pedro Alves  <pedro@codesourcery.com>
+
+	* Makefile.in (linuw_low_h): Move higher.
+	(thread-db.o): Depend on $(linux_low_h).
+
+2009-03-17  Pedro Alves  <pedro@codesourcery.com>
+
+	Rename "process" to "lwp" throughout.
+
+	* linux-low.c (all_processes): Rename to...
+	(all_lwps): ... this.
+	(inferior_pid, handle_extended_wait, get_stop_pc): Adjust.
+	(add_process): Rename to ...
+	(add_lwp): ... this.  Adjust.
+	(linux_create_inferior): Adjust.
+	(linux_attach_lwp): Adjust.
+	(linux_attach): Adjust.
+	(linux_kill_one_process): Rename to ...
+	(linux_kill_one_lwp): ... this.  Adjust.
+	(linux_kill): Adjust.
+	(linux_detach_one_process): Rename to ...
+	(linux_detach_one_lwp): ... this.  Adjust.
+	(linux_detach): Adjust.
+	(check_removed_breakpoint): Adjust.
+	(status_pending_p): Adjust.
+	(linux_wait_for_process): Rename to ...
+	(linux_wait_for_lwp): ... this.  Adjust.
+	(linux_wait_for_event): Adjust.
+	(send_sigstop): Adjust.
+	(wait_for_sigstop): Adjust.
+	(stop_all_processes): Rename to ...
+	(stop_all_lwps): ... this.
+	(linux_resume_one_process): Rename to ...
+	(linux_resume_one_lwp): ... this.  Adjust.
+	(linux_set_resume_request, linux_continue_one_thread)
+	(linux_queue_one_thread, resume_status_pending_p)
+	(usr_store_inferior_registers, regsets_store_inferior_registers)
+	(linux_request_interrupt, linux_read_offsets, linux_xfer_siginfo):
+	Adjust.
+	* linux-low.h (get_process): Rename to ...
+	(get_lwp): ... this.  Adjust.
+	(get_thread_process): Rename to ...
+	(get_thread_lwp): ... this.  Adjust.
+	(get_process_thread): Rename to ...
+	(get_lwp_thread): ... this.  Adjust.
+	(struct process_info): Rename to ...
+	(struct lwp_info): ... this.
+	(all_processes): Rename to ...
+	(all_lwps): ... this.
+	* proc-service.c (ps_lgetregs): Adjust.
+	* thread-db.c (thread_db_create_event, find_one_thread)
+	(maybe_attach_thread, thread_db_get_tls_address): Adjust.
+
+2009-03-14  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (handle_query): Handle "qAttached".
+
+2009-03-13  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* Makefile.in, hostio-errno.c, errno.c, xtensa-xtregs.c: Change to
+	GPLv3, update license URL.
+
+2009-03-01  Doug Evans  <dje@google.com>
+
+	* Makefile.in (INCLUDE_CFLAGS): Add -I$(srcdir)/../common.
+	(server_h): Add gdb_signals.h.
+	(signals.o): Update.
+	* server.h (target_signal_from_host,target_signal_to_host_p)
+	(target_signal_to_host,target_signal_to_name): Moved to gdb_signals.h.
+
+2009-02-14  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+	* remote-utils.c (getpkt): Also generate remote-debug
+	information if noack_mode is set.
+
+2009-02-06  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (handle_query): Report qXfer:siginfo:read and
+	qXfer:siginfo:write as supported and handle them.
+	* target.h (struct target_ops) <qxfer_siginfo>: New field.
+	* linux-low.c (linux_xfer_siginfo): New.
+	(linux_target_ops): Set it.
+
+2009-01-26  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (gdbserver_usage): Mention --remote-debug.
+	(main): Accept '--remote-debug' switch.
+
+2009-01-18  Doug Evans  <dje@google.com>
+
+	* regcache.c (new_register_cache): No need to check result of xcalloc.
+	* server.c (handle_search_memory): Back out calls to xmalloc,
+	result is checked and error is returned to user upon failure.
+	(handle_query): Ditto.  Add more checks for result of malloc.
+	(handle_v_cont): Check result of malloc, report error back to
+	user upon failure.
+	(handle_v_run): Ditto.  Call freeargv.
+	* server.h (freeargv): Declare.
+	* utils.c (freeargv): New fn.
+
+2009-01-15  Doug Evans  <dje@google.com>
+
+	* gdbreplay.c (perror_with_name): Make arg const char *.
+	* server.h (target_signal_to_name): Make return type const char *.
+	* thread-db.c (thread_db_err_str): Make return type const char *.
+	* utils.c (perror_with_name): Make arg const char *.
+
+2009-01-14  Pedro Alves  <pedro@codesourcery.com>
+
+	* win32-low.c (get_child_debug_event): Issue a final DBG_CONTINUE
+	when handling a EXIT_PROCESS_DEBUG_EVENT.
+
+2009-01-06  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbreplay.c (gdbreplay_version): Update copyright year.
+	* server.c (gdbserver_version): Likewise.
+
+2009-01-05  Doug Evans  <dje@google.com>
+
+	* linux-low.c (linux_attach_lwp): Add some comments/fixmes.
+	(handle_extended_wait): Improve comment.
+
+2008-12-13  Doug Evans  <dje@google.com>
+
+	* utils.c (xmalloc,xcalloc,xstrdup): New fns.
+	* server.h (ATTR_MALLOC): New macro.
+	(xmalloc,xcalloc,xstrdup): Declare.
+	* hostio.c: Replace malloc,calloc,strdup with xmalloc,xcalloc,xstrdup.
+	* inferiors.c: Ditto.
+	* linux-low.c: Ditto.
+	* mem-break.c: Ditto.
+	* regcache.c: Ditto.
+	* remote-utils.c: Ditto.
+	* server.c: Ditto.
+	* target.c: Ditto.
+	* win32-low.c: Ditto.
+
+2008-12-12  Doug Evans  <dje@google.com>
+
+	* linux-low.c (linux_wait_for_process): Don't clobber current_inferior
+	in debugging printf.
+
+	* linux-low.c (handle_extended_wait): Simplify, use my_waitpid.
+
+2008-12-09  Doug Evans  <dje@google.com>
+
+	* linux-low.h (struct process_info): Delete member tid, unused.
+	* thread-db.c (find_one_thread): Update.
+	(maybe_attach_thread): Update.
+
+2008-12-02  Pedro Alves  <pedro@codesourcery.com>
+
+	* target.h (struct target_ops): Add qxfer_osdata member.
+	* linux-low.c: Include ctype.h and pwd.h and sys/types.h
+	and dirent.h.
+	(linux_qxfer_osdata): New functions.
+	(linux_target_ops): Register linux_qxfer_osdata as qxfer_osdata
+	callback.
+	* server.c (handle_query): Handle "qXfer:osdata:read:".
+	* remote-utils.c (buffer_grow, buffer_free, buffer_init, buffer_finish)
+	(buffer_xml_printf): New functions.
+	* server.h (struct buffer): New.
+	(buffer_grow_str, buffer_grow_str0): New macros.
+	(buffer_grow, buffer_free, buffer_init, buffer_finish)
+	(buffer_xml_printf): Declare.
+
+2008-11-24  Doug Evans  <dje@google.com>
+
+	* Makefile.in (VERSION,DIST,LINT,LINTFLAGS): Delete, unused.
+
+2008-11-24  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (handle_v_run): Always use the supplied argument list.
+
+2008-11-19  Bob Wilson  <bob.wilson@acm.org>
+
+	* xtensa-xtregs.c (XTENSA_ELF_XTREG_SIZE): Change to 4.
+	(xtensa_regmap_table): Add entry for scompare1.
+
+2008-11-18  Thiago Jung Bauermann  <bauerman@br.ibm.com>
+
+	* Makefile.in (powerpc-isa205-32l.o, powerpc-isa205-32l.c,
+	powerpc-isa205-altivec32l.o, powerpc-isa205-altivec32l.c,
+	powerpc-isa205-vsx32l.o, powerpc-isa205-vsx32l.c,
+	powerpc-isa205-64l.o, powerpc-isa205-64l.c,
+	powerpc-isa205-altivec64l.o, powerpc-isa205-altivec64l.c,
+	powerpc-isa205-vsx64l.o, powerpc-isa205-vsx64l.c): New targets.
+	* configure.srv (powerpc*-*-linux*): Add ISA 2.05 object files and
+	XML target descriptions.
+	* linux-ppc-low.c (ppc_arch_setup): Init registers with 64-bit FPSCR
+	when inferior is running on an ISA 2.05 or later processor.  Add
+	special case to return offset for full 64-bit slot of FPSCR when
+	in 32-bits.
+
+2008-11-14  Daniel Gutson  <dgutson@codesourcery.com>
+
+	* Makefile.in (SFILES, clean): Added sparc64 files.
+	(reg-sparc64.o, reg-sparc64.c): New.
+	* configure.srv (sparc*-*-linux*): New configuration.
+	* linux-low.c (regsets_fetch_inferior_registers): Swap ptrace
+	syscall arguments for SPARC.
+	(regsets_store_inferior_registers): Likewise.
+	* linux-sparc-low.c: New file.
+
+2008-10-21  Doug Evans  <dje@google.com>
+
+	* Makefile.in (BFD_DIR,BFD,BFD_SRC,BFD_CFLAGS): Delete.
+	(READLINE_DIR,READLINE_DEP): Delete.
+	(INTERNAL_CFLAGS): Update.
+	(LINTFLAGS): Update.
+
+2008-10-10  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (handle_v_run): If GDB didn't specify an argv, use the
+	whole argv from the last run, not just argv[0].
+
+2008-09-08  Pedro Alves  <pedro@codesourcery.com>
+
+	* regcache.c (new_register_cache): Return NULL if the register
+	cache size isn't known yet.
+	(free_register_cache): Avoid dereferencing a NULL regcache.
+
+2008-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* configure.srv: Merge MIPS and MIPS64.
+
+2008-08-24  Maciej W. Rozycki  <macro@linux-mips.org>
+
+	* Makefile.in (uninstall): Apply $(EXEEXT) too.
+
+2008-08-18  Luis Machado  <luisgpm@br.ibm.com>
+
+	* Makefile.in: Add required vsx dependencies.
+
+	* linux-ppc-low: Define PPC_FEATURE_HAS_VSX.
+	Declare init_registers_powerpc_vsx32l.
+	Declare init_registers_powerpc_vsx64l.
+	Define PTRACE_GETVSXREGS and PTRACE_SETVSXREGS.
+	(ppc_arch_setup): Check for VSX in hwcap.
+	(ppc_fill_vsxregset): New function.
+	(ppc_store_vsxregset): New function.
+	Add new VSX entry in regset_info target_regsets.
+
+	* configure.srv: Add new VSX dependencies.
+
+2008-08-12  Pedro Alves  <pedro@codesourcery.com>
+
+	* remote-utils.c (noack_mode, transport_is_reliable): New globals.
+	(remote_open): Set or clear transport_is_reliable.
+	(putpkt_binary): Don't expect acks in noack mode.
+	(getpkt): Don't send ack/nac in noack mode.
+	* server.c (handle_general_set): Handle QStartNoAckMode.
+	(handle_query): If connected by tcp pass QStartNoAckMode+ in
+	qSupported.
+	(main): Reset noack_mode on every connection.
+	* server.h (noack_mode): Declare.
+
+2008-08-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+	* Makefile.in (GDBREPLAY_OBS): New variable.
+	(gdbreplay$(EXEEXT)): Use it to avoid unportable $^.
+
+2008-08-05  Ulrich Weigand  <uweigand@de.ibm.com>
+	    Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_resume_one_process): Ignore ESRCH.
+	(usr_store_inferior_registers): Likewise.
+	(regsets_store_inferior_registers): Likewise.
+
+2008-07-31  Rolf Jansen  <rj@surtec.com>
+	    Pedro Alves  <pedro@codesourcery.com>
+
+	* configure.ac: Check for memmem declaration.
+	* server.c [HAVE_MALLOC_H]: Include malloc.h.
+	(disable_packet_vCont, disable_packet_Tthread, disable_packet_qC)
+	(disable_packet_qfThreadInfo): Unconditionally compile.
+	* server.h [!HAVE_DECL_MEMMEM]: Declare memmem.
+	* configure, config.in: Regenerate.
+
+2008-07-28  Doug Kwan  <dougkwan@google.com>
+
+	* linux-low.c (sys/dir.h, sys/user.h): Remove includes.
+	(linux_write_memory): Remove declaration of errno.
+
+2008-07-12  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* linux-low.c (handle_extended_wait): Do not use "status"
+	variable uninitialized.
+
+2008-07-07  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (handle_v_attach): Inhibit reporting dll changes.
+
+2008-06-27  Pedro Alves  <pedro@codesourcery.com>
+
+	* remote-utils.c (prepare_resume_reply): If requested, don't
+	output "thread:TID" in the T stop reply.
+
+	* server.c (disable_packet_vCont, disable_packet_Tthread)
+	(disable_packet_qC, disable_packet_qfThreadInfo): New globals.
+	(handle_query): If requested, disable support for qC, qfThreadInfo
+	and qsThreadInfo.
+	(handle_v_requests): If requested, disable support for vCont.
+	(gdbserver_show_disableable): New.
+	(main): Handle --disable-packet and --disable-packet=LIST.
+
+	* server.h (disable_packet_vCont, disable_packet_Tthread)
+	(disable_packet_qC, disable_packet_qfThreadInfo): Declare.
+
+2008-06-20  Carlos O'Donell  <carlos@codesourcery.com>
+
+	* server.c (gdbserver_usage): Mention --version.
+
+2008-06-06  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (gdbreplay.o): New rule.
+
+2008-06-06  Joseph Myers  <joseph@codesourcery.com>
+
+	* gdbreplay.c (gdbreplay_version): Say gdbreplay in version
+	message, not gdbserver.
+
+2008-06-05  Vladimir Prus  <vladimir@codesourcery.com>
+	    Nathan Sidwell  <nathan@codesourcery.com>
+	    Joseph Myers  <joseph@codesourcery.com>
+
+	* acinclude.m4: Include ../../config/acx.m4.
+	* configure.ac: Use ACX_PKGVERSION and ACX_BUGURL.
+	* configure, config.in: Regenerate.
+	* Makefile.in (gdbreplay$(EXEEXT)): Add version.o.
+	* server.c (gdbserver_version): Print PKGVERSION.
+	(gdbsrever_usage): Add stream parameter.  Print REPORT_BUGS_TO.
+	(main): Adjust gdbserver_usage calls.
+	* gdbreplay.c (version, host_name): Add declarations.
+	(gdbreplay_version, gdbreplay_usage): New.
+	(main): Accept --version and --help options.
+
+2008-06-04  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-arm-low.c (thumb_breakpoint, thumb_breakpoint_len): New.
+	(arm_breakpoint_at): Handle Thumb.
+	(the_low_target): Add comment.
+
+2008-05-29  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* linux-ppc-low.c (ppc_collect_ptrace_register): Clear buffer.
+
+2008-05-09  Doug Evans  <dje@google.com>
+
+	* server.h (decode_search_memory_packet): Declare.
+	* remote-utils.c (decode_search_memory_packet): New fn.
+	* server.c (handle_search_memory_1): New fn.
+	(handle_search_memory): New fn.
+	(handle_query): Process qSearch:memory packets.
+
+2008-05-08  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* regcache.c (registers_length): Remove.
+	(set_register_cache): Verify that PBUFSIZ is large enough to hold a
+	full register packet.
+	* regcache.h (registers_length): Remove prototype.
+	* server.h (PBUFSIZ): Define to 16384.
+
+2008-05-03  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv (powerpc*-*-linux*): Set srv_regobj to
+	powerpc-32l.o, powerpc-altivec32l.o, powerpc-e500l.o,
+	powerpc-64l.o, and powerpc-altivec64l.o.
+	Remove rs6000/powerpc-32.xml, rs6000/powerpc-64.xml, and
+	rs6000/powerpc-e500.xml; add rs6000/powerpc-32l.xml,
+	rs6000/powerpc-altivec32l.xml, rs6000/powerpc-e500l.xml,
+	rs6000/powerpc-64l.xml, rs6000/powerpc-altivec64l.xml,
+	rs6000/power-linux.xml, and rs6000/power64-linux.xml
+	to srv_xmlfiles.
+
+	* Makefile.in (reg-ppc.o, reg-ppc.c): Remove, replace by ...
+	(powerpc-32l.o, powerpc-32l.c): ... these new rules.
+	(powerpc-32.o, powerpc-32.c): Remove, replace by ...
+	(powerpc-altivec32l.o, powerpc-altivec32l.c): ... these new rules.
+	(powerpc-e500.o, powerpc-e500.c): Remove, replace by ...
+	(powerpc-e500l.o, powerpc-e500l.c): ... these new rules.
+	(reg-ppc64.o, reg-ppc64.c): Remove, replace by ...
+	(powerpc-64l.o, powerpc-64l.c): ... these new rules.
+	(powerpc-64.o, powerpc-64.c): Remove, replace by ...
+	(powerpc-altivec64l.o, powerpc-altivec64l.c): ... these new rules.
+	(clean): Update.
+
+	* linux-ppc-low.c (init_registers_ppc): Remove, replace by ...
+	(init_registers_powerpc_32l): ... this new prototype.
+	(init_registers_powerpc_32): Remove, replace by ...
+	(init_registers_powerpc_altivec32l): ... this new prototype.
+	(init_registers_powerpc_e500): Remove, replace by ...
+	(init_registers_powerpc_e500l): ... this new prototype.
+	(init_registers_ppc64): Remove, replace by ...
+	(init_registers_powerpc_64l): ... this new prototype.
+	(init_registers_powerpc_64): Remove, replace by ...
+	(init_registers_powerpc_altivec64l): ... this new prototype.
+	(ppc_num_regs): Set to 73.
+	(PT_ORIG_R3, PT_TRAP): Define if necessary.
+	(ppc_regmap, ppc_regmap_e500): Add values for orig_r3 and trap.
+	(ppc_cannot_store_register): Handle orig_r3 and trap.
+	(ppc_arch_setup): Update init_registers_... calls.
+	(ppc_fill_gregset): Handle orig_r3 and trap.
+
+	* inferiors.c (clear_inferiors): Reset current_inferior.
+
+2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
+
+	* acinclude.m4: Add override.m4.
+	* configure: Regenerate.
+
+2008-04-21  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* linux-ppc-low.c (ppc_arch_setup): Reset ppc_hwcap after the
+	initial call to init_register_ppc64.
+
+2008-04-21  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv (powerpc64-*-linux*, powerpc-*-linux*): Merge into
+	single powerpc*-*-linux* case.
+	(s390-*-linux*, s390x-*-linux*): Merge into single s390*-*-linux* case.
+
+2008-04-17  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv [powerpc64-*-linux*]: Remove powerpc-e500.o from
+	srv_regobj.  Remove rs6000/powerpc-e500.xml and rs6000/power-spe.xml
+	from reg_xmlfiles.
+	* linux-ppc-low.c: Include <elf.h>.
+	(PPC_FEATURE_HAS_ALTIVEC, PPC_FEATURE_HAS_SPE): Define.
+	(ppc_hwcap): New global variable.
+	(ppc_regmap): Remove __SPE__ #ifdef sections.
+	(ppc_regmap_e500): New global variable.
+	(ppc_cannot_store_register): Update __SPE__ special case.
+	(ppc_get_hwcap): New function.
+	(ppc_arch_setup): Use it to determine whether inferior supports
+	AltiVec or SPE registers.  Set the_low_target.regmap if appropriate.
+	(ppc_fill_vrregset, ppc_store_vrregset): Define unconditionally.
+	Do not access registers if target does not support AltiVec.
+	(ppc_fill_evrregset, ppc_store_evrregset): Define unconditionally.
+	Do not access registers if target does not support SPE.
+	(target_regsets): Unconditionally include AltiVec and SPE regsets.
+
+2008-04-17  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (disabled_regsets, num_regsets): New.
+	(use_regsets_p): Delete.
+	(linux_wait_for_process): Clear disabled_regsets.
+	(regsets_fetch_inferior_registers): Check and set it.
+	(regsets_store_inferior_registers): Likewise.
+	(linux_fetch_registers, linux_store_registers): Do not use
+	use_regsets_p.
+	(initialize_low): Allocate disabled_regsets.
+
+2008-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (LIBOBJS): New.
+	(OBS): Use LIBOBJS.
+	(memmem.o): New rule.
+	* configure.ac: Use AC_CONFIG_LIBOBJ_DIR and check for memmem.
+	* configure: Regenerated.
+
+2008-04-04  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* server.c (handle_query): Never return "unsupported" for
+	qXfer:features:read queries.
+
+2008-03-27  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* server.c (get_features_xml): Fix inverted condition.
+	(handle_query): Always support qXfer:feature:read.
+
+2008-03-10  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (wrapper_argv): New.
+	(start_inferior): Handle wrapper_argv.  If set, expect an extra
+	trap.
+	(gdbserver_usage): Document --wrapper.
+	(main): Parse --wrapper.
+
+2008-02-28  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv [powerpc64-*-linux*]: Add all files mentioned for
+	powerpc-*-linux* to srv_regobj and reg_xmlfiles.
+	* linux-ppc-low.c (ppc_get_pc): Support bi-arch operation.
+	(ppc_set_pc): Likewise.
+	(ppc_arch_setup): New function.
+	(ppc_fill_gregset): Call ppc_collect_ptrace_register instead
+	of collect_register.
+	(the_low_target): Use ppc_arch_setup as arch_setup initializer.
+
+2008-02-28  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv [powerpc64-*-linux*]: Use linux-ppc-low.o
+	instead of linux-ppc64-low.o.
+	* linux-ppc64-low.c: Remove file.
+	* Makefile.in (SFILES): Remove linux-ppc64-low.c.
+	(linux-ppc64-low.o): Remove rule.
+
+	* linux-ppc-low.c (init_registers_ppc64): Add prototype.
+	(init_registers_powerpc_64): Likewise.
+	(ppc_regmap): Conditionally define depending on __powerpc64__.
+	(ppc_cannot_store_register): Do not special-case "fpscr" when
+	compiled on __powerpc64__.
+	(ppc_collect_ptrace_register): New function.
+	(ppc_supply_ptrace_register): New function.
+	(ppc_breakpoint): Change type to "unsigned int".
+	(ppc_breakpoint_at): Change type of "insn" to "unsigned int".
+	(the_low_target): Conditionally provide initializers for the
+	arch_setup member depending on __powerpc64__.  Install
+	collect_ptrace_register and supply_ptrace_register members.
+
+2008-02-28  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* regcache.h (gdbserver_xmltarget): Add extern declaration.
+	* server.c (gdbserver_xmltarget): Define.
+	(get_features_xml): Use it to replace "target.xml" and arch_string.
+
+	* configure.srv: Remove srv_xmltarget.  Add XML files that were
+	mentioned there to srv_xmlfiles instead.  Remove conditional tests
+	on gdb_cv_arm_iwmmxt, gdb_cv_ppc_altivec, gdb_cv_ppc_spe; set
+	srv_xmlfiles and srv_regobj to include all possible choices.
+	* configure.ac (srv_xmltarget): Remove.
+	(srv_xmlfiles): Do not add "target.xml".
+	(gdb_cv_arm_iwmmxt, gdb_cv_ppc_altivec, gdb_cv_ppc_spe): Remove
+	checks for supplementary target information.
+	* configure: Regenerate.
+	* Makefile.in (XML_TARGET): Remove.
+	(target.xml): Remove rule.
+	(clean): Do not clean up target.xml.
+	(.PRECIOUS): Do not mention target.xml.
+
+	* target.h (struct target_ops): Remove arch_string member.
+	* linux-low.c (linux_arch_string): Remove.
+	(linux_target_ops): Remove arch_string initializer.
+	* linux-low.h (struct linux_target_ops): Remove arch_string member.
+	* linux-i386-low.c (the_low_target): Remove arch_string initializer.
+	* linux-x86-64-low.c (the_low_target): Remove arch_string initializer.
+	* spu-low.c (spu_arch_string): Remove.
+	(spu_target_ops): Remove arch_string initializer.
+	* win32-low.c (win32_arch_string): Remove.
+	(win32_target_ops): Remove arch_string initializer.
+	* win32-low.h (struct win32_target_ops): Remove arch_string member.
+	* win32-arm-low.c (the_low_target): Remove arch_string initializer.
+	* win32-i368-low.c (the_low_target): Remove arch_string initializer.
+
+2008-02-27  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* linux-low.h (struct linux_target_ops): Replace left_pad_xfer field
+	by collect_ptrace_register and supply_ptrace_register hooks.
+	* linux-low.c (fetch_register): Use supply_ptrace_register callback
+	instead of checking for the_low_target.left_pad_xfer.
+	(usr_store_inferior_registers): Use collect_ptrace_register callback
+	instead of checking for the_low_target.left_pad_xfer.
+
+	* linux-s390-low.c (s390_collect_ptrace_register): New function.
+	(s390_supply_ptrace_register): Likewise.
+	(s390_fill_gregset): Call s390_collect_ptrace_register.
+	(the_low_target): Update.
+
+	* linux-ppc64-low.c (ppc_collect_ptrace_register): New function.
+	(ppc_supply_ptrace_register): Likewise.
+	(the_low_target): Update.
+
+	* linux-i386-low.c (the_low_target): Update.
+	* linux-x86-64-low.c (the_low_target): Update.
+
+2008-02-27  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv [s390x-*-linux*]: Set srv_regobj to include both
+	reg-s390.o and reg-s390x.o.
+
+	* linux-low.c (new_inferior): New global variable.
+	(linux_create_inferior, linux_attach): Set it.
+	(linux_wait_for_process): Call the_low_target.arch_setup after the
+	target has stopped for the first time.
+	(initialize_low): Do not call the_low_target.arch_setup.
+
+	* linux-s390-low.c (s390_get_pc): Support bi-arch operation.
+	(s390_set_pc): Likewise.
+	(s390_arch_setup): New function.
+	(the_low_target): Use s390_arch_setup as arch_setup routine.
+
+	* regcache.c (realloc_register_cache): New function.
+	(set_register_cache): Call it for each existing regcache.
+
+2008-02-27  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* server.h (init_registers): Remove prototype.
+
+	* linux-low.h (struct linux_target_ops): Add arch_setup field.
+	* linux-low.c (initialize_low): Call the_low_target.arch_setup ()
+	instead of init_registers ().
+	* linux-arm-low.c (init_registers_arm): Add prototype.
+	(init_registers_arm_with_iwmmxt): Likewise.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-cris-low.c (init_registers_cris): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-crisv32-low.c (init_registers_crisv32): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-i386-low.c (init_registers_i386_linux): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-ia64-low.c (init_registers_ia64): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-m32r-low.c (init_registers_m32r): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-m68k-low.c (init_registers_m68k): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-mips-low.c (init_registers_mips_linux): Add prototype.
+	(init_registers_mips64_linux): Likewise.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-ppc-low.c (init_registers_ppc): Add prototype.
+	(init_registers_powerpc_32, init_registers_powerpc_e500): Likewise.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-ppc64-low.c (init_registers_ppc64): Add prototype.
+	(init_registers_powerpc_64): Likewise.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-s390-low.c (init_registers_s390): Add prototype.
+	(init_registers_s390x): Likewise.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-sh-low.c (init_registers_sh): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-x86-64-low.c (init_registers_x86_64_linux): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+	* linux-xtensa-low.c (init_registers_xtensa): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+
+	* win32-low.h (struct win32_target_ops): Add arch_setup field.
+	* win32-low.c (initialize_low): Call the_low_target.arch_setup ()
+	instead of init_registers ().
+	* win32-arm-low.c (init_registers_arm): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+	* win32-i386-low.c (init_registers_i386): Add prototype.
+	(the_low_target): Add initializer for arch_setup field.
+
+	* spu-low.c (init_registers_spu): Add prototype.
+	(initialize_low): Call initialie_registers_spu () instead of
+	initialize_registers ().
+
+2008-02-19  Pedro Alves  <pedro@codesourcery.com>
+
+	* server.c (handle_v_requests): When handling the vRun and vAttach
+	packets, if already debugging a process, don't kill it.  Return an
+	error instead.
+
+2008-02-17  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (handle_query): Correct length check.
+
+2008-02-14  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (do_initial_child_stuff): Add process handle
+	parameter.  Set current_process_handle and current_process_id from the
+	parameters. Clear globals.
+	(win32_create_inferior): Don't set current_process_handle and
+	current_process_id here.  Instead pass them on the call to
+	do_initial_child_stuff.
+	(win32_attach): Likewise.
+	(win32_clear_inferiors): New.
+	(win32_kill): Don't close the current process handle or the
+	current thread handle here.  Instead call win32_clear_inferiors.
+	(win32_detach): Don't open a new handle to the process.  Call
+	win32_clear_inferiors.
+	(win32_join): Don't rely on current_process_handle; open a new
+	handle using the process id.
+	(win32_wait): Call win32_clear_inferiors when the inferior process
+	has exited.
+
+2008-02-14  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (monitor_show_help): Add "exit".
+
+2008-02-11  Maxim Grigoriev  <maxim2405@gmail.com>
+
+	* Makefile.in (SFILES): Add linux-xtensa-low.c.
+	(clean): Add reg-xtensa.c.
+	(linux-xtensa-low.o, reg-xtensa.o, reg-xtensa.c): New dependencies.
+	* configure.srv (xtensa*-*-linux*) New target.
+	* linux-xtensa-low.c: New.
+	* xtensa-xtregs.c: New.
+
+2008-02-01  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* hostio.c: Don't include errno.h.
+	(errno_to_fileio_errno): Move to hostio-errno.
+	* hostio.c: (hostio_error): Remove the error parameter.  Defer the
+	error number outputting to the target->hostio_last_error callback.
+	(hostio_packet_error): Use FILEIO_EINVAL directly.
+	(handle_open, handle_pread, hostio_error, handle_unlink): Update
+	calls to hostio_error.
+	* hostio-errno.c: New.
+	* server.h (hostio_last_error_from_errno): Declare.
+	* target.h (target_ops): Add hostio_last_error member.
+	* linux-low.c (linux_target_op): Register hostio_last_error_from_errno
+	as hostio_last_error handler.
+	* spu-low.c (spu_target_ops): Likewise.
+	* win32-low.c [_WIN32_WCE] (win32_error_to_fileio_error)
+	(wince_hostio_last_error): New functions.
+	(win32_target_ops) [_WIN32_WCE]: Register wince_hostio_last_error
+	as hostio_last_error handler.
+	(win32_target_ops) [!_WIN32_WCE]: Register
+	hostio_last_error_from_errno as hostio_last_error handler.
+	* Makefile.in (SFILES): Add hostio.c and hostio-errno.c.
+	(hostio-errno.o): New rule.
+	* configure.ac (GDBSERVER_DEPFILES): Add $srv_hostio_err_objs.
+	* configure.srv (srv_hostio_err_objs): New variable.  Default to
+	hostio-errno.o.
+	(arm*-*-mingw32ce*): Set srv_hostio_err_objs to "".
+	* configure: Regenerate.
+
+2008-01-29  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_attach_lwp): Do not _exit after errors.
+	(linux_kill, linux_detach): Clean up the process list.
+	* remote-utils.c (remote_open): Improve port number parsing.
+	(putpkt_binary, input_interrupt): Only send interrupts if the target
+	is running.
+	* server.c (extended_protocol): Make static.
+	(attached): Define earlier.
+	(exit_requested, response_needed, program_argv): New variables.
+	(target_running): New.
+	(start_inferior): Clear attached here.
+	(attach_inferior): Set attached here.
+	(require_running): Define.
+	(handle_query): Use require_running and target_running.  Implement
+	"monitor exit".
+	(handle_v_attach, handle_v_run): New.
+	(handle_v_requests): Use require_running.  Handle vAttach and vRun.
+	(gdbserver_usage): Update.
+	(main): Redo argument parsing.  Handle --debug and --multi.  Handle
+	--attach along with other options or after the port.  Save
+	program_argv.  Support no initial program.  Resynchronize
+	communication with GDB after an error.  Handle "monitor exit".
+	Use require_running and target_running.  Always allow the extended
+	protocol.  Do not error out for Hc0 or Hc-1.  Do not automatically
+	restart in extended mode.
+	* README: Refer to the GDB manual.  Update --attach usage.
+
+2007-12-20  Andreas Schwab  <schwab@suse.de>
+
+	* linux-low.c (STACK_SIZE): Define.
+	(linux_tracefork_child): Use it.  Use __clone2 on ia64.
+	(linux_test_for_tracefork): Likewise.
+
+2007-12-18  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_wait_for_event): Update messages.  Do not
+	reinsert auto-delete breakpoints.
+	* mem-break.c (struct breakpoint): Change return type of handler to
+	int.
+	(set_breakpoint_at): Update handler type.
+	(reinsert_breakpoint_handler): Return 1 instead of calling
+	delete_breakpoint.
+	(reinsert_breakpoint_by_bp): Check for the original breakpoint before
+	setting a new one.
+	(check_breakpoints): Delete auto-delete breakpoints and return 2.
+	* mem-break.h (set_breakpoint_at): Update handler type.
+	* thread-db.c (thread_db_create_event, thread_db_create_event): Update.
+	* win32-low.c (auto_delete_breakpoint): New.
+	(get_child_debug_event): Use it.
+
+2007-12-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* configure.ac: Check for pread and pwrite.
+	* hostio.c (handle_pread): Fall back to lseek and read.
+	(handle_pwrite): Fall back to lseek and write.
+	* config.in, configure: Regenerated.
+
+2007-12-07  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (myresume): Add own_buf argument.
+	(main): Update calls.
+
+2007-12-06  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_wait, linux_resume): Do not handle async I/O.
+	* remote-utils.c (remote_open): Do not call disable_async_io.
+	(block_async_io): Delete.
+	(unblock_async_io): Make static.
+	(initialize_async_io): New.
+	* server.c (handle_v_cont): Handle async I/O here.
+	(myresume): Likewise.  Move other common resume tasks here...
+	(main): ... from here.  Call initialize_async_io.  Disable async
+	I/O before the main loop.
+	* server.h (initialize_async_io): Declare.
+	(block_async_io, unblock_async_io): Delete prototypes.
+	* spu-low.c (spu_resume, spu_wait): Do not handle async I/O here.
+
+2007-12-06  Mick Davis  <mickd@goanna.iinet.net.au>
+
+	* remote-utils.c (readchar): Allow binary data in received messages.
+
+2007-12-03  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (attaching): New global.
+	(win32_create_inferior): Clear the `attaching' global.
+	(win32_attach): Set the `attaching' global.
+	(get_child_debug_event) [_WIN32_WCE]: Stop the inferior when
+	attaching.  Only set a breakpoint at the entry point if not
+	attaching.
+
+2007-12-03  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* server.c (main): Don't report dll events on the initial
+	connection on attaches.
+
+2007-12-03  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* server.c (main): Relax numerical bases supported for the pid of
+	the --attach command line argument.
+
+2007-12-03  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (win32_attach): Call OpenProcess before
+	DebugActiveProcess, not after.  Add last error output to error
+	call.
+
+2007-12-03  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (win32_get_thread_context)
+	(win32_set_thread_context): New functions.
+	(thread_rec): Use win32_get_thread_context.
+	(continue_one_thread, win32_resume): Use win32_set_thread_context.
+	* win32-low.h (win32_thread_info) [_WIN32_WCE]: Add `base_context'
+	field.
+
+2007-12-03  Leo Zayas
+	    Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (soft_interrupt_requested, faked_breakpoint): New
+	global variables.
+	(child_add_thread): Minor cleanup.
+	(child_continue): Resume artificially suspended threads before
+	calling ContinueDebugEvent.
+	(suspend_one_thread): New.
+	(fake_breakpoint_event): New.
+	(get_child_debug_event): Change return type to int.  Check here if
+	gdb sent an interrupt request.  If a soft interrupt was requested,
+	fake a breakpoint event.  Return 0 if there is no event to handle,
+	and 1 otherwise.
+	(win32_wait): Don't check here if gdb sent an interrupt request.
+	Ensure there is a valid event to handle.
+	(win32_request_interrupt): Add soft interruption method as last
+	resort.
+
+2007-12-03  Leo Zayas
+	    Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.h (win32_thread_info): Add descriptions to the
+	structure members.  Replace `suspend_count' counter by a
+	`suspended' flag.
+	* win32-low.c (thread_rec): Update condition of when to get the
+	context from the inferior.  Rely on ContextFlags being set if it
+	has already been retrieved.  Only suspend the inferior thread if
+	we haven't already.  Warn if that fails.
+	(continue_one_thread): s/suspend_count/suspended/.  Only call
+	ResumeThread once.  Warn if that fails.
+
+2007-12-02  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (win32_wait): Don't read from the inferior when it
+	has already exited.
+
+2007-12-02  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* Makefile.in (win32_low_h): New variable.
+	(win32-low.o): Add dependency on $(win32_low_h).
+	(win32-arm-low.o, win32-i386-low.o): New rules.
+
+2007-11-30  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* hostio.c: Correct copyright year.
+
+2007-11-30  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (OBS): Add hostio.o.
+	(hostio.o): New rule.
+	* server.h (handle_vFile): Declare.
+	* hostio.c: New file.
+	* server.c (handle_v_requests): Take packet_len and new_packet_len
+	for binary packets.  Call handle_vFile.
+	(main): Update call to handle_v_requests.
+
+2007-11-05  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c: Include <sched.h>.
+
+2007-11-01  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_tracefork_grandchild): New.
+	(linux_tracefork_child): Use clone.
+	(linux_test_for_tracefork): Use clone; allocate and free a stack.
+
+2007-10-31  Joel Brobecker  <brobecker@adacore.com>
+
+	* Makefile.in: Use $(SHELL) instead of "sh" to call regdat.sh.
+
+2007-10-24  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (handle_extended_wait): Handle unexpected signals.
+
+2007-10-23  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* inferiors.c (change_inferior_id): Delete.
+	(add_pid_to_list, pull_pid_from_list): New.
+	* linux-low.c (PTRACE_SETOPTIONS, PTRACE_GETEVENTMSG)
+	(PTRACE_O_TRACESYSGOOD, PTRACE_O_TRACEFORK, PTRACE_O_TRACEVFORK)
+	(PTRACE_O_TRACECLONE, PTRACE_O_TRACEEXEC, PTRACE_O_TRACEVFORKDONE)
+	(PTRACE_O_TRACEEXIT, PTRACE_EVENT_FORK, PTRACE_EVENT_VFORK)
+	(PTRACE_EVENT_CLONE, PTRACE_EVENT_EXEC, PTRACE_EVENT_VFORK_DONE)
+	(PTRACE_EVENT_EXIT, __WALL): Provide default definitions.
+	(stopped_pids, thread_db_active, must_set_ptrace_flags): New variables.
+	(using_threads): Always set to 1.
+	(handle_extended_wait): New.
+	(add_process): Do not set TID.
+	(linux_create_inferior): Set must_set_ptrace_flags.
+	(linux_attach_lwp): Remove TID argument.  Do not check using_threads.
+	Use PTRACE_SETOPTIONS.  Call new_thread_notify.  Update all callers.
+	(linux_thread_alive): Rename TID argument to LWPID.
+	(linux_wait_for_process): Handle unknown processes.  Do not use TID.
+	(linux_wait_for_event): Do not use TID or check using_threads.  Update
+	call to dead_thread_notify.  Call handle_extended_wait.
+	(linux_create_inferior): Use PTRACE_SETOPTIONS.
+	(send_sigstop): Delete sigstop_sent.
+	(wait_for_sigstop): Avoid TID.
+	(linux_supports_tracefork_flag, linux_tracefork_child, my_waitpid)
+	(linux_test_for_tracefork): New.
+	(linux_lookup_signals): Use thread_db_active and
+	linux_supports_tracefork_flag.
+	(initialize_low): Use thread_db_active and linux_test_for_tracefork.
+	* linux-low.h (get_process_thread): Avoid TID.
+	(struct process_ifo): Move thread_known and tid to the end.  Remove
+	sigstop_sent.
+	(linux_attach_lwp, thread_db_init): Update prototypes.
+	* server.h (change_inferior_id): Delete prototype.
+	(add_pid_to_list, pull_pid_from_list): New prototypes.
+	* thread-db.c (thread_db_use_events): New.
+	(find_first_thread): Rename to...
+	(find_one_thread): ...this.  Update callers and messages.  Do not
+	call fatal.  Check thread_db_use_events.  Do not call
+	change_inferior_id or new_thread_notify.
+	(maybe_attach_thread): Update.  Do not call new_thread_notify.
+	(thread_db_init): Set thread_db_use_events.  Check use_events.
+	* utils.c (fatal, warning): Correct message prefix.
+
+2007-10-15  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (clean): Remove new files.
+	(powerpc-32.o, powerpc-32.c, powerpc-e500.o, powerpc-e500.c)
+	(powerpc-64.o, powerpc-64.c): New rules.
+	* configure.srv: Use alternate register sets for powerpc64-*-linux*
+	with AltiVec, powerpc-*-linux* with AltiVec, and powerpc-*-linux*
+	with SPE.
+	* linux-ppc-low.c (ppc_regmap): Do not fetch the FP registers for
+	SPE targets.
+	(ppc_cannot_store_register): Do not check for FPSCR for SPE targets.
+	(PTRACE_GETVRREGS, PTRACE_SETVRREGS, SIZEOF_VRREGS, ppc_fill_vrregset)
+	(ppc_store_vrregset, PTRACE_GETEVRREGS, PTRACE_SETEVRREGS)
+	(struct gdb_evrregset_t, ppc_fill_evrregset, ppc_store_evrregset): New.
+	(target_regsets): Add AltiVec and SPE register sets.
+	* configure.ac: Check for AltiVec and SPE.
+	* linux-ppc64-low.c (PTRACE_GETVRREGS, PTRACE_SETVRREGS, SIZEOF_VRREGS)
+	(ppc_fill_vrregset, ppc_store_vrregset): New.
+	(target_regsets): Add AltiVec register set.
+	* configure: Regenerated.
+
+2007-09-19  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (O_LARGEFILE): Define.
+	(linux_read_memory): Use /proc/PID/mem.
+	* configure.ac: Use AC_GNU_SOURCE.  Check for pread64.
+	* configure, config.in: Regenerated.
+
+2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_wait_for_event): Do not pass signals while
+	single-stepping.
+
+2007-09-03  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (create_process): New.
+	(win32_create_inferior): Use create_process instead of
+	CreateProcess.  If create_process failed retry appending an ".exe"
+	suffix.  Store the GetLastError result immediatelly after
+	create_process calls and use it on the call to error.
+
+2007-09-03  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (handle_load_dll): Don't use toolhelp when waiting.
+
+2007-08-23  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.ac: Switch license to GPLv3.
+
+2007-08-01  Michael Snyder  <msnyder@access-company.com>
+
+	* remote-utils.c (putpkt_binary): Memory leak, free buf2.
+
+2007-07-31  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (winapi_CloseToolhelp32Snapshot) [_WIN32_WCE]: New
+	typedef.
+	(win32_CloseToolhelp32Snapshot) [_WIN32_WCE]: New global var.
+	(load_toolhelp) [_WIN32_WCE]: Load TOOLHELP.DLL.  Get
+	CloseToolhelp32Snapshot.
+	(toolhelp_get_dll_name) [_WIN32_WCE]: Close the snapshot with
+	CloseToolhelp32Snapshot.
+
+2007-07-27  Michael Snyder  <michael.snyder@access-company.com>
+
+	* server.c (main): Check for inferior exit before main loop.
+
+2007-07-18  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* remote-utils.c (remote_open): Set SO_KEEPALIVE on remote_desc
+	instead of on tmp_desc.
+
+2007-07-17  Pedro Alves  <pedro_alves@portugalmail.pt>
+	    Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* inferiors.c (all_dlls, dlls_changed, get_dll): New.
+	(add_thread): Minor cleanups.
+	(clear_inferiors): Move lower in the file.  Clear the DLL
+	list.
+	(free_one_dll, match_dll, loaded_dll, unloaded_dll, clear_list): New.
+	* remote-utils.c (prepare_resume_reply): Check dlls_changed.
+	(xml_escape_text): New.
+	* server.c (handle_query): Handle qXfer:libraries:read.  Report it
+	for qSupported.
+	(handle_v_cont): Report errors.
+	(gdbserver_version): Update.
+	(main): Correct size of own_buf.  Do not report initial DLL events.
+	* server.h (struct dll_info, all_dlls, dlls_changed, loaded_dll)
+	(unloaded_dll, xml_escape_text): New.
+	* win32-low.c (enum target_waitkind): Update comments.
+	(win32_add_one_solib, get_image_name, winapi_EnumProcessModules)
+	(winapi_GetModuleInformation, winapi_GetModuleFileNameExA)
+	(win32_EnumProcessModules, win32_GetModuleInformation)
+	(win32_GetModuleFileNameExA, load_psapi, psapi_get_dll_name)
+	(winapi_CreateToolhelp32Snapshot, winapi_Module32First)
+	(winapi_Module32Next, win32_CreateToolhelp32Snapshot)
+	(win32_Module32First, win32_Module32Next, load_toolhelp)
+	(toolhelp_get_dll_name, handle_load_dll, handle_unload_dll): New.
+	(get_child_debug_event): Handle DLL events.
+	(win32_wait): Likewise.
+
+2007-07-12  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* configure.srv: Set srv_linux_regsets for sh*-*-linux*.
+	* linux-sh-low.c (sh_fill_gregset, target_regsets): New.
+
+2007-07-08  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (handle_output_debug_string): Ignore event if not
+	waiting.
+
+2007-07-08  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-arm-low.c (arm_wince_breakpoint): Fix typo.
+
+2007-07-03  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* remote-utils.c (look_up_one_symbol): Handle 'm' packets.
+
+2007-07-02  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* inferiors.c (change_inferior_id): Add comment.
+	* linux-low.c (check_removed_breakpoint): Add an early
+	prototype.  Improve debug output.
+	(linux_attach): Doc update.
+	(linux_detach_one_process, linux_detach): Clean up before releasing
+	each process.
+	(send_sigstop, wait_for_sigstop): Improve comments and debug output.
+	* linux-low.h (struct process_info): Doc improvement.
+	* mem-break.c (delete_all_breakpoints): New.
+	* mem-break.h (delete_all_breakpoints): New prototype.
+	* thread-db.c (find_first_thread): New.
+	(thread_db_create_event): Call it instead of
+	thread_db_find_new_threads.  Clean up unused variables.
+	(maybe_attach_thread): Remove first thread handling.
+	(thread_db_find_new_threads): Use find_first_thread.
+	(thread_db_get_tls_address): Likewise.
+
+2007-06-27  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* thread-db.c (thread_db_find_new_threads): Add prototype.
+	(thread_db_create_event): Check for the main thread before adding
+	a new thread.
+	(maybe_attach_thread): Only enable event reporting if TID == 0.
+	(thread_db_get_tls_address): Check for new threads.
+
+2007-06-20  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_create_inferior): Try execv before execvp.
+	* spu-low.c (spu_create_inferior): Likewise.
+
+2007-06-13  Mike Frysinger  <vapier@gentoo.org>
+
+	* linux-low.c (linux_create_inferior): Change execv to execvp.
+	* spu-low.c (spu_create_inferior): Likewies.
+
+2007-06-13  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (clean): Clean new files instead of deleted ones.
+	(reg-mips.o, reg-mips.c, reg-mips64.o, reg-mips64.c): Delete.
+	(mips-linux.o, mips-linux.c, mips64-linux.o, mips64-linux.c): New
+	rules.
+	* configure.srv: Specify XML files and new regformats for MIPS and
+	MIPS64 GNU/Linux.
+	* linux-mips-low.c (mips_num_regs): Set to only used registers.
+	(mips_regmap): Do not fetch $0.  Remove unused registers.  Add
+	an entry for the restart register.
+	(mips_cannot_fetch_register, mips_cannot_store_register)
+	(mips_reinsert_addr, mips_fill_fpregset, mips_store_fpregset): Update
+	register names to match the XML descriptions.
+	(mips_fill_gregset, mips_store_gregset): Likewise.  Handle the
+	restart register instead of $0.
+
+2007-06-12  Ulrich Weigand  <uweigand@de.ibm.com>
+	    Markus Deuling  <deuling@de.ibm.com>
+
+	* remote-utils.c (decode_xfer_write): New function.
+	* server.h (decode_xfer_write): Add prototype.
+	* server.c (handle_query): Add PACKET_LEN argument.  Support
+	qXfer:spu:read and qXfer:spu:write packets.
+	(main): Pass packet_len to handle_query.
+	* spu-low.c (spu_target_ops): Add spu_proc_xfer_spu.
+	* target.h (target_ops): Add qxfer_spu.
+
+2007-06-12  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* spu-low.c (spu_proc_xfer_spu): Do not return failure when
+	accessing non-seekable spufs files.
+
+2007-05-16  Markus Deuling  <deuling@de.ibm.com>
+
+	* server.c (handle_query): Add reply for qC packet.
+
+2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
+	    Leo Zayas  <lerele@champenstudios@com>
+
+	* server.h (check_remote_input_interrupt_request): New function.
+	* remote_utils.c (INVALID_DESCRIPTOR): New define.
+	(remote_desc): Initialize with INVALID_DESCRIPTOR.
+	(input_interrupt): Expose on USE_WIN32API too.  Fix whitespace.
+	(check_remote_input_interrupt_request): New function.
+	* server.h (check_remote_input_interrupt_request): Declare.
+	* win32-low.c (winapi_DebugBreakProcess,
+	winapi_GenerateConsoleCtrlEvent): New typedefs.
+	(get_child_debug_event): Lower Win32 debug event polling from 1 sec
+	to 250 ms.
+	(win32_wait): Check for remote interrupt request
+	with check_remote_input_interrupt_request.
+	(win32_request_interrupt): New function.
+	(win32_target_op): Set request_interrupt to win32_request_interrupt.
+
+2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (debug_registers_changed,
+	debug_registers_used, CONTEXT_EXTENDED_REGISTERS,
+	CONTEXT_FLOATING_POINT, CONTEXT_DEBUG_REGISTERS,
+	CONTEXT_DEBUGGER, CONTEXT_DEBUGGER_DR): Delete.
+	(thread_rec): Get context using the low target.
+	(child_add_thread): Call thread_added on the low target,
+	which does the same thing.
+	(regptr): Delete.
+	(do_initial_child_stuff): Remove debug registers references.
+	Set context using the low target.  Resume threads after
+	setting the contexts.
+	(child_continue): Remove dead variable.  Remove debug
+	registers references.
+	(child_fetch_inferior_registers): Go through the low target.
+	(do_child_store_inferior_registers): Remove.
+	(child_store_inferior_registers): Go through the low target.
+	(win32_resume): Remove debug registers references.
+	Set context using the low target.
+	(handle_exception): Change return type to void.  Don't record
+	context here.  Set status to TARGET_WAITKIND_SPURIOUS on a
+	first chance exception.
+	(get_child_debug_event): Change return type to void.  Remove
+	goto loop.  Always return after waiting for debug event.
+	(win32_wait): Convert to switch statement.  Handle spurious
+	events.
+
+	* win32-i386-low.c (debug_registers_changed,
+	debug_registers_used): New.
+	(initial_stuff): Rename to ...
+	(i386_initial_stuff): ... this.  Clear debug registers
+	state variables.
+	(store_debug_registers): Delete.
+	(i386_get_thread_context): New.
+	(load_debug_registers): Delete.
+	(i386_set_thread_context): New.
+	(i386_thread_added): New.
+	(single_step): Rename to ...
+	(i386_single_step): ... this.
+	(do_fetch_inferior_registers): Rename to ...
+	(i386_fetch_inferior_register): ... this.
+	(i386_store_inferior_register): New.
+	(the_low_target): Adapt to new interface.
+
+	* win32-arm-low.c (CONTEXT_FLOATING_POINT): Define.
+	(arm_get_thread_context): New.
+	(arm_set_thread_context): New.
+	(regptr): New.
+	(do_fetch_inferior_registers): Rename to ...
+	(arm_fetch_inferior_register): ... this.
+	(arm_store_inferior_register): New.
+	(arm_wince_breakpoint): Reimplement as unsigned long.
+	(arm_wince_breakpoint_len): Define.
+	(the_low_target): Adapt to new interface.
+
+	* win32-low.h (target_ops): Remove regmap, store_debug_registers and
+	load_debug_registers.  Add get_thread_context, set_thread_context,
+	thread_added and store_inferior_register.  Rename
+	fetch_inferior_registers to fetch_inferior_register.
+	(regptr): Remove declaration.
+
+2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* linux-low.c (linux_detach): Change return type to int.  Return 0.
+	* spu-low.c (spu_detach): Likewise.
+
+2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* target.h (target_ops): Change return type of detach to int.
+	Add join.
+	(join_inferior): New.
+	* server.c (main): Don't skip detach support on mingw32.
+	If the inferior doesn't support detaching return error.
+	Call join_inferior instead of using waitpid.
+	* linux-low.c (linux_join): New.
+	(linux_target_op): Add linux_join.
+	* spu-low.c (spu_join): New.
+	(spu_target_ops): Add spu_join.
+	* win32-low.c (win32_detach): Adapt to new interface.
+	Reopen current_process_handle before detaching.  Issue a child
+	resume before detaching.
+	(win32_join): New.
+	(win32_target_op): Add win32_join.
+
+2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (win32-attach): Fix return value.
+	* target.h (target_ops): Describe ATTACH return values.
+
+2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (GETPROCADDRESS): Define.
+	(winapi_DebugActiveProcessStop): Add WINAPI.  typedef as pointer.
+	(winapi_DebugSetProcessKillOnExit): Likewise.
+	(win32_create_inferior): Force usage of ansi CreateProcessA.
+	(win32_attach): Use GETPROCADDRESS.
+	(win32_detach): Likewise.
+
+2007-05-10  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c (win32_wait): Don't use WSTOPSIG.
+
+2007-03-30  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c: Commit leftover changes from 2007-03-29.
+
+2007-03-30  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* i387-fp.c (struct i387_fsave, struct i387_fxsave): Make 16-bit
+	fields short instead of int.  Add explicit padding.
+	(i387_cache_to_fsave): Remove unnecessary casts.
+	(i387_fsave_to_cache): Doc fix.
+	(i387_cache_to_fxsave): Remove unnecessary casts and masking.
+
+2007-03-30  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* i387-fp.c (i387_cache_to_fxsave): Reinitialize val2 before use.
+	(i387_fxsave_to_cache): Check fp->ftag while building ftag value.
+
+2007-03-29  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* configure.srv (arm*-*-mingw32ce*): Move near the other
+	arm targets.
+
+2007-03-29  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* configure.ac: Add errno checking.
+	(AC_CHECK_HEADERS): Add errno.h, fcntl.h, signal.h,
+	sys/file.h and malloc.h.
+	(AC_CHECK_DECLS): Add perror.
+	(srv_mingwce): Handle.
+	* configure.srv (i[34567]86-*-cygwin*): Add
+	win32-i386-low.o to srv_tgtobj.
+	(i[34567]86-*-mingw*): Likewise.
+	(arm*-*-mingw32ce*): Add case.
+	* gdbreplay.c [HAVE_SYS_FILE_H, HAVE_SIGNAL_H,
+	HAVE_FCNTL_H, HAVE_ERRNO_H, HAVE_MALLOC_H]: Check.
+	[__MINGW32CE__] (strerror): New function.
+	[__MINGW32CE__] (errno): Define to GetLastError.
+	[__MINGW32CE__] (COUNTOF): New macro.
+	(remote_open): Remove extra close call.
+	* mem-break.c (delete_breakpoint_at): New function.
+	* mem-break.h (delete_breakpoint_at): Declare.
+	* remote-utils.c [HAVE_SYS_FILE_H, HAVE_SIGNAL_H,
+	HAVE_FCNTL_H, HAVE_UNISTD_H, HAVE_ERRNO_H]: Check.
+	[USE_WIN32API] (read, write): Add char* casts.
+	* server.c [HAVE_UNISTD_H, HAVE_SIGNAL_H]: Check.
+	* server.h: Include wincecompat.h on Windows CE.
+	[HAVE_ERRNO_H]: Check.
+	(perror): Declare if not declared.
+	* utils.c: Add stdlib.h, errno.h and malloc.h includes.
+	(perror_with_name): Remove errno declaration.
+	* wincecompat.h: New.
+	* wincecompat.c: New.
+	* win32-low.h: New.
+	* win32-arm-low.c: New.
+	* win32-i386-low.c: New.
+	(win32-low.c): Include mem-break.h and win32-low.h, and winnt.h.
+	(OUTMSG2): Make it safe.
+	(_T): New macro.
+	(COUNTOF): New macro.
+	(NUM_REGS): Get it from the low target.
+	(CONTEXT_EXTENDED_REGISTERS, CONTEXT_FLOATING_POINT,
+	CONTEXT_DEBUG_REGISTERS): Add fallbacks to 0.
+	(thread_rec): Let low target handle debug registers.
+	(child_add_thread): Likewise.
+	(child_init_thread_list): Likewise.
+	(continue_one_thread): Likewise.
+	(regptr): New.
+	(do_child_fetch_inferior_registers): Move to ...
+	* win32-i386-low.c: ... here, and rename to ...
+	(do_fetch_inferior_registers): ... this.
+	* win32-low.c (child_fetch_inferior_registers):
+	Go through the low target.
+	(do_child_store_inferior_registers): Use regptr.
+	(strwinerror): New function.
+	(win32_create_inferior): Handle Windows CE.
+	Use strwinerror instead of strerror on Windows error
+	codes.  Add program to the error output.
+	Don't close the main thread handle on Windows CE.
+	(win32_attach): Use coredll.dll on Windows CE.
+	(win32_kill): Close current process and current
+	thread handles.
+	(win32_detach): Use coredll.dll on Windows CE.
+	(win32_resume): Let low target handle debug registers, and
+	step request.
+	(handle_exception): Add/Remove initial breakpoint.  Avoid
+	non-existant WSTOPSIG on Windows CE.
+	(win32_read_inferior_memory): Cast to remove warning.
+	(win32_arch_string): Go through the low target.
+	(initialize_low): Call set_breakpoint_data with the low
+	target's breakpoint.
+	* win32-low.c (dr, FLAG_TRACE_BIT, FCS_REGNUM,
+	FOP_REGNUM, mappings): Move to ...
+	* win32-i386-low.c: ... here.
+	* win32-low.c (win32_thread_info): Move to ...
+	* win32-low.h: ... here.
+	* Makefile.in (SFILES): Add win32-low.c, win32-i386-low.c,
+	win32-arm-low.c and wincecompat.c.
+	(all:): Add $EXEEXT.
+	(install-only:): Likewise.
+	(gdbserver:): Likewise.
+	(gdbreplay:): Likewise.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
+2007-03-28  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-low.c: Rename typedef thread_info to
+	win32_thread_info throughout.
+
+2007-03-28  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* win32-i386-low.c: Rename to ...
+	* win32-low.c: ... this.
+	* configure.srv: Replace win32-i386-low.o with win32-low.o.
+	* Makefile.in: Likewise.
+
+2007-03-27  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* remote-utils.c (monitor_output): Constify msg parameter.
+	* server.h (monitor_output): Likewise.
+	* win32-i386-low.c (handle_output_debug_string): New.
+	(win32_kill): Handle OUTPUT_DEBUG_STRING_EVENT events using
+	handle_output_debug_string.
+	(get_child_debug_event): Likewise.
+
+2007-03-27  Mat Hostetter  <mat@lcs.mit.edu>
+
+	* server.c (main): Correct strtoul check.
+
+2007-03-27  Jon Ringle  <jon@ringle.org>
+
+	* linux-low.c: Check __ARCH_HAS_MMU__ also.
+
+2007-03-27  Brooks Moses  <brooks.moses@codesourcery.com>
+
+	* Makefile.in: Add dummy "pdf" and "install-pdf" targets.
+
+2007-02-27  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* terminal.h: Check HAVE_SGTTY_H.
+
+2007-02-27  Mat Hostetter  <mat@lcs.mit.edu>
+
+	* remote-utils.c (remote_open): Print out the assigned port number.
+
+2007-02-26  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* remote-utils.c (monitor_output): New function.
+	* server.c (debug_threads): Define here.
+	(monitor_show_help): New function.
+	(handle_query): Handle qRcmd.
+	(main): Do not handle 'd' packet.
+	* server.h (debug_threads, remote_debug, monitor_output): Declare.
+	* linux-low.c, spu-low.c, win32-i386-low.c: Remove definitions
+	of debug_threads.
+
+2007-02-25  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* Makefile.in (EXEEXT): New.
+	(clean): Use $(EXEEXT).
+
+2007-02-25  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* target.h (target_ops): Rename send_signal to request_interrupt,
+	and remove enum target_signal parameter.
+	* linux-low.c (linux_request_interrupt): Rename from
+	linux_send_signal, and always send SIGINT.
+	* spu-low.c (spu_request_interrupt): Rename from spu_send_signal,
+	and always send SIGINT.
+	* remote-utils.c (putpkt_binary): Call request_interrupt, instead
+	of send_signal.
+	(input_interrupt): Likewise.
+
+2007-02-25  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+	* server.c (get_features_xml): Check if target implemented
+	arch_string.
+	* win32-i386-low.c (win32_arch_string): New.
+	(win32_target_ops): Add win32_arch_string as arch_string member.
+
+2007-02-22  Markus Deuling  <deuling@de.ibm.com>
+
+	* spu-low.c (spu_arch_string): New.
+	(spu_target_ops): Add spu_arch_string.
+
+2007-02-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* remote-utils.c: Remove HAVE_TERMINAL_H check.
+	* configure.ac: Do not check for terminal.h.
+	* configure, config.in: Regenerated.
+
+2007-02-08  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (OBS): Add $(XML_BUILTIN).
+	(XML_DIR, XML_TARGET, XML_FILES, XML_BUILTIN): New.
+	(clean): Update.
+	(target.xml, xml-builtin.c, stamp-xml, arm-with-iwmmxt.o)
+	(arm-with-iwmmxt.c): New.
+	* config.in, configure: Regenerate.
+	* configure.ac: Check for iWMMXt.  Handle srv_xmltarget,
+	srv_xmlbuiltin, and srv_xmlfiles.  Define USE_XML.
+	* configure.srv: Mention srv_xmltarget and srv_xmlfiles.
+	(arm*-*-linux*): Add iWMMXt and regset support.
+	* linux-arm-low.c (PTRACE_GETWMMXREGS, PTRACE_SETWMMXREGS): Define.
+	(arm_fill_gregset, arm_store_gregset, arm_fill_wmmxregset)
+	(arm_store_wmmxregset, target_regsets): New.
+	* server.c (get_features_xml): Take annex argument.  Check builtin
+	XML documents.
+	(handle_query): Handle multiple annexes.
+
+2007-01-29  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* remote-utils.c [USE_WIN32API] (read, write): Define.
+	(putpkt_binary, input_interrupt, readchar, getpkt): Use read and
+	write.
+
+2007-01-09  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-i386-low.c (the_low_target): Set arch_string.
+	* linux-x86-64-low.c (the_low_target): Likewise.
+	* linux-low.c (linux_arch_string): New.
+	(linux_target_ops): Add it.
+	* linux-low.h (struct linux_target_ops): Add arch_string.
+	* server.c (write_qxfer_response): Use const void * for DATA.
+	(get_features_xml): New.
+	(handle_query): Handle qXfer:features:read.  Report it for qSupported.
+	* target.h (struct target_ops): Add arch_string method.
+
+2007-01-03  Denis Pilat  <denis.pilat@st.com>
+	    Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_kill): Handle being called with no threads.
+	* win32-i386-low.c (win32_kill): Likewise.
+	(get_child_debug_event): Clear current_process_handle.
+
+2006-12-30  Denis PILAT  <denis.pilat@st.com>
+	    Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* remote-utils.c (remote_open): Check the type of specified
+	serial port devices before opening them.
+	* server.c (main): Kill the inferior if an error occurs during
+	the first remote_open.
+
+2006-12-05  Markus Deuling  <deuling@de.ibm.com>
+
+	* README: Update supported targets.
+
+2006-11-28  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (clean): Remove reg-mips64.c.
+	(reg-mips64.c, reg-mips64.o): New rules.
+	* configure.srv: Handle mips64.  Include regset support for mips.
+	* linux-mips-low.c (union mips_register): New.
+	(mips_get_pc, mips_set_pc, mips_reinsert_addr): Use it.
+	(mips_breakpoint, mips_breakpoint_at): Use int.
+	(mips_collect_register, mips_supply_register)
+	(mips_collect_register_32bit, mips_supply_register_32bit)
+	(mips_fill_gregset, mips_store_gregset, mips_fill_fpregset)
+	(mips_store_fpregset, target_regsets): New.
+	* thread-db.c (thread_db_get_tls_address): Use uintptr_t.
+
+2006-11-22  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv: Add target "spu*-*-*".
+	* Makefile.in (clean): Remove reg-spu.c.
+	(reg-spu.c, reg-spu.o, spu-low.o): Add dependencies.
+	* spu-low.c: New file.
+
+2006-11-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* configure.ac: Correct td_thr_tls_get_addr test.
+	* configure: Regenerated.
+
+2006-11-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_wait_for_event): Reformat.  Use the
+	pass_signals array.
+	* remote-utils.c (decode_address_to_semicolon): New.
+	* server.c (pass_signals, handle_general_set): New.
+	(handle_query): Mention QPassSignals for qSupported.
+	(main): Call handle_general_set.
+	* server.h (pass_signals, decode_address_to_semicolon): New.
+
+2006-11-06  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (handle_query): Correct error handling for read_auxv.
+
+2005-10-19  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* configure.srv [s390-*-linux*, s390x-*-linux*]: Set srv_linux_regsets
+	and srv_linux_thread_db to yes.
+	* linux-s390-low.c (s390_fill_gregset): New function.
+	(target_regsets): Define data structure.
+
+2006-10-17  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* acinclude.m4 (SRV_CHECK_TLS_GET_ADDR): New.
+	* configure.ac: Use it.  Define HAVE_TD_THR_TLS_GET_ADDR.
+	* config.in, configure: Regenerated.
+	* inferiors.c (gdb_id_to_thread): New function.
+	(gdb_id_to_thread_id): Use it.
+	* linux-low.c (linux_target_ops): Use thread_db_get_tls_address.
+	* linux-low.h (struct process_info): Add th member.
+	(thread_db_get_tls_address): New prototype.
+	* remote-utils.c (decode_address): Make non-static.
+	* server.c (handle_query): Handle qGetTLSAddr.
+	* server.h (gdb_id_to_thread, decode_address): New prototypes.
+	* target.h (struct target_ops): Add get_tls_address.
+	* thread-db.c (maybe_attach_thread): Save the thread handle.
+	(thread_db_get_tls_address): New.
+
+2006-09-28  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (PTRACE_GETSIGINFO, PTRACE_SETSIGINFO): Define.
+	(linux_resume_one_process): Take a siginfo_t *.  Update all
+	callers.  Queue it if necessary.  Use PTRACE_SETSIGINFO.
+	(struct pending_signals): Add a siginfo_t.
+	(linux_wait_for_process): Always set last_status.
+	(linux_wait_for_event): Use PTRACE_GETSIGINFO.
+	(linux_queue_one_thread): Use PTRACE_GETSIGINFO.
+	* linux-low.h (struct process_info): Add last_status.
+
+2006-09-21  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* remote-utils.c (try_rle): New function.
+	(putpkt_binary): Use it.
+
+2006-08-19  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (clean): Clean reg-x86-64-linux.c.
+	(reg-x86-64-linux.o, reg-x86-64-linux.c): New.
+	* configure.srv (x86_64-*-linux*): Use reg-x86-64-linux.o.
+	* linux-x86-64-low.c (x86_64_regmap): Include ORIG_RAX.
+	(x86_64_fill_gregset, x86_64_store_gregset): Skip floating
+	point registers.
+
+2006-08-08  Richard Sandiford  <richard@codesourcery.com>
+
+	* server.c (terminal_fd): New variable.
+	(old_foreground_pgrp): Likewise.
+	(restore_old_foreground_pgrp): New function.
+	(start_inferior): Record the terminal file descriptor in terminal_fd
+	and its original foreground group in old_foreground_pgrp.  Register
+	restore_old_foreground_pgrp with atexit().
+
+2006-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (handle_query): Correct qPart to qXfer.
+
+2006-07-22  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* configure.ac: Check for more headers which are missing on
+	Windows.  Automatically supply -lwsock32 and USE_WIN32API.
+	* configure.srv: Add Cygwin and mingw32.
+	* remote-utils.c: Don't include headers unconditionally which
+	are missing on mingw32.  Include <winsock.h> for mingw32.
+	(remote_open): Adjust for mingw32 support.  Flush
+	standard error after writing to it.
+	(remote_close, putpkt_binary, input_interrupt, block_async_io)
+	(unblock_async_io, enable_async_io, disable_async_io)
+	(readchar, getpkt): Update for Winsock support.
+	(prepare_resume_reply): Expect a protocol signal number.
+	* server.c: Disable <sys/wait.h> on mingw32.
+	(start_inferior): Adjust for mingw32 support.  Flush
+	standard error after writing to it.
+	(attach_inferior): Likewise.  Use protocol signal
+	numbers.
+	(main): Skip 'D' packet on mingw32.  Use protocol signal numbers
+	and names.
+	* win32-i386-low.c: New file.
+	* Makefile.in (XM_CLIBS): Set.
+	(gdbserver, gdbreplay): Use $(INTERNAL_CFLAGS).
+	(win32-i386-low.o): New dependency rule.
+	* linux-low.c (linux_wait): Use target signal numbers.
+	* target.h (struct target_ops): Doc fix.
+	* server.h (target_signal_to_name): New prototype.
+	* gdbreplay.c: Don't include headers unconditionally which
+	are missing on mingw32.  Include <winsock.h> for mingw32.
+	(remote_close, remote_open): Adjust for Winsock support.
+	* configure, config.in: Regenerated.
+
+2006-07-12  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (decode_xfer_read, write_qxfer_response): New.
+	(handle_query): Take a packet length argument.  Handle
+	qXfer:auxv:read instead of qPart:auxv:read.  Mention it in
+	the qSupported response.
+	(main): Update call to handle_query.
+
+2006-06-22  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* remote-utils.c (remote_escape_output, remote_unescape_input): New.
+	(putpkt_binary): Renamed from putpkt and adjusted for binary
+	data.
+	(putpkt): New wrapper for putpkt_binary.
+	(readchar): Don't mask off the high bit.
+	(decode_X_packet): New function.
+	* server.c (main): Call putpkt_binary if a handler sets the packet
+	length.  Save the length of the incoming packet.  Handle 'X'.
+	* server.h (gdb_byte, remote_escape_output, decode_X_packet): New.
+
+2006-06-21  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (handle_query): Handle qSupported.
+
+2006-05-30  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* remote-utils.c (all_symbols_looked_up): New variable.
+	(look_up_one_symbol): Check it.
+	* server.h (look_up_one_symbol): New declaration.
+	* thread-db.c (thread_db_init): Set all_symbols_looked_up.
+
+2006-05-30  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (linux-arm-low.o): Update dependencies.
+	* linux-arm-low.c: Include "gdb_proc_service.h".
+	(PTRACE_GET_THREAD_AREA): Define.
+	(ps_get_thread_area): New function.
+
+2006-05-09  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* configure.srv (m68k*-*-uclinux*): New target.
+	* linux-low.c (linux_create_inferior): Use vfork on mmuless systems.
+	(linux_resume_one_process): Remove extraneous cast.
+	(linux_read_offsets): New.
+	(linux_target_op): Add linux_read_offsets on mmuless systems.
+	* server.c (handle_query): Add qOffsets logic.
+	* target.h (struct target_ops): Add read_offsets.
+
+2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-mips-low.c: Include <sys/ptrace.h> and "gdb_proc_service.h".
+	(PTRACE_GET_THREAD_AREA): Define.
+	(ps_get_thread_area): New function.
+	* Makefile.in (linux-i386-low.o, linux-mips-low.o)
+	(linux-x86-64-low.o): Update.
+
+2006-03-15  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* configure.ac: Remove checks for prfpregset_t.
+	* gdb_proc_service.h: New file.
+	* linux-i386-low.c, linux-x86-64-low.c, thread-db.c: Use the
+	new "gdb_proc_service.h".
+	* proc-service.c: Likewise.
+	(ps_pglobal_lookup, ps_pdread, ps_pdwrite): Use psaddr_t.
+	(ps_lgetfpregs, ps_lsetfpregs): Use a void* argument.
+	* Makefile.in (gdb_proc_service_h): Updated.
+	* configure, config.in: Regenerated.
+
+2006-03-03  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* remote-utils.c (prepare_resume_reply): Move declaration
+	of gdb_id_from_wait to the top of the block.
+
+2006-02-15  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (regsets_store_inferior_registers): Read the regset
+	from the target before filling it.
+
+2006-02-08  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (attach_inferior): Return SIGTRAP for a successful
+	attach.
+
+2006-02-01  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (OBS): Add version.o.
+	(STAGESTUFF): Delete.
+	(version.o): Add dependencies.
+	(version.c): Replace rule.
+	(clean): Remove version.c.
+	* server.c (gdbserver_version): New.
+	(gdbserver_usage): Use printf.
+	(main): Handle --version and --help.
+	* server.h (version, host_name): Add declarations.
+
+2005-12-23  Eli Zaretskii  <eliz@gnu.org>
+
+	* linux-arm-low.c:
+	* linux-arm-low.c:
+	* inferiors.c:
+	* i387-fp.h:
+	* i387-fp.c:
+	* gdbreplay.c:
+	* regcache.c:
+	* proc-service.c:
+	* mem-break.h:
+	* mem-break.c:
+	* linux-x86-64-low.c:
+	* linux-sh-low.c:
+	* linux-s390-low.c:
+	* linux-ppc64-low.c:
+	* linux-ppc-low.c:
+	* linux-mips-low.c:
+	* linux-m68k-low.c:
+	* linux-m32r-low.c:
+	* linux-low.h:
+	* linux-low.c:
+	* linux-ia64-low.c:
+	* linux-i386-low.c:
+	* linux-crisv32-low.c:
+	* thread-db.c:
+	* terminal.h:
+	* target.h:
+	* target.c:
+	* server.h:
+	* server.c:
+	* remote-utils.c:
+	* regcache.h:
+	* utils.c:
+	* Makefile.in:
+	* configure.ac:
+	* gdbserver.1: Add (C) after Copyright.  Update the FSF
+	address.
+
+2005-11-13  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-arm-low.c (arm_eabi_breakpoint): New variable.
+	(arm_breakpoint_at): Recognize both breakpoints.
+	(the_low_target): Use the correct breakpoint instruction.
+
+2005-11-02  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* configure.srv (x86_64-*-linux*): Turn on thread_db support.
+	* linux-x86-64-low.c (x86_64_breakpoint, x86_64_breakpoint_len)
+	(x86_64_get_pc, x86_64_set_pc, x86_64_breakpoint_at): New.
+	(the_low_target): Update.
+
+2005-10-25  Andreas Schwab  <schwab@suse.de>
+
+	* server.c (main): Allocate mem_buf with PBUFSIZ bytes.
+
+	* linux-ia64-low.c (ia64_regmap): Remove NAT registers.
+	(ia64_num_regs): Reduce to 462.
+
+2005-09-17  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* acinclude.m4: Correct quoting.
+	* aclocal.m4: Regenerated.
+
+	Suggested by SZOKOVACS Robert <szo@ies.hu>:
+	* thread-db.c (thread_db_err_str): Handle TD_VERSION.
+	(thread_db_init): Call thread_db_err_str.
+	* configure.ac: Check for TD_VERSION.
+	* config.in, configure: Regenerated.
+
+2005-07-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+	* server.h (error, fatal, warning): Add ATTR_FORMAT.
+
+2005-07-13  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* configure.ac: Define HAVE_LINUX_REGSETS even if PTRACE_GETREGS
+	is not available.  Define HAVE_PTRACE_GETREGS if it is.
+	* config.in, configure: Regenerated.
+	* configure.srv: Set srv_linux_regsets for PowerPC and PowerPC64.
+	* linux-i386-low.c, linux-m68k-low.c: Update to use
+	HAVE_PTRACE_GETREGS.
+	* linux-low.c (regsets_fetch_inferior_registers)
+	(regsets_store_inferior_registers): Only return 0 if we processed
+	GENERAL_REGS.
+	* linux-ppc-low.c (ppc_fill_gregset, target_regsets): New.
+	* linux-ppc64-low.c (ppc_fill_gregset, target_regsets): New.
+
+2005-07-13  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* inferiors.c (struct thread_info): Add gdb_id.
+	(add_thread): Add gdb_id argument.
+	(thread_id_to_gdb_id, thread_to_gdb_id, gdb_id_to_thread_id): New.
+	* linux-low.c (linux_create_inferior, linux_attach_lwp): Update
+	calls to add_thread.
+	* remote-utils.c (prepare_resume_reply: Use thread_to_gdb_id.
+	* server.c (handle_query): Use thread_to_gdb_id.
+	(handle_v_cont, main): Use gdb_id_to_thread_id.
+	* server.h (add_thread): Update prototype.
+	(thread_id_to_gdb_id, thread_to_gdb_id, gdb_id_to_thread_id): New
+	prototypes.
+
+2005-07-13  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (fetch_register, usr_store_inferior_registers): Handle
+	left-padded registers.
+	* linux-low.h (struct linux_target_ops): Add left_pad_xfer.
+	* linux-ppc64-low.c (the_low_target): Set left_pad_xfer.
+
+2005-07-01  Steve Ellcey  <sje@cup.hp.com>
+
+	* configure.ac (BFD_NEED_DECLARATION): Replace with AC_CHECK_DECLS.
+	* configure: Regenerate.
+	* config.in: Regenerate.
+	* server.h (NEED_DECLARATION_STRERROR):
+	Replace with !HAVE_DECL_STRERROR.
+
+2005-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* linux-low.c (linux_wait, linux_send_signal): Don't test
+	an unsigned long variable for > 0 if it could be MAX_ULONG.
+	* server.c (myresume): Likewise.
+	* target.c (set_desired_inferior): Likewise.
+
+2005-06-13  Mark Kettenis  <kettenis@gnu.org>
+
+	* configure.ac: Simplify and improve check for socklen_t.
+	* configure, config.in: Regenerate.
+
+2005-06-12  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* acconfig.h: Remove.
+	* configure.ac: Add a test for socklen_t.  Use three-argument
+	AC_DEFINE throughout.
+	* config.in: Regenerated using autoheader 2.59.
+	* configure: Regenerated.
+
+	* gdbreplay.c (socklen_t): Provide a default.
+	(remote_open): Use socklen_t.
+	* remote-utils.c (socklen_t): Provide a default.
+	(remote_open): Use socklen_t.
+	(convert_int_to_ascii, convert_ascii_to_int, decode_M_packet): Use
+	unsigned char.
+
+	* i387-fp.c (struct i387_fsave, struct i387_fxsave): Use unsigned
+	char for buffers.
+	* linux-low.c (linux_read_memory, linux_write_memory)
+	(linux_read_auxv): Likewise.
+	* mem-break.c (breakpoint_data, set_breakpoint_data, check_mem_read)
+	(check_mem_write): Likewise.
+	* mem-break.h (set_breakpoint_data, check_mem_read, check_mem_write):
+	Likewise.
+	* regcache.c (struct inferior_rgcache_data, registers_to_string)
+	(registers_from_string, register_data): Likewise.
+	* server.c (handle_query, main): Likewise.
+	* server.h (convert_ascii_to_int, convert_int_to_ascii)
+	(decode_M_packet): Likewise.
+	* target.c (read_inferior_memory, write_inferior_memory): Likewise.
+	* target.h (struct target_ops): Update read_memory, write_memory,
+	and read_auxv.
+	(read_inferior_memory, write_inferior_memory): Update.
+	* linux-low.h (struct linux_target_ops): Change type of breakpoint
+	to unsigned char *.
+	* linux-arm-low.c, linux-cris-low.c, linux-crisv32-low.c,
+	linux-i386-low.c, linux-m32r-low.c, linux-m68k-low.c,
+	linux-mips-low.c, linux-ppc-low.c, linux-ppc64-low.c,
+	linux-s390-low.c, linux-sh-low.c: Update for changes in
+	read_inferior_memory and the_low_target->breakpoint.
+
+2005-05-28  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (SFILES): Add linux-ppc64-low.c.
+	(linux-ppc64-low.o, reg-ppc64.c, reg-ppc64.o): New targets.
+	* configure.srv: Add powerpc64-*-linux*.
+	* linux-ppc64-low.c: New file.
+
+2005-05-23  Orjan Friberg  <orjanf@axis.com>
+
+	* linux-cris-low.c: New file with support for CRIS.
+	* linux-crisv32-low.c: Ditto for CRISv32.
+	* Makefile.in (SFILES): Add linux-cris-low.c, linux-crisv32-low.c.
+	(clean): Add reg-cris.c and reg-crisv32.c.
+	Add linux-cris-low.o, linux-crisv32-low.o, reg-cris.o, reg-cris.c,
+	reg-crisv32.o, and reg-crisv32.c to make rules.
+	* configure.srv: Add cris-*-linux* and crisv32-*-linux* to list of
+	recognized targets.
+
+2005-05-16  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* linux-low.c (fetch_register): Ensure buffer size is a multiple
+	of sizeof (PTRACE_XFER_TYPE).
+	(usr_store_inferior_registers): Likewise.  Zero out excess bytes.
+
+2005-05-12  Orjan Friberg  <orjanf@axis.com>
+
+	* target.h (struct target_ops): Add insert_watchpoint,
+	remove_watchpoint, stopped_by_watchpoint, stopped_data_address function
+	pointers for hardware watchpoint support.
+	* linux-low.h (struct linux_target_ops): Ditto.
+	* linux-low.c (linux_insert_watchpoint, linux_remove_watchpoint)
+	(linux_stopped_by_watchpoint, linux_stopped_data_address): New.  Add
+	to linux_target_ops.
+	* remote-utils.c (prepare_resume_reply): Add watchpoint information to
+	reply packet.
+	* server.c (main): Recognize 'Z' and 'z' packets.
+
+2005-05-10  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* linux-s390-low.c (s390_breakpoint, s390_breakpoint_len): Define.
+	(s390_get_pc, s390_set_pc, s390_breakpoint_at): New functions.
+	(the_low_target): Add new members.
+
+2005-05-04  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* proc-service.c (ps_lgetregs): Search all_processes instead of
+	all_threads.
+
+2005-05-04  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* server.c (start_inferior): Change return type to int.
+	(attach_inferior): Change sigptr to int *.
+	(handle_v_cont, handle_v_requests): Change signal to int *.
+	(main): Change signal to int.
+
+2005-04-15  Kei Sakamoto  <sakamoto.kei@renesas.com>
+
+	* Makefile.in: Add linux-m32r-low.o, reg-m32r.c and reg-m32r.o.
+	* configure.srv: Add m32r*-*-linux*.
+	* linux-m32r-low.c: New file.
+
+2005-03-04  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* Makefile.in (stamp-h): Set CONFIG_HEADERS explicitly.
+
+2005-03-03  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* inferiors.c (change_inferior_id, add_thread, find_inferior_id):
+	Take unsigned long arguments for PIDs.
+	* linux-low.c (add_process, linux_attach_lwp, linux_attach)
+	(linux_thread_alive, linux_wait_for_event, kill_lwp, send_sigstop)
+	(wait_for_sigstop, linux_resume_one_process)
+	(regsets_fetch_inferior_registers, linux_send_signal)
+	(linux_read_auxv): Likewise.  Update the types of variables holding
+	PIDs.  Update format string specifiers.
+	* linux-low.h (struct process_info, linux_attach_lwp): Likewise.
+	* remote-utils.c (prepare_resume_reply): Likewise.
+	* server.c (cont_thread, general_thread, step_thread)
+	(thread_from_wait, old_thread_from_wait, signal_pid): Change type to
+	unsigned long.
+	(handle_query): Update format specifiers.
+	(handle_v_cont, main): Use strtoul for thread IDs.
+	* server.h (struct inferior_list_entry): Use unsigned long for ID.
+	(add_thread, find_inferior_id, change_inferior_id, cont_thread)
+	(general_thread, step_thread, thread_from_wait)
+	(old_thread_from_wait): Update.
+	* target.h (struct thread_resume): Use unsigned long for THREAD.
+	(struct target_ops): Use unsigned long for arguments to attach and
+	thread_alive.
+
+2005-02-24  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* acinclude.m4: Include bfd/bfd.m4 directly.
+	* configure.ac: Use AC_ARG_PROGRAM.  Suggested by Aron Griffis
+	<agriffis@toolchain.org>.
+	* aclocal.m4, configure: Regenerated.
+
+2005-01-07  Andrew Cagney  <cagney@gnu.org>
+
+	* configure.ac: Rename configure.in, require autoconf 2.59.
+	* configure: Re-generate.
+
+2004-12-08  Daniel Jacobowitz  <dan@debian.org>
+
+	* acinclude.m4 (SRV_CHECK_THREAD_DB): Add ps_get_thread_area.  Reset
+	LIBS when finished.
+	* aclocal.m4: Regenerated.
+	* configure: Regenerated.
+
+2004-11-21  Andreas Schwab  <schwab@suse.de>
+
+	* linux-m68k-low.c (m68k_num_gregs): Define.
+	(m68k_fill_gregset, m68k_store_gregset, m68k_fill_fpregset)
+	(m68k_store_fpregset, target_regsets) [HAVE_LINUX_REGSETS]: New.
+	(m68k_breakpoint, m68k_breakpoint_len, m68k_get_pc, m68k_set_pc)
+	(m68k_breakpoint_at): New.  Add to the_low_target.
+
+	* configure.srv (m68*-*-linux*): Set srv_linux_regsets and
+	srv_linux_thread_db to yes.
+
+2004-10-20  Joel Brobecker  <brobecker@gnat.com>
+
+	* linux-x86-64-low.c (ARCH_SET_GS): Add definition if missing.
+	(ARCH_SET_FS): Likewise.
+	(ARCH_GET_FS): Likewise.
+	(ARCH_GET_GS): Likewise.
+
+2004-10-16  Daniel Jacobowitz  <dan@debian.org>
+
+	* linux-i386-low.c (ps_get_thread_area): New.
+	* linux-x86-64-low.c (ps_get_thread_area): New.
+	* linux-low.c: Include <sys/syscall.h>.
+	(linux_kill_one_process): Don't kill the first thread here.
+	(linux_kill): Kill the first thread here.
+	(kill_lwp): New function.
+	(send_sigstop, linux_send_signal): Use it.
+	* proc-service.c: Clean up #ifdefs.
+	(fpregset_info): Delete.
+	(ps_lgetregs): Update and enable implementation.
+	(ps_lsetregs, ps_lgetfpregs, ps_lsetfpregs): Remove disabled
+	implementations.
+	* remote-utils.c (struct sym_cache, symbol_cache): New.
+	(input_interrupt): Print a clearer message.
+	(async_io_enabled): New variable.
+	(enable_async_io, disable_async_io): Use it.  Update comments.
+	(look_up_one_symbol): Use the symbol cache.
+	* thread-db.c (thread_db_look_up_symbols): New function.
+	(thread_db_init): Update comments.  Call thread_db_look_up_symbols.
+
+2004-10-16  Daniel Jacobowitz  <dan@debian.org>
+
+	* configure.in: Test for -rdynamic.
+	* configure: Regenerated.
+	* Makefile (INTERNAL_LDFLAGS): New.
+	(gdbserver, gdbreplay): Use it.
+
+2004-09-02  Andrew Cagney  <cagney@gnu.org>
+
+	* Makefile.in (TAGS): Replace TM_FILE with DEPRECATED_TM_FILE.
+
+2004-03-23  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c (linux_wait): Clear all_processes list also.
+
+2004-03-12  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c: Include <errno.h>.  Remove extern declaration of
+	errno.
+
+2004-03-12  Daniel Jacobowitz  <drow@mvista.com>
+
+	* gdbreplay.c, server.h, utils.c: Update copyright years.
+
+2004-03-04  Nathan J. Williams  <nathanw@wasabisystems.com>
+
+	* server.c (main): Print child status or termination signal from
+	variable 'signal', not 'sig'.
+
+2004-03-04  Nathan J. Williams  <nathanw@wasabisystems.com>
+
+	* linux-low.c (linux_read_memory): Change return type to
+	int.  Check for and return error from ptrace().
+	* target.c (read_inferior_memory): Change return type to int.  Pass
+	back return status from the_target->read_memory().
+	* target.h (struct target_ops): Adapt *read_memory() prototype.
+	Update comment.
+	(read_inferior_memory): Adapt prototype.
+	* server.c (main): Return an error packet if
+	read_inferior_memory() returns an error.
+
+2004-03-04  Daniel Jacobowitz  <drow@mvista.com>
+
+	* Makefile.in (distclean): Remove config.h, stamp-h, and config.log.
+	Unify with other clean targets.
+
+2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
+
+	* server.c (handle_v_cont): Call set_desired_inferior.
+
+2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
+
+	* remote-utils.c (prepare_resume_reply): Always supply "thread:".
+
+2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c (linux_wait): Unblock async I/O.
+	(linux_resume): Block and enable async I/O.
+	* remote-utils.c (block_async_io, unblock_async_io): New functions.
+	* server.h (block_async_io, unblock_async_io): Add prototypes.
+
+2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
+
+	* remote-utils.c (remote_open): Print a status notice after
+	opening a TCP port.
+	* server.c (attach_inferior): Print a status notice after
+	attaching.
+
+2004-02-29  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-arm-low.c (arm_get_pc): Print out stop PC in debug mode.
+
+2004-02-26  Daniel Jacobowitz  <drow@mvista.com>
+
+	* remote-utils.c (write_enn): Use "E01" instead of "ENN" for the
+	error packet.
+	* server.c, target.h: Update copyright years.
+
+2004-02-25  Roland McGrath  <roland@redhat.com>
+
+	* target.h (struct target_ops): New member `read_auxv'.
+	* server.c (handle_query): Handle qPart:auxv:read: query using that.
+	* linux-low.c (linux_read_auxv): New function.
+	(linux_target_ops): Initialize `read_auxv' member to that.
+
+2004-02-17  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+	Committed by Jim Blandy  <jimb@redhat.com>.
+
+	* linux-s390-low.c (s390_num_regs): Update.
+	(s390_regmap): Remove control registers.  Use __s390x__ predefine
+	instead of GPR_SIZE to distiguish s390 and s390x targets.
+
+2004-01-31  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c: Update copyright year.
+	(check_removed_breakpoint): Clear pending_is_breakpoint.
+	(linux_set_resume_request, linux_queue_one_thread)
+	(resume_status_pending_p): New functions.
+	(linux_continue_one_thread): Use process->resume.
+	(linux_resume): Only resume threads if there are no pending events.
+	* linux-low.h (struct process_info): Add resume request
+	pointer.
+
+2004-01-30  Daniel Jacobowitz  <drow@mvista.com>
+
+	* regcache.c (new_register_cache): Clear the allocated register
+	buffer.  Suggested by Atsushi Nemoto <anemo@mba.ocn.ne.jp>.
+
+2003-10-13  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c (linux_resume): Take a struct thread_resume *
+	argument.
+	(linux_wait): Update call.
+	(resume_ptr): New static variable.
+	(linux_continue_one_thread): Renamed from
+	linux_continue_one_process.  Use resume_ptr.
+	(linux_resume): Use linux_continue_one_thread.
+	* server.c (handle_v_cont, handle_v_requests): New functions.
+	(myresume): New function.
+	(main): Handle 'v' case.
+	* target.h (struct thread_resume): New type.
+	(struct target_ops): Change argument of "resume" to struct
+	thread_resume *.
+	(myresume): Delete macro.
+
+2003-08-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Makefile.in (install-only): Create dest dir. Support DESTDIR.
+	(uninstall): Support DESTDIR.
+
+Mon Jul 21 20:09:34 UTC 2003  Brendan Conoboy  <blc@redhat.com>
+
+	* configure.srv: Add xscale*linux copy of arm*linux entry.
+
+2003-07-24  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-arm-low.c (arm_reinsert_addr): New function.
+	(the_low_target): Add arm_reinsert_addr.
+
+2003-07-08  Mark Kettenis  <kettenis@gnu.org>
+
+	* mem-break.c: Remove whitespace at end of file.
+
+2003-06-28  Daniel Jacobowitz  <drow@mvista.com>
+
+	* configure.in: Check whether we need to prototype strerror.
+	* server.h: Optionally prototype strerror.
+	* gdbreplay.c (perror_with_name): Use strerror.
+	* linux-low.c (linux_attach_lwp): Use strerror.
+	* utils.c (perror_with_name): Use strerror.
+	* config.in, configure: Regenerated.
+
+2003-06-28  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-sh-low.c (sh_regmap): Fix FP register offsets, reported by
+	SUGIOKA Toshinobu <sugioka@itonet.co.jp>.
+
+2003-06-20  Daniel Jacobowitz  <drow@mvista.com>
+
+	* Makefile.in (SFILES): Update.
+	* low-hppabsd.c, low-lynx.c, low-nbsd.c, low-sim.c, low-sparc.c,
+	low-sun3.c: Remove files.
+
+2003-06-17  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c: Move comment to linux_thread_alive where it belonged.
+	(linux_detach_one_process, linux_detach): New functions.
+	(linux_target_ops): Add linux_detach.
+	* server.c (main): Handle 'D' packet.
+	* target.h (struct target_ops): Add "detach" member.
+	(detach_inferior): Define.
+
+2003-06-13  Mark Kettenis  <kettenis@gnu.org>
+
+	From Kelley Cook  <kelleycook@wideopenwest.com>:
+	* configure.srv: Accept i[34567]86 variants.
+
+2003-06-05  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c (linux_wait_for_event): Correct comment typos.
+	(linux_resume_one_process): Call check_removed_breakpoint.
+	(linux_send_signal): New function.
+	(linux_target_ops): Add linux_send_signal.
+	* remote-utils.c (putpkt, input_interrupt): Use send_signal instead
+	of kill.
+	* target.h (struct target_ops): Add send_signal.
+
+2003-05-29  Jim Blandy  <jimb@redhat.com>
+
+	* linux-low.c (usr_store_inferior_registers): Transfer buf in
+	PTRACE_XFER_TYPE-sized chunks, not int-sized chunks.  Otherwise,
+	if 'int' is smaller than PTRACE_XFER_TYPE, you end up throwing
+	away part of the register's value.
+
+2003-03-26  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c (linux_create_inferior): Use __SIGRTMIN.
+	(linux_wait_for_event, linux_init_signals): Likewise.
+
+2003-03-17  Daniel Jacobowitz  <drow@mvista.com>
+
+	* configure.in: Check for stdlib.h.
+	* configure: Regenerated.
+	* config.in: Regenerated.
+
+2003-01-04  Andreas Schwab  <schwab@suse.de>
+
+	* linux-m68k-low.c (m68k_num_regs): Define to 29 instead of 31.
+
+2003-01-02  Andrew Cagney  <ac131313@redhat.com>
+
+	* Makefile.in: Remove obsolete code.
+
+2002-11-20  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-s390-low.c (s390_regmap): Check GPR_SIZE instead of
+	defined(PT_FPR0_HI).
+
+2002-11-17  Stuart Hughes  <seh@zee2.com>
+
+	* linux-arm-low.c (arm_num_regs): Increase.
+	(arm_regmap): Include status register.
+
+2002-11-17  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c (register_addr): Remove incorrect -1 check.
+
+2002-08-29  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c (linux_create_inferior): Call setpgid.  Return
+	the new PID.
+	(unstopped_p, linux_signal_pid): Remove.
+	(linux_target_ops): Remove linux_signal_pid.
+	* remote-utils.c (putpkt, input_interrupt): Use signal_pid
+	global instead of target method.
+	* target.h (struct target_ops): Remove signal_pid.  Update comment
+	for create_inferior.
+	* server.c (signal_pid): New variable.
+	(create_inferior): Set signal_pid.  Block SIGTTOU and SIGTTIN in
+	gdbserver.  Set the child to be the foreground process group.
+	(attach_inferior): Set signal_pid.
+
+2002-08-23  Daniel Jacobowitz  <drow@mvista.com>
+
+	* ChangeLog: New file, with entries from gdb/ChangeLog after GDB 5.2.
+
+2002-08-20  Jim Blandy  <jimb@redhat.com>
+
+	* Makefile.in (LDFLAGS): Allow the configure script to establish a
+	default for this.
+
+2002-08-01  Andrew Cagney  <cagney@redhat.com>
+
+	* Makefile.in: Make chill references obsolete.
+
+2002-07-24  Kevin Buettner  <kevinb@redhat.com>
+
+	* configure.in (unistd.h): Add to AC_CHECK_HEADERS list.
+	* configure: Regenerate.
+	* config.in: Regenerate.
+
+2002-07-09  David O'Brien  <obrien@FreeBSD.org>
+
+	* gdbreplay.c (stdlib.h, unistd.h): Conditionaly include.
+	(perror_with_name, remote_close, remote_open, expect, play): Static.
+
+2002-07-04  Michal Ludvig  <mludvig@suse.cz>
+
+	* linux-x86-64-low.c (x86_64_regmap): Make it an array of
+	byte offsets instead of an array of indexes.
+	(x86_64_store_gregset, x86_64_store_fpregset): Parameter made const.
+
+2002-06-13  Daniel Jacobowitz  <drow@mvista.com>
+
+	* regcache.c: Add comment.
+
+2002-06-11  Daniel Jacobowitz  <drow@mvista.com>
+
+	* thread-db.c: New file.
+	* proc-service.c: New file.
+	* acinclude.m4: New file.
+	* Makefile.in: Add GDBSERVER_LIBS, gdb_proc_service_h,
+	proc-service.o, and thread-db.o.
+	(linux-low.o): Add USE_THREAD_DB.
+	* acconfig.h: Add HAVE_PRGREGSET_T, HAVE_PRFPREGSET_T,
+	HAVE_LWPID_T, HAVE_PSADDR_T, and PRFPREGSET_T_BROKEN.
+	* aclocal.m4: Regenerated.
+	* config.in: Regenerated.
+	* configure: Regenerated.
+	* configure.in: Check for proc_service.h, sys/procfs.h,
+	thread_db.h, and linux/elf.h headrs.
+	Check for lwpid_t, psaddr_t, prgregset_t, prfpregset_t, and
+	PRFPREGSET_T_BROKEN.  Introduce srv_thread_depfiles and USE_THREAD_DB.
+	Check for -lthread_db and thread support.
+	* configure.srv: Enable thread_db support for ARM, i386, MIPS,
+	PowerPC, and SuperH.
+	* i387-fp.c: Constify arguments.
+	* i387-fp.h: Likewise.
+	* inferiors.c: (struct thread_info): Renamed from
+	`struct inferior_info'.  Remove PID member.  Use generic inferior
+	list header.  All uses updated.
+	(inferiors, signal_pid): Removed.
+	(all_threads): New variable.
+	(get_thread): Define.
+	(add_inferior_to_list): New function.
+	(for_each_inferior): New function.
+	(change_inferior_id): New function.
+	(add_inferior): Removed.
+	(remove_inferior): New function.
+	(add_thread): New function.
+	(free_one_thread): New function.
+	(remove_thread): New function.
+	(clear_inferiors): Use for_each_inferior and free_one_thread.
+	(find_inferior): New function.
+	(find_inferior_id): New function.
+	(inferior_target_data): Update argument type.
+	(set_inferior_target_data): Likewise.
+	(inferior_regcache_data): Likewise.
+	(set_inferior_regcache_data): Likewise.
+	* linux-low.c (linux_bp_reinsert): Remove.
+	(all_processes, stopping_threads, using_thrads)
+	(struct pending_signals, debug_threads, pid_of): New.
+	(inferior_pid): Replace with macro.
+	(struct inferior_linux_data): Remove.
+	(get_stop_pc, add_process): New functions.
+	(linux_create_inferior): Restore SIGRTMIN+1 before calling exec.
+	Use add_process and add_thread.
+	(linux_attach_lwp): New function, based on old linux_attach.  Use
+	add_process and add_thread.  Set stop_expected for new threads.
+	(linux_attach): New function.
+	(linux_kill_one_process): New function.
+	(linux_kill): Kill all LWPs.
+	(linux_thread_alive): Use find_inferior_id.
+	(check_removed_breakpoints, status_pending_p): New functions.
+	(linux_wait_for_process): Renamed from linux_wait_for_one_inferior.
+	Update.  Use WNOHANG.  Wait for cloned processes also.  Update process
+	struct for the found process.
+	(linux_wait_for_event): New function.
+	(linux_wait): Use it.  Support LWPs.
+	(send_sigstop, wait_for_sigstop, stop_all_processes)
+	(linux_resume_one_process, linux_continue_one_process): New functions.
+	(linux_resume): Support LWPs.
+	(REGISTER_RAW_SIZE): Remove.
+	(fetch_register): Use register_size instead.  Call supply_register.
+	(usr_store_inferior_registers): Likewise.  Call collect_register.
+	Fix recursive case.
+	(regsets_fetch_inferior_registers): Improve error message.
+	(regsets_store_inferior_registers): Add debugging.
+	(linux_look_up_symbols): Call thread_db_init if USE_THREAD_DB.
+	(unstopped_p, linux_signal_pid): New functions.
+	(linux_target_ops): Add linux_signal_pid.
+	(linux_init_signals): New function.
+	(initialize_low): Call it.  Initialize using_threads.
+	* regcache.c (inferior_regcache_data): Add valid
+	flag.
+	(get_regcache): Fetch registers lazily.  Add fetch argument
+	and update all callers.
+	(regcache_invalidate_one, regcache_invalidate): New
+	functions.
+	(new_register_cache): Renamed from create_register_cache.
+	Return the new regcache.
+	(free_register_cache): Change argument to a void *.
+	(registers_to_string, registers_from_string): Call get_regcache
+	with fetch flag set.
+	(register_data): Make static.  Pass fetch flag to get_regcache.
+	(supply_register): Call get_regcache with fetch flag clear.
+	(collect_register): Call get_regcache with fetch flag set.
+	(collect_register_as_string): New function.
+	* regcache.h: Update.
+	* remote-utils.c (putpkt): Flush after debug output and use
+	stderr.
+	Handle input interrupts while waiting for an ACK.
+	(input_interrupt): Use signal_pid method.
+	(getpkt): Flush after debug output and use stderr.
+	(outreg): Use collect_register_as_string.
+	(new_thread_notify, dead_thread_notify): New functions.
+	(prepare_resume_reply): Check using_threads.  Set thread_from_wait
+	and general_thread.
+	(look_up_one_symbol): Flush after debug output.
+	* server.c (step_thread, server_waiting): New variables.
+	(start_inferior): Don't use signal_pid.  Update call to mywait.
+	(attach_inferior): Update call to mywait.
+	(handle_query): Handle qfThreadInfo and qsThreadInfo.
+	(main): Don't fetch/store registers explicitly.  Use
+	set_desired_inferior.  Support proposed ``Hs'' packet.  Update
+	calls to mywait.
+	* server.h: Update.
+	(struct inferior_list, struct_inferior_list_entry): New.
+	* target.c (set_desired_inferior): New.
+	(write_inferior_memory): Constify.
+	(mywait): New function.
+	* target.h: Update.
+	(struct target_ops): New signal_pid method.
+	(mywait): Removed macro, added prototype.
+
+	* linux-low.h (regset_func): Removed.
+	(regset_fill_func, regset_store_func): New.
+	(enum regset_type): New.
+	(struct regset_info): Add type field.  Use new operation types.
+	(struct linux_target_ops): stop_pc renamed to get_pc.
+	Add decr_pc_after_break and breakpoint_at.
+	(get_process, get_thread_proess, get_process_thread)
+	(strut process_info, all_processes, linux_attach_lwp)
+	(thread_db_init): New.
+
+	* linux-arm-low.c (arm_get_pc, arm_set_pc,
+	arm_breakpoint, arm_breakpoint_len, arm_breakpoint_at): New.
+	(the_low_target): Add new members.
+	* linux-i386-low.c (i386_store_gregset, i386_store_fpregset)
+	(i386_store_fpxregset): Constify.
+	(target_regsets): Add new kind identifier.
+	(i386_get_pc): Renamed from i386_stop_pc.  Simplify.
+	(i386_set_pc): Add debugging.
+	(i386_breakpoint_at): New function.
+	(the_low_target): Add new members.
+	* linux-mips-low.c (mips_get_pc, mips_set_pc)
+	(mips_breakpoint, mips_breakpoint_len, mips_reinsert_addr)
+	(mips_breakpoint_at): New.
+	(the_low_target): Add new members.
+	* linux-ppc-low.c (ppc_get_pc, ppc_set_pc)
+	(ppc_breakpoint, ppc_breakpoint_len, ppc_breakpoint_at): New.
+	(the_low_target): Add new members.
+	* linux-sh-low.c (sh_get_pc, sh_set_pc)
+	(sh_breakpoint, sh_breakpoint_len, sh_breakpoint_at): New.
+	(the_low_target): Add new members.
+	* linux-x86-64-low.c (target_regsets): Add new kind
+	identifier.
+
+2002-05-15  Daniel Jacobowitz  <drow@mvista.com>
+
+	From Martin Pool <mbp@samba.org>:
+	* server.c (gdbserver_usage): New function.
+	(main): Call it.
+
+2002-05-14  Daniel Jacobowitz  <drow@mvista.com>
+
+	* mem-break.c (reinsert_breakpoint_by_bp): Correct typo
+	stop_at -> stop_pc.
+
+2002-05-04  Andrew Cagney  <ac131313@redhat.com>
+
+	* Makefile.in: Remove obsolete code.
+
+2002-04-24  Michal Ludvig  <mludvig@suse.cz>
+
+	* linux-low.c (regsets_fetch_inferior_registers),
+	(regsets_store_inferior_registers): Removed cast to int from
+	ptrace() calls.
+	* regcache.h: Added declaration of struct inferior_info.
+
+2002-04-20  Daniel Jacobowitz  <drow@mvista.com>
+
+	* inferiors.c (struct inferior_info): Add regcache_data.
+	(add_inferior): Call create_register_cache.
+	(clear_inferiors): Call free_register_cache.
+	(inferior_regcache_data, set_inferior_regcache_data): New functions.
+	* regcache.c (struct inferior_regcache_data): New.
+	(registers): Remove.
+	(get_regcache): New function.
+	(create_register_cache, free_register_cache): New functions.
+	(set_register_cache): Don't initialize the register cache here.
+	(registers_to_string, registers_from_string, register_data): Call
+	get_regcache.
+	* regcache.h: Add prototypes.
+	* server.h: Likewise.
+
+2002-04-20  Daniel Jacobowitz  <drow@mvista.com>
+
+	* mem-break.c: New file.
+	* mem-break.h: New file.
+	* Makefile.in: Add mem-break.o rule; update server.h
+	dependencies.
+	* inferiors.c (struct inferior_info): Add target_data
+	member.
+	(clear_inferiors): Free target_data member if set.
+	(inferior_target_data, set_inferior_target_data): New functions.
+	* linux-i386-low.c (i386_breakpoint, i386_breakpoint_len)
+	(i386_stop_pc, i386_set_pc): New.  Add to the_low_target.
+	* linux-low.c (linux_bp_reinsert): New variable.
+	(struct inferior_linux_data): New.
+	(linux_create_inferior): Use set_inferior_target_data.
+	(linux_attach): Likewise.  Call add_inferior.
+	(linux_wait_for_one_inferior): New function.
+	(linux_wait): Call it.
+	(linux_write_memory): Add const.
+	(initialize_low): Call set_breakpoint_data.
+	* linux-low.h (struct linux_target_ops): Add breakpoint
+	handling members.
+	* server.c (attach_inferior): Remove extra add_inferior
+	call.
+	* server.h: Include mem-break.h.  Update inferior.c
+	prototypes.
+	* target.c (read_inferior_memory)
+	(write_inferior_memory): New functions.
+	* target.h (read_inferior_memory)
+	(write_inferior_memory): Change macros to prototypes.
+	(struct target_ops): Update comments.  Add const to write_memory
+	definition.
+
+2002-04-11  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.c (usr_store_inferior_registers): Support
+	registers which are allowed to fail to store.
+	* linux-low.h (linux_target_ops): Likewise.
+	* linux-ppc-low.c (ppc_regmap): Support FPSCR.
+	(ppc_cannot_store_register): FPSCR may not be storable.
+
+2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
+
+	* server.h: Include <string.h> if HAVE_STRING_H.
+	* ChangeLog: Correct paths in last ChangeLog entry.
+
+2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
+
+	* linux-low.h: Remove obsolete prototypes.
+	(struct linux_target_ops): New.
+	(extern the_low_target): New.
+	* linux-low.c (num_regs, regmap): Remove declarations.
+	(register_addr): Use the_low_target explicitly.
+	(fetch_register): Likewise.
+	(usr_fetch_inferior_registers): Likewise.
+	(usr_store_inferior_registers): Likewise.
+	* linux-arm-low.c (num_regs): Remove.
+	(arm_num_regs): Define.
+	(arm_regmap): Renamed from regmap, made static.
+	(arm_cannot_fetch_register): Renamed from cannot_fetch_register,
+	made static.
+	(arm_cannot_store_register): Renamed from cannot_store_register,
+	made static.
+	(the_low_target): New.
+	* linux-i386-low.c (num_regs): Remove.
+	(i386_num_regs): Define.
+	(i386_regmap): Renamed from regmap, made static.
+	(i386_cannot_fetch_register): Renamed from cannot_fetch_register,
+	made static.
+	(i386_cannot_store_register): Renamed from cannot_store_register,
+	made static.
+	(the_low_target): New.
+	* linux-ia64-low.c (num_regs): Remove.
+	(ia64_num_regs): Define.
+	(ia64_regmap): Renamed from regmap, made static.
+	(ia64_cannot_fetch_register): Renamed from cannot_fetch_register,
+	made static.
+	(ia64_cannot_store_register): Renamed from cannot_store_register,
+	made static.
+	(the_low_target): New.
+	* linux-m68k-low.c (num_regs): Remove.
+	(m68k_num_regs): Define.
+	(m68k_regmap): Renamed from regmap, made static.
+	(m68k_cannot_fetch_register): Renamed from cannot_fetch_register,
+	made static.
+	(m68k_cannot_store_register): Renamed from cannot_store_register,
+	made static.
+	(the_low_target): New.
+	* linux-mips-low.c (num_regs): Remove.
+	(mips_num_regs): Define.
+	(mips_regmap): Renamed from regmap, made static.
+	(mips_cannot_fetch_register): Renamed from cannot_fetch_register,
+	made static.
+	(mips_cannot_store_register): Renamed from cannot_store_register,
+	made static.
+	(the_low_target): New.
+	* linux-ppc-low.c (num_regs): Remove.
+	(ppc_num_regs): Define.
+	(ppc_regmap): Renamed from regmap, made static.
+	(ppc_cannot_fetch_register): Renamed from cannot_fetch_register,
+	made static.
+	(ppc_cannot_store_register): Renamed from cannot_store_register,
+	made static.
+	(the_low_target): New.
+	* linux-s390-low.c (num_regs): Remove.
+	(s390_num_regs): Define.
+	(s390_regmap): Renamed from regmap, made static.
+	(s390_cannot_fetch_register): Renamed from cannot_fetch_register,
+	made static.
+	(s390_cannot_store_register): Renamed from cannot_store_register,
+	made static.
+	(the_low_target): New.
+	* linux-sh-low.c (num_regs): Remove.
+	(sh_num_regs): Define.
+	(sh_regmap): Renamed from regmap, made static.
+	(sh_cannot_fetch_register): Renamed from cannot_fetch_register,
+	made static.
+	(sh_cannot_store_register): Renamed from cannot_store_register,
+	made static.
+	(the_low_target): New.
+	* linux-x86-64-low.c (x86_64_regmap): Renamed from regmap.
+	(the_low_target): New.
+
+2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
+
+	* Makefile.in: Add stamp-h target.
+	* configure.in: Create stamp-h.
+	* configure: Regenerated.
+
+2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
+
+	* inferiors.c: New file.
+	* target.c: New file.
+	* target.h: New file.
+	* Makefile.in:  Add target.o and inferiors.o.  Update
+	dependencies.
+	* linux-low.c (inferior_pid): New static variable,
+	moved from server.c.
+	(linux_create_inferior): Renamed from create_inferior.
+	Call add_inferior.  Return 0 on success instead of a PID.
+	(linux_attach): Renamed from myattach.
+	(linux_kill): Renamed from kill_inferior.  Call clear_inferiors ().
+	(linux_thread_alive): Renamed from mythread_alive.
+	(linux_wait): Renamed from mywait.  Call clear_inferiors () if the
+	child dies.
+	(linux_resume): Renamed from myresume.  Add missing ``return 0''.
+	(regsets_store_inferior_registers): Correct error message.
+	Add missing ``return 0''.
+	(linux_fetch_registers): Renamed from fetch_inferior_registers.
+	(linux_store_registers): Renamed from store_inferior_registers.
+	(linux_read_memory): Renamed from read_inferior_memory.
+	(linux_write_memory): Renamed from write_inferior_memory.
+	(linux_target_ops): New structure.
+	(initialize_low): Call set_target_ops ().
+	* remote-utils.c (unhexify): New function.
+	(hexify): New function.
+	(input_interrupt): Send signals to ``signal_pid''.
+	* server.c (inferior_pid): Remove.
+	(start_inferior): Update create_inferior call.
+	(attach_inferior): Call add_inferior.
+	(handle_query): New function.
+	(main): Call handle_query for `q' packets.
+	* server.h: Include "target.h".  Remove obsolete prototypes.
+	Add prototypes for "inferiors.c", "target.c", hexify, and unhexify.
+
+2002-04-09  Daniel Jacobowitz  <drow@mvista.com>
+
+	* Makefile.in: Add WARN_CFLAGS.  Update configury
+	dependencies.
+	* configure.in: Check for <string.h>
+	* configure: Regenerate.
+	* config.in: Regenerate.
+	* gdbreplay.c: Include needed system headers.
+	(remote_open): Remove strchr prototype.
+	* linux-low.h: Correct #ifdef to HAVE_LINUX_USRREGS.
+	* regcache.c (supply_register): Change buf argument to const void *.
+	(supply_register_by_name): Likewise.
+	(collect_register): Change buf argument to void *.
+	(collect_register_by_name): Likewise.
+	* regcache.h: Add missing prototypes.
+	* remote-utils.c: Include <arpa/inet.h> for inet_ntoa.
+	* server.c (handle_query): New function.
+	(attached): New static variable, moved out of main.
+	(main): Quiet longjmp clobber warnings.
+	* server.h: Add ATTR_NORETURN and ATTR_FORMAT.  Update prototypes.
+	* utils.c (error): Remove NORETURN.
+	(fatal): Likewise.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/config.in ./gdbserver/config.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/config.in	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/config.in	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,508 @@
+/* config.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#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
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#undef ENABLE_NLS
+
+/* Define if self-testing features should be enabled */
+#undef GDB_SELF_TEST
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#undef HAVE_ARPA_INET_H
+
+/* define if the compiler supports basic C++11 syntax */
+#undef HAVE_CXX11
+
+/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_ADDR_NO_RANDOMIZE
+
+/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_ASPRINTF
+
+/* Define to 1 if you have the declaration of `basename(char *)', and to 0 if
+   you don't. */
+#undef HAVE_DECL_BASENAME
+
+/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
+#undef HAVE_DECL_FFS
+
+/* Define to 1 if you have the declaration of `perror', and to 0 if you don't.
+   */
+#undef HAVE_DECL_PERROR
+
+/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_SNPRINTF
+
+/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't.
+   */
+#undef HAVE_DECL_STRSTR
+
+/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't.
+   */
+#undef HAVE_DECL_STRTOL
+
+/* Define to 1 if you have the declaration of `strtoll', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRTOLL
+
+/* Define to 1 if you have the declaration of `strtoul', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRTOUL
+
+/* Define to 1 if you have the declaration of `strtoull', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRTOULL
+
+/* Define to 1 if you have the declaration of `strverscmp', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRVERSCMP
+
+/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_VASPRINTF
+
+/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_VSNPRINTF
+
+/* Define to 1 if you have the `dladdr' function. */
+#undef HAVE_DLADDR
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if the system has the type `Elf32_auxv_t'. */
+#undef HAVE_ELF32_AUXV_T
+
+/* Define to 1 if the system has the type `Elf64_auxv_t'. */
+#undef HAVE_ELF64_AUXV_T
+
+/* Define if <sys/procfs.h> has elf_fpregset_t. */
+#undef HAVE_ELF_FPREGSET_T
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `fdwalk' function. */
+#undef HAVE_FDWALK
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define if <sys/procfs.h> has fpregset_t. */
+#undef HAVE_FPREGSET_T
+
+/* Define to 1 if you have the `getauxval' function. */
+#undef HAVE_GETAUXVAL
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `getrlimit' function. */
+#undef HAVE_GETRLIMIT
+
+/* Define to 1 if you have the `getrusage' function. */
+#undef HAVE_GETRUSAGE
+
+/* Define if <sys/procfs.h> has gregset_t. */
+#undef HAVE_GREGSET_T
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if your system has the kinfo_getfile function. */
+#undef HAVE_KINFO_GETFILE
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define to 1 if you have the `dl' library (-ldl). */
+#undef HAVE_LIBDL
+
+/* Define if you have the ipt library. */
+#undef HAVE_LIBIPT
+
+/* Define if the target supports branch tracing. */
+#undef HAVE_LINUX_BTRACE
+
+/* Define to 1 if you have the <linux/elf.h> header file. */
+#undef HAVE_LINUX_ELF_H
+
+/* Define to 1 if you have the <linux/perf_event.h> header file. */
+#undef HAVE_LINUX_PERF_EVENT_H
+
+/* Define if the target supports register sets. */
+#undef HAVE_LINUX_REGSETS
+
+/* Define if the target supports PTRACE_PEEKUSR for register access. */
+#undef HAVE_LINUX_USRREGS
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if the system has the type `long long'. */
+#undef HAVE_LONG_LONG
+
+/* Define if <thread_db.h> has lwpid_t. */
+#undef HAVE_LWPID_T
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#undef HAVE_NETDB_H
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#undef HAVE_NETINET_IN_H
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#undef HAVE_NETINET_TCP_H
+
+/* Define if you support the personality syscall. */
+#undef HAVE_PERSONALITY
+
+/* Define to 1 if you have the `pipe' function. */
+#undef HAVE_PIPE
+
+/* Define to 1 if you have the `pipe2' function. */
+#undef HAVE_PIPE2
+
+/* Define to 1 if you have the `poll' function. */
+#undef HAVE_POLL
+
+/* Define to 1 if you have the <poll.h> header file. */
+#undef HAVE_POLL_H
+
+/* Define to 1 if you have the `pread' function. */
+#undef HAVE_PREAD
+
+/* Define to 1 if you have the `pread64' function. */
+#undef HAVE_PREAD64
+
+/* Define if <sys/procfs.h> has prfpregset_t. */
+#undef HAVE_PRFPREGSET_T
+
+/* Define if <sys/procfs.h> has prgregset32_t. */
+#undef HAVE_PRGREGSET32_T
+
+/* Define if <sys/procfs.h> has prgregset_t. */
+#undef HAVE_PRGREGSET_T
+
+/* Define to 1 if you have the <proc_service.h> header file. */
+#undef HAVE_PROC_SERVICE_H
+
+/* 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 to 1 if you have the `ptrace64' function. */
+#undef HAVE_PTRACE64
+
+/* Define if the target supports PTRACE_GETFPXREGS for extended register
+   access. */
+#undef HAVE_PTRACE_GETFPXREGS
+
+/* Define if the target supports PTRACE_GETREGS for register access. */
+#undef HAVE_PTRACE_GETREGS
+
+/* Define to 1 if you have the <ptrace.h> header file. */
+#undef HAVE_PTRACE_H
+
+/* Define to 1 if you have the `pt_insn_event' function. */
+#undef HAVE_PT_INSN_EVENT
+
+/* Define to 1 if you have the `pwrite' function. */
+#undef HAVE_PWRITE
+
+/* Define to 1 if you have the `sbrk' function. */
+#undef HAVE_SBRK
+
+/* Define to 1 if you have the `setns' function. */
+#undef HAVE_SETNS
+
+/* Define to 1 if you have the `setpgid' function. */
+#undef HAVE_SETPGID
+
+/* Define to 1 if you have the `setpgrp' function. */
+#undef HAVE_SETPGRP
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if you have the `sigaltstack' function. */
+#undef HAVE_SIGALTSTACK
+
+/* Define to 1 if you have the <signal.h> header file. */
+#undef HAVE_SIGNAL_H
+
+/* Define to 1 if you have the `sigprocmask' function. */
+#undef HAVE_SIGPROCMASK
+
+/* Define if sigsetjmp is available. */
+#undef HAVE_SIGSETJMP
+
+/* Define to 1 if you have the `socketpair' function. */
+#undef HAVE_SOCKETPAIR
+
+/* Define to 1 if the system has the type `socklen_t'. */
+#undef HAVE_SOCKLEN_T
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if `enabled' is a member of `struct pt_insn'. */
+#undef HAVE_STRUCT_PT_INSN_ENABLED
+
+/* Define to 1 if `resynced' is a member of `struct pt_insn'. */
+#undef HAVE_STRUCT_PT_INSN_RESYNCED
+
+/* Define to 1 if `st_blksize' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLKSIZE
+
+/* Define to 1 if `st_blocks' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLOCKS
+
+/* Define to 1 if the target supports __sync_*_compare_and_swap */
+#undef HAVE_SYNC_BUILTINS
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#undef HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#undef HAVE_SYS_POLL_H
+
+/* Define to 1 if you have the <sys/procfs.h> header file. */
+#undef HAVE_SYS_PROCFS_H
+
+/* Define to 1 if you have the <sys/ptrace.h> header file. */
+#undef HAVE_SYS_PTRACE_H
+
+/* Define to 1 if you have the <sys/reg.h> header file. */
+#undef HAVE_SYS_REG_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+#undef HAVE_SYS_UN_H
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define if TD_VERSION is available. */
+#undef HAVE_TD_VERSION
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define to 1 if you have the <thread_db.h> header file. */
+#undef HAVE_THREAD_DB_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define if UST is available */
+#undef HAVE_UST
+
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if you have the <wait.h> header file. */
+#undef HAVE_WAIT_H
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if `vfork' works. */
+#undef HAVE_WORKING_VFORK
+
+/* Define to 1 if you have the <ws2tcpip.h> header file. */
+#undef HAVE_WS2TCPIP_H
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* 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
+
+/* Define to the type of arg 3 for ptrace. */
+#undef PTRACE_TYPE_ARG3
+
+/* Define to the type of arg 4 for ptrace. */
+#undef PTRACE_TYPE_ARG4
+
+/* Define to the type of arg 5 for ptrace. */
+#undef PTRACE_TYPE_ARG5
+
+/* Define as the return type of ptrace. */
+#undef PTRACE_TYPE_RET
+
+/* Bug reporting address */
+#undef REPORT_BUGS_TO
+
+/* The size of `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+	STACK_DIRECTION > 0 => grows toward higher addresses
+	STACK_DIRECTION < 0 => grows toward lower addresses
+	STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define if we should use libthread_db directly. */
+#undef USE_LIBTHREAD_DB_DIRECTLY
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Define if we should use libthread_db. */
+#undef USE_THREAD_DB
+
+/* Define if we should use the Windows API, instead of the POSIX API. On
+   Windows, we use the Windows API when building for MinGW, but the POSIX API
+   when building for Cygwin. */
+#undef USE_WIN32API
+
+/* Define if an XML target description is available. */
+#undef USE_XML
+
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Use structured /proc on Solaris. */
+#undef _STRUCTURED_PROC
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define as `fork' if `vfork' does not work. */
+#undef vfork
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/configure ./gdbserver/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/configure	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/configure	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,12011 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+PACKAGE_URL=
+
+ac_unique_file="server.cc"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_header_list=
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+GNULIB_STDINT_H
+extra_libraries
+IPA_DEPFILES
+srv_xmlfiles
+srv_xmlbuiltin
+GDBSERVER_LIBS
+GDBSERVER_DEPFILES
+RDYNAMIC
+REPORT_BUGS_TEXI
+REPORT_BUGS_TO
+PKGVERSION
+WERROR_CFLAGS
+WARN_CFLAGS
+ustinc
+ustlibs
+CCDEPMODE
+CONFIG_SRC_SUBDIR
+CATOBJEXT
+GENCAT
+INSTOBJEXT
+DATADIRNAME
+CATALOGS
+POSUB
+GMSGFMT
+XGETTEXT
+INCINTL
+LIBINTL_DEP
+LIBINTL
+USE_NLS
+DEPDIR
+am__leading_dot
+host_noncanonical
+target_noncanonical
+WIN32APILIBS
+LTLIBIPT
+LIBIPT
+HAVE_LIBIPT
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
+SED
+ALLOCA
+CXX_DIALECT
+HAVE_CXX11
+RANLIB
+AR
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+EGREP
+GREP
+CPP
+ac_ct_CXX
+CXXFLAGS
+CXX
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_maintainer_mode
+enable_largefile
+with_intel_pt
+with_gnu_ld
+enable_rpath
+with_libipt_prefix
+with_libipt_type
+enable_unit_tests
+with_ust
+with_ust_include
+with_ust_lib
+enable_werror
+enable_build_warnings
+enable_gdb_build_warnings
+with_pkgversion
+with_bugurl
+with_libthread_db
+enable_inprocess_agent
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
+  --disable-largefile     omit support for large files
+  --disable-rpath         do not hardcode runtime library paths
+  --enable-unit-tests     Enable the inclusion of unit tests when compiling
+                          GDB
+  --enable-werror         treat compile warnings as errors
+  --enable-build-warnings enable build-time compiler warnings if gcc is used
+  --enable-gdb-build-warnings
+                          enable GDB specific build-time compiler warnings if
+                          gcc is used
+  --enable-inprocess-agent
+                          inprocess agent
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-intel-pt         include Intel Processor Trace support (auto/yes/no)
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-libipt-prefix[=DIR]  search for libipt in DIR/include and DIR/lib
+  --without-libipt-prefix     don't search for libipt in includedir and libdir
+  --with-libipt-type=TYPE     type of library to search for (auto/static/shared)
+  --with-ust=PATH       Specify prefix directory for the installed UST package
+                          Equivalent to --with-ust-include=PATH/include
+                          plus --with-ust-lib=PATH/lib
+  --with-ust-include=PATH Specify directory for installed UST include files
+  --with-ust-lib=PATH   Specify the directory for the installed UST library
+  --with-pkgversion=PKG   Use PKG in the version string in place of "GDB"
+  --with-bugurl=URL       Direct users to URL to report a bug
+  --with-libthread-db=PATH
+                          use given libthread_db directly
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+configure
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+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_compile") 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_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+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_compile") 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_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+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_cpp conftest.$ac_ext") 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; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $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
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $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
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  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>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { 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_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  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_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  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.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext 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_c_check_header_compile
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  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
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext 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_c_check_type
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_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_c_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_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_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_c_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_c_check_func
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  as_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext 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_c_check_decl
+
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+	       { $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_c_check_member
+
+# 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
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+as_fn_append ac_header_list " stdlib.h"
+as_fn_append ac_header_list " unistd.h"
+as_fn_append ac_header_list " sys/param.h"
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+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
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h:config.in"
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+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
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; 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_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$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_CC="${ac_tool_prefix}gcc"
+    $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
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; 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_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_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_ac_ct_CC="gcc"
+    $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
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; 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_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$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_CC="${ac_tool_prefix}cc"
+    $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
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; 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_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+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
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $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
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$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_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$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_CC="$ac_tool_prefix$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
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+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_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_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_ac_ct_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
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+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_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+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_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+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>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { 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>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { 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_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+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_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+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
+
+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 -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$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_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # 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_CXX="$ac_tool_prefix$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
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+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_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # 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_ac_ct_CXX="$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
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+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_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+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
+
+
+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 how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+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 grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_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$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_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 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "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_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_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_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_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$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_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 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "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_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_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_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
+else
+  ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+  enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+	 # IRIX 6.2 and later do not support large files by default,
+	 # so use the C compiler's -n32 option if that helps.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+	 if ac_fn_c_try_compile "$LINENO"; then :
+  break
+fi
+rm -f core conftest.err conftest.$ac_objext
+	 CC="$CC -n32"
+	 if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+	 break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_file_offset_bits=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  if test $ac_cv_sys_file_offset_bits = unknown; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_large_files=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  fi
+
+
+fi
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; 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_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # 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_STRIP="${ac_tool_prefix}strip"
+    $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
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; 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_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # 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_ac_ct_STRIP="strip"
+    $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
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; 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_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar"
+    $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
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; 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_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_ac_ct_AR="ar"
+    $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
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" = x; then
+    AR=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; 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_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib"
+    $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
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; 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_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_ac_ct_RANLIB="ranlib"
+    $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
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+
+# We require a C++11 compiler.  Check if one is available, and if
+# necessary, set CXX_DIALECT to some -std=xxx switch.
+
+  ax_cxx_compile_alternatives="11 0x"    ax_cxx_compile_cxx11_required=true
+  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
+  CXX_DIALECT=""
+  ac_success=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
+$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
+if ${ax_cv_cxx_compile_cxx11+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx11=yes
+else
+  ax_cv_cxx_compile_cxx11=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
+$as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
+  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
+    ac_success=yes
+  fi
+
+    if test x$ac_success = xno; then
+    for alternative in ${ax_cxx_compile_alternatives}; do
+      switch="-std=gnu++${alternative}"
+      cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
+if eval \${$cachevar+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_CXX="$CXX"
+         CXX="$CXX $switch"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval $cachevar=yes
+else
+  eval $cachevar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         CXX="$ac_save_CXX"
+fi
+eval ac_res=\$$cachevar
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+      if eval test x\$$cachevar = xyes; then
+        CXX_DIALECT="$switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi
+
+    if test x$ac_success = xno; then
+                for alternative in ${ax_cxx_compile_alternatives}; do
+      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
+        cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
+if eval \${$cachevar+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_CXX="$CXX"
+           CXX="$CXX $switch"
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval $cachevar=yes
+else
+  eval $cachevar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+           CXX="$ac_save_CXX"
+fi
+eval ac_res=\$$cachevar
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+        if eval test x\$$cachevar = xyes; then
+          CXX_DIALECT="$switch"
+          ac_success=yes
+          break
+        fi
+      done
+      if test x$ac_success = xyes; then
+        break
+      fi
+    done
+  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
+
+  if test x$ax_cxx_compile_cxx11_required = xtrue; then
+    if test x$ac_success = xno; then
+      as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX11=0
+    { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
+$as_echo "$as_me: No compiler with C++11 support was found" >&6;}
+  else
+    HAVE_CXX11=1
+
+$as_echo "#define HAVE_CXX11 1" >>confdefs.h
+
+  fi
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+
+
+
+  for ac_header in $ac_header_list
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
+if test "x$ac_cv_type_pid_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define pid_t int
+_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
+
+
+      if test "X$prefix" = "XNONE"; then
+    acl_final_prefix="$ac_default_prefix"
+  else
+    acl_final_prefix="$prefix"
+  fi
+  if test "X$exec_prefix" = "XNONE"; then
+    acl_final_exec_prefix='${prefix}'
+  else
+    acl_final_exec_prefix="$exec_prefix"
+  fi
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${acl_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      acl_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+	test "$with_gnu_ld" != no && break
+      else
+	test "$with_gnu_ld" != yes && break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${acl_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  acl_cv_prog_gnu_ld=yes
+else
+  acl_cv_prog_gnu_ld=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+                                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if ${acl_cv_rpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+    . ./conftest.sh
+    rm -f ./conftest.sh
+    acl_cv_rpath=done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
+  wl="$acl_cv_wl"
+  libext="$acl_cv_libext"
+  shlibext="$acl_cv_shlibext"
+  hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  hardcode_direct="$acl_cv_hardcode_direct"
+  hardcode_minus_L="$acl_cv_hardcode_minus_L"
+    # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then :
+  enableval=$enable_rpath; :
+else
+  enable_rpath=yes
+fi
+
+
+
+  # Set the 'development' global.
+  . $srcdir/../bfd/development.sh
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+  # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if ${ac_cv_working_alloca_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+			  if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_working_alloca_h=yes
+else
+  ac_cv_working_alloca_h=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: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if ${ac_cv_func_alloca_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca (size_t);
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+				    if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_func_alloca_works=yes
+else
+  ac_cv_func_alloca_works=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: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+
+else
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+$as_echo "#define C_ALLOCA 1" >>confdefs.h
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if ${ac_cv_os_cray+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "webecray" >/dev/null 2>&1; then :
+  ac_cv_os_cray=yes
+else
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+    break
+fi
+
+  done
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if ${ac_cv_c_stack_direction+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_c_stack_direction=0
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+find_stack_direction (int *addr, int depth)
+{
+  int dir, dummy = 0;
+  if (! addr)
+    addr = &dummy;
+  *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+  dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+  return dir + dummy;
+}
+
+int
+main (int argc, char **argv)
+{
+  return find_stack_direction (0, argc + !argv + 20) < 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_stack_direction=1
+else
+  ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+
+  WIN32APILIBS=
+  case ${host} in
+    *mingw32*)
+
+$as_echo "#define USE_WIN32API 1" >>confdefs.h
+
+      WIN32APILIBS="-lws2_32"
+      ;;
+  esac
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if ${am_cv_langinfo_codeset+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_langinfo_codeset=yes
+else
+  am_cv_langinfo_codeset=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: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+  if test $am_cv_langinfo_codeset = yes; then
+
+$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+
+  fi
+
+
+  for ac_header in linux/perf_event.h locale.h memory.h signal.h 		   sys/resource.h sys/socket.h 		   sys/un.h sys/wait.h 		   thread_db.h wait.h 		   termios.h 		   dlfcn.h 		   linux/elf.h proc_service.h 		   poll.h sys/poll.h sys/select.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_func in getpagesize
+do :
+  ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
+if test "x$ac_cv_func_getpagesize" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETPAGESIZE 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
+$as_echo_n "checking for working mmap... " >&6; }
+if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_mmap_fixed_mapped=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+/* malloc might have been renamed as rpl_malloc. */
+#undef malloc
+
+/* Thanks to Mike Haertel and Jim Avera for this test.
+   Here is a matrix of mmap possibilities:
+	mmap private not fixed
+	mmap private fixed at somewhere currently unmapped
+	mmap private fixed at somewhere already mapped
+	mmap shared not fixed
+	mmap shared fixed at somewhere currently unmapped
+	mmap shared fixed at somewhere already mapped
+   For private mappings, we should verify that changes cannot be read()
+   back from the file, nor mmap's back from the file at a different
+   address.  (There have been systems where private was not correctly
+   implemented like the infamous i386 svr4.0, and systems where the
+   VM page cache was not coherent with the file system buffer cache
+   like early versions of FreeBSD and possibly contemporary NetBSD.)
+   For shared mappings, we should conversely verify that changes get
+   propagated back to all the places they're supposed to be.
+
+   Grep wants private fixed already mapped.
+   The main things grep needs to know about mmap are:
+   * does it exist and is it safe to write into the mmap'd area
+   * how to use it (BSD variants)  */
+
+#include <fcntl.h>
+#include <sys/mman.h>
+
+#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
+char *malloc ();
+#endif
+
+/* This mess was copied from the GNU getpagesize.h.  */
+#ifndef HAVE_GETPAGESIZE
+# ifdef _SC_PAGESIZE
+#  define getpagesize() sysconf(_SC_PAGESIZE)
+# else /* no _SC_PAGESIZE */
+#  ifdef HAVE_SYS_PARAM_H
+#   include <sys/param.h>
+#   ifdef EXEC_PAGESIZE
+#    define getpagesize() EXEC_PAGESIZE
+#   else /* no EXEC_PAGESIZE */
+#    ifdef NBPG
+#     define getpagesize() NBPG * CLSIZE
+#     ifndef CLSIZE
+#      define CLSIZE 1
+#     endif /* no CLSIZE */
+#    else /* no NBPG */
+#     ifdef NBPC
+#      define getpagesize() NBPC
+#     else /* no NBPC */
+#      ifdef PAGESIZE
+#       define getpagesize() PAGESIZE
+#      endif /* PAGESIZE */
+#     endif /* no NBPC */
+#    endif /* no NBPG */
+#   endif /* no EXEC_PAGESIZE */
+#  else /* no HAVE_SYS_PARAM_H */
+#   define getpagesize() 8192	/* punt totally */
+#  endif /* no HAVE_SYS_PARAM_H */
+# endif /* no _SC_PAGESIZE */
+
+#endif /* no HAVE_GETPAGESIZE */
+
+int
+main ()
+{
+  char *data, *data2, *data3;
+  const char *cdata2;
+  int i, pagesize;
+  int fd, fd2;
+
+  pagesize = getpagesize ();
+
+  /* First, make a file with some known garbage in it. */
+  data = (char *) malloc (pagesize);
+  if (!data)
+    return 1;
+  for (i = 0; i < pagesize; ++i)
+    *(data + i) = rand ();
+  umask (0);
+  fd = creat ("conftest.mmap", 0600);
+  if (fd < 0)
+    return 2;
+  if (write (fd, data, pagesize) != pagesize)
+    return 3;
+  close (fd);
+
+  /* Next, check that the tail of a page is zero-filled.  File must have
+     non-zero length, otherwise we risk SIGBUS for entire page.  */
+  fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);
+  if (fd2 < 0)
+    return 4;
+  cdata2 = "";
+  if (write (fd2, cdata2, 1) != 1)
+    return 5;
+  data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L);
+  if (data2 == MAP_FAILED)
+    return 6;
+  for (i = 0; i < pagesize; ++i)
+    if (*(data2 + i))
+      return 7;
+  close (fd2);
+  if (munmap (data2, pagesize))
+    return 8;
+
+  /* Next, try to mmap the file at a fixed address which already has
+     something else allocated at it.  If we can, also make sure that
+     we see the same garbage.  */
+  fd = open ("conftest.mmap", O_RDWR);
+  if (fd < 0)
+    return 9;
+  if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+		     MAP_PRIVATE | MAP_FIXED, fd, 0L))
+    return 10;
+  for (i = 0; i < pagesize; ++i)
+    if (*(data + i) != *(data2 + i))
+      return 11;
+
+  /* Finally, make sure that changes to the mapped area do not
+     percolate back to the file as seen by read().  (This is a bug on
+     some variants of i386 svr4.0.)  */
+  for (i = 0; i < pagesize; ++i)
+    *(data2 + i) = *(data2 + i) + 1;
+  data3 = (char *) malloc (pagesize);
+  if (!data3)
+    return 12;
+  if (read (fd, data3, pagesize) != pagesize)
+    return 13;
+  for (i = 0; i < pagesize; ++i)
+    if (*(data + i) != *(data3 + i))
+      return 14;
+  close (fd);
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_mmap_fixed_mapped=yes
+else
+  ac_cv_func_mmap_fixed_mapped=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
+$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
+if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+$as_echo "#define HAVE_MMAP 1" >>confdefs.h
+
+fi
+rm -f conftest.mmap conftest.txt
+
+  for ac_header in vfork.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default"
+if test "x$ac_cv_header_vfork_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_VFORK_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_func in fork vfork
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_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
+
+if test "x$ac_cv_func_fork" = xyes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5
+$as_echo_n "checking for working fork... " >&6; }
+if ${ac_cv_func_fork_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_fork_works=cross
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	  /* By Ruediger Kuhlmann. */
+	  return fork () < 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_fork_works=yes
+else
+  ac_cv_func_fork_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5
+$as_echo "$ac_cv_func_fork_works" >&6; }
+
+else
+  ac_cv_func_fork_works=$ac_cv_func_fork
+fi
+if test "x$ac_cv_func_fork_works" = xcross; then
+  case $host in
+    *-*-amigaos* | *-*-msdosdjgpp*)
+      # Override, as these systems have only a dummy fork() stub
+      ac_cv_func_fork_works=no
+      ;;
+    *)
+      ac_cv_func_fork_works=yes
+      ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5
+$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;}
+fi
+ac_cv_func_vfork_works=$ac_cv_func_vfork
+if test "x$ac_cv_func_vfork" = xyes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5
+$as_echo_n "checking for working vfork... " >&6; }
+if ${ac_cv_func_vfork_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_vfork_works=cross
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Thanks to Paul Eggert for this test.  */
+$ac_includes_default
+#include <sys/wait.h>
+#ifdef HAVE_VFORK_H
+# include <vfork.h>
+#endif
+/* On some sparc systems, changes by the child to local and incoming
+   argument registers are propagated back to the parent.  The compiler
+   is told about this with #include <vfork.h>, but some compilers
+   (e.g. gcc -O) don't grok <vfork.h>.  Test for this by using a
+   static variable whose address is put into a register that is
+   clobbered by the vfork.  */
+static void
+#ifdef __cplusplus
+sparc_address_test (int arg)
+# else
+sparc_address_test (arg) int arg;
+#endif
+{
+  static pid_t child;
+  if (!child) {
+    child = vfork ();
+    if (child < 0) {
+      perror ("vfork");
+      _exit(2);
+    }
+    if (!child) {
+      arg = getpid();
+      write(-1, "", 0);
+      _exit (arg);
+    }
+  }
+}
+
+int
+main ()
+{
+  pid_t parent = getpid ();
+  pid_t child;
+
+  sparc_address_test (0);
+
+  child = vfork ();
+
+  if (child == 0) {
+    /* Here is another test for sparc vfork register problems.  This
+       test uses lots of local variables, at least as many local
+       variables as main has allocated so far including compiler
+       temporaries.  4 locals are enough for gcc 1.40.3 on a Solaris
+       4.1.3 sparc, but we use 8 to be safe.  A buggy compiler should
+       reuse the register of parent for one of the local variables,
+       since it will think that parent can't possibly be used any more
+       in this routine.  Assigning to the local variable will thus
+       munge parent in the parent process.  */
+    pid_t
+      p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(),
+      p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid();
+    /* Convince the compiler that p..p7 are live; otherwise, it might
+       use the same hardware register for all 8 local variables.  */
+    if (p != p1 || p != p2 || p != p3 || p != p4
+	|| p != p5 || p != p6 || p != p7)
+      _exit(1);
+
+    /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent
+       from child file descriptors.  If the child closes a descriptor
+       before it execs or exits, this munges the parent's descriptor
+       as well.  Test for this by closing stdout in the child.  */
+    _exit(close(fileno(stdout)) != 0);
+  } else {
+    int status;
+    struct stat st;
+
+    while (wait(&status) != child)
+      ;
+    return (
+	 /* Was there some problem with vforking?  */
+	 child < 0
+
+	 /* Did the child fail?  (This shouldn't happen.)  */
+	 || status
+
+	 /* Did the vfork/compiler bug occur?  */
+	 || parent != getpid()
+
+	 /* Did the file descriptor bug occur?  */
+	 || fstat(fileno(stdout), &st) != 0
+	 );
+  }
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_vfork_works=yes
+else
+  ac_cv_func_vfork_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5
+$as_echo "$ac_cv_func_vfork_works" >&6; }
+
+fi;
+if test "x$ac_cv_func_fork_works" = xcross; then
+  ac_cv_func_vfork_works=$ac_cv_func_vfork
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5
+$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;}
+fi
+
+if test "x$ac_cv_func_vfork_works" = xyes; then
+
+$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h
+
+else
+
+$as_echo "#define vfork fork" >>confdefs.h
+
+fi
+if test "x$ac_cv_func_fork_works" = xyes; then
+
+$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h
+
+fi
+
+  for ac_func in fdwalk getrlimit pipe pipe2 poll socketpair sigaction \
+		  ptrace64 sbrk setns sigaltstack sigprocmask \
+		  setpgid setpgrp getrusage getauxval
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_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
+
+
+      ac_fn_c_check_decl "$LINENO" "ADDR_NO_RANDOMIZE" "ac_cv_have_decl_ADDR_NO_RANDOMIZE" "#include <sys/personality.h>
+"
+if test "x$ac_cv_have_decl_ADDR_NO_RANDOMIZE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ADDR_NO_RANDOMIZE $ac_have_decl
+_ACEOF
+
+
+  if test "$cross_compiling" = yes; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/personality.h>
+int
+main ()
+{
+
+  #      if !HAVE_DECL_ADDR_NO_RANDOMIZE
+  #       define ADDR_NO_RANDOMIZE 0x0040000
+  #      endif
+	 /* Test the flag could be set and stays set.  */
+	 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
+	 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
+	     return 1
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  have_personality=true
+else
+  have_personality=false
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/personality.h>
+int
+main ()
+{
+
+  #      if !HAVE_DECL_ADDR_NO_RANDOMIZE
+  #       define ADDR_NO_RANDOMIZE 0x0040000
+  #      endif
+	 /* Test the flag could be set and stays set.  */
+	 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
+	 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
+	     return 1
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  have_personality=true
+else
+  have_personality=false
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+  if $have_personality
+  then
+
+$as_echo "#define HAVE_PERSONALITY 1" >>confdefs.h
+
+  fi
+
+  ac_fn_c_check_decl "$LINENO" "strstr" "ac_cv_have_decl_strstr" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strstr" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRSTR $ac_have_decl
+_ACEOF
+
+
+  # ----------------------- #
+  # Checks for structures.  #
+  # ----------------------- #
+
+  ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default"
+if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
+if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+_ACEOF
+
+
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kinfo_getfile" >&5
+$as_echo_n "checking for library containing kinfo_getfile... " >&6; }
+if ${ac_cv_search_kinfo_getfile+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+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 kinfo_getfile ();
+int
+main ()
+{
+return kinfo_getfile ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' util util-freebsd; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_kinfo_getfile=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_kinfo_getfile+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_kinfo_getfile+:} false; then :
+
+else
+  ac_cv_search_kinfo_getfile=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_kinfo_getfile" >&5
+$as_echo "$ac_cv_search_kinfo_getfile" >&6; }
+ac_res=$ac_cv_search_kinfo_getfile
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+$as_echo "#define HAVE_KINFO_GETFILE 1" >>confdefs.h
+
+fi
+
+
+  # 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 :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  #include <setjmp.h>
+
+int
+main ()
+{
+sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdb_cv_func_sigsetjmp=yes
+else
+  gdb_cv_func_sigsetjmp=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_func_sigsetjmp" >&5
+$as_echo "$gdb_cv_func_sigsetjmp" >&6; }
+  if test "$gdb_cv_func_sigsetjmp" = "yes"; then
+
+$as_echo "#define HAVE_SIGSETJMP 1" >>confdefs.h
+
+  fi
+
+
+# Check whether --with-intel_pt was given.
+if test "${with_intel_pt+set}" = set; then :
+  withval=$with_intel_pt;
+else
+  with_intel_pt=auto
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use intel pt" >&5
+$as_echo_n "checking whether to use intel pt... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_intel_pt" >&5
+$as_echo "$with_intel_pt" >&6; }
+
+  if test "${with_intel_pt}" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Intel Processor Trace support disabled; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: Intel Processor Trace support disabled; some features may be unavailable." >&2;}
+    HAVE_LIBIPT=no
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  #include <linux/perf_event.h>
+  #ifndef PERF_ATTR_SIZE_VER5
+  # error
+  #endif
+
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  perf_event=yes
+else
+  perf_event=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+    if test "$perf_event" != yes; then
+      if test "$with_intel_pt" = yes; then
+	as_fn_error $? "linux/perf_event.h missing or too old" "$LINENO" 5
+      else
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: linux/perf_event.h missing or too old; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: linux/perf_event.h missing or too old; some features may be unavailable." >&2;}
+      fi
+    fi
+
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libipt-prefix was given.
+if test "${with_libipt_prefix+set}" = set; then :
+  withval=$with_libipt_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/lib"
+      fi
+    fi
+
+fi
+
+
+# Check whether --with-libipt-type was given.
+if test "${with_libipt_type+set}" = set; then :
+  withval=$with_libipt_type;  with_libipt_type=$withval
+else
+   with_libipt_type=auto
+fi
+
+  lib_type=`eval echo \$with_libipt_type`
+
+      LIBIPT=
+  LTLIBIPT=
+  INCIPT=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='ipt '
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBIPT="${LIBIPT}${LIBIPT:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          if test $use_additional = yes; then
+            if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext" && test x$lib_type != xstatic; then
+              found_dir="$additional_libdir"
+              found_so="$additional_libdir/lib$name.$shlibext"
+              if test -f "$additional_libdir/lib$name.la"; then
+                found_la="$additional_libdir/lib$name.la"
+              fi
+            elif test x$lib_type != xshared; then
+              if test -f "$additional_libdir/lib$name.$libext"; then
+                found_dir="$additional_libdir"
+                found_a="$additional_libdir/lib$name.$libext"
+                if test -f "$additional_libdir/lib$name.la"; then
+                  found_la="$additional_libdir/lib$name.la"
+                fi
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBIPT; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                  if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext" && test x$lib_type != xstatic; then
+                    found_dir="$dir"
+                    found_so="$dir/lib$name.$shlibext"
+                    if test -f "$dir/lib$name.la"; then
+                      found_la="$dir/lib$name.la"
+                    fi
+                  elif test x$lib_type != xshared; then
+                    if test -f "$dir/lib$name.$libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/lib$name.$libext"
+                      if test -f "$dir/lib$name.la"; then
+                        found_la="$dir/lib$name.la"
+                      fi
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+                                LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$hardcode_direct" = yes; then
+                                                      LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
+                else
+                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                                                            LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBIPT; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBIPT="${LIBIPT}${LIBIPT:+ }-L$found_dir"
+                    fi
+                    if test "$hardcode_minus_L" != no; then
+                                                                                        LIBIPT="${LIBIPT}${LIBIPT:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBIPT="${LIBIPT}${LIBIPT:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBIPT="${LIBIPT}${LIBIPT:+ }$found_a"
+              else
+                                                LIBIPT="${LIBIPT}${LIBIPT:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */lib | */lib/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux*) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCIPT; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCIPT="${INCIPT}${INCIPT:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/lib"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/lib"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux*) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBIPT; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBIPT="${LIBIPT}${LIBIPT:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBIPT; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBIPT="${LIBIPT}${LIBIPT:+ }$dep"
+                    LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIBIPT="${LIBIPT}${LIBIPT:+ }-l$name"
+              LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-l$name"
+            else
+              LIBIPT="${LIBIPT}${LIBIPT:+ }-l:lib$name.$libext"
+              LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-l:lib$name.$libext"
+            fi
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBIPT="${LIBIPT}${LIBIPT:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBIPT="${LIBIPT}${LIBIPT:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBIPT="${LTLIBIPT}${LTLIBIPT:+ }-R$found_dir"
+    done
+  fi
+
+
+        ac_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCIPT; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libipt" >&5
+$as_echo_n "checking for libipt... " >&6; }
+if ${ac_cv_libipt+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_save_LIBS="$LIBS"
+    LIBS="$LIBS $LIBIPT"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "intel-pt.h"
+int
+main ()
+{
+pt_insn_alloc_decoder (0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_libipt=yes
+else
+  ac_cv_libipt=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libipt" >&5
+$as_echo "$ac_cv_libipt" >&6; }
+  if test "$ac_cv_libipt" = yes; then
+    HAVE_LIBIPT=yes
+
+$as_echo "#define HAVE_LIBIPT 1" >>confdefs.h
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libipt" >&5
+$as_echo_n "checking how to link with libipt... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBIPT" >&5
+$as_echo "$LIBIPT" >&6; }
+  else
+    HAVE_LIBIPT=no
+            CPPFLAGS="$ac_save_CPPFLAGS"
+    LIBIPT=
+    LTLIBIPT=
+  fi
+
+
+
+
+
+
+    if test "$HAVE_LIBIPT" != yes; then
+      if test "$with_intel_pt" = yes; then
+	as_fn_error $? "libipt is missing or unusable" "$LINENO" 5
+      else
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libipt is missing or unusable; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: libipt is missing or unusable; some features may be unavailable." >&2;}
+      fi
+    else
+      save_LIBS=$LIBS
+      LIBS="$LIBS $LIBIPT"
+      for ac_func in pt_insn_event
+do :
+  ac_fn_c_check_func "$LINENO" "pt_insn_event" "ac_cv_func_pt_insn_event"
+if test "x$ac_cv_func_pt_insn_event" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PT_INSN_EVENT 1
+_ACEOF
+
+fi
+done
+
+      ac_fn_c_check_member "$LINENO" "struct pt_insn" "enabled" "ac_cv_member_struct_pt_insn_enabled" "#include <intel-pt.h>
+"
+if test "x$ac_cv_member_struct_pt_insn_enabled" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PT_INSN_ENABLED 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct pt_insn" "resynced" "ac_cv_member_struct_pt_insn_resynced" "#include <intel-pt.h>
+"
+if test "x$ac_cv_member_struct_pt_insn_resynced" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PT_INSN_RESYNCED 1
+_ACEOF
+
+
+fi
+
+      LIBS=$save_LIBS
+    fi
+  fi
+
+
+$as_echo "#define _STRUCTURED_PROC 1" >>confdefs.h
+
+ for ac_header in sys/procfs.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/procfs.h" "ac_cv_header_sys_procfs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_procfs_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_PROCFS_H 1
+_ACEOF
+
+fi
+
+done
+
+  if test "$ac_cv_header_sys_procfs_h" = yes; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gregset_t in sys/procfs.h" >&5
+$as_echo_n "checking for gregset_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_gregset_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+gregset_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_gregset_t=yes
+else
+  bfd_cv_have_sys_procfs_type_gregset_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_gregset_t = yes; then
+
+$as_echo "#define HAVE_GREGSET_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_gregset_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_gregset_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fpregset_t in sys/procfs.h" >&5
+$as_echo_n "checking for fpregset_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_fpregset_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+fpregset_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_fpregset_t=yes
+else
+  bfd_cv_have_sys_procfs_type_fpregset_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_fpregset_t = yes; then
+
+$as_echo "#define HAVE_FPREGSET_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_fpregset_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_fpregset_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prgregset_t in sys/procfs.h" >&5
+$as_echo_n "checking for prgregset_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_prgregset_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+prgregset_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_prgregset_t=yes
+else
+  bfd_cv_have_sys_procfs_type_prgregset_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_prgregset_t = yes; then
+
+$as_echo "#define HAVE_PRGREGSET_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prgregset_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_prgregset_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prfpregset_t in sys/procfs.h" >&5
+$as_echo_n "checking for prfpregset_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_prfpregset_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+prfpregset_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_prfpregset_t=yes
+else
+  bfd_cv_have_sys_procfs_type_prfpregset_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
+
+$as_echo "#define HAVE_PRFPREGSET_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prfpregset_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_prfpregset_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for prgregset32_t in sys/procfs.h" >&5
+$as_echo_n "checking for prgregset32_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_prgregset32_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+prgregset32_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_prgregset32_t=yes
+else
+  bfd_cv_have_sys_procfs_type_prgregset32_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_prgregset32_t = yes; then
+
+$as_echo "#define HAVE_PRGREGSET32_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_prgregset32_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_prgregset32_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpid_t in sys/procfs.h" >&5
+$as_echo_n "checking for lwpid_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_lwpid_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+lwpid_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_lwpid_t=yes
+else
+  bfd_cv_have_sys_procfs_type_lwpid_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_lwpid_t = yes; then
+
+$as_echo "#define HAVE_LWPID_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_lwpid_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_lwpid_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psaddr_t in sys/procfs.h" >&5
+$as_echo_n "checking for psaddr_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_psaddr_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+psaddr_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_psaddr_t=yes
+else
+  bfd_cv_have_sys_procfs_type_psaddr_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_psaddr_t = yes; then
+
+$as_echo "#define HAVE_PSADDR_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_psaddr_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_psaddr_t" >&6; }
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_fpregset_t in sys/procfs.h" >&5
+$as_echo_n "checking for elf_fpregset_t in sys/procfs.h... " >&6; }
+ if ${bfd_cv_have_sys_procfs_type_elf_fpregset_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int
+main ()
+{
+elf_fpregset_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  bfd_cv_have_sys_procfs_type_elf_fpregset_t=yes
+else
+  bfd_cv_have_sys_procfs_type_elf_fpregset_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_elf_fpregset_t = yes; then
+
+$as_echo "#define HAVE_ELF_FPREGSET_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&5
+$as_echo "$bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&6; }
+
+  fi
+
+# This is set by GDB_AC_COMMON.
+
+
+
+# Check whether we will enable the inclusion of unit tests when
+# compiling GDB.
+#
+# The default value of this option changes depending whether we're on
+# development mode (in which case it's "true") or not (in which case
+# it's "false").  The $development variable is set by the GDB_AC_COMMON
+# macro, which must therefore be used before GDB_AC_SELFTEST.
+
+if test "x$development" != xtrue && test "x$development" != xfalse; then :
+  as_fn_error $? "Invalid value for \$development, got \"$development\", expecting \"true\" or \"false\"." "$LINENO" 5
+fi
+
+# Check whether --enable-unit-tests was given.
+if test "${enable_unit_tests+set}" = set; then :
+  enableval=$enable_unit_tests; case "${enableval}" in
+  yes)  enable_unittests=true  ;;
+  no)   enable_unittests=false ;;
+  *)    as_fn_error $? "bad value ${enableval} for --{enable,disable}-unit-tests option" "$LINENO" 5 ;;
+esac
+else
+  enable_unittests=$development
+fi
+
+
+if $enable_unittests; then
+
+$as_echo "#define GDB_SELF_TEST 1" >>confdefs.h
+
+
+fi
+
+
+ case ${build_alias} in
+  "") build_noncanonical=${build} ;;
+  *) build_noncanonical=${build_alias} ;;
+esac
+
+ case ${host_alias} in
+  "") host_noncanonical=${build_noncanonical} ;;
+  *) host_noncanonical=${host_alias} ;;
+esac
+
+ case ${target_alias} in
+  "") target_noncanonical=${host_noncanonical} ;;
+  *) target_noncanonical=${target_alias} ;;
+esac
+
+
+
+
+
+
+# Dependency checking.
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depdir"
+
+
+
+# If we haven't got the data from the intl directory,
+# assume NLS is disabled.
+USE_NLS=no
+LIBINTL=
+LIBINTL_DEP=
+INCINTL=
+XGETTEXT=
+GMSGFMT=
+POSUB=
+
+if test -f  ../intl/config.intl; then
+  .  ../intl/config.intl
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+if test x"$USE_NLS" != xyes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
+$as_echo_n "checking for catalogs to be installed... " >&6; }
+  # Look for .po and .gmo files in the source directory.
+  CATALOGS=
+  XLINGUAS=
+  for cat in $srcdir/po/*.gmo $srcdir/po/*.po; do
+    # If there aren't any .gmo files the shell will give us the
+    # literal string "../path/to/srcdir/po/*.gmo" which has to be
+    # weeded out.
+    case "$cat" in *\**)
+      continue;;
+    esac
+    # The quadruple backslash is collapsed to a double backslash
+    # by the backticks, then collapsed again by the double quotes,
+    # leaving us with one backslash in the sed expression (right
+    # before the dot that mustn't act as a wildcard).
+    cat=`echo $cat | sed -e "s!$srcdir/po/!!" -e "s!\\\\.po!.gmo!"`
+    lang=`echo $cat | sed -e "s!\\\\.gmo!!"`
+    # The user is allowed to set LINGUAS to a list of languages to
+    # install catalogs for.  If it's empty that means "all of them."
+    if test "x$LINGUAS" = x; then
+      CATALOGS="$CATALOGS $cat"
+      XLINGUAS="$XLINGUAS $lang"
+    else
+      case "$LINGUAS" in *$lang*)
+        CATALOGS="$CATALOGS $cat"
+        XLINGUAS="$XLINGUAS $lang"
+        ;;
+      esac
+    fi
+  done
+  LINGUAS="$XLINGUAS"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
+$as_echo "$LINGUAS" >&6; }
+
+
+    DATADIRNAME=share
+
+  INSTOBJEXT=.mo
+
+  GENCAT=gencat
+
+  CATOBJEXT=.gmo
+
+fi
+
+# Create sub-directories for objects and dependencies.
+CONFIG_SRC_SUBDIR="arch gdbsupport nat target"
+
+
+ac_config_commands="$ac_config_commands gdbdepdir"
+
+
+depcc="$CC"   am_compiler_list=
+
+am_depcomp=$ac_aux_dir/depcomp
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    if test $depmode = none; then break; fi
+
+    $as_echo "$as_me:$LINENO: trying $depmode" >&5
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "include sub/conftest.Po" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    depcmd="depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c"
+    echo "| $depcmd" | sed -e 's/  */ /g' >&5
+    if env $depcmd > conftest.err 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po >>conftest.err 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po >>conftest.err 2>&1 &&
+       ${MAKE-make} -s -f confmf >>conftest.err 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+	$as_echo "$as_me:$LINENO: success" >&5
+        break
+      fi
+    fi
+    $as_echo "$as_me:$LINENO: failure, diagnostics are:" >&5
+    sed -e 's/^/| /' < conftest.err >&5
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+if test x${am_cv_CC_dependencies_compiler_type-none} = xnone
+then as_fn_error $? "no usable dependency style found" "$LINENO" 5
+else CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+fi
+
+
+for ac_header in termios.h sys/reg.h string.h 		 sys/procfs.h linux/elf.h 		 fcntl.h signal.h sys/file.h 		 sys/ioctl.h netinet/in.h sys/socket.h netdb.h 		 netinet/tcp.h arpa/inet.h ws2tcpip.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in vfork.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default"
+if test "x$ac_cv_header_vfork_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_VFORK_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_func in fork vfork
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_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
+
+if test "x$ac_cv_func_fork" = xyes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5
+$as_echo_n "checking for working fork... " >&6; }
+if ${ac_cv_func_fork_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_fork_works=cross
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	  /* By Ruediger Kuhlmann. */
+	  return fork () < 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_fork_works=yes
+else
+  ac_cv_func_fork_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5
+$as_echo "$ac_cv_func_fork_works" >&6; }
+
+else
+  ac_cv_func_fork_works=$ac_cv_func_fork
+fi
+if test "x$ac_cv_func_fork_works" = xcross; then
+  case $host in
+    *-*-amigaos* | *-*-msdosdjgpp*)
+      # Override, as these systems have only a dummy fork() stub
+      ac_cv_func_fork_works=no
+      ;;
+    *)
+      ac_cv_func_fork_works=yes
+      ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5
+$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;}
+fi
+ac_cv_func_vfork_works=$ac_cv_func_vfork
+if test "x$ac_cv_func_vfork" = xyes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5
+$as_echo_n "checking for working vfork... " >&6; }
+if ${ac_cv_func_vfork_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  ac_cv_func_vfork_works=cross
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Thanks to Paul Eggert for this test.  */
+$ac_includes_default
+#include <sys/wait.h>
+#ifdef HAVE_VFORK_H
+# include <vfork.h>
+#endif
+/* On some sparc systems, changes by the child to local and incoming
+   argument registers are propagated back to the parent.  The compiler
+   is told about this with #include <vfork.h>, but some compilers
+   (e.g. gcc -O) don't grok <vfork.h>.  Test for this by using a
+   static variable whose address is put into a register that is
+   clobbered by the vfork.  */
+static void
+#ifdef __cplusplus
+sparc_address_test (int arg)
+# else
+sparc_address_test (arg) int arg;
+#endif
+{
+  static pid_t child;
+  if (!child) {
+    child = vfork ();
+    if (child < 0) {
+      perror ("vfork");
+      _exit(2);
+    }
+    if (!child) {
+      arg = getpid();
+      write(-1, "", 0);
+      _exit (arg);
+    }
+  }
+}
+
+int
+main ()
+{
+  pid_t parent = getpid ();
+  pid_t child;
+
+  sparc_address_test (0);
+
+  child = vfork ();
+
+  if (child == 0) {
+    /* Here is another test for sparc vfork register problems.  This
+       test uses lots of local variables, at least as many local
+       variables as main has allocated so far including compiler
+       temporaries.  4 locals are enough for gcc 1.40.3 on a Solaris
+       4.1.3 sparc, but we use 8 to be safe.  A buggy compiler should
+       reuse the register of parent for one of the local variables,
+       since it will think that parent can't possibly be used any more
+       in this routine.  Assigning to the local variable will thus
+       munge parent in the parent process.  */
+    pid_t
+      p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(),
+      p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid();
+    /* Convince the compiler that p..p7 are live; otherwise, it might
+       use the same hardware register for all 8 local variables.  */
+    if (p != p1 || p != p2 || p != p3 || p != p4
+	|| p != p5 || p != p6 || p != p7)
+      _exit(1);
+
+    /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent
+       from child file descriptors.  If the child closes a descriptor
+       before it execs or exits, this munges the parent's descriptor
+       as well.  Test for this by closing stdout in the child.  */
+    _exit(close(fileno(stdout)) != 0);
+  } else {
+    int status;
+    struct stat st;
+
+    while (wait(&status) != child)
+      ;
+    return (
+	 /* Was there some problem with vforking?  */
+	 child < 0
+
+	 /* Did the child fail?  (This shouldn't happen.)  */
+	 || status
+
+	 /* Did the vfork/compiler bug occur?  */
+	 || parent != getpid()
+
+	 /* Did the file descriptor bug occur?  */
+	 || fstat(fileno(stdout), &st) != 0
+	 );
+  }
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_func_vfork_works=yes
+else
+  ac_cv_func_vfork_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5
+$as_echo "$ac_cv_func_vfork_works" >&6; }
+
+fi;
+if test "x$ac_cv_func_fork_works" = xcross; then
+  ac_cv_func_vfork_works=$ac_cv_func_vfork
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5
+$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;}
+fi
+
+if test "x$ac_cv_func_vfork_works" = xyes; then
+
+$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h
+
+else
+
+$as_echo "#define vfork fork" >>confdefs.h
+
+fi
+if test "x$ac_cv_func_fork_works" = xyes; then
+
+$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h
+
+fi
+
+for ac_func in pread pwrite pread64
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_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
+
+
+# Check the return and argument types of ptrace.
+
+
+for ac_header in sys/ptrace.h ptrace.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+gdb_ptrace_headers='
+#include <sys/types.h>
+#if HAVE_SYS_PTRACE_H
+# include <sys/ptrace.h>
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+'
+
+# Check return type.  Varargs (used on GNU/Linux) conflict with the
+# empty argument list, so check for that explicitly.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of ptrace" >&5
+$as_echo_n "checking return type of ptrace... " >&6; }
+if ${gdb_cv_func_ptrace_ret+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$gdb_ptrace_headers
+int
+main ()
+{
+extern long ptrace (enum __ptrace_request, ...);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdb_cv_func_ptrace_ret='long'
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$gdb_ptrace_headers
+int
+main ()
+{
+extern int ptrace ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdb_cv_func_ptrace_ret='int'
+else
+  gdb_cv_func_ptrace_ret='long'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_func_ptrace_ret" >&5
+$as_echo "$gdb_cv_func_ptrace_ret" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define PTRACE_TYPE_RET $gdb_cv_func_ptrace_ret
+_ACEOF
+
+# Check argument types.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking types of arguments for ptrace" >&5
+$as_echo_n "checking types of arguments for ptrace... " >&6; }
+if ${gdb_cv_func_ptrace_args+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$gdb_ptrace_headers
+int
+main ()
+{
+extern long ptrace (enum __ptrace_request, ...);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdb_cv_func_ptrace_args='enum __ptrace_request,int,long,long'
+else
+
+for gdb_arg1 in 'int' 'long'; do
+ for gdb_arg2 in 'pid_t' 'int' 'long'; do
+  for gdb_arg3 in 'int *' 'caddr_t' 'int' 'long' 'void *'; do
+   for gdb_arg4 in 'int' 'long' 'void *'; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$gdb_ptrace_headers
+int
+main ()
+{
+
+extern $gdb_cv_func_ptrace_ret
+  ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4";
+    break 4;
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    for gdb_arg5 in 'int *' 'int' 'long'; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$gdb_ptrace_headers
+int
+main ()
+{
+
+extern $gdb_cv_func_ptrace_ret
+  ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4, $gdb_arg5);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4,$gdb_arg5";
+    break 5;
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    done
+   done
+  done
+ done
+done
+# Provide a safe default value.
+: ${gdb_cv_func_ptrace_args='int,int,long,long'}
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_func_ptrace_args" >&5
+$as_echo "$gdb_cv_func_ptrace_args" >&6; }
+ac_save_IFS=$IFS; IFS=','
+set dummy `echo "$gdb_cv_func_ptrace_args" | sed 's/\*/\*/g'`
+IFS=$ac_save_IFS
+shift
+
+cat >>confdefs.h <<_ACEOF
+#define PTRACE_TYPE_ARG1 $1
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PTRACE_TYPE_ARG3 $3
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PTRACE_TYPE_ARG4 $4
+_ACEOF
+
+if test -n "$5"; then
+
+cat >>confdefs.h <<_ACEOF
+#define PTRACE_TYPE_ARG5 $5
+_ACEOF
+
+fi
+
+
+# Check for UST
+ustlibs=""
+ustinc=""
+
+
+# Check whether --with-ust was given.
+if test "${with_ust+set}" = set; then :
+  withval=$with_ust;
+fi
+
+
+# Check whether --with-ust_include was given.
+if test "${with_ust_include+set}" = set; then :
+  withval=$with_ust_include;
+fi
+
+
+# Check whether --with-ust_lib was given.
+if test "${with_ust_lib+set}" = set; then :
+  withval=$with_ust_lib;
+fi
+
+
+case $with_ust in
+  no)
+    ustlibs=
+    ustinc=
+    ;;
+  "" | yes)
+    ustlibs=" -lust "
+    ustinc=""
+    ;;
+  *)
+    ustlibs="-L$with_ust/lib -lust"
+    ustinc="-I$with_ust/include "
+    ;;
+esac
+if test "x$with_ust_include" != x; then
+  ustinc="-I$with_ust_include "
+fi
+if test "x$with_ust_lib" != x; then
+  ustlibs="-L$with_ust_lib -lust"
+fi
+
+if test "x$with_ust" != "xno"; then
+  saved_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $ustinc"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ust" >&5
+$as_echo_n "checking for ust... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define CONFIG_UST_GDB_INTEGRATION
+#include <ust/ust.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; };
+$as_echo "#define HAVE_UST 1" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }; ustlibs= ; ustinc=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$saved_CFLAGS"
+fi
+
+# Flags needed for UST
+
+
+
+
+# Check whether --enable-werror was given.
+if test "${enable_werror+set}" = set; then :
+  enableval=$enable_werror; case "${enableval}" in
+     yes | y) ERROR_ON_WARNING="yes" ;;
+     no | n)  ERROR_ON_WARNING="no" ;;
+     *) as_fn_error $? "bad value ${enableval} for --enable-werror" "$LINENO" 5 ;;
+   esac
+fi
+
+
+# Enable -Werror by default when using gcc.  Turn it off for releases.
+if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" && $development; then
+    ERROR_ON_WARNING=yes
+fi
+
+WERROR_CFLAGS=""
+if test "${ERROR_ON_WARNING}" = yes ; then
+    WERROR_CFLAGS="-Werror"
+fi
+
+# The options we'll try to enable.
+build_warnings="-Wall -Wpointer-arith \
+-Wno-unused -Wunused-value -Wunused-variable -Wunused-function \
+-Wno-switch -Wno-char-subscripts \
+-Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable \
+-Wno-sign-compare -Wno-error=maybe-uninitialized \
+-Wno-mismatched-tags \
+-Wno-error=deprecated-register \
+-Wsuggest-override \
+-Wimplicit-fallthrough=3 \
+-Wduplicated-cond \
+-Wshadow=local \
+-Wdeprecated-copy \
+-Wdeprecated-copy-dtor \
+-Wredundant-move \
+-Wmissing-declarations \
+-Wmissing-prototypes \
+-Wstrict-null-sentinel \
+"
+
+case "${host}" in
+  *-*-mingw32*)
+    # Enable -Wno-format by default when using gcc on mingw since many
+    # GCC versions complain about %I64.
+    build_warnings="$build_warnings -Wno-format" ;;
+  *-*-solaris*)
+    # Solaris 11.4 <python2.7/ceval.h> uses #pragma no_inline that GCC
+    # doesn't understand.
+    build_warnings="$build_warnings -Wno-unknown-pragmas"
+    # Solaris 11 <unistd.h> marks vfork deprecated.
+    build_warnings="$build_warnings -Wno-deprecated-declarations" ;;
+  *)
+    # Note that gcc requires -Wformat for -Wformat-nonliteral to work,
+    # but there's a special case for this below.
+    build_warnings="$build_warnings -Wformat-nonliteral" ;;
+esac
+
+# Check whether --enable-build-warnings was given.
+if test "${enable_build_warnings+set}" = set; then :
+  enableval=$enable_build_warnings; case "${enableval}" in
+  yes)	;;
+  no)	build_warnings="-w";;
+  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
+        build_warnings="${build_warnings} ${t}";;
+  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
+        build_warnings="${t} ${build_warnings}";;
+  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
+esac
+if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
+  echo "Setting compiler warning flags = $build_warnings" 6>&1
+fi
+fi
+# Check whether --enable-gdb-build-warnings was given.
+if test "${enable_gdb_build_warnings+set}" = set; then :
+  enableval=$enable_gdb_build_warnings; case "${enableval}" in
+  yes)	;;
+  no)	build_warnings="-w";;
+  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
+        build_warnings="${build_warnings} ${t}";;
+  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
+        build_warnings="${t} ${build_warnings}";;
+  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
+esac
+if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
+  echo "Setting GDB specific compiler warning flags = $build_warnings" 6>&1
+fi
+fi
+
+# The set of warnings supported by a C++ compiler is not the same as
+# of the C compiler.
+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
+
+
+WARN_CFLAGS=""
+if test "x${build_warnings}" != x -a "x$GCC" = xyes
+then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler warning flags" >&5
+$as_echo_n "checking compiler warning flags... " >&6; }
+    # Separate out the -Werror flag as some files just cannot be
+    # compiled with it enabled.
+    for w in ${build_warnings}; do
+	# GCC does not complain about -Wno-unknown-warning.  Invert
+	# and test -Wunknown-warning instead.
+	case $w in
+	-Wno-*)
+		wtest=`echo $w | sed 's/-Wno-/-W/g'` ;;
+        -Wformat-nonliteral)
+		# gcc requires -Wformat before -Wformat-nonliteral
+		# will work, so stick them together.
+		w="-Wformat $w"
+		wtest="$w"
+		;;
+	*)
+		wtest=$w ;;
+	esac
+
+	case $w in
+	-Werr*) WERROR_CFLAGS=-Werror ;;
+	*)
+	    # Check whether GCC accepts it.
+	    saved_CFLAGS="$CFLAGS"
+	    CFLAGS="$CFLAGS -Werror $wtest"
+	    saved_CXXFLAGS="$CXXFLAGS"
+	    CXXFLAGS="$CXXFLAGS -Werror $wtest"
+	    if test "x$w" = "x-Wunused-variable"; then
+	      # Check for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38958,
+	      # fixed in GCC 4.9.  This test is derived from the gdb
+	      # source code that triggered this bug in GCC.
+	      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+struct scoped_restore_base {};
+                 struct scoped_restore_tmpl : public scoped_restore_base {
+		   ~scoped_restore_tmpl() {}
+		 };
+int
+main ()
+{
+const scoped_restore_base &b = scoped_restore_tmpl();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  WARN_CFLAGS="${WARN_CFLAGS} $w"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+	    else
+	      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  WARN_CFLAGS="${WARN_CFLAGS} $w"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+	    fi
+	    CFLAGS="$saved_CFLAGS"
+	    CXXFLAGS="$saved_CXXFLAGS"
+	esac
+    done
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${WARN_CFLAGS} ${WERROR_CFLAGS}" >&5
+$as_echo "${WARN_CFLAGS} ${WERROR_CFLAGS}" >&6; }
+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
+
+
+
+old_LIBS="$LIBS"
+LIBS="$LIBS -ldl"
+for ac_func in dladdr
+do :
+  ac_fn_c_check_func "$LINENO" "dladdr" "ac_cv_func_dladdr"
+if test "x$ac_cv_func_dladdr" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLADDR 1
+_ACEOF
+
+fi
+done
+
+LIBS="$old_LIBS"
+
+
+  # Check for presence and size of long long.
+  ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
+if test "x$ac_cv_type_long_long" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LONG_LONG 1
+_ACEOF
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+$as_echo_n "checking size of long long... " >&6; }
+if ${ac_cv_sizeof_long_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_long_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_long_long=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
+$as_echo "$ac_cv_sizeof_long_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+_ACEOF
+
+
+fi
+
+
+  as_ac_Symbol=`$as_echo "ac_cv_have_decl_basename(char *)" | $as_tr_sh`
+ac_fn_c_check_decl "$LINENO" "basename(char *)" "$as_ac_Symbol" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Symbol"\" = x"yes"; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_BASENAME $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "ffs" "ac_cv_have_decl_ffs" "$ac_includes_default"
+if test "x$ac_cv_have_decl_ffs" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FFS $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_asprintf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ASPRINTF $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_vasprintf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VASPRINTF $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_snprintf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SNPRINTF $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_vsnprintf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VSNPRINTF $ac_have_decl
+_ACEOF
+
+  ac_fn_c_check_decl "$LINENO" "strtol" "ac_cv_have_decl_strtol" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strtol" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOL $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "strtoul" "ac_cv_have_decl_strtoul" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strtoul" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOUL $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "strtoll" "ac_cv_have_decl_strtoll" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strtoll" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOLL $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "strtoull" "ac_cv_have_decl_strtoull" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strtoull" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOULL $ac_have_decl
+_ACEOF
+
+  ac_fn_c_check_decl "$LINENO" "strverscmp" "ac_cv_have_decl_strverscmp" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strverscmp" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRVERSCMP $ac_have_decl
+_ACEOF
+
+
+
+ac_fn_c_check_decl "$LINENO" "perror" "ac_cv_have_decl_perror" "$ac_includes_default"
+if test "x$ac_cv_have_decl_perror" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PERROR $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_vasprintf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VASPRINTF $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_vsnprintf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VSNPRINTF $ac_have_decl
+_ACEOF
+
+
+ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include <sys/types.h>
+#if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#elif HAVE_WS2TCPIP_H
+# include <ws2tcpip.h>
+#endif
+
+"
+if test "x$ac_cv_type_socklen_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_SOCKLEN_T 1
+_ACEOF
+
+
+fi
+
+
+case "${target}" in
+  *-android*)
+    # Starting with NDK version 9, <elf.h> actually includes definitions
+    # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
+    # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
+    # leading to conflicts with the defintions from <linux/elf.h>.
+    # This makes it impossible for us to include both <elf.h> and
+    # <linux/elf.h>, which means that, in practice, we do not have
+    # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
+    # Therefore, do not try to auto-detect availability, as it would
+    # get it wrong on this platform.
+    ;;
+  *)
+    ac_fn_c_check_type "$LINENO" "Elf32_auxv_t" "ac_cv_type_Elf32_auxv_t" "#include <elf.h>
+
+"
+if test "x$ac_cv_type_Elf32_auxv_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_ELF32_AUXV_T 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "Elf64_auxv_t" "ac_cv_type_Elf64_auxv_t" "#include <elf.h>
+
+"
+if test "x$ac_cv_type_Elf64_auxv_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_ELF64_AUXV_T 1
+_ACEOF
+
+
+fi
+
+esac
+
+
+
+# Check whether --with-pkgversion was given.
+if test "${with_pkgversion+set}" = set; then :
+  withval=$with_pkgversion; case "$withval" in
+      yes) as_fn_error $? "package version not specified" "$LINENO" 5 ;;
+      no)  PKGVERSION= ;;
+      *)   PKGVERSION="($withval) " ;;
+     esac
+else
+  PKGVERSION="(GDB) "
+
+fi
+
+
+
+
+
+# Check whether --with-bugurl was given.
+if test "${with_bugurl+set}" = set; then :
+  withval=$with_bugurl; case "$withval" in
+      yes) as_fn_error $? "bug URL not specified" "$LINENO" 5 ;;
+      no)  BUGURL=
+	   ;;
+      *)   BUGURL="$withval"
+	   ;;
+     esac
+else
+  BUGURL="http://www.gnu.org/software/gdb/bugs/"
+
+fi
+
+  case ${BUGURL} in
+  "")
+    REPORT_BUGS_TO=
+    REPORT_BUGS_TEXI=
+    ;;
+  *)
+    REPORT_BUGS_TO="<$BUGURL>"
+    REPORT_BUGS_TEXI=@uref{`echo "$BUGURL" | sed 's/@/@@/g'`}
+    ;;
+  esac;
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define PKGVERSION "$PKGVERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define REPORT_BUGS_TO "$REPORT_BUGS_TO"
+_ACEOF
+
+
+# Check for various supplementary target information (beyond the
+# triplet) which might affect the choices in configure.srv.
+case "${target}" in
+  i[34567]86-*-linux*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if building for x86-64" >&5
+$as_echo_n "checking if building for x86-64... " >&6; }
+if ${gdb_cv_i386_is_x86_64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_CPPFLAGS="$CPPFLAGS"
+                    CPPFLAGS="$CPPFLAGS $CFLAGS"
+                    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if __x86_64__
+got it
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "got it" >/dev/null 2>&1; then :
+  gdb_cv_i386_is_x86_64=yes
+else
+  gdb_cv_i386_is_x86_64=no
+fi
+rm -f conftest*
+
+                    CPPFLAGS="$save_CPPFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_i386_is_x86_64" >&5
+$as_echo "$gdb_cv_i386_is_x86_64" >&6; }
+    ;;
+
+  x86_64-*-linux*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if building for x32" >&5
+$as_echo_n "checking if building for x32... " >&6; }
+if ${gdb_cv_x86_is_x32+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_CPPFLAGS="$CPPFLAGS"
+		    CPPFLAGS="$CPPFLAGS $CFLAGS"
+		    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if __x86_64__ && __ILP32__
+got it
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "got it" >/dev/null 2>&1; then :
+  gdb_cv_x86_is_x32=yes
+else
+  gdb_cv_x86_is_x32=no
+fi
+rm -f conftest*
+
+		    CPPFLAGS="$save_CPPFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_x86_is_x32" >&5
+$as_echo "$gdb_cv_x86_is_x32" >&6; }
+    ;;
+
+  m68k-*-*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if building for Coldfire" >&5
+$as_echo_n "checking if building for Coldfire... " >&6; }
+if ${gdb_cv_m68k_is_coldfire+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_CPPFLAGS="$CPPFLAGS"
+                    CPPFLAGS="$CPPFLAGS $CFLAGS"
+                    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef __mcoldfire__
+got it
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "got it" >/dev/null 2>&1; then :
+  gdb_cv_m68k_is_coldfire=yes
+else
+  gdb_cv_m68k_is_coldfire=no
+fi
+rm -f conftest*
+
+                    CPPFLAGS="$save_CPPFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_m68k_is_coldfire" >&5
+$as_echo "$gdb_cv_m68k_is_coldfire" >&6; }
+    ;;
+esac
+
+. ${srcdir}/configure.srv
+
+if test "${srv_mingwce}" = "yes"; then
+  LIBS="$LIBS -lws2"
+elif test "${srv_mingw}" = "yes"; then
+  # WIN32APILIBS is set by GDB_AC_COMMON.
+  LIBS="$LIBS $WIN32APILIBS"
+fi
+
+if test "${srv_linux_usrregs}" = "yes"; then
+
+$as_echo "#define HAVE_LINUX_USRREGS 1" >>confdefs.h
+
+fi
+
+if test "${srv_linux_regsets}" = "yes"; then
+
+$as_echo "#define HAVE_LINUX_REGSETS 1" >>confdefs.h
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTRACE_GETREGS" >&5
+$as_echo_n "checking for PTRACE_GETREGS... " >&6; }
+  if ${gdbsrv_cv_have_ptrace_getregs+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/ptrace.h>
+int
+main ()
+{
+PTRACE_GETREGS;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdbsrv_cv_have_ptrace_getregs=yes
+else
+  gdbsrv_cv_have_ptrace_getregs=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdbsrv_cv_have_ptrace_getregs" >&5
+$as_echo "$gdbsrv_cv_have_ptrace_getregs" >&6; }
+  if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
+
+$as_echo "#define HAVE_PTRACE_GETREGS 1" >>confdefs.h
+
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTRACE_GETFPXREGS" >&5
+$as_echo_n "checking for PTRACE_GETFPXREGS... " >&6; }
+  if ${gdbsrv_cv_have_ptrace_getfpxregs+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/ptrace.h>
+int
+main ()
+{
+PTRACE_GETFPXREGS;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdbsrv_cv_have_ptrace_getfpxregs=yes
+else
+  gdbsrv_cv_have_ptrace_getfpxregs=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdbsrv_cv_have_ptrace_getfpxregs" >&5
+$as_echo "$gdbsrv_cv_have_ptrace_getfpxregs" >&6; }
+  if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
+
+$as_echo "#define HAVE_PTRACE_GETFPXREGS 1" >>confdefs.h
+
+  fi
+fi
+
+if test "${srv_linux_btrace}" = "yes"; then
+
+$as_echo "#define HAVE_LINUX_BTRACE 1" >>confdefs.h
+
+fi
+
+if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpid_t in thread_db.h" >&5
+$as_echo_n "checking for lwpid_t in thread_db.h... " >&6; }
+ if ${gdbserver_cv_have_thread_db_type_lwpid_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <thread_db.h>
+int
+main ()
+{
+lwpid_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdbserver_cv_have_thread_db_type_lwpid_t=yes
+else
+  gdbserver_cv_have_thread_db_type_lwpid_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $gdbserver_cv_have_thread_db_type_lwpid_t = yes; then
+
+$as_echo "#define HAVE_LWPID_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdbserver_cv_have_thread_db_type_lwpid_t" >&5
+$as_echo "$gdbserver_cv_have_thread_db_type_lwpid_t" >&6; }
+
+fi
+
+if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for psaddr_t in thread_db.h" >&5
+$as_echo_n "checking for psaddr_t in thread_db.h... " >&6; }
+ if ${gdbserver_cv_have_thread_db_type_psaddr_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <thread_db.h>
+int
+main ()
+{
+psaddr_t avar
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdbserver_cv_have_thread_db_type_psaddr_t=yes
+else
+  gdbserver_cv_have_thread_db_type_psaddr_t=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $gdbserver_cv_have_thread_db_type_psaddr_t = yes; then
+
+$as_echo "#define HAVE_PSADDR_T 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdbserver_cv_have_thread_db_type_psaddr_t" >&5
+$as_echo "$gdbserver_cv_have_thread_db_type_psaddr_t" >&6; }
+
+fi
+
+old_LIBS="$LIBS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+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 dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBDL 1
+_ACEOF
+
+  LIBS="-ldl $LIBS"
+
+fi
+
+LIBS="$old_LIBS"
+
+srv_thread_depfiles=
+srv_libs=
+
+if test "$srv_linux_thread_db" = "yes"; then
+  if test "$ac_cv_lib_dl_dlopen" = "yes"; then
+    srv_libs="-ldl"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the dynamic export flag" >&5
+$as_echo_n "checking for the dynamic export flag... " >&6; }
+    old_LDFLAGS="$LDFLAGS"
+    # Older GNU ld supports --export-dynamic but --dynamic-list may not be
+    # supported there.
+    RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
+    LDFLAGS="$LDFLAGS $RDYNAMIC"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  found="-Wl,--dynamic-list"
+		 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'
+else
+  RDYNAMIC="-rdynamic"
+		 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
+		 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  found="-rdynamic"
+else
+  found="no"
+			      RDYNAMIC=""
+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
+
+    LDFLAGS="$old_LDFLAGS"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found" >&5
+$as_echo "$found" >&6; }
+  else
+    srv_libs="-lthread_db"
+  fi
+
+  srv_thread_depfiles="thread-db.o proc-service.o"
+
+$as_echo "#define USE_THREAD_DB 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TD_VERSION" >&5
+$as_echo_n "checking for TD_VERSION... " >&6; }
+if ${gdbsrv_cv_have_td_version+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <thread_db.h>
+int
+main ()
+{
+TD_VERSION;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdbsrv_cv_have_td_version=yes
+else
+  gdbsrv_cv_have_td_version=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdbsrv_cv_have_td_version" >&5
+$as_echo "$gdbsrv_cv_have_td_version" >&6; }
+  if test "$gdbsrv_cv_have_td_version" = yes; then
+
+$as_echo "#define HAVE_TD_VERSION 1" >>confdefs.h
+
+  fi
+fi
+
+
+# Check whether --with-libthread-db was given.
+if test "${with_libthread_db+set}" = set; then :
+  withval=$with_libthread_db; srv_libthread_db_path="${withval}"
+  srv_libs="$srv_libthread_db_path"
+
+fi
+
+
+if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
+
+$as_echo "#define USE_LIBTHREAD_DB_DIRECTLY 1" >>confdefs.h
+
+fi
+
+if test "$srv_xmlfiles" != ""; then
+  srv_xmlbuiltin="xml-builtin.o"
+
+$as_echo "#define USE_XML 1" >>confdefs.h
+
+
+  tmp_xmlfiles=$srv_xmlfiles
+  srv_xmlfiles=""
+  for f in $tmp_xmlfiles; do
+    srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
+  done
+fi
+
+GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles"
+GDBSERVER_LIBS="$srv_libs"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports __sync_*_compare_and_swap" >&5
+$as_echo_n "checking whether the target supports __sync_*_compare_and_swap... " >&6; }
+if ${gdbsrv_cv_have_sync_builtins+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gdbsrv_cv_have_sync_builtins=yes
+else
+  gdbsrv_cv_have_sync_builtins=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: $gdbsrv_cv_have_sync_builtins" >&5
+$as_echo "$gdbsrv_cv_have_sync_builtins" >&6; }
+if test "$gdbsrv_cv_have_sync_builtins" = yes; then
+
+$as_echo "#define HAVE_SYNC_BUILTINS 1" >>confdefs.h
+
+fi
+
+saved_cflags="$CFLAGS"
+CFLAGS="$CFLAGS -fvisibility=hidden"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdbsrv_cv_have_visibility_hidden=yes
+else
+  gdbsrv_cv_have_visibility_hidden=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CFLAGS="$saved_cflags"
+
+IPA_DEPFILES=""
+extra_libraries=""
+
+# check whether to enable the inprocess agent
+if test "$ipa_obj" != "" \
+   -a "$gdbsrv_cv_have_sync_builtins" = yes \
+   -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
+   have_ipa=true
+else
+   have_ipa=false
+fi
+
+# Check whether --enable-inprocess-agent was given.
+if test "${enable_inprocess_agent+set}" = set; then :
+  enableval=$enable_inprocess_agent; case "$enableval" in
+  yes) want_ipa=true ;;
+  no) want_ipa=false ;;
+  *) as_fn_error $? "bad value $enableval for inprocess-agent" "$LINENO" 5 ;;
+esac
+else
+  want_ipa=$have_ipa
+fi
+
+
+if $want_ipa ; then
+   if $have_ipa ; then
+     IPA_DEPFILES="$ipa_obj"
+     extra_libraries="$extra_libraries libinproctrace.so"
+   else
+     as_fn_error $? "inprocess agent not supported for this target" "$LINENO" 5
+   fi
+fi
+
+
+
+
+
+
+
+
+GNULIB=../gnulib/import
+
+GNULIB_STDINT_H=
+if test x"$STDINT_H" != x; then
+  GNULIB_STDINT_H=$GNULIB/$STDINT_H
+fi
+
+
+ac_config_files="$ac_config_files Makefile"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR
+ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR CONFIG_SRC_SUBDIR="$CONFIG_SRC_SUBDIR"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
+    "depdir") CONFIG_COMMANDS="$CONFIG_COMMANDS depdir" ;;
+    "gdbdepdir") CONFIG_COMMANDS="$CONFIG_COMMANDS gdbdepdir" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "config.h":H) echo > stamp-h ;;
+    "depdir":C) $SHELL $ac_aux_dir/mkinstalldirs $DEPDIR ;;
+    "gdbdepdir":C)
+  for subdir in ${CONFIG_SRC_SUBDIR}
+  do
+      $SHELL $ac_aux_dir/mkinstalldirs $subdir/$DEPDIR
+  done ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/configure.ac ./gdbserver/configure.ac
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/configure.ac	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/configure.ac	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,421 @@
+dnl Autoconf configure script for GDB server.
+dnl Copyright (C) 2000-2021 Free Software Foundation, Inc.
+dnl
+dnl This file is part of GDB.
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+dnl Process this file with autoconf to produce a configure script.
+
+AC_INIT(server.cc)
+AC_CONFIG_HEADERS(config.h:config.in, [echo > stamp-h])
+
+AM_MAINTAINER_MODE
+
+AC_PROG_CC
+AC_PROG_CXX
+AC_GNU_SOURCE
+AC_SYS_LARGEFILE
+AM_PROG_INSTALL_STRIP
+
+AC_CANONICAL_SYSTEM
+
+AC_PROG_INSTALL
+AC_CHECK_TOOL(AR, ar)
+AC_PROG_RANLIB
+
+AC_ARG_PROGRAM
+
+# We require a C++11 compiler.  Check if one is available, and if
+# necessary, set CXX_DIALECT to some -std=xxx switch.
+AX_CXX_COMPILE_STDCXX(11, , mandatory)
+
+AC_HEADER_STDC
+
+GDB_AC_COMMON
+# This is set by GDB_AC_COMMON.
+AC_SUBST(WIN32APILIBS)
+
+GDB_AC_SELFTEST
+
+ACX_NONCANONICAL_TARGET
+ACX_NONCANONICAL_HOST
+
+# Dependency checking.
+ZW_CREATE_DEPDIR
+
+dnl Set up for gettext.
+ZW_GNU_GETTEXT_SISTER_DIR
+
+# Create sub-directories for objects and dependencies.
+CONFIG_SRC_SUBDIR="arch gdbsupport nat target"
+AC_SUBST(CONFIG_SRC_SUBDIR)
+
+AC_CONFIG_COMMANDS([gdbdepdir],[
+  for subdir in ${CONFIG_SRC_SUBDIR}
+  do
+      $SHELL $ac_aux_dir/mkinstalldirs $subdir/$DEPDIR
+  done],
+  [ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR CONFIG_SRC_SUBDIR="$CONFIG_SRC_SUBDIR"])
+
+ZW_PROG_COMPILER_DEPENDENCIES([CC])
+
+AC_CHECK_HEADERS(termios.h sys/reg.h string.h dnl
+		 sys/procfs.h linux/elf.h dnl
+		 fcntl.h signal.h sys/file.h dnl
+		 sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl
+		 netinet/tcp.h arpa/inet.h ws2tcpip.h)
+AC_FUNC_FORK
+AC_CHECK_FUNCS(pread pwrite pread64)
+
+# Check the return and argument types of ptrace.
+GDB_AC_PTRACE
+
+# Check for UST
+ustlibs=""
+ustinc=""
+
+AC_ARG_WITH(ust, [  --with-ust=PATH       Specify prefix directory for the installed UST package
+                          Equivalent to --with-ust-include=PATH/include
+                          plus --with-ust-lib=PATH/lib])
+AC_ARG_WITH(ust_include, [  --with-ust-include=PATH Specify directory for installed UST include files])
+AC_ARG_WITH(ust_lib, [  --with-ust-lib=PATH   Specify the directory for the installed UST library])
+
+case $with_ust in
+  no)
+    ustlibs=
+    ustinc=
+    ;;
+  "" | yes)
+    ustlibs=" -lust "
+    ustinc=""
+    ;;
+  *)
+    ustlibs="-L$with_ust/lib -lust"
+    ustinc="-I$with_ust/include "
+    ;;
+esac
+if test "x$with_ust_include" != x; then
+  ustinc="-I$with_ust_include "
+fi
+if test "x$with_ust_lib" != x; then
+  ustlibs="-L$with_ust_lib -lust"
+fi
+
+if test "x$with_ust" != "xno"; then
+  saved_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $ustinc"
+  AC_MSG_CHECKING([for ust])
+  AC_TRY_COMPILE([
+#define CONFIG_UST_GDB_INTEGRATION
+#include <ust/ust.h>
+  ],[],
+  [AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_UST, 1, [Define if UST is available])],
+  [AC_MSG_RESULT([no]); ustlibs= ; ustinc= ])
+  CFLAGS="$saved_CFLAGS"
+fi
+
+# Flags needed for UST
+AC_SUBST(ustlibs)
+AC_SUBST(ustinc)
+
+AM_GDB_WARNINGS
+
+dnl dladdr is glibc-specific.  It is used by thread-db.c but only for
+dnl debugging messages.  It lives in -ldl which is handled below so we don't
+dnl use AC_CHECK_LIB (or AC_SEARCH_LIBS) here.  Instead we just temporarily
+dnl augment LIBS.
+old_LIBS="$LIBS"
+LIBS="$LIBS -ldl"
+AC_CHECK_FUNCS(dladdr)
+LIBS="$old_LIBS"
+
+libiberty_INIT
+
+AC_CHECK_DECLS([perror, vasprintf, vsnprintf])
+
+AC_CHECK_TYPES(socklen_t, [], [],
+[#include <sys/types.h>
+#if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#elif HAVE_WS2TCPIP_H
+# include <ws2tcpip.h>
+#endif
+])
+
+case "${target}" in
+  *-android*)
+    # Starting with NDK version 9, <elf.h> actually includes definitions
+    # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
+    # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
+    # leading to conflicts with the defintions from <linux/elf.h>.
+    # This makes it impossible for us to include both <elf.h> and
+    # <linux/elf.h>, which means that, in practice, we do not have
+    # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
+    # Therefore, do not try to auto-detect availability, as it would
+    # get it wrong on this platform.
+    ;;
+  *)
+    AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
+    #include <elf.h>
+    )
+esac
+
+ACX_PKGVERSION([GDB])
+ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])
+AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
+AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
+
+# Check for various supplementary target information (beyond the
+# triplet) which might affect the choices in configure.srv.
+case "${target}" in
+changequote(,)dnl
+  i[34567]86-*-linux*)
+changequote([,])dnl
+    AC_CACHE_CHECK([if building for x86-64], [gdb_cv_i386_is_x86_64],
+      	           [save_CPPFLAGS="$CPPFLAGS"
+                    CPPFLAGS="$CPPFLAGS $CFLAGS"
+                    AC_EGREP_CPP([got it], [
+#if __x86_64__
+got it
+#endif
+                 ], [gdb_cv_i386_is_x86_64=yes],
+                    [gdb_cv_i386_is_x86_64=no])
+                    CPPFLAGS="$save_CPPFLAGS"])
+    ;;
+
+  x86_64-*-linux*)
+    AC_CACHE_CHECK([if building for x32], [gdb_cv_x86_is_x32],
+		   [save_CPPFLAGS="$CPPFLAGS"
+		    CPPFLAGS="$CPPFLAGS $CFLAGS"
+		    AC_EGREP_CPP([got it], [
+#if __x86_64__ && __ILP32__
+got it
+#endif
+		 ], [gdb_cv_x86_is_x32=yes],
+		    [gdb_cv_x86_is_x32=no])
+		    CPPFLAGS="$save_CPPFLAGS"])
+    ;;
+
+  m68k-*-*)
+    AC_CACHE_CHECK([if building for Coldfire], [gdb_cv_m68k_is_coldfire],
+      	           [save_CPPFLAGS="$CPPFLAGS"
+                    CPPFLAGS="$CPPFLAGS $CFLAGS"
+                    AC_EGREP_CPP([got it], [
+#ifdef __mcoldfire__
+got it
+#endif
+                 ], [gdb_cv_m68k_is_coldfire=yes],
+                    [gdb_cv_m68k_is_coldfire=no])
+                    CPPFLAGS="$save_CPPFLAGS"])
+    ;;
+esac
+
+. ${srcdir}/configure.srv
+
+if test "${srv_mingwce}" = "yes"; then
+  LIBS="$LIBS -lws2"
+elif test "${srv_mingw}" = "yes"; then
+  # WIN32APILIBS is set by GDB_AC_COMMON.
+  LIBS="$LIBS $WIN32APILIBS"
+fi
+
+if test "${srv_linux_usrregs}" = "yes"; then
+  AC_DEFINE(HAVE_LINUX_USRREGS, 1,
+	    [Define if the target supports PTRACE_PEEKUSR for register ]
+	    [access.])
+fi
+
+if test "${srv_linux_regsets}" = "yes"; then
+  AC_DEFINE(HAVE_LINUX_REGSETS, 1,
+	    [Define if the target supports register sets.])
+
+  AC_MSG_CHECKING(for PTRACE_GETREGS)
+  AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getregs,
+  [AC_TRY_COMPILE([#include <sys/ptrace.h>],
+		  [PTRACE_GETREGS;],
+		  [gdbsrv_cv_have_ptrace_getregs=yes],
+		  [gdbsrv_cv_have_ptrace_getregs=no])])
+  AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getregs)
+  if test "${gdbsrv_cv_have_ptrace_getregs}" = "yes"; then
+    AC_DEFINE(HAVE_PTRACE_GETREGS, 1,
+	      [Define if the target supports PTRACE_GETREGS for register ]
+	      [access.])
+  fi
+
+  AC_MSG_CHECKING(for PTRACE_GETFPXREGS)
+  AC_CACHE_VAL(gdbsrv_cv_have_ptrace_getfpxregs,
+  [AC_TRY_COMPILE([#include <sys/ptrace.h>],
+		  [PTRACE_GETFPXREGS;],
+		  [gdbsrv_cv_have_ptrace_getfpxregs=yes],
+		  [gdbsrv_cv_have_ptrace_getfpxregs=no])])
+  AC_MSG_RESULT($gdbsrv_cv_have_ptrace_getfpxregs)
+  if test "${gdbsrv_cv_have_ptrace_getfpxregs}" = "yes"; then
+    AC_DEFINE(HAVE_PTRACE_GETFPXREGS, 1,
+	      [Define if the target supports PTRACE_GETFPXREGS for extended ]
+	      [register access.])
+  fi
+fi
+
+if test "${srv_linux_btrace}" = "yes"; then
+  AC_DEFINE(HAVE_LINUX_BTRACE, 1,
+	    [Define if the target supports branch tracing.])
+fi
+
+dnl Some systems (e.g., Android) have lwpid_t defined in libthread_db.h.
+if test "$bfd_cv_have_sys_procfs_type_lwpid_t" != yes; then
+  GDBSERVER_HAVE_THREAD_DB_TYPE(lwpid_t)
+fi
+
+dnl Some systems (e.g., Android) have psaddr_t defined in libthread_db.h.
+if test "$bfd_cv_have_sys_procfs_type_psaddr_t" != yes; then
+  GDBSERVER_HAVE_THREAD_DB_TYPE(psaddr_t)
+fi
+
+dnl Check for libdl, but do not add it to LIBS as only gdbserver
+dnl needs it (and gdbreplay doesn't).
+old_LIBS="$LIBS"
+AC_CHECK_LIB(dl, dlopen)
+LIBS="$old_LIBS"
+
+srv_thread_depfiles=
+srv_libs=
+
+if test "$srv_linux_thread_db" = "yes"; then
+  if test "$ac_cv_lib_dl_dlopen" = "yes"; then
+    srv_libs="-ldl"
+    AC_MSG_CHECKING(for the dynamic export flag)
+    old_LDFLAGS="$LDFLAGS"
+    # Older GNU ld supports --export-dynamic but --dynamic-list may not be
+    # supported there.
+    RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
+    LDFLAGS="$LDFLAGS $RDYNAMIC"
+    AC_TRY_LINK([], [],
+		[found="-Wl,--dynamic-list"
+		 RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'],
+		[RDYNAMIC="-rdynamic"
+		 LDFLAGS="$old_LDFLAGS $RDYNAMIC"
+		 AC_TRY_LINK([], [],
+			     [found="-rdynamic"],
+			     [found="no"
+			      RDYNAMIC=""])])
+    AC_SUBST(RDYNAMIC)
+    LDFLAGS="$old_LDFLAGS"
+    AC_MSG_RESULT($found)
+  else
+    srv_libs="-lthread_db"
+  fi
+
+  srv_thread_depfiles="thread-db.o proc-service.o"
+  AC_DEFINE(USE_THREAD_DB, 1, [Define if we should use libthread_db.])
+  AC_CACHE_CHECK([for TD_VERSION], gdbsrv_cv_have_td_version,
+  [AC_TRY_COMPILE([#include <thread_db.h>], [TD_VERSION;],
+		  [gdbsrv_cv_have_td_version=yes],
+		  [gdbsrv_cv_have_td_version=no])])
+  if test "$gdbsrv_cv_have_td_version" = yes; then
+    AC_DEFINE(HAVE_TD_VERSION, 1, [Define if TD_VERSION is available.])
+  fi
+fi
+
+AC_ARG_WITH(libthread-db,
+AS_HELP_STRING([--with-libthread-db=PATH], [use given libthread_db directly]),
+[srv_libthread_db_path="${withval}"
+  srv_libs="$srv_libthread_db_path"
+])
+
+if test "$srv_libs" != "" -a "$srv_libs" != "-ldl"; then
+  AC_DEFINE(USE_LIBTHREAD_DB_DIRECTLY, 1, [Define if we should use libthread_db directly.])
+fi
+
+if test "$srv_xmlfiles" != ""; then
+  srv_xmlbuiltin="xml-builtin.o"
+  AC_DEFINE(USE_XML, 1, [Define if an XML target description is available.])
+
+  tmp_xmlfiles=$srv_xmlfiles
+  srv_xmlfiles=""
+  for f in $tmp_xmlfiles; do
+    srv_xmlfiles="$srv_xmlfiles \$(XML_DIR)/$f"
+  done
+fi
+
+GDBSERVER_DEPFILES="$srv_regobj $srv_tgtobj $srv_hostio_err_objs $srv_thread_depfiles"
+GDBSERVER_LIBS="$srv_libs"
+
+dnl Check whether the target supports __sync_*_compare_and_swap.
+AC_CACHE_CHECK([whether the target supports __sync_*_compare_and_swap],
+		gdbsrv_cv_have_sync_builtins, [
+AC_TRY_LINK([], [int foo, bar; bar = __sync_val_compare_and_swap(&foo, 0, 1);],
+		gdbsrv_cv_have_sync_builtins=yes,
+		gdbsrv_cv_have_sync_builtins=no)])
+if test "$gdbsrv_cv_have_sync_builtins" = yes; then
+  AC_DEFINE(HAVE_SYNC_BUILTINS, 1,
+    [Define to 1 if the target supports __sync_*_compare_and_swap])
+fi
+
+dnl Check for -fvisibility=hidden support in the compiler.
+saved_cflags="$CFLAGS"
+CFLAGS="$CFLAGS -fvisibility=hidden"
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
+		        [gdbsrv_cv_have_visibility_hidden=yes],
+	        	[gdbsrv_cv_have_visibility_hidden=no])
+CFLAGS="$saved_cflags"
+
+IPA_DEPFILES=""
+extra_libraries=""
+
+# check whether to enable the inprocess agent
+if test "$ipa_obj" != "" \
+   -a "$gdbsrv_cv_have_sync_builtins" = yes \
+   -a "$gdbsrv_cv_have_visibility_hidden" = yes; then
+   have_ipa=true
+else
+   have_ipa=false
+fi
+
+AC_ARG_ENABLE(inprocess-agent,
+AS_HELP_STRING([--enable-inprocess-agent], [inprocess agent]),
+[case "$enableval" in
+  yes) want_ipa=true ;;
+  no) want_ipa=false ;;
+  *) AC_MSG_ERROR([bad value $enableval for inprocess-agent]) ;;
+esac],
+[want_ipa=$have_ipa])
+
+if $want_ipa ; then
+   if $have_ipa ; then
+     IPA_DEPFILES="$ipa_obj"
+     extra_libraries="$extra_libraries libinproctrace.so"
+   else
+     AC_MSG_ERROR([inprocess agent not supported for this target])
+   fi
+fi
+
+AC_SUBST(GDBSERVER_DEPFILES)
+AC_SUBST(GDBSERVER_LIBS)
+AC_SUBST(srv_xmlbuiltin)
+AC_SUBST(srv_xmlfiles)
+AC_SUBST(IPA_DEPFILES)
+AC_SUBST(extra_libraries)
+
+GNULIB=../gnulib/import
+
+GNULIB_STDINT_H=
+if test x"$STDINT_H" != x; then
+  GNULIB_STDINT_H=$GNULIB/$STDINT_H
+fi
+AC_SUBST(GNULIB_STDINT_H)
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/configure.srv ./gdbserver/configure.srv
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/configure.srv	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/configure.srv	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,379 @@
+# Mappings from configuration triplets to gdbserver build options.
+# This is invoked from the autoconf-generated configure script, to
+# produce the appropriate Makefile substitutions.
+# It is also sourced by the top level configure script, to determine
+# whether gdbserver is supported on a given host.
+
+# This file sets the following shell variables:
+#   srv_regobj		The register protocol appropriate for this target.
+#   srv_tgtobj		Any other target-specific modules appropriate
+#			for this target.
+#   srv_hostio_err	The object implementing the hostio_last_error
+#			target method.
+#   srv_xmlfiles	All XML files which should be available for
+#			gdbserver in this configuration.
+#   ipa_obj		Any other target-specific modules appropriate
+#			for this target's in-process agent.
+#   UNSUPPORTED         Set to 1 if the host is unsupported.
+#
+# In addition, on GNU/Linux the following shell variables will be set:
+#   srv_linux_regsets	Set to "yes" if ptrace(PTRACE_GETREGS) and friends
+#			may be available on this platform;  unset otherwise.
+#			They will only be used if <sys/ptrace.h> defines
+#			PTRACE_GETREGS.
+#   srv_linux_usrregs	Set to "yes" if we can get at registers via
+#			PTRACE_PEEKUSR / PTRACE_POKEUSR.
+
+# Default hostio_last_error implementation
+srv_hostio_err_objs="hostio-errno.o"
+
+ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-isa205-ppr-dscr-vsx32l-ipa.o powerpc-isa207-vsx32l-ipa.o powerpc-isa207-htm-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o powerpc-isa205-ppr-dscr-vsx64l-ipa.o powerpc-isa207-vsx64l-ipa.o powerpc-isa207-htm-vsx64l-ipa.o"
+
+# Linux object files.  This is so we don't have to repeat
+# these files over and over again.
+srv_linux_obj="linux-low.o nat/linux-osdata.o nat/linux-procfs.o nat/linux-ptrace.o nat/linux-waitpid.o nat/linux-personality.o nat/linux-namespaces.o fork-child.o nat/fork-inferior.o"
+
+# Input is taken from the "${host}" and "${target}" variables.
+
+# GDBserver can only debug native programs.
+if test "${target}" = "${host}"; then
+    gdbserver_host=${host}
+else
+    gdbserver_host=
+fi
+
+case "${gdbserver_host}" in
+  aarch64*-*-linux*)	srv_tgtobj="linux-aarch64-low.o"
+			srv_tgtobj="$srv_tgtobj nat/aarch64-linux-hw-point.o"
+			srv_tgtobj="$srv_tgtobj linux-aarch32-low.o"
+			srv_tgtobj="$srv_tgtobj linux-aarch32-tdesc.o"
+			srv_tgtobj="${srv_tgtobj} arch/aarch32.o"
+			srv_tgtobj="${srv_tgtobj} arch/arm.o"
+			srv_tgtobj="$srv_tgtobj nat/aarch64-linux.o"
+			srv_tgtobj="$srv_tgtobj arch/aarch64-insn.o"
+			srv_tgtobj="$srv_tgtobj arch/aarch64.o"
+			srv_tgtobj="$srv_tgtobj linux-aarch64-tdesc.o"
+			srv_tgtobj="$srv_tgtobj nat/aarch64-sve-linux-ptrace.o"
+			srv_tgtobj="${srv_tgtobj} $srv_linux_obj"
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			ipa_obj="linux-aarch64-ipa.o"
+			ipa_obj="${ipa_obj} linux-aarch64-tdesc-ipa.o"
+			ipa_obj="${ipa_obj} arch/aarch64-ipa.o"
+			;;
+  arc*-*-linux*)
+			srv_regobj=""
+			srv_tgtobj="linux-arc-low.o arch/arc.o $srv_linux_obj"
+			srv_xmlfiles="arc/v1-core.xml"
+			srv_xmlfiles="${srv_xmlfiles} arc/v1-aux.xml"
+			srv_xmlfiles="${srv_xmlfiles} arc/v2-core.xml"
+			srv_xmlfiles="${srv_xmlfiles} arc/v2-aux.xml"
+			srv_linux_regsets=yes
+			srv_linux_usrregs=yes
+			srv_linux_thread_db=yes
+			;;
+  arm*-*-linux*)	srv_tgtobj="$srv_linux_obj linux-arm-low.o"
+			srv_tgtobj="$srv_tgtobj linux-arm-tdesc.o"
+			srv_tgtobj="$srv_tgtobj linux-aarch32-low.o"
+			srv_tgtobj="$srv_tgtobj linux-aarch32-tdesc.o"
+			srv_tgtobj="${srv_tgtobj} arch/aarch32.o"
+			srv_tgtobj="${srv_tgtobj} arch/arm.o"
+			srv_tgtobj="${srv_tgtobj} arch/arm-linux.o"
+			srv_tgtobj="${srv_tgtobj} arch/arm-get-next-pcs.o"
+			srv_linux_usrregs=yes
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			;;
+  i[34567]86-*-cygwin*)	srv_regobj=""
+			srv_tgtobj="x86-low.o nat/x86-dregs.o win32-low.o"
+			srv_tgtobj="${srv_tgtobj} win32-i386-low.o"
+			srv_tgtobj="${srv_tgtobj} nat/windows-nat.o"
+			srv_tgtobj="${srv_tgtobj} arch/i386.o"
+			;;
+  i[34567]86-*-linux*)	srv_tgtobj="${srv_tgtobj} arch/i386.o"
+			srv_tgtobj="${srv_tgtobj} $srv_linux_obj"
+			srv_tgtobj="${srv_tgtobj} linux-x86-low.o x86-low.o"
+			srv_tgtobj="${srv_tgtobj} nat/x86-dregs.o i387-fp.o"
+			srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
+			srv_tgtobj="${srv_tgtobj} nat/linux-btrace.o"
+			srv_tgtobj="${srv_tgtobj} nat/x86-linux.o"
+			srv_tgtobj="${srv_tgtobj} nat/x86-linux-dregs.o"
+			srv_linux_usrregs=yes
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			srv_linux_btrace=yes
+			ipa_obj="linux-i386-ipa.o linux-x86-tdesc-ipa.o"
+			ipa_obj="${ipa_obj} arch/i386-ipa.o"
+			;;
+  i[34567]86-*-mingw*)	srv_regobj=""
+			srv_tgtobj="x86-low.o nat/x86-dregs.o win32-low.o"
+			srv_tgtobj="${srv_tgtobj} win32-i386-low.o"
+			srv_tgtobj="${srv_tgtobj} nat/windows-nat.o"
+			srv_tgtobj="${srv_tgtobj} arch/i386.o"
+			srv_mingw=yes
+			;;
+  ia64-*-linux*)	srv_regobj=reg-ia64.o
+			srv_tgtobj="$srv_linux_obj linux-ia64-low.o"
+			srv_linux_usrregs=yes
+			;;
+  m68*-*-linux*)	if test "$gdb_cv_m68k_is_coldfire" = yes; then
+                          srv_regobj=reg-cf.o
+                        else
+                          srv_regobj=reg-m68k.o
+                        fi
+			srv_tgtobj="$srv_linux_obj linux-m68k-low.o"
+			srv_linux_usrregs=yes
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			;;
+  m68*-*-uclinux*)	if test "$gdb_cv_m68k_is_coldfire" = yes; then
+                          srv_regobj=reg-cf.o
+                        else
+                          srv_regobj=reg-m68k.o
+                        fi
+			srv_tgtobj="$srv_linux_obj linux-m68k-low.o"
+			srv_linux_usrregs=yes
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			;;
+  mips*-*-linux*)	srv_regobj="mips-linux.o"
+			srv_regobj="${srv_regobj} mips-dsp-linux.o"
+			srv_regobj="${srv_regobj} mips64-linux.o"
+			srv_regobj="${srv_regobj} mips64-dsp-linux.o"
+			srv_tgtobj="$srv_linux_obj linux-mips-low.o"
+			srv_tgtobj="${srv_tgtobj} nat/mips-linux-watch.o"
+			srv_xmlfiles="mips-linux.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips-dsp-linux.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips-cpu.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips-cp0.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips-fpu.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips-dsp.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips64-linux.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips64-dsp-linux.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips64-cpu.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips64-cp0.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips64-fpu.xml"
+			srv_xmlfiles="${srv_xmlfiles} mips64-dsp.xml"
+			srv_linux_regsets=yes
+			srv_linux_usrregs=yes
+			srv_linux_thread_db=yes
+			;;
+  nios2*-*-linux*)	srv_regobj="nios2-linux.o"
+			srv_tgtobj="$srv_linux_obj linux-nios2-low.o"
+			srv_xmlfiles="nios2-linux.xml"
+			srv_xmlfiles="${srv_xmlfiles} nios2-cpu.xml"
+			srv_linux_regsets=yes
+			srv_linux_usrregs=yes
+			srv_linux_thread_db=yes
+			;;
+  powerpc*-*-linux*)	srv_regobj="powerpc-32l.o"
+			srv_regobj="${srv_regobj} powerpc-altivec32l.o"
+			srv_regobj="${srv_regobj} powerpc-vsx32l.o"
+			srv_regobj="${srv_regobj} powerpc-isa205-32l.o"
+			srv_regobj="${srv_regobj} powerpc-isa205-altivec32l.o"
+			srv_regobj="${srv_regobj} powerpc-isa205-vsx32l.o"
+			srv_regobj="${srv_regobj} powerpc-isa205-ppr-dscr-vsx32l.o"
+			srv_regobj="${srv_regobj} powerpc-isa207-vsx32l.o"
+			srv_regobj="${srv_regobj} powerpc-isa207-htm-vsx32l.o"
+			srv_regobj="${srv_regobj} powerpc-e500l.o"
+			srv_regobj="${srv_regobj} powerpc-64l.o"
+			srv_regobj="${srv_regobj} powerpc-altivec64l.o"
+			srv_regobj="${srv_regobj} powerpc-vsx64l.o"
+			srv_regobj="${srv_regobj} powerpc-isa205-64l.o"
+			srv_regobj="${srv_regobj} powerpc-isa205-altivec64l.o"
+			srv_regobj="${srv_regobj} powerpc-isa205-vsx64l.o"
+			srv_regobj="${srv_regobj} powerpc-isa205-ppr-dscr-vsx64l.o"
+			srv_regobj="${srv_regobj} powerpc-isa207-vsx64l.o"
+			srv_regobj="${srv_regobj} powerpc-isa207-htm-vsx64l.o"
+			srv_tgtobj="$srv_linux_obj linux-ppc-low.o"
+			srv_tgtobj="${srv_tgtobj} nat/ppc-linux.o"
+			srv_tgtobj="${srv_tgtobj} arch/ppc-linux-common.o"
+			srv_xmlfiles="rs6000/powerpc-32l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec32l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx32l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-32l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec32l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx32l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-vsx32l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-htm-vsx32l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-altivec.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-vsx.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu-isa205.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-dscr.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-ppr.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-tar.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-ebb.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux-pmu.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-spr.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-core.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-fpu.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-altivec.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-vsx.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-ppr.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-dscr.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-tar.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec64l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx64l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-64l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec64l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx64l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-vsx64l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-htm-vsx64l.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-core.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-linux.xml"
+			srv_xmlfiles="${srv_xmlfiles} rs6000/power64-htm-core.xml"
+			srv_linux_usrregs=yes
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			ipa_obj="${ipa_ppc_linux_regobj} linux-ppc-ipa.o"
+			;;
+  riscv*-*-linux*)	srv_tgtobj="arch/riscv.o nat/riscv-linux-tdesc.o"
+			srv_tgtobj="${srv_tgtobj} linux-riscv-low.o"
+			srv_tgtobj="${srv_tgtobj} ${srv_linux_obj}"
+			srv_linux_regsets=yes
+			srv_linux_usrregs=yes
+			srv_linux_thread_db=yes
+			;;
+  s390*-*-linux*)	srv_regobj="s390-linux32.o"
+			srv_regobj="${srv_regobj} s390-linux32v1.o"
+			srv_regobj="${srv_regobj} s390-linux32v2.o"
+			srv_regobj="${srv_regobj} s390-linux64.o"
+			srv_regobj="${srv_regobj} s390-linux64v1.o"
+			srv_regobj="${srv_regobj} s390-linux64v2.o"
+			srv_regobj="${srv_regobj} s390-te-linux64.o"
+			srv_regobj="${srv_regobj} s390-vx-linux64.o"
+			srv_regobj="${srv_regobj} s390-tevx-linux64.o"
+			srv_regobj="${srv_regobj} s390-gs-linux64.o"
+			srv_regobj="${srv_regobj} s390x-linux64.o"
+			srv_regobj="${srv_regobj} s390x-linux64v1.o"
+			srv_regobj="${srv_regobj} s390x-linux64v2.o"
+			srv_regobj="${srv_regobj} s390x-te-linux64.o"
+			srv_regobj="${srv_regobj} s390x-vx-linux64.o"
+			srv_regobj="${srv_regobj} s390x-tevx-linux64.o"
+			srv_regobj="${srv_regobj} s390x-gs-linux64.o"
+			srv_tgtobj="$srv_linux_obj linux-s390-low.o"
+			srv_xmlfiles="s390-linux32.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-linux32v1.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-linux32v2.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-linux64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-linux64v1.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-linux64v2.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-te-linux64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-vx-linux64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-tevx-linux64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-gs-linux64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390x-linux64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390x-linux64v1.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390x-linux64v2.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390x-te-linux64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390x-vx-linux64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390x-tevx-linux64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390x-gs-linux64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-core32.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-core64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390x-core64.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-acr.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-fpr.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-tdb.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-vx.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-gs.xml"
+			srv_xmlfiles="${srv_xmlfiles} s390-gsbc.xml"
+			srv_linux_usrregs=yes
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			ipa_obj="linux-s390-ipa.o"
+			ipa_obj="${ipa_obj} s390-linux32-ipa.o"
+			ipa_obj="${ipa_obj} s390-linux32v1-ipa.o"
+			ipa_obj="${ipa_obj} s390-linux32v2-ipa.o"
+			ipa_obj="${ipa_obj} s390-linux64-ipa.o"
+			ipa_obj="${ipa_obj} s390-linux64v1-ipa.o"
+			ipa_obj="${ipa_obj} s390-linux64v2-ipa.o"
+			ipa_obj="${ipa_obj} s390-vx-linux64-ipa.o"
+			ipa_obj="${ipa_obj} s390-te-linux64-ipa.o"
+			ipa_obj="${ipa_obj} s390-tevx-linux64-ipa.o"
+			ipa_obj="${ipa_obj} s390-gs-linux64-ipa.o"
+			ipa_obj="${ipa_obj} s390x-linux64-ipa.o"
+			ipa_obj="${ipa_obj} s390x-linux64v1-ipa.o"
+			ipa_obj="${ipa_obj} s390x-linux64v2-ipa.o"
+			ipa_obj="${ipa_obj} s390x-vx-linux64-ipa.o"
+			ipa_obj="${ipa_obj} s390x-te-linux64-ipa.o"
+			ipa_obj="${ipa_obj} s390x-tevx-linux64-ipa.o"
+			ipa_obj="${ipa_obj} s390x-gs-linux64-ipa.o"
+			;;
+  sh*-*-linux*)		srv_regobj=reg-sh.o
+			srv_tgtobj="$srv_linux_obj linux-sh-low.o"
+			srv_linux_usrregs=yes
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			;;
+  sparc*-*-linux*)	srv_regobj=reg-sparc64.o
+			srv_tgtobj="$srv_linux_obj linux-sparc-low.o"
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			;;
+  tic6x-*-uclinux)	if $development; then
+			  srv_regobj="tic6x-c64xp-linux.o"
+			  srv_regobj="${srv_regobj} tic6x-c64x-linux.o"
+			  srv_regobj="${srv_regobj} tic6x-c62x-linux.o"
+                        else
+			  srv_regobj=""
+                        fi
+			srv_tgtobj="$srv_linux_obj linux-tic6x-low.o"
+			srv_tgtobj="${srv_tgtobj} arch/tic6x.o"
+			srv_linux_regsets=yes
+			srv_linux_usrregs=yes
+			srv_linux_thread_db=yes
+			;;
+  x86_64-*-linux*)	srv_tgtobj="$srv_linux_obj linux-x86-low.o x86-low.o"
+			srv_tgtobj="${srv_tgtobj} nat/x86-dregs.o i387-fp.o"
+			srv_tgtobj="${srv_tgtobj} arch/i386.o arch/amd64.o"
+			srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
+			srv_tgtobj="${srv_tgtobj} nat/linux-btrace.o"
+			srv_tgtobj="${srv_tgtobj} nat/x86-linux.o"
+			srv_tgtobj="${srv_tgtobj} nat/x86-linux-dregs.o"
+			srv_tgtobj="${srv_tgtobj} nat/amd64-linux-siginfo.o"
+			srv_linux_usrregs=yes # This is for i386 progs.
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			srv_linux_btrace=yes
+			ipa_obj="linux-amd64-ipa.o linux-x86-tdesc-ipa.o"
+			ipa_obj="${ipa_obj} arch/amd64-ipa.o"
+			;;
+  x86_64-*-mingw*)	srv_regobj=""
+			srv_tgtobj="x86-low.o nat/x86-dregs.o i387-fp.o"
+			srv_tgtobj="${srv_tgtobj} win32-low.o win32-i386-low.o"
+			srv_tgtobj="${srv_tgtobj} nat/windows-nat.o"
+			srv_tgtobj="${srv_tgtobj} arch/amd64.o arch/i386.o"
+			srv_mingw=yes
+			;;
+  x86_64-*-cygwin*)	srv_regobj=""
+			srv_tgtobj="x86-low.o nat/x86-dregs.o i387-fp.o"
+			srv_tgtobj="${srv_tgtobj} win32-low.o win32-i386-low.o"
+			srv_tgtobj="${srv_tgtobj} nat/windows-nat.o"
+			srv_tgtobj="${srv_tgtobj} arch/amd64.o arch/i386.o"
+			;;
+  x86_64-*-netbsd*)	srv_regobj=""
+			srv_tgtobj="netbsd-low.o netbsd-amd64-low.o fork-child.o"
+			srv_tgtobj="${srv_tgtobj} nat/fork-inferior.o"
+			srv_tgtobj="${srv_tgtobj} nat/netbsd-nat.o"
+			srv_tgtobj="${srv_tgtobj} arch/amd64.o"
+			;;
+
+  xtensa*-*-linux*)	srv_regobj=reg-xtensa.o
+			srv_tgtobj="$srv_linux_obj linux-xtensa-low.o"
+			srv_linux_regsets=yes
+			srv_linux_thread_db=yes
+			;;
+  *)
+			# Who are you?
+			UNSUPPORTED=1
+			;;
+esac
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/debug.cc ./gdbserver/debug.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/debug.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/debug.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,140 @@
+/* Debugging routines for the remote server for GDB.
+   Copyright (C) 2014-2021 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 "server.h"
+#include <chrono>
+
+#if !defined (IN_PROCESS_AGENT)
+int remote_debug = 0;
+#endif
+
+/* Output file for debugging.  Default to standard error.  */
+FILE *debug_file = stderr;
+
+/* See debug.h.  */
+int debug_threads;
+
+/* Include timestamps in debugging output.  */
+int debug_timestamp;
+
+#if !defined (IN_PROCESS_AGENT)
+
+/* See debug.h.  */
+
+void
+debug_set_output (const char *new_debug_file)
+{
+  /* Close any existing file and reset to standard error.  */
+  if (debug_file != stderr)
+    {
+      fclose (debug_file);
+    }
+  debug_file = stderr;
+
+  /* Catch empty filenames.  */
+  if (new_debug_file == nullptr || strlen (new_debug_file) == 0)
+    return;
+
+  FILE *fptr = fopen (new_debug_file, "w");
+
+  if (fptr == nullptr)
+    {
+      debug_printf ("Cannot open %s for writing. %s. Switching to stderr.\n",
+		    new_debug_file, safe_strerror (errno));
+      return;
+    }
+
+  debug_file = fptr;
+}
+
+#endif
+
+/* Print a debugging message.
+   If the text begins a new line it is preceded by a timestamp.
+   We don't get fancy with newline checking, we just check whether the
+   previous call ended with "\n".  */
+
+void
+debug_vprintf (const char *format, va_list ap)
+{
+#if !defined (IN_PROCESS_AGENT)
+  /* N.B. Not thread safe, and can't be used, as is, with IPA.  */
+  static int new_line = 1;
+
+  if (debug_timestamp && new_line)
+    {
+      using namespace std::chrono;
+
+      steady_clock::time_point now = steady_clock::now ();
+      seconds s = duration_cast<seconds> (now.time_since_epoch ());
+      microseconds us = duration_cast<microseconds> (now.time_since_epoch ()) - s;
+
+      fprintf (debug_file, "%ld.%06ld ", (long) s.count (), (long) us.count ());
+    }
+#endif
+
+  vfprintf (debug_file, format, ap);
+
+#if !defined (IN_PROCESS_AGENT)
+  if (*format)
+    new_line = format[strlen (format) - 1] == '\n';
+#endif
+}
+
+/* Flush debugging output.
+   This is called, for example, when starting an inferior to ensure all debug
+   output thus far appears before any inferior output.  */
+
+void
+debug_flush (void)
+{
+  fflush (debug_file);
+}
+
+/* Notify the user that the code is entering FUNCTION_NAME.
+   FUNCTION_NAME is the name of the calling function, or NULL if unknown.
+
+   This is intended to be called via the debug_enter macro.  */
+
+void
+do_debug_enter (const char *function_name)
+{
+  if (function_name != NULL)
+    debug_printf (">>>> entering %s\n", function_name);
+}
+
+/* Notify the user that the code is exiting FUNCTION_NAME.
+   FUNCTION_NAME is the name of the calling function, or NULL if unknown.
+
+   This is intended to be called via the debug_exit macro.  */
+
+void
+do_debug_exit (const char *function_name)
+{
+  if (function_name != NULL)
+    debug_printf ("<<<< exiting %s\n", function_name);
+}
+
+/* See debug.h.  */
+
+ssize_t
+debug_write (const void *buf, size_t nbyte)
+{
+  int fd = fileno (debug_file);
+  return write (fd, buf, nbyte);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/debug.h ./gdbserver/debug.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/debug.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/debug.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,65 @@
+/* Debugging routines for the remote server for GDB.
+   Copyright (C) 2014-2021 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 GDBSERVER_DEBUG_H
+#define GDBSERVER_DEBUG_H
+
+#if !defined (IN_PROCESS_AGENT)
+extern int remote_debug;
+
+/* Switch all debug output to DEBUG_FILE.  If DEBUG_FILE is nullptr or an
+   empty string, or if the file cannot be opened, then debug output is sent to
+   stderr.  */
+void debug_set_output (const char *debug_file);
+#endif
+
+extern int using_threads;
+
+/* Enable miscellaneous debugging output.  The name is historical - it
+   was originally used to debug LinuxThreads support.  */
+
+extern int debug_threads;
+
+extern int debug_timestamp;
+
+void debug_flush (void);
+void do_debug_enter (const char *function_name);
+void do_debug_exit (const char *function_name);
+
+/* Async signal safe debug output function that calls write directly.  */
+ssize_t debug_write (const void *buf, size_t nbyte);
+
+/* These macros are for use in major functions that produce a lot of
+   debugging output.  They help identify in the mass of debugging output
+   when these functions enter and exit.  debug_enter is intended to be
+   called at the start of a function, before any other debugging output.
+   debug_exit is intended to be called at the end of the same function,
+   after all debugging output.  */
+#ifdef FUNCTION_NAME
+#define debug_enter() \
+  do { do_debug_enter (FUNCTION_NAME); } while (0)
+#define debug_exit() \
+  do { do_debug_exit (FUNCTION_NAME); } while (0)
+#else
+#define debug_enter() \
+  do { } while (0)
+#define debug_exit() \
+  do { } while (0)
+#endif
+
+#endif /* GDBSERVER_DEBUG_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/.dir-locals.el ./gdbserver/.dir-locals.el
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/.dir-locals.el	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/.dir-locals.el	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,41 @@
+;; Emacs settings.
+;; Copyright (C) 2012-2021 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/>.
+
+;; There are three copies of this file, one in each of gdb/,
+;; gdbserver/, and gdbsupport/.  If you edit any one of these then
+;; please replicate the changes in the other two copies.
+
+(
+ (tcl-mode . ((tcl-indent-level . 4)
+	      (tcl-continued-indent-level . 4)
+	      (indent-tabs-mode . t)))
+ (nil . ((bug-reference-url-format . "http://sourceware.org/bugzilla/show_bug.cgi?id=%s")))
+ (c-mode . ((c-file-style . "GNU")
+	    (mode . c++)
+	    (indent-tabs-mode . t)
+	    (tab-width . 8)
+	    (c-basic-offset . 2)
+	    (eval . (c-set-offset 'innamespace 0))
+	    ))
+ (c++-mode . ((eval . (when (fboundp 'c-toggle-comment-style)
+			(c-toggle-comment-style 1)))
+	      (indent-tabs-mode . t)
+	      (tab-width . 8)
+	      (c-file-style . "GNU")
+	      (c-basic-offset . 2)
+	      (eval . (c-set-offset 'innamespace 0))
+	      ))
+)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/dll.cc ./gdbserver/dll.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/dll.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/dll.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,80 @@
+/* Copyright (C) 2002-2021 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 "server.h"
+#include "dll.h"
+
+#include <algorithm>
+
+/* An "unspecified" CORE_ADDR, for match_dll.  */
+#define UNSPECIFIED_CORE_ADDR (~(CORE_ADDR) 0)
+
+std::list<dll_info> all_dlls;
+int dlls_changed;
+
+/* Record a newly loaded DLL at BASE_ADDR.  */
+
+void
+loaded_dll (const char *name, CORE_ADDR base_addr)
+{
+  all_dlls.emplace_back (name != NULL ? name : "", base_addr);
+  dlls_changed = 1;
+}
+
+/* Record that the DLL with NAME and BASE_ADDR has been unloaded.  */
+
+void
+unloaded_dll (const char *name, CORE_ADDR base_addr)
+{
+  auto pred = [&] (const dll_info &dll)
+    {
+      if (base_addr != UNSPECIFIED_CORE_ADDR
+	  && base_addr == dll.base_addr)
+	return true;
+
+      if (name != NULL && dll.name == name)
+	return true;
+
+      return false;
+    };
+
+  auto iter = std::find_if (all_dlls.begin (), all_dlls.end (), pred);
+
+  if (iter == all_dlls.end ())
+    /* For some inferiors we might get unloaded_dll events without having
+       a corresponding loaded_dll.  In that case, the dll cannot be found
+       in ALL_DLL, and there is nothing further for us to do.
+
+       This has been observed when running 32bit executables on Windows64
+       (i.e. through WOW64, the interface between the 32bits and 64bits
+       worlds).  In that case, the inferior always does some strange
+       unloading of unnamed dll.  */
+    return;
+  else
+    {
+      /* DLL has been found so remove the entry and free associated
+         resources.  */
+      all_dlls.erase (iter);
+      dlls_changed = 1;
+    }
+}
+
+void
+clear_dlls (void)
+{
+  all_dlls.clear ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/dll.h ./gdbserver/dll.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/dll.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/dll.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,40 @@
+/* Copyright (C) 1993-2021 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 GDBSERVER_DLL_H
+#define GDBSERVER_DLL_H
+
+#include <list>
+
+struct dll_info
+{
+  dll_info (const std::string &name_, CORE_ADDR base_addr_)
+  : name (name_), base_addr (base_addr_)
+  {}
+
+  std::string name;
+  CORE_ADDR base_addr;
+};
+
+extern std::list<dll_info> all_dlls;
+extern int dlls_changed;
+
+extern void clear_dlls (void);
+extern void loaded_dll (const char *name, CORE_ADDR base_addr);
+extern void unloaded_dll (const char *name, CORE_ADDR base_addr);
+
+#endif /* GDBSERVER_DLL_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/fork-child.cc ./gdbserver/fork-child.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/fork-child.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/fork-child.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,119 @@
+/* Fork a Unix child process, and set up to debug it, for GDBserver.
+   Copyright (C) 1989-2021 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 "server.h"
+#include "gdbsupport/job-control.h"
+#include "nat/fork-inferior.h"
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+
+#ifdef SIGTTOU
+/* A file descriptor for the controlling terminal.  */
+static int terminal_fd;
+
+/* TERMINAL_FD's original foreground group.  */
+static pid_t old_foreground_pgrp;
+
+/* Hand back terminal ownership to the original foreground group.  */
+
+static void
+restore_old_foreground_pgrp (void)
+{
+  tcsetpgrp (terminal_fd, old_foreground_pgrp);
+}
+#endif
+
+/* See nat/fork-inferior.h.  */
+
+void
+prefork_hook (const char *args)
+{
+  client_state &cs = get_client_state ();
+  if (debug_threads)
+    {
+      debug_printf ("args: %s\n", args);
+      debug_flush ();
+    }
+
+#ifdef SIGTTOU
+  signal (SIGTTOU, SIG_DFL);
+  signal (SIGTTIN, SIG_DFL);
+#endif
+
+  /* Clear this so the backend doesn't get confused, thinking
+     CONT_THREAD died, and it needs to resume all threads.  */
+  cs.cont_thread = null_ptid;
+}
+
+/* See nat/fork-inferior.h.  */
+
+void
+postfork_hook (pid_t pid)
+{
+}
+
+/* See nat/fork-inferior.h.  */
+
+void
+postfork_child_hook ()
+{
+  /* This is set to the result of setpgrp, which if vforked, will be
+     visible to you in the parent process.  It's only used by humans
+     for debugging.  */
+  static int debug_setpgrp = 657473;
+
+  debug_setpgrp = gdb_setpgid ();
+  if (debug_setpgrp == -1)
+    perror (_("setpgrp failed in child"));
+}
+
+/* See nat/fork-inferior.h.  */
+
+void
+gdb_flush_out_err ()
+{
+  fflush (stdout);
+  fflush (stderr);
+}
+
+/* See server.h.  */
+
+void
+post_fork_inferior (int pid, const char *program)
+{
+  client_state &cs = get_client_state ();
+#ifdef SIGTTOU
+  signal (SIGTTOU, SIG_IGN);
+  signal (SIGTTIN, SIG_IGN);
+  terminal_fd = fileno (stderr);
+  old_foreground_pgrp = tcgetpgrp (terminal_fd);
+  tcsetpgrp (terminal_fd, pid);
+  atexit (restore_old_foreground_pgrp);
+#endif
+
+  startup_inferior (the_target, pid,
+		    START_INFERIOR_TRAPS_EXPECTED,
+		    &cs.last_status, &cs.last_ptid);
+  current_thread->last_resume_kind = resume_stop;
+  current_thread->last_status = cs.last_status;
+  signal_pid = pid;
+  target_post_create_inferior ();
+  fprintf (stderr, "Process %s created; pid = %d\n", program, pid);
+  fflush (stderr);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/gdb_proc_service.h ./gdbserver/gdb_proc_service.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/gdb_proc_service.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/gdb_proc_service.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,31 @@
+/* <proc_service.h> replacement for systems that don't have it.
+   Copyright (C) 2000-2021 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 GDBSERVER_GDB_PROC_SERVICE_H
+#define GDBSERVER_GDB_PROC_SERVICE_H
+
+#include "gdbsupport/gdb_proc_service.h"
+
+/* Structure that identifies the target process.  */
+struct ps_prochandle
+{
+  /* We don't need to track anything.  All context is served from the
+     current inferior.  */
+};
+
+#endif /* GDBSERVER_GDB_PROC_SERVICE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/gdbreplay.cc ./gdbserver/gdbreplay.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/gdbreplay.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/gdbreplay.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,532 @@
+/* Replay a remote debug session logfile for GDB.
+   Copyright (C) 1996-2021 Free Software Foundation, Inc.
+   Written by Fred Fish (fnf@cygnus.com) from pieces of gdbserver.
+
+   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 "gdbsupport/common-defs.h"
+
+#undef PACKAGE
+#undef PACKAGE_NAME
+#undef PACKAGE_VERSION
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+
+#include <config.h>
+#include "gdbsupport/version.h"
+
+#if HAVE_SYS_FILE_H
+#include <sys/file.h>
+#endif
+#if HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#include <ctype.h>
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#include <unistd.h>
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+
+#if USE_WIN32API
+#include <ws2tcpip.h>
+#endif
+
+#include "gdbsupport/netstuff.h"
+#include "gdbsupport/rsp-low.h"
+
+#ifndef HAVE_SOCKLEN_T
+typedef int socklen_t;
+#endif
+
+/* Sort of a hack... */
+#define EOL (EOF - 1)
+
+static int remote_desc;
+
+#ifdef __MINGW32CE__
+
+#ifndef COUNTOF
+#define COUNTOF(STR) (sizeof (STR) / sizeof ((STR)[0]))
+#endif
+
+#define errno (GetLastError ())
+
+char *
+strerror (DWORD error)
+{
+  static char buf[1024];
+  WCHAR *msgbuf;
+  DWORD lasterr = GetLastError ();
+  DWORD chars = FormatMessageW (FORMAT_MESSAGE_FROM_SYSTEM
+				| FORMAT_MESSAGE_ALLOCATE_BUFFER,
+				NULL,
+				error,
+				0, /* Default language */
+				(LPVOID)&msgbuf,
+				0,
+				NULL);
+  if (chars != 0)
+    {
+      /* If there is an \r\n appended, zap it.  */
+      if (chars >= 2
+	  && msgbuf[chars - 2] == '\r'
+	  && msgbuf[chars - 1] == '\n')
+	{
+	  chars -= 2;
+	  msgbuf[chars] = 0;
+	}
+
+      if (chars > ((COUNTOF (buf)) - 1))
+	{
+	  chars = COUNTOF (buf) - 1;
+	  msgbuf [chars] = 0;
+	}
+
+      wcstombs (buf, msgbuf, chars + 1);
+      LocalFree (msgbuf);
+    }
+  else
+    sprintf (buf, "unknown win32 error (%ld)", error);
+
+  SetLastError (lasterr);
+  return buf;
+}
+
+#endif /* __MINGW32CE__ */
+
+static void
+sync_error (FILE *fp, const char *desc, int expect, int got)
+{
+  fprintf (stderr, "\n%s\n", desc);
+  fprintf (stderr, "At logfile offset %ld, expected '0x%x' got '0x%x'\n",
+	   ftell (fp), expect, got);
+  fflush (stderr);
+  exit (1);
+}
+
+static void
+remote_error (const char *desc)
+{
+  fprintf (stderr, "\n%s\n", desc);
+  fflush (stderr);
+  exit (1);
+}
+
+static void
+remote_close (void)
+{
+#ifdef USE_WIN32API
+  closesocket (remote_desc);
+#else
+  close (remote_desc);
+#endif
+}
+
+/* Open a connection to a remote debugger.
+   NAME is the filename used for communication.  */
+
+static void
+remote_open (char *name)
+{
+  char *last_colon = strrchr (name, ':');
+
+  if (last_colon == NULL)
+    {
+      fprintf (stderr, "%s: Must specify tcp connection as host:addr\n", name);
+      fflush (stderr);
+      exit (1);
+    }
+
+#ifdef USE_WIN32API
+  static int winsock_initialized;
+#endif
+  int tmp;
+  int tmp_desc;
+  struct addrinfo hint;
+  struct addrinfo *ainfo;
+
+  memset (&hint, 0, sizeof (hint));
+  /* Assume no prefix will be passed, therefore we should use
+     AF_UNSPEC.  */
+  hint.ai_family = AF_UNSPEC;
+  hint.ai_socktype = SOCK_STREAM;
+  hint.ai_protocol = IPPROTO_TCP;
+
+  parsed_connection_spec parsed = parse_connection_spec (name, &hint);
+
+  if (parsed.port_str.empty ())
+    error (_("Missing port on hostname '%s'"), name);
+
+#ifdef USE_WIN32API
+  if (!winsock_initialized)
+    {
+      WSADATA wsad;
+
+      WSAStartup (MAKEWORD (1, 0), &wsad);
+      winsock_initialized = 1;
+    }
+#endif
+
+  int r = getaddrinfo (parsed.host_str.c_str (), parsed.port_str.c_str (),
+		       &hint, &ainfo);
+
+  if (r != 0)
+    {
+      fprintf (stderr, "%s:%s: cannot resolve name: %s\n",
+	       parsed.host_str.c_str (), parsed.port_str.c_str (),
+	       gai_strerror (r));
+      fflush (stderr);
+      exit (1);
+    }
+
+  scoped_free_addrinfo free_ainfo (ainfo);
+
+  struct addrinfo *p;
+
+  for (p = ainfo; p != NULL; p = p->ai_next)
+    {
+      tmp_desc = socket (p->ai_family, p->ai_socktype, p->ai_protocol);
+
+      if (tmp_desc >= 0)
+	break;
+    }
+
+  if (p == NULL)
+    perror_with_name ("Cannot open socket");
+
+  /* Allow rapid reuse of this port. */
+  tmp = 1;
+  setsockopt (tmp_desc, SOL_SOCKET, SO_REUSEADDR, (char *) &tmp,
+	      sizeof (tmp));
+
+  switch (p->ai_family)
+    {
+    case AF_INET:
+      ((struct sockaddr_in *) p->ai_addr)->sin_addr.s_addr = INADDR_ANY;
+      break;
+    case AF_INET6:
+      ((struct sockaddr_in6 *) p->ai_addr)->sin6_addr = in6addr_any;
+      break;
+    default:
+      fprintf (stderr, "Invalid 'ai_family' %d\n", p->ai_family);
+      exit (1);
+    }
+
+  if (bind (tmp_desc, p->ai_addr, p->ai_addrlen) != 0)
+    perror_with_name ("Can't bind address");
+
+  if (p->ai_socktype == SOCK_DGRAM)
+    remote_desc = tmp_desc;
+  else
+    {
+      struct sockaddr_storage sockaddr;
+      socklen_t sockaddrsize = sizeof (sockaddr);
+      char orig_host[GDB_NI_MAX_ADDR], orig_port[GDB_NI_MAX_PORT];
+
+      if (listen (tmp_desc, 1) != 0)
+	perror_with_name ("Can't listen on socket");
+
+      remote_desc = accept (tmp_desc, (struct sockaddr *) &sockaddr,
+			    &sockaddrsize);
+
+      if (remote_desc == -1)
+	perror_with_name ("Accept failed");
+
+      /* Enable TCP keep alive process. */
+      tmp = 1;
+      setsockopt (tmp_desc, SOL_SOCKET, SO_KEEPALIVE,
+		  (char *) &tmp, sizeof (tmp));
+
+      /* Tell TCP not to delay small packets.  This greatly speeds up
+	 interactive response. */
+      tmp = 1;
+      setsockopt (remote_desc, IPPROTO_TCP, TCP_NODELAY,
+		  (char *) &tmp, sizeof (tmp));
+
+      if (getnameinfo ((struct sockaddr *) &sockaddr, sockaddrsize,
+		       orig_host, sizeof (orig_host),
+		       orig_port, sizeof (orig_port),
+		       NI_NUMERICHOST | NI_NUMERICSERV) == 0)
+	{
+	  fprintf (stderr, "Remote debugging from host %s, port %s\n",
+		   orig_host, orig_port);
+	  fflush (stderr);
+	}
+
+#ifndef USE_WIN32API
+      close (tmp_desc);		/* No longer need this */
+
+      signal (SIGPIPE, SIG_IGN);	/* If we don't do this, then
+					   gdbreplay simply exits when
+					   the remote side dies.  */
+#else
+      closesocket (tmp_desc);	/* No longer need this */
+#endif
+    }
+
+#if defined(F_SETFL) && defined (FASYNC)
+  fcntl (remote_desc, F_SETFL, FASYNC);
+#endif
+
+  fprintf (stderr, "Replay logfile using %s\n", name);
+  fflush (stderr);
+}
+
+static int
+logchar (FILE *fp)
+{
+  int ch;
+  int ch2;
+
+  ch = fgetc (fp);
+  if (ch != '\r')
+    {
+      fputc (ch, stdout);
+      fflush (stdout);
+    }
+  switch (ch)
+    {
+      /* Treat \r\n as a newline.  */
+    case '\r':
+      ch = fgetc (fp);
+      if (ch == '\n')
+	ch = EOL;
+      else
+	{
+	  ungetc (ch, fp);
+	  ch = '\r';
+	}
+      fputc (ch == EOL ? '\n' : '\r', stdout);
+      fflush (stdout);
+      break;
+    case '\n':
+      ch = EOL;
+      break;
+    case '\\':
+      ch = fgetc (fp);
+      fputc (ch, stdout);
+      fflush (stdout);
+      switch (ch)
+	{
+	case '\\':
+	  break;
+	case 'b':
+	  ch = '\b';
+	  break;
+	case 'f':
+	  ch = '\f';
+	  break;
+	case 'n':
+	  ch = '\n';
+	  break;
+	case 'r':
+	  ch = '\r';
+	  break;
+	case 't':
+	  ch = '\t';
+	  break;
+	case 'v':
+	  ch = '\v';
+	  break;
+	case 'x':
+	  ch2 = fgetc (fp);
+	  fputc (ch2, stdout);
+	  fflush (stdout);
+	  ch = fromhex (ch2) << 4;
+	  ch2 = fgetc (fp);
+	  fputc (ch2, stdout);
+	  fflush (stdout);
+	  ch |= fromhex (ch2);
+	  break;
+	default:
+	  /* Treat any other char as just itself */
+	  break;
+	}
+    default:
+      break;
+    }
+  return (ch);
+}
+
+static int
+gdbchar (int desc)
+{
+  unsigned char fromgdb;
+
+  if (read (desc, &fromgdb, 1) != 1)
+    return -1;
+  else
+    return fromgdb;
+}
+
+/* Accept input from gdb and match with chars from fp (after skipping one
+   blank) up until a \n is read from fp (which is not matched) */
+
+static void
+expect (FILE *fp)
+{
+  int fromlog;
+  int fromgdb;
+
+  if ((fromlog = logchar (fp)) != ' ')
+    {
+      sync_error (fp, "Sync error during gdb read of leading blank", ' ',
+		  fromlog);
+    }
+  do
+    {
+      fromlog = logchar (fp);
+      if (fromlog == EOL)
+	break;
+      fromgdb = gdbchar (remote_desc);
+      if (fromgdb < 0)
+	remote_error ("Error during read from gdb");
+    }
+  while (fromlog == fromgdb);
+
+  if (fromlog != EOL)
+    {
+      sync_error (fp, "Sync error during read of gdb packet from log", fromlog,
+		  fromgdb);
+    }
+}
+
+/* Play data back to gdb from fp (after skipping leading blank) up until a
+   \n is read from fp (which is discarded and not sent to gdb). */
+
+static void
+play (FILE *fp)
+{
+  int fromlog;
+  char ch;
+
+  if ((fromlog = logchar (fp)) != ' ')
+    {
+      sync_error (fp, "Sync error skipping blank during write to gdb", ' ',
+		  fromlog);
+    }
+  while ((fromlog = logchar (fp)) != EOL)
+    {
+      ch = fromlog;
+      if (write (remote_desc, &ch, 1) != 1)
+	remote_error ("Error during write to gdb");
+    }
+}
+
+static void
+gdbreplay_version (void)
+{
+  printf ("GNU gdbreplay %s%s\n"
+	  "Copyright (C) 2021 Free Software Foundation, Inc.\n"
+	  "gdbreplay is free software, covered by "
+	  "the GNU General Public License.\n"
+	  "This gdbreplay was configured as \"%s\"\n",
+	  PKGVERSION, version, host_name);
+}
+
+static void
+gdbreplay_usage (FILE *stream)
+{
+  fprintf (stream, "Usage:\tgdbreplay LOGFILE HOST:PORT\n");
+  if (REPORT_BUGS_TO[0] && stream == stdout)
+    fprintf (stream, "Report bugs to \"%s\".\n", REPORT_BUGS_TO);
+}
+
+/* Main function.  This is called by the real "main" function,
+   wrapped in a TRY_CATCH that handles any uncaught exceptions.  */
+
+static void ATTRIBUTE_NORETURN
+captured_main (int argc, char *argv[])
+{
+  FILE *fp;
+  int ch;
+
+  if (argc >= 2 && strcmp (argv[1], "--version") == 0)
+    {
+      gdbreplay_version ();
+      exit (0);
+    }
+  if (argc >= 2 && strcmp (argv[1], "--help") == 0)
+    {
+      gdbreplay_usage (stdout);
+      exit (0);
+    }
+
+  if (argc < 3)
+    {
+      gdbreplay_usage (stderr);
+      exit (1);
+    }
+  fp = fopen (argv[1], "r");
+  if (fp == NULL)
+    {
+      perror_with_name (argv[1]);
+    }
+  remote_open (argv[2]);
+  while ((ch = logchar (fp)) != EOF)
+    {
+      switch (ch)
+	{
+	case 'w':
+	  /* data sent from gdb to gdbreplay, accept and match it */
+	  expect (fp);
+	  break;
+	case 'r':
+	  /* data sent from gdbreplay to gdb, play it */
+	  play (fp);
+	  break;
+	case 'c':
+	  /* Command executed by gdb */
+	  while ((ch = logchar (fp)) != EOL);
+	  break;
+	}
+    }
+  remote_close ();
+  exit (0);
+}
+
+int
+main (int argc, char *argv[])
+{
+  try
+    {
+      captured_main (argc, argv);
+    }
+  catch (const gdb_exception &exception)
+    {
+      if (exception.reason == RETURN_ERROR)
+	{
+	  fflush (stdout);
+	  fprintf (stderr, "%s\n", exception.what ());
+	}
+
+      exit (1);
+    }
+
+  gdb_assert_not_reached ("captured_main should never return");
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/gdbthread.h ./gdbserver/gdbthread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/gdbthread.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/gdbthread.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,227 @@
+/* Multi-thread control defs for remote server for GDB.
+   Copyright (C) 1993-2021 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 GDBSERVER_GDBTHREAD_H
+#define GDBSERVER_GDBTHREAD_H
+
+#include "gdbsupport/common-gdbthread.h"
+#include "inferiors.h"
+
+#include <list>
+
+struct btrace_target_info;
+struct regcache;
+
+struct thread_info
+{
+  /* The id of this thread.  */
+  ptid_t id;
+
+  void *target_data;
+  struct regcache *regcache_data;
+
+  /* The last resume GDB requested on this thread.  */
+  enum resume_kind last_resume_kind;
+
+  /* The last wait status reported for this thread.  */
+  struct target_waitstatus last_status;
+
+  /* True if LAST_STATUS hasn't been reported to GDB yet.  */
+  int status_pending_p;
+
+  /* Given `while-stepping', a thread may be collecting data for more
+     than one tracepoint simultaneously.  E.g.:
+
+    ff0001  INSN1 <-- TP1, while-stepping 10 collect $regs
+    ff0002  INSN2
+    ff0003  INSN3 <-- TP2, collect $regs
+    ff0004  INSN4 <-- TP3, while-stepping 10 collect $regs
+    ff0005  INSN5
+
+   Notice that when instruction INSN5 is reached, the while-stepping
+   actions of both TP1 and TP3 are still being collected, and that TP2
+   had been collected meanwhile.  The whole range of ff0001-ff0005
+   should be single-stepped, due to at least TP1's while-stepping
+   action covering the whole range.
+
+   On the other hand, the same tracepoint with a while-stepping action
+   may be hit by more than one thread simultaneously, hence we can't
+   keep the current step count in the tracepoint itself.
+
+   This is the head of the list of the states of `while-stepping'
+   tracepoint actions this thread is now collecting; NULL if empty.
+   Each item in the list holds the current step of the while-stepping
+   action.  */
+  struct wstep_state *while_stepping;
+
+  /* Branch trace target information for this thread.  */
+  struct btrace_target_info *btrace;
+};
+
+extern std::list<thread_info *> all_threads;
+
+void remove_thread (struct thread_info *thread);
+struct thread_info *add_thread (ptid_t ptid, void *target_data);
+
+/* Return a pointer to the first thread, or NULL if there isn't one.  */
+
+struct thread_info *get_first_thread (void);
+
+struct thread_info *find_thread_ptid (ptid_t ptid);
+
+/* Find any thread of the PID process.  Returns NULL if none is
+   found.  */
+struct thread_info *find_any_thread_of_pid (int pid);
+
+/* Find the first thread for which FUNC returns true.  Return NULL if no thread
+   satisfying FUNC is found.  */
+
+template <typename Func>
+static thread_info *
+find_thread (Func func)
+{
+  std::list<thread_info *>::iterator next, cur = all_threads.begin ();
+
+  while (cur != all_threads.end ())
+    {
+      next = cur;
+      next++;
+
+      if (func (*cur))
+	return *cur;
+
+      cur = next;
+    }
+
+  return NULL;
+}
+
+/* Like the above, but only consider threads with pid PID.  */
+
+template <typename Func>
+static thread_info *
+find_thread (int pid, Func func)
+{
+  return find_thread ([&] (thread_info *thread)
+    {
+      return thread->id.pid () == pid && func (thread);
+    });
+}
+
+/* Find the first thread that matches FILTER for which FUNC returns true.
+   Return NULL if no thread satisfying these conditions is found.  */
+
+template <typename Func>
+static thread_info *
+find_thread (ptid_t filter, Func func)
+{
+  return find_thread ([&] (thread_info *thread) {
+    return thread->id.matches (filter) && func (thread);
+  });
+}
+
+/* Invoke FUNC for each thread.  */
+
+template <typename Func>
+static void
+for_each_thread (Func func)
+{
+  std::list<thread_info *>::iterator next, cur = all_threads.begin ();
+
+  while (cur != all_threads.end ())
+    {
+      next = cur;
+      next++;
+      func (*cur);
+      cur = next;
+    }
+}
+
+/* Like the above, but only consider threads with pid PID.  */
+
+template <typename Func>
+static void
+for_each_thread (int pid, Func func)
+{
+  for_each_thread ([&] (thread_info *thread)
+    {
+      if (pid == thread->id.pid ())
+	func (thread);
+    });
+}
+
+/* Find the a random thread for which FUNC (THREAD) returns true.  If
+   no entry is found then return NULL.  */
+
+template <typename Func>
+static thread_info *
+find_thread_in_random (Func func)
+{
+  int count = 0;
+  int random_selector;
+
+  /* First count how many interesting entries we have.  */
+  for_each_thread ([&] (thread_info *thread) {
+    if (func (thread))
+      count++;
+  });
+
+  if (count == 0)
+    return NULL;
+
+  /* Now randomly pick an entry out of those.  */
+  random_selector = (int)
+    ((count * (double) rand ()) / (RAND_MAX + 1.0));
+
+  thread_info *thread = find_thread ([&] (thread_info *thr_arg) {
+    return func (thr_arg) && (random_selector-- == 0);
+  });
+
+  gdb_assert (thread != NULL);
+
+  return thread;
+}
+
+/* Get current thread ID (Linux task ID).  */
+#define current_ptid (current_thread->id)
+
+/* Get the ptid of THREAD.  */
+
+static inline ptid_t
+ptid_of (const thread_info *thread)
+{
+  return thread->id;
+}
+
+/* Get the pid of THREAD.  */
+
+static inline int
+pid_of (const thread_info *thread)
+{
+  return thread->id.pid ();
+}
+
+/* Get the lwp of THREAD.  */
+
+static inline long
+lwpid_of (const thread_info *thread)
+{
+  return thread->id.lwp ();
+}
+
+#endif /* GDBSERVER_GDBTHREAD_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/.gitattributes ./gdbserver/.gitattributes
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/.gitattributes	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/.gitattributes	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,6 @@
+# -*- conf -*-
+
+# Use cpp-style diffs for .h files.  This is useful
+# if you modify classes defined in a header file.
+
+*.h	diff=cpp
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/.gitignore ./gdbserver/.gitignore
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/.gitignore	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/.gitignore	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,10 @@
+/Makefile
+
+gdbreplay
+gdbserver
+libinproctrace.so
+
+build-gnulib-gdbserver
+build-libiberty-gdbserver
+
+*-generated.c
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/hostio.cc ./gdbserver/hostio.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/hostio.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/hostio.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,617 @@
+/* Host file transfer support for gdbserver.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
+
+   Contributed by CodeSourcery.
+
+   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 "server.h"
+#include "gdb/fileio.h"
+#include "hostio.h"
+
+#include <fcntl.h>
+#include <limits.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include "gdbsupport/fileio.h"
+
+struct fd_list
+{
+  int fd;
+  struct fd_list *next;
+};
+
+static struct fd_list *open_fds;
+
+static int
+safe_fromhex (char a, int *nibble)
+{
+  if (a >= '0' && a <= '9')
+    *nibble = a - '0';
+  else if (a >= 'a' && a <= 'f')
+    *nibble = a - 'a' + 10;
+  else if (a >= 'A' && a <= 'F')
+    *nibble = a - 'A' + 10;
+  else
+    return -1;
+
+  return 0;
+}
+
+/* Filenames are hex encoded, so the maximum we can handle is half the
+   packet buffer size.  Cap to PATH_MAX, if it is shorter.  */
+#if !defined (PATH_MAX) || (PATH_MAX > (PBUFSIZ / 2 + 1))
+#  define HOSTIO_PATH_MAX (PBUFSIZ / 2 + 1)
+#else
+#  define HOSTIO_PATH_MAX PATH_MAX
+#endif
+
+static int
+require_filename (char **pp, char *filename)
+{
+  int count;
+  char *p;
+
+  p = *pp;
+  count = 0;
+
+  while (*p && *p != ',')
+    {
+      int nib1, nib2;
+
+      /* Don't allow overflow.  */
+      if (count >= HOSTIO_PATH_MAX - 1)
+	return -1;
+
+      if (safe_fromhex (p[0], &nib1)
+	  || safe_fromhex (p[1], &nib2))
+	return -1;
+
+      filename[count++] = nib1 * 16 + nib2;
+      p += 2;
+    }
+
+  filename[count] = '\0';
+  *pp = p;
+  return 0;
+}
+
+static int
+require_int (char **pp, int *value)
+{
+  char *p;
+  int count, firstdigit;
+
+  p = *pp;
+  *value = 0;
+  count = 0;
+  firstdigit = -1;
+
+  while (*p && *p != ',')
+    {
+      int nib;
+
+      if (safe_fromhex (p[0], &nib))
+	return -1;
+
+      if (firstdigit == -1)
+	firstdigit = nib;
+
+      /* Don't allow overflow.  */
+      if (count >= 8 || (count == 7 && firstdigit >= 0x8))
+	return -1;
+
+      *value = *value * 16 + nib;
+      p++;
+      count++;
+    }
+
+  *pp = p;
+  return 0;
+}
+
+static int
+require_data (char *p, int p_len, char **data, int *data_len)
+{
+  int input_index, output_index, escaped;
+
+  *data = (char *) xmalloc (p_len);
+
+  output_index = 0;
+  escaped = 0;
+  for (input_index = 0; input_index < p_len; input_index++)
+    {
+      char b = p[input_index];
+
+      if (escaped)
+	{
+	  (*data)[output_index++] = b ^ 0x20;
+	  escaped = 0;
+	}
+      else if (b == '}')
+	escaped = 1;
+      else
+	(*data)[output_index++] = b;
+    }
+
+  if (escaped)
+    {
+      free (*data);
+      return -1;
+    }
+
+  *data_len = output_index;
+  return 0;
+}
+
+static int
+require_comma (char **pp)
+{
+  if (**pp == ',')
+    {
+      (*pp)++;
+      return 0;
+    }
+  else
+    return -1;
+}
+
+static int
+require_end (char *p)
+{
+  if (*p == '\0')
+    return 0;
+  else
+    return -1;
+}
+
+static int
+require_valid_fd (int fd)
+{
+  struct fd_list *fd_ptr;
+
+  for (fd_ptr = open_fds; fd_ptr != NULL; fd_ptr = fd_ptr->next)
+    if (fd_ptr->fd == fd)
+      return 0;
+
+  return -1;
+}
+
+/* Fill in own_buf with the last hostio error packet, however it
+   suitable for the target.  */
+static void
+hostio_error (char *own_buf)
+{
+  the_target->hostio_last_error (own_buf);
+}
+
+static void
+hostio_packet_error (char *own_buf)
+{
+  sprintf (own_buf, "F-1,%x", FILEIO_EINVAL);
+}
+
+static void
+hostio_reply (char *own_buf, int result)
+{
+  sprintf (own_buf, "F%x", result);
+}
+
+static int
+hostio_reply_with_data (char *own_buf, char *buffer, int len,
+			int *new_packet_len)
+{
+  int input_index, output_index, out_maxlen;
+
+  sprintf (own_buf, "F%x;", len);
+  output_index = strlen (own_buf);
+
+  out_maxlen = PBUFSIZ;
+
+  for (input_index = 0; input_index < len; input_index++)
+    {
+      char b = buffer[input_index];
+
+      if (b == '$' || b == '#' || b == '}' || b == '*')
+	{
+	  /* These must be escaped.  */
+	  if (output_index + 2 > out_maxlen)
+	    break;
+	  own_buf[output_index++] = '}';
+	  own_buf[output_index++] = b ^ 0x20;
+	}
+      else
+	{
+	  if (output_index + 1 > out_maxlen)
+	    break;
+	  own_buf[output_index++] = b;
+	}
+    }
+
+  *new_packet_len = output_index;
+  return input_index;
+}
+
+/* Process ID of inferior whose filesystem hostio functions
+   that take FILENAME arguments will use.  Zero means to use
+   our own filesystem.  */
+
+static int hostio_fs_pid;
+
+/* See hostio.h.  */
+
+void
+hostio_handle_new_gdb_connection (void)
+{
+  hostio_fs_pid = 0;
+}
+
+/* Handle a "vFile:setfs:" packet.  */
+
+static void
+handle_setfs (char *own_buf)
+{
+  char *p;
+  int pid;
+
+  /* If the target doesn't have any of the in-filesystem-of methods
+     then there's no point in GDB sending "vFile:setfs:" packets.  We
+     reply with an empty packet (i.e. we pretend we don't understand
+     "vFile:setfs:") and that should stop GDB sending any more.  */
+  if (!the_target->supports_multifs ())
+    {
+      own_buf[0] = '\0';
+      return;
+    }
+
+  p = own_buf + strlen ("vFile:setfs:");
+
+  if (require_int (&p, &pid)
+      || pid < 0
+      || require_end (p))
+    {
+      hostio_packet_error (own_buf);
+      return;
+    }
+
+  hostio_fs_pid = pid;
+
+  hostio_reply (own_buf, 0);
+}
+
+static void
+handle_open (char *own_buf)
+{
+  char filename[HOSTIO_PATH_MAX];
+  char *p;
+  int fileio_flags, fileio_mode, flags, fd;
+  mode_t mode;
+  struct fd_list *new_fd;
+
+  p = own_buf + strlen ("vFile:open:");
+
+  if (require_filename (&p, filename)
+      || require_comma (&p)
+      || require_int (&p, &fileio_flags)
+      || require_comma (&p)
+      || require_int (&p, &fileio_mode)
+      || require_end (p)
+      || fileio_to_host_openflags (fileio_flags, &flags)
+      || fileio_to_host_mode (fileio_mode, &mode))
+    {
+      hostio_packet_error (own_buf);
+      return;
+    }
+
+  /* We do not need to convert MODE, since the fileio protocol
+     uses the standard values.  */
+  if (hostio_fs_pid != 0)
+    fd = the_target->multifs_open (hostio_fs_pid, filename, flags, mode);
+  else
+    fd = open (filename, flags, mode);
+
+  if (fd == -1)
+    {
+      hostio_error (own_buf);
+      return;
+    }
+
+  /* Record the new file descriptor.  */
+  new_fd = XNEW (struct fd_list);
+  new_fd->fd = fd;
+  new_fd->next = open_fds;
+  open_fds = new_fd;
+
+  hostio_reply (own_buf, fd);
+}
+
+static void
+handle_pread (char *own_buf, int *new_packet_len)
+{
+  int fd, ret, len, offset, bytes_sent;
+  char *p, *data;
+  static int max_reply_size = -1;
+
+  p = own_buf + strlen ("vFile:pread:");
+
+  if (require_int (&p, &fd)
+      || require_comma (&p)
+      || require_valid_fd (fd)
+      || require_int (&p, &len)
+      || require_comma (&p)
+      || require_int (&p, &offset)
+      || require_end (p))
+    {
+      hostio_packet_error (own_buf);
+      return;
+    }
+
+  /* Do not attempt to read more than the maximum number of bytes
+     hostio_reply_with_data can fit in a packet.  We may still read
+     too much because of escaping, but this is handled below.  */
+  if (max_reply_size == -1)
+    {
+      sprintf (own_buf, "F%x;", PBUFSIZ);
+      max_reply_size = PBUFSIZ - strlen (own_buf);
+    }
+  if (len > max_reply_size)
+    len = max_reply_size;
+
+  data = (char *) xmalloc (len);
+#ifdef HAVE_PREAD
+  ret = pread (fd, data, len, offset);
+#else
+  ret = -1;
+#endif
+  /* If we have no pread or it failed for this file, use lseek/read.  */
+  if (ret == -1)
+    {
+      ret = lseek (fd, offset, SEEK_SET);
+      if (ret != -1)
+	ret = read (fd, data, len);
+    }
+
+  if (ret == -1)
+    {
+      hostio_error (own_buf);
+      free (data);
+      return;
+    }
+
+  bytes_sent = hostio_reply_with_data (own_buf, data, ret, new_packet_len);
+
+  /* If we were using read, and the data did not all fit in the reply,
+     we would have to back up using lseek here.  With pread it does
+     not matter.  But we still have a problem; the return value in the
+     packet might be wrong, so we must fix it.  This time it will
+     definitely fit.  */
+  if (bytes_sent < ret)
+    bytes_sent = hostio_reply_with_data (own_buf, data, bytes_sent,
+					 new_packet_len);
+
+  free (data);
+}
+
+static void
+handle_pwrite (char *own_buf, int packet_len)
+{
+  int fd, ret, len, offset;
+  char *p, *data;
+
+  p = own_buf + strlen ("vFile:pwrite:");
+
+  if (require_int (&p, &fd)
+      || require_comma (&p)
+      || require_valid_fd (fd)
+      || require_int (&p, &offset)
+      || require_comma (&p)
+      || require_data (p, packet_len - (p - own_buf), &data, &len))
+    {
+      hostio_packet_error (own_buf);
+      return;
+    }
+
+#ifdef HAVE_PWRITE
+  ret = pwrite (fd, data, len, offset);
+#else
+  ret = -1;
+#endif
+  /* If we have no pwrite or it failed for this file, use lseek/write.  */
+  if (ret == -1)
+    {
+      ret = lseek (fd, offset, SEEK_SET);
+      if (ret != -1)
+	ret = write (fd, data, len);
+    }
+
+  if (ret == -1)
+    {
+      hostio_error (own_buf);
+      free (data);
+      return;
+    }
+
+  hostio_reply (own_buf, ret);
+  free (data);
+}
+
+static void
+handle_fstat (char *own_buf, int *new_packet_len)
+{
+  int fd, bytes_sent;
+  char *p;
+  struct stat st;
+  struct fio_stat fst;
+
+  p = own_buf + strlen ("vFile:fstat:");
+
+  if (require_int (&p, &fd)
+      || require_valid_fd (fd)
+      || require_end (p))
+    {
+      hostio_packet_error (own_buf);
+      return;
+    }
+
+  if (fstat (fd, &st) == -1)
+    {
+      hostio_error (own_buf);
+      return;
+    }
+
+  host_to_fileio_stat (&st, &fst);
+
+  bytes_sent = hostio_reply_with_data (own_buf,
+				       (char *) &fst, sizeof (fst),
+				       new_packet_len);
+
+  /* If the response does not fit into a single packet, do not attempt
+     to return a partial response, but simply fail.  */
+  if (bytes_sent < sizeof (fst))
+    write_enn (own_buf);
+}
+
+static void
+handle_close (char *own_buf)
+{
+  int fd, ret;
+  char *p;
+  struct fd_list **open_fd_p, *old_fd;
+
+  p = own_buf + strlen ("vFile:close:");
+
+  if (require_int (&p, &fd)
+      || require_valid_fd (fd)
+      || require_end (p))
+    {
+      hostio_packet_error (own_buf);
+      return;
+    }
+
+  ret = close (fd);
+
+  if (ret == -1)
+    {
+      hostio_error (own_buf);
+      return;
+    }
+
+  open_fd_p = &open_fds;
+  /* We know that fd is in the list, thanks to require_valid_fd.  */
+  while ((*open_fd_p)->fd != fd)
+    open_fd_p = &(*open_fd_p)->next;
+
+  old_fd = *open_fd_p;
+  *open_fd_p = (*open_fd_p)->next;
+  free (old_fd);
+
+  hostio_reply (own_buf, ret);
+}
+
+static void
+handle_unlink (char *own_buf)
+{
+  char filename[HOSTIO_PATH_MAX];
+  char *p;
+  int ret;
+
+  p = own_buf + strlen ("vFile:unlink:");
+
+  if (require_filename (&p, filename)
+      || require_end (p))
+    {
+      hostio_packet_error (own_buf);
+      return;
+    }
+
+  if (hostio_fs_pid != 0)
+    ret = the_target->multifs_unlink (hostio_fs_pid, filename);
+  else
+    ret = unlink (filename);
+
+  if (ret == -1)
+    {
+      hostio_error (own_buf);
+      return;
+    }
+
+  hostio_reply (own_buf, ret);
+}
+
+static void
+handle_readlink (char *own_buf, int *new_packet_len)
+{
+  char filename[HOSTIO_PATH_MAX], linkname[HOSTIO_PATH_MAX];
+  char *p;
+  int ret, bytes_sent;
+
+  p = own_buf + strlen ("vFile:readlink:");
+
+  if (require_filename (&p, filename)
+      || require_end (p))
+    {
+      hostio_packet_error (own_buf);
+      return;
+    }
+
+  if (hostio_fs_pid != 0)
+    ret = the_target->multifs_readlink (hostio_fs_pid, filename,
+					linkname,
+					sizeof (linkname) - 1);
+  else
+    ret = readlink (filename, linkname, sizeof (linkname) - 1);
+
+  if (ret == -1)
+    {
+      hostio_error (own_buf);
+      return;
+    }
+
+  bytes_sent = hostio_reply_with_data (own_buf, linkname, ret, new_packet_len);
+
+  /* If the response does not fit into a single packet, do not attempt
+     to return a partial response, but simply fail.  */
+  if (bytes_sent < ret)
+    sprintf (own_buf, "F-1,%x", FILEIO_ENAMETOOLONG);
+}
+
+/* Handle all the 'F' file transfer packets.  */
+
+int
+handle_vFile (char *own_buf, int packet_len, int *new_packet_len)
+{
+  if (startswith (own_buf, "vFile:open:"))
+    handle_open (own_buf);
+  else if (startswith (own_buf, "vFile:pread:"))
+    handle_pread (own_buf, new_packet_len);
+  else if (startswith (own_buf, "vFile:pwrite:"))
+    handle_pwrite (own_buf, packet_len);
+  else if (startswith (own_buf, "vFile:fstat:"))
+    handle_fstat (own_buf, new_packet_len);
+  else if (startswith (own_buf, "vFile:close:"))
+    handle_close (own_buf);
+  else if (startswith (own_buf, "vFile:unlink:"))
+    handle_unlink (own_buf);
+  else if (startswith (own_buf, "vFile:readlink:"))
+    handle_readlink (own_buf, new_packet_len);
+  else if (startswith (own_buf, "vFile:setfs:"))
+    handle_setfs (own_buf);
+  else
+    return 0;
+
+  return 1;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/hostio-errno.cc ./gdbserver/hostio-errno.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/hostio-errno.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/hostio-errno.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,36 @@
+/* Host file transfer support for gdbserver.
+   Copyright (C) 2007-2021 Free Software Foundation, Inc.
+
+   Contributed by CodeSourcery.
+
+   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/>.  */
+
+/* This file implements the hostio_last_error target callback
+   on top of errno.  */
+
+#include "server.h"
+
+#include "hostio.h"
+
+#include "gdbsupport/fileio.h"
+
+void
+hostio_last_error_from_errno (char *buf)
+{
+  int error = errno;
+  int fileio_error = host_to_fileio_error (error);
+  sprintf (buf, "F-1,%x", fileio_error);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/hostio.h ./gdbserver/hostio.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/hostio.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/hostio.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,31 @@
+/* Host file transfer support for gdbserver.
+   Copyright (C) 1993-2021 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 GDBSERVER_HOSTIO_H
+#define GDBSERVER_HOSTIO_H
+
+/* Per-connection setup.  */
+extern void hostio_handle_new_gdb_connection (void);
+
+/* Functions from hostio.c.  */
+extern int handle_vFile (char *, int, int *);
+
+/* Functions from hostio-errno.c.  */
+extern void hostio_last_error_from_errno (char *own_buf);
+
+#endif /* GDBSERVER_HOSTIO_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/i387-fp.cc ./gdbserver/i387-fp.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/i387-fp.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/i387-fp.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,954 @@
+/* i387-specific utility functions, for the remote server for GDB.
+   Copyright (C) 2000-2021 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 "server.h"
+#include "i387-fp.h"
+#include "gdbsupport/x86-xstate.h"
+
+static const int num_mpx_bnd_registers = 4;
+static const int num_mpx_cfg_registers = 2;
+static const int num_avx512_k_registers = 8;
+static const int num_avx512_zmmh_low_registers = 16;
+static const int num_avx512_zmmh_high_registers = 16;
+static const int num_avx512_ymmh_registers = 16;
+static const int num_avx512_xmm_registers = 16;
+static const int num_pkeys_registers = 1;
+
+/* Note: These functions preserve the reserved bits in control registers.
+   However, gdbserver promptly throws away that information.  */
+
+/* These structs should have the proper sizes and alignment on both
+   i386 and x86-64 machines.  */
+
+struct i387_fsave {
+  /* All these are only sixteen bits, plus padding, except for fop (which
+     is only eleven bits), and fooff / fioff (which are 32 bits each).  */
+  unsigned short fctrl;
+  unsigned short pad1;
+  unsigned short fstat;
+  unsigned short pad2;
+  unsigned short ftag;
+  unsigned short pad3;
+  unsigned int fioff;
+  unsigned short fiseg;
+  unsigned short fop;
+  unsigned int fooff;
+  unsigned short foseg;
+  unsigned short pad4;
+
+  /* Space for eight 80-bit FP values.  */
+  unsigned char st_space[80];
+};
+
+struct i387_fxsave {
+  /* All these are only sixteen bits, plus padding, except for fop (which
+     is only eleven bits), and fooff / fioff (which are 32 bits each).  */
+  unsigned short fctrl;
+  unsigned short fstat;
+  unsigned short ftag;
+  unsigned short fop;
+  unsigned int fioff;
+  unsigned short fiseg;
+  unsigned short pad1;
+  unsigned int fooff;
+  unsigned short foseg;
+  unsigned short pad12;
+
+  unsigned int mxcsr;
+  unsigned int pad3;
+
+  /* Space for eight 80-bit FP values in 128-bit spaces.  */
+  unsigned char st_space[128];
+
+  /* Space for eight 128-bit XMM values, or 16 on x86-64.  */
+  unsigned char xmm_space[256];
+};
+
+struct i387_xsave {
+  /* All these are only sixteen bits, plus padding, except for fop (which
+     is only eleven bits), and fooff / fioff (which are 32 bits each).  */
+  unsigned short fctrl;
+  unsigned short fstat;
+  unsigned short ftag;
+  unsigned short fop;
+  unsigned int fioff;
+  unsigned short fiseg;
+  unsigned short pad1;
+  unsigned int fooff;
+  unsigned short foseg;
+  unsigned short pad12;
+
+  unsigned int mxcsr;
+  unsigned int mxcsr_mask;
+
+  /* Space for eight 80-bit FP values in 128-bit spaces.  */
+  unsigned char st_space[128];
+
+  /* Space for eight 128-bit XMM values, or 16 on x86-64.  */
+  unsigned char xmm_space[256];
+
+  unsigned char reserved1[48];
+
+  /* The extended control register 0 (the XFEATURE_ENABLED_MASK
+     register).  */
+  unsigned long long xcr0;
+
+  unsigned char reserved2[40];
+
+  /* The XSTATE_BV bit vector.  */
+  unsigned long long xstate_bv;
+
+  unsigned char reserved3[56];
+
+  /* Space for eight upper 128-bit YMM values, or 16 on x86-64.  */
+  unsigned char ymmh_space[256];
+
+  unsigned char reserved4[128];
+
+  /* Space for 4 bound registers values of 128 bits.  */
+  unsigned char mpx_bnd_space[64];
+
+  /* Space for 2 MPX configuration registers of 64 bits
+     plus reserved space.  */
+  unsigned char mpx_cfg_space[16];
+
+  unsigned char reserved5[48];
+
+  /* Space for 8 OpMask register values of 64 bits.  */
+  unsigned char k_space[64];
+
+  /* Space for 16 256-bit zmm0-15.  */
+  unsigned char zmmh_low_space[512];
+
+  /* Space for 16 512-bit zmm16-31 values.  */
+  unsigned char zmmh_high_space[1024];
+
+  /* Space for 1 32-bit PKRU register.  The HW XSTATE size for this feature is
+     actually 64 bits, but WRPKRU/RDPKRU instructions ignore upper 32 bits.  */
+  unsigned char pkru_space[8];
+};
+
+void
+i387_cache_to_fsave (struct regcache *regcache, void *buf)
+{
+  struct i387_fsave *fp = (struct i387_fsave *) buf;
+  int i;
+  int st0_regnum = find_regno (regcache->tdesc, "st0");
+  unsigned long val2;
+
+  for (i = 0; i < 8; i++)
+    collect_register (regcache, i + st0_regnum,
+		      ((char *) &fp->st_space[0]) + i * 10);
+
+  fp->fioff = regcache_raw_get_unsigned_by_name (regcache, "fioff");
+  fp->fooff = regcache_raw_get_unsigned_by_name (regcache, "fooff");
+
+  /* This one's 11 bits... */
+  val2 = regcache_raw_get_unsigned_by_name (regcache, "fop");
+  fp->fop = (val2 & 0x7FF) | (fp->fop & 0xF800);
+
+  /* Some registers are 16-bit.  */
+  fp->fctrl = regcache_raw_get_unsigned_by_name (regcache, "fctrl");
+  fp->fstat = regcache_raw_get_unsigned_by_name (regcache, "fstat");
+  fp->ftag = regcache_raw_get_unsigned_by_name (regcache, "ftag");
+  fp->fiseg = regcache_raw_get_unsigned_by_name (regcache, "fiseg");
+  fp->foseg = regcache_raw_get_unsigned_by_name (regcache, "foseg");
+}
+
+void
+i387_fsave_to_cache (struct regcache *regcache, const void *buf)
+{
+  struct i387_fsave *fp = (struct i387_fsave *) buf;
+  int i;
+  int st0_regnum = find_regno (regcache->tdesc, "st0");
+  unsigned long val;
+
+  for (i = 0; i < 8; i++)
+    supply_register (regcache, i + st0_regnum,
+		     ((char *) &fp->st_space[0]) + i * 10);
+
+  supply_register_by_name (regcache, "fioff", &fp->fioff);
+  supply_register_by_name (regcache, "fooff", &fp->fooff);
+
+  /* Some registers are 16-bit.  */
+  val = fp->fctrl & 0xFFFF;
+  supply_register_by_name (regcache, "fctrl", &val);
+
+  val = fp->fstat & 0xFFFF;
+  supply_register_by_name (regcache, "fstat", &val);
+
+  val = fp->ftag & 0xFFFF;
+  supply_register_by_name (regcache, "ftag", &val);
+
+  val = fp->fiseg & 0xFFFF;
+  supply_register_by_name (regcache, "fiseg", &val);
+
+  val = fp->foseg & 0xFFFF;
+  supply_register_by_name (regcache, "foseg", &val);
+
+  /* fop has only 11 valid bits.  */
+  val = (fp->fop) & 0x7FF;
+  supply_register_by_name (regcache, "fop", &val);
+}
+
+void
+i387_cache_to_fxsave (struct regcache *regcache, void *buf)
+{
+  struct i387_fxsave *fp = (struct i387_fxsave *) buf;
+  int i;
+  int st0_regnum = find_regno (regcache->tdesc, "st0");
+  int xmm0_regnum = find_regno (regcache->tdesc, "xmm0");
+  unsigned long val, val2;
+  /* Amd64 has 16 xmm regs; I386 has 8 xmm regs.  */
+  int num_xmm_registers = register_size (regcache->tdesc, 0) == 8 ? 16 : 8;
+
+  for (i = 0; i < 8; i++)
+    collect_register (regcache, i + st0_regnum,
+		      ((char *) &fp->st_space[0]) + i * 16);
+  for (i = 0; i < num_xmm_registers; i++)
+    collect_register (regcache, i + xmm0_regnum,
+		      ((char *) &fp->xmm_space[0]) + i * 16);
+
+  fp->fioff = regcache_raw_get_unsigned_by_name (regcache, "fioff");
+  fp->fooff = regcache_raw_get_unsigned_by_name (regcache, "fooff");
+  fp->mxcsr = regcache_raw_get_unsigned_by_name (regcache, "mxcsr");
+
+  /* This one's 11 bits... */
+  val2 = regcache_raw_get_unsigned_by_name (regcache, "fop");
+  fp->fop = (val2 & 0x7FF) | (fp->fop & 0xF800);
+
+  /* Some registers are 16-bit.  */
+  fp->fctrl = regcache_raw_get_unsigned_by_name (regcache, "fctrl");
+  fp->fstat = regcache_raw_get_unsigned_by_name (regcache, "fstat");
+
+  /* Convert to the simplifed tag form stored in fxsave data.  */
+  val = regcache_raw_get_unsigned_by_name (regcache, "ftag");
+  val2 = 0;
+  for (i = 7; i >= 0; i--)
+    {
+      int tag = (val >> (i * 2)) & 3;
+
+      if (tag != 3)
+	val2 |= (1 << i);
+    }
+  fp->ftag = val2;
+
+  fp->fiseg = regcache_raw_get_unsigned_by_name (regcache, "fiseg");
+  fp->foseg = regcache_raw_get_unsigned_by_name (regcache, "foseg");
+}
+
+void
+i387_cache_to_xsave (struct regcache *regcache, void *buf)
+{
+  struct i387_xsave *fp = (struct i387_xsave *) buf;
+  int i;
+  unsigned long val, val2;
+  unsigned long long xstate_bv = 0;
+  unsigned long long clear_bv = 0;
+  char raw[64];
+  char *p;
+  /* Amd64 has 16 xmm regs; I386 has 8 xmm regs.  */
+  int num_xmm_registers = register_size (regcache->tdesc, 0) == 8 ? 16 : 8;
+
+  /* The supported bits in `xstat_bv' are 8 bytes.  Clear part in
+     vector registers if its bit in xstat_bv is zero.  */
+  clear_bv = (~fp->xstate_bv) & x86_xcr0;
+
+  /* Clear part in x87 and vector registers if its bit in xstat_bv is
+     zero.  */
+  if (clear_bv)
+    {
+      if ((clear_bv & X86_XSTATE_X87))
+	{
+	  for (i = 0; i < 8; i++)
+	    memset (((char *) &fp->st_space[0]) + i * 16, 0, 10);
+
+	  fp->fioff = 0;
+	  fp->fooff = 0;
+	  fp->fctrl = I387_FCTRL_INIT_VAL;
+	  fp->fstat = 0;
+	  fp->ftag = 0;
+	  fp->fiseg = 0;
+	  fp->foseg = 0;
+	  fp->fop = 0;
+	}
+
+      if ((clear_bv & X86_XSTATE_SSE))
+	for (i = 0; i < num_xmm_registers; i++)
+	  memset (((char *) &fp->xmm_space[0]) + i * 16, 0, 16);
+
+      if ((clear_bv & X86_XSTATE_AVX))
+	for (i = 0; i < num_xmm_registers; i++)
+	  memset (((char *) &fp->ymmh_space[0]) + i * 16, 0, 16);
+
+      if ((clear_bv & X86_XSTATE_SSE) && (clear_bv & X86_XSTATE_AVX))
+	memset (((char *) &fp->mxcsr), 0, 4);
+
+      if ((clear_bv & X86_XSTATE_BNDREGS))
+	for (i = 0; i < num_mpx_bnd_registers; i++)
+	  memset (((char *) &fp->mpx_bnd_space[0]) + i * 16, 0, 16);
+
+      if ((clear_bv & X86_XSTATE_BNDCFG))
+	for (i = 0; i < num_mpx_cfg_registers; i++)
+	  memset (((char *) &fp->mpx_cfg_space[0]) + i * 8, 0, 8);
+
+      if ((clear_bv & X86_XSTATE_K))
+	for (i = 0; i < num_avx512_k_registers; i++)
+	  memset (((char *) &fp->k_space[0]) + i * 8, 0, 8);
+
+      if ((clear_bv & X86_XSTATE_ZMM_H))
+	for (i = 0; i < num_avx512_zmmh_low_registers; i++)
+	  memset (((char *) &fp->zmmh_low_space[0]) + i * 32, 0, 32);
+
+      if ((clear_bv & X86_XSTATE_ZMM))
+	{
+	  for (i = 0; i < num_avx512_zmmh_high_registers; i++)
+	    memset (((char *) &fp->zmmh_low_space[0]) + 32 + i * 64, 0, 32);
+	  for (i = 0; i < num_avx512_xmm_registers; i++)
+	    memset (((char *) &fp->zmmh_high_space[0]) + i * 64, 0, 16);
+	  for (i = 0; i < num_avx512_ymmh_registers; i++)
+	    memset (((char *) &fp->zmmh_high_space[0]) + 16 + i * 64, 0, 16);
+	}
+
+      if ((clear_bv & X86_XSTATE_PKRU))
+	for (i = 0; i < num_pkeys_registers; i++)
+	  memset (((char *) &fp->pkru_space[0]) + i * 4, 0, 4);
+    }
+
+  /* Check if any x87 registers are changed.  */
+  if ((x86_xcr0 & X86_XSTATE_X87))
+    {
+      int st0_regnum = find_regno (regcache->tdesc, "st0");
+
+      for (i = 0; i < 8; i++)
+	{
+	  collect_register (regcache, i + st0_regnum, raw);
+	  p = ((char *) &fp->st_space[0]) + i * 16;
+	  if (memcmp (raw, p, 10))
+	    {
+	      xstate_bv |= X86_XSTATE_X87;
+	      memcpy (p, raw, 10);
+	    }
+	}
+    }
+
+  /* Check if any SSE registers are changed.  */
+  if ((x86_xcr0 & X86_XSTATE_SSE))
+    {
+      int xmm0_regnum = find_regno (regcache->tdesc, "xmm0");
+
+      for (i = 0; i < num_xmm_registers; i++) 
+	{
+	  collect_register (regcache, i + xmm0_regnum, raw);
+	  p = ((char *) &fp->xmm_space[0]) + i * 16;
+	  if (memcmp (raw, p, 16))
+	    {
+	      xstate_bv |= X86_XSTATE_SSE;
+	      memcpy (p, raw, 16);
+	    }
+	}
+    }
+
+  /* Check if any AVX registers are changed.  */
+  if ((x86_xcr0 & X86_XSTATE_AVX))
+    {
+      int ymm0h_regnum = find_regno (regcache->tdesc, "ymm0h");
+
+      for (i = 0; i < num_xmm_registers; i++) 
+	{
+	  collect_register (regcache, i + ymm0h_regnum, raw);
+	  p = ((char *) &fp->ymmh_space[0]) + i * 16;
+	  if (memcmp (raw, p, 16))
+	    {
+	      xstate_bv |= X86_XSTATE_AVX;
+	      memcpy (p, raw, 16);
+	    }
+	}
+    }
+
+  /* Check if any bound register has changed.  */
+  if ((x86_xcr0 & X86_XSTATE_BNDREGS))
+    {
+     int bnd0r_regnum = find_regno (regcache->tdesc, "bnd0raw");
+
+      for (i = 0; i < num_mpx_bnd_registers; i++)
+	{
+	  collect_register (regcache, i + bnd0r_regnum, raw);
+	  p = ((char *) &fp->mpx_bnd_space[0]) + i * 16;
+	  if (memcmp (raw, p, 16))
+	    {
+	      xstate_bv |= X86_XSTATE_BNDREGS;
+	      memcpy (p, raw, 16);
+	    }
+	}
+    }
+
+  /* Check if any status register has changed.  */
+  if ((x86_xcr0 & X86_XSTATE_BNDCFG))
+    {
+      int bndcfg_regnum = find_regno (regcache->tdesc, "bndcfgu");
+
+      for (i = 0; i < num_mpx_cfg_registers; i++)
+	{
+	  collect_register (regcache, i + bndcfg_regnum, raw);
+	  p = ((char *) &fp->mpx_cfg_space[0]) + i * 8;
+	  if (memcmp (raw, p, 8))
+	    {
+	      xstate_bv |= X86_XSTATE_BNDCFG;
+	      memcpy (p, raw, 8);
+	    }
+	}
+    }
+
+  /* Check if any K registers are changed.  */
+  if ((x86_xcr0 & X86_XSTATE_K))
+    {
+      int k0_regnum = find_regno (regcache->tdesc, "k0");
+
+      for (i = 0; i < num_avx512_k_registers; i++)
+	{
+	  collect_register (regcache, i + k0_regnum, raw);
+	  p = ((char *) &fp->k_space[0]) + i * 8;
+	  if (memcmp (raw, p, 8) != 0)
+	    {
+	      xstate_bv |= X86_XSTATE_K;
+	      memcpy (p, raw, 8);
+	    }
+	}
+    }
+
+  /* Check if any of ZMM0H-ZMM15H registers are changed.  */
+  if ((x86_xcr0 & X86_XSTATE_ZMM_H))
+    {
+      int zmm0h_regnum = find_regno (regcache->tdesc, "zmm0h");
+
+      for (i = 0; i < num_avx512_zmmh_low_registers; i++)
+	{
+	  collect_register (regcache, i + zmm0h_regnum, raw);
+	  p = ((char *) &fp->zmmh_low_space[0]) + i * 32;
+	  if (memcmp (raw, p, 32) != 0)
+	    {
+	      xstate_bv |= X86_XSTATE_ZMM_H;
+	      memcpy (p, raw, 32);
+	    }
+	}
+    }
+
+  /* Check if any of ZMM16H-ZMM31H registers are changed.  */
+  if ((x86_xcr0 & X86_XSTATE_ZMM))
+    {
+      int zmm16h_regnum = find_regno (regcache->tdesc, "zmm16h");
+
+      for (i = 0; i < num_avx512_zmmh_high_registers; i++)
+	{
+	  collect_register (regcache, i + zmm16h_regnum, raw);
+	  p = ((char *) &fp->zmmh_high_space[0]) + 32 + i * 64;
+	  if (memcmp (raw, p, 32) != 0)
+	    {
+	      xstate_bv |= X86_XSTATE_ZMM;
+	      memcpy (p, raw, 32);
+	    }
+	}
+    }
+
+  /* Check if any XMM_AVX512 registers are changed.  */
+  if ((x86_xcr0 & X86_XSTATE_ZMM))
+    {
+      int xmm_avx512_regnum = find_regno (regcache->tdesc, "xmm16");
+
+      for (i = 0; i < num_avx512_xmm_registers; i++)
+	{
+	  collect_register (regcache, i + xmm_avx512_regnum, raw);
+	  p = ((char *) &fp->zmmh_high_space[0]) + i * 64;
+	  if (memcmp (raw, p, 16) != 0)
+	    {
+	      xstate_bv |= X86_XSTATE_ZMM;
+	      memcpy (p, raw, 16);
+	    }
+	}
+    }
+
+  /* Check if any YMMH_AVX512 registers are changed.  */
+  if ((x86_xcr0 & X86_XSTATE_ZMM))
+    {
+      int ymmh_avx512_regnum = find_regno (regcache->tdesc, "ymm16h");
+
+      for (i = 0; i < num_avx512_ymmh_registers; i++)
+	{
+	  collect_register (regcache, i + ymmh_avx512_regnum, raw);
+	  p = ((char *) &fp->zmmh_high_space[0]) + 16 + i * 64;
+	  if (memcmp (raw, p, 16) != 0)
+	    {
+	      xstate_bv |= X86_XSTATE_ZMM;
+	      memcpy (p, raw, 16);
+	    }
+	}
+    }
+
+  /* Check if any PKEYS registers are changed.  */
+  if ((x86_xcr0 & X86_XSTATE_PKRU))
+    {
+      int pkru_regnum = find_regno (regcache->tdesc, "pkru");
+
+      for (i = 0; i < num_pkeys_registers; i++)
+	{
+	  collect_register (regcache, i + pkru_regnum, raw);
+	  p = ((char *) &fp->pkru_space[0]) + i * 4;
+	  if (memcmp (raw, p, 4) != 0)
+	    {
+	      xstate_bv |= X86_XSTATE_PKRU;
+	      memcpy (p, raw, 4);
+	    }
+	}
+    }
+
+  if ((x86_xcr0 & X86_XSTATE_SSE) || (x86_xcr0 & X86_XSTATE_AVX))
+    {
+      collect_register_by_name (regcache, "mxcsr", raw);
+      if (memcmp (raw, &fp->mxcsr, 4) != 0)
+	{
+	  if (((fp->xstate_bv | xstate_bv)
+	       & (X86_XSTATE_SSE | X86_XSTATE_AVX)) == 0)
+	    xstate_bv |= X86_XSTATE_SSE;
+	  memcpy (&fp->mxcsr, raw, 4);
+	}
+    }
+
+  if (x86_xcr0 & X86_XSTATE_X87)
+    {
+      collect_register_by_name (regcache, "fioff", raw);
+      if (memcmp (raw, &fp->fioff, 4) != 0)
+	{
+	  xstate_bv |= X86_XSTATE_X87;
+	  memcpy (&fp->fioff, raw, 4);
+	}
+
+      collect_register_by_name (regcache, "fooff", raw);
+      if (memcmp (raw, &fp->fooff, 4) != 0)
+	{
+	  xstate_bv |= X86_XSTATE_X87;
+	  memcpy (&fp->fooff, raw, 4);
+	}
+
+      /* This one's 11 bits... */
+      val2 = regcache_raw_get_unsigned_by_name (regcache, "fop");
+      val2 = (val2 & 0x7FF) | (fp->fop & 0xF800);
+      if (fp->fop != val2)
+	{
+	  xstate_bv |= X86_XSTATE_X87;
+	  fp->fop = val2;
+	}
+
+      /* Some registers are 16-bit.  */
+      val = regcache_raw_get_unsigned_by_name (regcache, "fctrl");
+      if (fp->fctrl != val)
+	{
+	  xstate_bv |= X86_XSTATE_X87;
+	  fp->fctrl = val;
+	}
+
+      val = regcache_raw_get_unsigned_by_name (regcache, "fstat");
+      if (fp->fstat != val)
+	{
+	  xstate_bv |= X86_XSTATE_X87;
+	  fp->fstat = val;
+	}
+
+      /* Convert to the simplifed tag form stored in fxsave data.  */
+      val = regcache_raw_get_unsigned_by_name (regcache, "ftag");
+      val2 = 0;
+      for (i = 7; i >= 0; i--)
+	{
+	  int tag = (val >> (i * 2)) & 3;
+
+	  if (tag != 3)
+	    val2 |= (1 << i);
+	}
+      if (fp->ftag != val2)
+	{
+	  xstate_bv |= X86_XSTATE_X87;
+	  fp->ftag = val2;
+	}
+
+      val = regcache_raw_get_unsigned_by_name (regcache, "fiseg");
+      if (fp->fiseg != val)
+	{
+	  xstate_bv |= X86_XSTATE_X87;
+	  fp->fiseg = val;
+	}
+
+      val = regcache_raw_get_unsigned_by_name (regcache, "foseg");
+      if (fp->foseg != val)
+	{
+	  xstate_bv |= X86_XSTATE_X87;
+	  fp->foseg = val;
+	}
+    }
+
+  /* Update the corresponding bits in xstate_bv if any SSE/AVX
+     registers are changed.  */
+  fp->xstate_bv |= xstate_bv;
+}
+
+static int
+i387_ftag (struct i387_fxsave *fp, int regno)
+{
+  unsigned char *raw = &fp->st_space[regno * 16];
+  unsigned int exponent;
+  unsigned long fraction[2];
+  int integer;
+
+  integer = raw[7] & 0x80;
+  exponent = (((raw[9] & 0x7f) << 8) | raw[8]);
+  fraction[0] = ((raw[3] << 24) | (raw[2] << 16) | (raw[1] << 8) | raw[0]);
+  fraction[1] = (((raw[7] & 0x7f) << 24) | (raw[6] << 16)
+		 | (raw[5] << 8) | raw[4]);
+
+  if (exponent == 0x7fff)
+    {
+      /* Special.  */
+      return (2);
+    }
+  else if (exponent == 0x0000)
+    {
+      if (fraction[0] == 0x0000 && fraction[1] == 0x0000 && !integer)
+	{
+	  /* Zero.  */
+	  return (1);
+	}
+      else
+	{
+	  /* Special.  */
+	  return (2);
+	}
+    }
+  else
+    {
+      if (integer)
+	{
+	  /* Valid.  */
+	  return (0);
+	}
+      else
+	{
+	  /* Special.  */
+	  return (2);
+	}
+    }
+}
+
+void
+i387_fxsave_to_cache (struct regcache *regcache, const void *buf)
+{
+  struct i387_fxsave *fp = (struct i387_fxsave *) buf;
+  int i, top;
+  int st0_regnum = find_regno (regcache->tdesc, "st0");
+  int xmm0_regnum = find_regno (regcache->tdesc, "xmm0");
+  unsigned long val;
+  /* Amd64 has 16 xmm regs; I386 has 8 xmm regs.  */
+  int num_xmm_registers = register_size (regcache->tdesc, 0) == 8 ? 16 : 8;
+
+  for (i = 0; i < 8; i++)
+    supply_register (regcache, i + st0_regnum,
+		     ((char *) &fp->st_space[0]) + i * 16);
+  for (i = 0; i < num_xmm_registers; i++)
+    supply_register (regcache, i + xmm0_regnum,
+		     ((char *) &fp->xmm_space[0]) + i * 16);
+
+  supply_register_by_name (regcache, "fioff", &fp->fioff);
+  supply_register_by_name (regcache, "fooff", &fp->fooff);
+  supply_register_by_name (regcache, "mxcsr", &fp->mxcsr);
+
+  /* Some registers are 16-bit.  */
+  val = fp->fctrl & 0xFFFF;
+  supply_register_by_name (regcache, "fctrl", &val);
+
+  val = fp->fstat & 0xFFFF;
+  supply_register_by_name (regcache, "fstat", &val);
+
+  /* Generate the form of ftag data that GDB expects.  */
+  top = (fp->fstat >> 11) & 0x7;
+  val = 0;
+  for (i = 7; i >= 0; i--)
+    {
+      int tag;
+      if (fp->ftag & (1 << i))
+	tag = i387_ftag (fp, (i + 8 - top) % 8);
+      else
+	tag = 3;
+      val |= tag << (2 * i);
+    }
+  supply_register_by_name (regcache, "ftag", &val);
+
+  val = fp->fiseg & 0xFFFF;
+  supply_register_by_name (regcache, "fiseg", &val);
+
+  val = fp->foseg & 0xFFFF;
+  supply_register_by_name (regcache, "foseg", &val);
+
+  val = (fp->fop) & 0x7FF;
+  supply_register_by_name (regcache, "fop", &val);
+}
+
+void
+i387_xsave_to_cache (struct regcache *regcache, const void *buf)
+{
+  struct i387_xsave *fp = (struct i387_xsave *) buf;
+  struct i387_fxsave *fxp = (struct i387_fxsave *) buf;
+  int i, top;
+  unsigned long val;
+  unsigned long long clear_bv;
+  gdb_byte *p;
+  /* Amd64 has 16 xmm regs; I386 has 8 xmm regs.  */
+  int num_xmm_registers = register_size (regcache->tdesc, 0) == 8 ? 16 : 8;
+
+  /* The supported bits in `xstat_bv' are 8 bytes.  Clear part in
+     vector registers if its bit in xstat_bv is zero.  */
+  clear_bv = (~fp->xstate_bv) & x86_xcr0;
+
+  /* Check if any x87 registers are changed.  */
+  if ((x86_xcr0 & X86_XSTATE_X87) != 0)
+    {
+      int st0_regnum = find_regno (regcache->tdesc, "st0");
+
+      if ((clear_bv & X86_XSTATE_X87) != 0)
+	{
+	  for (i = 0; i < 8; i++)
+	    supply_register_zeroed (regcache, i + st0_regnum);
+	}
+      else
+	{
+	  p = (gdb_byte *) &fp->st_space[0];
+	  for (i = 0; i < 8; i++)
+	    supply_register (regcache, i + st0_regnum, p + i * 16);
+	}
+    }
+
+  if ((x86_xcr0 & X86_XSTATE_SSE) != 0)
+    {
+      int xmm0_regnum = find_regno (regcache->tdesc, "xmm0");
+
+      if ((clear_bv & X86_XSTATE_SSE))
+	{
+	  for (i = 0; i < num_xmm_registers; i++)
+	    supply_register_zeroed (regcache, i + xmm0_regnum);
+	}
+      else
+	{
+	  p = (gdb_byte *) &fp->xmm_space[0];
+	  for (i = 0; i < num_xmm_registers; i++)
+	    supply_register (regcache, i + xmm0_regnum, p + i * 16);
+	}
+    }
+
+  if ((x86_xcr0 & X86_XSTATE_AVX) != 0)
+    {
+      int ymm0h_regnum = find_regno (regcache->tdesc, "ymm0h");
+
+      if ((clear_bv & X86_XSTATE_AVX) != 0)
+	{
+	  for (i = 0; i < num_xmm_registers; i++)
+	    supply_register_zeroed (regcache, i + ymm0h_regnum);
+	}
+      else
+	{
+	  p = (gdb_byte *) &fp->ymmh_space[0];
+	  for (i = 0; i < num_xmm_registers; i++)
+	    supply_register (regcache, i + ymm0h_regnum, p + i * 16);
+	}
+    }
+
+  if ((x86_xcr0 & X86_XSTATE_BNDREGS))
+    {
+      int bnd0r_regnum = find_regno (regcache->tdesc, "bnd0raw");
+
+
+      if ((clear_bv & X86_XSTATE_BNDREGS) != 0)
+	{
+	  for (i = 0; i < num_mpx_bnd_registers; i++)
+	    supply_register_zeroed (regcache, i + bnd0r_regnum);
+	}
+      else
+	{
+	  p = (gdb_byte *) &fp->mpx_bnd_space[0];
+	  for (i = 0; i < num_mpx_bnd_registers; i++)
+	    supply_register (regcache, i + bnd0r_regnum, p + i * 16);
+	}
+
+    }
+
+  if ((x86_xcr0 & X86_XSTATE_BNDCFG))
+    {
+      int bndcfg_regnum = find_regno (regcache->tdesc, "bndcfgu");
+
+      if ((clear_bv & X86_XSTATE_BNDCFG) != 0)
+	{
+	  for (i = 0; i < num_mpx_cfg_registers; i++)
+	    supply_register_zeroed (regcache, i + bndcfg_regnum);
+	}
+      else
+	{
+	  p = (gdb_byte *) &fp->mpx_cfg_space[0];
+	  for (i = 0; i < num_mpx_cfg_registers; i++)
+	    supply_register (regcache, i + bndcfg_regnum, p + i * 8);
+	}
+    }
+
+  if ((x86_xcr0 & X86_XSTATE_K) != 0)
+    {
+      int k0_regnum = find_regno (regcache->tdesc, "k0");
+
+      if ((clear_bv & X86_XSTATE_K) != 0)
+	{
+	  for (i = 0; i < num_avx512_k_registers; i++)
+	    supply_register_zeroed (regcache, i + k0_regnum);
+	}
+      else
+	{
+	  p = (gdb_byte *) &fp->k_space[0];
+	  for (i = 0; i < num_avx512_k_registers; i++)
+	    supply_register (regcache, i + k0_regnum, p + i * 8);
+	}
+    }
+
+  if ((x86_xcr0 & X86_XSTATE_ZMM_H) != 0)
+    {
+      int zmm0h_regnum = find_regno (regcache->tdesc, "zmm0h");
+
+      if ((clear_bv & X86_XSTATE_ZMM_H) != 0)
+	{
+	  for (i = 0; i < num_avx512_zmmh_low_registers; i++)
+	    supply_register_zeroed (regcache, i + zmm0h_regnum);
+	}
+      else
+	{
+	  p = (gdb_byte *) &fp->zmmh_low_space[0];
+	  for (i = 0; i < num_avx512_zmmh_low_registers; i++)
+	    supply_register (regcache, i + zmm0h_regnum, p + i * 32);
+	}
+    }
+
+  if ((x86_xcr0 & X86_XSTATE_ZMM) != 0)
+    {
+      int zmm16h_regnum = find_regno (regcache->tdesc, "zmm16h");
+      int ymm16h_regnum = find_regno (regcache->tdesc, "ymm16h");
+      int xmm16_regnum = find_regno (regcache->tdesc, "xmm16");
+
+      if ((clear_bv & X86_XSTATE_ZMM) != 0)
+	{
+	  for (i = 0; i < num_avx512_zmmh_high_registers; i++)
+	    supply_register_zeroed (regcache, i + zmm16h_regnum);
+	  for (i = 0; i < num_avx512_ymmh_registers; i++)
+	    supply_register_zeroed (regcache, i + ymm16h_regnum);
+	  for (i = 0; i < num_avx512_xmm_registers; i++)
+	    supply_register_zeroed (regcache, i + xmm16_regnum);
+	}
+      else
+	{
+	  p = (gdb_byte *) &fp->zmmh_high_space[0];
+	  for (i = 0; i < num_avx512_zmmh_high_registers; i++)
+	    supply_register (regcache, i + zmm16h_regnum, p + 32 + i * 64);
+	  for (i = 0; i < num_avx512_ymmh_registers; i++)
+	    supply_register (regcache, i + ymm16h_regnum, p + 16 + i * 64);
+	  for (i = 0; i < num_avx512_xmm_registers; i++)
+	    supply_register (regcache, i + xmm16_regnum, p + i * 64);
+	}
+    }
+
+  if ((x86_xcr0 & X86_XSTATE_PKRU) != 0)
+    {
+      int pkru_regnum = find_regno (regcache->tdesc, "pkru");
+
+      if ((clear_bv & X86_XSTATE_PKRU) != 0)
+	{
+	  for (i = 0; i < num_pkeys_registers; i++)
+	    supply_register_zeroed (regcache, i + pkru_regnum);
+	}
+      else
+	{
+	  p = (gdb_byte *) &fp->pkru_space[0];
+	  for (i = 0; i < num_pkeys_registers; i++)
+	    supply_register (regcache, i + pkru_regnum, p + i * 4);
+	}
+    }
+
+  if ((clear_bv & (X86_XSTATE_SSE | X86_XSTATE_AVX))
+      == (X86_XSTATE_SSE | X86_XSTATE_AVX))
+    {
+      unsigned int default_mxcsr = I387_MXCSR_INIT_VAL;
+      supply_register_by_name (regcache, "mxcsr", &default_mxcsr);
+    }
+  else
+    supply_register_by_name (regcache, "mxcsr", &fp->mxcsr);
+
+  if ((clear_bv & X86_XSTATE_X87) != 0)
+    {
+      supply_register_by_name_zeroed (regcache, "fioff");
+      supply_register_by_name_zeroed (regcache, "fooff");
+
+      val = I387_FCTRL_INIT_VAL;
+      supply_register_by_name (regcache, "fctrl", &val);
+
+      supply_register_by_name_zeroed (regcache, "fstat");
+
+      val = 0xFFFF;
+      supply_register_by_name (regcache, "ftag", &val);
+
+      supply_register_by_name_zeroed (regcache, "fiseg");
+      supply_register_by_name_zeroed (regcache, "foseg");
+      supply_register_by_name_zeroed (regcache, "fop");
+    }
+  else
+    {
+      supply_register_by_name (regcache, "fioff", &fp->fioff);
+      supply_register_by_name (regcache, "fooff", &fp->fooff);
+
+      /* Some registers are 16-bit.  */
+      val = fp->fctrl & 0xFFFF;
+      supply_register_by_name (regcache, "fctrl", &val);
+
+      val = fp->fstat & 0xFFFF;
+      supply_register_by_name (regcache, "fstat", &val);
+
+      /* Generate the form of ftag data that GDB expects.  */
+      top = (fp->fstat >> 11) & 0x7;
+      val = 0;
+      for (i = 7; i >= 0; i--)
+	{
+	  int tag;
+	  if (fp->ftag & (1 << i))
+	    tag = i387_ftag (fxp, (i + 8 - top) % 8);
+	  else
+	    tag = 3;
+	  val |= tag << (2 * i);
+	}
+      supply_register_by_name (regcache, "ftag", &val);
+
+      val = fp->fiseg & 0xFFFF;
+      supply_register_by_name (regcache, "fiseg", &val);
+
+      val = fp->foseg & 0xFFFF;
+      supply_register_by_name (regcache, "foseg", &val);
+
+      val = (fp->fop) & 0x7FF;
+      supply_register_by_name (regcache, "fop", &val);
+    }
+}
+
+/* Default to SSE.  */
+unsigned long long x86_xcr0 = X86_XSTATE_SSE_MASK;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/i387-fp.h ./gdbserver/i387-fp.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/i387-fp.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/i387-fp.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,33 @@
+/* i387-specific utility functions, for the remote server for GDB.
+   Copyright (C) 2000-2021 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 GDBSERVER_I387_FP_H
+#define GDBSERVER_I387_FP_H
+
+void i387_cache_to_fsave (struct regcache *regcache, void *buf);
+void i387_fsave_to_cache (struct regcache *regcache, const void *buf);
+
+void i387_cache_to_fxsave (struct regcache *regcache, void *buf);
+void i387_fxsave_to_cache (struct regcache *regcache, const void *buf);
+
+void i387_cache_to_xsave (struct regcache *regcache, void *buf);
+void i387_xsave_to_cache (struct regcache *regcache, const void *buf);
+
+extern unsigned long long x86_xcr0;
+
+#endif /* GDBSERVER_I387_FP_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/inferiors.cc ./gdbserver/inferiors.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/inferiors.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/inferiors.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,254 @@
+/* Inferior process information for the remote server for GDB.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
+
+   Contributed by MontaVista Software.
+
+   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 "server.h"
+#include "gdbsupport/common-inferior.h"
+#include "gdbthread.h"
+#include "dll.h"
+
+std::list<process_info *> all_processes;
+std::list<thread_info *> all_threads;
+
+struct thread_info *current_thread;
+
+/* The current working directory used to start the inferior.  */
+static const char *current_inferior_cwd = NULL;
+
+struct thread_info *
+add_thread (ptid_t thread_id, void *target_data)
+{
+  struct thread_info *new_thread = XCNEW (struct thread_info);
+
+  new_thread->id = thread_id;
+  new_thread->last_resume_kind = resume_continue;
+  new_thread->last_status.kind = TARGET_WAITKIND_IGNORE;
+
+  all_threads.push_back (new_thread);
+
+  if (current_thread == NULL)
+    current_thread = new_thread;
+
+  new_thread->target_data = target_data;
+
+  return new_thread;
+}
+
+/* See gdbthread.h.  */
+
+struct thread_info *
+get_first_thread (void)
+{
+  if (!all_threads.empty ())
+    return all_threads.front ();
+  else
+    return NULL;
+}
+
+struct thread_info *
+find_thread_ptid (ptid_t ptid)
+{
+  return find_thread ([&] (thread_info *thread) {
+    return thread->id == ptid;
+  });
+}
+
+/* Find a thread associated with the given PROCESS, or NULL if no
+   such thread exists.  */
+
+static struct thread_info *
+find_thread_process (const struct process_info *const process)
+{
+  return find_any_thread_of_pid (process->pid);
+}
+
+/* See gdbthread.h.  */
+
+struct thread_info *
+find_any_thread_of_pid (int pid)
+{
+  return find_thread (pid, [] (thread_info *thread) {
+    return true;
+  });
+}
+
+static void
+free_one_thread (thread_info *thread)
+{
+  free_register_cache (thread_regcache_data (thread));
+  free (thread);
+}
+
+void
+remove_thread (struct thread_info *thread)
+{
+  if (thread->btrace != NULL)
+    target_disable_btrace (thread->btrace);
+
+  discard_queued_stop_replies (ptid_of (thread));
+  all_threads.remove (thread);
+  free_one_thread (thread);
+  if (current_thread == thread)
+    current_thread = NULL;
+}
+
+void *
+thread_target_data (struct thread_info *thread)
+{
+  return thread->target_data;
+}
+
+struct regcache *
+thread_regcache_data (struct thread_info *thread)
+{
+  return thread->regcache_data;
+}
+
+void
+set_thread_regcache_data (struct thread_info *thread, struct regcache *data)
+{
+  thread->regcache_data = data;
+}
+
+void
+clear_inferiors (void)
+{
+  for_each_thread (free_one_thread);
+  all_threads.clear ();
+
+  clear_dlls ();
+
+  current_thread = NULL;
+}
+
+struct process_info *
+add_process (int pid, int attached)
+{
+  process_info *process = new process_info (pid, attached);
+
+  all_processes.push_back (process);
+
+  return process;
+}
+
+/* Remove a process from the common process list and free the memory
+   allocated for it.
+   The caller is responsible for freeing private data first.  */
+
+void
+remove_process (struct process_info *process)
+{
+  clear_symbol_cache (&process->symbol_cache);
+  free_all_breakpoints (process);
+  gdb_assert (find_thread_process (process) == NULL);
+  all_processes.remove (process);
+  delete process;
+}
+
+process_info *
+find_process_pid (int pid)
+{
+  return find_process ([&] (process_info *process) {
+    return process->pid == pid;
+  });
+}
+
+/* Get the first process in the process list, or NULL if the list is empty.  */
+
+process_info *
+get_first_process (void)
+{
+  if (!all_processes.empty ())
+    return all_processes.front ();
+  else
+    return NULL;
+}
+
+/* Return non-zero if there are any inferiors that we have created
+   (as opposed to attached-to).  */
+
+int
+have_started_inferiors_p (void)
+{
+  return find_process ([] (process_info *process) {
+    return !process->attached;
+  }) != NULL;
+}
+
+/* Return non-zero if there are any inferiors that we have attached to.  */
+
+int
+have_attached_inferiors_p (void)
+{
+  return find_process ([] (process_info *process) {
+    return process->attached;
+  }) != NULL;
+}
+
+struct process_info *
+get_thread_process (const struct thread_info *thread)
+{
+  return find_process_pid (thread->id.pid ());
+}
+
+struct process_info *
+current_process (void)
+{
+  gdb_assert (current_thread != NULL);
+  return get_thread_process (current_thread);
+}
+
+/* See gdbsupport/common-gdbthread.h.  */
+
+void
+switch_to_thread (process_stratum_target *ops, ptid_t ptid)
+{
+  gdb_assert (ptid != minus_one_ptid);
+  current_thread = find_thread_ptid (ptid);
+}
+
+/* See inferiors.h.  */
+
+void
+switch_to_process (process_info *proc)
+{
+  int pid = pid_of (proc);
+
+  current_thread = find_any_thread_of_pid (pid);
+}
+
+/* See gdbsupport/common-inferior.h.  */
+
+const char *
+get_inferior_cwd ()
+{
+  return current_inferior_cwd;
+}
+
+/* See gdbsupport/common-inferior.h.  */
+
+void
+set_inferior_cwd (const char *cwd)
+{
+  xfree ((void *) current_inferior_cwd);
+  if (cwd != NULL)
+    current_inferior_cwd = xstrdup (cwd);
+  else
+    current_inferior_cwd = NULL;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/inferiors.h ./gdbserver/inferiors.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/inferiors.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/inferiors.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,150 @@
+/* Inferior process information for the remote server for GDB.
+   Copyright (C) 1993-2021 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 GDBSERVER_INFERIORS_H
+#define GDBSERVER_INFERIORS_H
+
+#include "gdbsupport/gdb_vecs.h"
+#include <list>
+
+struct thread_info;
+struct regcache;
+struct target_desc;
+struct sym_cache;
+struct breakpoint;
+struct raw_breakpoint;
+struct fast_tracepoint_jump;
+struct process_info_private;
+
+struct process_info
+{
+  process_info (int pid_, int attached_)
+  : pid (pid_), attached (attached_)
+  {}
+
+  /* This process' pid.  */
+  int pid;
+
+  /* Nonzero if this child process was attached rather than
+     spawned.  */
+  int attached;
+
+  /* True if GDB asked us to detach from this process, but we remained
+     attached anyway.  */
+  int gdb_detached = 0;
+
+  /* The symbol cache.  */
+  struct sym_cache *symbol_cache = NULL;
+
+  /* The list of memory breakpoints.  */
+  struct breakpoint *breakpoints = NULL;
+
+  /* The list of raw memory breakpoints.  */
+  struct raw_breakpoint *raw_breakpoints = NULL;
+
+  /* The list of installed fast tracepoints.  */
+  struct fast_tracepoint_jump *fast_tracepoint_jumps = NULL;
+
+  /* The list of syscalls to report, or just a single element, ANY_SYSCALL,
+     for unfiltered syscall reporting.  */
+  std::vector<int> syscalls_to_catch;
+
+  const struct target_desc *tdesc = NULL;
+
+  /* Private target data.  */
+  struct process_info_private *priv = NULL;
+};
+
+/* Get the pid of PROC.  */
+
+static inline int
+pid_of (const process_info *proc)
+{
+  return proc->pid;
+}
+
+/* Return a pointer to the process that corresponds to the current
+   thread (current_thread).  It is an error to call this if there is
+   no current thread selected.  */
+
+struct process_info *current_process (void);
+struct process_info *get_thread_process (const struct thread_info *);
+
+extern std::list<process_info *> all_processes;
+
+/* Invoke FUNC for each process.  */
+
+template <typename Func>
+static void
+for_each_process (Func func)
+{
+  std::list<process_info *>::iterator next, cur = all_processes.begin ();
+
+  while (cur != all_processes.end ())
+    {
+      next = cur;
+      next++;
+      func (*cur);
+      cur = next;
+    }
+}
+
+/* Find the first process for which FUNC returns true.  Return NULL if no
+   process satisfying FUNC is found.  */
+
+template <typename Func>
+static process_info *
+find_process (Func func)
+{
+  std::list<process_info *>::iterator next, cur = all_processes.begin ();
+
+  while (cur != all_processes.end ())
+    {
+      next = cur;
+      next++;
+
+      if (func (*cur))
+        return *cur;
+
+      cur = next;
+    }
+
+  return NULL;
+}
+
+extern struct thread_info *current_thread;
+
+/* Return the first process in the processes list.  */
+struct process_info *get_first_process (void);
+
+struct process_info *add_process (int pid, int attached);
+void remove_process (struct process_info *process);
+struct process_info *find_process_pid (int pid);
+int have_started_inferiors_p (void);
+int have_attached_inferiors_p (void);
+
+/* Switch to a thread of PROC.  */
+void switch_to_process (process_info *proc);
+
+void clear_inferiors (void);
+
+void *thread_target_data (struct thread_info *);
+struct regcache *thread_regcache_data (struct thread_info *);
+void set_thread_regcache_data (struct thread_info *, struct regcache *);
+
+#endif /* GDBSERVER_INFERIORS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch32-low.cc ./gdbserver/linux-aarch32-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch32-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-aarch32-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,303 @@
+/* Copyright (C) 1995-2021 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 "server.h"
+#include "arch/arm.h"
+#include "arch/arm-linux.h"
+#include "linux-low.h"
+#include "linux-aarch32-low.h"
+
+#include <sys/ptrace.h>
+/* Don't include elf.h if linux/elf.h got included by gdb_proc_service.h.
+   On Bionic elf.h and linux/elf.h have conflicting definitions.  */
+#ifndef ELFMAG0
+#include <elf.h>
+#endif
+
+/* Correct in either endianness.  */
+#define arm_abi_breakpoint 0xef9f0001UL
+
+/* For new EABI binaries.  We recognize it regardless of which ABI
+   is used for gdbserver, so single threaded debugging should work
+   OK, but for multi-threaded debugging we only insert the current
+   ABI's breakpoint instruction.  For now at least.  */
+#define arm_eabi_breakpoint 0xe7f001f0UL
+
+#if (defined __ARM_EABI__ || defined __aarch64__)
+static const unsigned long arm_breakpoint = arm_eabi_breakpoint;
+#else
+static const unsigned long arm_breakpoint = arm_abi_breakpoint;
+#endif
+
+#define arm_breakpoint_len 4
+static const unsigned short thumb_breakpoint = 0xde01;
+#define thumb_breakpoint_len 2
+static const unsigned short thumb2_breakpoint[] = { 0xf7f0, 0xa000 };
+#define thumb2_breakpoint_len 4
+
+/* Some older versions of GNU/Linux and Android do not define
+   the following macros.  */
+#ifndef NT_ARM_VFP
+#define NT_ARM_VFP 0x400
+#endif
+
+/* Collect GP registers from REGCACHE to buffer BUF.  */
+
+void
+arm_fill_gregset (struct regcache *regcache, void *buf)
+{
+  int i;
+  uint32_t *regs = (uint32_t *) buf;
+  uint32_t cpsr = regs[ARM_CPSR_GREGNUM];
+
+  for (i = ARM_A1_REGNUM; i <= ARM_PC_REGNUM; i++)
+    collect_register (regcache, i, &regs[i]);
+
+  collect_register (regcache, ARM_PS_REGNUM, &regs[ARM_CPSR_GREGNUM]);
+  /* Keep reserved bits bit 20 to bit 23.  */
+  regs[ARM_CPSR_GREGNUM] = ((regs[ARM_CPSR_GREGNUM] & 0xff0fffff)
+			    | (cpsr & 0x00f00000));
+}
+
+/* Supply GP registers contents, stored in BUF, to REGCACHE.  */
+
+void
+arm_store_gregset (struct regcache *regcache, const void *buf)
+{
+  int i;
+  char zerobuf[8];
+  const uint32_t *regs = (const uint32_t *) buf;
+  uint32_t cpsr = regs[ARM_CPSR_GREGNUM];
+
+  memset (zerobuf, 0, 8);
+  for (i = ARM_A1_REGNUM; i <= ARM_PC_REGNUM; i++)
+    supply_register (regcache, i, &regs[i]);
+
+  for (; i < ARM_PS_REGNUM; i++)
+    supply_register (regcache, i, zerobuf);
+
+  /* Clear reserved bits bit 20 to bit 23.  */
+  cpsr &= 0xff0fffff;
+  supply_register (regcache, ARM_PS_REGNUM, &cpsr);
+}
+
+/* Collect NUM number of VFP registers from REGCACHE to buffer BUF.  */
+
+void
+arm_fill_vfpregset_num (struct regcache *regcache, void *buf, int num)
+{
+  int i, base;
+
+  gdb_assert (num == 16 || num == 32);
+
+  base = find_regno (regcache->tdesc, "d0");
+  for (i = 0; i < num; i++)
+    collect_register (regcache, base + i, (char *) buf + i * 8);
+
+  collect_register_by_name (regcache, "fpscr", (char *) buf + 32 * 8);
+}
+
+/* Supply NUM number of VFP registers contents, stored in BUF, to
+   REGCACHE.  */
+
+void
+arm_store_vfpregset_num (struct regcache *regcache, const void *buf, int num)
+{
+  int i, base;
+
+  gdb_assert (num == 16 || num == 32);
+
+  base = find_regno (regcache->tdesc, "d0");
+  for (i = 0; i < num; i++)
+    supply_register (regcache, base + i, (char *) buf + i * 8);
+
+  supply_register_by_name (regcache, "fpscr", (char *) buf + 32 * 8);
+}
+
+static void
+arm_fill_vfpregset (struct regcache *regcache, void *buf)
+{
+  arm_fill_vfpregset_num (regcache, buf, 32);
+}
+
+static void
+arm_store_vfpregset (struct regcache *regcache, const void *buf)
+{
+  arm_store_vfpregset_num (regcache, buf, 32);
+}
+
+/* Register sets with using PTRACE_GETREGSET.  */
+
+static struct regset_info aarch32_regsets[] = {
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
+    ARM_CORE_REGS_SIZE + ARM_INT_REGISTER_SIZE, GENERAL_REGS,
+    arm_fill_gregset, arm_store_gregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_VFP, ARM_VFP3_REGS_SIZE,
+    EXTENDED_REGS,
+    arm_fill_vfpregset, arm_store_vfpregset },
+  NULL_REGSET
+};
+
+static struct regsets_info aarch32_regsets_info =
+  {
+    aarch32_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+struct regs_info regs_info_aarch32 =
+  {
+    NULL, /* regset_bitmap */
+    NULL, /* usrregs */
+    &aarch32_regsets_info
+  };
+
+/* Returns 1 if the current instruction set is thumb, 0 otherwise.  */
+
+int
+arm_is_thumb_mode (void)
+{
+  struct regcache *regcache = get_thread_regcache (current_thread, 1);
+  unsigned long cpsr;
+
+  collect_register_by_name (regcache, "cpsr", &cpsr);
+
+  if (cpsr & 0x20)
+    return 1;
+  else
+    return 0;
+}
+
+/* Returns 1 if there is a software breakpoint at location.  */
+
+int
+arm_breakpoint_at (CORE_ADDR where)
+{
+  if (arm_is_thumb_mode ())
+    {
+      /* Thumb mode.  */
+      unsigned short insn;
+
+      the_target->read_memory (where, (unsigned char *) &insn, 2);
+      if (insn == thumb_breakpoint)
+	return 1;
+
+      if (insn == thumb2_breakpoint[0])
+	{
+	  the_target->read_memory (where + 2, (unsigned char *) &insn, 2);
+	  if (insn == thumb2_breakpoint[1])
+	    return 1;
+	}
+    }
+  else
+    {
+      /* ARM mode.  */
+      unsigned long insn;
+
+      the_target->read_memory (where, (unsigned char *) &insn, 4);
+      if (insn == arm_abi_breakpoint)
+	return 1;
+
+      if (insn == arm_eabi_breakpoint)
+	return 1;
+    }
+
+  return 0;
+}
+
+/* Implementation of linux_target_ops method "breakpoint_kind_from_pc".
+
+   Determine the type and size of breakpoint to insert at PCPTR.  Uses the
+   program counter value to determine whether a 16-bit or 32-bit breakpoint
+   should be used.  It returns the breakpoint's kind, and adjusts the program
+   counter (if necessary) to point to the actual memory location where the
+   breakpoint should be inserted.  */
+
+int
+arm_breakpoint_kind_from_pc (CORE_ADDR *pcptr)
+{
+  if (IS_THUMB_ADDR (*pcptr))
+    {
+      gdb_byte buf[2];
+
+      *pcptr = UNMAKE_THUMB_ADDR (*pcptr);
+
+      /* Check whether we are replacing a thumb2 32-bit instruction.  */
+      if (target_read_memory (*pcptr, buf, 2) == 0)
+	{
+	  unsigned short inst1 = 0;
+
+	  target_read_memory (*pcptr, (gdb_byte *) &inst1, 2);
+	  if (thumb_insn_size (inst1) == 4)
+	    return ARM_BP_KIND_THUMB2;
+	}
+      return ARM_BP_KIND_THUMB;
+    }
+  else
+    return ARM_BP_KIND_ARM;
+}
+
+/*  Implementation of the linux_target_ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+arm_sw_breakpoint_from_kind (int kind , int *size)
+{
+  *size = arm_breakpoint_len;
+  /* Define an ARM-mode breakpoint; we only set breakpoints in the C
+     library, which is most likely to be ARM.  If the kernel supports
+     clone events, we will never insert a breakpoint, so even a Thumb
+     C library will work; so will mixing EABI/non-EABI gdbserver and
+     application.  */
+  switch (kind)
+    {
+      case ARM_BP_KIND_THUMB:
+	*size = thumb_breakpoint_len;
+	return (gdb_byte *) &thumb_breakpoint;
+      case ARM_BP_KIND_THUMB2:
+	*size = thumb2_breakpoint_len;
+	return (gdb_byte *) &thumb2_breakpoint;
+      case ARM_BP_KIND_ARM:
+	*size = arm_breakpoint_len;
+	return (const gdb_byte *) &arm_breakpoint;
+      default:
+       return NULL;
+    }
+  return NULL;
+}
+
+/* Implementation of the linux_target_ops method
+   "breakpoint_kind_from_current_state".  */
+
+int
+arm_breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
+{
+  if (arm_is_thumb_mode ())
+    {
+      *pcptr = MAKE_THUMB_ADDR (*pcptr);
+      return arm_breakpoint_kind_from_pc (pcptr);
+    }
+  else
+    {
+      return arm_breakpoint_kind_from_pc (pcptr);
+    }
+}
+
+void
+initialize_low_arch_aarch32 (void)
+{
+  initialize_regsets_info (&aarch32_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch32-low.h ./gdbserver/linux-aarch32-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch32-low.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-aarch32-low.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,39 @@
+/* Copyright (C) 1995-2021 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 GDBSERVER_LINUX_AARCH32_LOW_H
+#define GDBSERVER_LINUX_AARCH32_LOW_H
+
+extern struct regs_info regs_info_aarch32;
+
+void arm_fill_gregset (struct regcache *regcache, void *buf);
+void arm_store_gregset (struct regcache *regcache, const void *buf);
+void arm_fill_vfpregset_num (struct regcache *regcache, void *buf, int num);
+void arm_store_vfpregset_num (struct regcache *regcache, const void *buf,
+			      int num);
+
+int arm_breakpoint_kind_from_pc (CORE_ADDR *pcptr);
+const gdb_byte *arm_sw_breakpoint_from_kind (int kind , int *size);
+int arm_breakpoint_kind_from_current_state (CORE_ADDR *pcptr);
+int arm_breakpoint_at (CORE_ADDR where);
+
+void initialize_low_arch_aarch32 (void);
+
+void init_registers_arm_with_neon (void);
+int arm_is_thumb_mode (void);
+
+#endif /* GDBSERVER_LINUX_AARCH32_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch32-tdesc.cc ./gdbserver/linux-aarch32-tdesc.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch32-tdesc.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-aarch32-tdesc.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,50 @@
+/* Copyright (C) 2019-2021 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 "server.h"
+
+#include "linux-aarch32-tdesc.h"
+
+#include "tdesc.h"
+#include "arch/aarch32.h"
+#include <inttypes.h>
+
+static struct target_desc *tdesc_aarch32;
+
+/* See linux-aarch32-tdesc.h.  */
+
+const target_desc *
+aarch32_linux_read_description ()
+{
+  if (tdesc_aarch32 == nullptr)
+    {
+      tdesc_aarch32 = aarch32_create_target_description ();
+
+      static const char *expedite_regs[] = { "r11", "sp", "pc", 0 };
+      init_target_desc (tdesc_aarch32, expedite_regs);
+    }
+  return tdesc_aarch32;
+}
+
+/* See linux-aarch32-tdesc.h.  */
+
+bool
+is_aarch32_linux_description (const target_desc *tdesc)
+{
+  gdb_assert (tdesc != nullptr);
+  return tdesc == tdesc_aarch32;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch32-tdesc.h ./gdbserver/linux-aarch32-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch32-tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-aarch32-tdesc.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,29 @@
+/* Copyright (C) 2019-2021 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 GDBSERVER_LINUX_AARCH32_TDESC_H
+#define GDBSERVER_LINUX_AARCH32_TDESC_H
+
+/* Return the AArch32 target description.  */
+
+const target_desc * aarch32_linux_read_description ();
+
+/* Return true if TDESC is the AArch32 target description.  */
+
+bool is_aarch32_linux_description (const target_desc *tdesc);
+
+#endif /* linux-aarch32-tdesc.h.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch64-ipa.cc ./gdbserver/linux-aarch64-ipa.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch64-ipa.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-aarch64-ipa.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,209 @@
+/* GNU/Linux/AArch64 specific low level interface, for the in-process
+   agent library for GDB.
+
+   Copyright (C) 2015-2021 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 "server.h"
+#include <sys/mman.h>
+#include "tracepoint.h"
+#include <elf.h>
+#ifdef HAVE_GETAUXVAL
+#include <sys/auxv.h>
+#endif
+#include "linux-aarch64-tdesc.h"
+
+/* Each register saved by the jump pad is in a 16 byte cell.  */
+#define FT_CR_SIZE 16
+
+#define FT_CR_FPCR	0
+#define FT_CR_FPSR	1
+#define FT_CR_CPSR	2
+#define FT_CR_PC	3
+#define FT_CR_SP	4
+#define FT_CR_X0	5
+#define FT_CR_GPR(n)	(FT_CR_X0 + (n))
+#define FT_CR_FPR(n)	(FT_CR_GPR (31) + (n))
+
+/* Mapping between registers collected by the jump pad and GDB's register
+   array layout used by regcache.
+
+   See linux-aarch64-low.c (aarch64_install_fast_tracepoint_jump_pad) for
+   more details.  */
+
+static const int aarch64_ft_collect_regmap[] = {
+  FT_CR_GPR (0),
+  FT_CR_GPR (1),
+  FT_CR_GPR (2),
+  FT_CR_GPR (3),
+  FT_CR_GPR (4),
+  FT_CR_GPR (5),
+  FT_CR_GPR (6),
+  FT_CR_GPR (7),
+  FT_CR_GPR (8),
+  FT_CR_GPR (9),
+  FT_CR_GPR (10),
+  FT_CR_GPR (11),
+  FT_CR_GPR (12),
+  FT_CR_GPR (13),
+  FT_CR_GPR (14),
+  FT_CR_GPR (15),
+  FT_CR_GPR (16),
+  FT_CR_GPR (17),
+  FT_CR_GPR (18),
+  FT_CR_GPR (19),
+  FT_CR_GPR (20),
+  FT_CR_GPR (21),
+  FT_CR_GPR (22),
+  FT_CR_GPR (23),
+  FT_CR_GPR (24),
+  FT_CR_GPR (25),
+  FT_CR_GPR (26),
+  FT_CR_GPR (27),
+  FT_CR_GPR (28),
+  /* FP */
+  FT_CR_GPR (29),
+  /* LR */
+  FT_CR_GPR (30),
+  FT_CR_SP,
+  FT_CR_PC,
+  FT_CR_CPSR,
+  FT_CR_FPR (0),
+  FT_CR_FPR (1),
+  FT_CR_FPR (2),
+  FT_CR_FPR (3),
+  FT_CR_FPR (4),
+  FT_CR_FPR (5),
+  FT_CR_FPR (6),
+  FT_CR_FPR (7),
+  FT_CR_FPR (8),
+  FT_CR_FPR (9),
+  FT_CR_FPR (10),
+  FT_CR_FPR (11),
+  FT_CR_FPR (12),
+  FT_CR_FPR (13),
+  FT_CR_FPR (14),
+  FT_CR_FPR (15),
+  FT_CR_FPR (16),
+  FT_CR_FPR (17),
+  FT_CR_FPR (18),
+  FT_CR_FPR (19),
+  FT_CR_FPR (20),
+  FT_CR_FPR (21),
+  FT_CR_FPR (22),
+  FT_CR_FPR (23),
+  FT_CR_FPR (24),
+  FT_CR_FPR (25),
+  FT_CR_FPR (26),
+  FT_CR_FPR (27),
+  FT_CR_FPR (28),
+  FT_CR_FPR (29),
+  FT_CR_FPR (30),
+  FT_CR_FPR (31),
+  FT_CR_FPSR,
+  FT_CR_FPCR
+};
+
+#define AARCH64_NUM_FT_COLLECT_GREGS \
+  (sizeof (aarch64_ft_collect_regmap) / sizeof(aarch64_ft_collect_regmap[0]))
+
+/* Fill in REGCACHE with registers saved by the jump pad in BUF.  */
+
+void
+supply_fast_tracepoint_registers (struct regcache *regcache,
+				  const unsigned char *buf)
+{
+  int i;
+
+  for (i = 0; i < AARCH64_NUM_FT_COLLECT_GREGS; i++)
+    supply_register (regcache, i,
+		     ((char *) buf)
+		     + (aarch64_ft_collect_regmap[i] * FT_CR_SIZE));
+}
+
+ULONGEST
+get_raw_reg (const unsigned char *raw_regs, int regnum)
+{
+  if (regnum >= AARCH64_NUM_FT_COLLECT_GREGS)
+    return 0;
+
+  return *(ULONGEST *) (raw_regs
+			+ aarch64_ft_collect_regmap[regnum] * FT_CR_SIZE);
+}
+
+/* Return target_desc to use for IPA, given the tdesc index passed by
+   gdbserver.  Index is ignored, since we have only one tdesc
+   at the moment.  SVE and pauth not yet supported.  */
+
+const struct target_desc *
+get_ipa_tdesc (int idx)
+{
+  return aarch64_linux_read_description (0, false);
+}
+
+/* Allocate buffer for the jump pads.  The branch instruction has a reach
+   of +/- 128MiB, and the executable is loaded at 0x400000 (4MiB).
+   To maximize the area of executable that can use tracepoints, try
+   allocating at 0x400000 - size initially, decreasing until we hit
+   a free area.  */
+
+void *
+alloc_jump_pad_buffer (size_t size)
+{
+  uintptr_t addr;
+  uintptr_t exec_base = getauxval (AT_PHDR);
+  int pagesize;
+  void *res;
+
+  if (exec_base == 0)
+    exec_base = 0x400000;
+
+  pagesize = sysconf (_SC_PAGE_SIZE);
+  if (pagesize == -1)
+    perror_with_name ("sysconf");
+
+  addr = exec_base - size;
+
+  /* size should already be page-aligned, but this can't hurt.  */
+  addr &= ~(pagesize - 1);
+
+  /* Search for a free area.  If we hit 0, we're out of luck.  */
+  for (; addr; addr -= pagesize)
+    {
+      /* No MAP_FIXED - we don't want to zap someone's mapping.  */
+      res = mmap ((void *) addr, size,
+		  PROT_READ | PROT_WRITE | PROT_EXEC,
+		  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+      /* If we got what we wanted, return.  */
+      if ((uintptr_t) res == addr)
+	return res;
+
+      /* If we got a mapping, but at a wrong address, undo it.  */
+      if (res != MAP_FAILED)
+	munmap (res, size);
+    }
+
+  return NULL;
+}
+
+void
+initialize_low_tracepoint (void)
+{
+  /* SVE and pauth not yet supported.  */
+  aarch64_linux_read_description (0, false);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch64-low.cc ./gdbserver/linux-aarch64-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch64-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-aarch64-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,3181 @@
+/* GNU/Linux/AArch64 specific low level interface, for the remote server for
+   GDB.
+
+   Copyright (C) 2009-2021 Free Software Foundation, Inc.
+   Contributed by ARM Ltd.
+
+   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 "server.h"
+#include "linux-low.h"
+#include "nat/aarch64-linux.h"
+#include "nat/aarch64-linux-hw-point.h"
+#include "arch/aarch64-insn.h"
+#include "linux-aarch32-low.h"
+#include "elf/common.h"
+#include "ax.h"
+#include "tracepoint.h"
+#include "debug.h"
+
+#include <signal.h>
+#include <sys/user.h>
+#include "nat/gdb_ptrace.h"
+#include <asm/ptrace.h>
+#include <inttypes.h>
+#include <endian.h>
+#include <sys/uio.h>
+
+#include "gdb_proc_service.h"
+#include "arch/aarch64.h"
+#include "linux-aarch32-tdesc.h"
+#include "linux-aarch64-tdesc.h"
+#include "nat/aarch64-sve-linux-ptrace.h"
+#include "tdesc.h"
+
+#ifdef HAVE_SYS_REG_H
+#include <sys/reg.h>
+#endif
+
+/* Linux target op definitions for the AArch64 architecture.  */
+
+class aarch64_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  int breakpoint_kind_from_pc (CORE_ADDR *pcptr) override;
+
+  int breakpoint_kind_from_current_state (CORE_ADDR *pcptr) override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+  bool supports_z_point_type (char z_type) override;
+
+  bool supports_tracepoints () override;
+
+  bool supports_fast_tracepoints () override;
+
+  int install_fast_tracepoint_jump_pad
+    (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector,
+     CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry,
+     CORE_ADDR *trampoline, ULONGEST *trampoline_size,
+     unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size,
+     CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end,
+     char *err) override;
+
+  int get_min_fast_tracepoint_insn_len () override;
+
+  struct emit_ops *emit_ops () override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+
+  int low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+			int size, raw_breakpoint *bp) override;
+
+  int low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+			int size, raw_breakpoint *bp) override;
+
+  bool low_stopped_by_watchpoint () override;
+
+  CORE_ADDR low_stopped_data_address () override;
+
+  bool low_siginfo_fixup (siginfo_t *native, gdb_byte *inf,
+			  int direction) override;
+
+  arch_process_info *low_new_process () override;
+
+  void low_delete_process (arch_process_info *info) override;
+
+  void low_new_thread (lwp_info *) override;
+
+  void low_delete_thread (arch_lwp_info *) override;
+
+  void low_new_fork (process_info *parent, process_info *child) override;
+
+  void low_prepare_to_resume (lwp_info *lwp) override;
+
+  int low_get_thread_area (int lwpid, CORE_ADDR *addrp) override;
+
+  bool low_supports_range_stepping () override;
+
+  bool low_supports_catch_syscall () override;
+
+  void low_get_syscall_trapinfo (regcache *regcache, int *sysno) override;
+};
+
+/* The singleton target ops object.  */
+
+static aarch64_target the_aarch64_target;
+
+bool
+aarch64_target::low_cannot_fetch_register (int regno)
+{
+  gdb_assert_not_reached ("linux target op low_cannot_fetch_register "
+			  "is not implemented by the target");
+}
+
+bool
+aarch64_target::low_cannot_store_register (int regno)
+{
+  gdb_assert_not_reached ("linux target op low_cannot_store_register "
+			  "is not implemented by the target");
+}
+
+void
+aarch64_target::low_prepare_to_resume (lwp_info *lwp)
+{
+  aarch64_linux_prepare_to_resume (lwp);
+}
+
+/* Per-process arch-specific data we want to keep.  */
+
+struct arch_process_info
+{
+  /* Hardware breakpoint/watchpoint data.
+     The reason for them to be per-process rather than per-thread is
+     due to the lack of information in the gdbserver environment;
+     gdbserver is not told that whether a requested hardware
+     breakpoint/watchpoint is thread specific or not, so it has to set
+     each hw bp/wp for every thread in the current process.  The
+     higher level bp/wp management in gdb will resume a thread if a hw
+     bp/wp trap is not expected for it.  Since the hw bp/wp setting is
+     same for each thread, it is reasonable for the data to live here.
+     */
+  struct aarch64_debug_reg_state debug_reg_state;
+};
+
+/* Return true if the size of register 0 is 8 byte.  */
+
+static int
+is_64bit_tdesc (void)
+{
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+
+  return register_size (regcache->tdesc, 0) == 8;
+}
+
+/* Return true if the regcache contains the number of SVE registers.  */
+
+static bool
+is_sve_tdesc (void)
+{
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+
+  return tdesc_contains_feature (regcache->tdesc, "org.gnu.gdb.aarch64.sve");
+}
+
+static void
+aarch64_fill_gregset (struct regcache *regcache, void *buf)
+{
+  struct user_pt_regs *regset = (struct user_pt_regs *) buf;
+  int i;
+
+  for (i = 0; i < AARCH64_X_REGS_NUM; i++)
+    collect_register (regcache, AARCH64_X0_REGNUM + i, &regset->regs[i]);
+  collect_register (regcache, AARCH64_SP_REGNUM, &regset->sp);
+  collect_register (regcache, AARCH64_PC_REGNUM, &regset->pc);
+  collect_register (regcache, AARCH64_CPSR_REGNUM, &regset->pstate);
+}
+
+static void
+aarch64_store_gregset (struct regcache *regcache, const void *buf)
+{
+  const struct user_pt_regs *regset = (const struct user_pt_regs *) buf;
+  int i;
+
+  for (i = 0; i < AARCH64_X_REGS_NUM; i++)
+    supply_register (regcache, AARCH64_X0_REGNUM + i, &regset->regs[i]);
+  supply_register (regcache, AARCH64_SP_REGNUM, &regset->sp);
+  supply_register (regcache, AARCH64_PC_REGNUM, &regset->pc);
+  supply_register (regcache, AARCH64_CPSR_REGNUM, &regset->pstate);
+}
+
+static void
+aarch64_fill_fpregset (struct regcache *regcache, void *buf)
+{
+  struct user_fpsimd_state *regset = (struct user_fpsimd_state *) buf;
+  int i;
+
+  for (i = 0; i < AARCH64_V_REGS_NUM; i++)
+    collect_register (regcache, AARCH64_V0_REGNUM + i, &regset->vregs[i]);
+  collect_register (regcache, AARCH64_FPSR_REGNUM, &regset->fpsr);
+  collect_register (regcache, AARCH64_FPCR_REGNUM, &regset->fpcr);
+}
+
+static void
+aarch64_store_fpregset (struct regcache *regcache, const void *buf)
+{
+  const struct user_fpsimd_state *regset
+    = (const struct user_fpsimd_state *) buf;
+  int i;
+
+  for (i = 0; i < AARCH64_V_REGS_NUM; i++)
+    supply_register (regcache, AARCH64_V0_REGNUM + i, &regset->vregs[i]);
+  supply_register (regcache, AARCH64_FPSR_REGNUM, &regset->fpsr);
+  supply_register (regcache, AARCH64_FPCR_REGNUM, &regset->fpcr);
+}
+
+/* Store the pauth registers to regcache.  */
+
+static void
+aarch64_store_pauthregset (struct regcache *regcache, const void *buf)
+{
+  uint64_t *pauth_regset = (uint64_t *) buf;
+  int pauth_base = find_regno (regcache->tdesc, "pauth_dmask");
+
+  if (pauth_base == 0)
+    return;
+
+  supply_register (regcache, AARCH64_PAUTH_DMASK_REGNUM (pauth_base),
+		   &pauth_regset[0]);
+  supply_register (regcache, AARCH64_PAUTH_CMASK_REGNUM (pauth_base),
+		   &pauth_regset[1]);
+}
+
+bool
+aarch64_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+/* Implementation of linux target ops method "low_get_pc".  */
+
+CORE_ADDR
+aarch64_target::low_get_pc (regcache *regcache)
+{
+  if (register_size (regcache->tdesc, 0) == 8)
+    return linux_get_pc_64bit (regcache);
+  else
+    return linux_get_pc_32bit (regcache);
+}
+
+/* Implementation of linux target ops method "low_set_pc".  */
+
+void
+aarch64_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  if (register_size (regcache->tdesc, 0) == 8)
+    linux_set_pc_64bit (regcache, pc);
+  else
+    linux_set_pc_32bit (regcache, pc);
+}
+
+#define aarch64_breakpoint_len 4
+
+/* AArch64 BRK software debug mode instruction.
+   This instruction needs to match gdb/aarch64-tdep.c
+   (aarch64_default_breakpoint).  */
+static const gdb_byte aarch64_breakpoint[] = {0x00, 0x00, 0x20, 0xd4};
+
+/* Implementation of linux target ops method "low_breakpoint_at".  */
+
+bool
+aarch64_target::low_breakpoint_at (CORE_ADDR where)
+{
+  if (is_64bit_tdesc ())
+    {
+      gdb_byte insn[aarch64_breakpoint_len];
+
+      read_memory (where, (unsigned char *) &insn, aarch64_breakpoint_len);
+      if (memcmp (insn, aarch64_breakpoint, aarch64_breakpoint_len) == 0)
+	return true;
+
+      return false;
+    }
+  else
+    return arm_breakpoint_at (where);
+}
+
+static void
+aarch64_init_debug_reg_state (struct aarch64_debug_reg_state *state)
+{
+  int i;
+
+  for (i = 0; i < AARCH64_HBP_MAX_NUM; ++i)
+    {
+      state->dr_addr_bp[i] = 0;
+      state->dr_ctrl_bp[i] = 0;
+      state->dr_ref_count_bp[i] = 0;
+    }
+
+  for (i = 0; i < AARCH64_HWP_MAX_NUM; ++i)
+    {
+      state->dr_addr_wp[i] = 0;
+      state->dr_ctrl_wp[i] = 0;
+      state->dr_ref_count_wp[i] = 0;
+    }
+}
+
+/* Return the pointer to the debug register state structure in the
+   current process' arch-specific data area.  */
+
+struct aarch64_debug_reg_state *
+aarch64_get_debug_reg_state (pid_t pid)
+{
+  struct process_info *proc = find_process_pid (pid);
+
+  return &proc->priv->arch_private->debug_reg_state;
+}
+
+/* Implementation of target ops method "supports_z_point_type".  */
+
+bool
+aarch64_target::supports_z_point_type (char z_type)
+{
+  switch (z_type)
+    {
+    case Z_PACKET_SW_BP:
+    case Z_PACKET_HW_BP:
+    case Z_PACKET_WRITE_WP:
+    case Z_PACKET_READ_WP:
+    case Z_PACKET_ACCESS_WP:
+      return true;
+    default:
+      return false;
+    }
+}
+
+/* Implementation of linux target ops method "low_insert_point".
+
+   It actually only records the info of the to-be-inserted bp/wp;
+   the actual insertion will happen when threads are resumed.  */
+
+int
+aarch64_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+				  int len, raw_breakpoint *bp)
+{
+  int ret;
+  enum target_hw_bp_type targ_type;
+  struct aarch64_debug_reg_state *state
+    = aarch64_get_debug_reg_state (pid_of (current_thread));
+
+  if (show_debug_regs)
+    fprintf (stderr, "insert_point on entry (addr=0x%08lx, len=%d)\n",
+	     (unsigned long) addr, len);
+
+  /* Determine the type from the raw breakpoint type.  */
+  targ_type = raw_bkpt_type_to_target_hw_bp_type (type);
+
+  if (targ_type != hw_execute)
+    {
+      if (aarch64_linux_region_ok_for_watchpoint (addr, len))
+	ret = aarch64_handle_watchpoint (targ_type, addr, len,
+					 1 /* is_insert */, state);
+      else
+	ret = -1;
+    }
+  else
+    {
+      if (len == 3)
+	{
+	  /* LEN is 3 means the breakpoint is set on a 32-bit thumb
+	     instruction.   Set it to 2 to correctly encode length bit
+	     mask in hardware/watchpoint control register.  */
+	  len = 2;
+	}
+      ret = aarch64_handle_breakpoint (targ_type, addr, len,
+				       1 /* is_insert */, state);
+    }
+
+  if (show_debug_regs)
+    aarch64_show_debug_reg_state (state, "insert_point", addr, len,
+				  targ_type);
+
+  return ret;
+}
+
+/* Implementation of linux target ops method "low_remove_point".
+
+   It actually only records the info of the to-be-removed bp/wp,
+   the actual removal will be done when threads are resumed.  */
+
+int
+aarch64_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+				  int len, raw_breakpoint *bp)
+{
+  int ret;
+  enum target_hw_bp_type targ_type;
+  struct aarch64_debug_reg_state *state
+    = aarch64_get_debug_reg_state (pid_of (current_thread));
+
+  if (show_debug_regs)
+    fprintf (stderr, "remove_point on entry (addr=0x%08lx, len=%d)\n",
+	     (unsigned long) addr, len);
+
+  /* Determine the type from the raw breakpoint type.  */
+  targ_type = raw_bkpt_type_to_target_hw_bp_type (type);
+
+  /* Set up state pointers.  */
+  if (targ_type != hw_execute)
+    ret =
+      aarch64_handle_watchpoint (targ_type, addr, len, 0 /* is_insert */,
+				 state);
+  else
+    {
+      if (len == 3)
+	{
+	  /* LEN is 3 means the breakpoint is set on a 32-bit thumb
+	     instruction.   Set it to 2 to correctly encode length bit
+	     mask in hardware/watchpoint control register.  */
+	  len = 2;
+	}
+      ret = aarch64_handle_breakpoint (targ_type, addr, len,
+				       0 /* is_insert */,  state);
+    }
+
+  if (show_debug_regs)
+    aarch64_show_debug_reg_state (state, "remove_point", addr, len,
+				  targ_type);
+
+  return ret;
+}
+
+/* Implementation of linux target ops method "low_stopped_data_address".  */
+
+CORE_ADDR
+aarch64_target::low_stopped_data_address ()
+{
+  siginfo_t siginfo;
+  int pid, i;
+  struct aarch64_debug_reg_state *state;
+
+  pid = lwpid_of (current_thread);
+
+  /* Get the siginfo.  */
+  if (ptrace (PTRACE_GETSIGINFO, pid, NULL, &siginfo) != 0)
+    return (CORE_ADDR) 0;
+
+  /* Need to be a hardware breakpoint/watchpoint trap.  */
+  if (siginfo.si_signo != SIGTRAP
+      || (siginfo.si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
+    return (CORE_ADDR) 0;
+
+  /* Check if the address matches any watched address.  */
+  state = aarch64_get_debug_reg_state (pid_of (current_thread));
+  for (i = aarch64_num_wp_regs - 1; i >= 0; --i)
+    {
+      const unsigned int offset
+	= aarch64_watchpoint_offset (state->dr_ctrl_wp[i]);
+      const unsigned int len = aarch64_watchpoint_length (state->dr_ctrl_wp[i]);
+      const CORE_ADDR addr_trap = (CORE_ADDR) siginfo.si_addr;
+      const CORE_ADDR addr_watch = state->dr_addr_wp[i] + offset;
+      const CORE_ADDR addr_watch_aligned = align_down (state->dr_addr_wp[i], 8);
+      const CORE_ADDR addr_orig = state->dr_addr_orig_wp[i];
+
+      if (state->dr_ref_count_wp[i]
+	  && DR_CONTROL_ENABLED (state->dr_ctrl_wp[i])
+	  && addr_trap >= addr_watch_aligned
+	  && addr_trap < addr_watch + len)
+	{
+	  /* ADDR_TRAP reports the first address of the memory range
+	     accessed by the CPU, regardless of what was the memory
+	     range watched.  Thus, a large CPU access that straddles
+	     the ADDR_WATCH..ADDR_WATCH+LEN range may result in an
+	     ADDR_TRAP that is lower than the
+	     ADDR_WATCH..ADDR_WATCH+LEN range.  E.g.:
+
+	     addr: |   4   |   5   |   6   |   7   |   8   |
+				   |---- range watched ----|
+		   |----------- range accessed ------------|
+
+	     In this case, ADDR_TRAP will be 4.
+
+	     To match a watchpoint known to GDB core, we must never
+	     report *ADDR_P outside of any ADDR_WATCH..ADDR_WATCH+LEN
+	     range.  ADDR_WATCH <= ADDR_TRAP < ADDR_ORIG is a false
+	     positive on kernels older than 4.10.  See PR
+	     external/20207.  */
+	  return addr_orig;
+	}
+    }
+
+  return (CORE_ADDR) 0;
+}
+
+/* Implementation of linux target ops method "low_stopped_by_watchpoint".  */
+
+bool
+aarch64_target::low_stopped_by_watchpoint ()
+{
+  return (low_stopped_data_address () != 0);
+}
+
+/* Fetch the thread-local storage pointer for libthread_db.  */
+
+ps_err_e
+ps_get_thread_area (struct ps_prochandle *ph,
+		    lwpid_t lwpid, int idx, void **base)
+{
+  return aarch64_ps_get_thread_area (ph, lwpid, idx, base,
+				     is_64bit_tdesc ());
+}
+
+/* Implementation of linux target ops method "low_siginfo_fixup".  */
+
+bool
+aarch64_target::low_siginfo_fixup (siginfo_t *native, gdb_byte *inf,
+				   int direction)
+{
+  /* Is the inferior 32-bit?  If so, then fixup the siginfo object.  */
+  if (!is_64bit_tdesc ())
+    {
+      if (direction == 0)
+	aarch64_compat_siginfo_from_siginfo ((struct compat_siginfo *) inf,
+					     native);
+      else
+	aarch64_siginfo_from_compat_siginfo (native,
+					     (struct compat_siginfo *) inf);
+
+      return true;
+    }
+
+  return false;
+}
+
+/* Implementation of linux target ops method "low_new_process".  */
+
+arch_process_info *
+aarch64_target::low_new_process ()
+{
+  struct arch_process_info *info = XCNEW (struct arch_process_info);
+
+  aarch64_init_debug_reg_state (&info->debug_reg_state);
+
+  return info;
+}
+
+/* Implementation of linux target ops method "low_delete_process".  */
+
+void
+aarch64_target::low_delete_process (arch_process_info *info)
+{
+  xfree (info);
+}
+
+void
+aarch64_target::low_new_thread (lwp_info *lwp)
+{
+  aarch64_linux_new_thread (lwp);
+}
+
+void
+aarch64_target::low_delete_thread (arch_lwp_info *arch_lwp)
+{
+  aarch64_linux_delete_thread (arch_lwp);
+}
+
+/* Implementation of linux target ops method "low_new_fork".  */
+
+void
+aarch64_target::low_new_fork (process_info *parent,
+			      process_info *child)
+{
+  /* These are allocated by linux_add_process.  */
+  gdb_assert (parent->priv != NULL
+	      && parent->priv->arch_private != NULL);
+  gdb_assert (child->priv != NULL
+	      && child->priv->arch_private != NULL);
+
+  /* Linux kernel before 2.6.33 commit
+     72f674d203cd230426437cdcf7dd6f681dad8b0d
+     will inherit hardware debug registers from parent
+     on fork/vfork/clone.  Newer Linux kernels create such tasks with
+     zeroed debug registers.
+
+     GDB core assumes the child inherits the watchpoints/hw
+     breakpoints of the parent, and will remove them all from the
+     forked off process.  Copy the debug registers mirrors into the
+     new process so that all breakpoints and watchpoints can be
+     removed together.  The debug registers mirror will become zeroed
+     in the end before detaching the forked off process, thus making
+     this compatible with older Linux kernels too.  */
+
+  *child->priv->arch_private = *parent->priv->arch_private;
+}
+
+/* Matches HWCAP_PACA in kernel header arch/arm64/include/uapi/asm/hwcap.h.  */
+#define AARCH64_HWCAP_PACA (1 << 30)
+
+/* Implementation of linux target ops method "low_arch_setup".  */
+
+void
+aarch64_target::low_arch_setup ()
+{
+  unsigned int machine;
+  int is_elf64;
+  int tid;
+
+  tid = lwpid_of (current_thread);
+
+  is_elf64 = linux_pid_exe_is_elf_64_file (tid, &machine);
+
+  if (is_elf64)
+    {
+      uint64_t vq = aarch64_sve_get_vq (tid);
+      unsigned long hwcap = linux_get_hwcap (8);
+      bool pauth_p = hwcap & AARCH64_HWCAP_PACA;
+
+      current_process ()->tdesc = aarch64_linux_read_description (vq, pauth_p);
+    }
+  else
+    current_process ()->tdesc = aarch32_linux_read_description ();
+
+  aarch64_linux_get_debug_reg_capacity (lwpid_of (current_thread));
+}
+
+/* Wrapper for aarch64_sve_regs_copy_to_reg_buf.  */
+
+static void
+aarch64_sve_regs_copy_to_regcache (struct regcache *regcache, const void *buf)
+{
+  return aarch64_sve_regs_copy_to_reg_buf (regcache, buf);
+}
+
+/* Wrapper for aarch64_sve_regs_copy_from_reg_buf.  */
+
+static void
+aarch64_sve_regs_copy_from_regcache (struct regcache *regcache, void *buf)
+{
+  return aarch64_sve_regs_copy_from_reg_buf (regcache, buf);
+}
+
+static struct regset_info aarch64_regsets[] =
+{
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
+    sizeof (struct user_pt_regs), GENERAL_REGS,
+    aarch64_fill_gregset, aarch64_store_gregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_FPREGSET,
+    sizeof (struct user_fpsimd_state), FP_REGS,
+    aarch64_fill_fpregset, aarch64_store_fpregset
+  },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_PAC_MASK,
+    AARCH64_PAUTH_REGS_SIZE, OPTIONAL_REGS,
+    NULL, aarch64_store_pauthregset },
+  NULL_REGSET
+};
+
+static struct regsets_info aarch64_regsets_info =
+  {
+    aarch64_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct regs_info regs_info_aarch64 =
+  {
+    NULL, /* regset_bitmap */
+    NULL, /* usrregs */
+    &aarch64_regsets_info,
+  };
+
+static struct regset_info aarch64_sve_regsets[] =
+{
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
+    sizeof (struct user_pt_regs), GENERAL_REGS,
+    aarch64_fill_gregset, aarch64_store_gregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_SVE,
+    SVE_PT_SIZE (AARCH64_MAX_SVE_VQ, SVE_PT_REGS_SVE), EXTENDED_REGS,
+    aarch64_sve_regs_copy_from_regcache, aarch64_sve_regs_copy_to_regcache
+  },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_PAC_MASK,
+    AARCH64_PAUTH_REGS_SIZE, OPTIONAL_REGS,
+    NULL, aarch64_store_pauthregset },
+  NULL_REGSET
+};
+
+static struct regsets_info aarch64_sve_regsets_info =
+  {
+    aarch64_sve_regsets, /* regsets.  */
+    0, /* num_regsets.  */
+    NULL, /* disabled_regsets.  */
+  };
+
+static struct regs_info regs_info_aarch64_sve =
+  {
+    NULL, /* regset_bitmap.  */
+    NULL, /* usrregs.  */
+    &aarch64_sve_regsets_info,
+  };
+
+/* Implementation of linux target ops method "get_regs_info".  */
+
+const regs_info *
+aarch64_target::get_regs_info ()
+{
+  if (!is_64bit_tdesc ())
+    return &regs_info_aarch32;
+
+  if (is_sve_tdesc ())
+    return &regs_info_aarch64_sve;
+
+  return &regs_info_aarch64;
+}
+
+/* Implementation of target ops method "supports_tracepoints".  */
+
+bool
+aarch64_target::supports_tracepoints ()
+{
+  if (current_thread == NULL)
+    return true;
+  else
+    {
+      /* We don't support tracepoints on aarch32 now.  */
+      return is_64bit_tdesc ();
+    }
+}
+
+/* Implementation of linux target ops method "low_get_thread_area".  */
+
+int
+aarch64_target::low_get_thread_area (int lwpid, CORE_ADDR *addrp)
+{
+  struct iovec iovec;
+  uint64_t reg;
+
+  iovec.iov_base = &reg;
+  iovec.iov_len = sizeof (reg);
+
+  if (ptrace (PTRACE_GETREGSET, lwpid, NT_ARM_TLS, &iovec) != 0)
+    return -1;
+
+  *addrp = reg;
+
+  return 0;
+}
+
+bool
+aarch64_target::low_supports_catch_syscall ()
+{
+  return true;
+}
+
+/* Implementation of linux target ops method "low_get_syscall_trapinfo".  */
+
+void
+aarch64_target::low_get_syscall_trapinfo (regcache *regcache, int *sysno)
+{
+  int use_64bit = register_size (regcache->tdesc, 0) == 8;
+
+  if (use_64bit)
+    {
+      long l_sysno;
+
+      collect_register_by_name (regcache, "x8", &l_sysno);
+      *sysno = (int) l_sysno;
+    }
+  else
+    collect_register_by_name (regcache, "r7", sysno);
+}
+
+/* List of condition codes that we need.  */
+
+enum aarch64_condition_codes
+{
+  EQ = 0x0,
+  NE = 0x1,
+  LO = 0x3,
+  GE = 0xa,
+  LT = 0xb,
+  GT = 0xc,
+  LE = 0xd,
+};
+
+enum aarch64_operand_type
+{
+  OPERAND_IMMEDIATE,
+  OPERAND_REGISTER,
+};
+
+/* Representation of an operand.  At this time, it only supports register
+   and immediate types.  */
+
+struct aarch64_operand
+{
+  /* Type of the operand.  */
+  enum aarch64_operand_type type;
+
+  /* Value of the operand according to the type.  */
+  union
+    {
+      uint32_t imm;
+      struct aarch64_register reg;
+    };
+};
+
+/* List of registers that we are currently using, we can add more here as
+   we need to use them.  */
+
+/* General purpose scratch registers (64 bit).  */
+static const struct aarch64_register x0 = { 0, 1 };
+static const struct aarch64_register x1 = { 1, 1 };
+static const struct aarch64_register x2 = { 2, 1 };
+static const struct aarch64_register x3 = { 3, 1 };
+static const struct aarch64_register x4 = { 4, 1 };
+
+/* General purpose scratch registers (32 bit).  */
+static const struct aarch64_register w0 = { 0, 0 };
+static const struct aarch64_register w2 = { 2, 0 };
+
+/* Intra-procedure scratch registers.  */
+static const struct aarch64_register ip0 = { 16, 1 };
+
+/* Special purpose registers.  */
+static const struct aarch64_register fp = { 29, 1 };
+static const struct aarch64_register lr = { 30, 1 };
+static const struct aarch64_register sp = { 31, 1 };
+static const struct aarch64_register xzr = { 31, 1 };
+
+/* Dynamically allocate a new register.  If we know the register
+   statically, we should make it a global as above instead of using this
+   helper function.  */
+
+static struct aarch64_register
+aarch64_register (unsigned num, int is64)
+{
+  return (struct aarch64_register) { num, is64 };
+}
+
+/* Helper function to create a register operand, for instructions with
+   different types of operands.
+
+   For example:
+   p += emit_mov (p, x0, register_operand (x1));  */
+
+static struct aarch64_operand
+register_operand (struct aarch64_register reg)
+{
+  struct aarch64_operand operand;
+
+  operand.type = OPERAND_REGISTER;
+  operand.reg = reg;
+
+  return operand;
+}
+
+/* Helper function to create an immediate operand, for instructions with
+   different types of operands.
+
+   For example:
+   p += emit_mov (p, x0, immediate_operand (12));  */
+
+static struct aarch64_operand
+immediate_operand (uint32_t imm)
+{
+  struct aarch64_operand operand;
+
+  operand.type = OPERAND_IMMEDIATE;
+  operand.imm = imm;
+
+  return operand;
+}
+
+/* Helper function to create an offset memory operand.
+
+   For example:
+   p += emit_ldr (p, x0, sp, offset_memory_operand (16));  */
+
+static struct aarch64_memory_operand
+offset_memory_operand (int32_t offset)
+{
+  return (struct aarch64_memory_operand) { MEMORY_OPERAND_OFFSET, offset };
+}
+
+/* Helper function to create a pre-index memory operand.
+
+   For example:
+   p += emit_ldr (p, x0, sp, preindex_memory_operand (16));  */
+
+static struct aarch64_memory_operand
+preindex_memory_operand (int32_t index)
+{
+  return (struct aarch64_memory_operand) { MEMORY_OPERAND_PREINDEX, index };
+}
+
+/* Helper function to create a post-index memory operand.
+
+   For example:
+   p += emit_ldr (p, x0, sp, postindex_memory_operand (16));  */
+
+static struct aarch64_memory_operand
+postindex_memory_operand (int32_t index)
+{
+  return (struct aarch64_memory_operand) { MEMORY_OPERAND_POSTINDEX, index };
+}
+
+/* System control registers.  These special registers can be written and
+   read with the MRS and MSR instructions.
+
+   - NZCV: Condition flags.  GDB refers to this register under the CPSR
+	   name.
+   - FPSR: Floating-point status register.
+   - FPCR: Floating-point control registers.
+   - TPIDR_EL0: Software thread ID register.  */
+
+enum aarch64_system_control_registers
+{
+  /*          op0           op1           crn          crm          op2  */
+  NZCV =      (0x1 << 14) | (0x3 << 11) | (0x4 << 7) | (0x2 << 3) | 0x0,
+  FPSR =      (0x1 << 14) | (0x3 << 11) | (0x4 << 7) | (0x4 << 3) | 0x1,
+  FPCR =      (0x1 << 14) | (0x3 << 11) | (0x4 << 7) | (0x4 << 3) | 0x0,
+  TPIDR_EL0 = (0x1 << 14) | (0x3 << 11) | (0xd << 7) | (0x0 << 3) | 0x2
+};
+
+/* Write a BLR instruction into *BUF.
+
+     BLR rn
+
+   RN is the register to branch to.  */
+
+static int
+emit_blr (uint32_t *buf, struct aarch64_register rn)
+{
+  return aarch64_emit_insn (buf, BLR | ENCODE (rn.num, 5, 5));
+}
+
+/* Write a RET instruction into *BUF.
+
+     RET xn
+
+   RN is the register to branch to.  */
+
+static int
+emit_ret (uint32_t *buf, struct aarch64_register rn)
+{
+  return aarch64_emit_insn (buf, RET | ENCODE (rn.num, 5, 5));
+}
+
+static int
+emit_load_store_pair (uint32_t *buf, enum aarch64_opcodes opcode,
+		      struct aarch64_register rt,
+		      struct aarch64_register rt2,
+		      struct aarch64_register rn,
+		      struct aarch64_memory_operand operand)
+{
+  uint32_t opc;
+  uint32_t pre_index;
+  uint32_t write_back;
+
+  if (rt.is64)
+    opc = ENCODE (2, 2, 30);
+  else
+    opc = ENCODE (0, 2, 30);
+
+  switch (operand.type)
+    {
+    case MEMORY_OPERAND_OFFSET:
+      {
+	pre_index = ENCODE (1, 1, 24);
+	write_back = ENCODE (0, 1, 23);
+	break;
+      }
+    case MEMORY_OPERAND_POSTINDEX:
+      {
+	pre_index = ENCODE (0, 1, 24);
+	write_back = ENCODE (1, 1, 23);
+	break;
+      }
+    case MEMORY_OPERAND_PREINDEX:
+      {
+	pre_index = ENCODE (1, 1, 24);
+	write_back = ENCODE (1, 1, 23);
+	break;
+      }
+    default:
+      return 0;
+    }
+
+  return aarch64_emit_insn (buf, opcode | opc | pre_index | write_back
+			    | ENCODE (operand.index >> 3, 7, 15)
+			    | ENCODE (rt2.num, 5, 10)
+			    | ENCODE (rn.num, 5, 5) | ENCODE (rt.num, 5, 0));
+}
+
+/* Write a STP instruction into *BUF.
+
+     STP rt, rt2, [rn, #offset]
+     STP rt, rt2, [rn, #index]!
+     STP rt, rt2, [rn], #index
+
+   RT and RT2 are the registers to store.
+   RN is the base address register.
+   OFFSET is the immediate to add to the base address.  It is limited to a
+   -512 .. 504 range (7 bits << 3).  */
+
+static int
+emit_stp (uint32_t *buf, struct aarch64_register rt,
+	  struct aarch64_register rt2, struct aarch64_register rn,
+	  struct aarch64_memory_operand operand)
+{
+  return emit_load_store_pair (buf, STP, rt, rt2, rn, operand);
+}
+
+/* Write a LDP instruction into *BUF.
+
+     LDP rt, rt2, [rn, #offset]
+     LDP rt, rt2, [rn, #index]!
+     LDP rt, rt2, [rn], #index
+
+   RT and RT2 are the registers to store.
+   RN is the base address register.
+   OFFSET is the immediate to add to the base address.  It is limited to a
+   -512 .. 504 range (7 bits << 3).  */
+
+static int
+emit_ldp (uint32_t *buf, struct aarch64_register rt,
+	  struct aarch64_register rt2, struct aarch64_register rn,
+	  struct aarch64_memory_operand operand)
+{
+  return emit_load_store_pair (buf, LDP, rt, rt2, rn, operand);
+}
+
+/* Write a LDP (SIMD&VFP) instruction using Q registers into *BUF.
+
+     LDP qt, qt2, [rn, #offset]
+
+   RT and RT2 are the Q registers to store.
+   RN is the base address register.
+   OFFSET is the immediate to add to the base address.  It is limited to
+   -1024 .. 1008 range (7 bits << 4).  */
+
+static int
+emit_ldp_q_offset (uint32_t *buf, unsigned rt, unsigned rt2,
+		   struct aarch64_register rn, int32_t offset)
+{
+  uint32_t opc = ENCODE (2, 2, 30);
+  uint32_t pre_index = ENCODE (1, 1, 24);
+
+  return aarch64_emit_insn (buf, LDP_SIMD_VFP | opc | pre_index
+			    | ENCODE (offset >> 4, 7, 15)
+			    | ENCODE (rt2, 5, 10)
+			    | ENCODE (rn.num, 5, 5) | ENCODE (rt, 5, 0));
+}
+
+/* Write a STP (SIMD&VFP) instruction using Q registers into *BUF.
+
+     STP qt, qt2, [rn, #offset]
+
+   RT and RT2 are the Q registers to store.
+   RN is the base address register.
+   OFFSET is the immediate to add to the base address.  It is limited to
+   -1024 .. 1008 range (7 bits << 4).  */
+
+static int
+emit_stp_q_offset (uint32_t *buf, unsigned rt, unsigned rt2,
+		   struct aarch64_register rn, int32_t offset)
+{
+  uint32_t opc = ENCODE (2, 2, 30);
+  uint32_t pre_index = ENCODE (1, 1, 24);
+
+  return aarch64_emit_insn (buf, STP_SIMD_VFP | opc | pre_index
+			    | ENCODE (offset >> 4, 7, 15)
+			    | ENCODE (rt2, 5, 10)
+			    | ENCODE (rn.num, 5, 5) | ENCODE (rt, 5, 0));
+}
+
+/* Write a LDRH instruction into *BUF.
+
+     LDRH wt, [xn, #offset]
+     LDRH wt, [xn, #index]!
+     LDRH wt, [xn], #index
+
+   RT is the register to store.
+   RN is the base address register.
+   OFFSET is the immediate to add to the base address.  It is limited to
+   0 .. 32760 range (12 bits << 3).  */
+
+static int
+emit_ldrh (uint32_t *buf, struct aarch64_register rt,
+	   struct aarch64_register rn,
+	   struct aarch64_memory_operand operand)
+{
+  return aarch64_emit_load_store (buf, 1, LDR, rt, rn, operand);
+}
+
+/* Write a LDRB instruction into *BUF.
+
+     LDRB wt, [xn, #offset]
+     LDRB wt, [xn, #index]!
+     LDRB wt, [xn], #index
+
+   RT is the register to store.
+   RN is the base address register.
+   OFFSET is the immediate to add to the base address.  It is limited to
+   0 .. 32760 range (12 bits << 3).  */
+
+static int
+emit_ldrb (uint32_t *buf, struct aarch64_register rt,
+	   struct aarch64_register rn,
+	   struct aarch64_memory_operand operand)
+{
+  return aarch64_emit_load_store (buf, 0, LDR, rt, rn, operand);
+}
+
+
+
+/* Write a STR instruction into *BUF.
+
+     STR rt, [rn, #offset]
+     STR rt, [rn, #index]!
+     STR rt, [rn], #index
+
+   RT is the register to store.
+   RN is the base address register.
+   OFFSET is the immediate to add to the base address.  It is limited to
+   0 .. 32760 range (12 bits << 3).  */
+
+static int
+emit_str (uint32_t *buf, struct aarch64_register rt,
+	  struct aarch64_register rn,
+	  struct aarch64_memory_operand operand)
+{
+  return aarch64_emit_load_store (buf, rt.is64 ? 3 : 2, STR, rt, rn, operand);
+}
+
+/* Helper function emitting an exclusive load or store instruction.  */
+
+static int
+emit_load_store_exclusive (uint32_t *buf, uint32_t size,
+			   enum aarch64_opcodes opcode,
+			   struct aarch64_register rs,
+			   struct aarch64_register rt,
+			   struct aarch64_register rt2,
+			   struct aarch64_register rn)
+{
+  return aarch64_emit_insn (buf, opcode | ENCODE (size, 2, 30)
+			    | ENCODE (rs.num, 5, 16) | ENCODE (rt2.num, 5, 10)
+			    | ENCODE (rn.num, 5, 5) | ENCODE (rt.num, 5, 0));
+}
+
+/* Write a LAXR instruction into *BUF.
+
+     LDAXR rt, [xn]
+
+   RT is the destination register.
+   RN is the base address register.  */
+
+static int
+emit_ldaxr (uint32_t *buf, struct aarch64_register rt,
+	    struct aarch64_register rn)
+{
+  return emit_load_store_exclusive (buf, rt.is64 ? 3 : 2, LDAXR, xzr, rt,
+				    xzr, rn);
+}
+
+/* Write a STXR instruction into *BUF.
+
+     STXR ws, rt, [xn]
+
+   RS is the result register, it indicates if the store succeeded or not.
+   RT is the destination register.
+   RN is the base address register.  */
+
+static int
+emit_stxr (uint32_t *buf, struct aarch64_register rs,
+	   struct aarch64_register rt, struct aarch64_register rn)
+{
+  return emit_load_store_exclusive (buf, rt.is64 ? 3 : 2, STXR, rs, rt,
+				    xzr, rn);
+}
+
+/* Write a STLR instruction into *BUF.
+
+     STLR rt, [xn]
+
+   RT is the register to store.
+   RN is the base address register.  */
+
+static int
+emit_stlr (uint32_t *buf, struct aarch64_register rt,
+	   struct aarch64_register rn)
+{
+  return emit_load_store_exclusive (buf, rt.is64 ? 3 : 2, STLR, xzr, rt,
+				    xzr, rn);
+}
+
+/* Helper function for data processing instructions with register sources.  */
+
+static int
+emit_data_processing_reg (uint32_t *buf, uint32_t opcode,
+			  struct aarch64_register rd,
+			  struct aarch64_register rn,
+			  struct aarch64_register rm)
+{
+  uint32_t size = ENCODE (rd.is64, 1, 31);
+
+  return aarch64_emit_insn (buf, opcode | size | ENCODE (rm.num, 5, 16)
+			    | ENCODE (rn.num, 5, 5) | ENCODE (rd.num, 5, 0));
+}
+
+/* Helper function for data processing instructions taking either a register
+   or an immediate.  */
+
+static int
+emit_data_processing (uint32_t *buf, enum aarch64_opcodes opcode,
+		      struct aarch64_register rd,
+		      struct aarch64_register rn,
+		      struct aarch64_operand operand)
+{
+  uint32_t size = ENCODE (rd.is64, 1, 31);
+  /* The opcode is different for register and immediate source operands.  */
+  uint32_t operand_opcode;
+
+  if (operand.type == OPERAND_IMMEDIATE)
+    {
+      /* xxx1 000x xxxx xxxx xxxx xxxx xxxx xxxx */
+      operand_opcode = ENCODE (8, 4, 25);
+
+      return aarch64_emit_insn (buf, opcode | operand_opcode | size
+				| ENCODE (operand.imm, 12, 10)
+				| ENCODE (rn.num, 5, 5)
+				| ENCODE (rd.num, 5, 0));
+    }
+  else
+    {
+      /* xxx0 101x xxxx xxxx xxxx xxxx xxxx xxxx */
+      operand_opcode = ENCODE (5, 4, 25);
+
+      return emit_data_processing_reg (buf, opcode | operand_opcode, rd,
+				       rn, operand.reg);
+    }
+}
+
+/* Write an ADD instruction into *BUF.
+
+     ADD rd, rn, #imm
+     ADD rd, rn, rm
+
+   This function handles both an immediate and register add.
+
+   RD is the destination register.
+   RN is the input register.
+   OPERAND is the source operand, either of type OPERAND_IMMEDIATE or
+   OPERAND_REGISTER.  */
+
+static int
+emit_add (uint32_t *buf, struct aarch64_register rd,
+	  struct aarch64_register rn, struct aarch64_operand operand)
+{
+  return emit_data_processing (buf, ADD, rd, rn, operand);
+}
+
+/* Write a SUB instruction into *BUF.
+
+     SUB rd, rn, #imm
+     SUB rd, rn, rm
+
+   This function handles both an immediate and register sub.
+
+   RD is the destination register.
+   RN is the input register.
+   IMM is the immediate to substract to RN.  */
+
+static int
+emit_sub (uint32_t *buf, struct aarch64_register rd,
+	  struct aarch64_register rn, struct aarch64_operand operand)
+{
+  return emit_data_processing (buf, SUB, rd, rn, operand);
+}
+
+/* Write a MOV instruction into *BUF.
+
+     MOV rd, #imm
+     MOV rd, rm
+
+   This function handles both a wide immediate move and a register move,
+   with the condition that the source register is not xzr.  xzr and the
+   stack pointer share the same encoding and this function only supports
+   the stack pointer.
+
+   RD is the destination register.
+   OPERAND is the source operand, either of type OPERAND_IMMEDIATE or
+   OPERAND_REGISTER.  */
+
+static int
+emit_mov (uint32_t *buf, struct aarch64_register rd,
+	  struct aarch64_operand operand)
+{
+  if (operand.type == OPERAND_IMMEDIATE)
+    {
+      uint32_t size = ENCODE (rd.is64, 1, 31);
+      /* Do not shift the immediate.  */
+      uint32_t shift = ENCODE (0, 2, 21);
+
+      return aarch64_emit_insn (buf, MOV | size | shift
+				| ENCODE (operand.imm, 16, 5)
+				| ENCODE (rd.num, 5, 0));
+    }
+  else
+    return emit_add (buf, rd, operand.reg, immediate_operand (0));
+}
+
+/* Write a MOVK instruction into *BUF.
+
+     MOVK rd, #imm, lsl #shift
+
+   RD is the destination register.
+   IMM is the immediate.
+   SHIFT is the logical shift left to apply to IMM.   */
+
+static int
+emit_movk (uint32_t *buf, struct aarch64_register rd, uint32_t imm,
+	   unsigned shift)
+{
+  uint32_t size = ENCODE (rd.is64, 1, 31);
+
+  return aarch64_emit_insn (buf, MOVK | size | ENCODE (shift, 2, 21) |
+			    ENCODE (imm, 16, 5) | ENCODE (rd.num, 5, 0));
+}
+
+/* Write instructions into *BUF in order to move ADDR into a register.
+   ADDR can be a 64-bit value.
+
+   This function will emit a series of MOV and MOVK instructions, such as:
+
+     MOV  xd, #(addr)
+     MOVK xd, #(addr >> 16), lsl #16
+     MOVK xd, #(addr >> 32), lsl #32
+     MOVK xd, #(addr >> 48), lsl #48  */
+
+static int
+emit_mov_addr (uint32_t *buf, struct aarch64_register rd, CORE_ADDR addr)
+{
+  uint32_t *p = buf;
+
+  /* The MOV (wide immediate) instruction clears to top bits of the
+     register.  */
+  p += emit_mov (p, rd, immediate_operand (addr & 0xffff));
+
+  if ((addr >> 16) != 0)
+    p += emit_movk (p, rd, (addr >> 16) & 0xffff, 1);
+  else
+    return p - buf;
+
+  if ((addr >> 32) != 0)
+    p += emit_movk (p, rd, (addr >> 32) & 0xffff, 2);
+  else
+    return p - buf;
+
+  if ((addr >> 48) != 0)
+    p += emit_movk (p, rd, (addr >> 48) & 0xffff, 3);
+
+  return p - buf;
+}
+
+/* Write a SUBS instruction into *BUF.
+
+     SUBS rd, rn, rm
+
+   This instruction update the condition flags.
+
+   RD is the destination register.
+   RN and RM are the source registers.  */
+
+static int
+emit_subs (uint32_t *buf, struct aarch64_register rd,
+	   struct aarch64_register rn, struct aarch64_operand operand)
+{
+  return emit_data_processing (buf, SUBS, rd, rn, operand);
+}
+
+/* Write a CMP instruction into *BUF.
+
+     CMP rn, rm
+
+   This instruction is an alias of SUBS xzr, rn, rm.
+
+   RN and RM are the registers to compare.  */
+
+static int
+emit_cmp (uint32_t *buf, struct aarch64_register rn,
+	      struct aarch64_operand operand)
+{
+  return emit_subs (buf, xzr, rn, operand);
+}
+
+/* Write a AND instruction into *BUF.
+
+     AND rd, rn, rm
+
+   RD is the destination register.
+   RN and RM are the source registers.  */
+
+static int
+emit_and (uint32_t *buf, struct aarch64_register rd,
+	  struct aarch64_register rn, struct aarch64_register rm)
+{
+  return emit_data_processing_reg (buf, AND, rd, rn, rm);
+}
+
+/* Write a ORR instruction into *BUF.
+
+     ORR rd, rn, rm
+
+   RD is the destination register.
+   RN and RM are the source registers.  */
+
+static int
+emit_orr (uint32_t *buf, struct aarch64_register rd,
+	  struct aarch64_register rn, struct aarch64_register rm)
+{
+  return emit_data_processing_reg (buf, ORR, rd, rn, rm);
+}
+
+/* Write a ORN instruction into *BUF.
+
+     ORN rd, rn, rm
+
+   RD is the destination register.
+   RN and RM are the source registers.  */
+
+static int
+emit_orn (uint32_t *buf, struct aarch64_register rd,
+	  struct aarch64_register rn, struct aarch64_register rm)
+{
+  return emit_data_processing_reg (buf, ORN, rd, rn, rm);
+}
+
+/* Write a EOR instruction into *BUF.
+
+     EOR rd, rn, rm
+
+   RD is the destination register.
+   RN and RM are the source registers.  */
+
+static int
+emit_eor (uint32_t *buf, struct aarch64_register rd,
+	  struct aarch64_register rn, struct aarch64_register rm)
+{
+  return emit_data_processing_reg (buf, EOR, rd, rn, rm);
+}
+
+/* Write a MVN instruction into *BUF.
+
+     MVN rd, rm
+
+   This is an alias for ORN rd, xzr, rm.
+
+   RD is the destination register.
+   RM is the source register.  */
+
+static int
+emit_mvn (uint32_t *buf, struct aarch64_register rd,
+	  struct aarch64_register rm)
+{
+  return emit_orn (buf, rd, xzr, rm);
+}
+
+/* Write a LSLV instruction into *BUF.
+
+     LSLV rd, rn, rm
+
+   RD is the destination register.
+   RN and RM are the source registers.  */
+
+static int
+emit_lslv (uint32_t *buf, struct aarch64_register rd,
+	   struct aarch64_register rn, struct aarch64_register rm)
+{
+  return emit_data_processing_reg (buf, LSLV, rd, rn, rm);
+}
+
+/* Write a LSRV instruction into *BUF.
+
+     LSRV rd, rn, rm
+
+   RD is the destination register.
+   RN and RM are the source registers.  */
+
+static int
+emit_lsrv (uint32_t *buf, struct aarch64_register rd,
+	   struct aarch64_register rn, struct aarch64_register rm)
+{
+  return emit_data_processing_reg (buf, LSRV, rd, rn, rm);
+}
+
+/* Write a ASRV instruction into *BUF.
+
+     ASRV rd, rn, rm
+
+   RD is the destination register.
+   RN and RM are the source registers.  */
+
+static int
+emit_asrv (uint32_t *buf, struct aarch64_register rd,
+	   struct aarch64_register rn, struct aarch64_register rm)
+{
+  return emit_data_processing_reg (buf, ASRV, rd, rn, rm);
+}
+
+/* Write a MUL instruction into *BUF.
+
+     MUL rd, rn, rm
+
+   RD is the destination register.
+   RN and RM are the source registers.  */
+
+static int
+emit_mul (uint32_t *buf, struct aarch64_register rd,
+	  struct aarch64_register rn, struct aarch64_register rm)
+{
+  return emit_data_processing_reg (buf, MUL, rd, rn, rm);
+}
+
+/* Write a MRS instruction into *BUF.  The register size is 64-bit.
+
+     MRS xt, system_reg
+
+   RT is the destination register.
+   SYSTEM_REG is special purpose register to read.  */
+
+static int
+emit_mrs (uint32_t *buf, struct aarch64_register rt,
+	  enum aarch64_system_control_registers system_reg)
+{
+  return aarch64_emit_insn (buf, MRS | ENCODE (system_reg, 15, 5)
+			    | ENCODE (rt.num, 5, 0));
+}
+
+/* Write a MSR instruction into *BUF.  The register size is 64-bit.
+
+     MSR system_reg, xt
+
+   SYSTEM_REG is special purpose register to write.
+   RT is the input register.  */
+
+static int
+emit_msr (uint32_t *buf, enum aarch64_system_control_registers system_reg,
+	  struct aarch64_register rt)
+{
+  return aarch64_emit_insn (buf, MSR | ENCODE (system_reg, 15, 5)
+			    | ENCODE (rt.num, 5, 0));
+}
+
+/* Write a SEVL instruction into *BUF.
+
+   This is a hint instruction telling the hardware to trigger an event.  */
+
+static int
+emit_sevl (uint32_t *buf)
+{
+  return aarch64_emit_insn (buf, SEVL);
+}
+
+/* Write a WFE instruction into *BUF.
+
+   This is a hint instruction telling the hardware to wait for an event.  */
+
+static int
+emit_wfe (uint32_t *buf)
+{
+  return aarch64_emit_insn (buf, WFE);
+}
+
+/* Write a SBFM instruction into *BUF.
+
+     SBFM rd, rn, #immr, #imms
+
+   This instruction moves the bits from #immr to #imms into the
+   destination, sign extending the result.
+
+   RD is the destination register.
+   RN is the source register.
+   IMMR is the bit number to start at (least significant bit).
+   IMMS is the bit number to stop at (most significant bit).  */
+
+static int
+emit_sbfm (uint32_t *buf, struct aarch64_register rd,
+	   struct aarch64_register rn, uint32_t immr, uint32_t imms)
+{
+  uint32_t size = ENCODE (rd.is64, 1, 31);
+  uint32_t n = ENCODE (rd.is64, 1, 22);
+
+  return aarch64_emit_insn (buf, SBFM | size | n | ENCODE (immr, 6, 16)
+			    | ENCODE (imms, 6, 10) | ENCODE (rn.num, 5, 5)
+			    | ENCODE (rd.num, 5, 0));
+}
+
+/* Write a SBFX instruction into *BUF.
+
+     SBFX rd, rn, #lsb, #width
+
+   This instruction moves #width bits from #lsb into the destination, sign
+   extending the result.  This is an alias for:
+
+     SBFM rd, rn, #lsb, #(lsb + width - 1)
+
+   RD is the destination register.
+   RN is the source register.
+   LSB is the bit number to start at (least significant bit).
+   WIDTH is the number of bits to move.  */
+
+static int
+emit_sbfx (uint32_t *buf, struct aarch64_register rd,
+	   struct aarch64_register rn, uint32_t lsb, uint32_t width)
+{
+  return emit_sbfm (buf, rd, rn, lsb, lsb + width - 1);
+}
+
+/* Write a UBFM instruction into *BUF.
+
+     UBFM rd, rn, #immr, #imms
+
+   This instruction moves the bits from #immr to #imms into the
+   destination, extending the result with zeros.
+
+   RD is the destination register.
+   RN is the source register.
+   IMMR is the bit number to start at (least significant bit).
+   IMMS is the bit number to stop at (most significant bit).  */
+
+static int
+emit_ubfm (uint32_t *buf, struct aarch64_register rd,
+	   struct aarch64_register rn, uint32_t immr, uint32_t imms)
+{
+  uint32_t size = ENCODE (rd.is64, 1, 31);
+  uint32_t n = ENCODE (rd.is64, 1, 22);
+
+  return aarch64_emit_insn (buf, UBFM | size | n | ENCODE (immr, 6, 16)
+			    | ENCODE (imms, 6, 10) | ENCODE (rn.num, 5, 5)
+			    | ENCODE (rd.num, 5, 0));
+}
+
+/* Write a UBFX instruction into *BUF.
+
+     UBFX rd, rn, #lsb, #width
+
+   This instruction moves #width bits from #lsb into the destination,
+   extending the result with zeros.  This is an alias for:
+
+     UBFM rd, rn, #lsb, #(lsb + width - 1)
+
+   RD is the destination register.
+   RN is the source register.
+   LSB is the bit number to start at (least significant bit).
+   WIDTH is the number of bits to move.  */
+
+static int
+emit_ubfx (uint32_t *buf, struct aarch64_register rd,
+	   struct aarch64_register rn, uint32_t lsb, uint32_t width)
+{
+  return emit_ubfm (buf, rd, rn, lsb, lsb + width - 1);
+}
+
+/* Write a CSINC instruction into *BUF.
+
+     CSINC rd, rn, rm, cond
+
+   This instruction conditionally increments rn or rm and places the result
+   in rd.  rn is chosen is the condition is true.
+
+   RD is the destination register.
+   RN and RM are the source registers.
+   COND is the encoded condition.  */
+
+static int
+emit_csinc (uint32_t *buf, struct aarch64_register rd,
+	    struct aarch64_register rn, struct aarch64_register rm,
+	    unsigned cond)
+{
+  uint32_t size = ENCODE (rd.is64, 1, 31);
+
+  return aarch64_emit_insn (buf, CSINC | size | ENCODE (rm.num, 5, 16)
+			    | ENCODE (cond, 4, 12) | ENCODE (rn.num, 5, 5)
+			    | ENCODE (rd.num, 5, 0));
+}
+
+/* Write a CSET instruction into *BUF.
+
+     CSET rd, cond
+
+   This instruction conditionally write 1 or 0 in the destination register.
+   1 is written if the condition is true.  This is an alias for:
+
+     CSINC rd, xzr, xzr, !cond
+
+   Note that the condition needs to be inverted.
+
+   RD is the destination register.
+   RN and RM are the source registers.
+   COND is the encoded condition.  */
+
+static int
+emit_cset (uint32_t *buf, struct aarch64_register rd, unsigned cond)
+{
+  /* The least significant bit of the condition needs toggling in order to
+     invert it.  */
+  return emit_csinc (buf, rd, xzr, xzr, cond ^ 0x1);
+}
+
+/* Write LEN instructions from BUF into the inferior memory at *TO.
+
+   Note instructions are always little endian on AArch64, unlike data.  */
+
+static void
+append_insns (CORE_ADDR *to, size_t len, const uint32_t *buf)
+{
+  size_t byte_len = len * sizeof (uint32_t);
+#if (__BYTE_ORDER == __BIG_ENDIAN)
+  uint32_t *le_buf = (uint32_t *) xmalloc (byte_len);
+  size_t i;
+
+  for (i = 0; i < len; i++)
+    le_buf[i] = htole32 (buf[i]);
+
+  target_write_memory (*to, (const unsigned char *) le_buf, byte_len);
+
+  xfree (le_buf);
+#else
+  target_write_memory (*to, (const unsigned char *) buf, byte_len);
+#endif
+
+  *to += byte_len;
+}
+
+/* Sub-class of struct aarch64_insn_data, store information of
+   instruction relocation for fast tracepoint.  Visitor can
+   relocate an instruction from BASE.INSN_ADDR to NEW_ADDR and save
+   the relocated instructions in buffer pointed by INSN_PTR.  */
+
+struct aarch64_insn_relocation_data
+{
+  struct aarch64_insn_data base;
+
+  /* The new address the instruction is relocated to.  */
+  CORE_ADDR new_addr;
+  /* Pointer to the buffer of relocated instruction(s).  */
+  uint32_t *insn_ptr;
+};
+
+/* Implementation of aarch64_insn_visitor method "b".  */
+
+static void
+aarch64_ftrace_insn_reloc_b (const int is_bl, const int32_t offset,
+			     struct aarch64_insn_data *data)
+{
+  struct aarch64_insn_relocation_data *insn_reloc
+    = (struct aarch64_insn_relocation_data *) data;
+  int64_t new_offset
+    = insn_reloc->base.insn_addr - insn_reloc->new_addr + offset;
+
+  if (can_encode_int32 (new_offset, 28))
+    insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, is_bl, new_offset);
+}
+
+/* Implementation of aarch64_insn_visitor method "b_cond".  */
+
+static void
+aarch64_ftrace_insn_reloc_b_cond (const unsigned cond, const int32_t offset,
+				  struct aarch64_insn_data *data)
+{
+  struct aarch64_insn_relocation_data *insn_reloc
+    = (struct aarch64_insn_relocation_data *) data;
+  int64_t new_offset
+    = insn_reloc->base.insn_addr - insn_reloc->new_addr + offset;
+
+  if (can_encode_int32 (new_offset, 21))
+    {
+      insn_reloc->insn_ptr += emit_bcond (insn_reloc->insn_ptr, cond,
+					  new_offset);
+    }
+  else if (can_encode_int32 (new_offset, 28))
+    {
+      /* The offset is out of range for a conditional branch
+	 instruction but not for a unconditional branch.  We can use
+	 the following instructions instead:
+
+	 B.COND TAKEN    ; If cond is true, then jump to TAKEN.
+	 B NOT_TAKEN     ; Else jump over TAKEN and continue.
+	 TAKEN:
+	 B #(offset - 8)
+	 NOT_TAKEN:
+
+      */
+
+      insn_reloc->insn_ptr += emit_bcond (insn_reloc->insn_ptr, cond, 8);
+      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0, 8);
+      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0, new_offset - 8);
+    }
+}
+
+/* Implementation of aarch64_insn_visitor method "cb".  */
+
+static void
+aarch64_ftrace_insn_reloc_cb (const int32_t offset, const int is_cbnz,
+			      const unsigned rn, int is64,
+			      struct aarch64_insn_data *data)
+{
+  struct aarch64_insn_relocation_data *insn_reloc
+    = (struct aarch64_insn_relocation_data *) data;
+  int64_t new_offset
+    = insn_reloc->base.insn_addr - insn_reloc->new_addr + offset;
+
+  if (can_encode_int32 (new_offset, 21))
+    {
+      insn_reloc->insn_ptr += emit_cb (insn_reloc->insn_ptr, is_cbnz,
+				       aarch64_register (rn, is64), new_offset);
+    }
+  else if (can_encode_int32 (new_offset, 28))
+    {
+      /* The offset is out of range for a compare and branch
+	 instruction but not for a unconditional branch.  We can use
+	 the following instructions instead:
+
+	 CBZ xn, TAKEN   ; xn == 0, then jump to TAKEN.
+	 B NOT_TAKEN     ; Else jump over TAKEN and continue.
+	 TAKEN:
+	 B #(offset - 8)
+	 NOT_TAKEN:
+
+      */
+      insn_reloc->insn_ptr += emit_cb (insn_reloc->insn_ptr, is_cbnz,
+				       aarch64_register (rn, is64), 8);
+      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0, 8);
+      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0, new_offset - 8);
+    }
+}
+
+/* Implementation of aarch64_insn_visitor method "tb".  */
+
+static void
+aarch64_ftrace_insn_reloc_tb (const int32_t offset, int is_tbnz,
+			      const unsigned rt, unsigned bit,
+			      struct aarch64_insn_data *data)
+{
+  struct aarch64_insn_relocation_data *insn_reloc
+    = (struct aarch64_insn_relocation_data *) data;
+  int64_t new_offset
+    = insn_reloc->base.insn_addr - insn_reloc->new_addr + offset;
+
+  if (can_encode_int32 (new_offset, 16))
+    {
+      insn_reloc->insn_ptr += emit_tb (insn_reloc->insn_ptr, is_tbnz, bit,
+				       aarch64_register (rt, 1), new_offset);
+    }
+  else if (can_encode_int32 (new_offset, 28))
+    {
+      /* The offset is out of range for a test bit and branch
+	 instruction but not for a unconditional branch.  We can use
+	 the following instructions instead:
+
+	 TBZ xn, #bit, TAKEN ; xn[bit] == 0, then jump to TAKEN.
+	 B NOT_TAKEN         ; Else jump over TAKEN and continue.
+	 TAKEN:
+	 B #(offset - 8)
+	 NOT_TAKEN:
+
+      */
+      insn_reloc->insn_ptr += emit_tb (insn_reloc->insn_ptr, is_tbnz, bit,
+				       aarch64_register (rt, 1), 8);
+      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0, 8);
+      insn_reloc->insn_ptr += emit_b (insn_reloc->insn_ptr, 0,
+				      new_offset - 8);
+    }
+}
+
+/* Implementation of aarch64_insn_visitor method "adr".  */
+
+static void
+aarch64_ftrace_insn_reloc_adr (const int32_t offset, const unsigned rd,
+			       const int is_adrp,
+			       struct aarch64_insn_data *data)
+{
+  struct aarch64_insn_relocation_data *insn_reloc
+    = (struct aarch64_insn_relocation_data *) data;
+  /* We know exactly the address the ADR{P,} instruction will compute.
+     We can just write it to the destination register.  */
+  CORE_ADDR address = data->insn_addr + offset;
+
+  if (is_adrp)
+    {
+      /* Clear the lower 12 bits of the offset to get the 4K page.  */
+      insn_reloc->insn_ptr += emit_mov_addr (insn_reloc->insn_ptr,
+					     aarch64_register (rd, 1),
+					     address & ~0xfff);
+    }
+  else
+    insn_reloc->insn_ptr += emit_mov_addr (insn_reloc->insn_ptr,
+					   aarch64_register (rd, 1), address);
+}
+
+/* Implementation of aarch64_insn_visitor method "ldr_literal".  */
+
+static void
+aarch64_ftrace_insn_reloc_ldr_literal (const int32_t offset, const int is_sw,
+				       const unsigned rt, const int is64,
+				       struct aarch64_insn_data *data)
+{
+  struct aarch64_insn_relocation_data *insn_reloc
+    = (struct aarch64_insn_relocation_data *) data;
+  CORE_ADDR address = data->insn_addr + offset;
+
+  insn_reloc->insn_ptr += emit_mov_addr (insn_reloc->insn_ptr,
+					 aarch64_register (rt, 1), address);
+
+  /* We know exactly what address to load from, and what register we
+     can use:
+
+     MOV xd, #(oldloc + offset)
+     MOVK xd, #((oldloc + offset) >> 16), lsl #16
+     ...
+
+     LDR xd, [xd] ; or LDRSW xd, [xd]
+
+  */
+
+  if (is_sw)
+    insn_reloc->insn_ptr += emit_ldrsw (insn_reloc->insn_ptr,
+					aarch64_register (rt, 1),
+					aarch64_register (rt, 1),
+					offset_memory_operand (0));
+  else
+    insn_reloc->insn_ptr += emit_ldr (insn_reloc->insn_ptr,
+				      aarch64_register (rt, is64),
+				      aarch64_register (rt, 1),
+				      offset_memory_operand (0));
+}
+
+/* Implementation of aarch64_insn_visitor method "others".  */
+
+static void
+aarch64_ftrace_insn_reloc_others (const uint32_t insn,
+				  struct aarch64_insn_data *data)
+{
+  struct aarch64_insn_relocation_data *insn_reloc
+    = (struct aarch64_insn_relocation_data *) data;
+
+  /* The instruction is not PC relative.  Just re-emit it at the new
+     location.  */
+  insn_reloc->insn_ptr += aarch64_emit_insn (insn_reloc->insn_ptr, insn);
+}
+
+static const struct aarch64_insn_visitor visitor =
+{
+  aarch64_ftrace_insn_reloc_b,
+  aarch64_ftrace_insn_reloc_b_cond,
+  aarch64_ftrace_insn_reloc_cb,
+  aarch64_ftrace_insn_reloc_tb,
+  aarch64_ftrace_insn_reloc_adr,
+  aarch64_ftrace_insn_reloc_ldr_literal,
+  aarch64_ftrace_insn_reloc_others,
+};
+
+bool
+aarch64_target::supports_fast_tracepoints ()
+{
+  return true;
+}
+
+/* Implementation of target ops method
+   "install_fast_tracepoint_jump_pad".  */
+
+int
+aarch64_target::install_fast_tracepoint_jump_pad
+  (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector,
+   CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry,
+   CORE_ADDR *trampoline, ULONGEST *trampoline_size,
+   unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size,
+   CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end,
+   char *err)
+{
+  uint32_t buf[256];
+  uint32_t *p = buf;
+  int64_t offset;
+  int i;
+  uint32_t insn;
+  CORE_ADDR buildaddr = *jump_entry;
+  struct aarch64_insn_relocation_data insn_data;
+
+  /* We need to save the current state on the stack both to restore it
+     later and to collect register values when the tracepoint is hit.
+
+     The saved registers are pushed in a layout that needs to be in sync
+     with aarch64_ft_collect_regmap (see linux-aarch64-ipa.c).  Later on
+     the supply_fast_tracepoint_registers function will fill in the
+     register cache from a pointer to saved registers on the stack we build
+     here.
+
+     For simplicity, we set the size of each cell on the stack to 16 bytes.
+     This way one cell can hold any register type, from system registers
+     to the 128 bit SIMD&FP registers.  Furthermore, the stack pointer
+     has to be 16 bytes aligned anyway.
+
+     Note that the CPSR register does not exist on AArch64.  Instead we
+     can access system bits describing the process state with the
+     MRS/MSR instructions, namely the condition flags.  We save them as
+     if they are part of a CPSR register because that's how GDB
+     interprets these system bits.  At the moment, only the condition
+     flags are saved in CPSR (NZCV).
+
+     Stack layout, each cell is 16 bytes (descending):
+
+     High *-------- SIMD&FP registers from 31 down to 0. --------*
+	  | q31                                                  |
+	  .                                                      .
+	  .                                                      . 32 cells
+	  .                                                      .
+	  | q0                                                   |
+	  *---- General purpose registers from 30 down to 0. ----*
+	  | x30                                                  |
+	  .                                                      .
+	  .                                                      . 31 cells
+	  .                                                      .
+	  | x0                                                   |
+	  *------------- Special purpose registers. -------------*
+	  | SP                                                   |
+	  | PC                                                   |
+	  | CPSR (NZCV)                                          | 5 cells
+	  | FPSR                                                 |
+	  | FPCR                                                 | <- SP + 16
+	  *------------- collecting_t object --------------------*
+	  | TPIDR_EL0               | struct tracepoint *        |
+     Low  *------------------------------------------------------*
+
+     After this stack is set up, we issue a call to the collector, passing
+     it the saved registers at (SP + 16).  */
+
+  /* Push SIMD&FP registers on the stack:
+
+       SUB sp, sp, #(32 * 16)
+
+       STP q30, q31, [sp, #(30 * 16)]
+       ...
+       STP q0, q1, [sp]
+
+     */
+  p += emit_sub (p, sp, sp, immediate_operand (32 * 16));
+  for (i = 30; i >= 0; i -= 2)
+    p += emit_stp_q_offset (p, i, i + 1, sp, i * 16);
+
+  /* Push general purpose registers on the stack.  Note that we do not need
+     to push x31 as it represents the xzr register and not the stack
+     pointer in a STR instruction.
+
+       SUB sp, sp, #(31 * 16)
+
+       STR x30, [sp, #(30 * 16)]
+       ...
+       STR x0, [sp]
+
+     */
+  p += emit_sub (p, sp, sp, immediate_operand (31 * 16));
+  for (i = 30; i >= 0; i -= 1)
+    p += emit_str (p, aarch64_register (i, 1), sp,
+		   offset_memory_operand (i * 16));
+
+  /* Make space for 5 more cells.
+
+       SUB sp, sp, #(5 * 16)
+
+     */
+  p += emit_sub (p, sp, sp, immediate_operand (5 * 16));
+
+
+  /* Save SP:
+
+       ADD x4, sp, #((32 + 31 + 5) * 16)
+       STR x4, [sp, #(4 * 16)]
+
+     */
+  p += emit_add (p, x4, sp, immediate_operand ((32 + 31 + 5) * 16));
+  p += emit_str (p, x4, sp, offset_memory_operand (4 * 16));
+
+  /* Save PC (tracepoint address):
+
+       MOV  x3, #(tpaddr)
+       ...
+
+       STR x3, [sp, #(3 * 16)]
+
+     */
+
+  p += emit_mov_addr (p, x3, tpaddr);
+  p += emit_str (p, x3, sp, offset_memory_operand (3 * 16));
+
+  /* Save CPSR (NZCV), FPSR and FPCR:
+
+       MRS x2, nzcv
+       MRS x1, fpsr
+       MRS x0, fpcr
+
+       STR x2, [sp, #(2 * 16)]
+       STR x1, [sp, #(1 * 16)]
+       STR x0, [sp, #(0 * 16)]
+
+     */
+  p += emit_mrs (p, x2, NZCV);
+  p += emit_mrs (p, x1, FPSR);
+  p += emit_mrs (p, x0, FPCR);
+  p += emit_str (p, x2, sp, offset_memory_operand (2 * 16));
+  p += emit_str (p, x1, sp, offset_memory_operand (1 * 16));
+  p += emit_str (p, x0, sp, offset_memory_operand (0 * 16));
+
+  /* Push the collecting_t object.  It consist of the address of the
+     tracepoint and an ID for the current thread.  We get the latter by
+     reading the tpidr_el0 system register.  It corresponds to the
+     NT_ARM_TLS register accessible with ptrace.
+
+       MOV x0, #(tpoint)
+       ...
+
+       MRS x1, tpidr_el0
+
+       STP x0, x1, [sp, #-16]!
+
+     */
+
+  p += emit_mov_addr (p, x0, tpoint);
+  p += emit_mrs (p, x1, TPIDR_EL0);
+  p += emit_stp (p, x0, x1, sp, preindex_memory_operand (-16));
+
+  /* Spin-lock:
+
+     The shared memory for the lock is at lockaddr.  It will hold zero
+     if no-one is holding the lock, otherwise it contains the address of
+     the collecting_t object on the stack of the thread which acquired it.
+
+     At this stage, the stack pointer points to this thread's collecting_t
+     object.
+
+     We use the following registers:
+     - x0: Address of the lock.
+     - x1: Pointer to collecting_t object.
+     - x2: Scratch register.
+
+       MOV x0, #(lockaddr)
+       ...
+       MOV x1, sp
+
+       ; Trigger an event local to this core.  So the following WFE
+       ; instruction is ignored.
+       SEVL
+     again:
+       ; Wait for an event.  The event is triggered by either the SEVL
+       ; or STLR instructions (store release).
+       WFE
+
+       ; Atomically read at lockaddr.  This marks the memory location as
+       ; exclusive.  This instruction also has memory constraints which
+       ; make sure all previous data reads and writes are done before
+       ; executing it.
+       LDAXR x2, [x0]
+
+       ; Try again if another thread holds the lock.
+       CBNZ x2, again
+
+       ; We can lock it!  Write the address of the collecting_t object.
+       ; This instruction will fail if the memory location is not marked
+       ; as exclusive anymore.  If it succeeds, it will remove the
+       ; exclusive mark on the memory location.  This way, if another
+       ; thread executes this instruction before us, we will fail and try
+       ; all over again.
+       STXR w2, x1, [x0]
+       CBNZ w2, again
+
+     */
+
+  p += emit_mov_addr (p, x0, lockaddr);
+  p += emit_mov (p, x1, register_operand (sp));
+
+  p += emit_sevl (p);
+  p += emit_wfe (p);
+  p += emit_ldaxr (p, x2, x0);
+  p += emit_cb (p, 1, w2, -2 * 4);
+  p += emit_stxr (p, w2, x1, x0);
+  p += emit_cb (p, 1, x2, -4 * 4);
+
+  /* Call collector (struct tracepoint *, unsigned char *):
+
+       MOV x0, #(tpoint)
+       ...
+
+       ; Saved registers start after the collecting_t object.
+       ADD x1, sp, #16
+
+       ; We use an intra-procedure-call scratch register.
+       MOV ip0, #(collector)
+       ...
+
+       ; And call back to C!
+       BLR ip0
+
+     */
+
+  p += emit_mov_addr (p, x0, tpoint);
+  p += emit_add (p, x1, sp, immediate_operand (16));
+
+  p += emit_mov_addr (p, ip0, collector);
+  p += emit_blr (p, ip0);
+
+  /* Release the lock.
+
+       MOV x0, #(lockaddr)
+       ...
+
+       ; This instruction is a normal store with memory ordering
+       ; constraints.  Thanks to this we do not have to put a data
+       ; barrier instruction to make sure all data read and writes are done
+       ; before this instruction is executed.  Furthermore, this instruction
+       ; will trigger an event, letting other threads know they can grab
+       ; the lock.
+       STLR xzr, [x0]
+
+     */
+  p += emit_mov_addr (p, x0, lockaddr);
+  p += emit_stlr (p, xzr, x0);
+
+  /* Free collecting_t object:
+
+       ADD sp, sp, #16
+
+     */
+  p += emit_add (p, sp, sp, immediate_operand (16));
+
+  /* Restore CPSR (NZCV), FPSR and FPCR.  And free all special purpose
+     registers from the stack.
+
+       LDR x2, [sp, #(2 * 16)]
+       LDR x1, [sp, #(1 * 16)]
+       LDR x0, [sp, #(0 * 16)]
+
+       MSR NZCV, x2
+       MSR FPSR, x1
+       MSR FPCR, x0
+
+       ADD sp, sp #(5 * 16)
+
+     */
+  p += emit_ldr (p, x2, sp, offset_memory_operand (2 * 16));
+  p += emit_ldr (p, x1, sp, offset_memory_operand (1 * 16));
+  p += emit_ldr (p, x0, sp, offset_memory_operand (0 * 16));
+  p += emit_msr (p, NZCV, x2);
+  p += emit_msr (p, FPSR, x1);
+  p += emit_msr (p, FPCR, x0);
+
+  p += emit_add (p, sp, sp, immediate_operand (5 * 16));
+
+  /* Pop general purpose registers:
+
+       LDR x0, [sp]
+       ...
+       LDR x30, [sp, #(30 * 16)]
+
+       ADD sp, sp, #(31 * 16)
+
+     */
+  for (i = 0; i <= 30; i += 1)
+    p += emit_ldr (p, aarch64_register (i, 1), sp,
+		   offset_memory_operand (i * 16));
+  p += emit_add (p, sp, sp, immediate_operand (31 * 16));
+
+  /* Pop SIMD&FP registers:
+
+       LDP q0, q1, [sp]
+       ...
+       LDP q30, q31, [sp, #(30 * 16)]
+
+       ADD sp, sp, #(32 * 16)
+
+     */
+  for (i = 0; i <= 30; i += 2)
+    p += emit_ldp_q_offset (p, i, i + 1, sp, i * 16);
+  p += emit_add (p, sp, sp, immediate_operand (32 * 16));
+
+  /* Write the code into the inferior memory.  */
+  append_insns (&buildaddr, p - buf, buf);
+
+  /* Now emit the relocated instruction.  */
+  *adjusted_insn_addr = buildaddr;
+  target_read_uint32 (tpaddr, &insn);
+
+  insn_data.base.insn_addr = tpaddr;
+  insn_data.new_addr = buildaddr;
+  insn_data.insn_ptr = buf;
+
+  aarch64_relocate_instruction (insn, &visitor,
+				(struct aarch64_insn_data *) &insn_data);
+
+  /* We may not have been able to relocate the instruction.  */
+  if (insn_data.insn_ptr == buf)
+    {
+      sprintf (err,
+	       "E.Could not relocate instruction from %s to %s.",
+	       core_addr_to_string_nz (tpaddr),
+	       core_addr_to_string_nz (buildaddr));
+      return 1;
+    }
+  else
+    append_insns (&buildaddr, insn_data.insn_ptr - buf, buf);
+  *adjusted_insn_addr_end = buildaddr;
+
+  /* Go back to the start of the buffer.  */
+  p = buf;
+
+  /* Emit a branch back from the jump pad.  */
+  offset = (tpaddr + orig_size - buildaddr);
+  if (!can_encode_int32 (offset, 28))
+    {
+      sprintf (err,
+	       "E.Jump back from jump pad too far from tracepoint "
+	       "(offset 0x%" PRIx64 " cannot be encoded in 28 bits).",
+	       offset);
+      return 1;
+    }
+
+  p += emit_b (p, 0, offset);
+  append_insns (&buildaddr, p - buf, buf);
+
+  /* Give the caller a branch instruction into the jump pad.  */
+  offset = (*jump_entry - tpaddr);
+  if (!can_encode_int32 (offset, 28))
+    {
+      sprintf (err,
+	       "E.Jump pad too far from tracepoint "
+	       "(offset 0x%" PRIx64 " cannot be encoded in 28 bits).",
+	       offset);
+      return 1;
+    }
+
+  emit_b ((uint32_t *) jjump_pad_insn, 0, offset);
+  *jjump_pad_insn_size = 4;
+
+  /* Return the end address of our pad.  */
+  *jump_entry = buildaddr;
+
+  return 0;
+}
+
+/* Helper function writing LEN instructions from START into
+   current_insn_ptr.  */
+
+static void
+emit_ops_insns (const uint32_t *start, int len)
+{
+  CORE_ADDR buildaddr = current_insn_ptr;
+
+  if (debug_threads)
+    debug_printf ("Adding %d instrucions at %s\n",
+		  len, paddress (buildaddr));
+
+  append_insns (&buildaddr, len, start);
+  current_insn_ptr = buildaddr;
+}
+
+/* Pop a register from the stack.  */
+
+static int
+emit_pop (uint32_t *buf, struct aarch64_register rt)
+{
+  return emit_ldr (buf, rt, sp, postindex_memory_operand (1 * 16));
+}
+
+/* Push a register on the stack.  */
+
+static int
+emit_push (uint32_t *buf, struct aarch64_register rt)
+{
+  return emit_str (buf, rt, sp, preindex_memory_operand (-1 * 16));
+}
+
+/* Implementation of emit_ops method "emit_prologue".  */
+
+static void
+aarch64_emit_prologue (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  /* This function emit a prologue for the following function prototype:
+
+     enum eval_result_type f (unsigned char *regs,
+			      ULONGEST *value);
+
+     The first argument is a buffer of raw registers.  The second
+     argument is the result of
+     evaluating the expression, which will be set to whatever is on top of
+     the stack at the end.
+
+     The stack set up by the prologue is as such:
+
+     High *------------------------------------------------------*
+	  | LR                                                   |
+	  | FP                                                   | <- FP
+	  | x1  (ULONGEST *value)                                |
+	  | x0  (unsigned char *regs)                            |
+     Low  *------------------------------------------------------*
+
+     As we are implementing a stack machine, each opcode can expand the
+     stack so we never know how far we are from the data saved by this
+     prologue.  In order to be able refer to value and regs later, we save
+     the current stack pointer in the frame pointer.  This way, it is not
+     clobbered when calling C functions.
+
+     Finally, throughout every operation, we are using register x0 as the
+     top of the stack, and x1 as a scratch register.  */
+
+  p += emit_stp (p, x0, x1, sp, preindex_memory_operand (-2 * 16));
+  p += emit_str (p, lr, sp, offset_memory_operand (3 * 8));
+  p += emit_str (p, fp, sp, offset_memory_operand (2 * 8));
+
+  p += emit_add (p, fp, sp, immediate_operand (2 * 8));
+
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_epilogue".  */
+
+static void
+aarch64_emit_epilogue (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  /* Store the result of the expression (x0) in *value.  */
+  p += emit_sub (p, x1, fp, immediate_operand (1 * 8));
+  p += emit_ldr (p, x1, x1, offset_memory_operand (0));
+  p += emit_str (p, x0, x1, offset_memory_operand (0));
+
+  /* Restore the previous state.  */
+  p += emit_add (p, sp, fp, immediate_operand (2 * 8));
+  p += emit_ldp (p, fp, lr, fp, offset_memory_operand (0));
+
+  /* Return expr_eval_no_error.  */
+  p += emit_mov (p, x0, immediate_operand (expr_eval_no_error));
+  p += emit_ret (p, lr);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_add".  */
+
+static void
+aarch64_emit_add (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_add (p, x0, x1, register_operand (x0));
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_sub".  */
+
+static void
+aarch64_emit_sub (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_sub (p, x0, x1, register_operand (x0));
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_mul".  */
+
+static void
+aarch64_emit_mul (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_mul (p, x0, x1, x0);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_lsh".  */
+
+static void
+aarch64_emit_lsh (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_lslv (p, x0, x1, x0);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_rsh_signed".  */
+
+static void
+aarch64_emit_rsh_signed (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_asrv (p, x0, x1, x0);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_rsh_unsigned".  */
+
+static void
+aarch64_emit_rsh_unsigned (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_lsrv (p, x0, x1, x0);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_ext".  */
+
+static void
+aarch64_emit_ext (int arg)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_sbfx (p, x0, x0, 0, arg);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_log_not".  */
+
+static void
+aarch64_emit_log_not (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  /* If the top of the stack is 0, replace it with 1.  Else replace it with
+     0.  */
+
+  p += emit_cmp (p, x0, immediate_operand (0));
+  p += emit_cset (p, x0, EQ);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_bit_and".  */
+
+static void
+aarch64_emit_bit_and (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_and (p, x0, x0, x1);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_bit_or".  */
+
+static void
+aarch64_emit_bit_or (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_orr (p, x0, x0, x1);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_bit_xor".  */
+
+static void
+aarch64_emit_bit_xor (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_eor (p, x0, x0, x1);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_bit_not".  */
+
+static void
+aarch64_emit_bit_not (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_mvn (p, x0, x0);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_equal".  */
+
+static void
+aarch64_emit_equal (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_cmp (p, x0, register_operand (x1));
+  p += emit_cset (p, x0, EQ);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_less_signed".  */
+
+static void
+aarch64_emit_less_signed (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_cmp (p, x1, register_operand (x0));
+  p += emit_cset (p, x0, LT);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_less_unsigned".  */
+
+static void
+aarch64_emit_less_unsigned (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_cmp (p, x1, register_operand (x0));
+  p += emit_cset (p, x0, LO);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_ref".  */
+
+static void
+aarch64_emit_ref (int size)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  switch (size)
+    {
+    case 1:
+      p += emit_ldrb (p, w0, x0, offset_memory_operand (0));
+      break;
+    case 2:
+      p += emit_ldrh (p, w0, x0, offset_memory_operand (0));
+      break;
+    case 4:
+      p += emit_ldr (p, w0, x0, offset_memory_operand (0));
+      break;
+    case 8:
+      p += emit_ldr (p, x0, x0, offset_memory_operand (0));
+      break;
+    default:
+      /* Unknown size, bail on compilation.  */
+      emit_error = 1;
+      break;
+    }
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_if_goto".  */
+
+static void
+aarch64_emit_if_goto (int *offset_p, int *size_p)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  /* The Z flag is set or cleared here.  */
+  p += emit_cmp (p, x0, immediate_operand (0));
+  /* This instruction must not change the Z flag.  */
+  p += emit_pop (p, x0);
+  /* Branch over the next instruction if x0 == 0.  */
+  p += emit_bcond (p, EQ, 8);
+
+  /* The NOP instruction will be patched with an unconditional branch.  */
+  if (offset_p)
+    *offset_p = (p - buf) * 4;
+  if (size_p)
+    *size_p = 4;
+  p += emit_nop (p);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_goto".  */
+
+static void
+aarch64_emit_goto (int *offset_p, int *size_p)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  /* The NOP instruction will be patched with an unconditional branch.  */
+  if (offset_p)
+    *offset_p = 0;
+  if (size_p)
+    *size_p = 4;
+  p += emit_nop (p);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "write_goto_address".  */
+
+static void
+aarch64_write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
+{
+  uint32_t insn;
+
+  emit_b (&insn, 0, to - from);
+  append_insns (&from, 1, &insn);
+}
+
+/* Implementation of emit_ops method "emit_const".  */
+
+static void
+aarch64_emit_const (LONGEST num)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_mov_addr (p, x0, num);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_call".  */
+
+static void
+aarch64_emit_call (CORE_ADDR fn)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_mov_addr (p, ip0, fn);
+  p += emit_blr (p, ip0);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_reg".  */
+
+static void
+aarch64_emit_reg (int reg)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  /* Set x0 to unsigned char *regs.  */
+  p += emit_sub (p, x0, fp, immediate_operand (2 * 8));
+  p += emit_ldr (p, x0, x0, offset_memory_operand (0));
+  p += emit_mov (p, x1, immediate_operand (reg));
+
+  emit_ops_insns (buf, p - buf);
+
+  aarch64_emit_call (get_raw_reg_func_addr ());
+}
+
+/* Implementation of emit_ops method "emit_pop".  */
+
+static void
+aarch64_emit_pop (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x0);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_stack_flush".  */
+
+static void
+aarch64_emit_stack_flush (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_push (p, x0);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_zero_ext".  */
+
+static void
+aarch64_emit_zero_ext (int arg)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_ubfx (p, x0, x0, 0, arg);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_swap".  */
+
+static void
+aarch64_emit_swap (void)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_ldr (p, x1, sp, offset_memory_operand (0 * 16));
+  p += emit_str (p, x0, sp, offset_memory_operand (0 * 16));
+  p += emit_mov (p, x0, register_operand (x1));
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_stack_adjust".  */
+
+static void
+aarch64_emit_stack_adjust (int n)
+{
+  /* This is not needed with our design.  */
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_add (p, sp, sp, immediate_operand (n * 16));
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_int_call_1".  */
+
+static void
+aarch64_emit_int_call_1 (CORE_ADDR fn, int arg1)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_mov (p, x0, immediate_operand (arg1));
+
+  emit_ops_insns (buf, p - buf);
+
+  aarch64_emit_call (fn);
+}
+
+/* Implementation of emit_ops method "emit_void_call_2".  */
+
+static void
+aarch64_emit_void_call_2 (CORE_ADDR fn, int arg1)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  /* Push x0 on the stack.  */
+  aarch64_emit_stack_flush ();
+
+  /* Setup arguments for the function call:
+
+     x0: arg1
+     x1: top of the stack
+
+       MOV x1, x0
+       MOV x0, #arg1  */
+
+  p += emit_mov (p, x1, register_operand (x0));
+  p += emit_mov (p, x0, immediate_operand (arg1));
+
+  emit_ops_insns (buf, p - buf);
+
+  aarch64_emit_call (fn);
+
+  /* Restore x0.  */
+  aarch64_emit_pop ();
+}
+
+/* Implementation of emit_ops method "emit_eq_goto".  */
+
+static void
+aarch64_emit_eq_goto (int *offset_p, int *size_p)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_cmp (p, x1, register_operand (x0));
+  /* Branch over the next instruction if x0 != x1.  */
+  p += emit_bcond (p, NE, 8);
+  /* The NOP instruction will be patched with an unconditional branch.  */
+  if (offset_p)
+    *offset_p = (p - buf) * 4;
+  if (size_p)
+    *size_p = 4;
+  p += emit_nop (p);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_ne_goto".  */
+
+static void
+aarch64_emit_ne_goto (int *offset_p, int *size_p)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_cmp (p, x1, register_operand (x0));
+  /* Branch over the next instruction if x0 == x1.  */
+  p += emit_bcond (p, EQ, 8);
+  /* The NOP instruction will be patched with an unconditional branch.  */
+  if (offset_p)
+    *offset_p = (p - buf) * 4;
+  if (size_p)
+    *size_p = 4;
+  p += emit_nop (p);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_lt_goto".  */
+
+static void
+aarch64_emit_lt_goto (int *offset_p, int *size_p)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_cmp (p, x1, register_operand (x0));
+  /* Branch over the next instruction if x0 >= x1.  */
+  p += emit_bcond (p, GE, 8);
+  /* The NOP instruction will be patched with an unconditional branch.  */
+  if (offset_p)
+    *offset_p = (p - buf) * 4;
+  if (size_p)
+    *size_p = 4;
+  p += emit_nop (p);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_le_goto".  */
+
+static void
+aarch64_emit_le_goto (int *offset_p, int *size_p)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_cmp (p, x1, register_operand (x0));
+  /* Branch over the next instruction if x0 > x1.  */
+  p += emit_bcond (p, GT, 8);
+  /* The NOP instruction will be patched with an unconditional branch.  */
+  if (offset_p)
+    *offset_p = (p - buf) * 4;
+  if (size_p)
+    *size_p = 4;
+  p += emit_nop (p);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_gt_goto".  */
+
+static void
+aarch64_emit_gt_goto (int *offset_p, int *size_p)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_cmp (p, x1, register_operand (x0));
+  /* Branch over the next instruction if x0 <= x1.  */
+  p += emit_bcond (p, LE, 8);
+  /* The NOP instruction will be patched with an unconditional branch.  */
+  if (offset_p)
+    *offset_p = (p - buf) * 4;
+  if (size_p)
+    *size_p = 4;
+  p += emit_nop (p);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+/* Implementation of emit_ops method "emit_ge_got".  */
+
+static void
+aarch64_emit_ge_got (int *offset_p, int *size_p)
+{
+  uint32_t buf[16];
+  uint32_t *p = buf;
+
+  p += emit_pop (p, x1);
+  p += emit_cmp (p, x1, register_operand (x0));
+  /* Branch over the next instruction if x0 <= x1.  */
+  p += emit_bcond (p, LT, 8);
+  /* The NOP instruction will be patched with an unconditional branch.  */
+  if (offset_p)
+    *offset_p = (p - buf) * 4;
+  if (size_p)
+    *size_p = 4;
+  p += emit_nop (p);
+
+  emit_ops_insns (buf, p - buf);
+}
+
+static struct emit_ops aarch64_emit_ops_impl =
+{
+  aarch64_emit_prologue,
+  aarch64_emit_epilogue,
+  aarch64_emit_add,
+  aarch64_emit_sub,
+  aarch64_emit_mul,
+  aarch64_emit_lsh,
+  aarch64_emit_rsh_signed,
+  aarch64_emit_rsh_unsigned,
+  aarch64_emit_ext,
+  aarch64_emit_log_not,
+  aarch64_emit_bit_and,
+  aarch64_emit_bit_or,
+  aarch64_emit_bit_xor,
+  aarch64_emit_bit_not,
+  aarch64_emit_equal,
+  aarch64_emit_less_signed,
+  aarch64_emit_less_unsigned,
+  aarch64_emit_ref,
+  aarch64_emit_if_goto,
+  aarch64_emit_goto,
+  aarch64_write_goto_address,
+  aarch64_emit_const,
+  aarch64_emit_call,
+  aarch64_emit_reg,
+  aarch64_emit_pop,
+  aarch64_emit_stack_flush,
+  aarch64_emit_zero_ext,
+  aarch64_emit_swap,
+  aarch64_emit_stack_adjust,
+  aarch64_emit_int_call_1,
+  aarch64_emit_void_call_2,
+  aarch64_emit_eq_goto,
+  aarch64_emit_ne_goto,
+  aarch64_emit_lt_goto,
+  aarch64_emit_le_goto,
+  aarch64_emit_gt_goto,
+  aarch64_emit_ge_got,
+};
+
+/* Implementation of target ops method "emit_ops".  */
+
+emit_ops *
+aarch64_target::emit_ops ()
+{
+  return &aarch64_emit_ops_impl;
+}
+
+/* Implementation of target ops method
+   "get_min_fast_tracepoint_insn_len".  */
+
+int
+aarch64_target::get_min_fast_tracepoint_insn_len ()
+{
+  return 4;
+}
+
+/* Implementation of linux target ops method "low_supports_range_stepping".  */
+
+bool
+aarch64_target::low_supports_range_stepping ()
+{
+  return true;
+}
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+aarch64_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  if (is_64bit_tdesc ())
+    {
+      *size = aarch64_breakpoint_len;
+      return aarch64_breakpoint;
+    }
+  else
+    return arm_sw_breakpoint_from_kind (kind, size);
+}
+
+/* Implementation of target ops method "breakpoint_kind_from_pc".  */
+
+int
+aarch64_target::breakpoint_kind_from_pc (CORE_ADDR *pcptr)
+{
+  if (is_64bit_tdesc ())
+    return aarch64_breakpoint_len;
+  else
+    return arm_breakpoint_kind_from_pc (pcptr);
+}
+
+/* Implementation of the target ops method
+   "breakpoint_kind_from_current_state".  */
+
+int
+aarch64_target::breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
+{
+  if (is_64bit_tdesc ())
+    return aarch64_breakpoint_len;
+  else
+    return arm_breakpoint_kind_from_current_state (pcptr);
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_aarch64_target;
+
+void
+initialize_low_arch (void)
+{
+  initialize_low_arch_aarch32 ();
+
+  initialize_regsets_info (&aarch64_regsets_info);
+  initialize_regsets_info (&aarch64_sve_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch64-tdesc.cc ./gdbserver/linux-aarch64-tdesc.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch64-tdesc.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-aarch64-tdesc.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,60 @@
+/* GNU/Linux/aarch64 specific target description, for the remote server
+   for GDB.
+   Copyright (C) 2017-2021 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 "server.h"
+
+#include "linux-aarch64-tdesc.h"
+
+#include "tdesc.h"
+#include "arch/aarch64.h"
+#include "linux-aarch32-low.h"
+#include <inttypes.h>
+
+/* All possible aarch64 target descriptors.  */
+struct target_desc *tdesc_aarch64_list[AARCH64_MAX_SVE_VQ + 1][2/*pauth*/];
+
+/* Create the aarch64 target description.  */
+
+const target_desc *
+aarch64_linux_read_description (uint64_t vq, bool pauth_p)
+{
+  if (vq > AARCH64_MAX_SVE_VQ)
+    error (_("VQ is %" PRIu64 ", maximum supported value is %d"), vq,
+	   AARCH64_MAX_SVE_VQ);
+
+  struct target_desc *tdesc = tdesc_aarch64_list[vq][pauth_p];
+
+  if (tdesc == NULL)
+    {
+      tdesc = aarch64_create_target_description (vq, pauth_p);
+
+      static const char *expedite_regs_aarch64[] = { "x29", "sp", "pc", NULL };
+      static const char *expedite_regs_aarch64_sve[] = { "x29", "sp", "pc",
+							 "vg", NULL };
+
+      if (vq == 0)
+	init_target_desc (tdesc, expedite_regs_aarch64);
+      else
+	init_target_desc (tdesc, expedite_regs_aarch64_sve);
+
+      tdesc_aarch64_list[vq][pauth_p] = tdesc;
+    }
+
+  return tdesc;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch64-tdesc.h ./gdbserver/linux-aarch64-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-aarch64-tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-aarch64-tdesc.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,25 @@
+/* Low level support for aarch64, shared between gdbserver and IPA.
+
+   Copyright (C) 2016-2021 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 GDBSERVER_LINUX_AARCH64_TDESC_H
+#define GDBSERVER_LINUX_AARCH64_TDESC_H
+
+const target_desc * aarch64_linux_read_description (uint64_t vq, bool pauth_p);
+
+#endif /* GDBSERVER_LINUX_AARCH64_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-amd64-ipa.cc ./gdbserver/linux-amd64-ipa.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-amd64-ipa.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-amd64-ipa.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,289 @@
+/* GNU/Linux/x86-64 specific low level interface, for the in-process
+   agent library for GDB.
+
+   Copyright (C) 2010-2021 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 "server.h"
+#include <sys/mman.h>
+#include "tracepoint.h"
+#include "linux-x86-tdesc.h"
+#include "gdbsupport/x86-xstate.h"
+
+/* Defined in auto-generated file amd64-linux.c.  */
+void init_registers_amd64_linux (void);
+extern const struct target_desc *tdesc_amd64_linux;
+
+/* fast tracepoints collect registers.  */
+
+#define FT_CR_RIP 0
+#define FT_CR_EFLAGS 1
+#define FT_CR_R8 2
+#define FT_CR_R9 3
+#define FT_CR_R10 4
+#define FT_CR_R11 5
+#define FT_CR_R12 6
+#define FT_CR_R13 7
+#define FT_CR_R14 8
+#define FT_CR_R15 9
+#define FT_CR_RAX 10
+#define FT_CR_RBX 11
+#define FT_CR_RCX 12
+#define FT_CR_RDX 13
+#define FT_CR_RSI 14
+#define FT_CR_RDI 15
+#define FT_CR_RBP 16
+#define FT_CR_RSP 17
+
+static const int x86_64_ft_collect_regmap[] = {
+  FT_CR_RAX * 8, FT_CR_RBX * 8, FT_CR_RCX * 8, FT_CR_RDX * 8,
+  FT_CR_RSI * 8, FT_CR_RDI * 8, FT_CR_RBP * 8, FT_CR_RSP * 8,
+  FT_CR_R8 * 8,  FT_CR_R9 * 8,  FT_CR_R10 * 8, FT_CR_R11 * 8,
+  FT_CR_R12 * 8, FT_CR_R13 * 8, FT_CR_R14 * 8, FT_CR_R15 * 8,
+  FT_CR_RIP * 8, FT_CR_EFLAGS * 8
+};
+
+#define X86_64_NUM_FT_COLLECT_GREGS \
+  (sizeof (x86_64_ft_collect_regmap) / sizeof(x86_64_ft_collect_regmap[0]))
+
+void
+supply_fast_tracepoint_registers (struct regcache *regcache,
+				  const unsigned char *buf)
+{
+  int i;
+
+  for (i = 0; i < X86_64_NUM_FT_COLLECT_GREGS; i++)
+    supply_register (regcache, i,
+		     ((char *) buf) + x86_64_ft_collect_regmap[i]);
+}
+
+ULONGEST
+get_raw_reg (const unsigned char *raw_regs, int regnum)
+{
+  if (regnum >= X86_64_NUM_FT_COLLECT_GREGS)
+    return 0;
+
+  return *(ULONGEST *) (raw_regs + x86_64_ft_collect_regmap[regnum]);
+}
+
+#ifdef HAVE_UST
+
+#include <ust/processor.h>
+
+/* "struct registers" is the UST object type holding the registers at
+   the time of the static tracepoint marker call.  This doesn't
+   contain RIP, but we know what it must have been (the marker
+   address).  */
+
+#define ST_REGENTRY(REG)			\
+  {						\
+    offsetof (struct registers, REG),		\
+    sizeof (((struct registers *) NULL)->REG)	\
+  }
+
+static struct
+{
+  int offset;
+  int size;
+} x86_64_st_collect_regmap[] =
+  {
+    ST_REGENTRY(rax),
+    ST_REGENTRY(rbx),
+    ST_REGENTRY(rcx),
+    ST_REGENTRY(rdx),
+    ST_REGENTRY(rsi),
+    ST_REGENTRY(rdi),
+    ST_REGENTRY(rbp),
+    ST_REGENTRY(rsp),
+    ST_REGENTRY(r8),
+    ST_REGENTRY(r9),
+    ST_REGENTRY(r10),
+    ST_REGENTRY(r11),
+    ST_REGENTRY(r12),
+    ST_REGENTRY(r13),
+    ST_REGENTRY(r14),
+    ST_REGENTRY(r15),
+    { -1, 0 },
+    ST_REGENTRY(rflags),
+    ST_REGENTRY(cs),
+    ST_REGENTRY(ss),
+  };
+
+#define X86_64_NUM_ST_COLLECT_GREGS \
+  (sizeof (x86_64_st_collect_regmap) / sizeof (x86_64_st_collect_regmap[0]))
+
+/* GDB's RIP register number.  */
+#define AMD64_RIP_REGNUM 16
+
+void
+supply_static_tracepoint_registers (struct regcache *regcache,
+				    const unsigned char *buf,
+				    CORE_ADDR pc)
+{
+  int i;
+  unsigned long newpc = pc;
+
+  supply_register (regcache, AMD64_RIP_REGNUM, &newpc);
+
+  for (i = 0; i < X86_64_NUM_ST_COLLECT_GREGS; i++)
+    if (x86_64_st_collect_regmap[i].offset != -1)
+      {
+	switch (x86_64_st_collect_regmap[i].size)
+	  {
+	  case 8:
+	    supply_register (regcache, i,
+			     ((char *) buf)
+			     + x86_64_st_collect_regmap[i].offset);
+	    break;
+	  case 2:
+	    {
+	      unsigned long reg
+		= * (short *) (((char *) buf)
+			       + x86_64_st_collect_regmap[i].offset);
+	      reg &= 0xffff;
+	      supply_register (regcache, i, &reg);
+	    }
+	    break;
+	  default:
+	    internal_error (__FILE__, __LINE__,
+			    "unhandled register size: %d",
+			    x86_64_st_collect_regmap[i].size);
+	    break;
+	  }
+      }
+}
+
+#endif /* HAVE_UST */
+
+#if !defined __ILP32__
+/* Map the tdesc index to xcr0 mask.  */
+static uint64_t idx2mask[X86_TDESC_LAST] = {
+  X86_XSTATE_X87_MASK,
+  X86_XSTATE_SSE_MASK,
+  X86_XSTATE_AVX_MASK,
+  X86_XSTATE_MPX_MASK,
+  X86_XSTATE_AVX_MPX_MASK,
+  X86_XSTATE_AVX_AVX512_MASK,
+  X86_XSTATE_AVX_MPX_AVX512_PKU_MASK,
+};
+#endif
+
+/* Return target_desc to use for IPA, given the tdesc index passed by
+   gdbserver.  */
+
+const struct target_desc *
+get_ipa_tdesc (int idx)
+{
+  if (idx >= X86_TDESC_LAST)
+    {
+      internal_error (__FILE__, __LINE__,
+		      "unknown ipa tdesc index: %d", idx);
+    }
+
+#if defined __ILP32__
+  switch (idx)
+    {
+    case X86_TDESC_SSE:
+      return amd64_linux_read_description (X86_XSTATE_SSE_MASK, true);
+    case X86_TDESC_AVX:
+      return amd64_linux_read_description (X86_XSTATE_AVX_MASK, true);
+    case X86_TDESC_AVX_AVX512:
+      return amd64_linux_read_description (X86_XSTATE_AVX_AVX512_MASK, true);
+    default:
+      break;
+    }
+#else
+  return amd64_linux_read_description (idx2mask[idx], false);
+#endif
+
+  internal_error (__FILE__, __LINE__,
+		  "unknown ipa tdesc index: %d", idx);
+}
+
+/* Allocate buffer for the jump pads.  The branch instruction has a
+   reach of +/- 31-bit, and the executable is loaded at low addresses.
+
+   64-bit: Use MAP_32BIT to allocate in the first 2GB.  Shared
+   libraries, being allocated at the top, are unfortunately out of
+   luck.
+
+   x32: Since MAP_32BIT is 64-bit only, do the placement manually.
+   Try allocating at '0x80000000 - SIZE' initially, decreasing until
+   we hit a free area.  This ensures the executable is fully covered,
+   and is as close as possible to the shared libraries, which are
+   usually mapped at the top of the first 4GB of the address space.
+*/
+
+void *
+alloc_jump_pad_buffer (size_t size)
+{
+#if __ILP32__
+  uintptr_t addr;
+  int pagesize;
+
+  pagesize = sysconf (_SC_PAGE_SIZE);
+  if (pagesize == -1)
+    perror_with_name ("sysconf");
+
+  addr = 0x80000000 - size;
+
+  /* size should already be page-aligned, but this can't hurt.  */
+  addr &= ~(pagesize - 1);
+
+  /* Search for a free area.  If we hit 0, we're out of luck.  */
+  for (; addr; addr -= pagesize)
+    {
+      void *res;
+
+      /* No MAP_FIXED - we don't want to zap someone's mapping.  */
+      res = mmap ((void *) addr, size,
+		  PROT_READ | PROT_WRITE | PROT_EXEC,
+		  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+      /* If we got what we wanted, return.  */
+      if ((uintptr_t) res == addr)
+	return res;
+
+      /* If we got a mapping, but at a wrong address, undo it.  */
+      if (res != MAP_FAILED)
+	munmap (res, size);
+    }
+
+  return NULL;
+#else
+  void *res = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
+		    MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0);
+
+  if (res == MAP_FAILED)
+    return NULL;
+
+  return res;
+#endif
+}
+
+void
+initialize_low_tracepoint (void)
+{
+#if defined __ILP32__
+  amd64_linux_read_description (X86_XSTATE_SSE_MASK, true);
+  amd64_linux_read_description (X86_XSTATE_AVX_MASK, true);
+  amd64_linux_read_description (X86_XSTATE_AVX_AVX512_MASK, true);
+#else
+  for (auto i = 0; i < X86_TDESC_LAST; i++)
+    amd64_linux_read_description (idx2mask[i], false);
+#endif
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-arc-low.cc ./gdbserver/linux-arc-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-arc-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-arc-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,418 @@
+/* Target dependent code for the remote server for GNU/Linux ARC.
+
+   Copyright 2020-2021 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 "server.h"
+#include "regdef.h"
+#include "linux-low.h"
+#include "tdesc.h"
+#include "arch/arc.h"
+
+#include <linux/elf.h>
+#include <arpa/inet.h>
+
+/* Linux starting with 4.12 supports NT_ARC_V2 note type, which adds R30,
+   R58 and R59 registers.  */
+#ifdef NT_ARC_V2
+#define ARC_HAS_V2_REGSET
+#endif
+
+/* The encoding of the instruction "TRAP_S 1" (endianness agnostic).  */
+#define TRAP_S_1_OPCODE	0x783e
+#define TRAP_S_1_SIZE	2
+
+/* Using a mere "uint16_t arc_linux_traps_s = TRAP_S_1_OPCODE" would
+   work as well, because the endianness will end up correctly when
+   the code is compiled for the same endianness as the target (see
+   the notes for "low_breakpoint_at" in this file).  However, this
+   illustrates how the __BIG_ENDIAN__ macro can be used to make
+   easy-to-understand codes.  */
+#if defined(__BIG_ENDIAN__)
+/* 0x78, 0x3e.  */
+static gdb_byte arc_linux_trap_s[TRAP_S_1_SIZE]
+	= {TRAP_S_1_OPCODE >> 8, TRAP_S_1_OPCODE & 0xFF};
+#else
+/* 0x3e, 0x78.  */
+static gdb_byte arc_linux_trap_s[TRAP_S_1_SIZE]
+	= {TRAP_S_1_OPCODE && 0xFF, TRAP_S_1_OPCODE >> 8};
+#endif
+
+/* Linux target op definitions for the ARC architecture.
+   Note for future: in case of adding the protected method low_get_next_pcs(),
+   the public method supports_software_single_step() should be added to return
+   "true".  */
+
+class arc_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  bool low_breakpoint_at (CORE_ADDR where) override;
+};
+
+/* The singleton target ops object.  */
+
+static arc_target the_arc_target;
+
+bool
+arc_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+arc_target::low_get_pc (regcache *regcache)
+{
+  return linux_get_pc_32bit (regcache);
+}
+
+void
+arc_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  linux_set_pc_32bit (regcache, pc);
+}
+
+static const struct target_desc *
+arc_linux_read_description (void)
+{
+#ifdef __ARC700__
+  arc_arch_features features (4, ARC_ISA_ARCV1);
+#else
+  arc_arch_features features (4, ARC_ISA_ARCV2);
+#endif
+  struct target_desc *tdesc = arc_create_target_description (features);
+
+  static const char *expedite_regs[] = { "sp", "status32", nullptr };
+  init_target_desc (tdesc, expedite_regs);
+
+  return tdesc;
+}
+
+void
+arc_target::low_arch_setup ()
+{
+  current_process ()->tdesc = arc_linux_read_description ();
+}
+
+bool
+arc_target::low_cannot_fetch_register (int regno)
+{
+  return (regno >= current_process ()->tdesc->reg_defs.size ());
+}
+
+bool
+arc_target::low_cannot_store_register (int regno)
+{
+  return (regno >= current_process ()->tdesc->reg_defs.size ());
+}
+
+/* This works for both endianness.  Below you see an illustration of how
+   the "trap_s 1" instruction encoded for both endianness in the memory
+   will end up as the TRAP_S_1_OPCODE constant:
+
+   BE: 0x78 0x3e --> at INSN addr: 0x78 0x3e --> INSN = 0x783e
+   LE: 0x3e 0x78 --> at INSN addr: 0x3e 0x78 --> INSN = 0x783e
+
+   One can employ "memcmp()" for comparing the arrays too.  */
+
+bool
+arc_target::low_breakpoint_at (CORE_ADDR where)
+{
+  uint16_t insn;
+
+  /* "the_target" global variable is the current object at hand.  */
+  this->read_memory (where, (gdb_byte *) &insn, TRAP_S_1_SIZE);
+  return (insn == TRAP_S_1_OPCODE);
+}
+
+/* PTRACE_GETREGSET/NT_PRSTATUS and PTRACE_SETREGSET/NT_PRSTATUS work with
+   regsets in a struct, "user_regs_struct", defined in the
+   linux/arch/arc/include/uapi/asm/ptrace.h header.  This code supports
+   ARC Linux ABI v3 and v4.  */
+
+/* Populate a ptrace NT_PRSTATUS regset from a regcache.
+
+   This appears to be a unique approach to populating the buffer, but
+   being name, rather than offset based, it is robust to future API
+   changes, as there is no need to create a regmap of registers in the
+   user_regs_struct.  */
+
+static void
+arc_fill_gregset (struct regcache *regcache, void *buf)
+{
+  struct user_regs_struct *regbuf = (struct user_regs_struct *) buf;
+
+  /* Core registers.  */
+  collect_register_by_name (regcache, "r0", &(regbuf->scratch.r0));
+  collect_register_by_name (regcache, "r1", &(regbuf->scratch.r1));
+  collect_register_by_name (regcache, "r2", &(regbuf->scratch.r2));
+  collect_register_by_name (regcache, "r3", &(regbuf->scratch.r3));
+  collect_register_by_name (regcache, "r4", &(regbuf->scratch.r4));
+  collect_register_by_name (regcache, "r5", &(regbuf->scratch.r5));
+  collect_register_by_name (regcache, "r6", &(regbuf->scratch.r6));
+  collect_register_by_name (regcache, "r7", &(regbuf->scratch.r7));
+  collect_register_by_name (regcache, "r8", &(regbuf->scratch.r8));
+  collect_register_by_name (regcache, "r9", &(regbuf->scratch.r9));
+  collect_register_by_name (regcache, "r10", &(regbuf->scratch.r10));
+  collect_register_by_name (regcache, "r11", &(regbuf->scratch.r11));
+  collect_register_by_name (regcache, "r12", &(regbuf->scratch.r12));
+  collect_register_by_name (regcache, "r13", &(regbuf->callee.r13));
+  collect_register_by_name (regcache, "r14", &(regbuf->callee.r14));
+  collect_register_by_name (regcache, "r15", &(regbuf->callee.r15));
+  collect_register_by_name (regcache, "r16", &(regbuf->callee.r16));
+  collect_register_by_name (regcache, "r17", &(regbuf->callee.r17));
+  collect_register_by_name (regcache, "r18", &(regbuf->callee.r18));
+  collect_register_by_name (regcache, "r19", &(regbuf->callee.r19));
+  collect_register_by_name (regcache, "r20", &(regbuf->callee.r20));
+  collect_register_by_name (regcache, "r21", &(regbuf->callee.r21));
+  collect_register_by_name (regcache, "r22", &(regbuf->callee.r22));
+  collect_register_by_name (regcache, "r23", &(regbuf->callee.r23));
+  collect_register_by_name (regcache, "r24", &(regbuf->callee.r24));
+  collect_register_by_name (regcache, "r25", &(regbuf->callee.r25));
+  collect_register_by_name (regcache, "gp", &(regbuf->scratch.gp));
+  collect_register_by_name (regcache, "fp", &(regbuf->scratch.fp));
+  collect_register_by_name (regcache, "sp", &(regbuf->scratch.sp));
+  collect_register_by_name (regcache, "blink", &(regbuf->scratch.blink));
+
+  /* Loop registers.  */
+  collect_register_by_name (regcache, "lp_count", &(regbuf->scratch.lp_count));
+  collect_register_by_name (regcache, "lp_start", &(regbuf->scratch.lp_start));
+  collect_register_by_name (regcache, "lp_end", &(regbuf->scratch.lp_end));
+
+  /* The current "pc" value must be written to "eret" (exception return
+     address) register, because that is the address that the kernel code
+     will jump back to after a breakpoint exception has been raised.
+     The "pc_stop" value is ignored by the genregs_set() in
+     linux/arch/arc/kernel/ptrace.c.  */
+  collect_register_by_name (regcache, "pc", &(regbuf->scratch.ret));
+
+  /* Currently ARC Linux ptrace doesn't allow writes to status32 because
+     some of its bits are kernel mode-only and shoudn't be writable from
+     user-space.  Writing status32 from debugger could be useful, though,
+     so ability to write non-priviliged bits will be added to kernel
+     sooner or later.  */
+
+  /* BTA.  */
+  collect_register_by_name (regcache, "bta", &(regbuf->scratch.bta));
+}
+
+/* Populate a regcache from a ptrace NT_PRSTATUS regset.  */
+
+static void
+arc_store_gregset (struct regcache *regcache, const void *buf)
+{
+  const struct user_regs_struct *regbuf = (const struct user_regs_struct *) buf;
+
+  /* Core registers.  */
+  supply_register_by_name (regcache, "r0", &(regbuf->scratch.r0));
+  supply_register_by_name (regcache, "r1", &(regbuf->scratch.r1));
+  supply_register_by_name (regcache, "r2", &(regbuf->scratch.r2));
+  supply_register_by_name (regcache, "r3", &(regbuf->scratch.r3));
+  supply_register_by_name (regcache, "r4", &(regbuf->scratch.r4));
+  supply_register_by_name (regcache, "r5", &(regbuf->scratch.r5));
+  supply_register_by_name (regcache, "r6", &(regbuf->scratch.r6));
+  supply_register_by_name (regcache, "r7", &(regbuf->scratch.r7));
+  supply_register_by_name (regcache, "r8", &(regbuf->scratch.r8));
+  supply_register_by_name (regcache, "r9", &(regbuf->scratch.r9));
+  supply_register_by_name (regcache, "r10", &(regbuf->scratch.r10));
+  supply_register_by_name (regcache, "r11", &(regbuf->scratch.r11));
+  supply_register_by_name (regcache, "r12", &(regbuf->scratch.r12));
+  supply_register_by_name (regcache, "r13", &(regbuf->callee.r13));
+  supply_register_by_name (regcache, "r14", &(regbuf->callee.r14));
+  supply_register_by_name (regcache, "r15", &(regbuf->callee.r15));
+  supply_register_by_name (regcache, "r16", &(regbuf->callee.r16));
+  supply_register_by_name (regcache, "r17", &(regbuf->callee.r17));
+  supply_register_by_name (regcache, "r18", &(regbuf->callee.r18));
+  supply_register_by_name (regcache, "r19", &(regbuf->callee.r19));
+  supply_register_by_name (regcache, "r20", &(regbuf->callee.r20));
+  supply_register_by_name (regcache, "r21", &(regbuf->callee.r21));
+  supply_register_by_name (regcache, "r22", &(regbuf->callee.r22));
+  supply_register_by_name (regcache, "r23", &(regbuf->callee.r23));
+  supply_register_by_name (regcache, "r24", &(regbuf->callee.r24));
+  supply_register_by_name (regcache, "r25", &(regbuf->callee.r25));
+  supply_register_by_name (regcache, "gp", &(regbuf->scratch.gp));
+  supply_register_by_name (regcache, "fp", &(regbuf->scratch.fp));
+  supply_register_by_name (regcache, "sp", &(regbuf->scratch.sp));
+  supply_register_by_name (regcache, "blink", &(regbuf->scratch.blink));
+
+  /* Loop registers.  */
+  supply_register_by_name (regcache, "lp_count", &(regbuf->scratch.lp_count));
+  supply_register_by_name (regcache, "lp_start", &(regbuf->scratch.lp_start));
+  supply_register_by_name (regcache, "lp_end", &(regbuf->scratch.lp_end));
+
+  /* The genregs_get() in linux/arch/arc/kernel/ptrace.c populates the
+     pseudo register "stop_pc" with the "efa" (exception fault address)
+     register.  This was deemed necessary, because the breakpoint
+     instruction, "trap_s 1", is a committing one; i.e. the "eret"
+     (exception return address) register will be pointing to the next
+     instruction, while "efa" points to the address that raised the
+     breakpoint.  */
+  supply_register_by_name (regcache, "pc", &(regbuf->stop_pc));
+  unsigned long pcl = regbuf->stop_pc & ~3L;
+  supply_register_by_name (regcache, "pcl", &pcl);
+
+  /* Other auxilliary registers.  */
+  supply_register_by_name (regcache, "status32", &(regbuf->scratch.status32));
+
+  /* BTA.  */
+  supply_register_by_name (regcache, "bta", &(regbuf->scratch.bta));
+}
+
+#ifdef ARC_HAS_V2_REGSET
+
+/* Look through a regcache's TDESC for a register named NAME.
+   If found, return true; false, otherwise.  */
+
+static bool
+is_reg_name_available_p (const struct target_desc *tdesc,
+			 const char *name)
+{
+  for (const gdb::reg &reg : tdesc->reg_defs)
+    if (strcmp (name, reg.name) == 0)
+      return true;
+  return false;
+}
+
+/* Copy registers from regcache to user_regs_arcv2.  */
+
+static void
+arc_fill_v2_regset (struct regcache *regcache, void *buf)
+{
+  struct user_regs_arcv2 *regbuf = (struct user_regs_arcv2 *) buf;
+
+  if (is_reg_name_available_p (regcache->tdesc, "r30"))
+    collect_register_by_name (regcache, "r30", &(regbuf->r30));
+
+  if (is_reg_name_available_p (regcache->tdesc, "r58"))
+    collect_register_by_name (regcache, "r58", &(regbuf->r58));
+
+  if (is_reg_name_available_p (regcache->tdesc, "r59"))
+    collect_register_by_name (regcache, "r59", &(regbuf->r59));
+}
+
+/* Copy registers from user_regs_arcv2 to regcache.  */
+
+static void
+arc_store_v2_regset (struct regcache *regcache, const void *buf)
+{
+  struct user_regs_arcv2 *regbuf = (struct user_regs_arcv2 *) buf;
+
+  if (is_reg_name_available_p (regcache->tdesc, "r30"))
+    supply_register_by_name (regcache, "r30", &(regbuf->r30));
+
+  if (is_reg_name_available_p (regcache->tdesc, "r58"))
+    supply_register_by_name (regcache, "r58", &(regbuf->r58));
+
+  if (is_reg_name_available_p (regcache->tdesc, "r59"))
+    supply_register_by_name (regcache, "r59", &(regbuf->r59));
+}
+
+#endif
+
+/* Fetch the thread-local storage pointer for libthread_db.  Note that
+   this function is not called from GDB, but is called from libthread_db.
+
+   This is the same function as for other architectures, for example in
+   linux-arm-low.c.  */
+
+ps_err_e
+ps_get_thread_area (struct ps_prochandle *ph, lwpid_t lwpid,
+		    int idx, void **base)
+{
+  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, nullptr, base) != 0)
+    return PS_ERR;
+
+  /* IDX is the bias from the thread pointer to the beginning of the
+     thread descriptor.  It has to be subtracted due to implementation
+     quirks in libthread_db.  */
+  *base = (void *) ((char *) *base - idx);
+
+  return PS_OK;
+}
+
+static struct regset_info arc_regsets[] =
+{
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
+    sizeof (struct user_regs_struct), GENERAL_REGS,
+    arc_fill_gregset, arc_store_gregset
+  },
+#ifdef ARC_HAS_V2_REGSET
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARC_V2,
+    sizeof (struct user_regs_arcv2), GENERAL_REGS,
+    arc_fill_v2_regset, arc_store_v2_regset
+  },
+#endif
+  NULL_REGSET
+};
+
+static struct regsets_info arc_regsets_info =
+{
+  arc_regsets,	/* regsets */
+  0,		/* num_regsets */
+  nullptr,	/* disabled regsets */
+};
+
+static struct regs_info arc_regs_info =
+{
+  nullptr,	/* regset_bitmap */
+  nullptr,	/* usrregs */
+  &arc_regsets_info
+};
+
+const regs_info *
+arc_target::get_regs_info ()
+{
+  return &arc_regs_info;
+}
+
+/* One of the methods necessary for Z0 packet support.  */
+
+const gdb_byte *
+arc_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  gdb_assert (kind == TRAP_S_1_SIZE);
+  *size = kind;
+  return arc_linux_trap_s;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_arc_target;
+
+void
+initialize_low_arch (void)
+{
+  initialize_regsets_info (&arc_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-arm-low.cc ./gdbserver/linux-arm-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-arm-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-arm-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,1140 @@
+/* GNU/Linux/ARM specific low level interface, for the remote server for GDB.
+   Copyright (C) 1995-2021 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 "server.h"
+#include "linux-low.h"
+#include "arch/arm.h"
+#include "arch/arm-linux.h"
+#include "arch/arm-get-next-pcs.h"
+#include "linux-aarch32-low.h"
+#include "linux-aarch32-tdesc.h"
+#include "linux-arm-tdesc.h"
+
+#include <sys/uio.h>
+/* Don't include elf.h if linux/elf.h got included by gdb_proc_service.h.
+   On Bionic elf.h and linux/elf.h have conflicting definitions.  */
+#ifndef ELFMAG0
+#include <elf.h>
+#endif
+#include "nat/gdb_ptrace.h"
+#include <signal.h>
+#include <sys/syscall.h>
+
+#ifndef PTRACE_GET_THREAD_AREA
+#define PTRACE_GET_THREAD_AREA 22
+#endif
+
+#ifndef PTRACE_GETWMMXREGS
+# define PTRACE_GETWMMXREGS 18
+# define PTRACE_SETWMMXREGS 19
+#endif
+
+#ifndef PTRACE_GETVFPREGS
+# define PTRACE_GETVFPREGS 27
+# define PTRACE_SETVFPREGS 28
+#endif
+
+#ifndef PTRACE_GETHBPREGS
+#define PTRACE_GETHBPREGS 29
+#define PTRACE_SETHBPREGS 30
+#endif
+
+/* Linux target op definitions for the ARM architecture.  */
+
+class arm_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  int breakpoint_kind_from_pc (CORE_ADDR *pcptr) override;
+
+  int breakpoint_kind_from_current_state (CORE_ADDR *pcptr) override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+  bool supports_software_single_step () override;
+
+  bool supports_z_point_type (char z_type) override;
+
+  bool supports_hardware_single_step () override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  std::vector<CORE_ADDR> low_get_next_pcs (regcache *regcache) override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+
+  int low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+			int size, raw_breakpoint *bp) override;
+
+  int low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+			int size, raw_breakpoint *bp) override;
+
+  bool low_stopped_by_watchpoint () override;
+
+  CORE_ADDR low_stopped_data_address () override;
+
+  arch_process_info *low_new_process () override;
+
+  void low_delete_process (arch_process_info *info) override;
+
+  void low_new_thread (lwp_info *) override;
+
+  void low_delete_thread (arch_lwp_info *) override;
+
+  void low_new_fork (process_info *parent, process_info *child) override;
+
+  void low_prepare_to_resume (lwp_info *lwp) override;
+
+  bool low_supports_catch_syscall () override;
+
+  void low_get_syscall_trapinfo (regcache *regcache, int *sysno) override;
+};
+
+/* The singleton target ops object.  */
+
+static arm_target the_arm_target;
+
+bool
+arm_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+arm_target::low_get_pc (regcache *regcache)
+{
+  return linux_get_pc_32bit (regcache);
+}
+
+void
+arm_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  linux_set_pc_32bit (regcache, pc);
+}
+
+int
+arm_target::breakpoint_kind_from_pc (CORE_ADDR *pcptr)
+{
+  return arm_breakpoint_kind_from_pc (pcptr);
+}
+
+int
+arm_target::breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
+{
+  return arm_breakpoint_kind_from_current_state (pcptr);
+}
+
+const gdb_byte *
+arm_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  return arm_sw_breakpoint_from_kind (kind, size);
+}
+
+bool
+arm_target::low_breakpoint_at (CORE_ADDR pc)
+{
+  return arm_breakpoint_at (pc);
+}
+
+/* Information describing the hardware breakpoint capabilities.  */
+static struct
+{
+  unsigned char arch;
+  unsigned char max_wp_length;
+  unsigned char wp_count;
+  unsigned char bp_count;
+} arm_linux_hwbp_cap;
+
+/* Enum describing the different types of ARM hardware break-/watch-points.  */
+typedef enum
+{
+  arm_hwbp_break = 0,
+  arm_hwbp_load = 1,
+  arm_hwbp_store = 2,
+  arm_hwbp_access = 3
+} arm_hwbp_type;
+
+/* Type describing an ARM Hardware Breakpoint Control register value.  */
+typedef unsigned int arm_hwbp_control_t;
+
+/* Structure used to keep track of hardware break-/watch-points.  */
+struct arm_linux_hw_breakpoint
+{
+  /* Address to break on, or being watched.  */
+  unsigned int address;
+  /* Control register for break-/watch- point.  */
+  arm_hwbp_control_t control;
+};
+
+/* Since we cannot dynamically allocate subfields of arch_process_info,
+   assume a maximum number of supported break-/watchpoints.  */
+#define MAX_BPTS 32
+#define MAX_WPTS 32
+
+/* Per-process arch-specific data we want to keep.  */
+struct arch_process_info
+{
+  /* Hardware breakpoints for this process.  */
+  struct arm_linux_hw_breakpoint bpts[MAX_BPTS];
+  /* Hardware watchpoints for this process.  */
+  struct arm_linux_hw_breakpoint wpts[MAX_WPTS];
+};
+
+/* Per-thread arch-specific data we want to keep.  */
+struct arch_lwp_info
+{
+  /* Non-zero if our copy differs from what's recorded in the thread.  */
+  char bpts_changed[MAX_BPTS];
+  char wpts_changed[MAX_WPTS];
+  /* Cached stopped data address.  */
+  CORE_ADDR stopped_data_address;
+};
+
+/* These are in <asm/elf.h> in current kernels.  */
+#define HWCAP_VFP       64
+#define HWCAP_IWMMXT    512
+#define HWCAP_NEON      4096
+#define HWCAP_VFPv3     8192
+#define HWCAP_VFPv3D16  16384
+
+#ifdef HAVE_SYS_REG_H
+#include <sys/reg.h>
+#endif
+
+#define arm_num_regs 26
+
+static int arm_regmap[] = {
+  0, 4, 8, 12, 16, 20, 24, 28,
+  32, 36, 40, 44, 48, 52, 56, 60,
+  -1, -1, -1, -1, -1, -1, -1, -1, -1,
+  64
+};
+
+/* Forward declarations needed for get_next_pcs ops.  */
+static ULONGEST get_next_pcs_read_memory_unsigned_integer (CORE_ADDR memaddr,
+							   int len,
+							   int byte_order);
+
+static CORE_ADDR get_next_pcs_addr_bits_remove (struct arm_get_next_pcs *self,
+						CORE_ADDR val);
+
+static CORE_ADDR get_next_pcs_syscall_next_pc (struct arm_get_next_pcs *self);
+
+static int get_next_pcs_is_thumb (struct arm_get_next_pcs *self);
+
+/* get_next_pcs operations.  */
+static struct arm_get_next_pcs_ops get_next_pcs_ops = {
+  get_next_pcs_read_memory_unsigned_integer,
+  get_next_pcs_syscall_next_pc,
+  get_next_pcs_addr_bits_remove,
+  get_next_pcs_is_thumb,
+  arm_linux_get_next_pcs_fixup,
+};
+
+bool
+arm_target::low_cannot_store_register (int regno)
+{
+  return (regno >= arm_num_regs);
+}
+
+bool
+arm_target::low_cannot_fetch_register (int regno)
+{
+  return (regno >= arm_num_regs);
+}
+
+static void
+arm_fill_wmmxregset (struct regcache *regcache, void *buf)
+{
+  if (arm_linux_get_tdesc_fp_type (regcache->tdesc) != ARM_FP_TYPE_IWMMXT)
+    return;
+
+  for (int i = 0; i < 16; i++)
+    collect_register (regcache, arm_num_regs + i, (char *) buf + i * 8);
+
+  /* We only have access to wcssf, wcasf, and wcgr0-wcgr3.  */
+  for (int i = 0; i < 6; i++)
+    collect_register (regcache, arm_num_regs + i + 16,
+		      (char *) buf + 16 * 8 + i * 4);
+}
+
+static void
+arm_store_wmmxregset (struct regcache *regcache, const void *buf)
+{
+  if (arm_linux_get_tdesc_fp_type (regcache->tdesc) != ARM_FP_TYPE_IWMMXT)
+    return;
+
+  for (int i = 0; i < 16; i++)
+    supply_register (regcache, arm_num_regs + i, (char *) buf + i * 8);
+
+  /* We only have access to wcssf, wcasf, and wcgr0-wcgr3.  */
+  for (int i = 0; i < 6; i++)
+    supply_register (regcache, arm_num_regs + i + 16,
+		     (char *) buf + 16 * 8 + i * 4);
+}
+
+static void
+arm_fill_vfpregset (struct regcache *regcache, void *buf)
+{
+  int num;
+
+  if (is_aarch32_linux_description (regcache->tdesc))
+    num = 32;
+  else
+    {
+      arm_fp_type fp_type = arm_linux_get_tdesc_fp_type (regcache->tdesc);
+
+      if (fp_type == ARM_FP_TYPE_VFPV3)
+	num = 32;
+      else if (fp_type == ARM_FP_TYPE_VFPV2)
+	num = 16;
+      else
+	return;
+    }
+
+  arm_fill_vfpregset_num (regcache, buf, num);
+}
+
+/* Wrapper of UNMAKE_THUMB_ADDR for get_next_pcs.  */
+static CORE_ADDR
+get_next_pcs_addr_bits_remove (struct arm_get_next_pcs *self, CORE_ADDR val)
+{
+  return UNMAKE_THUMB_ADDR (val);
+}
+
+static void
+arm_store_vfpregset (struct regcache *regcache, const void *buf)
+{
+  int num;
+
+  if (is_aarch32_linux_description (regcache->tdesc))
+    num = 32;
+  else
+    {
+      arm_fp_type fp_type = arm_linux_get_tdesc_fp_type (regcache->tdesc);
+
+      if (fp_type == ARM_FP_TYPE_VFPV3)
+	num = 32;
+      else if (fp_type == ARM_FP_TYPE_VFPV2)
+	num = 16;
+      else
+	return;
+    }
+
+  arm_store_vfpregset_num (regcache, buf, num);
+}
+
+/* Wrapper of arm_is_thumb_mode for get_next_pcs.  */
+static int
+get_next_pcs_is_thumb (struct arm_get_next_pcs *self)
+{
+  return arm_is_thumb_mode ();
+}
+
+/* Read memory from the inferior.
+   BYTE_ORDER is ignored and there to keep compatiblity with GDB's
+   read_memory_unsigned_integer. */
+static ULONGEST
+get_next_pcs_read_memory_unsigned_integer (CORE_ADDR memaddr,
+					   int len,
+					   int byte_order)
+{
+  ULONGEST res;
+
+  res = 0;
+  target_read_memory (memaddr, (unsigned char *) &res, len);
+
+  return res;
+}
+
+/* Fetch the thread-local storage pointer for libthread_db.  */
+
+ps_err_e
+ps_get_thread_area (struct ps_prochandle *ph,
+		    lwpid_t lwpid, int idx, void **base)
+{
+  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
+    return PS_ERR;
+
+  /* IDX is the bias from the thread pointer to the beginning of the
+     thread descriptor.  It has to be subtracted due to implementation
+     quirks in libthread_db.  */
+  *base = (void *) ((char *)*base - idx);
+
+  return PS_OK;
+}
+
+
+/* Query Hardware Breakpoint information for the target we are attached to
+   (using PID as ptrace argument) and set up arm_linux_hwbp_cap.  */
+static void
+arm_linux_init_hwbp_cap (int pid)
+{
+  unsigned int val;
+
+  if (ptrace (PTRACE_GETHBPREGS, pid, 0, &val) < 0)
+    return;
+
+  arm_linux_hwbp_cap.arch = (unsigned char)((val >> 24) & 0xff);
+  if (arm_linux_hwbp_cap.arch == 0)
+    return;
+
+  arm_linux_hwbp_cap.max_wp_length = (unsigned char)((val >> 16) & 0xff);
+  arm_linux_hwbp_cap.wp_count = (unsigned char)((val >> 8) & 0xff);
+  arm_linux_hwbp_cap.bp_count = (unsigned char)(val & 0xff);
+
+  if (arm_linux_hwbp_cap.wp_count > MAX_WPTS)
+    internal_error (__FILE__, __LINE__, "Unsupported number of watchpoints");
+  if (arm_linux_hwbp_cap.bp_count > MAX_BPTS)
+    internal_error (__FILE__, __LINE__, "Unsupported number of breakpoints");
+}
+
+/* How many hardware breakpoints are available?  */
+static int
+arm_linux_get_hw_breakpoint_count (void)
+{
+  return arm_linux_hwbp_cap.bp_count;
+}
+
+/* How many hardware watchpoints are available?  */
+static int
+arm_linux_get_hw_watchpoint_count (void)
+{
+  return arm_linux_hwbp_cap.wp_count;
+}
+
+/* Maximum length of area watched by hardware watchpoint.  */
+static int
+arm_linux_get_hw_watchpoint_max_length (void)
+{
+  return arm_linux_hwbp_cap.max_wp_length;
+}
+
+/* Initialize an ARM hardware break-/watch-point control register value.
+   BYTE_ADDRESS_SELECT is the mask of bytes to trigger on; HWBP_TYPE is the
+   type of break-/watch-point; ENABLE indicates whether the point is enabled.
+   */
+static arm_hwbp_control_t
+arm_hwbp_control_initialize (unsigned byte_address_select,
+			     arm_hwbp_type hwbp_type,
+			     int enable)
+{
+  gdb_assert ((byte_address_select & ~0xffU) == 0);
+  gdb_assert (hwbp_type != arm_hwbp_break
+	      || ((byte_address_select & 0xfU) != 0));
+
+  return (byte_address_select << 5) | (hwbp_type << 3) | (3 << 1) | enable;
+}
+
+/* Does the breakpoint control value CONTROL have the enable bit set?  */
+static int
+arm_hwbp_control_is_enabled (arm_hwbp_control_t control)
+{
+  return control & 0x1;
+}
+
+/* Is the breakpoint control value CONTROL initialized?  */
+static int
+arm_hwbp_control_is_initialized (arm_hwbp_control_t control)
+{
+  return control != 0;
+}
+
+/* Change a breakpoint control word so that it is in the disabled state.  */
+static arm_hwbp_control_t
+arm_hwbp_control_disable (arm_hwbp_control_t control)
+{
+  return control & ~0x1;
+}
+
+/* Are two break-/watch-points equal?  */
+static int
+arm_linux_hw_breakpoint_equal (const struct arm_linux_hw_breakpoint *p1,
+			       const struct arm_linux_hw_breakpoint *p2)
+{
+  return p1->address == p2->address && p1->control == p2->control;
+}
+
+/* Convert a raw breakpoint type to an enum arm_hwbp_type.  */
+
+static arm_hwbp_type
+raw_bkpt_type_to_arm_hwbp_type (enum raw_bkpt_type raw_type)
+{
+  switch (raw_type)
+    {
+    case raw_bkpt_type_hw:
+      return arm_hwbp_break;
+    case raw_bkpt_type_write_wp:
+      return arm_hwbp_store;
+    case raw_bkpt_type_read_wp:
+      return arm_hwbp_load;
+    case raw_bkpt_type_access_wp:
+      return arm_hwbp_access;
+    default:
+      gdb_assert_not_reached ("unhandled raw type");
+    }
+}
+
+/* Initialize the hardware breakpoint structure P for a breakpoint or
+   watchpoint at ADDR to LEN.  The type of watchpoint is given in TYPE.
+   Returns -1 if TYPE is unsupported, or -2 if the particular combination
+   of ADDR and LEN cannot be implemented.  Otherwise, returns 0 if TYPE
+   represents a breakpoint and 1 if type represents a watchpoint.  */
+static int
+arm_linux_hw_point_initialize (enum raw_bkpt_type raw_type, CORE_ADDR addr,
+			       int len, struct arm_linux_hw_breakpoint *p)
+{
+  arm_hwbp_type hwbp_type;
+  unsigned mask;
+
+  hwbp_type = raw_bkpt_type_to_arm_hwbp_type (raw_type);
+
+  if (hwbp_type == arm_hwbp_break)
+    {
+      /* For breakpoints, the length field encodes the mode.  */
+      switch (len)
+	{
+	case 2:	 /* 16-bit Thumb mode breakpoint */
+	case 3:  /* 32-bit Thumb mode breakpoint */
+	  mask = 0x3;
+	  addr &= ~1;
+	  break;
+	case 4:  /* 32-bit ARM mode breakpoint */
+	  mask = 0xf;
+	  addr &= ~3;
+	  break;
+	default:
+	  /* Unsupported. */
+	  return -2;
+	}
+    }
+  else
+    {
+      CORE_ADDR max_wp_length = arm_linux_get_hw_watchpoint_max_length ();
+      CORE_ADDR aligned_addr;
+
+      /* Can not set watchpoints for zero or negative lengths.  */
+      if (len <= 0)
+	return -2;
+      /* The current ptrace interface can only handle watchpoints that are a
+	 power of 2.  */
+      if ((len & (len - 1)) != 0)
+	return -2;
+
+      /* Test that the range [ADDR, ADDR + LEN) fits into the largest address
+	 range covered by a watchpoint.  */
+      aligned_addr = addr & ~(max_wp_length - 1);
+      if (aligned_addr + max_wp_length < addr + len)
+	return -2;
+
+      mask = (1 << len) - 1;
+    }
+
+  p->address = (unsigned int) addr;
+  p->control = arm_hwbp_control_initialize (mask, hwbp_type, 1);
+
+  return hwbp_type != arm_hwbp_break;
+}
+
+/* Callback to mark a watch-/breakpoint to be updated in all threads of
+   the current process.  */
+
+static void
+update_registers_callback (thread_info *thread, int watch, int i)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+
+  /* The actual update is done later just before resuming the lwp,
+     we just mark that the registers need updating.  */
+  if (watch)
+    lwp->arch_private->wpts_changed[i] = 1;
+  else
+    lwp->arch_private->bpts_changed[i] = 1;
+
+  /* If the lwp isn't stopped, force it to momentarily pause, so
+     we can update its breakpoint registers.  */
+  if (!lwp->stopped)
+    linux_stop_lwp (lwp);
+}
+
+bool
+arm_target::supports_z_point_type (char z_type)
+{
+  switch (z_type)
+    {
+    case Z_PACKET_SW_BP:
+    case Z_PACKET_HW_BP:
+    case Z_PACKET_WRITE_WP:
+    case Z_PACKET_READ_WP:
+    case Z_PACKET_ACCESS_WP:
+      return true;
+    default:
+      /* Leave the handling of sw breakpoints with the gdb client.  */
+      return false;
+    }
+}
+
+/* Insert hardware break-/watchpoint.  */
+int
+arm_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+			      int len, raw_breakpoint *bp)
+{
+  struct process_info *proc = current_process ();
+  struct arm_linux_hw_breakpoint p, *pts;
+  int watch, i, count;
+
+  watch = arm_linux_hw_point_initialize (type, addr, len, &p);
+  if (watch < 0)
+    {
+      /* Unsupported.  */
+      return watch == -1 ? 1 : -1;
+    }
+
+  if (watch)
+    {
+      count = arm_linux_get_hw_watchpoint_count ();
+      pts = proc->priv->arch_private->wpts;
+    }
+  else
+    {
+      count = arm_linux_get_hw_breakpoint_count ();
+      pts = proc->priv->arch_private->bpts;
+    }
+
+  for (i = 0; i < count; i++)
+    if (!arm_hwbp_control_is_enabled (pts[i].control))
+      {
+	pts[i] = p;
+
+	/* Only update the threads of the current process.  */
+	for_each_thread (current_thread->id.pid (), [&] (thread_info *thread)
+	  {
+	    update_registers_callback (thread, watch, i);
+	  });
+
+	return 0;
+      }
+
+  /* We're out of watchpoints.  */
+  return -1;
+}
+
+/* Remove hardware break-/watchpoint.  */
+int
+arm_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+			      int len, raw_breakpoint *bp)
+{
+  struct process_info *proc = current_process ();
+  struct arm_linux_hw_breakpoint p, *pts;
+  int watch, i, count;
+
+  watch = arm_linux_hw_point_initialize (type, addr, len, &p);
+  if (watch < 0)
+    {
+      /* Unsupported.  */
+      return -1;
+    }
+
+  if (watch)
+    {
+      count = arm_linux_get_hw_watchpoint_count ();
+      pts = proc->priv->arch_private->wpts;
+    }
+  else
+    {
+      count = arm_linux_get_hw_breakpoint_count ();
+      pts = proc->priv->arch_private->bpts;
+    }
+
+  for (i = 0; i < count; i++)
+    if (arm_linux_hw_breakpoint_equal (&p, pts + i))
+      {
+	pts[i].control = arm_hwbp_control_disable (pts[i].control);
+
+	/* Only update the threads of the current process.  */
+	for_each_thread (current_thread->id.pid (), [&] (thread_info *thread)
+	  {
+	    update_registers_callback (thread, watch, i);
+	  });
+
+	return 0;
+      }
+
+  /* No watchpoint matched.  */
+  return -1;
+}
+
+/* Return whether current thread is stopped due to a watchpoint.  */
+bool
+arm_target::low_stopped_by_watchpoint ()
+{
+  struct lwp_info *lwp = get_thread_lwp (current_thread);
+  siginfo_t siginfo;
+
+  /* We must be able to set hardware watchpoints.  */
+  if (arm_linux_get_hw_watchpoint_count () == 0)
+    return false;
+
+  /* Retrieve siginfo.  */
+  errno = 0;
+  ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread), 0, &siginfo);
+  if (errno != 0)
+    return false;
+
+  /* This must be a hardware breakpoint.  */
+  if (siginfo.si_signo != SIGTRAP
+      || (siginfo.si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */)
+    return false;
+
+  /* If we are in a positive slot then we're looking at a breakpoint and not
+     a watchpoint.  */
+  if (siginfo.si_errno >= 0)
+    return false;
+
+  /* Cache stopped data address for use by arm_stopped_data_address.  */
+  lwp->arch_private->stopped_data_address
+    = (CORE_ADDR) (uintptr_t) siginfo.si_addr;
+
+  return true;
+}
+
+/* Return data address that triggered watchpoint.  Called only if
+   low_stopped_by_watchpoint returned true.  */
+CORE_ADDR
+arm_target::low_stopped_data_address ()
+{
+  struct lwp_info *lwp = get_thread_lwp (current_thread);
+  return lwp->arch_private->stopped_data_address;
+}
+
+/* Called when a new process is created.  */
+arch_process_info *
+arm_target::low_new_process ()
+{
+  struct arch_process_info *info = XCNEW (struct arch_process_info);
+  return info;
+}
+
+/* Called when a process is being deleted.  */
+
+void
+arm_target::low_delete_process (arch_process_info *info)
+{
+  xfree (info);
+}
+
+/* Called when a new thread is detected.  */
+void
+arm_target::low_new_thread (lwp_info *lwp)
+{
+  struct arch_lwp_info *info = XCNEW (struct arch_lwp_info);
+  int i;
+
+  for (i = 0; i < MAX_BPTS; i++)
+    info->bpts_changed[i] = 1;
+  for (i = 0; i < MAX_WPTS; i++)
+    info->wpts_changed[i] = 1;
+
+  lwp->arch_private = info;
+}
+
+/* Function to call when a thread is being deleted.  */
+
+void
+arm_target::low_delete_thread (arch_lwp_info *arch_lwp)
+{
+  xfree (arch_lwp);
+}
+
+void
+arm_target::low_new_fork (process_info *parent, process_info *child)
+{
+  struct arch_process_info *parent_proc_info;
+  struct arch_process_info *child_proc_info;
+  struct lwp_info *child_lwp;
+  struct arch_lwp_info *child_lwp_info;
+  int i;
+
+  /* These are allocated by linux_add_process.  */
+  gdb_assert (parent->priv != NULL
+	      && parent->priv->arch_private != NULL);
+  gdb_assert (child->priv != NULL
+	      && child->priv->arch_private != NULL);
+
+  parent_proc_info = parent->priv->arch_private;
+  child_proc_info = child->priv->arch_private;
+
+  /* Linux kernel before 2.6.33 commit
+     72f674d203cd230426437cdcf7dd6f681dad8b0d
+     will inherit hardware debug registers from parent
+     on fork/vfork/clone.  Newer Linux kernels create such tasks with
+     zeroed debug registers.
+
+     GDB core assumes the child inherits the watchpoints/hw
+     breakpoints of the parent, and will remove them all from the
+     forked off process.  Copy the debug registers mirrors into the
+     new process so that all breakpoints and watchpoints can be
+     removed together.  The debug registers mirror will become zeroed
+     in the end before detaching the forked off process, thus making
+     this compatible with older Linux kernels too.  */
+
+  *child_proc_info = *parent_proc_info;
+
+  /* Mark all the hardware breakpoints and watchpoints as changed to
+     make sure that the registers will be updated.  */
+  child_lwp = find_lwp_pid (ptid_t (child->pid));
+  child_lwp_info = child_lwp->arch_private;
+  for (i = 0; i < MAX_BPTS; i++)
+    child_lwp_info->bpts_changed[i] = 1;
+  for (i = 0; i < MAX_WPTS; i++)
+    child_lwp_info->wpts_changed[i] = 1;
+}
+
+/* Called when resuming a thread.
+   If the debug regs have changed, update the thread's copies.  */
+void
+arm_target::low_prepare_to_resume (lwp_info *lwp)
+{
+  struct thread_info *thread = get_lwp_thread (lwp);
+  int pid = lwpid_of (thread);
+  struct process_info *proc = find_process_pid (pid_of (thread));
+  struct arch_process_info *proc_info = proc->priv->arch_private;
+  struct arch_lwp_info *lwp_info = lwp->arch_private;
+  int i;
+
+  for (i = 0; i < arm_linux_get_hw_breakpoint_count (); i++)
+    if (lwp_info->bpts_changed[i])
+      {
+	errno = 0;
+
+	if (arm_hwbp_control_is_enabled (proc_info->bpts[i].control))
+	  if (ptrace (PTRACE_SETHBPREGS, pid,
+		      (PTRACE_TYPE_ARG3) ((i << 1) + 1),
+		      &proc_info->bpts[i].address) < 0)
+	    perror_with_name ("Unexpected error setting breakpoint address");
+
+	if (arm_hwbp_control_is_initialized (proc_info->bpts[i].control))
+	  if (ptrace (PTRACE_SETHBPREGS, pid,
+		      (PTRACE_TYPE_ARG3) ((i << 1) + 2),
+		      &proc_info->bpts[i].control) < 0)
+	    perror_with_name ("Unexpected error setting breakpoint");
+
+	lwp_info->bpts_changed[i] = 0;
+      }
+
+  for (i = 0; i < arm_linux_get_hw_watchpoint_count (); i++)
+    if (lwp_info->wpts_changed[i])
+      {
+	errno = 0;
+
+	if (arm_hwbp_control_is_enabled (proc_info->wpts[i].control))
+	  if (ptrace (PTRACE_SETHBPREGS, pid,
+		      (PTRACE_TYPE_ARG3) -((i << 1) + 1),
+		      &proc_info->wpts[i].address) < 0)
+	    perror_with_name ("Unexpected error setting watchpoint address");
+
+	if (arm_hwbp_control_is_initialized (proc_info->wpts[i].control))
+	  if (ptrace (PTRACE_SETHBPREGS, pid,
+		      (PTRACE_TYPE_ARG3) -((i << 1) + 2),
+		      &proc_info->wpts[i].control) < 0)
+	    perror_with_name ("Unexpected error setting watchpoint");
+
+	lwp_info->wpts_changed[i] = 0;
+      }
+}
+
+/* Find the next pc for a sigreturn or rt_sigreturn syscall.  In
+   addition, set IS_THUMB depending on whether we will return to ARM
+   or Thumb code.
+   See arm-linux.h for stack layout details.  */
+static CORE_ADDR
+arm_sigreturn_next_pc (struct regcache *regcache, int svc_number,
+		       int *is_thumb)
+{
+  unsigned long sp;
+  unsigned long sp_data;
+  /* Offset of PC register.  */
+  int pc_offset = 0;
+  CORE_ADDR next_pc = 0;
+  uint32_t cpsr;
+
+  gdb_assert (svc_number == __NR_sigreturn || svc_number == __NR_rt_sigreturn);
+
+  collect_register_by_name (regcache, "sp", &sp);
+  the_target->read_memory (sp, (unsigned char *) &sp_data, 4);
+
+  pc_offset = arm_linux_sigreturn_next_pc_offset
+    (sp, sp_data, svc_number, __NR_sigreturn == svc_number ? 1 : 0);
+
+  the_target->read_memory (sp + pc_offset, (unsigned char *) &next_pc, 4);
+
+  /* Set IS_THUMB according the CPSR saved on the stack.  */
+  the_target->read_memory (sp + pc_offset + 4, (unsigned char *) &cpsr, 4);
+  *is_thumb = ((cpsr & CPSR_T) != 0);
+
+  return next_pc;
+}
+
+/* When PC is at a syscall instruction, return the PC of the next
+   instruction to be executed.  */
+static CORE_ADDR
+get_next_pcs_syscall_next_pc (struct arm_get_next_pcs *self)
+{
+  CORE_ADDR next_pc = 0;
+  CORE_ADDR pc = regcache_read_pc (self->regcache);
+  int is_thumb = arm_is_thumb_mode ();
+  ULONGEST svc_number = 0;
+  struct regcache *regcache = self->regcache;
+
+  if (is_thumb)
+    {
+      collect_register (regcache, 7, &svc_number);
+      next_pc = pc + 2;
+    }
+  else
+    {
+      unsigned long this_instr;
+      unsigned long svc_operand;
+
+      target_read_memory (pc, (unsigned char *) &this_instr, 4);
+      svc_operand = (0x00ffffff & this_instr);
+
+      if (svc_operand)  /* OABI.  */
+	{
+	  svc_number = svc_operand - 0x900000;
+	}
+      else /* EABI.  */
+	{
+	  collect_register (regcache, 7, &svc_number);
+	}
+
+      next_pc = pc + 4;
+    }
+
+  /* This is a sigreturn or sigreturn_rt syscall.  */
+  if (svc_number == __NR_sigreturn || svc_number == __NR_rt_sigreturn)
+    {
+      /* SIGRETURN or RT_SIGRETURN may affect the arm thumb mode, so
+	 update IS_THUMB.   */
+      next_pc = arm_sigreturn_next_pc (regcache, svc_number, &is_thumb);
+    }
+
+  /* Addresses for calling Thumb functions have the bit 0 set.  */
+  if (is_thumb)
+    next_pc = MAKE_THUMB_ADDR (next_pc);
+
+  return next_pc;
+}
+
+static const struct target_desc *
+arm_read_description (void)
+{
+  unsigned long arm_hwcap = linux_get_hwcap (4);
+
+  if (arm_hwcap & HWCAP_IWMMXT)
+    return arm_linux_read_description (ARM_FP_TYPE_IWMMXT);
+
+  if (arm_hwcap & HWCAP_VFP)
+    {
+      /* Make sure that the kernel supports reading VFP registers.  Support was
+	 added in 2.6.30.  */
+      int pid = lwpid_of (current_thread);
+      errno = 0;
+      char *buf = (char *) alloca (ARM_VFP3_REGS_SIZE);
+      if (ptrace (PTRACE_GETVFPREGS, pid, 0, buf) < 0 && errno == EIO)
+	return arm_linux_read_description (ARM_FP_TYPE_NONE);
+
+      /* NEON implies either no VFP, or VFPv3-D32.  We only support
+	 it with VFP.  */
+      if (arm_hwcap & HWCAP_NEON)
+	return aarch32_linux_read_description ();
+      else if ((arm_hwcap & (HWCAP_VFPv3 | HWCAP_VFPv3D16)) == HWCAP_VFPv3)
+	return arm_linux_read_description (ARM_FP_TYPE_VFPV3);
+      else
+	return arm_linux_read_description (ARM_FP_TYPE_VFPV2);
+    }
+
+  /* The default configuration uses legacy FPA registers, probably
+     simulated.  */
+  return arm_linux_read_description (ARM_FP_TYPE_NONE);
+}
+
+void
+arm_target::low_arch_setup ()
+{
+  int tid = lwpid_of (current_thread);
+  int gpregs[18];
+  struct iovec iov;
+
+  /* Query hardware watchpoint/breakpoint capabilities.  */
+  arm_linux_init_hwbp_cap (tid);
+
+  current_process ()->tdesc = arm_read_description ();
+
+  iov.iov_base = gpregs;
+  iov.iov_len = sizeof (gpregs);
+
+  /* Check if PTRACE_GETREGSET works.  */
+  if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iov) == 0)
+    have_ptrace_getregset = 1;
+  else
+    have_ptrace_getregset = 0;
+}
+
+bool
+arm_target::supports_software_single_step ()
+{
+  return true;
+}
+
+/* Fetch the next possible PCs after the current instruction executes.  */
+
+std::vector<CORE_ADDR>
+arm_target::low_get_next_pcs (regcache *regcache)
+{
+  struct arm_get_next_pcs next_pcs_ctx;
+
+  arm_get_next_pcs_ctor (&next_pcs_ctx,
+			 &get_next_pcs_ops,
+			 /* Byte order is ignored assumed as host.  */
+			 0,
+			 0,
+			 1,
+			 regcache);
+
+  return arm_get_next_pcs (&next_pcs_ctx);
+}
+
+/* Support for hardware single step.  */
+
+bool
+arm_target::supports_hardware_single_step ()
+{
+  return false;
+}
+
+bool
+arm_target::low_supports_catch_syscall ()
+{
+  return true;
+}
+
+/* Implementation of linux target ops method "low_get_syscall_trapinfo".  */
+
+void
+arm_target::low_get_syscall_trapinfo (regcache *regcache, int *sysno)
+{
+  if (arm_is_thumb_mode ())
+    collect_register_by_name (regcache, "r7", sysno);
+  else
+    {
+      unsigned long pc;
+      unsigned long insn;
+
+      collect_register_by_name (regcache, "pc", &pc);
+
+      if (read_memory (pc - 4, (unsigned char *) &insn, 4))
+	*sysno = UNKNOWN_SYSCALL;
+      else
+	{
+	  unsigned long svc_operand = (0x00ffffff & insn);
+
+	  if (svc_operand)
+	    {
+	      /* OABI */
+	      *sysno = svc_operand - 0x900000;
+	    }
+	  else
+	    {
+	      /* EABI */
+	      collect_register_by_name (regcache, "r7", sysno);
+	    }
+	}
+    }
+}
+
+/* Register sets without using PTRACE_GETREGSET.  */
+
+static struct regset_info arm_regsets[] = {
+  { PTRACE_GETREGS, PTRACE_SETREGS, 0,
+    ARM_CORE_REGS_SIZE + ARM_INT_REGISTER_SIZE, GENERAL_REGS,
+    arm_fill_gregset, arm_store_gregset },
+  { PTRACE_GETWMMXREGS, PTRACE_SETWMMXREGS, 0, IWMMXT_REGS_SIZE, EXTENDED_REGS,
+    arm_fill_wmmxregset, arm_store_wmmxregset },
+  { PTRACE_GETVFPREGS, PTRACE_SETVFPREGS, 0, ARM_VFP3_REGS_SIZE, EXTENDED_REGS,
+    arm_fill_vfpregset, arm_store_vfpregset },
+  NULL_REGSET
+};
+
+static struct regsets_info arm_regsets_info =
+  {
+    arm_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct usrregs_info arm_usrregs_info =
+  {
+    arm_num_regs,
+    arm_regmap,
+  };
+
+static struct regs_info regs_info_arm =
+  {
+    NULL, /* regset_bitmap */
+    &arm_usrregs_info,
+    &arm_regsets_info
+  };
+
+const regs_info *
+arm_target::get_regs_info ()
+{
+  const struct target_desc *tdesc = current_process ()->tdesc;
+
+  if (have_ptrace_getregset == 1
+      && (is_aarch32_linux_description (tdesc)
+	  || arm_linux_get_tdesc_fp_type (tdesc) == ARM_FP_TYPE_VFPV3))
+    return &regs_info_aarch32;
+
+  return &regs_info_arm;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_arm_target;
+
+void
+initialize_low_arch (void)
+{
+  initialize_low_arch_aarch32 ();
+  initialize_regsets_info (&arm_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-arm-tdesc.cc ./gdbserver/linux-arm-tdesc.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-arm-tdesc.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-arm-tdesc.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,65 @@
+/* Copyright (C) 2019-2021 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 "server.h"
+
+#include "linux-arm-tdesc.h"
+
+#include "tdesc.h"
+#include "arch/arm.h"
+#include <inttypes.h>
+
+/* All possible Arm target descriptors.  */
+static struct target_desc *tdesc_arm_list[ARM_FP_TYPE_INVALID];
+
+/* See linux-arm-tdesc.h.  */
+
+const target_desc *
+arm_linux_read_description (arm_fp_type fp_type)
+{
+  struct target_desc *tdesc = tdesc_arm_list[fp_type];
+
+  if (tdesc == nullptr)
+    {
+      tdesc = arm_create_target_description (fp_type);
+
+      static const char *expedite_regs[] = { "r11", "sp", "pc", 0 };
+      init_target_desc (tdesc, expedite_regs);
+
+      tdesc_arm_list[fp_type] = tdesc;
+    }
+
+  return tdesc;
+}
+
+/* See linux-arm-tdesc.h.  */
+
+arm_fp_type
+arm_linux_get_tdesc_fp_type (const target_desc *tdesc)
+{
+  gdb_assert (tdesc != nullptr);
+
+  /* Many of the tdesc_arm_list entries may not have been initialised yet.  This
+     is ok, because tdesc must be one of the initialised ones.  */
+  for (int i = ARM_FP_TYPE_NONE; i < ARM_FP_TYPE_INVALID; i++)
+    {
+      if (tdesc == tdesc_arm_list[i])
+	return (arm_fp_type) i;
+    }
+
+  return ARM_FP_TYPE_INVALID;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-arm-tdesc.h ./gdbserver/linux-arm-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-arm-tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-arm-tdesc.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,31 @@
+/* Copyright (C) 2019-2021 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 GDBSERVER_LINUX_ARM_TDESC_H
+#define GDBSERVER_LINUX_ARM_TDESC_H
+
+#include "arch/arm.h"
+
+/* Return the Arm target description with fp registers FP_TYPE.  */
+
+const target_desc * arm_linux_read_description (arm_fp_type fp_type);
+
+/* For a target description TDESC, return its fp type.  */
+
+arm_fp_type arm_linux_get_tdesc_fp_type (const target_desc *tdesc);
+
+#endif /* linux-arm-tdesc.h.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-i386-ipa.cc ./gdbserver/linux-i386-ipa.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-i386-ipa.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-i386-ipa.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,294 @@
+/* GNU/Linux/x86 specific low level interface, for the in-process
+   agent library for GDB.
+
+   Copyright (C) 2010-2021 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 "server.h"
+#include <sys/mman.h>
+#include "tracepoint.h"
+#include "linux-x86-tdesc.h"
+#include "gdbsupport/x86-xstate.h"
+
+/* GDB register numbers.  */
+
+enum i386_gdb_regnum
+{
+  I386_EAX_REGNUM,		/* %eax */
+  I386_ECX_REGNUM,		/* %ecx */
+  I386_EDX_REGNUM,		/* %edx */
+  I386_EBX_REGNUM,		/* %ebx */
+  I386_ESP_REGNUM,		/* %esp */
+  I386_EBP_REGNUM,		/* %ebp */
+  I386_ESI_REGNUM,		/* %esi */
+  I386_EDI_REGNUM,		/* %edi */
+  I386_EIP_REGNUM,		/* %eip */
+  I386_EFLAGS_REGNUM,		/* %eflags */
+  I386_CS_REGNUM,		/* %cs */
+  I386_SS_REGNUM,		/* %ss */
+  I386_DS_REGNUM,		/* %ds */
+  I386_ES_REGNUM,		/* %es */
+  I386_FS_REGNUM,		/* %fs */
+  I386_GS_REGNUM,		/* %gs */
+  I386_ST0_REGNUM		/* %st(0) */
+};
+
+#define i386_num_regs 16
+
+#define FT_CR_EAX 15
+#define FT_CR_ECX 14
+#define FT_CR_EDX 13
+#define FT_CR_EBX 12
+#define FT_CR_UESP 11
+#define FT_CR_EBP 10
+#define FT_CR_ESI 9
+#define FT_CR_EDI 8
+#define FT_CR_EIP 7
+#define FT_CR_EFL 6
+#define FT_CR_DS 5
+#define FT_CR_ES 4
+#define FT_CR_FS 3
+#define FT_CR_GS 2
+#define FT_CR_SS 1
+#define FT_CR_CS 0
+
+/* Mapping between the general-purpose registers in jump tracepoint
+   format and GDB's register array layout.  */
+
+static const int i386_ft_collect_regmap[] =
+{
+  FT_CR_EAX * 4, FT_CR_ECX * 4, FT_CR_EDX * 4, FT_CR_EBX * 4,
+  FT_CR_UESP * 4, FT_CR_EBP * 4, FT_CR_ESI * 4, FT_CR_EDI * 4,
+  FT_CR_EIP * 4, FT_CR_EFL * 4, FT_CR_CS * 4, FT_CR_SS * 4,
+  FT_CR_DS * 4, FT_CR_ES * 4, FT_CR_FS * 4, FT_CR_GS * 4
+};
+
+void
+supply_fast_tracepoint_registers (struct regcache *regcache,
+				  const unsigned char *buf)
+{
+  int i;
+
+  for (i = 0; i < i386_num_regs; i++)
+    {
+      int regval;
+
+      if (i >= I386_CS_REGNUM && i <= I386_GS_REGNUM)
+	regval = *(short *) (((char *) buf) + i386_ft_collect_regmap[i]);
+      else
+	regval = *(int *) (((char *) buf) + i386_ft_collect_regmap[i]);
+
+      supply_register (regcache, i, &regval);
+    }
+}
+
+ULONGEST
+get_raw_reg (const unsigned char *raw_regs, int regnum)
+{
+  /* This should maybe be allowed to return an error code, or perhaps
+     better, have the emit_reg detect this, and emit a constant zero,
+     or something.  */
+
+  if (regnum > i386_num_regs)
+    return 0;
+  else if (regnum >= I386_CS_REGNUM && regnum <= I386_GS_REGNUM)
+    return *(short *) (raw_regs + i386_ft_collect_regmap[regnum]);
+  else
+    return *(int *) (raw_regs + i386_ft_collect_regmap[regnum]);
+}
+
+#ifdef HAVE_UST
+
+#include <ust/processor.h>
+
+/* "struct registers" is the UST object type holding the registers at
+   the time of the static tracepoint marker call.  This doesn't
+   contain EIP, but we know what it must have been (the marker
+   address).  */
+
+#define ST_REGENTRY(REG)			\
+  {						\
+    offsetof (struct registers, REG),		\
+    sizeof (((struct registers *) NULL)->REG)	\
+  }
+
+static struct
+{
+  int offset;
+  int size;
+} i386_st_collect_regmap[] =
+  {
+    ST_REGENTRY(eax),
+    ST_REGENTRY(ecx),
+    ST_REGENTRY(edx),
+    ST_REGENTRY(ebx),
+    ST_REGENTRY(esp),
+    ST_REGENTRY(ebp),
+    ST_REGENTRY(esi),
+    ST_REGENTRY(edi),
+    { -1, 0 }, /* eip */
+    ST_REGENTRY(eflags),
+    ST_REGENTRY(cs),
+    ST_REGENTRY(ss),
+  };
+
+#define i386_NUM_ST_COLLECT_GREGS \
+  (sizeof (i386_st_collect_regmap) / sizeof (i386_st_collect_regmap[0]))
+
+void
+supply_static_tracepoint_registers (struct regcache *regcache,
+				    const unsigned char *buf,
+				    CORE_ADDR pc)
+{
+  int i;
+  unsigned int newpc = pc;
+
+  supply_register (regcache, I386_EIP_REGNUM, &newpc);
+
+  for (i = 0; i < i386_NUM_ST_COLLECT_GREGS; i++)
+    if (i386_st_collect_regmap[i].offset != -1)
+      {
+	switch (i386_st_collect_regmap[i].size)
+	  {
+	  case 4:
+	    supply_register (regcache, i,
+			     ((char *) buf)
+			     + i386_st_collect_regmap[i].offset);
+	    break;
+	  case 2:
+	    {
+	      unsigned long reg
+		= * (short *) (((char *) buf)
+			       + i386_st_collect_regmap[i].offset);
+	      reg &= 0xffff;
+	      supply_register (regcache, i, &reg);
+	    }
+	    break;
+	  default:
+	    internal_error (__FILE__, __LINE__, "unhandled register size: %d",
+			    i386_st_collect_regmap[i].size);
+	  }
+      }
+}
+
+#endif /* HAVE_UST */
+
+
+/* This is only needed because reg-i386-linux-lib.o references it.  We
+   may use it proper at some point.  */
+const char *gdbserver_xmltarget;
+
+/* Attempt to allocate memory for trampolines in the first 64 KiB of
+   memory to enable smaller jump patches.  */
+
+static void
+initialize_fast_tracepoint_trampoline_buffer (void)
+{
+  const CORE_ADDR buffer_end = 64 * 1024;
+  /* Ensure that the buffer will be at least 1 KiB in size, which is
+     enough space for over 200 fast tracepoints.  */
+  const int min_buffer_size = 1024;
+  char buf[IPA_BUFSIZ];
+  CORE_ADDR mmap_min_addr = buffer_end + 1;
+  ULONGEST buffer_size;
+  FILE *f = fopen ("/proc/sys/vm/mmap_min_addr", "r");
+
+  if (!f)
+    {    
+      snprintf (buf, sizeof (buf), "mmap_min_addr open failed: %s",
+		safe_strerror (errno));
+      set_trampoline_buffer_space (0, 0, buf);
+      return;
+    }
+
+  if (fgets (buf, IPA_BUFSIZ, f))
+    sscanf (buf, "%llu", &mmap_min_addr);
+      
+  fclose (f);
+      
+  buffer_size = buffer_end - mmap_min_addr;
+
+  if (buffer_size >= min_buffer_size)
+    {
+      if (mmap ((void *) (uintptr_t) mmap_min_addr, buffer_size,
+		PROT_READ | PROT_EXEC | PROT_WRITE,
+		MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS,
+		-1, 0)
+	  != MAP_FAILED)
+	set_trampoline_buffer_space (mmap_min_addr, buffer_end, NULL);
+      else
+	{
+	  snprintf (buf, IPA_BUFSIZ, "low-64K-buffer mmap() failed: %s",
+		    safe_strerror (errno));
+	  set_trampoline_buffer_space (0, 0, buf);
+	}
+    }
+  else
+    {
+      snprintf (buf, IPA_BUFSIZ, "mmap_min_addr is %d, must be %d or less",
+		(int) mmap_min_addr, (int) buffer_end - min_buffer_size);
+      set_trampoline_buffer_space (0, 0, buf);
+    }
+}
+
+/* Map the tdesc index to xcr0 mask.  */
+static uint64_t idx2mask[X86_TDESC_LAST] = {
+  X86_XSTATE_X87_MASK,
+  X86_XSTATE_SSE_MASK,
+  X86_XSTATE_AVX_MASK,
+  X86_XSTATE_MPX_MASK,
+  X86_XSTATE_AVX_MPX_MASK,
+  X86_XSTATE_AVX_AVX512_MASK,
+  X86_XSTATE_AVX_MPX_AVX512_PKU_MASK,
+};
+
+/* Return target_desc to use for IPA, given the tdesc index passed by
+   gdbserver.  */
+
+const struct target_desc *
+get_ipa_tdesc (int idx)
+{
+  if (idx >= X86_TDESC_LAST)
+    {
+      internal_error (__FILE__, __LINE__,
+		      "unknown ipa tdesc index: %d", idx);
+    }
+  return i386_linux_read_description (idx2mask[idx]);
+}
+
+/* Allocate buffer for the jump pads.  On i386, we can reach an arbitrary
+   address with a jump instruction, so just allocate normally.  */
+
+void *
+alloc_jump_pad_buffer (size_t size)
+{
+  void *res = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
+		    MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+  if (res == MAP_FAILED)
+    return NULL;
+
+  return res;
+}
+
+void
+initialize_low_tracepoint (void)
+{
+  initialize_fast_tracepoint_trampoline_buffer ();
+  for (auto i = 0; i < X86_TDESC_LAST; i++)
+    i386_linux_read_description (idx2mask[i]);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-ia64-low.cc ./gdbserver/linux-ia64-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-ia64-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-ia64-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,396 @@
+/* GNU/Linux/IA64 specific low level interface, for the remote server for GDB.
+   Copyright (C) 1995-2021 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 "server.h"
+#include "linux-low.h"
+
+#ifdef HAVE_SYS_REG_H
+#include <sys/reg.h>
+#endif
+
+/* Linux target op definitions for the IA64 architecture.  */
+
+class ia64_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_fetch_register (regcache *regcache, int regno) override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+};
+
+/* The singleton target ops object.  */
+
+static ia64_target the_ia64_target;
+
+const gdb_byte *
+ia64_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  gdb_assert_not_reached ("target op sw_breakpoint_from_kind is not "
+			  "implemented by this target");
+}
+
+bool
+ia64_target::low_breakpoint_at (CORE_ADDR pc)
+{
+  gdb_assert_not_reached ("linux target op low_breakpoint_at is not "
+			  "implemented by this target");
+}
+
+/* Defined in auto-generated file reg-ia64.c.  */
+void init_registers_ia64 (void);
+extern const struct target_desc *tdesc_ia64;
+
+#define ia64_num_regs 462
+
+#include <asm/ptrace_offsets.h>
+
+static int ia64_regmap[] =
+  {
+    /* general registers */
+    -1,		/* gr0 not available; i.e, it's always zero */
+    PT_R1,
+    PT_R2,
+    PT_R3,
+    PT_R4,
+    PT_R5,
+    PT_R6,
+    PT_R7,
+    PT_R8,
+    PT_R9,
+    PT_R10,
+    PT_R11,
+    PT_R12,
+    PT_R13,
+    PT_R14,
+    PT_R15,
+    PT_R16,
+    PT_R17,
+    PT_R18,
+    PT_R19,
+    PT_R20,
+    PT_R21,
+    PT_R22,
+    PT_R23,
+    PT_R24,
+    PT_R25,
+    PT_R26,
+    PT_R27,
+    PT_R28,
+    PT_R29,
+    PT_R30,
+    PT_R31,
+    /* gr32 through gr127 not directly available via the ptrace interface */
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    /* Floating point registers */
+    -1, -1,	/* f0 and f1 not available (f0 is +0.0 and f1 is +1.0) */
+    PT_F2,
+    PT_F3,
+    PT_F4,
+    PT_F5,
+    PT_F6,
+    PT_F7,
+    PT_F8,
+    PT_F9,
+    PT_F10,
+    PT_F11,
+    PT_F12,
+    PT_F13,
+    PT_F14,
+    PT_F15,
+    PT_F16,
+    PT_F17,
+    PT_F18,
+    PT_F19,
+    PT_F20,
+    PT_F21,
+    PT_F22,
+    PT_F23,
+    PT_F24,
+    PT_F25,
+    PT_F26,
+    PT_F27,
+    PT_F28,
+    PT_F29,
+    PT_F30,
+    PT_F31,
+    PT_F32,
+    PT_F33,
+    PT_F34,
+    PT_F35,
+    PT_F36,
+    PT_F37,
+    PT_F38,
+    PT_F39,
+    PT_F40,
+    PT_F41,
+    PT_F42,
+    PT_F43,
+    PT_F44,
+    PT_F45,
+    PT_F46,
+    PT_F47,
+    PT_F48,
+    PT_F49,
+    PT_F50,
+    PT_F51,
+    PT_F52,
+    PT_F53,
+    PT_F54,
+    PT_F55,
+    PT_F56,
+    PT_F57,
+    PT_F58,
+    PT_F59,
+    PT_F60,
+    PT_F61,
+    PT_F62,
+    PT_F63,
+    PT_F64,
+    PT_F65,
+    PT_F66,
+    PT_F67,
+    PT_F68,
+    PT_F69,
+    PT_F70,
+    PT_F71,
+    PT_F72,
+    PT_F73,
+    PT_F74,
+    PT_F75,
+    PT_F76,
+    PT_F77,
+    PT_F78,
+    PT_F79,
+    PT_F80,
+    PT_F81,
+    PT_F82,
+    PT_F83,
+    PT_F84,
+    PT_F85,
+    PT_F86,
+    PT_F87,
+    PT_F88,
+    PT_F89,
+    PT_F90,
+    PT_F91,
+    PT_F92,
+    PT_F93,
+    PT_F94,
+    PT_F95,
+    PT_F96,
+    PT_F97,
+    PT_F98,
+    PT_F99,
+    PT_F100,
+    PT_F101,
+    PT_F102,
+    PT_F103,
+    PT_F104,
+    PT_F105,
+    PT_F106,
+    PT_F107,
+    PT_F108,
+    PT_F109,
+    PT_F110,
+    PT_F111,
+    PT_F112,
+    PT_F113,
+    PT_F114,
+    PT_F115,
+    PT_F116,
+    PT_F117,
+    PT_F118,
+    PT_F119,
+    PT_F120,
+    PT_F121,
+    PT_F122,
+    PT_F123,
+    PT_F124,
+    PT_F125,
+    PT_F126,
+    PT_F127,
+    /* predicate registers - we don't fetch these individually */
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    /* branch registers */
+    PT_B0,
+    PT_B1,
+    PT_B2,
+    PT_B3,
+    PT_B4,
+    PT_B5,
+    PT_B6,
+    PT_B7,
+    /* virtual frame pointer and virtual return address pointer */
+    -1, -1,
+    /* other registers */
+    PT_PR,
+    PT_CR_IIP,	/* ip */
+    PT_CR_IPSR, /* psr */
+    PT_CFM,	/* cfm */
+    /* kernel registers not visible via ptrace interface (?) */
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    /* hole */
+    -1, -1, -1, -1, -1, -1, -1, -1,
+    PT_AR_RSC,
+    PT_AR_BSP,
+    PT_AR_BSPSTORE,
+    PT_AR_RNAT,
+    -1,
+    -1,		/* Not available: FCR, IA32 floating control register */
+    -1, -1,
+    -1,		/* Not available: EFLAG */
+    -1,		/* Not available: CSD */
+    -1,		/* Not available: SSD */
+    -1,		/* Not available: CFLG */
+    -1,		/* Not available: FSR */
+    -1,		/* Not available: FIR */
+    -1,		/* Not available: FDR */
+    -1,
+    PT_AR_CCV,
+    -1, -1, -1,
+    PT_AR_UNAT,
+    -1, -1, -1,
+    PT_AR_FPSR,
+    -1, -1, -1,
+    -1,		/* Not available: ITC */
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    PT_AR_PFS,
+    PT_AR_LC,
+    PT_AR_EC,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1,
+  };
+
+bool
+ia64_target::low_cannot_store_register (int regno)
+{
+  return false;
+}
+
+bool
+ia64_target::low_cannot_fetch_register (int regno)
+{
+  return false;
+}
+
+/* GDB register numbers.  */
+#define IA64_GR0_REGNUM		0
+#define IA64_FR0_REGNUM		128
+#define IA64_FR1_REGNUM		129
+
+bool
+ia64_target::low_fetch_register (regcache *regcache, int regnum)
+{
+  /* r0 cannot be fetched but is always zero.  */
+  if (regnum == IA64_GR0_REGNUM)
+    {
+      const gdb_byte zero[8] = { 0 };
+
+      gdb_assert (sizeof (zero) == register_size (regcache->tdesc, regnum));
+      supply_register (regcache, regnum, zero);
+      return true;
+    }
+
+  /* fr0 cannot be fetched but is always zero.  */
+  if (regnum == IA64_FR0_REGNUM)
+    {
+      const gdb_byte f_zero[16] = { 0 };
+
+      gdb_assert (sizeof (f_zero) == register_size (regcache->tdesc, regnum));
+      supply_register (regcache, regnum, f_zero);
+      return true;
+    }
+
+  /* fr1 cannot be fetched but is always one (1.0).  */
+  if (regnum == IA64_FR1_REGNUM)
+    {
+      const gdb_byte f_one[16] =
+	{ 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0xff, 0, 0, 0, 0, 0, 0 };
+
+      gdb_assert (sizeof (f_one) == register_size (regcache->tdesc, regnum));
+      supply_register (regcache, regnum, f_one);
+      return true;
+    }
+
+  return false;
+}
+
+static struct usrregs_info ia64_usrregs_info =
+  {
+    ia64_num_regs,
+    ia64_regmap,
+  };
+
+static struct regs_info myregs_info =
+  {
+    NULL, /* regset_bitmap */
+    &ia64_usrregs_info
+  };
+
+const regs_info *
+ia64_target::get_regs_info ()
+{
+  return &myregs_info;
+}
+
+void
+ia64_target::low_arch_setup ()
+{
+  current_process ()->tdesc = tdesc_ia64;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_ia64_target;
+
+void
+initialize_low_arch (void)
+{
+  init_registers_ia64 ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-low.cc ./gdbserver/linux-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,7253 @@
+/* Low level interface to ptrace, for the remote server for GDB.
+   Copyright (C) 1995-2021 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 "server.h"
+#include "linux-low.h"
+#include "nat/linux-osdata.h"
+#include "gdbsupport/agent.h"
+#include "tdesc.h"
+#include "gdbsupport/rsp-low.h"
+#include "gdbsupport/signals-state-save-restore.h"
+#include "nat/linux-nat.h"
+#include "nat/linux-waitpid.h"
+#include "gdbsupport/gdb_wait.h"
+#include "nat/gdb_ptrace.h"
+#include "nat/linux-ptrace.h"
+#include "nat/linux-procfs.h"
+#include "nat/linux-personality.h"
+#include <signal.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/syscall.h>
+#include <sched.h>
+#include <ctype.h>
+#include <pwd.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <sys/vfs.h>
+#include <sys/uio.h>
+#include "gdbsupport/filestuff.h"
+#include "tracepoint.h"
+#include <inttypes.h>
+#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
+   then ELFMAG0 will have been defined.  If it didn't get included by
+   gdb_proc_service.h then including it will likely introduce a duplicate
+   definition of elf_fpregset_t.  */
+#include <elf.h>
+#endif
+#include "nat/linux-namespaces.h"
+
+#ifdef HAVE_PERSONALITY
+# include <sys/personality.h>
+# if !HAVE_DECL_ADDR_NO_RANDOMIZE
+#  define ADDR_NO_RANDOMIZE 0x0040000
+# endif
+#endif
+
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 0
+#endif
+
+#ifndef AT_HWCAP2
+#define AT_HWCAP2 26
+#endif
+
+/* Some targets did not define these ptrace constants from the start,
+   so gdbserver defines them locally here.  In the future, these may
+   be removed after they are added to asm/ptrace.h.  */
+#if !(defined(PT_TEXT_ADDR) \
+      || defined(PT_DATA_ADDR) \
+      || defined(PT_TEXT_END_ADDR))
+#if defined(__mcoldfire__)
+/* These are still undefined in 3.10 kernels.  */
+#define PT_TEXT_ADDR 49*4
+#define PT_DATA_ADDR 50*4
+#define PT_TEXT_END_ADDR  51*4
+/* These are still undefined in 3.10 kernels.  */
+#elif defined(__TMS320C6X__)
+#define PT_TEXT_ADDR     (0x10000*4)
+#define PT_DATA_ADDR     (0x10004*4)
+#define PT_TEXT_END_ADDR (0x10008*4)
+#endif
+#endif
+
+#if (defined(__UCLIBC__)		\
+     && defined(HAS_NOMMU)		\
+     && defined(PT_TEXT_ADDR)		\
+     && defined(PT_DATA_ADDR)		\
+     && defined(PT_TEXT_END_ADDR))
+#define SUPPORTS_READ_OFFSETS
+#endif
+
+#ifdef HAVE_LINUX_BTRACE
+# include "nat/linux-btrace.h"
+# include "gdbsupport/btrace-common.h"
+#endif
+
+#ifndef HAVE_ELF32_AUXV_T
+/* Copied from glibc's elf.h.  */
+typedef struct
+{
+  uint32_t a_type;		/* Entry type */
+  union
+    {
+      uint32_t a_val;		/* Integer value */
+      /* We use to have pointer elements added here.  We cannot do that,
+	 though, since it does not work when using 32-bit definitions
+	 on 64-bit platforms and vice versa.  */
+    } a_un;
+} Elf32_auxv_t;
+#endif
+
+#ifndef HAVE_ELF64_AUXV_T
+/* Copied from glibc's elf.h.  */
+typedef struct
+{
+  uint64_t a_type;		/* Entry type */
+  union
+    {
+      uint64_t a_val;		/* Integer value */
+      /* We use to have pointer elements added here.  We cannot do that,
+	 though, since it does not work when using 32-bit definitions
+	 on 64-bit platforms and vice versa.  */
+    } a_un;
+} Elf64_auxv_t;
+#endif
+
+/* Does the current host support PTRACE_GETREGSET?  */
+int have_ptrace_getregset = -1;
+
+/* LWP accessors.  */
+
+/* See nat/linux-nat.h.  */
+
+ptid_t
+ptid_of_lwp (struct lwp_info *lwp)
+{
+  return ptid_of (get_lwp_thread (lwp));
+}
+
+/* See nat/linux-nat.h.  */
+
+void
+lwp_set_arch_private_info (struct lwp_info *lwp,
+			   struct arch_lwp_info *info)
+{
+  lwp->arch_private = info;
+}
+
+/* See nat/linux-nat.h.  */
+
+struct arch_lwp_info *
+lwp_arch_private_info (struct lwp_info *lwp)
+{
+  return lwp->arch_private;
+}
+
+/* See nat/linux-nat.h.  */
+
+int
+lwp_is_stopped (struct lwp_info *lwp)
+{
+  return lwp->stopped;
+}
+
+/* See nat/linux-nat.h.  */
+
+enum target_stop_reason
+lwp_stop_reason (struct lwp_info *lwp)
+{
+  return lwp->stop_reason;
+}
+
+/* See nat/linux-nat.h.  */
+
+int
+lwp_is_stepping (struct lwp_info *lwp)
+{
+  return lwp->stepping;
+}
+
+/* A list of all unknown processes which receive stop signals.  Some
+   other process will presumably claim each of these as forked
+   children momentarily.  */
+
+struct simple_pid_list
+{
+  /* The process ID.  */
+  int pid;
+
+  /* The status as reported by waitpid.  */
+  int status;
+
+  /* Next in chain.  */
+  struct simple_pid_list *next;
+};
+static struct simple_pid_list *stopped_pids;
+
+/* Trivial list manipulation functions to keep track of a list of new
+   stopped processes.  */
+
+static void
+add_to_pid_list (struct simple_pid_list **listp, int pid, int status)
+{
+  struct simple_pid_list *new_pid = XNEW (struct simple_pid_list);
+
+  new_pid->pid = pid;
+  new_pid->status = status;
+  new_pid->next = *listp;
+  *listp = new_pid;
+}
+
+static int
+pull_pid_from_list (struct simple_pid_list **listp, int pid, int *statusp)
+{
+  struct simple_pid_list **p;
+
+  for (p = listp; *p != NULL; p = &(*p)->next)
+    if ((*p)->pid == pid)
+      {
+	struct simple_pid_list *next = (*p)->next;
+
+	*statusp = (*p)->status;
+	xfree (*p);
+	*p = next;
+	return 1;
+      }
+  return 0;
+}
+
+enum stopping_threads_kind
+  {
+    /* Not stopping threads presently.  */
+    NOT_STOPPING_THREADS,
+
+    /* Stopping threads.  */
+    STOPPING_THREADS,
+
+    /* Stopping and suspending threads.  */
+    STOPPING_AND_SUSPENDING_THREADS
+  };
+
+/* This is set while stop_all_lwps is in effect.  */
+enum stopping_threads_kind stopping_threads = NOT_STOPPING_THREADS;
+
+/* FIXME make into a target method?  */
+int using_threads = 1;
+
+/* True if we're presently stabilizing threads (moving them out of
+   jump pads).  */
+static int stabilizing_threads;
+
+static void unsuspend_all_lwps (struct lwp_info *except);
+static void mark_lwp_dead (struct lwp_info *lwp, int wstat);
+static int lwp_is_marked_dead (struct lwp_info *lwp);
+static int kill_lwp (unsigned long lwpid, int signo);
+static void enqueue_pending_signal (struct lwp_info *lwp, int signal, siginfo_t *info);
+static int linux_low_ptrace_options (int attached);
+static int check_ptrace_stopped_lwp_gone (struct lwp_info *lp);
+
+/* When the event-loop is doing a step-over, this points at the thread
+   being stepped.  */
+ptid_t step_over_bkpt;
+
+bool
+linux_process_target::low_supports_breakpoints ()
+{
+  return false;
+}
+
+CORE_ADDR
+linux_process_target::low_get_pc (regcache *regcache)
+{
+  return 0;
+}
+
+void
+linux_process_target::low_set_pc (regcache *regcache, CORE_ADDR newpc)
+{
+  gdb_assert_not_reached ("linux target op low_set_pc is not implemented");
+}
+
+std::vector<CORE_ADDR>
+linux_process_target::low_get_next_pcs (regcache *regcache)
+{
+  gdb_assert_not_reached ("linux target op low_get_next_pcs is not "
+			  "implemented");
+}
+
+int
+linux_process_target::low_decr_pc_after_break ()
+{
+  return 0;
+}
+
+/* True if LWP is stopped in its stepping range.  */
+
+static int
+lwp_in_step_range (struct lwp_info *lwp)
+{
+  CORE_ADDR pc = lwp->stop_pc;
+
+  return (pc >= lwp->step_range_start && pc < lwp->step_range_end);
+}
+
+/* The read/write ends of the pipe registered as waitable file in the
+   event loop.  */
+static int linux_event_pipe[2] = { -1, -1 };
+
+/* True if we're currently in async mode.  */
+#define target_is_async_p() (linux_event_pipe[0] != -1)
+
+static void send_sigstop (struct lwp_info *lwp);
+
+/* Return non-zero if HEADER is a 64-bit ELF file.  */
+
+static int
+elf_64_header_p (const Elf64_Ehdr *header, unsigned int *machine)
+{
+  if (header->e_ident[EI_MAG0] == ELFMAG0
+      && header->e_ident[EI_MAG1] == ELFMAG1
+      && header->e_ident[EI_MAG2] == ELFMAG2
+      && header->e_ident[EI_MAG3] == ELFMAG3)
+    {
+      *machine = header->e_machine;
+      return header->e_ident[EI_CLASS] == ELFCLASS64;
+
+    }
+  *machine = EM_NONE;
+  return -1;
+}
+
+/* Return non-zero if FILE is a 64-bit ELF file,
+   zero if the file is not a 64-bit ELF file,
+   and -1 if the file is not accessible or doesn't exist.  */
+
+static int
+elf_64_file_p (const char *file, unsigned int *machine)
+{
+  Elf64_Ehdr header;
+  int fd;
+
+  fd = open (file, O_RDONLY);
+  if (fd < 0)
+    return -1;
+
+  if (read (fd, &header, sizeof (header)) != sizeof (header))
+    {
+      close (fd);
+      return 0;
+    }
+  close (fd);
+
+  return elf_64_header_p (&header, machine);
+}
+
+/* Accepts an integer PID; Returns true if the executable PID is
+   running is a 64-bit ELF file..  */
+
+int
+linux_pid_exe_is_elf_64_file (int pid, unsigned int *machine)
+{
+  char file[PATH_MAX];
+
+  sprintf (file, "/proc/%d/exe", pid);
+  return elf_64_file_p (file, machine);
+}
+
+void
+linux_process_target::delete_lwp (lwp_info *lwp)
+{
+  struct thread_info *thr = get_lwp_thread (lwp);
+
+  if (debug_threads)
+    debug_printf ("deleting %ld\n", lwpid_of (thr));
+
+  remove_thread (thr);
+
+  low_delete_thread (lwp->arch_private);
+
+  delete lwp;
+}
+
+void
+linux_process_target::low_delete_thread (arch_lwp_info *info)
+{
+  /* Default implementation should be overridden if architecture-specific
+     info is being used.  */
+  gdb_assert (info == nullptr);
+}
+
+process_info *
+linux_process_target::add_linux_process (int pid, int attached)
+{
+  struct process_info *proc;
+
+  proc = add_process (pid, attached);
+  proc->priv = XCNEW (struct process_info_private);
+
+  proc->priv->arch_private = low_new_process ();
+
+  return proc;
+}
+
+arch_process_info *
+linux_process_target::low_new_process ()
+{
+  return nullptr;
+}
+
+void
+linux_process_target::low_delete_process (arch_process_info *info)
+{
+  /* Default implementation must be overridden if architecture-specific
+     info exists.  */
+  gdb_assert (info == nullptr);
+}
+
+void
+linux_process_target::low_new_fork (process_info *parent, process_info *child)
+{
+  /* Nop.  */
+}
+
+void
+linux_process_target::arch_setup_thread (thread_info *thread)
+{
+  struct thread_info *saved_thread;
+
+  saved_thread = current_thread;
+  current_thread = thread;
+
+  low_arch_setup ();
+
+  current_thread = saved_thread;
+}
+
+int
+linux_process_target::handle_extended_wait (lwp_info **orig_event_lwp,
+					    int wstat)
+{
+  client_state &cs = get_client_state ();
+  struct lwp_info *event_lwp = *orig_event_lwp;
+  int event = linux_ptrace_get_extended_event (wstat);
+  struct thread_info *event_thr = get_lwp_thread (event_lwp);
+  struct lwp_info *new_lwp;
+
+  gdb_assert (event_lwp->waitstatus.kind == TARGET_WAITKIND_IGNORE);
+
+  /* All extended events we currently use are mid-syscall.  Only
+     PTRACE_EVENT_STOP is delivered more like a signal-stop, but
+     you have to be using PTRACE_SEIZE to get that.  */
+  event_lwp->syscall_state = TARGET_WAITKIND_SYSCALL_ENTRY;
+
+  if ((event == PTRACE_EVENT_FORK) || (event == PTRACE_EVENT_VFORK)
+      || (event == PTRACE_EVENT_CLONE))
+    {
+      ptid_t ptid;
+      unsigned long new_pid;
+      int ret, status;
+
+      /* Get the pid of the new lwp.  */
+      ptrace (PTRACE_GETEVENTMSG, lwpid_of (event_thr), (PTRACE_TYPE_ARG3) 0,
+	      &new_pid);
+
+      /* If we haven't already seen the new PID stop, wait for it now.  */
+      if (!pull_pid_from_list (&stopped_pids, new_pid, &status))
+	{
+	  /* The new child has a pending SIGSTOP.  We can't affect it until it
+	     hits the SIGSTOP, but we're already attached.  */
+
+	  ret = my_waitpid (new_pid, &status, __WALL);
+
+	  if (ret == -1)
+	    perror_with_name ("waiting for new child");
+	  else if (ret != new_pid)
+	    warning ("wait returned unexpected PID %d", ret);
+	  else if (!WIFSTOPPED (status))
+	    warning ("wait returned unexpected status 0x%x", status);
+	}
+
+      if (event == PTRACE_EVENT_FORK || event == PTRACE_EVENT_VFORK)
+	{
+	  struct process_info *parent_proc;
+	  struct process_info *child_proc;
+	  struct lwp_info *child_lwp;
+	  struct thread_info *child_thr;
+	  struct target_desc *tdesc;
+
+	  ptid = ptid_t (new_pid, new_pid, 0);
+
+	  if (debug_threads)
+	    {
+	      debug_printf ("HEW: Got fork event from LWP %ld, "
+			    "new child is %d\n",
+			    ptid_of (event_thr).lwp (),
+			    ptid.pid ());
+	    }
+
+	  /* Add the new process to the tables and clone the breakpoint
+	     lists of the parent.  We need to do this even if the new process
+	     will be detached, since we will need the process object and the
+	     breakpoints to remove any breakpoints from memory when we
+	     detach, and the client side will access registers.  */
+	  child_proc = add_linux_process (new_pid, 0);
+	  gdb_assert (child_proc != NULL);
+	  child_lwp = add_lwp (ptid);
+	  gdb_assert (child_lwp != NULL);
+	  child_lwp->stopped = 1;
+	  child_lwp->must_set_ptrace_flags = 1;
+	  child_lwp->status_pending_p = 0;
+	  child_thr = get_lwp_thread (child_lwp);
+	  child_thr->last_resume_kind = resume_stop;
+	  child_thr->last_status.kind = TARGET_WAITKIND_STOPPED;
+
+	  /* If we're suspending all threads, leave this one suspended
+	     too.  If the fork/clone parent is stepping over a breakpoint,
+	     all other threads have been suspended already.  Leave the
+	     child suspended too.  */
+	  if (stopping_threads == STOPPING_AND_SUSPENDING_THREADS
+	      || event_lwp->bp_reinsert != 0)
+	    {
+	      if (debug_threads)
+		debug_printf ("HEW: leaving child suspended\n");
+	      child_lwp->suspended = 1;
+	    }
+
+	  parent_proc = get_thread_process (event_thr);
+	  child_proc->attached = parent_proc->attached;
+
+	  if (event_lwp->bp_reinsert != 0
+	      && supports_software_single_step ()
+	      && event == PTRACE_EVENT_VFORK)
+	    {
+	      /* If we leave single-step breakpoints there, child will
+		 hit it, so uninsert single-step breakpoints from parent
+		 (and child).  Once vfork child is done, reinsert
+		 them back to parent.  */
+	      uninsert_single_step_breakpoints (event_thr);
+	    }
+
+	  clone_all_breakpoints (child_thr, event_thr);
+
+	  tdesc = allocate_target_description ();
+	  copy_target_description (tdesc, parent_proc->tdesc);
+	  child_proc->tdesc = tdesc;
+
+	  /* Clone arch-specific process data.  */
+	  low_new_fork (parent_proc, child_proc);
+
+	  /* Save fork info in the parent thread.  */
+	  if (event == PTRACE_EVENT_FORK)
+	    event_lwp->waitstatus.kind = TARGET_WAITKIND_FORKED;
+	  else if (event == PTRACE_EVENT_VFORK)
+	    event_lwp->waitstatus.kind = TARGET_WAITKIND_VFORKED;
+
+	  event_lwp->waitstatus.value.related_pid = ptid;
+
+	  /* The status_pending field contains bits denoting the
+	     extended event, so when the pending event is handled,
+	     the handler will look at lwp->waitstatus.  */
+	  event_lwp->status_pending_p = 1;
+	  event_lwp->status_pending = wstat;
+
+	  /* Link the threads until the parent event is passed on to
+	     higher layers.  */
+	  event_lwp->fork_relative = child_lwp;
+	  child_lwp->fork_relative = event_lwp;
+
+	  /* If the parent thread is doing step-over with single-step
+	     breakpoints, the list of single-step breakpoints are cloned
+	     from the parent's.  Remove them from the child process.
+	     In case of vfork, we'll reinsert them back once vforked
+	     child is done.  */
+	  if (event_lwp->bp_reinsert != 0
+	      && supports_software_single_step ())
+	    {
+	      /* The child process is forked and stopped, so it is safe
+		 to access its memory without stopping all other threads
+		 from other processes.  */
+	      delete_single_step_breakpoints (child_thr);
+
+	      gdb_assert (has_single_step_breakpoints (event_thr));
+	      gdb_assert (!has_single_step_breakpoints (child_thr));
+	    }
+
+	  /* Report the event.  */
+	  return 0;
+	}
+
+      if (debug_threads)
+	debug_printf ("HEW: Got clone event "
+		      "from LWP %ld, new child is LWP %ld\n",
+		      lwpid_of (event_thr), new_pid);
+
+      ptid = ptid_t (pid_of (event_thr), new_pid, 0);
+      new_lwp = add_lwp (ptid);
+
+      /* Either we're going to immediately resume the new thread
+	 or leave it stopped.  resume_one_lwp is a nop if it
+	 thinks the thread is currently running, so set this first
+	 before calling resume_one_lwp.  */
+      new_lwp->stopped = 1;
+
+      /* If we're suspending all threads, leave this one suspended
+	 too.  If the fork/clone parent is stepping over a breakpoint,
+	 all other threads have been suspended already.  Leave the
+	 child suspended too.  */
+      if (stopping_threads == STOPPING_AND_SUSPENDING_THREADS
+	  || event_lwp->bp_reinsert != 0)
+	new_lwp->suspended = 1;
+
+      /* Normally we will get the pending SIGSTOP.  But in some cases
+	 we might get another signal delivered to the group first.
+	 If we do get another signal, be sure not to lose it.  */
+      if (WSTOPSIG (status) != SIGSTOP)
+	{
+	  new_lwp->stop_expected = 1;
+	  new_lwp->status_pending_p = 1;
+	  new_lwp->status_pending = status;
+	}
+      else if (cs.report_thread_events)
+	{
+	  new_lwp->waitstatus.kind = TARGET_WAITKIND_THREAD_CREATED;
+	  new_lwp->status_pending_p = 1;
+	  new_lwp->status_pending = status;
+	}
+
+#ifdef USE_THREAD_DB
+      thread_db_notice_clone (event_thr, ptid);
+#endif
+
+      /* Don't report the event.  */
+      return 1;
+    }
+  else if (event == PTRACE_EVENT_VFORK_DONE)
+    {
+      event_lwp->waitstatus.kind = TARGET_WAITKIND_VFORK_DONE;
+
+      if (event_lwp->bp_reinsert != 0 && supports_software_single_step ())
+	{
+	  reinsert_single_step_breakpoints (event_thr);
+
+	  gdb_assert (has_single_step_breakpoints (event_thr));
+	}
+
+      /* Report the event.  */
+      return 0;
+    }
+  else if (event == PTRACE_EVENT_EXEC && cs.report_exec_events)
+    {
+      struct process_info *proc;
+      std::vector<int> syscalls_to_catch;
+      ptid_t event_ptid;
+      pid_t event_pid;
+
+      if (debug_threads)
+	{
+	  debug_printf ("HEW: Got exec event from LWP %ld\n",
+			lwpid_of (event_thr));
+	}
+
+      /* Get the event ptid.  */
+      event_ptid = ptid_of (event_thr);
+      event_pid = event_ptid.pid ();
+
+      /* Save the syscall list from the execing process.  */
+      proc = get_thread_process (event_thr);
+      syscalls_to_catch = std::move (proc->syscalls_to_catch);
+
+      /* Delete the execing process and all its threads.  */
+      mourn (proc);
+      current_thread = NULL;
+
+      /* Create a new process/lwp/thread.  */
+      proc = add_linux_process (event_pid, 0);
+      event_lwp = add_lwp (event_ptid);
+      event_thr = get_lwp_thread (event_lwp);
+      gdb_assert (current_thread == event_thr);
+      arch_setup_thread (event_thr);
+
+      /* Set the event status.  */
+      event_lwp->waitstatus.kind = TARGET_WAITKIND_EXECD;
+      event_lwp->waitstatus.value.execd_pathname
+	= xstrdup (linux_proc_pid_to_exec_file (lwpid_of (event_thr)));
+
+      /* Mark the exec status as pending.  */
+      event_lwp->stopped = 1;
+      event_lwp->status_pending_p = 1;
+      event_lwp->status_pending = wstat;
+      event_thr->last_resume_kind = resume_continue;
+      event_thr->last_status.kind = TARGET_WAITKIND_IGNORE;
+
+      /* Update syscall state in the new lwp, effectively mid-syscall too.  */
+      event_lwp->syscall_state = TARGET_WAITKIND_SYSCALL_ENTRY;
+
+      /* Restore the list to catch.  Don't rely on the client, which is free
+	 to avoid sending a new list when the architecture doesn't change.
+	 Also, for ANY_SYSCALL, the architecture doesn't really matter.  */
+      proc->syscalls_to_catch = std::move (syscalls_to_catch);
+
+      /* Report the event.  */
+      *orig_event_lwp = event_lwp;
+      return 0;
+    }
+
+  internal_error (__FILE__, __LINE__, _("unknown ptrace event %d"), event);
+}
+
+CORE_ADDR
+linux_process_target::get_pc (lwp_info *lwp)
+{
+  struct thread_info *saved_thread;
+  struct regcache *regcache;
+  CORE_ADDR pc;
+
+  if (!low_supports_breakpoints ())
+    return 0;
+
+  saved_thread = current_thread;
+  current_thread = get_lwp_thread (lwp);
+
+  regcache = get_thread_regcache (current_thread, 1);
+  pc = low_get_pc (regcache);
+
+  if (debug_threads)
+    debug_printf ("pc is 0x%lx\n", (long) pc);
+
+  current_thread = saved_thread;
+  return pc;
+}
+
+void
+linux_process_target::get_syscall_trapinfo (lwp_info *lwp, int *sysno)
+{
+  struct thread_info *saved_thread;
+  struct regcache *regcache;
+
+  saved_thread = current_thread;
+  current_thread = get_lwp_thread (lwp);
+
+  regcache = get_thread_regcache (current_thread, 1);
+  low_get_syscall_trapinfo (regcache, sysno);
+
+  if (debug_threads)
+    debug_printf ("get_syscall_trapinfo sysno %d\n", *sysno);
+
+  current_thread = saved_thread;
+}
+
+void
+linux_process_target::low_get_syscall_trapinfo (regcache *regcache, int *sysno)
+{
+  /* By default, report an unknown system call number.  */
+  *sysno = UNKNOWN_SYSCALL;
+}
+
+bool
+linux_process_target::save_stop_reason (lwp_info *lwp)
+{
+  CORE_ADDR pc;
+  CORE_ADDR sw_breakpoint_pc;
+  struct thread_info *saved_thread;
+#if USE_SIGTRAP_SIGINFO
+  siginfo_t siginfo;
+#endif
+
+  if (!low_supports_breakpoints ())
+    return false;
+
+  pc = get_pc (lwp);
+  sw_breakpoint_pc = pc - low_decr_pc_after_break ();
+
+  /* breakpoint_at reads from the current thread.  */
+  saved_thread = current_thread;
+  current_thread = get_lwp_thread (lwp);
+
+#if USE_SIGTRAP_SIGINFO
+  if (ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread),
+	      (PTRACE_TYPE_ARG3) 0, &siginfo) == 0)
+    {
+      if (siginfo.si_signo == SIGTRAP)
+	{
+	  if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code)
+	      && GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code))
+	    {
+	      /* The si_code is ambiguous on this arch -- check debug
+		 registers.  */
+	      if (!check_stopped_by_watchpoint (lwp))
+		lwp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
+	    }
+	  else if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code))
+	    {
+	      /* If we determine the LWP stopped for a SW breakpoint,
+		 trust it.  Particularly don't check watchpoint
+		 registers, because at least on s390, we'd find
+		 stopped-by-watchpoint as long as there's a watchpoint
+		 set.  */
+	      lwp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
+	    }
+	  else if (GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code))
+	    {
+	      /* This can indicate either a hardware breakpoint or
+		 hardware watchpoint.  Check debug registers.  */
+	      if (!check_stopped_by_watchpoint (lwp))
+		lwp->stop_reason = TARGET_STOPPED_BY_HW_BREAKPOINT;
+	    }
+	  else if (siginfo.si_code == TRAP_TRACE)
+	    {
+	      /* We may have single stepped an instruction that
+		 triggered a watchpoint.  In that case, on some
+		 architectures (such as x86), instead of TRAP_HWBKPT,
+		 si_code indicates TRAP_TRACE, and we need to check
+		 the debug registers separately.  */
+	      if (!check_stopped_by_watchpoint (lwp))
+		lwp->stop_reason = TARGET_STOPPED_BY_SINGLE_STEP;
+	    }
+	}
+    }
+#else
+  /* We may have just stepped a breakpoint instruction.  E.g., in
+     non-stop mode, GDB first tells the thread A to step a range, and
+     then the user inserts a breakpoint inside the range.  In that
+     case we need to report the breakpoint PC.  */
+  if ((!lwp->stepping || lwp->stop_pc == sw_breakpoint_pc)
+      && low_breakpoint_at (sw_breakpoint_pc))
+    lwp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT;
+
+  if (hardware_breakpoint_inserted_here (pc))
+    lwp->stop_reason = TARGET_STOPPED_BY_HW_BREAKPOINT;
+
+  if (lwp->stop_reason == TARGET_STOPPED_BY_NO_REASON)
+    check_stopped_by_watchpoint (lwp);
+#endif
+
+  if (lwp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT)
+    {
+      if (debug_threads)
+	{
+	  struct thread_info *thr = get_lwp_thread (lwp);
+
+	  debug_printf ("CSBB: %s stopped by software breakpoint\n",
+			target_pid_to_str (ptid_of (thr)));
+	}
+
+      /* Back up the PC if necessary.  */
+      if (pc != sw_breakpoint_pc)
+	{
+	  struct regcache *regcache
+	    = get_thread_regcache (current_thread, 1);
+	  low_set_pc (regcache, sw_breakpoint_pc);
+	}
+
+      /* Update this so we record the correct stop PC below.  */
+      pc = sw_breakpoint_pc;
+    }
+  else if (lwp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT)
+    {
+      if (debug_threads)
+	{
+	  struct thread_info *thr = get_lwp_thread (lwp);
+
+	  debug_printf ("CSBB: %s stopped by hardware breakpoint\n",
+			target_pid_to_str (ptid_of (thr)));
+	}
+    }
+  else if (lwp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT)
+    {
+      if (debug_threads)
+	{
+	  struct thread_info *thr = get_lwp_thread (lwp);
+
+	  debug_printf ("CSBB: %s stopped by hardware watchpoint\n",
+			target_pid_to_str (ptid_of (thr)));
+	}
+    }
+  else if (lwp->stop_reason == TARGET_STOPPED_BY_SINGLE_STEP)
+    {
+      if (debug_threads)
+	{
+	  struct thread_info *thr = get_lwp_thread (lwp);
+
+	  debug_printf ("CSBB: %s stopped by trace\n",
+			target_pid_to_str (ptid_of (thr)));
+	}
+    }
+
+  lwp->stop_pc = pc;
+  current_thread = saved_thread;
+  return true;
+}
+
+lwp_info *
+linux_process_target::add_lwp (ptid_t ptid)
+{
+  struct lwp_info *lwp;
+
+  lwp = new lwp_info {};
+
+  lwp->waitstatus.kind = TARGET_WAITKIND_IGNORE;
+
+  lwp->thread = add_thread (ptid, lwp);
+
+  low_new_thread (lwp);
+
+  return lwp;
+}
+
+void
+linux_process_target::low_new_thread (lwp_info *info)
+{
+  /* Nop.  */
+}
+
+/* Callback to be used when calling fork_inferior, responsible for
+   actually initiating the tracing of the inferior.  */
+
+static void
+linux_ptrace_fun ()
+{
+  if (ptrace (PTRACE_TRACEME, 0, (PTRACE_TYPE_ARG3) 0,
+	      (PTRACE_TYPE_ARG4) 0) < 0)
+    trace_start_error_with_name ("ptrace");
+
+  if (setpgid (0, 0) < 0)
+    trace_start_error_with_name ("setpgid");
+
+  /* If GDBserver is connected to gdb via stdio, redirect the inferior's
+     stdout to stderr so that inferior i/o doesn't corrupt the connection.
+     Also, redirect stdin to /dev/null.  */
+  if (remote_connection_is_stdio ())
+    {
+      if (close (0) < 0)
+	trace_start_error_with_name ("close");
+      if (open ("/dev/null", O_RDONLY) < 0)
+	trace_start_error_with_name ("open");
+      if (dup2 (2, 1) < 0)
+	trace_start_error_with_name ("dup2");
+      if (write (2, "stdin/stdout redirected\n",
+		 sizeof ("stdin/stdout redirected\n") - 1) < 0)
+	{
+	  /* Errors ignored.  */;
+	}
+    }
+}
+
+/* Start an inferior process and returns its pid.
+   PROGRAM is the name of the program to be started, and PROGRAM_ARGS
+   are its arguments.  */
+
+int
+linux_process_target::create_inferior (const char *program,
+				       const std::vector<char *> &program_args)
+{
+  client_state &cs = get_client_state ();
+  struct lwp_info *new_lwp;
+  int pid;
+  ptid_t ptid;
+
+  {
+    maybe_disable_address_space_randomization restore_personality
+      (cs.disable_randomization);
+    std::string str_program_args = construct_inferior_arguments (program_args);
+
+    pid = fork_inferior (program,
+			 str_program_args.c_str (),
+			 get_environ ()->envp (), linux_ptrace_fun,
+			 NULL, NULL, NULL, NULL);
+  }
+
+  add_linux_process (pid, 0);
+
+  ptid = ptid_t (pid, pid, 0);
+  new_lwp = add_lwp (ptid);
+  new_lwp->must_set_ptrace_flags = 1;
+
+  post_fork_inferior (pid, program);
+
+  return pid;
+}
+
+/* Implement the post_create_inferior target_ops method.  */
+
+void
+linux_process_target::post_create_inferior ()
+{
+  struct lwp_info *lwp = get_thread_lwp (current_thread);
+
+  low_arch_setup ();
+
+  if (lwp->must_set_ptrace_flags)
+    {
+      struct process_info *proc = current_process ();
+      int options = linux_low_ptrace_options (proc->attached);
+
+      linux_enable_event_reporting (lwpid_of (current_thread), options);
+      lwp->must_set_ptrace_flags = 0;
+    }
+}
+
+int
+linux_process_target::attach_lwp (ptid_t ptid)
+{
+  struct lwp_info *new_lwp;
+  int lwpid = ptid.lwp ();
+
+  if (ptrace (PTRACE_ATTACH, lwpid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0)
+      != 0)
+    return errno;
+
+  new_lwp = add_lwp (ptid);
+
+  /* We need to wait for SIGSTOP before being able to make the next
+     ptrace call on this LWP.  */
+  new_lwp->must_set_ptrace_flags = 1;
+
+  if (linux_proc_pid_is_stopped (lwpid))
+    {
+      if (debug_threads)
+	debug_printf ("Attached to a stopped process\n");
+
+      /* The process is definitely stopped.  It is in a job control
+	 stop, unless the kernel predates the TASK_STOPPED /
+	 TASK_TRACED distinction, in which case it might be in a
+	 ptrace stop.  Make sure it is in a ptrace stop; from there we
+	 can kill it, signal it, et cetera.
+
+	 First make sure there is a pending SIGSTOP.  Since we are
+	 already attached, the process can not transition from stopped
+	 to running without a PTRACE_CONT; so we know this signal will
+	 go into the queue.  The SIGSTOP generated by PTRACE_ATTACH is
+	 probably already in the queue (unless this kernel is old
+	 enough to use TASK_STOPPED for ptrace stops); but since
+	 SIGSTOP is not an RT signal, it can only be queued once.  */
+      kill_lwp (lwpid, SIGSTOP);
+
+      /* Finally, resume the stopped process.  This will deliver the
+	 SIGSTOP (or a higher priority signal, just like normal
+	 PTRACE_ATTACH), which we'll catch later on.  */
+      ptrace (PTRACE_CONT, lwpid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0);
+    }
+
+  /* The next time we wait for this LWP we'll see a SIGSTOP as PTRACE_ATTACH
+     brings it to a halt.
+
+     There are several cases to consider here:
+
+     1) gdbserver has already attached to the process and is being notified
+	of a new thread that is being created.
+	In this case we should ignore that SIGSTOP and resume the
+	process.  This is handled below by setting stop_expected = 1,
+	and the fact that add_thread sets last_resume_kind ==
+	resume_continue.
+
+     2) This is the first thread (the process thread), and we're attaching
+	to it via attach_inferior.
+	In this case we want the process thread to stop.
+	This is handled by having linux_attach set last_resume_kind ==
+	resume_stop after we return.
+
+	If the pid we are attaching to is also the tgid, we attach to and
+	stop all the existing threads.  Otherwise, we attach to pid and
+	ignore any other threads in the same group as this pid.
+
+     3) GDB is connecting to gdbserver and is requesting an enumeration of all
+	existing threads.
+	In this case we want the thread to stop.
+	FIXME: This case is currently not properly handled.
+	We should wait for the SIGSTOP but don't.  Things work apparently
+	because enough time passes between when we ptrace (ATTACH) and when
+	gdb makes the next ptrace call on the thread.
+
+     On the other hand, if we are currently trying to stop all threads, we
+     should treat the new thread as if we had sent it a SIGSTOP.  This works
+     because we are guaranteed that the add_lwp call above added us to the
+     end of the list, and so the new thread has not yet reached
+     wait_for_sigstop (but will).  */
+  new_lwp->stop_expected = 1;
+
+  return 0;
+}
+
+/* Callback for linux_proc_attach_tgid_threads.  Attach to PTID if not
+   already attached.  Returns true if a new LWP is found, false
+   otherwise.  */
+
+static int
+attach_proc_task_lwp_callback (ptid_t ptid)
+{
+  /* Is this a new thread?  */
+  if (find_thread_ptid (ptid) == NULL)
+    {
+      int lwpid = ptid.lwp ();
+      int err;
+
+      if (debug_threads)
+	debug_printf ("Found new lwp %d\n", lwpid);
+
+      err = the_linux_target->attach_lwp (ptid);
+
+      /* Be quiet if we simply raced with the thread exiting.  EPERM
+	 is returned if the thread's task still exists, and is marked
+	 as exited or zombie, as well as other conditions, so in that
+	 case, confirm the status in /proc/PID/status.  */
+      if (err == ESRCH
+	  || (err == EPERM && linux_proc_pid_is_gone (lwpid)))
+	{
+	  if (debug_threads)
+	    {
+	      debug_printf ("Cannot attach to lwp %d: "
+			    "thread is gone (%d: %s)\n",
+			    lwpid, err, safe_strerror (err));
+	    }
+	}
+      else if (err != 0)
+	{
+	  std::string reason
+	    = linux_ptrace_attach_fail_reason_string (ptid, err);
+
+	  warning (_("Cannot attach to lwp %d: %s"), lwpid, reason.c_str ());
+	}
+
+      return 1;
+    }
+  return 0;
+}
+
+static void async_file_mark (void);
+
+/* Attach to PID.  If PID is the tgid, attach to it and all
+   of its threads.  */
+
+int
+linux_process_target::attach (unsigned long pid)
+{
+  struct process_info *proc;
+  struct thread_info *initial_thread;
+  ptid_t ptid = ptid_t (pid, pid, 0);
+  int err;
+
+  proc = add_linux_process (pid, 1);
+
+  /* Attach to PID.  We will check for other threads
+     soon.  */
+  err = attach_lwp (ptid);
+  if (err != 0)
+    {
+      remove_process (proc);
+
+      std::string reason = linux_ptrace_attach_fail_reason_string (ptid, err);
+      error ("Cannot attach to process %ld: %s", pid, reason.c_str ());
+    }
+
+  /* Don't ignore the initial SIGSTOP if we just attached to this
+     process.  It will be collected by wait shortly.  */
+  initial_thread = find_thread_ptid (ptid_t (pid, pid, 0));
+  initial_thread->last_resume_kind = resume_stop;
+
+  /* We must attach to every LWP.  If /proc is mounted, use that to
+     find them now.  On the one hand, the inferior may be using raw
+     clone instead of using pthreads.  On the other hand, even if it
+     is using pthreads, GDB may not be connected yet (thread_db needs
+     to do symbol lookups, through qSymbol).  Also, thread_db walks
+     structures in the inferior's address space to find the list of
+     threads/LWPs, and those structures may well be corrupted.  Note
+     that once thread_db is loaded, we'll still use it to list threads
+     and associate pthread info with each LWP.  */
+  linux_proc_attach_tgid_threads (pid, attach_proc_task_lwp_callback);
+
+  /* GDB will shortly read the xml target description for this
+     process, to figure out the process' architecture.  But the target
+     description is only filled in when the first process/thread in
+     the thread group reports its initial PTRACE_ATTACH SIGSTOP.  Do
+     that now, otherwise, if GDB is fast enough, it could read the
+     target description _before_ that initial stop.  */
+  if (non_stop)
+    {
+      struct lwp_info *lwp;
+      int wstat, lwpid;
+      ptid_t pid_ptid = ptid_t (pid);
+
+      lwpid = wait_for_event_filtered (pid_ptid, pid_ptid, &wstat, __WALL);
+      gdb_assert (lwpid > 0);
+
+      lwp = find_lwp_pid (ptid_t (lwpid));
+
+      if (!WIFSTOPPED (wstat) || WSTOPSIG (wstat) != SIGSTOP)
+	{
+	  lwp->status_pending_p = 1;
+	  lwp->status_pending = wstat;
+	}
+
+      initial_thread->last_resume_kind = resume_continue;
+
+      async_file_mark ();
+
+      gdb_assert (proc->tdesc != NULL);
+    }
+
+  return 0;
+}
+
+static int
+last_thread_of_process_p (int pid)
+{
+  bool seen_one = false;
+
+  thread_info *thread = find_thread (pid, [&] (thread_info *thr_arg)
+    {
+      if (!seen_one)
+	{
+	  /* This is the first thread of this process we see.  */
+	  seen_one = true;
+	  return false;
+	}
+      else
+	{
+	  /* This is the second thread of this process we see.  */
+	  return true;
+	}
+    });
+
+  return thread == NULL;
+}
+
+/* Kill LWP.  */
+
+static void
+linux_kill_one_lwp (struct lwp_info *lwp)
+{
+  struct thread_info *thr = get_lwp_thread (lwp);
+  int pid = lwpid_of (thr);
+
+  /* PTRACE_KILL is unreliable.  After stepping into a signal handler,
+     there is no signal context, and ptrace(PTRACE_KILL) (or
+     ptrace(PTRACE_CONT, SIGKILL), pretty much the same) acts like
+     ptrace(CONT, pid, 0,0) and just resumes the tracee.  A better
+     alternative is to kill with SIGKILL.  We only need one SIGKILL
+     per process, not one for each thread.  But since we still support
+     support debugging programs using raw clone without CLONE_THREAD,
+     we send one for each thread.  For years, we used PTRACE_KILL
+     only, so we're being a bit paranoid about some old kernels where
+     PTRACE_KILL might work better (dubious if there are any such, but
+     that's why it's paranoia), so we try SIGKILL first, PTRACE_KILL
+     second, and so we're fine everywhere.  */
+
+  errno = 0;
+  kill_lwp (pid, SIGKILL);
+  if (debug_threads)
+    {
+      int save_errno = errno;
+
+      debug_printf ("LKL:  kill_lwp (SIGKILL) %s, 0, 0 (%s)\n",
+		    target_pid_to_str (ptid_of (thr)),
+		    save_errno ? safe_strerror (save_errno) : "OK");
+    }
+
+  errno = 0;
+  ptrace (PTRACE_KILL, pid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0);
+  if (debug_threads)
+    {
+      int save_errno = errno;
+
+      debug_printf ("LKL:  PTRACE_KILL %s, 0, 0 (%s)\n",
+		    target_pid_to_str (ptid_of (thr)),
+		    save_errno ? safe_strerror (save_errno) : "OK");
+    }
+}
+
+/* Kill LWP and wait for it to die.  */
+
+static void
+kill_wait_lwp (struct lwp_info *lwp)
+{
+  struct thread_info *thr = get_lwp_thread (lwp);
+  int pid = ptid_of (thr).pid ();
+  int lwpid = ptid_of (thr).lwp ();
+  int wstat;
+  int res;
+
+  if (debug_threads)
+    debug_printf ("kwl: killing lwp %d, for pid: %d\n", lwpid, pid);
+
+  do
+    {
+      linux_kill_one_lwp (lwp);
+
+      /* Make sure it died.  Notes:
+
+	 - The loop is most likely unnecessary.
+
+	 - We don't use wait_for_event as that could delete lwps
+	   while we're iterating over them.  We're not interested in
+	   any pending status at this point, only in making sure all
+	   wait status on the kernel side are collected until the
+	   process is reaped.
+
+	 - We don't use __WALL here as the __WALL emulation relies on
+	   SIGCHLD, and killing a stopped process doesn't generate
+	   one, nor an exit status.
+      */
+      res = my_waitpid (lwpid, &wstat, 0);
+      if (res == -1 && errno == ECHILD)
+	res = my_waitpid (lwpid, &wstat, __WCLONE);
+    } while (res > 0 && WIFSTOPPED (wstat));
+
+  /* Even if it was stopped, the child may have already disappeared.
+     E.g., if it was killed by SIGKILL.  */
+  if (res < 0 && errno != ECHILD)
+    perror_with_name ("kill_wait_lwp");
+}
+
+/* Callback for `for_each_thread'.  Kills an lwp of a given process,
+   except the leader.  */
+
+static void
+kill_one_lwp_callback (thread_info *thread, int pid)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+
+  /* We avoid killing the first thread here, because of a Linux kernel (at
+     least 2.6.0-test7 through 2.6.8-rc4) bug; if we kill the parent before
+     the children get a chance to be reaped, it will remain a zombie
+     forever.  */
+
+  if (lwpid_of (thread) == pid)
+    {
+      if (debug_threads)
+	debug_printf ("lkop: is last of process %s\n",
+		      target_pid_to_str (thread->id));
+      return;
+    }
+
+  kill_wait_lwp (lwp);
+}
+
+int
+linux_process_target::kill (process_info *process)
+{
+  int pid = process->pid;
+
+  /* If we're killing a running inferior, make sure it is stopped
+     first, as PTRACE_KILL will not work otherwise.  */
+  stop_all_lwps (0, NULL);
+
+  for_each_thread (pid, [&] (thread_info *thread)
+    {
+      kill_one_lwp_callback (thread, pid);
+    });
+
+  /* See the comment in linux_kill_one_lwp.  We did not kill the first
+     thread in the list, so do so now.  */
+  lwp_info *lwp = find_lwp_pid (ptid_t (pid));
+
+  if (lwp == NULL)
+    {
+      if (debug_threads)
+	debug_printf ("lk_1: cannot find lwp for pid: %d\n",
+		      pid);
+    }
+  else
+    kill_wait_lwp (lwp);
+
+  mourn (process);
+
+  /* Since we presently can only stop all lwps of all processes, we
+     need to unstop lwps of other processes.  */
+  unstop_all_lwps (0, NULL);
+  return 0;
+}
+
+/* Get pending signal of THREAD, for detaching purposes.  This is the
+   signal the thread last stopped for, which we need to deliver to the
+   thread when detaching, otherwise, it'd be suppressed/lost.  */
+
+static int
+get_detach_signal (struct thread_info *thread)
+{
+  client_state &cs = get_client_state ();
+  enum gdb_signal signo = GDB_SIGNAL_0;
+  int status;
+  struct lwp_info *lp = get_thread_lwp (thread);
+
+  if (lp->status_pending_p)
+    status = lp->status_pending;
+  else
+    {
+      /* If the thread had been suspended by gdbserver, and it stopped
+	 cleanly, then it'll have stopped with SIGSTOP.  But we don't
+	 want to deliver that SIGSTOP.  */
+      if (thread->last_status.kind != TARGET_WAITKIND_STOPPED
+	  || thread->last_status.value.sig == GDB_SIGNAL_0)
+	return 0;
+
+      /* Otherwise, we may need to deliver the signal we
+	 intercepted.  */
+      status = lp->last_status;
+    }
+
+  if (!WIFSTOPPED (status))
+    {
+      if (debug_threads)
+	debug_printf ("GPS: lwp %s hasn't stopped: no pending signal\n",
+		      target_pid_to_str (ptid_of (thread)));
+      return 0;
+    }
+
+  /* Extended wait statuses aren't real SIGTRAPs.  */
+  if (WSTOPSIG (status) == SIGTRAP && linux_is_extended_waitstatus (status))
+    {
+      if (debug_threads)
+	debug_printf ("GPS: lwp %s had stopped with extended "
+		      "status: no pending signal\n",
+		      target_pid_to_str (ptid_of (thread)));
+      return 0;
+    }
+
+  signo = gdb_signal_from_host (WSTOPSIG (status));
+
+  if (cs.program_signals_p && !cs.program_signals[signo])
+    {
+      if (debug_threads)
+	debug_printf ("GPS: lwp %s had signal %s, but it is in nopass state\n",
+		      target_pid_to_str (ptid_of (thread)),
+		      gdb_signal_to_string (signo));
+      return 0;
+    }
+  else if (!cs.program_signals_p
+	   /* If we have no way to know which signals GDB does not
+	      want to have passed to the program, assume
+	      SIGTRAP/SIGINT, which is GDB's default.  */
+	   && (signo == GDB_SIGNAL_TRAP || signo == GDB_SIGNAL_INT))
+    {
+      if (debug_threads)
+	debug_printf ("GPS: lwp %s had signal %s, "
+		      "but we don't know if we should pass it. "
+		      "Default to not.\n",
+		      target_pid_to_str (ptid_of (thread)),
+		      gdb_signal_to_string (signo));
+      return 0;
+    }
+  else
+    {
+      if (debug_threads)
+	debug_printf ("GPS: lwp %s has pending signal %s: delivering it.\n",
+		      target_pid_to_str (ptid_of (thread)),
+		      gdb_signal_to_string (signo));
+
+      return WSTOPSIG (status);
+    }
+}
+
+void
+linux_process_target::detach_one_lwp (lwp_info *lwp)
+{
+  struct thread_info *thread = get_lwp_thread (lwp);
+  int sig;
+  int lwpid;
+
+  /* If there is a pending SIGSTOP, get rid of it.  */
+  if (lwp->stop_expected)
+    {
+      if (debug_threads)
+	debug_printf ("Sending SIGCONT to %s\n",
+		      target_pid_to_str (ptid_of (thread)));
+
+      kill_lwp (lwpid_of (thread), SIGCONT);
+      lwp->stop_expected = 0;
+    }
+
+  /* Pass on any pending signal for this thread.  */
+  sig = get_detach_signal (thread);
+
+  /* Preparing to resume may try to write registers, and fail if the
+     lwp is zombie.  If that happens, ignore the error.  We'll handle
+     it below, when detach fails with ESRCH.  */
+  try
+    {
+      /* Flush any pending changes to the process's registers.  */
+      regcache_invalidate_thread (thread);
+
+      /* Finally, let it resume.  */
+      low_prepare_to_resume (lwp);
+    }
+  catch (const gdb_exception_error &ex)
+    {
+      if (!check_ptrace_stopped_lwp_gone (lwp))
+	throw;
+    }
+
+  lwpid = lwpid_of (thread);
+  if (ptrace (PTRACE_DETACH, lwpid, (PTRACE_TYPE_ARG3) 0,
+	      (PTRACE_TYPE_ARG4) (long) sig) < 0)
+    {
+      int save_errno = errno;
+
+      /* We know the thread exists, so ESRCH must mean the lwp is
+	 zombie.  This can happen if one of the already-detached
+	 threads exits the whole thread group.  In that case we're
+	 still attached, and must reap the lwp.  */
+      if (save_errno == ESRCH)
+	{
+	  int ret, status;
+
+	  ret = my_waitpid (lwpid, &status, __WALL);
+	  if (ret == -1)
+	    {
+	      warning (_("Couldn't reap LWP %d while detaching: %s"),
+		       lwpid, safe_strerror (errno));
+	    }
+	  else if (!WIFEXITED (status) && !WIFSIGNALED (status))
+	    {
+	      warning (_("Reaping LWP %d while detaching "
+			 "returned unexpected status 0x%x"),
+		       lwpid, status);
+	    }
+	}
+      else
+	{
+	  error (_("Can't detach %s: %s"),
+		 target_pid_to_str (ptid_of (thread)),
+		 safe_strerror (save_errno));
+	}
+    }
+  else if (debug_threads)
+    {
+      debug_printf ("PTRACE_DETACH (%s, %s, 0) (OK)\n",
+		    target_pid_to_str (ptid_of (thread)),
+		    strsignal (sig));
+    }
+
+  delete_lwp (lwp);
+}
+
+int
+linux_process_target::detach (process_info *process)
+{
+  struct lwp_info *main_lwp;
+
+  /* As there's a step over already in progress, let it finish first,
+     otherwise nesting a stabilize_threads operation on top gets real
+     messy.  */
+  complete_ongoing_step_over ();
+
+  /* Stop all threads before detaching.  First, ptrace requires that
+     the thread is stopped to successfully detach.  Second, thread_db
+     may need to uninstall thread event breakpoints from memory, which
+     only works with a stopped process anyway.  */
+  stop_all_lwps (0, NULL);
+
+#ifdef USE_THREAD_DB
+  thread_db_detach (process);
+#endif
+
+  /* Stabilize threads (move out of jump pads).  */
+  target_stabilize_threads ();
+
+  /* Detach from the clone lwps first.  If the thread group exits just
+     while we're detaching, we must reap the clone lwps before we're
+     able to reap the leader.  */
+  for_each_thread (process->pid, [this] (thread_info *thread)
+    {
+      /* We don't actually detach from the thread group leader just yet.
+	 If the thread group exits, we must reap the zombie clone lwps
+	 before we're able to reap the leader.  */
+      if (thread->id.pid () == thread->id.lwp ())
+	return;
+
+      lwp_info *lwp = get_thread_lwp (thread);
+      detach_one_lwp (lwp);
+    });
+
+  main_lwp = find_lwp_pid (ptid_t (process->pid));
+  detach_one_lwp (main_lwp);
+
+  mourn (process);
+
+  /* Since we presently can only stop all lwps of all processes, we
+     need to unstop lwps of other processes.  */
+  unstop_all_lwps (0, NULL);
+  return 0;
+}
+
+/* Remove all LWPs that belong to process PROC from the lwp list.  */
+
+void
+linux_process_target::mourn (process_info *process)
+{
+  struct process_info_private *priv;
+
+#ifdef USE_THREAD_DB
+  thread_db_mourn (process);
+#endif
+
+  for_each_thread (process->pid, [this] (thread_info *thread)
+    {
+      delete_lwp (get_thread_lwp (thread));
+    });
+
+  /* Freeing all private data.  */
+  priv = process->priv;
+  low_delete_process (priv->arch_private);
+  free (priv);
+  process->priv = NULL;
+
+  remove_process (process);
+}
+
+void
+linux_process_target::join (int pid)
+{
+  int status, ret;
+
+  do {
+    ret = my_waitpid (pid, &status, 0);
+    if (WIFEXITED (status) || WIFSIGNALED (status))
+      break;
+  } while (ret != -1 || errno != ECHILD);
+}
+
+/* Return true if the given thread is still alive.  */
+
+bool
+linux_process_target::thread_alive (ptid_t ptid)
+{
+  struct lwp_info *lwp = find_lwp_pid (ptid);
+
+  /* We assume we always know if a thread exits.  If a whole process
+     exited but we still haven't been able to report it to GDB, we'll
+     hold on to the last lwp of the dead process.  */
+  if (lwp != NULL)
+    return !lwp_is_marked_dead (lwp);
+  else
+    return 0;
+}
+
+bool
+linux_process_target::thread_still_has_status_pending (thread_info *thread)
+{
+  struct lwp_info *lp = get_thread_lwp (thread);
+
+  if (!lp->status_pending_p)
+    return 0;
+
+  if (thread->last_resume_kind != resume_stop
+      && (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
+	  || lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT))
+    {
+      struct thread_info *saved_thread;
+      CORE_ADDR pc;
+      int discard = 0;
+
+      gdb_assert (lp->last_status != 0);
+
+      pc = get_pc (lp);
+
+      saved_thread = current_thread;
+      current_thread = thread;
+
+      if (pc != lp->stop_pc)
+	{
+	  if (debug_threads)
+	    debug_printf ("PC of %ld changed\n",
+			  lwpid_of (thread));
+	  discard = 1;
+	}
+
+#if !USE_SIGTRAP_SIGINFO
+      else if (lp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
+	       && !low_breakpoint_at (pc))
+	{
+	  if (debug_threads)
+	    debug_printf ("previous SW breakpoint of %ld gone\n",
+			  lwpid_of (thread));
+	  discard = 1;
+	}
+      else if (lp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT
+	       && !hardware_breakpoint_inserted_here (pc))
+	{
+	  if (debug_threads)
+	    debug_printf ("previous HW breakpoint of %ld gone\n",
+			  lwpid_of (thread));
+	  discard = 1;
+	}
+#endif
+
+      current_thread = saved_thread;
+
+      if (discard)
+	{
+	  if (debug_threads)
+	    debug_printf ("discarding pending breakpoint status\n");
+	  lp->status_pending_p = 0;
+	  return 0;
+	}
+    }
+
+  return 1;
+}
+
+/* Returns true if LWP is resumed from the client's perspective.  */
+
+static int
+lwp_resumed (struct lwp_info *lwp)
+{
+  struct thread_info *thread = get_lwp_thread (lwp);
+
+  if (thread->last_resume_kind != resume_stop)
+    return 1;
+
+  /* Did gdb send us a `vCont;t', but we haven't reported the
+     corresponding stop to gdb yet?  If so, the thread is still
+     resumed/running from gdb's perspective.  */
+  if (thread->last_resume_kind == resume_stop
+      && thread->last_status.kind == TARGET_WAITKIND_IGNORE)
+    return 1;
+
+  return 0;
+}
+
+bool
+linux_process_target::status_pending_p_callback (thread_info *thread,
+						 ptid_t ptid)
+{
+  struct lwp_info *lp = get_thread_lwp (thread);
+
+  /* Check if we're only interested in events from a specific process
+     or a specific LWP.  */
+  if (!thread->id.matches (ptid))
+    return 0;
+
+  if (!lwp_resumed (lp))
+    return 0;
+
+  if (lp->status_pending_p
+      && !thread_still_has_status_pending (thread))
+    {
+      resume_one_lwp (lp, lp->stepping, GDB_SIGNAL_0, NULL);
+      return 0;
+    }
+
+  return lp->status_pending_p;
+}
+
+struct lwp_info *
+find_lwp_pid (ptid_t ptid)
+{
+  thread_info *thread = find_thread ([&] (thread_info *thr_arg)
+    {
+      int lwp = ptid.lwp () != 0 ? ptid.lwp () : ptid.pid ();
+      return thr_arg->id.lwp () == lwp;
+    });
+
+  if (thread == NULL)
+    return NULL;
+
+  return get_thread_lwp (thread);
+}
+
+/* Return the number of known LWPs in the tgid given by PID.  */
+
+static int
+num_lwps (int pid)
+{
+  int count = 0;
+
+  for_each_thread (pid, [&] (thread_info *thread)
+    {
+      count++;
+    });
+
+  return count;
+}
+
+/* See nat/linux-nat.h.  */
+
+struct lwp_info *
+iterate_over_lwps (ptid_t filter,
+		   gdb::function_view<iterate_over_lwps_ftype> callback)
+{
+  thread_info *thread = find_thread (filter, [&] (thread_info *thr_arg)
+    {
+      lwp_info *lwp = get_thread_lwp (thr_arg);
+
+      return callback (lwp);
+    });
+
+  if (thread == NULL)
+    return NULL;
+
+  return get_thread_lwp (thread);
+}
+
+void
+linux_process_target::check_zombie_leaders ()
+{
+  for_each_process ([this] (process_info *proc) {
+    pid_t leader_pid = pid_of (proc);
+    struct lwp_info *leader_lp;
+
+    leader_lp = find_lwp_pid (ptid_t (leader_pid));
+
+    if (debug_threads)
+      debug_printf ("leader_pid=%d, leader_lp!=NULL=%d, "
+		    "num_lwps=%d, zombie=%d\n",
+		    leader_pid, leader_lp!= NULL, num_lwps (leader_pid),
+		    linux_proc_pid_is_zombie (leader_pid));
+
+    if (leader_lp != NULL && !leader_lp->stopped
+	/* Check if there are other threads in the group, as we may
+	   have raced with the inferior simply exiting.  */
+	&& !last_thread_of_process_p (leader_pid)
+	&& linux_proc_pid_is_zombie (leader_pid))
+      {
+	/* A leader zombie can mean one of two things:
+
+	   - It exited, and there's an exit status pending
+	   available, or only the leader exited (not the whole
+	   program).  In the latter case, we can't waitpid the
+	   leader's exit status until all other threads are gone.
+
+	   - There are 3 or more threads in the group, and a thread
+	   other than the leader exec'd.  On an exec, the Linux
+	   kernel destroys all other threads (except the execing
+	   one) in the thread group, and resets the execing thread's
+	   tid to the tgid.  No exit notification is sent for the
+	   execing thread -- from the ptracer's perspective, it
+	   appears as though the execing thread just vanishes.
+	   Until we reap all other threads except the leader and the
+	   execing thread, the leader will be zombie, and the
+	   execing thread will be in `D (disc sleep)'.  As soon as
+	   all other threads are reaped, the execing thread changes
+	   it's tid to the tgid, and the previous (zombie) leader
+	   vanishes, giving place to the "new" leader.  We could try
+	   distinguishing the exit and exec cases, by waiting once
+	   more, and seeing if something comes out, but it doesn't
+	   sound useful.  The previous leader _does_ go away, and
+	   we'll re-add the new one once we see the exec event
+	   (which is just the same as what would happen if the
+	   previous leader did exit voluntarily before some other
+	   thread execs).  */
+
+	if (debug_threads)
+	  debug_printf ("CZL: Thread group leader %d zombie "
+			"(it exited, or another thread execd).\n",
+			leader_pid);
+
+	delete_lwp (leader_lp);
+      }
+    });
+}
+
+/* Callback for `find_thread'.  Returns the first LWP that is not
+   stopped.  */
+
+static bool
+not_stopped_callback (thread_info *thread, ptid_t filter)
+{
+  if (!thread->id.matches (filter))
+    return false;
+
+  lwp_info *lwp = get_thread_lwp (thread);
+
+  return !lwp->stopped;
+}
+
+/* Increment LWP's suspend count.  */
+
+static void
+lwp_suspended_inc (struct lwp_info *lwp)
+{
+  lwp->suspended++;
+
+  if (debug_threads && lwp->suspended > 4)
+    {
+      struct thread_info *thread = get_lwp_thread (lwp);
+
+      debug_printf ("LWP %ld has a suspiciously high suspend count,"
+		    " suspended=%d\n", lwpid_of (thread), lwp->suspended);
+    }
+}
+
+/* Decrement LWP's suspend count.  */
+
+static void
+lwp_suspended_decr (struct lwp_info *lwp)
+{
+  lwp->suspended--;
+
+  if (lwp->suspended < 0)
+    {
+      struct thread_info *thread = get_lwp_thread (lwp);
+
+      internal_error (__FILE__, __LINE__,
+		      "unsuspend LWP %ld, suspended=%d\n", lwpid_of (thread),
+		      lwp->suspended);
+    }
+}
+
+/* This function should only be called if the LWP got a SIGTRAP.
+
+   Handle any tracepoint steps or hits.  Return true if a tracepoint
+   event was handled, 0 otherwise.  */
+
+static int
+handle_tracepoints (struct lwp_info *lwp)
+{
+  struct thread_info *tinfo = get_lwp_thread (lwp);
+  int tpoint_related_event = 0;
+
+  gdb_assert (lwp->suspended == 0);
+
+  /* If this tracepoint hit causes a tracing stop, we'll immediately
+     uninsert tracepoints.  To do this, we temporarily pause all
+     threads, unpatch away, and then unpause threads.  We need to make
+     sure the unpausing doesn't resume LWP too.  */
+  lwp_suspended_inc (lwp);
+
+  /* And we need to be sure that any all-threads-stopping doesn't try
+     to move threads out of the jump pads, as it could deadlock the
+     inferior (LWP could be in the jump pad, maybe even holding the
+     lock.)  */
+
+  /* Do any necessary step collect actions.  */
+  tpoint_related_event |= tracepoint_finished_step (tinfo, lwp->stop_pc);
+
+  tpoint_related_event |= handle_tracepoint_bkpts (tinfo, lwp->stop_pc);
+
+  /* See if we just hit a tracepoint and do its main collect
+     actions.  */
+  tpoint_related_event |= tracepoint_was_hit (tinfo, lwp->stop_pc);
+
+  lwp_suspended_decr (lwp);
+
+  gdb_assert (lwp->suspended == 0);
+  gdb_assert (!stabilizing_threads
+	      || (lwp->collecting_fast_tracepoint
+		  != fast_tpoint_collect_result::not_collecting));
+
+  if (tpoint_related_event)
+    {
+      if (debug_threads)
+	debug_printf ("got a tracepoint event\n");
+      return 1;
+    }
+
+  return 0;
+}
+
+fast_tpoint_collect_result
+linux_process_target::linux_fast_tracepoint_collecting
+  (lwp_info *lwp, fast_tpoint_collect_status *status)
+{
+  CORE_ADDR thread_area;
+  struct thread_info *thread = get_lwp_thread (lwp);
+
+  /* Get the thread area address.  This is used to recognize which
+     thread is which when tracing with the in-process agent library.
+     We don't read anything from the address, and treat it as opaque;
+     it's the address itself that we assume is unique per-thread.  */
+  if (low_get_thread_area (lwpid_of (thread), &thread_area) == -1)
+    return fast_tpoint_collect_result::not_collecting;
+
+  return fast_tracepoint_collecting (thread_area, lwp->stop_pc, status);
+}
+
+int
+linux_process_target::low_get_thread_area (int lwpid, CORE_ADDR *addrp)
+{
+  return -1;
+}
+
+bool
+linux_process_target::maybe_move_out_of_jump_pad (lwp_info *lwp, int *wstat)
+{
+  struct thread_info *saved_thread;
+
+  saved_thread = current_thread;
+  current_thread = get_lwp_thread (lwp);
+
+  if ((wstat == NULL
+       || (WIFSTOPPED (*wstat) && WSTOPSIG (*wstat) != SIGTRAP))
+      && supports_fast_tracepoints ()
+      && agent_loaded_p ())
+    {
+      struct fast_tpoint_collect_status status;
+
+      if (debug_threads)
+	debug_printf ("Checking whether LWP %ld needs to move out of the "
+		      "jump pad.\n",
+		      lwpid_of (current_thread));
+
+      fast_tpoint_collect_result r
+	= linux_fast_tracepoint_collecting (lwp, &status);
+
+      if (wstat == NULL
+	  || (WSTOPSIG (*wstat) != SIGILL
+	      && WSTOPSIG (*wstat) != SIGFPE
+	      && WSTOPSIG (*wstat) != SIGSEGV
+	      && WSTOPSIG (*wstat) != SIGBUS))
+	{
+	  lwp->collecting_fast_tracepoint = r;
+
+	  if (r != fast_tpoint_collect_result::not_collecting)
+	    {
+	      if (r == fast_tpoint_collect_result::before_insn
+		  && lwp->exit_jump_pad_bkpt == NULL)
+		{
+		  /* Haven't executed the original instruction yet.
+		     Set breakpoint there, and wait till it's hit,
+		     then single-step until exiting the jump pad.  */
+		  lwp->exit_jump_pad_bkpt
+		    = set_breakpoint_at (status.adjusted_insn_addr, NULL);
+		}
+
+	      if (debug_threads)
+		debug_printf ("Checking whether LWP %ld needs to move out of "
+			      "the jump pad...it does\n",
+			      lwpid_of (current_thread));
+	      current_thread = saved_thread;
+
+	      return true;
+	    }
+	}
+      else
+	{
+	  /* If we get a synchronous signal while collecting, *and*
+	     while executing the (relocated) original instruction,
+	     reset the PC to point at the tpoint address, before
+	     reporting to GDB.  Otherwise, it's an IPA lib bug: just
+	     report the signal to GDB, and pray for the best.  */
+
+	  lwp->collecting_fast_tracepoint
+	    = fast_tpoint_collect_result::not_collecting;
+
+	  if (r != fast_tpoint_collect_result::not_collecting
+	      && (status.adjusted_insn_addr <= lwp->stop_pc
+		  && lwp->stop_pc < status.adjusted_insn_addr_end))
+	    {
+	      siginfo_t info;
+	      struct regcache *regcache;
+
+	      /* The si_addr on a few signals references the address
+		 of the faulting instruction.  Adjust that as
+		 well.  */
+	      if ((WSTOPSIG (*wstat) == SIGILL
+		   || WSTOPSIG (*wstat) == SIGFPE
+		   || WSTOPSIG (*wstat) == SIGBUS
+		   || WSTOPSIG (*wstat) == SIGSEGV)
+		  && ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread),
+			     (PTRACE_TYPE_ARG3) 0, &info) == 0
+		  /* Final check just to make sure we don't clobber
+		     the siginfo of non-kernel-sent signals.  */
+		  && (uintptr_t) info.si_addr == lwp->stop_pc)
+		{
+		  info.si_addr = (void *) (uintptr_t) status.tpoint_addr;
+		  ptrace (PTRACE_SETSIGINFO, lwpid_of (current_thread),
+			  (PTRACE_TYPE_ARG3) 0, &info);
+		}
+
+	      regcache = get_thread_regcache (current_thread, 1);
+	      low_set_pc (regcache, status.tpoint_addr);
+	      lwp->stop_pc = status.tpoint_addr;
+
+	      /* Cancel any fast tracepoint lock this thread was
+		 holding.  */
+	      force_unlock_trace_buffer ();
+	    }
+
+	  if (lwp->exit_jump_pad_bkpt != NULL)
+	    {
+	      if (debug_threads)
+		debug_printf ("Cancelling fast exit-jump-pad: removing bkpt. "
+			      "stopping all threads momentarily.\n");
+
+	      stop_all_lwps (1, lwp);
+
+	      delete_breakpoint (lwp->exit_jump_pad_bkpt);
+	      lwp->exit_jump_pad_bkpt = NULL;
+
+	      unstop_all_lwps (1, lwp);
+
+	      gdb_assert (lwp->suspended >= 0);
+	    }
+	}
+    }
+
+  if (debug_threads)
+    debug_printf ("Checking whether LWP %ld needs to move out of the "
+		  "jump pad...no\n",
+		  lwpid_of (current_thread));
+
+  current_thread = saved_thread;
+  return false;
+}
+
+/* Enqueue one signal in the "signals to report later when out of the
+   jump pad" list.  */
+
+static void
+enqueue_one_deferred_signal (struct lwp_info *lwp, int *wstat)
+{
+  struct thread_info *thread = get_lwp_thread (lwp);
+
+  if (debug_threads)
+    debug_printf ("Deferring signal %d for LWP %ld.\n",
+		  WSTOPSIG (*wstat), lwpid_of (thread));
+
+  if (debug_threads)
+    {
+      for (const auto &sig : lwp->pending_signals_to_report)
+	debug_printf ("   Already queued %d\n",
+		      sig.signal);
+
+      debug_printf ("   (no more currently queued signals)\n");
+    }
+
+  /* Don't enqueue non-RT signals if they are already in the deferred
+     queue.  (SIGSTOP being the easiest signal to see ending up here
+     twice)  */
+  if (WSTOPSIG (*wstat) < __SIGRTMIN)
+    {
+      for (const auto &sig : lwp->pending_signals_to_report)
+	{
+	  if (sig.signal == WSTOPSIG (*wstat))
+	    {
+	      if (debug_threads)
+		debug_printf ("Not requeuing already queued non-RT signal %d"
+			      " for LWP %ld\n",
+			      sig.signal,
+			      lwpid_of (thread));
+	      return;
+	    }
+	}
+    }
+
+  lwp->pending_signals_to_report.emplace_back (WSTOPSIG (*wstat));
+
+  ptrace (PTRACE_GETSIGINFO, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0,
+	  &lwp->pending_signals_to_report.back ().info);
+}
+
+/* Dequeue one signal from the "signals to report later when out of
+   the jump pad" list.  */
+
+static int
+dequeue_one_deferred_signal (struct lwp_info *lwp, int *wstat)
+{
+  struct thread_info *thread = get_lwp_thread (lwp);
+
+  if (!lwp->pending_signals_to_report.empty ())
+    {
+      const pending_signal &p_sig = lwp->pending_signals_to_report.front ();
+
+      *wstat = W_STOPCODE (p_sig.signal);
+      if (p_sig.info.si_signo != 0)
+	ptrace (PTRACE_SETSIGINFO, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0,
+		&p_sig.info);
+
+      lwp->pending_signals_to_report.pop_front ();
+
+      if (debug_threads)
+	debug_printf ("Reporting deferred signal %d for LWP %ld.\n",
+		      WSTOPSIG (*wstat), lwpid_of (thread));
+
+      if (debug_threads)
+	{
+	  for (const auto &sig : lwp->pending_signals_to_report)
+	    debug_printf ("   Still queued %d\n",
+			  sig.signal);
+
+	  debug_printf ("   (no more queued signals)\n");
+	}
+
+      return 1;
+    }
+
+  return 0;
+}
+
+bool
+linux_process_target::check_stopped_by_watchpoint (lwp_info *child)
+{
+  struct thread_info *saved_thread = current_thread;
+  current_thread = get_lwp_thread (child);
+
+  if (low_stopped_by_watchpoint ())
+    {
+      child->stop_reason = TARGET_STOPPED_BY_WATCHPOINT;
+      child->stopped_data_address = low_stopped_data_address ();
+    }
+
+  current_thread = saved_thread;
+
+  return child->stop_reason == TARGET_STOPPED_BY_WATCHPOINT;
+}
+
+bool
+linux_process_target::low_stopped_by_watchpoint ()
+{
+  return false;
+}
+
+CORE_ADDR
+linux_process_target::low_stopped_data_address ()
+{
+  return 0;
+}
+
+/* Return the ptrace options that we want to try to enable.  */
+
+static int
+linux_low_ptrace_options (int attached)
+{
+  client_state &cs = get_client_state ();
+  int options = 0;
+
+  if (!attached)
+    options |= PTRACE_O_EXITKILL;
+
+  if (cs.report_fork_events)
+    options |= PTRACE_O_TRACEFORK;
+
+  if (cs.report_vfork_events)
+    options |= (PTRACE_O_TRACEVFORK | PTRACE_O_TRACEVFORKDONE);
+
+  if (cs.report_exec_events)
+    options |= PTRACE_O_TRACEEXEC;
+
+  options |= PTRACE_O_TRACESYSGOOD;
+
+  return options;
+}
+
+lwp_info *
+linux_process_target::filter_event (int lwpid, int wstat)
+{
+  client_state &cs = get_client_state ();
+  struct lwp_info *child;
+  struct thread_info *thread;
+  int have_stop_pc = 0;
+
+  child = find_lwp_pid (ptid_t (lwpid));
+
+  /* Check for stop events reported by a process we didn't already
+     know about - anything not already in our LWP list.
+
+     If we're expecting to receive stopped processes after
+     fork, vfork, and clone events, then we'll just add the
+     new one to our list and go back to waiting for the event
+     to be reported - the stopped process might be returned
+     from waitpid before or after the event is.
+
+     But note the case of a non-leader thread exec'ing after the
+     leader having exited, and gone from our lists (because
+     check_zombie_leaders deleted it).  The non-leader thread
+     changes its tid to the tgid.  */
+
+  if (WIFSTOPPED (wstat) && child == NULL && WSTOPSIG (wstat) == SIGTRAP
+      && linux_ptrace_get_extended_event (wstat) == PTRACE_EVENT_EXEC)
+    {
+      ptid_t child_ptid;
+
+      /* A multi-thread exec after we had seen the leader exiting.  */
+      if (debug_threads)
+	{
+	  debug_printf ("LLW: Re-adding thread group leader LWP %d"
+			"after exec.\n", lwpid);
+	}
+
+      child_ptid = ptid_t (lwpid, lwpid, 0);
+      child = add_lwp (child_ptid);
+      child->stopped = 1;
+      current_thread = child->thread;
+    }
+
+  /* If we didn't find a process, one of two things presumably happened:
+     - A process we started and then detached from has exited.  Ignore it.
+     - A process we are controlling has forked and the new child's stop
+     was reported to us by the kernel.  Save its PID.  */
+  if (child == NULL && WIFSTOPPED (wstat))
+    {
+      add_to_pid_list (&stopped_pids, lwpid, wstat);
+      return NULL;
+    }
+  else if (child == NULL)
+    return NULL;
+
+  thread = get_lwp_thread (child);
+
+  child->stopped = 1;
+
+  child->last_status = wstat;
+
+  /* Check if the thread has exited.  */
+  if ((WIFEXITED (wstat) || WIFSIGNALED (wstat)))
+    {
+      if (debug_threads)
+	debug_printf ("LLFE: %d exited.\n", lwpid);
+
+      if (finish_step_over (child))
+	{
+	  /* Unsuspend all other LWPs, and set them back running again.  */
+	  unsuspend_all_lwps (child);
+	}
+
+      /* If there is at least one more LWP, then the exit signal was
+	 not the end of the debugged application and should be
+	 ignored, unless GDB wants to hear about thread exits.  */
+      if (cs.report_thread_events
+	  || last_thread_of_process_p (pid_of (thread)))
+	{
+	  /* Since events are serialized to GDB core, and we can't
+	     report this one right now.  Leave the status pending for
+	     the next time we're able to report it.  */
+	  mark_lwp_dead (child, wstat);
+	  return child;
+	}
+      else
+	{
+	  delete_lwp (child);
+	  return NULL;
+	}
+    }
+
+  gdb_assert (WIFSTOPPED (wstat));
+
+  if (WIFSTOPPED (wstat))
+    {
+      struct process_info *proc;
+
+      /* Architecture-specific setup after inferior is running.  */
+      proc = find_process_pid (pid_of (thread));
+      if (proc->tdesc == NULL)
+	{
+	  if (proc->attached)
+	    {
+	      /* This needs to happen after we have attached to the
+		 inferior and it is stopped for the first time, but
+		 before we access any inferior registers.  */
+	      arch_setup_thread (thread);
+	    }
+	  else
+	    {
+	      /* The process is started, but GDBserver will do
+		 architecture-specific setup after the program stops at
+		 the first instruction.  */
+	      child->status_pending_p = 1;
+	      child->status_pending = wstat;
+	      return child;
+	    }
+	}
+    }
+
+  if (WIFSTOPPED (wstat) && child->must_set_ptrace_flags)
+    {
+      struct process_info *proc = find_process_pid (pid_of (thread));
+      int options = linux_low_ptrace_options (proc->attached);
+
+      linux_enable_event_reporting (lwpid, options);
+      child->must_set_ptrace_flags = 0;
+    }
+
+  /* Always update syscall_state, even if it will be filtered later.  */
+  if (WIFSTOPPED (wstat) && WSTOPSIG (wstat) == SYSCALL_SIGTRAP)
+    {
+      child->syscall_state
+	= (child->syscall_state == TARGET_WAITKIND_SYSCALL_ENTRY
+	   ? TARGET_WAITKIND_SYSCALL_RETURN
+	   : TARGET_WAITKIND_SYSCALL_ENTRY);
+    }
+  else
+    {
+      /* Almost all other ptrace-stops are known to be outside of system
+	 calls, with further exceptions in handle_extended_wait.  */
+      child->syscall_state = TARGET_WAITKIND_IGNORE;
+    }
+
+  /* Be careful to not overwrite stop_pc until save_stop_reason is
+     called.  */
+  if (WIFSTOPPED (wstat) && WSTOPSIG (wstat) == SIGTRAP
+      && linux_is_extended_waitstatus (wstat))
+    {
+      child->stop_pc = get_pc (child);
+      if (handle_extended_wait (&child, wstat))
+	{
+	  /* The event has been handled, so just return without
+	     reporting it.  */
+	  return NULL;
+	}
+    }
+
+  if (linux_wstatus_maybe_breakpoint (wstat))
+    {
+      if (save_stop_reason (child))
+	have_stop_pc = 1;
+    }
+
+  if (!have_stop_pc)
+    child->stop_pc = get_pc (child);
+
+  if (WIFSTOPPED (wstat) && WSTOPSIG (wstat) == SIGSTOP
+      && child->stop_expected)
+    {
+      if (debug_threads)
+	debug_printf ("Expected stop.\n");
+      child->stop_expected = 0;
+
+      if (thread->last_resume_kind == resume_stop)
+	{
+	  /* We want to report the stop to the core.  Treat the
+	     SIGSTOP as a normal event.  */
+	  if (debug_threads)
+	    debug_printf ("LLW: resume_stop SIGSTOP caught for %s.\n",
+			  target_pid_to_str (ptid_of (thread)));
+	}
+      else if (stopping_threads != NOT_STOPPING_THREADS)
+	{
+	  /* Stopping threads.  We don't want this SIGSTOP to end up
+	     pending.  */
+	  if (debug_threads)
+	    debug_printf ("LLW: SIGSTOP caught for %s "
+			  "while stopping threads.\n",
+			  target_pid_to_str (ptid_of (thread)));
+	  return NULL;
+	}
+      else
+	{
+	  /* This is a delayed SIGSTOP.  Filter out the event.  */
+	  if (debug_threads)
+	    debug_printf ("LLW: %s %s, 0, 0 (discard delayed SIGSTOP)\n",
+			  child->stepping ? "step" : "continue",
+			  target_pid_to_str (ptid_of (thread)));
+
+	  resume_one_lwp (child, child->stepping, 0, NULL);
+	  return NULL;
+	}
+    }
+
+  child->status_pending_p = 1;
+  child->status_pending = wstat;
+  return child;
+}
+
+bool
+linux_process_target::maybe_hw_step (thread_info *thread)
+{
+  if (supports_hardware_single_step ())
+    return true;
+  else
+    {
+      /* GDBserver must insert single-step breakpoint for software
+	 single step.  */
+      gdb_assert (has_single_step_breakpoints (thread));
+      return false;
+    }
+}
+
+void
+linux_process_target::resume_stopped_resumed_lwps (thread_info *thread)
+{
+  struct lwp_info *lp = get_thread_lwp (thread);
+
+  if (lp->stopped
+      && !lp->suspended
+      && !lp->status_pending_p
+      && thread->last_status.kind == TARGET_WAITKIND_IGNORE)
+    {
+      int step = 0;
+
+      if (thread->last_resume_kind == resume_step)
+	step = maybe_hw_step (thread);
+
+      if (debug_threads)
+	debug_printf ("RSRL: resuming stopped-resumed LWP %s at %s: step=%d\n",
+		      target_pid_to_str (ptid_of (thread)),
+		      paddress (lp->stop_pc),
+		      step);
+
+      resume_one_lwp (lp, step, GDB_SIGNAL_0, NULL);
+    }
+}
+
+int
+linux_process_target::wait_for_event_filtered (ptid_t wait_ptid,
+					       ptid_t filter_ptid,
+					       int *wstatp, int options)
+{
+  struct thread_info *event_thread;
+  struct lwp_info *event_child, *requested_child;
+  sigset_t block_mask, prev_mask;
+
+ retry:
+  /* N.B. event_thread points to the thread_info struct that contains
+     event_child.  Keep them in sync.  */
+  event_thread = NULL;
+  event_child = NULL;
+  requested_child = NULL;
+
+  /* Check for a lwp with a pending status.  */
+
+  if (filter_ptid == minus_one_ptid || filter_ptid.is_pid ())
+    {
+      event_thread = find_thread_in_random ([&] (thread_info *thread)
+	{
+	  return status_pending_p_callback (thread, filter_ptid);
+	});
+
+      if (event_thread != NULL)
+	event_child = get_thread_lwp (event_thread);
+      if (debug_threads && event_thread)
+	debug_printf ("Got a pending child %ld\n", lwpid_of (event_thread));
+    }
+  else if (filter_ptid != null_ptid)
+    {
+      requested_child = find_lwp_pid (filter_ptid);
+
+      if (stopping_threads == NOT_STOPPING_THREADS
+	  && requested_child->status_pending_p
+	  && (requested_child->collecting_fast_tracepoint
+	      != fast_tpoint_collect_result::not_collecting))
+	{
+	  enqueue_one_deferred_signal (requested_child,
+				       &requested_child->status_pending);
+	  requested_child->status_pending_p = 0;
+	  requested_child->status_pending = 0;
+	  resume_one_lwp (requested_child, 0, 0, NULL);
+	}
+
+      if (requested_child->suspended
+	  && requested_child->status_pending_p)
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "requesting an event out of a"
+			  " suspended child?");
+	}
+
+      if (requested_child->status_pending_p)
+	{
+	  event_child = requested_child;
+	  event_thread = get_lwp_thread (event_child);
+	}
+    }
+
+  if (event_child != NULL)
+    {
+      if (debug_threads)
+	debug_printf ("Got an event from pending child %ld (%04x)\n",
+		      lwpid_of (event_thread), event_child->status_pending);
+      *wstatp = event_child->status_pending;
+      event_child->status_pending_p = 0;
+      event_child->status_pending = 0;
+      current_thread = event_thread;
+      return lwpid_of (event_thread);
+    }
+
+  /* But if we don't find a pending event, we'll have to wait.
+
+     We only enter this loop if no process has a pending wait status.
+     Thus any action taken in response to a wait status inside this
+     loop is responding as soon as we detect the status, not after any
+     pending events.  */
+
+  /* Make sure SIGCHLD is blocked until the sigsuspend below.  Block
+     all signals while here.  */
+  sigfillset (&block_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
+     starvation.  */
+  while (event_child == NULL)
+    {
+      pid_t ret = 0;
+
+      /* Always use -1 and WNOHANG, due to couple of a kernel/ptrace
+	 quirks:
+
+	 - If the thread group leader exits while other threads in the
+	   thread group still exist, waitpid(TGID, ...) hangs.  That
+	   waitpid won't return an exit status until the other threads
+	   in the group are reaped.
+
+	 - When a non-leader thread execs, that thread just vanishes
+	   without reporting an exit (so we'd hang if we waited for it
+	   explicitly in that case).  The exec event is reported to
+	   the TGID pid.  */
+      errno = 0;
+      ret = my_waitpid (-1, wstatp, options | WNOHANG);
+
+      if (debug_threads)
+	debug_printf ("LWFE: waitpid(-1, ...) returned %d, %s\n",
+		      ret, errno ? safe_strerror (errno) : "ERRNO-OK");
+
+      if (ret > 0)
+	{
+	  if (debug_threads)
+	    {
+	      debug_printf ("LLW: waitpid %ld received %s\n",
+			    (long) ret, status_to_str (*wstatp));
+	    }
+
+	  /* Filter all events.  IOW, leave all events pending.  We'll
+	     randomly select an event LWP out of all that have events
+	     below.  */
+	  filter_event (ret, *wstatp);
+	  /* Retry until nothing comes out of waitpid.  A single
+	     SIGCHLD can indicate more than one child stopped.  */
+	  continue;
+	}
+
+      /* Now that we've pulled all events out of the kernel, resume
+	 LWPs that don't have an interesting event to report.  */
+      if (stopping_threads == NOT_STOPPING_THREADS)
+	for_each_thread ([this] (thread_info *thread)
+	  {
+	    resume_stopped_resumed_lwps (thread);
+	  });
+
+      /* ... and find an LWP with a status to report to the core, if
+	 any.  */
+      event_thread = find_thread_in_random ([&] (thread_info *thread)
+	{
+	  return status_pending_p_callback (thread, filter_ptid);
+	});
+
+      if (event_thread != NULL)
+	{
+	  event_child = get_thread_lwp (event_thread);
+	  *wstatp = event_child->status_pending;
+	  event_child->status_pending_p = 0;
+	  event_child->status_pending = 0;
+	  break;
+	}
+
+      /* Check for zombie thread group leaders.  Those can't be reaped
+	 until all other threads in the thread group are.  */
+      check_zombie_leaders ();
+
+      auto not_stopped = [&] (thread_info *thread)
+	{
+	  return not_stopped_callback (thread, wait_ptid);
+	};
+
+      /* If there are no resumed children left in the set of LWPs we
+	 want to wait for, bail.  We can't just block in
+	 waitpid/sigsuspend, because lwps might have been left stopped
+	 in trace-stop state, and we'd be stuck forever waiting for
+	 their status to change (which would only happen if we resumed
+	 them).  Even if WNOHANG is set, this return code is preferred
+	 over 0 (below), as it is more detailed.  */
+      if (find_thread (not_stopped) == NULL)
+	{
+	  if (debug_threads)
+	    debug_printf ("LLW: exit (no unwaited-for LWP)\n");
+	  gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
+	  return -1;
+	}
+
+      /* No interesting event to report to the caller.  */
+      if ((options & WNOHANG))
+	{
+	  if (debug_threads)
+	    debug_printf ("WNOHANG set, no event found\n");
+
+	  gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
+	  return 0;
+	}
+
+      /* Block until we get an event reported with SIGCHLD.  */
+      if (debug_threads)
+	debug_printf ("sigsuspend'ing\n");
+
+      sigsuspend (&prev_mask);
+      gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
+      goto retry;
+    }
+
+  gdb_sigmask (SIG_SETMASK, &prev_mask, NULL);
+
+  current_thread = event_thread;
+
+  return lwpid_of (event_thread);
+}
+
+int
+linux_process_target::wait_for_event (ptid_t ptid, int *wstatp, int options)
+{
+  return wait_for_event_filtered (ptid, ptid, wstatp, options);
+}
+
+/* Select one LWP out of those that have events pending.  */
+
+static void
+select_event_lwp (struct lwp_info **orig_lp)
+{
+  struct thread_info *event_thread = NULL;
+
+  /* In all-stop, give preference to the LWP that is being
+     single-stepped.  There will be at most one, and it's the LWP that
+     the core is most interested in.  If we didn't do this, then we'd
+     have to handle pending step SIGTRAPs somehow in case the core
+     later continues the previously-stepped thread, otherwise we'd
+     report the pending SIGTRAP, and the core, not having stepped the
+     thread, wouldn't understand what the trap was for, and therefore
+     would report it to the user as a random signal.  */
+  if (!non_stop)
+    {
+      event_thread = find_thread ([] (thread_info *thread)
+	{
+	  lwp_info *lp = get_thread_lwp (thread);
+
+	  return (thread->last_status.kind == TARGET_WAITKIND_IGNORE
+		  && thread->last_resume_kind == resume_step
+		  && lp->status_pending_p);
+	});
+
+      if (event_thread != NULL)
+	{
+	  if (debug_threads)
+	    debug_printf ("SEL: Select single-step %s\n",
+			  target_pid_to_str (ptid_of (event_thread)));
+	}
+    }
+  if (event_thread == NULL)
+    {
+      /* No single-stepping LWP.  Select one at random, out of those
+         which have had events.  */
+
+      event_thread = find_thread_in_random ([&] (thread_info *thread)
+	{
+	  lwp_info *lp = get_thread_lwp (thread);
+
+	  /* Only resumed LWPs that have an event pending. */
+	  return (thread->last_status.kind == TARGET_WAITKIND_IGNORE
+		  && lp->status_pending_p);
+	});
+    }
+
+  if (event_thread != NULL)
+    {
+      struct lwp_info *event_lp = get_thread_lwp (event_thread);
+
+      /* Switch the event LWP.  */
+      *orig_lp = event_lp;
+    }
+}
+
+/* Decrement the suspend count of all LWPs, except EXCEPT, if non
+   NULL.  */
+
+static void
+unsuspend_all_lwps (struct lwp_info *except)
+{
+  for_each_thread ([&] (thread_info *thread)
+    {
+      lwp_info *lwp = get_thread_lwp (thread);
+
+      if (lwp != except)
+	lwp_suspended_decr (lwp);
+    });
+}
+
+static bool lwp_running (thread_info *thread);
+
+/* Stabilize threads (move out of jump pads).
+
+   If a thread is midway collecting a fast tracepoint, we need to
+   finish the collection and move it out of the jump pad before
+   reporting the signal.
+
+   This avoids recursion while collecting (when a signal arrives
+   midway, and the signal handler itself collects), which would trash
+   the trace buffer.  In case the user set a breakpoint in a signal
+   handler, this avoids the backtrace showing the jump pad, etc..
+   Most importantly, there are certain things we can't do safely if
+   threads are stopped in a jump pad (or in its callee's).  For
+   example:
+
+     - starting a new trace run.  A thread still collecting the
+   previous run, could trash the trace buffer when resumed.  The trace
+   buffer control structures would have been reset but the thread had
+   no way to tell.  The thread could even midway memcpy'ing to the
+   buffer, which would mean that when resumed, it would clobber the
+   trace buffer that had been set for a new run.
+
+     - we can't rewrite/reuse the jump pads for new tracepoints
+   safely.  Say you do tstart while a thread is stopped midway while
+   collecting.  When the thread is later resumed, it finishes the
+   collection, and returns to the jump pad, to execute the original
+   instruction that was under the tracepoint jump at the time the
+   older run had been started.  If the jump pad had been rewritten
+   since for something else in the new run, the thread would now
+   execute the wrong / random instructions.  */
+
+void
+linux_process_target::stabilize_threads ()
+{
+  thread_info *thread_stuck = find_thread ([this] (thread_info *thread)
+				{
+				  return stuck_in_jump_pad (thread);
+				});
+
+  if (thread_stuck != NULL)
+    {
+      if (debug_threads)
+	debug_printf ("can't stabilize, LWP %ld is stuck in jump pad\n",
+		      lwpid_of (thread_stuck));
+      return;
+    }
+
+  thread_info *saved_thread = current_thread;
+
+  stabilizing_threads = 1;
+
+  /* Kick 'em all.  */
+  for_each_thread ([this] (thread_info *thread)
+    {
+      move_out_of_jump_pad (thread);
+    });
+
+  /* Loop until all are stopped out of the jump pads.  */
+  while (find_thread (lwp_running) != NULL)
+    {
+      struct target_waitstatus ourstatus;
+      struct lwp_info *lwp;
+      int wstat;
+
+      /* Note that we go through the full wait even loop.  While
+	 moving threads out of jump pad, we need to be able to step
+	 over internal breakpoints and such.  */
+      wait_1 (minus_one_ptid, &ourstatus, 0);
+
+      if (ourstatus.kind == TARGET_WAITKIND_STOPPED)
+	{
+	  lwp = get_thread_lwp (current_thread);
+
+	  /* Lock it.  */
+	  lwp_suspended_inc (lwp);
+
+	  if (ourstatus.value.sig != GDB_SIGNAL_0
+	      || current_thread->last_resume_kind == resume_stop)
+	    {
+	      wstat = W_STOPCODE (gdb_signal_to_host (ourstatus.value.sig));
+	      enqueue_one_deferred_signal (lwp, &wstat);
+	    }
+	}
+    }
+
+  unsuspend_all_lwps (NULL);
+
+  stabilizing_threads = 0;
+
+  current_thread = saved_thread;
+
+  if (debug_threads)
+    {
+      thread_stuck = find_thread ([this] (thread_info *thread)
+		       {
+			 return stuck_in_jump_pad (thread);
+		       });
+
+      if (thread_stuck != NULL)
+	debug_printf ("couldn't stabilize, LWP %ld got stuck in jump pad\n",
+		      lwpid_of (thread_stuck));
+    }
+}
+
+/* Convenience function that is called when the kernel reports an
+   event that is not passed out to GDB.  */
+
+static ptid_t
+ignore_event (struct target_waitstatus *ourstatus)
+{
+  /* If we got an event, there may still be others, as a single
+     SIGCHLD can indicate more than one child stopped.  This forces
+     another target_wait call.  */
+  async_file_mark ();
+
+  ourstatus->kind = TARGET_WAITKIND_IGNORE;
+  return null_ptid;
+}
+
+ptid_t
+linux_process_target::filter_exit_event (lwp_info *event_child,
+					 target_waitstatus *ourstatus)
+{
+  client_state &cs = get_client_state ();
+  struct thread_info *thread = get_lwp_thread (event_child);
+  ptid_t ptid = ptid_of (thread);
+
+  if (!last_thread_of_process_p (pid_of (thread)))
+    {
+      if (cs.report_thread_events)
+	ourstatus->kind = TARGET_WAITKIND_THREAD_EXITED;
+      else
+	ourstatus->kind = TARGET_WAITKIND_IGNORE;
+
+      delete_lwp (event_child);
+    }
+  return ptid;
+}
+
+/* Returns 1 if GDB is interested in any event_child syscalls.  */
+
+static int
+gdb_catching_syscalls_p (struct lwp_info *event_child)
+{
+  struct thread_info *thread = get_lwp_thread (event_child);
+  struct process_info *proc = get_thread_process (thread);
+
+  return !proc->syscalls_to_catch.empty ();
+}
+
+bool
+linux_process_target::gdb_catch_this_syscall (lwp_info *event_child)
+{
+  int sysno;
+  struct thread_info *thread = get_lwp_thread (event_child);
+  struct process_info *proc = get_thread_process (thread);
+
+  if (proc->syscalls_to_catch.empty ())
+    return false;
+
+  if (proc->syscalls_to_catch[0] == ANY_SYSCALL)
+    return true;
+
+  get_syscall_trapinfo (event_child, &sysno);
+
+  for (int iter : proc->syscalls_to_catch)
+    if (iter == sysno)
+      return true;
+
+  return false;
+}
+
+ptid_t
+linux_process_target::wait_1 (ptid_t ptid, target_waitstatus *ourstatus,
+			      int target_options)
+{
+  client_state &cs = get_client_state ();
+  int w;
+  struct lwp_info *event_child;
+  int options;
+  int pid;
+  int step_over_finished;
+  int bp_explains_trap;
+  int maybe_internal_trap;
+  int report_to_gdb;
+  int trace_event;
+  int in_step_range;
+  int any_resumed;
+
+  if (debug_threads)
+    {
+      debug_enter ();
+      debug_printf ("wait_1: [%s]\n", target_pid_to_str (ptid));
+    }
+
+  /* Translate generic target options into linux options.  */
+  options = __WALL;
+  if (target_options & TARGET_WNOHANG)
+    options |= WNOHANG;
+
+  bp_explains_trap = 0;
+  trace_event = 0;
+  in_step_range = 0;
+  ourstatus->kind = TARGET_WAITKIND_IGNORE;
+
+  auto status_pending_p_any = [&] (thread_info *thread)
+    {
+      return status_pending_p_callback (thread, minus_one_ptid);
+    };
+
+  auto not_stopped = [&] (thread_info *thread)
+    {
+      return not_stopped_callback (thread, minus_one_ptid);
+    };
+
+  /* Find a resumed LWP, if any.  */
+  if (find_thread (status_pending_p_any) != NULL)
+    any_resumed = 1;
+  else if (find_thread (not_stopped) != NULL)
+    any_resumed = 1;
+  else
+    any_resumed = 0;
+
+  if (step_over_bkpt == null_ptid)
+    pid = wait_for_event (ptid, &w, options);
+  else
+    {
+      if (debug_threads)
+	debug_printf ("step_over_bkpt set [%s], doing a blocking wait\n",
+		      target_pid_to_str (step_over_bkpt));
+      pid = wait_for_event (step_over_bkpt, &w, options & ~WNOHANG);
+    }
+
+  if (pid == 0 || (pid == -1 && !any_resumed))
+    {
+      gdb_assert (target_options & TARGET_WNOHANG);
+
+      if (debug_threads)
+	{
+	  debug_printf ("wait_1 ret = null_ptid, "
+			"TARGET_WAITKIND_IGNORE\n");
+	  debug_exit ();
+	}
+
+      ourstatus->kind = TARGET_WAITKIND_IGNORE;
+      return null_ptid;
+    }
+  else if (pid == -1)
+    {
+      if (debug_threads)
+	{
+	  debug_printf ("wait_1 ret = null_ptid, "
+			"TARGET_WAITKIND_NO_RESUMED\n");
+	  debug_exit ();
+	}
+
+      ourstatus->kind = TARGET_WAITKIND_NO_RESUMED;
+      return null_ptid;
+    }
+
+  event_child = get_thread_lwp (current_thread);
+
+  /* wait_for_event only returns an exit status for the last
+     child of a process.  Report it.  */
+  if (WIFEXITED (w) || WIFSIGNALED (w))
+    {
+      if (WIFEXITED (w))
+	{
+	  ourstatus->kind = TARGET_WAITKIND_EXITED;
+	  ourstatus->value.integer = WEXITSTATUS (w);
+
+	  if (debug_threads)
+	    {
+	      debug_printf ("wait_1 ret = %s, exited with "
+			    "retcode %d\n",
+			    target_pid_to_str (ptid_of (current_thread)),
+			    WEXITSTATUS (w));
+	      debug_exit ();
+	    }
+	}
+      else
+	{
+	  ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
+	  ourstatus->value.sig = gdb_signal_from_host (WTERMSIG (w));
+
+	  if (debug_threads)
+	    {
+	      debug_printf ("wait_1 ret = %s, terminated with "
+			    "signal %d\n",
+			    target_pid_to_str (ptid_of (current_thread)),
+			    WTERMSIG (w));
+	      debug_exit ();
+	    }
+	}
+
+      if (ourstatus->kind == TARGET_WAITKIND_EXITED)
+	return filter_exit_event (event_child, ourstatus);
+
+      return ptid_of (current_thread);
+    }
+
+  /* If step-over executes a breakpoint instruction, in the case of a
+     hardware single step it means a gdb/gdbserver breakpoint had been
+     planted on top of a permanent breakpoint, in the case of a software
+     single step it may just mean that gdbserver hit the reinsert breakpoint.
+     The PC has been adjusted by save_stop_reason to point at
+     the breakpoint address.
+     So in the case of the hardware single step advance the PC manually
+     past the breakpoint and in the case of software single step advance only
+     if it's not the single_step_breakpoint we are hitting.
+     This avoids that a program would keep trapping a permanent breakpoint
+     forever.  */
+  if (step_over_bkpt != null_ptid
+      && event_child->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
+      && (event_child->stepping
+	  || !single_step_breakpoint_inserted_here (event_child->stop_pc)))
+    {
+      int increment_pc = 0;
+      int breakpoint_kind = 0;
+      CORE_ADDR stop_pc = event_child->stop_pc;
+
+      breakpoint_kind = breakpoint_kind_from_current_state (&stop_pc);
+      sw_breakpoint_from_kind (breakpoint_kind, &increment_pc);
+
+      if (debug_threads)
+	{
+	  debug_printf ("step-over for %s executed software breakpoint\n",
+			target_pid_to_str (ptid_of (current_thread)));
+	}
+
+      if (increment_pc != 0)
+	{
+	  struct regcache *regcache
+	    = get_thread_regcache (current_thread, 1);
+
+	  event_child->stop_pc += increment_pc;
+	  low_set_pc (regcache, event_child->stop_pc);
+
+	  if (!low_breakpoint_at (event_child->stop_pc))
+	    event_child->stop_reason = TARGET_STOPPED_BY_NO_REASON;
+	}
+    }
+
+  /* If this event was not handled before, and is not a SIGTRAP, we
+     report it.  SIGILL and SIGSEGV are also treated as traps in case
+     a breakpoint is inserted at the current PC.  If this target does
+     not support internal breakpoints at all, we also report the
+     SIGTRAP without further processing; it's of no concern to us.  */
+  maybe_internal_trap
+    = (low_supports_breakpoints ()
+       && (WSTOPSIG (w) == SIGTRAP
+	   || ((WSTOPSIG (w) == SIGILL
+		|| WSTOPSIG (w) == SIGSEGV)
+	       && low_breakpoint_at (event_child->stop_pc))));
+
+  if (maybe_internal_trap)
+    {
+      /* Handle anything that requires bookkeeping before deciding to
+	 report the event or continue waiting.  */
+
+      /* First check if we can explain the SIGTRAP with an internal
+	 breakpoint, or if we should possibly report the event to GDB.
+	 Do this before anything that may remove or insert a
+	 breakpoint.  */
+      bp_explains_trap = breakpoint_inserted_here (event_child->stop_pc);
+
+      /* We have a SIGTRAP, possibly a step-over dance has just
+	 finished.  If so, tweak the state machine accordingly,
+	 reinsert breakpoints and delete any single-step
+	 breakpoints.  */
+      step_over_finished = finish_step_over (event_child);
+
+      /* Now invoke the callbacks of any internal breakpoints there.  */
+      check_breakpoints (event_child->stop_pc);
+
+      /* Handle tracepoint data collecting.  This may overflow the
+	 trace buffer, and cause a tracing stop, removing
+	 breakpoints.  */
+      trace_event = handle_tracepoints (event_child);
+
+      if (bp_explains_trap)
+	{
+	  if (debug_threads)
+	    debug_printf ("Hit a gdbserver breakpoint.\n");
+	}
+    }
+  else
+    {
+      /* We have some other signal, possibly a step-over dance was in
+	 progress, and it should be cancelled too.  */
+      step_over_finished = finish_step_over (event_child);
+    }
+
+  /* We have all the data we need.  Either report the event to GDB, or
+     resume threads and keep waiting for more.  */
+
+  /* If we're collecting a fast tracepoint, finish the collection and
+     move out of the jump pad before delivering a signal.  See
+     linux_stabilize_threads.  */
+
+  if (WIFSTOPPED (w)
+      && WSTOPSIG (w) != SIGTRAP
+      && supports_fast_tracepoints ()
+      && agent_loaded_p ())
+    {
+      if (debug_threads)
+	debug_printf ("Got signal %d for LWP %ld.  Check if we need "
+		      "to defer or adjust it.\n",
+		      WSTOPSIG (w), lwpid_of (current_thread));
+
+      /* Allow debugging the jump pad itself.  */
+      if (current_thread->last_resume_kind != resume_step
+	  && maybe_move_out_of_jump_pad (event_child, &w))
+	{
+	  enqueue_one_deferred_signal (event_child, &w);
+
+	  if (debug_threads)
+	    debug_printf ("Signal %d for LWP %ld deferred (in jump pad)\n",
+			  WSTOPSIG (w), lwpid_of (current_thread));
+
+	  resume_one_lwp (event_child, 0, 0, NULL);
+
+	  if (debug_threads)
+	    debug_exit ();
+	  return ignore_event (ourstatus);
+	}
+    }
+
+  if (event_child->collecting_fast_tracepoint
+      != fast_tpoint_collect_result::not_collecting)
+    {
+      if (debug_threads)
+	debug_printf ("LWP %ld was trying to move out of the jump pad (%d). "
+		      "Check if we're already there.\n",
+		      lwpid_of (current_thread),
+		      (int) event_child->collecting_fast_tracepoint);
+
+      trace_event = 1;
+
+      event_child->collecting_fast_tracepoint
+	= linux_fast_tracepoint_collecting (event_child, NULL);
+
+      if (event_child->collecting_fast_tracepoint
+	  != fast_tpoint_collect_result::before_insn)
+	{
+	  /* No longer need this breakpoint.  */
+	  if (event_child->exit_jump_pad_bkpt != NULL)
+	    {
+	      if (debug_threads)
+		debug_printf ("No longer need exit-jump-pad bkpt; removing it."
+			      "stopping all threads momentarily.\n");
+
+	      /* Other running threads could hit this breakpoint.
+		 We don't handle moribund locations like GDB does,
+		 instead we always pause all threads when removing
+		 breakpoints, so that any step-over or
+		 decr_pc_after_break adjustment is always taken
+		 care of while the breakpoint is still
+		 inserted.  */
+	      stop_all_lwps (1, event_child);
+
+	      delete_breakpoint (event_child->exit_jump_pad_bkpt);
+	      event_child->exit_jump_pad_bkpt = NULL;
+
+	      unstop_all_lwps (1, event_child);
+
+	      gdb_assert (event_child->suspended >= 0);
+	    }
+	}
+
+      if (event_child->collecting_fast_tracepoint
+	  == fast_tpoint_collect_result::not_collecting)
+	{
+	  if (debug_threads)
+	    debug_printf ("fast tracepoint finished "
+			  "collecting successfully.\n");
+
+	  /* We may have a deferred signal to report.  */
+	  if (dequeue_one_deferred_signal (event_child, &w))
+	    {
+	      if (debug_threads)
+		debug_printf ("dequeued one signal.\n");
+	    }
+	  else
+	    {
+	      if (debug_threads)
+		debug_printf ("no deferred signals.\n");
+
+	      if (stabilizing_threads)
+		{
+		  ourstatus->kind = TARGET_WAITKIND_STOPPED;
+		  ourstatus->value.sig = GDB_SIGNAL_0;
+
+		  if (debug_threads)
+		    {
+		      debug_printf ("wait_1 ret = %s, stopped "
+				    "while stabilizing threads\n",
+				    target_pid_to_str (ptid_of (current_thread)));
+		      debug_exit ();
+		    }
+
+		  return ptid_of (current_thread);
+		}
+	    }
+	}
+    }
+
+  /* Check whether GDB would be interested in this event.  */
+
+  /* Check if GDB is interested in this syscall.  */
+  if (WIFSTOPPED (w)
+      && WSTOPSIG (w) == SYSCALL_SIGTRAP
+      && !gdb_catch_this_syscall (event_child))
+    {
+      if (debug_threads)
+	{
+	  debug_printf ("Ignored syscall for LWP %ld.\n",
+			lwpid_of (current_thread));
+	}
+
+      resume_one_lwp (event_child, event_child->stepping, 0, NULL);
+
+      if (debug_threads)
+	debug_exit ();
+      return ignore_event (ourstatus);
+    }
+
+  /* If GDB is not interested in this signal, don't stop other
+     threads, and don't report it to GDB.  Just resume the inferior
+     right away.  We do this for threading-related signals as well as
+     any that GDB specifically requested we ignore.  But never ignore
+     SIGSTOP if we sent it ourselves, and do not ignore signals when
+     stepping - they may require special handling to skip the signal
+     handler. Also never ignore signals that could be caused by a
+     breakpoint.  */
+  if (WIFSTOPPED (w)
+      && current_thread->last_resume_kind != resume_step
+      && (
+#if defined (USE_THREAD_DB) && !defined (__ANDROID__)
+	  (current_process ()->priv->thread_db != NULL
+	   && (WSTOPSIG (w) == __SIGRTMIN
+	       || WSTOPSIG (w) == __SIGRTMIN + 1))
+	  ||
+#endif
+	  (cs.pass_signals[gdb_signal_from_host (WSTOPSIG (w))]
+	   && !(WSTOPSIG (w) == SIGSTOP
+		&& current_thread->last_resume_kind == resume_stop)
+	   && !linux_wstatus_maybe_breakpoint (w))))
+    {
+      siginfo_t info, *info_p;
+
+      if (debug_threads)
+	debug_printf ("Ignored signal %d for LWP %ld.\n",
+		      WSTOPSIG (w), lwpid_of (current_thread));
+
+      if (ptrace (PTRACE_GETSIGINFO, lwpid_of (current_thread),
+		  (PTRACE_TYPE_ARG3) 0, &info) == 0)
+	info_p = &info;
+      else
+	info_p = NULL;
+
+      if (step_over_finished)
+	{
+	  /* We cancelled this thread's step-over above.  We still
+	     need to unsuspend all other LWPs, and set them back
+	     running again while the signal handler runs.  */
+	  unsuspend_all_lwps (event_child);
+
+	  /* Enqueue the pending signal info so that proceed_all_lwps
+	     doesn't lose it.  */
+	  enqueue_pending_signal (event_child, WSTOPSIG (w), info_p);
+
+	  proceed_all_lwps ();
+	}
+      else
+	{
+	  resume_one_lwp (event_child, event_child->stepping,
+			  WSTOPSIG (w), info_p);
+	}
+
+      if (debug_threads)
+	debug_exit ();
+
+      return ignore_event (ourstatus);
+    }
+
+  /* Note that all addresses are always "out of the step range" when
+     there's no range to begin with.  */
+  in_step_range = lwp_in_step_range (event_child);
+
+  /* If GDB wanted this thread to single step, and the thread is out
+     of the step range, we always want to report the SIGTRAP, and let
+     GDB handle it.  Watchpoints should always be reported.  So should
+     signals we can't explain.  A SIGTRAP we can't explain could be a
+     GDB breakpoint --- we may or not support Z0 breakpoints.  If we
+     do, we're be able to handle GDB breakpoints on top of internal
+     breakpoints, by handling the internal breakpoint and still
+     reporting the event to GDB.  If we don't, we're out of luck, GDB
+     won't see the breakpoint hit.  If we see a single-step event but
+     the thread should be continuing, don't pass the trap to gdb.
+     That indicates that we had previously finished a single-step but
+     left the single-step pending -- see
+     complete_ongoing_step_over.  */
+  report_to_gdb = (!maybe_internal_trap
+		   || (current_thread->last_resume_kind == resume_step
+		       && !in_step_range)
+		   || event_child->stop_reason == TARGET_STOPPED_BY_WATCHPOINT
+		   || (!in_step_range
+		       && !bp_explains_trap
+		       && !trace_event
+		       && !step_over_finished
+		       && !(current_thread->last_resume_kind == resume_continue
+			    && event_child->stop_reason == TARGET_STOPPED_BY_SINGLE_STEP))
+		   || (gdb_breakpoint_here (event_child->stop_pc)
+		       && gdb_condition_true_at_breakpoint (event_child->stop_pc)
+		       && gdb_no_commands_at_breakpoint (event_child->stop_pc))
+		   || event_child->waitstatus.kind != TARGET_WAITKIND_IGNORE);
+
+  run_breakpoint_commands (event_child->stop_pc);
+
+  /* We found no reason GDB would want us to stop.  We either hit one
+     of our own breakpoints, or finished an internal step GDB
+     shouldn't know about.  */
+  if (!report_to_gdb)
+    {
+      if (debug_threads)
+	{
+	  if (bp_explains_trap)
+	    debug_printf ("Hit a gdbserver breakpoint.\n");
+	  if (step_over_finished)
+	    debug_printf ("Step-over finished.\n");
+	  if (trace_event)
+	    debug_printf ("Tracepoint event.\n");
+	  if (lwp_in_step_range (event_child))
+	    debug_printf ("Range stepping pc 0x%s [0x%s, 0x%s).\n",
+			  paddress (event_child->stop_pc),
+			  paddress (event_child->step_range_start),
+			  paddress (event_child->step_range_end));
+	}
+
+      /* We're not reporting this breakpoint to GDB, so apply the
+	 decr_pc_after_break adjustment to the inferior's regcache
+	 ourselves.  */
+
+      if (low_supports_breakpoints ())
+	{
+	  struct regcache *regcache
+	    = get_thread_regcache (current_thread, 1);
+	  low_set_pc (regcache, event_child->stop_pc);
+	}
+
+      if (step_over_finished)
+	{
+	  /* If we have finished stepping over a breakpoint, we've
+	     stopped and suspended all LWPs momentarily except the
+	     stepping one.  This is where we resume them all again.
+	     We're going to keep waiting, so use proceed, which
+	     handles stepping over the next breakpoint.  */
+	  unsuspend_all_lwps (event_child);
+	}
+      else
+	{
+	  /* Remove the single-step breakpoints if any.  Note that
+	     there isn't single-step breakpoint if we finished stepping
+	     over.  */
+	  if (supports_software_single_step ()
+	      && has_single_step_breakpoints (current_thread))
+	    {
+	      stop_all_lwps (0, event_child);
+	      delete_single_step_breakpoints (current_thread);
+	      unstop_all_lwps (0, event_child);
+	    }
+	}
+
+      if (debug_threads)
+	debug_printf ("proceeding all threads.\n");
+      proceed_all_lwps ();
+
+      if (debug_threads)
+	debug_exit ();
+
+      return ignore_event (ourstatus);
+    }
+
+  if (debug_threads)
+    {
+      if (event_child->waitstatus.kind != TARGET_WAITKIND_IGNORE)
+	{
+	  std::string str
+	    = target_waitstatus_to_string (&event_child->waitstatus);
+
+	  debug_printf ("LWP %ld: extended event with waitstatus %s\n",
+			lwpid_of (get_lwp_thread (event_child)), str.c_str ());
+	}
+      if (current_thread->last_resume_kind == resume_step)
+	{
+	  if (event_child->step_range_start == event_child->step_range_end)
+	    debug_printf ("GDB wanted to single-step, reporting event.\n");
+	  else if (!lwp_in_step_range (event_child))
+	    debug_printf ("Out of step range, reporting event.\n");
+	}
+      if (event_child->stop_reason == TARGET_STOPPED_BY_WATCHPOINT)
+	debug_printf ("Stopped by watchpoint.\n");
+      else if (gdb_breakpoint_here (event_child->stop_pc))
+	debug_printf ("Stopped by GDB breakpoint.\n");
+      if (debug_threads)
+	debug_printf ("Hit a non-gdbserver trap event.\n");
+    }
+
+  /* Alright, we're going to report a stop.  */
+
+  /* Remove single-step breakpoints.  */
+  if (supports_software_single_step ())
+    {
+      /* Remove single-step breakpoints or not.  It it is true, stop all
+	 lwps, so that other threads won't hit the breakpoint in the
+	 staled memory.  */
+      int remove_single_step_breakpoints_p = 0;
+
+      if (non_stop)
+	{
+	  remove_single_step_breakpoints_p
+	    = has_single_step_breakpoints (current_thread);
+	}
+      else
+	{
+	  /* In all-stop, a stop reply cancels all previous resume
+	     requests.  Delete all single-step breakpoints.  */
+
+	  find_thread ([&] (thread_info *thread) {
+	    if (has_single_step_breakpoints (thread))
+	      {
+		remove_single_step_breakpoints_p = 1;
+		return true;
+	      }
+
+	    return false;
+	  });
+	}
+
+      if (remove_single_step_breakpoints_p)
+	{
+	  /* If we remove single-step breakpoints from memory, stop all lwps,
+	     so that other threads won't hit the breakpoint in the staled
+	     memory.  */
+	  stop_all_lwps (0, event_child);
+
+	  if (non_stop)
+	    {
+	      gdb_assert (has_single_step_breakpoints (current_thread));
+	      delete_single_step_breakpoints (current_thread);
+	    }
+	  else
+	    {
+	      for_each_thread ([] (thread_info *thread){
+		if (has_single_step_breakpoints (thread))
+		  delete_single_step_breakpoints (thread);
+	      });
+	    }
+
+	  unstop_all_lwps (0, event_child);
+	}
+    }
+
+  if (!stabilizing_threads)
+    {
+      /* In all-stop, stop all threads.  */
+      if (!non_stop)
+	stop_all_lwps (0, NULL);
+
+      if (step_over_finished)
+	{
+	  if (!non_stop)
+	    {
+	      /* If we were doing a step-over, all other threads but
+		 the stepping one had been paused in start_step_over,
+		 with their suspend counts incremented.  We don't want
+		 to do a full unstop/unpause, because we're in
+		 all-stop mode (so we want threads stopped), but we
+		 still need to unsuspend the other threads, to
+		 decrement their `suspended' count back.  */
+	      unsuspend_all_lwps (event_child);
+	    }
+	  else
+	    {
+	      /* If we just finished a step-over, then all threads had
+		 been momentarily paused.  In all-stop, that's fine,
+		 we want threads stopped by now anyway.  In non-stop,
+		 we need to re-resume threads that GDB wanted to be
+		 running.  */
+	      unstop_all_lwps (1, event_child);
+	    }
+	}
+
+      /* If we're not waiting for a specific LWP, choose an event LWP
+	 from among those that have had events.  Giving equal priority
+	 to all LWPs that have had events helps prevent
+	 starvation.  */
+      if (ptid == minus_one_ptid)
+	{
+	  event_child->status_pending_p = 1;
+	  event_child->status_pending = w;
+
+	  select_event_lwp (&event_child);
+
+	  /* current_thread and event_child must stay in sync.  */
+	  current_thread = get_lwp_thread (event_child);
+
+	  event_child->status_pending_p = 0;
+	  w = event_child->status_pending;
+	}
+
+
+      /* Stabilize threads (move out of jump pads).  */
+      if (!non_stop)
+	target_stabilize_threads ();
+    }
+  else
+    {
+      /* If we just finished a step-over, then all threads had been
+	 momentarily paused.  In all-stop, that's fine, we want
+	 threads stopped by now anyway.  In non-stop, we need to
+	 re-resume threads that GDB wanted to be running.  */
+      if (step_over_finished)
+	unstop_all_lwps (1, event_child);
+    }
+
+  if (event_child->waitstatus.kind != TARGET_WAITKIND_IGNORE)
+    {
+      /* If the reported event is an exit, fork, vfork or exec, let
+	 GDB know.  */
+
+      /* Break the unreported fork relationship chain.  */
+      if (event_child->waitstatus.kind == TARGET_WAITKIND_FORKED
+	  || event_child->waitstatus.kind == TARGET_WAITKIND_VFORKED)
+	{
+	  event_child->fork_relative->fork_relative = NULL;
+	  event_child->fork_relative = NULL;
+	}
+
+      *ourstatus = event_child->waitstatus;
+      /* Clear the event lwp's waitstatus since we handled it already.  */
+      event_child->waitstatus.kind = TARGET_WAITKIND_IGNORE;
+    }
+  else
+    ourstatus->kind = TARGET_WAITKIND_STOPPED;
+
+  /* Now that we've selected our final event LWP, un-adjust its PC if
+     it was a software breakpoint, and the client doesn't know we can
+     adjust the breakpoint ourselves.  */
+  if (event_child->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT
+      && !cs.swbreak_feature)
+    {
+      int decr_pc = low_decr_pc_after_break ();
+
+      if (decr_pc != 0)
+	{
+	  struct regcache *regcache
+	    = get_thread_regcache (current_thread, 1);
+	  low_set_pc (regcache, event_child->stop_pc + decr_pc);
+	}
+    }
+
+  if (WSTOPSIG (w) == SYSCALL_SIGTRAP)
+    {
+      get_syscall_trapinfo (event_child,
+			    &ourstatus->value.syscall_number);
+      ourstatus->kind = event_child->syscall_state;
+    }
+  else if (current_thread->last_resume_kind == resume_stop
+	   && WSTOPSIG (w) == SIGSTOP)
+    {
+      /* A thread that has been requested to stop by GDB with vCont;t,
+	 and it stopped cleanly, so report as SIG0.  The use of
+	 SIGSTOP is an implementation detail.  */
+      ourstatus->value.sig = GDB_SIGNAL_0;
+    }
+  else if (current_thread->last_resume_kind == resume_stop
+	   && WSTOPSIG (w) != SIGSTOP)
+    {
+      /* A thread that has been requested to stop by GDB with vCont;t,
+	 but, it stopped for other reasons.  */
+      ourstatus->value.sig = gdb_signal_from_host (WSTOPSIG (w));
+    }
+  else if (ourstatus->kind == TARGET_WAITKIND_STOPPED)
+    {
+      ourstatus->value.sig = gdb_signal_from_host (WSTOPSIG (w));
+    }
+
+  gdb_assert (step_over_bkpt == null_ptid);
+
+  if (debug_threads)
+    {
+      debug_printf ("wait_1 ret = %s, %d, %d\n",
+		    target_pid_to_str (ptid_of (current_thread)),
+		    ourstatus->kind, ourstatus->value.sig);
+      debug_exit ();
+    }
+
+  if (ourstatus->kind == TARGET_WAITKIND_EXITED)
+    return filter_exit_event (event_child, ourstatus);
+
+  return ptid_of (current_thread);
+}
+
+/* Get rid of any pending event in the pipe.  */
+static void
+async_file_flush (void)
+{
+  int ret;
+  char buf;
+
+  do
+    ret = read (linux_event_pipe[0], &buf, 1);
+  while (ret >= 0 || (ret == -1 && errno == EINTR));
+}
+
+/* Put something in the pipe, so the event loop wakes up.  */
+static void
+async_file_mark (void)
+{
+  int ret;
+
+  async_file_flush ();
+
+  do
+    ret = write (linux_event_pipe[1], "+", 1);
+  while (ret == 0 || (ret == -1 && errno == EINTR));
+
+  /* Ignore EAGAIN.  If the pipe is full, the event loop will already
+     be awakened anyway.  */
+}
+
+ptid_t
+linux_process_target::wait (ptid_t ptid,
+			    target_waitstatus *ourstatus,
+			    int target_options)
+{
+  ptid_t event_ptid;
+
+  /* Flush the async file first.  */
+  if (target_is_async_p ())
+    async_file_flush ();
+
+  do
+    {
+      event_ptid = wait_1 (ptid, ourstatus, target_options);
+    }
+  while ((target_options & TARGET_WNOHANG) == 0
+	 && event_ptid == null_ptid
+	 && ourstatus->kind == TARGET_WAITKIND_IGNORE);
+
+  /* If at least one stop was reported, there may be more.  A single
+     SIGCHLD can signal more than one child stop.  */
+  if (target_is_async_p ()
+      && (target_options & TARGET_WNOHANG) != 0
+      && event_ptid != null_ptid)
+    async_file_mark ();
+
+  return event_ptid;
+}
+
+/* Send a signal to an LWP.  */
+
+static int
+kill_lwp (unsigned long lwpid, int signo)
+{
+  int ret;
+
+  errno = 0;
+  ret = syscall (__NR_tkill, lwpid, signo);
+  if (errno == ENOSYS)
+    {
+      /* If tkill fails, then we are not using nptl threads, a
+	 configuration we no longer support.  */
+      perror_with_name (("tkill"));
+    }
+  return ret;
+}
+
+void
+linux_stop_lwp (struct lwp_info *lwp)
+{
+  send_sigstop (lwp);
+}
+
+static void
+send_sigstop (struct lwp_info *lwp)
+{
+  int pid;
+
+  pid = lwpid_of (get_lwp_thread (lwp));
+
+  /* If we already have a pending stop signal for this process, don't
+     send another.  */
+  if (lwp->stop_expected)
+    {
+      if (debug_threads)
+	debug_printf ("Have pending sigstop for lwp %d\n", pid);
+
+      return;
+    }
+
+  if (debug_threads)
+    debug_printf ("Sending sigstop to lwp %d\n", pid);
+
+  lwp->stop_expected = 1;
+  kill_lwp (pid, SIGSTOP);
+}
+
+static void
+send_sigstop (thread_info *thread, lwp_info *except)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+
+  /* Ignore EXCEPT.  */
+  if (lwp == except)
+    return;
+
+  if (lwp->stopped)
+    return;
+
+  send_sigstop (lwp);
+}
+
+/* Increment the suspend count of an LWP, and stop it, if not stopped
+   yet.  */
+static void
+suspend_and_send_sigstop (thread_info *thread, lwp_info *except)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+
+  /* Ignore EXCEPT.  */
+  if (lwp == except)
+    return;
+
+  lwp_suspended_inc (lwp);
+
+  send_sigstop (thread, except);
+}
+
+static void
+mark_lwp_dead (struct lwp_info *lwp, int wstat)
+{
+  /* Store the exit status for later.  */
+  lwp->status_pending_p = 1;
+  lwp->status_pending = wstat;
+
+  /* Store in waitstatus as well, as there's nothing else to process
+     for this event.  */
+  if (WIFEXITED (wstat))
+    {
+      lwp->waitstatus.kind = TARGET_WAITKIND_EXITED;
+      lwp->waitstatus.value.integer = WEXITSTATUS (wstat);
+    }
+  else if (WIFSIGNALED (wstat))
+    {
+      lwp->waitstatus.kind = TARGET_WAITKIND_SIGNALLED;
+      lwp->waitstatus.value.sig = gdb_signal_from_host (WTERMSIG (wstat));
+    }
+
+  /* Prevent trying to stop it.  */
+  lwp->stopped = 1;
+
+  /* No further stops are expected from a dead lwp.  */
+  lwp->stop_expected = 0;
+}
+
+/* Return true if LWP has exited already, and has a pending exit event
+   to report to GDB.  */
+
+static int
+lwp_is_marked_dead (struct lwp_info *lwp)
+{
+  return (lwp->status_pending_p
+	  && (WIFEXITED (lwp->status_pending)
+	      || WIFSIGNALED (lwp->status_pending)));
+}
+
+void
+linux_process_target::wait_for_sigstop ()
+{
+  struct thread_info *saved_thread;
+  ptid_t saved_tid;
+  int wstat;
+  int ret;
+
+  saved_thread = current_thread;
+  if (saved_thread != NULL)
+    saved_tid = saved_thread->id;
+  else
+    saved_tid = null_ptid; /* avoid bogus unused warning */
+
+  if (debug_threads)
+    debug_printf ("wait_for_sigstop: pulling events\n");
+
+  /* Passing NULL_PTID as filter indicates we want all events to be
+     left pending.  Eventually this returns when there are no
+     unwaited-for children left.  */
+  ret = wait_for_event_filtered (minus_one_ptid, null_ptid, &wstat, __WALL);
+  gdb_assert (ret == -1);
+
+  if (saved_thread == NULL || mythread_alive (saved_tid))
+    current_thread = saved_thread;
+  else
+    {
+      if (debug_threads)
+	debug_printf ("Previously current thread died.\n");
+
+      /* We can't change the current inferior behind GDB's back,
+	 otherwise, a subsequent command may apply to the wrong
+	 process.  */
+      current_thread = NULL;
+    }
+}
+
+bool
+linux_process_target::stuck_in_jump_pad (thread_info *thread)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+
+  if (lwp->suspended != 0)
+    {
+      internal_error (__FILE__, __LINE__,
+		      "LWP %ld is suspended, suspended=%d\n",
+		      lwpid_of (thread), lwp->suspended);
+    }
+  gdb_assert (lwp->stopped);
+
+  /* Allow debugging the jump pad, gdb_collect, etc..  */
+  return (supports_fast_tracepoints ()
+	  && agent_loaded_p ()
+	  && (gdb_breakpoint_here (lwp->stop_pc)
+	      || lwp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT
+	      || thread->last_resume_kind == resume_step)
+	  && (linux_fast_tracepoint_collecting (lwp, NULL)
+	      != fast_tpoint_collect_result::not_collecting));
+}
+
+void
+linux_process_target::move_out_of_jump_pad (thread_info *thread)
+{
+  struct thread_info *saved_thread;
+  struct lwp_info *lwp = get_thread_lwp (thread);
+  int *wstat;
+
+  if (lwp->suspended != 0)
+    {
+      internal_error (__FILE__, __LINE__,
+		      "LWP %ld is suspended, suspended=%d\n",
+		      lwpid_of (thread), lwp->suspended);
+    }
+  gdb_assert (lwp->stopped);
+
+  /* For gdb_breakpoint_here.  */
+  saved_thread = current_thread;
+  current_thread = thread;
+
+  wstat = lwp->status_pending_p ? &lwp->status_pending : NULL;
+
+  /* Allow debugging the jump pad, gdb_collect, etc.  */
+  if (!gdb_breakpoint_here (lwp->stop_pc)
+      && lwp->stop_reason != TARGET_STOPPED_BY_WATCHPOINT
+      && thread->last_resume_kind != resume_step
+      && maybe_move_out_of_jump_pad (lwp, wstat))
+    {
+      if (debug_threads)
+	debug_printf ("LWP %ld needs stabilizing (in jump pad)\n",
+		      lwpid_of (thread));
+
+      if (wstat)
+	{
+	  lwp->status_pending_p = 0;
+	  enqueue_one_deferred_signal (lwp, wstat);
+
+	  if (debug_threads)
+	    debug_printf ("Signal %d for LWP %ld deferred "
+			  "(in jump pad)\n",
+			  WSTOPSIG (*wstat), lwpid_of (thread));
+	}
+
+      resume_one_lwp (lwp, 0, 0, NULL);
+    }
+  else
+    lwp_suspended_inc (lwp);
+
+  current_thread = saved_thread;
+}
+
+static bool
+lwp_running (thread_info *thread)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+
+  if (lwp_is_marked_dead (lwp))
+    return false;
+
+  return !lwp->stopped;
+}
+
+void
+linux_process_target::stop_all_lwps (int suspend, lwp_info *except)
+{
+  /* Should not be called recursively.  */
+  gdb_assert (stopping_threads == NOT_STOPPING_THREADS);
+
+  if (debug_threads)
+    {
+      debug_enter ();
+      debug_printf ("stop_all_lwps (%s, except=%s)\n",
+		    suspend ? "stop-and-suspend" : "stop",
+		    except != NULL
+		    ? target_pid_to_str (ptid_of (get_lwp_thread (except)))
+		    : "none");
+    }
+
+  stopping_threads = (suspend
+		      ? STOPPING_AND_SUSPENDING_THREADS
+		      : STOPPING_THREADS);
+
+  if (suspend)
+    for_each_thread ([&] (thread_info *thread)
+      {
+	suspend_and_send_sigstop (thread, except);
+      });
+  else
+    for_each_thread ([&] (thread_info *thread)
+      {
+	 send_sigstop (thread, except);
+      });
+
+  wait_for_sigstop ();
+  stopping_threads = NOT_STOPPING_THREADS;
+
+  if (debug_threads)
+    {
+      debug_printf ("stop_all_lwps done, setting stopping_threads "
+		    "back to !stopping\n");
+      debug_exit ();
+    }
+}
+
+/* Enqueue one signal in the chain of signals which need to be
+   delivered to this process on next resume.  */
+
+static void
+enqueue_pending_signal (struct lwp_info *lwp, int signal, siginfo_t *info)
+{
+  lwp->pending_signals.emplace_back (signal);
+  if (info == nullptr)
+    memset (&lwp->pending_signals.back ().info, 0, sizeof (siginfo_t));
+  else
+    lwp->pending_signals.back ().info = *info;
+}
+
+void
+linux_process_target::install_software_single_step_breakpoints (lwp_info *lwp)
+{
+  struct thread_info *thread = get_lwp_thread (lwp);
+  struct regcache *regcache = get_thread_regcache (thread, 1);
+
+  scoped_restore save_current_thread = make_scoped_restore (&current_thread);
+
+  current_thread = thread;
+  std::vector<CORE_ADDR> next_pcs = low_get_next_pcs (regcache);
+
+  for (CORE_ADDR pc : next_pcs)
+    set_single_step_breakpoint (pc, current_ptid);
+}
+
+int
+linux_process_target::single_step (lwp_info* lwp)
+{
+  int step = 0;
+
+  if (supports_hardware_single_step ())
+    {
+      step = 1;
+    }
+  else if (supports_software_single_step ())
+    {
+      install_software_single_step_breakpoints (lwp);
+      step = 0;
+    }
+  else
+    {
+      if (debug_threads)
+	debug_printf ("stepping is not implemented on this target");
+    }
+
+  return step;
+}
+
+/* The signal can be delivered to the inferior if we are not trying to
+   finish a fast tracepoint collect.  Since signal can be delivered in
+   the step-over, the program may go to signal handler and trap again
+   after return from the signal handler.  We can live with the spurious
+   double traps.  */
+
+static int
+lwp_signal_can_be_delivered (struct lwp_info *lwp)
+{
+  return (lwp->collecting_fast_tracepoint
+	  == fast_tpoint_collect_result::not_collecting);
+}
+
+void
+linux_process_target::resume_one_lwp_throw (lwp_info *lwp, int step,
+					    int signal, siginfo_t *info)
+{
+  struct thread_info *thread = get_lwp_thread (lwp);
+  struct thread_info *saved_thread;
+  int ptrace_request;
+  struct process_info *proc = get_thread_process (thread);
+
+  /* Note that target description may not be initialised
+     (proc->tdesc == NULL) at this point because the program hasn't
+     stopped at the first instruction yet.  It means GDBserver skips
+     the extra traps from the wrapper program (see option --wrapper).
+     Code in this function that requires register access should be
+     guarded by proc->tdesc == NULL or something else.  */
+
+  if (lwp->stopped == 0)
+    return;
+
+  gdb_assert (lwp->waitstatus.kind == TARGET_WAITKIND_IGNORE);
+
+  fast_tpoint_collect_result fast_tp_collecting
+    = lwp->collecting_fast_tracepoint;
+
+  gdb_assert (!stabilizing_threads
+	      || (fast_tp_collecting
+		  != fast_tpoint_collect_result::not_collecting));
+
+  /* Cancel actions that rely on GDB not changing the PC (e.g., the
+     user used the "jump" command, or "set $pc = foo").  */
+  if (thread->while_stepping != NULL && lwp->stop_pc != get_pc (lwp))
+    {
+      /* Collecting 'while-stepping' actions doesn't make sense
+	 anymore.  */
+      release_while_stepping_state_list (thread);
+    }
+
+  /* If we have pending signals or status, and a new signal, enqueue the
+     signal.  Also enqueue the signal if it can't be delivered to the
+     inferior right now.  */
+  if (signal != 0
+      && (lwp->status_pending_p
+	  || !lwp->pending_signals.empty ()
+	  || !lwp_signal_can_be_delivered (lwp)))
+    {
+      enqueue_pending_signal (lwp, signal, info);
+
+      /* Postpone any pending signal.  It was enqueued above.  */
+      signal = 0;
+    }
+
+  if (lwp->status_pending_p)
+    {
+      if (debug_threads)
+	debug_printf ("Not resuming lwp %ld (%s, stop %s);"
+		      " has pending status\n",
+		      lwpid_of (thread), step ? "step" : "continue",
+		      lwp->stop_expected ? "expected" : "not expected");
+      return;
+    }
+
+  saved_thread = current_thread;
+  current_thread = thread;
+
+  /* This bit needs some thinking about.  If we get a signal that
+     we must report while a single-step reinsert is still pending,
+     we often end up resuming the thread.  It might be better to
+     (ew) allow a stack of pending events; then we could be sure that
+     the reinsert happened right away and not lose any signals.
+
+     Making this stack would also shrink the window in which breakpoints are
+     uninserted (see comment in linux_wait_for_lwp) but not enough for
+     complete correctness, so it won't solve that problem.  It may be
+     worthwhile just to solve this one, however.  */
+  if (lwp->bp_reinsert != 0)
+    {
+      if (debug_threads)
+	debug_printf ("  pending reinsert at 0x%s\n",
+		      paddress (lwp->bp_reinsert));
+
+      if (supports_hardware_single_step ())
+	{
+	  if (fast_tp_collecting == fast_tpoint_collect_result::not_collecting)
+	    {
+	      if (step == 0)
+		warning ("BAD - reinserting but not stepping.");
+	      if (lwp->suspended)
+		warning ("BAD - reinserting and suspended(%d).",
+				 lwp->suspended);
+	    }
+	}
+
+      step = maybe_hw_step (thread);
+    }
+
+  if (fast_tp_collecting == fast_tpoint_collect_result::before_insn)
+    {
+      if (debug_threads)
+	debug_printf ("lwp %ld wants to get out of fast tracepoint jump pad"
+		      " (exit-jump-pad-bkpt)\n",
+		      lwpid_of (thread));
+    }
+  else if (fast_tp_collecting == fast_tpoint_collect_result::at_insn)
+    {
+      if (debug_threads)
+	debug_printf ("lwp %ld wants to get out of fast tracepoint jump pad"
+		      " single-stepping\n",
+		      lwpid_of (thread));
+
+      if (supports_hardware_single_step ())
+	step = 1;
+      else
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "moving out of jump pad single-stepping"
+			  " not implemented on this target");
+	}
+    }
+
+  /* If we have while-stepping actions in this thread set it stepping.
+     If we have a signal to deliver, it may or may not be set to
+     SIG_IGN, we don't know.  Assume so, and allow collecting
+     while-stepping into a signal handler.  A possible smart thing to
+     do would be to set an internal breakpoint at the signal return
+     address, continue, and carry on catching this while-stepping
+     action only when that breakpoint is hit.  A future
+     enhancement.  */
+  if (thread->while_stepping != NULL)
+    {
+      if (debug_threads)
+	debug_printf ("lwp %ld has a while-stepping action -> forcing step.\n",
+		      lwpid_of (thread));
+
+      step = single_step (lwp);
+    }
+
+  if (proc->tdesc != NULL && low_supports_breakpoints ())
+    {
+      struct regcache *regcache = get_thread_regcache (current_thread, 1);
+
+      lwp->stop_pc = low_get_pc (regcache);
+
+      if (debug_threads)
+	{
+	  debug_printf ("  %s from pc 0x%lx\n", step ? "step" : "continue",
+			(long) lwp->stop_pc);
+	}
+    }
+
+  /* If we have pending signals, consume one if it can be delivered to
+     the inferior.  */
+  if (!lwp->pending_signals.empty () && lwp_signal_can_be_delivered (lwp))
+    {
+      const pending_signal &p_sig = lwp->pending_signals.front ();
+
+      signal = p_sig.signal;
+      if (p_sig.info.si_signo != 0)
+	ptrace (PTRACE_SETSIGINFO, lwpid_of (thread), (PTRACE_TYPE_ARG3) 0,
+		&p_sig.info);
+
+      lwp->pending_signals.pop_front ();
+    }
+
+  if (debug_threads)
+    debug_printf ("Resuming lwp %ld (%s, signal %d, stop %s)\n",
+		  lwpid_of (thread), step ? "step" : "continue", signal,
+		  lwp->stop_expected ? "expected" : "not expected");
+
+  low_prepare_to_resume (lwp);
+
+  regcache_invalidate_thread (thread);
+  errno = 0;
+  lwp->stepping = step;
+  if (step)
+    ptrace_request = PTRACE_SINGLESTEP;
+  else if (gdb_catching_syscalls_p (lwp))
+    ptrace_request = PTRACE_SYSCALL;
+  else
+    ptrace_request = PTRACE_CONT;
+  ptrace (ptrace_request,
+	  lwpid_of (thread),
+	  (PTRACE_TYPE_ARG3) 0,
+	  /* Coerce to a uintptr_t first to avoid potential gcc warning
+	     of coercing an 8 byte integer to a 4 byte pointer.  */
+	  (PTRACE_TYPE_ARG4) (uintptr_t) signal);
+
+  current_thread = saved_thread;
+  if (errno)
+    perror_with_name ("resuming thread");
+
+  /* Successfully resumed.  Clear state that no longer makes sense,
+     and mark the LWP as running.  Must not do this before resuming
+     otherwise if that fails other code will be confused.  E.g., we'd
+     later try to stop the LWP and hang forever waiting for a stop
+     status.  Note that we must not throw after this is cleared,
+     otherwise handle_zombie_lwp_error would get confused.  */
+  lwp->stopped = 0;
+  lwp->stop_reason = TARGET_STOPPED_BY_NO_REASON;
+}
+
+void
+linux_process_target::low_prepare_to_resume (lwp_info *lwp)
+{
+  /* Nop.  */
+}
+
+/* Called when we try to resume a stopped LWP and that errors out.  If
+   the LWP is no longer in ptrace-stopped state (meaning it's zombie,
+   or about to become), discard the error, clear any pending status
+   the LWP may have, and return true (we'll collect the exit status
+   soon enough).  Otherwise, return false.  */
+
+static int
+check_ptrace_stopped_lwp_gone (struct lwp_info *lp)
+{
+  struct thread_info *thread = get_lwp_thread (lp);
+
+  /* If we get an error after resuming the LWP successfully, we'd
+     confuse !T state for the LWP being gone.  */
+  gdb_assert (lp->stopped);
+
+  /* We can't just check whether the LWP is in 'Z (Zombie)' state,
+     because even if ptrace failed with ESRCH, the tracee may be "not
+     yet fully dead", but already refusing ptrace requests.  In that
+     case the tracee has 'R (Running)' state for a little bit
+     (observed in Linux 3.18).  See also the note on ESRCH in the
+     ptrace(2) man page.  Instead, check whether the LWP has any state
+     other than ptrace-stopped.  */
+
+  /* Don't assume anything if /proc/PID/status can't be read.  */
+  if (linux_proc_pid_is_trace_stopped_nowarn (lwpid_of (thread)) == 0)
+    {
+      lp->stop_reason = TARGET_STOPPED_BY_NO_REASON;
+      lp->status_pending_p = 0;
+      return 1;
+    }
+  return 0;
+}
+
+void
+linux_process_target::resume_one_lwp (lwp_info *lwp, int step, int signal,
+				      siginfo_t *info)
+{
+  try
+    {
+      resume_one_lwp_throw (lwp, step, signal, info);
+    }
+  catch (const gdb_exception_error &ex)
+    {
+      if (!check_ptrace_stopped_lwp_gone (lwp))
+	throw;
+    }
+}
+
+/* This function is called once per thread via for_each_thread.
+   We look up which resume request applies to THREAD and mark it with a
+   pointer to the appropriate resume request.
+
+   This algorithm is O(threads * resume elements), but resume elements
+   is small (and will remain small at least until GDB supports thread
+   suspension).  */
+
+static void
+linux_set_resume_request (thread_info *thread, thread_resume *resume, size_t n)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+
+  for (int ndx = 0; ndx < n; ndx++)
+    {
+      ptid_t ptid = resume[ndx].thread;
+      if (ptid == minus_one_ptid
+	  || ptid == thread->id
+	  /* Handle both 'pPID' and 'pPID.-1' as meaning 'all threads
+	     of PID'.  */
+	  || (ptid.pid () == pid_of (thread)
+	      && (ptid.is_pid ()
+		  || ptid.lwp () == -1)))
+	{
+	  if (resume[ndx].kind == resume_stop
+	      && thread->last_resume_kind == resume_stop)
+	    {
+	      if (debug_threads)
+		debug_printf ("already %s LWP %ld at GDB's request\n",
+			      (thread->last_status.kind
+			       == TARGET_WAITKIND_STOPPED)
+			      ? "stopped"
+			      : "stopping",
+			      lwpid_of (thread));
+
+	      continue;
+	    }
+
+	  /* Ignore (wildcard) resume requests for already-resumed
+	     threads.  */
+	  if (resume[ndx].kind != resume_stop
+	      && thread->last_resume_kind != resume_stop)
+	    {
+	      if (debug_threads)
+		debug_printf ("already %s LWP %ld at GDB's request\n",
+			      (thread->last_resume_kind
+			       == resume_step)
+			      ? "stepping"
+			      : "continuing",
+			      lwpid_of (thread));
+	      continue;
+	    }
+
+	  /* Don't let wildcard resumes resume fork children that GDB
+	     does not yet know are new fork children.  */
+	  if (lwp->fork_relative != NULL)
+	    {
+	      struct lwp_info *rel = lwp->fork_relative;
+
+	      if (rel->status_pending_p
+		  && (rel->waitstatus.kind == TARGET_WAITKIND_FORKED
+		      || rel->waitstatus.kind == TARGET_WAITKIND_VFORKED))
+		{
+		  if (debug_threads)
+		    debug_printf ("not resuming LWP %ld: has queued stop reply\n",
+				  lwpid_of (thread));
+		  continue;
+		}
+	    }
+
+	  /* If the thread has a pending event that has already been
+	     reported to GDBserver core, but GDB has not pulled the
+	     event out of the vStopped queue yet, likewise, ignore the
+	     (wildcard) resume request.  */
+	  if (in_queued_stop_replies (thread->id))
+	    {
+	      if (debug_threads)
+		debug_printf ("not resuming LWP %ld: has queued stop reply\n",
+			      lwpid_of (thread));
+	      continue;
+	    }
+
+	  lwp->resume = &resume[ndx];
+	  thread->last_resume_kind = lwp->resume->kind;
+
+	  lwp->step_range_start = lwp->resume->step_range_start;
+	  lwp->step_range_end = lwp->resume->step_range_end;
+
+	  /* If we had a deferred signal to report, dequeue one now.
+	     This can happen if LWP gets more than one signal while
+	     trying to get out of a jump pad.  */
+	  if (lwp->stopped
+	      && !lwp->status_pending_p
+	      && dequeue_one_deferred_signal (lwp, &lwp->status_pending))
+	    {
+	      lwp->status_pending_p = 1;
+
+	      if (debug_threads)
+		debug_printf ("Dequeueing deferred signal %d for LWP %ld, "
+			      "leaving status pending.\n",
+			      WSTOPSIG (lwp->status_pending),
+			      lwpid_of (thread));
+	    }
+
+	  return;
+	}
+    }
+
+  /* No resume action for this thread.  */
+  lwp->resume = NULL;
+}
+
+bool
+linux_process_target::resume_status_pending (thread_info *thread)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+
+  /* LWPs which will not be resumed are not interesting, because
+     we might not wait for them next time through linux_wait.  */
+  if (lwp->resume == NULL)
+    return false;
+
+  return thread_still_has_status_pending (thread);
+}
+
+bool
+linux_process_target::thread_needs_step_over (thread_info *thread)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+  struct thread_info *saved_thread;
+  CORE_ADDR pc;
+  struct process_info *proc = get_thread_process (thread);
+
+  /* GDBserver is skipping the extra traps from the wrapper program,
+     don't have to do step over.  */
+  if (proc->tdesc == NULL)
+    return false;
+
+  /* LWPs which will not be resumed are not interesting, because we
+     might not wait for them next time through linux_wait.  */
+
+  if (!lwp->stopped)
+    {
+      if (debug_threads)
+	debug_printf ("Need step over [LWP %ld]? Ignoring, not stopped\n",
+		      lwpid_of (thread));
+      return false;
+    }
+
+  if (thread->last_resume_kind == resume_stop)
+    {
+      if (debug_threads)
+	debug_printf ("Need step over [LWP %ld]? Ignoring, should remain"
+		      " stopped\n",
+		      lwpid_of (thread));
+      return false;
+    }
+
+  gdb_assert (lwp->suspended >= 0);
+
+  if (lwp->suspended)
+    {
+      if (debug_threads)
+	debug_printf ("Need step over [LWP %ld]? Ignoring, suspended\n",
+		      lwpid_of (thread));
+      return false;
+    }
+
+  if (lwp->status_pending_p)
+    {
+      if (debug_threads)
+	debug_printf ("Need step over [LWP %ld]? Ignoring, has pending"
+		      " status.\n",
+		      lwpid_of (thread));
+      return false;
+    }
+
+  /* Note: PC, not STOP_PC.  Either GDB has adjusted the PC already,
+     or we have.  */
+  pc = get_pc (lwp);
+
+  /* If the PC has changed since we stopped, then don't do anything,
+     and let the breakpoint/tracepoint be hit.  This happens if, for
+     instance, GDB handled the decr_pc_after_break subtraction itself,
+     GDB is OOL stepping this thread, or the user has issued a "jump"
+     command, or poked thread's registers herself.  */
+  if (pc != lwp->stop_pc)
+    {
+      if (debug_threads)
+	debug_printf ("Need step over [LWP %ld]? Cancelling, PC was changed. "
+		      "Old stop_pc was 0x%s, PC is now 0x%s\n",
+		      lwpid_of (thread),
+		      paddress (lwp->stop_pc), paddress (pc));
+      return false;
+    }
+
+  /* On software single step target, resume the inferior with signal
+     rather than stepping over.  */
+  if (supports_software_single_step ()
+      && !lwp->pending_signals.empty ()
+      && lwp_signal_can_be_delivered (lwp))
+    {
+      if (debug_threads)
+	debug_printf ("Need step over [LWP %ld]? Ignoring, has pending"
+		      " signals.\n",
+		      lwpid_of (thread));
+
+      return false;
+    }
+
+  saved_thread = current_thread;
+  current_thread = thread;
+
+  /* We can only step over breakpoints we know about.  */
+  if (breakpoint_here (pc) || fast_tracepoint_jump_here (pc))
+    {
+      /* Don't step over a breakpoint that GDB expects to hit
+	 though.  If the condition is being evaluated on the target's side
+	 and it evaluate to false, step over this breakpoint as well.  */
+      if (gdb_breakpoint_here (pc)
+	  && gdb_condition_true_at_breakpoint (pc)
+	  && gdb_no_commands_at_breakpoint (pc))
+	{
+	  if (debug_threads)
+	    debug_printf ("Need step over [LWP %ld]? yes, but found"
+			  " GDB breakpoint at 0x%s; skipping step over\n",
+			  lwpid_of (thread), paddress (pc));
+
+	  current_thread = saved_thread;
+	  return false;
+	}
+      else
+	{
+	  if (debug_threads)
+	    debug_printf ("Need step over [LWP %ld]? yes, "
+			  "found breakpoint at 0x%s\n",
+			  lwpid_of (thread), paddress (pc));
+
+	  /* We've found an lwp that needs stepping over --- return 1 so
+	     that find_thread stops looking.  */
+	  current_thread = saved_thread;
+
+	  return true;
+	}
+    }
+
+  current_thread = saved_thread;
+
+  if (debug_threads)
+    debug_printf ("Need step over [LWP %ld]? No, no breakpoint found"
+		  " at 0x%s\n",
+		  lwpid_of (thread), paddress (pc));
+
+  return false;
+}
+
+void
+linux_process_target::start_step_over (lwp_info *lwp)
+{
+  struct thread_info *thread = get_lwp_thread (lwp);
+  struct thread_info *saved_thread;
+  CORE_ADDR pc;
+  int step;
+
+  if (debug_threads)
+    debug_printf ("Starting step-over on LWP %ld.  Stopping all threads\n",
+		  lwpid_of (thread));
+
+  stop_all_lwps (1, lwp);
+
+  if (lwp->suspended != 0)
+    {
+      internal_error (__FILE__, __LINE__,
+		      "LWP %ld suspended=%d\n", lwpid_of (thread),
+		      lwp->suspended);
+    }
+
+  if (debug_threads)
+    debug_printf ("Done stopping all threads for step-over.\n");
+
+  /* Note, we should always reach here with an already adjusted PC,
+     either by GDB (if we're resuming due to GDB's request), or by our
+     caller, if we just finished handling an internal breakpoint GDB
+     shouldn't care about.  */
+  pc = get_pc (lwp);
+
+  saved_thread = current_thread;
+  current_thread = thread;
+
+  lwp->bp_reinsert = pc;
+  uninsert_breakpoints_at (pc);
+  uninsert_fast_tracepoint_jumps_at (pc);
+
+  step = single_step (lwp);
+
+  current_thread = saved_thread;
+
+  resume_one_lwp (lwp, step, 0, NULL);
+
+  /* Require next event from this LWP.  */
+  step_over_bkpt = thread->id;
+}
+
+bool
+linux_process_target::finish_step_over (lwp_info *lwp)
+{
+  if (lwp->bp_reinsert != 0)
+    {
+      struct thread_info *saved_thread = current_thread;
+
+      if (debug_threads)
+	debug_printf ("Finished step over.\n");
+
+      current_thread = get_lwp_thread (lwp);
+
+      /* Reinsert any breakpoint at LWP->BP_REINSERT.  Note that there
+	 may be no breakpoint to reinsert there by now.  */
+      reinsert_breakpoints_at (lwp->bp_reinsert);
+      reinsert_fast_tracepoint_jumps_at (lwp->bp_reinsert);
+
+      lwp->bp_reinsert = 0;
+
+      /* Delete any single-step breakpoints.  No longer needed.  We
+	 don't have to worry about other threads hitting this trap,
+	 and later not being able to explain it, because we were
+	 stepping over a breakpoint, and we hold all threads but
+	 LWP stopped while doing that.  */
+      if (!supports_hardware_single_step ())
+	{
+	  gdb_assert (has_single_step_breakpoints (current_thread));
+	  delete_single_step_breakpoints (current_thread);
+	}
+
+      step_over_bkpt = null_ptid;
+      current_thread = saved_thread;
+      return true;
+    }
+  else
+    return false;
+}
+
+void
+linux_process_target::complete_ongoing_step_over ()
+{
+  if (step_over_bkpt != null_ptid)
+    {
+      struct lwp_info *lwp;
+      int wstat;
+      int ret;
+
+      if (debug_threads)
+	debug_printf ("detach: step over in progress, finish it first\n");
+
+      /* Passing NULL_PTID as filter indicates we want all events to
+	 be left pending.  Eventually this returns when there are no
+	 unwaited-for children left.  */
+      ret = wait_for_event_filtered (minus_one_ptid, null_ptid, &wstat,
+				     __WALL);
+      gdb_assert (ret == -1);
+
+      lwp = find_lwp_pid (step_over_bkpt);
+      if (lwp != NULL)
+	finish_step_over (lwp);
+      step_over_bkpt = null_ptid;
+      unsuspend_all_lwps (lwp);
+    }
+}
+
+void
+linux_process_target::resume_one_thread (thread_info *thread,
+					 bool leave_all_stopped)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+  int leave_pending;
+
+  if (lwp->resume == NULL)
+    return;
+
+  if (lwp->resume->kind == resume_stop)
+    {
+      if (debug_threads)
+	debug_printf ("resume_stop request for LWP %ld\n", lwpid_of (thread));
+
+      if (!lwp->stopped)
+	{
+	  if (debug_threads)
+	    debug_printf ("stopping LWP %ld\n", lwpid_of (thread));
+
+	  /* Stop the thread, and wait for the event asynchronously,
+	     through the event loop.  */
+	  send_sigstop (lwp);
+	}
+      else
+	{
+	  if (debug_threads)
+	    debug_printf ("already stopped LWP %ld\n",
+			  lwpid_of (thread));
+
+	  /* The LWP may have been stopped in an internal event that
+	     was not meant to be notified back to GDB (e.g., gdbserver
+	     breakpoint), so we should be reporting a stop event in
+	     this case too.  */
+
+	  /* If the thread already has a pending SIGSTOP, this is a
+	     no-op.  Otherwise, something later will presumably resume
+	     the thread and this will cause it to cancel any pending
+	     operation, due to last_resume_kind == resume_stop.  If
+	     the thread already has a pending status to report, we
+	     will still report it the next time we wait - see
+	     status_pending_p_callback.  */
+
+	  /* If we already have a pending signal to report, then
+	     there's no need to queue a SIGSTOP, as this means we're
+	     midway through moving the LWP out of the jumppad, and we
+	     will report the pending signal as soon as that is
+	     finished.  */
+	  if (lwp->pending_signals_to_report.empty ())
+	    send_sigstop (lwp);
+	}
+
+      /* For stop requests, we're done.  */
+      lwp->resume = NULL;
+      thread->last_status.kind = TARGET_WAITKIND_IGNORE;
+      return;
+    }
+
+  /* If this thread which is about to be resumed has a pending status,
+     then don't resume it - we can just report the pending status.
+     Likewise if it is suspended, because e.g., another thread is
+     stepping past a breakpoint.  Make sure to queue any signals that
+     would otherwise be sent.  In all-stop mode, we do this decision
+     based on if *any* thread has a pending status.  If there's a
+     thread that needs the step-over-breakpoint dance, then don't
+     resume any other thread but that particular one.  */
+  leave_pending = (lwp->suspended
+		   || lwp->status_pending_p
+		   || leave_all_stopped);
+
+  /* If we have a new signal, enqueue the signal.  */
+  if (lwp->resume->sig != 0)
+    {
+      siginfo_t info, *info_p;
+
+      /* If this is the same signal we were previously stopped by,
+	 make sure to queue its siginfo.  */
+      if (WIFSTOPPED (lwp->last_status)
+	  && WSTOPSIG (lwp->last_status) == lwp->resume->sig
+	  && ptrace (PTRACE_GETSIGINFO, lwpid_of (thread),
+		     (PTRACE_TYPE_ARG3) 0, &info) == 0)
+	info_p = &info;
+      else
+	info_p = NULL;
+
+      enqueue_pending_signal (lwp, lwp->resume->sig, info_p);
+    }
+
+  if (!leave_pending)
+    {
+      if (debug_threads)
+	debug_printf ("resuming LWP %ld\n", lwpid_of (thread));
+
+      proceed_one_lwp (thread, NULL);
+    }
+  else
+    {
+      if (debug_threads)
+	debug_printf ("leaving LWP %ld stopped\n", lwpid_of (thread));
+    }
+
+  thread->last_status.kind = TARGET_WAITKIND_IGNORE;
+  lwp->resume = NULL;
+}
+
+void
+linux_process_target::resume (thread_resume *resume_info, size_t n)
+{
+  struct thread_info *need_step_over = NULL;
+
+  if (debug_threads)
+    {
+      debug_enter ();
+      debug_printf ("linux_resume:\n");
+    }
+
+  for_each_thread ([&] (thread_info *thread)
+    {
+      linux_set_resume_request (thread, resume_info, n);
+    });
+
+  /* If there is a thread which would otherwise be resumed, which has
+     a pending status, then don't resume any threads - we can just
+     report the pending status.  Make sure to queue any signals that
+     would otherwise be sent.  In non-stop mode, we'll apply this
+     logic to each thread individually.  We consume all pending events
+     before considering to start a step-over (in all-stop).  */
+  bool any_pending = false;
+  if (!non_stop)
+    any_pending = find_thread ([this] (thread_info *thread)
+		    {
+		      return resume_status_pending (thread);
+		    }) != nullptr;
+
+  /* If there is a thread which would otherwise be resumed, which is
+     stopped at a breakpoint that needs stepping over, then don't
+     resume any threads - have it step over the breakpoint with all
+     other threads stopped, then resume all threads again.  Make sure
+     to queue any signals that would otherwise be delivered or
+     queued.  */
+  if (!any_pending && low_supports_breakpoints ())
+    need_step_over = find_thread ([this] (thread_info *thread)
+		       {
+			 return thread_needs_step_over (thread);
+		       });
+
+  bool leave_all_stopped = (need_step_over != NULL || any_pending);
+
+  if (debug_threads)
+    {
+      if (need_step_over != NULL)
+	debug_printf ("Not resuming all, need step over\n");
+      else if (any_pending)
+	debug_printf ("Not resuming, all-stop and found "
+		      "an LWP with pending status\n");
+      else
+	debug_printf ("Resuming, no pending status or step over needed\n");
+    }
+
+  /* Even if we're leaving threads stopped, queue all signals we'd
+     otherwise deliver.  */
+  for_each_thread ([&] (thread_info *thread)
+    {
+      resume_one_thread (thread, leave_all_stopped);
+    });
+
+  if (need_step_over)
+    start_step_over (get_thread_lwp (need_step_over));
+
+  if (debug_threads)
+    {
+      debug_printf ("linux_resume done\n");
+      debug_exit ();
+    }
+
+  /* We may have events that were pending that can/should be sent to
+     the client now.  Trigger a linux_wait call.  */
+  if (target_is_async_p ())
+    async_file_mark ();
+}
+
+void
+linux_process_target::proceed_one_lwp (thread_info *thread, lwp_info *except)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+  int step;
+
+  if (lwp == except)
+    return;
+
+  if (debug_threads)
+    debug_printf ("proceed_one_lwp: lwp %ld\n", lwpid_of (thread));
+
+  if (!lwp->stopped)
+    {
+      if (debug_threads)
+	debug_printf ("   LWP %ld already running\n", lwpid_of (thread));
+      return;
+    }
+
+  if (thread->last_resume_kind == resume_stop
+      && thread->last_status.kind != TARGET_WAITKIND_IGNORE)
+    {
+      if (debug_threads)
+	debug_printf ("   client wants LWP to remain %ld stopped\n",
+		      lwpid_of (thread));
+      return;
+    }
+
+  if (lwp->status_pending_p)
+    {
+      if (debug_threads)
+	debug_printf ("   LWP %ld has pending status, leaving stopped\n",
+		      lwpid_of (thread));
+      return;
+    }
+
+  gdb_assert (lwp->suspended >= 0);
+
+  if (lwp->suspended)
+    {
+      if (debug_threads)
+	debug_printf ("   LWP %ld is suspended\n", lwpid_of (thread));
+      return;
+    }
+
+  if (thread->last_resume_kind == resume_stop
+      && lwp->pending_signals_to_report.empty ()
+      && (lwp->collecting_fast_tracepoint
+	  == fast_tpoint_collect_result::not_collecting))
+    {
+      /* We haven't reported this LWP as stopped yet (otherwise, the
+	 last_status.kind check above would catch it, and we wouldn't
+	 reach here.  This LWP may have been momentarily paused by a
+	 stop_all_lwps call while handling for example, another LWP's
+	 step-over.  In that case, the pending expected SIGSTOP signal
+	 that was queued at vCont;t handling time will have already
+	 been consumed by wait_for_sigstop, and so we need to requeue
+	 another one here.  Note that if the LWP already has a SIGSTOP
+	 pending, this is a no-op.  */
+
+      if (debug_threads)
+	debug_printf ("Client wants LWP %ld to stop. "
+		      "Making sure it has a SIGSTOP pending\n",
+		      lwpid_of (thread));
+
+      send_sigstop (lwp);
+    }
+
+  if (thread->last_resume_kind == resume_step)
+    {
+      if (debug_threads)
+	debug_printf ("   stepping LWP %ld, client wants it stepping\n",
+		      lwpid_of (thread));
+
+      /* If resume_step is requested by GDB, install single-step
+	 breakpoints when the thread is about to be actually resumed if
+	 the single-step breakpoints weren't removed.  */
+      if (supports_software_single_step ()
+	  && !has_single_step_breakpoints (thread))
+	install_software_single_step_breakpoints (lwp);
+
+      step = maybe_hw_step (thread);
+    }
+  else if (lwp->bp_reinsert != 0)
+    {
+      if (debug_threads)
+	debug_printf ("   stepping LWP %ld, reinsert set\n",
+		      lwpid_of (thread));
+
+      step = maybe_hw_step (thread);
+    }
+  else
+    step = 0;
+
+  resume_one_lwp (lwp, step, 0, NULL);
+}
+
+void
+linux_process_target::unsuspend_and_proceed_one_lwp (thread_info *thread,
+						     lwp_info *except)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+
+  if (lwp == except)
+    return;
+
+  lwp_suspended_decr (lwp);
+
+  proceed_one_lwp (thread, except);
+}
+
+void
+linux_process_target::proceed_all_lwps ()
+{
+  struct thread_info *need_step_over;
+
+  /* If there is a thread which would otherwise be resumed, which is
+     stopped at a breakpoint that needs stepping over, then don't
+     resume any threads - have it step over the breakpoint with all
+     other threads stopped, then resume all threads again.  */
+
+  if (low_supports_breakpoints ())
+    {
+      need_step_over = find_thread ([this] (thread_info *thread)
+			 {
+			   return thread_needs_step_over (thread);
+			 });
+
+      if (need_step_over != NULL)
+	{
+	  if (debug_threads)
+	    debug_printf ("proceed_all_lwps: found "
+			  "thread %ld needing a step-over\n",
+			  lwpid_of (need_step_over));
+
+	  start_step_over (get_thread_lwp (need_step_over));
+	  return;
+	}
+    }
+
+  if (debug_threads)
+    debug_printf ("Proceeding, no step-over needed\n");
+
+  for_each_thread ([this] (thread_info *thread)
+    {
+      proceed_one_lwp (thread, NULL);
+    });
+}
+
+void
+linux_process_target::unstop_all_lwps (int unsuspend, lwp_info *except)
+{
+  if (debug_threads)
+    {
+      debug_enter ();
+      if (except)
+	debug_printf ("unstopping all lwps, except=(LWP %ld)\n",
+		      lwpid_of (get_lwp_thread (except)));
+      else
+	debug_printf ("unstopping all lwps\n");
+    }
+
+  if (unsuspend)
+    for_each_thread ([&] (thread_info *thread)
+      {
+	unsuspend_and_proceed_one_lwp (thread, except);
+      });
+  else
+    for_each_thread ([&] (thread_info *thread)
+      {
+	proceed_one_lwp (thread, except);
+      });
+
+  if (debug_threads)
+    {
+      debug_printf ("unstop_all_lwps done\n");
+      debug_exit ();
+    }
+}
+
+
+#ifdef HAVE_LINUX_REGSETS
+
+#define use_linux_regsets 1
+
+/* Returns true if REGSET has been disabled.  */
+
+static int
+regset_disabled (struct regsets_info *info, struct regset_info *regset)
+{
+  return (info->disabled_regsets != NULL
+	  && info->disabled_regsets[regset - info->regsets]);
+}
+
+/* Disable REGSET.  */
+
+static void
+disable_regset (struct regsets_info *info, struct regset_info *regset)
+{
+  int dr_offset;
+
+  dr_offset = regset - info->regsets;
+  if (info->disabled_regsets == NULL)
+    info->disabled_regsets = (char *) xcalloc (1, info->num_regsets);
+  info->disabled_regsets[dr_offset] = 1;
+}
+
+static int
+regsets_fetch_inferior_registers (struct regsets_info *regsets_info,
+				  struct regcache *regcache)
+{
+  struct regset_info *regset;
+  int saw_general_regs = 0;
+  int pid;
+  struct iovec iov;
+
+  pid = lwpid_of (current_thread);
+  for (regset = regsets_info->regsets; regset->size >= 0; regset++)
+    {
+      void *buf, *data;
+      int nt_type, res;
+
+      if (regset->size == 0 || regset_disabled (regsets_info, regset))
+	continue;
+
+      buf = xmalloc (regset->size);
+
+      nt_type = regset->nt_type;
+      if (nt_type)
+	{
+	  iov.iov_base = buf;
+	  iov.iov_len = regset->size;
+	  data = (void *) &iov;
+	}
+      else
+	data = buf;
+
+#ifndef __sparc__
+      res = ptrace (regset->get_request, pid,
+		    (PTRACE_TYPE_ARG3) (long) nt_type, data);
+#else
+      res = ptrace (regset->get_request, pid, data, nt_type);
+#endif
+      if (res < 0)
+	{
+	  if (errno == EIO
+	      || (errno == EINVAL && regset->type == OPTIONAL_REGS))
+	    {
+	      /* If we get EIO on a regset, or an EINVAL and the regset is
+		 optional, do not try it again for this process mode.  */
+	      disable_regset (regsets_info, regset);
+	    }
+	  else if (errno == ENODATA)
+	    {
+	      /* ENODATA may be returned if the regset is currently
+		 not "active".  This can happen in normal operation,
+		 so suppress the warning in this case.  */
+	    }
+	  else if (errno == ESRCH)
+	    {
+	      /* At this point, ESRCH should mean the process is
+		 already gone, in which case we simply ignore attempts
+		 to read its registers.  */
+	    }
+	  else
+	    {
+	      char s[256];
+	      sprintf (s, "ptrace(regsets_fetch_inferior_registers) PID=%d",
+		       pid);
+	      perror (s);
+	    }
+	}
+      else
+	{
+	  if (regset->type == GENERAL_REGS)
+	    saw_general_regs = 1;
+	  regset->store_function (regcache, buf);
+	}
+      free (buf);
+    }
+  if (saw_general_regs)
+    return 0;
+  else
+    return 1;
+}
+
+static int
+regsets_store_inferior_registers (struct regsets_info *regsets_info,
+				  struct regcache *regcache)
+{
+  struct regset_info *regset;
+  int saw_general_regs = 0;
+  int pid;
+  struct iovec iov;
+
+  pid = lwpid_of (current_thread);
+  for (regset = regsets_info->regsets; regset->size >= 0; regset++)
+    {
+      void *buf, *data;
+      int nt_type, res;
+
+      if (regset->size == 0 || regset_disabled (regsets_info, regset)
+	  || regset->fill_function == NULL)
+	continue;
+
+      buf = xmalloc (regset->size);
+
+      /* First fill the buffer with the current register set contents,
+	 in case there are any items in the kernel's regset that are
+	 not in gdbserver's regcache.  */
+
+      nt_type = regset->nt_type;
+      if (nt_type)
+	{
+	  iov.iov_base = buf;
+	  iov.iov_len = regset->size;
+	  data = (void *) &iov;
+	}
+      else
+	data = buf;
+
+#ifndef __sparc__
+      res = ptrace (regset->get_request, pid,
+		    (PTRACE_TYPE_ARG3) (long) nt_type, data);
+#else
+      res = ptrace (regset->get_request, pid, data, nt_type);
+#endif
+
+      if (res == 0)
+	{
+	  /* Then overlay our cached registers on that.  */
+	  regset->fill_function (regcache, buf);
+
+	  /* Only now do we write the register set.  */
+#ifndef __sparc__
+	  res = ptrace (regset->set_request, pid,
+			(PTRACE_TYPE_ARG3) (long) nt_type, data);
+#else
+	  res = ptrace (regset->set_request, pid, data, nt_type);
+#endif
+	}
+
+      if (res < 0)
+	{
+	  if (errno == EIO
+	      || (errno == EINVAL && regset->type == OPTIONAL_REGS))
+	    {
+	      /* If we get EIO on a regset, or an EINVAL and the regset is
+		 optional, do not try it again for this process mode.  */
+	      disable_regset (regsets_info, regset);
+	    }
+	  else if (errno == ESRCH)
+	    {
+	      /* At this point, ESRCH should mean the process is
+		 already gone, in which case we simply ignore attempts
+		 to change its registers.  See also the related
+		 comment in resume_one_lwp.  */
+	      free (buf);
+	      return 0;
+	    }
+	  else
+	    {
+	      perror ("Warning: ptrace(regsets_store_inferior_registers)");
+	    }
+	}
+      else if (regset->type == GENERAL_REGS)
+	saw_general_regs = 1;
+      free (buf);
+    }
+  if (saw_general_regs)
+    return 0;
+  else
+    return 1;
+}
+
+#else /* !HAVE_LINUX_REGSETS */
+
+#define use_linux_regsets 0
+#define regsets_fetch_inferior_registers(regsets_info, regcache) 1
+#define regsets_store_inferior_registers(regsets_info, regcache) 1
+
+#endif
+
+/* Return 1 if register REGNO is supported by one of the regset ptrace
+   calls or 0 if it has to be transferred individually.  */
+
+static int
+linux_register_in_regsets (const struct regs_info *regs_info, int regno)
+{
+  unsigned char mask = 1 << (regno % 8);
+  size_t index = regno / 8;
+
+  return (use_linux_regsets
+	  && (regs_info->regset_bitmap == NULL
+	      || (regs_info->regset_bitmap[index] & mask) != 0));
+}
+
+#ifdef HAVE_LINUX_USRREGS
+
+static int
+register_addr (const struct usrregs_info *usrregs, int regnum)
+{
+  int addr;
+
+  if (regnum < 0 || regnum >= usrregs->num_regs)
+    error ("Invalid register number %d.", regnum);
+
+  addr = usrregs->regmap[regnum];
+
+  return addr;
+}
+
+
+void
+linux_process_target::fetch_register (const usrregs_info *usrregs,
+				      regcache *regcache, int regno)
+{
+  CORE_ADDR regaddr;
+  int i, size;
+  char *buf;
+  int pid;
+
+  if (regno >= usrregs->num_regs)
+    return;
+  if (low_cannot_fetch_register (regno))
+    return;
+
+  regaddr = register_addr (usrregs, regno);
+  if (regaddr == -1)
+    return;
+
+  size = ((register_size (regcache->tdesc, regno)
+	   + sizeof (PTRACE_XFER_TYPE) - 1)
+	  & -sizeof (PTRACE_XFER_TYPE));
+  buf = (char *) alloca (size);
+
+  pid = lwpid_of (current_thread);
+  for (i = 0; i < size; i += sizeof (PTRACE_XFER_TYPE))
+    {
+      errno = 0;
+      *(PTRACE_XFER_TYPE *) (buf + i) =
+	ptrace (PTRACE_PEEKUSER, pid,
+		/* Coerce to a uintptr_t first to avoid potential gcc warning
+		   of coercing an 8 byte integer to a 4 byte pointer.  */
+		(PTRACE_TYPE_ARG3) (uintptr_t) regaddr, (PTRACE_TYPE_ARG4) 0);
+      regaddr += sizeof (PTRACE_XFER_TYPE);
+      if (errno != 0)
+	{
+	  /* Mark register REGNO unavailable.  */
+	  supply_register (regcache, regno, NULL);
+	  return;
+	}
+    }
+
+  low_supply_ptrace_register (regcache, regno, buf);
+}
+
+void
+linux_process_target::store_register (const usrregs_info *usrregs,
+				      regcache *regcache, int regno)
+{
+  CORE_ADDR regaddr;
+  int i, size;
+  char *buf;
+  int pid;
+
+  if (regno >= usrregs->num_regs)
+    return;
+  if (low_cannot_store_register (regno))
+    return;
+
+  regaddr = register_addr (usrregs, regno);
+  if (regaddr == -1)
+    return;
+
+  size = ((register_size (regcache->tdesc, regno)
+	   + sizeof (PTRACE_XFER_TYPE) - 1)
+	  & -sizeof (PTRACE_XFER_TYPE));
+  buf = (char *) alloca (size);
+  memset (buf, 0, size);
+
+  low_collect_ptrace_register (regcache, regno, buf);
+
+  pid = lwpid_of (current_thread);
+  for (i = 0; i < size; i += sizeof (PTRACE_XFER_TYPE))
+    {
+      errno = 0;
+      ptrace (PTRACE_POKEUSER, pid,
+	    /* Coerce to a uintptr_t first to avoid potential gcc warning
+	       about coercing an 8 byte integer to a 4 byte pointer.  */
+	      (PTRACE_TYPE_ARG3) (uintptr_t) regaddr,
+	      (PTRACE_TYPE_ARG4) *(PTRACE_XFER_TYPE *) (buf + i));
+      if (errno != 0)
+	{
+	  /* At this point, ESRCH should mean the process is
+	     already gone, in which case we simply ignore attempts
+	     to change its registers.  See also the related
+	     comment in resume_one_lwp.  */
+	  if (errno == ESRCH)
+	    return;
+
+
+	  if (!low_cannot_store_register (regno))
+	    error ("writing register %d: %s", regno, safe_strerror (errno));
+	}
+      regaddr += sizeof (PTRACE_XFER_TYPE);
+    }
+}
+#endif /* HAVE_LINUX_USRREGS */
+
+void
+linux_process_target::low_collect_ptrace_register (regcache *regcache,
+						   int regno, char *buf)
+{
+  collect_register (regcache, regno, buf);
+}
+
+void
+linux_process_target::low_supply_ptrace_register (regcache *regcache,
+						  int regno, const char *buf)
+{
+  supply_register (regcache, regno, buf);
+}
+
+void
+linux_process_target::usr_fetch_inferior_registers (const regs_info *regs_info,
+						    regcache *regcache,
+						    int regno, int all)
+{
+#ifdef HAVE_LINUX_USRREGS
+  struct usrregs_info *usr = regs_info->usrregs;
+
+  if (regno == -1)
+    {
+      for (regno = 0; regno < usr->num_regs; regno++)
+	if (all || !linux_register_in_regsets (regs_info, regno))
+	  fetch_register (usr, regcache, regno);
+    }
+  else
+    fetch_register (usr, regcache, regno);
+#endif
+}
+
+void
+linux_process_target::usr_store_inferior_registers (const regs_info *regs_info,
+						    regcache *regcache,
+						    int regno, int all)
+{
+#ifdef HAVE_LINUX_USRREGS
+  struct usrregs_info *usr = regs_info->usrregs;
+
+  if (regno == -1)
+    {
+      for (regno = 0; regno < usr->num_regs; regno++)
+	if (all || !linux_register_in_regsets (regs_info, regno))
+	  store_register (usr, regcache, regno);
+    }
+  else
+    store_register (usr, regcache, regno);
+#endif
+}
+
+void
+linux_process_target::fetch_registers (regcache *regcache, int regno)
+{
+  int use_regsets;
+  int all = 0;
+  const regs_info *regs_info = get_regs_info ();
+
+  if (regno == -1)
+    {
+      if (regs_info->usrregs != NULL)
+	for (regno = 0; regno < regs_info->usrregs->num_regs; regno++)
+	  low_fetch_register (regcache, regno);
+
+      all = regsets_fetch_inferior_registers (regs_info->regsets_info, regcache);
+      if (regs_info->usrregs != NULL)
+	usr_fetch_inferior_registers (regs_info, regcache, -1, all);
+    }
+  else
+    {
+      if (low_fetch_register (regcache, regno))
+	return;
+
+      use_regsets = linux_register_in_regsets (regs_info, regno);
+      if (use_regsets)
+	all = regsets_fetch_inferior_registers (regs_info->regsets_info,
+						regcache);
+      if ((!use_regsets || all) && regs_info->usrregs != NULL)
+	usr_fetch_inferior_registers (regs_info, regcache, regno, 1);
+    }
+}
+
+void
+linux_process_target::store_registers (regcache *regcache, int regno)
+{
+  int use_regsets;
+  int all = 0;
+  const regs_info *regs_info = get_regs_info ();
+
+  if (regno == -1)
+    {
+      all = regsets_store_inferior_registers (regs_info->regsets_info,
+					      regcache);
+      if (regs_info->usrregs != NULL)
+	usr_store_inferior_registers (regs_info, regcache, regno, all);
+    }
+  else
+    {
+      use_regsets = linux_register_in_regsets (regs_info, regno);
+      if (use_regsets)
+	all = regsets_store_inferior_registers (regs_info->regsets_info,
+						regcache);
+      if ((!use_regsets || all) && regs_info->usrregs != NULL)
+	usr_store_inferior_registers (regs_info, regcache, regno, 1);
+    }
+}
+
+bool
+linux_process_target::low_fetch_register (regcache *regcache, int regno)
+{
+  return false;
+}
+
+/* A wrapper for the read_memory target op.  */
+
+static int
+linux_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
+{
+  return the_target->read_memory (memaddr, myaddr, len);
+}
+
+/* Copy LEN bytes from inferior's memory starting at MEMADDR
+   to debugger memory starting at MYADDR.  */
+
+int
+linux_process_target::read_memory (CORE_ADDR memaddr,
+				   unsigned char *myaddr, int len)
+{
+  int pid = lwpid_of (current_thread);
+  PTRACE_XFER_TYPE *buffer;
+  CORE_ADDR addr;
+  int count;
+  char filename[64];
+  int i;
+  int ret;
+  int fd;
+
+  /* Try using /proc.  Don't bother for one word.  */
+  if (len >= 3 * sizeof (long))
+    {
+      int bytes;
+
+      /* We could keep this file open and cache it - possibly one per
+	 thread.  That requires some juggling, but is even faster.  */
+      sprintf (filename, "/proc/%d/mem", pid);
+      fd = open (filename, O_RDONLY | O_LARGEFILE);
+      if (fd == -1)
+	goto no_proc;
+
+      /* If pread64 is available, use it.  It's faster if the kernel
+	 supports it (only one syscall), and it's 64-bit safe even on
+	 32-bit platforms (for instance, SPARC debugging a SPARC64
+	 application).  */
+#ifdef HAVE_PREAD64
+      bytes = pread64 (fd, myaddr, len, memaddr);
+#else
+      bytes = -1;
+      if (lseek (fd, memaddr, SEEK_SET) != -1)
+	bytes = read (fd, myaddr, len);
+#endif
+
+      close (fd);
+      if (bytes == len)
+	return 0;
+
+      /* Some data was read, we'll try to get the rest with ptrace.  */
+      if (bytes > 0)
+	{
+	  memaddr += bytes;
+	  myaddr += bytes;
+	  len -= bytes;
+	}
+    }
+
+ no_proc:
+  /* Round starting address down to longword boundary.  */
+  addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE);
+  /* Round ending address up; get number of longwords that makes.  */
+  count = ((((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1)
+	   / sizeof (PTRACE_XFER_TYPE));
+  /* Allocate buffer of that many longwords.  */
+  buffer = XALLOCAVEC (PTRACE_XFER_TYPE, count);
+
+  /* Read all the longwords */
+  errno = 0;
+  for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE))
+    {
+      /* Coerce the 3rd arg to a uintptr_t first to avoid potential gcc warning
+	 about coercing an 8 byte integer to a 4 byte pointer.  */
+      buffer[i] = ptrace (PTRACE_PEEKTEXT, pid,
+			  (PTRACE_TYPE_ARG3) (uintptr_t) addr,
+			  (PTRACE_TYPE_ARG4) 0);
+      if (errno)
+	break;
+    }
+  ret = errno;
+
+  /* Copy appropriate bytes out of the buffer.  */
+  if (i > 0)
+    {
+      i *= sizeof (PTRACE_XFER_TYPE);
+      i -= memaddr & (sizeof (PTRACE_XFER_TYPE) - 1);
+      memcpy (myaddr,
+	      (char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)),
+	      i < len ? i : len);
+    }
+
+  return ret;
+}
+
+/* Copy LEN bytes of data from debugger memory at MYADDR to inferior's
+   memory at MEMADDR.  On failure (cannot write to the inferior)
+   returns the value of errno.  Always succeeds if LEN is zero.  */
+
+int
+linux_process_target::write_memory (CORE_ADDR memaddr,
+				    const unsigned char *myaddr, int len)
+{
+  int i;
+  /* Round starting address down to longword boundary.  */
+  CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_XFER_TYPE);
+  /* Round ending address up; get number of longwords that makes.  */
+  int count
+    = (((memaddr + len) - addr) + sizeof (PTRACE_XFER_TYPE) - 1)
+    / sizeof (PTRACE_XFER_TYPE);
+
+  /* Allocate buffer of that many longwords.  */
+  PTRACE_XFER_TYPE *buffer = XALLOCAVEC (PTRACE_XFER_TYPE, count);
+
+  int pid = lwpid_of (current_thread);
+
+  if (len == 0)
+    {
+      /* Zero length write always succeeds.  */
+      return 0;
+    }
+
+  if (debug_threads)
+    {
+      /* Dump up to four bytes.  */
+      char str[4 * 2 + 1];
+      char *p = str;
+      int dump = len < 4 ? len : 4;
+
+      for (i = 0; i < dump; i++)
+	{
+	  sprintf (p, "%02x", myaddr[i]);
+	  p += 2;
+	}
+      *p = '\0';
+
+      debug_printf ("Writing %s to 0x%08lx in process %d\n",
+		    str, (long) memaddr, pid);
+    }
+
+  /* Fill start and end extra bytes of buffer with existing memory data.  */
+
+  errno = 0;
+  /* Coerce the 3rd arg to a uintptr_t first to avoid potential gcc warning
+     about coercing an 8 byte integer to a 4 byte pointer.  */
+  buffer[0] = ptrace (PTRACE_PEEKTEXT, pid,
+		      (PTRACE_TYPE_ARG3) (uintptr_t) addr,
+		      (PTRACE_TYPE_ARG4) 0);
+  if (errno)
+    return errno;
+
+  if (count > 1)
+    {
+      errno = 0;
+      buffer[count - 1]
+	= ptrace (PTRACE_PEEKTEXT, pid,
+		  /* Coerce to a uintptr_t first to avoid potential gcc warning
+		     about coercing an 8 byte integer to a 4 byte pointer.  */
+		  (PTRACE_TYPE_ARG3) (uintptr_t) (addr + (count - 1)
+						  * sizeof (PTRACE_XFER_TYPE)),
+		  (PTRACE_TYPE_ARG4) 0);
+      if (errno)
+	return errno;
+    }
+
+  /* Copy data to be written over corresponding part of buffer.  */
+
+  memcpy ((char *) buffer + (memaddr & (sizeof (PTRACE_XFER_TYPE) - 1)),
+	  myaddr, len);
+
+  /* Write the entire buffer.  */
+
+  for (i = 0; i < count; i++, addr += sizeof (PTRACE_XFER_TYPE))
+    {
+      errno = 0;
+      ptrace (PTRACE_POKETEXT, pid,
+	      /* Coerce to a uintptr_t first to avoid potential gcc warning
+		 about coercing an 8 byte integer to a 4 byte pointer.  */
+	      (PTRACE_TYPE_ARG3) (uintptr_t) addr,
+	      (PTRACE_TYPE_ARG4) buffer[i]);
+      if (errno)
+	return errno;
+    }
+
+  return 0;
+}
+
+void
+linux_process_target::look_up_symbols ()
+{
+#ifdef USE_THREAD_DB
+  struct process_info *proc = current_process ();
+
+  if (proc->priv->thread_db != NULL)
+    return;
+
+  thread_db_init ();
+#endif
+}
+
+void
+linux_process_target::request_interrupt ()
+{
+  /* Send a SIGINT to the process group.  This acts just like the user
+     typed a ^C on the controlling terminal.  */
+  ::kill (-signal_pid, SIGINT);
+}
+
+bool
+linux_process_target::supports_read_auxv ()
+{
+  return true;
+}
+
+/* Copy LEN bytes from inferior's auxiliary vector starting at OFFSET
+   to debugger memory starting at MYADDR.  */
+
+int
+linux_process_target::read_auxv (CORE_ADDR offset, unsigned char *myaddr,
+				 unsigned int len)
+{
+  char filename[PATH_MAX];
+  int fd, n;
+  int pid = lwpid_of (current_thread);
+
+  xsnprintf (filename, sizeof filename, "/proc/%d/auxv", pid);
+
+  fd = open (filename, O_RDONLY);
+  if (fd < 0)
+    return -1;
+
+  if (offset != (CORE_ADDR) 0
+      && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
+    n = -1;
+  else
+    n = read (fd, myaddr, len);
+
+  close (fd);
+
+  return n;
+}
+
+int
+linux_process_target::insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
+				    int size, raw_breakpoint *bp)
+{
+  if (type == raw_bkpt_type_sw)
+    return insert_memory_breakpoint (bp);
+  else
+    return low_insert_point (type, addr, size, bp);
+}
+
+int
+linux_process_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+					int size, raw_breakpoint *bp)
+{
+  /* Unsupported (see target.h).  */
+  return 1;
+}
+
+int
+linux_process_target::remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
+				    int size, raw_breakpoint *bp)
+{
+  if (type == raw_bkpt_type_sw)
+    return remove_memory_breakpoint (bp);
+  else
+    return low_remove_point (type, addr, size, bp);
+}
+
+int
+linux_process_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+					int size, raw_breakpoint *bp)
+{
+  /* Unsupported (see target.h).  */
+  return 1;
+}
+
+/* Implement the stopped_by_sw_breakpoint target_ops
+   method.  */
+
+bool
+linux_process_target::stopped_by_sw_breakpoint ()
+{
+  struct lwp_info *lwp = get_thread_lwp (current_thread);
+
+  return (lwp->stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT);
+}
+
+/* Implement the supports_stopped_by_sw_breakpoint target_ops
+   method.  */
+
+bool
+linux_process_target::supports_stopped_by_sw_breakpoint ()
+{
+  return USE_SIGTRAP_SIGINFO;
+}
+
+/* Implement the stopped_by_hw_breakpoint target_ops
+   method.  */
+
+bool
+linux_process_target::stopped_by_hw_breakpoint ()
+{
+  struct lwp_info *lwp = get_thread_lwp (current_thread);
+
+  return (lwp->stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT);
+}
+
+/* Implement the supports_stopped_by_hw_breakpoint target_ops
+   method.  */
+
+bool
+linux_process_target::supports_stopped_by_hw_breakpoint ()
+{
+  return USE_SIGTRAP_SIGINFO;
+}
+
+/* Implement the supports_hardware_single_step target_ops method.  */
+
+bool
+linux_process_target::supports_hardware_single_step ()
+{
+  return true;
+}
+
+bool
+linux_process_target::stopped_by_watchpoint ()
+{
+  struct lwp_info *lwp = get_thread_lwp (current_thread);
+
+  return lwp->stop_reason == TARGET_STOPPED_BY_WATCHPOINT;
+}
+
+CORE_ADDR
+linux_process_target::stopped_data_address ()
+{
+  struct lwp_info *lwp = get_thread_lwp (current_thread);
+
+  return lwp->stopped_data_address;
+}
+
+/* This is only used for targets that define PT_TEXT_ADDR,
+   PT_DATA_ADDR and PT_TEXT_END_ADDR.  If those are not defined, supposedly
+   the target has different ways of acquiring this information, like
+   loadmaps.  */
+
+bool
+linux_process_target::supports_read_offsets ()
+{
+#ifdef SUPPORTS_READ_OFFSETS
+  return true;
+#else
+  return false;
+#endif
+}
+
+/* Under uClinux, programs are loaded at non-zero offsets, which we need
+   to tell gdb about.  */
+
+int
+linux_process_target::read_offsets (CORE_ADDR *text_p, CORE_ADDR *data_p)
+{
+#ifdef SUPPORTS_READ_OFFSETS
+  unsigned long text, text_end, data;
+  int pid = lwpid_of (current_thread);
+
+  errno = 0;
+
+  text = ptrace (PTRACE_PEEKUSER, pid, (PTRACE_TYPE_ARG3) PT_TEXT_ADDR,
+		 (PTRACE_TYPE_ARG4) 0);
+  text_end = ptrace (PTRACE_PEEKUSER, pid, (PTRACE_TYPE_ARG3) PT_TEXT_END_ADDR,
+		     (PTRACE_TYPE_ARG4) 0);
+  data = ptrace (PTRACE_PEEKUSER, pid, (PTRACE_TYPE_ARG3) PT_DATA_ADDR,
+		 (PTRACE_TYPE_ARG4) 0);
+
+  if (errno == 0)
+    {
+      /* Both text and data offsets produced at compile-time (and so
+	 used by gdb) are relative to the beginning of the program,
+	 with the data segment immediately following the text segment.
+	 However, the actual runtime layout in memory may put the data
+	 somewhere else, so when we send gdb a data base-address, we
+	 use the real data base address and subtract the compile-time
+	 data base-address from it (which is just the length of the
+	 text segment).  BSS immediately follows data in both
+	 cases.  */
+      *text_p = text;
+      *data_p = data - (text_end - text);
+
+      return 1;
+    }
+  return 0;
+#else
+  gdb_assert_not_reached ("target op read_offsets not supported");
+#endif
+}
+
+bool
+linux_process_target::supports_get_tls_address ()
+{
+#ifdef USE_THREAD_DB
+  return true;
+#else
+  return false;
+#endif
+}
+
+int
+linux_process_target::get_tls_address (thread_info *thread,
+				       CORE_ADDR offset,
+				       CORE_ADDR load_module,
+				       CORE_ADDR *address)
+{
+#ifdef USE_THREAD_DB
+  return thread_db_get_tls_address (thread, offset, load_module, address);
+#else
+  return -1;
+#endif
+}
+
+bool
+linux_process_target::supports_qxfer_osdata ()
+{
+  return true;
+}
+
+int
+linux_process_target::qxfer_osdata (const char *annex,
+				    unsigned char *readbuf,
+				    unsigned const char *writebuf,
+				    CORE_ADDR offset, int len)
+{
+  return linux_common_xfer_osdata (annex, readbuf, offset, len);
+}
+
+void
+linux_process_target::siginfo_fixup (siginfo_t *siginfo,
+				     gdb_byte *inf_siginfo, int direction)
+{
+  bool done = low_siginfo_fixup (siginfo, inf_siginfo, direction);
+
+  /* If there was no callback, or the callback didn't do anything,
+     then just do a straight memcpy.  */
+  if (!done)
+    {
+      if (direction == 1)
+	memcpy (siginfo, inf_siginfo, sizeof (siginfo_t));
+      else
+	memcpy (inf_siginfo, siginfo, sizeof (siginfo_t));
+    }
+}
+
+bool
+linux_process_target::low_siginfo_fixup (siginfo_t *native, gdb_byte *inf,
+					 int direction)
+{
+  return false;
+}
+
+bool
+linux_process_target::supports_qxfer_siginfo ()
+{
+  return true;
+}
+
+int
+linux_process_target::qxfer_siginfo (const char *annex,
+				     unsigned char *readbuf,
+				     unsigned const char *writebuf,
+				     CORE_ADDR offset, int len)
+{
+  int pid;
+  siginfo_t siginfo;
+  gdb_byte inf_siginfo[sizeof (siginfo_t)];
+
+  if (current_thread == NULL)
+    return -1;
+
+  pid = lwpid_of (current_thread);
+
+  if (debug_threads)
+    debug_printf ("%s siginfo for lwp %d.\n",
+		  readbuf != NULL ? "Reading" : "Writing",
+		  pid);
+
+  if (offset >= sizeof (siginfo))
+    return -1;
+
+  if (ptrace (PTRACE_GETSIGINFO, pid, (PTRACE_TYPE_ARG3) 0, &siginfo) != 0)
+    return -1;
+
+  /* When GDBSERVER is built as a 64-bit application, ptrace writes into
+     SIGINFO an object with 64-bit layout.  Since debugging a 32-bit
+     inferior with a 64-bit GDBSERVER should look the same as debugging it
+     with a 32-bit GDBSERVER, we need to convert it.  */
+  siginfo_fixup (&siginfo, inf_siginfo, 0);
+
+  if (offset + len > sizeof (siginfo))
+    len = sizeof (siginfo) - offset;
+
+  if (readbuf != NULL)
+    memcpy (readbuf, inf_siginfo + offset, len);
+  else
+    {
+      memcpy (inf_siginfo + offset, writebuf, len);
+
+      /* Convert back to ptrace layout before flushing it out.  */
+      siginfo_fixup (&siginfo, inf_siginfo, 1);
+
+      if (ptrace (PTRACE_SETSIGINFO, pid, (PTRACE_TYPE_ARG3) 0, &siginfo) != 0)
+	return -1;
+    }
+
+  return len;
+}
+
+/* SIGCHLD handler that serves two purposes: In non-stop/async mode,
+   so we notice when children change state; as the handler for the
+   sigsuspend in my_waitpid.  */
+
+static void
+sigchld_handler (int signo)
+{
+  int old_errno = errno;
+
+  if (debug_threads)
+    {
+      do
+	{
+	  /* Use the async signal safe debug function.  */
+	  if (debug_write ("sigchld_handler\n",
+			   sizeof ("sigchld_handler\n") - 1) < 0)
+	    break; /* just ignore */
+	} while (0);
+    }
+
+  if (target_is_async_p ())
+    async_file_mark (); /* trigger a linux_wait */
+
+  errno = old_errno;
+}
+
+bool
+linux_process_target::supports_non_stop ()
+{
+  return true;
+}
+
+bool
+linux_process_target::async (bool enable)
+{
+  bool previous = target_is_async_p ();
+
+  if (debug_threads)
+    debug_printf ("linux_async (%d), previous=%d\n",
+		  enable, previous);
+
+  if (previous != enable)
+    {
+      sigset_t mask;
+      sigemptyset (&mask);
+      sigaddset (&mask, SIGCHLD);
+
+      gdb_sigmask (SIG_BLOCK, &mask, NULL);
+
+      if (enable)
+	{
+	  if (pipe (linux_event_pipe) == -1)
+	    {
+	      linux_event_pipe[0] = -1;
+	      linux_event_pipe[1] = -1;
+	      gdb_sigmask (SIG_UNBLOCK, &mask, NULL);
+
+	      warning ("creating event pipe failed.");
+	      return previous;
+	    }
+
+	  fcntl (linux_event_pipe[0], F_SETFL, O_NONBLOCK);
+	  fcntl (linux_event_pipe[1], F_SETFL, O_NONBLOCK);
+
+	  /* Register the event loop handler.  */
+	  add_file_handler (linux_event_pipe[0],
+			    handle_target_event, NULL);
+
+	  /* Always trigger a linux_wait.  */
+	  async_file_mark ();
+	}
+      else
+	{
+	  delete_file_handler (linux_event_pipe[0]);
+
+	  close (linux_event_pipe[0]);
+	  close (linux_event_pipe[1]);
+	  linux_event_pipe[0] = -1;
+	  linux_event_pipe[1] = -1;
+	}
+
+      gdb_sigmask (SIG_UNBLOCK, &mask, NULL);
+    }
+
+  return previous;
+}
+
+int
+linux_process_target::start_non_stop (bool nonstop)
+{
+  /* Register or unregister from event-loop accordingly.  */
+  target_async (nonstop);
+
+  if (target_is_async_p () != (nonstop != false))
+    return -1;
+
+  return 0;
+}
+
+bool
+linux_process_target::supports_multi_process ()
+{
+  return true;
+}
+
+/* Check if fork events are supported.  */
+
+bool
+linux_process_target::supports_fork_events ()
+{
+  return linux_supports_tracefork ();
+}
+
+/* Check if vfork events are supported.  */
+
+bool
+linux_process_target::supports_vfork_events ()
+{
+  return linux_supports_tracefork ();
+}
+
+/* Check if exec events are supported.  */
+
+bool
+linux_process_target::supports_exec_events ()
+{
+  return linux_supports_traceexec ();
+}
+
+/* Target hook for 'handle_new_gdb_connection'.  Causes a reset of the
+   ptrace flags for all inferiors.  This is in case the new GDB connection
+   doesn't support the same set of events that the previous one did.  */
+
+void
+linux_process_target::handle_new_gdb_connection ()
+{
+  /* Request that all the lwps reset their ptrace options.  */
+  for_each_thread ([] (thread_info *thread)
+    {
+      struct lwp_info *lwp = get_thread_lwp (thread);
+
+      if (!lwp->stopped)
+	{
+	  /* Stop the lwp so we can modify its ptrace options.  */
+	  lwp->must_set_ptrace_flags = 1;
+	  linux_stop_lwp (lwp);
+	}
+      else
+	{
+	  /* Already stopped; go ahead and set the ptrace options.  */
+	  struct process_info *proc = find_process_pid (pid_of (thread));
+	  int options = linux_low_ptrace_options (proc->attached);
+
+	  linux_enable_event_reporting (lwpid_of (thread), options);
+	  lwp->must_set_ptrace_flags = 0;
+	}
+    });
+}
+
+int
+linux_process_target::handle_monitor_command (char *mon)
+{
+#ifdef USE_THREAD_DB
+  return thread_db_handle_monitor_command (mon);
+#else
+  return 0;
+#endif
+}
+
+int
+linux_process_target::core_of_thread (ptid_t ptid)
+{
+  return linux_common_core_of_thread (ptid);
+}
+
+bool
+linux_process_target::supports_disable_randomization ()
+{
+#ifdef HAVE_PERSONALITY
+  return true;
+#else
+  return false;
+#endif
+}
+
+bool
+linux_process_target::supports_agent ()
+{
+  return true;
+}
+
+bool
+linux_process_target::supports_range_stepping ()
+{
+  if (supports_software_single_step ())
+    return true;
+
+  return low_supports_range_stepping ();
+}
+
+bool
+linux_process_target::low_supports_range_stepping ()
+{
+  return false;
+}
+
+bool
+linux_process_target::supports_pid_to_exec_file ()
+{
+  return true;
+}
+
+char *
+linux_process_target::pid_to_exec_file (int pid)
+{
+  return linux_proc_pid_to_exec_file (pid);
+}
+
+bool
+linux_process_target::supports_multifs ()
+{
+  return true;
+}
+
+int
+linux_process_target::multifs_open (int pid, const char *filename,
+				    int flags, mode_t mode)
+{
+  return linux_mntns_open_cloexec (pid, filename, flags, mode);
+}
+
+int
+linux_process_target::multifs_unlink (int pid, const char *filename)
+{
+  return linux_mntns_unlink (pid, filename);
+}
+
+ssize_t
+linux_process_target::multifs_readlink (int pid, const char *filename,
+					char *buf, size_t bufsiz)
+{
+  return linux_mntns_readlink (pid, filename, buf, bufsiz);
+}
+
+#if defined PT_GETDSBT || defined PTRACE_GETFDPIC
+struct target_loadseg
+{
+  /* Core address to which the segment is mapped.  */
+  Elf32_Addr addr;
+  /* VMA recorded in the program header.  */
+  Elf32_Addr p_vaddr;
+  /* Size of this segment in memory.  */
+  Elf32_Word p_memsz;
+};
+
+# if defined PT_GETDSBT
+struct target_loadmap
+{
+  /* Protocol version number, must be zero.  */
+  Elf32_Word version;
+  /* Pointer to the DSBT table, its size, and the DSBT index.  */
+  unsigned *dsbt_table;
+  unsigned dsbt_size, dsbt_index;
+  /* Number of segments in this map.  */
+  Elf32_Word nsegs;
+  /* The actual memory map.  */
+  struct target_loadseg segs[/*nsegs*/];
+};
+#  define LINUX_LOADMAP		PT_GETDSBT
+#  define LINUX_LOADMAP_EXEC	PTRACE_GETDSBT_EXEC
+#  define LINUX_LOADMAP_INTERP	PTRACE_GETDSBT_INTERP
+# else
+struct target_loadmap
+{
+  /* Protocol version number, must be zero.  */
+  Elf32_Half version;
+  /* Number of segments in this map.  */
+  Elf32_Half nsegs;
+  /* The actual memory map.  */
+  struct target_loadseg segs[/*nsegs*/];
+};
+#  define LINUX_LOADMAP		PTRACE_GETFDPIC
+#  define LINUX_LOADMAP_EXEC	PTRACE_GETFDPIC_EXEC
+#  define LINUX_LOADMAP_INTERP	PTRACE_GETFDPIC_INTERP
+# endif
+
+bool
+linux_process_target::supports_read_loadmap ()
+{
+  return true;
+}
+
+int
+linux_process_target::read_loadmap (const char *annex, CORE_ADDR offset,
+				    unsigned char *myaddr, unsigned int len)
+{
+  int pid = lwpid_of (current_thread);
+  int addr = -1;
+  struct target_loadmap *data = NULL;
+  unsigned int actual_length, copy_length;
+
+  if (strcmp (annex, "exec") == 0)
+    addr = (int) LINUX_LOADMAP_EXEC;
+  else if (strcmp (annex, "interp") == 0)
+    addr = (int) LINUX_LOADMAP_INTERP;
+  else
+    return -1;
+
+  if (ptrace (LINUX_LOADMAP, pid, addr, &data) != 0)
+    return -1;
+
+  if (data == NULL)
+    return -1;
+
+  actual_length = sizeof (struct target_loadmap)
+    + sizeof (struct target_loadseg) * data->nsegs;
+
+  if (offset < 0 || offset > actual_length)
+    return -1;
+
+  copy_length = actual_length - offset < len ? actual_length - offset : len;
+  memcpy (myaddr, (char *) data + offset, copy_length);
+  return copy_length;
+}
+#endif /* defined PT_GETDSBT || defined PTRACE_GETFDPIC */
+
+bool
+linux_process_target::supports_catch_syscall ()
+{
+  return (low_supports_catch_syscall ()
+	  && linux_supports_tracesysgood ());
+}
+
+bool
+linux_process_target::low_supports_catch_syscall ()
+{
+  return false;
+}
+
+CORE_ADDR
+linux_process_target::read_pc (regcache *regcache)
+{
+  if (!low_supports_breakpoints ())
+    return 0;
+
+  return low_get_pc (regcache);
+}
+
+void
+linux_process_target::write_pc (regcache *regcache, CORE_ADDR pc)
+{
+  gdb_assert (low_supports_breakpoints ());
+
+  low_set_pc (regcache, pc);
+}
+
+bool
+linux_process_target::supports_thread_stopped ()
+{
+  return true;
+}
+
+bool
+linux_process_target::thread_stopped (thread_info *thread)
+{
+  return get_thread_lwp (thread)->stopped;
+}
+
+/* This exposes stop-all-threads functionality to other modules.  */
+
+void
+linux_process_target::pause_all (bool freeze)
+{
+  stop_all_lwps (freeze, NULL);
+}
+
+/* This exposes unstop-all-threads functionality to other gdbserver
+   modules.  */
+
+void
+linux_process_target::unpause_all (bool unfreeze)
+{
+  unstop_all_lwps (unfreeze, NULL);
+}
+
+int
+linux_process_target::prepare_to_access_memory ()
+{
+  /* Neither ptrace nor /proc/PID/mem allow accessing memory through a
+     running LWP.  */
+  if (non_stop)
+    target_pause_all (true);
+  return 0;
+}
+
+void
+linux_process_target::done_accessing_memory ()
+{
+  /* Neither ptrace nor /proc/PID/mem allow accessing memory through a
+     running LWP.  */
+  if (non_stop)
+    target_unpause_all (true);
+}
+
+/* Extract &phdr and num_phdr in the inferior.  Return 0 on success.  */
+
+static int
+get_phdr_phnum_from_proc_auxv (const int pid, const int is_elf64,
+			       CORE_ADDR *phdr_memaddr, int *num_phdr)
+{
+  char filename[PATH_MAX];
+  int fd;
+  const int auxv_size = is_elf64
+    ? sizeof (Elf64_auxv_t) : sizeof (Elf32_auxv_t);
+  char buf[sizeof (Elf64_auxv_t)];  /* The larger of the two.  */
+
+  xsnprintf (filename, sizeof filename, "/proc/%d/auxv", pid);
+
+  fd = open (filename, O_RDONLY);
+  if (fd < 0)
+    return 1;
+
+  *phdr_memaddr = 0;
+  *num_phdr = 0;
+  while (read (fd, buf, auxv_size) == auxv_size
+	 && (*phdr_memaddr == 0 || *num_phdr == 0))
+    {
+      if (is_elf64)
+	{
+	  Elf64_auxv_t *const aux = (Elf64_auxv_t *) buf;
+
+	  switch (aux->a_type)
+	    {
+	    case AT_PHDR:
+	      *phdr_memaddr = aux->a_un.a_val;
+	      break;
+	    case AT_PHNUM:
+	      *num_phdr = aux->a_un.a_val;
+	      break;
+	    }
+	}
+      else
+	{
+	  Elf32_auxv_t *const aux = (Elf32_auxv_t *) buf;
+
+	  switch (aux->a_type)
+	    {
+	    case AT_PHDR:
+	      *phdr_memaddr = aux->a_un.a_val;
+	      break;
+	    case AT_PHNUM:
+	      *num_phdr = aux->a_un.a_val;
+	      break;
+	    }
+	}
+    }
+
+  close (fd);
+
+  if (*phdr_memaddr == 0 || *num_phdr == 0)
+    {
+      warning ("Unexpected missing AT_PHDR and/or AT_PHNUM: "
+	       "phdr_memaddr = %ld, phdr_num = %d",
+	       (long) *phdr_memaddr, *num_phdr);
+      return 2;
+    }
+
+  return 0;
+}
+
+/* Return &_DYNAMIC (via PT_DYNAMIC) in the inferior, or 0 if not present.  */
+
+static CORE_ADDR
+get_dynamic (const int pid, const int is_elf64)
+{
+  CORE_ADDR phdr_memaddr, relocation;
+  int num_phdr, i;
+  unsigned char *phdr_buf;
+  const int phdr_size = is_elf64 ? sizeof (Elf64_Phdr) : sizeof (Elf32_Phdr);
+
+  if (get_phdr_phnum_from_proc_auxv (pid, is_elf64, &phdr_memaddr, &num_phdr))
+    return 0;
+
+  gdb_assert (num_phdr < 100);  /* Basic sanity check.  */
+  phdr_buf = (unsigned char *) alloca (num_phdr * phdr_size);
+
+  if (linux_read_memory (phdr_memaddr, phdr_buf, num_phdr * phdr_size))
+    return 0;
+
+  /* Compute relocation: it is expected to be 0 for "regular" executables,
+     non-zero for PIE ones.  */
+  relocation = -1;
+  for (i = 0; relocation == -1 && i < num_phdr; i++)
+    if (is_elf64)
+      {
+	Elf64_Phdr *const p = (Elf64_Phdr *) (phdr_buf + i * phdr_size);
+
+	if (p->p_type == PT_PHDR)
+	  relocation = phdr_memaddr - p->p_vaddr;
+      }
+    else
+      {
+	Elf32_Phdr *const p = (Elf32_Phdr *) (phdr_buf + i * phdr_size);
+
+	if (p->p_type == PT_PHDR)
+	  relocation = phdr_memaddr - p->p_vaddr;
+      }
+
+  if (relocation == -1)
+    {
+      /* PT_PHDR is optional, but necessary for PIE in general.  Fortunately
+	 any real world executables, including PIE executables, have always
+	 PT_PHDR present.  PT_PHDR is not present in some shared libraries or
+	 in fpc (Free Pascal 2.4) binaries but neither of those have a need for
+	 or present DT_DEBUG anyway (fpc binaries are statically linked).
+
+	 Therefore if there exists DT_DEBUG there is always also PT_PHDR.
+
+	 GDB could find RELOCATION also from AT_ENTRY - e_entry.  */
+
+      return 0;
+    }
+
+  for (i = 0; i < num_phdr; i++)
+    {
+      if (is_elf64)
+	{
+	  Elf64_Phdr *const p = (Elf64_Phdr *) (phdr_buf + i * phdr_size);
+
+	  if (p->p_type == PT_DYNAMIC)
+	    return p->p_vaddr + relocation;
+	}
+      else
+	{
+	  Elf32_Phdr *const p = (Elf32_Phdr *) (phdr_buf + i * phdr_size);
+
+	  if (p->p_type == PT_DYNAMIC)
+	    return p->p_vaddr + relocation;
+	}
+    }
+
+  return 0;
+}
+
+/* Return &_r_debug in the inferior, or -1 if not present.  Return value
+   can be 0 if the inferior does not yet have the library list initialized.
+   We look for DT_MIPS_RLD_MAP first.  MIPS executables use this instead of
+   DT_DEBUG, although they sometimes contain an unused DT_DEBUG entry too.  */
+
+static CORE_ADDR
+get_r_debug (const int pid, const int is_elf64)
+{
+  CORE_ADDR dynamic_memaddr;
+  const int dyn_size = is_elf64 ? sizeof (Elf64_Dyn) : sizeof (Elf32_Dyn);
+  unsigned char buf[sizeof (Elf64_Dyn)];  /* The larger of the two.  */
+  CORE_ADDR map = -1;
+
+  dynamic_memaddr = get_dynamic (pid, is_elf64);
+  if (dynamic_memaddr == 0)
+    return map;
+
+  while (linux_read_memory (dynamic_memaddr, buf, dyn_size) == 0)
+    {
+      if (is_elf64)
+	{
+	  Elf64_Dyn *const dyn = (Elf64_Dyn *) buf;
+#if defined DT_MIPS_RLD_MAP || defined DT_MIPS_RLD_MAP_REL
+	  union
+	    {
+	      Elf64_Xword map;
+	      unsigned char buf[sizeof (Elf64_Xword)];
+	    }
+	  rld_map;
+#endif
+#ifdef DT_MIPS_RLD_MAP
+	  if (dyn->d_tag == DT_MIPS_RLD_MAP)
+	    {
+	      if (linux_read_memory (dyn->d_un.d_val,
+				     rld_map.buf, sizeof (rld_map.buf)) == 0)
+		return rld_map.map;
+	      else
+		break;
+	    }
+#endif	/* DT_MIPS_RLD_MAP */
+#ifdef DT_MIPS_RLD_MAP_REL
+	  if (dyn->d_tag == DT_MIPS_RLD_MAP_REL)
+	    {
+	      if (linux_read_memory (dyn->d_un.d_val + dynamic_memaddr,
+				     rld_map.buf, sizeof (rld_map.buf)) == 0)
+		return rld_map.map;
+	      else
+		break;
+	    }
+#endif	/* DT_MIPS_RLD_MAP_REL */
+
+	  if (dyn->d_tag == DT_DEBUG && map == -1)
+	    map = dyn->d_un.d_val;
+
+	  if (dyn->d_tag == DT_NULL)
+	    break;
+	}
+      else
+	{
+	  Elf32_Dyn *const dyn = (Elf32_Dyn *) buf;
+#if defined DT_MIPS_RLD_MAP || defined DT_MIPS_RLD_MAP_REL
+	  union
+	    {
+	      Elf32_Word map;
+	      unsigned char buf[sizeof (Elf32_Word)];
+	    }
+	  rld_map;
+#endif
+#ifdef DT_MIPS_RLD_MAP
+	  if (dyn->d_tag == DT_MIPS_RLD_MAP)
+	    {
+	      if (linux_read_memory (dyn->d_un.d_val,
+				     rld_map.buf, sizeof (rld_map.buf)) == 0)
+		return rld_map.map;
+	      else
+		break;
+	    }
+#endif	/* DT_MIPS_RLD_MAP */
+#ifdef DT_MIPS_RLD_MAP_REL
+	  if (dyn->d_tag == DT_MIPS_RLD_MAP_REL)
+	    {
+	      if (linux_read_memory (dyn->d_un.d_val + dynamic_memaddr,
+				     rld_map.buf, sizeof (rld_map.buf)) == 0)
+		return rld_map.map;
+	      else
+		break;
+	    }
+#endif	/* DT_MIPS_RLD_MAP_REL */
+
+	  if (dyn->d_tag == DT_DEBUG && map == -1)
+	    map = dyn->d_un.d_val;
+
+	  if (dyn->d_tag == DT_NULL)
+	    break;
+	}
+
+      dynamic_memaddr += dyn_size;
+    }
+
+  return map;
+}
+
+/* Read one pointer from MEMADDR in the inferior.  */
+
+static int
+read_one_ptr (CORE_ADDR memaddr, CORE_ADDR *ptr, int ptr_size)
+{
+  int ret;
+
+  /* Go through a union so this works on either big or little endian
+     hosts, when the inferior's pointer size is smaller than the size
+     of CORE_ADDR.  It is assumed the inferior's endianness is the
+     same of the superior's.  */
+  union
+  {
+    CORE_ADDR core_addr;
+    unsigned int ui;
+    unsigned char uc;
+  } addr;
+
+  ret = linux_read_memory (memaddr, &addr.uc, ptr_size);
+  if (ret == 0)
+    {
+      if (ptr_size == sizeof (CORE_ADDR))
+	*ptr = addr.core_addr;
+      else if (ptr_size == sizeof (unsigned int))
+	*ptr = addr.ui;
+      else
+	gdb_assert_not_reached ("unhandled pointer size");
+    }
+  return ret;
+}
+
+bool
+linux_process_target::supports_qxfer_libraries_svr4 ()
+{
+  return true;
+}
+
+struct link_map_offsets
+  {
+    /* Offset and size of r_debug.r_version.  */
+    int r_version_offset;
+
+    /* Offset and size of r_debug.r_map.  */
+    int r_map_offset;
+
+    /* Offset to l_addr field in struct link_map.  */
+    int l_addr_offset;
+
+    /* Offset to l_name field in struct link_map.  */
+    int l_name_offset;
+
+    /* Offset to l_ld field in struct link_map.  */
+    int l_ld_offset;
+
+    /* Offset to l_next field in struct link_map.  */
+    int l_next_offset;
+
+    /* Offset to l_prev field in struct link_map.  */
+    int l_prev_offset;
+  };
+
+/* Construct qXfer:libraries-svr4:read reply.  */
+
+int
+linux_process_target::qxfer_libraries_svr4 (const char *annex,
+					    unsigned char *readbuf,
+					    unsigned const char *writebuf,
+					    CORE_ADDR offset, int len)
+{
+  struct process_info_private *const priv = current_process ()->priv;
+  char filename[PATH_MAX];
+  int pid, is_elf64;
+
+  static const struct link_map_offsets lmo_32bit_offsets =
+    {
+      0,     /* r_version offset. */
+      4,     /* r_debug.r_map offset.  */
+      0,     /* l_addr offset in link_map.  */
+      4,     /* l_name offset in link_map.  */
+      8,     /* l_ld offset in link_map.  */
+      12,    /* l_next offset in link_map.  */
+      16     /* l_prev offset in link_map.  */
+    };
+
+  static const struct link_map_offsets lmo_64bit_offsets =
+    {
+      0,     /* r_version offset. */
+      8,     /* r_debug.r_map offset.  */
+      0,     /* l_addr offset in link_map.  */
+      8,     /* l_name offset in link_map.  */
+      16,    /* l_ld offset in link_map.  */
+      24,    /* l_next offset in link_map.  */
+      32     /* l_prev offset in link_map.  */
+    };
+  const struct link_map_offsets *lmo;
+  unsigned int machine;
+  int ptr_size;
+  CORE_ADDR lm_addr = 0, lm_prev = 0;
+  CORE_ADDR l_name, l_addr, l_ld, l_next, l_prev;
+  int header_done = 0;
+
+  if (writebuf != NULL)
+    return -2;
+  if (readbuf == NULL)
+    return -1;
+
+  pid = lwpid_of (current_thread);
+  xsnprintf (filename, sizeof filename, "/proc/%d/exe", pid);
+  is_elf64 = elf_64_file_p (filename, &machine);
+  lmo = is_elf64 ? &lmo_64bit_offsets : &lmo_32bit_offsets;
+  ptr_size = is_elf64 ? 8 : 4;
+
+  while (annex[0] != '\0')
+    {
+      const char *sep;
+      CORE_ADDR *addrp;
+      int name_len;
+
+      sep = strchr (annex, '=');
+      if (sep == NULL)
+	break;
+
+      name_len = sep - annex;
+      if (name_len == 5 && startswith (annex, "start"))
+	addrp = &lm_addr;
+      else if (name_len == 4 && startswith (annex, "prev"))
+	addrp = &lm_prev;
+      else
+	{
+	  annex = strchr (sep, ';');
+	  if (annex == NULL)
+	    break;
+	  annex++;
+	  continue;
+	}
+
+      annex = decode_address_to_semicolon (addrp, sep + 1);
+    }
+
+  if (lm_addr == 0)
+    {
+      int r_version = 0;
+
+      if (priv->r_debug == 0)
+	priv->r_debug = get_r_debug (pid, is_elf64);
+
+      /* We failed to find DT_DEBUG.  Such situation will not change
+	 for this inferior - do not retry it.  Report it to GDB as
+	 E01, see for the reasons at the GDB solib-svr4.c side.  */
+      if (priv->r_debug == (CORE_ADDR) -1)
+	return -1;
+
+      if (priv->r_debug != 0)
+	{
+	  if (linux_read_memory (priv->r_debug + lmo->r_version_offset,
+				 (unsigned char *) &r_version,
+				 sizeof (r_version)) != 0
+	      || r_version != 1)
+	    {
+	      warning ("unexpected r_debug version %d", r_version);
+	    }
+	  else if (read_one_ptr (priv->r_debug + lmo->r_map_offset,
+				 &lm_addr, ptr_size) != 0)
+	    {
+	      warning ("unable to read r_map from 0x%lx",
+		       (long) priv->r_debug + lmo->r_map_offset);
+	    }
+	}
+    }
+
+  std::string document = "<library-list-svr4 version=\"1.0\"";
+
+  while (lm_addr
+	 && read_one_ptr (lm_addr + lmo->l_name_offset,
+			  &l_name, ptr_size) == 0
+	 && read_one_ptr (lm_addr + lmo->l_addr_offset,
+			  &l_addr, ptr_size) == 0
+	 && read_one_ptr (lm_addr + lmo->l_ld_offset,
+			  &l_ld, ptr_size) == 0
+	 && read_one_ptr (lm_addr + lmo->l_prev_offset,
+			  &l_prev, ptr_size) == 0
+	 && read_one_ptr (lm_addr + lmo->l_next_offset,
+			  &l_next, ptr_size) == 0)
+    {
+      unsigned char libname[PATH_MAX];
+
+      if (lm_prev != l_prev)
+	{
+	  warning ("Corrupted shared library list: 0x%lx != 0x%lx",
+		   (long) lm_prev, (long) l_prev);
+	  break;
+	}
+
+      /* Ignore the first entry even if it has valid name as the first entry
+	 corresponds to the main executable.  The first entry should not be
+	 skipped if the dynamic loader was loaded late by a static executable
+	 (see solib-svr4.c parameter ignore_first).  But in such case the main
+	 executable does not have PT_DYNAMIC present and this function already
+	 exited above due to failed get_r_debug.  */
+      if (lm_prev == 0)
+	string_appendf (document, " main-lm=\"0x%lx\"", (unsigned long) lm_addr);
+      else
+	{
+	  /* Not checking for error because reading may stop before
+	     we've got PATH_MAX worth of characters.  */
+	  libname[0] = '\0';
+	  linux_read_memory (l_name, libname, sizeof (libname) - 1);
+	  libname[sizeof (libname) - 1] = '\0';
+	  if (libname[0] != '\0')
+	    {
+	      if (!header_done)
+		{
+		  /* Terminate `<library-list-svr4'.  */
+		  document += '>';
+		  header_done = 1;
+		}
+
+	      string_appendf (document, "<library name=\"");
+	      xml_escape_text_append (&document, (char *) libname);
+	      string_appendf (document, "\" lm=\"0x%lx\" "
+			      "l_addr=\"0x%lx\" l_ld=\"0x%lx\"/>",
+			      (unsigned long) lm_addr, (unsigned long) l_addr,
+			      (unsigned long) l_ld);
+	    }
+	}
+
+      lm_prev = lm_addr;
+      lm_addr = l_next;
+    }
+
+  if (!header_done)
+    {
+      /* Empty list; terminate `<library-list-svr4'.  */
+      document += "/>";
+    }
+  else
+    document += "</library-list-svr4>";
+
+  int document_len = document.length ();
+  if (offset < document_len)
+    document_len -= offset;
+  else
+    document_len = 0;
+  if (len > document_len)
+    len = document_len;
+
+  memcpy (readbuf, document.data () + offset, len);
+
+  return len;
+}
+
+#ifdef HAVE_LINUX_BTRACE
+
+btrace_target_info *
+linux_process_target::enable_btrace (ptid_t ptid,
+				     const btrace_config *conf)
+{
+  return linux_enable_btrace (ptid, conf);
+}
+
+/* See to_disable_btrace target method.  */
+
+int
+linux_process_target::disable_btrace (btrace_target_info *tinfo)
+{
+  enum btrace_error err;
+
+  err = linux_disable_btrace (tinfo);
+  return (err == BTRACE_ERR_NONE ? 0 : -1);
+}
+
+/* Encode an Intel Processor Trace configuration.  */
+
+static void
+linux_low_encode_pt_config (struct buffer *buffer,
+			    const struct btrace_data_pt_config *config)
+{
+  buffer_grow_str (buffer, "<pt-config>\n");
+
+  switch (config->cpu.vendor)
+    {
+    case CV_INTEL:
+      buffer_xml_printf (buffer, "<cpu vendor=\"GenuineIntel\" family=\"%u\" "
+			 "model=\"%u\" stepping=\"%u\"/>\n",
+			 config->cpu.family, config->cpu.model,
+			 config->cpu.stepping);
+      break;
+
+    default:
+      break;
+    }
+
+  buffer_grow_str (buffer, "</pt-config>\n");
+}
+
+/* Encode a raw buffer.  */
+
+static void
+linux_low_encode_raw (struct buffer *buffer, const gdb_byte *data,
+		      unsigned int size)
+{
+  if (size == 0)
+    return;
+
+  /* We use hex encoding - see gdbsupport/rsp-low.h.  */
+  buffer_grow_str (buffer, "<raw>\n");
+
+  while (size-- > 0)
+    {
+      char elem[2];
+
+      elem[0] = tohex ((*data >> 4) & 0xf);
+      elem[1] = tohex (*data++ & 0xf);
+
+      buffer_grow (buffer, elem, 2);
+    }
+
+  buffer_grow_str (buffer, "</raw>\n");
+}
+
+/* See to_read_btrace target method.  */
+
+int
+linux_process_target::read_btrace (btrace_target_info *tinfo,
+				   buffer *buffer,
+				   enum btrace_read_type type)
+{
+  struct btrace_data btrace;
+  enum btrace_error err;
+
+  err = linux_read_btrace (&btrace, tinfo, type);
+  if (err != BTRACE_ERR_NONE)
+    {
+      if (err == BTRACE_ERR_OVERFLOW)
+	buffer_grow_str0 (buffer, "E.Overflow.");
+      else
+	buffer_grow_str0 (buffer, "E.Generic Error.");
+
+      return -1;
+    }
+
+  switch (btrace.format)
+    {
+    case BTRACE_FORMAT_NONE:
+      buffer_grow_str0 (buffer, "E.No Trace.");
+      return -1;
+
+    case BTRACE_FORMAT_BTS:
+      buffer_grow_str (buffer, "<!DOCTYPE btrace SYSTEM \"btrace.dtd\">\n");
+      buffer_grow_str (buffer, "<btrace version=\"1.0\">\n");
+
+      for (const btrace_block &block : *btrace.variant.bts.blocks)
+	buffer_xml_printf (buffer, "<block begin=\"0x%s\" end=\"0x%s\"/>\n",
+			   paddress (block.begin), paddress (block.end));
+
+      buffer_grow_str0 (buffer, "</btrace>\n");
+      break;
+
+    case BTRACE_FORMAT_PT:
+      buffer_grow_str (buffer, "<!DOCTYPE btrace SYSTEM \"btrace.dtd\">\n");
+      buffer_grow_str (buffer, "<btrace version=\"1.0\">\n");
+      buffer_grow_str (buffer, "<pt>\n");
+
+      linux_low_encode_pt_config (buffer, &btrace.variant.pt.config);
+
+      linux_low_encode_raw (buffer, btrace.variant.pt.data,
+			    btrace.variant.pt.size);
+
+      buffer_grow_str (buffer, "</pt>\n");
+      buffer_grow_str0 (buffer, "</btrace>\n");
+      break;
+
+    default:
+      buffer_grow_str0 (buffer, "E.Unsupported Trace Format.");
+      return -1;
+    }
+
+  return 0;
+}
+
+/* See to_btrace_conf target method.  */
+
+int
+linux_process_target::read_btrace_conf (const btrace_target_info *tinfo,
+					buffer *buffer)
+{
+  const struct btrace_config *conf;
+
+  buffer_grow_str (buffer, "<!DOCTYPE btrace-conf SYSTEM \"btrace-conf.dtd\">\n");
+  buffer_grow_str (buffer, "<btrace-conf version=\"1.0\">\n");
+
+  conf = linux_btrace_conf (tinfo);
+  if (conf != NULL)
+    {
+      switch (conf->format)
+	{
+	case BTRACE_FORMAT_NONE:
+	  break;
+
+	case BTRACE_FORMAT_BTS:
+	  buffer_xml_printf (buffer, "<bts");
+	  buffer_xml_printf (buffer, " size=\"0x%x\"", conf->bts.size);
+	  buffer_xml_printf (buffer, " />\n");
+	  break;
+
+	case BTRACE_FORMAT_PT:
+	  buffer_xml_printf (buffer, "<pt");
+	  buffer_xml_printf (buffer, " size=\"0x%x\"", conf->pt.size);
+	  buffer_xml_printf (buffer, "/>\n");
+	  break;
+	}
+    }
+
+  buffer_grow_str0 (buffer, "</btrace-conf>\n");
+  return 0;
+}
+#endif /* HAVE_LINUX_BTRACE */
+
+/* See nat/linux-nat.h.  */
+
+ptid_t
+current_lwp_ptid (void)
+{
+  return ptid_of (current_thread);
+}
+
+const char *
+linux_process_target::thread_name (ptid_t thread)
+{
+  return linux_proc_tid_get_name (thread);
+}
+
+#if USE_THREAD_DB
+bool
+linux_process_target::thread_handle (ptid_t ptid, gdb_byte **handle,
+				     int *handle_len)
+{
+  return thread_db_thread_handle (ptid, handle, handle_len);
+}
+#endif
+
+/* Default implementation of linux_target_ops method "set_pc" for
+   32-bit pc register which is literally named "pc".  */
+
+void
+linux_set_pc_32bit (struct regcache *regcache, CORE_ADDR pc)
+{
+  uint32_t newpc = pc;
+
+  supply_register_by_name (regcache, "pc", &newpc);
+}
+
+/* Default implementation of linux_target_ops method "get_pc" for
+   32-bit pc register which is literally named "pc".  */
+
+CORE_ADDR
+linux_get_pc_32bit (struct regcache *regcache)
+{
+  uint32_t pc;
+
+  collect_register_by_name (regcache, "pc", &pc);
+  if (debug_threads)
+    debug_printf ("stop pc is 0x%" PRIx32 "\n", pc);
+  return pc;
+}
+
+/* Default implementation of linux_target_ops method "set_pc" for
+   64-bit pc register which is literally named "pc".  */
+
+void
+linux_set_pc_64bit (struct regcache *regcache, CORE_ADDR pc)
+{
+  uint64_t newpc = pc;
+
+  supply_register_by_name (regcache, "pc", &newpc);
+}
+
+/* Default implementation of linux_target_ops method "get_pc" for
+   64-bit pc register which is literally named "pc".  */
+
+CORE_ADDR
+linux_get_pc_64bit (struct regcache *regcache)
+{
+  uint64_t pc;
+
+  collect_register_by_name (regcache, "pc", &pc);
+  if (debug_threads)
+    debug_printf ("stop pc is 0x%" PRIx64 "\n", pc);
+  return pc;
+}
+
+/* See linux-low.h.  */
+
+int
+linux_get_auxv (int wordsize, CORE_ADDR match, CORE_ADDR *valp)
+{
+  gdb_byte *data = (gdb_byte *) alloca (2 * wordsize);
+  int offset = 0;
+
+  gdb_assert (wordsize == 4 || wordsize == 8);
+
+  while (the_target->read_auxv (offset, data, 2 * wordsize) == 2 * wordsize)
+    {
+      if (wordsize == 4)
+	{
+	  uint32_t *data_p = (uint32_t *) data;
+	  if (data_p[0] == match)
+	    {
+	      *valp = data_p[1];
+	      return 1;
+	    }
+	}
+      else
+	{
+	  uint64_t *data_p = (uint64_t *) data;
+	  if (data_p[0] == match)
+	    {
+	      *valp = data_p[1];
+	      return 1;
+	    }
+	}
+
+      offset += 2 * wordsize;
+    }
+
+  return 0;
+}
+
+/* See linux-low.h.  */
+
+CORE_ADDR
+linux_get_hwcap (int wordsize)
+{
+  CORE_ADDR hwcap = 0;
+  linux_get_auxv (wordsize, AT_HWCAP, &hwcap);
+  return hwcap;
+}
+
+/* See linux-low.h.  */
+
+CORE_ADDR
+linux_get_hwcap2 (int wordsize)
+{
+  CORE_ADDR hwcap2 = 0;
+  linux_get_auxv (wordsize, AT_HWCAP2, &hwcap2);
+  return hwcap2;
+}
+
+#ifdef HAVE_LINUX_REGSETS
+void
+initialize_regsets_info (struct regsets_info *info)
+{
+  for (info->num_regsets = 0;
+       info->regsets[info->num_regsets].size >= 0;
+       info->num_regsets++)
+    ;
+}
+#endif
+
+void
+initialize_low (void)
+{
+  struct sigaction sigchld_action;
+
+  memset (&sigchld_action, 0, sizeof (sigchld_action));
+  set_target_ops (the_linux_target);
+
+  linux_ptrace_init_warnings ();
+  linux_proc_init_warnings ();
+
+  sigchld_action.sa_handler = sigchld_handler;
+  sigemptyset (&sigchld_action.sa_mask);
+  sigchld_action.sa_flags = SA_RESTART;
+  sigaction (SIGCHLD, &sigchld_action, NULL);
+
+  initialize_low_arch ();
+
+  linux_check_ptrace_features ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-low.h ./gdbserver/linux-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-low.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-low.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,897 @@
+/* Internal interfaces for the GNU/Linux specific target code for gdbserver.
+   Copyright (C) 2002-2021 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 GDBSERVER_LINUX_LOW_H
+#define GDBSERVER_LINUX_LOW_H
+
+#include "nat/linux-nat.h"
+#include "nat/gdb_thread_db.h"
+#include <signal.h>
+
+#include "gdbthread.h"
+#include "gdb_proc_service.h"
+
+/* Included for ptrace type definitions.  */
+#include "nat/linux-ptrace.h"
+#include "target/waitstatus.h" /* For enum target_stop_reason.  */
+#include "tracepoint.h"
+
+#include <list>
+
+#define PTRACE_XFER_TYPE long
+
+#ifdef HAVE_LINUX_REGSETS
+typedef void (*regset_fill_func) (struct regcache *, void *);
+typedef void (*regset_store_func) (struct regcache *, const void *);
+enum regset_type {
+  GENERAL_REGS,
+  FP_REGS,
+  EXTENDED_REGS,
+  OPTIONAL_REGS, /* Do not error if the regset cannot be accessed.  */
+};
+
+/* The arch's regsets array initializer must be terminated with a NULL
+   regset.  */
+#define NULL_REGSET \
+  { 0, 0, 0, -1, (enum regset_type) -1, NULL, NULL }
+
+struct regset_info
+{
+  int get_request, set_request;
+  /* If NT_TYPE isn't 0, it will be passed to ptrace as the 3rd
+     argument and the 4th argument should be "const struct iovec *".  */
+  int nt_type;
+  int size;
+  enum regset_type type;
+  regset_fill_func fill_function;
+  regset_store_func store_function;
+};
+
+/* Aggregation of all the supported regsets of a given
+   architecture/mode.  */
+
+struct regsets_info
+{
+  /* The regsets array.  */
+  struct regset_info *regsets;
+
+  /* The number of regsets in the REGSETS array.  */
+  int num_regsets;
+
+  /* If we get EIO on a regset, do not try it again.  Note the set of
+     supported regsets may depend on processor mode on biarch
+     machines.  This is a (lazily allocated) array holding one boolean
+     byte (0/1) per regset, with each element corresponding to the
+     regset in the REGSETS array above at the same offset.  */
+  char *disabled_regsets;
+};
+
+#endif
+
+/* Mapping between the general-purpose registers in `struct user'
+   format and GDB's register array layout.  */
+
+struct usrregs_info
+{
+  /* The number of registers accessible.  */
+  int num_regs;
+
+  /* The registers map.  */
+  int *regmap;
+};
+
+/* All info needed to access an architecture/mode's registers.  */
+
+struct regs_info
+{
+  /* Regset support bitmap: 1 for registers that are transferred as a part
+     of a regset, 0 for ones that need to be handled individually.  This
+     can be NULL if all registers are transferred with regsets or regsets
+     are not supported.  */
+  unsigned char *regset_bitmap;
+
+  /* Info used when accessing registers with PTRACE_PEEKUSER /
+     PTRACE_POKEUSER.  This can be NULL if all registers are
+     transferred with regsets  .*/
+  struct usrregs_info *usrregs;
+
+#ifdef HAVE_LINUX_REGSETS
+  /* Info used when accessing registers with regsets.  */
+  struct regsets_info *regsets_info;
+#endif
+};
+
+struct process_info_private
+{
+  /* Arch-specific additions.  */
+  struct arch_process_info *arch_private;
+
+  /* libthread_db-specific additions.  Not NULL if this process has loaded
+     thread_db, and it is active.  */
+  struct thread_db *thread_db;
+
+  /* &_r_debug.  0 if not yet determined.  -1 if no PT_DYNAMIC in Phdrs.  */
+  CORE_ADDR r_debug;
+};
+
+struct lwp_info;
+
+/* Target ops definitions for a Linux target.  */
+
+class linux_process_target : public process_stratum_target
+{
+public:
+
+  int create_inferior (const char *program,
+		       const std::vector<char *> &program_args) override;
+
+  void post_create_inferior () override;
+
+  int attach (unsigned long pid) override;
+
+  int kill (process_info *proc) override;
+
+  int detach (process_info *proc) override;
+
+  void mourn (process_info *proc) override;
+
+  void join (int pid) override;
+
+  bool thread_alive (ptid_t pid) override;
+
+  void resume (thread_resume *resume_info, size_t n) override;
+
+  ptid_t wait (ptid_t ptid, target_waitstatus *status,
+	       int options) override;
+
+  void fetch_registers (regcache *regcache, int regno) override;
+
+  void store_registers (regcache *regcache, int regno) override;
+
+  int prepare_to_access_memory () override;
+
+  void done_accessing_memory () override;
+
+  int read_memory (CORE_ADDR memaddr, unsigned char *myaddr,
+		   int len) override;
+
+  int write_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
+		    int len) override;
+
+  void look_up_symbols () override;
+
+  void request_interrupt () override;
+
+  bool supports_read_auxv () override;
+
+  int read_auxv (CORE_ADDR offset, unsigned char *myaddr,
+		 unsigned int len) override;
+
+  int insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		    int size, raw_breakpoint *bp) override;
+
+  int remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		    int size, raw_breakpoint *bp) override;
+
+  bool stopped_by_sw_breakpoint () override;
+
+  bool supports_stopped_by_sw_breakpoint () override;
+
+  bool stopped_by_hw_breakpoint () override;
+
+  bool supports_stopped_by_hw_breakpoint () override;
+
+  bool supports_hardware_single_step () override;
+
+  bool stopped_by_watchpoint () override;
+
+  CORE_ADDR stopped_data_address () override;
+
+  bool supports_read_offsets () override;
+
+  int read_offsets (CORE_ADDR *text, CORE_ADDR *data) override;
+
+  bool supports_get_tls_address () override;
+
+  int get_tls_address (thread_info *thread, CORE_ADDR offset,
+		       CORE_ADDR load_module, CORE_ADDR *address) override;
+
+  bool supports_qxfer_osdata () override;
+
+  int qxfer_osdata (const char *annex, unsigned char *readbuf,
+		    unsigned const char *writebuf,
+		    CORE_ADDR offset, int len) override;
+
+  bool supports_qxfer_siginfo () override;
+
+  int qxfer_siginfo (const char *annex, unsigned char *readbuf,
+		     unsigned const char *writebuf,
+		     CORE_ADDR offset, int len) override;
+
+  bool supports_non_stop () override;
+
+  bool async (bool enable) override;
+
+  int start_non_stop (bool enable) override;
+
+  bool supports_multi_process () override;
+
+  bool supports_fork_events () override;
+
+  bool supports_vfork_events () override;
+
+  bool supports_exec_events () override;
+
+  void handle_new_gdb_connection () override;
+
+  int handle_monitor_command (char *mon) override;
+
+  int core_of_thread (ptid_t ptid) override;
+
+#if defined PT_GETDSBT || defined PTRACE_GETFDPIC
+  bool supports_read_loadmap () override;
+
+  int read_loadmap (const char *annex, CORE_ADDR offset,
+		    unsigned char *myaddr, unsigned int len) override;
+#endif
+
+  CORE_ADDR read_pc (regcache *regcache) override;
+
+  void write_pc (regcache *regcache, CORE_ADDR pc) override;
+
+  bool supports_thread_stopped () override;
+
+  bool thread_stopped (thread_info *thread) override;
+
+  void pause_all (bool freeze) override;
+
+  void unpause_all (bool unfreeze) override;
+
+  void stabilize_threads () override;
+
+  bool supports_disable_randomization () override;
+
+  bool supports_qxfer_libraries_svr4 () override;
+
+  int qxfer_libraries_svr4 (const char *annex,
+			    unsigned char *readbuf,
+			    unsigned const char *writebuf,
+			    CORE_ADDR offset, int len) override;
+
+  bool supports_agent () override;
+
+#ifdef HAVE_LINUX_BTRACE
+  btrace_target_info *enable_btrace (ptid_t ptid,
+				     const btrace_config *conf) override;
+
+  int disable_btrace (btrace_target_info *tinfo) override;
+
+  int read_btrace (btrace_target_info *tinfo, buffer *buf,
+		   enum btrace_read_type type) override;
+
+  int read_btrace_conf (const btrace_target_info *tinfo,
+			buffer *buf) override;
+#endif
+
+  bool supports_range_stepping () override;
+
+  bool supports_pid_to_exec_file () override;
+
+  char *pid_to_exec_file (int pid) override;
+
+  bool supports_multifs () override;
+
+  int multifs_open (int pid, const char *filename, int flags,
+		    mode_t mode) override;
+
+  int multifs_unlink (int pid, const char *filename) override;
+
+  ssize_t multifs_readlink (int pid, const char *filename, char *buf,
+			    size_t bufsiz) override;
+
+  const char *thread_name (ptid_t thread) override;
+
+#if USE_THREAD_DB
+  bool thread_handle (ptid_t ptid, gdb_byte **handle,
+		      int *handle_len) override;
+#endif
+
+  bool supports_catch_syscall () override;
+
+  /* Return the information to access registers.  This has public
+     visibility because proc-service uses it.  */
+  virtual const regs_info *get_regs_info () = 0;
+
+private:
+
+  /* Handle a GNU/Linux extended wait response.  If we see a clone,
+     fork, or vfork event, we need to add the new LWP to our list
+     (and return 0 so as not to report the trap to higher layers).
+     If we see an exec event, we will modify ORIG_EVENT_LWP to point
+     to a new LWP representing the new program.  */
+  int handle_extended_wait (lwp_info **orig_event_lwp, int wstat);
+
+  /* Do low-level handling of the event, and check if we should go on
+     and pass it to caller code.  Return the affected lwp if we are, or
+     NULL otherwise.  */
+  lwp_info *filter_event (int lwpid, int wstat);
+
+  /* Wait for an event from child(ren) WAIT_PTID, and return any that
+     match FILTER_PTID (leaving others pending).  The PTIDs can be:
+     minus_one_ptid, to specify any child; a pid PTID, specifying all
+     lwps of a thread group; or a PTID representing a single lwp.  Store
+     the stop status through the status pointer WSTAT.  OPTIONS is
+     passed to the waitpid call.  Return 0 if no event was found and
+     OPTIONS contains WNOHANG.  Return -1 if no unwaited-for children
+     was found.  Return the PID of the stopped child otherwise.  */
+  int wait_for_event_filtered (ptid_t wait_ptid, ptid_t filter_ptid,
+			       int *wstatp, int options);
+
+  /* Wait for an event from child(ren) PTID.  PTIDs can be:
+     minus_one_ptid, to specify any child; a pid PTID, specifying all
+     lwps of a thread group; or a PTID representing a single lwp.  Store
+     the stop status through the status pointer WSTAT.  OPTIONS is
+     passed to the waitpid call.  Return 0 if no event was found and
+     OPTIONS contains WNOHANG.  Return -1 if no unwaited-for children
+     was found.  Return the PID of the stopped child otherwise.  */
+  int wait_for_event (ptid_t ptid, int *wstatp, int options);
+
+  /* Wait for all children to stop for the SIGSTOPs we just queued.  */
+  void wait_for_sigstop ();
+
+  /* Wait for process, returns status.  */
+  ptid_t wait_1 (ptid_t ptid, target_waitstatus *ourstatus,
+		 int target_options);
+
+  /* Stop all lwps that aren't stopped yet, except EXCEPT, if not NULL.
+     If SUSPEND, then also increase the suspend count of every LWP,
+     except EXCEPT.  */
+  void stop_all_lwps (int suspend, lwp_info *except);
+
+  /* Stopped LWPs that the client wanted to be running, that don't have
+     pending statuses, are set to run again, except for EXCEPT, if not
+     NULL.  This undoes a stop_all_lwps call.  */
+  void unstop_all_lwps (int unsuspend, lwp_info *except);
+
+  /* Start a step-over operation on LWP.  When LWP stopped at a
+     breakpoint, to make progress, we need to remove the breakpoint out
+     of the way.  If we let other threads run while we do that, they may
+     pass by the breakpoint location and miss hitting it.  To avoid
+     that, a step-over momentarily stops all threads while LWP is
+     single-stepped by either hardware or software while the breakpoint
+     is temporarily uninserted from the inferior.  When the single-step
+     finishes, we reinsert the breakpoint, and let all threads that are
+     supposed to be running, run again.  */
+  void start_step_over (lwp_info *lwp);
+
+  /* If there's a step over in progress, wait until all threads stop
+     (that is, until the stepping thread finishes its step), and
+     unsuspend all lwps.  The stepping thread ends with its status
+     pending, which is processed later when we get back to processing
+     events.  */
+  void complete_ongoing_step_over ();
+
+  /* Finish a step-over.  Reinsert the breakpoint we had uninserted in
+     start_step_over, if still there, and delete any single-step
+     breakpoints we've set, on non hardware single-step targets.
+     Return true if step over finished.  */
+  bool finish_step_over (lwp_info *lwp);
+
+  /* When we finish a step-over, set threads running again.  If there's
+     another thread that may need a step-over, now's the time to start
+     it.  Eventually, we'll move all threads past their breakpoints.  */
+  void proceed_all_lwps ();
+
+  /* The reason we resume in the caller, is because we want to be able
+     to pass lwp->status_pending as WSTAT, and we need to clear
+     status_pending_p before resuming, otherwise, resume_one_lwp
+     refuses to resume.  */
+  bool maybe_move_out_of_jump_pad (lwp_info *lwp, int *wstat);
+
+  /* Move THREAD out of the jump pad.  */
+  void move_out_of_jump_pad (thread_info *thread);
+
+  /* Call low_arch_setup on THREAD.  */
+  void arch_setup_thread (thread_info *thread);
+
+#ifdef HAVE_LINUX_USRREGS
+  /* Fetch one register.  */
+  void fetch_register (const usrregs_info *usrregs, regcache *regcache,
+		       int regno);
+
+  /* Store one register.  */
+  void store_register (const usrregs_info *usrregs, regcache *regcache,
+		       int regno);
+#endif
+
+  /* Fetch all registers, or just one, from the child process.
+     If REGNO is -1, do this for all registers, skipping any that are
+     assumed to have been retrieved by regsets_fetch_inferior_registers,
+     unless ALL is non-zero.
+     Otherwise, REGNO specifies which register (so we can save time).  */
+  void usr_fetch_inferior_registers (const regs_info *regs_info,
+				     regcache *regcache, int regno, int all);
+
+  /* Store our register values back into the inferior.
+     If REGNO is -1, do this for all registers, skipping any that are
+     assumed to have been saved by regsets_store_inferior_registers,
+     unless ALL is non-zero.
+     Otherwise, REGNO specifies which register (so we can save time).  */
+  void usr_store_inferior_registers (const regs_info *regs_info,
+				     regcache *regcache, int regno, int all);
+
+  /* Return the PC as read from the regcache of LWP, without any
+     adjustment.  */
+  CORE_ADDR get_pc (lwp_info *lwp);
+
+  /* Called when the LWP stopped for a signal/trap.  If it stopped for a
+     trap check what caused it (breakpoint, watchpoint, trace, etc.),
+     and save the result in the LWP's stop_reason field.  If it stopped
+     for a breakpoint, decrement the PC if necessary on the lwp's
+     architecture.  Returns true if we now have the LWP's stop PC.  */
+  bool save_stop_reason (lwp_info *lwp);
+
+  /* Resume execution of LWP.  If STEP is nonzero, single-step it.  If
+     SIGNAL is nonzero, give it that signal.  */
+  void resume_one_lwp_throw (lwp_info *lwp, int step, int signal,
+			     siginfo_t *info);
+
+  /* Like resume_one_lwp_throw, but no error is thrown if the LWP
+     disappears while we try to resume it.  */
+  void resume_one_lwp (lwp_info *lwp, int step, int signal, siginfo_t *info);
+
+  /* This function is called once per thread.  We check the thread's
+     last resume request, which will tell us whether to resume, step, or
+     leave the thread stopped.  Any signal the client requested to be
+     delivered has already been enqueued at this point.
+
+     If any thread that GDB wants running is stopped at an internal
+     breakpoint that needs stepping over, we start a step-over operation
+     on that particular thread, and leave all others stopped.  */
+  void proceed_one_lwp (thread_info *thread, lwp_info *except);
+
+  /* This function is called once per thread.  We check the thread's
+     resume request, which will tell us whether to resume, step, or
+     leave the thread stopped; and what signal, if any, it should be
+     sent.
+
+     For threads which we aren't explicitly told otherwise, we preserve
+     the stepping flag; this is used for stepping over gdbserver-placed
+     breakpoints.
+
+     If pending_flags was set in any thread, we queue any needed
+     signals, since we won't actually resume.  We already have a pending
+     event to report, so we don't need to preserve any step requests;
+     they should be re-issued if necessary.  */
+  void resume_one_thread (thread_info *thread, bool leave_all_stopped);
+
+  /* Return true if this lwp has an interesting status pending.  */
+  bool status_pending_p_callback (thread_info *thread, ptid_t ptid);
+
+  /* Resume LWPs that are currently stopped without any pending status
+     to report, but are resumed from the core's perspective.  */
+  void resume_stopped_resumed_lwps (thread_info *thread);
+
+  /* Unsuspend THREAD, except EXCEPT, and proceed.  */
+  void unsuspend_and_proceed_one_lwp (thread_info *thread, lwp_info *except);
+
+  /* Return true if this lwp still has an interesting status pending.
+     If not (e.g., it had stopped for a breakpoint that is gone), return
+     false.  */
+  bool thread_still_has_status_pending (thread_info *thread);
+
+  /* Return true if this lwp is to-be-resumed and has an interesting
+     status pending.  */
+  bool resume_status_pending (thread_info *thread);
+
+  /* Return true if this lwp that GDB wants running is stopped at an
+     internal breakpoint that we need to step over.  It assumes that
+     any required STOP_PC adjustment has already been propagated to
+     the inferior's regcache.  */
+  bool thread_needs_step_over (thread_info *thread);
+
+  /* Single step via hardware or software single step.
+     Return 1 if hardware single stepping, 0 if software single stepping
+     or can't single step.  */
+  int single_step (lwp_info* lwp);
+
+  /* Return true if THREAD is doing hardware single step.  */
+  bool maybe_hw_step (thread_info *thread);
+
+  /* Install breakpoints for software single stepping.  */
+  void install_software_single_step_breakpoints (lwp_info *lwp);
+
+  /* Fetch the possibly triggered data watchpoint info and store it in
+     CHILD.
+
+     On some archs, like x86, that use debug registers to set
+     watchpoints, it's possible that the way to know which watched
+     address trapped, is to check the register that is used to select
+     which address to watch.  Problem is, between setting the watchpoint
+     and reading back which data address trapped, the user may change
+     the set of watchpoints, and, as a consequence, GDB changes the
+     debug registers in the inferior.  To avoid reading back a stale
+     stopped-data-address when that happens, we cache in LP the fact
+     that a watchpoint trapped, and the corresponding data address, as
+     soon as we see CHILD stop with a SIGTRAP.  If GDB changes the debug
+     registers meanwhile, we have the cached data we can rely on.  */
+  bool check_stopped_by_watchpoint (lwp_info *child);
+
+  /* Convert a native/host siginfo object, into/from the siginfo in the
+     layout of the inferiors' architecture.  */
+  void siginfo_fixup (siginfo_t *siginfo, gdb_byte *inf_siginfo,
+		      int direction);
+
+  /* Add a process to the common process list, and set its private
+     data.  */
+  process_info *add_linux_process (int pid, int attached);
+
+  /* Add a new thread.  */
+  lwp_info *add_lwp (ptid_t ptid);
+
+  /* Delete a thread.  */
+  void delete_lwp (lwp_info *lwp);
+
+public: /* Make this public because it's used from outside.  */
+  /* Attach to an inferior process.  Returns 0 on success, ERRNO on
+     error.  */
+  int attach_lwp (ptid_t ptid);
+
+private: /* Back to private.  */
+  /* Detach from LWP.  */
+  void detach_one_lwp (lwp_info *lwp);
+
+  /* Detect zombie thread group leaders, and "exit" them.  We can't
+     reap their exits until all other threads in the group have
+     exited.  */
+  void check_zombie_leaders ();
+
+  /* Convenience function that is called when the kernel reports an exit
+     event.  This decides whether to report the event to GDB as a
+     process exit event, a thread exit event, or to suppress the
+     event.  */
+  ptid_t filter_exit_event (lwp_info *event_child,
+			    target_waitstatus *ourstatus);
+
+  /* Returns true if THREAD is stopped in a jump pad, and we can't
+     move it out, because we need to report the stop event to GDB.  For
+     example, if the user puts a breakpoint in the jump pad, it's
+     because she wants to debug it.  */
+  bool stuck_in_jump_pad (thread_info *thread);
+
+  /* Convenience wrapper.  Returns information about LWP's fast tracepoint
+     collection status.  */
+  fast_tpoint_collect_result linux_fast_tracepoint_collecting
+    (lwp_info *lwp, fast_tpoint_collect_status *status);
+
+  /* This function should only be called if LWP got a SYSCALL_SIGTRAP.
+     Fill *SYSNO with the syscall nr trapped.  */
+  void get_syscall_trapinfo (lwp_info *lwp, int *sysno);
+
+  /* Returns true if GDB is interested in the event_child syscall.
+     Only to be called when stopped reason is SYSCALL_SIGTRAP.  */
+  bool gdb_catch_this_syscall (lwp_info *event_child);
+
+protected:
+  /* The architecture-specific "low" methods are listed below.  */
+
+  /* Architecture-specific setup for the current thread.  */
+  virtual void low_arch_setup () = 0;
+
+  /* Return false if we can fetch/store the register, true if we cannot
+     fetch/store the register.  */
+  virtual bool low_cannot_fetch_register (int regno) = 0;
+
+  virtual bool low_cannot_store_register (int regno) = 0;
+
+  /* Hook to fetch a register in some non-standard way.  Used for
+     example by backends that have read-only registers with hardcoded
+     values (e.g., IA64's gr0/fr0/fr1).  Returns true if register
+     REGNO was supplied, false if not, and we should fallback to the
+     standard ptrace methods.  */
+  virtual bool low_fetch_register (regcache *regcache, int regno);
+
+  /* Return true if breakpoints are supported.  Such targets must
+     implement the GET_PC and SET_PC methods.  */
+  virtual bool low_supports_breakpoints ();
+
+  virtual CORE_ADDR low_get_pc (regcache *regcache);
+
+  virtual void low_set_pc (regcache *regcache, CORE_ADDR newpc);
+
+  /* Find the next possible PCs after the current instruction executes.
+     Targets that override this method should also override
+     'supports_software_single_step' to return true.  */
+  virtual std::vector<CORE_ADDR> low_get_next_pcs (regcache *regcache);
+
+  /* Return true if there is a breakpoint at PC.  */
+  virtual bool low_breakpoint_at (CORE_ADDR pc) = 0;
+
+  /* Breakpoint and watchpoint related functions.  See target.h for
+     comments.  */
+  virtual int low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+				int size, raw_breakpoint *bp);
+
+  virtual int low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+				int size, raw_breakpoint *bp);
+
+  virtual bool low_stopped_by_watchpoint ();
+
+  virtual CORE_ADDR low_stopped_data_address ();
+
+  /* Hooks to reformat register data for PEEKUSR/POKEUSR (in particular
+     for registers smaller than an xfer unit).  */
+  virtual void low_collect_ptrace_register (regcache *regcache, int regno,
+					    char *buf);
+
+  virtual void low_supply_ptrace_register (regcache *regcache, int regno,
+					   const char *buf);
+
+  /* Hook to convert from target format to ptrace format and back.
+     Returns true if any conversion was done; false otherwise.
+     If DIRECTION is 1, then copy from INF to NATIVE.
+     If DIRECTION is 0, copy from NATIVE to INF.  */
+  virtual bool low_siginfo_fixup (siginfo_t *native, gdb_byte *inf,
+				  int direction);
+
+  /* Hook to call when a new process is created or attached to.
+     If extra per-process architecture-specific data is needed,
+     allocate it here.  */
+  virtual arch_process_info *low_new_process ();
+
+  /* Hook to call when a process is being deleted.  If extra per-process
+     architecture-specific data is needed, delete it here.  */
+  virtual void low_delete_process (arch_process_info *info);
+
+  /* Hook to call when a new thread is detected.
+     If extra per-thread architecture-specific data is needed,
+     allocate it here.  */
+  virtual void low_new_thread (lwp_info *);
+
+  /* Hook to call when a thread is being deleted.  If extra per-thread
+     architecture-specific data is needed, delete it here.  */
+  virtual void low_delete_thread (arch_lwp_info *);
+
+  /* Hook to call, if any, when a new fork is attached.  */
+  virtual void low_new_fork (process_info *parent, process_info *child);
+
+  /* Hook to call prior to resuming a thread.  */
+  virtual void low_prepare_to_resume (lwp_info *lwp);
+
+  /* Fill ADDRP with the thread area address of LWPID.  Returns 0 on
+     success, -1 on failure.  */
+  virtual int low_get_thread_area (int lwpid, CORE_ADDR *addrp);
+
+  /* Returns true if the low target supports range stepping.  */
+  virtual bool low_supports_range_stepping ();
+
+  /* Return true if the target supports catch syscall.  Such targets
+     override the low_get_syscall_trapinfo method below.  */
+  virtual bool low_supports_catch_syscall ();
+
+  /* Fill *SYSNO with the syscall nr trapped.  Only to be called when
+     inferior is stopped due to SYSCALL_SIGTRAP.  */
+  virtual void low_get_syscall_trapinfo (regcache *regcache, int *sysno);
+
+  /* How many bytes the PC should be decremented after a break.  */
+  virtual int low_decr_pc_after_break ();
+};
+
+extern linux_process_target *the_linux_target;
+
+#define get_thread_lwp(thr) ((struct lwp_info *) (thread_target_data (thr)))
+#define get_lwp_thread(lwp) ((lwp)->thread)
+
+/* Information about a signal that is to be delivered to a thread.  */
+
+struct pending_signal
+{
+  pending_signal (int signal)
+    : signal {signal}
+  {};
+
+  int signal;
+  siginfo_t info;
+};
+
+/* This struct is recorded in the target_data field of struct thread_info.
+
+   On linux ``all_threads'' is keyed by the LWP ID, which we use as the
+   GDB protocol representation of the thread ID.  Threads also have
+   a "process ID" (poorly named) which is (presently) the same as the
+   LWP ID.
+
+   There is also ``all_processes'' is keyed by the "overall process ID",
+   which GNU/Linux calls tgid, "thread group ID".  */
+
+struct lwp_info
+{
+  /* Backlink to the parent object.  */
+  struct thread_info *thread;
+
+  /* If this flag is set, the next SIGSTOP will be ignored (the
+     process will be immediately resumed).  This means that either we
+     sent the SIGSTOP to it ourselves and got some other pending event
+     (so the SIGSTOP is still pending), or that we stopped the
+     inferior implicitly via PTRACE_ATTACH and have not waited for it
+     yet.  */
+  int stop_expected;
+
+  /* When this is true, we shall not try to resume this thread, even
+     if last_resume_kind isn't resume_stop.  */
+  int suspended;
+
+  /* If this flag is set, the lwp is known to be stopped right now (stop
+     event already received in a wait()).  */
+  int stopped;
+
+  /* Signal whether we are in a SYSCALL_ENTRY or
+     in a SYSCALL_RETURN event.
+     Values:
+     - TARGET_WAITKIND_SYSCALL_ENTRY
+     - TARGET_WAITKIND_SYSCALL_RETURN */
+  enum target_waitkind syscall_state;
+
+  /* When stopped is set, the last wait status recorded for this lwp.  */
+  int last_status;
+
+  /* If WAITSTATUS->KIND != TARGET_WAITKIND_IGNORE, the waitstatus for
+     this LWP's last event, to pass to GDB without any further
+     processing.  This is used to store extended ptrace event
+     information or exit status until it can be reported to GDB.  */
+  struct target_waitstatus waitstatus;
+
+  /* A pointer to the fork child/parent relative.  Valid only while
+     the parent fork event is not reported to higher layers.  Used to
+     avoid wildcard vCont actions resuming a fork child before GDB is
+     notified about the parent's fork event.  */
+  struct lwp_info *fork_relative;
+
+  /* When stopped is set, this is where the lwp last stopped, with
+     decr_pc_after_break already accounted for.  If the LWP is
+     running, this is the address at which the lwp was resumed.  */
+  CORE_ADDR stop_pc;
+
+  /* If this flag is set, STATUS_PENDING is a waitstatus that has not yet
+     been reported.  */
+  int status_pending_p;
+  int status_pending;
+
+  /* The reason the LWP last stopped, if we need to track it
+     (breakpoint, watchpoint, etc.)  */
+  enum target_stop_reason stop_reason;
+
+  /* On architectures where it is possible to know the data address of
+     a triggered watchpoint, STOPPED_DATA_ADDRESS is non-zero, and
+     contains such data address.  Only valid if STOPPED_BY_WATCHPOINT
+     is true.  */
+  CORE_ADDR stopped_data_address;
+
+  /* If this is non-zero, it is a breakpoint to be reinserted at our next
+     stop (SIGTRAP stops only).  */
+  CORE_ADDR bp_reinsert;
+
+  /* If this flag is set, the last continue operation at the ptrace
+     level on this process was a single-step.  */
+  int stepping;
+
+  /* Range to single step within.  This is a copy of the step range
+     passed along the last resume request.  See 'struct
+     thread_resume'.  */
+  CORE_ADDR step_range_start;	/* Inclusive */
+  CORE_ADDR step_range_end;	/* Exclusive */
+
+  /* If this flag is set, we need to set the event request flags the
+     next time we see this LWP stop.  */
+  int must_set_ptrace_flags;
+
+  /* A chain of signals that need to be delivered to this process.  */
+  std::list<pending_signal> pending_signals;
+
+  /* A link used when resuming.  It is initialized from the resume request,
+     and then processed and cleared in linux_resume_one_lwp.  */
+  struct thread_resume *resume;
+
+  /* Information bout this lwp's fast tracepoint collection status (is it
+     currently stopped in the jump pad, and if so, before or at/after the
+     relocated instruction).  Normally, we won't care about this, but we will
+     if a signal arrives to this lwp while it is collecting.  */
+  fast_tpoint_collect_result collecting_fast_tracepoint;
+
+  /* A chain of signals that need to be reported to GDB.  These were
+     deferred because the thread was doing a fast tracepoint collect
+     when they arrived.  */
+  std::list<pending_signal> pending_signals_to_report;
+
+  /* When collecting_fast_tracepoint is first found to be 1, we insert
+     a exit-jump-pad-quickly breakpoint.  This is it.  */
+  struct breakpoint *exit_jump_pad_bkpt;
+
+#ifdef USE_THREAD_DB
+  int thread_known;
+  /* The thread handle, used for e.g. TLS access.  Only valid if
+     THREAD_KNOWN is set.  */
+  td_thrhandle_t th;
+
+  /* The pthread_t handle.  */
+  thread_t thread_handle;
+#endif
+
+  /* Arch-specific additions.  */
+  struct arch_lwp_info *arch_private;
+};
+
+int linux_pid_exe_is_elf_64_file (int pid, unsigned int *machine);
+
+/* Attach to PTID.  Returns 0 on success, non-zero otherwise (an
+   errno).  */
+int linux_attach_lwp (ptid_t ptid);
+
+struct lwp_info *find_lwp_pid (ptid_t ptid);
+/* For linux_stop_lwp see nat/linux-nat.h.  */
+
+#ifdef HAVE_LINUX_REGSETS
+void initialize_regsets_info (struct regsets_info *regsets_info);
+#endif
+
+void initialize_low_arch (void);
+
+void linux_set_pc_32bit (struct regcache *regcache, CORE_ADDR pc);
+CORE_ADDR linux_get_pc_32bit (struct regcache *regcache);
+
+void linux_set_pc_64bit (struct regcache *regcache, CORE_ADDR pc);
+CORE_ADDR linux_get_pc_64bit (struct regcache *regcache);
+
+/* From thread-db.c  */
+int thread_db_init (void);
+void thread_db_detach (struct process_info *);
+void thread_db_mourn (struct process_info *);
+int thread_db_handle_monitor_command (char *);
+int thread_db_get_tls_address (struct thread_info *thread, CORE_ADDR offset,
+			       CORE_ADDR load_module, CORE_ADDR *address);
+int thread_db_look_up_one_symbol (const char *name, CORE_ADDR *addrp);
+
+/* Called from linux-low.c when a clone event is detected.  Upon entry,
+   both the clone and the parent should be stopped.  This function does
+   whatever is required have the clone under thread_db's control.  */
+
+void thread_db_notice_clone (struct thread_info *parent_thr, ptid_t child_ptid);
+
+bool thread_db_thread_handle (ptid_t ptid, gdb_byte **handle, int *handle_len);
+
+extern int have_ptrace_getregset;
+
+/* Search for the value with type MATCH in the auxv vector with
+   entries of length WORDSIZE bytes.  If found, store the value in
+   *VALP and return 1.  If not found or if there is an error, return
+   0.  */
+
+int linux_get_auxv (int wordsize, CORE_ADDR match,
+		    CORE_ADDR *valp);
+
+/* Fetch the AT_HWCAP entry from the auxv vector, where entries are length
+   WORDSIZE.  If no entry was found, return zero.  */
+
+CORE_ADDR linux_get_hwcap (int wordsize);
+
+/* Fetch the AT_HWCAP2 entry from the auxv vector, where entries are length
+   WORDSIZE.  If no entry was found, return zero.  */
+
+CORE_ADDR linux_get_hwcap2 (int wordsize);
+
+#endif /* GDBSERVER_LINUX_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-m68k-low.cc ./gdbserver/linux-m68k-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-m68k-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-m68k-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,270 @@
+/* GNU/Linux/m68k specific low level interface, for the remote server for GDB.
+   Copyright (C) 1995-2021 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 "server.h"
+#include "linux-low.h"
+
+/* Linux target op definitions for the m68k architecture.  */
+
+class m68k_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  int low_decr_pc_after_break () override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+};
+
+/* The singleton target ops object.  */
+
+static m68k_target the_m68k_target;
+
+bool
+m68k_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+m68k_target::low_get_pc (regcache *regcache)
+{
+  return linux_get_pc_32bit (regcache);
+}
+
+void
+m68k_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  linux_set_pc_32bit (regcache, pc);
+}
+
+int
+m68k_target::low_decr_pc_after_break ()
+{
+  return 2;
+}
+
+/* Defined in auto-generated file reg-m68k.c.  */
+void init_registers_m68k (void);
+extern const struct target_desc *tdesc_m68k;
+
+#ifdef HAVE_SYS_REG_H
+#include <sys/reg.h>
+#endif
+
+#define m68k_num_regs 29
+#define m68k_num_gregs 18
+
+/* This table must line up with REGISTER_NAMES in tm-m68k.h */
+static int m68k_regmap[] =
+{
+#ifdef PT_D0
+  PT_D0 * 4, PT_D1 * 4, PT_D2 * 4, PT_D3 * 4,
+  PT_D4 * 4, PT_D5 * 4, PT_D6 * 4, PT_D7 * 4,
+  PT_A0 * 4, PT_A1 * 4, PT_A2 * 4, PT_A3 * 4,
+  PT_A4 * 4, PT_A5 * 4, PT_A6 * 4, PT_USP * 4,
+  PT_SR * 4, PT_PC * 4,
+#else
+  14 * 4, 0 * 4, 1 * 4, 2 * 4, 3 * 4, 4 * 4, 5 * 4, 6 * 4,
+  7 * 4, 8 * 4, 9 * 4, 10 * 4, 11 * 4, 12 * 4, 13 * 4, 15 * 4,
+  17 * 4, 18 * 4,
+#endif
+#ifdef PT_FP0
+  PT_FP0 * 4, PT_FP1 * 4, PT_FP2 * 4, PT_FP3 * 4,
+  PT_FP4 * 4, PT_FP5 * 4, PT_FP6 * 4, PT_FP7 * 4,
+  PT_FPCR * 4, PT_FPSR * 4, PT_FPIAR * 4
+#else
+  21 * 4, 24 * 4, 27 * 4, 30 * 4, 33 * 4, 36 * 4,
+  39 * 4, 42 * 4, 45 * 4, 46 * 4, 47 * 4
+#endif
+};
+
+bool
+m68k_target::low_cannot_store_register (int regno)
+{
+  return (regno >= m68k_num_regs);
+}
+
+bool
+m68k_target::low_cannot_fetch_register (int regno)
+{
+  return (regno >= m68k_num_regs);
+}
+
+#ifdef HAVE_PTRACE_GETREGS
+#include <sys/procfs.h>
+#include "nat/gdb_ptrace.h"
+
+static void
+m68k_fill_gregset (struct regcache *regcache, void *buf)
+{
+  int i;
+
+  for (i = 0; i < m68k_num_gregs; i++)
+    collect_register (regcache, i, (char *) buf + m68k_regmap[i]);
+}
+
+static void
+m68k_store_gregset (struct regcache *regcache, const void *buf)
+{
+  int i;
+
+  for (i = 0; i < m68k_num_gregs; i++)
+    supply_register (regcache, i, (const char *) buf + m68k_regmap[i]);
+}
+
+static void
+m68k_fill_fpregset (struct regcache *regcache, void *buf)
+{
+  int i;
+
+  for (i = m68k_num_gregs; i < m68k_num_regs; i++)
+    collect_register (regcache, i, ((char *) buf
+			 + (m68k_regmap[i] - m68k_regmap[m68k_num_gregs])));
+}
+
+static void
+m68k_store_fpregset (struct regcache *regcache, const void *buf)
+{
+  int i;
+
+  for (i = m68k_num_gregs; i < m68k_num_regs; i++)
+    supply_register (regcache, i, ((const char *) buf
+			 + (m68k_regmap[i] - m68k_regmap[m68k_num_gregs])));
+}
+
+#endif /* HAVE_PTRACE_GETREGS */
+
+static struct regset_info m68k_regsets[] = {
+#ifdef HAVE_PTRACE_GETREGS
+  { PTRACE_GETREGS, PTRACE_SETREGS, 0, sizeof (elf_gregset_t),
+    GENERAL_REGS,
+    m68k_fill_gregset, m68k_store_gregset },
+  { PTRACE_GETFPREGS, PTRACE_SETFPREGS, 0, sizeof (elf_fpregset_t),
+    FP_REGS,
+    m68k_fill_fpregset, m68k_store_fpregset },
+#endif /* HAVE_PTRACE_GETREGS */
+  NULL_REGSET
+};
+
+static const gdb_byte m68k_breakpoint[] = { 0x4E, 0x4F };
+#define m68k_breakpoint_len 2
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+m68k_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = m68k_breakpoint_len;
+  return m68k_breakpoint;
+}
+
+bool
+m68k_target::low_breakpoint_at (CORE_ADDR pc)
+{
+  unsigned char c[2];
+
+  read_inferior_memory (pc, c, 2);
+  if (c[0] == 0x4E && c[1] == 0x4F)
+    return true;
+
+  return false;
+}
+
+#include <asm/ptrace.h>
+
+#ifdef PTRACE_GET_THREAD_AREA
+/* Fetch the thread-local storage pointer for libthread_db.  */
+
+ps_err_e
+ps_get_thread_area (struct ps_prochandle *ph,
+		    lwpid_t lwpid, int idx, void **base)
+{
+  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
+    return PS_ERR;
+
+  /* IDX is the bias from the thread pointer to the beginning of the
+     thread descriptor.  It has to be subtracted due to implementation
+     quirks in libthread_db.  */
+  *base = (void *) ((char *)*base - idx);
+
+  return PS_OK;
+}
+#endif /* PTRACE_GET_THREAD_AREA */
+
+static struct regsets_info m68k_regsets_info =
+  {
+    m68k_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct usrregs_info m68k_usrregs_info =
+  {
+    m68k_num_regs,
+    m68k_regmap,
+  };
+
+static struct regs_info myregs_info =
+  {
+    NULL, /* regset_bitmap */
+    &m68k_usrregs_info,
+    &m68k_regsets_info
+  };
+
+const regs_info *
+m68k_target::get_regs_info ()
+{
+  return &myregs_info;
+}
+
+void
+m68k_target::low_arch_setup ()
+{
+  current_process ()->tdesc = tdesc_m68k;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_m68k_target;
+
+void
+initialize_low_arch (void)
+{
+  /* Initialize the Linux target descriptions.  */
+  init_registers_m68k ();
+
+  initialize_regsets_info (&m68k_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-mips-low.cc ./gdbserver/linux-mips-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-mips-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-mips-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,1014 @@
+/* GNU/Linux/MIPS specific low level interface, for the remote server for GDB.
+   Copyright (C) 1995-2021 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 "server.h"
+#include "linux-low.h"
+
+#include "nat/gdb_ptrace.h"
+#include <endian.h>
+
+#include "nat/mips-linux-watch.h"
+#include "gdb_proc_service.h"
+
+/* Linux target op definitions for the MIPS architecture.  */
+
+class mips_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+  bool supports_z_point_type (char z_type) override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_fetch_register (regcache *regcache, int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+
+  int low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+			int size, raw_breakpoint *bp) override;
+
+  int low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+			int size, raw_breakpoint *bp) override;
+
+  bool low_stopped_by_watchpoint () override;
+
+  CORE_ADDR low_stopped_data_address () override;
+
+  void low_collect_ptrace_register (regcache *regcache, int regno,
+				    char *buf) override;
+
+  void low_supply_ptrace_register (regcache *regcache, int regno,
+				   const char *buf) override;
+
+  arch_process_info *low_new_process () override;
+
+  void low_delete_process (arch_process_info *info) override;
+
+  void low_new_thread (lwp_info *) override;
+
+  void low_delete_thread (arch_lwp_info *) override;
+
+  void low_new_fork (process_info *parent, process_info *child) override;
+
+  void low_prepare_to_resume (lwp_info *lwp) override;
+};
+
+/* The singleton target ops object.  */
+
+static mips_target the_mips_target;
+
+/* Defined in auto-generated file mips-linux.c.  */
+void init_registers_mips_linux (void);
+extern const struct target_desc *tdesc_mips_linux;
+
+/* Defined in auto-generated file mips-dsp-linux.c.  */
+void init_registers_mips_dsp_linux (void);
+extern const struct target_desc *tdesc_mips_dsp_linux;
+
+/* Defined in auto-generated file mips64-linux.c.  */
+void init_registers_mips64_linux (void);
+extern const struct target_desc *tdesc_mips64_linux;
+
+/* Defined in auto-generated file mips64-dsp-linux.c.  */
+void init_registers_mips64_dsp_linux (void);
+extern const struct target_desc *tdesc_mips64_dsp_linux;
+
+#ifdef __mips64
+#define tdesc_mips_linux tdesc_mips64_linux
+#define tdesc_mips_dsp_linux tdesc_mips64_dsp_linux
+#endif
+
+#ifndef PTRACE_GET_THREAD_AREA
+#define PTRACE_GET_THREAD_AREA 25
+#endif
+
+#ifdef HAVE_SYS_REG_H
+#include <sys/reg.h>
+#endif
+
+#define mips_num_regs 73
+#define mips_dsp_num_regs 80
+
+#include <asm/ptrace.h>
+
+#ifndef DSP_BASE
+#define DSP_BASE 71
+#define DSP_CONTROL 77
+#endif
+
+union mips_register
+{
+  unsigned char buf[8];
+
+  /* Deliberately signed, for proper sign extension.  */
+  int reg32;
+  long long reg64;
+};
+
+/* Return the ptrace ``address'' of register REGNO. */
+
+#define mips_base_regs							\
+  -1,  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,					\
+									\
+  -1, MMLO, MMHI, BADVADDR, CAUSE, PC,					\
+									\
+  FPR_BASE,      FPR_BASE + 1,  FPR_BASE + 2,  FPR_BASE + 3,		\
+  FPR_BASE + 4,  FPR_BASE + 5,  FPR_BASE + 6,  FPR_BASE + 7,		\
+  FPR_BASE + 8,  FPR_BASE + 9,  FPR_BASE + 10, FPR_BASE + 11,		\
+  FPR_BASE + 12, FPR_BASE + 13, FPR_BASE + 14, FPR_BASE + 15,		\
+  FPR_BASE + 16, FPR_BASE + 17, FPR_BASE + 18, FPR_BASE + 19,		\
+  FPR_BASE + 20, FPR_BASE + 21, FPR_BASE + 22, FPR_BASE + 23,		\
+  FPR_BASE + 24, FPR_BASE + 25, FPR_BASE + 26, FPR_BASE + 27,		\
+  FPR_BASE + 28, FPR_BASE + 29, FPR_BASE + 30, FPR_BASE + 31,		\
+  FPC_CSR, FPC_EIR
+
+#define mips_dsp_regs							\
+  DSP_BASE,      DSP_BASE + 1,  DSP_BASE + 2,  DSP_BASE + 3,		\
+  DSP_BASE + 4,  DSP_BASE + 5,						\
+  DSP_CONTROL
+
+static int mips_regmap[mips_num_regs] = {
+  mips_base_regs,
+  0
+};
+
+static int mips_dsp_regmap[mips_dsp_num_regs] = {
+  mips_base_regs,
+  mips_dsp_regs,
+  0
+};
+
+/* DSP registers are not in any regset and can only be accessed
+   individually.  */
+
+static unsigned char mips_dsp_regset_bitmap[(mips_dsp_num_regs + 7) / 8] = {
+  0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x80
+};
+
+static int have_dsp = -1;
+
+/* Try peeking at an arbitrarily chosen DSP register and pick the available
+   user register set accordingly.  */
+
+static const struct target_desc *
+mips_read_description (void)
+{
+  if (have_dsp < 0)
+    {
+      int pid = lwpid_of (current_thread);
+
+      errno = 0;
+      ptrace (PTRACE_PEEKUSER, pid, DSP_CONTROL, 0);
+      switch (errno)
+	{
+	case 0:
+	  have_dsp = 1;
+	  break;
+	case EIO:
+	  have_dsp = 0;
+	  break;
+	default:
+	  perror_with_name ("ptrace");
+	  break;
+	}
+    }
+
+  return have_dsp ? tdesc_mips_dsp_linux : tdesc_mips_linux;
+}
+
+void
+mips_target::low_arch_setup ()
+{
+  current_process ()->tdesc = mips_read_description ();
+}
+
+/* Per-process arch-specific data we want to keep.  */
+
+struct arch_process_info
+{
+  /* -1 if the kernel and/or CPU do not support watch registers.
+      1 if watch_readback is valid and we can read style, num_valid
+	and the masks.
+      0 if we need to read the watch_readback.  */
+
+  int watch_readback_valid;
+
+  /* Cached watch register read values.  */
+
+  struct pt_watch_regs watch_readback;
+
+  /* Current watchpoint requests for this process.  */
+
+  struct mips_watchpoint *current_watches;
+
+  /* The current set of watch register values for writing the
+     registers.  */
+
+  struct pt_watch_regs watch_mirror;
+};
+
+/* Per-thread arch-specific data we want to keep.  */
+
+struct arch_lwp_info
+{
+  /* Non-zero if our copy differs from what's recorded in the thread.  */
+  int watch_registers_changed;
+};
+
+/* From mips-linux-nat.c.  */
+
+/* Pseudo registers can not be read.  ptrace does not provide a way to
+   read (or set) PS_REGNUM, and there's no point in reading or setting
+   ZERO_REGNUM, it's always 0.  We also can not set BADVADDR, CAUSE,
+   or FCRIR via ptrace().  */
+
+bool
+mips_target::low_cannot_fetch_register (int regno)
+{
+  const struct target_desc *tdesc;
+
+  if (get_regs_info ()->usrregs->regmap[regno] == -1)
+    return true;
+
+  tdesc = current_process ()->tdesc;
+
+  /* On n32 we can't access 64-bit registers via PTRACE_PEEKUSR.  */
+  if (register_size (tdesc, regno) > sizeof (PTRACE_XFER_TYPE))
+    return true;
+
+  if (find_regno (tdesc, "r0") == regno)
+    return true;
+
+  return false;
+}
+
+bool
+mips_target::low_cannot_store_register (int regno)
+{
+  const struct target_desc *tdesc;
+
+  if (get_regs_info ()->usrregs->regmap[regno] == -1)
+    return true;
+
+  tdesc = current_process ()->tdesc;
+
+  /* On n32 we can't access 64-bit registers via PTRACE_POKEUSR.  */
+  if (register_size (tdesc, regno) > sizeof (PTRACE_XFER_TYPE))
+    return true;
+
+  if (find_regno (tdesc, "r0") == regno)
+    return true;
+
+  if (find_regno (tdesc, "cause") == regno)
+    return true;
+
+  if (find_regno (tdesc, "badvaddr") == regno)
+    return true;
+
+  if (find_regno (tdesc, "fir") == regno)
+    return true;
+
+  return false;
+}
+
+bool
+mips_target::low_fetch_register (regcache *regcache, int regno)
+{
+  const struct target_desc *tdesc = current_process ()->tdesc;
+
+  if (find_regno (tdesc, "r0") == regno)
+    {
+      supply_register_zeroed (regcache, regno);
+      return true;
+    }
+
+  return false;
+}
+
+bool
+mips_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+mips_target::low_get_pc (regcache *regcache)
+{
+  union mips_register pc;
+  collect_register_by_name (regcache, "pc", pc.buf);
+  return register_size (regcache->tdesc, 0) == 4 ? pc.reg32 : pc.reg64;
+}
+
+void
+mips_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  union mips_register newpc;
+  if (register_size (regcache->tdesc, 0) == 4)
+    newpc.reg32 = pc;
+  else
+    newpc.reg64 = pc;
+
+  supply_register_by_name (regcache, "pc", newpc.buf);
+}
+
+/* Correct in either endianness.  */
+static const unsigned int mips_breakpoint = 0x0005000d;
+#define mips_breakpoint_len 4
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+mips_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = mips_breakpoint_len;
+  return (const gdb_byte *) &mips_breakpoint;
+}
+
+bool
+mips_target::low_breakpoint_at (CORE_ADDR where)
+{
+  unsigned int insn;
+
+  read_memory (where, (unsigned char *) &insn, 4);
+  if (insn == mips_breakpoint)
+    return true;
+
+  /* If necessary, recognize more trap instructions here.  GDB only uses the
+     one.  */
+  return false;
+}
+
+/* Mark the watch registers of lwp, represented by ENTRY, as changed.  */
+
+static void
+update_watch_registers_callback (thread_info *thread)
+{
+  struct lwp_info *lwp = get_thread_lwp (thread);
+
+  /* The actual update is done later just before resuming the lwp,
+     we just mark that the registers need updating.  */
+  lwp->arch_private->watch_registers_changed = 1;
+
+  /* If the lwp isn't stopped, force it to momentarily pause, so
+     we can update its watch registers.  */
+  if (!lwp->stopped)
+    linux_stop_lwp (lwp);
+}
+
+/* This is the implementation of linux target ops method
+   low_new_process.  */
+
+arch_process_info *
+mips_target::low_new_process ()
+{
+  struct arch_process_info *info = XCNEW (struct arch_process_info);
+
+  return info;
+}
+
+/* This is the implementation of linux target ops method
+   low_delete_process.  */
+
+void
+mips_target::low_delete_process (arch_process_info *info)
+{
+  xfree (info);
+}
+
+/* This is the implementation of linux target ops method low_new_thread.
+   Mark the watch registers as changed, so the threads' copies will
+   be updated.  */
+
+void
+mips_target::low_new_thread (lwp_info *lwp)
+{
+  struct arch_lwp_info *info = XCNEW (struct arch_lwp_info);
+
+  info->watch_registers_changed = 1;
+
+  lwp->arch_private = info;
+}
+
+/* Function to call when a thread is being deleted.  */
+
+void
+mips_target::low_delete_thread (arch_lwp_info *arch_lwp)
+{
+  xfree (arch_lwp);
+}
+
+/* Create a new mips_watchpoint and add it to the list.  */
+
+static void
+mips_add_watchpoint (struct arch_process_info *priv, CORE_ADDR addr, int len,
+		     enum target_hw_bp_type watch_type)
+{
+  struct mips_watchpoint *new_watch;
+  struct mips_watchpoint **pw;
+
+  new_watch = XNEW (struct mips_watchpoint);
+  new_watch->addr = addr;
+  new_watch->len = len;
+  new_watch->type = watch_type;
+  new_watch->next = NULL;
+
+  pw = &priv->current_watches;
+  while (*pw != NULL)
+    pw = &(*pw)->next;
+  *pw = new_watch;
+}
+
+/* Hook to call when a new fork is attached.  */
+
+void
+mips_target::low_new_fork (process_info *parent,
+			   process_info *child)
+{
+  struct arch_process_info *parent_private;
+  struct arch_process_info *child_private;
+  struct mips_watchpoint *wp;
+
+  /* These are allocated by linux_add_process.  */
+  gdb_assert (parent->priv != NULL
+	      && parent->priv->arch_private != NULL);
+  gdb_assert (child->priv != NULL
+	      && child->priv->arch_private != NULL);
+
+  /* Linux kernel before 2.6.33 commit
+     72f674d203cd230426437cdcf7dd6f681dad8b0d
+     will inherit hardware debug registers from parent
+     on fork/vfork/clone.  Newer Linux kernels create such tasks with
+     zeroed debug registers.
+
+     GDB core assumes the child inherits the watchpoints/hw
+     breakpoints of the parent, and will remove them all from the
+     forked off process.  Copy the debug registers mirrors into the
+     new process so that all breakpoints and watchpoints can be
+     removed together.  The debug registers mirror will become zeroed
+     in the end before detaching the forked off process, thus making
+     this compatible with older Linux kernels too.  */
+
+  parent_private = parent->priv->arch_private;
+  child_private = child->priv->arch_private;
+
+  child_private->watch_readback_valid = parent_private->watch_readback_valid;
+  child_private->watch_readback = parent_private->watch_readback;
+
+  for (wp = parent_private->current_watches; wp != NULL; wp = wp->next)
+    mips_add_watchpoint (child_private, wp->addr, wp->len, wp->type);
+
+  child_private->watch_mirror = parent_private->watch_mirror;
+}
+/* This is the implementation of linux target ops method
+   low_prepare_to_resume.  If the watch regs have changed, update the
+   thread's copies.  */
+
+void
+mips_target::low_prepare_to_resume (lwp_info *lwp)
+{
+  ptid_t ptid = ptid_of (get_lwp_thread (lwp));
+  struct process_info *proc = find_process_pid (ptid.pid ());
+  struct arch_process_info *priv = proc->priv->arch_private;
+
+  if (lwp->arch_private->watch_registers_changed)
+    {
+      /* Only update the watch registers if we have set or unset a
+	 watchpoint already.  */
+      if (mips_linux_watch_get_num_valid (&priv->watch_mirror) > 0)
+	{
+	  /* Write the mirrored watch register values.  */
+	  int tid = ptid.lwp ();
+
+	  if (-1 == ptrace (PTRACE_SET_WATCH_REGS, tid,
+			    &priv->watch_mirror, NULL))
+	    perror_with_name ("Couldn't write watch register");
+	}
+
+      lwp->arch_private->watch_registers_changed = 0;
+    }
+}
+
+bool
+mips_target::supports_z_point_type (char z_type)
+{
+  switch (z_type)
+    {
+    case Z_PACKET_WRITE_WP:
+    case Z_PACKET_READ_WP:
+    case Z_PACKET_ACCESS_WP:
+      return true;
+    default:
+      return false;
+    }
+}
+
+/* This is the implementation of linux target ops method
+   low_insert_point.  */
+
+int
+mips_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+			       int len, raw_breakpoint *bp)
+{
+  struct process_info *proc = current_process ();
+  struct arch_process_info *priv = proc->priv->arch_private;
+  struct pt_watch_regs regs;
+  long lwpid;
+  enum target_hw_bp_type watch_type;
+  uint32_t irw;
+
+  lwpid = lwpid_of (current_thread);
+  if (!mips_linux_read_watch_registers (lwpid,
+					&priv->watch_readback,
+					&priv->watch_readback_valid,
+					0))
+    return -1;
+
+  if (len <= 0)
+    return -1;
+
+  regs = priv->watch_readback;
+  /* Add the current watches.  */
+  mips_linux_watch_populate_regs (priv->current_watches, &regs);
+
+  /* Now try to add the new watch.  */
+  watch_type = raw_bkpt_type_to_target_hw_bp_type (type);
+  irw = mips_linux_watch_type_to_irw (watch_type);
+  if (!mips_linux_watch_try_one_watch (&regs, addr, len, irw))
+    return -1;
+
+  /* It fit.  Stick it on the end of the list.  */
+  mips_add_watchpoint (priv, addr, len, watch_type);
+
+  priv->watch_mirror = regs;
+
+  /* Only update the threads of this process.  */
+  for_each_thread (proc->pid, update_watch_registers_callback);
+
+  return 0;
+}
+
+/* This is the implementation of linux target ops method
+   low_remove_point.  */
+
+int
+mips_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+			       int len, raw_breakpoint *bp)
+{
+  struct process_info *proc = current_process ();
+  struct arch_process_info *priv = proc->priv->arch_private;
+
+  int deleted_one;
+  enum target_hw_bp_type watch_type;
+
+  struct mips_watchpoint **pw;
+  struct mips_watchpoint *w;
+
+  /* Search for a known watch that matches.  Then unlink and free it.  */
+  watch_type = raw_bkpt_type_to_target_hw_bp_type (type);
+  deleted_one = 0;
+  pw = &priv->current_watches;
+  while ((w = *pw))
+    {
+      if (w->addr == addr && w->len == len && w->type == watch_type)
+	{
+	  *pw = w->next;
+	  free (w);
+	  deleted_one = 1;
+	  break;
+	}
+      pw = &(w->next);
+    }
+
+  if (!deleted_one)
+    return -1;  /* We don't know about it, fail doing nothing.  */
+
+  /* At this point watch_readback is known to be valid because we
+     could not have added the watch without reading it.  */
+  gdb_assert (priv->watch_readback_valid == 1);
+
+  priv->watch_mirror = priv->watch_readback;
+  mips_linux_watch_populate_regs (priv->current_watches,
+				  &priv->watch_mirror);
+
+  /* Only update the threads of this process.  */
+  for_each_thread (proc->pid, update_watch_registers_callback);
+
+  return 0;
+}
+
+/* This is the implementation of linux target ops method
+   low_stopped_by_watchpoint.  The watchhi R and W bits indicate
+   the watch register triggered. */
+
+bool
+mips_target::low_stopped_by_watchpoint ()
+{
+  struct process_info *proc = current_process ();
+  struct arch_process_info *priv = proc->priv->arch_private;
+  int n;
+  int num_valid;
+  long lwpid = lwpid_of (current_thread);
+
+  if (!mips_linux_read_watch_registers (lwpid,
+					&priv->watch_readback,
+					&priv->watch_readback_valid,
+					1))
+    return 0;
+
+  num_valid = mips_linux_watch_get_num_valid (&priv->watch_readback);
+
+  for (n = 0; n < MAX_DEBUG_REGISTER && n < num_valid; n++)
+    if (mips_linux_watch_get_watchhi (&priv->watch_readback, n)
+	& (R_MASK | W_MASK))
+      return true;
+
+  return false;
+}
+
+/* This is the implementation of linux target ops method
+   low_stopped_data_address.  */
+
+CORE_ADDR
+mips_target::low_stopped_data_address ()
+{
+  struct process_info *proc = current_process ();
+  struct arch_process_info *priv = proc->priv->arch_private;
+  int n;
+  int num_valid;
+  long lwpid = lwpid_of (current_thread);
+
+  /* On MIPS we don't know the low order 3 bits of the data address.
+     GDB does not support remote targets that can't report the
+     watchpoint address.  So, make our best guess; return the starting
+     address of a watchpoint request which overlaps the one that
+     triggered.  */
+
+  if (!mips_linux_read_watch_registers (lwpid,
+					&priv->watch_readback,
+					&priv->watch_readback_valid,
+					0))
+    return 0;
+
+  num_valid = mips_linux_watch_get_num_valid (&priv->watch_readback);
+
+  for (n = 0; n < MAX_DEBUG_REGISTER && n < num_valid; n++)
+    if (mips_linux_watch_get_watchhi (&priv->watch_readback, n)
+	& (R_MASK | W_MASK))
+      {
+	CORE_ADDR t_low, t_hi;
+	int t_irw;
+	struct mips_watchpoint *watch;
+
+	t_low = mips_linux_watch_get_watchlo (&priv->watch_readback, n);
+	t_irw = t_low & IRW_MASK;
+	t_hi = (mips_linux_watch_get_watchhi (&priv->watch_readback, n)
+		| IRW_MASK);
+	t_low &= ~(CORE_ADDR)t_hi;
+
+	for (watch = priv->current_watches;
+	     watch != NULL;
+	     watch = watch->next)
+	  {
+	    CORE_ADDR addr = watch->addr;
+	    CORE_ADDR last_byte = addr + watch->len - 1;
+
+	    if ((t_irw & mips_linux_watch_type_to_irw (watch->type)) == 0)
+	      {
+		/* Different type.  */
+		continue;
+	      }
+	    /* Check for overlap of even a single byte.  */
+	    if (last_byte >= t_low && addr <= t_low + t_hi)
+	      return addr;
+	  }
+      }
+
+  /* Shouldn't happen.  */
+  return 0;
+}
+
+/* Fetch the thread-local storage pointer for libthread_db.  */
+
+ps_err_e
+ps_get_thread_area (struct ps_prochandle *ph,
+		    lwpid_t lwpid, int idx, void **base)
+{
+  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
+    return PS_ERR;
+
+  /* IDX is the bias from the thread pointer to the beginning of the
+     thread descriptor.  It has to be subtracted due to implementation
+     quirks in libthread_db.  */
+  *base = (void *) ((char *)*base - idx);
+
+  return PS_OK;
+}
+
+static void
+mips_collect_register (struct regcache *regcache,
+		       int use_64bit, int regno, union mips_register *reg)
+{
+  union mips_register tmp_reg;
+
+  if (use_64bit)
+    {
+      collect_register (regcache, regno, &tmp_reg.reg64);
+      *reg = tmp_reg;
+    }
+  else
+    {
+      collect_register (regcache, regno, &tmp_reg.reg32);
+      reg->reg64 = tmp_reg.reg32;
+    }
+}
+
+static void
+mips_supply_register (struct regcache *regcache,
+		      int use_64bit, int regno, const union mips_register *reg)
+{
+  int offset = 0;
+
+  /* For big-endian 32-bit targets, ignore the high four bytes of each
+     eight-byte slot.  */
+  if (__BYTE_ORDER == __BIG_ENDIAN && !use_64bit)
+    offset = 4;
+
+  supply_register (regcache, regno, reg->buf + offset);
+}
+
+#ifdef HAVE_PTRACE_GETREGS
+
+static void
+mips_collect_register_32bit (struct regcache *regcache,
+			     int use_64bit, int regno, unsigned char *buf)
+{
+  union mips_register tmp_reg;
+  int reg32;
+
+  mips_collect_register (regcache, use_64bit, regno, &tmp_reg);
+  reg32 = tmp_reg.reg64;
+  memcpy (buf, &reg32, 4);
+}
+
+static void
+mips_supply_register_32bit (struct regcache *regcache,
+			    int use_64bit, int regno, const unsigned char *buf)
+{
+  union mips_register tmp_reg;
+  int reg32;
+
+  memcpy (&reg32, buf, 4);
+  tmp_reg.reg64 = reg32;
+  mips_supply_register (regcache, use_64bit, regno, &tmp_reg);
+}
+
+static void
+mips_fill_gregset (struct regcache *regcache, void *buf)
+{
+  union mips_register *regset = (union mips_register *) buf;
+  int i, use_64bit;
+  const struct target_desc *tdesc = regcache->tdesc;
+
+  use_64bit = (register_size (tdesc, 0) == 8);
+
+  for (i = 1; i < 32; i++)
+    mips_collect_register (regcache, use_64bit, i, regset + i);
+
+  mips_collect_register (regcache, use_64bit,
+			 find_regno (tdesc, "lo"), regset + 32);
+  mips_collect_register (regcache, use_64bit,
+			 find_regno (tdesc, "hi"), regset + 33);
+  mips_collect_register (regcache, use_64bit,
+			 find_regno (tdesc, "pc"), regset + 34);
+  mips_collect_register (regcache, use_64bit,
+			 find_regno (tdesc, "badvaddr"), regset + 35);
+  mips_collect_register (regcache, use_64bit,
+			 find_regno (tdesc, "status"), regset + 36);
+  mips_collect_register (regcache, use_64bit,
+			 find_regno (tdesc, "cause"), regset + 37);
+
+  mips_collect_register (regcache, use_64bit,
+			 find_regno (tdesc, "restart"), regset + 0);
+}
+
+static void
+mips_store_gregset (struct regcache *regcache, const void *buf)
+{
+  const union mips_register *regset = (const union mips_register *) buf;
+  int i, use_64bit;
+
+  use_64bit = (register_size (regcache->tdesc, 0) == 8);
+
+  supply_register_by_name_zeroed (regcache, "r0");
+
+  for (i = 1; i < 32; i++)
+    mips_supply_register (regcache, use_64bit, i, regset + i);
+
+  mips_supply_register (regcache, use_64bit,
+			find_regno (regcache->tdesc, "lo"), regset + 32);
+  mips_supply_register (regcache, use_64bit,
+			find_regno (regcache->tdesc, "hi"), regset + 33);
+  mips_supply_register (regcache, use_64bit,
+			find_regno (regcache->tdesc, "pc"), regset + 34);
+  mips_supply_register (regcache, use_64bit,
+			find_regno (regcache->tdesc, "badvaddr"), regset + 35);
+  mips_supply_register (regcache, use_64bit,
+			find_regno (regcache->tdesc, "status"), regset + 36);
+  mips_supply_register (regcache, use_64bit,
+			find_regno (regcache->tdesc, "cause"), regset + 37);
+
+  mips_supply_register (regcache, use_64bit,
+			find_regno (regcache->tdesc, "restart"), regset + 0);
+}
+
+static void
+mips_fill_fpregset (struct regcache *regcache, void *buf)
+{
+  union mips_register *regset = (union mips_register *) buf;
+  int i, use_64bit, first_fp, big_endian;
+
+  use_64bit = (register_size (regcache->tdesc, 0) == 8);
+  first_fp = find_regno (regcache->tdesc, "f0");
+  big_endian = (__BYTE_ORDER == __BIG_ENDIAN);
+
+  /* See GDB for a discussion of this peculiar layout.  */
+  for (i = 0; i < 32; i++)
+    if (use_64bit)
+      collect_register (regcache, first_fp + i, regset[i].buf);
+    else
+      collect_register (regcache, first_fp + i,
+			regset[i & ~1].buf + 4 * (big_endian != (i & 1)));
+
+  mips_collect_register_32bit (regcache, use_64bit,
+			       find_regno (regcache->tdesc, "fcsr"), regset[32].buf);
+  mips_collect_register_32bit (regcache, use_64bit,
+			       find_regno (regcache->tdesc, "fir"),
+			       regset[32].buf + 4);
+}
+
+static void
+mips_store_fpregset (struct regcache *regcache, const void *buf)
+{
+  const union mips_register *regset = (const union mips_register *) buf;
+  int i, use_64bit, first_fp, big_endian;
+
+  use_64bit = (register_size (regcache->tdesc, 0) == 8);
+  first_fp = find_regno (regcache->tdesc, "f0");
+  big_endian = (__BYTE_ORDER == __BIG_ENDIAN);
+
+  /* See GDB for a discussion of this peculiar layout.  */
+  for (i = 0; i < 32; i++)
+    if (use_64bit)
+      supply_register (regcache, first_fp + i, regset[i].buf);
+    else
+      supply_register (regcache, first_fp + i,
+		       regset[i & ~1].buf + 4 * (big_endian != (i & 1)));
+
+  mips_supply_register_32bit (regcache, use_64bit,
+			      find_regno (regcache->tdesc, "fcsr"),
+			      regset[32].buf);
+  mips_supply_register_32bit (regcache, use_64bit,
+			      find_regno (regcache->tdesc, "fir"),
+			      regset[32].buf + 4);
+}
+#endif /* HAVE_PTRACE_GETREGS */
+
+/* Take care of 32-bit registers with 64-bit ptrace, POKEUSER side.  */
+
+void
+mips_target::low_collect_ptrace_register (regcache *regcache, int regno,
+					  char *buf)
+{
+  int use_64bit = sizeof (PTRACE_XFER_TYPE) == 8;
+
+  if (use_64bit && register_size (regcache->tdesc, regno) == 4)
+    {
+      union mips_register reg;
+
+      mips_collect_register (regcache, 0, regno, &reg);
+      memcpy (buf, &reg, sizeof (reg));
+    }
+  else
+    collect_register (regcache, regno, buf);
+}
+
+/* Take care of 32-bit registers with 64-bit ptrace, PEEKUSER side.  */
+
+void
+mips_target::low_supply_ptrace_register (regcache *regcache, int regno,
+					 const char *buf)
+{
+  int use_64bit = sizeof (PTRACE_XFER_TYPE) == 8;
+
+  if (use_64bit && register_size (regcache->tdesc, regno) == 4)
+    {
+      union mips_register reg;
+
+      memcpy (&reg, buf, sizeof (reg));
+      mips_supply_register (regcache, 0, regno, &reg);
+    }
+  else
+    supply_register (regcache, regno, buf);
+}
+
+static struct regset_info mips_regsets[] = {
+#ifdef HAVE_PTRACE_GETREGS
+  { PTRACE_GETREGS, PTRACE_SETREGS, 0, 38 * 8, GENERAL_REGS,
+    mips_fill_gregset, mips_store_gregset },
+  { PTRACE_GETFPREGS, PTRACE_SETFPREGS, 0, 33 * 8, FP_REGS,
+    mips_fill_fpregset, mips_store_fpregset },
+#endif /* HAVE_PTRACE_GETREGS */
+  NULL_REGSET
+};
+
+static struct regsets_info mips_regsets_info =
+  {
+    mips_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct usrregs_info mips_dsp_usrregs_info =
+  {
+    mips_dsp_num_regs,
+    mips_dsp_regmap,
+  };
+
+static struct usrregs_info mips_usrregs_info =
+  {
+    mips_num_regs,
+    mips_regmap,
+  };
+
+static struct regs_info dsp_regs_info =
+  {
+    mips_dsp_regset_bitmap,
+    &mips_dsp_usrregs_info,
+    &mips_regsets_info
+  };
+
+static struct regs_info myregs_info =
+  {
+    NULL, /* regset_bitmap */
+    &mips_usrregs_info,
+    &mips_regsets_info
+  };
+
+const regs_info *
+mips_target::get_regs_info ()
+{
+  if (have_dsp)
+    return &dsp_regs_info;
+  else
+    return &myregs_info;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_mips_target;
+
+void
+initialize_low_arch (void)
+{
+  /* Initialize the Linux target descriptions.  */
+  init_registers_mips_linux ();
+  init_registers_mips_dsp_linux ();
+  init_registers_mips64_linux ();
+  init_registers_mips64_dsp_linux ();
+
+  initialize_regsets_info (&mips_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-nios2-low.cc ./gdbserver/linux-nios2-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-nios2-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-nios2-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,290 @@
+/* GNU/Linux/Nios II specific low level interface, for the remote server for
+   GDB.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
+
+   Contributed by Mentor Graphics, 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 "server.h"
+#include "linux-low.h"
+#include "elf/common.h"
+#include "nat/gdb_ptrace.h"
+#include <endian.h>
+#include "gdb_proc_service.h"
+#include <asm/ptrace.h>
+
+#ifndef PTRACE_GET_THREAD_AREA
+#define PTRACE_GET_THREAD_AREA 25
+#endif
+
+/* Linux target op definitions for the NIOS II architecture.  */
+
+class nios2_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+};
+
+/* The singleton target ops object.  */
+
+static nios2_target the_nios2_target;
+
+bool
+nios2_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+nios2_target::low_get_pc (regcache *regcache)
+{
+  return linux_get_pc_32bit (regcache);
+}
+
+void
+nios2_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  linux_set_pc_32bit (regcache, pc);
+}
+
+/* The following definition must agree with the number of registers
+   defined in "struct user_regs" in GLIBC
+   (sysdeps/unix/sysv/linux/nios2/sys/user.h), and also with
+   NIOS2_NUM_REGS in GDB proper.  */
+
+#define nios2_num_regs 49
+
+/* Defined in auto-generated file nios2-linux.c.  */
+
+void init_registers_nios2_linux (void);
+extern const struct target_desc *tdesc_nios2_linux;
+
+/* This union is used to convert between int and byte buffer
+   representations of register contents.  */
+
+union nios2_register
+{
+  unsigned char buf[4];
+  int reg32;
+};
+
+/* Return the ptrace ``address'' of register REGNO. */
+
+static int nios2_regmap[] = {
+  -1,  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,
+  0
+};
+
+/* Implement the low_arch_setup linux target ops method.  */
+
+void
+nios2_target::low_arch_setup ()
+{
+  current_process ()->tdesc = tdesc_nios2_linux;
+}
+
+/* Implement the low_cannot_fetch_register linux target ops method.  */
+
+bool
+nios2_target::low_cannot_fetch_register (int regno)
+{
+  return (nios2_regmap[regno] == -1);
+}
+
+/* Implement the low_cannot_store_register linux target ops method.  */
+
+bool
+nios2_target::low_cannot_store_register (int regno)
+{
+  return (nios2_regmap[regno] == -1);
+}
+
+/* Breakpoint support.  Also see comments on nios2_breakpoint_from_pc
+   in nios2-tdep.c.  */
+
+#if defined(__nios2_arch__) && __nios2_arch__ == 2
+#define NIOS2_BREAKPOINT 0xb7fd0020
+#define CDX_BREAKPOINT 0xd7c9
+#else
+#define NIOS2_BREAKPOINT 0x003b6ffa
+#endif
+
+/* We only register the 4-byte breakpoint, even on R2 targets which also
+   support 2-byte breakpoints.  Since there is no supports_z_point_type
+   function provided, gdbserver never inserts software breakpoints itself
+   and instead relies on GDB to insert the breakpoint of the correct length
+   via a memory write.  */
+static const unsigned int nios2_breakpoint = NIOS2_BREAKPOINT;
+#define nios2_breakpoint_len 4
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+nios2_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = nios2_breakpoint_len;
+  return (const gdb_byte *) &nios2_breakpoint;
+}
+
+/* Implement the low_breakpoint_at linux target ops method.  */
+
+bool
+nios2_target::low_breakpoint_at (CORE_ADDR where)
+{
+  unsigned int insn;
+
+  /* For R2, first check for the 2-byte CDX trap.n breakpoint encoding.  */
+#if defined(__nios2_arch__) && __nios2_arch__ == 2
+  read_memory (where, (unsigned char *) &insn, 2);
+  if (insn == CDX_BREAKPOINT)
+    return true;
+#endif
+
+  read_memory (where, (unsigned char *) &insn, 4);
+  if (insn == nios2_breakpoint)
+    return true;
+  return false;
+}
+
+/* Fetch the thread-local storage pointer for libthread_db.  */
+
+ps_err_e
+ps_get_thread_area (struct ps_prochandle *ph,
+                    lwpid_t lwpid, int idx, void **base)
+{
+  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
+    return PS_ERR;
+
+  /* IDX is the bias from the thread pointer to the beginning of the
+     thread descriptor.  It has to be subtracted due to implementation
+     quirks in libthread_db.  */
+  *base = (void *) ((char *) *base - idx);
+
+  return PS_OK;
+}
+
+/* Helper functions to collect/supply a single register REGNO.  */
+
+static void
+nios2_collect_register (struct regcache *regcache, int regno,
+			union nios2_register *reg)
+{
+  union nios2_register tmp_reg;
+
+  collect_register (regcache, regno, &tmp_reg.reg32);
+  reg->reg32 = tmp_reg.reg32;
+}
+
+static void
+nios2_supply_register (struct regcache *regcache, int regno,
+		       const union nios2_register *reg)
+{
+  supply_register (regcache, regno, reg->buf);
+}
+
+/* We have only a single register set on Nios II.  */
+
+static void
+nios2_fill_gregset (struct regcache *regcache, void *buf)
+{
+  union nios2_register *regset = (union nios2_register *) buf;
+  int i;
+
+  for (i = 1; i < nios2_num_regs; i++)
+    nios2_collect_register (regcache, i, regset + i);
+}
+
+static void
+nios2_store_gregset (struct regcache *regcache, const void *buf)
+{
+  const union nios2_register *regset = (union nios2_register *) buf;
+  int i;
+
+  for (i = 0; i < nios2_num_regs; i++)
+    nios2_supply_register (regcache, i, regset + i);
+}
+
+static struct regset_info nios2_regsets[] =
+{
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
+    nios2_num_regs * 4, GENERAL_REGS,
+    nios2_fill_gregset, nios2_store_gregset },
+  NULL_REGSET
+};
+
+static struct regsets_info nios2_regsets_info =
+  {
+    nios2_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct usrregs_info nios2_usrregs_info =
+  {
+    nios2_num_regs,
+    nios2_regmap,
+  };
+
+static struct regs_info myregs_info =
+  {
+    NULL, /* regset_bitmap */
+    &nios2_usrregs_info,
+    &nios2_regsets_info
+  };
+
+const regs_info *
+nios2_target::get_regs_info ()
+{
+  return &myregs_info;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_nios2_target;
+
+void
+initialize_low_arch (void)
+{
+  init_registers_nios2_linux ();
+
+  initialize_regsets_info (&nios2_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-ppc-ipa.cc ./gdbserver/linux-ppc-ipa.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-ppc-ipa.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-ppc-ipa.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,259 @@
+/* GNU/Linux/PowerPC specific low level interface, for the in-process
+   agent library for GDB.
+
+   Copyright (C) 2016-2021 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 "server.h"
+#include <sys/mman.h>
+#include "tracepoint.h"
+#include "arch/ppc-linux-tdesc.h"
+#include "linux-ppc-tdesc-init.h"
+#include <elf.h>
+#ifdef HAVE_GETAUXVAL
+#include <sys/auxv.h>
+#endif
+
+/* These macros define the position of registers in the buffer collected
+   by the fast tracepoint jump pad.  */
+#define FT_CR_R0	0
+#define FT_CR_CR	32
+#define FT_CR_XER	33
+#define FT_CR_LR	34
+#define FT_CR_CTR	35
+#define FT_CR_PC	36
+#define FT_CR_GPR(n)	(FT_CR_R0 + (n))
+
+static const int ppc_ft_collect_regmap[] = {
+  /* GPRs */
+  FT_CR_GPR (0), FT_CR_GPR (1), FT_CR_GPR (2),
+  FT_CR_GPR (3), FT_CR_GPR (4), FT_CR_GPR (5),
+  FT_CR_GPR (6), FT_CR_GPR (7), FT_CR_GPR (8),
+  FT_CR_GPR (9), FT_CR_GPR (10), FT_CR_GPR (11),
+  FT_CR_GPR (12), FT_CR_GPR (13), FT_CR_GPR (14),
+  FT_CR_GPR (15), FT_CR_GPR (16), FT_CR_GPR (17),
+  FT_CR_GPR (18), FT_CR_GPR (19), FT_CR_GPR (20),
+  FT_CR_GPR (21), FT_CR_GPR (22), FT_CR_GPR (23),
+  FT_CR_GPR (24), FT_CR_GPR (25), FT_CR_GPR (26),
+  FT_CR_GPR (27), FT_CR_GPR (28), FT_CR_GPR (29),
+  FT_CR_GPR (30), FT_CR_GPR (31),
+  /* FPRs - not collected.  */
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  FT_CR_PC, /* PC */
+  -1, /* MSR */
+  FT_CR_CR, /* CR */
+  FT_CR_LR, /* LR */
+  FT_CR_CTR, /* CTR */
+  FT_CR_XER, /* XER */
+  -1, /* FPSCR */
+};
+
+#define PPC_NUM_FT_COLLECT_GREGS \
+  (sizeof (ppc_ft_collect_regmap) / sizeof(ppc_ft_collect_regmap[0]))
+
+/* Supply registers collected by the fast tracepoint jump pad.
+   BUF is the second argument we pass to gdb_collect in jump pad.  */
+
+void
+supply_fast_tracepoint_registers (struct regcache *regcache,
+				  const unsigned char *buf)
+{
+  int i;
+
+  for (i = 0; i < PPC_NUM_FT_COLLECT_GREGS; i++)
+    {
+      if (ppc_ft_collect_regmap[i] == -1)
+	continue;
+      supply_register (regcache, i,
+		       ((char *) buf)
+			+ ppc_ft_collect_regmap[i] * sizeof (long));
+    }
+}
+
+/* Return the value of register REGNUM.  RAW_REGS is collected buffer
+   by jump pad.  This function is called by emit_reg.  */
+
+ULONGEST
+get_raw_reg (const unsigned char *raw_regs, int regnum)
+{
+  if (regnum >= PPC_NUM_FT_COLLECT_GREGS)
+    return 0;
+  if (ppc_ft_collect_regmap[regnum] == -1)
+    return 0;
+
+  return *(unsigned long *) (raw_regs
+			     + ppc_ft_collect_regmap[regnum] * sizeof (long));
+}
+
+/* Allocate buffer for the jump pads.  The branch instruction has a reach
+   of +/- 32MiB, and the executable is loaded at 0x10000000 (256MiB).
+
+   64-bit: To maximize the area of executable that can use tracepoints,
+   try allocating at 0x10000000 - size initially, decreasing until we hit
+   a free area.
+
+   32-bit: ld.so loads dynamic libraries right below the executable, so
+   we cannot depend on that area (dynamic libraries can be quite large).
+   Instead, aim right after the executable - at sbrk(0).  This will
+   cause future brk to fail, and malloc will fallback to mmap.  */
+
+void *
+alloc_jump_pad_buffer (size_t size)
+{
+#ifdef __powerpc64__
+  uintptr_t addr;
+  uintptr_t exec_base = getauxval (AT_PHDR);
+  int pagesize;
+  void *res;
+
+  if (exec_base == 0)
+    exec_base = 0x10000000;
+
+  pagesize = sysconf (_SC_PAGE_SIZE);
+  if (pagesize == -1)
+    perror_with_name ("sysconf");
+
+  addr = exec_base - size;
+
+  /* size should already be page-aligned, but this can't hurt.  */
+  addr &= ~(pagesize - 1);
+
+  /* Search for a free area.  If we hit 0, we're out of luck.  */
+  for (; addr; addr -= pagesize)
+    {
+      /* No MAP_FIXED - we don't want to zap someone's mapping.  */
+      res = mmap ((void *) addr, size,
+		  PROT_READ | PROT_WRITE | PROT_EXEC,
+		  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+      /* If we got what we wanted, return.  */
+      if ((uintptr_t) res == addr)
+	return res;
+
+      /* If we got a mapping, but at a wrong address, undo it.  */
+      if (res != MAP_FAILED)
+	munmap (res, size);
+    }
+
+  return NULL;
+#else
+  void *target = sbrk (0);
+  void *res = mmap (target, size, PROT_READ | PROT_WRITE | PROT_EXEC,
+		    MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+  if (res == target)
+    return res;
+
+  if (res != MAP_FAILED)
+    munmap (res, size);
+
+  return NULL;
+#endif
+}
+
+/* Return target_desc to use for IPA, given the tdesc index passed by
+   gdbserver.  */
+
+const struct target_desc *
+get_ipa_tdesc (int idx)
+{
+  switch (idx)
+    {
+#ifdef __powerpc64__
+    case PPC_TDESC_BASE:
+      return tdesc_powerpc_64l;
+    case PPC_TDESC_ALTIVEC:
+      return tdesc_powerpc_altivec64l;
+    case PPC_TDESC_VSX:
+      return tdesc_powerpc_vsx64l;
+    case PPC_TDESC_ISA205:
+      return tdesc_powerpc_isa205_64l;
+    case PPC_TDESC_ISA205_ALTIVEC:
+      return tdesc_powerpc_isa205_altivec64l;
+    case PPC_TDESC_ISA205_VSX:
+      return tdesc_powerpc_isa205_vsx64l;
+    case PPC_TDESC_ISA205_PPR_DSCR_VSX:
+      return tdesc_powerpc_isa205_ppr_dscr_vsx64l;
+    case PPC_TDESC_ISA207_VSX:
+      return tdesc_powerpc_isa207_vsx64l;
+    case PPC_TDESC_ISA207_HTM_VSX:
+      return tdesc_powerpc_isa207_htm_vsx64l;
+#else
+    case PPC_TDESC_BASE:
+      return tdesc_powerpc_32l;
+    case PPC_TDESC_ALTIVEC:
+      return tdesc_powerpc_altivec32l;
+    case PPC_TDESC_VSX:
+      return tdesc_powerpc_vsx32l;
+    case PPC_TDESC_ISA205:
+      return tdesc_powerpc_isa205_32l;
+    case PPC_TDESC_ISA205_ALTIVEC:
+      return tdesc_powerpc_isa205_altivec32l;
+    case PPC_TDESC_ISA205_VSX:
+      return tdesc_powerpc_isa205_vsx32l;
+    case PPC_TDESC_ISA205_PPR_DSCR_VSX:
+      return tdesc_powerpc_isa205_ppr_dscr_vsx32l;
+    case PPC_TDESC_ISA207_VSX:
+      return tdesc_powerpc_isa207_vsx32l;
+    case PPC_TDESC_ISA207_HTM_VSX:
+      return tdesc_powerpc_isa207_htm_vsx32l;
+    case PPC_TDESC_E500:
+      return tdesc_powerpc_e500l;
+#endif
+    default:
+      internal_error (__FILE__, __LINE__,
+                     "unknown ipa tdesc index: %d", idx);
+#ifdef __powerpc64__
+      return tdesc_powerpc_64l;
+#else
+      return tdesc_powerpc_32l;
+#endif
+    }
+}
+
+
+/* Initialize ipa_tdesc and others.  */
+
+void
+initialize_low_tracepoint (void)
+{
+#ifdef __powerpc64__
+  init_registers_powerpc_64l ();
+  init_registers_powerpc_altivec64l ();
+  init_registers_powerpc_vsx64l ();
+  init_registers_powerpc_isa205_64l ();
+  init_registers_powerpc_isa205_altivec64l ();
+  init_registers_powerpc_isa205_vsx64l ();
+  init_registers_powerpc_isa205_ppr_dscr_vsx64l ();
+  init_registers_powerpc_isa207_vsx64l ();
+  init_registers_powerpc_isa207_htm_vsx64l ();
+#else
+  init_registers_powerpc_32l ();
+  init_registers_powerpc_altivec32l ();
+  init_registers_powerpc_vsx32l ();
+  init_registers_powerpc_isa205_32l ();
+  init_registers_powerpc_isa205_altivec32l ();
+  init_registers_powerpc_isa205_vsx32l ();
+  init_registers_powerpc_isa205_ppr_dscr_vsx32l ();
+  init_registers_powerpc_isa207_vsx32l ();
+  init_registers_powerpc_isa207_htm_vsx32l ();
+  init_registers_powerpc_e500l ();
+#endif
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-ppc-low.cc ./gdbserver/linux-ppc-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-ppc-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-ppc-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,3482 @@
+/* GNU/Linux/PowerPC specific low level interface, for the remote server for
+   GDB.
+   Copyright (C) 1995-2021 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 "server.h"
+#include "linux-low.h"
+
+#include "elf/common.h"
+#include <sys/uio.h>
+#include <elf.h>
+#include <asm/ptrace.h>
+
+#include "arch/ppc-linux-common.h"
+#include "arch/ppc-linux-tdesc.h"
+#include "nat/ppc-linux.h"
+#include "nat/linux-ptrace.h"
+#include "linux-ppc-tdesc-init.h"
+#include "ax.h"
+#include "tracepoint.h"
+
+#define PPC_FIELD(value, from, len) \
+	(((value) >> (32 - (from) - (len))) & ((1 << (len)) - 1))
+#define PPC_SEXT(v, bs) \
+	((((CORE_ADDR) (v) & (((CORE_ADDR) 1 << (bs)) - 1)) \
+	  ^ ((CORE_ADDR) 1 << ((bs) - 1))) \
+	 - ((CORE_ADDR) 1 << ((bs) - 1)))
+#define PPC_OP6(insn)	PPC_FIELD (insn, 0, 6)
+#define PPC_BO(insn)	PPC_FIELD (insn, 6, 5)
+#define PPC_LI(insn)	(PPC_SEXT (PPC_FIELD (insn, 6, 24), 24) << 2)
+#define PPC_BD(insn)	(PPC_SEXT (PPC_FIELD (insn, 16, 14), 14) << 2)
+
+/* Linux target op definitions for the PowerPC architecture.  */
+
+class ppc_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+  bool supports_z_point_type (char z_type) override;
+
+
+  void low_collect_ptrace_register (regcache *regcache, int regno,
+				    char *buf) override;
+
+  void low_supply_ptrace_register (regcache *regcache, int regno,
+				   const char *buf) override;
+
+  bool supports_tracepoints () override;
+
+  bool supports_fast_tracepoints () override;
+
+  int install_fast_tracepoint_jump_pad
+    (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector,
+     CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry,
+     CORE_ADDR *trampoline, ULONGEST *trampoline_size,
+     unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size,
+     CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end,
+     char *err) override;
+
+  int get_min_fast_tracepoint_insn_len () override;
+
+  struct emit_ops *emit_ops () override;
+
+  int get_ipa_tdesc_idx () override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+
+  int low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+			int size, raw_breakpoint *bp) override;
+
+  int low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+			int size, raw_breakpoint *bp) override;
+
+  int low_get_thread_area (int lwpid, CORE_ADDR *addrp) override;
+};
+
+/* The singleton target ops object.  */
+
+static ppc_target the_ppc_target;
+
+/* Holds the AT_HWCAP auxv entry.  */
+
+static unsigned long ppc_hwcap;
+
+/* Holds the AT_HWCAP2 auxv entry.  */
+
+static unsigned long ppc_hwcap2;
+
+
+#define ppc_num_regs 73
+
+#ifdef __powerpc64__
+/* We use a constant for FPSCR instead of PT_FPSCR, because
+   many shipped PPC64 kernels had the wrong value in ptrace.h.  */
+static int ppc_regmap[] =
+ {PT_R0 * 8,     PT_R1 * 8,     PT_R2 * 8,     PT_R3 * 8,
+  PT_R4 * 8,     PT_R5 * 8,     PT_R6 * 8,     PT_R7 * 8,
+  PT_R8 * 8,     PT_R9 * 8,     PT_R10 * 8,    PT_R11 * 8,
+  PT_R12 * 8,    PT_R13 * 8,    PT_R14 * 8,    PT_R15 * 8,
+  PT_R16 * 8,    PT_R17 * 8,    PT_R18 * 8,    PT_R19 * 8,
+  PT_R20 * 8,    PT_R21 * 8,    PT_R22 * 8,    PT_R23 * 8,
+  PT_R24 * 8,    PT_R25 * 8,    PT_R26 * 8,    PT_R27 * 8,
+  PT_R28 * 8,    PT_R29 * 8,    PT_R30 * 8,    PT_R31 * 8,
+  PT_FPR0*8,     PT_FPR0*8 + 8, PT_FPR0*8+16,  PT_FPR0*8+24,
+  PT_FPR0*8+32,  PT_FPR0*8+40,  PT_FPR0*8+48,  PT_FPR0*8+56,
+  PT_FPR0*8+64,  PT_FPR0*8+72,  PT_FPR0*8+80,  PT_FPR0*8+88,
+  PT_FPR0*8+96,  PT_FPR0*8+104,  PT_FPR0*8+112,  PT_FPR0*8+120,
+  PT_FPR0*8+128, PT_FPR0*8+136,  PT_FPR0*8+144,  PT_FPR0*8+152,
+  PT_FPR0*8+160,  PT_FPR0*8+168,  PT_FPR0*8+176,  PT_FPR0*8+184,
+  PT_FPR0*8+192,  PT_FPR0*8+200,  PT_FPR0*8+208,  PT_FPR0*8+216,
+  PT_FPR0*8+224,  PT_FPR0*8+232,  PT_FPR0*8+240,  PT_FPR0*8+248,
+  PT_NIP * 8,    PT_MSR * 8,    PT_CCR * 8,    PT_LNK * 8,
+  PT_CTR * 8,    PT_XER * 8,    PT_FPR0*8 + 256,
+  PT_ORIG_R3 * 8, PT_TRAP * 8 };
+#else
+/* Currently, don't check/send MQ.  */
+static int ppc_regmap[] =
+ {PT_R0 * 4,     PT_R1 * 4,     PT_R2 * 4,     PT_R3 * 4,
+  PT_R4 * 4,     PT_R5 * 4,     PT_R6 * 4,     PT_R7 * 4,
+  PT_R8 * 4,     PT_R9 * 4,     PT_R10 * 4,    PT_R11 * 4,
+  PT_R12 * 4,    PT_R13 * 4,    PT_R14 * 4,    PT_R15 * 4,
+  PT_R16 * 4,    PT_R17 * 4,    PT_R18 * 4,    PT_R19 * 4,
+  PT_R20 * 4,    PT_R21 * 4,    PT_R22 * 4,    PT_R23 * 4,
+  PT_R24 * 4,    PT_R25 * 4,    PT_R26 * 4,    PT_R27 * 4,
+  PT_R28 * 4,    PT_R29 * 4,    PT_R30 * 4,    PT_R31 * 4,
+  PT_FPR0*4,     PT_FPR0*4 + 8, PT_FPR0*4+16,  PT_FPR0*4+24,
+  PT_FPR0*4+32,  PT_FPR0*4+40,  PT_FPR0*4+48,  PT_FPR0*4+56,
+  PT_FPR0*4+64,  PT_FPR0*4+72,  PT_FPR0*4+80,  PT_FPR0*4+88,
+  PT_FPR0*4+96,  PT_FPR0*4+104,  PT_FPR0*4+112,  PT_FPR0*4+120,
+  PT_FPR0*4+128, PT_FPR0*4+136,  PT_FPR0*4+144,  PT_FPR0*4+152,
+  PT_FPR0*4+160,  PT_FPR0*4+168,  PT_FPR0*4+176,  PT_FPR0*4+184,
+  PT_FPR0*4+192,  PT_FPR0*4+200,  PT_FPR0*4+208,  PT_FPR0*4+216,
+  PT_FPR0*4+224,  PT_FPR0*4+232,  PT_FPR0*4+240,  PT_FPR0*4+248,
+  PT_NIP * 4,    PT_MSR * 4,    PT_CCR * 4,    PT_LNK * 4,
+  PT_CTR * 4,    PT_XER * 4,    PT_FPSCR * 4,
+  PT_ORIG_R3 * 4, PT_TRAP * 4
+ };
+
+static int ppc_regmap_e500[] =
+ {PT_R0 * 4,     PT_R1 * 4,     PT_R2 * 4,     PT_R3 * 4,
+  PT_R4 * 4,     PT_R5 * 4,     PT_R6 * 4,     PT_R7 * 4,
+  PT_R8 * 4,     PT_R9 * 4,     PT_R10 * 4,    PT_R11 * 4,
+  PT_R12 * 4,    PT_R13 * 4,    PT_R14 * 4,    PT_R15 * 4,
+  PT_R16 * 4,    PT_R17 * 4,    PT_R18 * 4,    PT_R19 * 4,
+  PT_R20 * 4,    PT_R21 * 4,    PT_R22 * 4,    PT_R23 * 4,
+  PT_R24 * 4,    PT_R25 * 4,    PT_R26 * 4,    PT_R27 * 4,
+  PT_R28 * 4,    PT_R29 * 4,    PT_R30 * 4,    PT_R31 * 4,
+  -1,            -1,            -1,            -1,
+  -1,            -1,            -1,            -1,
+  -1,            -1,            -1,            -1,
+  -1,            -1,            -1,            -1,
+  -1,            -1,            -1,            -1,
+  -1,            -1,            -1,            -1,
+  -1,            -1,            -1,            -1,
+  -1,            -1,            -1,            -1,
+  PT_NIP * 4,    PT_MSR * 4,    PT_CCR * 4,    PT_LNK * 4,
+  PT_CTR * 4,    PT_XER * 4,    -1,
+  PT_ORIG_R3 * 4, PT_TRAP * 4
+ };
+#endif
+
+/* Check whether the kernel provides a register set with number
+   REGSET_ID of size REGSETSIZE for process/thread TID.  */
+
+static int
+ppc_check_regset (int tid, int regset_id, int regsetsize)
+{
+  void *buf = alloca (regsetsize);
+  struct iovec iov;
+
+  iov.iov_base = buf;
+  iov.iov_len = regsetsize;
+
+  if (ptrace (PTRACE_GETREGSET, tid, regset_id, &iov) >= 0
+      || errno == ENODATA)
+    return 1;
+  return 0;
+}
+
+bool
+ppc_target::low_cannot_store_register (int regno)
+{
+  const struct target_desc *tdesc = current_process ()->tdesc;
+
+#ifndef __powerpc64__
+  /* Some kernels do not allow us to store fpscr.  */
+  if (!(ppc_hwcap & PPC_FEATURE_HAS_SPE)
+      && regno == find_regno (tdesc, "fpscr"))
+    return true;
+#endif
+
+  /* Some kernels do not allow us to store orig_r3 or trap.  */
+  if (regno == find_regno (tdesc, "orig_r3")
+      || regno == find_regno (tdesc, "trap"))
+    return true;
+
+  return false;
+}
+
+bool
+ppc_target::low_cannot_fetch_register (int regno)
+{
+  return false;
+}
+
+void
+ppc_target::low_collect_ptrace_register (regcache *regcache, int regno,
+					 char *buf)
+{
+  memset (buf, 0, sizeof (long));
+
+  if (__BYTE_ORDER == __LITTLE_ENDIAN)
+    {
+      /* Little-endian values always sit at the left end of the buffer.  */
+      collect_register (regcache, regno, buf);
+    }
+  else if (__BYTE_ORDER == __BIG_ENDIAN)
+    {
+      /* Big-endian values sit at the right end of the buffer.  In case of
+         registers whose sizes are smaller than sizeof (long), we must use a
+         padding to access them correctly.  */
+      int size = register_size (regcache->tdesc, regno);
+
+      if (size < sizeof (long))
+	collect_register (regcache, regno, buf + sizeof (long) - size);
+      else
+	collect_register (regcache, regno, buf);
+    }
+  else
+    perror_with_name ("Unexpected byte order");
+}
+
+void
+ppc_target::low_supply_ptrace_register (regcache *regcache, int regno,
+					const char *buf)
+{
+  if (__BYTE_ORDER == __LITTLE_ENDIAN)
+    {
+      /* Little-endian values always sit at the left end of the buffer.  */
+      supply_register (regcache, regno, buf);
+    }
+  else if (__BYTE_ORDER == __BIG_ENDIAN)
+    {
+      /* Big-endian values sit at the right end of the buffer.  In case of
+         registers whose sizes are smaller than sizeof (long), we must use a
+         padding to access them correctly.  */
+      int size = register_size (regcache->tdesc, regno);
+
+      if (size < sizeof (long))
+	supply_register (regcache, regno, buf + sizeof (long) - size);
+      else
+	supply_register (regcache, regno, buf);
+    }
+  else
+    perror_with_name ("Unexpected byte order");
+}
+
+bool
+ppc_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+ppc_target::low_get_pc (regcache *regcache)
+{
+  if (register_size (regcache->tdesc, 0) == 4)
+    {
+      unsigned int pc;
+      collect_register_by_name (regcache, "pc", &pc);
+      return (CORE_ADDR) pc;
+    }
+  else
+    {
+      unsigned long pc;
+      collect_register_by_name (regcache, "pc", &pc);
+      return (CORE_ADDR) pc;
+    }
+}
+
+void
+ppc_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  if (register_size (regcache->tdesc, 0) == 4)
+    {
+      unsigned int newpc = pc;
+      supply_register_by_name (regcache, "pc", &newpc);
+    }
+  else
+    {
+      unsigned long newpc = pc;
+      supply_register_by_name (regcache, "pc", &newpc);
+    }
+}
+
+#ifndef __powerpc64__
+static int ppc_regmap_adjusted;
+#endif
+
+
+/* Correct in either endianness.
+   This instruction is "twge r2, r2", which GDB uses as a software
+   breakpoint.  */
+static const unsigned int ppc_breakpoint = 0x7d821008;
+#define ppc_breakpoint_len 4
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+ppc_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = ppc_breakpoint_len;
+  return (const gdb_byte *) &ppc_breakpoint;
+}
+
+bool
+ppc_target::low_breakpoint_at (CORE_ADDR where)
+{
+  unsigned int insn;
+
+  read_memory (where, (unsigned char *) &insn, 4);
+  if (insn == ppc_breakpoint)
+    return true;
+  /* If necessary, recognize more trap instructions here.  GDB only uses
+     the one.  */
+
+  return false;
+}
+
+/* Implement supports_z_point_type target-ops.
+   Returns true if type Z_TYPE breakpoint is supported.
+
+   Handling software breakpoint at server side, so tracepoints
+   and breakpoints can be inserted at the same location.  */
+
+bool
+ppc_target::supports_z_point_type (char z_type)
+{
+  switch (z_type)
+    {
+    case Z_PACKET_SW_BP:
+      return true;
+    case Z_PACKET_HW_BP:
+    case Z_PACKET_WRITE_WP:
+    case Z_PACKET_ACCESS_WP:
+    default:
+      return false;
+    }
+}
+
+/* Implement the low_insert_point linux target op.
+   Returns 0 on success, -1 on failure and 1 on unsupported.  */
+
+int
+ppc_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+			      int size, raw_breakpoint *bp)
+{
+  switch (type)
+    {
+    case raw_bkpt_type_sw:
+      return insert_memory_breakpoint (bp);
+
+    case raw_bkpt_type_hw:
+    case raw_bkpt_type_write_wp:
+    case raw_bkpt_type_access_wp:
+    default:
+      /* Unsupported.  */
+      return 1;
+    }
+}
+
+/* Implement the low_remove_point linux target op.
+   Returns 0 on success, -1 on failure and 1 on unsupported.  */
+
+int
+ppc_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+			      int size, raw_breakpoint *bp)
+{
+  switch (type)
+    {
+    case raw_bkpt_type_sw:
+      return remove_memory_breakpoint (bp);
+
+    case raw_bkpt_type_hw:
+    case raw_bkpt_type_write_wp:
+    case raw_bkpt_type_access_wp:
+    default:
+      /* Unsupported.  */
+      return 1;
+    }
+}
+
+/* Provide only a fill function for the general register set.  ps_lgetregs
+   will use this for NPTL support.  */
+
+static void ppc_fill_gregset (struct regcache *regcache, void *buf)
+{
+  int i;
+
+  ppc_target *my_ppc_target = (ppc_target *) the_linux_target;
+
+  for (i = 0; i < 32; i++)
+    my_ppc_target->low_collect_ptrace_register (regcache, i,
+						(char *) buf + ppc_regmap[i]);
+
+  for (i = 64; i < 70; i++)
+    my_ppc_target->low_collect_ptrace_register (regcache, i,
+						(char *) buf + ppc_regmap[i]);
+
+  for (i = 71; i < 73; i++)
+    my_ppc_target->low_collect_ptrace_register (regcache, i,
+						(char *) buf + ppc_regmap[i]);
+}
+
+/* Program Priority Register regset fill function.  */
+
+static void
+ppc_fill_pprregset (struct regcache *regcache, void *buf)
+{
+  char *ppr = (char *) buf;
+
+  collect_register_by_name (regcache, "ppr", ppr);
+}
+
+/* Program Priority Register regset store function.  */
+
+static void
+ppc_store_pprregset (struct regcache *regcache, const void *buf)
+{
+  const char *ppr = (const char *) buf;
+
+  supply_register_by_name (regcache, "ppr", ppr);
+}
+
+/* Data Stream Control Register regset fill function.  */
+
+static void
+ppc_fill_dscrregset (struct regcache *regcache, void *buf)
+{
+  char *dscr = (char *) buf;
+
+  collect_register_by_name (regcache, "dscr", dscr);
+}
+
+/* Data Stream Control Register regset store function.  */
+
+static void
+ppc_store_dscrregset (struct regcache *regcache, const void *buf)
+{
+  const char *dscr = (const char *) buf;
+
+  supply_register_by_name (regcache, "dscr", dscr);
+}
+
+/* Target Address Register regset fill function.  */
+
+static void
+ppc_fill_tarregset (struct regcache *regcache, void *buf)
+{
+  char *tar = (char *) buf;
+
+  collect_register_by_name (regcache, "tar", tar);
+}
+
+/* Target Address Register regset store function.  */
+
+static void
+ppc_store_tarregset (struct regcache *regcache, const void *buf)
+{
+  const char *tar = (const char *) buf;
+
+  supply_register_by_name (regcache, "tar", tar);
+}
+
+/* Event-Based Branching regset store function.  Unless the inferior
+   has a perf event open, ptrace can return in error when reading and
+   writing to the regset, with ENODATA.  For reading, the registers
+   will correctly show as unavailable.  For writing, gdbserver
+   currently only caches any register writes from P and G packets and
+   the stub always tries to write all the regsets when resuming the
+   inferior, which would result in frequent warnings.  For this
+   reason, we don't define a fill function.  This also means that the
+   client-side regcache will be dirty if the user tries to write to
+   the EBB registers.  G packets that the client sends to write to
+   unrelated registers will also include data for EBB registers, even
+   if they are unavailable.  */
+
+static void
+ppc_store_ebbregset (struct regcache *regcache, const void *buf)
+{
+  const char *regset = (const char *) buf;
+
+  /* The order in the kernel regset is: EBBRR, EBBHR, BESCR.  In the
+     .dat file is BESCR, EBBHR, EBBRR.  */
+  supply_register_by_name (regcache, "ebbrr", &regset[0]);
+  supply_register_by_name (regcache, "ebbhr", &regset[8]);
+  supply_register_by_name (regcache, "bescr", &regset[16]);
+}
+
+/* Performance Monitoring Unit regset fill function.  */
+
+static void
+ppc_fill_pmuregset (struct regcache *regcache, void *buf)
+{
+  char *regset = (char *) buf;
+
+  /* The order in the kernel regset is SIAR, SDAR, SIER, MMCR2, MMCR0.
+     In the .dat file is MMCR0, MMCR2, SIAR, SDAR, SIER.  */
+  collect_register_by_name (regcache, "siar", &regset[0]);
+  collect_register_by_name (regcache, "sdar", &regset[8]);
+  collect_register_by_name (regcache, "sier", &regset[16]);
+  collect_register_by_name (regcache, "mmcr2", &regset[24]);
+  collect_register_by_name (regcache, "mmcr0", &regset[32]);
+}
+
+/* Performance Monitoring Unit regset store function.  */
+
+static void
+ppc_store_pmuregset (struct regcache *regcache, const void *buf)
+{
+  const char *regset = (const char *) buf;
+
+  supply_register_by_name (regcache, "siar", &regset[0]);
+  supply_register_by_name (regcache, "sdar", &regset[8]);
+  supply_register_by_name (regcache, "sier", &regset[16]);
+  supply_register_by_name (regcache, "mmcr2", &regset[24]);
+  supply_register_by_name (regcache, "mmcr0", &regset[32]);
+}
+
+/* Hardware Transactional Memory special-purpose register regset fill
+   function.  */
+
+static void
+ppc_fill_tm_sprregset (struct regcache *regcache, void *buf)
+{
+  int i, base;
+  char *regset = (char *) buf;
+
+  base = find_regno (regcache->tdesc, "tfhar");
+  for (i = 0; i < 3; i++)
+    collect_register (regcache, base + i, &regset[i * 8]);
+}
+
+/* Hardware Transactional Memory special-purpose register regset store
+   function.  */
+
+static void
+ppc_store_tm_sprregset (struct regcache *regcache, const void *buf)
+{
+  int i, base;
+  const char *regset = (const char *) buf;
+
+  base = find_regno (regcache->tdesc, "tfhar");
+  for (i = 0; i < 3; i++)
+    supply_register (regcache, base + i, &regset[i * 8]);
+}
+
+/* For the same reasons as the EBB regset, none of the HTM
+   checkpointed regsets have a fill function.  These registers are
+   only available if the inferior is in a transaction.  */
+
+/* Hardware Transactional Memory checkpointed general-purpose regset
+   store function.  */
+
+static void
+ppc_store_tm_cgprregset (struct regcache *regcache, const void *buf)
+{
+  int i, base, size, endian_offset;
+  const char *regset = (const char *) buf;
+
+  base = find_regno (regcache->tdesc, "cr0");
+  size = register_size (regcache->tdesc, base);
+
+  gdb_assert (size == 4 || size == 8);
+
+  for (i = 0; i < 32; i++)
+    supply_register (regcache, base + i, &regset[i * size]);
+
+  endian_offset = 0;
+
+  if ((size == 8) && (__BYTE_ORDER == __BIG_ENDIAN))
+    endian_offset = 4;
+
+  supply_register_by_name (regcache, "ccr",
+			   &regset[PT_CCR * size + endian_offset]);
+
+  supply_register_by_name (regcache, "cxer",
+			   &regset[PT_XER * size + endian_offset]);
+
+  supply_register_by_name (regcache, "clr", &regset[PT_LNK * size]);
+  supply_register_by_name (regcache, "cctr", &regset[PT_CTR * size]);
+}
+
+/* Hardware Transactional Memory checkpointed floating-point regset
+   store function.  */
+
+static void
+ppc_store_tm_cfprregset (struct regcache *regcache, const void *buf)
+{
+  int i, base;
+  const char *regset = (const char *) buf;
+
+  base = find_regno (regcache->tdesc, "cf0");
+
+  for (i = 0; i < 32; i++)
+    supply_register (regcache, base + i, &regset[i * 8]);
+
+  supply_register_by_name (regcache, "cfpscr", &regset[32 * 8]);
+}
+
+/* Hardware Transactional Memory checkpointed vector regset store
+   function.  */
+
+static void
+ppc_store_tm_cvrregset (struct regcache *regcache, const void *buf)
+{
+  int i, base;
+  const char *regset = (const char *) buf;
+  int vscr_offset = 0;
+
+  base = find_regno (regcache->tdesc, "cvr0");
+
+  for (i = 0; i < 32; i++)
+    supply_register (regcache, base + i, &regset[i * 16]);
+
+  if (__BYTE_ORDER == __BIG_ENDIAN)
+    vscr_offset = 12;
+
+  supply_register_by_name (regcache, "cvscr",
+			   &regset[32 * 16 + vscr_offset]);
+
+  supply_register_by_name (regcache, "cvrsave", &regset[33 * 16]);
+}
+
+/* Hardware Transactional Memory checkpointed vector-scalar regset
+   store function.  */
+
+static void
+ppc_store_tm_cvsxregset (struct regcache *regcache, const void *buf)
+{
+  int i, base;
+  const char *regset = (const char *) buf;
+
+  base = find_regno (regcache->tdesc, "cvs0h");
+  for (i = 0; i < 32; i++)
+    supply_register (regcache, base + i, &regset[i * 8]);
+}
+
+/* Hardware Transactional Memory checkpointed Program Priority
+   Register regset store function.  */
+
+static void
+ppc_store_tm_cpprregset (struct regcache *regcache, const void *buf)
+{
+  const char *cppr = (const char *) buf;
+
+  supply_register_by_name (regcache, "cppr", cppr);
+}
+
+/* Hardware Transactional Memory checkpointed Data Stream Control
+   Register regset store function.  */
+
+static void
+ppc_store_tm_cdscrregset (struct regcache *regcache, const void *buf)
+{
+  const char *cdscr = (const char *) buf;
+
+  supply_register_by_name (regcache, "cdscr", cdscr);
+}
+
+/* Hardware Transactional Memory checkpointed Target Address Register
+   regset store function.  */
+
+static void
+ppc_store_tm_ctarregset (struct regcache *regcache, const void *buf)
+{
+  const char *ctar = (const char *) buf;
+
+  supply_register_by_name (regcache, "ctar", ctar);
+}
+
+static void
+ppc_fill_vsxregset (struct regcache *regcache, void *buf)
+{
+  int i, base;
+  char *regset = (char *) buf;
+
+  base = find_regno (regcache->tdesc, "vs0h");
+  for (i = 0; i < 32; i++)
+    collect_register (regcache, base + i, &regset[i * 8]);
+}
+
+static void
+ppc_store_vsxregset (struct regcache *regcache, const void *buf)
+{
+  int i, base;
+  const char *regset = (const char *) buf;
+
+  base = find_regno (regcache->tdesc, "vs0h");
+  for (i = 0; i < 32; i++)
+    supply_register (regcache, base + i, &regset[i * 8]);
+}
+
+static void
+ppc_fill_vrregset (struct regcache *regcache, void *buf)
+{
+  int i, base;
+  char *regset = (char *) buf;
+  int vscr_offset = 0;
+
+  base = find_regno (regcache->tdesc, "vr0");
+  for (i = 0; i < 32; i++)
+    collect_register (regcache, base + i, &regset[i * 16]);
+
+  if (__BYTE_ORDER == __BIG_ENDIAN)
+    vscr_offset = 12;
+
+  collect_register_by_name (regcache, "vscr",
+			    &regset[32 * 16 + vscr_offset]);
+
+  collect_register_by_name (regcache, "vrsave", &regset[33 * 16]);
+}
+
+static void
+ppc_store_vrregset (struct regcache *regcache, const void *buf)
+{
+  int i, base;
+  const char *regset = (const char *) buf;
+  int vscr_offset = 0;
+
+  base = find_regno (regcache->tdesc, "vr0");
+  for (i = 0; i < 32; i++)
+    supply_register (regcache, base + i, &regset[i * 16]);
+
+  if (__BYTE_ORDER == __BIG_ENDIAN)
+    vscr_offset = 12;
+
+  supply_register_by_name (regcache, "vscr",
+			   &regset[32 * 16 + vscr_offset]);
+  supply_register_by_name (regcache, "vrsave", &regset[33 * 16]);
+}
+
+struct gdb_evrregset_t
+{
+  unsigned long evr[32];
+  unsigned long long acc;
+  unsigned long spefscr;
+};
+
+static void
+ppc_fill_evrregset (struct regcache *regcache, void *buf)
+{
+  int i, ev0;
+  struct gdb_evrregset_t *regset = (struct gdb_evrregset_t *) buf;
+
+  ev0 = find_regno (regcache->tdesc, "ev0h");
+  for (i = 0; i < 32; i++)
+    collect_register (regcache, ev0 + i, &regset->evr[i]);
+
+  collect_register_by_name (regcache, "acc", &regset->acc);
+  collect_register_by_name (regcache, "spefscr", &regset->spefscr);
+}
+
+static void
+ppc_store_evrregset (struct regcache *regcache, const void *buf)
+{
+  int i, ev0;
+  const struct gdb_evrregset_t *regset = (const struct gdb_evrregset_t *) buf;
+
+  ev0 = find_regno (regcache->tdesc, "ev0h");
+  for (i = 0; i < 32; i++)
+    supply_register (regcache, ev0 + i, &regset->evr[i]);
+
+  supply_register_by_name (regcache, "acc", &regset->acc);
+  supply_register_by_name (regcache, "spefscr", &regset->spefscr);
+}
+
+static struct regset_info ppc_regsets[] = {
+  /* List the extra register sets before GENERAL_REGS.  That way we will
+     fetch them every time, but still fall back to PTRACE_PEEKUSER for the
+     general registers.  Some kernels support these, but not the newer
+     PPC_PTRACE_GETREGS.  */
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CTAR, 0, EXTENDED_REGS,
+    NULL, ppc_store_tm_ctarregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CDSCR, 0, EXTENDED_REGS,
+    NULL, ppc_store_tm_cdscrregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CPPR, 0, EXTENDED_REGS,
+    NULL, ppc_store_tm_cpprregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CVSX, 0, EXTENDED_REGS,
+    NULL, ppc_store_tm_cvsxregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CVMX, 0, EXTENDED_REGS,
+    NULL, ppc_store_tm_cvrregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CFPR, 0, EXTENDED_REGS,
+    NULL, ppc_store_tm_cfprregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_CGPR, 0, EXTENDED_REGS,
+    NULL, ppc_store_tm_cgprregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TM_SPR, 0, EXTENDED_REGS,
+    ppc_fill_tm_sprregset, ppc_store_tm_sprregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_EBB, 0, EXTENDED_REGS,
+    NULL, ppc_store_ebbregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_PMU, 0, EXTENDED_REGS,
+    ppc_fill_pmuregset, ppc_store_pmuregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TAR, 0, EXTENDED_REGS,
+    ppc_fill_tarregset, ppc_store_tarregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_PPR, 0, EXTENDED_REGS,
+    ppc_fill_pprregset, ppc_store_pprregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_DSCR, 0, EXTENDED_REGS,
+    ppc_fill_dscrregset, ppc_store_dscrregset },
+  { PTRACE_GETVSXREGS, PTRACE_SETVSXREGS, 0, 0, EXTENDED_REGS,
+  ppc_fill_vsxregset, ppc_store_vsxregset },
+  { PTRACE_GETVRREGS, PTRACE_SETVRREGS, 0, 0, EXTENDED_REGS,
+    ppc_fill_vrregset, ppc_store_vrregset },
+  { PTRACE_GETEVRREGS, PTRACE_SETEVRREGS, 0, 0, EXTENDED_REGS,
+    ppc_fill_evrregset, ppc_store_evrregset },
+  { 0, 0, 0, 0, GENERAL_REGS, ppc_fill_gregset, NULL },
+  NULL_REGSET
+};
+
+static struct usrregs_info ppc_usrregs_info =
+  {
+    ppc_num_regs,
+    ppc_regmap,
+  };
+
+static struct regsets_info ppc_regsets_info =
+  {
+    ppc_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct regs_info myregs_info =
+  {
+    NULL, /* regset_bitmap */
+    &ppc_usrregs_info,
+    &ppc_regsets_info
+  };
+
+const regs_info *
+ppc_target::get_regs_info ()
+{
+  return &myregs_info;
+}
+
+void
+ppc_target::low_arch_setup ()
+{
+  const struct target_desc *tdesc;
+  struct regset_info *regset;
+  struct ppc_linux_features features = ppc_linux_no_features;
+
+  int tid = lwpid_of (current_thread);
+
+  features.wordsize = ppc_linux_target_wordsize (tid);
+
+  if (features.wordsize == 4)
+      tdesc = tdesc_powerpc_32l;
+  else
+      tdesc = tdesc_powerpc_64l;
+
+  current_process ()->tdesc = tdesc;
+
+  /* The value of current_process ()->tdesc needs to be set for this
+     call.  */
+  ppc_hwcap = linux_get_hwcap (features.wordsize);
+  ppc_hwcap2 = linux_get_hwcap2 (features.wordsize);
+
+  features.isa205 = ppc_linux_has_isa205 (ppc_hwcap);
+
+  if (ppc_hwcap & PPC_FEATURE_HAS_VSX)
+    features.vsx = true;
+
+  if (ppc_hwcap & PPC_FEATURE_HAS_ALTIVEC)
+    features.altivec = true;
+
+  if ((ppc_hwcap2 & PPC_FEATURE2_DSCR)
+      && ppc_check_regset (tid, NT_PPC_DSCR, PPC_LINUX_SIZEOF_DSCRREGSET)
+      && ppc_check_regset (tid, NT_PPC_PPR, PPC_LINUX_SIZEOF_PPRREGSET))
+    {
+      features.ppr_dscr = true;
+      if ((ppc_hwcap2 & PPC_FEATURE2_ARCH_2_07)
+	  && (ppc_hwcap2 & PPC_FEATURE2_TAR)
+	  && (ppc_hwcap2 & PPC_FEATURE2_EBB)
+	  && ppc_check_regset (tid, NT_PPC_TAR,
+			       PPC_LINUX_SIZEOF_TARREGSET)
+	  && ppc_check_regset (tid, NT_PPC_EBB,
+			       PPC_LINUX_SIZEOF_EBBREGSET)
+	  && ppc_check_regset (tid, NT_PPC_PMU,
+			       PPC_LINUX_SIZEOF_PMUREGSET))
+	{
+	  features.isa207 = true;
+	  if ((ppc_hwcap2 & PPC_FEATURE2_HTM)
+	      && ppc_check_regset (tid, NT_PPC_TM_SPR,
+				   PPC_LINUX_SIZEOF_TM_SPRREGSET))
+	    features.htm = true;
+	}
+    }
+
+  tdesc = ppc_linux_match_description (features);
+
+  /* On 32-bit machines, check for SPE registers.
+     Set the low target's regmap field as appropriately.  */
+#ifndef __powerpc64__
+  if (ppc_hwcap & PPC_FEATURE_HAS_SPE)
+    tdesc = tdesc_powerpc_e500l;
+
+  if (!ppc_regmap_adjusted)
+    {
+      if (ppc_hwcap & PPC_FEATURE_HAS_SPE)
+	ppc_usrregs_info.regmap = ppc_regmap_e500;
+
+      /* If the FPSCR is 64-bit wide, we need to fetch the whole
+	 64-bit slot and not just its second word.  The PT_FPSCR
+	 supplied in a 32-bit GDB compilation doesn't reflect
+	 this.  */
+      if (register_size (tdesc, 70) == 8)
+	ppc_regmap[70] = (48 + 2*32) * sizeof (long);
+
+      ppc_regmap_adjusted = 1;
+   }
+#endif
+
+  current_process ()->tdesc = tdesc;
+
+  for (regset = ppc_regsets; regset->size >= 0; regset++)
+    switch (regset->get_request)
+      {
+      case PTRACE_GETVRREGS:
+	regset->size = features.altivec ? PPC_LINUX_SIZEOF_VRREGSET : 0;
+	break;
+      case PTRACE_GETVSXREGS:
+	regset->size = features.vsx ? PPC_LINUX_SIZEOF_VSXREGSET : 0;
+	break;
+      case PTRACE_GETEVRREGS:
+	if (ppc_hwcap & PPC_FEATURE_HAS_SPE)
+	  regset->size = 32 * 4 + 8 + 4;
+	else
+	  regset->size = 0;
+	break;
+      case PTRACE_GETREGSET:
+	switch (regset->nt_type)
+	  {
+	  case NT_PPC_PPR:
+	    regset->size = (features.ppr_dscr ?
+			    PPC_LINUX_SIZEOF_PPRREGSET : 0);
+	    break;
+	  case NT_PPC_DSCR:
+	    regset->size = (features.ppr_dscr ?
+			    PPC_LINUX_SIZEOF_DSCRREGSET : 0);
+	    break;
+	  case NT_PPC_TAR:
+	    regset->size = (features.isa207 ?
+			    PPC_LINUX_SIZEOF_TARREGSET : 0);
+	    break;
+	  case NT_PPC_EBB:
+	    regset->size = (features.isa207 ?
+			    PPC_LINUX_SIZEOF_EBBREGSET : 0);
+	    break;
+	  case NT_PPC_PMU:
+	    regset->size = (features.isa207 ?
+			    PPC_LINUX_SIZEOF_PMUREGSET : 0);
+	    break;
+	  case NT_PPC_TM_SPR:
+	    regset->size = (features.htm ?
+			    PPC_LINUX_SIZEOF_TM_SPRREGSET : 0);
+	    break;
+	  case NT_PPC_TM_CGPR:
+	    if (features.wordsize == 4)
+	      regset->size = (features.htm ?
+			      PPC32_LINUX_SIZEOF_CGPRREGSET : 0);
+	    else
+	      regset->size = (features.htm ?
+			      PPC64_LINUX_SIZEOF_CGPRREGSET : 0);
+	    break;
+	  case NT_PPC_TM_CFPR:
+	    regset->size = (features.htm ?
+			    PPC_LINUX_SIZEOF_CFPRREGSET : 0);
+	    break;
+	  case NT_PPC_TM_CVMX:
+	    regset->size = (features.htm ?
+			    PPC_LINUX_SIZEOF_CVMXREGSET : 0);
+	    break;
+	  case NT_PPC_TM_CVSX:
+	    regset->size = (features.htm ?
+			    PPC_LINUX_SIZEOF_CVSXREGSET : 0);
+	    break;
+	  case NT_PPC_TM_CPPR:
+	    regset->size = (features.htm ?
+			    PPC_LINUX_SIZEOF_CPPRREGSET : 0);
+	    break;
+	  case NT_PPC_TM_CDSCR:
+	    regset->size = (features.htm ?
+			    PPC_LINUX_SIZEOF_CDSCRREGSET : 0);
+	    break;
+	  case NT_PPC_TM_CTAR:
+	    regset->size = (features.htm ?
+			    PPC_LINUX_SIZEOF_CTARREGSET : 0);
+	    break;
+	  default:
+	    break;
+	  }
+	break;
+      default:
+	break;
+      }
+}
+
+/* Implementation of target ops method "supports_tracepoints".  */
+
+bool
+ppc_target::supports_tracepoints ()
+{
+  return true;
+}
+
+/* Get the thread area address.  This is used to recognize which
+   thread is which when tracing with the in-process agent library.  We
+   don't read anything from the address, and treat it as opaque; it's
+   the address itself that we assume is unique per-thread.  */
+
+int
+ppc_target::low_get_thread_area (int lwpid, CORE_ADDR *addr)
+{
+  struct lwp_info *lwp = find_lwp_pid (ptid_t (lwpid));
+  struct thread_info *thr = get_lwp_thread (lwp);
+  struct regcache *regcache = get_thread_regcache (thr, 1);
+  ULONGEST tp = 0;
+
+#ifdef __powerpc64__
+  if (register_size (regcache->tdesc, 0) == 8)
+    collect_register_by_name (regcache, "r13", &tp);
+  else
+#endif
+    collect_register_by_name (regcache, "r2", &tp);
+
+  *addr = tp;
+
+  return 0;
+}
+
+#ifdef __powerpc64__
+
+/* Older glibc doesn't provide this.  */
+
+#ifndef EF_PPC64_ABI
+#define EF_PPC64_ABI 3
+#endif
+
+/* Returns 1 if inferior is using ELFv2 ABI.  Undefined for 32-bit
+   inferiors.  */
+
+static int
+is_elfv2_inferior (void)
+{
+  /* To be used as fallback if we're unable to determine the right result -
+     assume inferior uses the same ABI as gdbserver.  */
+#if _CALL_ELF == 2
+  const int def_res = 1;
+#else
+  const int def_res = 0;
+#endif
+  CORE_ADDR phdr;
+  Elf64_Ehdr ehdr;
+
+  const struct target_desc *tdesc = current_process ()->tdesc;
+  int wordsize = register_size (tdesc, 0);
+
+  if (!linux_get_auxv (wordsize, AT_PHDR, &phdr))
+    return def_res;
+
+  /* Assume ELF header is at the beginning of the page where program headers
+     are located.  If it doesn't look like one, bail.  */
+
+  read_inferior_memory (phdr & ~0xfff, (unsigned char *) &ehdr, sizeof ehdr);
+  if (memcmp(ehdr.e_ident, ELFMAG, SELFMAG))
+    return def_res;
+
+  return (ehdr.e_flags & EF_PPC64_ABI) == 2;
+}
+
+#endif
+
+/* Generate a ds-form instruction in BUF and return the number of bytes written
+
+   0      6     11   16          30 32
+   | OPCD | RST | RA |     DS    |XO|  */
+
+__attribute__((unused)) /* Maybe unused due to conditional compilation.  */
+static int
+gen_ds_form (uint32_t *buf, int opcd, int rst, int ra, int ds, int xo)
+{
+  uint32_t insn;
+
+  gdb_assert ((opcd & ~0x3f) == 0);
+  gdb_assert ((rst & ~0x1f) == 0);
+  gdb_assert ((ra & ~0x1f) == 0);
+  gdb_assert ((xo & ~0x3) == 0);
+
+  insn = (rst << 21) | (ra << 16) | (ds & 0xfffc) | (xo & 0x3);
+  *buf = (opcd << 26) | insn;
+  return 1;
+}
+
+/* Followings are frequently used ds-form instructions.  */
+
+#define GEN_STD(buf, rs, ra, offset)	gen_ds_form (buf, 62, rs, ra, offset, 0)
+#define GEN_STDU(buf, rs, ra, offset)	gen_ds_form (buf, 62, rs, ra, offset, 1)
+#define GEN_LD(buf, rt, ra, offset)	gen_ds_form (buf, 58, rt, ra, offset, 0)
+#define GEN_LDU(buf, rt, ra, offset)	gen_ds_form (buf, 58, rt, ra, offset, 1)
+
+/* Generate a d-form instruction in BUF.
+
+   0      6     11   16             32
+   | OPCD | RST | RA |       D      |  */
+
+static int
+gen_d_form (uint32_t *buf, int opcd, int rst, int ra, int si)
+{
+  uint32_t insn;
+
+  gdb_assert ((opcd & ~0x3f) == 0);
+  gdb_assert ((rst & ~0x1f) == 0);
+  gdb_assert ((ra & ~0x1f) == 0);
+
+  insn = (rst << 21) | (ra << 16) | (si & 0xffff);
+  *buf = (opcd << 26) | insn;
+  return 1;
+}
+
+/* Followings are frequently used d-form instructions.  */
+
+#define GEN_ADDI(buf, rt, ra, si)	gen_d_form (buf, 14, rt, ra, si)
+#define GEN_ADDIS(buf, rt, ra, si)	gen_d_form (buf, 15, rt, ra, si)
+#define GEN_LI(buf, rt, si)		GEN_ADDI (buf, rt, 0, si)
+#define GEN_LIS(buf, rt, si)		GEN_ADDIS (buf, rt, 0, si)
+#define GEN_ORI(buf, rt, ra, si)	gen_d_form (buf, 24, rt, ra, si)
+#define GEN_ORIS(buf, rt, ra, si)	gen_d_form (buf, 25, rt, ra, si)
+#define GEN_LWZ(buf, rt, ra, si)	gen_d_form (buf, 32, rt, ra, si)
+#define GEN_STW(buf, rt, ra, si)	gen_d_form (buf, 36, rt, ra, si)
+#define GEN_STWU(buf, rt, ra, si)	gen_d_form (buf, 37, rt, ra, si)
+
+/* Generate a xfx-form instruction in BUF and return the number of bytes
+   written.
+
+   0      6     11         21        31 32
+   | OPCD | RST |    RI    |    XO   |/|  */
+
+static int
+gen_xfx_form (uint32_t *buf, int opcd, int rst, int ri, int xo)
+{
+  uint32_t insn;
+  unsigned int n = ((ri & 0x1f) << 5) | ((ri >> 5) & 0x1f);
+
+  gdb_assert ((opcd & ~0x3f) == 0);
+  gdb_assert ((rst & ~0x1f) == 0);
+  gdb_assert ((xo & ~0x3ff) == 0);
+
+  insn = (rst << 21) | (n << 11) | (xo << 1);
+  *buf = (opcd << 26) | insn;
+  return 1;
+}
+
+/* Followings are frequently used xfx-form instructions.  */
+
+#define GEN_MFSPR(buf, rt, spr)		gen_xfx_form (buf, 31, rt, spr, 339)
+#define GEN_MTSPR(buf, rt, spr)		gen_xfx_form (buf, 31, rt, spr, 467)
+#define GEN_MFCR(buf, rt)		gen_xfx_form (buf, 31, rt, 0, 19)
+#define GEN_MTCR(buf, rt)		gen_xfx_form (buf, 31, rt, 0x3cf, 144)
+#define GEN_SYNC(buf, L, E)             gen_xfx_form (buf, 31, L & 0x3, \
+						      E & 0xf, 598)
+#define GEN_LWSYNC(buf)			GEN_SYNC (buf, 1, 0)
+
+
+/* Generate a x-form instruction in BUF and return the number of bytes written.
+
+   0      6     11   16   21       31 32
+   | OPCD | RST | RA | RB |   XO   |RC|  */
+
+static int
+gen_x_form (uint32_t *buf, int opcd, int rst, int ra, int rb, int xo, int rc)
+{
+  uint32_t insn;
+
+  gdb_assert ((opcd & ~0x3f) == 0);
+  gdb_assert ((rst & ~0x1f) == 0);
+  gdb_assert ((ra & ~0x1f) == 0);
+  gdb_assert ((rb & ~0x1f) == 0);
+  gdb_assert ((xo & ~0x3ff) == 0);
+  gdb_assert ((rc & ~1) == 0);
+
+  insn = (rst << 21) | (ra << 16) | (rb << 11) | (xo << 1) | rc;
+  *buf = (opcd << 26) | insn;
+  return 1;
+}
+
+/* Followings are frequently used x-form instructions.  */
+
+#define GEN_OR(buf, ra, rs, rb)		gen_x_form (buf, 31, rs, ra, rb, 444, 0)
+#define GEN_MR(buf, ra, rs)		GEN_OR (buf, ra, rs, rs)
+#define GEN_LWARX(buf, rt, ra, rb)	gen_x_form (buf, 31, rt, ra, rb, 20, 0)
+#define GEN_STWCX(buf, rs, ra, rb)	gen_x_form (buf, 31, rs, ra, rb, 150, 1)
+/* Assume bf = cr7.  */
+#define GEN_CMPW(buf, ra, rb)		gen_x_form (buf, 31, 28, ra, rb, 0, 0)
+
+
+/* Generate a md-form instruction in BUF and return the number of bytes written.
+
+   0      6    11   16   21   27   30 31 32
+   | OPCD | RS | RA | sh | mb | XO |sh|Rc|  */
+
+static int
+gen_md_form (uint32_t *buf, int opcd, int rs, int ra, int sh, int mb,
+	     int xo, int rc)
+{
+  uint32_t insn;
+  unsigned int n = ((mb & 0x1f) << 1) | ((mb >> 5) & 0x1);
+  unsigned int sh0_4 = sh & 0x1f;
+  unsigned int sh5 = (sh >> 5) & 1;
+
+  gdb_assert ((opcd & ~0x3f) == 0);
+  gdb_assert ((rs & ~0x1f) == 0);
+  gdb_assert ((ra & ~0x1f) == 0);
+  gdb_assert ((sh & ~0x3f) == 0);
+  gdb_assert ((mb & ~0x3f) == 0);
+  gdb_assert ((xo & ~0x7) == 0);
+  gdb_assert ((rc & ~0x1) == 0);
+
+  insn = (rs << 21) | (ra << 16) | (sh0_4 << 11) | (n << 5)
+	 | (sh5 << 1) | (xo << 2) | (rc & 1);
+  *buf = (opcd << 26) | insn;
+  return 1;
+}
+
+/* The following are frequently used md-form instructions.  */
+
+#define GEN_RLDICL(buf, ra, rs ,sh, mb) \
+				gen_md_form (buf, 30, rs, ra, sh, mb, 0, 0)
+#define GEN_RLDICR(buf, ra, rs ,sh, mb) \
+				gen_md_form (buf, 30, rs, ra, sh, mb, 1, 0)
+
+/* Generate a i-form instruction in BUF and return the number of bytes written.
+
+   0      6                          30 31 32
+   | OPCD |            LI            |AA|LK|  */
+
+static int
+gen_i_form (uint32_t *buf, int opcd, int li, int aa, int lk)
+{
+  uint32_t insn;
+
+  gdb_assert ((opcd & ~0x3f) == 0);
+
+  insn = (li & 0x3fffffc) | (aa & 1) | (lk & 1);
+  *buf = (opcd << 26) | insn;
+  return 1;
+}
+
+/* The following are frequently used i-form instructions.  */
+
+#define GEN_B(buf, li)		gen_i_form (buf, 18, li, 0, 0)
+#define GEN_BL(buf, li)		gen_i_form (buf, 18, li, 0, 1)
+
+/* Generate a b-form instruction in BUF and return the number of bytes written.
+
+   0      6    11   16               30 31 32
+   | OPCD | BO | BI |      BD        |AA|LK|  */
+
+static int
+gen_b_form (uint32_t *buf, int opcd, int bo, int bi, int bd,
+	    int aa, int lk)
+{
+  uint32_t insn;
+
+  gdb_assert ((opcd & ~0x3f) == 0);
+  gdb_assert ((bo & ~0x1f) == 0);
+  gdb_assert ((bi & ~0x1f) == 0);
+
+  insn = (bo << 21) | (bi << 16) | (bd & 0xfffc) | (aa & 1) | (lk & 1);
+  *buf = (opcd << 26) | insn;
+  return 1;
+}
+
+/* The following are frequently used b-form instructions.  */
+/* Assume bi = cr7.  */
+#define GEN_BNE(buf, bd)  gen_b_form (buf, 16, 0x4, (7 << 2) | 2, bd, 0 ,0)
+
+/* GEN_LOAD and GEN_STORE generate 64- or 32-bit load/store for ppc64 or ppc32
+   respectively.  They are primary used for save/restore GPRs in jump-pad,
+   not used for bytecode compiling.  */
+
+#ifdef __powerpc64__
+#define GEN_LOAD(buf, rt, ra, si, is_64)	(is_64 ? \
+						 GEN_LD (buf, rt, ra, si) : \
+						 GEN_LWZ (buf, rt, ra, si))
+#define GEN_STORE(buf, rt, ra, si, is_64)	(is_64 ? \
+						 GEN_STD (buf, rt, ra, si) : \
+						 GEN_STW (buf, rt, ra, si))
+#else
+#define GEN_LOAD(buf, rt, ra, si, is_64)	GEN_LWZ (buf, rt, ra, si)
+#define GEN_STORE(buf, rt, ra, si, is_64)	GEN_STW (buf, rt, ra, si)
+#endif
+
+/* Generate a sequence of instructions to load IMM in the register REG.
+   Write the instructions in BUF and return the number of bytes written.  */
+
+static int
+gen_limm (uint32_t *buf, int reg, uint64_t imm, int is_64)
+{
+  uint32_t *p = buf;
+
+  if ((imm + 32768) < 65536)
+    {
+      /* li	reg, imm[15:0] */
+      p += GEN_LI (p, reg, imm);
+    }
+  else if ((imm >> 32) == 0)
+    {
+      /* lis	reg, imm[31:16]
+	 ori	reg, reg, imm[15:0]
+	 rldicl reg, reg, 0, 32 */
+      p += GEN_LIS (p, reg, (imm >> 16) & 0xffff);
+      if ((imm & 0xffff) != 0)
+	p += GEN_ORI (p, reg, reg, imm & 0xffff);
+      /* Clear upper 32-bit if sign-bit is set.  */
+      if (imm & (1u << 31) && is_64)
+	p += GEN_RLDICL (p, reg, reg, 0, 32);
+    }
+  else
+    {
+      gdb_assert (is_64);
+      /* lis    reg, <imm[63:48]>
+	 ori    reg, reg, <imm[48:32]>
+	 rldicr reg, reg, 32, 31
+	 oris   reg, reg, <imm[31:16]>
+	 ori    reg, reg, <imm[15:0]> */
+      p += GEN_LIS (p, reg, ((imm >> 48) & 0xffff));
+      if (((imm >> 32) & 0xffff) != 0)
+        p += GEN_ORI (p, reg, reg, ((imm >> 32) & 0xffff));
+      p += GEN_RLDICR (p, reg, reg, 32, 31);
+      if (((imm >> 16) & 0xffff) != 0)
+        p += GEN_ORIS (p, reg, reg, ((imm >> 16) & 0xffff));
+      if ((imm & 0xffff) != 0)
+        p += GEN_ORI (p, reg, reg, (imm & 0xffff));
+    }
+
+  return p - buf;
+}
+
+/* Generate a sequence for atomically exchange at location LOCK.
+   This code sequence clobbers r6, r7, r8.  LOCK is the location for
+   the atomic-xchg, OLD_VALUE is expected old value stored in the
+   location, and R_NEW is a register for the new value.  */
+
+static int
+gen_atomic_xchg (uint32_t *buf, CORE_ADDR lock, int old_value, int r_new,
+		 int is_64)
+{
+  const int r_lock = 6;
+  const int r_old = 7;
+  const int r_tmp = 8;
+  uint32_t *p = buf;
+
+  /*
+  1: lwarx   TMP, 0, LOCK
+     cmpwi   TMP, OLD
+     bne     1b
+     stwcx.  NEW, 0, LOCK
+     bne     1b */
+
+  p += gen_limm (p, r_lock, lock, is_64);
+  p += gen_limm (p, r_old, old_value, is_64);
+
+  p += GEN_LWARX (p, r_tmp, 0, r_lock);
+  p += GEN_CMPW (p, r_tmp, r_old);
+  p += GEN_BNE (p, -8);
+  p += GEN_STWCX (p, r_new, 0, r_lock);
+  p += GEN_BNE (p, -16);
+
+  return p - buf;
+}
+
+/* Generate a sequence of instructions for calling a function
+   at address of FN.  Return the number of bytes are written in BUF.  */
+
+static int
+gen_call (uint32_t *buf, CORE_ADDR fn, int is_64, int is_opd)
+{
+  uint32_t *p = buf;
+
+  /* Must be called by r12 for caller to calculate TOC address. */
+  p += gen_limm (p, 12, fn, is_64);
+  if (is_opd)
+    {
+      p += GEN_LOAD (p, 11, 12, 16, is_64);
+      p += GEN_LOAD (p, 2, 12, 8, is_64);
+      p += GEN_LOAD (p, 12, 12, 0, is_64);
+    }
+  p += GEN_MTSPR (p, 12, 9);		/* mtctr  r12 */
+  *p++ = 0x4e800421;			/* bctrl */
+
+  return p - buf;
+}
+
+/* Copy the instruction from OLDLOC to *TO, and update *TO to *TO + size
+   of instruction.  This function is used to adjust pc-relative instructions
+   when copying.  */
+
+static void
+ppc_relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc)
+{
+  uint32_t insn, op6;
+  long rel, newrel;
+
+  read_inferior_memory (oldloc, (unsigned char *) &insn, 4);
+  op6 = PPC_OP6 (insn);
+
+  if (op6 == 18 && (insn & 2) == 0)
+    {
+      /* branch && AA = 0 */
+      rel = PPC_LI (insn);
+      newrel = (oldloc - *to) + rel;
+
+      /* Out of range. Cannot relocate instruction.  */
+      if (newrel >= (1 << 25) || newrel < -(1 << 25))
+	return;
+
+      insn = (insn & ~0x3fffffc) | (newrel & 0x3fffffc);
+    }
+  else if (op6 == 16 && (insn & 2) == 0)
+    {
+      /* conditional branch && AA = 0 */
+
+      /* If the new relocation is too big for even a 26-bit unconditional
+	 branch, there is nothing we can do.  Just abort.
+
+	 Otherwise, if it can be fit in 16-bit conditional branch, just
+	 copy the instruction and relocate the address.
+
+	 If the it's  big for conditional-branch (16-bit), try to invert the
+	 condition and jump with 26-bit branch.  For example,
+
+	 beq  .Lgoto
+	 INSN1
+
+	 =>
+
+	 bne  1f (+8)
+	 b    .Lgoto
+       1:INSN1
+
+	 After this transform, we are actually jump from *TO+4 instead of *TO,
+	 so check the relocation again because it will be 1-insn farther then
+	 before if *TO is after OLDLOC.
+
+
+	 For BDNZT (or so) is transformed from
+
+	 bdnzt  eq, .Lgoto
+	 INSN1
+
+	 =>
+
+	 bdz    1f (+12)
+	 bf     eq, 1f (+8)
+	 b      .Lgoto
+       1:INSN1
+
+	 See also "BO field encodings".  */
+
+      rel = PPC_BD (insn);
+      newrel = (oldloc - *to) + rel;
+
+      if (newrel < (1 << 15) && newrel >= -(1 << 15))
+	insn = (insn & ~0xfffc) | (newrel & 0xfffc);
+      else if ((PPC_BO (insn) & 0x14) == 0x4 || (PPC_BO (insn) & 0x14) == 0x10)
+	{
+	  newrel -= 4;
+
+	  /* Out of range. Cannot relocate instruction.  */
+	  if (newrel >= (1 << 25) || newrel < -(1 << 25))
+	    return;
+
+	  if ((PPC_BO (insn) & 0x14) == 0x4)
+	    insn ^= (1 << 24);
+	  else if ((PPC_BO (insn) & 0x14) == 0x10)
+	    insn ^= (1 << 22);
+
+	  /* Jump over the unconditional branch.  */
+	  insn = (insn & ~0xfffc) | 0x8;
+	  target_write_memory (*to, (unsigned char *) &insn, 4);
+	  *to += 4;
+
+	  /* Build a unconditional branch and copy LK bit.  */
+	  insn = (18 << 26) | (0x3fffffc & newrel) | (insn & 0x3);
+	  target_write_memory (*to, (unsigned char *) &insn, 4);
+	  *to += 4;
+
+	  return;
+	}
+      else if ((PPC_BO (insn) & 0x14) == 0)
+	{
+	  uint32_t bdnz_insn = (16 << 26) | (0x10 << 21) | 12;
+	  uint32_t bf_insn = (16 << 26) | (0x4 << 21) | 8;
+
+	  newrel -= 8;
+
+	  /* Out of range. Cannot relocate instruction.  */
+	  if (newrel >= (1 << 25) || newrel < -(1 << 25))
+	    return;
+
+	  /* Copy BI field.  */
+	  bf_insn |= (insn & 0x1f0000);
+
+	  /* Invert condition.  */
+	  bdnz_insn |= (insn ^ (1 << 22)) & (1 << 22);
+	  bf_insn |= (insn ^ (1 << 24)) & (1 << 24);
+
+	  target_write_memory (*to, (unsigned char *) &bdnz_insn, 4);
+	  *to += 4;
+	  target_write_memory (*to, (unsigned char *) &bf_insn, 4);
+	  *to += 4;
+
+	  /* Build a unconditional branch and copy LK bit.  */
+	  insn = (18 << 26) | (0x3fffffc & newrel) | (insn & 0x3);
+	  target_write_memory (*to, (unsigned char *) &insn, 4);
+	  *to += 4;
+
+	  return;
+	}
+      else /* (BO & 0x14) == 0x14, branch always.  */
+	{
+	  /* Out of range. Cannot relocate instruction.  */
+	  if (newrel >= (1 << 25) || newrel < -(1 << 25))
+	    return;
+
+	  /* Build a unconditional branch and copy LK bit.  */
+	  insn = (18 << 26) | (0x3fffffc & newrel) | (insn & 0x3);
+	  target_write_memory (*to, (unsigned char *) &insn, 4);
+	  *to += 4;
+
+	  return;
+	}
+    }
+
+  target_write_memory (*to, (unsigned char *) &insn, 4);
+  *to += 4;
+}
+
+bool
+ppc_target::supports_fast_tracepoints ()
+{
+  return true;
+}
+
+/* Implement install_fast_tracepoint_jump_pad of target_ops.
+   See target.h for details.  */
+
+int
+ppc_target::install_fast_tracepoint_jump_pad (CORE_ADDR tpoint,
+					      CORE_ADDR tpaddr,
+					      CORE_ADDR collector,
+					      CORE_ADDR lockaddr,
+					      ULONGEST orig_size,
+					      CORE_ADDR *jump_entry,
+					      CORE_ADDR *trampoline,
+					      ULONGEST *trampoline_size,
+					      unsigned char *jjump_pad_insn,
+					      ULONGEST *jjump_pad_insn_size,
+					      CORE_ADDR *adjusted_insn_addr,
+					      CORE_ADDR *adjusted_insn_addr_end,
+					      char *err)
+{
+  uint32_t buf[256];
+  uint32_t *p = buf;
+  int j, offset;
+  CORE_ADDR buildaddr = *jump_entry;
+  const CORE_ADDR entryaddr = *jump_entry;
+  int rsz, min_frame, frame_size, tp_reg;
+#ifdef __powerpc64__
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+  int is_64 = register_size (regcache->tdesc, 0) == 8;
+  int is_opd = is_64 && !is_elfv2_inferior ();
+#else
+  int is_64 = 0, is_opd = 0;
+#endif
+
+#ifdef __powerpc64__
+  if (is_64)
+    {
+      /* Minimum frame size is 32 bytes for ELFv2, and 112 bytes for ELFv1.  */
+      rsz = 8;
+      min_frame = 112;
+      frame_size = (40 * rsz) + min_frame;
+      tp_reg = 13;
+    }
+  else
+    {
+#endif
+      rsz = 4;
+      min_frame = 16;
+      frame_size = (40 * rsz) + min_frame;
+      tp_reg = 2;
+#ifdef __powerpc64__
+    }
+#endif
+
+  /* Stack frame layout for this jump pad,
+
+     High	thread_area (r13/r2)    |
+		tpoint			- collecting_t obj
+		PC/<tpaddr>		| +36
+		CTR			| +35
+		LR			| +34
+		XER			| +33
+		CR			| +32
+		R31			|
+		R29			|
+		...			|
+		R1			| +1
+		R0			- collected registers
+		...			|
+		...			|
+     Low	Back-chain		-
+
+
+     The code flow of this jump pad,
+
+     1. Adjust SP
+     2. Save GPR and SPR
+     3. Prepare argument
+     4. Call gdb_collector
+     5. Restore GPR and SPR
+     6. Restore SP
+     7. Build a jump for back to the program
+     8. Copy/relocate original instruction
+     9. Build a jump for replacing original instruction.  */
+
+  /* Adjust stack pointer.  */
+  if (is_64)
+    p += GEN_STDU (p, 1, 1, -frame_size);		/* stdu   r1,-frame_size(r1) */
+  else
+    p += GEN_STWU (p, 1, 1, -frame_size);		/* stwu   r1,-frame_size(r1) */
+
+  /* Store GPRs.  Save R1 later, because it had just been modified, but
+     we want the original value.  */
+  for (j = 2; j < 32; j++)
+    p += GEN_STORE (p, j, 1, min_frame + j * rsz, is_64);
+  p += GEN_STORE (p, 0, 1, min_frame + 0 * rsz, is_64);
+  /* Set r0 to the original value of r1 before adjusting stack frame,
+     and then save it.  */
+  p += GEN_ADDI (p, 0, 1, frame_size);
+  p += GEN_STORE (p, 0, 1, min_frame + 1 * rsz, is_64);
+
+  /* Save CR, XER, LR, and CTR.  */
+  p += GEN_MFCR (p, 3);					/* mfcr   r3 */
+  p += GEN_MFSPR (p, 4, 1);				/* mfxer  r4 */
+  p += GEN_MFSPR (p, 5, 8);				/* mflr   r5 */
+  p += GEN_MFSPR (p, 6, 9);				/* mfctr  r6 */
+  p += GEN_STORE (p, 3, 1, min_frame + 32 * rsz, is_64);/* std    r3, 32(r1) */
+  p += GEN_STORE (p, 4, 1, min_frame + 33 * rsz, is_64);/* std    r4, 33(r1) */
+  p += GEN_STORE (p, 5, 1, min_frame + 34 * rsz, is_64);/* std    r5, 34(r1) */
+  p += GEN_STORE (p, 6, 1, min_frame + 35 * rsz, is_64);/* std    r6, 35(r1) */
+
+  /* Save PC<tpaddr>  */
+  p += gen_limm (p, 3, tpaddr, is_64);
+  p += GEN_STORE (p, 3, 1, min_frame + 36 * rsz, is_64);
+
+
+  /* Setup arguments to collector.  */
+  /* Set r4 to collected registers.  */
+  p += GEN_ADDI (p, 4, 1, min_frame);
+  /* Set r3 to TPOINT.  */
+  p += gen_limm (p, 3, tpoint, is_64);
+
+  /* Prepare collecting_t object for lock.  */
+  p += GEN_STORE (p, 3, 1, min_frame + 37 * rsz, is_64);
+  p += GEN_STORE (p, tp_reg, 1, min_frame + 38 * rsz, is_64);
+  /* Set R5 to collecting object.  */
+  p += GEN_ADDI (p, 5, 1, 37 * rsz);
+
+  p += GEN_LWSYNC (p);
+  p += gen_atomic_xchg (p, lockaddr, 0, 5, is_64);
+  p += GEN_LWSYNC (p);
+
+  /* Call to collector.  */
+  p += gen_call (p, collector, is_64, is_opd);
+
+  /* Simply write 0 to release the lock.  */
+  p += gen_limm (p, 3, lockaddr, is_64);
+  p += gen_limm (p, 4, 0, is_64);
+  p += GEN_LWSYNC (p);
+  p += GEN_STORE (p, 4, 3, 0, is_64);
+
+  /* Restore stack and registers.  */
+  p += GEN_LOAD (p, 3, 1, min_frame + 32 * rsz, is_64);	/* ld	r3, 32(r1) */
+  p += GEN_LOAD (p, 4, 1, min_frame + 33 * rsz, is_64);	/* ld	r4, 33(r1) */
+  p += GEN_LOAD (p, 5, 1, min_frame + 34 * rsz, is_64);	/* ld	r5, 34(r1) */
+  p += GEN_LOAD (p, 6, 1, min_frame + 35 * rsz, is_64);	/* ld	r6, 35(r1) */
+  p += GEN_MTCR (p, 3);					/* mtcr	  r3 */
+  p += GEN_MTSPR (p, 4, 1);				/* mtxer  r4 */
+  p += GEN_MTSPR (p, 5, 8);				/* mtlr   r5 */
+  p += GEN_MTSPR (p, 6, 9);				/* mtctr  r6 */
+
+  /* Restore GPRs.  */
+  for (j = 2; j < 32; j++)
+    p += GEN_LOAD (p, j, 1, min_frame + j * rsz, is_64);
+  p += GEN_LOAD (p, 0, 1, min_frame + 0 * rsz, is_64);
+  /* Restore SP.  */
+  p += GEN_ADDI (p, 1, 1, frame_size);
+
+  /* Flush instructions to inferior memory.  */
+  target_write_memory (buildaddr, (unsigned char *) buf, (p - buf) * 4);
+
+  /* Now, insert the original instruction to execute in the jump pad.  */
+  *adjusted_insn_addr = buildaddr + (p - buf) * 4;
+  *adjusted_insn_addr_end = *adjusted_insn_addr;
+  ppc_relocate_instruction (adjusted_insn_addr_end, tpaddr);
+
+  /* Verify the relocation size.  If should be 4 for normal copy,
+     8 or 12 for some conditional branch.  */
+  if ((*adjusted_insn_addr_end - *adjusted_insn_addr == 0)
+      || (*adjusted_insn_addr_end - *adjusted_insn_addr > 12))
+    {
+      sprintf (err, "E.Unexpected instruction length = %d"
+		    "when relocate instruction.",
+		    (int) (*adjusted_insn_addr_end - *adjusted_insn_addr));
+      return 1;
+    }
+
+  buildaddr = *adjusted_insn_addr_end;
+  p = buf;
+  /* Finally, write a jump back to the program.  */
+  offset = (tpaddr + 4) - buildaddr;
+  if (offset >= (1 << 25) || offset < -(1 << 25))
+    {
+      sprintf (err, "E.Jump back from jump pad too far from tracepoint "
+		    "(offset 0x%x > 26-bit).", offset);
+      return 1;
+    }
+  /* b <tpaddr+4> */
+  p += GEN_B (p, offset);
+  target_write_memory (buildaddr, (unsigned char *) buf, (p - buf) * 4);
+  *jump_entry = buildaddr + (p - buf) * 4;
+
+  /* The jump pad is now built.  Wire in a jump to our jump pad.  This
+     is always done last (by our caller actually), so that we can
+     install fast tracepoints with threads running.  This relies on
+     the agent's atomic write support.  */
+  offset = entryaddr - tpaddr;
+  if (offset >= (1 << 25) || offset < -(1 << 25))
+    {
+      sprintf (err, "E.Jump back from jump pad too far from tracepoint "
+		    "(offset 0x%x > 26-bit).", offset);
+      return 1;
+    }
+  /* b <jentry> */
+  GEN_B ((uint32_t *) jjump_pad_insn, offset);
+  *jjump_pad_insn_size = 4;
+
+  return 0;
+}
+
+/* Returns the minimum instruction length for installing a tracepoint.  */
+
+int
+ppc_target::get_min_fast_tracepoint_insn_len ()
+{
+  return 4;
+}
+
+/* Emits a given buffer into the target at current_insn_ptr.  Length
+   is in units of 32-bit words.  */
+
+static void
+emit_insns (uint32_t *buf, int n)
+{
+  n = n * sizeof (uint32_t);
+  target_write_memory (current_insn_ptr, (unsigned char *) buf, n);
+  current_insn_ptr += n;
+}
+
+#define __EMIT_ASM(NAME, INSNS)					\
+  do								\
+    {								\
+      extern uint32_t start_bcax_ ## NAME [];			\
+      extern uint32_t end_bcax_ ## NAME [];			\
+      emit_insns (start_bcax_ ## NAME,				\
+		  end_bcax_ ## NAME - start_bcax_ ## NAME);	\
+      __asm__ (".section .text.__ppcbcax\n\t"			\
+	       "start_bcax_" #NAME ":\n\t"			\
+	       INSNS "\n\t"					\
+	       "end_bcax_" #NAME ":\n\t"			\
+	       ".previous\n\t");				\
+    } while (0)
+
+#define _EMIT_ASM(NAME, INSNS)		__EMIT_ASM (NAME, INSNS)
+#define EMIT_ASM(INSNS)			_EMIT_ASM (__LINE__, INSNS)
+
+/*
+
+  Bytecode execution stack frame - 32-bit
+
+	|  LR save area           (SP + 4)
+ SP' -> +- Back chain             (SP + 0)
+	|  Save r31   for access saved arguments
+	|  Save r30   for bytecode stack pointer
+	|  Save r4    for incoming argument *value
+	|  Save r3    for incoming argument regs
+ r30 -> +- Bytecode execution stack
+	|
+	|  64-byte (8 doublewords) at initial.
+	|  Expand stack as needed.
+	|
+	+-
+        |  Some padding for minimum stack frame and 16-byte alignment.
+        |  16 bytes.
+ SP     +- Back-chain (SP')
+
+  initial frame size
+  = 16 + (4 * 4) + 64
+  = 96
+
+   r30 is the stack-pointer for bytecode machine.
+       It should point to next-empty, so we can use LDU for pop.
+   r3  is used for cache of the high part of TOP value.
+       It was the first argument, pointer to regs.
+   r4  is used for cache of the low part of TOP value.
+       It was the second argument, pointer to the result.
+       We should set *result = TOP after leaving this function.
+
+ Note:
+ * To restore stack at epilogue
+   => sp = r31
+ * To check stack is big enough for bytecode execution.
+   => r30 - 8 > SP + 8
+ * To return execution result.
+   => 0(r4) = TOP
+
+ */
+
+/* Regardless of endian, register 3 is always high part, 4 is low part.
+   These defines are used when the register pair is stored/loaded.
+   Likewise, to simplify code, have a similiar define for 5:6. */
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define TOP_FIRST	"4"
+#define TOP_SECOND	"3"
+#define TMP_FIRST	"6"
+#define TMP_SECOND	"5"
+#else
+#define TOP_FIRST	"3"
+#define TOP_SECOND	"4"
+#define TMP_FIRST	"5"
+#define TMP_SECOND	"6"
+#endif
+
+/* Emit prologue in inferior memory.  See above comments.  */
+
+static void
+ppc_emit_prologue (void)
+{
+  EMIT_ASM (/* Save return address.  */
+	    "mflr  0		\n"
+	    "stw   0, 4(1)	\n"
+	    /* Adjust SP.  96 is the initial frame size.  */
+	    "stwu  1, -96(1)	\n"
+	    /* Save r30 and incoming arguments.  */
+	    "stw   31, 96-4(1)	\n"
+	    "stw   30, 96-8(1)	\n"
+	    "stw   4, 96-12(1)	\n"
+	    "stw   3, 96-16(1)	\n"
+	    /* Point r31 to original r1 for access arguments.  */
+	    "addi  31, 1, 96	\n"
+	    /* Set r30 to pointing stack-top.  */
+	    "addi  30, 1, 64	\n"
+	    /* Initial r3/TOP to 0.  */
+	    "li    3, 0		\n"
+	    "li    4, 0		\n");
+}
+
+/* Emit epilogue in inferior memory.  See above comments.  */
+
+static void
+ppc_emit_epilogue (void)
+{
+  EMIT_ASM (/* *result = TOP */
+	    "lwz   5, -12(31)	\n"
+	    "stw   " TOP_FIRST ", 0(5)	\n"
+	    "stw   " TOP_SECOND ", 4(5)	\n"
+	    /* Restore registers.  */
+	    "lwz   31, -4(31)	\n"
+	    "lwz   30, -8(31)	\n"
+	    /* Restore SP.  */
+	    "lwz   1, 0(1)      \n"
+	    /* Restore LR.  */
+	    "lwz   0, 4(1)	\n"
+	    /* Return 0 for no-error.  */
+	    "li    3, 0		\n"
+	    "mtlr  0		\n"
+	    "blr		\n");
+}
+
+/* TOP = stack[--sp] + TOP  */
+
+static void
+ppc_emit_add (void)
+{
+  EMIT_ASM ("lwzu  " TMP_FIRST ", 8(30)	\n"
+	    "lwz   " TMP_SECOND ", 4(30)\n"
+	    "addc  4, 6, 4	\n"
+	    "adde  3, 5, 3	\n");
+}
+
+/* TOP = stack[--sp] - TOP  */
+
+static void
+ppc_emit_sub (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "subfc  4, 4, 6	\n"
+	    "subfe  3, 3, 5	\n");
+}
+
+/* TOP = stack[--sp] * TOP  */
+
+static void
+ppc_emit_mul (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "mulhwu 7, 6, 4	\n"
+	    "mullw  3, 6, 3	\n"
+	    "mullw  5, 4, 5	\n"
+	    "mullw  4, 6, 4	\n"
+	    "add    3, 5, 3	\n"
+	    "add    3, 7, 3	\n");
+}
+
+/* TOP = stack[--sp] << TOP  */
+
+static void
+ppc_emit_lsh (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "subfic 3, 4, 32\n"		/* r3 = 32 - TOP */
+	    "addi   7, 4, -32\n"	/* r7 = TOP - 32 */
+	    "slw    5, 5, 4\n"		/* Shift high part left */
+	    "slw    4, 6, 4\n"		/* Shift low part left */
+	    "srw    3, 6, 3\n"		/* Shift low to high if shift < 32 */
+	    "slw    7, 6, 7\n"		/* Shift low to high if shift >= 32 */
+	    "or     3, 5, 3\n"
+	    "or     3, 7, 3\n");	/* Assemble high part */
+}
+
+/* Top = stack[--sp] >> TOP
+   (Arithmetic shift right)  */
+
+static void
+ppc_emit_rsh_signed (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "addi   7, 4, -32\n"	/* r7 = TOP - 32 */
+	    "sraw   3, 5, 4\n"		/* Shift high part right */
+	    "cmpwi  7, 1\n"
+	    "blt    0, 1f\n"		/* If shift <= 32, goto 1: */
+	    "sraw   4, 5, 7\n"		/* Shift high to low */
+	    "b      2f\n"
+	    "1:\n"
+	    "subfic 7, 4, 32\n"		/* r7 = 32 - TOP */
+	    "srw    4, 6, 4\n"		/* Shift low part right */
+	    "slw    5, 5, 7\n"		/* Shift high to low */
+	    "or     4, 4, 5\n"		/* Assemble low part */
+	    "2:\n");
+}
+
+/* Top = stack[--sp] >> TOP
+   (Logical shift right)  */
+
+static void
+ppc_emit_rsh_unsigned (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "subfic 3, 4, 32\n"		/* r3 = 32 - TOP */
+	    "addi   7, 4, -32\n"	/* r7 = TOP - 32 */
+	    "srw    6, 6, 4\n"		/* Shift low part right */
+	    "slw    3, 5, 3\n"		/* Shift high to low if shift < 32 */
+	    "srw    7, 5, 7\n"		/* Shift high to low if shift >= 32 */
+	    "or     6, 6, 3\n"
+	    "srw    3, 5, 4\n"		/* Shift high part right */
+	    "or     4, 6, 7\n");	/* Assemble low part */
+}
+
+/* Emit code for signed-extension specified by ARG.  */
+
+static void
+ppc_emit_ext (int arg)
+{
+  switch (arg)
+    {
+    case 8:
+      EMIT_ASM ("extsb  4, 4\n"
+		"srawi 3, 4, 31");
+      break;
+    case 16:
+      EMIT_ASM ("extsh  4, 4\n"
+		"srawi 3, 4, 31");
+      break;
+    case 32:
+      EMIT_ASM ("srawi 3, 4, 31");
+      break;
+    default:
+      emit_error = 1;
+    }
+}
+
+/* Emit code for zero-extension specified by ARG.  */
+
+static void
+ppc_emit_zero_ext (int arg)
+{
+  switch (arg)
+    {
+    case 8:
+      EMIT_ASM ("clrlwi 4,4,24\n"
+		"li 3, 0\n");
+      break;
+    case 16:
+      EMIT_ASM ("clrlwi 4,4,16\n"
+		"li 3, 0\n");
+      break;
+    case 32:
+      EMIT_ASM ("li 3, 0");
+      break;
+    default:
+      emit_error = 1;
+    }
+}
+
+/* TOP = !TOP
+   i.e., TOP = (TOP == 0) ? 1 : 0;  */
+
+static void
+ppc_emit_log_not (void)
+{
+  EMIT_ASM ("or      4, 3, 4	\n"
+	    "cntlzw  4, 4	\n"
+	    "srwi    4, 4, 5	\n"
+	    "li      3, 0	\n");
+}
+
+/* TOP = stack[--sp] & TOP  */
+
+static void
+ppc_emit_bit_and (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "and  4, 6, 4	\n"
+	    "and  3, 5, 3	\n");
+}
+
+/* TOP = stack[--sp] | TOP  */
+
+static void
+ppc_emit_bit_or (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "or  4, 6, 4	\n"
+	    "or  3, 5, 3	\n");
+}
+
+/* TOP = stack[--sp] ^ TOP  */
+
+static void
+ppc_emit_bit_xor (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "xor  4, 6, 4	\n"
+	    "xor  3, 5, 3	\n");
+}
+
+/* TOP = ~TOP
+   i.e., TOP = ~(TOP | TOP)  */
+
+static void
+ppc_emit_bit_not (void)
+{
+  EMIT_ASM ("nor  3, 3, 3	\n"
+	    "nor  4, 4, 4	\n");
+}
+
+/* TOP = stack[--sp] == TOP  */
+
+static void
+ppc_emit_equal (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "xor     4, 6, 4	\n"
+	    "xor     3, 5, 3	\n"
+	    "or      4, 3, 4	\n"
+	    "cntlzw  4, 4	\n"
+	    "srwi    4, 4, 5	\n"
+	    "li      3, 0	\n");
+}
+
+/* TOP = stack[--sp] < TOP
+   (Signed comparison)  */
+
+static void
+ppc_emit_less_signed (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "cmplw   6, 6, 4		\n"
+	    "cmpw    7, 5, 3		\n"
+	    /* CR6 bit 0 = low less and high equal */
+	    "crand   6*4+0, 6*4+0, 7*4+2\n"
+	    /* CR7 bit 0 = (low less and high equal) or high less */
+	    "cror    7*4+0, 7*4+0, 6*4+0\n"
+	    "mfcr    4			\n"
+	    "rlwinm  4, 4, 29, 31, 31	\n"
+	    "li      3, 0		\n");
+}
+
+/* TOP = stack[--sp] < TOP
+   (Unsigned comparison)  */
+
+static void
+ppc_emit_less_unsigned (void)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "cmplw   6, 6, 4		\n"
+	    "cmplw   7, 5, 3		\n"
+	    /* CR6 bit 0 = low less and high equal */
+	    "crand   6*4+0, 6*4+0, 7*4+2\n"
+	    /* CR7 bit 0 = (low less and high equal) or high less */
+	    "cror    7*4+0, 7*4+0, 6*4+0\n"
+	    "mfcr    4			\n"
+	    "rlwinm  4, 4, 29, 31, 31	\n"
+	    "li      3, 0		\n");
+}
+
+/* Access the memory address in TOP in size of SIZE.
+   Zero-extend the read value.  */
+
+static void
+ppc_emit_ref (int size)
+{
+  switch (size)
+    {
+    case 1:
+      EMIT_ASM ("lbz   4, 0(4)\n"
+		"li    3, 0");
+      break;
+    case 2:
+      EMIT_ASM ("lhz   4, 0(4)\n"
+		"li    3, 0");
+      break;
+    case 4:
+      EMIT_ASM ("lwz   4, 0(4)\n"
+		"li    3, 0");
+      break;
+    case 8:
+      if (__BYTE_ORDER == __LITTLE_ENDIAN)
+	EMIT_ASM ("lwz   3, 4(4)\n"
+		  "lwz   4, 0(4)");
+      else
+	EMIT_ASM ("lwz   3, 0(4)\n"
+		  "lwz   4, 4(4)");
+      break;
+    }
+}
+
+/* TOP = NUM  */
+
+static void
+ppc_emit_const (LONGEST num)
+{
+  uint32_t buf[10];
+  uint32_t *p = buf;
+
+  p += gen_limm (p, 3, num >> 32 & 0xffffffff, 0);
+  p += gen_limm (p, 4, num & 0xffffffff, 0);
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* Set TOP to the value of register REG by calling get_raw_reg function
+   with two argument, collected buffer and register number.  */
+
+static void
+ppc_emit_reg (int reg)
+{
+  uint32_t buf[13];
+  uint32_t *p = buf;
+
+  /* fctx->regs is passed in r3 and then saved in -16(31).  */
+  p += GEN_LWZ (p, 3, 31, -16);
+  p += GEN_LI (p, 4, reg);	/* li	r4, reg */
+  p += gen_call (p, get_raw_reg_func_addr (), 0, 0);
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+
+  if (__BYTE_ORDER == __LITTLE_ENDIAN)
+    {
+      EMIT_ASM ("mr 5, 4\n"
+		"mr 4, 3\n"
+		"mr 3, 5\n");
+    }
+}
+
+/* TOP = stack[--sp] */
+
+static void
+ppc_emit_pop (void)
+{
+  EMIT_ASM ("lwzu " TOP_FIRST ", 8(30)	\n"
+	    "lwz " TOP_SECOND ", 4(30)	\n");
+}
+
+/* stack[sp++] = TOP
+
+   Because we may use up bytecode stack, expand 8 doublewords more
+   if needed.  */
+
+static void
+ppc_emit_stack_flush (void)
+{
+  /* Make sure bytecode stack is big enough before push.
+     Otherwise, expand 64-byte more.  */
+
+  EMIT_ASM ("  stw   " TOP_FIRST ", 0(30)	\n"
+	    "  stw   " TOP_SECOND ", 4(30)\n"
+	    "  addi  5, 30, -(8 + 8)	\n"
+	    "  cmpw  7, 5, 1		\n"
+	    "  bgt   7, 1f		\n"
+	    "  stwu  31, -64(1)		\n"
+	    "1:addi  30, 30, -8		\n");
+}
+
+/* Swap TOP and stack[sp-1]  */
+
+static void
+ppc_emit_swap (void)
+{
+  EMIT_ASM ("lwz  " TMP_FIRST ", 8(30)	\n"
+	    "lwz  " TMP_SECOND ", 12(30)	\n"
+	    "stw  " TOP_FIRST ", 8(30)	\n"
+	    "stw  " TOP_SECOND ", 12(30)	\n"
+	    "mr   3, 5		\n"
+	    "mr   4, 6		\n");
+}
+
+/* Discard N elements in the stack.  Also used for ppc64.  */
+
+static void
+ppc_emit_stack_adjust (int n)
+{
+  uint32_t buf[6];
+  uint32_t *p = buf;
+
+  n = n << 3;
+  if ((n >> 15) != 0)
+    {
+      emit_error = 1;
+      return;
+    }
+
+  p += GEN_ADDI (p, 30, 30, n);
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* Call function FN.  */
+
+static void
+ppc_emit_call (CORE_ADDR fn)
+{
+  uint32_t buf[11];
+  uint32_t *p = buf;
+
+  p += gen_call (p, fn, 0, 0);
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* FN's prototype is `LONGEST(*fn)(int)'.
+   TOP = fn (arg1)
+  */
+
+static void
+ppc_emit_int_call_1 (CORE_ADDR fn, int arg1)
+{
+  uint32_t buf[15];
+  uint32_t *p = buf;
+
+  /* Setup argument.  arg1 is a 16-bit value.  */
+  p += gen_limm (p, 3, (uint32_t) arg1, 0);
+  p += gen_call (p, fn, 0, 0);
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+
+  if (__BYTE_ORDER == __LITTLE_ENDIAN)
+    {
+      EMIT_ASM ("mr 5, 4\n"
+		"mr 4, 3\n"
+		"mr 3, 5\n");
+    }
+}
+
+/* FN's prototype is `void(*fn)(int,LONGEST)'.
+   fn (arg1, TOP)
+
+   TOP should be preserved/restored before/after the call.  */
+
+static void
+ppc_emit_void_call_2 (CORE_ADDR fn, int arg1)
+{
+  uint32_t buf[21];
+  uint32_t *p = buf;
+
+  /* Save TOP.  0(30) is next-empty.  */
+  p += GEN_STW (p, 3, 30, 0);
+  p += GEN_STW (p, 4, 30, 4);
+
+  /* Setup argument.  arg1 is a 16-bit value.  */
+  if (__BYTE_ORDER == __LITTLE_ENDIAN)
+    {
+       p += GEN_MR (p, 5, 4);
+       p += GEN_MR (p, 6, 3);
+    }
+  else
+    {
+       p += GEN_MR (p, 5, 3);
+       p += GEN_MR (p, 6, 4);
+    }
+  p += gen_limm (p, 3, (uint32_t) arg1, 0);
+  p += gen_call (p, fn, 0, 0);
+
+  /* Restore TOP */
+  p += GEN_LWZ (p, 3, 30, 0);
+  p += GEN_LWZ (p, 4, 30, 4);
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* Note in the following goto ops:
+
+   When emitting goto, the target address is later relocated by
+   write_goto_address.  OFFSET_P is the offset of the branch instruction
+   in the code sequence, and SIZE_P is how to relocate the instruction,
+   recognized by ppc_write_goto_address.  In current implementation,
+   SIZE can be either 24 or 14 for branch of conditional-branch instruction.
+ */
+
+/* If TOP is true, goto somewhere.  Otherwise, just fall-through.  */
+
+static void
+ppc_emit_if_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("or.    3, 3, 4	\n"
+	    "lwzu " TOP_FIRST ", 8(30)	\n"
+	    "lwz " TOP_SECOND ", 4(30)	\n"
+	    "1:bne  0, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 12;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Unconditional goto.  Also used for ppc64.  */
+
+static void
+ppc_emit_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("1:b	1b");
+
+  if (offset_p)
+    *offset_p = 0;
+  if (size_p)
+    *size_p = 24;
+}
+
+/* Goto if stack[--sp] == TOP  */
+
+static void
+ppc_emit_eq_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("lwzu  " TMP_FIRST ", 8(30)	\n"
+	    "lwz   " TMP_SECOND ", 4(30)	\n"
+	    "xor   4, 6, 4	\n"
+	    "xor   3, 5, 3	\n"
+	    "or.   3, 3, 4	\n"
+	    "lwzu  " TOP_FIRST ", 8(30)	\n"
+	    "lwz   " TOP_SECOND ", 4(30)	\n"
+	    "1:beq 0, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 28;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] != TOP  */
+
+static void
+ppc_emit_ne_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("lwzu  " TMP_FIRST ", 8(30)	\n"
+	    "lwz   " TMP_SECOND ", 4(30)	\n"
+	    "xor   4, 6, 4	\n"
+	    "xor   3, 5, 3	\n"
+	    "or.   3, 3, 4	\n"
+	    "lwzu  " TOP_FIRST ", 8(30)	\n"
+	    "lwz   " TOP_SECOND ", 4(30)	\n"
+	    "1:bne 0, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 28;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] < TOP  */
+
+static void
+ppc_emit_lt_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "cmplw   6, 6, 4		\n"
+	    "cmpw    7, 5, 3		\n"
+	    /* CR6 bit 0 = low less and high equal */
+	    "crand   6*4+0, 6*4+0, 7*4+2\n"
+	    /* CR7 bit 0 = (low less and high equal) or high less */
+	    "cror    7*4+0, 7*4+0, 6*4+0\n"
+	    "lwzu    " TOP_FIRST ", 8(30)	\n"
+	    "lwz     " TOP_SECOND ", 4(30)\n"
+	    "1:blt   7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 32;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] <= TOP  */
+
+static void
+ppc_emit_le_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "cmplw   6, 6, 4		\n"
+	    "cmpw    7, 5, 3		\n"
+	    /* CR6 bit 0 = low less/equal and high equal */
+	    "crandc   6*4+0, 7*4+2, 6*4+1\n"
+	    /* CR7 bit 0 = (low less/eq and high equal) or high less */
+	    "cror    7*4+0, 7*4+0, 6*4+0\n"
+	    "lwzu    " TOP_FIRST ", 8(30)	\n"
+	    "lwz     " TOP_SECOND ", 4(30)\n"
+	    "1:blt   7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 32;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] > TOP  */
+
+static void
+ppc_emit_gt_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "cmplw   6, 6, 4		\n"
+	    "cmpw    7, 5, 3		\n"
+	    /* CR6 bit 0 = low greater and high equal */
+	    "crand   6*4+0, 6*4+1, 7*4+2\n"
+	    /* CR7 bit 0 = (low greater and high equal) or high greater */
+	    "cror    7*4+0, 7*4+1, 6*4+0\n"
+	    "lwzu    " TOP_FIRST ", 8(30)	\n"
+	    "lwz     " TOP_SECOND ", 4(30)\n"
+	    "1:blt   7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 32;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] >= TOP  */
+
+static void
+ppc_emit_ge_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("lwzu " TMP_FIRST ", 8(30)	\n"
+	    "lwz " TMP_SECOND ", 4(30)	\n"
+	    "cmplw   6, 6, 4		\n"
+	    "cmpw    7, 5, 3		\n"
+	    /* CR6 bit 0 = low ge and high equal */
+	    "crandc  6*4+0, 7*4+2, 6*4+0\n"
+	    /* CR7 bit 0 = (low ge and high equal) or high greater */
+	    "cror    7*4+0, 7*4+1, 6*4+0\n"
+	    "lwzu    " TOP_FIRST ", 8(30)\n"
+	    "lwz     " TOP_SECOND ", 4(30)\n"
+	    "1:blt   7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 32;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Relocate previous emitted branch instruction.  FROM is the address
+   of the branch instruction, TO is the goto target address, and SIZE
+   if the value we set by *SIZE_P before.  Currently, it is either
+   24 or 14 of branch and conditional-branch instruction.
+   Also used for ppc64.  */
+
+static void
+ppc_write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
+{
+  long rel = to - from;
+  uint32_t insn;
+  int opcd;
+
+  read_inferior_memory (from, (unsigned char *) &insn, 4);
+  opcd = (insn >> 26) & 0x3f;
+
+  switch (size)
+    {
+    case 14:
+      if (opcd != 16
+	  || (rel >= (1 << 15) || rel < -(1 << 15)))
+	emit_error = 1;
+      insn = (insn & ~0xfffc) | (rel & 0xfffc);
+      break;
+    case 24:
+      if (opcd != 18
+	  || (rel >= (1 << 25) || rel < -(1 << 25)))
+	emit_error = 1;
+      insn = (insn & ~0x3fffffc) | (rel & 0x3fffffc);
+      break;
+    default:
+      emit_error = 1;
+    }
+
+  if (!emit_error)
+    target_write_memory (from, (unsigned char *) &insn, 4);
+}
+
+/* Table of emit ops for 32-bit.  */
+
+static struct emit_ops ppc_emit_ops_impl =
+{
+  ppc_emit_prologue,
+  ppc_emit_epilogue,
+  ppc_emit_add,
+  ppc_emit_sub,
+  ppc_emit_mul,
+  ppc_emit_lsh,
+  ppc_emit_rsh_signed,
+  ppc_emit_rsh_unsigned,
+  ppc_emit_ext,
+  ppc_emit_log_not,
+  ppc_emit_bit_and,
+  ppc_emit_bit_or,
+  ppc_emit_bit_xor,
+  ppc_emit_bit_not,
+  ppc_emit_equal,
+  ppc_emit_less_signed,
+  ppc_emit_less_unsigned,
+  ppc_emit_ref,
+  ppc_emit_if_goto,
+  ppc_emit_goto,
+  ppc_write_goto_address,
+  ppc_emit_const,
+  ppc_emit_call,
+  ppc_emit_reg,
+  ppc_emit_pop,
+  ppc_emit_stack_flush,
+  ppc_emit_zero_ext,
+  ppc_emit_swap,
+  ppc_emit_stack_adjust,
+  ppc_emit_int_call_1,
+  ppc_emit_void_call_2,
+  ppc_emit_eq_goto,
+  ppc_emit_ne_goto,
+  ppc_emit_lt_goto,
+  ppc_emit_le_goto,
+  ppc_emit_gt_goto,
+  ppc_emit_ge_goto
+};
+
+#ifdef __powerpc64__
+
+/*
+
+  Bytecode execution stack frame - 64-bit
+
+	|  LR save area           (SP + 16)
+	|  CR save area           (SP + 8)
+ SP' -> +- Back chain             (SP + 0)
+	|  Save r31   for access saved arguments
+	|  Save r30   for bytecode stack pointer
+	|  Save r4    for incoming argument *value
+	|  Save r3    for incoming argument regs
+ r30 -> +- Bytecode execution stack
+	|
+	|  64-byte (8 doublewords) at initial.
+	|  Expand stack as needed.
+	|
+	+-
+        |  Some padding for minimum stack frame.
+        |  112 for ELFv1.
+ SP     +- Back-chain (SP')
+
+  initial frame size
+  = 112 + (4 * 8) + 64
+  = 208
+
+   r30 is the stack-pointer for bytecode machine.
+       It should point to next-empty, so we can use LDU for pop.
+   r3  is used for cache of TOP value.
+       It was the first argument, pointer to regs.
+   r4  is the second argument, pointer to the result.
+       We should set *result = TOP after leaving this function.
+
+ Note:
+ * To restore stack at epilogue
+   => sp = r31
+ * To check stack is big enough for bytecode execution.
+   => r30 - 8 > SP + 112
+ * To return execution result.
+   => 0(r4) = TOP
+
+ */
+
+/* Emit prologue in inferior memory.  See above comments.  */
+
+static void
+ppc64v1_emit_prologue (void)
+{
+  /* On ELFv1, function pointers really point to function descriptor,
+     so emit one here.  We don't care about contents of words 1 and 2,
+     so let them just overlap out code.  */
+  uint64_t opd = current_insn_ptr + 8;
+  uint32_t buf[2];
+
+  /* Mind the strict aliasing rules.  */
+  memcpy (buf, &opd, sizeof buf);
+  emit_insns(buf, 2);
+  EMIT_ASM (/* Save return address.  */
+	    "mflr  0		\n"
+	    "std   0, 16(1)	\n"
+	    /* Save r30 and incoming arguments.  */
+	    "std   31, -8(1)	\n"
+	    "std   30, -16(1)	\n"
+	    "std   4, -24(1)	\n"
+	    "std   3, -32(1)	\n"
+	    /* Point r31 to current r1 for access arguments.  */
+	    "mr    31, 1	\n"
+	    /* Adjust SP.  208 is the initial frame size.  */
+	    "stdu  1, -208(1)	\n"
+	    /* Set r30 to pointing stack-top.  */
+	    "addi  30, 1, 168	\n"
+	    /* Initial r3/TOP to 0.  */
+	    "li	   3, 0		\n");
+}
+
+/* Emit prologue in inferior memory.  See above comments.  */
+
+static void
+ppc64v2_emit_prologue (void)
+{
+  EMIT_ASM (/* Save return address.  */
+	    "mflr  0		\n"
+	    "std   0, 16(1)	\n"
+	    /* Save r30 and incoming arguments.  */
+	    "std   31, -8(1)	\n"
+	    "std   30, -16(1)	\n"
+	    "std   4, -24(1)	\n"
+	    "std   3, -32(1)	\n"
+	    /* Point r31 to current r1 for access arguments.  */
+	    "mr    31, 1	\n"
+	    /* Adjust SP.  208 is the initial frame size.  */
+	    "stdu  1, -208(1)	\n"
+	    /* Set r30 to pointing stack-top.  */
+	    "addi  30, 1, 168	\n"
+	    /* Initial r3/TOP to 0.  */
+	    "li	   3, 0		\n");
+}
+
+/* Emit epilogue in inferior memory.  See above comments.  */
+
+static void
+ppc64_emit_epilogue (void)
+{
+  EMIT_ASM (/* Restore SP.  */
+	    "ld    1, 0(1)      \n"
+	    /* *result = TOP */
+	    "ld    4, -24(1)	\n"
+	    "std   3, 0(4)	\n"
+	    /* Restore registers.  */
+	    "ld    31, -8(1)	\n"
+	    "ld    30, -16(1)	\n"
+            /* Restore LR.  */
+	    "ld    0, 16(1)	\n"
+	    /* Return 0 for no-error.  */
+	    "li    3, 0		\n"
+	    "mtlr  0		\n"
+	    "blr		\n");
+}
+
+/* TOP = stack[--sp] + TOP  */
+
+static void
+ppc64_emit_add (void)
+{
+  EMIT_ASM ("ldu  4, 8(30)	\n"
+	    "add  3, 4, 3	\n");
+}
+
+/* TOP = stack[--sp] - TOP  */
+
+static void
+ppc64_emit_sub (void)
+{
+  EMIT_ASM ("ldu  4, 8(30)	\n"
+	    "sub  3, 4, 3	\n");
+}
+
+/* TOP = stack[--sp] * TOP  */
+
+static void
+ppc64_emit_mul (void)
+{
+  EMIT_ASM ("ldu    4, 8(30)	\n"
+	    "mulld  3, 4, 3	\n");
+}
+
+/* TOP = stack[--sp] << TOP  */
+
+static void
+ppc64_emit_lsh (void)
+{
+  EMIT_ASM ("ldu  4, 8(30)	\n"
+	    "sld  3, 4, 3	\n");
+}
+
+/* Top = stack[--sp] >> TOP
+   (Arithmetic shift right)  */
+
+static void
+ppc64_emit_rsh_signed (void)
+{
+  EMIT_ASM ("ldu   4, 8(30)	\n"
+	    "srad  3, 4, 3	\n");
+}
+
+/* Top = stack[--sp] >> TOP
+   (Logical shift right)  */
+
+static void
+ppc64_emit_rsh_unsigned (void)
+{
+  EMIT_ASM ("ldu  4, 8(30)	\n"
+	    "srd  3, 4, 3	\n");
+}
+
+/* Emit code for signed-extension specified by ARG.  */
+
+static void
+ppc64_emit_ext (int arg)
+{
+  switch (arg)
+    {
+    case 8:
+      EMIT_ASM ("extsb  3, 3");
+      break;
+    case 16:
+      EMIT_ASM ("extsh  3, 3");
+      break;
+    case 32:
+      EMIT_ASM ("extsw  3, 3");
+      break;
+    default:
+      emit_error = 1;
+    }
+}
+
+/* Emit code for zero-extension specified by ARG.  */
+
+static void
+ppc64_emit_zero_ext (int arg)
+{
+  switch (arg)
+    {
+    case 8:
+      EMIT_ASM ("rldicl 3,3,0,56");
+      break;
+    case 16:
+      EMIT_ASM ("rldicl 3,3,0,48");
+      break;
+    case 32:
+      EMIT_ASM ("rldicl 3,3,0,32");
+      break;
+    default:
+      emit_error = 1;
+    }
+}
+
+/* TOP = !TOP
+   i.e., TOP = (TOP == 0) ? 1 : 0;  */
+
+static void
+ppc64_emit_log_not (void)
+{
+  EMIT_ASM ("cntlzd  3, 3	\n"
+	    "srdi    3, 3, 6	\n");
+}
+
+/* TOP = stack[--sp] & TOP  */
+
+static void
+ppc64_emit_bit_and (void)
+{
+  EMIT_ASM ("ldu  4, 8(30)	\n"
+	    "and  3, 4, 3	\n");
+}
+
+/* TOP = stack[--sp] | TOP  */
+
+static void
+ppc64_emit_bit_or (void)
+{
+  EMIT_ASM ("ldu  4, 8(30)	\n"
+	    "or   3, 4, 3	\n");
+}
+
+/* TOP = stack[--sp] ^ TOP  */
+
+static void
+ppc64_emit_bit_xor (void)
+{
+  EMIT_ASM ("ldu  4, 8(30)	\n"
+	    "xor  3, 4, 3	\n");
+}
+
+/* TOP = ~TOP
+   i.e., TOP = ~(TOP | TOP)  */
+
+static void
+ppc64_emit_bit_not (void)
+{
+  EMIT_ASM ("nor  3, 3, 3	\n");
+}
+
+/* TOP = stack[--sp] == TOP  */
+
+static void
+ppc64_emit_equal (void)
+{
+  EMIT_ASM ("ldu     4, 8(30)	\n"
+	    "xor     3, 3, 4	\n"
+	    "cntlzd  3, 3	\n"
+	    "srdi    3, 3, 6	\n");
+}
+
+/* TOP = stack[--sp] < TOP
+   (Signed comparison)  */
+
+static void
+ppc64_emit_less_signed (void)
+{
+  EMIT_ASM ("ldu     4, 8(30)		\n"
+	    "cmpd    7, 4, 3		\n"
+	    "mfcr    3			\n"
+	    "rlwinm  3, 3, 29, 31, 31	\n");
+}
+
+/* TOP = stack[--sp] < TOP
+   (Unsigned comparison)  */
+
+static void
+ppc64_emit_less_unsigned (void)
+{
+  EMIT_ASM ("ldu     4, 8(30)		\n"
+	    "cmpld   7, 4, 3		\n"
+	    "mfcr    3			\n"
+	    "rlwinm  3, 3, 29, 31, 31	\n");
+}
+
+/* Access the memory address in TOP in size of SIZE.
+   Zero-extend the read value.  */
+
+static void
+ppc64_emit_ref (int size)
+{
+  switch (size)
+    {
+    case 1:
+      EMIT_ASM ("lbz   3, 0(3)");
+      break;
+    case 2:
+      EMIT_ASM ("lhz   3, 0(3)");
+      break;
+    case 4:
+      EMIT_ASM ("lwz   3, 0(3)");
+      break;
+    case 8:
+      EMIT_ASM ("ld    3, 0(3)");
+      break;
+    }
+}
+
+/* TOP = NUM  */
+
+static void
+ppc64_emit_const (LONGEST num)
+{
+  uint32_t buf[5];
+  uint32_t *p = buf;
+
+  p += gen_limm (p, 3, num, 1);
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* Set TOP to the value of register REG by calling get_raw_reg function
+   with two argument, collected buffer and register number.  */
+
+static void
+ppc64v1_emit_reg (int reg)
+{
+  uint32_t buf[15];
+  uint32_t *p = buf;
+
+  /* fctx->regs is passed in r3 and then saved in 176(1).  */
+  p += GEN_LD (p, 3, 31, -32);
+  p += GEN_LI (p, 4, reg);
+  p += GEN_STD (p, 2, 1, 40);	/* Save TOC.  */
+  p += gen_call (p, get_raw_reg_func_addr (), 1, 1);
+  p += GEN_LD (p, 2, 1, 40);	/* Restore TOC.  */
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* Likewise, for ELFv2.  */
+
+static void
+ppc64v2_emit_reg (int reg)
+{
+  uint32_t buf[12];
+  uint32_t *p = buf;
+
+  /* fctx->regs is passed in r3 and then saved in 176(1).  */
+  p += GEN_LD (p, 3, 31, -32);
+  p += GEN_LI (p, 4, reg);
+  p += GEN_STD (p, 2, 1, 24);	/* Save TOC.  */
+  p += gen_call (p, get_raw_reg_func_addr (), 1, 0);
+  p += GEN_LD (p, 2, 1, 24);	/* Restore TOC.  */
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* TOP = stack[--sp] */
+
+static void
+ppc64_emit_pop (void)
+{
+  EMIT_ASM ("ldu  3, 8(30)");
+}
+
+/* stack[sp++] = TOP
+
+   Because we may use up bytecode stack, expand 8 doublewords more
+   if needed.  */
+
+static void
+ppc64_emit_stack_flush (void)
+{
+  /* Make sure bytecode stack is big enough before push.
+     Otherwise, expand 64-byte more.  */
+
+  EMIT_ASM ("  std   3, 0(30)		\n"
+	    "  addi  4, 30, -(112 + 8)	\n"
+	    "  cmpd  7, 4, 1		\n"
+	    "  bgt   7, 1f		\n"
+	    "  stdu  31, -64(1)		\n"
+	    "1:addi  30, 30, -8		\n");
+}
+
+/* Swap TOP and stack[sp-1]  */
+
+static void
+ppc64_emit_swap (void)
+{
+  EMIT_ASM ("ld   4, 8(30)	\n"
+	    "std  3, 8(30)	\n"
+	    "mr   3, 4		\n");
+}
+
+/* Call function FN - ELFv1.  */
+
+static void
+ppc64v1_emit_call (CORE_ADDR fn)
+{
+  uint32_t buf[13];
+  uint32_t *p = buf;
+
+  p += GEN_STD (p, 2, 1, 40);	/* Save TOC.  */
+  p += gen_call (p, fn, 1, 1);
+  p += GEN_LD (p, 2, 1, 40);	/* Restore TOC.  */
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* Call function FN - ELFv2.  */
+
+static void
+ppc64v2_emit_call (CORE_ADDR fn)
+{
+  uint32_t buf[10];
+  uint32_t *p = buf;
+
+  p += GEN_STD (p, 2, 1, 24);	/* Save TOC.  */
+  p += gen_call (p, fn, 1, 0);
+  p += GEN_LD (p, 2, 1, 24);	/* Restore TOC.  */
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* FN's prototype is `LONGEST(*fn)(int)'.
+   TOP = fn (arg1)
+  */
+
+static void
+ppc64v1_emit_int_call_1 (CORE_ADDR fn, int arg1)
+{
+  uint32_t buf[13];
+  uint32_t *p = buf;
+
+  /* Setup argument.  arg1 is a 16-bit value.  */
+  p += gen_limm (p, 3, arg1, 1);
+  p += GEN_STD (p, 2, 1, 40);	/* Save TOC.  */
+  p += gen_call (p, fn, 1, 1);
+  p += GEN_LD (p, 2, 1, 40);	/* Restore TOC.  */
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* Likewise for ELFv2.  */
+
+static void
+ppc64v2_emit_int_call_1 (CORE_ADDR fn, int arg1)
+{
+  uint32_t buf[10];
+  uint32_t *p = buf;
+
+  /* Setup argument.  arg1 is a 16-bit value.  */
+  p += gen_limm (p, 3, arg1, 1);
+  p += GEN_STD (p, 2, 1, 24);	/* Save TOC.  */
+  p += gen_call (p, fn, 1, 0);
+  p += GEN_LD (p, 2, 1, 24);	/* Restore TOC.  */
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* FN's prototype is `void(*fn)(int,LONGEST)'.
+   fn (arg1, TOP)
+
+   TOP should be preserved/restored before/after the call.  */
+
+static void
+ppc64v1_emit_void_call_2 (CORE_ADDR fn, int arg1)
+{
+  uint32_t buf[17];
+  uint32_t *p = buf;
+
+  /* Save TOP.  0(30) is next-empty.  */
+  p += GEN_STD (p, 3, 30, 0);
+
+  /* Setup argument.  arg1 is a 16-bit value.  */
+  p += GEN_MR (p, 4, 3);		/* mr	r4, r3 */
+  p += gen_limm (p, 3, arg1, 1);
+  p += GEN_STD (p, 2, 1, 40);	/* Save TOC.  */
+  p += gen_call (p, fn, 1, 1);
+  p += GEN_LD (p, 2, 1, 40);	/* Restore TOC.  */
+
+  /* Restore TOP */
+  p += GEN_LD (p, 3, 30, 0);
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* Likewise for ELFv2.  */
+
+static void
+ppc64v2_emit_void_call_2 (CORE_ADDR fn, int arg1)
+{
+  uint32_t buf[14];
+  uint32_t *p = buf;
+
+  /* Save TOP.  0(30) is next-empty.  */
+  p += GEN_STD (p, 3, 30, 0);
+
+  /* Setup argument.  arg1 is a 16-bit value.  */
+  p += GEN_MR (p, 4, 3);		/* mr	r4, r3 */
+  p += gen_limm (p, 3, arg1, 1);
+  p += GEN_STD (p, 2, 1, 24);	/* Save TOC.  */
+  p += gen_call (p, fn, 1, 0);
+  p += GEN_LD (p, 2, 1, 24);	/* Restore TOC.  */
+
+  /* Restore TOP */
+  p += GEN_LD (p, 3, 30, 0);
+
+  emit_insns (buf, p - buf);
+  gdb_assert ((p - buf) <= (sizeof (buf) / sizeof (*buf)));
+}
+
+/* If TOP is true, goto somewhere.  Otherwise, just fall-through.  */
+
+static void
+ppc64_emit_if_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("cmpdi  7, 3, 0	\n"
+	    "ldu    3, 8(30)	\n"
+	    "1:bne  7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 8;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] == TOP  */
+
+static void
+ppc64_emit_eq_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("ldu     4, 8(30)	\n"
+	    "cmpd    7, 4, 3	\n"
+	    "ldu     3, 8(30)	\n"
+	    "1:beq   7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 12;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] != TOP  */
+
+static void
+ppc64_emit_ne_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("ldu     4, 8(30)	\n"
+	    "cmpd    7, 4, 3	\n"
+	    "ldu     3, 8(30)	\n"
+	    "1:bne   7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 12;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] < TOP  */
+
+static void
+ppc64_emit_lt_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("ldu     4, 8(30)	\n"
+	    "cmpd    7, 4, 3	\n"
+	    "ldu     3, 8(30)	\n"
+	    "1:blt   7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 12;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] <= TOP  */
+
+static void
+ppc64_emit_le_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("ldu     4, 8(30)	\n"
+	    "cmpd    7, 4, 3	\n"
+	    "ldu     3, 8(30)	\n"
+	    "1:ble   7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 12;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] > TOP  */
+
+static void
+ppc64_emit_gt_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("ldu     4, 8(30)	\n"
+	    "cmpd    7, 4, 3	\n"
+	    "ldu     3, 8(30)	\n"
+	    "1:bgt   7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 12;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Goto if stack[--sp] >= TOP  */
+
+static void
+ppc64_emit_ge_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM ("ldu     4, 8(30)	\n"
+	    "cmpd    7, 4, 3	\n"
+	    "ldu     3, 8(30)	\n"
+	    "1:bge   7, 1b	\n");
+
+  if (offset_p)
+    *offset_p = 12;
+  if (size_p)
+    *size_p = 14;
+}
+
+/* Table of emit ops for 64-bit ELFv1.  */
+
+static struct emit_ops ppc64v1_emit_ops_impl =
+{
+  ppc64v1_emit_prologue,
+  ppc64_emit_epilogue,
+  ppc64_emit_add,
+  ppc64_emit_sub,
+  ppc64_emit_mul,
+  ppc64_emit_lsh,
+  ppc64_emit_rsh_signed,
+  ppc64_emit_rsh_unsigned,
+  ppc64_emit_ext,
+  ppc64_emit_log_not,
+  ppc64_emit_bit_and,
+  ppc64_emit_bit_or,
+  ppc64_emit_bit_xor,
+  ppc64_emit_bit_not,
+  ppc64_emit_equal,
+  ppc64_emit_less_signed,
+  ppc64_emit_less_unsigned,
+  ppc64_emit_ref,
+  ppc64_emit_if_goto,
+  ppc_emit_goto,
+  ppc_write_goto_address,
+  ppc64_emit_const,
+  ppc64v1_emit_call,
+  ppc64v1_emit_reg,
+  ppc64_emit_pop,
+  ppc64_emit_stack_flush,
+  ppc64_emit_zero_ext,
+  ppc64_emit_swap,
+  ppc_emit_stack_adjust,
+  ppc64v1_emit_int_call_1,
+  ppc64v1_emit_void_call_2,
+  ppc64_emit_eq_goto,
+  ppc64_emit_ne_goto,
+  ppc64_emit_lt_goto,
+  ppc64_emit_le_goto,
+  ppc64_emit_gt_goto,
+  ppc64_emit_ge_goto
+};
+
+/* Table of emit ops for 64-bit ELFv2.  */
+
+static struct emit_ops ppc64v2_emit_ops_impl =
+{
+  ppc64v2_emit_prologue,
+  ppc64_emit_epilogue,
+  ppc64_emit_add,
+  ppc64_emit_sub,
+  ppc64_emit_mul,
+  ppc64_emit_lsh,
+  ppc64_emit_rsh_signed,
+  ppc64_emit_rsh_unsigned,
+  ppc64_emit_ext,
+  ppc64_emit_log_not,
+  ppc64_emit_bit_and,
+  ppc64_emit_bit_or,
+  ppc64_emit_bit_xor,
+  ppc64_emit_bit_not,
+  ppc64_emit_equal,
+  ppc64_emit_less_signed,
+  ppc64_emit_less_unsigned,
+  ppc64_emit_ref,
+  ppc64_emit_if_goto,
+  ppc_emit_goto,
+  ppc_write_goto_address,
+  ppc64_emit_const,
+  ppc64v2_emit_call,
+  ppc64v2_emit_reg,
+  ppc64_emit_pop,
+  ppc64_emit_stack_flush,
+  ppc64_emit_zero_ext,
+  ppc64_emit_swap,
+  ppc_emit_stack_adjust,
+  ppc64v2_emit_int_call_1,
+  ppc64v2_emit_void_call_2,
+  ppc64_emit_eq_goto,
+  ppc64_emit_ne_goto,
+  ppc64_emit_lt_goto,
+  ppc64_emit_le_goto,
+  ppc64_emit_gt_goto,
+  ppc64_emit_ge_goto
+};
+
+#endif
+
+/* Implementation of target ops method "emit_ops".  */
+
+emit_ops *
+ppc_target::emit_ops ()
+{
+#ifdef __powerpc64__
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+
+  if (register_size (regcache->tdesc, 0) == 8)
+    {
+      if (is_elfv2_inferior ())
+        return &ppc64v2_emit_ops_impl;
+      else
+        return &ppc64v1_emit_ops_impl;
+    }
+#endif
+  return &ppc_emit_ops_impl;
+}
+
+/* Implementation of target ops method "get_ipa_tdesc_idx".  */
+
+int
+ppc_target::get_ipa_tdesc_idx ()
+{
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+  const struct target_desc *tdesc = regcache->tdesc;
+
+#ifdef __powerpc64__
+  if (tdesc == tdesc_powerpc_64l)
+    return PPC_TDESC_BASE;
+  if (tdesc == tdesc_powerpc_altivec64l)
+    return PPC_TDESC_ALTIVEC;
+  if (tdesc == tdesc_powerpc_vsx64l)
+    return PPC_TDESC_VSX;
+  if (tdesc == tdesc_powerpc_isa205_64l)
+    return PPC_TDESC_ISA205;
+  if (tdesc == tdesc_powerpc_isa205_altivec64l)
+    return PPC_TDESC_ISA205_ALTIVEC;
+  if (tdesc == tdesc_powerpc_isa205_vsx64l)
+    return PPC_TDESC_ISA205_VSX;
+  if (tdesc == tdesc_powerpc_isa205_ppr_dscr_vsx64l)
+    return PPC_TDESC_ISA205_PPR_DSCR_VSX;
+  if (tdesc == tdesc_powerpc_isa207_vsx64l)
+    return PPC_TDESC_ISA207_VSX;
+  if (tdesc == tdesc_powerpc_isa207_htm_vsx64l)
+    return PPC_TDESC_ISA207_HTM_VSX;
+#endif
+
+  if (tdesc == tdesc_powerpc_32l)
+    return PPC_TDESC_BASE;
+  if (tdesc == tdesc_powerpc_altivec32l)
+    return PPC_TDESC_ALTIVEC;
+  if (tdesc == tdesc_powerpc_vsx32l)
+    return PPC_TDESC_VSX;
+  if (tdesc == tdesc_powerpc_isa205_32l)
+    return PPC_TDESC_ISA205;
+  if (tdesc == tdesc_powerpc_isa205_altivec32l)
+    return PPC_TDESC_ISA205_ALTIVEC;
+  if (tdesc == tdesc_powerpc_isa205_vsx32l)
+    return PPC_TDESC_ISA205_VSX;
+  if (tdesc == tdesc_powerpc_isa205_ppr_dscr_vsx32l)
+    return PPC_TDESC_ISA205_PPR_DSCR_VSX;
+  if (tdesc == tdesc_powerpc_isa207_vsx32l)
+    return PPC_TDESC_ISA207_VSX;
+  if (tdesc == tdesc_powerpc_isa207_htm_vsx32l)
+    return PPC_TDESC_ISA207_HTM_VSX;
+  if (tdesc == tdesc_powerpc_e500l)
+    return PPC_TDESC_E500;
+
+  return 0;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_ppc_target;
+
+void
+initialize_low_arch (void)
+{
+  /* Initialize the Linux target descriptions.  */
+
+  init_registers_powerpc_32l ();
+  init_registers_powerpc_altivec32l ();
+  init_registers_powerpc_vsx32l ();
+  init_registers_powerpc_isa205_32l ();
+  init_registers_powerpc_isa205_altivec32l ();
+  init_registers_powerpc_isa205_vsx32l ();
+  init_registers_powerpc_isa205_ppr_dscr_vsx32l ();
+  init_registers_powerpc_isa207_vsx32l ();
+  init_registers_powerpc_isa207_htm_vsx32l ();
+  init_registers_powerpc_e500l ();
+#if __powerpc64__
+  init_registers_powerpc_64l ();
+  init_registers_powerpc_altivec64l ();
+  init_registers_powerpc_vsx64l ();
+  init_registers_powerpc_isa205_64l ();
+  init_registers_powerpc_isa205_altivec64l ();
+  init_registers_powerpc_isa205_vsx64l ();
+  init_registers_powerpc_isa205_ppr_dscr_vsx64l ();
+  init_registers_powerpc_isa207_vsx64l ();
+  init_registers_powerpc_isa207_htm_vsx64l ();
+#endif
+
+  initialize_regsets_info (&ppc_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-ppc-tdesc-init.h ./gdbserver/linux-ppc-tdesc-init.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-ppc-tdesc-init.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-ppc-tdesc-init.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,106 @@
+/* Low level support for ppc, shared between gdbserver and IPA.
+
+   Copyright (C) 2016-2021 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 GDBSERVER_LINUX_PPC_TDESC_INIT_H
+#define GDBSERVER_LINUX_PPC_TDESC_INIT_H
+
+/* Note: since IPA obviously knows what ABI it's running on (32 vs 64),
+   it's sufficient to pass only the register set here.  This, together with
+   the ABI known at IPA compile time, maps to a tdesc.  */
+
+enum ppc_linux_tdesc {
+  PPC_TDESC_BASE,
+  PPC_TDESC_ALTIVEC,
+  PPC_TDESC_CELL,  /* No longer used, but kept to avoid ABI changes.  */
+  PPC_TDESC_VSX,
+  PPC_TDESC_ISA205,
+  PPC_TDESC_ISA205_ALTIVEC,
+  PPC_TDESC_ISA205_VSX,
+  PPC_TDESC_ISA205_PPR_DSCR_VSX,
+  PPC_TDESC_ISA207_VSX,
+  PPC_TDESC_ISA207_HTM_VSX,
+  PPC_TDESC_E500,
+};
+
+#if !defined __powerpc64__ || !defined IN_PROCESS_AGENT
+
+/* Defined in auto-generated file powerpc-32l.c.  */
+void init_registers_powerpc_32l (void);
+
+/* Defined in auto-generated file powerpc-altivec32l.c.  */
+void init_registers_powerpc_altivec32l (void);
+
+/* Defined in auto-generated file powerpc-vsx32l.c.  */
+void init_registers_powerpc_vsx32l (void);
+
+/* Defined in auto-generated file powerpc-isa205-32l.c.  */
+void init_registers_powerpc_isa205_32l (void);
+
+/* Defined in auto-generated file powerpc-isa205-altivec32l.c.  */
+void init_registers_powerpc_isa205_altivec32l (void);
+
+/* Defined in auto-generated file powerpc-isa205-vsx32l.c.  */
+void init_registers_powerpc_isa205_vsx32l (void);
+
+/* Defined in auto-generated file powerpc-isa205-ppr-dscr-vsx32l.c.  */
+void init_registers_powerpc_isa205_ppr_dscr_vsx32l (void);
+
+/* Defined in auto-generated file powerpc-isa207-vsx32l.c.  */
+void init_registers_powerpc_isa207_vsx32l (void);
+
+/* Defined in auto-generated file powerpc-isa207-htm-vsx32l.c.  */
+void init_registers_powerpc_isa207_htm_vsx32l (void);
+
+/* Defined in auto-generated file powerpc-e500l.c.  */
+void init_registers_powerpc_e500l (void);
+
+#endif
+
+#if defined __powerpc64__
+
+/* Defined in auto-generated file powerpc-64l.c.  */
+void init_registers_powerpc_64l (void);
+
+/* Defined in auto-generated file powerpc-altivec64l.c.  */
+void init_registers_powerpc_altivec64l (void);
+
+/* Defined in auto-generated file powerpc-vsx64l.c.  */
+void init_registers_powerpc_vsx64l (void);
+
+/* Defined in auto-generated file powerpc-isa205-64l.c.  */
+void init_registers_powerpc_isa205_64l (void);
+
+/* Defined in auto-generated file powerpc-isa205-altivec64l.c.  */
+void init_registers_powerpc_isa205_altivec64l (void);
+
+/* Defined in auto-generated file powerpc-isa205-vsx64l.c.  */
+void init_registers_powerpc_isa205_vsx64l (void);
+
+/* Defined in auto-generated file powerpc-isa205-ppr-dscr-vsx64l.c.  */
+void init_registers_powerpc_isa205_ppr_dscr_vsx64l (void);
+
+/* Defined in auto-generated file powerpc-isa207-vsx64l.c.  */
+void init_registers_powerpc_isa207_vsx64l (void);
+
+/* Defined in auto-generated file powerpc-isa207-htm-vsx64l.c.  */
+void init_registers_powerpc_isa207_htm_vsx64l (void);
+
+#endif
+
+#endif /* GDBSERVER_LINUX_PPC_TDESC_INIT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-riscv-low.cc ./gdbserver/linux-riscv-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-riscv-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-riscv-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,321 @@
+/* GNU/Linux/RISC-V specific low level interface, for the remote server
+   for GDB.
+   Copyright (C) 2020-2021 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 "server.h"
+
+#include "linux-low.h"
+#include "tdesc.h"
+#include "elf/common.h"
+#include "nat/riscv-linux-tdesc.h"
+#include "opcode/riscv.h"
+
+/* Work around glibc header breakage causing ELF_NFPREG not to be usable.  */
+#ifndef NFPREG
+# define NFPREG 33
+#endif
+
+/* Linux target op definitions for the RISC-V architecture.  */
+
+class riscv_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  int breakpoint_kind_from_pc (CORE_ADDR *pcptr) override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_fetch_register (regcache *regcache, int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+};
+
+/* The singleton target ops object.  */
+
+static riscv_target the_riscv_target;
+
+bool
+riscv_target::low_cannot_fetch_register (int regno)
+{
+  gdb_assert_not_reached ("linux target op low_cannot_fetch_register "
+			  "is not implemented by the target");
+}
+
+bool
+riscv_target::low_cannot_store_register (int regno)
+{
+  gdb_assert_not_reached ("linux target op low_cannot_store_register "
+			  "is not implemented by the target");
+}
+
+/* Implementation of linux target ops method "low_arch_setup".  */
+
+void
+riscv_target::low_arch_setup ()
+{
+  static const char *expedite_regs[] = { "sp", "pc", NULL };
+
+  const riscv_gdbarch_features features
+    = riscv_linux_read_features (lwpid_of (current_thread));
+  target_desc *tdesc = riscv_create_target_description (features);
+
+  if (!tdesc->expedite_regs)
+    init_target_desc (tdesc, expedite_regs);
+  current_process ()->tdesc = tdesc;
+}
+
+/* Collect GPRs from REGCACHE into BUF.  */
+
+static void
+riscv_fill_gregset (struct regcache *regcache, void *buf)
+{
+  const struct target_desc *tdesc = regcache->tdesc;
+  elf_gregset_t *regset = (elf_gregset_t *) buf;
+  int regno = find_regno (tdesc, "zero");
+  int i;
+
+  collect_register_by_name (regcache, "pc", *regset);
+  for (i = 1; i < ARRAY_SIZE (*regset); i++)
+    collect_register (regcache, regno + i, *regset + i);
+}
+
+/* Supply GPRs from BUF into REGCACHE.  */
+
+static void
+riscv_store_gregset (struct regcache *regcache, const void *buf)
+{
+  const elf_gregset_t *regset = (const elf_gregset_t *) buf;
+  const struct target_desc *tdesc = regcache->tdesc;
+  int regno = find_regno (tdesc, "zero");
+  int i;
+
+  supply_register_by_name (regcache, "pc", *regset);
+  supply_register_zeroed (regcache, regno);
+  for (i = 1; i < ARRAY_SIZE (*regset); i++)
+    supply_register (regcache, regno + i, *regset + i);
+}
+
+/* Collect FPRs from REGCACHE into BUF.  */
+
+static void
+riscv_fill_fpregset (struct regcache *regcache, void *buf)
+{
+  const struct target_desc *tdesc = regcache->tdesc;
+  int regno = find_regno (tdesc, "ft0");
+  int flen = register_size (regcache->tdesc, regno);
+  gdb_byte *regbuf = (gdb_byte *) buf;
+  int i;
+
+  for (i = 0; i < ELF_NFPREG - 1; i++, regbuf += flen)
+    collect_register (regcache, regno + i, regbuf);
+  collect_register_by_name (regcache, "fcsr", regbuf);
+}
+
+/* Supply FPRs from BUF into REGCACHE.  */
+
+static void
+riscv_store_fpregset (struct regcache *regcache, const void *buf)
+{
+  const struct target_desc *tdesc = regcache->tdesc;
+  int regno = find_regno (tdesc, "ft0");
+  int flen = register_size (regcache->tdesc, regno);
+  const gdb_byte *regbuf = (const gdb_byte *) buf;
+  int i;
+
+  for (i = 0; i < ELF_NFPREG - 1; i++, regbuf += flen)
+    supply_register (regcache, regno + i, regbuf);
+  supply_register_by_name (regcache, "fcsr", regbuf);
+}
+
+/* RISC-V/Linux regsets.  FPRs are optional and come in different sizes,
+   so define multiple regsets for them marking them all as OPTIONAL_REGS
+   rather than FP_REGS, so that "regsets_fetch_inferior_registers" picks
+   the right one according to size.  */
+static struct regset_info riscv_regsets[] = {
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
+    sizeof (elf_gregset_t), GENERAL_REGS,
+    riscv_fill_gregset, riscv_store_gregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_FPREGSET,
+    sizeof (struct __riscv_mc_q_ext_state), OPTIONAL_REGS,
+    riscv_fill_fpregset, riscv_store_fpregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_FPREGSET,
+    sizeof (struct __riscv_mc_d_ext_state), OPTIONAL_REGS,
+    riscv_fill_fpregset, riscv_store_fpregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_FPREGSET,
+    sizeof (struct __riscv_mc_f_ext_state), OPTIONAL_REGS,
+    riscv_fill_fpregset, riscv_store_fpregset },
+  NULL_REGSET
+};
+
+/* RISC-V/Linux regset information.  */
+static struct regsets_info riscv_regsets_info =
+  {
+    riscv_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+/* Definition of linux_target_ops data member "regs_info".  */
+static struct regs_info riscv_regs =
+  {
+    NULL, /* regset_bitmap */
+    NULL, /* usrregs */
+    &riscv_regsets_info,
+  };
+
+/* Implementation of linux target ops method "get_regs_info".  */
+
+const regs_info *
+riscv_target::get_regs_info ()
+{
+  return &riscv_regs;
+}
+
+/* Implementation of linux target ops method "low_fetch_register".  */
+
+bool
+riscv_target::low_fetch_register (regcache *regcache, int regno)
+{
+  const struct target_desc *tdesc = regcache->tdesc;
+
+  if (regno != find_regno (tdesc, "zero"))
+    return false;
+  supply_register_zeroed (regcache, regno);
+  return true;
+}
+
+bool
+riscv_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+/* Implementation of linux target ops method "low_get_pc".  */
+
+CORE_ADDR
+riscv_target::low_get_pc (regcache *regcache)
+{
+  elf_gregset_t regset;
+
+  if (sizeof (regset[0]) == 8)
+    return linux_get_pc_64bit (regcache);
+  else
+    return linux_get_pc_32bit (regcache);
+}
+
+/* Implementation of linux target ops method "low_set_pc".  */
+
+void
+riscv_target::low_set_pc (regcache *regcache, CORE_ADDR newpc)
+{
+  elf_gregset_t regset;
+
+  if (sizeof (regset[0]) == 8)
+    linux_set_pc_64bit (regcache, newpc);
+  else
+    linux_set_pc_32bit (regcache, newpc);
+}
+
+/* Correct in either endianness.  */
+static const uint16_t riscv_ibreakpoint[] = { 0x0073, 0x0010 };
+static const uint16_t riscv_cbreakpoint = 0x9002;
+
+/* Implementation of target ops method "breakpoint_kind_from_pc".  */
+
+int
+riscv_target::breakpoint_kind_from_pc (CORE_ADDR *pcptr)
+{
+  union
+    {
+      gdb_byte bytes[2];
+      uint16_t insn;
+    }
+  buf;
+
+  if (target_read_memory (*pcptr, buf.bytes, sizeof (buf.insn)) == 0
+      && riscv_insn_length (buf.insn == sizeof (riscv_ibreakpoint)))
+    return sizeof (riscv_ibreakpoint);
+  else
+    return sizeof (riscv_cbreakpoint);
+}
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+riscv_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = kind;
+  switch (kind)
+    {
+      case sizeof (riscv_ibreakpoint):
+	return (const gdb_byte *) &riscv_ibreakpoint;
+      default:
+	return (const gdb_byte *) &riscv_cbreakpoint;
+    }
+}
+
+/* Implementation of linux target ops method "low_breakpoint_at".  */
+
+bool
+riscv_target::low_breakpoint_at (CORE_ADDR pc)
+{
+  union
+    {
+      gdb_byte bytes[2];
+      uint16_t insn;
+    }
+  buf;
+
+  if (target_read_memory (pc, buf.bytes, sizeof (buf.insn)) == 0
+      && (buf.insn == riscv_cbreakpoint
+	  || (buf.insn == riscv_ibreakpoint[0]
+	      && target_read_memory (pc + sizeof (buf.insn), buf.bytes,
+				     sizeof (buf.insn)) == 0
+	      && buf.insn == riscv_ibreakpoint[1])))
+    return true;
+  else
+    return false;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_riscv_target;
+
+/* Initialize the RISC-V/Linux target.  */
+
+void
+initialize_low_arch ()
+{
+  initialize_regsets_info (&riscv_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-s390-ipa.cc ./gdbserver/linux-s390-ipa.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-s390-ipa.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-s390-ipa.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,463 @@
+/* GNU/Linux S/390 specific low level interface, for the in-process
+   agent library for GDB.
+
+   Copyright (C) 2016-2021 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 "server.h"
+#include <sys/mman.h>
+#include "tracepoint.h"
+#include "linux-s390-tdesc.h"
+#include <elf.h>
+#ifdef HAVE_GETAUXVAL
+#include <sys/auxv.h>
+#endif
+
+#define FT_FPR(x) (0x000 + (x) * 0x10)
+#define FT_VR(x) (0x000 + (x) * 0x10)
+#define FT_VR_L(x) (0x008 + (x) * 0x10)
+#define FT_GPR(x) (0x200 + (x) * 8)
+#define FT_GPR_U(x) (0x200 + (x) * 8)
+#define FT_GPR_L(x) (0x204 + (x) * 8)
+#define FT_GPR(x) (0x200 + (x) * 8)
+#define FT_ACR(x) (0x280 + (x) * 4)
+#define FT_PSWM 0x2c0
+#define FT_PSWM_U 0x2c0
+#define FT_PSWA 0x2c8
+#define FT_PSWA_L 0x2cc
+#define FT_FPC 0x2d0
+
+/* Mappings between registers collected by the jump pad and GDB's register
+   array layout used by regcache.
+
+   See linux-s390-low.c (s390_install_fast_tracepoint_jump_pad) for more
+   details.  */
+
+#ifndef __s390x__
+
+/* Used for s390-linux32, s390-linux32v1, s390-linux32v2.  */
+
+static const int s390_linux32_ft_collect_regmap[] = {
+  /* 32-bit PSWA and PSWM.  */
+  FT_PSWM_U, FT_PSWA_L,
+  /* 32-bit GPRs (mapped to lower halves of 64-bit slots).  */
+  FT_GPR_L (0), FT_GPR_L (1), FT_GPR_L (2), FT_GPR_L (3),
+  FT_GPR_L (4), FT_GPR_L (5), FT_GPR_L (6), FT_GPR_L (7),
+  FT_GPR_L (8), FT_GPR_L (9), FT_GPR_L (10), FT_GPR_L (11),
+  FT_GPR_L (12), FT_GPR_L (13), FT_GPR_L (14), FT_GPR_L (15),
+  /* ACRs */
+  FT_ACR (0), FT_ACR (1), FT_ACR (2), FT_ACR (3),
+  FT_ACR (4), FT_ACR (5), FT_ACR (6), FT_ACR (7),
+  FT_ACR (8), FT_ACR (9), FT_ACR (10), FT_ACR (11),
+  FT_ACR (12), FT_ACR (13), FT_ACR (14), FT_ACR (15),
+  /* FPRs (mapped to upper halves of 128-bit VR slots).  */
+  FT_FPR (0), FT_FPR (1), FT_FPR (2), FT_FPR (3),
+  FT_FPR (4), FT_FPR (5), FT_FPR (6), FT_FPR (7),
+  FT_FPR (8), FT_FPR (9), FT_FPR (10), FT_FPR (11),
+  FT_FPR (12), FT_FPR (13), FT_FPR (14), FT_FPR (15),
+  /* orig_r2, last_break, system_call */
+  -1, -1, -1,
+};
+
+/* Used for s390-linux64, s390-linux64v1, s390-linux64v2, s390-vx-linux64.  */
+
+static const int s390_linux64_ft_collect_regmap[] = {
+  /* 32-bit PSWA and PSWM.  */
+  FT_PSWM_U, FT_PSWA_L,
+  /* 32-bit halves of 64-bit GPRs.  */
+  FT_GPR_U (0), FT_GPR_L (0),
+  FT_GPR_U (1), FT_GPR_L (1),
+  FT_GPR_U (2), FT_GPR_L (2),
+  FT_GPR_U (3), FT_GPR_L (3),
+  FT_GPR_U (4), FT_GPR_L (4),
+  FT_GPR_U (5), FT_GPR_L (5),
+  FT_GPR_U (6), FT_GPR_L (6),
+  FT_GPR_U (7), FT_GPR_L (7),
+  FT_GPR_U (8), FT_GPR_L (8),
+  FT_GPR_U (9), FT_GPR_L (9),
+  FT_GPR_U (10), FT_GPR_L (10),
+  FT_GPR_U (11), FT_GPR_L (11),
+  FT_GPR_U (12), FT_GPR_L (12),
+  FT_GPR_U (13), FT_GPR_L (13),
+  FT_GPR_U (14), FT_GPR_L (14),
+  FT_GPR_U (15), FT_GPR_L (15),
+  /* ACRs */
+  FT_ACR (0), FT_ACR (1), FT_ACR (2), FT_ACR (3),
+  FT_ACR (4), FT_ACR (5), FT_ACR (6), FT_ACR (7),
+  FT_ACR (8), FT_ACR (9), FT_ACR (10), FT_ACR (11),
+  FT_ACR (12), FT_ACR (13), FT_ACR (14), FT_ACR (15),
+  /* FPRs (mapped to upper halves of 128-bit VR slots).  */
+  FT_FPR (0), FT_FPR (1), FT_FPR (2), FT_FPR (3),
+  FT_FPR (4), FT_FPR (5), FT_FPR (6), FT_FPR (7),
+  FT_FPR (8), FT_FPR (9), FT_FPR (10), FT_FPR (11),
+  FT_FPR (12), FT_FPR (13), FT_FPR (14), FT_FPR (15),
+  /* orig_r2, last_break, system_call */
+  -1, -1, -1,
+  /* Lower halves of 128-bit VRs. */
+  FT_VR_L (0), FT_VR_L (1), FT_VR_L (2), FT_VR_L (3),
+  FT_VR_L (4), FT_VR_L (5), FT_VR_L (6), FT_VR_L (7),
+  FT_VR_L (8), FT_VR_L (9), FT_VR_L (10), FT_VR_L (11),
+  FT_VR_L (12), FT_VR_L (13), FT_VR_L (14), FT_VR_L (15),
+  /* And the next 16 VRs.  */
+  FT_VR (16), FT_VR (17), FT_VR (18), FT_VR (19),
+  FT_VR (20), FT_VR (21), FT_VR (22), FT_VR (23),
+  FT_VR (24), FT_VR (25), FT_VR (26), FT_VR (27),
+  FT_VR (28), FT_VR (29), FT_VR (30), FT_VR (31),
+};
+
+/* Used for s390-te-linux64, s390-tevx-linux64, and s390-gs-linux64.  */
+
+static const int s390_te_linux64_ft_collect_regmap[] = {
+  /* 32-bit PSWA and PSWM.  */
+  FT_PSWM_U, FT_PSWA_L,
+  /* 32-bit halves of 64-bit GPRs.  */
+  FT_GPR_U (0), FT_GPR_L (0),
+  FT_GPR_U (1), FT_GPR_L (1),
+  FT_GPR_U (2), FT_GPR_L (2),
+  FT_GPR_U (3), FT_GPR_L (3),
+  FT_GPR_U (4), FT_GPR_L (4),
+  FT_GPR_U (5), FT_GPR_L (5),
+  FT_GPR_U (6), FT_GPR_L (6),
+  FT_GPR_U (7), FT_GPR_L (7),
+  FT_GPR_U (8), FT_GPR_L (8),
+  FT_GPR_U (9), FT_GPR_L (9),
+  FT_GPR_U (10), FT_GPR_L (10),
+  FT_GPR_U (11), FT_GPR_L (11),
+  FT_GPR_U (12), FT_GPR_L (12),
+  FT_GPR_U (13), FT_GPR_L (13),
+  FT_GPR_U (14), FT_GPR_L (14),
+  FT_GPR_U (15), FT_GPR_L (15),
+  /* ACRs */
+  FT_ACR (0), FT_ACR (1), FT_ACR (2), FT_ACR (3),
+  FT_ACR (4), FT_ACR (5), FT_ACR (6), FT_ACR (7),
+  FT_ACR (8), FT_ACR (9), FT_ACR (10), FT_ACR (11),
+  FT_ACR (12), FT_ACR (13), FT_ACR (14), FT_ACR (15),
+  /* FPRs (mapped to upper halves of 128-bit VR slots).  */
+  FT_FPR (0), FT_FPR (1), FT_FPR (2), FT_FPR (3),
+  FT_FPR (4), FT_FPR (5), FT_FPR (6), FT_FPR (7),
+  FT_FPR (8), FT_FPR (9), FT_FPR (10), FT_FPR (11),
+  FT_FPR (12), FT_FPR (13), FT_FPR (14), FT_FPR (15),
+  /* orig_r2, last_break, system_call */
+  -1, -1, -1,
+  /* TDB */
+  -1, -1, -1, -1,
+  -1, -1, -1, -1,
+  -1, -1, -1, -1,
+  -1, -1, -1, -1,
+  -1, -1, -1, -1,
+  /* Lower halves of 128-bit VRs. */
+  FT_VR_L (0), FT_VR_L (1), FT_VR_L (2), FT_VR_L (3),
+  FT_VR_L (4), FT_VR_L (5), FT_VR_L (6), FT_VR_L (7),
+  FT_VR_L (8), FT_VR_L (9), FT_VR_L (10), FT_VR_L (11),
+  FT_VR_L (12), FT_VR_L (13), FT_VR_L (14), FT_VR_L (15),
+  /* And the next 16 VRs.  */
+  FT_VR (16), FT_VR (17), FT_VR (18), FT_VR (19),
+  FT_VR (20), FT_VR (21), FT_VR (22), FT_VR (23),
+  FT_VR (24), FT_VR (25), FT_VR (26), FT_VR (27),
+  FT_VR (28), FT_VR (29), FT_VR (30), FT_VR (31),
+};
+
+#else /* __s390x__ */
+
+/* Used for s390x-linux64, s390x-linux64v1, s390x-linux64v2, s390x-vx-linux64.  */
+
+static const int s390x_ft_collect_regmap[] = {
+  /* 64-bit PSWA and PSWM.  */
+  FT_PSWM, FT_PSWA,
+  /* 64-bit GPRs.  */
+  FT_GPR (0), FT_GPR (1), FT_GPR (2), FT_GPR (3),
+  FT_GPR (4), FT_GPR (5), FT_GPR (6), FT_GPR (7),
+  FT_GPR (8), FT_GPR (9), FT_GPR (10), FT_GPR (11),
+  FT_GPR (12), FT_GPR (13), FT_GPR (14), FT_GPR (15),
+  /* ACRs */
+  FT_ACR (0), FT_ACR (1), FT_ACR (2), FT_ACR (3),
+  FT_ACR (4), FT_ACR (5), FT_ACR (6), FT_ACR (7),
+  FT_ACR (8), FT_ACR (9), FT_ACR (10), FT_ACR (11),
+  FT_ACR (12), FT_ACR (13), FT_ACR (14), FT_ACR (15),
+  /* FPRs (mapped to upper halves of 128-bit VR slots).  */
+  FT_FPR (0), FT_FPR (1), FT_FPR (2), FT_FPR (3),
+  FT_FPR (4), FT_FPR (5), FT_FPR (6), FT_FPR (7),
+  FT_FPR (8), FT_FPR (9), FT_FPR (10), FT_FPR (11),
+  FT_FPR (12), FT_FPR (13), FT_FPR (14), FT_FPR (15),
+  /* orig_r2, last_break, system_call */
+  -1, -1, -1,
+  /* Lower halves of 128-bit VRs. */
+  FT_VR_L (0), FT_VR_L (1), FT_VR_L (2), FT_VR_L (3),
+  FT_VR_L (4), FT_VR_L (5), FT_VR_L (6), FT_VR_L (7),
+  FT_VR_L (8), FT_VR_L (9), FT_VR_L (10), FT_VR_L (11),
+  FT_VR_L (12), FT_VR_L (13), FT_VR_L (14), FT_VR_L (15),
+  /* And the next 16 VRs.  */
+  FT_VR (16), FT_VR (17), FT_VR (18), FT_VR (19),
+  FT_VR (20), FT_VR (21), FT_VR (22), FT_VR (23),
+  FT_VR (24), FT_VR (25), FT_VR (26), FT_VR (27),
+  FT_VR (28), FT_VR (29), FT_VR (30), FT_VR (31),
+};
+
+/* Used for s390x-te-linux64, s390x-tevx-linux64, and
+   s390x-gs-linux64.  */
+
+static const int s390x_te_ft_collect_regmap[] = {
+  /* 64-bit PSWA and PSWM.  */
+  FT_PSWM, FT_PSWA,
+  /* 64-bit GPRs.  */
+  FT_GPR (0), FT_GPR (1), FT_GPR (2), FT_GPR (3),
+  FT_GPR (4), FT_GPR (5), FT_GPR (6), FT_GPR (7),
+  FT_GPR (8), FT_GPR (9), FT_GPR (10), FT_GPR (11),
+  FT_GPR (12), FT_GPR (13), FT_GPR (14), FT_GPR (15),
+  /* ACRs */
+  FT_ACR (0), FT_ACR (1), FT_ACR (2), FT_ACR (3),
+  FT_ACR (4), FT_ACR (5), FT_ACR (6), FT_ACR (7),
+  FT_ACR (8), FT_ACR (9), FT_ACR (10), FT_ACR (11),
+  FT_ACR (12), FT_ACR (13), FT_ACR (14), FT_ACR (15),
+  /* FPRs (mapped to upper halves of 128-bit VR slots).  */
+  FT_FPR (0), FT_FPR (1), FT_FPR (2), FT_FPR (3),
+  FT_FPR (4), FT_FPR (5), FT_FPR (6), FT_FPR (7),
+  FT_FPR (8), FT_FPR (9), FT_FPR (10), FT_FPR (11),
+  FT_FPR (12), FT_FPR (13), FT_FPR (14), FT_FPR (15),
+  /* orig_r2, last_break, system_call */
+  -1, -1, -1,
+  /* TDB */
+  -1, -1, -1, -1,
+  -1, -1, -1, -1,
+  -1, -1, -1, -1,
+  -1, -1, -1, -1,
+  -1, -1, -1, -1,
+  /* Lower halves of 128-bit VRs. */
+  FT_VR_L (0), FT_VR_L (1), FT_VR_L (2), FT_VR_L (3),
+  FT_VR_L (4), FT_VR_L (5), FT_VR_L (6), FT_VR_L (7),
+  FT_VR_L (8), FT_VR_L (9), FT_VR_L (10), FT_VR_L (11),
+  FT_VR_L (12), FT_VR_L (13), FT_VR_L (14), FT_VR_L (15),
+  /* And the next 16 VRs.  */
+  FT_VR (16), FT_VR (17), FT_VR (18), FT_VR (19),
+  FT_VR (20), FT_VR (21), FT_VR (22), FT_VR (23),
+  FT_VR (24), FT_VR (25), FT_VR (26), FT_VR (27),
+  FT_VR (28), FT_VR (29), FT_VR (30), FT_VR (31),
+};
+
+#endif
+
+/* Initialized by get_ipa_tdesc according to the tdesc in use.  */
+
+static const int *s390_regmap;
+static int s390_regnum;
+
+/* Fill in REGCACHE with registers saved by the jump pad in BUF.  */
+
+void
+supply_fast_tracepoint_registers (struct regcache *regcache,
+				  const unsigned char *buf)
+{
+  int i;
+  for (i = 0; i < s390_regnum; i++)
+    if (s390_regmap[i] != -1)
+      supply_register (regcache, i, ((char *) buf) + s390_regmap[i]);
+}
+
+ULONGEST
+get_raw_reg (const unsigned char *raw_regs, int regnum)
+{
+  int offset;
+  if (regnum >= s390_regnum)
+    return 0;
+  offset = s390_regmap[regnum];
+  if (offset == -1)
+    return 0;
+
+  /* The regnums are variable, better to figure out size by FT offset.  */
+
+  /* 64-bit ones.  */
+  if (offset < FT_VR(16)
+#ifdef __s390x__
+      || (offset >= FT_GPR(0) && offset < FT_ACR(0))
+      || offset == FT_PSWM
+      || offset == FT_PSWA
+#endif
+     )
+    return *(uint64_t *) (raw_regs + offset);
+
+  if (offset >= FT_ACR(0 && offset < FT_PSWM)
+      || offset == FT_FPC
+#ifndef __s390x__
+      || (offset >= FT_GPR(0) && offset < FT_ACR(0))
+      || offset == FT_PSWM_U
+      || offset == FT_PSWA_L
+#endif
+     )
+    return *(uint32_t *) (raw_regs + offset);
+
+  /* This leaves 128-bit VX.  No way to return them.  */
+  return 0;
+}
+
+/* Return target_desc to use for IPA, given the tdesc index passed by
+   gdbserver.  For s390, it also sets s390_regmap and s390_regnum.  */
+
+const struct target_desc *
+get_ipa_tdesc (int idx)
+{
+#define SET_REGMAP(regmap, skip_last) \
+	do { \
+	  s390_regmap = regmap; \
+	  s390_regnum = (sizeof regmap / sizeof regmap[0]) - skip_last; \
+	} while(0)
+  switch (idx)
+    {
+#ifdef __s390x__
+    case S390_TDESC_64:
+      /* Subtract number of VX regs.  */
+      SET_REGMAP(s390x_ft_collect_regmap, 32);
+      return tdesc_s390x_linux64;
+    case S390_TDESC_64V1:
+      SET_REGMAP(s390x_ft_collect_regmap, 32);
+      return tdesc_s390x_linux64v1;
+    case S390_TDESC_64V2:
+      SET_REGMAP(s390x_ft_collect_regmap, 32);
+      return tdesc_s390x_linux64v2;
+    case S390_TDESC_TE:
+      SET_REGMAP(s390x_te_ft_collect_regmap, 32);
+      return tdesc_s390x_te_linux64;
+    case S390_TDESC_VX:
+      SET_REGMAP(s390x_ft_collect_regmap, 0);
+      return tdesc_s390x_vx_linux64;
+    case S390_TDESC_TEVX:
+      SET_REGMAP(s390x_te_ft_collect_regmap, 0);
+      return tdesc_s390x_tevx_linux64;
+    case S390_TDESC_GS:
+      SET_REGMAP(s390x_te_ft_collect_regmap, 0);
+      return tdesc_s390x_gs_linux64;
+#else
+    case S390_TDESC_32:
+      SET_REGMAP(s390_linux32_ft_collect_regmap, 0);
+      return tdesc_s390_linux32;
+    case S390_TDESC_32V1:
+      SET_REGMAP(s390_linux32_ft_collect_regmap, 0);
+      return tdesc_s390_linux32v1;
+    case S390_TDESC_32V2:
+      SET_REGMAP(s390_linux32_ft_collect_regmap, 0);
+      return tdesc_s390_linux32v2;
+    case S390_TDESC_64:
+      SET_REGMAP(s390_linux64_ft_collect_regmap, 32);
+      return tdesc_s390_linux64;
+    case S390_TDESC_64V1:
+      SET_REGMAP(s390_linux64_ft_collect_regmap, 32);
+      return tdesc_s390_linux64v1;
+    case S390_TDESC_64V2:
+      SET_REGMAP(s390_linux64_ft_collect_regmap, 32);
+      return tdesc_s390_linux64v2;
+    case S390_TDESC_TE:
+      SET_REGMAP(s390_te_linux64_ft_collect_regmap, 32);
+      return tdesc_s390_te_linux64;
+    case S390_TDESC_VX:
+      SET_REGMAP(s390_linux64_ft_collect_regmap, 0);
+      return tdesc_s390_vx_linux64;
+    case S390_TDESC_TEVX:
+      SET_REGMAP(s390_te_linux64_ft_collect_regmap, 0);
+      return tdesc_s390_tevx_linux64;
+    case S390_TDESC_GS:
+      SET_REGMAP(s390_te_linux64_ft_collect_regmap, 0);
+      return tdesc_s390_gs_linux64;
+#endif
+    default:
+      internal_error (__FILE__, __LINE__,
+		      "unknown ipa tdesc index: %d", idx);
+#ifdef __s390x__
+      return tdesc_s390x_linux64;
+#else
+      return tdesc_s390_linux32;
+#endif
+    }
+}
+
+/* Allocate buffer for the jump pads.  On 31-bit, JG reaches everywhere,
+   so just allocate normally.  On 64-bit, we have +/-4GiB of reach, and
+   the executable is usually mapped at 0x80000000 - aim for somewhere
+   below it.  */
+
+void *
+alloc_jump_pad_buffer (size_t size)
+{
+#ifdef __s390x__
+  uintptr_t addr;
+  uintptr_t exec_base = getauxval (AT_PHDR);
+  int pagesize;
+  void *res;
+
+  if (exec_base == 0)
+    exec_base = 0x80000000;
+
+  pagesize = sysconf (_SC_PAGE_SIZE);
+  if (pagesize == -1)
+    perror_with_name ("sysconf");
+
+  addr = exec_base - size;
+
+  /* size should already be page-aligned, but this can't hurt.  */
+  addr &= ~(pagesize - 1);
+
+  /* Search for a free area.  If we hit 0, we're out of luck.  */
+  for (; addr; addr -= pagesize)
+    {
+      /* No MAP_FIXED - we don't want to zap someone's mapping.  */
+      res = mmap ((void *) addr, size,
+		  PROT_READ | PROT_WRITE | PROT_EXEC,
+		  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+      /* If we got what we wanted, return.  */
+      if ((uintptr_t) res == addr)
+	return res;
+
+      /* If we got a mapping, but at a wrong address, undo it.  */
+      if (res != MAP_FAILED)
+	munmap (res, size);
+    }
+
+  return NULL;
+#else
+  void *res = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
+		    MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+  if (res == MAP_FAILED)
+    return NULL;
+
+  return res;
+#endif
+}
+
+void
+initialize_low_tracepoint (void)
+{
+#ifdef __s390x__
+  init_registers_s390x_linux64 ();
+  init_registers_s390x_linux64v1 ();
+  init_registers_s390x_linux64v2 ();
+  init_registers_s390x_te_linux64 ();
+  init_registers_s390x_vx_linux64 ();
+  init_registers_s390x_tevx_linux64 ();
+  init_registers_s390x_gs_linux64 ();
+#else
+  init_registers_s390_linux32 ();
+  init_registers_s390_linux32v1 ();
+  init_registers_s390_linux32v2 ();
+  init_registers_s390_linux64 ();
+  init_registers_s390_linux64v1 ();
+  init_registers_s390_linux64v2 ();
+  init_registers_s390_te_linux64 ();
+  init_registers_s390_vx_linux64 ();
+  init_registers_s390_tevx_linux64 ();
+  init_registers_s390_gs_linux64 ();
+#endif
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-s390-low.cc ./gdbserver/linux-s390-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-s390-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-s390-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,2890 @@
+/* GNU/Linux S/390 specific low level interface, for the remote server
+   for GDB.
+   Copyright (C) 2001-2021 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/>.  */
+
+/* This file is used for both 31-bit and 64-bit S/390 systems.  */
+
+#include "server.h"
+#include "linux-low.h"
+#include "elf/common.h"
+#include "ax.h"
+#include "tracepoint.h"
+
+#include <asm/ptrace.h>
+#include "nat/gdb_ptrace.h"
+#include <sys/uio.h>
+#include <elf.h>
+#include <inttypes.h>
+
+#include "linux-s390-tdesc.h"
+
+#ifndef HWCAP_S390_HIGH_GPRS
+#define HWCAP_S390_HIGH_GPRS 512
+#endif
+
+#ifndef HWCAP_S390_TE
+#define HWCAP_S390_TE 1024
+#endif
+
+#ifndef HWCAP_S390_VX
+#define HWCAP_S390_VX 2048
+#endif
+
+#ifndef HWCAP_S390_GS
+#define HWCAP_S390_GS 16384
+#endif
+
+#define s390_num_regs 52
+
+/* Linux target op definitions for the S/390 architecture.  */
+
+class s390_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+  bool supports_z_point_type (char z_type) override;
+
+  bool supports_tracepoints () override;
+
+  bool supports_fast_tracepoints () override;
+
+  int install_fast_tracepoint_jump_pad
+    (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector,
+     CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry,
+     CORE_ADDR *trampoline, ULONGEST *trampoline_size,
+     unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size,
+     CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end,
+     char *err) override;
+
+  int get_min_fast_tracepoint_insn_len () override;
+
+  void low_collect_ptrace_register (regcache *regcache, int regno,
+				    char *buf) override;
+
+  void low_supply_ptrace_register (regcache *regcache, int regno,
+				   const char *buf) override;
+
+  struct emit_ops *emit_ops () override;
+
+  int get_ipa_tdesc_idx () override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  int low_decr_pc_after_break () override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+
+  int low_get_thread_area (int lwpid, CORE_ADDR *addrp) override;
+};
+
+/* The singleton target ops object.  */
+
+static s390_target the_s390_target;
+
+static int s390_regmap[] = {
+  PT_PSWMASK, PT_PSWADDR,
+
+  PT_GPR0, PT_GPR1, PT_GPR2, PT_GPR3,
+  PT_GPR4, PT_GPR5, PT_GPR6, PT_GPR7,
+  PT_GPR8, PT_GPR9, PT_GPR10, PT_GPR11,
+  PT_GPR12, PT_GPR13, PT_GPR14, PT_GPR15,
+
+  PT_ACR0, PT_ACR1, PT_ACR2, PT_ACR3,
+  PT_ACR4, PT_ACR5, PT_ACR6, PT_ACR7,
+  PT_ACR8, PT_ACR9, PT_ACR10, PT_ACR11,
+  PT_ACR12, PT_ACR13, PT_ACR14, PT_ACR15,
+
+  PT_FPC,
+
+#ifndef __s390x__
+  PT_FPR0_HI, PT_FPR1_HI, PT_FPR2_HI, PT_FPR3_HI,
+  PT_FPR4_HI, PT_FPR5_HI, PT_FPR6_HI, PT_FPR7_HI,
+  PT_FPR8_HI, PT_FPR9_HI, PT_FPR10_HI, PT_FPR11_HI,
+  PT_FPR12_HI, PT_FPR13_HI, PT_FPR14_HI, PT_FPR15_HI,
+#else
+  PT_FPR0, PT_FPR1, PT_FPR2, PT_FPR3,
+  PT_FPR4, PT_FPR5, PT_FPR6, PT_FPR7,
+  PT_FPR8, PT_FPR9, PT_FPR10, PT_FPR11,
+  PT_FPR12, PT_FPR13, PT_FPR14, PT_FPR15,
+#endif
+
+  PT_ORIGGPR2,
+};
+
+#define s390_num_regs_3264 68
+
+#ifdef __s390x__
+static int s390_regmap_3264[] = {
+  PT_PSWMASK, PT_PSWADDR,
+
+  PT_GPR0, PT_GPR0, PT_GPR1, PT_GPR1,
+  PT_GPR2, PT_GPR2, PT_GPR3, PT_GPR3,
+  PT_GPR4, PT_GPR4, PT_GPR5, PT_GPR5,
+  PT_GPR6, PT_GPR6, PT_GPR7, PT_GPR7,
+  PT_GPR8, PT_GPR8, PT_GPR9, PT_GPR9,
+  PT_GPR10, PT_GPR10, PT_GPR11, PT_GPR11,
+  PT_GPR12, PT_GPR12, PT_GPR13, PT_GPR13,
+  PT_GPR14, PT_GPR14, PT_GPR15, PT_GPR15,
+
+  PT_ACR0, PT_ACR1, PT_ACR2, PT_ACR3,
+  PT_ACR4, PT_ACR5, PT_ACR6, PT_ACR7,
+  PT_ACR8, PT_ACR9, PT_ACR10, PT_ACR11,
+  PT_ACR12, PT_ACR13, PT_ACR14, PT_ACR15,
+
+  PT_FPC,
+
+  PT_FPR0, PT_FPR1, PT_FPR2, PT_FPR3,
+  PT_FPR4, PT_FPR5, PT_FPR6, PT_FPR7,
+  PT_FPR8, PT_FPR9, PT_FPR10, PT_FPR11,
+  PT_FPR12, PT_FPR13, PT_FPR14, PT_FPR15,
+
+  PT_ORIGGPR2,
+};
+#else
+static int s390_regmap_3264[] = {
+  PT_PSWMASK, PT_PSWADDR,
+
+  -1, PT_GPR0, -1, PT_GPR1,
+  -1, PT_GPR2, -1, PT_GPR3,
+  -1, PT_GPR4, -1, PT_GPR5,
+  -1, PT_GPR6, -1, PT_GPR7,
+  -1, PT_GPR8, -1, PT_GPR9,
+  -1, PT_GPR10, -1, PT_GPR11,
+  -1, PT_GPR12, -1, PT_GPR13,
+  -1, PT_GPR14, -1, PT_GPR15,
+
+  PT_ACR0, PT_ACR1, PT_ACR2, PT_ACR3,
+  PT_ACR4, PT_ACR5, PT_ACR6, PT_ACR7,
+  PT_ACR8, PT_ACR9, PT_ACR10, PT_ACR11,
+  PT_ACR12, PT_ACR13, PT_ACR14, PT_ACR15,
+
+  PT_FPC,
+
+  PT_FPR0_HI, PT_FPR1_HI, PT_FPR2_HI, PT_FPR3_HI,
+  PT_FPR4_HI, PT_FPR5_HI, PT_FPR6_HI, PT_FPR7_HI,
+  PT_FPR8_HI, PT_FPR9_HI, PT_FPR10_HI, PT_FPR11_HI,
+  PT_FPR12_HI, PT_FPR13_HI, PT_FPR14_HI, PT_FPR15_HI,
+
+  PT_ORIGGPR2,
+};
+#endif
+
+
+bool
+s390_target::low_cannot_fetch_register (int regno)
+{
+  return false;
+}
+
+bool
+s390_target::low_cannot_store_register (int regno)
+{
+  return false;
+}
+
+void
+s390_target::low_collect_ptrace_register (regcache *regcache, int regno,
+					  char *buf)
+{
+  int size = register_size (regcache->tdesc, regno);
+  const struct regs_info *regs_info = get_regs_info ();
+  struct usrregs_info *usr = regs_info->usrregs;
+  int regaddr = usr->regmap[regno];
+
+  if (size < sizeof (long))
+    {
+      memset (buf, 0, sizeof (long));
+
+      if ((regno ^ 1) < usr->num_regs
+	  && usr->regmap[regno ^ 1] == regaddr)
+	{
+	  collect_register (regcache, regno & ~1, buf);
+	  collect_register (regcache, (regno & ~1) + 1,
+			    buf + sizeof (long) - size);
+	}
+      else if (regaddr == PT_PSWMASK)
+	{
+	  /* Convert 4-byte PSW mask to 8 bytes by clearing bit 12 and copying
+	     the basic addressing mode bit from the PSW address.  */
+	  gdb_byte *addr = (gdb_byte *) alloca (register_size (regcache->tdesc, regno ^ 1));
+	  collect_register (regcache, regno, buf);
+	  collect_register (regcache, regno ^ 1, addr);
+	  buf[1] &= ~0x8;
+	  buf[size] |= (addr[0] & 0x80);
+	}
+      else if (regaddr == PT_PSWADDR)
+	{
+	  /* Convert 4-byte PSW address to 8 bytes by clearing the addressing
+	     mode bit (which gets copied to the PSW mask instead).  */
+	  collect_register (regcache, regno, buf + sizeof (long) - size);
+	  buf[sizeof (long) - size] &= ~0x80;
+	}
+      else if ((regaddr >= PT_GPR0 && regaddr <= PT_GPR15)
+	       || regaddr == PT_ORIGGPR2)
+	collect_register (regcache, regno, buf + sizeof (long) - size);
+      else
+	collect_register (regcache, regno, buf);
+    }
+  else if (regaddr != -1)
+    collect_register (regcache, regno, buf);
+}
+
+void
+s390_target::low_supply_ptrace_register (regcache *regcache, int regno,
+					 const char *buf)
+{
+  int size = register_size (regcache->tdesc, regno);
+  const struct regs_info *regs_info = get_regs_info ();
+  struct usrregs_info *usr = regs_info->usrregs;
+  int regaddr = usr->regmap[regno];
+
+  if (size < sizeof (long))
+    {
+      if ((regno ^ 1) < usr->num_regs
+	  && usr->regmap[regno ^ 1] == regaddr)
+	{
+	  supply_register (regcache, regno & ~1, buf);
+	  supply_register (regcache, (regno & ~1) + 1,
+			   buf + sizeof (long) - size);
+	}
+      else if (regaddr == PT_PSWMASK)
+	{
+	  /* Convert 8-byte PSW mask to 4 bytes by setting bit 12 and copying
+	     the basic addressing mode into the PSW address.  */
+	  gdb_byte *mask = (gdb_byte *) alloca (size);
+	  gdb_byte *addr = (gdb_byte *) alloca (register_size (regcache->tdesc, regno ^ 1));
+	  memcpy (mask, buf, size);
+	  mask[1] |= 0x8;
+	  supply_register (regcache, regno, mask);
+
+	  collect_register (regcache, regno ^ 1, addr);
+	  addr[0] &= ~0x80;
+	  addr[0] |= (buf[size] & 0x80);
+	  supply_register (regcache, regno ^ 1, addr);
+	}
+      else if (regaddr == PT_PSWADDR)
+	{
+	  /* Convert 8-byte PSW address to 4 bytes by truncating, but
+	     keeping the addressing mode bit (which was set from the mask).  */
+	  gdb_byte *addr = (gdb_byte *) alloca (size);
+	  char amode;
+	  collect_register (regcache, regno, addr);
+	  amode = addr[0] & 0x80;
+	  memcpy (addr, buf + sizeof (long) - size, size);
+	  addr[0] &= ~0x80;
+	  addr[0] |= amode;
+	  supply_register (regcache, regno, addr);
+	}
+      else if ((regaddr >= PT_GPR0 && regaddr <= PT_GPR15)
+	       || regaddr == PT_ORIGGPR2)
+	supply_register (regcache, regno, buf + sizeof (long) - size);
+      else
+	supply_register (regcache, regno, buf);
+    }
+  else if (regaddr != -1)
+    supply_register (regcache, regno, buf);
+}
+
+/* Provide only a fill function for the general register set.  ps_lgetregs
+   will use this for NPTL support.  */
+
+static void
+s390_fill_gregset (struct regcache *regcache, void *buf)
+{
+  int i;
+  const struct regs_info *regs_info = the_linux_target->get_regs_info ();
+  struct usrregs_info *usr = regs_info->usrregs;
+
+  for (i = 0; i < usr->num_regs; i++)
+    {
+      if (usr->regmap[i] < PT_PSWMASK
+	  || usr->regmap[i] > PT_ACR15)
+	continue;
+
+      ((s390_target *) the_linux_target)->low_collect_ptrace_register
+	(regcache, i, (char *) buf + usr->regmap[i]);
+    }
+}
+
+/* Fill and store functions for extended register sets.  */
+
+#ifndef __s390x__
+static void
+s390_fill_gprs_high (struct regcache *regcache, void *buf)
+{
+  int r0h = find_regno (regcache->tdesc, "r0h");
+  int i;
+
+  for (i = 0; i < 16; i++)
+    collect_register (regcache, r0h + 2 * i, (char *) buf + 4 * i);
+}
+
+static void
+s390_store_gprs_high (struct regcache *regcache, const void *buf)
+{
+  int r0h = find_regno (regcache->tdesc, "r0h");
+  int i;
+
+  for (i = 0; i < 16; i++)
+    supply_register (regcache, r0h + 2 * i, (const char *) buf + 4 * i);
+}
+#endif
+
+static void
+s390_store_last_break (struct regcache *regcache, const void *buf)
+{
+  const char *p;
+
+  p = (const char *) buf + 8 - register_size (regcache->tdesc, 0);
+  supply_register_by_name (regcache, "last_break", p);
+}
+
+static void
+s390_fill_system_call (struct regcache *regcache, void *buf)
+{
+  collect_register_by_name (regcache, "system_call", buf);
+}
+
+static void
+s390_store_system_call (struct regcache *regcache, const void *buf)
+{
+  supply_register_by_name (regcache, "system_call", buf);
+}
+
+static void
+s390_store_tdb (struct regcache *regcache, const void *buf)
+{
+  int tdb0 = find_regno (regcache->tdesc, "tdb0");
+  int tr0 = find_regno (regcache->tdesc, "tr0");
+  int i;
+
+  for (i = 0; i < 4; i++)
+    supply_register (regcache, tdb0 + i, (const char *) buf + 8 * i);
+
+  for (i = 0; i < 16; i++)
+    supply_register (regcache, tr0 + i, (const char *) buf + 8 * (16 + i));
+}
+
+static void
+s390_fill_vxrs_low (struct regcache *regcache, void *buf)
+{
+  int v0 = find_regno (regcache->tdesc, "v0l");
+  int i;
+
+  for (i = 0; i < 16; i++)
+    collect_register (regcache, v0 + i, (char *) buf + 8 * i);
+}
+
+static void
+s390_store_vxrs_low (struct regcache *regcache, const void *buf)
+{
+  int v0 = find_regno (regcache->tdesc, "v0l");
+  int i;
+
+  for (i = 0; i < 16; i++)
+    supply_register (regcache, v0 + i, (const char *) buf + 8 * i);
+}
+
+static void
+s390_fill_vxrs_high (struct regcache *regcache, void *buf)
+{
+  int v16 = find_regno (regcache->tdesc, "v16");
+  int i;
+
+  for (i = 0; i < 16; i++)
+    collect_register (regcache, v16 + i, (char *) buf + 16 * i);
+}
+
+static void
+s390_store_vxrs_high (struct regcache *regcache, const void *buf)
+{
+  int v16 = find_regno (regcache->tdesc, "v16");
+  int i;
+
+  for (i = 0; i < 16; i++)
+    supply_register (regcache, v16 + i, (const char *) buf + 16 * i);
+}
+
+static void
+s390_store_gs (struct regcache *regcache, const void *buf)
+{
+  int gsd = find_regno (regcache->tdesc, "gsd");
+  int i;
+
+  for (i = 0; i < 3; i++)
+    supply_register (regcache, gsd + i, (const char *) buf + 8 * (i + 1));
+}
+
+static void
+s390_store_gsbc (struct regcache *regcache, const void *buf)
+{
+  int bc_gsd = find_regno (regcache->tdesc, "bc_gsd");
+  int i;
+
+  for (i = 0; i < 3; i++)
+    supply_register (regcache, bc_gsd + i, (const char *) buf + 8 * (i + 1));
+}
+
+static struct regset_info s390_regsets[] = {
+  { 0, 0, 0, 0, GENERAL_REGS, s390_fill_gregset, NULL },
+#ifndef __s390x__
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_HIGH_GPRS, 0,
+    EXTENDED_REGS, s390_fill_gprs_high, s390_store_gprs_high },
+#endif
+  /* Last break address is read-only; no fill function.  */
+  { PTRACE_GETREGSET, -1, NT_S390_LAST_BREAK, 0, EXTENDED_REGS,
+    NULL, s390_store_last_break },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_SYSTEM_CALL, 0,
+    EXTENDED_REGS, s390_fill_system_call, s390_store_system_call },
+  /* TDB is read-only.  */
+  { PTRACE_GETREGSET, -1, NT_S390_TDB, 0, EXTENDED_REGS,
+    NULL, s390_store_tdb },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_VXRS_LOW, 0,
+    EXTENDED_REGS, s390_fill_vxrs_low, s390_store_vxrs_low },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_S390_VXRS_HIGH, 0,
+    EXTENDED_REGS, s390_fill_vxrs_high, s390_store_vxrs_high },
+  /* Guarded storage registers are read-only.  */
+  { PTRACE_GETREGSET, -1, NT_S390_GS_CB, 0, EXTENDED_REGS,
+    NULL, s390_store_gs },
+  { PTRACE_GETREGSET, -1, NT_S390_GS_BC, 0, EXTENDED_REGS,
+    NULL, s390_store_gsbc },
+  NULL_REGSET
+};
+
+
+static const gdb_byte s390_breakpoint[] = { 0, 1 };
+#define s390_breakpoint_len 2
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+s390_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = s390_breakpoint_len;
+  return s390_breakpoint;
+}
+
+bool
+s390_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+s390_target::low_get_pc (regcache *regcache)
+{
+  if (register_size (regcache->tdesc, 0) == 4)
+    {
+      unsigned int pswa;
+      collect_register_by_name (regcache, "pswa", &pswa);
+      return pswa & 0x7fffffff;
+    }
+  else
+    {
+      unsigned long pc;
+      collect_register_by_name (regcache, "pswa", &pc);
+      return pc;
+    }
+}
+
+void
+s390_target::low_set_pc (regcache *regcache, CORE_ADDR newpc)
+{
+  if (register_size (regcache->tdesc, 0) == 4)
+    {
+      unsigned int pswa;
+      collect_register_by_name (regcache, "pswa", &pswa);
+      pswa = (pswa & 0x80000000) | (newpc & 0x7fffffff);
+      supply_register_by_name (regcache, "pswa", &pswa);
+    }
+  else
+    {
+      unsigned long pc = newpc;
+      supply_register_by_name (regcache, "pswa", &pc);
+    }
+}
+
+int
+s390_target::low_decr_pc_after_break ()
+{
+  return s390_breakpoint_len;
+}
+
+/* Determine the word size for the given PID, in bytes.  */
+
+#ifdef __s390x__
+static int
+s390_get_wordsize (int pid)
+{
+  errno = 0;
+  PTRACE_XFER_TYPE pswm = ptrace (PTRACE_PEEKUSER, pid,
+				  (PTRACE_TYPE_ARG3) 0,
+				  (PTRACE_TYPE_ARG4) 0);
+  if (errno != 0)
+    {
+      warning (_("Couldn't determine word size, assuming 64-bit."));
+      return 8;
+    }
+  /* Derive word size from extended addressing mode (PSW bit 31).  */
+  return pswm & (1L << 32) ? 8 : 4;
+}
+#else
+#define s390_get_wordsize(pid) 4
+#endif
+
+static int
+s390_check_regset (int pid, int regset, int regsize)
+{
+  void *buf = alloca (regsize);
+  struct iovec iov;
+
+  iov.iov_base = buf;
+  iov.iov_len = regsize;
+
+  if (ptrace (PTRACE_GETREGSET, pid, (long) regset, (long) &iov) >= 0
+      || errno == ENODATA)
+    return 1;
+  return 0;
+}
+
+/* For a 31-bit inferior, whether the kernel supports using the full
+   64-bit GPRs.  */
+static int have_hwcap_s390_high_gprs = 0;
+static int have_hwcap_s390_vx = 0;
+
+void
+s390_target::low_arch_setup ()
+{
+  const struct target_desc *tdesc;
+  struct regset_info *regset;
+
+  /* Determine word size and HWCAP.  */
+  int pid = pid_of (current_thread);
+  int wordsize = s390_get_wordsize (pid);
+  unsigned long hwcap = linux_get_hwcap (wordsize);
+
+  /* Check whether the kernel supports extra register sets.  */
+  int have_regset_last_break
+    = s390_check_regset (pid, NT_S390_LAST_BREAK, 8);
+  int have_regset_system_call
+    = s390_check_regset (pid, NT_S390_SYSTEM_CALL, 4);
+  int have_regset_tdb
+    = (s390_check_regset (pid, NT_S390_TDB, 256)
+       && (hwcap & HWCAP_S390_TE) != 0);
+  int have_regset_vxrs
+    = (s390_check_regset (pid, NT_S390_VXRS_LOW, 128)
+       && s390_check_regset (pid, NT_S390_VXRS_HIGH, 256)
+       && (hwcap & HWCAP_S390_VX) != 0);
+  int have_regset_gs
+    = (s390_check_regset (pid, NT_S390_GS_CB, 32)
+       && s390_check_regset (pid, NT_S390_GS_BC, 32)
+       && (hwcap & HWCAP_S390_GS) != 0);
+
+  {
+#ifdef __s390x__
+    if (wordsize == 8)
+      {
+	if (have_regset_gs)
+	  tdesc = tdesc_s390x_gs_linux64;
+	else if (have_regset_vxrs)
+	  tdesc = (have_regset_tdb ? tdesc_s390x_tevx_linux64 :
+		   tdesc_s390x_vx_linux64);
+	else if (have_regset_tdb)
+	  tdesc = tdesc_s390x_te_linux64;
+	else if (have_regset_system_call)
+	  tdesc = tdesc_s390x_linux64v2;
+	else if (have_regset_last_break)
+	  tdesc = tdesc_s390x_linux64v1;
+	else
+	  tdesc = tdesc_s390x_linux64;
+      }
+
+    /* For a 31-bit inferior, check whether the kernel supports
+       using the full 64-bit GPRs.  */
+    else
+#endif
+    if (hwcap & HWCAP_S390_HIGH_GPRS)
+      {
+	have_hwcap_s390_high_gprs = 1;
+	if (have_regset_gs)
+	  tdesc = tdesc_s390_gs_linux64;
+	else if (have_regset_vxrs)
+	  tdesc = (have_regset_tdb ? tdesc_s390_tevx_linux64 :
+		   tdesc_s390_vx_linux64);
+	else if (have_regset_tdb)
+	  tdesc = tdesc_s390_te_linux64;
+	else if (have_regset_system_call)
+	  tdesc = tdesc_s390_linux64v2;
+	else if (have_regset_last_break)
+	  tdesc = tdesc_s390_linux64v1;
+	else
+	  tdesc = tdesc_s390_linux64;
+      }
+    else
+      {
+	/* Assume 31-bit inferior process.  */
+	if (have_regset_system_call)
+	  tdesc = tdesc_s390_linux32v2;
+	else if (have_regset_last_break)
+	  tdesc = tdesc_s390_linux32v1;
+	else
+	  tdesc = tdesc_s390_linux32;
+      }
+
+    have_hwcap_s390_vx = have_regset_vxrs;
+  }
+
+  /* Update target_regsets according to available register sets.  */
+  for (regset = s390_regsets; regset->size >= 0; regset++)
+    if (regset->get_request == PTRACE_GETREGSET)
+      switch (regset->nt_type)
+	{
+#ifndef __s390x__
+	case NT_S390_HIGH_GPRS:
+	  regset->size = have_hwcap_s390_high_gprs ? 64 : 0;
+	  break;
+#endif
+	case NT_S390_LAST_BREAK:
+	  regset->size = have_regset_last_break ? 8 : 0;
+	  break;
+	case NT_S390_SYSTEM_CALL:
+	  regset->size = have_regset_system_call ? 4 : 0;
+	  break;
+	case NT_S390_TDB:
+	  regset->size = have_regset_tdb ? 256 : 0;
+	  break;
+	case NT_S390_VXRS_LOW:
+	  regset->size = have_regset_vxrs ? 128 : 0;
+	  break;
+	case NT_S390_VXRS_HIGH:
+	  regset->size = have_regset_vxrs ? 256 : 0;
+	  break;
+	case NT_S390_GS_CB:
+	case NT_S390_GS_BC:
+	  regset->size = have_regset_gs ? 32 : 0;
+	default:
+	  break;
+	}
+
+  current_process ()->tdesc = tdesc;
+}
+
+
+bool
+s390_target::low_breakpoint_at (CORE_ADDR pc)
+{
+  unsigned char c[s390_breakpoint_len];
+  read_inferior_memory (pc, c, s390_breakpoint_len);
+  return memcmp (c, s390_breakpoint, s390_breakpoint_len) == 0;
+}
+
+/* Breakpoint/Watchpoint support.  */
+
+/* The "supports_z_point_type" target ops method.  */
+
+bool
+s390_target::supports_z_point_type (char z_type)
+{
+  switch (z_type)
+    {
+    case Z_PACKET_SW_BP:
+      return true;
+    default:
+      return false;
+    }
+}
+
+static struct usrregs_info s390_usrregs_info =
+  {
+    s390_num_regs,
+    s390_regmap,
+  };
+
+static struct regsets_info s390_regsets_info =
+  {
+    s390_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct regs_info myregs_info =
+  {
+    NULL, /* regset_bitmap */
+    &s390_usrregs_info,
+    &s390_regsets_info
+  };
+
+static struct usrregs_info s390_usrregs_info_3264 =
+  {
+    s390_num_regs_3264,
+    s390_regmap_3264
+  };
+
+static struct regsets_info s390_regsets_info_3264 =
+  {
+    s390_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct regs_info regs_info_3264 =
+  {
+    NULL, /* regset_bitmap */
+    &s390_usrregs_info_3264,
+    &s390_regsets_info_3264
+  };
+
+const regs_info *
+s390_target::get_regs_info ()
+{
+  if (have_hwcap_s390_high_gprs)
+    {
+#ifdef __s390x__
+      const struct target_desc *tdesc = current_process ()->tdesc;
+
+      if (register_size (tdesc, 0) == 4)
+	return &regs_info_3264;
+#else
+      return &regs_info_3264;
+#endif
+    }
+  return &myregs_info;
+}
+
+/* The "supports_tracepoints" target ops method.  */
+
+bool
+s390_target::supports_tracepoints ()
+{
+  return true;
+}
+
+/* Implementation of linux target ops method "low_get_thread_area".  */
+
+int
+s390_target::low_get_thread_area (int lwpid, CORE_ADDR *addrp)
+{
+  CORE_ADDR res = ptrace (PTRACE_PEEKUSER, lwpid, (long) PT_ACR0, (long) 0);
+#ifdef __s390x__
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+
+  if (register_size (regcache->tdesc, 0) == 4)
+    res &= 0xffffffffull;
+#endif
+  *addrp = res;
+  return 0;
+}
+
+
+/* Fast tracepoint support.
+
+   The register save area on stack is identical for all targets:
+
+   0x000+i*0x10: VR0-VR31
+   0x200+i*8: GR0-GR15
+   0x280+i*4: AR0-AR15
+   0x2c0: PSWM [64-bit]
+   0x2c8: PSWA [64-bit]
+   0x2d0: FPC
+
+   If we're on 31-bit linux, we just don't store the high parts of the GPRs.
+   Likewise, if there's no VX support, we just store the FRs into the slots
+   of low VR halves.  The agent code is responsible for rearranging that
+   into regcache.  */
+
+/* Code sequence saving GPRs for 31-bit target with no high GPRs.  There's
+   one trick used at the very beginning: since there's no way to allocate
+   stack space without destroying CC (lay instruction can do it, but it's
+   only supported on later CPUs), we take 4 different execution paths for
+   every possible value of CC, allocate stack space, save %r0, stuff the
+   CC value in %r0 (shifted to match its position in PSWM high word),
+   then branch to common path.  */
+
+static const unsigned char s390_ft_entry_gpr_esa[] = {
+  0xa7, 0x14, 0x00, 0x1e,		/* jo .Lcc3 */
+  0xa7, 0x24, 0x00, 0x14,		/* jh .Lcc2 */
+  0xa7, 0x44, 0x00, 0x0a,		/* jl .Lcc1 */
+  /* CC = 0 */
+  0xa7, 0xfa, 0xfd, 0x00,		/* ahi %r15, -0x300 */
+  0x50, 0x00, 0xf2, 0x04,		/* st %r0, 0x204(%r15) */
+  0xa7, 0x08, 0x00, 0x00,		/* lhi %r0, 0 */
+  0xa7, 0xf4, 0x00, 0x18,		/* j .Lccdone */
+  /* .Lcc1: */
+  0xa7, 0xfa, 0xfd, 0x00,		/* ahi %r15, -0x300 */
+  0x50, 0x00, 0xf2, 0x04,		/* st %r0, 0x204(%r15) */
+  0xa7, 0x08, 0x10, 0x00,		/* lhi %r0, 0x1000 */
+  0xa7, 0xf4, 0x00, 0x10,		/* j .Lccdone */
+  /* .Lcc2: */
+  0xa7, 0xfa, 0xfd, 0x00,		/* ahi %r15, -0x300 */
+  0x50, 0x00, 0xf2, 0x04,		/* st %r0, 0x204(%r15) */
+  0xa7, 0x08, 0x20, 0x00,		/* lhi %r0, 0x2000 */
+  0xa7, 0xf4, 0x00, 0x08,		/* j .Lccdone */
+  /* .Lcc3: */
+  0xa7, 0xfa, 0xfd, 0x00,		/* ahi %r15, -0x300 */
+  0x50, 0x00, 0xf2, 0x04,		/* st %r0, 0x204(%r15) */
+  0xa7, 0x08, 0x30, 0x00,		/* lhi %r0, 0x3000 */
+  /* .Lccdone: */
+  0x50, 0x10, 0xf2, 0x0c,		/* st %r1, 0x20c(%r15) */
+  0x50, 0x20, 0xf2, 0x14,		/* st %r2, 0x214(%r15) */
+  0x50, 0x30, 0xf2, 0x1c,		/* st %r3, 0x21c(%r15) */
+  0x50, 0x40, 0xf2, 0x24,		/* st %r4, 0x224(%r15) */
+  0x50, 0x50, 0xf2, 0x2c,		/* st %r5, 0x22c(%r15) */
+  0x50, 0x60, 0xf2, 0x34,		/* st %r6, 0x234(%r15) */
+  0x50, 0x70, 0xf2, 0x3c,		/* st %r7, 0x23c(%r15) */
+  0x50, 0x80, 0xf2, 0x44,		/* st %r8, 0x244(%r15) */
+  0x50, 0x90, 0xf2, 0x4c,		/* st %r9, 0x24c(%r15) */
+  0x50, 0xa0, 0xf2, 0x54,		/* st %r10, 0x254(%r15) */
+  0x50, 0xb0, 0xf2, 0x5c,		/* st %r11, 0x25c(%r15) */
+  0x50, 0xc0, 0xf2, 0x64,		/* st %r12, 0x264(%r15) */
+  0x50, 0xd0, 0xf2, 0x6c,		/* st %r13, 0x26c(%r15) */
+  0x50, 0xe0, 0xf2, 0x74,		/* st %r14, 0x274(%r15) */
+  /* Compute original value of %r15 and store it.  We use ahi instead
+     of la to preserve the whole value, and not just the low 31 bits.
+     This is not particularly important here, but essential in the
+     zarch case where someone might be using the high word of %r15
+     as an extra register.  */
+  0x18, 0x1f,				/* lr %r1, %r15 */
+  0xa7, 0x1a, 0x03, 0x00,		/* ahi %r1, 0x300 */
+  0x50, 0x10, 0xf2, 0x7c,		/* st %r1, 0x27c(%r15) */
+};
+
+/* Code sequence saving GPRs for 31-bit target with high GPRs and for 64-bit
+   target.  Same as above, except this time we can use load/store multiple,
+   since the 64-bit regs are tightly packed.  */
+
+static const unsigned char s390_ft_entry_gpr_zarch[] = {
+  0xa7, 0x14, 0x00, 0x21,		/* jo .Lcc3 */
+  0xa7, 0x24, 0x00, 0x16,		/* jh .Lcc2 */
+  0xa7, 0x44, 0x00, 0x0b,		/* jl .Lcc1 */
+  /* CC = 0 */
+  0xa7, 0xfb, 0xfd, 0x00,		/* aghi %r15, -0x300 */
+  0xeb, 0x0e, 0xf2, 0x00, 0x00, 0x24,	/* stmg %r0, %r14, 0x200(%r15) */
+  0xa7, 0x08, 0x00, 0x00,		/* lhi %r0, 0 */
+  0xa7, 0xf4, 0x00, 0x1b,		/* j .Lccdone */
+  /* .Lcc1: */
+  0xa7, 0xfb, 0xfd, 0x00,		/* aghi %r15, -0x300 */
+  0xeb, 0x0e, 0xf2, 0x00, 0x00, 0x24,	/* stmg %r0, %r14, 0x200(%r15) */
+  0xa7, 0x08, 0x10, 0x00,		/* lhi %r0, 0x1000 */
+  0xa7, 0xf4, 0x00, 0x12,		/* j .Lccdone */
+  /* .Lcc2: */
+  0xa7, 0xfb, 0xfd, 0x00,		/* aghi %r15, -0x300 */
+  0xeb, 0x0e, 0xf2, 0x00, 0x00, 0x24,	/* stmg %r0, %r14, 0x200(%r15) */
+  0xa7, 0x08, 0x20, 0x00,		/* lhi %r0, 0x2000 */
+  0xa7, 0xf4, 0x00, 0x09,		/* j .Lccdone */
+  /* .Lcc3: */
+  0xa7, 0xfb, 0xfd, 0x00,		/* aghi %r15, -0x300 */
+  0xeb, 0x0e, 0xf2, 0x00, 0x00, 0x24,	/* stmg %r0, %r14, 0x200(%r15) */
+  0xa7, 0x08, 0x30, 0x00,		/* lhi %r0, 0x3000 */
+  /* .Lccdone: */
+  0xb9, 0x04, 0x00, 0x1f,		/* lgr %r1, %r15 */
+  0xa7, 0x1b, 0x03, 0x00,		/* aghi %r1, 0x300 */
+  0xe3, 0x10, 0xf2, 0x78, 0x00, 0x24,	/* stg %r1, 0x278(%r15) */
+};
+
+/* Code sequence saving ARs, PSWM and FPC.  PSWM has to be assembled from
+   current PSWM (read by epsw) and CC from entry (in %r0).  */
+
+static const unsigned char s390_ft_entry_misc[] = {
+  0x9b, 0x0f, 0xf2, 0x80,		/* stam %a0, %a15, 0x20(%%r15) */
+  0xb9, 0x8d, 0x00, 0x23,		/* epsw %r2, %r3 */
+  0xa7, 0x18, 0xcf, 0xff,		/* lhi %r1, ~0x3000 */
+  0x14, 0x21,				/* nr %r2, %r1 */
+  0x16, 0x20,				/* or %r2, %r0 */
+  0x50, 0x20, 0xf2, 0xc0,		/* st %r2, 0x2c0(%r15) */
+  0x50, 0x30, 0xf2, 0xc4,		/* st %r3, 0x2c4(%r15) */
+  0xb2, 0x9c, 0xf2, 0xd0,		/* stfpc 0x2d0(%r15) */
+};
+
+/* Code sequence saving FRs, used if VX not supported.  */
+
+static const unsigned char s390_ft_entry_fr[] = {
+  0x60, 0x00, 0xf0, 0x00,		/* std %f0, 0x000(%r15) */
+  0x60, 0x10, 0xf0, 0x10,		/* std %f1, 0x010(%r15) */
+  0x60, 0x20, 0xf0, 0x20,		/* std %f2, 0x020(%r15) */
+  0x60, 0x30, 0xf0, 0x30,		/* std %f3, 0x030(%r15) */
+  0x60, 0x40, 0xf0, 0x40,		/* std %f4, 0x040(%r15) */
+  0x60, 0x50, 0xf0, 0x50,		/* std %f5, 0x050(%r15) */
+  0x60, 0x60, 0xf0, 0x60,		/* std %f6, 0x060(%r15) */
+  0x60, 0x70, 0xf0, 0x70,		/* std %f7, 0x070(%r15) */
+  0x60, 0x80, 0xf0, 0x80,		/* std %f8, 0x080(%r15) */
+  0x60, 0x90, 0xf0, 0x90,		/* std %f9, 0x090(%r15) */
+  0x60, 0xa0, 0xf0, 0xa0,		/* std %f10, 0x0a0(%r15) */
+  0x60, 0xb0, 0xf0, 0xb0,		/* std %f11, 0x0b0(%r15) */
+  0x60, 0xc0, 0xf0, 0xc0,		/* std %f12, 0x0c0(%r15) */
+  0x60, 0xd0, 0xf0, 0xd0,		/* std %f13, 0x0d0(%r15) */
+  0x60, 0xe0, 0xf0, 0xe0,		/* std %f14, 0x0e0(%r15) */
+  0x60, 0xf0, 0xf0, 0xf0,		/* std %f15, 0x0f0(%r15) */
+};
+
+/* Code sequence saving VRs, used if VX not supported.  */
+
+static const unsigned char s390_ft_entry_vr[] = {
+  0xe7, 0x0f, 0xf0, 0x00, 0x00, 0x3e,	/* vstm %v0, %v15, 0x000(%r15) */
+  0xe7, 0x0f, 0xf1, 0x00, 0x0c, 0x3e,	/* vstm %v16, %v31, 0x100(%r15) */
+};
+
+/* Code sequence doing the collection call for 31-bit target.  %r1 contains
+   the address of the literal pool.  */
+
+static const unsigned char s390_ft_main_31[] = {
+  /* Load the literals into registers.  */
+  0x58, 0x50, 0x10, 0x00,		/* l %r5, 0x0(%r1) */
+  0x58, 0x20, 0x10, 0x04,		/* l %r2, 0x4(%r1) */
+  0x58, 0x40, 0x10, 0x08,		/* l %r4, 0x8(%r1) */
+  0x58, 0x60, 0x10, 0x0c,		/* l %r6, 0xc(%r1) */
+  /* Save original PSWA (tracepoint address | 0x80000000).  */
+  0x50, 0x50, 0xf2, 0xcc,		/* st %r5, 0x2cc(%r15) */
+  /* Construct a collecting_t object at %r15+0x2e0.  */
+  0x50, 0x20, 0xf2, 0xe0,		/* st %r2, 0x2e0(%r15) */
+  0x9b, 0x00, 0xf2, 0xe4,		/* stam %a0, %a0, 0x2e4(%r15) */
+  /* Move its address to %r0.  */
+  0x41, 0x00, 0xf2, 0xe0,		/* la %r0, 0x2e0(%r15) */
+  /* Take the lock.  */
+  /* .Lloop:  */
+  0xa7, 0x18, 0x00, 0x00,		/* lhi %r1, 0 */
+  0xba, 0x10, 0x60, 0x00,		/* cs %r1, %r0, 0(%r6) */
+  0xa7, 0x74, 0xff, 0xfc,		/* jne .Lloop */
+  /* Address of the register save block to %r3.  */
+  0x18, 0x3f,				/* lr %r3, %r15 */
+  /* Make a stack frame, so that we can call the collector.  */
+  0xa7, 0xfa, 0xff, 0xa0,		/* ahi %r15, -0x60 */
+  /* Call it.  */
+  0x0d, 0xe4,				/* basr %r14, %r4 */
+  /* And get rid of the stack frame again.  */
+  0x41, 0xf0, 0xf0, 0x60,		/* la %r15, 0x60(%r15) */
+  /* Leave the lock.  */
+  0x07, 0xf0, 				/* br %r0 */
+  0xa7, 0x18, 0x00, 0x00,		/* lhi %r1, 0 */
+  0x50, 0x10, 0x60, 0x00,		/* st %t1, 0(%r6) */
+};
+
+/* Code sequence doing the collection call for 64-bit target.  %r1 contains
+   the address of the literal pool.  */
+
+static const unsigned char s390_ft_main_64[] = {
+  /* Load the literals into registers.  */
+  0xe3, 0x50, 0x10, 0x00, 0x00, 0x04,	/* lg %r5, 0x00(%r1) */
+  0xe3, 0x20, 0x10, 0x08, 0x00, 0x04,	/* lg %r2, 0x08(%r1) */
+  0xe3, 0x40, 0x10, 0x10, 0x00, 0x04,	/* lg %r4, 0x10(%r1) */
+  0xe3, 0x60, 0x10, 0x18, 0x00, 0x04,	/* lg %r6, 0x18(%r1) */
+  /* Save original PSWA (tracepoint address).  */
+  0xe3, 0x50, 0xf2, 0xc8, 0x00, 0x24,	/* stg %r5, 0x2c8(%r15) */
+  /* Construct a collecting_t object at %r15+0x2e0.  */
+  0xe3, 0x20, 0xf2, 0xe0, 0x00, 0x24,	/* stg %r2, 0x2e0(%r15) */
+  0x9b, 0x01, 0xf2, 0xe8,		/* stam %a0, %a1, 0x2e8(%r15) */
+  /* Move its address to %r0.  */
+  0x41, 0x00, 0xf2, 0xe0,		/* la %r0, 0x2e0(%r15) */
+  /* Take the lock.  */
+  /* .Lloop:  */
+  0xa7, 0x19, 0x00, 0x00,		/* lghi %r1, 0 */
+  0xeb, 0x10, 0x60, 0x00, 0x00, 0x30,	/* csg %r1, %r0, 0(%r6) */
+  0xa7, 0x74, 0xff, 0xfb,		/* jne .Lloop */
+  /* Address of the register save block to %r3.  */
+  0xb9, 0x04, 0x00, 0x3f,		/* lgr %r3, %r15 */
+  /* Make a stack frame, so that we can call the collector.  */
+  0xa7, 0xfb, 0xff, 0x60,		/* aghi %r15, -0xa0 */
+  /* Call it.  */
+  0x0d, 0xe4,				/* basr %r14, %r4 */
+  /* And get rid of the stack frame again.  */
+  0x41, 0xf0, 0xf0, 0xa0,		/* la %r15, 0xa0(%r15) */
+  /* Leave the lock.  */
+  0x07, 0xf0,				/* br %r0 */
+  0xa7, 0x19, 0x00, 0x00,		/* lghi %r1, 0 */
+  0xe3, 0x10, 0x60, 0x00, 0x00, 0x24,	/* stg %t1, 0(%r6) */
+};
+
+/* Code sequence restoring FRs, for targets with no VX support.  */
+
+static const unsigned char s390_ft_exit_fr[] = {
+  0x68, 0x00, 0xf0, 0x00,		/* ld %f0, 0x000(%r15) */
+  0x68, 0x10, 0xf0, 0x10,		/* ld %f1, 0x010(%r15) */
+  0x68, 0x20, 0xf0, 0x20,		/* ld %f2, 0x020(%r15) */
+  0x68, 0x30, 0xf0, 0x30,		/* ld %f3, 0x030(%r15) */
+  0x68, 0x40, 0xf0, 0x40,		/* ld %f4, 0x040(%r15) */
+  0x68, 0x50, 0xf0, 0x50,		/* ld %f5, 0x050(%r15) */
+  0x68, 0x60, 0xf0, 0x60,		/* ld %f6, 0x060(%r15) */
+  0x68, 0x70, 0xf0, 0x70,		/* ld %f7, 0x070(%r15) */
+  0x68, 0x80, 0xf0, 0x80,		/* ld %f8, 0x080(%r15) */
+  0x68, 0x90, 0xf0, 0x90,		/* ld %f9, 0x090(%r15) */
+  0x68, 0xa0, 0xf0, 0xa0,		/* ld %f10, 0x0a0(%r15) */
+  0x68, 0xb0, 0xf0, 0xb0,		/* ld %f11, 0x0b0(%r15) */
+  0x68, 0xc0, 0xf0, 0xc0,		/* ld %f12, 0x0c0(%r15) */
+  0x68, 0xd0, 0xf0, 0xd0,		/* ld %f13, 0x0d0(%r15) */
+  0x68, 0xe0, 0xf0, 0xe0,		/* ld %f14, 0x0e0(%r15) */
+  0x68, 0xf0, 0xf0, 0xf0,		/* ld %f15, 0x0f0(%r15) */
+};
+
+/* Code sequence restoring VRs.  */
+
+static const unsigned char s390_ft_exit_vr[] = {
+  0xe7, 0x0f, 0xf0, 0x00, 0x00, 0x36,	/* vlm %v0, %v15, 0x000(%r15) */
+  0xe7, 0x0f, 0xf1, 0x00, 0x0c, 0x36,	/* vlm %v16, %v31, 0x100(%r15) */
+};
+
+/* Code sequence restoring misc registers.  As for PSWM, only CC should be
+   modified by C code, so we use the alr instruction to restore it by
+   manufacturing an operand that'll result in the original flags.  */
+
+static const unsigned char s390_ft_exit_misc[] = {
+  0xb2, 0x9d, 0xf2, 0xd0,		/* lfpc 0x2d0(%r15) */
+  0x58, 0x00, 0xf2, 0xc0,		/* l %r0, 0x2c0(%r15) */
+  /* Extract CC to high 2 bits of %r0.  */
+  0x88, 0x00, 0x00, 0x0c,		/* srl %r0, 12 */
+  0x89, 0x00, 0x00, 0x1e,		/* sll %r0, 30 */
+  /* Add %r0 to itself.  Result will be nonzero iff CC bit 0 is set, and
+     will have carry iff CC bit 1 is set - resulting in the same flags
+     as the original.  */
+  0x1e, 0x00,				/* alr %r0, %r0 */
+  0x9a, 0x0f, 0xf2, 0x80,		/* lam %a0, %a15, 0x280(%r15) */
+};
+
+/* Code sequence restoring GPRs, for 31-bit targets with no high GPRs.  */
+
+static const unsigned char s390_ft_exit_gpr_esa[] = {
+  0x58, 0x00, 0xf2, 0x04,		/* l %r0, 0x204(%r15) */
+  0x58, 0x10, 0xf2, 0x0c,		/* l %r1, 0x20c(%r15) */
+  0x58, 0x20, 0xf2, 0x14,		/* l %r2, 0x214(%r15) */
+  0x58, 0x30, 0xf2, 0x1c,		/* l %r3, 0x21c(%r15) */
+  0x58, 0x40, 0xf2, 0x24,		/* l %r4, 0x224(%r15) */
+  0x58, 0x50, 0xf2, 0x2c,		/* l %r5, 0x22c(%r15) */
+  0x58, 0x60, 0xf2, 0x34,		/* l %r6, 0x234(%r15) */
+  0x58, 0x70, 0xf2, 0x3c,		/* l %r7, 0x23c(%r15) */
+  0x58, 0x80, 0xf2, 0x44,		/* l %r8, 0x244(%r15) */
+  0x58, 0x90, 0xf2, 0x4c,		/* l %r9, 0x24c(%r15) */
+  0x58, 0xa0, 0xf2, 0x54,		/* l %r10, 0x254(%r15) */
+  0x58, 0xb0, 0xf2, 0x5c,		/* l %r11, 0x25c(%r15) */
+  0x58, 0xc0, 0xf2, 0x64,		/* l %r12, 0x264(%r15) */
+  0x58, 0xd0, 0xf2, 0x6c,		/* l %r13, 0x26c(%r15) */
+  0x58, 0xe0, 0xf2, 0x74,		/* l %r14, 0x274(%r15) */
+  0x58, 0xf0, 0xf2, 0x7c,		/* l %r15, 0x27c(%r15) */
+};
+
+/* Code sequence restoring GPRs, for 64-bit targets and 31-bit targets
+   with high GPRs.  */
+
+static const unsigned char s390_ft_exit_gpr_zarch[] = {
+  0xeb, 0x0f, 0xf2, 0x00, 0x00, 0x04,	/* lmg %r0, %r15, 0x200(%r15) */
+};
+
+/* Writes instructions to target, updating the to pointer.  */
+
+static void
+append_insns (CORE_ADDR *to, size_t len, const unsigned char *buf)
+{
+  target_write_memory (*to, buf, len);
+  *to += len;
+}
+
+/* Relocates an instruction from oldloc to *to, updating to.  */
+
+static int
+s390_relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc, int is_64)
+{
+  gdb_byte buf[6];
+  int ilen;
+  int op2;
+  /* 0: no fixup, 1: PC16DBL fixup, 2: PC32DBL fixup.  */
+  int mode = 0;
+  int is_bras = 0;
+  read_inferior_memory (oldloc, buf, sizeof buf);
+  if (buf[0] < 0x40)
+    ilen = 2;
+  else if (buf[0] < 0xc0)
+    ilen = 4;
+  else
+    ilen = 6;
+  switch (buf[0])
+    {
+    case 0x05: /* BALR */
+    case 0x0c: /* BASSM */
+    case 0x0d: /* BASR */
+    case 0x45: /* BAL */
+    case 0x4d: /* BAS */
+      /* These save a return address and mess around with registers.
+	 We can't relocate them.  */
+      return 1;
+    case 0x84: /* BRXH */
+    case 0x85: /* BRXLE */
+      mode = 1;
+      break;
+    case 0xa7:
+      op2 = buf[1] & 0xf;
+      /* BRC, BRAS, BRCT, BRCTG */
+      if (op2 >= 4 && op2 <= 7)
+	mode = 1;
+      /* BRAS */
+      if (op2 == 5)
+	is_bras = 1;
+      break;
+    case 0xc0:
+      op2 = buf[1] & 0xf;
+      /* LARL, BRCL, BRASL */
+      if (op2 == 0 || op2 == 4 || op2 == 5)
+	mode = 2;
+      /* BRASL */
+      if (op2 == 5)
+	is_bras = 1;
+      break;
+    case 0xc4:
+    case 0xc6:
+      /* PC-relative addressing instructions.  */
+      mode = 2;
+      break;
+    case 0xc5: /* BPRP */
+    case 0xc7: /* BPP */
+      /* Branch prediction - just skip it.  */
+      return 0;
+    case 0xcc:
+      op2 = buf[1] & 0xf;
+      /* BRCTH */
+      if (op2 == 6)
+	mode = 2;
+      break;
+    case 0xec:
+      op2 = buf[5];
+      switch (op2)
+	{
+	case 0x44: /* BRXHG */
+	case 0x45: /* BRXLG */
+	case 0x64: /* CGRJ */
+	case 0x65: /* CLGRJ */
+	case 0x76: /* CRJ */
+	case 0x77: /* CLRJ */
+	  mode = 1;
+	  break;
+	}
+      break;
+    }
+
+  if (mode != 0)
+    {
+      /* We'll have to relocate an instruction with a PC-relative field.
+	 First, compute the target.  */
+      int64_t loffset = 0;
+      CORE_ADDR target;
+      if (mode == 1)
+	{
+	  int16_t soffset = 0;
+	  memcpy (&soffset, buf + 2, 2);
+	  loffset = soffset;
+	}
+      else if (mode == 2)
+	{
+	  int32_t soffset = 0;
+	  memcpy (&soffset, buf + 2, 4);
+	  loffset = soffset;
+	}
+      target = oldloc + loffset * 2;
+      if (!is_64)
+	target &= 0x7fffffff;
+
+      if (is_bras)
+	{
+	  /* BRAS or BRASL was used.  We cannot just relocate those, since
+	     they save the return address in a register.  We can, however,
+	     replace them with a LARL+JG sequence.  */
+
+	  /* Make the LARL.  */
+	  int32_t soffset;
+	  buf[0] = 0xc0;
+	  buf[1] &= 0xf0;
+	  loffset = oldloc + ilen - *to;
+	  loffset >>= 1;
+	  soffset = loffset;
+	  if (soffset != loffset && is_64)
+	    return 1;
+	  memcpy (buf + 2, &soffset, 4);
+	  append_insns (to, 6, buf);
+
+	  /* Note: this is not fully correct.  In 31-bit mode, LARL will write
+	     an address with the top bit 0, while BRAS/BRASL will write it
+	     with top bit 1.  It should not matter much, since linux compilers
+	     use BR and not BSM to return from functions, but it could confuse
+	     some poor stack unwinder.  */
+
+	  /* We'll now be writing a JG.  */
+	  mode = 2;
+	  buf[0] = 0xc0;
+	  buf[1] = 0xf4;
+	  ilen = 6;
+	}
+
+      /* Compute the new offset and write it to the buffer.  */
+      loffset = target - *to;
+      loffset >>= 1;
+
+      if (mode == 1)
+	{
+	  int16_t soffset = loffset;
+	  if (soffset != loffset)
+	    return 1;
+	  memcpy (buf + 2, &soffset, 2);
+	}
+      else if (mode == 2)
+	{
+	  int32_t soffset = loffset;
+	  if (soffset != loffset && is_64)
+	    return 1;
+	  memcpy (buf + 2, &soffset, 4);
+	}
+    }
+  append_insns (to, ilen, buf);
+  return 0;
+}
+
+bool
+s390_target::supports_fast_tracepoints ()
+{
+  return true;
+}
+
+/* Implementation of target ops method
+   "install_fast_tracepoint_jump_pad".  */
+
+int
+s390_target::install_fast_tracepoint_jump_pad
+  (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector,
+   CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry,
+   CORE_ADDR *trampoline, ULONGEST *trampoline_size,
+   unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size,
+   CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end,
+   char *err)
+{
+  int i;
+  int64_t loffset;
+  int32_t offset;
+  unsigned char jbuf[6] = { 0xc0, 0xf4, 0, 0, 0, 0 };	/* jg ... */
+  CORE_ADDR buildaddr = *jump_entry;
+#ifdef __s390x__
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+  int is_64 = register_size (regcache->tdesc, 0) == 8;
+  int is_zarch = is_64 || have_hwcap_s390_high_gprs;
+  int has_vx = have_hwcap_s390_vx;
+#else
+  int is_64 = 0, is_zarch = 0, has_vx = 0;
+#endif
+  CORE_ADDR literals[4] = {
+    tpaddr,
+    tpoint,
+    collector,
+    lockaddr,
+  };
+
+  /* First, store the GPRs.  */
+  if (is_zarch)
+    append_insns (&buildaddr, sizeof s390_ft_entry_gpr_zarch,
+			      s390_ft_entry_gpr_zarch);
+  else
+    append_insns (&buildaddr, sizeof s390_ft_entry_gpr_esa,
+			      s390_ft_entry_gpr_esa);
+
+  /* Second, misc registers (ARs, PSWM, FPC).  PSWA will be stored below.  */
+  append_insns (&buildaddr, sizeof s390_ft_entry_misc, s390_ft_entry_misc);
+
+  /* Third, FRs or VRs.  */
+  if (has_vx)
+    append_insns (&buildaddr, sizeof s390_ft_entry_vr, s390_ft_entry_vr);
+  else
+    append_insns (&buildaddr, sizeof s390_ft_entry_fr, s390_ft_entry_fr);
+
+  /* Now, the main part of code - store PSWA, take lock, call collector,
+     leave lock.  First, we'll need to fetch 4 literals.  */
+  if (is_64) {
+    unsigned char buf[] = {
+      0x07, 0x07,		/* nopr %r7 */
+      0x07, 0x07,		/* nopr %r7 */
+      0x07, 0x07,		/* nopr %r7 */
+      0xa7, 0x15, 0x00, 0x12,	/* bras %r1, .Lend */
+      0, 0, 0, 0, 0, 0, 0, 0,	/* tpaddr */
+      0, 0, 0, 0, 0, 0, 0, 0,	/* tpoint */
+      0, 0, 0, 0, 0, 0, 0, 0,	/* collector */
+      0, 0, 0, 0, 0, 0, 0, 0,	/* lockaddr */
+      /* .Lend: */
+    };
+    /* Find the proper start place in buf, so that literals will be
+       aligned. */
+    int bufpos = (buildaddr + 2) & 7;
+    /* Stuff the literals into the buffer. */
+    for (i = 0; i < 4; i++) {
+      uint64_t lit = literals[i];
+      memcpy (&buf[sizeof buf - 32 + i * 8], &lit, 8);
+    }
+    append_insns (&buildaddr, sizeof buf - bufpos, buf + bufpos);
+    append_insns (&buildaddr, sizeof s390_ft_main_64, s390_ft_main_64);
+  } else {
+    unsigned char buf[] = {
+      0x07, 0x07,		/* nopr %r7 */
+      0xa7, 0x15, 0x00, 0x0a,	/* bras %r1, .Lend */
+      0, 0, 0, 0,		/* tpaddr */
+      0, 0, 0, 0,		/* tpoint */
+      0, 0, 0, 0,		/* collector */
+      0, 0, 0, 0,		/* lockaddr */
+      /* .Lend: */
+    };
+    /* Find the proper start place in buf, so that literals will be
+       aligned. */
+    int bufpos = (buildaddr + 2) & 3;
+    /* First literal will be saved as the PSWA, make sure it has the high bit
+       set.  */
+    literals[0] |= 0x80000000;
+    /* Stuff the literals into the buffer. */
+    for (i = 0; i < 4; i++) {
+      uint32_t lit = literals[i];
+      memcpy (&buf[sizeof buf - 16 + i * 4], &lit, 4);
+    }
+    append_insns (&buildaddr, sizeof buf - bufpos, buf + bufpos);
+    append_insns (&buildaddr, sizeof s390_ft_main_31, s390_ft_main_31);
+  }
+
+  /* Restore FRs or VRs.  */
+  if (has_vx)
+    append_insns (&buildaddr, sizeof s390_ft_exit_vr, s390_ft_exit_vr);
+  else
+    append_insns (&buildaddr, sizeof s390_ft_exit_fr, s390_ft_exit_fr);
+
+  /* Restore misc registers.  */
+  append_insns (&buildaddr, sizeof s390_ft_exit_misc, s390_ft_exit_misc);
+
+  /* Restore the GPRs.  */
+  if (is_zarch)
+    append_insns (&buildaddr, sizeof s390_ft_exit_gpr_zarch,
+			      s390_ft_exit_gpr_zarch);
+  else
+    append_insns (&buildaddr, sizeof s390_ft_exit_gpr_esa,
+			      s390_ft_exit_gpr_esa);
+
+  /* Now, adjust the original instruction to execute in the jump
+     pad.  */
+  *adjusted_insn_addr = buildaddr;
+  if (s390_relocate_instruction (&buildaddr, tpaddr, is_64))
+    {
+      sprintf (err, "E.Could not relocate instruction for tracepoint.");
+      return 1;
+    }
+  *adjusted_insn_addr_end = buildaddr;
+
+  /* Finally, write a jump back to the program.  */
+
+  loffset = (tpaddr + orig_size) - buildaddr;
+  loffset >>= 1;
+  offset = loffset;
+  if (is_64 && offset != loffset)
+    {
+      sprintf (err,
+	       "E.Jump back from jump pad too far from tracepoint "
+	       "(offset 0x%" PRIx64 " > int33).", loffset);
+      return 1;
+    }
+  memcpy (jbuf + 2, &offset, 4);
+  append_insns (&buildaddr, sizeof jbuf, jbuf);
+
+  /* The jump pad is now built.  Wire in a jump to our jump pad.  This
+     is always done last (by our caller actually), so that we can
+     install fast tracepoints with threads running.  This relies on
+     the agent's atomic write support.  */
+  loffset = *jump_entry - tpaddr;
+  loffset >>= 1;
+  offset = loffset;
+  if (is_64 && offset != loffset)
+    {
+      sprintf (err,
+	       "E.Jump back from jump pad too far from tracepoint "
+	       "(offset 0x%" PRIx64 " > int33).", loffset);
+      return 1;
+    }
+  memcpy (jbuf + 2, &offset, 4);
+  memcpy (jjump_pad_insn, jbuf, sizeof jbuf);
+  *jjump_pad_insn_size = sizeof jbuf;
+
+  /* Return the end address of our pad.  */
+  *jump_entry = buildaddr;
+
+  return 0;
+}
+
+/* Implementation of target ops method
+   "get_min_fast_tracepoint_insn_len".  */
+
+int
+s390_target::get_min_fast_tracepoint_insn_len ()
+{
+  /* We only support using 6-byte jumps to reach the tracepoint code.
+     If the tracepoint buffer were allocated sufficiently close (64kiB)
+     to the executable code, and the traced instruction itself was close
+     enough to the beginning, we could use 4-byte jumps, but this doesn't
+     seem to be worth the effort.  */
+  return 6;
+}
+
+/* Implementation of target ops method "get_ipa_tdesc_idx".  */
+
+int
+s390_target::get_ipa_tdesc_idx ()
+{
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+  const struct target_desc *tdesc = regcache->tdesc;
+
+#ifdef __s390x__
+  if (tdesc == tdesc_s390x_linux64)
+    return S390_TDESC_64;
+  if (tdesc == tdesc_s390x_linux64v1)
+    return S390_TDESC_64V1;
+  if (tdesc == tdesc_s390x_linux64v2)
+    return S390_TDESC_64V2;
+  if (tdesc == tdesc_s390x_te_linux64)
+    return S390_TDESC_TE;
+  if (tdesc == tdesc_s390x_vx_linux64)
+    return S390_TDESC_VX;
+  if (tdesc == tdesc_s390x_tevx_linux64)
+    return S390_TDESC_TEVX;
+  if (tdesc == tdesc_s390x_gs_linux64)
+    return S390_TDESC_GS;
+#endif
+
+  if (tdesc == tdesc_s390_linux32)
+    return S390_TDESC_32;
+  if (tdesc == tdesc_s390_linux32v1)
+    return S390_TDESC_32V1;
+  if (tdesc == tdesc_s390_linux32v2)
+    return S390_TDESC_32V2;
+  if (tdesc == tdesc_s390_linux64)
+    return S390_TDESC_64;
+  if (tdesc == tdesc_s390_linux64v1)
+    return S390_TDESC_64V1;
+  if (tdesc == tdesc_s390_linux64v2)
+    return S390_TDESC_64V2;
+  if (tdesc == tdesc_s390_te_linux64)
+    return S390_TDESC_TE;
+  if (tdesc == tdesc_s390_vx_linux64)
+    return S390_TDESC_VX;
+  if (tdesc == tdesc_s390_tevx_linux64)
+    return S390_TDESC_TEVX;
+  if (tdesc == tdesc_s390_gs_linux64)
+    return S390_TDESC_GS;
+
+  return 0;
+}
+
+/* Appends given buffer to current_insn_ptr in the target.  */
+
+static void
+add_insns (const unsigned char *start, int len)
+{
+  CORE_ADDR buildaddr = current_insn_ptr;
+
+  if (debug_threads)
+    debug_printf ("Adding %d bytes of insn at %s\n",
+		  len, paddress (buildaddr));
+
+  append_insns (&buildaddr, len, start);
+  current_insn_ptr = buildaddr;
+}
+
+/* Register usage in emit:
+
+   - %r0, %r1: temp
+   - %r2: top of stack (high word for 31-bit)
+   - %r3: low word of top of stack (for 31-bit)
+   - %r4, %r5: temp
+   - %r6, %r7, %r8: don't use
+   - %r9: saved arg1
+   - %r10: saved arg2
+   - %r11: frame pointer
+   - %r12: saved top of stack for void_call_2 (high word for 31-bit)
+   - %r13: low word of saved top of stack (for 31-bit)
+   - %r14: return address for calls
+   - %r15: stack pointer
+
+  */
+
+/* The "emit_prologue" emit_ops method for s390.  */
+
+static void
+s390_emit_prologue (void)
+{
+  static const unsigned char buf[] = {
+    0x90, 0x9f, 0xf0, 0x24,		/* stm %r9, %r15, 0x24(%r15) */
+    0x18, 0x92,				/* lr %r9, %r2 */
+    0x18, 0xa3,				/* lr %r10, %r3 */
+    0x18, 0xbf,				/* lr %r11, %r15 */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_epilogue" emit_ops method for s390.  */
+
+static void
+s390_emit_epilogue (void)
+{
+  static const unsigned char buf[] = {
+    0x90, 0x23, 0xa0, 0x00,		/* stm %r2, %r3, 0(%r10) */
+    0xa7, 0x28, 0x00, 0x00,		/* lhi %r2, 0 */
+    0x98, 0x9f, 0xb0, 0x24,		/* lm %r9, %r15, 0x24(%r11) */
+    0x07, 0xfe,				/* br %r14 */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_add" emit_ops method for s390.  */
+
+static void
+s390_emit_add (void)
+{
+  static const unsigned char buf[] = {
+    0x5e, 0x30, 0xf0, 0x04,		/* al %r3, 4(%r15) */
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x98,	/* al %r2, 0(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_sub" emit_ops method for s390.  */
+
+static void
+s390_emit_sub (void)
+{
+  static const unsigned char buf[] = {
+    0x98, 0x45, 0xf0, 0x00,	/* lm %r4, %r5, 0(%r15) */
+    0x1f, 0x53,			/* slr %r5, %r3 */
+    0xb9, 0x99, 0x00, 0x42,	/* slbr %r4, %r2 */
+    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
+    0x18, 0x35,			/* lr %r3, %r5 */
+    0x18, 0x24,			/* lr %r2, %r4 */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_mul" emit_ops method for s390.  */
+
+static void
+s390_emit_mul (void)
+{
+  emit_error = 1;
+}
+
+/* The "emit_lsh" emit_ops method for s390.  */
+
+static void
+s390_emit_lsh (void)
+{
+  static const unsigned char buf[] = {
+    0x18, 0x43,			/* lr %r4, %r3 */
+    0x98, 0x23, 0xf0, 0x00,	/* lm %r2, %r3, 0(%r15) */
+    0x8d, 0x20, 0x40, 0x00,	/* sldl %r2, 0(%r4) */
+    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_rsh_signed" emit_ops method for s390.  */
+
+static void
+s390_emit_rsh_signed (void)
+{
+  static const unsigned char buf[] = {
+    0x18, 0x43,			/* lr %r4, %r3 */
+    0x98, 0x23, 0xf0, 0x00,	/* lm %r2, %r3, 0(%r15) */
+    0x8e, 0x20, 0x40, 0x00,	/* srda %r2, 0(%r4) */
+    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_rsh_unsigned" emit_ops method for s390.  */
+
+static void
+s390_emit_rsh_unsigned (void)
+{
+  static const unsigned char buf[] = {
+    0x18, 0x43,			/* lr %r4, %r3 */
+    0x98, 0x23, 0xf0, 0x00,	/* lm %r2, %r3, 0(%r15) */
+    0x8c, 0x20, 0x40, 0x00,	/* srdl %r2, 0(%r4) */
+    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_ext" emit_ops method for s390.  */
+
+static void
+s390_emit_ext (int arg)
+{
+  unsigned char buf[] = {
+    0x8d, 0x20, 0x00, (unsigned char) (64 - arg), /* sldl %r2, <64-arg> */
+    0x8e, 0x20, 0x00, (unsigned char) (64 - arg), /* srda %r2, <64-arg> */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_log_not" emit_ops method for s390.  */
+
+static void
+s390_emit_log_not (void)
+{
+  static const unsigned char buf[] = {
+    0x16, 0x23,			/* or %r2, %r3 */
+    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
+    0xa7, 0x38, 0x00, 0x00,	/* lhi %r3, 0 */
+    0xa7, 0x74, 0x00, 0x04,	/* jne .Lskip */
+    0xa7, 0x38, 0x00, 0x01,	/* lhi %r3, 1 */
+    /* .Lskip: */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_bit_and" emit_ops method for s390.  */
+
+static void
+s390_emit_bit_and (void)
+{
+  static const unsigned char buf[] = {
+    0x54, 0x20, 0xf0, 0x00,	/* n %r2, 0(%r15) */
+    0x54, 0x30, 0xf0, 0x04,	/* n %r3, 4(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_bit_or" emit_ops method for s390.  */
+
+static void
+s390_emit_bit_or (void)
+{
+  static const unsigned char buf[] = {
+    0x56, 0x20, 0xf0, 0x00,	/* o %r2, 0(%r15) */
+    0x56, 0x30, 0xf0, 0x04,	/* o %r3, 4(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_bit_xor" emit_ops method for s390.  */
+
+static void
+s390_emit_bit_xor (void)
+{
+  static const unsigned char buf[] = {
+    0x57, 0x20, 0xf0, 0x00,	/* x %r2, 0(%r15) */
+    0x57, 0x30, 0xf0, 0x04,	/* x %r3, 4(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_bit_not" emit_ops method for s390.  */
+
+static void
+s390_emit_bit_not (void)
+{
+  static const unsigned char buf[] = {
+    0xa7, 0x48, 0xff, 0xff,	/* lhi %r4, -1 */
+    0x17, 0x24,			/* xr %r2, %r4 */
+    0x17, 0x34,			/* xr %r3, %r4 */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_equal" emit_ops method for s390.  */
+
+static void
+s390_emit_equal (void)
+{
+  s390_emit_bit_xor ();
+  s390_emit_log_not ();
+}
+
+/* The "emit_less_signed" emit_ops method for s390.  */
+
+static void
+s390_emit_less_signed (void)
+{
+  static const unsigned char buf[] = {
+    0x59, 0x20, 0xf0, 0x00,	/* c %r2, 0(%r15) */
+    0xa7, 0x24, 0x00, 0x0c,	/* jh .Lless */
+    0xa7, 0x44, 0x00, 0x06,	/* jl .Lhigh */
+    0x55, 0x30, 0xf0, 0x04,	/* cl %r3, 4(%r15) */
+    0xa7, 0x24, 0x00, 0x06,	/* jh .Lless */
+    /* .Lhigh: */
+    0xa7, 0x38, 0x00, 0x00,	/* lhi %r3, 0 */
+    0xa7, 0xf4, 0x00, 0x04,	/* j .Lend */
+    /* .Lless: */
+    0xa7, 0x38, 0x00, 0x01,	/* lhi %r3, 1 */
+    /* .Lend: */
+    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
+    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_less_unsigned" emit_ops method for s390.  */
+
+static void
+s390_emit_less_unsigned (void)
+{
+  static const unsigned char buf[] = {
+    0x55, 0x20, 0xf0, 0x00,	/* cl %r2, 0(%r15) */
+    0xa7, 0x24, 0x00, 0x0c,	/* jh .Lless */
+    0xa7, 0x44, 0x00, 0x06,	/* jl .Lhigh */
+    0x55, 0x30, 0xf0, 0x04,	/* cl %r3, 4(%r15) */
+    0xa7, 0x24, 0x00, 0x06,	/* jh .Lless */
+    /* .Lhigh: */
+    0xa7, 0x38, 0x00, 0x00,	/* lhi %r3, 0 */
+    0xa7, 0xf4, 0x00, 0x04,	/* j .Lend */
+    /* .Lless: */
+    0xa7, 0x38, 0x00, 0x01,	/* lhi %r3, 1 */
+    /* .Lend: */
+    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
+    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_ref" emit_ops method for s390.  */
+
+static void
+s390_emit_ref (int size)
+{
+  static const unsigned char buf1[] = {
+    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
+    0x43, 0x30, 0x30, 0x00,	/* ic %r3, 0(%r3) */
+  };
+  static const unsigned char buf2[] = {
+    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
+    0x48, 0x30, 0x30, 0x00,	/* lh %r3, 0(%r3) */
+  };
+  static const unsigned char buf4[] = {
+    0xa7, 0x28, 0x00, 0x00,	/* lhi %r2, 0 */
+    0x58, 0x30, 0x30, 0x00,	/* l %r3, 0(%r3) */
+  };
+  static const unsigned char buf8[] = {
+    0x98, 0x23, 0x30, 0x00,	/* lm %r2, %r3, 0(%r3) */
+  };
+  switch (size)
+    {
+    case 1:
+      add_insns (buf1, sizeof buf1);
+      break;
+    case 2:
+      add_insns (buf2, sizeof buf2);
+      break;
+    case 4:
+      add_insns (buf4, sizeof buf4);
+      break;
+    case 8:
+      add_insns (buf8, sizeof buf8);
+      break;
+    default:
+      emit_error = 1;
+    }
+}
+
+/* The "emit_if_goto" emit_ops method for s390.  */
+
+static void
+s390_emit_if_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0x16, 0x23,				/* or %r2, %r3 */
+    0x98, 0x23, 0xf0, 0x00,		/* lm %r2, %r3, 0(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+    0xc0, 0x74, 0x00, 0x00, 0x00, 0x00	/* jgne <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 12;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_goto" emit_ops method for s390 and s390x.  */
+
+static void
+s390_emit_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0xc0, 0xf4, 0x00, 0x00, 0x00, 0x00,	/* jg <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 2;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "write_goto_address" emit_ops method for s390 and s390x.  */
+
+static void
+s390_write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
+{
+  long diff = ((long) (to - (from - 2))) / 2;
+  int sdiff = diff;
+  unsigned char buf[sizeof sdiff];
+
+  /* We're only doing 4-byte sizes at the moment.  */
+  if (size != sizeof sdiff || sdiff != diff)
+    {
+      emit_error = 1;
+      return;
+    }
+
+  memcpy (buf, &sdiff, sizeof sdiff);
+  target_write_memory (from, buf, sizeof sdiff);
+}
+
+/* Preparation for emitting a literal pool of given size.  Loads the address
+   of the pool into %r1, and jumps over it.  Called should emit the pool data
+   immediately afterwards.  Used for both s390 and s390x.  */
+
+static void
+s390_emit_litpool (int size)
+{
+  static const unsigned char nop[] = {
+    0x07, 0x07,
+  };
+  unsigned char buf[] = {
+    0xa7, 0x15, 0x00,
+    (unsigned char) ((size + 4) / 2),	/* bras %r1, .Lend+size */
+    /* .Lend: */
+  };
+  if (size == 4)
+    {
+      /* buf needs to start at even halfword for litpool to be aligned */
+      if (current_insn_ptr & 2)
+	add_insns (nop, sizeof nop);
+    }
+  else
+    {
+      while ((current_insn_ptr & 6) != 4)
+	add_insns (nop, sizeof nop);
+    }
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_const" emit_ops method for s390.  */
+
+static void
+s390_emit_const (LONGEST num)
+{
+  unsigned long long n = num;
+  unsigned char buf_s[] = {
+    /* lhi %r3, <num> */
+    0xa7, 0x38,
+    (unsigned char) (num >> 8), (unsigned char) num,
+    /* xr %r2, %r2 */
+    0x17, 0x22,
+  };
+  static const unsigned char buf_l[] = {
+    0x98, 0x23, 0x10, 0x00,	/* lm %r2, %r3, 0(%r1) */
+  };
+  if (num < 0x8000 && num >= 0)
+  {
+    add_insns (buf_s, sizeof buf_s);
+  }
+  else
+  {
+    s390_emit_litpool (8);
+    add_insns ((unsigned char *) &n, sizeof n);
+    add_insns (buf_l, sizeof buf_l);
+  }
+}
+
+/* The "emit_call" emit_ops method for s390.  */
+
+static void
+s390_emit_call (CORE_ADDR fn)
+{
+  unsigned int n = fn;
+  static const unsigned char buf[] = {
+    0x58, 0x10, 0x10, 0x00,	/* l %r1, 0(%r1) */
+    0xa7, 0xfa, 0xff, 0xa0,	/* ahi %r15, -0x60 */
+    0x0d, 0xe1,			/* basr %r14, %r1 */
+    0xa7, 0xfa, 0x00, 0x60,	/* ahi %r15, 0x60 */
+  };
+  s390_emit_litpool (4);
+  add_insns ((unsigned char *) &n, sizeof n);
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_reg" emit_ops method for s390.  */
+
+static void
+s390_emit_reg (int reg)
+{
+  unsigned char bufpre[] = {
+    /* lr %r2, %r9 */
+    0x18, 0x29,
+    /* lhi %r3, <reg> */
+    0xa7, 0x38, (unsigned char) (reg >> 8), (unsigned char) reg,
+  };
+  add_insns (bufpre, sizeof bufpre);
+  s390_emit_call (get_raw_reg_func_addr ());
+}
+
+/* The "emit_pop" emit_ops method for s390.  */
+
+static void
+s390_emit_pop (void)
+{
+  static const unsigned char buf[] = {
+    0x98, 0x23, 0xf0, 0x00,	/* lm %r2, %r3, 0(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,	/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_stack_flush" emit_ops method for s390.  */
+
+static void
+s390_emit_stack_flush (void)
+{
+  static const unsigned char buf[] = {
+    0xa7, 0xfa, 0xff, 0xf8,	/* ahi %r15, -8 */
+    0x90, 0x23, 0xf0, 0x00,	/* stm %r2, %r3, 0(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_zero_ext" emit_ops method for s390.  */
+
+static void
+s390_emit_zero_ext (int arg)
+{
+  unsigned char buf[] = {
+    0x8d, 0x20, 0x00, (unsigned char) (64 - arg), /* sldl %r2, <64-arg> */
+    0x8c, 0x20, 0x00, (unsigned char) (64 - arg), /* srdl %r2, <64-arg> */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_swap" emit_ops method for s390.  */
+
+static void
+s390_emit_swap (void)
+{
+  static const unsigned char buf[] = {
+    0x98, 0x45, 0xf0, 0x00,	/* lm %r4, %r5, 0(%r15) */
+    0x90, 0x23, 0xf0, 0x00,	/* stm %r2, %r3, 0(%r15) */
+    0x18, 0x24,			/* lr %r2, %r4 */
+    0x18, 0x35,			/* lr %r3, %r5 */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_stack_adjust" emit_ops method for s390.  */
+
+static void
+s390_emit_stack_adjust (int n)
+{
+  unsigned char buf[] = {
+    /* ahi %r15, 8*n */
+    0xa7, 0xfa,
+    (unsigned char ) (n * 8 >> 8), (unsigned char) (n * 8),
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* Sets %r2 to a 32-bit constant.  */
+
+static void
+s390_emit_set_r2 (int arg1)
+{
+  unsigned char buf_s[] = {
+    /* lhi %r2, <arg1> */
+    0xa7, 0x28, (unsigned char) (arg1 >> 8), (unsigned char) arg1,
+  };
+  static const unsigned char buf_l[] = {
+    0x58, 0x20, 0x10, 0x00,	/* l %r2, 0(%r1) */
+  };
+  if (arg1 < 0x8000 && arg1 >= -0x8000)
+  {
+    add_insns (buf_s, sizeof buf_s);
+  }
+  else
+  {
+    s390_emit_litpool (4);
+    add_insns ((unsigned char *) &arg1, sizeof arg1);
+    add_insns (buf_l, sizeof buf_l);
+  }
+}
+
+/* The "emit_int_call_1" emit_ops method for s390.  */
+
+static void
+s390_emit_int_call_1 (CORE_ADDR fn, int arg1)
+{
+  /* FN's prototype is `LONGEST(*fn)(int)'.  */
+  s390_emit_set_r2 (arg1);
+  s390_emit_call (fn);
+}
+
+/* The "emit_void_call_2" emit_ops method for s390.  */
+
+static void
+s390_emit_void_call_2 (CORE_ADDR fn, int arg1)
+{
+  /* FN's prototype is `void(*fn)(int,LONGEST)'.  */
+  static const unsigned char buf[] = {
+    0x18, 0xc2,			/* lr %r12, %r2 */
+    0x18, 0xd3,			/* lr %r13, %r3 */
+    0x18, 0x43,			/* lr %r4, %r3 */
+    0x18, 0x32,			/* lr %r3, %r2 */
+  };
+  static const unsigned char buf2[] = {
+    0x18, 0x2c,			/* lr %r2, %r12 */
+    0x18, 0x3d,			/* lr %r3, %r13 */
+  };
+  add_insns (buf, sizeof buf);
+  s390_emit_set_r2 (arg1);
+  s390_emit_call (fn);
+  add_insns (buf2, sizeof buf2);
+}
+
+/* The "emit_eq_goto" emit_ops method for s390.  */
+
+static void
+s390_emit_eq_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0x57, 0x20, 0xf0, 0x00,		/* x %r2, 0(%r15) */
+    0x57, 0x30, 0xf0, 0x04,		/* x %r3, 4(%r15) */
+    0x16, 0x23,				/* or %r2, %r3 */
+    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0x84, 0x00, 0x00, 0x00, 0x00,	/* jge <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 20;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_ne_goto" emit_ops method for s390.  */
+
+static void
+s390_emit_ne_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0x57, 0x20, 0xf0, 0x00,		/* x %r2, 0(%r15) */
+    0x57, 0x30, 0xf0, 0x04,		/* x %r3, 4(%r15) */
+    0x16, 0x23,				/* or %r2, %r3 */
+    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0x74, 0x00, 0x00, 0x00, 0x00,	/* jgne <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 20;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_lt_goto" emit_ops method for s390.  */
+
+static void
+s390_emit_lt_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0x59, 0x20, 0xf0, 0x00,		/* c %r2, 0(%r15) */
+    0xa7, 0x24, 0x00, 0x0e,		/* jh .Ltrue */
+    0xa7, 0x44, 0x00, 0x06,		/* jl .Lfalse */
+    0x55, 0x30, 0xf0, 0x04,		/* cl %r3, 4(%r15) */
+    0xa7, 0x24, 0x00, 0x08,		/* jh .Ltrue */
+    /* .Lfalse: */
+    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xa7, 0xf4, 0x00, 0x09,		/* j .Lend */
+    /* .Ltrue: */
+    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0xf4, 0x00, 0x00, 0x00, 0x00,	/* jg <fillme> */
+    /* .Lend: */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 42;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_le_goto" emit_ops method for s390.  */
+
+static void
+s390_emit_le_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0x59, 0x20, 0xf0, 0x00,		/* c %r2, 0(%r15) */
+    0xa7, 0x24, 0x00, 0x0e,		/* jh .Ltrue */
+    0xa7, 0x44, 0x00, 0x06,		/* jl .Lfalse */
+    0x55, 0x30, 0xf0, 0x04,		/* cl %r3, 4(%r15) */
+    0xa7, 0xa4, 0x00, 0x08,		/* jhe .Ltrue */
+    /* .Lfalse: */
+    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xa7, 0xf4, 0x00, 0x09,		/* j .Lend */
+    /* .Ltrue: */
+    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0xf4, 0x00, 0x00, 0x00, 0x00,	/* jg <fillme> */
+    /* .Lend: */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 42;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_gt_goto" emit_ops method for s390.  */
+
+static void
+s390_emit_gt_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0x59, 0x20, 0xf0, 0x00,		/* c %r2, 0(%r15) */
+    0xa7, 0x44, 0x00, 0x0e,		/* jl .Ltrue */
+    0xa7, 0x24, 0x00, 0x06,		/* jh .Lfalse */
+    0x55, 0x30, 0xf0, 0x04,		/* cl %r3, 4(%r15) */
+    0xa7, 0x44, 0x00, 0x08,		/* jl .Ltrue */
+    /* .Lfalse: */
+    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xa7, 0xf4, 0x00, 0x09,		/* j .Lend */
+    /* .Ltrue: */
+    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0xf4, 0x00, 0x00, 0x00, 0x00,	/* jg <fillme> */
+    /* .Lend: */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 42;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_ge_goto" emit_ops method for s390.  */
+
+static void
+s390_emit_ge_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0x59, 0x20, 0xf0, 0x00,		/* c %r2, 0(%r15) */
+    0xa7, 0x44, 0x00, 0x0e,		/* jl .Ltrue */
+    0xa7, 0x24, 0x00, 0x06,		/* jh .Lfalse */
+    0x55, 0x30, 0xf0, 0x04,		/* cl %r3, 4(%r15) */
+    0xa7, 0xc4, 0x00, 0x08,		/* jle .Ltrue */
+    /* .Lfalse: */
+    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xa7, 0xf4, 0x00, 0x09,		/* j .Lend */
+    /* .Ltrue: */
+    0x98, 0x23, 0xf0, 0x08,		/* lm %r2, %r3, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0xf4, 0x00, 0x00, 0x00, 0x00,	/* jg <fillme> */
+    /* .Lend: */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 42;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_ops" structure for s390.  Named _impl to avoid name
+   collision with s390_emit_ops function.  */
+
+static struct emit_ops s390_emit_ops_impl =
+  {
+    s390_emit_prologue,
+    s390_emit_epilogue,
+    s390_emit_add,
+    s390_emit_sub,
+    s390_emit_mul,
+    s390_emit_lsh,
+    s390_emit_rsh_signed,
+    s390_emit_rsh_unsigned,
+    s390_emit_ext,
+    s390_emit_log_not,
+    s390_emit_bit_and,
+    s390_emit_bit_or,
+    s390_emit_bit_xor,
+    s390_emit_bit_not,
+    s390_emit_equal,
+    s390_emit_less_signed,
+    s390_emit_less_unsigned,
+    s390_emit_ref,
+    s390_emit_if_goto,
+    s390_emit_goto,
+    s390_write_goto_address,
+    s390_emit_const,
+    s390_emit_call,
+    s390_emit_reg,
+    s390_emit_pop,
+    s390_emit_stack_flush,
+    s390_emit_zero_ext,
+    s390_emit_swap,
+    s390_emit_stack_adjust,
+    s390_emit_int_call_1,
+    s390_emit_void_call_2,
+    s390_emit_eq_goto,
+    s390_emit_ne_goto,
+    s390_emit_lt_goto,
+    s390_emit_le_goto,
+    s390_emit_gt_goto,
+    s390_emit_ge_goto
+  };
+
+#ifdef __s390x__
+
+/* The "emit_prologue" emit_ops method for s390x.  */
+
+static void
+s390x_emit_prologue (void)
+{
+  static const unsigned char buf[] = {
+    0xeb, 0x9f, 0xf0, 0x48, 0x00, 0x24,	/* stmg %r9, %r15, 0x48(%r15) */
+    0xb9, 0x04, 0x00, 0x92,		/* lgr %r9, %r2 */
+    0xb9, 0x04, 0x00, 0xa3,		/* lgr %r10, %r3 */
+    0xb9, 0x04, 0x00, 0xbf,		/* lgr %r11, %r15 */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_epilogue" emit_ops method for s390x.  */
+
+static void
+s390x_emit_epilogue (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xa0, 0x00, 0x00, 0x24,	/* stg %r2, 0(%r10) */
+    0xa7, 0x29, 0x00, 0x00,		/* lghi %r2, 0 */
+    0xeb, 0x9f, 0xf0, 0x48, 0x00, 0x04,	/* lmg %r9, %r15, 0x48(%r15) */
+    0x07, 0xfe,				/* br %r14 */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_add" emit_ops method for s390x.  */
+
+static void
+s390x_emit_add (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x0a,	/* alg %r2, 0(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_sub" emit_ops method for s390x.  */
+
+static void
+s390x_emit_sub (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x30, 0xf0, 0x00, 0x00, 0x04,	/* lg %r3, 0(%r15) */
+    0xb9, 0x0b, 0x00, 0x32,		/* slgr %r3, %r2 */
+    0xb9, 0x04, 0x00, 0x23,		/* lgr %r2, %r3 */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_mul" emit_ops method for s390x.  */
+
+static void
+s390x_emit_mul (void)
+{
+  emit_error = 1;
+}
+
+/* The "emit_lsh" emit_ops method for s390x.  */
+
+static void
+s390x_emit_lsh (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x30, 0xf0, 0x00, 0x00, 0x04,	/* lg %r3, 0(%r15) */
+    0xeb, 0x23, 0x20, 0x00, 0x00, 0x0d,	/* sllg %r2, %r3, 0(%r2) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_rsh_signed" emit_ops method for s390x.  */
+
+static void
+s390x_emit_rsh_signed (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x30, 0xf0, 0x00, 0x00, 0x04,	/* lg %r3, 0(%r15) */
+    0xeb, 0x23, 0x20, 0x00, 0x00, 0x0a,	/* srag %r2, %r3, 0(%r2) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_rsh_unsigned" emit_ops method for s390x.  */
+
+static void
+s390x_emit_rsh_unsigned (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x30, 0xf0, 0x00, 0x00, 0x04,	/* lg %r3, 0(%r15) */
+    0xeb, 0x23, 0x20, 0x00, 0x00, 0x0c,	/* srlg %r2, %r3, 0(%r2) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_ext" emit_ops method for s390x.  */
+
+static void
+s390x_emit_ext (int arg)
+{
+  unsigned char buf[] = {
+    /* sllg %r2, %r2, <64-arg> */
+    0xeb, 0x22, 0x00, (unsigned char) (64 - arg), 0x00, 0x0d,
+    /* srag %r2, %r2, <64-arg> */
+    0xeb, 0x22, 0x00, (unsigned char) (64 - arg), 0x00, 0x0a,
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_log_not" emit_ops method for s390x.  */
+
+static void
+s390x_emit_log_not (void)
+{
+  static const unsigned char buf[] = {
+    0xb9, 0x00, 0x00, 0x22,		/* lpgr %r2, %r2 */
+    0xa7, 0x2b, 0xff, 0xff,		/* aghi %r2, -1 */
+    0xeb, 0x22, 0x00, 0x3f, 0x00, 0x0c,	/* srlg %r2, %r2, 63 */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_bit_and" emit_ops method for s390x.  */
+
+static void
+s390x_emit_bit_and (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x80,	/* ng %r2, 0(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_bit_or" emit_ops method for s390x.  */
+
+static void
+s390x_emit_bit_or (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x81,	/* og %r2, 0(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_bit_xor" emit_ops method for s390x.  */
+
+static void
+s390x_emit_bit_xor (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x82,	/* xg %r2, 0(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_bit_not" emit_ops method for s390x.  */
+
+static void
+s390x_emit_bit_not (void)
+{
+  static const unsigned char buf[] = {
+    0xa7, 0x39, 0xff, 0xff,	/* lghi %r3, -1 */
+    0xb9, 0x82, 0x00, 0x23,	/* xgr %r2, %r3 */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_equal" emit_ops method for s390x.  */
+
+static void
+s390x_emit_equal (void)
+{
+  s390x_emit_bit_xor ();
+  s390x_emit_log_not ();
+}
+
+/* The "emit_less_signed" emit_ops method for s390x.  */
+
+static void
+s390x_emit_less_signed (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
+    0xa7, 0x29, 0x00, 0x01,		/* lghi %r2, 1 */
+    0xa7, 0x24, 0x00, 0x04,		/* jh .Lend */
+    0xa7, 0x29, 0x00, 0x00,		/* lghi %r2, 0 */
+    /* .Lend: */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_less_unsigned" emit_ops method for s390x.  */
+
+static void
+s390x_emit_less_unsigned (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x21,	/* clg %r2, 0(%r15) */
+    0xa7, 0x29, 0x00, 0x01,		/* lghi %r2, 1 */
+    0xa7, 0x24, 0x00, 0x04,		/* jh .Lend */
+    0xa7, 0x29, 0x00, 0x00,		/* lghi %r2, 0 */
+    /* .Lend: */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_ref" emit_ops method for s390x.  */
+
+static void
+s390x_emit_ref (int size)
+{
+  static const unsigned char buf1[] = {
+    0xe3, 0x20, 0x20, 0x00, 0x00, 0x90,	/* llgc %r2, 0(%r2) */
+  };
+  static const unsigned char buf2[] = {
+    0xe3, 0x20, 0x20, 0x00, 0x00, 0x91	/* llgh %r2, 0(%r2) */
+  };
+  static const unsigned char buf4[] = {
+    0xe3, 0x20, 0x20, 0x00, 0x00, 0x16,	/* llgf %r2, 0(%r2) */
+  };
+  static const unsigned char buf8[] = {
+    0xe3, 0x20, 0x20, 0x00, 0x00, 0x04,	/* lg %r2, 0(%r2) */
+  };
+  switch (size)
+    {
+    case 1:
+      add_insns (buf1, sizeof buf1);
+      break;
+    case 2:
+      add_insns (buf2, sizeof buf2);
+      break;
+    case 4:
+      add_insns (buf4, sizeof buf4);
+      break;
+    case 8:
+      add_insns (buf8, sizeof buf8);
+      break;
+    default:
+      emit_error = 1;
+    }
+}
+
+/* The "emit_if_goto" emit_ops method for s390x.  */
+
+static void
+s390x_emit_if_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0xb9, 0x02, 0x00, 0x22,		/* ltgr %r2, %r2 */
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x04,	/* lg %r2, 0(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+    0xc0, 0x74, 0x00, 0x00, 0x00, 0x00,	/* jgne <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 16;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_const" emit_ops method for s390x.  */
+
+static void
+s390x_emit_const (LONGEST num)
+{
+  unsigned long long n = num;
+  unsigned char buf_s[] = {
+    /* lghi %r2, <num> */
+    0xa7, 0x29, (unsigned char) (num >> 8), (unsigned char) num,
+  };
+  static const unsigned char buf_l[] = {
+    0xe3, 0x20, 0x10, 0x00, 0x00, 0x04,	/* lg %r2, 0(%r1) */
+  };
+  if (num < 0x8000 && num >= -0x8000)
+  {
+    add_insns (buf_s, sizeof buf_s);
+  }
+  else
+  {
+    s390_emit_litpool (8);
+    add_insns ((unsigned char *) &n, sizeof n);
+    add_insns (buf_l, sizeof buf_l);
+  }
+}
+
+/* The "emit_call" emit_ops method for s390x.  */
+
+static void
+s390x_emit_call (CORE_ADDR fn)
+{
+  unsigned long n = fn;
+  static const unsigned char buf[] = {
+    0xe3, 0x10, 0x10, 0x00, 0x00, 0x04,	/* lg %r1, 0(%r1) */
+    0xa7, 0xfb, 0xff, 0x60,		/* aghi %r15, -0xa0 */
+    0x0d, 0xe1,				/* basr %r14, %r1 */
+    0xa7, 0xfb, 0x00, 0xa0,		/* aghi %r15, 0xa0 */
+  };
+  s390_emit_litpool (8);
+  add_insns ((unsigned char *) &n, sizeof n);
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_reg" emit_ops method for s390x.  */
+
+static void
+s390x_emit_reg (int reg)
+{
+  unsigned char buf[] = {
+    /* lgr %r2, %r9 */
+    0xb9, 0x04, 0x00, 0x29,
+    /* lghi %r3, <reg> */
+    0xa7, 0x39, (unsigned char) (reg >> 8), (unsigned char) reg,
+  };
+  add_insns (buf, sizeof buf);
+  s390x_emit_call (get_raw_reg_func_addr ());
+}
+
+/* The "emit_pop" emit_ops method for s390x.  */
+
+static void
+s390x_emit_pop (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x04,	/* lg %r2, 0(%r15) */
+    0x41, 0xf0, 0xf0, 0x08,		/* la %r15, 8(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_stack_flush" emit_ops method for s390x.  */
+
+static void
+s390x_emit_stack_flush (void)
+{
+  static const unsigned char buf[] = {
+    0xa7, 0xfb, 0xff, 0xf8,		/* aghi %r15, -8 */
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x24,	/* stg %r2, 0(%r15) */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_zero_ext" emit_ops method for s390x.  */
+
+static void
+s390x_emit_zero_ext (int arg)
+{
+  unsigned char buf[] = {
+    /* sllg %r2, %r2, <64-arg> */
+    0xeb, 0x22, 0x00, (unsigned char) (64 - arg), 0x00, 0x0d,
+    /* srlg %r2, %r2, <64-arg> */
+    0xeb, 0x22, 0x00, (unsigned char) (64 - arg), 0x00, 0x0c,
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_swap" emit_ops method for s390x.  */
+
+static void
+s390x_emit_swap (void)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x30, 0xf0, 0x00, 0x00, 0x04,	/* lg %r3, 0(%r15) */
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x24,	/* stg %r2, 0(%r15) */
+    0xb9, 0x04, 0x00, 0x23,		/* lgr %r2, %r3 */
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_stack_adjust" emit_ops method for s390x.  */
+
+static void
+s390x_emit_stack_adjust (int n)
+{
+  unsigned char buf[] = {
+    /* aghi %r15, 8*n */
+    0xa7, 0xfb,
+    (unsigned char) (n * 8 >> 8), (unsigned char) (n * 8),
+  };
+  add_insns (buf, sizeof buf);
+}
+
+/* The "emit_int_call_1" emit_ops method for s390x.  */
+
+static void
+s390x_emit_int_call_1 (CORE_ADDR fn, int arg1)
+{
+  /* FN's prototype is `LONGEST(*fn)(int)'.  */
+  s390x_emit_const (arg1);
+  s390x_emit_call (fn);
+}
+
+/* The "emit_void_call_2" emit_ops method for s390x.  */
+
+static void
+s390x_emit_void_call_2 (CORE_ADDR fn, int arg1)
+{
+  /* FN's prototype is `void(*fn)(int,LONGEST)'.  */
+  static const unsigned char buf[] = {
+    0xb9, 0x04, 0x00, 0x32,		/* lgr %r3, %r2 */
+    0xb9, 0x04, 0x00, 0xc2,		/* lgr %r12, %r2 */
+  };
+  static const unsigned char buf2[] = {
+    0xb9, 0x04, 0x00, 0x2c,		/* lgr %r2, %r12 */
+  };
+  add_insns (buf, sizeof buf);
+  s390x_emit_const (arg1);
+  s390x_emit_call (fn);
+  add_insns (buf2, sizeof buf2);
+}
+
+/* The "emit_eq_goto" emit_ops method for s390x.  */
+
+static void
+s390x_emit_eq_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
+    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0x84, 0x00, 0x00, 0x00, 0x00,	/* jge <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 18;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_ne_goto" emit_ops method for s390x.  */
+
+static void
+s390x_emit_ne_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
+    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0x74, 0x00, 0x00, 0x00, 0x00,	/* jgne <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 18;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_lt_goto" emit_ops method for s390x.  */
+
+static void
+s390x_emit_lt_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
+    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0x24, 0x00, 0x00, 0x00, 0x00,	/* jgh <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 18;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_le_goto" emit_ops method for s390x.  */
+
+static void
+s390x_emit_le_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
+    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0xa4, 0x00, 0x00, 0x00, 0x00,	/* jghe <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 18;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_gt_goto" emit_ops method for s390x.  */
+
+static void
+s390x_emit_gt_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
+    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0x44, 0x00, 0x00, 0x00, 0x00,	/* jgl <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 18;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_ge_goto" emit_ops method for s390x.  */
+
+static void
+s390x_emit_ge_goto (int *offset_p, int *size_p)
+{
+  static const unsigned char buf[] = {
+    0xe3, 0x20, 0xf0, 0x00, 0x00, 0x20,	/* cg %r2, 0(%r15) */
+    0xe3, 0x20, 0xf0, 0x08, 0x00, 0x04, /* lg %r2, 8(%r15) */
+    0x41, 0xf0, 0xf0, 0x10,		/* la %r15, 16(%r15) */
+    0xc0, 0xc4, 0x00, 0x00, 0x00, 0x00,	/* jgle <fillme> */
+  };
+  add_insns (buf, sizeof buf);
+  if (offset_p)
+    *offset_p = 18;
+  if (size_p)
+    *size_p = 4;
+}
+
+/* The "emit_ops" structure for s390x.  */
+
+static struct emit_ops s390x_emit_ops =
+  {
+    s390x_emit_prologue,
+    s390x_emit_epilogue,
+    s390x_emit_add,
+    s390x_emit_sub,
+    s390x_emit_mul,
+    s390x_emit_lsh,
+    s390x_emit_rsh_signed,
+    s390x_emit_rsh_unsigned,
+    s390x_emit_ext,
+    s390x_emit_log_not,
+    s390x_emit_bit_and,
+    s390x_emit_bit_or,
+    s390x_emit_bit_xor,
+    s390x_emit_bit_not,
+    s390x_emit_equal,
+    s390x_emit_less_signed,
+    s390x_emit_less_unsigned,
+    s390x_emit_ref,
+    s390x_emit_if_goto,
+    s390_emit_goto,
+    s390_write_goto_address,
+    s390x_emit_const,
+    s390x_emit_call,
+    s390x_emit_reg,
+    s390x_emit_pop,
+    s390x_emit_stack_flush,
+    s390x_emit_zero_ext,
+    s390x_emit_swap,
+    s390x_emit_stack_adjust,
+    s390x_emit_int_call_1,
+    s390x_emit_void_call_2,
+    s390x_emit_eq_goto,
+    s390x_emit_ne_goto,
+    s390x_emit_lt_goto,
+    s390x_emit_le_goto,
+    s390x_emit_gt_goto,
+    s390x_emit_ge_goto
+  };
+#endif
+
+/* The "emit_ops" target ops method.  */
+
+emit_ops *
+s390_target::emit_ops ()
+{
+#ifdef __s390x__
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+
+  if (register_size (regcache->tdesc, 0) == 8)
+    return &s390x_emit_ops;
+  else
+#endif
+    return &s390_emit_ops_impl;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_s390_target;
+
+void
+initialize_low_arch (void)
+{
+  /* Initialize the Linux target descriptions.  */
+
+  init_registers_s390_linux32 ();
+  init_registers_s390_linux32v1 ();
+  init_registers_s390_linux32v2 ();
+  init_registers_s390_linux64 ();
+  init_registers_s390_linux64v1 ();
+  init_registers_s390_linux64v2 ();
+  init_registers_s390_te_linux64 ();
+  init_registers_s390_vx_linux64 ();
+  init_registers_s390_tevx_linux64 ();
+  init_registers_s390_gs_linux64 ();
+#ifdef __s390x__
+  init_registers_s390x_linux64 ();
+  init_registers_s390x_linux64v1 ();
+  init_registers_s390x_linux64v2 ();
+  init_registers_s390x_te_linux64 ();
+  init_registers_s390x_vx_linux64 ();
+  init_registers_s390x_tevx_linux64 ();
+  init_registers_s390x_gs_linux64 ();
+#endif
+
+  initialize_regsets_info (&s390_regsets_info);
+  initialize_regsets_info (&s390_regsets_info_3264);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-s390-tdesc.h ./gdbserver/linux-s390-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-s390-tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-s390-tdesc.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,116 @@
+/* Low level support for s390, shared between gdbserver and IPA.
+
+   Copyright (C) 2016-2021 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 GDBSERVER_LINUX_S390_TDESC_H
+#define GDBSERVER_LINUX_S390_TDESC_H
+
+/* Note: since IPA obviously knows what ABI it's running on (s390 vs s390x),
+   it's sufficient to pass only the register set here.  This, together with
+   the ABI known at IPA compile time, maps to a tdesc.  */
+
+enum s390_linux_tdesc {
+  S390_TDESC_32,
+  S390_TDESC_32V1,
+  S390_TDESC_32V2,
+  S390_TDESC_64,
+  S390_TDESC_64V1,
+  S390_TDESC_64V2,
+  S390_TDESC_TE,
+  S390_TDESC_VX,
+  S390_TDESC_TEVX,
+  S390_TDESC_GS,
+};
+
+#ifdef __s390x__
+
+/* Defined in auto-generated file s390x-linux64.c.  */
+void init_registers_s390x_linux64 (void);
+extern const struct target_desc *tdesc_s390x_linux64;
+
+/* Defined in auto-generated file s390x-linux64v1.c.  */
+void init_registers_s390x_linux64v1 (void);
+extern const struct target_desc *tdesc_s390x_linux64v1;
+
+/* Defined in auto-generated file s390x-linux64v2.c.  */
+void init_registers_s390x_linux64v2 (void);
+extern const struct target_desc *tdesc_s390x_linux64v2;
+
+/* Defined in auto-generated file s390x-te-linux64.c.  */
+void init_registers_s390x_te_linux64 (void);
+extern const struct target_desc *tdesc_s390x_te_linux64;
+
+/* Defined in auto-generated file s390x-vx-linux64.c.  */
+void init_registers_s390x_vx_linux64 (void);
+extern const struct target_desc *tdesc_s390x_vx_linux64;
+
+/* Defined in auto-generated file s390x-tevx-linux64.c.  */
+void init_registers_s390x_tevx_linux64 (void);
+extern const struct target_desc *tdesc_s390x_tevx_linux64;
+
+/* Defined in auto-generated file s390x-gs-linux64.c.  */
+void init_registers_s390x_gs_linux64 (void);
+extern const struct target_desc *tdesc_s390x_gs_linux64;
+
+#endif
+
+#if !defined __s390x__ || !defined IN_PROCESS_AGENT
+
+/* Defined in auto-generated file s390-linux32.c.  */
+void init_registers_s390_linux32 (void);
+extern const struct target_desc *tdesc_s390_linux32;
+
+/* Defined in auto-generated file s390-linux32v1.c.  */
+void init_registers_s390_linux32v1 (void);
+extern const struct target_desc *tdesc_s390_linux32v1;
+
+/* Defined in auto-generated file s390-linux32v2.c.  */
+void init_registers_s390_linux32v2 (void);
+extern const struct target_desc *tdesc_s390_linux32v2;
+
+/* Defined in auto-generated file s390-linux64.c.  */
+void init_registers_s390_linux64 (void);
+extern const struct target_desc *tdesc_s390_linux64;
+
+/* Defined in auto-generated file s390-linux64v1.c.  */
+void init_registers_s390_linux64v1 (void);
+extern const struct target_desc *tdesc_s390_linux64v1;
+
+/* Defined in auto-generated file s390-linux64v2.c.  */
+void init_registers_s390_linux64v2 (void);
+extern const struct target_desc *tdesc_s390_linux64v2;
+
+/* Defined in auto-generated file s390-te-linux64.c.  */
+void init_registers_s390_te_linux64 (void);
+extern const struct target_desc *tdesc_s390_te_linux64;
+
+/* Defined in auto-generated file s390-vx-linux64.c.  */
+void init_registers_s390_vx_linux64 (void);
+extern const struct target_desc *tdesc_s390_vx_linux64;
+
+/* Defined in auto-generated file s390-tevx-linux64.c.  */
+void init_registers_s390_tevx_linux64 (void);
+extern const struct target_desc *tdesc_s390_tevx_linux64;
+
+/* Defined in auto-generated file s390-gs-linux64.c.  */
+void init_registers_s390_gs_linux64 (void);
+extern const struct target_desc *tdesc_s390_gs_linux64;
+
+#endif
+
+#endif /* GDBSERVER_LINUX_S390_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-sh-low.cc ./gdbserver/linux-sh-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-sh-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-sh-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,196 @@
+/* GNU/Linux/SH specific low level interface, for the remote server for GDB.
+   Copyright (C) 1995-2021 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 "server.h"
+#include "linux-low.h"
+
+/* Linux target op definitions for the SH architecture.  */
+
+class sh_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+};
+
+/* The singleton target ops object.  */
+
+static sh_target the_sh_target;
+
+bool
+sh_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+sh_target::low_get_pc (regcache *regcache)
+{
+  return linux_get_pc_32bit (regcache);
+}
+
+void
+sh_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  linux_set_pc_32bit (regcache, pc);
+}
+
+/* Defined in auto-generated file reg-sh.c.  */
+void init_registers_sh (void);
+extern const struct target_desc *tdesc_sh;
+
+#ifdef HAVE_SYS_REG_H
+#include <sys/reg.h>
+#endif
+
+#include <asm/ptrace.h>
+
+#define sh_num_regs 41
+
+/* Currently, don't check/send MQ.  */
+static int sh_regmap[] = {
+ 0,	4,	8,	12,	16,	20,	24,	28,
+ 32,	36,	40,	44,	48,	52,	56,	60,
+
+ REG_PC*4,   REG_PR*4,   REG_GBR*4,  -1,
+ REG_MACH*4, REG_MACL*4, REG_SR*4,
+ REG_FPUL*4, REG_FPSCR*4,
+
+ REG_FPREG0*4+0,   REG_FPREG0*4+4,   REG_FPREG0*4+8,   REG_FPREG0*4+12,
+ REG_FPREG0*4+16,  REG_FPREG0*4+20,  REG_FPREG0*4+24,  REG_FPREG0*4+28,
+ REG_FPREG0*4+32,  REG_FPREG0*4+36,  REG_FPREG0*4+40,  REG_FPREG0*4+44,
+ REG_FPREG0*4+48,  REG_FPREG0*4+52,  REG_FPREG0*4+56,  REG_FPREG0*4+60,
+};
+
+bool
+sh_target::low_cannot_store_register (int regno)
+{
+  return false;
+}
+
+bool
+sh_target::low_cannot_fetch_register (int regno)
+{
+  return false;
+}
+
+/* Correct in either endianness, obviously.  */
+static const unsigned short sh_breakpoint = 0xc3c3;
+#define sh_breakpoint_len 2
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+sh_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = sh_breakpoint_len;
+  return (const gdb_byte *) &sh_breakpoint;
+}
+
+bool
+sh_target::low_breakpoint_at (CORE_ADDR where)
+{
+  unsigned short insn;
+
+  read_memory (where, (unsigned char *) &insn, 2);
+  if (insn == sh_breakpoint)
+    return true;
+
+  /* If necessary, recognize more trap instructions here.  GDB only uses the
+     one.  */
+  return false;
+}
+
+/* Provide only a fill function for the general register set.  ps_lgetregs
+   will use this for NPTL support.  */
+
+static void sh_fill_gregset (struct regcache *regcache, void *buf)
+{
+  int i;
+
+  for (i = 0; i < 23; i++)
+    if (sh_regmap[i] != -1)
+      collect_register (regcache, i, (char *) buf + sh_regmap[i]);
+}
+
+static struct regset_info sh_regsets[] = {
+  { 0, 0, 0, 0, GENERAL_REGS, sh_fill_gregset, NULL },
+  NULL_REGSET
+};
+
+static struct regsets_info sh_regsets_info =
+  {
+    sh_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct usrregs_info sh_usrregs_info =
+  {
+    sh_num_regs,
+    sh_regmap,
+  };
+
+static struct regs_info myregs_info =
+  {
+    NULL, /* regset_bitmap */
+    &sh_usrregs_info,
+    &sh_regsets_info
+  };
+
+const regs_info *
+sh_target::get_regs_info ()
+{
+  return &myregs_info;
+}
+
+void
+sh_target::low_arch_setup ()
+{
+  current_process ()->tdesc = tdesc_sh;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_sh_target;
+
+void
+initialize_low_arch (void)
+{
+  init_registers_sh ();
+
+  initialize_regsets_info (&sh_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-sparc-low.cc ./gdbserver/linux-sparc-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-sparc-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-sparc-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,354 @@
+/* Low level interface to ptrace, for the remote server for GDB.
+   Copyright (C) 1995-2021 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 "server.h"
+#include "linux-low.h"
+
+#include "nat/gdb_ptrace.h"
+
+#include "gdb_proc_service.h"
+
+/* The stack pointer is offset from the stack frame by a BIAS of 2047
+   (0x7ff) for 64-bit code.  BIAS is likely to be defined on SPARC
+   hosts, so undefine it first.  */
+#undef BIAS
+#define BIAS 2047
+
+#ifdef HAVE_SYS_REG_H
+#include <sys/reg.h>
+#endif
+
+#define INSN_SIZE 4
+
+#define SPARC_R_REGS_NUM 32
+#define SPARC_F_REGS_NUM 48
+#define SPARC_CONTROL_REGS_NUM 6
+
+#define sparc_num_regs \
+  (SPARC_R_REGS_NUM + SPARC_F_REGS_NUM + SPARC_CONTROL_REGS_NUM)
+
+/* Linux target op definitions for the SPARC architecture.  */
+
+class sparc_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  /* No low_set_pc is needed.  */
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+};
+
+/* The singleton target ops object.  */
+
+static sparc_target the_sparc_target;
+
+bool
+sparc_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+sparc_target::low_get_pc (regcache *regcache)
+{
+  return linux_get_pc_64bit (regcache);
+}
+
+/* Each offset is multiplied by 8, because of the register size.
+   These offsets apply to the buffer sent/filled by ptrace.
+   Additionally, the array elements order corresponds to the .dat file, and the
+   gdb's registers enumeration order.  */
+
+static int sparc_regmap[] = {
+  /* These offsets correspond to GET/SETREGSET.  */
+	-1,  0*8,  1*8,  2*8,  3*8,  4*8,  5*8,  6*8,	 /* g0 .. g7 */
+	7*8,  8*8,  9*8, 10*8, 11*8, 12*8, 13*8, 14*8,	 /* o0 .. o5, sp, o7 */
+	-1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,	 /* l0 .. l7 */
+	-1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,	 /* i0 .. i5, fp, i7 */
+
+  /* Floating point registers offsets correspond to GET/SETFPREGSET.  */
+    0*4,  1*4,  2*4,  3*4,  4*4,  5*4,  6*4,  7*4,	   /*  f0 ..  f7 */
+    8*4,  9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4,	   /*  f8 .. f15 */
+   16*4, 17*4, 18*4, 19*4, 20*4, 21*4, 22*4, 23*4,	   /* f16 .. f23 */
+   24*4, 25*4, 26*4, 27*4, 28*4, 29*4, 30*4, 31*4,	   /* f24 .. f31 */
+
+  /* F32 offset starts next to f31: 31*4+4 = 16 * 8.  */
+   16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8,	   /* f32 .. f46 */
+   24*8, 25*8, 26*8, 27*8, 28*8, 29*8, 30*8, 31*8,	   /* f48 .. f62 */
+
+   17 *8, /*    pc */
+   18 *8, /*   npc */
+   16 *8, /* state */
+  /* FSR offset also corresponds to GET/SETFPREGSET, ans is placed
+     next to f62.  */
+   32 *8, /*   fsr */
+      -1, /*  fprs */
+  /* Y register is 32-bits length, but gdb takes care of that.  */
+   19 *8, /*     y */
+
+};
+
+
+struct regs_range_t
+{
+  int regno_start;
+  int regno_end;
+};
+
+static const struct regs_range_t gregs_ranges[] = {
+ {  0, 31 }, /*   g0 .. i7  */
+ { 80, 82 }, /*   pc .. state */
+ { 84, 85 }  /* fprs .. y */
+};
+
+#define N_GREGS_RANGES (sizeof (gregs_ranges) / sizeof (struct regs_range_t))
+
+static const struct regs_range_t fpregs_ranges[] = {
+ { 32, 79 }, /* f0 .. f62  */
+ { 83, 83 }  /* fsr */
+};
+
+#define N_FPREGS_RANGES (sizeof (fpregs_ranges) / sizeof (struct regs_range_t))
+
+/* Defined in auto-generated file reg-sparc64.c.  */
+void init_registers_sparc64 (void);
+extern const struct target_desc *tdesc_sparc64;
+
+bool
+sparc_target::low_cannot_store_register (int regno)
+{
+  return (regno >= sparc_num_regs || sparc_regmap[regno] == -1);
+}
+
+bool
+sparc_target::low_cannot_fetch_register (int regno)
+{
+  return (regno >= sparc_num_regs || sparc_regmap[regno] == -1);
+}
+
+static void
+sparc_fill_gregset_to_stack (struct regcache *regcache, const void *buf)
+{
+  int i;
+  CORE_ADDR addr = 0;
+  unsigned char tmp_reg_buf[8];
+  const int l0_regno = find_regno (regcache->tdesc, "l0");
+  const int i7_regno = l0_regno + 15;
+
+  /* These registers have to be stored in the stack.  */
+  memcpy (&addr,
+	  ((char *) buf) + sparc_regmap[find_regno (regcache->tdesc, "sp")],
+	  sizeof (addr));
+
+  addr += BIAS;
+
+  for (i = l0_regno; i <= i7_regno; i++)
+    {
+      collect_register (regcache, i, tmp_reg_buf);
+      the_target->write_memory (addr, tmp_reg_buf, sizeof (tmp_reg_buf));
+      addr += sizeof (tmp_reg_buf);
+    }
+}
+
+static void
+sparc_fill_gregset (struct regcache *regcache, void *buf)
+{
+  int i;
+  int range;
+
+  for (range = 0; range < N_GREGS_RANGES; range++)
+    for (i = gregs_ranges[range].regno_start;
+	 i <= gregs_ranges[range].regno_end; i++)
+      if (sparc_regmap[i] != -1)
+	collect_register (regcache, i, ((char *) buf) + sparc_regmap[i]);
+
+  sparc_fill_gregset_to_stack (regcache, buf);
+}
+
+static void
+sparc_fill_fpregset (struct regcache *regcache, void *buf)
+{
+  int i;
+  int range;
+
+  for (range = 0; range < N_FPREGS_RANGES; range++)
+    for (i = fpregs_ranges[range].regno_start;
+	 i <= fpregs_ranges[range].regno_end; i++)
+      collect_register (regcache, i, ((char *) buf) + sparc_regmap[i]);
+
+}
+
+static void
+sparc_store_gregset_from_stack (struct regcache *regcache, const void *buf)
+{
+  int i;
+  CORE_ADDR addr = 0;
+  unsigned char tmp_reg_buf[8];
+  const int l0_regno = find_regno (regcache->tdesc, "l0");
+  const int i7_regno = l0_regno + 15;
+
+  /* These registers have to be obtained from the stack.  */
+  memcpy (&addr,
+	  ((char *) buf) + sparc_regmap[find_regno (regcache->tdesc, "sp")],
+	  sizeof (addr));
+
+  addr += BIAS;
+
+  for (i = l0_regno; i <= i7_regno; i++)
+    {
+      the_target->read_memory (addr, tmp_reg_buf, sizeof (tmp_reg_buf));
+      supply_register (regcache, i, tmp_reg_buf);
+      addr += sizeof (tmp_reg_buf);
+    }
+}
+
+static void
+sparc_store_gregset (struct regcache *regcache, const void *buf)
+{
+  int i;
+  char zerobuf[8];
+  int range;
+
+  memset (zerobuf, 0, sizeof (zerobuf));
+
+  for (range = 0; range < N_GREGS_RANGES; range++)
+    for (i = gregs_ranges[range].regno_start;
+	 i <= gregs_ranges[range].regno_end; i++)
+      if (sparc_regmap[i] != -1)
+	supply_register (regcache, i, ((char *) buf) + sparc_regmap[i]);
+      else
+	supply_register (regcache, i, zerobuf);
+
+  sparc_store_gregset_from_stack (regcache, buf);
+}
+
+static void
+sparc_store_fpregset (struct regcache *regcache, const void *buf)
+{
+  int i;
+  int range;
+
+  for (range = 0; range < N_FPREGS_RANGES; range++)
+    for (i = fpregs_ranges[range].regno_start;
+	 i <= fpregs_ranges[range].regno_end;
+	 i++)
+      supply_register (regcache, i, ((char *) buf) + sparc_regmap[i]);
+}
+
+static const gdb_byte sparc_breakpoint[INSN_SIZE] = {
+  0x91, 0xd0, 0x20, 0x01
+};
+#define sparc_breakpoint_len INSN_SIZE
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+sparc_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = sparc_breakpoint_len;
+  return sparc_breakpoint;
+}
+
+bool
+sparc_target::low_breakpoint_at (CORE_ADDR where)
+{
+  unsigned char insn[INSN_SIZE];
+
+  read_memory (where, (unsigned char *) insn, sizeof (insn));
+
+  if (memcmp (sparc_breakpoint, insn, sizeof (insn)) == 0)
+    return true;
+
+  /* If necessary, recognize more trap instructions here.  GDB only
+     uses TRAP Always.  */
+
+  return false;
+}
+
+void
+sparc_target::low_arch_setup ()
+{
+  current_process ()->tdesc = tdesc_sparc64;
+}
+
+static struct regset_info sparc_regsets[] = {
+  { PTRACE_GETREGS, PTRACE_SETREGS, 0, sizeof (elf_gregset_t),
+    GENERAL_REGS,
+    sparc_fill_gregset, sparc_store_gregset },
+  { PTRACE_GETFPREGS, PTRACE_SETFPREGS, 0, sizeof (fpregset_t),
+    FP_REGS,
+    sparc_fill_fpregset, sparc_store_fpregset },
+  NULL_REGSET
+};
+
+static struct regsets_info sparc_regsets_info =
+  {
+    sparc_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct usrregs_info sparc_usrregs_info =
+  {
+    sparc_num_regs,
+    /* No regmap needs to be provided since this impl. doesn't use
+       USRREGS.  */
+    NULL
+  };
+
+static struct regs_info myregs_info =
+  {
+    NULL, /* regset_bitmap */
+    &sparc_usrregs_info,
+    &sparc_regsets_info
+  };
+
+const regs_info *
+sparc_target::get_regs_info ()
+{
+  return &myregs_info;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_sparc_target;
+
+void
+initialize_low_arch (void)
+{
+  /* Initialize the Linux target descriptions.  */
+  init_registers_sparc64 ();
+
+  initialize_regsets_info (&sparc_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-tic6x-low.cc ./gdbserver/linux-tic6x-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-tic6x-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-tic6x-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,448 @@
+/* Target dependent code for GDB on TI C6x systems.
+
+   Copyright (C) 2010-2021 Free Software Foundation, Inc.
+   Contributed by Andrew Jenner <andrew@codesourcery.com>
+   Contributed by Yao Qi <yao@codesourcery.com>
+
+   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 "server.h"
+#include "linux-low.h"
+#include "arch/tic6x.h"
+#include "tdesc.h"
+
+#include "nat/gdb_ptrace.h"
+#include <endian.h>
+
+#include "gdb_proc_service.h"
+
+#ifndef PTRACE_GET_THREAD_AREA
+#define PTRACE_GET_THREAD_AREA 25
+#endif
+
+/* There are at most 69 registers accessible in ptrace.  */
+#define TIC6X_NUM_REGS 69
+
+#include <asm/ptrace.h>
+
+/* Linux target op definitions for the TI C6x architecture.  */
+
+class tic6x_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+};
+
+/* The singleton target ops object.  */
+
+static tic6x_target the_tic6x_target;
+
+/* Defined in auto-generated file tic6x-c64xp-linux.c.  */
+void init_registers_tic6x_c64xp_linux (void);
+extern const struct target_desc *tdesc_tic6x_c64xp_linux;
+
+/* Defined in auto-generated file tic6x-c64x-linux.c.  */
+void init_registers_tic6x_c64x_linux (void);
+extern const struct target_desc *tdesc_tic6x_c64x_linux;
+
+/* Defined in auto-generated file tic62x-c6xp-linux.c.  */
+void init_registers_tic6x_c62x_linux (void);
+extern const struct target_desc *tdesc_tic6x_c62x_linux;
+
+union tic6x_register
+{
+  unsigned char buf[4];
+
+  int reg32;
+};
+
+/* Return the ptrace ``address'' of register REGNO.  */
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+static int tic6x_regmap_c64xp[] = {
+  /* A0 - A15 */
+  53, 52, 55, 54, 57, 56, 59, 58,
+  61, 60, 63, 62, 65, 64, 67, 66,
+  /* B0 - B15 */
+  23, 22, 25, 24, 27, 26, 29, 28,
+  31, 30, 33, 32, 35, 34, 69, 68,
+  /* CSR PC */
+  5, 4,
+  /* A16 - A31 */
+  37, 36, 39, 38, 41, 40, 43, 42,
+  45, 44, 47, 46, 49, 48, 51, 50,
+  /* B16 - B31 */
+  7,  6,  9,  8,  11, 10, 13, 12,
+  15, 14, 17, 16, 19, 18, 21, 20,
+  /* TSR, ILC, RILC */
+  1,  2, 3
+};
+
+static int tic6x_regmap_c64x[] = {
+  /* A0 - A15 */
+  51, 50, 53, 52, 55, 54, 57, 56,
+  59, 58, 61, 60, 63, 62, 65, 64,
+  /* B0 - B15 */
+  21, 20, 23, 22, 25, 24, 27, 26,
+  29, 28, 31, 30, 33, 32, 67, 66,
+  /* CSR PC */
+  3,  2,
+  /* A16 - A31 */
+  35, 34, 37, 36, 39, 38, 41, 40,
+  43, 42, 45, 44, 47, 46, 49, 48,
+  /* B16 - B31 */
+  5,  4,  7,  6,  9,  8,  11, 10,
+  13, 12, 15, 14, 17, 16, 19, 18,
+  -1, -1, -1
+};
+
+static int tic6x_regmap_c62x[] = {
+  /* A0 - A15 */
+  19, 18, 21, 20, 23, 22, 25, 24,
+  27, 26, 29, 28, 31, 30, 33, 32,
+  /* B0 - B15 */
+   5,  4,  7,  6,  9,  8, 11, 10,
+  13, 12, 15, 14, 17, 16, 35, 34,
+  /* CSR, PC */
+  3, 2,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1
+};
+
+#else
+static int tic6x_regmap_c64xp[] = {
+  /* A0 - A15 */
+  52, 53, 54, 55, 56, 57, 58, 59,
+  60, 61, 62, 63, 64, 65, 66, 67,
+  /* B0 - B15 */
+  22, 23, 24, 25, 26, 27, 28, 29,
+  30, 31, 32, 33, 34, 35, 68, 69,
+  /* CSR PC */
+   4,  5,
+  /* A16 - A31 */
+  36, 37, 38, 39, 40, 41, 42, 43,
+  44, 45, 46, 47, 48, 49, 50, 51,
+  /* B16 -B31 */
+   6,  7,  8,  9, 10, 11, 12, 13,
+  14, 15, 16, 17, 18, 19, 20, 31,
+  /* TSR, ILC, RILC */
+  0,  3, 2
+};
+
+static int tic6x_regmap_c64x[] = {
+  /* A0 - A15 */
+  50, 51, 52, 53, 54, 55, 56, 57,
+  58, 59, 60, 61, 62, 63, 64, 65,
+  /* B0 - B15 */
+  20, 21, 22, 23, 24, 25, 26, 27,
+  28, 29, 30, 31, 32, 33, 66, 67,
+  /* CSR PC */
+  2,  3,
+  /* A16 - A31 */
+  34, 35, 36, 37, 38, 39, 40, 41,
+  42, 43, 44, 45, 46, 47, 48, 49,
+  /* B16 - B31 */
+  4,  5,  6,  7,  8,  9,  10, 11,
+  12, 13, 14, 15, 16, 17, 18, 19,
+  -1, -1, -1
+};
+
+static int tic6x_regmap_c62x[] = {
+  /* A0 - A15 */
+  18, 19, 20, 21, 22, 23, 24, 25,
+  26, 27, 28, 29, 30, 31, 32, 33,
+  /* B0 - B15 */
+  4,  5,  6,  7,  8,  9, 10, 11,
+  12, 13, 14, 15, 16, 17, 34, 35,
+  /* CSR PC */
+  2,  3,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1
+};
+
+#endif
+
+static int *tic6x_regmap;
+static unsigned int tic6x_breakpoint;
+#define tic6x_breakpoint_len 4
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+tic6x_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = tic6x_breakpoint_len;
+  return (const gdb_byte *) &tic6x_breakpoint;
+}
+
+static struct usrregs_info tic6x_usrregs_info =
+  {
+    TIC6X_NUM_REGS,
+    NULL, /* Set in tic6x_read_description.  */
+  };
+
+static const struct target_desc *
+tic6x_read_description (enum c6x_feature feature)
+{
+  static target_desc *tdescs[C6X_LAST] = { };
+  struct target_desc **tdesc = &tdescs[feature];
+
+  if (*tdesc == NULL)
+    {
+      *tdesc = tic6x_create_target_description (feature);
+      static const char *expedite_regs[] = { "A15", "PC", NULL };
+      init_target_desc (*tdesc, expedite_regs);
+    }
+
+  return *tdesc;
+}
+
+bool
+tic6x_target::low_cannot_fetch_register (int regno)
+{
+  return (tic6x_regmap[regno] == -1);
+}
+
+bool
+tic6x_target::low_cannot_store_register (int regno)
+{
+  return (tic6x_regmap[regno] == -1);
+}
+
+bool
+tic6x_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+tic6x_target::low_get_pc (regcache *regcache)
+{
+  union tic6x_register pc;
+
+  collect_register_by_name (regcache, "PC", pc.buf);
+  return pc.reg32;
+}
+
+void
+tic6x_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  union tic6x_register newpc;
+
+  newpc.reg32 = pc;
+  supply_register_by_name (regcache, "PC", newpc.buf);
+}
+
+bool
+tic6x_target::low_breakpoint_at (CORE_ADDR where)
+{
+  unsigned int insn;
+
+  read_memory (where, (unsigned char *) &insn, 4);
+  if (insn == tic6x_breakpoint)
+    return true;
+
+  /* If necessary, recognize more trap instructions here.  GDB only uses the
+     one.  */
+  return false;
+}
+
+/* Fetch the thread-local storage pointer for libthread_db.  */
+
+ps_err_e
+ps_get_thread_area (struct ps_prochandle *ph,
+		    lwpid_t lwpid, int idx, void **base)
+{
+  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
+    return PS_ERR;
+
+  /* IDX is the bias from the thread pointer to the beginning of the
+     thread descriptor.  It has to be subtracted due to implementation
+     quirks in libthread_db.  */
+  *base = (void *) ((char *) *base - idx);
+
+  return PS_OK;
+}
+
+static void
+tic6x_collect_register (struct regcache *regcache, int regno,
+			union tic6x_register *reg)
+{
+  union tic6x_register tmp_reg;
+
+  collect_register (regcache, regno, &tmp_reg.reg32);
+  reg->reg32 = tmp_reg.reg32;
+}
+
+static void
+tic6x_supply_register (struct regcache *regcache, int regno,
+		       const union tic6x_register *reg)
+{
+  int offset = 0;
+
+  supply_register (regcache, regno, reg->buf + offset);
+}
+
+static void
+tic6x_fill_gregset (struct regcache *regcache, void *buf)
+{
+  auto regset = static_cast<union tic6x_register *> (buf);
+  int i;
+
+  for (i = 0; i < TIC6X_NUM_REGS; i++)
+    if (tic6x_regmap[i] != -1)
+      tic6x_collect_register (regcache, i, regset + tic6x_regmap[i]);
+}
+
+static void
+tic6x_store_gregset (struct regcache *regcache, const void *buf)
+{
+  const auto regset = static_cast<const union tic6x_register *> (buf);
+  int i;
+
+  for (i = 0; i < TIC6X_NUM_REGS; i++)
+    if (tic6x_regmap[i] != -1)
+      tic6x_supply_register (regcache, i, regset + tic6x_regmap[i]);
+}
+
+static struct regset_info tic6x_regsets[] = {
+  { PTRACE_GETREGS, PTRACE_SETREGS, 0, TIC6X_NUM_REGS * 4, GENERAL_REGS,
+    tic6x_fill_gregset, tic6x_store_gregset },
+  NULL_REGSET
+};
+
+void
+tic6x_target::low_arch_setup ()
+{
+  register unsigned int csr asm ("B2");
+  unsigned int cpuid;
+  enum c6x_feature feature = C6X_CORE;
+
+  /* Determine the CPU we're running on to find the register order.  */
+  __asm__ ("MVC .S2 CSR,%0" : "=r" (csr) :);
+  cpuid = csr >> 24;
+  switch (cpuid)
+    {
+    case 0x00: /* C62x */
+    case 0x02: /* C67x */
+      tic6x_regmap = tic6x_regmap_c62x;
+      tic6x_breakpoint = 0x0000a122;  /* BNOP .S2 0,5 */
+      feature = C6X_CORE;
+      break;
+    case 0x03: /* C67x+ */
+      tic6x_regmap = tic6x_regmap_c64x;
+      tic6x_breakpoint = 0x0000a122;  /* BNOP .S2 0,5 */
+      feature = C6X_GP;
+      break;
+    case 0x0c: /* C64x */
+      tic6x_regmap = tic6x_regmap_c64x;
+      tic6x_breakpoint = 0x0000a122;  /* BNOP .S2 0,5 */
+      feature = C6X_GP;
+      break;
+    case 0x10: /* C64x+ */
+    case 0x14: /* C674x */
+    case 0x15: /* C66x */
+      tic6x_regmap = tic6x_regmap_c64xp;
+      tic6x_breakpoint = 0x56454314;  /* illegal opcode */
+      feature = C6X_C6XP;
+      break;
+    default:
+      error ("Unknown CPU ID 0x%02x", cpuid);
+    }
+  tic6x_usrregs_info.regmap = tic6x_regmap;
+
+  current_process ()->tdesc = tic6x_read_description (feature);
+}
+
+static struct regsets_info tic6x_regsets_info =
+  {
+    tic6x_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct regs_info myregs_info =
+  {
+    NULL, /* regset_bitmap */
+    &tic6x_usrregs_info,
+    &tic6x_regsets_info
+  };
+
+const regs_info *
+tic6x_target::get_regs_info ()
+{
+  return &myregs_info;
+}
+
+#if GDB_SELF_TEST
+#include "gdbsupport/selftest.h"
+
+namespace selftests {
+namespace tdesc {
+static void
+tic6x_tdesc_test ()
+{
+  SELF_CHECK (*tdesc_tic6x_c62x_linux == *tic6x_read_description (C6X_CORE));
+  SELF_CHECK (*tdesc_tic6x_c64x_linux == *tic6x_read_description (C6X_GP));
+  SELF_CHECK (*tdesc_tic6x_c64xp_linux == *tic6x_read_description (C6X_C6XP));
+}
+}
+}
+#endif
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_tic6x_target;
+
+void
+initialize_low_arch (void)
+{
+#if GDB_SELF_TEST
+  /* Initialize the Linux target descriptions.  */
+  init_registers_tic6x_c64xp_linux ();
+  init_registers_tic6x_c64x_linux ();
+  init_registers_tic6x_c62x_linux ();
+
+  selftests::register_test ("tic6x-tdesc", selftests::tdesc::tic6x_tdesc_test);
+#endif
+
+  initialize_regsets_info (&tic6x_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-x86-low.cc ./gdbserver/linux-x86-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-x86-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-x86-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,2986 @@
+/* GNU/Linux/x86-64 specific low level interface, for the remote server
+   for GDB.
+   Copyright (C) 2002-2021 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 "server.h"
+#include <signal.h>
+#include <limits.h>
+#include <inttypes.h>
+#include "linux-low.h"
+#include "i387-fp.h"
+#include "x86-low.h"
+#include "gdbsupport/x86-xstate.h"
+#include "nat/gdb_ptrace.h"
+
+#ifdef __x86_64__
+#include "nat/amd64-linux-siginfo.h"
+#endif
+
+#include "gdb_proc_service.h"
+/* Don't include elf/common.h if linux/elf.h got included by
+   gdb_proc_service.h.  */
+#ifndef ELFMAG0
+#include "elf/common.h"
+#endif
+
+#include "gdbsupport/agent.h"
+#include "tdesc.h"
+#include "tracepoint.h"
+#include "ax.h"
+#include "nat/linux-nat.h"
+#include "nat/x86-linux.h"
+#include "nat/x86-linux-dregs.h"
+#include "linux-x86-tdesc.h"
+
+#ifdef __x86_64__
+static struct target_desc *tdesc_amd64_linux_no_xml;
+#endif
+static struct target_desc *tdesc_i386_linux_no_xml;
+
+
+static unsigned char jump_insn[] = { 0xe9, 0, 0, 0, 0 };
+static unsigned char small_jump_insn[] = { 0x66, 0xe9, 0, 0 };
+
+/* Backward compatibility for gdb without XML support.  */
+
+static const char *xmltarget_i386_linux_no_xml = "@<target>\
+<architecture>i386</architecture>\
+<osabi>GNU/Linux</osabi>\
+</target>";
+
+#ifdef __x86_64__
+static const char *xmltarget_amd64_linux_no_xml = "@<target>\
+<architecture>i386:x86-64</architecture>\
+<osabi>GNU/Linux</osabi>\
+</target>";
+#endif
+
+#include <sys/reg.h>
+#include <sys/procfs.h>
+#include <sys/uio.h>
+
+#ifndef PTRACE_GET_THREAD_AREA
+#define PTRACE_GET_THREAD_AREA 25
+#endif
+
+/* This definition comes from prctl.h, but some kernels may not have it.  */
+#ifndef PTRACE_ARCH_PRCTL
+#define PTRACE_ARCH_PRCTL      30
+#endif
+
+/* The following definitions come from prctl.h, but may be absent
+   for certain configurations.  */
+#ifndef ARCH_GET_FS
+#define ARCH_SET_GS 0x1001
+#define ARCH_SET_FS 0x1002
+#define ARCH_GET_FS 0x1003
+#define ARCH_GET_GS 0x1004
+#endif
+
+/* Linux target op definitions for the x86 architecture.
+   This is initialized assuming an amd64 target.
+   'low_arch_setup' will correct it for i386 or amd64 targets.  */
+
+class x86_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+  bool supports_z_point_type (char z_type) override;
+
+  void process_qsupported (gdb::array_view<const char * const> features) override;
+
+  bool supports_tracepoints () override;
+
+  bool supports_fast_tracepoints () override;
+
+  int install_fast_tracepoint_jump_pad
+    (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector,
+     CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry,
+     CORE_ADDR *trampoline, ULONGEST *trampoline_size,
+     unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size,
+     CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end,
+     char *err) override;
+
+  int get_min_fast_tracepoint_insn_len () override;
+
+  struct emit_ops *emit_ops () override;
+
+  int get_ipa_tdesc_idx () override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  int low_decr_pc_after_break () override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+
+  int low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+			int size, raw_breakpoint *bp) override;
+
+  int low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+			int size, raw_breakpoint *bp) override;
+
+  bool low_stopped_by_watchpoint () override;
+
+  CORE_ADDR low_stopped_data_address () override;
+
+  /* collect_ptrace_register/supply_ptrace_register are not needed in the
+     native i386 case (no registers smaller than an xfer unit), and are not
+     used in the biarch case (HAVE_LINUX_USRREGS is not defined).  */
+
+  /* Need to fix up i386 siginfo if host is amd64.  */
+  bool low_siginfo_fixup (siginfo_t *native, gdb_byte *inf,
+			  int direction) override;
+
+  arch_process_info *low_new_process () override;
+
+  void low_delete_process (arch_process_info *info) override;
+
+  void low_new_thread (lwp_info *) override;
+
+  void low_delete_thread (arch_lwp_info *) override;
+
+  void low_new_fork (process_info *parent, process_info *child) override;
+
+  void low_prepare_to_resume (lwp_info *lwp) override;
+
+  int low_get_thread_area (int lwpid, CORE_ADDR *addrp) override;
+
+  bool low_supports_range_stepping () override;
+
+  bool low_supports_catch_syscall () override;
+
+  void low_get_syscall_trapinfo (regcache *regcache, int *sysno) override;
+
+private:
+
+  /* Update all the target description of all processes; a new GDB
+     connected, and it may or not support xml target descriptions.  */
+  void update_xmltarget ();
+};
+
+/* The singleton target ops object.  */
+
+static x86_target the_x86_target;
+
+/* Per-process arch-specific data we want to keep.  */
+
+struct arch_process_info
+{
+  struct x86_debug_reg_state debug_reg_state;
+};
+
+#ifdef __x86_64__
+
+/* Mapping between the general-purpose registers in `struct user'
+   format and GDB's register array layout.
+   Note that the transfer layout uses 64-bit regs.  */
+static /*const*/ int i386_regmap[] = 
+{
+  RAX * 8, RCX * 8, RDX * 8, RBX * 8,
+  RSP * 8, RBP * 8, RSI * 8, RDI * 8,
+  RIP * 8, EFLAGS * 8, CS * 8, SS * 8,
+  DS * 8, ES * 8, FS * 8, GS * 8
+};
+
+#define I386_NUM_REGS (sizeof (i386_regmap) / sizeof (i386_regmap[0]))
+
+/* So code below doesn't have to care, i386 or amd64.  */
+#define ORIG_EAX ORIG_RAX
+#define REGSIZE 8
+
+static const int x86_64_regmap[] =
+{
+  RAX * 8, RBX * 8, RCX * 8, RDX * 8,
+  RSI * 8, RDI * 8, RBP * 8, RSP * 8,
+  R8 * 8, R9 * 8, R10 * 8, R11 * 8,
+  R12 * 8, R13 * 8, R14 * 8, R15 * 8,
+  RIP * 8, EFLAGS * 8, CS * 8, SS * 8,
+  DS * 8, ES * 8, FS * 8, GS * 8,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  ORIG_RAX * 8,
+  21 * 8,  22 * 8,
+  -1, -1, -1, -1,			/* MPX registers BND0 ... BND3.  */
+  -1, -1,				/* MPX registers BNDCFGU, BNDSTATUS.  */
+  -1, -1, -1, -1, -1, -1, -1, -1,       /* xmm16 ... xmm31 (AVX512)  */
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,       /* ymm16 ... ymm31 (AVX512)  */
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,       /* k0 ... k7 (AVX512)  */
+  -1, -1, -1, -1, -1, -1, -1, -1,       /* zmm0 ... zmm31 (AVX512)  */
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1,
+  -1					/* pkru  */
+};
+
+#define X86_64_NUM_REGS (sizeof (x86_64_regmap) / sizeof (x86_64_regmap[0]))
+#define X86_64_USER_REGS (GS + 1)
+
+#else /* ! __x86_64__ */
+
+/* Mapping between the general-purpose registers in `struct user'
+   format and GDB's register array layout.  */
+static /*const*/ int i386_regmap[] = 
+{
+  EAX * 4, ECX * 4, EDX * 4, EBX * 4,
+  UESP * 4, EBP * 4, ESI * 4, EDI * 4,
+  EIP * 4, EFL * 4, CS * 4, SS * 4,
+  DS * 4, ES * 4, FS * 4, GS * 4
+};
+
+#define I386_NUM_REGS (sizeof (i386_regmap) / sizeof (i386_regmap[0]))
+
+#define REGSIZE 4
+
+#endif
+
+#ifdef __x86_64__
+
+/* Returns true if the current inferior belongs to a x86-64 process,
+   per the tdesc.  */
+
+static int
+is_64bit_tdesc (void)
+{
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+
+  return register_size (regcache->tdesc, 0) == 8;
+}
+
+#endif
+
+
+/* Called by libthread_db.  */
+
+ps_err_e
+ps_get_thread_area (struct ps_prochandle *ph,
+		    lwpid_t lwpid, int idx, void **base)
+{
+#ifdef __x86_64__
+  int use_64bit = is_64bit_tdesc ();
+
+  if (use_64bit)
+    {
+      switch (idx)
+	{
+	case FS:
+	  if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_FS) == 0)
+	    return PS_OK;
+	  break;
+	case GS:
+	  if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_GS) == 0)
+	    return PS_OK;
+	  break;
+	default:
+	  return PS_BADADDR;
+	}
+      return PS_ERR;
+    }
+#endif
+
+  {
+    unsigned int desc[4];
+
+    if (ptrace (PTRACE_GET_THREAD_AREA, lwpid,
+		(void *) (intptr_t) idx, (unsigned long) &desc) < 0)
+      return PS_ERR;
+
+    /* Ensure we properly extend the value to 64-bits for x86_64.  */
+    *base = (void *) (uintptr_t) desc[1];
+    return PS_OK;
+  }
+}
+
+/* Get the thread area address.  This is used to recognize which
+   thread is which when tracing with the in-process agent library.  We
+   don't read anything from the address, and treat it as opaque; it's
+   the address itself that we assume is unique per-thread.  */
+
+int
+x86_target::low_get_thread_area (int lwpid, CORE_ADDR *addr)
+{
+#ifdef __x86_64__
+  int use_64bit = is_64bit_tdesc ();
+
+  if (use_64bit)
+    {
+      void *base;
+      if (ptrace (PTRACE_ARCH_PRCTL, lwpid, &base, ARCH_GET_FS) == 0)
+	{
+	  *addr = (CORE_ADDR) (uintptr_t) base;
+	  return 0;
+	}
+
+      return -1;
+    }
+#endif
+
+  {
+    struct lwp_info *lwp = find_lwp_pid (ptid_t (lwpid));
+    struct thread_info *thr = get_lwp_thread (lwp);
+    struct regcache *regcache = get_thread_regcache (thr, 1);
+    unsigned int desc[4];
+    ULONGEST gs = 0;
+    const int reg_thread_area = 3; /* bits to scale down register value.  */
+    int idx;
+
+    collect_register_by_name (regcache, "gs", &gs);
+
+    idx = gs >> reg_thread_area;
+
+    if (ptrace (PTRACE_GET_THREAD_AREA,
+		lwpid_of (thr),
+		(void *) (long) idx, (unsigned long) &desc) < 0)
+      return -1;
+
+    *addr = desc[1];
+    return 0;
+  }
+}
+
+
+
+bool
+x86_target::low_cannot_store_register (int regno)
+{
+#ifdef __x86_64__
+  if (is_64bit_tdesc ())
+    return false;
+#endif
+
+  return regno >= I386_NUM_REGS;
+}
+
+bool
+x86_target::low_cannot_fetch_register (int regno)
+{
+#ifdef __x86_64__
+  if (is_64bit_tdesc ())
+    return false;
+#endif
+
+  return regno >= I386_NUM_REGS;
+}
+
+static void
+x86_fill_gregset (struct regcache *regcache, void *buf)
+{
+  int i;
+
+#ifdef __x86_64__
+  if (register_size (regcache->tdesc, 0) == 8)
+    {
+      for (i = 0; i < X86_64_NUM_REGS; i++)
+	if (x86_64_regmap[i] != -1)
+	  collect_register (regcache, i, ((char *) buf) + x86_64_regmap[i]);
+
+      return;
+    }
+
+  /* 32-bit inferior registers need to be zero-extended.
+     Callers would read uninitialized memory otherwise.  */
+  memset (buf, 0x00, X86_64_USER_REGS * 8);
+#endif
+
+  for (i = 0; i < I386_NUM_REGS; i++)
+    collect_register (regcache, i, ((char *) buf) + i386_regmap[i]);
+
+  collect_register_by_name (regcache, "orig_eax",
+			    ((char *) buf) + ORIG_EAX * REGSIZE);
+
+#ifdef __x86_64__
+  /* Sign extend EAX value to avoid potential syscall restart
+     problems. 
+
+     See amd64_linux_collect_native_gregset() in gdb/amd64-linux-nat.c
+     for a detailed explanation.  */
+  if (register_size (regcache->tdesc, 0) == 4)
+    {
+      void *ptr = ((gdb_byte *) buf
+                   + i386_regmap[find_regno (regcache->tdesc, "eax")]);
+
+      *(int64_t *) ptr = *(int32_t *) ptr;
+    }
+#endif
+}
+
+static void
+x86_store_gregset (struct regcache *regcache, const void *buf)
+{
+  int i;
+
+#ifdef __x86_64__
+  if (register_size (regcache->tdesc, 0) == 8)
+    {
+      for (i = 0; i < X86_64_NUM_REGS; i++)
+	if (x86_64_regmap[i] != -1)
+	  supply_register (regcache, i, ((char *) buf) + x86_64_regmap[i]);
+
+      return;
+    }
+#endif
+
+  for (i = 0; i < I386_NUM_REGS; i++)
+    supply_register (regcache, i, ((char *) buf) + i386_regmap[i]);
+
+  supply_register_by_name (regcache, "orig_eax",
+			   ((char *) buf) + ORIG_EAX * REGSIZE);
+}
+
+static void
+x86_fill_fpregset (struct regcache *regcache, void *buf)
+{
+#ifdef __x86_64__
+  i387_cache_to_fxsave (regcache, buf);
+#else
+  i387_cache_to_fsave (regcache, buf);
+#endif
+}
+
+static void
+x86_store_fpregset (struct regcache *regcache, const void *buf)
+{
+#ifdef __x86_64__
+  i387_fxsave_to_cache (regcache, buf);
+#else
+  i387_fsave_to_cache (regcache, buf);
+#endif
+}
+
+#ifndef __x86_64__
+
+static void
+x86_fill_fpxregset (struct regcache *regcache, void *buf)
+{
+  i387_cache_to_fxsave (regcache, buf);
+}
+
+static void
+x86_store_fpxregset (struct regcache *regcache, const void *buf)
+{
+  i387_fxsave_to_cache (regcache, buf);
+}
+
+#endif
+
+static void
+x86_fill_xstateregset (struct regcache *regcache, void *buf)
+{
+  i387_cache_to_xsave (regcache, buf);
+}
+
+static void
+x86_store_xstateregset (struct regcache *regcache, const void *buf)
+{
+  i387_xsave_to_cache (regcache, buf);
+}
+
+/* ??? The non-biarch i386 case stores all the i387 regs twice.
+   Once in i387_.*fsave.* and once in i387_.*fxsave.*.
+   This is, presumably, to handle the case where PTRACE_[GS]ETFPXREGS
+   doesn't work.  IWBN to avoid the duplication in the case where it
+   does work.  Maybe the arch_setup routine could check whether it works
+   and update the supported regsets accordingly.  */
+
+static struct regset_info x86_regsets[] =
+{
+#ifdef HAVE_PTRACE_GETREGS
+  { PTRACE_GETREGS, PTRACE_SETREGS, 0, sizeof (elf_gregset_t),
+    GENERAL_REGS,
+    x86_fill_gregset, x86_store_gregset },
+  { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_X86_XSTATE, 0,
+    EXTENDED_REGS, x86_fill_xstateregset, x86_store_xstateregset },
+# ifndef __x86_64__
+#  ifdef HAVE_PTRACE_GETFPXREGS
+  { PTRACE_GETFPXREGS, PTRACE_SETFPXREGS, 0, sizeof (elf_fpxregset_t),
+    EXTENDED_REGS,
+    x86_fill_fpxregset, x86_store_fpxregset },
+#  endif
+# endif
+  { PTRACE_GETFPREGS, PTRACE_SETFPREGS, 0, sizeof (elf_fpregset_t),
+    FP_REGS,
+    x86_fill_fpregset, x86_store_fpregset },
+#endif /* HAVE_PTRACE_GETREGS */
+  NULL_REGSET
+};
+
+bool
+x86_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+x86_target::low_get_pc (regcache *regcache)
+{
+  int use_64bit = register_size (regcache->tdesc, 0) == 8;
+
+  if (use_64bit)
+    {
+      uint64_t pc;
+
+      collect_register_by_name (regcache, "rip", &pc);
+      return (CORE_ADDR) pc;
+    }
+  else
+    {
+      uint32_t pc;
+
+      collect_register_by_name (regcache, "eip", &pc);
+      return (CORE_ADDR) pc;
+    }
+}
+
+void
+x86_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  int use_64bit = register_size (regcache->tdesc, 0) == 8;
+
+  if (use_64bit)
+    {
+      uint64_t newpc = pc;
+
+      supply_register_by_name (regcache, "rip", &newpc);
+    }
+  else
+    {
+      uint32_t newpc = pc;
+
+      supply_register_by_name (regcache, "eip", &newpc);
+    }
+}
+
+int
+x86_target::low_decr_pc_after_break ()
+{
+  return 1;
+}
+
+
+static const gdb_byte x86_breakpoint[] = { 0xCC };
+#define x86_breakpoint_len 1
+
+bool
+x86_target::low_breakpoint_at (CORE_ADDR pc)
+{
+  unsigned char c;
+
+  read_memory (pc, &c, 1);
+  if (c == 0xCC)
+    return true;
+
+  return false;
+}
+
+/* Low-level function vector.  */
+struct x86_dr_low_type x86_dr_low =
+  {
+    x86_linux_dr_set_control,
+    x86_linux_dr_set_addr,
+    x86_linux_dr_get_addr,
+    x86_linux_dr_get_status,
+    x86_linux_dr_get_control,
+    sizeof (void *),
+  };
+
+/* Breakpoint/Watchpoint support.  */
+
+bool
+x86_target::supports_z_point_type (char z_type)
+{
+  switch (z_type)
+    {
+    case Z_PACKET_SW_BP:
+    case Z_PACKET_HW_BP:
+    case Z_PACKET_WRITE_WP:
+    case Z_PACKET_ACCESS_WP:
+      return true;
+    default:
+      return false;
+    }
+}
+
+int
+x86_target::low_insert_point (raw_bkpt_type type, CORE_ADDR addr,
+			      int size, raw_breakpoint *bp)
+{
+  struct process_info *proc = current_process ();
+
+  switch (type)
+    {
+    case raw_bkpt_type_hw:
+    case raw_bkpt_type_write_wp:
+    case raw_bkpt_type_access_wp:
+      {
+	enum target_hw_bp_type hw_type
+	  = raw_bkpt_type_to_target_hw_bp_type (type);
+	struct x86_debug_reg_state *state
+	  = &proc->priv->arch_private->debug_reg_state;
+
+	return x86_dr_insert_watchpoint (state, hw_type, addr, size);
+      }
+
+    default:
+      /* Unsupported.  */
+      return 1;
+    }
+}
+
+int
+x86_target::low_remove_point (raw_bkpt_type type, CORE_ADDR addr,
+			      int size, raw_breakpoint *bp)
+{
+  struct process_info *proc = current_process ();
+
+  switch (type)
+    {
+    case raw_bkpt_type_hw:
+    case raw_bkpt_type_write_wp:
+    case raw_bkpt_type_access_wp:
+      {
+	enum target_hw_bp_type hw_type
+	  = raw_bkpt_type_to_target_hw_bp_type (type);
+	struct x86_debug_reg_state *state
+	  = &proc->priv->arch_private->debug_reg_state;
+
+	return x86_dr_remove_watchpoint (state, hw_type, addr, size);
+      }
+    default:
+      /* Unsupported.  */
+      return 1;
+    }
+}
+
+bool
+x86_target::low_stopped_by_watchpoint ()
+{
+  struct process_info *proc = current_process ();
+  return x86_dr_stopped_by_watchpoint (&proc->priv->arch_private->debug_reg_state);
+}
+
+CORE_ADDR
+x86_target::low_stopped_data_address ()
+{
+  struct process_info *proc = current_process ();
+  CORE_ADDR addr;
+  if (x86_dr_stopped_data_address (&proc->priv->arch_private->debug_reg_state,
+				   &addr))
+    return addr;
+  return 0;
+}
+
+/* Called when a new process is created.  */
+
+arch_process_info *
+x86_target::low_new_process ()
+{
+  struct arch_process_info *info = XCNEW (struct arch_process_info);
+
+  x86_low_init_dregs (&info->debug_reg_state);
+
+  return info;
+}
+
+/* Called when a process is being deleted.  */
+
+void
+x86_target::low_delete_process (arch_process_info *info)
+{
+  xfree (info);
+}
+
+void
+x86_target::low_new_thread (lwp_info *lwp)
+{
+  /* This comes from nat/.  */
+  x86_linux_new_thread (lwp);
+}
+
+void
+x86_target::low_delete_thread (arch_lwp_info *alwp)
+{
+  /* This comes from nat/.  */
+  x86_linux_delete_thread (alwp);
+}
+
+/* Target routine for new_fork.  */
+
+void
+x86_target::low_new_fork (process_info *parent, process_info *child)
+{
+  /* These are allocated by linux_add_process.  */
+  gdb_assert (parent->priv != NULL
+	      && parent->priv->arch_private != NULL);
+  gdb_assert (child->priv != NULL
+	      && child->priv->arch_private != NULL);
+
+  /* Linux kernel before 2.6.33 commit
+     72f674d203cd230426437cdcf7dd6f681dad8b0d
+     will inherit hardware debug registers from parent
+     on fork/vfork/clone.  Newer Linux kernels create such tasks with
+     zeroed debug registers.
+
+     GDB core assumes the child inherits the watchpoints/hw
+     breakpoints of the parent, and will remove them all from the
+     forked off process.  Copy the debug registers mirrors into the
+     new process so that all breakpoints and watchpoints can be
+     removed together.  The debug registers mirror will become zeroed
+     in the end before detaching the forked off process, thus making
+     this compatible with older Linux kernels too.  */
+
+  *child->priv->arch_private = *parent->priv->arch_private;
+}
+
+void
+x86_target::low_prepare_to_resume (lwp_info *lwp)
+{
+  /* This comes from nat/.  */
+  x86_linux_prepare_to_resume (lwp);
+}
+
+/* See nat/x86-dregs.h.  */
+
+struct x86_debug_reg_state *
+x86_debug_reg_state (pid_t pid)
+{
+  struct process_info *proc = find_process_pid (pid);
+
+  return &proc->priv->arch_private->debug_reg_state;
+}
+
+/* When GDBSERVER is built as a 64-bit application on linux, the
+   PTRACE_GETSIGINFO data is always presented in 64-bit layout.  Since
+   debugging a 32-bit inferior with a 64-bit GDBSERVER should look the same
+   as debugging it with a 32-bit GDBSERVER, we do the 32-bit <-> 64-bit
+   conversion in-place ourselves.  */
+
+/* Convert a ptrace/host siginfo object, into/from the siginfo in the
+   layout of the inferiors' architecture.  Returns true if any
+   conversion was done; false otherwise.  If DIRECTION is 1, then copy
+   from INF to PTRACE.  If DIRECTION is 0, copy from PTRACE to
+   INF.  */
+
+bool
+x86_target::low_siginfo_fixup (siginfo_t *ptrace, gdb_byte *inf, int direction)
+{
+#ifdef __x86_64__
+  unsigned int machine;
+  int tid = lwpid_of (current_thread);
+  int is_elf64 = linux_pid_exe_is_elf_64_file (tid, &machine);
+
+  /* Is the inferior 32-bit?  If so, then fixup the siginfo object.  */
+  if (!is_64bit_tdesc ())
+      return amd64_linux_siginfo_fixup_common (ptrace, inf, direction,
+					       FIXUP_32);
+  /* No fixup for native x32 GDB.  */
+  else if (!is_elf64 && sizeof (void *) == 8)
+    return amd64_linux_siginfo_fixup_common (ptrace, inf, direction,
+					     FIXUP_X32);
+#endif
+
+  return false;
+}
+
+static int use_xml;
+
+/* Format of XSAVE extended state is:
+	struct
+	{
+	  fxsave_bytes[0..463]
+	  sw_usable_bytes[464..511]
+	  xstate_hdr_bytes[512..575]
+	  avx_bytes[576..831]
+	  future_state etc
+	};
+
+  Same memory layout will be used for the coredump NT_X86_XSTATE
+  representing the XSAVE extended state registers.
+
+  The first 8 bytes of the sw_usable_bytes[464..467] is the OS enabled
+  extended state mask, which is the same as the extended control register
+  0 (the XFEATURE_ENABLED_MASK register), XCR0.  We can use this mask
+  together with the mask saved in the xstate_hdr_bytes to determine what
+  states the processor/OS supports and what state, used or initialized,
+  the process/thread is in.  */
+#define I386_LINUX_XSAVE_XCR0_OFFSET 464
+
+/* Does the current host support the GETFPXREGS request?  The header
+   file may or may not define it, and even if it is defined, the
+   kernel will return EIO if it's running on a pre-SSE processor.  */
+int have_ptrace_getfpxregs =
+#ifdef HAVE_PTRACE_GETFPXREGS
+  -1
+#else
+  0
+#endif
+;
+
+/* Get Linux/x86 target description from running target.  */
+
+static const struct target_desc *
+x86_linux_read_description (void)
+{
+  unsigned int machine;
+  int is_elf64;
+  int xcr0_features;
+  int tid;
+  static uint64_t xcr0;
+  struct regset_info *regset;
+
+  tid = lwpid_of (current_thread);
+
+  is_elf64 = linux_pid_exe_is_elf_64_file (tid, &machine);
+
+  if (sizeof (void *) == 4)
+    {
+      if (is_elf64 > 0)
+       error (_("Can't debug 64-bit process with 32-bit GDBserver"));
+#ifndef __x86_64__
+      else if (machine == EM_X86_64)
+       error (_("Can't debug x86-64 process with 32-bit GDBserver"));
+#endif
+    }
+
+#if !defined __x86_64__ && defined HAVE_PTRACE_GETFPXREGS
+  if (machine == EM_386 && have_ptrace_getfpxregs == -1)
+    {
+      elf_fpxregset_t fpxregs;
+
+      if (ptrace (PTRACE_GETFPXREGS, tid, 0, (long) &fpxregs) < 0)
+	{
+	  have_ptrace_getfpxregs = 0;
+	  have_ptrace_getregset = 0;
+	  return i386_linux_read_description (X86_XSTATE_X87);
+	}
+      else
+	have_ptrace_getfpxregs = 1;
+    }
+#endif
+
+  if (!use_xml)
+    {
+      x86_xcr0 = X86_XSTATE_SSE_MASK;
+
+      /* Don't use XML.  */
+#ifdef __x86_64__
+      if (machine == EM_X86_64)
+	return tdesc_amd64_linux_no_xml;
+      else
+#endif
+	return tdesc_i386_linux_no_xml;
+    }
+
+  if (have_ptrace_getregset == -1)
+    {
+      uint64_t xstateregs[(X86_XSTATE_SSE_SIZE / sizeof (uint64_t))];
+      struct iovec iov;
+
+      iov.iov_base = xstateregs;
+      iov.iov_len = sizeof (xstateregs);
+
+      /* Check if PTRACE_GETREGSET works.  */
+      if (ptrace (PTRACE_GETREGSET, tid,
+		  (unsigned int) NT_X86_XSTATE, (long) &iov) < 0)
+	have_ptrace_getregset = 0;
+      else
+	{
+	  have_ptrace_getregset = 1;
+
+	  /* Get XCR0 from XSAVE extended state.  */
+	  xcr0 = xstateregs[(I386_LINUX_XSAVE_XCR0_OFFSET
+			     / sizeof (uint64_t))];
+
+	  /* Use PTRACE_GETREGSET if it is available.  */
+	  for (regset = x86_regsets;
+	       regset->fill_function != NULL; regset++)
+	    if (regset->get_request == PTRACE_GETREGSET)
+	      regset->size = X86_XSTATE_SIZE (xcr0);
+	    else if (regset->type != GENERAL_REGS)
+	      regset->size = 0;
+	}
+    }
+
+  /* Check the native XCR0 only if PTRACE_GETREGSET is available.  */
+  xcr0_features = (have_ptrace_getregset
+		   && (xcr0 & X86_XSTATE_ALL_MASK));
+
+  if (xcr0_features)
+    x86_xcr0 = xcr0;
+
+  if (machine == EM_X86_64)
+    {
+#ifdef __x86_64__
+      const target_desc *tdesc = NULL;
+
+      if (xcr0_features)
+	{
+	  tdesc = amd64_linux_read_description (xcr0 & X86_XSTATE_ALL_MASK,
+						!is_elf64);
+	}
+
+      if (tdesc == NULL)
+	tdesc = amd64_linux_read_description (X86_XSTATE_SSE_MASK, !is_elf64);
+      return tdesc;
+#endif
+    }
+  else
+    {
+      const target_desc *tdesc = NULL;
+
+      if (xcr0_features)
+	  tdesc = i386_linux_read_description (xcr0 & X86_XSTATE_ALL_MASK);
+
+      if (tdesc == NULL)
+	tdesc = i386_linux_read_description (X86_XSTATE_SSE);
+
+      return tdesc;
+    }
+
+  gdb_assert_not_reached ("failed to return tdesc");
+}
+
+/* Update all the target description of all processes; a new GDB
+   connected, and it may or not support xml target descriptions.  */
+
+void
+x86_target::update_xmltarget ()
+{
+  struct thread_info *saved_thread = current_thread;
+
+  /* Before changing the register cache's internal layout, flush the
+     contents of the current valid caches back to the threads, and
+     release the current regcache objects.  */
+  regcache_release ();
+
+  for_each_process ([this] (process_info *proc) {
+    int pid = proc->pid;
+
+    /* Look up any thread of this process.  */
+    current_thread = find_any_thread_of_pid (pid);
+
+    low_arch_setup ();
+  });
+
+  current_thread = saved_thread;
+}
+
+/* Process qSupported query, "xmlRegisters=".  Update the buffer size for
+   PTRACE_GETREGSET.  */
+
+void
+x86_target::process_qsupported (gdb::array_view<const char * const> features)
+{
+  /* Return if gdb doesn't support XML.  If gdb sends "xmlRegisters="
+     with "i386" in qSupported query, it supports x86 XML target
+     descriptions.  */
+  use_xml = 0;
+
+  for (const char *feature : features)
+    {
+      if (startswith (feature, "xmlRegisters="))
+	{
+	  char *copy = xstrdup (feature + 13);
+
+	  char *saveptr;
+	  for (char *p = strtok_r (copy, ",", &saveptr);
+	       p != NULL;
+	       p = strtok_r (NULL, ",", &saveptr))
+	    {
+	      if (strcmp (p, "i386") == 0)
+		{
+		  use_xml = 1;
+		  break;
+		}
+	    }
+
+	  free (copy);
+	}
+    }
+
+  update_xmltarget ();
+}
+
+/* Common for x86/x86-64.  */
+
+static struct regsets_info x86_regsets_info =
+  {
+    x86_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+#ifdef __x86_64__
+static struct regs_info amd64_linux_regs_info =
+  {
+    NULL, /* regset_bitmap */
+    NULL, /* usrregs_info */
+    &x86_regsets_info
+  };
+#endif
+static struct usrregs_info i386_linux_usrregs_info =
+  {
+    I386_NUM_REGS,
+    i386_regmap,
+  };
+
+static struct regs_info i386_linux_regs_info =
+  {
+    NULL, /* regset_bitmap */
+    &i386_linux_usrregs_info,
+    &x86_regsets_info
+  };
+
+const regs_info *
+x86_target::get_regs_info ()
+{
+#ifdef __x86_64__
+  if (is_64bit_tdesc ())
+    return &amd64_linux_regs_info;
+  else
+#endif
+    return &i386_linux_regs_info;
+}
+
+/* Initialize the target description for the architecture of the
+   inferior.  */
+
+void
+x86_target::low_arch_setup ()
+{
+  current_process ()->tdesc = x86_linux_read_description ();
+}
+
+bool
+x86_target::low_supports_catch_syscall ()
+{
+  return true;
+}
+
+/* Fill *SYSNO and *SYSRET with the syscall nr trapped and the syscall return
+   code.  This should only be called if LWP got a SYSCALL_SIGTRAP.  */
+
+void
+x86_target::low_get_syscall_trapinfo (regcache *regcache, int *sysno)
+{
+  int use_64bit = register_size (regcache->tdesc, 0) == 8;
+
+  if (use_64bit)
+    {
+      long l_sysno;
+
+      collect_register_by_name (regcache, "orig_rax", &l_sysno);
+      *sysno = (int) l_sysno;
+    }
+  else
+    collect_register_by_name (regcache, "orig_eax", sysno);
+}
+
+bool
+x86_target::supports_tracepoints ()
+{
+  return true;
+}
+
+static void
+append_insns (CORE_ADDR *to, size_t len, const unsigned char *buf)
+{
+  target_write_memory (*to, buf, len);
+  *to += len;
+}
+
+static int
+push_opcode (unsigned char *buf, const char *op)
+{
+  unsigned char *buf_org = buf;
+
+  while (1)
+    {
+      char *endptr;
+      unsigned long ul = strtoul (op, &endptr, 16);
+
+      if (endptr == op)
+	break;
+
+      *buf++ = ul;
+      op = endptr;
+    }
+
+  return buf - buf_org;
+}
+
+#ifdef __x86_64__
+
+/* Build a jump pad that saves registers and calls a collection
+   function.  Writes a jump instruction to the jump pad to
+   JJUMPAD_INSN.  The caller is responsible to write it in at the
+   tracepoint address.  */
+
+static int
+amd64_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint, CORE_ADDR tpaddr,
+					CORE_ADDR collector,
+					CORE_ADDR lockaddr,
+					ULONGEST orig_size,
+					CORE_ADDR *jump_entry,
+					CORE_ADDR *trampoline,
+					ULONGEST *trampoline_size,
+					unsigned char *jjump_pad_insn,
+					ULONGEST *jjump_pad_insn_size,
+					CORE_ADDR *adjusted_insn_addr,
+					CORE_ADDR *adjusted_insn_addr_end,
+					char *err)
+{
+  unsigned char buf[40];
+  int i, offset;
+  int64_t loffset;
+
+  CORE_ADDR buildaddr = *jump_entry;
+
+  /* Build the jump pad.  */
+
+  /* First, do tracepoint data collection.  Save registers.  */
+  i = 0;
+  /* Need to ensure stack pointer saved first.  */
+  buf[i++] = 0x54; /* push %rsp */
+  buf[i++] = 0x55; /* push %rbp */
+  buf[i++] = 0x57; /* push %rdi */
+  buf[i++] = 0x56; /* push %rsi */
+  buf[i++] = 0x52; /* push %rdx */
+  buf[i++] = 0x51; /* push %rcx */
+  buf[i++] = 0x53; /* push %rbx */
+  buf[i++] = 0x50; /* push %rax */
+  buf[i++] = 0x41; buf[i++] = 0x57; /* push %r15 */
+  buf[i++] = 0x41; buf[i++] = 0x56; /* push %r14 */
+  buf[i++] = 0x41; buf[i++] = 0x55; /* push %r13 */
+  buf[i++] = 0x41; buf[i++] = 0x54; /* push %r12 */
+  buf[i++] = 0x41; buf[i++] = 0x53; /* push %r11 */
+  buf[i++] = 0x41; buf[i++] = 0x52; /* push %r10 */
+  buf[i++] = 0x41; buf[i++] = 0x51; /* push %r9 */
+  buf[i++] = 0x41; buf[i++] = 0x50; /* push %r8 */
+  buf[i++] = 0x9c; /* pushfq */
+  buf[i++] = 0x48; /* movabs <addr>,%rdi */
+  buf[i++] = 0xbf;
+  memcpy (buf + i, &tpaddr, 8);
+  i += 8;
+  buf[i++] = 0x57; /* push %rdi */
+  append_insns (&buildaddr, i, buf);
+
+  /* Stack space for the collecting_t object.  */
+  i = 0;
+  i += push_opcode (&buf[i], "48 83 ec 18");	/* sub $0x18,%rsp */
+  i += push_opcode (&buf[i], "48 b8");          /* mov <tpoint>,%rax */
+  memcpy (buf + i, &tpoint, 8);
+  i += 8;
+  i += push_opcode (&buf[i], "48 89 04 24");    /* mov %rax,(%rsp) */
+  i += push_opcode (&buf[i],
+		    "64 48 8b 04 25 00 00 00 00"); /* mov %fs:0x0,%rax */
+  i += push_opcode (&buf[i], "48 89 44 24 08"); /* mov %rax,0x8(%rsp) */
+  append_insns (&buildaddr, i, buf);
+
+  /* spin-lock.  */
+  i = 0;
+  i += push_opcode (&buf[i], "48 be");		/* movl <lockaddr>,%rsi */
+  memcpy (&buf[i], (void *) &lockaddr, 8);
+  i += 8;
+  i += push_opcode (&buf[i], "48 89 e1");       /* mov %rsp,%rcx */
+  i += push_opcode (&buf[i], "31 c0");		/* xor %eax,%eax */
+  i += push_opcode (&buf[i], "f0 48 0f b1 0e"); /* lock cmpxchg %rcx,(%rsi) */
+  i += push_opcode (&buf[i], "48 85 c0");	/* test %rax,%rax */
+  i += push_opcode (&buf[i], "75 f4");		/* jne <again> */
+  append_insns (&buildaddr, i, buf);
+
+  /* Set up the gdb_collect call.  */
+  /* At this point, (stack pointer + 0x18) is the base of our saved
+     register block.  */
+
+  i = 0;
+  i += push_opcode (&buf[i], "48 89 e6");	/* mov %rsp,%rsi */
+  i += push_opcode (&buf[i], "48 83 c6 18");	/* add $0x18,%rsi */
+
+  /* tpoint address may be 64-bit wide.  */
+  i += push_opcode (&buf[i], "48 bf");		/* movl <addr>,%rdi */
+  memcpy (buf + i, &tpoint, 8);
+  i += 8;
+  append_insns (&buildaddr, i, buf);
+
+  /* The collector function being in the shared library, may be
+     >31-bits away off the jump pad.  */
+  i = 0;
+  i += push_opcode (&buf[i], "48 b8");          /* mov $collector,%rax */
+  memcpy (buf + i, &collector, 8);
+  i += 8;
+  i += push_opcode (&buf[i], "ff d0");          /* callq *%rax */
+  append_insns (&buildaddr, i, buf);
+
+  /* Clear the spin-lock.  */
+  i = 0;
+  i += push_opcode (&buf[i], "31 c0");		/* xor %eax,%eax */
+  i += push_opcode (&buf[i], "48 a3");		/* mov %rax, lockaddr */
+  memcpy (buf + i, &lockaddr, 8);
+  i += 8;
+  append_insns (&buildaddr, i, buf);
+
+  /* Remove stack that had been used for the collect_t object.  */
+  i = 0;
+  i += push_opcode (&buf[i], "48 83 c4 18");	/* add $0x18,%rsp */
+  append_insns (&buildaddr, i, buf);
+
+  /* Restore register state.  */
+  i = 0;
+  buf[i++] = 0x48; /* add $0x8,%rsp */
+  buf[i++] = 0x83;
+  buf[i++] = 0xc4;
+  buf[i++] = 0x08;
+  buf[i++] = 0x9d; /* popfq */
+  buf[i++] = 0x41; buf[i++] = 0x58; /* pop %r8 */
+  buf[i++] = 0x41; buf[i++] = 0x59; /* pop %r9 */
+  buf[i++] = 0x41; buf[i++] = 0x5a; /* pop %r10 */
+  buf[i++] = 0x41; buf[i++] = 0x5b; /* pop %r11 */
+  buf[i++] = 0x41; buf[i++] = 0x5c; /* pop %r12 */
+  buf[i++] = 0x41; buf[i++] = 0x5d; /* pop %r13 */
+  buf[i++] = 0x41; buf[i++] = 0x5e; /* pop %r14 */
+  buf[i++] = 0x41; buf[i++] = 0x5f; /* pop %r15 */
+  buf[i++] = 0x58; /* pop %rax */
+  buf[i++] = 0x5b; /* pop %rbx */
+  buf[i++] = 0x59; /* pop %rcx */
+  buf[i++] = 0x5a; /* pop %rdx */
+  buf[i++] = 0x5e; /* pop %rsi */
+  buf[i++] = 0x5f; /* pop %rdi */
+  buf[i++] = 0x5d; /* pop %rbp */
+  buf[i++] = 0x5c; /* pop %rsp */
+  append_insns (&buildaddr, i, buf);
+
+  /* Now, adjust the original instruction to execute in the jump
+     pad.  */
+  *adjusted_insn_addr = buildaddr;
+  relocate_instruction (&buildaddr, tpaddr);
+  *adjusted_insn_addr_end = buildaddr;
+
+  /* Finally, write a jump back to the program.  */
+
+  loffset = (tpaddr + orig_size) - (buildaddr + sizeof (jump_insn));
+  if (loffset > INT_MAX || loffset < INT_MIN)
+    {
+      sprintf (err,
+	       "E.Jump back from jump pad too far from tracepoint "
+	       "(offset 0x%" PRIx64 " > int32).", loffset);
+      return 1;
+    }
+
+  offset = (int) loffset;
+  memcpy (buf, jump_insn, sizeof (jump_insn));
+  memcpy (buf + 1, &offset, 4);
+  append_insns (&buildaddr, sizeof (jump_insn), buf);
+
+  /* The jump pad is now built.  Wire in a jump to our jump pad.  This
+     is always done last (by our caller actually), so that we can
+     install fast tracepoints with threads running.  This relies on
+     the agent's atomic write support.  */
+  loffset = *jump_entry - (tpaddr + sizeof (jump_insn));
+  if (loffset > INT_MAX || loffset < INT_MIN)
+    {
+      sprintf (err,
+	       "E.Jump pad too far from tracepoint "
+	       "(offset 0x%" PRIx64 " > int32).", loffset);
+      return 1;
+    }
+
+  offset = (int) loffset;
+
+  memcpy (buf, jump_insn, sizeof (jump_insn));
+  memcpy (buf + 1, &offset, 4);
+  memcpy (jjump_pad_insn, buf, sizeof (jump_insn));
+  *jjump_pad_insn_size = sizeof (jump_insn);
+
+  /* Return the end address of our pad.  */
+  *jump_entry = buildaddr;
+
+  return 0;
+}
+
+#endif /* __x86_64__ */
+
+/* Build a jump pad that saves registers and calls a collection
+   function.  Writes a jump instruction to the jump pad to
+   JJUMPAD_INSN.  The caller is responsible to write it in at the
+   tracepoint address.  */
+
+static int
+i386_install_fast_tracepoint_jump_pad (CORE_ADDR tpoint, CORE_ADDR tpaddr,
+				       CORE_ADDR collector,
+				       CORE_ADDR lockaddr,
+				       ULONGEST orig_size,
+				       CORE_ADDR *jump_entry,
+				       CORE_ADDR *trampoline,
+				       ULONGEST *trampoline_size,
+				       unsigned char *jjump_pad_insn,
+				       ULONGEST *jjump_pad_insn_size,
+				       CORE_ADDR *adjusted_insn_addr,
+				       CORE_ADDR *adjusted_insn_addr_end,
+				       char *err)
+{
+  unsigned char buf[0x100];
+  int i, offset;
+  CORE_ADDR buildaddr = *jump_entry;
+
+  /* Build the jump pad.  */
+
+  /* First, do tracepoint data collection.  Save registers.  */
+  i = 0;
+  buf[i++] = 0x60; /* pushad */
+  buf[i++] = 0x68; /* push tpaddr aka $pc */
+  *((int *)(buf + i)) = (int) tpaddr;
+  i += 4;
+  buf[i++] = 0x9c; /* pushf */
+  buf[i++] = 0x1e; /* push %ds */
+  buf[i++] = 0x06; /* push %es */
+  buf[i++] = 0x0f; /* push %fs */
+  buf[i++] = 0xa0;
+  buf[i++] = 0x0f; /* push %gs */
+  buf[i++] = 0xa8;
+  buf[i++] = 0x16; /* push %ss */
+  buf[i++] = 0x0e; /* push %cs */
+  append_insns (&buildaddr, i, buf);
+
+  /* Stack space for the collecting_t object.  */
+  i = 0;
+  i += push_opcode (&buf[i], "83 ec 08");	/* sub    $0x8,%esp */
+
+  /* Build the object.  */
+  i += push_opcode (&buf[i], "b8");		/* mov    <tpoint>,%eax */
+  memcpy (buf + i, &tpoint, 4);
+  i += 4;
+  i += push_opcode (&buf[i], "89 04 24");	   /* mov %eax,(%esp) */
+
+  i += push_opcode (&buf[i], "65 a1 00 00 00 00"); /* mov %gs:0x0,%eax */
+  i += push_opcode (&buf[i], "89 44 24 04");	   /* mov %eax,0x4(%esp) */
+  append_insns (&buildaddr, i, buf);
+
+  /* spin-lock.  Note this is using cmpxchg, which leaves i386 behind.
+     If we cared for it, this could be using xchg alternatively.  */
+
+  i = 0;
+  i += push_opcode (&buf[i], "31 c0");		/* xor %eax,%eax */
+  i += push_opcode (&buf[i], "f0 0f b1 25");    /* lock cmpxchg
+						   %esp,<lockaddr> */
+  memcpy (&buf[i], (void *) &lockaddr, 4);
+  i += 4;
+  i += push_opcode (&buf[i], "85 c0");		/* test %eax,%eax */
+  i += push_opcode (&buf[i], "75 f2");		/* jne <again> */
+  append_insns (&buildaddr, i, buf);
+
+
+  /* Set up arguments to the gdb_collect call.  */
+  i = 0;
+  i += push_opcode (&buf[i], "89 e0");		/* mov %esp,%eax */
+  i += push_opcode (&buf[i], "83 c0 08");	/* add $0x08,%eax */
+  i += push_opcode (&buf[i], "89 44 24 fc");	/* mov %eax,-0x4(%esp) */
+  append_insns (&buildaddr, i, buf);
+
+  i = 0;
+  i += push_opcode (&buf[i], "83 ec 08");	/* sub $0x8,%esp */
+  append_insns (&buildaddr, i, buf);
+
+  i = 0;
+  i += push_opcode (&buf[i], "c7 04 24");       /* movl <addr>,(%esp) */
+  memcpy (&buf[i], (void *) &tpoint, 4);
+  i += 4;
+  append_insns (&buildaddr, i, buf);
+
+  buf[0] = 0xe8; /* call <reladdr> */
+  offset = collector - (buildaddr + sizeof (jump_insn));
+  memcpy (buf + 1, &offset, 4);
+  append_insns (&buildaddr, 5, buf);
+  /* Clean up after the call.  */
+  buf[0] = 0x83; /* add $0x8,%esp */
+  buf[1] = 0xc4;
+  buf[2] = 0x08;
+  append_insns (&buildaddr, 3, buf);
+
+
+  /* Clear the spin-lock.  This would need the LOCK prefix on older
+     broken archs.  */
+  i = 0;
+  i += push_opcode (&buf[i], "31 c0");		/* xor %eax,%eax */
+  i += push_opcode (&buf[i], "a3");		/* mov %eax, lockaddr */
+  memcpy (buf + i, &lockaddr, 4);
+  i += 4;
+  append_insns (&buildaddr, i, buf);
+
+
+  /* Remove stack that had been used for the collect_t object.  */
+  i = 0;
+  i += push_opcode (&buf[i], "83 c4 08");	/* add $0x08,%esp */
+  append_insns (&buildaddr, i, buf);
+
+  i = 0;
+  buf[i++] = 0x83; /* add $0x4,%esp (no pop of %cs, assume unchanged) */
+  buf[i++] = 0xc4;
+  buf[i++] = 0x04;
+  buf[i++] = 0x17; /* pop %ss */
+  buf[i++] = 0x0f; /* pop %gs */
+  buf[i++] = 0xa9;
+  buf[i++] = 0x0f; /* pop %fs */
+  buf[i++] = 0xa1;
+  buf[i++] = 0x07; /* pop %es */
+  buf[i++] = 0x1f; /* pop %ds */
+  buf[i++] = 0x9d; /* popf */
+  buf[i++] = 0x83; /* add $0x4,%esp (pop of tpaddr aka $pc) */
+  buf[i++] = 0xc4;
+  buf[i++] = 0x04;
+  buf[i++] = 0x61; /* popad */
+  append_insns (&buildaddr, i, buf);
+
+  /* Now, adjust the original instruction to execute in the jump
+     pad.  */
+  *adjusted_insn_addr = buildaddr;
+  relocate_instruction (&buildaddr, tpaddr);
+  *adjusted_insn_addr_end = buildaddr;
+
+  /* Write the jump back to the program.  */
+  offset = (tpaddr + orig_size) - (buildaddr + sizeof (jump_insn));
+  memcpy (buf, jump_insn, sizeof (jump_insn));
+  memcpy (buf + 1, &offset, 4);
+  append_insns (&buildaddr, sizeof (jump_insn), buf);
+
+  /* The jump pad is now built.  Wire in a jump to our jump pad.  This
+     is always done last (by our caller actually), so that we can
+     install fast tracepoints with threads running.  This relies on
+     the agent's atomic write support.  */
+  if (orig_size == 4)
+    {
+      /* Create a trampoline.  */
+      *trampoline_size = sizeof (jump_insn);
+      if (!claim_trampoline_space (*trampoline_size, trampoline))
+	{
+	  /* No trampoline space available.  */
+	  strcpy (err,
+		  "E.Cannot allocate trampoline space needed for fast "
+		  "tracepoints on 4-byte instructions.");
+	  return 1;
+	}
+
+      offset = *jump_entry - (*trampoline + sizeof (jump_insn));
+      memcpy (buf, jump_insn, sizeof (jump_insn));
+      memcpy (buf + 1, &offset, 4);
+      target_write_memory (*trampoline, buf, sizeof (jump_insn));
+
+      /* Use a 16-bit relative jump instruction to jump to the trampoline.  */
+      offset = (*trampoline - (tpaddr + sizeof (small_jump_insn))) & 0xffff;
+      memcpy (buf, small_jump_insn, sizeof (small_jump_insn));
+      memcpy (buf + 2, &offset, 2);
+      memcpy (jjump_pad_insn, buf, sizeof (small_jump_insn));
+      *jjump_pad_insn_size = sizeof (small_jump_insn);
+    }
+  else
+    {
+      /* Else use a 32-bit relative jump instruction.  */
+      offset = *jump_entry - (tpaddr + sizeof (jump_insn));
+      memcpy (buf, jump_insn, sizeof (jump_insn));
+      memcpy (buf + 1, &offset, 4);
+      memcpy (jjump_pad_insn, buf, sizeof (jump_insn));
+      *jjump_pad_insn_size = sizeof (jump_insn);
+    }
+
+  /* Return the end address of our pad.  */
+  *jump_entry = buildaddr;
+
+  return 0;
+}
+
+bool
+x86_target::supports_fast_tracepoints ()
+{
+  return true;
+}
+
+int
+x86_target::install_fast_tracepoint_jump_pad (CORE_ADDR tpoint,
+					      CORE_ADDR tpaddr,
+					      CORE_ADDR collector,
+					      CORE_ADDR lockaddr,
+					      ULONGEST orig_size,
+					      CORE_ADDR *jump_entry,
+					      CORE_ADDR *trampoline,
+					      ULONGEST *trampoline_size,
+					      unsigned char *jjump_pad_insn,
+					      ULONGEST *jjump_pad_insn_size,
+					      CORE_ADDR *adjusted_insn_addr,
+					      CORE_ADDR *adjusted_insn_addr_end,
+					      char *err)
+{
+#ifdef __x86_64__
+  if (is_64bit_tdesc ())
+    return amd64_install_fast_tracepoint_jump_pad (tpoint, tpaddr,
+						   collector, lockaddr,
+						   orig_size, jump_entry,
+						   trampoline, trampoline_size,
+						   jjump_pad_insn,
+						   jjump_pad_insn_size,
+						   adjusted_insn_addr,
+						   adjusted_insn_addr_end,
+						   err);
+#endif
+
+  return i386_install_fast_tracepoint_jump_pad (tpoint, tpaddr,
+						collector, lockaddr,
+						orig_size, jump_entry,
+						trampoline, trampoline_size,
+						jjump_pad_insn,
+						jjump_pad_insn_size,
+						adjusted_insn_addr,
+						adjusted_insn_addr_end,
+						err);
+}
+
+/* Return the minimum instruction length for fast tracepoints on x86/x86-64
+   architectures.  */
+
+int
+x86_target::get_min_fast_tracepoint_insn_len ()
+{
+  static int warned_about_fast_tracepoints = 0;
+
+#ifdef __x86_64__
+  /*  On x86-64, 5-byte jump instructions with a 4-byte offset are always
+      used for fast tracepoints.  */
+  if (is_64bit_tdesc ())
+    return 5;
+#endif
+
+  if (agent_loaded_p ())
+    {
+      char errbuf[IPA_BUFSIZ];
+
+      errbuf[0] = '\0';
+
+      /* On x86, if trampolines are available, then 4-byte jump instructions
+	 with a 2-byte offset may be used, otherwise 5-byte jump instructions
+	 with a 4-byte offset are used instead.  */
+      if (have_fast_tracepoint_trampoline_buffer (errbuf))
+	return 4;
+      else
+	{
+	  /* GDB has no channel to explain to user why a shorter fast
+	     tracepoint is not possible, but at least make GDBserver
+	     mention that something has gone awry.  */
+	  if (!warned_about_fast_tracepoints)
+	    {
+	      warning ("4-byte fast tracepoints not available; %s", errbuf);
+	      warned_about_fast_tracepoints = 1;
+	    }
+	  return 5;
+	}
+    }
+  else
+    {
+      /* Indicate that the minimum length is currently unknown since the IPA
+	 has not loaded yet.  */
+      return 0;
+    }
+}
+
+static void
+add_insns (unsigned char *start, int len)
+{
+  CORE_ADDR buildaddr = current_insn_ptr;
+
+  if (debug_threads)
+    debug_printf ("Adding %d bytes of insn at %s\n",
+		  len, paddress (buildaddr));
+
+  append_insns (&buildaddr, len, start);
+  current_insn_ptr = buildaddr;
+}
+
+/* Our general strategy for emitting code is to avoid specifying raw
+   bytes whenever possible, and instead copy a block of inline asm
+   that is embedded in the function.  This is a little messy, because
+   we need to keep the compiler from discarding what looks like dead
+   code, plus suppress various warnings.  */
+
+#define EMIT_ASM(NAME, INSNS)						\
+  do									\
+    {									\
+      extern unsigned char start_ ## NAME, end_ ## NAME;		\
+      add_insns (&start_ ## NAME, &end_ ## NAME - &start_ ## NAME);	\
+      __asm__ ("jmp end_" #NAME "\n"					\
+	       "\t" "start_" #NAME ":"					\
+	       "\t" INSNS "\n"						\
+	       "\t" "end_" #NAME ":");					\
+    } while (0)
+
+#ifdef __x86_64__
+
+#define EMIT_ASM32(NAME,INSNS)						\
+  do									\
+    {									\
+      extern unsigned char start_ ## NAME, end_ ## NAME;		\
+      add_insns (&start_ ## NAME, &end_ ## NAME - &start_ ## NAME);	\
+      __asm__ (".code32\n"						\
+	       "\t" "jmp end_" #NAME "\n"				\
+	       "\t" "start_" #NAME ":\n"				\
+	       "\t" INSNS "\n"						\
+	       "\t" "end_" #NAME ":\n"					\
+	       ".code64\n");						\
+    } while (0)
+
+#else
+
+#define EMIT_ASM32(NAME,INSNS) EMIT_ASM(NAME,INSNS)
+
+#endif
+
+#ifdef __x86_64__
+
+static void
+amd64_emit_prologue (void)
+{
+  EMIT_ASM (amd64_prologue,
+	    "pushq %rbp\n\t"
+	    "movq %rsp,%rbp\n\t"
+	    "sub $0x20,%rsp\n\t"
+	    "movq %rdi,-8(%rbp)\n\t"
+	    "movq %rsi,-16(%rbp)");
+}
+
+
+static void
+amd64_emit_epilogue (void)
+{
+  EMIT_ASM (amd64_epilogue,
+	    "movq -16(%rbp),%rdi\n\t"
+	    "movq %rax,(%rdi)\n\t"
+	    "xor %rax,%rax\n\t"
+	    "leave\n\t"
+	    "ret");
+}
+
+static void
+amd64_emit_add (void)
+{
+  EMIT_ASM (amd64_add,
+	    "add (%rsp),%rax\n\t"
+	    "lea 0x8(%rsp),%rsp");
+}
+
+static void
+amd64_emit_sub (void)
+{
+  EMIT_ASM (amd64_sub,
+	    "sub %rax,(%rsp)\n\t"
+	    "pop %rax");
+}
+
+static void
+amd64_emit_mul (void)
+{
+  emit_error = 1;
+}
+
+static void
+amd64_emit_lsh (void)
+{
+  emit_error = 1;
+}
+
+static void
+amd64_emit_rsh_signed (void)
+{
+  emit_error = 1;
+}
+
+static void
+amd64_emit_rsh_unsigned (void)
+{
+  emit_error = 1;
+}
+
+static void
+amd64_emit_ext (int arg)
+{
+  switch (arg)
+    {
+    case 8:
+      EMIT_ASM (amd64_ext_8,
+		"cbtw\n\t"
+		"cwtl\n\t"
+		"cltq");
+      break;
+    case 16:
+      EMIT_ASM (amd64_ext_16,
+		"cwtl\n\t"
+		"cltq");
+      break;
+    case 32:
+      EMIT_ASM (amd64_ext_32,
+		"cltq");
+      break;
+    default:
+      emit_error = 1;
+    }
+}
+
+static void
+amd64_emit_log_not (void)
+{
+  EMIT_ASM (amd64_log_not,
+	    "test %rax,%rax\n\t"
+	    "sete %cl\n\t"
+	    "movzbq %cl,%rax");
+}
+
+static void
+amd64_emit_bit_and (void)
+{
+  EMIT_ASM (amd64_and,
+	    "and (%rsp),%rax\n\t"
+	    "lea 0x8(%rsp),%rsp");
+}
+
+static void
+amd64_emit_bit_or (void)
+{
+  EMIT_ASM (amd64_or,
+	    "or (%rsp),%rax\n\t"
+	    "lea 0x8(%rsp),%rsp");
+}
+
+static void
+amd64_emit_bit_xor (void)
+{
+  EMIT_ASM (amd64_xor,
+	    "xor (%rsp),%rax\n\t"
+	    "lea 0x8(%rsp),%rsp");
+}
+
+static void
+amd64_emit_bit_not (void)
+{
+  EMIT_ASM (amd64_bit_not,
+	    "xorq $0xffffffffffffffff,%rax");
+}
+
+static void
+amd64_emit_equal (void)
+{
+  EMIT_ASM (amd64_equal,
+	    "cmp %rax,(%rsp)\n\t"
+	    "je .Lamd64_equal_true\n\t"
+	    "xor %rax,%rax\n\t"
+	    "jmp .Lamd64_equal_end\n\t"
+	    ".Lamd64_equal_true:\n\t"
+	    "mov $0x1,%rax\n\t"
+	    ".Lamd64_equal_end:\n\t"
+	    "lea 0x8(%rsp),%rsp");
+}
+
+static void
+amd64_emit_less_signed (void)
+{
+  EMIT_ASM (amd64_less_signed,
+	    "cmp %rax,(%rsp)\n\t"
+	    "jl .Lamd64_less_signed_true\n\t"
+	    "xor %rax,%rax\n\t"
+	    "jmp .Lamd64_less_signed_end\n\t"
+	    ".Lamd64_less_signed_true:\n\t"
+	    "mov $1,%rax\n\t"
+	    ".Lamd64_less_signed_end:\n\t"
+	    "lea 0x8(%rsp),%rsp");
+}
+
+static void
+amd64_emit_less_unsigned (void)
+{
+  EMIT_ASM (amd64_less_unsigned,
+	    "cmp %rax,(%rsp)\n\t"
+	    "jb .Lamd64_less_unsigned_true\n\t"
+	    "xor %rax,%rax\n\t"
+	    "jmp .Lamd64_less_unsigned_end\n\t"
+	    ".Lamd64_less_unsigned_true:\n\t"
+	    "mov $1,%rax\n\t"
+	    ".Lamd64_less_unsigned_end:\n\t"
+	    "lea 0x8(%rsp),%rsp");
+}
+
+static void
+amd64_emit_ref (int size)
+{
+  switch (size)
+    {
+    case 1:
+      EMIT_ASM (amd64_ref1,
+		"movb (%rax),%al");
+      break;
+    case 2:
+      EMIT_ASM (amd64_ref2,
+		"movw (%rax),%ax");
+      break;
+    case 4:
+      EMIT_ASM (amd64_ref4,
+		"movl (%rax),%eax");
+      break;
+    case 8:
+      EMIT_ASM (amd64_ref8,
+		"movq (%rax),%rax");
+      break;
+    }
+}
+
+static void
+amd64_emit_if_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM (amd64_if_goto,
+	    "mov %rax,%rcx\n\t"
+	    "pop %rax\n\t"
+	    "cmp $0,%rcx\n\t"
+	    ".byte 0x0f, 0x85, 0x0, 0x0, 0x0, 0x0");
+  if (offset_p)
+    *offset_p = 10;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+amd64_emit_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM (amd64_goto,
+	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0");
+  if (offset_p)
+    *offset_p = 1;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+amd64_write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
+{
+  int diff = (to - (from + size));
+  unsigned char buf[sizeof (int)];
+
+  if (size != 4)
+    {
+      emit_error = 1;
+      return;
+    }
+
+  memcpy (buf, &diff, sizeof (int));
+  target_write_memory (from, buf, sizeof (int));
+}
+
+static void
+amd64_emit_const (LONGEST num)
+{
+  unsigned char buf[16];
+  int i;
+  CORE_ADDR buildaddr = current_insn_ptr;
+
+  i = 0;
+  buf[i++] = 0x48;  buf[i++] = 0xb8; /* mov $<n>,%rax */
+  memcpy (&buf[i], &num, sizeof (num));
+  i += 8;
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+}
+
+static void
+amd64_emit_call (CORE_ADDR fn)
+{
+  unsigned char buf[16];
+  int i;
+  CORE_ADDR buildaddr;
+  LONGEST offset64;
+
+  /* The destination function being in the shared library, may be
+     >31-bits away off the compiled code pad.  */
+
+  buildaddr = current_insn_ptr;
+
+  offset64 = fn - (buildaddr + 1 /* call op */ + 4 /* 32-bit offset */);
+
+  i = 0;
+
+  if (offset64 > INT_MAX || offset64 < INT_MIN)
+    {
+      /* Offset is too large for a call.  Use callq, but that requires
+	 a register, so avoid it if possible.  Use r10, since it is
+	 call-clobbered, we don't have to push/pop it.  */
+      buf[i++] = 0x48; /* mov $fn,%r10 */
+      buf[i++] = 0xba;
+      memcpy (buf + i, &fn, 8);
+      i += 8;
+      buf[i++] = 0xff; /* callq *%r10 */
+      buf[i++] = 0xd2;
+    }
+  else
+    {
+      int offset32 = offset64; /* we know we can't overflow here.  */
+
+      buf[i++] = 0xe8; /* call <reladdr> */
+      memcpy (buf + i, &offset32, 4);
+      i += 4;
+    }
+
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+}
+
+static void
+amd64_emit_reg (int reg)
+{
+  unsigned char buf[16];
+  int i;
+  CORE_ADDR buildaddr;
+
+  /* Assume raw_regs is still in %rdi.  */
+  buildaddr = current_insn_ptr;
+  i = 0;
+  buf[i++] = 0xbe; /* mov $<n>,%esi */
+  memcpy (&buf[i], &reg, sizeof (reg));
+  i += 4;
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+  amd64_emit_call (get_raw_reg_func_addr ());
+}
+
+static void
+amd64_emit_pop (void)
+{
+  EMIT_ASM (amd64_pop,
+	    "pop %rax");
+}
+
+static void
+amd64_emit_stack_flush (void)
+{
+  EMIT_ASM (amd64_stack_flush,
+	    "push %rax");
+}
+
+static void
+amd64_emit_zero_ext (int arg)
+{
+  switch (arg)
+    {
+    case 8:
+      EMIT_ASM (amd64_zero_ext_8,
+		"and $0xff,%rax");
+      break;
+    case 16:
+      EMIT_ASM (amd64_zero_ext_16,
+		"and $0xffff,%rax");
+      break;
+    case 32:
+      EMIT_ASM (amd64_zero_ext_32,
+		"mov $0xffffffff,%rcx\n\t"
+		"and %rcx,%rax");
+      break;
+    default:
+      emit_error = 1;
+    }
+}
+
+static void
+amd64_emit_swap (void)
+{
+  EMIT_ASM (amd64_swap,
+	    "mov %rax,%rcx\n\t"
+	    "pop %rax\n\t"
+	    "push %rcx");
+}
+
+static void
+amd64_emit_stack_adjust (int n)
+{
+  unsigned char buf[16];
+  int i;
+  CORE_ADDR buildaddr = current_insn_ptr;
+
+  i = 0;
+  buf[i++] = 0x48; /* lea $<n>(%rsp),%rsp */
+  buf[i++] = 0x8d;
+  buf[i++] = 0x64;
+  buf[i++] = 0x24;
+  /* This only handles adjustments up to 16, but we don't expect any more.  */
+  buf[i++] = n * 8;
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+}
+
+/* FN's prototype is `LONGEST(*fn)(int)'.  */
+
+static void
+amd64_emit_int_call_1 (CORE_ADDR fn, int arg1)
+{
+  unsigned char buf[16];
+  int i;
+  CORE_ADDR buildaddr;
+
+  buildaddr = current_insn_ptr;
+  i = 0;
+  buf[i++] = 0xbf; /* movl $<n>,%edi */
+  memcpy (&buf[i], &arg1, sizeof (arg1));
+  i += 4;
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+  amd64_emit_call (fn);
+}
+
+/* FN's prototype is `void(*fn)(int,LONGEST)'.  */
+
+static void
+amd64_emit_void_call_2 (CORE_ADDR fn, int arg1)
+{
+  unsigned char buf[16];
+  int i;
+  CORE_ADDR buildaddr;
+
+  buildaddr = current_insn_ptr;
+  i = 0;
+  buf[i++] = 0xbf; /* movl $<n>,%edi */
+  memcpy (&buf[i], &arg1, sizeof (arg1));
+  i += 4;
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+  EMIT_ASM (amd64_void_call_2_a,
+	    /* Save away a copy of the stack top.  */
+	    "push %rax\n\t"
+	    /* Also pass top as the second argument.  */
+	    "mov %rax,%rsi");
+  amd64_emit_call (fn);
+  EMIT_ASM (amd64_void_call_2_b,
+	    /* Restore the stack top, %rax may have been trashed.  */
+	    "pop %rax");
+}
+
+static void
+amd64_emit_eq_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM (amd64_eq,
+	    "cmp %rax,(%rsp)\n\t"
+	    "jne .Lamd64_eq_fallthru\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax\n\t"
+	    /* jmp, but don't trust the assembler to choose the right jump */
+	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	    ".Lamd64_eq_fallthru:\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax");
+
+  if (offset_p)
+    *offset_p = 13;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+amd64_emit_ne_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM (amd64_ne,
+	    "cmp %rax,(%rsp)\n\t"
+	    "je .Lamd64_ne_fallthru\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax\n\t"
+	    /* jmp, but don't trust the assembler to choose the right jump */
+	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	    ".Lamd64_ne_fallthru:\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax");
+
+  if (offset_p)
+    *offset_p = 13;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+amd64_emit_lt_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM (amd64_lt,
+	    "cmp %rax,(%rsp)\n\t"
+	    "jnl .Lamd64_lt_fallthru\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax\n\t"
+	    /* jmp, but don't trust the assembler to choose the right jump */
+	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	    ".Lamd64_lt_fallthru:\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax");
+
+  if (offset_p)
+    *offset_p = 13;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+amd64_emit_le_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM (amd64_le,
+	    "cmp %rax,(%rsp)\n\t"
+	    "jnle .Lamd64_le_fallthru\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax\n\t"
+	    /* jmp, but don't trust the assembler to choose the right jump */
+	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	    ".Lamd64_le_fallthru:\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax");
+
+  if (offset_p)
+    *offset_p = 13;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+amd64_emit_gt_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM (amd64_gt,
+	    "cmp %rax,(%rsp)\n\t"
+	    "jng .Lamd64_gt_fallthru\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax\n\t"
+	    /* jmp, but don't trust the assembler to choose the right jump */
+	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	    ".Lamd64_gt_fallthru:\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax");
+
+  if (offset_p)
+    *offset_p = 13;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+amd64_emit_ge_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM (amd64_ge,
+	    "cmp %rax,(%rsp)\n\t"
+	    "jnge .Lamd64_ge_fallthru\n\t"
+	    ".Lamd64_ge_jump:\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax\n\t"
+	    /* jmp, but don't trust the assembler to choose the right jump */
+	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	    ".Lamd64_ge_fallthru:\n\t"
+	    "lea 0x8(%rsp),%rsp\n\t"
+	    "pop %rax");
+
+  if (offset_p)
+    *offset_p = 13;
+  if (size_p)
+    *size_p = 4;
+}
+
+struct emit_ops amd64_emit_ops =
+  {
+    amd64_emit_prologue,
+    amd64_emit_epilogue,
+    amd64_emit_add,
+    amd64_emit_sub,
+    amd64_emit_mul,
+    amd64_emit_lsh,
+    amd64_emit_rsh_signed,
+    amd64_emit_rsh_unsigned,
+    amd64_emit_ext,
+    amd64_emit_log_not,
+    amd64_emit_bit_and,
+    amd64_emit_bit_or,
+    amd64_emit_bit_xor,
+    amd64_emit_bit_not,
+    amd64_emit_equal,
+    amd64_emit_less_signed,
+    amd64_emit_less_unsigned,
+    amd64_emit_ref,
+    amd64_emit_if_goto,
+    amd64_emit_goto,
+    amd64_write_goto_address,
+    amd64_emit_const,
+    amd64_emit_call,
+    amd64_emit_reg,
+    amd64_emit_pop,
+    amd64_emit_stack_flush,
+    amd64_emit_zero_ext,
+    amd64_emit_swap,
+    amd64_emit_stack_adjust,
+    amd64_emit_int_call_1,
+    amd64_emit_void_call_2,
+    amd64_emit_eq_goto,
+    amd64_emit_ne_goto,
+    amd64_emit_lt_goto,
+    amd64_emit_le_goto,
+    amd64_emit_gt_goto,
+    amd64_emit_ge_goto
+  };
+
+#endif /* __x86_64__ */
+
+static void
+i386_emit_prologue (void)
+{
+  EMIT_ASM32 (i386_prologue,
+	    "push %ebp\n\t"
+	    "mov %esp,%ebp\n\t"
+	    "push %ebx");
+  /* At this point, the raw regs base address is at 8(%ebp), and the
+     value pointer is at 12(%ebp).  */
+}
+
+static void
+i386_emit_epilogue (void)
+{
+  EMIT_ASM32 (i386_epilogue,
+	    "mov 12(%ebp),%ecx\n\t"
+	    "mov %eax,(%ecx)\n\t"
+	    "mov %ebx,0x4(%ecx)\n\t"
+	    "xor %eax,%eax\n\t"
+	    "pop %ebx\n\t"
+	    "pop %ebp\n\t"
+	    "ret");
+}
+
+static void
+i386_emit_add (void)
+{
+  EMIT_ASM32 (i386_add,
+	    "add (%esp),%eax\n\t"
+	    "adc 0x4(%esp),%ebx\n\t"
+	    "lea 0x8(%esp),%esp");
+}
+
+static void
+i386_emit_sub (void)
+{
+  EMIT_ASM32 (i386_sub,
+	    "subl %eax,(%esp)\n\t"
+	    "sbbl %ebx,4(%esp)\n\t"
+	    "pop %eax\n\t"
+	    "pop %ebx\n\t");
+}
+
+static void
+i386_emit_mul (void)
+{
+  emit_error = 1;
+}
+
+static void
+i386_emit_lsh (void)
+{
+  emit_error = 1;
+}
+
+static void
+i386_emit_rsh_signed (void)
+{
+  emit_error = 1;
+}
+
+static void
+i386_emit_rsh_unsigned (void)
+{
+  emit_error = 1;
+}
+
+static void
+i386_emit_ext (int arg)
+{
+  switch (arg)
+    {
+    case 8:
+      EMIT_ASM32 (i386_ext_8,
+		"cbtw\n\t"
+		"cwtl\n\t"
+		"movl %eax,%ebx\n\t"
+		"sarl $31,%ebx");
+      break;
+    case 16:
+      EMIT_ASM32 (i386_ext_16,
+		"cwtl\n\t"
+		"movl %eax,%ebx\n\t"
+		"sarl $31,%ebx");
+      break;
+    case 32:
+      EMIT_ASM32 (i386_ext_32,
+		"movl %eax,%ebx\n\t"
+		"sarl $31,%ebx");
+      break;
+    default:
+      emit_error = 1;
+    }
+}
+
+static void
+i386_emit_log_not (void)
+{
+  EMIT_ASM32 (i386_log_not,
+	    "or %ebx,%eax\n\t"
+	    "test %eax,%eax\n\t"
+	    "sete %cl\n\t"
+	    "xor %ebx,%ebx\n\t"
+	    "movzbl %cl,%eax");
+}
+
+static void
+i386_emit_bit_and (void)
+{
+  EMIT_ASM32 (i386_and,
+	    "and (%esp),%eax\n\t"
+	    "and 0x4(%esp),%ebx\n\t"
+	    "lea 0x8(%esp),%esp");
+}
+
+static void
+i386_emit_bit_or (void)
+{
+  EMIT_ASM32 (i386_or,
+	    "or (%esp),%eax\n\t"
+	    "or 0x4(%esp),%ebx\n\t"
+	    "lea 0x8(%esp),%esp");
+}
+
+static void
+i386_emit_bit_xor (void)
+{
+  EMIT_ASM32 (i386_xor,
+	    "xor (%esp),%eax\n\t"
+	    "xor 0x4(%esp),%ebx\n\t"
+	    "lea 0x8(%esp),%esp");
+}
+
+static void
+i386_emit_bit_not (void)
+{
+  EMIT_ASM32 (i386_bit_not,
+	    "xor $0xffffffff,%eax\n\t"
+	    "xor $0xffffffff,%ebx\n\t");
+}
+
+static void
+i386_emit_equal (void)
+{
+  EMIT_ASM32 (i386_equal,
+	    "cmpl %ebx,4(%esp)\n\t"
+	    "jne .Li386_equal_false\n\t"
+	    "cmpl %eax,(%esp)\n\t"
+	    "je .Li386_equal_true\n\t"
+	    ".Li386_equal_false:\n\t"
+	    "xor %eax,%eax\n\t"
+	    "jmp .Li386_equal_end\n\t"
+	    ".Li386_equal_true:\n\t"
+	    "mov $1,%eax\n\t"
+	    ".Li386_equal_end:\n\t"
+	    "xor %ebx,%ebx\n\t"
+	    "lea 0x8(%esp),%esp");
+}
+
+static void
+i386_emit_less_signed (void)
+{
+  EMIT_ASM32 (i386_less_signed,
+	    "cmpl %ebx,4(%esp)\n\t"
+	    "jl .Li386_less_signed_true\n\t"
+	    "jne .Li386_less_signed_false\n\t"
+	    "cmpl %eax,(%esp)\n\t"
+	    "jl .Li386_less_signed_true\n\t"
+	    ".Li386_less_signed_false:\n\t"
+	    "xor %eax,%eax\n\t"
+	    "jmp .Li386_less_signed_end\n\t"
+	    ".Li386_less_signed_true:\n\t"
+	    "mov $1,%eax\n\t"
+	    ".Li386_less_signed_end:\n\t"
+	    "xor %ebx,%ebx\n\t"
+	    "lea 0x8(%esp),%esp");
+}
+
+static void
+i386_emit_less_unsigned (void)
+{
+  EMIT_ASM32 (i386_less_unsigned,
+	    "cmpl %ebx,4(%esp)\n\t"
+	    "jb .Li386_less_unsigned_true\n\t"
+	    "jne .Li386_less_unsigned_false\n\t"
+	    "cmpl %eax,(%esp)\n\t"
+	    "jb .Li386_less_unsigned_true\n\t"
+	    ".Li386_less_unsigned_false:\n\t"
+	    "xor %eax,%eax\n\t"
+	    "jmp .Li386_less_unsigned_end\n\t"
+	    ".Li386_less_unsigned_true:\n\t"
+	    "mov $1,%eax\n\t"
+	    ".Li386_less_unsigned_end:\n\t"
+	    "xor %ebx,%ebx\n\t"
+	    "lea 0x8(%esp),%esp");
+}
+
+static void
+i386_emit_ref (int size)
+{
+  switch (size)
+    {
+    case 1:
+      EMIT_ASM32 (i386_ref1,
+		"movb (%eax),%al");
+      break;
+    case 2:
+      EMIT_ASM32 (i386_ref2,
+		"movw (%eax),%ax");
+      break;
+    case 4:
+      EMIT_ASM32 (i386_ref4,
+		"movl (%eax),%eax");
+      break;
+    case 8:
+      EMIT_ASM32 (i386_ref8,
+		"movl 4(%eax),%ebx\n\t"
+		"movl (%eax),%eax");
+      break;
+    }
+}
+
+static void
+i386_emit_if_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM32 (i386_if_goto,
+	    "mov %eax,%ecx\n\t"
+	    "or %ebx,%ecx\n\t"
+	    "pop %eax\n\t"
+	    "pop %ebx\n\t"
+	    "cmpl $0,%ecx\n\t"
+	    /* Don't trust the assembler to choose the right jump */
+	    ".byte 0x0f, 0x85, 0x0, 0x0, 0x0, 0x0");
+
+  if (offset_p)
+    *offset_p = 11; /* be sure that this matches the sequence above */
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+i386_emit_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM32 (i386_goto,
+	    /* Don't trust the assembler to choose the right jump */
+	    ".byte 0xe9, 0x0, 0x0, 0x0, 0x0");
+  if (offset_p)
+    *offset_p = 1;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+i386_write_goto_address (CORE_ADDR from, CORE_ADDR to, int size)
+{
+  int diff = (to - (from + size));
+  unsigned char buf[sizeof (int)];
+
+  /* We're only doing 4-byte sizes at the moment.  */
+  if (size != 4)
+    {
+      emit_error = 1;
+      return;
+    }
+
+  memcpy (buf, &diff, sizeof (int));
+  target_write_memory (from, buf, sizeof (int));
+}
+
+static void
+i386_emit_const (LONGEST num)
+{
+  unsigned char buf[16];
+  int i, hi, lo;
+  CORE_ADDR buildaddr = current_insn_ptr;
+
+  i = 0;
+  buf[i++] = 0xb8; /* mov $<n>,%eax */
+  lo = num & 0xffffffff;
+  memcpy (&buf[i], &lo, sizeof (lo));
+  i += 4;
+  hi = ((num >> 32) & 0xffffffff);
+  if (hi)
+    {
+      buf[i++] = 0xbb; /* mov $<n>,%ebx */
+      memcpy (&buf[i], &hi, sizeof (hi));
+      i += 4;
+    }
+  else
+    {
+      buf[i++] = 0x31; buf[i++] = 0xdb; /* xor %ebx,%ebx */
+    }
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+}
+
+static void
+i386_emit_call (CORE_ADDR fn)
+{
+  unsigned char buf[16];
+  int i, offset;
+  CORE_ADDR buildaddr;
+
+  buildaddr = current_insn_ptr;
+  i = 0;
+  buf[i++] = 0xe8; /* call <reladdr> */
+  offset = ((int) fn) - (buildaddr + 5);
+  memcpy (buf + 1, &offset, 4);
+  append_insns (&buildaddr, 5, buf);
+  current_insn_ptr = buildaddr;
+}
+
+static void
+i386_emit_reg (int reg)
+{
+  unsigned char buf[16];
+  int i;
+  CORE_ADDR buildaddr;
+
+  EMIT_ASM32 (i386_reg_a,
+	    "sub $0x8,%esp");
+  buildaddr = current_insn_ptr;
+  i = 0;
+  buf[i++] = 0xb8; /* mov $<n>,%eax */
+  memcpy (&buf[i], &reg, sizeof (reg));
+  i += 4;
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+  EMIT_ASM32 (i386_reg_b,
+	    "mov %eax,4(%esp)\n\t"
+	    "mov 8(%ebp),%eax\n\t"
+	    "mov %eax,(%esp)");
+  i386_emit_call (get_raw_reg_func_addr ());
+  EMIT_ASM32 (i386_reg_c,
+	    "xor %ebx,%ebx\n\t"
+	    "lea 0x8(%esp),%esp");
+}
+
+static void
+i386_emit_pop (void)
+{
+  EMIT_ASM32 (i386_pop,
+	    "pop %eax\n\t"
+	    "pop %ebx");
+}
+
+static void
+i386_emit_stack_flush (void)
+{
+  EMIT_ASM32 (i386_stack_flush,
+	    "push %ebx\n\t"
+	    "push %eax");
+}
+
+static void
+i386_emit_zero_ext (int arg)
+{
+  switch (arg)
+    {
+    case 8:
+      EMIT_ASM32 (i386_zero_ext_8,
+		"and $0xff,%eax\n\t"
+		"xor %ebx,%ebx");
+      break;
+    case 16:
+      EMIT_ASM32 (i386_zero_ext_16,
+		"and $0xffff,%eax\n\t"
+		"xor %ebx,%ebx");
+      break;
+    case 32:
+      EMIT_ASM32 (i386_zero_ext_32,
+		"xor %ebx,%ebx");
+      break;
+    default:
+      emit_error = 1;
+    }
+}
+
+static void
+i386_emit_swap (void)
+{
+  EMIT_ASM32 (i386_swap,
+	    "mov %eax,%ecx\n\t"
+	    "mov %ebx,%edx\n\t"
+	    "pop %eax\n\t"
+	    "pop %ebx\n\t"
+	    "push %edx\n\t"
+	    "push %ecx");
+}
+
+static void
+i386_emit_stack_adjust (int n)
+{
+  unsigned char buf[16];
+  int i;
+  CORE_ADDR buildaddr = current_insn_ptr;
+
+  i = 0;
+  buf[i++] = 0x8d; /* lea $<n>(%esp),%esp */
+  buf[i++] = 0x64;
+  buf[i++] = 0x24;
+  buf[i++] = n * 8;
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+}
+
+/* FN's prototype is `LONGEST(*fn)(int)'.  */
+
+static void
+i386_emit_int_call_1 (CORE_ADDR fn, int arg1)
+{
+  unsigned char buf[16];
+  int i;
+  CORE_ADDR buildaddr;
+
+  EMIT_ASM32 (i386_int_call_1_a,
+	    /* Reserve a bit of stack space.  */
+	    "sub $0x8,%esp");
+  /* Put the one argument on the stack.  */
+  buildaddr = current_insn_ptr;
+  i = 0;
+  buf[i++] = 0xc7;  /* movl $<arg1>,(%esp) */
+  buf[i++] = 0x04;
+  buf[i++] = 0x24;
+  memcpy (&buf[i], &arg1, sizeof (arg1));
+  i += 4;
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+  i386_emit_call (fn);
+  EMIT_ASM32 (i386_int_call_1_c,
+	    "mov %edx,%ebx\n\t"
+	    "lea 0x8(%esp),%esp");
+}
+
+/* FN's prototype is `void(*fn)(int,LONGEST)'.  */
+
+static void
+i386_emit_void_call_2 (CORE_ADDR fn, int arg1)
+{
+  unsigned char buf[16];
+  int i;
+  CORE_ADDR buildaddr;
+
+  EMIT_ASM32 (i386_void_call_2_a,
+	    /* Preserve %eax only; we don't have to worry about %ebx.  */
+	    "push %eax\n\t"
+	    /* Reserve a bit of stack space for arguments.  */
+	    "sub $0x10,%esp\n\t"
+	    /* Copy "top" to the second argument position.  (Note that
+	       we can't assume function won't scribble on its
+	       arguments, so don't try to restore from this.)  */
+	    "mov %eax,4(%esp)\n\t"
+	    "mov %ebx,8(%esp)");
+  /* Put the first argument on the stack.  */
+  buildaddr = current_insn_ptr;
+  i = 0;
+  buf[i++] = 0xc7;  /* movl $<arg1>,(%esp) */
+  buf[i++] = 0x04;
+  buf[i++] = 0x24;
+  memcpy (&buf[i], &arg1, sizeof (arg1));
+  i += 4;
+  append_insns (&buildaddr, i, buf);
+  current_insn_ptr = buildaddr;
+  i386_emit_call (fn);
+  EMIT_ASM32 (i386_void_call_2_b,
+	    "lea 0x10(%esp),%esp\n\t"
+	    /* Restore original stack top.  */
+	    "pop %eax");
+}
+
+
+static void
+i386_emit_eq_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM32 (eq,
+	      /* Check low half first, more likely to be decider  */
+	      "cmpl %eax,(%esp)\n\t"
+	      "jne .Leq_fallthru\n\t"
+	      "cmpl %ebx,4(%esp)\n\t"
+	      "jne .Leq_fallthru\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx\n\t"
+	      /* jmp, but don't trust the assembler to choose the right jump */
+	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	      ".Leq_fallthru:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx");
+
+  if (offset_p)
+    *offset_p = 18;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+i386_emit_ne_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM32 (ne,
+	      /* Check low half first, more likely to be decider  */
+	      "cmpl %eax,(%esp)\n\t"
+	      "jne .Lne_jump\n\t"
+	      "cmpl %ebx,4(%esp)\n\t"
+	      "je .Lne_fallthru\n\t"
+	      ".Lne_jump:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx\n\t"
+	      /* jmp, but don't trust the assembler to choose the right jump */
+	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	      ".Lne_fallthru:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx");
+
+  if (offset_p)
+    *offset_p = 18;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+i386_emit_lt_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM32 (lt,
+	      "cmpl %ebx,4(%esp)\n\t"
+	      "jl .Llt_jump\n\t"
+	      "jne .Llt_fallthru\n\t"
+	      "cmpl %eax,(%esp)\n\t"
+	      "jnl .Llt_fallthru\n\t"
+	      ".Llt_jump:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx\n\t"
+	      /* jmp, but don't trust the assembler to choose the right jump */
+	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	      ".Llt_fallthru:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx");
+
+  if (offset_p)
+    *offset_p = 20;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+i386_emit_le_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM32 (le,
+	      "cmpl %ebx,4(%esp)\n\t"
+	      "jle .Lle_jump\n\t"
+	      "jne .Lle_fallthru\n\t"
+	      "cmpl %eax,(%esp)\n\t"
+	      "jnle .Lle_fallthru\n\t"
+	      ".Lle_jump:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx\n\t"
+	      /* jmp, but don't trust the assembler to choose the right jump */
+	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	      ".Lle_fallthru:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx");
+
+  if (offset_p)
+    *offset_p = 20;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+i386_emit_gt_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM32 (gt,
+	      "cmpl %ebx,4(%esp)\n\t"
+	      "jg .Lgt_jump\n\t"
+	      "jne .Lgt_fallthru\n\t"
+	      "cmpl %eax,(%esp)\n\t"
+	      "jng .Lgt_fallthru\n\t"
+	      ".Lgt_jump:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx\n\t"
+	      /* jmp, but don't trust the assembler to choose the right jump */
+	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	      ".Lgt_fallthru:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx");
+
+  if (offset_p)
+    *offset_p = 20;
+  if (size_p)
+    *size_p = 4;
+}
+
+static void
+i386_emit_ge_goto (int *offset_p, int *size_p)
+{
+  EMIT_ASM32 (ge,
+	      "cmpl %ebx,4(%esp)\n\t"
+	      "jge .Lge_jump\n\t"
+	      "jne .Lge_fallthru\n\t"
+	      "cmpl %eax,(%esp)\n\t"
+	      "jnge .Lge_fallthru\n\t"
+	      ".Lge_jump:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx\n\t"
+	      /* jmp, but don't trust the assembler to choose the right jump */
+	      ".byte 0xe9, 0x0, 0x0, 0x0, 0x0\n\t"
+	      ".Lge_fallthru:\n\t"
+	      "lea 0x8(%esp),%esp\n\t"
+	      "pop %eax\n\t"
+	      "pop %ebx");
+
+  if (offset_p)
+    *offset_p = 20;
+  if (size_p)
+    *size_p = 4;
+}
+
+struct emit_ops i386_emit_ops =
+  {
+    i386_emit_prologue,
+    i386_emit_epilogue,
+    i386_emit_add,
+    i386_emit_sub,
+    i386_emit_mul,
+    i386_emit_lsh,
+    i386_emit_rsh_signed,
+    i386_emit_rsh_unsigned,
+    i386_emit_ext,
+    i386_emit_log_not,
+    i386_emit_bit_and,
+    i386_emit_bit_or,
+    i386_emit_bit_xor,
+    i386_emit_bit_not,
+    i386_emit_equal,
+    i386_emit_less_signed,
+    i386_emit_less_unsigned,
+    i386_emit_ref,
+    i386_emit_if_goto,
+    i386_emit_goto,
+    i386_write_goto_address,
+    i386_emit_const,
+    i386_emit_call,
+    i386_emit_reg,
+    i386_emit_pop,
+    i386_emit_stack_flush,
+    i386_emit_zero_ext,
+    i386_emit_swap,
+    i386_emit_stack_adjust,
+    i386_emit_int_call_1,
+    i386_emit_void_call_2,
+    i386_emit_eq_goto,
+    i386_emit_ne_goto,
+    i386_emit_lt_goto,
+    i386_emit_le_goto,
+    i386_emit_gt_goto,
+    i386_emit_ge_goto
+  };
+
+
+emit_ops *
+x86_target::emit_ops ()
+{
+#ifdef __x86_64__
+  if (is_64bit_tdesc ())
+    return &amd64_emit_ops;
+  else
+#endif
+    return &i386_emit_ops;
+}
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+x86_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = x86_breakpoint_len;
+  return x86_breakpoint;
+}
+
+bool
+x86_target::low_supports_range_stepping ()
+{
+  return true;
+}
+
+int
+x86_target::get_ipa_tdesc_idx ()
+{
+  struct regcache *regcache = get_thread_regcache (current_thread, 0);
+  const struct target_desc *tdesc = regcache->tdesc;
+
+#ifdef __x86_64__
+  return amd64_get_ipa_tdesc_idx (tdesc);
+#endif
+
+  if (tdesc == tdesc_i386_linux_no_xml)
+    return X86_TDESC_SSE;
+
+  return i386_get_ipa_tdesc_idx (tdesc);
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_x86_target;
+
+void
+initialize_low_arch (void)
+{
+  /* Initialize the Linux target descriptions.  */
+#ifdef __x86_64__
+  tdesc_amd64_linux_no_xml = allocate_target_description ();
+  copy_target_description (tdesc_amd64_linux_no_xml,
+			   amd64_linux_read_description (X86_XSTATE_SSE_MASK,
+							 false));
+  tdesc_amd64_linux_no_xml->xmltarget = xmltarget_amd64_linux_no_xml;
+#endif
+
+  tdesc_i386_linux_no_xml = allocate_target_description ();
+  copy_target_description (tdesc_i386_linux_no_xml,
+			   i386_linux_read_description (X86_XSTATE_SSE_MASK));
+  tdesc_i386_linux_no_xml->xmltarget = xmltarget_i386_linux_no_xml;
+
+  initialize_regsets_info (&x86_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-x86-tdesc.cc ./gdbserver/linux-x86-tdesc.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-x86-tdesc.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-x86-tdesc.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,164 @@
+/* GNU/Linux/x86-64 specific target description, for the remote server
+   for GDB.
+   Copyright (C) 2017-2021 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 "server.h"
+#include "tdesc.h"
+#include "linux-x86-tdesc.h"
+#include "arch/i386.h"
+#include "gdbsupport/x86-xstate.h"
+#ifdef __x86_64__
+#include "arch/amd64.h"
+#endif
+#include "x86-tdesc.h"
+
+/* Return the right x86_linux_tdesc index for a given XCR0.  Return
+   X86_TDESC_LAST if can't find a match.  */
+
+static enum x86_linux_tdesc
+xcr0_to_tdesc_idx (uint64_t xcr0, bool is_x32)
+{
+  if (xcr0 & X86_XSTATE_PKRU)
+    {
+      if (is_x32)
+	{
+	  /* No x32 MPX and PKU, fall back to avx_avx512.  */
+	  return X86_TDESC_AVX_AVX512;
+	}
+      else
+	return X86_TDESC_AVX_MPX_AVX512_PKU;
+    }
+  else if (xcr0 & X86_XSTATE_AVX512)
+    return X86_TDESC_AVX_AVX512;
+  else if ((xcr0 & X86_XSTATE_AVX_MPX_MASK) == X86_XSTATE_AVX_MPX_MASK)
+    {
+      if (is_x32) /* No MPX on x32.  */
+	return X86_TDESC_AVX;
+      else
+	return X86_TDESC_AVX_MPX;
+    }
+  else if (xcr0 & X86_XSTATE_MPX)
+    {
+      if (is_x32) /* No MPX on x32.  */
+	return X86_TDESC_AVX;
+      else
+	return X86_TDESC_MPX;
+    }
+  else if (xcr0 & X86_XSTATE_AVX)
+    return X86_TDESC_AVX;
+  else if (xcr0 & X86_XSTATE_SSE)
+    return X86_TDESC_SSE;
+  else if (xcr0 & X86_XSTATE_X87)
+    return X86_TDESC_MMX;
+  else
+    return X86_TDESC_LAST;
+}
+
+#if defined __i386__ || !defined IN_PROCESS_AGENT
+
+static struct target_desc *i386_tdescs[X86_TDESC_LAST] = { };
+
+/* Return the target description according to XCR0.  */
+
+const struct target_desc *
+i386_linux_read_description (uint64_t xcr0)
+{
+  enum x86_linux_tdesc idx = xcr0_to_tdesc_idx (xcr0, false);
+
+  if (idx == X86_TDESC_LAST)
+    return NULL;
+
+  struct target_desc **tdesc = &i386_tdescs[idx];
+
+  if (*tdesc == NULL)
+    {
+      *tdesc = i386_create_target_description (xcr0, true, false);
+
+      init_target_desc (*tdesc, i386_expedite_regs);
+    }
+
+  return *tdesc;;
+}
+#endif
+
+#ifdef __x86_64__
+
+static target_desc *amd64_tdescs[X86_TDESC_LAST] = { };
+static target_desc *x32_tdescs[X86_TDESC_LAST] = { };
+
+const struct target_desc *
+amd64_linux_read_description (uint64_t xcr0, bool is_x32)
+{
+  enum x86_linux_tdesc idx = xcr0_to_tdesc_idx (xcr0, is_x32);
+
+  if (idx == X86_TDESC_LAST)
+    return NULL;
+
+  struct target_desc **tdesc = NULL;
+
+  if (is_x32)
+    tdesc = &x32_tdescs[idx];
+  else
+    tdesc = &amd64_tdescs[idx];
+
+  if (*tdesc == NULL)
+    {
+      *tdesc = amd64_create_target_description (xcr0, is_x32, true, true);
+
+      init_target_desc (*tdesc, amd64_expedite_regs);
+    }
+  return *tdesc;
+}
+
+#endif
+
+#ifndef IN_PROCESS_AGENT
+
+int
+i386_get_ipa_tdesc_idx (const struct target_desc *tdesc)
+{
+  for (int i = 0; i < X86_TDESC_LAST; i++)
+    {
+      if (tdesc == i386_tdescs[i])
+	return i;
+    }
+
+  /* If none tdesc is found, return the one with minimum features.  */
+  return X86_TDESC_MMX;
+}
+
+#if defined __x86_64__
+int
+amd64_get_ipa_tdesc_idx (const struct target_desc *tdesc)
+{
+  for (int i = 0; i < X86_TDESC_LAST; i++)
+    {
+      if (tdesc == amd64_tdescs[i])
+	return i;
+    }
+  for (int i = 0; i < X86_TDESC_LAST; i++)
+    {
+      if (tdesc == x32_tdescs[i])
+	return i;
+    }
+
+  return X86_TDESC_SSE;
+}
+
+#endif
+#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-x86-tdesc.h ./gdbserver/linux-x86-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-x86-tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-x86-tdesc.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,56 @@
+/* Low level support for x86 (i386 and x86-64), shared between gdbserver
+   and IPA.
+
+   Copyright (C) 2016-2021 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 GDBSERVER_LINUX_X86_TDESC_H
+#define GDBSERVER_LINUX_X86_TDESC_H
+
+/* Note: since IPA obviously knows what ABI it's running on (i386 vs x86_64
+   vs x32), it's sufficient to pass only the register set here.  This,
+   together with the ABI known at IPA compile time, maps to a tdesc.  */
+
+enum x86_linux_tdesc {
+  X86_TDESC_MMX = 0,
+  X86_TDESC_SSE = 1,
+  X86_TDESC_AVX = 2,
+  X86_TDESC_MPX = 3,
+  X86_TDESC_AVX_MPX = 4,
+  X86_TDESC_AVX_AVX512 = 5,
+  X86_TDESC_AVX_MPX_AVX512_PKU = 6,
+  X86_TDESC_LAST = 7,
+};
+
+#if defined __i386__ || !defined IN_PROCESS_AGENT
+int i386_get_ipa_tdesc_idx (const struct target_desc *tdesc);
+#endif
+
+#if defined __x86_64__ && !defined IN_PROCESS_AGENT
+int amd64_get_ipa_tdesc_idx (const struct target_desc *tdesc);
+#endif
+
+const struct target_desc *i386_get_ipa_tdesc (int idx);
+
+#ifdef __x86_64__
+const struct target_desc *amd64_linux_read_description (uint64_t xcr0,
+							bool is_x32);
+#endif
+
+const struct target_desc *i386_linux_read_description (uint64_t xcr0);
+
+#endif /* GDBSERVER_LINUX_X86_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-xtensa-low.cc ./gdbserver/linux-xtensa-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/linux-xtensa-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/linux-xtensa-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,334 @@
+/* GNU/Linux/Xtensa specific low level interface, for the remote server for GDB.
+   Copyright (C) 2007-2021 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 "server.h"
+#include "linux-low.h"
+
+/* Linux target op definitions for the Xtensa architecture.  */
+
+class xtensa_target : public linux_process_target
+{
+public:
+
+  const regs_info *get_regs_info () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+protected:
+
+  void low_arch_setup () override;
+
+  bool low_cannot_fetch_register (int regno) override;
+
+  bool low_cannot_store_register (int regno) override;
+
+  bool low_supports_breakpoints () override;
+
+  CORE_ADDR low_get_pc (regcache *regcache) override;
+
+  void low_set_pc (regcache *regcache, CORE_ADDR newpc) override;
+
+  bool low_breakpoint_at (CORE_ADDR pc) override;
+};
+
+/* The singleton target ops object.  */
+
+static xtensa_target the_xtensa_target;
+
+bool
+xtensa_target::low_cannot_fetch_register (int regno)
+{
+  gdb_assert_not_reached ("linux target op low_cannot_fetch_register "
+			  "is not implemented by the target");
+}
+
+bool
+xtensa_target::low_cannot_store_register (int regno)
+{
+  gdb_assert_not_reached ("linux target op low_cannot_store_register "
+			  "is not implemented by the target");
+}
+
+bool
+xtensa_target::low_supports_breakpoints ()
+{
+  return true;
+}
+
+CORE_ADDR
+xtensa_target::low_get_pc (regcache *regcache)
+{
+  return linux_get_pc_32bit (regcache);
+}
+
+void
+xtensa_target::low_set_pc (regcache *regcache, CORE_ADDR pc)
+{
+  linux_set_pc_32bit (regcache, pc);
+}
+
+/* Defined in auto-generated file reg-xtensa.c.  */
+void init_registers_xtensa (void);
+extern const struct target_desc *tdesc_xtensa;
+
+#include <asm/ptrace.h>
+#include <xtensa-config.h>
+#include "arch/xtensa.h"
+#include "gdb_proc_service.h"
+
+#include "xtensa-xtregs.c"
+
+enum regnum {
+	R_PC=0,	R_PS,
+	R_LBEG,	R_LEND,	R_LCOUNT,
+	R_SAR,
+	R_WS, R_WB,
+	R_THREADPTR,
+	R_A0 = 64
+};
+
+static void
+xtensa_fill_gregset (struct regcache *regcache, void *buf)
+{
+  elf_greg_t* rset = (elf_greg_t*)buf;
+  const struct target_desc *tdesc = regcache->tdesc;
+  int ar0_regnum;
+  char *ptr;
+  int i;
+
+  /* Take care of AR registers.  */
+
+  ar0_regnum = find_regno (tdesc, "ar0");
+  ptr = (char*)&rset[R_A0];
+
+  for (i = ar0_regnum; i < ar0_regnum + XCHAL_NUM_AREGS; i++)
+    {
+      collect_register (regcache, i, ptr);
+      ptr += register_size (tdesc, i);
+    }
+
+  if (XSHAL_ABI == XTHAL_ABI_CALL0)
+    {
+      int a0_regnum = find_regno (tdesc, "a0");
+      ptr = (char *) &rset[R_A0 + 4 * rset[R_WB]];
+
+      for (i = a0_regnum; i < a0_regnum + C0_NREGS; i++)
+	{
+	  if ((4 * rset[R_WB] + i - a0_regnum) == XCHAL_NUM_AREGS)
+	    ptr = (char *) &rset[R_A0];
+	  collect_register (regcache, i, ptr);
+	  ptr += register_size (tdesc, i);
+	}
+    }
+
+  /* Loop registers, if hardware has it.  */
+
+#if XCHAL_HAVE_LOOPS
+  collect_register_by_name (regcache, "lbeg", (char*)&rset[R_LBEG]);
+  collect_register_by_name (regcache, "lend", (char*)&rset[R_LEND]);
+  collect_register_by_name (regcache, "lcount", (char*)&rset[R_LCOUNT]);
+#endif
+
+  collect_register_by_name (regcache, "sar", (char*)&rset[R_SAR]);
+  collect_register_by_name (regcache, "pc", (char*)&rset[R_PC]);
+  collect_register_by_name (regcache, "ps", (char*)&rset[R_PS]);
+  collect_register_by_name (regcache, "windowbase", (char*)&rset[R_WB]);
+  collect_register_by_name (regcache, "windowstart", (char*)&rset[R_WS]);
+
+#if XCHAL_HAVE_THREADPTR
+  collect_register_by_name (regcache, "threadptr",
+			    (char *) &rset[R_THREADPTR]);
+#endif
+}
+
+static void
+xtensa_store_gregset (struct regcache *regcache, const void *buf)
+{
+  const elf_greg_t* rset = (const elf_greg_t*)buf;
+  const struct target_desc *tdesc = regcache->tdesc;
+  int ar0_regnum;
+  char *ptr;
+  int i;
+
+  /* Take care of AR registers.  */
+
+  ar0_regnum = find_regno (tdesc, "ar0");
+  ptr = (char *)&rset[R_A0];
+
+  for (i = ar0_regnum; i < ar0_regnum + XCHAL_NUM_AREGS; i++)
+    {
+      supply_register (regcache, i, ptr);
+      ptr += register_size (tdesc, i);
+    }
+
+  if (XSHAL_ABI == XTHAL_ABI_CALL0)
+    {
+      int a0_regnum = find_regno (tdesc, "a0");
+      ptr = (char *) &rset[R_A0 + (4 * rset[R_WB]) % XCHAL_NUM_AREGS];
+
+      for (i = a0_regnum; i < a0_regnum + C0_NREGS; i++)
+	{
+	  if ((4 * rset[R_WB] + i - a0_regnum) == XCHAL_NUM_AREGS)
+	    ptr = (char *) &rset[R_A0];
+	  supply_register (regcache, i, ptr);
+	  ptr += register_size (tdesc, i);
+	}
+    }
+
+  /* Loop registers, if hardware has it.  */
+
+#if XCHAL_HAVE_LOOPS
+  supply_register_by_name (regcache, "lbeg", (char*)&rset[R_LBEG]);
+  supply_register_by_name (regcache, "lend", (char*)&rset[R_LEND]);
+  supply_register_by_name (regcache, "lcount", (char*)&rset[R_LCOUNT]);
+#endif
+
+  supply_register_by_name (regcache, "sar", (char*)&rset[R_SAR]);
+  supply_register_by_name (regcache, "pc", (char*)&rset[R_PC]);
+  supply_register_by_name (regcache, "ps", (char*)&rset[R_PS]);
+  supply_register_by_name (regcache, "windowbase", (char*)&rset[R_WB]);
+  supply_register_by_name (regcache, "windowstart", (char*)&rset[R_WS]);
+
+#if XCHAL_HAVE_THREADPTR
+  supply_register_by_name (regcache, "threadptr",
+			   (char *) &rset[R_THREADPTR]);
+#endif
+}
+
+/* Xtensa GNU/Linux PTRACE interface includes extended register set.  */
+
+static void
+xtensa_fill_xtregset (struct regcache *regcache, void *buf)
+{
+  const xtensa_regtable_t *ptr;
+
+  for (ptr = xtensa_regmap_table; ptr->name; ptr++)
+    {
+      collect_register_by_name (regcache, ptr->name,
+				(char*)buf + ptr->ptrace_offset);
+    }
+}
+
+static void
+xtensa_store_xtregset (struct regcache *regcache, const void *buf)
+{
+  const xtensa_regtable_t *ptr;
+
+  for (ptr = xtensa_regmap_table; ptr->name; ptr++)
+    {
+      supply_register_by_name (regcache, ptr->name,
+				(char*)buf + ptr->ptrace_offset);
+    }
+}
+
+static struct regset_info xtensa_regsets[] = {
+  { PTRACE_GETREGS, PTRACE_SETREGS, 0, sizeof (elf_gregset_t),
+    GENERAL_REGS,
+    xtensa_fill_gregset, xtensa_store_gregset },
+  { PTRACE_GETXTREGS, PTRACE_SETXTREGS, 0, XTENSA_ELF_XTREG_SIZE,
+    EXTENDED_REGS,
+    xtensa_fill_xtregset, xtensa_store_xtregset },
+  NULL_REGSET
+};
+
+#if XCHAL_HAVE_BE
+#define XTENSA_BREAKPOINT {0xd2,0x0f}
+#else
+#define XTENSA_BREAKPOINT {0x2d,0xf0}
+#endif
+
+static const gdb_byte xtensa_breakpoint[] = XTENSA_BREAKPOINT;
+#define xtensa_breakpoint_len 2
+
+/* Implementation of target ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+xtensa_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = xtensa_breakpoint_len;
+  return xtensa_breakpoint;
+}
+
+bool
+xtensa_target::low_breakpoint_at (CORE_ADDR where)
+{
+    unsigned long insn;
+
+    read_memory (where, (unsigned char *) &insn, xtensa_breakpoint_len);
+    return memcmp((char *) &insn,
+		  xtensa_breakpoint, xtensa_breakpoint_len) == 0;
+}
+
+/* Called by libthread_db.  */
+
+ps_err_e
+ps_get_thread_area (struct ps_prochandle *ph,
+                    lwpid_t lwpid, int idx, void **base)
+{
+  xtensa_elf_gregset_t regs;
+
+  if (ptrace (PTRACE_GETREGS, lwpid, NULL, &regs) != 0)
+    return PS_ERR;
+
+  /* IDX is the bias from the thread pointer to the beginning of the
+     thread descriptor.  It has to be subtracted due to implementation
+     quirks in libthread_db.  */
+  *base = (void *) ((char *) regs.threadptr - idx);
+
+  return PS_OK;
+}
+
+static struct regsets_info xtensa_regsets_info =
+  {
+    xtensa_regsets, /* regsets */
+    0, /* num_regsets */
+    NULL, /* disabled_regsets */
+  };
+
+static struct regs_info myregs_info =
+  {
+    NULL, /* regset_bitmap */
+    NULL, /* usrregs */
+    &xtensa_regsets_info
+  };
+
+void
+xtensa_target::low_arch_setup ()
+{
+  current_process ()->tdesc = tdesc_xtensa;
+}
+
+const regs_info *
+xtensa_target::get_regs_info ()
+{
+  return &myregs_info;
+}
+
+/* The linux target ops object.  */
+
+linux_process_target *the_linux_target = &the_xtensa_target;
+
+void
+initialize_low_arch (void)
+{
+  /* Initialize the Linux target descriptions.  */
+  init_registers_xtensa ();
+
+  initialize_regsets_info (&xtensa_regsets_info);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/Makefile.in ./gdbserver/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/Makefile.in	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/Makefile.in	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,613 @@
+# Copyright (C) 1989-2021 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/>.
+
+# Please keep lists in this file sorted alphabetically, with one item per line.
+# See gdb/Makefile.in for guidelines on ordering files and directories.
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+host_alias = @host_noncanonical@
+target_alias = @target_noncanonical@
+program_transform_name = @program_transform_name@
+bindir = @bindir@
+libdir = @libdir@
+tooldir = $(libdir)/$(target_alias)
+
+datarootdir = @datarootdir@
+datadir = @datadir@
+mandir = @mandir@
+man1dir = $(mandir)/man1
+man2dir = $(mandir)/man2
+man3dir = $(mandir)/man3
+man4dir = $(mandir)/man4
+man5dir = $(mandir)/man5
+man6dir = $(mandir)/man6
+man7dir = $(mandir)/man7
+man8dir = $(mandir)/man8
+man9dir = $(mandir)/man9
+infodir = @infodir@
+htmldir = $(prefix)/html
+includedir = @includedir@
+CONFIG_SRC_SUBDIR = @CONFIG_SRC_SUBDIR@
+
+install_sh = @install_sh@
+
+SHELL = @SHELL@
+EXEEXT = @EXEEXT@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+RANLIB = @RANLIB@
+
+CC = @CC@
+CXX = @CXX@
+CXX_DIALECT = @CXX_DIALECT@
+AR = @AR@
+AR_FLAGS = rc
+STRIP = @STRIP@
+
+# Dependency tracking information.
+DEPMODE = @CCDEPMODE@
+DEPDIR = @DEPDIR@
+depcomp = $(SHELL) $(srcdir)/../depcomp
+
+# Directory containing source files.  Don't clean up the spacing,
+# this exact string is matched for by the "configure" script.
+srcdir = @srcdir@
+abs_top_srcdir = @abs_top_srcdir@
+abs_srcdir = @abs_srcdir@
+VPATH = @srcdir@
+
+top_builddir = .
+
+include $(srcdir)/../gdb/silent-rules.mk
+
+# Note that these are overridden by GNU make-specific code below if
+# GNU make is used.  The overrides implement dependency tracking.
+COMPILE.pre = $(CXX) $(CXX_DIALECT)
+COMPILE.post = -c -o $@
+COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post)
+POSTCOMPILE = @true
+
+# It is also possible that you will need to add -I/usr/include/sys to the
+# CFLAGS section if your system doesn't have fcntl.h in /usr/include (which
+# is where it should be according to Posix).
+
+# Set this up with gcc if you have gnu ld and the loader will print out
+# line numbers for undefinded refs.
+#CC_LD = g++ -static
+CC_LD = $(CXX) $(CXX_DIALECT)
+
+# Where is the "include" directory?  Traditionally ../include or ./include
+INCLUDE_DIR = ${srcdir}/../include
+INCLUDE_DEP = $$(INCLUDE_DIR)
+
+LIBIBERTY_BUILDDIR = ../libiberty
+LIBIBERTY = $(LIBIBERTY_BUILDDIR)/libiberty.a
+
+GDBSUPPORT_BUILDDIR = ../gdbsupport
+GDBSUPPORT = $(GDBSUPPORT_BUILDDIR)/libgdbsupport.a
+
+# Where is ust?  These will be empty if ust was not available.
+ustlibs = @ustlibs@
+ustinc = @ustinc@
+
+# gnulib
+GNULIB_BUILDDIR = ../gnulib
+LIBGNU = $(GNULIB_BUILDDIR)/import/libgnu.a
+INCGNU = -I$(srcdir)/../gnulib/import -I$(GNULIB_BUILDDIR)/import
+
+# Where is the INTL library?  Typically in ../intl.
+INTL = @LIBINTL@
+INTL_DEPS = @LIBINTL_DEP@
+INTL_CFLAGS = @INCINTL@
+
+INCSUPPORT = -I$(srcdir)/.. -I..
+
+# All the includes used for CFLAGS and for lint.
+# -I. for config files.
+# -I${srcdir} for our headers.
+# -I$(srcdir)/../gdb/regformats for regdef.h.
+#
+# We do not include ../target or ../nat in here because headers
+# in those directories should be included with the subdirectory.
+# e.g.: "target/wait.h".
+#
+INCLUDE_CFLAGS = -I. -I${srcdir} \
+	-I$(srcdir)/../gdb/regformats -I$(srcdir)/.. -I$(INCLUDE_DIR) \
+	-I$(srcdir)/../gdb $(INCGNU) $(INCSUPPORT) \
+	$(INTL_CFLAGS)
+
+# M{H,T}_CFLAGS, if defined, has host- and target-dependent CFLAGS
+# from the config/ directory.
+GLOBAL_CFLAGS = ${MT_CFLAGS} ${MH_CFLAGS}
+#PROFILE_CFLAGS = -pg
+
+WARN_CFLAGS = @WARN_CFLAGS@
+WERROR_CFLAGS = @WERROR_CFLAGS@
+
+WARN_CFLAGS_NO_FORMAT = `echo " $(WARN_CFLAGS) " \
+		   | sed "s/ -Wformat-nonliteral / -Wno-format-nonliteral /g"`
+
+# These are specifically reserved for setting from the command line
+# when running make.  I.E.  "make CFLAGS=-Wmissing-prototypes".
+CFLAGS = @CFLAGS@
+CXXFLAGS = @CXXFLAGS@
+CPPFLAGS = @CPPFLAGS@
+
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+
+WIN32APILIBS = @WIN32APILIBS@
+
+# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
+INTERNAL_CFLAGS_BASE = ${CXXFLAGS} ${GLOBAL_CFLAGS} \
+	${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS} $(PTHREAD_CFLAGS)
+INTERNAL_WARN_CFLAGS = ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
+INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
+
+# LDFLAGS is specifically reserved for setting from the command line
+# when running make.
+LDFLAGS = @LDFLAGS@
+INTERNAL_LDFLAGS = $(LDFLAGS) @RDYNAMIC@
+
+# All source files that go into linking GDB remote server.
+
+SFILES = \
+	$(srcdir)/debug.cc \
+	$(srcdir)/dll.cc \
+	$(srcdir)/gdbreplay.cc \
+	$(srcdir)/hostio.cc \
+	$(srcdir)/hostio-errno.cc \
+	$(srcdir)/i387-fp.cc \
+	$(srcdir)/inferiors.cc \
+	$(srcdir)/linux-aarch64-low.cc \
+	$(srcdir)/linux-arc-low.cc \
+	$(srcdir)/linux-arm-low.cc \
+	$(srcdir)/linux-ia64-low.cc \
+	$(srcdir)/linux-low.cc \
+	$(srcdir)/linux-m68k-low.cc \
+	$(srcdir)/linux-mips-low.cc \
+	$(srcdir)/linux-nios2-low.cc \
+	$(srcdir)/linux-ppc-low.cc \
+	$(srcdir)/linux-riscv-low.cc \
+	$(srcdir)/linux-s390-low.cc \
+	$(srcdir)/linux-sh-low.cc \
+	$(srcdir)/linux-sparc-low.cc \
+	$(srcdir)/linux-x86-low.cc \
+	$(srcdir)/linux-xtensa-low.cc \
+	$(srcdir)/mem-break.cc \
+	$(srcdir)/netbsd-amd64-low.cc \
+	$(srcdir)/netbsd-low.cc \
+	$(srcdir)/netbsd-low.h \
+	$(srcdir)/proc-service.cc \
+	$(srcdir)/proc-service.list \
+	$(srcdir)/regcache.cc \
+	$(srcdir)/remote-utils.cc \
+	$(srcdir)/server.cc \
+	$(srcdir)/symbol.cc \
+	$(srcdir)/target.cc \
+	$(srcdir)/thread-db.cc \
+	$(srcdir)/utils.cc \
+	$(srcdir)/win32-i386-low.cc \
+	$(srcdir)/win32-low.cc \
+	$(srcdir)/x86-low.cc \
+	$(srcdir)/../gdb/alloc.c \
+	$(srcdir)/../gdb/arch/arc.c \
+	$(srcdir)/../gdb/arch/arm.c \
+	$(srcdir)/../gdb/arch/arm-get-next-pcs.c \
+	$(srcdir)/../gdb/arch/arm-linux.c \
+	$(srcdir)/../gdb/arch/ppc-linux-common.c \
+	$(srcdir)/../gdb/arch/riscv.c \
+	$(srcdir)/../gdb/nat/aarch64-sve-linux-ptrace.c \
+	$(srcdir)/../gdb/nat/linux-btrace.c \
+	$(srcdir)/../gdb/nat/linux-namespaces.c \
+	$(srcdir)/../gdb/nat/linux-osdata.c \
+	$(srcdir)/../gdb/nat/linux-personality.c \
+	$(srcdir)/../gdb/nat/mips-linux-watch.c \
+	$(srcdir)/../gdb/nat/ppc-linux.c \
+	$(srcdir)/../gdb/nat/riscv-linux-tdesc.c \
+	$(srcdir)/../gdb/nat/fork-inferior.c \
+	$(srcdir)/../gdb/target/waitstatus.c
+
+DEPFILES = @GDBSERVER_DEPFILES@
+
+LIBOBJS = @LIBOBJS@
+
+SOURCES = $(SFILES)
+TAGFILES = $(SOURCES) ${HFILES} ${ALLPARAM} ${POSSLIBS}
+
+OBS = \
+	alloc.o \
+	ax.o \
+	debug.o \
+	dll.o \
+	hostio.o \
+	inferiors.o \
+	mem-break.o \
+	notif.o \
+	regcache.o \
+	remote-utils.o \
+	server.o \
+	symbol.o \
+	target.o \
+	tdesc.o \
+	tracepoint.o \
+	utils.o \
+	version.o \
+	target/waitstatus.o \
+	$(DEPFILES) \
+	$(LIBOBJS) \
+	$(XML_BUILTIN)
+
+GDBREPLAY_OBS = \
+	gdbreplay.o \
+	utils.o \
+	version.o
+
+GDBSERVER_LIBS = @GDBSERVER_LIBS@ $(PTHREAD_LIBS)
+XM_CLIBS = @LIBS@
+CDEPS = $(srcdir)/proc-service.list
+
+# XML files to compile in to gdbserver, if any.
+XML_DIR = $(srcdir)/../gdb/features
+XML_FILES = @srv_xmlfiles@
+XML_BUILTIN = @srv_xmlbuiltin@
+
+IPA_DEPFILES = @IPA_DEPFILES@
+extra_libraries = @extra_libraries@
+
+FLAGS_TO_PASS = \
+	"prefix=$(prefix)" \
+	"exec_prefix=$(exec_prefix)" \
+	"infodir=$(infodir)" \
+	"datarootdir=$(datarootdir)" \
+	"docdir=$(docdir)" \
+	"htmldir=$(htmldir)" \
+	"pdfdir=$(pdfdir)" \
+	"libdir=$(libdir)" \
+	"mandir=$(mandir)" \
+	"datadir=$(datadir)" \
+	"includedir=$(includedir)" \
+	"against=$(against)" \
+	"DESTDIR=$(DESTDIR)" \
+	"AR=$(AR)" \
+	"AR_FLAGS=$(AR_FLAGS)" \
+	"CC=$(CC)" \
+	"CFLAGS=$(CFLAGS)" \
+	"CXX=$(CXX)" \
+	"CXXFLAGS=$(CXXFLAGS)" \
+	"DLLTOOL=$(DLLTOOL)" \
+	"LDFLAGS=$(LDFLAGS)" \
+	"RANLIB=$(RANLIB)" \
+	"MAKEINFO=$(MAKEINFO)" \
+	"MAKEHTML=$(MAKEHTML)" \
+	"MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \
+	"INSTALL=$(INSTALL)" \
+	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
+	"INSTALL_DATA=$(INSTALL_DATA)" \
+	"RUNTEST=$(RUNTEST)" \
+	"RUNTESTFLAGS=$(RUNTESTFLAGS)"
+
+# All generated files which can be included by another file.
+generated_files = config.h
+
+all: gdbserver$(EXEEXT) gdbreplay$(EXEEXT) $(extra_libraries)
+
+# Traditionally "install" depends on "all".  But it may be useful
+# not to; for example, if the user has made some trivial change to a
+# source file and doesn't care about rebuilding or just wants to save the
+# time it takes for make to check that all is up to date.
+# install-only is intended to address that need.
+install: all
+	@$(MAKE) $(FLAGS_TO_PASS) install-only
+
+install-only:
+	n=`echo gdbserver | sed '$(program_transform_name)'`; \
+	if [ x$$n = x ]; then n=gdbserver; else true; fi; \
+	if [ x"$(IPA_DEPFILES)" != x ]; then \
+		$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(libdir); \
+		$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $(IPA_LIB) $(DESTDIR)$(libdir)/$(IPA_LIB); \
+	fi; \
+	$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir); \
+	$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) gdbserver$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
+
+install-strip:
+	$(MAKE) $(FLAGS_TO_PASS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install-only
+
+uninstall: force
+	n=`echo gdbserver | sed '$(program_transform_name)'`; \
+	if [ x$$n = x ]; then n=gdbserver; else true; fi; \
+	rm -f $(DESTDIR)/$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(man1dir)/$$n.1
+
+installcheck:
+check:
+info dvi pdf:
+install-info:
+install-pdf:
+html:
+install-html:
+clean-info:
+
+gdbserver$(EXEEXT): $(sort $(OBS)) ${CDEPS} $(LIBGNU) $(LIBIBERTY) \
+		$(INTL_DEPS) $(GDBSUPPORT)
+	$(SILENCE) rm -f gdbserver$(EXEEXT)
+	$(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
+		-o gdbserver$(EXEEXT) $(OBS) $(GDBSUPPORT) $(LIBGNU) \
+		$(LIBIBERTY) $(INTL) $(GDBSERVER_LIBS) $(XM_CLIBS) \
+		$(WIN32APILIBS)
+
+gdbreplay$(EXEEXT): $(sort $(GDBREPLAY_OBS)) $(LIBGNU) $(LIBIBERTY) \
+		$(INTL_DEPS) $(GDBSUPPORT)
+	$(SILENCE) rm -f gdbreplay$(EXEEXT)
+	$(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
+		-o gdbreplay$(EXEEXT) $(GDBREPLAY_OBS) $(XM_CLIBS) \
+		$(GDBSUPPORT) $(LIBGNU) $(LIBIBERTY) $(INTL) \
+		$(WIN32APILIBS)
+
+IPA_OBJS = \
+	alloc-ipa.o \
+	ax-ipa.o \
+	gdbsupport/common-utils-ipa.o \
+	gdbsupport/errors-ipa.o \
+	gdbsupport/format-ipa.o \
+	gdbsupport/print-utils-ipa.o \
+	gdbsupport/rsp-low-ipa.o \
+	gdbsupport/safe-strerror-ipa.o \
+	gdbsupport/tdesc-ipa.o \
+	regcache-ipa.o \
+	remote-utils-ipa.o \
+	tdesc-ipa.o \
+	tracepoint-ipa.o \
+	utils-ipa.o \
+	${IPA_DEPFILES}
+
+IPA_LIB = libinproctrace.so
+
+$(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS}
+	$(SILENCE) rm -f $(IPA_LIB)
+	$(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \
+		-Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
+		-o $(IPA_LIB) ${IPA_OBJS} -ldl -pthread
+
+# Put the proper machine-specific files first, so M-. on a machine
+# specific routine gets the one for the correct machine.
+# The xyzzy stuff below deals with empty DEPFILES
+TAGS:	${TAGFILES}
+	etags \
+	  `for i in yzzy ${DEPFILES}; do \
+	     if [ x$$i != xyzzy ]; then \
+	       echo ${srcdir}/$$i | sed -e 's/\.o$$/\.cc/' \
+		 -e 's,/\(arch\|nat\|target\)/,/../\1/,' \
+	     fi; \
+	   done` \
+	  ${TAGFILES}
+tags: TAGS
+
+mostlyclean clean:
+	rm -f *.o ${ADD_FILES} *~
+	rm -f gdbserver$(EXEEXT) gdbreplay$(EXEEXT) core make.log
+	rm -f $(IPA_LIB)
+	rm -f *-generated.cc
+	rm -f stamp-xml
+	rm -f $(DEPDIR)/*.Po
+	for i in $(CONFIG_SRC_SUBDIR); do \
+		rm -f $$i/*.o;	\
+		rm -f $$i/$(DEPDIR)/*; \
+	done
+
+maintainer-clean realclean distclean: clean
+	rm -f Makefile config.status config.h stamp-h config.log
+	rm -f Makefile
+	for i in $(CONFIG_SRC_SUBDIR); do \
+		rmdir $$i/$(DEPDIR); \
+	done
+
+config.h: stamp-h ; @true
+stamp-h: config.in config.status
+	$(SHELL) ./config.status config.h
+
+Makefile: Makefile.in config.status
+	$(SHELL) ./config.status $@
+
+config.status: configure configure.srv $(srcdir)/../bfd/development.sh
+	$(SHELL) ./config.status --recheck
+
+# automatic rebuilding in automake-generated Makefiles requires
+# this rule in the toplevel Makefile, which, with GNU make, causes
+# the desired updates through the implicit regeneration of the Makefile
+# and all of its prerequisites.
+am--refresh:
+	@:
+
+force:
+
+version-generated.cc: Makefile $(srcdir)/../gdb/version.in $(srcdir)/../bfd/version.h $(srcdir)/../gdbsupport/create-version.sh
+	$(ECHO_GEN) $(SHELL) $(srcdir)/../gdbsupport/create-version.sh $(srcdir)/../gdb \
+		$(host_alias) $(target_alias) $@
+
+xml-builtin-generated.cc: stamp-xml; @true
+stamp-xml: $(XML_DIR)/feature_to_c.sh Makefile $(XML_FILES)
+	$(SILENCE) rm -f xml-builtin.tmp
+	$(ECHO_GEN_XML_BUILTIN_GENERATED) $(SHELL) $(XML_DIR)/feature_to_c.sh \
+		xml-builtin.tmp $(XML_FILES)
+	$(SILENCE) $(SHELL) $(srcdir)/../move-if-change xml-builtin.tmp xml-builtin-generated.cc
+	$(SILENCE) echo stamp > stamp-xml
+
+.PRECIOUS: xml-builtin.cc
+
+# GNU Make has an annoying habit of putting *all* the Makefile variables
+# into the environment, unless you include this target as a circumvention.
+# Rumor is that this will be fixed (and this target can be removed)
+# in GNU Make 4.0.
+.NOEXPORT:
+
+# GNU Make 3.63 has a different problem: it keeps tacking command line
+# overrides onto the definition of $(MAKE).  This variable setting
+# will remove them.
+MAKEOVERRIDES =
+
+regdat_sh = $(srcdir)/../gdb/regformats/regdat.sh
+
+UST_CFLAGS = $(ustinc) -DCONFIG_UST_GDB_INTEGRATION
+
+# Undo gnulib replacements for the IPA shared library build.
+# The gnulib headers are still needed, but gnulib is not linked
+# into the IPA lib so replacement apis don't work.
+UNDO_GNULIB_CFLAGS = -Drpl_strerror_r=strerror_r
+
+# Note, we only build the IPA if -fvisibility=hidden is supported in
+# the first place.
+IPAGENT_CFLAGS = $(INTERNAL_CFLAGS) $(UST_CFLAGS) \
+	$(UNDO_GNULIB_CFLAGS) \
+	-fPIC -DIN_PROCESS_AGENT \
+	-fvisibility=hidden
+
+IPAGENT_COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(IPAGENT_CFLAGS) $(COMPILE.post)
+
+# Rules for special cases.
+
+ax-ipa.o: ax.cc
+	$(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
+	$(POSTCOMPILE)
+
+ax.o: ax.cc
+	$(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
+	$(POSTCOMPILE)
+
+# Rules for objects that go in the in-process agent.
+
+arch/%-ipa.o: ../gdb/arch/%.c
+	$(IPAGENT_COMPILE) -x c++ $<
+	$(POSTCOMPILE)
+
+gdbsupport/%-ipa.o: ../gdbsupport/%.cc
+	$(IPAGENT_COMPILE) $<
+	$(POSTCOMPILE)
+
+%-ipa.o: %-generated.cc
+	$(IPAGENT_COMPILE) $<
+	$(POSTCOMPILE)
+
+%-ipa.o: %.cc
+	$(IPAGENT_COMPILE) $<
+	$(POSTCOMPILE)
+
+%-ipa.o: ../gdb/%.c
+	$(IPAGENT_COMPILE) -x c++ $<
+	$(POSTCOMPILE)
+
+# Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one.
+# Therefore, this one needs to be before "%.o: %.cc" for it to be considered for
+# files such as linux-amd64-ipa.o generated from linux-amd64-ipa.cc.
+#
+# Later versions of GNU Make choose the rule with the shortest stem, so it would
+# work in any order.
+
+%-ipa.o: %-ipa.cc
+	$(IPAGENT_COMPILE) $<
+	$(POSTCOMPILE)
+
+# Rules for objects that go in the gdbserver binary.
+
+arch/%.o: ../gdb/arch/%.c
+	$(COMPILE) -x c++ $<
+	$(POSTCOMPILE)
+
+%.o: %-generated.cc
+	$(COMPILE) $<
+	$(POSTCOMPILE)
+
+%.o: %.cc
+	$(COMPILE) $<
+	$(POSTCOMPILE)
+
+nat/%.o: ../gdb/nat/%.c
+	$(COMPILE) -x c++ $<
+	$(POSTCOMPILE)
+
+target/%.o: ../gdb/target/%.c
+	$(COMPILE) -x c++ $<
+	$(POSTCOMPILE)
+
+%.o: ../gdb/%.c
+	$(COMPILE) -x c++ $<
+	$(POSTCOMPILE)
+
+# Rules for register format descriptions.  Suffix destination files with
+# -generated to identify and clean them easily.
+
+%-generated.cc: ../gdb/regformats/%.dat $(regdat_sh)
+	$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
+
+%-generated.cc: ../gdb/regformats/rs6000/%.dat $(regdat_sh)
+	$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
+
+#
+# Dependency tracking.
+#
+
+ifeq ($(DEPMODE),depmode=gcc3)
+# Note that we put the dependencies into a .Tpo file, then move them
+# into place if the compile succeeds.  We need this because gcc does
+# not atomically write the dependency output file.
+override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
+	-MF $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo
+override POSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo \
+	$(@D)/$(DEPDIR)/$(basename $(@F)).Po
+else
+override COMPILE.pre = source='$<' object='$@' libtool=no \
+	DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) \
+	$(CXX) $(CXX_DIALECT)
+# depcomp handles atomicity for us, so we don't need a postcompile
+# step.
+override POSTCOMPILE =
+endif
+
+# A list of all the objects we might care about in this build, for
+# dependency tracking.
+all_object_files = $(OBS) $(GDBREPLAY_OBS) $(IPA_OBJS)
+
+# Ensure that generated files are created early.  Use order-only
+# dependencies if available.  They require GNU make 3.80 or newer,
+# and the .VARIABLES variable was introduced at the same time.
+ifdef .VARIABLES
+$(all_object_files): | $(generated_files)
+else
+$(all_object_files) : $(generated_files)
+endif
+
+# All the .deps files to include.
+all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\
+		   $(dir $(dep))/$(DEPDIR)/$(notdir $(dep)))
+
+# Dependencies.
+-include $(all_deps_files)
+
+# Disable implicit make rules.
+include $(srcdir)/../gdb/disable-implicit-rules.mk
+
+# Do not delete intermediate files (e.g. *-generated.cc).
+.SECONDARY:
+
+# This is the end of "Makefile.in".
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/mem-break.cc ./gdbserver/mem-break.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/mem-break.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/mem-break.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,2236 @@
+/* Memory breakpoint operations for the remote server for GDB.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
+
+   Contributed by MontaVista Software.
+
+   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 "server.h"
+#include "regcache.h"
+#include "ax.h"
+
+#define MAX_BREAKPOINT_LEN 8
+
+/* Helper macro used in loops that append multiple items to a singly-linked
+   list instead of inserting items at the head of the list, as, say, in the
+   breakpoint lists.  LISTPP is a pointer to the pointer that is the head of
+   the new list.  ITEMP is a pointer to the item to be added to the list.
+   TAILP must be defined to be the same type as ITEMP, and initialized to
+   NULL.  */
+
+#define APPEND_TO_LIST(listpp, itemp, tailp) \
+	  do \
+	    { \
+	      if ((tailp) == NULL) \
+		*(listpp) = (itemp); \
+	      else \
+		(tailp)->next = (itemp); \
+	      (tailp) = (itemp); \
+	    } \
+	  while (0)
+
+/* GDB will never try to install multiple breakpoints at the same
+   address.  However, we can see GDB requesting to insert a breakpoint
+   at an address is had already inserted one previously in a few
+   situations.
+
+   - The RSP documentation on Z packets says that to avoid potential
+   problems with duplicate packets, the operations should be
+   implemented in an idempotent way.
+
+   - A breakpoint is set at ADDR, an address in a shared library.
+   Then the shared library is unloaded.  And then another, unrelated,
+   breakpoint at ADDR is set.  There is not breakpoint removal request
+   between the first and the second breakpoint.
+
+   - When GDB wants to update the target-side breakpoint conditions or
+   commands, it re-inserts the breakpoint, with updated
+   conditions/commands associated.
+
+   Also, we need to keep track of internal breakpoints too, so we do
+   need to be able to install multiple breakpoints at the same address
+   transparently.
+
+   We keep track of two different, and closely related structures.  A
+   raw breakpoint, which manages the low level, close to the metal
+   aspect of a breakpoint.  It holds the breakpoint address, and for
+   software breakpoints, a buffer holding a copy of the instructions
+   that would be in memory had not been a breakpoint there (we call
+   that the shadow memory of the breakpoint).  We occasionally need to
+   temporarilly uninsert a breakpoint without the client knowing about
+   it (e.g., to step over an internal breakpoint), so we keep an
+   `inserted' state associated with this low level breakpoint
+   structure.  There can only be one such object for a given address.
+   Then, we have (a bit higher level) breakpoints.  This structure
+   holds a callback to be called whenever a breakpoint is hit, a
+   high-level type, and a link to a low level raw breakpoint.  There
+   can be many high-level breakpoints at the same address, and all of
+   them will point to the same raw breakpoint, which is reference
+   counted.  */
+
+/* The low level, physical, raw breakpoint.  */
+struct raw_breakpoint
+{
+  struct raw_breakpoint *next;
+
+  /* The low level type of the breakpoint (software breakpoint,
+     watchpoint, etc.)  */
+  enum raw_bkpt_type raw_type;
+
+  /* A reference count.  Each high level breakpoint referencing this
+     raw breakpoint accounts for one reference.  */
+  int refcount;
+
+  /* The breakpoint's insertion address.  There can only be one raw
+     breakpoint for a given PC.  */
+  CORE_ADDR pc;
+
+  /* The breakpoint's kind.  This is target specific.  Most
+     architectures only use one specific instruction for breakpoints, while
+     others may use more than one.  E.g., on ARM, we need to use different
+     breakpoint instructions on Thumb, Thumb-2, and ARM code.  Likewise for
+     hardware breakpoints -- some architectures (including ARM) need to
+     setup debug registers differently depending on mode.  */
+  int kind;
+
+  /* The breakpoint's shadow memory.  */
+  unsigned char old_data[MAX_BREAKPOINT_LEN];
+
+  /* Positive if this breakpoint is currently inserted in the
+     inferior.  Negative if it was, but we've detected that it's now
+     gone.  Zero if not inserted.  */
+  int inserted;
+};
+
+/* The type of a breakpoint.  */
+enum bkpt_type
+  {
+    /* A GDB breakpoint, requested with a Z0 packet.  */
+    gdb_breakpoint_Z0,
+
+    /* A GDB hardware breakpoint, requested with a Z1 packet.  */
+    gdb_breakpoint_Z1,
+
+    /* A GDB write watchpoint, requested with a Z2 packet.  */
+    gdb_breakpoint_Z2,
+
+    /* A GDB read watchpoint, requested with a Z3 packet.  */
+    gdb_breakpoint_Z3,
+
+    /* A GDB access watchpoint, requested with a Z4 packet.  */
+    gdb_breakpoint_Z4,
+
+    /* A software single-step breakpoint.  */
+    single_step_breakpoint,
+
+    /* Any other breakpoint type that doesn't require specific
+       treatment goes here.  E.g., an event breakpoint.  */
+    other_breakpoint,
+  };
+
+struct point_cond_list
+{
+  /* Pointer to the agent expression that is the breakpoint's
+     conditional.  */
+  struct agent_expr *cond;
+
+  /* Pointer to the next condition.  */
+  struct point_cond_list *next;
+};
+
+struct point_command_list
+{
+  /* Pointer to the agent expression that is the breakpoint's
+     commands.  */
+  struct agent_expr *cmd;
+
+  /* Flag that is true if this command should run even while GDB is
+     disconnected.  */
+  int persistence;
+
+  /* Pointer to the next command.  */
+  struct point_command_list *next;
+};
+
+/* A high level (in gdbserver's perspective) breakpoint.  */
+struct breakpoint
+{
+  struct breakpoint *next;
+
+  /* The breakpoint's type.  */
+  enum bkpt_type type;
+
+  /* Link to this breakpoint's raw breakpoint.  This is always
+     non-NULL.  */
+  struct raw_breakpoint *raw;
+};
+
+/* Breakpoint requested by GDB.  */
+
+struct gdb_breakpoint
+{
+  struct breakpoint base;
+
+  /* Pointer to the condition list that should be evaluated on
+     the target or NULL if the breakpoint is unconditional or
+     if GDB doesn't want us to evaluate the conditionals on the
+     target's side.  */
+  struct point_cond_list *cond_list;
+
+  /* Point to the list of commands to run when this is hit.  */
+  struct point_command_list *command_list;
+};
+
+/* Breakpoint used by GDBserver.  */
+
+struct other_breakpoint
+{
+  struct breakpoint base;
+
+  /* Function to call when we hit this breakpoint.  If it returns 1,
+     the breakpoint shall be deleted; 0 or if this callback is NULL,
+     it will be left inserted.  */
+  int (*handler) (CORE_ADDR);
+};
+
+/* Breakpoint for single step.  */
+
+struct single_step_breakpoint
+{
+  struct breakpoint base;
+
+  /* Thread the reinsert breakpoint belongs to.  */
+  ptid_t ptid;
+};
+
+/* Return the breakpoint size from its kind.  */
+
+static int
+bp_size (struct raw_breakpoint *bp)
+{
+  int size = 0;
+
+  the_target->sw_breakpoint_from_kind (bp->kind, &size);
+  return size;
+}
+
+/* Return the breakpoint opcode from its kind.  */
+
+static const gdb_byte *
+bp_opcode (struct raw_breakpoint *bp)
+{
+  int size = 0;
+
+  return the_target->sw_breakpoint_from_kind (bp->kind, &size);
+}
+
+/* See mem-break.h.  */
+
+enum target_hw_bp_type
+raw_bkpt_type_to_target_hw_bp_type (enum raw_bkpt_type raw_type)
+{
+  switch (raw_type)
+    {
+    case raw_bkpt_type_hw:
+      return hw_execute;
+    case raw_bkpt_type_write_wp:
+      return hw_write;
+    case raw_bkpt_type_read_wp:
+      return hw_read;
+    case raw_bkpt_type_access_wp:
+      return hw_access;
+    default:
+      internal_error (__FILE__, __LINE__,
+		      "bad raw breakpoint type %d", (int) raw_type);
+    }
+}
+
+/* See mem-break.h.  */
+
+static enum bkpt_type
+Z_packet_to_bkpt_type (char z_type)
+{
+  gdb_assert ('0' <= z_type && z_type <= '4');
+
+  return (enum bkpt_type) (gdb_breakpoint_Z0 + (z_type - '0'));
+}
+
+/* See mem-break.h.  */
+
+enum raw_bkpt_type
+Z_packet_to_raw_bkpt_type (char z_type)
+{
+  switch (z_type)
+    {
+    case Z_PACKET_SW_BP:
+      return raw_bkpt_type_sw;
+    case Z_PACKET_HW_BP:
+      return raw_bkpt_type_hw;
+    case Z_PACKET_WRITE_WP:
+      return raw_bkpt_type_write_wp;
+    case Z_PACKET_READ_WP:
+      return raw_bkpt_type_read_wp;
+    case Z_PACKET_ACCESS_WP:
+      return raw_bkpt_type_access_wp;
+    default:
+      gdb_assert_not_reached ("unhandled Z packet type.");
+    }
+}
+
+/* Return true if breakpoint TYPE is a GDB breakpoint.  */
+
+static int
+is_gdb_breakpoint (enum bkpt_type type)
+{
+  return (type == gdb_breakpoint_Z0
+	  || type == gdb_breakpoint_Z1
+	  || type == gdb_breakpoint_Z2
+	  || type == gdb_breakpoint_Z3
+	  || type == gdb_breakpoint_Z4);
+}
+
+bool
+any_persistent_commands (process_info *proc)
+{
+  struct breakpoint *bp;
+  struct point_command_list *cl;
+
+  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
+    {
+      if (is_gdb_breakpoint (bp->type))
+	{
+	  struct gdb_breakpoint *gdb_bp = (struct gdb_breakpoint *) bp;
+
+	  for (cl = gdb_bp->command_list; cl != NULL; cl = cl->next)
+	    if (cl->persistence)
+	      return true;
+	}
+    }
+
+  return false;
+}
+
+/* Find low-level breakpoint of type TYPE at address ADDR that is not
+   insert-disabled.  Returns NULL if not found.  */
+
+static struct raw_breakpoint *
+find_enabled_raw_code_breakpoint_at (CORE_ADDR addr, enum raw_bkpt_type type)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+
+  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
+    if (bp->pc == addr
+	&& bp->raw_type == type
+	&& bp->inserted >= 0)
+      return bp;
+
+  return NULL;
+}
+
+/* Find low-level breakpoint of type TYPE at address ADDR.  Returns
+   NULL if not found.  */
+
+static struct raw_breakpoint *
+find_raw_breakpoint_at (CORE_ADDR addr, enum raw_bkpt_type type, int kind)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+
+  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
+    if (bp->pc == addr && bp->raw_type == type && bp->kind == kind)
+      return bp;
+
+  return NULL;
+}
+
+/* See mem-break.h.  */
+
+int
+insert_memory_breakpoint (struct raw_breakpoint *bp)
+{
+  unsigned char buf[MAX_BREAKPOINT_LEN];
+  int err;
+
+  /* Note that there can be fast tracepoint jumps installed in the
+     same memory range, so to get at the original memory, we need to
+     use read_inferior_memory, which masks those out.  */
+  err = read_inferior_memory (bp->pc, buf, bp_size (bp));
+  if (err != 0)
+    {
+      if (debug_threads)
+	debug_printf ("Failed to read shadow memory of"
+		      " breakpoint at 0x%s (%s).\n",
+		      paddress (bp->pc), safe_strerror (err));
+    }
+  else
+    {
+      memcpy (bp->old_data, buf, bp_size (bp));
+
+      err = the_target->write_memory (bp->pc, bp_opcode (bp),
+				      bp_size (bp));
+      if (err != 0)
+	{
+	  if (debug_threads)
+	    debug_printf ("Failed to insert breakpoint at 0x%s (%s).\n",
+			  paddress (bp->pc), safe_strerror (err));
+	}
+    }
+  return err != 0 ? -1 : 0;
+}
+
+/* See mem-break.h  */
+
+int
+remove_memory_breakpoint (struct raw_breakpoint *bp)
+{
+  unsigned char buf[MAX_BREAKPOINT_LEN];
+  int err;
+
+  /* Since there can be trap breakpoints inserted in the same address
+     range, we use `target_write_memory', which takes care of
+     layering breakpoints on top of fast tracepoints, and on top of
+     the buffer we pass it.  This works because the caller has already
+     either unlinked the breakpoint or marked it uninserted.  Also
+     note that we need to pass the current shadow contents, because
+     target_write_memory updates any shadow memory with what we pass
+     here, and we want that to be a nop.  */
+  memcpy (buf, bp->old_data, bp_size (bp));
+  err = target_write_memory (bp->pc, buf, bp_size (bp));
+  if (err != 0)
+    {
+      if (debug_threads)
+	debug_printf ("Failed to uninsert raw breakpoint "
+		      "at 0x%s (%s) while deleting it.\n",
+		      paddress (bp->pc), safe_strerror (err));
+    }
+  return err != 0 ? -1 : 0;
+}
+
+/* Set a RAW breakpoint of type TYPE and kind KIND at WHERE.  On
+   success, a pointer to the new breakpoint is returned.  On failure,
+   returns NULL and writes the error code to *ERR.  */
+
+static struct raw_breakpoint *
+set_raw_breakpoint_at (enum raw_bkpt_type type, CORE_ADDR where, int kind,
+		       int *err)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+
+  if (type == raw_bkpt_type_sw || type == raw_bkpt_type_hw)
+    {
+      bp = find_enabled_raw_code_breakpoint_at (where, type);
+      if (bp != NULL && bp->kind != kind)
+	{
+	  /* A different kind than previously seen.  The previous
+	     breakpoint must be gone then.  */
+	  if (debug_threads)
+	    debug_printf ("Inconsistent breakpoint kind?  Was %d, now %d.\n",
+			  bp->kind, kind);
+	  bp->inserted = -1;
+	  bp = NULL;
+	}
+    }
+  else
+    bp = find_raw_breakpoint_at (where, type, kind);
+
+  gdb::unique_xmalloc_ptr<struct raw_breakpoint> bp_holder;
+  if (bp == NULL)
+    {
+      bp_holder.reset (XCNEW (struct raw_breakpoint));
+      bp = bp_holder.get ();
+      bp->pc = where;
+      bp->kind = kind;
+      bp->raw_type = type;
+    }
+
+  if (!bp->inserted)
+    {
+      *err = the_target->insert_point (bp->raw_type, bp->pc, bp->kind, bp);
+      if (*err != 0)
+	{
+	  if (debug_threads)
+	    debug_printf ("Failed to insert breakpoint at 0x%s (%d).\n",
+			  paddress (where), *err);
+
+	  return NULL;
+	}
+
+      bp->inserted = 1;
+    }
+
+  /* If the breakpoint was allocated above, we know we want to keep it
+     now.  */
+  bp_holder.release ();
+
+  /* Link the breakpoint in, if this is the first reference.  */
+  if (++bp->refcount == 1)
+    {
+      bp->next = proc->raw_breakpoints;
+      proc->raw_breakpoints = bp;
+    }
+  return bp;
+}
+
+/* Notice that breakpoint traps are always installed on top of fast
+   tracepoint jumps.  This is even if the fast tracepoint is installed
+   at a later time compared to when the breakpoint was installed.
+   This means that a stopping breakpoint or tracepoint has higher
+   "priority".  In turn, this allows having fast and slow tracepoints
+   (and breakpoints) at the same address behave correctly.  */
+
+
+/* A fast tracepoint jump.  */
+
+struct fast_tracepoint_jump
+{
+  struct fast_tracepoint_jump *next;
+
+  /* A reference count.  GDB can install more than one fast tracepoint
+     at the same address (each with its own action list, for
+     example).  */
+  int refcount;
+
+  /* The fast tracepoint's insertion address.  There can only be one
+     of these for a given PC.  */
+  CORE_ADDR pc;
+
+  /* Non-zero if this fast tracepoint jump is currently inserted in
+     the inferior.  */
+  int inserted;
+
+  /* The length of the jump instruction.  */
+  int length;
+
+  /* A poor-man's flexible array member, holding both the jump
+     instruction to insert, and a copy of the instruction that would
+     be in memory had not been a jump there (the shadow memory of the
+     tracepoint jump).  */
+  unsigned char insn_and_shadow[0];
+};
+
+/* Fast tracepoint FP's jump instruction to insert.  */
+#define fast_tracepoint_jump_insn(fp) \
+  ((fp)->insn_and_shadow + 0)
+
+/* The shadow memory of fast tracepoint jump FP.  */
+#define fast_tracepoint_jump_shadow(fp) \
+  ((fp)->insn_and_shadow + (fp)->length)
+
+
+/* Return the fast tracepoint jump set at WHERE.  */
+
+static struct fast_tracepoint_jump *
+find_fast_tracepoint_jump_at (CORE_ADDR where)
+{
+  struct process_info *proc = current_process ();
+  struct fast_tracepoint_jump *jp;
+
+  for (jp = proc->fast_tracepoint_jumps; jp != NULL; jp = jp->next)
+    if (jp->pc == where)
+      return jp;
+
+  return NULL;
+}
+
+int
+fast_tracepoint_jump_here (CORE_ADDR where)
+{
+  struct fast_tracepoint_jump *jp = find_fast_tracepoint_jump_at (where);
+
+  return (jp != NULL);
+}
+
+int
+delete_fast_tracepoint_jump (struct fast_tracepoint_jump *todel)
+{
+  struct fast_tracepoint_jump *bp, **bp_link;
+  int ret;
+  struct process_info *proc = current_process ();
+
+  bp = proc->fast_tracepoint_jumps;
+  bp_link = &proc->fast_tracepoint_jumps;
+
+  while (bp)
+    {
+      if (bp == todel)
+	{
+	  if (--bp->refcount == 0)
+	    {
+	      struct fast_tracepoint_jump *prev_bp_link = *bp_link;
+	      unsigned char *buf;
+
+	      /* Unlink it.  */
+	      *bp_link = bp->next;
+
+	      /* Since there can be breakpoints inserted in the same
+		 address range, we use `target_write_memory', which
+		 takes care of layering breakpoints on top of fast
+		 tracepoints, and on top of the buffer we pass it.
+		 This works because we've already unlinked the fast
+		 tracepoint jump above.  Also note that we need to
+		 pass the current shadow contents, because
+		 target_write_memory updates any shadow memory with
+		 what we pass here, and we want that to be a nop.  */
+	      buf = (unsigned char *) alloca (bp->length);
+	      memcpy (buf, fast_tracepoint_jump_shadow (bp), bp->length);
+	      ret = target_write_memory (bp->pc, buf, bp->length);
+	      if (ret != 0)
+		{
+		  /* Something went wrong, relink the jump.  */
+		  *bp_link = prev_bp_link;
+
+		  if (debug_threads)
+		    debug_printf ("Failed to uninsert fast tracepoint jump "
+				  "at 0x%s (%s) while deleting it.\n",
+				  paddress (bp->pc), safe_strerror (ret));
+		  return ret;
+		}
+
+	      free (bp);
+	    }
+
+	  return 0;
+	}
+      else
+	{
+	  bp_link = &bp->next;
+	  bp = *bp_link;
+	}
+    }
+
+  warning ("Could not find fast tracepoint jump in list.");
+  return ENOENT;
+}
+
+void
+inc_ref_fast_tracepoint_jump (struct fast_tracepoint_jump *jp)
+{
+  jp->refcount++;
+}
+
+struct fast_tracepoint_jump *
+set_fast_tracepoint_jump (CORE_ADDR where,
+			  unsigned char *insn, ULONGEST length)
+{
+  struct process_info *proc = current_process ();
+  struct fast_tracepoint_jump *jp;
+  int err;
+  unsigned char *buf;
+
+  /* We refcount fast tracepoint jumps.  Check if we already know
+     about a jump at this address.  */
+  jp = find_fast_tracepoint_jump_at (where);
+  if (jp != NULL)
+    {
+      jp->refcount++;
+      return jp;
+    }
+
+  /* We don't, so create a new object.  Double the length, because the
+     flexible array member holds both the jump insn, and the
+     shadow.  */
+  jp = (struct fast_tracepoint_jump *) xcalloc (1, sizeof (*jp) + (length * 2));
+  jp->pc = where;
+  jp->length = length;
+  memcpy (fast_tracepoint_jump_insn (jp), insn, length);
+  jp->refcount = 1;
+  buf = (unsigned char *) alloca (length);
+
+  /* Note that there can be trap breakpoints inserted in the same
+     address range.  To access the original memory contents, we use
+     `read_inferior_memory', which masks out breakpoints.  */
+  err = read_inferior_memory (where, buf, length);
+  if (err != 0)
+    {
+      if (debug_threads)
+	debug_printf ("Failed to read shadow memory of"
+		      " fast tracepoint at 0x%s (%s).\n",
+		      paddress (where), safe_strerror (err));
+      free (jp);
+      return NULL;
+    }
+  memcpy (fast_tracepoint_jump_shadow (jp), buf, length);
+
+  /* Link the jump in.  */
+  jp->inserted = 1;
+  jp->next = proc->fast_tracepoint_jumps;
+  proc->fast_tracepoint_jumps = jp;
+
+  /* Since there can be trap breakpoints inserted in the same address
+     range, we use use `target_write_memory', which takes care of
+     layering breakpoints on top of fast tracepoints, on top of the
+     buffer we pass it.  This works because we've already linked in
+     the fast tracepoint jump above.  Also note that we need to pass
+     the current shadow contents, because target_write_memory
+     updates any shadow memory with what we pass here, and we want
+     that to be a nop.  */
+  err = target_write_memory (where, buf, length);
+  if (err != 0)
+    {
+      if (debug_threads)
+	debug_printf ("Failed to insert fast tracepoint jump at 0x%s (%s).\n",
+		      paddress (where), safe_strerror (err));
+
+      /* Unlink it.  */
+      proc->fast_tracepoint_jumps = jp->next;
+      free (jp);
+
+      return NULL;
+    }
+
+  return jp;
+}
+
+void
+uninsert_fast_tracepoint_jumps_at (CORE_ADDR pc)
+{
+  struct fast_tracepoint_jump *jp;
+  int err;
+
+  jp = find_fast_tracepoint_jump_at (pc);
+  if (jp == NULL)
+    {
+      /* This can happen when we remove all breakpoints while handling
+	 a step-over.  */
+      if (debug_threads)
+	debug_printf ("Could not find fast tracepoint jump at 0x%s "
+		      "in list (uninserting).\n",
+		      paddress (pc));
+      return;
+    }
+
+  if (jp->inserted)
+    {
+      unsigned char *buf;
+
+      jp->inserted = 0;
+
+      /* Since there can be trap breakpoints inserted in the same
+	 address range, we use use `target_write_memory', which
+	 takes care of layering breakpoints on top of fast
+	 tracepoints, and on top of the buffer we pass it.  This works
+	 because we've already marked the fast tracepoint fast
+	 tracepoint jump uninserted above.  Also note that we need to
+	 pass the current shadow contents, because
+	 target_write_memory updates any shadow memory with what we
+	 pass here, and we want that to be a nop.  */
+      buf = (unsigned char *) alloca (jp->length);
+      memcpy (buf, fast_tracepoint_jump_shadow (jp), jp->length);
+      err = target_write_memory (jp->pc, buf, jp->length);
+      if (err != 0)
+	{
+	  jp->inserted = 1;
+
+	  if (debug_threads)
+	    debug_printf ("Failed to uninsert fast tracepoint jump at"
+			  " 0x%s (%s).\n",
+			  paddress (pc), safe_strerror (err));
+	}
+    }
+}
+
+void
+reinsert_fast_tracepoint_jumps_at (CORE_ADDR where)
+{
+  struct fast_tracepoint_jump *jp;
+  int err;
+  unsigned char *buf;
+
+  jp = find_fast_tracepoint_jump_at (where);
+  if (jp == NULL)
+    {
+      /* This can happen when we remove breakpoints when a tracepoint
+	 hit causes a tracing stop, while handling a step-over.  */
+      if (debug_threads)
+	debug_printf ("Could not find fast tracepoint jump at 0x%s "
+		      "in list (reinserting).\n",
+		      paddress (where));
+      return;
+    }
+
+  if (jp->inserted)
+    error ("Jump already inserted at reinsert time.");
+
+  jp->inserted = 1;
+
+  /* Since there can be trap breakpoints inserted in the same address
+     range, we use `target_write_memory', which takes care of
+     layering breakpoints on top of fast tracepoints, and on top of
+     the buffer we pass it.  This works because we've already marked
+     the fast tracepoint jump inserted above.  Also note that we need
+     to pass the current shadow contents, because
+     target_write_memory updates any shadow memory with what we pass
+     here, and we want that to be a nop.  */
+  buf = (unsigned char *) alloca (jp->length);
+  memcpy (buf, fast_tracepoint_jump_shadow (jp), jp->length);
+  err = target_write_memory (where, buf, jp->length);
+  if (err != 0)
+    {
+      jp->inserted = 0;
+
+      if (debug_threads)
+	debug_printf ("Failed to reinsert fast tracepoint jump at"
+		      " 0x%s (%s).\n",
+		      paddress (where), safe_strerror (err));
+    }
+}
+
+/* Set a high-level breakpoint of type TYPE, with low level type
+   RAW_TYPE and kind KIND, at WHERE.  On success, a pointer to the new
+   breakpoint is returned.  On failure, returns NULL and writes the
+   error code to *ERR.  HANDLER is called when the breakpoint is hit.
+   HANDLER should return 1 if the breakpoint should be deleted, 0
+   otherwise.  */
+
+static struct breakpoint *
+set_breakpoint (enum bkpt_type type, enum raw_bkpt_type raw_type,
+		CORE_ADDR where, int kind,
+		int (*handler) (CORE_ADDR), int *err)
+{
+  struct process_info *proc = current_process ();
+  struct breakpoint *bp;
+  struct raw_breakpoint *raw;
+
+  raw = set_raw_breakpoint_at (raw_type, where, kind, err);
+
+  if (raw == NULL)
+    {
+      /* warn? */
+      return NULL;
+    }
+
+  if (is_gdb_breakpoint (type))
+    {
+      struct gdb_breakpoint *gdb_bp = XCNEW (struct gdb_breakpoint);
+
+      bp = (struct breakpoint *) gdb_bp;
+      gdb_assert (handler == NULL);
+    }
+  else if (type == other_breakpoint)
+    {
+      struct other_breakpoint *other_bp = XCNEW (struct other_breakpoint);
+
+      other_bp->handler = handler;
+      bp = (struct breakpoint *) other_bp;
+    }
+  else if (type == single_step_breakpoint)
+    {
+      struct single_step_breakpoint *ss_bp
+	= XCNEW (struct single_step_breakpoint);
+
+      bp = (struct breakpoint *) ss_bp;
+    }
+  else
+    gdb_assert_not_reached ("unhandled breakpoint type");
+
+  bp->type = type;
+  bp->raw = raw;
+
+  bp->next = proc->breakpoints;
+  proc->breakpoints = bp;
+
+  return bp;
+}
+
+/* Set breakpoint of TYPE on address WHERE with handler HANDLER.  */
+
+static struct breakpoint *
+set_breakpoint_type_at (enum bkpt_type type, CORE_ADDR where,
+			int (*handler) (CORE_ADDR))
+{
+  int err_ignored;
+  CORE_ADDR placed_address = where;
+  int breakpoint_kind = target_breakpoint_kind_from_pc (&placed_address);
+
+  return set_breakpoint (type, raw_bkpt_type_sw,
+			 placed_address, breakpoint_kind, handler,
+			 &err_ignored);
+}
+
+/* See mem-break.h  */
+
+struct breakpoint *
+set_breakpoint_at (CORE_ADDR where, int (*handler) (CORE_ADDR))
+{
+  return set_breakpoint_type_at (other_breakpoint, where, handler);
+}
+
+
+static int
+delete_raw_breakpoint (struct process_info *proc, struct raw_breakpoint *todel)
+{
+  struct raw_breakpoint *bp, **bp_link;
+  int ret;
+
+  bp = proc->raw_breakpoints;
+  bp_link = &proc->raw_breakpoints;
+
+  while (bp)
+    {
+      if (bp == todel)
+	{
+	  if (bp->inserted > 0)
+	    {
+	      struct raw_breakpoint *prev_bp_link = *bp_link;
+
+	      *bp_link = bp->next;
+
+	      ret = the_target->remove_point (bp->raw_type, bp->pc,
+					      bp->kind, bp);
+	      if (ret != 0)
+		{
+		  /* Something went wrong, relink the breakpoint.  */
+		  *bp_link = prev_bp_link;
+
+		  if (debug_threads)
+		    debug_printf ("Failed to uninsert raw breakpoint "
+				  "at 0x%s while deleting it.\n",
+				  paddress (bp->pc));
+		  return ret;
+		}
+	    }
+	  else
+	    *bp_link = bp->next;
+
+	  free (bp);
+	  return 0;
+	}
+      else
+	{
+	  bp_link = &bp->next;
+	  bp = *bp_link;
+	}
+    }
+
+  warning ("Could not find raw breakpoint in list.");
+  return ENOENT;
+}
+
+static int
+release_breakpoint (struct process_info *proc, struct breakpoint *bp)
+{
+  int newrefcount;
+  int ret;
+
+  newrefcount = bp->raw->refcount - 1;
+  if (newrefcount == 0)
+    {
+      ret = delete_raw_breakpoint (proc, bp->raw);
+      if (ret != 0)
+	return ret;
+    }
+  else
+    bp->raw->refcount = newrefcount;
+
+  free (bp);
+
+  return 0;
+}
+
+static int
+delete_breakpoint_1 (struct process_info *proc, struct breakpoint *todel)
+{
+  struct breakpoint *bp, **bp_link;
+  int err;
+
+  bp = proc->breakpoints;
+  bp_link = &proc->breakpoints;
+
+  while (bp)
+    {
+      if (bp == todel)
+	{
+	  *bp_link = bp->next;
+
+	  err = release_breakpoint (proc, bp);
+	  if (err != 0)
+	    return err;
+
+	  bp = *bp_link;
+	  return 0;
+	}
+      else
+	{
+	  bp_link = &bp->next;
+	  bp = *bp_link;
+	}
+    }
+
+  warning ("Could not find breakpoint in list.");
+  return ENOENT;
+}
+
+int
+delete_breakpoint (struct breakpoint *todel)
+{
+  struct process_info *proc = current_process ();
+  return delete_breakpoint_1 (proc, todel);
+}
+
+/* Locate a GDB breakpoint of type Z_TYPE and kind KIND placed at
+   address ADDR and return a pointer to its structure.  If KIND is -1,
+   the breakpoint's kind is ignored.  */
+
+static struct gdb_breakpoint *
+find_gdb_breakpoint (char z_type, CORE_ADDR addr, int kind)
+{
+  struct process_info *proc = current_process ();
+  struct breakpoint *bp;
+  enum bkpt_type type = Z_packet_to_bkpt_type (z_type);
+
+  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
+    if (bp->type == type && bp->raw->pc == addr
+	&& (kind == -1 || bp->raw->kind == kind))
+      return (struct gdb_breakpoint *) bp;
+
+  return NULL;
+}
+
+static int
+z_type_supported (char z_type)
+{
+  return (z_type >= '0' && z_type <= '4'
+	  && the_target->supports_z_point_type (z_type));
+}
+
+/* Create a new GDB breakpoint of type Z_TYPE at ADDR with kind KIND.
+   Returns a pointer to the newly created breakpoint on success.  On
+   failure returns NULL and sets *ERR to either -1 for error, or 1 if
+   Z_TYPE breakpoints are not supported on this target.  */
+
+static struct gdb_breakpoint *
+set_gdb_breakpoint_1 (char z_type, CORE_ADDR addr, int kind, int *err)
+{
+  struct gdb_breakpoint *bp;
+  enum bkpt_type type;
+  enum raw_bkpt_type raw_type;
+
+  /* If we see GDB inserting a second code breakpoint at the same
+     address, then either: GDB is updating the breakpoint's conditions
+     or commands; or, the first breakpoint must have disappeared due
+     to a shared library unload.  On targets where the shared
+     libraries are handled by userspace, like SVR4, for example,
+     GDBserver can't tell if a library was loaded or unloaded.  Since
+     we refcount raw breakpoints, we must be careful to make sure GDB
+     breakpoints never contribute more than one reference.  if we
+     didn't do this, in case the previous breakpoint is gone due to a
+     shared library unload, we'd just increase the refcount of the
+     previous breakpoint at this address, but the trap was not planted
+     in the inferior anymore, thus the breakpoint would never be hit.
+     Note this must be careful to not create a window where
+     breakpoints are removed from the target, for non-stop, in case
+     the target can poke at memory while the program is running.  */
+  if (z_type == Z_PACKET_SW_BP
+      || z_type == Z_PACKET_HW_BP)
+    {
+      bp = find_gdb_breakpoint (z_type, addr, -1);
+
+      if (bp != NULL)
+	{
+	  if (bp->base.raw->kind != kind)
+	    {
+	      /* A different kind than previously seen.  The previous
+		 breakpoint must be gone then.  */
+	      bp->base.raw->inserted = -1;
+	      delete_breakpoint ((struct breakpoint *) bp);
+	      bp = NULL;
+	    }
+	  else if (z_type == Z_PACKET_SW_BP)
+	    {
+	      /* Check if the breakpoint is actually gone from the
+		 target, due to an solib unload, for example.  Might
+		 as well validate _all_ breakpoints.  */
+	      validate_breakpoints ();
+
+	      /* Breakpoints that don't pass validation are
+		 deleted.  */
+	      bp = find_gdb_breakpoint (z_type, addr, -1);
+	    }
+	}
+    }
+  else
+    {
+      /* Data breakpoints for the same address but different kind are
+	 expected.  GDB doesn't merge these.  The backend gets to do
+	 that if it wants/can.  */
+      bp = find_gdb_breakpoint (z_type, addr, kind);
+    }
+
+  if (bp != NULL)
+    {
+      /* We already know about this breakpoint, there's nothing else
+	 to do - GDB's reference is already accounted for.  Note that
+	 whether the breakpoint inserted is left as is - we may be
+	 stepping over it, for example, in which case we don't want to
+	 force-reinsert it.  */
+      return bp;
+    }
+
+  raw_type = Z_packet_to_raw_bkpt_type (z_type);
+  type = Z_packet_to_bkpt_type (z_type);
+  return (struct gdb_breakpoint *) set_breakpoint (type, raw_type, addr,
+						   kind, NULL, err);
+}
+
+static int
+check_gdb_bp_preconditions (char z_type, int *err)
+{
+  /* As software/memory breakpoints work by poking at memory, we need
+     to prepare to access memory.  If that operation fails, we need to
+     return error.  Seeing an error, if this is the first breakpoint
+     of that type that GDB tries to insert, GDB would then assume the
+     breakpoint type is supported, but it may actually not be.  So we
+     need to check whether the type is supported at all before
+     preparing to access memory.  */
+  if (!z_type_supported (z_type))
+    {
+      *err = 1;
+      return 0;
+    }
+
+  return 1;
+}
+
+/* See mem-break.h.  This is a wrapper for set_gdb_breakpoint_1 that
+   knows to prepare to access memory for Z0 breakpoints.  */
+
+struct gdb_breakpoint *
+set_gdb_breakpoint (char z_type, CORE_ADDR addr, int kind, int *err)
+{
+  struct gdb_breakpoint *bp;
+
+  if (!check_gdb_bp_preconditions (z_type, err))
+    return NULL;
+
+  /* If inserting a software/memory breakpoint, need to prepare to
+     access memory.  */
+  if (z_type == Z_PACKET_SW_BP)
+    {
+      if (prepare_to_access_memory () != 0)
+	{
+	  *err = -1;
+	  return NULL;
+	}
+    }
+
+  bp = set_gdb_breakpoint_1 (z_type, addr, kind, err);
+
+  if (z_type == Z_PACKET_SW_BP)
+    done_accessing_memory ();
+
+  return bp;
+}
+
+/* Delete a GDB breakpoint of type Z_TYPE and kind KIND previously
+   inserted at ADDR with set_gdb_breakpoint_at.  Returns 0 on success,
+   -1 on error, and 1 if Z_TYPE breakpoints are not supported on this
+   target.  */
+
+static int
+delete_gdb_breakpoint_1 (char z_type, CORE_ADDR addr, int kind)
+{
+  struct gdb_breakpoint *bp;
+  int err;
+
+  bp = find_gdb_breakpoint (z_type, addr, kind);
+  if (bp == NULL)
+    return -1;
+
+  /* Before deleting the breakpoint, make sure to free its condition
+     and command lists.  */
+  clear_breakpoint_conditions_and_commands (bp);
+  err = delete_breakpoint ((struct breakpoint *) bp);
+  if (err != 0)
+    return -1;
+
+  return 0;
+}
+
+/* See mem-break.h.  This is a wrapper for delete_gdb_breakpoint that
+   knows to prepare to access memory for Z0 breakpoints.  */
+
+int
+delete_gdb_breakpoint (char z_type, CORE_ADDR addr, int kind)
+{
+  int ret;
+
+  if (!check_gdb_bp_preconditions (z_type, &ret))
+    return ret;
+
+  /* If inserting a software/memory breakpoint, need to prepare to
+     access memory.  */
+  if (z_type == Z_PACKET_SW_BP)
+    {
+      int err;
+
+      err = prepare_to_access_memory ();
+      if (err != 0)
+	return -1;
+    }
+
+  ret = delete_gdb_breakpoint_1 (z_type, addr, kind);
+
+  if (z_type == Z_PACKET_SW_BP)
+    done_accessing_memory ();
+
+  return ret;
+}
+
+/* Clear all conditions associated with a breakpoint.  */
+
+static void
+clear_breakpoint_conditions (struct gdb_breakpoint *bp)
+{
+  struct point_cond_list *cond;
+
+  if (bp->cond_list == NULL)
+    return;
+
+  cond = bp->cond_list;
+
+  while (cond != NULL)
+    {
+      struct point_cond_list *cond_next;
+
+      cond_next = cond->next;
+      gdb_free_agent_expr (cond->cond);
+      free (cond);
+      cond = cond_next;
+    }
+
+  bp->cond_list = NULL;
+}
+
+/* Clear all commands associated with a breakpoint.  */
+
+static void
+clear_breakpoint_commands (struct gdb_breakpoint *bp)
+{
+  struct point_command_list *cmd;
+
+  if (bp->command_list == NULL)
+    return;
+
+  cmd = bp->command_list;
+
+  while (cmd != NULL)
+    {
+      struct point_command_list *cmd_next;
+
+      cmd_next = cmd->next;
+      gdb_free_agent_expr (cmd->cmd);
+      free (cmd);
+      cmd = cmd_next;
+    }
+
+  bp->command_list = NULL;
+}
+
+void
+clear_breakpoint_conditions_and_commands (struct gdb_breakpoint *bp)
+{
+  clear_breakpoint_conditions (bp);
+  clear_breakpoint_commands (bp);
+}
+
+/* Add condition CONDITION to GDBserver's breakpoint BP.  */
+
+static void
+add_condition_to_breakpoint (struct gdb_breakpoint *bp,
+			     struct agent_expr *condition)
+{
+  struct point_cond_list *new_cond;
+
+  /* Create new condition.  */
+  new_cond = XCNEW (struct point_cond_list);
+  new_cond->cond = condition;
+
+  /* Add condition to the list.  */
+  new_cond->next = bp->cond_list;
+  bp->cond_list = new_cond;
+}
+
+/* Add a target-side condition CONDITION to a breakpoint.  */
+
+int
+add_breakpoint_condition (struct gdb_breakpoint *bp, const char **condition)
+{
+  const char *actparm = *condition;
+  struct agent_expr *cond;
+
+  if (condition == NULL)
+    return 1;
+
+  if (bp == NULL)
+    return 0;
+
+  cond = gdb_parse_agent_expr (&actparm);
+
+  if (cond == NULL)
+    {
+      warning ("Condition evaluation failed. Assuming unconditional.");
+      return 0;
+    }
+
+  add_condition_to_breakpoint (bp, cond);
+
+  *condition = actparm;
+
+  return 1;
+}
+
+/* Evaluate condition (if any) at breakpoint BP.  Return 1 if
+   true and 0 otherwise.  */
+
+static int
+gdb_condition_true_at_breakpoint_z_type (char z_type, CORE_ADDR addr)
+{
+  /* Fetch registers for the current inferior.  */
+  struct gdb_breakpoint *bp = find_gdb_breakpoint (z_type, addr, -1);
+  ULONGEST value = 0;
+  struct point_cond_list *cl;
+  int err = 0;
+  struct eval_agent_expr_context ctx;
+
+  if (bp == NULL)
+    return 0;
+
+  /* Check if the breakpoint is unconditional.  If it is,
+     the condition always evaluates to TRUE.  */
+  if (bp->cond_list == NULL)
+    return 1;
+
+  ctx.regcache = get_thread_regcache (current_thread, 1);
+  ctx.tframe = NULL;
+  ctx.tpoint = NULL;
+
+  /* Evaluate each condition in the breakpoint's list of conditions.
+     Return true if any of the conditions evaluates to TRUE.
+
+     If we failed to evaluate the expression, TRUE is returned.  This
+     forces GDB to reevaluate the conditions.  */
+  for (cl = bp->cond_list;
+       cl && !value && !err; cl = cl->next)
+    {
+      /* Evaluate the condition.  */
+      err = gdb_eval_agent_expr (&ctx, cl->cond, &value);
+    }
+
+  if (err)
+    return 1;
+
+  return (value != 0);
+}
+
+int
+gdb_condition_true_at_breakpoint (CORE_ADDR where)
+{
+  /* Only check code (software or hardware) breakpoints.  */
+  return (gdb_condition_true_at_breakpoint_z_type (Z_PACKET_SW_BP, where)
+	  || gdb_condition_true_at_breakpoint_z_type (Z_PACKET_HW_BP, where));
+}
+
+/* Add commands COMMANDS to GDBserver's breakpoint BP.  */
+
+static void
+add_commands_to_breakpoint (struct gdb_breakpoint *bp,
+			    struct agent_expr *commands, int persist)
+{
+  struct point_command_list *new_cmd;
+
+  /* Create new command.  */
+  new_cmd = XCNEW (struct point_command_list);
+  new_cmd->cmd = commands;
+  new_cmd->persistence = persist;
+
+  /* Add commands to the list.  */
+  new_cmd->next = bp->command_list;
+  bp->command_list = new_cmd;
+}
+
+/* Add a target-side command COMMAND to the breakpoint at ADDR.  */
+
+int
+add_breakpoint_commands (struct gdb_breakpoint *bp, const char **command,
+			 int persist)
+{
+  const char *actparm = *command;
+  struct agent_expr *cmd;
+
+  if (command == NULL)
+    return 1;
+
+  if (bp == NULL)
+    return 0;
+
+  cmd = gdb_parse_agent_expr (&actparm);
+
+  if (cmd == NULL)
+    {
+      warning ("Command evaluation failed. Disabling.");
+      return 0;
+    }
+
+  add_commands_to_breakpoint (bp, cmd, persist);
+
+  *command = actparm;
+
+  return 1;
+}
+
+/* Return true if there are no commands to run at this location,
+   which likely means we want to report back to GDB.  */
+
+static int
+gdb_no_commands_at_breakpoint_z_type (char z_type, CORE_ADDR addr)
+{
+  struct gdb_breakpoint *bp = find_gdb_breakpoint (z_type, addr, -1);
+
+  if (bp == NULL)
+    return 1;
+
+  if (debug_threads)
+    debug_printf ("at 0x%s, type Z%c, bp command_list is 0x%s\n",
+		  paddress (addr), z_type,
+		  phex_nz ((uintptr_t) bp->command_list, 0));
+  return (bp->command_list == NULL);
+}
+
+/* Return true if there are no commands to run at this location,
+   which likely means we want to report back to GDB.  */
+
+int
+gdb_no_commands_at_breakpoint (CORE_ADDR where)
+{
+  /* Only check code (software or hardware) breakpoints.  */
+  return (gdb_no_commands_at_breakpoint_z_type (Z_PACKET_SW_BP, where)
+	  && gdb_no_commands_at_breakpoint_z_type (Z_PACKET_HW_BP, where));
+}
+
+/* Run a breakpoint's commands.  Returns 0 if there was a problem
+   running any command, 1 otherwise.  */
+
+static int
+run_breakpoint_commands_z_type (char z_type, CORE_ADDR addr)
+{
+  /* Fetch registers for the current inferior.  */
+  struct gdb_breakpoint *bp = find_gdb_breakpoint (z_type, addr, -1);
+  ULONGEST value = 0;
+  struct point_command_list *cl;
+  int err = 0;
+  struct eval_agent_expr_context ctx;
+
+  if (bp == NULL)
+    return 1;
+
+  ctx.regcache = get_thread_regcache (current_thread, 1);
+  ctx.tframe = NULL;
+  ctx.tpoint = NULL;
+
+  for (cl = bp->command_list;
+       cl && !value && !err; cl = cl->next)
+    {
+      /* Run the command.  */
+      err = gdb_eval_agent_expr (&ctx, cl->cmd, &value);
+
+      /* If one command has a problem, stop digging the hole deeper.  */
+      if (err)
+	return 0;
+    }
+
+  return 1;
+}
+
+void
+run_breakpoint_commands (CORE_ADDR where)
+{
+  /* Only check code (software or hardware) breakpoints.  If one
+     command has a problem, stop digging the hole deeper.  */
+  if (run_breakpoint_commands_z_type (Z_PACKET_SW_BP, where))
+    run_breakpoint_commands_z_type (Z_PACKET_HW_BP, where);
+}
+
+/* See mem-break.h.  */
+
+int
+gdb_breakpoint_here (CORE_ADDR where)
+{
+  /* Only check code (software or hardware) breakpoints.  */
+  return (find_gdb_breakpoint (Z_PACKET_SW_BP, where, -1) != NULL
+	  || find_gdb_breakpoint (Z_PACKET_HW_BP, where, -1) != NULL);
+}
+
+void
+set_single_step_breakpoint (CORE_ADDR stop_at, ptid_t ptid)
+{
+  struct single_step_breakpoint *bp;
+
+  gdb_assert (current_ptid.pid () == ptid.pid ());
+
+  bp = (struct single_step_breakpoint *) set_breakpoint_type_at (single_step_breakpoint,
+								stop_at, NULL);
+  bp->ptid = ptid;
+}
+
+void
+delete_single_step_breakpoints (struct thread_info *thread)
+{
+  struct process_info *proc = get_thread_process (thread);
+  struct breakpoint *bp, **bp_link;
+
+  bp = proc->breakpoints;
+  bp_link = &proc->breakpoints;
+
+  while (bp)
+    {
+      if (bp->type == single_step_breakpoint
+	  && ((struct single_step_breakpoint *) bp)->ptid == ptid_of (thread))
+	{
+	  struct thread_info *saved_thread = current_thread;
+
+	  current_thread = thread;
+	  *bp_link = bp->next;
+	  release_breakpoint (proc, bp);
+	  bp = *bp_link;
+	  current_thread = saved_thread;
+	}
+      else
+	{
+	  bp_link = &bp->next;
+	  bp = *bp_link;
+	}
+    }
+}
+
+static void
+uninsert_raw_breakpoint (struct raw_breakpoint *bp)
+{
+  if (bp->inserted < 0)
+    {
+      if (debug_threads)
+	debug_printf ("Breakpoint at %s is marked insert-disabled.\n",
+		      paddress (bp->pc));
+    }
+  else if (bp->inserted > 0)
+    {
+      int err;
+
+      bp->inserted = 0;
+
+      err = the_target->remove_point (bp->raw_type, bp->pc, bp->kind, bp);
+      if (err != 0)
+	{
+	  bp->inserted = 1;
+
+	  if (debug_threads)
+	    debug_printf ("Failed to uninsert raw breakpoint at 0x%s.\n",
+			  paddress (bp->pc));
+	}
+    }
+}
+
+void
+uninsert_breakpoints_at (CORE_ADDR pc)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+  int found = 0;
+
+  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
+    if ((bp->raw_type == raw_bkpt_type_sw
+	 || bp->raw_type == raw_bkpt_type_hw)
+	&& bp->pc == pc)
+      {
+	found = 1;
+
+	if (bp->inserted)
+	  uninsert_raw_breakpoint (bp);
+      }
+
+  if (!found)
+    {
+      /* This can happen when we remove all breakpoints while handling
+	 a step-over.  */
+      if (debug_threads)
+	debug_printf ("Could not find breakpoint at 0x%s "
+		      "in list (uninserting).\n",
+		      paddress (pc));
+    }
+}
+
+void
+uninsert_all_breakpoints (void)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+
+  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
+    if ((bp->raw_type == raw_bkpt_type_sw
+	 || bp->raw_type == raw_bkpt_type_hw)
+	&& bp->inserted)
+      uninsert_raw_breakpoint (bp);
+}
+
+void
+uninsert_single_step_breakpoints (struct thread_info *thread)
+{
+  struct process_info *proc = get_thread_process (thread);
+  struct breakpoint *bp;
+
+  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
+    {
+    if (bp->type == single_step_breakpoint
+	&& ((struct single_step_breakpoint *) bp)->ptid == ptid_of (thread))
+      {
+	gdb_assert (bp->raw->inserted > 0);
+
+	/* Only uninsert the raw breakpoint if it only belongs to a
+	   reinsert breakpoint.  */
+	if (bp->raw->refcount == 1)
+	  {
+	    struct thread_info *saved_thread = current_thread;
+
+	    current_thread = thread;
+	    uninsert_raw_breakpoint (bp->raw);
+	    current_thread = saved_thread;
+	  }
+      }
+    }
+}
+
+static void
+reinsert_raw_breakpoint (struct raw_breakpoint *bp)
+{
+  int err;
+
+  if (bp->inserted)
+    return;
+
+  err = the_target->insert_point (bp->raw_type, bp->pc, bp->kind, bp);
+  if (err == 0)
+    bp->inserted = 1;
+  else if (debug_threads)
+    debug_printf ("Failed to reinsert breakpoint at 0x%s (%d).\n",
+		  paddress (bp->pc), err);
+}
+
+void
+reinsert_breakpoints_at (CORE_ADDR pc)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+  int found = 0;
+
+  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
+    if ((bp->raw_type == raw_bkpt_type_sw
+	 || bp->raw_type == raw_bkpt_type_hw)
+	&& bp->pc == pc)
+      {
+	found = 1;
+
+	reinsert_raw_breakpoint (bp);
+      }
+
+  if (!found)
+    {
+      /* This can happen when we remove all breakpoints while handling
+	 a step-over.  */
+      if (debug_threads)
+	debug_printf ("Could not find raw breakpoint at 0x%s "
+		      "in list (reinserting).\n",
+		      paddress (pc));
+    }
+}
+
+int
+has_single_step_breakpoints (struct thread_info *thread)
+{
+  struct process_info *proc = get_thread_process (thread);
+  struct breakpoint *bp, **bp_link;
+
+  bp = proc->breakpoints;
+  bp_link = &proc->breakpoints;
+
+  while (bp)
+    {
+      if (bp->type == single_step_breakpoint
+	  && ((struct single_step_breakpoint *) bp)->ptid == ptid_of (thread))
+	return 1;
+      else
+	{
+	  bp_link = &bp->next;
+	  bp = *bp_link;
+	}
+    }
+
+  return 0;
+}
+
+void
+reinsert_all_breakpoints (void)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+
+  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
+    if ((bp->raw_type == raw_bkpt_type_sw
+	 || bp->raw_type == raw_bkpt_type_hw)
+	&& !bp->inserted)
+      reinsert_raw_breakpoint (bp);
+}
+
+void
+reinsert_single_step_breakpoints (struct thread_info *thread)
+{
+  struct process_info *proc = get_thread_process (thread);
+  struct breakpoint *bp;
+
+  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
+    {
+      if (bp->type == single_step_breakpoint
+	  && ((struct single_step_breakpoint *) bp)->ptid == ptid_of (thread))
+	{
+	  gdb_assert (bp->raw->inserted > 0);
+
+	  if (bp->raw->refcount == 1)
+	    {
+	      struct thread_info *saved_thread = current_thread;
+
+	      current_thread = thread;
+	      reinsert_raw_breakpoint (bp->raw);
+	      current_thread = saved_thread;
+	    }
+	}
+    }
+}
+
+void
+check_breakpoints (CORE_ADDR stop_pc)
+{
+  struct process_info *proc = current_process ();
+  struct breakpoint *bp, **bp_link;
+
+  bp = proc->breakpoints;
+  bp_link = &proc->breakpoints;
+
+  while (bp)
+    {
+      struct raw_breakpoint *raw = bp->raw;
+
+      if ((raw->raw_type == raw_bkpt_type_sw
+	   || raw->raw_type == raw_bkpt_type_hw)
+	  && raw->pc == stop_pc)
+	{
+	  if (!raw->inserted)
+	    {
+	      warning ("Hit a removed breakpoint?");
+	      return;
+	    }
+
+	  if (bp->type == other_breakpoint)
+	    {
+	      struct other_breakpoint *other_bp
+		= (struct other_breakpoint *) bp;
+
+	      if (other_bp->handler != NULL && (*other_bp->handler) (stop_pc))
+		{
+		  *bp_link = bp->next;
+
+		  release_breakpoint (proc, bp);
+
+		  bp = *bp_link;
+		  continue;
+		}
+	    }
+	}
+
+      bp_link = &bp->next;
+      bp = *bp_link;
+    }
+}
+
+int
+breakpoint_here (CORE_ADDR addr)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+
+  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
+    if ((bp->raw_type == raw_bkpt_type_sw
+	 || bp->raw_type == raw_bkpt_type_hw)
+	&& bp->pc == addr)
+      return 1;
+
+  return 0;
+}
+
+int
+breakpoint_inserted_here (CORE_ADDR addr)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+
+  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
+    if ((bp->raw_type == raw_bkpt_type_sw
+	 || bp->raw_type == raw_bkpt_type_hw)
+	&& bp->pc == addr
+	&& bp->inserted)
+      return 1;
+
+  return 0;
+}
+
+/* See mem-break.h.  */
+
+int
+software_breakpoint_inserted_here (CORE_ADDR addr)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+
+  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
+    if (bp->raw_type == raw_bkpt_type_sw
+	&& bp->pc == addr
+	&& bp->inserted)
+      return 1;
+
+  return 0;
+}
+
+/* See mem-break.h.  */
+
+int
+hardware_breakpoint_inserted_here (CORE_ADDR addr)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp;
+
+  for (bp = proc->raw_breakpoints; bp != NULL; bp = bp->next)
+    if (bp->raw_type == raw_bkpt_type_hw
+	&& bp->pc == addr
+	&& bp->inserted)
+      return 1;
+
+  return 0;
+}
+
+/* See mem-break.h.  */
+
+int
+single_step_breakpoint_inserted_here (CORE_ADDR addr)
+{
+  struct process_info *proc = current_process ();
+  struct breakpoint *bp;
+
+  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
+    if (bp->type == single_step_breakpoint
+	&& bp->raw->pc == addr
+	&& bp->raw->inserted)
+      return 1;
+
+  return 0;
+}
+
+static int
+validate_inserted_breakpoint (struct raw_breakpoint *bp)
+{
+  unsigned char *buf;
+  int err;
+
+  gdb_assert (bp->inserted);
+  gdb_assert (bp->raw_type == raw_bkpt_type_sw);
+
+  buf = (unsigned char *) alloca (bp_size (bp));
+  err = the_target->read_memory (bp->pc, buf, bp_size (bp));
+  if (err || memcmp (buf, bp_opcode (bp), bp_size (bp)) != 0)
+    {
+      /* Tag it as gone.  */
+      bp->inserted = -1;
+      return 0;
+    }
+
+  return 1;
+}
+
+static void
+delete_disabled_breakpoints (void)
+{
+  struct process_info *proc = current_process ();
+  struct breakpoint *bp, *next;
+
+  for (bp = proc->breakpoints; bp != NULL; bp = next)
+    {
+      next = bp->next;
+      if (bp->raw->inserted < 0)
+	{
+	  /* If single_step_breakpoints become disabled, that means the
+	     manipulations (insertion and removal) of them are wrong.  */
+	  gdb_assert (bp->type != single_step_breakpoint);
+	  delete_breakpoint_1 (proc, bp);
+	}
+    }
+}
+
+/* Check if breakpoints we inserted still appear to be inserted.  They
+   may disappear due to a shared library unload, and worse, a new
+   shared library may be reloaded at the same address as the
+   previously unloaded one.  If that happens, we should make sure that
+   the shadow memory of the old breakpoints isn't used when reading or
+   writing memory.  */
+
+void
+validate_breakpoints (void)
+{
+  struct process_info *proc = current_process ();
+  struct breakpoint *bp;
+
+  for (bp = proc->breakpoints; bp != NULL; bp = bp->next)
+    {
+      struct raw_breakpoint *raw = bp->raw;
+
+      if (raw->raw_type == raw_bkpt_type_sw && raw->inserted > 0)
+	validate_inserted_breakpoint (raw);
+    }
+
+  delete_disabled_breakpoints ();
+}
+
+void
+check_mem_read (CORE_ADDR mem_addr, unsigned char *buf, int mem_len)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp = proc->raw_breakpoints;
+  struct fast_tracepoint_jump *jp = proc->fast_tracepoint_jumps;
+  CORE_ADDR mem_end = mem_addr + mem_len;
+  int disabled_one = 0;
+
+  for (; jp != NULL; jp = jp->next)
+    {
+      CORE_ADDR bp_end = jp->pc + jp->length;
+      CORE_ADDR start, end;
+      int copy_offset, copy_len, buf_offset;
+
+      gdb_assert (fast_tracepoint_jump_shadow (jp) >= buf + mem_len
+		  || buf >= fast_tracepoint_jump_shadow (jp) + (jp)->length);
+
+      if (mem_addr >= bp_end)
+	continue;
+      if (jp->pc >= mem_end)
+	continue;
+
+      start = jp->pc;
+      if (mem_addr > start)
+	start = mem_addr;
+
+      end = bp_end;
+      if (end > mem_end)
+	end = mem_end;
+
+      copy_len = end - start;
+      copy_offset = start - jp->pc;
+      buf_offset = start - mem_addr;
+
+      if (jp->inserted)
+	memcpy (buf + buf_offset,
+		fast_tracepoint_jump_shadow (jp) + copy_offset,
+		copy_len);
+    }
+
+  for (; bp != NULL; bp = bp->next)
+    {
+      CORE_ADDR bp_end = bp->pc + bp_size (bp);
+      CORE_ADDR start, end;
+      int copy_offset, copy_len, buf_offset;
+
+      if (bp->raw_type != raw_bkpt_type_sw)
+	continue;
+
+      gdb_assert (bp->old_data >= buf + mem_len
+		  || buf >= &bp->old_data[sizeof (bp->old_data)]);
+
+      if (mem_addr >= bp_end)
+	continue;
+      if (bp->pc >= mem_end)
+	continue;
+
+      start = bp->pc;
+      if (mem_addr > start)
+	start = mem_addr;
+
+      end = bp_end;
+      if (end > mem_end)
+	end = mem_end;
+
+      copy_len = end - start;
+      copy_offset = start - bp->pc;
+      buf_offset = start - mem_addr;
+
+      if (bp->inserted > 0)
+	{
+	  if (validate_inserted_breakpoint (bp))
+	    memcpy (buf + buf_offset, bp->old_data + copy_offset, copy_len);
+	  else
+	    disabled_one = 1;
+	}
+    }
+
+  if (disabled_one)
+    delete_disabled_breakpoints ();
+}
+
+void
+check_mem_write (CORE_ADDR mem_addr, unsigned char *buf,
+		 const unsigned char *myaddr, int mem_len)
+{
+  struct process_info *proc = current_process ();
+  struct raw_breakpoint *bp = proc->raw_breakpoints;
+  struct fast_tracepoint_jump *jp = proc->fast_tracepoint_jumps;
+  CORE_ADDR mem_end = mem_addr + mem_len;
+  int disabled_one = 0;
+
+  /* First fast tracepoint jumps, then breakpoint traps on top.  */
+
+  for (; jp != NULL; jp = jp->next)
+    {
+      CORE_ADDR jp_end = jp->pc + jp->length;
+      CORE_ADDR start, end;
+      int copy_offset, copy_len, buf_offset;
+
+      gdb_assert (fast_tracepoint_jump_shadow (jp) >= myaddr + mem_len
+		  || myaddr >= fast_tracepoint_jump_shadow (jp) + (jp)->length);
+      gdb_assert (fast_tracepoint_jump_insn (jp) >= buf + mem_len
+		  || buf >= fast_tracepoint_jump_insn (jp) + (jp)->length);
+
+      if (mem_addr >= jp_end)
+	continue;
+      if (jp->pc >= mem_end)
+	continue;
+
+      start = jp->pc;
+      if (mem_addr > start)
+	start = mem_addr;
+
+      end = jp_end;
+      if (end > mem_end)
+	end = mem_end;
+
+      copy_len = end - start;
+      copy_offset = start - jp->pc;
+      buf_offset = start - mem_addr;
+
+      memcpy (fast_tracepoint_jump_shadow (jp) + copy_offset,
+	      myaddr + buf_offset, copy_len);
+      if (jp->inserted)
+	memcpy (buf + buf_offset,
+		fast_tracepoint_jump_insn (jp) + copy_offset, copy_len);
+    }
+
+  for (; bp != NULL; bp = bp->next)
+    {
+      CORE_ADDR bp_end = bp->pc + bp_size (bp);
+      CORE_ADDR start, end;
+      int copy_offset, copy_len, buf_offset;
+
+      if (bp->raw_type != raw_bkpt_type_sw)
+	continue;
+
+      gdb_assert (bp->old_data >= myaddr + mem_len
+		  || myaddr >= &bp->old_data[sizeof (bp->old_data)]);
+
+      if (mem_addr >= bp_end)
+	continue;
+      if (bp->pc >= mem_end)
+	continue;
+
+      start = bp->pc;
+      if (mem_addr > start)
+	start = mem_addr;
+
+      end = bp_end;
+      if (end > mem_end)
+	end = mem_end;
+
+      copy_len = end - start;
+      copy_offset = start - bp->pc;
+      buf_offset = start - mem_addr;
+
+      memcpy (bp->old_data + copy_offset, myaddr + buf_offset, copy_len);
+      if (bp->inserted > 0)
+	{
+	  if (validate_inserted_breakpoint (bp))
+	    memcpy (buf + buf_offset, bp_opcode (bp) + copy_offset, copy_len);
+	  else
+	    disabled_one = 1;
+	}
+    }
+
+  if (disabled_one)
+    delete_disabled_breakpoints ();
+}
+
+/* Delete all breakpoints, and un-insert them from the inferior.  */
+
+void
+delete_all_breakpoints (void)
+{
+  struct process_info *proc = current_process ();
+
+  while (proc->breakpoints)
+    delete_breakpoint_1 (proc, proc->breakpoints);
+}
+
+/* Clear the "inserted" flag in all breakpoints.  */
+
+void
+mark_breakpoints_out (struct process_info *proc)
+{
+  struct raw_breakpoint *raw_bp;
+
+  for (raw_bp = proc->raw_breakpoints; raw_bp != NULL; raw_bp = raw_bp->next)
+    raw_bp->inserted = 0;
+}
+
+/* Release all breakpoints, but do not try to un-insert them from the
+   inferior.  */
+
+void
+free_all_breakpoints (struct process_info *proc)
+{
+  mark_breakpoints_out (proc);
+
+  /* Note: use PROC explicitly instead of deferring to
+     delete_all_breakpoints --- CURRENT_INFERIOR may already have been
+     released when we get here.  There should be no call to
+     current_process from here on.  */
+  while (proc->breakpoints)
+    delete_breakpoint_1 (proc, proc->breakpoints);
+}
+
+/* Clone an agent expression.  */
+
+static struct agent_expr *
+clone_agent_expr (const struct agent_expr *src_ax)
+{
+  struct agent_expr *ax;
+
+  ax = XCNEW (struct agent_expr);
+  ax->length = src_ax->length;
+  ax->bytes = (unsigned char *) xcalloc (ax->length, 1);
+  memcpy (ax->bytes, src_ax->bytes, ax->length);
+  return ax;
+}
+
+/* Deep-copy the contents of one breakpoint to another.  */
+
+static struct breakpoint *
+clone_one_breakpoint (const struct breakpoint *src, ptid_t ptid)
+{
+  struct breakpoint *dest;
+  struct raw_breakpoint *dest_raw;
+
+  /* Clone the raw breakpoint.  */
+  dest_raw = XCNEW (struct raw_breakpoint);
+  dest_raw->raw_type = src->raw->raw_type;
+  dest_raw->refcount = src->raw->refcount;
+  dest_raw->pc = src->raw->pc;
+  dest_raw->kind = src->raw->kind;
+  memcpy (dest_raw->old_data, src->raw->old_data, MAX_BREAKPOINT_LEN);
+  dest_raw->inserted = src->raw->inserted;
+
+  /* Clone the high-level breakpoint.  */
+  if (is_gdb_breakpoint (src->type))
+    {
+      struct gdb_breakpoint *gdb_dest = XCNEW (struct gdb_breakpoint);
+      struct point_cond_list *current_cond;
+      struct point_cond_list *new_cond;
+      struct point_cond_list *cond_tail = NULL;
+      struct point_command_list *current_cmd;
+      struct point_command_list *new_cmd;
+      struct point_command_list *cmd_tail = NULL;
+
+      /* Clone the condition list.  */
+      for (current_cond = ((struct gdb_breakpoint *) src)->cond_list;
+	   current_cond != NULL;
+	   current_cond = current_cond->next)
+	{
+	  new_cond = XCNEW (struct point_cond_list);
+	  new_cond->cond = clone_agent_expr (current_cond->cond);
+	  APPEND_TO_LIST (&gdb_dest->cond_list, new_cond, cond_tail);
+	}
+
+      /* Clone the command list.  */
+      for (current_cmd = ((struct gdb_breakpoint *) src)->command_list;
+	   current_cmd != NULL;
+	   current_cmd = current_cmd->next)
+	{
+	  new_cmd = XCNEW (struct point_command_list);
+	  new_cmd->cmd = clone_agent_expr (current_cmd->cmd);
+	  new_cmd->persistence = current_cmd->persistence;
+	  APPEND_TO_LIST (&gdb_dest->command_list, new_cmd, cmd_tail);
+	}
+
+      dest = (struct breakpoint *) gdb_dest;
+    }
+  else if (src->type == other_breakpoint)
+    {
+      struct other_breakpoint *other_dest = XCNEW (struct other_breakpoint);
+
+      other_dest->handler = ((struct other_breakpoint *) src)->handler;
+      dest = (struct breakpoint *) other_dest;
+    }
+  else if (src->type == single_step_breakpoint)
+    {
+      struct single_step_breakpoint *ss_dest
+	= XCNEW (struct single_step_breakpoint);
+
+      dest = (struct breakpoint *) ss_dest;
+      /* Since single-step breakpoint is thread specific, don't copy
+	 thread id from SRC, use ID instead.  */
+      ss_dest->ptid = ptid;
+    }
+  else
+    gdb_assert_not_reached ("unhandled breakpoint type");
+
+  dest->type = src->type;
+  dest->raw = dest_raw;
+
+  return dest;
+}
+
+/* See mem-break.h.  */
+
+void
+clone_all_breakpoints (struct thread_info *child_thread,
+		       const struct thread_info *parent_thread)
+{
+  const struct breakpoint *bp;
+  struct breakpoint *new_bkpt;
+  struct breakpoint *bkpt_tail = NULL;
+  struct raw_breakpoint *raw_bkpt_tail = NULL;
+  struct process_info *child_proc = get_thread_process (child_thread);
+  struct process_info *parent_proc = get_thread_process (parent_thread);
+  struct breakpoint **new_list = &child_proc->breakpoints;
+  struct raw_breakpoint **new_raw_list = &child_proc->raw_breakpoints;
+
+  for (bp = parent_proc->breakpoints; bp != NULL; bp = bp->next)
+    {
+      new_bkpt = clone_one_breakpoint (bp, ptid_of (child_thread));
+      APPEND_TO_LIST (new_list, new_bkpt, bkpt_tail);
+      APPEND_TO_LIST (new_raw_list, new_bkpt->raw, raw_bkpt_tail);
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/mem-break.h ./gdbserver/mem-break.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/mem-break.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/mem-break.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,279 @@
+/* Memory breakpoint interfaces for the remote server for GDB.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
+
+   Contributed by MontaVista Software.
+
+   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 GDBSERVER_MEM_BREAK_H
+#define GDBSERVER_MEM_BREAK_H
+
+#include "gdbsupport/break-common.h"
+
+/* Breakpoints are opaque.  */
+struct breakpoint;
+struct gdb_breakpoint;
+struct fast_tracepoint_jump;
+struct raw_breakpoint;
+struct process_info;
+
+#define Z_PACKET_SW_BP '0'
+#define Z_PACKET_HW_BP '1'
+#define Z_PACKET_WRITE_WP '2'
+#define Z_PACKET_READ_WP '3'
+#define Z_PACKET_ACCESS_WP '4'
+
+/* The low level breakpoint types.  */
+
+enum raw_bkpt_type
+  {
+    /* Software/memory breakpoint.  */
+    raw_bkpt_type_sw,
+
+    /* Hardware-assisted breakpoint.  */
+    raw_bkpt_type_hw,
+
+    /* Hardware-assisted write watchpoint.  */
+    raw_bkpt_type_write_wp,
+
+    /* Hardware-assisted read watchpoint.  */
+    raw_bkpt_type_read_wp,
+
+    /* Hardware-assisted access watchpoint.  */
+    raw_bkpt_type_access_wp
+  };
+
+/* Map the protocol breakpoint/watchpoint type Z_TYPE to the internal
+   raw breakpoint type.  */
+
+enum raw_bkpt_type Z_packet_to_raw_bkpt_type (char z_type);
+
+/* Map a raw breakpoint type to an enum target_hw_bp_type.  */
+
+enum target_hw_bp_type raw_bkpt_type_to_target_hw_bp_type
+  (enum raw_bkpt_type raw_type);
+
+/* Create a new GDB breakpoint of type Z_TYPE at ADDR with kind KIND.
+   Returns a pointer to the newly created breakpoint on success.  On
+   failure returns NULL and sets *ERR to either -1 for error, or 1 if
+   Z_TYPE breakpoints are not supported on this target.  */
+
+struct gdb_breakpoint *set_gdb_breakpoint (char z_type, CORE_ADDR addr,
+					   int kind, int *err);
+
+/* Delete a GDB breakpoint of type Z_TYPE and kind KIND previously
+   inserted at ADDR with set_gdb_breakpoint_at.  Returns 0 on success,
+   -1 on error, and 1 if Z_TYPE breakpoints are not supported on this
+   target.  */
+
+int delete_gdb_breakpoint (char z_type, CORE_ADDR addr, int kind);
+
+/* Returns TRUE if there's a software or hardware (code) breakpoint at
+   ADDR in our tables, inserted, or not.  */
+
+int breakpoint_here (CORE_ADDR addr);
+
+/* Returns TRUE if there's any inserted software or hardware (code)
+   breakpoint set at ADDR.  */
+
+int breakpoint_inserted_here (CORE_ADDR addr);
+
+/* Returns TRUE if there's any inserted software breakpoint at
+   ADDR.  */
+
+int software_breakpoint_inserted_here (CORE_ADDR addr);
+
+/* Returns TRUE if there's any inserted hardware (code) breakpoint at
+   ADDR.  */
+
+int hardware_breakpoint_inserted_here (CORE_ADDR addr);
+
+/* Returns TRUE if there's any single-step breakpoint at ADDR.  */
+
+int single_step_breakpoint_inserted_here (CORE_ADDR addr);
+
+/* Clear all breakpoint conditions and commands associated with a
+   breakpoint.  */
+
+void clear_breakpoint_conditions_and_commands (struct gdb_breakpoint *bp);
+
+/* Set target-side condition CONDITION to the breakpoint at ADDR.
+   Returns false on failure.  On success, advances CONDITION pointer
+   past the condition and returns true.  */
+
+int add_breakpoint_condition (struct gdb_breakpoint *bp,
+			      const char **condition);
+
+/* Set target-side commands COMMANDS to the breakpoint at ADDR.
+   Returns false on failure.  On success, advances COMMANDS past the
+   commands and returns true.  If PERSIST, the commands should run
+   even while GDB is disconnected.  */
+
+int add_breakpoint_commands (struct gdb_breakpoint *bp, const char **commands,
+			     int persist);
+
+/* Return true if PROC has any persistent command.  */
+bool any_persistent_commands (process_info *proc);
+
+/* Evaluation condition (if any) at breakpoint BP.  Return 1 if
+   true and 0 otherwise.  */
+
+int gdb_condition_true_at_breakpoint (CORE_ADDR where);
+
+int gdb_no_commands_at_breakpoint (CORE_ADDR where);
+
+void run_breakpoint_commands (CORE_ADDR where);
+
+/* Returns TRUE if there's a GDB breakpoint (Z0 or Z1) set at
+   WHERE.  */
+
+int gdb_breakpoint_here (CORE_ADDR where);
+
+/* Create a new breakpoint at WHERE, and call HANDLER when
+   it is hit.  HANDLER should return 1 if the breakpoint
+   should be deleted, 0 otherwise.  The type of the created
+   breakpoint is other_breakpoint.  */
+
+struct breakpoint *set_breakpoint_at (CORE_ADDR where,
+				      int (*handler) (CORE_ADDR));
+
+/* Delete a breakpoint.  */
+
+int delete_breakpoint (struct breakpoint *bkpt);
+
+/* Set a single-step breakpoint at STOP_AT for thread represented by
+   PTID.  */
+
+void set_single_step_breakpoint (CORE_ADDR stop_at, ptid_t ptid);
+
+/* Delete all single-step breakpoints of THREAD.  */
+
+void delete_single_step_breakpoints (struct thread_info *thread);
+
+/* Reinsert all single-step breakpoints of THREAD.  */
+
+void reinsert_single_step_breakpoints (struct thread_info *thread);
+
+/* Uninsert all single-step breakpoints of THREAD.  This still leaves
+   the single-step breakpoints in the table.  */
+
+void uninsert_single_step_breakpoints (struct thread_info *thread);
+
+/* Reinsert breakpoints at WHERE (and change their status to
+   inserted).  */
+
+void reinsert_breakpoints_at (CORE_ADDR where);
+
+/* The THREAD has single-step breakpoints or not.  */
+
+int has_single_step_breakpoints (struct thread_info *thread);
+
+/* Uninsert breakpoints at WHERE (and change their status to
+   uninserted).  This still leaves the breakpoints in the table.  */
+
+void uninsert_breakpoints_at (CORE_ADDR where);
+
+/* Reinsert all breakpoints of the current process (and change their
+   status to inserted).  */
+
+void reinsert_all_breakpoints (void);
+
+/* Uninsert all breakpoints of the current process (and change their
+   status to uninserted).  This still leaves the breakpoints in the
+   table.  */
+
+void uninsert_all_breakpoints (void);
+
+/* See if any breakpoint claims ownership of STOP_PC.  Call the handler for
+   the breakpoint, if found.  */
+
+void check_breakpoints (CORE_ADDR stop_pc);
+
+/* See if any breakpoints shadow the target memory area from MEM_ADDR
+   to MEM_ADDR + MEM_LEN.  Update the data already read from the target
+   (in BUF) if necessary.  */
+
+void check_mem_read (CORE_ADDR mem_addr, unsigned char *buf, int mem_len);
+
+/* See if any breakpoints shadow the target memory area from MEM_ADDR
+   to MEM_ADDR + MEM_LEN.  Update the data to be written to the target
+   (in BUF, a copy of MYADDR on entry) if necessary, as well as the
+   original data for any breakpoints.  */
+
+void check_mem_write (CORE_ADDR mem_addr,
+		      unsigned char *buf, const unsigned char *myaddr, int mem_len);
+
+/* Delete all breakpoints.  */
+
+void delete_all_breakpoints (void);
+
+/* Clear the "inserted" flag in all breakpoints of PROC.  */
+
+void mark_breakpoints_out (struct process_info *proc);
+
+/* Delete all breakpoints, but do not try to un-insert them from the
+   inferior.  */
+
+void free_all_breakpoints (struct process_info *proc);
+
+/* Check if breakpoints still seem to be inserted in the inferior.  */
+
+void validate_breakpoints (void);
+
+/* Insert a fast tracepoint jump at WHERE, using instruction INSN, of
+   LENGTH bytes.  */
+
+struct fast_tracepoint_jump *set_fast_tracepoint_jump (CORE_ADDR where,
+						       unsigned char *insn,
+						       ULONGEST length);
+
+/* Increment reference counter of JP.  */
+void inc_ref_fast_tracepoint_jump (struct fast_tracepoint_jump *jp);
+
+/* Delete fast tracepoint jump TODEL from our tables, and uninsert if
+   from memory.  */
+
+int delete_fast_tracepoint_jump (struct fast_tracepoint_jump *todel);
+
+/* Returns true if there's fast tracepoint jump set at WHERE.  */
+
+int fast_tracepoint_jump_here (CORE_ADDR);
+
+/* Uninsert fast tracepoint jumps at WHERE (and change their status to
+   uninserted).  This still leaves the tracepoints in the table.  */
+
+void uninsert_fast_tracepoint_jumps_at (CORE_ADDR pc);
+
+/* Reinsert fast tracepoint jumps at WHERE (and change their status to
+   inserted).  */
+
+void reinsert_fast_tracepoint_jumps_at (CORE_ADDR where);
+
+/* Insert a memory breakpoint.  */
+
+int insert_memory_breakpoint (struct raw_breakpoint *bp);
+
+/* Remove a previously inserted memory breakpoint.  */
+
+int remove_memory_breakpoint (struct raw_breakpoint *bp);
+
+/* Create a new breakpoint list in CHILD_THREAD's process that is a
+   copy of breakpoint list in PARENT_THREAD's process.  */
+
+void clone_all_breakpoints (struct thread_info *child_thread,
+			    const struct thread_info *parent_thread);
+
+#endif /* GDBSERVER_MEM_BREAK_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/netbsd-amd64-low.cc ./gdbserver/netbsd-amd64-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/netbsd-amd64-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/netbsd-amd64-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,187 @@
+/* Copyright (C) 2020-2021 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 <sys/types.h>
+#include <sys/ptrace.h>
+#include <limits.h>
+
+#include "server.h"
+#include "netbsd-low.h"
+#include "gdbsupport/x86-xstate.h"
+#include "arch/amd64.h"
+#include "x86-tdesc.h"
+#include "tdesc.h"
+
+/* The index of various registers inside the regcache.  */
+
+enum netbsd_x86_64_gdb_regnum
+{
+  AMD64_RAX_REGNUM,	     /* %rax */
+  AMD64_RBX_REGNUM,	     /* %rbx */
+  AMD64_RCX_REGNUM,	     /* %rcx */
+  AMD64_RDX_REGNUM,	     /* %rdx */
+  AMD64_RSI_REGNUM,	     /* %rsi */
+  AMD64_RDI_REGNUM,	     /* %rdi */
+  AMD64_RBP_REGNUM,	     /* %rbp */
+  AMD64_RSP_REGNUM,	     /* %rsp */
+  AMD64_R8_REGNUM,	      /* %r8 */
+  AMD64_R9_REGNUM,	      /* %r9 */
+  AMD64_R10_REGNUM,	     /* %r10 */
+  AMD64_R11_REGNUM,	     /* %r11 */
+  AMD64_R12_REGNUM,	     /* %r12 */
+  AMD64_R13_REGNUM,	     /* %r13 */
+  AMD64_R14_REGNUM,	     /* %r14 */
+  AMD64_R15_REGNUM,	     /* %r15 */
+  AMD64_RIP_REGNUM,	     /* %rip */
+  AMD64_EFLAGS_REGNUM,	  /* %eflags */
+  AMD64_CS_REGNUM,	      /* %cs */
+  AMD64_SS_REGNUM,	      /* %ss */
+  AMD64_DS_REGNUM,	      /* %ds */
+  AMD64_ES_REGNUM,	      /* %es */
+  AMD64_FS_REGNUM,	      /* %fs */
+  AMD64_GS_REGNUM,	      /* %gs */
+  AMD64_ST0_REGNUM = 24,     /* %st0 */
+  AMD64_ST1_REGNUM,	     /* %st1 */
+  AMD64_FCTRL_REGNUM = AMD64_ST0_REGNUM + 8,
+  AMD64_FSTAT_REGNUM = AMD64_ST0_REGNUM + 9,
+  AMD64_FTAG_REGNUM = AMD64_ST0_REGNUM + 10,
+  AMD64_XMM0_REGNUM = 40,   /* %xmm0 */
+  AMD64_XMM1_REGNUM,	    /* %xmm1 */
+  AMD64_MXCSR_REGNUM = AMD64_XMM0_REGNUM + 16,
+  AMD64_YMM0H_REGNUM,	   /* %ymm0h */
+  AMD64_YMM15H_REGNUM = AMD64_YMM0H_REGNUM + 15,
+  AMD64_BND0R_REGNUM = AMD64_YMM15H_REGNUM + 1,
+  AMD64_BND3R_REGNUM = AMD64_BND0R_REGNUM + 3,
+  AMD64_BNDCFGU_REGNUM,
+  AMD64_BNDSTATUS_REGNUM,
+  AMD64_XMM16_REGNUM,
+  AMD64_XMM31_REGNUM = AMD64_XMM16_REGNUM + 15,
+  AMD64_YMM16H_REGNUM,
+  AMD64_YMM31H_REGNUM = AMD64_YMM16H_REGNUM + 15,
+  AMD64_K0_REGNUM,
+  AMD64_K7_REGNUM = AMD64_K0_REGNUM + 7,
+  AMD64_ZMM0H_REGNUM,
+  AMD64_ZMM31H_REGNUM = AMD64_ZMM0H_REGNUM + 31,
+  AMD64_PKRU_REGNUM,
+  AMD64_FSBASE_REGNUM,
+  AMD64_GSBASE_REGNUM
+};
+
+/* The fill_function for the general-purpose register set.  */
+
+static void
+netbsd_x86_64_fill_gregset (struct regcache *regcache, char *buf)
+{
+  struct reg *r = (struct reg *) buf;
+
+#define netbsd_x86_64_collect_gp(regnum, fld) do {		\
+    collect_register (regcache, regnum, &r->regs[_REG_##fld]);	\
+  } while (0)
+
+  netbsd_x86_64_collect_gp (AMD64_RAX_REGNUM, RAX);
+  netbsd_x86_64_collect_gp (AMD64_RBX_REGNUM, RBX);
+  netbsd_x86_64_collect_gp (AMD64_RCX_REGNUM, RCX);
+  netbsd_x86_64_collect_gp (AMD64_RDX_REGNUM, RDX);
+  netbsd_x86_64_collect_gp (AMD64_RSI_REGNUM, RSI);
+  netbsd_x86_64_collect_gp (AMD64_RDI_REGNUM, RDI);
+  netbsd_x86_64_collect_gp (AMD64_RBP_REGNUM, RBP);
+  netbsd_x86_64_collect_gp (AMD64_RSP_REGNUM, RSP);
+  netbsd_x86_64_collect_gp (AMD64_R8_REGNUM, R8);
+  netbsd_x86_64_collect_gp (AMD64_R9_REGNUM, R9);
+  netbsd_x86_64_collect_gp (AMD64_R10_REGNUM, R10);
+  netbsd_x86_64_collect_gp (AMD64_R11_REGNUM, R11);
+  netbsd_x86_64_collect_gp (AMD64_R12_REGNUM, R12);
+  netbsd_x86_64_collect_gp (AMD64_R13_REGNUM, R13);
+  netbsd_x86_64_collect_gp (AMD64_R14_REGNUM, R14);
+  netbsd_x86_64_collect_gp (AMD64_R15_REGNUM, R15);
+  netbsd_x86_64_collect_gp (AMD64_RIP_REGNUM, RIP);
+  netbsd_x86_64_collect_gp (AMD64_EFLAGS_REGNUM, RFLAGS);
+  netbsd_x86_64_collect_gp (AMD64_CS_REGNUM, CS);
+  netbsd_x86_64_collect_gp (AMD64_SS_REGNUM, SS);
+  netbsd_x86_64_collect_gp (AMD64_DS_REGNUM, DS);
+  netbsd_x86_64_collect_gp (AMD64_ES_REGNUM, ES);
+  netbsd_x86_64_collect_gp (AMD64_FS_REGNUM, FS);
+  netbsd_x86_64_collect_gp (AMD64_GS_REGNUM, GS);
+}
+
+/* The store_function for the general-purpose register set.  */
+
+static void
+netbsd_x86_64_store_gregset (struct regcache *regcache, const char *buf)
+{
+  struct reg *r = (struct reg *) buf;
+
+#define netbsd_x86_64_supply_gp(regnum, fld) do {		\
+    supply_register (regcache, regnum, &r->regs[_REG_##fld]);	\
+  } while(0)
+
+  netbsd_x86_64_supply_gp (AMD64_RAX_REGNUM, RAX);
+  netbsd_x86_64_supply_gp (AMD64_RBX_REGNUM, RBX);
+  netbsd_x86_64_supply_gp (AMD64_RCX_REGNUM, RCX);
+  netbsd_x86_64_supply_gp (AMD64_RDX_REGNUM, RDX);
+  netbsd_x86_64_supply_gp (AMD64_RSI_REGNUM, RSI);
+  netbsd_x86_64_supply_gp (AMD64_RDI_REGNUM, RDI);
+  netbsd_x86_64_supply_gp (AMD64_RBP_REGNUM, RBP);
+  netbsd_x86_64_supply_gp (AMD64_RSP_REGNUM, RSP);
+  netbsd_x86_64_supply_gp (AMD64_R8_REGNUM, R8);
+  netbsd_x86_64_supply_gp (AMD64_R9_REGNUM, R9);
+  netbsd_x86_64_supply_gp (AMD64_R10_REGNUM, R10);
+  netbsd_x86_64_supply_gp (AMD64_R11_REGNUM, R11);
+  netbsd_x86_64_supply_gp (AMD64_R12_REGNUM, R12);
+  netbsd_x86_64_supply_gp (AMD64_R13_REGNUM, R13);
+  netbsd_x86_64_supply_gp (AMD64_R14_REGNUM, R14);
+  netbsd_x86_64_supply_gp (AMD64_R15_REGNUM, R15);
+  netbsd_x86_64_supply_gp (AMD64_RIP_REGNUM, RIP);
+  netbsd_x86_64_supply_gp (AMD64_EFLAGS_REGNUM, RFLAGS);
+  netbsd_x86_64_supply_gp (AMD64_CS_REGNUM, CS);
+  netbsd_x86_64_supply_gp (AMD64_SS_REGNUM, SS);
+  netbsd_x86_64_supply_gp (AMD64_DS_REGNUM, DS);
+  netbsd_x86_64_supply_gp (AMD64_ES_REGNUM, ES);
+  netbsd_x86_64_supply_gp (AMD64_FS_REGNUM, FS);
+  netbsd_x86_64_supply_gp (AMD64_GS_REGNUM, GS);
+}
+
+/* Implements the netbsd_target_ops.arch_setup routine.  */
+
+static void
+netbsd_x86_64_arch_setup (void)
+{
+  struct target_desc *tdesc
+    = amd64_create_target_description (X86_XSTATE_SSE_MASK, false, false, false);
+
+  init_target_desc (tdesc, amd64_expedite_regs);
+
+  netbsd_tdesc = tdesc;
+}
+
+/* Description of all the x86-netbsd register sets.  */
+
+struct netbsd_regset_info netbsd_target_regsets[] =
+{
+ /* General Purpose Registers.  */
+ {PT_GETREGS, PT_SETREGS, sizeof (struct reg),
+  netbsd_x86_64_fill_gregset, netbsd_x86_64_store_gregset},
+ /* End of list marker.  */
+ {0, 0, -1, NULL, NULL }
+};
+
+/* The netbsd_target_ops vector for x86-netbsd.  */
+
+struct netbsd_target_ops the_low_target =
+{
+ netbsd_x86_64_arch_setup,
+};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/netbsd-low.cc ./gdbserver/netbsd-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/netbsd-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/netbsd-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,1327 @@
+/* Copyright (C) 2020-2021 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 "server.h"
+#include "target.h"
+#include "netbsd-low.h"
+#include "nat/netbsd-nat.h"
+
+#include <sys/param.h>
+#include <sys/types.h>
+
+#include <sys/ptrace.h>
+#include <sys/sysctl.h>
+
+#include <limits.h>
+#include <unistd.h>
+#include <signal.h>
+
+#include <elf.h>
+
+#include <type_traits>
+
+#include "gdbsupport/eintr.h"
+#include "gdbsupport/gdb_wait.h"
+#include "gdbsupport/filestuff.h"
+#include "gdbsupport/common-inferior.h"
+#include "nat/fork-inferior.h"
+#include "hostio.h"
+
+int using_threads = 1;
+
+const struct target_desc *netbsd_tdesc;
+
+/* Call add_process with the given parameters, and initialize
+   the process' private data.  */
+
+static void
+netbsd_add_process (int pid, int attached)
+{
+  struct process_info *proc = add_process (pid, attached);
+  proc->tdesc = netbsd_tdesc;
+  proc->priv = nullptr;
+}
+
+/* Callback used by fork_inferior to start tracing the inferior.  */
+
+static void
+netbsd_ptrace_fun ()
+{
+  /* Switch child to its own process group so that signals won't
+     directly affect GDBserver. */
+  if (setpgid (0, 0) < 0)
+    trace_start_error_with_name (("setpgid"));
+
+  if (ptrace (PT_TRACE_ME, 0, nullptr, 0) < 0)
+    trace_start_error_with_name (("ptrace"));
+
+  /* If GDBserver is connected to gdb via stdio, redirect the inferior's
+     stdout to stderr so that inferior i/o doesn't corrupt the connection.
+     Also, redirect stdin to /dev/null.  */
+  if (remote_connection_is_stdio ())
+    {
+      if (close (0) < 0)
+	trace_start_error_with_name (("close"));
+      if (open ("/dev/null", O_RDONLY) < 0)
+	trace_start_error_with_name (("open"));
+      if (dup2 (2, 1) < 0)
+	trace_start_error_with_name (("dup2"));
+      if (write (2, "stdin/stdout redirected\n",
+		 sizeof ("stdin/stdout redirected\n") - 1) < 0)
+	{
+	  /* Errors ignored.  */
+	}
+    }
+}
+
+/* Implement the create_inferior method of the target_ops vector.  */
+
+int
+netbsd_process_target::create_inferior (const char *program,
+					const std::vector<char *> &program_args)
+{
+  std::string str_program_args = construct_inferior_arguments (program_args);
+
+  pid_t pid = fork_inferior (program, str_program_args.c_str (),
+			     get_environ ()->envp (), netbsd_ptrace_fun,
+			     nullptr, nullptr, nullptr, nullptr);
+
+  netbsd_add_process (pid, 0);
+
+  post_fork_inferior (pid, program);
+
+  return pid;
+}
+
+/* Implement the post_create_inferior target_ops method.  */
+
+void
+netbsd_process_target::post_create_inferior ()
+{
+  pid_t pid = current_process ()->pid;
+  netbsd_nat::enable_proc_events (pid);
+}
+
+/* Implement the attach target_ops method.  */
+
+int
+netbsd_process_target::attach (unsigned long pid)
+{
+  /* Unimplemented.  */
+  return -1;
+}
+
+/* Returns true if GDB is interested in any child syscalls.  */
+
+static bool
+gdb_catching_syscalls_p (pid_t pid)
+{
+  struct process_info *proc = find_process_pid (pid);
+  return !proc->syscalls_to_catch.empty ();
+}
+
+/* Implement the resume target_ops method.  */
+
+void
+netbsd_process_target::resume (struct thread_resume *resume_info, size_t n)
+{
+  ptid_t resume_ptid = resume_info[0].thread;
+  const int signal = resume_info[0].sig;
+  const bool step = resume_info[0].kind == resume_step;
+
+  if (resume_ptid == minus_one_ptid)
+    resume_ptid = ptid_of (current_thread);
+
+  const pid_t pid = resume_ptid.pid ();
+  const lwpid_t lwp = resume_ptid.lwp ();
+  regcache_invalidate_pid (pid);
+
+  auto fn
+    = [&] (ptid_t ptid)
+      {
+	if (step)
+	  {
+	    if (ptid.lwp () == lwp || n != 1)
+	      {
+		if (ptrace (PT_SETSTEP, pid, NULL, ptid.lwp ()) == -1)
+		  perror_with_name (("ptrace"));
+		if (ptrace (PT_RESUME, pid, NULL, ptid.lwp ()) == -1)
+		  perror_with_name (("ptrace"));
+	      }
+	    else
+	      {
+		if (ptrace (PT_CLEARSTEP, pid, NULL, ptid.lwp ()) == -1)
+		  perror_with_name (("ptrace"));
+		if (ptrace (PT_SUSPEND, pid, NULL, ptid.lwp ()) == -1)
+		  perror_with_name (("ptrace"));
+	      }
+	  }
+	else
+	  {
+	    if (ptrace (PT_CLEARSTEP, pid, NULL, ptid.lwp ()) == -1)
+	      perror_with_name (("ptrace"));
+	    if (ptrace (PT_RESUME, pid, NULL, ptid.lwp ()) == -1)
+	      perror_with_name (("ptrace"));
+	  }
+      };
+
+  netbsd_nat::for_each_thread (pid, fn);
+
+  int request = gdb_catching_syscalls_p (pid) ? PT_CONTINUE : PT_SYSCALL;
+
+  errno = 0;
+  ptrace (request, pid, (void *)1, signal);
+  if (errno)
+    perror_with_name (("ptrace"));
+}
+
+/* Returns true if GDB is interested in the reported SYSNO syscall.  */
+
+static bool
+netbsd_catch_this_syscall (int sysno)
+{
+  struct process_info *proc = current_process ();
+
+  if (proc->syscalls_to_catch.empty ())
+    return false;
+
+  if (proc->syscalls_to_catch[0] == ANY_SYSCALL)
+    return true;
+
+  for (int iter : proc->syscalls_to_catch)
+    if (iter == sysno)
+      return true;
+
+  return false;
+}
+
+/* Helper function for child_wait and the derivatives of child_wait.
+   HOSTSTATUS is the waitstatus from wait() or the equivalent; store our
+   translation of that in OURSTATUS.  */
+
+static void
+netbsd_store_waitstatus (struct target_waitstatus *ourstatus, int hoststatus)
+{
+  if (WIFEXITED (hoststatus))
+    {
+      ourstatus->kind = TARGET_WAITKIND_EXITED;
+      ourstatus->value.integer = WEXITSTATUS (hoststatus);
+    }
+  else if (!WIFSTOPPED (hoststatus))
+    {
+      ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
+      ourstatus->value.sig = gdb_signal_from_host (WTERMSIG (hoststatus));
+    }
+  else
+    {
+      ourstatus->kind = TARGET_WAITKIND_STOPPED;
+      ourstatus->value.sig = gdb_signal_from_host (WSTOPSIG (hoststatus));
+    }
+}
+
+/* Implement a safe wrapper around waitpid().  */
+
+static pid_t
+netbsd_waitpid (ptid_t ptid, struct target_waitstatus *ourstatus, int options)
+{
+  int status;
+
+  pid_t pid
+    = gdb::handle_eintr<int> (-1, ::waitpid, ptid.pid (), &status, options);
+
+  if (pid == -1)
+    perror_with_name (_("Child process unexpectedly missing"));
+
+  netbsd_store_waitstatus (ourstatus, status);
+  return pid;
+}
+
+
+/* Implement the wait target_ops method.
+
+   Wait for the child specified by PTID to do something.  Return the
+   process ID of the child, or MINUS_ONE_PTID in case of error; store
+   the status in *OURSTATUS.  */
+
+static ptid_t
+netbsd_wait (ptid_t ptid, struct target_waitstatus *ourstatus,
+	     int target_options)
+{
+  pid_t pid = netbsd_waitpid (ptid, ourstatus, target_options);
+  ptid_t wptid = ptid_t (pid);
+
+  if (pid == 0)
+    {
+      gdb_assert (target_options & TARGET_WNOHANG);
+      ourstatus->kind = TARGET_WAITKIND_IGNORE;
+      return null_ptid;
+    }
+
+  gdb_assert (pid != -1);
+
+  /* If the child stopped, keep investigating its status.  */
+  if (ourstatus->kind != TARGET_WAITKIND_STOPPED)
+    return wptid;
+
+  /* Extract the event and thread that received a signal.  */
+  ptrace_siginfo_t psi;
+  if (ptrace (PT_GET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
+    perror_with_name (("ptrace"));
+
+  /* Pick child's siginfo_t.  */
+  siginfo_t *si = &psi.psi_siginfo;
+
+  lwpid_t lwp = psi.psi_lwpid;
+
+  int signo = si->si_signo;
+  const int code = si->si_code;
+
+  /* Construct PTID with a specified thread that received the event.
+     If a signal was targeted to the whole process, lwp is 0.  */
+  wptid = ptid_t (pid, lwp, 0);
+
+  /* Bail out on non-debugger oriented signals.  */
+  if (signo != SIGTRAP)
+    return wptid;
+
+  /* Stop examining non-debugger oriented SIGTRAP codes.  */
+  if (code <= SI_USER || code == SI_NOINFO)
+    return wptid;
+
+  /* Process state for threading events.  */
+  ptrace_state_t pst = {};
+  if (code == TRAP_LWP)
+    if (ptrace (PT_GET_PROCESS_STATE, pid, &pst, sizeof (pst)) == -1)
+      perror_with_name (("ptrace"));
+
+  if (code == TRAP_LWP && pst.pe_report_event == PTRACE_LWP_EXIT)
+    {
+      /* If GDB attaches to a multi-threaded process, exiting
+	 threads might be skipped during post_attach that
+	 have not yet reported their PTRACE_LWP_EXIT event.
+	 Ignore exited events for an unknown LWP.  */
+      thread_info *thr = find_thread_ptid (wptid);
+      if (thr == nullptr)
+	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+      else
+	{
+	  ourstatus->kind = TARGET_WAITKIND_THREAD_EXITED;
+	  /* NetBSD does not store an LWP exit status.  */
+	  ourstatus->value.integer = 0;
+
+	  remove_thread (thr);
+	}
+      return wptid;
+    }
+
+  if (find_thread_ptid (ptid_t (pid)))
+    current_thread = find_thread_ptid (wptid);
+
+  if (code == TRAP_LWP && pst.pe_report_event == PTRACE_LWP_CREATE)
+    {
+      /* If GDB attaches to a multi-threaded process, newborn
+	 threads might be added by nbsd_add_threads that have
+	 not yet reported their PTRACE_LWP_CREATE event.  Ignore
+	 born events for an already-known LWP.  */
+      if (find_thread_ptid (wptid))
+	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+      else
+	{
+	  add_thread (wptid, NULL);
+	  ourstatus->kind = TARGET_WAITKIND_THREAD_CREATED;
+	}
+      return wptid;
+    }
+
+  if (code == TRAP_EXEC)
+    {
+      ourstatus->kind = TARGET_WAITKIND_EXECD;
+      ourstatus->value.execd_pathname
+	= xstrdup (netbsd_nat::pid_to_exec_file (pid));
+      return wptid;
+    }
+
+  if (code == TRAP_TRACE)
+      return wptid;
+
+  if (code == TRAP_SCE || code == TRAP_SCX)
+    {
+      int sysnum = si->si_sysnum;
+
+      if (!netbsd_catch_this_syscall(sysnum))
+	{
+	  /* If the core isn't interested in this event, ignore it.  */
+	  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+	  return wptid;
+	}
+
+      ourstatus->kind
+	= ((code == TRAP_SCE) ? TARGET_WAITKIND_SYSCALL_ENTRY :
+	   TARGET_WAITKIND_SYSCALL_RETURN);
+      ourstatus->value.syscall_number = sysnum;
+      return wptid;
+    }
+
+  if (code == TRAP_BRKPT)
+    {
+#ifdef PTRACE_BREAKPOINT_ADJ
+      CORE_ADDR pc;
+      struct reg r;
+      ptrace (PT_GETREGS, pid, &r, psi.psi_lwpid);
+      pc = PTRACE_REG_PC (&r);
+      PTRACE_REG_SET_PC (&r, pc - PTRACE_BREAKPOINT_ADJ);
+      ptrace (PT_SETREGS, pid, &r, psi.psi_lwpid);
+#endif
+      return wptid;
+    }
+
+  /* Unclassified SIGTRAP event.  */
+  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+  return wptid;
+}
+
+/* Implement the wait target_ops method.  */
+
+ptid_t
+netbsd_process_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
+			     int target_options)
+{
+  while (true)
+    {
+      ptid_t wptid = netbsd_wait (ptid, ourstatus, target_options);
+
+      /* Register thread in the gdbcore if a thread was not reported earlier.
+	 This is required after ::create_inferior, when the gdbcore does not
+	 know about the first internal thread.
+	 This may also happen on attach, when an event is registered on a thread
+	 that was not fully initialized during the attach stage.  */
+      if (wptid.lwp () != 0 && !find_thread_ptid (wptid)
+	  && ourstatus->kind != TARGET_WAITKIND_THREAD_EXITED)
+	add_thread (wptid, nullptr);
+
+      switch (ourstatus->kind)
+	{
+	case TARGET_WAITKIND_EXITED:
+	case TARGET_WAITKIND_STOPPED:
+	case TARGET_WAITKIND_SIGNALLED:
+	case TARGET_WAITKIND_FORKED:
+	case TARGET_WAITKIND_VFORKED:
+	case TARGET_WAITKIND_EXECD:
+	case TARGET_WAITKIND_VFORK_DONE:
+	case TARGET_WAITKIND_SYSCALL_ENTRY:
+	case TARGET_WAITKIND_SYSCALL_RETURN:
+	  /* Pass the result to the generic code.  */
+	  return wptid;
+	case TARGET_WAITKIND_THREAD_CREATED:
+	case TARGET_WAITKIND_THREAD_EXITED:
+	  /* The core needlessly stops on these events.  */
+	  /* FALLTHROUGH */
+	case TARGET_WAITKIND_SPURIOUS:
+	  /* Spurious events are unhandled by the gdbserver core.  */
+	  if (ptrace (PT_CONTINUE, current_process ()->pid, (void *) 1, 0)
+	      == -1)
+	    perror_with_name (("ptrace"));
+	  break;
+	default:
+	  error (("Unknown stopped status"));
+	}
+    }
+}
+
+/* Implement the kill target_ops method.  */
+
+int
+netbsd_process_target::kill (process_info *process)
+{
+  pid_t pid = process->pid;
+  if (ptrace (PT_KILL, pid, nullptr, 0) == -1)
+    return -1;
+
+  int status;
+  if (gdb::handle_eintr<int> (-1, ::waitpid, pid, &status, 0) == -1)
+    return -1;
+  mourn (process);
+  return 0;
+}
+
+/* Implement the detach target_ops method.  */
+
+int
+netbsd_process_target::detach (process_info *process)
+{
+  pid_t pid = process->pid;
+
+  ptrace (PT_DETACH, pid, (void *) 1, 0);
+  mourn (process);
+  return 0;
+}
+
+/* Implement the mourn target_ops method.  */
+
+void
+netbsd_process_target::mourn (struct process_info *proc)
+{
+  for_each_thread (proc->pid, remove_thread);
+
+  remove_process (proc);
+}
+
+/* Implement the join target_ops method.  */
+
+void
+netbsd_process_target::join (int pid)
+{
+  /* The PT_DETACH is sufficient to detach from the process.
+     So no need to do anything extra.  */
+}
+
+/* Implement the thread_alive target_ops method.  */
+
+bool
+netbsd_process_target::thread_alive (ptid_t ptid)
+{
+  return netbsd_nat::thread_alive (ptid);
+}
+
+/* Implement the fetch_registers target_ops method.  */
+
+void
+netbsd_process_target::fetch_registers (struct regcache *regcache, int regno)
+{
+  struct netbsd_regset_info *regset = netbsd_target_regsets;
+  ptid_t inferior_ptid = ptid_of (current_thread);
+
+  while (regset->size >= 0)
+    {
+      std::vector<char> buf;
+      buf.resize (regset->size);
+      int res = ptrace (regset->get_request, inferior_ptid.pid (), buf.data (),
+			inferior_ptid.lwp ());
+      if (res == -1)
+	perror_with_name (("ptrace"));
+      regset->store_function (regcache, buf.data ());
+      regset++;
+    }
+}
+
+/* Implement the store_registers target_ops method.  */
+
+void
+netbsd_process_target::store_registers (struct regcache *regcache, int regno)
+{
+  struct netbsd_regset_info *regset = netbsd_target_regsets;
+  ptid_t inferior_ptid = ptid_of (current_thread);
+
+  while (regset->size >= 0)
+    {
+      std::vector<char> buf;
+      buf.resize (regset->size);
+      int res = ptrace (regset->get_request, inferior_ptid.pid (), buf.data (),
+			inferior_ptid.lwp ());
+      if (res == -1)
+	perror_with_name (("ptrace"));
+
+      /* Then overlay our cached registers on that.  */
+      regset->fill_function (regcache, buf.data ());
+      /* Only now do we write the register set.  */
+      res = ptrace (regset->set_request, inferior_ptid.pid (), buf. data (),
+		    inferior_ptid.lwp ());
+      if (res == -1)
+	perror_with_name (("ptrace"));
+      regset++;
+    }
+}
+
+/* Implement the read_memory target_ops method.  */
+
+int
+netbsd_process_target::read_memory (CORE_ADDR memaddr, unsigned char *myaddr,
+				    int size)
+{
+  struct ptrace_io_desc io;
+  io.piod_op = PIOD_READ_D;
+  io.piod_len = size;
+
+  pid_t pid = current_process ()->pid;
+
+  int bytes_read = 0;
+
+  if (size == 0)
+    {
+      /* Zero length write always succeeds.  */
+      return 0;
+    }
+  do
+    {
+      io.piod_offs = (void *)(memaddr + bytes_read);
+      io.piod_addr = myaddr + bytes_read;
+
+      int rv = ptrace (PT_IO, pid, &io, 0);
+      if (rv == -1)
+	return errno;
+      if (io.piod_len == 0)
+	return 0;
+
+      bytes_read += io.piod_len;
+      io.piod_len = size - bytes_read;
+    }
+  while (bytes_read < size);
+
+  return 0;
+}
+
+/* Implement the write_memory target_ops method.  */
+
+int
+netbsd_process_target::write_memory (CORE_ADDR memaddr,
+				     const unsigned char *myaddr, int size)
+{
+  struct ptrace_io_desc io;
+  io.piod_op = PIOD_WRITE_D;
+  io.piod_len = size;
+
+  pid_t pid = current_process ()->pid;
+
+  int bytes_written = 0;
+
+  if (size == 0)
+    {
+      /* Zero length write always succeeds.  */
+      return 0;
+    }
+
+  do
+    {
+      io.piod_addr = (void *)(myaddr + bytes_written);
+      io.piod_offs = (void *)(memaddr + bytes_written);
+
+      int rv = ptrace (PT_IO, pid, &io, 0);
+      if (rv == -1)
+	return errno;
+      if (io.piod_len == 0)
+	return 0;
+
+      bytes_written += io.piod_len;
+      io.piod_len = size - bytes_written;
+    }
+  while (bytes_written < size);
+
+  return 0;
+}
+
+/* Implement the request_interrupt target_ops method.  */
+
+void
+netbsd_process_target::request_interrupt ()
+{
+  ptid_t inferior_ptid = ptid_of (get_first_thread ());
+
+  ::kill (inferior_ptid.pid(), SIGINT);
+}
+
+/* Read the AUX Vector for the specified PID, wrapping the ptrace(2) call
+   with the PIOD_READ_AUXV operation and using the PT_IO standard input
+   and output arguments.  */
+
+static size_t
+netbsd_read_auxv(pid_t pid, void *offs, void *addr, size_t len)
+{
+  struct ptrace_io_desc pio;
+
+  pio.piod_op = PIOD_READ_AUXV;
+  pio.piod_offs = offs;
+  pio.piod_addr = addr;
+  pio.piod_len = len;
+
+  if (ptrace (PT_IO, pid, &pio, 0) == -1)
+    perror_with_name (("ptrace"));
+
+  return pio.piod_len;
+}
+
+/* Copy LEN bytes from inferior's auxiliary vector starting at OFFSET
+   to debugger memory starting at MYADDR.  */
+
+int
+netbsd_process_target::read_auxv (CORE_ADDR offset,
+				  unsigned char *myaddr, unsigned int len)
+{
+  pid_t pid = pid_of (current_thread);
+
+  return netbsd_read_auxv (pid, (void *) (intptr_t) offset, myaddr, len);
+}
+
+bool
+netbsd_process_target::supports_z_point_type (char z_type)
+{
+  switch (z_type)
+    {
+    case Z_PACKET_SW_BP:
+      return true;
+    case Z_PACKET_HW_BP:
+    case Z_PACKET_WRITE_WP:
+    case Z_PACKET_READ_WP:
+    case Z_PACKET_ACCESS_WP:
+    default:
+      return false; /* Not supported.  */
+    }
+}
+
+/* Insert {break/watch}point at address ADDR.  SIZE is not used.  */
+
+int
+netbsd_process_target::insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		     int size, struct raw_breakpoint *bp)
+{
+  switch (type)
+    {
+    case raw_bkpt_type_sw:
+      return insert_memory_breakpoint (bp);
+    case raw_bkpt_type_hw:
+    case raw_bkpt_type_write_wp:
+    case raw_bkpt_type_read_wp:
+    case raw_bkpt_type_access_wp:
+    default:
+      return 1; /* Not supported.  */
+    }
+}
+
+/* Remove {break/watch}point at address ADDR.  SIZE is not used.  */
+
+int
+netbsd_process_target::remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
+				     int size, struct raw_breakpoint *bp)
+{
+  switch (type)
+    {
+    case raw_bkpt_type_sw:
+      return remove_memory_breakpoint (bp);
+    case raw_bkpt_type_hw:
+    case raw_bkpt_type_write_wp:
+    case raw_bkpt_type_read_wp:
+    case raw_bkpt_type_access_wp:
+    default:
+      return 1; /* Not supported.  */
+    }
+}
+
+/* Implement the stopped_by_sw_breakpoint target_ops method.  */
+
+bool
+netbsd_process_target::stopped_by_sw_breakpoint ()
+{
+  ptrace_siginfo_t psi;
+  pid_t pid = current_process ()->pid;
+
+  if (ptrace (PT_GET_SIGINFO, pid, &psi, sizeof (psi)) == -1)
+    perror_with_name (("ptrace"));
+
+  return psi.psi_siginfo.si_signo == SIGTRAP &&
+	 psi.psi_siginfo.si_code == TRAP_BRKPT;
+}
+
+/* Implement the supports_stopped_by_sw_breakpoint target_ops method.  */
+
+bool
+netbsd_process_target::supports_stopped_by_sw_breakpoint ()
+{
+  return true;
+}
+
+/* Implement the supports_qxfer_siginfo target_ops method.  */
+
+bool
+netbsd_process_target::supports_qxfer_siginfo ()
+{
+  return true;
+}
+
+/* Implement the qxfer_siginfo target_ops method.  */
+
+int
+netbsd_process_target::qxfer_siginfo (const char *annex, unsigned char *readbuf,
+				      unsigned const char *writebuf,
+				      CORE_ADDR offset, int len)
+{
+  if (current_thread == nullptr)
+    return -1;
+
+  pid_t pid = current_process ()->pid;
+
+  return netbsd_nat::qxfer_siginfo(pid, annex, readbuf, writebuf, offset, len);
+}
+
+/* Implement the supports_non_stop target_ops method.  */
+
+bool
+netbsd_process_target::supports_non_stop ()
+{
+  return false;
+}
+
+/* Implement the supports_multi_process target_ops method.  */
+
+bool
+netbsd_process_target::supports_multi_process ()
+{
+  return true;
+}
+
+/* Check if fork events are supported.  */
+
+bool
+netbsd_process_target::supports_fork_events ()
+{
+  return false;
+}
+
+/* Check if vfork events are supported.  */
+
+bool
+netbsd_process_target::supports_vfork_events ()
+{
+  return false;
+}
+
+/* Check if exec events are supported.  */
+
+bool
+netbsd_process_target::supports_exec_events ()
+{
+  return true;
+}
+
+/* Implement the supports_disable_randomization target_ops method.  */
+
+bool
+netbsd_process_target::supports_disable_randomization ()
+{
+  return false;
+}
+
+/* Extract &phdr and num_phdr in the inferior.  Return 0 on success.  */
+
+template <typename T>
+int get_phdr_phnum_from_proc_auxv (const pid_t pid,
+				   CORE_ADDR *phdr_memaddr, int *num_phdr)
+{
+  typedef typename std::conditional<sizeof(T) == sizeof(int64_t),
+				    Aux64Info, Aux32Info>::type auxv_type;
+  const size_t auxv_size = sizeof (auxv_type);
+  const size_t auxv_buf_size = 128 * sizeof (auxv_type);
+
+  std::vector<char> auxv_buf;
+  auxv_buf.resize (auxv_buf_size);
+
+  netbsd_read_auxv (pid, nullptr, auxv_buf.data (), auxv_buf_size);
+
+  *phdr_memaddr = 0;
+  *num_phdr = 0;
+
+  for (char *buf = auxv_buf.data ();
+       buf < (auxv_buf.data () + auxv_buf_size);
+       buf += auxv_size)
+    {
+      auxv_type *const aux = (auxv_type *) buf;
+
+      switch (aux->a_type)
+	{
+	case AT_PHDR:
+	  *phdr_memaddr = aux->a_v;
+	  break;
+	case AT_PHNUM:
+	  *num_phdr = aux->a_v;
+	  break;
+	}
+
+      if (*phdr_memaddr != 0 && *num_phdr != 0)
+	break;
+    }
+
+  if (*phdr_memaddr == 0 || *num_phdr == 0)
+    {
+      warning ("Unexpected missing AT_PHDR and/or AT_PHNUM: "
+	       "phdr_memaddr = %s, phdr_num = %d",
+	       core_addr_to_string (*phdr_memaddr), *num_phdr);
+      return 2;
+    }
+
+  return 0;
+}
+
+/* Return &_DYNAMIC (via PT_DYNAMIC) in the inferior, or 0 if not present.  */
+
+template <typename T>
+static CORE_ADDR
+get_dynamic (netbsd_process_target *target, const pid_t pid)
+{
+  typedef typename std::conditional<sizeof(T) == sizeof(int64_t),
+				    Elf64_Phdr, Elf32_Phdr>::type phdr_type;
+  const int phdr_size = sizeof (phdr_type);
+
+  CORE_ADDR phdr_memaddr;
+  int num_phdr;
+  if (get_phdr_phnum_from_proc_auxv<T> (pid, &phdr_memaddr, &num_phdr))
+    return 0;
+
+  std::vector<unsigned char> phdr_buf;
+  phdr_buf.resize (num_phdr * phdr_size);
+
+  if (target->read_memory (phdr_memaddr, phdr_buf.data (), phdr_buf.size ()))
+    return 0;
+
+  /* Compute relocation: it is expected to be 0 for "regular" executables,
+     non-zero for PIE ones.  */
+  CORE_ADDR relocation = -1;
+  for (int i = 0; relocation == -1 && i < num_phdr; i++)
+    {
+      phdr_type *const p = (phdr_type *) (phdr_buf.data() + i * phdr_size);
+
+      if (p->p_type == PT_PHDR)
+	relocation = phdr_memaddr - p->p_vaddr;
+    }
+
+  if (relocation == -1)
+    {
+      /* PT_PHDR is optional, but necessary for PIE in general.  Fortunately
+	 any real world executables, including PIE executables, have always
+	 PT_PHDR present.  PT_PHDR is not present in some shared libraries or
+	 in fpc (Free Pascal 2.4) binaries but neither of those have a need for
+	 or present DT_DEBUG anyway (fpc binaries are statically linked).
+
+	 Therefore if there exists DT_DEBUG there is always also PT_PHDR.
+
+	 GDB could find RELOCATION also from AT_ENTRY - e_entry.  */
+
+      return 0;
+    }
+
+  for (int i = 0; i < num_phdr; i++)
+    {
+      phdr_type *const p = (phdr_type *) (phdr_buf.data () + i * phdr_size);
+
+      if (p->p_type == PT_DYNAMIC)
+	return p->p_vaddr + relocation;
+    }
+
+  return 0;
+}
+
+/* Return &_r_debug in the inferior, or -1 if not present.  Return value
+   can be 0 if the inferior does not yet have the library list initialized.
+   We look for DT_MIPS_RLD_MAP first.  MIPS executables use this instead of
+   DT_DEBUG, although they sometimes contain an unused DT_DEBUG entry too.  */
+
+template <typename T>
+static CORE_ADDR
+get_r_debug (netbsd_process_target *target, const int pid)
+{
+  typedef typename std::conditional<sizeof(T) == sizeof(int64_t),
+				    Elf64_Dyn, Elf32_Dyn>::type dyn_type;
+  const int dyn_size = sizeof (dyn_type);
+  unsigned char buf[sizeof (dyn_type)];  /* The larger of the two.  */
+  CORE_ADDR map = -1;
+
+  CORE_ADDR dynamic_memaddr = get_dynamic<T> (target, pid);
+  if (dynamic_memaddr == 0)
+    return map;
+
+  while (target->read_memory (dynamic_memaddr, buf, dyn_size) == 0)
+    {
+      dyn_type *const dyn = (dyn_type *) buf;
+#if defined DT_MIPS_RLD_MAP
+      union
+      {
+	T map;
+	unsigned char buf[sizeof (T)];
+      }
+      rld_map;
+
+      if (dyn->d_tag == DT_MIPS_RLD_MAP)
+	{
+	  if (read_memory (dyn->d_un.d_val,
+			   rld_map.buf, sizeof (rld_map.buf)) == 0)
+	    return rld_map.map;
+	  else
+	    break;
+	}
+#endif  /* DT_MIPS_RLD_MAP */
+
+      if (dyn->d_tag == DT_DEBUG && map == -1)
+	map = dyn->d_un.d_val;
+
+      if (dyn->d_tag == DT_NULL)
+	break;
+
+      dynamic_memaddr += dyn_size;
+    }
+
+  return map;
+}
+
+/* Read one pointer from MEMADDR in the inferior.  */
+
+static int
+read_one_ptr (netbsd_process_target *target, CORE_ADDR memaddr, CORE_ADDR *ptr,
+	      int ptr_size)
+{
+  /* Go through a union so this works on either big or little endian
+     hosts, when the inferior's pointer size is smaller than the size
+     of CORE_ADDR.  It is assumed the inferior's endianness is the
+     same of the superior's.  */
+
+  union
+  {
+    CORE_ADDR core_addr;
+    unsigned int ui;
+    unsigned char uc;
+  } addr;
+
+  int ret = target->read_memory (memaddr, &addr.uc, ptr_size);
+  if (ret == 0)
+    {
+      if (ptr_size == sizeof (CORE_ADDR))
+	*ptr = addr.core_addr;
+      else if (ptr_size == sizeof (unsigned int))
+	*ptr = addr.ui;
+      else
+	gdb_assert_not_reached ("unhandled pointer size");
+    }
+  return ret;
+}
+
+/* Construct qXfer:libraries-svr4:read reply.  */
+
+template <typename T>
+int
+netbsd_qxfer_libraries_svr4 (netbsd_process_target *target,
+			     const pid_t pid, const char *annex,
+			     unsigned char *readbuf,
+			     unsigned const char *writebuf,
+			     CORE_ADDR offset, int len)
+{
+  struct link_map_offsets
+  {
+    /* Offset and size of r_debug.r_version.  */
+    int r_version_offset;
+
+    /* Offset and size of r_debug.r_map.  */
+    int r_map_offset;
+
+    /* Offset to l_addr field in struct link_map.  */
+    int l_addr_offset;
+
+    /* Offset to l_name field in struct link_map.  */
+    int l_name_offset;
+
+    /* Offset to l_ld field in struct link_map.  */
+    int l_ld_offset;
+
+    /* Offset to l_next field in struct link_map.  */
+    int l_next_offset;
+
+    /* Offset to l_prev field in struct link_map.  */
+    int l_prev_offset;
+  };
+
+  static const struct link_map_offsets lmo_32bit_offsets =
+    {
+      0,     /* r_version offset. */
+      4,     /* r_debug.r_map offset.  */
+      0,     /* l_addr offset in link_map.  */
+      4,     /* l_name offset in link_map.  */
+      8,     /* l_ld offset in link_map.  */
+      12,    /* l_next offset in link_map.  */
+      16     /* l_prev offset in link_map.  */
+    };
+
+  static const struct link_map_offsets lmo_64bit_offsets =
+    {
+      0,     /* r_version offset. */
+      8,     /* r_debug.r_map offset.  */
+      0,     /* l_addr offset in link_map.  */
+      8,     /* l_name offset in link_map.  */
+      16,    /* l_ld offset in link_map.  */
+      24,    /* l_next offset in link_map.  */
+      32     /* l_prev offset in link_map.  */
+    };
+
+  CORE_ADDR lm_addr = 0, lm_prev = 0;
+  CORE_ADDR l_name, l_addr, l_ld, l_next, l_prev;
+  int header_done = 0;
+
+  const struct link_map_offsets *lmo
+    = ((sizeof (T) == sizeof (int64_t))
+       ? &lmo_64bit_offsets : &lmo_32bit_offsets);
+  int ptr_size = sizeof (T);
+
+  while (annex[0] != '\0')
+    {
+      const char *sep = strchr (annex, '=');
+      if (sep == nullptr)
+	break;
+
+      int name_len = sep - annex;
+      CORE_ADDR *addrp;
+      if (name_len == 5 && startswith (annex, "start"))
+	addrp = &lm_addr;
+      else if (name_len == 4 && startswith (annex, "prev"))
+	addrp = &lm_prev;
+      else
+	{
+	  annex = strchr (sep, ';');
+	  if (annex == nullptr)
+	    break;
+	  annex++;
+	  continue;
+	}
+
+      annex = decode_address_to_semicolon (addrp, sep + 1);
+    }
+
+  if (lm_addr == 0)
+    {
+      CORE_ADDR r_debug = get_r_debug<T> (target, pid);
+
+      /* We failed to find DT_DEBUG.  Such situation will not change
+	 for this inferior - do not retry it.  Report it to GDB as
+	 E01, see for the reasons at the GDB solib-svr4.c side.  */
+      if (r_debug == (CORE_ADDR) -1)
+	return -1;
+
+      if (r_debug != 0)
+	{
+	  CORE_ADDR map_offset = r_debug + lmo->r_map_offset;
+	  if (read_one_ptr (target, map_offset, &lm_addr, ptr_size) != 0)
+	    warning ("unable to read r_map from %s",
+		     core_addr_to_string (map_offset));
+	}
+    }
+
+  std::string document = "<library-list-svr4 version=\"1.0\"";
+
+  while (lm_addr
+	 && read_one_ptr (target, lm_addr + lmo->l_name_offset,
+			  &l_name, ptr_size) == 0
+	 && read_one_ptr (target, lm_addr + lmo->l_addr_offset,
+			  &l_addr, ptr_size) == 0
+	 && read_one_ptr (target, lm_addr + lmo->l_ld_offset,
+			  &l_ld, ptr_size) == 0
+	 && read_one_ptr (target, lm_addr + lmo->l_prev_offset,
+			  &l_prev, ptr_size) == 0
+	 && read_one_ptr (target, lm_addr + lmo->l_next_offset,
+			  &l_next, ptr_size) == 0)
+    {
+      if (lm_prev != l_prev)
+	{
+	  warning ("Corrupted shared library list: 0x%lx != 0x%lx",
+		   (long) lm_prev, (long) l_prev);
+	  break;
+	}
+
+      /* Ignore the first entry even if it has valid name as the first entry
+	 corresponds to the main executable.  The first entry should not be
+	 skipped if the dynamic loader was loaded late by a static executable
+	 (see solib-svr4.c parameter ignore_first).  But in such case the main
+	 executable does not have PT_DYNAMIC present and this function already
+	 exited above due to failed get_r_debug.  */
+      if (lm_prev == 0)
+	string_appendf (document, " main-lm=\"0x%lx\"",
+			(unsigned long) lm_addr);
+      else
+	{
+	  unsigned char libname[PATH_MAX];
+
+	  /* Not checking for error because reading may stop before
+	     we've got PATH_MAX worth of characters.  */
+	  libname[0] = '\0';
+	  target->read_memory (l_name, libname, sizeof (libname) - 1);
+	  libname[sizeof (libname) - 1] = '\0';
+	  if (libname[0] != '\0')
+	    {
+	      if (!header_done)
+		{
+		  /* Terminate `<library-list-svr4'.  */
+		  document += '>';
+		  header_done = 1;
+		}
+
+	      string_appendf (document, "<library name=\"");
+	      xml_escape_text_append (&document, (char *) libname);
+	      string_appendf (document, "\" lm=\"0x%lx\" "
+			      "l_addr=\"0x%lx\" l_ld=\"0x%lx\"/>",
+			      (unsigned long) lm_addr, (unsigned long) l_addr,
+			      (unsigned long) l_ld);
+	    }
+	}
+
+      lm_prev = lm_addr;
+      lm_addr = l_next;
+    }
+
+  if (!header_done)
+    {
+      /* Empty list; terminate `<library-list-svr4'.  */
+      document += "/>";
+    }
+  else
+    document += "</library-list-svr4>";
+
+  int document_len = document.length ();
+  if (offset < document_len)
+    document_len -= offset;
+  else
+    document_len = 0;
+  if (len > document_len)
+    len = document_len;
+
+  memcpy (readbuf, document.data () + offset, len);
+
+  return len;
+}
+
+/* Return true if FILE is a 64-bit ELF file,
+   false if the file is not a 64-bit ELF file,
+   and error if the file is not accessible or doesn't exist.  */
+
+static bool
+elf_64_file_p (const char *file)
+{
+  int fd = gdb::handle_eintr<int> (-1, ::open, file, O_RDONLY);
+  if (fd < 0)
+    perror_with_name (("open"));
+
+  Elf64_Ehdr header;
+  ssize_t ret = gdb::handle_eintr<ssize_t> (-1, ::read, fd, &header, sizeof (header));
+  if (ret == -1)
+    perror_with_name (("read"));
+  gdb::handle_eintr<int> (-1, ::close, fd);
+  if (ret != sizeof (header))
+    error ("Cannot read ELF file header: %s", file);
+
+  if (header.e_ident[EI_MAG0] != ELFMAG0
+      || header.e_ident[EI_MAG1] != ELFMAG1
+      || header.e_ident[EI_MAG2] != ELFMAG2
+      || header.e_ident[EI_MAG3] != ELFMAG3)
+    error ("Unrecognized ELF file header: %s", file);
+
+  return header.e_ident[EI_CLASS] == ELFCLASS64;
+}
+
+/* Construct qXfer:libraries-svr4:read reply.  */
+
+int
+netbsd_process_target::qxfer_libraries_svr4 (const char *annex,
+					     unsigned char *readbuf,
+					     unsigned const char *writebuf,
+					     CORE_ADDR offset, int len)
+{
+  if (writebuf != nullptr)
+    return -2;
+  if (readbuf == nullptr)
+    return -1;
+
+  struct process_info *proc = current_process ();
+  pid_t pid = proc->pid;
+  bool is_elf64 = elf_64_file_p (netbsd_nat::pid_to_exec_file (pid));
+
+  if (is_elf64)
+    return netbsd_qxfer_libraries_svr4<int64_t> (this, pid, annex, readbuf,
+						 writebuf, offset, len);
+  else
+    return netbsd_qxfer_libraries_svr4<int32_t> (this, pid, annex, readbuf,
+						 writebuf, offset, len);
+}
+
+/* Implement the supports_qxfer_libraries_svr4 target_ops method.  */
+
+bool
+netbsd_process_target::supports_qxfer_libraries_svr4 ()
+{
+  return true;
+}
+
+/* Return the name of a file that can be opened to get the symbols for
+   the child process identified by PID.  */
+
+char *
+netbsd_process_target::pid_to_exec_file (pid_t pid)
+{
+  return const_cast<char *> (netbsd_nat::pid_to_exec_file (pid));
+}
+
+/* Implementation of the target_ops method "supports_pid_to_exec_file".  */
+
+bool
+netbsd_process_target::supports_pid_to_exec_file ()
+{
+  return true;
+}
+
+/* Implementation of the target_ops method "supports_hardware_single_step".  */
+bool
+netbsd_process_target::supports_hardware_single_step ()
+{
+  return true;
+}
+
+/* Implementation of the target_ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+netbsd_process_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  static gdb_byte brkpt[PTRACE_BREAKPOINT_SIZE] = {*PTRACE_BREAKPOINT};
+
+  *size = PTRACE_BREAKPOINT_SIZE;
+
+  return brkpt;
+}
+
+/* Implement the thread_name target_ops method.  */
+
+const char *
+netbsd_process_target::thread_name (ptid_t ptid)
+{
+  return netbsd_nat::thread_name (ptid);
+}
+
+/* Implement the supports_catch_syscall target_ops method.  */
+
+bool
+netbsd_process_target::supports_catch_syscall ()
+{
+  return true;
+}
+
+/* Implement the supports_read_auxv target_ops method.  */
+
+bool
+netbsd_process_target::supports_read_auxv ()
+{
+  return true;
+}
+
+/* The NetBSD target ops object.  */
+
+static netbsd_process_target the_netbsd_target;
+
+void
+initialize_low ()
+{
+  set_target_ops (&the_netbsd_target);
+  the_low_target.arch_setup ();
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/netbsd-low.h ./gdbserver/netbsd-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/netbsd-low.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/netbsd-low.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,154 @@
+/* Copyright (C) 2020-2021 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 GDBSERVER_NETBSD_LOW_H
+#define GDBSERVER_NETBSD_LOW_H
+
+struct regcache;
+struct target_desc;
+
+/*  Some information relative to a given register set.   */
+
+struct netbsd_regset_info
+{
+  /* The ptrace request needed to get/set registers of this set.  */
+  int get_request, set_request;
+  /* The size of the register set.  */
+  int size;
+  /* Fill the buffer BUF from the contents of the given REGCACHE.  */
+  void (*fill_function) (struct regcache *regcache, char *buf);
+  /* Store the register value in BUF in the given REGCACHE.  */
+  void (*store_function) (struct regcache *regcache, const char *buf);
+};
+
+/* A list of regsets for the target being debugged, terminated by an entry
+   where the size is negative.
+
+   This list should be created by the target-specific code.  */
+
+extern struct netbsd_regset_info netbsd_target_regsets[];
+
+/* The target-specific operations for NetBSD support.  */
+
+struct netbsd_target_ops
+{
+  /* Architecture-specific setup.  */
+  void (*arch_setup) ();
+};
+
+/* Target ops definitions for a NetBSD target.  */
+
+class netbsd_process_target : public process_stratum_target
+{
+public:
+
+  int create_inferior (const char *program,
+		       const std::vector<char *> &program_args) override;
+
+  void post_create_inferior () override;
+
+  int attach (unsigned long pid) override;
+
+  int kill (process_info *proc) override;
+
+  int detach (process_info *proc) override;
+
+  void mourn (process_info *proc) override;
+
+  void join (int pid) override;
+
+  bool thread_alive (ptid_t pid) override;
+
+  void resume (thread_resume *resume_info, size_t n) override;
+
+  ptid_t wait (ptid_t ptid, target_waitstatus *status,
+	       int options) override;
+
+  void fetch_registers (regcache *regcache, int regno) override;
+
+  void store_registers (regcache *regcache, int regno) override;
+
+  int read_memory (CORE_ADDR memaddr, unsigned char *myaddr,
+		   int len) override;
+
+  int write_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
+		    int len) override;
+
+  void request_interrupt () override;
+
+  bool supports_read_auxv () override;
+
+  int read_auxv (CORE_ADDR offset, unsigned char *myaddr,
+		 unsigned int len) override;
+
+  bool supports_hardware_single_step () override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+  bool supports_z_point_type (char z_type) override;
+
+  int insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		    int size, struct raw_breakpoint *bp) override;
+
+  int remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		    int size, struct raw_breakpoint *bp) override;
+
+  bool stopped_by_sw_breakpoint () override;
+
+  bool supports_qxfer_siginfo () override;
+
+  int qxfer_siginfo (const char *annex, unsigned char *readbuf,
+		     unsigned const char *writebuf, CORE_ADDR offset,
+		     int len) override;
+
+  bool supports_stopped_by_sw_breakpoint () override;
+
+  bool supports_non_stop () override;
+
+  bool supports_multi_process () override;
+
+  bool supports_fork_events () override;
+
+  bool supports_vfork_events () override;
+
+  bool supports_exec_events () override;
+
+  bool supports_disable_randomization () override;
+
+  bool supports_qxfer_libraries_svr4 () override;
+
+  int qxfer_libraries_svr4 (const char*, unsigned char*, const unsigned char*,
+			    CORE_ADDR, int) override;
+
+  bool supports_pid_to_exec_file () override;
+
+  char *pid_to_exec_file (int pid) override;
+
+  const char *thread_name (ptid_t thread) override;
+
+  bool supports_catch_syscall () override;
+};
+
+/* The inferior's target description.  This is a global because the
+   NetBSD ports support neither bi-arch nor multi-process.  */
+
+extern struct netbsd_target_ops the_low_target;
+
+/* XXX: multilib */
+extern const struct target_desc *netbsd_tdesc;
+
+#endif /* GDBSERVER_NETBSD_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/notif.cc ./gdbserver/notif.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/notif.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/notif.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,154 @@
+/* Notification to GDB.
+   Copyright (C) 1989-2021 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/>.  */
+
+/* Async notifications to GDB.  When the state of remote target is
+   changed or something interesting to GDB happened, async
+   notifications are used to tell GDB.
+
+   Each type of notification is represented by an object
+   'struct notif_server', in which there is a queue for events to GDB
+   represented by 'struct notif_event'.  GDBserver writes (by means of
+   'write' field) each event in the queue into the buffer and send the
+   contents in buffer to GDB.  The contents in buffer is specified in
+   RSP.  See more in the comments to field 'queue' of
+   'struct notif_server'.
+
+   Here is the workflow of sending events and managing queue:
+   1.  At any time, when something interesting FOO happens, a object
+   of 'struct notif_event' or its sub-class EVENT is created for FOO.
+
+   2.  Enque EVENT to the 'queue' field of 'struct notif_server' for
+   FOO and send corresponding notification packet to GDB if EVENT is
+   the first one.
+   #1 and #2 are done by function 'notif_push'.
+
+   3.  EVENT is not deque'ed until the ack of FOO from GDB arrives.
+   Before ack of FOO arrives, FOO happens again, a new object of
+   EVENT is created and enque EVENT silently.
+   Once GDB has a chance to ack to FOO, it sends an ack to GDBserver,
+   and GDBserver repeatedly sends events to GDB and gets ack of FOO,
+   until queue is empty.  Then, GDBserver sends 'OK' to GDB that all
+   queued notification events are done.
+
+   # 3 is done by function 'handle_notif_ack'.  */
+
+#include "server.h"
+#include "notif.h"
+
+static struct notif_server *notifs[] =
+{
+  &notif_stop,
+};
+
+/* Write another event or an OK, if there are no more left, to
+   OWN_BUF.  */
+
+void
+notif_write_event (struct notif_server *notif, char *own_buf)
+{
+  if (!notif->queue.empty ())
+    {
+      struct notif_event *event = notif->queue.front ();
+
+      notif->write (event, own_buf);
+    }
+  else
+    write_ok (own_buf);
+}
+
+/* Handle the ack in buffer OWN_BUF,and packet length is PACKET_LEN.
+   Return 1 if the ack is handled, and return 0 if the contents
+   in OWN_BUF is not a ack.  */
+
+int
+handle_notif_ack (char *own_buf, int packet_len)
+{
+  size_t i;
+  struct notif_server *np;
+
+  for (i = 0; i < ARRAY_SIZE (notifs); i++)
+    {
+      const char *ack_name = notifs[i]->ack_name;
+
+      if (startswith (own_buf, ack_name)
+	  && packet_len == strlen (ack_name))
+	break;
+    }
+
+  if (i == ARRAY_SIZE (notifs))
+    return 0;
+
+  np = notifs[i];
+
+  /* If we're waiting for GDB to acknowledge a pending event,
+     consider that done.  */
+  if (!np->queue.empty ())
+    {
+      struct notif_event *head = np->queue.front ();
+      np->queue.pop_front ();
+
+      if (remote_debug)
+	debug_printf ("%s: acking %d\n", np->ack_name,
+		      (int) np->queue.size ());
+
+      delete head;
+    }
+
+  notif_write_event (np, own_buf);
+
+  return 1;
+}
+
+/* Put EVENT to the queue of NOTIF.  */
+
+void
+notif_event_enque (struct notif_server *notif,
+		   struct notif_event *event)
+{
+  notif->queue.push_back (event);
+
+  if (remote_debug)
+    debug_printf ("pending events: %s %d\n", notif->notif_name,
+		  (int) notif->queue.size ());
+
+}
+
+/* Push one event NEW_EVENT of notification NP into NP->queue.  */
+
+void
+notif_push (struct notif_server *np, struct notif_event *new_event)
+{
+  bool is_first_event = np->queue.empty ();
+
+  /* Something interesting.  Tell GDB about it.  */
+  notif_event_enque (np, new_event);
+
+  /* If this is the first stop reply in the queue, then inform GDB
+     about it, by sending a corresponding notification.  */
+  if (is_first_event)
+    {
+      char buf[PBUFSIZ];
+      char *p = buf;
+
+      xsnprintf (p, PBUFSIZ, "%s:", np->notif_name);
+      p += strlen (p);
+
+      np->write (new_event, p);
+      putpkt_notif (buf);
+    }
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/notif.h ./gdbserver/notif.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/notif.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/notif.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,68 @@
+/* Notification to GDB.
+   Copyright (C) 1989-2021 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 GDBSERVER_NOTIF_H
+#define GDBSERVER_NOTIF_H
+
+#include "target.h"
+#include <list>
+
+/* Structure holding information related to a single event.  We
+   keep a queue of these to push to GDB.  It can be extended if
+   the event of given notification contains more information.  */
+
+struct notif_event
+{
+  virtual ~notif_event ()
+  {
+  }
+
+  /* No payload needed.  */
+};
+
+/* A type notification to GDB.  An object of 'struct notif_server'
+   represents a type of notification.  */
+
+typedef struct notif_server
+{
+  /* The name of ack packet, for example, 'vStopped'.  */
+  const char *ack_name;
+
+  /* The notification packet, for example, '%Stop'.  Note that '%' is
+     not in 'notif_name'.  */
+  const char *notif_name;
+
+  /* A queue of events to GDB.  A new notif_event can be enque'ed
+     into QUEUE at any appropriate time, and the notif_reply is
+     deque'ed only when the ack from GDB arrives.  */
+  std::list<notif_event *> queue;
+
+  /* Write event EVENT to OWN_BUF.  */
+  void (*write) (struct notif_event *event, char *own_buf);
+} *notif_server_p;
+
+extern struct notif_server notif_stop;
+
+int handle_notif_ack (char *own_buf, int packet_len);
+void notif_write_event (struct notif_server *notif, char *own_buf);
+
+void notif_push (struct notif_server *np, struct notif_event *event);
+void notif_event_enque (struct notif_server *notif,
+			struct notif_event *event);
+
+#endif /* GDBSERVER_NOTIF_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/proc-service.cc ./gdbserver/proc-service.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/proc-service.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/proc-service.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,165 @@
+/* libthread_db helper functions for the remote server for GDB.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
+
+   Contributed by MontaVista Software.
+
+   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 "server.h"
+
+/* This file is currently tied to GNU/Linux.  It should scale well to
+   another libthread_db implementation, with the appropriate gdbserver
+   hooks, but for now this means we can use GNU/Linux's target data.  */
+
+#include "linux-low.h"
+
+#include "gdb_proc_service.h"
+
+typedef struct ps_prochandle *gdb_ps_prochandle_t;
+typedef void *gdb_ps_read_buf_t;
+typedef const void *gdb_ps_write_buf_t;
+typedef size_t gdb_ps_size_t;
+
+#ifdef HAVE_LINUX_REGSETS
+#define HAVE_REGSETS
+#endif
+
+#ifdef HAVE_REGSETS
+static struct regset_info *
+gregset_info (void)
+{
+  int i = 0;
+  const regs_info *regs_info = the_linux_target->get_regs_info ();
+  struct regsets_info *regsets_info = regs_info->regsets_info;
+
+  while (regsets_info->regsets[i].size != -1)
+    {
+      if (regsets_info->regsets[i].type == GENERAL_REGS)
+	break;
+      i++;
+    }
+
+  return &regsets_info->regsets[i];
+}
+#endif
+
+/* Search for the symbol named NAME within the object named OBJ within
+   the target process PH.  If the symbol is found the address of the
+   symbol is stored in SYM_ADDR.  */
+
+ps_err_e
+ps_pglobal_lookup (gdb_ps_prochandle_t ph, const char *obj,
+		   const char *name, psaddr_t *sym_addr)
+{
+  CORE_ADDR addr;
+
+  if (thread_db_look_up_one_symbol (name, &addr) == 0)
+    return PS_NOSYM;
+
+  *sym_addr = (psaddr_t) (unsigned long) addr;
+  return PS_OK;
+}
+
+/* Read SIZE bytes from the target process PH at address ADDR and copy
+   them into BUF.  */
+
+ps_err_e
+ps_pdread (gdb_ps_prochandle_t ph, psaddr_t addr,
+	   gdb_ps_read_buf_t buf, gdb_ps_size_t size)
+{
+  if (read_inferior_memory ((uintptr_t) addr, (gdb_byte *) buf, size) != 0)
+    return PS_ERR;
+  return PS_OK;
+}
+
+/* Write SIZE bytes from BUF into the target process PH at address ADDR.  */
+
+ps_err_e
+ps_pdwrite (gdb_ps_prochandle_t ph, psaddr_t addr,
+	    gdb_ps_write_buf_t buf, gdb_ps_size_t size)
+{
+  if (target_write_memory ((uintptr_t) addr, (const gdb_byte *) buf, size)
+      != 0)
+    return PS_ERR;
+  return PS_OK;
+}
+
+/* Get the general registers of LWP LWPID within the target process PH
+   and store them in GREGSET.  */
+
+ps_err_e
+ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prgregset_t gregset)
+{
+#ifdef HAVE_REGSETS
+  struct lwp_info *lwp;
+  struct thread_info *reg_thread, *saved_thread;
+  struct regcache *regcache;
+
+  lwp = find_lwp_pid (ptid_t (lwpid));
+  if (lwp == NULL)
+    return PS_ERR;
+
+  reg_thread = get_lwp_thread (lwp);
+  saved_thread = current_thread;
+  current_thread = reg_thread;
+  regcache = get_thread_regcache (current_thread, 1);
+  gregset_info ()->fill_function (regcache, gregset);
+
+  current_thread = saved_thread;
+  return PS_OK;
+#else
+  return PS_ERR;
+#endif
+}
+
+/* Set the general registers of LWP LWPID within the target process PH
+   from GREGSET.  */
+
+ps_err_e
+ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, const prgregset_t gregset)
+{
+  /* Unneeded.  */
+  return PS_ERR;
+}
+
+/* Get the floating-point registers of LWP LWPID within the target
+   process PH and store them in FPREGSET.  */
+
+ps_err_e
+ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prfpregset_t *fpregset)
+{
+  /* Unneeded.  */
+  return PS_ERR;
+}
+
+/* Set the floating-point registers of LWP LWPID within the target
+   process PH from FPREGSET.  */
+
+ps_err_e
+ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, const prfpregset_t *fpregset)
+{
+  /* Unneeded.  */
+  return PS_ERR;
+}
+
+/* Return overall process id of the target PH.  Special for GNU/Linux
+   -- not used on Solaris.  */
+
+pid_t
+ps_getpid (gdb_ps_prochandle_t ph)
+{
+  return pid_of (current_thread);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/proc-service.list ./gdbserver/proc-service.list
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/proc-service.list	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/proc-service.list	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,30 @@
+/* -Wl,--dynamic-list symbols exported for libthread_db.
+
+   Copyright (C) 2010-2021 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/>.  */
+
+{
+  ps_get_thread_area;
+  ps_getpid;
+  ps_lgetfpregs;
+  ps_lgetregs;
+  ps_lsetfpregs;
+  ps_lsetregs;
+  ps_pdread;
+  ps_pdwrite;
+  ps_pglobal_lookup;
+};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/README ./gdbserver/README
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/README	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/README	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,132 @@
+		   README for GDBserver & GDBreplay
+		    by Stu Grossman and Fred Fish
+
+Introduction:
+
+This is GDBserver, a remote server for Un*x-like systems.  It can be used to
+control the execution of a program on a target system from a GDB on a different
+host.  GDB and GDBserver communicate using the standard remote serial protocol.
+They communicate via either a serial line or a TCP connection.
+
+For more information about GDBserver, see the GDB manual:
+
+    https://sourceware.org/gdb/current/onlinedocs/gdb/Remote-Protocol.html
+
+Usage (server (target) side):
+
+First, you need to have a copy of the program you want to debug put onto
+the target system.  The program can be stripped to save space if needed, as
+GDBserver doesn't care about symbols.  All symbol handling is taken care of by
+the GDB running on the host system.
+
+To use the server, you log on to the target system, and run the `gdbserver'
+program.  You must tell it (a) how to communicate with GDB, (b) the name of
+your program, and (c) its arguments.  The general syntax is:
+
+	target> gdbserver COMM PROGRAM [ARGS ...]
+
+For example, using a serial port, you might say:
+
+	target> gdbserver /dev/com1 emacs foo.txt
+
+This tells GDBserver to debug emacs with an argument of foo.txt, and to
+communicate with GDB via /dev/com1.  GDBserver now waits patiently for the
+host GDB to communicate with it.
+
+To use a TCP connection, you could say:
+
+	target> gdbserver host:2345 emacs foo.txt
+
+This says pretty much the same thing as the last example, except that we are
+going to communicate with the host GDB via TCP.  The `host:2345' argument means
+that we are expecting to see a TCP connection to local TCP port 2345.
+(Currently, the `host' part is ignored.)  You can choose any number you want for
+the port number as long as it does not conflict with any existing TCP ports on
+the target system.  This same port number must be used in the host GDB's
+`target remote' command, which will be described shortly. Note that if you chose
+a port number that conflicts with another service, GDBserver will print an error
+message and exit.
+
+On some targets, GDBserver can also attach to running programs.  This is
+accomplished via the --attach argument.  The syntax is:
+
+	target> gdbserver --attach COMM PID
+
+PID is the process ID of a currently running process.  It isn't necessary
+to point GDBserver at a binary for the running process.
+
+Usage (host side):
+
+You need an unstripped copy of the target program on your host system, since
+GDB needs to examine it's symbol tables and such.  Start up GDB as you normally
+would, with the target program as the first argument.  (You may need to use the
+--baud option if the serial line is running at anything except 9600 baud.)
+Ie: `gdb TARGET-PROG', or `gdb --baud BAUD TARGET-PROG'.  After that, the only
+new command you need to know about is `target remote'.  It's argument is either
+a device name (usually a serial device, like `/dev/ttyb'), or a HOST:PORT
+descriptor.  For example:
+
+	(gdb) target remote /dev/ttyb
+
+communicates with the server via serial line /dev/ttyb, and:
+
+	(gdb) target remote the-target:2345
+
+communicates via a TCP connection to port 2345 on host `the-target', where
+you previously started up GDBserver with the same port number.  Note that for
+TCP connections, you must start up GDBserver prior to using the `target remote'
+command, otherwise you may get an error that looks something like
+`Connection refused'.
+
+Building GDBserver:
+
+See the `configure.srv` file for the list of host triplets you can build
+GDBserver for.
+
+Building GDBserver for your host is very straightforward.  If you build
+GDB natively on a host which GDBserver supports, it will be built
+automatically when you build GDB.  You can also build just GDBserver:
+
+	% mkdir obj
+	% cd obj
+	% path-to-toplevel-sources/configure --disable-gdb
+	% make all-gdbserver
+
+(If you have a combined binutils+gdb tree, you may want to also
+disable other directories when configuring, e.g., binutils, gas, gold,
+gprof, and ld.)
+
+If you prefer to cross-compile to your target, then you can also build
+GDBserver that way.  For example:
+
+	% export CC=your-cross-compiler
+	% path-to-topevel-sources/configure --disable-gdb
+	% make all-gdbserver
+
+Using GDBreplay:
+
+A special hacked down version of GDBserver can be used to replay remote
+debug log files created by GDB.  Before using the GDB "target" command to
+initiate a remote debug session, use "set remotelogfile <filename>" to tell
+GDB that you want to make a recording of the serial or tcp session.  Note
+that when replaying the session, GDB communicates with GDBreplay via tcp,
+regardless of whether the original session was via a serial link or tcp.
+
+Once you are done with the remote debug session, start GDBreplay and
+tell it the name of the log file and the host and port number that GDB
+should connect to (typically the same as the host running GDB):
+
+	$ gdbreplay logfile host:port
+
+Then start GDB (preferably in a different screen or window) and use the
+"target" command to connect to GDBreplay:
+
+	(gdb) target remote host:port
+
+Repeat the same sequence of user commands to GDB that you gave in the
+original debug session.  GDB should not be able to tell that it is talking
+to GDBreplay rather than a real target, all other things being equal.  Note
+that GDBreplay echos the command lines to stderr, as well as the contents of
+the packets it sends and receives.  The last command echoed by GDBreplay is
+the next command that needs to be typed to GDB to continue the session in
+sync with the original session.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/regcache.cc ./gdbserver/regcache.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/regcache.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/regcache.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,516 @@
+/* Register support routines for the remote server for GDB.
+   Copyright (C) 2001-2021 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 "server.h"
+#include "regdef.h"
+#include "gdbthread.h"
+#include "tdesc.h"
+#include "gdbsupport/rsp-low.h"
+#ifndef IN_PROCESS_AGENT
+
+struct regcache *
+get_thread_regcache (struct thread_info *thread, int fetch)
+{
+  struct regcache *regcache;
+
+  regcache = thread_regcache_data (thread);
+
+  /* Threads' regcaches are created lazily, because biarch targets add
+     the main thread/lwp before seeing it stop for the first time, and
+     it is only after the target sees the thread stop for the first
+     time that the target has a chance of determining the process's
+     architecture.  IOW, when we first add the process's main thread
+     we don't know which architecture/tdesc its regcache should
+     have.  */
+  if (regcache == NULL)
+    {
+      struct process_info *proc = get_thread_process (thread);
+
+      gdb_assert (proc->tdesc != NULL);
+
+      regcache = new_register_cache (proc->tdesc);
+      set_thread_regcache_data (thread, regcache);
+    }
+
+  if (fetch && regcache->registers_valid == 0)
+    {
+      struct thread_info *saved_thread = current_thread;
+
+      current_thread = thread;
+      /* Invalidate all registers, to prevent stale left-overs.  */
+      memset (regcache->register_status, REG_UNAVAILABLE,
+	      regcache->tdesc->reg_defs.size ());
+      fetch_inferior_registers (regcache, -1);
+      current_thread = saved_thread;
+      regcache->registers_valid = 1;
+    }
+
+  return regcache;
+}
+
+/* See gdbsupport/common-regcache.h.  */
+
+struct regcache *
+get_thread_regcache_for_ptid (ptid_t ptid)
+{
+  return get_thread_regcache (find_thread_ptid (ptid), 1);
+}
+
+void
+regcache_invalidate_thread (struct thread_info *thread)
+{
+  struct regcache *regcache;
+
+  regcache = thread_regcache_data (thread);
+
+  if (regcache == NULL)
+    return;
+
+  if (regcache->registers_valid)
+    {
+      struct thread_info *saved_thread = current_thread;
+
+      current_thread = thread;
+      store_inferior_registers (regcache, -1);
+      current_thread = saved_thread;
+    }
+
+  regcache->registers_valid = 0;
+}
+
+/* See regcache.h.  */
+
+void
+regcache_invalidate_pid (int pid)
+{
+  /* Only invalidate the regcaches of threads of this process.  */
+  for_each_thread (pid, regcache_invalidate_thread);
+}
+
+/* See regcache.h.  */
+
+void
+regcache_invalidate (void)
+{
+  /* Only update the threads of the current process.  */
+  int pid = current_thread->id.pid ();
+
+  regcache_invalidate_pid (pid);
+}
+
+#endif
+
+struct regcache *
+init_register_cache (struct regcache *regcache,
+		     const struct target_desc *tdesc,
+		     unsigned char *regbuf)
+{
+  if (regbuf == NULL)
+    {
+#ifndef IN_PROCESS_AGENT
+      /* Make sure to zero-initialize the register cache when it is
+	 created, in case there are registers the target never
+	 fetches.  This way they'll read as zero instead of
+	 garbage.  */
+      regcache->tdesc = tdesc;
+      regcache->registers
+	= (unsigned char *) xcalloc (1, tdesc->registers_size);
+      regcache->registers_owned = 1;
+      regcache->register_status
+	= (unsigned char *) xmalloc (tdesc->reg_defs.size ());
+      memset ((void *) regcache->register_status, REG_UNAVAILABLE,
+	      tdesc->reg_defs.size ());
+#else
+      gdb_assert_not_reached ("can't allocate memory from the heap");
+#endif
+    }
+  else
+    {
+      regcache->tdesc = tdesc;
+      regcache->registers = regbuf;
+      regcache->registers_owned = 0;
+#ifndef IN_PROCESS_AGENT
+      regcache->register_status = NULL;
+#endif
+    }
+
+  regcache->registers_valid = 0;
+
+  return regcache;
+}
+
+#ifndef IN_PROCESS_AGENT
+
+struct regcache *
+new_register_cache (const struct target_desc *tdesc)
+{
+  struct regcache *regcache = new struct regcache;
+
+  gdb_assert (tdesc->registers_size != 0);
+
+  return init_register_cache (regcache, tdesc, NULL);
+}
+
+void
+free_register_cache (struct regcache *regcache)
+{
+  if (regcache)
+    {
+      if (regcache->registers_owned)
+	free (regcache->registers);
+      free (regcache->register_status);
+      delete regcache;
+    }
+}
+
+#endif
+
+void
+regcache_cpy (struct regcache *dst, struct regcache *src)
+{
+  gdb_assert (src != NULL && dst != NULL);
+  gdb_assert (src->tdesc == dst->tdesc);
+  gdb_assert (src != dst);
+
+  memcpy (dst->registers, src->registers, src->tdesc->registers_size);
+#ifndef IN_PROCESS_AGENT
+  if (dst->register_status != NULL && src->register_status != NULL)
+    memcpy (dst->register_status, src->register_status,
+	    src->tdesc->reg_defs.size ());
+#endif
+  dst->registers_valid = src->registers_valid;
+}
+
+/* Return a reference to the description of register N.  */
+
+static const struct gdb::reg &
+find_register_by_number (const struct target_desc *tdesc, int n)
+{
+  return tdesc->reg_defs[n];
+}
+
+#ifndef IN_PROCESS_AGENT
+
+void
+registers_to_string (struct regcache *regcache, char *buf)
+{
+  unsigned char *registers = regcache->registers;
+  const struct target_desc *tdesc = regcache->tdesc;
+
+  for (int i = 0; i < tdesc->reg_defs.size (); ++i)
+    {
+      if (regcache->register_status[i] == REG_VALID)
+	{
+	  bin2hex (registers, buf, register_size (tdesc, i));
+	  buf += register_size (tdesc, i) * 2;
+	}
+      else
+	{
+	  memset (buf, 'x', register_size (tdesc, i) * 2);
+	  buf += register_size (tdesc, i) * 2;
+	}
+      registers += register_size (tdesc, i);
+    }
+  *buf = '\0';
+}
+
+void
+registers_from_string (struct regcache *regcache, char *buf)
+{
+  int len = strlen (buf);
+  unsigned char *registers = regcache->registers;
+  const struct target_desc *tdesc = regcache->tdesc;
+
+  if (len != tdesc->registers_size * 2)
+    {
+      warning ("Wrong sized register packet (expected %d bytes, got %d)",
+	       2 * tdesc->registers_size, len);
+      if (len > tdesc->registers_size * 2)
+	len = tdesc->registers_size * 2;
+    }
+  hex2bin (buf, registers, len / 2);
+}
+
+int
+find_regno (const struct target_desc *tdesc, const char *name)
+{
+  for (int i = 0; i < tdesc->reg_defs.size (); ++i)
+    {
+      if (strcmp (name, find_register_by_number (tdesc, i).name) == 0)
+	return i;
+    }
+  internal_error (__FILE__, __LINE__, "Unknown register %s requested",
+		  name);
+}
+
+static void
+free_register_cache_thread (struct thread_info *thread)
+{
+  struct regcache *regcache = thread_regcache_data (thread);
+
+  if (regcache != NULL)
+    {
+      regcache_invalidate_thread (thread);
+      free_register_cache (regcache);
+      set_thread_regcache_data (thread, NULL);
+    }
+}
+
+void
+regcache_release (void)
+{
+  /* Flush and release all pre-existing register caches.  */
+  for_each_thread (free_register_cache_thread);
+}
+#endif
+
+int
+register_cache_size (const struct target_desc *tdesc)
+{
+  return tdesc->registers_size;
+}
+
+int
+register_size (const struct target_desc *tdesc, int n)
+{
+  return find_register_by_number (tdesc, n).size / 8;
+}
+
+/* See gdbsupport/common-regcache.h.  */
+
+int
+regcache_register_size (const struct regcache *regcache, int n)
+{
+  return register_size (regcache->tdesc, n);
+}
+
+static unsigned char *
+register_data (const struct regcache *regcache, int n, int fetch)
+{
+  return (regcache->registers
+	  + find_register_by_number (regcache->tdesc, n).offset / 8);
+}
+
+void
+supply_register (struct regcache *regcache, int n, const void *buf)
+{
+  return regcache->raw_supply (n, buf);
+}
+
+/* See gdbsupport/common-regcache.h.  */
+
+void
+regcache::raw_supply (int n, const void *buf)
+{
+  if (buf)
+    {
+      memcpy (register_data (this, n, 0), buf, register_size (tdesc, n));
+#ifndef IN_PROCESS_AGENT
+      if (register_status != NULL)
+	register_status[n] = REG_VALID;
+#endif
+    }
+  else
+    {
+      memset (register_data (this, n, 0), 0, register_size (tdesc, n));
+#ifndef IN_PROCESS_AGENT
+      if (register_status != NULL)
+	register_status[n] = REG_UNAVAILABLE;
+#endif
+    }
+}
+
+/* Supply register N with value zero to REGCACHE.  */
+
+void
+supply_register_zeroed (struct regcache *regcache, int n)
+{
+  memset (register_data (regcache, n, 0), 0,
+	  register_size (regcache->tdesc, n));
+#ifndef IN_PROCESS_AGENT
+  if (regcache->register_status != NULL)
+    regcache->register_status[n] = REG_VALID;
+#endif
+}
+
+#ifndef IN_PROCESS_AGENT
+
+/* Supply register called NAME with value zero to REGCACHE.  */
+
+void
+supply_register_by_name_zeroed (struct regcache *regcache,
+				const char *name)
+{
+  supply_register_zeroed (regcache, find_regno (regcache->tdesc, name));
+}
+
+#endif
+
+/* Supply the whole register set whose contents are stored in BUF, to
+   REGCACHE.  If BUF is NULL, all the registers' values are recorded
+   as unavailable.  */
+
+void
+supply_regblock (struct regcache *regcache, const void *buf)
+{
+  if (buf)
+    {
+      const struct target_desc *tdesc = regcache->tdesc;
+
+      memcpy (regcache->registers, buf, tdesc->registers_size);
+#ifndef IN_PROCESS_AGENT
+      {
+	int i;
+
+	for (i = 0; i < tdesc->reg_defs.size (); i++)
+	  regcache->register_status[i] = REG_VALID;
+      }
+#endif
+    }
+  else
+    {
+      const struct target_desc *tdesc = regcache->tdesc;
+
+      memset (regcache->registers, 0, tdesc->registers_size);
+#ifndef IN_PROCESS_AGENT
+      {
+	int i;
+
+	for (i = 0; i < tdesc->reg_defs.size (); i++)
+	  regcache->register_status[i] = REG_UNAVAILABLE;
+      }
+#endif
+    }
+}
+
+#ifndef IN_PROCESS_AGENT
+
+void
+supply_register_by_name (struct regcache *regcache,
+			 const char *name, const void *buf)
+{
+  supply_register (regcache, find_regno (regcache->tdesc, name), buf);
+}
+
+#endif
+
+void
+collect_register (struct regcache *regcache, int n, void *buf)
+{
+  regcache->raw_collect (n, buf);
+}
+
+/* See gdbsupport/common-regcache.h.  */
+
+void
+regcache::raw_collect (int n, void *buf) const
+{
+  memcpy (buf, register_data (this, n, 1), register_size (tdesc, n));
+}
+
+enum register_status
+regcache_raw_read_unsigned (struct regcache *regcache, int regnum,
+			    ULONGEST *val)
+{
+  int size;
+
+  gdb_assert (regcache != NULL);
+  gdb_assert (regnum >= 0
+	      && regnum < regcache->tdesc->reg_defs.size ());
+
+  size = register_size (regcache->tdesc, regnum);
+
+  if (size > (int) sizeof (ULONGEST))
+    error (_("That operation is not available on integers of more than"
+            "%d bytes."),
+          (int) sizeof (ULONGEST));
+
+  *val = 0;
+  collect_register (regcache, regnum, val);
+
+  return REG_VALID;
+}
+
+#ifndef IN_PROCESS_AGENT
+
+/* See regcache.h.  */
+
+ULONGEST
+regcache_raw_get_unsigned_by_name (struct regcache *regcache,
+				   const char *name)
+{
+  return regcache_raw_get_unsigned (regcache,
+				    find_regno (regcache->tdesc, name));
+}
+
+void
+collect_register_as_string (struct regcache *regcache, int n, char *buf)
+{
+  bin2hex (register_data (regcache, n, 1), buf,
+	   register_size (regcache->tdesc, n));
+}
+
+void
+collect_register_by_name (struct regcache *regcache,
+			  const char *name, void *buf)
+{
+  collect_register (regcache, find_regno (regcache->tdesc, name), buf);
+}
+
+/* Special handling for register PC.  */
+
+CORE_ADDR
+regcache_read_pc (struct regcache *regcache)
+{
+  return the_target->read_pc (regcache);
+}
+
+void
+regcache_write_pc (struct regcache *regcache, CORE_ADDR pc)
+{
+  the_target->write_pc (regcache, pc);
+}
+
+#endif
+
+/* See gdbsupport/common-regcache.h.  */
+
+enum register_status
+regcache::get_register_status (int regnum) const
+{
+#ifndef IN_PROCESS_AGENT
+  gdb_assert (regnum >= 0 && regnum < tdesc->reg_defs.size ());
+  return (enum register_status) (register_status[regnum]);
+#else
+  return REG_VALID;
+#endif
+}
+
+/* See gdbsupport/common-regcache.h.  */
+
+bool
+regcache::raw_compare (int regnum, const void *buf, int offset) const
+{
+  gdb_assert (buf != NULL);
+
+  const unsigned char *regbuf = register_data (this, regnum, 1);
+  int size = register_size (tdesc, regnum);
+  gdb_assert (size >= offset);
+
+  return (memcmp (buf, regbuf + offset, size - offset) == 0);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/regcache.h ./gdbserver/regcache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/regcache.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/regcache.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,141 @@
+/* Register support routines for the remote server for GDB.
+   Copyright (C) 2001-2021 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 GDBSERVER_REGCACHE_H
+#define GDBSERVER_REGCACHE_H
+
+#include "gdbsupport/common-regcache.h"
+
+struct thread_info;
+struct target_desc;
+
+/* The data for the register cache.  Note that we have one per
+   inferior; this is primarily for simplicity, as the performance
+   benefit is minimal.  */
+
+struct regcache : public reg_buffer_common
+{
+  /* The regcache's target description.  */
+  const struct target_desc *tdesc = nullptr;
+
+  /* Whether the REGISTERS buffer's contents are valid.  If false, we
+     haven't fetched the registers from the target yet.  Not that this
+     register cache is _not_ pass-through, unlike GDB's.  Note that
+     "valid" here is unrelated to whether the registers are available
+     in a traceframe.  For that, check REGISTER_STATUS below.  */
+  int registers_valid = 0;
+  int registers_owned = 0;
+  unsigned char *registers = nullptr;
+#ifndef IN_PROCESS_AGENT
+  /* One of REG_UNAVAILABLE or REG_VALID.  */
+  unsigned char *register_status = nullptr;
+#endif
+
+  /* See gdbsupport/common-regcache.h.  */
+  enum register_status get_register_status (int regnum) const override;
+
+  /* See gdbsupport/common-regcache.h.  */
+  void raw_supply (int regnum, const void *buf) override;
+
+  /* See gdbsupport/common-regcache.h.  */
+  void raw_collect (int regnum, void *buf) const override;
+
+  /* See gdbsupport/common-regcache.h.  */
+  bool raw_compare (int regnum, const void *buf, int offset) const override;
+};
+
+struct regcache *init_register_cache (struct regcache *regcache,
+				      const struct target_desc *tdesc,
+				      unsigned char *regbuf);
+
+void regcache_cpy (struct regcache *dst, struct regcache *src);
+
+/* Create a new register cache for INFERIOR.  */
+
+struct regcache *new_register_cache (const struct target_desc *tdesc);
+
+struct regcache *get_thread_regcache (struct thread_info *thread, int fetch);
+
+/* Release all memory associated with the register cache for INFERIOR.  */
+
+void free_register_cache (struct regcache *regcache);
+
+/* Invalidate cached registers for one thread.  */
+
+void regcache_invalidate_thread (struct thread_info *);
+
+/* Invalidate cached registers for all threads of the given process.  */
+
+void regcache_invalidate_pid (int pid);
+
+/* Invalidate cached registers for all threads of the current
+   process.  */
+
+void regcache_invalidate (void);
+
+/* Invalidate and release the register cache of all threads of the
+   current process.  */
+
+void regcache_release (void);
+
+/* Convert all registers to a string in the currently specified remote
+   format.  */
+
+void registers_to_string (struct regcache *regcache, char *buf);
+
+/* Convert a string to register values and fill our register cache.  */
+
+void registers_from_string (struct regcache *regcache, char *buf);
+
+/* For regcache_read_pc see gdbsupport/common-regcache.h.  */
+
+void regcache_write_pc (struct regcache *regcache, CORE_ADDR pc);
+
+int register_cache_size (const struct target_desc *tdesc);
+
+int register_size (const struct target_desc *tdesc, int n);
+
+int find_regno (const struct target_desc *tdesc, const char *name);
+
+void supply_register (struct regcache *regcache, int n, const void *buf);
+
+void supply_register_zeroed (struct regcache *regcache, int n);
+
+void supply_register_by_name (struct regcache *regcache,
+			      const char *name, const void *buf);
+
+void supply_register_by_name_zeroed (struct regcache *regcache,
+				     const char *name);
+
+void supply_regblock (struct regcache *regcache, const void *buf);
+
+void collect_register (struct regcache *regcache, int n, void *buf);
+
+void collect_register_as_string (struct regcache *regcache, int n, char *buf);
+
+void collect_register_by_name (struct regcache *regcache,
+			       const char *name, void *buf);
+
+/* Read a raw register as an unsigned integer.  Convenience wrapper
+   around regcache_raw_get_unsigned that takes a register name instead
+   of a register number.  */
+
+ULONGEST regcache_raw_get_unsigned_by_name (struct regcache *regcache,
+					    const char *name);
+
+#endif /* GDBSERVER_REGCACHE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/remote-utils.cc ./gdbserver/remote-utils.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/remote-utils.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/remote-utils.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,1663 @@
+/* Remote utility routines for the remote server for GDB.
+   Copyright (C) 1986-2021 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 "server.h"
+#if HAVE_TERMIOS_H
+#include <termios.h>
+#endif
+#include "target.h"
+#include "gdbthread.h"
+#include "tdesc.h"
+#include "debug.h"
+#include "dll.h"
+#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>
+#endif
+#if HAVE_SYS_FILE_H
+#include <sys/file.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#if HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
+#if HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#include "gdbsupport/gdb_sys_time.h"
+#include <unistd.h>
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#include <sys/stat.h>
+
+#if USE_WIN32API
+#include <ws2tcpip.h>
+#endif
+
+#ifndef HAVE_SOCKLEN_T
+typedef int socklen_t;
+#endif
+
+#ifndef IN_PROCESS_AGENT
+
+/* Extra value for readchar_callback.  */
+enum {
+  /* The callback is currently not scheduled.  */
+  NOT_SCHEDULED = -1
+};
+
+/* Status of the readchar callback.
+   Either NOT_SCHEDULED or the callback id.  */
+static int readchar_callback = NOT_SCHEDULED;
+
+static int readchar (void);
+static void reset_readchar (void);
+static void reschedule (void);
+
+/* A cache entry for a successfully looked-up symbol.  */
+struct sym_cache
+{
+  char *name;
+  CORE_ADDR addr;
+  struct sym_cache *next;
+};
+
+static int remote_is_stdio = 0;
+
+static int remote_desc = -1;
+static int listen_desc = -1;
+
+#ifdef USE_WIN32API
+# define read(fd, buf, len) recv (fd, (char *) buf, len, 0)
+# define write(fd, buf, len) send (fd, (char *) buf, len, 0)
+#endif
+
+int
+gdb_connected (void)
+{
+  return remote_desc != -1;
+}
+
+/* Return true if the remote connection is over stdio.  */
+
+int
+remote_connection_is_stdio (void)
+{
+  return remote_is_stdio;
+}
+
+static void
+enable_async_notification (int fd)
+{
+#if defined(F_SETFL) && defined (FASYNC)
+  int save_fcntl_flags;
+
+  save_fcntl_flags = fcntl (fd, F_GETFL, 0);
+  fcntl (fd, F_SETFL, save_fcntl_flags | FASYNC);
+#if defined (F_SETOWN)
+  fcntl (fd, F_SETOWN, getpid ());
+#endif
+#endif
+}
+
+static void
+handle_accept_event (int err, gdb_client_data client_data)
+{
+  struct sockaddr_storage sockaddr;
+  socklen_t len = sizeof (sockaddr);
+
+  if (debug_threads)
+    debug_printf ("handling possible accept event\n");
+
+  remote_desc = accept (listen_desc, (struct sockaddr *) &sockaddr, &len);
+  if (remote_desc == -1)
+    perror_with_name ("Accept failed");
+
+  /* Enable TCP keep alive process. */
+  socklen_t tmp = 1;
+  setsockopt (remote_desc, SOL_SOCKET, SO_KEEPALIVE,
+	      (char *) &tmp, sizeof (tmp));
+
+  /* Tell TCP not to delay small packets.  This greatly speeds up
+     interactive response. */
+  tmp = 1;
+  setsockopt (remote_desc, IPPROTO_TCP, TCP_NODELAY,
+	      (char *) &tmp, sizeof (tmp));
+
+#ifndef USE_WIN32API
+  signal (SIGPIPE, SIG_IGN);	/* If we don't do this, then gdbserver simply
+				   exits when the remote side dies.  */
+#endif
+
+  if (run_once)
+    {
+#ifndef USE_WIN32API
+      close (listen_desc);		/* No longer need this */
+#else
+      closesocket (listen_desc);	/* No longer need this */
+#endif
+    }
+
+  /* Even if !RUN_ONCE no longer notice new connections.  Still keep the
+     descriptor open for add_file_handler to wait for a new connection.  */
+  delete_file_handler (listen_desc);
+
+  /* Convert IP address to string.  */
+  char orig_host[GDB_NI_MAX_ADDR], orig_port[GDB_NI_MAX_PORT];
+
+  int r = getnameinfo ((struct sockaddr *) &sockaddr, len,
+		       orig_host, sizeof (orig_host),
+		       orig_port, sizeof (orig_port),
+		       NI_NUMERICHOST | NI_NUMERICSERV);
+
+  if (r != 0)
+    fprintf (stderr, _("Could not obtain remote address: %s\n"),
+	     gai_strerror (r));
+  else
+    fprintf (stderr, _("Remote debugging from host %s, port %s\n"),
+	     orig_host, orig_port);
+
+  enable_async_notification (remote_desc);
+
+  /* Register the event loop handler.  */
+  add_file_handler (remote_desc, handle_serial_event, NULL);
+
+  /* We have a new GDB connection now.  If we were disconnected
+     tracing, there's a window where the target could report a stop
+     event to the event loop, and since we have a connection now, we'd
+     try to send vStopped notifications to GDB.  But, don't do that
+     until GDB as selected all-stop/non-stop, and has queried the
+     threads' status ('?').  */
+  target_async (0);
+}
+
+/* Prepare for a later connection to a remote debugger.
+   NAME is the filename used for communication.  */
+
+void
+remote_prepare (const char *name)
+{
+  client_state &cs = get_client_state ();
+#ifdef USE_WIN32API
+  static int winsock_initialized;
+#endif
+  socklen_t tmp;
+
+  remote_is_stdio = 0;
+  if (strcmp (name, STDIO_CONNECTION_NAME) == 0)
+    {
+      /* We need to record fact that we're using stdio sooner than the
+	 call to remote_open so start_inferior knows the connection is
+	 via stdio.  */
+      remote_is_stdio = 1;
+      cs.transport_is_reliable = 1;
+      return;
+    }
+
+  struct addrinfo hint;
+  struct addrinfo *ainfo;
+
+  memset (&hint, 0, sizeof (hint));
+  /* Assume no prefix will be passed, therefore we should use
+     AF_UNSPEC.  */
+  hint.ai_family = AF_UNSPEC;
+  hint.ai_socktype = SOCK_STREAM;
+  hint.ai_protocol = IPPROTO_TCP;
+
+  parsed_connection_spec parsed
+    = parse_connection_spec_without_prefix (name, &hint);
+
+  if (parsed.port_str.empty ())
+    {
+      cs.transport_is_reliable = 0;
+      return;
+    }
+
+#ifdef USE_WIN32API
+  if (!winsock_initialized)
+    {
+      WSADATA wsad;
+
+      WSAStartup (MAKEWORD (1, 0), &wsad);
+      winsock_initialized = 1;
+    }
+#endif
+
+  int r = getaddrinfo (parsed.host_str.c_str (), parsed.port_str.c_str (),
+		       &hint, &ainfo);
+
+  if (r != 0)
+    error (_("%s: cannot resolve name: %s"), name, gai_strerror (r));
+
+  scoped_free_addrinfo freeaddrinfo (ainfo);
+
+  struct addrinfo *iter;
+
+  for (iter = ainfo; iter != NULL; iter = iter->ai_next)
+    {
+      listen_desc = gdb_socket_cloexec (iter->ai_family, iter->ai_socktype,
+					iter->ai_protocol);
+
+      if (listen_desc >= 0)
+	break;
+    }
+
+  if (iter == NULL)
+    perror_with_name ("Can't open socket");
+
+  /* Allow rapid reuse of this port. */
+  tmp = 1;
+  setsockopt (listen_desc, SOL_SOCKET, SO_REUSEADDR, (char *) &tmp,
+	      sizeof (tmp));
+
+  switch (iter->ai_family)
+    {
+    case AF_INET:
+      ((struct sockaddr_in *) iter->ai_addr)->sin_addr.s_addr = INADDR_ANY;
+      break;
+    case AF_INET6:
+      ((struct sockaddr_in6 *) iter->ai_addr)->sin6_addr = in6addr_any;
+      break;
+    default:
+      internal_error (__FILE__, __LINE__,
+		      _("Invalid 'ai_family' %d\n"), iter->ai_family);
+    }
+
+  if (bind (listen_desc, iter->ai_addr, iter->ai_addrlen) != 0)
+    perror_with_name ("Can't bind address");
+
+  if (listen (listen_desc, 1) != 0)
+    perror_with_name ("Can't listen on socket");
+
+  cs.transport_is_reliable = 1;
+}
+
+/* Open a connection to a remote debugger.
+   NAME is the filename used for communication.  */
+
+void
+remote_open (const char *name)
+{
+  const char *port_str;
+
+  port_str = strchr (name, ':');
+#ifdef USE_WIN32API
+  if (port_str == NULL)
+    error ("Only HOST:PORT is supported on this platform.");
+#endif
+
+  if (strcmp (name, STDIO_CONNECTION_NAME) == 0)
+    {
+      fprintf (stderr, "Remote debugging using stdio\n");
+
+      /* Use stdin as the handle of the connection.
+	 We only select on reads, for example.  */
+      remote_desc = fileno (stdin);
+
+      enable_async_notification (remote_desc);
+
+      /* Register the event loop handler.  */
+      add_file_handler (remote_desc, handle_serial_event, NULL);
+    }
+#ifndef USE_WIN32API
+  else if (port_str == NULL)
+    {
+      struct stat statbuf;
+
+      if (stat (name, &statbuf) == 0
+	  && (S_ISCHR (statbuf.st_mode) || S_ISFIFO (statbuf.st_mode)))
+	remote_desc = open (name, O_RDWR);
+      else
+	{
+	  errno = EINVAL;
+	  remote_desc = -1;
+	}
+
+      if (remote_desc < 0)
+	perror_with_name ("Could not open remote device");
+
+#if HAVE_TERMIOS_H
+      {
+	struct termios termios;
+	tcgetattr (remote_desc, &termios);
+
+	termios.c_iflag = 0;
+	termios.c_oflag = 0;
+	termios.c_lflag = 0;
+	termios.c_cflag &= ~(CSIZE | PARENB);
+	termios.c_cflag |= CLOCAL | CS8;
+	termios.c_cc[VMIN] = 1;
+	termios.c_cc[VTIME] = 0;
+
+	tcsetattr (remote_desc, TCSANOW, &termios);
+      }
+#endif
+
+      fprintf (stderr, "Remote debugging using %s\n", name);
+
+      enable_async_notification (remote_desc);
+
+      /* Register the event loop handler.  */
+      add_file_handler (remote_desc, handle_serial_event, NULL);
+    }
+#endif /* USE_WIN32API */
+  else
+    {
+      char listen_port[GDB_NI_MAX_PORT];
+      struct sockaddr_storage sockaddr;
+      socklen_t len = sizeof (sockaddr);
+
+      if (getsockname (listen_desc, (struct sockaddr *) &sockaddr, &len) < 0)
+	perror_with_name ("Can't determine port");
+
+      int r = getnameinfo ((struct sockaddr *) &sockaddr, len,
+			   NULL, 0,
+			   listen_port, sizeof (listen_port),
+			   NI_NUMERICSERV);
+
+      if (r != 0)
+	fprintf (stderr, _("Can't obtain port where we are listening: %s"),
+		 gai_strerror (r));
+      else
+	fprintf (stderr, _("Listening on port %s\n"), listen_port);
+
+      fflush (stderr);
+
+      /* Register the event loop handler.  */
+      add_file_handler (listen_desc, handle_accept_event, NULL);
+    }
+}
+
+void
+remote_close (void)
+{
+  delete_file_handler (remote_desc);
+
+  disable_async_io ();
+
+#ifdef USE_WIN32API
+  closesocket (remote_desc);
+#else
+  if (! remote_connection_is_stdio ())
+    close (remote_desc);
+#endif
+  remote_desc = -1;
+
+  reset_readchar ();
+}
+
+#endif
+
+#ifndef IN_PROCESS_AGENT
+
+void
+decode_address (CORE_ADDR *addrp, const char *start, int len)
+{
+  CORE_ADDR addr;
+  char ch;
+  int i;
+
+  addr = 0;
+  for (i = 0; i < len; i++)
+    {
+      ch = start[i];
+      addr = addr << 4;
+      addr = addr | (fromhex (ch) & 0x0f);
+    }
+  *addrp = addr;
+}
+
+const char *
+decode_address_to_semicolon (CORE_ADDR *addrp, const char *start)
+{
+  const char *end;
+
+  end = start;
+  while (*end != '\0' && *end != ';')
+    end++;
+
+  decode_address (addrp, start, end - start);
+
+  if (*end == ';')
+    end++;
+  return end;
+}
+
+#endif
+
+#ifndef IN_PROCESS_AGENT
+
+/* Look for a sequence of characters which can be run-length encoded.
+   If there are any, update *CSUM and *P.  Otherwise, output the
+   single character.  Return the number of characters consumed.  */
+
+static int
+try_rle (char *buf, int remaining, unsigned char *csum, char **p)
+{
+  int n;
+
+  /* Always output the character.  */
+  *csum += buf[0];
+  *(*p)++ = buf[0];
+
+  /* Don't go past '~'.  */
+  if (remaining > 97)
+    remaining = 97;
+
+  for (n = 1; n < remaining; n++)
+    if (buf[n] != buf[0])
+      break;
+
+  /* N is the index of the first character not the same as buf[0].
+     buf[0] is counted twice, so by decrementing N, we get the number
+     of characters the RLE sequence will replace.  */
+  n--;
+
+  if (n < 3)
+    return 1;
+
+  /* Skip the frame characters.  The manual says to skip '+' and '-'
+     also, but there's no reason to.  Unfortunately these two unusable
+     characters double the encoded length of a four byte zero
+     value.  */
+  while (n + 29 == '$' || n + 29 == '#')
+    n--;
+
+  *csum += '*';
+  *(*p)++ = '*';
+  *csum += n + 29;
+  *(*p)++ = n + 29;
+
+  return n + 1;
+}
+
+#endif
+
+#ifndef IN_PROCESS_AGENT
+
+/* Write a PTID to BUF.  Returns BUF+CHARACTERS_WRITTEN.  */
+
+char *
+write_ptid (char *buf, ptid_t ptid)
+{
+  client_state &cs = get_client_state ();
+  int pid, tid;
+
+  if (cs.multi_process)
+    {
+      pid = ptid.pid ();
+      if (pid < 0)
+	buf += sprintf (buf, "p-%x.", -pid);
+      else
+	buf += sprintf (buf, "p%x.", pid);
+    }
+  tid = ptid.lwp ();
+  if (tid < 0)
+    buf += sprintf (buf, "-%x", -tid);
+  else
+    buf += sprintf (buf, "%x", tid);
+
+  return buf;
+}
+
+static ULONGEST
+hex_or_minus_one (const char *buf, const char **obuf)
+{
+  ULONGEST ret;
+
+  if (startswith (buf, "-1"))
+    {
+      ret = (ULONGEST) -1;
+      buf += 2;
+    }
+  else
+    buf = unpack_varlen_hex (buf, &ret);
+
+  if (obuf)
+    *obuf = buf;
+
+  return ret;
+}
+
+/* Extract a PTID from BUF.  If non-null, OBUF is set to the to one
+   passed the last parsed char.  Returns null_ptid on error.  */
+ptid_t
+read_ptid (const char *buf, const char **obuf)
+{
+  const char *p = buf;
+  const char *pp;
+  ULONGEST pid = 0, tid = 0;
+
+  if (*p == 'p')
+    {
+      /* Multi-process ptid.  */
+      pp = unpack_varlen_hex (p + 1, &pid);
+      if (*pp != '.')
+	error ("invalid remote ptid: %s\n", p);
+
+      p = pp + 1;
+
+      tid = hex_or_minus_one (p, &pp);
+
+      if (obuf)
+	*obuf = pp;
+      return ptid_t (pid, tid, 0);
+    }
+
+  /* No multi-process.  Just a tid.  */
+  tid = hex_or_minus_one (p, &pp);
+
+  /* Since GDB is not sending a process id (multi-process extensions
+     are off), then there's only one process.  Default to the first in
+     the list.  */
+  pid = pid_of (get_first_process ());
+
+  if (obuf)
+    *obuf = pp;
+  return ptid_t (pid, tid, 0);
+}
+
+/* Write COUNT bytes in BUF to the client.
+   The result is the number of bytes written or -1 if error.
+   This may return less than COUNT.  */
+
+static int
+write_prim (const void *buf, int count)
+{
+  if (remote_connection_is_stdio ())
+    return write (fileno (stdout), buf, count);
+  else
+    return write (remote_desc, buf, count);
+}
+
+/* Read COUNT bytes from the client and store in BUF.
+   The result is the number of bytes read or -1 if error.
+   This may return less than COUNT.  */
+
+static int
+read_prim (void *buf, int count)
+{
+  if (remote_connection_is_stdio ())
+    return read (fileno (stdin), buf, count);
+  else
+    return read (remote_desc, buf, count);
+}
+
+/* Send a packet to the remote machine, with error checking.
+   The data of the packet is in BUF, and the length of the
+   packet is in CNT.  Returns >= 0 on success, -1 otherwise.  */
+
+static int
+putpkt_binary_1 (char *buf, int cnt, int is_notif)
+{
+  client_state &cs = get_client_state ();
+  int i;
+  unsigned char csum = 0;
+  char *buf2;
+  char *p;
+  int cc;
+
+  buf2 = (char *) xmalloc (strlen ("$") + cnt + strlen ("#nn") + 1);
+
+  /* Copy the packet into buffer BUF2, encapsulating it
+     and giving it a checksum.  */
+
+  p = buf2;
+  if (is_notif)
+    *p++ = '%';
+  else
+    *p++ = '$';
+
+  for (i = 0; i < cnt;)
+    i += try_rle (buf + i, cnt - i, &csum, &p);
+
+  *p++ = '#';
+  *p++ = tohex ((csum >> 4) & 0xf);
+  *p++ = tohex (csum & 0xf);
+
+  *p = '\0';
+
+  /* Send it over and over until we get a positive ack.  */
+
+  do
+    {
+      if (write_prim (buf2, p - buf2) != p - buf2)
+	{
+	  perror ("putpkt(write)");
+	  free (buf2);
+	  return -1;
+	}
+
+      if (cs.noack_mode || is_notif)
+	{
+	  /* Don't expect an ack then.  */
+	  if (remote_debug)
+	    {
+	      if (is_notif)
+		debug_printf ("putpkt (\"%s\"); [notif]\n", buf2);
+	      else
+		debug_printf ("putpkt (\"%s\"); [noack mode]\n", buf2);
+	      debug_flush ();
+	    }
+	  break;
+	}
+
+      if (remote_debug)
+	{
+	  debug_printf ("putpkt (\"%s\"); [looking for ack]\n", buf2);
+	  debug_flush ();
+	}
+
+      cc = readchar ();
+
+      if (cc < 0)
+	{
+	  free (buf2);
+	  return -1;
+	}
+
+      if (remote_debug)
+	{
+	  debug_printf ("[received '%c' (0x%x)]\n", cc, cc);
+	  debug_flush ();
+	}
+
+      /* Check for an input interrupt while we're here.  */
+      if (cc == '\003' && current_thread != NULL)
+	the_target->request_interrupt ();
+    }
+  while (cc != '+');
+
+  free (buf2);
+  return 1;			/* Success! */
+}
+
+int
+putpkt_binary (char *buf, int cnt)
+{
+  return putpkt_binary_1 (buf, cnt, 0);
+}
+
+/* Send a packet to the remote machine, with error checking.  The data
+   of the packet is in BUF, and the packet should be a NUL-terminated
+   string.  Returns >= 0 on success, -1 otherwise.  */
+
+int
+putpkt (char *buf)
+{
+  return putpkt_binary (buf, strlen (buf));
+}
+
+int
+putpkt_notif (char *buf)
+{
+  return putpkt_binary_1 (buf, strlen (buf), 1);
+}
+
+/* Come here when we get an input interrupt from the remote side.  This
+   interrupt should only be active while we are waiting for the child to do
+   something.  Thus this assumes readchar:bufcnt is 0.
+   About the only thing that should come through is a ^C, which
+   will cause us to request child interruption.  */
+
+static void
+input_interrupt (int unused)
+{
+  fd_set readset;
+  struct timeval immediate = { 0, 0 };
+
+  /* Protect against spurious interrupts.  This has been observed to
+     be a problem under NetBSD 1.4 and 1.5.  */
+
+  FD_ZERO (&readset);
+  FD_SET (remote_desc, &readset);
+  if (select (remote_desc + 1, &readset, 0, 0, &immediate) > 0)
+    {
+      int cc;
+      char c = 0;
+
+      cc = read_prim (&c, 1);
+
+      if (cc == 0)
+	{
+	  fprintf (stderr, "client connection closed\n");
+	  return;
+	}
+      else if (cc != 1 || c != '\003')
+	{
+	  fprintf (stderr, "input_interrupt, count = %d c = %d ", cc, c);
+	  if (isprint (c))
+	    fprintf (stderr, "('%c')\n", c);
+	  else
+	    fprintf (stderr, "('\\x%02x')\n", c & 0xff);
+	  return;
+	}
+
+      the_target->request_interrupt ();
+    }
+}
+
+/* Check if the remote side sent us an interrupt request (^C).  */
+void
+check_remote_input_interrupt_request (void)
+{
+  /* This function may be called before establishing communications,
+     therefore we need to validate the remote descriptor.  */
+
+  if (remote_desc == -1)
+    return;
+
+  input_interrupt (0);
+}
+
+/* Asynchronous I/O support.  SIGIO must be unblocked when waiting,
+   in order to accept Control-C from the client, and must be blocked
+   when talking to the client.  */
+
+static void
+block_unblock_async_io (int block)
+{
+#ifndef USE_WIN32API
+  sigset_t sigio_set;
+
+  sigemptyset (&sigio_set);
+  sigaddset (&sigio_set, SIGIO);
+  gdb_sigmask (block ? SIG_BLOCK : SIG_UNBLOCK, &sigio_set, NULL);
+#endif
+}
+
+/* Current state of asynchronous I/O.  */
+static int async_io_enabled;
+
+/* Enable asynchronous I/O.  */
+void
+enable_async_io (void)
+{
+  if (async_io_enabled)
+    return;
+
+  block_unblock_async_io (0);
+
+  async_io_enabled = 1;
+}
+
+/* Disable asynchronous I/O.  */
+void
+disable_async_io (void)
+{
+  if (!async_io_enabled)
+    return;
+
+  block_unblock_async_io (1);
+
+  async_io_enabled = 0;
+}
+
+void
+initialize_async_io (void)
+{
+  /* Make sure that async I/O starts blocked.  */
+  async_io_enabled = 1;
+  disable_async_io ();
+
+  /* Install the signal handler.  */
+#ifndef USE_WIN32API
+  signal (SIGIO, input_interrupt);
+#endif
+}
+
+/* Internal buffer used by readchar.
+   These are global to readchar because reschedule_remote needs to be
+   able to tell whether the buffer is empty.  */
+
+static unsigned char readchar_buf[BUFSIZ];
+static int readchar_bufcnt = 0;
+static unsigned char *readchar_bufp;
+
+/* Returns next char from remote GDB.  -1 if error.  */
+
+static int
+readchar (void)
+{
+  int ch;
+
+  if (readchar_bufcnt == 0)
+    {
+      readchar_bufcnt = read_prim (readchar_buf, sizeof (readchar_buf));
+
+      if (readchar_bufcnt <= 0)
+	{
+	  if (readchar_bufcnt == 0)
+	    {
+	      if (remote_debug)
+		debug_printf ("readchar: Got EOF\n");
+	    }
+	  else
+	    perror ("readchar");
+
+	  return -1;
+	}
+
+      readchar_bufp = readchar_buf;
+    }
+
+  readchar_bufcnt--;
+  ch = *readchar_bufp++;
+  reschedule ();
+  return ch;
+}
+
+/* Reset the readchar state machine.  */
+
+static void
+reset_readchar (void)
+{
+  readchar_bufcnt = 0;
+  if (readchar_callback != NOT_SCHEDULED)
+    {
+      delete_timer (readchar_callback);
+      readchar_callback = NOT_SCHEDULED;
+    }
+}
+
+/* Process remaining data in readchar_buf.  */
+
+static void
+process_remaining (void *context)
+{
+  /* This is a one-shot event.  */
+  readchar_callback = NOT_SCHEDULED;
+
+  if (readchar_bufcnt > 0)
+    handle_serial_event (0, NULL);
+}
+
+/* If there is still data in the buffer, queue another event to process it,
+   we can't sleep in select yet.  */
+
+static void
+reschedule (void)
+{
+  if (readchar_bufcnt > 0 && readchar_callback == NOT_SCHEDULED)
+    readchar_callback = create_timer (0, process_remaining, NULL);
+}
+
+/* Read a packet from the remote machine, with error checking,
+   and store it in BUF.  Returns length of packet, or negative if error. */
+
+int
+getpkt (char *buf)
+{
+  client_state &cs = get_client_state ();
+  char *bp;
+  unsigned char csum, c1, c2;
+  int c;
+
+  while (1)
+    {
+      csum = 0;
+
+      while (1)
+	{
+	  c = readchar ();
+
+	  /* The '\003' may appear before or after each packet, so
+	     check for an input interrupt.  */
+	  if (c == '\003')
+	    {
+	      the_target->request_interrupt ();
+	      continue;
+	    }
+
+	  if (c == '$')
+	    break;
+	  if (remote_debug)
+	    {
+	      debug_printf ("[getpkt: discarding char '%c']\n", c);
+	      debug_flush ();
+	    }
+
+	  if (c < 0)
+	    return -1;
+	}
+
+      bp = buf;
+      while (1)
+	{
+	  c = readchar ();
+	  if (c < 0)
+	    return -1;
+	  if (c == '#')
+	    break;
+	  *bp++ = c;
+	  csum += c;
+	}
+      *bp = 0;
+
+      c1 = fromhex (readchar ());
+      c2 = fromhex (readchar ());
+
+      if (csum == (c1 << 4) + c2)
+	break;
+
+      if (cs.noack_mode)
+	{
+	  fprintf (stderr,
+		   "Bad checksum, sentsum=0x%x, csum=0x%x, "
+		   "buf=%s [no-ack-mode, Bad medium?]\n",
+		   (c1 << 4) + c2, csum, buf);
+	  /* Not much we can do, GDB wasn't expecting an ack/nac.  */
+	  break;
+	}
+
+      fprintf (stderr, "Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n",
+	       (c1 << 4) + c2, csum, buf);
+      if (write_prim ("-", 1) != 1)
+	return -1;
+    }
+
+  if (!cs.noack_mode)
+    {
+      if (remote_debug)
+	{
+	  debug_printf ("getpkt (\"%s\");  [sending ack] \n", buf);
+	  debug_flush ();
+	}
+
+      if (write_prim ("+", 1) != 1)
+	return -1;
+
+      if (remote_debug)
+	{
+	  debug_printf ("[sent ack]\n");
+	  debug_flush ();
+	}
+    }
+  else
+    {
+      if (remote_debug)
+	{
+	  debug_printf ("getpkt (\"%s\");  [no ack sent] \n", buf);
+	  debug_flush ();
+	}
+    }
+
+  /* The readchar above may have already read a '\003' out of the socket
+     and moved it to the local buffer.  For example, when GDB sends
+     vCont;c immediately followed by interrupt (see
+     gdb.base/interrupt-noterm.exp).  As soon as we see the vCont;c, we'll
+     resume the inferior and wait.  Since we've already moved the '\003'
+     to the local buffer, SIGIO won't help.  In that case, if we don't
+     check for interrupt after the vCont;c packet, the interrupt character
+     would stay in the buffer unattended until after the next (unrelated)
+     stop.  */
+  while (readchar_bufcnt > 0 && *readchar_bufp == '\003')
+    {
+      /* Consume the interrupt character in the buffer.  */
+      readchar ();
+      the_target->request_interrupt ();
+    }
+
+  return bp - buf;
+}
+
+void
+write_ok (char *buf)
+{
+  buf[0] = 'O';
+  buf[1] = 'K';
+  buf[2] = '\0';
+}
+
+void
+write_enn (char *buf)
+{
+  /* Some day, we should define the meanings of the error codes... */
+  buf[0] = 'E';
+  buf[1] = '0';
+  buf[2] = '1';
+  buf[3] = '\0';
+}
+
+#endif
+
+#ifndef IN_PROCESS_AGENT
+
+static char *
+outreg (struct regcache *regcache, int regno, char *buf)
+{
+  if ((regno >> 12) != 0)
+    *buf++ = tohex ((regno >> 12) & 0xf);
+  if ((regno >> 8) != 0)
+    *buf++ = tohex ((regno >> 8) & 0xf);
+  *buf++ = tohex ((regno >> 4) & 0xf);
+  *buf++ = tohex (regno & 0xf);
+  *buf++ = ':';
+  collect_register_as_string (regcache, regno, buf);
+  buf += 2 * register_size (regcache->tdesc, regno);
+  *buf++ = ';';
+
+  return buf;
+}
+
+void
+prepare_resume_reply (char *buf, ptid_t ptid,
+		      struct target_waitstatus *status)
+{
+  client_state &cs = get_client_state ();
+  if (debug_threads)
+    debug_printf ("Writing resume reply for %s:%d\n",
+		  target_pid_to_str (ptid), status->kind);
+
+  switch (status->kind)
+    {
+    case TARGET_WAITKIND_STOPPED:
+    case TARGET_WAITKIND_FORKED:
+    case TARGET_WAITKIND_VFORKED:
+    case TARGET_WAITKIND_VFORK_DONE:
+    case TARGET_WAITKIND_EXECD:
+    case TARGET_WAITKIND_THREAD_CREATED:
+    case TARGET_WAITKIND_SYSCALL_ENTRY:
+    case TARGET_WAITKIND_SYSCALL_RETURN:
+      {
+	struct thread_info *saved_thread;
+	const char **regp;
+	struct regcache *regcache;
+
+	if ((status->kind == TARGET_WAITKIND_FORKED && cs.report_fork_events)
+	    || (status->kind == TARGET_WAITKIND_VFORKED 
+		&& cs.report_vfork_events))
+	  {
+	    enum gdb_signal signal = GDB_SIGNAL_TRAP;
+	    const char *event = (status->kind == TARGET_WAITKIND_FORKED
+				 ? "fork" : "vfork");
+
+	    sprintf (buf, "T%02x%s:", signal, event);
+	    buf += strlen (buf);
+	    buf = write_ptid (buf, status->value.related_pid);
+	    strcat (buf, ";");
+	  }
+	else if (status->kind == TARGET_WAITKIND_VFORK_DONE 
+		 && cs.report_vfork_events)
+	  {
+	    enum gdb_signal signal = GDB_SIGNAL_TRAP;
+
+	    sprintf (buf, "T%02xvforkdone:;", signal);
+	  }
+	else if (status->kind == TARGET_WAITKIND_EXECD && cs.report_exec_events)
+	  {
+	    enum gdb_signal signal = GDB_SIGNAL_TRAP;
+	    const char *event = "exec";
+	    char hexified_pathname[PATH_MAX * 2];
+
+	    sprintf (buf, "T%02x%s:", signal, event);
+	    buf += strlen (buf);
+
+	    /* Encode pathname to hexified format.  */
+	    bin2hex ((const gdb_byte *) status->value.execd_pathname,
+		     hexified_pathname,
+		     strlen (status->value.execd_pathname));
+
+	    sprintf (buf, "%s;", hexified_pathname);
+	    xfree (status->value.execd_pathname);
+	    status->value.execd_pathname = NULL;
+	    buf += strlen (buf);
+	  }
+	else if (status->kind == TARGET_WAITKIND_THREAD_CREATED
+		 && cs.report_thread_events)
+	  {
+	    enum gdb_signal signal = GDB_SIGNAL_TRAP;
+
+	    sprintf (buf, "T%02xcreate:;", signal);
+	  }
+	else if (status->kind == TARGET_WAITKIND_SYSCALL_ENTRY
+		 || status->kind == TARGET_WAITKIND_SYSCALL_RETURN)
+	  {
+	    enum gdb_signal signal = GDB_SIGNAL_TRAP;
+	    const char *event = (status->kind == TARGET_WAITKIND_SYSCALL_ENTRY
+				 ? "syscall_entry" : "syscall_return");
+
+	    sprintf (buf, "T%02x%s:%x;", signal, event,
+		     status->value.syscall_number);
+	  }
+	else
+	  sprintf (buf, "T%02x", status->value.sig);
+
+	if (disable_packet_T)
+	  {
+	    /* This is a bit (OK, a lot) of a kludge, however, this isn't
+	       really a user feature, but exists only so GDB can use the
+	       gdbserver to test handling of the 'S' stop reply packet, so
+	       we would rather this code be as simple as possible.
+
+	       By this point we've started to build the 'T' stop packet,
+	       and it should look like 'Txx....' where 'x' is a hex digit.
+	       An 'S' stop packet always looks like 'Sxx', so all we do
+	       here is convert the buffer from a T packet to an S packet
+	       and the avoid adding any extra content by breaking out.  */
+	    gdb_assert (*buf == 'T');
+	    gdb_assert (isxdigit (*(buf + 1)));
+	    gdb_assert (isxdigit (*(buf + 2)));
+	    *buf = 'S';
+	    *(buf + 3) = '\0';
+	    break;
+	  }
+
+	buf += strlen (buf);
+
+	saved_thread = current_thread;
+
+	switch_to_thread (the_target, ptid);
+
+	regp = current_target_desc ()->expedite_regs;
+
+	regcache = get_thread_regcache (current_thread, 1);
+
+	if (the_target->stopped_by_watchpoint ())
+	  {
+	    CORE_ADDR addr;
+	    int i;
+
+	    memcpy (buf, "watch:", 6);
+	    buf += 6;
+
+	    addr = the_target->stopped_data_address ();
+
+	    /* Convert each byte of the address into two hexadecimal
+	       chars.  Note that we take sizeof (void *) instead of
+	       sizeof (addr); this is to avoid sending a 64-bit
+	       address to a 32-bit GDB.  */
+	    for (i = sizeof (void *) * 2; i > 0; i--)
+	      *buf++ = tohex ((addr >> (i - 1) * 4) & 0xf);
+	    *buf++ = ';';
+	  }
+	else if (cs.swbreak_feature && target_stopped_by_sw_breakpoint ())
+	  {
+	    sprintf (buf, "swbreak:;");
+	    buf += strlen (buf);
+	  }
+	else if (cs.hwbreak_feature && target_stopped_by_hw_breakpoint ())
+	  {
+	    sprintf (buf, "hwbreak:;");
+	    buf += strlen (buf);
+	  }
+
+	while (*regp)
+	  {
+	    buf = outreg (regcache, find_regno (regcache->tdesc, *regp), buf);
+	    regp ++;
+	  }
+	*buf = '\0';
+
+	/* Formerly, if the debugger had not used any thread features
+	   we would not burden it with a thread status response.  This
+	   was for the benefit of GDB 4.13 and older.  However, in
+	   recent GDB versions the check (``if (cont_thread != 0)'')
+	   does not have the desired effect because of sillyness in
+	   the way that the remote protocol handles specifying a
+	   thread.  Since thread support relies on qSymbol support
+	   anyway, assume GDB can handle threads.  */
+
+	if (using_threads && !disable_packet_Tthread)
+	  {
+	    /* This if (1) ought to be unnecessary.  But remote_wait
+	       in GDB will claim this event belongs to inferior_ptid
+	       if we do not specify a thread, and there's no way for
+	       gdbserver to know what inferior_ptid is.  */
+	    if (1 || cs.general_thread != ptid)
+	      {
+		int core = -1;
+		/* In non-stop, don't change the general thread behind
+		   GDB's back.  */
+		if (!non_stop)
+		  cs.general_thread = ptid;
+		sprintf (buf, "thread:");
+		buf += strlen (buf);
+		buf = write_ptid (buf, ptid);
+		strcat (buf, ";");
+		buf += strlen (buf);
+
+		core = target_core_of_thread (ptid);
+
+		if (core != -1)
+		  {
+		    sprintf (buf, "core:");
+		    buf += strlen (buf);
+		    sprintf (buf, "%x", core);
+		    strcat (buf, ";");
+		    buf += strlen (buf);
+		  }
+	      }
+	  }
+
+	if (dlls_changed)
+	  {
+	    strcpy (buf, "library:;");
+	    buf += strlen (buf);
+	    dlls_changed = 0;
+	  }
+
+	current_thread = saved_thread;
+      }
+      break;
+    case TARGET_WAITKIND_EXITED:
+      if (cs.multi_process)
+	sprintf (buf, "W%x;process:%x",
+		 status->value.integer, ptid.pid ());
+      else
+	sprintf (buf, "W%02x", status->value.integer);
+      break;
+    case TARGET_WAITKIND_SIGNALLED:
+      if (cs.multi_process)
+	sprintf (buf, "X%x;process:%x",
+		 status->value.sig, ptid.pid ());
+      else
+	sprintf (buf, "X%02x", status->value.sig);
+      break;
+    case TARGET_WAITKIND_THREAD_EXITED:
+      sprintf (buf, "w%x;", status->value.integer);
+      buf += strlen (buf);
+      buf = write_ptid (buf, ptid);
+      break;
+    case TARGET_WAITKIND_NO_RESUMED:
+      sprintf (buf, "N");
+      break;
+    default:
+      error ("unhandled waitkind");
+      break;
+    }
+}
+
+void
+decode_m_packet (char *from, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr)
+{
+  int i = 0, j = 0;
+  char ch;
+  *mem_addr_ptr = *len_ptr = 0;
+
+  while ((ch = from[i++]) != ',')
+    {
+      *mem_addr_ptr = *mem_addr_ptr << 4;
+      *mem_addr_ptr |= fromhex (ch) & 0x0f;
+    }
+
+  for (j = 0; j < 4; j++)
+    {
+      if ((ch = from[i++]) == 0)
+	break;
+      *len_ptr = *len_ptr << 4;
+      *len_ptr |= fromhex (ch) & 0x0f;
+    }
+}
+
+void
+decode_M_packet (char *from, CORE_ADDR *mem_addr_ptr, unsigned int *len_ptr,
+		 unsigned char **to_p)
+{
+  int i = 0;
+  char ch;
+  *mem_addr_ptr = *len_ptr = 0;
+
+  while ((ch = from[i++]) != ',')
+    {
+      *mem_addr_ptr = *mem_addr_ptr << 4;
+      *mem_addr_ptr |= fromhex (ch) & 0x0f;
+    }
+
+  while ((ch = from[i++]) != ':')
+    {
+      *len_ptr = *len_ptr << 4;
+      *len_ptr |= fromhex (ch) & 0x0f;
+    }
+
+  if (*to_p == NULL)
+    *to_p = (unsigned char *) xmalloc (*len_ptr);
+
+  hex2bin (&from[i++], *to_p, *len_ptr);
+}
+
+int
+decode_X_packet (char *from, int packet_len, CORE_ADDR *mem_addr_ptr,
+		 unsigned int *len_ptr, unsigned char **to_p)
+{
+  int i = 0;
+  char ch;
+  *mem_addr_ptr = *len_ptr = 0;
+
+  while ((ch = from[i++]) != ',')
+    {
+      *mem_addr_ptr = *mem_addr_ptr << 4;
+      *mem_addr_ptr |= fromhex (ch) & 0x0f;
+    }
+
+  while ((ch = from[i++]) != ':')
+    {
+      *len_ptr = *len_ptr << 4;
+      *len_ptr |= fromhex (ch) & 0x0f;
+    }
+
+  if (*to_p == NULL)
+    *to_p = (unsigned char *) xmalloc (*len_ptr);
+
+  if (remote_unescape_input ((const gdb_byte *) &from[i], packet_len - i,
+			     *to_p, *len_ptr) != *len_ptr)
+    return -1;
+
+  return 0;
+}
+
+/* Decode a qXfer write request.  */
+
+int
+decode_xfer_write (char *buf, int packet_len, CORE_ADDR *offset,
+		   unsigned int *len, unsigned char *data)
+{
+  char ch;
+  char *b = buf;
+
+  /* Extract the offset.  */
+  *offset = 0;
+  while ((ch = *buf++) != ':')
+    {
+      *offset = *offset << 4;
+      *offset |= fromhex (ch) & 0x0f;
+    }
+
+  /* Get encoded data.  */
+  packet_len -= buf - b;
+  *len = remote_unescape_input ((const gdb_byte *) buf, packet_len,
+				data, packet_len);
+  return 0;
+}
+
+/* Decode the parameters of a qSearch:memory packet.  */
+
+int
+decode_search_memory_packet (const char *buf, int packet_len,
+			     CORE_ADDR *start_addrp,
+			     CORE_ADDR *search_space_lenp,
+			     gdb_byte *pattern, unsigned int *pattern_lenp)
+{
+  const char *p = buf;
+
+  p = decode_address_to_semicolon (start_addrp, p);
+  p = decode_address_to_semicolon (search_space_lenp, p);
+  packet_len -= p - buf;
+  *pattern_lenp = remote_unescape_input ((const gdb_byte *) p, packet_len,
+					 pattern, packet_len);
+  return 0;
+}
+
+static void
+free_sym_cache (struct sym_cache *sym)
+{
+  if (sym != NULL)
+    {
+      free (sym->name);
+      free (sym);
+    }
+}
+
+void
+clear_symbol_cache (struct sym_cache **symcache_p)
+{
+  struct sym_cache *sym, *next;
+
+  /* Check the cache first.  */
+  for (sym = *symcache_p; sym; sym = next)
+    {
+      next = sym->next;
+      free_sym_cache (sym);
+    }
+
+  *symcache_p = NULL;
+}
+
+/* Get the address of NAME, and return it in ADDRP if found.  if
+   MAY_ASK_GDB is false, assume symbol cache misses are failures.
+   Returns 1 if the symbol is found, 0 if it is not, -1 on error.  */
+
+int
+look_up_one_symbol (const char *name, CORE_ADDR *addrp, int may_ask_gdb)
+{
+  client_state &cs = get_client_state ();
+  char *p, *q;
+  int len;
+  struct sym_cache *sym;
+  struct process_info *proc;
+
+  proc = current_process ();
+
+  /* Check the cache first.  */
+  for (sym = proc->symbol_cache; sym; sym = sym->next)
+    if (strcmp (name, sym->name) == 0)
+      {
+	*addrp = sym->addr;
+	return 1;
+      }
+
+  /* It might not be an appropriate time to look up a symbol,
+     e.g. while we're trying to fetch registers.  */
+  if (!may_ask_gdb)
+    return 0;
+
+  /* Send the request.  */
+  strcpy (cs.own_buf, "qSymbol:");
+  bin2hex ((const gdb_byte *) name, cs.own_buf + strlen ("qSymbol:"),
+	  strlen (name));
+  if (putpkt (cs.own_buf) < 0)
+    return -1;
+
+  /* FIXME:  Eventually add buffer overflow checking (to getpkt?)  */
+  len = getpkt (cs.own_buf);
+  if (len < 0)
+    return -1;
+
+  /* We ought to handle pretty much any packet at this point while we
+     wait for the qSymbol "response".  That requires re-entering the
+     main loop.  For now, this is an adequate approximation; allow
+     GDB to read from memory and handle 'v' packets (for vFile transfers)
+     while it figures out the address of the symbol.  */
+  while (1)
+    {
+      if (cs.own_buf[0] == 'm')
+	{
+	  CORE_ADDR mem_addr;
+	  unsigned char *mem_buf;
+	  unsigned int mem_len;
+
+	  decode_m_packet (&cs.own_buf[1], &mem_addr, &mem_len);
+	  mem_buf = (unsigned char *) xmalloc (mem_len);
+	  if (read_inferior_memory (mem_addr, mem_buf, mem_len) == 0)
+	    bin2hex (mem_buf, cs.own_buf, mem_len);
+	  else
+	    write_enn (cs.own_buf);
+	  free (mem_buf);
+	  if (putpkt (cs.own_buf) < 0)
+	    return -1;
+	}
+      else if (cs.own_buf[0] == 'v')
+	{
+	  int new_len = -1;
+	  handle_v_requests (cs.own_buf, len, &new_len);
+	  if (new_len != -1)
+	    putpkt_binary (cs.own_buf, new_len);
+	  else
+	    putpkt (cs.own_buf);
+	}
+      else
+	break;
+      len = getpkt (cs.own_buf);
+      if (len < 0)
+	return -1;
+    }
+
+  if (!startswith (cs.own_buf, "qSymbol:"))
+    {
+      warning ("Malformed response to qSymbol, ignoring: %s", cs.own_buf);
+      return -1;
+    }
+
+  p = cs.own_buf + strlen ("qSymbol:");
+  q = p;
+  while (*q && *q != ':')
+    q++;
+
+  /* Make sure we found a value for the symbol.  */
+  if (p == q || *q == '\0')
+    return 0;
+
+  decode_address (addrp, p, q - p);
+
+  /* Save the symbol in our cache.  */
+  sym = XNEW (struct sym_cache);
+  sym->name = xstrdup (name);
+  sym->addr = *addrp;
+  sym->next = proc->symbol_cache;
+  proc->symbol_cache = sym;
+
+  return 1;
+}
+
+/* Relocate an instruction to execute at a different address.  OLDLOC
+   is the address in the inferior memory where the instruction to
+   relocate is currently at.  On input, TO points to the destination
+   where we want the instruction to be copied (and possibly adjusted)
+   to.  On output, it points to one past the end of the resulting
+   instruction(s).  The effect of executing the instruction at TO
+   shall be the same as if executing it at OLDLOC.  For example, call
+   instructions that implicitly push the return address on the stack
+   should be adjusted to return to the instruction after OLDLOC;
+   relative branches, and other PC-relative instructions need the
+   offset adjusted; etc.  Returns 0 on success, -1 on failure.  */
+
+int
+relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc)
+{
+  client_state &cs = get_client_state ();
+  int len;
+  ULONGEST written = 0;
+
+  /* Send the request.  */
+  sprintf (cs.own_buf, "qRelocInsn:%s;%s", paddress (oldloc),
+	   paddress (*to));
+  if (putpkt (cs.own_buf) < 0)
+    return -1;
+
+  /* FIXME:  Eventually add buffer overflow checking (to getpkt?)  */
+  len = getpkt (cs.own_buf);
+  if (len < 0)
+    return -1;
+
+  /* We ought to handle pretty much any packet at this point while we
+     wait for the qRelocInsn "response".  That requires re-entering
+     the main loop.  For now, this is an adequate approximation; allow
+     GDB to access memory.  */
+  while (cs.own_buf[0] == 'm' || cs.own_buf[0] == 'M' || cs.own_buf[0] == 'X')
+    {
+      CORE_ADDR mem_addr;
+      unsigned char *mem_buf = NULL;
+      unsigned int mem_len;
+
+      if (cs.own_buf[0] == 'm')
+	{
+	  decode_m_packet (&cs.own_buf[1], &mem_addr, &mem_len);
+	  mem_buf = (unsigned char *) xmalloc (mem_len);
+	  if (read_inferior_memory (mem_addr, mem_buf, mem_len) == 0)
+	    bin2hex (mem_buf, cs.own_buf, mem_len);
+	  else
+	    write_enn (cs.own_buf);
+	}
+      else if (cs.own_buf[0] == 'X')
+	{
+	  if (decode_X_packet (&cs.own_buf[1], len - 1, &mem_addr,
+			       &mem_len, &mem_buf) < 0
+	      || target_write_memory (mem_addr, mem_buf, mem_len) != 0)
+	    write_enn (cs.own_buf);
+	  else
+	    write_ok (cs.own_buf);
+	}
+      else
+	{
+	  decode_M_packet (&cs.own_buf[1], &mem_addr, &mem_len, &mem_buf);
+	  if (target_write_memory (mem_addr, mem_buf, mem_len) == 0)
+	    write_ok (cs.own_buf);
+	  else
+	    write_enn (cs.own_buf);
+	}
+      free (mem_buf);
+      if (putpkt (cs.own_buf) < 0)
+	return -1;
+      len = getpkt (cs.own_buf);
+      if (len < 0)
+	return -1;
+    }
+
+  if (cs.own_buf[0] == 'E')
+    {
+      warning ("An error occurred while relocating an instruction: %s",
+	       cs.own_buf);
+      return -1;
+    }
+
+  if (!startswith (cs.own_buf, "qRelocInsn:"))
+    {
+      warning ("Malformed response to qRelocInsn, ignoring: %s",
+	       cs.own_buf);
+      return -1;
+    }
+
+  unpack_varlen_hex (cs.own_buf + strlen ("qRelocInsn:"), &written);
+
+  *to += written;
+  return 0;
+}
+
+void
+monitor_output (const char *msg)
+{
+  int len = strlen (msg);
+  char *buf = (char *) xmalloc (len * 2 + 2);
+
+  buf[0] = 'O';
+  bin2hex ((const gdb_byte *) msg, buf + 1, len);
+
+  putpkt (buf);
+  free (buf);
+}
+
+#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/remote-utils.h ./gdbserver/remote-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/remote-utils.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/remote-utils.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,70 @@
+/* Remote utility routines for the remote server for GDB.
+   Copyright (C) 1993-2021 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 GDBSERVER_REMOTE_UTILS_H
+#define GDBSERVER_REMOTE_UTILS_H
+
+int gdb_connected (void);
+
+#define STDIO_CONNECTION_NAME "stdio"
+int remote_connection_is_stdio (void);
+
+ptid_t read_ptid (const char *buf, const char **obuf);
+char *write_ptid (char *buf, ptid_t ptid);
+
+int putpkt (char *buf);
+int putpkt_binary (char *buf, int len);
+int putpkt_notif (char *buf);
+int getpkt (char *buf);
+void remote_prepare (const char *name);
+void remote_open (const char *name);
+void remote_close (void);
+void write_ok (char *buf);
+void write_enn (char *buf);
+void initialize_async_io (void);
+void enable_async_io (void);
+void disable_async_io (void);
+void check_remote_input_interrupt_request (void);
+void prepare_resume_reply (char *buf, ptid_t ptid,
+			   struct target_waitstatus *status);
+
+const char *decode_address_to_semicolon (CORE_ADDR *addrp, const char *start);
+void decode_address (CORE_ADDR *addrp, const char *start, int len);
+void decode_m_packet (char *from, CORE_ADDR * mem_addr_ptr,
+		      unsigned int *len_ptr);
+void decode_M_packet (char *from, CORE_ADDR * mem_addr_ptr,
+		      unsigned int *len_ptr, unsigned char **to_p);
+int decode_X_packet (char *from, int packet_len, CORE_ADDR * mem_addr_ptr,
+		     unsigned int *len_ptr, unsigned char **to_p);
+int decode_xfer_write (char *buf, int packet_len,
+		       CORE_ADDR *offset, unsigned int *len,
+		       unsigned char *data);
+int decode_search_memory_packet (const char *buf, int packet_len,
+				 CORE_ADDR *start_addrp,
+				 CORE_ADDR *search_space_lenp,
+				 gdb_byte *pattern,
+				 unsigned int *pattern_lenp);
+
+void clear_symbol_cache (struct sym_cache **symcache_p);
+int look_up_one_symbol (const char *name, CORE_ADDR *addrp, int may_ask_gdb);
+
+int relocate_instruction (CORE_ADDR *to, CORE_ADDR oldloc);
+
+void monitor_output (const char *msg);
+
+#endif /* GDBSERVER_REMOTE_UTILS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/server.cc ./gdbserver/server.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/server.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/server.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,4584 @@
+/* Main code for remote server for GDB.
+   Copyright (C) 1989-2021 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 "server.h"
+#include "gdbthread.h"
+#include "gdbsupport/agent.h"
+#include "notif.h"
+#include "tdesc.h"
+#include "gdbsupport/rsp-low.h"
+#include "gdbsupport/signals-state-save-restore.h"
+#include <ctype.h>
+#include <unistd.h>
+#if HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#include "gdbsupport/gdb_vecs.h"
+#include "gdbsupport/gdb_wait.h"
+#include "gdbsupport/btrace-common.h"
+#include "gdbsupport/filestuff.h"
+#include "tracepoint.h"
+#include "dll.h"
+#include "hostio.h"
+#include <vector>
+#include "gdbsupport/common-inferior.h"
+#include "gdbsupport/job-control.h"
+#include "gdbsupport/environ.h"
+#include "filenames.h"
+#include "gdbsupport/pathstuff.h"
+#ifdef USE_XML
+#include "xml-builtin.h"
+#endif
+
+#include "gdbsupport/selftest.h"
+#include "gdbsupport/scope-exit.h"
+#include "gdbsupport/gdb_select.h"
+#include "gdbsupport/scoped_restore.h"
+
+#define require_running_or_return(BUF)		\
+  if (!target_running ())			\
+    {						\
+      write_enn (BUF);				\
+      return;					\
+    }
+
+#define require_running_or_break(BUF)		\
+  if (!target_running ())			\
+    {						\
+      write_enn (BUF);				\
+      break;					\
+    }
+
+/* String containing the current directory (what getwd would return).  */
+
+char *current_directory;
+
+/* The environment to pass to the inferior when creating it.  */
+
+static gdb_environ our_environ;
+
+bool server_waiting;
+
+static bool extended_protocol;
+static bool response_needed;
+static bool exit_requested;
+
+/* --once: Exit after the first connection has closed.  */
+bool run_once;
+
+/* Whether to report TARGET_WAITKIND_NO_RESUMED events.  */
+static bool report_no_resumed;
+
+/* The event loop checks this to decide whether to continue accepting
+   events.  */
+static bool keep_processing_events = true;
+
+bool non_stop;
+
+static struct {
+  /* Set the PROGRAM_PATH.  Here we adjust the path of the provided
+     binary if needed.  */
+  void set (gdb::unique_xmalloc_ptr<char> &&path)
+  {
+    m_path = std::move (path);
+
+    /* Make sure we're using the absolute path of the inferior when
+       creating it.  */
+    if (!contains_dir_separator (m_path.get ()))
+      {
+	int reg_file_errno;
+
+	/* Check if the file is in our CWD.  If it is, then we prefix
+	   its name with CURRENT_DIRECTORY.  Otherwise, we leave the
+	   name as-is because we'll try searching for it in $PATH.  */
+	if (is_regular_file (m_path.get (), &reg_file_errno))
+	  m_path = gdb_abspath (m_path.get ());
+      }
+  }
+
+  /* Return the PROGRAM_PATH.  */
+  char *get ()
+  { return m_path.get (); }
+
+private:
+  /* The program name, adjusted if needed.  */
+  gdb::unique_xmalloc_ptr<char> m_path;
+} program_path;
+static std::vector<char *> program_args;
+static std::string wrapper_argv;
+
+/* The PID of the originally created or attached inferior.  Used to
+   send signals to the process when GDB sends us an asynchronous interrupt
+   (user hitting Control-C in the client), and to wait for the child to exit
+   when no longer debugging it.  */
+
+unsigned long signal_pid;
+
+/* Set if you want to disable optional thread related packets support
+   in gdbserver, for the sake of testing GDB against stubs that don't
+   support them.  */
+bool disable_packet_vCont;
+bool disable_packet_Tthread;
+bool disable_packet_qC;
+bool disable_packet_qfThreadInfo;
+bool disable_packet_T;
+
+static unsigned char *mem_buf;
+
+/* A sub-class of 'struct notif_event' for stop, holding information
+   relative to a single stop reply.  We keep a queue of these to
+   push to GDB in non-stop mode.  */
+
+struct vstop_notif : public notif_event
+{
+  /* Thread or process that got the event.  */
+  ptid_t ptid;
+
+  /* Event info.  */
+  struct target_waitstatus status;
+};
+
+/* The current btrace configuration.  This is gdbserver's mirror of GDB's
+   btrace configuration.  */
+static struct btrace_config current_btrace_conf;
+
+/* The client remote protocol state. */
+
+static client_state g_client_state;
+
+client_state &
+get_client_state ()
+{
+  client_state &cs = g_client_state;
+  return cs;
+}
+
+
+/* Put a stop reply to the stop reply queue.  */
+
+static void
+queue_stop_reply (ptid_t ptid, struct target_waitstatus *status)
+{
+  struct vstop_notif *new_notif = new struct vstop_notif;
+
+  new_notif->ptid = ptid;
+  new_notif->status = *status;
+
+  notif_event_enque (&notif_stop, new_notif);
+}
+
+static bool
+remove_all_on_match_ptid (struct notif_event *event, ptid_t filter_ptid)
+{
+  struct vstop_notif *vstop_event = (struct vstop_notif *) event;
+
+  return vstop_event->ptid.matches (filter_ptid);
+}
+
+/* See server.h.  */
+
+void
+discard_queued_stop_replies (ptid_t ptid)
+{
+  std::list<notif_event *>::iterator iter, next, end;
+  end = notif_stop.queue.end ();
+  for (iter = notif_stop.queue.begin (); iter != end; iter = next)
+    {
+      next = iter;
+      ++next;
+
+      if (remove_all_on_match_ptid (*iter, ptid))
+	{
+	  delete *iter;
+	  notif_stop.queue.erase (iter);
+	}
+    }
+}
+
+static void
+vstop_notif_reply (struct notif_event *event, char *own_buf)
+{
+  struct vstop_notif *vstop = (struct vstop_notif *) event;
+
+  prepare_resume_reply (own_buf, vstop->ptid, &vstop->status);
+}
+
+/* Helper for in_queued_stop_replies.  */
+
+static bool
+in_queued_stop_replies_ptid (struct notif_event *event, ptid_t filter_ptid)
+{
+  struct vstop_notif *vstop_event = (struct vstop_notif *) event;
+
+  if (vstop_event->ptid.matches (filter_ptid))
+    return true;
+
+  /* Don't resume fork children that GDB does not know about yet.  */
+  if ((vstop_event->status.kind == TARGET_WAITKIND_FORKED
+       || vstop_event->status.kind == TARGET_WAITKIND_VFORKED)
+      && vstop_event->status.value.related_pid.matches (filter_ptid))
+    return true;
+
+  return false;
+}
+
+/* See server.h.  */
+
+int
+in_queued_stop_replies (ptid_t ptid)
+{
+  for (notif_event *event : notif_stop.queue)
+    {
+      if (in_queued_stop_replies_ptid (event, ptid))
+	return true;
+    }
+
+  return false;
+}
+
+struct notif_server notif_stop =
+{
+  "vStopped", "Stop", {}, vstop_notif_reply,
+};
+
+static int
+target_running (void)
+{
+  return get_first_thread () != NULL;
+}
+
+/* See gdbsupport/common-inferior.h.  */
+
+const char *
+get_exec_wrapper ()
+{
+  return !wrapper_argv.empty () ? wrapper_argv.c_str () : NULL;
+}
+
+/* See gdbsupport/common-inferior.h.  */
+
+const char *
+get_exec_file (int err)
+{
+  if (err && program_path.get () == NULL)
+    error (_("No executable file specified."));
+
+  return program_path.get ();
+}
+
+/* See server.h.  */
+
+gdb_environ *
+get_environ ()
+{
+  return &our_environ;
+}
+
+static int
+attach_inferior (int pid)
+{
+  client_state &cs = get_client_state ();
+  /* myattach should return -1 if attaching is unsupported,
+     0 if it succeeded, and call error() otherwise.  */
+
+  if (find_process_pid (pid) != nullptr)
+    error ("Already attached to process %d\n", pid);
+
+  if (myattach (pid) != 0)
+    return -1;
+
+  fprintf (stderr, "Attached; pid = %d\n", pid);
+  fflush (stderr);
+
+  /* FIXME - It may be that we should get the SIGNAL_PID from the
+     attach function, so that it can be the main thread instead of
+     whichever we were told to attach to.  */
+  signal_pid = pid;
+
+  if (!non_stop)
+    {
+      cs.last_ptid = mywait (ptid_t (pid), &cs.last_status, 0, 0);
+
+      /* GDB knows to ignore the first SIGSTOP after attaching to a running
+	 process using the "attach" command, but this is different; it's
+	 just using "target remote".  Pretend it's just starting up.  */
+      if (cs.last_status.kind == TARGET_WAITKIND_STOPPED
+	  && cs.last_status.value.sig == GDB_SIGNAL_STOP)
+	cs.last_status.value.sig = GDB_SIGNAL_TRAP;
+
+      current_thread->last_resume_kind = resume_stop;
+      current_thread->last_status = cs.last_status;
+    }
+
+  return 0;
+}
+
+/* Decode a qXfer read request.  Return 0 if everything looks OK,
+   or -1 otherwise.  */
+
+static int
+decode_xfer_read (char *buf, CORE_ADDR *ofs, unsigned int *len)
+{
+  /* After the read marker and annex, qXfer looks like a
+     traditional 'm' packet.  */
+  decode_m_packet (buf, ofs, len);
+
+  return 0;
+}
+
+static int
+decode_xfer (char *buf, char **object, char **rw, char **annex, char **offset)
+{
+  /* Extract and NUL-terminate the object.  */
+  *object = buf;
+  while (*buf && *buf != ':')
+    buf++;
+  if (*buf == '\0')
+    return -1;
+  *buf++ = 0;
+
+  /* Extract and NUL-terminate the read/write action.  */
+  *rw = buf;
+  while (*buf && *buf != ':')
+    buf++;
+  if (*buf == '\0')
+    return -1;
+  *buf++ = 0;
+
+  /* Extract and NUL-terminate the annex.  */
+  *annex = buf;
+  while (*buf && *buf != ':')
+    buf++;
+  if (*buf == '\0')
+    return -1;
+  *buf++ = 0;
+
+  *offset = buf;
+  return 0;
+}
+
+/* Write the response to a successful qXfer read.  Returns the
+   length of the (binary) data stored in BUF, corresponding
+   to as much of DATA/LEN as we could fit.  IS_MORE controls
+   the first character of the response.  */
+static int
+write_qxfer_response (char *buf, const gdb_byte *data, int len, int is_more)
+{
+  int out_len;
+
+  if (is_more)
+    buf[0] = 'm';
+  else
+    buf[0] = 'l';
+
+  return remote_escape_output (data, len, 1, (unsigned char *) buf + 1,
+			       &out_len, PBUFSIZ - 2) + 1;
+}
+
+/* Handle btrace enabling in BTS format.  */
+
+static void
+handle_btrace_enable_bts (struct thread_info *thread)
+{
+  if (thread->btrace != NULL)
+    error (_("Btrace already enabled."));
+
+  current_btrace_conf.format = BTRACE_FORMAT_BTS;
+  thread->btrace = target_enable_btrace (thread->id, &current_btrace_conf);
+}
+
+/* Handle btrace enabling in Intel Processor Trace format.  */
+
+static void
+handle_btrace_enable_pt (struct thread_info *thread)
+{
+  if (thread->btrace != NULL)
+    error (_("Btrace already enabled."));
+
+  current_btrace_conf.format = BTRACE_FORMAT_PT;
+  thread->btrace = target_enable_btrace (thread->id, &current_btrace_conf);
+}
+
+/* Handle btrace disabling.  */
+
+static void
+handle_btrace_disable (struct thread_info *thread)
+{
+
+  if (thread->btrace == NULL)
+    error (_("Branch tracing not enabled."));
+
+  if (target_disable_btrace (thread->btrace) != 0)
+    error (_("Could not disable branch tracing."));
+
+  thread->btrace = NULL;
+}
+
+/* Handle the "Qbtrace" packet.  */
+
+static int
+handle_btrace_general_set (char *own_buf)
+{
+  client_state &cs = get_client_state ();
+  struct thread_info *thread;
+  char *op;
+
+  if (!startswith (own_buf, "Qbtrace:"))
+    return 0;
+
+  op = own_buf + strlen ("Qbtrace:");
+
+  if (cs.general_thread == null_ptid
+      || cs.general_thread == minus_one_ptid)
+    {
+      strcpy (own_buf, "E.Must select a single thread.");
+      return -1;
+    }
+
+  thread = find_thread_ptid (cs.general_thread);
+  if (thread == NULL)
+    {
+      strcpy (own_buf, "E.No such thread.");
+      return -1;
+    }
+
+  try
+    {
+      if (strcmp (op, "bts") == 0)
+	handle_btrace_enable_bts (thread);
+      else if (strcmp (op, "pt") == 0)
+	handle_btrace_enable_pt (thread);
+      else if (strcmp (op, "off") == 0)
+	handle_btrace_disable (thread);
+      else
+	error (_("Bad Qbtrace operation.  Use bts, pt, or off."));
+
+      write_ok (own_buf);
+    }
+  catch (const gdb_exception_error &exception)
+    {
+      sprintf (own_buf, "E.%s", exception.what ());
+    }
+
+  return 1;
+}
+
+/* Handle the "Qbtrace-conf" packet.  */
+
+static int
+handle_btrace_conf_general_set (char *own_buf)
+{
+  client_state &cs = get_client_state ();
+  struct thread_info *thread;
+  char *op;
+
+  if (!startswith (own_buf, "Qbtrace-conf:"))
+    return 0;
+
+  op = own_buf + strlen ("Qbtrace-conf:");
+
+  if (cs.general_thread == null_ptid
+      || cs.general_thread == minus_one_ptid)
+    {
+      strcpy (own_buf, "E.Must select a single thread.");
+      return -1;
+    }
+
+  thread = find_thread_ptid (cs.general_thread);
+  if (thread == NULL)
+    {
+      strcpy (own_buf, "E.No such thread.");
+      return -1;
+    }
+
+  if (startswith (op, "bts:size="))
+    {
+      unsigned long size;
+      char *endp = NULL;
+
+      errno = 0;
+      size = strtoul (op + strlen ("bts:size="), &endp, 16);
+      if (endp == NULL || *endp != 0 || errno != 0 || size > UINT_MAX)
+	{
+	  strcpy (own_buf, "E.Bad size value.");
+	  return -1;
+	}
+
+      current_btrace_conf.bts.size = (unsigned int) size;
+    }
+  else if (strncmp (op, "pt:size=", strlen ("pt:size=")) == 0)
+    {
+      unsigned long size;
+      char *endp = NULL;
+
+      errno = 0;
+      size = strtoul (op + strlen ("pt:size="), &endp, 16);
+      if (endp == NULL || *endp != 0 || errno != 0 || size > UINT_MAX)
+	{
+	  strcpy (own_buf, "E.Bad size value.");
+	  return -1;
+	}
+
+      current_btrace_conf.pt.size = (unsigned int) size;
+    }
+  else
+    {
+      strcpy (own_buf, "E.Bad Qbtrace configuration option.");
+      return -1;
+    }
+
+  write_ok (own_buf);
+  return 1;
+}
+
+/* Handle all of the extended 'Q' packets.  */
+
+static void
+handle_general_set (char *own_buf)
+{
+  client_state &cs = get_client_state ();
+  if (startswith (own_buf, "QPassSignals:"))
+    {
+      int numsigs = (int) GDB_SIGNAL_LAST, i;
+      const char *p = own_buf + strlen ("QPassSignals:");
+      CORE_ADDR cursig;
+
+      p = decode_address_to_semicolon (&cursig, p);
+      for (i = 0; i < numsigs; i++)
+	{
+	  if (i == cursig)
+	    {
+	      cs.pass_signals[i] = 1;
+	      if (*p == '\0')
+		/* Keep looping, to clear the remaining signals.  */
+		cursig = -1;
+	      else
+		p = decode_address_to_semicolon (&cursig, p);
+	    }
+	  else
+	    cs.pass_signals[i] = 0;
+	}
+      strcpy (own_buf, "OK");
+      return;
+    }
+
+  if (startswith (own_buf, "QProgramSignals:"))
+    {
+      int numsigs = (int) GDB_SIGNAL_LAST, i;
+      const char *p = own_buf + strlen ("QProgramSignals:");
+      CORE_ADDR cursig;
+
+      cs.program_signals_p = 1;
+
+      p = decode_address_to_semicolon (&cursig, p);
+      for (i = 0; i < numsigs; i++)
+	{
+	  if (i == cursig)
+	    {
+	      cs.program_signals[i] = 1;
+	      if (*p == '\0')
+		/* Keep looping, to clear the remaining signals.  */
+		cursig = -1;
+	      else
+		p = decode_address_to_semicolon (&cursig, p);
+	    }
+	  else
+	    cs.program_signals[i] = 0;
+	}
+      strcpy (own_buf, "OK");
+      return;
+    }
+
+  if (startswith (own_buf, "QCatchSyscalls:"))
+    {
+      const char *p = own_buf + sizeof ("QCatchSyscalls:") - 1;
+      int enabled = -1;
+      CORE_ADDR sysno;
+      struct process_info *process;
+
+      if (!target_running () || !target_supports_catch_syscall ())
+	{
+	  write_enn (own_buf);
+	  return;
+	}
+
+      if (strcmp (p, "0") == 0)
+	enabled = 0;
+      else if (p[0] == '1' && (p[1] == ';' || p[1] == '\0'))
+	enabled = 1;
+      else
+	{
+	  fprintf (stderr, "Unknown catch-syscalls mode requested: %s\n",
+		   own_buf);
+	  write_enn (own_buf);
+	  return;
+	}
+
+      process = current_process ();
+      process->syscalls_to_catch.clear ();
+
+      if (enabled)
+	{
+	  p += 1;
+	  if (*p == ';')
+	    {
+	      p += 1;
+	      while (*p != '\0')
+		{
+		  p = decode_address_to_semicolon (&sysno, p);
+		  process->syscalls_to_catch.push_back (sysno);
+		}
+	    }
+	  else
+	    process->syscalls_to_catch.push_back (ANY_SYSCALL);
+	}
+
+      write_ok (own_buf);
+      return;
+    }
+
+  if (strcmp (own_buf, "QEnvironmentReset") == 0)
+    {
+      our_environ = gdb_environ::from_host_environ ();
+
+      write_ok (own_buf);
+      return;
+    }
+
+  if (startswith (own_buf, "QEnvironmentHexEncoded:"))
+    {
+      const char *p = own_buf + sizeof ("QEnvironmentHexEncoded:") - 1;
+      /* The final form of the environment variable.  FINAL_VAR will
+	 hold the 'VAR=VALUE' format.  */
+      std::string final_var = hex2str (p);
+      std::string var_name, var_value;
+
+      if (remote_debug)
+	{
+	  debug_printf (_("[QEnvironmentHexEncoded received '%s']\n"), p);
+	  debug_printf (_("[Environment variable to be set: '%s']\n"),
+			final_var.c_str ());
+	  debug_flush ();
+	}
+
+      size_t pos = final_var.find ('=');
+      if (pos == std::string::npos)
+	{
+	  warning (_("Unexpected format for environment variable: '%s'"),
+		   final_var.c_str ());
+	  write_enn (own_buf);
+	  return;
+	}
+
+      var_name = final_var.substr (0, pos);
+      var_value = final_var.substr (pos + 1, std::string::npos);
+
+      our_environ.set (var_name.c_str (), var_value.c_str ());
+
+      write_ok (own_buf);
+      return;
+    }
+
+  if (startswith (own_buf, "QEnvironmentUnset:"))
+    {
+      const char *p = own_buf + sizeof ("QEnvironmentUnset:") - 1;
+      std::string varname = hex2str (p);
+
+      if (remote_debug)
+	{
+	  debug_printf (_("[QEnvironmentUnset received '%s']\n"), p);
+	  debug_printf (_("[Environment variable to be unset: '%s']\n"),
+			varname.c_str ());
+	  debug_flush ();
+	}
+
+      our_environ.unset (varname.c_str ());
+
+      write_ok (own_buf);
+      return;
+    }
+
+  if (strcmp (own_buf, "QStartNoAckMode") == 0)
+    {
+      if (remote_debug)
+	{
+	  debug_printf ("[noack mode enabled]\n");
+	  debug_flush ();
+	}
+
+      cs.noack_mode = 1;
+      write_ok (own_buf);
+      return;
+    }
+
+  if (startswith (own_buf, "QNonStop:"))
+    {
+      char *mode = own_buf + 9;
+      int req = -1;
+      const char *req_str;
+
+      if (strcmp (mode, "0") == 0)
+	req = 0;
+      else if (strcmp (mode, "1") == 0)
+	req = 1;
+      else
+	{
+	  /* We don't know what this mode is, so complain to
+	     GDB.  */
+	  fprintf (stderr, "Unknown non-stop mode requested: %s\n",
+		   own_buf);
+	  write_enn (own_buf);
+	  return;
+	}
+
+      req_str = req ? "non-stop" : "all-stop";
+      if (the_target->start_non_stop (req == 1) != 0)
+	{
+	  fprintf (stderr, "Setting %s mode failed\n", req_str);
+	  write_enn (own_buf);
+	  return;
+	}
+
+      non_stop = (req != 0);
+
+      if (remote_debug)
+	debug_printf ("[%s mode enabled]\n", req_str);
+
+      write_ok (own_buf);
+      return;
+    }
+
+  if (startswith (own_buf, "QDisableRandomization:"))
+    {
+      char *packet = own_buf + strlen ("QDisableRandomization:");
+      ULONGEST setting;
+
+      unpack_varlen_hex (packet, &setting);
+      cs.disable_randomization = setting;
+
+      if (remote_debug)
+	{
+	  debug_printf (cs.disable_randomization
+			? "[address space randomization disabled]\n"
+			: "[address space randomization enabled]\n");
+	}
+
+      write_ok (own_buf);
+      return;
+    }
+
+  if (target_supports_tracepoints ()
+      && handle_tracepoint_general_set (own_buf))
+    return;
+
+  if (startswith (own_buf, "QAgent:"))
+    {
+      char *mode = own_buf + strlen ("QAgent:");
+      int req = 0;
+
+      if (strcmp (mode, "0") == 0)
+	req = 0;
+      else if (strcmp (mode, "1") == 0)
+	req = 1;
+      else
+	{
+	  /* We don't know what this value is, so complain to GDB.  */
+	  sprintf (own_buf, "E.Unknown QAgent value");
+	  return;
+	}
+
+      /* Update the flag.  */
+      use_agent = req;
+      if (remote_debug)
+	debug_printf ("[%s agent]\n", req ? "Enable" : "Disable");
+      write_ok (own_buf);
+      return;
+    }
+
+  if (handle_btrace_general_set (own_buf))
+    return;
+
+  if (handle_btrace_conf_general_set (own_buf))
+    return;
+
+  if (startswith (own_buf, "QThreadEvents:"))
+    {
+      char *mode = own_buf + strlen ("QThreadEvents:");
+      enum tribool req = TRIBOOL_UNKNOWN;
+
+      if (strcmp (mode, "0") == 0)
+	req = TRIBOOL_FALSE;
+      else if (strcmp (mode, "1") == 0)
+	req = TRIBOOL_TRUE;
+      else
+	{
+	  /* We don't know what this mode is, so complain to GDB.  */
+	  sprintf (own_buf, "E.Unknown thread-events mode requested: %s\n",
+		   mode);
+	  return;
+	}
+
+      cs.report_thread_events = (req == TRIBOOL_TRUE);
+
+      if (remote_debug)
+	{
+	  const char *req_str = cs.report_thread_events ? "enabled" : "disabled";
+
+	  debug_printf ("[thread events are now %s]\n", req_str);
+	}
+
+      write_ok (own_buf);
+      return;
+    }
+
+  if (startswith (own_buf, "QStartupWithShell:"))
+    {
+      const char *value = own_buf + strlen ("QStartupWithShell:");
+
+      if (strcmp (value, "1") == 0)
+	startup_with_shell = true;
+      else if (strcmp (value, "0") == 0)
+	startup_with_shell = false;
+      else
+	{
+	  /* Unknown value.  */
+	  fprintf (stderr, "Unknown value to startup-with-shell: %s\n",
+		   own_buf);
+	  write_enn (own_buf);
+	  return;
+	}
+
+      if (remote_debug)
+	debug_printf (_("[Inferior will %s started with shell]"),
+		      startup_with_shell ? "be" : "not be");
+
+      write_ok (own_buf);
+      return;
+    }
+
+  if (startswith (own_buf, "QSetWorkingDir:"))
+    {
+      const char *p = own_buf + strlen ("QSetWorkingDir:");
+
+      if (*p != '\0')
+	{
+	  std::string path = hex2str (p);
+
+	  set_inferior_cwd (path.c_str ());
+
+	  if (remote_debug)
+	    debug_printf (_("[Set the inferior's current directory to %s]\n"),
+			  path.c_str ());
+	}
+      else
+	{
+	  /* An empty argument means that we should clear out any
+	     previously set cwd for the inferior.  */
+	  set_inferior_cwd (NULL);
+
+	  if (remote_debug)
+	    debug_printf (_("\
+[Unset the inferior's current directory; will use gdbserver's cwd]\n"));
+	}
+      write_ok (own_buf);
+
+      return;
+    }
+
+  /* Otherwise we didn't know what packet it was.  Say we didn't
+     understand it.  */
+  own_buf[0] = 0;
+}
+
+static const char *
+get_features_xml (const char *annex)
+{
+  const struct target_desc *desc = current_target_desc ();
+
+  /* `desc->xmltarget' defines what to return when looking for the
+     "target.xml" file.  Its contents can either be verbatim XML code
+     (prefixed with a '@') or else the name of the actual XML file to
+     be used in place of "target.xml".
+
+     This variable is set up from the auto-generated
+     init_registers_... routine for the current target.  */
+
+  if (strcmp (annex, "target.xml") == 0)
+    {
+      const char *ret = tdesc_get_features_xml (desc);
+
+      if (*ret == '@')
+	return ret + 1;
+      else
+	annex = ret;
+    }
+
+#ifdef USE_XML
+  {
+    int i;
+
+    /* Look for the annex.  */
+    for (i = 0; xml_builtin[i][0] != NULL; i++)
+      if (strcmp (annex, xml_builtin[i][0]) == 0)
+	break;
+
+    if (xml_builtin[i][0] != NULL)
+      return xml_builtin[i][1];
+  }
+#endif
+
+  return NULL;
+}
+
+static void
+monitor_show_help (void)
+{
+  monitor_output ("The following monitor commands are supported:\n");
+  monitor_output ("  set debug <0|1>\n");
+  monitor_output ("    Enable general debugging messages\n");
+  monitor_output ("  set debug-hw-points <0|1>\n");
+  monitor_output ("    Enable h/w breakpoint/watchpoint debugging messages\n");
+  monitor_output ("  set remote-debug <0|1>\n");
+  monitor_output ("    Enable remote protocol debugging messages\n");
+  monitor_output ("  set debug-format option1[,option2,...]\n");
+  monitor_output ("    Add additional information to debugging messages\n");
+  monitor_output ("    Options: all, none");
+  monitor_output (", timestamp");
+  monitor_output ("\n");
+  monitor_output ("  exit\n");
+  monitor_output ("    Quit GDBserver\n");
+}
+
+/* Read trace frame or inferior memory.  Returns the number of bytes
+   actually read, zero when no further transfer is possible, and -1 on
+   error.  Return of a positive value smaller than LEN does not
+   indicate there's no more to be read, only the end of the transfer.
+   E.g., when GDB reads memory from a traceframe, a first request may
+   be served from a memory block that does not cover the whole request
+   length.  A following request gets the rest served from either
+   another block (of the same traceframe) or from the read-only
+   regions.  */
+
+static int
+gdb_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
+{
+  client_state &cs = get_client_state ();
+  int res;
+
+  if (cs.current_traceframe >= 0)
+    {
+      ULONGEST nbytes;
+      ULONGEST length = len;
+
+      if (traceframe_read_mem (cs.current_traceframe,
+			       memaddr, myaddr, len, &nbytes))
+	return -1;
+      /* Data read from trace buffer, we're done.  */
+      if (nbytes > 0)
+	return nbytes;
+      if (!in_readonly_region (memaddr, length))
+	return -1;
+      /* Otherwise we have a valid readonly case, fall through.  */
+      /* (assume no half-trace half-real blocks for now) */
+    }
+
+  res = prepare_to_access_memory ();
+  if (res == 0)
+    {
+      if (set_desired_thread ())
+	res = read_inferior_memory (memaddr, myaddr, len);
+      else
+	res = 1;
+      done_accessing_memory ();
+
+      return res == 0 ? len : -1;
+    }
+  else
+    return -1;
+}
+
+/* Write trace frame or inferior memory.  Actually, writing to trace
+   frames is forbidden.  */
+
+static int
+gdb_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len)
+{
+  client_state &cs = get_client_state ();
+  if (cs.current_traceframe >= 0)
+    return EIO;
+  else
+    {
+      int ret;
+
+      ret = prepare_to_access_memory ();
+      if (ret == 0)
+	{
+	  if (set_desired_thread ())
+	    ret = target_write_memory (memaddr, myaddr, len);
+	  else
+	    ret = EIO;
+	  done_accessing_memory ();
+	}
+      return ret;
+    }
+}
+
+/* Subroutine of handle_search_memory to simplify it.  */
+
+static int
+handle_search_memory_1 (CORE_ADDR start_addr, CORE_ADDR search_space_len,
+			gdb_byte *pattern, unsigned pattern_len,
+			gdb_byte *search_buf,
+			unsigned chunk_size, unsigned search_buf_size,
+			CORE_ADDR *found_addrp)
+{
+  /* Prime the search buffer.  */
+
+  if (gdb_read_memory (start_addr, search_buf, search_buf_size)
+      != search_buf_size)
+    {
+      warning ("Unable to access %ld bytes of target "
+	       "memory at 0x%lx, halting search.",
+	       (long) search_buf_size, (long) start_addr);
+      return -1;
+    }
+
+  /* Perform the search.
+
+     The loop is kept simple by allocating [N + pattern-length - 1] bytes.
+     When we've scanned N bytes we copy the trailing bytes to the start and
+     read in another N bytes.  */
+
+  while (search_space_len >= pattern_len)
+    {
+      gdb_byte *found_ptr;
+      unsigned nr_search_bytes = (search_space_len < search_buf_size
+				  ? search_space_len
+				  : search_buf_size);
+
+      found_ptr = (gdb_byte *) memmem (search_buf, nr_search_bytes, pattern,
+				       pattern_len);
+
+      if (found_ptr != NULL)
+	{
+	  CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
+	  *found_addrp = found_addr;
+	  return 1;
+	}
+
+      /* Not found in this chunk, skip to next chunk.  */
+
+      /* Don't let search_space_len wrap here, it's unsigned.  */
+      if (search_space_len >= chunk_size)
+	search_space_len -= chunk_size;
+      else
+	search_space_len = 0;
+
+      if (search_space_len >= pattern_len)
+	{
+	  unsigned keep_len = search_buf_size - chunk_size;
+	  CORE_ADDR read_addr = start_addr + chunk_size + keep_len;
+	  int nr_to_read;
+
+	  /* Copy the trailing part of the previous iteration to the front
+	     of the buffer for the next iteration.  */
+	  memcpy (search_buf, search_buf + chunk_size, keep_len);
+
+	  nr_to_read = (search_space_len - keep_len < chunk_size
+			? search_space_len - keep_len
+			: chunk_size);
+
+	  if (gdb_read_memory (read_addr, search_buf + keep_len,
+			       nr_to_read) != nr_to_read)
+	    {
+	      warning ("Unable to access %ld bytes of target memory "
+		       "at 0x%lx, halting search.",
+		       (long) nr_to_read, (long) read_addr);
+	      return -1;
+	    }
+
+	  start_addr += chunk_size;
+	}
+    }
+
+  /* Not found.  */
+
+  return 0;
+}
+
+/* Handle qSearch:memory packets.  */
+
+static void
+handle_search_memory (char *own_buf, int packet_len)
+{
+  CORE_ADDR start_addr;
+  CORE_ADDR search_space_len;
+  gdb_byte *pattern;
+  unsigned int pattern_len;
+  /* NOTE: also defined in find.c testcase.  */
+#define SEARCH_CHUNK_SIZE 16000
+  const unsigned chunk_size = SEARCH_CHUNK_SIZE;
+  /* Buffer to hold memory contents for searching.  */
+  gdb_byte *search_buf;
+  unsigned search_buf_size;
+  int found;
+  CORE_ADDR found_addr;
+  int cmd_name_len = sizeof ("qSearch:memory:") - 1;
+
+  pattern = (gdb_byte *) malloc (packet_len);
+  if (pattern == NULL)
+    {
+      error ("Unable to allocate memory to perform the search");
+      strcpy (own_buf, "E00");
+      return;
+    }
+  if (decode_search_memory_packet (own_buf + cmd_name_len,
+				   packet_len - cmd_name_len,
+				   &start_addr, &search_space_len,
+				   pattern, &pattern_len) < 0)
+    {
+      free (pattern);
+      error ("Error in parsing qSearch:memory packet");
+      strcpy (own_buf, "E00");
+      return;
+    }
+
+  search_buf_size = chunk_size + pattern_len - 1;
+
+  /* No point in trying to allocate a buffer larger than the search space.  */
+  if (search_space_len < search_buf_size)
+    search_buf_size = search_space_len;
+
+  search_buf = (gdb_byte *) malloc (search_buf_size);
+  if (search_buf == NULL)
+    {
+      free (pattern);
+      error ("Unable to allocate memory to perform the search");
+      strcpy (own_buf, "E00");
+      return;
+    }
+
+  found = handle_search_memory_1 (start_addr, search_space_len,
+				  pattern, pattern_len,
+				  search_buf, chunk_size, search_buf_size,
+				  &found_addr);
+
+  if (found > 0)
+    sprintf (own_buf, "1,%lx", (long) found_addr);
+  else if (found == 0)
+    strcpy (own_buf, "0");
+  else
+    strcpy (own_buf, "E00");
+
+  free (search_buf);
+  free (pattern);
+}
+
+/* Handle the "D" packet.  */
+
+static void
+handle_detach (char *own_buf)
+{
+  client_state &cs = get_client_state ();
+
+  process_info *process;
+
+  if (cs.multi_process)
+    {
+      /* skip 'D;' */
+      int pid = strtol (&own_buf[2], NULL, 16);
+
+      process = find_process_pid (pid);
+    }
+  else
+    {
+      process = (current_thread != nullptr
+		 ? get_thread_process (current_thread)
+		 : nullptr);
+    }
+
+  if (process == NULL)
+    {
+      write_enn (own_buf);
+      return;
+    }
+
+  if ((tracing && disconnected_tracing) || any_persistent_commands (process))
+    {
+      if (tracing && disconnected_tracing)
+	fprintf (stderr,
+		 "Disconnected tracing in effect, "
+		 "leaving gdbserver attached to the process\n");
+
+      if (any_persistent_commands (process))
+	fprintf (stderr,
+		 "Persistent commands are present, "
+		 "leaving gdbserver attached to the process\n");
+
+      /* Make sure we're in non-stop/async mode, so we we can both
+	 wait for an async socket accept, and handle async target
+	 events simultaneously.  There's also no point either in
+	 having the target stop all threads, when we're going to
+	 pass signals down without informing GDB.  */
+      if (!non_stop)
+	{
+	  if (debug_threads)
+	    debug_printf ("Forcing non-stop mode\n");
+
+	  non_stop = true;
+	  the_target->start_non_stop (true);
+	}
+
+      process->gdb_detached = 1;
+
+      /* Detaching implicitly resumes all threads.  */
+      target_continue_no_signal (minus_one_ptid);
+
+      write_ok (own_buf);
+      return;
+    }
+
+  fprintf (stderr, "Detaching from process %d\n", process->pid);
+  stop_tracing ();
+
+  /* We'll need this after PROCESS has been destroyed.  */
+  int pid = process->pid;
+
+  if (detach_inferior (process) != 0)
+    write_enn (own_buf);
+  else
+    {
+      discard_queued_stop_replies (ptid_t (pid));
+      write_ok (own_buf);
+
+      if (extended_protocol || target_running ())
+	{
+	  /* There is still at least one inferior remaining or
+	     we are in extended mode, so don't terminate gdbserver,
+	     and instead treat this like a normal program exit.  */
+	  cs.last_status.kind = TARGET_WAITKIND_EXITED;
+	  cs.last_status.value.integer = 0;
+	  cs.last_ptid = ptid_t (pid);
+
+	  current_thread = NULL;
+	}
+      else
+	{
+	  putpkt (own_buf);
+	  remote_close ();
+
+	  /* If we are attached, then we can exit.  Otherwise, we
+	     need to hang around doing nothing, until the child is
+	     gone.  */
+	  join_inferior (pid);
+	  exit (0);
+	}
+    }
+}
+
+/* Parse options to --debug-format= and "monitor set debug-format".
+   ARG is the text after "--debug-format=" or "monitor set debug-format".
+   IS_MONITOR is non-zero if we're invoked via "monitor set debug-format".
+   This triggers calls to monitor_output.
+   The result is an empty string if all options were parsed ok, otherwise an
+   error message which the caller must free.
+
+   N.B. These commands affect all debug format settings, they are not
+   cumulative.  If a format is not specified, it is turned off.
+   However, we don't go to extra trouble with things like
+   "monitor set debug-format all,none,timestamp".
+   Instead we just parse them one at a time, in order.
+
+   The syntax for "monitor set debug" we support here is not identical
+   to gdb's "set debug foo on|off" because we also use this function to
+   parse "--debug-format=foo,bar".  */
+
+static std::string
+parse_debug_format_options (const char *arg, int is_monitor)
+{
+  /* First turn all debug format options off.  */
+  debug_timestamp = 0;
+
+  /* First remove leading spaces, for "monitor set debug-format".  */
+  while (isspace (*arg))
+    ++arg;
+
+  std::vector<gdb::unique_xmalloc_ptr<char>> options
+    = delim_string_to_char_ptr_vec (arg, ',');
+
+  for (const gdb::unique_xmalloc_ptr<char> &option : options)
+    {
+      if (strcmp (option.get (), "all") == 0)
+	{
+	  debug_timestamp = 1;
+	  if (is_monitor)
+	    monitor_output ("All extra debug format options enabled.\n");
+	}
+      else if (strcmp (option.get (), "none") == 0)
+	{
+	  debug_timestamp = 0;
+	  if (is_monitor)
+	    monitor_output ("All extra debug format options disabled.\n");
+	}
+      else if (strcmp (option.get (), "timestamp") == 0)
+	{
+	  debug_timestamp = 1;
+	  if (is_monitor)
+	    monitor_output ("Timestamps will be added to debug output.\n");
+	}
+      else if (*option == '\0')
+	{
+	  /* An empty option, e.g., "--debug-format=foo,,bar", is ignored.  */
+	  continue;
+	}
+      else
+	return string_printf ("Unknown debug-format argument: \"%s\"\n",
+			      option.get ());
+    }
+
+  return std::string ();
+}
+
+/* Handle monitor commands not handled by target-specific handlers.  */
+
+static void
+handle_monitor_command (char *mon, char *own_buf)
+{
+  if (strcmp (mon, "set debug 1") == 0)
+    {
+      debug_threads = 1;
+      monitor_output ("Debug output enabled.\n");
+    }
+  else if (strcmp (mon, "set debug 0") == 0)
+    {
+      debug_threads = 0;
+      monitor_output ("Debug output disabled.\n");
+    }
+  else if (strcmp (mon, "set debug-hw-points 1") == 0)
+    {
+      show_debug_regs = 1;
+      monitor_output ("H/W point debugging output enabled.\n");
+    }
+  else if (strcmp (mon, "set debug-hw-points 0") == 0)
+    {
+      show_debug_regs = 0;
+      monitor_output ("H/W point debugging output disabled.\n");
+    }
+  else if (strcmp (mon, "set remote-debug 1") == 0)
+    {
+      remote_debug = 1;
+      monitor_output ("Protocol debug output enabled.\n");
+    }
+  else if (strcmp (mon, "set remote-debug 0") == 0)
+    {
+      remote_debug = 0;
+      monitor_output ("Protocol debug output disabled.\n");
+    }
+  else if (startswith (mon, "set debug-format "))
+    {
+      std::string error_msg
+	= parse_debug_format_options (mon + sizeof ("set debug-format ") - 1,
+				      1);
+
+      if (!error_msg.empty ())
+	{
+	  monitor_output (error_msg.c_str ());
+	  monitor_show_help ();
+	  write_enn (own_buf);
+	}
+    }
+  else if (strcmp (mon, "set debug-file") == 0)
+    debug_set_output (nullptr);
+  else if (startswith (mon, "set debug-file "))
+    debug_set_output (mon + sizeof ("set debug-file ") - 1);
+  else if (strcmp (mon, "help") == 0)
+    monitor_show_help ();
+  else if (strcmp (mon, "exit") == 0)
+    exit_requested = true;
+  else
+    {
+      monitor_output ("Unknown monitor command.\n\n");
+      monitor_show_help ();
+      write_enn (own_buf);
+    }
+}
+
+/* Associates a callback with each supported qXfer'able object.  */
+
+struct qxfer
+{
+  /* The object this handler handles.  */
+  const char *object;
+
+  /* Request that the target transfer up to LEN 8-bit bytes of the
+     target's OBJECT.  The OFFSET, for a seekable object, specifies
+     the starting point.  The ANNEX can be used to provide additional
+     data-specific information to the target.
+
+     Return the number of bytes actually transfered, zero when no
+     further transfer is possible, -1 on error, -2 when the transfer
+     is not supported, and -3 on a verbose error message that should
+     be preserved.  Return of a positive value smaller than LEN does
+     not indicate the end of the object, only the end of the transfer.
+
+     One, and only one, of readbuf or writebuf must be non-NULL.  */
+  int (*xfer) (const char *annex,
+	       gdb_byte *readbuf, const gdb_byte *writebuf,
+	       ULONGEST offset, LONGEST len);
+};
+
+/* Handle qXfer:auxv:read.  */
+
+static int
+handle_qxfer_auxv (const char *annex,
+		   gdb_byte *readbuf, const gdb_byte *writebuf,
+		   ULONGEST offset, LONGEST len)
+{
+  if (!the_target->supports_read_auxv () || writebuf != NULL)
+    return -2;
+
+  if (annex[0] != '\0' || current_thread == NULL)
+    return -1;
+
+  return the_target->read_auxv (offset, readbuf, len);
+}
+
+/* Handle qXfer:exec-file:read.  */
+
+static int
+handle_qxfer_exec_file (const char *annex,
+			gdb_byte *readbuf, const gdb_byte *writebuf,
+			ULONGEST offset, LONGEST len)
+{
+  char *file;
+  ULONGEST pid;
+  int total_len;
+
+  if (!the_target->supports_pid_to_exec_file () || writebuf != NULL)
+    return -2;
+
+  if (annex[0] == '\0')
+    {
+      if (current_thread == NULL)
+	return -1;
+
+      pid = pid_of (current_thread);
+    }
+  else
+    {
+      annex = unpack_varlen_hex (annex, &pid);
+      if (annex[0] != '\0')
+	return -1;
+    }
+
+  if (pid <= 0)
+    return -1;
+
+  file = the_target->pid_to_exec_file (pid);
+  if (file == NULL)
+    return -1;
+
+  total_len = strlen (file);
+
+  if (offset > total_len)
+    return -1;
+
+  if (offset + len > total_len)
+    len = total_len - offset;
+
+  memcpy (readbuf, file + offset, len);
+  return len;
+}
+
+/* Handle qXfer:features:read.  */
+
+static int
+handle_qxfer_features (const char *annex,
+		       gdb_byte *readbuf, const gdb_byte *writebuf,
+		       ULONGEST offset, LONGEST len)
+{
+  const char *document;
+  size_t total_len;
+
+  if (writebuf != NULL)
+    return -2;
+
+  if (!target_running ())
+    return -1;
+
+  /* Grab the correct annex.  */
+  document = get_features_xml (annex);
+  if (document == NULL)
+    return -1;
+
+  total_len = strlen (document);
+
+  if (offset > total_len)
+    return -1;
+
+  if (offset + len > total_len)
+    len = total_len - offset;
+
+  memcpy (readbuf, document + offset, len);
+  return len;
+}
+
+/* Handle qXfer:libraries:read.  */
+
+static int
+handle_qxfer_libraries (const char *annex,
+			gdb_byte *readbuf, const gdb_byte *writebuf,
+			ULONGEST offset, LONGEST len)
+{
+  if (writebuf != NULL)
+    return -2;
+
+  if (annex[0] != '\0' || current_thread == NULL)
+    return -1;
+
+  std::string document = "<library-list version=\"1.0\">\n";
+
+  for (const dll_info &dll : all_dlls)
+    document += string_printf
+      ("  <library name=\"%s\"><segment address=\"0x%s\"/></library>\n",
+       dll.name.c_str (), paddress (dll.base_addr));
+
+  document += "</library-list>\n";
+
+  if (offset > document.length ())
+    return -1;
+
+  if (offset + len > document.length ())
+    len = document.length () - offset;
+
+  memcpy (readbuf, &document[offset], len);
+
+  return len;
+}
+
+/* Handle qXfer:libraries-svr4:read.  */
+
+static int
+handle_qxfer_libraries_svr4 (const char *annex,
+			     gdb_byte *readbuf, const gdb_byte *writebuf,
+			     ULONGEST offset, LONGEST len)
+{
+  if (writebuf != NULL)
+    return -2;
+
+  if (current_thread == NULL
+      || !the_target->supports_qxfer_libraries_svr4 ())
+    return -1;
+
+  return the_target->qxfer_libraries_svr4 (annex, readbuf, writebuf,
+					   offset, len);
+}
+
+/* Handle qXfer:osadata:read.  */
+
+static int
+handle_qxfer_osdata (const char *annex,
+		     gdb_byte *readbuf, const gdb_byte *writebuf,
+		     ULONGEST offset, LONGEST len)
+{
+  if (!the_target->supports_qxfer_osdata () || writebuf != NULL)
+    return -2;
+
+  return the_target->qxfer_osdata (annex, readbuf, NULL, offset, len);
+}
+
+/* Handle qXfer:siginfo:read and qXfer:siginfo:write.  */
+
+static int
+handle_qxfer_siginfo (const char *annex,
+		      gdb_byte *readbuf, const gdb_byte *writebuf,
+		      ULONGEST offset, LONGEST len)
+{
+  if (!the_target->supports_qxfer_siginfo ())
+    return -2;
+
+  if (annex[0] != '\0' || current_thread == NULL)
+    return -1;
+
+  return the_target->qxfer_siginfo (annex, readbuf, writebuf, offset, len);
+}
+
+/* Handle qXfer:statictrace:read.  */
+
+static int
+handle_qxfer_statictrace (const char *annex,
+			  gdb_byte *readbuf, const gdb_byte *writebuf,
+			  ULONGEST offset, LONGEST len)
+{
+  client_state &cs = get_client_state ();
+  ULONGEST nbytes;
+
+  if (writebuf != NULL)
+    return -2;
+
+  if (annex[0] != '\0' || current_thread == NULL 
+      || cs.current_traceframe == -1)
+    return -1;
+
+  if (traceframe_read_sdata (cs.current_traceframe, offset,
+			     readbuf, len, &nbytes))
+    return -1;
+  return nbytes;
+}
+
+/* Helper for handle_qxfer_threads_proper.
+   Emit the XML to describe the thread of INF.  */
+
+static void
+handle_qxfer_threads_worker (thread_info *thread, struct buffer *buffer)
+{
+  ptid_t ptid = ptid_of (thread);
+  char ptid_s[100];
+  int core = target_core_of_thread (ptid);
+  char core_s[21];
+  const char *name = target_thread_name (ptid);
+  int handle_len;
+  gdb_byte *handle;
+  bool handle_status = target_thread_handle (ptid, &handle, &handle_len);
+
+  write_ptid (ptid_s, ptid);
+
+  buffer_xml_printf (buffer, "<thread id=\"%s\"", ptid_s);
+
+  if (core != -1)
+    {
+      sprintf (core_s, "%d", core);
+      buffer_xml_printf (buffer, " core=\"%s\"", core_s);
+    }
+
+  if (name != NULL)
+    buffer_xml_printf (buffer, " name=\"%s\"", name);
+
+  if (handle_status)
+    {
+      char *handle_s = (char *) alloca (handle_len * 2 + 1);
+      bin2hex (handle, handle_s, handle_len);
+      buffer_xml_printf (buffer, " handle=\"%s\"", handle_s);
+    }
+
+  buffer_xml_printf (buffer, "/>\n");
+}
+
+/* Helper for handle_qxfer_threads.  Return true on success, false
+   otherwise.  */
+
+static bool
+handle_qxfer_threads_proper (struct buffer *buffer)
+{
+  client_state &cs = get_client_state ();
+
+  scoped_restore save_current_thread
+    = make_scoped_restore (&current_thread);
+  scoped_restore save_current_general_thread
+    = make_scoped_restore (&cs.general_thread);
+
+  buffer_grow_str (buffer, "<threads>\n");
+
+  process_info *error_proc = find_process ([&] (process_info *process)
+    {
+      /* The target may need to access memory and registers (e.g. via
+	 libthread_db) to fetch thread properties.  Prepare for memory
+	 access here, so that we potentially pause threads just once
+	 for all accesses.  Note that even if someday we stop needing
+	 to pause threads to access memory, we will need to be able to
+	 access registers, or other ptrace accesses like
+	 PTRACE_GET_THREAD_AREA.  */
+
+      /* Need to switch to each process in turn, because
+	 prepare_to_access_memory prepares for an access in the
+	 current process pointed to by general_thread.  */
+      switch_to_process (process);
+      cs.general_thread = current_thread->id;
+
+      int res = prepare_to_access_memory ();
+      if (res == 0)
+	{
+	  for_each_thread (process->pid, [&] (thread_info *thread)
+	    {
+	      handle_qxfer_threads_worker (thread, buffer);
+	    });
+
+	  done_accessing_memory ();
+	  return false;
+	}
+      else
+	return true;
+    });
+
+  buffer_grow_str0 (buffer, "</threads>\n");
+  return error_proc == nullptr;
+}
+
+/* Handle qXfer:threads:read.  */
+
+static int
+handle_qxfer_threads (const char *annex,
+		      gdb_byte *readbuf, const gdb_byte *writebuf,
+		      ULONGEST offset, LONGEST len)
+{
+  static char *result = 0;
+  static unsigned int result_length = 0;
+
+  if (writebuf != NULL)
+    return -2;
+
+  if (annex[0] != '\0')
+    return -1;
+
+  if (offset == 0)
+    {
+      struct buffer buffer;
+      /* When asked for data at offset 0, generate everything and store into
+	 'result'.  Successive reads will be served off 'result'.  */
+      if (result)
+	free (result);
+
+      buffer_init (&buffer);
+
+      bool res = handle_qxfer_threads_proper (&buffer);
+
+      result = buffer_finish (&buffer);
+      result_length = strlen (result);
+      buffer_free (&buffer);
+
+      if (!res)
+	return -1;
+    }
+
+  if (offset >= result_length)
+    {
+      /* We're out of data.  */
+      free (result);
+      result = NULL;
+      result_length = 0;
+      return 0;
+    }
+
+  if (len > result_length - offset)
+    len = result_length - offset;
+
+  memcpy (readbuf, result + offset, len);
+
+  return len;
+}
+
+/* Handle qXfer:traceframe-info:read.  */
+
+static int
+handle_qxfer_traceframe_info (const char *annex,
+			      gdb_byte *readbuf, const gdb_byte *writebuf,
+			      ULONGEST offset, LONGEST len)
+{
+  client_state &cs = get_client_state ();
+  static char *result = 0;
+  static unsigned int result_length = 0;
+
+  if (writebuf != NULL)
+    return -2;
+
+  if (!target_running () || annex[0] != '\0' || cs.current_traceframe == -1)
+    return -1;
+
+  if (offset == 0)
+    {
+      struct buffer buffer;
+
+      /* When asked for data at offset 0, generate everything and
+	 store into 'result'.  Successive reads will be served off
+	 'result'.  */
+      free (result);
+
+      buffer_init (&buffer);
+
+      traceframe_read_info (cs.current_traceframe, &buffer);
+
+      result = buffer_finish (&buffer);
+      result_length = strlen (result);
+      buffer_free (&buffer);
+    }
+
+  if (offset >= result_length)
+    {
+      /* We're out of data.  */
+      free (result);
+      result = NULL;
+      result_length = 0;
+      return 0;
+    }
+
+  if (len > result_length - offset)
+    len = result_length - offset;
+
+  memcpy (readbuf, result + offset, len);
+  return len;
+}
+
+/* Handle qXfer:fdpic:read.  */
+
+static int
+handle_qxfer_fdpic (const char *annex, gdb_byte *readbuf,
+		    const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
+{
+  if (!the_target->supports_read_loadmap ())
+    return -2;
+
+  if (current_thread == NULL)
+    return -1;
+
+  return the_target->read_loadmap (annex, offset, readbuf, len);
+}
+
+/* Handle qXfer:btrace:read.  */
+
+static int
+handle_qxfer_btrace (const char *annex,
+		     gdb_byte *readbuf, const gdb_byte *writebuf,
+		     ULONGEST offset, LONGEST len)
+{
+  client_state &cs = get_client_state ();
+  static struct buffer cache;
+  struct thread_info *thread;
+  enum btrace_read_type type;
+  int result;
+
+  if (writebuf != NULL)
+    return -2;
+
+  if (cs.general_thread == null_ptid
+      || cs.general_thread == minus_one_ptid)
+    {
+      strcpy (cs.own_buf, "E.Must select a single thread.");
+      return -3;
+    }
+
+  thread = find_thread_ptid (cs.general_thread);
+  if (thread == NULL)
+    {
+      strcpy (cs.own_buf, "E.No such thread.");
+      return -3;
+    }
+
+  if (thread->btrace == NULL)
+    {
+      strcpy (cs.own_buf, "E.Btrace not enabled.");
+      return -3;
+    }
+
+  if (strcmp (annex, "all") == 0)
+    type = BTRACE_READ_ALL;
+  else if (strcmp (annex, "new") == 0)
+    type = BTRACE_READ_NEW;
+  else if (strcmp (annex, "delta") == 0)
+    type = BTRACE_READ_DELTA;
+  else
+    {
+      strcpy (cs.own_buf, "E.Bad annex.");
+      return -3;
+    }
+
+  if (offset == 0)
+    {
+      buffer_free (&cache);
+
+      try
+	{
+	  result = target_read_btrace (thread->btrace, &cache, type);
+	  if (result != 0)
+	    memcpy (cs.own_buf, cache.buffer, cache.used_size);
+	}
+      catch (const gdb_exception_error &exception)
+	{
+	  sprintf (cs.own_buf, "E.%s", exception.what ());
+	  result = -1;
+	}
+
+      if (result != 0)
+	return -3;
+    }
+  else if (offset > cache.used_size)
+    {
+      buffer_free (&cache);
+      return -3;
+    }
+
+  if (len > cache.used_size - offset)
+    len = cache.used_size - offset;
+
+  memcpy (readbuf, cache.buffer + offset, len);
+
+  return len;
+}
+
+/* Handle qXfer:btrace-conf:read.  */
+
+static int
+handle_qxfer_btrace_conf (const char *annex,
+			  gdb_byte *readbuf, const gdb_byte *writebuf,
+			  ULONGEST offset, LONGEST len)
+{
+  client_state &cs = get_client_state ();
+  static struct buffer cache;
+  struct thread_info *thread;
+  int result;
+
+  if (writebuf != NULL)
+    return -2;
+
+  if (annex[0] != '\0')
+    return -1;
+
+  if (cs.general_thread == null_ptid
+      || cs.general_thread == minus_one_ptid)
+    {
+      strcpy (cs.own_buf, "E.Must select a single thread.");
+      return -3;
+    }
+
+  thread = find_thread_ptid (cs.general_thread);
+  if (thread == NULL)
+    {
+      strcpy (cs.own_buf, "E.No such thread.");
+      return -3;
+    }
+
+  if (thread->btrace == NULL)
+    {
+      strcpy (cs.own_buf, "E.Btrace not enabled.");
+      return -3;
+    }
+
+  if (offset == 0)
+    {
+      buffer_free (&cache);
+
+      try
+	{
+	  result = target_read_btrace_conf (thread->btrace, &cache);
+	  if (result != 0)
+	    memcpy (cs.own_buf, cache.buffer, cache.used_size);
+	}
+      catch (const gdb_exception_error &exception)
+	{
+	  sprintf (cs.own_buf, "E.%s", exception.what ());
+	  result = -1;
+	}
+
+      if (result != 0)
+	return -3;
+    }
+  else if (offset > cache.used_size)
+    {
+      buffer_free (&cache);
+      return -3;
+    }
+
+  if (len > cache.used_size - offset)
+    len = cache.used_size - offset;
+
+  memcpy (readbuf, cache.buffer + offset, len);
+
+  return len;
+}
+
+static const struct qxfer qxfer_packets[] =
+  {
+    { "auxv", handle_qxfer_auxv },
+    { "btrace", handle_qxfer_btrace },
+    { "btrace-conf", handle_qxfer_btrace_conf },
+    { "exec-file", handle_qxfer_exec_file},
+    { "fdpic", handle_qxfer_fdpic},
+    { "features", handle_qxfer_features },
+    { "libraries", handle_qxfer_libraries },
+    { "libraries-svr4", handle_qxfer_libraries_svr4 },
+    { "osdata", handle_qxfer_osdata },
+    { "siginfo", handle_qxfer_siginfo },
+    { "statictrace", handle_qxfer_statictrace },
+    { "threads", handle_qxfer_threads },
+    { "traceframe-info", handle_qxfer_traceframe_info },
+  };
+
+static int
+handle_qxfer (char *own_buf, int packet_len, int *new_packet_len_p)
+{
+  int i;
+  char *object;
+  char *rw;
+  char *annex;
+  char *offset;
+
+  if (!startswith (own_buf, "qXfer:"))
+    return 0;
+
+  /* Grab the object, r/w and annex.  */
+  if (decode_xfer (own_buf + 6, &object, &rw, &annex, &offset) < 0)
+    {
+      write_enn (own_buf);
+      return 1;
+    }
+
+  for (i = 0;
+       i < sizeof (qxfer_packets) / sizeof (qxfer_packets[0]);
+       i++)
+    {
+      const struct qxfer *q = &qxfer_packets[i];
+
+      if (strcmp (object, q->object) == 0)
+	{
+	  if (strcmp (rw, "read") == 0)
+	    {
+	      unsigned char *data;
+	      int n;
+	      CORE_ADDR ofs;
+	      unsigned int len;
+
+	      /* Grab the offset and length.  */
+	      if (decode_xfer_read (offset, &ofs, &len) < 0)
+		{
+		  write_enn (own_buf);
+		  return 1;
+		}
+
+	      /* Read one extra byte, as an indicator of whether there is
+		 more.  */
+	      if (len > PBUFSIZ - 2)
+		len = PBUFSIZ - 2;
+	      data = (unsigned char *) malloc (len + 1);
+	      if (data == NULL)
+		{
+		  write_enn (own_buf);
+		  return 1;
+		}
+	      n = (*q->xfer) (annex, data, NULL, ofs, len + 1);
+	      if (n == -2)
+		{
+		  free (data);
+		  return 0;
+		}
+	      else if (n == -3)
+		{
+		  /* Preserve error message.  */
+		}
+	      else if (n < 0)
+		write_enn (own_buf);
+	      else if (n > len)
+		*new_packet_len_p = write_qxfer_response (own_buf, data, len, 1);
+	      else
+		*new_packet_len_p = write_qxfer_response (own_buf, data, n, 0);
+
+	      free (data);
+	      return 1;
+	    }
+	  else if (strcmp (rw, "write") == 0)
+	    {
+	      int n;
+	      unsigned int len;
+	      CORE_ADDR ofs;
+	      unsigned char *data;
+
+	      strcpy (own_buf, "E00");
+	      data = (unsigned char *) malloc (packet_len - (offset - own_buf));
+	      if (data == NULL)
+		{
+		  write_enn (own_buf);
+		  return 1;
+		}
+	      if (decode_xfer_write (offset, packet_len - (offset - own_buf),
+				     &ofs, &len, data) < 0)
+		{
+		  free (data);
+		  write_enn (own_buf);
+		  return 1;
+		}
+
+	      n = (*q->xfer) (annex, NULL, data, ofs, len);
+	      if (n == -2)
+		{
+		  free (data);
+		  return 0;
+		}
+	      else if (n == -3)
+		{
+		  /* Preserve error message.  */
+		}
+	      else if (n < 0)
+		write_enn (own_buf);
+	      else
+		sprintf (own_buf, "%x", n);
+
+	      free (data);
+	      return 1;
+	    }
+
+	  return 0;
+	}
+    }
+
+  return 0;
+}
+
+/* Compute 32 bit CRC from inferior memory.
+
+   On success, return 32 bit CRC.
+   On failure, return (unsigned long long) -1.  */
+
+static unsigned long long
+crc32 (CORE_ADDR base, int len, unsigned int crc)
+{
+  while (len--)
+    {
+      unsigned char byte = 0;
+
+      /* Return failure if memory read fails.  */
+      if (read_inferior_memory (base, &byte, 1) != 0)
+	return (unsigned long long) -1;
+
+      crc = xcrc32 (&byte, 1, crc);
+      base++;
+    }
+  return (unsigned long long) crc;
+}
+
+/* Add supported btrace packets to BUF.  */
+
+static void
+supported_btrace_packets (char *buf)
+{
+  strcat (buf, ";Qbtrace:bts+");
+  strcat (buf, ";Qbtrace-conf:bts:size+");
+  strcat (buf, ";Qbtrace:pt+");
+  strcat (buf, ";Qbtrace-conf:pt:size+");
+  strcat (buf, ";Qbtrace:off+");
+  strcat (buf, ";qXfer:btrace:read+");
+  strcat (buf, ";qXfer:btrace-conf:read+");
+}
+
+/* Handle all of the extended 'q' packets.  */
+
+static void
+handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
+{
+  client_state &cs = get_client_state ();
+  static std::list<thread_info *>::const_iterator thread_iter;
+
+  /* Reply the current thread id.  */
+  if (strcmp ("qC", own_buf) == 0 && !disable_packet_qC)
+    {
+      ptid_t ptid;
+      require_running_or_return (own_buf);
+
+      if (cs.general_thread != null_ptid && cs.general_thread != minus_one_ptid)
+	ptid = cs.general_thread;
+      else
+	{
+	  thread_iter = all_threads.begin ();
+	  ptid = (*thread_iter)->id;
+	}
+
+      sprintf (own_buf, "QC");
+      own_buf += 2;
+      write_ptid (own_buf, ptid);
+      return;
+    }
+
+  if (strcmp ("qSymbol::", own_buf) == 0)
+    {
+      struct thread_info *save_thread = current_thread;
+
+      /* For qSymbol, GDB only changes the current thread if the
+	 previous current thread was of a different process.  So if
+	 the previous thread is gone, we need to pick another one of
+	 the same process.  This can happen e.g., if we followed an
+	 exec in a non-leader thread.  */
+      if (current_thread == NULL)
+	{
+	  current_thread
+	    = find_any_thread_of_pid (cs.general_thread.pid ());
+
+	  /* Just in case, if we didn't find a thread, then bail out
+	     instead of crashing.  */
+	  if (current_thread == NULL)
+	    {
+	      write_enn (own_buf);
+	      current_thread = save_thread;
+	      return;
+	    }
+	}
+
+      /* GDB is suggesting new symbols have been loaded.  This may
+	 mean a new shared library has been detected as loaded, so
+	 take the opportunity to check if breakpoints we think are
+	 inserted, still are.  Note that it isn't guaranteed that
+	 we'll see this when a shared library is loaded, and nor will
+	 we see this for unloads (although breakpoints in unloaded
+	 libraries shouldn't trigger), as GDB may not find symbols for
+	 the library at all.  We also re-validate breakpoints when we
+	 see a second GDB breakpoint for the same address, and or when
+	 we access breakpoint shadows.  */
+      validate_breakpoints ();
+
+      if (target_supports_tracepoints ())
+	tracepoint_look_up_symbols ();
+
+      if (current_thread != NULL)
+	the_target->look_up_symbols ();
+
+      current_thread = save_thread;
+
+      strcpy (own_buf, "OK");
+      return;
+    }
+
+  if (!disable_packet_qfThreadInfo)
+    {
+      if (strcmp ("qfThreadInfo", own_buf) == 0)
+	{
+	  require_running_or_return (own_buf);
+	  thread_iter = all_threads.begin ();
+
+	  *own_buf++ = 'm';
+	  ptid_t ptid = (*thread_iter)->id;
+	  write_ptid (own_buf, ptid);
+	  thread_iter++;
+	  return;
+	}
+
+      if (strcmp ("qsThreadInfo", own_buf) == 0)
+	{
+	  require_running_or_return (own_buf);
+	  if (thread_iter != all_threads.end ())
+	    {
+	      *own_buf++ = 'm';
+	      ptid_t ptid = (*thread_iter)->id;
+	      write_ptid (own_buf, ptid);
+	      thread_iter++;
+	      return;
+	    }
+	  else
+	    {
+	      sprintf (own_buf, "l");
+	      return;
+	    }
+	}
+    }
+
+  if (the_target->supports_read_offsets ()
+      && strcmp ("qOffsets", own_buf) == 0)
+    {
+      CORE_ADDR text, data;
+
+      require_running_or_return (own_buf);
+      if (the_target->read_offsets (&text, &data))
+	sprintf (own_buf, "Text=%lX;Data=%lX;Bss=%lX",
+		 (long)text, (long)data, (long)data);
+      else
+	write_enn (own_buf);
+
+      return;
+    }
+
+  /* Protocol features query.  */
+  if (startswith (own_buf, "qSupported")
+      && (own_buf[10] == ':' || own_buf[10] == '\0'))
+    {
+      char *p = &own_buf[10];
+      int gdb_supports_qRelocInsn = 0;
+
+      /* Process each feature being provided by GDB.  The first
+	 feature will follow a ':', and latter features will follow
+	 ';'.  */
+      if (*p == ':')
+	{
+	  std::vector<std::string> qsupported;
+	  std::vector<const char *> unknowns;
+
+	  /* Two passes, to avoid nested strtok calls in
+	     target_process_qsupported.  */
+	  char *saveptr;
+	  for (p = strtok_r (p + 1, ";", &saveptr);
+	       p != NULL;
+	       p = strtok_r (NULL, ";", &saveptr))
+	    qsupported.emplace_back (p);
+
+	  for (const std::string &feature : qsupported)
+	    {
+	      if (feature == "multiprocess+")
+		{
+		  /* GDB supports and wants multi-process support if
+		     possible.  */
+		  if (target_supports_multi_process ())
+		    cs.multi_process = 1;
+		}
+	      else if (feature == "qRelocInsn+")
+		{
+		  /* GDB supports relocate instruction requests.  */
+		  gdb_supports_qRelocInsn = 1;
+		}
+	      else if (feature == "swbreak+")
+		{
+		  /* GDB wants us to report whether a trap is caused
+		     by a software breakpoint and for us to handle PC
+		     adjustment if necessary on this target.  */
+		  if (target_supports_stopped_by_sw_breakpoint ())
+		    cs.swbreak_feature = 1;
+		}
+	      else if (feature == "hwbreak+")
+		{
+		  /* GDB wants us to report whether a trap is caused
+		     by a hardware breakpoint.  */
+		  if (target_supports_stopped_by_hw_breakpoint ())
+		    cs.hwbreak_feature = 1;
+		}
+	      else if (feature == "fork-events+")
+		{
+		  /* GDB supports and wants fork events if possible.  */
+		  if (target_supports_fork_events ())
+		    cs.report_fork_events = 1;
+		}
+	      else if (feature == "vfork-events+")
+		{
+		  /* GDB supports and wants vfork events if possible.  */
+		  if (target_supports_vfork_events ())
+		    cs.report_vfork_events = 1;
+		}
+	      else if (feature == "exec-events+")
+		{
+		  /* GDB supports and wants exec events if possible.  */
+		  if (target_supports_exec_events ())
+		    cs.report_exec_events = 1;
+		}
+	      else if (feature == "vContSupported+")
+		cs.vCont_supported = 1;
+	      else if (feature == "QThreadEvents+")
+		;
+	      else if (feature == "no-resumed+")
+		{
+		  /* GDB supports and wants TARGET_WAITKIND_NO_RESUMED
+		     events.  */
+		  report_no_resumed = true;
+		}
+	      else
+		{
+		  /* Move the unknown features all together.  */
+		  unknowns.push_back (feature.c_str ());
+		}
+	    }
+
+	  /* Give the target backend a chance to process the unknown
+	     features.  */
+	  target_process_qsupported (unknowns);
+	}
+
+      sprintf (own_buf,
+	       "PacketSize=%x;QPassSignals+;QProgramSignals+;"
+	       "QStartupWithShell+;QEnvironmentHexEncoded+;"
+	       "QEnvironmentReset+;QEnvironmentUnset+;"
+	       "QSetWorkingDir+",
+	       PBUFSIZ - 1);
+
+      if (target_supports_catch_syscall ())
+	strcat (own_buf, ";QCatchSyscalls+");
+
+      if (the_target->supports_qxfer_libraries_svr4 ())
+	strcat (own_buf, ";qXfer:libraries-svr4:read+"
+		";augmented-libraries-svr4-read+");
+      else
+	{
+	  /* We do not have any hook to indicate whether the non-SVR4 target
+	     backend supports qXfer:libraries:read, so always report it.  */
+	  strcat (own_buf, ";qXfer:libraries:read+");
+	}
+
+      if (the_target->supports_read_auxv ())
+	strcat (own_buf, ";qXfer:auxv:read+");
+
+      if (the_target->supports_qxfer_siginfo ())
+	strcat (own_buf, ";qXfer:siginfo:read+;qXfer:siginfo:write+");
+
+      if (the_target->supports_read_loadmap ())
+	strcat (own_buf, ";qXfer:fdpic:read+");
+
+      /* We always report qXfer:features:read, as targets may
+	 install XML files on a subsequent call to arch_setup.
+	 If we reported to GDB on startup that we don't support
+	 qXfer:feature:read at all, we will never be re-queried.  */
+      strcat (own_buf, ";qXfer:features:read+");
+
+      if (cs.transport_is_reliable)
+	strcat (own_buf, ";QStartNoAckMode+");
+
+      if (the_target->supports_qxfer_osdata ())
+	strcat (own_buf, ";qXfer:osdata:read+");
+
+      if (target_supports_multi_process ())
+	strcat (own_buf, ";multiprocess+");
+
+      if (target_supports_fork_events ())
+	strcat (own_buf, ";fork-events+");
+
+      if (target_supports_vfork_events ())
+	strcat (own_buf, ";vfork-events+");
+
+      if (target_supports_exec_events ())
+	strcat (own_buf, ";exec-events+");
+
+      if (target_supports_non_stop ())
+	strcat (own_buf, ";QNonStop+");
+
+      if (target_supports_disable_randomization ())
+	strcat (own_buf, ";QDisableRandomization+");
+
+      strcat (own_buf, ";qXfer:threads:read+");
+
+      if (target_supports_tracepoints ())
+	{
+	  strcat (own_buf, ";ConditionalTracepoints+");
+	  strcat (own_buf, ";TraceStateVariables+");
+	  strcat (own_buf, ";TracepointSource+");
+	  strcat (own_buf, ";DisconnectedTracing+");
+	  if (gdb_supports_qRelocInsn && target_supports_fast_tracepoints ())
+	    strcat (own_buf, ";FastTracepoints+");
+	  strcat (own_buf, ";StaticTracepoints+");
+	  strcat (own_buf, ";InstallInTrace+");
+	  strcat (own_buf, ";qXfer:statictrace:read+");
+	  strcat (own_buf, ";qXfer:traceframe-info:read+");
+	  strcat (own_buf, ";EnableDisableTracepoints+");
+	  strcat (own_buf, ";QTBuffer:size+");
+	  strcat (own_buf, ";tracenz+");
+	}
+
+      if (target_supports_hardware_single_step ()
+	  || target_supports_software_single_step () )
+	{
+	  strcat (own_buf, ";ConditionalBreakpoints+");
+	}
+      strcat (own_buf, ";BreakpointCommands+");
+
+      if (target_supports_agent ())
+	strcat (own_buf, ";QAgent+");
+
+      supported_btrace_packets (own_buf);
+
+      if (target_supports_stopped_by_sw_breakpoint ())
+	strcat (own_buf, ";swbreak+");
+
+      if (target_supports_stopped_by_hw_breakpoint ())
+	strcat (own_buf, ";hwbreak+");
+
+      if (the_target->supports_pid_to_exec_file ())
+	strcat (own_buf, ";qXfer:exec-file:read+");
+
+      strcat (own_buf, ";vContSupported+");
+
+      strcat (own_buf, ";QThreadEvents+");
+
+      strcat (own_buf, ";no-resumed+");
+
+      /* Reinitialize components as needed for the new connection.  */
+      hostio_handle_new_gdb_connection ();
+      target_handle_new_gdb_connection ();
+
+      return;
+    }
+
+  /* Thread-local storage support.  */
+  if (the_target->supports_get_tls_address ()
+      && startswith (own_buf, "qGetTLSAddr:"))
+    {
+      char *p = own_buf + 12;
+      CORE_ADDR parts[2], address = 0;
+      int i, err;
+      ptid_t ptid = null_ptid;
+
+      require_running_or_return (own_buf);
+
+      for (i = 0; i < 3; i++)
+	{
+	  char *p2;
+	  int len;
+
+	  if (p == NULL)
+	    break;
+
+	  p2 = strchr (p, ',');
+	  if (p2)
+	    {
+	      len = p2 - p;
+	      p2++;
+	    }
+	  else
+	    {
+	      len = strlen (p);
+	      p2 = NULL;
+	    }
+
+	  if (i == 0)
+	    ptid = read_ptid (p, NULL);
+	  else
+	    decode_address (&parts[i - 1], p, len);
+	  p = p2;
+	}
+
+      if (p != NULL || i < 3)
+	err = 1;
+      else
+	{
+	  struct thread_info *thread = find_thread_ptid (ptid);
+
+	  if (thread == NULL)
+	    err = 2;
+	  else
+	    err = the_target->get_tls_address (thread, parts[0], parts[1],
+					       &address);
+	}
+
+      if (err == 0)
+	{
+	  strcpy (own_buf, paddress(address));
+	  return;
+	}
+      else if (err > 0)
+	{
+	  write_enn (own_buf);
+	  return;
+	}
+
+      /* Otherwise, pretend we do not understand this packet.  */
+    }
+
+  /* Windows OS Thread Information Block address support.  */
+  if (the_target->supports_get_tib_address ()
+      && startswith (own_buf, "qGetTIBAddr:"))
+    {
+      const char *annex;
+      int n;
+      CORE_ADDR tlb;
+      ptid_t ptid = read_ptid (own_buf + 12, &annex);
+
+      n = the_target->get_tib_address (ptid, &tlb);
+      if (n == 1)
+	{
+	  strcpy (own_buf, paddress(tlb));
+	  return;
+	}
+      else if (n == 0)
+	{
+	  write_enn (own_buf);
+	  return;
+	}
+      return;
+    }
+
+  /* Handle "monitor" commands.  */
+  if (startswith (own_buf, "qRcmd,"))
+    {
+      char *mon = (char *) malloc (PBUFSIZ);
+      int len = strlen (own_buf + 6);
+
+      if (mon == NULL)
+	{
+	  write_enn (own_buf);
+	  return;
+	}
+
+      if ((len % 2) != 0
+	  || hex2bin (own_buf + 6, (gdb_byte *) mon, len / 2) != len / 2)
+	{
+	  write_enn (own_buf);
+	  free (mon);
+	  return;
+	}
+      mon[len / 2] = '\0';
+
+      write_ok (own_buf);
+
+      if (the_target->handle_monitor_command (mon) == 0)
+	/* Default processing.  */
+	handle_monitor_command (mon, own_buf);
+
+      free (mon);
+      return;
+    }
+
+  if (startswith (own_buf, "qSearch:memory:"))
+    {
+      require_running_or_return (own_buf);
+      handle_search_memory (own_buf, packet_len);
+      return;
+    }
+
+  if (strcmp (own_buf, "qAttached") == 0
+      || startswith (own_buf, "qAttached:"))
+    {
+      struct process_info *process;
+
+      if (own_buf[sizeof ("qAttached") - 1])
+	{
+	  int pid = strtoul (own_buf + sizeof ("qAttached:") - 1, NULL, 16);
+	  process = find_process_pid (pid);
+	}
+      else
+	{
+	  require_running_or_return (own_buf);
+	  process = current_process ();
+	}
+
+      if (process == NULL)
+	{
+	  write_enn (own_buf);
+	  return;
+	}
+
+      strcpy (own_buf, process->attached ? "1" : "0");
+      return;
+    }
+
+  if (startswith (own_buf, "qCRC:"))
+    {
+      /* CRC check (compare-section).  */
+      const char *comma;
+      ULONGEST base;
+      int len;
+      unsigned long long crc;
+
+      require_running_or_return (own_buf);
+      comma = unpack_varlen_hex (own_buf + 5, &base);
+      if (*comma++ != ',')
+	{
+	  write_enn (own_buf);
+	  return;
+	}
+      len = strtoul (comma, NULL, 16);
+      crc = crc32 (base, len, 0xffffffff);
+      /* Check for memory failure.  */
+      if (crc == (unsigned long long) -1)
+	{
+	  write_enn (own_buf);
+	  return;
+	}
+      sprintf (own_buf, "C%lx", (unsigned long) crc);
+      return;
+    }
+
+  if (handle_qxfer (own_buf, packet_len, new_packet_len_p))
+    return;
+
+  if (target_supports_tracepoints () && handle_tracepoint_query (own_buf))
+    return;
+
+  /* Otherwise we didn't know what packet it was.  Say we didn't
+     understand it.  */
+  own_buf[0] = 0;
+}
+
+static void gdb_wants_all_threads_stopped (void);
+static void resume (struct thread_resume *actions, size_t n);
+
+/* The callback that is passed to visit_actioned_threads.  */
+typedef int (visit_actioned_threads_callback_ftype)
+  (const struct thread_resume *, struct thread_info *);
+
+/* Call CALLBACK for any thread to which ACTIONS applies to.  Returns
+   true if CALLBACK returns true.  Returns false if no matching thread
+   is found or CALLBACK results false.
+   Note: This function is itself a callback for find_thread.  */
+
+static bool
+visit_actioned_threads (thread_info *thread,
+			const struct thread_resume *actions,
+			size_t num_actions,
+			visit_actioned_threads_callback_ftype *callback)
+{
+  for (size_t i = 0; i < num_actions; i++)
+    {
+      const struct thread_resume *action = &actions[i];
+
+      if (action->thread == minus_one_ptid
+	  || action->thread == thread->id
+	  || ((action->thread.pid ()
+	       == thread->id.pid ())
+	      && action->thread.lwp () == -1))
+	{
+	  if ((*callback) (action, thread))
+	    return true;
+	}
+    }
+
+  return false;
+}
+
+/* Callback for visit_actioned_threads.  If the thread has a pending
+   status to report, report it now.  */
+
+static int
+handle_pending_status (const struct thread_resume *resumption,
+		       struct thread_info *thread)
+{
+  client_state &cs = get_client_state ();
+  if (thread->status_pending_p)
+    {
+      thread->status_pending_p = 0;
+
+      cs.last_status = thread->last_status;
+      cs.last_ptid = thread->id;
+      prepare_resume_reply (cs.own_buf, cs.last_ptid, &cs.last_status);
+      return 1;
+    }
+  return 0;
+}
+
+/* Parse vCont packets.  */
+static void
+handle_v_cont (char *own_buf)
+{
+  const char *p;
+  int n = 0, i = 0;
+  struct thread_resume *resume_info;
+  struct thread_resume default_action { null_ptid };
+
+  /* Count the number of semicolons in the packet.  There should be one
+     for every action.  */
+  p = &own_buf[5];
+  while (p)
+    {
+      n++;
+      p++;
+      p = strchr (p, ';');
+    }
+
+  resume_info = (struct thread_resume *) malloc (n * sizeof (resume_info[0]));
+  if (resume_info == NULL)
+    goto err;
+
+  p = &own_buf[5];
+  while (*p)
+    {
+      p++;
+
+      memset (&resume_info[i], 0, sizeof resume_info[i]);
+
+      if (p[0] == 's' || p[0] == 'S')
+	resume_info[i].kind = resume_step;
+      else if (p[0] == 'r')
+	resume_info[i].kind = resume_step;
+      else if (p[0] == 'c' || p[0] == 'C')
+	resume_info[i].kind = resume_continue;
+      else if (p[0] == 't')
+	resume_info[i].kind = resume_stop;
+      else
+	goto err;
+
+      if (p[0] == 'S' || p[0] == 'C')
+	{
+	  char *q;
+	  int sig = strtol (p + 1, &q, 16);
+	  if (p == q)
+	    goto err;
+	  p = q;
+
+	  if (!gdb_signal_to_host_p ((enum gdb_signal) sig))
+	    goto err;
+	  resume_info[i].sig = gdb_signal_to_host ((enum gdb_signal) sig);
+	}
+      else if (p[0] == 'r')
+	{
+	  ULONGEST addr;
+
+	  p = unpack_varlen_hex (p + 1, &addr);
+	  resume_info[i].step_range_start = addr;
+
+	  if (*p != ',')
+	    goto err;
+
+	  p = unpack_varlen_hex (p + 1, &addr);
+	  resume_info[i].step_range_end = addr;
+	}
+      else
+	{
+	  p = p + 1;
+	}
+
+      if (p[0] == 0)
+	{
+	  resume_info[i].thread = minus_one_ptid;
+	  default_action = resume_info[i];
+
+	  /* Note: we don't increment i here, we'll overwrite this entry
+	     the next time through.  */
+	}
+      else if (p[0] == ':')
+	{
+	  const char *q;
+	  ptid_t ptid = read_ptid (p + 1, &q);
+
+	  if (p == q)
+	    goto err;
+	  p = q;
+	  if (p[0] != ';' && p[0] != 0)
+	    goto err;
+
+	  resume_info[i].thread = ptid;
+
+	  i++;
+	}
+    }
+
+  if (i < n)
+    resume_info[i] = default_action;
+
+  resume (resume_info, n);
+  free (resume_info);
+  return;
+
+err:
+  write_enn (own_buf);
+  free (resume_info);
+  return;
+}
+
+/* Resume target with ACTIONS, an array of NUM_ACTIONS elements.  */
+
+static void
+resume (struct thread_resume *actions, size_t num_actions)
+{
+  client_state &cs = get_client_state ();
+  if (!non_stop)
+    {
+      /* Check if among the threads that GDB wants actioned, there's
+	 one with a pending status to report.  If so, skip actually
+	 resuming/stopping and report the pending event
+	 immediately.  */
+
+      thread_info *thread_with_status = find_thread ([&] (thread_info *thread)
+	{
+	  return visit_actioned_threads (thread, actions, num_actions,
+					 handle_pending_status);
+	});
+
+      if (thread_with_status != NULL)
+	return;
+
+      enable_async_io ();
+    }
+
+  the_target->resume (actions, num_actions);
+
+  if (non_stop)
+    write_ok (cs.own_buf);
+  else
+    {
+      cs.last_ptid = mywait (minus_one_ptid, &cs.last_status, 0, 1);
+
+      if (cs.last_status.kind == TARGET_WAITKIND_NO_RESUMED
+	  && !report_no_resumed)
+	{
+	  /* The client does not support this stop reply.  At least
+	     return error.  */
+	  sprintf (cs.own_buf, "E.No unwaited-for children left.");
+	  disable_async_io ();
+	  return;
+	}
+
+      if (cs.last_status.kind != TARGET_WAITKIND_EXITED
+          && cs.last_status.kind != TARGET_WAITKIND_SIGNALLED
+	  && cs.last_status.kind != TARGET_WAITKIND_NO_RESUMED)
+	current_thread->last_status = cs.last_status;
+
+      /* From the client's perspective, all-stop mode always stops all
+	 threads implicitly (and the target backend has already done
+	 so by now).  Tag all threads as "want-stopped", so we don't
+	 resume them implicitly without the client telling us to.  */
+      gdb_wants_all_threads_stopped ();
+      prepare_resume_reply (cs.own_buf, cs.last_ptid, &cs.last_status);
+      disable_async_io ();
+
+      if (cs.last_status.kind == TARGET_WAITKIND_EXITED
+          || cs.last_status.kind == TARGET_WAITKIND_SIGNALLED)
+        target_mourn_inferior (cs.last_ptid);
+    }
+}
+
+/* Attach to a new program.  Return 1 if successful, 0 if failure.  */
+static int
+handle_v_attach (char *own_buf)
+{
+  client_state &cs = get_client_state ();
+  int pid;
+
+  pid = strtol (own_buf + 8, NULL, 16);
+  if (pid != 0 && attach_inferior (pid) == 0)
+    {
+      /* Don't report shared library events after attaching, even if
+	 some libraries are preloaded.  GDB will always poll the
+	 library list.  Avoids the "stopped by shared library event"
+	 notice on the GDB side.  */
+      dlls_changed = 0;
+
+      if (non_stop)
+	{
+	  /* In non-stop, we don't send a resume reply.  Stop events
+	     will follow up using the normal notification
+	     mechanism.  */
+	  write_ok (own_buf);
+	}
+      else
+	prepare_resume_reply (own_buf, cs.last_ptid, &cs.last_status);
+
+      return 1;
+    }
+  else
+    {
+      write_enn (own_buf);
+      return 0;
+    }
+}
+
+/* Run a new program.  Return 1 if successful, 0 if failure.  */
+static int
+handle_v_run (char *own_buf)
+{
+  client_state &cs = get_client_state ();
+  char *p, *next_p;
+  std::vector<char *> new_argv;
+  char *new_program_name = NULL;
+  int i, new_argc;
+
+  new_argc = 0;
+  for (p = own_buf + strlen ("vRun;"); p && *p; p = strchr (p, ';'))
+    {
+      p++;
+      new_argc++;
+    }
+
+  for (i = 0, p = own_buf + strlen ("vRun;"); *p; p = next_p, ++i)
+    {
+      next_p = strchr (p, ';');
+      if (next_p == NULL)
+	next_p = p + strlen (p);
+
+      if (i == 0 && p == next_p)
+	{
+	  /* No program specified.  */
+	  new_program_name = NULL;
+	}
+      else if (p == next_p)
+	{
+	  /* Empty argument.  */
+	  new_argv.push_back (xstrdup (""));
+	}
+      else
+	{
+	  size_t len = (next_p - p) / 2;
+	  /* ARG is the unquoted argument received via the RSP.  */
+	  char *arg = (char *) xmalloc (len + 1);
+	  /* FULL_ARGS will contain the quoted version of ARG.  */
+	  char *full_arg = (char *) xmalloc ((len + 1) * 2);
+	  /* These are pointers used to navigate the strings above.  */
+	  char *tmp_arg = arg;
+	  char *tmp_full_arg = full_arg;
+	  int need_quote = 0;
+
+	  hex2bin (p, (gdb_byte *) arg, len);
+	  arg[len] = '\0';
+
+	  while (*tmp_arg != '\0')
+	    {
+	      switch (*tmp_arg)
+		{
+		case '\n':
+		  /* Quote \n.  */
+		  *tmp_full_arg = '\'';
+		  ++tmp_full_arg;
+		  need_quote = 1;
+		  break;
+
+		case '\'':
+		  /* Quote single quote.  */
+		  *tmp_full_arg = '\\';
+		  ++tmp_full_arg;
+		  break;
+
+		default:
+		  break;
+		}
+
+	      *tmp_full_arg = *tmp_arg;
+	      ++tmp_full_arg;
+	      ++tmp_arg;
+	    }
+
+	  if (need_quote)
+	    *tmp_full_arg++ = '\'';
+
+	  /* Finish FULL_ARG and push it into the vector containing
+	     the argv.  */
+	  *tmp_full_arg = '\0';
+	  if (i == 0)
+	    new_program_name = full_arg;
+	  else
+	    new_argv.push_back (full_arg);
+	  xfree (arg);
+	}
+      if (*next_p)
+	next_p++;
+    }
+
+  if (new_program_name == NULL)
+    {
+      /* GDB didn't specify a program to run.  Use the program from the
+	 last run with the new argument list.  */
+      if (program_path.get () == NULL)
+	{
+	  write_enn (own_buf);
+	  free_vector_argv (new_argv);
+	  return 0;
+	}
+    }
+  else
+    program_path.set (gdb::unique_xmalloc_ptr<char> (new_program_name));
+
+  /* Free the old argv and install the new one.  */
+  free_vector_argv (program_args);
+  program_args = new_argv;
+
+  target_create_inferior (program_path.get (), program_args);
+
+  if (cs.last_status.kind == TARGET_WAITKIND_STOPPED)
+    {
+      prepare_resume_reply (own_buf, cs.last_ptid, &cs.last_status);
+
+      /* In non-stop, sending a resume reply doesn't set the general
+	 thread, but GDB assumes a vRun sets it (this is so GDB can
+	 query which is the main thread of the new inferior.  */
+      if (non_stop)
+	cs.general_thread = cs.last_ptid;
+
+      return 1;
+    }
+  else
+    {
+      write_enn (own_buf);
+      return 0;
+    }
+}
+
+/* Kill process.  Return 1 if successful, 0 if failure.  */
+static int
+handle_v_kill (char *own_buf)
+{
+  client_state &cs = get_client_state ();
+  int pid;
+  char *p = &own_buf[6];
+  if (cs.multi_process)
+    pid = strtol (p, NULL, 16);
+  else
+    pid = signal_pid;
+
+  process_info *proc = find_process_pid (pid);
+
+  if (proc != nullptr && kill_inferior (proc) == 0)
+    {
+      cs.last_status.kind = TARGET_WAITKIND_SIGNALLED;
+      cs.last_status.value.sig = GDB_SIGNAL_KILL;
+      cs.last_ptid = ptid_t (pid);
+      discard_queued_stop_replies (cs.last_ptid);
+      write_ok (own_buf);
+      return 1;
+    }
+  else
+    {
+      write_enn (own_buf);
+      return 0;
+    }
+}
+
+/* Handle all of the extended 'v' packets.  */
+void
+handle_v_requests (char *own_buf, int packet_len, int *new_packet_len)
+{
+  client_state &cs = get_client_state ();
+  if (!disable_packet_vCont)
+    {
+      if (strcmp (own_buf, "vCtrlC") == 0)
+	{
+	  the_target->request_interrupt ();
+	  write_ok (own_buf);
+	  return;
+	}
+
+      if (startswith (own_buf, "vCont;"))
+	{
+	  handle_v_cont (own_buf);
+	  return;
+	}
+
+      if (startswith (own_buf, "vCont?"))
+	{
+	  strcpy (own_buf, "vCont;c;C;t");
+
+	  if (target_supports_hardware_single_step ()
+	      || target_supports_software_single_step ()
+	      || !cs.vCont_supported)
+	    {
+	      /* If target supports single step either by hardware or by
+		 software, add actions s and S to the list of supported
+		 actions.  On the other hand, if GDB doesn't request the
+		 supported vCont actions in qSupported packet, add s and
+		 S to the list too.  */
+	      own_buf = own_buf + strlen (own_buf);
+	      strcpy (own_buf, ";s;S");
+	    }
+
+	  if (target_supports_range_stepping ())
+	    {
+	      own_buf = own_buf + strlen (own_buf);
+	      strcpy (own_buf, ";r");
+	    }
+	  return;
+	}
+    }
+
+  if (startswith (own_buf, "vFile:")
+      && handle_vFile (own_buf, packet_len, new_packet_len))
+    return;
+
+  if (startswith (own_buf, "vAttach;"))
+    {
+      if ((!extended_protocol || !cs.multi_process) && target_running ())
+	{
+	  fprintf (stderr, "Already debugging a process\n");
+	  write_enn (own_buf);
+	  return;
+	}
+      handle_v_attach (own_buf);
+      return;
+    }
+
+  if (startswith (own_buf, "vRun;"))
+    {
+      if ((!extended_protocol || !cs.multi_process) && target_running ())
+	{
+	  fprintf (stderr, "Already debugging a process\n");
+	  write_enn (own_buf);
+	  return;
+	}
+      handle_v_run (own_buf);
+      return;
+    }
+
+  if (startswith (own_buf, "vKill;"))
+    {
+      if (!target_running ())
+	{
+	  fprintf (stderr, "No process to kill\n");
+	  write_enn (own_buf);
+	  return;
+	}
+      handle_v_kill (own_buf);
+      return;
+    }
+
+  if (handle_notif_ack (own_buf, packet_len))
+    return;
+
+  /* Otherwise we didn't know what packet it was.  Say we didn't
+     understand it.  */
+  own_buf[0] = 0;
+  return;
+}
+
+/* Resume thread and wait for another event.  In non-stop mode,
+   don't really wait here, but return immediatelly to the event
+   loop.  */
+static void
+myresume (char *own_buf, int step, int sig)
+{
+  client_state &cs = get_client_state ();
+  struct thread_resume resume_info[2];
+  int n = 0;
+  int valid_cont_thread;
+
+  valid_cont_thread = (cs.cont_thread != null_ptid
+			 && cs.cont_thread != minus_one_ptid);
+
+  if (step || sig || valid_cont_thread)
+    {
+      resume_info[0].thread = current_ptid;
+      if (step)
+	resume_info[0].kind = resume_step;
+      else
+	resume_info[0].kind = resume_continue;
+      resume_info[0].sig = sig;
+      n++;
+    }
+
+  if (!valid_cont_thread)
+    {
+      resume_info[n].thread = minus_one_ptid;
+      resume_info[n].kind = resume_continue;
+      resume_info[n].sig = 0;
+      n++;
+    }
+
+  resume (resume_info, n);
+}
+
+/* Callback for for_each_thread.  Make a new stop reply for each
+   stopped thread.  */
+
+static void
+queue_stop_reply_callback (thread_info *thread)
+{
+  /* For now, assume targets that don't have this callback also don't
+     manage the thread's last_status field.  */
+  if (!the_target->supports_thread_stopped ())
+    {
+      struct vstop_notif *new_notif = new struct vstop_notif;
+
+      new_notif->ptid = thread->id;
+      new_notif->status = thread->last_status;
+      /* Pass the last stop reply back to GDB, but don't notify
+	 yet.  */
+      notif_event_enque (&notif_stop, new_notif);
+    }
+  else
+    {
+      if (target_thread_stopped (thread))
+	{
+	  if (debug_threads)
+	    {
+	      std::string status_string
+		= target_waitstatus_to_string (&thread->last_status);
+
+	      debug_printf ("Reporting thread %s as already stopped with %s\n",
+			    target_pid_to_str (thread->id),
+			    status_string.c_str ());
+	    }
+
+	  gdb_assert (thread->last_status.kind != TARGET_WAITKIND_IGNORE);
+
+	  /* Pass the last stop reply back to GDB, but don't notify
+	     yet.  */
+	  queue_stop_reply (thread->id, &thread->last_status);
+	}
+    }
+}
+
+/* Set this inferior threads's state as "want-stopped".  We won't
+   resume this thread until the client gives us another action for
+   it.  */
+
+static void
+gdb_wants_thread_stopped (thread_info *thread)
+{
+  thread->last_resume_kind = resume_stop;
+
+  if (thread->last_status.kind == TARGET_WAITKIND_IGNORE)
+    {
+      /* Most threads are stopped implicitly (all-stop); tag that with
+	 signal 0.  */
+      thread->last_status.kind = TARGET_WAITKIND_STOPPED;
+      thread->last_status.value.sig = GDB_SIGNAL_0;
+    }
+}
+
+/* Set all threads' states as "want-stopped".  */
+
+static void
+gdb_wants_all_threads_stopped (void)
+{
+  for_each_thread (gdb_wants_thread_stopped);
+}
+
+/* Callback for for_each_thread.  If the thread is stopped with an
+   interesting event, mark it as having a pending event.  */
+
+static void
+set_pending_status_callback (thread_info *thread)
+{
+  if (thread->last_status.kind != TARGET_WAITKIND_STOPPED
+      || (thread->last_status.value.sig != GDB_SIGNAL_0
+	  /* A breakpoint, watchpoint or finished step from a previous
+	     GDB run isn't considered interesting for a new GDB run.
+	     If we left those pending, the new GDB could consider them
+	     random SIGTRAPs.  This leaves out real async traps.  We'd
+	     have to peek into the (target-specific) siginfo to
+	     distinguish those.  */
+	  && thread->last_status.value.sig != GDB_SIGNAL_TRAP))
+    thread->status_pending_p = 1;
+}
+
+/* Status handler for the '?' packet.  */
+
+static void
+handle_status (char *own_buf)
+{
+  client_state &cs = get_client_state ();
+
+  /* GDB is connected, don't forward events to the target anymore.  */
+  for_each_process ([] (process_info *process) {
+    process->gdb_detached = 0;
+  });
+
+  /* In non-stop mode, we must send a stop reply for each stopped
+     thread.  In all-stop mode, just send one for the first stopped
+     thread we find.  */
+
+  if (non_stop)
+    {
+      for_each_thread (queue_stop_reply_callback);
+
+      /* The first is sent immediatly.  OK is sent if there is no
+	 stopped thread, which is the same handling of the vStopped
+	 packet (by design).  */
+      notif_write_event (&notif_stop, cs.own_buf);
+    }
+  else
+    {
+      thread_info *thread = NULL;
+
+      target_pause_all (false);
+      target_stabilize_threads ();
+      gdb_wants_all_threads_stopped ();
+
+      /* We can only report one status, but we might be coming out of
+	 non-stop -- if more than one thread is stopped with
+	 interesting events, leave events for the threads we're not
+	 reporting now pending.  They'll be reported the next time the
+	 threads are resumed.  Start by marking all interesting events
+	 as pending.  */
+      for_each_thread (set_pending_status_callback);
+
+      /* Prefer the last thread that reported an event to GDB (even if
+	 that was a GDB_SIGNAL_TRAP).  */
+      if (cs.last_status.kind != TARGET_WAITKIND_IGNORE
+	  && cs.last_status.kind != TARGET_WAITKIND_EXITED
+	  && cs.last_status.kind != TARGET_WAITKIND_SIGNALLED)
+	thread = find_thread_ptid (cs.last_ptid);
+
+      /* If the last event thread is not found for some reason, look
+	 for some other thread that might have an event to report.  */
+      if (thread == NULL)
+	thread = find_thread ([] (thread_info *thr_arg)
+	  {
+	    return thr_arg->status_pending_p;
+	  });
+
+      /* If we're still out of luck, simply pick the first thread in
+	 the thread list.  */
+      if (thread == NULL)
+	thread = get_first_thread ();
+
+      if (thread != NULL)
+	{
+	  struct thread_info *tp = (struct thread_info *) thread;
+
+	  /* We're reporting this event, so it's no longer
+	     pending.  */
+	  tp->status_pending_p = 0;
+
+	  /* GDB assumes the current thread is the thread we're
+	     reporting the status for.  */
+	  cs.general_thread = thread->id;
+	  set_desired_thread ();
+
+	  gdb_assert (tp->last_status.kind != TARGET_WAITKIND_IGNORE);
+	  prepare_resume_reply (own_buf, tp->id, &tp->last_status);
+	}
+      else
+	strcpy (own_buf, "W00");
+    }
+}
+
+static void
+gdbserver_version (void)
+{
+  printf ("GNU gdbserver %s%s\n"
+	  "Copyright (C) 2021 Free Software Foundation, Inc.\n"
+	  "gdbserver is free software, covered by the "
+	  "GNU General Public License.\n"
+	  "This gdbserver was configured as \"%s\"\n",
+	  PKGVERSION, version, host_name);
+}
+
+static void
+gdbserver_usage (FILE *stream)
+{
+  fprintf (stream, "Usage:\tgdbserver [OPTIONS] COMM PROG [ARGS ...]\n"
+	   "\tgdbserver [OPTIONS] --attach COMM PID\n"
+	   "\tgdbserver [OPTIONS] --multi COMM\n"
+	   "\n"
+	   "COMM may either be a tty device (for serial debugging),\n"
+	   "HOST:PORT to listen for a TCP connection, or '-' or 'stdio' to use \n"
+	   "stdin/stdout of gdbserver.\n"
+	   "PROG is the executable program.  ARGS are arguments passed to inferior.\n"
+	   "PID is the process ID to attach to, when --attach is specified.\n"
+	   "\n"
+	   "Operating modes:\n"
+	   "\n"
+	   "  --attach              Attach to running process PID.\n"
+	   "  --multi               Start server without a specific program, and\n"
+	   "                        only quit when explicitly commanded.\n"
+	   "  --once                Exit after the first connection has closed.\n"
+	   "  --help                Print this message and then exit.\n"
+	   "  --version             Display version information and exit.\n"
+	   "\n"
+	   "Other options:\n"
+	   "\n"
+	   "  --wrapper WRAPPER --  Run WRAPPER to start new programs.\n"
+	   "  --disable-randomization\n"
+	   "                        Run PROG with address space randomization disabled.\n"
+	   "  --no-disable-randomization\n"
+	   "                        Don't disable address space randomization when\n"
+	   "                        starting PROG.\n"
+	   "  --startup-with-shell\n"
+	   "                        Start PROG using a shell.  I.e., execs a shell that\n"
+	   "                        then execs PROG.  (default)\n"
+	   "  --no-startup-with-shell\n"
+	   "                        Exec PROG directly instead of using a shell.\n"
+	   "                        Disables argument globbing and variable substitution\n"
+	   "                        on UNIX-like systems.\n"
+	   "\n"
+	   "Debug options:\n"
+	   "\n"
+	   "  --debug               Enable general debugging output.\n"
+	   "  --debug-format=OPT1[,OPT2,...]\n"
+	   "                        Specify extra content in debugging output.\n"
+	   "                          Options:\n"
+	   "                            all\n"
+	   "                            none\n"
+	   "                            timestamp\n"
+	   "  --remote-debug        Enable remote protocol debugging output.\n"
+	   "  --disable-packet=OPT1[,OPT2,...]\n"
+	   "                        Disable support for RSP packets or features.\n"
+	   "                          Options:\n"
+	   "                            vCont, Tthread, qC, qfThreadInfo and \n"
+	   "                            threads (disable all threading packets).\n"
+	   "\n"
+	   "For more information, consult the GDB manual (available as on-line \n"
+	   "info or a printed manual).\n");
+  if (REPORT_BUGS_TO[0] && stream == stdout)
+    fprintf (stream, "Report bugs to \"%s\".\n", REPORT_BUGS_TO);
+}
+
+static void
+gdbserver_show_disableable (FILE *stream)
+{
+  fprintf (stream, "Disableable packets:\n"
+	   "  vCont       \tAll vCont packets\n"
+	   "  qC          \tQuerying the current thread\n"
+	   "  qfThreadInfo\tThread listing\n"
+	   "  Tthread     \tPassing the thread specifier in the "
+	   "T stop reply packet\n"
+	   "  threads     \tAll of the above\n");
+}
+
+/* Start up the event loop.  This is the entry point to the event
+   loop.  */
+
+static void
+start_event_loop ()
+{
+  /* Loop until there is nothing to do.  This is the entry point to
+     the event loop engine.  If nothing is ready at this time, wait
+     for something to happen (via wait_for_event), then process it.
+     Return when there are no longer event sources to wait for.  */
+
+  keep_processing_events = true;
+  while (keep_processing_events)
+    {
+      /* Any events already waiting in the queue?  */
+      int res = gdb_do_one_event ();
+
+      /* Was there an error?  */
+      if (res == -1)
+	break;
+    }
+
+  /* We are done with the event loop.  There are no more event sources
+     to listen to.  So we exit gdbserver.  */
+}
+
+static void
+kill_inferior_callback (process_info *process)
+{
+  kill_inferior (process);
+  discard_queued_stop_replies (ptid_t (process->pid));
+}
+
+/* Call this when exiting gdbserver with possible inferiors that need
+   to be killed or detached from.  */
+
+static void
+detach_or_kill_for_exit (void)
+{
+  /* First print a list of the inferiors we will be killing/detaching.
+     This is to assist the user, for example, in case the inferior unexpectedly
+     dies after we exit: did we screw up or did the inferior exit on its own?
+     Having this info will save some head-scratching.  */
+
+  if (have_started_inferiors_p ())
+    {
+      fprintf (stderr, "Killing process(es):");
+
+      for_each_process ([] (process_info *process) {
+	if (!process->attached)
+	  fprintf (stderr, " %d", process->pid);
+      });
+
+      fprintf (stderr, "\n");
+    }
+  if (have_attached_inferiors_p ())
+    {
+      fprintf (stderr, "Detaching process(es):");
+
+      for_each_process ([] (process_info *process) {
+	if (process->attached)
+	  fprintf (stderr, " %d", process->pid);
+      });
+
+      fprintf (stderr, "\n");
+    }
+
+  /* Now we can kill or detach the inferiors.  */
+  for_each_process ([] (process_info *process) {
+    int pid = process->pid;
+
+    if (process->attached)
+      detach_inferior (process);
+    else
+      kill_inferior (process);
+
+    discard_queued_stop_replies (ptid_t (pid));
+  });
+}
+
+/* Value that will be passed to exit(3) when gdbserver exits.  */
+static int exit_code;
+
+/* Wrapper for detach_or_kill_for_exit that catches and prints
+   errors.  */
+
+static void
+detach_or_kill_for_exit_cleanup ()
+{
+  try
+    {
+      detach_or_kill_for_exit ();
+    }
+  catch (const gdb_exception &exception)
+    {
+      fflush (stdout);
+      fprintf (stderr, "Detach or kill failed: %s\n",
+	       exception.what ());
+      exit_code = 1;
+    }
+}
+
+/* Main function.  This is called by the real "main" function,
+   wrapped in a TRY_CATCH that handles any uncaught exceptions.  */
+
+static void ATTRIBUTE_NORETURN
+captured_main (int argc, char *argv[])
+{
+  int bad_attach;
+  int pid;
+  char *arg_end;
+  const char *port = NULL;
+  char **next_arg = &argv[1];
+  volatile int multi_mode = 0;
+  volatile int attach = 0;
+  int was_running;
+  bool selftest = false;
+#if GDB_SELF_TEST
+  std::vector<const char *> selftest_filters;
+#endif
+
+  current_directory = getcwd (NULL, 0);
+  client_state &cs = get_client_state ();
+
+  if (current_directory == NULL)
+    {
+      error (_("Could not find current working directory: %s"),
+	     safe_strerror (errno));
+    }
+
+  while (*next_arg != NULL && **next_arg == '-')
+    {
+      if (strcmp (*next_arg, "--version") == 0)
+	{
+	  gdbserver_version ();
+	  exit (0);
+	}
+      else if (strcmp (*next_arg, "--help") == 0)
+	{
+	  gdbserver_usage (stdout);
+	  exit (0);
+	}
+      else if (strcmp (*next_arg, "--attach") == 0)
+	attach = 1;
+      else if (strcmp (*next_arg, "--multi") == 0)
+	multi_mode = 1;
+      else if (strcmp (*next_arg, "--wrapper") == 0)
+	{
+	  char **tmp;
+
+	  next_arg++;
+
+	  tmp = next_arg;
+	  while (*next_arg != NULL && strcmp (*next_arg, "--") != 0)
+	    {
+	      wrapper_argv += *next_arg;
+	      wrapper_argv += ' ';
+	      next_arg++;
+	    }
+
+	  if (!wrapper_argv.empty ())
+	    {
+	      /* Erase the last whitespace.  */
+	      wrapper_argv.erase (wrapper_argv.end () - 1);
+	    }
+
+	  if (next_arg == tmp || *next_arg == NULL)
+	    {
+	      gdbserver_usage (stderr);
+	      exit (1);
+	    }
+
+	  /* Consume the "--".  */
+	  *next_arg = NULL;
+	}
+      else if (strcmp (*next_arg, "--debug") == 0)
+	debug_threads = 1;
+      else if (startswith (*next_arg, "--debug-format="))
+	{
+	  std::string error_msg
+	    = parse_debug_format_options ((*next_arg)
+					  + sizeof ("--debug-format=") - 1, 0);
+
+	  if (!error_msg.empty ())
+	    {
+	      fprintf (stderr, "%s", error_msg.c_str ());
+	      exit (1);
+	    }
+	}
+      else if (strcmp (*next_arg, "--remote-debug") == 0)
+	remote_debug = 1;
+      else if (startswith (*next_arg, "--debug-file="))
+	debug_set_output ((*next_arg) + sizeof ("--debug-file=") -1);
+      else if (strcmp (*next_arg, "--disable-packet") == 0)
+	{
+	  gdbserver_show_disableable (stdout);
+	  exit (0);
+	}
+      else if (startswith (*next_arg, "--disable-packet="))
+	{
+	  char *packets = *next_arg += sizeof ("--disable-packet=") - 1;
+	  char *saveptr;
+	  for (char *tok = strtok_r (packets, ",", &saveptr);
+	       tok != NULL;
+	       tok = strtok_r (NULL, ",", &saveptr))
+	    {
+	      if (strcmp ("vCont", tok) == 0)
+		disable_packet_vCont = true;
+	      else if (strcmp ("Tthread", tok) == 0)
+		disable_packet_Tthread = true;
+	      else if (strcmp ("qC", tok) == 0)
+		disable_packet_qC = true;
+	      else if (strcmp ("qfThreadInfo", tok) == 0)
+		disable_packet_qfThreadInfo = true;
+	      else if (strcmp ("T", tok) == 0)
+		disable_packet_T = true;
+	      else if (strcmp ("threads", tok) == 0)
+		{
+		  disable_packet_vCont = true;
+		  disable_packet_Tthread = true;
+		  disable_packet_qC = true;
+		  disable_packet_qfThreadInfo = true;
+		}
+	      else
+		{
+		  fprintf (stderr, "Don't know how to disable \"%s\".\n\n",
+			   tok);
+		  gdbserver_show_disableable (stderr);
+		  exit (1);
+		}
+	    }
+	}
+      else if (strcmp (*next_arg, "-") == 0)
+	{
+	  /* "-" specifies a stdio connection and is a form of port
+	     specification.  */
+	  port = STDIO_CONNECTION_NAME;
+	  next_arg++;
+	  break;
+	}
+      else if (strcmp (*next_arg, "--disable-randomization") == 0)
+	cs.disable_randomization = 1;
+      else if (strcmp (*next_arg, "--no-disable-randomization") == 0)
+	cs.disable_randomization = 0;
+      else if (strcmp (*next_arg, "--startup-with-shell") == 0)
+	startup_with_shell = true;
+      else if (strcmp (*next_arg, "--no-startup-with-shell") == 0)
+	startup_with_shell = false;
+      else if (strcmp (*next_arg, "--once") == 0)
+	run_once = true;
+      else if (strcmp (*next_arg, "--selftest") == 0)
+	selftest = true;
+      else if (startswith (*next_arg, "--selftest="))
+	{
+	  selftest = true;
+
+#if GDB_SELF_TEST
+	  const char *filter = *next_arg + strlen ("--selftest=");
+	  if (*filter == '\0')
+	    {
+	      fprintf (stderr, _("Error: selftest filter is empty.\n"));
+	      exit (1);
+	    }
+
+	  selftest_filters.push_back (filter);
+#endif
+	}
+      else
+	{
+	  fprintf (stderr, "Unknown argument: %s\n", *next_arg);
+	  exit (1);
+	}
+
+      next_arg++;
+      continue;
+    }
+
+  if (port == NULL)
+    {
+      port = *next_arg;
+      next_arg++;
+    }
+  if ((port == NULL || (!attach && !multi_mode && *next_arg == NULL))
+       && !selftest)
+    {
+      gdbserver_usage (stderr);
+      exit (1);
+    }
+
+  /* Remember stdio descriptors.  LISTEN_DESC must not be listed, it will be
+     opened by remote_prepare.  */
+  notice_open_fds ();
+
+  save_original_signals_state (false);
+
+  /* We need to know whether the remote connection is stdio before
+     starting the inferior.  Inferiors created in this scenario have
+     stdin,stdout redirected.  So do this here before we call
+     start_inferior.  */
+  if (port != NULL)
+    remote_prepare (port);
+
+  bad_attach = 0;
+  pid = 0;
+
+  /* --attach used to come after PORT, so allow it there for
+       compatibility.  */
+  if (*next_arg != NULL && strcmp (*next_arg, "--attach") == 0)
+    {
+      attach = 1;
+      next_arg++;
+    }
+
+  if (attach
+      && (*next_arg == NULL
+	  || (*next_arg)[0] == '\0'
+	  || (pid = strtoul (*next_arg, &arg_end, 0)) == 0
+	  || *arg_end != '\0'
+	  || next_arg[1] != NULL))
+    bad_attach = 1;
+
+  if (bad_attach)
+    {
+      gdbserver_usage (stderr);
+      exit (1);
+    }
+
+  /* Gather information about the environment.  */
+  our_environ = gdb_environ::from_host_environ ();
+
+  initialize_async_io ();
+  initialize_low ();
+  have_job_control ();
+  if (target_supports_tracepoints ())
+    initialize_tracepoint ();
+
+  mem_buf = (unsigned char *) xmalloc (PBUFSIZ);
+
+  if (selftest)
+    {
+#if GDB_SELF_TEST
+      selftests::run_tests (selftest_filters);
+#else
+      printf (_("Selftests have been disabled for this build.\n"));
+#endif
+      throw_quit ("Quit");
+    }
+
+  if (pid == 0 && *next_arg != NULL)
+    {
+      int i, n;
+
+      n = argc - (next_arg - argv);
+      program_path.set (make_unique_xstrdup (next_arg[0]));
+      for (i = 1; i < n; i++)
+	program_args.push_back (xstrdup (next_arg[i]));
+
+      /* Wait till we are at first instruction in program.  */
+      target_create_inferior (program_path.get (), program_args);
+
+      /* We are now (hopefully) stopped at the first instruction of
+	 the target process.  This assumes that the target process was
+	 successfully created.  */
+    }
+  else if (pid != 0)
+    {
+      if (attach_inferior (pid) == -1)
+	error ("Attaching not supported on this target");
+
+      /* Otherwise succeeded.  */
+    }
+  else
+    {
+      cs.last_status.kind = TARGET_WAITKIND_EXITED;
+      cs.last_status.value.integer = 0;
+      cs.last_ptid = minus_one_ptid;
+    }
+
+  SCOPE_EXIT { detach_or_kill_for_exit_cleanup (); };
+
+  /* Don't report shared library events on the initial connection,
+     even if some libraries are preloaded.  Avoids the "stopped by
+     shared library event" notice on gdb side.  */
+  dlls_changed = 0;
+
+  if (cs.last_status.kind == TARGET_WAITKIND_EXITED
+      || cs.last_status.kind == TARGET_WAITKIND_SIGNALLED)
+    was_running = 0;
+  else
+    was_running = 1;
+
+  if (!was_running && !multi_mode)
+    error ("No program to debug");
+
+  while (1)
+    {
+      cs.noack_mode = 0;
+      cs.multi_process = 0;
+      cs.report_fork_events = 0;
+      cs.report_vfork_events = 0;
+      cs.report_exec_events = 0;
+      /* Be sure we're out of tfind mode.  */
+      cs.current_traceframe = -1;
+      cs.cont_thread = null_ptid;
+      cs.swbreak_feature = 0;
+      cs.hwbreak_feature = 0;
+      cs.vCont_supported = 0;
+
+      remote_open (port);
+
+      try
+	{
+	  /* Wait for events.  This will return when all event sources
+	     are removed from the event loop.  */
+	  start_event_loop ();
+
+	  /* If an exit was requested (using the "monitor exit"
+	     command), terminate now.  */
+	  if (exit_requested)
+	    throw_quit ("Quit");
+
+	  /* The only other way to get here is for getpkt to fail:
+
+	      - If --once was specified, we're done.
+
+	      - If not in extended-remote mode, and we're no longer
+	        debugging anything, simply exit: GDB has disconnected
+	        after processing the last process exit.
+
+	      - Otherwise, close the connection and reopen it at the
+	        top of the loop.  */
+	  if (run_once || (!extended_protocol && !target_running ()))
+	    throw_quit ("Quit");
+
+	  fprintf (stderr,
+		   "Remote side has terminated connection.  "
+		   "GDBserver will reopen the connection.\n");
+
+	  /* Get rid of any pending statuses.  An eventual reconnection
+	     (by the same GDB instance or another) will refresh all its
+	     state from scratch.  */
+	  discard_queued_stop_replies (minus_one_ptid);
+	  for_each_thread ([] (thread_info *thread)
+	    {
+	      thread->status_pending_p = 0;
+	    });
+
+	  if (tracing)
+	    {
+	      if (disconnected_tracing)
+		{
+		  /* Try to enable non-stop/async mode, so we we can
+		     both wait for an async socket accept, and handle
+		     async target events simultaneously.  There's also
+		     no point either in having the target always stop
+		     all threads, when we're going to pass signals
+		     down without informing GDB.  */
+		  if (!non_stop)
+		    {
+		      if (the_target->start_non_stop (true))
+			non_stop = 1;
+
+		      /* Detaching implicitly resumes all threads;
+			 simply disconnecting does not.  */
+		    }
+		}
+	      else
+		{
+		  fprintf (stderr,
+			   "Disconnected tracing disabled; "
+			   "stopping trace run.\n");
+		  stop_tracing ();
+		}
+	    }
+	}
+      catch (const gdb_exception_error &exception)
+	{
+	  fflush (stdout);
+	  fprintf (stderr, "gdbserver: %s\n", exception.what ());
+
+	  if (response_needed)
+	    {
+	      write_enn (cs.own_buf);
+	      putpkt (cs.own_buf);
+	    }
+
+	  if (run_once)
+	    throw_quit ("Quit");
+	}
+    }
+}
+
+/* Main function.  */
+
+int
+main (int argc, char *argv[])
+{
+
+  try
+    {
+      captured_main (argc, argv);
+    }
+  catch (const gdb_exception &exception)
+    {
+      if (exception.reason == RETURN_ERROR)
+	{
+	  fflush (stdout);
+	  fprintf (stderr, "%s\n", exception.what ());
+	  fprintf (stderr, "Exiting\n");
+	  exit_code = 1;
+	}
+
+      exit (exit_code);
+    }
+
+  gdb_assert_not_reached ("captured_main should never return");
+}
+
+/* Process options coming from Z packets for a breakpoint.  PACKET is
+   the packet buffer.  *PACKET is updated to point to the first char
+   after the last processed option.  */
+
+static void
+process_point_options (struct gdb_breakpoint *bp, const char **packet)
+{
+  const char *dataptr = *packet;
+  int persist;
+
+  /* Check if data has the correct format.  */
+  if (*dataptr != ';')
+    return;
+
+  dataptr++;
+
+  while (*dataptr)
+    {
+      if (*dataptr == ';')
+	++dataptr;
+
+      if (*dataptr == 'X')
+	{
+	  /* Conditional expression.  */
+	  if (debug_threads)
+	    debug_printf ("Found breakpoint condition.\n");
+	  if (!add_breakpoint_condition (bp, &dataptr))
+	    dataptr = strchrnul (dataptr, ';');
+	}
+      else if (startswith (dataptr, "cmds:"))
+	{
+	  dataptr += strlen ("cmds:");
+	  if (debug_threads)
+	    debug_printf ("Found breakpoint commands %s.\n", dataptr);
+	  persist = (*dataptr == '1');
+	  dataptr += 2;
+	  if (add_breakpoint_commands (bp, &dataptr, persist))
+	    dataptr = strchrnul (dataptr, ';');
+	}
+      else
+	{
+	  fprintf (stderr, "Unknown token %c, ignoring.\n",
+		   *dataptr);
+	  /* Skip tokens until we find one that we recognize.  */
+	  dataptr = strchrnul (dataptr, ';');
+	}
+    }
+  *packet = dataptr;
+}
+
+/* Event loop callback that handles a serial event.  The first byte in
+   the serial buffer gets us here.  We expect characters to arrive at
+   a brisk pace, so we read the rest of the packet with a blocking
+   getpkt call.  */
+
+static int
+process_serial_event (void)
+{
+  client_state &cs = get_client_state ();
+  int signal;
+  unsigned int len;
+  CORE_ADDR mem_addr;
+  unsigned char sig;
+  int packet_len;
+  int new_packet_len = -1;
+
+  disable_async_io ();
+
+  response_needed = false;
+  packet_len = getpkt (cs.own_buf);
+  if (packet_len <= 0)
+    {
+      remote_close ();
+      /* Force an event loop break.  */
+      return -1;
+    }
+  response_needed = true;
+
+  char ch = cs.own_buf[0];
+  switch (ch)
+    {
+    case 'q':
+      handle_query (cs.own_buf, packet_len, &new_packet_len);
+      break;
+    case 'Q':
+      handle_general_set (cs.own_buf);
+      break;
+    case 'D':
+      handle_detach (cs.own_buf);
+      break;
+    case '!':
+      extended_protocol = true;
+      write_ok (cs.own_buf);
+      break;
+    case '?':
+      handle_status (cs.own_buf);
+      break;
+    case 'H':
+      if (cs.own_buf[1] == 'c' || cs.own_buf[1] == 'g' || cs.own_buf[1] == 's')
+	{
+	  require_running_or_break (cs.own_buf);
+
+	  ptid_t thread_id = read_ptid (&cs.own_buf[2], NULL);
+
+	  if (thread_id == null_ptid || thread_id == minus_one_ptid)
+	    thread_id = null_ptid;
+	  else if (thread_id.is_pid ())
+	    {
+	      /* The ptid represents a pid.  */
+	      thread_info *thread = find_any_thread_of_pid (thread_id.pid ());
+
+	      if (thread == NULL)
+		{
+		  write_enn (cs.own_buf);
+		  break;
+		}
+
+	      thread_id = thread->id;
+	    }
+	  else
+	    {
+	      /* The ptid represents a lwp/tid.  */
+	      if (find_thread_ptid (thread_id) == NULL)
+		{
+		  write_enn (cs.own_buf);
+		  break;
+		}
+	    }
+
+	  if (cs.own_buf[1] == 'g')
+	    {
+	      if (thread_id == null_ptid)
+		{
+		  /* GDB is telling us to choose any thread.  Check if
+		     the currently selected thread is still valid. If
+		     it is not, select the first available.  */
+		  thread_info *thread = find_thread_ptid (cs.general_thread);
+		  if (thread == NULL)
+		    thread = get_first_thread ();
+		  thread_id = thread->id;
+		}
+
+	      cs.general_thread = thread_id;
+	      set_desired_thread ();
+	      gdb_assert (current_thread != NULL);
+	    }
+	  else if (cs.own_buf[1] == 'c')
+	    cs.cont_thread = thread_id;
+
+	  write_ok (cs.own_buf);
+	}
+      else
+	{
+	  /* Silently ignore it so that gdb can extend the protocol
+	     without compatibility headaches.  */
+	  cs.own_buf[0] = '\0';
+	}
+      break;
+    case 'g':
+      require_running_or_break (cs.own_buf);
+      if (cs.current_traceframe >= 0)
+	{
+	  struct regcache *regcache
+	    = new_register_cache (current_target_desc ());
+
+	  if (fetch_traceframe_registers (cs.current_traceframe,
+					  regcache, -1) == 0)
+	    registers_to_string (regcache, cs.own_buf);
+	  else
+	    write_enn (cs.own_buf);
+	  free_register_cache (regcache);
+	}
+      else
+	{
+	  struct regcache *regcache;
+
+	  if (!set_desired_thread ())
+	    write_enn (cs.own_buf);
+	  else
+	    {
+	      regcache = get_thread_regcache (current_thread, 1);
+	      registers_to_string (regcache, cs.own_buf);
+	    }
+	}
+      break;
+    case 'G':
+      require_running_or_break (cs.own_buf);
+      if (cs.current_traceframe >= 0)
+	write_enn (cs.own_buf);
+      else
+	{
+	  struct regcache *regcache;
+
+	  if (!set_desired_thread ())
+	    write_enn (cs.own_buf);
+	  else
+	    {
+	      regcache = get_thread_regcache (current_thread, 1);
+	      registers_from_string (regcache, &cs.own_buf[1]);
+	      write_ok (cs.own_buf);
+	    }
+	}
+      break;
+    case 'm':
+      {
+	require_running_or_break (cs.own_buf);
+	decode_m_packet (&cs.own_buf[1], &mem_addr, &len);
+	int res = gdb_read_memory (mem_addr, mem_buf, len);
+	if (res < 0)
+	  write_enn (cs.own_buf);
+	else
+	  bin2hex (mem_buf, cs.own_buf, res);
+      }
+      break;
+    case 'M':
+      require_running_or_break (cs.own_buf);
+      decode_M_packet (&cs.own_buf[1], &mem_addr, &len, &mem_buf);
+      if (gdb_write_memory (mem_addr, mem_buf, len) == 0)
+	write_ok (cs.own_buf);
+      else
+	write_enn (cs.own_buf);
+      break;
+    case 'X':
+      require_running_or_break (cs.own_buf);
+      if (decode_X_packet (&cs.own_buf[1], packet_len - 1,
+			   &mem_addr, &len, &mem_buf) < 0
+	  || gdb_write_memory (mem_addr, mem_buf, len) != 0)
+	write_enn (cs.own_buf);
+      else
+	write_ok (cs.own_buf);
+      break;
+    case 'C':
+      require_running_or_break (cs.own_buf);
+      hex2bin (cs.own_buf + 1, &sig, 1);
+      if (gdb_signal_to_host_p ((enum gdb_signal) sig))
+	signal = gdb_signal_to_host ((enum gdb_signal) sig);
+      else
+	signal = 0;
+      myresume (cs.own_buf, 0, signal);
+      break;
+    case 'S':
+      require_running_or_break (cs.own_buf);
+      hex2bin (cs.own_buf + 1, &sig, 1);
+      if (gdb_signal_to_host_p ((enum gdb_signal) sig))
+	signal = gdb_signal_to_host ((enum gdb_signal) sig);
+      else
+	signal = 0;
+      myresume (cs.own_buf, 1, signal);
+      break;
+    case 'c':
+      require_running_or_break (cs.own_buf);
+      signal = 0;
+      myresume (cs.own_buf, 0, signal);
+      break;
+    case 's':
+      require_running_or_break (cs.own_buf);
+      signal = 0;
+      myresume (cs.own_buf, 1, signal);
+      break;
+    case 'Z':  /* insert_ ... */
+      /* Fallthrough.  */
+    case 'z':  /* remove_ ... */
+      {
+	char *dataptr;
+	ULONGEST addr;
+	int kind;
+	char type = cs.own_buf[1];
+	int res;
+	const int insert = ch == 'Z';
+	const char *p = &cs.own_buf[3];
+
+	p = unpack_varlen_hex (p, &addr);
+	kind = strtol (p + 1, &dataptr, 16);
+
+	if (insert)
+	  {
+	    struct gdb_breakpoint *bp;
+
+	    bp = set_gdb_breakpoint (type, addr, kind, &res);
+	    if (bp != NULL)
+	      {
+		res = 0;
+
+		/* GDB may have sent us a list of *point parameters to
+		   be evaluated on the target's side.  Read such list
+		   here.  If we already have a list of parameters, GDB
+		   is telling us to drop that list and use this one
+		   instead.  */
+		clear_breakpoint_conditions_and_commands (bp);
+		const char *options = dataptr;
+		process_point_options (bp, &options);
+	      }
+	  }
+	else
+	  res = delete_gdb_breakpoint (type, addr, kind);
+
+	if (res == 0)
+	  write_ok (cs.own_buf);
+	else if (res == 1)
+	  /* Unsupported.  */
+	  cs.own_buf[0] = '\0';
+	else
+	  write_enn (cs.own_buf);
+	break;
+      }
+    case 'k':
+      response_needed = false;
+      if (!target_running ())
+	/* The packet we received doesn't make sense - but we can't
+	   reply to it, either.  */
+	return 0;
+
+      fprintf (stderr, "Killing all inferiors\n");
+
+      for_each_process (kill_inferior_callback);
+
+      /* When using the extended protocol, we wait with no program
+	 running.  The traditional protocol will exit instead.  */
+      if (extended_protocol)
+	{
+	  cs.last_status.kind = TARGET_WAITKIND_EXITED;
+	  cs.last_status.value.sig = GDB_SIGNAL_KILL;
+	  return 0;
+	}
+      else
+	exit (0);
+
+    case 'T':
+      {
+	require_running_or_break (cs.own_buf);
+
+	ptid_t thread_id = read_ptid (&cs.own_buf[1], NULL);
+	if (find_thread_ptid (thread_id) == NULL)
+	  {
+	    write_enn (cs.own_buf);
+	    break;
+	  }
+
+	if (mythread_alive (thread_id))
+	  write_ok (cs.own_buf);
+	else
+	  write_enn (cs.own_buf);
+      }
+      break;
+    case 'R':
+      response_needed = false;
+
+      /* Restarting the inferior is only supported in the extended
+	 protocol.  */
+      if (extended_protocol)
+	{
+	  if (target_running ())
+	    for_each_process (kill_inferior_callback);
+
+	  fprintf (stderr, "GDBserver restarting\n");
+
+	  /* Wait till we are at 1st instruction in prog.  */
+	  if (program_path.get () != NULL)
+	    {
+	      target_create_inferior (program_path.get (), program_args);
+
+	      if (cs.last_status.kind == TARGET_WAITKIND_STOPPED)
+		{
+		  /* Stopped at the first instruction of the target
+		     process.  */
+		  cs.general_thread = cs.last_ptid;
+		}
+	      else
+		{
+		  /* Something went wrong.  */
+		  cs.general_thread = null_ptid;
+		}
+	    }
+	  else
+	    {
+	      cs.last_status.kind = TARGET_WAITKIND_EXITED;
+	      cs.last_status.value.sig = GDB_SIGNAL_KILL;
+	    }
+	  return 0;
+	}
+      else
+	{
+	  /* It is a request we don't understand.  Respond with an
+	     empty packet so that gdb knows that we don't support this
+	     request.  */
+	  cs.own_buf[0] = '\0';
+	  break;
+	}
+    case 'v':
+      /* Extended (long) request.  */
+      handle_v_requests (cs.own_buf, packet_len, &new_packet_len);
+      break;
+
+    default:
+      /* It is a request we don't understand.  Respond with an empty
+	 packet so that gdb knows that we don't support this
+	 request.  */
+      cs.own_buf[0] = '\0';
+      break;
+    }
+
+  if (new_packet_len != -1)
+    putpkt_binary (cs.own_buf, new_packet_len);
+  else
+    putpkt (cs.own_buf);
+
+  response_needed = false;
+
+  if (exit_requested)
+    return -1;
+
+  return 0;
+}
+
+/* Event-loop callback for serial events.  */
+
+void
+handle_serial_event (int err, gdb_client_data client_data)
+{
+  if (debug_threads)
+    debug_printf ("handling possible serial event\n");
+
+  /* Really handle it.  */
+  if (process_serial_event () < 0)
+    {
+      keep_processing_events = false;
+      return;
+    }
+
+  /* Be sure to not change the selected thread behind GDB's back.
+     Important in the non-stop mode asynchronous protocol.  */
+  set_desired_thread ();
+}
+
+/* Push a stop notification on the notification queue.  */
+
+static void
+push_stop_notification (ptid_t ptid, struct target_waitstatus *status)
+{
+  struct vstop_notif *vstop_notif = new struct vstop_notif;
+
+  vstop_notif->status = *status;
+  vstop_notif->ptid = ptid;
+  /* Push Stop notification.  */
+  notif_push (&notif_stop, vstop_notif);
+}
+
+/* Event-loop callback for target events.  */
+
+void
+handle_target_event (int err, gdb_client_data client_data)
+{
+  client_state &cs = get_client_state ();
+  if (debug_threads)
+    debug_printf ("handling possible target event\n");
+
+  cs.last_ptid = mywait (minus_one_ptid, &cs.last_status,
+		      TARGET_WNOHANG, 1);
+
+  if (cs.last_status.kind == TARGET_WAITKIND_NO_RESUMED)
+    {
+      if (gdb_connected () && report_no_resumed)
+	push_stop_notification (null_ptid, &cs.last_status);
+    }
+  else if (cs.last_status.kind != TARGET_WAITKIND_IGNORE)
+    {
+      int pid = cs.last_ptid.pid ();
+      struct process_info *process = find_process_pid (pid);
+      int forward_event = !gdb_connected () || process->gdb_detached;
+
+      if (cs.last_status.kind == TARGET_WAITKIND_EXITED
+	  || cs.last_status.kind == TARGET_WAITKIND_SIGNALLED)
+	{
+	  mark_breakpoints_out (process);
+	  target_mourn_inferior (cs.last_ptid);
+	}
+      else if (cs.last_status.kind == TARGET_WAITKIND_THREAD_EXITED)
+	;
+      else
+	{
+	  /* We're reporting this thread as stopped.  Update its
+	     "want-stopped" state to what the client wants, until it
+	     gets a new resume action.  */
+	  current_thread->last_resume_kind = resume_stop;
+	  current_thread->last_status = cs.last_status;
+	}
+
+      if (forward_event)
+	{
+	  if (!target_running ())
+	    {
+	      /* The last process exited.  We're done.  */
+	      exit (0);
+	    }
+
+	  if (cs.last_status.kind == TARGET_WAITKIND_EXITED
+	      || cs.last_status.kind == TARGET_WAITKIND_SIGNALLED
+	      || cs.last_status.kind == TARGET_WAITKIND_THREAD_EXITED)
+	    ;
+	  else
+	    {
+	      /* A thread stopped with a signal, but gdb isn't
+		 connected to handle it.  Pass it down to the
+		 inferior, as if it wasn't being traced.  */
+	      enum gdb_signal signal;
+
+	      if (debug_threads)
+		debug_printf ("GDB not connected; forwarding event %d for"
+			      " [%s]\n",
+			      (int) cs.last_status.kind,
+			      target_pid_to_str (cs.last_ptid));
+
+	      if (cs.last_status.kind == TARGET_WAITKIND_STOPPED)
+		signal = cs.last_status.value.sig;
+	      else
+		signal = GDB_SIGNAL_0;
+	      target_continue (cs.last_ptid, signal);
+	    }
+	}
+      else
+	push_stop_notification (cs.last_ptid, &cs.last_status);
+    }
+
+  /* Be sure to not change the selected thread behind GDB's back.
+     Important in the non-stop mode asynchronous protocol.  */
+  set_desired_thread ();
+}
+
+/* See gdbsupport/event-loop.h.  */
+
+int
+invoke_async_signal_handlers ()
+{
+  return 0;
+}
+
+/* See gdbsupport/event-loop.h.  */
+
+int
+check_async_event_handlers ()
+{
+  return 0;
+}
+
+/* See gdbsupport/errors.h  */
+
+void
+flush_streams ()
+{
+  fflush (stdout);
+  fflush (stderr);
+}
+
+/* See gdbsupport/gdb_select.h.  */
+
+int
+gdb_select (int n, fd_set *readfds, fd_set *writefds,
+	    fd_set *exceptfds, struct timeval *timeout)
+{
+  return select (n, readfds, writefds, exceptfds, timeout);
+}
+
+#if GDB_SELF_TEST
+namespace selftests
+{
+
+void
+reset ()
+{}
+
+} // namespace selftests
+#endif /* GDB_SELF_TEST */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/server.h ./gdbserver/server.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/server.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/server.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,200 @@
+/* Common definitions for remote server for GDB.
+   Copyright (C) 1993-2021 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 GDBSERVER_SERVER_H
+#define GDBSERVER_SERVER_H
+
+#include "gdbsupport/common-defs.h"
+
+#undef PACKAGE
+#undef PACKAGE_NAME
+#undef PACKAGE_VERSION
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+
+#include <config.h>
+
+gdb_static_assert (sizeof (CORE_ADDR) >= sizeof (void *));
+
+#include "gdbsupport/version.h"
+
+#if !HAVE_DECL_PERROR
+#ifndef perror
+extern void perror (const char *);
+#endif
+#endif
+
+#if !HAVE_DECL_VASPRINTF
+extern int vasprintf(char **strp, const char *fmt, va_list ap);
+#endif
+#if !HAVE_DECL_VSNPRINTF
+int vsnprintf(char *str, size_t size, const char *format, va_list ap);
+#endif
+
+#ifdef IN_PROCESS_AGENT
+#  define PROG "ipa"
+#else
+#  define PROG "gdbserver"
+#endif
+
+#include "gdbsupport/buffer.h"
+#include "gdbsupport/xml-utils.h"
+#include "regcache.h"
+#include "gdbsupport/gdb_signals.h"
+#include "target.h"
+#include "mem-break.h"
+#include "gdbsupport/environ.h"
+
+/* Target-specific functions */
+
+void initialize_low ();
+
+/* Public variables in server.c */
+
+extern bool server_waiting;
+
+extern bool disable_packet_vCont;
+extern bool disable_packet_Tthread;
+extern bool disable_packet_qC;
+extern bool disable_packet_qfThreadInfo;
+extern bool disable_packet_T;
+
+extern bool run_once;
+extern bool non_stop;
+
+#include "gdbsupport/event-loop.h"
+
+/* Functions from server.c.  */
+extern void handle_v_requests (char *own_buf, int packet_len,
+			       int *new_packet_len);
+extern void handle_serial_event (int err, gdb_client_data client_data);
+extern void handle_target_event (int err, gdb_client_data client_data);
+
+/* Get rid of the currently pending stop replies that match PTID.  */
+extern void discard_queued_stop_replies (ptid_t ptid);
+
+/* Returns true if there's a pending stop reply that matches PTID in
+   the vStopped notifications queue.  */
+extern int in_queued_stop_replies (ptid_t ptid);
+
+#include "remote-utils.h"
+
+#include "utils.h"
+#include "debug.h"
+#include "gdbsupport/gdb_vecs.h"
+
+/* Maximum number of bytes to read/write at once.  The value here
+   is chosen to fill up a packet (the headers account for the 32).  */
+#define MAXBUFBYTES(N) (((N)-32)/2)
+
+/* Buffer sizes for transferring memory, registers, etc.   Set to a constant
+   value to accomodate multiple register formats.  This value must be at least
+   as large as the largest register set supported by gdbserver.  */
+#define PBUFSIZ 18432
+
+/* Definition for an unknown syscall, used basically in error-cases.  */
+#define UNKNOWN_SYSCALL (-1)
+
+/* Definition for any syscall, used for unfiltered syscall reporting.  */
+#define ANY_SYSCALL (-2)
+
+/* After fork_inferior has been called, we need to adjust a few
+   signals and call startup_inferior to start the inferior and consume
+   its first events.  This is done here.  PID is the pid of the new
+   inferior and PROGRAM is its name.  */
+extern void post_fork_inferior (int pid, const char *program);
+
+/* Get the gdb_environ being used in the current session.  */
+extern gdb_environ *get_environ ();
+
+extern unsigned long signal_pid;
+
+
+/* Description of the client remote protocol state for the currently
+   connected client.  */
+
+struct client_state
+{
+  client_state ():
+    own_buf ((char *) xmalloc (PBUFSIZ + 1)) 
+  {}
+
+  /* The thread set with an `Hc' packet.  `Hc' is deprecated in favor of
+     `vCont'.  Note the multi-process extensions made `vCont' a
+     requirement, so `Hc pPID.TID' is pretty much undefined.  So
+     CONT_THREAD can be null_ptid for no `Hc' thread, minus_one_ptid for
+     resuming all threads of the process (again, `Hc' isn't used for
+     multi-process), or a specific thread ptid_t.  */
+  ptid_t cont_thread;
+
+  /* The thread set with an `Hg' packet.  */
+  ptid_t general_thread;
+
+  int multi_process = 0;
+  int report_fork_events = 0;
+  int report_vfork_events = 0;
+  int report_exec_events = 0;
+  int report_thread_events = 0;
+
+  /* True if the "swbreak+" feature is active.  In that case, GDB wants
+     us to report whether a trap is explained by a software breakpoint
+     and for the server to handle PC adjustment if necessary on this
+     target.  Only enabled if the target supports it.  */
+  int swbreak_feature = 0;
+  /* True if the "hwbreak+" feature is active.  In that case, GDB wants
+     us to report whether a trap is explained by a hardware breakpoint.
+     Only enabled if the target supports it.  */
+  int hwbreak_feature = 0;
+
+  /* True if the "vContSupported" feature is active.  In that case, GDB
+     wants us to report whether single step is supported in the reply to
+     "vCont?" packet.  */
+  int vCont_supported = 0;
+
+  /* Whether we should attempt to disable the operating system's address
+     space randomization feature before starting an inferior.  */
+  int disable_randomization = 1;
+
+  int pass_signals[GDB_SIGNAL_LAST];
+  int program_signals[GDB_SIGNAL_LAST];
+  int program_signals_p = 0;
+
+  /* Last status reported to GDB.  */
+  struct target_waitstatus last_status;
+  ptid_t last_ptid;
+
+  char *own_buf;
+
+  /* If true, then GDB has requested noack mode.  */
+  int noack_mode = 0;
+  /* If true, then we tell GDB to use noack mode by default.  */
+  int transport_is_reliable = 0;
+
+  /* The traceframe to be used as the source of data to send back to
+     GDB.  A value of -1 means to get data from the live program.  */
+
+  int current_traceframe = -1;
+
+};
+
+client_state &get_client_state ();
+
+#include "gdbthread.h"
+#include "inferiors.h"
+
+#endif /* GDBSERVER_SERVER_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/symbol.cc ./gdbserver/symbol.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/symbol.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/symbol.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,32 @@
+/* Symbol manipulating routines for the remote server for GDB.
+
+   Copyright (C) 2014-2021 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 "server.h"
+#include "gdbsupport/symbol.h"
+
+/* See gdbsupport/symbol.h.  */
+
+int
+find_minimal_symbol_address (const char *name, CORE_ADDR *addr,
+			     struct objfile *objfile)
+{
+  gdb_assert (objfile == NULL);
+
+  return look_up_one_symbol (name, addr, 1) != 1;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/target.cc ./gdbserver/target.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/target.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/target.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,842 @@
+/* Target operations for the remote server for GDB.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
+
+   Contributed by MontaVista Software.
+
+   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 "server.h"
+#include "tracepoint.h"
+#include "gdbsupport/byte-vector.h"
+#include "hostio.h"
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+process_stratum_target *the_target;
+
+int
+set_desired_thread ()
+{
+  client_state &cs = get_client_state ();
+  thread_info *found = find_thread_ptid (cs.general_thread);
+
+  current_thread = found;
+  return (current_thread != NULL);
+}
+
+/* The thread that was current before prepare_to_access_memory was
+   called.  done_accessing_memory uses this to restore the previous
+   selected thread.  */
+static ptid_t prev_general_thread;
+
+/* See target.h.  */
+
+int
+prepare_to_access_memory (void)
+{
+  client_state &cs = get_client_state ();
+
+  /* The first thread found.  */
+  struct thread_info *first = NULL;
+  /* The first stopped thread found.  */
+  struct thread_info *stopped = NULL;
+  /* The current general thread, if found.  */
+  struct thread_info *current = NULL;
+
+  /* Save the general thread value, since prepare_to_access_memory could change
+     it.  */
+  prev_general_thread = cs.general_thread;
+
+  int res = the_target->prepare_to_access_memory ();
+  if (res != 0)
+    return res;
+
+  for_each_thread (prev_general_thread.pid (), [&] (thread_info *thread)
+    {
+      if (mythread_alive (thread->id))
+	{
+	  if (stopped == NULL && the_target->supports_thread_stopped ()
+	      && target_thread_stopped (thread))
+	    stopped = thread;
+
+	  if (first == NULL)
+	    first = thread;
+
+	  if (current == NULL && prev_general_thread == thread->id)
+	    current = thread;
+	}
+    });
+
+  /* The thread we end up choosing.  */
+  struct thread_info *thread;
+
+  /* Prefer a stopped thread.  If none is found, try the current
+     thread.  Otherwise, take the first thread in the process.  If
+     none is found, undo the effects of
+     target->prepare_to_access_memory() and return error.  */
+  if (stopped != NULL)
+    thread = stopped;
+  else if (current != NULL)
+    thread = current;
+  else if (first != NULL)
+    thread = first;
+  else
+    {
+      done_accessing_memory ();
+      return 1;
+    }
+
+  current_thread = thread;
+  cs.general_thread = ptid_of (thread);
+
+  return 0;
+}
+
+/* See target.h.  */
+
+void
+done_accessing_memory (void)
+{
+  client_state &cs = get_client_state ();
+
+  the_target->done_accessing_memory ();
+
+  /* Restore the previous selected thread.  */
+  cs.general_thread = prev_general_thread;
+  switch_to_thread (the_target, cs.general_thread);
+}
+
+int
+read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
+{
+  int res;
+  res = the_target->read_memory (memaddr, myaddr, len);
+  check_mem_read (memaddr, myaddr, len);
+  return res;
+}
+
+/* See target/target.h.  */
+
+int
+target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
+{
+  return read_inferior_memory (memaddr, myaddr, len);
+}
+
+/* See target/target.h.  */
+
+int
+target_read_uint32 (CORE_ADDR memaddr, uint32_t *result)
+{
+  return read_inferior_memory (memaddr, (gdb_byte *) result, sizeof (*result));
+}
+
+/* See target/target.h.  */
+
+int
+target_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
+		     ssize_t len)
+{
+  /* Make a copy of the data because check_mem_write may need to
+     update it.  */
+  gdb::byte_vector buffer (myaddr, myaddr + len);
+  check_mem_write (memaddr, buffer.data (), myaddr, len);
+  return the_target->write_memory (memaddr, buffer.data (), len);
+}
+
+ptid_t
+mywait (ptid_t ptid, struct target_waitstatus *ourstatus, int options,
+	int connected_wait)
+{
+  ptid_t ret;
+
+  if (connected_wait)
+    server_waiting = 1;
+
+  ret = target_wait (ptid, ourstatus, options);
+
+  /* We don't expose _LOADED events to gdbserver core.  See the
+     `dlls_changed' global.  */
+  if (ourstatus->kind == TARGET_WAITKIND_LOADED)
+    ourstatus->kind = TARGET_WAITKIND_STOPPED;
+
+  /* If GDB is connected through TCP/serial, then GDBserver will most
+     probably be running on its own terminal/console, so it's nice to
+     print there why is GDBserver exiting.  If however, GDB is
+     connected through stdio, then there's no need to spam the GDB
+     console with this -- the user will already see the exit through
+     regular GDB output, in that same terminal.  */
+  if (!remote_connection_is_stdio ())
+    {
+      if (ourstatus->kind == TARGET_WAITKIND_EXITED)
+	fprintf (stderr,
+		 "\nChild exited with status %d\n", ourstatus->value.integer);
+      else if (ourstatus->kind == TARGET_WAITKIND_SIGNALLED)
+	fprintf (stderr, "\nChild terminated with signal = 0x%x (%s)\n",
+		 gdb_signal_to_host (ourstatus->value.sig),
+		 gdb_signal_to_name (ourstatus->value.sig));
+    }
+
+  if (connected_wait)
+    server_waiting = 0;
+
+  return ret;
+}
+
+/* See target/target.h.  */
+
+void
+target_stop_and_wait (ptid_t ptid)
+{
+  struct target_waitstatus status;
+  bool was_non_stop = non_stop;
+  struct thread_resume resume_info;
+
+  resume_info.thread = ptid;
+  resume_info.kind = resume_stop;
+  resume_info.sig = GDB_SIGNAL_0;
+  the_target->resume (&resume_info, 1);
+
+  non_stop = true;
+  mywait (ptid, &status, 0, 0);
+  non_stop = was_non_stop;
+}
+
+/* See target/target.h.  */
+
+ptid_t
+target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
+{
+  return the_target->wait (ptid, status, options);
+}
+
+/* See target/target.h.  */
+
+void
+target_mourn_inferior (ptid_t ptid)
+{
+  the_target->mourn (find_process_pid (ptid.pid ()));
+}
+
+/* See target/target.h.  */
+
+void
+target_continue_no_signal (ptid_t ptid)
+{
+  struct thread_resume resume_info;
+
+  resume_info.thread = ptid;
+  resume_info.kind = resume_continue;
+  resume_info.sig = GDB_SIGNAL_0;
+  the_target->resume (&resume_info, 1);
+}
+
+/* See target/target.h.  */
+
+void
+target_continue (ptid_t ptid, enum gdb_signal signal)
+{
+  struct thread_resume resume_info;
+
+  resume_info.thread = ptid;
+  resume_info.kind = resume_continue;
+  resume_info.sig = gdb_signal_to_host (signal);
+  the_target->resume (&resume_info, 1);
+}
+
+/* See target/target.h.  */
+
+int
+target_supports_multi_process (void)
+{
+  return the_target->supports_multi_process ();
+}
+
+void
+set_target_ops (process_stratum_target *target)
+{
+  the_target = target;
+}
+
+/* Convert pid to printable format.  */
+
+const char *
+target_pid_to_str (ptid_t ptid)
+{
+  static char buf[80];
+
+  if (ptid == minus_one_ptid)
+    xsnprintf (buf, sizeof (buf), "<all threads>");
+  else if (ptid == null_ptid)
+    xsnprintf (buf, sizeof (buf), "<null thread>");
+  else if (ptid.tid () != 0)
+    xsnprintf (buf, sizeof (buf), "Thread %d.0x%lx",
+	       ptid.pid (), ptid.tid ());
+  else if (ptid.lwp () != 0)
+    xsnprintf (buf, sizeof (buf), "LWP %d.%ld",
+	       ptid.pid (), ptid.lwp ());
+  else
+    xsnprintf (buf, sizeof (buf), "Process %d",
+	       ptid.pid ());
+
+  return buf;
+}
+
+int
+kill_inferior (process_info *proc)
+{
+  gdb_agent_about_to_close (proc->pid);
+
+  return the_target->kill (proc);
+}
+
+/* Define it.  */
+
+target_terminal_state target_terminal::m_terminal_state
+  = target_terminal_state::is_ours;
+
+/* See target/target.h.  */
+
+void
+target_terminal::init ()
+{
+  /* Placeholder needed because of fork_inferior.  Not necessary on
+     GDBserver.  */
+}
+
+/* See target/target.h.  */
+
+void
+target_terminal::inferior ()
+{
+  /* Placeholder needed because of fork_inferior.  Not necessary on
+     GDBserver.  */
+}
+
+/* See target/target.h.  */
+
+void
+target_terminal::ours ()
+{
+  /* Placeholder needed because of fork_inferior.  Not necessary on
+     GDBserver.  */
+}
+
+/* See target/target.h.  */
+
+void
+target_terminal::ours_for_output (void)
+{
+  /* Placeholder.  */
+}
+
+/* See target/target.h.  */
+
+void
+target_terminal::info (const char *arg, int from_tty)
+{
+  /* Placeholder.  */
+}
+
+/* Default implementations of target ops.
+   See target.h for definitions.  */
+
+void
+process_stratum_target::post_create_inferior ()
+{
+  /* Nop.  */
+}
+
+int
+process_stratum_target::prepare_to_access_memory ()
+{
+  return 0;
+}
+
+void
+process_stratum_target::done_accessing_memory ()
+{
+  /* Nop.  */
+}
+
+void
+process_stratum_target::look_up_symbols ()
+{
+  /* Nop.  */
+}
+
+bool
+process_stratum_target::supports_read_auxv ()
+{
+  return false;
+}
+
+int
+process_stratum_target::read_auxv (CORE_ADDR offset, unsigned char *myaddr,
+				   unsigned int len)
+{
+  gdb_assert_not_reached ("target op read_auxv not supported");
+}
+
+bool
+process_stratum_target::supports_z_point_type (char z_type)
+{
+  return false;
+}
+
+int
+process_stratum_target::insert_point (enum raw_bkpt_type type,
+				      CORE_ADDR addr,
+				      int size, raw_breakpoint *bp)
+{
+  return 1;
+}
+
+int
+process_stratum_target::remove_point (enum raw_bkpt_type type,
+				      CORE_ADDR addr,
+				      int size, raw_breakpoint *bp)
+{
+  return 1;
+}
+
+bool
+process_stratum_target::stopped_by_sw_breakpoint ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::supports_stopped_by_sw_breakpoint ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::stopped_by_hw_breakpoint ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::supports_stopped_by_hw_breakpoint ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::supports_hardware_single_step ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::stopped_by_watchpoint ()
+{
+  return false;
+}
+
+CORE_ADDR
+process_stratum_target::stopped_data_address ()
+{
+  return 0;
+}
+
+bool
+process_stratum_target::supports_read_offsets ()
+{
+  return false;
+}
+
+int
+process_stratum_target::read_offsets (CORE_ADDR *text, CORE_ADDR *data)
+{
+  gdb_assert_not_reached ("target op read_offsets not supported");
+}
+
+bool
+process_stratum_target::supports_get_tls_address ()
+{
+  return false;
+}
+
+int
+process_stratum_target::get_tls_address (thread_info *thread,
+					 CORE_ADDR offset,
+					 CORE_ADDR load_module,
+					 CORE_ADDR *address)
+{
+  gdb_assert_not_reached ("target op get_tls_address not supported");
+}
+
+void
+process_stratum_target::hostio_last_error (char *buf)
+{
+  hostio_last_error_from_errno (buf);
+}
+
+bool
+process_stratum_target::supports_qxfer_osdata ()
+{
+  return false;
+}
+
+int
+process_stratum_target::qxfer_osdata (const char *annex,
+				      unsigned char *readbuf,
+				      unsigned const char *writebuf,
+				      CORE_ADDR offset, int len)
+{
+  gdb_assert_not_reached ("target op qxfer_osdata not supported");
+}
+
+bool
+process_stratum_target::supports_qxfer_siginfo ()
+{
+  return false;
+}
+
+int
+process_stratum_target::qxfer_siginfo (const char *annex,
+				       unsigned char *readbuf,
+				       unsigned const char *writebuf,
+				       CORE_ADDR offset, int len)
+{
+  gdb_assert_not_reached ("target op qxfer_siginfo not supported");
+}
+
+bool
+process_stratum_target::supports_non_stop ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::async (bool enable)
+{
+  return false;
+}
+
+int
+process_stratum_target::start_non_stop (bool enable)
+{
+  if (enable)
+    return -1;
+  else
+    return 0;
+}
+
+bool
+process_stratum_target::supports_multi_process ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::supports_fork_events ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::supports_vfork_events ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::supports_exec_events ()
+{
+  return false;
+}
+
+void
+process_stratum_target::handle_new_gdb_connection ()
+{
+  /* Nop.  */
+}
+
+int
+process_stratum_target::handle_monitor_command (char *mon)
+{
+  return 0;
+}
+
+int
+process_stratum_target::core_of_thread (ptid_t ptid)
+{
+  return -1;
+}
+
+bool
+process_stratum_target::supports_read_loadmap ()
+{
+  return false;
+}
+
+int
+process_stratum_target::read_loadmap (const char *annex,
+				      CORE_ADDR offset,
+				      unsigned char *myaddr,
+				      unsigned int len)
+{
+  gdb_assert_not_reached ("target op read_loadmap not supported");
+}
+
+void
+process_stratum_target::process_qsupported
+  (gdb::array_view<const char * const> features)
+{
+  /* Nop.  */
+}
+
+bool
+process_stratum_target::supports_tracepoints ()
+{
+  return false;
+}
+
+CORE_ADDR
+process_stratum_target::read_pc (regcache *regcache)
+{
+  gdb_assert_not_reached ("process_target::read_pc: Unable to find PC");
+}
+
+void
+process_stratum_target::write_pc (regcache *regcache, CORE_ADDR pc)
+{
+  gdb_assert_not_reached ("process_target::write_pc: Unable to update PC");
+}
+
+bool
+process_stratum_target::supports_thread_stopped ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::thread_stopped (thread_info *thread)
+{
+  gdb_assert_not_reached ("target op thread_stopped not supported");
+}
+
+bool
+process_stratum_target::supports_get_tib_address ()
+{
+  return false;
+}
+
+int
+process_stratum_target::get_tib_address (ptid_t ptid, CORE_ADDR *address)
+{
+  gdb_assert_not_reached ("target op get_tib_address not supported");
+}
+
+void
+process_stratum_target::pause_all (bool freeze)
+{
+  /* Nop.  */
+}
+
+void
+process_stratum_target::unpause_all (bool unfreeze)
+{
+  /* Nop.  */
+}
+
+void
+process_stratum_target::stabilize_threads ()
+{
+  /* Nop.  */
+}
+
+bool
+process_stratum_target::supports_fast_tracepoints ()
+{
+  return false;
+}
+
+int
+process_stratum_target::install_fast_tracepoint_jump_pad
+  (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector,
+   CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry,
+   CORE_ADDR *trampoline, ULONGEST *trampoline_size,
+   unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size,
+   CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end,
+   char *err)
+{
+  gdb_assert_not_reached ("target op install_fast_tracepoint_jump_pad "
+			  "not supported");
+}
+
+int
+process_stratum_target::get_min_fast_tracepoint_insn_len ()
+{
+  return 0;
+}
+
+struct emit_ops *
+process_stratum_target::emit_ops ()
+{
+  return nullptr;
+}
+
+bool
+process_stratum_target::supports_disable_randomization ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::supports_qxfer_libraries_svr4 ()
+{
+  return false;
+}
+
+int
+process_stratum_target::qxfer_libraries_svr4 (const char *annex,
+					      unsigned char *readbuf,
+					      unsigned const char *writebuf,
+					      CORE_ADDR offset, int len)
+{
+  gdb_assert_not_reached ("target op qxfer_libraries_svr4 not supported");
+}
+
+bool
+process_stratum_target::supports_agent ()
+{
+  return false;
+}
+
+btrace_target_info *
+process_stratum_target::enable_btrace (ptid_t ptid, const btrace_config *conf)
+{
+  error (_("Target does not support branch tracing."));
+}
+
+int
+process_stratum_target::disable_btrace (btrace_target_info *tinfo)
+{
+  error (_("Target does not support branch tracing."));
+}
+
+int
+process_stratum_target::read_btrace (btrace_target_info *tinfo,
+			     buffer *buffer,
+			     enum btrace_read_type type)
+{
+  error (_("Target does not support branch tracing."));
+}
+
+int
+process_stratum_target::read_btrace_conf (const btrace_target_info *tinfo,
+					  buffer *buffer)
+{
+  error (_("Target does not support branch tracing."));
+}
+
+bool
+process_stratum_target::supports_range_stepping ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::supports_pid_to_exec_file ()
+{
+  return false;
+}
+
+char *
+process_stratum_target::pid_to_exec_file (int pid)
+{
+  gdb_assert_not_reached ("target op pid_to_exec_file not supported");
+}
+
+bool
+process_stratum_target::supports_multifs ()
+{
+  return false;
+}
+
+int
+process_stratum_target::multifs_open (int pid, const char *filename,
+				      int flags, mode_t mode)
+{
+  return open (filename, flags, mode);
+}
+
+int
+process_stratum_target::multifs_unlink (int pid, const char *filename)
+{
+  return unlink (filename);
+}
+
+ssize_t
+process_stratum_target::multifs_readlink (int pid, const char *filename,
+					  char *buf, size_t bufsiz)
+{
+  return readlink (filename, buf, bufsiz);
+}
+
+int
+process_stratum_target::breakpoint_kind_from_pc (CORE_ADDR *pcptr)
+{
+  /* The default behavior is to use the size of a breakpoint as the
+     kind.  */
+  int size = 0;
+  sw_breakpoint_from_kind (0, &size);
+  return size;
+}
+
+int
+process_stratum_target::breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
+{
+  return breakpoint_kind_from_pc (pcptr);
+}
+
+const char *
+process_stratum_target::thread_name (ptid_t thread)
+{
+  return nullptr;
+}
+
+bool
+process_stratum_target::thread_handle (ptid_t ptid, gdb_byte **handle,
+				       int *handle_len)
+{
+  return false;
+}
+
+bool
+process_stratum_target::supports_software_single_step ()
+{
+  return false;
+}
+
+bool
+process_stratum_target::supports_catch_syscall ()
+{
+  return false;
+}
+
+int
+process_stratum_target::get_ipa_tdesc_idx ()
+{
+  return 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/target.h ./gdbserver/target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/target.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/target.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,690 @@
+/* Target operations for the remote server for GDB.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
+
+   Contributed by MontaVista Software.
+
+   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 GDBSERVER_TARGET_H
+#define GDBSERVER_TARGET_H
+
+#include <sys/types.h> /* for mode_t */
+#include "target/target.h"
+#include "target/resume.h"
+#include "target/wait.h"
+#include "target/waitstatus.h"
+#include "mem-break.h"
+#include "gdbsupport/array-view.h"
+#include "gdbsupport/btrace-common.h"
+#include <vector>
+
+struct emit_ops;
+struct buffer;
+struct process_info;
+
+/* This structure describes how to resume a particular thread (or all
+   threads) based on the client's request.  If thread is -1, then this
+   entry applies to all threads.  These are passed around as an
+   array.  */
+
+struct thread_resume
+{
+  ptid_t thread;
+
+  /* How to "resume".  */
+  enum resume_kind kind;
+
+  /* If non-zero, send this signal when we resume, or to stop the
+     thread.  If stopping a thread, and this is 0, the target should
+     stop the thread however it best decides to (e.g., SIGSTOP on
+     linux; SuspendThread on win32).  This is a host signal value (not
+     enum gdb_signal).  */
+  int sig;
+
+  /* Range to single step within.  Valid only iff KIND is resume_step.
+
+     Single-step once, and then continuing stepping as long as the
+     thread stops in this range.  (If the range is empty
+     [STEP_RANGE_START == STEP_RANGE_END], then this is a single-step
+     request.)  */
+  CORE_ADDR step_range_start;	/* Inclusive */
+  CORE_ADDR step_range_end;	/* Exclusive */
+};
+
+/* GDBserver doesn't have a concept of strata like GDB, but we call
+   its target vector "process_stratum" anyway for the benefit of
+   shared code.  */
+
+class process_stratum_target
+{
+public:
+
+  virtual ~process_stratum_target () = default;
+
+  /* Start a new process.
+
+     PROGRAM is a path to the program to execute.
+     PROGRAM_ARGS is a standard NULL-terminated array of arguments,
+     to be passed to the inferior as ``argv'' (along with PROGRAM).
+
+     Returns the new PID on success, -1 on failure.  Registers the new
+     process with the process list.  */
+  virtual int create_inferior (const char *program,
+			       const std::vector<char *> &program_args) = 0;
+
+  /* Do additional setup after a new process is created, including
+     exec-wrapper completion.  */
+  virtual void post_create_inferior ();
+
+  /* Attach to a running process.
+
+     PID is the process ID to attach to, specified by the user
+     or a higher layer.
+
+     Returns -1 if attaching is unsupported, 0 on success, and calls
+     error() otherwise.  */
+  virtual int attach (unsigned long pid) = 0;
+
+  /* Kill process PROC.  Return -1 on failure, and 0 on success.  */
+  virtual int kill (process_info *proc) = 0;
+
+  /* Detach from process PROC.  Return -1 on failure, and 0 on
+     success.  */
+  virtual int detach (process_info *proc) = 0;
+
+  /* The inferior process has died.  Do what is right.  */
+  virtual void mourn (process_info *proc) = 0;
+
+  /* Wait for process PID to exit.  */
+  virtual void join (int pid) = 0;
+
+  /* Return true iff the thread with process ID PID is alive.  */
+  virtual bool thread_alive (ptid_t pid) = 0;
+
+  /* Resume the inferior process.  */
+  virtual void resume (thread_resume *resume_info, size_t n) = 0;
+
+  /* Wait for the inferior process or thread to change state.  Store
+     status through argument pointer STATUS.
+
+     PTID = -1 to wait for any pid to do something, PTID(pid,0,0) to
+     wait for any thread of process pid to do something.  Return ptid
+     of child, or -1 in case of error; store status through argument
+     pointer STATUS.  OPTIONS is a bit set of options defined as
+     TARGET_W* above.  If options contains TARGET_WNOHANG and there's
+     no child stop to report, return is
+     null_ptid/TARGET_WAITKIND_IGNORE.  */
+  virtual ptid_t wait (ptid_t ptid, target_waitstatus *status,
+		       int options) = 0;
+
+  /* Fetch registers from the inferior process.
+
+     If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO.  */
+  virtual void fetch_registers (regcache *regcache, int regno) = 0;
+
+  /* Store registers to the inferior process.
+
+     If REGNO is -1, store all registers; otherwise, store at least REGNO.  */
+  virtual void store_registers (regcache *regcache, int regno) = 0;
+
+  /* Prepare to read or write memory from the inferior process.
+     Targets use this to do what is necessary to get the state of the
+     inferior such that it is possible to access memory.
+
+     This should generally only be called from client facing routines,
+     such as gdb_read_memory/gdb_write_memory, or the GDB breakpoint
+     insertion routine.
+
+     Like `read_memory' and `write_memory' below, returns 0 on success
+     and errno on failure.  */
+  virtual int prepare_to_access_memory ();
+
+  /* Undo the effects of prepare_to_access_memory.  */
+  virtual void done_accessing_memory ();
+
+  /* Read memory from the inferior process.  This should generally be
+     called through read_inferior_memory, which handles breakpoint shadowing.
+
+     Read LEN bytes at MEMADDR into a buffer at MYADDR.
+
+     Returns 0 on success and errno on failure.  */
+  virtual int read_memory (CORE_ADDR memaddr, unsigned char *myaddr,
+			   int len) = 0;
+
+  /* Write memory to the inferior process.  This should generally be
+     called through target_write_memory, which handles breakpoint shadowing.
+
+     Write LEN bytes from the buffer at MYADDR to MEMADDR.
+
+     Returns 0 on success and errno on failure.  */
+  virtual int write_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
+			    int len) = 0;
+
+  /* Query GDB for the values of any symbols we're interested in.
+     This function is called whenever we receive a "qSymbols::"
+     query, which corresponds to every time more symbols (might)
+     become available.  */
+  virtual void look_up_symbols ();
+
+  /* Send an interrupt request to the inferior process,
+     however is appropriate.  */
+  virtual void request_interrupt () = 0;
+
+  /* Return true if the read_auxv target op is supported.  */
+  virtual bool supports_read_auxv ();
+
+  /* Read auxiliary vector data from the inferior process.
+
+     Read LEN bytes at OFFSET into a buffer at MYADDR.  */
+  virtual int read_auxv (CORE_ADDR offset, unsigned char *myaddr,
+			 unsigned int len);
+
+  /* Returns true if GDB Z breakpoint type TYPE is supported, false
+     otherwise.  The type is coded as follows:
+       '0' - software-breakpoint
+       '1' - hardware-breakpoint
+       '2' - write watchpoint
+       '3' - read watchpoint
+       '4' - access watchpoint
+  */
+  virtual bool supports_z_point_type (char z_type);
+
+  /* Insert and remove a break or watchpoint.
+     Returns 0 on success, -1 on failure and 1 on unsupported.  */
+  virtual int insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
+			    int size, raw_breakpoint *bp);
+
+  virtual int remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
+			    int size, raw_breakpoint *bp);
+
+  /* Returns true if the target stopped because it executed a software
+     breakpoint instruction, false otherwise.  */
+  virtual bool stopped_by_sw_breakpoint ();
+
+  /* Returns true if the target knows whether a trap was caused by a
+     SW breakpoint triggering.  */
+  virtual bool supports_stopped_by_sw_breakpoint ();
+
+  /* Returns true if the target stopped for a hardware breakpoint.  */
+  virtual bool stopped_by_hw_breakpoint ();
+
+  /* Returns true if the target knows whether a trap was caused by a
+     HW breakpoint triggering.  */
+  virtual bool supports_stopped_by_hw_breakpoint ();
+
+  /* Returns true if the target can do hardware single step.  */
+  virtual bool supports_hardware_single_step ();
+
+  /* Returns true if target was stopped due to a watchpoint hit, false
+     otherwise.  */
+  virtual bool stopped_by_watchpoint ();
+
+  /* Returns the address associated with the watchpoint that hit, if any;
+     returns 0 otherwise.  */
+  virtual CORE_ADDR stopped_data_address ();
+
+  /* Return true if the read_offsets target op is supported.  */
+  virtual bool supports_read_offsets ();
+
+  /* Reports the text, data offsets of the executable.  This is
+     needed for uclinux where the executable is relocated during load
+     time.  */
+  virtual int read_offsets (CORE_ADDR *text, CORE_ADDR *data);
+
+  /* Return true if the get_tls_address target op is supported.  */
+  virtual bool supports_get_tls_address ();
+
+  /* Fetch the address associated with a specific thread local storage
+     area, determined by the specified THREAD, OFFSET, and LOAD_MODULE.
+     Stores it in *ADDRESS and returns zero on success; otherwise returns
+     an error code.  A return value of -1 means this system does not
+     support the operation.  */
+  virtual int get_tls_address (thread_info *thread, CORE_ADDR offset,
+			       CORE_ADDR load_module, CORE_ADDR *address);
+
+  /* Fill BUF with an hostio error packet representing the last hostio
+     error.  */
+  virtual void hostio_last_error (char *buf);
+
+  /* Return true if the qxfer_osdata target op is supported.  */
+  virtual bool supports_qxfer_osdata ();
+
+  /* Read/Write OS data using qXfer packets.  */
+  virtual int qxfer_osdata (const char *annex, unsigned char *readbuf,
+			    unsigned const char *writebuf,
+			    CORE_ADDR offset, int len);
+
+  /* Return true if the qxfer_siginfo target op is supported.  */
+  virtual bool supports_qxfer_siginfo ();
+
+  /* Read/Write extra signal info.  */
+  virtual int qxfer_siginfo (const char *annex, unsigned char *readbuf,
+			     unsigned const char *writebuf,
+			     CORE_ADDR offset, int len);
+
+  /* Return true if non-stop mode is supported.  */
+  virtual bool supports_non_stop ();
+
+  /* Enables async target events.  Returns the previous enable
+     state.  */
+  virtual bool async (bool enable);
+
+  /* Switch to non-stop (ENABLE == true) or all-stop (ENABLE == false)
+     mode.  Return 0 on success, -1 otherwise.  */
+  virtual int start_non_stop (bool enable);
+
+  /* Returns true if the target supports multi-process debugging.  */
+  virtual bool supports_multi_process ();
+
+  /* Returns true if fork events are supported.  */
+  virtual bool supports_fork_events ();
+
+  /* Returns true if vfork events are supported.  */
+  virtual bool supports_vfork_events ();
+
+  /* Returns true if exec events are supported.  */
+  virtual bool supports_exec_events ();
+
+  /* Allows target to re-initialize connection-specific settings.  */
+  virtual void handle_new_gdb_connection ();
+
+  /* The target-specific routine to process monitor command.
+     Returns 1 if handled, or 0 to perform default processing.  */
+  virtual int handle_monitor_command (char *mon);
+
+  /* Returns the core given a thread, or -1 if not known.  */
+  virtual int core_of_thread (ptid_t ptid);
+
+  /* Returns true if the read_loadmap target op is supported.  */
+  virtual bool supports_read_loadmap ();
+
+  /* Read loadmaps.  Read LEN bytes at OFFSET into a buffer at MYADDR.  */
+  virtual int read_loadmap (const char *annex, CORE_ADDR offset,
+			    unsigned char *myaddr, unsigned int len);
+
+  /* Target specific qSupported support.  FEATURES is an array of
+     features unsupported by the core of GDBserver.  */
+  virtual void process_qsupported
+    (gdb::array_view<const char * const> features);
+
+  /* Return true if the target supports tracepoints, false otherwise.  */
+  virtual bool supports_tracepoints ();
+
+  /* Read PC from REGCACHE.  */
+  virtual CORE_ADDR read_pc (regcache *regcache);
+
+  /* Write PC to REGCACHE.  */
+  virtual void write_pc (regcache *regcache, CORE_ADDR pc);
+
+  /* Return true if the thread_stopped op is supported.  */
+  virtual bool supports_thread_stopped ();
+
+  /* Return true if THREAD is known to be stopped now.  */
+  virtual bool thread_stopped (thread_info *thread);
+
+  /* Return true if the get_tib_address op is supported.  */
+  virtual bool supports_get_tib_address ();
+
+  /* Read Thread Information Block address.  */
+  virtual int get_tib_address (ptid_t ptid, CORE_ADDR *address);
+
+  /* Pause all threads.  If FREEZE, arrange for any resume attempt to
+     be ignored until an unpause_all call unfreezes threads again.
+     There can be nested calls to pause_all, so a freeze counter
+     should be maintained.  */
+  virtual void pause_all (bool freeze);
+
+  /* Unpause all threads.  Threads that hadn't been resumed by the
+     client should be left stopped.  Basically a pause/unpause call
+     pair should not end up resuming threads that were stopped before
+     the pause call.  */
+  virtual void unpause_all (bool unfreeze);
+
+  /* Stabilize all threads.  That is, force them out of jump pads.  */
+  virtual void stabilize_threads ();
+
+  /* Return true if the install_fast_tracepoint_jump_pad op is
+     supported.  */
+  virtual bool supports_fast_tracepoints ();
+
+  /* Install a fast tracepoint jump pad.  TPOINT is the address of the
+     tracepoint internal object as used by the IPA agent.  TPADDR is
+     the address of tracepoint.  COLLECTOR is address of the function
+     the jump pad redirects to.  LOCKADDR is the address of the jump
+     pad lock object.  ORIG_SIZE is the size in bytes of the
+     instruction at TPADDR.  JUMP_ENTRY points to the address of the
+     jump pad entry, and on return holds the address past the end of
+     the created jump pad.  If a trampoline is created by the function,
+     then TRAMPOLINE and TRAMPOLINE_SIZE return the address and size of
+     the trampoline, else they remain unchanged.  JJUMP_PAD_INSN is a
+     buffer containing a copy of the instruction at TPADDR.
+     ADJUST_INSN_ADDR and ADJUST_INSN_ADDR_END are output parameters that
+     return the address range where the instruction at TPADDR was relocated
+     to.  If an error occurs, the ERR may be used to pass on an error
+     message.  */
+  virtual int install_fast_tracepoint_jump_pad
+    (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector,
+     CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry,
+     CORE_ADDR *trampoline, ULONGEST *trampoline_size,
+     unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size,
+     CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end,
+     char *err);
+
+  /* Return the minimum length of an instruction that can be safely
+     overwritten for use as a fast tracepoint.  */
+  virtual int get_min_fast_tracepoint_insn_len ();
+
+  /* Return the bytecode operations vector for the current inferior.
+     Returns nullptr if bytecode compilation is not supported.  */
+  virtual struct emit_ops *emit_ops ();
+
+  /* Returns true if the target supports disabling randomization.  */
+  virtual bool supports_disable_randomization ();
+
+  /* Return true if the qxfer_libraries_svr4 op is supported.  */
+  virtual bool supports_qxfer_libraries_svr4 ();
+
+  /* Read solib info on SVR4 platforms.  */
+  virtual int qxfer_libraries_svr4 (const char *annex,
+				    unsigned char *readbuf,
+				    unsigned const char *writebuf,
+				    CORE_ADDR offset, int len);
+
+  /* Return true if target supports debugging agent.  */
+  virtual bool supports_agent ();
+
+  /* Enable branch tracing for PTID based on CONF and allocate a branch trace
+     target information struct for reading and for disabling branch trace.  */
+  virtual btrace_target_info *enable_btrace (ptid_t ptid,
+					     const btrace_config *conf);
+
+  /* Disable branch tracing.
+     Returns zero on success, non-zero otherwise.  */
+  virtual int disable_btrace (btrace_target_info *tinfo);
+
+  /* Read branch trace data into buffer.
+     Return 0 on success; print an error message into BUFFER and return -1,
+     otherwise.  */
+  virtual int read_btrace (btrace_target_info *tinfo, buffer *buf,
+			   enum btrace_read_type type);
+
+  /* Read the branch trace configuration into BUFFER.
+     Return 0 on success; print an error message into BUFFER and return -1
+     otherwise.  */
+  virtual int read_btrace_conf (const btrace_target_info *tinfo,
+				buffer *buf);
+
+  /* Return true if target supports range stepping.  */
+  virtual bool supports_range_stepping ();
+
+  /* Return true if the pid_to_exec_file op is supported.  */
+  virtual bool supports_pid_to_exec_file ();
+
+  /* Return the full absolute name of the executable file that was
+     run to create the process PID.  If the executable file cannot
+     be determined, NULL is returned.  Otherwise, a pointer to a
+     character string containing the pathname is returned.  This
+     string should be copied into a buffer by the client if the string
+     will not be immediately used, or if it must persist.  */
+  virtual char *pid_to_exec_file (int pid);
+
+  /* Return true if any of the multifs ops is supported.  */
+  virtual bool supports_multifs ();
+
+  /* Multiple-filesystem-aware open.  Like open(2), but operating in
+     the filesystem as it appears to process PID.  Systems where all
+     processes share a common filesystem should not override this.
+     The default behavior is to use open(2).  */
+  virtual int multifs_open (int pid, const char *filename,
+			    int flags, mode_t mode);
+
+  /* Multiple-filesystem-aware unlink.  Like unlink(2), but operates
+     in the filesystem as it appears to process PID.  Systems where
+     all processes share a common filesystem should not override this.
+     The default behavior is to use unlink(2).  */
+  virtual int multifs_unlink (int pid, const char *filename);
+
+  /* Multiple-filesystem-aware readlink.  Like readlink(2), but
+     operating in the filesystem as it appears to process PID.
+     Systems where all processes share a common filesystem should
+     not override this.  The default behavior is to use readlink(2).  */
+  virtual ssize_t multifs_readlink (int pid, const char *filename,
+				    char *buf, size_t bufsiz);
+
+  /* Return the breakpoint kind for this target based on PC.  The
+     PCPTR is adjusted to the real memory location in case a flag
+     (e.g., the Thumb bit on ARM) was present in the PC.  */
+  virtual int breakpoint_kind_from_pc (CORE_ADDR *pcptr);
+
+  /* Return the software breakpoint from KIND.  KIND can have target
+     specific meaning like the Z0 kind parameter.
+     SIZE is set to the software breakpoint's length in memory.  */
+  virtual const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) = 0;
+
+  /* Return the breakpoint kind for this target based on the current
+     processor state (e.g. the current instruction mode on ARM) and the
+     PC.  The PCPTR is adjusted to the real memory location in case a
+     flag (e.g., the Thumb bit on ARM) is present in the  PC.  */
+  virtual int breakpoint_kind_from_current_state (CORE_ADDR *pcptr);
+
+  /* Return the thread's name, or NULL if the target is unable to
+     determine it.  The returned value must not be freed by the
+     caller.  */
+  virtual const char *thread_name (ptid_t thread);
+
+  /* Thread ID to (numeric) thread handle: Return true on success and
+     false for failure.  Return pointer to thread handle via HANDLE
+     and the handle's length via HANDLE_LEN.  */
+  virtual bool thread_handle (ptid_t ptid, gdb_byte **handle,
+			      int *handle_len);
+
+  /* Returns true if the target can software single step.  */
+  virtual bool supports_software_single_step ();
+
+  /* Return true if the target supports catch syscall.  */
+  virtual bool supports_catch_syscall ();
+
+  /* Return tdesc index for IPA.  */
+  virtual int get_ipa_tdesc_idx ();
+};
+
+extern process_stratum_target *the_target;
+
+void set_target_ops (process_stratum_target *);
+
+#define target_create_inferior(program, program_args)	\
+  the_target->create_inferior (program, program_args)
+
+#define target_post_create_inferior()			 \
+  the_target->post_create_inferior ()
+
+#define myattach(pid) \
+  the_target->attach (pid)
+
+int kill_inferior (process_info *proc);
+
+#define target_supports_fork_events() \
+  the_target->supports_fork_events ()
+
+#define target_supports_vfork_events() \
+  the_target->supports_vfork_events ()
+
+#define target_supports_exec_events() \
+  the_target->supports_exec_events ()
+
+#define target_handle_new_gdb_connection()		 \
+  the_target->handle_new_gdb_connection ()
+
+#define detach_inferior(proc) \
+  the_target->detach (proc)
+
+#define mythread_alive(pid) \
+  the_target->thread_alive (pid)
+
+#define fetch_inferior_registers(regcache, regno)	\
+  the_target->fetch_registers (regcache, regno)
+
+#define store_inferior_registers(regcache, regno) \
+  the_target->store_registers (regcache, regno)
+
+#define join_inferior(pid) \
+  the_target->join (pid)
+
+#define target_supports_non_stop() \
+  the_target->supports_non_stop ()
+
+#define target_async(enable) \
+  the_target->async (enable)
+
+#define target_process_qsupported(features) \
+  the_target->process_qsupported (features)
+
+#define target_supports_catch_syscall()              	\
+  the_target->supports_catch_syscall ()
+
+#define target_get_ipa_tdesc_idx()			\
+  the_target->get_ipa_tdesc_idx ()
+
+#define target_supports_tracepoints()			\
+  the_target->supports_tracepoints ()
+
+#define target_supports_fast_tracepoints()		\
+  the_target->supports_fast_tracepoints ()
+
+#define target_get_min_fast_tracepoint_insn_len()	\
+  the_target->get_min_fast_tracepoint_insn_len ()
+
+#define target_thread_stopped(thread) \
+  the_target->thread_stopped (thread)
+
+#define target_pause_all(freeze)		\
+  the_target->pause_all (freeze)
+
+#define target_unpause_all(unfreeze)		\
+  the_target->unpause_all (unfreeze)
+
+#define target_stabilize_threads()		\
+  the_target->stabilize_threads ()
+
+#define target_install_fast_tracepoint_jump_pad(tpoint, tpaddr,		\
+						collector, lockaddr,	\
+						orig_size,		\
+						jump_entry,		\
+						trampoline, trampoline_size, \
+						jjump_pad_insn,		\
+						jjump_pad_insn_size,	\
+						adjusted_insn_addr,	\
+						adjusted_insn_addr_end,	\
+						err)			\
+  the_target->install_fast_tracepoint_jump_pad (tpoint, tpaddr,	\
+						collector,lockaddr,	\
+						orig_size, jump_entry,	\
+						trampoline,		\
+						trampoline_size,	\
+						jjump_pad_insn,		\
+						jjump_pad_insn_size,	\
+						adjusted_insn_addr,	\
+						adjusted_insn_addr_end, \
+						err)
+
+#define target_emit_ops() \
+  the_target->emit_ops ()
+
+#define target_supports_disable_randomization() \
+  the_target->supports_disable_randomization ()
+
+#define target_supports_agent() \
+  the_target->supports_agent ()
+
+static inline struct btrace_target_info *
+target_enable_btrace (ptid_t ptid, const struct btrace_config *conf)
+{
+  return the_target->enable_btrace (ptid, conf);
+}
+
+static inline int
+target_disable_btrace (struct btrace_target_info *tinfo)
+{
+  return the_target->disable_btrace (tinfo);
+}
+
+static inline int
+target_read_btrace (struct btrace_target_info *tinfo,
+		    struct buffer *buffer,
+		    enum btrace_read_type type)
+{
+  return the_target->read_btrace (tinfo, buffer, type);
+}
+
+static inline int
+target_read_btrace_conf (struct btrace_target_info *tinfo,
+			 struct buffer *buffer)
+{
+  return the_target->read_btrace_conf (tinfo, buffer);
+}
+
+#define target_supports_range_stepping() \
+  the_target->supports_range_stepping ()
+
+#define target_supports_stopped_by_sw_breakpoint() \
+  the_target->supports_stopped_by_sw_breakpoint ()
+
+#define target_stopped_by_sw_breakpoint() \
+  the_target->stopped_by_sw_breakpoint ()
+
+#define target_supports_stopped_by_hw_breakpoint() \
+  the_target->supports_stopped_by_hw_breakpoint ()
+
+#define target_supports_hardware_single_step() \
+  the_target->supports_hardware_single_step ()
+
+#define target_stopped_by_hw_breakpoint() \
+  the_target->stopped_by_hw_breakpoint ()
+
+#define target_breakpoint_kind_from_pc(pcptr) \
+  the_target->breakpoint_kind_from_pc (pcptr)
+
+#define target_breakpoint_kind_from_current_state(pcptr) \
+  the_target->breakpoint_kind_from_current_state (pcptr)
+
+#define target_supports_software_single_step() \
+  the_target->supports_software_single_step ()
+
+ptid_t mywait (ptid_t ptid, struct target_waitstatus *ourstatus, int options,
+	       int connected_wait);
+
+/* Prepare to read or write memory from the inferior process.  See the
+   corresponding process_stratum_target methods for more details.  */
+
+int prepare_to_access_memory (void);
+void done_accessing_memory (void);
+
+#define target_core_of_thread(ptid)		\
+  the_target->core_of_thread (ptid)
+
+#define target_thread_name(ptid)                                \
+  the_target->thread_name (ptid)
+
+#define target_thread_handle(ptid, handle, handle_len) \
+  the_target->thread_handle (ptid, handle, handle_len)
+
+int read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len);
+
+int set_desired_thread ();
+
+const char *target_pid_to_str (ptid_t);
+
+#endif /* GDBSERVER_TARGET_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/tdesc.cc ./gdbserver/tdesc.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/tdesc.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/tdesc.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,235 @@
+/* Copyright (C) 2012-2021 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 "server.h"
+#include "tdesc.h"
+#include "regdef.h"
+
+#ifndef IN_PROCESS_AGENT
+
+target_desc::~target_desc ()
+{
+  xfree ((char *) arch);
+  xfree ((char *) osabi);
+}
+
+bool target_desc::operator== (const target_desc &other) const
+{
+  if (reg_defs != other.reg_defs)
+    return false;
+
+  /* Compare expedite_regs.  */
+  int i = 0;
+  for (; expedite_regs[i] != NULL; i++)
+    {
+      if (strcmp (expedite_regs[i], other.expedite_regs[i]) != 0)
+	return false;
+    }
+  if (other.expedite_regs[i] != NULL)
+    return false;
+
+  return true;
+}
+
+#endif
+
+void target_desc::accept (tdesc_element_visitor &v) const
+{
+#ifndef IN_PROCESS_AGENT
+  v.visit_pre (this);
+
+  for (const tdesc_feature_up &feature : features)
+    feature->accept (v);
+
+  v.visit_post (this);
+#endif
+}
+
+void
+init_target_desc (struct target_desc *tdesc,
+		  const char **expedite_regs)
+{
+  int offset = 0;
+
+  /* Go through all the features and populate reg_defs.  */
+  for (const tdesc_feature_up &feature : tdesc->features)
+    for (const tdesc_reg_up &treg : feature->registers)
+      {
+	int regnum = treg->target_regnum;
+
+	/* Register number will increase (possibly with gaps) or be zero.  */
+	gdb_assert (regnum == 0 || regnum >= tdesc->reg_defs.size ());
+
+	if (regnum != 0)
+	  tdesc->reg_defs.resize (regnum, gdb::reg (offset));
+
+	tdesc->reg_defs.emplace_back (treg->name.c_str (), offset,
+				      treg->bitsize);
+	offset += treg->bitsize;
+      }
+
+  tdesc->registers_size = offset / 8;
+
+  /* Make sure PBUFSIZ is large enough to hold a full register
+     packet.  */
+  gdb_assert (2 * tdesc->registers_size + 32 <= PBUFSIZ);
+
+#ifndef IN_PROCESS_AGENT
+  tdesc->expedite_regs = expedite_regs;
+#endif
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+struct target_desc *
+allocate_target_description (void)
+{
+  return new target_desc ();
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+void
+target_desc_deleter::operator() (struct target_desc *target_desc) const
+{
+  delete target_desc;
+}
+
+#ifndef IN_PROCESS_AGENT
+
+static const struct target_desc default_description {};
+
+void
+copy_target_description (struct target_desc *dest,
+			 const struct target_desc *src)
+{
+  dest->reg_defs = src->reg_defs;
+  dest->expedite_regs = src->expedite_regs;
+  dest->registers_size = src->registers_size;
+  dest->xmltarget = src->xmltarget;
+}
+
+const struct target_desc *
+current_target_desc (void)
+{
+  if (current_thread == NULL)
+    return &default_description;
+
+  return current_process ()->tdesc;
+}
+
+/* An empty structure.  */
+
+struct tdesc_compatible_info { };
+
+/* See gdbsupport/tdesc.h.  */
+
+const std::vector<tdesc_compatible_info_up> &
+tdesc_compatible_info_list (const target_desc *target_desc)
+{
+  static std::vector<tdesc_compatible_info_up> empty;
+  return empty;
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+const char *
+tdesc_compatible_info_arch_name (const tdesc_compatible_info_up &c_info)
+{
+  return nullptr;
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+const char *
+tdesc_architecture_name (const struct target_desc *target_desc)
+{
+  return target_desc->arch;
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+void
+set_tdesc_architecture (struct target_desc *target_desc,
+			const char *name)
+{
+  target_desc->arch = xstrdup (name);
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+const char *
+tdesc_osabi_name (const struct target_desc *target_desc)
+{
+  return target_desc->osabi;
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+void
+set_tdesc_osabi (struct target_desc *target_desc, const char *name)
+{
+  target_desc->osabi = xstrdup (name);
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+const char *
+tdesc_get_features_xml (const target_desc *tdesc)
+{
+  /* Either .xmltarget or .features is not NULL.  */
+  gdb_assert (tdesc->xmltarget != NULL
+	      || (!tdesc->features.empty ()
+		  && tdesc->arch != NULL));
+
+  if (tdesc->xmltarget == NULL)
+    {
+      std::string buffer ("@");
+      print_xml_feature v (&buffer);
+      tdesc->accept (v);
+      tdesc->xmltarget = xstrdup (buffer.c_str ());
+    }
+
+  return tdesc->xmltarget;
+}
+#endif
+
+/* See gdbsupport/tdesc.h.  */
+
+struct tdesc_feature *
+tdesc_create_feature (struct target_desc *tdesc, const char *name)
+{
+  struct tdesc_feature *new_feature = new tdesc_feature (name);
+  tdesc->features.emplace_back (new_feature);
+  return new_feature;
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+bool
+tdesc_contains_feature (const target_desc *tdesc, const std::string &feature)
+{
+  gdb_assert (tdesc != nullptr);
+
+  for (const tdesc_feature_up &f : tdesc->features)
+    {
+      if (f->name == feature)
+	return true;
+    }
+
+  return false;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/tdesc.h ./gdbserver/tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/tdesc.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,101 @@
+/* Target description definitions for remote server for GDB.
+   Copyright (C) 2012-2021 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 GDBSERVER_TDESC_H
+#define GDBSERVER_TDESC_H
+
+#include "gdbsupport/tdesc.h"
+
+#include "regdef.h"
+#include <vector>
+
+/* A target description.  Inherit from tdesc_feature so that target_desc
+   can be used as tdesc_feature.  */
+
+struct target_desc final : tdesc_element
+{
+  /* A vector of elements of register definitions that
+     describe the inferior's register set.  */
+  std::vector<struct gdb::reg> reg_defs;
+
+  /* The register cache size, in bytes.  */
+  int registers_size;
+
+  /* XML features in this target description.  */
+  std::vector<tdesc_feature_up> features;
+
+#ifndef IN_PROCESS_AGENT
+  /* An array of register names.  These are the "expedite" registers:
+     registers whose values are sent along with stop replies.  */
+  const char **expedite_regs = NULL;
+
+  /* Defines what to return when looking for the "target.xml" file in
+     response to qXfer:features:read.  Its contents can either be
+     verbatim XML code (prefixed with a '@') or else the name of the
+     actual XML file to be used in place of "target.xml".
+
+     If NULL then its content will be generated by parsing the target
+     description into xml.  */
+  mutable const char *xmltarget = NULL;
+
+  /* The value of <architecture> element in the XML, replying GDB.  */
+  const char *arch = NULL;
+
+  /* The value of <osabi> element in the XML, replying GDB.  */
+  const char *osabi = NULL;
+
+public:
+  target_desc ()
+    : registers_size (0)
+  {}
+
+  ~target_desc ();
+
+  bool operator== (const target_desc &other) const;
+
+  bool operator!= (const target_desc &other) const
+  {
+    return !(*this == other);
+  }
+#endif
+
+  void accept (tdesc_element_visitor &v) const override;
+};
+
+/* Copy target description SRC to DEST.  */
+
+void copy_target_description (struct target_desc *dest,
+			      const struct target_desc *src);
+
+/* Initialize TDESC, and then set its expedite_regs field to
+   EXPEDITE_REGS.  */
+
+void init_target_desc (struct target_desc *tdesc,
+		       const char **expedite_regs);
+
+/* Return the current inferior's target description.  Never returns
+   NULL.  */
+
+const struct target_desc *current_target_desc (void);
+
+/* Return true if TDESC contains the feature described by string FEATURE.
+   Return false otherwise.  */
+bool tdesc_contains_feature (const target_desc *tdesc,
+			     const std::string &feature);
+
+#endif /* GDBSERVER_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/thread-db.cc ./gdbserver/thread-db.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/thread-db.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/thread-db.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,902 @@
+/* Thread management interface, for the remote server for GDB.
+   Copyright (C) 2002-2021 Free Software Foundation, Inc.
+
+   Contributed by MontaVista Software.
+
+   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 "server.h"
+
+#include "linux-low.h"
+
+#include "debug.h"
+#include "gdb_proc_service.h"
+#include "nat/gdb_thread_db.h"
+#include "gdbsupport/gdb_vecs.h"
+#include "nat/linux-procfs.h"
+#include "gdbsupport/scoped_restore.h"
+
+#ifndef USE_LIBTHREAD_DB_DIRECTLY
+#include <dlfcn.h>
+#endif
+#include <limits.h>
+#include <ctype.h>
+
+struct thread_db
+{
+  /* Structure that identifies the child process for the
+     <proc_service.h> interface.  */
+  struct ps_prochandle proc_handle;
+
+  /* Connection to the libthread_db library.  */
+  td_thragent_t *thread_agent;
+
+  /* If this flag has been set, we've already asked GDB for all
+     symbols we might need; assume symbol cache misses are
+     failures.  */
+  int all_symbols_looked_up;
+
+#ifndef USE_LIBTHREAD_DB_DIRECTLY
+  /* Handle of the libthread_db from dlopen.  */
+  void *handle;
+#endif
+
+  /* Addresses of libthread_db functions.  */
+  td_ta_new_ftype *td_ta_new_p;
+  td_ta_map_lwp2thr_ftype *td_ta_map_lwp2thr_p;
+  td_thr_get_info_ftype *td_thr_get_info_p;
+  td_ta_thr_iter_ftype *td_ta_thr_iter_p;
+  td_thr_tls_get_addr_ftype *td_thr_tls_get_addr_p;
+  td_thr_tlsbase_ftype *td_thr_tlsbase_p;
+  td_symbol_list_ftype *td_symbol_list_p;
+};
+
+static char *libthread_db_search_path;
+
+static int find_one_thread (ptid_t);
+static int find_new_threads_callback (const td_thrhandle_t *th_p, void *data);
+
+static const char *
+thread_db_err_str (td_err_e err)
+{
+  static char buf[64];
+
+  switch (err)
+    {
+    case TD_OK:
+      return "generic 'call succeeded'";
+    case TD_ERR:
+      return "generic error";
+    case TD_NOTHR:
+      return "no thread to satisfy query";
+    case TD_NOSV:
+      return "no sync handle to satisfy query";
+    case TD_NOLWP:
+      return "no LWP to satisfy query";
+    case TD_BADPH:
+      return "invalid process handle";
+    case TD_BADTH:
+      return "invalid thread handle";
+    case TD_BADSH:
+      return "invalid synchronization handle";
+    case TD_BADTA:
+      return "invalid thread agent";
+    case TD_BADKEY:
+      return "invalid key";
+    case TD_NOMSG:
+      return "no event message for getmsg";
+    case TD_NOFPREGS:
+      return "FPU register set not available";
+    case TD_NOLIBTHREAD:
+      return "application not linked with libthread";
+    case TD_NOEVENT:
+      return "requested event is not supported";
+    case TD_NOCAPAB:
+      return "capability not available";
+    case TD_DBERR:
+      return "debugger service failed";
+    case TD_NOAPLIC:
+      return "operation not applicable to";
+    case TD_NOTSD:
+      return "no thread-specific data for this thread";
+    case TD_MALLOC:
+      return "malloc failed";
+    case TD_PARTIALREG:
+      return "only part of register set was written/read";
+    case TD_NOXREGS:
+      return "X register set not available for this thread";
+#ifdef HAVE_TD_VERSION
+    case TD_VERSION:
+      return "version mismatch between libthread_db and libpthread";
+#endif
+    default:
+      xsnprintf (buf, sizeof (buf), "unknown thread_db error '%d'", err);
+      return buf;
+    }
+}
+
+#if 0
+static char *
+thread_db_state_str (td_thr_state_e state)
+{
+  static char buf[64];
+
+  switch (state)
+    {
+    case TD_THR_STOPPED:
+      return "stopped by debugger";
+    case TD_THR_RUN:
+      return "runnable";
+    case TD_THR_ACTIVE:
+      return "active";
+    case TD_THR_ZOMBIE:
+      return "zombie";
+    case TD_THR_SLEEP:
+      return "sleeping";
+    case TD_THR_STOPPED_ASLEEP:
+      return "stopped by debugger AND blocked";
+    default:
+      xsnprintf (buf, sizeof (buf), "unknown thread_db state %d", state);
+      return buf;
+    }
+}
+#endif
+
+/* Get thread info about PTID, accessing memory via the current
+   thread.  */
+
+static int
+find_one_thread (ptid_t ptid)
+{
+  td_thrhandle_t th;
+  td_thrinfo_t ti;
+  td_err_e err;
+  struct lwp_info *lwp;
+  struct thread_db *thread_db = current_process ()->priv->thread_db;
+  int lwpid = ptid.lwp ();
+
+  thread_info *thread = find_thread_ptid (ptid);
+  lwp = get_thread_lwp (thread);
+  if (lwp->thread_known)
+    return 1;
+
+  /* Get information about this thread.  */
+  err = thread_db->td_ta_map_lwp2thr_p (thread_db->thread_agent, lwpid, &th);
+  if (err != TD_OK)
+    error ("Cannot get thread handle for LWP %d: %s",
+	   lwpid, thread_db_err_str (err));
+
+  err = thread_db->td_thr_get_info_p (&th, &ti);
+  if (err != TD_OK)
+    error ("Cannot get thread info for LWP %d: %s",
+	   lwpid, thread_db_err_str (err));
+
+  if (debug_threads)
+    debug_printf ("Found thread %ld (LWP %d)\n",
+		  (unsigned long) ti.ti_tid, ti.ti_lid);
+
+  if (lwpid != ti.ti_lid)
+    {
+      warning ("PID mismatch!  Expected %ld, got %ld",
+	       (long) lwpid, (long) ti.ti_lid);
+      return 0;
+    }
+
+  /* If the new thread ID is zero, a final thread ID will be available
+     later.  Do not enable thread debugging yet.  */
+  if (ti.ti_tid == 0)
+    return 0;
+
+  lwp->thread_known = 1;
+  lwp->th = th;
+  lwp->thread_handle = ti.ti_tid;
+
+  return 1;
+}
+
+/* Attach a thread.  Return true on success.  */
+
+static int
+attach_thread (const td_thrhandle_t *th_p, td_thrinfo_t *ti_p)
+{
+  struct process_info *proc = current_process ();
+  int pid = pid_of (proc);
+  ptid_t ptid = ptid_t (pid, ti_p->ti_lid, 0);
+  struct lwp_info *lwp;
+  int err;
+
+  if (debug_threads)
+    debug_printf ("Attaching to thread %ld (LWP %d)\n",
+		  (unsigned long) ti_p->ti_tid, ti_p->ti_lid);
+  err = the_linux_target->attach_lwp (ptid);
+  if (err != 0)
+    {
+      std::string reason = linux_ptrace_attach_fail_reason_string (ptid, err);
+
+      warning ("Could not attach to thread %ld (LWP %d): %s",
+	       (unsigned long) ti_p->ti_tid, ti_p->ti_lid, reason.c_str ());
+
+      return 0;
+    }
+
+  lwp = find_lwp_pid (ptid);
+  gdb_assert (lwp != NULL);
+  lwp->thread_known = 1;
+  lwp->th = *th_p;
+  lwp->thread_handle = ti_p->ti_tid;
+
+  return 1;
+}
+
+/* Attach thread if we haven't seen it yet.
+   Increment *COUNTER if we have attached a new thread.
+   Return false on failure.  */
+
+static int
+maybe_attach_thread (const td_thrhandle_t *th_p, td_thrinfo_t *ti_p,
+		     int *counter)
+{
+  struct lwp_info *lwp;
+
+  lwp = find_lwp_pid (ptid_t (ti_p->ti_lid));
+  if (lwp != NULL)
+    return 1;
+
+  if (!attach_thread (th_p, ti_p))
+    return 0;
+
+  if (counter != NULL)
+    *counter += 1;
+
+  return 1;
+}
+
+static int
+find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
+{
+  td_thrinfo_t ti;
+  td_err_e err;
+  struct thread_db *thread_db = current_process ()->priv->thread_db;
+
+  err = thread_db->td_thr_get_info_p (th_p, &ti);
+  if (err != TD_OK)
+    error ("Cannot get thread info: %s", thread_db_err_str (err));
+
+  if (ti.ti_lid == -1)
+    {
+      /* A thread with kernel thread ID -1 is either a thread that
+	 exited and was joined, or a thread that is being created but
+	 hasn't started yet, and that is reusing the tcb/stack of a
+	 thread that previously exited and was joined.  (glibc marks
+	 terminated and joined threads with kernel thread ID -1.  See
+	 glibc PR17707.  */
+      if (debug_threads)
+	debug_printf ("thread_db: skipping exited and "
+		      "joined thread (0x%lx)\n",
+		      (unsigned long) ti.ti_tid);
+      return 0;
+    }
+
+  /* Check for zombies.  */
+  if (ti.ti_state == TD_THR_UNKNOWN || ti.ti_state == TD_THR_ZOMBIE)
+    return 0;
+
+  if (!maybe_attach_thread (th_p, &ti, (int *) data))
+    {
+      /* Terminate iteration early: we might be looking at stale data in
+	 the inferior.  The thread_db_find_new_threads will retry.  */
+      return 1;
+    }
+
+  return 0;
+}
+
+static void
+thread_db_find_new_threads (void)
+{
+  td_err_e err;
+  ptid_t ptid = current_ptid;
+  struct thread_db *thread_db = current_process ()->priv->thread_db;
+  int loop, iteration;
+
+  /* This function is only called when we first initialize thread_db.
+     First locate the initial thread.  If it is not ready for
+     debugging yet, then stop.  */
+  if (find_one_thread (ptid) == 0)
+    return;
+
+  /* Require 4 successive iterations which do not find any new threads.
+     The 4 is a heuristic: there is an inherent race here, and I have
+     seen that 2 iterations in a row are not always sufficient to
+     "capture" all threads.  */
+  for (loop = 0, iteration = 0; loop < 4; ++loop, ++iteration)
+    {
+      int new_thread_count = 0;
+
+      /* Iterate over all user-space threads to discover new threads.  */
+      err = thread_db->td_ta_thr_iter_p (thread_db->thread_agent,
+					 find_new_threads_callback,
+					 &new_thread_count,
+					 TD_THR_ANY_STATE,
+					 TD_THR_LOWEST_PRIORITY,
+					 TD_SIGNO_MASK, TD_THR_ANY_USER_FLAGS);
+      if (debug_threads)
+	debug_printf ("Found %d threads in iteration %d.\n",
+		      new_thread_count, iteration);
+
+      if (new_thread_count != 0)
+	{
+	  /* Found new threads.  Restart iteration from beginning.  */
+	  loop = -1;
+	}
+    }
+  if (err != TD_OK)
+    error ("Cannot find new threads: %s", thread_db_err_str (err));
+}
+
+/* Cache all future symbols that thread_db might request.  We can not
+   request symbols at arbitrary states in the remote protocol, only
+   when the client tells us that new symbols are available.  So when
+   we load the thread library, make sure to check the entire list.  */
+
+static void
+thread_db_look_up_symbols (void)
+{
+  struct thread_db *thread_db = current_process ()->priv->thread_db;
+  const char **sym_list;
+  CORE_ADDR unused;
+
+  for (sym_list = thread_db->td_symbol_list_p (); *sym_list; sym_list++)
+    look_up_one_symbol (*sym_list, &unused, 1);
+
+  /* We're not interested in any other libraries loaded after this
+     point, only in symbols in libpthread.so.  */
+  thread_db->all_symbols_looked_up = 1;
+}
+
+int
+thread_db_look_up_one_symbol (const char *name, CORE_ADDR *addrp)
+{
+  struct thread_db *thread_db = current_process ()->priv->thread_db;
+  int may_ask_gdb = !thread_db->all_symbols_looked_up;
+
+  /* If we've passed the call to thread_db_look_up_symbols, then
+     anything not in the cache must not exist; we're not interested
+     in any libraries loaded after that point, only in symbols in
+     libpthread.so.  It might not be an appropriate time to look
+     up a symbol, e.g. while we're trying to fetch registers.  */
+  return look_up_one_symbol (name, addrp, may_ask_gdb);
+}
+
+int
+thread_db_get_tls_address (struct thread_info *thread, CORE_ADDR offset,
+			   CORE_ADDR load_module, CORE_ADDR *address)
+{
+  psaddr_t addr;
+  td_err_e err;
+  struct lwp_info *lwp;
+  struct thread_info *saved_thread;
+  struct process_info *proc;
+  struct thread_db *thread_db;
+
+  proc = get_thread_process (thread);
+  thread_db = proc->priv->thread_db;
+
+  /* If the thread layer is not (yet) initialized, fail.  */
+  if (thread_db == NULL || !thread_db->all_symbols_looked_up)
+    return TD_ERR;
+
+  /* If td_thr_tls_get_addr is missing rather do not expect td_thr_tlsbase
+     could work.  */
+  if (thread_db->td_thr_tls_get_addr_p == NULL
+      || (load_module == 0 && thread_db->td_thr_tlsbase_p == NULL))
+    return -1;
+
+  lwp = get_thread_lwp (thread);
+  if (!lwp->thread_known)
+    find_one_thread (thread->id);
+  if (!lwp->thread_known)
+    return TD_NOTHR;
+
+  saved_thread = current_thread;
+  current_thread = thread;
+
+  if (load_module != 0)
+    {
+      /* Note the cast through uintptr_t: this interface only works if
+	 a target address fits in a psaddr_t, which is a host pointer.
+	 So a 32-bit debugger can not access 64-bit TLS through this.  */
+      err = thread_db->td_thr_tls_get_addr_p (&lwp->th,
+					     (psaddr_t) (uintptr_t) load_module,
+					      offset, &addr);
+    }
+  else
+    {
+      /* This code path handles the case of -static -pthread executables:
+	 https://sourceware.org/ml/libc-help/2014-03/msg00024.html
+	 For older GNU libc r_debug.r_map is NULL.  For GNU libc after
+	 PR libc/16831 due to GDB PR threads/16954 LOAD_MODULE is also NULL.
+	 The constant number 1 depends on GNU __libc_setup_tls
+	 initialization of l_tls_modid to 1.  */
+      err = thread_db->td_thr_tlsbase_p (&lwp->th, 1, &addr);
+      addr = (char *) addr + offset;
+    }
+
+  current_thread = saved_thread;
+  if (err == TD_OK)
+    {
+      *address = (CORE_ADDR) (uintptr_t) addr;
+      return 0;
+    }
+  else
+    return err;
+}
+
+/* See linux-low.h.  */
+
+bool
+thread_db_thread_handle (ptid_t ptid, gdb_byte **handle, int *handle_len)
+{
+  struct thread_db *thread_db;
+  struct lwp_info *lwp;
+  thread_info *thread = find_thread_ptid (ptid);
+
+  if (thread == NULL)
+    return false;
+
+  thread_db = get_thread_process (thread)->priv->thread_db;
+
+  if (thread_db == NULL)
+    return false;
+
+  lwp = get_thread_lwp (thread);
+
+  if (!lwp->thread_known && !find_one_thread (thread->id))
+    return false;
+
+  gdb_assert (lwp->thread_known);
+
+  *handle = (gdb_byte *) &lwp->thread_handle;
+  *handle_len = sizeof (lwp->thread_handle);
+  return true;
+}
+
+#ifdef USE_LIBTHREAD_DB_DIRECTLY
+
+static int
+thread_db_load_search (void)
+{
+  td_err_e err;
+  struct thread_db *tdb;
+  struct process_info *proc = current_process ();
+
+  gdb_assert (proc->priv->thread_db == NULL);
+
+  tdb = XCNEW (struct thread_db);
+  proc->priv->thread_db = tdb;
+
+  tdb->td_ta_new_p = &td_ta_new;
+
+  /* Attempt to open a connection to the thread library.  */
+  err = tdb->td_ta_new_p (&tdb->proc_handle, &tdb->thread_agent);
+  if (err != TD_OK)
+    {
+      if (debug_threads)
+	debug_printf ("td_ta_new(): %s\n", thread_db_err_str (err));
+      free (tdb);
+      proc->priv->thread_db = NULL;
+      return 0;
+    }
+
+  tdb->td_ta_map_lwp2thr_p = &td_ta_map_lwp2thr;
+  tdb->td_thr_get_info_p = &td_thr_get_info;
+  tdb->td_ta_thr_iter_p = &td_ta_thr_iter;
+  tdb->td_symbol_list_p = &td_symbol_list;
+
+  /* These are not essential.  */
+  tdb->td_thr_tls_get_addr_p = &td_thr_tls_get_addr;
+  tdb->td_thr_tlsbase_p = &td_thr_tlsbase;
+
+  return 1;
+}
+
+#else
+
+static int
+try_thread_db_load_1 (void *handle)
+{
+  td_err_e err;
+  struct thread_db *tdb;
+  struct process_info *proc = current_process ();
+
+  gdb_assert (proc->priv->thread_db == NULL);
+
+  tdb = XCNEW (struct thread_db);
+  proc->priv->thread_db = tdb;
+
+  tdb->handle = handle;
+
+  /* Initialize pointers to the dynamic library functions we will use.
+     Essential functions first.  */
+
+#define CHK(required, a)					\
+  do								\
+    {								\
+      if ((a) == NULL)						\
+	{							\
+	  if (debug_threads)					\
+	    debug_printf ("dlsym: %s\n", dlerror ());		\
+	  if (required)						\
+	    {							\
+	      free (tdb);					\
+	      proc->priv->thread_db = NULL;			\
+	      return 0;						\
+	    }							\
+	}							\
+    }								\
+  while (0)
+
+#define TDB_DLSYM(tdb, func) \
+  tdb->func ## _p = (func ## _ftype *) dlsym (tdb->handle, #func)
+
+  CHK (1, TDB_DLSYM (tdb, td_ta_new));
+
+  /* Attempt to open a connection to the thread library.  */
+  err = tdb->td_ta_new_p (&tdb->proc_handle, &tdb->thread_agent);
+  if (err != TD_OK)
+    {
+      if (debug_threads)
+	debug_printf ("td_ta_new(): %s\n", thread_db_err_str (err));
+      free (tdb);
+      proc->priv->thread_db = NULL;
+      return 0;
+    }
+
+  CHK (1, TDB_DLSYM (tdb, td_ta_map_lwp2thr));
+  CHK (1, TDB_DLSYM (tdb, td_thr_get_info));
+  CHK (1, TDB_DLSYM (tdb, td_ta_thr_iter));
+  CHK (1, TDB_DLSYM (tdb, td_symbol_list));
+
+  /* These are not essential.  */
+  CHK (0, TDB_DLSYM (tdb, td_thr_tls_get_addr));
+  CHK (0, TDB_DLSYM (tdb, td_thr_tlsbase));
+
+#undef CHK
+#undef TDB_DLSYM
+
+  return 1;
+}
+
+#ifdef HAVE_DLADDR
+
+/* Lookup a library in which given symbol resides.
+   Note: this is looking in the GDBSERVER process, not in the inferior.
+   Returns library name, or NULL.  */
+
+static const char *
+dladdr_to_soname (const void *addr)
+{
+  Dl_info info;
+
+  if (dladdr (addr, &info) != 0)
+    return info.dli_fname;
+  return NULL;
+}
+
+#endif
+
+static int
+try_thread_db_load (const char *library)
+{
+  void *handle;
+
+  if (debug_threads)
+    debug_printf ("Trying host libthread_db library: %s.\n",
+		  library);
+  handle = dlopen (library, RTLD_NOW);
+  if (handle == NULL)
+    {
+      if (debug_threads)
+	debug_printf ("dlopen failed: %s.\n", dlerror ());
+      return 0;
+    }
+
+#ifdef HAVE_DLADDR
+  if (debug_threads && strchr (library, '/') == NULL)
+    {
+      void *td_init;
+
+      td_init = dlsym (handle, "td_init");
+      if (td_init != NULL)
+	{
+	  const char *const libpath = dladdr_to_soname (td_init);
+
+	  if (libpath != NULL)
+	    debug_printf ("Host %s resolved to: %s.\n", library, libpath);
+	}
+    }
+#endif
+
+  if (try_thread_db_load_1 (handle))
+    return 1;
+
+  /* This library "refused" to work on current inferior.  */
+  dlclose (handle);
+  return 0;
+}
+
+/* Handle $sdir in libthread-db-search-path.
+   Look for libthread_db in the system dirs, or wherever a plain
+   dlopen(file_without_path) will look.
+   The result is true for success.  */
+
+static int
+try_thread_db_load_from_sdir (void)
+{
+  return try_thread_db_load (LIBTHREAD_DB_SO);
+}
+
+/* Try to load libthread_db from directory DIR of length DIR_LEN.
+   The result is true for success.  */
+
+static int
+try_thread_db_load_from_dir (const char *dir, size_t dir_len)
+{
+  char path[PATH_MAX];
+
+  if (dir_len + 1 + strlen (LIBTHREAD_DB_SO) + 1 > sizeof (path))
+    {
+      char *cp = (char *) xmalloc (dir_len + 1);
+
+      memcpy (cp, dir, dir_len);
+      cp[dir_len] = '\0';
+      warning (_("libthread-db-search-path component too long,"
+		 " ignored: %s."), cp);
+      free (cp);
+      return 0;
+    }
+
+  memcpy (path, dir, dir_len);
+  path[dir_len] = '/';
+  strcpy (path + dir_len + 1, LIBTHREAD_DB_SO);
+  return try_thread_db_load (path);
+}
+
+/* Search libthread_db_search_path for libthread_db which "agrees"
+   to work on current inferior.
+   The result is true for success.  */
+
+static int
+thread_db_load_search (void)
+{
+  int rc = 0;
+
+  if (libthread_db_search_path == NULL)
+    libthread_db_search_path = xstrdup (LIBTHREAD_DB_SEARCH_PATH);
+
+  std::vector<gdb::unique_xmalloc_ptr<char>> dir_vec
+    = dirnames_to_char_ptr_vec (libthread_db_search_path);
+
+  for (const gdb::unique_xmalloc_ptr<char> &this_dir_up : dir_vec)
+    {
+      char *this_dir = this_dir_up.get ();
+      const int pdir_len = sizeof ("$pdir") - 1;
+      size_t this_dir_len;
+
+      this_dir_len = strlen (this_dir);
+
+      if (strncmp (this_dir, "$pdir", pdir_len) == 0
+	  && (this_dir[pdir_len] == '\0'
+	      || this_dir[pdir_len] == '/'))
+	{
+	  /* We don't maintain a list of loaded libraries so we don't know
+	     where libpthread lives.  We *could* fetch the info, but we don't
+	     do that yet.  Ignore it.  */
+	}
+      else if (strcmp (this_dir, "$sdir") == 0)
+	{
+	  if (try_thread_db_load_from_sdir ())
+	    {
+	      rc = 1;
+	      break;
+	    }
+	}
+      else
+	{
+	  if (try_thread_db_load_from_dir (this_dir, this_dir_len))
+	    {
+	      rc = 1;
+	      break;
+	    }
+	}
+    }
+
+  if (debug_threads)
+    debug_printf ("thread_db_load_search returning %d\n", rc);
+  return rc;
+}
+
+#endif  /* USE_LIBTHREAD_DB_DIRECTLY */
+
+int
+thread_db_init (void)
+{
+  struct process_info *proc = current_process ();
+
+  /* FIXME drow/2004-10-16: This is the "overall process ID", which
+     GNU/Linux calls tgid, "thread group ID".  When we support
+     attaching to threads, the original thread may not be the correct
+     thread.  We would have to get the process ID from /proc for NPTL.
+
+     This isn't the only place in gdbserver that assumes that the first
+     process in the list is the thread group leader.  */
+
+  if (thread_db_load_search ())
+    {
+      /* It's best to avoid td_ta_thr_iter if possible.  That walks
+	 data structures in the inferior's address space that may be
+	 corrupted, or, if the target is running, the list may change
+	 while we walk it.  In the latter case, it's possible that a
+	 thread exits just at the exact time that causes GDBserver to
+	 get stuck in an infinite loop.  As the kernel supports clone
+	 events and /proc/PID/task/ exists, then we already know about
+	 all threads in the process.  When we need info out of
+	 thread_db on a given thread (e.g., for TLS), we'll use
+	 find_one_thread then.  That uses thread_db entry points that
+	 do not walk libpthread's thread list, so should be safe, as
+	 well as more efficient.  */
+      if (!linux_proc_task_list_dir_exists (pid_of (proc)))
+	thread_db_find_new_threads ();
+      thread_db_look_up_symbols ();
+      return 1;
+    }
+
+  return 0;
+}
+
+/* Disconnect from libthread_db and free resources.  */
+
+static void
+disable_thread_event_reporting (struct process_info *proc)
+{
+  struct thread_db *thread_db = proc->priv->thread_db;
+  if (thread_db)
+    {
+      td_err_e (*td_ta_clear_event_p) (const td_thragent_t *ta,
+				       td_thr_events_t *event);
+
+#ifndef USE_LIBTHREAD_DB_DIRECTLY
+      td_ta_clear_event_p
+	= (td_ta_clear_event_ftype *) dlsym (thread_db->handle,
+					     "td_ta_clear_event");
+#else
+      td_ta_clear_event_p = &td_ta_clear_event;
+#endif
+
+      if (td_ta_clear_event_p != NULL)
+	{
+	  struct thread_info *saved_thread = current_thread;
+	  td_thr_events_t events;
+
+	  switch_to_process (proc);
+
+	  /* Set the process wide mask saying we aren't interested
+	     in any events anymore.  */
+	  td_event_fillset (&events);
+	  (*td_ta_clear_event_p) (thread_db->thread_agent, &events);
+
+	  current_thread = saved_thread;
+	}
+    }
+}
+
+void
+thread_db_detach (struct process_info *proc)
+{
+  struct thread_db *thread_db = proc->priv->thread_db;
+
+  if (thread_db)
+    {
+      disable_thread_event_reporting (proc);
+    }
+}
+
+/* Disconnect from libthread_db and free resources.  */
+
+void
+thread_db_mourn (struct process_info *proc)
+{
+  struct thread_db *thread_db = proc->priv->thread_db;
+  if (thread_db)
+    {
+      td_ta_delete_ftype *td_ta_delete_p;
+
+#ifndef USE_LIBTHREAD_DB_DIRECTLY
+      td_ta_delete_p = (td_ta_delete_ftype *) dlsym (thread_db->handle, "td_ta_delete");
+#else
+      td_ta_delete_p = &td_ta_delete;
+#endif
+
+      if (td_ta_delete_p != NULL)
+	(*td_ta_delete_p) (thread_db->thread_agent);
+
+#ifndef USE_LIBTHREAD_DB_DIRECTLY
+      dlclose (thread_db->handle);
+#endif  /* USE_LIBTHREAD_DB_DIRECTLY  */
+
+      free (thread_db);
+      proc->priv->thread_db = NULL;
+    }
+}
+
+/* Handle "set libthread-db-search-path" monitor command and return 1.
+   For any other command, return 0.  */
+
+int
+thread_db_handle_monitor_command (char *mon)
+{
+  const char *cmd = "set libthread-db-search-path";
+  size_t cmd_len = strlen (cmd);
+
+  if (strncmp (mon, cmd, cmd_len) == 0
+      && (mon[cmd_len] == '\0'
+	  || mon[cmd_len] == ' '))
+    {
+      const char *cp = mon + cmd_len;
+
+      if (libthread_db_search_path != NULL)
+	free (libthread_db_search_path);
+
+      /* Skip leading space (if any).  */
+      while (isspace (*cp))
+	++cp;
+
+      if (*cp == '\0')
+	cp = LIBTHREAD_DB_SEARCH_PATH;
+      libthread_db_search_path = xstrdup (cp);
+
+      monitor_output ("libthread-db-search-path set to `");
+      monitor_output (libthread_db_search_path);
+      monitor_output ("'\n");
+      return 1;
+    }
+
+  /* Tell server.c to perform default processing.  */
+  return 0;
+}
+
+/* See linux-low.h.  */
+
+void
+thread_db_notice_clone (struct thread_info *parent_thr, ptid_t child_ptid)
+{
+  process_info *parent_proc = get_thread_process (parent_thr);
+  struct thread_db *thread_db = parent_proc->priv->thread_db;
+
+  /* If the thread layer isn't initialized, return.  It may just
+     be that the program uses clone, but does not use libthread_db.  */
+  if (thread_db == NULL || !thread_db->all_symbols_looked_up)
+    return;
+
+  /* find_one_thread calls into libthread_db which accesses memory via
+     the current thread.  Temporarily switch to a thread we know is
+     stopped.  */
+  scoped_restore restore_current_thread
+    = make_scoped_restore (&current_thread, parent_thr);
+
+  if (!find_one_thread (child_ptid))
+    warning ("Cannot find thread after clone.");
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/tracepoint.cc ./gdbserver/tracepoint.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/tracepoint.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/tracepoint.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,7467 @@
+/* Tracepoint code for remote server for GDB.
+   Copyright (C) 2009-2021 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 "server.h"
+#include "tracepoint.h"
+#include "gdbthread.h"
+#include "gdbsupport/rsp-low.h"
+
+#include <ctype.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <chrono>
+#include <inttypes.h>
+#include "ax.h"
+#include "tdesc.h"
+
+#define IPA_SYM_STRUCT_NAME ipa_sym_addresses
+#include "gdbsupport/agent.h"
+
+#define DEFAULT_TRACE_BUFFER_SIZE 5242880 /* 5*1024*1024 */
+
+/* This file is built for both GDBserver, and the in-process
+   agent (IPA), a shared library that includes a tracing agent that is
+   loaded by the inferior to support fast tracepoints.  Fast
+   tracepoints (or more accurately, jump based tracepoints) are
+   implemented by patching the tracepoint location with a jump into a
+   small trampoline function whose job is to save the register state,
+   call the in-process tracing agent, and then execute the original
+   instruction that was under the tracepoint jump (possibly adjusted,
+   if PC-relative, or some such).
+
+   The current synchronization design is pull based.  That means,
+   GDBserver does most of the work, by peeking/poking at the inferior
+   agent's memory directly for downloading tracepoint and associated
+   objects, and for uploading trace frames.  Whenever the IPA needs
+   something from GDBserver (trace buffer is full, tracing stopped for
+   some reason, etc.) the IPA calls a corresponding hook function
+   where GDBserver has placed a breakpoint.
+
+   Each of the agents has its own trace buffer.  When browsing the
+   trace frames built from slow and fast tracepoints from GDB (tfind
+   mode), there's no guarantee the user is seeing the trace frames in
+   strict chronological creation order, although, GDBserver tries to
+   keep the order relatively reasonable, by syncing the trace buffers
+   at appropriate times.
+
+*/
+
+#ifdef IN_PROCESS_AGENT
+
+static void trace_vdebug (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
+
+static void
+trace_vdebug (const char *fmt, ...)
+{
+  char buf[1024];
+  va_list ap;
+
+  va_start (ap, fmt);
+  vsprintf (buf, fmt, ap);
+  fprintf (stderr, PROG "/tracepoint: %s\n", buf);
+  va_end (ap);
+}
+
+#define trace_debug_1(level, fmt, args...)	\
+  do {						\
+    if (level <= debug_threads)		\
+      trace_vdebug ((fmt), ##args);		\
+  } while (0)
+
+#else
+
+#define trace_debug_1(level, fmt, args...)	\
+  do {						\
+    if (level <= debug_threads)			\
+      {						\
+	debug_printf ((fmt), ##args);		\
+	debug_printf ("\n");			\
+      }						\
+  } while (0)
+
+#endif
+
+#define trace_debug(FMT, args...)		\
+  trace_debug_1 (1, FMT, ##args)
+
+/* Prefix exported symbols, for good citizenship.  All the symbols
+   that need exporting are defined in this module.  Note that all
+   these symbols must be tagged with IP_AGENT_EXPORT_*.  */
+#ifdef IN_PROCESS_AGENT
+# define gdb_tp_heap_buffer IPA_SYM_EXPORTED_NAME (gdb_tp_heap_buffer)
+# define gdb_jump_pad_buffer IPA_SYM_EXPORTED_NAME (gdb_jump_pad_buffer)
+# define gdb_jump_pad_buffer_end IPA_SYM_EXPORTED_NAME (gdb_jump_pad_buffer_end)
+# define gdb_trampoline_buffer IPA_SYM_EXPORTED_NAME (gdb_trampoline_buffer)
+# define gdb_trampoline_buffer_end IPA_SYM_EXPORTED_NAME (gdb_trampoline_buffer_end)
+# define gdb_trampoline_buffer_error IPA_SYM_EXPORTED_NAME (gdb_trampoline_buffer_error)
+# define collecting IPA_SYM_EXPORTED_NAME (collecting)
+# define gdb_collect_ptr IPA_SYM_EXPORTED_NAME (gdb_collect_ptr)
+# define stop_tracing IPA_SYM_EXPORTED_NAME (stop_tracing)
+# define flush_trace_buffer IPA_SYM_EXPORTED_NAME (flush_trace_buffer)
+# define about_to_request_buffer_space IPA_SYM_EXPORTED_NAME (about_to_request_buffer_space)
+# define trace_buffer_is_full IPA_SYM_EXPORTED_NAME (trace_buffer_is_full)
+# define stopping_tracepoint IPA_SYM_EXPORTED_NAME (stopping_tracepoint)
+# define expr_eval_result IPA_SYM_EXPORTED_NAME (expr_eval_result)
+# define error_tracepoint IPA_SYM_EXPORTED_NAME (error_tracepoint)
+# define tracepoints IPA_SYM_EXPORTED_NAME (tracepoints)
+# define tracing IPA_SYM_EXPORTED_NAME (tracing)
+# define trace_buffer_ctrl IPA_SYM_EXPORTED_NAME (trace_buffer_ctrl)
+# define trace_buffer_ctrl_curr IPA_SYM_EXPORTED_NAME (trace_buffer_ctrl_curr)
+# define trace_buffer_lo IPA_SYM_EXPORTED_NAME (trace_buffer_lo)
+# define trace_buffer_hi IPA_SYM_EXPORTED_NAME (trace_buffer_hi)
+# define traceframe_read_count IPA_SYM_EXPORTED_NAME (traceframe_read_count)
+# define traceframe_write_count IPA_SYM_EXPORTED_NAME (traceframe_write_count)
+# define traceframes_created IPA_SYM_EXPORTED_NAME (traceframes_created)
+# define trace_state_variables IPA_SYM_EXPORTED_NAME (trace_state_variables)
+# define get_raw_reg_ptr IPA_SYM_EXPORTED_NAME (get_raw_reg_ptr)
+# define get_trace_state_variable_value_ptr \
+  IPA_SYM_EXPORTED_NAME (get_trace_state_variable_value_ptr)
+# define set_trace_state_variable_value_ptr \
+  IPA_SYM_EXPORTED_NAME (set_trace_state_variable_value_ptr)
+# define ust_loaded IPA_SYM_EXPORTED_NAME (ust_loaded)
+# define helper_thread_id IPA_SYM_EXPORTED_NAME (helper_thread_id)
+# define cmd_buf IPA_SYM_EXPORTED_NAME (cmd_buf)
+# define ipa_tdesc_idx IPA_SYM_EXPORTED_NAME (ipa_tdesc_idx)
+#endif
+
+#ifndef IN_PROCESS_AGENT
+
+/* Addresses of in-process agent's symbols GDBserver cares about.  */
+
+struct ipa_sym_addresses
+{
+  CORE_ADDR addr_gdb_tp_heap_buffer;
+  CORE_ADDR addr_gdb_jump_pad_buffer;
+  CORE_ADDR addr_gdb_jump_pad_buffer_end;
+  CORE_ADDR addr_gdb_trampoline_buffer;
+  CORE_ADDR addr_gdb_trampoline_buffer_end;
+  CORE_ADDR addr_gdb_trampoline_buffer_error;
+  CORE_ADDR addr_collecting;
+  CORE_ADDR addr_gdb_collect_ptr;
+  CORE_ADDR addr_stop_tracing;
+  CORE_ADDR addr_flush_trace_buffer;
+  CORE_ADDR addr_about_to_request_buffer_space;
+  CORE_ADDR addr_trace_buffer_is_full;
+  CORE_ADDR addr_stopping_tracepoint;
+  CORE_ADDR addr_expr_eval_result;
+  CORE_ADDR addr_error_tracepoint;
+  CORE_ADDR addr_tracepoints;
+  CORE_ADDR addr_tracing;
+  CORE_ADDR addr_trace_buffer_ctrl;
+  CORE_ADDR addr_trace_buffer_ctrl_curr;
+  CORE_ADDR addr_trace_buffer_lo;
+  CORE_ADDR addr_trace_buffer_hi;
+  CORE_ADDR addr_traceframe_read_count;
+  CORE_ADDR addr_traceframe_write_count;
+  CORE_ADDR addr_traceframes_created;
+  CORE_ADDR addr_trace_state_variables;
+  CORE_ADDR addr_get_raw_reg_ptr;
+  CORE_ADDR addr_get_trace_state_variable_value_ptr;
+  CORE_ADDR addr_set_trace_state_variable_value_ptr;
+  CORE_ADDR addr_ust_loaded;
+  CORE_ADDR addr_ipa_tdesc_idx;
+};
+
+static struct
+{
+  const char *name;
+  int offset;
+} symbol_list[] = {
+  IPA_SYM(gdb_tp_heap_buffer),
+  IPA_SYM(gdb_jump_pad_buffer),
+  IPA_SYM(gdb_jump_pad_buffer_end),
+  IPA_SYM(gdb_trampoline_buffer),
+  IPA_SYM(gdb_trampoline_buffer_end),
+  IPA_SYM(gdb_trampoline_buffer_error),
+  IPA_SYM(collecting),
+  IPA_SYM(gdb_collect_ptr),
+  IPA_SYM(stop_tracing),
+  IPA_SYM(flush_trace_buffer),
+  IPA_SYM(about_to_request_buffer_space),
+  IPA_SYM(trace_buffer_is_full),
+  IPA_SYM(stopping_tracepoint),
+  IPA_SYM(expr_eval_result),
+  IPA_SYM(error_tracepoint),
+  IPA_SYM(tracepoints),
+  IPA_SYM(tracing),
+  IPA_SYM(trace_buffer_ctrl),
+  IPA_SYM(trace_buffer_ctrl_curr),
+  IPA_SYM(trace_buffer_lo),
+  IPA_SYM(trace_buffer_hi),
+  IPA_SYM(traceframe_read_count),
+  IPA_SYM(traceframe_write_count),
+  IPA_SYM(traceframes_created),
+  IPA_SYM(trace_state_variables),
+  IPA_SYM(get_raw_reg_ptr),
+  IPA_SYM(get_trace_state_variable_value_ptr),
+  IPA_SYM(set_trace_state_variable_value_ptr),
+  IPA_SYM(ust_loaded),
+  IPA_SYM(ipa_tdesc_idx),
+};
+
+static struct ipa_sym_addresses ipa_sym_addrs;
+
+static int read_inferior_integer (CORE_ADDR symaddr, int *val);
+
+/* Returns true if both the in-process agent library and the static
+   tracepoints libraries are loaded in the inferior, and agent has
+   capability on static tracepoints.  */
+
+static int
+in_process_agent_supports_ust (void)
+{
+  int loaded = 0;
+
+  if (!agent_loaded_p ())
+    {
+      warning ("In-process agent not loaded");
+      return 0;
+    }
+
+  if (agent_capability_check (AGENT_CAPA_STATIC_TRACE))
+    {
+      /* Agent understands static tracepoint, then check whether UST is in
+	 fact loaded in the inferior.  */
+      if (read_inferior_integer (ipa_sym_addrs.addr_ust_loaded, &loaded))
+	{
+	  warning ("Error reading ust_loaded in lib");
+	  return 0;
+	}
+
+      return loaded;
+    }
+  else
+    return 0;
+}
+
+static void
+write_e_ipa_not_loaded (char *buffer)
+{
+  sprintf (buffer,
+	   "E.In-process agent library not loaded in process.  "
+	   "Fast and static tracepoints unavailable.");
+}
+
+/* Write an error to BUFFER indicating that UST isn't loaded in the
+   inferior.  */
+
+static void
+write_e_ust_not_loaded (char *buffer)
+{
+#ifdef HAVE_UST
+  sprintf (buffer,
+	   "E.UST library not loaded in process.  "
+	   "Static tracepoints unavailable.");
+#else
+  sprintf (buffer, "E.GDBserver was built without static tracepoints support");
+#endif
+}
+
+/* If the in-process agent library isn't loaded in the inferior, write
+   an error to BUFFER, and return 1.  Otherwise, return 0.  */
+
+static int
+maybe_write_ipa_not_loaded (char *buffer)
+{
+  if (!agent_loaded_p ())
+    {
+      write_e_ipa_not_loaded (buffer);
+      return 1;
+    }
+  return 0;
+}
+
+/* If the in-process agent library and the ust (static tracepoints)
+   library aren't loaded in the inferior, write an error to BUFFER,
+   and return 1.  Otherwise, return 0.  */
+
+static int
+maybe_write_ipa_ust_not_loaded (char *buffer)
+{
+  if (!agent_loaded_p ())
+    {
+      write_e_ipa_not_loaded (buffer);
+      return 1;
+    }
+  else if (!in_process_agent_supports_ust ())
+    {
+      write_e_ust_not_loaded (buffer);
+      return 1;
+    }
+  return 0;
+}
+
+/* Cache all future symbols that the tracepoints module might request.
+   We can not request symbols at arbitrary states in the remote
+   protocol, only when the client tells us that new symbols are
+   available.  So when we load the in-process library, make sure to
+   check the entire list.  */
+
+void
+tracepoint_look_up_symbols (void)
+{
+  int i;
+
+  if (agent_loaded_p ())
+    return;
+
+  for (i = 0; i < sizeof (symbol_list) / sizeof (symbol_list[0]); i++)
+    {
+      CORE_ADDR *addrp =
+	(CORE_ADDR *) ((char *) &ipa_sym_addrs + symbol_list[i].offset);
+
+      if (look_up_one_symbol (symbol_list[i].name, addrp, 1) == 0)
+	{
+	  if (debug_threads)
+	    debug_printf ("symbol `%s' not found\n", symbol_list[i].name);
+	  return;
+	}
+    }
+
+  agent_look_up_symbols (NULL);
+}
+
+#endif
+
+/* GDBserver places a breakpoint on the IPA's version (which is a nop)
+   of the "stop_tracing" function.  When this breakpoint is hit,
+   tracing stopped in the IPA for some reason.  E.g., due to
+   tracepoint reaching the pass count, hitting conditional expression
+   evaluation error, etc.
+
+   The IPA's trace buffer is never in circular tracing mode: instead,
+   GDBserver's is, and whenever the in-process buffer fills, it calls
+   "flush_trace_buffer", which triggers an internal breakpoint.
+   GDBserver reacts to this breakpoint by pulling the meanwhile
+   collected data.  Old frames discarding is always handled on the
+   GDBserver side.  */
+
+#ifdef IN_PROCESS_AGENT
+int
+read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
+{
+  memcpy (myaddr, (void *) (uintptr_t) memaddr, len);
+  return 0;
+}
+
+/* Call this in the functions where GDBserver places a breakpoint, so
+   that the compiler doesn't try to be clever and skip calling the
+   function at all.  This is necessary, even if we tell the compiler
+   to not inline said functions.  */
+
+#if defined(__GNUC__)
+#  define UNKNOWN_SIDE_EFFECTS() asm ("")
+#else
+#  define UNKNOWN_SIDE_EFFECTS() do {} while (0)
+#endif
+
+/* This is needed for -Wmissing-declarations.  */
+IP_AGENT_EXPORT_FUNC void stop_tracing (void);
+
+IP_AGENT_EXPORT_FUNC void
+stop_tracing (void)
+{
+  /* GDBserver places breakpoint here.  */
+  UNKNOWN_SIDE_EFFECTS();
+}
+
+/* This is needed for -Wmissing-declarations.  */
+IP_AGENT_EXPORT_FUNC void flush_trace_buffer (void);
+
+IP_AGENT_EXPORT_FUNC void
+flush_trace_buffer (void)
+{
+  /* GDBserver places breakpoint here.  */
+  UNKNOWN_SIDE_EFFECTS();
+}
+
+#endif
+
+#ifndef IN_PROCESS_AGENT
+static int
+tracepoint_handler (CORE_ADDR address)
+{
+  trace_debug ("tracepoint_handler: tracepoint at 0x%s hit",
+	       paddress (address));
+  return 0;
+}
+
+/* Breakpoint at "stop_tracing" in the inferior lib.  */
+struct breakpoint *stop_tracing_bkpt;
+static int stop_tracing_handler (CORE_ADDR);
+
+/* Breakpoint at "flush_trace_buffer" in the inferior lib.  */
+struct breakpoint *flush_trace_buffer_bkpt;
+static int flush_trace_buffer_handler (CORE_ADDR);
+
+static void download_trace_state_variables (void);
+static void upload_fast_traceframes (void);
+
+static int run_inferior_command (char *cmd, int len);
+
+static int
+read_inferior_integer (CORE_ADDR symaddr, int *val)
+{
+  return read_inferior_memory (symaddr, (unsigned char *) val,
+			       sizeof (*val));
+}
+
+struct tracepoint;
+static int tracepoint_send_agent (struct tracepoint *tpoint);
+
+static int
+read_inferior_uinteger (CORE_ADDR symaddr, unsigned int *val)
+{
+  return read_inferior_memory (symaddr, (unsigned char *) val,
+			       sizeof (*val));
+}
+
+static int
+read_inferior_data_pointer (CORE_ADDR symaddr, CORE_ADDR *val)
+{
+  void *pval = (void *) (uintptr_t) val;
+  int ret;
+
+  ret = read_inferior_memory (symaddr, (unsigned char *) &pval, sizeof (pval));
+  *val = (uintptr_t) pval;
+  return ret;
+}
+
+static int
+write_inferior_data_pointer (CORE_ADDR symaddr, CORE_ADDR val)
+{
+  void *pval = (void *) (uintptr_t) val;
+  return target_write_memory (symaddr,
+				(unsigned char *) &pval, sizeof (pval));
+}
+
+static int
+write_inferior_integer (CORE_ADDR symaddr, int val)
+{
+  return target_write_memory (symaddr, (unsigned char *) &val, sizeof (val));
+}
+
+static int
+write_inferior_int8 (CORE_ADDR symaddr, int8_t val)
+{
+  return target_write_memory (symaddr, (unsigned char *) &val, sizeof (val));
+}
+
+static int
+write_inferior_uinteger (CORE_ADDR symaddr, unsigned int val)
+{
+  return target_write_memory (symaddr, (unsigned char *) &val, sizeof (val));
+}
+
+static CORE_ADDR target_malloc (ULONGEST size);
+
+#define COPY_FIELD_TO_BUF(BUF, OBJ, FIELD)	\
+  do {							\
+    memcpy (BUF, &(OBJ)->FIELD, sizeof ((OBJ)->FIELD)); \
+    BUF += sizeof ((OBJ)->FIELD);			\
+  } while (0)
+
+#endif
+
+/* Base action.  Concrete actions inherit this.  */
+
+struct tracepoint_action
+{
+  char type;
+};
+
+/* An 'M' (collect memory) action.  */
+struct collect_memory_action
+{
+  struct tracepoint_action base;
+
+  ULONGEST addr;
+  ULONGEST len;
+  int32_t basereg;
+};
+
+/* An 'R' (collect registers) action.  */
+
+struct collect_registers_action
+{
+  struct tracepoint_action base;
+};
+
+/* An 'X' (evaluate expression) action.  */
+
+struct eval_expr_action
+{
+  struct tracepoint_action base;
+
+  struct agent_expr *expr;
+};
+
+/* An 'L' (collect static trace data) action.  */
+struct collect_static_trace_data_action
+{
+  struct tracepoint_action base;
+};
+
+#ifndef IN_PROCESS_AGENT
+static CORE_ADDR
+m_tracepoint_action_download (const struct tracepoint_action *action)
+{
+  CORE_ADDR ipa_action = target_malloc (sizeof (struct collect_memory_action));
+
+  target_write_memory (ipa_action, (unsigned char *) action,
+			 sizeof (struct collect_memory_action));
+
+  return ipa_action;
+}
+static char *
+m_tracepoint_action_send (char *buffer, const struct tracepoint_action *action)
+{
+  struct collect_memory_action *maction
+    = (struct collect_memory_action *) action;
+
+  COPY_FIELD_TO_BUF (buffer, maction, addr);
+  COPY_FIELD_TO_BUF (buffer, maction, len);
+  COPY_FIELD_TO_BUF (buffer, maction, basereg);
+
+  return buffer;
+}
+
+static CORE_ADDR
+r_tracepoint_action_download (const struct tracepoint_action *action)
+{
+  CORE_ADDR ipa_action = target_malloc (sizeof (struct collect_registers_action));
+
+  target_write_memory (ipa_action, (unsigned char *) action,
+			 sizeof (struct collect_registers_action));
+
+  return ipa_action;
+}
+
+static char *
+r_tracepoint_action_send (char *buffer, const struct tracepoint_action *action)
+{
+  return buffer;
+}
+
+static CORE_ADDR download_agent_expr (struct agent_expr *expr);
+
+static CORE_ADDR
+x_tracepoint_action_download (const struct tracepoint_action *action)
+{
+  CORE_ADDR ipa_action = target_malloc (sizeof (struct eval_expr_action));
+  CORE_ADDR expr;
+
+  target_write_memory (ipa_action, (unsigned char *) action,
+			 sizeof (struct eval_expr_action));
+  expr = download_agent_expr (((struct eval_expr_action *) action)->expr);
+  write_inferior_data_pointer (ipa_action
+			       + offsetof (struct eval_expr_action, expr),
+			       expr);
+
+  return ipa_action;
+}
+
+/* Copy agent expression AEXPR to buffer pointed by P.  If AEXPR is NULL,
+   copy 0 to P.  Return updated header of buffer.  */
+
+static char *
+agent_expr_send (char *p, const struct agent_expr *aexpr)
+{
+  /* Copy the length of condition first, and then copy its
+     content.  */
+  if (aexpr == NULL)
+    {
+      memset (p, 0, 4);
+      p += 4;
+    }
+  else
+    {
+      memcpy (p, &aexpr->length, 4);
+      p +=4;
+
+      memcpy (p, aexpr->bytes, aexpr->length);
+      p += aexpr->length;
+    }
+  return p;
+}
+
+static char *
+x_tracepoint_action_send ( char *buffer, const struct tracepoint_action *action)
+{
+  struct eval_expr_action *eaction = (struct eval_expr_action *) action;
+
+  return agent_expr_send (buffer, eaction->expr);
+}
+
+static CORE_ADDR
+l_tracepoint_action_download (const struct tracepoint_action *action)
+{
+  CORE_ADDR ipa_action
+    = target_malloc (sizeof (struct collect_static_trace_data_action));
+
+  target_write_memory (ipa_action, (unsigned char *) action,
+			 sizeof (struct collect_static_trace_data_action));
+
+  return ipa_action;
+}
+
+static char *
+l_tracepoint_action_send (char *buffer, const struct tracepoint_action *action)
+{
+  return buffer;
+}
+
+static char *
+tracepoint_action_send (char *buffer, const struct tracepoint_action *action)
+{
+  switch (action->type)
+    {
+    case 'M':
+      return m_tracepoint_action_send (buffer, action);
+    case 'R':
+      return r_tracepoint_action_send (buffer, action);
+    case 'X':
+      return x_tracepoint_action_send (buffer, action);
+    case 'L':
+      return l_tracepoint_action_send (buffer, action);
+    }
+  error ("Unknown trace action '%c'.", action->type);
+}
+
+static CORE_ADDR
+tracepoint_action_download (const struct tracepoint_action *action)
+{
+  switch (action->type)
+    {
+    case 'M':
+      return m_tracepoint_action_download (action);
+    case 'R':
+      return r_tracepoint_action_download (action);
+    case 'X':
+      return x_tracepoint_action_download (action);
+    case 'L':
+      return l_tracepoint_action_download (action);
+    }
+  error ("Unknown trace action '%c'.", action->type);
+}
+#endif
+
+/* This structure describes a piece of the source-level definition of
+   the tracepoint.  The contents are not interpreted by the target,
+   but preserved verbatim for uploading upon reconnection.  */
+
+struct source_string
+{
+  /* The type of string, such as "cond" for a conditional.  */
+  char *type;
+
+  /* The source-level string itself.  For the sake of target
+     debugging, we store it in plaintext, even though it is always
+     transmitted in hex.  */
+  char *str;
+
+  /* Link to the next one in the list.  We link them in the order
+     received, in case some make up an ordered list of commands or
+     some such.  */
+  struct source_string *next;
+};
+
+enum tracepoint_type
+{
+  /* Trap based tracepoint.  */
+  trap_tracepoint,
+
+  /* A fast tracepoint implemented with a jump instead of a trap.  */
+  fast_tracepoint,
+
+  /* A static tracepoint, implemented by a program call into a tracing
+     library.  */
+  static_tracepoint
+};
+
+struct tracepoint_hit_ctx;
+
+typedef enum eval_result_type (*condfn) (unsigned char *,
+					 ULONGEST *);
+
+/* The definition of a tracepoint.  */
+
+/* Tracepoints may have multiple locations, each at a different
+   address.  This can occur with optimizations, template
+   instantiation, etc.  Since the locations may be in different
+   scopes, the conditions and actions may be different for each
+   location.  Our target version of tracepoints is more like GDB's
+   notion of "breakpoint locations", but we have almost nothing that
+   is not per-location, so we bother having two kinds of objects.  The
+   key consequence is that numbers are not unique, and that it takes
+   both number and address to identify a tracepoint uniquely.  */
+
+struct tracepoint
+{
+  /* The number of the tracepoint, as specified by GDB.  Several
+     tracepoint objects here may share a number.  */
+  uint32_t number;
+
+  /* Address at which the tracepoint is supposed to trigger.  Several
+     tracepoints may share an address.  */
+  CORE_ADDR address;
+
+  /* Tracepoint type.  */
+  enum tracepoint_type type;
+
+  /* True if the tracepoint is currently enabled.  */
+  int8_t enabled;
+
+  /* The number of single steps that will be performed after each
+     tracepoint hit.  */
+  uint64_t step_count;
+
+  /* The number of times the tracepoint may be hit before it will
+     terminate the entire tracing run.  */
+  uint64_t pass_count;
+
+  /* Pointer to the agent expression that is the tracepoint's
+     conditional, or NULL if the tracepoint is unconditional.  */
+  struct agent_expr *cond;
+
+  /* The list of actions to take when the tracepoint triggers.  */
+  uint32_t numactions;
+  struct tracepoint_action **actions;
+
+  /* Count of the times we've hit this tracepoint during the run.
+     Note that while-stepping steps are not counted as "hits".  */
+  uint64_t hit_count;
+
+  /* Cached sum of the sizes of traceframes created by this point.  */
+  uint64_t traceframe_usage;
+
+  CORE_ADDR compiled_cond;
+
+  /* Link to the next tracepoint in the list.  */
+  struct tracepoint *next;
+
+#ifndef IN_PROCESS_AGENT
+  /* The list of actions to take when the tracepoint triggers, in
+     string/packet form.  */
+  char **actions_str;
+
+  /* The collection of strings that describe the tracepoint as it was
+     entered into GDB.  These are not used by the target, but are
+     reported back to GDB upon reconnection.  */
+  struct source_string *source_strings;
+
+  /* The number of bytes displaced by fast tracepoints. It may subsume
+     multiple instructions, for multi-byte fast tracepoints.  This
+     field is only valid for fast tracepoints.  */
+  uint32_t orig_size;
+
+  /* Only for fast tracepoints.  */
+  CORE_ADDR obj_addr_on_target;
+
+  /* Address range where the original instruction under a fast
+     tracepoint was relocated to.  (_end is actually one byte past
+     the end).  */
+  CORE_ADDR adjusted_insn_addr;
+  CORE_ADDR adjusted_insn_addr_end;
+
+  /* The address range of the piece of the jump pad buffer that was
+     assigned to this fast tracepoint.  (_end is actually one byte
+     past the end).*/
+  CORE_ADDR jump_pad;
+  CORE_ADDR jump_pad_end;
+
+  /* The address range of the piece of the trampoline buffer that was
+     assigned to this fast tracepoint.  (_end is actually one byte
+     past the end).  */
+  CORE_ADDR trampoline;
+  CORE_ADDR trampoline_end;
+
+  /* The list of actions to take while in a stepping loop.  These
+     fields are only valid for patch-based tracepoints.  */
+  int num_step_actions;
+  struct tracepoint_action **step_actions;
+  /* Same, but in string/packet form.  */
+  char **step_actions_str;
+
+  /* Handle returned by the breakpoint or tracepoint module when we
+     inserted the trap or jump, or hooked into a static tracepoint.
+     NULL if we haven't inserted it yet.  */
+  void *handle;
+#endif
+
+};
+
+#ifndef IN_PROCESS_AGENT
+
+/* Given `while-stepping', a thread may be collecting data for more
+   than one tracepoint simultaneously.  On the other hand, the same
+   tracepoint with a while-stepping action may be hit by more than one
+   thread simultaneously (but not quite, each thread could be handling
+   a different step).  Each thread holds a list of these objects,
+   representing the current step of each while-stepping action being
+   collected.  */
+
+struct wstep_state
+{
+  struct wstep_state *next;
+
+  /* The tracepoint number.  */
+  int tp_number;
+  /* The tracepoint's address.  */
+  CORE_ADDR tp_address;
+
+  /* The number of the current step in this 'while-stepping'
+     action.  */
+  long current_step;
+};
+
+#endif
+
+EXTERN_C_PUSH
+
+/* The linked list of all tracepoints.  Marked explicitly as used as
+   the in-process library doesn't use it for the fast tracepoints
+   support.  */
+IP_AGENT_EXPORT_VAR struct tracepoint *tracepoints;
+
+/* The first tracepoint to exceed its pass count.  */
+
+IP_AGENT_EXPORT_VAR struct tracepoint *stopping_tracepoint;
+
+/* True if the trace buffer is full or otherwise no longer usable.  */
+
+IP_AGENT_EXPORT_VAR int trace_buffer_is_full;
+
+/* The first error that occurred during expression evaluation.  */
+
+/* Stored as an int to avoid the IPA ABI being dependent on whatever
+   the compiler decides to use for the enum's underlying type.  Holds
+   enum eval_result_type values.  */
+IP_AGENT_EXPORT_VAR int expr_eval_result = expr_eval_no_error;
+
+EXTERN_C_POP
+
+#ifndef IN_PROCESS_AGENT
+
+/* Pointer to the last tracepoint in the list, new tracepoints are
+   linked in at the end.  */
+
+static struct tracepoint *last_tracepoint;
+
+static const char *eval_result_names[] =
+  {
+    "terror:in the attic",  /* this should never be reported */
+    "terror:empty expression",
+    "terror:empty stack",
+    "terror:stack overflow",
+    "terror:stack underflow",
+    "terror:unhandled opcode",
+    "terror:unrecognized opcode",
+    "terror:divide by zero"
+  };
+
+#endif
+
+/* The tracepoint in which the error occurred.  */
+
+EXTERN_C_PUSH
+IP_AGENT_EXPORT_VAR struct tracepoint *error_tracepoint;
+EXTERN_C_POP
+
+struct trace_state_variable
+{
+  /* This is the name of the variable as used in GDB.  The target
+     doesn't use the name, but needs to have it for saving and
+     reconnection purposes.  */
+  char *name;
+
+  /* This number identifies the variable uniquely.  Numbers may be
+     assigned either by the target (in the case of builtin variables),
+     or by GDB, and are presumed unique during the course of a trace
+     experiment.  */
+  int number;
+
+  /* The variable's initial value, a 64-bit signed integer always.  */
+  LONGEST initial_value;
+
+  /* The variable's value, a 64-bit signed integer always.  */
+  LONGEST value;
+
+  /* Pointer to a getter function, used to supply computed values.  */
+  LONGEST (*getter) (void);
+
+  /* Link to the next variable.  */
+  struct trace_state_variable *next;
+};
+
+/* Linked list of all trace state variables.  */
+
+#ifdef IN_PROCESS_AGENT
+struct trace_state_variable *alloced_trace_state_variables;
+#endif
+
+IP_AGENT_EXPORT_VAR struct trace_state_variable *trace_state_variables;
+
+/* The results of tracing go into a fixed-size space known as the
+   "trace buffer".  Because usage follows a limited number of
+   patterns, we manage it ourselves rather than with malloc.  Basic
+   rules are that we create only one trace frame at a time, each is
+   variable in size, they are never moved once created, and we only
+   discard if we are doing a circular buffer, and then only the oldest
+   ones.  Each trace frame includes its own size, so we don't need to
+   link them together, and the trace frame number is relative to the
+   first one, so we don't need to record numbers.  A trace frame also
+   records the number of the tracepoint that created it.  The data
+   itself is a series of blocks, each introduced by a single character
+   and with a defined format.  Each type of block has enough
+   type/length info to allow scanners to jump quickly from one block
+   to the next without reading each byte in the block.  */
+
+/* Trace buffer management would be simple - advance a free pointer
+   from beginning to end, then stop - were it not for the circular
+   buffer option, which is a useful way to prevent a trace run from
+   stopping prematurely because the buffer filled up.  In the circular
+   case, the location of the first trace frame (trace_buffer_start)
+   moves as old trace frames are discarded.  Also, since we grow trace
+   frames incrementally as actions are performed, we wrap around to
+   the beginning of the trace buffer.  This is per-block, so each
+   block within a trace frame remains contiguous.  Things get messy
+   when the wrapped-around trace frame is the one being discarded; the
+   free space ends up in two parts at opposite ends of the buffer.  */
+
+#ifndef ATTR_PACKED
+#  if defined(__GNUC__)
+#    define ATTR_PACKED __attribute__ ((packed))
+#  else
+#    define ATTR_PACKED /* nothing */
+#  endif
+#endif
+
+/* The data collected at a tracepoint hit.  This object should be as
+   small as possible, since there may be a great many of them.  We do
+   not need to keep a frame number, because they are all sequential
+   and there are no deletions; so the Nth frame in the buffer is
+   always frame number N.  */
+
+struct traceframe
+{
+  /* Number of the tracepoint that collected this traceframe.  A value
+     of 0 indicates the current end of the trace buffer.  We make this
+     a 16-bit field because it's never going to happen that GDB's
+     numbering of tracepoints reaches 32,000.  */
+  int tpnum : 16;
+
+  /* The size of the data in this trace frame.  We limit this to 32
+     bits, even on a 64-bit target, because it's just implausible that
+     one is validly going to collect 4 gigabytes of data at a single
+     tracepoint hit.  */
+  unsigned int data_size : 32;
+
+  /* The base of the trace data, which is contiguous from this point.  */
+  unsigned char data[0];
+
+} ATTR_PACKED;
+
+/* The size of the EOB marker, in bytes.  A traceframe with zeroed
+   fields (and no data) marks the end of trace data.  */
+#define TRACEFRAME_EOB_MARKER_SIZE offsetof (struct traceframe, data)
+
+/* This flag is true if the trace buffer is circular, meaning that
+   when it fills, the oldest trace frames are discarded in order to
+   make room.  */
+
+#ifndef IN_PROCESS_AGENT
+static int circular_trace_buffer;
+#endif
+
+/* Size of the trace buffer.  */
+
+static LONGEST trace_buffer_size;
+
+EXTERN_C_PUSH
+
+/* Pointer to the block of memory that traceframes all go into.  */
+
+IP_AGENT_EXPORT_VAR unsigned char *trace_buffer_lo;
+
+/* Pointer to the end of the trace buffer, more precisely to the byte
+   after the end of the buffer.  */
+
+IP_AGENT_EXPORT_VAR unsigned char *trace_buffer_hi;
+
+EXTERN_C_POP
+
+/* Control structure holding the read/write/etc. pointers into the
+   trace buffer.  We need more than one of these to implement a
+   transaction-like mechanism to guarantees that both GDBserver and the
+   in-process agent can try to change the trace buffer
+   simultaneously.  */
+
+struct trace_buffer_control
+{
+  /* Pointer to the first trace frame in the buffer.  In the
+     non-circular case, this is equal to trace_buffer_lo, otherwise it
+     moves around in the buffer.  */
+  unsigned char *start;
+
+  /* Pointer to the free part of the trace buffer.  Note that we clear
+     several bytes at and after this pointer, so that traceframe
+     scans/searches terminate properly.  */
+  unsigned char *free;
+
+  /* Pointer to the byte after the end of the free part.  Note that
+     this may be smaller than trace_buffer_free in the circular case,
+     and means that the free part is in two pieces.  Initially it is
+     equal to trace_buffer_hi, then is generally equivalent to
+     trace_buffer_start.  */
+  unsigned char *end_free;
+
+  /* Pointer to the wraparound.  If not equal to trace_buffer_hi, then
+     this is the point at which the trace data breaks, and resumes at
+     trace_buffer_lo.  */
+  unsigned char *wrap;
+};
+
+/* Same as above, to be used by GDBserver when updating the in-process
+   agent.  */
+struct ipa_trace_buffer_control
+{
+  uintptr_t start;
+  uintptr_t free;
+  uintptr_t end_free;
+  uintptr_t wrap;
+};
+
+
+/* We have possibly both GDBserver and an inferior thread accessing
+   the same IPA trace buffer memory.  The IPA is the producer (tries
+   to put new frames in the buffer), while GDBserver occasionally
+   consumes them, that is, flushes the IPA's buffer into its own
+   buffer.  Both sides need to update the trace buffer control
+   pointers (current head, tail, etc.).  We can't use a global lock to
+   synchronize the accesses, as otherwise we could deadlock GDBserver
+   (if the thread holding the lock stops for a signal, say).  So
+   instead of that, we use a transaction scheme where GDBserver writes
+   always prevail over the IPAs writes, and, we have the IPA detect
+   the commit failure/overwrite, and retry the whole attempt.  This is
+   mainly implemented by having a global token object that represents
+   who wrote last to the buffer control structure.  We need to freeze
+   any inferior writing to the buffer while GDBserver touches memory,
+   so that the inferior can correctly detect that GDBserver had been
+   there, otherwise, it could mistakingly think its commit was
+   successful; that's implemented by simply having GDBserver set a
+   breakpoint the inferior hits if it is the critical region.
+
+   There are three cycling trace buffer control structure copies
+   (buffer head, tail, etc.), with the token object including an index
+   indicating which is current live copy.  The IPA tentatively builds
+   an updated copy in a non-current control structure, while GDBserver
+   always clobbers the current version directly.  The IPA then tries
+   to atomically "commit" its version; if GDBserver clobbered the
+   structure meanwhile, that will fail, and the IPA restarts the
+   allocation process.
+
+   Listing the step in further detail, we have:
+
+  In-process agent (producer):
+
+  - passes by `about_to_request_buffer_space' breakpoint/lock
+
+  - reads current token, extracts current trace buffer control index,
+    and starts tentatively updating the rightmost one (0->1, 1->2,
+    2->0).  Note that only one inferior thread is executing this code
+    at any given time, due to an outer lock in the jump pads.
+
+  - updates counters, and tries to commit the token.
+
+  - passes by second `about_to_request_buffer_space' breakpoint/lock,
+    leaving the sync region.
+
+  - checks if the update was effective.
+
+  - if trace buffer was found full, hits flush_trace_buffer
+    breakpoint, and restarts later afterwards.
+
+  GDBserver (consumer):
+
+  - sets `about_to_request_buffer_space' breakpoint/lock.
+
+  - updates the token unconditionally, using the current buffer
+    control index, since it knows that the IP agent always writes to
+    the rightmost, and due to the breakpoint, at most one IP thread
+    can try to update the trace buffer concurrently to GDBserver, so
+    there will be no danger of trace buffer control index wrap making
+    the IPA write to the same index as GDBserver.
+
+  - flushes the IP agent's trace buffer completely, and updates the
+    current trace buffer control structure.  GDBserver *always* wins.
+
+  - removes the `about_to_request_buffer_space' breakpoint.
+
+The token is stored in the `trace_buffer_ctrl_curr' variable.
+Internally, it's bits are defined as:
+
+ |-------------+-----+-------------+--------+-------------+--------------|
+ | Bit offsets |  31 |   30 - 20   |   19   |    18-8     |     7-0      |
+ |-------------+-----+-------------+--------+-------------+--------------|
+ | What        | GSB | PC (11-bit) | unused | CC (11-bit) | TBCI (8-bit) |
+ |-------------+-----+-------------+--------+-------------+--------------|
+
+ GSB  - GDBserver Stamp Bit
+ PC   - Previous Counter
+ CC   - Current Counter
+ TBCI - Trace Buffer Control Index
+
+
+An IPA update of `trace_buffer_ctrl_curr' does:
+
+    - read CC from the current token, save as PC.
+    - updates pointers
+    - atomically tries to write PC+1,CC
+
+A GDBserver update of `trace_buffer_ctrl_curr' does:
+
+    - reads PC and CC from the current token.
+    - updates pointers
+    - writes GSB,PC,CC
+*/
+
+/* These are the bits of `trace_buffer_ctrl_curr' that are reserved
+   for the counters described below.  The cleared bits are used to
+   hold the index of the items of the `trace_buffer_ctrl' array that
+   is "current".  */
+#define GDBSERVER_FLUSH_COUNT_MASK        0xfffffff0
+
+/* `trace_buffer_ctrl_curr' contains two counters.  The `previous'
+   counter, and the `current' counter.  */
+
+#define GDBSERVER_FLUSH_COUNT_MASK_PREV   0x7ff00000
+#define GDBSERVER_FLUSH_COUNT_MASK_CURR   0x0007ff00
+
+/* When GDBserver update the IP agent's `trace_buffer_ctrl_curr', it
+   always stamps this bit as set.  */
+#define GDBSERVER_UPDATED_FLUSH_COUNT_BIT 0x80000000
+
+#ifdef IN_PROCESS_AGENT
+IP_AGENT_EXPORT_VAR struct trace_buffer_control trace_buffer_ctrl[3];
+IP_AGENT_EXPORT_VAR unsigned int trace_buffer_ctrl_curr;
+
+# define TRACE_BUFFER_CTRL_CURR \
+  (trace_buffer_ctrl_curr & ~GDBSERVER_FLUSH_COUNT_MASK)
+
+#else
+
+/* The GDBserver side agent only needs one instance of this object, as
+   it doesn't need to sync with itself.  Define it as array anyway so
+   that the rest of the code base doesn't need to care for the
+   difference.  */
+struct trace_buffer_control trace_buffer_ctrl[1];
+# define TRACE_BUFFER_CTRL_CURR 0
+#endif
+
+/* These are convenience macros used to access the current trace
+   buffer control in effect.  */
+#define trace_buffer_start (trace_buffer_ctrl[TRACE_BUFFER_CTRL_CURR].start)
+#define trace_buffer_free (trace_buffer_ctrl[TRACE_BUFFER_CTRL_CURR].free)
+#define trace_buffer_end_free \
+  (trace_buffer_ctrl[TRACE_BUFFER_CTRL_CURR].end_free)
+#define trace_buffer_wrap (trace_buffer_ctrl[TRACE_BUFFER_CTRL_CURR].wrap)
+
+
+/* Macro that returns a pointer to the first traceframe in the buffer.  */
+
+#define FIRST_TRACEFRAME() ((struct traceframe *) trace_buffer_start)
+
+/* Macro that returns a pointer to the next traceframe in the buffer.
+   If the computed location is beyond the wraparound point, subtract
+   the offset of the wraparound.  */
+
+#define NEXT_TRACEFRAME_1(TF) \
+  (((unsigned char *) (TF)) + sizeof (struct traceframe) + (TF)->data_size)
+
+#define NEXT_TRACEFRAME(TF) \
+  ((struct traceframe *) (NEXT_TRACEFRAME_1 (TF)  \
+			  - ((NEXT_TRACEFRAME_1 (TF) >= trace_buffer_wrap) \
+			     ? (trace_buffer_wrap - trace_buffer_lo)	\
+			     : 0)))
+
+/* The difference between these counters represents the total number
+   of complete traceframes present in the trace buffer.  The IP agent
+   writes to the write count, GDBserver writes to read count.  */
+
+IP_AGENT_EXPORT_VAR unsigned int traceframe_write_count;
+IP_AGENT_EXPORT_VAR unsigned int traceframe_read_count;
+
+/* Convenience macro.  */
+
+#define traceframe_count \
+  ((unsigned int) (traceframe_write_count - traceframe_read_count))
+
+/* The count of all traceframes created in the current run, including
+   ones that were discarded to make room.  */
+
+IP_AGENT_EXPORT_VAR int traceframes_created;
+
+#ifndef IN_PROCESS_AGENT
+
+/* Read-only regions are address ranges whose contents don't change,
+   and so can be read from target memory even while looking at a trace
+   frame.  Without these, disassembly for instance will likely fail,
+   because the program code is not usually collected into a trace
+   frame.  This data structure does not need to be very complicated or
+   particularly efficient, it's only going to be used occasionally,
+   and only by some commands.  */
+
+struct readonly_region
+{
+  /* The bounds of the region.  */
+  CORE_ADDR start, end;
+
+  /* Link to the next one.  */
+  struct readonly_region *next;
+};
+
+/* Linked list of readonly regions.  This list stays in effect from
+   one tstart to the next.  */
+
+static struct readonly_region *readonly_regions;
+
+#endif
+
+/* The global that controls tracing overall.  */
+
+IP_AGENT_EXPORT_VAR int tracing;
+
+#ifndef IN_PROCESS_AGENT
+
+/* Controls whether tracing should continue after GDB disconnects.  */
+
+int disconnected_tracing;
+
+/* The reason for the last tracing run to have stopped.  We initialize
+   to a distinct string so that GDB can distinguish between "stopped
+   after running" and "stopped because never run" cases.  */
+
+static const char *tracing_stop_reason = "tnotrun";
+
+static int tracing_stop_tpnum;
+
+/* 64-bit timestamps for the trace run's start and finish, expressed
+   in microseconds from the Unix epoch.  */
+
+LONGEST tracing_start_time;
+LONGEST tracing_stop_time;
+
+/* The (optional) user-supplied name of the user that started the run.
+   This is an arbitrary string, and may be NULL.  */
+
+char *tracing_user_name;
+
+/* Optional user-supplied text describing the run.  This is
+   an arbitrary string, and may be NULL.  */
+
+char *tracing_notes;
+
+/* Optional user-supplied text explaining a tstop command.  This is an
+   arbitrary string, and may be NULL.  */
+
+char *tracing_stop_note;
+
+#endif
+
+/* Functions local to this file.  */
+
+/* Base "class" for tracepoint type specific data to be passed down to
+   collect_data_at_tracepoint.  */
+struct tracepoint_hit_ctx
+{
+  enum tracepoint_type type;
+};
+
+#ifdef IN_PROCESS_AGENT
+
+/* Fast/jump tracepoint specific data to be passed down to
+   collect_data_at_tracepoint.  */
+struct fast_tracepoint_ctx
+{
+  struct tracepoint_hit_ctx base;
+
+  struct regcache regcache;
+  int regcache_initted;
+  unsigned char *regspace;
+
+  unsigned char *regs;
+  struct tracepoint *tpoint;
+};
+
+/* Static tracepoint specific data to be passed down to
+   collect_data_at_tracepoint.  */
+struct static_tracepoint_ctx
+{
+  struct tracepoint_hit_ctx base;
+
+  /* The regcache corresponding to the registers state at the time of
+     the tracepoint hit.  Initialized lazily, from REGS.  */
+  struct regcache regcache;
+  int regcache_initted;
+
+  /* The buffer space REGCACHE above uses.  We use a separate buffer
+     instead of letting the regcache malloc for both signal safety and
+     performance reasons; this is allocated on the stack instead.  */
+  unsigned char *regspace;
+
+  /* The register buffer as passed on by lttng/ust.  */
+  struct registers *regs;
+
+  /* The "printf" formatter and the args the user passed to the marker
+     call.  We use this to be able to collect "static trace data"
+     ($_sdata).  */
+  const char *fmt;
+  va_list *args;
+
+  /* The GDB tracepoint matching the probed marker that was "hit".  */
+  struct tracepoint *tpoint;
+};
+
+#else
+
+/* Static tracepoint specific data to be passed down to
+   collect_data_at_tracepoint.  */
+struct trap_tracepoint_ctx
+{
+  struct tracepoint_hit_ctx base;
+
+  struct regcache *regcache;
+};
+
+#endif
+
+#ifndef IN_PROCESS_AGENT
+static CORE_ADDR traceframe_get_pc (struct traceframe *tframe);
+static int traceframe_read_tsv (int num, LONGEST *val);
+#endif
+
+static int condition_true_at_tracepoint (struct tracepoint_hit_ctx *ctx,
+					 struct tracepoint *tpoint);
+
+#ifndef IN_PROCESS_AGENT
+static void clear_readonly_regions (void);
+static void clear_installed_tracepoints (void);
+#endif
+
+static void collect_data_at_tracepoint (struct tracepoint_hit_ctx *ctx,
+					CORE_ADDR stop_pc,
+					struct tracepoint *tpoint);
+#ifndef IN_PROCESS_AGENT
+static void collect_data_at_step (struct tracepoint_hit_ctx *ctx,
+				  CORE_ADDR stop_pc,
+				  struct tracepoint *tpoint, int current_step);
+static void compile_tracepoint_condition (struct tracepoint *tpoint,
+					  CORE_ADDR *jump_entry);
+#endif
+static void do_action_at_tracepoint (struct tracepoint_hit_ctx *ctx,
+				     CORE_ADDR stop_pc,
+				     struct tracepoint *tpoint,
+				     struct traceframe *tframe,
+				     struct tracepoint_action *taction);
+
+#ifndef IN_PROCESS_AGENT
+static struct tracepoint *fast_tracepoint_from_ipa_tpoint_address (CORE_ADDR);
+
+static void install_tracepoint (struct tracepoint *, char *own_buf);
+static void download_tracepoint (struct tracepoint *);
+static int install_fast_tracepoint (struct tracepoint *, char *errbuf);
+static void clone_fast_tracepoint (struct tracepoint *to,
+				   const struct tracepoint *from);
+#endif
+
+static LONGEST get_timestamp (void);
+
+#if defined(__GNUC__)
+#  define memory_barrier() asm volatile ("" : : : "memory")
+#else
+#  define memory_barrier() do {} while (0)
+#endif
+
+/* We only build the IPA if this builtin is supported, and there are
+   no uses of this in GDBserver itself, so we're safe in defining this
+   unconditionally.  */
+#define cmpxchg(mem, oldval, newval) \
+  __sync_val_compare_and_swap (mem, oldval, newval)
+
+/* Record that an error occurred during expression evaluation.  */
+
+static void
+record_tracepoint_error (struct tracepoint *tpoint, const char *which,
+			 enum eval_result_type rtype)
+{
+  trace_debug ("Tracepoint %d at %s %s eval reports error %d",
+	       tpoint->number, paddress (tpoint->address), which, rtype);
+
+#ifdef IN_PROCESS_AGENT
+  /* Only record the first error we get.  */
+  if (cmpxchg (&expr_eval_result,
+	       expr_eval_no_error,
+	       rtype) != expr_eval_no_error)
+    return;
+#else
+  if (expr_eval_result != expr_eval_no_error)
+    return;
+#endif
+
+  error_tracepoint = tpoint;
+}
+
+/* Trace buffer management.  */
+
+static void
+clear_trace_buffer (void)
+{
+  trace_buffer_start = trace_buffer_lo;
+  trace_buffer_free = trace_buffer_lo;
+  trace_buffer_end_free = trace_buffer_hi;
+  trace_buffer_wrap = trace_buffer_hi;
+  /* A traceframe with zeroed fields marks the end of trace data.  */
+  ((struct traceframe *) trace_buffer_free)->tpnum = 0;
+  ((struct traceframe *) trace_buffer_free)->data_size = 0;
+  traceframe_read_count = traceframe_write_count = 0;
+  traceframes_created = 0;
+}
+
+#ifndef IN_PROCESS_AGENT
+
+static void
+clear_inferior_trace_buffer (void)
+{
+  CORE_ADDR ipa_trace_buffer_lo;
+  CORE_ADDR ipa_trace_buffer_hi;
+  struct traceframe ipa_traceframe = { 0 };
+  struct ipa_trace_buffer_control ipa_trace_buffer_ctrl;
+
+  read_inferior_data_pointer (ipa_sym_addrs.addr_trace_buffer_lo,
+			      &ipa_trace_buffer_lo);
+  read_inferior_data_pointer (ipa_sym_addrs.addr_trace_buffer_hi,
+			      &ipa_trace_buffer_hi);
+
+  ipa_trace_buffer_ctrl.start = ipa_trace_buffer_lo;
+  ipa_trace_buffer_ctrl.free = ipa_trace_buffer_lo;
+  ipa_trace_buffer_ctrl.end_free = ipa_trace_buffer_hi;
+  ipa_trace_buffer_ctrl.wrap = ipa_trace_buffer_hi;
+
+  /* A traceframe with zeroed fields marks the end of trace data.  */
+  target_write_memory (ipa_sym_addrs.addr_trace_buffer_ctrl,
+			 (unsigned char *) &ipa_trace_buffer_ctrl,
+			 sizeof (ipa_trace_buffer_ctrl));
+
+  write_inferior_uinteger (ipa_sym_addrs.addr_trace_buffer_ctrl_curr, 0);
+
+  /* A traceframe with zeroed fields marks the end of trace data.  */
+  target_write_memory (ipa_trace_buffer_lo,
+			 (unsigned char *) &ipa_traceframe,
+			 sizeof (ipa_traceframe));
+
+  write_inferior_uinteger (ipa_sym_addrs.addr_traceframe_write_count, 0);
+  write_inferior_uinteger (ipa_sym_addrs.addr_traceframe_read_count, 0);
+  write_inferior_integer (ipa_sym_addrs.addr_traceframes_created, 0);
+}
+
+#endif
+
+static void
+init_trace_buffer (LONGEST bufsize)
+{
+  size_t alloc_size;
+
+  trace_buffer_size = bufsize;
+
+  /* Make sure to internally allocate at least space for the EOB
+     marker.  */
+  alloc_size = (bufsize < TRACEFRAME_EOB_MARKER_SIZE
+		? TRACEFRAME_EOB_MARKER_SIZE : bufsize);
+  trace_buffer_lo = (unsigned char *) xrealloc (trace_buffer_lo, alloc_size);
+
+  trace_buffer_hi = trace_buffer_lo + trace_buffer_size;
+
+  clear_trace_buffer ();
+}
+
+#ifdef IN_PROCESS_AGENT
+
+/* This is needed for -Wmissing-declarations.  */
+IP_AGENT_EXPORT_FUNC void about_to_request_buffer_space (void);
+
+IP_AGENT_EXPORT_FUNC void
+about_to_request_buffer_space (void)
+{
+  /* GDBserver places breakpoint here while it goes about to flush
+     data at random times.  */
+  UNKNOWN_SIDE_EFFECTS();
+}
+
+#endif
+
+/* Carve out a piece of the trace buffer, returning NULL in case of
+   failure.  */
+
+static void *
+trace_buffer_alloc (size_t amt)
+{
+  unsigned char *rslt;
+  struct trace_buffer_control *tbctrl;
+  unsigned int curr;
+#ifdef IN_PROCESS_AGENT
+  unsigned int prev, prev_filtered;
+  unsigned int commit_count;
+  unsigned int commit;
+  unsigned int readout;
+#else
+  struct traceframe *oldest;
+  unsigned char *new_start;
+#endif
+
+  trace_debug ("Want to allocate %ld+%ld bytes in trace buffer",
+	       (long) amt, (long) sizeof (struct traceframe));
+
+  /* Account for the EOB marker.  */
+  amt += TRACEFRAME_EOB_MARKER_SIZE;
+
+#ifdef IN_PROCESS_AGENT
+ again:
+  memory_barrier ();
+
+  /* Read the current token and extract the index to try to write to,
+     storing it in CURR.  */
+  prev = trace_buffer_ctrl_curr;
+  prev_filtered = prev & ~GDBSERVER_FLUSH_COUNT_MASK;
+  curr = prev_filtered + 1;
+  if (curr > 2)
+    curr = 0;
+
+  about_to_request_buffer_space ();
+
+  /* Start out with a copy of the current state.  GDBserver may be
+     midway writing to the PREV_FILTERED TBC, but, that's OK, we won't
+     be able to commit anyway if that happens.  */
+  trace_buffer_ctrl[curr]
+    = trace_buffer_ctrl[prev_filtered];
+  trace_debug ("trying curr=%u", curr);
+#else
+  /* The GDBserver's agent doesn't need all that syncing, and always
+     updates TCB 0 (there's only one, mind you).  */
+  curr = 0;
+#endif
+  tbctrl = &trace_buffer_ctrl[curr];
+
+  /* Offsets are easier to grok for debugging than raw addresses,
+     especially for the small trace buffer sizes that are useful for
+     testing.  */
+  trace_debug ("Trace buffer [%d] start=%d free=%d endfree=%d wrap=%d hi=%d",
+	       curr,
+	       (int) (tbctrl->start - trace_buffer_lo),
+	       (int) (tbctrl->free - trace_buffer_lo),
+	       (int) (tbctrl->end_free - trace_buffer_lo),
+	       (int) (tbctrl->wrap - trace_buffer_lo),
+	       (int) (trace_buffer_hi - trace_buffer_lo));
+
+  /* The algorithm here is to keep trying to get a contiguous block of
+     the requested size, possibly discarding older traceframes to free
+     up space.  Since free space might come in one or two pieces,
+     depending on whether discarded traceframes wrapped around at the
+     high end of the buffer, we test both pieces after each
+     discard.  */
+  while (1)
+    {
+      /* First, if we have two free parts, try the upper one first.  */
+      if (tbctrl->end_free < tbctrl->free)
+	{
+	  if (tbctrl->free + amt <= trace_buffer_hi)
+	    /* We have enough in the upper part.  */
+	    break;
+	  else
+	    {
+	      /* Our high part of free space wasn't enough.  Give up
+		 on it for now, set wraparound.  We will recover the
+		 space later, if/when the wrapped-around traceframe is
+		 discarded.  */
+	      trace_debug ("Upper part too small, setting wraparound");
+	      tbctrl->wrap = tbctrl->free;
+	      tbctrl->free = trace_buffer_lo;
+	    }
+	}
+
+      /* The normal case.  */
+      if (tbctrl->free + amt <= tbctrl->end_free)
+	break;
+
+#ifdef IN_PROCESS_AGENT
+      /* The IP Agent's buffer is always circular.  It isn't used
+	 currently, but `circular_trace_buffer' could represent
+	 GDBserver's mode.  If we didn't find space, ask GDBserver to
+	 flush.  */
+
+      flush_trace_buffer ();
+      memory_barrier ();
+      if (tracing)
+	{
+	  trace_debug ("gdbserver flushed buffer, retrying");
+	  goto again;
+	}
+
+      /* GDBserver cancelled the tracing.  Bail out as well.  */
+      return NULL;
+#else
+      /* If we're here, then neither part is big enough, and
+	 non-circular trace buffers are now full.  */
+      if (!circular_trace_buffer)
+	{
+	  trace_debug ("Not enough space in the trace buffer");
+	  return NULL;
+	}
+
+      trace_debug ("Need more space in the trace buffer");
+
+      /* If we have a circular buffer, we can try discarding the
+	 oldest traceframe and see if that helps.  */
+      oldest = FIRST_TRACEFRAME ();
+      if (oldest->tpnum == 0)
+	{
+	  /* Not good; we have no traceframes to free.  Perhaps we're
+	     asking for a block that is larger than the buffer?  In
+	     any case, give up.  */
+	  trace_debug ("No traceframes to discard");
+	  return NULL;
+	}
+
+      /* We don't run this code in the in-process agent currently.
+	 E.g., we could leave the in-process agent in autonomous
+	 circular mode if we only have fast tracepoints.  If we do
+	 that, then this bit becomes racy with GDBserver, which also
+	 writes to this counter.  */
+      --traceframe_write_count;
+
+      new_start = (unsigned char *) NEXT_TRACEFRAME (oldest);
+      /* If we freed the traceframe that wrapped around, go back
+	 to the non-wrap case.  */
+      if (new_start < tbctrl->start)
+	{
+	  trace_debug ("Discarding past the wraparound");
+	  tbctrl->wrap = trace_buffer_hi;
+	}
+      tbctrl->start = new_start;
+      tbctrl->end_free = tbctrl->start;
+
+      trace_debug ("Discarded a traceframe\n"
+		   "Trace buffer [%d], start=%d free=%d "
+		   "endfree=%d wrap=%d hi=%d",
+		   curr,
+		   (int) (tbctrl->start - trace_buffer_lo),
+		   (int) (tbctrl->free - trace_buffer_lo),
+		   (int) (tbctrl->end_free - trace_buffer_lo),
+		   (int) (tbctrl->wrap - trace_buffer_lo),
+		   (int) (trace_buffer_hi - trace_buffer_lo));
+
+      /* Now go back around the loop.  The discard might have resulted
+	 in either one or two pieces of free space, so we want to try
+	 both before freeing any more traceframes.  */
+#endif
+    }
+
+  /* If we get here, we know we can provide the asked-for space.  */
+
+  rslt = tbctrl->free;
+
+  /* Adjust the request back down, now that we know we have space for
+     the marker, but don't commit to AMT yet, we may still need to
+     restart the operation if GDBserver touches the trace buffer
+     (obviously only important in the in-process agent's version).  */
+  tbctrl->free += (amt - sizeof (struct traceframe));
+
+  /* Or not.  If GDBserver changed the trace buffer behind our back,
+     we get to restart a new allocation attempt.  */
+
+#ifdef IN_PROCESS_AGENT
+  /* Build the tentative token.  */
+  commit_count = (((prev & GDBSERVER_FLUSH_COUNT_MASK_CURR) + 0x100)
+		  & GDBSERVER_FLUSH_COUNT_MASK_CURR);
+  commit = (((prev & GDBSERVER_FLUSH_COUNT_MASK_CURR) << 12)
+	    | commit_count
+	    | curr);
+
+  /* Try to commit it.  */
+  readout = cmpxchg (&trace_buffer_ctrl_curr, prev, commit);
+  if (readout != prev)
+    {
+      trace_debug ("GDBserver has touched the trace buffer, restarting."
+		   " (prev=%08x, commit=%08x, readout=%08x)",
+		   prev, commit, readout);
+      goto again;
+    }
+
+  /* Hold your horses here.  Even if that change was committed,
+     GDBserver could come in, and clobber it.  We need to hold to be
+     able to tell if GDBserver clobbers before or after we committed
+     the change.  Whenever GDBserver goes about touching the IPA
+     buffer, it sets a breakpoint in this routine, so we have a sync
+     point here.  */
+  about_to_request_buffer_space ();
+
+  /* Check if the change has been effective, even if GDBserver stopped
+     us at the breakpoint.  */
+
+  {
+    unsigned int refetch;
+
+    memory_barrier ();
+
+    refetch = trace_buffer_ctrl_curr;
+
+    if (refetch == commit
+	|| ((refetch & GDBSERVER_FLUSH_COUNT_MASK_PREV) >> 12) == commit_count)
+      {
+	/* effective */
+	trace_debug ("change is effective: (prev=%08x, commit=%08x, "
+		     "readout=%08x, refetch=%08x)",
+		     prev, commit, readout, refetch);
+      }
+    else
+      {
+	trace_debug ("GDBserver has touched the trace buffer, not effective."
+		     " (prev=%08x, commit=%08x, readout=%08x, refetch=%08x)",
+		     prev, commit, readout, refetch);
+	goto again;
+      }
+  }
+#endif
+
+  /* We have a new piece of the trace buffer.  Hurray!  */
+
+  /* Add an EOB marker just past this allocation.  */
+  ((struct traceframe *) tbctrl->free)->tpnum = 0;
+  ((struct traceframe *) tbctrl->free)->data_size = 0;
+
+  /* Adjust the request back down, now that we know we have space for
+     the marker.  */
+  amt -= sizeof (struct traceframe);
+
+  if (debug_threads)
+    {
+      trace_debug ("Allocated %d bytes", (int) amt);
+      trace_debug ("Trace buffer [%d] start=%d free=%d "
+		   "endfree=%d wrap=%d hi=%d",
+		   curr,
+		   (int) (tbctrl->start - trace_buffer_lo),
+		   (int) (tbctrl->free - trace_buffer_lo),
+		   (int) (tbctrl->end_free - trace_buffer_lo),
+		   (int) (tbctrl->wrap - trace_buffer_lo),
+		   (int) (trace_buffer_hi - trace_buffer_lo));
+    }
+
+  return rslt;
+}
+
+#ifndef IN_PROCESS_AGENT
+
+/* Return the total free space.  This is not necessarily the largest
+   block we can allocate, because of the two-part case.  */
+
+static int
+free_space (void)
+{
+  if (trace_buffer_free <= trace_buffer_end_free)
+    return trace_buffer_end_free - trace_buffer_free;
+  else
+    return ((trace_buffer_end_free - trace_buffer_lo)
+	    + (trace_buffer_hi - trace_buffer_free));
+}
+
+/* An 'S' in continuation packets indicates remainder are for
+   while-stepping.  */
+
+static int seen_step_action_flag;
+
+/* Create a tracepoint (location) with given number and address.  Add this
+   new tracepoint to list and sort this list.  */
+
+static struct tracepoint *
+add_tracepoint (int num, CORE_ADDR addr)
+{
+  struct tracepoint *tpoint, **tp_next;
+
+  tpoint = XNEW (struct tracepoint);
+  tpoint->number = num;
+  tpoint->address = addr;
+  tpoint->numactions = 0;
+  tpoint->actions = NULL;
+  tpoint->actions_str = NULL;
+  tpoint->cond = NULL;
+  tpoint->num_step_actions = 0;
+  tpoint->step_actions = NULL;
+  tpoint->step_actions_str = NULL;
+  /* Start all off as regular (slow) tracepoints.  */
+  tpoint->type = trap_tracepoint;
+  tpoint->orig_size = -1;
+  tpoint->source_strings = NULL;
+  tpoint->compiled_cond = 0;
+  tpoint->handle = NULL;
+  tpoint->next = NULL;
+
+  /* Find a place to insert this tracepoint into list in order to keep
+     the tracepoint list still in the ascending order.  There may be
+     multiple tracepoints at the same address as TPOINT's, and this
+     guarantees TPOINT is inserted after all the tracepoints which are
+     set at the same address.  For example, fast tracepoints A, B, C are
+     set at the same address, and D is to be insert at the same place as
+     well,
+
+     -->| A |--> | B |-->| C |->...
+
+     One jump pad was created for tracepoint A, B, and C, and the target
+     address of A is referenced/used in jump pad.  So jump pad will let
+     inferior jump to A.  If D is inserted in front of A, like this,
+
+     -->| D |-->| A |--> | B |-->| C |->...
+
+     without updating jump pad, D is not reachable during collect, which
+     is wrong.  As we can see, the order of B, C and D doesn't matter, but
+     A should always be the `first' one.  */
+  for (tp_next = &tracepoints;
+       (*tp_next) != NULL && (*tp_next)->address <= tpoint->address;
+       tp_next = &(*tp_next)->next)
+    ;
+  tpoint->next = *tp_next;
+  *tp_next = tpoint;
+  last_tracepoint = tpoint;
+
+  seen_step_action_flag = 0;
+
+  return tpoint;
+}
+
+#ifndef IN_PROCESS_AGENT
+
+/* Return the tracepoint with the given number and address, or NULL.  */
+
+static struct tracepoint *
+find_tracepoint (int id, CORE_ADDR addr)
+{
+  struct tracepoint *tpoint;
+
+  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
+    if (tpoint->number == id && tpoint->address == addr)
+      return tpoint;
+
+  return NULL;
+}
+
+/* Remove TPOINT from global list.  */
+
+static void
+remove_tracepoint (struct tracepoint *tpoint)
+{
+  struct tracepoint *tp, *tp_prev;
+
+  for (tp = tracepoints, tp_prev = NULL; tp && tp != tpoint;
+       tp_prev = tp, tp = tp->next)
+    ;
+
+  if (tp)
+    {
+      if (tp_prev)
+	tp_prev->next = tp->next;
+      else
+	tracepoints = tp->next;
+
+      xfree (tp);
+    }
+}
+
+/* There may be several tracepoints with the same number (because they
+   are "locations", in GDB parlance); return the next one after the
+   given tracepoint, or search from the beginning of the list if the
+   first argument is NULL.  */
+
+static struct tracepoint *
+find_next_tracepoint_by_number (struct tracepoint *prev_tp, int num)
+{
+  struct tracepoint *tpoint;
+
+  if (prev_tp)
+    tpoint = prev_tp->next;
+  else
+    tpoint = tracepoints;
+  for (; tpoint; tpoint = tpoint->next)
+    if (tpoint->number == num)
+      return tpoint;
+
+  return NULL;
+}
+
+#endif
+
+/* Append another action to perform when the tracepoint triggers.  */
+
+static void
+add_tracepoint_action (struct tracepoint *tpoint, const char *packet)
+{
+  const char *act;
+
+  if (*packet == 'S')
+    {
+      seen_step_action_flag = 1;
+      ++packet;
+    }
+
+  act = packet;
+
+  while (*act)
+    {
+      const char *act_start = act;
+      struct tracepoint_action *action = NULL;
+
+      switch (*act)
+	{
+	case 'M':
+	  {
+	    struct collect_memory_action *maction =
+	      XNEW (struct collect_memory_action);
+	    ULONGEST basereg;
+	    int is_neg;
+
+	    maction->base.type = *act;
+	    action = &maction->base;
+
+	    ++act;
+	    is_neg = (*act == '-');
+	    if (*act == '-')
+	      ++act;
+	    act = unpack_varlen_hex (act, &basereg);
+	    ++act;
+	    act = unpack_varlen_hex (act, &maction->addr);
+	    ++act;
+	    act = unpack_varlen_hex (act, &maction->len);
+	    maction->basereg = (is_neg
+				? - (int) basereg
+				: (int) basereg);
+	    trace_debug ("Want to collect %s bytes at 0x%s (basereg %d)",
+			 pulongest (maction->len),
+			 paddress (maction->addr), maction->basereg);
+	    break;
+	  }
+	case 'R':
+	  {
+	    struct collect_registers_action *raction =
+	      XNEW (struct collect_registers_action);
+
+	    raction->base.type = *act;
+	    action = &raction->base;
+
+	    trace_debug ("Want to collect registers");
+	    ++act;
+	    /* skip past hex digits of mask for now */
+	    while (isxdigit(*act))
+	      ++act;
+	    break;
+	  }
+	case 'L':
+	  {
+	    struct collect_static_trace_data_action *raction =
+	      XNEW (struct collect_static_trace_data_action);
+
+	    raction->base.type = *act;
+	    action = &raction->base;
+
+	    trace_debug ("Want to collect static trace data");
+	    ++act;
+	    break;
+	  }
+	case 'S':
+	  trace_debug ("Unexpected step action, ignoring");
+	  ++act;
+	  break;
+	case 'X':
+	  {
+	    struct eval_expr_action *xaction = XNEW (struct eval_expr_action);
+
+	    xaction->base.type = *act;
+	    action = &xaction->base;
+
+	    trace_debug ("Want to evaluate expression");
+	    xaction->expr = gdb_parse_agent_expr (&act);
+	    break;
+	  }
+	default:
+	  trace_debug ("unknown trace action '%c', ignoring...", *act);
+	  break;
+	case '-':
+	  break;
+	}
+
+      if (action == NULL)
+	break;
+
+      if (seen_step_action_flag)
+	{
+	  tpoint->num_step_actions++;
+
+	  tpoint->step_actions
+	    = XRESIZEVEC (struct tracepoint_action *, tpoint->step_actions,
+			  tpoint->num_step_actions);
+	  tpoint->step_actions_str
+	    = XRESIZEVEC (char *, tpoint->step_actions_str,
+			  tpoint->num_step_actions);
+	  tpoint->step_actions[tpoint->num_step_actions - 1] = action;
+	  tpoint->step_actions_str[tpoint->num_step_actions - 1]
+	    = savestring (act_start, act - act_start);
+	}
+      else
+	{
+	  tpoint->numactions++;
+	  tpoint->actions
+	    = XRESIZEVEC (struct tracepoint_action *, tpoint->actions,
+			  tpoint->numactions);
+	  tpoint->actions_str
+	    = XRESIZEVEC (char *, tpoint->actions_str, tpoint->numactions);
+	  tpoint->actions[tpoint->numactions - 1] = action;
+	  tpoint->actions_str[tpoint->numactions - 1]
+	    = savestring (act_start, act - act_start);
+	}
+    }
+}
+
+#endif
+
+/* Find or create a trace state variable with the given number.  */
+
+static struct trace_state_variable *
+get_trace_state_variable (int num)
+{
+  struct trace_state_variable *tsv;
+
+#ifdef IN_PROCESS_AGENT
+  /* Search for an existing variable.  */
+  for (tsv = alloced_trace_state_variables; tsv; tsv = tsv->next)
+    if (tsv->number == num)
+      return tsv;
+#endif
+
+  /* Search for an existing variable.  */
+  for (tsv = trace_state_variables; tsv; tsv = tsv->next)
+    if (tsv->number == num)
+      return tsv;
+
+  return NULL;
+}
+
+/* Find or create a trace state variable with the given number.  */
+
+static struct trace_state_variable *
+create_trace_state_variable (int num, int gdb)
+{
+  struct trace_state_variable *tsv;
+
+  tsv = get_trace_state_variable (num);
+  if (tsv != NULL)
+    return tsv;
+
+  /* Create a new variable.  */
+  tsv = XNEW (struct trace_state_variable);
+  tsv->number = num;
+  tsv->initial_value = 0;
+  tsv->value = 0;
+  tsv->getter = NULL;
+  tsv->name = NULL;
+#ifdef IN_PROCESS_AGENT
+  if (!gdb)
+    {
+      tsv->next = alloced_trace_state_variables;
+      alloced_trace_state_variables = tsv;
+    }
+  else
+#endif
+    {
+      tsv->next = trace_state_variables;
+      trace_state_variables = tsv;
+    }
+  return tsv;
+}
+
+/* This is needed for -Wmissing-declarations.  */
+IP_AGENT_EXPORT_FUNC LONGEST get_trace_state_variable_value (int num);
+
+IP_AGENT_EXPORT_FUNC LONGEST
+get_trace_state_variable_value (int num)
+{
+  struct trace_state_variable *tsv;
+
+  tsv = get_trace_state_variable (num);
+
+  if (!tsv)
+    {
+      trace_debug ("No trace state variable %d, skipping value get", num);
+      return 0;
+    }
+
+  /* Call a getter function if we have one.  While it's tempting to
+     set up something to only call the getter once per tracepoint hit,
+     it could run afoul of thread races. Better to let the getter
+     handle it directly, if necessary to worry about it.  */
+  if (tsv->getter)
+    tsv->value = (tsv->getter) ();
+
+  trace_debug ("get_trace_state_variable_value(%d) ==> %s",
+	       num, plongest (tsv->value));
+
+  return tsv->value;
+}
+
+/* This is needed for -Wmissing-declarations.  */
+IP_AGENT_EXPORT_FUNC void set_trace_state_variable_value (int num,
+							  LONGEST val);
+
+IP_AGENT_EXPORT_FUNC void
+set_trace_state_variable_value (int num, LONGEST val)
+{
+  struct trace_state_variable *tsv;
+
+  tsv = get_trace_state_variable (num);
+
+  if (!tsv)
+    {
+      trace_debug ("No trace state variable %d, skipping value set", num);
+      return;
+    }
+
+  tsv->value = val;
+}
+
+LONGEST
+agent_get_trace_state_variable_value (int num)
+{
+  return get_trace_state_variable_value (num);
+}
+
+void
+agent_set_trace_state_variable_value (int num, LONGEST val)
+{
+  set_trace_state_variable_value (num, val);
+}
+
+static void
+set_trace_state_variable_name (int num, const char *name)
+{
+  struct trace_state_variable *tsv;
+
+  tsv = get_trace_state_variable (num);
+
+  if (!tsv)
+    {
+      trace_debug ("No trace state variable %d, skipping name set", num);
+      return;
+    }
+
+  tsv->name = (char *) name;
+}
+
+static void
+set_trace_state_variable_getter (int num, LONGEST (*getter) (void))
+{
+  struct trace_state_variable *tsv;
+
+  tsv = get_trace_state_variable (num);
+
+  if (!tsv)
+    {
+      trace_debug ("No trace state variable %d, skipping getter set", num);
+      return;
+    }
+
+  tsv->getter = getter;
+}
+
+/* Add a raw traceframe for the given tracepoint.  */
+
+static struct traceframe *
+add_traceframe (struct tracepoint *tpoint)
+{
+  struct traceframe *tframe;
+
+  tframe
+    = (struct traceframe *) trace_buffer_alloc (sizeof (struct traceframe));
+
+  if (tframe == NULL)
+    return NULL;
+
+  tframe->tpnum = tpoint->number;
+  tframe->data_size = 0;
+
+  return tframe;
+}
+
+/* Add a block to the traceframe currently being worked on.  */
+
+static unsigned char *
+add_traceframe_block (struct traceframe *tframe,
+		      struct tracepoint *tpoint, int amt)
+{
+  unsigned char *block;
+
+  if (!tframe)
+    return NULL;
+
+  block = (unsigned char *) trace_buffer_alloc (amt);
+
+  if (!block)
+    return NULL;
+
+  gdb_assert (tframe->tpnum == tpoint->number);
+
+  tframe->data_size += amt;
+  tpoint->traceframe_usage += amt;
+
+  return block;
+}
+
+/* Flag that the current traceframe is finished.  */
+
+static void
+finish_traceframe (struct traceframe *tframe)
+{
+  ++traceframe_write_count;
+  ++traceframes_created;
+}
+
+#ifndef IN_PROCESS_AGENT
+
+/* Given a traceframe number NUM, find the NUMth traceframe in the
+   buffer.  */
+
+static struct traceframe *
+find_traceframe (int num)
+{
+  struct traceframe *tframe;
+  int tfnum = 0;
+
+  for (tframe = FIRST_TRACEFRAME ();
+       tframe->tpnum != 0;
+       tframe = NEXT_TRACEFRAME (tframe))
+    {
+      if (tfnum == num)
+	return tframe;
+      ++tfnum;
+    }
+
+  return NULL;
+}
+
+static CORE_ADDR
+get_traceframe_address (struct traceframe *tframe)
+{
+  CORE_ADDR addr;
+  struct tracepoint *tpoint;
+
+  addr = traceframe_get_pc (tframe);
+
+  if (addr)
+    return addr;
+
+  /* Fallback strategy, will be incorrect for while-stepping frames
+     and multi-location tracepoints.  */
+  tpoint = find_next_tracepoint_by_number (NULL, tframe->tpnum);
+  return tpoint->address;
+}
+
+/* Search for the next traceframe whose address is inside or outside
+   the given range.  */
+
+static struct traceframe *
+find_next_traceframe_in_range (CORE_ADDR lo, CORE_ADDR hi, int inside_p,
+			       int *tfnump)
+{
+  client_state &cs = get_client_state ();
+  struct traceframe *tframe;
+  CORE_ADDR tfaddr;
+
+  *tfnump = cs.current_traceframe + 1;
+  tframe = find_traceframe (*tfnump);
+  /* The search is not supposed to wrap around.  */
+  if (!tframe)
+    {
+      *tfnump = -1;
+      return NULL;
+    }
+
+  for (; tframe->tpnum != 0; tframe = NEXT_TRACEFRAME (tframe))
+    {
+      tfaddr = get_traceframe_address (tframe);
+      if (inside_p
+	  ? (lo <= tfaddr && tfaddr <= hi)
+	  : (lo > tfaddr || tfaddr > hi))
+	return tframe;
+      ++*tfnump;
+    }
+
+  *tfnump = -1;
+  return NULL;
+}
+
+/* Search for the next traceframe recorded by the given tracepoint.
+   Note that for multi-location tracepoints, this will find whatever
+   location appears first.  */
+
+static struct traceframe *
+find_next_traceframe_by_tracepoint (int num, int *tfnump)
+{
+  client_state &cs = get_client_state ();
+  struct traceframe *tframe;
+
+  *tfnump = cs.current_traceframe + 1;
+  tframe = find_traceframe (*tfnump);
+  /* The search is not supposed to wrap around.  */
+  if (!tframe)
+    {
+      *tfnump = -1;
+      return NULL;
+    }
+
+  for (; tframe->tpnum != 0; tframe = NEXT_TRACEFRAME (tframe))
+    {
+      if (tframe->tpnum == num)
+	return tframe;
+      ++*tfnump;
+    }
+
+  *tfnump = -1;
+  return NULL;
+}
+
+#endif
+
+#ifndef IN_PROCESS_AGENT
+
+/* Clear all past trace state.  */
+
+static void
+cmd_qtinit (char *packet)
+{
+  client_state &cs = get_client_state ();
+  struct trace_state_variable *tsv, *prev, *next;
+
+  /* Can't do this command without a pid attached.  */
+  if (current_thread == NULL)
+    {
+      write_enn (packet);
+      return;
+    }
+
+  /* Make sure we don't try to read from a trace frame.  */
+  cs.current_traceframe = -1;
+
+  stop_tracing ();
+
+  trace_debug ("Initializing the trace");
+
+  clear_installed_tracepoints ();
+  clear_readonly_regions ();
+
+  tracepoints = NULL;
+  last_tracepoint = NULL;
+
+  /* Clear out any leftover trace state variables.  Ones with target
+     defined getters should be kept however.  */
+  prev = NULL;
+  tsv = trace_state_variables;
+  while (tsv)
+    {
+      trace_debug ("Looking at var %d", tsv->number);
+      if (tsv->getter == NULL)
+	{
+	  next = tsv->next;
+	  if (prev)
+	    prev->next = next;
+	  else
+	    trace_state_variables = next;
+	  trace_debug ("Deleting var %d", tsv->number);
+	  free (tsv);
+	  tsv = next;
+	}
+      else
+	{
+	  prev = tsv;
+	  tsv = tsv->next;
+	}
+    }
+
+  clear_trace_buffer ();
+  clear_inferior_trace_buffer ();
+
+  write_ok (packet);
+}
+
+/* Unprobe the UST marker at ADDRESS.  */
+
+static void
+unprobe_marker_at (CORE_ADDR address)
+{
+  char cmd[IPA_CMD_BUF_SIZE];
+
+  sprintf (cmd, "unprobe_marker_at:%s", paddress (address));
+  run_inferior_command (cmd, strlen (cmd) + 1);
+}
+
+/* Restore the program to its pre-tracing state.  This routine may be called
+   in error situations, so it needs to be careful about only restoring
+   from known-valid bits.  */
+
+static void
+clear_installed_tracepoints (void)
+{
+  struct tracepoint *tpoint;
+  struct tracepoint *prev_stpoint;
+
+  target_pause_all (true);
+
+  prev_stpoint = NULL;
+
+  /* Restore any bytes overwritten by tracepoints.  */
+  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
+    {
+      /* Catch the case where we might try to remove a tracepoint that
+	 was never actually installed.  */
+      if (tpoint->handle == NULL)
+	{
+	  trace_debug ("Tracepoint %d at 0x%s was "
+		       "never installed, nothing to clear",
+		       tpoint->number, paddress (tpoint->address));
+	  continue;
+	}
+
+      switch (tpoint->type)
+	{
+	case trap_tracepoint:
+	  {
+	    struct breakpoint *bp
+	      = (struct breakpoint *) tpoint->handle;
+
+	    delete_breakpoint (bp);
+	  }
+	  break;
+	case fast_tracepoint:
+	  {
+	    struct fast_tracepoint_jump *jump
+	      = (struct fast_tracepoint_jump *) tpoint->handle;
+
+	    delete_fast_tracepoint_jump (jump);
+	  }
+	  break;
+	case static_tracepoint:
+	  if (prev_stpoint != NULL
+	      && prev_stpoint->address == tpoint->address)
+	    /* Nothing to do.  We already unprobed a tracepoint set at
+	       this marker address (and there can only be one probe
+	       per marker).  */
+	    ;
+	  else
+	    {
+	      unprobe_marker_at (tpoint->address);
+	      prev_stpoint = tpoint;
+	    }
+	  break;
+	}
+
+      tpoint->handle = NULL;
+    }
+
+  target_unpause_all (true);
+}
+
+/* Parse a packet that defines a tracepoint.  */
+
+static void
+cmd_qtdp (char *own_buf)
+{
+  int tppacket;
+  /* Whether there is a trailing hyphen at the end of the QTDP packet.  */
+  int trail_hyphen = 0;
+  ULONGEST num;
+  ULONGEST addr;
+  ULONGEST count;
+  struct tracepoint *tpoint;
+  const char *packet = own_buf;
+
+  packet += strlen ("QTDP:");
+
+  /* A hyphen at the beginning marks a packet specifying actions for a
+     tracepoint already supplied.  */
+  tppacket = 1;
+  if (*packet == '-')
+    {
+      tppacket = 0;
+      ++packet;
+    }
+  packet = unpack_varlen_hex (packet, &num);
+  ++packet; /* skip a colon */
+  packet = unpack_varlen_hex (packet, &addr);
+  ++packet; /* skip a colon */
+
+  /* See if we already have this tracepoint.  */
+  tpoint = find_tracepoint (num, addr);
+
+  if (tppacket)
+    {
+      /* Duplicate tracepoints are never allowed.  */
+      if (tpoint)
+	{
+	  trace_debug ("Tracepoint error: tracepoint %d"
+		       " at 0x%s already exists",
+		       (int) num, paddress (addr));
+	  write_enn (own_buf);
+	  return;
+	}
+
+      tpoint = add_tracepoint (num, addr);
+
+      tpoint->enabled = (*packet == 'E');
+      ++packet; /* skip 'E' */
+      ++packet; /* skip a colon */
+      packet = unpack_varlen_hex (packet, &count);
+      tpoint->step_count = count;
+      ++packet; /* skip a colon */
+      packet = unpack_varlen_hex (packet, &count);
+      tpoint->pass_count = count;
+      /* See if we have any of the additional optional fields.  */
+      while (*packet == ':')
+	{
+	  ++packet;
+	  if (*packet == 'F')
+	    {
+	      tpoint->type = fast_tracepoint;
+	      ++packet;
+	      packet = unpack_varlen_hex (packet, &count);
+	      tpoint->orig_size = count;
+	    }
+	  else if (*packet == 'S')
+	    {
+	      tpoint->type = static_tracepoint;
+	      ++packet;
+	    }
+	  else if (*packet == 'X')
+	    {
+	      tpoint->cond = gdb_parse_agent_expr (&packet);
+	    }
+	  else if (*packet == '-')
+	    break;
+	  else if (*packet == '\0')
+	    break;
+	  else
+	    trace_debug ("Unknown optional tracepoint field");
+	}
+      if (*packet == '-')
+	{
+	  trail_hyphen = 1;
+	  trace_debug ("Also has actions\n");
+	}
+
+      trace_debug ("Defined %stracepoint %d at 0x%s, "
+		   "enabled %d step %" PRIu64 " pass %" PRIu64,
+		   tpoint->type == fast_tracepoint ? "fast "
+		   : tpoint->type == static_tracepoint ? "static " : "",
+		   tpoint->number, paddress (tpoint->address), tpoint->enabled,
+		   tpoint->step_count, tpoint->pass_count);
+    }
+  else if (tpoint)
+    add_tracepoint_action (tpoint, packet);
+  else
+    {
+      trace_debug ("Tracepoint error: tracepoint %d at 0x%s not found",
+		   (int) num, paddress (addr));
+      write_enn (own_buf);
+      return;
+    }
+
+  /* Install tracepoint during tracing only once for each tracepoint location.
+     For each tracepoint loc, GDB may send multiple QTDP packets, and we can
+     determine the last QTDP packet for one tracepoint location by checking
+     trailing hyphen in QTDP packet.  */
+  if (tracing && !trail_hyphen)
+    {
+      struct tracepoint *tp = NULL;
+
+      /* Pause all threads temporarily while we patch tracepoints.  */
+      target_pause_all (false);
+
+      /* download_tracepoint will update global `tracepoints'
+	 list, so it is unsafe to leave threads in jump pad.  */
+      target_stabilize_threads ();
+
+      /* Freeze threads.  */
+      target_pause_all (true);
+
+
+      if (tpoint->type != trap_tracepoint)
+	{
+	  /* Find another fast or static tracepoint at the same address.  */
+	  for (tp = tracepoints; tp; tp = tp->next)
+	    {
+	      if (tp->address == tpoint->address && tp->type == tpoint->type
+		  && tp->number != tpoint->number)
+		break;
+	    }
+
+	  /* TPOINT is installed at the same address as TP.  */
+	  if (tp)
+	    {
+	      if (tpoint->type == fast_tracepoint)
+		clone_fast_tracepoint (tpoint, tp);
+	      else if (tpoint->type == static_tracepoint)
+		tpoint->handle = (void *) -1;
+	    }
+	}
+
+      if (use_agent && tpoint->type == fast_tracepoint
+	  && agent_capability_check (AGENT_CAPA_FAST_TRACE))
+	{
+	  /* Download and install fast tracepoint by agent.  */
+	  if (tracepoint_send_agent (tpoint) == 0)
+	    write_ok (own_buf);
+	  else
+	    {
+	      write_enn (own_buf);
+	      remove_tracepoint (tpoint);
+	    }
+	}
+      else
+	{
+	  download_tracepoint (tpoint);
+
+	  if (tpoint->type == trap_tracepoint || tp == NULL)
+	    {
+	      install_tracepoint (tpoint, own_buf);
+	      if (strcmp (own_buf, "OK") != 0)
+		remove_tracepoint (tpoint);
+	    }
+	  else
+	    write_ok (own_buf);
+	}
+
+      target_unpause_all (true);
+      return;
+    }
+
+  write_ok (own_buf);
+}
+
+static void
+cmd_qtdpsrc (char *own_buf)
+{
+  ULONGEST num, addr, start, slen;
+  struct tracepoint *tpoint;
+  const char *packet = own_buf;
+  const char *saved;
+  char *srctype, *src;
+  size_t nbytes;
+  struct source_string *last, *newlast;
+
+  packet += strlen ("QTDPsrc:");
+
+  packet = unpack_varlen_hex (packet, &num);
+  ++packet; /* skip a colon */
+  packet = unpack_varlen_hex (packet, &addr);
+  ++packet; /* skip a colon */
+
+  /* See if we already have this tracepoint.  */
+  tpoint = find_tracepoint (num, addr);
+
+  if (!tpoint)
+    {
+      trace_debug ("Tracepoint error: tracepoint %d at 0x%s not found",
+		   (int) num, paddress (addr));
+      write_enn (own_buf);
+      return;
+    }
+
+  saved = packet;
+  packet = strchr (packet, ':');
+  srctype = (char *) xmalloc (packet - saved + 1);
+  memcpy (srctype, saved, packet - saved);
+  srctype[packet - saved] = '\0';
+  ++packet;
+  packet = unpack_varlen_hex (packet, &start);
+  ++packet; /* skip a colon */
+  packet = unpack_varlen_hex (packet, &slen);
+  ++packet; /* skip a colon */
+  src = (char *) xmalloc (slen + 1);
+  nbytes = hex2bin (packet, (gdb_byte *) src, strlen (packet) / 2);
+  src[nbytes] = '\0';
+
+  newlast = XNEW (struct source_string);
+  newlast->type = srctype;
+  newlast->str = src;
+  newlast->next = NULL;
+  /* Always add a source string to the end of the list;
+     this keeps sequences of actions/commands in the right
+     order.  */
+  if (tpoint->source_strings)
+    {
+      for (last = tpoint->source_strings; last->next; last = last->next)
+	;
+      last->next = newlast;
+    }
+  else
+    tpoint->source_strings = newlast;
+
+  write_ok (own_buf);
+}
+
+static void
+cmd_qtdv (char *own_buf)
+{
+  ULONGEST num, val, builtin;
+  char *varname;
+  size_t nbytes;
+  struct trace_state_variable *tsv;
+  const char *packet = own_buf;
+
+  packet += strlen ("QTDV:");
+
+  packet = unpack_varlen_hex (packet, &num);
+  ++packet; /* skip a colon */
+  packet = unpack_varlen_hex (packet, &val);
+  ++packet; /* skip a colon */
+  packet = unpack_varlen_hex (packet, &builtin);
+  ++packet; /* skip a colon */
+
+  nbytes = strlen (packet) / 2;
+  varname = (char *) xmalloc (nbytes + 1);
+  nbytes = hex2bin (packet, (gdb_byte *) varname, nbytes);
+  varname[nbytes] = '\0';
+
+  tsv = create_trace_state_variable (num, 1);
+  tsv->initial_value = (LONGEST) val;
+  tsv->name = varname;
+
+  set_trace_state_variable_value (num, (LONGEST) val);
+
+  write_ok (own_buf);
+}
+
+static void
+cmd_qtenable_disable (char *own_buf, int enable)
+{
+  const char *packet = own_buf;
+  ULONGEST num, addr;
+  struct tracepoint *tp;
+
+  packet += strlen (enable ? "QTEnable:" : "QTDisable:");
+  packet = unpack_varlen_hex (packet, &num);
+  ++packet; /* skip a colon */
+  packet = unpack_varlen_hex (packet, &addr);
+
+  tp = find_tracepoint (num, addr);
+
+  if (tp)
+    {
+      if ((enable && tp->enabled) || (!enable && !tp->enabled))
+	{
+	  trace_debug ("Tracepoint %d at 0x%s is already %s",
+		       (int) num, paddress (addr),
+		       enable ? "enabled" : "disabled");
+	  write_ok (own_buf);
+	  return;
+	}
+
+      trace_debug ("%s tracepoint %d at 0x%s",
+		   enable ? "Enabling" : "Disabling",
+		   (int) num, paddress (addr));
+
+      tp->enabled = enable;
+
+      if (tp->type == fast_tracepoint || tp->type == static_tracepoint)
+	{
+	  int ret;
+	  int offset = offsetof (struct tracepoint, enabled);
+	  CORE_ADDR obj_addr = tp->obj_addr_on_target + offset;
+
+	  ret = prepare_to_access_memory ();
+	  if (ret)
+	    {
+	      trace_debug ("Failed to temporarily stop inferior threads");
+	      write_enn (own_buf);
+	      return;
+	    }
+
+	  ret = write_inferior_int8 (obj_addr, enable);
+	  done_accessing_memory ();
+	  
+	  if (ret)
+	    {
+	      trace_debug ("Cannot write enabled flag into "
+			   "inferior process memory");
+	      write_enn (own_buf);
+	      return;
+	    }
+	}
+
+      write_ok (own_buf);
+    }
+  else
+    {
+      trace_debug ("Tracepoint %d at 0x%s not found",
+		   (int) num, paddress (addr));
+      write_enn (own_buf);
+    }
+}
+
+static void
+cmd_qtv (char *own_buf)
+{
+  client_state &cs = get_client_state ();
+  ULONGEST num;
+  LONGEST val = 0;
+  int err;
+  char *packet = own_buf;
+
+  packet += strlen ("qTV:");
+  unpack_varlen_hex (packet, &num);
+
+  if (cs.current_traceframe >= 0)
+    {
+      err = traceframe_read_tsv ((int) num, &val);
+      if (err)
+	{
+	  strcpy (own_buf, "U");
+	  return;
+	}
+    }
+  /* Only make tsv's be undefined before the first trace run.  After a
+     trace run is over, the user might want to see the last value of
+     the tsv, and it might not be available in a traceframe.  */
+  else if (!tracing && strcmp (tracing_stop_reason, "tnotrun") == 0)
+    {
+      strcpy (own_buf, "U");
+      return;
+    }
+  else
+    val = get_trace_state_variable_value (num);
+
+  sprintf (own_buf, "V%s", phex_nz (val, 0));
+}
+
+/* Clear out the list of readonly regions.  */
+
+static void
+clear_readonly_regions (void)
+{
+  struct readonly_region *roreg;
+
+  while (readonly_regions)
+    {
+      roreg = readonly_regions;
+      readonly_regions = readonly_regions->next;
+      free (roreg);
+    }
+}
+
+/* Parse the collection of address ranges whose contents GDB believes
+   to be unchanging and so can be read directly from target memory
+   even while looking at a traceframe.  */
+
+static void
+cmd_qtro (char *own_buf)
+{
+  ULONGEST start, end;
+  struct readonly_region *roreg;
+  const char *packet = own_buf;
+
+  trace_debug ("Want to mark readonly regions");
+
+  clear_readonly_regions ();
+
+  packet += strlen ("QTro");
+
+  while (*packet == ':')
+    {
+      ++packet;  /* skip a colon */
+      packet = unpack_varlen_hex (packet, &start);
+      ++packet;  /* skip a comma */
+      packet = unpack_varlen_hex (packet, &end);
+
+      roreg = XNEW (struct readonly_region);
+      roreg->start = start;
+      roreg->end = end;
+      roreg->next = readonly_regions;
+      readonly_regions = roreg;
+      trace_debug ("Added readonly region from 0x%s to 0x%s",
+		   paddress (roreg->start), paddress (roreg->end));
+    }
+
+  write_ok (own_buf);
+}
+
+/* Test to see if the given range is in our list of readonly ranges.
+   We only test for being entirely within a range, GDB is not going to
+   send a single memory packet that spans multiple regions.  */
+
+int
+in_readonly_region (CORE_ADDR addr, ULONGEST length)
+{
+  struct readonly_region *roreg;
+
+  for (roreg = readonly_regions; roreg; roreg = roreg->next)
+    if (roreg->start <= addr && (addr + length - 1) <= roreg->end)
+      return 1;
+
+  return 0;
+}
+
+static CORE_ADDR gdb_jump_pad_head;
+
+/* Return the address of the next free jump space.  */
+
+static CORE_ADDR
+get_jump_space_head (void)
+{
+  if (gdb_jump_pad_head == 0)
+    {
+      if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_jump_pad_buffer,
+				      &gdb_jump_pad_head))
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "error extracting jump_pad_buffer");
+	}
+    }
+
+  return gdb_jump_pad_head;
+}
+
+/* Reserve USED bytes from the jump space.  */
+
+static void
+claim_jump_space (ULONGEST used)
+{
+  trace_debug ("claim_jump_space reserves %s bytes at %s",
+	       pulongest (used), paddress (gdb_jump_pad_head));
+  gdb_jump_pad_head += used;
+}
+
+static CORE_ADDR trampoline_buffer_head = 0;
+static CORE_ADDR trampoline_buffer_tail;
+
+/* Reserve USED bytes from the trampoline buffer and return the
+   address of the start of the reserved space in TRAMPOLINE.  Returns
+   non-zero if the space is successfully claimed.  */
+
+int
+claim_trampoline_space (ULONGEST used, CORE_ADDR *trampoline)
+{
+  if (!trampoline_buffer_head)
+    {
+      if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer,
+				      &trampoline_buffer_tail))
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "error extracting trampoline_buffer");
+	}
+
+      if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer_end,
+				      &trampoline_buffer_head))
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "error extracting trampoline_buffer_end");
+	}
+    }
+
+  /* Start claiming space from the top of the trampoline space.  If
+     the space is located at the bottom of the virtual address space,
+     this reduces the possibility that corruption will occur if a null
+     pointer is used to write to memory.  */
+  if (trampoline_buffer_head - trampoline_buffer_tail < used)
+    {
+      trace_debug ("claim_trampoline_space failed to reserve %s bytes",
+		   pulongest (used));
+      return 0;
+    }
+
+  trampoline_buffer_head -= used;
+
+  trace_debug ("claim_trampoline_space reserves %s bytes at %s",
+	       pulongest (used), paddress (trampoline_buffer_head));
+
+  *trampoline = trampoline_buffer_head;
+  return 1;
+}
+
+/* Returns non-zero if there is space allocated for use in trampolines
+   for fast tracepoints.  */
+
+int
+have_fast_tracepoint_trampoline_buffer (char *buf)
+{
+  CORE_ADDR trampoline_end, errbuf;
+
+  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer_end,
+				  &trampoline_end))
+    {
+      internal_error (__FILE__, __LINE__,
+		      "error extracting trampoline_buffer_end");
+    }
+  
+  if (buf)
+    {
+      buf[0] = '\0';
+      strcpy (buf, "was claiming");
+      if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer_error,
+				  &errbuf))
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "error extracting errbuf");
+	}
+
+      read_inferior_memory (errbuf, (unsigned char *) buf, 100);
+    }
+
+  return trampoline_end != 0;
+}
+
+/* Ask the IPA to probe the marker at ADDRESS.  Returns -1 if running
+   the command fails, or 0 otherwise.  If the command ran
+   successfully, but probing the marker failed, ERROUT will be filled
+   with the error to reply to GDB, and -1 is also returned.  This
+   allows directly passing IPA errors to GDB.  */
+
+static int
+probe_marker_at (CORE_ADDR address, char *errout)
+{
+  char cmd[IPA_CMD_BUF_SIZE];
+  int err;
+
+  sprintf (cmd, "probe_marker_at:%s", paddress (address));
+  err = run_inferior_command (cmd, strlen (cmd) + 1);
+
+  if (err == 0)
+    {
+      if (*cmd == 'E')
+	{
+	  strcpy (errout, cmd);
+	  return -1;
+	}
+    }
+
+  return err;
+}
+
+static void
+clone_fast_tracepoint (struct tracepoint *to, const struct tracepoint *from)
+{
+  to->jump_pad = from->jump_pad;
+  to->jump_pad_end = from->jump_pad_end;
+  to->trampoline = from->trampoline;
+  to->trampoline_end = from->trampoline_end;
+  to->adjusted_insn_addr = from->adjusted_insn_addr;
+  to->adjusted_insn_addr_end = from->adjusted_insn_addr_end;
+  to->handle = from->handle;
+
+  gdb_assert (from->handle);
+  inc_ref_fast_tracepoint_jump ((struct fast_tracepoint_jump *) from->handle);
+}
+
+#define MAX_JUMP_SIZE 20
+
+/* Install fast tracepoint.  Return 0 if successful, otherwise return
+   non-zero.  */
+
+static int
+install_fast_tracepoint (struct tracepoint *tpoint, char *errbuf)
+{
+  CORE_ADDR jentry, jump_entry;
+  CORE_ADDR trampoline;
+  CORE_ADDR collect;
+  ULONGEST trampoline_size;
+  int err = 0;
+  /* The jump to the jump pad of the last fast tracepoint
+     installed.  */
+  unsigned char fjump[MAX_JUMP_SIZE];
+  ULONGEST fjump_size;
+
+  if (tpoint->orig_size < target_get_min_fast_tracepoint_insn_len ())
+    {
+      trace_debug ("Requested a fast tracepoint on an instruction "
+		   "that is of less than the minimum length.");
+      return 0;
+    }
+
+  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_collect_ptr,
+				  &collect))
+    {
+      error ("error extracting gdb_collect_ptr");
+      return 1;
+    }
+
+  jentry = jump_entry = get_jump_space_head ();
+
+  trampoline = 0;
+  trampoline_size = 0;
+
+  /* Install the jump pad.  */
+  err = target_install_fast_tracepoint_jump_pad
+    (tpoint->obj_addr_on_target, tpoint->address, collect,
+     ipa_sym_addrs.addr_collecting, tpoint->orig_size, &jentry,
+     &trampoline, &trampoline_size, fjump, &fjump_size,
+     &tpoint->adjusted_insn_addr, &tpoint->adjusted_insn_addr_end, errbuf);
+
+  if (err)
+    return 1;
+
+  /* Wire it in.  */
+  tpoint->handle = set_fast_tracepoint_jump (tpoint->address, fjump,
+					     fjump_size);
+
+  if (tpoint->handle != NULL)
+    {
+      tpoint->jump_pad = jump_entry;
+      tpoint->jump_pad_end = jentry;
+      tpoint->trampoline = trampoline;
+      tpoint->trampoline_end = trampoline + trampoline_size;
+
+      /* Pad to 8-byte alignment.  */
+      jentry = ((jentry + 7) & ~0x7);
+      claim_jump_space (jentry - jump_entry);
+    }
+
+  return 0;
+}
+
+
+/* Install tracepoint TPOINT, and write reply message in OWN_BUF.  */
+
+static void
+install_tracepoint (struct tracepoint *tpoint, char *own_buf)
+{
+  tpoint->handle = NULL;
+  *own_buf = '\0';
+
+  if (tpoint->type == trap_tracepoint)
+    {
+      /* Tracepoints are installed as memory breakpoints.  Just go
+	 ahead and install the trap.  The breakpoints module
+	 handles duplicated breakpoints, and the memory read
+	 routine handles un-patching traps from memory reads.  */
+      tpoint->handle = set_breakpoint_at (tpoint->address,
+					  tracepoint_handler);
+    }
+  else if (tpoint->type == fast_tracepoint || tpoint->type == static_tracepoint)
+    {
+      if (!agent_loaded_p ())
+	{
+	  trace_debug ("Requested a %s tracepoint, but fast "
+		       "tracepoints aren't supported.",
+		       tpoint->type == static_tracepoint ? "static" : "fast");
+	  write_e_ipa_not_loaded (own_buf);
+	  return;
+	}
+      if (tpoint->type == static_tracepoint
+	  && !in_process_agent_supports_ust ())
+	{
+	  trace_debug ("Requested a static tracepoint, but static "
+		       "tracepoints are not supported.");
+	  write_e_ust_not_loaded (own_buf);
+	  return;
+	}
+
+      if (tpoint->type == fast_tracepoint)
+	install_fast_tracepoint (tpoint, own_buf);
+      else
+	{
+	  if (probe_marker_at (tpoint->address, own_buf) == 0)
+	    tpoint->handle = (void *) -1;
+	}
+
+    }
+  else
+    internal_error (__FILE__, __LINE__, "Unknown tracepoint type");
+
+  if (tpoint->handle == NULL)
+    {
+      if (*own_buf == '\0')
+	write_enn (own_buf);
+    }
+  else
+    write_ok (own_buf);
+}
+
+static void download_tracepoint_1 (struct tracepoint *tpoint);
+
+static void
+cmd_qtstart (char *packet)
+{
+  struct tracepoint *tpoint, *prev_ftpoint, *prev_stpoint;
+  CORE_ADDR tpptr = 0, prev_tpptr = 0;
+
+  trace_debug ("Starting the trace");
+
+  /* Pause all threads temporarily while we patch tracepoints.  */
+  target_pause_all (false);
+
+  /* Get threads out of jump pads.  Safe to do here, since this is a
+     top level command.  And, required to do here, since we're
+     deleting/rewriting jump pads.  */
+
+  target_stabilize_threads ();
+
+  /* Freeze threads.  */
+  target_pause_all (true);
+
+  /* Sync the fast tracepoints list in the inferior ftlib.  */
+  if (agent_loaded_p ())
+    download_trace_state_variables ();
+
+  /* No previous fast tpoint yet.  */
+  prev_ftpoint = NULL;
+
+  /* No previous static tpoint yet.  */
+  prev_stpoint = NULL;
+
+  *packet = '\0';
+
+  if (agent_loaded_p ())
+    {
+      /* Tell IPA about the correct tdesc.  */
+      if (write_inferior_integer (ipa_sym_addrs.addr_ipa_tdesc_idx,
+				  target_get_ipa_tdesc_idx ()))
+        error ("Error setting ipa_tdesc_idx variable in lib");
+    }
+
+  /* Start out empty.  */
+  if (agent_loaded_p ())
+    write_inferior_data_pointer (ipa_sym_addrs.addr_tracepoints, 0);
+
+  /* Download and install tracepoints.  */
+  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
+    {
+      /* Ensure all the hit counts start at zero.  */
+      tpoint->hit_count = 0;
+      tpoint->traceframe_usage = 0;
+
+      if (tpoint->type == trap_tracepoint)
+	{
+	  /* Tracepoints are installed as memory breakpoints.  Just go
+	     ahead and install the trap.  The breakpoints module
+	     handles duplicated breakpoints, and the memory read
+	     routine handles un-patching traps from memory reads.  */
+	  tpoint->handle = set_breakpoint_at (tpoint->address,
+					      tracepoint_handler);
+	}
+      else if (tpoint->type == fast_tracepoint
+	       || tpoint->type == static_tracepoint)
+	{
+	  if (maybe_write_ipa_not_loaded (packet))
+	    {
+	      trace_debug ("Requested a %s tracepoint, but fast "
+			   "tracepoints aren't supported.",
+			   tpoint->type == static_tracepoint
+			   ? "static" : "fast");
+	      break;
+	    }
+
+	  if (tpoint->type == fast_tracepoint)
+	    {
+	      int use_agent_p
+		= use_agent && agent_capability_check (AGENT_CAPA_FAST_TRACE);
+
+	      if (prev_ftpoint != NULL
+		  && prev_ftpoint->address == tpoint->address)
+		{
+		  if (use_agent_p)
+		    tracepoint_send_agent (tpoint);
+		  else
+		    download_tracepoint_1 (tpoint);
+
+		  clone_fast_tracepoint (tpoint, prev_ftpoint);
+		}
+	      else
+		{
+		  /* Tracepoint is installed successfully?  */
+		  int installed = 0;
+
+		  /* Download and install fast tracepoint by agent.  */
+		  if (use_agent_p)
+		    installed = !tracepoint_send_agent (tpoint);
+		  else
+		    {
+		      download_tracepoint_1 (tpoint);
+		      installed = !install_fast_tracepoint (tpoint, packet);
+		    }
+
+		  if (installed)
+		    prev_ftpoint = tpoint;
+		}
+	    }
+	  else
+	    {
+	      if (!in_process_agent_supports_ust ())
+		{
+		  trace_debug ("Requested a static tracepoint, but static "
+			       "tracepoints are not supported.");
+		  break;
+		}
+
+	      download_tracepoint_1 (tpoint);
+	      /* Can only probe a given marker once.  */
+	      if (prev_stpoint != NULL
+		  && prev_stpoint->address == tpoint->address)
+		tpoint->handle = (void *) -1;
+	      else
+		{
+		  if (probe_marker_at (tpoint->address, packet) == 0)
+		    {
+		      tpoint->handle = (void *) -1;
+
+		      /* So that we can handle multiple static tracepoints
+			 at the same address easily.  */
+		      prev_stpoint = tpoint;
+		    }
+		}
+	    }
+
+	  prev_tpptr = tpptr;
+	  tpptr = tpoint->obj_addr_on_target;
+
+	  if (tpoint == tracepoints)
+	    /* First object in list, set the head pointer in the
+	       inferior.  */
+	    write_inferior_data_pointer (ipa_sym_addrs.addr_tracepoints, tpptr);
+	  else
+	    write_inferior_data_pointer (prev_tpptr
+					 + offsetof (struct tracepoint, next),
+					 tpptr);
+	}
+
+      /* Any failure in the inner loop is sufficient cause to give
+	 up.  */
+      if (tpoint->handle == NULL)
+	break;
+    }
+
+  /* Any error in tracepoint insertion is unacceptable; better to
+     address the problem now, than end up with a useless or misleading
+     trace run.  */
+  if (tpoint != NULL)
+    {
+      clear_installed_tracepoints ();
+      if (*packet == '\0')
+	write_enn (packet);
+      target_unpause_all (true);
+      return;
+    }
+
+  stopping_tracepoint = NULL;
+  trace_buffer_is_full = 0;
+  expr_eval_result = expr_eval_no_error;
+  error_tracepoint = NULL;
+  tracing_start_time = get_timestamp ();
+
+  /* Tracing is now active, hits will now start being logged.  */
+  tracing = 1;
+
+  if (agent_loaded_p ())
+    {
+      if (write_inferior_integer (ipa_sym_addrs.addr_tracing, 1))
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "Error setting tracing variable in lib");
+	}
+
+      if (write_inferior_data_pointer (ipa_sym_addrs.addr_stopping_tracepoint,
+				       0))
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "Error clearing stopping_tracepoint variable"
+			  " in lib");
+	}
+
+      if (write_inferior_integer (ipa_sym_addrs.addr_trace_buffer_is_full, 0))
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "Error clearing trace_buffer_is_full variable"
+			  " in lib");
+	}
+
+      stop_tracing_bkpt = set_breakpoint_at (ipa_sym_addrs.addr_stop_tracing,
+					     stop_tracing_handler);
+      if (stop_tracing_bkpt == NULL)
+	error ("Error setting stop_tracing breakpoint");
+
+      flush_trace_buffer_bkpt
+	= set_breakpoint_at (ipa_sym_addrs.addr_flush_trace_buffer,
+			     flush_trace_buffer_handler);
+      if (flush_trace_buffer_bkpt == NULL)
+	error ("Error setting flush_trace_buffer breakpoint");
+    }
+
+  target_unpause_all (true);
+
+  write_ok (packet);
+}
+
+/* End a tracing run, filling in a stop reason to report back to GDB,
+   and removing the tracepoints from the code.  */
+
+void
+stop_tracing (void)
+{
+  if (!tracing)
+    {
+      trace_debug ("Tracing is already off, ignoring");
+      return;
+    }
+
+  trace_debug ("Stopping the trace");
+
+  /* Pause all threads before removing fast jumps from memory,
+     breakpoints, and touching IPA state variables (inferior memory).
+     Some thread may hit the internal tracing breakpoints, or be
+     collecting this moment, but that's ok, we don't release the
+     tpoint object's memory or the jump pads here (we only do that
+     when we're sure we can move all threads out of the jump pads).
+     We can't now, since we may be getting here due to the inferior
+     agent calling us.  */
+  target_pause_all (true);
+
+  /* Stop logging. Tracepoints can still be hit, but they will not be
+     recorded.  */
+  tracing = 0;
+  if (agent_loaded_p ())
+    {
+      if (write_inferior_integer (ipa_sym_addrs.addr_tracing, 0))
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "Error clearing tracing variable in lib");
+	}
+    }
+
+  tracing_stop_time = get_timestamp ();
+  tracing_stop_reason = "t???";
+  tracing_stop_tpnum = 0;
+  if (stopping_tracepoint)
+    {
+      trace_debug ("Stopping the trace because "
+		   "tracepoint %d was hit %" PRIu64 " times",
+		   stopping_tracepoint->number,
+		   stopping_tracepoint->pass_count);
+      tracing_stop_reason = "tpasscount";
+      tracing_stop_tpnum = stopping_tracepoint->number;
+    }
+  else if (trace_buffer_is_full)
+    {
+      trace_debug ("Stopping the trace because the trace buffer is full");
+      tracing_stop_reason = "tfull";
+    }
+  else if (expr_eval_result != expr_eval_no_error)
+    {
+      trace_debug ("Stopping the trace because of an expression eval error");
+      tracing_stop_reason = eval_result_names[expr_eval_result];
+      tracing_stop_tpnum = error_tracepoint->number;
+    }
+#ifndef IN_PROCESS_AGENT
+  else if (!gdb_connected ())
+    {
+      trace_debug ("Stopping the trace because GDB disconnected");
+      tracing_stop_reason = "tdisconnected";
+    }
+#endif
+  else
+    {
+      trace_debug ("Stopping the trace because of a tstop command");
+      tracing_stop_reason = "tstop";
+    }
+
+  stopping_tracepoint = NULL;
+  error_tracepoint = NULL;
+
+  /* Clear out the tracepoints.  */
+  clear_installed_tracepoints ();
+
+  if (agent_loaded_p ())
+    {
+      /* Pull in fast tracepoint trace frames from the inferior lib
+	 buffer into our buffer, even if our buffer is already full,
+	 because we want to present the full number of created frames
+	 in addition to what fit in the trace buffer.  */
+      upload_fast_traceframes ();
+    }
+
+  if (stop_tracing_bkpt != NULL)
+    {
+      delete_breakpoint (stop_tracing_bkpt);
+      stop_tracing_bkpt = NULL;
+    }
+
+  if (flush_trace_buffer_bkpt != NULL)
+    {
+      delete_breakpoint (flush_trace_buffer_bkpt);
+      flush_trace_buffer_bkpt = NULL;
+    }
+
+  target_unpause_all (true);
+}
+
+static int
+stop_tracing_handler (CORE_ADDR addr)
+{
+  trace_debug ("lib hit stop_tracing");
+
+  /* Don't actually handle it here.  When we stop tracing we remove
+     breakpoints from the inferior, and that is not allowed in a
+     breakpoint handler (as the caller is walking the breakpoint
+     list).  */
+  return 0;
+}
+
+static int
+flush_trace_buffer_handler (CORE_ADDR addr)
+{
+  trace_debug ("lib hit flush_trace_buffer");
+  return 0;
+}
+
+static void
+cmd_qtstop (char *packet)
+{
+  stop_tracing ();
+  write_ok (packet);
+}
+
+static void
+cmd_qtdisconnected (char *own_buf)
+{
+  ULONGEST setting;
+  char *packet = own_buf;
+
+  packet += strlen ("QTDisconnected:");
+
+  unpack_varlen_hex (packet, &setting);
+
+  write_ok (own_buf);
+
+  disconnected_tracing = setting;
+}
+
+static void
+cmd_qtframe (char *own_buf)
+{
+  client_state &cs = get_client_state ();
+  ULONGEST frame, pc, lo, hi, num;
+  int tfnum, tpnum;
+  struct traceframe *tframe;
+  const char *packet = own_buf;
+
+  packet += strlen ("QTFrame:");
+
+  if (startswith (packet, "pc:"))
+    {
+      packet += strlen ("pc:");
+      unpack_varlen_hex (packet, &pc);
+      trace_debug ("Want to find next traceframe at pc=0x%s", paddress (pc));
+      tframe = find_next_traceframe_in_range (pc, pc, 1, &tfnum);
+    }
+  else if (startswith (packet, "range:"))
+    {
+      packet += strlen ("range:");
+      packet = unpack_varlen_hex (packet, &lo);
+      ++packet;
+      unpack_varlen_hex (packet, &hi);
+      trace_debug ("Want to find next traceframe in the range 0x%s to 0x%s",
+		   paddress (lo), paddress (hi));
+      tframe = find_next_traceframe_in_range (lo, hi, 1, &tfnum);
+    }
+  else if (startswith (packet, "outside:"))
+    {
+      packet += strlen ("outside:");
+      packet = unpack_varlen_hex (packet, &lo);
+      ++packet;
+      unpack_varlen_hex (packet, &hi);
+      trace_debug ("Want to find next traceframe "
+		   "outside the range 0x%s to 0x%s",
+		   paddress (lo), paddress (hi));
+      tframe = find_next_traceframe_in_range (lo, hi, 0, &tfnum);
+    }
+  else if (startswith (packet, "tdp:"))
+    {
+      packet += strlen ("tdp:");
+      unpack_varlen_hex (packet, &num);
+      tpnum = (int) num;
+      trace_debug ("Want to find next traceframe for tracepoint %d", tpnum);
+      tframe = find_next_traceframe_by_tracepoint (tpnum, &tfnum);
+    }
+  else
+    {
+      unpack_varlen_hex (packet, &frame);
+      tfnum = (int) frame;
+      if (tfnum == -1)
+	{
+	  trace_debug ("Want to stop looking at traceframes");
+	  cs.current_traceframe = -1;
+	  write_ok (own_buf);
+	  return;
+	}
+      trace_debug ("Want to look at traceframe %d", tfnum);
+      tframe = find_traceframe (tfnum);
+    }
+
+  if (tframe)
+    {
+      cs.current_traceframe = tfnum;
+      sprintf (own_buf, "F%xT%x", tfnum, tframe->tpnum);
+    }
+  else
+    sprintf (own_buf, "F-1");
+}
+
+static void
+cmd_qtstatus (char *packet)
+{
+  char *stop_reason_rsp = NULL;
+  char *buf1, *buf2, *buf3;
+  const char *str;
+  int slen;
+
+  /* Translate the plain text of the notes back into hex for
+     transmission.  */
+
+  str = (tracing_user_name ? tracing_user_name : "");
+  slen = strlen (str);
+  buf1 = (char *) alloca (slen * 2 + 1);
+  bin2hex ((gdb_byte *) str, buf1, slen);
+
+  str = (tracing_notes ? tracing_notes : "");
+  slen = strlen (str);
+  buf2 = (char *) alloca (slen * 2 + 1);
+  bin2hex ((gdb_byte *) str, buf2, slen);
+
+  str = (tracing_stop_note ? tracing_stop_note : "");
+  slen = strlen (str);
+  buf3 = (char *) alloca (slen * 2 + 1);
+  bin2hex ((gdb_byte *) str, buf3, slen);
+
+  trace_debug ("Returning trace status as %d, stop reason %s",
+	       tracing, tracing_stop_reason);
+
+  if (agent_loaded_p ())
+    {
+      target_pause_all (true);
+
+      upload_fast_traceframes ();
+
+      target_unpause_all (true);
+   }
+
+  stop_reason_rsp = (char *) tracing_stop_reason;
+
+  /* The user visible error string in terror needs to be hex encoded.
+     We leave it as plain string in `tracing_stop_reason' to ease
+     debugging.  */
+  if (startswith (stop_reason_rsp, "terror:"))
+    {
+      const char *result_name;
+      int hexstr_len;
+      char *p;
+
+      result_name = stop_reason_rsp + strlen ("terror:");
+      hexstr_len = strlen (result_name) * 2;
+      p = stop_reason_rsp
+	= (char *) alloca (strlen ("terror:") + hexstr_len + 1);
+      strcpy (p, "terror:");
+      p += strlen (p);
+      bin2hex ((gdb_byte *) result_name, p, strlen (result_name));
+    }
+
+  /* If this was a forced stop, include any stop note that was supplied.  */
+  if (strcmp (stop_reason_rsp, "tstop") == 0)
+    {
+      stop_reason_rsp = (char *) alloca (strlen ("tstop:") + strlen (buf3) + 1);
+      strcpy (stop_reason_rsp, "tstop:");
+      strcat (stop_reason_rsp, buf3);
+    }
+
+  sprintf (packet,
+	   "T%d;"
+	   "%s:%x;"
+	   "tframes:%x;tcreated:%x;"
+	   "tfree:%x;tsize:%s;"
+	   "circular:%d;"
+	   "disconn:%d;"
+	   "starttime:%s;stoptime:%s;"
+	   "username:%s;notes:%s:",
+	   tracing ? 1 : 0,
+	   stop_reason_rsp, tracing_stop_tpnum,
+	   traceframe_count, traceframes_created,
+	   free_space (), phex_nz (trace_buffer_hi - trace_buffer_lo, 0),
+	   circular_trace_buffer,
+	   disconnected_tracing,
+	   phex_nz (tracing_start_time, sizeof (tracing_start_time)),
+	   phex_nz (tracing_stop_time, sizeof (tracing_stop_time)),
+	   buf1, buf2);
+}
+
+static void
+cmd_qtp (char *own_buf)
+{
+  ULONGEST num, addr;
+  struct tracepoint *tpoint;
+  const char *packet = own_buf;
+
+  packet += strlen ("qTP:");
+
+  packet = unpack_varlen_hex (packet, &num);
+  ++packet; /* skip a colon */
+  packet = unpack_varlen_hex (packet, &addr);
+
+  /* See if we already have this tracepoint.  */
+  tpoint = find_tracepoint (num, addr);
+
+  if (!tpoint)
+    {
+      trace_debug ("Tracepoint error: tracepoint %d at 0x%s not found",
+		   (int) num, paddress (addr));
+      write_enn (own_buf);
+      return;
+    }
+
+  sprintf (own_buf, "V%" PRIu64 ":%" PRIu64 "", tpoint->hit_count,
+	   tpoint->traceframe_usage);
+}
+
+/* State variables to help return all the tracepoint bits.  */
+static struct tracepoint *cur_tpoint;
+static unsigned int cur_action;
+static unsigned int cur_step_action;
+static struct source_string *cur_source_string;
+static struct trace_state_variable *cur_tsv;
+
+/* Compose a response that is an imitation of the syntax by which the
+   tracepoint was originally downloaded.  */
+
+static void
+response_tracepoint (char *packet, struct tracepoint *tpoint)
+{
+  char *buf;
+
+  sprintf (packet, "T%x:%s:%c:%" PRIx64 ":%" PRIx64, tpoint->number,
+	   paddress (tpoint->address),
+	   (tpoint->enabled ? 'E' : 'D'), tpoint->step_count,
+	   tpoint->pass_count);
+  if (tpoint->type == fast_tracepoint)
+    sprintf (packet + strlen (packet), ":F%x", tpoint->orig_size);
+  else if (tpoint->type == static_tracepoint)
+    sprintf (packet + strlen (packet), ":S");
+
+  if (tpoint->cond)
+    {
+      buf = gdb_unparse_agent_expr (tpoint->cond);
+      sprintf (packet + strlen (packet), ":X%x,%s",
+	       tpoint->cond->length, buf);
+      free (buf);
+    }
+}
+
+/* Compose a response that is an imitation of the syntax by which the
+   tracepoint action was originally downloaded (with the difference
+   that due to the way we store the actions, this will output a packet
+   per action, while GDB could have combined more than one action
+   per-packet.  */
+
+static void
+response_action (char *packet, struct tracepoint *tpoint,
+		 char *taction, int step)
+{
+  sprintf (packet, "%c%x:%s:%s",
+	   (step ? 'S' : 'A'), tpoint->number, paddress (tpoint->address),
+	   taction);
+}
+
+/* Compose a response that is an imitation of the syntax by which the
+   tracepoint source piece was originally downloaded.  */
+
+static void
+response_source (char *packet,
+		 struct tracepoint *tpoint, struct source_string *src)
+{
+  char *buf;
+  int len;
+
+  len = strlen (src->str);
+  buf = (char *) alloca (len * 2 + 1);
+  bin2hex ((gdb_byte *) src->str, buf, len);
+
+  sprintf (packet, "Z%x:%s:%s:%x:%x:%s",
+	   tpoint->number, paddress (tpoint->address),
+	   src->type, 0, len, buf);
+}
+
+/* Return the first piece of tracepoint definition, and initialize the
+   state machine that will iterate through all the tracepoint
+   bits.  */
+
+static void
+cmd_qtfp (char *packet)
+{
+  trace_debug ("Returning first tracepoint definition piece");
+
+  cur_tpoint = tracepoints;
+  cur_action = cur_step_action = 0;
+  cur_source_string = NULL;
+
+  if (cur_tpoint)
+    response_tracepoint (packet, cur_tpoint);
+  else
+    strcpy (packet, "l");
+}
+
+/* Return additional pieces of tracepoint definition.  Each action and
+   stepping action must go into its own packet, because of packet size
+   limits, and so we use state variables to deliver one piece at a
+   time.  */
+
+static void
+cmd_qtsp (char *packet)
+{
+  trace_debug ("Returning subsequent tracepoint definition piece");
+
+  if (!cur_tpoint)
+    {
+      /* This case would normally never occur, but be prepared for
+	 GDB misbehavior.  */
+      strcpy (packet, "l");
+    }
+  else if (cur_action < cur_tpoint->numactions)
+    {
+      response_action (packet, cur_tpoint,
+		       cur_tpoint->actions_str[cur_action], 0);
+      ++cur_action;
+    }
+  else if (cur_step_action < cur_tpoint->num_step_actions)
+    {
+      response_action (packet, cur_tpoint,
+		       cur_tpoint->step_actions_str[cur_step_action], 1);
+      ++cur_step_action;
+    }
+  else if ((cur_source_string
+	    ? cur_source_string->next
+	    : cur_tpoint->source_strings))
+    {
+      if (cur_source_string)
+	cur_source_string = cur_source_string->next;
+      else
+	cur_source_string = cur_tpoint->source_strings;
+      response_source (packet, cur_tpoint, cur_source_string);
+    }
+  else
+    {
+      cur_tpoint = cur_tpoint->next;
+      cur_action = cur_step_action = 0;
+      cur_source_string = NULL;
+      if (cur_tpoint)
+	response_tracepoint (packet, cur_tpoint);
+      else
+	strcpy (packet, "l");
+    }
+}
+
+/* Compose a response that is an imitation of the syntax by which the
+   trace state variable was originally downloaded.  */
+
+static void
+response_tsv (char *packet, struct trace_state_variable *tsv)
+{
+  char *buf = (char *) "";
+  int namelen;
+
+  if (tsv->name)
+    {
+      namelen = strlen (tsv->name);
+      buf = (char *) alloca (namelen * 2 + 1);
+      bin2hex ((gdb_byte *) tsv->name, buf, namelen);
+    }
+
+  sprintf (packet, "%x:%s:%x:%s", tsv->number, phex_nz (tsv->initial_value, 0),
+	   tsv->getter ? 1 : 0, buf);
+}
+
+/* Return the first trace state variable definition, and initialize
+   the state machine that will iterate through all the tsv bits.  */
+
+static void
+cmd_qtfv (char *packet)
+{
+  trace_debug ("Returning first trace state variable definition");
+
+  cur_tsv = trace_state_variables;
+
+  if (cur_tsv)
+    response_tsv (packet, cur_tsv);
+  else
+    strcpy (packet, "l");
+}
+
+/* Return additional trace state variable definitions. */
+
+static void
+cmd_qtsv (char *packet)
+{
+  trace_debug ("Returning additional trace state variable definition");
+
+  if (cur_tsv)
+    {
+      cur_tsv = cur_tsv->next;
+      if (cur_tsv)
+	response_tsv (packet, cur_tsv);
+      else
+	strcpy (packet, "l");
+    }
+  else
+    strcpy (packet, "l");
+}
+
+/* Return the first static tracepoint marker, and initialize the state
+   machine that will iterate through all the static tracepoints
+   markers.  */
+
+static void
+cmd_qtfstm (char *packet)
+{
+  if (!maybe_write_ipa_ust_not_loaded (packet))
+    run_inferior_command (packet, strlen (packet) + 1);
+}
+
+/* Return additional static tracepoints markers.  */
+
+static void
+cmd_qtsstm (char *packet)
+{
+  if (!maybe_write_ipa_ust_not_loaded (packet))
+    run_inferior_command (packet, strlen (packet) + 1);
+}
+
+/* Return the definition of the static tracepoint at a given address.
+   Result packet is the same as qTsST's.  */
+
+static void
+cmd_qtstmat (char *packet)
+{
+  if (!maybe_write_ipa_ust_not_loaded (packet))
+    run_inferior_command (packet, strlen (packet) + 1);
+}
+
+/* Sent the agent a command to close it.  */
+
+void
+gdb_agent_about_to_close (int pid)
+{
+  char buf[IPA_CMD_BUF_SIZE];
+
+  if (!maybe_write_ipa_not_loaded (buf))
+    {
+      struct thread_info *saved_thread;
+
+      saved_thread = current_thread;
+
+      /* Find any thread which belongs to process PID.  */
+      current_thread = find_any_thread_of_pid (pid);
+
+      strcpy (buf, "close");
+
+      run_inferior_command (buf, strlen (buf) + 1);
+
+      current_thread = saved_thread;
+    }
+}
+
+/* Return the minimum instruction size needed for fast tracepoints as a
+   hexadecimal number.  */
+
+static void
+cmd_qtminftpilen (char *packet)
+{
+  if (current_thread == NULL)
+    {
+      /* Indicate that the minimum length is currently unknown.  */
+      strcpy (packet, "0");
+      return;
+    }
+
+  sprintf (packet, "%x", target_get_min_fast_tracepoint_insn_len ());
+}
+
+/* Respond to qTBuffer packet with a block of raw data from the trace
+   buffer.  GDB may ask for a lot, but we are allowed to reply with
+   only as much as will fit within packet limits or whatever.  */
+
+static void
+cmd_qtbuffer (char *own_buf)
+{
+  ULONGEST offset, num, tot;
+  unsigned char *tbp;
+  const char *packet = own_buf;
+
+  packet += strlen ("qTBuffer:");
+
+  packet = unpack_varlen_hex (packet, &offset);
+  ++packet; /* skip a comma */
+  unpack_varlen_hex (packet, &num);
+
+  trace_debug ("Want to get trace buffer, %d bytes at offset 0x%s",
+	       (int) num, phex_nz (offset, 0));
+
+  tot = (trace_buffer_hi - trace_buffer_lo) - free_space ();
+
+  /* If we're right at the end, reply specially that we're done.  */
+  if (offset == tot)
+    {
+      strcpy (own_buf, "l");
+      return;
+    }
+
+  /* Object to any other out-of-bounds request.  */
+  if (offset > tot)
+    {
+      write_enn (own_buf);
+      return;
+    }
+
+  /* Compute the pointer corresponding to the given offset, accounting
+     for wraparound.  */
+  tbp = trace_buffer_start + offset;
+  if (tbp >= trace_buffer_wrap)
+    tbp -= (trace_buffer_wrap - trace_buffer_lo);
+
+  /* Trim to the remaining bytes if we're close to the end.  */
+  if (num > tot - offset)
+    num = tot - offset;
+
+  /* Trim to available packet size.  */
+  if (num >= (PBUFSIZ - 16) / 2 )
+    num = (PBUFSIZ - 16) / 2;
+
+  bin2hex (tbp, own_buf, num);
+}
+
+static void
+cmd_bigqtbuffer_circular (char *own_buf)
+{
+  ULONGEST val;
+  char *packet = own_buf;
+
+  packet += strlen ("QTBuffer:circular:");
+
+  unpack_varlen_hex (packet, &val);
+  circular_trace_buffer = val;
+  trace_debug ("Trace buffer is now %s",
+	       circular_trace_buffer ? "circular" : "linear");
+  write_ok (own_buf);
+}
+
+static void
+cmd_bigqtbuffer_size (char *own_buf)
+{
+  ULONGEST val;
+  LONGEST sval;
+  char *packet = own_buf;
+
+  /* Can't change the size during a tracing run.  */
+  if (tracing)
+    {
+      write_enn (own_buf);
+      return;
+    }
+
+  packet += strlen ("QTBuffer:size:");
+
+  /* -1 is sent as literal "-1".  */
+  if (strcmp (packet, "-1") == 0)
+    sval = DEFAULT_TRACE_BUFFER_SIZE;
+  else
+    {
+      unpack_varlen_hex (packet, &val);
+      sval = (LONGEST) val;
+    }
+
+  init_trace_buffer (sval);
+  trace_debug ("Trace buffer is now %s bytes",
+	       plongest (trace_buffer_size));
+  write_ok (own_buf);
+}
+
+static void
+cmd_qtnotes (char *own_buf)
+{
+  size_t nbytes;
+  char *saved, *user, *notes, *stopnote;
+  char *packet = own_buf;
+
+  packet += strlen ("QTNotes:");
+
+  while (*packet)
+    {
+      if (startswith (packet, "user:"))
+	{
+	  packet += strlen ("user:");
+	  saved = packet;
+	  packet = strchr (packet, ';');
+	  nbytes = (packet - saved) / 2;
+	  user = (char *) xmalloc (nbytes + 1);
+	  nbytes = hex2bin (saved, (gdb_byte *) user, nbytes);
+	  user[nbytes] = '\0';
+	  ++packet; /* skip the semicolon */
+	  trace_debug ("User is '%s'", user);
+	  xfree (tracing_user_name);
+	  tracing_user_name = user;
+	}
+      else if (startswith (packet, "notes:"))
+	{
+	  packet += strlen ("notes:");
+	  saved = packet;
+	  packet = strchr (packet, ';');
+	  nbytes = (packet - saved) / 2;
+	  notes = (char *) xmalloc (nbytes + 1);
+	  nbytes = hex2bin (saved, (gdb_byte *) notes, nbytes);
+	  notes[nbytes] = '\0';
+	  ++packet; /* skip the semicolon */
+	  trace_debug ("Notes is '%s'", notes);
+	  xfree (tracing_notes);
+	  tracing_notes = notes;
+	}
+      else if (startswith (packet, "tstop:"))
+	{
+	  packet += strlen ("tstop:");
+	  saved = packet;
+	  packet = strchr (packet, ';');
+	  nbytes = (packet - saved) / 2;
+	  stopnote = (char *) xmalloc (nbytes + 1);
+	  nbytes = hex2bin (saved, (gdb_byte *) stopnote, nbytes);
+	  stopnote[nbytes] = '\0';
+	  ++packet; /* skip the semicolon */
+	  trace_debug ("tstop note is '%s'", stopnote);
+	  xfree (tracing_stop_note);
+	  tracing_stop_note = stopnote;
+	}
+      else
+	break;
+    }
+
+  write_ok (own_buf);
+}
+
+int
+handle_tracepoint_general_set (char *packet)
+{
+  if (strcmp ("QTinit", packet) == 0)
+    {
+      cmd_qtinit (packet);
+      return 1;
+    }
+  else if (startswith (packet, "QTDP:"))
+    {
+      cmd_qtdp (packet);
+      return 1;
+    }
+  else if (startswith (packet, "QTDPsrc:"))
+    {
+      cmd_qtdpsrc (packet);
+      return 1;
+    }
+  else if (startswith (packet, "QTEnable:"))
+    {
+      cmd_qtenable_disable (packet, 1);
+      return 1;
+    }
+  else if (startswith (packet, "QTDisable:"))
+    {
+      cmd_qtenable_disable (packet, 0);
+      return 1;
+    }
+  else if (startswith (packet, "QTDV:"))
+    {
+      cmd_qtdv (packet);
+      return 1;
+    }
+  else if (startswith (packet, "QTro:"))
+    {
+      cmd_qtro (packet);
+      return 1;
+    }
+  else if (strcmp ("QTStart", packet) == 0)
+    {
+      cmd_qtstart (packet);
+      return 1;
+    }
+  else if (strcmp ("QTStop", packet) == 0)
+    {
+      cmd_qtstop (packet);
+      return 1;
+    }
+  else if (startswith (packet, "QTDisconnected:"))
+    {
+      cmd_qtdisconnected (packet);
+      return 1;
+    }
+  else if (startswith (packet, "QTFrame:"))
+    {
+      cmd_qtframe (packet);
+      return 1;
+    }
+  else if (startswith (packet, "QTBuffer:circular:"))
+    {
+      cmd_bigqtbuffer_circular (packet);
+      return 1;
+    }
+  else if (startswith (packet, "QTBuffer:size:"))
+    {
+      cmd_bigqtbuffer_size (packet);
+      return 1;
+    }
+  else if (startswith (packet, "QTNotes:"))
+    {
+      cmd_qtnotes (packet);
+      return 1;
+    }
+
+  return 0;
+}
+
+int
+handle_tracepoint_query (char *packet)
+{
+  if (strcmp ("qTStatus", packet) == 0)
+    {
+      cmd_qtstatus (packet);
+      return 1;
+    }
+  else if (startswith (packet, "qTP:"))
+    {
+      cmd_qtp (packet);
+      return 1;
+    }
+  else if (strcmp ("qTfP", packet) == 0)
+    {
+      cmd_qtfp (packet);
+      return 1;
+    }
+  else if (strcmp ("qTsP", packet) == 0)
+    {
+      cmd_qtsp (packet);
+      return 1;
+    }
+  else if (strcmp ("qTfV", packet) == 0)
+    {
+      cmd_qtfv (packet);
+      return 1;
+    }
+  else if (strcmp ("qTsV", packet) == 0)
+    {
+      cmd_qtsv (packet);
+      return 1;
+    }
+  else if (startswith (packet, "qTV:"))
+    {
+      cmd_qtv (packet);
+      return 1;
+    }
+  else if (startswith (packet, "qTBuffer:"))
+    {
+      cmd_qtbuffer (packet);
+      return 1;
+    }
+  else if (strcmp ("qTfSTM", packet) == 0)
+    {
+      cmd_qtfstm (packet);
+      return 1;
+    }
+  else if (strcmp ("qTsSTM", packet) == 0)
+    {
+      cmd_qtsstm (packet);
+      return 1;
+    }
+  else if (startswith (packet, "qTSTMat:"))
+    {
+      cmd_qtstmat (packet);
+      return 1;
+    }
+  else if (strcmp ("qTMinFTPILen", packet) == 0)
+    {
+      cmd_qtminftpilen (packet);
+      return 1;
+    }
+
+  return 0;
+}
+
+#endif
+#ifndef IN_PROCESS_AGENT
+
+/* Call this when thread TINFO has hit the tracepoint defined by
+   TP_NUMBER and TP_ADDRESS, and that tracepoint has a while-stepping
+   action.  This adds a while-stepping collecting state item to the
+   threads' collecting state list, so that we can keep track of
+   multiple simultaneous while-stepping actions being collected by the
+   same thread.  This can happen in cases like:
+
+    ff0001  INSN1 <-- TP1, while-stepping 10 collect $regs
+    ff0002  INSN2
+    ff0003  INSN3 <-- TP2, collect $regs
+    ff0004  INSN4 <-- TP3, while-stepping 10 collect $regs
+    ff0005  INSN5
+
+   Notice that when instruction INSN5 is reached, the while-stepping
+   actions of both TP1 and TP3 are still being collected, and that TP2
+   had been collected meanwhile.  The whole range of ff0001-ff0005
+   should be single-stepped, due to at least TP1's while-stepping
+   action covering the whole range.  */
+
+static void
+add_while_stepping_state (struct thread_info *tinfo,
+			  int tp_number, CORE_ADDR tp_address)
+{
+  struct wstep_state *wstep = XNEW (struct wstep_state);
+
+  wstep->next = tinfo->while_stepping;
+
+  wstep->tp_number = tp_number;
+  wstep->tp_address = tp_address;
+  wstep->current_step = 0;
+
+  tinfo->while_stepping = wstep;
+}
+
+/* Release the while-stepping collecting state WSTEP.  */
+
+static void
+release_while_stepping_state (struct wstep_state *wstep)
+{
+  free (wstep);
+}
+
+/* Release all while-stepping collecting states currently associated
+   with thread TINFO.  */
+
+void
+release_while_stepping_state_list (struct thread_info *tinfo)
+{
+  struct wstep_state *head;
+
+  while (tinfo->while_stepping)
+    {
+      head = tinfo->while_stepping;
+      tinfo->while_stepping = head->next;
+      release_while_stepping_state (head);
+    }
+}
+
+/* If TINFO was handling a 'while-stepping' action, the step has
+   finished, so collect any step data needed, and check if any more
+   steps are required.  Return true if the thread was indeed
+   collecting tracepoint data, false otherwise.  */
+
+int
+tracepoint_finished_step (struct thread_info *tinfo, CORE_ADDR stop_pc)
+{
+  struct tracepoint *tpoint;
+  struct wstep_state *wstep;
+  struct wstep_state **wstep_link;
+  struct trap_tracepoint_ctx ctx;
+
+  /* Pull in fast tracepoint trace frames from the inferior lib buffer into
+     our buffer.  */
+  if (agent_loaded_p ())
+    upload_fast_traceframes ();
+
+  /* Check if we were indeed collecting data for one of more
+     tracepoints with a 'while-stepping' count.  */
+  if (tinfo->while_stepping == NULL)
+    return 0;
+
+  if (!tracing)
+    {
+      /* We're not even tracing anymore.  Stop this thread from
+	 collecting.  */
+      release_while_stepping_state_list (tinfo);
+
+      /* The thread had stopped due to a single-step request indeed
+	 explained by a tracepoint.  */
+      return 1;
+    }
+
+  wstep = tinfo->while_stepping;
+  wstep_link = &tinfo->while_stepping;
+
+  trace_debug ("Thread %s finished a single-step for tracepoint %d at 0x%s",
+	       target_pid_to_str (tinfo->id),
+	       wstep->tp_number, paddress (wstep->tp_address));
+
+  ctx.base.type = trap_tracepoint;
+  ctx.regcache = get_thread_regcache (tinfo, 1);
+
+  while (wstep != NULL)
+    {
+      tpoint = find_tracepoint (wstep->tp_number, wstep->tp_address);
+      if (tpoint == NULL)
+	{
+	  trace_debug ("NO TRACEPOINT %d at 0x%s FOR THREAD %s!",
+		       wstep->tp_number, paddress (wstep->tp_address),
+		       target_pid_to_str (tinfo->id));
+
+	  /* Unlink.  */
+	  *wstep_link = wstep->next;
+	  release_while_stepping_state (wstep);
+	  wstep = *wstep_link;
+	  continue;
+	}
+
+      /* We've just finished one step.  */
+      ++wstep->current_step;
+
+      /* Collect data.  */
+      collect_data_at_step ((struct tracepoint_hit_ctx *) &ctx,
+			    stop_pc, tpoint, wstep->current_step);
+
+      if (wstep->current_step >= tpoint->step_count)
+	{
+	  /* The requested numbers of steps have occurred.  */
+	  trace_debug ("Thread %s done stepping for tracepoint %d at 0x%s",
+		       target_pid_to_str (tinfo->id),
+		       wstep->tp_number, paddress (wstep->tp_address));
+
+	  /* Unlink the wstep.  */
+	  *wstep_link = wstep->next;
+	  release_while_stepping_state (wstep);
+	  wstep = *wstep_link;
+
+	  /* Only check the hit count now, which ensure that we do all
+	     our stepping before stopping the run.  */
+	  if (tpoint->pass_count > 0
+	      && tpoint->hit_count >= tpoint->pass_count
+	      && stopping_tracepoint == NULL)
+	    stopping_tracepoint = tpoint;
+	}
+      else
+	{
+	  /* Keep single-stepping until the requested numbers of steps
+	     have occurred.  */
+	  wstep_link = &wstep->next;
+	  wstep = *wstep_link;
+	}
+
+      if (stopping_tracepoint
+	  || trace_buffer_is_full
+	  || expr_eval_result != expr_eval_no_error)
+	{
+	  stop_tracing ();
+	  break;
+	}
+    }
+
+  return 1;
+}
+
+/* Handle any internal tracing control breakpoint hits.  That means,
+   pull traceframes from the IPA to our buffer, and syncing both
+   tracing agents when the IPA's tracing stops for some reason.  */
+
+int
+handle_tracepoint_bkpts (struct thread_info *tinfo, CORE_ADDR stop_pc)
+{
+  /* Pull in fast tracepoint trace frames from the inferior in-process
+     agent's buffer into our buffer.  */
+
+  if (!agent_loaded_p ())
+    return 0;
+
+  upload_fast_traceframes ();
+
+  /* Check if the in-process agent had decided we should stop
+     tracing.  */
+  if (stop_pc == ipa_sym_addrs.addr_stop_tracing)
+    {
+      int ipa_trace_buffer_is_full;
+      CORE_ADDR ipa_stopping_tracepoint;
+      int ipa_expr_eval_result;
+      CORE_ADDR ipa_error_tracepoint;
+
+      trace_debug ("lib stopped at stop_tracing");
+
+      read_inferior_integer (ipa_sym_addrs.addr_trace_buffer_is_full,
+			     &ipa_trace_buffer_is_full);
+
+      read_inferior_data_pointer (ipa_sym_addrs.addr_stopping_tracepoint,
+				  &ipa_stopping_tracepoint);
+      write_inferior_data_pointer (ipa_sym_addrs.addr_stopping_tracepoint, 0);
+
+      read_inferior_data_pointer (ipa_sym_addrs.addr_error_tracepoint,
+				  &ipa_error_tracepoint);
+      write_inferior_data_pointer (ipa_sym_addrs.addr_error_tracepoint, 0);
+
+      read_inferior_integer (ipa_sym_addrs.addr_expr_eval_result,
+			     &ipa_expr_eval_result);
+      write_inferior_integer (ipa_sym_addrs.addr_expr_eval_result, 0);
+
+      trace_debug ("lib: trace_buffer_is_full: %d, "
+		   "stopping_tracepoint: %s, "
+		   "ipa_expr_eval_result: %d, "
+		   "error_tracepoint: %s, ",
+		   ipa_trace_buffer_is_full,
+		   paddress (ipa_stopping_tracepoint),
+		   ipa_expr_eval_result,
+		   paddress (ipa_error_tracepoint));
+
+      if (debug_threads)
+	{
+	  if (ipa_trace_buffer_is_full)
+	    trace_debug ("lib stopped due to full buffer.");
+	  if (ipa_stopping_tracepoint)
+	    trace_debug ("lib stopped due to tpoint");
+	  if (ipa_error_tracepoint)
+	    trace_debug ("lib stopped due to error");
+	}
+
+      if (ipa_stopping_tracepoint != 0)
+	{
+	  stopping_tracepoint
+	    = fast_tracepoint_from_ipa_tpoint_address (ipa_stopping_tracepoint);
+	}
+      else if (ipa_expr_eval_result != expr_eval_no_error)
+	{
+	  expr_eval_result = ipa_expr_eval_result;
+	  error_tracepoint
+	    = fast_tracepoint_from_ipa_tpoint_address (ipa_error_tracepoint);
+	}
+      stop_tracing ();
+      return 1;
+    }
+  else if (stop_pc == ipa_sym_addrs.addr_flush_trace_buffer)
+    {
+      trace_debug ("lib stopped at flush_trace_buffer");
+      return 1;
+    }
+
+  return 0;
+}
+
+/* Return true if TINFO just hit a tracepoint.  Collect data if
+   so.  */
+
+int
+tracepoint_was_hit (struct thread_info *tinfo, CORE_ADDR stop_pc)
+{
+  struct tracepoint *tpoint;
+  int ret = 0;
+  struct trap_tracepoint_ctx ctx;
+
+  /* Not tracing, don't handle.  */
+  if (!tracing)
+    return 0;
+
+  ctx.base.type = trap_tracepoint;
+  ctx.regcache = get_thread_regcache (tinfo, 1);
+
+  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
+    {
+      /* Note that we collect fast tracepoints here as well.  We'll
+	 step over the fast tracepoint jump later, which avoids the
+	 double collect.  However, we don't collect for static
+	 tracepoints here, because UST markers are compiled in program,
+	 and probes will be executed in program.  So static tracepoints
+	 are collected there.   */
+      if (tpoint->enabled && stop_pc == tpoint->address
+	  && tpoint->type != static_tracepoint)
+	{
+	  trace_debug ("Thread %s at address of tracepoint %d at 0x%s",
+		       target_pid_to_str (tinfo->id),
+		       tpoint->number, paddress (tpoint->address));
+
+	  /* Test the condition if present, and collect if true.  */
+	  if (!tpoint->cond
+	      || (condition_true_at_tracepoint
+		  ((struct tracepoint_hit_ctx *) &ctx, tpoint)))
+	    collect_data_at_tracepoint ((struct tracepoint_hit_ctx *) &ctx,
+					stop_pc, tpoint);
+
+	  if (stopping_tracepoint
+	      || trace_buffer_is_full
+	      || expr_eval_result != expr_eval_no_error)
+	    {
+	      stop_tracing ();
+	    }
+	  /* If the tracepoint had a 'while-stepping' action, then set
+	     the thread to collect this tracepoint on the following
+	     single-steps.  */
+	  else if (tpoint->step_count > 0)
+	    {
+	      add_while_stepping_state (tinfo,
+					tpoint->number, tpoint->address);
+	    }
+
+	  ret = 1;
+	}
+    }
+
+  return ret;
+}
+
+#endif
+
+#if defined IN_PROCESS_AGENT && defined HAVE_UST
+struct ust_marker_data;
+static void collect_ust_data_at_tracepoint (struct tracepoint_hit_ctx *ctx,
+					    struct traceframe *tframe);
+#endif
+
+/* Create a trace frame for the hit of the given tracepoint in the
+   given thread.  */
+
+static void
+collect_data_at_tracepoint (struct tracepoint_hit_ctx *ctx, CORE_ADDR stop_pc,
+			    struct tracepoint *tpoint)
+{
+  struct traceframe *tframe;
+  int acti;
+
+  /* Only count it as a hit when we actually collect data.  */
+  tpoint->hit_count++;
+
+  /* If we've exceeded a defined pass count, record the event for
+     later, and finish the collection for this hit.  This test is only
+     for nonstepping tracepoints, stepping tracepoints test at the end
+     of their while-stepping loop.  */
+  if (tpoint->pass_count > 0
+      && tpoint->hit_count >= tpoint->pass_count
+      && tpoint->step_count == 0
+      && stopping_tracepoint == NULL)
+    stopping_tracepoint = tpoint;
+
+  trace_debug ("Making new traceframe for tracepoint %d at 0x%s, hit %" PRIu64,
+	       tpoint->number, paddress (tpoint->address), tpoint->hit_count);
+
+  tframe = add_traceframe (tpoint);
+
+  if (tframe)
+    {
+      for (acti = 0; acti < tpoint->numactions; ++acti)
+	{
+#ifndef IN_PROCESS_AGENT
+	  trace_debug ("Tracepoint %d at 0x%s about to do action '%s'",
+		       tpoint->number, paddress (tpoint->address),
+		       tpoint->actions_str[acti]);
+#endif
+
+	  do_action_at_tracepoint (ctx, stop_pc, tpoint, tframe,
+				   tpoint->actions[acti]);
+	}
+
+      finish_traceframe (tframe);
+    }
+
+  if (tframe == NULL && tracing)
+    trace_buffer_is_full = 1;
+}
+
+#ifndef IN_PROCESS_AGENT
+
+static void
+collect_data_at_step (struct tracepoint_hit_ctx *ctx,
+		      CORE_ADDR stop_pc,
+		      struct tracepoint *tpoint, int current_step)
+{
+  struct traceframe *tframe;
+  int acti;
+
+  trace_debug ("Making new step traceframe for "
+	       "tracepoint %d at 0x%s, step %d of %" PRIu64 ", hit %" PRIu64,
+	       tpoint->number, paddress (tpoint->address),
+	       current_step, tpoint->step_count,
+	       tpoint->hit_count);
+
+  tframe = add_traceframe (tpoint);
+
+  if (tframe)
+    {
+      for (acti = 0; acti < tpoint->num_step_actions; ++acti)
+	{
+	  trace_debug ("Tracepoint %d at 0x%s about to do step action '%s'",
+		       tpoint->number, paddress (tpoint->address),
+		       tpoint->step_actions_str[acti]);
+
+	  do_action_at_tracepoint (ctx, stop_pc, tpoint, tframe,
+				   tpoint->step_actions[acti]);
+	}
+
+      finish_traceframe (tframe);
+    }
+
+  if (tframe == NULL && tracing)
+    trace_buffer_is_full = 1;
+}
+
+#endif
+
+#ifdef IN_PROCESS_AGENT
+/* The target description index for IPA.  Passed from gdbserver, used
+   to select ipa_tdesc.  */
+EXTERN_C_PUSH
+IP_AGENT_EXPORT_VAR int ipa_tdesc_idx;
+EXTERN_C_POP
+#endif
+
+static struct regcache *
+get_context_regcache (struct tracepoint_hit_ctx *ctx)
+{
+  struct regcache *regcache = NULL;
+#ifdef IN_PROCESS_AGENT
+  const struct target_desc *ipa_tdesc = get_ipa_tdesc (ipa_tdesc_idx);
+
+  if (ctx->type == fast_tracepoint)
+    {
+      struct fast_tracepoint_ctx *fctx = (struct fast_tracepoint_ctx *) ctx;
+      if (!fctx->regcache_initted)
+	{
+	  fctx->regcache_initted = 1;
+	  init_register_cache (&fctx->regcache, ipa_tdesc, fctx->regspace);
+	  supply_regblock (&fctx->regcache, NULL);
+	  supply_fast_tracepoint_registers (&fctx->regcache, fctx->regs);
+	}
+      regcache = &fctx->regcache;
+    }
+#ifdef HAVE_UST
+  if (ctx->type == static_tracepoint)
+    {
+      struct static_tracepoint_ctx *sctx
+	= (struct static_tracepoint_ctx *) ctx;
+
+      if (!sctx->regcache_initted)
+	{
+	  sctx->regcache_initted = 1;
+	  init_register_cache (&sctx->regcache, ipa_tdesc, sctx->regspace);
+	  supply_regblock (&sctx->regcache, NULL);
+	  /* Pass down the tracepoint address, because REGS doesn't
+	     include the PC, but we know what it must have been.  */
+	  supply_static_tracepoint_registers (&sctx->regcache,
+					      (const unsigned char *)
+					      sctx->regs,
+					      sctx->tpoint->address);
+	}
+      regcache = &sctx->regcache;
+    }
+#endif
+#else
+  if (ctx->type == trap_tracepoint)
+    {
+      struct trap_tracepoint_ctx *tctx = (struct trap_tracepoint_ctx *) ctx;
+      regcache = tctx->regcache;
+    }
+#endif
+
+  gdb_assert (regcache != NULL);
+
+  return regcache;
+}
+
+static void
+do_action_at_tracepoint (struct tracepoint_hit_ctx *ctx,
+			 CORE_ADDR stop_pc,
+			 struct tracepoint *tpoint,
+			 struct traceframe *tframe,
+			 struct tracepoint_action *taction)
+{
+  enum eval_result_type err;
+
+  switch (taction->type)
+    {
+    case 'M':
+      {
+	struct collect_memory_action *maction;
+	struct eval_agent_expr_context ax_ctx;
+
+	maction = (struct collect_memory_action *) taction;
+	ax_ctx.regcache = NULL;
+	ax_ctx.tframe = tframe;
+	ax_ctx.tpoint = tpoint;
+
+	trace_debug ("Want to collect %s bytes at 0x%s (basereg %d)",
+		     pulongest (maction->len),
+		     paddress (maction->addr), maction->basereg);
+	/* (should use basereg) */
+	agent_mem_read (&ax_ctx, NULL, (CORE_ADDR) maction->addr,
+			maction->len);
+	break;
+      }
+    case 'R':
+      {
+	unsigned char *regspace;
+	struct regcache tregcache;
+	struct regcache *context_regcache;
+	int regcache_size;
+
+	trace_debug ("Want to collect registers");
+
+	context_regcache = get_context_regcache (ctx);
+	regcache_size = register_cache_size (context_regcache->tdesc);
+
+	/* Collect all registers for now.  */
+	regspace = add_traceframe_block (tframe, tpoint, 1 + regcache_size);
+	if (regspace == NULL)
+	  {
+	    trace_debug ("Trace buffer block allocation failed, skipping");
+	    break;
+	  }
+	/* Identify a register block.  */
+	*regspace = 'R';
+
+	/* Wrap the regblock in a register cache (in the stack, we
+	   don't want to malloc here).  */
+	init_register_cache (&tregcache, context_regcache->tdesc,
+			     regspace + 1);
+
+	/* Copy the register data to the regblock.  */
+	regcache_cpy (&tregcache, context_regcache);
+
+#ifndef IN_PROCESS_AGENT
+	/* On some platforms, trap-based tracepoints will have the PC
+	   pointing to the next instruction after the trap, but we
+	   don't want the user or GDB trying to guess whether the
+	   saved PC needs adjusting; so always record the adjusted
+	   stop_pc.  Note that we can't use tpoint->address instead,
+	   since it will be wrong for while-stepping actions.  This
+	   adjustment is a nop for fast tracepoints collected from the
+	   in-process lib (but not if GDBserver is collecting one
+	   preemptively), since the PC had already been adjusted to
+	   contain the tracepoint's address by the jump pad.  */
+	trace_debug ("Storing stop pc (0x%s) in regblock",
+		     paddress (stop_pc));
+
+	/* This changes the regblock, not the thread's
+	   regcache.  */
+	regcache_write_pc (&tregcache, stop_pc);
+#endif
+      }
+      break;
+    case 'X':
+      {
+	struct eval_expr_action *eaction;
+	struct eval_agent_expr_context ax_ctx;
+
+	eaction = (struct eval_expr_action *) taction;
+	ax_ctx.regcache = get_context_regcache (ctx);
+	ax_ctx.tframe = tframe;
+	ax_ctx.tpoint = tpoint;
+
+	trace_debug ("Want to evaluate expression");
+
+	err = gdb_eval_agent_expr (&ax_ctx, eaction->expr, NULL);
+
+	if (err != expr_eval_no_error)
+	  {
+	    record_tracepoint_error (tpoint, "action expression", err);
+	    return;
+	  }
+      }
+      break;
+    case 'L':
+      {
+#if defined IN_PROCESS_AGENT && defined HAVE_UST
+	trace_debug ("Want to collect static trace data");
+	collect_ust_data_at_tracepoint (ctx, tframe);
+#else
+	trace_debug ("warning: collecting static trace data, "
+		     "but static tracepoints are not supported");
+#endif
+      }
+      break;
+    default:
+      trace_debug ("unknown trace action '%c', ignoring", taction->type);
+      break;
+    }
+}
+
+static int
+condition_true_at_tracepoint (struct tracepoint_hit_ctx *ctx,
+			      struct tracepoint *tpoint)
+{
+  ULONGEST value = 0;
+  enum eval_result_type err;
+
+  /* Presently, gdbserver doesn't run compiled conditions, only the
+     IPA does.  If the program stops at a fast tracepoint's address
+     (e.g., due to a breakpoint, trap tracepoint, or stepping),
+     gdbserver preemptively collect the fast tracepoint.  Later, on
+     resume, gdbserver steps over the fast tracepoint like it steps
+     over breakpoints, so that the IPA doesn't see that fast
+     tracepoint.  This avoids double collects of fast tracepoints in
+     that stopping scenario.  Having gdbserver itself handle the fast
+     tracepoint gives the user a consistent view of when fast or trap
+     tracepoints are collected, compared to an alternative where only
+     trap tracepoints are collected on stop, and fast tracepoints on
+     resume.  When a fast tracepoint is being processed by gdbserver,
+     it is always the non-compiled condition expression that is
+     used.  */
+#ifdef IN_PROCESS_AGENT
+  if (tpoint->compiled_cond)
+    {
+      struct fast_tracepoint_ctx *fctx = (struct fast_tracepoint_ctx *) ctx;
+      err = ((condfn) (uintptr_t) (tpoint->compiled_cond)) (fctx->regs, &value);
+    }
+  else
+#endif
+    {
+      struct eval_agent_expr_context ax_ctx;
+
+      ax_ctx.regcache = get_context_regcache (ctx);
+      ax_ctx.tframe = NULL;
+      ax_ctx.tpoint = tpoint;
+
+      err = gdb_eval_agent_expr (&ax_ctx, tpoint->cond, &value);
+    }
+  if (err != expr_eval_no_error)
+    {
+      record_tracepoint_error (tpoint, "condition", err);
+      /* The error case must return false.  */
+      return 0;
+    }
+
+  trace_debug ("Tracepoint %d at 0x%s condition evals to %s",
+	       tpoint->number, paddress (tpoint->address),
+	       pulongest (value));
+  return (value ? 1 : 0);
+}
+
+/* Do memory copies for bytecodes.  */
+/* Do the recording of memory blocks for actions and bytecodes.  */
+
+int
+agent_mem_read (struct eval_agent_expr_context *ctx,
+		unsigned char *to, CORE_ADDR from, ULONGEST len)
+{
+  unsigned char *mspace;
+  ULONGEST remaining = len;
+  unsigned short blocklen;
+
+  /* If a 'to' buffer is specified, use it.  */
+  if (to != NULL)
+    {
+      read_inferior_memory (from, to, len);
+      return 0;
+    }
+
+  /* Otherwise, create a new memory block in the trace buffer.  */
+  while (remaining > 0)
+    {
+      size_t sp;
+
+      blocklen = (remaining > 65535 ? 65535 : remaining);
+      sp = 1 + sizeof (from) + sizeof (blocklen) + blocklen;
+      mspace = add_traceframe_block (ctx->tframe, ctx->tpoint, sp);
+      if (mspace == NULL)
+	return 1;
+      /* Identify block as a memory block.  */
+      *mspace = 'M';
+      ++mspace;
+      /* Record address and size.  */
+      memcpy (mspace, &from, sizeof (from));
+      mspace += sizeof (from);
+      memcpy (mspace, &blocklen, sizeof (blocklen));
+      mspace += sizeof (blocklen);
+      /* Record the memory block proper.  */
+      read_inferior_memory (from, mspace, blocklen);
+      trace_debug ("%d bytes recorded", blocklen);
+      remaining -= blocklen;
+      from += blocklen;
+    }
+  return 0;
+}
+
+int
+agent_mem_read_string (struct eval_agent_expr_context *ctx,
+		       unsigned char *to, CORE_ADDR from, ULONGEST len)
+{
+  unsigned char *buf, *mspace;
+  ULONGEST remaining = len;
+  unsigned short blocklen, i;
+
+  /* To save a bit of space, block lengths are 16-bit, so break large
+     requests into multiple blocks.  Bordering on overkill for strings,
+     but it could happen that someone specifies a large max length.  */
+  while (remaining > 0)
+    {
+      size_t sp;
+
+      blocklen = (remaining > 65535 ? 65535 : remaining);
+      /* We want working space to accumulate nonzero bytes, since
+	 traceframes must have a predecided size (otherwise it gets
+	 harder to wrap correctly for the circular case, etc).  */
+      buf = (unsigned char *) xmalloc (blocklen + 1);
+      for (i = 0; i < blocklen; ++i)
+	{
+	  /* Read the string one byte at a time, in case the string is
+	     at the end of a valid memory area - we don't want a
+	     correctly-terminated string to engender segvio
+	     complaints.  */
+	  read_inferior_memory (from + i, buf + i, 1);
+
+	  if (buf[i] == '\0')
+	    {
+	      blocklen = i + 1;
+	      /* Make sure outer loop stops now too.  */
+	      remaining = blocklen;
+	      break;
+	    }
+	}
+      sp = 1 + sizeof (from) + sizeof (blocklen) + blocklen;
+      mspace = add_traceframe_block (ctx->tframe, ctx->tpoint, sp);
+      if (mspace == NULL)
+	{
+	  xfree (buf);
+	  return 1;
+	}
+      /* Identify block as a memory block.  */
+      *mspace = 'M';
+      ++mspace;
+      /* Record address and size.  */
+      memcpy ((void *) mspace, (void *) &from, sizeof (from));
+      mspace += sizeof (from);
+      memcpy ((void *) mspace, (void *) &blocklen, sizeof (blocklen));
+      mspace += sizeof (blocklen);
+      /* Copy the string contents.  */
+      memcpy ((void *) mspace, (void *) buf, blocklen);
+      remaining -= blocklen;
+      from += blocklen;
+      xfree (buf);
+    }
+  return 0;
+}
+
+/* Record the value of a trace state variable.  */
+
+int
+agent_tsv_read (struct eval_agent_expr_context *ctx, int n)
+{
+  unsigned char *vspace;
+  LONGEST val;
+
+  vspace = add_traceframe_block (ctx->tframe, ctx->tpoint,
+				 1 + sizeof (n) + sizeof (LONGEST));
+  if (vspace == NULL)
+    return 1;
+  /* Identify block as a variable.  */
+  *vspace = 'V';
+  /* Record variable's number and value.  */
+  memcpy (vspace + 1, &n, sizeof (n));
+  val = get_trace_state_variable_value (n);
+  memcpy (vspace + 1 + sizeof (n), &val, sizeof (val));
+  trace_debug ("Variable %d recorded", n);
+  return 0;
+}
+
+#ifndef IN_PROCESS_AGENT
+
+/* Callback for traceframe_walk_blocks, used to find a given block
+   type in a traceframe.  */
+
+static int
+match_blocktype (char blocktype, unsigned char *dataptr, void *data)
+{
+  char *wantedp = (char *) data;
+
+  if (*wantedp == blocktype)
+    return 1;
+
+  return 0;
+}
+
+/* Walk over all traceframe blocks of the traceframe buffer starting
+   at DATABASE, of DATASIZE bytes long, and call CALLBACK for each
+   block found, passing in DATA unmodified.  If CALLBACK returns true,
+   this returns a pointer to where the block is found.  Returns NULL
+   if no callback call returned true, indicating that all blocks have
+   been walked.  */
+
+static unsigned char *
+traceframe_walk_blocks (unsigned char *database, unsigned int datasize,
+			int tfnum,
+			int (*callback) (char blocktype,
+					 unsigned char *dataptr,
+					 void *data),
+			void *data)
+{
+  unsigned char *dataptr;
+
+  if (datasize == 0)
+    {
+      trace_debug ("traceframe %d has no data", tfnum);
+      return NULL;
+    }
+
+  /* Iterate through a traceframe's blocks, looking for a block of the
+     requested type.  */
+  for (dataptr = database;
+       dataptr < database + datasize;
+       /* nothing */)
+    {
+      char blocktype;
+      unsigned short mlen;
+
+      if (dataptr == trace_buffer_wrap)
+	{
+	  /* Adjust to reflect wrapping part of the frame around to
+	     the beginning.  */
+	  datasize = dataptr - database;
+	  dataptr = database = trace_buffer_lo;
+	}
+
+      blocktype = *dataptr++;
+
+      if ((*callback) (blocktype, dataptr, data))
+	return dataptr;
+
+      switch (blocktype)
+	{
+	case 'R':
+	  /* Skip over the registers block.  */
+	  dataptr += current_target_desc ()->registers_size;
+	  break;
+	case 'M':
+	  /* Skip over the memory block.  */
+	  dataptr += sizeof (CORE_ADDR);
+	  memcpy (&mlen, dataptr, sizeof (mlen));
+	  dataptr += (sizeof (mlen) + mlen);
+	  break;
+	case 'V':
+	  /* Skip over the TSV block.  */
+	  dataptr += (sizeof (int) + sizeof (LONGEST));
+	  break;
+	case 'S':
+	  /* Skip over the static trace data block.  */
+	  memcpy (&mlen, dataptr, sizeof (mlen));
+	  dataptr += (sizeof (mlen) + mlen);
+	  break;
+	default:
+	  trace_debug ("traceframe %d has unknown block type 0x%x",
+		       tfnum, blocktype);
+	  return NULL;
+	}
+    }
+
+  return NULL;
+}
+
+/* Look for the block of type TYPE_WANTED in the traceframe starting
+   at DATABASE of DATASIZE bytes long.  TFNUM is the traceframe
+   number.  */
+
+static unsigned char *
+traceframe_find_block_type (unsigned char *database, unsigned int datasize,
+			    int tfnum, char type_wanted)
+{
+  return traceframe_walk_blocks (database, datasize, tfnum,
+				 match_blocktype, &type_wanted);
+}
+
+static unsigned char *
+traceframe_find_regblock (struct traceframe *tframe, int tfnum)
+{
+  unsigned char *regblock;
+
+  regblock = traceframe_find_block_type (tframe->data,
+					 tframe->data_size,
+					 tfnum, 'R');
+
+  if (regblock == NULL)
+    trace_debug ("traceframe %d has no register data", tfnum);
+
+  return regblock;
+}
+
+/* Get registers from a traceframe.  */
+
+int
+fetch_traceframe_registers (int tfnum, struct regcache *regcache, int regnum)
+{
+  unsigned char *dataptr;
+  struct tracepoint *tpoint;
+  struct traceframe *tframe;
+
+  tframe = find_traceframe (tfnum);
+
+  if (tframe == NULL)
+    {
+      trace_debug ("traceframe %d not found", tfnum);
+      return 1;
+    }
+
+  dataptr = traceframe_find_regblock (tframe, tfnum);
+  if (dataptr == NULL)
+    {
+      /* Mark registers unavailable.  */
+      supply_regblock (regcache, NULL);
+
+      /* We can generally guess at a PC, although this will be
+	 misleading for while-stepping frames and multi-location
+	 tracepoints.  */
+      tpoint = find_next_tracepoint_by_number (NULL, tframe->tpnum);
+      if (tpoint != NULL)
+	regcache_write_pc (regcache, tpoint->address);
+    }
+  else
+    supply_regblock (regcache, dataptr);
+
+  return 0;
+}
+
+static CORE_ADDR
+traceframe_get_pc (struct traceframe *tframe)
+{
+  struct regcache regcache;
+  unsigned char *dataptr;
+  const struct target_desc *tdesc = current_target_desc ();
+
+  dataptr = traceframe_find_regblock (tframe, -1);
+  if (dataptr == NULL)
+    return 0;
+
+  init_register_cache (&regcache, tdesc, dataptr);
+  return regcache_read_pc (&regcache);
+}
+
+/* Read a requested block of memory from a trace frame.  */
+
+int
+traceframe_read_mem (int tfnum, CORE_ADDR addr,
+		     unsigned char *buf, ULONGEST length,
+		     ULONGEST *nbytes)
+{
+  struct traceframe *tframe;
+  unsigned char *database, *dataptr;
+  unsigned int datasize;
+  CORE_ADDR maddr;
+  unsigned short mlen;
+
+  trace_debug ("traceframe_read_mem");
+
+  tframe = find_traceframe (tfnum);
+
+  if (!tframe)
+    {
+      trace_debug ("traceframe %d not found", tfnum);
+      return 1;
+    }
+
+  datasize = tframe->data_size;
+  database = dataptr = &tframe->data[0];
+
+  /* Iterate through a traceframe's blocks, looking for memory.  */
+  while ((dataptr = traceframe_find_block_type (dataptr,
+						datasize
+						- (dataptr - database),
+						tfnum, 'M')) != NULL)
+    {
+      memcpy (&maddr, dataptr, sizeof (maddr));
+      dataptr += sizeof (maddr);
+      memcpy (&mlen, dataptr, sizeof (mlen));
+      dataptr += sizeof (mlen);
+      trace_debug ("traceframe %d has %d bytes at %s",
+		   tfnum, mlen, paddress (maddr));
+
+      /* If the block includes the first part of the desired range,
+	 return as much it has; GDB will re-request the remainder,
+	 which might be in a different block of this trace frame.  */
+      if (maddr <= addr && addr < (maddr + mlen))
+	{
+	  ULONGEST amt = (maddr + mlen) - addr;
+	  if (amt > length)
+	    amt = length;
+
+	  memcpy (buf, dataptr + (addr - maddr), amt);
+	  *nbytes = amt;
+	  return 0;
+	}
+
+      /* Skip over this block.  */
+      dataptr += mlen;
+    }
+
+  trace_debug ("traceframe %d has no memory data for the desired region",
+	       tfnum);
+
+  *nbytes = 0;
+  return 0;
+}
+
+static int
+traceframe_read_tsv (int tsvnum, LONGEST *val)
+{
+  client_state &cs = get_client_state ();
+  int tfnum;
+  struct traceframe *tframe;
+  unsigned char *database, *dataptr;
+  unsigned int datasize;
+  int vnum;
+  int found = 0;
+
+  trace_debug ("traceframe_read_tsv");
+
+  tfnum = cs.current_traceframe;
+
+  if (tfnum < 0)
+    {
+      trace_debug ("no current traceframe");
+      return 1;
+    }
+
+  tframe = find_traceframe (tfnum);
+
+  if (tframe == NULL)
+    {
+      trace_debug ("traceframe %d not found", tfnum);
+      return 1;
+    }
+
+  datasize = tframe->data_size;
+  database = dataptr = &tframe->data[0];
+
+  /* Iterate through a traceframe's blocks, looking for the last
+     matched tsv.  */
+  while ((dataptr = traceframe_find_block_type (dataptr,
+						datasize
+						- (dataptr - database),
+						tfnum, 'V')) != NULL)
+    {
+      memcpy (&vnum, dataptr, sizeof (vnum));
+      dataptr += sizeof (vnum);
+
+      trace_debug ("traceframe %d has variable %d", tfnum, vnum);
+
+      /* Check that this is the variable we want.  */
+      if (tsvnum == vnum)
+	{
+	  memcpy (val, dataptr, sizeof (*val));
+	  found = 1;
+	}
+
+      /* Skip over this block.  */
+      dataptr += sizeof (LONGEST);
+    }
+
+  if (!found)
+    trace_debug ("traceframe %d has no data for variable %d",
+		 tfnum, tsvnum);
+  return !found;
+}
+
+/* Read a requested block of static tracepoint data from a trace
+   frame.  */
+
+int
+traceframe_read_sdata (int tfnum, ULONGEST offset,
+		       unsigned char *buf, ULONGEST length,
+		       ULONGEST *nbytes)
+{
+  struct traceframe *tframe;
+  unsigned char *database, *dataptr;
+  unsigned int datasize;
+  unsigned short mlen;
+
+  trace_debug ("traceframe_read_sdata");
+
+  tframe = find_traceframe (tfnum);
+
+  if (!tframe)
+    {
+      trace_debug ("traceframe %d not found", tfnum);
+      return 1;
+    }
+
+  datasize = tframe->data_size;
+  database = &tframe->data[0];
+
+  /* Iterate through a traceframe's blocks, looking for static
+     tracepoint data.  */
+  dataptr = traceframe_find_block_type (database, datasize,
+					tfnum, 'S');
+  if (dataptr != NULL)
+    {
+      memcpy (&mlen, dataptr, sizeof (mlen));
+      dataptr += sizeof (mlen);
+      if (offset < mlen)
+	{
+	  if (offset + length > mlen)
+	    length = mlen - offset;
+
+	  memcpy (buf, dataptr, length);
+	  *nbytes = length;
+	}
+      else
+	*nbytes = 0;
+      return 0;
+    }
+
+  trace_debug ("traceframe %d has no static trace data", tfnum);
+
+  *nbytes = 0;
+  return 0;
+}
+
+/* Callback for traceframe_walk_blocks.  Builds a traceframe-info
+   object.  DATA is pointer to a struct buffer holding the
+   traceframe-info object being built.  */
+
+static int
+build_traceframe_info_xml (char blocktype, unsigned char *dataptr, void *data)
+{
+  struct buffer *buffer = (struct buffer *) data;
+
+  switch (blocktype)
+    {
+    case 'M':
+      {
+	unsigned short mlen;
+	CORE_ADDR maddr;
+
+	memcpy (&maddr, dataptr, sizeof (maddr));
+	dataptr += sizeof (maddr);
+	memcpy (&mlen, dataptr, sizeof (mlen));
+	dataptr += sizeof (mlen);
+	buffer_xml_printf (buffer,
+			   "<memory start=\"0x%s\" length=\"0x%s\"/>\n",
+			   paddress (maddr), phex_nz (mlen, sizeof (mlen)));
+	break;
+      }
+    case 'V':
+      {
+	int vnum;
+
+	memcpy (&vnum, dataptr, sizeof (vnum));
+	buffer_xml_printf (buffer, "<tvar id=\"%d\"/>\n", vnum);
+	break;
+      }
+    case 'R':
+    case 'S':
+      {
+	break;
+      }
+    default:
+      warning ("Unhandled trace block type (%d) '%c ' "
+	       "while building trace frame info.",
+	       blocktype, blocktype);
+      break;
+    }
+
+  return 0;
+}
+
+/* Build a traceframe-info object for traceframe number TFNUM into
+   BUFFER.  */
+
+int
+traceframe_read_info (int tfnum, struct buffer *buffer)
+{
+  struct traceframe *tframe;
+
+  trace_debug ("traceframe_read_info");
+
+  tframe = find_traceframe (tfnum);
+
+  if (!tframe)
+    {
+      trace_debug ("traceframe %d not found", tfnum);
+      return 1;
+    }
+
+  buffer_grow_str (buffer, "<traceframe-info>\n");
+  traceframe_walk_blocks (tframe->data, tframe->data_size,
+			  tfnum, build_traceframe_info_xml, buffer);
+  buffer_grow_str0 (buffer, "</traceframe-info>\n");
+  return 0;
+}
+
+/* Return the first fast tracepoint whose jump pad contains PC.  */
+
+static struct tracepoint *
+fast_tracepoint_from_jump_pad_address (CORE_ADDR pc)
+{
+  struct tracepoint *tpoint;
+
+  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
+    if (tpoint->type == fast_tracepoint)
+      if (tpoint->jump_pad <= pc && pc < tpoint->jump_pad_end)
+	return tpoint;
+
+  return NULL;
+}
+
+/* Return the first fast tracepoint whose trampoline contains PC.  */
+
+static struct tracepoint *
+fast_tracepoint_from_trampoline_address (CORE_ADDR pc)
+{
+  struct tracepoint *tpoint;
+
+  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
+    {
+      if (tpoint->type == fast_tracepoint
+	  && tpoint->trampoline <= pc && pc < tpoint->trampoline_end)
+	return tpoint;
+    }
+
+  return NULL;
+}
+
+/* Return GDBserver's tracepoint that matches the IP Agent's
+   tracepoint object that lives at IPA_TPOINT_OBJ in the IP Agent's
+   address space.  */
+
+static struct tracepoint *
+fast_tracepoint_from_ipa_tpoint_address (CORE_ADDR ipa_tpoint_obj)
+{
+  struct tracepoint *tpoint;
+
+  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
+    if (tpoint->type == fast_tracepoint)
+      if (tpoint->obj_addr_on_target == ipa_tpoint_obj)
+	return tpoint;
+
+  return NULL;
+}
+
+#endif
+
+/* The type of the object that is used to synchronize fast tracepoint
+   collection.  */
+
+typedef struct collecting_t
+{
+  /* The fast tracepoint number currently collecting.  */
+  uintptr_t tpoint;
+
+  /* A number that GDBserver can use to identify the thread that is
+     presently holding the collect lock.  This need not (and usually
+     is not) the thread id, as getting the current thread ID usually
+     requires a system call, which we want to avoid like the plague.
+     Usually this is thread's TCB, found in the TLS (pseudo-)
+     register, which is readable with a single insn on several
+     architectures.  */
+  uintptr_t thread_area;
+} collecting_t;
+
+#ifndef IN_PROCESS_AGENT
+
+void
+force_unlock_trace_buffer (void)
+{
+  write_inferior_data_pointer (ipa_sym_addrs.addr_collecting, 0);
+}
+
+/* Check if the thread identified by THREAD_AREA which is stopped at
+   STOP_PC, is presently locking the fast tracepoint collection, and
+   if so, gather some status of said collection.  Returns 0 if the
+   thread isn't collecting or in the jump pad at all.  1, if in the
+   jump pad (or within gdb_collect) and hasn't executed the adjusted
+   original insn yet (can set a breakpoint there and run to it).  2,
+   if presently executing the adjusted original insn --- in which
+   case, if we want to move the thread out of the jump pad, we need to
+   single-step it until this function returns 0.  */
+
+fast_tpoint_collect_result
+fast_tracepoint_collecting (CORE_ADDR thread_area,
+			    CORE_ADDR stop_pc,
+			    struct fast_tpoint_collect_status *status)
+{
+  CORE_ADDR ipa_collecting;
+  CORE_ADDR ipa_gdb_jump_pad_buffer, ipa_gdb_jump_pad_buffer_end;
+  CORE_ADDR ipa_gdb_trampoline_buffer;
+  CORE_ADDR ipa_gdb_trampoline_buffer_end;
+  struct tracepoint *tpoint;
+  int needs_breakpoint;
+
+  /* The thread THREAD_AREA is either:
+
+      0. not collecting at all, not within the jump pad, or within
+	 gdb_collect or one of its callees.
+
+      1. in the jump pad and haven't reached gdb_collect
+
+      2. within gdb_collect (out of the jump pad) (collect is set)
+
+      3. we're in the jump pad, after gdb_collect having returned,
+	 possibly executing the adjusted insns.
+
+      For cases 1 and 3, `collecting' may or not be set.  The jump pad
+      doesn't have any complicated jump logic, so we can tell if the
+      thread is executing the adjust original insn or not by just
+      matching STOP_PC with known jump pad addresses.  If we it isn't
+      yet executing the original insn, set a breakpoint there, and let
+      the thread run to it, so to quickly step over a possible (many
+      insns) gdb_collect call.  Otherwise, or when the breakpoint is
+      hit, only a few (small number of) insns are left to be executed
+      in the jump pad.  Single-step the thread until it leaves the
+      jump pad.  */
+
+ again:
+  tpoint = NULL;
+  needs_breakpoint = 0;
+  trace_debug ("fast_tracepoint_collecting");
+
+  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_jump_pad_buffer,
+				  &ipa_gdb_jump_pad_buffer))
+    {
+      internal_error (__FILE__, __LINE__,
+		      "error extracting `gdb_jump_pad_buffer'");
+    }
+  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_jump_pad_buffer_end,
+				  &ipa_gdb_jump_pad_buffer_end))
+    {
+      internal_error (__FILE__, __LINE__,
+		      "error extracting `gdb_jump_pad_buffer_end'");
+    }
+
+  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer,
+				  &ipa_gdb_trampoline_buffer))
+    {
+      internal_error (__FILE__, __LINE__,
+		      "error extracting `gdb_trampoline_buffer'");
+    }
+  if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_trampoline_buffer_end,
+				  &ipa_gdb_trampoline_buffer_end))
+    {
+      internal_error (__FILE__, __LINE__,
+		      "error extracting `gdb_trampoline_buffer_end'");
+    }
+
+  if (ipa_gdb_jump_pad_buffer <= stop_pc
+      && stop_pc < ipa_gdb_jump_pad_buffer_end)
+    {
+      /* We can tell which tracepoint(s) the thread is collecting by
+	 matching the jump pad address back to the tracepoint.  */
+      tpoint = fast_tracepoint_from_jump_pad_address (stop_pc);
+      if (tpoint == NULL)
+	{
+	  warning ("in jump pad, but no matching tpoint?");
+	  return fast_tpoint_collect_result::not_collecting;
+	}
+      else
+	{
+	  trace_debug ("in jump pad of tpoint (%d, %s); jump_pad(%s, %s); "
+		       "adj_insn(%s, %s)",
+		       tpoint->number, paddress (tpoint->address),
+		       paddress (tpoint->jump_pad),
+		       paddress (tpoint->jump_pad_end),
+		       paddress (tpoint->adjusted_insn_addr),
+		       paddress (tpoint->adjusted_insn_addr_end));
+	}
+
+      /* Definitely in the jump pad.  May or may not need
+	 fast-exit-jump-pad breakpoint.  */
+      if (tpoint->jump_pad <= stop_pc
+	  && stop_pc < tpoint->adjusted_insn_addr)
+	needs_breakpoint =  1;
+    }
+  else if (ipa_gdb_trampoline_buffer <= stop_pc
+	   && stop_pc < ipa_gdb_trampoline_buffer_end)
+    {
+      /* We can tell which tracepoint(s) the thread is collecting by
+	 matching the trampoline address back to the tracepoint.  */
+      tpoint = fast_tracepoint_from_trampoline_address (stop_pc);
+      if (tpoint == NULL)
+	{
+	  warning ("in trampoline, but no matching tpoint?");
+	  return fast_tpoint_collect_result::not_collecting;
+	}
+      else
+	{
+	  trace_debug ("in trampoline of tpoint (%d, %s); trampoline(%s, %s)",
+		       tpoint->number, paddress (tpoint->address),
+		       paddress (tpoint->trampoline),
+		       paddress (tpoint->trampoline_end));
+	}
+
+      /* Have not reached jump pad yet, but treat the trampoline as a
+	 part of the jump pad that is before the adjusted original
+	 instruction.  */
+      needs_breakpoint = 1;
+    }
+  else
+    {
+      collecting_t ipa_collecting_obj;
+
+      /* If `collecting' is set/locked, then the THREAD_AREA thread
+	 may or not be the one holding the lock.  We have to read the
+	 lock to find out.  */
+
+      if (read_inferior_data_pointer (ipa_sym_addrs.addr_collecting,
+				      &ipa_collecting))
+	{
+	  trace_debug ("fast_tracepoint_collecting:"
+		       " failed reading 'collecting' in the inferior");
+	  return fast_tpoint_collect_result::not_collecting;
+	}
+
+      if (!ipa_collecting)
+	{
+	  trace_debug ("fast_tracepoint_collecting: not collecting"
+		       " (and nobody is).");
+	  return fast_tpoint_collect_result::not_collecting;
+	}
+
+      /* Some thread is collecting.  Check which.  */
+      if (read_inferior_memory (ipa_collecting,
+				(unsigned char *) &ipa_collecting_obj,
+				sizeof (ipa_collecting_obj)) != 0)
+	goto again;
+
+      if (ipa_collecting_obj.thread_area != thread_area)
+	{
+	  trace_debug ("fast_tracepoint_collecting: not collecting "
+		       "(another thread is)");
+	  return fast_tpoint_collect_result::not_collecting;
+	}
+
+      tpoint
+	= fast_tracepoint_from_ipa_tpoint_address (ipa_collecting_obj.tpoint);
+      if (tpoint == NULL)
+	{
+	  warning ("fast_tracepoint_collecting: collecting, "
+		   "but tpoint %s not found?",
+		   paddress ((CORE_ADDR) ipa_collecting_obj.tpoint));
+	  return fast_tpoint_collect_result::not_collecting;
+	}
+
+      /* The thread is within `gdb_collect', skip over the rest of
+	 fast tracepoint collection quickly using a breakpoint.  */
+      needs_breakpoint = 1;
+    }
+
+  /* The caller wants a bit of status detail.  */
+  if (status != NULL)
+    {
+      status->tpoint_num = tpoint->number;
+      status->tpoint_addr = tpoint->address;
+      status->adjusted_insn_addr = tpoint->adjusted_insn_addr;
+      status->adjusted_insn_addr_end = tpoint->adjusted_insn_addr_end;
+    }
+
+  if (needs_breakpoint)
+    {
+      /* Hasn't executed the original instruction yet.  Set breakpoint
+	 there, and wait till it's hit, then single-step until exiting
+	 the jump pad.  */
+
+      trace_debug ("\
+fast_tracepoint_collecting, returning continue-until-break at %s",
+		   paddress (tpoint->adjusted_insn_addr));
+
+      return fast_tpoint_collect_result::before_insn; /* continue */
+    }
+  else
+    {
+      /* Just single-step until exiting the jump pad.  */
+
+      trace_debug ("fast_tracepoint_collecting, returning "
+		   "need-single-step (%s-%s)",
+		   paddress (tpoint->adjusted_insn_addr),
+		   paddress (tpoint->adjusted_insn_addr_end));
+
+      return fast_tpoint_collect_result::at_insn; /* single-step */
+    }
+}
+
+#endif
+
+#ifdef IN_PROCESS_AGENT
+
+/* The global fast tracepoint collect lock.  Points to a collecting_t
+   object built on the stack by the jump pad, if presently locked;
+   NULL if it isn't locked.  Note that this lock *must* be set while
+   executing any *function other than the jump pad.  See
+   fast_tracepoint_collecting.  */
+EXTERN_C_PUSH
+IP_AGENT_EXPORT_VAR collecting_t *collecting;
+EXTERN_C_POP
+
+/* This is needed for -Wmissing-declarations.  */
+IP_AGENT_EXPORT_FUNC void gdb_collect (struct tracepoint *tpoint,
+				       unsigned char *regs);
+
+/* This routine, called from the jump pad (in asm) is designed to be
+   called from the jump pads of fast tracepoints, thus it is on the
+   critical path.  */
+
+IP_AGENT_EXPORT_FUNC void
+gdb_collect (struct tracepoint *tpoint, unsigned char *regs)
+{
+  struct fast_tracepoint_ctx ctx;
+  const struct target_desc *ipa_tdesc;
+
+  /* Don't do anything until the trace run is completely set up.  */
+  if (!tracing)
+    return;
+
+  ipa_tdesc = get_ipa_tdesc (ipa_tdesc_idx);
+  ctx.base.type = fast_tracepoint;
+  ctx.regs = regs;
+  ctx.regcache_initted = 0;
+  /* Wrap the regblock in a register cache (in the stack, we don't
+     want to malloc here).  */
+  ctx.regspace = (unsigned char *) alloca (ipa_tdesc->registers_size);
+  if (ctx.regspace == NULL)
+    {
+      trace_debug ("Trace buffer block allocation failed, skipping");
+      return;
+    }
+
+  for (ctx.tpoint = tpoint;
+       ctx.tpoint != NULL && ctx.tpoint->address == tpoint->address;
+       ctx.tpoint = ctx.tpoint->next)
+    {
+      if (!ctx.tpoint->enabled)
+	continue;
+
+      /* Multiple tracepoints of different types, such as fast tracepoint and
+	 static tracepoint, can be set at the same address.  */
+      if (ctx.tpoint->type != tpoint->type)
+	continue;
+
+      /* Test the condition if present, and collect if true.  */
+      if (ctx.tpoint->cond == NULL
+	  || condition_true_at_tracepoint ((struct tracepoint_hit_ctx *) &ctx,
+					   ctx.tpoint))
+	{
+	  collect_data_at_tracepoint ((struct tracepoint_hit_ctx *) &ctx,
+				      ctx.tpoint->address, ctx.tpoint);
+
+	  /* Note that this will cause original insns to be written back
+	     to where we jumped from, but that's OK because we're jumping
+	     back to the next whole instruction.  This will go badly if
+	     instruction restoration is not atomic though.  */
+	  if (stopping_tracepoint
+	      || trace_buffer_is_full
+	      || expr_eval_result != expr_eval_no_error)
+	    {
+	      stop_tracing ();
+	      break;
+	    }
+	}
+      else
+	{
+	  /* If there was a condition and it evaluated to false, the only
+	     way we would stop tracing is if there was an error during
+	     condition expression evaluation.  */
+	  if (expr_eval_result != expr_eval_no_error)
+	    {
+	      stop_tracing ();
+	      break;
+	    }
+	}
+    }
+}
+
+/* These global variables points to the corresponding functions.  This is
+   necessary on powerpc64, where asking for function symbol address from gdb
+   results in returning the actual code pointer, instead of the descriptor
+   pointer.  */
+
+typedef void (*gdb_collect_ptr_type) (struct tracepoint *, unsigned char *);
+typedef ULONGEST (*get_raw_reg_ptr_type) (const unsigned char *, int);
+typedef LONGEST (*get_trace_state_variable_value_ptr_type) (int);
+typedef void (*set_trace_state_variable_value_ptr_type) (int, LONGEST);
+
+EXTERN_C_PUSH
+IP_AGENT_EXPORT_VAR gdb_collect_ptr_type gdb_collect_ptr = gdb_collect;
+IP_AGENT_EXPORT_VAR get_raw_reg_ptr_type get_raw_reg_ptr = get_raw_reg;
+IP_AGENT_EXPORT_VAR get_trace_state_variable_value_ptr_type
+  get_trace_state_variable_value_ptr = get_trace_state_variable_value;
+IP_AGENT_EXPORT_VAR set_trace_state_variable_value_ptr_type
+  set_trace_state_variable_value_ptr = set_trace_state_variable_value;
+EXTERN_C_POP
+
+#endif
+
+#ifndef IN_PROCESS_AGENT
+
+CORE_ADDR
+get_raw_reg_func_addr (void)
+{
+  CORE_ADDR res;
+  if (read_inferior_data_pointer (ipa_sym_addrs.addr_get_raw_reg_ptr, &res))
+    {
+      error ("error extracting get_raw_reg_ptr");
+      return 0;
+    }
+  return res;
+}
+
+CORE_ADDR
+get_get_tsv_func_addr (void)
+{
+  CORE_ADDR res;
+  if (read_inferior_data_pointer (
+	ipa_sym_addrs.addr_get_trace_state_variable_value_ptr, &res))
+    {
+      error ("error extracting get_trace_state_variable_value_ptr");
+      return 0;
+    }
+  return res;
+}
+
+CORE_ADDR
+get_set_tsv_func_addr (void)
+{
+  CORE_ADDR res;
+  if (read_inferior_data_pointer (
+	ipa_sym_addrs.addr_set_trace_state_variable_value_ptr, &res))
+    {
+      error ("error extracting set_trace_state_variable_value_ptr");
+      return 0;
+    }
+  return res;
+}
+
+static void
+compile_tracepoint_condition (struct tracepoint *tpoint,
+			      CORE_ADDR *jump_entry)
+{
+  CORE_ADDR entry_point = *jump_entry;
+  enum eval_result_type err;
+
+  trace_debug ("Starting condition compilation for tracepoint %d\n",
+	       tpoint->number);
+
+  /* Initialize the global pointer to the code being built.  */
+  current_insn_ptr = *jump_entry;
+
+  emit_prologue ();
+
+  err = compile_bytecodes (tpoint->cond);
+
+  if (err == expr_eval_no_error)
+    {
+      emit_epilogue ();
+
+      /* Record the beginning of the compiled code.  */
+      tpoint->compiled_cond = entry_point;
+
+      trace_debug ("Condition compilation for tracepoint %d complete\n",
+		   tpoint->number);
+    }
+  else
+    {
+      /* Leave the unfinished code in situ, but don't point to it.  */
+
+      tpoint->compiled_cond = 0;
+
+      trace_debug ("Condition compilation for tracepoint %d failed, "
+		   "error code %d",
+		   tpoint->number, err);
+    }
+
+  /* Update the code pointer passed in.  Note that we do this even if
+     the compile fails, so that we can look at the partial results
+     instead of letting them be overwritten.  */
+  *jump_entry = current_insn_ptr;
+
+  /* Leave a gap, to aid dump decipherment.  */
+  *jump_entry += 16;
+}
+
+/* The base pointer of the IPA's heap.  This is the only memory the
+   IPA is allowed to use.  The IPA should _not_ call the inferior's
+   `malloc' during operation.  That'd be slow, and, most importantly,
+   it may not be safe.  We may be collecting a tracepoint in a signal
+   handler, for example.  */
+static CORE_ADDR target_tp_heap;
+
+/* Allocate at least SIZE bytes of memory from the IPA heap, aligned
+   to 8 bytes.  */
+
+static CORE_ADDR
+target_malloc (ULONGEST size)
+{
+  CORE_ADDR ptr;
+
+  if (target_tp_heap == 0)
+    {
+      /* We have the pointer *address*, need what it points to.  */
+      if (read_inferior_data_pointer (ipa_sym_addrs.addr_gdb_tp_heap_buffer,
+				      &target_tp_heap))
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "couldn't get target heap head pointer");
+	}
+    }
+
+  ptr = target_tp_heap;
+  target_tp_heap += size;
+
+  /* Pad to 8-byte alignment.  */
+  target_tp_heap = ((target_tp_heap + 7) & ~0x7);
+
+  return ptr;
+}
+
+static CORE_ADDR
+download_agent_expr (struct agent_expr *expr)
+{
+  CORE_ADDR expr_addr;
+  CORE_ADDR expr_bytes;
+
+  expr_addr = target_malloc (sizeof (*expr));
+  target_write_memory (expr_addr, (unsigned char *) expr, sizeof (*expr));
+
+  expr_bytes = target_malloc (expr->length);
+  write_inferior_data_pointer (expr_addr + offsetof (struct agent_expr, bytes),
+			       expr_bytes);
+  target_write_memory (expr_bytes, expr->bytes, expr->length);
+
+  return expr_addr;
+}
+
+/* Align V up to N bits.  */
+#define UALIGN(V, N) (((V) + ((N) - 1)) & ~((N) - 1))
+
+/* Sync tracepoint with IPA, but leave maintenance of linked list to caller.  */
+
+static void
+download_tracepoint_1 (struct tracepoint *tpoint)
+{
+  struct tracepoint target_tracepoint;
+  CORE_ADDR tpptr = 0;
+
+  gdb_assert (tpoint->type == fast_tracepoint
+	      || tpoint->type == static_tracepoint);
+
+  if (tpoint->cond != NULL && target_emit_ops () != NULL)
+    {
+      CORE_ADDR jentry, jump_entry;
+
+      jentry = jump_entry = get_jump_space_head ();
+
+      if (tpoint->cond != NULL)
+	{
+	  /* Pad to 8-byte alignment. (needed?)  */
+	  /* Actually this should be left for the target to
+	     decide.  */
+	  jentry = UALIGN (jentry, 8);
+
+	  compile_tracepoint_condition (tpoint, &jentry);
+	}
+
+      /* Pad to 8-byte alignment.  */
+      jentry = UALIGN (jentry, 8);
+      claim_jump_space (jentry - jump_entry);
+    }
+
+  target_tracepoint = *tpoint;
+
+  tpptr = target_malloc (sizeof (*tpoint));
+  tpoint->obj_addr_on_target = tpptr;
+
+  /* Write the whole object.  We'll fix up its pointers in a bit.
+     Assume no next for now.  This is fixed up above on the next
+     iteration, if there's any.  */
+  target_tracepoint.next = NULL;
+  /* Need to clear this here too, since we're downloading the
+     tracepoints before clearing our own copy.  */
+  target_tracepoint.hit_count = 0;
+
+  target_write_memory (tpptr, (unsigned char *) &target_tracepoint,
+			 sizeof (target_tracepoint));
+
+  if (tpoint->cond)
+    write_inferior_data_pointer (tpptr
+				 + offsetof (struct tracepoint, cond),
+				 download_agent_expr (tpoint->cond));
+
+  if (tpoint->numactions)
+    {
+      int i;
+      CORE_ADDR actions_array;
+
+      /* The pointers array.  */
+      actions_array
+	= target_malloc (sizeof (*tpoint->actions) * tpoint->numactions);
+      write_inferior_data_pointer (tpptr + offsetof (struct tracepoint,
+						     actions),
+				   actions_array);
+
+      /* Now for each pointer, download the action.  */
+      for (i = 0; i < tpoint->numactions; i++)
+	{
+	  struct tracepoint_action *action = tpoint->actions[i];
+	  CORE_ADDR ipa_action = tracepoint_action_download (action);
+
+	  if (ipa_action != 0)
+	    write_inferior_data_pointer (actions_array
+					 + i * sizeof (*tpoint->actions),
+					 ipa_action);
+	}
+    }
+}
+
+#define IPA_PROTO_FAST_TRACE_FLAG 0
+#define IPA_PROTO_FAST_TRACE_ADDR_ON_TARGET 2
+#define IPA_PROTO_FAST_TRACE_JUMP_PAD 10
+#define IPA_PROTO_FAST_TRACE_FJUMP_SIZE 18
+#define IPA_PROTO_FAST_TRACE_FJUMP_INSN 22
+
+/* Send a command to agent to download and install tracepoint TPOINT.  */
+
+static int
+tracepoint_send_agent (struct tracepoint *tpoint)
+{
+  char buf[IPA_CMD_BUF_SIZE];
+  char *p;
+  int i, ret;
+
+  p = buf;
+  strcpy (p, "FastTrace:");
+  p += 10;
+
+  COPY_FIELD_TO_BUF (p, tpoint, number);
+  COPY_FIELD_TO_BUF (p, tpoint, address);
+  COPY_FIELD_TO_BUF (p, tpoint, type);
+  COPY_FIELD_TO_BUF (p, tpoint, enabled);
+  COPY_FIELD_TO_BUF (p, tpoint, step_count);
+  COPY_FIELD_TO_BUF (p, tpoint, pass_count);
+  COPY_FIELD_TO_BUF (p, tpoint, numactions);
+  COPY_FIELD_TO_BUF (p, tpoint, hit_count);
+  COPY_FIELD_TO_BUF (p, tpoint, traceframe_usage);
+  COPY_FIELD_TO_BUF (p, tpoint, compiled_cond);
+  COPY_FIELD_TO_BUF (p, tpoint, orig_size);
+
+  /* condition */
+  p = agent_expr_send (p, tpoint->cond);
+
+  /* tracepoint_action */
+  for (i = 0; i < tpoint->numactions; i++)
+    {
+      struct tracepoint_action *action = tpoint->actions[i];
+
+      p[0] = action->type;
+      p = tracepoint_action_send (&p[1], action);
+    }
+
+  get_jump_space_head ();
+  /* Copy the value of GDB_JUMP_PAD_HEAD to command buffer, so that
+     agent can use jump pad from it.  */
+  if (tpoint->type == fast_tracepoint)
+    {
+      memcpy (p, &gdb_jump_pad_head, 8);
+      p += 8;
+    }
+
+  ret = run_inferior_command (buf, (int) (ptrdiff_t) (p - buf));
+  if (ret)
+    return ret;
+
+  if (!startswith (buf, "OK"))
+    return 1;
+
+  /* The value of tracepoint's target address is stored in BUF.  */
+  memcpy (&tpoint->obj_addr_on_target,
+	  &buf[IPA_PROTO_FAST_TRACE_ADDR_ON_TARGET], 8);
+
+  if (tpoint->type == fast_tracepoint)
+    {
+      unsigned char *insn
+	= (unsigned char *) &buf[IPA_PROTO_FAST_TRACE_FJUMP_INSN];
+      int fjump_size;
+
+     trace_debug ("agent: read from cmd_buf 0x%x 0x%x\n",
+		  (unsigned int) tpoint->obj_addr_on_target,
+		  (unsigned int) gdb_jump_pad_head);
+
+      memcpy (&gdb_jump_pad_head, &buf[IPA_PROTO_FAST_TRACE_JUMP_PAD], 8);
+
+      /* This has been done in agent.  We should also set up record for it.  */
+      memcpy (&fjump_size, &buf[IPA_PROTO_FAST_TRACE_FJUMP_SIZE], 4);
+      /* Wire it in.  */
+      tpoint->handle
+	= set_fast_tracepoint_jump (tpoint->address, insn, fjump_size);
+    }
+
+  return 0;
+}
+
+static void
+download_tracepoint (struct tracepoint *tpoint)
+{
+  struct tracepoint *tp, *tp_prev;
+
+  if (tpoint->type != fast_tracepoint
+      && tpoint->type != static_tracepoint)
+    return;
+
+  download_tracepoint_1 (tpoint);
+
+  /* Find the previous entry of TPOINT, which is fast tracepoint or
+     static tracepoint.  */
+  tp_prev = NULL;
+  for (tp = tracepoints; tp != tpoint; tp = tp->next)
+    {
+      if (tp->type == fast_tracepoint || tp->type == static_tracepoint)
+	tp_prev = tp;
+    }
+
+  if (tp_prev)
+    {
+      CORE_ADDR tp_prev_target_next_addr;
+
+      /* Insert TPOINT after TP_PREV in IPA.  */
+      if (read_inferior_data_pointer (tp_prev->obj_addr_on_target
+				      + offsetof (struct tracepoint, next),
+				      &tp_prev_target_next_addr))
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "error reading `tp_prev->next'");
+	}
+
+      /* tpoint->next = tp_prev->next */
+      write_inferior_data_pointer (tpoint->obj_addr_on_target
+				   + offsetof (struct tracepoint, next),
+				   tp_prev_target_next_addr);
+      /* tp_prev->next = tpoint */
+      write_inferior_data_pointer (tp_prev->obj_addr_on_target
+				   + offsetof (struct tracepoint, next),
+				   tpoint->obj_addr_on_target);
+    }
+  else
+    /* First object in list, set the head pointer in the
+       inferior.  */
+    write_inferior_data_pointer (ipa_sym_addrs.addr_tracepoints,
+				 tpoint->obj_addr_on_target);
+
+}
+
+static void
+download_trace_state_variables (void)
+{
+  CORE_ADDR ptr = 0, prev_ptr = 0;
+  struct trace_state_variable *tsv;
+
+  /* Start out empty.  */
+  write_inferior_data_pointer (ipa_sym_addrs.addr_trace_state_variables, 0);
+
+  for (tsv = trace_state_variables; tsv != NULL; tsv = tsv->next)
+    {
+      struct trace_state_variable target_tsv;
+
+      /* TSV's with a getter have been initialized equally in both the
+	 inferior and GDBserver.  Skip them.  */
+      if (tsv->getter != NULL)
+	continue;
+
+      target_tsv = *tsv;
+
+      prev_ptr = ptr;
+      ptr = target_malloc (sizeof (*tsv));
+
+      if (tsv == trace_state_variables)
+	{
+	  /* First object in list, set the head pointer in the
+	     inferior.  */
+
+	  write_inferior_data_pointer (ipa_sym_addrs.addr_trace_state_variables,
+				       ptr);
+	}
+      else
+	{
+	  write_inferior_data_pointer (prev_ptr
+				       + offsetof (struct trace_state_variable,
+						   next),
+				       ptr);
+	}
+
+      /* Write the whole object.  We'll fix up its pointers in a bit.
+	 Assume no next, fixup when needed.  */
+      target_tsv.next = NULL;
+
+      target_write_memory (ptr, (unsigned char *) &target_tsv,
+			     sizeof (target_tsv));
+
+      if (tsv->name != NULL)
+	{
+	  size_t size = strlen (tsv->name) + 1;
+	  CORE_ADDR name_addr = target_malloc (size);
+	  target_write_memory (name_addr,
+				 (unsigned char *) tsv->name, size);
+	  write_inferior_data_pointer (ptr
+				       + offsetof (struct trace_state_variable,
+						   name),
+				       name_addr);
+	}
+
+      gdb_assert (tsv->getter == NULL);
+    }
+
+  if (prev_ptr != 0)
+    {
+      /* Fixup the next pointer in the last item in the list.  */
+      write_inferior_data_pointer (prev_ptr
+				   + offsetof (struct trace_state_variable,
+					       next), 0);
+    }
+}
+
+/* Upload complete trace frames out of the IP Agent's trace buffer
+   into GDBserver's trace buffer.  This always uploads either all or
+   no trace frames.  This is the counter part of
+   `trace_alloc_trace_buffer'.  See its description of the atomic
+   syncing mechanism.  */
+
+static void
+upload_fast_traceframes (void)
+{
+  unsigned int ipa_traceframe_read_count, ipa_traceframe_write_count;
+  unsigned int ipa_traceframe_read_count_racy, ipa_traceframe_write_count_racy;
+  CORE_ADDR tf;
+  struct ipa_trace_buffer_control ipa_trace_buffer_ctrl;
+  unsigned int curr_tbctrl_idx;
+  unsigned int ipa_trace_buffer_ctrl_curr;
+  unsigned int ipa_trace_buffer_ctrl_curr_old;
+  CORE_ADDR ipa_trace_buffer_ctrl_addr;
+  struct breakpoint *about_to_request_buffer_space_bkpt;
+  CORE_ADDR ipa_trace_buffer_lo;
+  CORE_ADDR ipa_trace_buffer_hi;
+
+  if (read_inferior_uinteger (ipa_sym_addrs.addr_traceframe_read_count,
+			      &ipa_traceframe_read_count_racy))
+    {
+      /* This will happen in most targets if the current thread is
+	 running.  */
+      return;
+    }
+
+  if (read_inferior_uinteger (ipa_sym_addrs.addr_traceframe_write_count,
+			      &ipa_traceframe_write_count_racy))
+    return;
+
+  trace_debug ("ipa_traceframe_count (racy area): %d (w=%d, r=%d)",
+	       ipa_traceframe_write_count_racy
+	       - ipa_traceframe_read_count_racy,
+	       ipa_traceframe_write_count_racy,
+	       ipa_traceframe_read_count_racy);
+
+  if (ipa_traceframe_write_count_racy == ipa_traceframe_read_count_racy)
+    return;
+
+  about_to_request_buffer_space_bkpt
+    = set_breakpoint_at (ipa_sym_addrs.addr_about_to_request_buffer_space,
+			 NULL);
+
+  if (read_inferior_uinteger (ipa_sym_addrs.addr_trace_buffer_ctrl_curr,
+			      &ipa_trace_buffer_ctrl_curr))
+    return;
+
+  ipa_trace_buffer_ctrl_curr_old = ipa_trace_buffer_ctrl_curr;
+
+  curr_tbctrl_idx = ipa_trace_buffer_ctrl_curr & ~GDBSERVER_FLUSH_COUNT_MASK;
+
+  {
+    unsigned int prev, counter;
+
+    /* Update the token, with new counters, and the GDBserver stamp
+       bit.  Alway reuse the current TBC index.  */
+    prev = ipa_trace_buffer_ctrl_curr & GDBSERVER_FLUSH_COUNT_MASK_CURR;
+    counter = (prev + 0x100) & GDBSERVER_FLUSH_COUNT_MASK_CURR;
+
+    ipa_trace_buffer_ctrl_curr = (GDBSERVER_UPDATED_FLUSH_COUNT_BIT
+				  | (prev << 12)
+				  | counter
+				  | curr_tbctrl_idx);
+  }
+
+  if (write_inferior_uinteger (ipa_sym_addrs.addr_trace_buffer_ctrl_curr,
+			       ipa_trace_buffer_ctrl_curr))
+    return;
+
+  trace_debug ("Lib: Committed %08x -> %08x",
+	       ipa_trace_buffer_ctrl_curr_old,
+	       ipa_trace_buffer_ctrl_curr);
+
+  /* Re-read these, now that we've installed the
+     `about_to_request_buffer_space' breakpoint/lock.  A thread could
+     have finished a traceframe between the last read of these
+     counters and setting the breakpoint above.  If we start
+     uploading, we never want to leave this function with
+     traceframe_read_count != 0, otherwise, GDBserver could end up
+     incrementing the counter tokens more than once (due to event loop
+     nesting), which would break the IP agent's "effective" detection
+     (see trace_alloc_trace_buffer).  */
+  if (read_inferior_uinteger (ipa_sym_addrs.addr_traceframe_read_count,
+			      &ipa_traceframe_read_count))
+    return;
+  if (read_inferior_uinteger (ipa_sym_addrs.addr_traceframe_write_count,
+			      &ipa_traceframe_write_count))
+    return;
+
+  if (debug_threads)
+    {
+      trace_debug ("ipa_traceframe_count (blocked area): %d (w=%d, r=%d)",
+		   ipa_traceframe_write_count - ipa_traceframe_read_count,
+		   ipa_traceframe_write_count, ipa_traceframe_read_count);
+
+      if (ipa_traceframe_write_count != ipa_traceframe_write_count_racy
+	  || ipa_traceframe_read_count != ipa_traceframe_read_count_racy)
+	trace_debug ("note that ipa_traceframe_count's parts changed");
+    }
+
+  /* Get the address of the current TBC object (the IP agent has an
+     array of 3 such objects).  The index is stored in the TBC
+     token.  */
+  ipa_trace_buffer_ctrl_addr = ipa_sym_addrs.addr_trace_buffer_ctrl;
+  ipa_trace_buffer_ctrl_addr
+    += sizeof (struct ipa_trace_buffer_control) * curr_tbctrl_idx;
+
+  if (read_inferior_memory (ipa_trace_buffer_ctrl_addr,
+			    (unsigned char *) &ipa_trace_buffer_ctrl,
+			    sizeof (struct ipa_trace_buffer_control)))
+    return;
+
+  if (read_inferior_data_pointer (ipa_sym_addrs.addr_trace_buffer_lo,
+				  &ipa_trace_buffer_lo))
+    return;
+  if (read_inferior_data_pointer (ipa_sym_addrs.addr_trace_buffer_hi,
+				  &ipa_trace_buffer_hi))
+    return;
+
+  /* Offsets are easier to grok for debugging than raw addresses,
+     especially for the small trace buffer sizes that are useful for
+     testing.  */
+  trace_debug ("Lib: Trace buffer [%d] start=%d free=%d "
+	       "endfree=%d wrap=%d hi=%d",
+	       curr_tbctrl_idx,
+	       (int) (ipa_trace_buffer_ctrl.start - ipa_trace_buffer_lo),
+	       (int) (ipa_trace_buffer_ctrl.free - ipa_trace_buffer_lo),
+	       (int) (ipa_trace_buffer_ctrl.end_free - ipa_trace_buffer_lo),
+	       (int) (ipa_trace_buffer_ctrl.wrap - ipa_trace_buffer_lo),
+	       (int) (ipa_trace_buffer_hi - ipa_trace_buffer_lo));
+
+  /* Note that the IPA's buffer is always circular.  */
+
+#define IPA_FIRST_TRACEFRAME() (ipa_trace_buffer_ctrl.start)
+
+#define IPA_NEXT_TRACEFRAME_1(TF, TFOBJ)		\
+  ((TF) + sizeof (struct traceframe) + (TFOBJ)->data_size)
+
+#define IPA_NEXT_TRACEFRAME(TF, TFOBJ)					\
+  (IPA_NEXT_TRACEFRAME_1 (TF, TFOBJ)					\
+   - ((IPA_NEXT_TRACEFRAME_1 (TF, TFOBJ) >= ipa_trace_buffer_ctrl.wrap) \
+      ? (ipa_trace_buffer_ctrl.wrap - ipa_trace_buffer_lo)		\
+      : 0))
+
+  tf = IPA_FIRST_TRACEFRAME ();
+
+  while (ipa_traceframe_write_count - ipa_traceframe_read_count)
+    {
+      struct tracepoint *tpoint;
+      struct traceframe *tframe;
+      unsigned char *block;
+      struct traceframe ipa_tframe;
+
+      if (read_inferior_memory (tf, (unsigned char *) &ipa_tframe,
+				offsetof (struct traceframe, data)))
+	error ("Uploading: couldn't read traceframe at %s\n", paddress (tf));
+
+      if (ipa_tframe.tpnum == 0)
+	{
+	  internal_error (__FILE__, __LINE__,
+			  "Uploading: No (more) fast traceframes, but"
+			  " ipa_traceframe_count == %u??\n",
+			  ipa_traceframe_write_count
+			  - ipa_traceframe_read_count);
+	}
+
+      /* Note that this will be incorrect for multi-location
+	 tracepoints...  */
+      tpoint = find_next_tracepoint_by_number (NULL, ipa_tframe.tpnum);
+
+      tframe = add_traceframe (tpoint);
+      if (tframe == NULL)
+	{
+	  trace_buffer_is_full = 1;
+	  trace_debug ("Uploading: trace buffer is full");
+	}
+      else
+	{
+	  /* Copy the whole set of blocks in one go for now.  FIXME:
+	     split this in smaller blocks.  */
+	  block = add_traceframe_block (tframe, tpoint,
+					ipa_tframe.data_size);
+	  if (block != NULL)
+	    {
+	      if (read_inferior_memory (tf
+					+ offsetof (struct traceframe, data),
+					block, ipa_tframe.data_size))
+		error ("Uploading: Couldn't read traceframe data at %s\n",
+		       paddress (tf + offsetof (struct traceframe, data)));
+	    }
+
+	  trace_debug ("Uploading: traceframe didn't fit");
+	  finish_traceframe (tframe);
+	}
+
+      tf = IPA_NEXT_TRACEFRAME (tf, &ipa_tframe);
+
+      /* If we freed the traceframe that wrapped around, go back
+	 to the non-wrap case.  */
+      if (tf < ipa_trace_buffer_ctrl.start)
+	{
+	  trace_debug ("Lib: Discarding past the wraparound");
+	  ipa_trace_buffer_ctrl.wrap = ipa_trace_buffer_hi;
+	}
+      ipa_trace_buffer_ctrl.start = tf;
+      ipa_trace_buffer_ctrl.end_free = ipa_trace_buffer_ctrl.start;
+      ++ipa_traceframe_read_count;
+
+      if (ipa_trace_buffer_ctrl.start == ipa_trace_buffer_ctrl.free
+	  && ipa_trace_buffer_ctrl.start == ipa_trace_buffer_ctrl.end_free)
+	{
+	  trace_debug ("Lib: buffer is fully empty.  "
+		       "Trace buffer [%d] start=%d free=%d endfree=%d",
+		       curr_tbctrl_idx,
+		       (int) (ipa_trace_buffer_ctrl.start
+			      - ipa_trace_buffer_lo),
+		       (int) (ipa_trace_buffer_ctrl.free
+			      - ipa_trace_buffer_lo),
+		       (int) (ipa_trace_buffer_ctrl.end_free
+			      - ipa_trace_buffer_lo));
+
+	  ipa_trace_buffer_ctrl.start = ipa_trace_buffer_lo;
+	  ipa_trace_buffer_ctrl.free = ipa_trace_buffer_lo;
+	  ipa_trace_buffer_ctrl.end_free = ipa_trace_buffer_hi;
+	  ipa_trace_buffer_ctrl.wrap = ipa_trace_buffer_hi;
+	}
+
+      trace_debug ("Uploaded a traceframe\n"
+		   "Lib: Trace buffer [%d] start=%d free=%d "
+		   "endfree=%d wrap=%d hi=%d",
+		   curr_tbctrl_idx,
+		   (int) (ipa_trace_buffer_ctrl.start - ipa_trace_buffer_lo),
+		   (int) (ipa_trace_buffer_ctrl.free - ipa_trace_buffer_lo),
+		   (int) (ipa_trace_buffer_ctrl.end_free
+			  - ipa_trace_buffer_lo),
+		   (int) (ipa_trace_buffer_ctrl.wrap - ipa_trace_buffer_lo),
+		   (int) (ipa_trace_buffer_hi - ipa_trace_buffer_lo));
+    }
+
+  if (target_write_memory (ipa_trace_buffer_ctrl_addr,
+			     (unsigned char *) &ipa_trace_buffer_ctrl,
+			     sizeof (struct ipa_trace_buffer_control)))
+    return;
+
+  write_inferior_integer (ipa_sym_addrs.addr_traceframe_read_count,
+			  ipa_traceframe_read_count);
+
+  trace_debug ("Done uploading traceframes [%d]\n", curr_tbctrl_idx);
+
+  target_pause_all (true);
+
+  delete_breakpoint (about_to_request_buffer_space_bkpt);
+  about_to_request_buffer_space_bkpt = NULL;
+
+  target_unpause_all (true);
+
+  if (trace_buffer_is_full)
+    stop_tracing ();
+}
+#endif
+
+#ifdef IN_PROCESS_AGENT
+
+IP_AGENT_EXPORT_VAR int ust_loaded;
+IP_AGENT_EXPORT_VAR char cmd_buf[IPA_CMD_BUF_SIZE];
+
+#ifdef HAVE_UST
+
+/* Static tracepoints.  */
+
+/* UST puts a "struct tracepoint" in the global namespace, which
+   conflicts with our tracepoint.  Arguably, being a library, it
+   shouldn't take ownership of such a generic name.  We work around it
+   here.  */
+#define tracepoint ust_tracepoint
+#include <ust/ust.h>
+#undef tracepoint
+
+extern int serialize_to_text (char *outbuf, int bufsize,
+			      const char *fmt, va_list ap);
+
+#define GDB_PROBE_NAME "gdb"
+
+/* We dynamically search for the UST symbols instead of linking them
+   in.  This lets the user decide if the application uses static
+   tracepoints, instead of always pulling libust.so in.  This vector
+   holds pointers to all functions we care about.  */
+
+static struct
+{
+  int (*serialize_to_text) (char *outbuf, int bufsize,
+			    const char *fmt, va_list ap);
+
+  int (*ltt_probe_register) (struct ltt_available_probe *pdata);
+  int (*ltt_probe_unregister) (struct ltt_available_probe *pdata);
+
+  int (*ltt_marker_connect) (const char *channel, const char *mname,
+			     const char *pname);
+  int (*ltt_marker_disconnect) (const char *channel, const char *mname,
+				const char *pname);
+
+  void (*marker_iter_start) (struct marker_iter *iter);
+  void (*marker_iter_next) (struct marker_iter *iter);
+  void (*marker_iter_stop) (struct marker_iter *iter);
+  void (*marker_iter_reset) (struct marker_iter *iter);
+} ust_ops;
+
+#include <dlfcn.h>
+
+/* Cast through typeof to catch incompatible API changes.  Since UST
+   only builds with gcc, we can freely use gcc extensions here
+   too.  */
+#define GET_UST_SYM(SYM)					\
+  do								\
+    {								\
+      if (ust_ops.SYM == NULL)					\
+	ust_ops.SYM = (typeof (&SYM)) dlsym (RTLD_DEFAULT, #SYM);	\
+      if (ust_ops.SYM == NULL)					\
+	return 0;						\
+    } while (0)
+
+#define USTF(SYM) ust_ops.SYM
+
+/* Get pointers to all libust.so functions we care about.  */
+
+static int
+dlsym_ust (void)
+{
+  GET_UST_SYM (serialize_to_text);
+
+  GET_UST_SYM (ltt_probe_register);
+  GET_UST_SYM (ltt_probe_unregister);
+  GET_UST_SYM (ltt_marker_connect);
+  GET_UST_SYM (ltt_marker_disconnect);
+
+  GET_UST_SYM (marker_iter_start);
+  GET_UST_SYM (marker_iter_next);
+  GET_UST_SYM (marker_iter_stop);
+  GET_UST_SYM (marker_iter_reset);
+
+  ust_loaded = 1;
+  return 1;
+}
+
+/* Given an UST marker, return the matching gdb static tracepoint.
+   The match is done by address.  */
+
+static struct tracepoint *
+ust_marker_to_static_tracepoint (const struct marker *mdata)
+{
+  struct tracepoint *tpoint;
+
+  for (tpoint = tracepoints; tpoint; tpoint = tpoint->next)
+    {
+      if (tpoint->type != static_tracepoint)
+	continue;
+
+      if (tpoint->address == (uintptr_t) mdata->location)
+	return tpoint;
+    }
+
+  return NULL;
+}
+
+/* The probe function we install on lttng/ust markers.  Whenever a
+   probed ust marker is hit, this function is called.  This is similar
+   to gdb_collect, only for static tracepoints, instead of fast
+   tracepoints.  */
+
+static void
+gdb_probe (const struct marker *mdata, void *probe_private,
+	   struct registers *regs, void *call_private,
+	   const char *fmt, va_list *args)
+{
+  struct tracepoint *tpoint;
+  struct static_tracepoint_ctx ctx;
+  const struct target_desc *ipa_tdesc;
+
+  /* Don't do anything until the trace run is completely set up.  */
+  if (!tracing)
+    {
+      trace_debug ("gdb_probe: not tracing\n");
+      return;
+    }
+
+  ipa_tdesc = get_ipa_tdesc (ipa_tdesc_idx);
+  ctx.base.type = static_tracepoint;
+  ctx.regcache_initted = 0;
+  ctx.regs = regs;
+  ctx.fmt = fmt;
+  ctx.args = args;
+
+  /* Wrap the regblock in a register cache (in the stack, we don't
+     want to malloc here).  */
+  ctx.regspace = alloca (ipa_tdesc->registers_size);
+  if (ctx.regspace == NULL)
+    {
+      trace_debug ("Trace buffer block allocation failed, skipping");
+      return;
+    }
+
+  tpoint = ust_marker_to_static_tracepoint (mdata);
+  if (tpoint == NULL)
+    {
+      trace_debug ("gdb_probe: marker not known: "
+		   "loc:0x%p, ch:\"%s\",n:\"%s\",f:\"%s\"",
+		   mdata->location, mdata->channel,
+		   mdata->name, mdata->format);
+      return;
+    }
+
+  if (!tpoint->enabled)
+    {
+      trace_debug ("gdb_probe: tracepoint disabled");
+      return;
+    }
+
+  ctx.tpoint = tpoint;
+
+  trace_debug ("gdb_probe: collecting marker: "
+	       "loc:0x%p, ch:\"%s\",n:\"%s\",f:\"%s\"",
+	       mdata->location, mdata->channel,
+	       mdata->name, mdata->format);
+
+  /* Test the condition if present, and collect if true.  */
+  if (tpoint->cond == NULL
+      || condition_true_at_tracepoint ((struct tracepoint_hit_ctx *) &ctx,
+				       tpoint))
+    {
+      collect_data_at_tracepoint ((struct tracepoint_hit_ctx *) &ctx,
+				  tpoint->address, tpoint);
+
+      if (stopping_tracepoint
+	  || trace_buffer_is_full
+	  || expr_eval_result != expr_eval_no_error)
+	stop_tracing ();
+    }
+  else
+    {
+      /* If there was a condition and it evaluated to false, the only
+	 way we would stop tracing is if there was an error during
+	 condition expression evaluation.  */
+      if (expr_eval_result != expr_eval_no_error)
+	stop_tracing ();
+    }
+}
+
+/* Called if the gdb static tracepoint requested collecting "$_sdata",
+   static tracepoint string data.  This is a string passed to the
+   tracing library by the user, at the time of the tracepoint marker
+   call.  E.g., in the UST marker call:
+
+     trace_mark (ust, bar33, "str %s", "FOOBAZ");
+
+   the collected data is "str FOOBAZ".
+*/
+
+static void
+collect_ust_data_at_tracepoint (struct tracepoint_hit_ctx *ctx,
+				struct traceframe *tframe)
+{
+  struct static_tracepoint_ctx *umd = (struct static_tracepoint_ctx *) ctx;
+  unsigned char *bufspace;
+  int size;
+  va_list copy;
+  unsigned short blocklen;
+
+  if (umd == NULL)
+    {
+      trace_debug ("Wanted to collect static trace data, "
+		   "but there's no static trace data");
+      return;
+    }
+
+  va_copy (copy, *umd->args);
+  size = USTF(serialize_to_text) (NULL, 0, umd->fmt, copy);
+  va_end (copy);
+
+  trace_debug ("Want to collect ust data");
+
+  /* 'S' + size + string */
+  bufspace = add_traceframe_block (tframe, umd->tpoint,
+				   1 + sizeof (blocklen) + size + 1);
+  if (bufspace == NULL)
+    {
+      trace_debug ("Trace buffer block allocation failed, skipping");
+      return;
+    }
+
+  /* Identify a static trace data block.  */
+  *bufspace = 'S';
+
+  blocklen = size + 1;
+  memcpy (bufspace + 1, &blocklen, sizeof (blocklen));
+
+  va_copy (copy, *umd->args);
+  USTF(serialize_to_text) ((char *) bufspace + 1 + sizeof (blocklen),
+			   size + 1, umd->fmt, copy);
+  va_end (copy);
+
+  trace_debug ("Storing static tracepoint data in regblock: %s",
+	       bufspace + 1 + sizeof (blocklen));
+}
+
+/* The probe to register with lttng/ust.  */
+static struct ltt_available_probe gdb_ust_probe =
+  {
+    GDB_PROBE_NAME,
+    NULL,
+    gdb_probe,
+  };
+
+#endif /* HAVE_UST */
+#endif /* IN_PROCESS_AGENT */
+
+#ifndef IN_PROCESS_AGENT
+
+/* Ask the in-process agent to run a command.  Since we don't want to
+   have to handle the IPA hitting breakpoints while running the
+   command, we pause all threads, remove all breakpoints, and then set
+   the helper thread re-running.  We communicate with the helper
+   thread by means of direct memory xfering, and a socket for
+   synchronization.  */
+
+static int
+run_inferior_command (char *cmd, int len)
+{
+  int err = -1;
+  int pid = current_ptid.pid ();
+
+  trace_debug ("run_inferior_command: running: %s", cmd);
+
+  target_pause_all (false);
+  uninsert_all_breakpoints ();
+
+  err = agent_run_command (pid, (const char *) cmd, len);
+
+  reinsert_all_breakpoints ();
+  target_unpause_all (false);
+
+  return err;
+}
+
+#else /* !IN_PROCESS_AGENT */
+
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#ifndef UNIX_PATH_MAX
+#define UNIX_PATH_MAX sizeof(((struct sockaddr_un *) NULL)->sun_path)
+#endif
+
+/* Where we put the socked used for synchronization.  */
+#define SOCK_DIR P_tmpdir
+
+/* Thread ID of the helper thread.  GDBserver reads this to know which
+   is the help thread.  This is an LWP id on Linux.  */
+EXTERN_C_PUSH
+IP_AGENT_EXPORT_VAR int helper_thread_id;
+EXTERN_C_POP
+
+static int
+init_named_socket (const char *name)
+{
+  int result, fd;
+  struct sockaddr_un addr;
+
+  result = fd = socket (PF_UNIX, SOCK_STREAM, 0);
+  if (result == -1)
+    {
+      warning ("socket creation failed: %s", safe_strerror (errno));
+      return -1;
+    }
+
+  addr.sun_family = AF_UNIX;
+
+  strncpy (addr.sun_path, name, UNIX_PATH_MAX);
+  addr.sun_path[UNIX_PATH_MAX - 1] = '\0';
+
+  result = access (name, F_OK);
+  if (result == 0)
+    {
+      /* File exists.  */
+      result = unlink (name);
+      if (result == -1)
+	{
+	  warning ("unlink failed: %s", safe_strerror (errno));
+	  close (fd);
+	  return -1;
+	}
+      warning ("socket %s already exists; overwriting", name);
+    }
+
+  result = bind (fd, (struct sockaddr *) &addr, sizeof (addr));
+  if (result == -1)
+    {
+      warning ("bind failed: %s", safe_strerror (errno));
+      close (fd);
+      return -1;
+    }
+
+  result = listen (fd, 1);
+  if (result == -1)
+    {
+      warning ("listen: %s", safe_strerror (errno));
+      close (fd);
+      return -1;
+    }
+
+  return fd;
+}
+
+static char agent_socket_name[UNIX_PATH_MAX];
+
+static int
+gdb_agent_socket_init (void)
+{
+  int result, fd;
+
+  result = xsnprintf (agent_socket_name, UNIX_PATH_MAX, "%s/gdb_ust%d",
+		      SOCK_DIR, getpid ());
+  if (result >= UNIX_PATH_MAX)
+    {
+      trace_debug ("string overflow allocating socket name");
+      return -1;
+    }
+
+  fd = init_named_socket (agent_socket_name);
+  if (fd < 0)
+    warning ("Error initializing named socket (%s) for communication with the "
+	     "ust helper thread. Check that directory exists and that it "
+	     "is writable.", agent_socket_name);
+
+  return fd;
+}
+
+#ifdef HAVE_UST
+
+/* The next marker to be returned on a qTsSTM command.  */
+static const struct marker *next_st;
+
+/* Returns the first known marker.  */
+
+struct marker *
+first_marker (void)
+{
+  struct marker_iter iter;
+
+  USTF(marker_iter_reset) (&iter);
+  USTF(marker_iter_start) (&iter);
+
+  return iter.marker;
+}
+
+/* Returns the marker following M.  */
+
+const struct marker *
+next_marker (const struct marker *m)
+{
+  struct marker_iter iter;
+
+  USTF(marker_iter_reset) (&iter);
+  USTF(marker_iter_start) (&iter);
+
+  for (; iter.marker != NULL; USTF(marker_iter_next) (&iter))
+    {
+      if (iter.marker == m)
+	{
+	  USTF(marker_iter_next) (&iter);
+	  return iter.marker;
+	}
+    }
+
+  return NULL;
+}
+
+/* Return an hexstr version of the STR C string, fit for sending to
+   GDB.  */
+
+static char *
+cstr_to_hexstr (const char *str)
+{
+  int len = strlen (str);
+  char *hexstr = xmalloc (len * 2 + 1);
+  bin2hex ((gdb_byte *) str, hexstr, len);
+  return hexstr;
+}
+
+/* Compose packet that is the response to the qTsSTM/qTfSTM/qTSTMat
+   packets.  */
+
+static void
+response_ust_marker (char *packet, const struct marker *st)
+{
+  char *strid, *format, *tmp;
+
+  next_st = next_marker (st);
+
+  tmp = xmalloc (strlen (st->channel) + 1 +
+		 strlen (st->name) + 1);
+  sprintf (tmp, "%s/%s", st->channel, st->name);
+
+  strid = cstr_to_hexstr (tmp);
+  free (tmp);
+
+  format = cstr_to_hexstr (st->format);
+
+  sprintf (packet, "m%s:%s:%s",
+	   paddress ((uintptr_t) st->location),
+	   strid,
+	   format);
+
+  free (strid);
+  free (format);
+}
+
+/* Return the first static tracepoint, and initialize the state
+   machine that will iterate through all the static tracepoints.  */
+
+static void
+cmd_qtfstm (char *packet)
+{
+  trace_debug ("Returning first trace state variable definition");
+
+  if (first_marker ())
+    response_ust_marker (packet, first_marker ());
+  else
+    strcpy (packet, "l");
+}
+
+/* Return additional trace state variable definitions. */
+
+static void
+cmd_qtsstm (char *packet)
+{
+  trace_debug ("Returning static tracepoint");
+
+  if (next_st)
+    response_ust_marker (packet, next_st);
+  else
+    strcpy (packet, "l");
+}
+
+/* Disconnect the GDB probe from a marker at a given address.  */
+
+static void
+unprobe_marker_at (char *packet)
+{
+  char *p = packet;
+  ULONGEST address;
+  struct marker_iter iter;
+
+  p += sizeof ("unprobe_marker_at:") - 1;
+
+  p = unpack_varlen_hex (p, &address);
+
+  USTF(marker_iter_reset) (&iter);
+  USTF(marker_iter_start) (&iter);
+  for (; iter.marker != NULL; USTF(marker_iter_next) (&iter))
+    if ((uintptr_t ) iter.marker->location == address)
+      {
+	int result;
+
+	result = USTF(ltt_marker_disconnect) (iter.marker->channel,
+					      iter.marker->name,
+					      GDB_PROBE_NAME);
+	if (result < 0)
+	  warning ("could not disable marker %s/%s",
+		   iter.marker->channel, iter.marker->name);
+	break;
+      }
+}
+
+/* Connect the GDB probe to a marker at a given address.  */
+
+static int
+probe_marker_at (char *packet)
+{
+  char *p = packet;
+  ULONGEST address;
+  struct marker_iter iter;
+  struct marker *m;
+
+  p += sizeof ("probe_marker_at:") - 1;
+
+  p = unpack_varlen_hex (p, &address);
+
+  USTF(marker_iter_reset) (&iter);
+
+  for (USTF(marker_iter_start) (&iter), m = iter.marker;
+       m != NULL;
+       USTF(marker_iter_next) (&iter), m = iter.marker)
+    if ((uintptr_t ) m->location == address)
+      {
+	int result;
+
+	trace_debug ("found marker for address.  "
+		     "ltt_marker_connect (marker = %s/%s)",
+		     m->channel, m->name);
+
+	result = USTF(ltt_marker_connect) (m->channel, m->name,
+					   GDB_PROBE_NAME);
+	if (result && result != -EEXIST)
+	  trace_debug ("ltt_marker_connect (marker = %s/%s, errno = %d)",
+		       m->channel, m->name, -result);
+
+	if (result < 0)
+	  {
+	    sprintf (packet, "E.could not connect marker: channel=%s, name=%s",
+		     m->channel, m->name);
+	    return -1;
+	  }
+
+	strcpy (packet, "OK");
+	return 0;
+      }
+
+  sprintf (packet, "E.no marker found at 0x%s", paddress (address));
+  return -1;
+}
+
+static int
+cmd_qtstmat (char *packet)
+{
+  char *p = packet;
+  ULONGEST address;
+  struct marker_iter iter;
+  struct marker *m;
+
+  p += sizeof ("qTSTMat:") - 1;
+
+  p = unpack_varlen_hex (p, &address);
+
+  USTF(marker_iter_reset) (&iter);
+
+  for (USTF(marker_iter_start) (&iter), m = iter.marker;
+       m != NULL;
+       USTF(marker_iter_next) (&iter), m = iter.marker)
+    if ((uintptr_t ) m->location == address)
+      {
+	response_ust_marker (packet, m);
+	return 0;
+      }
+
+  strcpy (packet, "l");
+  return -1;
+}
+
+static void
+gdb_ust_init (void)
+{
+  if (!dlsym_ust ())
+    return;
+
+  USTF(ltt_probe_register) (&gdb_ust_probe);
+}
+
+#endif /* HAVE_UST */
+
+#include <sys/syscall.h>
+
+static void
+gdb_agent_remove_socket (void)
+{
+  unlink (agent_socket_name);
+}
+
+/* Helper thread of agent.  */
+
+static void *
+gdb_agent_helper_thread (void *arg)
+{
+  int listen_fd;
+
+  atexit (gdb_agent_remove_socket);
+
+  while (1)
+    {
+      listen_fd = gdb_agent_socket_init ();
+
+      if (helper_thread_id == 0)
+	helper_thread_id = syscall (SYS_gettid);
+
+      if (listen_fd == -1)
+	{
+	  warning ("could not create sync socket");
+	  break;
+	}
+
+      while (1)
+	{
+	  socklen_t tmp;
+	  struct sockaddr_un sockaddr;
+	  int fd;
+	  char buf[1];
+	  int ret;
+	  int stop_loop = 0;
+
+	  tmp = sizeof (sockaddr);
+
+	  do
+	    {
+	      fd = accept (listen_fd, (struct sockaddr *) &sockaddr, &tmp);
+	    }
+	  /* It seems an ERESTARTSYS can escape out of accept.  */
+	  while (fd == -512 || (fd == -1 && errno == EINTR));
+
+	  if (fd < 0)
+	    {
+	      warning ("Accept returned %d, error: %s",
+		       fd, safe_strerror (errno));
+	      break;
+	    }
+
+	  do
+	    {
+	      ret = read (fd, buf, 1);
+	    } while (ret == -1 && errno == EINTR);
+
+	  if (ret == -1)
+	    {
+	      warning ("reading socket (fd=%d) failed with %s",
+		       fd, safe_strerror (errno));
+	      close (fd);
+	      break;
+	    }
+
+	  if (cmd_buf[0])
+	    {
+	      if (startswith (cmd_buf, "close"))
+		{
+		  stop_loop = 1;
+		}
+#ifdef HAVE_UST
+	      else if (strcmp ("qTfSTM", cmd_buf) == 0)
+		{
+		  cmd_qtfstm (cmd_buf);
+		}
+	      else if (strcmp ("qTsSTM", cmd_buf) == 0)
+		{
+		  cmd_qtsstm (cmd_buf);
+		}
+	      else if (startswith (cmd_buf, "unprobe_marker_at:"))
+		{
+		  unprobe_marker_at (cmd_buf);
+		}
+	      else if (startswith (cmd_buf, "probe_marker_at:"))
+		{
+		  probe_marker_at (cmd_buf);
+		}
+	      else if (startswith (cmd_buf, "qTSTMat:"))
+		{
+		  cmd_qtstmat (cmd_buf);
+		}
+#endif /* HAVE_UST */
+	    }
+
+	  /* Fix compiler's warning: ignoring return value of 'write'.  */
+	  ret = write (fd, buf, 1);
+	  close (fd);
+
+	  if (stop_loop)
+	    {
+	      close (listen_fd);
+	      unlink (agent_socket_name);
+
+	      /* Sleep endlessly to wait the whole inferior stops.  This
+		 thread can not exit because GDB or GDBserver may still need
+		 'current_thread' (representing this thread) to access
+		 inferior memory.  Otherwise, this thread exits earlier than
+		 other threads, and 'current_thread' is set to NULL.  */
+	      while (1)
+		sleep (10);
+	    }
+	}
+    }
+
+  return NULL;
+}
+
+#include <signal.h>
+#include <pthread.h>
+
+EXTERN_C_PUSH
+IP_AGENT_EXPORT_VAR int gdb_agent_capability = AGENT_CAPA_STATIC_TRACE;
+EXTERN_C_POP
+
+static void
+gdb_agent_init (void)
+{
+  int res;
+  pthread_t thread;
+  sigset_t new_mask;
+  sigset_t orig_mask;
+
+  /* We want the helper thread to be as transparent as possible, so
+     have it inherit an all-signals-blocked mask.  */
+
+  sigfillset (&new_mask);
+  res = pthread_sigmask (SIG_SETMASK, &new_mask, &orig_mask);
+  if (res)
+    perror_with_name ("pthread_sigmask (1)");
+
+  res = pthread_create (&thread,
+			NULL,
+			gdb_agent_helper_thread,
+			NULL);
+
+  res = pthread_sigmask (SIG_SETMASK, &orig_mask, NULL);
+  if (res)
+    perror_with_name ("pthread_sigmask (2)");
+
+  while (helper_thread_id == 0)
+    usleep (1);
+
+#ifdef HAVE_UST
+  gdb_ust_init ();
+#endif
+}
+
+#include <sys/mman.h>
+
+IP_AGENT_EXPORT_VAR char *gdb_tp_heap_buffer;
+IP_AGENT_EXPORT_VAR char *gdb_jump_pad_buffer;
+IP_AGENT_EXPORT_VAR char *gdb_jump_pad_buffer_end;
+IP_AGENT_EXPORT_VAR char *gdb_trampoline_buffer;
+IP_AGENT_EXPORT_VAR char *gdb_trampoline_buffer_end;
+IP_AGENT_EXPORT_VAR char *gdb_trampoline_buffer_error;
+
+/* Record the result of getting buffer space for fast tracepoint
+   trampolines.  Any error message is copied, since caller may not be
+   using persistent storage.  */
+
+void
+set_trampoline_buffer_space (CORE_ADDR begin, CORE_ADDR end, char *errmsg)
+{
+  gdb_trampoline_buffer = (char *) (uintptr_t) begin;
+  gdb_trampoline_buffer_end = (char *) (uintptr_t) end;
+  if (errmsg)
+    strncpy (gdb_trampoline_buffer_error, errmsg, 99);
+  else
+    strcpy (gdb_trampoline_buffer_error, "no buffer passed");
+}
+
+static void __attribute__ ((constructor))
+initialize_tracepoint_ftlib (void)
+{
+  initialize_tracepoint ();
+
+  gdb_agent_init ();
+}
+
+#ifndef HAVE_GETAUXVAL
+/* Retrieve the value of TYPE from the auxiliary vector.  If TYPE is not
+   found, 0 is returned.  This function is provided if glibc is too old.  */
+
+unsigned long
+getauxval (unsigned long type)
+{
+  unsigned long data[2];
+  FILE *f = fopen ("/proc/self/auxv", "r");
+  unsigned long value = 0;
+
+  if (f == NULL)
+    return 0;
+
+  while (fread (data, sizeof (data), 1, f) > 0)
+    {
+      if (data[0] == type)
+	{
+	  value = data[1];
+	  break;
+	}
+    }
+
+  fclose (f);
+  return value;
+}
+#endif
+
+#endif /* IN_PROCESS_AGENT */
+
+/* Return a timestamp, expressed as microseconds of the usual Unix
+   time.  (As the result is a 64-bit number, it will not overflow any
+   time soon.)  */
+
+static LONGEST
+get_timestamp (void)
+{
+  using namespace std::chrono;
+
+  steady_clock::time_point now = steady_clock::now ();
+  return duration_cast<microseconds> (now.time_since_epoch ()).count ();
+}
+
+void
+initialize_tracepoint (void)
+{
+  /* Start with the default size.  */
+  init_trace_buffer (DEFAULT_TRACE_BUFFER_SIZE);
+
+  /* Wire trace state variable 1 to be the timestamp.  This will be
+     uploaded to GDB upon connection and become one of its trace state
+     variables.  (In case you're wondering, if GDB already has a trace
+     variable numbered 1, it will be renumbered.)  */
+  create_trace_state_variable (1, 0);
+  set_trace_state_variable_name (1, "trace_timestamp");
+  set_trace_state_variable_getter (1, get_timestamp);
+
+#ifdef IN_PROCESS_AGENT
+  {
+    int pagesize;
+    size_t jump_pad_size;
+
+    pagesize = sysconf (_SC_PAGE_SIZE);
+    if (pagesize == -1)
+      perror_with_name ("sysconf");
+
+#define SCRATCH_BUFFER_NPAGES 20
+
+    jump_pad_size = pagesize * SCRATCH_BUFFER_NPAGES;
+
+    gdb_tp_heap_buffer = (char *) xmalloc (5 * 1024 * 1024);
+    gdb_jump_pad_buffer = (char *) alloc_jump_pad_buffer (jump_pad_size);
+    if (gdb_jump_pad_buffer == NULL)
+      perror_with_name ("mmap");
+    gdb_jump_pad_buffer_end = gdb_jump_pad_buffer + jump_pad_size;
+  }
+
+  gdb_trampoline_buffer = gdb_trampoline_buffer_end = 0;
+
+  /* It's not a fatal error for something to go wrong with trampoline
+     buffer setup, but it can be mysterious, so create a channel to
+     report back on what went wrong, using a fixed size since we may
+     not be able to allocate space later when the problem occurs.  */
+  gdb_trampoline_buffer_error = (char *) xmalloc (IPA_BUFSIZ);
+
+  strcpy (gdb_trampoline_buffer_error, "No errors reported");
+
+  initialize_low_tracepoint ();
+#endif
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/tracepoint.h ./gdbserver/tracepoint.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/tracepoint.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/tracepoint.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,195 @@
+/* Tracepoint code for remote server for GDB.
+   Copyright (C) 1993-2021 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 GDBSERVER_TRACEPOINT_H
+#define GDBSERVER_TRACEPOINT_H
+
+/* Size for a small buffer to report problems from the in-process
+   agent back to GDBserver.  */
+#define IPA_BUFSIZ 100
+
+void initialize_tracepoint (void);
+
+#if defined(__GNUC__)
+# define ATTR_USED __attribute__((used))
+# define ATTR_NOINLINE __attribute__((noinline))
+#else
+# define ATTR_USED
+# define ATTR_NOINLINE
+#endif
+
+/* How to make symbol public/exported.  */
+
+#if defined _WIN32 || defined __CYGWIN__
+# define EXPORTED_SYMBOL __declspec (dllexport)
+#else
+# if __GNUC__ >= 4
+#  define EXPORTED_SYMBOL __attribute__ ((visibility ("default")))
+# else
+#  define EXPORTED_SYMBOL
+# endif
+#endif
+
+/* Use these to make sure the functions and variables the IPA needs to
+   export (symbols GDBserver needs to query GDB about) are visible and
+   have C linkage.
+
+   Tag exported functions with IP_AGENT_EXPORT_FUNC, tag the
+   definitions of exported variables with IP_AGENT_EXPORT_VAR, and
+   variable declarations with IP_AGENT_EXPORT_VAR_DECL.  Variables
+   must also be exported with C linkage.  As we can't both use extern
+   "C" and initialize a variable in the same statement, variables that
+   don't have a separate declaration must use
+   EXTERN_C_PUSH/EXTERN_C_POP around their definition.  */
+
+#ifdef IN_PROCESS_AGENT
+# define IP_AGENT_EXPORT_FUNC EXTERN_C EXPORTED_SYMBOL ATTR_NOINLINE ATTR_USED
+# define IP_AGENT_EXPORT_VAR EXPORTED_SYMBOL ATTR_USED
+# define IP_AGENT_EXPORT_VAR_DECL EXTERN_C EXPORTED_SYMBOL
+#else
+# define IP_AGENT_EXPORT_FUNC static
+# define IP_AGENT_EXPORT_VAR
+# define IP_AGENT_EXPORT_VAR_DECL extern
+#endif
+
+IP_AGENT_EXPORT_VAR_DECL int tracing;
+
+extern int disconnected_tracing;
+
+void tracepoint_look_up_symbols (void);
+
+void stop_tracing (void);
+
+int handle_tracepoint_general_set (char *own_buf);
+int handle_tracepoint_query (char *own_buf);
+
+int tracepoint_finished_step (struct thread_info *tinfo, CORE_ADDR stop_pc);
+int tracepoint_was_hit (struct thread_info *tinfo, CORE_ADDR stop_pc);
+
+void release_while_stepping_state_list (struct thread_info *tinfo);
+
+int in_readonly_region (CORE_ADDR addr, ULONGEST length);
+int traceframe_read_mem (int tfnum, CORE_ADDR addr,
+			 unsigned char *buf, ULONGEST length,
+			 ULONGEST *nbytes);
+int fetch_traceframe_registers (int tfnum,
+				struct regcache *regcache,
+				int regnum);
+
+int traceframe_read_sdata (int tfnum, ULONGEST offset,
+			   unsigned char *buf, ULONGEST length,
+			   ULONGEST *nbytes);
+
+int traceframe_read_info (int tfnum, struct buffer *buffer);
+
+/* If a thread is determined to be collecting a fast tracepoint, this
+   structure holds the collect status.  */
+
+struct fast_tpoint_collect_status
+{
+  /* The tracepoint that is presently being collected.  */
+  int tpoint_num;
+  CORE_ADDR tpoint_addr;
+
+  /* The address range in the jump pad of where the original
+     instruction the tracepoint jump was inserted was relocated
+     to.  */
+  CORE_ADDR adjusted_insn_addr;
+  CORE_ADDR adjusted_insn_addr_end;
+};
+
+/* The possible states a thread can be in, related to the collection of fast
+   tracepoint.  */
+
+enum class fast_tpoint_collect_result
+{
+  /* Not collecting a fast tracepoint.  */
+  not_collecting,
+
+  /* In the jump pad, but before the relocated instruction.  */
+  before_insn,
+
+  /* In the jump pad, but at (or after) the relocated instruction.  */
+  at_insn,
+};
+
+fast_tpoint_collect_result fast_tracepoint_collecting
+  (CORE_ADDR thread_area, CORE_ADDR stop_pc,
+   struct fast_tpoint_collect_status *status);
+
+void force_unlock_trace_buffer (void);
+
+int handle_tracepoint_bkpts (struct thread_info *tinfo, CORE_ADDR stop_pc);
+
+#ifdef IN_PROCESS_AGENT
+void initialize_low_tracepoint (void);
+const struct target_desc *get_ipa_tdesc (int idx);
+void supply_fast_tracepoint_registers (struct regcache *regcache,
+				       const unsigned char *regs);
+void supply_static_tracepoint_registers (struct regcache *regcache,
+					 const unsigned char *regs,
+					 CORE_ADDR pc);
+void set_trampoline_buffer_space (CORE_ADDR begin, CORE_ADDR end,
+				  char *errmsg);
+void *alloc_jump_pad_buffer (size_t size);
+#ifndef HAVE_GETAUXVAL
+unsigned long getauxval (unsigned long type);
+#endif
+#else
+void stop_tracing (void);
+
+int claim_trampoline_space (ULONGEST used, CORE_ADDR *trampoline);
+int have_fast_tracepoint_trampoline_buffer (char *msgbuf);
+void gdb_agent_about_to_close (int pid);
+#endif
+
+struct traceframe;
+struct eval_agent_expr_context;
+
+/* Do memory copies for bytecodes.  */
+/* Do the recording of memory blocks for actions and bytecodes.  */
+
+int agent_mem_read (struct eval_agent_expr_context *ctx,
+		    unsigned char *to, CORE_ADDR from,
+		    ULONGEST len);
+
+LONGEST agent_get_trace_state_variable_value (int num);
+void agent_set_trace_state_variable_value (int num, LONGEST val);
+
+/* Record the value of a trace state variable.  */
+
+int agent_tsv_read (struct eval_agent_expr_context *ctx, int n);
+int agent_mem_read_string (struct eval_agent_expr_context *ctx,
+			   unsigned char *to,
+			   CORE_ADDR from,
+			   ULONGEST len);
+
+/* The prototype the get_raw_reg function in the IPA.  Each arch's
+   bytecode compiler emits calls to this function.  */
+ULONGEST get_raw_reg (const unsigned char *raw_regs, int regnum);
+
+/* Returns the address of the get_raw_reg function in the IPA.  */
+CORE_ADDR get_raw_reg_func_addr (void);
+/* Returns the address of the get_trace_state_variable_value
+   function in the IPA.  */
+CORE_ADDR get_get_tsv_func_addr (void);
+/* Returns the address of the set_trace_state_variable_value
+   function in the IPA.  */
+CORE_ADDR get_set_tsv_func_addr (void);
+
+#endif /* GDBSERVER_TRACEPOINT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/utils.cc ./gdbserver/utils.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/utils.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/utils.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,115 @@
+/* General utility routines for the remote server for GDB.
+   Copyright (C) 1986-2021 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 "server.h"
+
+#ifdef IN_PROCESS_AGENT
+#  define PREFIX "ipa: "
+#  define TOOLNAME "GDBserver in-process agent"
+#else
+#  define PREFIX "gdbserver: "
+#  define TOOLNAME "GDBserver"
+#endif
+
+/* Generally useful subroutines used throughout the program.  */
+
+void
+malloc_failure (long size)
+{
+  fprintf (stderr,
+	   PREFIX "ran out of memory while trying to allocate %lu bytes\n",
+	   (unsigned long) size);
+  exit (1);
+}
+
+/* Print the system error message for errno, and also mention STRING
+   as the file name for which the error was encountered.
+   Then return to command level.  */
+
+void
+perror_with_name (const char *string)
+{
+  const char *err;
+  char *combined;
+
+  err = safe_strerror (errno);
+  if (err == NULL)
+    err = "unknown error";
+
+  combined = (char *) alloca (strlen (err) + strlen (string) + 3);
+  strcpy (combined, string);
+  strcat (combined, ": ");
+  strcat (combined, err);
+
+  error ("%s.", combined);
+}
+
+/* Print an error message and return to top level.  */
+
+void
+verror (const char *string, va_list args)
+{
+#ifdef IN_PROCESS_AGENT
+  fflush (stdout);
+  vfprintf (stderr, string, args);
+  fprintf (stderr, "\n");
+  exit (1);
+#else
+  throw_verror (GENERIC_ERROR, string, args);
+#endif
+}
+
+void
+vwarning (const char *string, va_list args)
+{
+  fprintf (stderr, PREFIX);
+  vfprintf (stderr, string, args);
+  fprintf (stderr, "\n");
+}
+
+/* Report a problem internal to GDBserver, and exit.  */
+
+void
+internal_verror (const char *file, int line, const char *fmt, va_list args)
+{
+  fprintf (stderr,  "\
+%s:%d: A problem internal to " TOOLNAME " has been detected.\n", file, line);
+  vfprintf (stderr, fmt, args);
+  fprintf (stderr, "\n");
+  exit (1);
+}
+
+/* Report a problem internal to GDBserver.  */
+
+void
+internal_vwarning (const char *file, int line, const char *fmt, va_list args)
+{
+  fprintf (stderr,  "\
+%s:%d: A problem internal to " TOOLNAME " has been detected.\n", file, line);
+  vfprintf (stderr, fmt, args);
+  fprintf (stderr, "\n");
+}
+
+/* Convert a CORE_ADDR into a HEX string, like %lx.
+   The result is stored in a circular static buffer, NUMCELLS deep.  */
+
+char *
+paddress (CORE_ADDR addr)
+{
+  return phex_nz (addr, sizeof (CORE_ADDR));
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/utils.h ./gdbserver/utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/utils.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/utils.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,24 @@
+/* General utility routines for the remote server for GDB.
+   Copyright (C) 1993-2021 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 GDBSERVER_UTILS_H
+#define GDBSERVER_UTILS_H
+
+char *paddress (CORE_ADDR addr);
+
+#endif /* GDBSERVER_UTILS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/win32-i386-low.cc ./gdbserver/win32-i386-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/win32-i386-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/win32-i386-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,625 @@
+/* Copyright (C) 2007-2021 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 "server.h"
+#include "win32-low.h"
+#include "x86-low.h"
+#include "gdbsupport/x86-xstate.h"
+#ifdef __x86_64__
+#include "arch/amd64.h"
+#endif
+#include "arch/i386.h"
+#include "tdesc.h"
+#include "x86-tdesc.h"
+
+using namespace windows_nat;
+
+#ifndef CONTEXT_EXTENDED_REGISTERS
+#define CONTEXT_EXTENDED_REGISTERS 0
+#endif
+
+#define FCS_REGNUM 27
+#define FOP_REGNUM 31
+
+#define FLAG_TRACE_BIT 0x100
+
+static struct x86_debug_reg_state debug_reg_state;
+
+static void
+update_debug_registers (thread_info *thread)
+{
+  windows_thread_info *th = (windows_thread_info *) thread_target_data (thread);
+
+  /* The actual update is done later just before resuming the lwp,
+     we just mark that the registers need updating.  */
+  th->debug_registers_changed = true;
+}
+
+/* Update the inferior's debug register REGNUM from STATE.  */
+
+static void
+x86_dr_low_set_addr (int regnum, CORE_ADDR addr)
+{
+  gdb_assert (DR_FIRSTADDR <= regnum && regnum <= DR_LASTADDR);
+
+  /* Only update the threads of this process.  */
+  for_each_thread (current_thread->id.pid (), update_debug_registers);
+}
+
+/* Update the inferior's DR7 debug control register from STATE.  */
+
+static void
+x86_dr_low_set_control (unsigned long control)
+{
+  /* Only update the threads of this process.  */
+  for_each_thread (current_thread->id.pid (), update_debug_registers);
+}
+
+/* Return the current value of a DR register of the current thread's
+   context.  */
+
+static DWORD64
+win32_get_current_dr (int dr)
+{
+  windows_thread_info *th
+    = (windows_thread_info *) thread_target_data (current_thread);
+
+  win32_require_context (th);
+
+#ifdef __x86_64__
+#define RET_DR(DR)				\
+  case DR:					\
+    return th->wow64_context.Dr ## DR
+
+  if (wow64_process)
+    {
+      switch (dr)
+	{
+	  RET_DR (0);
+	  RET_DR (1);
+	  RET_DR (2);
+	  RET_DR (3);
+	  RET_DR (6);
+	  RET_DR (7);
+	}
+    }
+  else
+#undef RET_DR
+#endif
+#define RET_DR(DR)				\
+  case DR:					\
+    return th->context.Dr ## DR
+
+    {
+      switch (dr)
+	{
+	  RET_DR (0);
+	  RET_DR (1);
+	  RET_DR (2);
+	  RET_DR (3);
+	  RET_DR (6);
+	  RET_DR (7);
+	}
+    }
+
+#undef RET_DR
+
+  gdb_assert_not_reached ("unhandled dr");
+}
+
+static CORE_ADDR
+x86_dr_low_get_addr (int regnum)
+{
+  gdb_assert (DR_FIRSTADDR <= regnum && regnum <= DR_LASTADDR);
+
+  return win32_get_current_dr (regnum - DR_FIRSTADDR);
+}
+
+static unsigned long
+x86_dr_low_get_control (void)
+{
+  return win32_get_current_dr (7);
+}
+
+/* Get the value of the DR6 debug status register from the inferior
+   and record it in STATE.  */
+
+static unsigned long
+x86_dr_low_get_status (void)
+{
+  return win32_get_current_dr (6);
+}
+
+/* Low-level function vector.  */
+struct x86_dr_low_type x86_dr_low =
+  {
+    x86_dr_low_set_control,
+    x86_dr_low_set_addr,
+    x86_dr_low_get_addr,
+    x86_dr_low_get_status,
+    x86_dr_low_get_control,
+    sizeof (void *),
+  };
+
+/* Breakpoint/watchpoint support.  */
+
+static int
+i386_supports_z_point_type (char z_type)
+{
+  switch (z_type)
+    {
+    case Z_PACKET_HW_BP:
+    case Z_PACKET_WRITE_WP:
+    case Z_PACKET_ACCESS_WP:
+      return 1;
+    default:
+      return 0;
+    }
+}
+
+static int
+i386_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		   int size, struct raw_breakpoint *bp)
+{
+  switch (type)
+    {
+    case raw_bkpt_type_hw:
+    case raw_bkpt_type_write_wp:
+    case raw_bkpt_type_access_wp:
+      {
+	enum target_hw_bp_type hw_type
+	  = raw_bkpt_type_to_target_hw_bp_type (type);
+
+	return x86_dr_insert_watchpoint (&debug_reg_state,
+					 hw_type, addr, size);
+      }
+    default:
+      /* Unsupported.  */
+      return 1;
+    }
+}
+
+static int
+i386_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		   int size, struct raw_breakpoint *bp)
+{
+  switch (type)
+    {
+    case raw_bkpt_type_hw:
+    case raw_bkpt_type_write_wp:
+    case raw_bkpt_type_access_wp:
+      {
+	enum target_hw_bp_type hw_type
+	  = raw_bkpt_type_to_target_hw_bp_type (type);
+
+	return x86_dr_remove_watchpoint (&debug_reg_state,
+					 hw_type, addr, size);
+      }
+    default:
+      /* Unsupported.  */
+      return 1;
+    }
+}
+
+static int
+x86_stopped_by_watchpoint (void)
+{
+  return x86_dr_stopped_by_watchpoint (&debug_reg_state);
+}
+
+static CORE_ADDR
+x86_stopped_data_address (void)
+{
+  CORE_ADDR addr;
+  if (x86_dr_stopped_data_address (&debug_reg_state, &addr))
+    return addr;
+  return 0;
+}
+
+static void
+i386_initial_stuff (void)
+{
+  x86_low_init_dregs (&debug_reg_state);
+}
+
+static void
+i386_get_thread_context (windows_thread_info *th)
+{
+  /* Requesting the CONTEXT_EXTENDED_REGISTERS register set fails if
+     the system doesn't support extended registers.  */
+  static DWORD extended_registers = CONTEXT_EXTENDED_REGISTERS;
+
+ again:
+#ifdef __x86_64__
+  if (wow64_process)
+    th->wow64_context.ContextFlags = (CONTEXT_FULL
+				      | CONTEXT_FLOATING_POINT
+				      | CONTEXT_DEBUG_REGISTERS
+				      | extended_registers);
+  else
+#endif
+    th->context.ContextFlags = (CONTEXT_FULL
+				| CONTEXT_FLOATING_POINT
+				| CONTEXT_DEBUG_REGISTERS
+				| extended_registers);
+
+  BOOL ret;
+#ifdef __x86_64__
+  if (wow64_process)
+    ret = win32_Wow64GetThreadContext (th->h, &th->wow64_context);
+  else
+#endif
+    ret = GetThreadContext (th->h, &th->context);
+  if (!ret)
+    {
+      DWORD e = GetLastError ();
+
+      if (extended_registers && e == ERROR_INVALID_PARAMETER)
+	{
+	  extended_registers = 0;
+	  goto again;
+	}
+
+      error ("GetThreadContext failure %ld\n", (long) e);
+    }
+}
+
+static void
+i386_prepare_to_resume (windows_thread_info *th)
+{
+  if (th->debug_registers_changed)
+    {
+      struct x86_debug_reg_state *dr = &debug_reg_state;
+
+      win32_require_context (th);
+
+#ifdef __x86_64__
+      if (wow64_process)
+	{
+	  th->wow64_context.Dr0 = dr->dr_mirror[0];
+	  th->wow64_context.Dr1 = dr->dr_mirror[1];
+	  th->wow64_context.Dr2 = dr->dr_mirror[2];
+	  th->wow64_context.Dr3 = dr->dr_mirror[3];
+	  /* th->wow64_context.Dr6 = dr->dr_status_mirror;
+	     FIXME: should we set dr6 also ?? */
+	  th->wow64_context.Dr7 = dr->dr_control_mirror;
+	}
+      else
+#endif
+	{
+	  th->context.Dr0 = dr->dr_mirror[0];
+	  th->context.Dr1 = dr->dr_mirror[1];
+	  th->context.Dr2 = dr->dr_mirror[2];
+	  th->context.Dr3 = dr->dr_mirror[3];
+	  /* th->context.Dr6 = dr->dr_status_mirror;
+	     FIXME: should we set dr6 also ?? */
+	  th->context.Dr7 = dr->dr_control_mirror;
+	}
+
+      th->debug_registers_changed = false;
+    }
+}
+
+static void
+i386_thread_added (windows_thread_info *th)
+{
+  th->debug_registers_changed = true;
+}
+
+static void
+i386_single_step (windows_thread_info *th)
+{
+#ifdef __x86_64__
+  if (wow64_process)
+    th->wow64_context.EFlags |= FLAG_TRACE_BIT;
+  else
+#endif
+    th->context.EFlags |= FLAG_TRACE_BIT;
+}
+
+/* An array of offset mappings into a Win32 Context structure.
+   This is a one-to-one mapping which is indexed by gdb's register
+   numbers.  It retrieves an offset into the context structure where
+   the 4 byte register is located.
+   An offset value of -1 indicates that Win32 does not provide this
+   register in it's CONTEXT structure.  In this case regptr will return
+   a pointer into a dummy register.  */
+#ifdef __x86_64__
+#define context_offset(x) (offsetof (WOW64_CONTEXT, x))
+#else
+#define context_offset(x) ((int)&(((CONTEXT *)NULL)->x))
+#endif
+static const int i386_mappings[] = {
+  context_offset (Eax),
+  context_offset (Ecx),
+  context_offset (Edx),
+  context_offset (Ebx),
+  context_offset (Esp),
+  context_offset (Ebp),
+  context_offset (Esi),
+  context_offset (Edi),
+  context_offset (Eip),
+  context_offset (EFlags),
+  context_offset (SegCs),
+  context_offset (SegSs),
+  context_offset (SegDs),
+  context_offset (SegEs),
+  context_offset (SegFs),
+  context_offset (SegGs),
+  context_offset (FloatSave.RegisterArea[0 * 10]),
+  context_offset (FloatSave.RegisterArea[1 * 10]),
+  context_offset (FloatSave.RegisterArea[2 * 10]),
+  context_offset (FloatSave.RegisterArea[3 * 10]),
+  context_offset (FloatSave.RegisterArea[4 * 10]),
+  context_offset (FloatSave.RegisterArea[5 * 10]),
+  context_offset (FloatSave.RegisterArea[6 * 10]),
+  context_offset (FloatSave.RegisterArea[7 * 10]),
+  context_offset (FloatSave.ControlWord),
+  context_offset (FloatSave.StatusWord),
+  context_offset (FloatSave.TagWord),
+  context_offset (FloatSave.ErrorSelector),
+  context_offset (FloatSave.ErrorOffset),
+  context_offset (FloatSave.DataSelector),
+  context_offset (FloatSave.DataOffset),
+  context_offset (FloatSave.ErrorSelector),
+  /* XMM0-7 */
+  context_offset (ExtendedRegisters[10 * 16]),
+  context_offset (ExtendedRegisters[11 * 16]),
+  context_offset (ExtendedRegisters[12 * 16]),
+  context_offset (ExtendedRegisters[13 * 16]),
+  context_offset (ExtendedRegisters[14 * 16]),
+  context_offset (ExtendedRegisters[15 * 16]),
+  context_offset (ExtendedRegisters[16 * 16]),
+  context_offset (ExtendedRegisters[17 * 16]),
+  /* MXCSR */
+  context_offset (ExtendedRegisters[24])
+};
+#undef context_offset
+
+#ifdef __x86_64__
+
+#define context_offset(x) (offsetof (CONTEXT, x))
+static const int amd64_mappings[] =
+{
+  context_offset (Rax),
+  context_offset (Rbx),
+  context_offset (Rcx),
+  context_offset (Rdx),
+  context_offset (Rsi),
+  context_offset (Rdi),
+  context_offset (Rbp),
+  context_offset (Rsp),
+  context_offset (R8),
+  context_offset (R9),
+  context_offset (R10),
+  context_offset (R11),
+  context_offset (R12),
+  context_offset (R13),
+  context_offset (R14),
+  context_offset (R15),
+  context_offset (Rip),
+  context_offset (EFlags),
+  context_offset (SegCs),
+  context_offset (SegSs),
+  context_offset (SegDs),
+  context_offset (SegEs),
+  context_offset (SegFs),
+  context_offset (SegGs),
+  context_offset (FloatSave.FloatRegisters[0]),
+  context_offset (FloatSave.FloatRegisters[1]),
+  context_offset (FloatSave.FloatRegisters[2]),
+  context_offset (FloatSave.FloatRegisters[3]),
+  context_offset (FloatSave.FloatRegisters[4]),
+  context_offset (FloatSave.FloatRegisters[5]),
+  context_offset (FloatSave.FloatRegisters[6]),
+  context_offset (FloatSave.FloatRegisters[7]),
+  context_offset (FloatSave.ControlWord),
+  context_offset (FloatSave.StatusWord),
+  context_offset (FloatSave.TagWord),
+  context_offset (FloatSave.ErrorSelector),
+  context_offset (FloatSave.ErrorOffset),
+  context_offset (FloatSave.DataSelector),
+  context_offset (FloatSave.DataOffset),
+  context_offset (FloatSave.ErrorSelector)
+  /* XMM0-7 */ ,
+  context_offset (Xmm0),
+  context_offset (Xmm1),
+  context_offset (Xmm2),
+  context_offset (Xmm3),
+  context_offset (Xmm4),
+  context_offset (Xmm5),
+  context_offset (Xmm6),
+  context_offset (Xmm7),
+  context_offset (Xmm8),
+  context_offset (Xmm9),
+  context_offset (Xmm10),
+  context_offset (Xmm11),
+  context_offset (Xmm12),
+  context_offset (Xmm13),
+  context_offset (Xmm14),
+  context_offset (Xmm15),
+  /* MXCSR */
+  context_offset (FloatSave.MxCsr)
+};
+#undef context_offset
+
+#endif /* __x86_64__ */
+
+/* Fetch register from gdbserver regcache data.  */
+static void
+i386_fetch_inferior_register (struct regcache *regcache,
+			      windows_thread_info *th, int r)
+{
+  const int *mappings;
+#ifdef __x86_64__
+  if (!wow64_process)
+    mappings = amd64_mappings;
+  else
+#endif
+    mappings = i386_mappings;
+
+  char *context_offset;
+#ifdef __x86_64__
+  if (wow64_process)
+    context_offset = (char *) &th->wow64_context + mappings[r];
+  else
+#endif
+    context_offset = (char *) &th->context + mappings[r];
+
+  long l;
+  if (r == FCS_REGNUM)
+    {
+      l = *((long *) context_offset) & 0xffff;
+      supply_register (regcache, r, (char *) &l);
+    }
+  else if (r == FOP_REGNUM)
+    {
+      l = (*((long *) context_offset) >> 16) & ((1 << 11) - 1);
+      supply_register (regcache, r, (char *) &l);
+    }
+  else
+    supply_register (regcache, r, context_offset);
+}
+
+/* Store a new register value into the thread context of TH.  */
+static void
+i386_store_inferior_register (struct regcache *regcache,
+			      windows_thread_info *th, int r)
+{
+  const int *mappings;
+#ifdef __x86_64__
+  if (!wow64_process)
+    mappings = amd64_mappings;
+  else
+#endif
+    mappings = i386_mappings;
+
+  char *context_offset;
+#ifdef __x86_64__
+  if (wow64_process)
+    context_offset = (char *) &th->wow64_context + mappings[r];
+  else
+#endif
+    context_offset = (char *) &th->context + mappings[r];
+
+  collect_register (regcache, r, context_offset);
+}
+
+static const unsigned char i386_win32_breakpoint = 0xcc;
+#define i386_win32_breakpoint_len 1
+
+static void
+i386_arch_setup (void)
+{
+  struct target_desc *tdesc;
+
+#ifdef __x86_64__
+  tdesc = amd64_create_target_description (X86_XSTATE_SSE_MASK, false,
+					   false, false);
+  init_target_desc (tdesc, amd64_expedite_regs);
+  win32_tdesc = tdesc;
+#endif
+
+  tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false, false);
+  init_target_desc (tdesc, i386_expedite_regs);
+#ifdef __x86_64__
+  wow64_win32_tdesc = tdesc;
+#else
+  win32_tdesc = tdesc;
+#endif
+}
+
+/* Implement win32_target_ops "num_regs" method.  */
+
+static int
+i386_win32_num_regs (void)
+{
+  int num_regs;
+#ifdef __x86_64__
+  if (!wow64_process)
+    num_regs = sizeof (amd64_mappings) / sizeof (amd64_mappings[0]);
+  else
+#endif
+    num_regs = sizeof (i386_mappings) / sizeof (i386_mappings[0]);
+  return num_regs;
+}
+
+/* Implement win32_target_ops "get_pc" method.  */
+
+static CORE_ADDR
+i386_win32_get_pc (struct regcache *regcache)
+{
+  bool use_64bit = register_size (regcache->tdesc, 0) == 8;
+
+  if (use_64bit)
+    {
+      uint64_t pc;
+
+      collect_register_by_name (regcache, "rip", &pc);
+      return (CORE_ADDR) pc;
+    }
+  else
+    {
+      uint32_t pc;
+
+      collect_register_by_name (regcache, "eip", &pc);
+      return (CORE_ADDR) pc;
+    }
+}
+
+/* Implement win32_target_ops "set_pc" method.  */
+
+static void
+i386_win32_set_pc (struct regcache *regcache, CORE_ADDR pc)
+{
+  bool use_64bit = register_size (regcache->tdesc, 0) == 8;
+
+  if (use_64bit)
+    {
+      uint64_t newpc = pc;
+
+      supply_register_by_name (regcache, "rip", &newpc);
+    }
+  else
+    {
+      uint32_t newpc = pc;
+
+      supply_register_by_name (regcache, "eip", &newpc);
+    }
+}
+
+struct win32_target_ops the_low_target = {
+  i386_arch_setup,
+  i386_win32_num_regs,
+  i386_initial_stuff,
+  i386_get_thread_context,
+  i386_prepare_to_resume,
+  i386_thread_added,
+  i386_fetch_inferior_register,
+  i386_store_inferior_register,
+  i386_single_step,
+  &i386_win32_breakpoint,
+  i386_win32_breakpoint_len,
+  1,
+  i386_win32_get_pc,
+  i386_win32_set_pc,
+  i386_supports_z_point_type,
+  i386_insert_point,
+  i386_remove_point,
+  x86_stopped_by_watchpoint,
+  x86_stopped_data_address
+};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/win32-low.cc ./gdbserver/win32-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/win32-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/win32-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,1916 @@
+/* Low level interface to Windows debugging, for gdbserver.
+   Copyright (C) 2006-2021 Free Software Foundation, Inc.
+
+   Contributed by Leo Zayas.  Based on "win32-nat.c" from GDB.
+
+   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 "server.h"
+#include "regcache.h"
+#include "gdb/fileio.h"
+#include "mem-break.h"
+#include "win32-low.h"
+#include "gdbthread.h"
+#include "dll.h"
+#include "hostio.h"
+#include <windows.h>
+#include <winnt.h>
+#include <imagehlp.h>
+#include <tlhelp32.h>
+#include <psapi.h>
+#include <process.h>
+#include "gdbsupport/gdb_tilde_expand.h"
+#include "gdbsupport/common-inferior.h"
+#include "gdbsupport/gdb_wait.h"
+
+using namespace windows_nat;
+
+#ifndef USE_WIN32API
+#include <sys/cygwin.h>
+#endif
+
+#define OUTMSG(X) do { printf X; fflush (stderr); } while (0)
+
+#define OUTMSG2(X) \
+  do						\
+    {						\
+      if (debug_threads)			\
+	{					\
+	  printf X;				\
+	  fflush (stderr);			\
+	}					\
+    } while (0)
+
+#ifndef _T
+#define _T(x) TEXT (x)
+#endif
+
+#ifndef COUNTOF
+#define COUNTOF(STR) (sizeof (STR) / sizeof ((STR)[0]))
+#endif
+
+#ifdef _WIN32_WCE
+# define GETPROCADDRESS(DLL, PROC) \
+  ((winapi_ ## PROC) GetProcAddress (DLL, TEXT (#PROC)))
+#else
+# define GETPROCADDRESS(DLL, PROC) \
+  ((winapi_ ## PROC) GetProcAddress (DLL, #PROC))
+#endif
+
+int using_threads = 1;
+
+/* Globals.  */
+static int attaching = 0;
+
+/* A status that hasn't been reported to the core yet, and so
+   win32_wait should return it next, instead of fetching the next
+   debug event off the win32 API.  */
+static struct target_waitstatus cached_status;
+
+/* Non zero if an interrupt request is to be satisfied by suspending
+   all threads.  */
+static int soft_interrupt_requested = 0;
+
+/* Non zero if the inferior is stopped in a simulated breakpoint done
+   by suspending all the threads.  */
+static int faked_breakpoint = 0;
+
+/* True if current_process_handle needs to be closed.  */
+static bool open_process_used = false;
+
+const struct target_desc *win32_tdesc;
+#ifdef __x86_64__
+const struct target_desc *wow64_win32_tdesc;
+#endif
+
+#define NUM_REGS (the_low_target.num_regs ())
+
+typedef BOOL (WINAPI *winapi_DebugActiveProcessStop) (DWORD dwProcessId);
+typedef BOOL (WINAPI *winapi_DebugSetProcessKillOnExit) (BOOL KillOnExit);
+typedef BOOL (WINAPI *winapi_DebugBreakProcess) (HANDLE);
+typedef BOOL (WINAPI *winapi_GenerateConsoleCtrlEvent) (DWORD, DWORD);
+
+#ifdef __x86_64__
+typedef BOOL (WINAPI *winapi_Wow64SetThreadContext) (HANDLE,
+						     const WOW64_CONTEXT *);
+
+winapi_Wow64GetThreadContext win32_Wow64GetThreadContext;
+static winapi_Wow64SetThreadContext win32_Wow64SetThreadContext;
+#endif
+
+#ifndef _WIN32_WCE
+static void win32_add_all_dlls (void);
+#endif
+
+/* Get the thread ID from the current selected inferior (the current
+   thread).  */
+static ptid_t
+current_thread_ptid (void)
+{
+  return current_ptid;
+}
+
+/* The current debug event from WaitForDebugEvent.  */
+static ptid_t
+debug_event_ptid (DEBUG_EVENT *event)
+{
+  return ptid_t (event->dwProcessId, event->dwThreadId, 0);
+}
+
+/* Get the thread context of the thread associated with TH.  */
+
+static void
+win32_get_thread_context (windows_thread_info *th)
+{
+#ifdef __x86_64__
+  if (wow64_process)
+    memset (&th->wow64_context, 0, sizeof (WOW64_CONTEXT));
+  else
+#endif
+    memset (&th->context, 0, sizeof (CONTEXT));
+  (*the_low_target.get_thread_context) (th);
+#ifdef _WIN32_WCE
+  memcpy (&th->base_context, &th->context, sizeof (CONTEXT));
+#endif
+}
+
+/* Set the thread context of the thread associated with TH.  */
+
+static void
+win32_set_thread_context (windows_thread_info *th)
+{
+#ifdef _WIN32_WCE
+  /* Calling SuspendThread on a thread that is running kernel code
+     will report that the suspending was successful, but in fact, that
+     will often not be true.  In those cases, the context returned by
+     GetThreadContext will not be correct by the time the thread
+     stops, hence we can't set that context back into the thread when
+     resuming - it will most likely crash the inferior.
+     Unfortunately, there is no way to know when the thread will
+     really stop.  To work around it, we'll only write the context
+     back to the thread when either the user or GDB explicitly change
+     it between stopping and resuming.  */
+  if (memcmp (&th->context, &th->base_context, sizeof (CONTEXT)) != 0)
+#endif
+    {
+#ifdef __x86_64__
+      if (wow64_process)
+	win32_Wow64SetThreadContext (th->h, &th->wow64_context);
+      else
+#endif
+	SetThreadContext (th->h, &th->context);
+    }
+}
+
+/* Set the thread context of the thread associated with TH.  */
+
+static void
+win32_prepare_to_resume (windows_thread_info *th)
+{
+  if (the_low_target.prepare_to_resume != NULL)
+    (*the_low_target.prepare_to_resume) (th);
+}
+
+/* See win32-low.h.  */
+
+void
+win32_require_context (windows_thread_info *th)
+{
+  DWORD context_flags;
+#ifdef __x86_64__
+  if (wow64_process)
+    context_flags = th->wow64_context.ContextFlags;
+  else
+#endif
+    context_flags = th->context.ContextFlags;
+  if (context_flags == 0)
+    {
+      th->suspend ();
+      win32_get_thread_context (th);
+    }
+}
+
+/* See nat/windows-nat.h.  */
+
+windows_thread_info *
+windows_nat::thread_rec (ptid_t ptid, thread_disposition_type disposition)
+{
+  thread_info *thread = find_thread_ptid (ptid);
+  if (thread == NULL)
+    return NULL;
+
+  windows_thread_info *th = (windows_thread_info *) thread_target_data (thread);
+  if (disposition != DONT_INVALIDATE_CONTEXT)
+    win32_require_context (th);
+  return th;
+}
+
+/* Add a thread to the thread list.  */
+static windows_thread_info *
+child_add_thread (DWORD pid, DWORD tid, HANDLE h, void *tlb)
+{
+  windows_thread_info *th;
+  ptid_t ptid = ptid_t (pid, tid, 0);
+
+  if ((th = thread_rec (ptid, DONT_INVALIDATE_CONTEXT)))
+    return th;
+
+  CORE_ADDR base = (CORE_ADDR) (uintptr_t) tlb;
+#ifdef __x86_64__
+  /* For WOW64 processes, this is actually the pointer to the 64bit TIB,
+     and the 32bit TIB is exactly 2 pages after it.  */
+  if (wow64_process)
+    base += 2 * 4096; /* page size = 4096 */
+#endif
+  th = new windows_thread_info (tid, h, base);
+
+  add_thread (ptid, th);
+
+  if (the_low_target.thread_added != NULL)
+    (*the_low_target.thread_added) (th);
+
+  return th;
+}
+
+/* Delete a thread from the list of threads.  */
+static void
+delete_thread_info (thread_info *thread)
+{
+  windows_thread_info *th = (windows_thread_info *) thread_target_data (thread);
+
+  remove_thread (thread);
+  delete th;
+}
+
+/* Delete a thread from the list of threads.  */
+static void
+child_delete_thread (DWORD pid, DWORD tid)
+{
+  /* If the last thread is exiting, just return.  */
+  if (all_threads.size () == 1)
+    return;
+
+  thread_info *thread = find_thread_ptid (ptid_t (pid, tid));
+  if (thread == NULL)
+    return;
+
+  delete_thread_info (thread);
+}
+
+/* These watchpoint related wrapper functions simply pass on the function call
+   if the low target has registered a corresponding function.  */
+
+bool
+win32_process_target::supports_z_point_type (char z_type)
+{
+  return (z_type == Z_PACKET_SW_BP
+	  || (the_low_target.supports_z_point_type != NULL
+	      && the_low_target.supports_z_point_type (z_type)));
+}
+
+int
+win32_process_target::insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
+				    int size, raw_breakpoint *bp)
+{
+  if (type == raw_bkpt_type_sw)
+    return insert_memory_breakpoint (bp);
+  else if (the_low_target.insert_point != NULL)
+    return the_low_target.insert_point (type, addr, size, bp);
+  else
+    /* Unsupported (see target.h).  */
+    return 1;
+}
+
+int
+win32_process_target::remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
+				    int size, raw_breakpoint *bp)
+{
+  if (type == raw_bkpt_type_sw)
+    return remove_memory_breakpoint (bp);
+  else if (the_low_target.remove_point != NULL)
+    return the_low_target.remove_point (type, addr, size, bp);
+  else
+    /* Unsupported (see target.h).  */
+    return 1;
+}
+
+bool
+win32_process_target::stopped_by_watchpoint ()
+{
+  if (the_low_target.stopped_by_watchpoint != NULL)
+    return the_low_target.stopped_by_watchpoint ();
+  else
+    return false;
+}
+
+CORE_ADDR
+win32_process_target::stopped_data_address ()
+{
+  if (the_low_target.stopped_data_address != NULL)
+    return the_low_target.stopped_data_address ();
+  else
+    return 0;
+}
+
+
+/* Transfer memory from/to the debugged process.  */
+static int
+child_xfer_memory (CORE_ADDR memaddr, char *our, int len,
+		   int write, process_stratum_target *target)
+{
+  BOOL success;
+  SIZE_T done = 0;
+  DWORD lasterror = 0;
+  uintptr_t addr = (uintptr_t) memaddr;
+
+  if (write)
+    {
+      success = WriteProcessMemory (current_process_handle, (LPVOID) addr,
+				    (LPCVOID) our, len, &done);
+      if (!success)
+	lasterror = GetLastError ();
+      FlushInstructionCache (current_process_handle, (LPCVOID) addr, len);
+    }
+  else
+    {
+      success = ReadProcessMemory (current_process_handle, (LPCVOID) addr,
+				   (LPVOID) our, len, &done);
+      if (!success)
+	lasterror = GetLastError ();
+    }
+  if (!success && lasterror == ERROR_PARTIAL_COPY && done > 0)
+    return done;
+  else
+    return success ? done : -1;
+}
+
+/* Clear out any old thread list and reinitialize it to a pristine
+   state. */
+static void
+child_init_thread_list (void)
+{
+  for_each_thread (delete_thread_info);
+}
+
+/* Zero during the child initialization phase, and nonzero otherwise.  */
+
+static int child_initialization_done = 0;
+
+static void
+do_initial_child_stuff (HANDLE proch, DWORD pid, int attached)
+{
+  struct process_info *proc;
+
+  last_sig = GDB_SIGNAL_0;
+
+  current_process_handle = proch;
+  current_process_id = pid;
+  main_thread_id = 0;
+
+  soft_interrupt_requested = 0;
+  faked_breakpoint = 0;
+  open_process_used = true;
+
+  memset (&current_event, 0, sizeof (current_event));
+
+#ifdef __x86_64__
+  BOOL wow64;
+  if (!IsWow64Process (proch, &wow64))
+    {
+      DWORD err = GetLastError ();
+      error ("Check if WOW64 process failed (error %d): %s\n",
+	     (int) err, strwinerror (err));
+    }
+  wow64_process = wow64;
+
+  if (wow64_process
+      && (win32_Wow64GetThreadContext == nullptr
+	  || win32_Wow64SetThreadContext == nullptr))
+    error ("WOW64 debugging is not supported on this system.\n");
+
+  ignore_first_breakpoint = !attached && wow64_process;
+#endif
+
+  proc = add_process (pid, attached);
+#ifdef __x86_64__
+  if (wow64_process)
+    proc->tdesc = wow64_win32_tdesc;
+  else
+#endif
+    proc->tdesc = win32_tdesc;
+  child_init_thread_list ();
+  child_initialization_done = 0;
+
+  if (the_low_target.initial_stuff != NULL)
+    (*the_low_target.initial_stuff) ();
+
+  cached_status.kind = TARGET_WAITKIND_IGNORE;
+
+  /* Flush all currently pending debug events (thread and dll list) up
+     to the initial breakpoint.  */
+  while (1)
+    {
+      struct target_waitstatus status;
+
+      the_target->wait (minus_one_ptid, &status, 0);
+
+      /* Note win32_wait doesn't return thread events.  */
+      if (status.kind != TARGET_WAITKIND_LOADED)
+	{
+	  cached_status = status;
+	  break;
+	}
+
+      {
+	struct thread_resume resume;
+
+	resume.thread = minus_one_ptid;
+	resume.kind = resume_continue;
+	resume.sig = 0;
+
+	the_target->resume (&resume, 1);
+      }
+    }
+
+#ifndef _WIN32_WCE
+  /* Now that the inferior has been started and all DLLs have been mapped,
+     we can iterate over all DLLs and load them in.
+
+     We avoid doing it any earlier because, on certain versions of Windows,
+     LOAD_DLL_DEBUG_EVENTs are sometimes not complete.  In particular,
+     we have seen on Windows 8.1 that the ntdll.dll load event does not
+     include the DLL name, preventing us from creating an associated SO.
+     A possible explanation is that ntdll.dll might be mapped before
+     the SO info gets created by the Windows system -- ntdll.dll is
+     the first DLL to be reported via LOAD_DLL_DEBUG_EVENT and other DLLs
+     do not seem to suffer from that problem.
+
+     Rather than try to work around this sort of issue, it is much
+     simpler to just ignore DLL load/unload events during the startup
+     phase, and then process them all in one batch now.  */
+  win32_add_all_dlls ();
+#endif
+
+  child_initialization_done = 1;
+}
+
+/* Resume all artificially suspended threads if we are continuing
+   execution.  */
+static void
+continue_one_thread (thread_info *thread, int thread_id)
+{
+  windows_thread_info *th = (windows_thread_info *) thread_target_data (thread);
+
+  if (thread_id == -1 || thread_id == th->tid)
+    {
+      win32_prepare_to_resume (th);
+
+      if (th->suspended)
+	{
+	  DWORD *context_flags;
+#ifdef __x86_64__
+	  if (wow64_process)
+	    context_flags = &th->wow64_context.ContextFlags;
+	  else
+#endif
+	    context_flags = &th->context.ContextFlags;
+	  if (*context_flags)
+	    {
+	      win32_set_thread_context (th);
+	      *context_flags = 0;
+	    }
+
+	  th->resume ();
+	}
+    }
+}
+
+static BOOL
+child_continue (DWORD continue_status, int thread_id)
+{
+  desired_stop_thread_id = thread_id;
+  if (matching_pending_stop (debug_threads))
+    return TRUE;
+
+  /* The inferior will only continue after the ContinueDebugEvent
+     call.  */
+  for_each_thread ([&] (thread_info *thread)
+    {
+      continue_one_thread (thread, thread_id);
+    });
+  faked_breakpoint = 0;
+
+  return continue_last_debug_event (continue_status, debug_threads);
+}
+
+/* Fetch register(s) from the current thread context.  */
+static void
+child_fetch_inferior_registers (struct regcache *regcache, int r)
+{
+  int regno;
+  windows_thread_info *th = thread_rec (current_thread_ptid (),
+					INVALIDATE_CONTEXT);
+  if (r == -1 || r > NUM_REGS)
+    child_fetch_inferior_registers (regcache, NUM_REGS);
+  else
+    for (regno = 0; regno < r; regno++)
+      (*the_low_target.fetch_inferior_register) (regcache, th, regno);
+}
+
+/* Store a new register value into the current thread context.  We don't
+   change the program's context until later, when we resume it.  */
+static void
+child_store_inferior_registers (struct regcache *regcache, int r)
+{
+  int regno;
+  windows_thread_info *th = thread_rec (current_thread_ptid (),
+					INVALIDATE_CONTEXT);
+  if (r == -1 || r == 0 || r > NUM_REGS)
+    child_store_inferior_registers (regcache, NUM_REGS);
+  else
+    for (regno = 0; regno < r; regno++)
+      (*the_low_target.store_inferior_register) (regcache, th, regno);
+}
+
+/* Map the Windows error number in ERROR to a locale-dependent error
+   message string and return a pointer to it.  Typically, the values
+   for ERROR come from GetLastError.
+
+   The string pointed to shall not be modified by the application,
+   but may be overwritten by a subsequent call to strwinerror
+
+   The strwinerror function does not change the current setting
+   of GetLastError.  */
+
+char *
+strwinerror (DWORD error)
+{
+  static char buf[1024];
+  TCHAR *msgbuf;
+  DWORD lasterr = GetLastError ();
+  DWORD chars = FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM
+			       | FORMAT_MESSAGE_ALLOCATE_BUFFER,
+			       NULL,
+			       error,
+			       0, /* Default language */
+			       (LPTSTR) &msgbuf,
+			       0,
+			       NULL);
+  if (chars != 0)
+    {
+      /* If there is an \r\n appended, zap it.  */
+      if (chars >= 2
+	  && msgbuf[chars - 2] == '\r'
+	  && msgbuf[chars - 1] == '\n')
+	{
+	  chars -= 2;
+	  msgbuf[chars] = 0;
+	}
+
+      if (chars > ((COUNTOF (buf)) - 1))
+	{
+	  chars = COUNTOF (buf) - 1;
+	  msgbuf [chars] = 0;
+	}
+
+#ifdef UNICODE
+      wcstombs (buf, msgbuf, chars + 1);
+#else
+      strncpy (buf, msgbuf, chars + 1);
+#endif
+      LocalFree (msgbuf);
+    }
+  else
+    sprintf (buf, "unknown win32 error (%u)", (unsigned) error);
+
+  SetLastError (lasterr);
+  return buf;
+}
+
+static BOOL
+create_process (const char *program, char *args,
+		DWORD flags, PROCESS_INFORMATION *pi)
+{
+  const char *inferior_cwd = get_inferior_cwd ();
+  BOOL ret;
+  size_t argslen, proglen;
+
+  proglen = strlen (program) + 1;
+  argslen = strlen (args) + proglen;
+
+#ifdef _WIN32_WCE
+  wchar_t *p, *wprogram, *wargs, *wcwd = NULL;
+
+  wprogram = (wchar_t *) alloca (proglen * sizeof (wchar_t));
+  mbstowcs (wprogram, program, proglen);
+
+  for (p = wprogram; *p; ++p)
+    if (L'/' == *p)
+      *p = L'\\';
+
+  wargs = alloca ((argslen + 1) * sizeof (wchar_t));
+  wcscpy (wargs, wprogram);
+  wcscat (wargs, L" ");
+  mbstowcs (wargs + proglen, args, argslen + 1 - proglen);
+
+  if (inferior_cwd != NULL)
+    {
+      std::string expanded_infcwd = gdb_tilde_expand (inferior_cwd);
+      std::replace (expanded_infcwd.begin (), expanded_infcwd.end (),
+		    '/', '\\');
+      wcwd = alloca ((expanded_infcwd.size () + 1) * sizeof (wchar_t));
+      if (mbstowcs (wcwd, expanded_infcwd.c_str (),
+		    expanded_infcwd.size () + 1) == NULL)
+	{
+	  error (_("\
+Could not convert the expanded inferior cwd to wide-char."));
+	}
+    }
+
+  ret = CreateProcessW (wprogram, /* image name */
+			wargs,    /* command line */
+			NULL,     /* security, not supported */
+			NULL,     /* thread, not supported */
+			FALSE,    /* inherit handles, not supported */
+			flags,    /* start flags */
+			NULL,     /* environment, not supported */
+			wcwd,     /* current directory */
+			NULL,     /* start info, not supported */
+			pi);      /* proc info */
+#else
+  STARTUPINFOA si = { sizeof (STARTUPINFOA) };
+  char *program_and_args = (char *) alloca (argslen + 1);
+
+  strcpy (program_and_args, program);
+  strcat (program_and_args, " ");
+  strcat (program_and_args, args);
+  ret = CreateProcessA (program,           /* image name */
+			program_and_args,  /* command line */
+			NULL,              /* security */
+			NULL,              /* thread */
+			TRUE,              /* inherit handles */
+			flags,             /* start flags */
+			NULL,              /* environment */
+			/* current directory */
+			(inferior_cwd == NULL
+			 ? NULL
+			 : gdb_tilde_expand (inferior_cwd).c_str()),
+			&si,               /* start info */
+			pi);               /* proc info */
+#endif
+
+  return ret;
+}
+
+/* Start a new process.
+   PROGRAM is the program name.
+   PROGRAM_ARGS is the vector containing the inferior's args.
+   Returns the new PID on success, -1 on failure.  Registers the new
+   process with the process list.  */
+int
+win32_process_target::create_inferior (const char *program,
+				       const std::vector<char *> &program_args)
+{
+  client_state &cs = get_client_state ();
+#ifndef USE_WIN32API
+  char real_path[PATH_MAX];
+  char *orig_path, *new_path, *path_ptr;
+#endif
+  BOOL ret;
+  DWORD flags;
+  PROCESS_INFORMATION pi;
+  DWORD err;
+  std::string str_program_args = construct_inferior_arguments (program_args);
+  char *args = (char *) str_program_args.c_str ();
+
+  /* win32_wait needs to know we're not attaching.  */
+  attaching = 0;
+
+  if (!program)
+    error ("No executable specified, specify executable to debug.\n");
+
+  flags = DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS;
+
+#ifndef USE_WIN32API
+  orig_path = NULL;
+  path_ptr = getenv ("PATH");
+  if (path_ptr)
+    {
+      int size = cygwin_conv_path_list (CCP_POSIX_TO_WIN_A, path_ptr, NULL, 0);
+      orig_path = (char *) alloca (strlen (path_ptr) + 1);
+      new_path = (char *) alloca (size);
+      strcpy (orig_path, path_ptr);
+      cygwin_conv_path_list (CCP_POSIX_TO_WIN_A, path_ptr, new_path, size);
+      setenv ("PATH", new_path, 1);
+     }
+  cygwin_conv_path (CCP_POSIX_TO_WIN_A, program, real_path, PATH_MAX);
+  program = real_path;
+#endif
+
+  OUTMSG2 (("Command line is \"%s %s\"\n", program, args));
+
+#ifdef CREATE_NEW_PROCESS_GROUP
+  flags |= CREATE_NEW_PROCESS_GROUP;
+#endif
+
+  ret = create_process (program, args, flags, &pi);
+  err = GetLastError ();
+  if (!ret && err == ERROR_FILE_NOT_FOUND)
+    {
+      char *exename = (char *) alloca (strlen (program) + 5);
+      strcat (strcpy (exename, program), ".exe");
+      ret = create_process (exename, args, flags, &pi);
+      err = GetLastError ();
+    }
+
+#ifndef USE_WIN32API
+  if (orig_path)
+    setenv ("PATH", orig_path, 1);
+#endif
+
+  if (!ret)
+    {
+      error ("Error creating process \"%s %s\", (error %d): %s\n",
+	     program, args, (int) err, strwinerror (err));
+    }
+  else
+    {
+      OUTMSG2 (("Process created: %s %s\n", program, (char *) args));
+    }
+
+#ifndef _WIN32_WCE
+  /* On Windows CE this handle can't be closed.  The OS reuses
+     it in the debug events, while the 9x/NT versions of Windows
+     probably use a DuplicateHandle'd one.  */
+  CloseHandle (pi.hThread);
+#endif
+
+  do_initial_child_stuff (pi.hProcess, pi.dwProcessId, 0);
+
+  /* Wait till we are at 1st instruction in program, return new pid
+     (assuming success).  */
+  cs.last_ptid = wait (ptid_t (current_process_id), &cs.last_status, 0);
+
+  /* Necessary for handle_v_kill.  */
+  signal_pid = current_process_id;
+
+  return current_process_id;
+}
+
+/* Attach to a running process.
+   PID is the process ID to attach to, specified by the user
+   or a higher layer.  */
+int
+win32_process_target::attach (unsigned long pid)
+{
+  HANDLE h;
+  winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
+  DWORD err;
+#ifdef _WIN32_WCE
+  HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
+#else
+  HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
+#endif
+  DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit);
+
+  h = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
+  if (h != NULL)
+    {
+      if (DebugActiveProcess (pid))
+	{
+	  if (DebugSetProcessKillOnExit != NULL)
+	    DebugSetProcessKillOnExit (FALSE);
+
+	  /* win32_wait needs to know we're attaching.  */
+	  attaching = 1;
+	  do_initial_child_stuff (h, pid, 1);
+	  return 0;
+	}
+
+      CloseHandle (h);
+    }
+
+  err = GetLastError ();
+  error ("Attach to process failed (error %d): %s\n",
+	 (int) err, strwinerror (err));
+}
+
+/* See nat/windows-nat.h.  */
+
+int
+windows_nat::handle_output_debug_string (struct target_waitstatus *ourstatus)
+{
+#define READ_BUFFER_LEN 1024
+  CORE_ADDR addr;
+  char s[READ_BUFFER_LEN + 1] = { 0 };
+  DWORD nbytes = current_event.u.DebugString.nDebugStringLength;
+
+  if (nbytes == 0)
+    return 0;
+
+  if (nbytes > READ_BUFFER_LEN)
+    nbytes = READ_BUFFER_LEN;
+
+  addr = (CORE_ADDR) (size_t) current_event.u.DebugString.lpDebugStringData;
+
+  if (current_event.u.DebugString.fUnicode)
+    {
+      /* The event tells us how many bytes, not chars, even
+	 in Unicode.  */
+      WCHAR buffer[(READ_BUFFER_LEN + 1) / sizeof (WCHAR)] = { 0 };
+      if (read_inferior_memory (addr, (unsigned char *) buffer, nbytes) != 0)
+	return 0;
+      wcstombs (s, buffer, (nbytes + 1) / sizeof (WCHAR));
+    }
+  else
+    {
+      if (read_inferior_memory (addr, (unsigned char *) s, nbytes) != 0)
+	return 0;
+    }
+
+  if (!startswith (s, "cYg"))
+    {
+      if (!server_waiting)
+	{
+	  OUTMSG2(("%s", s));
+	  return 0;
+	}
+
+      monitor_output (s);
+    }
+#undef READ_BUFFER_LEN
+
+  return 0;
+}
+
+static void
+win32_clear_inferiors (void)
+{
+  if (open_process_used)
+    {
+      CloseHandle (current_process_handle);
+      open_process_used = false;
+    }
+
+  for_each_thread (delete_thread_info);
+  siginfo_er.ExceptionCode = 0;
+  clear_inferiors ();
+}
+
+/* Implementation of target_ops::kill.  */
+
+int
+win32_process_target::kill (process_info *process)
+{
+  TerminateProcess (current_process_handle, 0);
+  for (;;)
+    {
+      if (!child_continue (DBG_CONTINUE, -1))
+	break;
+      if (!wait_for_debug_event (&current_event, INFINITE))
+	break;
+      if (current_event.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT)
+	break;
+      else if (current_event.dwDebugEventCode == OUTPUT_DEBUG_STRING_EVENT)
+	handle_output_debug_string (nullptr);
+    }
+
+  win32_clear_inferiors ();
+
+  remove_process (process);
+  return 0;
+}
+
+/* Implementation of target_ops::detach.  */
+
+int
+win32_process_target::detach (process_info *process)
+{
+  winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL;
+  winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
+#ifdef _WIN32_WCE
+  HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
+#else
+  HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
+#endif
+  DebugActiveProcessStop = GETPROCADDRESS (dll, DebugActiveProcessStop);
+  DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit);
+
+  if (DebugSetProcessKillOnExit == NULL
+      || DebugActiveProcessStop == NULL)
+    return -1;
+
+  {
+    struct thread_resume resume;
+    resume.thread = minus_one_ptid;
+    resume.kind = resume_continue;
+    resume.sig = 0;
+    this->resume (&resume, 1);
+  }
+
+  if (!DebugActiveProcessStop (current_process_id))
+    return -1;
+
+  DebugSetProcessKillOnExit (FALSE);
+  remove_process (process);
+
+  win32_clear_inferiors ();
+  return 0;
+}
+
+void
+win32_process_target::mourn (struct process_info *process)
+{
+  remove_process (process);
+}
+
+/* Implementation of target_ops::join.  */
+
+void
+win32_process_target::join (int pid)
+{
+  HANDLE h = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pid);
+  if (h != NULL)
+    {
+      WaitForSingleObject (h, INFINITE);
+      CloseHandle (h);
+    }
+}
+
+/* Return true iff the thread with thread ID TID is alive.  */
+bool
+win32_process_target::thread_alive (ptid_t ptid)
+{
+  /* Our thread list is reliable; don't bother to poll target
+     threads.  */
+  return find_thread_ptid (ptid) != NULL;
+}
+
+/* Resume the inferior process.  RESUME_INFO describes how we want
+   to resume.  */
+void
+win32_process_target::resume (thread_resume *resume_info, size_t n)
+{
+  DWORD tid;
+  enum gdb_signal sig;
+  int step;
+  windows_thread_info *th;
+  DWORD continue_status = DBG_CONTINUE;
+  ptid_t ptid;
+
+  /* This handles the very limited set of resume packets that GDB can
+     currently produce.  */
+
+  if (n == 1 && resume_info[0].thread == minus_one_ptid)
+    tid = -1;
+  else if (n > 1)
+    tid = -1;
+  else
+    /* Yes, we're ignoring resume_info[0].thread.  It'd be tricky to make
+       the Windows resume code do the right thing for thread switching.  */
+    tid = current_event.dwThreadId;
+
+  if (resume_info[0].thread != minus_one_ptid)
+    {
+      sig = gdb_signal_from_host (resume_info[0].sig);
+      step = resume_info[0].kind == resume_step;
+    }
+  else
+    {
+      sig = GDB_SIGNAL_0;
+      step = 0;
+    }
+
+  if (sig != GDB_SIGNAL_0)
+    {
+      if (current_event.dwDebugEventCode != EXCEPTION_DEBUG_EVENT)
+	{
+	  OUTMSG (("Cannot continue with signal %s here.\n",
+		   gdb_signal_to_string (sig)));
+	}
+      else if (sig == last_sig)
+	continue_status = DBG_EXCEPTION_NOT_HANDLED;
+      else
+	OUTMSG (("Can only continue with received signal %s.\n",
+		 gdb_signal_to_string (last_sig)));
+    }
+
+  last_sig = GDB_SIGNAL_0;
+
+  /* Get context for the currently selected thread.  */
+  ptid = debug_event_ptid (&current_event);
+  th = thread_rec (ptid, DONT_INVALIDATE_CONTEXT);
+  if (th)
+    {
+      win32_prepare_to_resume (th);
+
+      DWORD *context_flags;
+#ifdef __x86_64__
+      if (wow64_process)
+	context_flags = &th->wow64_context.ContextFlags;
+      else
+#endif
+	context_flags = &th->context.ContextFlags;
+      if (*context_flags)
+	{
+	  /* Move register values from the inferior into the thread
+	     context structure.  */
+	  regcache_invalidate ();
+
+	  if (step)
+	    {
+	      if (the_low_target.single_step != NULL)
+		(*the_low_target.single_step) (th);
+	      else
+		error ("Single stepping is not supported "
+		       "in this configuration.\n");
+	    }
+
+	  win32_set_thread_context (th);
+	  *context_flags = 0;
+	}
+    }
+
+  /* Allow continuing with the same signal that interrupted us.
+     Otherwise complain.  */
+
+  child_continue (continue_status, tid);
+}
+
+static void
+win32_add_one_solib (const char *name, CORE_ADDR load_addr)
+{
+  char buf[MAX_PATH + 1];
+  char buf2[MAX_PATH + 1];
+
+#ifdef _WIN32_WCE
+  WIN32_FIND_DATA w32_fd;
+  WCHAR wname[MAX_PATH + 1];
+  mbstowcs (wname, name, MAX_PATH);
+  HANDLE h = FindFirstFile (wname, &w32_fd);
+#else
+  WIN32_FIND_DATAA w32_fd;
+  HANDLE h = FindFirstFileA (name, &w32_fd);
+#endif
+
+  /* The symbols in a dll are offset by 0x1000, which is the
+     offset from 0 of the first byte in an image - because
+     of the file header and the section alignment. */
+  load_addr += 0x1000;
+
+  if (h == INVALID_HANDLE_VALUE)
+    strcpy (buf, name);
+  else
+    {
+      FindClose (h);
+      strcpy (buf, name);
+#ifndef _WIN32_WCE
+      {
+	char cwd[MAX_PATH + 1];
+	char *p;
+	if (GetCurrentDirectoryA (MAX_PATH + 1, cwd))
+	  {
+	    p = strrchr (buf, '\\');
+	    if (p)
+	      p[1] = '\0';
+	    SetCurrentDirectoryA (buf);
+	    GetFullPathNameA (w32_fd.cFileName, MAX_PATH, buf, &p);
+	    SetCurrentDirectoryA (cwd);
+	  }
+      }
+#endif
+    }
+
+#ifndef _WIN32_WCE
+  if (strcasecmp (buf, "ntdll.dll") == 0)
+    {
+      GetSystemDirectoryA (buf, sizeof (buf));
+      strcat (buf, "\\ntdll.dll");
+    }
+#endif
+
+#ifdef __CYGWIN__
+  cygwin_conv_path (CCP_WIN_A_TO_POSIX, buf, buf2, sizeof (buf2));
+#else
+  strcpy (buf2, buf);
+#endif
+
+  loaded_dll (buf2, load_addr);
+}
+
+typedef BOOL (WINAPI *winapi_EnumProcessModules) (HANDLE, HMODULE *,
+						  DWORD, LPDWORD);
+#ifdef __x86_64__
+typedef BOOL (WINAPI *winapi_EnumProcessModulesEx) (HANDLE, HMODULE *, DWORD,
+						    LPDWORD, DWORD);
+#endif
+typedef BOOL (WINAPI *winapi_GetModuleInformation) (HANDLE, HMODULE,
+						    LPMODULEINFO, DWORD);
+typedef DWORD (WINAPI *winapi_GetModuleFileNameExA) (HANDLE, HMODULE,
+						     LPSTR, DWORD);
+
+static winapi_EnumProcessModules win32_EnumProcessModules;
+#ifdef __x86_64__
+static winapi_EnumProcessModulesEx win32_EnumProcessModulesEx;
+#endif
+static winapi_GetModuleInformation win32_GetModuleInformation;
+static winapi_GetModuleFileNameExA win32_GetModuleFileNameExA;
+
+static BOOL
+load_psapi (void)
+{
+  static int psapi_loaded = 0;
+  static HMODULE dll = NULL;
+
+  if (!psapi_loaded)
+    {
+      psapi_loaded = 1;
+      dll = LoadLibrary (TEXT("psapi.dll"));
+      if (!dll)
+	return FALSE;
+      win32_EnumProcessModules =
+	      GETPROCADDRESS (dll, EnumProcessModules);
+#ifdef __x86_64__
+      win32_EnumProcessModulesEx =
+	      GETPROCADDRESS (dll, EnumProcessModulesEx);
+#endif
+      win32_GetModuleInformation =
+	      GETPROCADDRESS (dll, GetModuleInformation);
+      win32_GetModuleFileNameExA =
+	      GETPROCADDRESS (dll, GetModuleFileNameExA);
+    }
+
+#ifdef __x86_64__
+  if (wow64_process && win32_EnumProcessModulesEx == nullptr)
+    return FALSE;
+#endif
+
+  return (win32_EnumProcessModules != NULL
+	  && win32_GetModuleInformation != NULL
+	  && win32_GetModuleFileNameExA != NULL);
+}
+
+#ifndef _WIN32_WCE
+
+/* Iterate over all DLLs currently mapped by our inferior, and
+   add them to our list of solibs.  */
+
+static void
+win32_add_all_dlls (void)
+{
+  size_t i;
+  HMODULE dh_buf[1];
+  HMODULE *DllHandle = dh_buf;
+  DWORD cbNeeded;
+  BOOL ok;
+
+  if (!load_psapi ())
+    return;
+
+  cbNeeded = 0;
+#ifdef __x86_64__
+  if (wow64_process)
+    ok = (*win32_EnumProcessModulesEx) (current_process_handle,
+					DllHandle,
+					sizeof (HMODULE),
+					&cbNeeded,
+					LIST_MODULES_32BIT);
+  else
+#endif
+    ok = (*win32_EnumProcessModules) (current_process_handle,
+				      DllHandle,
+				      sizeof (HMODULE),
+				      &cbNeeded);
+
+  if (!ok || !cbNeeded)
+    return;
+
+  DllHandle = (HMODULE *) alloca (cbNeeded);
+  if (!DllHandle)
+    return;
+
+#ifdef __x86_64__
+  if (wow64_process)
+    ok = (*win32_EnumProcessModulesEx) (current_process_handle,
+					DllHandle,
+					cbNeeded,
+					&cbNeeded,
+					LIST_MODULES_32BIT);
+  else
+#endif
+    ok = (*win32_EnumProcessModules) (current_process_handle,
+				      DllHandle,
+				      cbNeeded,
+				      &cbNeeded);
+  if (!ok)
+    return;
+
+  char system_dir[MAX_PATH];
+  char syswow_dir[MAX_PATH];
+  size_t system_dir_len = 0;
+  bool convert_syswow_dir = false;
+#ifdef __x86_64__
+  if (wow64_process)
+#endif
+    {
+      /* This fails on 32bit Windows because it has no SysWOW64 directory,
+	 and in this case a path conversion isn't necessary.  */
+      UINT len = GetSystemWow64DirectoryA (syswow_dir, sizeof (syswow_dir));
+      if (len > 0)
+	{
+	  /* Check that we have passed a large enough buffer.  */
+	  gdb_assert (len < sizeof (syswow_dir));
+
+	  len = GetSystemDirectoryA (system_dir, sizeof (system_dir));
+	  /* Error check.  */
+	  gdb_assert (len != 0);
+	  /* Check that we have passed a large enough buffer.  */
+	  gdb_assert (len < sizeof (system_dir));
+
+	  strcat (system_dir, "\\");
+	  strcat (syswow_dir, "\\");
+	  system_dir_len = strlen (system_dir);
+
+	  convert_syswow_dir = true;
+	}
+
+    }
+
+  for (i = 1; i < ((size_t) cbNeeded / sizeof (HMODULE)); i++)
+    {
+      MODULEINFO mi;
+      char dll_name[MAX_PATH];
+
+      if (!(*win32_GetModuleInformation) (current_process_handle,
+					  DllHandle[i],
+					  &mi,
+					  sizeof (mi)))
+	continue;
+      if ((*win32_GetModuleFileNameExA) (current_process_handle,
+					 DllHandle[i],
+					 dll_name,
+					 MAX_PATH) == 0)
+	continue;
+
+      const char *name = dll_name;
+      /* Convert the DLL path of 32bit processes returned by
+	 GetModuleFileNameEx from the 64bit system directory to the
+	 32bit syswow64 directory if necessary.  */
+      std::string syswow_dll_path;
+      if (convert_syswow_dir
+	  && strncasecmp (dll_name, system_dir, system_dir_len) == 0
+	  && strchr (dll_name + system_dir_len, '\\') == nullptr)
+	{
+	  syswow_dll_path = syswow_dir;
+	  syswow_dll_path += dll_name + system_dir_len;
+	  name = syswow_dll_path.c_str();
+	}
+
+      win32_add_one_solib (name, (CORE_ADDR) (uintptr_t) mi.lpBaseOfDll);
+    }
+}
+#endif
+
+typedef HANDLE (WINAPI *winapi_CreateToolhelp32Snapshot) (DWORD, DWORD);
+typedef BOOL (WINAPI *winapi_Module32First) (HANDLE, LPMODULEENTRY32);
+typedef BOOL (WINAPI *winapi_Module32Next) (HANDLE, LPMODULEENTRY32);
+
+/* See nat/windows-nat.h.  */
+
+void
+windows_nat::handle_load_dll ()
+{
+  LOAD_DLL_DEBUG_INFO *event = &current_event.u.LoadDll;
+  const char *dll_name;
+
+  dll_name = get_image_name (current_process_handle,
+			     event->lpImageName, event->fUnicode);
+  if (!dll_name)
+    return;
+
+  win32_add_one_solib (dll_name, (CORE_ADDR) (uintptr_t) event->lpBaseOfDll);
+}
+
+/* See nat/windows-nat.h.  */
+
+void
+windows_nat::handle_unload_dll ()
+{
+  CORE_ADDR load_addr =
+	  (CORE_ADDR) (uintptr_t) current_event.u.UnloadDll.lpBaseOfDll;
+
+  /* The symbols in a dll are offset by 0x1000, which is the
+     offset from 0 of the first byte in an image - because
+     of the file header and the section alignment. */
+  load_addr += 0x1000;
+  unloaded_dll (NULL, load_addr);
+}
+
+static void
+suspend_one_thread (thread_info *thread)
+{
+  windows_thread_info *th = (windows_thread_info *) thread_target_data (thread);
+
+  th->suspend ();
+}
+
+static void
+fake_breakpoint_event (void)
+{
+  OUTMSG2(("fake_breakpoint_event\n"));
+
+  faked_breakpoint = 1;
+
+  memset (&current_event, 0, sizeof (current_event));
+  current_event.dwThreadId = main_thread_id;
+  current_event.dwDebugEventCode = EXCEPTION_DEBUG_EVENT;
+  current_event.u.Exception.ExceptionRecord.ExceptionCode
+    = EXCEPTION_BREAKPOINT;
+
+  for_each_thread (suspend_one_thread);
+}
+
+#ifdef _WIN32_WCE
+static int
+auto_delete_breakpoint (CORE_ADDR stop_pc)
+{
+  return 1;
+}
+#endif
+
+/* See nat/windows-nat.h.  */
+
+bool
+windows_nat::handle_ms_vc_exception (const EXCEPTION_RECORD *rec)
+{
+  return false;
+}
+
+/* See nat/windows-nat.h.  */
+
+bool
+windows_nat::handle_access_violation (const EXCEPTION_RECORD *rec)
+{
+  return false;
+}
+
+/* A helper function that will, if needed, set
+   'stopped_at_software_breakpoint' on the thread and adjust the
+   PC.  */
+
+static void
+maybe_adjust_pc ()
+{
+  struct regcache *regcache = get_thread_regcache (current_thread, 1);
+  child_fetch_inferior_registers (regcache, -1);
+
+  windows_thread_info *th = thread_rec (current_thread_ptid (),
+					DONT_INVALIDATE_CONTEXT);
+  th->stopped_at_software_breakpoint = false;
+
+  if (current_event.dwDebugEventCode == EXCEPTION_DEBUG_EVENT
+      && ((current_event.u.Exception.ExceptionRecord.ExceptionCode
+	   == EXCEPTION_BREAKPOINT)
+	  || (current_event.u.Exception.ExceptionRecord.ExceptionCode
+	      == STATUS_WX86_BREAKPOINT))
+      && child_initialization_done)
+    {
+      th->stopped_at_software_breakpoint = true;
+      CORE_ADDR pc = regcache_read_pc (regcache);
+      CORE_ADDR sw_breakpoint_pc = pc - the_low_target.decr_pc_after_break;
+      regcache_write_pc (regcache, sw_breakpoint_pc);
+    }
+}
+
+/* Get the next event from the child.  */
+
+static int
+get_child_debug_event (DWORD *continue_status,
+		       struct target_waitstatus *ourstatus)
+{
+  ptid_t ptid;
+
+  last_sig = GDB_SIGNAL_0;
+  ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+  *continue_status = DBG_CONTINUE;
+
+  /* Check if GDB sent us an interrupt request.  */
+  check_remote_input_interrupt_request ();
+
+  if (soft_interrupt_requested)
+    {
+      soft_interrupt_requested = 0;
+      fake_breakpoint_event ();
+      goto gotevent;
+    }
+
+  attaching = 0;
+  {
+    gdb::optional<pending_stop> stop = fetch_pending_stop (debug_threads);
+    if (stop.has_value ())
+      {
+	*ourstatus = stop->status;
+	current_event = stop->event;
+	ptid = debug_event_ptid (&current_event);
+	current_thread = find_thread_ptid (ptid);
+	return 1;
+      }
+
+    /* Keep the wait time low enough for comfortable remote
+       interruption, but high enough so gdbserver doesn't become a
+       bottleneck.  */
+    if (!wait_for_debug_event (&current_event, 250))
+      {
+	DWORD e  = GetLastError();
+
+	if (e == ERROR_PIPE_NOT_CONNECTED)
+	  {
+	    /* This will happen if the loader fails to succesfully
+	       load the application, e.g., if the main executable
+	       tries to pull in a non-existing export from a
+	       DLL.  */
+	    ourstatus->kind = TARGET_WAITKIND_EXITED;
+	    ourstatus->value.integer = 1;
+	    return 1;
+	  }
+
+	return 0;
+      }
+  }
+
+ gotevent:
+
+  switch (current_event.dwDebugEventCode)
+    {
+    case CREATE_THREAD_DEBUG_EVENT:
+      OUTMSG2 (("gdbserver: kernel event CREATE_THREAD_DEBUG_EVENT "
+		"for pid=%u tid=%x)\n",
+		(unsigned) current_event.dwProcessId,
+		(unsigned) current_event.dwThreadId));
+
+      /* Record the existence of this thread.  */
+      child_add_thread (current_event.dwProcessId,
+			current_event.dwThreadId,
+			current_event.u.CreateThread.hThread,
+			current_event.u.CreateThread.lpThreadLocalBase);
+      break;
+
+    case EXIT_THREAD_DEBUG_EVENT:
+      OUTMSG2 (("gdbserver: kernel event EXIT_THREAD_DEBUG_EVENT "
+		"for pid=%u tid=%x\n",
+		(unsigned) current_event.dwProcessId,
+		(unsigned) current_event.dwThreadId));
+      child_delete_thread (current_event.dwProcessId,
+			   current_event.dwThreadId);
+
+      current_thread = get_first_thread ();
+      return 1;
+
+    case CREATE_PROCESS_DEBUG_EVENT:
+      OUTMSG2 (("gdbserver: kernel event CREATE_PROCESS_DEBUG_EVENT "
+		"for pid=%u tid=%x\n",
+		(unsigned) current_event.dwProcessId,
+		(unsigned) current_event.dwThreadId));
+      CloseHandle (current_event.u.CreateProcessInfo.hFile);
+
+      if (open_process_used)
+	{
+	  CloseHandle (current_process_handle);
+	  open_process_used = false;
+	}
+
+      current_process_handle = current_event.u.CreateProcessInfo.hProcess;
+      main_thread_id = current_event.dwThreadId;
+
+      /* Add the main thread.  */
+      child_add_thread (current_event.dwProcessId,
+			main_thread_id,
+			current_event.u.CreateProcessInfo.hThread,
+			current_event.u.CreateProcessInfo.lpThreadLocalBase);
+      break;
+
+    case EXIT_PROCESS_DEBUG_EVENT:
+      OUTMSG2 (("gdbserver: kernel event EXIT_PROCESS_DEBUG_EVENT "
+		"for pid=%u tid=%x\n",
+		(unsigned) current_event.dwProcessId,
+		(unsigned) current_event.dwThreadId));
+      {
+	DWORD exit_status = current_event.u.ExitProcess.dwExitCode;
+	/* If the exit status looks like a fatal exception, but we
+	   don't recognize the exception's code, make the original
+	   exit status value available, to avoid losing information.  */
+	int exit_signal
+	  = WIFSIGNALED (exit_status) ? WTERMSIG (exit_status) : -1;
+	if (exit_signal == -1)
+	  {
+	    ourstatus->kind = TARGET_WAITKIND_EXITED;
+	    ourstatus->value.integer = exit_status;
+	  }
+	else
+	  {
+	    ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
+	    ourstatus->value.sig = gdb_signal_from_host (exit_signal);
+	  }
+      }
+      child_continue (DBG_CONTINUE, desired_stop_thread_id);
+      break;
+
+    case LOAD_DLL_DEBUG_EVENT:
+      OUTMSG2 (("gdbserver: kernel event LOAD_DLL_DEBUG_EVENT "
+		"for pid=%u tid=%x\n",
+		(unsigned) current_event.dwProcessId,
+		(unsigned) current_event.dwThreadId));
+      CloseHandle (current_event.u.LoadDll.hFile);
+      if (! child_initialization_done)
+	break;
+      handle_load_dll ();
+
+      ourstatus->kind = TARGET_WAITKIND_LOADED;
+      ourstatus->value.sig = GDB_SIGNAL_TRAP;
+      break;
+
+    case UNLOAD_DLL_DEBUG_EVENT:
+      OUTMSG2 (("gdbserver: kernel event UNLOAD_DLL_DEBUG_EVENT "
+		"for pid=%u tid=%x\n",
+		(unsigned) current_event.dwProcessId,
+		(unsigned) current_event.dwThreadId));
+      if (! child_initialization_done)
+	break;
+      handle_unload_dll ();
+      ourstatus->kind = TARGET_WAITKIND_LOADED;
+      ourstatus->value.sig = GDB_SIGNAL_TRAP;
+      break;
+
+    case EXCEPTION_DEBUG_EVENT:
+      OUTMSG2 (("gdbserver: kernel event EXCEPTION_DEBUG_EVENT "
+		"for pid=%u tid=%x\n",
+		(unsigned) current_event.dwProcessId,
+		(unsigned) current_event.dwThreadId));
+      if (handle_exception (ourstatus, debug_threads)
+	  == HANDLE_EXCEPTION_UNHANDLED)
+	*continue_status = DBG_EXCEPTION_NOT_HANDLED;
+      break;
+
+    case OUTPUT_DEBUG_STRING_EVENT:
+      /* A message from the kernel (or Cygwin).  */
+      OUTMSG2 (("gdbserver: kernel event OUTPUT_DEBUG_STRING_EVENT "
+		"for pid=%u tid=%x\n",
+		(unsigned) current_event.dwProcessId,
+		(unsigned) current_event.dwThreadId));
+      handle_output_debug_string (nullptr);
+      break;
+
+    default:
+      OUTMSG2 (("gdbserver: kernel event unknown "
+		"for pid=%u tid=%x code=%x\n",
+		(unsigned) current_event.dwProcessId,
+		(unsigned) current_event.dwThreadId,
+		(unsigned) current_event.dwDebugEventCode));
+      break;
+    }
+
+  ptid = debug_event_ptid (&current_event);
+
+  if (desired_stop_thread_id != -1 && desired_stop_thread_id != ptid.lwp ())
+    {
+      /* Pending stop.  See the comment by the definition of
+	 "pending_stops" for details on why this is needed.  */
+      OUTMSG2 (("get_windows_debug_event - "
+		"unexpected stop in 0x%lx (expecting 0x%x)\n",
+		ptid.lwp (), desired_stop_thread_id));
+      maybe_adjust_pc ();
+      pending_stops.push_back ({(DWORD) ptid.lwp (), *ourstatus, current_event});
+      ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+    }
+  else
+    current_thread = find_thread_ptid (ptid);
+
+  return 1;
+}
+
+/* Wait for the inferior process to change state.
+   STATUS will be filled in with a response code to send to GDB.
+   Returns the signal which caused the process to stop. */
+ptid_t
+win32_process_target::wait (ptid_t ptid, target_waitstatus *ourstatus,
+			    int options)
+{
+  if (cached_status.kind != TARGET_WAITKIND_IGNORE)
+    {
+      /* The core always does a wait after creating the inferior, and
+	 do_initial_child_stuff already ran the inferior to the
+	 initial breakpoint (or an exit, if creating the process
+	 fails).  Report it now.  */
+      *ourstatus = cached_status;
+      cached_status.kind = TARGET_WAITKIND_IGNORE;
+      return debug_event_ptid (&current_event);
+    }
+
+  while (1)
+    {
+      DWORD continue_status;
+      if (!get_child_debug_event (&continue_status, ourstatus))
+	continue;
+
+      switch (ourstatus->kind)
+	{
+	case TARGET_WAITKIND_EXITED:
+	  OUTMSG2 (("Child exited with retcode = %x\n",
+		    ourstatus->value.integer));
+	  win32_clear_inferiors ();
+	  return ptid_t (current_event.dwProcessId);
+	case TARGET_WAITKIND_STOPPED:
+	case TARGET_WAITKIND_SIGNALLED:
+	case TARGET_WAITKIND_LOADED:
+	  {
+	    OUTMSG2 (("Child Stopped with signal = %d \n",
+		      ourstatus->value.sig));
+	    maybe_adjust_pc ();
+	    return debug_event_ptid (&current_event);
+	  }
+	default:
+	  OUTMSG (("Ignoring unknown internal event, %d\n", ourstatus->kind));
+	  /* fall-through */
+	case TARGET_WAITKIND_SPURIOUS:
+	  /* do nothing, just continue */
+	  child_continue (continue_status, desired_stop_thread_id);
+	  break;
+	}
+    }
+}
+
+/* Fetch registers from the inferior process.
+   If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO.  */
+void
+win32_process_target::fetch_registers (regcache *regcache, int regno)
+{
+  child_fetch_inferior_registers (regcache, regno);
+}
+
+/* Store registers to the inferior process.
+   If REGNO is -1, store all registers; otherwise, store at least REGNO.  */
+void
+win32_process_target::store_registers (regcache *regcache, int regno)
+{
+  child_store_inferior_registers (regcache, regno);
+}
+
+/* Read memory from the inferior process.  This should generally be
+   called through read_inferior_memory, which handles breakpoint shadowing.
+   Read LEN bytes at MEMADDR into a buffer at MYADDR.  */
+int
+win32_process_target::read_memory (CORE_ADDR memaddr, unsigned char *myaddr,
+				   int len)
+{
+  return child_xfer_memory (memaddr, (char *) myaddr, len, 0, 0) != len;
+}
+
+/* Write memory to the inferior process.  This should generally be
+   called through write_inferior_memory, which handles breakpoint shadowing.
+   Write LEN bytes from the buffer at MYADDR to MEMADDR.
+   Returns 0 on success and errno on failure.  */
+int
+win32_process_target::write_memory (CORE_ADDR memaddr,
+				    const unsigned char *myaddr, int len)
+{
+  return child_xfer_memory (memaddr, (char *) myaddr, len, 1, 0) != len;
+}
+
+/* Send an interrupt request to the inferior process. */
+void
+win32_process_target::request_interrupt ()
+{
+  winapi_DebugBreakProcess DebugBreakProcess;
+  winapi_GenerateConsoleCtrlEvent GenerateConsoleCtrlEvent;
+
+#ifdef _WIN32_WCE
+  HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
+#else
+  HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
+#endif
+
+  GenerateConsoleCtrlEvent = GETPROCADDRESS (dll, GenerateConsoleCtrlEvent);
+
+  if (GenerateConsoleCtrlEvent != NULL
+      && GenerateConsoleCtrlEvent (CTRL_BREAK_EVENT, current_process_id))
+    return;
+
+  /* GenerateConsoleCtrlEvent can fail if process id being debugged is
+     not a process group id.
+     Fallback to XP/Vista 'DebugBreakProcess', which generates a
+     breakpoint exception in the interior process.  */
+
+  DebugBreakProcess = GETPROCADDRESS (dll, DebugBreakProcess);
+
+  if (DebugBreakProcess != NULL
+      && DebugBreakProcess (current_process_handle))
+    return;
+
+  /* Last resort, suspend all threads manually.  */
+  soft_interrupt_requested = 1;
+}
+
+bool
+win32_process_target::supports_hardware_single_step ()
+{
+  return true;
+}
+
+#ifdef _WIN32_WCE
+int
+win32_error_to_fileio_error (DWORD err)
+{
+  switch (err)
+    {
+    case ERROR_BAD_PATHNAME:
+    case ERROR_FILE_NOT_FOUND:
+    case ERROR_INVALID_NAME:
+    case ERROR_PATH_NOT_FOUND:
+      return FILEIO_ENOENT;
+    case ERROR_CRC:
+    case ERROR_IO_DEVICE:
+    case ERROR_OPEN_FAILED:
+      return FILEIO_EIO;
+    case ERROR_INVALID_HANDLE:
+      return FILEIO_EBADF;
+    case ERROR_ACCESS_DENIED:
+    case ERROR_SHARING_VIOLATION:
+      return FILEIO_EACCES;
+    case ERROR_NOACCESS:
+      return FILEIO_EFAULT;
+    case ERROR_BUSY:
+      return FILEIO_EBUSY;
+    case ERROR_ALREADY_EXISTS:
+    case ERROR_FILE_EXISTS:
+      return FILEIO_EEXIST;
+    case ERROR_BAD_DEVICE:
+      return FILEIO_ENODEV;
+    case ERROR_DIRECTORY:
+      return FILEIO_ENOTDIR;
+    case ERROR_FILENAME_EXCED_RANGE:
+    case ERROR_INVALID_DATA:
+    case ERROR_INVALID_PARAMETER:
+    case ERROR_NEGATIVE_SEEK:
+      return FILEIO_EINVAL;
+    case ERROR_TOO_MANY_OPEN_FILES:
+      return FILEIO_EMFILE;
+    case ERROR_HANDLE_DISK_FULL:
+    case ERROR_DISK_FULL:
+      return FILEIO_ENOSPC;
+    case ERROR_WRITE_PROTECT:
+      return FILEIO_EROFS;
+    case ERROR_NOT_SUPPORTED:
+      return FILEIO_ENOSYS;
+    }
+
+  return FILEIO_EUNKNOWN;
+}
+
+void
+win32_process_target::hostio_last_error (char *buf)
+{
+  DWORD winerr = GetLastError ();
+  int fileio_err = win32_error_to_fileio_error (winerr);
+  sprintf (buf, "F-1,%x", fileio_err);
+}
+#endif
+
+bool
+win32_process_target::supports_qxfer_siginfo ()
+{
+  return true;
+}
+
+/* Write Windows signal info.  */
+
+int
+win32_process_target::qxfer_siginfo (const char *annex,
+				     unsigned char *readbuf,
+				     unsigned const char *writebuf,
+				     CORE_ADDR offset, int len)
+{
+  if (siginfo_er.ExceptionCode == 0)
+    return -1;
+
+  if (readbuf == nullptr)
+    return -1;
+
+  char *buf = (char *) &siginfo_er;
+  size_t bufsize = sizeof (siginfo_er);
+
+#ifdef __x86_64__
+  EXCEPTION_RECORD32 er32;
+  if (wow64_process)
+    {
+      buf = (char *) &er32;
+      bufsize = sizeof (er32);
+
+      er32.ExceptionCode = siginfo_er.ExceptionCode;
+      er32.ExceptionFlags = siginfo_er.ExceptionFlags;
+      er32.ExceptionRecord = (uintptr_t) siginfo_er.ExceptionRecord;
+      er32.ExceptionAddress = (uintptr_t) siginfo_er.ExceptionAddress;
+      er32.NumberParameters = siginfo_er.NumberParameters;
+      int i;
+      for (i = 0; i < EXCEPTION_MAXIMUM_PARAMETERS; i++)
+	er32.ExceptionInformation[i] = siginfo_er.ExceptionInformation[i];
+    }
+#endif
+
+  if (offset > bufsize)
+    return -1;
+
+  if (offset + len > bufsize)
+    len = bufsize - offset;
+
+  memcpy (readbuf, buf + offset, len);
+
+  return len;
+}
+
+bool
+win32_process_target::supports_get_tib_address ()
+{
+  return true;
+}
+
+/* Write Windows OS Thread Information Block address.  */
+
+int
+win32_process_target::get_tib_address (ptid_t ptid, CORE_ADDR *addr)
+{
+  windows_thread_info *th;
+  th = thread_rec (ptid, DONT_INVALIDATE_CONTEXT);
+  if (th == NULL)
+    return 0;
+  if (addr != NULL)
+    *addr = th->thread_local_base;
+  return 1;
+}
+
+/* Implementation of the target_ops method "sw_breakpoint_from_kind".  */
+
+const gdb_byte *
+win32_process_target::sw_breakpoint_from_kind (int kind, int *size)
+{
+  *size = the_low_target.breakpoint_len;
+  return the_low_target.breakpoint;
+}
+
+bool
+win32_process_target::stopped_by_sw_breakpoint ()
+{
+  windows_thread_info *th = thread_rec (current_thread_ptid (),
+					DONT_INVALIDATE_CONTEXT);
+  return th == nullptr ? false : th->stopped_at_software_breakpoint;
+}
+
+bool
+win32_process_target::supports_stopped_by_sw_breakpoint ()
+{
+  return true;
+}
+
+CORE_ADDR
+win32_process_target::read_pc (struct regcache *regcache)
+{
+  return (*the_low_target.get_pc) (regcache);
+}
+
+void
+win32_process_target::write_pc (struct regcache *regcache, CORE_ADDR pc)
+{
+  return (*the_low_target.set_pc) (regcache, pc);
+}
+
+/* The win32 target ops object.  */
+
+static win32_process_target the_win32_target;
+
+/* Initialize the Win32 backend.  */
+void
+initialize_low (void)
+{
+  set_target_ops (&the_win32_target);
+  the_low_target.arch_setup ();
+
+#ifdef __x86_64__
+  /* These functions are loaded dynamically, because they are not available
+     on Windows XP.  */
+  HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
+  win32_Wow64GetThreadContext = GETPROCADDRESS (dll, Wow64GetThreadContext);
+  win32_Wow64SetThreadContext = GETPROCADDRESS (dll, Wow64SetThreadContext);
+#endif
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/win32-low.h ./gdbserver/win32-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/win32-low.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/win32-low.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,184 @@
+/* Internal interfaces for the Win32 specific target code for gdbserver.
+   Copyright (C) 2007-2021 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 GDBSERVER_WIN32_LOW_H
+#define GDBSERVER_WIN32_LOW_H
+
+#include <windows.h>
+#include "nat/windows-nat.h"
+
+struct target_desc;
+
+/* The inferior's target description.  This is a global because the
+   Windows ports support neither bi-arch nor multi-process.  */
+extern const struct target_desc *win32_tdesc;
+#ifdef __x86_64__
+extern const struct target_desc *wow64_win32_tdesc;
+
+typedef BOOL (WINAPI *winapi_Wow64GetThreadContext) (HANDLE, PWOW64_CONTEXT);
+extern winapi_Wow64GetThreadContext win32_Wow64GetThreadContext;
+#endif
+
+struct win32_target_ops
+{
+  /* Architecture-specific setup.  */
+  void (*arch_setup) (void);
+
+  /* The number of target registers.  */
+  int (*num_regs) (void);
+
+  /* Perform initializations on startup.  */
+  void (*initial_stuff) (void);
+
+  /* Fetch the context from the inferior.  */
+  void (*get_thread_context) (windows_nat::windows_thread_info *th);
+
+  /* Called just before resuming the thread.  */
+  void (*prepare_to_resume) (windows_nat::windows_thread_info *th);
+
+  /* Called when a thread was added.  */
+  void (*thread_added) (windows_nat::windows_thread_info *th);
+
+  /* Fetch register from gdbserver regcache data.  */
+  void (*fetch_inferior_register) (struct regcache *regcache,
+				   windows_nat::windows_thread_info *th,
+				   int r);
+
+  /* Store a new register value into the thread context of TH.  */
+  void (*store_inferior_register) (struct regcache *regcache,
+				   windows_nat::windows_thread_info *th,
+				   int r);
+
+  void (*single_step) (windows_nat::windows_thread_info *th);
+
+  const unsigned char *breakpoint;
+  int breakpoint_len;
+
+  /* Amount by which to decrement the PC after a breakpoint is
+     hit.  */
+  int decr_pc_after_break;
+
+  /* Get the PC register from REGCACHE.  */
+  CORE_ADDR (*get_pc) (struct regcache *regcache);
+  /* Set the PC register in REGCACHE.  */
+  void (*set_pc) (struct regcache *regcache, CORE_ADDR newpc);
+
+  /* Breakpoint/Watchpoint related functions.  See target.h for comments.  */
+  int (*supports_z_point_type) (char z_type);
+  int (*insert_point) (enum raw_bkpt_type type, CORE_ADDR addr,
+		       int size, struct raw_breakpoint *bp);
+  int (*remove_point) (enum raw_bkpt_type type, CORE_ADDR addr,
+		       int size, struct raw_breakpoint *bp);
+  int (*stopped_by_watchpoint) (void);
+  CORE_ADDR (*stopped_data_address) (void);
+};
+
+extern struct win32_target_ops the_low_target;
+
+/* Target ops definitions for a Win32 target.  */
+
+class win32_process_target : public process_stratum_target
+{
+public:
+
+  int create_inferior (const char *program,
+		       const std::vector<char *> &program_args) override;
+
+  int attach (unsigned long pid) override;
+
+  int kill (process_info *proc) override;
+
+  int detach (process_info *proc) override;
+
+  void mourn (process_info *proc) override;
+
+  void join (int pid) override;
+
+  bool thread_alive (ptid_t pid) override;
+
+  void resume (thread_resume *resume_info, size_t n) override;
+
+  ptid_t wait (ptid_t ptid, target_waitstatus *status,
+	       int options) override;
+
+  void fetch_registers (regcache *regcache, int regno) override;
+
+  void store_registers (regcache *regcache, int regno) override;
+
+  int read_memory (CORE_ADDR memaddr, unsigned char *myaddr,
+		   int len) override;
+
+  int write_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
+		    int len) override;
+
+  void request_interrupt () override;
+
+  bool supports_z_point_type (char z_type) override;
+
+  int insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		    int size, raw_breakpoint *bp) override;
+
+  int remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
+		    int size, raw_breakpoint *bp) override;
+
+  bool supports_hardware_single_step () override;
+
+  bool stopped_by_watchpoint () override;
+
+  CORE_ADDR stopped_data_address () override;
+
+#ifdef _WIN32_WCE
+  void hostio_last_error (char *buf) override;
+#endif
+
+  bool supports_qxfer_siginfo () override;
+
+  int qxfer_siginfo (const char *annex, unsigned char *readbuf,
+		     unsigned const char *writebuf,
+		     CORE_ADDR offset, int len) override;
+
+  bool supports_get_tib_address () override;
+
+  int get_tib_address (ptid_t ptid, CORE_ADDR *addr) override;
+
+  const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override;
+
+  CORE_ADDR read_pc (regcache *regcache) override;
+
+  void write_pc (regcache *regcache, CORE_ADDR pc) override;
+
+  bool stopped_by_sw_breakpoint () override;
+
+  bool supports_stopped_by_sw_breakpoint () override;
+};
+
+/* Retrieve the context for this thread, if not already retrieved.  */
+extern void win32_require_context (windows_nat::windows_thread_info *th);
+
+/* Map the Windows error number in ERROR to a locale-dependent error
+   message string and return a pointer to it.  Typically, the values
+   for ERROR come from GetLastError.
+
+   The string pointed to shall not be modified by the application,
+   but may be overwritten by a subsequent call to strwinerror
+
+   The strwinerror function does not change the current setting
+   of GetLastError.  */
+extern char * strwinerror (DWORD error);
+
+#endif /* GDBSERVER_WIN32_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/x86-low.cc ./gdbserver/x86-low.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/x86-low.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/x86-low.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,38 @@
+/* Low level support for x86 (i386 and x86-64).
+
+   Copyright (C) 2009-2021 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 "server.h"
+#include "x86-low.h"
+
+/* Clear the reference counts and forget everything we knew about the
+   debug registers.  */
+
+void
+x86_low_init_dregs (struct x86_debug_reg_state *state)
+{
+  int i;
+
+  ALL_DEBUG_ADDRESS_REGISTERS (i)
+    {
+      state->dr_mirror[i] = 0;
+      state->dr_ref_count[i] = 0;
+    }
+  state->dr_control_mirror = 0;
+  state->dr_status_mirror  = 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/x86-low.h ./gdbserver/x86-low.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/x86-low.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/x86-low.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,28 @@
+/* Low level support for x86 (i386 and x86-64).
+
+   Copyright (C) 2009-2021 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 GDBSERVER_X86_LOW_H
+#define GDBSERVER_X86_LOW_H
+
+#include "nat/x86-dregs.h"
+
+/* Initialize STATE.  */
+extern void x86_low_init_dregs (struct x86_debug_reg_state *state);
+
+#endif /* GDBSERVER_X86_LOW_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/x86-tdesc.h ./gdbserver/x86-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/x86-tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/x86-tdesc.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,32 @@
+/* Copyright (C) 2018-2021 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 GDBSERVER_X86_TDESC_H
+#define GDBSERVER_X86_TDESC_H
+
+/* The "expedite" registers for x86 targets.  Since whether the
+   variable is used depends on host/configuration, we mark it
+   ATTRIBUTE_UNUSED to keep it simple here.  */
+static const char *i386_expedite_regs[] ATTRIBUTE_UNUSED
+    = {"ebp", "esp", "eip", NULL};
+
+#ifdef __x86_64__
+/* The "expedite" registers for x86_64 targets.  */
+static const char *amd64_expedite_regs[] = {"rbp", "rsp", "rip", NULL};
+#endif
+
+#endif /* GDBSERVER_X86_TDESC_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/xtensa-xtregs.cc ./gdbserver/xtensa-xtregs.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbserver/xtensa-xtregs.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbserver/xtensa-xtregs.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,37 @@
+/* Table mapping between kernel xtregset and GDB register cache.
+   Copyright (C) 2007-2021 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/>.  */
+
+
+typedef struct {
+  int   gdb_regnum;
+  int   gdb_offset;
+  int   ptrace_cp_offset;
+  int   ptrace_offset;
+  int   size;
+  int   coproc;
+  int   dbnum;
+  char* name
+;} xtensa_regtable_t;
+
+#define XTENSA_ELF_XTREG_SIZE	4
+
+const xtensa_regtable_t  xtensa_regmap_table[] = {
+  /* gnum,gofs,cpofs,ofs,siz,cp, dbnum,  name */
+  {   44, 176,   0,   0,  4, -1, 0x020c, "scompare1" },
+  { 0 }
+};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/acinclude.m4 ./gdbsupport/acinclude.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/acinclude.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/acinclude.m4	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,10 @@
+m4_include([../bfd/bfd.m4])
+m4_include([common.m4])
+m4_include([../config/ax_pthread.m4])
+m4_include([../gdb/ax_cxx_compile_stdcxx.m4])
+m4_include([../gdb/libiberty.m4])
+m4_include([selftest.m4])
+m4_include([../gdb/ptrace.m4])
+
+dnl This gets AM_GDB_WARNINGS.
+m4_include(warning.m4)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/aclocal.m4 ./gdbsupport/aclocal.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/aclocal.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/aclocal.m4	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,1209 @@
+# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
+
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.15'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.15.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.15.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each '.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+#  -*- Autoconf -*-
+# Obsolete and "removed" macros, that must however still report explicit
+# error messages when used, to smooth transition.
+#
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([AM_CONFIG_HEADER],
+[AC_DIAGNOSE([obsolete],
+['$0': this macro is obsolete.
+You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl
+AC_CONFIG_HEADERS($@)])
+
+AC_DEFUN([AM_PROG_CC_STDC],
+[AC_PROG_CC
+am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
+AC_DIAGNOSE([obsolete],
+['$0': this macro is obsolete.
+You should simply use the 'AC][_PROG_CC' macro instead.
+Also, your code should no longer depend upon 'am_cv_prog_cc_stdc',
+but upon 'ac_cv_prog_cc_stdc'.])])
+
+AC_DEFUN([AM_C_PROTOTYPES],
+         [AC_FATAL([automatic de-ANSI-fication support has been removed])])
+AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004-2017 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([../config/codeset.m4])
+m4_include([../config/depstand.m4])
+m4_include([../config/gettext-sister.m4])
+m4_include([../config/largefile.m4])
+m4_include([../config/lead-dot.m4])
+m4_include([../config/lib-ld.m4])
+m4_include([../config/lib-link.m4])
+m4_include([../config/lib-prefix.m4])
+m4_include([../config/override.m4])
+m4_include([../config/plugins.m4])
+m4_include([acinclude.m4])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/agent.cc ./gdbsupport/agent.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/agent.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/agent.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,280 @@
+/* Shared utility routines for GDB to interact with agent.
+
+   Copyright (C) 2009-2021 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"
+#include "target/target.h"
+#include "gdbsupport/symbol.h"
+#include <unistd.h>
+#include "filestuff.h"
+
+#define IPA_SYM_STRUCT_NAME ipa_sym_addresses_common
+#include "agent.h"
+
+bool debug_agent = false;
+
+/* A stdarg wrapper for debug_vprintf.  */
+
+static void ATTRIBUTE_PRINTF (1, 2)
+debug_agent_printf (const char *fmt, ...)
+{
+  va_list ap;
+
+  if (!debug_agent)
+    return;
+  va_start (ap, fmt);
+  debug_vprintf (fmt, ap);
+  va_end (ap);
+}
+
+#define DEBUG_AGENT debug_agent_printf
+
+/* Global flag to determine using agent or not.  */
+bool use_agent = false;
+
+/* Addresses of in-process agent's symbols both GDB and GDBserver cares
+   about.  */
+
+struct ipa_sym_addresses_common
+{
+  CORE_ADDR addr_helper_thread_id;
+  CORE_ADDR addr_cmd_buf;
+  CORE_ADDR addr_capability;
+};
+
+/* Cache of the helper thread id.  FIXME: this global should be made
+   per-process.  */
+static uint32_t helper_thread_id = 0;
+
+static struct
+{
+  const char *name;
+  int offset;
+} symbol_list[] = {
+  IPA_SYM(helper_thread_id),
+  IPA_SYM(cmd_buf),
+  IPA_SYM(capability),
+};
+
+static struct ipa_sym_addresses_common ipa_sym_addrs;
+
+static bool all_agent_symbols_looked_up = false;
+
+bool
+agent_loaded_p (void)
+{
+  return all_agent_symbols_looked_up;
+}
+
+/* Look up all symbols needed by agent.  Return 0 if all the symbols are
+   found, return non-zero otherwise.  */
+
+int
+agent_look_up_symbols (void *arg)
+{
+  all_agent_symbols_looked_up = false;
+
+  for (int i = 0; i < sizeof (symbol_list) / sizeof (symbol_list[0]); i++)
+    {
+      CORE_ADDR *addrp =
+	(CORE_ADDR *) ((char *) &ipa_sym_addrs + symbol_list[i].offset);
+      struct objfile *objfile = (struct objfile *) arg;
+
+      if (find_minimal_symbol_address (symbol_list[i].name, addrp,
+				       objfile) != 0)
+	{
+	  DEBUG_AGENT ("symbol `%s' not found\n", symbol_list[i].name);
+	  return -1;
+	}
+    }
+
+  all_agent_symbols_looked_up = true;
+  return 0;
+}
+
+static unsigned int
+agent_get_helper_thread_id (void)
+{
+  if  (helper_thread_id == 0)
+    {
+      if (target_read_uint32 (ipa_sym_addrs.addr_helper_thread_id,
+			      &helper_thread_id))
+	warning (_("Error reading helper thread's id in lib"));
+    }
+
+  return helper_thread_id;
+}
+
+#ifdef HAVE_SYS_UN_H
+#include <sys/socket.h>
+#include <sys/un.h>
+#define SOCK_DIR P_tmpdir
+
+#ifndef UNIX_PATH_MAX
+#define UNIX_PATH_MAX sizeof(((struct sockaddr_un *) NULL)->sun_path)
+#endif
+
+#endif
+
+/* Connects to synchronization socket.  PID is the pid of inferior, which is
+   used to set up the connection socket.  */
+
+static int
+gdb_connect_sync_socket (int pid)
+{
+#ifdef HAVE_SYS_UN_H
+  struct sockaddr_un addr;
+  int res, fd;
+  char path[UNIX_PATH_MAX];
+
+  res = xsnprintf (path, UNIX_PATH_MAX, "%s/gdb_ust%d", P_tmpdir, pid);
+  if (res >= UNIX_PATH_MAX)
+    return -1;
+
+  res = fd = gdb_socket_cloexec (PF_UNIX, SOCK_STREAM, 0);
+  if (res == -1)
+    {
+      warning (_("error opening sync socket: %s"), safe_strerror (errno));
+      return -1;
+    }
+
+  addr.sun_family = AF_UNIX;
+
+  res = xsnprintf (addr.sun_path, UNIX_PATH_MAX, "%s", path);
+  if (res >= UNIX_PATH_MAX)
+    {
+      warning (_("string overflow allocating socket name"));
+      close (fd);
+      return -1;
+    }
+
+  res = connect (fd, (struct sockaddr *) &addr, sizeof (addr));
+  if (res == -1)
+    {
+      warning (_("error connecting sync socket (%s): %s. "
+		 "Make sure the directory exists and that it is writable."),
+		 path, safe_strerror (errno));
+      close (fd);
+      return -1;
+    }
+
+  return fd;
+#else
+  return -1;
+#endif
+}
+
+/* Execute an agent command in the inferior.  PID is the value of pid of the
+   inferior.  CMD is the buffer for command.  GDB or GDBserver will store the
+   command into it and fetch the return result from CMD.  The interaction
+   between GDB/GDBserver and the agent is synchronized by a synchronization
+   socket.  Return zero if success, otherwise return non-zero.  */
+
+int
+agent_run_command (int pid, const char *cmd, int len)
+{
+  int fd;
+  int tid = agent_get_helper_thread_id ();
+  ptid_t ptid = ptid_t (pid, tid, 0);
+
+  int ret = target_write_memory (ipa_sym_addrs.addr_cmd_buf,
+				 (gdb_byte *) cmd, len);
+
+  if (ret != 0)
+    {
+      warning (_("unable to write"));
+      return -1;
+    }
+
+  DEBUG_AGENT ("agent: resumed helper thread\n");
+
+  /* Resume helper thread.  */
+  target_continue_no_signal (ptid);
+
+  fd = gdb_connect_sync_socket (pid);
+  if (fd >= 0)
+    {
+      char buf[1] = "";
+
+      DEBUG_AGENT ("agent: signalling helper thread\n");
+
+      do
+	{
+	  ret = write (fd, buf, 1);
+	} while (ret == -1 && errno == EINTR);
+
+	DEBUG_AGENT ("agent: waiting for helper thread's response\n");
+
+      do
+	{
+	  ret = read (fd, buf, 1);
+	} while (ret == -1 && errno == EINTR);
+
+      close (fd);
+
+      DEBUG_AGENT ("agent: helper thread's response received\n");
+    }
+  else
+    return -1;
+
+  /* Need to read response with the inferior stopped.  */
+  if (ptid != null_ptid)
+    {
+      /* Stop thread PTID.  */
+      DEBUG_AGENT ("agent: stop helper thread\n");
+      target_stop_and_wait (ptid);
+    }
+
+  if (fd >= 0)
+    {
+      if (target_read_memory (ipa_sym_addrs.addr_cmd_buf, (gdb_byte *) cmd,
+			      IPA_CMD_BUF_SIZE))
+	{
+	  warning (_("Error reading command response"));
+	  return -1;
+	}
+    }
+
+  return 0;
+}
+
+/* Each bit of it stands for a capability of agent.  */
+static uint32_t agent_capability = 0;
+
+/* Return true if agent has capability AGENT_CAP, otherwise return false.  */
+
+bool
+agent_capability_check (enum agent_capa agent_capa)
+{
+  if (agent_capability == 0)
+    {
+      if (target_read_uint32 (ipa_sym_addrs.addr_capability,
+			      &agent_capability))
+	warning (_("Error reading capability of agent"));
+    }
+  return (agent_capability & agent_capa) != 0;
+}
+
+/* Invalidate the cache of agent capability, so we'll read it from inferior
+   again.  Call it when launches a new program or reconnect to remote stub.  */
+
+void
+agent_capability_invalidate (void)
+{
+  agent_capability = 0;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/agent.h ./gdbsupport/agent.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/agent.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/agent.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,68 @@
+/* Shared utility routines for GDB to interact with agent.
+
+   Copyright (C) 2009-2021 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 COMMON_AGENT_H
+#define COMMON_AGENT_H
+
+#include "gdbsupport/preprocessor.h"
+
+int agent_run_command (int pid, const char *cmd, int len);
+
+int agent_look_up_symbols (void *);
+
+#define IPA_SYM_EXPORTED_NAME(SYM) gdb_agent_ ## SYM
+
+/* Define an entry in an IPA symbol list array.  If IPA_SYM is used, the macro
+   IPA_SYM_STRUCT_NAME must be defined to the structure name holding the IPA
+   symbol addresses in that particular file, before including
+   gdbsupport/agent.h.  */
+#define IPA_SYM(SYM)                                   \
+  {                                                    \
+    STRINGIFY (IPA_SYM_EXPORTED_NAME (SYM)),           \
+    offsetof (IPA_SYM_STRUCT_NAME, addr_ ## SYM)       \
+  }
+
+/* The size in bytes of the buffer used to talk to the IPA helper
+   thread.  */
+#define IPA_CMD_BUF_SIZE 1024
+
+bool agent_loaded_p (void);
+
+extern bool debug_agent;
+
+extern bool use_agent;
+
+/* Capability of agent.  Different agents may have different capabilities,
+   such as installing fast tracepoint or evaluating breakpoint conditions.
+   Capabilities are represented by bit-maps, and each capability occupies one
+   bit.  */
+
+enum agent_capa
+{
+  /* Capability to install fast tracepoint.  */
+  AGENT_CAPA_FAST_TRACE = 0x1,
+  /* Capability to install static tracepoint.  */
+  AGENT_CAPA_STATIC_TRACE = (0x1 << 1),
+};
+
+bool agent_capability_check (enum agent_capa);
+
+void agent_capability_invalidate (void);
+
+#endif /* COMMON_AGENT_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/alt-stack.h ./gdbsupport/alt-stack.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/alt-stack.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/alt-stack.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,70 @@
+/* Temporarily install an alternate signal stack
+
+   Copyright (C) 2019-2021 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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/array-view.h ./gdbsupport/array-view.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/array-view.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/array-view.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,259 @@
+/* Copyright (C) 2017-2021 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 COMMON_ARRAY_VIEW_H
+#define COMMON_ARRAY_VIEW_H
+
+#include "traits.h"
+#include <type_traits>
+
+/* An array_view is an abstraction that provides a non-owning view
+   over a sequence of contiguous objects.
+
+   A way to put it is that array_view is to std::vector (and
+   std::array and built-in arrays with rank==1) like std::string_view
+   is to std::string.
+
+   The main intent of array_view is to use it as function input
+   parameter type, making it possible to pass in any sequence of
+   contiguous objects, irrespective of whether the objects live on the
+   stack or heap and what actual container owns them.  Implicit
+   construction from the element type is supported too, making it easy
+   to call functions that expect an array of elements when you only
+   have one element (usually on the stack).  For example:
+
+    struct A { .... };
+    void function (gdb::array_view<A> as);
+
+    std::vector<A> std_vec = ...;
+    std::array<A, N> std_array = ...;
+    A array[] = {...};
+    A elem;
+
+    function (std_vec);
+    function (std_array);
+    function (array);
+    function (elem);
+
+   Views can be either mutable or const.  A const view is simply
+   created by specifying a const T as array_view template parameter,
+   in which case operator[] of non-const array_view objects ends up
+   returning const references.  Making the array_view itself const is
+   analogous to making a pointer itself be const.  I.e., disables
+   re-seating the view/pointer.
+
+   Since array_view objects are small (pointer plus size), and
+   designed to be trivially copyable, they should generally be passed
+   around by value.
+
+   You can find unit tests covering the whole API in
+   unittests/array-view-selftests.c.  */
+
+namespace gdb {
+
+template <typename T>
+class array_view
+{
+  /* True iff decayed T is the same as decayed U.  E.g., we want to
+     say that 'T&' is the same as 'const T'.  */
+  template <typename U>
+  using IsDecayedT = typename std::is_same<typename std::decay<T>::type,
+					   typename std::decay<U>::type>;
+
+  /* True iff decayed T is the same as decayed U, and 'U *' is
+     implicitly convertible to 'T *'.  This is a requirement for
+     several methods.  */
+  template <typename U>
+  using DecayedConvertible = gdb::And<IsDecayedT<U>,
+				      std::is_convertible<U *, T *>>;
+
+public:
+  using value_type = T;
+  using reference = T &;
+  using const_reference = const T &;
+  using size_type = size_t;
+
+  /* Default construction creates an empty view.  */
+  constexpr array_view () noexcept
+    : m_array (nullptr), m_size (0)
+  {}
+
+  /* Create an array view over a single object of the type of an
+     array_view element.  The created view as size==1.  This is
+     templated on U to allow constructing a array_view<const T> over a
+     (non-const) T.  The "convertible" requirement makes sure that you
+     can't create an array_view<T> over a const T.  */
+  template<typename U,
+	   typename = Requires<DecayedConvertible<U>>>
+  constexpr array_view (U &elem) noexcept
+    : m_array (&elem), m_size (1)
+  {}
+
+  /* Same as above, for rvalue references.  */
+  template<typename U,
+	   typename = Requires<DecayedConvertible<U>>>
+  constexpr array_view (U &&elem) noexcept
+    : m_array (&elem), m_size (1)
+  {}
+
+  /* Create an array view from a pointer to an array and an element
+     count.  */
+  template<typename U,
+	   typename = Requires<DecayedConvertible<U>>>
+  constexpr array_view (U *array, size_t size) noexcept
+    : m_array (array), m_size (size)
+  {}
+
+  /* Create an array view from a range.  This is templated on both U
+     an V to allow passing in a mix of 'const T *' and 'T *'.  */
+  template<typename U, typename V,
+	   typename = Requires<DecayedConvertible<U>>,
+	   typename = Requires<DecayedConvertible<V>>>
+  constexpr array_view (U *begin, V *end) noexcept
+    : m_array (begin), m_size (end - begin)
+  {}
+
+  /* Create an array view from an array.  */
+  template<typename U, size_t Size,
+	   typename = Requires<DecayedConvertible<U>>>
+  constexpr array_view (U (&array)[Size]) noexcept
+    : m_array (array), m_size (Size)
+  {}
+
+  /* Create an array view from a contiguous container.  E.g.,
+     std::vector and std::array.  */
+  template<typename Container,
+	   typename = Requires<gdb::Not<IsDecayedT<Container>>>,
+	   typename
+	     = Requires<std::is_convertible
+			<decltype (std::declval<Container> ().data ()),
+			 T *>>,
+	   typename
+	     = Requires<std::is_convertible
+			<decltype (std::declval<Container> ().size ()),
+			 size_type>>>
+  constexpr array_view (Container &&c) noexcept
+    : m_array (c.data ()), m_size (c.size ())
+  {}
+
+  /* Observer methods.  Some of these can't be constexpr until we
+     require C++14.  */
+  /*constexpr14*/ T *data () noexcept { return m_array; }
+  constexpr const T *data () const noexcept { return m_array; }
+
+  /*constexpr14*/ T *begin () noexcept { return m_array; }
+  constexpr const T *begin () const noexcept { return m_array; }
+
+  /*constexpr14*/ T *end () noexcept { return m_array + m_size; }
+  constexpr const T *end () const noexcept { return m_array + m_size; }
+
+  /*constexpr14*/ reference operator[] (size_t index) noexcept
+  { return m_array[index]; }
+  constexpr const_reference operator[] (size_t index) const noexcept
+  { return m_array[index]; }
+
+  constexpr size_type size () const noexcept { return m_size; }
+  constexpr bool empty () const noexcept { return m_size == 0; }
+
+  /* Slice an array view.  */
+
+  /* Return a new array view over SIZE elements starting at START.  */
+  constexpr array_view<T> slice (size_type start, size_type size) const noexcept
+  { return {m_array + start, size}; }
+
+  /* Return a new array view over all the elements after START,
+     inclusive.  */
+  constexpr array_view<T> slice (size_type start) const noexcept
+  { return {m_array + start, size () - start}; }
+
+private:
+  T *m_array;
+  size_type m_size;
+};
+
+/* Compare LHS and RHS for (deep) equality.  That is, whether LHS and
+   RHS have the same sizes, and whether each pair of elements of LHS
+   and RHS at the same position compares equal.  */
+
+template <typename T>
+bool
+operator== (const gdb::array_view<T> &lhs, const gdb::array_view<T> &rhs)
+{
+  if (lhs.size () != rhs.size ())
+    return false;
+
+  for (size_t i = 0; i < lhs.size (); i++)
+    if (!(lhs[i] == rhs[i]))
+      return false;
+
+  return true;
+}
+
+/* Compare two array_views for inequality.  */
+
+template <typename T>
+bool
+operator!= (const gdb::array_view<T> &lhs, const gdb::array_view<T> &rhs)
+{
+  return !(lhs == rhs);
+}
+
+/* Create an array view from a pointer to an array and an element
+   count.
+
+   This is useful as alternative to constructing an array_view using
+   brace initialization when the size variable you have handy is of
+   signed type, since otherwise without an explicit cast the code
+   would be ill-formed.
+
+   For example, with:
+
+     extern void foo (int, int, gdb::array_view<value *>);
+
+     value *args[2];
+     int nargs;
+     foo (1, 2, {values, nargs});
+
+   You'd get:
+
+     source.c:10: error: narrowing conversion of â€˜nargsâ€™ from â€˜intâ€™ to
+     â€˜size_t {aka long unsigned int}â€™ inside { } [-Werror=narrowing]
+
+   You could fix it by writing the somewhat distracting explicit cast:
+
+     foo (1, 2, {values, (size_t) nargs});
+
+   Or by instantiating an array_view explicitly:
+
+     foo (1, 2, gdb::array_view<value *>(values, nargs));
+
+   Or, better, using make_array_view, which has the advantage of
+   inferring the arrav_view element's type:
+
+     foo (1, 2, gdb::make_array_view (values, nargs));
+*/
+
+template<typename U>
+constexpr inline array_view<U>
+make_array_view (U *array, size_t size) noexcept
+{
+  return {array, size};
+}
+
+} /* namespace gdb */
+
+#endif
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/ax.def ./gdbsupport/ax.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/ax.def	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/ax.def	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,97 @@
+/* Definition of agent opcode values.   -*- c -*-
+   Copyright (C) 1998-2021 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/>.  */
+
+/* The actual values of the various bytecode operations.
+
+   Other independent implementations of the agent bytecode engine will
+   rely on the exact values of these enums, and may not be recompiled
+   when we change this table.  The numeric values should remain fixed
+   whenever possible.  Thus, we assign them values explicitly here (to
+   allow gaps to form safely), and the disassembly table in
+   agentexpr.h behaves like an opcode map.  If you want to see them
+   grouped logically, see doc/agentexpr.texi.
+
+   Each line is of the form:
+   
+   DEFOP (name, size, data_size, consumed, produced, opcode)
+   
+   NAME is the name of the operation.
+   SIZE is the number of argument bytes that the operation takes from
+   the bytecode stream.
+   DATA_SIZE is the size of data operated on, in bits, for operations
+   that care (ref and const).  It is zero otherwise.
+   CONSUMED is the number of stack elements consumed.
+   PRODUCED is the number of stack elements produced.
+   OPCODE is the operation's encoding.  */
+
+DEFOP (float, 0, 0, 0, 0, 0x01)
+DEFOP (add, 0, 0, 2, 1, 0x02)
+DEFOP (sub, 0, 0, 2, 1, 0x03)
+DEFOP (mul, 0, 0, 2, 1, 0x04)
+DEFOP (div_signed, 0, 0, 2, 1, 0x05)
+DEFOP (div_unsigned, 0, 0, 2, 1, 0x06)
+DEFOP (rem_signed, 0, 0, 2, 1, 0x07)
+DEFOP (rem_unsigned, 0, 0, 2, 1, 0x08)
+DEFOP (lsh, 0, 0, 2, 1, 0x09)
+DEFOP (rsh_signed, 0, 0, 2, 1, 0x0a)
+DEFOP (rsh_unsigned, 0, 0, 2, 1, 0x0b)
+DEFOP (trace, 0, 0, 2, 0, 0x0c)
+DEFOP (trace_quick, 1, 0, 1, 1, 0x0d)
+DEFOP (log_not, 0, 0, 1, 1, 0x0e)
+DEFOP (bit_and, 0, 0, 2, 1, 0x0f)
+DEFOP (bit_or, 0, 0, 2, 1, 0x10)
+DEFOP (bit_xor, 0, 0, 2, 1, 0x11)
+DEFOP (bit_not, 0, 0, 1, 1, 0x12)
+DEFOP (equal, 0, 0, 2, 1, 0x13)
+DEFOP (less_signed, 0, 0, 2, 1, 0x14)
+DEFOP (less_unsigned, 0, 0, 2, 1, 0x15)
+DEFOP (ext, 1, 0, 1, 1, 0x16)
+DEFOP (ref8, 0, 8, 1, 1, 0x17)
+DEFOP (ref16, 0, 16, 1, 1, 0x18)
+DEFOP (ref32, 0, 32, 1, 1, 0x19)
+DEFOP (ref64, 0, 64, 1, 1, 0x1a)
+DEFOP (ref_float, 0, 0, 1, 1, 0x1b)
+DEFOP (ref_double, 0, 0, 1, 1, 0x1c)
+DEFOP (ref_long_double, 0, 0, 1, 1, 0x1d)
+DEFOP (l_to_d, 0, 0, 1, 1, 0x1e)
+DEFOP (d_to_l, 0, 0, 1, 1, 0x1f)
+DEFOP (if_goto, 2, 0, 1, 0, 0x20)
+DEFOP (goto, 2, 0, 0, 0, 0x21)
+DEFOP (const8, 1, 8, 0, 1, 0x22)
+DEFOP (const16, 2, 16, 0, 1, 0x23)
+DEFOP (const32, 4, 32, 0, 1, 0x24)
+DEFOP (const64, 8, 64, 0, 1, 0x25)
+DEFOP (reg, 2, 0, 0, 1, 0x26)
+DEFOP (end, 0, 0, 0, 0, 0x27)
+DEFOP (dup, 0, 0, 1, 2, 0x28)
+DEFOP (pop, 0, 0, 1, 0, 0x29)
+DEFOP (zero_ext, 1, 0, 1, 1, 0x2a)
+DEFOP (swap, 0, 0, 2, 2, 0x2b)
+DEFOP (getv, 2, 0, 0, 1, 0x2c)
+DEFOP (setv, 2, 0, 1, 1, 0x2d)
+DEFOP (tracev, 2, 0, 0, 1, 0x2e)
+DEFOP (tracenz, 0, 0, 2, 0, 0x2f)
+DEFOP (trace16, 2, 0, 1, 1, 0x30)
+/* We need something here just to make the tables come out ok.  */
+DEFOP (invalid2, 0, 0, 0, 0, 0x31)
+/* The "consumed" number for pick is wrong, but there's no way to
+   express the right thing.  */
+DEFOP (pick, 1, 0, 0, 1, 0x32)
+DEFOP (rot, 0, 0, 3, 3, 0x33)
+/* Both the argument and consumed numbers are dynamic for this one.  */
+DEFOP (printf, 0, 0, 0, 0, 0x34)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/block-signals.h ./gdbsupport/block-signals.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/block-signals.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/block-signals.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,67 @@
+/* Block signals used by gdb
+
+   Copyright (C) 2019-2021 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/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/break-common.h ./gdbsupport/break-common.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/break-common.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/break-common.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,31 @@
+/* Data structures associated with breakpoints shared in both GDB and
+   GDBserver.
+   Copyright (C) 1992-2021 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 COMMON_BREAK_COMMON_H
+#define COMMON_BREAK_COMMON_H
+
+enum target_hw_bp_type
+  {
+    hw_write   = 0, 		/* Common  HW watchpoint */
+    hw_read    = 1, 		/* Read    HW watchpoint */
+    hw_access  = 2, 		/* Access  HW watchpoint */
+    hw_execute = 3		/* Execute HW breakpoint */
+  };
+
+#endif /* COMMON_BREAK_COMMON_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/btrace-common.cc ./gdbsupport/btrace-common.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/btrace-common.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/btrace-common.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,191 @@
+/* Copyright (C) 2014-2021 Free Software Foundation, Inc.
+
+   Contributed by Intel Corp. <markus.t.metzger@intel.com>
+
+   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"
+#include "btrace-common.h"
+
+
+/* See btrace-common.h.  */
+
+const char *
+btrace_format_string (enum btrace_format format)
+{
+  switch (format)
+    {
+    case BTRACE_FORMAT_NONE:
+      return _("No or unknown format");
+
+    case BTRACE_FORMAT_BTS:
+      return _("Branch Trace Store");
+
+    case BTRACE_FORMAT_PT:
+      return _("Intel Processor Trace");
+    }
+
+  internal_error (__FILE__, __LINE__, _("Unknown branch trace format"));
+}
+
+/* See btrace-common.h.  */
+
+const char *
+btrace_format_short_string (enum btrace_format format)
+{
+  switch (format)
+    {
+    case BTRACE_FORMAT_NONE:
+      return "unknown";
+
+    case BTRACE_FORMAT_BTS:
+      return "bts";
+
+    case BTRACE_FORMAT_PT:
+      return "pt";
+    }
+
+  internal_error (__FILE__, __LINE__, _("Unknown branch trace format"));
+}
+
+/* See btrace-common.h.  */
+
+void
+btrace_data::fini ()
+{
+  switch (format)
+    {
+    case BTRACE_FORMAT_NONE:
+      /* Nothing to do.  */
+      return;
+
+    case BTRACE_FORMAT_BTS:
+      delete variant.bts.blocks;
+      variant.bts.blocks = nullptr;
+      return;
+
+    case BTRACE_FORMAT_PT:
+      xfree (variant.pt.data);
+      return;
+    }
+
+  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
+}
+
+/* See btrace-common.h.  */
+
+bool
+btrace_data::empty () const
+{
+  switch (format)
+    {
+    case BTRACE_FORMAT_NONE:
+      return true;
+
+    case BTRACE_FORMAT_BTS:
+      return variant.bts.blocks->empty ();
+
+    case BTRACE_FORMAT_PT:
+      return (variant.pt.size == 0);
+    }
+
+  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
+}
+
+/* See btrace-common.h.  */
+
+void
+btrace_data::clear ()
+{
+  fini ();
+  format = BTRACE_FORMAT_NONE;
+}
+
+/* See btrace-common.h.  */
+
+int
+btrace_data_append (struct btrace_data *dst,
+		    const struct btrace_data *src)
+{
+  switch (src->format)
+    {
+    case BTRACE_FORMAT_NONE:
+      return 0;
+
+    case BTRACE_FORMAT_BTS:
+      switch (dst->format)
+	{
+	default:
+	  return -1;
+
+	case BTRACE_FORMAT_NONE:
+	  dst->format = BTRACE_FORMAT_BTS;
+	  dst->variant.bts.blocks = new std::vector<btrace_block>;
+
+	  /* Fall-through.  */
+	case BTRACE_FORMAT_BTS:
+	  {
+	    unsigned int blk;
+
+	    /* We copy blocks in reverse order to have the oldest block at
+	       index zero.  */
+	    blk = src->variant.bts.blocks->size ();
+	    while (blk != 0)
+	      {
+		const btrace_block &block
+		  = src->variant.bts.blocks->at (--blk);
+		dst->variant.bts.blocks->push_back (block);
+	      }
+	  }
+	}
+      return 0;
+
+    case BTRACE_FORMAT_PT:
+      switch (dst->format)
+	{
+	default:
+	  return -1;
+
+	case BTRACE_FORMAT_NONE:
+	  dst->format = BTRACE_FORMAT_PT;
+	  dst->variant.pt.data = NULL;
+	  dst->variant.pt.size = 0;
+
+	  /* fall-through.  */
+	case BTRACE_FORMAT_PT:
+	  {
+	    gdb_byte *data;
+	    size_t size;
+
+	    size = src->variant.pt.size + dst->variant.pt.size;
+	    data = (gdb_byte *) xmalloc (size);
+
+	    if (dst->variant.pt.size > 0)
+	      memcpy (data, dst->variant.pt.data, dst->variant.pt.size);
+	    memcpy (data + dst->variant.pt.size, src->variant.pt.data,
+		    src->variant.pt.size);
+
+	    xfree (dst->variant.pt.data);
+
+	    dst->variant.pt.data = data;
+	    dst->variant.pt.size = size;
+	  }
+	}
+      return 0;
+    }
+
+  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/btrace-common.h ./gdbsupport/btrace-common.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/btrace-common.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/btrace-common.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,263 @@
+/* Branch trace support for GDB, the GNU debugger.
+
+   Copyright (C) 2013-2021 Free Software Foundation, Inc.
+
+   Contributed by Intel Corp. <markus.t.metzger@intel.com>.
+
+   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 COMMON_BTRACE_COMMON_H
+#define COMMON_BTRACE_COMMON_H
+
+/* Branch tracing (btrace) is a per-thread control-flow execution trace of the
+   inferior.  For presentation purposes, the branch trace is represented as a
+   list of sequential control-flow blocks, one such list per thread.  */
+
+/* A branch trace block.
+
+   This represents a block of sequential control-flow.  Adjacent blocks will be
+   connected via calls, returns, or jumps.  The latter can be direct or
+   indirect, conditional or unconditional.  Branches can further be
+   asynchronous, e.g. interrupts.  */
+struct btrace_block
+{
+  /* The address of the first byte of the first instruction in the block.
+     The address may be zero if we do not know the beginning of this block,
+     such as for the first block in a delta trace.  */
+  CORE_ADDR begin;
+
+  /* The address of the first byte of the last instruction in the block.  */
+  CORE_ADDR end;
+
+  /* Simple constructor.  */
+  btrace_block (CORE_ADDR begin, CORE_ADDR end)
+    : begin (begin),
+      end (end)
+  {
+    /* Nothing.  */
+  }
+};
+
+/* Enumeration of btrace formats.  */
+
+enum btrace_format
+{
+  /* No branch trace format.  */
+  BTRACE_FORMAT_NONE,
+
+  /* Branch trace is in Branch Trace Store (BTS) format.
+     Actually, the format is a sequence of blocks derived from BTS.  */
+  BTRACE_FORMAT_BTS,
+
+  /* Branch trace is in Intel Processor Trace format.  */
+  BTRACE_FORMAT_PT
+};
+
+/* An enumeration of cpu vendors.  */
+
+enum btrace_cpu_vendor
+{
+  /* We do not know this vendor.  */
+  CV_UNKNOWN,
+
+  /* Intel.  */
+  CV_INTEL,
+
+  /* AMD.  */
+  CV_AMD
+};
+
+/* A cpu identifier.  */
+
+struct btrace_cpu
+{
+  /* The processor vendor.  */
+  enum btrace_cpu_vendor vendor;
+
+  /* The cpu family.  */
+  unsigned short family;
+
+  /* The cpu model.  */
+  unsigned char model;
+
+  /* The cpu stepping.  */
+  unsigned char stepping;
+};
+
+/* A BTS configuration.  */
+
+struct btrace_config_bts
+{
+  /* The size of the branch trace buffer in bytes.
+
+     This is unsigned int and not size_t since it is registered as
+     control variable for "set record btrace bts buffer-size".  */
+  unsigned int size;
+};
+
+/* An Intel Processor Trace configuration.  */
+
+struct btrace_config_pt
+{
+  /* The size of the branch trace buffer in bytes.
+
+     This is unsigned int and not size_t since it is registered as
+     control variable for "set record btrace pt buffer-size".  */
+  unsigned int size;
+};
+
+/* A branch tracing configuration.
+
+   This describes the requested configuration as well as the actually
+   obtained configuration.
+   We describe the configuration for all different formats so we can
+   easily switch between formats.  */
+
+struct btrace_config
+{
+  /* The branch tracing format.  */
+  enum btrace_format format;
+
+  /* The BTS format configuration.  */
+  struct btrace_config_bts bts;
+
+  /* The Intel Processor Trace format configuration.  */
+  struct btrace_config_pt pt;
+};
+
+/* Branch trace in BTS format.  */
+struct btrace_data_bts
+{
+  /* Branch trace is represented as a vector of branch trace blocks starting
+     with the most recent block.  This needs to be a pointer as we place
+     btrace_data_bts into a union.  */
+  std::vector<btrace_block> *blocks;
+};
+
+/* Configuration information to go with the trace data.  */
+struct btrace_data_pt_config
+{
+  /* The processor on which the trace has been collected.  */
+  struct btrace_cpu cpu;
+};
+
+/* Branch trace in Intel Processor Trace format.  */
+struct btrace_data_pt
+{
+  /* Some configuration information to go with the data.  */
+  struct btrace_data_pt_config config;
+
+  /* The trace data.  */
+  gdb_byte *data;
+
+  /* The size of DATA in bytes.  */
+  size_t size;
+};
+
+/* The branch trace data.  */
+struct btrace_data
+{
+  btrace_data () = default;
+
+  ~btrace_data ()
+  {
+    fini ();
+  }
+
+  btrace_data &operator= (btrace_data &&other)
+  {
+    if (this != &other)
+      {
+	fini ();
+	format = other.format;
+	variant = other.variant;
+	other.format = BTRACE_FORMAT_NONE;
+      }
+    return *this;
+  }
+
+  /* Return true if this is empty; false otherwise.  */
+  bool empty () const;
+
+  /* Clear this object.  */
+  void clear ();
+
+  enum btrace_format format = BTRACE_FORMAT_NONE;
+
+  union
+  {
+    /* Format == BTRACE_FORMAT_BTS.  */
+    struct btrace_data_bts bts;
+
+    /* Format == BTRACE_FORMAT_PT.  */
+    struct btrace_data_pt pt;
+  } variant;
+
+private:
+
+  DISABLE_COPY_AND_ASSIGN (btrace_data);
+
+  void fini ();
+};
+
+/* Target specific branch trace information.  */
+struct btrace_target_info;
+
+/* Enumeration of btrace read types.  */
+
+enum btrace_read_type
+{
+  /* Send all available trace.  */
+  BTRACE_READ_ALL,
+
+  /* Send all available trace, if it changed.  */
+  BTRACE_READ_NEW,
+
+  /* Send the trace since the last request.  This will fail if the trace
+     buffer overflowed.  */
+  BTRACE_READ_DELTA
+};
+
+/* Enumeration of btrace errors.  */
+
+enum btrace_error
+{
+  /* No error.  Everything is OK.  */
+  BTRACE_ERR_NONE,
+
+  /* An unknown error.  */
+  BTRACE_ERR_UNKNOWN,
+
+  /* Branch tracing is not supported on this system.  */
+  BTRACE_ERR_NOT_SUPPORTED,
+
+  /* The branch trace buffer overflowed; no delta read possible.  */
+  BTRACE_ERR_OVERFLOW
+};
+
+/* Return a string representation of FORMAT.  */
+extern const char *btrace_format_string (enum btrace_format format);
+
+/* Return an abbreviation string representation of FORMAT.  */
+extern const char *btrace_format_short_string (enum btrace_format format);
+
+/* Append the branch trace data from SRC to the end of DST.
+   Both SRC and DST must use the same format.
+   Returns zero on success; a negative number otherwise.  */
+extern int btrace_data_append (struct btrace_data *dst,
+			       const struct btrace_data *src);
+
+#endif /* COMMON_BTRACE_COMMON_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/buffer.cc ./gdbsupport/buffer.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/buffer.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/buffer.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,178 @@
+/* A simple growing buffer for GDB.
+  
+   Copyright (C) 2009-2021 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"
+#include "xml-utils.h"
+#include "buffer.h"
+#include "inttypes.h"
+void
+buffer_grow (struct buffer *buffer, const char *data, size_t size)
+{
+  char *new_buffer;
+  size_t new_buffer_size;
+
+  if (size == 0)
+    return;
+
+  new_buffer_size = buffer->buffer_size;
+
+  if (new_buffer_size == 0)
+    new_buffer_size = 1;
+
+  while (buffer->used_size + size > new_buffer_size)
+    new_buffer_size *= 2;
+  new_buffer = (char *) xrealloc (buffer->buffer, new_buffer_size);
+  memcpy (new_buffer + buffer->used_size, data, size);
+  buffer->buffer = new_buffer;
+  buffer->buffer_size = new_buffer_size;
+  buffer->used_size += size;
+}
+
+void
+buffer_free (struct buffer *buffer)
+{
+  if (!buffer)
+    return;
+
+  xfree (buffer->buffer);
+  buffer->buffer = NULL;
+  buffer->buffer_size = 0;
+  buffer->used_size = 0;
+}
+
+void
+buffer_init (struct buffer *buffer)
+{
+  memset (buffer, 0, sizeof (*buffer));
+}
+
+char*
+buffer_finish (struct buffer *buffer)
+{
+  char *ret = buffer->buffer;
+  buffer->buffer = NULL;
+  buffer->buffer_size = 0;
+  buffer->used_size = 0;
+  return ret;
+}
+
+void
+buffer_xml_printf (struct buffer *buffer, const char *format, ...)
+{
+  va_list ap;
+  const char *f;
+  const char *prev;
+  int percent = 0;
+
+  va_start (ap, format);
+
+  prev = format;
+  for (f = format; *f; f++)
+    {
+      if (percent)
+	{
+	  char buf[32];
+	  char *str = buf;
+	  const char *f_old = f;
+	  
+	  switch (*f)
+	    {
+	    case 's':
+	      str = va_arg (ap, char *);
+	      break;
+	    case 'd':
+	      sprintf (str, "%d", va_arg (ap, int));
+	      break;
+	    case 'u':
+	      sprintf (str, "%u", va_arg (ap, unsigned int));
+	      break;
+	    case 'x':
+	      sprintf (str, "%x", va_arg (ap, unsigned int));
+	      break;
+	    case 'o':
+	      sprintf (str, "%o", va_arg (ap, unsigned int));
+	      break;
+	    case 'l':
+	      f++;
+	      switch (*f)
+		{
+		case 'd':
+		  sprintf (str, "%ld", va_arg (ap, long));
+		  break;
+		case 'u':
+		  sprintf (str, "%lu", va_arg (ap, unsigned long));
+		  break;
+		case 'x':
+		  sprintf (str, "%lx", va_arg (ap, unsigned long));
+		  break;
+		case 'o':
+		  sprintf (str, "%lo", va_arg (ap, unsigned long));
+		  break;
+		case 'l':
+		  f++;
+		  switch (*f)
+		    {
+		    case 'd':
+		      sprintf (str, "%" PRId64,
+			       (int64_t) va_arg (ap, long long));
+		      break;
+		    case 'u':
+		      sprintf (str, "%" PRIu64,
+			       (uint64_t) va_arg (ap, unsigned long long));
+		      break;
+		    case 'x':
+		      sprintf (str, "%" PRIx64,
+			       (uint64_t) va_arg (ap, unsigned long long));
+		      break;
+		    case 'o':
+		      sprintf (str, "%" PRIo64,
+			       (uint64_t) va_arg (ap, unsigned long long));
+		      break;
+		    default:
+		      str = 0;
+		      break;
+		    }
+		  break;
+		default:
+		  str = 0;
+		  break;
+		}
+	      break;
+	    default:
+	      str = 0;
+	      break;
+	    }
+
+	  if (str)
+	    {
+	      buffer_grow (buffer, prev, f_old - prev - 1);
+	      std::string p = xml_escape_text (str);
+	      buffer_grow_str (buffer, p.c_str ());
+	      prev = f + 1;
+	    }
+	  percent = 0;
+	}
+      else if (*f == '%')
+	percent = 1;
+    }
+
+  buffer_grow_str (buffer, prev);
+  va_end (ap);
+}
+
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/buffer.h ./gdbsupport/buffer.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/buffer.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/buffer.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,68 @@
+/* A simple growing buffer for GDB.
+  
+   Copyright (C) 2009-2021 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 COMMON_BUFFER_H
+#define COMMON_BUFFER_H
+
+struct buffer
+{
+  char *buffer;
+  size_t buffer_size; /* allocated size */
+  size_t used_size; /* actually used size */
+};
+
+/* Append DATA of size SIZE to the end of BUFFER.  Grows the buffer to
+   accommodate the new data.  */
+void buffer_grow (struct buffer *buffer, const char *data, size_t size);
+
+/* Append C to the end of BUFFER.  Grows the buffer to accommodate the
+   new data.  */
+
+static inline void
+buffer_grow_char (struct buffer *buffer, char c)
+{
+  buffer_grow (buffer, &c, 1);
+}
+
+/* Release any memory held by BUFFER.  */
+void buffer_free (struct buffer *buffer);
+
+/* Initialize BUFFER.  BUFFER holds no memory afterwards.  */
+void buffer_init (struct buffer *buffer);
+
+/* Return a pointer into BUFFER data, effectively transferring
+   ownership of the buffer memory to the caller.  Calling buffer_free
+   afterwards has no effect on the returned data.  */
+char* buffer_finish (struct buffer *buffer);
+
+/* Simple printf to buffer function.  Current implemented formatters:
+   %s - grow an xml escaped text in BUFFER.
+   %d - grow an signed integer in BUFFER.
+   %u - grow an unsigned integer in BUFFER.
+   %x - grow an unsigned integer formatted in hexadecimal in BUFFER.
+   %o - grow an unsigned integer formatted in octal in BUFFER.  */
+void buffer_xml_printf (struct buffer *buffer, const char *format, ...)
+  ATTRIBUTE_PRINTF (2, 3);
+
+#define buffer_grow_str(BUFFER,STRING)		\
+  buffer_grow (BUFFER, STRING, strlen (STRING))
+#define buffer_grow_str0(BUFFER,STRING)			\
+  buffer_grow (BUFFER, STRING, strlen (STRING) + 1)
+
+#endif /* COMMON_BUFFER_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/byte-vector.h ./gdbsupport/byte-vector.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/byte-vector.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/byte-vector.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,63 @@
+/* Copyright (C) 2017-2021 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 COMMON_BYTE_VECTOR_H
+#define COMMON_BYTE_VECTOR_H
+
+#include "gdbsupport/def-vector.h"
+
+namespace gdb {
+
+/* byte_vector is a gdb_byte std::vector with a custom allocator that
+   unlike std::vector<gdb_byte> does not zero-initialize new elements
+   by default when the vector is created/resized.  This is what you
+   usually want when working with byte buffers, since if you're
+   creating or growing a buffer you'll most surely want to fill it in
+   with data, in which case zero-initialization would be a
+   pessimization.  For example:
+
+     gdb::byte_vector buf (some_large_size);
+     fill_with_data (buf.data (), buf.size ());
+
+   On the odd case you do need zero initialization, then you can still
+   call the overloads that specify an explicit value, like:
+
+     gdb::byte_vector buf (some_initial_size, 0);
+     buf.resize (a_bigger_size, 0);
+
+   (Or use std::vector<gdb_byte> instead.)
+
+   Note that unlike std::vector<gdb_byte>, function local
+   gdb::byte_vector objects constructed with an initial size like:
+
+     gdb::byte_vector buf (some_size);
+     fill_with_data (buf.data (), buf.size ());
+
+   usually compile down to the exact same as:
+
+     std::unique_ptr<byte[]> buf (new gdb_byte[some_size]);
+     fill_with_data (buf.get (), some_size);
+
+   with the former having the advantage of being a bit more readable,
+   and providing the whole std::vector API, if you end up needing it.
+*/
+using byte_vector = gdb::def_vector<gdb_byte>;
+using char_vector = gdb::def_vector<char>;
+
+} /* namespace gdb */
+
+#endif /* COMMON_DEF_VECTOR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/ChangeLog ./gdbsupport/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/ChangeLog	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/ChangeLog	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,286 @@
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
+
+	* eintr.h: New file.
+
+2020-08-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* selftest.h (run_tests): Change parameter to array_view.
+	* selftest.c (run_tests): Change parameter to array_view and use
+	it.
+
+2020-07-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* Makefile.am (AM_CPPFLAGS): Add LARGEFILE_CPPFLAGS.
+	* common.m4 (GDB_AC_COMMON): Use BFD_SYS_PROCFS_H to check for
+	<sys/procfs.h>.
+	* Makefile.in: Regenerate.
+	* configure, config.in: Regenerate.
+
+2020-07-28  Tom de Vries  <tdevries@suse.de>
+
+	PR build/26281
+	* gdb_optional.h (class optional): Add volatile member to union
+	contaning m_dummy and m_item.
+
+2020-07-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tdesc.h (struct target_desc_deleter): Moved here
+	from gdb/target-descriptions.h, extend comment.
+	(target_desc_up): Likewise.
+
+2020-06-30  Tom Tromey  <tromey@adacore.com>
+
+	PR build/26183:
+	* gdb_string_view.h (basic_string_view::to_string): Remove.
+	(gdb::to_string): New function.
+
+2020-06-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* tdesc.h (class print_xml_feature) <add_line>: Add
+	ATTRIBUTE_PRINTF.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tdesc.cc (print_xml_feature::visit_pre): Use add_line to add
+	output content, and call indent as needed in all overloaded
+	variants.
+	(print_xml_feature::visit_post): Likewise.
+	(print_xml_feature::visit): Likewise.
+	(print_xml_feature::add_line): Two new overloaded functions.
+	* tdesc.h (print_xml_feature::indent): New member function.
+	(print_xml_feature::add_line): Two new overloaded member
+	functions.
+	(print_xml_feature::m_depth): New member variable.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tdesc.cc (print_xml_feature::visit_pre): Print compatible
+	information.
+	* tdesc.h (struct tdesc_compatible_info): Declare new struct.
+	(tdesc_compatible_info_up): New typedef.
+	(tdesc_compatible_info_list): Declare new function.
+	(tdesc_compatible_info_arch_name): Declare new function.
+
+2020-05-25  Michael Weghorn  <m.weghorn@posteo.de>
+
+	* common-utils.cc, common-utils.h (stringify_argv): Drop
+	now unused function stringify_argv
+
+2020-05-25  Michael Weghorn  <m.weghorn@posteo.de>
+
+	* common-inferior.cc, common-inferior.h (construct_inferior_arguments):
+	Adapt to take a gdb::array_view<char * const> parameter.
+	Adapt call site.
+
+2020-05-25  Michael Weghorn  <m.weghorn@posteo.de>
+
+	* common-inferior.cc, common-inferior.h (construct_inferior_arguments):
+	Adapt to handle zero args and return a std::string.
+	Adapt call site.
+
+2020-05-25  Michael Weghorn  <m.weghorn@posteo.de>
+
+	* common-inferior.h, common-inferior.cc: (construct_inferior_arguments):
+	Move function here from gdb/infcmd.c, gdb/inferior.h
+
+2020-05-14  Kevin Buettner  <kevinb@redhat.com>
+
+	* btrace-common.h (btrace_cpu_vendor): Add CV_AMD.
+
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* common-regcache.h (regcache_read_pc_protected): New function
+	declaration.
+
+2020-04-28  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdb-sigmask.h: Fix typo (pthead_sigmask -> pthread_sigmask).
+
+2020-04-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* common-defs.h: Include cstdlib.h.
+
+2020-04-20  Tom Tromey  <tromey@adacore.com>
+
+	* scoped_mmap.h (scoped_mmap): Mark move constructor as noexcept.
+	Use initialization style.  Don't call destroy.
+	* scoped_fd.h (class scoped_fd): Mark move constructor as
+	noexcept.
+	* gdb_ref_ptr.h (class ref_ptr): Mark move constructor as
+	noexcept.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* event-loop.c: Move comment.  Remove obsolete 	comment.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* event-loop.h: Move from ../gdb/.
+	* event-loop.cc: Move from ../gdb/.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* errors.h (flush_streams): Declare.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* gdb_select.h: Move from ../gdb/.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* config.in, configure: Rebuild.
+	* common.m4 (GDB_AC_COMMON): Check for poll.h, sys/poll.h,
+	sys/select.h, and poll.
+
+2020-03-31  Tom Tromey  <tromey@adacore.com>
+
+	* btrace-common.cc (btrace_data_append): Conditionally call
+	memcpy.
+
+2020-03-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* create-version.sh: Resolve issues highlighted by shellcheck.
+
+2020-03-20  Simon Marchi  <simon.marchi@efficios.com>
+
+	* config.in: Re-generate.
+	* configure: Re-generate.
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* common-defs.h: Include alloca.h if HAVE_ALLOCA_H is defined.
+
+2020-03-12  Tom Tromey  <tom@tromey.com>
+
+	* common-types.h: Remove GDBSERVER code.
+	(gdb_byte, CORE_ADDR, LONGEST, ULONGEST): Redefine.
+	* common-defs.h: Remove GDBSERVER code.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* selftest.m4: Moved from gdb/.
+	* acinclude.m4: Update path to selftest.m4.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure.ac: Don't source bfd/development.sh.
+	* common.m4: Source bfd/development.sh.
+	* configure: Re-generate.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+
+2020-03-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+	* warning.m4: Enable -Wmissing-prototypes.
+
+2020-03-08  Tom Tromey  <tom@tromey.com>
+
+	* gdb_binary_search.h: Fix two typos.
+
+2020-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* .dir-locals.el: New file.
+
+2020-03-05  Vyacheslav Petrishchev  <vyachemail@gmail.com>
+
+	* configure.ac: Added call development.sh.
+	* configure: Regenerate.
+
+2020-03-05  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* .gitattributes: New file.
+
+2020-03-03  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in: Re-generate.
+
+2020-02-28  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* gdb-dlfcn.h (gdb_dlopen): Update comment.
+
+2020-02-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* configure: Regenerate.
+
+2020-02-14  Tom Tromey  <tom@tromey.com>
+
+	* common-defs.h: Change path to gnulib/config.h.
+
+2020-02-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.am: Rename source files from .c to .cc.
+	(CC, CFLAGS): Don't override.
+	(AM_CFLAGS): Rename to ...
+	(AM_CXXFLAGS): ... this.
+	* Makefile.in: Re-generate.
+	* %.c: Rename to %.cc.
+
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* warning.m4: Add -Wstrict-null-sentinel.
+	* configure: Re-generate.
+
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* warning.m4: Move here, from gdb/warning.m4.
+	* acinclude.m4: Update warning.m4 path.
+	* Makefile.in: Re-generate.
+
+2020-02-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* acinclude.m4: Include ../gdb/warning.m4.
+	* configure.ac: Use AM_GDB_WARNINGS.
+	* Makefile.am: Set AM_CFLAGS to WARN_CFLAGS and WERROR_CFLAGS.
+	* Makefile.in: Re-generate.
+	* configure: Re-generate.
+
+2020-02-10  Tom de Vries  <tdevries@suse.de>
+
+	* environ.c (gdb_environ::set): Cast concat NULL sentinel to char *.
+
+2020-01-24  Christian Biesinger  <cbiesinger@google.com>
+
+	* thread-pool.c (set_thread_name): Add an overload for the NetBSD
+	version of pthread_setname_np.
+
+2020-01-17   Pedro Alves  <palves@redhat.com>
+
+	* Makefile.am: Append CXX_DIALECT to CXX.
+	* Makefile.in: Regenerate.
+
+2020-01-17  Pedro Alves  <palves@redhat.com>
+
+	* configure.ac: Generate config.h instead of support-config.h.
+	* common-defs.h: Include <gdbsupport/config.h> instead of
+	<gdbsupport/support-config.h>.
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in: Rebuild.
+	* Makefile.am (check-defines): New target.
+	* check-defines.el: New file.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* configure, Makefile.in, aclocal.m4, common.m4, config.in:
+	Rebuild.
+	* common.m4 (GDB_AC_COMMON): Move many checks from
+	gdb/configure.ac.
+	* acinclude.m4: Include bfd.m4, ptrace.m4.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* common-defs.h: Add GDBSERVER case.  Update includes.
+	* acinclude.m4, aclocal.m4, config.in, configure, configure.ac,
+	Makefile.am, Makefile.in, README: New files.
+	* Moved from ../gdb/gdbsupport/
+
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/check-defines.el ./gdbsupport/check-defines.el
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/check-defines.el	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/check-defines.el	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,77 @@
+;; Verify that preprocessor symbols are defined in config.in.
+
+;; Copyright (C) 2020-2021 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/>.
+
+;; To use:
+;;   cd gdbsupport
+;;   emacs --script check-defines.el
+
+(require 'cl-lib)
+
+(setq-default case-fold-search nil)
+
+;; The currently recognized macros.
+(defconst check-regexp "\\_<\\(\\(HAVE\\|PTRACE_TYPE\\|SIZEOF\\)_[a-zA-Z0-9_]+\\)\\_>")
+
+(defvar check-seen 0)
+
+;; Whitelist.  These are things that have names like autoconf-created
+;; macros, but that are managed directly in the code.
+(put (intern "HAVE_USEFUL_SBRK") :check-ok t)
+(put (intern "HAVE_SOCKETS") :check-ok t)
+(put (intern "HAVE_F_GETFD") :check-ok t)
+(put (intern "HAVE_IS_TRIVIALLY_COPYABLE") :check-ok t)
+(put (intern "HAVE_IS_TRIVIALLY_CONSTRUCTIBLE") :check-ok t)
+(put (intern "HAVE_DOS_BASED_FILE_SYSTEM") :check-ok t)
+
+(defun check-read-config.in (file)
+  (save-excursion
+    (find-file-read-only file)
+    (goto-char (point-min))
+    (while (re-search-forward "^#undef \\(.+\\)$" nil t)
+      (let ((name (match-string 1)))
+	(put (intern name) :check-ok t)))))
+
+(defun check-one-file (file)
+  (save-excursion
+    (find-file-read-only file)
+    (goto-char (point-min))
+    (while (re-search-forward check-regexp nil t)
+      (let ((name (match-string 1)))
+	(unless (get (intern name) :check-ok)
+	  (save-excursion
+	    (goto-char (match-beginning 0))
+	    (cl-incf check-seen)
+	    (message "%s:%d:%d: error: name %s not defined"
+		     file
+		     (line-number-at-pos)
+		     (current-column)
+		     name)))))))
+
+(defun check-directory (dir)
+  (dolist (file (directory-files dir t "\\.[ch]$"))
+    (check-one-file file)))
+
+(check-read-config.in "config.in")
+(check-read-config.in "../gnulib/config.in")
+(check-directory ".")
+(check-directory "../gdb/nat")
+(check-directory "../gdb/target")
+
+(when (> check-seen 0)
+  (message "%d errors seen" check-seen))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/cleanups.cc ./gdbsupport/cleanups.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/cleanups.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/cleanups.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,144 @@
+/* Cleanup routines for GDB, the GNU debugger.
+
+   Copyright (C) 1986-2021 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"
+#include "cleanups.h"
+
+/* The cleanup list records things that have to be undone
+   if an error happens (descriptors to be closed, memory to be freed, etc.)
+   Each link in the chain records a function to call and an
+   argument to give it.
+
+   Use make_cleanup to add an element to the cleanup chain.
+   Use do_cleanups to do all cleanup actions back to a given
+   point in the chain.  Use discard_cleanups to remove cleanups
+   from the chain back to a given point, not doing them.
+
+   If the argument is pointer to allocated memory, then you need
+   to additionally set the 'free_arg' member to a function that will
+   free that memory.  This function will be called both when the cleanup
+   is executed and when it's discarded.  */
+
+struct cleanup
+{
+  struct cleanup *next;
+  void (*function) (void *);
+  void (*free_arg) (void *);
+  void *arg;
+};
+
+/* Used to mark the end of a cleanup chain.
+   The value is chosen so that it:
+   - is non-NULL so that make_cleanup never returns NULL,
+   - causes a segv if dereferenced
+     [though this won't catch errors that a value of, say,
+     ((struct cleanup *) -1) will]
+   - displays as something useful when printed in gdb.
+   This is const for a bit of extra robustness.
+   It is initialized to coax gcc into putting it into .rodata.
+   All fields are initialized to survive -Wextra.  */
+static const struct cleanup sentinel_cleanup = { 0, 0, 0, 0 };
+
+/* Handy macro to use when referring to sentinel_cleanup.  */
+#define SENTINEL_CLEANUP ((struct cleanup *) &sentinel_cleanup)
+
+/* Chain of cleanup actions established with make_final_cleanup,
+   to be executed when gdb exits.  */
+static struct cleanup *final_cleanup_chain = SENTINEL_CLEANUP;
+
+/* Main worker routine to create a cleanup.
+   PMY_CHAIN is a pointer to either cleanup_chain or final_cleanup_chain.
+   FUNCTION is the function to call to perform the cleanup.
+   ARG is passed to FUNCTION when called.
+   FREE_ARG, if non-NULL, is called after the cleanup is performed.
+
+   The result is a pointer to the previous chain pointer
+   to be passed later to do_cleanups or discard_cleanups.  */
+
+static struct cleanup *
+make_my_cleanup2 (struct cleanup **pmy_chain, make_cleanup_ftype *function,
+		  void *arg,  void (*free_arg) (void *))
+{
+  struct cleanup *newobj = XNEW (struct cleanup);
+  struct cleanup *old_chain = *pmy_chain;
+
+  newobj->next = *pmy_chain;
+  newobj->function = function;
+  newobj->free_arg = free_arg;
+  newobj->arg = arg;
+  *pmy_chain = newobj;
+
+  gdb_assert (old_chain != NULL);
+  return old_chain;
+}
+
+/* Worker routine to create a cleanup without a destructor.
+   PMY_CHAIN is a pointer to either cleanup_chain or final_cleanup_chain.
+   FUNCTION is the function to call to perform the cleanup.
+   ARG is passed to FUNCTION when called.
+
+   The result is a pointer to the previous chain pointer
+   to be passed later to do_cleanups or discard_cleanups.  */
+
+static struct cleanup *
+make_my_cleanup (struct cleanup **pmy_chain, make_cleanup_ftype *function,
+		 void *arg)
+{
+  return make_my_cleanup2 (pmy_chain, function, arg, NULL);
+}
+
+/* Add a new cleanup to the final cleanup_chain,
+   and return the previous chain pointer
+   to be passed later to do_cleanups or discard_cleanups.
+   Args are FUNCTION to clean up with, and ARG to pass to it.  */
+
+struct cleanup *
+make_final_cleanup (make_cleanup_ftype *function, void *arg)
+{
+  return make_my_cleanup (&final_cleanup_chain, function, arg);
+}
+
+/* Worker routine to perform cleanups.
+   PMY_CHAIN is a pointer to either cleanup_chain or final_cleanup_chain.
+   OLD_CHAIN is the result of a "make" cleanup routine.
+   Cleanups are performed until we get back to the old end of the chain.  */
+
+static void
+do_my_cleanups (struct cleanup **pmy_chain,
+		struct cleanup *old_chain)
+{
+  struct cleanup *ptr;
+
+  while ((ptr = *pmy_chain) != old_chain)
+    {
+      *pmy_chain = ptr->next;	/* Do this first in case of recursion.  */
+      (*ptr->function) (ptr->arg);
+      if (ptr->free_arg)
+	(*ptr->free_arg) (ptr->arg);
+      xfree (ptr);
+    }
+}
+
+/* Discard final cleanups and do the actions they describe.  */
+
+void
+do_final_cleanups ()
+{
+  do_my_cleanups (&final_cleanup_chain, SENTINEL_CLEANUP);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/cleanups.h ./gdbsupport/cleanups.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/cleanups.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/cleanups.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,39 @@
+/* Cleanups.
+   Copyright (C) 1986-2021 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 COMMON_CLEANUPS_H
+#define COMMON_CLEANUPS_H
+
+/* Outside of cleanups.c, this is an opaque type.  */
+struct cleanup;
+
+/* NOTE: cagney/2000-03-04: This typedef is strictly for the
+   make_cleanup function declarations below.  Do not use this typedef
+   as a cast when passing functions into the make_cleanup() code.
+   Instead either use a bounce function or add a wrapper function.
+   Calling a f(char*) function with f(void*) is non-portable.  */
+typedef void (make_cleanup_ftype) (void *);
+
+/* Function type for the dtor in make_cleanup_dtor.  */
+typedef void (make_cleanup_dtor_ftype) (void *);
+
+extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
+
+extern void do_final_cleanups ();
+
+#endif /* COMMON_CLEANUPS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-debug.cc ./gdbsupport/common-debug.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-debug.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-debug.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,37 @@
+/* Debug printing functions.
+
+   Copyright (C) 2014-2021 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"
+#include "common-debug.h"
+
+/* See gdbsupport/common-debug.h.  */
+
+bool show_debug_regs;
+
+/* See gdbsupport/common-debug.h.  */
+
+void
+debug_printf (const char *fmt, ...)
+{
+  va_list ap;
+
+  va_start (ap, fmt);
+  debug_vprintf (fmt, ap);
+  va_end (ap);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-debug.h ./gdbsupport/common-debug.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-debug.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-debug.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,41 @@
+/* Declarations for debug printing functions.
+
+   Copyright (C) 2014-2021 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 COMMON_COMMON_DEBUG_H
+#define COMMON_COMMON_DEBUG_H
+
+/* Set to true to enable debugging of hardware breakpoint/
+   watchpoint support code.  */
+
+extern bool show_debug_regs;
+
+/* Print a formatted message to the appropriate channel for
+   debugging output for the client.  */
+
+extern void debug_printf (const char *format, ...)
+     ATTRIBUTE_PRINTF (1, 2);
+
+/* Print a formatted message to the appropriate channel for
+   debugging output for the client.  This function must be
+   provided by the client.  */
+
+extern void debug_vprintf (const char *format, va_list ap)
+     ATTRIBUTE_PRINTF (1, 0);
+
+#endif /* COMMON_COMMON_DEBUG_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-defs.h ./gdbsupport/common-defs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-defs.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-defs.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,153 @@
+/* Common definitions.
+
+   Copyright (C) 1986-2021 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 COMMON_COMMON_DEFS_H
+#define COMMON_COMMON_DEFS_H
+
+#include <gdbsupport/config.h>
+
+#undef PACKAGE_NAME
+#undef PACKAGE
+#undef PACKAGE_VERSION
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+
+#include "gnulib/config.h"
+
+/* From:
+    https://www.gnu.org/software/gnulib/manual/html_node/stdint_002eh.html
+
+   "On some hosts that predate C++11, when using C++ one must define
+   __STDC_CONSTANT_MACROS to make visible the definitions of constant
+   macros such as INTMAX_C, and one must define __STDC_LIMIT_MACROS to
+   make visible the definitions of limit macros such as INTMAX_MAX.".
+
+   And:
+    https://www.gnu.org/software/gnulib/manual/html_node/inttypes_002eh.html
+
+   "On some hosts that predate C++11, when using C++ one must define
+   __STDC_FORMAT_MACROS to make visible the declarations of format
+   macros such as PRIdMAX."
+
+   Must do this before including any system header, since other system
+   headers may include stdint.h/inttypes.h.  */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
+#define __STDC_FORMAT_MACROS 1
+
+/* Some distros enable _FORTIFY_SOURCE by default, which on occasion
+   has caused build failures with -Wunused-result when a patch is
+   developed on a distro that does not enable _FORTIFY_SOURCE.  We
+   enable it here in order to try to catch these problems earlier;
+   plus this seems like a reasonable safety measure.  The check for
+   optimization is required because _FORTIFY_SOURCE only works when
+   optimization is enabled.  If _FORTIFY_SOURCE is already defined,
+   then we don't do anything.  Also, on MinGW, fortify requires
+   linking to -lssp, and to avoid the hassle of checking for
+   that and linking to it statically, we just don't define
+   _FORTIFY_SOURCE there.  */
+
+#if (!defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 \
+     && !defined(__MINGW32__))
+#define _FORTIFY_SOURCE 2
+#endif
+
+/* We don't support Windows versions before XP, so we define
+   _WIN32_WINNT correspondingly to ensure the Windows API headers
+   expose the required symbols.  */
+#if defined (__MINGW32__) || defined (__CYGWIN__)
+# ifdef _WIN32_WINNT
+#  if _WIN32_WINNT < 0x0501
+#   undef _WIN32_WINNT
+#   define _WIN32_WINNT 0x0501
+#  endif
+# else
+#  define _WIN32_WINNT 0x0501
+# endif
+#endif	/* __MINGW32__ || __CYGWIN__ */
+
+#include <stdarg.h>
+#include <stdio.h>
+
+/* Include both cstdlib and stdlib.h to ensure we have standard functions
+   defined both in the std:: namespace and in the global namespace.  */
+#include <cstdlib>
+#include <stdlib.h>
+
+#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+#ifdef HAVE_STRINGS_H
+#include <strings.h>	/* for strcasecmp and strncasecmp */
+#endif
+#include <errno.h>
+#if HAVE_ALLOCA_H
+#include <alloca.h>
+#endif
+
+#include "ansidecl.h"
+/* This is defined by ansidecl.h, but we prefer gnulib's version.  On
+   MinGW, gnulib might enable __USE_MINGW_ANSI_STDIO, which may or not
+   require use of attribute gnu_printf instead of printf.  gnulib
+   checks that at configure time.  Since _GL_ATTRIBUTE_FORMAT_PRINTF
+   is compatible with ATTRIBUTE_PRINTF, simply use it.  */
+#undef ATTRIBUTE_PRINTF
+#define ATTRIBUTE_PRINTF _GL_ATTRIBUTE_FORMAT_PRINTF
+
+#if GCC_VERSION >= 3004
+#define ATTRIBUTE_UNUSED_RESULT __attribute__ ((__warn_unused_result__))
+#else
+#define ATTRIBUTE_UNUSED_RESULT
+#endif
+
+#include "libiberty.h"
+#include "pathmax.h"
+#include "gdb/signals.h"
+#include "gdb_locale.h"
+#include "ptid.h"
+#include "common-types.h"
+#include "common-utils.h"
+#include "gdb_assert.h"
+#include "errors.h"
+#include "print-utils.h"
+#include "common-debug.h"
+#include "cleanups.h"
+#include "common-exceptions.h"
+#include "gdbsupport/poison.h"
+
+#define EXTERN_C extern "C"
+#define EXTERN_C_PUSH extern "C" {
+#define EXTERN_C_POP }
+
+/* Pull in gdb::unique_xmalloc_ptr.  */
+#include "gdbsupport/gdb_unique_ptr.h"
+
+/* String containing the current directory (what getwd would return).  */
+extern char *current_directory;
+
+/* sbrk on macOS is not useful for our purposes, since sbrk(0) always
+   returns the same value.  brk/sbrk on macOS is just an emulation
+   that always returns a pointer to a 4MB section reserved for
+   that.  */
+
+#if defined (HAVE_SBRK) && !__APPLE__
+#define HAVE_USEFUL_SBRK 1
+#endif
+
+#endif /* COMMON_COMMON_DEFS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-exceptions.cc ./gdbsupport/common-exceptions.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-exceptions.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-exceptions.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,235 @@
+/* Exception (throw catch) mechanism, for GDB, the GNU debugger.
+
+   Copyright (C) 1986-2021 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"
+#include "common-exceptions.h"
+#include <forward_list>
+
+/* Possible catcher states.  */
+enum catcher_state {
+  /* Initial state, a new catcher has just been created.  */
+  CATCHER_CREATED,
+  /* The catch code is running.  */
+  CATCHER_RUNNING,
+  CATCHER_RUNNING_1,
+  /* The catch code threw an exception.  */
+  CATCHER_ABORTING
+};
+
+/* Possible catcher actions.  */
+enum catcher_action {
+  CATCH_ITER,
+  CATCH_ITER_1,
+  CATCH_THROWING
+};
+
+struct catcher
+{
+  enum catcher_state state = CATCHER_CREATED;
+  /* Jump buffer pointing back at the exception handler.  */
+  jmp_buf buf;
+  /* Status buffer belonging to the exception handler.  */
+  struct gdb_exception exception;
+};
+
+/* Where to go for throw_exception().  */
+static std::forward_list<struct catcher> catchers;
+
+jmp_buf *
+exceptions_state_mc_init ()
+{
+  catchers.emplace_front ();
+  return &catchers.front ().buf;
+}
+
+/* Catcher state machine.  Returns non-zero if the m/c should be run
+   again, zero if it should abort.  */
+
+static int
+exceptions_state_mc (enum catcher_action action)
+{
+  switch (catchers.front ().state)
+    {
+    case CATCHER_CREATED:
+      switch (action)
+	{
+	case CATCH_ITER:
+	  /* Allow the code to run the catcher.  */
+	  catchers.front ().state = CATCHER_RUNNING;
+	  return 1;
+	default:
+	  internal_error (__FILE__, __LINE__, _("bad state"));
+	}
+    case CATCHER_RUNNING:
+      switch (action)
+	{
+	case CATCH_ITER:
+	  /* No error/quit has occured.  */
+	  return 0;
+	case CATCH_ITER_1:
+	  catchers.front ().state = CATCHER_RUNNING_1;
+	  return 1;
+	case CATCH_THROWING:
+	  catchers.front ().state = CATCHER_ABORTING;
+	  /* See also throw_exception.  */
+	  return 1;
+	default:
+	  internal_error (__FILE__, __LINE__, _("bad switch"));
+	}
+    case CATCHER_RUNNING_1:
+      switch (action)
+	{
+	case CATCH_ITER:
+	  /* The did a "break" from the inner while loop.  */
+	  return 0;
+	case CATCH_ITER_1:
+	  catchers.front ().state = CATCHER_RUNNING;
+	  return 0;
+	case CATCH_THROWING:
+	  catchers.front ().state = CATCHER_ABORTING;
+	  /* See also throw_exception.  */
+	  return 1;
+	default:
+	  internal_error (__FILE__, __LINE__, _("bad switch"));
+	}
+    case CATCHER_ABORTING:
+      switch (action)
+	{
+	case CATCH_ITER:
+	  {
+	    /* Exit normally if this catcher can handle this
+	       exception.  The caller analyses the func return
+	       values.  */
+	    return 0;
+	  }
+	default:
+	  internal_error (__FILE__, __LINE__, _("bad state"));
+	}
+    default:
+      internal_error (__FILE__, __LINE__, _("bad switch"));
+    }
+}
+
+int
+exceptions_state_mc_catch (struct gdb_exception *exception,
+			   int mask)
+{
+  *exception = std::move (catchers.front ().exception);
+  catchers.pop_front ();
+
+  if (exception->reason < 0)
+    {
+      if (mask & RETURN_MASK (exception->reason))
+	{
+	  /* Exit normally and let the caller handle the
+	     exception.  */
+	  return 1;
+	}
+
+      /* The caller didn't request that the event be caught, relay the
+	 event to the next exception_catch/CATCH_SJLJ.  */
+      throw_exception_sjlj (*exception);
+    }
+
+  /* No exception was thrown.  */
+  return 0;
+}
+
+int
+exceptions_state_mc_action_iter (void)
+{
+  return exceptions_state_mc (CATCH_ITER);
+}
+
+int
+exceptions_state_mc_action_iter_1 (void)
+{
+  return exceptions_state_mc (CATCH_ITER_1);
+}
+
+/* Return EXCEPTION to the nearest containing CATCH_SJLJ block.  */
+
+void
+throw_exception_sjlj (const struct gdb_exception &exception)
+{
+  /* Jump to the nearest CATCH_SJLJ block, communicating REASON to
+     that call via setjmp's return value.  Note that REASON can't be
+     zero, by definition in common-exceptions.h.  */
+  exceptions_state_mc (CATCH_THROWING);
+  enum return_reason reason = exception.reason;
+  catchers.front ().exception = exception;
+  longjmp (catchers.front ().buf, reason);
+}
+
+/* Implementation of throw_exception that uses C++ try/catch.  */
+
+void
+throw_exception (gdb_exception &&exception)
+{
+  if (exception.reason == RETURN_QUIT)
+    throw gdb_exception_quit (std::move (exception));
+  else if (exception.reason == RETURN_ERROR)
+    throw gdb_exception_error (std::move (exception));
+  else
+    gdb_assert_not_reached ("invalid return reason");
+}
+
+static void ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (3, 0)
+throw_it (enum return_reason reason, enum errors error, const char *fmt,
+	  va_list ap)
+{
+  if (reason == RETURN_QUIT)
+    throw gdb_exception_quit (fmt, ap);
+  else if (reason == RETURN_ERROR)
+    throw gdb_exception_error (error, fmt, ap);
+  else
+    gdb_assert_not_reached ("invalid return reason");
+}
+
+void
+throw_verror (enum errors error, const char *fmt, va_list ap)
+{
+  throw_it (RETURN_ERROR, error, fmt, ap);
+}
+
+void
+throw_vquit (const char *fmt, va_list ap)
+{
+  throw_it (RETURN_QUIT, GDB_NO_ERROR, fmt, ap);
+}
+
+void
+throw_error (enum errors error, const char *fmt, ...)
+{
+  va_list args;
+
+  va_start (args, fmt);
+  throw_verror (error, fmt, args);
+  va_end (args);
+}
+
+void
+throw_quit (const char *fmt, ...)
+{
+  va_list args;
+
+  va_start (args, fmt);
+  throw_vquit (fmt, args);
+  va_end (args);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-exceptions.h ./gdbsupport/common-exceptions.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-exceptions.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-exceptions.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,304 @@
+/* Exception (throw catch) mechanism, for GDB, the GNU debugger.
+
+   Copyright (C) 1986-2021 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 COMMON_COMMON_EXCEPTIONS_H
+#define COMMON_COMMON_EXCEPTIONS_H
+
+#include <setjmp.h>
+#include <new>
+#include <memory>
+#include <string>
+
+/* Reasons for calling throw_exceptions().  NOTE: all reason values
+   must be different from zero.  enum value 0 is reserved for internal
+   use as the return value from an initial setjmp().  */
+
+enum return_reason
+  {
+    /* User interrupt.  */
+    RETURN_QUIT = -2,
+    /* Any other error.  */
+    RETURN_ERROR
+  };
+
+#define RETURN_MASK(reason)	(1 << (int)(-reason))
+
+typedef enum
+{
+  RETURN_MASK_QUIT = RETURN_MASK (RETURN_QUIT),
+  RETURN_MASK_ERROR = RETURN_MASK (RETURN_ERROR),
+  RETURN_MASK_ALL = (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
+} return_mask;
+
+/* Describe all exceptions.  */
+
+enum errors {
+  GDB_NO_ERROR,
+
+  /* Any generic error, the corresponding text is in
+     exception.message.  */
+  GENERIC_ERROR,
+
+  /* Something requested was not found.  */
+  NOT_FOUND_ERROR,
+
+  /* Thread library lacks support necessary for finding thread local
+     storage.  */
+  TLS_NO_LIBRARY_SUPPORT_ERROR,
+
+  /* Load module not found while attempting to find thread local storage.  */
+  TLS_LOAD_MODULE_NOT_FOUND_ERROR,
+
+  /* Thread local storage has not been allocated yet.  */
+  TLS_NOT_ALLOCATED_YET_ERROR,
+
+  /* Something else went wrong while attempting to find thread local
+     storage.  The ``struct gdb_exception'' message field provides
+     more detail.  */
+  TLS_GENERIC_ERROR,
+
+  /* Problem parsing an XML document.  */
+  XML_PARSE_ERROR,
+
+  /* Error accessing memory.  */
+  MEMORY_ERROR,
+
+  /* Value not available.  E.g., a register was not collected in a
+     traceframe.  */
+  NOT_AVAILABLE_ERROR,
+
+  /* Value was optimized out.  Note: if the value was a register, this
+     means the register was not saved in the frame.  */
+  OPTIMIZED_OUT_ERROR,
+
+  /* DW_OP_entry_value resolving failed.  */
+  NO_ENTRY_VALUE_ERROR,
+
+  /* Target throwing an error has been closed.  Current command should be
+     aborted as the inferior state is no longer valid.  */
+  TARGET_CLOSE_ERROR,
+
+  /* An undefined command was executed.  */
+  UNDEFINED_COMMAND_ERROR,
+
+  /* Requested feature, method, mechanism, etc. is not supported.  */
+  NOT_SUPPORTED_ERROR,
+
+  /* The number of candidates generated during line completion has
+     reached the user's specified limit.  This isn't an error, this exception
+     is used to halt searching for more completions, but for consistency
+     "_ERROR" is appended to the name.  */
+  MAX_COMPLETIONS_REACHED_ERROR,
+
+  /* Add more errors here.  */
+  NR_ERRORS
+};
+
+struct gdb_exception
+{
+  gdb_exception ()
+    : reason ((enum return_reason) 0),
+      error (GDB_NO_ERROR)
+  {
+  }
+
+  gdb_exception (enum return_reason r, enum errors e)
+    : reason (r),
+      error (e)
+  {
+  }
+
+  gdb_exception (enum return_reason r, enum errors e,
+		 const char *fmt, va_list ap)
+    ATTRIBUTE_PRINTF (4, 0)
+    : reason (r),
+      error (e),
+      message (std::make_shared<std::string> (string_vprintf (fmt, ap)))
+  {
+  }
+
+  /* The move constructor exists so that we can mark it "noexcept",
+     which is a good practice for any sort of exception object.  */
+  explicit gdb_exception (gdb_exception &&other) noexcept = default;
+
+  /* The copy constructor exists so that we can mark it "noexcept",
+     which is a good practice for any sort of exception object.  */
+  gdb_exception (const gdb_exception &other) noexcept
+    : reason (other.reason),
+      error (other.error),
+      message (other.message)
+  {
+  }
+
+  /* The assignment operator exists so that we can mark it "noexcept",
+     which is a good practice for any sort of exception object.  */
+  gdb_exception &operator= (const gdb_exception &other) noexcept
+  {
+    reason = other.reason;
+    error = other.error;
+    message = other.message;
+    return *this;
+  }
+
+  gdb_exception &operator= (gdb_exception &&other) noexcept = default;
+
+  /* Return the contents of the exception message, as a C string.  The
+     string remains owned by the exception object.  */
+  const char *what () const noexcept
+  {
+    return message->c_str ();
+  }
+
+  enum return_reason reason;
+  enum errors error;
+  std::shared_ptr<std::string> message;
+};
+
+/* Functions to drive the sjlj-based exceptions state machine.  Though
+   declared here by necessity, these functions should be considered
+   internal to the exceptions subsystem and not used other than via
+   the TRY/CATCH (or TRY_SJLJ/CATCH_SJLJ) macros defined below.  */
+
+extern jmp_buf *exceptions_state_mc_init (void);
+extern int exceptions_state_mc_action_iter (void);
+extern int exceptions_state_mc_action_iter_1 (void);
+extern int exceptions_state_mc_catch (struct gdb_exception *, int);
+
+/* Macro to wrap up standard try/catch behavior.
+
+   The double loop lets us correctly handle code "break"ing out of the
+   try catch block.  (It works as the "break" only exits the inner
+   "while" loop, the outer for loop detects this handling it
+   correctly.)  Of course "return" and "goto" are not so lucky.
+
+   For instance:
+
+   *INDENT-OFF*
+
+   TRY_SJLJ
+     {
+     }
+   CATCH_SJLJ (e, RETURN_MASK_ERROR)
+     {
+       switch (e.reason)
+         {
+           case RETURN_ERROR: ...
+         }
+     }
+   END_CATCH_SJLJ
+
+   The SJLJ variants are needed in some cases where gdb exceptions
+   need to cross third-party library code compiled without exceptions
+   support (e.g., readline).  */
+
+#define TRY_SJLJ \
+     { \
+       jmp_buf *buf = \
+	 exceptions_state_mc_init (); \
+       setjmp (*buf); \
+     } \
+     while (exceptions_state_mc_action_iter ()) \
+       while (exceptions_state_mc_action_iter_1 ())
+
+#define CATCH_SJLJ(EXCEPTION, MASK)				\
+  {							\
+    struct gdb_exception EXCEPTION;				\
+    if (exceptions_state_mc_catch (&(EXCEPTION), MASK))
+
+#define END_CATCH_SJLJ				\
+  }
+
+/* The exception types client code may catch.  They're just shims
+   around gdb_exception that add nothing but type info.  Which is used
+   is selected depending on the MASK argument passed to CATCH.  */
+
+struct gdb_exception_error : public gdb_exception
+{
+  gdb_exception_error (enum errors e, const char *fmt, va_list ap)
+    ATTRIBUTE_PRINTF (3, 0)
+    : gdb_exception (RETURN_ERROR, e, fmt, ap)
+  {
+  }
+
+  explicit gdb_exception_error (gdb_exception &&ex) noexcept
+    : gdb_exception (std::move (ex))
+  {
+    gdb_assert (ex.reason == RETURN_ERROR);
+  }
+};
+
+struct gdb_exception_quit : public gdb_exception
+{
+  gdb_exception_quit (const char *fmt, va_list ap)
+    ATTRIBUTE_PRINTF (2, 0)
+    : gdb_exception (RETURN_QUIT, GDB_NO_ERROR, fmt, ap)
+  {
+  }
+
+  explicit gdb_exception_quit (gdb_exception &&ex) noexcept
+    : gdb_exception (std::move (ex))
+  {
+    gdb_assert (ex.reason == RETURN_QUIT);
+  }
+};
+
+/* An exception type that inherits from both std::bad_alloc and a gdb
+   exception.  This is necessary because operator new can only throw
+   std::bad_alloc, and OTOH, we want exceptions thrown due to memory
+   allocation error to be caught by all the CATCH/RETURN_MASK_ALL
+   spread around the codebase.  */
+
+struct gdb_quit_bad_alloc
+  : public gdb_exception_quit,
+    public std::bad_alloc
+{
+  explicit gdb_quit_bad_alloc (gdb_exception &&ex) noexcept
+    : gdb_exception_quit (std::move (ex)),
+      std::bad_alloc ()
+  {
+  }
+};
+
+/* *INDENT-ON* */
+
+/* Throw an exception (as described by "struct gdb_exception"),
+   landing in the inner most containing exception handler established
+   using TRY/CATCH.  */
+extern void throw_exception (gdb_exception &&exception)
+     ATTRIBUTE_NORETURN;
+
+/* Throw an exception by executing a LONG JUMP to the inner most
+   containing exception handler established using TRY_SJLJ.  Necessary
+   in some cases where we need to throw GDB exceptions across
+   third-party library code (e.g., readline).  */
+extern void throw_exception_sjlj (const struct gdb_exception &exception)
+     ATTRIBUTE_NORETURN;
+
+/* Convenience wrappers around throw_exception that throw GDB
+   errors.  */
+extern void throw_verror (enum errors, const char *fmt, va_list ap)
+     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 0);
+extern void throw_vquit (const char *fmt, va_list ap)
+     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 0);
+extern void throw_error (enum errors error, const char *fmt, ...)
+     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 3);
+extern void throw_quit (const char *fmt, ...)
+     ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (1, 2);
+
+#endif /* COMMON_COMMON_EXCEPTIONS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-gdbthread.h ./gdbsupport/common-gdbthread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-gdbthread.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-gdbthread.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,28 @@
+/* Common multi-process/thread control defs for GDB and gdbserver.
+   Copyright (C) 1987-2021 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 COMMON_COMMON_GDBTHREAD_H
+#define COMMON_COMMON_GDBTHREAD_H
+
+struct process_stratum_target;
+
+/* Switch from one thread to another.  */
+extern void switch_to_thread (process_stratum_target *proc_target,
+			      ptid_t ptid);
+
+#endif /* COMMON_COMMON_GDBTHREAD_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-inferior.cc ./gdbsupport/common-inferior.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-inferior.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-inferior.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,125 @@
+/* Functions to deal with the inferior being executed on GDB or
+   GDBserver.
+
+   Copyright (C) 2019-2021 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 "gdbsupport/common-defs.h"
+#include "gdbsupport/common-inferior.h"
+
+/* See common-inferior.h.  */
+
+bool startup_with_shell = true;
+
+/* See common-inferior.h.  */
+
+std::string
+construct_inferior_arguments (gdb::array_view<char * const> argv)
+{
+  std::string result;
+
+  if (startup_with_shell)
+    {
+#ifdef __MINGW32__
+      /* This holds all the characters considered special to the
+	 Windows shells.  */
+      static const char special[] = "\"!&*|[]{}<>?`~^=;, \t\n";
+      static const char quote = '"';
+#else
+      /* This holds all the characters considered special to the
+	 typical Unix shells.  We include `^' because the SunOS
+	 /bin/sh treats it as a synonym for `|'.  */
+      static const char special[] = "\"!#$&*()\\|[]{}<>?'`~^; \t\n";
+      static const char quote = '\'';
+#endif
+      for (int i = 0; i < argv.size (); ++i)
+	{
+	  if (i > 0)
+	    result += ' ';
+
+	  /* Need to handle empty arguments specially.  */
+	  if (argv[i][0] == '\0')
+	    {
+	      result += quote;
+	      result += quote;
+	    }
+	  else
+	    {
+#ifdef __MINGW32__
+	      bool quoted = false;
+
+	      if (strpbrk (argv[i], special))
+		{
+		  quoted = true;
+		  result += quote;
+		}
+#endif
+	      for (char *cp = argv[i]; *cp; ++cp)
+		{
+		  if (*cp == '\n')
+		    {
+		      /* A newline cannot be quoted with a backslash (it
+			 just disappears), only by putting it inside
+			 quotes.  */
+		      result += quote;
+		      result += '\n';
+		      result += quote;
+		    }
+		  else
+		    {
+#ifdef __MINGW32__
+		      if (*cp == quote)
+#else
+		      if (strchr (special, *cp) != NULL)
+#endif
+			result += '\\';
+		      result += *cp;
+		    }
+		}
+#ifdef __MINGW32__
+	      if (quoted)
+		result += quote;
+#endif
+	    }
+	}
+    }
+  else
+    {
+      /* In this case we can't handle arguments that contain spaces,
+	 tabs, or newlines -- see breakup_args().  */
+      for (char *arg : argv)
+	{
+	  char *cp = strchr (arg, ' ');
+	  if (cp == NULL)
+	    cp = strchr (arg, '\t');
+	  if (cp == NULL)
+	    cp = strchr (arg, '\n');
+	  if (cp != NULL)
+	    error (_("can't handle command-line "
+		     "argument containing whitespace"));
+	}
+
+      for (int i = 0; i < argv.size (); ++i)
+	{
+	  if (i > 0)
+	    result += " ";
+	  result += argv[i];
+	}
+    }
+
+  return result;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-inferior.h ./gdbsupport/common-inferior.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-inferior.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-inferior.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,68 @@
+/* Functions to deal with the inferior being executed on GDB or
+   GDBserver.
+
+   Copyright (C) 1986-2021 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 COMMON_COMMON_INFERIOR_H
+#define COMMON_COMMON_INFERIOR_H
+
+#include "gdbsupport/array-view.h"
+
+/* Return the exec wrapper to be used when starting the inferior, or NULL
+   otherwise.  */
+extern const char *get_exec_wrapper ();
+
+/* Return the name of the executable file as a string.
+   ERR nonzero means get error if there is none specified;
+   otherwise return 0 in that case.  */
+extern const char *get_exec_file (int err);
+
+/* Return the inferior's current working directory.  If nothing has
+   been set, then return NULL.  */
+extern const char *get_inferior_cwd ();
+
+/* Set the inferior current working directory.  If CWD is NULL, unset
+   the directory.  */
+extern void set_inferior_cwd (const char *cwd);
+
+/* Whether to start up the debuggee under a shell.
+
+   If startup-with-shell is set, GDB's "run" will attempt to start up
+   the debuggee under a shell.  This also happens when using GDBserver
+   under extended remote mode.
+
+   This is in order for argument-expansion to occur.  E.g.,
+
+   (gdb) run *
+
+   The "*" gets expanded by the shell into a list of files.
+
+   While this is a nice feature, it may be handy to bypass the shell
+   in some cases.  To disable this feature, do "set startup-with-shell
+   false".
+
+   The catch-exec traps expected during start-up will be one more if
+   the target is started up with a shell.  */
+extern bool startup_with_shell;
+
+/* Compute command-line string given argument vector. This does the
+   same shell processing as fork_inferior.  */
+extern std::string
+construct_inferior_arguments (gdb::array_view<char * const>);
+
+#endif /* COMMON_COMMON_INFERIOR_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common.m4 ./gdbsupport/common.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common.m4	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,187 @@
+dnl Autoconf configure snippets for common.
+dnl Copyright (C) 1995-2021 Free Software Foundation, Inc.
+dnl
+dnl This file is part of GDB.
+dnl 
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+dnl Invoke configury needed by the files in 'common'.
+AC_DEFUN([GDB_AC_COMMON], [
+  # Set the 'development' global.
+  . $srcdir/../bfd/development.sh
+
+  AC_HEADER_STDC
+  AC_FUNC_ALLOCA
+
+  WIN32APILIBS=
+  case ${host} in
+    *mingw32*)
+      AC_DEFINE(USE_WIN32API, 1,
+		[Define if we should use the Windows API, instead of the
+		 POSIX API.  On Windows, we use the Windows API when
+		 building for MinGW, but the POSIX API when building
+		 for Cygwin.])
+      WIN32APILIBS="-lws2_32"
+      ;;
+  esac
+
+  dnl Note that this requires codeset.m4, which is included
+  dnl by the users of common.m4.
+  AM_LANGINFO_CODESET
+
+  AC_CHECK_HEADERS(linux/perf_event.h locale.h memory.h signal.h dnl
+		   sys/resource.h sys/socket.h dnl
+		   sys/un.h sys/wait.h dnl
+		   thread_db.h wait.h dnl
+		   termios.h dnl
+		   dlfcn.h dnl
+		   linux/elf.h proc_service.h dnl
+		   poll.h sys/poll.h sys/select.h)
+
+  AC_FUNC_MMAP
+  AC_FUNC_VFORK
+  AC_CHECK_FUNCS([fdwalk getrlimit pipe pipe2 poll socketpair sigaction \
+		  ptrace64 sbrk setns sigaltstack sigprocmask \
+		  setpgid setpgrp getrusage getauxval])
+
+  dnl Check if we can disable the virtual address space randomization.
+  dnl The functionality of setarch -R.
+  AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
+  define([PERSONALITY_TEST], [AC_LANG_PROGRAM([#include <sys/personality.h>], [
+  #      if !HAVE_DECL_ADDR_NO_RANDOMIZE
+  #       define ADDR_NO_RANDOMIZE 0x0040000
+  #      endif
+	 /* Test the flag could be set and stays set.  */
+	 personality (personality (0xffffffff) | ADDR_NO_RANDOMIZE);
+	 if (!(personality (personality (0xffffffff)) & ADDR_NO_RANDOMIZE))
+	     return 1])])
+  AC_RUN_IFELSE([PERSONALITY_TEST],
+		[have_personality=true],
+		[have_personality=false],
+		[AC_LINK_IFELSE([PERSONALITY_TEST],
+				[have_personality=true],
+				[have_personality=false])])
+  if $have_personality
+  then
+      AC_DEFINE([HAVE_PERSONALITY], 1,
+		[Define if you support the personality syscall.])
+  fi
+
+  AC_CHECK_DECLS([strstr])
+
+  # ----------------------- #
+  # Checks for structures.  #
+  # ----------------------- #
+
+  AC_CHECK_MEMBERS([struct stat.st_blocks, struct stat.st_blksize])
+
+  AC_SEARCH_LIBS(kinfo_getfile, util util-freebsd,
+    [AC_DEFINE(HAVE_KINFO_GETFILE, 1,
+	      [Define to 1 if your system has the kinfo_getfile function. ])])
+
+  # 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,
+  [AC_TRY_COMPILE([
+  #include <setjmp.h>
+  ], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
+  gdb_cv_func_sigsetjmp=yes, gdb_cv_func_sigsetjmp=no)])
+  if test "$gdb_cv_func_sigsetjmp" = "yes"; then
+    AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
+  fi
+
+  AC_ARG_WITH(intel_pt,
+    AS_HELP_STRING([--with-intel-pt], [include Intel Processor Trace support (auto/yes/no)]),
+    [], [with_intel_pt=auto])
+  AC_MSG_CHECKING([whether to use intel pt])
+  AC_MSG_RESULT([$with_intel_pt])
+
+  if test "${with_intel_pt}" = no; then
+    AC_MSG_WARN([Intel Processor Trace support disabled; some features may be unavailable.])
+    HAVE_LIBIPT=no
+  else
+    AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
+  #include <linux/perf_event.h>
+  #ifndef PERF_ATTR_SIZE_VER5
+  # error
+  #endif
+    ]])], [perf_event=yes], [perf_event=no])
+    if test "$perf_event" != yes; then
+      if test "$with_intel_pt" = yes; then
+	AC_MSG_ERROR([linux/perf_event.h missing or too old])
+      else
+	AC_MSG_WARN([linux/perf_event.h missing or too old; some features may be unavailable.])
+      fi
+    fi
+
+    AC_LIB_HAVE_LINKFLAGS([ipt], [], [#include "intel-pt.h"], [pt_insn_alloc_decoder (0);])
+    if test "$HAVE_LIBIPT" != yes; then
+      if test "$with_intel_pt" = yes; then
+	AC_MSG_ERROR([libipt is missing or unusable])
+      else
+	AC_MSG_WARN([libipt is missing or unusable; some features may be unavailable.])
+      fi
+    else
+      save_LIBS=$LIBS
+      LIBS="$LIBS $LIBIPT"
+      AC_CHECK_FUNCS(pt_insn_event)
+      AC_CHECK_MEMBERS([struct pt_insn.enabled, struct pt_insn.resynced], [], [],
+		       [#include <intel-pt.h>])
+      LIBS=$save_LIBS
+    fi
+  fi
+
+  BFD_SYS_PROCFS_H
+  if test "$ac_cv_header_sys_procfs_h" = yes; then
+    BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
+    BFD_HAVE_SYS_PROCFS_TYPE(fpregset_t)
+    BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
+    BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
+    BFD_HAVE_SYS_PROCFS_TYPE(prgregset32_t)
+    BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
+    BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
+    BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
+  fi
+])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-regcache.cc ./gdbsupport/common-regcache.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-regcache.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-regcache.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,36 @@
+/* Cache and manage the values of registers for GDB, the GNU debugger.
+
+   Copyright (C) 2015-2021 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"
+#include "common-regcache.h"
+
+/* Return the register's value or throw if it's not available.  */
+
+ULONGEST
+regcache_raw_get_unsigned (struct regcache *regcache, int regnum)
+{
+  ULONGEST value;
+  enum register_status status;
+
+  status = regcache_raw_read_unsigned (regcache, regnum, &value);
+  if (status == REG_UNAVAILABLE)
+    throw_error (NOT_AVAILABLE_ERROR,
+		 _("Register %d is not available"), regnum);
+  return value;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-regcache.h ./gdbsupport/common-regcache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-regcache.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-regcache.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,90 @@
+/* Cache and manage the values of registers
+
+   Copyright (C) 2014-2021 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 COMMON_COMMON_REGCACHE_H
+#define COMMON_COMMON_REGCACHE_H
+
+/* This header is a stopgap until we have an independent regcache.  */
+
+enum register_status : signed char
+  {
+    /* The register value is not in the cache, and we don't know yet
+       whether it's available in the target (or traceframe).  */
+    REG_UNKNOWN = 0,
+
+    /* The register value is valid and cached.  */
+    REG_VALID = 1,
+
+    /* The register value is unavailable.  E.g., we're inspecting a
+       traceframe, and this register wasn't collected.  Note that this
+       is different a different "unavailable" from saying the register
+       does not exist in the target's architecture --- in that case,
+       the target should have given us a target description that does
+       not include the register in the first place.  */
+    REG_UNAVAILABLE = -1
+  };
+
+/* Return a pointer to the register cache associated with the
+   thread specified by PTID.  This function must be provided by
+   the client.  */
+
+extern struct regcache *get_thread_regcache_for_ptid (ptid_t ptid);
+
+/* Return the size of register numbered N in REGCACHE.  This function
+   must be provided by the client.  */
+
+extern int regcache_register_size (const struct regcache *regcache, int n);
+
+/* Read the PC register.  This function must be provided by the
+   client.  */
+
+extern CORE_ADDR regcache_read_pc (struct regcache *regcache);
+
+/* Read the PC register.  If PC cannot be read, return 0.
+   This is a wrapper around 'regcache_read_pc'.  */
+
+extern CORE_ADDR regcache_read_pc_protected (regcache *regcache);
+
+/* Read a raw register into a unsigned integer.  */
+extern enum register_status regcache_raw_read_unsigned
+  (struct regcache *regcache, int regnum, ULONGEST *val);
+
+ULONGEST regcache_raw_get_unsigned (struct regcache *regcache, int regnum);
+
+struct reg_buffer_common
+{
+  virtual ~reg_buffer_common () = default;
+
+  /* Get the availability status of the value of register REGNUM in this
+     buffer.  */
+  virtual register_status get_register_status (int regnum) const = 0;
+
+  /* Supply register REGNUM, whose contents are stored in BUF, to REGCACHE.  */
+  virtual void raw_supply (int regnum, const void *buf) = 0;
+
+  /* Collect register REGNUM from REGCACHE and store its contents in BUF.  */
+  virtual void raw_collect (int regnum, void *buf) const = 0;
+
+  /* Compare the contents of the register stored in the regcache (ignoring the
+     first OFFSET bytes) to the contents of BUF (without any offset).  Returns
+     true if the same.  */
+  virtual bool raw_compare (int regnum, const void *buf, int offset) const = 0;
+};
+
+#endif /* COMMON_COMMON_REGCACHE_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-types.h ./gdbsupport/common-types.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-types.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-types.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,44 @@
+/* Declarations for common types.
+
+   Copyright (C) 1986-2021 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 COMMON_COMMON_TYPES_H
+#define COMMON_COMMON_TYPES_H
+
+#include <inttypes.h>
+
+/* * A byte from the program being debugged.  */
+typedef unsigned char gdb_byte;
+
+/* * An address in the program being debugged.  Host byte order.  */
+typedef uint64_t CORE_ADDR;
+
+/* LONGEST must be at least as big as CORE_ADDR.  */
+
+typedef int64_t LONGEST;
+typedef uint64_t ULONGEST;
+
+/* * The largest CORE_ADDR value.  */
+#define CORE_ADDR_MAX (~(CORE_ADDR) 0)
+
+/* * The largest ULONGEST value.  */
+#define ULONGEST_MAX (~(ULONGEST) 0)
+
+enum tribool { TRIBOOL_UNKNOWN = -1, TRIBOOL_FALSE = 0, TRIBOOL_TRUE = 1 };
+
+#endif /* COMMON_COMMON_TYPES_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-utils.cc ./gdbsupport/common-utils.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-utils.cc	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-utils.cc	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,394 @@
+/* Shared general utility routines for GDB, the GNU debugger.
+
+   Copyright (C) 1986-2021 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"
+#include "common-utils.h"
+#include "host-defs.h"
+#include <ctype.h>
+
+void *
+xzalloc (size_t size)
+{
+  return xcalloc (1, size);
+}
+
+/* Like asprintf/vasprintf but get an internal_error if the call
+   fails. */
+
+char *
+xstrprintf (const char *format, ...)
+{
+  char *ret;
+  va_list args;
+
+  va_start (args, format);
+  ret = xstrvprintf (format, args);
+  va_end (args);
+  return ret;
+}
+
+char *
+xstrvprintf (const char *format, va_list ap)
+{
+  char *ret = NULL;
+  int status = vasprintf (&ret, format, ap);
+
+  /* NULL is returned when there was a memory allocation problem, or
+     any other error (for instance, a bad format string).  A negative
+     status (the printed length) with a non-NULL buffer should never
+     happen, but just to be sure.  */
+  if (ret == NULL || status < 0)
+    internal_error (__FILE__, __LINE__, _("vasprintf call failed"));
+  return ret;
+}
+
+int
+xsnprintf (char *str, size_t size, const char *format, ...)
+{
+  va_list args;
+  int ret;
+
+  va_start (args, format);
+  ret = vsnprintf (str, size, format, args);
+  gdb_assert (ret < size);
+  va_end (args);
+
+  return ret;
+}
+
+/* See documentation in common-utils.h.  */
+
+std::string
+string_printf (const char* fmt, ...)
+{
+  va_list vp;
+  int size;
+
+  va_start (vp, fmt);
+  size = vsnprintf (NULL, 0, fmt, vp);
+  va_end (vp);
+
+  std::string str (size, '\0');
+
+  /* C++11 and later guarantee std::string uses contiguous memory and
+     always includes the terminating '\0'.  */
+  va_start (vp, fmt);
+  vsprintf (&str[0], fmt, vp);	/* ARI: vsprintf */
+  va_end (vp);
+
+  return str;
+}
+
+/* See documentation in common-utils.h.  */
+
+std::string
+string_vprintf (const char* fmt, va_list args)
+{
+  va_list vp;
+  size_t size;
+
+  va_copy (vp, args);
+  size = vsnprintf (NULL, 0, fmt, vp);
+  va_end (vp);
+
+  std::string str (size, '\0');
+
+  /* C++11 and later guarantee std::string uses contiguous memory and
+     always includes the terminating '\0'.  */
+  vsprintf (&str[0], fmt, args); /* ARI: vsprintf */
+
+  return str;
+}
+
+
+/* See documentation in common-utils.h.  */
+
+void
+string_appendf (std::string &str, const char *fmt, ...)
+{
+  va_list vp;
+
+  va_start (vp, fmt);
+  string_vappendf (str, fmt, vp);
+  va_end (vp);
+}
+
+
+/* See documentation in common-utils.h.  */
+
+void
+string_vappendf (std::string &str, const char *fmt, va_list args)
+{
+  va_list vp;
+  int grow_size;
+
+  va_copy (vp, args);
+  grow_size = vsnprintf (NULL, 0, fmt, vp);
+  va_end (vp);
+
+  size_t curr_size = str.size ();
+  str.resize (curr_size + grow_size);
+
+  /* C++11 and later guarantee std::string uses contiguous memory and
+     always includes the terminating '\0'.  */
+  vsprintf (&str[curr_size], fmt, args); /* ARI: vsprintf */
+}
+
+char *
+savestring (const char *ptr, size_t len)
+{
+  char *p = (char *) xmalloc (len + 1);
+
+  memcpy (p, ptr, len);
+  p[len] = 0;
+  return p;
+}
+
+/* See documentation in common-utils.h.  */
+
+std::string
+extract_string_maybe_quoted (const char **arg)
+{
+  bool squote = false;
+  bool dquote = false;
+  bool bsquote = false;
+  std::string result;
+  const char *p = *arg;
+
+  /* Find the start of the argument.  */
+  p = skip_spaces (p);
+
+  /* Parse p similarly to gdb_argv buildargv function.  */
+  while (*p != '\0')
+    {
+      if (isspace (*p) && !squote && !dquote && !bsquote)
+	break;
+      else
+	{
+	  if (bsquote)
+	    {
+	      bsquote = false;
+	      result += *p;
+	    }
+	  else if (*p == '\\')
+	    bsquote = true;
+	  else if (squote)
+	    {
+	      if (*p == '\'')
+		squote = false;
+	      else
+		result += *p;
+	    }
+	  else if (dquote)
+	    {
+	      if (*p == '"')
+		dquote = false;
+	      else
+		result += *p;
+	    }
+	  else
+	    {
+	      if (*p == '\'')
+		squote = true;
+	      else if (*p == '"')
+		dquote = true;
+	      else
+		result += *p;
+	    }
+	  p++;
+	}
+    }
+
+  *arg = p;
+  return result;
+}
+
+/* The bit offset of the highest byte in a ULONGEST, for overflow
+   checking.  */
+
+#define HIGH_BYTE_POSN ((sizeof (ULONGEST) - 1) * HOST_CHAR_BIT)
+
+/* True (non-zero) iff DIGIT is a valid digit in radix BASE,
+   where 2 <= BASE <= 36.  */
+
+static int
+is_digit_in_base (unsigned char digit, int base)
+{
+  if (!isalnum (digit))
+    return 0;
+  if (base <= 10)
+    return (isdigit (digit) && digit < base + '0');
+  else
+    return (isdigit (digit) || tolower (digit) < base - 10 + 'a');
+}
+
+static int
+digit_to_int (unsigned char c)
+{
+  if (isdigit (c))
+    return c - '0';
+  else
+    return tolower (c) - 'a' + 10;
+}
+
+/* As for strtoul, but for ULONGEST results.  */
+
+ULONGEST
+strtoulst (const char *num, const char **trailer, int base)
+{
+  unsigned int high_part;
+  ULONGEST result;
+  int minus = 0;
+  int i = 0;
+
+  /* Skip leading whitespace.  */
+  while (isspace (num[i]))
+    i++;
+
+  /* Handle prefixes.  */
+  if (num[i] == '+')
+    i++;
+  else if (num[i] == '-')
+    {
+      minus = 1;
+      i++;
+    }
+
+  if (base == 0 || base == 16)
+    {
+      if (num[i] == '0' && (num[i + 1] == 'x' || num[i + 1] == 'X'))
+	{
+	  i += 2;
+	  if (base == 0)
+	    base = 16;
+	}
+    }
+
+  if (base == 0 && num[i] == '0')
+    base = 8;
+
+  if (base == 0)
+    base = 10;
+
+  if (base < 2 || base > 36)
+    {
+      errno = EINVAL;
+      return 0;
+    }
+
+  result = high_part = 0;
+  for (; is_digit_in_base (num[i], base); i += 1)
+    {
+      result = result * base + digit_to_int (num[i]);
+      high_part = high_part * base + (unsigned int) (result >> HIGH_BYTE_POSN);
+      result &= ((ULONGEST) 1 << HIGH_BYTE_POSN) - 1;
+      if (high_part > 0xff)
+	{
+	  errno = ERANGE;
+	  result = ~ (ULONGEST) 0;
+	  high_part = 0;
+	  minus = 0;
+	  break;
+	}
+    }
+
+  if (trailer != NULL)
+    *trailer = &num[i];
+
+  result = result + ((ULONGEST) high_part << HIGH_BYTE_POSN);
+  if (minus)
+    return -result;
+  else
+    return result;
+}
+
+/* See documentation in common-utils.h.  */
+
+char *
+skip_spaces (char *chp)
+{
+  if (chp == NULL)
+    return NULL;
+  while (*chp && isspace (*chp))
+    chp++;
+  return chp;
+}
+
+/* A const-correct version of the above.  */
+
+const char *
+skip_spaces (const char *chp)
+{
+  if (chp == NULL)
+    return NULL;
+  while (*chp && isspace (*chp))
+    chp++;
+  return chp;
+}
+
+/* See documentation in common-utils.h.  */
+
+const char *
+skip_to_space (const char *chp)
+{
+  if (chp == NULL)
+    return NULL;
+  while (*chp && !isspace (*chp))
+    chp++;
+  return chp;
+}
+
+/* See documentation in common-utils.h.  */
+
+char *
+skip_to_space (char *chp)
+{
+  return (char *) skip_to_space ((const char *) chp);
+}
+
+/* See gdbsupport/common-utils.h.  */
+
+void
+free_vector_argv (std::vector<char *> &v)
+{
+  for (char *el : v)
+    xfree (el);
+
+  v.clear ();
+}
+
+/* See gdbsupport/common-utils.h.  */
+
+ULONGEST
+align_up (ULONGEST v, int n)
+{
+  /* Check that N is really a power of two.  */
+  gdb_assert (n && (n & (n-1)) == 0);
+  return (v + n - 1) & -n;
+}
+
+/* See gdbsupport/common-utils.h.  */
+
+ULONGEST
+align_down (ULONGEST v, int n)
+{
+  /* Check that N is really a power of two.  */
+  gdb_assert (n && (n & (n-1)) == 0);
+  return (v & -n);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-utils.h ./gdbsupport/common-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/common-utils.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/common-utils.h	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,198 @@
+/* Shared general utility routines for GDB, the GNU debugger.
+
+   Copyright (C) 1986-2021 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 COMMON_COMMON_UTILS_H
+#define COMMON_COMMON_UTILS_H
+
+#include <string>
+#include <vector>
+
+#include "poison.h"
+
+/* If possible, define FUNCTION_NAME, a macro containing the name of
+   the function being defined.  Since this macro may not always be
+   defined, all uses must be protected by appropriate macro definition
+   checks (Eg: "#ifdef FUNCTION_NAME").
+
+   Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
+   which contains the name of the function currently being defined.
+   This is broken in G++ before version 2.6.
+   C9x has a similar variable called __func__, but prefer the GCC one since
+   it demangles C++ function names.  */
+#if (GCC_VERSION >= 2004)
+#define FUNCTION_NAME		__PRETTY_FUNCTION__
+#else
+#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+#define FUNCTION_NAME		__func__  /* ARI: func */
+#endif
+#endif
+
+#include "gdb_string_view.h"
+
+/* xmalloc(), xrealloc() and xcalloc() have already been declared in
+   "libiberty.h". */
+
+/* Like xmalloc, but zero the memory.  */
+void *xzalloc (size_t);
+
+template <typename T>
+static void
+xfree (T *ptr)
+{
+  static_assert (IsFreeable<T>::value, "Trying to use xfree with a non-POD \
+data type.  Use operator delete instead.");
+
+  if (ptr != NULL)
+    free (ptr);		/* ARI: free */
+}
+
+
+/* Like asprintf and vasprintf, but return the string, throw an error
+   if no memory.  */
+char *xstrprintf (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
+char *xstrvprintf (const char *format, va_list ap)
+     ATTRIBUTE_PRINTF (1, 0);
+
+/* Like snprintf, but throw an error if the output buffer is too small.  */
+int xsnprintf (char *str, size_t size, const char *format, ...)
+     ATTRIBUTE_PRINTF (3, 4);
+
+/* Returns a std::string built from a printf-style format string.  */
+std::string string_printf (const char* fmt, ...)
+  ATTRIBUTE_PRINTF (1, 2);
+
+/* Like string_printf, but takes a va_list.  */
+std::string string_vprintf (const char* fmt, va_list args)
+  ATTRIBUTE_PRINTF (1, 0);
+
+/* Like string_printf, but appends to DEST instead of returning a new
+   std::string.  */
+void string_appendf (std::string &dest, const char* fmt, ...)
+  ATTRIBUTE_PRINTF (2, 3);
+
+/* Like string_appendf, but takes a va_list.  */
+void string_vappendf (std::string &dest, const char* fmt, va_list args)
+  ATTRIBUTE_PRINTF (2, 0);
+
+/* Make a copy of the string at PTR with LEN characters
+   (and add a null character at the end in the copy).
+   Uses malloc to get the space.  Returns the address of the copy.  */
+
+char *savestring (const char *ptr, size_t len);
+
+/* Extract the next word from ARG.  The next word is defined as either,
+   everything up to the next space, or, if the next word starts with either
+   a single or double quote, then everything up to the closing quote.  The
+   enclosing quotes are not returned in the result string.  The pointer in
+   ARG is updated to point to the first character after the end of the
+   word, or, for quoted words, the first character after the closing
+   quote.  */
+
+std::string extract_string_maybe_quoted (const char **arg);
+
+/* The strerror() function can return NULL for errno values that are
+   out of range.  Provide a "safe" version that always returns a
+   printable string.  This version is also thread-safe.  */
+
+extern const char *safe_strerror (int);
+
+/* Return true if the start of STRING matches PATTERN, false otherwise.  */
+
+static inline bool
+startswith (const char *string, const char *pattern)
+{
+  return strncmp (string, pattern, strlen (pattern)) == 0;
+}
+
+/* Version of startswith that takes string_view arguments.  See comment
+   above.  */
+
+static inline bool
+startswith (gdb::string_view string, gdb::string_view pattern)
+{
+  return (string.length () >= pattern.length ()
+	  && strncmp (string.data (), pattern.data (), pattern.length ()) == 0);
+}
+
+ULONGEST strtoulst (const char *num, const char **trailer, int base);
+
+/* Skip leading whitespace characters in INP, returning an updated
+   pointer.  If INP is NULL, return NULL.  */
+
+extern char *skip_spaces (char *inp);
+
+/* A const-correct version of the above.  */
+
+extern const char *skip_spaces (const char *inp);
+
+/* Skip leading non-whitespace characters in INP, returning an updated
+   pointer.  If INP is NULL, return NULL.  */
+
+extern char *skip_to_space (char *inp);
+
+/* A const-correct version of the above.  */
+
+extern const char *skip_to_space (const char *inp);
+
+/* Assumes that V is an argv for a program, and iterates through
+   freeing all the elements.  */
+extern void free_vector_argv (std::vector<char *> &v);
+
+/* Return true if VALUE is in [LOW, HIGH].  */
+
+template <typename T>
+static bool
+in_inclusive_range (T value, T low, T high)
+{
+  return value >= low && value <= high;
+}
+
+/* Ensure that V is aligned to an N byte boundary (B's assumed to be a
+   power of 2).  Round up/down when necessary.  Examples of correct
+   use include:
+
+    addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
+    write_memory (addr, value, len);
+    addr += len;
+
+   and:
+
+    sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
+    write_memory (sp, value, len);
+
+   Note that uses such as:
+
+    write_memory (addr, value, len);
+    addr += align_up (len, 8);
+
+   and:
+
+    sp -= align_up (len, 8);
+    write_memory (sp, value, len);
+
+   are typically not correct as they don't ensure that the address (SP
+   or ADDR) is correctly aligned (relying on previous alignment to
+   keep things right).  This is also why the methods are called
+   "align_..." instead of "round_..." as the latter reads better with
+   this incorrect coding style.  */
+
+extern ULONGEST align_up (ULONGEST v, int n);
+extern ULONGEST align_down (ULONGEST v, int n);
+
+#endif /* COMMON_COMMON_UTILS_H */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/config.in ./gdbsupport/config.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/config.in	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/config.in	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,425 @@
+/* config.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#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
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#undef ENABLE_NLS
+
+/* Define if self-testing features should be enabled */
+#undef GDB_SELF_TEST
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* define if the compiler supports basic C++11 syntax */
+#undef HAVE_CXX11
+
+/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_ADDR_NO_RANDOMIZE
+
+/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_ASPRINTF
+
+/* Define to 1 if you have the declaration of `basename(char *)', and to 0 if
+   you don't. */
+#undef HAVE_DECL_BASENAME
+
+/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
+#undef HAVE_DECL_FFS
+
+/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_SNPRINTF
+
+/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't.
+   */
+#undef HAVE_DECL_STRSTR
+
+/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't.
+   */
+#undef HAVE_DECL_STRTOL
+
+/* Define to 1 if you have the declaration of `strtoll', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRTOLL
+
+/* Define to 1 if you have the declaration of `strtoul', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRTOUL
+
+/* Define to 1 if you have the declaration of `strtoull', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRTOULL
+
+/* Define to 1 if you have the declaration of `strverscmp', and to 0 if you
+   don't. */
+#undef HAVE_DECL_STRVERSCMP
+
+/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_VASPRINTF
+
+/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
+   don't. */
+#undef HAVE_DECL_VSNPRINTF
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define if <sys/procfs.h> has elf_fpregset_t. */
+#undef HAVE_ELF_FPREGSET_T
+
+/* Define to 1 if you have the `fdwalk' function. */
+#undef HAVE_FDWALK
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define if <sys/procfs.h> has fpregset_t. */
+#undef HAVE_FPREGSET_T
+
+/* Define to 1 if you have the `getauxval' function. */
+#undef HAVE_GETAUXVAL
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `getrlimit' function. */
+#undef HAVE_GETRLIMIT
+
+/* Define to 1 if you have the `getrusage' function. */
+#undef HAVE_GETRUSAGE
+
+/* Define if <sys/procfs.h> has gregset_t. */
+#undef HAVE_GREGSET_T
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if your system has the kinfo_getfile function. */
+#undef HAVE_KINFO_GETFILE
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define if you have the ipt library. */
+#undef HAVE_LIBIPT
+
+/* Define to 1 if you have the <linux/elf.h> header file. */
+#undef HAVE_LINUX_ELF_H
+
+/* Define to 1 if you have the <linux/perf_event.h> header file. */
+#undef HAVE_LINUX_PERF_EVENT_H
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if the system has the type `long long'. */
+#undef HAVE_LONG_LONG
+
+/* Define if <sys/procfs.h> has lwpid_t. */
+#undef HAVE_LWPID_T
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define if you support the personality syscall. */
+#undef HAVE_PERSONALITY
+
+/* Define to 1 if you have the `pipe' function. */
+#undef HAVE_PIPE
+
+/* Define to 1 if you have the `pipe2' function. */
+#undef HAVE_PIPE2
+
+/* Define to 1 if you have the `poll' function. */
+#undef HAVE_POLL
+
+/* Define to 1 if you have the <poll.h> header file. */
+#undef HAVE_POLL_H
+
+/* Define if <sys/procfs.h> has prfpregset_t. */
+#undef HAVE_PRFPREGSET_T
+
+/* Define if <sys/procfs.h> has prgregset32_t. */
+#undef HAVE_PRGREGSET32_T
+
+/* Define if <sys/procfs.h> has prgregset_t. */
+#undef HAVE_PRGREGSET_T
+
+/* Define to 1 if you have the <proc_service.h> header file. */
+#undef HAVE_PROC_SERVICE_H
+
+/* 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
+
+/* Define to 1 if you have the <ptrace.h> header file. */
+#undef HAVE_PTRACE_H
+
+/* Define to 1 if you have the `pt_insn_event' function. */
+#undef HAVE_PT_INSN_EVENT
+
+/* Define to 1 if you have the `sbrk' function. */
+#undef HAVE_SBRK
+
+/* Define to 1 if you have the `setns' function. */
+#undef HAVE_SETNS
+
+/* Define to 1 if you have the `setpgid' function. */
+#undef HAVE_SETPGID
+
+/* Define to 1 if you have the `setpgrp' function. */
+#undef HAVE_SETPGRP
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if you have the `sigaltstack' function. */
+#undef HAVE_SIGALTSTACK
+
+/* Define to 1 if you have the <signal.h> header file. */
+#undef HAVE_SIGNAL_H
+
+/* Define to 1 if you have the `sigprocmask' function. */
+#undef HAVE_SIGPROCMASK
+
+/* Define if sigsetjmp is available. */
+#undef HAVE_SIGSETJMP
+
+/* Define to 1 if you have the `socketpair' function. */
+#undef HAVE_SOCKETPAIR
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if `enabled' is a member of `struct pt_insn'. */
+#undef HAVE_STRUCT_PT_INSN_ENABLED
+
+/* Define to 1 if `resynced' is a member of `struct pt_insn'. */
+#undef HAVE_STRUCT_PT_INSN_RESYNCED
+
+/* Define to 1 if `st_blksize' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLKSIZE
+
+/* Define to 1 if `st_blocks' is a member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLOCKS
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#undef HAVE_SYS_POLL_H
+
+/* Define to 1 if you have the <sys/procfs.h> header file. */
+#undef HAVE_SYS_PROCFS_H
+
+/* Define to 1 if you have the <sys/ptrace.h> header file. */
+#undef HAVE_SYS_PTRACE_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+#undef HAVE_SYS_UN_H
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define to 1 if you have the <thread_db.h> header file. */
+#undef HAVE_THREAD_DB_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if you have the <wait.h> header file. */
+#undef HAVE_WAIT_H
+
+/* Define to 1 if you have the <windows.h> header file. */
+#undef HAVE_WINDOWS_H
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if `vfork' works. */
+#undef HAVE_WORKING_VFORK
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* 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
+
+/* Define to the type of arg 3 for ptrace. */
+#undef PTRACE_TYPE_ARG3
+
+/* Define to the type of arg 4 for ptrace. */
+#undef PTRACE_TYPE_ARG4
+
+/* Define to the type of arg 5 for ptrace. */
+#undef PTRACE_TYPE_ARG5
+
+/* Define as the return type of ptrace. */
+#undef PTRACE_TYPE_RET
+
+/* The size of `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+	STACK_DIRECTION > 0 => grows toward higher addresses
+	STACK_DIRECTION < 0 => grows toward lower addresses
+	STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to the word size for the target. */
+#undef TARGET_WORD_SIZE
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Define if we should use the Windows API, instead of the POSIX API. On
+   Windows, we use the Windows API when building for MinGW, but the POSIX API
+   when building for Cygwin. */
+#undef USE_WIN32API
+
+/* Version number of package */
+#undef VERSION
+
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Use structured /proc on Solaris. */
+#undef _STRUCTURED_PROC
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define as `fork' if `vfork' does not work. */
+#undef vfork
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/configure ./gdbsupport/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200307/gdbsupport/configure	1970-01-01 00:00:00.000000000 +0000
+++ ./gdbsupport/configure	2021-05-21 01:57:25.000000000 +0000
@@ -0,0 +1,12546 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for gdbsupport 1.0.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='gdbsupport'
+PACKAGE_TARNAME='gdbsupport'
+PACKAGE_VERSION='1.0'
+PACKAGE_STRING='gdbsupport 1.0'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+ac_unique_file="common-defs.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_header_list=
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+WERROR_CFLAGS
+WARN_CFLAGS
+SELFTEST_FALSE
+SELFTEST_TRUE
+LTLIBIPT
+LIBIPT
+HAVE_LIBIPT
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
+SED
+ALLOCA
+CATOBJEXT
+GENCAT
+INSTOBJEXT
+DATADIRNAME
+CATALOGS
+POSUB
+GMSGFMT
+XGETTEXT
+INCINTL
+LIBINTL_DEP
+LIBINTL
+USE_NLS
+CXX_DIALECT
+HAVE_CXX11
+LARGEFILE_CPPFLAGS
+EGREP
+GREP
+CPP
+RANLIB
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXXFLAGS
+CXX
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_maintainer_mode
+enable_silent_rules
+enable_dependency_tracking
+enable_plugins
+enable_largefile
+with_intel_pt
+with_gnu_ld
+enable_rpath
+with_libipt_prefix
+with_libipt_type
+enable_unit_tests
+enable_werror
+enable_build_warnings
+enable_gdb_build_warnings
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures gdbsupport 1.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/gdbsupport]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of gdbsupport 1.0:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --enable-plugins        Enable support for plugins
+  --disable-largefile     omit support for large files
+  --disable-rpath         do not hardcode runtime library paths
+  --enable-unit-tests     Enable the inclusion of unit tests when compiling
+                          GDB
+  --enable-werror         treat compile warnings as errors
+  --enable-build-warnings enable build-time compiler warnings if gcc is used
+  --enable-gdb-build-warnings
+                          enable GDB specific build-time compiler warnings if
+                          gcc is used
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-intel-pt         include Intel Processor Trace support (auto/yes/no)
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-libipt-prefix[=DIR]  search for libipt in DIR/include and DIR/lib
+  --without-libipt-prefix     don't search for libipt in includedir and libdir
+  --with-libipt-type=TYPE     type of library to search for (auto/static/shared)
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+gdbsupport configure 1.0
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+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_compile") 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_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+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_compile") 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_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+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_cpp conftest.$ac_ext") 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; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $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
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $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
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  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>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { 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_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  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_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  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.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext 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_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_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_c_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_c_try_link
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  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
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext 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_c_check_type
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  as_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext 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_c_check_decl
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_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_c_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_c_check_func
+
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+	       { $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_c_check_member
+
+# 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
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by gdbsupport $as_me 1.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+as_fn_append ac_header_list " stdlib.h"
+as_fn_append ac_header_list " unistd.h"
+as_fn_append ac_header_list " sys/param.h"
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+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
+
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h:config.in"
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+ac_aux_dir=
+for ac_dir in .. "$srcdir"/..; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in .. \"$srcdir\"/.." "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+am__api_version='1.15'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; 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_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # 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_STRIP="${ac_tool_prefix}strip"
+    $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
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; 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_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # 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_ac_ct_STRIP="strip"
+    $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
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+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_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # 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